diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json new file mode 100644 index 000000000..0dbf15782 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":0,"numberOfSamples":1000,"samples":[-0.002403025022753476,-2.5083047211757836e-5,-1.721638967214743e-8,-0.002402558217007106,-2.5020003017226545e-5,-1.7146589882925253e-8,-0.002402152743739069,-2.4908815008776256e-5,-1.7018183343380784e-8,-0.0024018177616850914,-2.4779340864272868e-5,-1.686693112266686e-8,-0.0024015512294922256,-2.4661265859267777e-5,-1.672851429567895e-8,-0.0024013415089134365,-2.4580601237402673e-5,-1.6634308307010567e-8,-0.0024011692853140917,-2.4557354638250633e-5,-1.660856911234815e-8,-0.0024010094083213077,-2.460379520847823e-5,-1.666634004388421e-8,-0.002400832781870665,-2.472274606391698e-5,-1.681138635859172e-8,-0.0024006088674261195,-2.490565851910724e-5,-1.7033840158805374e-8,-0.0024003096414815053,-2.513083477542098e-5,-1.7307985763326293e-8,-0.002399915678730765,-2.5363106308028472e-5,-1.759177707540246e-8,-0.0023994239684226163,-2.5557205638682287e-5,-1.7830822072448312e-8,-0.0023988549431304905,-2.566700881355288e-5,-1.7969488578482e-8,-0.0023982538707374547,-2.5660422954022525e-5,-1.7968844164137065e-8,-0.002397681821948537,-2.553480284678542e-5,-1.7825226886235993e-8,-0.0023971964165357008,-2.53237668313255e-5,-1.7578462540315414e-8,-0.002396830441918346,-2.50885777844268e-5,-1.7301586465142487e-8,-0.0023965800106651434,-2.4896546614298096e-5,-1.7075078798371497e-8,-0.0023964084361551537,-2.4797687943490375e-5,-1.695902560230991e-8,-0.002396262002993096,-2.481096708533641e-5,-1.6976666372280337e-8,-0.0023960882393536166,-2.4923817586803518e-5,-1.7113670694608337e-8,-0.002395849219877066,-2.5101106375207836e-5,-1.732863106912266e-8,-0.002395527525579831,-2.5297461255455714e-5,-1.756761197379987e-8,-0.0023951260596151974,-2.546854998291281e-5,-1.7777564319951067e-8,-0.0023946640036132836,-2.5579325396643004e-5,-1.7916241394922998e-8,-0.0023941708783994835,-2.5608875350224024e-5,-1.7958135357141878e-8,-0.0023936800199459637,-2.5552141704174967e-5,-1.7896681829365477e-8,-0.00239322243029576,-2.5418865388500117e-5,-1.774311016303839e-8,-0.0023928218677541743,-2.5230314934074022e-5,-1.7522587181791123e-8,-0.0023924917832175113,-2.5014690159013176e-5,-1.7268730448048223e-8,-0.0023922342643846748,-2.480218762163173e-5,-1.7017686942652696e-8,-0.0023920407464684762,-2.4620565317509125e-5,-1.6802798466007283e-8,-0.0023918939307276768,-2.4491771693316273e-5,-1.6650542584010726e-8,-0.0023917702332855676,-2.442975015807349e-5,-1.6577888357278284e-8,-0.002391642329452238,-2.443909807420655e-5,-1.6590679729922046e-8,-0.002391481763245852,-2.4514179502452957e-5,-1.6682551340715887e-8,-0.0023912619080620466,-2.4638499724969643e-5,-1.6834129065335303e-8,-0.002390961805205984,-2.478455800610903e-5,-1.701276797456279e-8,-0.00239057134744484,-2.4915132198915024e-5,-1.717399678816932e-8,-0.0023900974268101054,-2.4987729973603072e-5,-1.7266795508165544e-8,-0.0023895689055318833,-2.496391501976109e-5,-1.7244787681999786e-8,-0.002389036165074365,-2.4823284691699932e-5,-1.7083063873624844e-8,-0.002388560578292379,-2.4577378315217863e-5,-1.6794918110509053e-8,-0.0023881937570601162,-2.4274142413621198e-5,-1.643724545979219e-8,-0.0023879553394346147,-2.3985163329236852e-5,-1.6095335313882396e-8,-0.002387823242597225,-2.3778727505381422e-5,-1.5850778179207802e-8,-0.002387743703083488,-2.3693514905278695e-5,-1.575012576846581e-8,-0.002387654469699301,-2.3727803248252375e-5,-1.57919573836453e-8,-0.0023875068224310926,-2.384701163322787e-5,-1.5935693828749185e-8,-0.0023872766838733636,-2.4000872036063545e-5,-1.6121849968027748e-8,-0.0023869645383715133,-2.4139837531397063e-5,-1.6291451853276617e-8,-0.0023865890688437295,-2.4225578577636494e-5,-1.6398545934918142e-8,-0.002386179207668243,-2.4235415814278647e-5,-1.641560182566368e-8,-0.0023857671367677994,-2.4162608465253676e-5,-1.633403013000638e-8,-0.00238538293231372,-2.4014446579879058e-5,-1.6162059832962554e-8,-0.002385050648932289,-2.3809267842749758e-5,-1.5921265822080736e-8,-0.0023847856192039767,-2.357281279621325e-5,-1.564223465313254e-8,-0.002384592973846085,-2.333418942320294e-5,-1.5359717819261274e-8,-0.0023844674152753756,-2.3121781930974167e-5,-1.5107704928910368e-8,-0.0023843942234786524,-2.2959461734624766e-5,-1.491486592392592e-8,-0.002384351361188566,-2.2863520256191973e-5,-1.4800873864748202e-8,-0.0023843123252193354,-2.28406536006252e-5,-1.4773996666932113e-8,-0.0023842493365599203,-2.2887020091128393e-5,-1.4829969279080835e-8,-0.0023841366567967904,-2.2988230871289267e-5,-1.4951960812478233e-8,-0.0023839539952364617,-2.312021069380629e-5,-1.5111546301631272e-8,-0.00238369008534005,-2.3251022890859802e-5,-1.527079819049034e-8,-0.0023833464925758774,-2.3344139544444378e-5,-1.5386101234343148e-8,-0.002382941139623567,-2.336411463944466e-5,-1.5414884137776942e-8,-0.002382509826925251,-2.328539769468119e-5,-1.532618136616557e-8,-0.0023821027927208825,-2.3103440347943915e-5,-1.5114003628255345e-8,-0.002381773349088804,-2.284408291453904e-5,-1.4808671898883374e-8,-0.0023815590512039917,-2.2563826220574735e-5,-1.4477243667166011e-8,-0.002381463086871345,-2.233471929550198e-5,-1.4205559558666824e-8,-0.0023814485095478804,-2.221697578834785e-5,-1.4065641166745777e-8,-0.002381452228381859,-2.2233998994991225e-5,-1.4085907881538568e-8,-0.002381411455037569,-2.2365307161191684e-5,-1.424262147988882e-8,-0.0023812864408547367,-2.2559894107652725e-5,-1.447559680357265e-8,-0.002381068549780454,-2.2758766135733266e-5,-1.4714854003566721e-8,-0.0023807747559344136,-2.291337561706086e-5,-1.4902487127724783e-8,-0.002380436370789755,-2.2994297064707167e-5,-1.5003052078078702e-8,-0.0023800885646524635,-2.299177707261808e-5,-1.5004382649226507e-8,-0.00237976327801646,-2.291211671228343e-5,-1.4913466509235396e-8,-0.0023794853741548514,-2.277298527889861e-5,-1.4750994633350504e-8,-0.0023792708581126575,-2.2599122259547465e-5,-1.4546281765613793e-8,-0.0023791261518308006,-2.241861685502684e-5,-1.4332799297124966e-8,-0.002379048025038435,-2.2259517123002332e-5,-1.4144070736454437e-8,-0.002379024159088545,-2.214660348294054e-5,-1.4009774292460906e-8,-0.0023790344674725033,-2.209831973031592e-5,-1.395206580492697e-8,-0.0023790533562057336,-2.2124111902023713e-5,-1.3982415286808531e-8,-0.002379052917494198,-2.222265873839312e-5,-1.4099513692685225e-8,-0.0023790067355613062,-2.238139064397462e-5,-1.428869841454831e-8,-0.002378893869389061,-2.257747476862916e-5,-1.4523091866730754e-8,-0.002378702581053121,-2.2780337278386994e-5,-1.476653436627111e-8,-0.002378433361551305,-2.2955662245878917e-5,-1.4978254730954575e-8,-0.002378100828725866,-2.3070719458652143e-5,-1.511914018072533e-8,-0.0023777339193535064,-2.310095367991105e-5,-1.515956714522654e-8,-0.0023773732909614727,-2.303748192499462e-5,-1.5088399696609955e-8,-0.0023770645160716658,-2.2893966475516838e-5,-1.492131520640025e-8,-0.002376846389675512,-2.2709585344523315e-5,-1.4704506770614907e-8,-0.0023767362857042957,-2.2543662682762967e-5,-1.4508420483594385e-8,-0.0023767187552697256,-2.2459283627088534e-5,-1.4408307234147157e-8,-0.0023767459611238515,-2.2499820209175073e-5,-1.445625065299755e-8,-0.0023767538670920077,-2.2670163085399482e-5,-1.4658709621930782e-8,-0.0023766872411040843,-2.2934727415897178e-5,-1.4973964372283597e-8,-0.0023765193201164465,-2.323369224805631e-5,-1.5331258141108677e-8,-0.0023762563410213845,-2.350669143427009e-5,-1.5658866089500266e-8,-0.002375928430938125,-2.371079089789632e-5,-1.5905466616878e-8,-0.0023755754730009244,-2.382701217823089e-5,-1.6047996748580552e-8,-0.0023752354105984904,-2.3857755177899014e-5,-1.6088754695381856e-8,-0.002374937643938984,-2.3820288416794153e-5,-1.6047823960984603e-8,-0.002374700710601401,-2.3740166302795695e-5,-1.5955340321399732e-8,-0.0023745323579410426,-2.364615831678585e-5,-1.584546360315411e-8,-0.002374430478790293,-2.356666639934087e-5,-1.575205426032653e-8,-0.002374384221762089,-2.352701024171114e-5,-1.57053729084508e-8,-0.0023743752258978223,-2.3547031862098734e-5,-1.572919102890182e-8,-0.0023743792463522813,-2.3638741087943782e-5,-1.5837991897107692e-8,-0.002374368580960303,-2.380412406762251e-5,-1.60343866710735e-8,-0.002374315566041234,-2.403369636554169e-5,-1.6307405665562255e-8,-0.0023741969508027684,-2.4306554286211768E-05,-1.663253558578559e-8,-0.0023739984897390765,-2.4592488041431972e-5,-1.6974166769903272e-8,-0.0023737187937815855,-2.485635257581502e-5,-1.729069822860392e-8,-0.0023733713634909127,-2.506433547134887e-5,-1.75419012861819e-8,-0.002372983923689407,-2.5191127286277645e-5,-1.769739737193478e-8,-0.002372594652471399,-2.5226659292504724e-5,-1.774469317666995e-8,-0.0023722453489884105,-2.518097690876975e-5,-1.7695084665231785e-8,-0.0023719720500917853,-2.508558541252764e-5,-1.758542950683843e-8,-0.0023717945137316262,-2.4989429346639012e-5,-1.7473550411127092e-8,-0.002371707467356645,-2.494832237534192e-5,-1.7425795584798645e-8,-0.002371677894372136,-2.5008867215187453e-5,-1.7497939205762146e-8,-0.0023716521953735695,-2.519167607485704e-5,-1.7715125311405072e-8,-0.002371573067713854,-2.548183725590846e-5,-1.8060341886620035e-8,-0.0023713996123746663,-2.5833052724984733e-5,-1.8479137373701417e-8,-0.002371120733790304,-2.6184543627960917e-5,-1.8899572452170946e-8,-0.002370755545988175,-2.6481976563885553e-5,-1.925703522704526e-8,-0.0023703426289241364,-2.6692240399045317e-5,-1.951183288718046e-8,-0.002369925545652223,-2.6807480392539526e-5,-1.9654094044252732e-8,-0.0023695414256623836,-2.6840554567015164e-5,-1.969852847864199e-8,-0.0023692152111846727,-2.681698378371743e-5,-1.9675010651785046e-8,-0.0023689586030738027,-2.676742403134865e-5,-1.961971546979294e-8,-0.002368771517557994,-2.672230169153053e-5,-1.9568738474777108e-8,-0.0023686442754798733,-2.6708491821190418e-5,-1.9554090992955217e-8,-0.0023685596467347297,-2.6747237733667733e-5,-1.960116950419851e-8,-0.0023684946354959537,-2.68525198499682e-5,-1.97267938434712e-8,-0.002368422377939945,-2.7029396546161804e-5,-1.9937245693158044e-8,-0.002368314731930507,-2.7272358283705946e-5,-2.0226327583010683e-8,-0.002368145999280894,-2.7564325967266348e-5,-2.0574158419038293e-8,-0.0023678977178564387,-2.7877297359742607e-5,-2.0947880438817348e-8,-0.002367563716932125,-2.8175607003251493e-5,-2.13054362009557e-8,-0.0023671538835179904,-2.842219417818171e-5,-2.1602912348808545e-8,-0.0023666947656918185,-2.8587099112517685e-5,-2.1804557557978034e-8,-0.002366225711058261,-2.865603679897383e-5,-2.1892948933762033e-8,-0.0023657906850576426,-2.8636207775475263e-5,-2.1875955583981355e-8,-0.0023654275601418958,-2.855700316341736e-5,-2.178772414823076e-8,-0.0023651577407058874,-2.8464659629023123e-5,-2.168254086275059e-8,-0.002364979157822262,-2.8411626526095733e-5,-2.162241058543541e-8,-0.0023648650418965824,-2.8442979454826838e-5,-2.166103733977592e-8,-0.0023647696710966484,-2.858341235909699e-5,-2.182833892955203e-8,-0.0023646404647817425,-2.8828964162584613e-5,-2.2120438590644107e-8,-0.002364433315624853,-2.9147094222646294e-5,-2.2499504905555506e-8,-0.0023641258489594833,-2.9486173871872614e-5,-2.2904806040155516e-8,-0.0023637232753826293,-2.979130710829397e-5,-2.3271375506734424e-8,-0.0023632546433513643,-3.0020135017275484e-5,-2.3548762139194928e-8,-0.002362761919778162,-3.0152532930312014e-5,-2.371261331000258e-8,-0.002362287259213515,-3.019176737033716e-5,-2.3766181246292998e-8,-0.002361863354709199,-3.015895406508579e-5,-2.3733906423839642e-8,-0.0023615089325091636,-3.0084812691876054e-5,-2.3651770841389847e-8,-0.00236122863993826,-3.0002168291456246e-5,-2.355846990290136e-8,-0.002361015342081342,-2.9940748794497447e-5,-2.3489231721847384e-8,-0.002360853090462664,-2.99242064708113e-5,-2.347223119682423e-8,-0.0023607198261957722,-2.9968579872684983e-5,-2.352671480071416e-8,-0.0023605896206938806,-3.008134175253829e-5,-2.3661849584525067e-8,-0.002360434817332799,-3.0260449420114613e-5,-2.3875596082544623e-8,-0.002360228724551759,-3.049336232044938e-5,-2.4153533560309604e-8,-0.002359949398259028,-3.0756647438100245e-5,-2.4468344706144205e-8,-0.0023595845450922696,-3.1017291850921676e-5,-2.4781284325725616e-8,-0.0023591366902662777,-3.1236974924948935e-5,-2.5047141991886597e-8,-0.0023586265980894577,-3.1379935910133564e-5,-2.5223485405296768e-8,-0.0023580922330621156,-3.1423318194842274e-5,-2.5282880705071384e-8,-0.002357581446433621,-3.136654245445751e-5,-2.5224014627911062e-8,-0.0023571393504713037,-3.123511772789739e-5,-2.507629936540768e-8,-0.0023567945569627356,-3.107585378526121e-5,-2.4894381030997065e-8,-0.002356549808293787,-3.094425143746427e-5,-2.474345004782824e-8,-0.0023563808398743354,-3.088856588907149e-5,-2.468058353057825e-8,-0.002356243673347264,-3.093631165990455e-5,-2.473883210055294e-8,-0.0023560873309623623,-3.108742146766624e-5,-2.491898425872327e-8,-0.002355867681615853,-3.131543790559243e-5,-2.5190695953120915e-8,-0.0023555585115042363,-3.157564626292947e-5,-2.5501820575724358e-8,-0.0023551570793018816,-3.1817414987353845e-5,-2.5792819079502532e-8,-0.0023546830395721335,-3.199708556138092e-5,-2.601196397786125e-8,-0.0023541715928763573,-3.2087761735616844e-5,-2.612699814404651e-8,-0.0023536634728575476,-3.208356074308803e-5,-2.6130313106072467e-8,-0.002353195112875602,-3.199796079202877e-5,-2.6037164980856268e-8,-0.0023527917127598285,-3.185788963483199e-5,-2.5878832104811108e-8,-0.0023524643421163408,-3.1696231806253835e-5,-2.569384848742031e-8,-0.002352210558042157,-3.15451429795799e-5,-2.5520122001298037e-8,-0.002352017095867703,-3.1431404225224024e-5,-2.5389404645823923e-8,-0.0023518632011028735,-3.137387309610943e-5,-2.532421829510982e-8,-0.0023517237164243985,-3.138241693585632e-5,-2.5336544634470662e-8,-0.0023515716747720653,-3.1457557889187125e-5,-2.542738407693742e-8,-0.002351380666688492,-3.159026777706401e-5,-2.5586503563180176e-8,-0.002351127544409854,-3.1761819323126654e-5,-2.5792232842799336e-8,-0.002350795997438297,-3.194420346482523e-5,-2.601189004377488e-8,-0.00235038109753939,-3.210218902073709e-5,-2.620411988036901e-8,-0.0023498939766626002,-3.2198362784118887e-5,-2.6324761207664516e-8,-0.002349364441336059,-3.2201906185988056e-5,-2.6337171516754927e-8,-0.002348838300113838,-3.2099820884316304e-5,-2.622549250364978e-8,-0.002348367104865175,-3.1906193387378433E-05,-2.6005638953133388e-8,-0.002347991928908947,-3.16632964565759e-5,-2.572670334096174e-8,-0.0023477278385863123,-3.1430895046698076e-5,-2.5458524871709287e-8,-0.0023475573302447783,-3.1266834683295797e-5,-2.526903432937616e-8,-0.0023474365947856223,-3.1207840834265524e-5,-2.5201788974958383e-8,-0.0023473111312674834,-3.125926073193481e-5,-2.5263855985966862e-8,-0.0023471329217680113,-3.139668630853095e-5,-2.5427484190962568e-8,-0.0023468725828316842,-3.157629805487812e-5,-2.564195034641037e-8,-0.00234652400711633,-3.174838223286182e-5,-2.5849203831761563e-8,-0.0023461023891960834,-3.1869477830964374e-5,-2.5998061315297644e-8,-0.0023456379459007243,-3.191071358278629e-5,-2.6054089874945166e-8,-0.002345167714297938,-3.1861618822297345e-5,-2.6004274687434745e-8,-0.0023447273964050676,-3.1729710102991125e-5,-2.5856743363241975e-8,-0.0023443447623778383,-3.15367263237694e-5,-2.5636504725218675e-8,-0.002344035611415732,-3.1312828941514695e-5,-2.5378716588854288e-8,-0.0023438025868741026,-3.1090321324122036e-5,-2.5121307043493483e-8,-0.002343636419494298,-3.0898215687290654e-5,-2.4898533605619872e-8,-0.0023435187346924568,-3.075840762917019e-5,-2.473640851696107e-8,-0.002343425470101371,-3.06836209512552e-5,-2.4650217468068794e-8,-0.002343330156203922,-3.067678824239108e-5,-2.46437581014699e-8,-0.0023432067557343844,-3.0731268964403044e-5,-2.4709591242115973e-8,-0.002343032205144756,-3.083142896996042e-5,-2.482971769728214e-8,-0.0023427890317182145,-3.09534849684997e-5,-2.4976536733214626e-8,-0.002342468429998982,-3.1066960867543575e-5,-2.5114480866863458e-8,-0.0023420738829506476,-3.113759753821509e-5,-2.520334251191813e-8,-0.0023416245655075696,-3.113286617338482e-5,-2.5204692814982757e-8,-0.002341156456037676,-3.1030702451985074e-5,-2.5092155875587517e-8,-0.0023407180452088712,-3.083007768640861e-5,-2.4863906224778936e-8,-0.0023403583393829482,-3.055874873840108e-5,-2.4551880478986413e-8,-0.002340109110049135,-3.027131810595971e-5,-2.421961909495806e-8,-0.0023399695530012623,-3.0033690127916367e-5,-2.394416454197952e-8,-0.0023399035996637175,-2.9898874983898596e-5,-2.378781857784365e-8,-0.0023398534173924984,-2.9886919236503446e-5,-2.3774659522504135e-8,-0.002339761711113448,-2.9979953784273124e-5,-2.388461211409085e-8,-0.0023395905205925225,-3.0132912884441697e-5,-2.4065731184666787e-8,-0.002339328969507674,-3.0291463113513845e-5,-2.4254908440399182e-8,-0.0023389905263682936,-3.0407909014329455e-5,-2.439632805788379e-8,-0.002338604647812188,-3.0450610353352113e-5,-2.4452510933726005e-8,-0.002338207386718835,-3.0406942615971795e-5,-2.4407957962391716e-8,-0.002337833512955816,-3.0281802581374335e-5,-2.4267646192649814e-8,-0.002337510916804099,-3.009374007485284e-5,-2.405271127085375e-8,-0.00233725717872705,-2.9870050109659613e-5,-2.379481298482102e-8,-0.0023370780896862574,-2.96415499392353e-5,-2.3530020163429226e-8,-0.0023369679571642664,-2.943765111817507e-5,-2.3292964938693384e-8,-0.002336911380731853,-2.928228272071026e-5,-2.311196745938867e-8,-0.0023368860519105425,-2.9191004014698512e-5,-2.3005572673000774e-8,-0.0023368660995786595,-2.9169474421886248e-5,-2.2980719814710166e-8,-0.002336825467155114,-2.921325593941368e-5,-2.3032512896595408e-8,-0.0023367409423963475,-2.9308629309781252e-5,-2.3145193486284356e-8,-0.002336594789812839,-2.94340434461076e-5,-2.329383537317645e-8,-0.002336377141683103,-2.9562078747041886e-5,-2.3446595994696407e-8,-0.0023360882937399465,-2.9662099579462933e-5,-2.3567732219797592e-8,-0.0023357408585416017,-2.9704065354320472e-5,-2.36219691020052e-8,-0.0023353611169372288,-2.9664178807460198e-5,-2.3581074777115405e-8,-0.002334987901996926,-2.953256184083392e-5,-2.3432902238347995e-8,-0.002334666656879615,-2.9321444023828176e-5,-2.3191111499019182e-8,-0.002334437144125591,-2.906967526378198e-5,-2.2900614292587276e-8,-0.0023343170286952335,-2.8837540628692366e-5,-2.263164135915559e-8,-0.002334289377364724,-2.868863915936848e-5,-2.245863079739621e-8,-0.0023343042731189534,-2.8664576401788524e-5,-2.243065985991554e-8,-0.002334297427240077,-2.8766728884431434e-5,-2.2550060161150142e-8,-0.00233421602436304,-2.8956937999179782e-5,-2.277304822604038e-8,-0.0023340366493231914,-2.9175695277364925e-5,-2.3030723691705274e-8,-0.0023337675567428337,-2.9365148437702835e-5,-2.325572494540632e-8,-0.002333439019167699,-2.948499872544599e-5,-2.3400714149062195e-8,-0.002333090235900311,-2.9517803647735512e-5,-2.3444668908795366e-8,-0.002332758701346869,-2.9466638538369463e-5,-2.3390385484474364e-8,-0.0023324738052357035,-2.934937562502968e-5,-2.3258055105401835e-8,-0.0023322540424882687,-2.919255582833955e-5,-2.3078281732160556e-8,-0.0023321064600515273,-2.902614663617285e-5,-2.2885999487207492e-8,-0.002332027286009202,-2.8879263050207602e-5,-2.271540058262342e-8,-0.0023320033619865835,-2.877662704188809e-5,-2.259567613496163e-8,-0.002332014289946477,-2.873576097567269e-5,-2.2547631244607782e-8,-0.002332035177135321,-2.8765014379972653e-5,-2.2581326280258576e-8,-0.0023320398449503863,-2.8862571973660708e-5,-2.2694919143851268e-8,-0.0023320042471653172,-2.9016654866027363e-5,-2.287492871831799e-8,-0.0023319096779583115,-2.9206946607571382e-5,-2.3097917898279694e-8,-0.002331745434296553,-2.940702053860624e-5,-2.333330260051453e-8,-0.0023315107913132412,-2.9587554741398894e-5,-2.354703004535643e-8,-0.002331216183994399,-2.9720241445388588e-5,-2.370604059396504e-8,-0.0023308833968589734,-2.9782371874826208e-5,-2.378354402409868e-8,-0.0023305442821816677,-2.976211745161164e-5,-2.376519028712881e-8,-0.002330237019842478,-2.9664138028036154e-5,-2.3655730605611676e-8,-0.002329998741183291,-2.9513937315933643e-5,-2.3484296706424633e-8,-0.0023298543227104943,-2.935776247905231e-5,-2.3304483190610554e-8,-0.0023298039688696283,-2.9254146272590037e-5,-2.3184600111912306e-8,-0.0023298161627486316,-2.9255771124284795e-5,-2.3186513526067538e-8,-0.002329833717182933,-2.9387407680729007e-5,-2.3339799540173714e-8,-0.00232979429485865,-2.963251445919433e-5,-2.3625939095795707e-8,-0.0023296555485235837,-2.993876684354111e-5,-2.3984573422930422e-8,-0.002329410031430962,-3.0240089226068864e-5,-2.433902191722381e-8,-0.002329082684861528,-3.048133910260082e-5,-2.4624941076546366e-8,-0.002328716252266335,-3.063272313348873e-5,-2.4807118980201846e-8,-0.0023283552432151315,-3.0691090518933916e-5,-2.4881121231374615e-8,-0.002328035235814446,-3.067316204035687e-5,-2.486564617259907e-8,-0.002327778453652459,-3.060672619689269e-5,-2.4792504271784795e-8,-0.0023275936390781573,-3.052324005011218e-5,-2.4698123022970693e-8,-0.002327477917828302,-3.0452785078251434e-5,-2.461765146651857e-8,-0.002327419112590265,-3.0420884134364205E-05,-2.458113394257909e-8,-0.0023273980040969685,-3.0446326357327403e-5,-2.4610839446448034e-8,-0.002327390669521878,-3.0539531096370326e-5,-2.4719266183936192e-8,-0.0023273711094918687,-3.070139397965835e-5,-2.4907774784639605e-8,-0.002327314298389271,-3.0922803788878494e-5,-2.5166047977091938e-8,-0.002327199604182002,-3.118523180180453e-5,-2.5472802828543438e-8,-0.0023270141555905726,-3.146275582275373e-5,-2.579813850369303e-8,-0.002326755507257778,-3.1725524753218145e-5,-2.6107509797618743e-8,-0.002326433025242352,-3.194433915074523e-5,-2.636696380227279e-8,-0.00232606757107646,-3.2095816875852493E-05,-2.6549064620552972e-8,-0.0023256892347763903,-3.216744119251998e-5,-2.663874128588696e-8,-0.0023253330548705857,-3.216173673953351e-5,-2.6638224765391106e-8,-0.002325032753407156,-3.209873777588853e-5,-2.6570101510359574e-8,-0.0023248127299698297,-3.201549252585091e-5,-2.6476970450584947e-8,-0.002324679419257254,-3.1960909325668365e-5,-2.641563798078472e-8,-0.002324614738368727,-3.198471760129885e-5,-2.6444333423830437e-8,-0.0023245759518624605,-3.2121629871326e-5,-2.6604171937243653e-8,-0.002324505785473568,-3.237602913514e-5,-2.6901108196581215e-8,-0.0023243518127423596,-3.271591879496891e-5,-2.7298653087985366e-8,-0.00232408675837698,-3.308237216229446e-5,-2.772870037338478e-8,-0.0023237183421038277,-3.341134600686158e-5,-2.8116827565107905e-8,-0.0023232834120907914,-3.365603424276712e-5,-2.8408283829963784e-8,-0.0023228315250686865,-3.379852594585868e-5,-2.8581601521190148e-8,-0.0023224081917482394,-3.384823308876176e-5,-2.8646918820079517e-8,-0.0023220447513682056,-3.3832392487888304e-5,-2.8635163154902712e-8,-0.0023217556857669294,-3.378539642682306e-5,-2.8585851446400122e-8,-0.0023215406467797794,-3.374081042009061e-5,-2.8537897313167375e-8,-0.002321388188291431,-3.3726795999537757e-5,-2.8524238705810844e-8,-0.002321279357326137,-3.376398701175925e-5,-2.8569237172436706e-8,-0.002321190580067218,-3.3864561252015965e-5,-2.8687469509032147e-8,-0.0023210960815719848,-3.403170234189584e-5,-2.8883032294239802e-8,-0.0023209703112198727,-3.425921865422195e-5,-2.9149091545929388e-8,-0.0023207907692627456,-3.453153525414017e-5,-2.9467892708359517e-8,-0.002320541348280485,-3.4824632907782434e-5,-2.9811852888919886e-8,-0.002320215787982576,-3.510859047522046e-5,-3.014647119465895e-8,-0.002319820326628823,-3.5352020534393274e-5,-3.0435397604764066e-8,-0.002319374429235887,-3.5528027890910064e-5,-3.064726176518535e-8,-0.0023189086929537852,-3.562058707993201e-5,-3.0763027321289934e-8,-0.0023184596969337903,-3.562967431567573e-5,-3.078198150000386e-8,-0.0023180625159862473,-3.557348082881343e-5,-3.072444153370548e-8,-0.0023177424037032486,-3.548664144440317e-5,-3.062992075551395e-8,-0.0023175074984734543,-3.5414226963611394e-5,-3.0550393228261676e-8,-0.0023173444808164832,-3.5402047537825155e-5,-3.053919267474974e-8,-0.002317219043515323,-3.548478675955916e-5,-3.063722510387765e-8,-0.0023170825452282313,-3.567474791693208e-5,-3.085971138660794e-8,-0.0023168847150472982,-3.595522696647335e-5,-3.118819869005432e-8,-0.0023165894160324624,-3.628263070896687e-5,-3.157275232013399e-8,-0.0023161874027681608,-3.659879209134966e-5,-3.194610912976707e-8,-0.002315699674318987,-3.6849589557777495e-5,-3.224527727736699e-8,-0.002315169322935829,-3.7001624225642415e-5,-3.2430960432418255e-8,-0.002314646199700832,-3.704960690848625e-5,-3.249625130896201e-8,-0.0023141720768090047,-3.701289220350198e-5,-3.246278529929417e-8,-0.0023137719944856,-3.692533958583261e-5,-3.2369181497699095e-8,-0.002313452787336121,-3.682436937453514e-5,-3.225850415814049e-8,-0.002313206349815514,-3.674303927821273e-5,-3.216911319350878e-8,-0.002313014513893187,-3.6705975238209506e-5,-3.21298653443614e-8,-0.002312853494672486,-3.6728114464930174e-5,-3.215852030546475e-8,-0.0023126972338266515,-3.681481612065799e-5,-3.226175333094992e-8,-0.0023125198655322456,-3.696232465768661e-5,-3.24356389814037e-8,-0.002312297893017724,-3.7158178604489365e-5,-3.266612338087536e-8,-0.0023120126639769563,-3.7381726521067834e-5,-3.292962936131338e-8,-0.002311653424383115,-3.760539504033395e-5,-3.319450237088803e-8,-0.0023112206387045776,-3.7797568417562995e-5,-3.3424282093674193e-8,-0.002310728536788081,-3.7927679776685745e-5,-3.3583518129125895e-8,-0.0023102052694704335,-3.7973269632081315e-5,-3.3645883688399196e-8,-0.002309689114953737,-3.792741024238655e-5,-3.3602769741033175e-8,-0.002309220367796046,-3.780365018678395e-5,-3.34690861984953e-8,-0.0023088306454635615,-3.763560952953059e-5,-3.328295822689161e-8,-0.0023085331437765486,-3.7470095324169245e-5,-3.30979876994702e-8,-0.0023083175552887736,-3.7355299923970754e-5,-3.296981668241202e-8,-0.0023081517291295645,-3.732774019023125e-5,-3.2941121239366296e-8,-0.0023079897002703125,-3.740204716129852e-5,-3.302971182509186e-8,-0.0023077837234663535,-3.7566599907923365e-5,-3.322321468544985e-8,-0.0023074969972720206,-3.778618699150824e-5,-3.348181192736664e-8,-0.002307113642460123,-3.801111136025596e-5,-3.374850764245679e-8,-0.002306642967714749,-3.819047303514916e-5,-3.3964389987148476e-8,-0.0023061164179579287,-3.8285780849737995e-5,-3.40844388236443e-8,-0.0023055780533455137,-3.828042081343265e-5,-3.408864550347391e-8,-0.0023050720265702773,-3.818189606197478e-5,-3.3984813393723e-8,-0.0023046316398957264,-3.801683262139339e-5,-3.3802987367837267e-8,-0.00230427334288954,-3.7821682524135505e-5,-3.358486019035794e-8,-0.0023039963644423222,-3.7633111972824855e-5,-3.337272686138091e-8,-0.002303786336992908,-3.748100255910153e-5,-3.320135317605305e-8,-0.0023036204437704402,-3.738497046118624e-5,-3.3093833427999516e-8,-0.002303472191629436,-3.735370107695463e-5,-3.306068870435814e-8,-0.002303315004370737,-3.738581151208172e-5,-3.310077586295026e-8,-0.0023031247168510474,-3.7471158388023855e-5,-3.32027746012847e-8,-0.002302881512812013,-3.759204402485969e-5,-3.334659244660564e-8,-0.002302571933303701,-3.772437161974421e-5,-3.3504698526810776e-8,-0.0023021913377570913,-3.7839318120416736e-5,-3.364401288936653e-8,-0.0023017466592312736,-3.790639624397905e-5,-3.3729365113627754e-8,-0.002301258499438132,-3.789868982799408e-5,-3.3729469251606456e-8,-0.0023007607416336475,-3.780025860121621e-5,-3.362545368835861e-8,-0.0023002955727393715,-3.761398422436507e-5,-3.341996763976326e-8,-0.002299903135206751,-3.7366095073082776e-5,-3.314251715734096e-8,-0.002299608241321281,-3.7103131944292765e-5,-3.284613208267745e-8,-0.002299409859179875,-3.687991824381861e-5,-3.259369265324991e-8,-0.002299279285932504,-3.674229260682073e-5,-3.243819215569253e-8,-0.002299168823546775,-3.6712133551511284e-5,-3.240551750739637e-8,-0.002299027108588892,-3.678121604662647e-5,-3.248721326687466e-8,-0.0022988143521173038,-3.6915489318077446e-5,-3.2645093229978927e-8,-0.0022985121434507642,-3.706652291671608e-5,-3.282408232012828e-8,-0.0022981259731840605,-3.718510344513982e-5,-3.296765596479805e-8,-0.002297681444338649,-3.723291069296564e-5,-3.3031266622567177e-8,-0.0022972163826716816,-3.7189964304819385e-5,-3.299108395567988e-8,-0.002296771289655474,-3.705699893642229e-5,-3.284699771750507e-8,-0.0022963804162048507,-3.685301926143306e-5,-3.2620069474865724e-8,-0.0022960653412444033,-3.66092080660818e-5,-3.234570517089325e-8,-0.0022958321994601843,-3.6361104881873565e-5,-3.206471491834107e-8,-0.002295672602594345,-3.6141216362085723e-5,-3.181475278986125e-8,-0.002295567237924504,-3.5973699239903435e-5,-3.1624065630400416e-8,-0.0022954906243840873,-3.5871742882865936e-5,-3.150833328403298e-8,-0.002295415668514197,-3.583734289021038e-5,-3.1470303577740756e-8,-0.002295317231199662,-3.5862619387422194e-5,-3.15012747362056e-8,-0.002295174587684972,-3.593175025312556e-5,-3.158334026307848e-8,-0.0022949731503511582,-3.6022919077861825e-5,-3.169165951737354e-8,-0.0022947059593891967,-3.6110200777476796e-5,-3.1796616976641045e-8,-0.0022943752972072132,-3.616576445549112e-5,-3.186629056886203e-8,-0.002293994395917849,-3.616308491839482e-5,-3.1870055583428156e-8,-0.0022935884913046806,-3.608188698839053e-5,-3.1784218012190775e-8,-0.002293193570220022,-3.591490428985524e-5,-3.159981966187581e-8,-0.002292850700555697,-3.567488665407547e-5,-3.1330816136700846e-8,-0.0022925949121289655,-3.539799888834784e-5,-3.101814903088958e-8,-0.002292441079759657,-3.5138654460845667e-5,-3.072396888884776e-8,-0.0022923737482313526,-3.495377210004042e-5,-3.051367324612897e-8,-0.0022923487357085484,-3.4881645478195986e-5,-3.043169702193616e-8,-0.0022923082878944408,-3.492651926994169e-5,-3.048374540670587e-8,-0.0022922023645509603,-3.5057777584302726e-5,-3.063565736187704e-8,-0.002292004823110608,-3.522321745129158e-5,-3.0828335408719365e-8,-0.002291718031987991,-3.536782916311345e-5,-3.099901295008251e-8,-0.0022913672330241424,-3.544908418763723e-5,-3.109866179650461e-8,-0.002290990059070643,-3.544468044302114e-5,-3.1100956371175926e-8,-0.0022906260283061795,-3.535334262818601e-5,-3.1003445892457103e-8,-0.0022903084934227853,-3.5191150650947184e-5,-3.082366001102285e-8,-0.002290059645962504,-3.4985740590012e-5,-3.059271116004469e-8,-0.002289888308889336,-3.476990829758171e-5,-3.034806608016834e-8,-0.002289790112933232,-3.457553303386381e-5,-3.0126527996035566e-8,-0.0022897496397346197,-3.442855427528838e-5,-2.995832382862933e-8,-0.002289743927638933,-3.434557978525591e-5,-2.986303752963534e-8,-0.002289746588173612,-3.433235628935457e-5,-2.984772570762622e-8,-0.002289731806192985,-3.438399705495003e-5,-2.9907130752155833e-8,-0.0022896776371395563,-3.448658144544781e-5,-3.0025539997263514e-8,-0.002289568333240068,-3.4619516180843974e-5,-3.0179546880832127e-8,-0.002289395830989697,-3.47581192864351e-5,-3.034104020878307e-8,-0.0022891606980330746,-3.487624615385044e-5,-3.048017863245395e-8,-0.0022888727561433233,-3.494909690242651e-5,-3.0568516096956604e-8,-0.0022885513883073552,-3.4956571873741554e-5,-3.058275352336701e-8,-0.002288225022291335,-3.4887629910986334e-5,-3.050971134872694e-8,-0.0022879285346280604,-3.474558680788467e-5,-3.0352495822772635e-8,-0.002287697014005668,-3.4552914595581084e-5,-3.013619110840197e-8,-0.002287555258528512,-3.4352264826514714e-5,-2.990924381258495e-8,-0.002287505296293813,-3.419939650252042e-5,-2.9735499630763315e-8,-0.0022875185392014596,-3.414608973943245e-5,-2.9674650423240414e-8,-0.002287540654767576,-3.421841512072958e-5,-2.975725826269698e-8,-0.0022875109191809696,-3.44028369555647e-5,-2.9968681291149824e-8,-0.0022873866431173677,-3.4650463730046105e-5,-3.025373403994287e-8,-0.002287158332342123,-3.489747604808045e-5,-3.05398504214709e-8,-0.0022868484445149025,-3.5088852879194874e-5,-3.076405861695239e-8,-0.0022864982748903593,-3.519317267669936e-5,-3.0889870385194194e-8,-0.002286152562989151,-3.520525313625685e-5,-3.091044534452543e-8,-0.002285848351995372,-3.514064936767193e-5,-3.084259232463975e-8,-0.0022856095545583004,-3.5027359972136336e-5,-3.071759518882632e-8,-0.0022854458582351883,-3.4898128170332654e-5,-3.057260162184731e-8,-0.00228535406658743,-3.4784542000901826e-5,-3.0443888195242704e-8,-0.0022853205545476122,-3.471284955278595e-5,-3.0361936066289834e-8,-0.0022853242782383083,-3.4701131164836125e-5,-3.034799776992067e-8,-0.0022853401172956323,-3.475768108400181e-5,-3.0412079618106474e-8,-0.0022853423369857883,-3.488055943683937e-5,-3.055234935450222e-8,-0.0022853079331452636,-3.505829657473036e-5,-3.075595068991225e-8,-0.002285219540357508,-3.5271714452898415e-5,-3.1001145596984345e-8,-0.0022850675526555806,-3.5496617417606936e-5,-3.12604400979373e-8,-0.0022848513167228906,-3.5706935033342264e-5,-3.150417106161792e-8,-0.0022845794630886704,-3.587803665272236e-5,-3.170422273669897e-8,-0.0022842694256383967,-3.599011192601114e-5,-3.183778648177624e-8,-0.00228394612191299,-3.6031573527607656e-5,-3.1891182357691236e-8,-0.002283639559272516,-3.6002497987339216e-5,-3.1863829412209876e-8,-0.0022833807000028155,-3.591781523569677e-5,-3.17720571397393e-8,-0.002283194835117489,-3.580895633737797e-5,-3.1651234007313374e-8,-0.0022830926687873554,-3.572151453512309e-5,-3.155331255203707e-8,-0.0022830615120185546,-3.57062013456485e-5,-3.1536574359696766e-8,-0.002283061910144253,-3.5802515052971905e-5,-3.1646865496677e-8,-0.0022830358716624693,-3.602024681505544e-5,-3.1896238479571526e-8,-0.002282927452508825,-3.6329876875859376e-5,-3.2251745516056244e-8,-0.0022827062816265977,-3.667107036558002e-5,-3.264498114105585e-8,-0.0022823796709535715,-3.697658131461953e-5,-3.299928501542816e-8,-0.0022819864232603475,-3.719735460090399e-5,-3.325834215160285e-8,-0.0022815785791103415,-3.731532145924846e-5,-3.340080377913226e-8,-0.0022812032084957965,-3.734128205682896e-5,-3.3438034270071183e-8,-0.002280891871937716,-3.7304369843453694e-5,-3.3402379181189025e-8,-0.00228065814223643,-3.724061603780327e-5,-3.333439792808469e-8,-0.0022805000038872204,-3.718451764462349e-5,-3.327337443004344e-8,-0.0022804039844390635,-3.7164175330215406e-5,-3.325171023981485e-8,-0.002280349211641098,-3.7198996010101034e-5,-3.3292116454290506e-8,-0.0022803108906574855,-3.729879835377055e-5,-3.3406389414515064e-8,-0.002280263357184188,-3.746369139111816e-5,-3.359514042205903e-8,-0.0022801829142725643,-3.76845561343038e-5,-3.3848312986735143e-8,-0.0022800505440541212,-3.794419075362827e-5,-3.4146529008746734e-8,-0.002279854394613768,-3.821932509749697e-5,-3.446344080378021e-8,-0.002279591667380771,-3.8483592197162534e-5,-3.4769134737453335e-8,-0.0022792694769532365,-3.8711202674219674e-5,-3.503427192200282e-8,-0.002278904453787725,-3.888090559245803e-5,-3.523451107453436e-8,-0.002278520994022731,-3.897981593858639e-5,-3.5354790439935546e-8,-0.0022781481387727765,-3.900661067575245e-5,-3.539296714173588e-8,-0.002277815196272408,-3.897358681368924e-5,-3.536228182941742e-8,-0.0022775462453310945,-3.8907078916294634e-5,-3.5292063500544346e-8,-0.0022773537578315915,-3.88453723888866e-5,-3.5225611058902015e-8,-0.0022772323066882973,-3.88328268780596e-5,-3.5213664861948535e-8,-0.002277154719218136,-3.89093864059176e-5,-3.5302432695555914e-8,-0.0022770743013513575,-3.909671606337604e-5,-3.551757119061668e-8,-0.0022769361938568297,-3.93858582620144e-5,-3.584980135264396e-8,-0.0022766965332619883,-3.9734321357865546e-5,-3.625133407898208e-8,-0.002276341115211891,-4.007817531691193e-5,-3.664954907985626e-8,-0.0022758922917568173,-4.035551223226274e-5,-3.697373201351628e-8,-0.0022753992488523085,-4.0528709716748785e-5,-3.7180470529775404e-8,-0.0022749180581077707,-4.059371095721217e-5,-3.726429156698758e-8,-0.0022744933359550488,-4.057442247318822e-5,-3.7251455930854735e-8,-0.0022741491150162865,-4.0509294110553696e-5,-3.718495011122612e-8,-0.0022738888817427747,-4.043836498717976e-5,-3.7109976390399145e-8,-0.0022737006122365193,-4.0394935220934196e-5,-3.706454561541384e-8,-0.0022735628534328385,-4.0401953921682715e-5,-3.7075254422409025e-8,-0.0022734497848497666,-4.047142453162688e-5,-3.7156399239620105e-8,-0.0022733348583905645,-4.060512607912676e-5,-3.731060746631049e-8,-0.0022731934580261463,-4.0795705115488924e-5,-3.752998308750005e-8,-0.00227300512552994,-4.102789765037355e-5,-3.7797496246937914e-8,-0.0022727556876095496,-4.128004247365327e-5,-3.808875005360056e-8,-0.002272439315133133,-4.152626986166031e-5,-3.837450044928072e-8,-0.0022720601389120266,-4.173970137526162e-5,-3.862427282168575e-8,-0.0022716327599983676,-4.1896595491755895e-5,-3.8811002059216745e-8,-0.0022711810539608945,-4.1980908267824755e-5,-3.8916135263443654e-8,-0.00227073496835204,-4.1988409487146426e-5,-3.8934279948754235e-8,-0.002270325441507122,-4.192927899551331e-5,-3.8876227340469446e-8,-0.002269978122215947,-4.1828177158028644e-5,-3.8769219119330844e-8,-0.00226970702629286,-4.172123601459589e-5,-3.865378498185866e-8,-0.0022695094556672577,-4.1649926366732944e-5,-3.857700174244831e-8,-0.002269363629343624,-4.165219466353312e-5,-3.858250738357373e-8,-0.0022692306298698933,-4.175204263636338e-5,-3.869853604806306e-8,-0.0022690619905320303,-4.195007217268219e-5,-3.892687238355782e-8,-0.0022688127656313537,-4.22189359377569e-5,-3.923733305382498e-8,-0.0022684568851602466,-4.2507766167857475e-5,-3.9572560430991624e-8,-0.002267998326091102,-4.275672312180571e-5,-3.986449700076138e-8,-0.0022674714734245843,-4.291695195769548e-5,-4.005713795935709e-8,-0.0022669291597497737,-4.296662160132691e-5,-4.012487438155247e-8,-0.0022664242564903914,-4.2915295188340505e-5,-4.007760659904807e-8,-0.0022659940652150863,-4.279611123618072e-5,-3.995206908990567e-8,-0.002265653503930502,-4.265191244855833e-5,-3.979631362883339e-8,-0.0022653969340296893,-4.252261313043785e-5,-3.965552378432056e-8,-0.0022652046236925952,-4.243769493960012e-5,-3.95634861733223e-8,-0.002265049794477369,-4.241380155046763e-5,-3.9539697044729416e-8,-0.0022649041082798216,-4.245547864330964e-5,-3.9589986428501323e-8,-0.00226474124918325,-4.255711975844435e-5,-3.970856627954339e-8,-0.0022645391613217362,-4.270500455743162e-5,-3.988028806109427e-8,-0.0022642816799547678,-4.287910780361013e-5,-4.008272167427198e-8,-0.002263960087918555,-4.3054900809357125e-5,-4.028824466566982e-8,-0.002263574719130994,-4.320567695985923e-5,-4.0466687322319195e-8,-0.0022631362204558894,-4.330590165289405e-5,-4.058908270551296e-8,-0.0022626656639188536,-4.3335670173572484e-5,-4.063264302083518e-8,-0.0022621925719040524,-4.328569846595285e-5,-4.0586363627982455e-8,-0.0022617502460647106,-4.316153538197371e-5,-4.045582192050501e-8,-0.0022613686905826485,-4.298517863381172e-5,-4.02651379123331e-8,-0.002261066659628733,-4.279254577136207e-5,-4.0054328367112326e-8,-0.002260845254738966,-4.2626492298289355e-5,-3.9871642378719045e-8,-0.002260685452234943,-4.252671070386968e-5,-3.976228848354713e-8,-0.0022605509404802003,-4.251909481418603e-5,-3.9756384567982686e-8,-0.002260396131472639,-4.260760900980759e-5,-3.985954021720435e-8,-0.002260177694963087,-4.277131989594658e-5,-4.004914789052283e-8,-0.002259866766101412,-4.2968166060102e-5,-4.027830918497738e-8,-0.002259458210637815,-4.3145372744970057e-5,-4.048742944540769e-8,-0.0022589733613924707,-4.3254145791464096e-5,-4.062085419440258e-8,-0.002258454294531585,-4.326392054614321e-5,-4.064315339359069e-8,-0.0022579511436190353,-4.3170655978861896e-5,-4.0548734377790825e-8,-0.0022575073922757242,-4.2995916330466316e-5,-4.036104128218041e-8,-0.0022571489718927946,-4.2777865460527206e-5,-4.012258232791228e-8,-0.0022568805697357453,-4.255884861731508e-5,-3.988102778980891e-8,-0.0022566887016491335,-4.2374725671374876e-5,-3.967716426716014e-8,-0.002256548444902981,-4.2248875604791526e-5,-3.953799287615894e-8,-0.002256430457477919,-4.2190877177150564e-5,-3.9475031093020603e-8,-0.0022563063262742698,-4.219814048656945e-5,-3.9485967035225393e-8,-0.0022561518892659908,-4.225864272457631e-5,-3.9557654446514965e-8,-0.0022559490620141626,-4.235363463796422e-5,-3.9669178707093105e-8,-0.0022556869196150115,-4.245992921932744e-5,-3.9794503964805914e-8,-0.002255362650026142,-4.2551960746738174e-5,-3.990484416493067e-8,-0.00225498259128279,-4.260418776905965e-5,-3.9971363026047316e-8,-0.0022545629951551973,-4.259443556510106e-5,-3.996888136177645e-8,-0.002254129647814144,-4.2508371758274345e-5,-3.988086135327218e-8,-0.0022537151993712646,-4.234455193159232e-5,-3.970509132900266e-8,-0.00225335330209883,-4.2118407480589275e-5,-3.9458268320626675e-8,-0.0022530698916637996,-4.186263655252896e-5,-3.917660732834667e-8,-0.0022528740190121094,-4.162180095563857e-5,-3.8909958155369906e-8,-0.002252752217450626,-4.1441201489894646e-5,-3.870944411348118e-8,-0.0022526698614514173,-4.1353325375690816e-5,-3.861225482382609e-8,-0.0022525801000990234,-4.136713774543938e-5,-3.862947201208333e-8,-0.0022524373733573866,-4.146464933767827e-5,-3.8741929345072135e-8,-0.002252210525373519,-4.1605994325611274e-5,-3.89055852814104e-8,-0.0022518911377591767,-4.1740803405337114e-5,-3.906405012373955e-8,-0.0022514949999607,-4.182182996698903e-5,-3.9163825942864726e-8,-0.0022510569958787445,-4.181681135790668e-5,-3.916776403591502e-8,-0.002250621342141275,-4.171557236139564e-5,-3.906331946104076e-8,-0.0022502301294550285,-4.15308425955026e-5,-3.886378396708598e-8,-0.002249913449319389,-4.129306958437996e-5,-3.860271679338941e-8,-0.002249683726453224,-4.104130530740587e-5,-3.832383998911728e-8,-0.002249535283975047,-4.0813295369522146e-5,-3.8069884935159855e-8,-0.0022494483048860476,-4.0637702512655366e-5,-3.787370255806774e-8,-0.002249395075586441,-4.053008747505458e-5,-3.775352485809548e-8,-0.002249346228387429,-4.049258564563083e-5,-3.771239510768213e-8,-0.0022492755010270257,-4.0516052192387256e-5,-3.774046242612261e-8,-0.0022491626277783426,-4.058321264511812e-5,-3.7818520580070174e-8,-0.0022489947436900195,-4.0671780343274614e-5,-3.7921589641568395e-8,-0.002248766957445944,-4.075711343877572e-5,-3.8021986797907276e-8,-0.0022484826632076446,-4.081452585563666e-5,-3.8091951714669235e-8,-0.002248153838048646,-4.0821728247974105e-5,-3.8106341905870566e-8,-0.002247801079960905,-4.076195151424849e-5,-3.804605949402225e-8,-0.002247452593148405,-4.0628012018448585e-5,-3.790257146744856e-8,-0.0022471409301629466,-4.042682459236734e-5,-3.768302732502345e-8,-0.00224689646765886,-4.018263561138499e-5,-3.7414039313886286e-8,-0.0022467379334867687,-3.993603737751534e-5,-3.71407722402369e-8,-0.0022466629330224067,-3.973603731085064e-5,-3.6918205817805125e-8,-0.0022466437937668942,-3.962548372148706e-5,-3.679484541297912e-8,-0.0022466332626418345,-3.962510713746668e-5,-3.679475135912498e-8,-0.0022465795112438054,-3.972433968955547e-5,-3.690704831574807e-8,-0.002246443844399572,-3.988431149987231e-5,-3.7089012125681974e-8,-0.0022462127331009103,-4.005144641550452e-5,-3.728104124941213e-8,-0.002245899726127667,-4.017461828870116e-5,-3.742571513024981e-8,-0.0022455385610210964,-4.021870065905526e-5,-3.7482979092119534e-8,-0.002245171991501091,-4.017101257208119e-5,-3.743755699529912e-8,-0.0022448406857828573,-4.0040872064166135e-5,-3.729877117661851e-8,-0.002244574842630709,-3.985434389103751e-5,-3.709499167218068e-8,-0.00224438953153147,-3.964658315948225e-5,-3.6865281132306804e-8,-0.002244283739282433,-3.9453769098646514e-5,-3.6650395806950313e-8,-0.0022442425786291715,-3.9306138580895836e-5,-3.648483998275852e-8,-0.0022442417262513318,-3.9223235736532204e-5,-3.639130046745756e-8,-0.002244252825270072,-3.921193238763609e-5,-3.637818766334322e-8,-0.002244248580715095,-3.926701981343953e-5,-3.6440147045714485e-8,-0.002244206665010873,-3.9373614587264704e-5,-3.656072898333406e-8,-0.0022441120851505714,-3.9510449394149734e-5,-3.671615220159067e-8,-0.002243958158082218,-3.9653224799783987e-5,-3.687916687487293e-8,-0.002243746569982561,-3.977754481038861e-5,-3.702240992509356e-8,-0.0022434870012997396,-3.986143852984975e-5,-3.7121211995940224e-8,-0.002243196539261886,-3.9887788360821346e-5,-3.715623183345602e-8,-0.002242898748955786,-3.984704324325663e-5,-3.711640914072695e-8,-0.0022426218280860106,-3.974042123909537e-5,-3.7002547544910815e-8,-0.0022423948446182447,-3.9583186860967147e-5,-3.683110598566761e-8,-0.002242241179018976,-3.940641160112801e-5,-3.663638469156625e-8,-0.00224216956598242,-3.925442123747653e-5,-3.646787712775838e-8,-0.002242165743912653,-3.917522022806908e-5,-3.63796461283401e-8,-0.0022421904430927637,-3.92042809462743e-5,-3.641210968875951e-8,-0.0022421888363345576,-3.934800163595166e-5,-3.657333079382851e-8,-0.0022421101287026773,-3.957707112540881e-5,-3.683135600408295e-8,-0.0022419276065207064,-3.983591431005777e-5,-3.712457446970693e-8,-0.0022416477393448642,-4.0063753426798325e-5,-3.73851192566621e-8,-0.0022413045475564155,-4.0215340963561835e-5,-3.7561970560884604e-8,-0.0022409449338205603,-4.0271819274777205e-5,-3.7633148529958066e-8,-0.0022406136872176463,-4.0240309319839884e-5,-3.7605480019251675e-8,-0.002240343470877864,-4.0146522531138636e-5,-3.750668536605433e-8,-0.002240150677565745,-4.002533269708593e-5,-3.7375157741474976e-8,-0.002240035711440105,-3.991240818250783e-5,-3.725076167766338e-8,-0.002239985804253139,-3.9838071993125945e-5,-3.7167903625866e-8,-0.0022399789880449567,-3.9823368021104823e-5,-3.715090319780558e-8,-0.0022399885175577506,-3.9878050065343086e-5,-3.721146830451135e-8,-0.002239987272940578,-4.000036042511323e-5,-3.734824122526935e-8,-0.0022399516443405575,-4.017838712946535e-5,-3.7548239619326853e-8,-0.002239864499431365,-4.0392596449678075e-5,-3.778973496167977e-8,-0.0022397169957782525,-4.061908331716644e-5,-3.804599535317224e-8,-0.002239509163109704,-4.083302738834809e-5,-3.828923970936112e-8,-0.00223924945058436,-4.101186342286681e-5,-3.8494196874711744e-8,-0.002238953599371396,-4.113797301515876e-5,-3.8641048926455915e-8,-0.0022386430618668383,-4.120100796303263e-5,-3.871793082545036e-8,-0.002238342944066297,-4.1200001151770064e-5,-3.872324181388282e-8,-0.0022380791839847307,-4.114530686782865e-5,-3.866788607866194e-8,-0.002237874380510262,-4.1060002066053976e-5,-3.857703907310176e-8,-0.00223774180926945,-4.097948394853225e-5,-3.848995354296783e-8,-0.00223767825635013,-4.094712480839855e-5,-3.845528558322179e-8,-0.002237658399419641,-4.1004061797862145e-5,-3.851967858482813e-8,-0.0022376356888406273,-4.11738325963669e-5,-3.8710382858211906e-8,-0.0022375542283195344,-4.144791944811161e-5,-3.9018797372337954e-8,-0.002237369976256706,-4.178239537910177e-5,-3.939648342269923e-8,-0.0022370705865857117,-4.211192540677199e-5,-3.97707040733493e-8,-0.002236681021205403,-4.237528136520402e-5,-4.0072894403993155e-8,-0.0022362515136581293,-4.2537390808246587e-5,-4.026326754963274e-8,-0.0022358368811051695,-4.2596592517748946e-5,-4.033897314519272e-8,-0.002235479455892738,-4.257760540665977e-5,-4.032647668471118e-8,-0.0022352014732815342,-4.251839568376904e-5,-4.026725325138652e-8,-0.0022350055128588357,-4.245824814262653e-5,-4.0204769494537755e-8,-0.002234879072292001,-4.2429981973685345e-5,-4.017588031994506e-8,-0.002234800143287794,-4.245617891594765e-5,-4.020647152992803e-8,-0.0022347421748675988,-4.254810062132713e-5,-4.030997076660549e-8,-0.002234678089860464,-4.2706022024608e-5,-4.04874490318804e-8,-0.002234583596800719,-4.292040013149177e-5,-4.072877100486095e-8,-0.0022344399196055193,-4.3173776366831664e-5,-4.101470592062815e-8,-0.002234235865992565,-4.344333894544913e-5,-4.13198704377615e-8,-0.002233969089473579,-4.370403283753067e-5,-4.1616299339581775e-8,-0.0022336463289874286,-4.393200590097062e-5,-4.1877337327494744e-8,-0.002233282501130823,-4.410796757286399e-5,-4.2081351239347404e-8,-0.0022328987863395795,-4.422003807868895e-5,-4.2214822045642e-8,-0.0022325199496675764,-4.426587777665794e-5,-4.227465236873269e-8,-0.0022321710530385326,-4.4253972215963034e-5,-4.226962591744968e-8,-0.0022318736432929433,-4.420392191805795e-5,-4.2220888713159193e-8,-0.0022316414113256896,-4.414545555348796e-5,-4.216110347774086e-8,-0.0022314754270215662,-4.4115440270257426e-5,-4.213136166132721e-8,-0.002231359823442391,-4.415175418461966e-5,-4.217445054382591e-8,-0.0022312601532689185,-4.4283382554984865e-5,-4.232367827957026e-8,-0.002231127767120565,-4.4518168017474204e-5,-4.258888372588604e-8,-0.0022309127621388284,-4.483326721123653e-5,-4.2945429863533486e-8,-0.0022305832777618443,-4.5176107345948044e-5,-4.33350641470657e-8,-0.0022301417812274774,-4.548042189951665e-5,-4.3683804639003184e-8,-0.00222962696006888,-4.5691654474732635e-5,-4.3930355472978606e-8,-0.0022290982784922498,-4.578732224176004e-5,-4.404886114752745e-8,-0.0022286126995498105,-4.578096414425489e-5,-4.405337631430236e-8,-0.002228207126679372,-4.571064953482692e-5,-4.39852734699268e-8,-0.002227893056699919,-4.562206961243283e-5,-4.38947320909112e-8,-0.002227660846567752,-4.555526540573994e-5,-4.382620421038141e-8,-0.002227487702103169,-4.55379758899719e-5,-4.381102028222137e-8,-0.0022273451775774154,-4.558426004228901e-5,-4.386564409422788e-8,-0.0022272045720067527,-4.569590592468164e-5,-4.39929402649985e-8,-0.002227040330898362,-4.586469098944103e-5,-4.418444952301841e-8,-0.0022268322499077128,-4.607464729273845e-5,-4.4422813065954085e-8,-0.0022265671012077232,-4.6304319138032545e-5,-4.46843227290974e-8,-0.002226239866699384,-4.65292374402582e-5,-4.4941773047288794e-8,-0.002225854484890745,-4.6724799757426735e-5,-4.51677431041688e-8,-0.0022254237956320375,-4.6869601410910074e-5,-4.5338309138385286e-8,-0.002224968272659459,-4.694890763075256e-5,-4.543684582222292e-8,-0.002224513374267207,-4.695764552052053e-5,-4.545727907051517e-8,-0.0022240857042466885,-4.690227807341315e-5,-4.5406156340506795e-8,-0.0022237084214524207,-4.680103654287797e-5,-4.530300679993751e-8,-0.002223396530534961,-4.668216756519775e-5,-4.517860947561035e-8,-0.002223152787249789,-4.658014304122351e-5,-4.507104168252101e-8,-0.002222964935742375,-4.652995213290346e-5,-4.501951893274435e-8,-0.002222805166025817,-4.655966574712351e-5,-4.505611999008108e-8,-0.0022226330833182246,-4.6682000764129616e-5,-4.519616588800026e-8,-0.002222403496610867,-4.6886909508180545e-5,-4.542958762812166e-8,-0.002222079087811143,-4.7138819175493126e-5,-4.571749442657403e-8,-0.0022216449448798823,-4.738267384694757e-5,-4.59987335824701e-8,-0.002221118171827722,-4.7560111136303446e-5,-4.620795613858712e-8,-0.002220545312392466,-4.763048075773373e-5,-4.629917145710085e-8,-0.002219986393474025,-4.758588464850228e-5,-4.626262271116031e-8,-0.002219493466999461,-4.745169161788492e-5,-4.612549476134362e-8,-0.0022190950899372997,-4.727349057060608e-5,-4.5937616176018814e-8,-0.0022187928437108866,-4.709946526084481e-5,-4.575211981967887e-8,-0.0022185676608473866,-4.6967148258508964e-5,-4.561086581454774e-8,-0.0022183897340214403,-4.6897877865561347e-5,-4.5538205382200175e-8,-0.002218227112864587,-4.689730372738356e-5,-4.55412865670691e-8,-0.0022180511931498754,-4.6958726789225835e-5,-4.5613476972552826e-8,-0.002217839478448058,-4.706684563405332e-5,-4.573834204511953e-8,-0.002217576767892167,-4.720088385532349e-5,-4.5893088802846886e-8,-0.0022172557391592737,-4.7337099909682e-5,-4.605143273264397e-8,-0.0022168773700565656,-4.74510906017821e-5,-4.6186255635813826e-8,-0.0022164511799183666,-4.752034046529439e-5,-4.627248139736567e-8,-0.002215994899699834,-4.7527295848164124e-5,-4.629045712510837e-8,-0.002215532947978386,-4.746279506796771e-5,-4.622968509992351e-8,-0.0022150932151455763,-4.732912349998839e-5,-4.60921625117704e-8,-0.0022147021652644183,-4.714160221841957e-5,-4.589418230010463e-8,-0.002214378969883185,-4.692762570971198e-5,-4.566542228593394e-8,-0.0022141300645164186,-4.672255695780222e-5,-4.544463178449744e-8,-0.0022139458137362612,-4.6562850713633075e-5,-4.52722393117001e-8,-0.00221380060967952,-4.64777591528412e-5,-4.518126383051442e-8,-0.0022136569173281237,-4.648149783906708e-5,-4.518852648490155e-8,-0.0022134729343128413,-4.65678409922886e-5,-4.5288350736913463e-8,-0.002213212730213477,-4.670898079689068e-5,-4.545089717714251e-8,-0.002212856797894262,-4.686004182357243e-5,-4.562684735817594e-8,-0.0022124099074522273,-4.6969555866714336e-5,-4.575890861717408e-8,-0.0022119026018825377,-4.699407898397332e-5,-4.579813949784263e-8,-0.0022113839010346006,-4.691226389953383e-5,-4.5719800103478644e-8,-0.0022109065487812933,-4.673212611187127e-5,-4.553166994833471e-8,-0.0022105106421530336,-4.6487513953655795e-5,-4.52703652159344e-8,-0.002210212924897253,-4.622545023671105e-5,-4.498750033432147e-8,-0.0022100056515220326,-4.599082657138239e-5,-4.4732842639896e-8,-0.0022098634270506174,-4.58151562763414e-5,-4.454182124988341e-8,-0.002209753114187779,-4.5712337116466916e-5,-4.4430643000829475e-8,-0.0022096423610802776,-4.568024895658921e-5,-4.439779129857697e-8,-0.0022095048224221024,-4.570516696428774e-5,-4.4428692789315846e-8,-0.0022093223580628898,-4.576643434562114e-5,-4.45008081941231e-8,-0.0022090854104389146,-4.5840198863217866e-5,-4.458782308690369e-8,-0.002208792684048753,-4.590211841998753e-5,-4.4662757683266604e-8,-0.002208450773065764,-4.592949249699432e-5,-4.470041059236587e-8,-0.0022080738356743857,-4.590342965342051e-5,-4.467976024450722e-8,-0.0022076829208446235,-4.581149511652582e-5,-4.45868263584567e-8,-0.0022073042325302127,-4.565081152181556e-5,-4.441802397944935e-8,-0.002206965605216999,-4.5430915166275075e-5,-4.418331181075295e-8,-0.0022066909305378285,-4.51749843519472e-5,-4.390764665471133e-8,-0.0022064933389565914,-4.49177448738443e-5,-4.3628860219709356e-8,-0.0022063692939843756,-4.469903269899099e-5,-4.339076928750656e-8,-0.002206296459441618,-4.455384182826084e-5,-4.323234070924075e-8,-0.002206237344690818,-4.450182876565845e-5,-4.317610450389361e-8,-0.002206148437110928,-4.454022855258338e-5,-4.322014158498983e-8,-0.0022059920678573607,-4.464314996140854e-5,-4.333696738013364e-8,-0.002205747078655037,-4.47677698551155e-5,-4.3480006469238615e-8,-0.0022054149560458707,-4.4865453971987394e-5,-4.359562672668298e-8,-0.0022050197778874484,-4.4894469310904836e-5,-4.363714563703815e-8,-0.002204602080350687,-4.483081733338681e-5,-4.357698088947024e-8,-0.0022042082496701748,-4.4674256976108435e-5,-4.34136267011671e-8,-0.002203878355963061,-4.444767502332483e-5,-4.317130450908105e-8,-0.002203636131830214,-4.418988337579432e-5,-4.289227455216706e-8,-0.0022034842767954172,-4.3944313012475434e-5,-4.2624468807672645e-8,-0.0022034062225738905,-4.374765150444576e-5,-4.240888990786396e-8,-0.0022033728732570334,-4.362214656382595e-5,-4.22709113039624e-8,-0.0022033511472193176,-4.357325021474196e-5,-4.2217405326860426e-8,-0.002203311259278957,-4.359184072021775e-5,-4.2238963148967383e-8,-0.002203231161403219,-4.365884984553331e-5,-4.2314893940482235e-8,-0.0022030981896355236,-4.37501815219e-5,-4.241868804084055e-8,-0.0022029088590102435,-4.3840715442687394e-5,-4.252255845087228e-8,-0.002202667855443351,-4.390713159132299e-5,-4.2600676139939876e-8,-0.0022023869397814195,-4.392991328620103e-5,-4.263141972686281e-8,-0.002202083971331653,-4.389514078579005e-5,-4.259929970541784e-8,-0.0022017817509400405,-4.3796571313615305e-5,-4.2497155377534966e-8,-0.002201506019114991,-4.363807773550661e-5,-4.232878802184368e-8,-0.002201281829056389,-4.3435865519477696e-5,-4.211145676298463e-8,-0.0022011278651603286,-4.321905966755535e-5,-4.187668985882363e-8,-0.002201049428771376,-4.3026635343832115e-5,-4.166711799444936e-8,-0.0022010326564595945,-4.2899212226683795e-5,-4.1527605488542144e-8,-0.0022010438605880736,-4.2866701401245325e-5,-4.149168981230639e-8,-0.002201036815050561,-4.2936311524374124e-5,-4.156826007306663e-8,-0.0022009668005209242,-4.3087189621691026e-5,-4.1735408849570453e-8,-0.002200805687849186,-4.3275540935940235e-5,-4.194576010041846e-8,-0.0022005511147673534,-4.344845205145683e-5,-4.214141087930924e-8,-0.0022002261579351164,-4.356010243054483e-5,-4.2271627325288035e-8,-0.0021998709471877614,-4.3583870411128616e-5,-4.230621553318354e-8,-0.0021995306329296136,-4.351713167905666e-5,-4.2241049980976345e-8,-0.002199244012936336,-4.337907539302264e-5,-4.209604395428574e-8,-0.0021990354974688524,-4.3203716761038325e-5,-4.190782352683438e-8,-0.0021989114882803953,-4.303068697336216e-5,-4.1719808660383815e-8,-0.0021988611198272934,-4.2896143039547516e-5,-4.157220587465444e-8,-0.002198860529686386,-4.28256834219112e-5,-4.149400848221767e-8,-0.0021988792290551736,-4.283052362484336e-5,-4.149848437908441e-8,-0.0021988868020958604,-4.290728558961128e-5,-4.158266825085552e-8,-0.002198858332636107,-4.30407374421635e-5,-4.1730227888167276e-8,-0.0021987776559889718,-4.320815607531913e-5,-4.191627227789234e-8,-0.0021986383828306827,-4.338394252488224e-5,-4.211255171468341e-8,-0.0021984432617016725,-4.354352417484422e-5,-4.229189520363366e-8,-0.0021982026851288055,-4.366616419637895e-5,-4.243138177200893e-8,-0.002197932987833362,-4.373685585806035e-5,-4.2514400830429825e-8,-0.0021976547873646343,-4.374776948947891e-5,-4.2532145447490745e-8,-0.0021973912163822202,-4.3699666494011446e-5,-4.248507449934088e-8,-0.002197165565964018,-4.360339553726757e-5,-4.238455982416569e-8,-0.0021969976661542537,-4.348102472191013e-5,-4.2254266098886135e-8,-0.0021968986060033643,-4.3365344851824027e-5,-4.212983081364773e-8,-0.002196864488916266,-4.329582521635688e-5,-4.205462845468875e-8,-0.00219687177106506,-4.330950164594914e-5,-4.206983298743024e-8,-0.0021968783763478264,-4.342774012978813e-5,-4.219976819299261e-8,-0.002196833942465688,-4.364410781791684e-5,-4.2438344229764724e-8,-0.0021966974953614438,-4.392134829558463e-5,-4.274547229078794e-8,-0.0021964542822063117,-4.420215324008212e-5,-4.305868573313644e-8,-0.002196122004749595,-4.4429633911088055e-5,-4.3315482134634745e-8,-0.002195743141195934,-4.456667055575025e-5,-4.3474511881865136e-8,-0.0021953688213683063,-4.460502832877005e-5,-4.352567029416044e-8,-0.0021950430896256865,-4.456276883725236e-5,-4.34875261233581e-8,-0.00219479325103675,-4.447456387533459e-5,-4.339707996174946e-8,-0.0021946271302473947,-4.4380500039176534e-5,-4.329781770575668e-8,-0.0021945353071144784,-4.43168589575551e-5,-4.322972528487527e-8,-0.0021944959560133495,-4.4310062852754164e-5,-4.322252177775724e-8,-0.002194480563537203,-4.4373660852183527e-5,-4.32920524953864e-8,-0.0021944595227321863,-4.450786864707432e-5,-4.343945466521452e-8,-0.0021944069506842096,-4.4701191951449525e-5,-4.36527150890374e-8,-0.0021943042180325003,-4.49335617950116e-5,-4.391005375463803e-8,-0.002194141906377647,-4.518027077748843e-5,-4.4184332052663467e-8,-0.0021939201779301136,-4.5416019876788224e-5,-4.444764386522221e-8,-0.002193647790767406,-4.561847347713716e-5,-4.4675332295713537e-8,-0.0021933402416158846,-4.5770915859345256e-5,-4.484892453692752e-8,-0.00219301755709073,-4.586399243241319e-5,-4.495797173896476e-8,-0.0021927019881854267,-4.589680376520009e-5,-4.50011490514789e-8,-0.002192415581968075,-4.587758677189852e-5,-4.498696354861374e-8,-0.002192177416627541,-4.582404354917942e-5,-4.493420418458068e-8,-0.0021920001056428633,-4.576302032079154e-5,-4.487180284605771e-8,-0.0021918853630141493,-4.5728554041258204e-5,-4.483694086387648e-8,-0.0021918193971149852,-4.575678790110061e-5,-4.486962210563871e-8,-0.0021917704552939657,-4.5876737000029106e-5,-4.500249145208053e-8,-0.0021916921793231213,-4.609805171784536e-5,-4.524715951212536e-8,-0.002191535722030832,-4.640085504307758e-5,-4.558273256144663e-8,-0.002191268622527711,-4.673572239421093e-5,-4.5955562378608346e-8,-0.0021908911531643392,-4.703860588774864e-5,-4.6295536372601254e-8,-0.0021904389342049485,-4.725525462149562e-5,-4.654284579454351e-8,-0.0021899688757674282,-4.7361335435271427e-5,-4.667003748796585e-8,-0.002189537217572945,-4.736738240175443e-5,-4.66875152635767e-8,-0.002189182178099598,-4.730905371796731e-5,-4.6633131046491385e-8,-0.0021889175315774733,-4.723144495265606e-5,-4.655539679656418e-8,-0.0021887354256682617,-4.717574835041439e-5,-4.6499184056199204e-8,-0.0021886135162408732,-4.717157179860376e-5,-4.649736314449432e-8,-0.0021885224957076004,-4.723435333698451e-5,-4.656775348526145e-8,-0.002188432196672109,-4.736596568910569e-5,-4.671343301511786e-8,-0.0021883159915355365,-4.755688007918747e-5,-4.69247944722332e-8,-0.002188153797184117,-4.7789060056815985e-5,-4.7182558125506696e-8,-0.0021879339216937933,-4.8039252490120275e-5,-4.7461392605544466e-8,-0.0021876538472704776,-4.828243590852618e-5,-4.773381750934838e-8,-0.002187319992989988,-4.849521912185547e-5,-4.7974061450627616e-8,-0.0021869464613131022,-4.865894024085986e-5,-4.816152081756237e-8,-0.0021865528992877276,-4.87620998684626e-5,-4.828339410490294e-8,-0.0021861618199906937,-4.8801891534619e-5,-4.833627312095251e-8,-0.0021857956854069802,-4.878486309271509e-5,-4.832680892763946e-8,-0.0021854738600616984,-4.8726762987137e-5,-4.8271587194920043e-8,-0.0021852094900030724,-4.86515128943926e-5,-4.8196176656966384e-8,-0.002185006334014698,-4.858914285791343e-5,-4.8133122371377696e-8,-0.0021848556724831675,-4.8572182159752406e-5,-4.8118210423692764e-8,-0.0021847340908449993,-4.862969584851901e-5,-4.818398533821574e-8,-0.0021846040333787834,-4.8778729210677626e-5,-4.835019658202303e-8,-0.0021844197065521583,-4.901477659668526e-5,-4.861300583671992e-8,-0.002184139908137586,-4.9305740268685153e-5,-4.89380239589084e-8,-0.002183745208710712,-4.959578164277363e-5,-4.926436436193073e-8,-0.0021832508778272947,-4.9822400093252296e-5,-4.9523381452495355e-8,-0.0021827054179990426,-4.9940812964766306e-5,-4.9665452368679164e-8,-0.002182172657790118,-4.9941786271621964e-5,-4.967953305482646e-8,-0.0021817074157041024,-4.985220421423567e-5,-4.959386599256073e-8,-0.002181338673865619,-4.9720142395811015e-5,-4.945991919619401e-8,-0.0021810666706533364,-4.9595568980319e-5,-4.933166537295909e-8,-0.0021808703783844,-4.951657478515571e-5,-4.92507832762818e-8,-0.0021807181941960203,-4.950399504420421e-5,-4.924073730655143e-8,-0.0021805769182982548,-4.956218364039945e-5,-4.9307324380953e-8,-0.0021804174795038798,-4.968259370492711e-5,-4.9442212976376634e-8,-0.0021802179110294567,-4.9847836933814006e-5,-4.9627109424267564e-8,-0.002179964670767143,-5.003531159657192e-5,-4.983764252872737e-8,-0.0021796530724134083,-5.0220385609024966e-5,-5.004692161411961e-8,-0.002179287108625143,-5.0379309817940806e-5,-5.0228863268068284e-8,-0.0021788786984716967,-5.049197671212808e-5,-5.0361312329529946e-8,-0.0021784462256297563,-5.054452595703909e-5,-5.04289060225776e-8,-0.0021780122025803136,-5.053151803276535e-5,-5.042538797210063e-8,-0.002177600157916581,-5.045722929573454e-5,-5.035495070136917e-8,-0.0021772310966522526,-5.0335776567875636e-5,-5.023237210708531e-8,-0.002176919902460922,-5.0189932859938544e-5,-5.0081843179902245e-8,-0.00217667207082299,-5.004853269807545e-5,-4.993436120974221e-8,-0.0021764812441906808,-4.994249777622941e-5,-4.982363597059191e-8,-0.0021763280507105863,-4.98996114264398e-5,-4.978052270196503e-8,-0.0021761809437515654,-4.9938185981473035e-5,-4.982603516805561e-8,-0.002176000149806595,-5.006025793450334e-5,-4.9963621703133264e-8,-0.002175745817326205,-5.024622884164902e-5,-5.0172910484799115e-8,-0.002175390157594791,-5.0454365055776456e-5,-5.0408841281164365e-8,-0.002174930337153652,-5.06288459355e-5,-5.061036106903455e-8,-0.002174395353711165,-5.071699644838109e-5,-5.0719362989473973e-8,-0.0021738401034926535,-5.0689679713245726e-5,-5.0703131233504954e-8,-0.0021733265233010663,-5.055363671187018e-5,-5.056794205359903e-8,-0.0021729011128648096,-5.034775070284775e-5,-5.035513085813307e-8,-0.0021725811078602674,-5.012585939427826e-5,-5.012259516349527e-8,-0.0021723547388293137,-4.993700515060601e-5,-4.992354472562844e-8,-0.0021721915116131806,-4.9812811310871116e-5,-4.979285902848771e-8,-0.0021720546749986677,-4.976445626435847e-5,-4.9743630077680485e-8,-0.002171910550591354,-4.978612573658363e-5,-4.977057674929707e-8,-0.0021717334408312126,-4.986073223887547e-5,-4.985593590639394e-8,-0.0021715072056702122,-4.9965197761627746e-5,-4.997503848354697e-8,-0.002171225123681876,-5.007442062639999e-5,-5.010064735726323e-8,-0.0021708891541935235,-5.0164162613396194e-5,-5.020624123144993e-8,-0.002170509011565236,-5.021337352113505e-5,-5.026869269970753e-8,-0.0021701010201165194,-5.020633834079381e-5,-5.027067408474085e-8,-0.002169686481978018,-5.013479660142251e-5,-5.02029350445516e-8,-0.0021692892001323122,-4.999980622314807e-5,-5.006625128102955e-8,-0.002168932022375522,-4.9812758371010945e-5,-4.9872480658075486e-8,-0.002168632724515974,-4.95948957641629e-5,-4.96440934171442e-8,-0.0021683999304833723,-4.9374905475583854e-5,-4.94117279890712e-8,-0.0021682299884622017,-4.9184517024424835e-5,-4.9209644023520306e-8,-0.0021681057683319905,-4.905256550499114e-5,-4.906946354132325e-8,-0.0021679981084059274,-4.899850303697785e-5,-4.901315398366616e-8,-0.0021678702118165865,-4.902660625417457e-5,-4.904654790153962e-8,-0.002167684855459021,-4.912228342329066e-5,-4.915496722137846e-8,-0.002167413675346147,-4.9252117611135175e-5,-4.930287422769272e-8,-0.0021670467328493287,-4.9369236645834006e-5,-4.9439453319941026e-8,-0.0021665991445428225,-4.942457392269512e-5,-4.951084310411176e-8,-0.0021661107109958544,-4.9382031214902844e-5,-4.9476821013151695e-8,-0.0021656359860024264,-4.923205966050717e-5,-4.932584479686643e-8,-0.0021652269664645565,-4.8996524294130615e-5,-4.908058662160895e-8,-0.0021649159058167063,-4.872105249104496e-5,-4.878982557957179e-8,-0.002164706655984438,-4.8458301673946887e-5,-4.8510450968611894e-8,-0.0021645777385677746,-4.825084661063017e-5,-4.8288973195301046e-8,-0.0021644934054848965,-4.812122783466715e-5,-4.81506379139743e-8,-0.0021644159176900527,-4.8071024900689184e-5,-4.809815557247862e-8,-0.0021643141929952214,-4.808594061576428e-5,-4.81168922637752e-8,-0.002164167674411756,-4.814266053659258e-5,-4.818208341414474e-8,-0.0021639667146355628,-4.8214709519840826e-5,-4.8265144796799985e-8,-0.0021637113015193915,-4.8276471408607926e-5,-4.833815104674628e-8,-0.0021634093935051597,-4.8305717497990586e-5,-4.8376751136334334e-8,-0.0021630753860666465,-4.8285336142651836e-5,-4.836216222000512e-8,-0.0021627286667312874,-4.8204863846761885e-5,-4.828283802361071e-8,-0.002162391861482956,-4.8062097732630306e-5,-4.813613888210156e-8,-0.0021620882679398825,-4.786457221389886e-5,-4.792984469758117e-8,-0.0021618381966684985,-4.763020148052184e-5,-4.768283959318655e-8,-0.0021616544721947527,-4.738615688544101e-5,-4.74240049864915e-8,-0.0021615380479013072,-4.716519867376527e-5,-4.718845234479752e-8,-0.002161475302072799,-4.699937039553237e-5,-4.701091284755469e-8,-0.0021614386393250546,-4.6912154688658707e-5,-4.691736184216948e-8,-0.002161391201800069,-4.6911292679655636e-5,-4.691717630397373e-8,-0.002161295075484384,-4.698475296081406e-5,-4.6998506562417824e-8,-0.002161121034202,-4.710162372082691e-5,-4.712886694957854e-8,-0.002160857131367918,-4.7218339997966116e-5,-4.726153824963162e-8,-0.0021605135166616594,-4.728911357216719e-5,-4.734669635449493e-8,-0.002160121614640899,-4.727811102218645e-5,-4.7344670899897986e-8,-0.002159727070259186,-4.71700332472349e-5,-4.72376676723403e-8,-0.002159377681774251,-4.697546153405605e-5,-4.703590761080976e-8,-0.0021591097858532486,-4.672829423936533e-5,-4.677517141941328e-8,-0.002158938074167603,-4.6475408602648845e-5,-4.650582202815821e-8,-0.002158852916009944,-4.626235480050213e-5,-4.627738514230599e-8,-0.002158825801635166,-4.612087538018337e-5,-4.612493766194266e-8,-0.002158819709787541,-4.606270599802699e-5,-4.606214934513943e-8,-0.002158799607308813,-4.608051665422589e-5,-4.6081993496327766e-8,-0.0021587395273344563,-4.615361327504223e-5,-4.616267371658823e-8,-0.002158625286072611,-4.625494118904886e-5,-4.627511694149892e-8,-0.002158453953359905,-4.635691120285143e-5,-4.638936013416345e-8,-0.002158231790057722,-4.643523375110354e-5,-4.647887273854775e-8,-0.002157971911670394,-4.647108233605865e-5,-4.652305041561149e-8,-0.0021576922476335206,-4.6452294121769896e-5,-4.650856384345036e-8,-0.0021574138014324212,-4.637428430326153e-5,-4.6430286990051256e-8,-0.0021571587957101316,-4.624105015071745e-5,-4.629227406134107e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json new file mode 100644 index 000000000..b4be24167 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":1000,"numberOfSamples":1000,"samples":[-0.002156948117797158,-4.6066106188504274e-5,-4.610870837852341e-8,-0.0021567976844821175,-4.587262928957953e-5,-4.590411215695837e-8,-0.002156713908245568,-4.569170874283684e-5,-4.5711626484184725e-8,-0.0021566893595621928,-4.555761003533914e-5,-4.5568113732113295e-8,-0.002156700743371349,-4.549983445555494e-5,-4.5505741530892555e-8,-0.0021567115663395065,-4.5533671389188886e-5,-4.5541790676334716e-8,-0.0021566804178876843,-4.5652915406612466e-5,-4.5670622833809834e-8,-0.002156572912636481,-4.582870678241587e-5,-4.58621255953264e-8,-0.0021563728566239655,-4.601620142754535e-5,-4.6068577295811786e-8,-0.0021560880133587525,-4.616711622705171e-5,-4.623794070121091e-8,-0.002155748222189647,-4.62434863816923e-5,-4.6328641438483505e-8,-0.002155396920669294,-4.622782396424562e-5,-4.632067580425877e-8,-0.00215507933393081,-4.612686483113469e-5,-4.621997607570151e-8,-0.0021548310204559523,-4.596856314722607e-5,-4.605556460572259e-8,-0.0021546697448800787,-4.579380803487395e-5,-4.5870948767990285e-8,-0.0021545925009090403,-4.564545026639773e-5,-4.571243253541094e-8,-0.00215457808447119,-4.555777214888923e-5,-4.561767662258407e-8,-0.002154594019620961,-4.554927142265337e-5,-4.560764640929833e-8,-0.002154605368940617,-4.562040509803385e-5,-4.568383677005805e-8,-0.002154582628502511,-4.575613804937631e-5,-4.583074108471704e-8,-0.0021545067042819666,-4.593156748733217e-5,-4.602179515117175e-8,-0.0021543704349080905,-4.6118291920214145e-5,-4.6226298143065905e-8,-0.002154177429419203,-4.628970757896518e-5,-4.64152905393417e-8,-0.0021539395320203554,-4.642448039496704e-5,-4.656547403677698e-8,-0.0021536740325304696,-4.6508347419083976e-5,-4.6661248300741016e-8,-0.002153401212638439,-4.6534852085000904e-5,-4.669548060691322e-8,-0.0021531422886805827,-4.650565883599465e-5,-4.666974436961425e-8,-0.0021529174221249937,-4.6430830311047396e-5,-4.6594529114611347e-8,-0.002152743281384537,-4.632899782380846e-5,-4.648943285318694e-8,-0.0021526297364554913,-4.622682327908873e-5,-4.6382720029024235e-8,-0.0021525757781952213,-4.615665217809799e-5,-4.6309007987320986e-8,-0.0021525657635618595,-4.615111791560906e-5,-4.630363581540198e-8,-0.0021525683606683156,-4.623433111379003e-5,-4.639321479077921e-8,-0.0021525411131787307,-4.641162808298889e-5,-4.658444896551646e-8,-0.00215244181360915,-4.6662730585749126e-5,-4.685650807739798e-8,-0.002152243559761613,-4.69438336830974e-5,-4.716299443903288e-8,-0.0021519463173773905,-4.720028130623982e-5,-4.744536946490242e-8,-0.0021515783140552483,-4.738487646555355e-5,-4.7652539659263205e-8,-0.0021511863195340735,-4.7473012892754915e-5,-4.775714558013054e-8,-0.002150820158632104,-4.74681988823182e-5,-4.7761682951372046e-8,-0.0021505186509381763,-4.739759003524929e-5,-4.769404722497823e-8,-0.002150301454146949,-4.7301602034095665e-5,-4.75967746928141e-8,-0.002150167504080223,-4.722237577724007e-5,-4.751493736774092e-8,-0.0021500984653760494,-4.7194327180898005e-5,-4.7486029043007825e-8,-0.002150065007643072,-4.7238211715320985e-5,-4.753336591146179e-8,-0.002150034011848315,-4.735890504159874e-5,-4.7663329284699034e-8,-0.0021499752813515308,-4.754650144645341e-5,-4.7866189097583804e-8,-0.0021498666614940885,-4.777999559892799e-5,-4.811985529955003e-8,-0.002149696844734374,-4.8032435641353954e-5,-4.8395408706038154e-8,-0.0021494657462589853,-4.8276239272205825e-5,-4.866295866283441e-8,-0.0021491829316347584,-4.848761715432387e-5,-4.8896590036391526e-8,-0.002148864888882999,-4.864954755615883e-5,-4.9077698538029214e-8,-0.002148531969661492,-4.875324012053347e-5,-4.9196590948451486e-8,-0.00214820559302335,-4.879845385417849e-5,-4.925275811633043e-8,-0.0021479058723801398,-4.8793211725869386e-5,-4.9254476683867235e-8,-0.0021476494691693242,-4.875326148772683e-5,-4.921820529983365e-8,-0.0021474473356039884,-4.8701280224926454e-5,-4.916782927985692e-8,-0.002147302025734625,-4.8665427348109735e-5,-4.913330991550414e-8,-0.0021472046146883317,-4.867636961659977e-5,-4.914769826441347e-8,-0.0021471322071707254,-4.8761685544412094e-5,-4.924121019381598e-8,-0.0021470482597085038,-4.893732048233069e-5,-4.943192954490526e-8,-0.002146908584499707,-4.91979967179343e-5,-4.97152190263401E-08,-0.002146674363316176,-4.9511646656850674e-5,-5.0057427768996096e-8,-0.002146328667920062,-4.982422622000098e-5,-5.0400872447169334e-8,-0.0021458875359486144,-5.007688042712524e-5,-5.0682229364308553e-8,-0.002145397011314185,-5.0228379818507437e-5,-5.0856638807463407e-8,-0.0021449161791735768,-5.0270217445764416e-5,-5.091394422090286e-8,-0.002144495917953705,-5.0226434247242504e-5,-5.087865414824122e-8,-0.002144164522903363,-5.01408709895491e-5,-5.079660476566392e-8,-0.002143924532470479,-5.0060878640441164e-5,-5.0717902245852795e-8,-0.002143757959315198,-5.002483607513269e-5,-5.068379162791456e-8,-0.002143634896737234,-5.005585115815337e-5,-5.071984838493151e-8,-0.002143521842854634,-5.0160650756850324e-5,-5.083446444779818e-8,-0.002143388120717485,-5.0331651201626866e-5,-5.102064773664288e-8,-0.002143210184954386,-5.055054311417113e-5,-5.125954074459971e-8,-0.002142974117514982,-5.079251129394976e-5,-5.152482507010141e-8,-0.0021426765074378826,-5.103064468172294e-5,-5.178753018681961e-8,-0.0021423238391256607,-5.124006797853224e-5,-5.202065134245872e-8,-0.002141930651324379,-5.140134181465216e-5,-5.220297342970296e-8,-0.0021415168281439588,-5.150282446702924e-5,-5.2321688446799315e-8,-0.0021411044645297406,-5.154180999406271e-5,-5.237359158139016e-8,-0.0021407148054202576,-5.152449499997826e-5,-5.236496558245039e-8,-0.0021403655678020684,-5.146510002939213e-5,-5.231059043138093e-8,-0.002140068652238457,-5.138444270295482e-5,-5.2232268635753575e-8,-0.002139828133292629,-5.1308028225241545e-5,-5.2156950212399334e-8,-0.002139638422673149,-5.126350568803761e-5,-5.2114230564000163e-8,-0.00213948268691379,-5.1277018333799685e-5,-5.213259191254482e-8,-0.002139332290822501,-5.1367795817320406e-5,-5.223357239670482e-8,-0.0021391489883805194,-5.154098912009453e-5,-5.242383088390882e-8,-0.002138891970010422,-5.1780522562900146e-5,-5.268710604455327e-8,-0.0021385305995390066,-5.20462253084977e-5,-5.2980835455315765e-8,-0.002138059594008942,-5.2280784568316565e-5,-5.324353111816718e-8,-0.002137508049281609,-5.242840674319948e-5,-5.341489927661907e-8,-0.0021369333564798328,-5.245794992558174e-5,-5.3460757754233854e-8,-0.0021364000567887635,-5.237659280739311e-5,-5.338772944526506e-8,-0.0021359554177806913,-5.222499524366457e-5,-5.323816602452792e-8,-0.0021356157132549174,-5.205829004263862e-5,-5.307010206523827e-8,-0.002135367798385966,-5.1925718630202697e-5,-5.293584770307225e-8,-0.0021351802309842655,-5.185853393324863e-5,-5.2869237987871783e-8,-0.002135015709675917,-5.186747116928778e-5,-5.288277568269625e-8,-0.0021348401734937695,-5.194616985504687e-5,-5.2970891829753475e-8,-0.002134627758060293,-5.2076667370690687e-5,-5.311539888620349e-8,-0.002134362664862016,-5.22346501846903e-5,-5.329085053332862e-8,-0.0021340393185033547,-5.2393733389077045e-5,-5.3469096840437146e-8,-0.002133661644592146,-5.252894430972528e-5,-5.362316413179043e-8,-0.0021332416919183183,-5.2619642849676823e-5,-5.373058405670703e-8,-0.002132797639105352,-5.265187989316952e-5,-5.377605953151373e-8,-0.00213235123299873,-5.262008658853691e-5,-5.3753301407695094e-8,-0.0021319247547086106,-5.252787431710746e-5,-5.366582385721862e-8,-0.002131537812166341,-5.2387711692295135e-5,-5.3526527141880856e-8,-0.002131204386649835,-5.221948578729788e-5,-5.335616249926751e-8,-0.002130930436840616,-5.204813499564776e-5,-5.3180922715721016e-8,-0.0021307122475242276,-5.190051666082856e-5,-5.3029303636494595e-8,-0.002130535691096194,-5.1801663288743484e-5,-5.2928303953712826e-8,-0.002130376577415983,-5.1770519389418736e-5,-5.289893815879023e-8,-0.0021302025383327134,-5.1815158911048855e-5,-5.2950976313991277e-8,-0.002129977378036466,-5.192792796725971e-5,-5.3077407334747964E-08,-0.0021296688087945386,-5.208214555192072e-5,-5.325050928388623e-8,-0.0021292592998348823,-5.2233329336141494e-5,-5.342289782969275e-8,-0.002128757014872047,-5.2328224363975537e-5,-5.353718707965699e-8,-0.0021282003685288873,-5.232211388239153e-5,-5.354471701182651e-8,-0.0021276495587692528,-5.219820202071707e-5,-5.342650421322242e-8,-0.002127165444777017,-5.1977374748586926e-5,-5.32037987462269e-8,-0.002126786408919701,-5.1710339300552144e-5,-5.292980367635397e-8,-0.0021265166937946525,-5.145633618560855e-5,-5.2667177244896215e-8,-0.00212633105580082,-5.126167160748416e-5,-5.246538067689548e-8,-0.002126189328271234,-5.114869660600918e-5,-5.234897812409529e-8,-0.0021260510373621883,-5.111638783278097e-5,-5.231801132895357e-8,-0.002125884513579751,-5.114733030685652e-5,-5.235503053809026e-8,-0.0021256702248682435,-5.121572331910457e-5,-5.243327665430199e-8,-0.002125400455812279,-5.1293642979333694e-5,-5.252321996716058e-8,-0.0021250775059338096,-5.1355096043385815e-5,-5.259696904862907e-8,-0.0021247116610059085,-5.1378537621995244e-5,-5.2631164024147827e-8,-0.0021243192352671083,-5.134861185069034e-5,-5.2609026267915535e-8,-0.002123920533294502,-5.125749504161394e-5,-5.252187717870801e-8,-0.002123537513917045,-5.1105899487825944e-5,-5.237017732952232e-8,-0.0021231909824004935,-5.0903510148269925e-5,-5.21639052525058e-8,-0.002122897386272381,-5.066840160744641e-5,-5.192188374186477e-8,-0.0021226656718111524,-5.042508933637542e-5,-5.166975788992617e-8,-0.002122494839571998,-5.0201204525872756e-5,-5.143662126873064e-8,-0.0021223728064571974,-5.002307532138799e-5,-5.125052539179263e-8,-0.002122277063662247,-4.9910792187481684e-5,-5.1133373559448276e-8,-0.002122177350465051,-4.9873571668336e-5,-5.1095958839310544e-8,-0.002122040271899325,-4.990621895883855e-5,-5.113395766297128e-8,-0.002121835670220407,-4.998749569171908e-5,-5.122580454826739e-8,-0.002121544289358671,-5.008151805352115e-5,-5.133380683137773e-8,-0.0021211653940700756,-5.0143498952941705e-5,-5.141007127166793e-8,-0.0021207216447338448,-5.0130441492102875e-5,-5.1407976149345016e-8,-0.002120257496141451,-5.001520456175847e-5,-5.1297441102601807e-8,-0.002119828397979043,-4.9798850489622e-5,-5.107840402680578e-8,-0.0021194826754195456,-4.9513892869127156e-5,-5.078451782729881e-8,-0.002119244086201465,-4.921409445932999e-5,-5.0472444375840066e-8,-0.0021191046402436534,-4.8954748273117716e-5,-5.0200988226733736e-8,-0.002119031138708923,-4.8773978554723135e-5,-5.001124485406591e-8,-0.002118980101862301,-4.8684026206295004e-5,-4.991720030835334e-8,-0.00211891220827597,-4.867379334879302e-5,-4.990812813538284e-8,-0.0021188006530865576,-4.8717674424215837e-5,-4.9957631878584515e-8,-0.0021186330805224884,-4.878489183979079e-5,-5.003335885442783e-8,-0.002118409606923484,-4.8846210672363946e-5,-5.010414572430475e-8,-0.0021181395569648243,-4.887764161794287e-5,-5.0144131459874775e-8,-0.002117838428140765,-4.8862089859800686e-5,-5.013472762586503e-8,-0.0021175254797301053,-4.87900395563563e-5,-5.006548391793509e-8,-0.0021172217039225403,-4.865995177280172e-5,-4.9934517707598465e-8,-0.0021169477453683006,-4.8478584561881674e-5,-4.9748766630150475e-8,-0.002116721392799632,-4.8261007717598124e-5,-4.952391111144196e-8,-0.00211655455107997,-4.802973321358578e-5,-4.928344153787555e-8,-0.002116450096966629,-4.781233066898358e-5,-4.9056238260434893e-8,-0.0021163995074253497,-4.763723300556185e-5,-4.88723175000772e-8,-0.00211638238176434,-4.752806896211847e-5,-4.8757005535652654e-8,-0.0021163687749273766,-4.749765415455074e-5,-4.872463016284184e-8,-0.0021163245129189124,-4.75433801208055e-5,-4.8773504423959966e-8,-0.0021162186131261293,-4.7645689733550204e-5,-4.888400543678275e-8,-0.0021160311239636605,-4.7770598620135224e-5,-4.902087037517744e-8,-0.0021157594156345004,-4.787624496808221e-5,-4.913984622203423e-8,-0.0021154210653734945,-4.792249771712643e-5,-4.919779498322852e-8,-0.0021150518661444766,-4.788171611098116e-5,-4.916427157162084e-8,-0.0021146983037815758,-4.774784549571525e-5,-4.903151581702451e-8,-0.0021144054214774677,-4.754043449876239e-5,-4.881909664190108e-8,-0.002114203335655032,-4.730071511555959e-5,-4.857004998709531e-8,-0.0021140976257717674,-4.7079605315396366e-5,-4.8338297363515245e-8,-0.002114068243449401,-4.6921741162987395e-5,-4.817168920274723e-8,-0.0021140776517754515,-4.685238849929127e-5,-4.8097948508555413e-8,-0.002114084019446718,-4.6872596236596724e-5,-4.81192411375788e-8,-0.002114053227237637,-4.6963141965845496e-5,-4.821604606694751e-8,-0.002113965448400426,-4.7093502898033734e-5,-4.8356449951288814e-8,-0.0021138158726727416,-4.7231060835115885e-5,-4.8505867927921634e-8,-0.0021136117434029157,-4.73475915439524e-5,-4.863405741638106e-8,-0.002113368243224607,-4.742253450655109e-5,-4.8718797175518944e-8,-0.0021131048107557887,-4.7443958322278066e-5,-4.874708212682086e-8,-0.002112842390293642,-4.740840058984932e-5,-4.87150037508711e-8,-0.002112601402461571,-4.732044050097083e-5,-4.8627229494421786e-8,-0.002112399898104981,-4.71923458598116e-5,-4.84965171325286e-8,-0.0021122513870208202,-4.7043586695278016e-5,-4.834314259144425e-8,-0.002112162155506463,-4.689959768605062e-5,-4.8193650389836864e-8,-0.0021121284044120486,-4.678902511400128e-5,-4.807810872069021e-8,-0.002112134192586928,-4.6738909755118304e-5,-4.802520783954363e-8,-0.002112151736011111,-4.676805674809973e-5,-4.8055358790222776e-8,-0.0021121455008559073,-4.68802207502431e-5,-4.8173435647070684e-8,-0.002112080244306887,-4.705993268071947e-5,-4.8364140938563196e-8,-0.0021119310664213338,-4.727368018370931e-5,-4.8592931302070324e-8,-0.002111691895111901,-4.747730114612249e-5,-4.881352739322071e-8,-0.0021113788749667064,-4.7627699607907756e-5,-4.898012188224292e-8,-0.00211102704677318,-4.7694954771803144e-5,-4.9060201272908396e-8,-0.002110681352249585,-4.767075494556609e-5,-4.90436883734857e-8,-0.002110384874318121,-4.7570663804349934e-5,-4.894570849816082e-8,-0.0021101677401916797,-4.7429813825341904e-5,-4.8802430880724736e-8,-0.002110039696581039,-4.729335730533683e-5,-4.866125590022362e-8,-0.0021099884072854364,-4.7204358850854926e-5,-4.8568084600913465e-8,-0.002109983945387274,-4.7192708949043166e-5,-4.855543459993911e-8,-0.0021099879117350232,-4.726846620998511e-5,-4.863507382826351e-8,-0.0021099639576379094,-4.7421428985429237e-5,-4.879720662545984e-8,-0.0021098861854816123,-4.7626298326830003e-5,-4.901567331796005e-8,-0.002109743186109511,-4.7850789510772105e-5,-4.9256450069474826e-8,-0.002109537586825893,-4.8063526347891254e-5,-4.948609768053289e-8,-0.002109282655958739,-4.8239580975826655e-5,-4.967782243823404e-8,-0.0021089979409871034,-4.8363148343395243e-5,-4.981449771751667e-8,-0.002108705341277884,-4.8427999229028034e-5,-4.988923858233261e-8,-0.002108426170116319,-4.843672757019664e-5,-4.990457813568429e-8,-0.0021081790939703336,-4.8399655340769195e-5,-4.987120855545762e-8,-0.002107978462340765,-4.8333815691984267e-5,-4.98068240380907e-8,-0.0021078325085235445,-4.8261883157006745e-5,-4.973500790876879e-8,-0.002107741182028866,-4.8210487087105704e-5,-4.968358842430621e-8,-0.0021076938773007476,-4.820714020935879e-5,-4.9681591379790985e-8,-0.0021076680383246907,-4.827513281127266e-5,-4.975399170959863e-8,-0.002107630376401887,-4.842654419791798e-5,-4.991432609044488e-8,-0.0021075425159545343,-4.865523284848443e-5,-5.015711147352186e-8,-0.0021073713272879244,-4.893349928726431e-5,-5.045403692151433e-8,-0.002107101054149504,-4.921621165090497e-5,-5.075804312180078e-8,-0.00210674158544731,-4.9453141274911964e-5,-5.1016160495136004e-8,-0.0021063277292051657,-4.960526660686225e-5,-5.1186657637328415e-8,-0.0021059088236712936,-4.965767137535703e-5,-5.1252729209342855e-8,-0.002105533355710234,-4.962333434846008e-5,-5.122672710022117e-8,-0.002105235298687669,-4.953725574759237e-5,-5.114433301511661e-8,-0.0021050267301768173,-4.9444765358431426e-5,-5.105262008384059e-8,-0.0021048975954977385,-4.938895653500951e-5,-5.099704564916817e-8,-0.0021048209457205044,-4.940083264676395e-5,-5.1011036159970786e-8,-0.0021047611320736954,-4.9493878141675046e-5,-5.110997819652719e-8,-0.0021046825545899023,-4.9663315734863536e-5,-5.1290024568352304e-8,-0.002104557033149279,-4.98893453161492e-5,-5.1531150434198844e-8,-0.0021043684802190066,-5.0143026698940785e-5,-5.1803180748147716e-8,-0.002104114312419352,-5.0393089164750924e-5,-5.2073008844431506e-8,-0.0021038039107087792,-5.0611974369170696e-5,-5.2311154609061635e-8,-0.002103455142864527,-5.077997300985246e-5,-5.249634587215205e-8,-0.0021030901973043527,-5.088713159052434e-5,-5.261767665298347e-8,-0.002102731754757487,-5.093327497583167e-5,-5.2674658453290784e-8,-0.002102400038249737,-5.0926853473763044e-5,-5.267593710089334e-8,-0.002102110741705476,-5.088333895282607e-5,-5.2637516149960456e-8,-0.002101873489403106,-5.08235740242651e-5,-5.2580999673824274e-8,-0.0021016904381226816,-5.07720385838116e-5,-5.2531862498246874e-8,-0.0021015548084289933,-5.0754644122074386e-5,-5.2517309070279127e-8,-0.002101449525764805,-5.079541727592946e-5,-5.256294807274047e-8,-0.002101346863688587,-5.091147619245311e-5,-5.268753767417356e-8,-0.0021012107625705593,-5.110647842638639e-5,-5.2895930277749896e-8,-0.0021010036231113496,-5.1364431323432054e-5,-5.317225671965255e-8,-0.0021006978474307205,-5.164780092740599e-5,-5.347763770609452e-8,-0.0021002887607210427,-5.1904283966139336e-5,-5.3757151991875933e-8,-0.0020998017811831972,-5.2082983385010847e-5,-5.3956856249473105e-8,-0.002099287305051419,-5.2153786677272464e-5,-5.404424493360183e-8,-0.002098803714303415,-5.211938886395136e-5,-5.402099729340937e-8,-0.0020983970909576486,-5.201310176200273e-5,-5.392087032373497e-8,-0.0020980879471518285,-5.1884788106360025e-5,-5.379525398388802e-8,-0.0020978694594535633,-5.178355560077695e-5,-5.3695353664609535e-8,-0.0020977146033212875,-5.1744897802943776e-5,-5.3658858151211176e-8,-0.0020975867206337855,-5.17850538647107e-5,-5.370387698001164e-8,-0.002097449252174256,-5.1901448471996434e-5,-5.382901325735156e-8,-0.0020972727165282454,-5.2076755488728516e-5,-5.4017187239652266e-8,-0.002097038679265766,-5.228448053746355e-5,-5.424119501315798e-8,-0.002096741115512614,-5.2494770950254756e-5,-5.446974146690214e-8,-0.0020963856479537316,-5.267968073580639e-5,-5.467310941300608e-8,-0.0020959871806476727,-5.281730553664611e-5,-5.482773870037851e-8,-0.002095566547851664,-5.2894425618154075e-5,-5.49192091763326e-8,-0.0020951467983804607,-5.2907580747666326e-5,-5.494346629557186e-8,-0.0020947496865052926,-5.2862703551995284e-5,-5.490641407062349e-8,-0.00209439283463895,-5.277366064911636e-5,-5.482230500560337e-8,-0.002094087719578533,-5.266022168051224e-5,-5.471156076175677e-8,-0.0020938383034884785,-5.2545818362760925e-5,-5.459846822588298e-8,-0.00209364009071615,-5.245512424241938e-5,-5.4508786421523974e-8,-0.002093479524987209,-5.241128303972207e-5,-5.4467015989831044e-8,-0.002093333866675805,-5.243244496307399e-5,-5.449285675295966e-8,-0.002093172238328941,-5.25272454837531e-5,-5.459637339444828e-8,-0.002092959192295158,-5.2689536740216397e-5,-5.47721861308031e-8,-0.002092662162437497,-5.289419192472436e-5,-5.4994709404817255e-8,-0.002092262731012093,-5.3097515495686634e-5,-5.5218327291160634e-8,-0.0020917682925749906,-5.3246152076680836e-5,-5.5386719323868286e-8,-0.0020912168729252238,-5.32948950916572e-5,-5.5451705931345774e-8,-0.00209066831104737,-5.322638039161152e-5,-5.539407826225248e-8,-0.002090182976448214,-5.306061034027742e-5,-5.523368866112795e-8,-0.0020897991792229852,-5.2847036022818596e-5,-5.502129784760488e-8,-0.0020895220312050072,-5.264403046194828e-5,-5.481735951820511e-8,-0.002089327651578887,-5.2498344531242285e-5,-5.4670817165440435e-8,-0.002089176601984936,-5.243402752975581e-5,-5.46075905285881e-8,-0.002089027832962104,-5.2451886161662154e-5,-5.462976227025945e-8,-0.002088848145979607,-5.253524957931374e-5,-5.4721159636310425e-8,-0.002088616519163286,-5.265749417095675e-5,-5.485481113266398e-8,-0.0020883247601802828,-5.278870213189013e-5,-5.499971074275159e-8,-0.0020879761659435914,-5.290068935685728e-5,-5.512613172786507e-8,-0.002087583221816599,-5.297058683962383e-5,-5.520959628157752e-8,-0.002087164777385674,-5.29832296796577e-5,-5.5233626895864976e-8,-0.002086742950109644,-5.2932455223265686e-5,-5.519126877302781e-8,-0.002086339956581604,-5.282138748957507e-5,-5.508542075950947e-8,-0.0020859750527439137,-5.266171847400609e-5,-5.492801945295256e-8,-0.0020856618891764334,-5.247200185689632e-5,-5.4738177469182e-8,-0.0020854066000901466,-5.227520696881749e-5,-5.453962120190033e-8,-0.0020852067040709943,-5.209587655834655e-5,-5.4357819901512334e-8,-0.002085050761531667,-5.19570440334916e-5,-5.421693100956444e-8,-0.0020849188250382576,-5.187695475340274e-5,-5.4136513752244604e-8,-0.0020847838283227895,-5.1865633386018315e-5,-5.4127943797766366e-8,-0.002084614302700284,-5.192134366393279e-5,-5.4190517439071605e-8,-0.002084379177216386,-5.202743147570318e-5,-5.4307801867957737e-8,-0.0020840552632532838,-5.2151132764179095e-5,-5.444603412637725e-8,-0.0020836367229090016,-5.2246983387897786e-5,-5.4557508305702125e-8,-0.0020831432642481086,-5.226727446908682e-5,-5.45915998704627e-8,-0.00208262110484632,-5.217892051956154e-5,-5.451267651801983e-8,-0.0020821314693878165,-5.1979995231158984e-5,-5.4317639028435655e-8,-0.002081728580818981,-5.170500269403149e-5,-5.404156653193917e-8,-0.0020814384597434145,-5.1412711832119855e-5,-5.374512512192592e-8,-0.0020812512548079114,-5.1162601970100065e-5,-5.349017232141276e-8,-0.0020811301739922143,-5.0993981576040526e-5,-5.331814200443522e-8,-0.0020810288964036128,-5.091778800135395e-5,-5.324144113486929e-8,-0.0020809068797548306,-5.0920708246115815e-5,-5.324742058440525e-8,-0.002080737412895719,-5.0975044648063965e-5,-5.330822538299496e-8,-0.0020805090765344805,-5.104836915559959e-5,-5.339054776415609e-8,-0.0020802235105041346,-5.111032019083676e-5,-5.3462654102947513e-8,-0.0020798920087048986,-5.113645247824958e-5,-5.349856905196274e-8,-0.0020795322310856322,-5.111013067736273e-5,-5.3480319452971573e-8,-0.002079165270330489,-5.102337145825212e-5,-5.339903379738613e-8,-0.002078812929807196,-5.0877027322918444e-5,-5.325522084868336e-8,-0.0020784951021789507,-5.0680399754512935e-5,-5.3058323468374344e-8,-0.0020782272019827155,-5.0450194248135284e-5,-5.2825530483115977E-08,-0.002078017796904138,-5.020860124030872e-5,-5.257971627504764e-8,-0.002077866846658982,-4.998045829403398e-5,-5.234652763334412e-8,-0.002077764949227266,-4.9789769777337244e-5,-5.215090293742938e-8,-0.002077693796213007,-4.96559598259346e-5,-5.201333928555749e-8,-0.002077627945643406,-4.959024266445353e-5,-5.1946199184189877e-8,-0.0020775379573369774,-4.959258117963107e-5,-5.1950458272378425e-8,-0.002077394847759163,-4.964972754567608e-5,-5.20133946027985e-8,-0.0020771757956997636,-4.973494898228385e-5,-5.2107934240242226e-8,-0.0020768707597667575,-4.981047198397003e-5,-5.21948928946358e-8,-0.002076488719453658,-4.9833950263944744e-5,-5.222962698296795e-8,-0.0020760607752435137,-4.976947981592237e-5,-5.217368787144459e-8,-0.0020756363255762,-4.960119521007246e-5,-5.2009327355383566e-8,-0.0020752699804712604,-4.934370262592132e-5,-5.175068444401802e-8,-0.002075002258206543,-4.904167747827994e-5,-5.144355599514386e-8,-0.002074843505137487,-4.875527236421879e-5,-5.115030112001243e-8,-0.002074770885112081,-4.85375576824606e-5,-5.092642497342114e-8,-0.0020747400769557814,-4.841647775431193e-5,-5.080178737543361e-8,-0.00207470360549399,-4.839002227744564e-5,-5.077538800998163e-8,-0.0020746254988324455,-4.843356303392952e-5,-5.082265162308837e-8,-0.002074487411936633,-4.8512066229528486e-5,-5.090778965666528e-8,-0.002074287589063454,-4.8590652566310444e-5,-5.099462507142112e-8,-0.0020740364229402913,-4.864094211986411e-5,-5.105327235216716e-8,-0.0020737516117730406,-4.864364377231825e-5,-5.1063071939584795e-8,-0.0020734542779023923,-4.858893563414716e-5,-5.101324060777878e-8,-0.0020731661303226793,-4.847596434842968e-5,-5.090249495797251e-8,-0.0020729072209830705,-4.831209437291138e-5,-5.073826475982897e-8,-0.002072693884949742,-4.81119863715466e-5,-5.053563043378728e-8,-0.0020725366574624164,-4.789627336170478e-5,-5.031584456326077e-8,-0.002072438244777095,-4.76894406001386e-5,-5.0104114550785046e-8,-0.0020723920062757552,-4.751664405123388e-5,-4.992640119935618e-8,-0.002072381620741844,-4.7399626029792626e-5,-4.980535122260885e-8,-0.002072382493146707,-4.735231857382114e-5,-4.975587690759763e-8,-0.002072365126038206,-4.737703392101369e-5,-4.9781211913094104e-8,-0.0020723002115636837,-4.746229500170882e-5,-4.987048608611002e-8,-0.002072164686144449,-4.758318793891755e-5,-4.9998772052492005e-8,-0.0020719476479477516,-4.7704672733856255e-5,-5.0130175273880784e-8,-0.0020716548762382742,-4.778785681354576e-5,-5.0224127220180263E-08,-0.002071310506859259,-4.779875995902617e-5,-5.0244500497020163e-8,-0.0020709542977483263,-4.7718213318121765e-5,-5.017014103512715e-8,-0.002070633392768585,-4.755018007788747e-5,-5.0003890279004845e-8,-0.0020703892518739446,-4.7324560969728754e-5,-4.9775852540256276e-8,-0.002070243556064142,-4.709095642120351e-5,-4.953713265926498e-8,-0.002070189582318923,-4.690347790577672e-5,-4.93441179578025e-8,-0.002070194443298303,-4.6802416516879245e-5,-4.9239360290252976e-8,-0.002070211781957937,-4.680166452708117e-5,-4.923831183218621e-8,-0.0020701982102484394,-4.688757653287808e-5,-4.9327848095478144e-8,-0.0020701254502533,-4.702784331254064e-5,-4.947517696147768e-8,-0.002069984310820259,-4.718405080239909e-5,-4.9640685225447364e-8,-0.002069781881963152,-4.732196406548829e-5,-4.978861540585559e-8,-0.002069535727065262,-4.741708010271714e-5,-4.989300757237092e-8,-0.0020692682062174064,-4.7456088345065395e-5,-4.993946266170168e-8,-0.0020690022999483347,-4.743604483466135e-5,-4.9924473337753236e-8,-0.0020687589325963695,-4.736278778201662e-5,-4.9853830021207306e-8,-0.0020685552095647745,-4.724938104372905e-5,-4.9740931313843226e-8,-0.0020684029471759965,-4.7114721697835956e-5,-4.9605222607596616e-8,-0.002068307113632894,-4.698198596032385e-5,-4.9470525465095644e-8,-0.002068264210735056,-4.6876359384872586e-5,-4.936274057243991e-8,-0.0020682611085878133,-4.682161851644506e-5,-4.930645763105391e-8,-0.002068275207205279,-4.683559588593652e-5,-4.932042167102954e-8,-0.002068276840995726,-4.692525626768796e-5,-4.941250393336782e-8,-0.0020682343681795467,-4.708286526062035e-5,-4.9575641749325084e-8,-0.002068121336074826,-4.728509807584928e-5,-4.9786665145860586e-8,-0.002067923897843404,-4.7496385865671217e-5,-5.0009436305109905e-8,-0.0020676460373650566,-4.7676378285878495e-5,-5.0202301586995866e-8,-0.0020673105644500745,-4.77898332491647e-5,-5.032822287464823e-8,-0.002066955050994269,-4.781625324925658e-5,-5.036486940750825e-8,-0.0020666233471462645,-4.7756464778773514e-5,-5.0311739548860085e-8,-0.002066354580310086,-4.763398187934115e-5,-5.0191974764700023E-08,-0.0020661724200392493,-4.7490128745401975e-5,-5.004766473653001e-8,-0.0020660778693884388,-4.737345115377653e-5,-4.9929071504630356e-8,-0.002066048524221078,-4.732603099287772e-5,-4.9880421809209325e-8,-0.0020660453797246812,-4.737129330364156e-5,-4.992704483799921e-8,-0.0020660250285791494,-4.7508085193365105e-5,-5.006889477610717e-8,-0.0020659523841825966,-4.7713206060515434e-5,-5.028283650859611e-8,-0.0020658090029066624,-4.795053885650078e-5,-5.053188956294247e-8,-0.002065594771846483,-4.818222569886375e-5,-5.0776768516938594e-8,-0.002065324117375244,-4.837752105633615e-5,-5.0985184294608874e-8,-0.002065019767433622,-4.851728875182688e-5,-5.1136723525022014e-8,-0.0020647068446275245,-4.8594594783670716e-5,-5.1223668798557995e-8,-0.0020644086381638085,-4.861304972472082e-5,-5.124938607964203e-8,-0.002064144097864555,-4.8584434676873395e-5,-5.122584536957933e-8,-0.002063926468637026,-4.852647936788248e-5,-5.1171225339119544e-8,-0.0020637623786124806,-4.846100605905334e-5,-5.11079143446867e-8,-0.0020636508879348973,-4.841213269692522e-5,-5.106066445180714e-8,-0.002063582435238546,-4.8403934845334516e-5,-5.1054290024565175e-8,-0.002063538168965467,-4.8457018960260466e-5,-5.1110281108115146e-8,-0.002063490642966396,-4.858388401565267e-5,-5.12421042751145e-8,-0.002063407082221286,-4.8783799285689586e-5,-5.144985988199522e-8,-0.0020632559577338995,-4.9039126710606216e-5,-5.1716281192541857e-8,-0.0020630160427410785,-4.931581340272001e-5,-5.200696102828744e-8,-0.002062684941410063,-4.95699691789468e-5,-5.2276889335559116e-8,-0.0020622829172062315,-4.9759696099219955e-5,-5.2482526161209284e-8,-0.0020618491854511264,-4.9858113731482825e-5,-5.259526114699326e-8,-0.0020614313126430684,-4.98622055714111e-5,-5.261072103110058e-8,-0.0020610717124268244,-4.979388598943105e-5,-5.255018976438976e-8,-0.00206079622917913,-4.9693307260769264e-5,-5.2454091838812215e-8,-0.002060608259750969,-4.960738794563041e-5,-5.2370482519734586e-8,-0.0020604893759882652,-4.957747244117635e-5,-5.234243575739418e-8,-0.0020604054583355405,-4.962944279368117e-5,-5.239769021503708e-8,-0.00206031622426224,-4.976850689463904e-5,-5.254290844467591e-8,-0.0020601854537221713,-4.997959938080869e-5,-5.276367005121703e-8,-0.002059989171420568,-5.0232827495872717e-5,-5.3029781808228276e-8,-0.0020597197607184654,-5.049196909900188e-5,-5.330394627200139e-8,-0.002059385412596773,-5.0723251719086136e-5,-5.35509256812709e-8,-0.002059005920337264,-5.0901931837912855e-5,-5.374455696877302e-8,-0.0020586068325025636,-5.1015438910330984e-5,-5.387122879648511e-8,-0.0020582139353274493,-5.106332394108202e-5,-5.3929977985066915e-8,-0.0020578492211639973,-5.105516573900859e-5,-5.3930358175955645e-8,-0.002057528552028513,-5.100771436745336e-5,-5.388943054436595e-8,-0.0020572605931187234,-5.094215881551009e-5,-5.382886471043966e-8,-0.0020570463828137086,-5.088182315066045e-5,-5.3772543032440546e-8,-0.0020568790450358394,-5.0850080664488783e-5,-5.3744486331419684e-8,-0.0020567435004348058,-5.086799254343324e-5,-5.376655829843546e-8,-0.0020566165172875277,-5.0951144908211624e-5,-5.38553140117008e-8,-0.002056468009873697,-5.1105440079060466e-5,-5.40176449522486e-8,-0.002056264887091375,-5.13224346701609e-5,-5.4245796040435814e-8,-0.0020559784072281106,-5.157623756835036e-5,-5.451389058844007e-8,-0.0020555942713637253,-5.1825209665744814e-5,-5.4779432398487804e-8,-0.0020551217432332926,-5.202108670480498e-5,-5.4992587084446835e-8,-0.002054595971680873,-5.212442299521637e-5,-5.511211091620739e-8,-0.002054069540827032,-5.212000715115373e-5,-5.51213256728815e-8,-0.0020535954582683582,-5.202381128623128e-5,-5.503543356010499e-8,-0.002053209667556904,-5.187728707364314e-5,-5.48959111155173e-8,-0.002052921320923942,-5.1732422490422854e-5,-5.4755490408141264e-8,-0.0020527136286440546,-5.163540619096735e-5,-5.466165472016251e-8,-0.002052552370246584,-5.16152962902263e-5,-5.464504010682952e-8,-0.002052397089200715,-5.167979779085585e-5,-5.471483931427527e-8,-0.0020522111175157827,-5.1817015362214554e-5,-5.4860156203498216e-8,-0.002051968552414977,-5.200091488002448e-5,-5.505518884494557e-8,-0.002051657757119859,-5.219838699551085e-5,-5.5266251947721564e-8,-0.0020512816489339715,-5.237636228823249e-5,-5.5459107581815276e-8,-0.0020508553095427784,-5.2507832957142995e-5,-5.5605365688318714e-8,-0.0020504017421625635,-5.2575890404729004e-5,-5.568690921630114e-8,-0.002049946887543557,-5.257533993074332e-5,-5.5697769382127575e-8,-0.002049514984834118,-5.251207506856239e-5,-5.5643570315387093e-8,-0.0020491250330573053,-5.240083953067565e-5,-5.553919797775131e-8,-0.0020487886736325817,-5.226219084775036e-5,-5.540559549606092e-8,-0.002048509350314085,-5.211942672300324e-5,-5.526655233827838e-8,-0.0020482822912756475,-5.1995876311308334e-5,-5.514595440180733e-8,-0.0020480948969156336,-5.191250486751777e-5,-5.506543751527602e-8,-0.0020479273660762303,-5.188554270222557e-5,-5.5042078174011434e-8,-0.002047753716271682,-5.19237834715236e-5,-5.5085654827554707e-8,-0.002047543853386551,-5.202532476066097e-5,-5.5195172880639046e-8,-0.0020472677925593256,-5.2174216124140644e-5,-5.535514660858792e-8,-0.002046902870774027,-5.2338771760351975e-5,-5.553355877045675e-8,-0.0020464432837271392,-5.247451873274851e-5,-5.568470840459575e-8,-0.0020459084093877532,-5.253449204712567e-5,-5.575981860047395e-8,-0.002045343640214381,-5.2486027294355265e-5,-5.5724461720487053e-8,-0.002044808785656605,-5.2326853813685626e-5,-5.557525555895152e-8,-0.002044356731611969,-5.208986005362827e-5,-5.534487592771635e-8,-0.002044013525552351,-5.183141847200364e-5,-5.5090255370018856e-8,-0.002043771226817781,-5.160953417781544e-5,-5.48704621303244e-8,-0.0020435956589243583,-5.1464429347744986e-5,-5.472704260792385e-8,-0.0020434418674889353,-5.1410036594933055e-5,-5.4675282541850294e-8,-0.0020432684427998627,-5.14362548539681e-5,-5.470618039648655e-8,-0.0020430462096218717,-5.1516940304592496e-5,-5.4794150517663037e-8,-0.0020427612302023604,-5.161886518563504e-5,-5.490581755587025e-8,-0.002042413976632722,-5.170911019925943e-5,-5.50074620408479e-8,-0.0020420165420526716,-5.1760253982835196e-5,-5.5070471238764245e-8,-0.0020415890123641396,-5.1753638794210315e-5,-5.507496856439569e-8,-0.002041155494939975,-5.168102371657047e-5,-5.501178570621877e-8,-0.0020407401651533347,-5.154474405169965e-5,-5.488278817879703e-8,-0.0020403637204026146,-5.135653343018677e-5,-5.4699684377973364e-8,-0.002040040576882192,-5.113526412477106e-5,-5.448162890443747e-8,-0.002039777091455139,-5.09039490226065e-5,-5.425206240270826e-8,-0.0020395709362431877,-5.068649756636404e-5,-5.4035371776647424e-8,-0.002039411459954195,-5.050467571637247e-5,-5.385385724355181e-8,-0.002039280756574348,-5.037542727193322e-5,-5.372512326084712e-8,-0.0020391552857087123,-5.030852534711591e-5,-5.365977061904039e-8,-0.0020390080427771986,-5.030447590753775e-5,-5.365921376204627e-8,-0.002038811568452725,-5.0352607930303213e-5,-5.3713516384989046e-8,-0.0020385424324039243,-5.042973944197244e-5,-5.379970190700536e-8,-0.0020381875739485158,-5.050077044952324e-5,-5.388206675784495e-8,-0.0020377516616928775,-5.052330199125621e-5,-5.391680200972993e-8,-0.0020372625651711995,-5.045802416725423e-5,-5.386277190055731e-8,-0.0020367698775526524,-5.028392416035833e-5,-5.3697376840582164e-8,-0.0020363321435952564,-5.001196000452072e-5,-5.34308014077663e-8,-0.0020359951521852593,-4.968703486004547e-5,-5.310816086035136e-8,-0.0020357726478473404,-4.937288418461528e-5,-5.279414480895378e-8,-0.0020356419556401216,-4.9126855995544544e-5,-5.2547399322285394e-8,-0.002035556684070434,-4.897959533240644e-5,-5.2399885499866514e-8,-0.0020354668174017705,-4.892970414356411e-5,-5.2351307750795756e-8,-0.0020353344578759418,-4.8951698867931034e-5,-5.237686688565701e-8,-0.0020351402813209166,-4.900893595997211e-5,-5.2440021527677685e-8,-0.0020348825479860966,-4.906468718670452e-5,-5.250353037457378e-8,-0.0020345726105927375,-4.908894182699448e-5,-5.253641005057569e-8,-0.002034229863541913,-4.906144649731033e-5,-5.251727392128725e-8,-0.002033877432711455,-4.897243922319491e-5,-5.2435389666249733e-8,-0.002033538711092817,-4.882223756648143e-5,-5.2290488844127926e-8,-0.002033234470164266,-4.8620156756388854e-5,-5.2091736421230884e-8,-0.0020329804185158853,-4.838285072517303e-5,-5.185597492180308e-8,-0.0020327852353072594,-4.813206614562613e-5,-5.160531630998899e-8,-0.002032649254192641,-4.789178910703803e-5,-5.136415864036497e-8,-0.00203256409568354,-4.7684964149517676e-5,-5.115586867184493e-8,-0.002032513412831578,-4.7530207576543425e-5,-5.099954932398015e-8,-0.0020324746777436327,-4.743890663944881e-5,-5.0907215491822745e-8,-0.002032421864725609,-4.741298395352246e-5,-5.088156196373777e-8,-0.002032328861343699,-4.744359026821503e-5,-5.091451930689139e-8,-0.002032173443614939,-4.7510913626487626e-5,-5.098678990055797e-8,-0.002031941783002499,-4.75853718193778e-5,-5.106873150905396e-8,-0.0020316332829377146,-4.763092567556373e-5,-5.112349305662727e-8,-0.002031264678451989,-4.7611506845454626e-5,-5.111354889776993e-8,-0.0020308711459007655,-4.7500835256465015e-5,-5.101094070015697e-8,-0.002030501384939176,-4.7293891553481265e-5,-5.0809346057054425e-8,-0.0020302046550841244,-4.7015069114082157e-5,-5.053271389164446e-8,-0.002030012417735536,-4.6715860633814e-5,-5.023306514824246e-8,-0.0020299237206302333,-4.645858056483108e-5,-4.997393446583235e-8,-0.002029904534219609,-4.629246101907128e-5,-4.980599835191041e-8,-0.0020299027081861383,-4.6235733219535855e-5,-4.974874457112798e-8,-0.0020298691085456756,-4.6273355836021885e-5,-4.9787942532947575e-8,-0.002029772836986357,-4.6368492929145236e-5,-4.9886997870461254e-8,-0.0020296053518841788,-4.6478270704142267e-5,-5.0002696473796485e-8,-0.0020293762284797076,-4.6565779984025805e-5,-5.009732090515303e-8,-0.0020291058975264805,-4.660586503998099e-5,-5.0144678766039385e-8,-0.0020288190745721122,-4.658611551409667e-5,-5.013139050785385e-8,-0.0020285401833065263,-4.650544482721242e-5,-5.0055709880198454e-8,-0.0020282905163081324,-4.637198758862261e-5,-4.9925521941264115e-8,-0.0020280863812595215,-4.6201017541421475e-5,-4.975620376898143e-8,-0.002027937697407739,-4.6012910954525015e-5,-4.95684364968778e-8,-0.0020278468548150497,-4.5830932166805734e-5,-4.938584335030445e-8,-0.0020278079352926354,-4.5678563130217145e-5,-4.923225233991149e-8,-0.0020278066732735607,-4.5576287146234076e-5,-4.9128512005390405e-8,-0.0020278216052989797,-4.553814792964579e-5,-4.908913495339701e-8,-0.0020278266184087235,-4.5568694544187735e-5,-4.91192941943901e-8,-0.0020277947861438816,-4.566099727855335e-5,-4.921277950752152e-8,-0.0020277030598136164,-4.579640243999685e-5,-4.9351559556919325e-8,-0.0020275370670149273,-4.5946459644631754e-5,-4.950743825762933e-8,-0.0020272951641109476,-4.6077038467505365e-5,-4.964594133297112e-8,-0.0020269909380996286,-4.615441491887575e-5,-4.9732349917762104e-8,-0.002026653192492816,-4.615293081887066e-5,-4.973956903588067e-8,-0.002026322209052732,-4.606314805429271e-5,-4.965671815932576e-8,-0.0020260414134917063,-4.5898197313257225e-5,-4.949598467985722e-8,-0.002025845064816443,-4.569487890022771e-5,-4.929407616837752e-8,-0.0020257453978966516,-4.550622741121225e-5,-4.9104815330766504e-8,-0.0020257254701901042,-4.538541867435896e-5,-4.898274157296879e-8,-0.0020257433889951937,-4.536680350718691e-5,-4.89636608578841e-8,-0.0020257476215753702,-4.5453789008186565e-5,-4.905208248604179e-8,-0.002025695654193513,-4.562012774480506e-5,-4.922225373647776e-8,-0.0020255663701208917,-4.582262170758979e-5,-4.943082479997011e-8,-0.0020253618227586557,-4.6016984020625265e-5,-4.963283638283841e-8,-0.00202510099803616,-4.6169328034816214e-5,-4.979343944742674e-8,-0.002024811017417274,-4.626077683867761e-5,-4.989278000082901e-8,-0.002024519795827304,-4.6286832571634604e-5,-4.992561400738215e-8,-0.0020242514862415977,-4.625433913083903e-5,-4.989840752411386e-8,-0.002024024252686185,-4.617810969109077e-5,-4.982595556164917e-8,-0.0020238493406938953,-4.607808430854788e-5,-4.972841725462505e-8,-0.0020237306112493255,-4.597702408116703e-5,-4.96288581956967e-8,-0.002023664162763472,-4.589834984431947e-5,-4.955099750636145e-8,-0.0020236381094273855,-4.586365827157764e-5,-4.951673189348936e-8,-0.0020236329502209293,-4.5889656355000434e-5,-4.954314934249165e-8,-0.002023623153744319,-4.5984715081919234e-5,-4.963915423232379e-8,-0.0020235804546441657,-4.6145777376813115e-5,-4.980235686787022e-8,-0.002023478863220688,-4.635676148666589e-5,-5.0017332271608656e-8,-0.0020233006158513526,-4.658965624449702e-5,-5.025648223081647e-8,-0.002023041531229927,-4.6808945440860525e-5,-5.048423155390615e-8,-0.0020227139642913913,-4.6978896318268104e-5,-5.066420578545552e-8,-0.002022346013528821,-4.7072161309276584e-5,-5.0767917079637096e-8,-0.002021976583923614,-4.7077557162162256e-5,-5.0782829172766134e-8,-0.002021646938817805,-4.700482993717928e-5,-5.071753209060727e-8,-0.0020213903373314294,-4.688457071627136e-5,-5.060204845365824e-8,-0.00202122225761361,-4.676225438165741e-5,-5.048208770780828e-8,-0.002021134399579563,-4.668682793085823e-5,-5.040757499631068e-8,-0.0020210955157597492,-4.66964938733245e-5,-5.041810897949245e-8,-0.002021060207166187,-4.680660727557303e-5,-5.053039604591645e-8,-0.0020209831787395298,-4.700501284627893e-5,-5.073317426465869e-8,-0.0020208331782008877,-4.7257207541469374e-5,-5.0992163914768974e-8,-0.002020600749527367,-4.751873684499668e-5,-5.126249359928724e-8,-0.002020297495132843,-4.7748817668834114e-5,-5.150253416122725e-8,-0.002019949045350994,-4.791973032907616e-5,-5.168357842505219e-8,-0.002019586148214338,-4.801998291591459e-5,-5.1793273968425187e-8,-0.0020192374342056386,-4.8052601996660434e-5,-5.183409256541799e-8,-0.002018925159106304,-4.8031175323490096e-5,-5.181942050354247e-8,-0.0020186634942643855,-4.797571811880198e-5,-5.1769350061628944e-8,-0.002018458307559683,-4.7909321720409155e-5,-5.17071934570522e-8,-0.0020183074793059634,-4.7855657746552463e-5,-5.1656878184229704e-8,-0.0020182012242393878,-4.783688725574289e-5,-5.164083264519561e-8,-0.0020181224346406887,-4.7871384574551e-5,-5.167777089044754e-8,-0.002018047515893418,-4.797092449356852e-5,-5.177995991815182e-8,-0.0020179484270965854,-4.813745696818201e-5,-5.1950004632217014e-8,-0.0020177966111187182,-4.836022705575067e-5,-5.217785319666721e-8,-0.0020175689778127058,-4.861471743161788e-5,-5.243952149084699e-8,-0.0020172549083493363,-4.886518940475764e-5,-5.2699404555608824e-8,-0.0020168618491771245,-4.9071739379400246e-5,-5.291720278700551e-8,-0.0020164165457899337,-4.920074189090056e-5,-5.305839885690176e-8,-0.0020159601254947663,-4.923537724905972e-5,-5.310497994930823e-8,-0.0020155377782343923,-4.9182101111894395e-5,-5.3062208619770655e-8,-0.0020151863264922898,-4.9070186505180795e-5,-5.2958496549887175e-8,-0.0020149239683831454,-4.894424255995497e-5,-5.28381974040878e-8,-0.002014745466484543,-4.8852234007670655e-5,-5.2749744360003565e-8,-0.002014623980385843,-4.8832737442584404e-5,-5.2732795661562925E-08,-0.0020145187675945538,-4.8905033515197663e-5,-5.2807996323674024e-8,-0.002014386463354211,-4.9064737170752646e-5,-5.297217537397421e-8,-0.0020141926071653754,-4.928613889269881e-5,-5.3200321420099145e-8,-0.002013919923050992,-4.953032530867741e-5,-5.3453543629696204e-8,-0.002013571006866503,-4.975617191211685e-5,-5.369014468097558e-8,-0.0020131652167542056,-4.993046123284049e-5,-5.3875992139383384e-8,-0.002012731692604997,-5.0034158097124634e-5,-5.399109718532883e-8,-0.0020123014742402913,-5.0063845602625036e-5,-5.403129483295887e-8,-0.00201190121087524,-5.002933955111049e-5,-5.4005977959494064e-8,-0.002011549521326985,-4.994945558883987e-5,-5.393385164637899e-8,-0.002011255743455944,-4.984764678639762e-5,-5.383846809376056e-8,-0.0020110201985696686,-4.974843179222414e-5,-5.374453985485008e-8,-0.002010835083772604,-4.9674777295965575e-5,-5.367526613695328e-8,-0.0020106854277154628,-4.964606496865315e-5,-5.365032901804489e-8,-0.0020105500400673802,-4.9676073962541255e-5,-5.3683953076972764e-8,-0.0020104028617102853,-4.9770593190928885e-5,-5.3782559234610896e-8,-0.0020102154280196164,-4.992472116898015e-5,-5.39419945769669e-8,-0.002009961203093299,-5.01205774324166e-5,-5.4145045648848874e-8,-0.0020096220475094026,-5.032702956215601e-5,-5.436091558231032e-8,-0.0020091956873586328,-5.0503577918817376e-5,-5.454893403638213e-8,-0.0020087010935627442,-5.060963041617747e-5,-5.466782814365228e-8,-0.0020081776870822868,-5.06175125618987e-5,-5.468889528583259e-8,-0.0020076760813480246,-5.052404157729019e-5,-5.4607820427235687e-8,-0.0020072426309083852,-5.03543523152836e-5,-5.444874990717472e-8,-0.0020069043511348767,-5.015493124700536e-5,-5.42575575233768e-8,-0.0020066610667815107,-4.997871174697851e-5,-5.40871357697118e-8,-0.0020064875013838,-4.98690470565664e-5,-5.3981449732444325e-8,-0.0020063429428621477,-4.9848723760962696e-5,-5.396442162152271e-8,-0.0020061836818402717,-4.991653940438004e-5,-5.40361687618578e-8,-0.0020059740082301832,-5.005060728795719e-5,-5.4175883241144576e-8,-0.0020056933781890086,-5.021595398427699e-5,-5.434910207886136e-8,-0.0020053390005447076,-5.037374382076034e-5,-5.4516829286568113e-8,-0.0020049242019915922,-5.048986269802197e-5,-5.464425732666e-8,-0.0020044736538592134,-5.054119841472836e-5,-5.470733410760349e-8,-0.0020040170112563204,-5.0518666909647305e-5,-5.469609132681992e-8,-0.002003582651521957,-5.0426916644760484e-5,-5.461455429534083e-8,-0.002003192848389794,-5.028151267800684e-5,-5.4477987905210974e-8,-0.0020028610069787686,-5.010484787898947e-5,-5.430874706071043e-8,-0.0020025908720933084,-4.992194480586509e-5,-5.413196542421391e-8,-0.0020023771463984017,-4.9756918400443195e-5,-5.3971933421660555e-8,-0.002002206808863418,-4.963034306888264e-5,-5.384945799572805e-8,-0.0020020606277349035,-4.955729195151486e-5,-5.3779965287491494e-8,-0.002001914752160842,-4.9545629165052306e-5,-5.377186303277142e-8,-0.0020017426370449094,-4.959424701946217e-5,-5.382477021649585e-8,-0.0020015178700865826,-4.9691252782268014e-5,-5.392756337052816e-8,-0.002001218597218113,-4.981272984636775e-5,-5.4056892268100934e-8,-0.0020008337756181305,-4.9923598500677135e-5,-5.417780009747694e-8,-0.002000370096206164,-4.998267559890689e-5,-5.4248682766537245e-8,-0.0019998563334538166,-4.995319905600739e-5,-5.423191853970226e-8,-0.0019993405058199324,-4.981692900508882e-5,-5.4108211202206056e-8,-0.0019988771595501596,-4.958544642961348e-5,-5.388813032255459e-8,-0.001998508235516319,-4.930060305686856e-5,-5.361273486836377e-8,-0.0019982470792282445,-4.902112276864653e-5,-5.3340329163181614e-8,-0.001998074636703137,-4.880149849864028e-5,-5.31255233957502e-8,-0.0019979490776461596,-4.867431780069525e-5,-5.300163018068865e-8,-0.001997822100817167,-4.864355803151583e-5,-5.2973805172126e-8,-0.0019976535169998273,-4.8688691267618395e-5,-5.3022777123200866e-8,-0.001997419552504148,-4.8774601604832057e-5,-5.311433704727912e-8,-0.001997114744774493,-4.8862226688571974e-5,-5.320970261330998e-8,-0.0019967494607951706,-4.891701856579829e-5,-5.3273961127601174e-8,-0.0019963452028423133,-4.8914377496388965e-5,-5.328171644965104e-8,-0.0019959291743273603,-4.884227819040176e-5,-5.3220032150562435e-8,-0.0019955289872912786,-4.870151669163586e-5,-5.3088954045228216e-8,-0.001995168161878916,-4.850401085939419e-5,-5.289994962557313e-8,-0.0019948628903654394,-4.8269744288963775e-5,-5.267284224427861e-8,-0.0019946202670904343,-4.8023026531601735e-5,-5.2431967802807096e-8,-0.0019944379707342885,-4.7788675113880514e-5,-5.220224766362233e-8,-0.0019943051797844005,-4.7588659781935926e-5,-5.200579146376313e-8,-0.0019942042706509,-4.743954711749449e-5,-5.1859386167826104e-8,-0.001994112859914415,-4.735069680607469e-5,-5.1772781475901097e-8,-0.001994006037341234,-4.732295848864623e-5,-5.1747440313270875e-8,-0.001993858894812306,-4.7347710668200726e-5,-5.177551950964653e-8,-0.0019936496579878314,-4.740627635058635e-5,-5.18390919640976e-8,-0.001993363861819001,-4.7470190253398286e-5,-5.1910146838977426e-8,-0.0019929996205191062,-4.7503541595903896e-5,-5.195272017060764e-8,-0.0019925728195238626,-4.746902878186876e-5,-5.1928915188607375e-8,-0.001992119310680294,-4.7338527946317814e-5,-5.1809644671995214e-8,-0.001991689987214206,-4.710613654808492e-5,-5.1587956392584026e-8,-0.0019913363447532006,-4.6797293437381455e-5,-5.128838764343941e-8,-0.0019910904742861894,-4.6465669201456026e-5,-5.096398901617266e-8,-0.001990950368197197,-4.617513909028325e-5,-5.067840830528089e-8,-0.0019908806466250022,-4.5975167125504204e-5,-5.048140368418561e-8,-0.0019908285309041696,-4.5883747649525306e-5,-5.039181646697579e-8,-0.0019907446103717484,-4.588605349155747e-5,-5.039601315964357e-8,-0.0019905972795608703,-4.59456274268961e-5,-5.045866854053545e-8,-0.0019903769307380295,-4.601920467643337e-5,-5.053718566759492e-8,-0.001990092573971516,-4.60683822052351e-5,-5.059317403618827e-8,-0.0019897653271612717,-4.6066023946311286e-5,-5.059894157366422e-8,-0.0019894219047486518,-4.5998288524238066e-5,-5.0539804388693425e-8,-0.001989089388356069,-4.5864029542767294e-5,-5.041380553085208e-8,-0.001988791342582684,-4.5672889943786124e-5,-5.023002279694939e-8,-0.0019885450270769787,-4.544267119758317e-5,-5.000598811628438e-8,-0.001988359611822744,-4.519623780012269e-5,-4.9764511439258186e-8,-0.001988235373861473,-4.4958196634044265e-5,-4.9530237154278555e-8,-0.001988163874878257,-4.475155292368226e-5,-4.932622435749737e-8,-0.0019881291494703197,-4.4594624487372946e-5,-4.917088069716583e-8,-0.0019881097672433527,-4.449860634103792e-5,-4.907562319610449e-8,-0.0019880814361664893,-4.446599676205845e-5,-4.9043404078743095e-8,-0.001988019896370336,-4.448984902371915e-5,-4.90679788963876e-8,-0.0019879040251158317,-4.455382789815783e-5,-4.9133842968146527e-8,-0.001987719144006088,-4.463316087772778e-5,-4.921694042093964e-8,-0.001987460558236463,-4.46967620556441e-5,-4.9286514917244204e-8,-0.0019871370966062707,-4.471122399257981e-5,-4.9308929889939364e-8,-0.0019867735413332,-4.464753053386993e-5,-4.925440944020967e-8,-0.0019864096922321078,-4.449046879624519e-5,-4.910667619111871e-8,-0.001986093293887148,-4.424847454638656e-5,-4.887310764941467e-8,-0.0019858657165408035,-4.395851101024967e-5,-4.858986252843164e-8,-0.0019857444502105696,-4.36793761172567e-5,-4.831531748591886e-8,-0.0019857123157436644,-4.3471892985409506e-5,-4.811032585031551e-8,-0.001985722442942424,-4.3374678707536145e-5,-4.801403302963816e-8,-0.001985717837909519,-4.3389861516746215e-5,-4.802953349265059e-8,-0.0019856536347009303,-4.348657983914437e-5,-4.812711300883761e-8,-0.001985509793314366,-4.3617293200771854e-5,-4.826016677840372e-8,-0.001985291041141802,-4.373551017512467e-5,-4.8382599589213666e-8,-0.001985018982825112,-4.380710889702349e-5,-4.8460059289153266e-8,-0.00198472269519155,-4.381413163467009e-5,-4.8473904889146595e-8,-0.0019844313817317153,-4.3753602107519224e-5,-4.8420335013601454e-8,-0.0019841698777690116,-4.3634265418978614e-5,-4.830740886578302e-8,-0.00198395631013117,-4.347308097731399e-5,-4.815167459106861e-8,-0.00198380093609794,-4.32920529085931e-5,-4.7974972464015794e-8,-0.0019837056325942176,-4.311530044265703e-5,-4.7801388949448075e-8,-0.0019836639326078916,-4.2966205027643966e-5,-4.765430103584804e-8,-0.0019836616788419274,-4.2864560277764126e-5,-4.755351001687462e-8,-0.0019836784835310212,-4.2823816969524074e-5,-4.75125667742844e-8,-0.0019836901334029686,-4.284880913635948e-5,-4.753661876885519e-8,-0.0019836717844280323,-4.293443985340406e-5,-4.7621167559884083e-8,-0.001983601577361672,-4.306561983656408e-5,-4.775195443764006e-8,-0.00198346427639853,-4.321860830029743e-5,-4.79061064744248e-8,-0.001983254503428399,-4.3363817575379086e-5,-4.805466061004061e-8,-0.001982979128261479,-4.3470011868281195e-5,-4.8166508580713625e-8,-0.0019826583317162807,-4.350982227820718e-5,-4.8213806615591725e-8,-0.0019823245270563744,-4.346642997860529e-5,-4.817876549475533e-8,-0.0019820179079688013,-4.334055689306835e-5,-4.806092503305833e-8,-0.0019817776241884424,-4.315546627647395e-5,-4.788249609663614e-8,-0.001981629243341138,-4.295622121243347e-5,-4.768788218876515e-8,-0.00198157253207564,-4.279964969343516e-5,-4.753376447678903e-8,-0.0019815768110193243,-4.273555993575656e-5,-4.747031671641675e-8,-0.0019815896914275643,-4.2786939561310826e-5,-4.752132323658576e-8,-0.001981556964728314,-4.294065163758243e-5,-4.767470277125102e-8,-0.001981442898715948,-4.315455768342111e-5,-4.788935301045354e-8,-0.001981239994932547,-4.337586664281439e-5,-4.811318043326988e-8,-0.001980965615592369,-4.3559380683812036e-5,-4.830112897720887e-8,-0.001980651104271411,-4.3677669740602314e-5,-4.842535724700544e-8,-0.001980330622165264,-4.37224614567855e-5,-4.8476842035870866e-8,-0.001980033601616317,-4.370082309922366e-5,-4.846185712372692e-8,-0.001979781186553916,-4.362987461869388e-5,-4.8396913373778846e-8,-0.0019795853426471683,-4.35321462310607e-5,-4.8304189751421825e-8,-0.001979449164923876,-4.343211096476673e-5,-4.8208004801788516e-8,-0.001979367516891493,-4.335355049589747e-5,-4.81320762404166e-8,-0.0019793277939190233,-4.331724667908914e-5,-4.8097157631997425e-8,-0.0019793109779484602,-4.333865671006025e-5,-4.811875302716466e-8,-0.00197929334115372,-4.342552864224307e-5,-4.8204839307820454e-8,-0.0019792491585166726,-4.3575840607934675e-5,-4.835390191602501e-8,-0.0019791544719827683,-4.377676979296662e-5,-4.855390559455163e-8,-0.0019789914659854206,-4.400538864917376e-5,-4.878285284376596e-8,-0.001978752618067997,-4.423151487384888e-5,-4.9011380729146134e-8,-0.001978443571552841,-4.442266642057841e-5,-4.920743293376487e-8,-0.0019780837559768326,-4.455044155192306e-5,-4.93424419569069e-8,-0.001977704189216635,-4.459716325964112e-5,-4.9397956177720134e-8,-0.0019773423735596264,-4.4561466986321577e-5,-4.937141684655841e-8,-0.001977034607825835,-4.446140319979623e-5,-4.927959934097138e-8,-0.0019768066566202684,-4.433345001834858e-5,-4.915798984075471e-8,-0.0019766648048065616,-4.422600808807836e-5,-4.905454320636164e-8,-0.001976590642014865,-4.418718038152136e-5,-4.901754862575995e-8,-0.0019765433922679146,-4.424941926591262e-5,-4.908018505043689e-8,-0.0019764714799322142,-4.441704193678446e-5,-4.924782281001948e-8,-0.0019763299672662825,-4.466351711965738e-5,-4.949503779025665e-8,-0.0019760958592488333,-4.494111748014449e-5,-4.9774988214425593e-8,-0.001975773776278894,-4.519821653836421e-5,-5.003649186587927e-8,-0.001975390495162118,-4.539533451112828e-5,-5.0239976118785304e-8,-0.0019749831859174212,-4.551335871876182e-5,-5.0365773681986254e-8,-0.0019745879207018306,-4.555320514137526e-5,-5.041400386812903e-8,-0.0019742323786003236,-4.553037719774458e-5,-5.039938833552872e-8,-0.0019739331147513276,-4.5468406296927464e-5,-5.03448680797245e-8,-0.001973695819172792,-4.539349471122782e-5,-5.0276287499947574e-8,-0.0019735168135767726,-4.533089935511781e-5,-5.0218721062822205e-8,-0.0019733846944876474,-4.5302611923024283e-5,-5.019408501320979e-8,-0.0019732817668098417,-4.532562487218592e-5,-5.021939519624579e-8,-0.0019731854504376916,-4.5410207074392044e-5,-5.0305107394665245e-8,-0.0019730701622044603,-4.5557997564901036e-5,-5.045329830787116e-8,-0.001972910223039121,-4.576026673732602e-5,-5.0655959638034884e-8,-0.001972684031500541,-4.5997198476817514E-05,-5.0894198826261366e-8,-0.001972379090884328,-4.623929153514652e-5,-5.113944114811148e-8,-0.001971996635686588,-4.6451727228890164e-5,-5.135753400078218e-8,-0.0019715539766186102,-4.660160044857538e-5,-5.1515737334611745e-8,-0.0019710828542270687,-4.6666477609024985e-5,-5.159115485388241e-8,-0.001970623298040414,-4.664162896085638e-5,-5.1578016403124346e-8,-0.001970214212090245,-4.65432620191606e-5,-5.1491151948029e-8,-0.001969883242927487,-4.6406229230851866e-5,-5.1364075446337285e-8,-0.001969638857557791,-4.627639846031354e-5,-5.124174919757445e-8,-0.001969467008160238,-4.6199420166105754e-5,-5.116961866658035e-8,-0.0019693336914688433,-4.6208627966382286e-5,-5.1181552597747694e-8,-0.001969193371546135,-4.631535486871011e-5,-5.128996338486575e-8,-0.0019690015104308046,-4.650497733936632e-5,-5.148150977961362e-8,-0.001968727504736385,-4.6740821064600386e-5,-5.172064567922468e-8,-0.001968363316252578,-4.697522012612561e-5,-5.196041523031695e-8,-0.00196792440570595,-4.71636765838571e-5,-5.2156492160433425e-8,-0.001967443051877653,-4.727655930735045e-5,-5.227890703313716e-8,-0.0019669575953292872,-4.730437768201357e-5,-5.2317472555509746e-8,-0.0019665022928231123,-4.7256201646844035e-5,-5.228042290007389e-8,-0.0019661009362071376,-4.715377406937989e-5,-5.218873377314962e-8,-0.0019657647779907092,-4.702464970878444e-5,-5.206938544394163e-8,-0.001965493477560509,-4.689660585321579e-5,-5.194979398067257e-8,-0.001965277377825799,-4.6794002474408414e-5,-5.185413345399812e-8,-0.001965099914950498,-4.67357278760477e-5,-5.1801254050097615e-8,-0.0019649396611614903,-4.673397854378611e-5,-5.180348656861776e-8,-0.0019647721014879383,-4.6793187059781656e-5,-5.186563289514447e-8,-0.0019645716558417217,-4.690878647692816e-5,-5.1983771468773974e-8,-0.0019643145874512157,-4.706604455706395e-5,-5.214404907793817e-8,-0.001963983213520618,-4.7239795327600476e-5,-5.232226406608289e-8,-0.0019635711534783046,-4.7396399391850306e-5,-5.248560550378622e-8,-0.0019630881783210172,-4.749923158841316e-5,-5.2597912011238834e-8,-0.0019625620385825687,-4.7517783547080394e-5,-5.262860028092075e-8,-0.001962034600536159,-4.743810866143697e-5,-5.2563034466538445e-8,-0.001961551663459193,-4.7270187530390955e-5,-5.2409958425237556e-8,-0.0019611493437624405,-4.7047867070956564e-5,-5.2201684891901307e-8,-0.0019608425118726406,-4.682012526184868e-5,-5.198578136085175e-8,-0.001960620223510975,-4.663679110534357e-5,-5.1811253235307756e-8,-0.00196044964691645,-4.65343886842311e-5,-5.1714684022350806e-8,-0.001960286244385532,-4.652696232149927e-5,-5.171103424799668e-8,-0.0019600861987816276,-4.660393314075276e-5,-5.1791161198884274e-8,-0.001959817384072231,-4.673447845393499e-5,-5.192571546679343e-8,-0.0019594663672666632,-4.687647620848606e-5,-5.207366237327364e-8,-0.0019590402013480103,-4.69873681531962e-5,-5.219291849091948e-8,-0.0019585630459199917,-4.7034093216261266e-5,-5.2250281015410575e-8,-0.0019580689434451474,-4.699963912862847e-5,-5.222813797470916e-8,-0.001957593098636109,-4.6884855780413277E-05,-5.212650982795257e-8,-0.0019571642607120374,-4.6705755925512453e-5,-5.196056523166988e-8,-0.001956800031936092,-4.648795164335014e-5,-5.175520387715332e-8,-0.0019565055327110657,-4.626040613743492e-5,-5.1538868280151164e-8,-0.001956274664949442,-4.605019885705157e-5,-5.133830575689433e-8,-0.0019560927255029953,-4.587904903303501e-5,-5.117507505063576e-8,-0.001955939273522816,-4.5761480824035993e-5,-5.106372503209461e-8,-0.00195579066288265,-4.570401845100373e-5,-5.101104052329391e-8,-0.001955622211363207,-4.570476038673568e-5,-5.101566680936453e-8,-0.001955410378080181,-4.575298140689403e-5,-5.1067700552761083e-8,-0.0019551355106216866,-4.5828851541139104e-5,-5.114829612455283e-8,-0.0019547856381423576,-4.590392133545704e-5,-5.122995115968192e-8,-0.001954361197611504,-4.594364275569868e-5,-5.127880370114713e-8,-0.001953879361532978,-4.591336545457481e-5,-5.126044894606853e-8,-0.001953375159198017,-4.5788157126795125e-5,-5.114965466945004e-8,-0.0019528960573228693,-4.556404200060815e-5,-5.094156483201756e-8,-0.0019524888638265663,-4.52650121756844e-5,-5.0658773399677315e-8,-0.0019521829510683111,-4.493969555783338e-5,-5.03482415102804e-8,-0.001951978224705543,-4.4646436883604996e-5,-5.006686001308755e-8,-0.0019518449631389671,-4.4433199757164185e-5,-4.9861909053352045e-8,-0.0019517355290165363,-4.43223575013476e-5,-4.9756164208185047e-8,-0.0019516011374687279,-4.430667685873654e-5,-4.9743737900243164e-8,-0.0019514058087092413,-4.4355660121435736e-5,-4.979589561049797e-8,-0.0019511334488388776,-4.442707829644108e-5,-4.987196748279403e-8,-0.0019507882121724506,-4.4478635729643045e-5,-4.993057447552316e-8,-0.0019503903208332868,-4.447687118184344e-5,-4.9938400968221414e-8,-0.0019499696523796678,-4.440237013879302e-5,-4.9875550740711113e-8,-0.0019495587983859016,-4.425144642123595e-5,-4.973750799595954e-8,-0.0019491867583722598,-4.403481674939329e-5,-4.953408613857425e-8,-0.001948874170726926,-4.3773966244990976e-5,-4.928597425302703e-8,-0.0019486306854478142,-4.3496186610003896e-5,-4.901984567298104e-8,-0.0019484545808215287,-4.322941742227304e-5,-4.876319520040075e-8,-0.0019483342448092852,-4.299784164805793e-5,-4.853991498678627e-8,-0.0019482508367361243,-4.281882578092175e-5,-4.8367249272998265E-08,-0.0019481813406516451,-4.2701332047739913e-5,-4.8254265238426306e-8,-0.001948101431884755,-4.2645465612550796e-5,-4.820147285858156e-8,-0.0019479880023605153,-4.2642663695294445e-5,-4.820104258643957e-8,-0.0019478215084132696,-4.267621983914629e-5,-4.823725928348993e-8,-0.0019475884766814169,-4.2722120831818105e-5,-4.8287176766687065e-8,-0.001947284537476418,-4.2750605376743135e-5,-4.832193112023108e-8,-0.0019469179020162252,-4.272943149953421e-5,-4.830978464674593e-8,-0.001946512130701754,-4.2629987351193034e-5,-4.8222103668448865e-8,-0.0019461057920909896,-4.243645483759409e-5,-4.804249139879382e-8,-0.0019457459924259364,-4.2155871844775294e-5,-4.777688442978733e-8,-0.001945474433914433,-4.182357814670306e-5,-4.745909633402526e-8,-0.0019453099923769398,-4.149726260691403e-5,-4.7145127891331156e-8,-0.0019452376149965635,-4.123797713130104e-5,-4.689469161507122e-8,-0.0019452123501192205,-4.108646923628689e-5,-4.67481344270079e-8,-0.0019451775408544185,-4.104846697515171e-5,-4.671199913017461e-8,-0.001945086305653114,-4.10964890190002e-5,-4.67605464329462e-8,-0.00194491498170104,-4.118420798055841e-5,-4.6849415350206084e-8,-0.0019446649566739968,-4.1263439193324884e-5,-4.693190382853436e-8,-0.0019443564891179575,-4.129638690638195e-5,-4.6970831215838533e-8,-0.001944019871009889,-4.126124977537125e-5,-4.694416268183079e-8,-0.0019436874568431314,-4.115267744009283e-5,-4.6845757576426216e-8,-0.0019433878283089455,-4.097933082895468e-5,-4.668329117893592e-8,-0.0019431420227587768,-4.076018683375537e-5,-4.64748293924473e-8,-0.001942961425049852,-4.052037587530838e-5,-4.624478413720799e-8,-0.001942847090506267,-4.028693694379081e-5,-4.6019666043409794e-8,-0.001942790358890472,-4.008483999357206e-5,-4.5824064376144906e-8,-0.0019427745871054582,-3.9933607897037706e-5,-4.5677259981585586e-8,-0.0019427777616891982,-3.984486508728241e-5,-4.559083113158273e-8,-0.0019427755865315058,-3.982107608163827e-5,-4.556748866183424e-8,-0.0019427445679542873,-3.985544668643988e-5,-4.5601049016244416e-8,-0.0019426648249855798,-3.9932722126588916e-5,-4.5677213148583996e-8,-0.0019425225723483325,-4.003067731752825e-5,-4.577491057145826e-8,-0.00194231231186212,-4.0122223590998573e-5,-4.586815250812175e-8,-0.001942038840723702,-4.017825071467646e-5,-4.592859500544757e-8,-0.0019417189403766162,-4.017172995117602e-5,-4.592943591477745e-8,-0.0019413817963929902,-4.0083668653272205e-5,-4.5851299075569445e-8,-0.0019410663758636533,-3.9910612776753746e-5,-4.5689797651230024e-8,-0.0019408138567119492,-3.9671609827259084e-5,-4.546263553447091e-8,-0.0019406546006421536,-3.941021451110704e-5,-4.52117972507066e-8,-0.001940593319235403,-3.918608994782784e-5,-4.499543804327817e-8,-0.0019406012767298,-3.905498590278002e-5,-4.486832358067523e-8,-0.001940623920404477,-3.904542284858823e-5,-4.4859006867683975e-8,-0.0019406025544464632,-3.914639483061919e-5,-4.495769578301747e-8,-0.001940497520876102,-3.931411884703988e-5,-4.512260307194805e-8,-0.001940299698239888,-3.949212761192832e-5,-4.5299254342045724e-8,-0.0019400271696272137,-3.9631546521015266e-5,-4.5440050246729585e-8,-0.0019397134945464904,-3.970249901148748e-5,-4.55153769119164e-8,-0.0019393955892964717,-3.969592038203203e-5,-4.551557626730208e-8,-0.0019391053846128947,-3.961966037424788e-5,-4.544745102453445e-8,-0.0019388656601532564,-3.9492805816283906e-5,-4.532898685003671e-8,-0.0019386887618311728,-3.9340423201373115e-5,-4.518433473733331e-8,-0.0019385768153243493,-3.9189313030825355e-5,-4.5039624737876385e-8,-0.0019385226755074644,-3.9064588188579694e-5,-4.491950007652083e-8,-0.0019385113945777103,-3.89868350713039e-5,-4.4844233237342264e-8,-0.0019385222021650083,-3.8969763524809525e-5,-4.48273957066787e-8,-0.0019385310528990875,-3.9018436577778017e-5,-4.4874176736247263E-08,-0.001938513684450707,-3.912838732750907e-5,-4.498060099930697e-8,-0.0019384488723173468,-3.928589530112374e-5,-4.51338353807561e-8,-0.001938321483040145,-3.946943857740446e-5,-4.531354277085539e-8,-0.0019381250107120861,-3.965222629013153e-5,-4.5494184057548586e-8,-0.0019378633026130548,-3.9805684583894356e-5,-4.5648196322549064e-8,-0.0019375512317700392,-3.990367219926965e-5,-4.574992768613837e-8,-0.0019372141057675222,-3.9927275177831916e-5,-4.5780279834495175e-8,-0.0019368852732491004,-3.987006414845319e-5,-4.573198875575406e-8,-0.0019366009982821448,-3.9743041431457964e-5,-4.561474398462704e-8,-0.001936392008214114,-3.9577268369624826e-5,-4.545806912288991e-8,-0.0019362725887905185,-3.9421116423997146e-5,-4.530885190760244e-8,-0.0019362308367980837,-3.93293215936308e-5,-4.522070434461868e-8,-0.0019362265448863605,-3.934447117414749e-5,-4.5235796012735197e-8,-0.0019362021567699314,-3.947831204143984e-5,-4.5366449130396565e-8,-0.0019361044622756712,-3.9704499044345756e-5,-4.558787687093552e-8,-0.0019359055467726995,-3.9969038024905696e-5,-4.5848165191453386e-8,-0.001935610918476163,-4.0212436952495197e-5,-4.608967212085328e-8,-0.0019352522767100955,-4.0390248298052926e-5,-4.626892936144965e-8,-0.001934872343550989,-4.04826572347339e-5,-4.636602580928481e-8,-0.0019345110162189247,-4.0492973987788945e-5,-4.6383349171738214e-8,-0.0019341974042064007,-4.0440353373262014e-5,-4.633877244453355e-8,-0.00193394745527741,-4.035183976460438e-5,-4.6258113992407355e-8,-0.0019337648831009675,-4.025623586702828e-5,-4.6169223646382756e-8,-0.001933643297940725,-4.018010690860001e-5,-4.6098017218746215e-8,-0.0019335684391845415,-4.014524819687492e-5,-4.606588963420782e-8,-0.0019335202829593439,-4.016691288990378e-5,-4.608791074426844e-8,-0.001933475196842574,-4.025240778009302e-5,-4.617145854048994e-8,-0.0019334084174011334,-4.039999941699849e-5,-4.6315210257224784e-8,-0.0019332970460884604,-4.0598441631085976e-5,-4.6508730328468455e-8,-0.0019331234337040622,-4.0827636234276635e-5,-4.67330881859333e-8,-0.0019328784570221483,-4.1060782189105156e-5,-4.69628242270068e-8,-0.001932564016748744,-4.126806268614148e-5,-4.716934132885776e-8,-0.0019321940512386387,-4.14215942181376e-5,-4.732552837106896e-8,-0.001931793485630655,-4.1500945427768556e-5,-4.741103326315836e-8,-0.0019313948975945483,-4.149824340283206e-5,-4.741729676503009e-8,-0.0019310330346188518,-4.142188515293687e-5,-4.7351395895912765e-8,-0.0019307375352558293,-4.1297801414388954e-5,-4.723760067108958e-8,-0.0019305246932332914,-4.116693684145903e-5,-4.711522060800814e-8,-0.0019303901558369954,-4.107771840039374e-5,-4.7031429532281454e-8,-0.001930305702440573,-4.1073507327231025e-5,-4.70290097302363e-8,-0.001930223661133537,-4.117772149833033e-5,-4.71316652941459e-8,-0.0019300904151773313,-4.1382707713134946e-5,-4.733292449466249e-8,-0.0019298652063116251,-4.1649473063614e-5,-4.7595646288971316e-8,-0.0019295353407003367,-4.192078311450537e-5,-4.786461098057043e-8,-0.0019291195029987889,-4.214178037375372e-5,-4.8086494979264673e-8,-0.0019286581510240075,-4.227740391874418e-5,-4.822680388860586e-8,-0.0019281977027044515,-4.23190945630982e-5,-4.827648982478889e-8,-0.001927776949794641,-4.228093381957044e-5,-4.8248402386580654e-8,-0.0019274200721663662,-4.219051722902683e-5,-4.8168652620736966e-8,-0.001927135772707496,-4.20798850584923e-5,-4.8067954346620734e-8,-0.0019269198332215003,-4.197912027142969e-5,-4.797542280744417e-8,-0.0019267586318278405,-4.1912777277154615e-5,-4.7915023022203665e-8,-0.0019266323173630316,-4.189820026513446e-5,-4.7903834928403336e-8,-0.0019265173637764677,-4.194471819140883e-5,-4.795122144177823e-8,-0.0019263888011234276,-4.205308385953557e-5,-4.805829680961167e-8,-0.0019262225974915343,-4.221501646557592e-5,-4.821751718558146e-8,-0.0019259985568891125,-4.2413183674726635e-5,-4.8412658231367925e-8,-0.0019257037357562376,-4.262227688328076e-5,-4.861977364178274e-8,-0.0019253358507307667,-4.281183412618318e-5,-4.88097763412886e-8,-0.0019249056464002532,-4.295109158693287e-5,-4.895296804974039e-8,-0.00192443696510101,-4.3015405547280085e-5,-4.9025146674251664e-8,-0.001923963576351099,-4.299286159649854e-5,-4.901401418858055e-8,-0.0019235227456985294,-4.288907110417211e-5,-4.892397352513479e-8,-0.0019231466972611288,-4.2728295806226845e-5,-4.8777489495455956e-8,-0.0019228540148536525,-4.2549887097491935e-5,-4.861195243355361e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json new file mode 100644 index 000000000..771149a59 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":10000,"numberOfSamples":1000,"samples":[1.9197471616856318e-4,7.996600532056201e-6,-1.2597360486632112e-8,1.923979354906972e-4,8.059544161443208e-6,-1.2601754449986743e-8,1.9274745963100852e-4,8.18217092448731e-6,-1.2612185701149497e-8,1.9301410614298842e-4,8.328459694631899e-6,-1.2625220207854334e-8,1.9320200661086356e-4,8.46367290461882e-6,-1.263746635903232e-8,1.933256574311564e-4,8.557979990756902e-6,-1.264596926377846e-8,1.9340729897750835e-4,8.588749871695277e-6,-1.2648467217789009e-8,1.9347454382165973e-4,8.54234886551231e-6,-1.2643575641672086e-8,1.9355780445299317e-4,8.41580428718647e-6,-1.2630935191527253e-8,1.9368703586457032e-4,8.218144650907273e-6,-1.2611321617725655e-8,1.9388759494511673e-4,7.970728457914735e-6,-1.2586673932584885e-8,1.9417557384287807e-4,7.70570255454025e-6,-1.2559972916060515e-8,1.9455353413614596e-4,7.461994170668981e-6,-1.2534909842557773e-8,1.950079268750979e-4,7.278838435440244e-6,-1.2515320800328438e-8,1.9550946566497787e-4,7.1877009230743185e-6,-1.250443183656935e-8,1.9601716991058025e-4,7.204296880679899e-6,-1.2504049076168112e-8,1.964858622143666e-4,7.322751895738212e-6,-1.2513893072518937e-8,1.9687601817327312e-4,7.513719443070609e-6,-1.2531293180978063e-8,1.9716418145619786e-4,7.727807131336245e-6,-1.255143733487227e-8,1.9735148270881055e-4,7.904972006017888e-6,-1.256828984627858e-8,1.9746717430474582e-4,7.989189307001313e-6,-1.2576107854737417e-8,1.9756414464783983e-4,7.945391162788686e-6,-1.2571208909452543e-8,1.9770522673983343e-4,7.772936988045046e-6,-1.255336219063038e-8,1.9794335851555265e-4,7.508737590816236e-6,-1.2526112219574885e-8,1.9830340643788719e-4,7.216310774252375e-6,-1.2495704511570225e-8,1.9877444051722307e-4,6.9643475770128966e-6,-1.2468991956480241e-8,1.9931605492441463e-4,6.804754497374457e-6,-1.2451273955690413e-8,1.99874367496323e-4,6.7599548302468994e-6,-1.2444993679265321e-8,2.0039900027274713e-4,6.82270849799812e-6,-1.2449629419202722e-8,2.0085428305204736e-4,6.964723431631095e-6,-1.2462470630692901e-8,2.012230129828281e-4,7.147810040913146e-6,-1.2479705950981818e-8,2.015048844233702e-4,7.3331078822919305e-6,-1.2497376827881843e-8,2.0171260728942556e-4,7.4869143007848404e-6,-1.2512018298014086e-8,2.0186784837753266e-4,7.583663846056725e-6,-1.2521002574264202e-8,2.0199788115223623e-4,7.6072954724533325e-6,-1.252268798054521e-8,2.0213287762151582e-4,7.552075776678594e-6,-1.25164799413586e-8,2.023032713093168e-4,7.423389313956485e-6,-1.250287524528341e-8,2.025365492604393e-4,7.238354929979809e-6,-1.2483501654253962e-8,2.0285312487000682e-4,7.025543178481034e-6,-1.2461102098633864e-8,2.032615548180566e-4,6.822697696785637e-6,-1.2439358398961576e-8,2.037542292355152e-4,6.671464949679808e-6,-1.2422433892723618e-8,2.043054648544205e-4,6.609017340781519e-6,-1.241418367286807e-8,2.0487402079284614e-4,6.658061470286973e-6,-1.2417141084804209e-8,2.0541091916908847e-4,6.8183286453880834e-6,-1.2431576848491557e-8,2.0587131297464264e-4,7.063148440915905e-6,-1.2455025250029365e-8,2.0622704282800456e-4,7.343452105811302e-6,-1.2482583077772363e-8,2.064756840198449e-4,7.598950788494315e-6,-1.2508013979414962e-8,2.0664282168786132e-4,7.773572333271332e-6,-1.2525372054527937e-8,2.0677643799377142e-4,7.830732911241555e-6,-1.2530654293509096e-8,2.069346139971509e-4,7.763969732585166e-6,-1.252297208136234e-8,2.0716968071363143e-4,7.599507240572051e-6,-1.2504868071919612e-8,2.075133831394106e-4,7.389324388835024e-6,-1.2481637303243253e-8,2.079680047158014e-4,7.196295440443784e-6,-1.2459822238997104e-8,2.0850678511286473e-4,7.076223630712314e-6,-1.2445361216516968e-8,2.09083353603553e-4,7.063208010991012e-6,-1.2442027977015235e-8,2.0964607359171694e-4,7.163288146015455e-6,-1.245068068918884e-8,2.1015153998119444e-4,7.357300167494584e-6,-1.2469466055778998e-8,2.105729208467013e-4,7.6098914082299795e-6,-1.2494715588623496e-8,2.1090206952705673e-4,7.880059152858419e-6,-1.2522068534104855e-8,2.1114705135521922e-4,8.129688725332927e-6,-1.2547426277362978e-8,2.11327623932954e-4,8.328785948689606e-6,-1.2567558359396523e-8,2.1147063027153733e-4,8.45781981905388e-6,-1.2580371063842255e-8,2.116062170779773e-4,8.508318739735103e-6,-1.2584953522756101e-8,2.1176489219544155e-4,8.482821664273282e-6,-1.2581533889456395e-8,2.1197487908306462e-4,8.394780190546323e-6,-1.2571439050506965e-8,2.1225908578335732e-4,8.268336110121104e-6,-1.2557075378613995e-8,2.1263125815806694e-4,8.137282943263268e-6,-1.2541867403695375e-8,2.1309149641396343e-4,8.042041677157666e-6,-1.2530015745409708e-8,2.1362232923984473e-4,8.023413973770414e-6,-1.2525906367685887e-8,2.141877185477536e-4,8.112834049185048e-6,-1.2533095524318957e-8,2.1473774581068903e-4,8.3210914871919e-6,-1.2553050116063849e-8,2.1522011129794914e-4,8.630080126066386e-6,-1.2584142235542132e-8,2.1559591766686086e-4,8.992908412392393e-6,-1.2621531987775295e-8,2.1585357677476676e-4,9.344915051726786e-6,-1.2658284937238318e-8,2.1601416666211921e-4,9.622593263837225e-6,-1.2687427039128446e-8,2.1612534488552648e-4,9.78287653756447e-6,-1.2704087855205246e-8,2.1624652249650514e-4,9.81514982519467e-6,-1.2706860844017089e-8,2.1643148366610137e-4,9.742398905621779e-6,-1.2697982257149455e-8,2.1671439125053968e-4,9.612686075077394e-6,-1.2682472194826136e-8,2.1710262618754617e-4,9.484942883597433e-6,-1.2666663487275253e-8,2.1757724992220657e-4,9.413689438536168e-6,-1.2656583095773519e-8,2.180998881122663e-4,9.436636301726828e-6,-1.2656579120301334e-8,2.1862349866680082e-4,9.567821662343242e-6,-1.2668481926430359e-8,2.1910382506955763e-4,9.797254291937394e-6,-1.2691451235088495e-8,2.1950852180187367e-4,1.0096209406878957e-5,-1.2722473686840802e-8,2.1982203208259762e-4,1.0425814221374339e-5,-1.2757289563240955e-8,2.2004593990235762e-4,1.0746017377170483e-5,-1.279141904043139e-8,2.2019594725035345e-4,1.1022697089033848e-5,-1.2821004358988786e-8,2.2029723714439854e-4,1.1231954282858246e-5,-1.284332207805951e-8,2.2037976133546005e-4,1.1361792925413278e-5,-1.285697045584737e-8,2.204743050715671e-4,1.1412058566647195e-5,-1.2861837839761607e-8,2.2060942735678435e-4,1.139360836886871e-5,-1.2858986747465736e-8,2.2080886496210573e-4,1.1327297175898568e-5,-1.2850546480647196e-8,2.2108883199633075e-4,1.1242779422350658e-5,-1.2839626876663463e-8,2.2145479727229533e-4,1.117656313941561e-5,-1.2830179748791994e-8,2.218978524119614e-4,1.1168241380550244e-5,-1.2826654765479383e-8,2.223918274118358e-4,1.125368271022084e-5,-1.2833271066266854e-8,2.2289360923823234e-4,1.1454892795233024e-5,-1.2852838922138324e-8,2.2334970247736352e-4,1.1768728623398749e-5,-1.288537714386462e-8,2.2371036423718345e-4,1.2159917386077626e-5,-1.2927189221052759e-8,2.2394786325905398e-4,1.2565129918165497e-5,-1.2971236046903973e-8,2.2407012789687003e-4,1.2910776320851335e-5,-1.3009149058543156e-8,2.2412080512659326e-4,1.3138423398335554e-5,-1.3034156281509835e-8,2.2416403518024246e-4,1.3225258584550226e-5,-1.3043432270151873e-8,2.242617193073924e-4,1.31895428771349e-5,-1.303873108036752e-8,2.244545122747121e-4,1.3080514119203897e-5,-1.302529805681681e-8,2.247533541484739e-4,1.2960154137190002e-5,-1.3009918312410972e-8,2.2514149681588606e-4,1.288542370013457e-5,-1.2999015386017868e-8,2.2558304221404233e-4,1.2896057941767493e-5,-1.2997297157850649e-8,2.2603369392279116e-4,1.3009117176953077e-5,-1.3007061790201875e-8,2.264507770082446e-4,1.3219243737167519e-5,-1.3028087674737915e-8,2.2680097981678127e-4,1.3502917845584759e-5,-1.3057987443448877e-8,2.2706512925085745e-4,1.3825112165154655e-5,-1.3092899943215674e-8,2.2723980182644377e-4,1.4146844760246526e-5,-1.312835960370297e-8,2.2733606659061404e-4,1.4432176615984899e-5,-1.316015072754668e-8,2.2737613010144923e-4,1.4653552288310205e-5,-1.3184975709050629e-8,2.2738889061095103e-4,1.4794967275872633e-5,-1.3200846957566375e-8,2.2740539458427508e-4,1.485298630857986e-5,-1.3207200828708261e-8,2.2745491914188558e-4,1.48361020505556e-5,-1.3204810600297655e-8,2.2756189301271438e-4,1.4763163136429955e-5,-1.3195611648549548e-8,2.2774342945347363e-4,1.4661392768367974e-5,-1.318251654013457e-8,2.2800711646406744e-4,1.4564073938727435e-5,-1.3169225227622847e-8,2.2834878588194946e-4,1.4507553748530596e-5,-1.3159958692847593e-8,2.287503519544513e-4,1.4526782542924386e-5,-1.3158983635572145e-8,2.2917872878590236e-4,1.4648464790645952e-5,-1.3169782666393387e-8,2.2958798770619958e-4,1.4881779191418465e-5,-1.3193861131791164e-8,2.2992738155013117e-4,1.5208892056563145e-5,-1.3229487616666131e-8,2.3015629354228862e-4,1.5580637661667213e-5,-1.3271075564489491e-8,2.3026234150305317e-4,1.5924292688085457e-5,-1.331008459441756e-8,2.3027280889853033e-4,1.6165999528322054e-5,-1.3337725131374554e-8,2.3024916735463958e-4,1.6259694822258185e-5,-1.3348408049319169e-8,2.3026415545918469e-4,1.6206222473384533e-5,-1.334196191813377e-8,2.303737207873722e-4,1.6050930760160185e-5,-1.3323325049974134e-8,2.3059936656605264e-4,1.586282236461781e-5,-1.3300188674521488e-8,2.309273397309413e-4,1.5709080036263402e-5,-1.328019137069129e-8,2.3131987266427655e-4,1.5637160807724585e-5,-1.3268952807786755e-8,2.3172978464227394e-4,1.5668110115491378e-5,-1.3269276372437528e-8,2.3211253167230013e-4,1.579838872190477e-5,-1.3281222326984168e-8,2.3243381968418038e-4,1.6005968044664794e-5,-1.3302645758738719e-8,2.326732628860945e-4,1.6257565449448583e-5,-1.3329918467555854e-8,2.3282524674238283e-4,1.651551762610959e-5,-1.3358697686405669e-8,2.3289788056306504e-4,1.674381866600482e-5,-1.3384673664069943e-8,2.3291052997145164e-4,1.6913063406322665e-5,-1.3404220672953126e-8,2.3289032072172143e-4,1.700401500413197e-5,-1.3414875180816028e-8,2.3286803858424185e-4,1.7009620439693355e-5,-1.3415595856352999e-8,2.328739025738482e-4,1.6935397883075238e-5,-1.3406804390503862e-8,2.3293373693946084e-4,1.6798289595216762e-5,-1.3390246403408823e-8,2.3306590757557672e-4,1.6624355851294292e-5,-1.3368746419574027e-8,2.3327907598190837e-4,1.6445739810291813e-5,-1.334591547674048e-8,2.3357067709120252e-4,1.6297106752196225e-5,-1.3325815392409889e-8,2.3392604926032666e-4,1.621152078481189e-5,-1.3312532903507163e-8,2.3431832644508823e-4,1.6215461539974096e-5,-1.3309583151627188e-8,2.3470981296471905e-4,1.6322593851986297e-5,-1.3319074542987742e-8,2.350563586266793e-4,1.6526652827706943e-5,-1.3340700335972787e-8,2.3531635632917516e-4,1.6795606538324656e-5,-1.3370882993466678e-8,2.3546449597391608e-4,1.7071515543042718e-5,-1.3402687449686616e-8,2.3550651143611578e-4,1.7281479296035646e-5,-1.3427194538859864e-8,2.354860662292638e-4,1.736119067195648e-5,-1.3436455207389577e-8,2.354745423562714e-4,1.7282664410910297e-5,-1.3426879119078932e-8,2.3554413988636483e-4,1.7069422488256228e-5,-1.340100684306105e-8,2.3573843359821594e-4,1.678735137254538e-5,-1.3366380140959267e-8,2.3605794175604995e-4,1.6516440745440828e-5,-1.333226482032832e-8,2.364666128436858e-4,1.6321330128306323e-5,-1.3306309980540544e-8,2.369106704107837e-4,1.6235316784717564e-5,-1.329272307712745e-8,2.373372411284009e-4,1.6259841608278305e-5,-1.3292124623119489e-8,2.3770594596677692e-4,1.6372931299750227e-5,-1.3302373390412671e-8,2.37993246071328e-4,1.6539681380754335e-5,-1.3319651568231e-8,2.3819211939730327e-4,1.6721074059761234e-5,-1.3339438365960858e-8,2.3830961030271236e-4,1.6880231173799742e-5,-1.335727306140373e-8,2.3836375681855868e-4,1.6986636247061285e-5,-1.3369334013755532e-8,2.3838035533166568e-4,1.701905501777484e-5,-1.33728675782703e-8,2.383895323005555e-4,1.6967478698558967e-5,-1.3366467989198284e-8,2.38422070556946e-4,1.6834089647268072e-5,-1.3350197399653409e-8,2.3850556570700744e-4,1.6633066038275236e-5,-1.3325545739040455e-8,2.3866072662191243e-4,1.6388979589520194e-5,-1.32952356240298e-8,2.3889832942241776e-4,1.613376763873816e-5,-1.3262897145540119e-8,2.3921726251748584e-4,1.5902571416136462e-5,-1.3232645062727092e-8,2.3960391772207974e-4,1.5728837101970084e-5,-1.3208572512056224e-8,2.4003306897066437e-4,1.5639090729009958e-5,-1.3194159292205045e-8,2.4047031694471747e-4,1.5647770280759835e-5,-1.3191601366742145e-8,2.408763192909911e-4,1.5752441997243236e-5,-1.320109658813078e-8,2.4121332685415593e-4,1.593012198481269e-5,-1.3220221033409507e-8,2.414543324312317e-4,1.6136500786482835e-5,-1.3243695130072412e-8,2.4159379503856346e-4,1.631092961927605e-5,-1.3263965868818756e-8,2.416563493402631e-4,1.6389819439386743e-5,-1.327294423034196e-8,2.416971351728686e-4,1.6327839253466488e-5,-1.3264745691624821e-8,2.4178793488179986e-4,1.611933231700696e-5,-1.323839068662466e-8,2.4199092390150611e-4,1.580664719687679e-5,-1.3198809867441091e-8,2.4233282522947923e-4,1.546635588883893e-5,-1.315515486800695e-8,2.42795161206397e-4,1.5179028049018296e-5,-1.3117189496490207e-8,2.4332560646111933e-4,1.5000197877739287e-5,-1.3091844309906427e-8,2.4386095630435782e-4,1.494730909943296e-5,-1.3081612462610715e-8,2.443476230301867e-4,1.5004081626133282e-5,-1.3084945993000656e-8,2.447521154769013e-4,1.513382584235183e-5,-1.3097713318885834e-8,2.4506227529865664e-4,1.529290726155764e-5,-1.3114741963102495e-8,2.4528352222681816e-4,1.5440210476210758e-5,-1.3130971246521739e-8,2.454337577216843e-4,1.554235342838633e-5,-1.3142157207141877e-8,2.4553879145722154e-4,1.5576059836117717e-5,-1.3145250706278301e-8,2.456286535961741e-4,1.5529165859651303e-5,-1.313858102750454e-8,2.4573440156436537e-4,1.5401067537156352e-5,-1.312192399297445e-8,2.4588495016140917e-4,1.5202739157127264e-5,-1.3096479904399723e-8,2.4610367254958987e-4,1.4956012999883382e-5,-1.3064759078539774e-8,2.4640490122437197e-4,1.4691580503364029e-5,-1.3030343464314749e-8,2.467909300514352e-4,1.444531172938255e-5,-1.299749108332309e-8,2.472503716788958e-4,1.4252978327617077e-5,-1.2970574858005676e-8,2.4775861981413225e-4,1.4143991993889015e-5,-1.2953383025503955e-8,2.482808292580495e-4,1.4135196216785739e-5,-1.2948356913590524e-8,2.4877732410946555e-4,1.4225995061342692e-5,-1.295589775406787e-8,2.492108317402965e-4,1.439598151292376e-5,-1.297390984283666e-8,2.495546496005041e-4,1.4605934664835293e-5,-1.2997753852338253e-8,2.4980058126312243e-4,1.4802976706468473e-5,-1.3020791083393111e-8,2.499648122532091e-4,1.4930522578149964e-5,-1.3035648974352602e-8,2.500889719183307e-4,1.4942625206491755e-5,-1.3036141981384923e-8,2.502332948927713e-4,1.4819937637970325e-5,-1.301942657528763e-8,2.5046053996871437e-4,1.458121681939785e-5,-1.2987549154608683e-8,2.508142835955966e-4,1.4282610184457833e-5,-1.294739872783118e-8,2.513011655620707e-4,1.4000896174505066e-5,-1.2908626141535389e-8,2.5188749805877945e-4,1.3806467779425598e-5,-1.288027326783674e-8,2.5251290861910285e-4,1.3739666020847875e-5,-1.286777210466249e-8,2.531129543478528e-4,1.3801980509944972e-5,-1.2871727408598455e-8,2.5363851477171943e-4,1.3963248403024858e-5,-1.288867324663838e-8,2.5406475771490327e-4,1.4177059797621997e-5,-1.2912910633960826e-8,2.543902585935145e-4,1.4395467555977205e-5,-1.2938351134914312e-8,2.5463093937902145e-4,1.457846819591566e-5,-1.295977796036463e-8,2.54813136638039e-4,1.4698160028561238e-5,-1.2973461632588474e-8,2.54967981581639e-4,1.4739503755468211e-5,-1.2977324579518188e-8,2.551274405562864e-4,1.4699654562096109e-5,-1.2970877284779953e-8,2.5532142348084824e-4,1.4587027197628657e-5,-1.2955077061468487e-8,2.5557518672666003e-4,1.4420380583572636e-5,-1.2932175481281603e-8,2.5590650103593743e-4,1.4227567224019883e-5,-1.2905548350362233e-8,2.5632253366152845e-4,1.4043212860365394e-5,-1.287943866108471e-8,2.568170361656435e-4,1.3904585536052271e-5,-1.285851192094646e-8,2.5736901125437294e-4,1.384542362248093e-5,-1.2847155402873307e-8,2.5794421239109947e-4,1.388843946076878e-5,-1.2848556465930347e-8,2.5850035030317047e-4,1.403829277109537e-5,-1.2863749847957166e-8,2.589956924459188e-4,1.4277505943607658e-5,-1.2890953907157057e-8,2.5939924357184515e-4,1.4567459494134127e-5,-1.2925525776831505e-8,2.596996993209261e-4,1.4855178454192225e-5,-1.2960705554380696e-8,2.5991041763439313e-4,1.5084813281586183e-5,-1.2989066766874659e-8,2.6006856585053105e-4,1.5211326349834672e-5,-1.3004361087109885e-8,2.602278725687631e-4,1.5213126500508729e-5,-1.3003294012197764e-8,2.6044583194747623e-4,1.5100107540589441e-5,-1.2986715711409487e-8,2.607678954750293e-4,1.4913817381501574e-5,-1.2959760458590743e-8,2.6121309337834975e-4,1.471789554231206e-5,-1.2930675613196354e-8,2.617666739936158e-4,1.4580147819581488e-5,-1.2908507750034461e-8,2.623838952785086e-4,1.4551998820653167e-5,-1.2900372867353652e-8,2.6300436611455946e-4,1.465364176688067e-5,-1.2909389577639032e-8,2.6357084573760297e-4,1.4871017273617807e-5,-1.293411963262422e-8,2.640443869669923e-4,1.5164543154651873e-5,-1.2969586613798102e-8,2.64410737769705e-4,1.548385098723045e-5,-1.3009177614068972e-8,2.6467821443590807e-4,1.5781554620764703e-5,-1.304650817055167e-8,2.648707916531887e-4,1.602193715049497e-5,-1.3076659266674922e-8,2.650204220774552e-4,1.6184189121099728e-5,-1.309668323525758e-8,0.00026516090400317593,1.626199634794566e-5,-1.3105583832666333e-8,2.653238016446657e-4,1.626157432670227e-5,-1.3104045518856175e-8,2.6553584872296177e-4,1.619953400725645e-5,-1.3094120073806924e-8,2.6581694404772865e-4,1.6101034287601604e-5,-1.3078966785871532e-8,2.6617803512994057e-4,1.599792643257314e-5,-1.3062635061321467e-8,2.666186743112128e-4,1.5926127147520803e-5,-1.3049789195619948e-8,2.671247177812508e-4,1.5921303481340893e-5,-1.3045222202262528e-8,2.6766743265218185e-4,1.6012313493671894e-5,-1.3053032308258361e-8,2.682058449019524e-4,1.6212993883764293e-5,-1.3075494404843321e-8,2.6869381754198406e-4,1.6514662380160417e-5,-1.3111934310112453e-8,2.690915392547794e-4,1.688312459406304e-5,-1.3158158531168263e-8,2.693782808806831e-4,1.726356887424719e-5,-1.3206971608799833e-8,2.695612194819721e-4,1.7593764377538284e-5,-1.3249899145305468e-8,2.696757969225932e-4,1.7821710710339604e-5,-1.3279603194733367e-8,2.697766262792751e-4,1.7921174890309415e-5,-1.3292069257397106e-8,2.699221571586634e-4,1.7899381168918985e-5,-1.3287759748585721e-8,2.701585140051222e-4,1.7794662659770487e-5,-1.3271427248333769e-8,2.7050743193193414e-4,1.7665574219650932e-5,-1.3250774476406711e-8,2.70961263500747e-4,1.7575149467220522e-5,-1.3234415117476824e-8,2.714859046544607e-4,1.7574737909080554e-5,-1.3229680863399421e-8,2.7203052331977687e-4,1.769170100835547e-5,-1.324083414757745e-8,2.7254117585821244e-4,1.7924189075479015e-5,-1.3268167506586092e-8,2.729741997691505e-4,1.8244128847031433e-5,-1.3308232751599827e-8,2.733054105239225e-4,1.860683481743521e-5,-1.335506308671976e-8,2.7353289682521516e-4,1.896345349760831e-5,-1.3401893664246537E-08,2.73673842637392e-4,1.9271996265799993e-5,-1.3442759869942829e-8,2.737578282615282e-4,1.9504213337008058e-5,-1.3473535503050086e-8,2.738194967147241e-4,1.9647848480923535e-5,-1.3492301040760689e-8,2.7389256852830313e-4,1.9705491001702175e-5,-1.3499197079042159e-8,2.740058704701865e-4,1.9691777654711647e-5,-1.3496023246278775e-8,2.741810262902575e-4,1.9630334079578346e-5,-1.3485807494797274e-8,2.744310131178127e-4,1.9551058078948304e-5,-1.347245824705066e-8,2.747588655876082e-4,1.948759434125028e-5,-1.3460484076347776e-8,2.7515620852405575e-4,1.9474357175009086e-5,-1.3454669802832967e-8,2.7560192124283077e-4,1.954221941430565e-5,-1.3459536895858992e-8,2.760620815654129e-4,1.9712188518429024e-5,-1.3478446229307413e-8,2.764931140341487e-4,1.998747860898367e-5,-1.3512381587099931e-8,2.768499825458415e-4,2.0346447047745347e-5,-1.3558791588758346e-8,2.7709934818909317e-4,2.0740975236487897e-5,-1.3611211001438215e-8,2.7723376707050325e-4,2.1104902391710272e-5,-1.3660381144345922e-8,2.7727951721184677e-4,2.1372977512600064e-5,-1.3696942301516698e-8,2.7729156569639065e-4,2.150364337470411e-5,-1.371469511192883e-8,2.7733590146886866e-4,2.1494482605572527e-5,-1.3712813986364758e-8,2.7746730910535865e-4,2.1382407878183956e-5,-1.3695935779833347e-8,2.777129170467314e-4,2.1229571564400812e-5,-1.3672319050985458e-8,2.7806720281447627e-4,2.1102980963536406e-5,-1.3651166775522754e-8,2.7849753778370835e-4,2.105639774177976e-5,-1.3640203101975407e-8,2.7895571606205595e-4,2.1119312740397868e-5,-1.36440855384151e-8,2.7939082054513723e-4,2.129380639205303e-5,-1.3663777942921247e-8,2.797602560487331e-4,2.155785003144518e-5,-1.3696778046641539e-8,2.8003725820557e-4,2.1872858482824725e-5,-1.3738005196123418e-8,2.802142004107094e-4,2.219328394309847e-5,-1.3781099702460829e-8,2.8030175709160225e-4,2.2476143948988695e-5,-1.381982555271776e-8,2.8032472939190016e-4,2.268859947612066e-5,-1.3849251125167231e-8,2.803159812312574e-4,2.2812371570131774e-5,-1.386647093141835e-8,2.803101183459111e-4,2.2844791364820303e-5,-1.387080182051307e-8,2.8033821087907477e-4,2.2797146171930603e-5,-1.3863552789390385e-8,2.8042420340903043e-4,2.2691458727297488e-5,-1.3847561307081722e-8,2.8058292600206835e-4,2.2556824850266946e-5,-1.3826691726476474e-8,2.8081916298474405e-4,2.2425953925453616e-5,-1.3805403994071266e-8,2.8112721903985157e-4,2.2331951025042324e-5,-1.3788383591687185e-8,2.8149066344888076e-4,2.2304951530066296e-5,-1.3780134438421739e-8,2.8188238547674434e-4,2.2367947560152177e-5,-1.3784386060479597e-8,2.822658721965546e-4,2.2531246589409013e-5,-1.380320444288144e-8,2.8259936195518845e-4,2.278597036190299e-5,-1.38358812243578e-8,2.828444569445365e-4,2.3098866508920356e-5,-1.3877999412904191e-8,2.82979105364523e-4,2.341279564136978e-5,-1.3921401485040897e-8,2.8301103748081484e-4,2.3657751771110462e-5,-1.3955814384309308e-8,2.8298340770177647e-4,2.37731328817469e-5,-1.3972176264270338e-8,2.8296484207766603e-4,2.3733029889624773e-5,-1.3966353021702428e-8,2.830249037760498e-4,2.3559828091315065e-5,-1.3941085550751729e-8,2.832073180871705e-4,2.331632681640619e-5,-1.3904875495648811e-8,2.8351576155621184e-4,2.308077284889224e-5,-1.3868553787955135e-8,2.8391769853862014e-4,2.2919547763551398e-5,-1.384157822144315e-8,2.8436019434869387e-4,2.287017449835268e-5,-1.3829694080640847e-8,2.847876469600927e-4,2.2937814065198065e-5,-1.3834319348602738e-8,2.8515485284144533e-4,2.3101223801610495e-5,-1.3853146215244e-8,2.85433793371567e-4,2.332264590269975e-5,-1.3881308460203237e-8,2.856153143340677e-4,2.3557815709961442e-5,-1.3912679492992264e-8,2.857074693224336e-4,2.3764383273789843e-5,-1.3941085356826256e-8,2.8573186713930584e-4,2.390828726211465e-5,-1.3961325891680267e-8,2.857188696819171e-4,2.39679560926046e-5,-1.3969911360196299e-8,2.8570231452007376e-4,2.3936257400670855e-5,-1.3965439487283113e-8,2.857144182944666e-4,2.382028199606721e-5,-1.394860030825303e-8,2.8578147687363805e-4,2.3639260037550102e-5,-1.3921869960500952e-8,2.8592084201393037e-4,2.342114432945347e-5,-1.3889012634409748e-8,2.8613931356911184e-4,2.3198585473751224e-5,-1.3854531958188717e-8,2.864327166543551e-4,2.3004883616430312e-5,-1.3823159470958645e-8,2.867863494363946e-4,2.2870125806672398e-5,-1.3799380523453057e-8,2.8717609388622425e-4,2.2817452101605205e-5,-1.378693317459741e-8,2.8757018441867614e-4,2.2859200077940465e-5,-1.378819562942302e-8,2.8793216925267906e-4,2.2992674449651844e-5,-1.3803413833910311e-8,2.8822619040308e-4,2.3196048522297792e-5,-1.3829891060439484e-8,2.8842548394305867e-4,2.3426397377221117e-5,-1.386152544402009e-8,2.885234854253173e-4,2.362330839766609e-5,-1.3889296541301406e-8,2.885438986592403e-4,2.3721722641275258e-5,-1.3903263102308176e-8,2.885424114376653e-4,2.3674183477913317e-5,-1.3896003696172715e-8,2.885929118709168e-4,2.3474313471584593e-5,-1.3866152311867126e-8,2.8875979009874574e-4,2.316637368653028e-5,-1.3819777847051538e-8,2.890704395776163e-4,2.283074746827438e-5,-1.3768264842029872e-8,2.895049885128943e-4,2.2551813469805068e-5,-1.3723757443181604e-8,2.900082669629545e-4,2.2387357101861408e-5,-1.3694865214262721e-8,2.9051374253208817e-4,2.235489612947439e-5,-1.36846867449533e-8,2.909649021340734e-4,2.2436103025525936e-5,-1.3691271872221072e-8,2.9132650488845045e-4,2.2590621258034392e-5,-1.3709370985045623e-8,2.9158637691061105e-4,2.2770429252790272e-5,-1.3732329579321405e-8,2.917517969683068e-4,2.2930448877807925e-5,-1.3753577653967498e-8,2.9184401188628566e-4,2.303489006955536e-5,-1.3767628184703838e-8,2.918927671925494e-4,2.3060445344766418e-5,-1.3770682898745772e-8,2.919314014291164e-4,2.299749274559909e-5,-1.3760937852867262e-8,2.9199247847638013e-4,2.2849926468667013e-5,-1.3738629102849638e-8,2.921039092862608e-4,2.2633834466347406e-5,-1.370584503210565e-8,2.92285666948327e-4,2.2375057960451114e-5,-1.3666144851793793e-8,2.925473850976914e-4,2.2105676829510934e-5,-1.3624037426111123e-8,2.9288716836903646e-4,2.185972836237773e-5,-1.3584395520403735e-8,2.93291734444017e-4,2.1668667070356885e-5,-1.355186975838904e-8,2.937378250344291e-4,2.1556973898122735e-5,-1.3530315087571015e-8,2.941947974500097e-4,2.1538210800188506e-5,-1.3522214675142932e-8,2.9462828965697827e-4,2.161178421989162e-5,-1.3528102494893166e-8,2.950049836659742e-4,2.176062612107966e-5,-1.3546028771640402e-8,2.9529877895283186e-4,2.1950341406551685e-5,-1.3571220417731373e-8,2.95498425036084e-4,2.2131299035723218e-5,-1.3596256341667975e-8,2.956153580837951e-4,2.22458472466366e-5,-1.361215968484941e-8,2.9568840667843486e-4,2.224225736534045e-5,-1.3610641296881544e-8,2.957800686939963e-4,2.2093977823393965e-5,-1.3587181550703598e-8,2.9595999348482825e-4,2.181678085271199e-5,-1.3543713834794471e-8,2.9627849161117025e-4,2.1471574018712877e-5,-1.3489060449153417e-8,2.9674319322068856e-4,2.1145294614123724e-5,-1.343609251827474e-8,2.9731425733706953e-4,2.09172161107864e-5,-1.3396774613550436e-8,2.9792187015270356e-4,2.082994835974585e-5,-1.3377886272534408e-8,2.984942122206886e-4,2.0880413673918396e-5,-1.3379586077781747e-8,2.989796522647844e-4,2.1030612573302552e-5,-1.3396809617098212e-8,2.993552928593664e-4,2.1226817991504233e-5,-1.3421929704689853e-8,2.9962420917402626e-4,2.141632957853267e-5,-1.3447160232838052e-8,2.998076048709863e-4,2.155742331817498e-5,-1.3466074608348756e-8,2.999366508951447e-4,2.162322261659597e-5,-1.3474303011588651e-8,3.0004605342871587e-4,2.160194083120627e-5,-1.3469704117491014e-8,3.001694758979349e-4,2.1495566477339442e-5,-1.3452259987949643e-8,3.003361714790454e-4,2.131801033581268e-5,-1.34238210598226e-8,3.00568250260884e-4,2.109291783629834e-5,-1.3387751649168571e-8,3.0087835205456256e-4,2.0850953582104578e-5,-1.3348491679679161e-8,3.012678716217725e-4,2.062624812724149e-5,-1.3311032550608233e-8,3.0172620046434173e-4,2.045193589878053e-5,-1.3280308792564854e-8,3.0223147737772435e-4,2.0355180263715515e-5,-1.3260534503027968e-8,3.027530905670879e-4,2.03523675046193e-5,-1.3254528922034592e-8,3.0325589739471393e-4,2.0445234386801097e-5,-1.326309141038214e-8,3.0370584098537583e-4,2.061873537337817e-5,-1.3284535301274032e-8,3.0407635475241393e-4,2.084132023298335e-5,-1.3314523112149486e-8,3.043548220950259e-4,2.106807932262644e-5,-1.334635951759101e-8,3.0454817712909907e-4,2.1247259597402573e-5,-1.337190847136496e-8,3.0468606841306306e-4,2.1330590886984806e-5,-1.338324729373875e-8,3.048190993710789e-4,2.1286814653441683e-5,-1.337492842426596e-8,3.0500947292813136e-4,2.1115405047104646e-5,-1.3346293728374482e-8,3.0531334240780847e-4,2.0854333144826318e-5,-1.330280661991811e-8,3.0575933228971686e-4,2.057446009779354e-5,-1.3255246543245369e-8,3.063336126043048e-4,2.035786012500672e-5,-1.3216390908366007e-8,3.0698195437051866e-4,2.0267933422058764e-5,-1.3196404367399528e-8,3.076297906607286e-4,2.0326989761099988e-5,-1.3199302777510673e-8,3.0820929098613465e-4,2.051301152374637e-5,-1.3222284594361782e-8,3.086790667643346e-4,2.0774250916837253e-5,-1.3257795354211066e-8,3.0902959140693113e-4,2.1050411845724763e-5,-1.3296685507824527e-8,3.0927719251130383e-4,2.1289582840270976e-5,-1.3330825505471842e-8,3.0945357058928e-4,2.145674944124067e-5,-1.33545105445674e-8,3.095961699201846e-4,2.153531284308726e-5,-1.3364818313685573e-8,3.0974146708267824e-4,2.152488868920895e-5,-1.3361368767381744e-8,3.0992097203242546e-4,2.1438017800151246e-5,-1.3345858365688848e-8,3.1015887202686857e-4,2.1297039816659653e-5,-1.3321563576426557e-8,3.1047036154725256e-4,2.1131275414374563e-5,-1.3292871575557973e-8,3.1086020309551777e-4,2.0974113615666323e-5,-1.3264820449894448e-8,0.00031132159469673937,2.0859458460963544e-5,-1.3242589706398116e-8,3.118358892299663e-4,2.08172018406579e-5,-1.3230876462418405e-8,3.123739556176808e-4,2.0867961619606607e-5,-1.3233145002595053e-8,3.1289980273878425e-4,2.1017999708571363e-5,-1.3250835029635484e-8,3.133765322075633e-4,2.1255710514705023e-5,-1.3282711917019378e-8,3.1377389441996034e-4,2.1551170659549085e-5,-1.332461455740315e-8,3.1407592571305155e-4,2.1859774047728385e-5,-1.3369828669154369e-8,3.1428671803730246e-4,2.212997996013805e-5,-1.3410177045357869e-8,3.14432506824964e-4,2.2314131680739853e-5,-1.3437721540724634e-8,3.1455876362506394e-4,2.2380463429616143e-5,-1.3446783871977407e-8,3.1472170043465105e-4,2.2323641852085563e-5,-1.3435813847370838e-8,3.1497476110345693e-4,2.217044112756572e-5,-1.3408494160108003e-8,3.153526234579617e-4,2.1976994096751363e-5,-1.337345682081832e-8,3.1585774444304715e-4,2.1815602165497123e-5,-1.3342262745022897e-8,3.1645594131746787e-4,2.1753230588716412e-5,-1.332596859353312e-8,3.170852855440563e-4,2.1829339986754936e-5,-1.3331486306519194e-8,3.1767609064744373e-4,2.204329336795916e-5,-1.335938578246327e-8,3.1817307131503856e-4,2.2357437282565592e-5,-1.3404182809004631e-8,3.185496252597622e-4,2.2713150253212193e-5,-1.3456770258106373e-8,3.188097318692035e-4,2.305068096859074e-5,-1.350756753269062e-8,3.1898017607109944e-4,2.3324049974074164e-5,-1.3548973772346303e-8,3.1909924742474843e-4,2.3507561072834535e-5,-1.3576520061523686e-8,3.192068961684871e-4,2.359541331330978e-5,-1.3588911123510958e-8,3.1933831976116504e-4,2.3597783076813762e-5,-1.358746123971623e-8,3.1952065880791903e-4,2.3536160980096142e-5,-1.3575362908229614e-8,3.19771579080949e-4,2.3439311888661372e-5,-1.3557025218592592e-8,3.200985885643759e-4,2.3340011786561243e-5,-1.3537543756519094e-8,3.2049846336595103e-4,2.3272031254568778e-5,-1.3522245412330314e-8,3.2095680118528186e-4,2.3266656684082567e-5,-1.3516194501257755e-8,3.214482960990994e-4,2.3348264536126095e-5,-1.3523546070473995e-8,3.219387035953197e-4,2.352905494166589e-5,-1.3546710031825095e-8,3.2238945173181284e-4,2.3803973484541637e-5,-1.3585453917150966e-8,3.2276517284783867e-4,2.414782235178386e-5,-1.3636274656717374e-8,3.2304300787259485e-4,2.4516917684648338e-5,-1.369247871891746e-8,3.2322093588827404e-4,2.4856694790520883e-5,-1.374527463790208e-8,3.2332167991338466e-4,2.5114409674883268e-5,-1.3785796286515207e-8,3.233897052011945e-4,2.525357146846435e-5,-1.3807516666649438e-8,3.2348120921461983e-4,2.5265406266578555e-5,-1.3808261001094046e-8,3.2364963922767976e-4,2.5173284625345988e-5,-1.3791120413398418e-8,3.2393091613960477e-4,2.5028248522414485e-5,-1.3763924450587002e-8,3.243327110819311e-4,2.489645279708152e-5,-1.3737355303383892e-8,3.2483114194985555e-4,2.4841661933600615e-5,-1.3722151158493351e-8,3.253764637315329e-4,2.4907661106982096e-5,-1.3726145974744325e-8,3.2590667505080653e-4,2.5106163518978407e-5,-1.3752074004335538e-8,3.263648743232834e-4,2.5414592771149465e-5,-1.3796943801410434e-8,3.267142644419916e-4,2.5784562274762126e-5,-1.3853232512079237e-8,3.2694560655390203e-4,2.6157379978950974e-5,-1.3911368702242648e-8,3.2707552207375036e-4,2.64802029079398e-5,-1.3962446344578679e-8,3.2713809920406574e-4,2.6717260951139974e-5,-1.4000191368277358e-8,3.2717430412455535e-4,2.685395991046812e-5,-1.4021757723105099e-8,3.272230250199076e-4,2.6895095773412356e-5,-1.4027518182301305e-8,3.273154328546555e-4,2.6859988741622723e-5,-1.4020303863838187e-8,3.27472427946398e-4,2.6777052624059808e-5,-1.4004517409235265e-8,3.2770404819257206e-4,2.667917357422416e-5,-1.3985374637999391e-8,3.2800968800751206e-4,2.6600135622202087e-5,-1.396833964272351e-8,3.283784197698704e-4,2.65715822213231e-5,-1.3958675851617953e-8,3.2878934377281676e-4,2.661975357857392e-5,-1.3960963251046796e-8,3.2921252136175277e-4,2.6761429111553565e-5,-1.397844020247438e-8,3.2961152402647006e-4,2.699907821559547e-5,-1.4012129808211943e-8,3.29948753915105e-4,2.7316263206531952e-5,-1.4059921868231094e-8,3.3019401009220286e-4,2.7675690266479282e-5,-1.4116060189696021e-8,3.303348983515174e-4,2.8023052525526852e-5,-1.417164175112956e-8,3.303851664433875e-4,2.8298564869411255e-5,-1.4216501609523993e-8,3.303858174704456e-4,2.845434313568276e-5,-1.4242167403395092e-8,3.303959416014983e-4,2.847131185450436e-5,-1.424477933710207e-8,3.304753311960585e-4,2.8367701265917583e-5,-1.4226626167552076e-8,3.3066574499633107e-4,2.8194592527739406e-5,-1.4195561924860455e-8,3.3097847333721307e-4,2.8020371048836455e-5,-1.4162617817120332e-8,3.3139229136450047e-4,2.7910733393913838e-5,-1.4138840614943994e-8,3.318610576038761e-4,2.7911418740544573e-5,-1.4132437583694847e-8,3.32327158660616e-4,2.8038257552148033e-5,-1.4146944421067845e-8,3.3273630146328536e-4,2.8275956095937735e-5,-1.4180721826563061e-8,3.3304982043797914e-4,2.8584590280257757e-5,-1.4227750741366778e-8,3.332518772704476e-4,2.8911198090895583e-5,-1.4279413650778645e-8,3.3335044303321585e-4,2.9203016014443303e-5,-1.4326720121414798e-8,3.3337264600420897e-4,2.9418844303718548e-5,-1.4362340255230543e-8,3.333565716870711e-4,2.953593528593423e-5,-1.438192328577023e-8,3.333423100299153e-4,2.955156240787833e-5,-1.4384490907506754e-8,3.333646227280616e-4,2.9480245799448394e-5,-1.4372041376989542e-8,3.3344841055820307e-4,2.9348582447400512e-5,-1.434870041016347e-8,3.3360692534264394e-4,2.9189588504290738e-5,-1.4319770705147037e-8,3.338418939605668e-4,2.903780052882538e-5,-1.429092220642219e-8,3.341445478842576e-4,2.8925502238673784e-5,-1.4267598983776846e-8,3.3449686902692956e-4,2.8879716510260736e-5,-1.4254567192028621e-8,3.34872893630502e-4,2.8919305085978387e-5,-1.4255452413328958e-8,3.3524046998712566e-4,2.905162633610626e-5,-1.4272125495191893e-8,3.3556438983591447e-4,2.926868042533546e-5,-1.4303906971243346e-8,3.358120415655983e-4,2.9543700862908523e-5,-1.4346787820191492e-8,3.359620973953016e-4,2.9830621885824582e-5,-1.4393165436296007e-8,3.3601476557872876e-4,3.0069847654572008e-5,-1.4432765793470925e-8,3.3599911919222826e-4,3.020259394749606e-5,-1.4455159337401374e-8,3.3597110300592314e-4,3.019141034190686e-5,-1.4453385307179457e-8,3.35998526488256e-4,3.00380349093956e-5,-1.4427081304578546e-8,3.3613729850181856e-4,2.9787423935761663e-5,-1.4383225010504009e-8,3.3641053011372276e-4,2.9513350056419022e-5,-1.4333808242876725e-8,3.368014006431015e-4,2.9292449987817804e-5,-1.4291641185111276e-8,3.3726185452744576e-4,2.9179980574871958e-5,-1.4266408426820145e-8,3.377303740186198e-4,2.9197037823386694e-5,-1.4262469364142498e-8,3.3814986945613203e-4,2.9330730888683372e-5,-1.427863436126763e-8,3.3848010158714516e-4,2.9543115154846164e-5,-1.4309336642064932e-8,3.38703273259897e-4,2.9783603206552747e-5,-1.4346471770152776e-8,3.388238715787891e-4,3.0001002317025725e-5,-1.4381352417660723e-8,3.388645512106792e-4,3.015313826145052e-5,-1.4406430035573901e-8,3.388596992978482e-4,3.0213214891368453e-5,-1.441656210821404e-8,3.388480896868653e-4,3.0172579589435465e-5,-1.4409671063513486e-8,3.3886595201610624e-4,3.0040010984943417e-5,-1.4386745775937594e-8,3.389415616773652e-4,2.983826465857231e-5,-1.435129353309962e-8,3.3909197448769624e-4,2.9599024245251944e-5,-1.4308467177209232e-8,3.393219732788287e-4,2.935743690567301e-5,-1.4264115645959442e-8,3.396247872186201e-4,2.9147198599977515e-5,-1.4223960274082391e-8,3.3998384944594585e-4,2.8996680396776103e-5,-1.419298232822601e-8,3.4037497978542483e-4,2.8925994092867653e-5,-1.4174970094013113e-8,3.4076876816749476e-4,2.8944576739562157e-5,-1.4172101451461987e-8,3.4113333363185183e-4,2.9048903134653624e-5,-1.4184452613283302e-8,3.4143806830900614e-4,2.9220259014859665e-5,-1.4209426481068721e-8,3.416592313159679e-4,2.942335957385573e-5,-1.4241300071719586e-8,3.4178768959361645e-4,2.9607879560626548e-5,-1.4271351102299056e-8,3.418373350901813e-4,2.971582378240197e-5,-1.4289150939638257e-8,3.4184996084014505e-4,2.9696727082961728e-5,-1.4285356690807156e-8,3.418902633601011e-4,2.952827110856552e-5,-1.425546855762454e-8,3.420270707706498e-4,2.9232745927517535e-5,-1.4202771104298555e-8,3.4230607491550166e-4,2.8876464783064984e-5,-1.4138250014917669e-8,3.4272891522547444e-4,2.8547270391760742e-5,-1.4076783978948293e-8,3.432521860159393e-4,2.8320914566404532e-5,-1.4031512125887654e-8,3.4380643577638096e-4,2.8235399587572567e-5,-1.4009518407800017e-8,3.4432227839255926e-4,2.8284922903914585e-5,-1.4010681330376893e-8,3.4474989405392577e-4,2.8430706232186193e-5,-1.4029244458375631e-8,3.450667007921132e-4,2.8618389049455682e-5,-1.405649452639386e-8,3.4527564357985356e-4,2.879355388007985e-5,-1.4083250375345564e-8,3.453987654829163e-4,2.8912049121438285e-5,-1.4101646097180218e-8,3.45469585268103e-4,2.894525815503267e-5,-1.4106194425210915e-8,3.4552604642457406e-4,2.8881730901118583e-5,-1.4094281874326899e-8,3.4560455047242703e-4,2.8726431535401165e-5,-1.4066215283106948e-8,3.457351529958053e-4,2.84982490045257e-5,-1.4024875511406945e-8,3.459380666037131e-4,2.8226171437823553e-5,-1.397505116091795e-8,3.462216637718113e-4,2.794459723979762e-5,-1.3922581182171141e-8,3.4658209986642525e-4,2.7688322235778394e-5,-1.3873458405560078e-8,3.4700449561030034e-4,2.748781270498401e-5,-1.3833031101689292e-8,3.474653304988083e-4,2.7365322208472776e-5,-1.3805386540778746e-8,3.479355692431911e-4,2.7332084280176915e-5,-1.3792904236856692e-8,3.483841987506852e-4,2.738651159118678e-5,-1.3795909548384521e-8,3.48782076015223e-4,2.7513276120753096e-5,-1.3812375954175199e-8,3.4910623716508923e-4,2.768327317176719e-5,-1.3837706596348546e-8,3.493450066374296e-4,2.785497909947437e-5,-1.3864767635512509e-8,3.4950380428156456e-4,2.7978582520697178e-5,-1.388452258098352e-8,3.496101796449104e-4,2.800470747307293e-5,-1.3887648902006153e-8,3.4971470295323565e-4,2.7898579782032046e-5,-1.3867255990212172e-8,3.498829672228969e-4,2.7657103890016168e-5,-1.3822133605209417e-8,3.5017591926531956e-4,2.7320571946380355e-5,-1.375894735333673e-8,3.5062370726759935e-4,2.6967510508779796e-5,-1.3691352108885298e-8,3.512076836751679e-4,2.668829415482261e-5,-1.3635359280006073e-8,3.518645594543916e-4,2.6549168451208284e-5,-1.3603044848274974e-8,3.525120860381075e-4,2.6567976763254272e-5,-1.359825241655584e-8,3.530801471377777e-4,2.671440633051558e-5,-1.3616465703002289e-8,3.5353016455276417e-4,2.692942938290615e-5,-1.3647971513994665e-8,3.538577002956241e-4,2.7148881753446637e-5,-1.3681795510084634e-8,3.540840771794443e-4,2.7320151877578618e-5,-1.3708567939664234e-8,3.542449634789241e-4,2.740961864282937e-5,-1.372191839944505e-8,3.543805993034693e-4,2.7403434203548572e-5,-1.3718799059739425e-8,3.545289983413223e-4,2.730498627401825e-5,-1.3699233288566783e-8,3.547216624954893e-4,2.7131303055044464e-5,-1.366581028187246e-8,3.5498087228620824e-4,2.690928730173587e-5,-1.3623050830270064e-8,3.5531797095255416e-4,2.6671814970846222e-5,-1.3576675347345746e-8,3.557325408326314e-4,2.6453572621222732e-5,-1.3532810617513158e-8,3.562126332903402e-4,2.628664184351773e-5,-1.3497191162436568e-8,3.5673629776197384e-4,2.619610347960688e-5,-1.3474416118620455e-8,3.5727449108908464e-4,2.6196233744873596e-5,-1.3467331827186608e-8,3.577951171362706e-4,2.628789151186731e-5,-1.3476583429700484e-8,3.582677504977914e-4,2.6457485603445368e-5,-1.3500355686777276e-8,3.5866856083210973e-4,2.667773719840518e-5,-1.3534335889835297e-8,3.58984983565573e-4,2.691031135287597e-5,-1.3571967951946276e-8,3.592197788921785e-4,2.7110381522096033e-5,-1.3605104433755066e-8,3.5939395836391525e-4,2.723347733466807e-5,-1.3625211838772243e-8,3.5954731475294516e-4,2.7245005640118063e-5,-1.3625233122092842e-8,3.5973439287282456e-4,2.7131819567977223e-5,-1.3601941703224978e-8,3.600135954575884e-4,2.6912915110491107e-5,-1.355814290805302e-8,3.60429073295564e-4,2.664325075241653e-5,-1.3503526756102676e-8,3.60990418920039e-4,2.64034696792908e-5,-1.3452835801158697e-8,3.6166146352094975e-4,2.6273775898966717e-5,-1.3421074493356377e-8,3.623688032765512e-4,2.630225709809558e-5,-1.3417659611230746e-8,3.6302889191182174e-4,2.6485921915614753e-5,-1.3442821004948017e-8,3.635787000997205e-4,2.6775836053406942e-5,-1.3488337737398986e-8,3.6399313254539714e-4,2.7100845265447172e-5,-1.3541675775041822e-8,3.6428387361378935e-4,2.739386253867796e-5,-1.3590675845310196e-8,3.644865074909421e-4,2.7608376878739416e-5,-1.3626575377250361e-8,3.6464576613601913e-4,2.7723005292816395e-5,-1.364495582745406e-8,3.6480461555127395e-4,2.77383404850266e-5,-1.3645341642181487e-8,3.6499818740537e-4,2.76710053685678e-5,-1.3630271402829668e-8,3.6525122259954397e-4,2.754788664050142e-5,-1.360432815008887e-8,3.6557730310316335e-4,2.7401492817728636e-5,-1.357329062063108e-8,3.659787553882458e-4,2.72661665993695e-5,-1.3543394730429565e-8,3.6644689750384423e-4,2.7174555417879994e-5,-1.352065178127914e-8,3.669628241382334e-4,2.7153908983776746e-5,-1.3510179030065285e-8,3.674992016602788e-4,2.7222166045638933e-5,-1.3515526234079713e-8,3.68023539090487e-4,2.73843521332642e-5,-1.3538046023492725e-8,3.685030041719975e-4,2.7630228716345682e-5,-1.357642629855776e-8,3.689102801263324e-4,2.793415315314418e-5,-1.362653567100988e-8,3.692294796808659e-4,2.825781083626839e-5,-1.368173224189925e-8,3.694608523244996e-4,2.8555916027981706e-5,-1.3733727733496358e-8,3.6962307871807993e-4,2.8784249160797294e-5,-1.3773978177336275e-8,3.697522993353289e-4,2.8908903102290343e-5,-1.3795451641862713e-8,3.6989731803456434e-4,2.8915385836666257e-5,-1.3794521381371401e-8,3.701106527110447e-4,2.8815745762559872e-5,-1.3772576532502819e-8,3.704358354453675e-4,2.8651045702873957e-5,-1.3736749819577554e-8,3.7089307273516974e-4,2.8486040803253674e-5,-1.369908367506479e-8,3.714679608227572e-4,2.8394043726751596e-5,-1.3673710854101186e-8,3.7210991213757036e-4,2.843405066778115e-5,-1.3672440108961631e-8,3.7274498490128303e-4,2.8628554579815174e-5,-1.3700371291720451e-8,3.733002400374539e-4,2.8953884905579092e-5,-1.375383654447321e-8,3.737283127161456e-4,2.934966667201483e-5,-1.3821992572909582e-8,3.74019840199307e-4,2.9742318752869464e-5,-1.3891158565206442e-8,3.741996113300426e-4,3.0069483883304552e-5,-1.3949424588473654e-8,3.743121974552402e-4,3.0294519375517385e-5,-1.3989456769194334e-8,3.7440629029591007e-4,3.0408720943630665e-5,-1.4009040575435913e-8,3.745237271452724e-4,3.042555417326966e-5,-1.4010137999684472e-8,3.7469432233555345e-4,3.0372415163084517e-5,-1.399745265579277e-8,3.7493481407911624e-4,3.0283392801809747e-5,-1.3977121315336288e-8,3.7524974009757705e-4,3.0194074963467853e-5,-1.3955729687359219e-8,3.7563276072333213e-4,3.013796030115297e-5,-1.3939607838651707e-8,3.7606789752317216e-4,3.014358067755694e-5,-1.3934276197156442e-8,3.765308715945007e-4,3.0231593508346177e-5,-1.394391327502817e-8,3.769911447976581e-4,3.0411553226949515e-5,-1.3970762499094855e-8,3.774153866080384e-4,3.067874957136116e-5,-1.4014505540693484e-8,3.7777276900158004e-4,3.101223988098575e-5,-1.4071785355970582e-8,3.780416881621932e-4,3.137561973052833e-5,-1.4136185048005719e-8,3.782164562994042e-4,3.1721813892388676e-5,-1.4198962795870701e-8,3.7831168136817563e-4,3.2002044707192615e-5,-1.4250643304019193e-8,3.7836207867593326e-4,3.2177378338159576e-5,-1.4283213281041604e-8,3.784166470845473e-4,3.222972568760059e-5,-1.4292338201740607e-8,3.7852801727424653e-4,3.216882097511682e-5,-1.4278915068388991e-8,3.7873941235653586e-4,3.2032643792585974e-5,-1.4249424676350356e-8,3.7907250187723524e-4,3.1880386191779476e-5,-1.4214835935159804e-8,3.79519524138801e-4,3.1778859253417956e-5,-1.4188143257430748e-8,3.800425591675725e-4,3.1785057707013906e-5,-1.4180988668013144e-8,3.8058155833472476e-4,3.192941802742809e-5,-1.420023019579586e-8,3.810702007095623e-4,3.220552703223705e-5,-1.424564138430845e-8,3.814550608339061e-4,3.257118968284767e-5,-1.4309824655516338e-8,3.8171088610531375e-4,3.2961679962287354e-5,-1.4380610992098202e-8,3.818457030615165e-4,3.3310117296884816e-5,-1.444499449135639e-8,3.8189440825249304e-4,3.356630414228731e-5,-1.4492871054400158e-8,3.8190518456659355e-4,3.3706990005561714e-5,-1.4519156100786139e-8,3.8192545511999565e-4,3.3735939536645784e-5,-1.4523932873023375e-8,0.00038199221663132935,3.36770574780388e-5,-1.4511243699103591e-8,3.8212794959808886e-4,3.356532850735636e-5,-1.44874232515469e-8,3.8234068283503006e-4,3.3438964212912564e-5,-1.445961632653455e-8,3.826260695837975e-4,3.333397058547786e-5,-1.4434725361888601e-8,3.8296985541619517e-4,3.328078604508245e-5,-1.4418750654133305e-8,3.8335002714571484e-4,3.3302014460873146e-5,-1.441635218389012e-8,3.837387391287661e-4,3.341034772114456e-5,-1.4430449062814374e-8,3.841046361875188e-4,3.3606223967194986e-5,-1.4461732780659432e-8,3.844163948873668e-4,3.3875453388444264e-5,-1.4508108409027856e-8,3.846481026697538e-4,3.4187920503036706e-5,-1.4564283527851176e-8,3.8478626988731516e-4,3.449926174844078e-5,-1.4621926226168586e-8,3.8483677916458626e-4,3.475742957885683e-5,-1.4670832194101453e-8,3.8482854708888275e-4,3.491455839733871e-5,-1.4701226812136726e-8,3.8481043392111564e-4,3.4941584971485933e-5,-1.4706695752866484e-8,3.8484010168733006e-4,3.484013825587449e-5,-1.468664371357169e-8,3.8496755452253895e-4,3.464574228765504e-5,-1.4647105606473425e-8,3.852194666708856e-4,3.4419635873436564e-5,-1.4599384135326243e-8,3.8559051584685747e-4,3.4231768838361375e-5,-1.4556966089518085e-8,3.8604470174984556e-4,3.4141257634779535e-5,-1.4531832281699271e-8,3.8652549596401316e-4,3.4180796113487486e-5,-1.4531324827219252e-8,3.8697101818921484e-4,3.434917801281351e-5,-1.4556386882613265e-8,3.8732970092140794e-4,3.461318978913546e-5,-1.4601550234372074e-8,3.875723463890504e-4,3.491766325493246e-5,-1.4656605918405712e-8,3.8769763284319733e-4,3.5200524303996284e-5,-1.4709446876581307e-8,3.8772997811639925e-4,3.540841369879993e-5,-1.474921260370285e-8,3.877109937265693e-4,3.550840337825738e-5,-1.476877406003373e-8,3.8768778169230556e-4,3.5492866851361164e-5,-1.476588786722735e-8,3.877020190388187e-4,3.5377264492801586e-5,-1.4742916279944912e-8,3.8778272420060984e-4,3.519311331097323e-5,-1.4705540490345767e-8,3.8794354267678884e-4,3.497940485725285e-5,-1.4661111679795208e-8,3.88183621815305e-4,3.4775082366194856e-5,-1.4617171125102894e-8,3.8849040862005046e-4,3.4613774624727124e-5,-1.4580401934381552e-8,3.888429039948693e-4,3.452069902788002e-5,-1.4556015515333534e-8,3.8921458948142855e-4,3.45109299576898e-5,-1.4547412738969088e-8,3.8957597873680495e-4,3.4588150401447517e-5,-1.455591709815627e-8,3.8989728274007056e-4,3.474336635341969e-5,-1.4580440622513306e-8,3.9015195396758514e-4,3.495368121352255e-5,-1.4617090694513199e-8,3.9032177735499337e-4,3.5182101792084835e-5,-1.4658947568485471e-8,3.9040340540185385e-4,3.5380277120652675e-5,-1.4696467881042956e-8,3.904146306630224e-4,3.549631641986946e-5,-1.4719008759851094e-8,3.903967427080332e-4,3.548836893154207e-5,-1.4717615696219794e-8,3.9040860609677376e-4,3.534095270614115e-5,-1.468840935651692e-8,3.905107938530057e-4,3.507658782265891e-5,-1.4635025503981219e-8,3.9074435561294203e-4,3.4754301960084933e-5,-1.4568447883446436e-8,3.911142837911334e-4,3.445237060488615e-5,-1.4503769375063293e-8,3.915867065914306e-4,3.4242280516138355e-5,-1.4455241755727162e-8,3.9210098851033884e-4,3.416630020580259e-5,-1.4431921054112957e-8,3.9258978921974933e-4,3.42277415173893e-5,-1.4435583191215956e-8,3.92997891960016e-4,3.43949587943332e-5,-1.446115512515839e-8,3.9329397995157005e-4,3.4614214184008465e-5,-1.4498870429778417e-8,3.934741228294369e-4,3.482529654460197e-5,-1.4537116508416524e-8,3.935585439745504e-4,3.497539271070658e-5,-1.456516089516988e-8,3.935841244453831e-4,3.502882428209544e-5,-1.4575248316469991e-8,3.935950084123615e-4,3.497180118274077e-5,-1.4563798423281858e-8,3.9363335905265697e-4,3.4812268755863353e-5,-1.453161028551469e-8,3.9373196934599825e-4,3.457567997812712e-5,-1.4483168817569692e-8,3.9390985158140024e-4,3.4298244121273065e-5,-1.442534785326174e-8,3.941710735045695e-4,3.401951202215226e-5,-1.4365908871774454e-8,3.945062887672119e-4,3.377587091359689e-5,-1.431215883946541e-8,3.948959058166358e-4,3.3595868201667825e-5,-1.4269990715109863e-8,3.9531378332501087e-4,3.34975018387911e-5,-1.4243345355196083e-8,3.95730734118531e-4,3.348697905005418e-5,-1.4233969882786683e-8,3.9611767962868447e-4,3.3558268125866676e-5,-1.424129255710753e-8,3.964487102877791e-4,3.3693000306870486e-5,-1.4262290516375536e-8,3.9670457560232427e-4,3.386072530925677e-5,-1.429136009013897e-8,3.96877142245794e-4,3.402026478479182e-5,-1.4320404114221407e-8,3.96974675963087e-4,3.412377428846557e-5,-1.433955280018419e-8,3.970263033690597e-4,3.412534347773198e-5,-1.4338948576893425e-8,3.970821930901893e-4,3.3994646882125137E-05,-1.4311677516442803e-8,3.972051269460485e-4,3.373258641401384e-5,-1.4257126814339408e-8,3.9745171697619185e-4,3.3380857036472385e-5,-1.4183048350455968e-8,3.9784887548471545e-4,3.3015677815108926e-5,-1.4104376616313594e-8,3.983784208606685e-4,3.272315572911758e-5,-1.4038376360391643e-8,3.989810077392129e-4,3.2567028222608205e-5,-1.3998275239165507e-8,3.995784033932848e-4,3.256650678484111e-5,-1.3988808427858587e-8,4.001011450991133e-4,3.269479846358877e-5,-1.4005705396679457e-8,4.0050766556828905e-4,3.2894820685850835e-5,-1.4038489709830286e-8,4.0078956955466436e-4,3.310064022337845e-5,-1.407446327281956e-8,4.0096621978551547e-4,3.325505206119748e-5,-1.4102093289319672e-8,4.010745404447036e-4,3.3319672146671645e-5,-1.4113112716440347e-8,4.0115849496576356e-4,3.3278246778498246e-5,-1.4103416685224999e-8,4.0126036221118603e-4,3.3135359116825646e-5,-1.4073080729645138e-8,4.014143685471576e-4,3.291243375807629e-5,-1.4025773677232568e-8,4.0164265136440953e-4,3.264223661405534e-5,-1.3967743564302586e-8,4.019534608500238e-4,3.236272447032621e-5,-1.390655605379301e-8,4.023414451750576e-4,3.211102729665613e-5,-1.3849797898036786e-8,4.0278971307670453e-4,3.191824538468825e-5,-1.3803953237611915e-8,4.032731686233601e-4,3.18056089510052e-5,-1.3773602883065726e-8,4.037624347508987e-4,3.178228329803735e-5,-1.376099772735688e-8,4.0422776760387706e-4,3.184466222614487e-5,-1.3765925422093045e-8,4.0464271102872616e-4,3.1976751617668895e-5,-1.3785736315062855e-8,4.049875078121135e-4,3.2151373504918296e-5,-1.3815449042655647e-8,4.0525242347578963e-4,3.2332175019236376e-5,-1.3847964962952615e-8,4.0544119121250843e-4,3.2476862419152035e-5,-1.3874561986942388e-8,4.05574305140568e-4,3.254270756363941e-5,-1.3885979640020726e-8,4.0569066632959827e-4,3.249544686392352e-5,-1.3874369128060043e-8,4.0584474135106326e-4,3.232141920233108e-5,-1.3836033795223245e-8,4.060959597117366e-4,3.203981711665866e-5,-1.3774198864523915e-8,4.0648944202457856e-4,3.170776499799547e-5,-1.3700205970255192e-8,4.070339380710125e-4,3.14094387988266e-5,-1.3631320248747382e-8,4.076901544592694e-4,3.122757281338524e-5,-1.3584880382566213e-8,4.083808447150242e-4,3.1209812559531696e-5,-1.357136683146307e-8,4.090200221087287e-4,3.1349995147856346e-5,-1.3590446140588086e-8,4.0954443123187515e-4,3.1595103343674464e-5,-1.3632168430282483e-8,4.099303837683666e-4,3.187049880203468e-5,-1.3681872256090355e-8,4.101918277261662e-4,3.210671035463291e-5,-1.3725481876963942e-8,4.103671176469619e-4,3.225608889167277e-5,-1.3752883934071199e-8,4.1050398879131114e-4,3.2297665182539014e-5,-1.3759059927073484e-8,4.106480562172606e-4,3.223425978678608e-5,-1.3743742869076615e-8,4.108359107796797e-4,3.208637535174844e-5,-1.371041895829871e-8,4.1109180515318115e-4,3.188566709771694e-5,-1.366514943234374e-8,4.1142658815250326e-4,3.166901056491771e-5,-1.3615380156688916e-8,4.118380537063425e-4,3.147326545835003e-5,-1.3568790580043022e-8,4.123123872285276e-4,3.1330693322293186e-5,-1.3532246924646132e-8,4.1282660990819755e-4,3.12650855735152e-5,-1.3510937230181173e-8,4.1335194038861985e-4,3.12888232285669e-5,-1.3507759179538763e-8,0.00041385782791872523,3.14012402587035e-5,-1.3523006860697865e-8,4.143162097043059e-4,3.158851800056764e-5,-1.3554343762603742e-8,4.147055736697891e-4,3.182504325345812e-5,-1.3596998591413753e-8,4.150145461827425e-4,3.207610038134238e-5,-1.3644157727172217e-8,4.1524476893370035e-4,3.230183268389632e-5,-1.368759809958973e-8,4.1541284364256985e-4,3.2462481911037404e-5,-1.3718658948585584e-8,4.1555091775811174e-4,3.252513293742975e-5,-1.3729683805619488e-8,4.1570478512098117e-4,3.247211793603926e-5,-1.3715984522395111e-8,4.159276624200048e-4,3.2310116826504505e-5,-1.3678055124053507e-8,4.1626805702971783e-4,3.2076790804311726e-5,-1.3623245822332607e-8,4.167524617387805e-4,3.1839355536118996e-5,-1.3565610929515464e-8,4.173687071937988e-4,3.1679433606488e-5,-1.352271054257597e-8,4.180608672886187e-4,3.166480571656874e-5,-1.3509541984888306e-8,4.187443288713044e-4,3.182021371545731e-5,-1.353221487846181e-8,4.193369682737023e-4,3.211533218369021e-5,-1.3585218588590153e-8,4.1978931227977685e-4,3.247863499575709e-5,-1.3654153761093438e-8,4.2009704087509506e-4,3.282777137229304e-5,-1.3721983897773367e-8,4.202929904690921e-4,3.309778073197644e-5,-1.377490014751364e-8,4.2042859167406205e-4,3.325494568929429e-5,-1.3805267082687721e-8,4.2055631802961126e-4,3.329635406528146e-5,-1.3811685967344244e-8,4.207187075410816e-4,3.324181570289828e-5,-1.3797529601781316e-8,4.209438553744661e-4,3.312430221578908e-5,-1.376914696052265e-8,4.212450114021482e-4,3.29820290127452e-5,-1.3734307231289387e-8,4.2162200611876914e-4,3.285276439909095e-5,-1.3700985550654417e-8,4.220632466273461e-4,3.276974175556986e-5,-1.3676406563612262e-8,4.225479806825113e-4,3.275847057478871e-5,-1.3666274054639809e-8,4.2304896717371235e-4,3.283409778896946e-5,-1.367416405793029e-8,4.23535782825238e-4,3.299935006506142e-5,-1.3701088573561653e-8,4.2397886988324306e-4,3.3243478824476034e-5,-1.374527589841765e-8,4.2435406637511227e-4,3.354279531934157e-5,-1.3802236076034794e-8,4.246470102477941e-4,3.3863147891369016e-5,-1.3865160722445153e-8,4.248566904943515e-4,3.4164346787876715e-5,-1.392568757735148e-8,4.249974307882397e-4,3.4406249583597606e-5,-1.3975043403899051e-8,4.2509869023787635e-4,3.455590008719841e-5,-1.4005525482322397e-8,4.252022353167417e-4,3.4594902384809774e-5,-1.4012200930378964e-8,4.2535628227180944e-4,3.452606191561703e-5,-1.3994602436161527e-8,4.2560627053101944e-4,3.437774195887487e-5,-1.3957997791203556e-8,4.259826655671023e-4,3.42033544248866e-5,-1.3913552496987838e-8,4.2648812302165757e-4,3.407288572264099e-5,-1.3876612700332113e-8,4.2708920644435e-4,3.405490071168592e-5,-1.3862734860228985e-8,4.2771960286236156e-4,3.419246160656786e-5,-1.388224482934693e-8,4.2829858276369735e-4,3.4483331127508464e-5,-1.39356667397566e-8,4.287591800201008e-4,3.487711132752329e-5,-1.401286696741407e-8,4.2907189221625086e-4,3.529375343362766e-5,-1.4096933853643936e-8,4.2925111181198606e-4,3.5653822332007866e-5,-1.4170691079982273e-8,4.293431436633978e-4,3.590386737424457e-5,-1.422220020649449e-8,4.294057069943159e-4,3.602629900089709e-5,-1.4246968028465437e-8,4.2949028887441184e-4,3.603476243390713e-5,-1.4247107509361492e-8,4.296326637699373e-4,3.596258975350247e-5,-1.422906114426545e-8,4.298507830160587e-4,3.585122067538412e-5,-1.4201284229219959e-8,4.30146821619837e-4,3.574178595192985e-5,-1.4172502101488057e-8,4.305105528179752e-4,3.567004669500458e-5,-1.4150577469349977e-8,4.309225690144668e-4,3.566353502127585e-5,-1.4141794633184363e-8,4.3135708115020477e-4,3.5739694174433475e-5,-1.4150368611616155e-8,4.3178466029482305e-4,3.5904363120716595e-5,-1.4178070671429282e-8,4.321754230960808e-4,3.615055457113382e-5,-1.4223940930016515e-8,4.3250300470527235e-4,3.645801938170371e-5,-1.4284152898436964e-8,4.327492141671965e-4,3.6794455062480333e-5,-1.4352180111878265e-8,4.329086361301494e-4,3.711914037777242e-5,-1.441944170755436e-8,4.329919362284678e-4,3.738922622588004e-5,-1.4476525706585657e-8,4.3302648954548616e-4,3.756805202918171e-5,-1.4514923144055002e-8,4.330533235187689e-4,3.763391300210855e-5,-1.4528989528198715e-8,4.331202330514279e-4,3.7587099620632155e-5,-1.4517675625248134e-8,4.33271953934643e-4,3.7453099149815584e-5,-1.4485529520827118e-8,4.335391170749413e-4,3.728040086638992e-5,-1.4442540122095772e-8,4.3392835970523195e-4,3.713209968463934e-5,-1.4402528788363379e-8,4.344165500758634e-4,3.707165347756771e-5,-1.4380064897967802e-8,4.3495230062594813e-4,3.714511840207765e-5,-1.438637838413005e-8,4.3546692736868404e-4,3.7364868229131036e-5,-1.4425430174624792e-8,4.3589372030768185e-4,3.7701867510223756e-5,-1.4491842764582526e-8,4.361893091351183e-4,3.8092289800798756e-5,-1.4572120153155367e-8,4.3634757852403625e-4,3.8457985039809324e-5,-1.464910812938325e-8,4.363991796352178e-4,3.8732147174392066e-5,-1.4707727290935779e-8,4.3639763452364114e-4,3.887826414780291e-5,-1.4739264857224268e-8,4.364001722647106e-4,3.889525252824335e-5,-1.474263969373984e-8,4.364523016838084e-4,3.881021476354108e-5,-1.4722977299200551e-8,4.365804771433114e-4,3.866556340462599e-5,-1.468896039574687e-8,4.367919722871205e-4,3.8506926413442914e-5,-1.4650297668231218e-8,4.370786669043261e-4,3.837491837753309e-5,-1.4615939698352876e-8,4.3742177567648004e-4,3.8300841711920557e-5,-1.4593067497875068e-8,4.377959505900983e-4,3.830495380523125e-5,-1.4586611379527836e-8,4.3817246361271725e-4,3.839583492266989e-5,-1.4599028669935255e-8,4.385219262133009e-4,3.856996202628723e-5,-1.4630154871815322e-8,4.388172474094774e-4,3.881133934777927e-5,-1.4677068982739351e-8,4.3903736753377824e-4,3.909172438758446e-5,-1.4734059655137036e-8,4.39171785700476e-4,3.9372492362129876e-5,-1.4792916472356046e-8,4.392250878709724e-4,3.9609287825052854e-5,-1.48438349018792e-8,4.392197841418492e-4,3.9760010138741e-5,-1.4877110525214467e-8,4.391952872335693e-4,3.9795215836805176e-5,-1.488546114998337e-8,4.392015028478242e-4,3.9708130526000964e-5,-1.4866368508482124e-8,4.392874740657098e-4,3.9520303226885334e-5,-1.4823547388579492e-8,4.3948798661524503e-4,3.927964654825381e-5,-1.4766788554084115e-8,4.3981252877586845e-4,3.905019462021475e-5,-1.4709963203151688e-8,4.4024057367895406e-4,3.889606668889953e-5,-1.4667637174980205e-8,4.407251019923313e-4,3.886426054421898e-5,-1.465121537204819e-8,4.4120371732378895e-4,3.897130268161372e-5,-1.4665702138134793e-8,4.4161456567829924e-4,3.919776198075389e-5,-1.4708062006301217e-8,4.41912806692747e-4,3.949272215218089e-5,-1.4767828043097781e-8,4.4208268554817335e-4,3.978761101197567e-5,-1.4829982902345276e-8,4.421409699762284e-4,4.001548958358082e-5,-1.4879284623686034e-8,4.421303237867017e-4,4.012928886396741e-5,-1.4904509091663218e-8,4.4210531633417574e-4,4.011254468451751e-5,-1.4901064005645254e-8,4.421168168722615e-4,3.997960143327207e-5,-1.487124044964496e-8,4.422004451507053e-4,3.9767094807069e-5,-1.4822485598136494e-8,4.4237183113721076e-4,3.9521669753076244e-5,-1.4764783122292205e-8,4.426279491665109e-4,3.928881642907068e-5,-1.4708204056709783e-8,4.429518454747351e-4,3.91054375635812e-5,-1.4661205248835662e-8,4.433181067887932e-4,3.899632725145631e-5,-1.4629752573422735e-8,4.436975223791884e-4,3.8973357147412855e-5,-1.4617048273316101e-8,4.4406056405082626e-4,3.903590468819179e-5,-1.4623561502714967e-8,4.4438008650014344e-4,3.91715076460056e-5,-1.4647122090138582e-8,4.446339768961001e-4,3.935646602380224e-5,-1.4682981479505956e-8,4.448083963396037e-4,3.955684978592832e-5,-1.4723927049201846e-8,4.4490177030358924e-4,3.973098128986008e-5,-1.4760714274992125e-8,4.4492878725670593e-4,3.9834759260079374e-5,-1.4783179135015065e-8,4.4492247041699046e-4,3.983068781073579e-5,-1.4782276848273152e-8,4.4493150521741963e-4,3.9699639584905065e-5,-1.4752832416571488e-8,4.4501065268293756e-4,3.945150399211428e-5,-1.4696101798232349e-8,4.452051621230111e-4,3.912878232058367e-5,-1.4620773630123115e-8,4.4553450758414917e-4,3.879851843897706e-5,-1.4541367888067542e-8,4.459831270119789e-4,3.853341144760553e-5,-1.4474199279655483e-8,4.4650334228181737e-4,3.83892962100095e-5,-1.4432428557074345e-8,4.470294963479162e-4,3.838843851633301e-5,-1.4422210720894016e-8,4.474971022466872e-4,3.8514644123259556e-5,-1.4441268698217063e-8,4.4785977033990704e-4,3.872025545847296e-5,-1.4480033042680275e-8,4.480991934681107e-4,3.8940889744311725e-5,-1.4524608121518424e-8,4.48226794522255e-4,3.911257774162124e-5,-1.4560498684405491e-8,4.482780588321118e-4,3.918669829382871e-5,-1.457607889926847e-8,4.4830195410043057e-4,3.913954024565277e-5,-1.4565007306195704e-8,4.483485381147606e-4,3.8974954360315984e-5,-1.4527125710483059e-8,4.484579671969714e-4,3.872030337677846e-5,-1.4467791545713628e-8,4.4865345969394e-4,3.841765061935548e-5,-1.4396030200337683e-8,4.489392960449042e-4,3.811327623924533e-5,-1.4322193270630174e-8,4.4930320331229367e-4,3.7848511485026534e-5,-1.4255821744391228e-8,4.497213338957374e-4,3.765366154702086e-5,-1.4204163537672068e-8,4.5016388935185643e-4,3.7545304813913294e-5,-1.4171463776027224e-8,4.5060002058532647e-4,3.752619081927828e-5,-1.415888242467012e-8,4.5100150770761724e-4,3.758652962581753e-5,-1.4164756572674547e-8,4.5134546376081325e-4,3.7705677615177184e-5,-1.4184941935731645e-8,4.5161665818218725e-4,3.785383751499737e-5,-1.4213111016563784e-8,4.518100423627256e-4,3.7994051971822126e-5,-1.4241074681839239e-8,4.5193371514478737e-4,3.8085369823532785e-5,-1.4259379743515523e-8,4.5201173652522936e-4,3.808847352382779e-5,-1.4258553184670598e-8,4.5208492668352473e-4,3.797471001575803e-5,-1.4231251193107125e-8,4.522066971808626e-4,3.77376787180318e-5,-1.4175095272905575e-8,4.5243135935849304e-4,3.7403252871591634e-5,-1.4095172040726785e-8,4.5279582657719995e-4,3.7030874343293475e-5,-1.4004497095542028e-8,4.5330172975054594e-4,3.6700112219684904e-5,-1.3921072538958264e-8,4.539088056613535e-4,3.648437266876659e-5,-1.3861984223206524e-8,4.545461169138244e-4,3.642372882885231e-5,-1.3837216692123784e-8,4.5513658700048617e-4,3.651138922317251e-5,-1.3846408129259836e-8,4.556220323441288e-4,3.66997016694241e-5,-1.3879890283223254e-8,4.559775185965056e-4,3.691969978430192e-5,-1.3922769386842146e-8,4.562122242740801e-4,3.710309854736905e-5,-1.3959682858114987e-8,4.5636084388552884e-4,3.7198647914217366e-5,-1.397848887776796e-8,4.564712492187718e-4,3.7180239677984124e-5,-1.3972296643507357e-8,4.5659257815677795e-4,3.7047788247771294e-5,-1.393998633269255e-8,4.5676585962010804e-4,3.682314037864092e-5,-1.3885605024489333e-8,4.57017899354544e-4,3.65430985371316e-5,-1.3816998895031419e-8,4.573585513254664e-4,3.625115082842816e-5,-1.3743986972765052e-8,4.5778120823241134e-4,3.5989329685002914e-5,-1.367641965358165e-8,4.582659310878471e-4,3.579152347703973e-5,-1.3622494409608255e-8,4.587842300484169e-4,3.567911872805785e-5,-1.3587614246913989e-8,4.5930436312677383e-4,3.565921697959824e-5,-1.357389940117045e-8,4.5979615512869434e-4,3.572510183973148e-5,-1.358027877351196e-8,4.6023475988321376e-4,3.585820060660067e-5,-1.360294284347647e-8,4.6060335832733674e-4,3.6030722091809204e-5,-1.3635911870639802e-8,4.60895139188042e-4,3.6208528902177354e-5,-1.3671590860836431e-8,4.6111494690815154e-4,3.635429757026502e-5,-1.3701352069797334e-8,4.612807925415506e-4,3.6431488839050474e-5,-1.3716346193401218e-8,4.614247987373746e-4,3.6410027954227026e-5,-1.3708835750741679e-8,4.6159205914533125e-4,3.62743262879114e-5,-1.3674231350069227e-8,4.6183498055835207e-4,3.6032773953528615e-5,-1.3613573886357206e-8,4.6220096368370197e-4,3.572504366766511e-5,-1.3535497406452498e-8,4.627142460022724e-4,3.5420516607509466e-5,-1.345601089443765e-8,4.633589570077975e-4,3.520158587923049e-5,-1.339462640412944e-8,4.640754895656249e-4,3.5133781640715624e-5,-1.336732887285183e-8,4.6477797333421513e-4,3.523710146370312e-5,-1.337976511947418e-8,4.653863109243403e-4,3.5476761963375476e-5,-1.3424888861955243e-8,4.658546211216421e-4,3.577942568893229e-5,-1.3486488367131025e-8,4.661813358342299e-4,3.6063351831523195e-5,-1.3545965988268696e-8,4.664004611033069e-4,3.626473218857858e-5,-1.3588320959816941e-8,4.665639958352068e-4,3.6350407228647365e-5,-1.360513303776225e-8,4.6672541684679767e-4,3.631790496298228e-5,-1.3594788762173888e-8,4.6692865416770923e-4,3.618845377576418e-5,-1.3561187150119446e-8,4.672026368560225e-4,3.5997925297469526e-5,-1.3511940939945172e-8,4.6755982834898976e-4,3.5788386314177225e-5,-1.3456575605413407e-8,4.67997179408685e-4,3.5601078032541834e-5,-1.3404875559273569e-8,4.684985923176623e-4,3.5470812389852354e-5,-1.3365423942936016e-8,4.6903849108559164e-4,3.542180047068913e-5,-1.3344439413006975e-8,4.695861596821659e-4,3.546508508953634e-5,-1.3345040436527447e-8,4.7011041192164126e-4,3.559772500847251e-5,-1.3367006714160734e-8,4.705840542170844e-4,3.580375537789526e-5,-1.3407016011675667e-8,4.7098759753275935e-4,3.6056678871433476e-5,-1.3459233547938723e-8,4.7131190949890184e-4,3.632298007574168e-5,-1.3516078049011552e-8,4.71559790690804e-4,3.6566204934469644e-5,-1.3569053058169974e-8,4.717465735754899e-4,3.6751383530202755E-05,-1.3609647477316639e-8,4.718998124130554e-4,3.684981905601746e-5,-1.3630405599256602e-8,4.7205781579265745e-4,3.684452081682734e-5,-1.3626310087204059e-8,4.7226605766033966e-4,3.673637051258554e-5,-1.3596506069195115e-8,4.725699924678846e-4,3.654994787786842e-5,-1.3546025765795578e-8,4.730033180778431e-4,3.6336041112372295e-5,-1.3486667699711668e-8,4.7357300089362716e-4,3.616604739808837e-5,-1.3435763281303896e-8,4.74246972161772e-4,3.611397064008277e-5,-1.3411769997669891e-8,4.7495468950762464e-4,3.6228226616847743e-5,-1.342728801093758e-8,4.756075265498231e-4,3.6506596772157785e-5,-1.3482806498111208e-8,4.761324789643435e-4,3.68921215314555e-5,-1.3565521966204982e-8,4.76500027685036e-4,3.729587464380291e-5,-1.3654665288008376e-8,4.7672987690625123e-4,3.763293743393644e-5,-1.3730017018062513e-8,4.768749775046739e-4,3.7850136442992455e-5,-1.3778472109271951e-8,4.7699763159739244e-4,3.7934345672070496e-5,-1.379606231317544e-8,4.7715085690734735e-4,3.790502947009683e-5,-1.3786386207802384e-8,4.7736947329048336e-4,3.780076670277705e-5,-1.3757715344810296e-8,4.7766881383462853e-4,3.7666865402247315e-5,-1.3720316041747617e-8,4.780473761409701e-4,3.7546640888132714e-5,-1.368447808114495e-8,4.7849069816615584e-4,3.747611264933771e-5,-1.3659170952435136e-8,4.789752246660876e-4,3.748091718942398e-5,-1.3651117518452754e-8,4.7947201707088224e-4,3.757448492495361e-5,-1.3664168314897276e-8,4.799505077512641e-4,3.775714321569889e-5,-1.3698971973992664e-8,4.803824002412184e-4,3.801622409426613e-5,-1.3752971782310215e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json new file mode 100644 index 000000000..765f637b6 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":11000,"numberOfSamples":1000,"samples":[4.807455898115237e-4,3.832746570992544e-5,-1.3820749559112586e-8,4.810276804026849e-4,3.8657939483712816e-5,-1.3894708855793208e-8,4.8122851144731977e-4,3.897037866353488e-5,-1.3966029941865335e-8,4.8136122169643126e-4,3.922846753666153e-5,-1.4025813189547578e-8,4.8145158055841605e-4,3.94025277918899e-5,-1.406634943105251e-8,4.815355041583503e-4,3.9474978459853574e-5,-1.408245537787128e-8,4.8165478219839815e-4,3.9445013590506954e-5,-1.4072791780691197e-8,4.8185089652025466e-4,3.933196966399209e-5,-1.4041008026015441e-8,4.8215671196515623e-4,3.9176311765079673e-5,-1.3996340784096513e-8,4.825864763543066e-4,3.9036228711670225e-5,-1.3953028790341758e-8,4.8312623641597524e-4,3.897747212754661e-5,-1.3927849119148707e-8,4.837291888970253e-4,3.9055456474574426e-5,-1.3935510387344442e-8,4.843221611312391e-4,3.929313827217236e-5,-1.3982860442730526e-8,4.848265247112546e-4,3.966499254457847e-5,-1.4064616609993489e-8,4.8518733416020557e-4,4.009980545620315e-5,-1.4163881241573302e-8,4.853950931909375e-4,4.050581912340954e-5,-1.425830655995102e-8,4.854866151667581e-4,4.080574058134305e-5,-1.4328715323638037e-8,4.85525688196407e-4,4.096178493042818e-5,-1.4365239392562207e-8,4.855772001398806e-4,4.0979862819758134e-5,-1.4368394366073396e-8,4.856885804979649e-4,4.089713112766541e-5,-1.4346234987150922e-8,4.8588326125485515e-4,4.076435074414623e-5,-1.4310345248447114e-8,4.8616296080937287e-4,4.063161994000118e-5,-1.4272594843316575e-8,4.865136173432042e-4,4.054008405187016e-5,-1.4243172616081504e-8,4.8691142789272524e-4,4.051847158520118e-5,-1.4229620182921136e-8,4.8732762934217247e-4,4.0582299326150006e-5,-1.4236433463507242e-8,4.8773212709177916e-4,4.07341134689005e-5,-1.4264941962397524e-8,4.880965967034294e-4,4.096407600183585e-5,-1.4313353517338398e-8,4.88397573177068e-4,4.1250927252936434e-5,-1.4376959666340294e-8,4.886197129387349e-4,4.1563798332032156e-5,-1.4448564853229553e-8,4.887589435265532e-4,4.1865488207741994e-5,-1.451924254306548e-8,4.888247307700336e-4,4.211748974787741e-5,-1.4579476522027053e-8,4.888405100767859e-4,4.228641181812268e-5,-1.462064263346648e-8,4.888415356313333e-4,4.235083017747227e-5,-1.463666315611464e-8,4.888699069788087e-4,4.2307124574301165e-5,-1.462554429370797e-8,4.889672434197426e-4,4.2172729191325406e-5,-1.459042628142175e-8,4.89166100944331e-4,4.198561886052198e-5,-1.4539802909504917e-8,4.894815424795779e-4,4.179941029790374e-5,-1.4486638095790344e-8,4.899045597653066e-4,4.16738571918689e-5,-1.4446179472955758e-8,4.903995543457572e-4,4.1661226263416274e-5,-1.4432491631334258e-8,4.909084078410756e-4,4.179064877681403e-5,-1.4454232713012669e-8,4.913629055658968e-4,4.205495921373214e-5,-1.4510927067288458e-8,4.917043498415898e-4,4.2406630471518614e-5,-1.4591584452824552e-8,4.919041260653661e-4,4.2768455240018365e-5,-1.4677226547185713e-8,4.91975143734432e-4,4.30581023135401e-5,-1.4747087713819914e-8,4.919667281492841e-4,4.321634341236769e-5,-1.4785795141156964e-8,4.919450134806429e-4,4.322488299346272e-5,-1.4787918091785175e-8,4.919696544610528e-4,4.310619995991277e-5,-1.4758043194016052e-8,4.920780610928328e-4,4.2909134196637064e-5,-1.4707389424281414e-8,4.922813225790399e-4,4.269033595193827e-5,-1.464944226297227e-8,4.925688425220637e-4,4.249988199139718e-5,-1.4596537842685818e-8,4.92916302217559e-4,4.2373819969799324e-5,-1.4557994767186664e-8,4.932930424762773e-4,4.233227598512297e-5,-1.4539483417289066e-8,4.936673798735039e-4,4.2380499169877454e-5,-1.4543082916464466e-8,4.940100632622315e-4,4.251078828128216e-5,-1.4567604259159937e-8,4.942967406427109e-4,4.27043504794895e-5,-1.4608973846901326e-8,4.945102476677884e-4,4.2933063498730834e-5,-1.4660638792530654e-8,4.946431248320447e-4,4.316170803770033e-5,-1.4714088579726986e-8,4.947001929114915e-4,4.335150966562856e-5,-1.4759675319273507e-8,4.947003518474758e-4,4.3465620460088586e-5,-1.4787908056141978e-8,4.946762700491294e-4,4.3476391218321277e-5,-1.4791230435817252e-8,4.946706632709735e-4,4.337312853241991e-5,-1.4766006598097854e-8,4.947286919062398e-4,4.316792790944356e-5,-1.4714140745679074e-8,4.948875598480194e-4,4.289680338026428e-5,-1.46436248866499e-8,4.951660198459949e-4,4.261431606960693e-5,-1.4567507684274658e-8,4.955572023782361e-4,4.238205390573295e-5,-1.4501266960766878e-8,4.960275056948562e-4,4.225356593077395e-5,-1.4459112508157139e-8,4.965226079965434e-4,4.225970770296015e-5,-1.445012992875491e-8,4.969797348841862e-4,4.239855798309805e-5,-1.4475344797421208e-8,4.973435745501257e-4,4.263333074298414e-5,-1.452672530286383e-8,4.975817616767804e-4,4.290011641573763e-5,-1.4588789841322534e-8,4.976949342797306e-4,4.31246291984686e-5,-1.4642736998874316e-8,4.977169933512843e-4,4.32435191844831e-5,-1.4671952404593025e-8,4.977043744489744e-4,4.3222752491909916e-5,-1.4666876259907704e-8,4.977180995272924e-4,4.30657402384419e-5,-1.4627283126456636e-8,4.978060190996614e-4,4.280844975449757e-5,-1.4561258969220208e-8,4.979920722311104e-4,4.2505071693506214e-5,-1.4481783123106343e-8,4.982749931993637e-4,4.221149461163865e-5,-1.4402704387878677e-8,4.986341351162414e-4,4.1972812399652274e-5,-1.4335614319282961e-8,4.99038023174974e-4,4.181724732728816e-5,-1.4288203371298527e-8,4.994521132236064e-4,4.1755451375511826e-5,-1.4263899128169458e-8,4.998442497099592e-4,4.1782774302784495e-5,-1.4262268021020732e-8,5.001879318353291e-4,4.1882399162322495e-5,-1.4279703860248156e-8,5.004642516735846e-4,4.202823461485221e-5,-1.4310113798395751e-8,5.006634317541689e-4,4.218742398465999e-5,-1.4345522650409268e-8,5.007865154243883e-4,4.232301933686223e-5,-1.4376697915433863e-8,5.008471450808845e-4,4.239771827120947e-5,-1.4394026271468186e-8,5.008726192415792e-4,4.237947661390274e-5,-1.4388889379628621e-8,5.009027064025104e-4,4.224906691188224e-5,-1.4355605708386248e-8,5.009844664141034e-4,4.200814399437556e-5,-1.4293595372097094e-8,5.011622958425812e-4,4.168457799010023e-5,-1.4208933086185455e-8,5.014648490094809e-4,4.133098997158663e-5,-1.4114222164068199e-8,5.018933871908035e-4,4.1014046129932506e-5,-1.4026120755346876e-8,5.024172779489319e-4,4.079629120466331e-5,-1.3960894019653134e-8,5.029800978344093e-4,4.0716851663191706e-5,-1.3929502673170868e-8,5.035149205751237e-4,4.0778803174321974e-5,-1.3934148788121047e-8,5.039631026052139e-4,4.0948067350335475e-5,-1.3967574412809247e-8,5.042898951464934e-4,4.116358529728348e-5,-1.4015214047407058e-8,5.044923433820881e-4,4.1354546447450864e-5,-1.405930760929713e-8,5.045980853346142e-4,4.145904379395495e-5,-1.4083628433054094e-8,5.046562864241187e-4,4.143903113694813e-5,-1.4077491031220824e-8,5.047237703547672e-4,4.128796116298141e-5,-1.4038013428869964e-8,5.048504577142612e-4,4.1029648300892024e-5,-1.3970152894372228e-8,5.050682042868694e-4,4.070946922079784e-5,-1.3884718542673423e-8,5.053857892959258e-4,4.038129871002777e-5,-1.3795175637434057e-8,5.057904773855169e-4,4.0094587167200846e-5,-1.3714342555419928e-8,5.062542972907671e-4,3.988514116215506e-5,-1.3651908298048012e-8,5.067420758582822e-4,3.9771018930213065e-5,-1.36131932106548e-8,5.072186700798977e-4,3.9752847710952766e-5,-1.3599056334601855e-8,5.076541049257842e-4,3.981679039448647e-5,-1.3606552572220539e-8,5.080265636895346e-4,3.993839829792082e-5,-1.3629887915207912e-8,5.083239056768367e-4,4.008625429723009e-5,-1.366134539027628e-8,5.085445405312649e-4,4.02251540015048e-5,-1.3692068130210929e-8,5.086982215653529e-4,4.031923748367069e-5,-1.3712790472901225e-8,5.088067942896942e-4,4.033585746282454e-5,-1.3714758380114217e-8,5.089042016332715e-4,4.0250984480183826e-5,-1.369110873241738e-8,5.090342370463796e-4,4.005630209267127e-5,-1.36387919547938e-8,5.09244162874289e-4,3.976656292219734e-5,-1.3560660497017656e-8,5.095732393487734e-4,3.942360984383623e-5,-1.3466737784983145e-8,5.100381218559963e-4,3.9092145563312785e-5,-1.3373334502326575e-8,5.106211663506831e-4,3.884421714299498e-5,-1.3299185546533904e-8,5.112695708256073e-4,3.873558642398053e-5,-1.325938777322804e-8,5.119093049859852e-4,3.878426446529394e-5,-1.3259745614206067e-8,5.124690770718819e-4,3.896273593345075e-5,-1.3294485083970076e-8,5.129030399538616e-4,3.920805997219822e-5,-1.3348486880023718e-8,5.13202292093832e-4,3.944384781038976e-5,-1.3402621757432825e-8,5.133926118135372e-4,3.9603311868793384e-5,-1.3439524368879208e-8,5.135225876503645e-4,3.964513077729718e-5,-1.344773648237942e-8,5.136484244188965e-4,3.955939833262208e-5,-1.3423498173910979e-8,5.138202846515992e-4,3.936503101320661e-5,-1.337045078206997e-8,5.140727251366115e-4,3.9101620258126494e-5,-1.3297891578819023e-8,5.144200439889327e-4,3.8818723273896924e-5,-1.3218230049065295e-8,5.148563248939854e-4,3.8565076244178615e-5,-1.31442269252279e-8,5.153592942705727e-4,3.8379720577811564e-5,-1.3086552229207539e-8,5.158965586590853e-4,3.8286402743178446e-5,-1.3052102047767048e-8,5.164325300028227e-4,3.829166482457637e-5,-1.3043289492522785e-8,5.169345624266961e-4,3.838611140678518e-5,-1.3058250794240458e-8,5.173773998025525e-4,3.854777091398222e-5,-1.3091694599441699e-8,5.177457469094699e-4,3.8746318140652295E-05,-1.3136024508001314e-8,5.180353753683765e-4,3.894721737733719e-5,-1.3182422098429487e-8,5.182533801875123e-4,3.9115464526579055e-5,-1.322176802538456e-8,5.184180207872244e-4,3.9219155018714586e-5,-1.3245479826195314e-8,5.185582174206982e-4,3.923339887816621e-5,-1.3246473160946539e-8,5.187121920390923e-4,3.9145162676454723e-5,-1.3220474590964729e-8,0.00051892397371530155,3.895909776742693e-5,-1.316773040159988e-8,5.192361363727685e-4,3.8702959631497384e-5,-1.3094695644609137e-8,5.19678041196177e-4,3.8429183553321686e-5,-1.3014701920521112e-8,5.20251698135249e-4,3.820781513346968e-5,-1.2946243125940887e-8,5.209217831712024e-4,3.810779889170091e-5,-1.2908049988956758e-8,5.216188239536118e-4,3.817071047034634e-5,-1.2912046211167408e-8,5.222596846655533e-4,3.8389929217076366e-5,-1.295764933741635e-8,5.227776981227885e-4,3.870942493105218e-5,-1.3031193682067312e-8,5.231462221446176e-4,3.90449333361414e-5,-1.3111251595486714e-8,5.233834624169179e-4,3.9315346546736246e-5,-1.3176687479802485e-8,5.235394281321812e-4,3.946752696132619e-5,-1.3213083897284422e-8,5.236754233317036e-4,3.9485713744511626e-5,-1.3215295714260378e-8,5.238462568216775e-4,3.9387314888452363e-5,-1.3186630329662888e-8,5.240896667697123e-4,3.921173128856953e-5,-1.3136310014778118e-8,5.244226644038686e-4,3.900801174331826e-5,-1.3076572242619164e-8,5.248426426550115e-4,3.882439799199982e-5,-1.3020069826079723e-8,5.253311937372029e-4,3.870065090327242e-5,-1.2977767650741354e-8,5.258593061790778e-4,3.8663123547147846e-5,-1.2957402470289928e-8,5.263931056407179e-4,3.8722437005912813e-5,-1.2962597830659435e-8,5.268994400545242e-4,3.887355383309786e-5,-1.2992693609541672e-8,5.273506944811689e-4,3.909786013135494e-5,-1.304323238147115e-8,5.277283618928682e-4,3.9366737045691754e-5,-1.310693161469982e-8,5.280251104455353e-4,3.964596224958332e-5,-1.3174889451303355e-8,5.282454335082373e-4,3.990022972843365e-5,-1.3237768428264953e-8,5.284052231946588e-4,4.009736888639202e-5,-1.3286836033079106e-8,5.285305494829884e-4,4.021225325537939e-5,-1.3314912562979519e-8,5.286557060394544e-4,4.0230579521206196e-5,-1.3317363974876683e-8,5.288202403339737e-4,4.015271335318547e-5,-1.3293259523465599e-8,5.290641459351538e-4,3.999743645858218e-5,-1.3246644881952389e-8,5.29420183065172e-4,3.980429049478516e-5,-1.3187490243689071e-8,5.299032094367221e-4,3.963165594186321e-5,-1.313141009986588e-8,5.304988417193463e-4,3.9546878333224285e-5,-1.3097054263167734e-8,5.311574317731786e-4,3.96065921173356e-5,-1.3100650126240523e-8,5.318014578119245e-4,3.98319165292681e-5,-1.3149038022273758e-8,5.32349611324718e-4,4.019180005671327e-5,-1.3234910936428494e-8,5.327485204893838e-4,4.0608738174731215e-5,-1.3338177317094923e-8,5.32993774836213e-4,4.098800442554419e-5,-1.3433731281722263e-8,5.331274981533502e-4,4.125409164773492e-5,-1.3501160283562443e-8,5.332164335123858e-4,4.137379163363762e-5,-1.353087213849061e-8,5.333259193608972e-4,4.13576666322837e-5,-1.3524569124303872e-8,5.335024650995162e-4,4.124644008992089e-5,-1.3491904463169542e-8,5.337679129261047e-4,4.109355822924989e-5,-1.3446225415098136e-8,5.341216559001369e-4,4.0951180469202836e-5,-1.340113134321436e-8,5.345463734211426e-4,4.0861572281668134e-5,-1.3368231159593744e-8,5.350143019353962e-4,4.0852955656746325e-5,-1.3355852072504397e-8,5.354928423825327e-4,4.093817556745151e-5,-1.3368381791204466e-8,5.359493976739728e-4,4.111506478866112e-5,-1.3406093750610092e-8,5.363555591240247e-4,4.136805710751307e-5,-1.3465430533373401e-8,5.366906062535734e-4,4.167087291184944e-5,-1.353970510439085e-8,5.369441549435876e-4,4.199017748541348e-5,-1.3620131233801054e-8,5.371176836764395e-4,4.229004758300979e-5,-1.3697055796399448e-8,5.372246939412618e-4,4.2536815840649555e-5,-1.376122922588961e-8,5.372894831724115e-4,4.2703741062777625e-5,-1.3804984921125316e-8,5.373446669618185e-4,4.277512234113474e-5,-1.3823300988072162e-8,0.00053742757544824975,4.27496117961429e-5,-1.3814764582700658e-8,5.375755603610683e-4,4.264248462223457e-5,-1.3782413644499372e-8,5.378200593904353e-4,4.2486472593883745e-5,-1.373430126808111e-8,5.381792508290428e-4,4.233015478549633e-5,-1.368338167500512e-8,5.386499283189473e-4,4.223204705859813e-5,-1.3646059069466792e-8,5.392010226639216e-4,4.224848840771485e-5,-1.3638780125339982e-8,5.397734225659609e-4,4.2415447202705524e-5,-1.3672723821927818e-8,5.402914650870005e-4,4.272937436938092e-5,-1.3748141826012162e-8,5.406870951769552e-4,4.3138228021123006e-5,-1.3851605137995859e-8,5.409276624223462e-4,4.355360016244392e-5,-1.3959259082476329e-8,5.410308634400444e-4,4.388299832113226e-5,-1.404572807505199e-8,5.410560312127462e-4,4.406544519190341e-5,-1.409387560046213e-8,5.410774246421454e-4,4.4090008179269903e-5,-1.4099829500317099e-8,5.411566007764416e-4,4.399025355105983e-5,-1.4071552354515442e-8,5.413273035270495e-4,4.3823916588713976e-5,-1.4023612135435341e-8,5.415945168970027e-4,4.365179453199496e-5,-1.3971835246327046e-8,5.41941678191083e-4,4.3523829968479546e-5,-1.3929763987744986e-8,5.423397870270695e-4,4.3473105445618066e-5,-1.3906988846966135e-8,5.427550475932729e-4,4.3515132910834864e-5,-1.3908697960636151e-8,5.431542404764803e-4,4.364960885200329e-5,-1.393582992804166e-8,5.435083954292767e-4,4.386290135691708e-5,-1.3985503452994463e-8,5.437955680521673e-4,4.413075019834189e-5,-1.4051648813651171e-8,5.440031193610353e-4,4.442130458093591e-5,-1.4125847171957948e-8,5.441294904295869e-4,4.4698775986850106e-5,-1.4198377383350764e-8,5.441851609821107e-4,4.4927902109817414e-5,-1.4259451932272639e-8,5.44192274379237e-4,4.5079042801761985e-5,-1.4300570677415424e-8,5.441825131835359e-4,4.513324877772769e-5,-1.4315854380231034e-8,5.441931678314615e-4,4.508643514283918e-5,-1.4303200161377657e-8,5.442616930190452e-4,4.495182030705989e-5,-1.4265097005812744e-8,5.444193252662113e-4,4.475992062198913e-5,-1.420891194830896e-8,5.446845113517835e-4,4.455563870804244e-5,-1.4146439051286658e-8,5.450570012046475e-4,4.439214140356481e-5,-1.4092482439868092e-8,5.455138259491807e-4,4.432123995689494e-5,-1.4062247519459378e-8,5.460091567979519e-4,4.4380529159655735e-5,-1.4067548181360422e-8,5.464806332929459e-4,4.457933352573298e-5,-1.411246534473196e-8,5.468639351101996e-4,4.488842557502628e-5,-1.41900303462031e-8,5.471137114483806e-4,4.5240836901430264e-5,-1.4282186009332701e-8,5.472228700801882e-4,4.5549104705021665e-5,-1.436459415403402e-8,5.472286408053625e-4,4.573542557700775e-5,-1.4415174862346914e-8,5.471991045330296e-4,4.576046398285103e-5,-1.4422216878027767e-8,5.47206448294467e-4,4.56349055279638e-5,-1.4387623676551349e-8,5.473019740297997e-4,4.5409058585348715e-5,-1.4324164571538933e-8,5.475045890269017e-4,4.5149831126079944e-5,-1.4249406835206891e-8,5.47803705825606e-4,4.4918876045973197e-5,-1.4180002072172085e-8,5.481698176479473e-4,4.4759851057189094e-5,-1.412830013525889e-8,5.48565692247331e-4,4.469494792163449e-5,-1.410125538583461e-8,5.489546078069922e-4,4.4727065395722936e-5,-1.4100722236229494e-8,5.493051789854964e-4,4.484400912140682e-5,-1.4124308082445898e-8,5.495938405083384e-4,4.5022613923846395e-5,-1.4166321890606745e-8,5.498062624304646e-4,4.523222436300298e-5,-1.4218687392005276e-8,5.499384595504489e-4,4.54378852388539e-5,-1.4271863647322725e-8,5.49997724894559e-4,4.560386201037831e-5,-1.4315865288538859e-8,5.500030030438457e-4,4.5697985530979016e-5,-1.434147018981161e-8,5.499839508065228e-4,4.5696843463098964e-5,-1.4341625669559141e-8,5.499779032270899e-4,4.559110119398946e-5,-1.4312908167490931e-8,5.500244181110129e-4,4.5389582007094315e-5,-1.4256724128095877e-8,5.50157883005538e-4,4.512048381923619e-5,-1.417984329569152e-8,5.503995686945172e-4,4.482844257285975e-5,-1.4093882581779136e-8,5.507511242321261e-4,4.456714389146746e-5,-1.4013561269086788e-8,5.511914791808575e-4,4.438847474538031e-5,-1.3953862718354635e-8,5.516785262955729e-4,4.43302010252111e-5,-1.3926532510634918e-8,5.521561635635225e-4,4.4404755979930705e-5,-1.3936611787065186e-8,5.525663239678071e-4,4.459220322119048e-5,-1.3979975801327925e-8,5.528642063231052e-4,4.484065587117192e-5,-1.4043007349154969e-8,5.530328973052125e-4,4.507661529127626e-5,-1.4105288308440919e-8,5.530916519570143e-4,4.522480506594574e-5,-1.4145236907282978e-8,5.530923528858961e-4,4.523202408225343e-5,-1.4147030087645297e-8,5.531031506537776e-4,4.5085084291692684e-5,-1.4105860437065999e-8,5.531855430718504e-4,4.4813819040833696e-5,-1.4028958709191986e-8,5.533755526889687e-4,4.447784879142051e-5,-1.3932084645392354e-8,5.536768815553462e-4,4.41448232435347e-5,-1.3833668292310375e-8,5.540662856310166e-4,4.387093911013423e-5,-1.3749517436350942e-8,5.545054107827476e-4,4.369036706870036e-5,-1.3689826206305373e-8,5.549526056740539e-4,4.3613801028485625e-5,-1.3658542876311258e-8,5.553711420623051e-4,4.363257224331595e-5,-1.3654223719707622e-8,5.55733434845886e-4,4.3724503286497815e-5,-1.3671440617076656e-8,5.560225166865299e-4,4.385919757848827e-5,-1.3702164569045507e-8,5.56232263778228e-4,4.400211587684637e-5,-1.3736921152732457e-8,5.563673733728169e-4,4.4117846392702796e-5,-1.376575922796316e-8,5.564433941300915e-4,4.4173372568585065e-5,-1.3779194966470485e-8,5.564864419333089e-4,4.414206095567587e-5,-1.3769317275568825e-8,5.565317072407061e-4,4.4008603643539826E-05,-1.373115531210439e-8,5.566196665612034e-4,4.377426004116058e-5,-1.3664180386757936e-8,5.567893255742785e-4,4.3460653879901505e-5,-1.3573495648336821e-8,5.5706903259323e-4,4.3109638309396154e-5,-1.3470018373719109e-8,5.574671621600434e-4,4.277713905643178e-5,-1.3369019224232388e-8,5.579663031544923e-4,4.25209069743737e-5,-1.3286905991693288e-8,5.585242506155931e-4,4.2385091814629774e-5,-1.323695369887385e-8,5.590827837639093e-4,4.238670958930531e-5,-1.322532616995296e-8,5.595820943030839e-4,4.2508928121728134e-5,-1.324879527303495e-8,5.599765436803205e-4,4.270375260425213e-5,-1.3295025360336303e-8,5.602470647653046e-4,4.290357624198227e-5,-1.3345467218010926e-8,5.604066433327727e-4,4.3038521618008536e-5,-1.3380135565607916e-8,5.604971361354452e-4,4.305496671614097e-5,-1.3382982052173816e-8,5.605778644400599e-4,4.293002467591174e-5,-1.3346289025681776e-8,5.607089623263255e-4,4.267729978794635e-5,-1.3272636519098559e-8,5.609347399582315e-4,4.234165410834814e-5,-1.3173718674744843e-8,5.61272824224999e-4,4.1984822487049506e-5,-1.3066489427049024e-8,5.617125088503604e-4,4.1667542738988164e-5,-1.2968201743518012e-8,5.622215885905281e-4,4.1434866394617e-5,-1.289219032748799e-8,5.627575830200749e-4,4.130882130901546e-5,-1.2845587660872705e-8,5.632786025023382e-4,4.1288594336048484e-5,-1.2829102735199409e-8,5.637508743402848e-4,4.135555763250854e-5,-1.2838217765699319e-8,5.641523616550949e-4,4.147987966628914e-5,-1.2864954028178306e-8,5.644734987008431e-4,4.1626480056051095e-5,-1.2899567931198906e-8,5.647164882240774e-4,4.1759528984558676e-5,-1.2931887162585448e-8,5.648942535231952e-4,4.184578296212132e-5,-1.2952297818560158e-8,5.650294889116143e-4,4.1857547900959665e-5,-1.2952577895423737e-8,5.651535715361088e-4,4.177605896823371e-5,-1.2926828568155383e-8,5.653044894483615e-4,4.159567182824132e-5,-1.287267633441649e-8,5.655225692094629e-4,4.132839759346974e-5,-1.279266224815386e-8,5.658430328778544e-4,4.100697766475647e-5,-1.2695307297663935e-8,5.662857653330005e-4,4.068344030322492e-5,-1.2594934042639526e-8,5.668451659124272e-4,4.042019197207262e-5,-1.2509327194232984e-8,5.674853336557398e-4,4.027347907363591e-5,-1.2455107328985577e-8,5.681455713211361e-4,4.027408208489247e-5,-1.244214622307206e-8,5.68756746685192e-4,4.0414004798879e-5,-1.2469513131187434e-8,5.692626340933667e-4,4.0646580039138516e-5,-1.2525133623159566e-8,5.696369955166504e-4,4.090066807453131e-5,-1.2589478046435055e-8,5.698896665275624e-4,4.110245921092196e-5,-1.2641551835441664e-8,5.700608716068607e-4,4.1195953729986446e-5,-1.2664715990718236e-8,5.702077505850598e-4,4.1155798139361454e-5,-1.2650540717421748e-8,5.703884759901265e-4,4.099042424392756e-5,-1.2600051493450478e-8,5.706483903579017e-4,4.073662588412746e-5,-1.2522583891047876e-8,5.710109691405875e-4,4.0448332338844876e-5,-1.243290518949643e-8,5.714748841309391e-4,4.0182934684654553E-05,-1.2347452802728689e-8,5.720170435890389e-4,3.9988544477136714e-5,-1.2280615128135358e-8,5.726001321744273e-4,3.9895057969472874e-5,-1.2241921421025485e-8,5.731821206679281e-4,3.991064069654339e-5,-1.2234717623019245e-8,5.737250198595423e-4,4.002343402058786e-5,-1.2256397133360156e-8,5.742009861844149e-4,4.0206784374766535e-5,-1.2299779958393722e-8,5.745952088943357e-4,4.042579305071043e-5,-1.2355009254206567e-8,5.749061274942017e-4,4.064339540438695e-5,-1.2411383146639144e-8,5.751440773201222e-4,4.0825069665894794e-5,-1.2458778726029885e-8,5.753293799587323e-4,4.094221059405223e-5,-1.2488629625521792e-8,5.754904006567578e-4,4.097477176506438e-5,-1.2494646793562146e-8,5.756615125629631e-4,4.0913864151746437e-5,-1.2473547362790684e-8,5.758803459554417e-4,4.076472695839921e-5,-1.24259847650868e-8,5.761832436211499e-4,4.0549772255380785e-5,-1.2357617600292305e-8,5.765979379808243e-4,4.0310124351701156e-5,-1.2279811549458918e-8,5.771336876089873e-4,4.010269549721812e-5,-1.2209012413795871e-8,5.777716895829274e-4,3.9989598090760646e-5,-1.2163757626176808e-8,5.784616465902294e-4,4.001937776225071e-5,-1.2159125570823381e-8,5.791308482835355e-4,4.020580099469462e-5,-1.2200322952745242e-8,5.797065295022585e-4,4.0515899636114696e-5,-1.2278907274980914e-8,5.80142457888133e-4,4.087731150446172e-5,-1.2374661952472232e-8,5.804354401798264e-4,4.120363917341638e-5,-1.2462792256088949e-8,5.806232139856671e-4,4.142456024104346e-5,-1.2522577976320966e-8,5.807671988462954e-4,4.1505812543823224e-5,-1.2543184545504214e-8,5.809309310098887e-4,4.145299058481706e-5,-1.2524943479233836e-8,5.811633911987712e-4,4.130273058000135e-5,-1.2477155055317291e-8,5.814906054594975e-4,4.110843349549538e-5,-1.241437134424403e-8,5.819145513730104e-4,4.092617541810449e-5,-1.2352610977888855e-8,5.824169208822125e-4,4.0803658015597504e-5,-1.2306198503680667e-8,5.829655041898003e-4,4.077300848955851e-5,-1.2285457641107754e-8,5.835216304790936e-4,4.08473506951388e-5,-1.2295353076190144e-8,5.840475044047213e-4,4.1020878040647856e-5,-1.2335168157344423e-8,5.845123946407954e-4,4.1271912795883656e-5,-1.2399194688289209e-8,5.848968676341912e-4,4.1568009920163966e-5,-1.247819580484653e-8,5.851947152164219e-4,4.1871931312817365e-5,-1.2561243079423654e-8,5.854127287371877e-4,4.214737362730478e-5,-1.2637501168654626e-8,5.855689082537816e-4,4.236363657066199e-5,-1.2697641820982583e-8,5.856898580934266e-4,4.2498978178316354e-5,-1.2734800220127118e-8,5.85807889067023e-4,4.254292268264029e-5,-1.2745207957826337e-8,5.859579513795578e-4,4.249795347224145e-5,-1.272871639020561e-8,5.861741086786202e-4,4.2380895742717424e-5,-1.2689360718495551e-8,5.8648484953241e-4,4.2223796026970555e-5,-1.2635890084310931e-8,5.869065735812319e-4,4.2073073991807874e-5,-1.2581801894459312e-8,5.874356319421588e-4,4.19846475120227e-5,-1.2544061137121026e-8,5.880413756125081e-4,4.201259995003142e-5,-1.2539678227518325e-8,5.886653049404993e-4,4.219108683589354e-5,-1.2580052638216501e-8,5.8923238679551e-4,4.2514839582835756e-5,-1.266480189970253e-8,5.896756386652956e-4,4.2930283800824865e-5,-1.2778839288959433e-8,5.89964101552167e-4,4.334851356362142e-5,-1.2896139522771572e-8,5.901171113360668e-4,4.367814905014522e-5,-1.298951948589008e-8,5.901947880698806e-4,4.38602737483596e-5,-1.3040992057450742e-8,5.902714285460607e-4,4.3885736496831144e-5,-1.3046861211874255e-8,5.904086373518427e-4,4.3789236335983746e-5,-1.3016096632518927e-8,5.90640488345573e-4,4.362965960038413e-5,-1.2964884842237333e-8,5.90971946441086e-4,4.34695603945582e-5,-1.2911008855333938e-8,5.913852195337234e-4,4.336092270372908e-5,-1.2869904121306538e-8,5.918485774305888e-4,4.333812126088688e-5,-1.285252461742886e-8,5.923245446952727e-4,4.3416150897318016e-5,-1.2864501648532461e-8,5.927764593066211e-4,4.359190961413261e-5,-1.2906114467297666e-8,5.931734732856898e-4,4.384714236114294e-5,-1.2972841846778543e-8,5.934942150203255e-4,4.4152466088083324e-5,-1.3056421398296158e-8,5.937291030815587e-4,4.447215885443439e-5,-1.3146311817982143e-8,5.938811933955622e-4,4.47693426906656e-5,-1.3231356330999967e-8,5.93965485886057e-4,4.5011077674093984e-5,-1.3301399351245954e-8,5.94006799600864e-4,4.5172770496475155e-5,-1.334862131885749e-8,5.940365840398179e-4,4.5241413682133494e-5,-1.336846818500244e-8,5.940891110207756e-4,4.521750624615486e-5,-1.3360212923084611e-8,5.941973595900601e-4,4.511571456359875e-5,-1.3327250246980502e-8,5.943887128092454e-4,4.4964352725929755e-5,-1.3277177720368145e-8,5.946803298205737e-4,4.480359021479988e-5,-1.3221572693952441E-08,5.950740552025116e-4,4.4681698944798734e-5,-1.3175121289205661e-8,5.955515209880322e-4,4.4648007751150914e-5,-1.3153551831570361e-8,5.960715426732222e-4,4.474149532569575e-5,-1.3169977028198143e-8,5.965733804112413e-4,4.4975795704802126e-5,-1.3229934760324216e-8,5.969897334847129e-4,4.5325368620618036e-5,-1.3326761651752678e-8,5.972695820723137e-4,4.572244176421522e-5,-1.3440440521292401e-8,5.974020923934746e-4,4.607385900358259e-5,-1.3542760448690568e-8,5.974260041454101e-4,4.6295468638069834e-5,-1.3607887991505155e-8,5.974149745012774e-4,4.63461491160932e-5,-1.3622690856111841e-8,5.974464645346873e-4,4.62408255489987e-5,-1.3590608456208522e-8,5.975733330563519e-4,4.603711609863486e-5,-1.3527729382284185e-8,5.978120949073726e-4,4.5808229996933905e-5,-1.3455010772294891e-8,5.981476506938362e-4,4.561887790575258e-5,-1.3391473757723922e-8,5.985457456463102e-4,4.551241536514983e-5,-1.3350535217826406e-8,5.989652880636257e-4,4.550820785410715e-5,-1.3339057205444769e-8,5.993671400674556e-4,4.560473672048171e-5,-1.3357888193002322e-8,5.997192571010954e-4,4.578464443118222e-5,-1.340296607210915e-8,5.999993638835912e-4,4.601975491101805e-5,-1.3466562670281527e-8,6.001963194062474e-4,4.627562551405624e-5,-1.353859250547407e-8,6.003106951839153e-4,4.651585668922163e-5,-1.3607999789540018e-8,6.003545828554706e-4,4.670640694476506e-5,-1.3664190858733449e-8,6.003504102879558e-4,4.681993271445912e-5,-1.3698426655564152e-8,6.003285040062579e-4,4.6839792267256964e-5,-1.3705039077842174e-8,6.003233654665366e-4,4.6763054815347505e-5,-1.3682318721009288e-8,6.00368980029104e-4,4.6601915443853456e-5,-1.3632979669015082e-8,6.004936892972919e-4,4.638313791509782e-5,-1.3564152706925421e-8,6.007152397239569e-4,4.6145339984406526e-5,-1.348684271745055e-8,6.010365913857648e-4,4.5934168128419516e-5,-1.3414767746104295e-8,6.014429942225124e-4,4.5795480210201754e-5,-1.3362464203894209e-8,6.019011057532637e-4,4.576653383496385e-5,-1.334252963495435e-8,6.023615895275835e-4,4.586559553492988e-5,-1.3362105344807452e-8,6.027669935205449e-4,4.608188309838632e-5,-1.3419300705541302e-8,6.030658883371729e-4,4.6370003546858796e-5,-1.350105745458068e-8,6.032312519987232e-4,4.66548633865428e-5,-1.3584497719127712e-8,6.032758091670896e-4,4.685133527899667e-5,-1.3643100300052348e-8,6.032535495762095e-4,4.6894725810143705e-5,-1.365628640799527e-8,6.03241729155245e-4,4.6767362660908595e-5,-1.3617683021674188e-8,6.033108166392385e-4,4.65049510596044e-5,-1.3537085025814027e-8,6.034993182490741e-4,4.617895985207165e-5,-1.3435213551070888e-8,6.038060843341433e-4,4.5867317225684895e-5,-1.3335114749071355e-8,6.041994185155103e-4,4.563018257654167e-5,-1.3255104395874068e-8,6.046332663829588e-4,4.549926714185694e-5,-1.3205572436516151e-8,6.05061438746373e-4,4.5478931464839044e-5,-1.3189054107180226e-8,6.054462336936745e-4,4.555306960662015e-5,-1.3201909329785792e-8,6.05762009514742e-4,4.5692876070382345e-5,-1.3236331295070042e-8,6.059957599659084e-4,4.586321651672058e-5,-1.3282117826334546e-8,6.061465022300673e-4,4.6027351570760987e-5,-1.332813231699191e-8,6.062243702543427e-4,4.615066462844048e-5,-1.3363565264245378e-8,6.062495021200464e-4,4.620409516581872e-5,-1.3379104609315037e-8,6.062503718534889e-4,4.616766157689615e-5,-1.3368067825864579e-8,6.062610395188557e-4,4.6033924576426214e-5,-1.3327457601791911e-8,6.063169469718518e-4,4.581063544655485e-5,-1.3258772884036288e-8,6.064494044595206e-4,4.55215188896636e-5,-1.3168331958415403e-8,6.066795318747286e-4,4.52042881604833e-5,-1.3066866709055663e-8,6.070128998625647e-4,4.490545427349359e-5,-1.2968213330564991e-8,6.074363111856063e-4,4.467226793872749e-5,-1.2887087372606102e-8,6.079179098524724e-4,4.4543009907630994e-5,-1.2836174421477544e-8,6.084112436310817e-4,4.453736700212919e-5,-1.282297992625794e-8,6.08863370461571e-4,4.464886329443632e-5,-1.2847073663286673e-8,6.092264758703546e-4,4.4841679024146196e-5,-1.289860746681526e-8,6.094712937410751e-4,4.505445305432866e-5,-1.2959127922180999e-8,6.095987972448405e-4,4.521292039621171e-5,-1.3005410854173592e-8,6.096448764943399e-4,4.5250510079934645e-5,-1.3016030794821033e-8,6.096730138384927e-4,4.513114561506076e-5,-1.2978711001202054e-8,6.097545631549566e-4,4.486402580498518e-5,-1.2895124516848801e-8,6.099439852908066e-4,4.450134061490781e-5,-1.2780348513948726e-8,6.102610819546051e-4,4.4118743907326676e-5,-1.265702267633818e-8,6.106884949894511e-4,4.378880296374916e-5,-1.2547376438516559e-8,6.111831302385094e-4,4.356052924504412e-5,-1.2467023709897674e-8,6.116930853079845e-4,4.3451843285146805e-5,-1.2422507196552202e-8,6.121718091847651e-4,4.3453283807383274e-5,-1.2412110270198072e-8,6.125859229567852e-4,4.3537061943772174e-5,-1.242828767855344e-8,6.129174051327997e-4,4.3666315988779066e-5,-1.2460290569013057e-8,6.131625421240779e-4,4.380214478201701e-5,-1.249629588729844e-8,6.133297797994605e-4,4.390824915390768e-5,-1.2524935334363993e-8,6.134376059320164e-4,4.395405443660182e-5,-1.2536392208869133e-8,6.135126429920539e-4,4.391729178049016e-5,-1.2523285610369912e-8,6.135875232541355e-4,4.37866565556534e-5,-1.248151062142838e-8,6.136978474050366e-4,4.3564553195397556e-5,-1.2411078877572878e-8,6.138776204707606e-4,4.3269171658970975e-5,-1.2316794930864575e-8,6.141531157431434e-4,4.293451537346142e-5,-1.2208394276352459e-8,6.145360882992824e-4,4.260690395661579e-5,-1.2099680577646451e-8,6.150183068876578e-4,4.233718420343913e-5,-1.2006354865178858e-8,6.155698862543469e-4,4.216944569007125e-5,-1.194266561911202e-8,6.161432780116315e-4,4.212893829735594e-5,-1.191760894514987e-8,6.166829962369822e-4,4.221304211145604e-5,-1.1931838226690434e-8,6.171390028809723e-4,4.2388733189199025e-5,-1.1976435073662864e-8,6.174801786565707e-4,4.2598204728411776e-5,-1.2034228597516467e-8,6.177039713164523e-4,4.2771969148489644e-5,-1.2083631887323418e-8,6.178390324477566e-4,4.284658717591776e-5,-1.2104190944765916e-8,6.179391490155112e-4,4.2782467541547576e-5,-1.2082381407395732e-8,6.180690499519215e-4,4.257622589977647e-5,-1.2015807665370394e-8,6.182856981106309e-4,4.2262641290182364e-5,-1.1914142478848567e-8,6.186214061728539e-4,4.1904306638940616e-5,-1.1796159869780265e-8,6.190753692770967e-4,4.1572254817565175e-5,-1.168386155567887e-8,6.196167242703293e-4,4.1325277041778395e-5,-1.1596058210408694e-8,6.201967488488639e-4,4.119594759437842e-5,-1.1543865254199268e-8,6.20764019662867e-4,4.118716574602068e-5,-1.1529328261415304e-8,6.21276549030351e-4,4.127757978552318e-5,-1.154678533548196e-8,6.217080946567695e-4,4.143120927489927e-5,-1.1585638643255654e-8,6.220491812385284e-4,4.1606888823869886e-5,-1.1633240123016763e-8,6.223049974865838e-4,4.176527688606243e-5,-1.1677161479087305e-8,6.224922388533137e-4,4.1873203335198556e-5,-1.1706688765447071e-8,6.226360955927154e-4,4.1906205539858945e-5,-1.1713717885084007e-8,6.227676718629662e-4,4.185030251602371e-5,-1.1693341505436549E-08,6.229214415278793e-4,4.1703735041523074e-5,-1.1644381723185078e-8,6.231319853664534e-4,4.147878640125714e-5,-1.1569970337746821e-8,6.234292802965761e-4,4.120299476324085e-5,-1.1478018587251494e-8,6.238323413543623e-4,4.0918246606836314e-5,-1.1381111507640178e-8,6.243421835840833e-4,4.067585345858345e-5,-1.1295177991775304e-8,6.249366570621865e-4,4.052646987191822e-5,-1.1236482520549367e-8,6.255707246045346e-4,4.0506051125566727e-5,-1.1217220872998886e-8,6.261847863392266e-4,4.062225481812146e-5,-1.124105993740093e-8,6.267202336075681e-4,4.08475845493812e-5,-1.1300642714626034e-8,6.271371716095217e-4,4.112393555640522e-5,-1.1378640363826194e-8,6.274272002337375e-4,4.137818217173511e-5,-1.1452374173663731e-8,6.276160661029025e-4,4.1543172110683946e-5,-1.1500321761911784e-8,6.277555903893943e-4,4.157642470580568e-5,-1.1508102924530854e-8,6.27908422691926e-4,4.147064598947023e-5,-1.1472061584588963e-8,6.281309101857208e-4,4.125382444025051e-5,-1.1399670417759892e-8,6.284589806615875e-4,4.0979990293322234e-5,-1.1307001676311571e-8,6.289004951050204e-4,4.071397673517665e-5,-1.1214196847662963e-8,6.294355537344494e-4,4.051475934856745e-5,-1.1140281814471427e-8,6.300239373611482e-4,4.0422039237037176e-5,-1.1098767800734435e-8,6.306167817204206e-4,4.044943019418976e-5,-1.1095165829009265e-8,6.311685570877783e-4,4.058515042629986e-5,-1.1126836428171848e-8,6.316459742628735e-4,4.079850842401508e-5,-1.1184776656645354e-8,6.320322305868174e-4,4.104897677346346e-5,-1.1256406714476454e-8,6.323269912046183e-4,4.129481071708473e-5,-1.1328374881368757e-8,6.325436800244089e-4,4.149944694038418e-5,-1.138873428162963e-8,6.327057717418874e-4,4.16353572641571e-5,-1.142829124798009e-8,6.3284320211077e-4,4.168599958414399e-5,-1.144127484924841e-8,6.329892507073682e-4,4.1646813714983565e-5,-1.1425641935138297e-8,6.331776221375067e-4,4.1525972124440285e-5,-1.1383308731724334e-8,6.334390698103364e-4,4.134505386970275e-5,-1.1320431548573354e-8,6.337968406765966e-4,4.1139068109295805e-5,-1.1247577530122925e-8,6.342606793062239e-4,4.0954382499360176e-5,-1.1179279984573037e-8,6.34820349377044e-4,4.084256691331992e-5,-1.1132243894526839e-8,6.354414692002509e-4,4.084884439949683e-5,-1.1121682761778917e-8,6.360679001502076e-4,4.0996568100376256e-5,-1.1156195968997953e-8,6.366339468110234e-4,4.1273455162251384e-5,-1.1233067444498262e-8,6.370847593082296e-4,4.162814226045832e-5,-1.1336844237008164e-8,6.37396720814852e-4,4.1982708229566924e-5,-1.1443112874876232e-8,6.375870858518857e-4,4.225789061658065e-5,-1.1526456467575253e-8,6.377074182492132e-4,4.239935949578947e-5,-1.1568844891267493e-8,6.378247532323368e-4,4.239301187350808e-5,-1.1564617122042744e-8,6.380001550354765e-4,4.226467189936685e-5,-1.1520634437041544e-8,6.382730696351323e-4,4.20678159364482e-5,-1.145275407366425e-8,6.386547983664781e-4,4.186642207611976e-5,-1.1380759726833166e-8,6.391301491825187e-4,4.1718969727590826e-5,-1.1323481608403951e-8,6.396645134501095e-4,4.16669354931265E-05,-1.1295058824572489e-8,6.402135211432802e-4,4.1728883630486846e-5,-1.130272523179324e-8,6.407329313863037e-4,4.189994975384543e-5,-1.1346210158588048e-8,6.411869273337647e-4,4.215579668992807e-5,-1.141864418294653e-8,6.415535317098374e-4,4.245951292741821e-5,-1.1508603446175233e-8,6.418266451670236e-4,4.276953906141313e-5,-1.160268944345754e-8,6.420150711981394e-4,4.3046889911181794e-5,-1.168800792468656e-8,6.42139481568027e-4,4.326056338850396e-5,-1.1754073581974093e-8,6.422284650134046e-4,4.3390762964130205e-5,-1.1793939423120785e-8,6.423145863944254e-4,4.343025232088572e-5,-1.1804643333497793e-8,6.424308611712833e-4,4.3384560725109035e-5,-1.1787259369334247e-8,6.426075271147033e-4,4.327164998942055e-5,-1.1746830998873365e-8,6.428686772623222e-4,4.312121499188235e-5,-1.1692290186969063e-8,6.43228211111064e-4,4.297319789412587e-5,-1.163620160738782e-8,6.436849034127897e-4,4.2874338512484316e-5,-1.1593853762600689e-8,6.442175178239869e-4,4.287106863696716e-5,-1.1581024865378009e-8,6.447826241944376e-4,4.299769946587701e-5,-1.1610003778983072e-8,6.453192106631316e-4,4.326148989808878e-5,-1.1684410461728622e-8,6.457633643151136e-4,4.363072674477005e-5,-1.179495428359945e-8,6.460709780358178e-4,4.403539258500074e-5,-1.1919425251124777e-8,6.46238269440531e-4,4.438654427814625e-5,-1.202896701159812e-8,6.463067360377512e-4,4.460863357575101e-5,-1.2098638955452586e-8,6.463473522053487e-4,4.466782983677177e-5,-1.2116629130642991e-8,6.464328198700985e-4,4.458091988511223e-5,-1.2087172530117929e-8,6.466134080396352e-4,4.440296244483021e-5,-1.2026767218001455e-8,6.469062893985017e-4,4.420432212394621e-5,-1.1957162905655501e-8,6.472980673486538e-4,4.4049415375376975e-5,-1.1898899064049858e-8,6.477545569824074e-4,4.398348465637827e-5,-1.1867178141227173e-8,6.482321283936542e-4,4.402769158632383e-5,-1.1870077472484313e-8,6.486874451684293e-4,4.4180110616365914e-5,-1.190843181001741e-8,6.490845942283705e-4,4.442004791255551e-5,-1.1976767655848106e-8,6.493996674170178e-4,4.471399475420608e-5,-1.2064930829832403e-8,6.496230132730473e-4,4.502224997790057e-5,-1.2160170877601224e-8,6.497593165315699e-4,4.530541463222377e-5,-1.2249376594925378e-8,6.498257985589669e-4,4.5530023897967826e-5,-1.2321106524374785e-8,6.498490150835266e-4,4.5672787320462324e-5,-1.2367125184429808e-8,6.49860849248668e-4,4.5723111388483726e-5,-1.2383285624306336e-8,6.498943459428724e-4,4.56838734642481e-5,-1.2369777794004631e-8,6.499798483583396e-4,4.5570805788698724e-5,-1.2330940194194202e-8,6.50141540921297e-4,4.5410946737608354e-5,-1.2274858062634918e-8,6.50394252361549e-4,4.524034632505981e-5,-1.2212820673742356e-8,6.507402898474811e-4,4.510081644081227e-5,-1.2158498221920027e-8,6.511662941424877e-4,4.503501619399875e-5,-1.2126476181320007e-8,6.516409652377725e-4,4.507883196177047e-5,-1.2129687005367259e-8,6.521158333795178e-4,4.525065636203942e-5,-1.2175577965498676e-8,6.525322031476455e-4,4.553941364164363e-5,-1.2261726884082065e-8,6.528365381010586e-4,4.5896913451435045e-5,-1.2372957541494924e-8,6.53001864278318e-4,4.6243075736359524e-5,-1.2482966177543175e-8,6.530450153429226e-4,4.6489294263523875e-5,-1.2562182212005331e-8,6.530262302326049e-4,4.657300931178719e-5,-1.2589338662501737e-8,6.530266241761063e-4,4.6484341852986244e-5,-1.2560253186849565e-8,6.531153745404709e-4,4.626789168937222e-5,-1.248839206681805e-8,6.533259500794602e-4,4.600025166059354e-5,-1.2397689341809364e-8,6.536518626923442e-4,4.5759473698595974e-5,-1.2312978138197302e-8,6.540578644141293e-4,4.56028117197643e-5,-1.2253084886290816e-8,6.544960449519266e-4,4.555825704891566e-5,-1.222809841334969e-8,6.549192256583115e-4,4.562646405711048e-5,-1.2239671643138295e-8,6.552892641813089e-4,4.578752220519903e-5,-1.2282737836356728e-8,6.555809511761707e-4,4.6008638879196065e-5,-1.23475952409882e-8,6.557831063329746e-4,4.625097547136351e-5,-1.2421941128098137e-8,6.558981448308248e-4,4.647540239116749e-5,-1.2492798538365653e-8,6.559406151232579e-4,4.664739366488725e-5,-1.2548313680324879e-8,6.55934795368779e-4,4.674108669115587e-5,-1.2579299722569738e-8,6.559114262674878e-4,4.674234926529412e-5,-1.258037528172128e-8,6.559037475636952e-4,4.6650576798607184e-5,-1.2550589153337167e-8,6.559431799480559e-4,4.647890047352641e-5,-1.2493483386171588e-8,6.560551490320222e-4,4.625272895401807e-5,-1.241665830734056e-8,6.562554736211841e-4,4.6006843480568736e-5,-1.2330965549949725e-8,6.565475621712678e-4,4.5781298533340715e-5,-1.224938677601268e-8,6.569205673771478e-4,4.561626701972796e-5,-1.2185538559539806e-8,6.573487109405446e-4,4.554580590585966e-5,-1.2151659149246088e-8,6.577924153502072e-4,4.5590415220543125e-5,-1.215594635662814e-8,6.58202593113294e-4,4.574881097857109e-5,-1.2199412084801173e-8,6.585297262397721e-4,4.59909687918636e-5,-1.2273096298199133e-8,6.587382425042407e-4,4.62568085760598e-5,-1.2357324481940705e-8,6.588231495329708e-4,4.646624084061321e-5,-1.2425073606254522e-8,6.588204978599106e-4,4.65431768960108e-5,-1.2450244405357208e-8,6.588012287440477e-4,4.644637290291428e-5,-1.2418191579088436e-8,6.588458419334591e-4,4.61899779128904e-5,-1.2332619928155143e-8,6.590119357198074e-4,4.5838877755827045e-5,-1.2214031205022718e-8,6.593137391720427e-4,4.548068499544168e-5,-1.2090617955505468e-8,6.597236153319567e-4,4.519227164557173e-5,-1.1987544773090963e-8,6.601895628610029e-4,4.5018724180246425e-5,-1.1920237507966108e-8,6.606554423138694e-4,4.49697296954195e-5,-1.189308702067798e-8,6.610749674083071e-4,4.502738150794323e-5,-1.1901620274760557e-8,6.614178803084616e-4,4.515738862713096e-5,-1.1935726383931564e-8,6.616706357616994e-4,4.531887849385159e-5,-1.1982572911828448e-8,6.61834447382716e-4,4.547133072107415e-5,-1.2028824379413137e-8,6.6192264137107e-4,4.5579126378920714e-5,-1.2062283892577649e-8,6.619580115031964e-4,4.561475770029697e-5,-1.2073180904243843e-8,6.619700433900955e-4,4.556135838574398e-5,-1.2055197467963607e-8,6.61991699576438e-4,4.5414661343623503e-5,-1.200620365179172e-8,6.620555712945934e-4,4.51840896179602e-5,-1.1928622796913211e-8,6.621894741458482e-4,4.489240920507422e-5,-1.182931385336294e-8,6.624119923538018e-4,4.457342997377879e-5,-1.1718880084197724e-8,6.627287685916333e-4,4.4267655432898346e-5,-1.1610397059841187e-8,6.631303288208212e-4,4.401622188040044e-5,-1.1517614629584648e-8,6.635920520441031e-4,4.3853814799379214e-5,-1.1452739383809711e-8,6.640766309640293e-4,4.3801500136949246e-5,-1.1423990223408127e-8,6.645391547065707e-4,4.3860465762502585e-5,-1.1433213609765761e-8,6.649348907757294e-4,4.400781803244625e-5,-1.1474022268078109e-8,6.652295738743438e-4,4.4196208170768975e-5,-1.1531237312247409e-8,6.654109062286146e-4,4.435975285734818e-5,-1.1582666541464982e-8,6.654978651706966e-4,4.442827675775156e-5,-1.1603994416442983e-8,6.655421492594667e-4,4.434891282437948e-5,-1.1576365369570233e-8,6.656163939754637e-4,4.410816482066763e-5,-1.1494114352982963e-8,6.657897957674164e-4,4.3742356818358154e-5,-1.136844192019311e-8,6.661014873919342e-4,4.332714263267976e-5,-1.1223980436229123e-8,6.66546435586102e-4,4.294919512763321e-5,-1.1089453851181167e-8,6.670813088959861e-4,4.267547632709114e-5,-1.0987569771282318e-8,6.676444956798761e-4,4.2535713727573955e-5,-1.0929181332560628e-8,6.681774843805674e-4,4.252258156620681e-5,-1.0913107238000703e-8,6.686384044883153e-4,4.260325002735994e-5,-1.0929587800350869e-8,6.690062161390295e-4,4.2733346818073974e-5,-1.0964592948012124e-8,6.692787368457985e-4,4.286787118068754e-5,-1.1003310653399214e-8,6.694682707915127e-4,4.296777011126571e-5,-1.1032406940396475e-8,6.695972389198812e-4,4.300322240539698e-5,-1.1041321064106932e-8,6.696946149272839e-4,4.295523829967347e-5,-1.1023008875669534e-8,6.697929196037282e-4,4.2816698354687566e-5,-1.0974419442589062e-8,6.699251733474295e-4,4.2593196764431914e-5,-1.0896807753560433e-8,6.701212865700194e-4,4.230341044442153e-5,-1.0795842637994127e-8,6.704037174690174e-4,4.1978221761531796e-5,-1.0681328919295532e-8,6.707828559139265e-4,4.1657672615155404e-5,-1.0566288547495148e-8,6.712532690016723e-4,4.138524242901553e-5,-1.0465216530512158e-8,6.717922865944109e-4,4.119981360746378e-5,-1.0391550497627238e-8,6.723621835534646e-4,4.112674104581725e-5,-1.0354712996658229e-8,6.729163674503193e-4,4.117028254115718e-5,-1.0357404924622589e-8,6.734087601805087e-4,4.1309743555585105e-5,-1.0393953428156289e-8,6.738045432664134e-4,4.150094656252346e-5,-1.0450378613876328e-8,6.740899326696811e-4,4.168357203370962e-5,-1.0506544084907395e-8,6.742784623792691e-4,4.1793849405908306e-5,-1.0540362360195925e-8,6.744112537778521e-4,4.178074134045985e-5,-1.053345924363471e-8,6.745493044657425e-4,4.1621948675312874e-5,-1.0476951591107518e-8,6.747577135709221e-4,4.1334207987166106e-5,-1.0375304924468307e-8,6.750854372839487e-4,4.097200972504231e-5,-1.0246168788815136e-8,6.755482329271165e-4,4.0612262569480024e-5,-1.0115334350837037e-8,6.761231653952755e-4,4.032957409188221e-5,-1.0008413784011982e-8,6.767578521833027e-4,4.017301604488647e-5,-9.94290139609733e-9,6.773894310269758e-4,4.015465619698559e-5,-9.924065754328441e-9,6.779636072244319e-4,4.025271194279116e-5,-9.945684323589636e-9,6.784462992592076e-4,4.042426218751692e-5,-9.994032077050076e-9,6.788262531519046e-4,4.0619750895181834e-5,-1.0052621713449427e-8,6.791114670866537e-4,4.0793953317949755e-5,-1.0105937498144301e-8,6.793233103813246e-4,4.091197852871128e-5,-1.0141630257049476e-8,6.794909850969935e-4,4.0951453051865014e-5,-1.01514585939184e-8,6.7964728168145e-4,4.090274064307937e-5,-1.0131510062344522e-8,6.798254076015645e-4,4.076859742149239e-5,-1.0082138915684628e-8,6.800561699820016e-4,4.0563850495158245e-5,-1.0007849266961698e-8,6.8036477449427e-4,4.031492566409186e-5,-9.917132870207206e-9,6.807668440871827e-4,4.0058407100975396e-5,-9.822042726828585e-9,6.812639721347429e-4,3.98374389784475e-5,-9.737104678895134e-9,6.818400995093161e-4,3.9695020030860256e-5,-9.677186556046806e-9,6.824608377364019e-4,3.966437272967973e-5,-9.65429089058683e-9,6.830778514977682e-4,3.975846050622824e-5,-9.673896804332269e-9,6.8363893699842e-4,3.996251016407234e-5,-9.732153955509115e-9,6.841017372567231e-4,4.023361206932423e-5,-9.815394137449953e-9,6.844466228191916e-4,4.05092582535884e-5,-9.902727164968086e-9,6.846838738110617e-4,4.072297495515305e-5,-9.971213593928136e-9,6.848523051199315e-4,4.082220466885166e-5,-1.000201594026922e-8,6.850095982123903e-4,4.07828469698932e-5,-9.98560223372568e-9,6.852171873960667e-4,4.0616222783899834e-5,-9.924483469796086e-9,6.855238737488718e-4,4.036653532224773e-5,-9.832728989987601e-9,6.859526224257744e-4,4.00993290741107e-5,-9.732322816114245e-9,6.86494446675017e-4,3.988386503340198e-5,-9.647264291981038e-9,6.871115650576727e-4,3.977452661168896e-5,-9.597109977300679e-9,6.877489646437295e-4,3.979728759741124e-5,-9.592045225736865e-9,6.883501673843535e-4,3.994563772478752e-5,-9.631095222420986e-9,6.888714062386018e-4,4.018638516815171e-5,-9.70376889018204e-9,6.89289773006254e-4,4.047168422173579e-5,-9.79400284884246e-9,6.896042371432542e-4,4.075196513064055e-5,-9.884614283434994e-9,6.898314601928995e-4,4.0985699460782386e-5,-9.960814485912439e-9,6.899994707481199e-4,4.114457896454388e-5,-1.0012195088317796e-8,6.901416346331935e-4,4.1214864630885974e-5,-1.0033353714839723e-8,6.902920197616812e-4,4.119656099349532e-5,-1.0023683572674945e-8,6.904821165138293e-4,4.1101881144250444e-5,-9.986848350330236e-9,6.907382638650003e-4,4.09537582206849e-5,-9.930264533573738e-9,6.910790024415842e-4,4.0784383529647454e-5,-9.864646068425661e-9,6.915118287645734e-4,4.06330723894299e-5,-9.803388502339166e-9,6.92029478921974e-4,4.054225759251511e-5,-9.761330963984282e-9,6.926069404711696e-4,4.055042383207215e-5,-9.752392841996608e-9,6.93201577440324e-4,4.068187369966381e-5,-9.785963135087253e-9,6.937591702126083e-4,4.0935603885594335e-5,-9.86281521804032e-9,6.942270330740719e-4,4.1278405821690475e-5,-9.972398042232453e-9,6.945712632534799e-4,4.164815702606528e-5,-1.0093706764041374e-8,6.947908016139201e-4,4.196965425274466e-5,-1.0200641875276863e-8,6.949204861200494e-4,4.217816671559534e-5,-1.027018519806173e-8,6.950204845917e-4,4.2240436893643125e-5,-1.0289782773011855e-8,6.951568783835051e-4,4.2163991349505506e-5,-1.0260761389728324e-8,6.953820071952732e-4,4.1992296890793167e-5,-1.0196951522017627e-8,6.957214881833488e-4,4.1789873918597023e-5,-1.0119904592446122e-8,6.961704254910497e-4,4.162399139921554e-5,-1.0052855248199617e-8,6.966977464138914e-4,4.154851515582117e-5,-1.0015196278929336e-8,6.972559483814732e-4,4.159322790104321e-5,-1.0018554243928807e-8,6.977931798100247e-4,4.1759927789965654e-5,-1.006500579411969e-8,6.982647541256812e-4,4.202510292476047e-5,-1.0147554437825793e-8,6.986416504509654e-4,4.23477429452799e-5,-1.0252547579380231e-8,6.989144432942709e-4,4.267979568978907e-5,-1.0363254734980224e-8,6.990924889111561e-4,4.297633660441667e-5,-1.046354978955787e-8,6.991995765864698e-4,4.3203125469473766e-5,-1.0540778184890215e-8,6.992679525856361e-4,4.334055988722916e-5,-1.0587341630078698e-8,6.993324737511327e-4,4.338433788379723e-5,-1.0601042222300012e-8,6.994259422448656e-4,4.33439373540044e-5,-1.0584573537885036e-8,6.995758178822197e-4,4.324016014019141e-5,-1.0544655239898046e-8,6.998018846283525e-4,4.310255497934784e-5,-1.049116419505745e-8,7.001142366953494e-4,4.296687167505949e-5,-1.0436353487376878e-8,7.00511078834245e-4,4.28720812612912e-5,-1.0393964239501379e-8,7.009763426032131e-4,4.285598693783195e-5,-1.0377799290857615e-8,7.014781075470884e-4,4.294835757893481e-5,-1.0399281482030315e-8,7.01969994354906e-4,4.316142500987284e-5,-1.0463892261942207e-8,7.023982919714376e-4,4.3479848296496525E-05,-1.0567290124078954e-8,7.027162843902773e-4,4.385542505735799e-5,-1.0693127635927223e-8,7.029027821209852e-4,4.42135354664673e-5,-1.0815191406563102e-8,7.029758681401383e-4,4.44744496722845e-5,-1.0904987723913586e-8,7.029914590549362e-4,4.458263269534113e-5,-1.0942205658178163e-8,7.030240973959722e-4,4.4528749813272105e-5,-1.0922540209312683e-8,7.031394395161471e-4,4.435182467687107e-5,-1.0858532246731884e-8,7.033730001998939e-4,4.412187581728143e-5,-1.0773708033050758e-8,7.037236525719877e-4,4.391449186565976e-5,-1.0694038600834027e-8,7.041603691418619e-4,4.378961991431415e-5,-1.0640801646843702e-8,7.046353875274154e-4,4.378031259963003e-5,-1.0626632482199593e-8,7.050976569019387e-4,4.3890906265389334e-5,-1.0654550090175343e-8,7.055033512381783e-4,4.4101463726791514e-5,-1.0719012226212606e-8,7.058225832089542e-4,4.4375368649487437e-5,-1.0808140470310517e-8,7.060425584939559e-4,4.4667972118194066e-5,-1.0906544945457309e-8,7.061676354241381e-4,4.4934992978476056e-5,-1.0998328320161188e-8,7.062167941862384e-4,4.513963638656883e-5,-1.1069817830506132e-8,7.062192461146077e-4,4.525758094198104e-5,-1.1111586225981603e-8,7.062091365135665e-4,4.527941172781372e-5,-1.1119497270185845e-8,7.062203187254132e-4,4.521057587191405e-5,-1.1094762027694266e-8,7.062819845440831e-4,4.5069391812404094e-5,-1.1043233702560278e-8,7.06415505665796e-4,4.488393907460559e-5,-1.0974313413837001e-8,7.066323612634319e-4,4.4688540962570335e-5,-1.089978106738531e-8,7.069327966070445e-4,4.452012245181196e-5,-1.0832652650027417e-8,7.073048809528734e-4,4.4414291049901125e-5,-1.0785940512482935e-8,7.077239303819673e-4,4.4400593182769026e-5,-1.0771010723654536e-8,7.081530282662858e-4,4.449628480384157e-5,-1.0795218004047385e-8,7.08546309372772e-4,4.4698728013663695e-5,-1.0858860998889045e-8,7.088570074624559e-4,4.497837061391854e-5,-1.0952277710884579e-8,7.090511764918637e-4,4.527680031930541e-5,-1.1054882078469456e-8,7.091242875412201e-4,4.551603875633128e-5,-1.1138494306429178e-8,7.091120498076681e-4,4.562208888687946e-5,-1.117598713005094e-8,7.090846177539748e-4,4.5555482629709526e-5,-1.1152408119707443e-8,7.091216217038918e-4,4.533143658656323e-5,-1.1072207380177586e-8,7.092802036001695e-4,4.501504148607371e-5,-1.0957523637321026e-8,7.095747795025035e-4,4.469379194735881e-5,-1.0838617797559788e-8,7.099779924341384e-4,4.4444886939645104e-5,-1.0742641317809363e-8,7.104372322708001e-4,4.431417690490606e-5,-1.0686428868332595e-8,7.108944427121056e-4,4.43116119214771e-5,-1.067478403156329e-8,7.113007184917924e-4,4.441806234799192e-5,-1.0702470480375884e-8,7.11623679367533e-4,4.459632083759559e-5,-1.0757592826290675e-8,7.118492538786992e-4,4.480161570626685e-5,-1.0824953711808661e-8,7.11980233791131e-4,4.4989876558258635e-5,-1.0888886188899312e-8,7.120332870788396e-4,4.512373743613871e-5,-1.093553525218388e-8,7.120351830951165e-4,4.517671189813642e-5,-1.0954618391336977e-8,7.12018506314901e-4,4.513573773315998e-5,-1.094058962873492e-8,7.12017114163592e-4,4.500208629716573e-5,-1.0893112309757543e-8,7.120616914124563e-4,4.47905968840482e-5,-1.0816818974571956e-8,7.121758530794824e-4,4.452730583824109e-5,-1.0720449941183935e-8,7.12373225808455e-4,4.424582850797638e-5,-1.0615582948149321e-8,7.126557056969058e-4,4.3983020894276823E-05,-1.0515185840291802e-8,7.130128748690027e-4,4.377430370445033e-5,-1.0432097453514521e-8,7.134225026408814e-4,4.364884043657226e-5,-1.0377410518766734e-8,7.138521296875519e-4,4.3624612316220915e-5,-1.0358662531311387e-8,7.142621087199356e-4,4.370335181858926e-5,-1.0377769717223068e-8,7.146110340123279e-4,4.386580901383108e-5,-1.0428929632440784e-8,7.148644843579355e-4,4.406916289330847e-5,-1.0497305281474699e-8,7.150068229220568e-4,4.424991700273873e-5,-1.0559887164612516e-8,7.150530524366479e-4,4.4336178298709344e-5,-1.0590042672540263e-8,7.15053734810595e-4,4.42704276374271e-5,-1.056605287956476e-8,7.150846291680763e-4,4.403576931514396e-5,-1.0480847359923442e-8,7.152198511851885e-4,4.3670120179829765e-5,-1.0347183403858284e-8,7.155008744882165e-4,4.325529287265698e-5,-1.019372183871818e-8,7.159202063701489e-4,4.288442453165478e-5,-1.0053486378649688e-8,7.164288382090401e-4,4.262714020159595e-5,-9.95164253828637e-9,7.169595712173114e-4,4.2511112636761016e-5,-9.899008498589871e-9,7.174506599694499e-4,4.2524020942925516e-5,-9.892540841677029e-9,7.178598144621892e-4,4.2627404619268514e-5,-9.91983987587705e-9,7.181678446769699e-4,4.27721963699476e-5,-9.964266310840572e-9,7.183759126586623e-4,4.291045343841636e-5,-1.0008908875743132e-8,7.18500405594647e-4,4.300234497131943e-5,-1.0039122755238085e-8,7.185677828556197e-4,4.30196320106107e-5,-1.0044007543963475e-8,7.186101042079086e-4,4.294717412168661e-5,-1.001723346601736e-8,7.186610533817944e-4,4.278335317154585e-5,-9.957406051808767e-9,7.18752168284341e-4,4.253964376045135e-5,-9.867997924772748e-9,7.189091853091514e-4,4.2239192867652126e-5,-9.756827287293615e-9,7.191486680453425e-4,4.191412441845834e-5,-9.635062646698978e-9,7.194753833185204e-4,4.1601472907260915e-5,-9.515794554155215e-9,7.198809710473828e-4,4.1338056243998875e-5,-9.412302783608438e-9,7.203442861506658e-4,4.115483206636226e-5,-9.33615368049298e-9,7.208335901116579e-4,4.107136650050428e-5,-9.295250483512817e-9,7.21310582686931e-4,4.109113767836152e-5,-9.292009746461441e-9,7.217361374829578e-4,4.1198376722348027e-5,-9.321908690989147e-9,7.220776248483091e-4,4.135721706930838e-5,-9.372781644989014e-9,7.223174798075731e-4,4.151444248885548e-5,-9.42550576306746e-9,7.224616572947125e-4,4.160760778234224e-5,-9.456878589667109e-9,7.225448756233372e-4,4.157965702183735e-5,-9.445137808270311e-9,7.226279081272899e-4,4.139838628719147e-5,-9.377400707335786e-9,7.22782831518834e-4,4.107397411941798e-5,-9.256348015631858e-9,7.230679109607896e-4,4.066348908937088e-5,-9.10200491377539e-9,7.235030324353299e-4,4.025454393631868e-5,-8.94585670514005e-9,7.240604349135902e-4,3.993307278447048e-5,-8.819235976789946e-9,7.246770474161983e-4,3.9752475639384204e-5,-8.74220271896425e-9,7.25280167562206e-4,3.972032945361145e-5,-8.71863631377646e-9,7.258112499168408e-4,3.980545137139982e-5,-8.738490452126625e-9,7.262379795707331e-4,3.995588791311808e-5,-8.783922245220665e-9,7.265545698200255e-4,4.011659749582939e-5,-8.83541706972929e-9,7.267755339873465e-4,4.024105833074878e-5,-8.875936197311278e-9,7.269279845271264e-4,4.029652987094112e-5,-8.892976574019021e-9,7.270451450548466e-4,4.026516750216042e-5,-8.879235354411228e-9,7.271616327638609e-4,4.014326976173892e-5,-8.832575722188413e-9,7.273099551577129e-4,3.993996905439593e-5,-8.755682817923396e-9,7.275175140387404e-4,3.9675705000669275e-5,-8.65552457776656e-9,7.278037036096325e-4,3.938023732409923e-5,-8.542589315450922e-9,7.281770882665271e-4,3.9089662899162196e-5,-8.429786504232964e-9,7.286331360591269e-4,3.884197223268564e-5,-8.330888585721539e-9,7.291533677555678e-4,3.867120217350354e-5,-8.258515599405508e-9,7.297067738756757e-4,3.860090558086704e-5,-8.221844583454592e-9,7.302539666578742e-4,3.8638182704821905e-5,-8.224400957513714e-9,7.307538962269374e-4,3.876983049784128e-5,-8.262452625865695e-9,7.311722092434422e-4,3.896204742743471e-5,-8.324571705863522e-9,7.314897527645678e-4,3.9164524285314036e-5,-8.3927927962959e-9,7.317094414493923e-4,3.931904431090589e-5,-8.445566122962981e-9,7.318594845103638e-4,3.937201425400375e-5,-8.462392890762826e-9,7.319908066651358e-4,3.928917259530832e-5,-8.42948659848983e-9,7.321669790530052e-4,3.906885058053107e-5,-8.345010771919948e-9,7.324469928605998e-4,3.8748281868431985e-5,-8.22172192559327e-9,7.328651675913713e-4,3.839739804730499e-5,-8.084889760603431e-9,7.334166535442571e-4,3.809868218835139e-5,-7.964969302770367e-9,7.340570593855317e-4,3.791967584824037e-5,-7.88746795733556e-9,7.347180158889726e-4,3.789093829132095e-5,-7.864694610367329e-9,7.35330978895752e-4,3.799999059049531e-5,-7.893257941684946e-9,7.358473549973659e-4,3.820188625552753e-5,-7.95762224232136e-9,7.36247320859895e-4,3.8438037090302746e-5,-8.036768609057542e-9,7.365375874964547e-4,3.865343008418449e-5,-8.110432460280896e-9,7.367432165561168e-4,3.880698844533339e-5,-8.163005946748622e-9,7.368986354207467e-4,3.8875061863166875e-5,-8.185035831936871e-9,7.370405983510341e-4,3.885061218849014e-5,-8.173156102939069e-9,7.372035548293182e-4,3.8740714185469477e-5,-8.129326522098361e-9,7.374166923744471e-4,3.8563901864775714e-5,-8.05990590565618e-9,7.377017025310008e-4,3.834777065479802e-5,-7.974743340507008e-9,7.38070622142274e-4,3.8126512150255426e-5,-7.886238130470689e-9,7.385236155784789e-4,3.7937678633434624e-5,-7.80816935910351e-9,7.390471872462534e-4,3.7817479218706066e-5,-7.754041850862354e-9,7.39613896733862e-4,3.779443638936219e-5,-7.734832514708064e-9,7.401848806728716e-4,3.788221163124379e-5,-7.75635096994411e-9,7.407160397257579e-4,3.807351780711525e-5,-7.816863716772319e-9,7.411675017627108e-4,3.83377342940748e-5,-7.905958120875292e-9,7.415142919555773e-4,3.8624442718095306e-5,-8.005552813609206e-9,7.417549191637427e-4,3.887335159084064e-5,-8.093346705012602e-9,7.419146387750976e-4,3.902868594401002e-5,-8.14809060536792e-9,7.420415466924796e-4,3.9054260051663074e-5,-8.155305505607456e-9,7.421957712450767e-4,3.894484020912841e-5,-8.111780096870276e-9,7.424340938914088e-4,3.873006125504485e-5,-8.02737573183699e-9,7.42793899355561e-4,3.846880194086285e-5,-7.923264854219435e-9,7.432812620141698e-4,3.823437454532318e-5,-7.82664187542525e-9,7.438677441412036e-4,3.809405520022208e-5,-7.763143694430137e-9,7.444981839003461e-4,3.808955287654943e-5,-7.749409650064826e-9,7.451073361538792e-4,3.822586805072566e-5,-7.788599612458683e-9,7.456389114710405e-4,3.847282903416642e-5,-7.870587084328902e-9,7.460595325375159e-4,3.8777620572790256e-5,-7.97634017132848e-9,7.463633344203971e-4,3.90818258416466e-5,-8.084164382373755e-9,7.465679154850866e-4,3.9335967587656355e-5,-8.175197120055171e-9,7.467056704916095e-4,3.950769387356267e-5,-8.236653653676395e-9,7.468147802209882e-4,3.958364471163843e-5,-8.262748556136644e-9,7.469323302937862e-4,3.956728801685668e-5,-8.25406326448367e-9,7.470900224543724e-4,3.947522924674709e-5,-8.21625230612436E-09,7.473117786206921e-4,3.9333574246693434e-5,-8.15868872939971e-9,7.476122444451707e-4,3.917483364161524e-5,-8.093285230637837e-9,7.479954258414936e-4,3.9035053263447094e-5,-8.033430521419e-9,7.484532171378763e-4,3.8950407831258895e-5,-7.992775209673987e-9,7.489642810589979e-4,3.895244597740534e-5,-7.983527194781351e-9,7.494944525688141e-4,3.906165830601274e-5,-8.014060469529422e-9,7.500002746529996e-4,3.9280174203610924e-5,-8.086078232861302e-9,7.504369055959056e-4,3.9586013083436254e-5,-8.192238951203957e-9,7.507699029120727e-4,3.993257848288867e-5,-8.31570446363603e-9,7.509875768828624e-4,4.025651618290501e-5,-8.432888245201967e-9,7.511084739632404e-4,4.049377684511111e-5,-8.519412651981377e-9,7.511792950330379e-4,4.059903216808652e-5,-8.557453460506901e-9,7.51262580818493e-4,4.056073182061699e-5,-8.541545996409175e-9,7.514184424281146e-4,4.040549547796316e-5,-8.480474453332119e-9,7.516871944073718e-4,4.019036204144835e-5,-8.394680466844668e-9,7.520786833722089e-4,3.998634873333417e-5,-8.31041577663291e-9,7.525708694622507e-4,3.985920059382761e-5,-8.252707967838128e-9,7.531170338310043e-4,3.985300180192867e-5,-8.239147244363815e-9,7.536588526186752e-4,3.998070036708499e-5,-8.276008258796359e-9,7.541413990265233e-4,4.022342678605548e-5,-8.357544078241255e-9,7.54525863865062e-4,4.05380201242533e-5,-8.468421354961952e-9,7.547967008719969e-4,4.0869815523018587e-5,-8.588335122366214e-9,7.549619635945633e-4,4.116635887970118e-5,-8.697206288555848e-9,7.550480101612701e-4,4.1388047065979665e-5,-8.779387588935774e-9,7.550913554910073e-4,4.151357045899603e-5,-8.825967420826681e-9,7.551305842522161e-4,4.154031612162445e-5,-8.835132581061215e-9,7.552001895864037e-4,4.148139165922518e-5,-8.811164119887681e-9,7.55326828426084e-4,4.1361260126847735e-5,-8.762820923675844e-9,7.555274925687125e-4,4.12114438663705e-5,-8.70170647458801e-9,7.558087203055979e-4,4.1066871518413693e-5,-8.640891785799208e-9,7.561661037027524e-4,4.09626519740274e-5,-8.593743073534889e-9,7.565837873294337e-4,4.0930595848213674e-5,-8.572674913245856e-9,7.570343023719693e-4,4.0994708019895345e-5,-8.58746909968765e-9,7.574798432523166e-4,4.116526167701248e-5,-8.642942450707564e-9,7.578766597453443e-4,4.143219506580418e-5,-8.736227826676889e-9,7.581839700006578e-4,4.1760430647830195e-5,-8.85472089607003e-9,7.583769007372872e-4,4.209143613341075e-5,-8.97646260497755e-9,7.584593350854895e-4,4.235492678888832e-5,-9.074535079715516e-9,7.584693326984003e-4,4.249010700473473e-5,-9.125223368184249e-9,7.58470988460264e-4,4.246860282595259e-5,-9.116849569321388e-9,7.585337351705025e-4,4.230716762507732e-5,-9.054700673282172e-9,7.587083994551931e-4,4.206260627237825e-5,-8.959261900385463e-9,7.590114511903744e-4,4.181169099700161e-5,-8.858889905876627e-9,7.594231618304254e-4,4.162653730197789e-5,-8.780808674797843e-9,7.598974502542237e-4,4.155567159126383e-5,-8.744091746991325e-9,7.603770701441117e-4,4.161547883315085e-5,-8.756261200644959e-9,7.608083072352005e-4,4.1791395294714015e-5,-8.813314074637931e-9,7.611518311466191e-4,4.204568142158321e-5,-8.902175671211233e-9,7.613885521055572e-4,4.232834360337178e-5,-9.004492689727314e-9,7.615206177534766e-4,4.258845489577387e-5,-9.100837967244961e-9,7.61568322961355e-4,4.2783817580922045e-5,-9.174529986143186e-9,7.615641863347267e-4,4.288746563387388e-5,-9.214382010099968e-9,7.615458421224065e-4,4.289030424473849e-5,-9.215981555878051e-9,7.615493776879412e-4,4.280020160465099e-5,-9.181526671744856e-9,7.616042486398303e-4,4.26385797343642e-5,-9.118594656166542e-9,7.61730210455046e-4,4.2435795379432153e-5,-9.03837554219817e-9,7.61936050598561e-4,4.222646210520275e-5,-8.953874020503188e-9,7.622194897874063e-4,4.204535712200338e-5,-8.87837427683221e-9,7.625676250645121e-4,4.1923882039288665e-5,-8.824153587401546e-9,7.629576171601758e-4,4.188660389994002e-5,-8.801211913123232e-9,0.00076335781686778445,4.194730410322629e-5,-8.815719768604965e-9,7.637301806589586e-4,4.210424149540176e-5,-8.868024377405146e-9,7.640353866362429e-4,4.233530176320579e-5,-8.950502771608857e-9,7.642418368971225e-4,4.259542541961727e-5,-9.046295943306457e-9,7.643379706413167e-4,4.282042794217269e-5,-9.130652554192153e-9,7.643436783033333e-4,4.29411494887276e-5,-9.176459932444947e-9,7.643128225427903e-4,4.290719105443412e-5,-9.163573390875584e-9,7.643198908851147e-4,4.27107298651634e-5,-9.088104238947882e-9,7.644329712891078e-4,4.23954390951903e-5,-8.965872528852865e-9,7.646866633436667e-4,4.204199444422708e-5,-8.826934866527333e-9,7.650704200976676e-4,4.17372669333947e-5,-8.704057045239502e-9,7.655369936842672e-4,4.154471093131832e-5,-8.621706108552556e-9,7.660227565342318e-4,4.1489461027239444e-5,-8.590446292021975e-9,7.664679096395077e-4,4.155968867214678e-5,-8.60719762281304e-9,7.668295552510263e-4,4.1717667344140696e-5,-8.65897698447111e-9,7.670867797953163e-4,4.191334217832278e-5,-8.727615499482921e-9,7.672399375245228e-4,4.209611415617943e-5,-8.794011363368658e-9,7.673067113076542e-4,4.2223374435902354e-5,-8.841422117427617e-9,7.673167461421355e-4,4.226589688328241e-5,-8.857772846673981e-9,7.673057770691697e-4,4.221051342646373e-5,-8.837001052988211e-9,7.673098402283448e-4,4.206030802892788e-5,-8.779391079594279e-9,7.673601781277127e-4,4.18326361185597e-5,-8.690943756311483e-9,7.674793660680467e-4,4.1555511526051535e-5,-8.58199870451685e-9,7.676789770593695e-4,4.126301892957958e-5,-8.465429763661297e-9,7.679588364412986e-4,4.0990480338567314e-5,-8.354768907767848e-9,7.683075907368027e-4,4.077001331558171e-5,-8.262536838002104e-9,7.687041577968274e-4,4.062672035544098e-5,-8.198843955832656e-9,7.691197778494181e-4,4.057536670843389e-5,-8.170131786714939e-9,7.69520695114969e-4,4.061730481647757e-5,-8.17788778750396e-9,7.698719236009533e-4,4.073758088267318e-5,-8.217289031700045e-9,7.701429410375053e-4,4.090284202188645e-5,-8.276083307954193e-9,7.703158959245221e-4,4.106194157234824e-5,-8.334583011415699e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json new file mode 100644 index 000000000..ed067a159 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":12000,"numberOfSamples":1000,"samples":[7.703954280162467e-4,4.1152337826266915e-5,-8.368108119871265e-9,7.704163319665058e-4,4.111507788730868e-5,-8.352989399151336e-9,7.704421464154993e-4,4.091720944904923e-5,-8.275542352848811e-9,7.705485092428724e-4,4.05724562623383e-5,-8.140252864992262e-9,7.707939985966856e-4,4.014524130054576e-5,-7.971353086916377e-9,7.71193504222048e-4,3.972957759547678e-5,-7.80469566907836e-9,7.717115053607008e-4,3.9412072212316335e-5,-7.673655282248528e-9,7.722792203821364e-4,3.924081276169691e-5,-7.597334312683116e-9,7.728228927422465e-4,3.921592014800571e-5,-7.576902082499595e-9,7.732865636479628e-4,3.930044006202883e-5,-7.599469965429773e-9,7.736417360467977e-4,3.9439508716162856e-5,-7.645015059481085e-9,7.738862021781628e-4,3.9577299627356655e-5,-7.692550022805146e-9,7.740375781067476e-4,3.9667776867413035e-5,-7.724156675043192e-9,7.741257583521852e-4,3.9679734947780095e-5,-7.727075835179889e-9,7.741863193020013e-4,3.959810915098842e-5,-7.69451274251175e-9,7.742552430288779e-4,3.9423328672554246e-5,-7.625696494804441e-9,7.743646142276804e-4,3.9169548057952974e-5,-7.525395913350832e-9,7.745390796275454e-4,3.886191912277735e-5,-7.4029175785362335e-9,7.747931611691499e-4,3.853296073940333e-5,-7.2706518736087654e-9,7.751296404933389e-4,3.821816871539602e-5,-7.14230656603222e-9,7.75539277044951e-4,3.795118644851318e-5,-7.03102083378519e-9,7.760019965895818e-4,3.7759097444815016e-5,-6.947589780698099e-9,7.764894114568546e-4,3.7658393030000226e-5,-6.898960011119357e-9,7.769683935525284e-4,3.765194567776308e-5,-6.887041206138857e-9,7.77405468600329e-4,3.7727187339015794e-5,-6.907852463658269e-9,7.777719367210197e-4,3.7855696317654865e-5,-6.951096001721251e-9,7.780497715515111e-4,3.799465132874708e-5,-7.000433114460731e-9,7.782381033839588e-4,3.809125972066116e-5,-7.035036448543083e-9,7.783590131789634e-4,3.809174285674149e-5,-7.033143881376136e-9,7.784595953194529e-4,3.795570392998253e-5,-6.97793131163529e-9,7.786057068107846e-4,3.767368510457848e-5,-6.864708360881282e-9,7.78863996118783e-4,3.728037531656348e-5,-6.706310810691064e-9,7.792756265371022e-4,3.685219468959701e-5,-6.532225465482031e-9,7.798348397283327e-4,3.648330405006227e-5,-6.379231745544197e-9,7.804875774404013e-4,3.624915992465997e-5,-6.277220111165846e-9,7.811532791147602e-4,3.6178446406365796e-5,-6.238248751260801e-9,7.817563618614648e-4,3.624887846641678e-5,-6.254752293779451e-9,7.822492066349364e-4,3.6404572752001926e-5,-6.305999039127454e-9,7.826184621073835e-4,3.658034238992342e-5,-6.367226110433409e-9,7.828786448897808e-4,3.672020080806501e-5,-6.416659701095429e-9,7.830611528872669e-4,3.678622737434062e-5,-6.439002339589363e-9,7.83204269111392e-4,3.6760045223355876e-5,-6.4262288080890655e-9,7.83346116265409e-4,3.6640538094929564e-5,-6.376990645821899e-9,7.835202865150684e-4,3.644047816686522e-5,-6.2955425776532835e-9,7.837530585274323e-4,3.618322636043522e-5,-6.190565289506217e-9,7.840613538345039e-4,3.5899528490766174e-5,-6.073894295370791e-9,7.844511692520874e-4,3.56240404001225e-5,-5.959079652820332e-9,7.849166362486965e-4,3.5391266889247926e-5,-5.859734881539029e-9,7.854401461991078e-4,3.5230870470624936e-5,-5.787703349498604e-9,7.85994077008628e-4,3.516280326863614e-5,-5.751203618221222e-9,7.865443681490566e-4,3.519312942196211e-5,-5.753224515569559e-9,7.870557121649313e-4,3.531147041257569e-5,-5.790462278713693e-9,7.874977374834473e-4,3.549084781661851e-5,-5.8530751899271e-9,7.878512977067683e-4,3.5690381696580056e-5,-5.925483082828172e-9,7.88113902130303e-4,3.586089281430252e-5,-5.9883395159535995e-9,7.883033069918536e-4,3.595324388575569e-5,-6.021732124830117e-9,7.884579960410935e-4,3.5929083510116866e-5,-6.009544248256601e-9,7.886327975757129e-4,3.577280030598468e-5,-5.9444715378693474e-9,7.888879780100181e-4,3.550164046195876e-5,-5.832367391647236e-9,7.8927192870103e-4,3.51687389345516e-5,-5.693704861085736e-9,7.898018205719634e-4,3.4853326117873307e-5,-5.559814012217819e-9,7.904515896948133e-4,3.4636846056963114e-5,-5.463410169207496e-9,7.911567365586743e-4,3.457328365667514e-5,-5.426733674861982e-9,7.91836723351535e-4,3.4669207955395765e-5,-5.453450884163303e-9,7.924237202788972e-4,3.488486649734166e-5,-5.5288267094573905e-9,7.928824548961669e-4,3.515389152880303e-5,-5.627269436403621e-9,7.932136820118008e-4,3.540839736028799e-5,-5.722097489506235e-9,7.934449059141124e-4,3.5597063748403574e-5,-5.792673659357338e-9,7.936168882573704e-4,3.569210775996662e-5,-5.827295173952732e-9,7.937723217445624e-4,3.568791359332356e-5,-5.822884193637893e-9,7.93948800831336e-4,3.559595323883983e-5,-5.783216738249511e-9,7.941754088277288e-4,3.543933477989003e-5,-5.716920600537979e-9,7.944713320113322e-4,3.524834071649752e-5,-5.635744464363097e-9,7.948452117223364e-4,3.505690102972568e-5,-5.5531067119024055e-9,7.952946621025866e-4,3.489936168856889e-5,-5.482741290558481e-9,7.958060134527227e-4,3.4806877971801684e-5,-5.437234302862502e-9,7.963548356244236e-4,3.4803064153757236e-5,-5.4263155715433935e-9,7.969080873912969e-4,3.4899187129560714e-5,-5.454979598662578e-9,7.974285582348853e-4,3.50899868901018e-5,-5.521799771482021e-9,7.978815595783528e-4,3.53517139310461e-5,-5.618028402827992e-9,7.982428279621153e-4,3.5643920541599894e-5,-5.728107579266846e-9,7.985056927078104e-4,3.591576113045357e-5,-5.8319638327390805e-9,7.986852279968585e-4,3.6116131940588234e-5,-5.908914090462572e-9,7.988176580367524e-4,3.620557989303193e-5,-5.942429308719043e-9,7.989544079791842e-4,3.616720864975489e-5,-5.924668401918435e-9,7.991513656849079e-4,3.601375362426653e-5,-5.859607617947738e-9,7.994550428476274e-4,3.5788266373648105e-5,-5.763648882378041e-9,7.99888593020665e-4,3.5556588356057684e-5,-5.662870662485801e-9,8.004419741134302e-4,3.539153188530321e-5,-5.586797190304597e-9,8.010710698253013e-4,3.5351857597047766e-5,-5.559879219657929e-9,8.017086298947224e-4,3.546304659868737e-5,-5.5935163200738305e-9,8.022846671415112e-4,3.5708577068191366e-5,-5.6822096378184195e-9,8.027481145977655e-4,3.603666410112383e-5,-5.805964874906324e-9,8.03080122412991e-4,3.637928126071499e-5,-5.9377647708489825e-9,8.032943410005627e-4,3.66738652272459e-5,-6.0522761139605395e-9,8.034269249007324e-4,3.687843167960255e-5,-6.132033879229968e-9,8.035230519879982e-4,3.697653334579644e-5,-6.1696217748146e-9,8.036257380118303e-4,3.6974206946549126e-5,-6.166656508896828e-9,8.037692352128727e-4,3.689330257374978e-5,-6.131278442552063e-9,8.039764427338145e-4,3.6764723596644845e-5,-6.075520263494496e-9,8.042586457584074e-4,3.662315128777011e-5,-6.013183162784273e-9,8.046160819092535e-4,3.6503272989771094e-5,-5.9582713714511854e-9,8.050385231957502e-4,3.643678976682334e-5,-5.9237473528870625e-9,8.055057955743184e-4,3.644934285412461e-5,-5.920288595123292e-9,8.05988792090945e-4,3.655676717208342e-5,-5.95478706400642e-9,8.064519656770659e-4,3.676075426661275e-5,-6.028574833606665e-9,8.068582848986766e-4,3.7045013088594046e-5,-6.1357749440002495e-9,8.071769237677392e-4,3.737399900933667e-5,-6.26261951082692e-9,8.073924491758243e-4,3.769659412573422e-5,-6.388754892200863e-9,8.075124666197616e-4,3.7955997865778476e-5,-6.491115253060035e-9,8.075698393218493e-4,3.8104352666225344e-5,-6.549812033282912e-9,8.07616918266904e-4,3.811755258854625e-5,-6.5542030392740885e-9,8.077125028108634e-4,3.8004458985452114e-5,-6.506795533466793e-9,8.079056000982033e-4,3.780654452780539e-5,-6.4233624926436094e-9,8.082214227720043e-4,3.758774308343327e-5,-6.3291414262697445e-9,8.086539871520523e-4,3.741775103981728e-5,-6.252328710187585e-9,8.091672759069606e-4,3.7353752588214316e-5,-6.216752306565877e-9,8.097045052884347e-4,3.742558962134468e-5,-6.235686559437506e-9,8.10203012993122e-4,3.7628423384850995e-5,-6.308502277607127e-9,8.106106251449948e-4,3.792510731679957e-5,-6.421212634856097e-9,8.108985322821864e-4,3.8257644162653106e-5,-6.550833196339432e-9,8.11066628774171e-4,3.856383400569566e-5,-6.6720638631456955e-9,8.111401568994287e-4,3.8793232686939005e-5,-6.763879623403471e-9,8.111600098107639e-4,3.89173073971411e-5,-6.813868422693099e-9,8.111711107269196e-4,3.893182181341246e-5,-6.8194280235812216e-9,8.112128636990658e-4,3.8852913529948424e-5,-6.786357912765378e-9,8.1131356935384e-4,3.8710088334482416e-5,-6.726121364291298e-9,8.114885730374386e-4,3.853908980505929e-5,-6.652976845483148e-9,8.117408037071133e-4,3.837625006855202e-5,-6.5816575047402725e-9,8.120622864326276e-4,3.825456404102906e-5,-6.5257403552766695e-9,8.124357145823514e-4,3.82008938099246e-5,-6.496493824519633e-9,8.128358550233297e-4,3.823344877076438e-5,-6.50185004606853e-9,8.132312194083829e-4,3.8358874558908814e-5,-6.54518991660995e-9,8.135869354214777e-4,3.856887726212377e-5,-6.623869747140799e-9,8.138698868858205e-4,3.8837323813125146e-5,-6.727869263055802e-9,8.140566018155787e-4,3.91199837876055e-5,-6.83950023112515e-9,8.141427039935174e-4,3.935979230186433e-5,-6.9354371500791985e-9,8.14150262656473e-4,3.949946847388898e-5,-6.9918722744796985e-9,8.141277285832854e-4,3.949960053306327e-5,-6.991994835378283e-9,8.141388942367572e-4,3.935526219250151e-5,-6.93289197521611e-9,8.142430879224422e-4,3.910207785679162e-5,-6.8281493368907015e-9,8.144749296276758e-4,3.880686864520632e-5,-6.704223833237992e-9,8.1483306083408e-4,3.854646680042599e-5,-6.592073096421126e-9,8.152821053230805e-4,3.838435896231063e-5,-6.5178631025860026e-9,8.157651947313659e-4,3.835428291873892e-5,-6.49629781434836e-9,8.162207450781731e-4,3.845478693315215e-5,-6.528135674230928e-9,8.16597684699937e-4,3.865376270796675e-5,-6.60159629155916e-9,8.168657158061926e-4,3.889947743847334e-5,-6.69644446442954e-9,8.170194049574676e-4,3.913422953807289e-5,-6.7893400986806185e-9,8.17076394641524e-4,3.930728020730456e-5,-6.85914255437804e-9,8.170710316645813e-4,3.938449175604022e-5,-6.891061862959034e-9,8.170454569870298e-4,3.935306732398158e-5,-6.878882809994513e-9,8.170405722878981e-4,3.9221105681444305e-5,-6.825033584806315e-9,8.1708896023377e-4,3.901310215359767e-5,-6.7388979016364186e-9,8.172108407223391e-4,3.87633764776707e-5,-6.634171213681119e-9,8.174130175522054e-4,3.850938229687362e-5,-6.526094414707984e-9,8.176899834395489e-4,3.8286205079792516e-5,-6.4291520891420515e-9,8.180260959470649e-4,3.812267075009407e-5,-6.3554492104173685e-9,8.183979894619872e-4,3.803873780290355e-5,-6.313637763487015e-9,8.187769116206049e-4,3.804351923521837e-5,-6.308093725118056e-9,8.191312129866966e-4,3.813337134793312e-5,-6.338063937256885e-9,8.194296942684052e-4,3.8289922698924704e-5,-6.396704673018225e-9,8.196467238419641e-4,3.847879781237149e-5,-6.470354270719354e-9,8.197695294206804e-4,3.8650968100779566e-5,-6.538921130269099e-9,8.19806513649201e-4,3.874943540462814e-5,-6.5785960033068025e-9,8.197929489727498e-4,3.8723134804595094e-5,-6.5676898771434025e-9,8.197883002079536e-4,3.854613941350416e-5,-6.4947236728071645e-9,8.198609759695765e-4,3.823403064971981e-5,-6.365297279203114e-9,8.200636944477346e-4,3.784594464219167e-5,-6.203000857389413e-9,0.000820411436661712,3.746667085519243e-5,-6.042172936215794e-9,8.208749674671344e-4,3.7176223092774686e-5,-5.915617415305801e-9,8.213932248000017e-4,3.7022992160726405e-5,-5.843759010230899e-9,8.218961027605576e-4,3.701275044446644e-5,-5.830076453078521e-9,8.223254904904929e-4,3.711435819021485e-5,-5.863118056849916e-9,8.226473843906112e-4,3.727482958449793e-5,-5.922239824745653e-9,8.228545590175748e-4,3.7435687186837764e-5,-5.983966399587255e-9,8.229627474394682e-4,3.7545885310616436e-5,-6.027176921838554e-9,8.230036090129152e-4,3.756990148797665e-5,-6.036554527428151e-9,8.230167806825249e-4,3.749138311092206e-5,-6.004372061981051e-9,8.230423185742567e-4,3.731317666393389e-5,-5.930818699795622e-9,8.231143493501816e-4,3.705449505134662e-5,-5.823063768625377e-9,8.23256553209646e-4,3.674606808012696e-5,-5.693352353058202e-9,8.234798189428454e-4,3.642429612693932e-5,-5.556571384393087e-9,8.237820413355269e-4,3.6125418828181186e-5,-5.427765212931279e-9,8.241496751844597e-4,3.588054059534543e-5,-5.320016584338888e-9,8.245603883153199e-4,3.571199342395666e-5,-5.242923452023574e-9,8.249861688108776e-4,3.563099782478505e-5,-5.201638270344065e-9,8.253965549120751e-4,3.563626588694151e-5,-5.1962726434097535e-9,8.257620082869455e-4,3.571323197160154e-5,-5.221486300041849e-9,8.260577695440884e-4,3.583385451251235e-5,-5.266230045559657e-9,8.262687299902825e-4,3.595753207818218e-5,-5.313924512584801e-9,8.263954241197148e-4,3.6034603798458864e-5,-5.343784865943491e-9,8.264598903887887e-4,3.601442540484084e-5,-5.334201311502159e-9,8.265081515702821e-4,3.585914554288692e-5,-5.268642284511385e-9,8.26604385596247e-4,3.556101693181241e-5,-5.143074426032549e-9,8.268132192939278e-4,3.515537353926115e-5,-4.971501142912185e-9,8.271738744510702e-4,3.471782861774951e-5,-4.7848532086355065e-9,8.276795586094963e-4,3.4340322196190036e-5,-4.621118053741745e-9,8.282766891716653e-4,3.4095760039524445e-5,-4.5108069909192165e-9,8.288861464980373e-4,3.401140563924369e-5,-4.465996728964361e-9,8.29433355059079e-4,3.406500941237964e-5,-4.4785874372255114e-9,8.298704729894737e-4,3.420103631857123e-5,-4.526688711410476e-9,8.301833096396713e-4,3.4353709967328716e-5,-4.583790454622501e-9,8.303862100769367e-4,3.446546478614344e-5,-4.626173157513306e-9,8.305118250621173e-4,3.449687603771798e-5,-4.6370194576684565e-9,8.306008664699762e-4,3.442941009341466e-5,-4.607762309491803e-9,8.306940322478887e-4,3.426386875947961e-5,-4.537752547464339e-9,8.308263261536525e-4,3.401682527001027e-5,-4.4330652748613145e-9,8.310232819304966e-4,3.371620106257414e-5,-4.304822699303797e-9,8.312987280593526e-4,3.339641097448233e-5,-4.167187973746248e-9,8.31653979219806e-4,3.309335744578138e-5,-4.0351952674026125e-9,8.32078417238307e-4,3.283958122742209e-5,-3.9226242940869606e-9,8.325514069439921e-4,3.26599656110982e-5,-3.8401496329485945e-9,8.330453353948687e-4,3.256846904668967e-5,-3.793977723288974e-9,8.335293651888821e-4,3.2566169333962955e-5,-3.785049055168084e-9,8.33973516225973e-4,3.264061001145597e-5,-3.808740687729704e-9,8.343528580041156e-4,3.2766396288388346e-5,-3.855005633134729e-9,8.346517248312861e-4,3.290709657118518e-5,-3.9089874063833434e-9,8.348679389439184e-4,3.301872928211123e-5,-3.95230090306051e-9,8.350167359300278e-4,3.305558632640454e-5,-3.965393684369818e-9,8.351331058149185e-4,3.297932755397413e-5,-3.9314416005053e-9,8.352699660831031e-4,3.277126367429032e-5,-3.8417220291605366e-9,8.354889117471341e-4,3.244507340953231e-5,-3.7012047953805833e-9,8.358419691208809e-4,3.205326833172769e-5,-3.531440109697599e-9,8.36348763283404e-4,3.167867290599403e-5,-3.3670502139274996e-9,8.369813197061595e-4,3.140782451156133e-5,-3.244586908337016e-9,8.376693061030729e-4,3.129669563122999e-5,-3.1881493598681102e-9,8.383263658012633e-4,3.134863920078477e-5,-3.200051972071662e-9,8.388826052155265e-4,3.151766556410064e-5,-3.2619908468242225e-9,8.393050072888866e-4,3.173205489277276e-5,-3.344664087646371e-9,8.395988757541516e-4,3.192172100776251e-5,-3.419003963066664e-9,8.397963286098811e-4,3.203621272799185e-5,-3.46362815353071e-9,8.399416326313247e-4,3.205061679819683e-5,-3.4674080518768483e-9,8.400794992423449e-4,3.1963263817541386e-5,-3.4287495907215916e-9,8.402479103687121e-4,3.179002909330446e-5,-3.3534888117140308e-9,8.404745687451004e-4,3.155830071326884e-5,-3.2525737289196144e-9,8.407754646399417e-4,3.130173895136262e-5,-3.1399368209433314e-9,8.41154541388092e-4,3.1055764720891035e-5,-3.0305415711644196e-9,8.416041280544131e-4,3.085345156272672e-5,-2.9385364426828023e-9,8.421061656017975e-4,3.072164283076384e-5,-2.8755213785209154e-9,8.426344113814458e-4,3.067736638925079e-5,-2.8490015368691745e-9,8.431577953645121e-4,3.072498523450466e-5,-2.8612024549307127e-9,8.436447971117692e-4,3.085470440573325e-5,-2.9084547718786858e-9,8.440683720702881e-4,3.1042869672780824e-5,-2.981273689818602e-9,8.444108321936859e-4,3.125426055813509e-5,-3.065198477158535e-9,8.446680629527056e-4,3.144642492558669e-5,-3.142451937358192e-9,8.448524507159502e-4,3.15759057443261e-5,-3.194437005461156e-9,8.449938340091091e-4,3.160610588444374e-5,-3.2050494314965393e-9,8.451374660071655e-4,3.151638576719877e-5,-3.1646699302547115e-9,8.453375715697237e-4,3.1311130994121866e-5,-3.0742611477808833e-9,8.456453986738488e-4,3.1025780835067146e-5,-2.94819557957702e-9,8.46092653379528e-4,3.0725045293271956e-5,-2.81368862948315e-9,8.466753220872281e-4,3.0488818598972834e-5,-2.704879810332908e-9,8.473471109643087e-4,3.038640446510119e-5,-2.6518278127619258e-9,8.480305696476147e-4,3.0449024854662588e-5,-2.668679548466348e-9,8.486441257401572e-4,3.065628903781551e-5,-2.7477040330430985e-9,8.491313375173792e-4,3.094576582096809e-5,-2.8631317709746885e-9,8.494766164139384e-4,3.123946697058364e-5,-2.9822273668107125e-9,8.497020423260754e-4,3.1471127846907625e-5,-3.0767866876898872e-9,8.498521170161459e-4,3.16017891014394e-5,-3.129775126187276e-9,8.499770409409726e-4,3.1621830699592834e-5,-3.1363362066964675e-9,8.501209480543094e-4,3.1544720456021056e-5,-3.1013685836141294e-9,8.503161532077362e-4,3.1398399640952655e-5,-3.036097487468567e-9,8.505816546173871e-4,3.1217759899263695e-5,-2.9550165687006546e-9,8.509236995527479e-4,3.103916188717301e-5,-2.8735662703891047e-9,8.513369862483362e-4,3.0896507607776705e-5,-2.8063743424389867e-9,8.518060495699486e-4,3.081805794501351e-5,-2.7657886014572145e-9,8.523069735798167e-4,3.082345930368575e-5,-2.7605358876292335e-9,8.528098318936862e-4,3.0920864735206294e-5,-2.79447672381635e-9,8.532822991542584e-4,3.110457416848017e-5,-2.8656065993726486e-9,8.536945524033567e-4,3.1354085988535145e-5,-2.965633018689591e-9,8.540249574865114e-4,3.163548969538209e-5,-3.080489694586202e-9,8.542654720972812e-4,3.190574453586719e-5,-3.192028596537508e-9,8.544254041595665e-4,3.211974836915866e-5,-3.28090202256463e-9,8.545322236510779e-4,3.2239278828225266e-5,-3.3303148632010992e-9,8.546285733291039e-4,3.224218246448245e-5,-3.330007151957699e-9,8.547652672831671e-4,3.2129878781118014e-5,-3.279649312494011e-9,8.549907364400541e-4,3.193111420486313e-5,-3.1907193571916717e-9,8.553382926807156e-4,3.1699773222277685e-5,-3.0858345714949625e-9,8.558140144434115e-4,3.150496484434305e-5,-2.9946769942906606e-9,8.563897321781071e-4,3.1413455736156216e-5,-2.9464704670555277e-9,8.570061787799461e-4,3.1468304822318046e-5,-2.960646903904852e-9,8.575886586831152e-4,3.167199701229673e-5,-3.039317862345337e-9,8.580709942206223e-4,3.198346246211776e-5,-3.1656988018487623e-9,8.584171135061124e-4,3.233248147476386e-5,-3.310099393214403e-9,8.586297960336273e-4,3.264478971416768e-5,-3.440645754903185e-9,8.587438963877701e-4,3.286515489171303e-5,-3.5332321749884526e-9,8.58810255130539e-4,3.2968897888927814e-5,-3.5765784450704622e-9,8.588794391843271e-4,3.2960802961293873e-5,-3.5719305847910328e-9,8.589911009932855e-4,3.2866533850223576e-5,-3.529577019202463e-9,8.591697919005255e-4,3.272249454060714e-5,-3.4646650245504987e-9,8.594251730433313e-4,3.256765883619841e-5,-3.393767811079765e-9,8.597541389353542e-4,3.2438210292960187e-5,-3.3325521813766835e-9,8.601432315592983e-4,3.236427582707883e-5,-3.2942803106507433e-9,8.605707893509768e-4,3.236765846754327e-5,-3.2887387933129255e-9,8.610090272757816e-4,3.245976837958149e-5,-3.3212886990489386e-9,8.614266330715411e-4,3.2639496241471747e-5,-3.3919234343927197e-9,8.617925265638105e-4,3.289145361493536e-5,-3.4944824234170423e-9,8.620810773671341e-4,3.318566240946574e-5,-3.616455097562243e-9,8.62278291344594e-4,3.3480062508905175e-5,-3.7399625948591e-9,8.623874686730959e-4,3.372681857367478e-5,-3.844371487446432e-9,8.624320722870976e-4,3.38822001208865e-5,-3.910489310686052e-9,8.624536695365803e-4,3.391801974913249e-5,-3.925509323340507e-9,8.625041693741896e-4,3.3831145103447495e-5,-3.887217720697746e-9,8.626336863724894e-4,3.364749744285424e-5,-3.805912914971897e-9,8.628771728569449e-4,3.34184061309152e-5,-3.703085242205503e-9,8.632436901356097e-4,3.3209472451514874e-5,-3.606852247536402e-9,8.637117164869609e-4,3.30843353744748e-5,-3.5450791305814132e-9,8.64232526978409e-4,3.30874054017447e-5,-3.537852982664476e-9,8.647417259564168e-4,3.32305264787094e-5,-3.591449619924816e-9,8.651764977358669e-4,3.348834402295054e-5,-3.695963620118213e-9,8.654934113410493e-4,3.380514974584113e-5,-3.827962144226022e-9,8.65680227216288e-4,3.411174050293928e-5,-3.957644664897803e-9,8.657570330287688e-4,3.4346041766830635e-5,-4.057808965225653e-9,8.657669387277931e-4,3.446932313815453e-5,-4.11101586076775e-9,8.657613435022625e-4,3.4472588411529344e-5,-4.112539581686109e-9,8.657862135868558e-4,3.4373094380466114e-5,-4.069050533975013e-9,8.658735763707832e-4,3.4205060581144676e-5,-3.99475967321788e-9,8.660388852455758e-4,3.400943296480929e-5,-3.907091687927469e-9,8.66282466493992e-4,3.3825844969993364e-5,-3.823219696797409e-9,8.665927137849105e-4,3.3687619719216236e-5,-3.7578388388344435e-9,8.669494024009601e-4,3.361913423273398e-5,-3.7219299984715987e-9,8.673264891657124e-4,3.363439881774626e-5,-3.7220625465320145e-9,8.676945418145927e-4,3.373592694579208e-5,-3.7598487309122184e-9,8.680234235964354e-4,3.391351714465576e-5,-3.831368929963179e-9,8.682859972296471e-4,3.4143297256214016e-5,-3.926691202132316e-9,8.684632880644983e-4,3.4388163647136244e-5,-4.029972466578756e-9,8.685506814790997e-4,3.460127638371885e-5,-4.120889818604067e-9,8.685633840062911e-4,3.4734023180121915e-5,-4.178058611548191e-9,8.685380720783138e-4,3.4748252417980764e-5,-4.184372534042753e-9,8.685276349437916e-4,3.462966914812959e-5,-4.132901756292709e-9,8.685883291320915e-4,3.439669502663824e-5,-4.030854924441111e-9,8.687628382465881e-4,3.409933619952682e-5,-3.8992420211352555e-9,8.690658895057307e-4,3.3806647123293056e-5,-3.767634596223998e-9,8.694785799556857e-4,3.358696397155016e-5,-3.66578227162126e-9,8.69953568550893e-4,3.348840676249508e-5,-3.6152232829612797e-9,8.704286241585501e-4,3.352635120659295e-5,-3.623705146793659e-9,8.708434233092473e-4,3.36810197345908e-5,-3.6838087593563796e-9,8.711544860856722e-4,3.390464015558857e-5,-3.775680273187482e-9,8.713445725476498e-4,3.4135193673201416e-5,-3.872743220397276e-9,8.714246913321904e-4,3.4312587501143965e-5,-3.948669842514471e-9,8.714288385999942e-4,3.4392832306213484e-5,-3.983673438771948e-9,8.714035709437477e-4,3.4356588349835174e-5,-3.968454991877816e-9,8.713959401397892e-4,3.4210390500048455e-5,-3.904979500162979e-9,8.714434314935408e-4,3.398142071965159e-5,-3.80439632081465e-9,8.715682144280527e-4,3.370866502664886e-5,-3.6833035835006632e-9,8.717760142029626e-4,3.343373250814609e-5,-3.5597712152619653e-9,8.720583485322628e-4,3.3193644320049306e-5,-3.450143545804329e-9,8.723963305223968e-4,3.301640385510928e-5,-3.367013852901416e-9,8.727645877754009e-4,3.2918942751948914e-5,-3.318240190622122e-9,8.731346053164378e-4,3.290646426016532e-5,-3.3065975355143806e-9,8.734775263631105e-4,3.297227361968222e-5,-3.329661479803068e-9,8.737669246598247e-4,3.3097659941762863e-5,-3.3797021541565744e-9,8.739822501713752e-4,3.325204966262417e-5,-3.443668277316694e-9,8.741134429392175e-4,3.339441456133996e-5,-3.5037068763647772e-9,8.741663973729802e-4,3.347758868121113e-5,-3.538992779628764e-9,8.741674829281171e-4,3.3457101736264556e-5,-3.529614543781381e-9,8.741636709228396e-4,3.33044797175946e-5,-3.4624919926690294e-9,8.742144615830622e-4,3.302135267114131e-5,-3.337668517116169e-9,8.743747932608298e-4,3.264687423555464e-5,-3.1716545924770886e-9,8.746743840366114e-4,3.2251051243278426e-5,-2.9946081022665746e-9,8.751039489192597e-4,3.1913364921373566e-5,-2.841130150424048e-9,8.75616678903275e-4,3.169573821909346e-5,-2.738595983860198e-9,8.761445007935473e-4,3.162302292091491e-5,-2.698649906049282e-9,8.766203447195945e-4,3.167892308982781e-5,-2.715236885002451e-9,8.769963987697803e-4,3.18159383463042e-5,-2.7686104110067445e-9,8.772531062745815e-4,3.197221978649029e-5,-2.8323654947714774e-9,8.773990475854998e-4,3.2088299096119665e-5,-2.880564943726866e-9,8.774645762292172e-4,3.211954673233677e-5,-2.893205151464858e-9,8.774924155916585e-4,3.204298846969703e-5,-2.8593905607603026e-9,8.775277330636137e-4,3.185874387139908e-5,-2.778242446816188e-9,8.776094585559394e-4,3.158700840416259e-5,-2.657838435817586e-9,8.777641128132043e-4,3.126183960920271e-5,-2.5126548703569532e-9,8.78002877757191e-4,3.092341017264447e-5,-2.360210638245288e-9,8.78321864386743e-4,3.061051760107952e-5,-2.217716237311034e-9,8.787048132667152e-4,3.0354696413936292e-5,-2.0993733631963004e-9,8.791271129207127e-4,3.0176554948077197e-5,-2.0146576508170057e-9,8.795600526842855e-4,3.0084265265720063e-5,-1.9675904842138486e-9,8.799746005764623e-4,3.0073592700195904e-5,-1.9567272155798592e-9,8.803445685727407e-4,3.0128701933306585e-5,-1.9754931411414064e-9,8.806494724082241e-4,3.0223295863434567e-5,-2.012635250546257e-9,8.808775707256542e-4,3.0322170015652122e-5,-2.052817626545346e-9,8.810294629751855e-4,3.0383874541022066e-5,-2.077700737209661e-9,8.811219817814094e-4,3.0365784932921254e-5,-2.068140259899549e-9,8.811907881742122e-4,3.0232911390513986e-5,-2.0081342888122047e-9,8.812885190182023e-4,2.997035224275941e-5,-1.8904615726488688e-9,8.814748050867232e-4,2.9595882363843328e-5,-1.7223897108962145e-9,8.817972325406356e-4,2.9164896341324755e-5,-1.5279575596742727e-9,8.822694105023639e-4,2.8759323793384683e-5,-1.343146342028477e-9,8.828590048460752e-4,2.846005103322195e-5,-1.203784176843767e-9,8.834961316970444e-4,2.8315408404152892e-5,-1.1317019817736651e-9,8.840994293836644e-4,2.83238474756633e-5,-1.1270381711241277e-9,8.846048503517724e-4,2.8439563876848128e-5,-1.1705107836514342e-9,8.849825261434277e-4,2.859423427913567e-5,-1.2327153363012424e-9,8.852377405673897e-4,2.872082247503333e-5,-1.2843809606697235e-9,8.854014350719654e-4,2.876976020388615e-5,-1.303411303612948e-9,8.855175691600622e-4,2.8715569658327886e-5,-1.277894686911527e-9,8.856319414654461e-4,2.8556383656666185e-5,-1.2061264571813115e-9,8.857841196699158e-4,2.8309570284204513e-5,-1.0949624616496077e-9,8.86002414496257e-4,2.800577749822175e-5,-9.574157297751806e-10,8.863013254260068e-4,2.7682541703841347e-5,-8.099261480403505e-10,8.866810883604368e-4,2.737801278175877e-5,-6.695408320630273e-10,8.871291034948231e-4,2.712535762590261e-5,-5.513048593649785e-10,8.876228817584209e-4,2.6948399119048687e-5,-4.661876242949888e-10,8.881339924077757e-4,2.6858865286951922e-5,-4.197713685400893e-10,8.886323956855838e-4,2.6855412138336997e-5,-4.1179225649502044e-10,8.890905424093482e-4,2.6924258581403914e-5,-4.3643441475982406e-10,8.89486876270744e-4,2.704096977561104e-5,-4.831197421077393e-10,8.898087302066524e-4,2.7172978043164845e-5,-5.375765842824722e-10,8.900547902185537e-4,2.7282747178927522e-5,-5.831513974124379e-10,8.902372653753913e-4,2.733186854749421e-5,-6.02542926548089e-10,8.903834851144673e-4,2.7286782595027556e-5,-5.803341451115104e-10,8.905356820182493e-4,2.712678713758405e-5,-5.066546828876249e-10,8.907466490935431e-4,2.6853822167289743e-5,-3.817222697006188e-10,8.910687379135351e-4,2.650095008026581e-5,-2.1981389275727818e-10,8.915358613141435e-4,2.613316302797963e-5,-4.974968918210426e-11,8.921441557986117e-4,2.583341569558239e-5,9.130127597938247e-11,8.928435576312597e-4,2.5673648601187617e-5,1.7077634639135572e-10,8.935508750856743e-4,2.5683679634147847e-5,1.7468326592194504e-10,8.941811428365587e-4,2.5837610180360195e-5,1.1381510218411522e-10,8.946793739990621e-4,2.6067113585673513e-5,1.8006901262402275e-11,8.950349091826171e-4,2.6291644820413183e-5,-7.717084794839584e-11,8.952750213494531e-4,2.6446389435700407e-5,-1.427663814093566e-10,8.954475970296075e-4,2.64960814946439e-5,-1.625988001066087e-10,8.956041887442954e-4,2.6435196735103513e-5,-1.334689640026147e-10,8.957887712051753e-4,2.6280905283114967e-5,-6.224871917615731e-11,8.960323226691599e-4,2.6064317323041538e-5,3.777765165941726e-11,8.963513575114935e-4,2.5822815459411318e-5,1.5017549800954496e-10,8.96748509792149e-4,2.5594124919428984e-5,2.5799083696445723e-10,8.972140957359525e-4,2.5411712108030967e-5,3.459131555119787e-10,8.97728398380985e-4,2.5301088813513795e-5,4.0208667445015245e-10,8.982646818886401e-4,2.5276973108559064e-5,4.19511702332487e-10,8.987928885022273e-4,2.5341491278246515e-5,3.969097854818967e-10,8.992838386101128e-4,2.548373838032777e-5,3.389148700251626e-10,8.997135067687896e-4,2.5680959581705512e-5,2.5551799630259e-10,9.000668011166033e-4,2.590128913974731e-5,1.6084571383571664e-10,9.003404075887244e-4,2.610773225553987e-5,7.143433854803536e-11,9.005444531271067e-4,2.626306035931546e-5,4.124552392039377e-12,9.00702826310028e-4,2.6335350498633444e-5,-2.636373164642357e-11,9.008518990331428e-4,2.6304027478397698e-5,-1.0173572691243059e-11,9.010369750715351e-4,2.616622985452215e-5,5.4685092455799334e-11,9.013053376731691e-4,2.5942528849006335e-5,1.5954350428825642e-10,9.016950534266347e-4,2.5679451672258137e-5,2.8372503804596007e-10,9.022205066966907e-4,2.544470577148632e-5,3.9657633063202955e-10,9.028595081446744e-4,2.5311299328910574e-5,4.6464848630157026e-10,9.035509621163673e-4,2.5331826054565013e-5,4.634519661365919e-10,9.042106403831823e-4,2.5513725417149697e-5,3.8884970955208253e-10,9.047617243836385e-4,2.5811755065389144e-5,2.60664002639359e-10,9.051639505218222e-4,2.614554976562279e-5,1.1486292999309726e-10,9.054243849394402e-4,2.6432431256007105e-5,-1.1230224109221291e-11,9.055864786501333e-4,2.6615750824420068e-5,-9.174245642919217e-11,9.057083348203511e-4,2.6675961252054152e-5,-1.1728835587695205e-10,9.05843511575355e-4,2.6625694545636095e-5,-9.286576972832296e-11,9.06030514980889e-4,2.649764658641052e-5,-3.258481232105302e-11,9.06290090659766e-4,2.6332711316700743e-5,4.5492394804177083e-11,9.066269079166894e-4,2.617147979221003e-5,1.230902666428942e-10,9.07032727485054e-4,2.6049140781842117e-5,1.8405636274430814e-10,9.074895537591257e-4,2.5992565692749985e-5,2.1580884693763228e-10,9.079725233622418e-4,2.601842289978903e-5,2.1034058494702972e-10,9.08452843161885e-4,2.6131794189518346e-5,1.649501949413581e-10,9.089011187176733e-4,2.632531969086917e-5,8.266582317282753e-11,9.092912509323934e-4,2.657930002330282e-5,-2.7811191372744197e-11,9.096046947811349e-4,2.686337600497953e-5,-1.5287896453951608e-10,9.098343835696975e-4,2.7140160235303376e-5,-2.756580777618742e-10,9.099874027396871e-4,2.737067976970732e-5,-3.7839683569915226e-10,9.100856080701482e-4,2.7521019033657425e-5,-4.4541806075215186e-10,9.101636727790192e-4,2.756915427471307e-5,-4.662024595936307e-10,9.102644580498961e-4,2.751076592587584e-5,-4.3810314345020306E-10,9.104319511252228e-4,2.736291054800073e-5,-3.681879685719245e-10,9.107022221916946e-4,2.7164432891512126e-5,-2.736553609265788e-10,9.110933354507029e-4,2.6971680885033756e-5,-1.800824904443576e-10,9.11596330532063e-4,2.6848117080263942e-5,-1.167738231171905e-10,9.121710507471927e-4,2.6847793958635906e-5,-1.0913815308381964e-10,9.12751534970597e-4,2.6996070209376236e-5,-1.6964949395235283e-10,9.132634636288651e-4,2.72756008370633e-5,-2.9115810444199527e-10,9.136492992958313e-4,2.762733566158342e-5,-4.471383736182009e-10,9.138892892803114e-4,2.797002314543524e-5,-6.005507786510418e-10,9.140064810409892e-4,2.8229735821653137e-5,-7.173953360843062e-10,9.140537060586121e-4,2.8363778381520954e-5,-7.777099880424133e-10,9.14091744347561e-4,2.8368259804342512e-5,-7.790964097262822e-10,9.141707165736832e-4,2.8270290432506036e-5,-7.332676996715194e-10,9.143209375298112e-4,2.811333903517838e-5,-6.595294780294835e-10,9.145523676781168e-4,2.7943782175206335e-5,-5.787922436801097e-10,9.148586524660526e-4,2.780218073489562e-5,-5.09645207598181e-10,9.15222213264884e-4,2.771907523928594e-5,-4.663750532641056e-10,9.156186000215372e-4,2.771356286516508e-5,-4.581833019385022e-10,9.160198239972885e-4,2.7793018214471577e-5,-4.889247071998724e-10,9.163971548837643e-4,2.795307226790254e-5,-5.570122799444724e-10,9.167240149473723e-4,2.8177711329907586e-5,-6.554310086134877e-10,9.169794235753807e-4,2.8439962674449603e-5,-7.720472188029496e-10,9.171519825482253e-4,2.870402885777489e-5,-8.905750008556582e-10,9.172436935254598e-4,2.8929649817970348e-5,-9.925419838939779e-10,9.172722940063046e-4,2.9078832692983632e-5,-1.0603291660817625e-9,9.172706400546866e-4,2.912409780548574e-5,-1.080924584550345e-9,9.17282157849279e-4,2.9056323329246427e-5,-1.0495469582952546e-9,9.17352548715972e-4,2.8889652042343435e-5,-9.719977617501207e-10,9.175193386587934e-4,2.8661331040972106e-5,-8.647637143988589e-10,9.178017998224793e-4,2.842566755332037e-5,-7.524533284368034e-10,9.181939299909826e-4,2.824278153652306e-5,-6.627971222401617e-10,9.186627846165465e-4,2.8164133229208014e-5,-6.200278774014088e-10,9.19153691738718e-4,2.8217986087638425e-5,-6.380459293784765e-10,9.196025451004935e-4,2.8398984740483134E-05,-7.153326477966576e-10,9.199531003263491e-4,2.8666337663424036e-5,-8.338087002295918e-10,9.201741950295597e-4,2.8953522843619235e-5,-9.631226655409933e-10,9.202698561839225e-4,2.918802920852016e-5,-1.0697405631849333e-9,9.202770539297086e-4,2.9313951870328424e-5,-1.1274657767908662e-9,9.20251788073042e-4,2.9307694253609973e-5,-1.1248038587933661e-9,9.202503631241845e-4,2.918064509705824e-5,-1.0663142394564279e-9,9.203142811661418e-4,2.897003743896867e-5,-9.68530131895985e-10,9.204634699590332e-4,2.8724513202568727e-5,-8.534492296718607e-10,9.206973132387841e-4,2.849110787091789e-5,-7.426352211365498e-10,9.209999773637789e-4,2.8307067355278376e-5,-6.534492842105844e-10,9.213465790289916e-4,2.8196472237938423e-5,-5.974035621587512e-10,9.21708293335506e-4,2.8169942280115928e-5,-5.798940312517992e-10,9.220560080914304e-4,2.8225631349565033e-5,-6.005462214024394e-10,9.223629986190541e-4,2.8350410654034294e-5,-6.536955210792199e-10,9.226073866112044e-4,2.8520935298446312e-5,-7.28851240962084e-10,9.227750120124014e-4,2.8705005688838147e-5,-8.113094184352923e-10,9.228628541636617e-4,2.886416079327547e-5,-8.833278120249603e-10,9.228823589672353e-4,2.895853283479903e-5,-9.263428574000358e-10,9.228611534120579e-4,2.8954410829763517e-5,-9.244525203760215e-10,9.22841094274703e-4,2.8833597004887607e-5,-8.687589669821464e-10,9.228711087655056e-4,2.860178543460586e-5,-7.612984631604381e-10,9.229952903879357e-4,2.8291928119182712e-5,-6.167002132570091e-10,9.232395355675018e-4,2.7959342967609063e-5,-4.600776629160696e-10,9.236018170315074e-4,2.766851040299726e-5,-3.211006337196332e-10,9.240504121843283e-4,2.7475443382623978e-5,-2.2596816610665073e-10,9.24531262399518e-4,2.741170749626898e-5,-1.8999789985040983e-10,9.249820629694834e-4,2.747542499218661e-5,-2.1326498107148244e-10,9.25348579660942e-4,2.7631811895541113e-5,-2.805432543382063e-10,9.255984900902482e-4,2.7822723222327646e-5,-3.6544697746303546e-10,9.257290496695094e-4,2.798233184373522e-5,-4.3755816439126784e-10,9.25766534088789e-4,2.80545120609564e-5,-4.705154590635174e-10,9.257576987930197e-4,2.800685278340508e-5,-4.4865598588417815e-10,9.257561138535627e-4,2.7837106293070436e-5,-3.701910247767966e-10,9.258080615404461e-4,2.757056376533481e-5,-2.4616627976356377e-10,9.259425348434525e-4,2.7250326470559132e-5,-9.609656809923689e-11,9.261676807511085e-4,2.6924824434891593e-5,5.773311606893498e-11,9.264731188036599e-4,2.663697142690499e-5,1.9528968966108854e-10,9.268356351407438e-4,2.6417432659609167e-5,3.019901995562894e-10,9.272255509647921e-4,2.6282152592361178e-5,3.6997091936557287e-10,9.276120574189009e-4,2.6232846291373425e-5,3.9797540595297546e-10,9.279670116931762e-4,2.6258881085469936e-5,3.9055441141759986e-10,9.282675227858236e-4,2.633942937784366e-5,3.570959163618194e-10,9.284980234511821e-4,2.644547284239765e-5,3.109050504872678e-10,9.286524796636579e-4,2.654193492234242e-5,2.6822927772623276e-10,9.287369625751979e-4,2.6590780100069592e-5,2.468431766251289e-10,9.287720369209947e-4,2.6556135305642376e-5,2.636822102111064e-10,9.287934339306461e-4,2.6412028824363202e-5,3.312264037819188e-10,9.288486997992517e-4,2.6151880961107663e-5,4.530300718778846e-10,9.289878720362526e-4,2.5796515725207018e-5,6.199146734068698e-10,9.292487589067231e-4,2.5395465656098757e-5,8.092647167352129e-10,9.29641666352082e-4,2.5017209649756432e-5,9.894516360464816e-10,9.301413876496481e-4,2.472917795980915e-5,1.1290141747255939e-9,9.306922559167429e-4,2.4575229989538544e-5,1.2070780979559616e-9,9.312251819721861e-4,2.4561109000296633e-5,1.2202059312944135e-9,9.316789667520669e-4,2.465414560968802e-5,1.1827604254879246e-9,9.320169043861123e-4,2.479571175444768e-5,1.1213819953507269e-9,9.322336847376593e-4,2.4919677271373376e-5,1.0666004249723868e-9,9.323526991819391e-4,2.496981318218703e-5,1.044792681412822e-9,9.324168167771345e-4,2.4911728305382368e-5,1.072537792680831e-9,9.324763341556606e-4,2.473779692662344e-5,1.1541348440936524e-9,9.32577287240139e-4,2.446550131433796e-5,1.2821529509168165e-9,9.327524775390439e-4,2.4130741138395573e-5,1.440358563370683e-9,9.330166395630526e-4,2.3778318046824064e-5,1.608044416470438e-9,9.333661039477023e-4,2.345210977652227e-5,1.7646106799430005e-9,9.337821762564567e-4,2.3187164366326925e-5,1.8933448565731633e-9,9.342366534787011e-4,2.3004991867956138e-5,1.983756984261391e-9,9.346977645863617e-4,2.2912152275451638e-5,2.0323646948176415e-9,9.351352665974508e-4,2.2901360219547865e-5,2.0422501912195693e-9,9.355241516458479e-4,2.2953966611580642e-5,2.021915505548688e-9,9.358471024062418e-4,2.3042848220487e-5,1.983917263664366e-9,9.360962029673838e-4,2.313526295966051e-5,1.9435240421953627e-9,9.362744148421519e-4,2.319579877368126e-5,1.9173555450183216e-9,9.363970340869479e-4,2.3190008396632788e-5,1.921714213936969e-9,9.364926985739199e-4,2.3089580081948874e-5,1.970175219873316e-9,9.366025595028989e-4,2.287954350737153e-5,2.070174683549589e-9,9.367754583789063e-4,2.256662486320555e-5,2.219009962619075e-9,9.370572543760401e-4,2.2185503816041416e-5,2.40080151825208e-9,9.374749898088448e-4,2.179746684581724e-5,2.5870254829646286e-9,9.380215496738124e-4,2.1476617739059208e-5,2.7428988022427817e-9,9.386504920238448e-4,2.1285143976963856e-5,2.8389345262250392e-9,9.392879545260637e-4,2.124847926412409e-5,2.8626284858923288e-9,9.398581363504856e-4,2.1344635824425707e-5,2.8236063659948714e-9,9.403092110193681e-4,2.1513973951784947e-5,2.749245885993131e-9,9.406269138130842e-4,2.1682634723939766e-5,2.67386501863676e-9,9.408323763286779e-4,2.178648157968665e-5,2.6275885831474924e-9,9.409696504997068e-4,2.1786146578814432e-5,2.6292808737827737e-9,9.410906514838015e-4,2.1671298131321062e-5,2.6844268786052037e-9,9.41242649635597e-4,2.145702236312698e-5,2.786633456564728e-9,9.414601509848395e-4,2.1176178630965497e-5,2.9210047073092557e-9,9.417610200086401e-4,2.0870608445111807e-5,3.0681179766648086e-9,9.421460370053103e-4,2.0582809873944577e-5,3.207899651127782e-9,9.426010936837508e-4,2.0348968697412414e-5,3.3229824926066307e-9,9.431012540259686e-4,2.0193985304551373e-5,3.401195641488044e-9,9.436158120570794e-4,2.012884842892798e-5,3.436951038320817e-9,9.441134784478598e-4,2.015031500623975e-5,3.4314859276191417e-9,9.44566950904901e-4,2.0242534645964484e-5,3.3921135298370826e-9,9.449563631171996e-4,2.0379982085524475e-5,3.330805785534591e-9,9.45271517348029e-4,2.0530961708450033e-5,3.2625023737391606e-9,9.455131621575188e-4,2.0661233197895548e-5,3.203395247216593e-9,9.456936234191719e-4,2.0737740900431553e-5,3.1692023079153e-9,9.458369007988554e-4,2.073272466669384e-5,3.1732674706314038e-9,9.459779040524844e-4,2.0628653770206123e-5,3.224233945190357e-9,9.461597634391267e-4,2.0424167988906754e-5,3.3231751090821356e-9,9.46427574458297e-4,2.014003684687474e-5,3.4606600272122213e-9,9.468173676227388e-4,1.98221812789624e-5,3.615192303367057e-9,9.473413942934375e-4,1.9537012097558103e-5,3.755318583394564e-9,9.479753457182548e-4,1.9355058402098106e-5,3.847349600926752e-9,9.486571399076209e-4,1.9325058394134616e-5,3.867688552958027e-9,9.493040520760504e-4,1.9450539767815956e-5,3.814066075128484e-9,9.498430651538646e-4,1.9684623094334385e-5,3.7081770948540923e-9,9.502378728614017e-4,1.994861501821484e-5,3.5870008241428506e-9,9.504975307118342e-4,2.01632840220824e-5,3.4880374073031084e-9,9.506654032765242e-4,2.0274709481559317e-5,3.437068799563959e-9,9.507989420812344e-4,2.0264365859063468e-5,3.4433449550727618e-9,9.509516863480496e-4,2.0145143002205663e-5,3.5013586813003237e-9,9.511626032896819e-4,1.9950604861647016e-5,3.595755007819909e-9,9.514523625841899e-4,1.972359867900281e-5,3.7065483148110366e-9,9.518240846294337e-4,1.9507126203245064e-5,3.813351896094841e-9,9.522662841079077e-4,1.933798514493866e-5,3.898421280054506e-9,9.527567177104721e-4,1.9242649321887765e-5,3.94873970416592e-9,9.532666534200279e-4,1.9234898009828817e-5,3.9573083496472175e-9,9.537653046836214e-4,1.931500888982162e-5,3.923656171525834e-9,9.542241491314553e-4,1.9470419469034043e-5,3.853573929853045e-9,9.546208269205008e-4,1.967778168597357e-5,3.758113485784791e-9,9.549422337944906e-4,1.990624356532854e-5,3.6519733720235854e-9,9.551864658672643e-4,2.012153016907811e-5,3.5515235649189295e-9,9.553635348866212e-4,2.029033148993112e-5,3.4727284456947125e-9,9.554949463176509e-4,2.0384734278047446e-5,3.429079651875691e-9,9.55612166139684e-4,2.03866030610309e-5,3.4295402733541126e-9,9.557537872596488e-4,2.029183687422643e-5,3.4764900665650733e-9,9.559608378031081e-4,2.0114246891201803e-5,3.563775485379721e-9,9.562694312086343e-4,1.988802000189864e-5,3.6753836672060575e-9,9.567005353306505e-4,1.9666425812314765e-5,3.785918859393363e-9,9.572485741343938e-4,1.951354653734905e-5,3.864486310112931e-9,9.57873847869679e-4,1.9487015195238054e-5,3.8829949935352816e-9,9.58506375185627e-4,1.961495423927636e-5,3.827353654574862e-9,9.590658554599388e-4,1.9878214338844435e-5,3.706183686441474e-9,9.59491778185771e-4,2.021167822462048e-5,3.5503480856677113e-9,9.597671996149698e-4,2.0528378965229346e-5,3.4014299519401243e-9,9.599217284447296e-4,2.0753552855409916e-5,3.295380207449077e-9,9.600140258223889e-4,2.084893939258985e-5,3.2508500223577976e-9,9.601071466008167e-4,2.081721898662703e-5,3.2670417811981256e-9,9.602500853369318e-4,2.0691028420511654e-5,3.3288768573415605e-9,9.604701387776805e-4,2.051709319339869e-5,3.4144264007709955e-9,9.60773545484276e-4,2.034297332174702e-5,3.501100421052396e-9,9.611500679665309e-4,2.0208786324005668e-5,3.569552864573399e-9,9.615783591656324e-4,2.014318881895291e-5,3.6056735200335207e-9,9.620307130834803e-4,2.0161937110386437e-5,3.6014269400379457e-9,9.62477113531018e-4,2.0267731706648574e-5,3.5550823882264824e-9,9.628889049217328e-4,2.0450864920827385e-5,3.4710012484743916e-9,9.632422415170349e-4,2.069066577730867e-5,3.3589647822421636e-9,9.635212754316284e-4,2.0957906935666852e-5,3.2329849290971195e-9,9.637208099389389e-4,2.1218360815741975e-5,3.1095519476630494e-9,9.638478893925641e-4,2.143740445538196e-5,3.0054061149790872e-9,9.639218361763492e-4,2.158517204251695e-5,2.9350831633136274e-9,9.639725275225862e-4,2.164161332623286e-5,2.9085171189180765e-9,9.64036920303166e-4,2.1600821946777073e-5,2.928960887667208e-9,9.641539462469475e-4,2.1473982466179215e-5,2.991503500896854e-9,9.643579665181983e-4,2.129029021121154e-5,3.0824929931979146e-9,9.646710825382556e-4,2.1095019009386883e-5,3.180304929063653e-9,9.650951414487477e-4,2.0943493593642626e-5,3.2581268817857795e-9,9.656055505064805e-4,2.08898021785074e-5,3.2893920797482204e-9,9.661506527532753e-4,2.0970707862049013e-5,3.2556740154475738e-9,9.666609700686485e-4,2.1188936127107843e-5,3.154989219151684e-9,9.670695157136533e-4,2.1504456001118907e-5,3.0062342252277902e-9,9.673367523603838e-4,2.1842686062608042e-5,2.8453160317467475e-9,9.674669505838162e-4,2.2120216315934066e-5,2.7126670331229932e-9,9.675052672091475e-4,2.227588153984791e-5,2.6381300324599617e-9,9.67517310975436e-4,2.2290098639572074e-5,2.631571812351488e-9,9.675641549386202e-4,2.2184188610723864e-5,2.683192639935835e-9,9.676856175598294e-4,2.20050732406217e-5,2.770831293998539e-9,9.678958345343047e-4,2.1806797104405777e-5,2.8687326779884426e-9,9.681874796128061e-4,2.1636899335670483e-5,2.953998363007588e-9,9.685391645791842e-4,2.152957275673156e-5,3.00987037631748e-9,9.689223645110006e-4,2.150393434528262e-5,3.0266647100820593e-9,9.693065461435913e-4,2.1564905127593073e-5,3.0015027830697376e-9,9.696627464705727e-4,2.170489096403e-5,2.9376390040777005e-9,9.699663713453124e-4,2.190558400417185e-5,2.843664610904784e-9,9.701997585934131e-4,2.213998368625858e-5,2.732536103734538e-9,9.703546573483743e-4,2.2375052452482884e-5,2.6202568912921775e-9,9.704343769114892e-4,2.2575473791547756e-5,2.524023751178972e-9,9.70454924970594e-4,2.2708679506424222e-5,2.4597828841057676e-9,9.704442684490575e-4,2.2750680548228815e-5,2.4394191096140195e-9,9.70439123002729e-4,2.269163919856002e-5,2.4680675742140396e-9,9.704792630519241e-4,2.2539791907013454e-5,2.542185695856593e-9,9.706000419416595e-4,2.2322356320565065e-5,2.6490241837254375e-9,9.708244225247657e-4,2.208254490993235e-5,2.7679330778128663e-9,9.711561348596273e-4,2.1872563135784633e-5,2.8736116004682885e-9,9.715756674472968e-4,2.1743144202396543e-5,2.9411105609226534e-9,9.720408542324096e-4,2.1730926538918943e-5,2.952015717458691e-9,9.724936339510598e-4,2.1846219921065344e-5,2.9005828036571425e-9,9.728734724452532e-4,2.206526684943893e-5,2.797753482524233e-9,9.73135268736305e-4,2.2331915022099625e-5,2.670534930423955e-9,9.732656869873846e-4,2.2571721047228047e-5,2.5551777813643346e-9,9.732896097496811e-4,2.2715649390846857e-5,2.4855509251822116e-9,9.732616414073596e-4,2.272350320648063e-5,2.481624710067114e-9,9.732459633450723e-4,2.2595527734851322e-5,2.5437609524692543e-9,9.732948670608518e-4,2.2367393624596813e-5,2.6551037957679194e-9,9.73435775314028e-4,2.2093662920085047e-5,2.7895237218060307e-9,9.736697513088091e-4,2.18295826774539e-5,2.9203430820786453e-9,9.739779823635234e-4,2.1618463822268142e-5,3.0263986928152343e-9,9.743307630656896e-4,2.14864286442583e-5,3.094632000552376e-9,9.746951934172733e-4,2.1442559653592196e-5,3.120143478228777e-9,9.75040337470858e-4,2.1481561948537084e-5,3.105047155900916e-9,9.753402753088035e-4,2.1586872020260996e-5,3.0570669881734935e-9,9.755760407850127e-4,2.1733399542332765e-5,2.9882432258541283e-9,9.757372606998641e-4,2.1890007987213578e-5,2.913710103700545e-9,9.758238522467932e-4,2.2022308074060718e-5,2.8502981225779335e-9,9.758475695193567e-4,2.2096463822383953e-5,2.814649675643213e-9,9.75832592759985e-4,2.208441265972937e-5,2.8206647589847394e-9,9.758139779570534e-4,2.1970120824932505e-5,2.8764536267483205e-9,9.758329513980938e-4,2.1755459239150598e-5,2.9814657729990575e-9,9.759289405456378e-4,2.146343405290607e-5,3.1248755506446147e-9,9.761297562449015e-4,2.1136469459250627e-5,3.2863308207215907e-9,9.764427844228285e-4,2.0828722875066234e-5,3.4395760619971846e-9,9.768504235625822e-4,2.05936578116549e-5,3.558401665094199e-9,9.773119310828517e-4,2.047011212383905e-5,3.623414500991834e-9,9.777718670258082e-4,2.0470907088346007e-5,3.627703453703138e-9,9.781733258317801e-4,2.057752945621449e-5,3.5796494003707138e-9,9.784727031122457e-4,2.0742968740602736e-5,3.501766797457081e-9,9.786520083386822e-4,2.090280873294008e-5,3.4254174178099575e-9,9.787247391817811e-4,2.099234249163606e-5,3.3824366972435045e-9,9.787325073239532e-4,2.0964978181006943e-5,3.3960258792809006e-9,9.787325574450096e-4,2.080554329966027e-5,3.474116418782361e-9,9.78780386798012e-4,2.053316629811452e-5,3.607853339306525e-9,9.78914283306498e-4,2.0192836373745813e-5,3.7756288344559166e-9,9.79147450149718e-4,1.9840040928541138e-5,3.9505044744465266e-9,9.794691393037586e-4,1.9525344833017023e-5,4.107694790089413e-9,9.798520178516646e-4,1.928413468832371e-5,4.229601723499455e-9,9.802613780058582e-4,1.9132999458968806e-5,4.30768523320254e-9,9.806628425931363e-4,1.9071152761889917e-5,4.341903576740723e-9,9.810273134182267e-4,1.9084239326578834e-5,4.338962357581536e-9,9.81333537072951e-4,1.9148443642578993e-5,4.310353550740631e-9,9.81569296115634e-4,1.9233976343823555e-5,4.2706388260183405e-9,9.817321483998952e-4,1.9307966381521585e-5,4.235993167701627e-9,9.81830219636952e-4,1.933733918927407e-5,4.222757802688705e-9,9.818829501630556e-4,1.9292467400002797e-5,4.245632427234919e-9,9.819209964844942e-4,1.9152168044642423e-5,4.315222825428222e-9,9.8198392831691e-4,1.890983975966044e-5,4.435029642934434e-9,9.821143377150008e-4,1.857919889488635e-5,4.59861659028588e-9,9.823480141006478e-4,1.819663416702158e-5,4.788408783691395e-9,9.827021678395676e-4,1.781681352429813e-5,4.977767747591471e-9,9.8316630954625e-4,1.750019208422675e-5,5.1370239028109335e-9,9.837010460599907e-4,1.729533464359589e-5,5.242087342349132e-9,9.842471758127079e-4,1.722284340206006e-5,5.282365711457081e-9,9.847423799112572e-4,1.7267922501442923e-5,5.2645551112541595e-9,9.851390392167326e-4,1.7384650541422545e-5,5.210737350473865e-9,9.85416712413494e-4,1.7509721680699187e-5,5.151788515618179e-9,9.855858656559924e-4,1.7580163367743918e-5,5.118732221992248e-9,9.856830005405348e-4,1.754937325800318e-5,5.134813103943706e-9,9.857596419803308e-4,1.7397498039928058e-5,5.210281577132254e-9,9.858686370143312e-4,1.7134242430752782e-5,5.340872784086539e-9,9.860514093620037e-4,1.6794137806137563e-5,5.509998145968244e-9,9.863293550422345e-4,1.6426136917274978e-5,5.693759305662125e-9,9.867012674118518e-4,1.6080882897378395e-5,5.867166202605813e-9,9.871466831850105e-4,1.5799461394281728e-5,6.009706321470195e-9,9.876331363464859e-4,1.560644168178504e-5,6.108876220456722e-9,9.881244546795737e-4,1.5508013115131364e-5,6.16123561320287e-9,9.885877203164924e-4,1.5494168132305846e-5,6.1714423956312695e-9,9.889977731607897e-4,1.554301218967708e-5,6.150173958810571e-9,9.89339357154404e-4,1.5625438489487203e-5,6.11180328305642e-9,9.896077069428486e-4,1.5709163928471263e-5,6.072354236231378e-9,9.898084641090051e-4,1.5761986455145772e-5,6.047846128949401e-9,9.89957481892549e-4,1.575472773264608e-5,6.052821432389052e-9,9.900805416390554e-4,1.5664564164811243e-5,6.098708901861965e-9,9.902123484409752e-4,1.5479331179479615e-5,6.191709401312268e-9,9.903935258545628e-4,1.5202748222706768e-5,6.33020714370356e-9,9.906641160678208e-4,1.4859172652645127e-5,6.502381741232603e-9,9.910530106883304e-4,1.4494749524882107e-5,6.685572808518867e-9,9.915653761885476e-4,1.4170939529055735e-5,6.8494023081549725e-9,9.92173804543939e-4,1.3948485846748767e-5,6.963646567409606e-9,9.92820439606734e-4,1.3865800846189006e-5,7.008937764536123e-9,9.934330686488335e-4,1.3922023616282452e-5,6.98524850756154e-9,9.939493480964887e-4,1.4075052891534514e-5,6.91302227434678e-9,9.943372374337234e-4,1.4256527274009431e-5,6.825888020437902e-9,9.946022722861765e-4,1.4395571285888233e-5,6.75895614654633e-9,9.947808856143072e-4,1.4439740434982362e-5,6.738430832136037e-9,9.949257957257986e-4,1.4366093115323758e-5,6.776065172871318e-9,9.950905167510095e-4,1.418186073054903e-5,6.868729017701459e-9,9.953173989064848e-4,1.391790875148587e-5,7.001518418367263e-9,9.95630713119781e-4,1.3618756991412558e-5,7.152573416875709e-9,9.960345799292754e-4,1.3332040182830323e-5,7.29822948174995e-9,9.965148922381106e-4,1.3099245727471433e-5,7.4176277467670906e-9,9.970441941477112e-4,1.294893783688122e-5,7.496180701557594e-9,9.975882397394037e-4,1.2893264734091967e-5,7.527452492986098e-9,9.98112746713271e-4,1.2927881166143136e-5,7.513323955728468e-9,9.985890416039868e-4,1.3034634044303174e-5,7.462717843178684e-9,9.98997826875862e-4,1.3185900947308538e-5,7.389423516943071e-9,9.993309205324102e-4,1.3349405125668461e-5,7.3096360810763596e-9,9.99591375901445e-4,1.3492586365441474e-5,7.2397137309556e-9,9.99792668555754e-4,1.3586170648049899e-5,7.19436794380859e-9,9.999574846180697e-4,1.3607159236305784e-5,7.185183536470915e-9,0.0010001162353076604,1.3541721843540724e-5,7.219205045654568e-9,0.0010003049165363592,1.3388426048463978e-5,7.297338394204071e-9,0.0010005613623854227,1.3161776667357265e-5,7.4125560623676355e-9,0.0010009186855654698,1.2894930291567578e-5,7.548472365832492e-9,0.001001395431805748,1.2638913929780974e-5,7.679645009834532e-9,0.0010019842716833783,1.2454704246940159e-5,7.775465670467849e-9,0.0010026447567112351,1.2396089240531763e-5,7.80872345265965e-9,0.0010033080233894881,1.2487217081785896e-5,7.766920829338294e-9,0.0010038972478855197,1.2706548445498057e-5,7.660458605367358e-9,0.0010043565504526115,1.2989946449421098e-5,7.521224770364038e-9,0.001004672231437384,1.3254551939388285e-5,7.390681026669133e-9,0.0010048741581043606,1.3430195374539308e-5,7.304097230213788e-9,0.001005019125368549,1.3480998017901777e-5,7.27969563649755e-9,0.001005168386359312,1.340941335065461e-5,7.316596454133312e-9,0.0010053704906546521,1.3246930061867809e-5,7.3994046186029145e-9,0.0010056532197300141,1.3040000118914438e-5,7.505138119129774e-9,0.0010060229091539998,1.2837303701281687e-5,7.609490773330097e-9,0.0010064679702872599,1.2680694358525935e-5,7.691325334965295e-9,0.00100696410900686,1.2599802055308625e-5,7.73543576837147e-9,0.0010074799303969257,1.2609453088105831e-5,7.733972018905462e-9,0.0010079824262810555,1.270927137545503e-5,7.68678360040066e-9,0.001008441983199197,1.2885166585695294e-5,7.600766502657164e-9,0.0010088364680810365,1.3112382500046945e-5,7.488348827427479e-9,0.0010091540147537904,1.3359627618872047e-5,7.365366043977686e-9,0.0010093942793346546,1.3593707411098743e-5,7.248659658443538e-9,0.0010095681767792678,1.3783993741249416e-5,7.15377885761242e-9,0.0010096964280629517,1.3906222158150544e-5,7.093063507146875e-9,0.0010098073351207102,1.3945501108580383e-5,7.074156161434548e-9,0.001009933998475673,1.3898670498425644e-5,7.098839141011301e-9,0.0010101108925560731,1.3776156395851466e-5,7.162087545997906e-9,0.0010103693537762879,1.3603229200616472e-5,7.2513716092129284e-9,0.001010731370310706,1.3419833637562037e-5,7.3466457393835305e-9,0.0010112016762827962,1.3277108498864683e-5,7.422018074019115e-9,0.0010117598625822178,1.3228209751310446e-5,7.450356500270065e-9,0.0010123568768607588,1.3312347000828476e-5,7.411421404428368e-9,0.0010129222480500654,1.3535582819181508e-5,7.301724939909382e-9,0.001013385331984101,1.3858804132080293e-5,7.140781390672817e-9,0.001013703707706818,1.4205000113155494e-5,6.967497490960027e-9,0.0010138822454817784,1.448749274687313e-5,6.825833236491937e-9,0.0010139696115598694,1.464433393257325e-5,6.747309515966404e-9,0.001014034960781267,1.4658559233696529e-5,6.740744459985028e-9,0.0010141406929217946,1.4555765436898252e-5,6.793498539548968e-9,0.0010143254890754552,1.4386576477060897e-5,6.880297884166936e-9,0.0010146008251386124,1.420706593101242e-5,6.973012537470857e-9,0.0010149561275081414,1.4065065181815716e-5,7.047465907773897e-9,0.00101536675460542,1.3993570240248546e-5,7.0867457546242325e-9,0.0010158013574818438,1.4009210516690739e-5,7.0820601273590445e-9,0.0010162275161801665,1.4113340727320419e-5,7.032323770553171e-9,0.0010166159146742558,1.429419134817385e-5,6.943198192930504e-9,0.0010169435907143895,1.4529570251940101e-5,6.825790427443894e-9,0.001017196458485237,1.4790107827825064e-5,6.695003258799705e-9,0.0010173710222833715,1.5043063994411697e-5,6.5675509780237646e-9,0.0010174750556951806,1.5256600380969255e-5,6.459732390817189e-9,0.001017526963278131,1.5404159828331004e-5,6.385177403566588e-9,0.0010175537373666459,1.5468376233596634e-5,6.352868110860509e-9,0.001017587717364337,1.544402654131814e-5,6.365661713647204e-9,0.0010176624605994554,1.5339717534360233e-5,6.419435210938414e-9,0.0010178080063839555,1.5178075945731396e-5,6.502944076621323e-9,0.0010180457452669584,1.4994254410299033e-5,6.598491835633543e-9,0.001018383064035031,1.4832381264038678e-5,6.6836353960864175e-9,0.0010188083316972948,1.47391332796154e-5,6.734397667122887e-9,0.0010192878609278002,1.475363974145172e-5,6.730438678602947e-9,0.0010197678046505864,1.4894272655654495e-5,6.661915015952189e-9,0.00102018443463024,1.5145950174105276e-5,6.5361350999692345e-9,0.0010204836747962334,1.5455522234757765e-5,6.380048705078234e-9,0.0010206437243931602,1.5743334912936524e-5,6.2343512371156256e-9,0.0010206877187796243,1.5931055263172206e-5,6.139179160224897e-9,0.0010206758978202743,1.5972669549953236e-5,6.118206896081988e-9,0.0010206802785743953,1.587040614601252e-5,6.170538509004209e-9,0.0010207572457502255,1.5667653115910527e-5,6.274358304487625e-9,0.0010209325449119094,1.5426977239675342e-5,6.398084889086976e-9,0.0010212017498908892,1.520786821074164e-5,6.511580983868921e-9,0.0010215398590799887,1.5053291656116975e-5,6.5929010127443566e-9,0.001021912431934167,1.498569502034724e-5,6.630329259183798e-9,0.0010222841435015692,1.5008880327172054e-5,6.621529648464819e-9,0.0010226239917599095,1.5112068113238198e-5,6.571614831742929e-9,0.0010229080944826484,1.527401144689631e-5,6.491159177179544e-9,0.0010231212780165244,1.5466570242856973e-5,6.394419794620523e-9,0.001023258140679252,1.565799311163615e-5,6.29764201481796e-9,0.001023323723746117,1.581631986787821e-5,6.217269214912676e-9,0.0010233335657502231,1.5913194832607108e-5,6.1679458224003706e-9,0.001023312652942418,1.592801691867029e-5,6.160375068918902e-9,0.0010232928007281963,1.5851837316847298e-5,6.199331981376249e-9,0.0010233083950897286,1.5690131829775294e-5,6.282255337576482e-9,0.0010233908943278179,1.5463603240336597e-5,6.398818557630599e-9,0.0010235628682748299,1.5206365333078503e-5,6.531796793225194e-9,0.001023832615986048,1.4961295414609502e-5,6.659351030318273e-9,0.0010241904386357422,1.4772889164037382e-5,6.75860252344733e-9,0.001024607567166903,1.4678269177210256e-5,6.810218842264442e-9,0.001025038835875019,1.4697338813962965e-5,6.803536849223181e-9,0.0010254302198467145,1.4824014543455562e-5,6.7412161836967475e-9,0.001025731571596928,1.5021882123837198e-5,6.641636326261475e-9,0.0010259126052034333,1.522848767407803e-5,6.536783150416774e-9,0.0010259765363499528,1.5370953906319304e-5,6.464197088487894e-9,0.0010259633245588596,1.5390062552732196e-5,6.454503675266422e-9,0.0010259374918061134,1.5262568774086813e-5,6.519889575291671e-9,0.0010259645518792863,1.5009405517106155e-5,6.649894303135918e-9,0.0010260881771412683,1.4685110812366908e-5,6.816835676346961e-9,0.0010263193576777233,1.4355638624471758e-5,6.98711790063453e-9,0.0010266398889383535,1.4077159844329356e-5,7.1319926882616635e-9,0.001027014226018415,1.388425288732607e-5,7.2335633845970444e-9,0.0010274020414492461,1.3788133610311604e-5,7.285745723386852e-9,0.0010277670997235588,1.378095198171993e-5,7.292187151879546e-9,0.0010280818168414282,1.384189253769118e-5,7.263261955630348e-9,0.0010283288268859772,1.3942614549109414e-5,7.213352520340318e-9,0.0010285011445110084,1.405139140764495e-5,7.158731665697266e-9,0.0010286019408435882,1.413632711989153e-5,7.115870597147311e-9,0.0010286442540053864,1.4168322568558104e-5,7.09986088584424e-9,0.0010286504037499457,1.4124365397943462e-5,7.12268504128625e-9,0.0010286504791455998,1.3991292700524017e-5,7.191271681234185e-9,0.0010286791648484964,1.3769478993510954e-5,7.3056080066068604e-9,0.0010287705469715204,1.3475266008978337e-5,7.457494460578409e-9,0.001028951327632887,1.3140689311306862e-5,7.630660550566689e-9,0.0010292338285229816,1.280935564220711e-5,7.802822009644976e-9,0.0010296108825569928,1.2528353458002378e-5,7.949760843038067e-9,0.0010300546940236487,1.233759347627838e-5,8.050755726164393e-9,0.0010305208273311641,1.2259178009605778e-5,8.094075186049836e-9,0.0010309570900584187,1.2289732755782155e-5,8.08103476461809e-9,0.0010313157392175553,1.239822992254162e-5,8.027273387668908e-9,0.0010315663465513536,1.2530919495367793e-5,7.960336714121893e-9,0.0010317058209335492,1.2623500762804774e-5,7.913435014428099e-9,0.001031761762409121,1.2618455216019864e-5,7.916445804350526e-9,0.0010317863213620134,1.2482715648861428e-5,7.986708154305847e-9,0.0010318409415092163,1.2218875567850196e-5,8.123174915224233e-9,0.0010319770490094284,1.1864341225077265e-5,8.306813126168584e-9,0.00103222073763433,1.1478137897328902e-5,8.507363432120657e-9,0.001032567744181653,1.1121486498340977e-5,8.693293502779717e-9,0.001032989301697024,1.084087419509298e-5,8.840491614529463e-9,0.0010334441429188832,1.065944919603051e-5,8.936740074754993e-9,0.0010338905402688494,1.0577173083741774e-5,8.981736505163395e-9,0.0010342945423151325,1.0576383955421915e-5,8.98433665789792e-9,0.00103463375858786,1.0628837350001691e-5,8.958991422832772e-9,0.0010348979793146607,1.0701777354861157e-5,8.922621233770985e-9,0.0010350882727302663,1.0762337371071754e-5,8.89230185881902e-9,0.0010352157191526022,1.0780632780980312e-5,8.883608858628518e-9,0.0010353002554859072,1.0732303407048932e-5,8.90925860516677e-9,0.0010353694431257166,1.0601227344865006e-5,8.977690201699487e-9,0.0010354564618759658,1.0382697470573208e-5,9.09143350297743e-9,0.0010355964502504992,1.008658752883728e-5,9.245490273873833e-9,0.00103582062126145,9.739174784541215e-6,9.426394426544935e-9,0.001036148531357024,9.381685552026843e-6,9.612933762557046e-9,0.001036580411402926,9.063860868442835e-6,9.779418101910907e-9,0.0010370928511063498,8.832500434599207e-6,9.901545674027221e-9,0.0010376410685493903,8.717740287966906e-6,9.963490318062588e-9,0.001038168776362179,8.722090107823838e-6,9.963639543713632e-9,0.001038623174432724,8.817117820241822e-6,9.916433090139891e-9,0.0010389699638132367,8.949806345046257e-6,9.849185263172341e-9,0.0010392031310252545,9.056681538401306e-6,9.794814136056429e-9,0.0010393464417650642,9.081041880969784e-6,9.7828832107339e-9,0.0010394465445357972,8.98803121924295e-6,9.831716602058708e-9,0.0010395599652596504,8.773379181090786e-6,9.943793307826468e-9,0.0010397377850124105,8.463527638538071e-6,1.010562028455275e-8,0.0010400124740567555,8.107264085356009e-6,1.0292016552047566e-8,0.0010403907983126954,7.761647465210934e-6,1.047336668482392e-8,0.0010408546068110553,7.476975351250501e-6,1.0623406725890964e-8,0.0010413683448417354,7.285608742141655e-6,1.0725068130866081e-8,0.0010418898199738098,7.197436696745734e-6,1.077292879202111e-8,0.0010423802623030689,7.201792582882333e-6,1.0772323696065717e-8,0.0010428110604212102,7.273401012350935e-6,1.0736320365516424e-8,0.0010431666141344895,7.3794054706384364e-6,1.0682066369385867e-8,0.0010434442537033133,7.485424438284342e-6,1.062758834085327e-8,0.001043652630466233,7.559908129853109e-6,1.0589456096467488e-8,0.0010438096899647942,7.577040457584126e-6,1.0581220954317427e-8,0.0010439407598399314,7.518874452397437e-6,1.0612288493742078e-8,0.0010440766580099585,7.3774053804267025e-6,1.0686856280073861e-8,0.0010442511917944904,7.1569232978676465e-6,1.0802719477653824e-8,0.0010444971593526165,6.876269078840813e-6,1.0950114569202205e-8,0.001044840195797599,6.569674575005575e-6,1.1111270660756568e-8,0.0010452907905748228,6.284047442282688e-6,1.1261780001466925e-8,0.0010458366657182785,6.070632446913745e-6,1.1374885918198315e-8,0.0010464397212440041,5.970991705073476e-6,1.1428761032437083e-8,0.0010470419129418023,6.0012650636924906e-6,1.1414752486565529e-8,0.0010475808873286244,6.142246342171787e-6,1.134266195270011e-8,0.0010480101442759484,6.342031857499272e-6,1.1239472124113928e-8,0.0010483145665516262,6.531775462877667e-6,1.1141164514740623e-8,0.0010485141839921832,6.647674109549178e-6,1.1081204358546142e-8,0.0010486555927916323,6.649554437643226e-6,1.1080769771562399e-8,0.0010487962274780228,6.52970014858732e-6,1.1144090607712959e-8,0.001048988161110087,6.311113549640392e-6,1.1259318747852037e-8,0.001049266135585487,6.038217412853158e-6,1.140334069973273e-8,0.0010496417708631659,5.764112342343603e-6,1.1548386965958874e-8,0.001050103884713581,5.538005408647266e-6,1.1668579695155248e-8,0.0010506236688532541,5.395419538643018e-6,1.1745084312143063e-8,0.001051162793625547,5.352737678222033e-6,1.176905039772956e-8,0.0010516822059403249,5.4065291012566944e-6,1.1742069546748452e-8,0.0010521495626468031,5.5369304279269275e-6,1.1674479004989727e-8,0.0010525439851890206,5.7134564555245825e-6,1.1582329111142928e-8,0.0010528578438257308,5.9014015084172195e-6,1.1483979856274418e-8,0.0010530961263485919,6.067417747217445e-6,1.139710095373138e-8,0.0010532743691075914,6.1835874192326255e-6,1.133647354846759e-8,0.0010534160834845703,6.230045791333779e-6,1.1312589735762775e-8,0.001053550198721015,6.1966823130205854e-6,1.1330774854534354e-8,0.0010537085154161126,6.0844906794547615e-6,1.1390513063025623e-8,0.0010539227224054864,5.906847205676181e-6,1.1484802633572627e-8,0.00105422025687308,5.690435278638442e-6,1.1599668036115498e-8,0.0010546184278993171,5.4746708261865515e-6,1.1714426246353476e-8,0.001055117156275193,5.307635025766357e-6,1.1803769941651274e-8,0.001055692545616445,5.236529243510756e-6,1.184274644058134e-8,0.001056295705931545,5.292689648675187e-6,1.1814655608677331e-8,0.0010568617072468647,5.4757403210461624e-6,1.1719477956429268e-8,0.0010573293783666506,5.74604326804144e-6,1.157796966652239e-8,0.0010576645165347547,6.033560344798371e-6,1.1427058221344922e-8,0.0010578737870635731,6.261973517443829e-6,1.1307094518131505e-8,0.0010580009637449824,6.3760497725166996e-6,1.1247346419441141e-8,0.001058108517330219,6.358165356812837e-6,1.1257242872632262e-8,0.0010582556001528874,6.228289144348805e-6,1.1326384333356857e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json new file mode 100644 index 000000000..d7e3be98a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":13000,"numberOfSamples":1000,"samples":[0.0010584823083198346,6.031818825503171e-6,1.14309469118811e-8,0.0010588036033781425,5.823520864538709e-6,1.1542103150393909e-8,0.0010592110744742987,5.6537248748726675e-6,1.1633248752700286e-8,0.0010596790894540058,5.559275280564943e-6,1.1684765345343194e-8,0.0010601724727019367,5.559236240846307e-6,1.1686339583847125e-8,0.0010606540091394276,5.654379293057021e-6,1.163732802349451e-8,0.0010610908819856466,5.829497270171977e-6,1.1545624012790231e-8,0.0010614594503400023,6.057715047147503e-6,1.1425423187205381e-8,0.001061747989835144,6.305862037083749e-6,1.1294367431781857e-8,0.0010619573719630783,6.539955951254238e-6,1.1170587469196216e-8,0.0010620999645025674,6.73003410085884e-6,1.107008326599654e-8,0.0010621972572704668,6.85379996171742e-6,1.1004756707165859e-8,0.0010622768540195135,6.898913123430779e-6,1.098119849532928e-8,0.0010623693266318172,6.864185869807982e-6,1.1000078885400938e-8,0.0010625050436689565,6.760079817880366e-6,1.1055907410923635e-8,0.001062710756522555,6.608668374463369e-6,1.1137052470541557e-8,0.0010630055440594903,6.442842455479279e-6,1.122613014857253e-8,0.0010633958133875673,6.303928192637586e-6,1.1301216346173524e-8,0.0010638698300656857,6.236227673998108e-6,1.1338700200742188e-8,0.0010643938207032379,6.277096687541316e-6,1.1318549017049607e-8,0.0010649135018336272,6.443029009602109e-6,1.1231761017071778e-8,0.0010653652534506645,6.716334917457601e-6,1.1087554932954997e-8,0.0010656971998236583,7.041447402084115e-6,1.0915428186536279e-8,0.0010658919742331224,7.338860744797124e-6,1.0757744815379704e-8,0.0010659770288683225,7.534292063466726e-6,1.0654138240953239e-8,0.001066013886508743,7.587831708115414e-6,1.0625935223163422e-8,0.0010660723258305996,7.506181686783977e-6,1.0669662265910576e-8,0.0010662052115061964,7.3335686443663195e-6,1.0761922260944352e-8,0.0010664358470525873,7.130863915281745e-6,1.0870481691937031e-8,0.0010667588393153595,6.955633515934309e-6,1.0964801902708683e-8,0.0010671485918925085,6.8498410434954626e-6,1.1022511941646397e-8,0.0010675694409390784,6.835426550329633e-6,1.1031759374762615e-8,0.0010679841615469535,6.915158645441867e-6,1.0990824083116765e-8,0.0010683599657830244,7.076052103195604e-6,1.0906394119921115e-8,0.0010686723933572796,7.293685466136946e-6,1.0791343615514796e-8,0.00106890765095213,7.536822311352906e-6,1.0662299642942404e-8,0.0010690635977016276,7.77211139688823e-6,1.0537115853861746e-8,0.001069149428980129,7.968577301214409e-6,1.0432429890255657e-8,0.0010691841550370862,8.101601929648258e-6,1.036149374624633e-8,0.0010691940071483454,8.156061538266819e-6,1.0332478423133815e-8,0.001069209055658057,8.128266563717782e-6,1.03474435063982e-8,0.0010692594713290538,8.026593480405271e-6,1.0402013164716527e-8,0.0010693717459872535,7.870945267100574e-6,1.0485664177770738e-8,0.0010695649713014753,7.691125951702836e-6,1.05825672334285e-8,0.0010698471837835711,7.524020444771572e-6,1.0673046459330192e-8,0.0010702118794917663,7.409199319244088e-6,1.073588364535248e-8,0.0010706353190277158,7.382260325524803e-6,1.0751866255570777e-8,0.0010710762838212979,7.465490347225327e-6,1.0708824642405977e-8,0.0010714809682874885,7.6570210693528492E-06,1.0607528738465052e-8,0.0010717954666795326,7.92266264450533e-6,1.0466162353522634e-8,0.0010719849482146093,8.197549025520211e-6,1.031948512559187e-8,0.0010720518335533688,8.403355641842077e-6,1.0209555077841326e-8,0.0010720405373210041,8.477632103826806e-6,1.0169920153450947e-8,0.001072021738228369,8.400092320472587e-6,1.021150931330851e-8,0.0010720635198379748,8.199374023477202e-6,1.0319075409549964e-8,0.0010722065788787624,7.937147885028722e-6,1.0459750886515433e-8,0.00107245583521534,7.681893768449438e-6,1.0597036740148054e-8,0.0010727875503866039,7.487659268153709e-6,1.0702071381753594e-8,0.0010731630002383215,7.384581405590331e-6,1.075864496894142e-8,0.0010735409195010803,7.379180450137632e-6,1.0763066178824929e-8,0.001073885642552888,7.459556157906894e-6,1.0721462765445143e-8,0.0010741711464074789,7.60167164073378e-6,1.064650717664984e-8,0.0010743824677307964,7.774854624539591e-6,1.05545292946971e-8,0.0010745158753886549,7.946253107214568e-6,1.0463140800736486e-8,0.0010745783975093434,8.084663970024577e-6,1.0389154063601514e-8,0.0010745867148931046,8.164015707520659e-6,1.0346669113505363e-8,0.0010745652935797434,8.166515928713906e-6,1.0345347414447921e-8,0.0010745436064007652,8.085247843115634e-6,1.0389003625916266e-8,0.001074552414002862,7.925732239563838e-6,1.04747713355022e-8,0.0010746194263179607,7.705947602888145e-6,1.0593098065321354e-8,0.0010747649179418883,7.45457851834404e-6,1.0728675241616273e-8,0.0010749978735612412,7.207509835919612e-6,1.0862287758949862e-8,0.0010753131883688583,7.0027414856204215e-6,1.0973502950806292e-8,0.0010756904320888402,6.874033979996817e-6,1.1044059873554255e-8,0.0010760947834755237,6.8436529769841505e-6,1.1061787085804026e-8,0.001076481049891446,6.914886396186059e-6,1.1024693263841812e-8,0.0010768018290682909,7.066051634150347e-6,1.0944283327208556e-8,0.0010770200321076698,7.249261634913781e-6,1.0846289489249666e-8,0.001077123420982185,7.39804993243476e-6,1.076656197635394e-8,0.0010771348797026668,7.44585714263904e-6,1.0741042838621376e-8,0.0010771101367558554,7.350779981649652e-6,1.0792371226593277e-8,0.0010771194563272597,7.114340819791003e-6,1.091978472227473e-8,0.0010772207158111727,6.781925749825741e-6,1.1098942285178267e-8,0.001077438751988009,6.423598569950669e-6,1.1292263291924475e-8,0.0010777614606054466,6.107174429654953e-6,1.1463350840217734e-8,0.001078150988925822,5.878278442603043e-6,1.1587643347827043e-8,0.0010785602961386523,5.753858224937523e-6,1.1655892460490189e-8,0.0010789465240847547,5.72623912615062e-6,1.167203738632892e-8,0.0010792781883616845,5.7715171050260465e-6,1.1648769383961856e-8,0.0010795372547668179,5.857715055435001e-6,1.1603202812664468e-8,0.001079718408317149,5.950842140755552e-6,1.1553633958985417e-8,0.0010798274054571314,6.018931123532262e-6,1.1517348515355086e-8,0.0010798793764046966,6.034916081994106e-6,1.150903056702829e-8,0.0010798970957694128,5.979082561969348e-6,1.1539400992860876e-8,0.0010799088782759599,5.841386795654391e-6,1.1613943229511664e-8,0.001079945671266815,5.6234999239785664e-6,1.1731800417280663e-8,0.0010800370563297977,5.339960624404898e-6,1.1885168170973472e-8,0.0010802063626677298,5.017558699714286e-6,1.2059638070394361e-8,0.001080465709873069,4.692281975823613e-6,1.2235836282107038e-8,0.0010808121845919524,4.403722523375394e-6,1.239241282362964e-8,0.0010812263927673289,4.1875776377249006e-6,1.2510056790341688e-8,0.0010816742755761358,4.067606126441703e-6,1.2575830541311822e-8,0.0010821124162932766,4.048764490048608e-6,1.2586910279254428e-8,0.001082496394029135,4.1132067224480435e-6,1.2552812557360103e-8,0.0010827911400719823,4.220728194789922e-6,1.2495218049522599e-8,0.0010829814407256138,4.315035608807498e-6,1.2444602628550136e-8,0.0010830795939978,4.336331558319785e-6,1.2433397469308228e-8,0.0010831263014689158,4.238515418925506e-6,1.2486625405764085e-8,0.0010831815716910997,4.005888907583e-6,1.2612831618416838e-8,0.0010833062871192334,3.6615290203470267e-6,1.2799568273597161e-8,0.0010835411795810717,3.261162454656364e-6,1.3016729071965934e-8,0.0010838933778462134,2.8737930394674124e-6,1.3227010267237029e-8,0.001084337034999438,2.5585169726812227e-6,1.3398407369065678e-8,0.0010848260137734957,2.3486087687672093e-6,1.351281176227918e-8,0.0010853104715353803,2.2479370425633493e-6,1.3567994079646327e-8,0.0010857496852788604,2.2371567972056594e-6,1.3574322546551323e-8,0.0010861181451779231,2.2837281191620208e-6,1.3549388239562281e-8,0.0010864060912470594,2.3509882779473265e-6,1.351309848109019e-8,0.001086617167375567,2.4043382300803017e-6,1.348429676688557e-8,0.0010867653789912383,2.414780175748046e-6,1.3478800918996513e-8,0.0010868723951977914,2.36090336349784e-6,1.3508287044674754e-8,0.0010869652859729975,2.230320299619587e-6,1.357949036950374e-8,0.0010870742527047388,2.0210940838380106e-6,1.3693435401754393e-8,0.0010872297036982135,1.7431263470573831e-6,1.3844706627164613e-8,0.0010874581583647045,1.4188304041524766e-6,1.4021110351396713e-8,0.0010877770309646244,1.0819285734700634e-6,1.420434005833336e-8,0.0010881892473587201,7.732394508393998e-7,1.4372250040797893e-8,0.0010886795450963712,5.330813350595426e-7,1.4502949312721697e-8,0.001089214649730255,3.9140243490344096e-7,1.458013766244398e-8,0.0010897487258969283,3.584072521389756e-7,1.459820749252219e-8,0.0010902335819651038,4.191729634013468e-7,1.4565214418600275e-8,0.0010906310187498445,5.348153076480196e-7,1.4502295396028616e-8,0.0010909236281021046,6.506177348026824e-7,1.443926695100913e-8,0.001091120685014961,7.092800663955221e-7,1.4407391615029013e-8,0.001091257136747916,6.658869235087142e-7,1.4431183604022623e-8,0.0010913854479859381,5.005821622148568e-7,1.4521478794650966e-8,0.0010915618860652314,2.251478759511052e-7,1.467185398741576e-8,0.0010918307189155313,-1.1924299742407577e-7,1.4859864732950039e-8,0.0010922113493534546,-4.734372432057817e-7,1.5053255310459487e-8,0.0010926932935980337,-7.775556028587294e-7,1.5219334684945516e-8,0.0010932410472572044,-9.877102401363634e-7,1.533407805988485e-8,0.0010938063797259453,-1.0859165470122615e-6,1.5387566050399254e-8,0.001094342455259391,-1.080589230442882e-6,1.5384321095468852e-8,0.00109481445675083,-9.995980021090122e-7,1.5339569592932147e-8,0.0010952043212414967,-8.803420527904827e-7,1.5273828324478645e-8,0.0010955103354372215,-7.608506842509845e-7,1.520800473466209e-8,0.0010957438947718288,-6.738297010954895e-7,1.516008890171015e-8,0.0010959255739260278,-6.435882030741187e-7,1.514342886133524e-8,0.0010960816844447629,-6.848008439732961e-7,1.516603611113632e-8,0.001096241543978873,-8.02004725041787e-7,1.5230321629549556e-8,0.0010964350536024304,-9.891361497491146e-7,1.5332873831182345e-8,0.0010966898752015986,-1.2290044827439803e-6,1.5464206803068726e-8,0.0010970275583669783,-1.4932930260580311e-6,1.5608784981685757e-8,0.0010974584822657629,-1.7443109645131954e-6,1.574598051452959e-8,0.0010979764965260918,-1.9399561880694465e-6,1.5852762521604583e-8,0.0010985554895813923,-2.0426623918831098e-6,1.590856103716042e-8,0.0010991510076969397,-2.031063016383569e-6,1.590164521848076e-8,0.0010997091337757634,-1.9102678540224635e-6,1.5834788151340182e-8,0.0011001814643931509,-1.7151290714917107e-6,1.5727115299126148e-8,0.0011005408546707206,-1.5028952094650604e-6,1.5610105905041306e-8,0.001100790948640354,-1.3368393448549428e-6,1.5518581808694086e-8,0.001100965184316589,-1.2672952194125447e-6,1.5480237846173764e-8,0.0011011161176956588,-1.3175209969869768e-6,1.5507843040213407e-8,0.0011012998469212088,-1.4787697248972343e-6,1.5596542078759433e-8,0.001101561065014156,-1.7146998910046917e-6,1.5726308035865734e-8,0.0011019226990827457,-1.9724071175410574e-6,1.586801490545639e-8,0.001102382007116548,-2.196363356079692e-6,1.5991084228148263e-8,0.0011029132667145561,-2.3416096021800094e-6,1.6070722292919825e-8,0.0011034757514399483,-2.38310916619068e-6,1.6093077245681256e-8,0.0011040244786115357,-2.31927776315323e-6,1.6057225467888683e-8,0.0011045205794044041,-2.1694385072843676e-6,1.597381802522786e-8,0.0011049385690624493,-1.966838354498544e-6,1.5861252045493124e-8,0.0011052692443645087,-1.750001842086337e-6,1.5740883086523665e-8,0.0011055186380034719,-1.5550353774155559e-6,1.5632734001830676e-8,0.0011057045369247066,-1.4103695910270938e-6,1.5552549745965977e-8,0.0011058522277989002,-1.3341378137981495e-6,1.551032955262108e-8,0.0011059906217503908,-1.3335025490994153e-6,1.5509962936515426e-8,0.001106149150194748,-1.404950501845874e-6,1.5549420079728942e-8,0.0011063551807779252,-1.5348143523852197e-6,1.5621073311654e-8,0.0011066313631327655,-1.6998081049754247e-6,1.5712016164878937e-8,0.0011069922927926747,-1.8679853774396568e-6,1.580459705808824e-8,0.0011074402507398938,-2.0011637405826746e-6,1.5877740607269027e-8,0.0011079607077455421,-2.060248709035317e-6,1.5909858156164228e-8,0.001108519738968454,-2.0144254988523965e-6,1.588390462537339e-8,0.0011090667951459137,-1.8531436940924132e-6,1.5794016241904865e-8,0.0011095457522609323,-1.5962893152773853E-06,1.5651187561937485e-8,0.0011099131036531966,-1.295286315591519e-6,1.548393416264128e-8,0.0011101558729649911,-1.0201697065466408e-6,1.5331133204623056e-8,0.0011102988958696094,-8.358929741676526e-7,1.5228836499800212e-8,0.001110396160826366,-7.792957175517323e-7,1.519745019538023e-8,0.00111051078357651,-8.4832733122868e-7,1.5235767590110828e-8,0.0011106942753399312,-1.0069042485667557e-6,1.5323711725274e-8,0.00111097368196469,-1.1999692577389667e-6,1.5430718007157876e-8,0.0011113487938456635,-1.370515245006706e-6,1.5525164027079777e-8,0.0011117968919402519,-1.472886234678616e-6,1.5581716379428368e-8,0.00111228126468647,-1.4803580618799743e-6,1.5585522069862342e-8,0.0011127605283525728,-1.38735025143936e-6,1.553345118973782e-8,0.0011131969606502966,-1.207467615593322e-6,1.5433042494833323e-8,0.0011135628384484684,-9.68609089136904e-7,1.5299812786382335e-8,0.0011138441430138264,-7.063766770539463e-7,1.515359787677788e-8,0.0011140413969519087,-4.5716749529745555e-7,1.5014692696968984e-8,0.0011141679771116317,-2.5224292949749117e-7,1.4900524553462284e-8,0.0011142467106409985,-1.1360505719006956e-7,1.4823340179212186e-8,0.0011143057375622243,-5.1947099677121166e-8,1.478906414284595e-8,0.0011143745275428235,-6.641623982905153e-8,1.479718055412551e-8,0.0011144805411490116,-1.4554045014367347e-7,1.4841267716474989e-8,0.0011146465039405943,-2.6868186327244643e-7,1.4909818722617364e-8,0.0011148879464543517,-4.077487512787168e-7,1.4987193531681402e-8,0.0011152106069133069,-5.293572049765862e-7,1.5054810350341645e-8,0.001115607505557431,-5.981354506604627e-7,1.5092967998964315e-8,0.0011160562278251995,-5.82238372920153e-7,1.508390498897239e-8,0.0011165181858738054,-4.617774614729789e-7,1.5016501585294573e-8,0.0011169427756374372,-2.3916486858598275e-7,1.489207589936706e-8,0.001117279123695704,5.281074662320559e-8,1.4728931150574154e-8,0.0011174945353303808,3.5238253651923323e-7,1.4561593636104278e-8,0.0011175918891919794,5.85237341776037e-7,1.4431602483043102e-8,0.001117613973298778,6.922600246158575e-7,1.4371955080154304e-8,0.0011176285284481737,6.540692000960255e-7,1.4393394122909386e-8,0.0011177012518909313,4.973859584028976e-7,1.4480914676359373e-8,0.0011178724639969737,2.807665191832271e-7,1.4601797634793543e-8,0.0011181484319527568,7.064887876481905e-8,1.4718987525011862e-8,0.0011185068668504749,-7.890745011779789e-8,1.4802357637019236e-8,0.0011189091709123736,-1.3646153918415363e-7,1.4834384089423755e-8,0.0011193126105248509,-9.43931094899234e-8,1.48108065335213e-8,0.0011196792366973227,3.5164048593491474e-8,1.473837430297344e-8,0.0011199811858316087,2.26369559642981e-7,1.4631494218090753e-8,0.0011202031869314724,4.4589422366034254e-7,1.4508776239873582e-8,0.00112034310520379,6.586854121746841e-7,1.4389816343386903e-8,0.0011204109385747102,8.330417415667043e-7,1.4292352649188305e-8,0.0011204265234972595,9.446967691452359e-7,1.4229970169917528e-8,0.0011204162785695454,9.796302768584618e-7,1.4210520366177409e-8,0.0011204093914756884,9.354136766252925e-7,1.423536740670385e-8,0.0011204339509095645,8.210357617533893e-7,1.4299488573279187e-8,0.0011205135047749502,6.554492436680685e-7,1.4392288214421408e-8,0.0011206642577800594,4.652528434009131e-7,1.4498888367884619e-8,0.001120892869175372,2.817729973787914e-7,1.4601751044198787e-8,0.0011211947550755549,1.3757495990860276e-7,1.4682621069015419e-8,0.0011215528883894927,6.21872975976025e-8,1.4724918735586556e-8,0.001121937523487324,7.657802320904832e-8,1.471684663627745e-8,0.0011223081121608392,1.862337483495964e-7,1.4655293964103262e-8,0.0011226193191337492,3.7406125879550593e-7,1.4549846746055096e-8,0.001122832579558784,5.965725646991329e-7,1.4424943518651694e-8,0.001122931860338344,7.888398809784377e-7,1.4317073347269448e-8,0.0011229368584202211,8.823540066354003e-7,1.42646972284513e-8,0.0011229030163360236,8.31978931560535e-7,1.4293081372632381e-8,0.0011229027871189272,6.377983868581165e-7,1.4402074372500076e-8,0.0011229961745440554,3.466313844851877e-7,1.4565346045514696e-8,0.0011232080312209413,3.131213495657076e-8,1.4742059226319447e-8,0.0011235241667242122,-2.384517151272013e-7,1.4893183747109764e-8,0.0011239038866639104,-4.1705069829968125e-7,1.4993199888376666e-8,0.0011242978045176068,-4.891837396590307e-7,1.5033552385496457e-8,0.0011246618087164136,-4.650533911979487e-7,1.501996092483476e-8,0.0011249644073865193,-3.712956185955165e-7,1.4967350495564534e-8,0.0011251887847238463,-2.4226609099827207e-7,1.489497804254355e-8,0.0011253319323496448,-1.1342860023329529e-7,1.4822732804632492e-8,0.001125402634959825,-1.6748392335343594e-8,1.476855463336166e-8,0.0011254190551908455,2.2583818610430424e-8,1.4746592428163293e-8,0.001125406006350285,-1.147849811646348e-8,1.4765866874794957e-8,0.0011253918703925659,-1.2428284425453638e-7,1.4829389975213278e-8,0.001125405153669,-3.098575433825358e-7,1.4933811618400424e-8,0.001125470825285484,-5.515007109536961e-7,1.5069747750744837e-8,0.0011256068473051415,-8.237402109522106e-7,1.522287862447306e-8,0.0011258213742378021,-1.0955210324600928e-6,1.5375735433027346e-8,0.001126110953640497,-1.33434576076099e-6,1.551002392607651e-8,0.0011264599688784321,-1.5110754595557068e-6,1.5609325258051984e-8,0.0011268415324472347,-1.6050367155868619e-6,1.5661979950811296e-8,0.0011272200850014037,-1.6091063327225863e-6,1.5663968705012574e-8,0.0011275562307977297,-1.5342861631028003e-6,1.5621508044081852e-8,0.0011278144681279808,-1.4124327608801717e-6,1.5552595027563792e-8,0.001127973697196369,-1.2945868803236955e-6,1.548604925928786e-8,0.0011280382587597413,-1.2418556395565706e-6,1.5456333428887506e-8,0.0011280441049613882,-1.3076713541081708e-6,1.5493515389976944e-8,0.0011280530903307478,-1.5159246352740396e-6,1.5610950547436537e-8,0.001128132778175655,-1.8463668689740967e-6,1.579711977668449e-8,0.0011283296134604944,-2.238778351585612e-6,1.601804452302929e-8,0.0011286507402838491,-2.6162893563312223e-6,1.6230430827785135e-8,0.001129064849116733,-2.914505922934018e-6,1.639803217786027e-8,0.0011295188883964043,-3.1003495271215335e-6,1.650223555792818e-8,0.0011299585096496848,-3.1743954370268017e-6,1.6543390761059785e-8,0.0011303422387863712,-3.1616614223987634e-6,1.6535639899295777e-8,0.0011306468543703053,-3.099226465392222e-6,1.649993957729718e-8,0.0011308665355909385,-3.026115926253836e-6,1.6458343678529448e-8,0.0011310092877528594,-2.97696670198988e-6,1.643041637428008e-8,0.0011310930107738839,-2.9787150579821667e-6,1.643135725219101e-8,0.0011311420979546502,-3.048971357365785e-6,1.6471083224590702e-8,0.0011311844863316548,-3.1951543584245246e-6,1.655374177555831e-8,0.0011312487969415517,-3.4140426711787296e-6,1.667746050617603e-8,0.001131361247585663,-3.6918347099299193e-6,1.683438659836271e-8,0.0011315422288500833,-4.005155407124281e-6,1.701126248263884e-8,0.0011318028686057846,-4.323516118603748e-6,1.719082210152812e-8,0.001132142305142021,-4.613386976593811e-6,1.7354095519871995e-8,0.001132546459390808,-4.843583003603475e-6,1.7483454475893005e-8,0.0011329889427781129,-4.991272754047409e-6,1.7566013688537354e-8,0.0011334344413259357,-5.047541910774497e-6,1.7596784618951905e-8,0.001133844458183822,-5.021292733474158e-6,1.7580889129752105e-8,0.0011341848700335095,-4.94040959890774e-6,1.753421475919338e-8,0.0011344344119443499,-4.8491916969188745e-6,1.748193700907113e-8,0.0011345925814498685,-4.801059066100088e-6,1.745434825021528e-8,0.001134684387300292,-4.846227082445247e-6,1.7479841111046328e-8,0.0011347584805635495,-5.0160858158737145e-6,1.7576061597522453e-8,0.0011348759327808268,-5.309263400214288e-6,1.7742064468409605e-8,0.0011350908173706725,-5.6869034120381485e-6,1.7955706489080888e-8,0.0011354299176144932,-6.082800701089851e-6,1.8179418623203863e-8,0.0011358822190113598,-6.426124898603051e-6,1.8373054177066374e-8,0.0011364043809356825,-6.665757949870108e-6,1.8507648393622844e-8,0.0011369384853650538,-6.7840861137196476e-6,1.8573247563186413e-8,0.0011374316455507916,-6.795823634017219e-6,1.8578280026159067e-8,0.001137848673807987,-6.736604005607285e-6,1.85430965640259e-8,0.001138175543947817,-6.649378408098194e-6,1.8492219634553844e-8,0.0011384164599360274,-6.574091986083006e-6,1.8448433493018965e-8,0.0011385884812031334,-6.5420367269707E-06,1.8429543600599157e-8,0.0011387163515221173,-6.573764105960214e-6,1.844718403120001e-8,0.0011388284833158092,-6.678850501571657e-6,1.8506697577031452e-8,0.0011389539421612653,-6.856289459219892e-6,1.8607380918886297e-8,0.0011391198567281403,-7.094990988364993e-6,1.8742791852569966e-8,0.0011393486909906535,-7.374470404067843e-6,1.8901162544082247e-8,0.001139655105173082,-7.666288253826918e-6,1.9066235687773136e-8,0.0011400426757558419,-7.936983461486883e-6,1.921894205864218e-8,0.0011405013577337874,-8.152936837249098e-6,1.9340168556050783e-8,0.0011410069453844265,-8.286904307477137e-6,1.941447163411268e-8,0.001141523687978373,-8.325052062458535e-6,1.943407977800105e-8,0.0011420104921204704,-8.272482966705914e-6,1.940204081740356e-8,0.0011424298885641681,-8.155032071176124e-6,1.9333238629293002e-8,0.0011427577026877223,-8.01590505046847e-6,1.9252449665323856e-8,0.0011429907616206283,-7.907174957399983e-6,1.9189445751876634e-8,0.0011431501649271265,-7.877608061907913e-6,1.917200273740673e-8,0.0011432784491987938,-7.9594886944176e-6,1.9218374972079383e-8,0.0011434302434748492,-8.157983701078854e-6,1.9331275036921774e-8,0.0011436578055424847,-8.446881947193677e-6,1.949552477305666e-8,0.00114399515501405,-8.773659928063834e-6,1.9681008281834052e-8,0.001144446522983574,-9.073972603149053e-6,1.9850948567032337e-8,0.0011449845240813815,-9.291172843971188e-6,1.997301868872744e-8,0.0011455595354737658,-9.393027652032006e-6,2.0028869806567677e-8,0.0011461161009334714,-9.378716130867975e-6,2.001814630971795e-8,0.0011466089029168024,-9.274461172054308e-6,1.9956008806800238e-8,0.0011470122988015584,-9.121833292035425e-6,1.9866427698242803e-8,0.00114732188508422,-8.96496066277439e-6,1.977481168122164e-8,0.001147550426654242,-8.84115873090527e-6,1.970259092640148e-8,0.0011477216937115396,-8.776250220560751e-6,1.966451506584681e-8,0.0011478647584178116,-8.783503033521037e-6,1.966805944170667e-8,0.0011480097210303582,-8.864451422748417e-6,1.971393023358895e-8,0.0011481847339456337,-9.010282799110149e-6,1.9796897029095008e-8,0.0011484137013095736,-9.203162855983934e-6,1.9906583070119853e-8,0.0011487139621447924,-9.417536219790016e-6,2.0028232082651543e-8,0.0011490935669522466,-9.622008265590576e-6,2.0143797216780358e-8,0.0011495483701545808,-9.782674812070154e-6,2.0233850339937727e-8,0.0011500598968202766,-9.868530899457088e-6,2.0280675342107168e-8,0.001150595576793416,-9.858788234789456e-6,2.027245503525575e-8,0.0011511130407411538,-9.750551556433113e-6,2.0207673116114426e-8,0.0011515690958261268,-9.563815939238883e-6,2.0097983923800655e-8,0.0011519316806153635,-9.340392670730376e-6,1.9967584121287674e-8,0.001152190749497022,-9.135185026245966e-6,1.9848156573524196e-8,0.0011523634382926925,-9.001659265593388e-6,1.9770455193964563e-8,0.0011524907957058544,-8.976351650421527e-6,1.975535707782608e-8,0.0011526268209164589,-9.067935946616826e-6,1.9807599727437817e-8,0.0011528235054923113,-9.25449432683755e-6,1.9914294904382524e-8,0.0011531166414686328,-9.489552149459594e-6,2.0048491573720485e-8,0.0011535164504243166,-9.71476019621844e-6,2.0176519619224113e-8,0.0011540055000518578,-9.875454353321969e-6,2.0266935867828633e-8,0.0011545443526542588,-9.934597905884134e-6,2.029851857027083e-8,0.0011550830429836547,-9.881012223473731e-6,2.026498429883669e-8,0.0011555744937682764,-9.729706251418504e-6,2.0175168201088018e-8,0.0011559854772124829,-9.51504938883692e-6,2.0049071556327196e-8,0.0011563021464909625,-9.280042396553756e-6,1.991163982225793e-8,0.0011565296752859802,-9.065727818539686e-6,1.9786613888511836e-8,0.001156687736425848,-8.903688987058367e-6,1.9692182364519e-8,0.0011568044046975123,-8.8125619957311e-6,1.9638981965480233e-8,0.0011569105458751,-8.797789715304598e-6,1.9629991386652268e-8,0.0011570356151798416,-8.853178776230065e-6,1.9661469660227554e-8,0.0011572048275839113,-8.963029002850191e-6,1.9724213131765286e-8,0.0011574371573823965,-9.104180604326605e-6,1.9804750235027096e-8,0.0011577435098976399,-9.247950130788989e-6,1.9886461799431398e-8,0.0011581246406424353,-9.362476184699034e-6,1.9950934601369646e-8,0.001158568958664678,-9.41631267388031e-6,1.9980033554842147e-8,0.001159051135572797,-9.383982662467644e-6,1.9959107105592105e-8,0.0011595332400694842,-9.253407196201551e-6,1.988127948054991e-8,0.0011599704116754437,-9.033473617199929e-6,1.9751830591591057e-8,0.001160321905079089,-8.757962164306107e-6,1.9590469326886845e-8,0.0011605651381540996,-8.481352968156326e-6,1.9428884611557018e-8,0.0011607066977102414,-8.264780100526713e-6,1.9302555692561575e-8,0.0011607835786356816,-8.156211653841857e-6,1.9239208531028127e-8,0.001160852303938451,-8.173672131833849e-6,1.9249082973678126e-8,0.0011609704050213417,-8.299502401002055e-6,1.9321670102197103e-8,0.0011611786600939425,-8.487524842860316e-6,1.942996472795716e-8,0.00116149085756971,-8.678548440956826e-6,1.9539526753642373e-8,0.0011618930476837161,-8.817263786054158e-6,1.961829467481908e-8,0.0011623502480845786,-8.865197369246996e-6,1.9644073624203352e-8,0.0011628170462849206,-8.807345064885849e-6,1.9608343243756524e-8,0.001163248772606246,-8.652436380407108e-6,1.9516370694754277e-8,0.0011636107636861521,-8.42810745764086e-6,1.9384372461534673e-8,0.0011638841503945102,-8.17290291549061e-6,1.9234838808357553e-8,0.0011640675332915647,-7.927309243105636e-6,1.9091306227406572e-8,0.001164174910574985,-7.725934562782125e-6,1.897381570422459e-8,0.0011642310911780206,-7.592301438636944e-6,1.8895911963434465e-8,0.001164266183153776,-7.536686249750781e-6,1.8863426101585725e-8,0.0011643105098843333,-7.556534996681924e-6,1.8874751833990127e-8,0.0011643907219274397,-7.638508383357229e-6,1.892205030520054e-8,0.0011645272144765674,-7.761166811425134e-6,1.8992807601442906e-8,0.0011647324707863098,-7.897651936164617e-6,1.9071379900299287e-8,0.0011650098094900412,-8.018265814666975e-6,1.914048233352255e-8,0.0011653521888236509,-8.093307790327415e-6,1.9182839583695098e-8,0.001165741133615056,-8.096798948189496e-6,1.9183362843101123e-8,0.0011661465394286383,-8.01169930545659e-6,1.913219846759754e-8,0.0011665289267256526,-7.836536321099879e-6,1.9028592765835697e-8,0.0011668460658409007,-7.591725078170206e-6,1.8884569456476698e-8,0.0011670647742319771,-7.321672629410377e-6,1.872613603007408e-8,0.0011671752536712213,-7.087778965397692e-6,1.8589162929747138e-8,0.0011672007945532352,-6.950506281680236e-6,1.8508875117680157e-8,0.0011671946165852476,-6.946270276537636e-6,1.8506350208028936e-8,0.0011672219724961402,-7.071417197234697e-6,1.8579216055933185e-8,0.0011673358746302342,-7.283275108892446e-6,1.8702356985605753e-8,0.0011675594159570796,-7.517413113909867e-6,1.8838061377010595e-8,0.0011678822015231747,-7.710561368063675e-6,1.8949420655493054e-8,0.0011682689261397071,-7.818135372925264e-6,1.9010538692202126e-8,0.0011686730493583339,-7.821696462300443e-6,1.90108499425854e-8,0.0011690494583318888,-7.727720962976632e-6,1.8954353489254236e-8,0.0011693632444199163,-7.56134032774171e-6,1.885590552632025e-8,0.00116959424227111,-7.358324729191973e-6,1.8736493783482777e-8,0.0011697381322427927,-7.157289319737172e-6,1.861866602390422e-8,0.001169805015940991,-6.993028321525914e-6,1.852264983791331e-8,0.0011698161546601542,-6.891491872816817e-6,1.8463458014440653e-8,0.0011697995747586565,-6.866806023143072e-6,1.8449195474681566e-8,0.001169785345145261,-6.9204124414224666e-6,1.8480593608555368e-8,0.0011698012390084927,-7.0420511084665356e-6,1.8551596753815423e-8,0.0011698692959780039,-7.212115770190638e-6,1.865072612237821e-8,0.001170003535115469,-7.40476340602822e-6,1.876287162320732e-8,0.0011702087001298016,-7.591191261412983e-6,1.887118665962335e-8,0.001170479701385697,-7.742851069545861e-6,1.895896527939579e-8,0.0011708015200401624,-7.834746251544546e-6,1.9011588216858993e-8,0.0011711496211634048,-7.849130822009977e-6,1.9018713426567524e-8,0.0011714913924403504,-7.779910197998646e-6,1.8976869060788222e-8,0.0011717897544849946,-7.637523831636095e-6,1.889230519205385e-8,0.001172010309956273,-7.452738502943907e-6,1.8783182601489195e-8,0.0011721323598993924,-7.275994332800178e-6,1.867913794942048e-8,0.0011721611281580594,-7.168155593634209e-6,1.861581265298405e-8,0.0011721343191450696,-7.1813051484193844e-6,1.862357539268324e-8,0.0011721149049607846,-7.335813716215587e-6,1.87141217167984e-8,0.001172168800567516,-7.607145133330706e-6,1.8872833135365767e-8,0.0011723380208572738,-7.933227173421569e-6,1.9063184028057393e-8,0.0011726252496139771,-8.239481077610759e-6,1.924143891636807e-8,0.0011729975280554965,-8.466260519538257e-6,1.9372719916227837e-8,0.0011734031858778484,-8.584501548552111e-6,1.944016181411194e-8,0.001173790302185874,-8.596454295920204e-6,1.944531693494591e-8,0.0011741190787508823,-8.527161410478187e-6,1.9403109104349883e-8,0.0011743669348481497,-8.413502697600549e-6,1.933534155711618e-8,0.0011745284115409797,-8.294793736602777e-6,1.9265131227668844e-8,0.0011746124079364151,-8.206190261184355e-6,1.9213032276832187e-8,0.0011746385065752375,-8.174556373859033e-6,1.9194649111671876e-8,0.0011746330915234392,-8.216052103381338e-6,1.9219279634408336e-8,0.0011746253880197785,-8.335082109550146e-6,1.9289350289034145e-8,0.0011746435809791025,-8.524542340119898e-6,1.9400586230916127e-8,0.0011747112692470335,-8.767280557710057e-6,1.954286430798587e-8,0.0011748445359639791,-9.03865596643075e-6,1.9701692857538592e-8,0.0011750499632298852,-9.309966660718363e-6,1.9860201817912727e-8,0.001175323799399941,-9.552298843262974e-6,2.0001396821218872e-8,0.00117565222379474,-9.740381416028808e-6,2.0110439466007515e-8,0.0011760125740055314,-9.856258828588306e-6,2.0176834214821782e-8,0.001176375524771259,-9.89270749701017e-6,2.0196458357561633e-8,0.0011767084198622795,-9.856295447680713e-6,2.0173355725141192e-8,0.0011769802534832457,-9.769680052766479e-6,2.0121046365166935e-8,0.001177168799588408,-9.671871258832764e-6,2.0062613323586582e-8,0.0011772694476469777,-9.6141384720008e-6,2.002822704058926e-8,0.0011773031276615976,-9.649130357389883e-6,2.004871269724044e-8,0.001177317927990144,-9.813195811093411e-6,2.0145182911243707e-8,0.0011773784774201084,-1.0107742086366462e-5,2.031816622647421e-8,0.0011775429199502576,-1.0491244705205072e-5,2.054301185498362e-8,0.001177837880102486,-1.0891186429975976e-5,2.077695811502661e-8,0.0011782469508336748,-1.1232228758863288e-5,2.0975685618500445e-8,0.0011787199252995327,-1.1464270048217633e-5,2.1109807093236463e-8,0.001179195117857407,-1.1575096317836384e-5,2.1172327792887724e-8,0.0011796204060343677,-1.1585333083324484e-5,2.117567378298927e-8,0.001179964253721622,-1.153426084540048e-5,2.1143276835969646e-8,0.001180216947487361,-1.1465789942356163e-5,2.1101215758474892e-8,0.0011803864077251783,-1.1418915216628996e-5,2.107252293342305e-8,0.0011804924552570766,-1.1422849945557147e-5,2.1074313204903283e-8,0.0011805616351961057,-1.149534972563153e-5,2.111684828473406e-8,0.0011806231296561194,-1.164260838042896e-5,2.1203547272920038e-8,0.001180705405349917,-1.185983590457733e-5,2.133138289587363e-8,0.0011808332022572984,-1.2132380829244001e-5,2.1491566451183692e-8,0.0011810247593277404,-1.2437538534793616e-5,2.1670609888946692e-8,0.00118128939658047,-1.2747235945817167e-5,2.1851893747692842e-8,0.0011816258296817952,-1.3031688632184382e-5,2.2017816721285344e-8,0.0011820217409164156,-1.3263766786722557e-5,2.215238102483769e-8,0.0011824549343442512,-1.3423476824073942e-5,2.224386173036045e-8,0.0011828960923008392,-1.3501908143475178e-5,2.228715845248425e-8,0.0011833129578829248,-1.3504032616951642e-5,2.2285447254115404e-8,0.0011836756314048944,-1.3449812928952117e-5,2.2250794275112108e-8,0.001183962592413837,-1.3373153848677134e-5,2.2203458812617827e-8,0.0011841669322909438,-1.3318065327970467e-5,2.2169537514422055e-8,0.0011843016926503368,-1.3331175884827947e-5,2.2176482373441217e-8,0.0011844020642103072,-1.3450260247773386e-5,2.2246332098472546e-8,0.001184521202676278,-1.3690428025695983e-5,2.2387640451217336e-8,0.0011847171293863903,-1.4032994909381187e-5,2.2589027933433944e-8,0.001185032463777717,-1.4424743371322873e-5,2.281883562996951e-8,0.0011854755677246913,-1.4792794984495582e-5,2.3033918419938312e-8,0.0011860147396502052,-1.507088024578483e-5,2.319513060443558e-8,0.0011865905179456926,-1.5223319477673633e-5,2.328150001628114e-8,0.0011871389466646689,-1.5253718038456167e-5,2.3295410581307743e-8,0.0011876123061146714,-1.519648813755946e-5,2.3257586969311357e-8,0.0011879885113928858,-1.5099845661934605e-5,2.3196940123018956e-8,0.0011882695341677578,-1.501035144178206e-5,2.31412842396481e-8,0.0011884742356245803,-1.4963788315746421e-5,2.3111852364620775e-8,0.001188630530564791,-1.4982034546106686e-5,2.3121452402727265e-8,0.0011887692807419578,-1.507353292827563e-5,2.3174817880824452e-8,0.0011889202463939105,-1.5235106883747588e-5,2.3269772227890994e-8,0.0011891093972103773,-1.5453904219857056e-5,2.3398442893928934e-8,0.001189356787492648,-1.5709243646093957e-5,2.3548380493865156e-8,0.001189674562434833,-1.597465760311393e-5,2.3703767108688843e-8,0.0011900650705906138,-1.622059546320253e-5,2.3847010207390837e-8,0.0011905194959919482,-1.641817450904896e-5,2.396096721453941e-8,0.0011910177895063875,-1.6543919681829082e-5,2.403177226492937e-8,0.0011915306556030559,-1.6584788766736868e-5,2.4051839818261955e-8,0.001192023898945927,-1.6542298384545826e-5,2.4022324070467803e-8,0.001192464757553144,-1.643440146715635e-5,2.3954211093486313e-8,0.001192829119799411,-1.629404609753833e-5,2.3867395750016865e-8,0.001193108027212104,-1.6164104458207515e-5,2.3787569044241983e-8,0.0011933118430555575,-1.608921071912973e-5,2.3741272731391792e-8,0.0011934707320330146,-1.6105658509481013e-5,2.374985781205688e-8,0.0011936303976635173,-1.623111932778949e-5,2.3823425330801796e-8,0.0011938425904213918,-1.6456797947603263e-5,2.3956291913805633e-8,0.0011941512693824246,-1.6745405678767475e-5,2.4125926378533872e-8,0.0011945777513011316,-1.703806116613979e-5,2.4297131106293858e-8,0.0011951108176325653,-1.7270552184130284e-5,2.4431706269672658e-8,0.0011957078826386161,-1.7394145331375484e-5,2.4500786304503858e-8,0.001196308651953773,-1.7391670563142902e-5,2.4494397478295562e-8,0.0011968553574094527,-1.7280885870127336e-5,2.442346637634852e-8,0.0011973097438809756,-1.7104486121415902e-5,2.4313830319614202e-8,0.0011976600271846305,-1.6913544964189015e-5,2.4196263777647027e-8,0.0011979178287977973,-1.6752823815132273e-5,2.4097605696463648e-8,0.0011981097707620147,-1.6652578579863055e-5,2.4035827004151324e-8,0.0011982686801686477,-1.6626751066110573e-5,2.401899572758425e-8,0.0011984270612510747,-1.6674980003615707e-5,2.4046572026728495e-8,0.0011986131998672476,-1.6785856209140574e-5,2.411144126081378e-8,0.00119884907936858,-1.6939967517406705e-5,2.4201781684558578e-8,0.0011991490988296598,-1.7112385016964997e-5,2.430255743190104e-8,0.0011995189044720176,-1.727490968716899e-5,2.4396846663078468e-8,0.0011999541434850292,-1.73987053704685e-5,2.446740213138539e-8,0.0012004395264967585,-1.7457927525291007e-5,2.4498820966803372E-08,0.0012009491082435547,-1.743451264755266e-5,2.4480422287605266e-8,0.001201448900782843,-1.7323465817622007e-5,2.4409425154034857e-8,0.0012019025457898729,-1.713703206787251e-5,2.429344400128628e-8,0.0012022796375072394,-1.6905527800039264e-5,2.415095110327444e-8,0.001202564674709609,-1.66730256383639e-5,2.4008615527302114e-8,0.0012027634568679232,-1.6487847620334767e-5,2.3895505198766226e-8,0.001202904030611828,-1.6390163394670685e-5,2.3835574955575874e-8,0.0012030311028923925,-1.6400516224166192e-5,2.384078723594285e-8,0.0012031951747230444,-1.6513004713512284e-5,2.390712060734509e-8,0.001203439368777117,-1.6695385826531313e-5,2.4014786720648956e-8,0.0012037875416534632,-1.6896357132806125e-5,2.413273573212916e-8,0.0012042369997383238,-1.7058417430140396e-5,2.422642990299439e-8,0.001204758270153749,-1.7133153462624448e-5,2.42669920335499e-8,0.0012053027296240449,-1.7094557087145528e-5,2.4239131779032624e-8,0.001205816243419089,-1.694576087819249e-5,2.414512189749825e-8,0.001206254208107606,-1.671652593603102e-5,2.4003224447649546e-8,0.0012065924774887938,-1.6452686017868706e-5,2.3841274764580573e-8,0.0012068306855210508,-1.6202252980745935e-5,2.3688257288772364e-8,0.0012069882451567506,-1.6003642610002783e-5,2.3567193058502826e-8,0.0012070962548821874,-1.5879317737007825e-5,2.3491350212189728e-8,0.0012071891126864752,-1.5834987172204415e-5,2.3463848234982794e-8,0.0012072982435586271,-1.5862395994595704e-5,2.3479429419473134E-08,0.0012074484919681056,-1.5943390285158226e-5,2.3526960795175952e-8,0.0012076565349967772,-1.6053727644420263e-5,2.3591735054261115e-8,0.0012079303224518817,-1.6166109640853678e-5,2.3657270713232458e-8,0.0012082687433021958,-1.625265566416613e-5,2.370677465035961e-8,0.0012086611896754904,-1.6287448494366172e-5,2.372466631141001e-8,0.0012090872917999832,-1.6249836702848495e-5,2.3698580523446967e-8,0.0012095176855486077,-1.6128815528154758e-5,2.3622028928013453e-8,0.0012099170613362122,-1.592798579392285e-5,2.349739986274672e-8,0.0012102505659388227,-1.566936060894537e-5,2.3338237567455915e-8,0.0012104933479661164,-1.5393153749585413e-5,2.316906420901978e-8,0.0012106406191476266,-1.5150881099106516e-5,2.302113572545944e-8,0.001210713427762985,-1.4991745019339821e-5,2.2924136337323242e-8,0.0012107557250189674,-1.4946543294335746e-5,2.2896419733099684e-8,0.0012108221716802248,-1.5016161651831003e-5,2.293810304377412e-8,0.0012109612315525406,-1.5170264902251345e-5,2.3030401775421017e-8,0.0012112005956738774,-1.535671009607627e-5,2.3141465559964834e-8,0.0012115402123723076,-1.551722648703216e-5,2.3235958218962858e-8,0.0012119541203185218,-1.5603217342101987e-5,2.32846361790215e-8,0.0012123989690091418,-1.558704649773601e-5,2.32711262155396e-8,0.0012128258188160085,-1.546672637976945e-5,2.3194667025593706e-8,0.0012131919055231588,-1.526397476343263e-5,2.306882035076686e-8,0.001213469672752588,-1.5016981076206275e-5,2.2916988632259907e-8,0.0012136512717100716,-1.4770193242323362e-5,2.2766165374691033e-8,0.0012137479589100495,-1.4563974629347552e-5,2.2640665341646183e-8,0.0012137852603573004,-1.4426773355970368e-5,2.255743926778347e-8,0.0012137959093788662,-1.4371343522844578e-5,2.2523883713028728e-8,0.0012138128365966673,-1.439499826481813e-5,2.2538091856692798e-8,0.0012138638400819995,-1.4482668698853964e-5,2.2590762305896745e-8,0.0012139685086682349,-1.4611158244269921e-5,2.2667775734842887e-8,0.0012141370773553156,-1.4753294457875256e-5,2.2752669276880412e-8,0.0012143704447298367,-1.4881339284913565e-5,2.2828655628043122e-8,0.0012146606157735983,-1.4969696583580246e-5,2.2880242761076628e-8,0.0012149911979015464,-1.499739616837105e-5,2.2894754107216863e-8,0.001215338074413792,-1.495094088433912e-5,2.286409075695815e-8,0.0012156709220629822,-1.4827860365214653e-5,2.278691472150337e-8,0.0012159566967008494,-1.4640607873998432e-5,2.2671006872583375e-8,0.0012161661678526474,-1.4419214392042551e-5,2.253482998176492e-8,0.0012162834218881762,-1.4209794962010202e-5,2.2406545421342624e-8,0.001216315642396274,-1.4065845309811994e-5,2.2318651755283653e-8,0.0012162975273846636,-1.4032046896515793e-5,2.229810801795348e-8,0.001216284646636957,-1.412603160851158e-5,2.2355282871068613e-8,0.0012163354726003424,-1.4328040488737538e-5,2.2477767363016963e-8,0.0012164899159747096,-1.4585949126754397e-5,2.263355123417095e-8,0.001216755574130199,-1.4833892797710722e-5,2.278243853374842e-8,0.0012171078245810246,-1.5014490026863692e-5,2.2889603737556964e-8,0.001217501208749591,-1.5094377647005056e-5,2.2935034657986378e-8,0.0012178847630020077,-1.5068934395509631e-5,2.2916347417685273e-8,0.0012182150285436164,-1.4958137548021152e-5,2.2846155074825506e-8,0.0012184640069405344,-1.4797783644600629e-5,2.2746590779909395e-8,0.0012186220505673322,-1.4629683731770791e-5,2.2643235920746163e-8,0.001218696822913379,-1.449297270290909e-5,2.2559801522444672e-8,0.0012187095811834294,-1.4417539138099393e-5,2.2514186857630122e-8,0.0012186898663968694,-1.4420061297596525e-5,2.2516180023635898e-8,0.0012186696633395672,-1.4502833252156467e-5,2.2566860603567102e-8,0.0012186780735641304,-1.4655108434294776e-5,2.2659490899290508e-8,0.0012187372918174148,-1.4856253456001961e-5,2.2781443114298367e-8,0.001218860273629298,-1.5079824490775369e-5,2.2916635639418696e-8,0.0012190500435946263,-1.5297700051893458e-5,2.3047988343221898e-8,0.001219300200263371,-1.548365519236493e-5,2.3159560794279936e-8,0.0012195960618367548,-1.5616237415079354e-5,2.3238309613797606e-8,0.0012199161265676276,-1.568118550987916e-5,2.3275603178996437e-8,0.0012202338545077081,-1.567373100870673e-5,2.326866879195279e-8,0.0012205201561264112,-1.560100091808706e-5,2.3222067337371707e-8,0.001220747382989795,-1.5484226141098953e-5,2.3148995007320677e-8,0.0012208955835540899,-1.535941411892994e-5,2.3071605072069785e-8,0.0012209607427107806,-1.5274050539459638e-5,2.3018902382756045e-8,0.001220962475274646,-1.5277280997782236e-5,2.3020705792687032e-8,0.0012209458731045407,-1.5403436960660497e-5,2.309762894932575e-8,0.0012209717976255354,-1.565448470536381e-5,2.3250476497938733e-8,0.0012210955463632595,-1.5992317511104423e-5,2.345566341649283e-8,0.0012213435678971353,-1.634934524496698e-5,2.367175263118225e-8,0.0012217022640911984,-1.6653999885394203e-5,2.3855040758167472e-8,0.0012221254162641652,-1.685673242853055e-5,2.397543609100118e-8,0.0012225539172616843,-1.694295513018085e-5,2.4024369111537456e-8,0.0012229355612905532,-1.6930207344080828e-5,2.4013018459709848e-8,0.0012232368258948774,-1.6856088422204816e-5,2.3964815471614588e-8,0.001223445818883135,-1.6764870074623695e-5,2.3907108196114857e-8,0.0012235694616662836,-1.66972195773145e-5,2.3864781052871904e-8,0.0012236282176459417,-1.668400111843338e-5,2.3856473140188308e-8,0.0012236504409797394,-1.6743379709783217e-5,2.3892909894168513e-8,0.0012236671763620997,-1.6880175503808295e-5,2.3976645895061022e-8,0.001223707624433692,-1.708683221483701e-5,2.4102766441136323e-8,0.0012237954317209335,-1.734565340062886e-5,2.426029685357651e-8,0.0012239459921608604,-1.7631973134540477e-5,2.4434117926847972e-8,0.0012241649213519893,-1.791791608308859e-5,2.4607207076905056e-8,0.0012244478183697678,-1.817632574317451e-5,2.476299133590999e-8,0.0012247812244358886,-1.838435464330882e-5,2.4887533086232756e-8,0.0012251444556581857,-1.8526399189167512e-5,2.4971356499031972e-8,0.001225512030680893,-1.8596356874691012e-5,2.5010875116620252e-8,0.0012258566090267735,-1.8599249204608337e-5,2.500940666446154e-8,0.0012261525206215848,-1.8552184327634754e-5,2.4977727871947743e-8,0.0012263801754533244,-1.8484389126531722e-5,2.4934001023126065e-8,0.001226531589440995,-1.8435353897332787e-5,2.4902521731442044e-8,0.0012266163824655456,-1.844942436845583e-5,2.4910327037782435e-8,0.0012266658987470957,-1.8565429063659797e-5,2.498085133256966e-8,0.0012267312754294553,-1.880207278591228e-5,2.5125090674904964e-8,0.0012268713258371598,-1.914430998630717e-5,2.533341535608457e-8,0.001227131022819862,-1.954022969406463e-5,2.557377342250434e-8,0.0012275202373195173,-1.991570456003484e-5,2.5800673545950185e-8,0.0012280066605481112,-2.0202550073462475e-5,2.5972399157529153e-8,0.0012285289260753722,-2.036442274620531e-5,2.6066887113834473e-8,0.0012290215337736447,-2.0405843598096857e-5,2.608730247250189e-8,0.0012294364792536673,-2.0362831684957532e-5,2.605626237353159e-8,0.0012297525480403702,-2.0285001528169813e-5,2.600470001447718e-8,0.001229973287643303,-2.0219675206655426e-5,2.596192790923771e-8,0.00123011945294299,-2.0202577079814657e-5,2.5949829286862887e-8,0.0012302208090147813,-2.0254570927893388e-5,2.598089556577197e-8,0.001230309575850642,-2.0382079862008366e-5,2.6058620701201978e-8,0.0012304158345859968,-2.0579100696291248e-5,2.6178889594627654e-8,0.0012305643517482184,-2.0829746668818747e-5,2.6331638580619262e-8,0.0012307723235892732,-2.1111062515209374e-5,2.6502607204116547e-8,0.0012310478548748765,-2.1396114777007075e-5,2.6675202086625746e-8,0.0012313891899758615,-2.1657391046044656e-5,2.6832534064826254e-8,0.0012317848985939483,-2.187044513583133e-5,2.6959629716658373e-8,0.001232215249623264,-2.2017430944470345e-5,2.7045614719736176e-8,0.0012326547447966258,-2.209001773221379e-5,2.7085542859440893e-8,0.0012330755592392312,-2.2091326924775106e-5,2.70816135899996e-8,0.0012334516279752959,-2.203663011034868e-5,2.7043580150642033e-8,0.001233763101802164,-2.1952544155669515e-5,2.6988170698065287e-8,0.001234000846053606,-2.1874499915341305e-5,2.6937404354593894e-8,0.0012341705639102628,-2.184212653370876e-5,2.691563704449534e-8,0.0012342956223987628,-2.1891979650956894e-5,2.6945050302677308e-8,0.001234416688585595,-2.2047557895417835e-5,2.7039585964648845e-8,0.0012345855888722889,-2.23083766412273e-5,2.719839449139654e-8,0.0012348517249173988,-2.2642708147870215e-5,2.7401545144008608e-8,0.0012352433616983397,-2.2990593392258627e-5,2.7611962377998624e-8,0.0012357521897338616,-2.328103233247334e-5,2.778596961972363e-8,0.0012363319390749912,-2.3458241076732956e-5,2.7889391237730747e-8,0.001236914832205126,-2.3503051358274284e-5,2.7910738893106944e-8,0.0012374372602634584,-2.34370143285074e-5,2.7863779646029196e-8,0.0012378600978094599,-2.3308844078715344e-5,2.7779123129400366e-8,0.001238175025995959,-2.3173834169043024e-5,2.7691345091404345e-8,0.0012383987375117022,-2.3077516654817154e-5,2.7628715793488518e-8,0.0012385621901050622,-2.304804267920002e-5,2.7608434146434345e-8,0.001238700730871274,-2.3095701387628564e-5,2.7636418998067664e-8,0.0012388473917175444,-2.321606101218933e-5,2.7709418024290113e-8,0.0012390291726658905,-2.339397590953754e-5,2.781763697063455e-8,0.001239265187271221,-2.3607198404592336e-5,2.7947049692492793e-8,0.0012395656932513142,-2.3829477290720274e-5,2.808131142382676e-8,0.001239931567574002,-2.4033454791804963e-5,2.8203502070202986e-8,0.001240354197034772,-2.419368952870141e-5,2.8297948187087624e-8,0.0012408160639877112,-2.4289979933212816e-5,2.835226322126063e-8,0.0012412924936616241,-2.431076507997636e-5,2.835947104322042e-8,0.001241754847581157,-2.4255949556786933e-5,2.8319783468064274e-8,0.0012421750027906508,-2.413837942889537e-5,2.8241514856497743e-8,0.0012425305735050856,-2.398330917104594e-5,2.8140695039591662e-8,0.001242810041407821,-2.3825431793646963e-5,2.803911624686781e-8,0.0012430167548026835,-2.3703494765039817e-5,2.796086702784852e-8,0.0012431707595330977,-2.3653019187846447e-5,2.792773776976358e-8,0.0012433075282853305,-2.3697965910599013e-5,2.7954078812129726e-8,0.0012434727173970845,-2.3842679769997022e-5,2.8041949740427052e-8,0.001243712463212426,-2.4066405760676784e-5,2.8177927469785303e-8,0.0012440601035040232,-2.432362427984792e-5,2.8333484399655164e-8,0.0012445228361571915,-2.4553159928907133e-5,2.84706844897476e-8,0.001245074558848186,-2.469598742631698e-5,2.8553156726817562e-8,0.0012456608862963842,-2.4715959349908565e-5,2.8558858281151512e-8,0.001246216708050109,-2.4613291013679496e-5,2.8488399775580813e-8,0.001246688489499405,-2.4423038202625592e-5,2.8364074640010765e-8,0.0012470500759516796,-2.4199802086790886e-5,2.8220269933140577e-8,0.0012473056186578205,-2.3997923243581362e-5,2.8091007067191165e-8,0.0012474816718979766,-2.3856832628854112e-5,2.8000725693752732e-8,0.0012476152297567857,-2.3795467178827526e-5,2.796083255759579e-8,0.0012477434727424471,-2.3813936544781482e-5,2.797087896365848e-8,0.0012478974825907967,-2.3898538079999737e-5,2.802185450423327e-8,0.0012480994715242364,-2.4027063105389873e-5,2.8099607177080368e-8,0.0012483620860405254,-2.4173063448967265e-5,2.8187527217003586e-8,0.0012486885425988454,-2.4309038643380227e-5,2.8268487756534477e-8,0.0012490729604937483,-2.4409048929309893e-5,2.832640747738927e-8,0.0012495008229754566,-2.4451320673572244e-5,2.8347832218140762e-8,0.0012499499393055541,-2.442119484453209e-5,2.8323772418069707e-8,0.0012503925365264328,-2.4314275664468087e-5,2.8251695604431464e-8,0.0012507990005257714,-2.4139030867608762e-5,2.8137171704645568e-8,0.001251143262636996,-2.391768914256767e-5,2.7994415164953935e-8,0.0012514090363835088,-2.368426701735876e-5,2.7844976389814205e-8,0.0012515953110546903,-2.3479107716070564e-5,2.771421375274228e-8,0.0012517191350728285,-2.3340474530020665e-5,2.7625933544735366e-8,0.0012518141482856812,-2.3295030625602135e-5,2.7596407518891168e-8,0.00125192444142756,-2.334975383124914e-5,2.7629401271552236e-8,0.0012520946514939732,-2.348776438369355e-5,2.7713746828686006e-8,0.0012523583631477433,-2.3669877510084097e-5,2.7824516476769492e-8,0.0012527277286170939,-2.38425421336231e-5,2.7928118057615044e-8,0.0012531876409788102,-2.3951178423680048e-5,2.7990642199443437e-8,0.0012536974445180235,-2.395580939174183e-5,2.7987543221912417e-8,0.0012542012794675764,-2.3843814405731823e-5,2.7911488512020674e-8,0.0012546444912580575,-2.3634230998913443e-5,2.7774939914552914e-8,0.0012549898708866338,-2.337098949679818e-5,2.760582318235473e-8,0.0012552269467497428,-2.31078977299701e-5,2.7438033142794907e-8,0.0012553712247767674,-2.2892283909759187e-5,2.730112602560997e-8,0.001255455539610628,-2.2753872111695107e-5,2.7213370434487382e-8,0.0012555187275849952,-2.2701515499694785e-5,2.7179817449245153e-8,0.0012555962675502516,-2.2726235663317327e-5,2.719436714414756e-8,0.0012557148843836085,-2.280713457832666e-5,2.724360162183075e-8,0.001255890687072248,-2.2917285638186973e-5,2.7310518757386415e-8,0.001256129398595488,-2.3028282424195017e-5,2.7377340966423323e-8,0.0012564273842037858,-2.3113398094334926e-5,2.742741470506988e-8,0.001256772748129926,-2.3149894992070267e-5,2.7446594516070987e-8,0.0012571463545275083,-2.3121157899020574e-5,2.7424565261140528e-8,0.0012575231640768645,-2.3019131476612913e-5,2.7356401669610725e-8,0.001257874612111306,-2.284700440575688e-5,2.7244296214391676e-8,0.0012581727000068063,-2.2621361371800596e-5,2.7098925268443296e-8,0.0012583959412701018,-2.2372382207858894e-5,2.6939533510837228e-8,0.0012585362273141267,-2.2140433227805133e-5,2.6791698499354605e-8,0.0012586042852673735,-2.196814660205169e-5,2.6682241581275458e-8,0.0012586306549829782,-2.1889126806689826e-5,2.6632055608261722e-8,0.0012586601311620252,-2.1916855981065547e-5,2.664914718129419e-8,0.0012587403517282045,-2.2038399148444123e-5,2.672480002912566e-8,0.0012589081308858302,-2.2216070066749486e-5,2.6834805998698666e-8,0.001259178401966701,-2.2397001174915816e-5,2.6945651229235044e-8,0.0012595395662738137,-2.2527436600423014e-5,2.7023591961309044e-8,0.0012599565073977735,-2.2567114697326255e-5,2.704368259177285e-8,0.0012603800277351954,-2.249955563699239e-5,2.6996141762203254e-8,0.0012607598300570521,-2.2335587057110256e-5,2.6888416016816608e-8,0.0012610573544834757,-2.2109330675960614e-5,2.674249136516303e-8,0.0012612547690560867,-2.186800615213288e-5,2.6588343449294578e-8,0.0012613575758832708,-2.1658922356915117e-5,2.6455686208838244e-8,0.001261390591051946,-2.151793017938794e-5,2.6366737636690552e-8,0.00126138947197204,-2.146269522919313e-5,2.6332111564846554e-8,0.001261391218294045,-2.1491868003257122e-5,2.635046486548411e-8,0.0012614266428808319,-2.15888902989852e-5,2.641103229929555e-8,0.0012615162216082754,-2.1727952954471072e-5,2.6497431575663864e-8,0.0012616690635331466,-2.187983048108349e-5,2.6591299115901463e-8,0.0012618838439774989,-2.2016383972793845e-5,2.6675035116793972e-8,0.0012621505235054361,-2.2113585277586392e-5,2.6733624171416905e-8,0.0012624521180612978,-2.2153524616584108e-5,2.6755867859438524e-8,0.00126276632102878,-2.2126043067001626e-5,2.6735440962205498e-8,0.0012630672801498218,-2.2030481309721585e-5,2.6672051476437688e-8,0.0012633282001385453,-2.1877576094169603e-5,2.6572675677080794e-8,0.0012635254927225803,-2.1690821374928485e-5,2.6452399559931268e-8,0.0012636447200479173,-2.150581193844573e-5,2.6333924961939377e-8,0.0012636873694712005,-2.1365630790647973e-5,2.62445471842398e-8,0.001263675689203714,-2.1311092535360135e-5,2.6209908895091034e-8,0.001263651583389443,-2.1367352542053175e-5,2.624553285893486e-8,0.0012636669236140193,-2.1532112858698217e-5,2.6349454998586358e-8,0.0012637672086514252,-2.1772261625864342e-5,2.6500247615930587e-8,0.0012639754671761418,-2.2032532614826404e-5,2.666264158225693e-8,0.001264284192241647,-2.2253087100624153e-5,2.679874434506354e-8,0.0012646586664950854,-2.238799657886381e-5,2.687976398338216e-8,0.001265048952007261,-2.2417146448438736e-5,2.68935001124463e-8,0.0012654046375396352,-2.2348637976309602e-5,2.6845743928639548e-8,0.001265687166465729,-2.2213199967963506e-5,2.6756558234120423e-8,0.0012658770847539854,-2.205411237295862e-5,2.6653709859809845e-8,0.0012659757694239995,-2.1916095275190147e-5,2.6565519875628988e-8,0.0012660024992930466,-2.1835733466883678e-5,2.6514812194613012e-8,0.0012659883363219941,-2.183504682483079e-5,2.6514975770749016e-8,0.001265968564043513,-2.1918984668542527e-5,2.656857289282304e-8,0.0012659755016867593,-2.2076758125450218e-5,2.666835322071545e-8,0.0012660331867845541,-2.2286013655878877e-5,2.6799978389807436e-8,0.0012661546447266811,-2.2518299270481508e-5,2.6945459630868268e-8,0.0012663416011667139,-2.2744366594706175e-5,2.708642168120064e-8,0.0012665859156780787,-2.2938374403736194e-5,2.720666230998871e-8,0.0012668718340026004,-2.308069895407578e-5,2.729387607334129e-8,0.0012671783608418628,-2.315961813842999e-5,2.7340731279403066e-8,0.0012674815022603028,-2.3172399530941718e-5,2.734561490457562e-8,0.0012677565540440863,-2.3126206424985553e-5,2.7313258391016998e-8,0.0012679809078356128,-2.3038880813856224e-5,2.7255232108115096e-8,0.0012681379667225815,-2.293909764723427e-5,2.718996925380211e-8,0.001268222410981478,-2.2864607647463806e-5,2.714153350665855e-8,0.0012682458991817589,-2.285674137919671e-5,2.7136033101520892e-8,0.0012682404442877298,-2.294997743206441e-5,2.7194986348181077e-8,0.0012682552261359058,-2.3158135615329883e-5,2.732665258099185e-8,0.0012683438357439264,-2.3463184370203866e-5,2.751908579692521e-8,0.0012685445912806244,-2.381508922712379e-5,2.774017528295886e-8,0.0012688635218484556,-2.4146813037913072e-5,2.794723304902699e-8,0.0012692705636366676,-2.439852622614259e-5,2.8102383947438925e-8,0.0012697114811386142,-2.453808374801821e-5,2.818558432617654e-8,0.0012701278926337827,-2.456798692026666e-5,2.8199025785485304E-08,0.0012704747097447653,-2.451874191640579e-5,2.8162796580241977e-8,0.0012707290511519327,-2.4435369716645258e-5,2.8106093111468987e-8,0.00127089082105009,-2.4363968771578763e-5,2.8058468845464867e-8,0.0012709780445711418,-2.4341966719446985e-5,2.804354865594735e-8,0.0012710200656264432,-2.439279816146933e-5,2.8075722588673664e-8,0.001271050641705294,-2.4524258495752033e-5,2.8159296031538897e-8,0.0012711018882705825,-2.4729497552478398e-5,2.8289339641440367e-8,0.0012711994916664129,-2.4989923105568873e-5,2.8453680377103202e-8,0.0012713595362361608,-2.5279401250563086e-5,2.863560229913506e-8,0.0012715871496310693,-2.5568988582094783e-5,2.8816787886148046e-8,0.0012718768697763392,-2.5831442116825033e-5,2.898007870930307e-8,0.0012722144010838205,-2.6044933071783422e-5,2.911175618979125e-8,0.0012725792455093397,-2.619559555621507e-5,2.9203144635270495e-8,0.001272947626786604,-2.627888618297095e-5,2.9251514544716158e-8,0.0012732953571026233,-2.630006763486035e-5,2.9260441855358742e-8,0.0012736006475878774,-2.6274127894061375e-5,2.9239767557704245e-8,0.0012738470763975945,-2.6225193166156763e-5,2.9205161411702542e-8,0.0012740270157430664,-2.6185124088254545e-5,2.9177104177386633e-8,0.0012741455908807501,-2.6190414429344983e-5,2.9178785414269988e-8,0.001274224316427514,-2.62760887589678e-5,2.9232165679184445e-8,0.0012743020615554482,-2.646586880061536e-5,2.935178899471236e-8,0.001274429803943883,-2.6760187731966526e-5,2.9537333686976303e-8,0.0012746566213436674,-2.712756647179489e-5,2.976831346906732e-8,0.0012750096385508432,-2.7507546288788524e-5,3.0006033761210905e-8,0.0012754781610912526,-2.7829406560484464e-5,3.020548189174035e-8,0.001276013858158292,-2.8039650417442057e-5,3.033279425528792e-8,0.0012765492750488386,-2.812244159011328e-5,3.0378310890776146e-8,0.001277023642649741,-2.810137217333263e-5,3.035772861075833e-8,0.0012774012466509133,-2.802473521408781e-5,3.0302589247883327e-8,0.0012776758745853178,-2.7945890596938154e-5,3.024749497268067e-8,0.0012778647758220772,-2.79085430819153e-5,3.022048134829472e-8,0.001277998800793535,-2.793980262467159e-5,3.0238533240266736e-8,0.0012781132813501053,-2.804931557698271e-5,3.0307171318946226e-8,0.0012782413834105137,-2.8231718287190717e-5,3.042226138414893e-8,0.0012784098972853835,-2.8470294804898002e-5,3.0572571320992245e-8,0.0012786367518833218,-2.8740849073584766e-5,3.074235593251752e-8,0.0012789297433653374,-2.9015619036969142e-5,3.091384476109464e-8,0.0012792863683563302,-2.9267159831319898e-5,3.10696300382083e-8,0.0012796947422641365,-2.9471974501639326e-5,3.119488465856777e-8,0.0012801355484260517,-2.9613619515355336e-5,3.127929159311357e-8,0.0012805848824221722,-2.9684936207415627e-5,3.131847898599492e-8,0.001281017638662968,-2.968910490383866e-5,3.131473845451968e-8,0.0012814109964758992,-2.963950002011583e-5,3.1276957457645865e-8,0.0012817477332364437,-2.9558493616968298e-5,3.1219814796159154e-8,0.0012820192456920046,-2.9475284638605605e-5,3.116227933862801e-8,0.001282228197848576,-2.9422701983244574e-5,3.1125420021043346e-8,0.001282390606699797,-2.943268070189973e-5,3.112941115271035e-8,0.0012825366317504978,-2.9529907636028162e-5,3.118948519163852e-8,0.0012827084194776662,-2.9723676059624966e-5,3.131088059813362e-8,0.0012829528288665348,-2.9999700516418604e-5,3.1483844908667825e-8,0.0012833079130263225,-3.0316201547194518e-5,3.168132285335997e-8,0.0012837859765342673,-3.061020073146328e-5,3.1863018658290956e-8,0.0012843618450062628,-3.081684226297564e-5,3.198765635324121e-8,0.0012849765874220782,-3.089521995994752e-5,3.20294184946202e-8,0.0012855586318208988,-3.084588285428632e-5,3.1989175468429604e-8,0.0012860510837547415,-3.0708540178211655e-5,3.189304549666774e-8,0.001286429391721135,-3.054259065273131e-5,3.1779790208841204e-8,0.0012867022080911398,-3.0404062537684042e-5,3.1685762437681995e-8,0.001286900377279203,-3.0330777585708804e-5,3.163518182633183e-8,0.001287063300987379,-3.0338387143386424e-5,3.163759774986754e-8,0.001287228565364857,-3.042354922701865e-5,3.1690131287687944e-8,0.0012874261434639106,-3.056970632894269e-5,3.1781451277475414e-8,0.0012876761011276928,-3.075264889043229e-5,3.189554315979008e-8,0.001287988197340863,-3.094489886686548e-5,3.201458498978887e-8,0.0012883622633117567,-3.111913753711612e-5,3.2121090216733314e-8,0.0012887890246263095,-3.125116421789353e-5,3.219969606469643e-8,0.0012892514436496775,-3.1322610080414284e-5,3.223881626240157e-8,0.0012897267572810904,-3.132337450102907e-5,3.223217751474067e-8,0.0012901893827250341,-3.125348366035541e-5,3.2180042784654345e-8,0.0012906146194111945,-3.1123848609875844e-5,3.208974051574626e-8,0.0012909826969805158,-3.0955505293186115e-5,3.197517438868874e-8,0.0012912825565626971,-3.0777215881050795e-5,3.185520292845642e-8,0.0012915147687625943,-3.0621540642874033e-5,3.175097395022615e-8,0.001291693035842951,-3.0519716537336427E-05,3.168249183610786e-8,0.0012918438362249742,-3.0495841413462402e-5,3.1664819795655e-8,0.0012920037928547566,-3.056087693364674e-5,3.1704304670211076e-8,0.0012922141715474165,-3.0707282053063105e-5,3.17953364867465e-8,0.001292512034520009,-3.090599709338316e-5,3.1918661500173786e-8,0.0012929187002381516,-3.110850773894603e-5,3.2042880122178096e-8,0.0012934285950733568,-3.1256693423193994e-5,3.213078673276235e-8,0.0012940044453168913,-3.1300498297250774e-5,3.215061328521406e-8,0.001294584877820033,-3.12176444133966e-5,3.20885883560331e-8,0.001295104589766634,-3.102462475607171e-5,3.195596529494129e-8,0.0012955179603695564,-3.077085167751126e-5,3.178521309227125e-8,0.0012958131840410975,-3.0518540566581096e-5,3.1616916955709714e-8,0.0012960105999187787,-3.032026641965267e-5,3.148511085415194e-8,0.0012961495978159076,-3.0205433323736027e-5,3.140845109678617e-8,0.0012962734470908504,-3.0178565979806494e-5,3.1389212768773746e-8,0.0012964186126221632,-3.022527856628844e-5,3.141738252834504e-8,0.0012966099467786687,-3.032037295760454e-5,3.1476126820308665e-8,0.0012968600751613467,-3.043465498738407e-5,3.154631955101938e-8,0.0012971707339509185,-3.0539529403013107e-5,3.160949484610287e-8,0.0012975345391934867,-3.0609886172662965e-5,3.164960498486348e-8,0.0012979366525891216,-3.062613758462698e-5,3.1654217987039235e-8,0.0012983564533401342,-3.057599296156603e-5,3.1615600298714555e-8,0.0012987695840761062,-3.0456167864014533e-5,3.1531828857941956e-8,0.0012991507884455799,-3.027379091331488e-5,3.140775068646107e-8,0.0012994777236449333,-3.004683999448522e-5,3.125530194558217e-8,0.0012997353921117309,-2.9802813505353085e-5,3.1092622133109445e-8,0.0012999202861004046,-2.9575139003558806e-5,3.09416264273142e-8,0.0013000430270444395,-2.93974130243819e-5,3.0824133092212875e-8,0.001300128331498118,-2.9296350396882437e-5,3.075718715872455e-8,0.0013002116679433546,-2.928500804947685e-5,3.074866956412388e-8,0.0013003328193243616,-2.935801434543197e-5,3.0794343521651624e-8,0.001300527308605543,-2.9490231267340253e-5,3.0877225135393917e-8,0.0013008171756119307,-2.9639869058835446e-5,3.0969838317194383e-8,0.0013012031591031939,-2.9756515314625574e-5,3.10395465251122e-8,0.0013016609455879465,-2.9793446563434323e-5,3.105650235031395e-8,0.0013021442562541905,-2.972172931898944e-5,3.100263591424007e-8,0.0013025961177511457,-2.9541337275106654e-5,3.087867894617946e-8,0.0013029660006317406,-2.9283509335878423e-5,3.0705543544897195e-8,0.0013032261586196996,-2.9001308736517474e-5,3.051808034793436e-8,0.0013033793833759004,-2.875164122635431e-5,3.035331118242153e-8,0.0013034547749617115,-2.8577237008618275e-5,3.023868954419752e-8,0.0013034950005774671,-2.8496554952853205e-5,3.018561791167246e-8,0.0013035422626375217,-2.8503927091162528e-5,3.018972942257647e-8,0.0013036286487182313,-2.8576659673191224e-5,3.023572044825167e-8,0.0013037723920898197,-2.8683998777921855e-5,3.0303320007544866e-8,0.0013039784710675347,-2.8794434907111588e-5,3.037204952208462e-8,0.0013042411712836108,-2.8880283437659195e-5,3.042410362765577e-8,0.0013045469059940415,-2.8920083977942182e-5,3.044577741719525e-8,0.0013048765892900785,-2.8899827777303695e-5,3.042817208710491e-8,0.0013052076096280716,-2.8813836177220682e-5,3.0367751697282956e-8,0.0013055158699504063,-2.8665686201342626e-5,3.026699500311816e-8,0.0013057784723598796,-2.8469027833693583e-5,3.0134989400730604e-8,0.0013059774012722158,-2.824758312302742e-5,2.998744624708401e-8,0.0013061039917527009,-2.803329661145913e-5,2.984543622349855e-8,0.0013061631500154798,-2.786174715368294e-5,2.973227959525612e-8,0.0013061755169066931,-2.7764752904717206e-5,2.966860348764004e-8,0.0013061756394885842,-2.7761595595907e-5,2.9666567318660748e-8,0.0013062052931786697,-2.785175086959786e-5,2.972518749832201e-8,0.001306303142538855,-2.801230059159129e-5,2.9828826603746476e-8,0.0013064938194895942,-2.820182285028999e-5,2.9949955265754234e-8,0.001306780086361943,-2.8370168467178228e-5,3.005571106771042e-8,0.0013071407644421912,-2.8471378373462444e-5,3.0116392578181026e-8,0.0013075352201250116,-2.8475996159682643e-5,3.011342304590286e-8,0.001307913334487316,-2.8379292346448963e-5,3.0044539506056616e-8,0.0013082284553436203,-2.820295608258615e-5,2.992467194139616e-8,0.001308449795111905,-2.798934380814309e-5,2.9781980996995586e-8,0.0013085703641908598,-2.7789555942438875e-5,2.9649940584985727e-8,0.0013086075992558702,-2.7649081856834136e-5,2.9557946510256037e-8,0.0013085965713823258,-2.7596068441511594e-5,2.9523765739778143e-8,0.001308578775603071,-2.763613069992761e-5,2.9550353019012925e-8,0.0013085910545795772,-2.7754483402330733e-5,2.9627464816654964e-8,0.0013086582864577261,-2.7923038311927625e-5,2.973644409629548e-8,0.00130879097813508,-2.810881146934206e-5,2.985573633256056e-8,0.0013089866559391336,-2.8280794299983097e-5,2.9965288371083946e-8,0.0013092330853364449,-2.841421177594859e-5,3.004918959647898e-8,0.0013095117218239086,-2.849249915857971e-5,3.00968495932514e-8,0.0013098006051115334,-2.8507901829533638e-5,3.010335322333937e-8,0.0013100766331532816,-2.8461574612671678e-5,3.006956699423517e-8,0.00131031764281404,-2.8363692896845595e-5,3.0002285569679514e-8,0.0013105049028917662,-2.823351948220192e-5,2.991431821194102e-8,0.0013106264457913824,-2.809877946612421e-5,2.9824048280105456e-8,0.001310681133427025,-2.7993271777071674e-5,2.9753766780009736e-8,0.0013106824426351005,-2.795161269268233e-5,2.972610709291234e-8,0.0013106598420135267,-2.8000824017845768e-5,2.975846481850516e-8,0.001310655166280242,-2.8150479328616627e-5,2.9856575254154354e-8,0.0013107127876955784,-2.8385509043680695e-5,3.000993471753322e-8,0.0013108657814568222,-2.866643869990418e-5,3.0192141079751784e-8,0.0013111236756196114,-2.8939129152693387e-5,3.036744088323199e-8,0.0013114677764056418,-2.915104009753794e-5,3.0501486920959236e-8,0.001311856492484787,-2.9267251923133067e-5,3.0571854184595145e-8,0.001312238049311916,-2.9279859822208612e-5,3.057411525864111e-8,0.0013125651169096678,-2.9208198159179714e-5,3.0521802359526976e-8,0.0013128064021552001,-2.909142250826646e-5,3.044129361786551e-8,0.0013129525886068233,-2.897698933927629e-5,3.0364030849243177e-8,0.001313016206816826,-2.890865807546817e-5,3.031854722956662e-8,0.001313026461668143,-2.8916887043806896e-5,3.0324238748257375e-8,0.0013130209243820167,-2.901349026915853e-5,3.0388075426164644e-8,0.0013130364508609068,-2.91912467162573e-5,3.050460897562148e-8,0.0013131016267059507,-2.9427863667728573e-5,3.0658773423636455e-8,0.00131323234339437,-2.9692576163541312e-5,3.0830280966021656e-8,0.0013134309224520154,-2.9953194080713292e-5,3.099817761610996e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json new file mode 100644 index 000000000..e8e2db514 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":14000,"numberOfSamples":1000,"samples":[0.0013136880538731968,-3.0181825300251084e-5,3.1144455018197914e-8,0.0013139862307697747,-3.0358458604268804e-5,3.125626468859012e-8,0.0013143034381558063,-3.0472498704118995e-5,3.1326857923882795e-8,0.001314616342296335,-3.0522889122674205e-5,3.135568412117831e-8,0.0013149028238326915,-3.051757614543907e-5,3.134810730752583e-8,0.0013151441476950397,-3.0472812693602606e-5,3.1315005489895234e-8,0.001315327245423572,-3.041233669157899e-5,3.127221966442859e-8,0.0013154474985632677,-3.0365940022199845e-5,3.1239522569258994e-8,0.0013155119761371786,-3.0366482616605727e-5,3.123852579233063e-8,0.0013155421786821661,-3.044428590458291e-5,3.1288903751562086e-8,0.0013155741637083083,-3.061859253490029e-5,3.140279579367739e-8,0.0013156532826805987,-3.08878545724263e-5,3.15785553459714e-8,0.0013158221093964287,-3.122350814634265e-5,3.179684474210843e-8,0.0013161043666861684,-3.1573152017452694e-5,3.202287220092828e-8,0.001316492562279381,-3.187552478285449e-5,3.221630534507893e-8,0.0013169475071545026,-3.2081986318948946e-5,3.234541530079332e-8,0.0013174114482328236,-3.217362581767834e-5,3.2398333198900105e-8,0.0013178279759007432,-3.216549962188907e-5,3.238578137269618e-8,0.0013181587209702065,-3.209786877058771e-5,3.233512178519737e-8,0.0013183908584672483,-3.202101456924127e-5,3.2280078366949867e-8,0.0013185355723118594,-3.198087692229784e-5,3.22510415181099e-8,0.0013186210256550192,-3.200948903377424e-5,3.226871171627078e-8,0.001318683516304464,-3.212087078817048e-5,3.2341550899422565e-8,0.0013187592325329092,-3.2311333689063695e-5,3.246626921888799e-8,0.0013188777975085585,-3.256278527721231e-5,3.263027897225073e-8,0.0013190580943835157,-3.28478210560236e-5,3.281520552707126e-8,0.001319306537685271,-3.3135522599053245e-5,3.30007052286256e-8,0.0013196176305973269,-3.339691167788335e-5,3.3167938459672674e-8,0.0013199762931723731,-3.360923943949643e-5,3.330224076991175e-8,0.001320361240591444,-3.3758679883073964e-5,3.339478932604852e-8,0.0013207486407314094,-3.3841371491741154e-5,3.3443266039948134e-8,0.0013211154170834028,-3.3863122696377714e-5,3.345170814905867e-8,0.0013214419486963593,-3.3838325595684376e-5,3.342984862739796e-8,0.0013217143059939618,-3.3788485178276064e-5,3.3392152957732015e-8,0.0013219262892678202,-3.374042925569602e-5,3.3356565064026065e-8,0.0013220814837101608,-3.37239298755937e-5,3.334280561542386e-8,0.0013221952658236343,-3.3768093745891034e-5,3.336987271475884e-8,0.0013222959339579021,-3.389572813238187e-5,3.345230413051685e-8,0.0013224231012386285,-3.411559264521433e-5,3.359518483099222e-8,0.001322620987373266,-3.44143314836092e-5,3.378904291433436e-8,0.0013229254974994617,-3.47525377055976e-5,3.4007455453146385e-8,0.0013233481259613213,-3.507078420316715e-5,3.421110391244622e-8,0.0013238651644779758,-3.5307915680853196e-5,3.435980179531848e-8,0.0013244214578083684,-3.5424988893193025e-5,3.4428250117923195e-8,0.0013249498096669955,-3.5421322382391885e-5,3.441665080515855e-8,0.0013253957656545127,-3.533284530570563e-5,3.4349593606930406e-8,0.0013257341054285624,-3.521518782185486e-5,3.4264687362774436e-8,0.0013259708733802966,-3.5122901891955616e-5,3.4198504380576074e-8,0.0013261345823387194,-3.509485421874728e-5,3.4176685340857736e-8,0.0013262639590043055,-3.514877227589115e-5,3.421034115508173e-8,0.0013263974759466818,-3.5282692478288204e-5,3.42972534612874e-8,0.0013265664975942637,-3.547980948220061e-5,3.4425417060696266e-8,0.00132679174008558,-3.5714173837029465e-5,3.457707337361339e-8,0.0013270820868991236,-3.595606011854193e-5,3.473236215303623e-8,0.0013274350277215283,-3.617667618018595e-5,3.487237396855363e-8,0.0013278383205704806,-3.6352045676457e-5,3.4981566469251094e-8,0.0013282725585155749,-3.6465885830951754e-5,3.504952018493835e-8,0.0013287143399232126,-3.651136884131447e-5,3.507202780552796e-8,0.001329139723468503,-3.649166207236073e-5,3.5051459488144146e-8,0.0013295275370495275,-3.6419245769639135e-5,3.499636143139478e-8,0.0013298621741601225,-3.631427873602864e-5,3.492040029054349e-8,0.0013301357987788196,-3.620233676919433e-5,3.484081953074903e-8,0.0013303500182077856,-3.6111625895291846e-5,3.4776475543805855e-8,0.0013305170072328,-3.606960581815073e-5,3.4745462642883064e-8,0.0013306599051258836,-3.609882203418703e-5,3.4762278550856455e-8,0.0013308118536023116,-3.621166286686944e-5,3.483441417239421e-8,0.0013310123518564367,-3.64043217054422e-5,3.495855682409469e-8,0.0013312994223816388,-3.6651762152887505e-5,3.511751481890027e-8,0.0013316973518746693,-3.6907391838432765e-5,3.528018149292224e-8,0.0013322032136629622,-3.711186898684884e-5,3.540737536800615e-8,0.0013327798493111566,-3.721219549322923e-5,3.546437127639159e-8,0.0013333634934342639,-3.718420813249119e-5,3.543571757580381e-8,0.001333886255019829,-3.70450465515009e-5,3.53335093009964e-8,0.0013343019613464686,-3.6846215847581066e-5,3.5192757078025216e-8,0.001334600413137058,-3.6651362298198277e-5,3.505642654975122e-8,0.0013348042208097524,-3.6512872822752915e-5,3.495958564720737e-8,0.0013349544109773996,-3.6458841744971036e-5,3.49205708479965e-8,0.0013350949386154267,-3.649215529746224e-5,3.49404840851344e-8,0.0013352621732775469,-3.659679818886342e-5,3.500770195061645e-8,0.001335480179315456,-3.6746003522191745e-5,3.510363508802379e-8,0.0013357600358690303,-3.6909212409168185e-5,3.520756323936493e-8,0.0013361011544938224,-3.705705068984642e-5,3.52999605336332e-8,0.00133649332519081,-3.7164741980348925e-5,3.536463540591373e-8,0.0013369190829818159,-3.7214510810799346e-5,3.539015342857483e-8,0.0013373563443612583,-3.719721204638616e-5,3.537079341232845e-8,0.0013377813051418917,-3.711323131523201e-5,3.530711046883947e-8,0.0013381715937814552,-3.697254005026054e-5,3.520601101140213e-8,0.0013385094912165925,-3.6793660324817705e-5,3.5080116340020854e-8,0.0013387847813319696,-3.660147627572446e-5,3.494630461274569e-8,0.0013389968351418553,-3.642410292771776e-5,3.482354178926302e-8,0.0013391557003256266,-3.628905404552198e-5,3.473019081800264e-8,0.0013392819820180002,-3.621893946658274e-5,3.468102678374732e-8,0.0013394052631200586,-3.622700347066692e-5,3.468425016446891e-8,0.0013395607383982387,-3.631286700900988e-5,3.473878515860904e-8,0.0013397835600754613,-3.645915330073845e-5,3.483228424044899e-8,0.0013401005623555385,-3.663056453013473e-5,3.494077405219707e-8,0.0013405202232471124,-3.6777887727110934e-5,3.5031461893425745e-8,0.0013410241084409612,-3.684910446392256e-5,3.5070089714356354e-8,0.0013415655317836142,-3.68068037108336e-5,3.503236888286036e-8,0.0013420805713068025,-3.664539114072159e-5,3.491530557749418e-8,0.0013425100358751974,-3.6397470548011556e-5,3.47413920987351e-8,0.00134282186684753,-3.6122771266874264e-5,3.455114282299104e-8,0.0013430210440999052,-3.5884585735838275e-5,3.438718523558038e-8,0.0013431424937006674,-3.5727401868071906e-5,3.427912167202074e-8,0.00134323392387406,-3.5666709476200635e-5,3.423668442759081e-8,0.0013433393957544833,-3.569188452387105e-5,3.425186840423222e-8,0.0013434898472930886,-3.577592172660759e-5,3.430576805004325e-8,0.0013437006458960645,-3.588557734935549e-5,3.4375631883152696e-8,0.0013439733632099559,-3.598872432152733e-5,3.443987682266083e-8,0.0013442990272794215,-3.6058572131738544e-5,3.448082578605249e-8,0.0013446613049089872,-3.6075754726357985e-5,3.44859220020242e-8,0.001345039248616876,-3.6029368037547205e-5,3.444825503332818e-8,0.0013454098213895693,-3.591751673460431e-5,3.436684759254604e-8,0.0013457504724702282,-3.57474829484819e-5,3.424678910825797e-8,0.0013460419605556845,-3.5535332633184876e-5,3.409904369034362e-8,0.0013462713941414768,-3.530453678562293e-5,3.3939575913952353e-8,0.0013464350440412546,-3.5083247688415916e-5,3.3787496601098456e-8,0.001346540218956281,-3.490026072080504e-5,3.366224387151234e-8,0.0013466055506973335,-3.478008498355249e-5,3.358013732940204e-8,0.001346659241019408,-3.4737853074248655e-5,3.355088149022233e-8,0.0013467351263881956,-3.477505002897689e-5,3.3574748237485566e-8,0.0013468668157807983,-3.487707274585662e-5,3.36411293630354e-8,0.0013470805087412794,-3.501350818296307e-5,3.3728992049500143e-8,0.0013473874871725111,-3.5141989537112516e-5,3.3809694862078156e-8,0.0013477779846166242,-3.5216299066590065e-5,3.385250575241212e-8,0.0013482190793279586,-3.5198369687471605e-5,3.3832555330064887e-8,0.001348659613978359,-3.507162618165665e-5,3.3739577083562544e-8,0.001349043468490627,-3.485031268644354e-5,3.358395470384573e-8,0.001349327999366581,-3.4578485620740276e-5,3.3395893343763146e-8,0.0013494994616960665,-3.431622032059404e-5,3.321604676365601e-8,0.001349576900362316,-3.411840812110945e-5,3.3081186820720924e-8,0.0013496024923671088,-3.4016892922365775e-5,3.3012189592066463e-8,0.0013496246279193777,-3.401415154718749e-5,3.300992090644571e-8,0.0013496829179363164,-3.408870967312186e-5,3.305913434321514e-8,0.0013498005419856707,-3.420638364611618e-5,3.313629142245499e-8,0.001349983766265312,-3.433103577998142e-5,3.3216931742549514e-8,0.001350225503188383,-3.443167213616684e-5,3.328041116125517e-8,0.001350509870791549,-3.44857855079198e-5,3.3311987997451824e-8,0.001350816111848709,-3.44802776149318e-5,3.330325655153641e-8,0.0013511215354534733,-3.44113203272646e-5,3.325193674476666e-8,0.0013514038266242718,-3.428394324938091e-5,3.3161588903372553e-8,0.0013516432294084326,-3.41115562702498e-5,3.3041366067246576e-8,0.0013518249947347244,-3.391515061958602e-5,3.29055587983786e-8,0.0013519421489563276,-3.372159161237384e-5,3.277246672853169e-8,0.0013519981162253448,-3.35604192219653e-5,3.2662172488743894e-8,0.0013520082488663807,-3.345899609113347e-5,3.259313778399188e-8,0.0013519991491952143,-3.343655294053388e-5,3.257806735071459e-8,0.0013520049886915973,-3.349849264305731e-5,3.262004101630264e-8,0.0013520609158930905,-3.36328575909331e-5,3.2710241377374956e-8,0.0013521948074782938,-3.3810651240403614e-5,3.2828394204526694e-8,0.0013524194680195325,-3.399070247049815e-5,3.2946301667474426e-8,0.0013527275548078518,-3.412846985252045e-5,3.3033954284171145e-8,0.0013530910516223313,-3.41870260521444e-5,3.306696170857802e-8,0.0013534662186818406,-3.414758958099839e-5,3.303351712767489e-8,0.0013538036921596796,-3.401650121264336e-5,3.293885919569297e-8,0.0013540617630267778,-3.3825695437600704e-5,3.280532715743045e-8,0.0013542189655621978,-3.3625013396523797e-5,3.2666968653528377e-8,0.0013542809896239987,-3.3467679762926974e-5,3.255963827369867e-8,0.0013542783419837156,-3.3394020433318414e-5,3.251003853738814e-8,0.0013542554119995557,-3.342020697923614e-5,3.252828382153754e-8,0.0013542560140103023,-3.3536391035527796e-5,3.2606892142050424e-8,0.0013543116989025482,-3.371353007933651e-5,3.2725642792952345e-8,0.0013544365308802784,-3.391431273365121e-5,3.285910327271554e-8,0.0013546280975285543,-3.410316353858851e-5,3.2983383466057345e-8,0.0013548720539619643,-3.4252552907384106e-5,3.308026489902493e-8,0.001355147353668992,-3.43454908576762e-5,3.313870075252464e-8,0.0013554305468037433,-3.437553330264171e-5,3.315467676927687e-8,0.0013556988011802253,-3.434572357619407e-5,3.313045281129339e-8,0.0013559320038673691,-3.426735815892247e-5,3.30737806614842e-8,0.0013561145343338845,-3.415887769336406e-5,3.299724375590522e-8,0.0013562372346350193,-3.40446430953795e-5,3.291748056072256e-8,0.001356299729968249,-3.395293821719811e-5,3.285379960496967e-8,0.0013563126464800305,-3.39124616274109e-5,3.2825694374099335e-8,0.0013562986345168043,-3.394695718115785e-5,3.284908231937111e-8,0.0013562906901488832,-3.406854808973949e-5,3.2931730931658255e-8,0.0013563265580224901,-3.4271700357362895e-5,3.3069227097465745e-8,0.0013564394803830895,-3.453081024388408e-5,3.3243512234392763e-8,0.001356647830444362,-3.480395690125668e-5,3.342564568063368e-8,0.0013569477158602284,-3.504296952579012e-5,3.358281757335669e-8,0.0013573120584085639,-3.52068525793514e-5,3.368754392194241e-8,0.001357697050412798,-3.5273779767518736e-5,3.3725762172275216e-8,0.0013580538346326509,-3.524742322405932e-5,3.3700952947215904e-8,0.0013583414729187431,-3.515577457801083e-5,3.3633068996217375e-8,0.0013585373183607017,-3.504326814963739e-5,3.3552899090837633e-8,0.0013586421139425234,-3.4958781479045985e-5,3.3493719387707e-8,0.001358678685937704,-3.494290707046618e-5,3.3482624669021657e-8,0.001358684778336174,-3.501803608967189e-5,3.353396129882613e-8,0.001358702322909947,-3.518405715028354e-5,3.36466993389363e-8,0.0013587666406036992,-3.542061521536396e-5,3.380626499920978e-8,0.0013588989123856205,-3.5694495803273485e-5,3.398974496696862e-8,0.001359103663247866,-3.5969025766868755e-5,3.417229612867719e-8,0.0013593708567535968,-3.621226756590788e-5,3.4332592451649465e-8,0.0013596806793210175,-3.640207539916034e-5,3.4456072169122394e-8,0.0013600088338772479,-3.6527817297702786e-5,3.4535941490019846e-8,0.0013603309085686056,-3.6589745925869715e-5,3.4572666368770736e-8,0.0013606253906847028,-3.659727205627579e-5,3.4572817000381455e-8,0.0013608755966453268,-3.656705235731982e-5,3.45478428901892e-8,0.0013610710755603856,-3.652125748003627e-5,3.4512957394544435e-8,0.0013612090115036409,-3.648585481662091e-5,3.448596151433922e-8,0.0013612958461505,-3.648833256815448e-5,3.448560847301663e-8,0.0013613487825353768,-3.655412453139295e-5,3.452905427534737e-8,0.0013613960977975756,-3.6701245140876124e-5,3.4628141465119906e-8,0.0013614745650237811,-3.693358561190437e-5,3.4784884782548805e-8,0.0013616224205170902,-3.7235042204870165e-5,3.4987633233731027e-8,0.001361868091522445,-3.756832421090297e-5,3.521045772248526e-8,0.001362218255945228,-3.788197415238886e-5,3.541808383563176e-8,0.0013626514699812326,-3.812539193249165e-5,3.557619486093644e-8,0.001363122322234058,-3.8266165560665596e-5,3.566324383611881e-8,0.0013635754647547845,-3.830134386399334e-5,3.5678079037798024e-8,0.0013639630780626708,-3.825738313571894e-5,3.563975015298319e-8,0.001364258080357862,-3.817994201829989e-5,3.5580274568062977e-8,0.0013644589434662312,-3.811922202797349e-5,3.5534332460088205e-8,0.0013645865742663128,-3.81166924124298e-5,3.5530027944857735e-8,0.0013646762446455044,-3.819653354824757e-5,3.558310331044814e-8,0.001364767819829093,-3.8362605590993256e-5,3.569514079478911e-8,0.0013648967631197295,-3.8600238344742254e-5,3.585514627803409e-8,0.0013650874946786213,-3.888148752071901e-5,3.60434300221522e-8,0.0013653499642588421,-3.917227000116867e-5,3.62365942886353e-8,0.00136567964200512,-3.943967176457917e-5,3.6412451385441956e-8,0.0013660603709506384,-3.965784039600382e-5,3.65538578644758e-8,0.0013664688889499187,-3.981147629204727e-5,3.665089579529965e-8,0.0013668796761675812,-3.989679821734419e-5,3.6701401260529234e-8,0.0013672690955396569,-3.992052333462929e-5,3.6710241547116054e-8,0.0013676183253096337,-3.9897716306200194e-5,3.668789735721834e-8,0.0013679151464472477,-3.984932666566189e-5,3.664884493646582e-8,0.0013681550099158162,-3.979985343784534e-5,3.660997364210455e-8,0.0013683418187992174,-3.977508572660584e-5,3.658897704031485e-8,0.0013684886345164064,-3.9799531863791056e-5,3.6602481816290366e-8,0.0013686181140462686,-3.989297417404592e-5,3.6663608773571173e-8,0.0013687618136698219,-4.006569078124706e-5,3.677873040014451e-8,0.0013689567976789784,-4.031268759372785e-5,3.6943686509812775e-8,0.0013692379960220952,-4.0608958982055686e-5,3.714077674900414e-8,0.0013696263976024602,-4.0909688045915914e-5,3.733908018595111e-8,0.001370116858706226,-4.115943735403728e-5,3.7500783826076915e-8,0.0013706730192843547,-4.131030892561659e-5,3.759353716751259e-8,0.0013712357655380756,-4.1341651354543865e-5,3.760387092264407e-8,0.001371743681640421,-4.1269733274189294e-5,3.754378869036469e-8,0.0013721549303818486,-4.114093707006044e-5,3.744600118910848e-8,0.0013724590038156602,-4.1013018078885606e-5,3.7350822712677154e-8,0.0013726746583584263,-4.0935524588789915e-5,3.7292433498253575e-8,0.0013728388253621247,-4.093780361015353e-5,3.7290504667023286e-8,0.0013729936653109317,-4.102619609853645e-5,3.7348411588796894e-8,0.001373176359782013,-4.118762655376452e-5,3.745605098886693e-8,0.0013734130133102524,-4.139607981819826e-5,3.759467361926248e-8,0.0013737161837680623,-4.161950138762874e-5,3.7741869452387925e-8,0.0013740850229568907,-4.182594710895547e-5,3.787581954548767e-8,0.0013745072421834012,-4.198858396882682e-5,3.797857502949695e-8,0.0013749623837124778,-4.208926335925624e-5,3.803827857381001e-8,0.0013754258276343432,-4.2120407717748035e-5,3.8050265155743136e-8,0.001375872892622539,-4.2085198307853355e-5,3.801710263943968e-8,0.001376282469925798,-4.199628974034897e-5,3.7947728565110885e-8,0.0013766397572874227,-4.187345120748918e-5,3.7855899666402347e-8,0.0013769379150291574,-4.1740698791756187e-5,3.775826686919178e-8,0.0013771788132807986,-4.162339046388268e-5,3.76723488673647e-8,0.0013773731537905993,-4.154540420571933e-5,3.7614493141915814e-8,0.0013775401104706387,-4.1526264618012495e-5,3.759779228022895e-8,0.0013777064032593797,-4.157796597586423e-5,3.762987031680914e-8,0.001377904267471179,-4.170125910920436e-5,3.771044184184231e-8,0.0013781672206391812,-4.188175848661827e-5,3.78288749397831e-8,0.00137852256618738,-4.2087548328483725e-5,3.7962807628071696e-8,0.0013789809169083302,-4.2271422389212076e-5,3.807982991820045e-8,0.0013795260580142504,-4.238109909941585e-5,3.8144447194615674e-8,0.0013801120459359865,-4.237742637005507e-5,3.813041208095439e-8,0.0013806741263976,-4.225334424947585e-5,3.8033625865393774e-8,0.0013811520519300435,-4.2041187655938626e-5,3.787713159675286e-8,0.0013815136370865081,-4.180098864064637e-5,3.7703002181980215e-8,0.0013817644462791729,-4.159593522969593e-5,3.755522195444356e-8,0.0013819398040921613,-4.146995772891535e-5,3.7463973571636786e-8,0.0013820873195676013,-4.143814444971667e-5,3.74389528223684e-8,0.0013822508297504756,-4.1489856674521627e-5,3.747173694159376e-8,0.0013824612018183504,-4.159808318168086e-5,3.7542636676095634e-8,0.001382733677333939,-4.172918004101423e-5,3.76277743218216e-8,0.0013830692173663335,-4.185025959459586e-5,3.7704340994960595e-8,0.0013834575067367659,-4.193387127219509e-5,3.7753754368892116e-8,0.00138388030970731,-4.196070426809343e-5,3.776329962305264e-8,0.0013843148322871465,-4.1921028124019695e-5,3.7726878625517075e-8,0.0013847370777409624,-4.181512286564115e-5,3.7645150528966244e-8,0.0013851250900450299,-4.165273271465304e-5,3.752512539985943e-8,0.0013854619058602147,-4.145156074913463e-5,3.737919056711855e-8,0.0013857379458243554,-4.123483834305219e-5,3.722351350041851e-8,0.0013859525067954938,-4.1028195536964666e-5,3.707590164867331e-8,0.001386114186987945,-4.08562465832129e-5,3.6953376917189425e-8,0.0013862402914967716,-4.0739217947163935e-5,3.6869727504020365e-8,0.0013863552819137583,-4.068981038566365e-5,3.683325080139284e-8,0.0013864882812566375,-4.071045407698197e-5,3.684488191793497e-8,0.0013866695093654466,-4.0791084850707254e-5,3.689683217641563e-8,0.0013869252570760705,-4.0907845082072896e-5,3.6971967000828836e-8,0.0013872711358115565,-4.102392437415202e-5,3.7044638632372434e-8,0.0013877044103900269,-4.10944872644231e-5,3.708418444800822e-8,0.0013881982022425643,-4.107730918647336e-5,3.70621554354846e-8,0.0013887024507251455,-4.094823201885367e-5,3.696274535980045e-8,0.0013891560996636264,-4.071545369969397e-5,3.6792453536201996e-8,0.0013895088976246747,-4.042264374578624e-5,3.658214577314118e-8,0.0013897421255975183,-4.013475017712353e-5,3.637717862062872e-8,0.0013898751358086116,-3.99123909946508e-5,3.621955119697095e-8,0.0013899539157585976,-3.97898760399196e-5,3.613256495667892e-8,0.0013900305358917047,-3.976825529054825e-5,3.611605869920365e-8,0.0013901459897183817,-3.982280938552323e-5,3.615187595826213e-8,0.001390322583927315,-3.9916483926864295e-5,3.621354110721034e-8,0.0013905644815372748,-4.00116379826972e-5,3.627465691377648e-8,0.001390862196549241,-4.007719389834769e-5,3.6313891042696686e-8,0.0013911977272878053,-4.009168854677753e-5,3.631692015857626e-8,0.001391548803289706,-4.004388985804637e-5,3.627660019245447e-8,0.0013918921108757572,-3.9932383942914886e-5,3.619246897144912e-8,0.001392205925877442,-3.976474847087717e-5,3.607009012040189e-8,0.001392472481833256,-3.9556371616133894e-5,3.592027726302581e-8,0.0013926801795685095,-3.932876436594814e-5,3.5758025153182566e-8,0.0013928255206943443,-3.910712261197275e-5,3.5600891948591315e-8,0.0013929143574365078,-3.891704325009154e-5,3.546670424830646e-8,0.0013929619662561058,-3.878067864465175e-5,3.5370785800753655e-8,0.0013929916634681091,-3.8712865216251155e-5,3.5323145245009847e-8,0.0013930319212074739,-3.871783709874851e-5,3.532613964822986e-8,0.0013931121650108214,-3.878718027241075e-5,3.537313617747967e-8,0.0013932576761824852,-3.889956926863257e-5,3.544855030305457e-8,0.0013934841205019005,-3.902264562679513e-5,3.5529430896809445e-8,0.0013937923389470475,-3.911747336501126e-5,3.558876680690813e-8,0.0013941645951322254,-3.9146037401005566e-5,3.560072677257016e-8,0.0013945643433518572,-3.908149684330105e-5,3.554760976148454e-8,0.0013949419740809537,-3.8919080012482775e-5,3.54271205202408e-8,0.0013952477277678645,-3.868301987054237e-5,3.525691407233159e-8,0.001395448996586115,-3.842366805801884e-5,3.507242835859129e-8,0.0013955441184541493,-3.8202198743737096e-5,3.491619511363628e-8,0.001395563841894682,-3.806835542580855e-5,3.482237329132881e-8,0.0013955584098649994,-3.804297850225461e-5,3.4804676331452736e-8,0.0013955778157443777,-3.8114400232592614e-5,3.4854056156277526e-8,0.0013956561830292,-3.8248114880291454e-5,3.4945709067619815e-8,0.0013958061096767589,-3.840169374270801e-5,3.504970300817749e-8,0.001396021525706078,-3.853707477095065e-5,3.513962678304474e-8,0.0013962843041433993,-3.8627076516026636e-5,3.5197026880596114e-8,0.0013965707576988314,-3.865699570879773e-5,3.521229439063478e-8,0.0013968563725718281,-3.8623536025609064e-5,3.5183688298750485e-8,0.0013971187911648243,-3.8532907044979155e-5,3.511587978476073e-8,0.001397339741657006,-3.8398963032655006e-5,3.501866053362015e-8,0.0013975065707011172,-3.824149273866268e-5,3.490584928664414e-8,0.0013976137214529206,-3.808437691328442e-5,3.47941124837482e-8,0.0013976641337538325,-3.795316224892923e-5,3.470130668547223e-8,0.0013976701313359334,-3.787171824233571e-5,3.4644083108582145e-8,0.0013976530803277948,-3.785809777299285e-5,3.4634877223998395e-8,0.0013976411745630901,-3.792027581554576e-5,3.467883721971932e-8,0.0013976651171231898,-3.8052873706371765e-5,3.477154552196402e-8,0.001397752138213877,-3.8236151892252456e-5,3.489846164729002e-8,0.0013979195447783234,-3.8438219455829296e-5,3.5036710195449224e-8,0.0013981694399458889,-3.862056128580171e-5,3.515918741519236e-8,0.001398486147697437,-3.874608834560939e-5,3.524031957876636e-8,0.0013988374531938928,-3.878827062153085e-5,3.526239348503685e-8,0.001399180229735303,-3.873936055813441e-5,3.5221074317918304e-8,0.0013994701906148062,-3.861521125226919e-5,3.5128449985403174e-8,0.0013996740998213511,-3.845410205611195e-5,3.501191367250836e-8,0.0013997808979702491,-3.830798334251088e-5,3.490787420794603e-8,0.0013998068841861602,-3.822734029112152e-5,3.485117466616385e-8,0.0013997912690781416,-3.824484084870901e-5,3.486381492238321e-8,0.001399782875381604,-3.836511152067367e-5,3.494805808686753e-8,0.0013998239209614296,-3.856545057793629e-5,3.508720829151086e-8,0.0013999383452429608,-3.880618248898522e-5,3.5253069111989446e-8,0.001400128687982977,-3.9044513556967366e-5,3.5415721677933286e-8,0.0014003803140351105,-3.924559928935504e-5,3.555119946742358e-8,0.0014006688652410718,-3.938796884383357e-5,3.564509648433299e-8,0.0014009672459019793,-3.946401158692379e-5,3.569268613464028e-8,0.0014012504631784645,-3.9477773714654874e-5,3.5697219627372335e-8,0.0014014983378744935,-3.9442025791079544e-5,3.566783351875651e-8,0.0014016968485090753,-3.937562123845998e-5,3.561776933093947e-8,0.0014018389311078144,-3.930135009856592e-5,3.556297869454529e-8,0.0014019252611881805,-3.924395351028988e-5,3.552079791655267e-8,0.0014019650674987158,-3.922771502573723e-5,3.550823547292913e-8,0.0014019765254487317,-3.927316184126799e-5,3.5539561321083074e-8,0.0014019859072127623,-3.939286678870541e-5,3.562326047613582e-8,0.0014020245683540645,-3.9587049026522654e-5,3.57589225433063e-8,0.0014021232793080098,-3.984050350448809e-5,3.5935183683834784e-8,0.0014023045619820167,-4.0122876368864325e-5,3.613011664758931e-8,0.001402575188517273,-4.0393711578013267e-5,3.631499515737404e-8,0.0014029218430838034,-4.0611873294491905e-5,3.6461068646827724e-8,0.0014033123169753285,-4.074679499372091e-5,3.654749216388009e-8,0.0014037026283073234,-4.078780138232347e-5,3.6567752091281347e-8,0.0014040481592061073,-4.074819558912667e-5,3.653228462529379e-8,0.0014043154629272954,-4.0662606574106574e-5,3.646629348386904e-8,0.0014044912857379814,-4.057825582912705e-5,3.640333363998543e-8,0.001404586199481951,-4.054249152292174e-5,3.6376420565956945E-08,0.0014046315916832204,-4.059001163717845e-5,3.640913312668297e-8,0.0014046706036646942,-4.073363552405963e-5,3.650939734711049e-8,0.0014047457709805932,-4.096173679938644e-5,3.6668033280187714e-8,0.0014048875975041877,-4.1243138982900314e-5,3.686248986601918e-8,0.0014051079231287907,-4.153727189609017e-5,3.706412048229687e-8,0.0014053996891925462,-4.180543919169627e-5,3.724605723962737e-8,0.0014057418851642401,-4.201928520354164e-5,3.7388982979293707e-8,0.0014061067325829505,-4.216459310863377e-5,3.748357386154352e-8,0.0014064662792454632,-4.2240904034702006e-5,3.75300453375767e-8,0.001406796935332708,-4.225873123662221e-5,3.753610982343233e-8,0.0014070818711074016,-4.223609237701761e-5,3.7514565091294765e-8,0.0014073119283782146,-4.219538055815336e-5,3.748118402098386e-8,0.0014074858454996213,-4.216086923191445e-5,3.7453036902211475e-8,0.0014076103837110468,-4.215657537536124e-5,3.744699428145286e-8,0.001407700482867457,-4.2203893189522455e-5,3.7477990165415446e-8,0.0014077790394113716,-4.231848459825597e-5,3.755673767593618e-8,0.0014078754676845311,-4.250633958081457e-5,3.768691664581742e-8,0.0014080219967517041,-4.275967059593405e-5,3.7862358742113034e-8,0.0014082470158322466,-4.305438268393406e-5,3.8065444478173206e-8,0.0014085662107764442,-4.3351709842482535e-5,3.826846229183665e-8,0.0014089744868300872,-4.360598119993927e-5,3.843922404533621e-8,0.0014094431536157055,-4.377765422595991e-5,3.8550288702544655e-8,0.0014099256069116926,-4.384699363489847e-5,3.8588547143931624e-8,0.001410370621965012,-4.3822017616625005e-5,3.8560684416864574e-8,0.0014107379906385569,-4.373660777036701e-5,3.8491618344667396e-8,0.001411009964557524,-4.363969764258664e-5,3.841657689536917e-8,0.0014111946000197385,-4.3580512043394426e-5,3.8370420063415034e-8,0.0014113211867777273,-4.359545857298468e-5,3.837829828573306e-8,0.0014114306461733982,-4.3700232323209964e-5,3.8450239351540594e-8,0.001411564408632792,-4.388818610139138e-5,3.858035161105931e-8,0.0014117547305501578,-4.4134232812283986e-5,3.874997182226532e-8,0.0014120184750084578,-4.440248212920195e-5,3.8933324817321076e-8,0.0014123552829552618,-4.4655279826922307e-5,3.910396017989396e-8,0.0014127498958597165,-4.4861304314633954e-5,3.924032595412258e-8,0.0014131773611926266,-4.500092974261656e-5,3.932930729967511e-8,0.0014136092759243295,-4.5068124233728125e-5,3.9367328715653395e-8,0.001414019350464863,-4.50693223258045e-5,3.9359414083827914e-8,0.001414387280570928,-4.5020436860496765e-5,3.931705416718012e-8,0.0014147007530842784,-4.4943253683445574e-5,3.925572649703533e-8,0.0014149560140847756,-4.486209219785531e-5,3.919262101512192e-8,0.0014151576551419522,-4.4801074437002196e-5,3.914474595500056e-8,0.001415318136201093,-4.478183557739158e-5,3.912726793698288e-8,0.0014154572003696824,-4.482122856836196e-5,3.9151802563573214e-8,0.0014156009001108517,-4.492859041749618e-5,3.9224425325897754e-8,0.0014157795097893533,-4.5102449376290346e-5,3.93433918158505e-8,0.0014160233109937125,-4.532727500167816e-5,3.94970098303655e-8,0.0014163555567608258,-4.557201265798743e-5,3.96628298780135e-8,0.0014167833913719533,-4.579313198730899e-5,3.980996986060289e-8,0.0014172901012929602,-4.594441145983626e-5,3.990606550755613e-8,0.0014178341748209257,-4.599235373069634e-5,3.9928088314464635e-8,0.0014183591944381855,-4.593096157451421e-5,3.987268351609923e-8,0.0014188124373602864,-4.5787093578951006e-5,3.975984439233655e-8,0.001419163393834719,-4.561185313227637e-5,3.9626636645945325e-8,0.0014194126920989531,-4.5462152420401115e-5,3.951386849890556e-8,0.0014195882504336435,-4.5382171232237414e-5,3.945270542300551e-8,0.0014197329253106763,-4.539256577330823e-5,3.9456983564371725e-8,0.0014198906236090039,-4.548923231726588e-5,3.952257759491028e-8,0.001420095771986858,-4.5648857684138e-5,3.963175850856077e-8,0.0014203677362581296,-4.5837385340540104e-5,3.975959325884974e-8,0.0014207096597213865,-4.601850510949015e-5,3.988016811818957e-8,0.0014211104809135435,-4.616063637726872e-5,3.9971495331700885e-8,0.0014215489510336552,-4.624177480943514e-5,4.001871904464167e-8,0.0014219986351035052,-4.6251956591088596e-5,4.0015574979438314e-8,0.0014224329376801295,-4.619339291718908e-5,3.996426457805398e-8,0.001422829353219783,-4.607871301987465e-5,3.9874120697775513e-8,0.0014231724530763103,-4.592798447099774e-5,3.9759530620922137e-8,0.0014234554326269762,-4.57652124151591e-5,3.9637548056577846e-8,0.0014236803642659415,-4.561496504861187e-5,3.952556952558051e-8,0.0014238575838519927,-4.5499512314608026e-5,3.943929979142778e-8,0.0014240046262760098,-4.543644346492547e-5,3.9390987574810174e-8,0.0014241448474782898,-4.543650107068099e-5,3.938780661528568e-8,0.0014243055769598875,-4.55014025622324e-5,3.943030334635427e-8,0.0014245153230789524,-4.562160361393435e-5,3.951093333991738e-8,0.0014247992679477627,-4.5774516750711624e-5,3.9613026810845106e-8,0.0014251725776000539,-4.592471607435623e-5,3.97111673534239e-8,0.0014256324150758487,-4.6028499832087334e-5,3.9774539919194244e-8,0.0014261519278773282,-4.604466942670059e-5,3.97745103455597e-8,0.0014266816106519023,-4.595018557846401e-5,3.9695557904295956e-8,0.0014271621257017225,-4.575388705227969e-5,3.9544859389287236e-8,0.0014275457311608392,-4.549845458283125e-5,3.935358890200528e-8,0.001427815306107102,-4.524605002091276e-5,3.916657774531871e-8,0.0014279894860666584,-4.505443172790813e-5,3.9025101307670685e-8,0.001428111845943068,-4.4957151971777735e-5,3.895259664595886e-8,0.0014282324457039898,-4.4956997998443266e-5,3.8950037799349965e-8,0.0014283921152246375,-4.5031813061035744e-5,3.9000405529012745e-8,0.001428614503799861,-4.514594302658012e-5,3.907728510090153e-8,0.0014289052039444517,-4.526123102336767e-5,3.915303573565249e-8,0.0014292549887714064,-4.5344780633131716e-5,3.9204408290150735e-8,0.0014296445351593818,-4.537328317671618e-5,3.921546485399938e-8,0.0014300491927835234,-4.533479827914965e-5,3.917854634066426e-8,0.0014304433224275918,-4.522881772940035e-5,3.909403114722347e-8,0.001430804033341362,-4.5065037434135e-5,3.896929881664266e-8,0.001431114134170649,-4.486114602985143e-5,3.8817147411994384e-8,0.001431364173594574,-4.463995090524377e-5,3.8653843304944497e-8,0.001431553477665542,-4.4426110315797016e-5,3.8496905092415785e-8,0.0014316900992935974,-4.4242818950062476e-5,3.8362786478080485e-8,0.0014317897941557708,-4.410886020323244e-5,3.8264727869013804e-8,0.0014318743099349634,-4.403620954390451e-5,3.8210949087253464e-8,0.0014319691565770345,-4.402814004867514e-5,3.8203232744223565e-8,0.0014321008288139233,-4.407781633250867e-5,3.823596615193787e-8,0.0014322933132242908,-4.4167493057523215e-5,3.829575167824442e-8,0.0014325635783059797,-4.426874231918825e-5,3.8361828243839776e-8,0.0014329159984174987,-4.4344806916418694e-5,3.8407962919808685e-8,0.0014333367610415697,-4.435666435111393e-5,3.840682171688473e-8,0.0014337910720800594,-4.4273697098380086e-5,3.833742616530986e-8,0.0014342273731959762,-4.408716016137151e-5,3.819450047412489e-8,0.0014345914434781843,-4.382020957560829e-5,3.79954130449742e-8,0.0014348470970175808,-4.352582193219588e-5,3.7778581483576264e-8,0.0014349925697684392,-4.326902649537983e-5,3.759070188014273e-8,0.0014350613489107376,-4.3101343714786775e-5,3.746837044387351e-8,0.0014351064354383872,-4.304237393549526e-5,3.74248666578265e-8,0.0014351786308693037,-4.3077895175319485e-5,3.744893988723652e-8,0.001435311120145527,-4.3171511316731736e-5,3.751349253798805e-8,0.001435514983638263,-4.3280124103506245e-5,3.7587031889058094e-8,0.0014357827442222175,-4.33657644870084e-5,3.764234602726513e-8,0.0014360950176135047,-4.340168328161423e-5,3.766080981694061e-8,0.0014364268982985113,-4.3373918763642415e-5,3.7633249662091946e-8,0.0014367527843651797,-4.328039694830718e-5,3.755898187846603e-8,0.0014370497401466067,-4.312909776010434e-5,3.7444270646673757e-8,0.0014372999251545048,-4.29358844997081e-5,3.730070931627148e-8,0.0014374923724849156,-4.2722063680720855e-5,3.71435536648068e-8,0.0014376241618117747,-4.251167408721932e-5,3.6989920136254e-8,0.0014377009262072043,-4.2328490779715396e-5,3.6856738666764285e-8,0.0014377364788064743,-4.2192837572660376e-5,3.675846863045126e-8,0.0014377513692969844,-4.2118585485798534e-5,3.6704856042820815e-8,0.001437770451447845,-4.2110786884528316e-5,3.669912913273134e-8,0.0014378196981251372,-4.21642244916051e-5,3.6736925449717485e-8,0.0014379224790505686,-4.226308798281828e-5,3.680616377621557e-8,0.0014380955334853483,-4.238200534606743e-5,3.6888012155040675e-8,0.0014383449114242503,-4.2488670304332985e-5,3.6959034935254815e-8,0.0014386623333420816,-4.254848883471872e-5,3.69946922542799e-8,0.001439023053413255,-4.253172746547254e-5,3.6974437223496824e-8,0.00143938722951177,-4.242284653717159e-5,3.688818009449981e-8,0.001439707137154768,-4.222971419566938e-5,3.674257304428873e-8,0.0014399409659193428,-4.198781671588203e-5,3.656376280190634e-8,0.001440069459918548,-4.1753765044836575e-5,3.6392606119182155e-8,0.001440106597622063,-4.158679104094984e-5,3.6271381464065536e-8,0.0014400959148385573,-4.1525832600832144e-5,3.622739349459521e-8,0.0014400927711180566,-4.15752438414865e-5,3.626283531393904e-8,0.0014401429180055368,-4.170699406909172e-5,3.635659541946491e-8,0.0014402691460889587,-4.1875615871244114e-5,3.6475292110604114e-8,0.0014404700687453444,-4.20353985030447e-5,3.658586574851633e-8,0.0014407270427852904,-4.215187194132588e-5,3.666388371140973e-8,0.001441013130719309,-4.220595818615349e-5,3.6696359973947585e-8,0.0014413003263376396,-4.219308157288958e-5,3.6680826446642095e-8,0.001441564033217401,-4.212012924590863e-5,3.662287749152233e-8,0.0014417853809006085,-4.2002181831792545e-5,3.653368462176073e-8,0.0014419523959797523,-4.185969337729201e-5,3.642799751790315e-8,0.0014420606999227586,-4.171600435622608e-5,3.632248964966348e-8,0.0014421139198980406,-4.159487387718513e-5,3.623411674528073e-8,0.0014421237028206181,-4.151777055500738e-5,3.6178218018737015e-8,0.0014421089934266833,-4.150085444996026e-5,3.6166287820635e-8,0.0014420941576250958,-4.155198804294638e-5,3.620370937664565e-8,0.0014421057972856064,-4.166845338362705e-5,3.628802792965738e-8,0.0014421685219863218,-4.183607922736202e-5,3.6408352528175015e-8,0.0014423002757643633,-4.203032172674412e-5,3.65463031098458e-8,0.0014425080608542666,-4.22195472333642e-5,3.667862994977846e-8,0.001442784991572208,-4.237031728117714e-5,3.6781252110025435e-8,0.0014431095090614871,-4.245409762385614e-5,3.6834180674033206e-8,0.0014434474962299161,-4.245454297942441e-5,3.682664986919906e-8,0.0014437579597159325,-4.237398291446551e-5,3.676149381934002e-8,0.0014440024218877274,-4.2236870836770005e-5,3.665727124065034e-8,0.0014441566692500326,-4.208735480065546e-5,3.654623465415403e-8,0.0014442210777839057,-4.197894413823149e-5,3.646678154580181e-8,0.0014442238639085503,-4.1957657259825583e-5,3.6451395741224957e-8,0.001444213177633174,-4.204514955028633e-5,3.6514704020701185e-8,0.0014442400148779796,-4.2230738483301597e-5,3.664799820937176e-8,0.001444340327612597,-4.2477002171248194e-5,3.6823531208232587E-08,0.0014445252831045401,-4.273521305190709e-5,3.700583739358809e-8,0.001444782633063003,-4.296167146369278e-5,3.716358146341754e-8,0.0014450854085491184,-4.312785702347721e-5,3.727679374827056e-8,0.001445401951167018,-4.322288651739154e-5,3.733842340885731e-8,0.001445703365975638,-4.3250813436262515e-5,3.735212787958807e-8,0.0014459674945798882,-4.32260760357198e-5,3.73288004390637e-8,0.001446180300220262,-4.316923443732345e-5,3.728344873718978e-8,0.0014463359582635035,-4.310370309668452e-5,3.723292189167686e-8,0.0014464365687389773,-4.305328850624032e-5,3.719426687269874e-8,0.0014464918465855834,-4.304002473972689e-5,3.718325365119318e-8,0.0014465186728166825,-4.308181819575483e-5,3.721266618215463e-8,0.0014465400355141305,-4.3189687170519945e-5,3.7290221487352145e-8,0.0014465827531187007,-4.336489798552785e-5,3.741640893771544e-8,0.0014466736056468219,-4.3596841039752464e-5,3.758294229173246e-8,0.0014468340922974643,-4.386279199894946e-5,3.77726972029659e-8,0.0014470748301542683,-4.413057535440872e-5,3.7961848327240886e-8,0.0014473912922101449,-4.4364408720834884e-5,3.812432810558878e-8,0.0014477626657607462,-4.453297875666711e-5,3.8237820661230854e-8,0.001448154854433801,-4.461771816489685e-5,3.828974037644961e-8,0.0014485274030723117,-4.461890202134063e-5,3.8281447589952853e-8,0.0014488429638407447,-4.455758179245559e-5,3.822931479912126e-8,0.001449077126957026,-4.447225398864734e-5,3.816195570741389e-8,0.001449226023125882,-4.441032020245069e-5,3.8113794316332475e-8,0.0014493090755652274,-4.441579020404974e-5,3.8116125833806295e-8,0.001449364947092221,-4.451633994090186e-5,3.818794133287042e-8,0.0014494407057380814,-4.471426477041007e-5,3.832972073058778e-8,0.0014495774144823556,-4.498555350055323e-5,3.8523117853081915e-8,0.0014497978450341655,-4.5288121537755064e-5,3.873716648698755e-8,0.001450101396289851,-4.557563857325436e-5,3.89383696430426e-8,0.0014504674700356046,-4.581077178440381e-5,3.9100206897818924e-8,0.001450864329811925,-4.59729347684755e-5,3.920855010190983e-8,0.001451258767715561,-4.605934108050844e-5,3.92621859121156e-8,0.001451623153623208,-4.608136827590191e-5,3.926997648012008e-8,0.0014519388956488832,-4.605924560935e-5,3.9246910208725725e-8,0.0014521971379447417,-4.6017229535460886e-5,3.9210629613232204e-8,0.0014523980389310705,-4.5980057149587095e-5,3.917896492879653e-8,0.0014525496603379358,-4.597051953376308e-5,3.9168276920308264e-8,0.0014526669574361673,-4.600759430739576e-5,3.9192135619664394e-8,0.0014527708281076104,-4.610453020282936e-5,3.9259884840940946e-8,0.0014528867245701964,-4.626654176388048e-5,3.9374895639106777e-8,0.0014530421048613528,-4.648831416903428e-5,3.9532731387203335e-8,0.0014532621468013511,-4.6752190201937326e-5,3.971990995005398e-8,0.0014535637916342824,-4.7028515568426274e-5,3.9914326393312656e-8,0.0014539493947660874,-4.727971460801391e-5,4.008841173852169e-8,0.0014544025921314587,-4.7468597955633217e-5,4.021531201044032e-8,0.0014548892922685616,-4.7569142347220584e-5,4.027675511472258e-8,0.0014553650558184153,-4.7575810436338764e-5,4.026972977663235e-8,0.0014557870851216873,-4.750717265528638e-5,4.020889782847651e-8,0.0014561265502366723,-4.7401772022354576e-5,4.012327246018735e-8,0.0014563767220609832,-4.730757137609055e-5,4.004821937536077e-8,0.00145655435776092,-4.726880621379515e-5,4.001569186801683e-8,0.001456694463586125,-4.73144514864003e-5,4.004587627083997e-8,0.0014568404770532691,-4.7451327393656046e-5,4.0142460997834714e-8,0.0014570327641523222,-4.7663290283813975e-5,4.029246947753112e-8,0.001457298519145466,-4.7916441311999795e-5,4.047043105356473e-8,0.0014576457793189451,-4.816871716330359e-5,4.064555627563837e-8,0.0014580630692166065,-4.8380870254886153e-5,4.07896946312839e-8,0.0014585242916217804,-4.85254475628263e-5,4.0883660976549706e-8,0.0014589966823086494,-4.859135992178545e-5,4.092028278391199e-8,0.0014594488895383127,-4.8583561201735886e-5,4.0903922552317477e-8,0.0014598568660654338,-4.851917902858856e-5,4.084752107398645e-8,0.001460206718017994,-4.8422238333548e-5,4.0768741953613706e-8,0.0014604949812930131,-4.831876578154884e-5,4.068648768877478e-8,0.0014607274013576004,-4.823314160900414e-5,4.0618350180221016e-8,0.0014609172150457537,-4.8185712318530414e-5,4.057893429465176e-8,0.001461083502746424,-4.8191179258434105E-05,4.0578670798416085e-8,0.001461249671904525,-4.82571706133708e-5,4.0622715345642995e-8,0.001461441693727446,-4.838261929000545e-5,4.07097296081658e-8,0.0014616854233344243,-4.8556014057686534e-5,4.083066061163576e-8,0.0014620023267894015,-4.8754249269082786e-5,4.0968058990523775e-8,0.0014624034953483796,-4.894358809285292e-5,4.109698020827211e-8,0.0014628831941533296,-4.908464338861261e-5,4.118875936509696e-8,0.0014634150433660768,-4.914226299762998e-5,4.121824393937142e-8,0.0014639548020531532,-4.9098224861191336e-5,4.117296927439143e-8,0.001464451637979818,-4.8961091183785824e-5,4.106020733296679e-8,0.0014648646915946838,-4.8766820370606e-5,4.090722801199529e-8,0.0014651772883869003,-4.8568009313809076e-5,4.075319349404685e-8,0.0014654017214941388,-4.8416426777365386e-5,4.063612262558724e-8,0.0014655731149098806,-4.834715390556542e-5,4.05811408271586e-8,0.0014657366598345033,-4.8370472978448067e-5,4.0594648027202523e-8,0.0014659342958094506,-4.847253437725393e-5,4.066516335293664e-8,0.0014661950114605521,-4.862215666828612e-5,4.076876008564538e-8,0.0014665301910791108,-4.8780249807602064e-5,4.0876316291687736e-8,0.0014669336173157724,-4.8909088442915184e-5,4.096041061837196e-8,0.0014673849869394323,-4.89797010783182e-5,4.10005813588427e-8,0.0014678556191269404,-4.8976435201010984e-5,4.0986359543432826e-8,0.0014683149714162325,-4.889830880085964e-5,4.091793502517985e-8,0.0014687365529222206,-4.875735290426732e-5,4.080472681276175e-8,0.0014691021142846357,-4.857481423921316e-5,4.0662543710692137e-8,0.0014694036337962362,-4.8376450354823765e-5,4.0510213167388694e-8,0.0014696432745798936,-4.8188046898087444e-5,4.0366429937764576e-8,0.0014698319277800106,-4.803190530328035e-5,4.0247286006004545e-8,0.0014699871102827962,-4.7924526915939426e-5,4.0164595796703556e-8,0.0014701307848855516,-4.787522027490336e-5,4.012482396092963e-8,0.0014702872622128149,-4.788517195205734e-5,4.012834089633514e-8,0.0014704809975428358,-4.794666693736669e-5,4.0168855709075365e-8,0.0014707338344027386,-4.804244009905834e-5,4.0233062784634995e-8,0.0014710611213139102,-4.814566107532364e-5,4.030084085232558e-8,0.0014714665413726273,-4.822181569590968e-5,4.034683134470572e-8,0.001471936732554558,-4.823419676772928e-5,4.0344537351810816e-8,0.0014724385787785134,-4.815393883152968e-5,4.02735824939934e-8,0.0014729232921461939,-4.7972708991935915e-5,4.012881131104992e-8,0.001473339733380658,-4.771194684085152e-5,3.99268721108642e-8,0.0014736534482333627,-4.7420811459529796e-5,3.97045678271898e-8,0.0014738614631978186,-4.716016424666695e-5,3.9506949528936975e-8,0.0014739933492919856,-4.697982067329245e-5,3.937043540172194e-8,0.0014740979744279096,-4.690167112469379e-5,3.931032980142313e-8,0.0014742246024554207,-4.691644256644111e-5,3.9318604552850936e-8,0.0014744082651071803,-4.69922299640802e-5,3.9370563974310175e-8,0.0014746637140043946,-4.708756851895923e-5,3.943489870131204e-8,0.0014749866046875014,-4.7162958123676244e-5,3.948243157993727e-8,0.001475358543065385,-4.71883294842356e-5,3.949159654624633e-8,0.001475753210166725,-4.714652817698946e-5,3.945074236392933e-8,0.001476142078096254,-4.7033888847950614e-5,3.9358189832320374e-8,0.0014764992123982724,-4.685887934392134e-5,3.9220928510260014e-8,0.0014768049713061416,-4.663938791887539e-5,3.905248086942313e-8,0.001477048391317066,-4.639911917690382e-5,3.8870289051615004e-8,0.0014772281442441146,-4.61636413222774e-5,3.86929540003015e-8,0.0014773521218631534,-4.595660324837137e-5,3.8537604231317574e-8,0.0014774358574483667,-4.579659133441228e-5,3.841765492707048e-8,0.0014775001956065402,-4.569496823083304e-5,3.8341186816552856e-8,0.0014775686820781154,-4.565470129067433e-5,3.830999686167372e-8,0.0014776649243166784,-4.566994456347111e-5,3.8319233095593914e-8,0.0014778099359220231,-4.5726192560117234e-5,3.83575570353092e-8,0.0014780193244124584,-4.580097117160524e-5,3.840782891730723e-8,0.0014783000450939625,-4.5865328797617776e-5,3.8448445201550915e-8,0.0014786467079729625,-4.588696439857752e-5,3.845582251437362e-8,0.0014790384080720245,-4.583611242343526e-5,3.840873944588172e-8,0.0014794383527260398,-4.56945594107753e-5,3.82947864626867e-8,0.001479799398450005,-4.5465999161076066e-5,3.811769435150879e-8,0.0014800774121277783,-4.518250806512075e-5,3.790185132520664e-8,0.0014802492942168032,-4.489995809258601e-5,3.768879845012064e-8,0.0014803258879004637,-4.467961171000656e-5,3.7523621216932424e-8,0.0014803496588216847,-4.456364916372832e-5,3.7436882425543227E-08,0.0014803767789849922,-4.455914717389837e-5,3.743285124826617e-8,0.00148045471663273,-4.463944669785187e-5,3.749072374826842e-8,0.0014806079903739232,-4.4759080332929866e-5,3.757599995374444e-8,0.0014808363575325631,-4.4871298219932226e-5,3.7653765328709984e-8,0.0014811213748755097,-4.49400791113898e-5,3.7697698950566665e-8,0.0014814353063795221,-4.494494148911797e-5,3.769349125262831e-8,0.0014817486607833878,-4.488064489949951e-5,3.7638296039217246e-8,0.0014820352591590176,-4.475444899156155e-5,3.75383511170801e-8,0.001482275222988769,-4.458271568201399e-5,3.740624045556785e-8,0.0014824566343186552,-4.438752806725547e-5,3.7258364186440963e-8,0.0014825762933425046,-4.41933973514123e-5,3.711263205430016e-8,0.0014826396781233982,-4.402407385189993e-5,3.698628868785702e-8,0.0014826601038704105,-4.3899537486014864e-5,3.689381745950238e-8,0.0014826570290835308,-4.3833355408042506e-5,3.684500249109746e-8,0.0014826535665252642,-4.383076384824262e-5,3.684342893133268e-8,0.0014826734964349505,-4.388776027353641e-5,3.688571137475423e-8,0.0014827381250709867,-4.3991250197185465e-5,3.696157870415823e-8,0.0014828632277558774,-4.4120225732295084e-5,3.7054853705114773e-8,0.0014830562790585913,-4.424796254416029e-5,3.7145299091021524e-8,0.001483314114902658,-4.4345226853738956e-5,3.721123064884487e-8,0.0014836212427355765,-4.438471351759688e-5,3.723292906691934e-8,0.0014839495880320053,-4.434704884177869e-5,3.719700534277648e-8,0.0014842612053440878,-4.4227969750309367e-5,3.7101437221589655e-8,0.001484515578411819,-4.4044706083483356e-5,3.6959930289161086e-8,0.0014846818321571568,-4.383767436946015e-5,3.6802887599284104e-8,0.001484752665298912,-4.366282494601175e-5,3.6671649941767425e-8,0.0014847523079773632,-4.357345179251354e-5,3.6605110282143873e-8,0.0014847306685902028,-4.3598461730291396e-5,3.662379044416523e-8,0.0014847439416985908,-4.372996532663204e-5,3.672084767057359e-8,0.001484832455576805,-4.392834159757466e-5,3.6866053246575335e-8,0.0014850084524969315,-4.414052139172515e-5,3.701958292803764e-8,0.0014852579225742377,-4.4319394962506785e-5,3.7146574635816525e-8,0.00148555111690797,-4.443521318072178e-5,3.7225576915926685e-8,0.0014858540251273446,-4.447773434048518e-5,3.724992857383376e-8,0.0014861364543161625,-4.445270363925244e-5,3.722482225495067e-8,0.0014863760913723298,-4.437656318307988e-5,3.716309655277369e-8,0.0014865597532513933,-4.427164451826376e-5,3.708154822513582e-8,0.0014866832683675857,-4.4162460074345484e-5,3.699824191460888e-8,0.0014867508559287582,-4.407282323694022e-5,3.693054466535894e-8,0.0014867742340000237,-4.402339782503651e-5,3.68934712540527e-8,0.0014867713714220555,-4.402943420367354e-5,3.689807422058526e-8,0.0014867646564762282,-4.409867285281513e-5,3.6949844467746125e-8,0.0014867782740302412,-4.422973621937711e-5,3.7047415402730984e-8,0.0014868348754921309,-4.441152508594255e-5,3.718204520461165e-8,0.0014869519465962582,-4.462400182095811e-5,3.733824048865543e-8,0.0014871384186216602,-4.484053098879151e-5,3.749566462993671e-8,0.0014873921480441546,-4.5031733174503954e-5,3.7632239067973675e-8,0.0014876988747097991,-4.517047600970056e-5,3.772804673560034e-8,0.0014880330851069787,-4.5237407062414714e-5,3.776948065811721e-8,0.0014883611336936045,-4.522638867386191e-5,3.7753106366925946e-8,0.0014886470419661934,-4.5148829423299135e-5,3.768853679617695e-8,0.0014888610099375744,-4.503511107630251e-5,3.75991142701746e-8,0.0014889893734640611,-4.493078727593386e-5,3.7518833390943256e-8,0.0014890426802024238,-4.4885939658503095e-5,3.74844077895564e-8,0.0014890568559620368,-4.493900359979849e-5,3.752344755667185e-8,0.0014890836459080803,-4.5101175184416406e-5,3.7643181361237684e-8,0.001489172305795643,-4.535029512050693e-5,3.7826206234394064e-8,0.0014893513815948645,-4.5639131365739326e-5,3.803685162170241e-8,0.0014896203853677792,-4.591379586939746e-5,3.8234980089391865e-8,0.0014899543663838013,-4.613185728141613e-5,3.8389462478218916e-8,0.0014903162297077394,-4.6271946349084726e-5,3.848520377485263e-8,0.0014906691385107214,-4.6333741604474694e-5,3.852289537208366e-8,0.0014909844428688587,-4.6332267253878814e-5,3.851449641139075e-8,0.0014912446994979787,-4.629096295265064e-5,3.8477884251820716e-8,0.001491443475023993,-4.623604922293549e-5,3.843262815520471e-8,0.0014915838036451312,-4.61927449105687e-5,3.8397284898482245e-8,0.0014916764513131834,-4.618284796155863e-5,3.838776175182558e-8,0.0014917383357409837,-4.622298504810592e-5,3.8416126988273096e-8,0.0014917909428913139,-4.632303584535767e-5,3.848944739748476e-8,0.0014918583550758398,-4.648458412369112e-5,3.860856466449232e-8,0.0014919645095770773,-4.669969166698596e-5,3.8767106301308565e-8,0.001492129594339425,-4.695065290037247e-5,3.895130296913219e-8,0.0014923659795207224,-4.721144655663761e-5,3.914118664687933e-8,0.0014926745732702724,-4.745133715731877e-5,3.931347861780057e-8,0.0014930428020581202,-4.764050267803905e-5,3.944599080200351e-8,0.0014934453287540244,-4.77567381989998e-5,3.952272977792478e-8,0.0014938479976421455,-4.7791615726440825e-5,3.9538419803086526e-8,0.0014942145959709434,-4.775437268653611e-5,3.950114664854367e-8,0.0014945152548361581,-4.7672147717775885e-5,3.943216537025932e-8,0.0014947347496844735,-4.758571958330954e-5,3.936237614997539e-8,0.0014948784839529095,-4.754071729882442e-5,3.9325587712150906e-8,0.001494973688060228,-4.7575580700830986e-5,3.934960606065222e-8,0.001495063893699758,-4.7709339668887554e-5,3.9447410821275483e-8,0.0014951967819727924,-4.793386974666786e-5,3.961177012530231e-8,0.0014954089548056488,-4.82150113356529e-5,3.9816407071216556e-8,0.001495713972368483,-4.8503439552528306e-5,4.0024278257678855e-8,0.0014960992299929698,-4.875088216767253e-5,4.0199671339311314e-8,0.0014965325627533485,-4.892426755697233e-5,4.031863181757441e-8,0.0014969742965597005,-4.9012244353112056e-5,4.037361715514292e-8,0.0014973887060458133,-4.90234527916337e-5,4.037196030438772e-8,0.0014977509975768778,-4.897987925534544e-5,4.033069659995429e-8,0.0014980493699429142,-4.8909370842569586e-5,4.0270872530960104e-8,0.0014982838272042372,-4.8839785143966184e-5,4.0213214367086265e-8,0.0014984636893112296,-4.879533379597899e-5,4.017552829673121e-8,0.0014986050564438516,-4.879459745805125e-5,4.0171351190536136e-8,0.0014987286878216618,-4.884940264365551e-5,4.020917276631506e-8,0.0014988581486848397,-4.8963892845157507e-5,4.029171690125393e-8,0.0014990177337836207,-4.9133541633318104e-5,4.0415144161886566e-8,0.0014992296650089489,-4.934439725353427e-5,4.056846910653133e-8,0.0014995103608385159,-4.957328780427341e-5,4.073379081419653e-8,0.0014998661313054954,-4.978992849651283e-5,4.0888033317214166E-08,0.001500289438846751,-4.996169395570395e-5,4.100670227701081e-8,0.0015007575640223773,-5.00609271009138e-5,4.1069476582698656e-8,0.0015012354183340914,-5.0073132062903215e-5,4.106633523245191e-8,0.001501682931435136,-5.000313393611321e-5,4.10020124318666e-8,0.0015020653958463235,-4.9876318236111225e-5,4.089664152349184e-8,0.001502363510762478,-4.973362668651773e-5,4.078166708635209e-8,0.0015025796036362987,-4.9621359434477365e-5,4.06919240015438e-8,0.001502737788613337,-4.957881774687852e-5,4.0656280257301776e-8,0.0015028778851812186,-4.9627518948032364e-5,4.0689710099869005e-8,0.001503044775055048,-4.9765138003926926e-5,4.078912007859041e-8,0.001503276131990282,-4.9966042084288354e-5,4.093418214974257e-8,0.0015035921340975534,-5.0188522911167886e-5,4.109307745813918e-8,0.0015039904959644906,-5.038664086853307e-5,4.12314822617478e-8,0.0015044484479765602,-5.052272450607022e-5,4.1321828260849926e-8,0.0015049305867960681,-5.057627006151882e-5,4.1349724488542334e-8,0.0015053992671028003,-5.0546698588028124e-5,4.1315734395285215e-8,0.001505823682333701,-5.0450202162379264e-5,4.123276774522326e-8,0.0015061851264551991,-5.03131376162049e-5,4.1120991139124105e-8,0.00150647810650972,-5.0164985415371416e-5,4.100254562995308e-8,0.0015067085911635734,-5.003289045076868e-5,4.0897557578942296e-8,0.0015068910568689683,-4.9938339881018866e-5,4.0821788084939146e-8,0.0015070455081733843,-4.989557017837055e-5,4.078553560863914e-8,0.0015071949768719031,-4.991095762554463e-5,4.079319265895584e-8,0.0015073634330199596,-4.998270255847455e-5,4.0842964940455486e-8,0.001507573648758257,-5.0100484272582855e-5,4.092657881678172e-8,0.001507844474226869,-5.024531275080717e-5,4.1029213145852093E-08,0.0015081872475477102,-5.039029477878423e-5,4.113020982278904e-8,0.001508601639381369,-5.0503348351200574e-5,4.1205288990591655e-8,0.0015090721800536042,-5.0552825964399286e-5,4.123090271547341e-8,0.0015095677542445187,-5.051598845732162e-5,4.119061726808571e-8,0.0015100464398749296,-5.0388137396494456e-5,4.1081869583940654e-8,0.0015104661524490966,-5.0188150732697904e-5,4.091992886992478e-8,0.0015107980562968522,-4.995626598255443e-5,4.073597315450068e-8,0.0015110369884425087,-4.974323096834382e-5,4.056865503257804e-8,0.0015112037636235288,-4.9594689096187027e-5,4.0452143784550536e-8,0.0015113382538688342,-4.9537390122333774e-5,4.040571885063075e-8,0.001511486651518908,-4.9572491390367476e-5,4.0428949376900265e-8,0.0015116882343063284,-4.9677288522526345e-5,4.0503412055625985e-8,0.001511965832908493,-4.981328246977489e-5,4.0599203239587485e-8,0.0015123218678560742,-4.993712667865752e-5,4.0683458185044255e-8,0.0015127398774388951,-5.001120491259384e-5,4.072833176366586e-8,0.0015131902459503254,-5.0011430442294444e-5,4.0716651632460574e-8,0.0015136381639806527,-4.9930908725903795e-5,4.064433406034829e-8,0.0015140516272895985,-4.977923819466192e-5,4.051953249837382e-8,0.0015144075622012096,-4.9578319631606846e-5,4.035928102066704e-8,0.0015146949683276282,-4.9356355695184494e-5,4.0184938821169755e-8,0.0015149150502128804,-4.9141887980333486e-5,4.0017799643976816e-8,0.0015150791746275875,-4.895917584109024e-5,3.9875772118617474e-8,0.0015152057997848073,-4.8825388632539786e-5,3.977139653273003e-8,0.0015153173317295856,-4.874940504486354e-5,3.971098695425316e-8,0.0015154374095433952,-4.8731643689852686e-5,3.9694467703771245e-8,0.0015155886318726306,-4.876432642304724e-5,3.971551230211538e-8,0.0015157903988936615,-4.8831866635134174e-5,3.976183295261236e-8,0.0015160564336704537,-4.891150797550089e-5,3.9815759747989534e-8,0.001516391691608481,-4.8974788479225625e-5,3.985552106330658e-8,0.0015167888924818176,-4.899079602098747e-5,3.985786664037715e-8,0.0015172258993118245,-4.893217400965164e-5,3.9802659015735863e-8,0.0015176663030841539,-4.878381729040918e-5,3.967934665594565e-8,0.0015180658418397924,-4.855185669703154e-5,3.9493549812086156e-8,0.0015183852145058741,-4.8267882631723335e-5,3.927002879151628e-8,0.001518605245428821,-4.7983227159816685E-05,3.904816418536927e-8,0.0015187364109845078,-4.7752853667001454e-5,3.8869607112691156e-8,0.0015188162107197098,-4.76157007253304e-5,3.876330623471329e-8,0.0015188951081814535,-4.7581646967552716e-5,3.87356971621642e-8,0.0015190187423242043,-4.763095682004308e-5,3.877055536279872e-8,0.0015192148843438057,-4.7724206359166875e-5,3.883693164021174e-8,0.0015194889111096335,-4.7816122036906335e-5,3.890001525702813e-8,0.0015198265573875282,-4.78675190041975e-5,3.893034461914193e-8,0.0015202006147450764,-4.785267690604367e-5,3.8909281403952436e-8,0.0015205786058022936,-4.776206764521024e-5,3.883074987792664e-8,0.001520929655959892,-4.7601511265561416e-5,3.8700210594517606e-8,0.0015212297485279174,-4.73889457227636e-5,3.853192522081979e-8,0.001521464985636384,-4.714978616986874e-5,3.834534142739313e-8,0.001521632714070136,-4.691181862109943e-5,3.8161308626593714e-8,0.0015217407259916819,-4.6700544473304215e-5,3.7998737945680615e-8,0.001521805050737679,-4.653561112622005e-5,3.7872078917049705e-8,0.0015218469609350476,-4.6428620942574455e-5,3.77897496515343e-8,0.0015218898209953303,-4.638232433864213e-5,3.7753505077697286e-8,0.0015219562588472324,-4.63908829784902e-5,3.775855431522331e-8,0.0015220657852472567,-4.644073196168358e-5,3.779415592915643e-8,0.0015222326849345393,-4.6511768353575117e-5,3.78445580321092e-8,0.0015224639302797234,-4.6578917633677744e-5,3.789033821231449e-8,0.0015227569400496383,-4.6614434070743716e-5,3.791035015751786e-8,0.0015230973823843132,-4.659163295010869e-5,3.788469386599491e-8,0.0015234580899453059,-4.6490764418833046e-5,3.779915028577375e-8,0.0015238011301948635,-4.630679101973296e-5,3.765088713532935e-8,0.0015240852672769784,-4.6056717425461094e-5,3.7453737167092474e-8,0.001524279176362041,-4.578158370729293e-5,3.723946842777562e-8,0.0015243761207970313,-4.5537893273890615e-5,3.7051147789336374e-8,0.0015244012465784203,-4.537833811089991e-5,3.692846975976653e-8,0.0015244043069810233,-4.5330485030194646e-5,3.689159982476225e-8,0.001524440051851727,-4.5386093677926136e-5,3.693319329946158e-8,0.0015245475921702796,-4.550706901455292e-5,3.70231970685862e-8,0.001524739631177373,-4.564256280847005e-5,3.712221109997426e-8,0.0015250039821238194,-4.574645320979391e-5,3.719506196713576e-8,0.001525312469978232,-4.57880724817201e-5,3.7219009823727845e-8,0.0015256311465300198,-4.575529177708597e-5,3.71858758629502e-8,0.0015259283156329572,-4.5652460184988825e-5,3.710009588757813e-8,0.001526179490549331,-4.549604863952453e-5,3.697504333756095e-8,0.0015263698298762106,-4.5309863016883735e-5,3.682918922629797e-8,0.0015264948690534665,-4.5120549024834013e-5,3.668269874859717e-8,0.0015265600057452486,-4.495356643058214e-5,3.65545436819091e-8,0.0015265789603062382,-4.4829825029204026e-5,3.646015826369734e-8,0.0015265714591917814,-4.476317621887072e-5,3.640967597256171e-8,0.001526560393019653,-4.47588814097071e-5,3.6406785222506725e-8,0.0015265687425595057,-4.481319012855167e-5,3.6448328955322366e-8,0.001526616673386339,-4.491402171639455e-5,3.6524727155707175e-8,0.001526719088838322,-4.5042478706087005e-5,3.662110821247449e-8,0.001526883671120863,-4.517492388060347e-5,3.671899335520608e-8,0.001527109357997393,-4.528556689050531e-5,3.679846629243785e-8,0.0015273852648541443,-4.5349660451110904e-5,3.684080865883039e-8,0.0015276902649918051,-4.5347572784252786e-5,3.683168213824624e-8,0.0015279940023550515,-4.5269982630066084e-5,3.676496818810432e-8,0.001528260741500139,-4.5123660491407865e-5,3.664687940483986e-8,0.0015284573649040436,-4.493568923535388e-5,3.649883068748661e-8,0.0015285651819203082,-4.475224028990135e-5,3.6356268024786054e-8,0.001528591522529057,-4.462799322930828e-5,3.6260564495138095e-8,0.0015285733068809862,-4.4606708170989893e-5,3.6244339332635135e-8,0.0015285663015500417,-4.4701580903939586e-5,3.631667920617675e-8,0.001528623057978843,-4.4888075568297965e-5,3.645788182105769e-8,0.0015287721301055885,-4.511488889181742e-5,3.662804240559266e-8,0.0015290104785997134,-4.532567197125326e-5,3.678385405657058e-8,0.0015293104382067145,-4.547810886081325e-5,3.689331286542308e-8,0.0015296334898081117,-4.555238252513215e-5,3.6942127930790746e-8,0.0015299425822774475,-4.5549875508693376e-5,3.6932458321921016e-8,0.0015302094618059117,-4.5487012585997464e-5,3.687784149123152e-8,0.0015304173593234294,-4.538838777224406e-5,3.6797650641900755e-8,0.0015305608012845585,-4.5281191160702335e-5,3.6712741731269536e-8,0.0015306441945146152,-4.5191250244956506e-5,3.664253537729438e-8,0.0015306800306723414,-4.514019365633332e-5,3.660306514411148e-8,0.0015306868440561443,-4.5143317412885504e-5,3.660554118454364e-8,0.0015306868688130097,-4.5208046874071456e-5,3.665525950628058e-8,0.001530703372269813,-4.533304361844633e-5,3.675088279926432e-8,0.0015307577071024677,-4.550816475509205e-5,3.6884311766138235e-8,0.0015308663545292767,-4.5715530714938635e-5,3.7041438425744794e-8,0.001531038403461839,-4.5931705831679506e-5,3.7203859056823594e-8,0.0015312738096312358,-4.613076201647923e-5,3.7351380006003594e-8,0.001531562647587085,-4.628797631784266e-5,3.7465058196804165e-8,0.001531885540287841,-4.638388948223532e-5,3.753045447184219e-8,0.0015322154350115606,-4.6408424099129384e-5,3.75407624833672e-8,0.0015325210181051422,-4.636473481435046e-5,3.749952617090675e-8,0.0015327722562987192,-4.62720299113284e-5,3.742243109933671e-8,0.0015329482178092664,-4.616568661040811e-5,3.7337038635539955e-8,0.0015330459667584296,-4.60922941785365e-5,3.7278814888025735e-8,0.001533087023241133,-4.609795126881395e-5,3.728225619249699e-8,0.001533115983708838,-4.621153374983078e-5,3.736837190134323e-8,0.0015331876400693626,-4.643018459294151e-5,3.753391652633899e-8,0.0015333461088477486,-4.6716886718747485e-5,3.7749779963297116e-8,0.001533607077938741,-4.701413330082583e-5,3.797158062251958e-8,0.0015339536898771556,-4.7266463413301e-5,3.8156979046495933e-8,0.0015343469210881689,-4.7438804933053115e-5,3.827972461061156e-8,0.0015347420400233514,-4.7522609577066365e-5,3.833423468532848e-8,0.0015351018922789568,-4.75311913550837e-5,3.833175719045527e-8,0.0015354032268769953,-4.7490536847499134e-5,3.8293014468682244e-8,0.0015356372503282487,-4.7430749661384474e-5,3.8241437080403724e-8,0.0015358072060457936,-4.738020854009638e-5,3.819867181103716e-8,0.0015359252275494756,-4.736231090740194e-5,3.818223813016995e-8,0.0015360095332831896,-4.739380510817324e-5,3.820445815928393e-8,0.0015360820478136717,-4.748383499571379e-5,3.82718722773441e-8,0.001536166141831675,-4.763330834665019e-5,3.838478548063725e-8,0.001536284194639195,-4.783458629340891e-5,3.8536969464764897e-8,0.0015364548174580863,-4.8071792138992605e-5,3.871582755825761e-8,0.001536689888308331,-4.832221693893701e-5,3.890347256035087e-8,0.001536991949021952,-4.8559125680806725e-5,3.907898810591917e-8,0.0015373526882001662,-4.875585201501901e-5,3.9221757056841037E-08,0.0015377531409755225,-4.889068042494506e-5,3.931538272353313e-8,0.0015381659828674545,-4.895167436888976e-5,3.9351451406966635e-8,0.0015385598715198048,-4.894040830492917e-5,3.9332267184161023e-8,0.0015389053503828088,-4.887366805568127e-5,3.927184980018389e-8,0.0015391815674583567,-4.878238533919379e-5,3.919473310592367e-8,0.0015393827610044833,-4.870713902780217e-5,3.913220935194622e-8,0.001539522826925547,-4.868983638924286e-5,3.911586463438951e-8,0.001539635551012186,-4.8762258491063296e-5,3.916897922140672e-8,0.0015397681169518995,-4.893424373568861e-5,3.929783969200081e-8,0.0015399675307219867,-4.9186670824232385e-5,3.9486747633733346e-8,0.0015402639575685848,-4.94746582698892e-5,3.970072063670472e-8,0.001540658896768355,-4.974203898215638e-5,3.989665648604e-8,0.0015411250260262703,-4.9940960584229624e-5,4.0038309783718896e-8,0.0015416177088270302,-5.0046684404287795e-5,4.010752915400204e-8,0.0015420911707916128,-5.006124568783706e-5,4.010688682435594e-8,0.0015425111740769344,-5.000709715400226e-5,4.00545534176231e-8,0.0015428603593231258,-4.9916572907574924e-5,3.9975967592465016e-8,0.001543137348004615,-4.9822560505639655e-5,3.9896549730067413e-8,0.0015433527728847896,-4.9752685894152456e-5,3.983728353617607e-8,0.0015435248853113634,-4.972672630231794e-5,3.981289716560943e-8,0.0015436759860362377,-4.975595477250484e-5,3.9831537088095255e-8,0.0015438297952060482,-4.984325147671539e-5,3.989494979643839e-8,0.0015440093369692496,-4.998334813656624e-5,3.999866380557658e-8,0.0015442348151259754,-5.016309804535865e-5,4.013214246585282e-8,0.0015445211154071746,-5.0362121259628284e-5,4.027925529887606e-8,0.0015448749611662643,-5.055446980018576e-5,4.0419618992163206e-8,0.0015452923005028491,-5.071189862384606e-5,4.053125674762409e-8,0.0015457569800726891,-5.0808855828295383E-05,4.059460327889975e-8,0.0015462418900000286,-5.082850879931722e-5,4.059724221672877e-8,0.0015467132993301472,-5.076823346637892e-5,4.0538094268894254e-8,0.0015471380038922773,-5.064252614673594e-5,4.042945683138028e-8,0.0015474916360774626,-5.048174585710053e-5,4.0295709244955134e-8,0.0015477657624747324,-5.0326348408581844e-5,4.016852598729084e-8,0.0015479715584376128,-5.02176988612463e-5,4.00795759607021e-8,0.001548138675163666,-5.018759931395581e-5,4.0052468864238434e-8,0.001548309019173918,-5.0249167170106635e-5,4.0095999848332944e-8,0.001548526363415651,-5.039173011559901e-5,4.020064552392213e-8,0.001548824072026234,-5.0581979693915296e-5,4.033985817256759e-8,0.0015492146318262102,-5.0772290610955474e-5,4.047669746431854e-8,0.0015496851936439822,-5.091443598787875e-5,4.057438892398452e-8,0.001550201601146154,-5.0973893683465014e-5,4.0607169310144533e-8,0.001550719547427848,-5.093895551994056e-5,4.0567056747315524e-8,0.0015511979549022272,-5.082132789363123e-5,4.0464060310906736e-8,0.001551609085796503,-5.064930767517722e-5,4.032070429909841e-8,0.001551942485882253,-5.045777032215602e-5,4.0164179972009266e-8,0.001552203365741154,-5.027932903282667e-5,4.0019527762343134e-8,0.0015524080338778475,-5.0138911795649996e-5,3.990557662144009e-8,0.0015525789206599471,-5.005169954767954e-5,3.983352487266917e-8,0.0015527405622942454,-5.0023207216840704e-5,3.980713258549693e-8,0.001552916795278977,-5.005024771803662e-5,3.982350168918181e-8,0.0015531287739189376,-5.012197934084325e-5,3.987384769919168e-8,0.0015533932025365111,-5.022080731770897e-5,3.99441559610026e-8,0.0015537202826231122,-5.03234457482546e-5,4.0016025565273536e-8,0.0015541112665716941,-5.0402810390084915e-5,4.0068239562396716e-8,0.0015545561079804125,-5.0431489448755314e-5,4.007959506236113e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json new file mode 100644 index 000000000..c6ac96168 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":15000,"numberOfSamples":1000,"samples":[0.001555032396790159,-5.038717964716439e-5,4.003321453737454e-8,0.001555507240340409,-5.025945257220019e-5,3.992178064606655e-8,0.0015559433318249748,-5.005568561411016e-5,3.975199831316558e-8,0.0015563086828940746,-4.9802949292686764e-5,3.9545822083813816e-8,0.001556587031841404,-4.9543375923704664e-5,3.9336583092513e-8,0.0015567845028372617,-4.93232976794034e-5,3.9160317297773175e-8,0.0015569291408115862,-4.9179757456819175e-5,3.904518941710335e-8,0.0015570631279621951,-4.912957061070448e-5,3.90031151041951e-8,0.0015572306984882043,-4.916483994647903e-5,3.902661169621281e-8,0.0015574660511056152,-4.9255840502179806e-5,3.9091477245714126e-8,0.0015577847760354089,-4.9359606772293576e-5,3.9163823082464017e-8,0.001558180685115808,-4.943135773630568e-5,3.920908834205859e-8,0.0015586283968716341,-4.943566203060656e-5,3.920059314584998e-8,0.0015590906701226305,-4.9354497209498185e-5,3.9125494924869697e-8,0.001559528261058972,-4.919020584318819e-5,3.8986728207848124e-8,0.0015599093591160292,-4.896289913685733e-5,3.880070214408021e-8,0.0015602159244718476,-4.870367300374791e-5,3.8591890031225615e-8,0.001560445583043622,-4.844627081761637e-5,3.838637217885279e-8,0.0015606095190522666,-4.821988699048854e-5,3.8206389463064e-8,0.001560728059333107,-4.80447105719932e-5,3.8067072967328046e-8,0.0015608258215469178,-4.7930366808124216e-5,3.797538689472998e-8,0.0015609276655558022,-4.787644642721989e-5,3.793059714039383e-8,0.0015610558505919753,-4.7874043041353836e-5,3.792543115973339e-8,0.0015612281647851558,-4.7907464781617856e-5,3.794734148986789e-8,0.0015614564996265033,-4.795579391508165e-5,3.797969902153523e-8,0.0015617453775785114,-4.7994480662788104e-5,3.8003106795686565e-8,0.001562090231917282,-4.799751763502489e-5,3.7997236526191586e-8,0.0015624757732016965,-4.7940913074933274e-5,3.7943666553683704e-8,0.0015628755385377238,-4.780797264952134e-5,3.783002608138753e-8,0.0015632543909054244,-4.759591895225801e-5,3.765503864336205e-8,0.0015635755508337965,-4.7321569326116703e-5,3.743272490582087e-8,0.0015638118247210714,-4.702212301492192e-5,3.719276938020053e-8,0.0015639572183669657,-4.674759666086147e-5,3.697442350326965e-8,0.0015640325431972783,-4.654548661616456e-5,3.681443353406246e-8,0.0015640803149591668,-4.644389332460276e-5,3.673389012822279e-8,0.0015641503210691414,-4.644165242496307e-5,3.673070606589074e-8,0.0015642829369577056,-4.651013021168292e-5,3.678135043023996e-8,0.0015644977495392904,-4.660446073429612e-5,3.685000664095114e-8,0.001564790749643378,-4.6677917336542896e-5,3.6900071652951433e-8,0.001565138707406003,-4.66938238368795e-5,3.690350083708066e-8,0.0015655073435626183,-4.663241657433939e-5,3.6845954665167155e-8,0.0015658602190323327,-4.649255514773499e-5,3.672776169544263e-8,0.0015661663607259592,-4.628936931980565e-5,3.656170224679889e-8,0.0015664055799049252,-4.6049225283354464e-5,3.636883604376693e-8,0.001566571002171141,-4.580336936715299e-5,3.6173502381504967e-8,0.0015666687673390187,-4.558160277952096e-5,3.599852488215996e-8,0.0015667154033415197,-4.5407215387777025e-5,3.586148463513818e-8,0.0015667338355941623,-4.529393320932333e-5,3.577253994149994e-8,0.0015667490993197454,-4.524500274399756e-5,3.573380667359368e-8,0.0015667846174289822,-4.5254024907903564e-5,3.57399848967389e-8,0.001566859497029681,-4.5306834496840176e-5,3.5779734964378544e-8,0.0015669868024443458,-4.5383715412729446e-5,3.583733887760147e-8,0.001567172455798627,-4.546158479647085e-5,3.5894430294282084e-8,0.0015674144103284765,-4.551618411695069e-5,3.593183701499408e-8,0.001567701899164982,-4.5524599621765035e-5,3.593172347162997e-8,0.0015680149455750063,-4.5468646452923546e-5,3.588034316011282e-8,0.001568325023881159,-4.533952995396979e-5,3.577163595791014e-8,0.001568598375261144,-4.514331996072684e-5,3.561129614715066e-8,0.0015688033307539359,-4.490516831986402e-5,3.5419775786897466e-8,0.0015689213635770478,-4.4668520678280764e-5,3.5231422956829793e-8,0.0015689580930293371,-4.448560774152507e-5,3.508694038347068e-8,0.001568947072838441,-4.439966029933874e-5,3.501951652065551e-8,0.0015689406813127415,-4.442653532989222e-5,3.5040594280255434e-8,0.0015689905208410501,-4.454694343553021e-5,3.5134005465375e-8,0.0015691279470960945,-4.471462114836585e-5,3.526264408522862e-8,0.001569355167197491,-4.4874982251366504e-5,3.5383351783517066e-8,0.0015696491590304815,-4.498328840192346e-5,3.5461324901144965e-8,0.0015699730086184231,-4.5014843868502684e-5,3.547806086334234e-8,0.0015702878466824224,-4.496644962533722e-5,3.5432227789964445e-8,0.0015705615045717492,-4.48522455988792e-5,3.5336015448358164e-8,0.0015707731361774711,-4.469737825179658e-5,3.520983386424041e-8,0.0015709146371371892,-4.453167337270511e-5,3.507720338549927e-8,0.0015709899450492496,-4.4384204168804375e-5,3.4960569188722246e-8,0.0015710129446352492,-4.427899769327988e-5,3.487815813513884e-8,0.0015710044338982897,-4.4232035758685976e-5,3.484187409746818e-8,0.0015709885901114629,-4.424966839076787e-5,3.48562113954969e-8,0.0015709893763831153,-4.4328433769242266e-5,3.491813422291662e-8,0.0015710273252120134,-4.4456174728882454e-5,3.501786728147512e-8,0.001571117095259444,-4.4614146603934006e-5,3.514044529398255e-8,0.0015712659471281585,-4.4779625550250765e-5,3.526772890807883e-8,0.0015714729990209998,-4.492865339998087e-5,3.5380643711257126e-8,0.0015717290886569444,-4.503882672267935e-5,3.5461540303863484e-8,0.0015720171486412,-4.509218250304847e-5,3.549662088853352e-8,0.0015723131710548195,-4.507838065681111e-5,3.547847663955526e-8,0.0015725883317389549,-4.499835421555663e-5,3.540880348366659e-8,0.001572813307826608,-4.486786800809496e-5,3.5300892636416496e-8,0.0015729655070056204,-4.47191603474519e-5,3.518058646081875e-8,0.0015730384980441499,-4.459776227937817e-5,3.5083578249073555e-8,0.0015730502214990328,-4.4551776967474605e-5,3.504702004926623e-8,0.0015730436787471955,-4.461436338745037e-5,3.5095992048822466e-8,0.0015730749295945277,-4.478695231412046e-5,3.5230609633398364e-8,0.00157319126570817,-4.5034672737442647e-5,3.542266299781257e-8,0.0015734115792861226,-4.529940702276995e-5,3.562602881073632e-8,0.0015737208148722149,-4.552319788898638e-5,3.5795178558746185e-8,0.0015740799139331147,-4.5667994072365434e-5,3.590075376760617e-8,0.0015744426094396393,-4.572297761098429e-5,3.593523410445762e-8,0.0015747694654922382,-4.570060260613509e-5,3.5909545233455296e-8,0.0015750350883362262,-4.56275210357777e-5,3.584556214181634e-8,0.0015752294134122743,-4.5535604842148e-5,3.576877953266378e-8,0.0015753556604648073,-4.545534529408837e-5,3.5703062165524755e-8,0.0015754271119554817,-4.541175214597163e-5,3.566756900441209e-8,0.0015754637850900197,-4.5422021566715475e-5,3.567516845886349e-8,0.0015754892419881964,-4.549435685857388e-5,3.5731726192643936e-8,0.0015755275323007985,-4.562767745693644e-5,3.5835969133508226e-8,0.0015756002822981585,-4.581213815904196e-5,3.597985887669808e-8,0.0015757240290649212,-4.603051129355547e-5,3.6149580268519345e-8,0.0015759080778055216,-4.626046736804536e-5,3.632726928230143e-8,0.0015761532032229398,-4.6477532670966515e-5,3.6493374497356665e-8,0.0015764513190264005,-4.66583682351069e-5,3.662937540080888e-8,0.0015767861221216862,-4.6784116146357104e-5,3.67205887315865e-8,0.0015771347357232419,-4.6843579857850895e-5,3.6758772560147956e-8,0.0015774703483009739,-4.683599304438294e-5,3.67442426941251e-8,0.0015777659552356682,-4.677317302149219e-5,3.66873186351272e-8,0.0015779995237324785,-4.668049190430199e-5,3.660873387655922e-8,0.0015781605555831091,-4.659528839149842e-5,3.6538079166891776e-8,0.0015782567852510353,-4.656091594072024e-5,3.650901070819981e-8,0.0015783179633283798,-4.6615418475760236e-5,3.655049543919046e-8,0.0015783922903835324,-4.677665068892878e-5,3.667544840847755e-8,0.0015785325756434202,-4.703036852583066e-5,3.687171431896692e-8,0.0015787756427616659,-4.733035159097787e-5,3.7102367094230025e-8,0.0015791259181678027,-4.761430923312568e-5,3.731827295238525e-8,0.0015795538411506713,-4.7828037828527396e-5,3.747709330858676e-8,0.0015800096969891477,-4.7943878769038486E-05,3.7557792145692596e-8,0.0015804431624417705,-4.796481847401571e-5,3.756375094216574e-8,0.0015808178057632656,-4.791635491291735e-5,3.7516101368887467e-8,0.0015811164141571583,-4.783405291768669e-5,3.744360223405161e-8,0.0015813392677104443,-4.775314048922322e-5,3.737423693485045e-8,0.0015814993203580124,-4.7702326404354844e-5,3.733035174588052e-8,0.0015816171643790661,-4.7701193814970105e-5,3.7326791516613286e-8,0.0015817169630395575,-4.775965776778595e-5,3.737071389079256e-8,0.001581823347515752,-4.787832470052812e-5,3.7462041637598934e-8,0.0015819588828547596,-4.8049258257063996e-5,3.7594106726625155e-8,0.0015821417963573898,-4.8257082895207296e-5,3.775446258471748e-8,0.0015823838479101892,-4.848060164321304e-5,3.792608585212836e-8,0.001582688504544025,-4.869520808633535e-5,3.8089269531459865e-8,0.0015830498625370153,-4.887615170356731e-5,3.822428825087552e-8,0.0015834527637300596,-4.9002351733972964e-5,3.8314560752223585e-8,0.0015838743628422021,-4.906026034512833e-5,3.834982706901485e-8,0.001584287221216587,-4.904715037019271e-5,3.832875105474419e-8,0.001584663741938823,-4.897310145628491e-5,3.826032241557493e-8,0.001584981463061841,-4.8861079857009655e-5,3.8163607031293117e-8,0.0015852285820703014,-4.874466991235223e-5,3.8065608345197424e-8,0.0015854088600154176,-4.8662962215500585e-5,3.7997004979177486e-8,0.0015855444217866606,-4.86522846509656e-5,3.798563784368472e-8,0.001585674261819128,-4.8735533803462465e-5,3.804836085608511e-8,0.001585846375312292,-4.891189807186035e-5,3.818334234181005e-8,0.00158610348310477,-4.9151982596995845e-5,3.836657757562266e-8,0.001586466654834368,-4.9403489989380824e-5,3.8556531405909456e-8,0.0015869251102463237,-4.960807810621859e-5,3.870740581132169e-8,0.0015874391429179613,-4.9722343633764594e-5,3.8785587350351096e-8,0.0015879553631793688,-4.973190214442801e-5,3.878064452942808e-8,0.001588425577199708,-4.9652024693980827e-5,3.870567071163837e-8,0.00158881977381429,-4.951725979120483e-5,3.8588846273972866e-8,0.0015891295065786543,-4.936775952074638e-5,3.84623889278333e-8,0.001589364066660281,-4.9238715531157035e-5,3.8354092314337146e-8,0.001589543909685928,-4.9154994199223596e-5,3.8283168581558065e-8,0.0015896945618050432,-4.9129902713118106e-5,3.825948659678869e-8,0.0015898422153512498,-4.916611627099987e-5,3.8284520145138256e-8,0.001590010859028341,-4.925727610695112e-5,3.8352726691160195e-8,0.0015902202966968217,-4.938958761833569e-5,3.845280876708773e-8,0.0015904844846205953,-4.954336749390981e-5,3.8568874325898195e-8,0.0015908099083882816,-4.969485381752708e-5,3.868182932013065e-8,0.0015911941068452644,-4.98187279964764e-5,3.8771413773902485e-8,0.0015916248545581027,-4.989160905264646e-5,3.881908380631811e-8,0.0015920807276100831,-4.9896318601345885e-5,3.881152013111638e-8,0.0015925336582621405,-4.982618528736371e-5,3.874409592893164e-8,0.0015929536328127007,-4.9688213379708714e-5,3.862330576383604e-8,0.0015933149629505758,-4.950379940089145e-5,3.846710078351864e-8,0.001593602808933612,-4.930610263244153e-5,3.830248200720968e-8,0.0015938182399501703,-4.913404445176729e-5,3.8160453318297506e-8,0.0015939802243672306,-4.902380951458289e-5,3.806916042959481e-8,0.0015941233988982489,-4.899946750049259e-5,3.8046581250505863e-8,0.0015942911880484664,-4.906498251129774e-5,3.80945375169188e-8,0.0015945249563040758,-4.920032285756388e-5,3.8196040630227036e-8,0.0015948515164234465,-4.9364207196608636e-5,3.8317796980507725e-8,0.001595273159867582,-4.950449066879408e-5,3.841854809931519e-8,0.0015957650230228916,-4.9573895929635576e-5,3.846143646287539e-8,0.0015962822947114133,-4.954513058246872e-5,3.842577890144347e-8,0.0015967748230214939,-4.941856956430488e-5,3.8312929742037596e-8,0.001597202494943064,-4.921934317902047e-5,3.814375061431865e-8,0.0015975448239908775,-4.898645979137916e-5,3.794978155712491e-8,0.0015978022649466863,-4.876005227964857e-5,3.7762998553756675e-8,0.0015979913135114392,-4.85719625681952e-5,3.76083609760703e-8,0.0015981373497028673,-4.84414879329937e-5,3.750059586381275e-8,0.0015982682896983585,-4.837523496803743e-5,3.744429677813117e-8,0.0015984102235238262,-4.8369073369492696e-5,3.743563223650375e-8,0.0015985848577516198,-4.8410619737028296e-5,3.746436079232389e-8,0.0015988080578801715,-4.848147621960483e-5,3.751556089859576e-8,0.0015990887787054714,-4.8559129023742496e-5,3.7571077107145096e-8,0.0015994279675657184,-4.861890144868653e-5,3.761106919377434e-8,0.0015998175105410416,-4.8636534469734454e-5,3.761614354464905e-8,0.0016002397772522405,-4.859177185400766e-5,3.757032802152641e-8,0.0016006686543139628,-4.84728413566226e-5,3.74647259539885e-8,0.0016010729910405593,-4.828097347843213e-5,3.7301095421887124e-8,0.0016014227983081818,-4.8033231546302496e-5,3.709395135898375e-8,0.0016016972164009232,-4.776158920159305e-5,3.686957478771082e-8,0.001601891799677878,-4.750708267512769e-5,3.6661070725469196e-8,0.0016020220967839574,-4.730984733590426e-5,3.65002268054441e-8,0.0016021214376728508,-4.7197895387483466e-5,3.640855159267248e-8,0.0016022329539292035,-4.7178441191331395e-5,3.6390568883612766e-8,0.001602398098868516,-4.723486700987873e-5,3.64317778525816e-8,0.0016026451775172069,-4.7330459524417435e-5,3.6502037536061675e-8,0.0016029812826023223,-4.741790311922242e-5,3.6563402100527594e-8,0.0016033900211863004,-4.7451924030049034e-5,3.658023478305435e-8,0.0016038359142873748,-4.7401493578198037e-5,3.65287527576269e-8,0.0016042743565764664,-4.725778830099e-5,3.6403069368047857e-8,0.0016046639296792753,-4.703526837810497e-5,3.621574128865795e-8,0.0016049768310006606,-4.676579911472799e-5,3.599284252644777e-8,0.0016052041001474093,-4.6488499312397777e-5,3.576575444073776e-8,0.0016053547788864799,-4.623936983449527e-5,3.556292473478258e-8,0.0016054506685802667,-4.604404725371659e-5,3.540424269592429e-8,0.00160551955904301,-4.591491456251917e-5,3.529894528530359e-8,0.0016055893304846428,-4.585176544402924e-5,3.5246319584402404e-8,0.0016056839738281931,-4.584435487657563e-5,3.523780378361235e-8,0.0016058214226180075,-4.58754099005351e-5,3.525934967930275e-8,0.0016060125662822487,-4.5923316964371105e-5,3.5293484731850514e-8,0.0016062607469574757,-4.5964330399595076e-5,3.5321033008763995e-8,0.0016065612721366269,-4.597465556251913e-5,3.5322825752794e-8,0.001606900939181552,-4.5932990607520925e-5,3.528185027009399e-8,0.0016072580949436541,-4.582396800827508e-5,3.518611857277115e-8,0.0016076041773001588,-4.564246758849356e-5,3.503214741997083e-8,0.001607907835484071,-4.539791130326102e-5,3.482829369055841e-8,0.001608142149154005,-4.511646354493401e-5,3.4596304332457856e-8,0.0016082937279128775,-4.483839603063741e-5,3.4368956580540236e-8,0.001608370164011681,-4.460905850485839e-5,3.418262319337986e-8,0.0016084013367679887,-4.4465215778220584e-5,3.4066244784300986e-8,0.0016084321421592992,-4.442209614898366e-5,3.4031040378216796e-8,0.0016085087032214472,-4.4467328910789975e-5,3.406590890538271e-8,0.001608663854204168,-4.4564751128790306e-5,3.414084287148784e-8,0.0016089078261996121,-4.466603533873435e-5,3.4216585652257157e-8,0.0016092268749752002,-4.472491235101269e-5,3.425621097733665e-8,0.0016095888815234746,-4.470896660568734e-5,3.4234524970492415e-8,0.00160995294459917,-4.46061700180591e-5,3.414304169545714e-8,0.0016102797685153603,-4.442554150736995e-5,3.39901449867369e-8,0.001610540291413511,-4.41928249660299e-5,3.379729090404697e-8,0.001610720877149768,-4.3942959524330366e-5,3.3592785051752095e-8,0.0016108243718107255,-4.3711535533740247e-5,3.340493987008991e-8,0.0016108673896750982,-4.352740556905542e-5,3.325631883018611e-8,0.0016108751528596623,-4.340803798367828e-5,3.31602500419108e-8,0.0016108756639389974,-4.3358117340029234e-5,3.31199083561361e-8,0.00161089471982018,-4.33708154841172e-5,3.312942713946964e-8,0.0016109525410755215,-4.34306101333567e-5,3.317612870807587e-8,0.0016110620470242626,-4.351655218140907e-5,3.3243045504261954e-8,0.001611228317562383,-4.360524372648092e-5,3.331122931252226e-8,0.0016114486396584151,-4.367330914275547e-5,3.336174083792286e-8,0.0016117127150576606,-4.3699607289291936e-5,3.33775293772246e-8,0.0016120029665654158,-4.366764384768521e-5,3.3345510827283086e-8,0.0016122953248352881,-4.35685848202546e-5,3.3259070099345036e-8,0.0016125613483437497,-4.340490324202378e-5,3.312093756709973e-8,0.0016127727551766623,-4.319382193216696e-5,3.294576076085041e-8,0.0016129088996316033,-4.296843215561775e-5,3.276074107332174e-8,0.0016129659137071207,-4.277350269527232e-5,3.260204841704383e-8,0.0016129634518711477,-4.2654123502679954e-5,3.250560511019986e-8,0.0016129434192342419,-4.263951160928507e-5,3.249413087936494e-8,0.0016129578689934336,-4.272950726670111e-5,3.25664702196115e-8,0.001613050232896208,-4.2892278302879625e-5,3.2696007974918103e-8,0.0016132395138366183,-4.307566567224347e-5,3.2840080832235315e-8,0.0016135153781361821,-4.3225967007183096e-5,3.295532521363271e-8,0.0016138447598283675,-4.330446141592195e-5,3.3011068605873004e-8,0.0016141845061787268,-4.329558915141256e-5,3.299579503566333e-8,0.0016144937858859182,-4.320654916003372e-5,3.29165093334752e-8,0.0016147426836319956,-4.3061418898431364e-5,3.2793617549553344e-8,0.0016149162538619413,-4.28932148940195e-5,3.2654235700933185e-8,0.0016150148382885333,-4.273622151749938e-5,3.252591778532962e-8,0.0016150517857130536,-4.261972946654225e-5,3.243173477682972e-8,0.001615049514803641,-4.256367933918242e-5,3.238701919898679e-8,0.0016150347633862986,-4.2576490174574447e-5,3.239787068664833e-8,0.0016150339039934956,-4.265505690214593e-5,3.24613058418649e-8,0.0016150690590622733,-4.278649690659109e-5,3.2566675877575025e-8,0.0016151554483356746,-4.2951022505443604e-5,3.269788817933618e-8,0.0016153001048231429,-4.312527285417708e-5,3.283598386574173e-8,0.0016155017602802555,-4.328548587995333e-5,3.2961656880308e-8,0.0016157514557302796,-4.3410193344149555e-5,3.305749480030836e-8,0.0016160335151886938,-4.348253336100209e-5,3.310998203842222e-8,0.0016163267962227231,-4.3492450229067064e-5,3.311139396130571e-8,0.001616606420595729,-4.343902077762299e-5,3.306167660919614e-8,0.001616846570836147,-4.3332918110579625e-5,3.297027424956425e-8,0.0016170251774682734,-4.319829401359851e-5,3.285736904569684e-8,0.0016171308087405997,-4.307222907662207e-5,3.2753160720529384e-8,0.0016171704476762414,-4.299915965162309e-5,3.2693234113441636e-8,0.0016171742841552047,-4.301865193973153e-5,3.2708769773927315e-8,0.0016171918923307148,-4.314894035091985e-5,3.281350053431754e-8,0.0016172768691222427,-4.337450691395369e-5,3.299396166424684e-8,0.0016174652144145727,-4.364756211844907e-5,3.321089173978478e-8,0.0016177597932134746,-4.390561146011057e-5,3.341354613711286e-8,0.0016181304852361284,-4.4095543629212986e-5,3.3559243265705895e-8,0.0016185284692897027,-4.4190547319258514e-5,3.362705585213057e-8,0.0016189045522376445,-4.4193243891010715e-5,3.362020601659291e-8,0.0016192223969067512,-4.412817824935237e-5,3.355967969498163e-8,0.0016194638193470891,-4.403063195720452e-5,3.34748138358053e-8,0.0016196280163832983,-4.393679585500097e-5,3.339511192107193e-8,0.0016197277267549035,-4.3877154423368346e-5,3.334489133236136e-8,0.0016197845593948158,-4.387287847418416e-5,3.334056960624522e-8,0.0016198245204375643,-4.3934319125600074e-5,3.3389732573910446e-8,0.0016198739737394417,-4.4060948688515964e-5,3.3491313790702704e-8,0.001619956137050907,-4.424248547766236e-5,3.3636593203828094e-8,0.0016200882954145463,-4.4460987523551896e-5,3.381084517949932e-8,0.0016202798937417601,-4.469366279624242e-5,3.399550450501883e-8,0.0016205316675254457,-4.4916122131234496e-5,3.417072218106146e-8,0.0016208358841783572,-4.51056635939364e-5,3.431804144775011e-8,0.0016211775123474187,-4.524417861154815e-5,3.442285758382958e-8,0.0016215360341788234,-4.532053562216261e-5,3.447647579529873e-8,0.0016218877589150979,-4.5332465127465866e-5,3.4477688314315185e-8,0.0016222086413283134,-4.528794941479019e-5,3.4433800071019065e-8,0.0016224777898770169,-4.520602795248432e-5,3.436102856785716e-8,0.0016226820080681198,-4.511649275684907e-5,3.428394416218811e-8,0.0016228212897336288,-4.505716598228851e-5,3.423303906504118e-8,0.0016229139005976808,-4.50670885186496e-5,3.423920259833186e-8,0.0016229978830992289,-4.51749217202737e-5,3.432456868826437e-8,0.0016231246866747196,-4.538503437297744e-5,3.449162408965321e-8,0.0016233428870291516,-4.566853319778398e-5,3.4716252957965794e-8,0.0016236772248806965,-4.596812991238768e-5,3.495178509204106e-8,0.0016241152647686152,-4.621869465816446e-5,3.514559949367053e-8,0.0016246116056889723,-4.637312377459764e-5,3.526003661180751e-8,0.0016251072872445914,-4.6418152194176277e-5,3.5285198490338464e-8,0.0016255516901675028,-4.637296697358738e-5,3.523771443245092e-8,0.0016259155653828902,-4.627592173555477e-5,3.5149685697300395e-8,0.0016261928281600965,-4.616943668607092e-5,3.5056106184870745e-8,0.0016263953747431522,-4.608946050777786e-5,3.4986134383754507e-8,0.00162654592076792,-4.606055522365073e-5,3.4959174040392114e-8,0.0016266717530924076,-4.6094961601108544e-5,3.498436583192719e-8,0.0016268002162611959,-4.619362578856872e-5,3.506170277704274e-8,0.0016269555762756986,-4.6347898809298577e-5,3.5183591772346576e-8,0.0016271567027249208,-4.654151467710764e-5,3.533649211716943e-8,0.0016274153179251607,-4.675286847043376e-5,3.550269075582101e-8,0.0016277348011426761,-4.695766887346226e-5,3.566236234788382e-8,0.0016281097039318963,-4.7132008983412574e-5,3.5796030279421156e-8,0.0016285262644494334,-4.7255678611228e-5,3.5887315314142226e-8,0.001628964073625187,-4.731526564371127e-5,3.5925567937765023E-08,0.0016293987695045343,-4.7306594472402196e-5,3.5907931482636357e-8,0.0016298055166128098,-4.723617482978707e-5,3.5840485560798704e-8,0.0016301629750232944,-4.7121376003895105e-5,3.573820180050115e-8,0.0016304574112304933,-4.698912835410786e-5,3.562359354313474e-8,0.001630686636381212,-4.687296006046646e-5,3.552402309108488e-8,0.001630863266571223,-4.6807921698255846e-5,3.546744809793738e-8,0.001631016074302961,-4.6822961021669483e-5,3.5476346222796364e-8,0.0016311873490471736,-4.6931285427303824e-5,3.556023149782128e-8,0.0016314241196807519,-4.712134705140385e-5,3.570874980570606e-8,0.0016317631244090534,-4.7353656267366736e-5,3.5889370924150126e-8,0.0016322143049490748,-4.756904084464057e-5,3.605411987293246e-8,0.0016327523237028758,-4.770869469055887e-5,3.615570802256036e-8,0.001633323721960312,-4.7737093003807625e-5,3.616600609540491e-8,0.0016338673630050457,-4.7654512699828896e-5,3.608614967055138e-8,0.0016343363161102794,-4.7492623882838964e-5,3.59428498486487e-8,0.0016347097760828822,-4.729839554612501e-5,3.577507367476015e-8,0.0016349924051370127,-4.7117130386448616e-5,3.5619987353530545e-8,0.0016352061343948639,-4.6981902350859326e-5,3.550426387925348e-8,0.0016353807083681227,-4.691028273741784e-5,3.544154910868567e-8,0.0016355464804455415,-4.690570628738172e-5,3.543383998937961e-8,0.001635730112170018,-4.696057989449839e-5,3.5474262687520425e-8,0.0016359523601496132,-4.705941012943231e-5,3.5549738432914185e-8,0.0016362269041772656,-4.718145036852111e-5,3.56431208201011e-8,0.0016365595879771274,-4.730304536267612e-5,3.5735016865504467e-8,0.0016369478987237219,-4.7400035126582016e-5,3.58056778292684e-8,0.0016373808483354118,-4.7450543227840547e-5,3.583728050603426e-8,0.0016378397017732427,-4.7438197284311285e-5,3.581663456998011e-8,0.0016383000265438497,-4.7355354305080354e-5,3.573790790644766e-8,0.001638735210162438,-4.720557229499285e-5,3.5604668453241686e-8,0.0016391211394910926,-4.700451726643738e-5,3.5430520082254106e-8,0.001639441306452008,-4.6778640180967995e-5,3.5237790208829276e-8,0.0016396912690668532,-4.6561377647454084e-5,3.5054142350092676e-8,0.0016398813658379573,-4.63872399230719e-5,3.490753406266736e-8,0.0016400368292994823,-4.628458200577974e-5,3.4820292858860436e-8,0.0016401946504560447,-4.6268117996810935e-5,3.480322538106792e-8,0.0016403967479677747,-4.6332728578918845e-5,3.485095674241419e-8,0.001640679685853359,-4.645083249127904e-5,3.494018708827335e-8,0.0016410627568417529,-4.657595311703952e-5,3.5032828146860476e-8,0.0016415385136823188,-4.665404102506928e-5,3.5085209016852697e-8,0.0016420712361589218,-4.6640593747802424e-5,3.506183028304087e-8,0.0016426066758982037,-4.651680204060536e-5,3.49483030632206e-8,0.0016430902029990438,-4.6296213477060036e-5,3.4756616314912035e-8,0.0016434846325752775,-4.601807762842053e-5,3.451956176891535e-8,0.0016437792010674768,-4.573164001443794e-5,3.4277753576294015e-8,0.0016439873944463735,-4.5480182565328244e-5,3.406648234300473e-8,0.0016441377649539473,-4.5291435015766347e-5,3.390791520498886e-8,0.0016442637177816871,-4.517553440841134e-5,3.38096166616314e-8,0.0016443960339398652,-4.512789702654878e-5,3.376713660815342e-8,0.0016445588953631549,-4.5133752929414504e-5,3.3767884966551584e-8,0.0016447684565497988,-4.517231429766106e-5,3.3794572068923304e-8,0.001645032669366525,-4.521994135279829e-5,3.382772789479797e-8,0.0016453514524502528,-4.5252519765481794e-5,3.3847558228796395e-8,0.0016457168505185967,-4.524759349498278e-5,3.38356608525806e-8,0.001646113327512554,-4.51867851078022e-5,3.3777059144320585e-8,0.0016465187233436285,-4.5058731090684236e-5,3.366270182651552e-8,0.0016469065595708819,-4.4862213010709696e-5,3.349209230451183e-8,0.0016472501485759548,-4.460855757214049e-5,3.327522050357837e-8,0.0016475282892311342,-4.43219688174928e-5,3.303267631530774e-8,0.001647731361928809,-4.40365769207798e-5,3.279298525555044e-8,0.0016478658173717641,-4.378990661504161e-5,3.2587010223876336e-8,0.001647955012278325,-4.361395560197095e-5,3.244050743190803e-8,0.0016480353368982224,-4.352634140384957e-5,3.236693816783387e-8,0.0016481481573200063,-4.352430208745986e-5,3.236282743263174e-8,0.0016483294908475749,-4.358362185466893e-5,3.240727442369534e-8,0.001648600066709863,-4.366323577305269e-5,3.2466074614676396e-8,0.0016489585077819739,-4.371486073861877e-5,3.249977289857885e-8,0.0016493799815096145,-4.369565905864213e-5,3.247396466644824e-8,0.0016498216574363398,-4.35805854427313e-5,3.236916312326058e-8,0.0016502342591044501,-4.337016148742985e-5,3.2186868815840264e-8,0.0016505762173780565,-4.309020706568123e-5,3.194909432152713e-8,0.0016508250968513124,-4.278317246005813e-5,3.1691092721698956e-8,0.0016509819009967624,-4.24946924788503e-5,3.1450271221881416e-8,0.0016510674183862332,-4.226105950962592e-5,3.125597438215787e-8,0.0016511135338679924,-4.210202576888828e-5,3.112374663814163e-8,0.0016511538874274358,-4.201993406387043e-5,3.105483497910188e-8,0.0016512170388640625,-4.200324771532353e-5,3.1039256218679945e-8,0.0016513230147448136,-4.2031673250908966e-5,3.106005739207479e-8,0.0016514824899899535,-4.2080862105879425e-5,3.109711887696447e-8,0.0016516973653265966,-4.212590433392133e-5,3.1129923067476226e-8,0.001651961729402234,-4.214373526750093e-5,3.113947244255304e-8,0.001652262709403183,-4.2115034434587586e-5,3.11098777670916e-8,0.001652581282236162,-4.20262355409554e-5,3.103010807540562e-8,0.001652893563089459,-4.1871968498026697e-5,3.089609413234407e-8,0.0016531733119630543,-4.165773999853627e-5,3.071294747399099e-8,0.001653396304072018,-4.1401950749318465e-5,3.0496512296258735e-8,0.0016535465337220673,-4.113559677284715e-5,3.027291157231968e-8,0.00165362283822673,-4.08978653952933e-5,3.007468972951524e-8,0.001653643051829214,-4.072709688518788e-5,2.993320892854408e-8,0.0016536425379715574,-4.064915069866908e-5,2.986905479463843e-8,0.0016536658656256423,-4.0667642322225216e-5,2.988415848613424e-8,0.0016537538623654171,-4.076077998128367e-5,2.995949305378407e-8,0.0016539310239152949,-4.088682206365838e-5,3.0059909699632935e-8,0.0016541982039326847,-4.099610396545309e-5,3.0144299811144e-8,0.0016545328263749025,-4.1044953793367646e-5,3.0177129842224954e-8,0.0016548957129889686,-4.100692229408898e-5,3.013755445295461e-8,0.0016552417765755723,-4.0878540058739154e-5,3.0023865014476645e-8,0.0016555313813681053,-4.0678744800547455e-5,2.985267628556814e-8,0.0016557394578348126,-4.0442706059349526e-5,2.965356616713717e-8,0.0016558602205119905,-4.0212091256584694e-5,2.9460936650144332e-8,0.0016559066064064827,-4.002467175107929e-5,2.9305507808049016e-8,0.0016559051411805651,-3.990618815504244e-5,2.9207810627581598e-8,0.0016558883208421219,-3.986641734804314e-5,2.9175190181454984e-8,0.0016558871094012825,-3.989970995789232e-5,2.920244204328383e-8,0.0016559255239323612,-3.9988717521732396e-5,2.9274958922300416e-8,0.0016560179934640134,-4.010939295998521e-5,2.9372803922459204e-8,0.0016561690600313398,-4.023567907279301e-5,2.947446435780696e-8,0.0016563744709726966,-4.0343077329543915e-5,2.9559704687070583e-8,0.0016566227473716701,-4.04110569171678e-5,2.9611550177314757e-8,0.0016568967011817656,-4.0424765170366424e-5,2.9617783814663727e-8,0.0016571748725286567,-4.03766005139679e-5,2.9572361572399208e-8,0.001657433277921752,-4.026798280415287e-5,2.9476932544257488e-8,0.0016576481341211992,-4.011122108290574e-5,2.9342315929308953e-8,0.0016578002161897344,-3.993068140079735e-5,2.918927620055278e-8,0.0016578808882250792,-3.97616016784514e-5,2.904730413787855e-8,0.0016578983842147038,-3.964455859766971e-5,2.894986463588264e-8,0.0016578810457861806,-3.961480375790006e-5,2.8925550308629004e-8,0.0016578735047228827,-3.968893422226867e-5,2.8987194852995764e-8,0.0016579242628156493,-3.985510074322592e-5,2.9124022121367424e-8,0.0016580686098759247,-4.007348282468502e-5,2.9302307407495906e-8,0.001658315212483153,-4.028875236110224e-5,2.9475907260284677e-8,0.0016586433615687947,-4.044883713349159e-5,2.9601907087753384e-8,0.0016590113970561915,-4.0520869931719907e-5,2.9653810852602028e-8,0.0016593709065407672,-4.049825768358674e-5,2.9627222749183985e-8,0.0016596801558158162,-4.039855087642855e-5,2.953777937619335e-8,0.0016599128451770951,-4.025546688761349e-5,2.9414208659192474e-8,0.001660061372670357,-4.010894002692455e-5,2.928985879812469e-8,0.0016601355508499426,-3.999598249842553e-5,2.9195098085642385e-8,0.0016601582578794414,-3.994386969418339e-5,2.9151836997324146e-8,0.0016601594601349523,-3.9966285990856224e-5,2.9170608546724392E-08,0.0016601699239930832,-4.006254573710791e-5,2.9250175101477995e-8,0.0016602158041532625,-4.021951416375853e-5,2.9379253301896273e-8,0.0016603149537395255,-4.041536412718664e-5,2.9539614735345927e-8,0.00166047527124585,-4.062408817363606e-5,2.970971399095024e-8,0.0016606948895783432,-4.081978853524619e-5,2.986812443718438e-8,0.0016609636296508186,-4.098007900947471e-5,2.9996308350286483e-8,0.0016612650174455234,-4.108841983012459e-5,3.0080601450579956e-8,0.0016615783991599132,-4.113565076063209e-5,3.01135932639863e-8,0.00166188105966781,-4.11211016170598e-5,3.009513534055636e-8,0.001662150531071203,-4.105352714493535e-5,3.0033097660775586e-8,0.0016623675379770072,-4.095183539624763e-5,2.994381510048298e-8,0.0016625201033940193,-4.0844962473662907e-5,2.98517361833591e-8,0.0016626087554811723,-4.0769446539057265e-5,2.9787188477707118e-8,0.0016626514160071732,-4.0762994359918156e-5,2.9780965991072815e-8,0.0016626848298044925,-4.0853432310140516e-5,2.9855291758414986e-8,0.0016627585180696237,-4.104557297078488e-5,3.001319945286181e-8,0.0016629196343020275,-4.1312810810254054e-5,3.023184378109478e-8,0.0016631936622173485,-4.1601319751516236e-5,3.046615302114082e-8,0.0016635717482644979,-4.1848343784879263e-5,3.0664058183648755e-8,0.0016640132555107746,-4.200576477773202e-5,3.0786057280139574e-8,0.0016644620386205267,-4.205590491481198e-5,3.0818301607812385e-8,0.001664866364125141,-4.201279974388258e-5,3.0773509768777413e-8,0.001665192705554029,-4.1912072651471524e-5,3.068227045198648e-8,0.0016654301308830564,-4.1797159168452974e-5,3.0581274453788686e-8,0.0016655875286445104,-4.170783384293948e-5,3.050359333944092e-8,0.001665687465604892,-4.167319984191924e-5,3.0472896827926416e-8,0.0016657594905155892,-4.170874776273719e-5,3.050124412626773e-8,0.0016658342301060726,-4.181625386895793e-5,3.058929521132896e-8,0.0016659386770511526,-4.1985505643195065e-5,3.0727965256502515e-8,0.0016660927790692734,-4.2197234556937535e-5,3.0900934221248055e-8,0.001666307394327278,-4.242676039351328e-5,3.108761361993264e-8,0.0016665836116936171,-4.2647885737481854e-5,3.1266263776837525e-8,0.0016669133750296294,-4.2836615240290816e-5,3.141699700450582e-8,0.0016672812040082632,-4.29742538784887e-5,3.1524353127941986e-8,0.001667666583854231,-4.3049585079543835e-5,3.157918783389978e-8,0.0016680466219054927,-4.306016694156729e-5,3.1579840829446867e-8,0.0016683988209936053,-4.3012919060955386e-5,3.153264421759085e-8,0.0016687039684606657,-4.2924075892586436e-5,3.145177637443578e-8,0.001668949248977301,-4.281847186208641e-5,3.135844372913255e-8,0.001669131786259909,-4.272775819299064e-5,3.127914542178871e-8,0.0016692623804481766,-4.268653070428464e-5,3.1242302733313314e-8,0.0016693680627836978,-4.272526972232355e-5,3.1272440060728026e-8,0.0016694908319522278,-4.286013130087455e-5,3.138195636848311e-8,0.0016696795079151228,-4.3082236687797025e-5,3.156257050561017e-8,0.0016699738397906113,-4.335263606913009e-5,3.178138863954782e-8,0.0016703860640257925,-4.3610062290433165e-5,3.1987399692878435e-8,0.0016708909850968417,-4.3792311883293744e-5,3.212916881254575e-8,0.0016714333005318656,-4.3861116917503015e-5,3.217546090751692e-8,0.0016719492822700806,-4.3815726814167675e-5,3.2126524444803504e-8,0.0016723897475633752,-4.368843070089595e-5,3.201025739742718e-8,0.0016727324810957033,-4.352796787840965e-5,3.1868119479992646e-8,0.0016729818078562674,-4.338203342372647e-5,3.174024705968066e-8,0.001673160510358554,-4.3286058936851166e-5,3.165596355869807e-8,0.0016733001997954202,-4.325918304672302e-5,3.1630534790235667e-8,0.0016734335563792723,-4.3305040518058526e-5,3.166611119385737e-8,0.0016735892269826305,-4.3414715646800075e-5,3.1754482304429493e-8,0.0016737888324904195,-4.357023755789901e-5,3.188016234879414e-8,0.0016740453537005702,-4.3748057320064645e-5,3.202330368510447e-8,0.0016743624861162748,-4.392241829557162e-5,3.216241408654458e-8,0.0016747348092937828,-4.406860454410632e-5,3.227695616684352e-8,0.0016751487805059524,-4.416603666815915e-5,3.234987839857888e-8,0.001675584637718124,-4.420100590072595e-5,3.236992864406305e-8,0.0016760191120139118,-4.4168658691226686e-5,3.23333885762874e-8,0.0016764286255676625,-4.407397693962139e-5,3.224493873197347e-8,0.0016767926831136699,-4.393169599546051e-5,3.211753662941352e-8,0.001677097237930815,-4.3765093105344423e-5,3.197123217472216e-8,0.00167733777658621,-4.360358105039846e-5,3.183091478114156e-8,0.001677521869398556,-4.347902774846859e-5,3.172303510741116e-8,0.0016776707408900074,-4.342049118287758e-5,3.167116295241453e-8,0.0016778187422698135,-4.3447130391136005e-5,3.1690241873688606e-8,0.0016780089503785252,-4.3560098509420256e-5,3.178016652122048e-8,0.0016782833720448765,-4.373614563117936e-5,3.192080369790514e-8,0.0016786683666438333,-4.3927655024510755e-5,3.207221484054373e-8,0.001679160369115784,-4.407367191046424e-5,3.2183808817329206e-8,0.0016797209875307913,-4.412114009758808e-5,3.221188471697183e-8,0.0016802880403294148,-4.404672142738793e-5,3.213771971384632e-8,0.001680798773740542,-4.386597338792192e-5,3.197519004817064e-8,0.0016812121713359505,-4.362439078443936e-5,3.176318558267004e-8,0.0016815186777889915,-4.337739128303645e-5,3.1548644038694827e-8,0.0016817358173011794,-4.317163234212843e-5,3.137068706839119e-8,0.0016818964774662018,-4.303518866881324e-5,3.125235326029229e-8,0.0016820373053456571,-4.2976515779093504e-5,3.1199916976096325e-8,0.0016821908517579908,-4.298835334932385e-5,3.120645643391533e-8,0.001682381643870257,-4.305295001771544e-5,3.125647495228362e-8,0.0016826248641123465,-4.314669659029766e-5,3.1329875743603594e-8,0.0016829262935964223,-4.3243765750394774e-5,3.1404959032322505e-8,0.0016832827993444842,-4.3319058823132525e-5,3.1460773886099394e-8,0.0016836831808576592,-4.335081474193989e-5,3.147921387142313e-8,0.0016841094761317773,-4.332309858073908e-5,3.144709006843145e-8,0.0016845389965708768,-4.322812581928537e-5,3.1358136502702837e-8,0.0016849472827916928,-4.30680097516396e-5,3.121454317459761e-8,0.001685311817324549,-4.28553785051464e-5,3.102747616737498e-8,0.0016856160259362443,-4.2612465496661675e-5,3.081620600067579e-8,0.0016858529647612876,-4.2368472572295754e-5,3.060568908899294e-8,0.0016860279929869306,-4.2155252212118004e-5,3.042272064814904e-8,0.0016861597397253318,-4.2001707138160697e-5,3.029110352696416e-8,0.001686278802546357,-4.192753075558542e-5,3.0226450956112963e-8,0.0016864236511896307,-4.1937096150845514e-5,3.023131644925384e-8,0.0016866333005143353,-4.20148809990313e-5,3.029172471873377e-8,0.0016869370383114897,-4.212468985170035e-5,3.0376837396555156e-8,0.0016873432300061099,-4.221528826700933e-5,3.0443795692792346e-8,0.0016878316433975797,-4.223370069387507e-5,3.044875659726567e-8,0.0016883549945588567,-4.214339067565662e-5,3.0361907947096335e-8,0.0016888524992501178,-4.193939125212146e-5,3.017996755366323e-8,0.0016892708942925403,-4.165129888299081e-5,2.992858118803242e-8,0.0016895823148465297,-4.1331399559831654e-5,2.9652240492607542e-8,0.0016897900659125485,-4.103474076847829e-5,2.9397395175287495e-8,0.0016899216625505006,-4.080203475990938e-5,2.919799465346154e-8,0.0016900157054978312,-4.0652031392961096e-5,2.906915313908238e-8,0.0016901099208097574,-4.058288462987776e-5,2.900853004866035e-8,0.0016902339270298944,-4.057817378667731e-5,2.900165126974593e-8,0.0016904065626526063,-4.061354355146046e-5,2.9027644312851774e-8,0.0016906360051758417,-4.0661950119559325e-5,2.9063648467584324e-8,0.0016909209995482196,-4.069723028481099e-5,2.9087710885649258e-8,0.0016912522654108416,-4.069653884596306e-5,2.9080721860103752e-8,0.0016916138646757722,-4.064230977992161e-5,2.9028017183053914e-8,0.0016919847467131485,-4.052416230559773e-5,2.8921020015667242e-8,0.0016923408945919195,-4.034078146507427e-5,2.8758904768726176e-8,0.0016926584456100585,-4.0101338254094135e-5,2.854984370404633e-8,0.0016929177886920088,-3.98256830559316e-5,2.8311126828899853e-8,0.001693108077881154,-3.954252987433632e-5,2.8067479641023334e-8,0.0016932310746483276,-3.928519728252996e-5,2.7847258747180767e-8,0.0016933029691601435,-3.908519792267514e-5,2.767686433700739e-8,0.0016933530634665743,-3.896487647791898e-5,2.7574483226122663e-8,0.0016934189419301243,-3.893091195901987e-5,2.7544749748504323e-8,0.0016935386906464923,-3.897054727601237e-5,2.7575867805514548e-8,0.001693741560057379,-3.905203356829756e-5,2.7640332995878002e-8,0.0016940391412425884,-3.9130122676386634e-5,2.7699808677760945e-8,0.0016944196388182435,-3.9156405028759944e-5,2.7713881316001143e-8,0.0016948479443695268,-3.909270277009998e-5,2.7651188701418565e-8,0.0016952732925359264,-3.892369137957591e-5,2.749979593321849e-8,0.0016956435737868081,-3.8663481150373246e-5,2.7272496371780773e-8,0.001695921508217519,-3.835205250275875e-5,2.7003629854952092e-8,0.0016960956761315402,-3.804202367397545e-5,2.67378143191e-8,0.0016961815319577094,-3.778160361537539e-5,2.6515529524935576e-8,0.001696213032473906,-3.7601416121365983e-5,2.6362069074866936e-8,0.0016962301457196613,-3.750973613700963e-5,2.628370233701135e-8,0.0016962680770975457,-3.749551816840239e-5,2.627045669394839e-8,0.0016963512376621233,-3.753538910232288e-5,2.63021853253086e-8,0.0016964917453452192,-3.7600818583413475e-5,2.635465438290942e-8,0.001696690651419292,-3.766350660714986e-5,2.6404007688425848e-8,0.001696940137771745,-3.769874102950349e-5,2.642947829630893e-8,0.0016972256658882062,-3.7687335396604675e-5,2.6414948818137022e-8,0.0016975277902204365,-3.761694740849289e-5,2.635007890531258e-8,0.001697823895555182,-3.7483365373189244e-5,2.6231474474216885e-8,0.0016980904064073249,-3.729186542931282e-5,2.6063916854335785e-8,0.0016983059629982868,-3.705818431813839e-5,2.5861193564983613e-8,0.00169845567523588,-3.6808209557159376e-5,2.5645733638452276e-8,0.0016985358748413822,-3.6575286342219624e-5,2.544614117888997e-8,0.0016985578725676185,-3.6394393189292205e-5,2.5292069524213555e-8,0.0016985486004877865,-3.629367901585675e-5,2.5206946956193076e-8,0.001698546470920179,-3.628561471787852e-5,2.5200532434859682e-8,0.0016985925376170278,-3.6361141746669543e-5,2.5264171502710526e-8,0.0016987192823167937,-3.648970911878939e-5,2.537113473313952e-8,0.0016989407603901555,-3.66260131869023e-5,2.548261022146134e-8,0.0016992475797464068,-3.672165020583402e-5,2.5557724392811732e-8,0.0016996084606618878,-3.673811638230782e-5,2.5564517650592807e-8,0.001699977956475142,-3.6657310285023185e-5,2.5488638588697726e-8,0.0017003082070326627,-3.648654916289649e-5,2.5337305501061796e-8,0.001700561508238771,-3.625653060246809e-5,2.5137301531646965e-8,0.0017007199892369825,-3.601259358681587e-5,2.492738326789755e-8,0.0017007892677775634,-3.580192599678626e-5,2.474739066190967e-8,0.0017007949978842718,-3.566104751616369e-5,2.462773297309177e-8,0.0017007740285271689,-3.560774970729352e-5,2.4582760104628268e-8,0.001700763881614479,-3.5639540723169225e-5,2.4609678123756305e-8,0.0017007942876682992,-3.5737747088271245e-5,2.4692199666377635e-8,0.0017008827935677405,-3.5874468764077714e-5,2.48064931342209e-8,0.0017010342865269056,-3.601946403066804e-5,2.4926953335125145e-8,0.0017012429683338664,-3.614526778038245e-5,2.503041713192252e-8,0.0017014952046849267,-3.623023427960677e-5,2.5098644185563178e-8,0.001701772238022168,-3.626002631665762e-5,2.5119562344499273e-8,0.0017020524196195597,-3.6228338899696296e-5,2.5087946189913077e-8,0.0017023131682198593,-3.613749747676565e-5,2.500601481098576e-8,0.0017025331952084945,-3.599911636755302e-5,2.488403054979358e-8,0.001702695545569224,-3.583443484893609e-5,2.4740519688495516e-8,0.001702791658995604,-3.567341761960704e-5,2.4601345097724025e-8,0.001702825905263925,-3.5551336305842663e-5,2.449660803475595e-8,0.0017028188818827854,-3.550180632355494e-5,2.4454604213756933e-8,0.001702806735149731,-3.5546798682885895e-5,2.4493348244526906e-8,0.0017028341827005904,-3.5686793861779424e-5,2.4612368548798255e-8,0.0017029417119942861,-3.589622192692521e-5,2.4789084250634145e-8,0.001703151464359933,-3.612826882154989e-5,2.4983140816697334e-8,0.0017034584180842351,-3.632857896050061e-5,2.514822835935455e-8,0.0017038313132765339,-3.645226816286234e-5,2.5246595649292e-8,0.0017042226379164888,-3.647699395454146e-5,2.5260079820686068e-8,0.0017045828447247262,-3.640761249596701e-5,2.5193854756660187e-8,0.0017048733046878682,-3.627237682470769e-5,2.5072903100127402e-8,0.0017050744960167964,-3.611354589471979e-5,2.4933747465570844e-8,0.0017051883610562926,-3.597597816658294e-5,2.4814589910546375e-8,0.0017052354342512147,-3.5896752180398834e-5,2.4746512664333185e-8,0.0017052482576193312,-3.589793749996182e-5,2.4747526264296278e-8,0.001705263072666433,-3.598363726072869e-5,2.482032549880074e-8,0.0017053119227668128,-3.614137236019604e-5,2.4953695706256513e-8,0.0017054169711461474,-3.6346798808851755e-5,2.5126630491637535e-8,0.001705587948875609,-3.656997064057401e-5,2.5313627491764613e-8,0.0017058225445119196,-3.678132058142517e-5,2.548965965479151e-8,0.0017061087821257628,-3.69561651974611e-5,2.563388881603951e-8,0.0017064282269366776,-3.70773600928232e-5,2.5731871018470053e-8,0.0017067591018042412,-3.713639521195745e-5,2.5776518819360373e-8,0.0017070789070781516,-3.71335783856623e-5,2.576833424327725e-8,0.001707366647808429,-3.7077896034809675e-5,2.5715344204894712e-8,0.0017076050669122245,-3.6986775316050295e-5,2.563286430776859e-8,0.0017077833482693745,-3.6885519284883346e-5,2.5542879446377526e-8,0.0017079005422884115,-3.6805662765103294e-5,2.547244983570222e-8,0.0017079692563718653,-3.678101653653675e-5,2.545019000338502e-8,0.0017080179220300188,-3.684031594380135e-5,2.549999137370553e-8,0.0017080887479602191,-3.699691368462634e-5,2.5632392147724558e-8,0.001708228641281455,-3.723898589582162e-5,2.583648649016691e-8,0.0017084735851781347,-3.752657719115359e-5,2.607763848747086e-8,0.0017088326289339622,-3.7800822890985845e-5,2.6305464895935834e-8,0.0017092809717665692,-3.800389880699946e-5,2.6470864658603684e-8,0.001709767617820864,-3.810010719756817e-5,2.6543979991628234e-8,0.0017102337850382358,-3.8086965178193554e-5,2.6523588534275293e-8,0.0017106319934249428,-3.799214504651016e-5,2.6434316445958196e-8,0.0017109375331463164,-3.786074079930412e-5,2.6315481437475767e-8,0.0017111503518974585,-3.774050858751181e-5,2.6208213356204093e-8,0.0017112901426587356,-3.767043065840216e-5,2.6145574168089167e-8,0.001711388473927356,-3.767435097338324e-5,2.6147233879245078e-8,0.0017114807478860903,-3.7759148181293965e-5,2.6218181852708225e-8,0.0017115993915441882,-3.791616629237784e-5,2.6350243451075947e-8,0.0017117688340202747,-3.812478479964005e-5,2.6525321161408846e-8,0.0017120025462314225,-3.8357269218783055e-5,2.671957407701288e-8,0.0017123022368902155,-3.858401705662783e-5,2.690781030939024e-8,0.0017126589667248331,-3.8778319536625255e-5,2.706742096037333e-8,0.0017130556713426438,-3.892000575518932e-5,2.718139609955358e-8,0.0017134704463890348,-3.8997637220543705e-5,2.72401837338603e-8,0.0017138799079658143,-3.900926090925543e-5,2.7242381927571813e-8,0.0017142621560916798,-3.896209930041389e-5,2.719452965369347e-8,0.0017145992769997747,-3.887164408049795e-5,2.7110327165076998e-8,0.0017148795732618073,-3.876038090260755e-5,2.7009443934541433e-8,0.0017150997739135154,-3.8656079592503165e-5,2.691587804537622e-8,0.0017152674011576832,-3.858919935674702e-5,2.6855564023675893e-8,0.001715402930080424,-3.858850645778573e-5,2.68525620088811e-8,0.0017155403030105689,-3.867411814540851e-5,2.6923223505940072e-8,0.001715723354598753,-3.884849496986257e-5,2.706875788258036e-8,0.0017159957908326042,-3.9088518326831626e-5,2.7268754434345864e-8,0.0017163851403779347,-3.9344697300168935e-5,2.748066663980295e-8,0.001716886993958065,-3.955318428218216e-5,2.7650053898035193e-8,0.0017174602847125158,-3.965909042471542e-5,2.773040269966326e-8,0.001718040134972025,-3.963938085916244e-5,2.770265841257851e-8,0.0017185625897166842,-3.9511228867599055e-5,2.758236823583223e-8,0.0017189868062355465,-3.932167724591736e-5,2.7410713552494807e-8,0.001719303790073166,-3.912724285345024e-5,2.7236765021706585e-8,0.0017195315916373054,-3.897569321704473e-5,2.710159348901865e-8,0.0017197039490144403,-3.889639604552238e-5,2.7029929542711243e-8,0.001719859026622647,-3.889874932274322e-5,2.7028998797406246e-8,0.0017200313178398767,-3.897534491821806e-5,2.7091549749431207e-8,0.0017202469671751624,-3.910684938799904e-5,2.7200319928931065e-8,0.001720521602018453,-3.926695176135516e-5,2.7332412797781222e-8,0.001720859794259045,-3.942689817955544e-5,2.7463158757262513e-8,0.001721255728863236,-3.955955466122989e-5,2.756947544016638e-8,0.0017216948873827532,-3.9642868900642176e-5,2.7632707506931933e-8,0.001722156569161592,-3.966254350579579e-5,2.764085344336467e-8,0.0017226170439005363,-3.9613697538888915e-5,2.7590003469533287e-8,0.001723052976870324,-3.9501301872358064e-5,2.7484764624405265e-8,0.0017234446600947672,-3.933941901930363e-5,2.733763268972299e-8,0.001723778754377761,-3.914951517199835e-5,2.7167486552635708e-8,0.0017240504576373702,-3.8958063040786535e-5,2.6997386666773607e-8,0.0017242650711087881,-3.8793531002493264e-5,2.6851810256787167e-8,0.0017244389431611393,-3.868270733259092e-5,2.675337383241879e-8,0.0017245995113033862,-3.864602832841346e-5,2.671885005626151e-8,0.0017247834536315045,-3.8691681327300336e-5,2.6754311849929e-8,0.0017250313802367769,-3.880929377612953e-5,2.6850034141866425e-8,0.001725377842565471,-3.896581169015178e-5,2.697723630726428e-8,0.0017258375470063556,-3.910800396460535e-5,2.7090318371162557e-8,0.0017263930836693708,-3.917572346874251e-5,2.7138107085967308e-8,0.0017269933872087041,-3.912436180795919e-5,2.7082925689746156e-8,0.0017275689865215494,-3.8945638522437385e-5,2.691835379492017e-8,0.0017280585048235183,-3.86727214245852e-5,2.6673635556659343e-8,0.001728431073422244,-3.836534884152783e-5,2.6400818438587404e-8,0.0017286923868734853,-3.808504387510162e-5,2.61532106623058e-8,0.0017288748816655678,-3.787530232705404e-5,2.5968120288942417e-8,0.0017290217154868146,-3.7754199534558863E-05,2.5860493154658515e-8,0.0017291734675064128,-3.771726995413944e-5,2.582562501534354e-8,0.0017293607820238672,-3.7744848247661723E-05,2.584579636728525e-8,0.001729602000315515,-3.780948874960963e-5,2.5896883802857644e-8,0.001729903599395464,-3.788165973355425e-5,2.595331727889163e-8,0.0017302617181777903,-3.7933690493989186e-5,2.5991389794231897e-8,0.0017306640141175572,-3.794259510943676e-5,2.5991547940454676e-8,0.001731091755867424,-3.789224556048095e-5,2.594015958103042e-8,0.001731522255539111,-3.7775051882364856e-5,2.5830937167328825e-8,0.0017319317604426708,-3.7593037290670407e-5,2.5665905426726304e-8,0.0017322987686243735,-3.735795299004614e-5,2.545555029736884e-8,0.0017326074067128012,-3.709011144855787e-5,2.5217806685687195e-8,0.0017328503457029842,-3.6815919057722917e-5,2.4975834819967113e-8,0.001733030801250284,-3.6564297546596944e-5,2.4754770932095832e-8,0.001733163245050693,-3.636230112525841e-5,2.4577788776660804e-8,0.0017332725692263016,-3.6230386059595666e-5,2.446195888578073e-8,0.001733391561335409,-3.6177777041230204e-5,2.4414354594100277e-8,0.0017335564073636222,-3.619837183913728e-5,2.4428778625296542e-8,0.001733799814146551,-3.626816379255833e-5,2.4483858210644657e-8,0.0017341419144584454,-3.634606741287226e-5,2.454398795466479e-8,0.0017345806750870597,-3.638048933612316e-5,2.4565021790145197e-8,0.0017350858869240476,-3.632295309658755e-5,2.4505843202086038e-8,0.0017356024788424108,-3.614624025006184e-5,2.4343764994910206e-8,0.0017360663216553012,-3.585874629062718e-5,2.408675934782713e-8,0.0017364275421104804,-3.550486845228883e-5,2.377374351553505e-8,0.001736668888599713,-3.514850340937432e-5,2.34602712311622e-8,0.001736808661045457,-3.4848567953173e-5,2.3197265336036242e-8,0.001736888544939611,-3.464037865199596e-5,2.301485336433552e-8,0.0017369558513605297,-3.4530440416808935e-5,2.29179595201377e-8,0.001737049707092597,-3.4502354376221574e-5,2.289165624475731e-8,0.0017371947516276504,-3.4526982344086895e-5,2.2910199010581445e-8,0.0017374008073448293,-3.4571512886728264e-5,2.2944984052831473e-8,0.001737665467048844,-3.460545560147143e-5,2.2969695297045837e-8,0.001737977290689824,-3.460390307791772e-5,2.296299541437974e-8,0.0017383186141002541,-3.454918032334136e-5,2.290982677063709e-8,0.0017386679295325906,-3.4431804356590167e-5,2.2802188582601254e-8,0.0017390021734525031,-3.42511906097866e-5,2.2639776047910924e-8,0.0017392992945751758,-3.40160914722638e-5,2.243042545250072e-8,0.0017395413117880889,-3.374434814309473e-5,2.2189933916874547e-8,0.0017397176600680104,-3.346135952529788e-5,2.1940688488459516e-8,0.0017398281621878566,-3.319689225605055e-5,2.170877243418754e-8,0.0017398847366847004,-3.2980307378858836e-5,2.1519663391740078e-8,0.00173991100205662,-3.283480466826047e-5,2.1393128136041958e-8,0.0017399392899709579,-3.27718231350248e-5,2.1338379242105724e-8,0.00174000521831946,-3.278698042141254e-5,2.1350723083240454e-8,0.001740140572588363,-3.285870325852261e-5,2.1410652793135758e-8,0.0017403655886877377,-3.295034303669861e-5,2.1485963701877946e-8,0.0017406820927880144,-3.301629939579607e-5,2.153721791335664e-8,0.0017410695269251995,-3.301209684177935e-5,2.152643905078453e-8,0.001741486310794703,-3.290702867540473e-5,2.1427864745405244e-8,0.0017418784545159788,-3.269589869418132e-5,2.1237862433750336e-8,0.0017421948525763043,-3.2404476839655194e-5,2.097945465702013e-8,0.001742404370709457,-3.208389090653782e-5,2.069734831489266e-8,0.001742506671572139,-3.179415040864402e-5,2.0443603476147352e-8,0.0017425307722198473,-3.158389373995162e-5,2.0260073766504838e-8,0.0017425223974869423,-3.147622681133658e-5,2.0166207874633754e-8,0.0017425275508909542,-3.146622368211866e-5,2.0157058325399752e-8,0.0017425801811898768,-3.152827253738807e-5,2.020986020759265e-8,0.0017426972860252556,-3.162719052466486e-5,2.02938080720638e-8,0.001742880085460341,-3.172780363660379e-5,2.0378372619537326e-8,0.001743118076178938,-3.180084546028723e-5,2.0438317988914532e-8,0.0017433934077427334,-3.1825558838409014e-5,2.045583270732787e-8,0.0017436844082488409,-3.179033969714021e-5,2.0421013873564265e-8,0.001743968178512343,-3.169263001235832e-5,2.0331783624667846e-8,0.0017442227209409098,-3.153871728518193e-5,2.0193782525411485e-8,0.0017444291701622036,-3.134350069999404e-5,2.002022746940685e-8,0.0017445744879534223,-3.112978763186553e-5,1.9831294365844262e-8,0.0017446545474839863,-3.092639446856581e-5,1.9652370870985962e-8,0.0017446769299296102,-3.0764373350770444e-5,1.9510621046903156e-8,0.0017446621867443558,-3.067120727891532e-5,1.9429795770389297e-8,0.001744642159515886,-3.066382603124781e-5,1.9424111620866493e-8,0.0017446545782597647,-3.074243219545489e-5,1.9492972810802038e-8,0.0017447345609175441,-3.088764647827402e-5,1.961870511808151e-8,0.0017449051754598907,-3.106281392238331e-5,1.9768826171514667e-8,0.0017451700230479688,-3.122163105108318e-5,1.9902887093021913e-8,0.001745510408947374,-3.1319374667683715e-5,1.9982307573413395e-8,0.001745888357283682,-3.1324766347923475e-5,1.998060209584599e-8,0.0017462551360621196,-3.122919694479231e-5,1.989118907219179e-8,0.0017465634988662125,-3.105046157655002e-5,1.9730384470556232e-8,0.001746780545164631,-3.0829192817083005e-5,1.9534083265630877e-8,0.0017468971763283654,-3.06181089004315e-5,1.9348284579479396e-8,0.0017469304559974707,-3.0466979567041213e-5,1.921600927524104e-8,0.001746917542182514,-3.0408580265584186e-5,1.916519343229281e-8,0.001746903536584843,-3.0450937289348743e-5,1.9202135362128732e-8,0.0017469283478326418,-3.057824727716383e-5,1.931250208156185e-8,0.0017470175401144699,-3.075870969388561e-5,1.9468283092315117e-8,0.0017471793662891689,-3.095489208974001e-5,1.9636835355944387e-8,0.00174740696584924,-3.1132521919019314e-5,1.978845734405289e-8,0.0017476831047323403,-3.126577909856488e-5,1.9900875698021727e-8,0.0017479851225330183,-3.1339285687671686e-5,1.9960887050540934e-8,0.0017482888771933986,-3.134799753916344e-5,1.9964247391127438e-8,0.001748571500534339,-3.1296247023240655e-5,1.9914888607216414e-8,0.0017488134063673208,-3.1196725784627565e-5,1.9824099003596076e-8,0.0017490001909731922,-3.106955308858083e-5,1.970973106837139e-8,0.0017491248720657058,-3.0941022082626086e-5,1.9595042768266226e-8,0.0017491904664698418,-3.084128927975832e-5,1.9506546090950694e-8,0.0017492122725144203,-3.080019758367981e-5,1.9470218613974216e-8,0.0017492184473760612,-3.084086291599031e-5,1.950583763271849e-8,0.0017492470171063378,-3.097194995726486e-5,1.9620297100766168e-8,0.0017493381646387358,-3.1181363894115793e-5,1.980227981843363e-8,0.0017495228601829887,-3.143510381205071e-5,2.0021485851797534e-8,0.0017498116793050868,-3.168386290175472e-5,2.023458425088819e-8,0.0017501889553554505,-3.18764773563137e-5,2.039704390946832e-8,0.001750615655745262,-3.197543249573554e-5,2.0476649055390935e-8,0.0017510402683068693,-3.1968199999134966e-5,2.0463276536587624e-8,0.0017514133531797574,-3.187031880307763e-5,2.037138563020928e-8,0.0017517005273633118,-3.1719998107685436e-5,2.0235063634656074e-8,0.001751890219662361,-3.156694813316782e-5,2.009806183335921e-8,0.0017519948081852045,-3.1459214757831945e-5,2.0002203745109712e-8,0.0017520456413406555,-3.14316280501743e-5,1.99773642676767e-8,0.001752083843670919,-3.149863525213701e-5,2.0035412948970665e-8,0.0017521497040240116,-3.1652918673865666e-5,2.0169255510395947e-8,0.0017522736069611874,-3.186951297035694e-5,2.0356620338662876e-8,0.0017524707370152176,-3.211356229077129e-5,2.056690037038114e-8,0.0017527403103441905,-3.234896981308914e-5,2.076865466262888e-8,0.0017530684808992239,-3.254545176213017e-5,2.0935651692450514e-8,0.0017534331318351181,-3.2682714956734884e-5,2.1050408448247448e-8,0.0017538088119477358,-3.275180452227584e-5,2.110531752462392e-8,0.0017541707526388716,-3.275447431229004e-5,2.1102114748483773e-8,0.0017544976901405082,-3.270162706579011e-5,2.105056824283674e-8,0.0017547738024637697,-3.2611589026689284e-5,2.096699993899653e-8,0.0017549902985381242,-3.250844445279376e-5,2.0872790992964694e-8,0.001755147084288628,-3.242014951493518e-5,2.0792620166438958e-8,0.001755254570490484,-3.2375793594230804e-5,2.0751927960372814e-8,0.001755335063281145,-3.2401220502996406e-5,2.0772996896363735e-8,0.0017554223357314845,-3.251259859283147e-5,2.0869356621329078e-8,0.0017555573977173214,-3.2708863724273736e-5,2.1039332104000612e-8,0.0017557790984082053,-3.29660727723672e-5,2.126132814313656e-8,0.0017561108323753565,-3.3238262436040336e-5,2.1494763264115556e-8,0.0017565485849542516,-3.346811995275699e-5,2.1689479904005575e-8,0.0017570576145160576,-3.360552772869162e-5,2.1801953478252693e-8,0.001757581785070488,-3.362585143779291e-5,2.1811245999041253e-8,0.0017580620722044517,-3.353851148587489e-5,2.1726427797049774e-8,0.001758455202278241,-3.3382035778471196e-5,2.158208310470156e-8,0.0017587444079113072,-3.320959575010596e-5,2.1425399176948597e-8,0.0017589399770165945,-3.307263661221911e-5,2.130160656072588e-8,0.0017590722808459125,-3.3008502295315075e-5,2.1243072677899854e-8,0.001759181556547813,-3.3034286998855964e-5,2.1264051244620618e-8,0.0017593078653479616,-3.314644102862432e-5,2.1360602034657684e-8,0.0017594831921096522,-3.332452486865661e-5,2.1514143545573805e-8,0.0017597265437465275,-3.353738875474003e-5,2.1697021326259336e-8,0.001760042245970357,-3.3750244753001815e-5,2.1878713640531822e-8,0.001760421146334321,-3.393124357669487e-5,2.2031497920959415e-8,0.0017608439638752132,-3.405644801825657e-5,2.2134681640893213e-8,0.0017612857471203435,-3.411264048046515e-5,2.2176972713998292e-8,0.0017617204091223166,-3.409797973084421e-5,2.2157031793999206e-8,0.0017621245438929386,-3.402096746414191e-5,2.208259287114386e-8,0.0017624801775086999,-3.3898450706873454e-5,2.1968740632231774e-8,0.0017627765982876126,-3.3753300304850276e-5,2.183585863215288e-8,0.001763011621842634,-3.3612016549370004e-5,2.1707446371806972e-8,0.0017631925713161728,-3.350214912888116e-5,2.1607729651469524e-8,0.0017633370417948848,-3.344913871513708e-5,2.1558783250075647e-8,0.0017634730174059953,-3.347197967528787e-5,2.1576714714329268e-8,0.0017636371116576798,-3.357742597786236e-5,2.1666704084487572e-8,0.0017638691979690627,-3.3753723774377576e-5,2.181772916999189e-8,0.0017642023031790117,-3.396680513750332e-5,2.1999445627985694e-8,0.0017646491667109299,-3.4163476660183754e-5,2.2165086343053056e-8,0.0017651911849654452,-3.428501454789286e-5,2.226334653764835e-8,0.001765778160698935,-3.428858702670496e-5,2.2257091907866984e-8,0.0017663432093342334,-3.416606996623403e-5,2.213983656780172e-8,0.0017668269543614896,-3.3948415208319496e-5,2.193955489711035e-8,0.001767197842766506,-3.369259112538415e-5,2.17070724834961e-8,0.0017674586193811824,-3.34596154530708e-5,2.1496498412280247e-8,0.001767639060592299,-3.329574652596208e-5,2.1348468166328244e-8,0.0017677821871205088,-3.3223440312985864e-5,2.1282180173486558e-8,0.0017679311822968995,-3.324154570836546e-5,2.129578103953367e-8,0.001768120512436396,-3.333086353608994e-5,2.1371561635770116e-8,0.0017683715270797181,-3.346142626072527e-5,2.148260408851196e-8,0.0017686914318105862,-3.3599409128902524e-5,2.1598953117881766e-8,0.0017690744739801523,-3.371291615094851e-5,2.1692652330809286e-8,0.0017695045695388376,-3.3776430454713476e-5,2.1741529840179073e-8,0.0017699588242402324,-3.3773791444695706e-5,2.1731694812881347e-8,0.0017704114732510778,-3.369964876976124e-5,2.1658752122008647e-8,0.0017708378094016797,-3.355943690940463e-5,2.152778106353521e-8,0.0017712176390383754,-3.336799684118138e-5,2.1352151053456795e-8,0.0017715378651225137,-3.314720089247531e-5,2.1151437607701027e-8,0.0017717941126926234,-3.2923077927578334e-5,2.0948840418387312e-8,0.0017719915599731899,-3.272273093629134e-5,2.0768364307715262e-8,0.0017721450953806894,-3.257108279253322e-5,2.063183815712094e-8,0.001772278789586462,-3.248736044869667e-5,2.0555760321616602e-8,0.0017724243969323124,-3.2481099228891417e-5,2.0547838756955484e-8,0.0017726180377305497,-3.2547672204280884e-5,2.06032360891902e-8,0.001772893902096436,-3.26643881516983e-5,2.070137445010743e-8,0.0017732745145420026,-3.278970120097843e-5,2.0805422495871913e-8,0.0017737592672930375,-3.286910117515717e-5,2.0867510935645095e-8,0.0017743165104114895,-3.285007607212869e-5,2.0841794381781585e-8,0.0017748868641271837,-3.27030730663727e-5,2.0702786663879134e-8,0.0017754014530360297,-3.2437768348831866e-5,2.0459662686927267e-8,0.0017758080743716612,-3.2102608481630945e-5,2.015584789108212e-8,0.0017760903595036206,-3.17656634260758e-5,1.985200104905266e-8,0.0017762693117928238,-3.1488255206219554e-5,1.9602496536206447e-8,0.0017763894591366236,-3.13062590108772e-5,1.9438747273234566e-8,0.001776500414190258,-3.12255836885439e-5,1.9365283650061506e-8,0.0017766430268873303,-3.1228419406428315e-5,1.9365541425495753e-8,0.0017768429247380117,-3.128342719222774e-5,1.9411160162745227e-8,0.0017771097947912773,-3.1355028823638904e-5,1.9470365609482324e-8,0.0017774396800211817,-3.141000926638304e-5,1.9513809181670135e-8,0.0017778182926467716,-3.142162035464175e-5,1.951808140830944e-8,0.0017782244717445747,-3.137198226709649e-5,1.946769186203101e-8,0.0017786336024299082,-3.12533185341731e-5,1.9356066032986675e-8,0.0017790209705546684,-3.1068226775794e-5,1.9185763398043137e-8,0.0017793650121143564,-3.08290205222032e-5,1.8967926769402895e-8,0.001779650296646995,-3.055604937514018e-5,1.8720829744334336e-8,0.0017798698743530228,-3.0274995636721267e-5,1.846747256260845e-8,0.001780026632235612,-3.001344158238894e-5,1.8232467517967285e-8,0.0017801335374979842,-2.9797089846618077e-5,1.8038579085288705e-8,0.0017802127450977066,-2.964590951538579e-5,1.7903218620709243e-8,0.0017802935187865058,-2.9570467972433672e-5,1.783518762572123e-8,0.0017804088777299578,-2.9568714404354944e-5,1.7831942719272197e-8,0.0017805907080136712,-2.9623577448738986e-5,1.7877681205500904e-8,0.0017808630276179797,-2.97023326731302e-5,1.7943009994474517e-8,0.0017812337934054229,-2.97595557883807e-5,1.7987695659313328e-8,0.0017816872967592035,-2.9745687070046982e-5,1.7968220015004007e-8,0.0017821813976015835,-2.962172070135213e-5,1.7850629717166458e-8,0.0017826548299887984,-2.9376324177287026e-5,1.762553130680372e-8,0.0017830461959892749,-2.903634032102028e-5,1.731731488754778e-8,0.0017833176117902473,-2.866124927995671e-5,1.6979208783705445e-8,0.001783469533852475,-2.832122375637814e-5,1.6673724822837606e-8,0.0017835376035968266,-2.80706105762117e-5,1.6448993998207882e-8,0.0017835749164607615,-2.793168172891396e-5,1.6324306949224888e-8,0.0017836317390693452,-2.7894493168831586e-5,1.6290136262871556e-8,0.0017837425116183111,-2.7927737072698468e-5,1.6318029727125984e-8,0.0017839222251040216,-2.7991952248573566e-5,1.6372552649405453e-8,0.0017841690180765415,-2.804960543379875e-5,1.6420305148628225e-8,0.0017844690921453375,-2.8070762770376914e-5,1.6434881896134044e-8,0.001784801494145308,-2.803540319002629e-5,1.6398785045025665e-8,0.0017851419554334824,-2.7933929717305372e-5,1.6303760303012625e-8,0.0017854659718042635,-2.7766907604290468e-5,1.6150522430904983e-8,0.0017857515136427459,-2.7544366750350456e-5,1.5948164497142894e-8,0.0017859816002243757,-2.7284609584283965e-5,1.571315251966609e-8,0.0017861467536977667,-2.7012260273114013e-5,1.5467614316026404e-8,0.0017862470230057806,-2.6755286369400636e-5,1.5236648496569402e-8,0.0017862930134701384,-2.654104265296623e-5,1.504470406978934e-8,0.001786305424195102,-2.6391773125555355e-5,1.491146539228525e-8,0.0017863128449208082,-2.6320220335777346e-5,1.4847885035371189e-8,0.0017863478278571186,-2.632612309632168e-5,1.4853112441925018e-8,0.0017864415524204687,-2.639440009895842e-5,1.491303463720827e-8,0.0017866176433893105,-2.649564870787032e-5,1.500094022968379e-8,0.0017868858723667914,-2.6589505322540724e-5,1.5080702406757717e-8,0.0017872368982414784,-2.66314436018206e-5,1.5112903973863852e-8,0.0017876399981771522,-2.6583121415397484e-5,1.5063969741293373e-8,0.0017880463839678022,-2.6424855833963814e-5,1.4917086903880453e-8,0.0017884001103203367,-2.61662566626825e-5,1.4681479769128718e-8,0.0017886554421320897,-2.5848825556468653e-5,1.439459563665528e-8,0.0017887942451537537,-2.5535601758596886e-5,1.4112816495281188e-8,0.0017888338091817063,-2.5289736988679483e-5,1.3892330893168733e-8,0.0017888195185604239,-2.515213106178181e-5,1.3769205429052592e-8,0.0017888063464290775,-2.5129846263159923e-5,1.3749151498984439e-8,0.0017888398156686227,-2.5199537269306553e-5,1.3810764966794239e-8,0.0017889451574657782,-2.5320670226036306e-5,1.391749936516575e-8,0.0017891262814678304,-2.544988601042015e-5,1.4030567902762325e-8,0.0017893708634015488,-2.5550922719877188e-5,1.4117760285831568e-8,0.0017896570726811836,-2.5599109255723216e-5,1.4157333008626661e-8,0.0017899592671993573,-2.5582042811262578e-5,1.4138489270469296e-8,0.0017902519438446774,-2.5498478260559e-5,1.4060321791036643e-8,0.0017905123629933307,-2.535677868794753e-5,1.3930440496755607e-8,0.0017907225488373376,-2.51734072821892e-5,1.3763682625522863e-8,0.0017908711693659085,-2.4971322438834654e-5,1.3580725771725944e-8,0.0017909554371954345,-2.4777821665357153e-5,1.3406151734326352e-8,0.0017909827283962571,-2.462135499749847e-5,1.3265522508586063e-8,0.001790971202300491,-2.4527148765017287e-5,1.3181360162542386e-8,0.0017909485628708425,-2.4512064252896147e-5,1.316846906372442e-8,0.0017909483769799933,-2.457975629539259e-5,1.3229610662378395e-8,0.0017910040460442844,-2.4717652977466054e-5,1.3352913035006776e-8,0.001791141441592685,-2.4897216452611835e-5,1.3512291120867038e-8,0.0017913719494893788,-2.5078198784446382e-5,1.367144672572904e-8,0.0017916878464235458,-2.5216509648907783e-5,1.3791025050547342e-8,0.0017920615866127356,-2.5274345945545365e-5,1.3837668829362787e-8,0.0017924499408709217,-2.5230505604992228e-5,1.3793113821811035e-8,0.001792803043549295,-2.508822447015411e-5,1.3660997294053245e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json new file mode 100644 index 000000000..bf8935107 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":16000,"numberOfSamples":1000,"samples":[0.0017930770944964171,-2.487756201187732e-5,1.3468791504217692e-8,0.0017932476264231187,-2.464987080068864e-5,1.3262714904077391e-8,0.0017933184724985877,-2.446409956071231e-5,1.3095425337680572e-8,0.0017933216314600794,-2.436869143477916e-5,1.3009865564682467e-8,0.0017933067138776958,-2.438639601001157e-5,1.3025800857085489e-8,0.0017933242278720884,-2.450889654783832e-5,1.3135191695059903e-8,0.0017934104016406212,-2.470298517826634e-5,1.330788790362845e-8,0.0017935796118112995,-2.4923857068963115e-5,1.35036193070344e-8,0.0017938254296263332,-2.512860398380717e-5,1.3684062401894767e-8,0.001794127049257825,-2.5285096932882215e-5,1.3820701756483629e-8,0.0017944568919538132,-2.537530987356056e-5,1.389769075082024e-8,0.0017947867111250417,-2.5394724503292413e-5,1.3911234845185292e-8,0.0017950914943699093,-2.5349982163249467e-5,1.3867468677974076e-8,0.0017953516485814604,-2.5256290869559507e-5,1.3780165902829643e-8,0.0017955543110713956,-2.513520274015715e-5,1.3668792904120013e-8,0.0017956944918898108,-2.501264398241291e-5,1.3556752559378335e-8,0.0017957763330320648,-2.4916631576514276e-5,1.3469287614057573e-8,0.0017958142078399008,-2.487403171878831e-5,1.343048298157746e-8,0.0017958328475770424,-2.4906014603702265e-5,1.3459107884232579e-8,0.001795865353512456,-2.5022541802827092e-5,1.3563657130380593e-8,0.001795948122041468,-2.521726303763574e-5,1.3737855679584164e-8,0.0017961127345561176,-2.546517299188524e-5,1.395871521848886e-8,0.0017963766324439365,-2.572537619201675e-5,1.4189187885469435e-8,0.0017967359302593923,-2.5949711291697144e-5,1.4386024761031048e-8,0.0017971637506210216,-2.6095329969824996e-5,1.451109103127541e-8,0.0017976155937020869,-2.6137143168968956e-5,1.4542469045381444e-8,0.0017980404371389018,-2.607573723966647e-5,1.4481422712615806e-8,0.001798394095120732,-2.5938065908348892e-5,1.4352832525648934e-8,0.0017986508156540284,-2.5770774714917362e-5,1.4199014670934582e-8,0.0017988099091846071,-2.5628118914854457e-5,1.4068743101640252e-8,0.0017988956039585806,-2.555773604555096e-5,1.4004458068040699e-8,0.0017989500158965364,-2.558822796060149e-5,1.4031230788508505e-8,0.0017990211621026053,-2.5722340085414784e-5,1.415084222610123e-8,0.0017991498357205768,-2.593791853046823e-5,1.4342850551324464e-8,0.0017993597382745207,-2.6195968610161597e-5,1.4571956673982097e-8,0.0017996538157950808,-2.645239065855816e-5,1.4798559267271849e-8,0.0018000169294873425,-2.666894130169837e-5,1.498852497549383e-8,0.0018004224996779246,-2.6820193009237008e-5,1.5119328433877708e-8,0.0018008399579285909,-2.6895709367472842e-5,1.5181911626012463e-8,0.0018012407279650508,-2.6898643187987404e-5,1.5179375808053418e-8,0.0018016019580566775,-2.6842624017871885e-5,1.512418529733506e-8,0.0018019083507358257,-2.6748422125539742e-5,1.503519386765796e-8,0.0018021529000758112,-2.664111066735776e-5,1.4935106313335826e-8,0.0018023373010458653,-2.654770620791294e-5,1.4848328300519829e-8,0.0018024724205052492,-2.6494772143160663e-5,1.4798742963175621e-8,0.0018025786668415908,-2.6505317999914305e-5,1.4806850211476605e-8,0.0018026854955645365,-2.659451656531552e-5,1.4885891179718516e-8,0.0018028287921071594,-2.6764406036804033e-5,1.5037147763755564e-8,0.0018030448604636129,-2.6999007434058543e-5,1.5245693907824705e-8,0.0018033608554715635,-2.726276700041339e-5,1.5479157196478573e-8,0.0018037839756043577,-2.750560873314212e-5,1.5692371417557645e-8,0.0018042943907072807,-2.767567790489397e-5,1.583886014992919e-8,0.0018048471164087917,-2.7736268154231167e-5,1.5886025345858665e-8,0.0018053841995643509,-2.7679480289528892e-5,1.582737530167465e-8,0.0018058526507647669,-2.752969711011927e-5,1.5685558185452904e-8,0.001806220217685462,-2.73353380759272e-5,1.550478294473961e-8,0.0018064829196074033,-2.715336860705409e-5,1.533667607943918e-8,0.001806663117932587,-2.7033305913710596e-5,1.5225741546222746e-8,0.001806800801895628,-2.7005730814722615e-5,1.5199028506319084e-8,0.0018069420013151019,-2.7077300335566203e-5,1.5261811538653193e-8,0.0018071276684187964,-2.7232000211422743e-5,1.5398964117004876e-8,0.0018073853085648632,-2.7437165696606414e-5,1.5580585890886757e-8,0.0018077246572371043,-2.7652248535832284e-5,1.576998693661435e-8,0.0018081377800550024,-2.7838089562507862e-5,1.5932006675260243e-8,0.0018086029626342595,-2.7964541054522235e-5,1.603977518121356e-8,0.0018090908374324907,-2.8014926126988497e-5,1.607861859878816e-8,0.00180957084697334,-2.7986978508900445e-5,1.6046829753568754e-8,0.0018100165314672806,-2.7890983536707856e-5,1.5953965389800106e-8,0.0018104089137041853,-2.774636589803873e-5,1.5817776136232783e-8,0.0018107380434183873,-2.7577939639375955e-5,1.5660833269492737e-8,0.0018110032945058872,-2.7412588632335316e-5,1.5507519669488106e-8,0.0018112130984671998,-2.727650820984009e-5,1.5381492498527788e-8,0.0018113845185778008,-2.719266881496396e-5,1.5303331370154355e-8,0.0018115426463610783,-2.7177984586301253e-5,1.5287947407869493e-8,0.0018117192686648675,-2.7239724617485946e-5,1.5341380468993828e-8,0.001811949680932402,-2.7371212382235838e-5,1.545703888127489e-8,0.0018122663836599232,-2.754807176709037e-5,1.561247872864076e-8,0.0018126893601793177,-2.772785807579092e-5,1.57692019263019e-8,0.001813215168157243,-2.7856683016959833e-5,1.5878661656300398e-8,0.001813810503341971,-2.788443523714781e-5,1.589593222254393e-8,0.0018144169960900853,-2.7784424994027194e-5,1.5797369795099836e-8,0.0018149690546354657,-2.7567238609616395e-5,1.5593102180247856e-8,0.0018154173615913274,-2.7279217321055754e-5,1.532562475157829e-8,0.001815745477353155,-2.698524284095293e-5,1.5054105867581623e-8,0.001815971625884253,-2.674564379645672e-5,1.4833294082824518e-8,0.0018161376350310534,-2.6598869981665784e-5,1.4697715161200344e-8,0.0018162930699050063,-2.6555272801256695e-5,1.46561098570472e-8,0.0018164816791041126,-2.6600309925083196e-5,1.4694563048089877e-8,0.001816733162707175,-2.6702680190249542e-5,1.4784125685246063e-8,0.0018170600913158257,-2.682355433898887e-5,1.4889335877885533e-8,0.0018174585911996668,-2.6924764974141972e-5,1.4975656178105195e-8,0.0018179114635388195,-2.697514492077015e-5,1.5015123550887387e-8,0.0018183927840198378,-2.69547379106428e-5,1.499003182489609e-8,0.0018188731580403156,-2.6856711418009936e-5,1.4894556739454665e-8,0.001819324793629755,-2.6687029559253713e-5,1.473440683021408e-8,0.0018197256785068433,-2.6462277654925132e-5,1.4524849413287513e-8,0.001820062373922574,-2.6206258898886165e-5,1.428764312060864e-8,0.001820331254382838,-2.5946127881015275e-5,1.4047536963377575e-8,0.001820538445168254,-2.5708755861324498e-5,1.3828946837314153e-8,0.0018206989383891886,-2.5517624437804906e-5,1.365308557110985e-8,0.0018208352337955717,-2.5390152599451144e-5,1.3535489407026761e-8,0.0018209755912363625,-2.5335207243642732e-5,1.34837573147026e-8,0.001821151632775928,-2.5350517985874814e-5,1.3495281869197622e-8,0.0018213945362785741,-2.5420047270152325e-5,1.3555011738893574e-8,0.0018217289276931587,-2.551235675360919e-5,1.363413439824075e-8,0.001822164406689718,-2.5582239942904856e-5,1.3691653129699898e-8,0.001822686655285152,-2.557849948022469e-5,1.3681411343723724e-8,0.0018232531039378613,-2.5459295222371094e-5,1.3565889406493894e-8,0.0018237998026180275,-2.5211254782313133e-5,1.3333435451442727e-8,0.0018242618025331551,-2.48617013791813e-5,1.300934477782622e-8,0.0018245988973076108,-2.4473013353101097e-5,1.2650735273151976e-8,0.0018248114805428112,-2.4119027032174727e-5,1.2325005783849212e-8,0.0018249369229238492,-2.3856916289854328e-5,1.2084104532181132e-8,0.0018250308362240503,-2.371030618670482e-5,1.1949100841989596e-8,0.001825146047330891,-2.366910915234589e-5,1.1910159201163204e-8,0.0018253190675345766,-2.3700474694523012e-5,1.1936747643950821e-8,0.0018255659145471929,-2.3762271034004848e-5,1.1990121606287427e-8,0.0018258842445968248,-2.3813805840709907e-5,1.2033166516185259e-8,0.001826258169929863,-2.382242826521537e-5,1.2036355717542334e-8,0.0018266634773100754,-2.3766769983762126e-5,1.1980573637170289e-8,0.001827072388230482,-2.363782080690576e-5,1.1857967699394822e-8,0.0018274577516185762,-2.343858881848419e-5,1.1671564450583e-8,0.0018277966526101797,-2.318264021823313e-5,1.1433927158541618e-8,0.0018280733241575382,-2.2891668446499556e-5,1.1164967072672481e-8,0.0018282811577905753,-2.259224023359341e-5,1.0889004337993399e-8,0.001828423551827078,-2.231201801919025e-5,1.0631321018346868e-8,0.0018285135003267157,-2.207596922814408e-5,1.0414665395833809e-8,0.0018285721071275558,-2.1903000912757984e-5,1.0256127104231967e-8,0.0018286262706814032,-2.1803209435120533e-5,1.0164594038831645e-8,0.001828705702435555,-2.177583438325039e-5,1.0138909579633824e-8,0.001828839337656277,-2.1807956588344662e-5,1.0166784524005633e-8,0.0018290509329571627,-2.1874064192536067e-5,1.0224554437432966e-8,0.0018293535538177238,-2.1937215282132975e-5,1.027838557907086e-8,0.0018297433561300666,-2.1953289747187514e-5,1.0288214837085777e-8,0.0018301945153309169,-2.1879869760203124e-5,1.0215787794044302e-8,0.001830658946308421,-2.168992779500395e-5,1.0036992338479185e-8,0.0018310753618979378,-2.138679258668782e-5,9.755367998113473e-9,0.0018313889838965569,-2.1011704357252705e-5,9.40893730399691e-9,0.0018315746329431721,-2.063467135717398e-5,9.061841978804914e-9,0.0018316490783180249,-2.0328796754628263e-5,8.780851241439044e-9,0.0018316632653398112,-2.0141677331726018e-5,8.60917634137112e-9,0.001831679395233614,-2.0080681978185537e-5,8.55305072202464e-9,0.0018317476612021335,-2.0117816834583795e-5,8.586332987307337e-9,0.0018318940208144653,-2.0206428881992914e-5,8.665969743081962e-9,0.0018321201082134187,-2.0298263194615822e-5,8.747708166164193e-9,0.001832409908402203,-2.0354458317239478e-5,8.796142458866711e-9,0.00183273774398109,-2.035003732644327e-5,8.788718700893353e-9,0.001833074770107819,-2.027416826766039e-5,8.715846695855356e-9,0.001833393452426999,-2.0128529716534936e-5,8.579316424344743e-9,0.0018336705866361742,-1.992511730302927e-5,8.390268759309309e-9,0.0018338894912187423,-1.968387735533606e-5,8.167058601271752e-9,0.0018340416791292305,-1.943010095958344e-5,7.932910852662894e-9,0.0018341280134618974,-1.9191384559990707e-5,7.713154507289564e-9,0.0018341590816821458,-1.8994066898046752e-5,7.53193522572574e-9,0.0018341544149850127,-1.885940649167221e-5,7.40865932392435e-9,0.0018341403815578727,-1.8800038802715472e-5,7.3546966523347715e-9,0.0018341468535115438,-1.8817250628981883e-5,7.370872897137305e-9,0.0018342029234141627,-1.889956862277312e-5,7.446231414582977e-9,0.0018343321227258867,-1.9023083174690816e-5,7.558447698209529e-9,0.0018345476553118807,-1.9153707945490168e-5,7.676042116963366e-9,0.0018348481083950683,-1.9251549921866032e-5,7.762491329140837e-9,0.0018352144196331546,-1.9277769509678416e-5,7.782530133022137e-9,0.0018356096596253435,-1.920398976117508e-5,7.710681424220857e-9,0.0018359837763515755,-1.9022957466042443e-5,7.540865396769042e-9,0.0018362849741516284,-1.8756908829736255e-5,7.293910761478627e-9,0.0018364766833233455,-1.8457870012827724e-5,7.017737181329629e-9,0.0018365538571077135,-1.8194914639068882e-5,6.775647214996834e-9,0.001836548563460727,-1.803024372589666e-5,6.624410847690285e-9,0.0018365187675594202,-1.7995409567851337e-5,6.592525088216024e-9,0.0018365252877235454,-1.8081331449302935e-5,6.671177914624835e-9,0.0018366101542084223,-1.8246672589318575e-5,6.822077045534804e-9,0.0018367869375824912,-1.8436994200718304e-5,6.995122222991016e-9,0.001837043888830328,-1.8602938875977135e-5,7.145101322978344e-9,0.0018373537387537482,-1.8710583772040503e-5,7.241122599512904e-9,0.0018376837337121634,-1.8743874840279134e-5,7.2687428712580284e-9,0.0018380027530075403,-1.8702372696090056e-5,7.227808403795434e-9,0.0018382852635966235,-1.8597450955179613e-5,7.128926096284541e-9,0.001838513176276471,-1.8448670412689796e-5,6.990149973877557e-9,0.0018386767249291653,-1.8280754164638692e-5,6.8342449477846595e-9,0.0018387750038904136,-1.812090639012062e-5,6.686252226411574e-9,0.0018388162973281307,-1.799601728606697e-5,6.570911706461216e-9,0.0018388179260978472,-1.7929389648419776e-5,6.509607695224068e-9,0.0018388050594228275,-1.7937016075237906e-5,6.516893378261047e-9,0.0018388079846011016,-1.8023966004633595e-5,6.597145459559734e-9,0.001838857713922728,-1.818180313357647e-5,6.742223335637884e-9,0.0018389803552352245,-1.838806035919854e-5,6.9310780933096055e-9,0.0018391912530982262,-1.860858891245793e-5,7.132034188312767e-9,0.0018394902971468079,-1.88029481324306e-5,7.3078518212857724e-9,0.0018398597310770378,-1.8932177661136858e-5,7.422918615431776e-9,0.0018402654168871984,-1.896772954162206e-5,7.451423914551764e-9,0.0018406621235211068,-1.8899934385024923e-5,7.385028293072869e-9,0.0018410028729857332,-1.8743806537061265e-5,7.238049462551088e-9,0.0018412512510457238,-1.8539475868505472e-5,7.047719368366382e-9,0.0018413937282192889,-1.834483799071887e-5,6.86733900839635e-9,0.0018414470718991932,-1.8220140618210308e-5,6.752093172557913e-9,0.0018414557581306575,-1.8208514775956216e-5,6.741217444212319e-9,0.0018414780209857879,-1.8320709364073575e-5,6.844095149750602e-9,0.001841565803992494,-1.8532077021471085e-5,7.037638298125493e-9,0.0018417482230087799,-1.8793447944416692e-5,7.276395121919292e-9,0.001842025845932932,-1.9049480082961622e-5,7.509453930519011e-9,0.001842376034057044,-1.925507263145096e-5,7.69549565376883e-9,0.0018427639401787223,-1.9383990375315344e-5,7.810647629678605e-9,0.0018431531413094465,-1.942958955901095e-5,7.849070713791684e-9,0.0018435127392187048,-1.940088549418417e-5,7.8192866216250315E-09,0.001843820730492911,-1.9317320377072763e-5,7.739348166296656e-9,0.0018440648885501498,-1.9204160908646343e-5,7.632620118984367e-9,0.001844242531542363,-1.9089035068363377e-5,7.524612793811735e-9,0.0018443600647661403,-1.8999259868333292e-5,7.440521812341918e-9,0.001844432549312981,-1.8959307662865297e-5,7.402863667254894e-9,0.0018444829953387927,-1.8987874349045107e-5,7.428729689176291e-9,0.0018445407209490732,-1.9094430440071465e-5,7.52658268876082e-9,0.0018446380463958871,-1.9275761849198014e-5,7.693093256534828e-9,0.001844804951317121,-1.9513700180089063e-5,7.911127592194227e-9,0.0018450622049142106,-1.9775670897407012e-5,8.15036239379623e-9,0.0018454146537959305,-2.0019361155694627e-5,8.37168352380671e-9,0.0018458471645658634,-2.020149491512519e-5,8.53532123115057e-9,0.001846325472916595,-2.0288852030465627e-5,8.610991677718667e-9,0.001846802738334875,-2.0268255874207588e-5,8.587035433849896e-9,0.0018472305526570348,-2.0152106866842266e-5,8.475412368243551e-9,0.0018475714841345342,-1.99772538420524e-5,8.31053358635742e-9,0.0018478096100095864,-1.9796940495792812e-5,8.141712154172403e-9,0.0018479558587613187,-1.9667497884298463e-5,8.020816057287474e-9,0.0018480460497650023,-1.9633092096664974e-5,7.988216118779569e-9,0.0018481313475885142,-1.97130435184807e-5,8.061204673026506e-9,0.0018482635125553158,-1.989628715353263e-5,8.229056332405201e-9,0.0018484798977238869,-2.014547254945726e-5,8.45695909902495e-9,0.0018487937859131421,-2.0409270039150275e-5,8.697434490355547e-9,0.0018491933464550954,-2.0637777460108637e-5,8.904531720257321e-9,0.001849648388562267,-2.0794981895125802e-5,9.04525543618406e-9,0.0018501208603383453,-2.0864590650255843e-5,9.104868950596546e-9,0.0018505745805460858,-2.0849287684095834e-5,9.086145203825255e-9,0.0018509815951685388,-2.0766006244656177e-5,9.004964655845875e-9,0.0018513249009249032,-2.0640121265863943e-5,8.88493947825769e-9,0.0018515986248674762,-2.0500399014916906e-5,8.75275158592604e-9,0.0018518069924697927,-2.037529947986055e-5,8.634737803338043e-9,0.0018519630574627775,-2.029034519449881e-5,8.55444480376467e-9,0.0018520875544509319,-2.0265862670398454e-5,8.530515515536571e-9,0.0018522076118006106,-2.0314479503742223e-5,8.574357895458459e-9,0.001852354640478269,-2.043817792207266e-5,8.68743961998716e-9,0.0018525605725263623,-2.0625343158510295e-5,8.85862825193293e-9,0.0018528519045839407,-2.0849110173348045e-5,9.06276525797922e-9,0.0018532420360760945,-2.1069073571299936e-5,9.262339779435322e-9,0.001853724130935122,-2.123818424609054e-5,9.413907129041965e-9,0.0018542681745039775,-2.13146965067963e-5,9.479118156772436e-9,0.001854825500677946,-2.1275855803305648e-5,9.437327265942164e-9,0.0018553411001434338,-2.1127603421251835e-5,9.294511094167757e-9,0.001855769808091963,-2.0905197786356253e-5,9.083769325899609e-9,0.001856089934500493,-2.066366542445483e-5,8.856377940750694e-9,0.001856309055157489,-2.0461827016597087e-5,8.66688007773098e-9,0.0018564605291198604,-2.0346009610590452e-5,8.557941716365146e-9,0.0018565929794966702,-2.0338609963516525e-5,8.549815123998282e-9,0.0018567566935258077,-2.0434095465034442e-5,8.636794189047838e-9,0.0018569909246059376,-2.0602544164462002e-5,8.790679141975657e-9,0.001857315247217037,-2.079894845221756e-5,8.96952007306406e-9,0.0018577267622189627,-2.097526582003082e-5,9.12880609280628e-9,0.001858203223977554,-2.109175679528336e-5,9.231914666619509e-9,0.0018587104540100233,-2.1124682017155018e-5,9.257156442445109e-9,0.0018592113115679834,-2.106890188932159e-5,9.200104828967708e-9,0.0018596735056705283,-2.0935816127821806e-5,9.07163153057935e-9,0.0018600745996205108,-2.0748452915729757e-5,8.89332379757743e-9,0.0018604039664238258,-2.0535775690622106e-5,8.692194187757801e-9,0.0018606624467996109,-2.032768021272182e-5,8.496037214902576e-9,0.0018608607937328295,-2.0151290741381685e-5,8.329989644194028e-9,0.0018610177895546044,-2.0028404875289557e-5,8.214148845006132e-9,0.0018611584243115355,-1.9973516875703052e-5,8.161728802068476e-9,0.0018613119834204608,-1.999186368250376e-5,8.17725592983337e-9,0.0018615094730483387,-2.0077264157555704e-5,8.254611200906061e-9,0.0018617795921467622,-2.021010824142319e-5,8.375250055651793e-9,0.0018621426777235635,-2.0356759570897997e-5,8.507743574528015e-9,0.0018626030974959807,-2.0472527218197918e-5,8.610594760757943e-9,0.001863142529370494,-2.0510266452106173e-5,8.640213095127023e-9,0.001863718542838287,-2.0434462278556232e-5,8.563932655985352e-9,0.0018642726717816077,-2.0236362154722935e-5,8.374014217097276e-9,0.0018647478436570396,-1.9942109211313427e-5,8.095175761587323e-9,0.001865108368948935,-1.960728289796133e-5,7.779474788722417e-9,0.0018653524017467537,-1.9298711898535704e-5,7.4892916930745e-9,0.0018655107551995035,-1.9072315354648044e-5,7.27659510756275e-9,0.0018656340820196373,-1.895724351204022e-5,7.168151304633016e-9,0.0018657758320747826,-1.895135064135561e-5,7.161416176012306e-9,0.0018659780113648356,-1.9026593337249196e-5,7.229749985625541e-9,0.0018662631207856332,-1.9139791481250695e-5,7.332602529333776e-9,0.0018666323647777408,-1.9244376015289706e-5,7.426524029334083e-9,0.0018670686302071045,-1.93003096381889e-5,7.474374412439072e-9,0.0018675424105708905,-1.9280847880737214e-5,7.451532270409492e-9,0.0018680189994260549,-1.9175704489265866e-5,7.348747503653877e-9,0.0018684654564785955,-1.8990736169104185e-5,7.171778438188237e-9,0.0018688561260398076,-1.8744836865035615e-5,6.938463114669843e-9,0.0018691760026911882,-1.8465188498455326e-5,6.674284503730649e-9,0.001869421833270251,-1.818207784859466e-5,6.407542925266269e-9,0.0018696013388690184,-1.7924257543533537e-5,6.165035437391302e-9,0.0018697312745747144,-1.77154221714517e-5,5.968767927016784e-9,0.0018698350512996898,-1.7571817919185243e-5,5.8337191006715384e-9,0.0018699402886244905,-1.750060390009367e-5,5.76630978226681e-9,0.0018700762544792589,-1.7498573862310598e-5,5.763229760950721e-9,0.0018702708423503566,-1.7551071627329354e-5,5.8104800416812336e-9,0.0018705465025051088,-1.763137263486119e-5,5.882878383752786e-9,0.0018709146903029294,-1.770161615547732e-5,5.945007935726127e-9,0.0018713693790612124,-1.771717503436893e-5,5.955326079857078e-9,0.001871882005628167,-1.7636224585071255e-5,5.875056690709975e-9,0.0018724021730790383,-1.7434179833481032e-5,5.681589270232072e-9,0.0018728684333721528,-1.7118167658035483e-5,5.3819353393236815e-9,0.0018732287172204356,-1.6732355540166632e-5,5.017686966724454e-9,0.0018734616898216,-1.6346704189132433e-5,4.654472798669768e-9,0.0018735862278335242,-1.6031827206181716e-5,4.358367558462995e-9,0.0018736526901350647,-1.583326478782647e-5,4.1717537065880975e-9,0.0018737219046122688,-1.5758804508346698e-5,4.10148922345258e-9,0.0018738443004110933,-1.578241850439683e-5,4.12273758898688e-9,0.0018740479774201498,-1.5858384906640113e-5,4.192354118637595e-9,0.0018743368377812267,-1.5936813363410486e-5,4.2635170100055776e-9,0.0018746952507608576,-1.5975245333576563e-5,4.296582563572818e-9,0.001875095253598817,-1.594505681652756e-5,4.265000879239349e-9,0.0018755037392833745,-1.5833619336192383e-5,4.157239354603041e-9,0.0018758885761289046,-1.5643635440476038e-5,3.976084601740173e-9,0.001876223379869671,-1.539063040568846e-5,3.736258860742264e-9,0.0018764908158095375,-1.5099215718405392e-5,3.460921341786339e-9,0.0018766843555797306,-1.4798700313825205e-5,3.1775739251165955e-9,0.001876808514204054,-1.4518593640800304e-5,2.913862771528727e-9,0.001876877684600156,-1.428449594527703e-5,2.6937304046643276e-9,0.0018769138794313335,-1.4114849713635936e-5,2.534362112040424e-9,0.001876943877891384,-1.4018784813808756e-5,2.444153315210054e-9,0.0018769961556297737,-1.3994930354196748e-5,2.4215928014478305e-9,0.0018770976892354386,-1.4030988542626093e-5,2.454884423634573e-9,0.0018772705481379275,-1.4104015382463982e-5,2.5222631987773908e-9,0.001877528051302119,-1.4181603792678899e-5,2.5931789806121115e-9,0.0018778703569376982,-1.4224713941675174e-5,2.6310160704288327e-9,0.0018782801543122864,-1.4193451439422243e-5,2.598529820729149e-9,0.0018787205590664604,-1.405678212300852e-5,2.4669139600598395e-9,0.0018791386692319275,-1.3805285464980217e-5,2.2276810492311913e-9,0.0018794780123360833,-1.3462303276611882e-5,1.9030504386180313e-9,0.0018796988460152687,-1.3085081939944344e-5,1.5469771882351445e-9,0.001879797376121251,-1.2749246711917046e-5,1.2305366805810725e-9,0.001879810814909188,-1.2520431987685998e-5,1.0152379061173355e-9,0.0018798025069450173,-1.2428480565797385e-5,9.28792039154265e-10,0.0018798356637794984,-1.2459405930458762e-5,9.576569245815327e-10,0.0018799514652937973,-1.2567147881760806e-5,1.058227207885944e-9,0.0018801611228964044,-1.2694459694026742e-5,1.1765668337490139e-9,0.0018804504286041776,-1.2790844470236134e-5,1.2652815802583089e-9,0.0018807898296935043,-1.2822211239622132e-5,1.2925348480468322e-9,0.001881144296639176,-1.2773137375766395e-5,1.244082520275377e-9,0.001881480541304962,-1.2644829708590756e-5,1.1212779543347608e-9,0.0018817714830373492,-1.2451442593087324e-5,9.37573033027889e-10,0.0018819987877392661,-1.2216113471832141e-5,7.147943106851535e-10,0.0018821541835679256,-1.1967040551517974e-5,4.79481554800589e-10,0.001882239823342938,-1.1733614321682521e-5,2.592733145950963e-10,0.0018822677333682823,-1.1542659347071796e-5,7.937878641490489e-11,0.001882258290813125,-1.1414929386642006e-5,-4.073055482831923e-11,0.00188223769665013,-1.1362192719985607e-5,-9.008293919875422e-11,0.001882234648515446,-1.1385337979164145e-5,-6.800108198389007e-11,0.0018822765976668182,-1.147373068275585e-5,1.529829570741141e-11,0.0018823859220090569,-1.1605863972995146e-5,1.3934936610352848e-10,0.0018825762769299201,-1.1751333204930212e-5,2.7535196640362164e-10,0.001882849356696919,-1.1874174668779581e-5,3.8937810798312383e-10,0.0018831923326353601,-1.1937760844475924e-5,4.470257514000792e-10,0.0018835766745060477,-1.1911660763090492e-5,4.198775427362523e-10,0.0018839599006157666,-1.1780441166968134e-5,2.937343558620432e-10,0.0018842923200876947,-1.1552816367157377e-5,7.714292268036392e-11,0.0018845300065070212,-1.1267101431234662e-5,-1.935563353070176e-10,0.001884651848842402,-1.0986979616266467e-5,-4.582805070815646e-10,0.0018846729512961321,-1.0783668473551395e-5,-6.500369715974631e-10,0.001884644026311698,-1.0709107993313308e-5,-7.201687612284614e-10,0.0018846329849430254,-1.0774324376780514e-5,-6.586566194780138e-10,0.0018846977991100334,-1.0946622650667459e-5,-4.966346506891892e-10,0.0018848664449174443,-1.1166459365350037e-5,-2.9038739613313543e-10,0.0018851332005309256,-1.1371807843700045e-5,-9.836030862044166e-11,0.00188546833284025,-1.1516483567944784e-5,3.6072174092010136e-11,0.0018858320534413794,-1.1577196587717038e-5,9.118298144119174e-11,0.0018861858170151932,-1.1551897946543376e-5,6.526251494340663e-11,0.0018864988368209698,-1.1454250824736898e-5,-2.8641386320276168e-11,0.0018867506997908348,-1.130771157982184e-5,-1.683171289939276e-10,0.0018869317981828468,-1.114067253953726e-5,-3.269535468848281e-10,0.00188704288267068,-1.0982683580718171e-5,-4.766790893169354e-10,0.00188709425157458,-1.0861262431198378e-5,-5.915582605683498e-10,0.0018871045582005074,-1.0798915164720963e-5,-6.504092600231872e-10,0.0018870989904794264,-1.0810255077489202e-5,-6.395398827368157e-10,0.0018871065171513206,-1.089946266139451e-5,-5.551558313967678e-10,0.0018871561148395357,-1.1058676341069262e-5,-4.048719775294948e-10,0.0018872723151573511,-1.1267948529405112e-5,-2.077232698081918e-10,0.0018874707273317042,-1.1497174238386989e-5,7.702962172308863e-12,0.0018877543345839755,-1.1710094620244999e-5,2.0709679356946207e-10,0.0018881113731507087,-1.1870079468074387e-5,3.5592247332806187e-10,0.0018885154354453212,-1.1947025394181564e-5,4.2594198011051527e-10,0.0018889282709940963,-1.1924554434572256e-5,4.0198452420754266e-10,0.0018893057509901104,-1.180642796887354e-5,2.8793937793174093e-10,0.0018896072155190882,-1.1620319815144137e-5,1.102325230061882e-10,0.0018898073174633363,-1.141620503858083e-5,-8.378045830706647e-11,0.0018899072882816023,-1.1256680872880053e-5,-2.350144500265779e-10,0.00188994004525897,-1.1199004466727915e-5,-2.8962303888349816e-10,0.0018899634124805416,-1.1274091765243815e-5,-2.187662588737686e-10,0.0018900409279768637,-1.1472911999612212e-5,-3.133758064503063e-11,0.0018902183761997377,-1.1749297526970216e-5,2.2880621691449785e-10,0.0018905085190595347,-1.2038537620544541e-5,5.004579398597872e-10,0.0018908911977333046,-1.2281010673800587e-5,7.273646082903298e-10,0.0018913257026649535,-1.2438746635557551e-5,8.738262880584713e-10,0.001891766418942364,-1.2500025159169855e-5,9.289921702418269e-10,0.0018921745217345054,-1.2474898759061678e-5,9.025856295473614e-10,0.0018925235949496604,-1.2387224374957897e-5,8.173373978207359e-10,0.0018928006012498605,-1.2267242724669224e-5,7.019521780489794e-10,0.001893004532648849,-1.2146219309942353e-5,5.860420989860535e-10,0.0018931444568213974,-1.2052958305120446e-5,4.968374482519974e-10,0.0018932376922635935,-1.201136506885249e-5,4.5688395279176046e-10,0.0018933080932005942,-1.203830971069964e-5,4.820179060546816e-10,0.0018933840198379344,-1.2141431704543413e-5,5.792878687063079e-10,0.0018934954432214392,-1.2317048491958935e-5,7.449904944807481e-10,0.0018936698433884116,-1.2548874791752978e-5,9.63493451044306e-10,0.0018939271289290503,-1.2808571057900438e-5,1.207801973263226e-9,0.0018942745270844783,-1.3059009801183272e-5,1.4426931836520661e-9,0.0018947029628015445,-1.3260512884313262e-5,1.6306445395104082e-9,0.0018951865409454112,-1.3379240786205856e-5,1.739776196090901e-9,0.0018956861193035659,-1.339582085200682e-5,1.7520006276159735e-9,0.001896156784362993,-1.3311821218936873e-5,1.6691149414387627e-9,0.0018965578833635218,-1.315201628144059e-5,1.5148888736049156e-9,0.0018968634955145083,-1.2961201862073039e-5,1.3319718714925833e-9,0.0018970707895216053,-1.27953186054354e-5,1.1734090967998433e-9,0.0018972035254706415,-1.270792499395131e-5,1.0897877058615488e-9,0.0018973082905004745,-1.2734836504746565e-5,1.1147159041982071e-9,0.0018974426469162598,-1.2881765897702211e-5,1.2532161191392723e-9,0.0018976577334179135,-1.3120638566367633e-5,1.4783604413576136e-9,0.0018979817061840188,-1.3397830754750496e-5,1.7391592222003208e-9,0.001898411458923872,-1.3651830597880485e-5,1.9773042111285594e-9,0.0018989162166529016,-1.3832467412215963e-5,2.1453543532283e-9,0.0018994501504002229,-1.3913394698958246e-5,2.218528300226893e-9,0.0018999670934915821,-1.3894285229865015e-5,2.1967560935101533e-9,0.0019004313205916007,-1.3794987368719163e-5,2.0991062793393773e-9,0.0019008222473536457,-1.3646563923406225e-5,1.9552477096692173e-9,0.0019011342862434643,-1.3483210869567092e-5,1.7977502645593472e-9,0.0019013742670453792,-1.3336710126712298e-5,1.656805182705815e-9,0.0019015583445810035,-1.3233251710861967e-5,1.557210441490532e-9,0.0019017093215130678,-1.3191683234416556e-5,1.516718948288368e-9,0.0019018544551819409,-1.322222486221346e-5,1.5448335845441187e-9,0.0019020232614363063,-1.332508798252e-5,1.641518474045382e-9,0.0019022446122891282,-1.3489036976123344e-5,1.7958687511443292e-9,0.0019025425844261994,-1.369058867045455e-5,1.985394636394811e-9,0.0019029310998461496,-1.3895103526272778e-5,2.177098013812628e-9,0.0019034084130146504,-1.4061158291373949e-5,2.3316432829741173e-9,0.0019039536403952983,-1.4148798826174367e-5,2.411188360481643e-9,0.00190452798036301,-1.4130390523376207e-5,2.3896713112052716e-9,0.0019050821403015848,-1.4000599135125858e-5,2.262277159589695e-9,0.0019055688083909521,-1.3781106731241096e-5,2.0499028297317794e-9,0.0019059562148011579,-1.3517137805515713e-5,1.795813482384683e-9,0.0019062378216281627,-1.3266226807941069e-5,1.55488479026225e-9,0.0019064346707243743,-1.3082876840158903e-5,1.3789321851604236e-9,0.0019065897975290977,-1.300402884385789e-5,1.3028645792247607e-9,0.0019067566525288243,-1.3039478647258866e-5,1.335631681489911e-9,0.0019069848668208623,-1.3169664466781716e-5,1.458241594737562e-9,0.0019073072088376596,-1.3351363244590194e-5,1.6292950121476715e-9,0.0019077314104704636,-1.35297729754093e-5,1.7965331398129217e-9,0.0019082393455308658,-1.3653389545506359e-5,1.910981408664566e-9,0.0019087936495511212,-1.368692249063571e-5,1.9391998920108105e-9,0.0019093490888763,-1.36182247050182e-5,1.8698433679372743e-9,0.0019098643504093444,-1.3457815665676977e-5,1.7131785903247102e-9,0.0019103104535418381,-1.3232664882104302e-5,1.49513174647234e-9,0.001910674199703993,-1.2977653683504635e-5,1.2491153226176072e-9,0.001910957383345947,-1.2727836569487273e-5,1.0086216538112337e-9,0.0019111736376836673,-1.2513095263658599e-5,8.021151208985223e-10,0.0019113446910483782,-1.2355262008813369e-5,6.502990133921028e-10,0.0019114970699477254,-1.2266914435896981e-5,5.649887739956633e-10,0.001911659458251913,-1.2250863989869682e-5,5.48651037755953e-10,0.0019118603142655674,-1.2299688915426472e-5,5.939871771107086e-10,0.0019121250704395051,-1.2395224103850199e-5,6.83479516283135e-10,0.001912472298250459,-1.2508553962420433e-5,7.894175597020551e-10,0.0019129086995072113,-1.2601732458062466e-5,8.755614362231623e-10,0.0019134238587510172,-1.2632856875682743e-5,9.019823758839568e-10,0.0019139872139001782,-1.2565475255362356e-5,8.340185275907759e-10,0.0019145507149744756,-1.2380996991705414e-5,6.541016494998854e-10,0.0019150594943169597,-1.208942059331609e-5,3.720012705806915e-10,0.0019154687355826697,-1.1731803189978585e-5,2.7186751351475117e-11,0.0019157599073696201,-1.1370438510631843e-5,-3.2059589419623007e-10,0.0019159480871280882,-1.1069433649940181e-5,-6.099776897920081e-10,0.0019160765242110884,-1.0874351161307604e-5,-7.975067244527357e-10,0.001916201638240862,-1.0799731954230843e-5,-8.695695269755934e-10,0.0019163757206690922,-1.0828066294132719e-5,-8.432736692445251e-10,0.001916633663319116,-1.0918083407511515e-5,-7.583931686950212e-10,0.0019169865545414935,-1.1017681518618213e-5,-6.649208970516302e-10,0.0019174220148160516,-1.1077138327480256e-5,-6.104228457140029e-10,0.001917909652400136,-1.1059628873658679e-5,-6.300141180862712e-10,0.0019184095373273615,-1.0947442807596206e-5,-7.404583107456317e-10,0.0019188815145464583,-1.074336196537258e-5,-9.388858115135974e-10,0.0019192932808213034,-1.0467594123611643e-5,-1.20575358697917e-9,0.0019196256213150462,-1.0151606595075532e-5,-1.5107725145640873e-9,0.0019198741582867806,-9.830831037267878e-6,-1.8199155582087304e-9,0.001920048034328906,-9.53810189496491e-6,-2.101716952530784e-9,0.00192016664884815,-9.298985720095432e-6,-2.3317451423285186e-9,0.0019202557299710247,-9.129284586844093e-6,-2.4949779817672822e-9,0.0019203436982262987,-9.03425635494825e-6,-2.5865276762768656e-9,0.0019204586561453517,-9.008766308266697e-6,-2.6114761398253937e-9,0.0019206257964393613,-9.037767379553837e-6,-2.584400459288261e-9,0.0019208647556760669,-9.096934635335611e-6,-2.528749375572851e-9,0.0019211863918376449,-9.153791617985142e-6,-2.475744453410305e-9,0.0019215887893763244,-9.170318069016814e-6,-2.4618619106144695e-9,0.0019220532680969222,-9.108486698013456e-6,-2.5235177511399977e-9,0.0019225426370994027,-8.93968667282501e-6,-2.6880381102716844e-9,0.0019230051437690364,-8.656881355420935e-6,-2.9620064184294193e-9,0.0019233868768198299,-8.284641843373393e-6,-3.321635583237772e-9,0.0019236508865696793,-7.87924983238811e-6,-3.7126811593957043e-9,0.0019237944180940756,-7.513626152701059e-6,-4.064969808739745e-9,0.0019238530642237287,-7.251346875133989e-6,-4.317442787274023e-9,0.0019238875264319904,-7.123184534446885e-6,-4.440727658128514e-9,0.0019239602849499028,-7.118772335068044e-6,-4.445080751689829e-9,0.0019241150340064711,-7.195410187776e-6,-4.3718032484889515e-9,0.0019243672115235493,-7.296057858543114e-6,-4.275859784550209e-9,0.0019247056490780219,-7.366796576870663e-6,-4.209081160263236e-9,0.001925100638222425,-7.368390575798459e-6,-4.2090899838722325e-9,0.0019255136991263675,-7.28124033598263e-6,-4.29459094897082e-9,0.0019259062934330908,-7.105313322498182e-6,-4.465474633111174e-9,0.001926246455241092,-6.8569503429279765e-6,-4.705904064104801e-9,0.001926513155176582,-6.563908504672785e-6,-4.989086595641599e-9,0.0019266984060524598,-6.259565315487143e-6,-5.28285207654197e-9,0.0019268072181901595,-5.977125716265304e-6,-5.555231795710813e-9,0.0019268557194206991,-5.744607949504135e-6,-5.779286983994542e-9,0.001926867956789526,-5.581192829623622e-6,-5.93661711990306e-9,0.0019268720688889452,-5.495252817643273e-6,-6.019245563941074e-9,0.0019268965365545243,-5.483964670467983e-6,-6.029980211505466e-9,0.0019269669147046517,-5.534047865259946e-6,-5.981698489668393e-9,0.0019271030607710645,-5.623188311924287e-6,-5.895977467639949e-9,0.0019273166863302753,-5.7219540024492885e-6,-5.8012471529754476e-9,0.001927608964943563,-5.7963044626612365e-6,-5.730359732741071e-9,0.001927968073137577,-5.811296023443038e-6,-5.716996716285913e-9,0.001928367327868175,-5.736968151573158e-6,-5.789976737812062e-9,0.0019287657529438592,-5.556881102280313e-6,-5.965023129181158e-9,0.0019291137044280984,-5.2780252562612125e-6,-6.235225744033611e-9,0.0019293656129909568,-4.9378508432014095e-6,-6.564293224012181e-9,0.0019294981647026979,-4.601333003765205e-6,-6.88943201632588e-9,0.001929525485728095,-4.342876353937429e-6,-7.138863176862139e-9,0.0019294994801223031,-4.217696588858802e-6,-7.25946537969358e-9,0.0019294908116161604,-4.238299439230228e-6,-7.239417461315074e-9,0.001929560314582812,-4.371015270438031e-6,-7.111424613284696e-9,0.0019297377118852202,-4.55344246107046e-6,-6.935795233464066e-9,0.001930017314096714,-4.719917590952116e-6,-6.775858205910853e-9,0.001930367658027968,-4.821014209853837e-6,-6.679201920416775e-9,0.0019307459008136353,-4.8316120263198285e-6,-6.669947990797228e-9,0.0019311099639047478,-4.749855588336907e-6,-6.749791325681373e-9,0.001931426078730715,-4.591648798416053e-6,-6.903320619292728e-9,0.0019316723240502833,-4.384152509840636e-6,-7.104284083463843e-9,0.00193183957714851,-4.159855661523347e-6,-7.321298468100921e-9,0.0019319309590358179,-3.951522849872863e-6,-7.522721099309414e-9,0.001931960272729608,-3.7879464393165173e-6,-7.680755766459321e-9,0.0019319496225054618,-3.690498897752296e-6,-7.774788967531755e-9,0.0019319263202685097,-3.6706055523742944e-6,-7.793831867149322e-9,0.001931919267959071,-3.7283927164905087e-6,-7.737819257871908e-9,0.0019319552108667095,-3.852716726614077e-6,-7.617573393096083e-9,0.0019320552988749142,-4.02248969024826e-6,-7.453520879166667e-9,0.0019322322171346693,-4.209066647074804e-6,-7.27339092546293e-9,0.0019324880384187753,-4.379522397329557e-6,-7.109051304871561e-9,0.0019328128907126745,-4.5006846976982455e-6,-6.9926006585541975e-9,0.001933184500922892,-4.543960637217014e-6,-6.951680008281516e-9,0.0019335690805746674,-4.491239132575197e-6,-7.0037418708715674e-9,0.0019339247854987158,-4.3417098714221724e-6,-7.149447726110859e-9,0.0019342092422925217,-4.118009382523817e-6,-7.366743932940767e-9,0.0019343916827004838,-3.868204312684253e-6,-7.608992772716862e-9,0.001934467361572726,-3.658733712507117e-6,-7.811866984567964e-9,0.001934467204138646,-3.5553083996379697e-6,-7.911879053399946e-9,0.0019344532495840499,-3.5966460829545584e-6,-7.871776332288663e-9,0.0019344968195731504,-3.7753114217998696e-6,-7.698978894623498e-9,0.0019346495112623097,-4.03947689724567e-6,-7.443761240396356e-9,0.0019349242390860283,-4.315579736048795e-6,-7.177294842177374e-9,0.0019352959799658958,-4.537209508290387e-6,-6.9637480873944295e-9,0.0019357174371195988,-4.664295527601881e-6,-6.8417869033334726e-9,0.0019361376429321514,-4.687227031264865e-6,-6.820621053087697e-9,0.0019365149604292852,-4.620518272556331e-6,-6.886137513437268e-9,0.001936822735002006,-4.4930784615761195e-6,-7.01030959332819e-9,0.0019370497573068866,-4.3395817761451026e-6,-7.159541983283873e-9,0.0019371982714750445,-4.194332245529059e-6,-7.300606086896117e-9,0.0019372813098119841,-4.0872389658178436e-6,-7.404541171072901e-9,0.0019373200047168263,-4.041081596253815e-6,-7.449311969194115e-9,0.0019373408698219712,-4.06951090543502e-6,-7.421751862826817e-9,0.0019373728401152071,-4.175601163817662e-6,-7.318959872347354e-9,0.0019374438984557292,-4.351140097040351e-6,-7.14897163907601e-9,0.0019375773878386295,-4.577090029110529e-6,-6.930294004143148e-9,0.0019377884492321462,-4.8255307456941e-6,-6.690013847281935e-9,0.0019380811458521296,-5.063086450380342e-6,-6.460482833914179e-9,0.0019384468078961414,-5.2556340897116115e-6,-6.274765644942493e-9,0.001938864070694948,-5.373859826780817e-6,-6.161257575262624e-9,0.0019393008815218134,-5.39900090253849e-6,-6.138107237175963e-9,0.0019397185968336869,-5.328108998262378e-6,-6.208094891699568e-9,0.0019400783924782288,-5.178029968915432e-6,-6.3547673684562564e-9,0.001940350064460665,-4.986568248040517e-6,-6.541330751226949e-9,0.0019405222410656135,-4.808507589956162e-6,-6.714561951692604e-9,0.0019406110279473565,-4.704360703335738e-6,-6.815780527851394e-9,0.0019406619186682263,-4.722099909779016e-6,-6.798592282970913e-9,0.0019407397828170951,-4.877341093394415e-6,-6.6480630164182626e-9,0.0019409070239167167,-5.142645237546104e-6,-6.3909979796592525e-9,0.0019411991246476956,-5.455021750594156e-6,-6.08859132515089e-9,0.0019416113591816284,-5.739907638638507e-6,-5.813170806092759e-9,0.0019421039399188788,-5.938379623146413e-6,-5.621848443746926e-9,0.001942620441220814,-6.023358180511173e-6,-5.540825654139379e-9,0.0019431076064300335,-6.000155352616885e-6,-5.564854280690739e-9,0.0019435278468381142,-5.896618797745685e-6,-5.66679479290207e-9,0.0019438629592743444,-5.750852545969404e-6,-5.809548326748877e-9,0.0019441120808416875,-5.601534475667561e-6,-5.955480832384088e-9,0.001944287443752201,-5.482065741624393e-6,-6.072125549617999e-9,0.0019444101506376872,-5.417660736467644e-6,-6.135020234542866e-9,0.001944506708268009,-5.424015514502002e-6,-6.12900103028505e-9,0.0019446061453395735,-5.5065945921930115e-6,-6.048882321230036e-9,0.0019447372317435117,-5.660164219490716e-6,-5.899883466024544e-9,0.0019449253683826993,-5.8687316263243564E-06,-5.6976552684035205e-9,0.001945189030333371,-6.106463427556881e-6,-5.467362321854533e-9,0.001945536161431122,-6.340235377640483e-6,-5.241200084831334e-9,0.0019459613750219223,-6.534129514976202e-6,-5.0540407206024526E-09,0.0019464450016517627,-6.655627092463941e-6,-4.9374385215283745e-9,0.0019469548828858596,-6.682567740270542e-6,-4.912878296775678e-9,0.001947451269570495,-6.60932933283276e-6,-4.985758640608991e-9,0.0019478943525422965,-6.450513493834239e-6,-5.14178782748562e-9,0.0019482532181079584,-6.2407756398245034e-6,-5.347142200685174e-9,0.0019485145355209999,-6.029956846976695e-6,-5.553227818359947e-9,0.001948688832848761,-5.8732962326046545e-6,-5.706255960069141e-9,0.0019488117889920867,-5.817657136586249e-6,-5.76069054929591e-9,0.001948938125527602,-5.886667676818439e-6,-5.69370500652984e-9,0.0019491274075020232,-6.0699856033129015e-6,-5.515569915679763e-9,0.0019494249289553265,-6.3227915401508744E-06,-5.270071903094241e-9,0.001949845257742566,-6.578590377092514e-6,-5.022021831291358e-9,0.0019503668701211755,-6.771379833246088e-6,-4.8356927104913765e-9,0.001950941025999169,-6.857006618888046e-6,-4.754047856449597e-9,0.0019515098360051739,-6.823912357418047e-6,-4.788264987953578e-9,0.0019520240658229982,-6.690500284410137e-6,-4.920280238133386e-9,0.0019524536244067533,-6.49382548244997e-6,-5.113816259747165e-9,0.0019527895094792508,-6.276752315075202e-6,-5.326941081183438e-9,0.0019530401509459683,-6.078332438438705e-6,-5.521497393189113e-9,0.001953225817980965,-5.928567237035448e-6,-5.668236483345585e-9,0.0019533734478342783,-5.84651286102268e-6,-5.74866469745462e-9,0.0019535127069048035,-5.840135760566559e-6,-5.755159455452236e-9,0.0019536730713173847,-5.906707798229399e-6,-5.690546687804252e-9,0.0019538812761171337,-6.033223898987462e-6,-5.567654612994196e-9,0.0019541585144023286,-6.197000707763707e-6,-5.408699430107965e-9,0.0019545171385095907,-6.367107479822374e-6,-5.243879262195881e-9,0.0019549572076320533,-6.5074833444539475e-6,-5.108346058501838e-9,0.0019554639201165612,-6.582363249082454e-6,-5.03694129358835e-9,0.001956007498430186,-6.563809875728904e-6,-5.0568720809815e-9,0.001956546986261798,-6.4398326830353245e-6,-5.179789317621606e-9,0.001957038319601614,-6.220390777973844e-6,-5.3959025305882386e-9,0.001957445211377807,-5.938406346561329e-6,-5.6729623501463044E-09,0.0019577497434098727,-5.6441961139281294e-6,-5.961701088875459e-9,0.00195795905198493,-5.3940117834603315e-6,-6.207071934832427e-9,0.001958105475933685,-5.235595818058769e-6,-6.362420055449834e-9,0.0019582395183540724,-5.194843437985116e-6,-6.402542072145623e-9,0.001958417079498149,-5.267559275761301e-6,-6.331712684108876e-9,0.0019586841391798864,-5.419208397437096e-6,-6.183867152169376e-9,0.0019590632992368684,-5.5936274617679324e-6,-6.0140407497047866e-9,0.0019595468572287758,-5.728796846682779e-6,-5.882943397267424e-9,0.001960099404208329,-5.774659859002328e-6,-5.8395474337831e-9,0.0019606692273000065,-5.706491547132605e-6,-5.908007246472056e-9,0.001961203875844111,-5.5290734820936245e-6,-6.083550911233866e-9,0.001961663710892444,-5.271294504247528e-6,-6.33775249294814e-9,0.0019620291042840325,-4.974990706173587e-6,-6.62948408349352e-9,0.0019623006544432146,-4.683271223898374e-6,-6.916401377222745e-9,0.001962494734377491,-4.432015613971804e-6,-7.163317469825513e-9,0.00196263744876942,-4.24555166449937e-6,-7.3464495352867865e-9,0.001962759151531451,-4.135625053205161e-6,-7.454405906541533e-9,0.0019628903475563684,-4.102163162853727e-6,-7.487397138171459e-9,0.001963058825873597,-4.134581772027361e-6,-7.45591629508366e-9,0.0019632873735704035,-4.2130275752858015e-6,-7.37949782948698e-9,0.001963591384460584,-4.309670509689841e-6,-7.285447272084761e-9,0.001963976034392938,-4.390698571258319e-6,-7.2069014925367394E-09,0.00196443330876546,-4.419933657794488e-6,-7.1793089036528066e-9,0.0019649399761413515,-4.364865771727716e-6,-7.23453490273262e-9,0.001965458415821613,-4.2050069352158806e-6,-7.392670556572303e-9,0.0019659423021510165,-3.940624693125234e-6,-7.653438357820787e-9,0.001966347619651084,-3.5979703831828426e-6,-7.991020087185636e-9,0.001966646410720784,-3.2268073690315724e-6,-8.35646294373238e-9,0.001966837804951861,-2.88866026076316e-6,-8.6892469084276e-9,0.0019669507350560987,-2.638942552458159e-6,-8.93489923720782e-9,0.001967036219204756,-2.509897091168396e-6,-9.061792188439865e-9,0.0019671521102095036,-2.5011703515333097e-6,-9.070385947269845e-9,0.001967346338386762,-2.5810055380569523e-6,-8.992002968155938e-9,0.0019676443316525953,-2.696486676324743e-6,-8.878723391163976e-9,0.0019680437540308916,-2.788602202893239e-6,-8.788584213578214e-9,0.00196851699192739,-2.8074134547524235e-6,-8.77069512204032e-9,0.0019690198105688102,-2.723406029950918e-6,-8.854087293070188e-9,0.001969503286514971,-2.5325606025790628e-6,-9.042705655591e-9,0.0019699255438227234,-2.2545503651888572e-6,-9.317149614451272e-9,0.0019702602048416143,-1.9254253998824907e-6,-9.64186138287465e-9,0.0019704998243126686,-1.587626778063647e-6,-9.974977396460062e-9,0.001970654436207738,-1.2805361083925496e-6,-1.0277671836369529E-08,0.001970746848452303,-1.0338220010957484e-6,-1.0520734387427998e-8,0.001970806813276138,-8.642671882979529e-7,-1.0687691080751363e-8,0.0019708657346138646,-7.754852094272468e-7,-1.0775054263680461e-8,0.001970952685885467,-7.59358064857489e-7,-1.0790873734095068e-8,0.001971091690133412,-7.980785287859418e-7,-1.075270881326718e-8,0.0019712997330186763,-8.661819417994633e-7,-1.0685635082892515e-8,0.001971584912381313,-9.325958251431366e-7,-1.0620251655417039e-8,0.001971944386893563,-9.632389319096306e-7,-1.0590148555848218e-8,0.0019723623172643737,-9.250101036695197e-7,-1.0627989281767547e-8,0.001972808830631805,-7.919702181976068e-7,-1.0759406320346234e-8,0.0019732419679683944,-5.536462457545765e-7,-1.0994779047683153e-8,0.001973614823661226,-2.2335933302557065e-7,-1.1320973812675675e-8,0.0019738884737286657,1.5799990717252462e-7,-1.1697589927724113e-8,0.0019740473224203847,5.280347963458416e-7,-1.2062959771330483e-8,0.00197410928803649,8.20358883314744e-7,-1.2351497457826083e-8,0.001974123317235958,9.877098265902934e-7,-1.251656570489879e-8,0.001974153255924493,1.0192999814429548e-6,-1.2547588496020676e-8,0.0019742556717545824,9.434428611000109e-7,-1.2472576911245205e-8,0.0019744623865517686,8.154180584666158e-7,-1.2346103517772794e-8,0.001974774135226251,6.982018680757243e-7,-1.2230299564424663e-8,0.001975164866836536,6.44800593857355e-7,-1.2177471453811616e-8,0.001975592187135106,6.871905621175031e-7,-1.221921769330186e-8,0.001976009248334955,8.327104581488337e-7,-1.2362852376014084e-8,0.0019763749925609457,1.0663971388143509e-6,-1.259366276420492e-8,0.001976661273607453,1.3571121056137057e-6,-1.2880913658228117e-8,0.0019768563928079714,1.6655158949823804e-6,-1.3185711559255818e-8,0.001976965150873674,1.9522178827619e-6,-1.3469078659361015e-8,0.0019770060231024044,2.1846215565256827e-6,-1.3698753468466588e-8,0.001977006519814771,2.3414551764659016e-6,-1.3853691582153881E-08,0.0019769979445145433,2.4146980122888094e-6,-1.3925966248255384e-8,0.0019770105929741008,2.409217344158514e-6,-1.3920387497226856e-8,0.0019770700502998715,2.340825972519958e-6,-1.3852563760087515e-8,0.0019771946962903715,2.233613597212906e-6,-1.3746268263541514e-8,0.001977394083641216,2.117137695108602e-6,-1.3630691930216664e-8,0.00197766776849491,2.02355937158754e-6,-1.353764934893884e-8,0.0019780043391657534,1.9844130263776497e-6,-1.3498405475263642e-8,0.001978380746958981,2.0264143260061553e-6,-1.353951384539365e-8,0.001978762774876461,2.1656876800633962e-6,-1.3677055583687163e-8,0.00197910834678161,2.4005955486988004e-6,-1.3909478074330424e-8,0.0019793755690996236,2.7052325640155345e-6,-1.4211108687579435e-8,0.0019795358980323765,3.0280329593492748e-6,-1.4530782563116931e-8,0.0019795888602322726,3.3008762468395384e-6,-1.4800926854883546e-8,0.001979569909580966,3.4602522751505376e-6,-1.4958607317158036e-8,0.0019795428292347273,3.4729664075210322e-6,-1.4971007396679774e-8,0.0019795766858330343,3.3517185374406653e-6,-1.485078131230214e-8,0.001979719097725177,3.150012236996182e-6,-1.4650917551003886e-8,0.0019799807430923235,2.939717703579574e-6,-1.4442508997057445e-8,0.001980337179051505,2.785210747885825e-6,-1.4289220607364234e-8,0.001980742604001265,2.726455749296866e-6,-1.423061560237119e-8,0.0019811460867675897,2.7744247605888214e-6,-1.4277633511904348e-8,0.001981503955526798,2.915383589334282e-6,-1.4416788031389436e-8,0.0019817866606374806,3.119072655949307e-6,-1.4618203584318185e-8,0.0019819810541467733,3.3472878569643014e-6,-1.4844069697144964e-8,0.0019820896686203603,3.5612914305410776e-6,-1.5055977587760283e-8,0.00198212818028609,3.7276910519524167e-6,-1.522077511487346e-8,0.0019821217200457113,3.822702343827983e-6,-1.531483119915164e-8,0.001982100526968717,3.8346574475360094e-6,-1.5326546430867445e-8,0.001982095446197697,3.7647342774013897e-6,-1.525707214555077e-8,0.0019821337647565624,3.626027788928867e-6,-1.511936833404366e-8,0.00198223586051072,3.441229396883561e-6,-1.4935887639064302e-8,0.00198241295750562,3.2394074768603723e-6,-1.4735395171384388e-8,0.001982665941468611,3.0524134698759988e-6,-1.4549442314482317e-8,0.0019829850278711707,2.9111670054398966e-6,-1.4408723058841443e-8,0.0019833501452222605,2.841809897117393e-6,-1.4339272286988301e-8,0.0019837320752173157,2.8615334931783054e-6,-1.4358293854803897e-8,0.001984094861776407,2.9738376767734945e-6,-1.4469388182609625e-8,0.001984400625925791,3.163606036205151e-6,-1.465759406565055e-8,0.001984617903763515,3.39387177161666e-6,-1.4886148324894974e-8,0.001984733239124418,3.6078493427449448e-6,-1.5098540495896356e-8,0.001984762586708769,3.740319866084089e-6,-1.522990885918146e-8,0.001984755051949164,3.739151728899739e-6,-1.5228487094580237e-8,0.0019847812506757346,3.589373742862749e-6,-1.507949371776934e-8,0.0019849070018280613,3.324884794977739e-6,-1.481665653780441e-8,0.0019851657075547475,3.017077739740492e-6,-1.4510837813089766e-8,0.001985546337819205,2.7455641756043497e-6,-1.4240999293311826e-8,0.0019860027126962026,2.5689052542741243e-6,-1.4065234505030063e-8,0.001986474911058454,2.5102785475177926e-6,-1.4006586884914449e-8,0.001986909190146146,2.5597820777408202e-6,-1.4055310223533645e-8,0.001987269141598994,2.685729541695863e-6,-1.4180024373601416e-8,0.001987538415975901,2.8470244196991636e-6,-1.4339955147058143e-8,0.0019877184535379826,3.0026745725009918e-6,-1.4494369758932575e-8,0.001987824315689395,3.1178169485181043e-6,-1.4608579499453113e-8,0.0019878803285720108,3.1671431670578377e-6,-1.4657380747630862e-8,0.001987916017903525,3.1367378731829e-6,-1.4626916752757822e-8,0.00198796225735607,3.0248075252962984e-6,-1.4515412078652403e-8,0.001988047562103157,2.8413753222055076e-6,-1.4332850735856531e-8,0.0019881946131477435,2.60687216740141e-6,-1.4099542829987458e-8,0.001988417298411971,2.349527873938127e-6,-1.3843513258288562e-8,0.0019887187102340417,2.1016769841030624e-6,-1.3596844711551368e-8,0.001989090425727029,1.895388778983732e-6,-1.3391377619170956e-8,0.001989513160461744,1.7578895979745178e-6,-1.3254203612054567e-8,0.001989958770446367,1.7071788559904026e-6,-1.3203316404532476e-8,0.001990393534070427,1.7481911434179824e-6,-1.3243755974189393e-8,0.0019907827350952195,1.8697874359525122e-6,-1.336454230925692e-8,0.00199109681028482,2.0431157285996407e-6,-1.3536978415285554e-8,0.001991319151058384,2.222726763531207e-6,-1.371574429721612e-8,0.0019914544946981836,2.3526243150694117e-6,-1.3844968523515149e-8,0.0019915347809361574,2.379086977407752e-6,-1.3871077631016254e-8,0.001991617224389839,2.269346242030513e-6,-1.376144811926663e-8,0.0019917698902892863,2.0294384279911193e-6,-1.3522157951942242e-8,0.0019920466456429435,1.7095202837346074e-6,-1.3203206351826863e-8,0.001992463423863107,1.3885001624897012e-6,-1.288317749571206e-8,0.0019929908638321907,1.143480512993817e-6,-1.2638853847306288e-8,0.0019935682104733686,1.0214708448982725e-6,-1.2517091776224162e-8,0.0019941285130815195,1.0283869976145581e-6,-1.2523846927649901e-8,0.0019946200002937324,1.1365035316745898e-6,-1.2631538348227922e-8,0.001995015574720192,1.300685938679259e-6,-1.2795181679410482e-8,0.0019953118522825736,1.4734595686959486e-6,-1.2967407715671091e-8,0.0019955231121392253,1.6145721408287418e-6,-1.3108023269665573e-8,0.001995674485554681,1.6953207844439172e-6,-1.3188361405392658e-8,0.001995796372307964,1.6996250991069645e-6,-1.3192379686625797e-8,0.0019959203169879858,1.6236696505985474e-6,-1.3116312565503816e-8,0.0019960757921594096,1.475055708754886e-6,-1.2967807444551166e-8,0.0019962873383381975,1.271613814117125e-6,-1.2764702800757431e-8,0.001996571813660661,1.039617664310189e-6,-1.253321173415832e-8,0.001996935876688311,8.10987734279826e-7,-1.2305124592895642e-8,0.0019973742307001037,6.19237649378676e-7,-1.2113796509748371e-8,0.0019978693382533895,4.943937406260044e-7,-1.198913399233764e-8,0.0019983931254425164,4.575767847518032e-7,-1.1952232495962723e-8,0.0019989108215040154,5.162092500765573e-7,-1.2010593106379118e-8,0.0019993866344011147,6.609218430927506e-7,-1.215498240158599e-8,0.001999790531775251,8.650472468204294e-7,-1.2358850045151053e-8,0.0020001051872744658,1.0872195388065961e-6,-1.258086799786539e-8,0.0020003320300538583,1.2774384887276872e-6,-1.2770987731393865e-8,0.0020004948833237455,1.386820963278251e-6,-1.2880238021882123e-8,0.0020006389899060112,1.380409164658492e-6,-1.2873596607745973e-8,0.0020008230599442827,1.250445294729628e-6,-1.2743295658742569e-8,0.0020011035292148414,1.0248522465183068e-6,-1.2517287786395435e-8,0.0020015145004623476,7.642707366236366e-7,-1.2256256246504428e-8,0.002002052224806011,5.444286659134359e-7,-1.203598958625036e-8,0.0020026739455431216,4.2948544136936147e-7,-1.1920745495741174e-8,0.002003313579512777,4.496948714502562e-7,-1.1940890619262743e-8,0.0020039058326337656,5.94885512572639e-7,-1.208630936784008e-8,0.0020044058510690797,8.245709877731227e-7,-1.2316460457905977e-8,0.002004796841439746,1.0859096843776425e-6,-1.2578353220820108e-8,0.0020050868112686674,1.3296101468781744e-6,-1.2822521486441082e-8,0.0020053001577274294,1.5190539612688328e-6,-1.3012215262669332e-8,0.002005469139021302,1.6331027930982382e-6,-1.3126245137314179e-8,0.0020056275325741548,1.6652065850658668e-6,-1.3158091335992063e-8,0.0020058066106900104,1.6211993428942383e-6,-1.3113673482230696e-8,0.0020060325903481888,1.5170686408574125e-6,-1.3009079439298547e-8,0.002006324650222416,1.3769637497429265e-6,-1.2868534813545612e-8,0.0020066929754689877,1.2310800018681066e-6,-1.2722269046986007e-8,0.002007136798951896,1.1127780991151567e-6,-1.2603647647411476e-8,0.0020076429784578894,1.054378781853201e-6,-1.254500526328362e-8,0.002008186099861188,1.081598763449451e-6,-1.2572118807769247e-8,0.0020087311297168646,1.2074288608481698e-6,-1.2698088673752461e-8,0.002009239103287181,1.4270773152031296e-6,-1.2918234760844035e-8,0.0020096752789058284,1.716007875070945e-6,-1.3208055118895744e-8,0.0020100179652990918,2.0326550064858777e-6,-1.352587734554098e-8,0.0020102654993804938,2.3260539621831587e-6,-1.3820486693134687e-8,0.0020104390771972405,2.547030253336762e-6,-1.4042386690680413e-8,0.002010580106295075,2.6604804750482006e-6,-1.4156191902665433e-8,0.0020107419502173964,2.6557832329077294e-6,-1.4151139319925016e-8,0.0020109771879805558,2.5523069324261464e-6,-1.4046647718123685e-8,0.0020113229426591533,2.397375789826293e-6,-1.3890280276741745e-8,0.0020117884211216064,2.2554114694326285e-6,-1.3746841070905745e-8,0.0020123497341117697,2.1898980519676447e-6,-1.3680257875013628e-8,0.002012955651515441,2.2438213886840194e-6,-1.3733900181722728e-8,0.0020135433728180985,2.4266447610087438e-6,-1.39174182558369e-8,0.0020140579317852875,2.71366437476233e-6,-1.4206014604787913e-8,0.0020144668228012324,3.057204948402956e-6,-1.4551671002974376e-8,0.0020147647475891694,3.403199418756304e-6,-1.4899863316082618e-8,0.0020149692079483423,3.7055522989431925e-6,-1.520408419186706e-8,0.00201511150064555,3.9340846123691215e-6,-1.5433892567141782e-8,0.0020152277251075717,4.076173637410506e-6,-1.5576577887703656e-8,0.002015352239871468,4.134536644454852e-6,-1.563490853663456e-8,0.0020155138461719147,4.123692670047893e-6,-1.5623536213635403e-8,0.002015733840614426,4.0666243269108735e-6,-1.55656072328393e-8,0.0020160248674950276,3.992054942875605e-6,-1.549001455038565e-8,0.002016389829459018,3.93198510839712e-6,-1.542893704410032e-8,0.0020168206820040395,3.918765993757011e-6,-1.541493242521958e-8,0.0020172975756185623,3.980985777701276e-6,-1.5476833726911856E-08,0.0020177894153615887,4.137875398081949e-6,-1.5634127210906082e-8,0.002018257233673766,4.392939175307108e-6,-1.589050240627824e-8,0.0020186613266694954,4.728908346737077e-6,-1.6228694079735292e-8,0.0020189715206215524,5.107091194937329e-6,-1.660975065177038e-8,0.0020191776486713324,5.473615092617835e-6,-1.6979292753435012e-8,0.002019295779758033,5.772429950864491e-6,-1.7280651483171656e-8,0.002019366518176988,5.961349214838775e-6,-1.7471108259171236e-8,0.0020194449006417144,6.025194125173232e-6,-1.7535205282025255e-8,0.0020195851788385455,5.980999551576999e-6,-1.7490022440756466e-8,0.0020198257279237858,5.873603143711555e-6,-1.7380744515888384e-8,0.0020201787279912464,5.763467291729197e-6,-1.7268403150332105e-8,0.002020627231636164,5.710627551405569e-6,-1.7213706810198902e-8,0.002021130054639501,5.7592346508056935e-6,-1.7261429057047976e-8,0.002021632985760314,5.926817997082376e-6,-1.7429501306651574e-8,0.0020220830928120654,6.20118699778434e-6,-1.7705783145695567e-8,0.0020224418380563767,6.54565640069781e-6,-1.8053264624984565e-8,0.002022693062944097,6.910491614078083e-6,-1.842162169656846e-8,0.0020228439203432147,7.246330768272015e-6,-1.876083414523109e-8,0.00202291967499455,7.515105216752511e-6,-1.9032294027402762e-8,0.002022955371584404,7.695808702277565e-6,-1.9214681031198905e-8,0.0020229876289183193,7.785067752112486e-6,-1.9304540519772036e-8,0.002023048591573068,7.794246700981407e-6,-1.931333154928886e-8,0.0020231624980154585,7.745203409912733e-6,-1.926311028183914e-8,0.0020233442466032186,7.666212202219833e-6,-1.918240528759956e-8,0.0020235989734061375,7.588624354679677e-6,-1.9102866270263047e-8,0.002023921859131006,7.544034825291021e-6,-1.9056442936228402e-8,0.0020242978850773183,7.561308638331777e-6,-1.907241483206435e-8,0.0020247018586647472,7.662755338235264e-6,-1.9173526603769192e-8,0.0020250996748987574,7.859045107714878e-6,-1.9370801266084847e-8,0.0020254522736660083,8.143408211325172e-6,-1.9657586738974178e-8,0.0020257235021321623,8.487284167289417e-6,-2.0005064388235096e-8,0.0020258914008579325,8.841089839559924e-6,-2.0362983469746076e-8,0.0020259593522022504,9.143502782538063e-6,-2.0669092452411597e-8,0.002025960886878649,9.339097586877438e-6,-2.0867079499950275e-8,0.0020259529258870486,9.398254944606137e-6,-2.0926796085751366e-8,0.0020259980842913805,9.329515946722925e-6,-2.085676872498728e-8,0.0020261436498098338,9.177436067364245e-6,-2.0702003689784143e-8,0.002026406976788043,9.007145260904893e-6,-2.0528373390696197e-8,0.0020267726311981303,8.883574211806648e-6,-2.0401649057662443e-8,0.002027200045442295,8.85396367750792e-6,-2.0369837232274553e-8,0.00202763668051562,8.938366466169523e-6,-2.0453528387901555e-8,0.002028031669042613,9.128606584898225e-6,-2.0644735364591285e-8,0.0020283466335991557,9.39376249959402e-6,-2.0912327645621907e-8,0.00202856210099846,9.689503075361093e-6,-2.121142268331872e-8,0.002028679138809268,9.968698912730516e-6,-2.1494151041399055e-8,0.0020287166795685033,1.0191047732068404e-5,-2.1719481725996414e-8,0.0020287057358542504,1.0329897581158466e-5,-2.186021727137697e-8,0.0020286822638829623,1.0375287950705e-5,-2.1906123600102078e-8,0.0020286804677956084,1.0333353870444897e-5,-2.186332802988044e-8,0.0020287278066525257,1.022312602899354e-5,-2.175105158087606e-8,0.0020288421647846723,1.0072112218170743e-5,-2.1597111262225863e-8,0.0020290308875681577,9.911875842701016e-6,-2.143344844153332e-8,0.0020292909665944156,9.774243576700235e-6,-2.129232494824514e-8,0.0020296097239808366,9.688113323346603e-6,-2.1203133387480477e-8,0.0020299656877050217,9.67644684934271e-6,-2.11893658424898e-8,0.0020303297882378582,9.752905982662366e-6,-2.1265165055571597e-8,0.0020306676073327287,9.917766980710009e-6,-2.1431087980682735e-8,0.002030943934628873,1.0153584998504719e-5,-2.1669593622508353e-8,0.0020311306708723493,1.0422590466425067e-5,-2.1942323425636325e-8,0.002031217579951732,1.0669289798588603e-5,-2.219275019954811e-8,0.002031222335730858,1.0831796516238949e-5,-2.235778014634001e-8,0.002031193048301995,1.0861890930176747e-5,-2.2388241959551486e-8,0.00203119703859634,1.0746492481003186e-5,-2.2270735146629827e-8,0.002031297195154339,1.0517768776177442e-5,-2.2037844471414716e-8,0.0020315273094421984,1.0243291108028e-5,-2.1758092239078608e-8,0.0020318802493412753,1.0000530434740792e-5,-2.1510081000851584e-8,0.002032314137298937,9.850022664826762e-6,-2.1355340836590286e-8,0.002032770207259545,9.81982278786599e-6,-2.132258299426645e-8,0.0020331917199350323,9.904280503784482e-6,-2.14063888568104e-8,0.002033536949342053,1.0072489993620747e-5,-2.157566092331201e-8,0.0020337847861032054,1.0280151984724976e-5,-2.178555756437125e-8,0.002033934644404204,1.0480633734434917e-5,-2.1988684509594312e-8,0.002034002956023895,1.0633476288885205e-5,-2.2143773497299168e-8,0.0020340179562521273,1.0710065550269308e-5,-2.222152752762457e-8,0.002034013813275749,1.0696609639052564e-5,-2.2207730651406188e-8,0.002034024860105363,1.0594604521297306e-5,-2.2103765848150748e-8,0.002034080587443095,1.0419122419825089e-5,-2.19248717814829e-8,0.0020342019278727854,1.0195455518673118e-5,-2.169670062200928e-8,0.0020343991620295483,9.954802844166271e-6,-2.145091239995425e-8,0.0020346714321390342,9.729785129053017e-6,-2.122063084652677e-8,0.0020350074824118905,9.550386709694598e-6,-2.103636451097717e-8,0.002035387185509016,9.440493583899565e-6,-2.0922533216016104e-8,0.0020357836037984364,9.414912608424384e-6,-2.089444107511516e-8,0.0020361655489376162,9.476655420791237e-6,-2.0955452598258494e-8,0.002036501001353076,9.614310232276557e-6,-2.1094206564680248e-8,0.002036762210872142,9.79994037620005e-6,-2.1282363869390327e-8,0.0020369330481708123,9.989184837192771e-6,-2.1474658477092256e-8,0.002037017771296381,1.012628359366276e-5,-2.1614061269663444e-8,0.002037047915437464,1.015658110540848e-5,-2.164463677168314e-8,0.0020370813026867737,1.0046056108125668e-5,-2.153154985964805e-8,0.0020371875508600258,9.800650799576031e-6,-2.1280773292665346e-8,0.002037421936656467,9.472336381754918e-6,-2.094520101904596e-8,0.0020378005857027153,9.143072453333508e-6,-2.0608270685343048e-8,0.0020382928899801513,8.892876275813154e-6,-2.035149508235166e-8,0.0020388358398022157,8.770499811406708e-6,-2.0224669132370346e-8,0.002039359770557812,8.781941663669052e-6,-2.0234157130035133e-8,0.0020398103504522254,8.897729739466089e-6,-2.0350211586612295e-8,0.0020401588643933475,9.069382952218172e-6,-2.0523629149456965e-8,0.0020404019625274035,9.245293559122839e-6,-2.0701866584475123e-8,0.002040555827693921,9.381504609670853e-6,-2.0840025781472896e-8,0.0020406489259659406,9.447228151930216e-6,-2.0906536788607898e-8,0.0020407154331214734,9.426696770852405e-6,-2.088512838607746e-8,0.00204078985578392,9.318873354513713e-6,-2.077459998128169e-8,0.00204090271395194,9.135845367544504e-6,-2.0587206452044835e-8,0.0020410771407216085,8.900239108317796e-6,-2.034599700431967e-8,0.002041326419699712,8.641807325844239e-6,-2.0081292128129632e-8,0.0020416526435947345,8.393337339943669e-6,-1.982648942593215e-8,0.002042046703171445,8.186237577472187e-6,-1.9613586261310882e-8,0.0020424895896427346,8.046339142518472e-6,-1.9468954219893878e-8,0.0020429547843234747,7.990305000968632e-6,-1.940972395069631e-8,0.0020434115251253306,8.022843551834938e-6,-1.9440936885743926e-8,0.002043828782565443,8.134892448156656e-6,-1.9553616311880043e-8,0.0020441798602190554,8.302917025788585e-6,-1.972393223071845e-8,0.0020444477519546617,8.4896969525292e-6,-1.9913901817449882e-8,0.0020446311903293338,8.647706547103258e-6,-2.0074815114312748e-8,0.0020447501973034107,8.726723226422148e-6,-2.0155077328217368e-8,0.002044848244940901,8.686627904246379e-6,-2.011341515541943e-8,0.0020449867383772256,8.513737749746249e-6,-1.9935671842505055e-8,0.002045228541166259,8.234144633017872e-6,-1.964846070320371e-8,0.0020456134638839763,7.913572361465218e-6,-1.931898185881672e-8,0.0020461377861319533,7.63729312921591e-6,-1.9034476270744172e-8,0.0020467521585061633,7.477202828544634e-6,-1.8868592712503943e-8,0.002047381272856939,7.464688941483806e-6,-1.8853644549237028e-8,0.0020479532062943314,7.58431837206364e-6,-1.8974080315531745e-8,0.0020484215587382487,7.78774400789283e-6,-1.918060677428675e-8,0.0020487722662357426,8.015405362121847e-6,-1.941233147259879e-8,0.002049018198077936,8.214197838192044e-6,-1.9614843383185996e-8,0.0020491889216315115,8.346735295295853e-6,-1.9749735808637718e-8,0.0020493210512069144,8.393632060507522e-6,-1.979700451228811e-8,0.0020494512449664246,8.351957607960816e-6,-1.9753525015406534e-8,0.0020496117250101715,8.23232744734854e-6,-1.963010652990153e-8,0.002049827426776408,8.055769435622714e-6,-1.944827439536342e-8,0.002050114053526486,7.850558869214728e-6,-1.9236989441846953e-8,0.0020504767490431433,7.648847136675355e-6,-1.9029157282885984e-8,0.0020509094756088818,7.482854532348159e-6,-1.8857725613841873e-8,0.002051395453334524,7.380623768682452e-6,-1.8751377321085998e-8,0.0020519090052662243,7.361760387571575e-6,-1.8730230620980626e-8,0.0020524188593675297,7.433818308990292e-6,-1.8802173480598776e-8,0.0020528926844391848,7.589950602549962e-6,-1.8960428834936324e-8,0.0020533024421489844,7.808390524123514e-6,-1.9182928498524213e-8,0.0020536299340462158,8.054192913403938e-6,-1.9433978306497595e-8,0.0020538718361486044,8.283434195619361e-6,-1.9668482974938482e-8,0.0020540434289632683,8.45004521906672e-6,-1.9838956797592828e-8,0.0020541797514216247,8.515402796906978e-6,-1.99054534057615e-8,0.0020543322054149753,8.459930706160225e-6,-1.984759651675978e-8,0.0020545585952090927,8.293944827313858e-6,-1.9675807879402267e-8,0.0020549063810787,8.062431097372e-6,-1.9436246264897823e-8,0.0020553934153247633,7.837497117823304e-6,-1.920304947832446e-8,0.002055995700465939,7.696451661454231e-6,-1.9055809090821722e-8,0.002056651811353018,7.693154521324639e-6,-1.9050112336143213e-8,0.0020572846695030584,7.837818600247798e-6,-1.919671296351236e-8,0.002057829365555983,8.096658859821898e-6,-1.946106441052887e-8,0.002058252145844519,8.409493816274429e-6,-1.978134730901258e-8,0.0020585536030746266,8.712990432294358e-6,-2.0092375696100318e-8,0.002058759808669095,8.957877739096902e-6,-2.0343349339844396e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json new file mode 100644 index 000000000..4dcccb37b --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":17000,"numberOfSamples":1000,"samples":[0.0020589095356776037,9.116105504093818e-6,-2.0505272164235435e-8,0.002059043510293161,9.180255067418492e-6,-2.0570390059257767e-8,0.0020591976431414568,9.159302745262173e-6,-2.054785882824188e-8,0.002059399625909375,9.073759899582225e-6,-2.045874721325323e-8,0.0020596674746746844,8.95148439515232e-6,-2.033170765436402e-8,0.00206000888513569,8.824207938457376e-6,-2.019937465729761e-8,0.002060420904195782,8.724308617167852e-6,-2.0095032184184587e-8,0.0020608899779143205,8.68132520947309e-6,-2.0049049012491025e-8,0.0020613928365786132,8.717972919315283e-6,-2.008482719556681e-8,0.0020618988348358,8.845955809078727e-6,-2.021453482958727e-8,0.002062374125258358,9.062441716260134e-6,-2.0435474508193457e-8,0.0020627874895708226,9.348364762479418e-6,-2.072826871336509e-8,0.0020631169945883126,9.669654112154566e-6,-2.1058015950605946e-8,0.0020633560604633263,9.98198746864013e-6,-2.137908652587735e-8,0.002063517288428266,1.023877017749716e-5,-2.164330411583651e-8,0.002063632645942536,1.0401139220424818e-5,-2.1810299545772995e-8,0.0020637491502467223,1.0448183572471843e-5,-2.185815206205818e-8,0.0020639198525462597,1.0385066085844465e-5,-2.1791885352537092e-8,0.002064190922547863,1.0246206042140799e-5,-2.1646843352671344e-8,0.002064587291919049,1.0090636415679369e-5,-2.1483949591921145e-8,0.0020651014652658243,9.988078798241432e-6,-2.13753442005915e-8,0.002065691367589172,9.998026570269695e-6,-2.1382754626188622e-8,0.002066291012197917,1.0149230388591655e-5,-2.153622147579785e-8,0.002066831501387849,1.0429452683376921e-5,-2.182338975756979e-8,0.002067263169333099,1.0791237145000513e-5,-2.2195367611649683e-8,0.002067568557615017,1.1170401662074308e-5,-2.2585814103541868e-8,0.0020677618994642912,1.1507219742502304e-5,-2.2932879418767003e-8,0.0020678786593962845,1.1760992660056131e-5,-2.319433420100162e-8,0.00206796228678175,1.1914801500387303e-5,-2.3352529680849556e-8,0.0020680536670884195,1.1972789302221374e-5,-2.3411612372762594e-8,0.002068185083895209,1.1954165594086708e-5,-2.339133460421787e-8,0.0020683778972125345,1.1887104070253944e-5,-2.3320744180844544e-8,0.002068642307553408,1.180390121082168e-5,-2.3233173740066774e-8,0.002068977856263579,1.1737393814191125e-5,-2.3162537647244684e-8,0.002069373999389383,1.1717978706675388e-5,-2.3140267827765654e-8,0.0020698107873335274,1.1770514429890422e-5,-2.3192140613020073e-8,0.0020702602014525747,1.1910715973072524e-5,-2.3334573248691355e-8,0.002070688939508567,1.2141252692424613e-5,-2.3570578997251697e-8,0.0020710632916822844,1.2448527390387745e-5,-2.3886375187523575e-8,0.002071356066541742,1.2801803268012288e-5,-2.4250382510760558e-8,0.0020715543319876706,1.3156451701310057e-5,-2.4616491549786515e-8,0.00207166551766087,1.3462116971780244e-5,-2.493246716960177e-8,0.002071719050649512,1.3674624989544023e-5,-2.5152297788431047e-8,0.0020717617377544535,1.3768431742533288e-5,-2.524915847137308e-8,0.0020718472574079074,1.374550081599251e-5,-2.5224700784713937e-8,0.0020720223622184525,1.363727582508806e-5,-2.5111195478472052e-8,0.0020723137031515636,1.3498471162329926e-5,-2.496519243244624e-8,0.002072719191338335,1.339381780152275e-5,-2.485385332221292e-8,0.002073206795757431,1.338096643139214e-5,-2.483723759380846e-8,0.0020737219362692,1.3494245133198445e-5,-2.4951381108780162e-8,0.00207420211020392,1.373455339359368e-5,-2.5197661804572466e-8,0.0020745944143773383,1.4069430089365293e-5,-2.554271199173207e-8,0.002074869746023746,1.4443723774723879e-5,-2.5929405831806994e-8,0.0020750285128816304,1.479667972622433e-5,-2.6294607590510123e-8,0.0020750966176363173,1.5078544268788864e-5,-2.6586483364644268e-8,0.0020751148669499956,1.5260889492796408e-5,-2.677529701011583e-8,0.0020751270004247535,1.5338783722705668e-5,-2.6855711891848633e-8,0.0020751704833224575,1.5326746513909972e-5,-2.684261106263222e-8,0.0020752715762822763,1.5251984116094389e-5,-2.6764080409271047e-8,0.002075444009124103,1.5147762629496005e-5,-2.6654533703698157e-8,0.002075689729548116,1.504827746606285e-5,-2.6549398220846943e-8,0.002076000366210549,1.4985082629739757e-5,-2.6481430881895264e-8,0.002076358657231711,1.498441301720375e-5,-2.6477967033587838e-8,0.0020767397992757677,1.5064587977735741e-5,-2.6558240543651232e-8,0.002077113259954405,1.5233004156103975e-5,-2.6730240753699176e-8,0.0020774459186594374,1.548284453443912e-5,-2.6987226620384064e-8,0.002077707337417931,1.5790500049088474e-5,-2.7304945193864276e-8,0.002077877261826839,1.6115682164498162e-5,-2.764165309505029e-8,0.0020779538822941765,1.6406603632449e-5,-2.7943458192743133e-8,0.0020779594398716464,1.6611353072832964e-5,-2.8156170195329946e-8,0.0020779390055978278,1.6693382219093287e-5,-2.824146792653341e-8,0.0020779502913158923,1.6645409426593984e-5,-2.8191416586278918e-8,0.002078046844161103,1.6494938438233428e-5,-2.803425405045996e-8,0.0020782610782756087,1.6297779276038386e-5,-2.782772424649056e-8,0.0020785941150732565,1.612175588363035e-5,-2.7642241561896423e-8,0.0020790159587568842,1.6027141518751153e-5,-2.754063775278662e-8,0.0020794748756735038,1.6050743503202965e-5,-2.756160492638588e-8,0.0020799118940896845,1.619791239208086e-5,-2.7711253577368164e-8,0.0020802757626315633,1.6443513592555717e-5,-2.7963924844698012e-8,0.0020805345246273253,1.674043522617959e-5,-2.8270877063799093e-8,0.002080681226938013,1.7032634096537527e-5,-2.857380300224129e-8,0.002080732951995497,1.7268943244941685e-5,-2.881925151534997e-8,0.002080724194408864,1.7413982316484317e-5,-2.8970092565580946e-8,0.0020806971435383278,1.745367834708195e-5,-2.901136620869484e-8,0.0020806920260737966,1.7394912621893336e-5,-2.8949975367327408e-8,0.002080739988704213,1.72607815502705e-5,-2.8809768850635676e-8,0.002080859515267317,1.70838985357426e-5,-2.8624560861473263e-8,0.0020810559636607064,1.6899885539921436e-5,-2.8431349761988563e-8,0.0020813230557203376,1.6742274751481572e-5,-2.8265022453786016e-8,0.0020816451171855417,1.6639033795220282e-5,-2.8154767386943654e-8,0.0020819993189068113,1.6610203007369465e-5,-2.812164312243963e-8,0.0020823577851628115,1.6665911699555345e-5,-2.817650914736122e-8,0.0020826899633292987,1.680426930790959e-5,-2.8317770861029884e-8,0.002082966018551884,1.7009150846059025e-5,-2.852896394235378e-8,0.002083162073066397,1.7248756752608075e-5,-2.8777135556946513e-8,0.0020832674579102563,1.7476932878513038e-5,-2.9014151463292816e-8,0.0020832924694833593,1.7639846001218737e-5,-2.9183675584427234e-8,0.0020832727739094805,1.7689422424584678e-5,-2.9235274256026354e-8,0.0020832653064138955,1.7601030960855478e-5,-2.9142946193151746e-8,0.0020833330245630757,1.7387646058308056e-5,-2.8919920603682593e-8,0.002083522753935488,1.7100955802243916e-5,-2.8619808329920083e-8,0.0020838468179513333,1.6815710705222776e-5,-2.8320330725747508e-8,0.002084278439419095,1.6604039049236554e-5,-2.8096659219011013e-8,0.0020847625566020353,1.6512511531122853e-5,-2.799759622144117e-8,0.002085235023267062,1.6551414097566436e-5,-2.8034351982823543e-8,0.0020856408987005555,1.6697366798988196e-5,-2.8183104552679034e-8,0.0020859461245631033,1.690450794263447e-5,-2.8396456266918066e-8,0.0020861415082864985,1.7118421130651345e-5,-2.8617819915088376e-8,0.0020862405867537945,1.7288696492304295e-5,-2.8794501922373435e-8,0.0020862736330299575,1.737809826474195e-5,-2.8887350772104285e-8,0.002086279804006059,1.7367702998098975e-5,-2.8876251011356654e-8,0.0020862990421835854,1.7258011428210435e-5,-2.8761400589556528e-8,0.002086365115922038,1.7066487746353264e-5,-2.8560802190087286e-8,0.0020865008408489875,1.682256943694604e-5,-2.8305053907286174e-8,0.002086715919263949,1.656156014476701e-5,-2.8030941270095572e-8,0.0020870071990390262,1.6318714925791584e-5,-2.7775237638634485e-8,0.0020873606761909773,1.612444436636325e-5,-2.7569706696292268e-8,0.0020877543487093165,1.6001012803300085e-5,-2.7437694306513178e-8,0.0020881612220372825,1.596050578626689e-5,-2.7392040420271822e-8,0.002088552230288847,1.6003549082607828e-5,-2.7433729548710437e-8,0.0020888992435952967,1.611837191802468e-5,-2.7550832366391624e-8,0.0020891786471092483,1.6280160651193357e-5,-2.7717702617435652e-8,0.0020893761169842166,1.6451350603092855e-5,-2.7895164399045403e-8,0.002089492678959948,1.6584503687808136e-5,-2.803347849401429e-8,0.0020895506186168747,1.6629975070205594e-5,-2.8080421596796448e-8,0.0020895956639829702,1.654957839540818e-5,-2.799570583593579e-8,0.002089690395538273,1.6333804471878623e-5,-2.7769090685971695e-8,0.002089896033722322,1.6014373257708863e-5,-2.7433529126734662e-8,0.0020902475806469254,1.5661140369289124e-5,-2.7061908434893643e-8,0.002090735796633609,1.5359270098771867e-5,-2.67432120407e-8,0.00209130859780546,1.5176778132377433e-5,-2.6548672939580005e-8,0.002091891842946931,1.5140754055244766e-5,-2.6506954770801897e-8,0.0020924165245282877,1.5233761825979138e-5,-2.660030176659009e-8,0.002092838108888907,1.5407435049015967e-5,-2.6778581186473033e-8,0.0020931426145603437,1.5602073463539797e-5,-2.697961713028947e-8,0.002093342524197185,1.576303163752042e-5,-2.7146256028244872e-8,0.0020934681224012187,1.5850536534203465e-5,-2.7236664035016808e-8,0.002093558330924372,1.584356238962605e-5,-2.7228488040135843e-8,0.002093652929189025,1.5739702587511593e-5,-2.711885649216876e-8,0.002093786585558144,1.5552692842214613e-5,-2.6921891528832596e-8,0.002093984610700063,1.530847635566744e-5,-2.6664625730728237e-8,0.002094260408522702,1.5040327883243397e-5,-2.6381866829385993e-8,0.0020946146605398033,1.4783590396206654e-5,-2.6110629573656682e-8,0.0020950361908124754,1.4570612940870071e-5,-2.5884801421741135e-8,0.002095504287982403,1.4426464136665532e-5,-2.573066979561237e-8,0.0020959920098880948,1.436589162782448e-5,-2.566378974830331e-8,0.0020964698904481064,1.4391654082877689e-5,-2.568727581986414e-8,0.002096909672107035,1.4494027260271335e-5,-2.5791262682142066e-8,0.002097287955238897,1.4651254484391914e-5,-2.595327902709219e-8,0.0020975898588619776,1.483086589384205e-5,-2.6139490483611765e-8,0.0020978129239909112,1.4992194433574303e-5,-2.6307227096703933e-8,0.002097971126731232,1.5091109530391926e-5,-2.6409931481351222e-8,0.002098097703998993,1.5088284225384236e-5,-2.6405927211233465e-8,0.002098243998954342,1.4961356647547054e-5,-2.6271336291410024e-8,0.002098470643735973,1.4718558663920096e-5,-2.601451060716538e-8,0.002098829142769062,1.4406847413029446e-5,-2.568461021728266e-8,0.002099338584112944,1.4104891981013634e-5,-2.5364227738068856e-8,0.002099970577078888,1.389718581053549e-5,-2.51422113367583e-8,0.0021006554024350413,1.3839945599057747e-5,-2.5077873022135188e-8,0.0021013089162565824,1.3939075366767634e-5,-2.5177804466452004e-8,0.0021018642410454017,1.4152966541286029e-5,-2.5398697748388907e-8,0.002102290544234685,1.4414719463911722e-5,-2.5670555129297722e-8,0.002102593458372229,1.4657717276490355e-5,-2.5923475251490083e-8,0.002102803823419274,1.4832523419603329e-5,-2.610539494337901e-8,0.002102963997051854,1.4912874042482475e-5,-2.6188440763515092e-8,0.00210311701985688,1.489429901720448e-5,-2.6167581509441245e-8,0.00210329981316489,1.4789514144286761e-5,-2.605589711490424e-8,0.0021035395604685125,1.4623216960515582e-5,-2.5879181897882027e-8,0.002103852012857229,1.4427256816148642e-5,-2.5670874573032203e-8,0.0021042409306866908,1.4236166858646234e-5,-2.546731313778813e-8,0.002104698454320543,1.4082882456060734e-5,-2.53031751996881e-8,0.0021052064752133293,1.3994654154339699e-5,-2.5207158431920774e-8,0.0021057391315831625,1.3989407920046565e-5,-2.519818244598461e-8,0.002106266387320575,1.4073050130678136e-5,-2.5282607415599342e-8,0.002106758334830071,1.423820083636465e-5,-2.5452924691916057e-8,0.0021071897012097697,1.4464569256647e-5,-2.568810271807864e-8,0.0021075440763852053,1.4720984983073159e-5,-2.5955605114652786e-8,0.002107817455023985,1.4968991587208612e-5,-2.6215033812032676e-8,0.0021080207898770947,1.5167881763610569e-5,-2.6423345985019315e-8,0.0021081811782254606,1.52812712911579e-5,-2.6541802838830476e-8,0.002108340721814446,1.5285367127017497e-5,-2.6544815228638046e-8,0.002108551393130802,1.5178224387244792e-5,-2.6429882679400344e-8,0.0021088642657054028,1.4987405902763008e-5,-2.6225817522741596e-8,0.0021093131823441873,1.477109413125047e-5,-2.5993980396136906e-8,0.0021098973634679687,1.4606796678395606e-5,-2.5816350529623914e-8,0.0021105729078048107,1.4566334520348138e-5,-2.5769076832392603e-8,0.0021112628777701157,1.4686483996552583e-5,-2.589140375989459e-8,0.002111884963727069,1.49524858304974e-5,-2.616814292368397e-8,0.0021123820416213326,1.530564027223351e-5,-2.653758083888853e-8,0.002112738443062604,1.566943862865359e-5,-2.6919021383359056e-8,0.0021129763380782042,1.597734406587063e-5,-2.7242128079128386e-8,0.002113139906608551,1.6188913189144726e-5,-2.7463982116337144e-8,0.0021132785147635735,1.6292255587917617e-5,-2.7571731956963736e-8,0.002113435244892276,1.6298231436790853e-5,-2.7576542617677282e-8,0.002113641467647694,1.623231108640538e-5,-2.750507948119659e-8,0.0021139155020888497,1.612742596429646e-5,-2.739200662875825e-8,0.002114263195353226,1.601868102419684e-5,-2.7274398004963558e-8,0.002114679097938746,1.5939462619916927e-5,-2.7187584649230205e-8,0.002115147857818045,1.591820498712063e-5,-2.7161697731839154e-8,0.0021156460082405507,1.5975354031712748e-5,-2.7218453269601503e-8,0.0021161445333496127,1.6120489838517026e-5,-2.736813658476198e-8,0.002116612541248858,1.6350066999505276e-5,-2.7607239032229045e-8,0.002117021983644663,1.6646569377117553e-5,-2.791754490148783e-8,0.002117352837098394,1.697979911393296e-5,-2.826741083990463e-8,0.0021175978015787107,1.731065634053247e-5,-2.8615637817191073e-8,0.00211776543378165,1.759725263509948e-5,-2.8917829165943654e-8,0.002117880769420787,1.7802584133189674e-5,-2.9134478291953385e-8,0.002117982886203447,1.7902584529889876e-5,-2.9239569317390042e-8,0.002118119198387002,1.7893289828263934e-5,-2.922832774864068e-8,0.002118336487991736,1.7795584944785858e-5,-2.9122440610658274e-8,0.0021186692843823997,1.7655389538035962e-5,-2.8970402749374115e-8,0.0021191276345471233,1.7536852324466382e-5,-2.8840362727093884e-8,0.0021196884143433207,1.7507199823531867e-5,-2.880401634238384e-8,0.002120295925762307,1.7615411346021366e-5,-2.8913861014445143e-8,0.0021208758106100725,1.787247903713528e-5,-2.9182079529307654e-8,0.002121359406182991,1.8244267405424016e-5,-2.9572807067690778e-8,0.0021217074721560777,1.8663209769622012e-5,-3.0014474124992184e-8,0.0021219209004431955,1.905356541542978e-5,-3.042663828206199e-8,0.0021220343298265485,1.9356536768551152e-5,-3.0746705244532125e-8,0.002122099166839674,1.954377814105041e-5,-3.094431491310143e-8,0.002122166330543905,1.9617217855782224e-5,-3.102119259421685e-8,0.0021222752180405586,1.9600531064406503e-5,-3.100215517299388e-8,0.002122449658514504,1.952878967527067e-5,-3.092419165467688e-8,0.0021226984612435964,1.9440127761138346e-5,-3.082765962692926e-8,0.002123017846957808,1.9370314072744265e-5,-3.075052790344494e-8,0.0021233940681903195,1.934948928989278e-5,-3.0724888774326296e-8,0.0021238056794888474,1.9399952935627528e-5,-3.077458440678296e-8,0.002124225682580438,1.9534193054597844e-5,-3.091310551719368e-8,0.002124624113565031,1.9752886458047202e-5,-3.1141464105636413e-8,0.002124971655833702,2.0043233580223036e-5,-3.144639940286134e-8,0.00212524450155675,2.037859705176521e-5,-3.179992728445566e-8,0.002125429949440885,2.0720660307119964e-5,-3.216153381034379e-8,0.0021255313735390655,2.1024952911718785e-5,-3.2483951488909524e-8,0.0021255706390746042,2.1249553405534983e-5,-3.272236244662322e-8,0.0021255862274255134,2.136531580176944e-5,-3.284530096658392e-8,0.002125626472329969,2.136477599867833e-5,-3.2844230643420137e-8,0.0021257389764561077,2.1266765123494018e-5,-3.273861136499655e-8,0.0021259586471253046,2.1114766388613177e-5,-3.2574325849611996e-8,0.0021262973922635143,2.0968604798671925e-5,-3.241497651320302e-8,0.0021267384416393392,2.0890666115759917e-5,-3.2327268627746654e-8,0.0021272376715695132,2.0929425811587144e-5,-3.236339970670092e-8,0.002127733046172089,2.110460424404699e-5,-3.2545061768599696e-8,0.00212816092546539,2.1399236109442378e-5,-3.2854762929754035e-8,0.0021284746737500223,2.176302809822261e-5,-3.3239236614057686e-8,0.002128658496133636,2.212740460159936e-5,-3.362543623506609e-8,0.0021287304336883744,2.2426834845535454e-5,-3.3943333219980947e-8,0.0021287335646911943,2.2617434207905126e-5,-3.414584047635682e-8,0.0021287204228760234,2.2685679731977404e-5,-3.421817395035784e-8,0.0021287380406940413,2.264602236182866e-5,-3.417535947240264e-8,0.002128818715188701,2.2531501692113913e-5,-3.4052283410800604e-8,0.002128977344015476,2.2382911676892006e-5,-3.3892197642410027e-8,0.002129213263803856,2.2240213464310166e-5,-3.373760006185234e-8,0.0021295139322477768,2.2137245808817076e-5,-3.362460002842891e-8,0.0021298586205894944,2.2099046795842652e-5,-3.358004972356987e-8,0.0021302214146577676,2.2140545104573738e-5,-3.362013028869592e-8,0.0021305737006618716,2.2265607580957118e-5,-3.374931398457121e-8,0.0021308867762918587,2.2466010723704024e-5,-3.39592257518173e-8,0.002131135293920836,2.2720594046935103e-5,-3.4227667717305434e-8,0.0021313019334212695,2.2995565753170124e-5,-3.451884933521096e-8,0.0021313829342262734,2.3247460182788705e-5,-3.4786456209133385e-8,0.0021313929103826883,2.3430080081429465e-5,-3.4981018338903236e-8,0.0021313662623369065,2.35053775592328e-5,-3.506154647311194e-8,0.002131352534668617,2.3455775394926864e-5,-3.500875472352498e-8,0.0021314050619435174,2.3293157757724045e-5,-3.483475480248656e-8,0.0021315656878382726,2.305959461858975e-5,-3.458394904972025e-8,0.002131851148769884,2.2817817875395575e-5,-3.432300884872676e-8,0.002132246675708553,2.2634145895239077e-5,-3.412278123476084e-8,0.0021327093056224787,2.255991732479814e-5,-3.4038512859965103e-8,0.0021331794386085386,2.261762912569421e-5,-3.4094941293936804e-8,0.002133596614516856,2.2795606804280943e-5,-3.4280365800889207e-8,0.0021339148569076657,2.3052078776754165e-5,-3.455073970041519e-8,0.0021341135296762083,2.3327034579694484e-5,-3.484217778475803e-8,0.0021342009716787884,2.355832491670355e-5,-3.508814955727273e-8,0.0021342101969445745,2.3697300658380293e-5,-3.523629751598651e-8,0.0021341884075972216,2.3719450332254015e-5,-3.525994944230765e-8,0.002134184081791398,2.3627331849970435e-5,-3.5161372712859956e-8,0.002134235900463689,2.3446066878692636e-5,-3.4967036409302774e-8,0.0021343663946126897,2.321429430328426e-5,-3.471798296710547e-8,0.0021345807976598918,2.2974350116389325e-5,-3.4459344612988514e-8,0.0021348696549837566,2.2764450779378168e-5,-3.4231980765256686e-8,0.0021352131046345666,2.2613905870942357e-5,-3.4067347153649095e-8,0.0021355851791665065,2.25409643711599e-5,-3.398518306415485e-8,0.002135957353588875,2.255223300982052e-5,-3.3992879723749303e-8,0.0021363013822437923,2.264265540717151e-5,-3.408542886166249e-8,0.0021365919676518924,2.279553658100697e-5,-3.4245382178955386e-8,0.0021368099415358917,2.298274820199354e-5,-3.444296877039347e-8,0.0021369464146205742,2.3165964903851673e-5,-3.463731317033913e-8,0.0021370076236995232,2.3300428516159704e-5,-3.4780406073762714e-8,0.0021370188901841084,2.334275576213467e-5,-3.482548254690987e-8,0.002137024662802771,2.3262920180390915e-5,-3.473993474880969e-8,0.0021370813223880038,2.3057492795026685e-5,-3.451958523389752e-8,0.002137241889275746,2.2757801904735166e-5,-3.41974981982623e-8,0.0021375370262618257,2.2426116340509338e-5,-3.3839966919214845e-8,0.002137961316631726,2.213800200907653e-5,-3.3527737842564464e-8,0.0021384728126343628,2.1957459800264673e-5,-3.332951347872889e-8,0.002139006670366777,2.191643370582827e-5,-3.3280036206354196e-8,0.0021394959229136664,2.2007302232413204e-5,-3.3371904617377737e-8,0.0021398901271324055,2.2189143712365275e-5,-3.3562023526722955e-8,0.002140166006414651,2.2402515162981413e-5,-3.378718549615929e-8,0.002140329077781706,2.2586184572995143e-5,-3.398186921720036e-8,0.0021404083035632985,2.2691063196128188e-5,-3.409319354061641e-8,0.002140446731689183,2.2688976940126358e-5,-3.409045739764433e-8,0.002140490895281052,2.2575699890952926e-5,-3.396857223236857e-8,0.0021405812375513067,2.2368761539972847e-5,-3.374586429282327e-8,0.002140745261299301,2.21013187905107e-5,-3.345758704823717e-8,0.002140994332456639,2.181402372302832e-5,-3.314720913566537e-8,0.002141324077070165,2.15469856889004e-5,-3.285775427864785e-8,0.002141717448243737,2.1333424920190157e-5,-3.262494699138589e-8,0.0021421491254591573,2.1195757227350775e-5,-3.247299004550511e-8,0.0021425900057506363,2.1143998775028036e-5,-3.2412859574264454e-8,0.002143011062769476,2.117578153748411e-5,-3.2442332125159627e-8,0.0021433864887417924,2.1277166088685482e-5,-3.254683206575627e-8,0.0021436964440635616,2.142377656843826e-5,-3.270056832632809e-8,0.0021439298869587705,2.1582271289495213e-5,-3.2867992137633203e-8,0.0021440878674806683,2.1712763255525305e-5,-3.3006289361086e-8,0.002144187054590783,2.1773439803346106e-5,-3.3070310510598916e-8,0.002144262009093983,2.172867744059509e-5,-3.302135431596869e-8,0.002144363336494184,2.156066898233932e-5,-3.2839788635029706e-8,0.0021445484486645283,2.128161554298987e-5,-3.253826914107641e-8,0.0021448640499980975,2.093968006406232e-5,-3.216820242252745e-8,0.0021453256085358927,2.0610778355504582e-5,-3.181096877059883e-8,0.002145905198301666,2.0374493068902587e-5,-3.155211428654284e-8,0.00214653761622983,2.028404497865664e-5,-3.144915450204835e-8,0.002147143609271417,2.0346789600608755e-5,-3.151058660106004e-8,0.0021476575414585346,2.0525272704293914e-5,-3.1696854344447995e-8,0.002148045581613403,2.0755200980876327e-5,-3.193942834876001e-8,0.0021483090662633483,2.0968393190590092e-5,-3.2165288983192186e-8,0.002148476685362016,2.111059951237463e-5,-3.231601401750927e-8,0.002148592188673189,2.115054857145032e-5,-3.235756967674147e-8,0.0021487026050471423,2.108140192452833e-5,-3.2282037014221544e-8,0.002148849218208448,2.091738286919093e-5,-3.2104180012498956e-8,0.0021490617141141114,2.0687943158359667e-5,-3.185531826563116e-8,0.0021493552248900965,2.043093865495207e-5,-3.1576037272193084e-8,0.0021497299103959574,2.018578295980443e-5,-3.1308781112487576e-8,0.0021501726730506327,1.99873898678633e-5,-3.109124846202539e-8,0.0021506604730088547,1.986152543363258e-5,-3.0951322070678607e-8,0.0021511645783630928,1.9821951349432184e-5,-3.0903980935864254e-8,0.0021516549924586936,1.986945352369192e-5,-3.0950285248140185e-8,0.0021521044365688485,1.9992440843010033e-5,-3.107804747030246e-8,0.0021524916686676407,2.016856874486101e-5,-3.126355090492214e-8,0.0021528042317079527,2.0367018571783807e-5,-3.147390414350625e-8,0.002153040804545645,2.0551375958833374e-5,-3.167000555671362e-8,0.002153213305985311,2.0683403675124328e-5,-3.181050955508008e-8,0.002153348503797179,2.0728467991859314e-5,-3.185767901736995e-8,0.002153487865791758,2.06633838486928e-5,-3.178596101433709e-8,0.002153683336498533,2.0486260716953912e-5,-3.159278162166714e-8,0.0021539866168050876,2.022543685029994e-5,-3.130833435668043e-8,0.0021544317139913717,1.9941401323367558e-5,-3.099772567279643e-8,0.0021550161923323133,1.9714632358069782e-5,-3.074786370682314e-8,0.002155692720036186,1.961840203113644e-5,-3.0638105864892124e-8,0.0021563809762338523,1.9688010875520684e-5,-3.070702518398803e-8,0.0021569972223773057,1.990511081944595e-5,-3.0935392402114285e-8,0.002157485124027573,2.0207307545267066e-5,-3.125638734645144e-8,0.002157830955696959,2.0515501898373752e-5,-3.1584963952577884e-8,0.0021580591073866546,2.0761657983135865e-5,-3.1847730058857165e-8,0.0021582161445200332,2.0904745124936695e-5,-3.200013957830926e-8,0.0021583539825240404,2.0933500471754782e-5,-3.20295538061186e-8,0.0021585179343003775,2.0861021855106574e-5,-3.194956386357729e-8,0.0021587404344839763,2.071653038410741e-5,-3.179127525102121e-8,0.0021590389475030915,2.0537441620192218e-5,-3.159486520542445e-8,0.0021594163239126024,2.0362778417702688e-5,-3.140248197378161e-8,0.002159862527034524,2.02278948399552e-5,-3.12524698579826e-8,0.002160357285130327,2.0160345669093216e-5,-3.117480508185589e-8,0.002160873478204498,2.017687657565958e-5,-3.1187780101922056e-8,0.002161381090914999,2.028164028054539e-5,-3.1296077539601465e-8,0.0021618514304895253,2.0465857833124282e-5,-3.1490443368311834e-8,0.0021622611359319007,2.0709012451658273e-5,-3.174899334089471e-8,0.002162595566211041,2.0981352258249935e-5,-3.203986438715612e-8,0.0021628513653473066,2.1247405686018214e-5,-3.232489338007879e-8,0.0021630380775924086,2.1470340095996585e-5,-3.256419591015205e-8,0.0021631786722644116,2.1617083222566323e-5,-3.272164177108625e-8,0.00216330868415945,2.1664275769114177e-5,-3.277135694153426e-8,0.0021634731281762807,2.1605065487863532e-5,-3.2705257492733154e-8,0.0021637197852005,2.1455812436603205e-5,-3.254053477237097e-8,0.0021640877997709013,2.1259948537739125e-5,-3.232400898296171e-8,0.002164592603377122,2.108438739205041e-5,-3.212829934769005e-8,0.0021652124263154904,2.1004045458292953e-5,-3.2034996857797784e-8,0.002165885927123784,2.107545579977581e-5,-3.21059404679378e-8,0.002166528501769656,2.1310646054636276e-5,-3.235474767326647e-8,0.0021670632549307834,2.1668132745757332e-5,-3.273691349900394e-8,0.0021674499574846086,2.2069275229952522e-5,-3.3167461209084994e-8,0.002167695398646148,2.2430414143251984e-5,-3.355576152777364e-8,0.0021678424617177497,2.2691454458900874e-5,-3.383651203996052e-8,0.002167948850623929,2.2828166985303557e-5,-3.398307877885336e-8,0.0021680682294110717,2.2848871903014454e-5,-3.400396925492826e-8,0.002168239621410091,2.2783477264658934e-5,-3.393109259567893e-8,0.0021684843405062296,2.2671975588932204e-5,-3.380744770218485e-8,0.0021688073255370847,2.2555681481195456e-5,-3.367771500329707e-8,0.0021692001470083005,2.247154601714925e-5,-3.358207900819488e-8,0.0021696442585630864,2.2448607182279223e-5,-3.355228837104354e-8,0.0021701141864079454,2.250565226458912e-5,-3.360901884393857e-8,0.0021705808201399487,2.2649663627314837e-5,-3.376013066261044e-8,0.002171014994842116,2.2875029470842755e-5,-3.399981066861581e-8,0.0021713914000250586,2.3163823595123173e-5,-3.430889349840126e-8,0.002171692521788873,2.348758011808522e-5,-3.4656770876542255e-8,0.0021719120261017694,2.381072758144914e-5,-3.500503838425244e-8,0.002172056961163761,2.4095477309522668e-5,-3.531268029929626e-8,0.002172148267756013,2.430773141450824e-5,-3.5542386815216575e-8,0.0021722192183669113,2.4423369339532766e-5,-3.5667380799741086e-8,0.0021723115797911727,2.443412716691192e-5,-3.567793407850738e-8,0.002172469370856416,2.435222243916228e-5,-3.558662383347489e-8,0.002172730141133899,2.4212483806263987e-5,-3.5430893243344456e-8,0.0021731143123856107,2.406994280862633e-5,-3.527059410845282e-8,0.0021736147553494305,2.399049051461565e-5,-3.517783640369402e-8,0.0021741911382967354,2.4033616638707532e-5,-3.5218066388396594e-8,0.0021747750128882433,2.4230582571380168e-5,-3.542607458320517e-8,0.0021752887669595176,2.4567528571206925e-5,-3.5787372573666643e-8,0.002175673052155437,2.49852415759974e-5,-3.623781078312394e-8,0.002175908854725856,2.5399662837313294e-5,-3.668591393596756e-8,0.0021760215228088064,2.5733306593570758e-5,-3.704716213606398e-8,0.002176065901163682,2.5940343519971294e-5,-3.727134201842648e-8,0.0021761034783204496,2.6014370722419524e-5,-3.735101978943853e-8,0.0021761840080405325,2.598057227504093e-5,-3.731306905929495e-8,0.0021763370696546024,2.5881272618678495e-5,-3.7203079961238056e-8,0.002176571964578955,2.5762734966788867e-5,-3.7071131130532555e-8,0.002176881812643163,2.5666444320064544e-5,-3.6962369095902545e-8,0.002177248530362033,2.562462645803108e-5,-3.6912097310867254e-8,0.0021776471185262275,2.56583990067598e-5,-3.694366624460091e-8,0.0021780490847102727,2.577707907708006e-5,-3.706762059466764e-8,0.002178425470464016,2.5977906113517757e-5,-3.7281338682605485e-8,0.002178749995054507,2.6246122306122735e-5,-3.7569099018844795e-8,0.00217900258816672,2.6555835903572176e-5,-3.7903003824289374e-8,0.0021791731432856958,2.687235363923373e-5,-3.8245472427078433e-8,0.002179264774642755,2.715651610226576e-5,-3.8553882093067663e-8,0.0021792954993946666,2.737100012726711e-5,-3.878734993897014e-8,0.0021792972905228126,2.7487801409019163e-5,-3.891485525836279e-8,0.0021793118845096627,2.7495392292255558e-5,-3.8923106738733907e-8,0.0021793835257311045,2.740366279969572e-5,-3.8822101383632065e-8,0.0021795497062576503,2.7244969924330507e-5,-3.864650695887784e-8,0.0021798315902990814,2.70702521421955e-5,-3.845164962605757e-8,0.0021802262299320907,2.693987847972113e-5,-3.8303651911103566e-8,0.0021807030536763806,2.6909868400577606e-5,-3.826434729027413e-8,0.002181207209043901,2.7015773686396604e-5,-3.837346895969279e-8,0.002181671386070132,2.7258810728352984e-5,-3.8633200520179275e-8,0.0021820347882051537,2.7600628586197033e-5,-3.9002200115334744e-8,0.002182263235355336,2.7971926183414146e-5,-3.940491263576584e-8,0.0021823611556105044,2.829417321789066e-5,-3.9755366604696456e-8,0.0021823687183090976,2.8505597620353956e-5,-3.9985695960752894e-8,0.002182345504518596,2.8579166128070304e-5,-4.006587420492795e-8,0.00218234968005574,2.852535965389795e-5,-4.000679786407413e-8,0.0021824224556048176,2.838187447749541e-5,-3.984911376569704e-8,0.0021825822079256305,2.8198197432587352e-5,-3.964648840870845e-8,0.002182826606343748,2.802230424969246e-5,-3.9451180587015695e-8,0.0021831385394179867,2.7892584515013404e-5,-3.930524420287103e-8,0.002183492363313434,2.7834558372804433e-5,-3.9236882225582924e-8,0.00218385884397354,2.7860496490932013e-5,-3.9259933128383583e-8,0.0021842086588251997,2.7970168372585447e-5,-3.937460019364952e-8,0.0021845150758582356,2.815172900254157e-5,-3.956836422313752e-8,0.0021847565668936496,2.838260505830918e-5,-3.9816914283289737e-8,0.002184919839335821,2.8630898322059892e-5,-4.0085638458821643e-8,0.002185003215576358,2.885819450463714e-5,-4.033263381846127e-8,0.00218501956630861,2.9024619642616696e-5,-4.0514173513386934e-8,0.002184997331671042,2.9096343678574037e-5,-4.0592881414629923e-8,0.0021849779434766005,2.9054458176741742e-5,-4.054747138967016e-8,0.0021850086809995705,2.890265974050007e-5,-4.0381253019101765e-8,0.0021851317555203866,2.867039550492026e-5,-4.012573894978999e-8,0.002185372477190764,2.8408972654841787e-5,-3.983659301605007e-8,0.002185730455124099,2.8180528313815657e-5,-3.958174677758403e-8,0.0021861771693066417,2.804251014407566e-5,-3.942450075684918e-8,0.002186661265337064,2.803206489062113e-5,-3.940634962351665e-8,0.0021871205644257144,2.8154906091556042e-5,-3.953453886956924e-8,0.0021874978725242504,2.8382145494403323e-5,-3.977826745766282e-8,0.002187756423815575,2.865671184733779e-5,-4.0075466582978284e-8,0.0021878902551987,2.8908425992492547e-5,-4.0349239996036213E-08,0.0021879255831569328,2.907366219308399e-5,-4.052949755270081e-8,0.002187912085216684,2.9112986253584563e-5,-4.057244739063578e-8,0.0021879072199879612,2.9020292931549317e-5,-4.0470759660277784E-08,0.0021879598630596396,2.8820635503511565e-5,-4.025130399634947e-8,0.0021880992812219192,2.855917509608077e-5,-3.996313733776403e-8,0.002188332056726784,2.8287020621832985e-5,-3.9662060963515264e-8,0.0021886456060208528,2.804939262502735e-5,-3.9397673106991304e-8,0.0021890148819920466,2.7878715380127772e-5,-3.9205757381181164e-8,0.002189409156221178,2.7792378102702624e-5,-3.9105747978824426e-8,0.0021897972687176166,2.7793455583849522e-5,-3.9101439536603146e-8,0.0021901511374968234,2.7872602070577086e-5,-3.9183008468822456e-8,0.0021904481235000325,2.80099950384596e-5,-3.932910624744156e-8,0.002190673074057688,2.8177065500827853e-5,-3.950871255388833e-8,0.0021908206554662854,2.8338483116444323e-5,-3.9683248872783535e-8,0.002190898034144987,2.8455330491275332e-5,-3.980999342254779e-8,0.002190927155960091,2.8490498477234655e-5,-3.9847964078533655e-8,0.0021909449561215767,2.841676049523602e-5,-3.9766800450551744e-8,0.002190999293289918,2.8226395593368268e-5,-3.955740530076425e-8,0.0021911391604951622,2.7938931175521973e-5,-3.924055987672371e-8,0.0021914004248092763,2.7602074739011113e-5,-3.886808440988153e-8,0.00219179202133541,2.7282286475806473e-5,-3.851264350198292e-8,0.002192289357213238,2.704625873866707e-5,-3.82475557684289e-8,0.0021928392696263337,2.6940105864173445e-5,-3.812399760810237e-8,0.0021933752027235077,2.697500409955819e-5,-3.815512007691709e-8,0.002193836370061701,2.712470614302269e-5,-3.8313049345572726e-8,0.0021941837606845793,2.7334592335765326e-5,-3.8538514178115646e-8,0.0021944084668189573,2.753776194502866e-5,-3.875830475133487e-8,0.002194531286417225,2.7672583796492192e-5,-3.890450991618433e-8,0.002194595052600508,2.769704623340426e-5,-3.893040017878978e-8,0.0021946525033668582,2.759686253141467e-5,-3.881953924029014e-8,0.002194753120305771,2.7386090076476726e-5,-3.858667842959779e-8,0.0021949323250686314,2.7100914061041817e-5,-3.82710888669168e-8,0.0021952055424206626,2.678902702000713e-5,-3.792497063521771e-8,0.0021955679291575467,2.6498107213706706e-5,-3.760078207771899e-8,0.0021959986568907772,2.626660204683497e-5,-3.73410335002723e-8,0.0021964674766541165,2.6118501228737073e-5,-3.7172439057852775e-8,0.0021969413113013753,2.60620374695922e-5,-3.7104408935529385e-8,0.0021973894608135576,2.6091132908844254e-5,-3.7130604436828466e-8,0.00219778705276762,2.6188108161646412e-5,-3.7231911539965425e-8,0.0021981171577645352,2.6326541689641457e-5,-3.7379570709525906e-8,0.0021983722862443157,2.647389410124768e-5,-3.753800898406534e-8,0.0021985558494707763,2.6594192238440678e-5,-3.766770585522208e-8,0.0021986837479933113,2.6651537795907375e-5,-3.772898009889921e-8,0.0021987855132714115,2.6615420265459276e-5,-3.76878288712398e-8,0.0021989034252902504,2.646839864760911e-5,-3.752446513210713e-8,0.002199087291365176,2.621516384114665e-5,-3.7243437839789706e-8,0.002199383129417582,2.588937576288623e-5,-3.688130790905145e-8,0.0021998169911259277,2.555241378810931e-5,-3.650538638656394e-8,0.0022003802001003703,2.5279351320183844e-5,-3.619836871761591e-8,0.0022010254563611044,2.513422877506996e-5,-3.603114654032077e-8,0.002201679461595271,2.5145548720641303e-5,-3.603578324988553e-8,0.0022022676262901954,2.5295397762231912e-5,-3.619337702747384e-8,0.0022027384098715387,2.552770043771887e-5,-3.6442911016991864e-8,0.0022030761947726936,2.5769490088737933e-5,-3.6704451465803936e-8,0.0022032999837505608,2.5953710056367697e-5,-3.690413133727294e-8,0.002203452495899009,2.6035101872089713e-5,-3.699166081129466e-8,0.00220358608653898,2.5996726968420892e-5,-3.6947657521712005e-8,0.0022037500668679825,2.584868135819004e-5,-3.678246540474378e-8,0.0022039815599960576,2.562183741456571e-5,-3.6529498934363496e-8,0.0022043004146107474,2.5359154396673204e-5,-3.6235824598435174e-8,0.0022047079845341367,2.510642092784503e-5,-3.595198121736966e-8,0.002205189271399241,2.490392157422305e-5,-3.5722695471243174e-8,0.0022057175485827437,2.4780291065975067e-5,-3.557995202152093e-8,0.002206260229099632,2.4749273402388118E-05,-3.553929040719807e-8,0.0022067847011294868,2.4809362891213233e-5,-3.559935513770356e-8,0.002207263133432532,2.494571788740346e-5,-3.574402276444476e-8,0.0022076757646234684,2.5133391696059046e-5,-3.594599847110066e-8,0.0022080127950028375,2.534094893318031e-5,-3.61707958606488e-8,0.0022082753512539274,2.5533983406702185e-5,-3.6380543421501094e-8,0.0022084759594946783,2.5678586499651885e-5,-3.653770547250637e-8,0.0022086387115195184,2.5745202620986414e-5,-3.6609273231779453e-8,0.002208798772150077,2.5713550443386234e-5,-3.6572240060008746e-8,0.002208999993716592,2.557900040024047e-5,-3.6420802882875486e-8,0.0022092887458073814,2.5359488384672675e-5,-3.6174216899908184e-8,0.0022097025167608603,2.5099812062111692e-5,-3.588172643050776e-8,0.0022102543881308777,2.4867936743048755e-5,-3.56185625830845e-8,0.0022109195242995543,2.4738476511340537e-5,-3.5467648422950415e-8,0.002211634051687777,2.4765337819048855e-5,-3.5489237515539794e-8,0.002212313150289902,2.495636083716276e-5,-3.5692713187243686e-8,0.0022128823429647753,2.526671790565515e-5,-3.602912278257172e-8,0.0022133046472050132,2.5616981016093155e-5,-3.641102991172894e-8,0.0022135888531115686,2.5924578071327065e-5,-3.6747220225829005e-8,0.0022137783155401383,2.6130440340332528e-5,-3.69721280559337e-8,0.0022139309577410685,2.6210438172246873e-5,-3.705850643683236e-8,0.0022141014474845195,2.6172901848814536e-5,-3.7014821330468624e-8,0.0022143303324376486,2.604895373490618e-5,-3.687478915277662e-8,0.002214639802017609,2.5881451700368056e-5,-3.668537821684993e-8,0.0022150338963010646,2.5715502764954452e-5,-3.649643735626844e-8,0.0022155011447347337,2.5591302194405776e-5,-3.6352737563078843e-8,0.0022160184567097205,2.553907975187675e-5,-3.628822151576024e-8,0.0022165557263009628,2.5575938852458807e-5,-3.63223191891732e-8,0.0022170807551756427,2.5704576800506107e-5,-3.6458407892383054e-8,0.002217564030701961,2.591385422119361e-5,-3.668441906146322e-8,0.0022179828448299827,2.6181049859668053e-5,-3.697537858622144e-8,0.0022183242804138395,2.6475407977684876e-5,-3.729737331333177e-8,0.002218586851652362,2.6762362021212276e-5,-3.7612202106384365e-8,0.002218780907528584,2.7007899392426868e-5,-3.7882116402540654e-8,0.00221892800983572,2.718282261799535e-5,-3.807443917791746e-8,0.0022190594291572868,2.7266897794539164e-5,-3.816614008581418e-8,0.002219213643884262,2.7253074171586324e-5,-3.814862701576736e-8,0.0022194321448706397,2.7151812912431053e-5,-3.8032782192625904e-8,0.0022197524438374,2.699457943246866e-5,-3.785310248538782e-8,0.0022201977516507457,2.6834004944931882e-5,-3.7668058896544666e-8,0.0022207647596439554,2.6736960739406968e-5,-3.755241769514929e-8,0.002221414588087056,2.6767401671111417e-5,-3.757801963905858e-8,0.0022220754445295104,2.696116773143545e-5,-3.778551747050506e-8,0.002222662982074354,2.7304481080951647e-5,-3.81602371398771e-8,0.002223112492580615,2.7732335963690483e-5,-3.8630272100101265e-8,0.0022234048892087036,2.815262001038408e-5,-3.9093316095525206e-8,0.002223570353579146,2.8482812379548647e-5,-3.9457507211628694e-8,0.0022236698422765312,2.8677471002609632e-5,-3.9671972494411865e-8,0.002223768955546225,2.8734606819302868e-5,-3.973390147896533e-8,0.002223918561912486,2.8685068606721128e-5,-3.9676852435000445e-8,0.002224146947177898,2.857614254949019e-5,-3.955275079853739e-8,0.002224460584546953,2.8457539680318737e-5,-3.9416539001133896e-8,0.0022248488878112726,2.8372409677147155e-5,-3.931628151961653e-8,0.0022252897394614136,2.8352697862785916e-5,-3.9287926512737694e-8,0.002225754439448891,2.8417200189247082e-5,-3.9352956850409215e-8,0.0022262119752000306,2.8571064147124517e-5,-3.9517646409515605e-8,0.0022266329015272588,2.8806246946617162e-5,-3.977346217838114e-8,0.002226992971723243,2.9102919767945163e-5,-4.009861614536306e-8,0.002227276408541931,2.9431986686848863e-5,-4.046090776146395e-8,0.002227478443459657,2.975881765135786e-5,-4.082189498635584e-8,0.0022276066367046955,3.00479536480172e-5,-4.114208286135804e-8,0.0022276806541805206,3.0268246647568305e-5,-4.1386550741833944e-8,0.0022277304168021564,3.0397850263698415e-5,-4.153044218187168e-8,0.0022277927064168696,3.0428497299104088e-5,-4.1563769098494404e-8,0.0022279064138012593,3.036858246513481e-5,-4.149502940286735e-8,0.002228106506621653,3.0244655302837534e-5,-4.13531517818982e-8,0.0022284166785792644,3.0100550888706932e-5,-4.1186794221321944e-8,0.0022288411897262855,2.9992625796661267e-5,-4.10591614928939e-8,0.0022293578310589434,2.997937361758266e-5,-4.1036340003927136e-8,0.002229915827113162,3.0105006870106393e-5,-4.116870189588894e-8,0.0022304437011137785,3.0380336855881893e-5,-4.146920822621145e-8,0.0022308696821551816,3.0770008843180174e-5,-4.189889481023213e-8,0.0022311489278408515,3.119747911794132e-5,-4.237238494059883e-8,0.002231282975267909,3.157105128869589e-5,-4.278709882978031e-8,0.0022313182697664352,3.181892335039289e-5,-4.3062523712161575e-8,0.0022313244787628863,3.1913280890993805e-5,-4.316712531818715e-8,0.0022313668866389517,3.187208721013959e-5,-4.312031825412391e-8,0.0022314877691962513,3.174329917730292e-5,-4.297493790279011e-8,0.0022317016189136243,3.1584440533183345e-5,-4.2794660080913634e-8,0.0022320000376087473,3.1447193001066374e-5,-4.263700565313382e-8,0.0022323599775302527,3.1369544649942365e-5,-4.2544629399779314e-8,0.0022327512669868426,3.13736485445689e-5,-4.254281430583861e-8,0.0022331420789577098,3.146660704082846e-5,-4.264014632464142e-8,0.002233502662649728,3.164221547907365e-5,-4.283028278424188e-8,0.0022338081602597494,3.188287847991798e-5,-4.309400116155361e-8,0.0022340411058888376,3.216172283638613e-5,-4.340155202858812e-8,0.002234193788318541,3.244531827001491e-5,-4.371572186288535e-8,0.002234270215537642,3.269748772071455e-5,-4.399608728756532e-8,0.0022342870174345488,3.288434625146084e-5,-4.4204595810092806e-8,0.0022342725300309807,3.298010211189754e-5,-4.431198509478476e-8,0.00223426358719864,3.297265366270278e-5,-4.430402838113176e-8,0.002234300042169446,3.28677210223566e-5,-4.4186255163092324e-8,0.0022344176501358816,3.269023712664952e-5,-4.398572890389884e-8,0.0022346404530500393,3.248215526411121e-5,-4.374887676761402e-8,0.0022349739993351363,3.229642695778004e-5,-4.3534981383312984e-8,0.002235400846601725,3.218729338221004e-5,-4.3405375317758714e-8,0.0022358801294424515,3.2197598996961654e-5,-4.3409074494626946e-8,0.0022363531613351687,3.234518444318427e-5,-4.356719715545998e-8,0.0022367562584270713,3.26124404623423e-5,-4.386088239969612e-8,0.002237039364916164,3.2944799036726895e-5,-4.4229360674700297e-8,0.002237184585255663,3.3263008754100455e-5,-4.458371191536925e-8,0.0022372152097443723,3.348808466964168e-5,-4.4835003790813605e-8,0.002237188268790842,3.356890037152168e-5,-4.492538522979582e-8,0.002237172973766367,3.3498373396684425e-5,-4.4846285550617134e-8,0.002237226446062347,3.331063740330506e-5,-4.463527151098567e-8,0.0022373785866876966,3.306356285861056e-5,-4.435657408777556e-8,0.0022376301801785795,3.281796598936418e-5,-4.407798109343235e-8,0.002237960293002327,3.262266212632057e-5,-4.385422435645071e-8,0.0022383364907900727,3.250798890852662e-5,-4.371970523753345e-8,0.002238723456645966,3.2485676809755455e-5,-4.3688197681211816e-8,0.0022390886143439774,3.255173487689696e-5,-4.3755889161178954e-8,0.002239405282078471,3.2689939993701276e-5,-4.390514695537152e-8,0.002239654500276259,3.2874917872497975e-5,-4.410791058122196e-8,0.002239826466603891,3.3074841894149056e-5,-4.43287154816248e-8,0.0022399219825763365,3.325431872964785e-5,-4.452793608909369e-8,0.00223995372724577,3.337818442270938e-5,-4.466602508507044e-8,0.002239946609945796,3.341665474095889e-5,-4.4709250539583116e-8,0.0022399361149010558,3.335152643078121e-5,-4.463662869840457e-8,0.0022399637177205746,3.318214901741799e-5,-4.4446666383878356e-8,0.0022400692719222156,3.292908438196356e-5,-4.4161604326662625e-8,0.0022402815961347503,3.263324461259011e-5,-4.382667142532589e-8,0.0022406097829435986,3.234928937051243e-5,-4.35029200728048e-8,0.0022410381982317313,3.2133989991873885e-5,-4.325433505758617e-8,0.002241527366860039,3.2032192958380706e-5,-4.31320710589e-8,0.002242021338402319,3.206407169227447e-5,-4.315991919307524e-8,0.002242460373611949,3.22173758634287e-5,-4.3325235858678146e-8,0.0022427962572554097,3.244758975145919e-5,-4.3578759913273076e-8,0.002243006285647738,3.268735329396462e-5,-4.384500203668317e-8,0.002243101254106713,3.2863977904254935e-5,-4.4041959824776854e-8,0.002243123492551911,3.292048609982193e-5,-4.410494856355586e-8,0.0022431341784470964,3.283271918257909e-5,-4.400603585822717e-8,0.002243194132145136,3.261533508896748e-5,-4.376093452019552e-8,0.0022433459529788004,3.2314277942817154e-5,-4.342065606321087e-8,0.0022436045440565053,3.198999227156275e-5,-4.305276261895022e-8,0.002243958133515982,3.169947891807182e-5,-4.2721289735892826e-8,0.002244376640907042,3.148388477407264e-5,-4.2472798095789184e-8,0.0022448221512804886,3.136378685678507e-5,-4.233096289601714e-8,0.0022452575632132565,3.134045113321896e-5,-4.2297823602288997e-8,0.002245652005153063,3.139999666608745e-5,-4.2358322241039085e-8,0.002245983472810847,3.151802159817808e-5,-4.248543069195238e-8,0.0022462398578507008,3.166353197668659e-5,-4.2644554056704593e-8,0.002246419446397792,3.180211929402931e-5,-4.2797108244559135e-8,0.0022465314514837314,3.1898991863196846e-5,-4.290391686790522e-8,0.0022465964763423293,3.192267915682146e-5,-4.292934587877446e-8,0.0022466461542808808,3.185001140863545e-5,-4.2846882077462555e-8,0.0022467207138888905,3.1672240851810194e-5,-4.264604611928958e-8,0.0022468631990779767,3.140089843834509e-5,-4.2339079016408486e-8,0.0022471100388813652,3.1070610463486265e-5,-4.196427300171984e-8,0.002247479746499827,3.073566784992554e-5,-4.158230565870342e-8,0.0022479638331529823,3.045874199951375e-5,-4.1263714808448154e-8,0.002248524763253154,3.02937857422682e-5,-4.1069733388505545e-8,0.002249103611883865,3.0268960024283786e-5,-4.1032988729356464e-8,0.0022496357222364597,3.0376558929030593e-5,-4.114590430823665e-8,0.002250068824548509,3.0574158665270486e-5,-4.1361647414439126e-8,0.0022503772247836114,3.07964029825346e-5,-4.160710741763205e-8,0.002250567802057482,3.097301904580212e-5,-4.1803061544443096e-8,0.002250676749711126,3.1047324392743566e-5,-4.188509138902905e-8,0.0022507586723131802,3.099010340839463e-5,-4.1819420951854353e-8,0.002250871480347393,3.080538471041008e-5,-4.1609680129912226e-8,0.0022510615188335178,3.052699532297764e-5,-4.1293253390966694e-8,0.002251353179262093,3.0207520227351978e-5,-4.092900157619033e-8,0.0022517456031207373,2.990365199999711e-5,-4.058081653528731e-8,0.002252216441744965,2.966277801546249e-5,-4.0302454700107246e-8,0.0022527301904458124,2.9514465763670236e-5,-4.012779775956819e-8,0.0022532475943158755,2.9467955847632948e-5,-4.0067851081194045e-8,0.0022537333307623537,2.9514413442723212e-5,-4.0113146302274113E-08,0.0022541607881451917,2.9631644844628163e-5,-4.023900335211374e-8,0.002254514189838657,2.9789237110179563e-5,-4.041133614434692e-8,0.0022547890266936274,2.9952985275678716e-5,-4.059167064094272e-8,0.0022549917913854377,3.0088440765969818e-5,-4.074114160771088e-8,0.0022551396035145384,3.016407696389352e-5,-4.08240201186456e-8,0.0022552597216511264,3.015481429148342e-5,-4.081164539487939e-8,0.0022553882919875423,3.0046508802163843e-5,-4.0687495180085486e-8,0.002255567099077569,2.9841357504034444e-5,-4.045337540522603e-8,0.0022558369388607233,2.9562838755949134e-5,-4.0135156504026914e-8,0.0022562271875581842,2.9257130726269753e-5,-3.978455631529007e-8,0.0022567436326642507,2.898714903281843e-5,-3.947255364662877e-8,0.0022573598823487835,2.8817209579511943e-5,-3.927213390100102e-8,0.002258018966071855,2.8791605493017066e-5,-3.923404737454537e-8,0.002258648117312685,2.891633036493332e-5,-3.936599702943412e-8,0.0022591820275492096,2.9154153382066135e-5,-3.962682189325287e-8,0.0022595839247476135,2.9436595028559185e-5,-3.993977198480979e-8,0.00225985505008105,2.9686790215993037e-5,-4.021816649643196e-8,0.002260030241699472,2.9842461088519565e-5,-4.039130403089442e-8,0.002260164133587199,2.9870701143892955e-5,-4.042125712911031e-8,0.0022603147060398874,2.9772008334002676e-5,-4.0307640364203134e-8,0.002260529356679789,2.957539212424842e-5,-4.008236218492744e-8,0.0022608360709949985,2.9328088618681445e-5,-3.9798262676794195e-8,0.002261240279369694,2.9083351681059975e-5,-3.951545849385412e-8,0.0022617268003365322,2.888909043567816e-5,-3.9288472509905356e-8,0.0022622655482008036,2.8779388123142624e-5,-3.915647214350556e-8,0.002262819189102602,2.8770098261314698e-5,-3.913805732001187e-8,0.002263350798057785,2.88586129564398e-5,-3.92308125522209e-8,0.0022638299762149723,2.9026875547142857e-5,-3.9414639258724473e-8,0.00226423666135669,2.9246199189130553e-5,-3.9657234352431613e-8,0.0022645626786873415,2.9482478245198007e-5,-3.992005306099529e-8,0.0022648116674165116,2.9700822468235492e-5,-4.016358408751382e-8,0.0022649981596772123,2.9869345096513426e-5,-4.0351602493104255e-8,0.00226514630501003,2.9962411033835785e-5,-4.04547762743576e-8,0.002265288298830657,2.9963862391270176e-5,-4.045428268554886e-8,0.0022654620702153745,2.9870664852001304e-5,-4.034600056798178e-8,0.002265707212446325,2.969691295175194e-5,-4.0145217890832345e-8,0.002266057956294179,2.947691133511338e-5,-3.9890345763315734e-8,0.0022665329039003286,2.926444328548644e-5,-3.964227072360827e-8,0.0022671236887107245,2.9124484378898093e-5,-3.9475022511818455E-08,0.002267788240646869,2.9115420126813518e-5,-3.945552451759843e-8,0.0022684561262601086,2.9265821438624493e-5,-3.9617054061131354e-8,0.0022690490903026677,2.955733641213853e-5,-3.993960157280089e-8,0.002269509515122626,2.992626254599793e-5,-4.035147042985752e-8,0.00226982162214845,3.0286068029203308e-5,-4.0754733553186254e-8,0.0022700138757717004,3.055897303667495e-5,-4.1061025649979134e-8,0.0022701436737226793,3.069989577380529e-5,-4.1218699906638504e-8,0.00227027517647685,3.070387520696665e-5,-4.122131101616223e-8,0.002270461042897145,3.059919619723711e-5,-4.1100011651257346e-8,0.002270732689133939,3.0433729733369717e-5,-4.090835113136894e-8,0.002271098337780852,3.026097227227714e-5,-4.070670005595391e-8,0.002271546105525531,3.012906258930677e-5,-4.0549886052690306e-8,0.002272049606456396,3.007354356655947e-5,-4.0478868217575704e-8,0.0022725744638758933,3.011354728086309e-5,-4.051615436512521e-8,0.0022730847790649704,3.0250954443169037e-5,-4.066458322488583e-8,0.002273548838725809,3.047206367789406e-5,-4.0909059104787467e-8,0.0022739434936463994,3.075113090835044e-5,-4.1220551846418976e-8,0.0022742568636345524,3.105504186902545e-5,-4.156147942044127e-8,0.0022744892839467825,3.134835492335001e-5,-4.189151521878511e-8,0.0022746527416301044,3.159798737144839e-5,-4.217292294439811e-8,0.0022747692873981264,3.177714018497166e-5,-4.237495585906838e-8,0.0022748688113758886,3.186850606857967e-5,-4.247743480535395e-8,0.002274986290774487,3.186699225575003e-5,-4.2473855910760004e-8,0.0022751583117732004,3.178213127539921e-5,-4.237427673206388e-8,0.0022754182619907173,3.1640017291713195e-5,-4.2207768491395545e-8,0.0022757894556965316,3.1483670873694755e-5,-4.202308555544977e-8,0.0022762763149492913,3.1369490725813464e-5,-4.188476186116999e-8,0.002276855832823401,3.135697026894548e-5,-4.186133900931318e-8,0.0022774744421386866,3.1490633861351893e-5,-4.200454099581501e-8,0.0022780569340058936,3.177865036092299e-5,-4.232457983909165e-8,0.0022785298502353986,3.217986098398422e-5,-4.277512950721424e-8,0.002278850878859694,3.261186828087253e-5,-4.326249088421801e-8,0.002279027127460274,3.29810254809563e-5,-4.3679853601427606e-8,0.0022791101135152944,3.3218485070021266e-5,-4.3948435338700015e-8,0.0022791716138773816,3.33017751806445e-5,-4.404203618293163e-8,0.0022792763622203156,3.325354630218967e-5,-4.3985619723857855e-8,0.0022794650184009696,3.312474867222378e-5,-4.3836336864797965e-8,0.0022797502493714416,3.297479872131966e-5,-4.3661248003750406e-8,0.00228012142820996,3.285672340462785e-5,-4.35206528604119e-8,0.0022805525144040995,3.2809069538178984e-5,-4.3458910771532503e-8,0.002281009749824412,3.28530678199272e-5,-4.350102367560977e-8,0.002281457946481573,3.299290573495884e-5,-4.3652647942342574e-8,0.0022818653863613037,3.3217663060474e-5,-4.390203862093646e-8,0.0022822076095379298,3.350430854908523e-5,-4.4223341324998374e-8,0.0022824701581385626,3.38215008984268e-5,-4.458094556850484e-8,0.0022826501909389498,3.413398695711384e-5,-4.493459121134231e-8,0.0022827568168762593,3.44073498830337e-5,-4.524485208989148e-8,0.0022828100447377627,3.4612658901913384e-5,-4.547843105508966e-8,0.0022828384740465075,3.4730475087631895e-5,-4.561266796396316e-8,0.002282876011570533,3.475388096679199e-5,-4.5638964500433376e-8,0.002282957848421652,3.469040464851831e-5,-4.5565062411767125e-8,0.0022831158204580496,3.456271833872463e-5,-4.541606069616092e-8,0.0022833731202049406,3.440786048574832e-5,-4.5233819572801423e-8,0.0022837383081319583,3.427425554837967e-5,-4.507378989735375e-8,0.0022841992424606486,3.42151255976047e-5,-4.4997528462908375e-8,0.0022847190630679586,3.427694413898361e-5,-4.505929978605274e-8,0.0022852381039333777,3.448341082476899e-5,-4.528736898920922e-8,0.002285686017006873,3.4819631970934466e-5,-4.566551541864208e-8,0.0022860045965692596,3.522625967483624e-5,-4.6126130449042295e-8,0.0022861729555042707,3.5613274931110104e-5,-4.65660689031637e-8,0.002286219685653516,3.5892392446296056e-5,-4.688394305335418e-8,0.002286211691889868,3.601177133491025e-5,-4.7019944247694604e-8,0.002286225505956513,3.5972626779050686e-5,-4.697479161031815e-8,0.0022863188543598124,3.58205873724714e-5,-4.6799832485411654e-8,0.00228651668635773,3.562198060753e-5,-4.6570120297171264e-8,0.002286812966928041,3.5440632292562546e-5,-4.635820450409294e-8,0.002287180868527256,3.532389707738892e-5,-4.6218365864022434e-8,0.002287583967878681,3.5298098790532246e-5,-4.618136168410986e-8,0.0022879848284268977,3.536980504236021e-5,-4.6255633734096165e-8,0.0022883504197809537,3.552946613083765e-5,-4.643115703668337e-8,0.002288655274879669,3.575541538610793e-5,-4.668378554344655e-8,0.0022888834463104927,3.60176745468646e-5,-4.697952823998258e-8,0.002289029789277668,3.6281738912671874e-5,-4.727893103740416e-8,0.002289100595889158,3.65126058036671e-5,-4.754178038619249e-8,0.0022891133320047745,3.667916372430841e-5,-4.773217946936401e-8,0.0022890950961498148,3.675871799412574e-5,-4.782371311654076e-8,0.0022890795607725576,3.674100774676719e-5,-4.7804003549630296e-8,0.002289102527511509,3.663093644990813e-5,-4.767785241181172e-8,0.002289196541348638,3.644938070154096e-5,-4.746830614559982e-8,0.0022893851939173337,3.6231636872978196e-5,-4.7215134114218746e-8,0.002289677840039512,3.602331407239086e-5,-4.6970406519053876e-8,0.0022900654708520327,3.58736629553553e-5,-4.679101983320465e-8,0.002290518708418688,3.582634915501503e-5,-4.6728061346799346e-8,0.0022909894789891827,3.590809695929047e-5,-4.681348212371508e-8,0.002291418352774001,3.611712058525191e-5,-4.704638370723802e-8,0.002291748752111823,3.641569025232455e-5,-4.7384109668672996e-8,0.0022919460643483626,3.6733133288591057e-5,-4.774556420547209e-8,0.0022920143328060607,3.6983858880081674e-5,-4.803206329891999e-8,0.002291999814615806,3.7096977477987554e-5,-4.8161604641847836e-8,0.002291975474626928,3.704374634491269e-5,-4.8100515063701843e-8,0.0022920128248449328,3.6846970662485426e-5,-4.787422973248501e-8,0.0022921567275596033,3.656759825553701e-5,-4.7551933742153225e-8,0.0022924155206640656,3.627866505605262e-5,-4.721685937218435e-8,0.0022927669894349093,3.6041857596996885e-5,-4.6939648387720506e-8,0.002293172035520522,3.589533984270876e-5,-4.676448884083824e-8,0.002293587774220062,3.585234950794764e-5,-4.670737294106673e-8,0.00229397625599273,3.5905780732209896e-5,-4.676107434656356e-8,0.0022943087935883965,3.603438248915831e-5,-4.690198432790658e-8,0.0022945674627496593,3.6208248273547327e-5,-4.709625363021303e-8,0.0022947453752612396,3.639309951270794e-5,-4.730469355160464e-8,0.002294846618012875,3.655385217382977e-5,-4.748694572871607e-8,0.0022948859966711527,3.6658142221179055e-5,-4.760561192507473e-8,0.0022948882229804706,3.66802485027254e-5,-4.7630789899419904e-8,0.002294885915277481,3.660536515102313e-5,-4.754496057001509e-8,0.0022949158390162044,3.64335141641052e-5,-4.7347464493291285e-8,0.002295013303258485,3.6181877526743895e-5,-4.705723761896796e-8,0.0022952053707549756,3.5884255428738196e-5,-4.6712359540665154e-8,0.0022955042500871392,3.558678939109289e-5,-4.6365392836542746e-8,0.002295902637857623,3.534001900618766e-5,-4.607449202272132e-8,0.002296372603345501,3.518847407688666e-5,-4.5891531629784525e-8,0.002296868936882388,3.515979486113663e-5,-4.584945571699113e-8,0.002297337100875107,3.525571375908133e-5,-4.595154991513938e-8,0.0022977251112613487,3.54474663309797e-5,-4.6165727461002804e-8,0.002297997511006086,3.567828648084553e-5,-4.642708208073091e-8,0.0022981479038201797,3.587486868504097e-5,-4.665101902295781e-8,0.0022982048890346418,3.59670990491837e-5,-4.6756152857442506e-8,0.0022982264993906746,3.591076706084595e-5,-4.66907281238414e-8,0.00229828244392896,3.570370688981107e-5,-4.645139989864305e-8,0.0022984305793150974,3.538654013029307e-5,-4.6084187811529834e-8,0.002298698613153666,3.502687277549902e-5,-4.5666380520174655e-8,0.0022990791902976694,3.4695334694455384e-5,-4.5279093849930466e-8,0.0022995381727997865,3.4445276278051516e-5,-4.49839970221804e-8,0.002300029218953335,3.430321854904224e-5,-4.4812265883725474e-8,0.0023005071520190556,3.426970567379333e-5,-4.4765358220823394e-8,0.0023009363058259054,3.432593949783263e-5,-4.4822399265362546e-8,0.0023012938617268945,3.444159290053393e-5,-4.494899788620879e-8,0.002301570006953491,3.458126436569647e-5,-4.51046246777301e-8,0.002301766800108603,3.470904311234521e-5,-4.524791553057968e-8,0.002301896888738061,3.479179416047871e-5,-4.534053254240823e-8,0.002301982375857608,3.480208071788327e-5,-4.535057802732492e-8,0.0023020534602801847,3.472142304601621e-5,-4.525634915545079e-8,0.0023021460538406057,3.454404162586172e-5,-4.505063369302154e-8,0.002302297520970304,3.4280415377693827e-5,-4.474483116108385e-8,0.00230254017354546,3.395911142067943e-5,-4.4371164167657605e-8,0.0023028932564570586,3.3624877587848964e-5,-4.398066536436923e-8,0.0023033555964254958,3.333152309155398e-5,-4.3635188638132984e-8,0.0023039020503271127,3.312995217770553e-5,-4.339376844190064e-8,0.002304486385520222,3.305425894193706e-5,-4.329658172175806e-8,0.002305051035348368,3.3110519998397165e-5,-4.335181227808648e-8,0.0023055413708626526,3.3272560571329226e-5,-4.353040435431237e-8,0.0023059202737308734,3.348666573581906e-5,-4.3771124818958763e-8,0.0023061786570983014,3.368428524135492e-5,-4.3994995923487775e-8,0.0023063388048928817,3.379947725797813e-5,-4.412542796611055e-8,0.0023064492323863275,3.378653186463361e-5,-4.410875759920423e-8,0.0023065718780325255,3.363277880294064e-5,-4.392931753536871e-8,0.0023067648430645355,3.336223440573916e-5,-4.361391666217241e-8,0.0023070660644278905,3.302816568314063e-5,-4.322345795297547e-8,0.002307483727852774,3.269679339994018e-5,-4.2834243518091083e-8,0.0023079967124393116,3.242829025455311e-5,-4.2516054578377455e-8,0.002308563857239961,3.2262195589673835e-5,-4.2315205384790976e-8,0.0023091372052619127,3.221149782256434e-5,-4.224750159055635e-8,0.002309673844341424,3.2265073740245427e-5,-4.2300823774791806e-8,0.0023101432068525158,3.239501720334835e-5,-4.244342832539441e-8,0.0023105295861446016,3.256496006872504e-5,-4.2633513685632894e-8,0.0023108314009869526,3.2736917316135974e-5,-4.282717939490637e-8,0.002311059046577513,3.287596311964373e-5,-4.298390962236588e-8,0.0023112325956021447,3.2953249680788354e-5,-4.30701110947523e-8,0.00231137979665109,3.294831861010061e-5,-4.306178209267358e-8,0.0023115340997543143,3.285151044406728e-5,-4.2947275355292e-8,0.0023117319317365243,3.2666777386046935e-5,-4.2730561942988145e-8,0.0023120082445560355,3.241439708027806e-5,-4.243445694518821e-8,0.0023123897136956896,3.213200948149292e-5,-4.210197938273945e-8,0.002312886188388601,3.1871514418046985e-5,-4.179294978549619e-8,0.0023134830361791667,3.168968477884489e-5,-4.157326718028376e-8,0.0023141388246951094,3.163282940214068e-5,-4.149718047268907e-8,0.002314792329840861,3.172005820484998e-5,-4.158778555622238e-8,0.002315378896673669,3.193290371843414e-5,-4.182474929661659e-8,0.0023158505127047306,3.2217740072628357e-5,-4.214680612835947e-8,0.0023161909435828218,3.2501262856054346e-5,-4.2469442360932653e-8,0.002316419671183998,3.271254277366566e-5,-4.27103290681903e-8,0.0023165841921237427,3.2802780436011716e-5,-4.2812247472897776e-8,0.0023167450214273137,3.2756541656388914e-5,-4.275628838705075e-8,0.0023169591271539453,3.259272819167442e-5,-4.256326379538918e-8,0.0023172663812004936,3.2356898186037265e-5,-4.228512778642178e-8,0.0023176817453812227,3.2108186977599e-5,-4.199006993769168e-8,0.002318194185054491,3.1904582986137214e-5,-4.174553762547756e-8,0.00231877176791076,3.1790160014621046e-5,-4.1603324561922454e-8,0.002319371007020906,3.1787119353049104e-5,-4.159008391244041e-8,0.0023199475183516252,3.189400454355314e-5,-4.17049622110272e-8,0.0023204650305293554,3.20894591354611e-5,-4.1923747329153166e-8,0.002320900868517307,3.2339315150879754e-5,-4.220702939293869e-8,0.0023212476092142357,3.260440417190498e-5,-4.2509329097549e-8,0.0023215118356965506,3.284715719192341e-5,-4.278686762213579e-8,0.0023217113982006393,3.3036182323788574e-5,-4.300295310375987e-8,0.002321872364162279,3.314903836216729e-5,-4.313120169100703e-8,0.0023220262092654128,3.3173971066507745e-5,-4.315751282036905e-8,0.002322207158400309,3.311135649858902e-5,-4.3081732272613976e-8,0.0023224491028571363,3.297521373884765e-5,-4.291948491394481e-8,0.002322781228382118,3.279447518776715e-5,-4.270382165655561e-8,0.0023232216822924234,3.261266466520483e-5,-4.248505510679363e-8,0.002323769722566849,3.2483621858754785e-5,-4.2325943183644296e-8,0.002324398904211897,3.2460944922610885e-5,-4.228942774440365e-8,0.002325056179267136,3.258120401470381e-5,-4.241896142727533e-8,0.002325671964702718,3.2846122159074696e-5,-4.271751943685757e-8,0.00232618144268266,3.321386581244003e-5,-4.3137207029593565e-8,0.0023265488268709705,3.36082031220369e-5,-4.3589753742231386e-8,0.0023267814240886583,3.394420957442691e-5,-4.397636855767629e-8,0.0023269254239565483,3.415782391829717e-5,-4.422212158225807e-8,0.002327046906947544,3.422452814123435e-5,-4.429770088385412e-8,0.002327209206277997,3.4160981089080925e-5,-4.422143906155781e-8,0.002327456336525311,3.401357864203633e-5,-4.4046282714445835E-08,0.002327805923589105,3.384194337626255e-5,-4.384093488623098e-8,0.002328250166554385,3.37036441574621e-5,-4.3672328614357636e-8,0.002328761740259225,3.364315089403521e-5,-4.3592791245387643e-8,0.002329301915681379,3.36856352720997e-5,-4.3632602011700155e-8,0.002329829055291661,3.383516729126079e-5,-4.379753708045467e-8,0.0023303062390849644,3.407663050535043e-5,-4.407078165874924e-8,0.0023307070359199853,3.438049828740393e-5,-4.441833484198168e-8,0.0023310187619350036,3.470925636680583e-5,-4.4796515547741785e-8,0.0023312431048083324,3.502410718649536e-5,-4.515990686671555e-8,0.002331394528886721,3.5290797443504604e-5,-4.5468276438613356e-8,0.002331497260081565,3.5483844383961805e-5,-4.569154976787356e-8,0.002331581733856791,3.558904226640621e-5,-4.581270005257149e-8,0.0023316810811048884,3.560465423137779e-5,-4.582909582100883e-8,0.002331827771099224,3.5541816076164474e-5,-4.575300867708182e-8,0.0023320501595354027,3.542447396167401e-5,-4.561169901534009e-8,0.0023323683909373285,3.528871876135906e-5,-4.5446880835164095e-8,0.0023327891822946096,3.51805346933835e-5,-4.531231018055253e-8,0.002333299958278486,3.515015003696038e-5,-4.52672578511267e-8,0.0023338645432176663,3.5241270465413334e-5,-4.5363790266725256e-8,0.002334424562220092,3.5475412457926315e-5,-4.562814505895616e-8,0.0023349112408662287,3.583613212030472e-5,-4.6041947983230845e-8,0.002335268146958933,3.626338247097496e-5,-4.6535418255023436e-8,0.0023354760591965088,3.666773954728629e-5,-4.700402689339779e-8,0.0023355644528050535,3.696270836812873e-5,-4.7346394509497067e-8,0.002335600051392683,3.7098371862978543e-5,-4.75036656435806e-8,0.002335658860810056,3.707695140177438e-5,-4.747763880896117e-8,0.0023357987401432536,3.694435600604198e-5,-4.732093922172631e-8,0.002336045463982361,3.6767616798790464e-5,-4.711093689128459e-8,0.002336393449628172,3.661235323283033e-5,-4.6923808409687194e-8,0.00233681482692482,3.6528212315890726e-5,-4.68177625437056e-8,0.002337270388702322,3.6542959451067806e-5,-4.682607312286444e-8,0.0023377189367930666,3.66625719363429e-5,-4.6956871248297825e-8,0.002338124071548144,3.687450363014641e-5,-4.7196561629315964e-8,0.002338458716826444,3.71523445299233e-5,-4.75149713046986e-8,0.0023387078440758034,3.7461115310449495e-5,-4.787144263559505e-8,0.002338869585723431,3.7762817841687184e-5,-4.822140859107426e-8,0.0023389547817296704,3.802184043837775e-5,-4.852287616148231e-8,0.0023389850485431105,3.820974950563554e-5,-4.87421532200505e-8,0.002338989627065774,3.830895059743735e-5,-4.885815585004515e-8,0.0023390014899789605,3.8314840733578865e-5,-4.8864887051675046e-8,0.002339053227796983,3.823643256374001e-5,-4.8772155817743224e-8,0.0023391730470084114,3.809565596331883e-5,-4.860485990028719e-8,0.002339381007965399,3.7925524692509784e-5,-4.840106376674009e-8,0.0023396854228536312,3.776719520424567e-5,-4.82088209371393e-8,0.0023400793116841023,3.76654727255943e-5,-4.808107898018889e-8,0.002340537481346002,3.766178500501879e-5,-4.8067398459253976e-8,0.0023410160318337752,3.778395059438169e-5,-4.820166978989883e-8,0.0023414571514578423,3.8033753723512084e-5,-4.8487112668261064e-8,0.002341802014567862,3.837655741982126e-5,-4.888372230559299e-8,0.0023420114228051465,3.874102641968516e-5,-4.930783648964436e-8,0.0023420863661792065,3.9036695298684036e-5,-4.965293287954776e-8,0.0023420745217566197,3.918717458210972e-5,-4.982885057806455e-8,0.0023420538209714603,3.91622722916344e-5,-4.9799546790811774e-8,0.0023421004046062298,3.8988852688015025e-5,-4.959573407663678e-8,0.0023422602630217295,3.8734768578304047e-5,-4.9296049457022376e-8,0.0023425391360975905,3.847893082192605e-5,-4.899224673303789e-8,0.0023429102765989336,3.828568044273994e-5,-4.8759531463412606e-8,0.0023433299940436355,3.819251167163617e-5,-4.8642341136861975e-8,0.0023437518655280796,3.8209551159922836e-5,-4.865357708177263e-8,0.0023441359775748295,3.8325147109487965e-5,-4.87807783260245e-8,0.002344453495623456,3.8512988018584136e-5,-4.8994075741131246e-8,0.002344688236531956,3.873852777500904e-5,-4.9253489797137967e-8,0.0023448367420634006,3.896429832747165e-5,-4.951513690495988e-8,0.002344907563344286,3.915445172418351e-5,-4.973668851539436e-8,0.002344919846223446,3.927885131661452e-5,-4.9882338277690744e-8,0.0023449010717055798,3.9316757036171124e-5,-4.992722780668246e-8,0.0023448838074805536,3.925979958184939e-5,-4.986094461349622e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json new file mode 100644 index 000000000..f46c700e5 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":18000,"numberOfSamples":1000,"samples":[0.002344901558802442,3.911368303105064e-5,-4.968948981883951e-8,0.002344984132234963,3.8898163040661456e-5,-4.9435280092255396e-8,0.002345153076453194,3.8645137911801235e-5,-4.913505665071581e-8,0.0023454177649364274,3.8394882701718704e-5,-4.883571430956027e-8,0.0023457726182683734,3.8190636084535106e-5,-4.858818570335279e-8,0.0023461958479369647,3.8071833815956895e-5,-4.8439580759263195E-08,0.0023466502566154754,3.806617270836784e-5,-4.8423700396250246e-8,0.0023470871667342188,3.818099295284342e-5,-4.855052067391149e-8,0.0023474547964515697,3.8395736841710905e-5,-4.8796864492445077e-8,0.002347711548848421,3.865908630266998e-5,-4.9102715263344044e-8,0.0023478420825502667,3.889571950044163e-5,-4.937914952780937e-8,0.00234786961391877,3.902607152063935e-5,-4.9531851099022974e-8,0.0023478548636246925,3.899526350333567e-5,-4.949545923878963e-8,0.002347876570857601,3.8797420616696476e-5,-4.926230021920203e-8,0.0023480009856264934,3.8479554435582394e-5,-4.888691218568922e-8,0.002348257394842648,3.81212678497871e-5,-4.8462214576854004e-8,0.0023486326479069406,3.7803093228172886e-5,-4.8082513592352674e-8,0.0023490835964367573,3.75814623825538e-5,-4.781433129307214e-8,0.002349556312825578,3.747939916176964e-5,-4.768549705089819e-8,0.002350001794120482,3.7490379203984336e-5,-4.768944037993623e-8,0.002350384381521822,3.758800212452211e-5,-4.779618621991062e-8,0.0023506841057128985,3.773572437125139e-5,-4.796348785816809e-8,0.0023508956980960788,3.7894232799687954e-5,-4.814536983155262e-8,0.00235102648099269,3.802641740658273e-5,-4.829803528414698e-8,0.002351094173287532,3.810084978765315e-5,-4.838411531070628e-8,0.0023511246964647747,3.8094608924835005e-5,-4.837614007717066e-8,0.0023511496348331447,3.799585924542727e-5,-4.825963731338258e-8,0.0023512029179003826,3.780605403700456e-5,-4.803571540037979e-8,0.002351316493203054,3.754110540847055e-5,-4.772242618165293e-8,0.002351515254331023,3.723065606146325e-5,-4.7353971759481864e-8,0.0023518120205759476,3.6914840723378074e-5,-4.697706960436158e-8,0.0023522036900594134,3.663842066327486e-5,-4.664428486396447e-8,0.0023526697415857454,3.6442835626573675e-5,-4.6404850464569947E-08,0.0023531739492806607,3.635743472275251e-5,-4.629433098034591e-8,0.0023536695969230293,3.639153741844735e-5,-4.632502065598751e-8,0.002354107963028887,3.65290387843179e-5,-4.64791633358682e-8,0.0023544493334192655,3.672744771866113e-5,-4.670739713326941e-8,0.0023546748244885193,3.692340046714689e-5,-4.693502893752279e-8,0.0023547957604870243,3.704596407123413e-5,-4.707779081016492e-8,0.002354855915443392,3.703656572046711e-5,-4.70656375977696e-8,0.0023549223160394474,3.68699978500431e-5,-4.6867843166706427e-8,0.002355064610704272,3.656683381659626e-5,-4.65078344897485e-8,0.002355330456332751,3.6188645949168455e-5,-4.605762360942627e-8,0.0023557290800031,3.581614088997792e-5,-4.561209830788785e-8,0.0023562313149006323,3.552104851024793e-5,-4.525598622392911e-8,0.002356784170343763,3.534573263514571e-5,-4.503985226093692e-8,0.00235733028458666,3.529761527789713e-5,-4.49733843052568e-8,0.002357823000083982,3.535587514723036e-5,-4.503300722505471e-8,0.0023582334607192713,3.548324139112816e-5,-4.517550230472812e-8,0.0023585511399880337,3.5636946080439145e-5,-4.535076312918837e-8,0.002358780962041987,3.577633956909642e-5,-4.551078335076926e-8,0.0023589395842511522,3.5867314155800855e-5,-4.561499749370089e-8,0.002359052080351249,3.588475773629073e-5,-4.563332272362631e-8,0.002359149147828655,3.58142084645814e-5,-4.554820350082022e-8,0.0023592643626533377,3.565335730415486e-5,-4.5356402142557453E-08,0.002359430841246486,3.541339537933329e-5,-4.507057121932486e-8,0.0023596768567981123,3.511952535451973e-5,-4.471987460114685e-8,0.0023600205188522927,3.480948168500788e-5,-4.4348345490610194e-8,0.0023604644698905536,3.452896471445555e-5,-4.400967986329848e-8,0.002360992350010294,3.432364769813786e-5,-4.375798612579386e-8,0.002361569042366369,3.422878850205881e-5,-4.363559641492016e-8,0.0023621460051594665,3.4259012492440044e-5,-4.3660883375380844e-8,0.0023626713616961515,3.440164922381125e-5,-4.3820080092443e-8,0.002363102567048767,3.4616447316981465e-5,-4.4066547053651594e-8,0.002363418276529288,3.484277697645849e-5,-4.432896661511161e-8,0.002363625904080295,3.501331834422755e-5,-4.452741922922826e-8,0.002363762140673494,3.50713100177352e-5,-4.459391491625094e-8,0.0023638851680286292,3.498694287747205e-5,-4.449207573009896e-8,0.0023640594734086117,3.4767688893707976e-5,-4.422967279774819e-8,0.002364337052724743,3.44579776897352e-5,-4.385849503168624e-8,0.0023647414089119547,3.412668761857231e-5,-4.345970698104098e-8,0.002365260922020612,3.3846152104623893e-5,-4.3119075143364176e-8,0.0023658544426327192,3.367093165302294e-5,-4.290180278936738e-8,0.0023664660490979486,3.362478090509265e-5,-4.2836928949552116e-8,0.002367041894211088,3.3699477499923e-5,-4.29156715149733e-8,0.0023675425813141815,3.3863070665591675e-5,-4.3100929149056666e-8,0.002367948361133545,3.407186155979982e-5,-4.334131276515742e-8,0.0023682583104001854,3.4281125480317074e-5,-4.358383945165417e-8,0.002368486347050624,3.4452289918945094e-5,-4.378254145392837e-8,0.002368656569458454,3.455667745010834e-5,-4.3903037676489125e-8,0.002368799213631667,3.457704329979657e-5,-4.39244496666408e-8,0.0023689474323752143,3.450818698611703e-5,-4.384015205758009e-8,0.0023691344170632556,3.4357416482385305e-5,-4.3658308045106786e-8,0.002369390127550806,3.4144946605107745e-5,-4.340234799568976e-8,0.002369737050180081,3.390358038895181e-5,-4.311066755298774e-8,0.0023701849761484078,3.367640314542406e-5,-4.283404275674573e-8,0.002370725808074802,3.351105695568608e-5,-4.262900855450118e-8,0.0023713306372070224,3.344998149691437e-5,-4.254638292238252e-8,0.0023719519724518553,3.351806525291478e-5,-4.261657041710548e-8,0.0023725329401571575,3.371175366291013e-5,-4.283642668257849e-8,0.0023730222295828053,3.3995002702351264e-5,-4.316414308379054e-8,0.002373389973065274,3.430578520129685e-5,-4.3526671192005085e-8,0.0023736381505010734,3.4572328983584834e-5,-4.38388242013889e-8,0.0023738010098588143,3.473355012811767e-5,-4.402752760022938e-8,0.00237393531167498,3.4756315512409036e-5,-4.40524591922618e-8,0.0023741041518875864,3.4643979531241987e-5,-4.391644020525929e-8,0.0023743597715574142,3.443428581685144e-5,-4.366325823519776e-8,0.002374730275263065,3.418808569592938e-5,-4.336456918047751e-8,0.0023752135991477064,3.397259983293269e-5,-4.3100208376556956e-8,0.002375779941817866,3.384415723124978e-5,-4.293768908589405e-8,0.0023763813960745914,3.383531261076801e-5,-4.2916694132470866e-8,0.0023769653178674142,3.394966546843266e-5,-4.304258701004152e-8,0.0023774870203995034,3.416488144273135e-5,-4.3289677344681276e-8,0.002377918235263097,3.444154087954113e-5,-4.3611544323386645e-8,0.0023782499725694506,3.473394751413563e-5,-4.3953871457543554e-8,0.002378490676997382,3.499948400810439e-5,-4.4265690042450136e-8,0.002378661785361829,3.520478219905836e-5,-4.45068771402646e-8,0.0023787927125148967,3.5328684667322306e-5,-4.465179236135274e-8,0.0023789164661922424,3.5362982250262976e-5,-4.4690190041228925e-8,0.002379066168330197,3.531210837114164e-5,-4.462683919511151e-8,0.0023792721073279486,3.519257964256899e-5,-4.448085699607398e-8,0.0023795586569317585,3.50323249823028e-5,-4.4284979324380445e-8,0.0023799404698155602,3.486935159153574e-5,-4.408411931944888e-8,0.00238041786411957,3.4748539855140206e-5,-4.39317205628605e-8,0.0023809723866902452,3.471506365948844e-5,-4.38820214882267e-8,0.0023815649852208134,3.48036933953732e-5,-4.397726798401748e-8,0.0023821401857936045,3.502563195655052e-5,-4.423182507960411e-8,0.0023826385643343764,3.535804096673262e-5,-4.461940477123716e-8,0.002383015549616911,3.574351081297848e-5,-4.507218244911266e-8,0.0023832590121007622,3.610394768843331e-5,-4.549722500288198e-8,0.0023833960729126107,3.6365403192313095e-5,-4.5806082879119395e-8,0.0023834844707587666,3.6482794911242564e-5,-4.594430660481812e-8,0.0023835926131679144,3.6453070353420245e-5,-4.5907232417809996e-8,0.0023837780068744117,3.6312527567923084e-5,-4.573698815443366e-8,0.002384072504190872,3.612228458903607e-5,-4.550549834835012e-8,0.002384477540262076,3.594951747525463e-5,-4.529245938741677e-8,0.0023849679834993427,3.5850894327466484e-5,-4.516576690664186e-8,0.0023855013057676516,3.586164050491832e-5,-4.5168379713013465e-8,0.0023860287687607305,3.599113018920311e-5,-4.5312724744731254e-8,0.002386506003294634,3.6224400739596276e-5,-4.558208417162952e-8,0.0023869010817420566,3.65281921996621e-5,-4.5937482125035984e-8,0.0023871989250919125,3.685955147899608e-5,-4.632784241705567e-8,0.002387401820865755,3.7174763898084735e-5,-4.6700739768763154e-8,0.002387526785819297,3.7436733765039484e-5,-4.701140163670798e-8,0.0023876010849905364,3.761979915266924e-5,-4.7228628272774645e-8,0.00238765727041805,3.771186667545958e-5,-4.733742080218521e-8,0.002387728725155376,3.7714449644070145e-5,-4.7339022820513065e-8,0.0023878460686218663,3.764152424039279e-5,-4.724953688088123e-8,0.002388034216505095,3.751792399775393e-5,-4.709805432518741e-8,0.0023883096269505005,3.7377464417580596e-5,-4.692455759226862e-8,0.002388677274146209,3.726041803036959e-5,-4.677709598428318e-8,0.0023891272588487315,3.720938268477899e-5,-4.6706986835451093e-8,0.0023896319399229,3.7262272101778856e-5,-4.6760418636059854e-8,0.0023901458647094826,3.7441849520893325e-5,-4.696572132812101e-8,0.002390611746871633,3.774354152197786e-5,-4.731844757029362e-8,0.0023909747687158945,3.81269601588696e-5,-4.777091840959034e-8,0.002391202906290385,3.8519192870702565e-5,-4.823603735908806e-8,0.0023913040660786186,3.883476948556154e-5,-4.8611270833999345e-8,0.002391328128732739,3.9006667440986484e-5,-4.881589018117696e-8,0.00239134943562406,3.90124026913742e-5,-4.882222941094568e-8,0.002391438487576229,3.8880411452464615e-5,-4.866331475848319e-8,0.0023916383708005662,3.867507853522781e-5,-4.841510309828039e-8,0.00239195590432241,3.847153998643774e-5,-4.816669872463936e-8,0.0023923668018147257,3.833341819751815e-5,-4.799408876442468e-8,0.002392828007801345,3.830015839190798e-5,-4.794511807386538e-8,0.0023932907590552147,3.8383856123547755e-5,-4.8035481865629606e-8,0.00239371096036409,3.857245714578611e-5,-4.82521178047072e-8,0.0023940559931876475,3.883616405890264e-5,-4.856042818085454e-8,0.0023943082930363074,3.9134985874419545e-5,-4.891304887908877e-8,0.0023944662220829185,3.9426309839536574e-5,-4.925889576057055e-8,0.0023945426540706474,3.967167832740828e-5,-4.955145041930234e-8,0.0023945617795173573,3.984206233309221e-5,-4.975530429415886e-8,0.002394554803373748,3.992121054124771e-5,-4.985033218746083e-8,0.00239455526447015,3.990695202747839e-5,-4.983330111917577e-8,0.002394594661569528,3.9810623353083994e-5,-4.971716322616409e-8,0.0023946988252229935,3.965513390937551e-5,-4.952874150407233e-8,0.0023948850777624304,3.9472259325648355e-5,-4.9305586614794425e-8,0.00239515997526318,3.9299439114975593e-5,-4.909233045733194e-8,0.0023955174021503037,3.9175945382072434e-5,-4.893628682300761e-8,0.002395937007932476,3.9137890421156826e-5,-4.8881533371822775e-8,0.002396383695909191,3.921131979781866e-5,-4.896047917113908e-8,0.0023968099593563576,3.9403258047878505e-5,-4.918277327372618e-8,0.002397163497613983,3.969252739918278e-5,-4.952387416863947e-8,0.0023974015854493413,4.002518309701328e-5,-4.99193026544001e-8,0.002397509675261247,4.0321678158350774e-5,-5.027326909845036e-8,0.0023975151824612907,4.049998955523513e-5,-5.048669925554299e-8,0.0023974844671535013,4.050819106081807e-5,-5.049657166197553e-8,0.002397499090668801,4.034853438152713e-5,-5.0304833087084466e-8,0.0023976229322382613,4.007667775600651e-5,-4.997738881179162e-8,0.002397879519985696,3.977656534145411e-5,-4.96140773901125E-08,0.0023982502957491016,3.9527801939768744e-5,-4.93098968993077e-8,0.002398689129527083,3.938302665345923e-5,-4.912820157919039e-8,0.002399141121851689,3.936112368628708e-5,-4.9092584839070415e-8,0.002399557122870482,3.945190021821551e-5,-4.919217196871091e-8,0.002399901681190261,3.9625470595205126e-5,-4.939240127952472e-8,0.0024001557140803276,3.9841782493496445e-5,-4.9646053324931454e-8,0.00240031603823306,4.0058414074826275e-5,-4.990243651972935e-8,0.0024003933848322214,4.02365269468108e-5,-5.0114610330648764e-8,0.0024004095942288745,4.034539638022784e-5,-5.0245052214989265e-8,0.0024003941453741816,4.0365693589607254e-5,-5.0269831914895396e-8,0.0024003801497172756,4.0291449589680024e-5,-5.018110199371788e-8,0.0024004000531943383,4.013054961443052e-5,-4.9987707246810776e-8,0.0024004814327914467,3.990360304898532e-5,-4.9713797552627094e-8,0.0024006433784475078,3.96412645683471e-5,-4.9395635374628664e-8,0.002400893829350257,3.938038444905259e-5,-4.907710595026679e-8,0.0024012280072063545,3.9159384872200925e-5,-4.88043653842751e-8,0.002401627983789423,3.901309599496099e-5,-4.861979177381442e-8,0.0024020634684160267,3.896712290496793e-5,-4.8555194568685595e-8,0.0024024942344411503,3.903172416614497e-5,-4.862420076639316e-8,0.0024028751869229125,3.919562945854613e-5,-4.881439962151439e-8,0.0024031652429550516,3.942160059336088e-5,-4.908159561584208e-8,0.0024033401183291706,3.964740296327271e-5,-4.9350792145343485e-8,0.002403406122558092,3.9796826052265784e-5,-4.952959530944614e-8,0.0024034075771528214,3.9802695108078196e-5,-4.953626629721684e-8,0.002403418663533099,3.963531471377749e-5,-4.933424264248788e-8,0.002403517483513351,3.9320414167136537e-5,-4.895377104664041e-8,0.00240375400559779,3.893213949475224e-5,-4.848339885001966e-8,0.0024041310350306584,3.856275056172833e-5,-4.803360539427687e-8,0.002404608522803643,3.8287467657906244e-5,-4.7694797328705657e-8,0.002405124618903588,3.814364277978108e-5,-4.7512463896821273e-8,0.002405618526611032,3.812961405164927e-5,-4.748570334517685e-8,0.0024060450436589023,3.821594093326314e-5,-4.7580367143404314e-8,0.002406379515424713,3.8359386346411104e-5,-4.774544974096198e-8,0.0024066165603803674,3.851416440298249e-5,-4.7926337409967924e-8,0.002406766193043988,3.863916072047892e-5,-4.8073452764022304e-8,0.0024068496190933135,3.870200493814187e-5,-4.814731567974312e-8,0.0024068954751543747,3.8681384728337856e-5,-4.812157280049673e-8,0.0024069363302526986,3.8568469741027326e-5,-4.7984907944708237e-8,0.002407005092363638,3.8367620010703626e-5,-4.774197343294295e-8,0.0024071311642991904,3.8096143001373596e-5,-4.741307791637707e-8,0.00240733648448139,3.7782662926820594e-5,-4.703219316231057e-8,0.0024076319591230843,3.746376601902139e-5,-4.664296180742872e-8,0.0024080150100535243,3.717901842199488e-5,-4.629284851707181e-8,0.0024084688627471237,3.6964873105139e-5,-4.6025986316963574e-8,0.002408963950387803,3.684822663195842e-5,-4.587550926484438e-8,0.002409461535231225,3.6840528070730786e-5,-4.585634918576009e-8,0.0024099194289861434,3.6933325176103526e-5,-4.595954827428758e-8,0.002410299639091284,3.709615129870326e-5,-4.6149286023116704e-8,0.0024105775736920194,3.727809719448076e-5,-4.636443290545415e-8,0.0024107515290991625,3.7414947503234764e-5,-4.652707276927955e-8,0.0024108494422053167,3.744332346904537e-5,-4.6559778833502254e-8,0.0024109280582808607,3.732068196771385e-5,-4.641012552830863e-8,0.0024110599588631028,3.704486401008396e-5,-4.6074593882075726e-8,0.0024113092457543352,3.666207745630117e-5,-4.560832165779338e-8,0.0024117058579894443,3.625440453889971e-5,-4.511002792620606e-8,0.00241223320394758,3.590984658345839e-5,-4.468591059086578e-8,0.0024128367433007784,3.569068786073452e-5,-4.4411566261216975e-8,0.002413447167854588,3.561679042361314e-5,-4.431182379727306e-8,0.002414003943390364,3.566857531655897e-5,-4.4364131508880796e-8,0.002414468917828636,3.5802128924618506e-5,-4.45164528407243e-8,0.0024148287689588913,3.596582802687616e-5,-4.4707042649597976e-8,0.0024150906323866994,3.6112294226174406e-5,-4.487876186163635e-8,0.0024152756199526553,3.620466985756144e-5,-4.4986732147043753e-8,0.002415412983422486,3.621886433437632e-5,-4.5001246595991545e-8,0.002415535705571361,3.614384708305006e-5,-4.490832914512481e-8,0.0024156771163272757,3.59813440871689e-5,-4.470949129805716e-8,0.0024158678193869285,3.5745351613970705e-5,-4.442116416614326e-8,0.002416132416351302,3.546120330008051e-5,-4.4073537242749924e-8,0.0024164859220694446,3.516352548830468e-5,-4.370808294460031e-8,0.00241693034169506,3.4892359785693274e-5,-4.337295078484064e-8,0.0024174524408001833,3.468719086143528e-5,-4.3115900098566585e-8,0.002418023930833043,3.457944258321774e-5,-4.2975364635792224e-8,0.002418604957254082,3.4584872568489474e-5,-4.297126534219297e-8,0.002419150952416655,3.469789771516463e-5,-4.30979643194712e-8,0.0024196218300455495,3.48898251884466e-5,-4.3321783064122653e-8,0.0024199916518604678,3.51121471359681e-5,-4.3584618304832864e-8,0.002420256595170644,3.5304987746849386e-5,-4.381393076419317e-8,0.002420439070447764,3.54098460734516e-5,-4.393818240200917e-8,0.002420585972638163,3.5384692412318615e-5,-4.39053621156832e-8,0.0024207596255476035,3.521796937688811e-5,-4.3700303187940916e-8,0.00242102169533141,3.493649672842064e-5,-4.335458114598203e-8,0.0024214136673983418,3.460203389622349e-5,-4.294254391313394e-8,0.0024219412696859064,3.4294397281599166e-5,-4.2560928350924536e-8,0.002422570997871016,3.40859042454751e-5,-4.2297873198728576e-8,0.002423241774708797,3.401825188013031e-5,-4.220478688725671e-8,0.002423886226246646,3.4092534703597756e-5,-4.2284029344064495e-8,0.002424450990286084,3.4275193790697986e-5,-4.2495842308161056e-8,0.002424907897269756,3.4513860089160096e-5,-4.277731373829174e-8,0.002425254646420478,3.475404717614502e-5,-4.306250514379759e-8,0.0024255087764721997,3.495073098604035e-5,-4.329653600382793e-8,0.0024256997145779124,3.5073628211510956e-5,-4.344214009667556e-8,0.0024258619447215263,3.510795400575972e-5,-4.3480765687463235e-8,0.002426030203565686,3.505305808974759e-5,-4.341105272837135e-8,0.0024262362674914877,3.4920608081784176e-5,-4.3246676601309794e-8,0.0024265064422872465,3.473295174654087e-5,-4.3014350394663596e-8,0.0024268589868617334,3.4521461493677566e-5,-4.275180769052857e-8,0.002427301138503399,3.432410975088323e-5,-4.250490759677728e-8,0.0024278260913050916,3.418129571204661e-5,-4.2322676945393295e-8,0.002428411097108386,3.4129280643721544e-5,-4.2249456747169526e-8,0.002429018449007624,3.4191654643649516e-5,-4.231457750259257e-8,0.002429600921945329,3.4370848029145066e-5,-4.2521942446609057e-8,0.002430111852543173,3.464306742421111e-5,-4.284362752322127e-8,0.0024305177078212167,3.4960014332554184e-5,-4.322166147588011e-8,0.0024308089963019476,3.525864256604065e-5,-4.3579634420191055e-8,0.0024310052103568625,3.54768490791095e-5,-4.3841674275576033e-8,0.0024311514832499894,3.5570331945046896e-5,-4.3953026184890535e-8,0.0024313076209347257,3.552531869349453e-5,-4.389576556823521e-8,0.0024315325810961527,3.5363327353876604e-5,-4.369491031447773e-8,0.0024318686265469066,3.513647254223246e-5,-4.341303915546696e-8,0.0024323294873825944,3.491423748049786e-5,-4.3134445579347336e-8,0.002432896167264619,3.476495141289254e-5,-4.294268271529085e-8,0.0024335222309093078,3.4737272570903575e-5,-4.2897907650809233e-8,0.0024341473034816276,3.484777220801906e-5,-4.3021473228785095e-8,0.0024347141143896403,3.5078911481254485e-5,-4.3293103813853885e-8,0.0024351828565165653,3.5387420696509406e-5,-4.3660807647483854e-8,0.0024355382696882246,3.571869639847352e-5,-4.4058284519528546e-8,0.0024357886769330174,3.602113490945862e-5,-4.442243365076725e-8,0.0024359595899447976,3.6255981177570735e-5,-4.470551282002724e-8,0.002436085616257832,3.64014787157889e-5,-4.4880378715262854e-8,0.002436203431207954,3.645261201880796e-5,-4.49403083766768e-8,0.002436346881699283,3.641860110716656e-5,-4.489600455109322e-8,0.0024365439720128446,3.631989439005647e-5,-4.477193408814986e-8,0.002436814886263786,3.618547757967348e-5,-4.460305079373914e-8,0.0024371701965660787,3.605043991849035e-5,-4.443187709405474e-8,0.0024376087810835056,3.5953118153448417e-5,-4.430512313890507e-8,0.002438115638816738,3.593080766479197e-5,-4.42685612060324e-8,0.0024386606910261066,3.601319060175138e-5,-4.43590417894124e-8,0.0024392005329820178,3.621366124796751e-5,-4.459380937231256e-8,0.0024396852406738875,3.652073535771226e-5,-4.495979153559817e-8,0.002440070792536112,3.689393707336404e-5,-4.540830813754903e-8,0.0024403341938348043,3.7269028978704966e-5,-4.586125501539923e-8,0.0024404847869948067,3.757420212930339e-5,-4.6230801286461525e-8,0.0024405649339235085,3.775253295873212e-5,-4.6446847061845124e-8,0.0024406379971211724,3.778108573313487e-5,-4.6480442904616754e-8,0.0024407684360130493,3.7678040163525975e-5,-4.635265130274541e-8,0.002441002576816896,3.749564568269083e-5,-4.6126207922268527e-8,0.0024413569455008703,3.730344562480743e-5,-4.58853778897302e-8,0.0024418164775716804,3.716885726843634e-5,-4.571251766869334e-8,0.002442341086211704,3.7141004685513786e-5,-4.566838003723965e-8,0.002442877339190302,3.72411338432493e-5,-4.5780171769525656e-8,0.002443371731515466,3.746064251142103e-5,-4.603872319654958e-8,0.002443782406429579,3.7766052234272806e-5,-4.640413953378797e-8,0.002444086872764397,3.810893879139721e-5,-4.681768347059421e-8,0.002444284388309687,3.843785498667255e-5,-4.721633349478445e-8,0.002444393232414692,3.8709012326829734e-5,-4.7546011694557105e-8,0.002444444549161754,3.889334328329184e-5,-4.7770454539860257e-8,0.002444475074792687,3.8979187827749855e-5,-4.787468720267451e-8,0.0024445206944451194,3.8971331473534686e-5,-4.7863936944109584e-8,0.0024446118314487707,3.8887888173957045e-5,-4.775982946018779e-8,0.0024447706911564257,3.8756507830295623e-5,-4.7595742185117445e-8,0.002445009754862674,3.861079858955392e-5,-4.741246632391835e-8,0.002445330792627307,3.848709249206566e-5,-4.7254353116952106e-8,0.0024457239072774276,3.84210898084392e-5,-4.7165331531864033e-8,0.002446166646694304,3.844355610942536e-5,-4.71836986496915e-8,0.002446624062616858,3.857428817952799e-5,-4.733464480752854e-8,0.0024470514934107203,3.88144481598043e-5,-4.762062321108293e-8,0.002447402125327943,3.913928762815128e-5,-4.801212199106996e-8,0.0024476400881559847,3.9495739935443694e-5,-4.8444475535150416e-8,0.0024477561339314394,3.981049166716775e-5,-4.8827712071902615e-8,0.002447778077693695,4.001077266348328e-5,-4.9072160123498955e-8,0.0024477670483197492,4.005148747549024e-5,-4.9121840338880554e-8,0.0024477974812433497,3.993465087268592e-5,-4.897832831402965e-8,0.002447929926440992,3.9709268450711776e-5,-4.870064967828901e-8,0.0024481909223161946,3.9451954414470326e-5,-4.838174394154787e-8,0.0024485684783898502,3.923993501418732e-5,-4.811575988446022e-8,0.0024490213965491316,3.9129377699806304e-5,-4.797180052202577e-8,0.0024494948154261892,3.91451644029732e-5,-4.798138431887394e-8,0.002449935069477873,3.928119976470324e-5,-4.8138482471436045e-8,0.002450300397506881,3.9507323269912974e-5,-4.840749035993413e-8,0.0024505668157711494,3.9779044908857327e-5,-4.8734735279841313E-08,0.0024507297637555462,4.004759573096723e-5,-4.906061161920809e-8,0.002450802394303154,4.02688488745371e-5,-4.9330599704006644e-8,0.0024508113644507706,4.0410128173367605e-5,-4.95038655686505e-8,0.002450791125069385,4.0454212555310635e-5,-4.955844487476108e-8,0.0024507778465312773,4.040035570468197e-5,-4.949267054201453e-8,0.0024508040198822152,4.026270069107783e-5,-4.932327950223557e-8,0.0024508944505534447,4.006688255862525e-5,-4.908122347286046e-8,0.0024510638634689867,3.984580917053899e-5,-4.880648823794057e-8,0.00245131584498336,3.963541528939374e-5,-4.854295462312273e-8,0.002451642653661857,3.9470681141633724e-5,-4.833364518839405e-8,0.002452025536044154,3.938176083843848e-5,-4.8216083300638214e-8,0.002452435488543121,3.938977033584164e-5,-4.8217107227132724e-8,0.002452835048062748,3.950174696583605e-5,-4.8346481745672895e-8,0.0024531824507044967,3.970500384005907e-5,-4.858962496972789e-8,0.0024534396241559695,3.9962702831889606e-5,-4.890182990265696e-8,0.0024535843268946146,4.021443150526203e-5,-4.920880941676828e-8,0.002453623652929858,4.0386636134526066e-5,-4.9419622792017125e-8,0.002453601452891794,4.041499005959166e-5,-4.945444695873122e-8,0.0024535904575645672,4.0272043808040254e-5,-4.9278768855135644e-8,0.002453667088416081,3.9984366591700615e-5,-4.892445528448971e-8,0.0024538804961186404,3.9625472135700606e-5,-4.8481018851177726e-8,0.002454234041076148,3.9286627001372286e-5,-4.8059919577965076e-8,0.002454688758937021,3.90430339964667e-5,-4.7753378723272426e-8,0.002455182859858328,3.893307901809375e-5,-4.760913419343073e-8,0.0024556538362148746,3.895585698194267e-5,-4.762729962876685e-8,0.0024560537286482022,3.908100050787737e-5,-4.777201985779246e-8,0.00245635559786168,3.92623565237223e-5,-4.7987768345426784e-8,0.002456553543520675,3.945013089553443e-5,-4.821391608652092e-8,0.002456659304914327,3.9599666210168044e-5,-4.839543997652059e-8,0.002456697551274787,3.9677063676223765e-5,-4.849000855734107e-8,0.002456700822614684,3.966238759049165e-5,-4.847222180997126e-8,0.0024567044573505052,3.9550907364328136e-5,-4.833540821334541e-8,0.0024567417680072287,3.935256550822404e-5,-4.8091109193474636e-8,0.0024568398052084747,3.9089819952275556e-5,-4.776643242859904e-8,0.002457016102034005,3.879409971555748e-5,-4.739964644423014e-8,0.0024572767266246858,3.850135084065896e-5,-4.7034702557923994e-8,0.002457615714144817,3.8247292949526414e-5,-4.671548886753261e-8,0.002458015719767934,3.806281830374309e-5,-4.648030512056859e-8,0.0024584497093368225,3.7969709899505705e-5,-4.6356668032574766e-8,0.0024588835950892117,3.797672416493626e-5,-4.6356402548602995e-8,0.002459280019112911,3.8076035091713856e-5,-4.647098884390965e-8,0.0024596039507214372,3.8240450757803655e-5,-4.666776031810568e-8,0.0024598307142160007,3.842294852242427e-5,-4.68890281670926e-8,0.002459955918353923,3.8561282527527495e-5,-4.7057687283657186e-8,0.0024600044256263562,3.85906258738798e-5,-4.7093002809037085e-8,0.0024600323640595525,3.846469351560399e-5,-4.693699010582562e-8,0.002460115198327215,3.817888591278212e-5,-4.658318142014719e-8,0.0024603211513315733,3.778139333481038e-5,-4.609033001301854e-8,0.0024606816896058582,3.7360118141523624e-5,-4.5566248750844804e-8,0.0024611773581020993,3.700873869629158e-5,-4.5126111329188663e-8,0.0024617480565587665,3.679136890764092e-5,-4.484915535672109e-8,0.0024623194040428297,3.6725241793431914e-5,-4.4757458521259293e-8,0.002462828313114861,3.6785610286324895e-5,-4.4821776764596e-8,0.0024632368323780508,3.692313753770688e-5,-4.49825480110503e-8,0.002463533911415987,3.7081973038857536e-5,-4.517174974987359e-8,0.002463730207416001,3.72123954530806e-5,-4.5328262829285335e-8,0.0024638508339381053,3.727738907944816e-5,-4.540602228952397e-8,0.0024639287406243806,3.725496815222289e-5,-4.537712390347134e-8,0.002463999440178538,3.7138246844026674e-5,-4.523220853693909e-8,0.002464096769834068,3.693441043162565e-5,-4.4979410248424785e-8,0.002464249278477507,3.6662920271676045e-5,-4.464221452771284e-8,0.0024644771058909905,3.6352892349154964e-5,-4.4256185173269244e-8,0.0024647894963774355,3.60394813223482e-5,-4.3864446992286476e-8,0.00246518333004217,3.575928664507124e-5,-4.3512032388348086e-8,0.00246564308966862,3.5545192829730305e-5,-4.323961698689231e-8,0.002466142462746481,3.54212599682058e-5,-4.30773347216381e-8,0.0024666475561435836,3.539825611996659e-5,-4.303928925890125e-8,0.002467121549800276,3.5470424064565755e-5,-4.311941218583528e-8,0.002467530510301026,3.5614038369783264e-5,-4.328936880925462e-8,0.0024678501018424014,3.578830836147025e-5,-4.3499317664747304e-8,0.00246807277205011,3.5939557401127685e-5,-4.368284640476247e-8,0.0024682141340358534,3.6009986170699735e-5,-4.3767824546787344e-8,0.002468315806348312,3.595167953042106e-5,-4.369398422338407e-8,0.002468440719277613,3.574403825458124e-5,-4.343483114258189e-8,0.0024686576285004418,3.5408406295791984e-5,-4.301598790135291e-8,0.002469016756628685,3.5009868675168896e-5,-4.251749277816247e-8,0.002469527016305481,3.4639085816369505e-5,-4.2051331770138575e-8,0.0024701491272457075,3.437918303108398e-5,-4.172053655964463e-8,0.0024708107727132163,3.4275108324639473e-5,-4.1581346163947136e-8,0.0024714349391305145,3.432221330845508e-5,-4.162900742123513e-8,0.0024719649634269477,3.447673339527891e-5,-4.181047415170179e-8,0.0024723756773897968,3.4677347990773343e-5,-4.2050733510056084e-8,0.0024726711706196352,3.486498141779451e-5,-4.227704642717137e-8,0.002472875776800631,3.499457801076819e-5,-4.243345755026598e-8,0.002473024311147267,3.5039164456257024e-5,-4.248596282344877e-8,0.002473154485424879,3.49892258455584e-5,-4.24219893311207e-8,0.0024733018836487117,3.485023256564978e-5,-4.224757508831041e-8,0.0024734966693373177,3.4639859686924084e-5,-4.198405931463602e-8,0.002473761122223743,3.4385249288497285e-5,-4.166470061647262e-8,0.0024741075410927692,3.412005527399114e-5,-4.1330957835760266e-8,0.0024745365035125336,3.388081280598191e-5,-4.1027956557272016e-8,0.0024750358991933777,3.3702298329276224e-5,-4.0798783384882296e-8,0.002475581446443766,3.361205682415149e-5,-4.0677810154140694e-8,0.0024761393094790735,3.362488283309667e-5,-4.068393655070341e-8,0.00247667099923248,3.3738415010136826e-5,-4.081509111115514e-8,0.0024771401592741794,3.393112591255991e-5,-4.104553604679316e-8,0.0024775202300596727,3.4163782098038836e-5,-4.132736396042357e-8,0.0024778015552186553,3.4384841805604154e-5,-4.15968981141725e-8,0.002477996355230064,3.453957481857277e-5,-4.178587242689799e-8,0.002478139925461257,3.4582095835946386e-5,-4.183646089222978e-8,0.0024782863608294597,3.448855008036613e-5,-4.171792894077942e-8,0.002478497599215119,3.426810101996982e-5,-4.1440616533293496e-8,0.002478826423475806,3.3966768621773196e-5,-4.106097101147728e-8,0.002479297655651806,3.365920201414745e-5,-4.067146491268234e-8,0.0024798956470742607,3.3427359889743966e-5,-4.0374142208359564e-8,0.002480566263107198,3.333281657692773e-5,-4.0246164098665086e-8,0.0024812348815230548,3.339569240715765e-5,-4.031349099874403e-8,0.002481832069138389,3.359098154088289e-5,-4.054608293176884e-8,0.0024823140828337882,3.3862509899205475e-5,-4.087496962472572e-8,0.0024826701499891905,3.4144843169478624e-5,-4.121926049669797e-8,0.0024829174589391183,3.438196398751778e-5,-4.150927531351717e-8,0.002483090231395934,3.453716218275256e-5,-4.169890994247633e-8,0.0024832289273681676,3.459479555529096e-5,-4.1768010969739914e-8,0.0024833725099405357,3.455739202683464e-5,-4.171898971311369e-8,0.002483553953461178,3.444130953944551e-5,-4.1571586234288615e-8,0.002483797896582137,3.42726872143246e-5,-4.135789466565913e-8,0.002484119250717028,3.408404982664835e-5,-4.111811949072816e-8,0.0024845220544084173,3.3911157045767064e-5,-4.08966177191401e-8,0.0024849984608592214,3.378942234513219e-5,-4.073744810316272e-8,0.002485528319030998,3.37493393541924e-5,-4.0678740705520224e-8,0.0024860802611576817,3.381090099062003e-5,-4.07458217081001e-8,0.002486615292822404,3.3977887022200906e-5,-4.094410565553709e-8,0.0024870933615432594,3.4233776242617746e-5,-4.1253884823212716e-8,0.0024874822433588704,3.454145160287273e-5,-4.162972775740252e-8,0.0024877666980437367,3.4848325612800404e-5,-4.200659476353093e-8,0.002487954948091704,3.5096872718110185e-5,-4.2312767159825944e-8,0.0024880797904155523,3.523845842873798e-5,-4.248704298833028e-8,0.002488193043039279,3.5246843277377304e-5,-4.249570636640487e-8,0.0024883539592743067,3.512738494103619e-5,-4.234426909230887e-8,0.0024886140602875923,3.49187025600563e-5,-4.207987071532803e-8,0.002489002194927896,3.468515900952789e-5,-4.178219564842183e-8,0.0024895143834379584,3.450085337149065e-5,-4.1543686661381805e-8,0.002490112692358687,3.4428839747837344e-5,-4.144362746866002e-8,0.002490735095733774,3.4502254176917696e-5,-4.152441444489307e-8,0.002491313820334456,3.47148501990305e-5,-4.177943206499539e-8,0.0024917952057646542,3.5025110867509906e-5,-4.21578484386859e-8,0.002492153108185882,3.537166319265242e-5,-4.2583614770799746e-8,0.0024923915653697563,3.569250545655623e-5,-4.297938359576452e-8,0.0024925381077774505,3.594019773552308e-5,-4.328553882965522e-8,0.0024926327298874706,3.608907519420701e-5,-4.346936640882342e-8,0.0024927174854313663,3.6135139860801745e-5,-4.352511605516019e-8,0.0024928293045150462,3.6091731116077385e-5,-4.3468759712982866e-8,0.0024929962078651933,3.598404077227055e-5,-4.3331234070503576e-8,0.002493235828937878,3.584424198247867e-5,-4.315237723752643e-8,0.002493554988497319,3.5707654226319e-5,-4.297612739315671e-8,0.002493949475402431,3.560950550536974e-5,-4.284648196073154e-8,0.002494403814902926,3.558150409860973e-5,-4.2803251027824265e-8,0.0024948914829334063,3.5647523756435825e-5,-4.287670742727347e-8,0.0024953765911673344,3.581825773142045e-5,-4.308089582356996e-8,0.0024958182908375675,3.608573040867354e-5,-4.340666705533066e-8,0.0024961786512342457,3.641986140806195e-5,-4.381718846972339e-8,0.0024964332001036105,3.677013333856981e-5,-4.424981283072611e-8,0.002496580985875428,3.707466125980302e-5,-4.4627260595163124e-8,0.00249664942189288,3.7275972463325826e-5,-4.487730097257107e-8,0.002496690103679088,3.733875515066651e-5,-4.4954995613220536e-8,0.0024967655193018647,3.726250067358835e-5,-4.485864320894178e-8,0.002496931013734003,3.7083456871196986e-5,-4.46324458229267e-8,0.0024972186148263043,3.686490845186074e-5,-4.435466169172905e-8,0.002497628180291189,3.6679510733870065e-5,-4.411582351619956e-8,0.002498128079111284,3.658972340409257e-5,-4.3994441199673844e-8,0.0024986644042137227,3.663208106121771e-5,-4.4037246854020054e-8,0.0024991755753180833,3.680926861936187e-5,-4.4248953740883185e-8,0.002499608064555356,3.709163133072151e-5,-4.459370765840227e-8,0.0024999288144117358,3.742710477725366e-5,-4.500715060851872e-8,0.0025001310412585205,3.775603780312682e-5,-4.5414811573711545e-8,0.0025002324917523817,3.8025992028683344e-5,-4.57506862741052e-8,0.002500267909808244,3.82021913744237e-5,-4.5970516699009e-8,0.0025002791334092648,3.827161818741498e-5,-4.6057156152074936e-8,0.002500306150636883,3.824142696912959e-5,-4.601877616789812e-8,0.002500381023813219,3.813396254515294e-5,-4.588273798227383e-8,0.002500524917925695,3.7980819109320463e-5,-4.5688184530668866e-8,0.002500747387946369,3.781755623906785e-5,-4.547941847511398e-8,0.0025010467943652028,3.7679593748579237e-5,-4.530076608806616e-8,0.002501411000812327,3.759894473403009e-5,-4.5192519652786e-8,0.002501818061535664,3.76010451065458e-5,-4.518700349120371e-8,0.002502237249305373,3.7700983349453346e-5,-4.530383549196263e-8,0.002502631391630373,3.789891117462528e-5,-4.5544060670952407e-8,0.0025029618245448393,3.817544639615828e-5,-4.588418136956523e-8,0.0025031968555852867,3.8489391629367015e-5,-4.6273070203581374e-8,0.002503322900130418,3.878132383082006e-5,-4.6636329847159344e-8,0.0025033544659702643,3.898595666221756e-5,-4.689179674409995e-8,0.0025033366866835474,3.9052160624291637e-5,-4.6974744631872444e-8,0.002503335424761968,3.8963286204251026e-5,-4.686346369928086e-8,0.002503416415545243,3.874697513072474e-5,-4.659163332249408e-8,0.002503622458507168,3.846773122092755e-5,-4.623914977805023e-8,0.0025039595976610314,3.820530008492874e-5,-4.590530882256746e-8,0.002504397631776516,3.802946606966512e-5,-4.5677537488936655e-8,0.002504882299547712,3.798169372682445e-5,-4.560852435839345e-8,0.002505352221421315,3.806826004220745e-5,-4.570743517294879e-8,0.00250575432324309,3.8263797822131395e-5,-4.59439244261933e-8,0.0025060542893460607,3.852145546614233e-5,-4.6260390338084265e-8,0.002506241100184328,3.878568465963214e-5,-4.658768272125083e-8,0.0025063261680084966,3.900454144029845e-5,-4.686046599932783e-8,0.0025063382859264074,3.913932359754488e-5,-4.702948014495108e-8,0.0025063160483484925,3.917014569025023e-5,-4.706882713849625e-8,0.002506299694580531,3.9097007570934184e-5,-4.697758835500036e-8,0.0025063241642786917,3.893705066219002e-5,-4.677655197485161e-8,0.002506414458106024,3.8719469291395064e-5,-4.650187612960767e-8,0.002506583529031959,3.847966713294664e-5,-4.6197729527279165e-8,0.0025068322231723375,3.825390939784268e-5,-4.5909552105830005e-8,0.00250715042643049,3.8075081039815325e-5,-4.5678747389959236e-8,0.002507518671035578,3.79694315028609e-5,-4.553864588391083e-8,0.002507909881434134,3.7953757863868274e-5,-4.551099211154035e-8,0.0025082914429322,3.8032479762118567e-5,-4.560219705504129e-8,0.0025086283062298424,3.819441369790588e-5,-4.5799089344806656e-8,0.002508888222288745,3.8409920504514224e-5,-4.6065065644875405e-8,0.002509049867274366,3.863051042059274e-5,-4.633938175836797e-8,0.002509113004638694,3.879425510226927e-5,-4.654391267553016e-8,0.0025091068429147767,3.883993594289078e-5,-4.6601084959132783e-8,0.0025090898042000585,3.872875934821506e-5,-4.6461387254399373e-8,0.002509134996273683,3.846495952331999e-5,-4.6129379088556667e-8,0.002509303823785431,3.810176136963081e-5,-4.567118163005868e-8,0.0025096206611317003,3.77249340788089e-5,-4.519386918014874e-8,0.0025100635025889603,3.742094334698776e-5,-4.480570179737146e-8,0.0025105750725739227,3.7247279761174246e-5,-4.4579149479260436e-8,0.0025110856597778002,3.721891833235642e-5,-4.4533963341258614e-8,0.0025115347336513087,3.7312355209207396e-5,-4.464198908935113e-8,0.0025118837717088426,3.7479672497395944e-5,-4.4844363555259744e-8,0.0025121197805155586,3.766434463552293e-5,-4.507092241835546e-8,0.0025122524606316582,3.781403239390384e-5,-4.5256039989766344e-8,0.002512308218517646,3.788897265948401e-5,-4.534921710684068e-8,0.002512323198993744,3.7866377431753216e-5,-4.532087455967344e-8,0.0025123364352792246,3.774164049515155e-5,-4.5164209733579505e-8,0.002512383722153255,3.752690440451212e-5,-4.4893662222274306e-8,0.0025124927690744884,3.724752495244522e-5,-4.454058376296237e-8,0.0025126800686300593,3.6937187041074546e-5,-4.4147073781900625e-8,0.002512949640805612,3.663249847498581e-5,-4.3759102263850506e-8,0.0025132935154346414,3.636784559588725e-5,-4.3419995601533096e-8,0.0025136935134270817,3.6171127440481755e-5,-4.3165098457630535e-8,0.002514123766723244,3.606055777639336e-5,-4.301781026749884e-8,0.002514553618955688,3.604231707921164e-5,-4.298663815376317e-8,0.0025149508839445193,3.610876316223164e-5,-4.306282715704458e-8,0.0025152857940081257,3.6237122105096005e-5,-4.321846926867821e-8,0.0025155362609611655,3.6389174493579715e-5,-4.3405830751730746e-8,0.002515694790395706,3.651350376824656e-5,-4.356001367114698e-8,0.002515776049335391,3.6552764092910476e-5,-4.360815615449484e-8,0.0025158217306482694,3.64579617376964e-5,-4.348766977365181e-8,0.002515896936537497,3.620833883698536e-5,-4.317158041654697e-8,0.002516073071847446,3.5828669318152446e-5,-4.269046581534293e-8,0.002516399987719169,3.539060604592482e-5,-4.213413246847748e-8,0.0025168814606322987,3.499021840014745e-5,-4.162331415721513e-8,0.0025174707936113064,3.4710531005774946e-5,-4.126263149227772e-8,0.002518090589616577,3.459078644678115e-5,-4.1102057661954364e-8,0.002518663524727177,3.4618912918017596e-5,-4.112741399925282e-8,0.0025191361740298083,3.474582741761788e-5,-4.1278096176040484e-8,0.0025194875406559848,3.490802432070915e-5,-4.147510457868247e-8,0.002519725292742549,3.504638962014763e-5,-4.16444050552658e-8,0.0025198766141857846,3.5116951628882e-5,-4.173036446018124e-8,0.002519978706172601,3.509468993429849e-5,-4.1700694202266914e-8,0.002520071130482626,3.497310385097045e-5,-4.154621540106111e-8,0.002520190252699242,3.4761794687652565e-5,-4.1278135639874127e-8,0.0025203652372844786,3.448316626617987e-5,-4.092409555262571e-8,0.002520615191656812,3.416849468288395e-5,-4.05232510677893e-8,0.002520947440465501,3.385345763496335e-5,-4.0120551152513905e-8,0.002521357059662189,3.3573332103171066e-5,-3.976057689732734e-8,0.0025218278023055253,3.335822588172072e-5,-3.9481488035551096e-8,0.0025223344083919984,3.3228896480038676e-5,-3.930979257938309e-8,0.0025228460215779803,3.319367073788616e-5,-3.925652251261835e-8,0.0025233303087924958,3.324669892834196e-5,-3.9315015622613785e-8,0.0025237579626117535,3.336760095667987e-5,-3.946031753109398e-8,0.0025241074151963775,3.352256518500154e-5,-3.9650309128366536e-8,0.0025243697315655363,3.366716014331096e-5,-3.982900185191263e-8,0.002524553460207322,3.375163915239177e-5,-3.9933128485974816e-8,0.002524688300114605,3.37298851909107e-5,-3.9903559505638475e-8,0.002524824998114826,3.357240651657453e-5,-3.970202211903166e-8,0.0025250277665400896,3.328120777325597e-5,-3.933021967054159e-8,0.002525356611076024,3.289990453199541e-5,-3.8842803606554595e-8,0.0025258428381231134,3.250914558990305e-5,-3.834160036262284e-8,0.0025264698957574395,3.220189906693548e-5,-3.794432342774024e-8,0.0025271741566565867,3.2047197639093385e-5,-3.773873488953271e-8,0.002527868930050737,3.206296769477658e-5,-3.7748283537389005e-8,0.002528477957775852,3.2214078628227146e-5,-3.792951338789108e-8,0.0025289589671146006,3.243333093220877e-5,-3.8198347470684486e-8,0.002529308244893737,3.2649160481611736e-5,-3.8464834618929027e-8,0.002529551044230285,3.280554245702909e-5,-3.8658136766423037e-8,0.0025297276422903844,3.286996887218826e-5,-3.873662679239773e-8,0.0025298816375502052,3.283279972249427e-5,-3.8687266747971134e-8,0.002530052440279624,3.2702708511500886e-5,-3.852013964263886e-8,0.0025302712732322313,3.250144171865661e-5,-3.8262077101730963E-08,0.002530559210242333,3.22591991158146e-5,-3.7950935413685944e-8,0.002530926148178654,3.2010602838034795e-5,-3.7630466201304596e-8,0.002531370351391248,3.1790798148834993e-5,-3.7345270529438355e-8,0.0025318786907376338,3.1631370951251876e-5,-3.713553615551818e-8,0.0025324279262051433,3.155608559611767e-5,-3.703162366365894e-8,0.0025329874164920214,3.1576901848478516e-5,-3.704907123537745e-8,0.0025335233363896095,3.1691081346079224e-5,-3.71849683887019e-8,0.002534004013295205,3.1880164541897305e-5,-3.741660475396124e-8,0.0025344056658638974,3.211134266810114e-5,-3.770302889521404e-8,0.0025347176716889862,3.234141683476799e-5,-3.798981805268735e-8,0.0025349464931195965,3.25231453918205e-5,-3.821692596727692e-8,0.002535117468766687,3.261356425395861e-5,-3.832919965284332e-8,0.002535273522037362,3.25837585549067e-5,-3.828894828785741e-8,0.0025354694854592633,3.242890013057747e-5,-3.808899818124254e-8,0.0025357608919522735,3.217582413424165e-5,-3.776263794934066e-8,0.002536187666940124,3.1883621764644e-5,-3.738458087106923e-8,0.0025367568259437178,3.1632385404099197e-5,-3.7056717765237276e-8,0.0025374327525164407,3.1499190159307474e-5,-3.687752844703763e-8,0.0025381439662942977,3.152925181564535e-5,-3.690529396896161e-8,0.00253880714969785,3.1717495544648184e-5,-3.7134493175846014e-8,0.002539357012067217,3.201212311537006e-5,-3.7500132915228656e-8,0.002539765928854451,3.233760649167408e-5,-3.79067823651572e-8,0.0025400453147970577,3.2622583246552875e-5,-3.82638918563021e-8,0.0025402331112333227,3.281872156862578e-5,-3.850972952935261e-8,0.002540377487382661,3.290621872055572e-5,-3.8618458257282727e-8,0.002540524155092487,3.288979390474908e-5,-3.8595246105451726e-8,0.0025407093934606078,3.279105867884921e-5,-3.846681028316092e-8,0.002540957537634892,3.2641231271875194e-5,-3.827233474111451e-8,0.002541280815381751,3.247562338960235e-5,-3.805651702208651e-8,0.0025416799467947535,3.232966235413645e-5,-3.786445609457888e-8,0.002542144857740274,3.223562798311164e-5,-3.7737407372711096e-8,0.002542655579590631,3.221938662051105e-5,-3.7708565661377785e-8,0.0025431838362320446,3.229680174430522e-5,-3.779849423590047e-8,0.0025436960054889923,3.247013233511464e-5,-3.8010564296692125e-8,0.00254415790798978,3.272542643389036e-5,-3.8327620226833e-8,0.002544541182956549,3.303226997284184e-5,-3.871155421654684e-8,0.0025448301444755037,3.334704611861932e-5,-3.9107270584671315e-8,0.0025450273211040327,3.3620069672829226e-5,-3.9451574837501164e-8,0.002545155729501141,3.380568399136757e-5,-3.968592063249876e-8,0.002545256556630443,3.387319471601984e-5,-3.977037692107729e-8,0.0025453820443540687,3.3816009067509984e-5,-3.969547432241733e-8,0.002545584452323269,3.365650342624907e-5,-3.948871602576002e-8,0.0025459029162299583,3.344455147949948e-5,-3.9213016496428415e-8,0.0025463510522096334,3.324840420752361e-5,-3.895529090102889e-8,0.002546909232956193,3.3138246514345544e-5,-3.8805530645937213e-8,0.002547525817875957,3.31656565561402e-5,-3.883045961997576e-8,0.002548129745697608,3.334578366524815e-5,-3.9050513834874766e-8,0.002548651901131051,3.3650693689135876e-5,-3.9431034299941284e-8,0.00254904685669721,3.4018656743914485e-5,-3.989388291545174e-8,0.002549305056062235,3.4375770534290136e-5,-4.034493649891447e-8,0.002549450755241978,3.465939649203068e-5,-4.070401123079711e-8,0.0025495291586907494,3.4833241697630345e-5,-4.092420182378461e-8,0.002549590687379239,3.4890489219274215e-5,-4.099602575860678e-8,0.0025496789205144556,3.4848031855415884e-5,-4.0940251920067316e-8,0.0025498244612649898,3.473730209237217e-5,-4.079637327911076e-8,0.0025500436032672657,3.459585033605535e-5,-4.061196445682029e-8,0.002550339547154352,3.4461308211710806e-5,-4.0434988555481746e-8,0.0025507043433619027,3.4367523260307965e-5,-4.030880973480197e-8,0.0025511206731693597,3.4341897944161364e-5,-4.0268729945377805e-8,0.002551563424104876,3.4402972367080165e-5,-4.03388608138628e-8,0.002552001606617659,3.4557690980306746e-5,-4.0528610973922175e-8,0.002552401461273141,3.479848664498499e-5,-4.082892216673805e-8,0.0025527314827823774,3.510120673609544e-5,-4.120952912256527e-8,0.002552969364218686,3.542565410114826e-5,-4.161951137566323e-8,0.0025531095580215266,3.572058968524942e-5,-4.19935413975739e-8,0.002553168729760865,3.59339104478195e-5,-4.226480110017664e-8,0.0025531858573809097,3.602631744383978e-5,-4.238244913932361e-8,0.0025532150611217693,3.598419299693054e-5,-4.232817322961466e-8,0.002553312233386756,3.582648549097322e-5,-4.212517282076237e-8,0.0025535195183206613,3.560220174300033e-5,-4.1835212060668614e-8,0.002553852830502855,3.537869695525301e-5,-4.15439349344679e-8,0.0025542964378125308,3.5224255096316406e-5,-4.133880357556166e-8,0.002554806195557747,3.519005643611671e-5,-4.1286055750094206e-8,0.002555320571266334,3.5296537354939525e-5,-4.141303722830442e-8,0.0025557766128750385,3.552799805828805e-5,-4.170091750744843e-8,0.002556126465171574,3.583732608559857e-5,-4.209034923582469e-8,0.002556349360987087,3.615973932622834e-5,-4.249882289419115e-8,0.0025564551410904254,3.6431100822784126e-5,-4.284408179364047e-8,0.0025564785276809823,3.6604393384032696e-5,-4.306534222497807e-8,0.002556467160589559,3.6658984478097046e-5,-4.3135357610844236e-8,0.002556468510402671,3.660096821231846e-5,-4.306106582894111e-8,0.0025565200544311623,3.645675748916501e-5,-4.28755593884766e-8,0.0025566445046864778,3.626394236750845e-5,-4.262649174123844e-8,0.0025568493925952245,3.606285126280341e-5,-4.236530656389189e-8,0.002557129168848333,3.589047078361781e-5,-4.213942711868888e-8,0.0025574680949682657,3.5776750212926264e-5,-4.1987475893609535e-8,0.0025578429268030643,3.574244515459497e-5,-4.193647233080398e-8,0.002558225197975276,3.579750560221392e-5,-4.1999734310573656e-8,0.0025585835602312756,3.593934241195524e-5,-4.217460204810126e-8,0.002558887016647417,3.61509584570488e-5,-4.2439939751589254e-8,0.0025591098618594843,3.639984373749989e-5,-4.2754572922321514e-8,0.002559238497448476,3.663948624180955e-5,-4.305908526809104e-8,0.002559278835866122,3.6815737799850185e-5,-4.3283910146574906e-8,0.002559261046831353,3.68791601038681e-5,-4.336518833602966e-8,0.0025592372774527606,3.680125222475687e-5,-4.3265665007869605e-8,0.0025592697003744484,3.658826729490232e-5,-4.299250430234186e-8,0.0025594113266689754,3.6284623802832374e-5,-4.260177686092147e-8,0.0025596874257284618,3.596177093402923e-5,-4.218437109225698e-8,0.0025600863540812774,3.569620677368294e-5,-4.183807532178788e-8,0.002560563687246403,3.554623400075656e-5,-4.1637989758230514e-8,0.002561056690233244,3.553661609585996e-5,-4.161684553067492e-8,0.0025615023865055877,3.565507989845713e-5,-4.176023644906828e-8,0.002561853048804872,3.585927599621287e-5,-4.20151041647804e-8,0.0025620856129585094,3.6090108860365954e-5,-4.230643641429664e-8,0.0025622040446008454,3.628699041834416e-5,-4.255663518033421e-8,0.0025622353918832905,3.6401300490328786e-5,-4.270283147309331e-8,0.0025622213473997326,3.6405401558346106e-5,-4.2708678956345274e-8,0.0025622078408738705,3.6295813489391095e-5,-4.256872173084837e-8,0.0025622353848293975,3.609068615788058e-5,-4.230540259760305e-8,0.00256233232102081,3.582322550250386e-5,-4.1960772840867707e-8,0.002562511863801732,3.553353735483984e-5,-4.158605612885912e-8,0.0025627725248878294,3.526111693837438e-5,-4.123196242121757e-8,0.00256310070883618,3.503928727808233e-5,-4.0941482037820396e-8,0.0025634741471409566,3.4891828381175004e-5,-4.074551346356165e-8,0.002563865248603042,3.483125361276283e-5,-4.066063228427299e-8,0.002564244075042713,3.4857926898380974e-5,-4.068793102758481e-8,0.002564581202623444,3.495942454822687e-5,-4.0812119542659516e-8,0.00256485109943431,3.5110048036088305e-5,-4.100075191629571e-8,0.0025650367242128005,3.527118210779312e-5,-4.120451556732618e-8,0.002565135498337338,3.539413055019303e-5,-4.136076151439963e-8,0.0025651654120114266,3.5427525351978796e-5,-4.1403038721833427e-8,0.0025651680412939974,3.533045146974794e-5,-4.127809559426407e-8,0.0025652038004362098,3.508913423679075e-5,-4.096749224333056e-8,0.0025653363340437958,3.472992631684516e-5,-4.050439181559414e-8,0.0025656093621240807,3.431861032240273e-5,-3.997271395936973e-8,0.0025660270415399614,3.394124366569468e-5,-3.9482630402027894e-8,0.0025665499166005316,3.367374522340637e-5,-3.913169321930131e-8,0.0025671094737676993,3.3555941288687166e-5,-3.8971649823626466e-8,0.0025676326398133926,3.358238507761676e-5,-3.899658257921173e-8,0.00256806353887396,3.3710715096302974e-5,-3.915332696323073e-8,0.0025683748955028416,3.387946611070678e-5,-3.936392740831083e-8,0.0025685688159335627,3.402630843529469e-5,-3.954873741392243e-8,0.0025686706264498697,3.410151913115822e-5,-3.96436201055269e-8,0.002568719735740128,3.4075375284090386e-5,-3.9609586863852165e-8,0.0025687602388208127,3.3940249039981586e-5,-3.9435794394587893e-8,0.002568832735617296,3.370870760914346e-5,-3.913743671001868e-8,0.0025689681542897694,3.340879250968684e-5,-3.874991257803349e-8,0.0025691840551694215,3.307763210742136e-5,-3.832068947589197e-8,0.002569483538443005,3.275462578485857e-5,-3.790047634512565e-8,0.00256985645494049,3.2475309573827486e-5,-3.753521316052912e-8,0.0025702822795653883,3.226668899010827e-5,-3.725997236190257e-8,0.002570733820216625,3.214437650152126e-5,-3.70952464417701e-8,0.002571181033117111,3.211133565934368e-5,-3.70453424363933e-8,0.0025715946013054125,3.215772517602418e-5,-3.7098167201791944e-8,0.002571949318347555,3.226144137496881e-5,-3.722583343084536e-8,0.002572227570996682,3.2389277195387017e-5,-3.738598474604562e-8,0.0025724233208959243,3.249913626791757e-5,-3.752447594345222e-8,0.002572546572517723,3.2544481248383096e-5,-3.7581027423136185e-8,0.002572627105263867,3.248253008845186e-5,-3.7499865346558056e-8,0.0025727146254667485,3.2286766565557764e-5,-3.7246045798024494e-8,0.0025728713746888203,3.196144702345607e-5,-3.6824362906102526e-8,0.0025731546573224077,3.1551122395760685e-5,-3.6291732875808416e-8,0.0025735930611439093,3.113531128318894e-5,-3.5750349486020505e-8,0.0025741686669498156,3.080383281342957e-5,-3.5315932671875985e-8,0.002574818793527538,3.0622158898999846e-5,-3.5073179334983326e-8,0.002575459250901792,3.0606384083367444e-5,-3.5043561582390667e-8,0.0025760157713347175,3.072183306088944e-5,-3.518340880366333e-8,0.0025764462366678763,3.0902486165110045e-5,-3.5408643786040035e-8,0.0025767458975593516,3.107681621716422e-5,-3.562773879707096e-8,0.0025769394739584782,3.118739906047621e-5,-3.5766760816977004e-8,0.0025770682803444704,3.12001551469743e-5,-3.5781267605868635e-8,0.0025771782767451306,3.110525759781823e-5,-3.565767914468704e-8,0.0025773113662062915,3.091339865537416e-5,-3.540879179965687e-8,0.0025774999609862632,3.065026064735654e-5,-3.5066958787603745e-8,0.0025777640357551542,3.035060945700293e-5,-3.4676643389330934e-8,0.002578110043284982,3.0052507451921462e-5,-3.428694627394564e-8,0.002578531397055513,2.9791926281541815e-5,-3.3944523195161236e-8,0.0025790103290381297,2.9598057935518227e-5,-3.368738209113566e-8,0.0025795209096909134,2.948965519446499e-5,-3.354007538112134e-8,0.002580032896739608,2.94727630782897e-5,-3.351077440578792e-8,0.0025805159234916397,2.954000878094914e-5,-3.3590389005577315e-8,0.002580943592558336,2.9671294779383406e-5,-3.375345201478358e-8,0.0025812972568394475,2.983567962877638e-5,-3.3960441519085414e-8,0.002581569412426488,2.9994385199715056e-5,-3.416148972868799e-8,0.002581766674986788,3.0105076417356167e-5,-3.430175679860849e-8,0.0025819120683374308,3.0127919994288804e-5,-3.4329229444587715e-8,0.002582045519993052,3.0034048227300084e-5,-3.420579656011638e-8,0.0025822203949664234,2.9816100977510195e-5,-3.392112802616561e-8,0.002582493526172687,2.9498181435378302e-5,-3.3505790908997055e-8,0.0025829078467866826,2.913934269067586e-5,-3.3035889417979293e-8,0.002583471922975573,2.8823154006253027e-5,-3.261957918279001e-8,0.0025841475821974037,2.8630944686295138e-5,-3.236241863773583e-8,0.0025848575009842015,2.860875020177161e-5,-3.23245690882075e-8,0.0025855132051104206,2.8747336224273945e-5,-3.249487409873808e-8,0.0025860483870083825,2.898840096044825e-5,-3.279872884323055e-8,0.0025864386289602428,2.925160284354101e-5,-3.31328354281292e-8,0.0025867003344974215,2.9464434140691195e-5,-3.340364643567008e-8,0.0025868758817611977,2.9580498213838604e-5,-3.355089908895895e-8,0.0025870163518221215,2.958356532888121e-5,-3.3552916689574256e-8,0.00258716874146591,2.948254760991543e-5,-3.342033057128494e-8,0.0025873690254704456,2.930331685653275e-5,-3.31857940505852e-8,0.0025876396104315717,2.908092911135896e-5,-3.289416461028243e-8,0.0025879892061104566,2.88534249664018e-5,-3.259456856612757e-8,0.0025884138089266786,2.8656989162023898e-5,-3.2334059412977954e-8,0.002588898359017111,2.8521979692271508e-5,-3.215231454490244e-8,0.002589419062272378,2.8469586189780088e-5,-3.2077164254932806e-8,0.002589946473323683,2.8509159090307877e-5,-3.212107523599057e-8,0.002590449393316276,2.8636563050092073e-5,-3.227904091415366e-8,0.002590899361197364,2.8834057391279875e-5,-3.2528461699677137e-8,0.00259127520629838,2.9071975778584452e-5,-3.2831291645010475e-8,0.0025915670649930126,2.9312176621478835e-5,-3.313838678718475e-8,0.0025917793326626975,2.951309804139549e-5,-3.33958896106978e-8,0.0025919320721802777,2.96361235160836e-5,-3.355336698452127e-8,0.002592060388232209,2.9652876016196784e-5,-3.357329612354791e-8,0.0025922110409532205,2.9552949250428954e-5,-3.344128213388367e-8,0.0025924352611730508,2.9350891816452204e-5,-3.3175402893513874e-8,0.0025927770732672843,2.908978789339379e-5,-3.2831114881942346e-8,0.0025932582302109035,2.8837351096213648e-5,-3.2496316807290324e-8,0.0025938644424488276,2.8670845449783314e-5,-3.2271752176790486e-8,0.00259454130569729,2.8651787572331885e-5,-3.223802204062918e-8,0.0025952073153012044,2.880006435961552e-5,-3.242178048536644e-8,0.0025957820237779284,2.9082752023308125e-5,-3.2781025144444316e-8,0.002596215451355888,2.942669394122801e-5,-3.3221292787055197e-8,0.0025965024447693404,2.9748129367640864e-5,-3.3634051131772567e-8,0.0025966765282158253,2.998185229157122e-5,-3.3934507817174133e-8,0.002596791242167228,3.009622528063916e-5,-3.408109516064842e-8,0.0025969011572768027,3.0092558261656323e-5,-3.4074756512656124e-8,0.002597049688176753,2.9995632087270322e-5,-3.3946851949197073e-8,0.0025972643186138377,2.9842572236855614e-5,-3.3744958806311066e-8,0.002597556681278304,2.9673938276303314e-5,-3.3521470462183287e-8,0.002597924726275709,2.9527819877394803e-5,-3.332595043754231e-8,0.0025983552864050196,2.9436122490796813e-5,-3.320019805897644e-8,0.002598826556628034,2.9421965307062316e-5,-3.3174709416024415e-8,0.0025993106853013,2.949756098639174e-5,-3.32658027069346e-8,0.002599776848353735,2.9662467082486734e-5,-3.347330412600232e-8,0.0026001951252648077,2.99025861685836e-5,-3.377926073172787e-8,0.0026005411717937273,3.019067108816419e-5,-3.414860105393843e-8,0.002600801115884702,3.048904747005782e-5,-3.453261736501532e-8,0.0026009756449572323,3.075479964565841e-5,-3.487558988314453e-8,0.0026010821201373643,3.094704699047445e-5,-3.512412559281178e-8,0.0026011537374556978,3.103526998712179e-5,-3.523794137373505e-8,0.0026012352359606815,3.100711111394474e-5,-3.52001023446636e-8,0.0026013752640351045,3.08739211784446e-5,-3.5024463414013454e-8,0.0026016160874248713,3.0672358090410115e-5,-3.475804093991398e-8,0.0026019820559800674,3.0460335902351476e-5,-3.447598865451195e-8,0.0026024694362678106,3.0306029731080202e-5,-3.4267389520307465e-8,0.0026030416290290835,3.0270338541856285e-5,-3.421233572704718e-8,0.0026036342474958208,3.0386657894908002e-5,-3.435533680675956e-8,0.0026041720030882468,3.064594194570206e-5,-3.4685549028801975e-8,0.0026045930310347977,3.09961293659131e-5,-3.513578419828963e-8,0.0026048698621258057,3.1359222083486464e-5,-3.560466452625087e-8,0.002605016277847952,3.165875436058266e-5,-3.5992435719287957e-8,0.0026050775582436726,3.1843809880593544e-5,-3.623231983185307e-8,0.0026051114117463955,3.1899280024474e-5,-3.630395313793583e-8,0.0026051700508598736,3.184180085895025e-5,-3.622821835659225e-8,0.0026052897100294578,3.1707923332180516e-5,-3.605202198717156e-8,0.0026054879335475844,3.154166996092474e-5,-3.5832271992857454e-8,0.0026057657097087847,3.138536625159791e-5,-3.5624031184444675e-8,0.0026061113393798714,3.1274330301516524e-5,-3.5473569113068227e-8,0.0026065041725679677,3.123426843754492e-5,-3.5414846395313414e-8,0.0026069176827509784,3.127995084377525e-5,-3.54676479866181e-8,0.0026073221793504135,3.141424395457776e-5,-3.563622226078849e-8,0.002607687760832499,3.162725534231478e-5,-3.590812143263662e-8,0.002607988052610515,3.189600175406857e-5,-3.6253749808592313e-8,0.0026082048747776295,3.218555030603266e-5,-3.662781876104157e-8,0.0026083332526672066,3.2452725750126513e-5,-3.697411627683993e-8,0.0026083853531278017,3.265297934002162e-5,-3.72343878712858e-8,0.0026083914259650088,3.2749867670578894e-5,-3.736065308576354e-8,0.002608396133617845,3.272507890931113e-5,-3.732831038939484e-8,0.0026084499787289036,3.258582024132688e-5,-3.714589715717855e-8,0.0026085974212649975,3.236651424287259e-5,-3.6857515677651e-8,0.0026088647679620098,3.2123260707560836e-5,-3.65358635683691e-8,0.002609251366434725,3.1921661831404596e-5,-3.6266559361749115e-8,0.0026097270315835943,3.182058662536569e-5,-3.612701970627575e-8,0.002610237284691165,3.185588171012813e-5,-3.6165054551592994e-8,0.002610716126815699,3.202876234196642e-5,-3.6383392719986345e-8,0.0026111037028992033,3.23033372673764e-5,-3.6736088564341154e-8,0.0026113636304113436,3.261570097552551e-5,-3.714014721843922e-8,0.002611493434829786,3.2892780986458314e-5,-3.750008482171149e-8,0.002611523495367077,3.307418573417459e-5,-3.7736560791061143E-08,0.002611505142783382,3.312826382278772e-5,-3.780750968567028e-8,0.002611493763715752,3.3056708359165294e-5,-3.771431792722278e-8,0.0026115341933477952,3.2888214172239555e-5,-3.749370515848177e-8,0.0026116528511147953,3.266635873779777e-5,-3.7202054725746606e-8,0.0026118568135878677,3.2437504850753895e-5,-3.6899719726700316e-8,0.0026121372770168093,3.22421675305727e-5,-3.663975855845446e-8,0.0026124744813415092,3.2110441667230555e-5,-3.646188211570326e-8,0.002612842227916604,3.206036322123708e-5,-3.639018811094762e-8,0.00261321139785924,3.2097696128144984e-5,-3.64327692480781e-8,0.00261355274464152,3.2216066114155835e-5,-3.658181139714531e-8,0.0026138396427348816,3.2397063044748426e-5,-3.681367790345908e-8,0.0026140514872013475,3.261067171343822e-5,-3.708942654441659e-8,0.0026141780311365196,3.2817050683532635e-5,-3.7357080590710184e-8,0.002614224114800926,3.297101014117252e-5,-3.7557436147006555e-8,0.002614213119889088,3.303013696291152e-5,-3.7634673802280204e-8,0.002614186549965068,3.296599359632987e-5,-3.755103806085695e-8,0.0026141973753741167,3.277534783937561e-5,-3.7301599143301795e-8,0.002614297046902401,3.248635183237581e-5,-3.69224435741917e-8,0.0026145197475576695,3.215508644569542e-5,-3.648630993783964e-8,0.002614870090159904,3.185171140863245e-5,-3.608467312200419e-8,0.0026153197674543857,3.164059402548646e-5,-3.5801927989370486e-8,0.0026158147703580206,3.156177686629293e-5,-3.569118447274441e-8,0.0026162903077401106,3.1620210993565046e-5,-3.5760006489734524e-8,0.0026166880991987354,3.1785560398102544e-5,-3.5969814749259693e-8,0.002616970841721617,3.200160523740788e-5,-3.624783231824479e-8,0.002617130261397801,3.220181753315225e-5,-3.65072435138508e-8,0.0026171871606737534,3.232655585316976e-5,-3.6669675925902054e-8,0.00261718397046602,3.233719347395405e-5,-3.6683842036219965e-8,0.0026171724016019787,3.222347506708292e-5,-3.6535405177033614e-8,0.0026172002283405987,3.200264024737339e-5,-3.624607593524087e-8,0.0026173011810684,3.171173130676567e-5,-3.586373455846947e-8,0.0026174902392406083,3.139662825485608e-5,-3.544818102047367e-8,0.0026177642440258567,3.110164755113335e-5,-3.5057518398642445e-8,0.0026181060091383474,3.086218416322592e-5,-3.4738433135395185e-8,0.0026184896650506663,3.070099873181416e-5,-3.452121062024481e-8,0.0026188855768160607,3.062736487635263e-5,-3.441851050195791e-8,0.0026192641644238587,3.063776642104189e-5,-3.44262138034998e-8,0.0026195987827379364,3.071705603650061e-5,-3.452490184616867e-8,0.0026198682621240295,3.083960982102611e-5,-3.4681327174304134e-8,0.0026200597799300902,3.0970713580179304e-5,-3.485016751422272e-8,0.0026201724252346513,3.106906901777973e-5,-3.497724556731821e-8,0.002620221032692184,3.1091763777759243e-5,-3.500601824118333e-8,0.0026202386178564006,3.10028288611161e-5,-3.4888839501679675e-8,0.0026202745150329704,3.0784947027866455e-5,-3.4602410900141006e-8,0.0026203852922867623,3.0450819216758257e-5,-3.416279062923851e-8,0.002620618265425924,3.0047622079189514e-5,-3.363132109745287e-8,0.002620992870319827,2.9648323815135033e-5,-3.31033303947174e-8,0.0026214894619416536,2.932979763141325e-5,-3.267956343422445e-8,0.0026220531242507274,2.9146566799369495e-5,-3.2431878766493014e-8,0.002622611657445149,2.9112958080091928e-5,-3.237984681690709e-8,0.0026230987533740094,2.9201352737337322e-5,-3.248826516711856e-8,0.0026234720422993033,2.935474709537481e-5,-3.268331002587069e-8,0.002623720696604966,2.950580934218716e-5,-3.28772184813543e-8,0.002623863141320352,2.9594733190630928e-5,-3.2991532941629956e-8,0.002623938403472255,2.9581523567624585e-5,-3.2973239176112444e-8,0.0026239948751797743,2.945153944445875e-5,-3.280223748832211e-8,0.002624079352158989,2.9214975075539966e-5,-3.249095709508292e-8,0.0026242282334253994,2.8901697565596798e-5,-3.207786296841002e-8,0.0026244620668671175,2.855315053807396e-5,-3.161700102240202e-8,0.0026247839524003213,2.821331655109691e-5,-3.116615430893701e-8,0.0026251814438661785,2.7920728883389294e-5,-3.077624804492969e-8,0.002625630821426735,2.770290261143587e-5,-3.048387523980967e-8,0.0026261023194173497,2.7573621615054672e-5,-3.030759911853844e-8,0.0026265650867071107,2.753272069170523e-5,-3.024760371638935e-8,0.0026269911754542366,2.7567495629662442e-5,-3.0287542037181364e-8,0.0026273585031503107,2.7654808956776647e-5,-3.0397305793839284e-8,0.0026276531846827346,2.776337289842733e-5,-3.0535989704684127e-8,0.0026278717322375995,2.785627661607388e-5,-3.0655133830369624e-8,0.0026280234298139303,2.7894361322732897e-5,-3.0703083939648824e-8,0.0026281325803872136,2.7841478039741167e-5,-3.063189326845691e-8,0.0026282392000712505,2.7672557297109677e-5,-3.040802070948686e-8,0.0026283955437060506,2.7384085700415085e-5,-3.002625965469175e-8,0.00262865565196701,2.700371371201096e-5,-2.9522515841626875e-8,0.002629057605315128,2.6592301817640855e-5,-2.897657699704715e-8,0.0026296042239974493,2.623136467768682e-5,-2.8495630917078668e-8,0.0026302538309996223,2.599585843503772e-5,-2.8178505464655922e-8,0.002630930614107705,2.5924188462011436e-5,-2.807623809106079e-8,0.0026315519205043305,2.6002942441934412e-5,-2.8171931342658712e-8,0.002632057542513618,2.6175113742488016e-5,-2.8391396121084223e-8,0.0026324258329257447,2.6364726212698507e-5,-2.8635308308118833e-8,0.002632672462723894,2.6502714775448774e-5,-2.881304110057633e-8,0.0026328380412312087,2.6543357889184606e-5,-2.8864178132588297e-8,0.0026329731241864014,2.6469411774491017e-5,-2.8765333495100423e-8,0.0026331258609140727,2.6289281768524357e-5,-2.852665947748336e-8,0.0026333338989213834,2.6030282261764095e-5,-2.8183285436663457e-8,0.002633620171689503,2.573080090149753e-5,-2.7785262712895203e-8,0.002633991642655656,2.5432731091922993e-5,-2.7387706234444074e-8,0.0026344403222787766,2.517473880061446e-5,-2.7041855038120544e-8,0.002634946113457011,2.498684705051351e-5,-2.6787753182580472e-8,0.0026354809501950237,2.4886802821856877e-5,-2.6649271729928865e-8,0.0026360135612485953,2.487845151655501e-5,-2.66318567861711e-8,0.0026365141657436557,2.4952076373098923e-5,-2.672296922722169e-8,0.002636958487571637,2.508635806998142e-5,-2.6894714182866534e-8,0.002637330770592852,2.5251345857424093e-5,-2.7107782135658014e-8,0.0026376258574601534,2.541191401004594e-5,-2.731596108184508e-8,0.002637850566159729,2.5531539580490765e-5,-2.747102088376633e-8,0.002638024527826738,2.557660264320669e-5,-2.7528304916922454e-8,0.0026381802741849004,2.552172015255805e-5,-2.7453780860784707e-8,0.0026383615500640014,2.535654692073106e-5,-2.7233147342018143e-8,0.0026386179885873363,2.5093413410281484e-5,-2.6882116638732477e-8,0.002638994289794082,2.4773009859853065e-5,-2.6454097522886618e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json new file mode 100644 index 000000000..270577e9a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":19000,"numberOfSamples":1000,"samples":[0.00263951402096563,2.446275040491078e-5,-2.6038117688221015e-8,0.0026401631724560673,2.4241976200195275e-5,-2.5739261712150362e-8,0.002640884349598046,2.417407411008679e-5,-2.5641764129475454e-8,0.0026415912918163185,2.4277459627606698e-5,-2.577057311285661e-8,0.0026422007751247287,2.4514250198517228e-5,-2.6076268743377622e-8,0.002642664329828072,2.4806135401016956e-5,-2.6455914313675208e-8,0.002642981408758501,2.5067420523334124e-5,-2.6796599674782414e-8,0.0026431902581784475,2.523476738670862e-5,-2.701462116287926e-8,0.0026433473077564114,2.5280434293348607e-5,-2.707291191164421e-8,0.0026435080278592402,2.5209814035850336e-5,-2.6977864625794997e-8,0.0026437153058168224,2.5051197769627946e-5,-2.6766036632474325e-8,0.002643995008250455,2.4844553414124373e-5,-2.6489610125027892e-8,0.002644356096346505,2.4632482174508258e-5,-2.6204648569688263e-8,0.002644792866933108,2.4453878979516923e-5,-2.5962750928942762e-8,0.002645287958825506,2.433962413644026e-5,-2.580522022561437e-8,0.0026458157625529125,2.4309628109960647e-5,-2.5758941317575327e-8,0.00264634623063722,2.4371028134717308e-5,-2.5833817493889664e-8,0.0026468490048528843,2.4517626043978552e-5,-2.6021955503015233e-8,0.002647297629221693,2.473075415894809e-5,-2.629884122598041e-8,0.002647673419069512,2.498168300232041e-5,-2.6626587976528904e-8,0.0026479684516871804,2.5235364563765828e-5,-2.6958906132239313e-8,0.0026481873145099825,2.54550480044092e-5,-2.724714977923732e-8,0.0026483474854581976,2.5607329200806667e-5,-2.744689859121178e-8,0.002648478321749667,2.5667306663201197e-5,-2.7524725198145248e-8,0.002648618565417001,2.562364143904652e-5,-2.746495256788262e-8,0.002648811933829168,2.548331398325493e-5,-2.7276137128600436e-8,0.002649099993304903,2.5275225022656478e-5,-2.6996080239347117e-8,0.0026495118344468096,2.5050470037239995e-5,-2.6692385337925312e-8,0.0026500516782408433,2.4875937156110125e-5,-2.6454031394300517e-8,0.0026506887377273874,2.481830242231187e-5,-2.637005584696817e-8,0.0026513571570154788,2.4919878684211346e-5,-2.649732055333089e-8,0.0026519727576500727,2.5176293414199947e-5,-2.6830682803784936e-8,0.00265246347865712,2.553137242424813e-5,-2.7296067819030845e-8,0.0026527977885291948,2.5897092428559638e-5,-2.777691417282513e-8,0.0026529937872264786,2.6188736914085377e-5,-2.8160834927125474e-8,0.0026531053400488365,2.6354405340763377e-5,-2.8378742435525895e-8,0.002653197143730883,2.6384803835271885e-5,-2.8417798104530085e-8,0.0026533237489522734,2.630496073324375e-5,-2.8310488620170042e-8,0.002653519415667135,2.61584941720321e-5,-2.8113966146280626e-8,0.0026537972075638358,2.5993391727317396e-5,-2.7891437296909137e-8,0.0026541528220946162,2.5852711656499893e-5,-2.7699980495729533e-8,0.002654569583467504,2.576980469437125e-5,-2.758418502662082e-8,0.002655022888269817,2.5766321279371505e-5,-2.7573341150534074e-8,0.0026554838903719694,2.5851487346184455e-5,-2.7680269328933923e-8,0.0026559228543872925,2.6021962722230312e-5,-2.7900982114737346e-8,0.0026563125592436493,2.6262270927647677e-5,-2.8215210320601784e-8,0.0026566318822620954,2.6546159408893735e-5,-2.8588246183577963e-8,0.0026568693325829773,2.683937297731775e-5,-2.8974675169938895e-8,0.00265702588046726,2.7104047119859548e-5,-2.9324209301872344e-8,0.0026571162804157502,2.730439944298196e-5,-2.9589182861804454e-8,0.002657168287578267,2.741298625135473e-5,-2.973278593466467e-8,0.002657219506910407,2.7416528074622072e-5,-2.9736788701860016e-8,0.002657312004454739,2.7320200846281446e-5,-2.9607346163960382e-8,0.0026574851280428084,2.714945498836805e-5,-2.9377627673142143e-8,0.0026577671410715864,2.6948550466389847e-5,-2.9106116594645743e-8,0.0026581666337407396,2.677480114515534e-5,-2.8869130261933987e-8,0.002658665644369953,2.668759153112913e-5,-2.874622335182529e-8,0.0026592177642860556,2.673249924766369e-5,-2.8798893801029236e-8,0.0026597551845333914,2.6923863313585407e-5,-2.9047096880029876e-8,0.0026602066278280773,2.7233239467283458e-5,-2.945360447347533e-8,0.0026605218701161496,2.759279450344971e-5,-2.992839322576825e-8,0.002660691339317348,2.791687831695263e-5,-3.0357403494703774e-8,0.0026607489650131524,2.813307297178182e-5,-3.064397603742436e-8,0.002660756316410744,2.820629128228656e-5,-3.0740975280116455e-8,0.00266077813131762,2.814444053347429e-5,-3.0658329382785926e-8,0.0026608626181401033,2.7987094517445165e-5,-3.044802835863527e-8,0.002661033282093157,2.7787369099427664e-5,-3.018018911351549e-8,0.002661290670229049,2.759646253123286e-5,-2.992268275086257e-8,0.002661618847227499,2.745466279524221e-5,-2.9729256636510297e-8,0.002661992324996788,2.7388048564438633e-5,-2.9635075082451442e-8,0.0026623814914065623,2.740846380825369e-5,-2.9656508743774662e-8,0.0026627564064791672,2.751469021981976e-5,-2.9792508338229933e-8,0.002663089657287003,2.769378081550649e-5,-3.002626101217006e-8,0.0026633589993581537,2.7922422231694105e-5,-3.032697532756177e-8,0.0026635502049094915,2.816877186333765e-5,-3.065235507227498e-8,0.002663660058606214,2.8395509491539593e-5,-3.095269273591784e-8,0.0026636988226479592,2.8564683516255168e-5,-3.1177317725720975e-8,0.0026636910185861354,2.8644267020628355e-5,-3.128328931824663e-8,0.002663673368164203,2.8615444636392442e-5,-3.124507257083623e-8,0.0026636892999802016,2.847882357726595e-5,-3.106284172552677e-8,0.0026637804953454328,2.8257367087954442e-5,-3.076651119240239e-8,0.0026639771539304236,2.7994347029093748e-5,-3.041320967031577e-8,0.002664289390944928,2.7745919962196963e-5,-3.0077603120369135e-8,0.0026647021583839263,2.7569343911087362e-5,-2.983632036881539e-8,0.002665175574611234,2.7508966541401323e-5,-2.9749234062979572e-8,0.002665651753105894,2.758308150002246e-5,-2.9841711448467954e-8,0.0026660679387967637,2.777557445101302e-5,-3.009314804079612e-8,0.002666373652606828,2.8036422130212083e-5,-3.043735504000154e-8,0.0026665467921051737,2.8293485634668975e-5,-3.0778184924067085e-8,0.002666601852555459,2.8473726055012245e-5,-3.1017907545195027e-8,0.0026665852853927806,2.8526301970881325e-5,-3.1088172804032435e-8,0.002666559122253182,2.843738526897907e-5,-3.0969895282801916e-8,0.0026665805053176046,2.823043592843639e-5,-3.069370740064932e-8,0.0026666863526158286,2.795380188020402e-5,-3.032352927191644e-8,0.002666888030781808,2.7663438827002143e-5,-2.993366290807507e-8,0.0026671748130789254,2.7408493516036183e-5,-2.958966680282094e-8,0.0026675216046985984,2.722333376093842e-5,-2.933771824724552e-8,0.0026678967932506742,2.7125467417972392e-5,-2.920171724683057e-8,0.002668268174343812,2.7116928055334394e-5,-2.918496557666993e-8,0.0026686067536675503,2.718687142750966e-5,-2.9273488870256556e-8,0.002668889153521843,2.7314125916714938e-5,-2.9439367095546293e-8,0.0026690995240611494,2.7469415229723713e-5,-2.9643692403226327e-8,0.002669231588881734,2.761768401200625e-5,-2.983969287822529e-8,0.0026692909045567758,2.772137604439484e-5,-2.9977123836592665e-8,0.002669296689582548,2.7745483589062654e-5,-3.0009007656812204e-8,0.0026692818814056923,2.76645400450632e-5,-2.9900964988722216e-8,0.002669289786419154,2.7470487600255673e-5,-2.9641735210395685e-8,0.0026693663135547675,2.7178855682651955e-5,-2.9251483856010147e-8,0.002669548600717101,2.6829814064937723e-5,-2.8783321052296953e-8,0.002669853232704221,2.6481571864986507e-5,-2.8314646721668814e-8,0.0026702686612265127,2.6196540227162797e-5,-2.792883344868289e-8,0.0026707555410017745,2.6024208042934442e-5,-2.769243626155642e-8,0.0026712556999075863,2.5986573478360687e-5,-2.7635653186376986e-8,0.002671707089748267,2.6071129511972674e-5,-2.7742712797765785e-8,0.0026720600901569886,2.6233603318288687e-5,-2.795522462078366e-8,0.002672290443135009,2.640954156364561e-5,-2.818742186699068e-8,0.0026724052428170825,2.653145786869803e-5,-2.8349002218997386e-8,0.002672440220313686,2.6546752821712073e-5,-2.8369163632258638e-8,0.0026724489957256573,2.6431102842522592e-5,-2.8214673922745004e-8,0.002672487698917711,2.6193125149463324e-5,-2.789629736013679e-8,0.0026726001820109838,2.586916578069951e-5,-2.746199942230688e-8,0.002672808644915501,2.551090053887501e-5,-2.6980507296689357e-8,0.0026731118372536797,2.5170934360175597e-5,-2.6522128760281473e-8,0.0026734896589889912,2.4891330726868854e-5,-2.6143393330707435e-8,0.0026739109227287,2.4697549447807037e-5,-2.5878832880513e-8,0.0026743410670043246,2.4597486622909633e-5,-2.5739543146492245e-8,0.002674747998989801,2.458373190904632e-5,-2.5716071958711425e-8,0.0026751057440529678,2.463704675194214e-5,-2.57830039780471e-8,0.0026753964831346907,2.47297865751725e-5,-2.5903529531835557e-8,0.00267561183646005,2.4828867315808e-5,-2.6033429491443315e-8,0.0026757540793394046,2.489859900654912e-5,-2.6124877326598502e-8,0.00267583747024861,2.4904174485618595e-5,-2.6131104709850983e-8,0.0026758891320712635,2.4816671777239062e-5,-2.6013096260213478e-8,0.0026759481268225807,2.4619877273035702e-5,-2.5748745104085175e-8,0.002676060878740094,2.4317891637757816e-5,-2.534308690420903e-8,0.002676271641860672,2.3940547910458253e-5,-2.4835628594163594e-8,0.0026766089922976954,2.3542240639262514e-5,-2.429887410844018e-8,0.002677072911743146,2.3190810939116947e-5,-2.3823549830955104e-8,0.002677629384711697,2.2947801471423495e-5,-2.349226195279842e-8,0.0026782174373540597,2.284747447523584e-5,-2.3351420427147178e-8,0.002678767190753552,2.2884450527373708e-5,-2.3394574904936935e-8,0.002679221246387928,2.3015772470718473e-5,-2.3564955982734086e-8,0.0026795504594499405,2.31755695605357e-5,-2.3774871289120044e-8,0.002679759170591716,2.3295137206169125e-5,-2.393243272963582e-8,0.0026798803135628544,2.3320917185443094e-5,-2.3965602905995443e-8,0.0026799640145154023,2.322577558520088e-5,-2.3837397612610006e-8,0.0026800639314745046,2.3012215146842673e-5,-2.3550384713622862E-08,0.0026802248899573116,2.2708392050599457e-5,-2.3141585163499967e-8,0.0026804742934984,2.235906805897442e-5,-2.2670554977751216e-8,0.0026808185968568944,2.2014267511493717e-5,-2.220428842578894e-8,0.0026812448336239396,2.171854636264718e-5,-2.180280461715125e-8,0.0026817259374465234,2.150323880680172e-5,-2.1508611094251824e-8,0.00268222781652349,2.1382809836528223e-5,-2.1341628366433782e-8,0.0026827161726339327,2.1355034347562173e-5,-2.1299284836488415e-8,0.0026831617535715744,2.140378470911418e-5,-2.1360196730420277e-8,0.0026835436457758872,2.1502965966267144e-5,-2.1489465414133864e-8,0.0026838509543692596,2.16204854567272e-5,-2.1644050147128995e-8,0.002684083542702058,2.1721810919128004e-5,-2.1777567204648777e-8,0.0026842524063363047,2.1773296218550722e-5,-2.184473901283113e-8,0.0026843798793523676,2.174584592951199e-5,-2.1806283785570994e-8,0.002684499254751002,2.1619604754520625e-5,-2.1635208600026604e-8,0.002684652615539522,2.1389936125771377e-5,-2.132488556836351e-8,0.0026848851553524585,2.1073684595338914e-5,-2.0897551736655894e-8,0.002685234761333537,2.071276203290809e-5,-2.040922349572789e-8,0.0026857179492677428,2.0370460882582813e-5,-1.9944823185549678e-8,0.002686317392056504,2.0116807827503108e-5,-1.9598553255649772e-8,0.002686979523907763,2.0004912349695077e-5,-1.9442129284992614e-8,0.0026876280837219843,2.0048512671163523e-5,-1.949455243073783e-8,0.0026881899249303247,2.0214024293583018e-5,-1.9711294931862544e-8,0.002688620249435145,2.043285656095454e-5,-2.000069039920413e-8,0.002688914623014258,2.0626936406510176e-5,-2.0258093448061607e-8,0.002689104448499188,2.073370425998305e-5,-2.0399378529749706e-8,0.0026892419298627126,2.0720641518941455e-5,-2.038044359813892e-8,0.00268938312888527,2.0587598019377475e-5,-2.0200427284762034e-8,0.002689574768650333,2.0360579482662567e-5,-1.989355990805515e-8,0.0026898465947728313,2.0081670543145843e-5,-1.9515867700560127e-8,0.0026902088053080623,1.9798500950558975e-5,-1.913120086648592e-8,0.002690653320029833,1.9555086732382298e-5,-1.8798959747669437e-8,0.0026911577108349486,1.9384918317815483e-5,-1.856468027518342e-8,0.0026916907283687213,1.9306783846534458e-5,-1.8454204375709315e-8,0.0026922183440946422,1.932346249716126e-5,-1.8471725008849565e-8,0.0026927093194704355,1.9422959535281348e-5,-1.8601349303398246e-8,0.002693139577075912,1.9581620030571056e-5,-1.8811304655394267e-8,0.0026934949979082095,1.9768275469618075e-5,-1.905959980051295e-8,0.0026937727037630865,1.9948579211282313e-5,-1.9299928293298172e-8,0.002693981227014739,2.008903816565814e-5,-1.9487102008012012e-8,0.0026941399761876384,2.0160743594175506e-5,-1.958202828436642e-8,0.002694278150304583,2.014308771745926e-5,-1.9556669135148625e-8,0.002694432839134833,2.0027814972522264e-5,-1.939951202924289e-8,0.0026946454407021474,1.9823465164879817e-5,-1.912164795226923e-8,0.002694955118743798,1.9559228013221924e-5,-1.876210188452582e-8,0.0026953885604227568,1.9285588555638527e-5,-1.8388822887488567e-8,0.002695947389646158,1.906784792733087e-5,-1.8090003030037158e-8,0.002696598361371597,1.8969529356223275e-5,-1.7951673808881418e-8,0.0026972747172651123,1.9028183067974308e-5,-1.8024976958726027e-8,0.002697894448259002,1.923482567582152e-5,-1.82982964892157e-8,0.0026983903263144058,1.953167385178543e-5,-1.8694084270395405e-8,0.0026987355972708806,1.9833273175935162e-5,-1.9097304148343785e-8,0.002698950451980689,2.005962260427181e-5,-1.9400090848296767e-8,0.0026990880859063043,2.016241265792062e-5,-1.9537100067242948e-8,0.0026992117922432905,2.013345355569334e-5,-1.949684506615443e-8,0.002699375647089422,1.999759245364751e-5,-1.9312213181089278e-8,0.002699614261285006,1.9798830819145078e-5,-1.9041939056218857e-8,0.0026999406340535597,1.9586801508834097e-5,-1.8752604336031518e-8,0.0027003488738597202,1.9406767550178475e-5,-1.850529554434705e-8,0.002700818970481651,1.9293437948365567e-5,-1.8347238284879605e-8,0.0027013220497049467,1.9267719508964687e-5,-1.8307237617048195e-8,0.002701825549465035,1.9335593552310834e-5,-1.839393020569358e-8,0.0027022980757690288,1.9488723621636194e-5,-1.8596431789749385e-8,0.002702713662607276,1.970654001153539e-5,-1.8887103092774177e-8,0.002703055157533248,1.9959543955443707e-5,-1.9226073522447195e-8,0.002703316448267429,2.0213520540267606e-5,-1.9567030088327615e-8,0.0027035033133196956,2.0434152409261692e-5,-1.986350378693203e-8,0.0027036329373279133,2.059147843487134e-5,-2.0074871352699753e-8,0.002703732317100221,2.0663912104588616e-5,-2.017172044859481e-8,0.002703835708462897,2.064176391337209e-5,-2.0140576017720335e-8,0.002703981045779454,2.0530222225002636e-5,-1.9987983238696774e-8,0.002704204955540068,2.0351562676141675e-5,-1.9743638549377247e-8,0.0027045358067139627,2.014570325430151e-5,-1.9461313750205066e-8,0.002704984805772576,1.996714707688034e-5,-1.92148397591981e-8,0.0027055368649279493,1.987574577050617e-5,-1.9085611169575944e-8,0.002706145685078051,1.9919963553539275e-5,-1.913981275734757e-8,0.0027067395839023285,2.0115935619329194e-5,-1.9399872245807953e-8,0.002707241964949466,2.0432627984345386e-5,-1.9824189275903496e-8,0.002707600561978769,2.079591363745013e-5,-2.031258854203578e-8,0.0027078094546453073,2.1114943868623784e-5,-2.0742078873478338e-8,0.0027079095029694275,2.1317626509160715e-5,-2.101494646065448e-8,0.002707967740739984,2.1374638784031844e-5,-2.1091231796414332e-8,0.0027080501916891273,2.1301291919555723e-5,-2.0991196408044287e-8,0.002708202805321296,2.1142645928582355e-5,-2.0775234408464792e-8,0.0027084452776870867,2.0954316120813476E-05,-2.0518098346501502e-8,0.002708774162575712,2.078764131629634e-5,-2.028905117718749e-8,0.002709169810830763,2.0681479161499233e-5,-2.014086685744763e-8,0.0027096034430987557,2.065925821172407e-5,-2.0105765910602988e-8,0.0027100428652535534,2.0729021182110605e-5,-2.0195268624788187e-8,0.0027104568599029245,2.088478077558925e-5,-2.0401806622108805e-8,0.0027108187654351296,2.1108546115977512e-5,-2.0701327617105837e-8,0.002711109496587725,2.1372986326076458e-5,-2.10568899223502e-8,0.002711319970232938,2.1644827851250796e-5,-2.142334211249965e-8,0.002711452708090201,2.1889050652350722e-5,-2.1753098561200446e-8,0.002711522206080725,2.207368852602839e-5,-2.2002679141313222e-8,0.002711553726110139,2.2174663760722812e-5,-2.2139227350930035e-8,0.0027115804817427185,2.2179989492678676E-05,-2.214615199321869e-8,0.0027116394229722046,2.2092790600064617e-5,-2.2027220749220564e-8,0.002711765902353902,2.1932661136871404e-5,-2.1808497541801675e-8,0.0027119875265561675,2.17349102139576e-5,-2.153749682666738e-8,0.0027123175594141167,2.154714321577371e-5,-2.1278725972971384e-8,0.002712748677090166,2.1422310197924048e-5,-2.1104340382649643e-8,0.0027132489457220156,2.1407462817094904e-5,-2.107881988743877e-8,0.002713763222707799,2.1528939153101463e-5,-2.12386510801654e-8,0.002714223539826301,2.17779711508261e-5,-2.1572526893751845e-8,0.0027145692235508168,2.210462782438041e-5,-2.201294395593925e-8,0.0027147705289971287,2.242831272043591e-5,-2.245045363896241e-8,0.002714842961370987,2.26651374401677e-5,-2.2770961975807826e-8,0.0027148417371246187,2.2759728481484883e-5,-2.2899019449501894e-8,0.0027148384646546696,2.270361220246182e-5,-2.2822761360270927e-8,0.002714894133814566,2.253147752919397e-5,-2.2588785865962968e-8,0.002715042481976411,2.230178058034443e-5,-2.227589996373742e-8,0.0027152877602880654,2.2075146022270574e-5,-2.196600255000497e-8,0.0027156119658795414,2.189977200438472e-5,-2.1724460810982776e-8,0.0027159847379479274,2.180547085498409e-5,-2.1592064109398672e-8,0.0027163717326484887,2.18037059038195e-5,-2.158495102003217e-8,0.0027167402462662167,2.189035707386248e-5,-2.169814943921391e-8,0.0027170626329077376,2.204902136902486e-5,-2.1909862774099005e-8,0.002717318577686348,2.225407880034124e-5,-2.2185536220454567e-8,0.002717496917322223,2.247368848952755e-5,-2.2481941172479003e-8,0.0027175971570509785,2.2673148098990517e-5,-2.2751819980273843e-8,0.002717630437619656,2.2818986025088118e-5,-2.2949521472554347e-8,0.002717619374232879,2.2883830547347417e-5,-2.3037639752791775e-8,0.0027175960863589687,2.2851508344780233e-5,-2.29939131948583e-8,0.002717598071460584,2.27213176952526e-5,-2.281699857396905e-8,0.0027176621709201596,2.2510260056520727e-5,-2.2529529271382513e-8,0.0027178174751903974,2.22521853070832e-5,-2.2177067543554316e-8,0.0027180784671276526,2.1993333213934358e-5,-2.1822217623532972e-8,0.0027184398641318065,2.178448760758116e-5,-2.153411268172913e-8,0.0027188745594770346,2.1670561409178468e-5,-2.137429317301222e-8,0.0027193360025531545,2.1679009178246315e-5,-2.1380826619141587e-8,0.002719766138446254,2.1809462677510583e-5,-2.1553961002315126e-8,0.00272010902935972,2.2028302823201387e-5,-2.184847600516649e-8,0.0027203278821346134,2.2272524858974438e-5,-2.2178797892063562e-8,0.0027204196799707763,2.24654419229855e-5,-2.2440404566424472e-8,0.002720419476537429,2.2541182151501676e-5,-2.2543308403420168e-8,0.002720389514355453,2.246792006086709e-5,-2.2443785172222848e-8,0.0027203968580779593,2.2257868624423312e-5,-2.2157995797522724e-8,0.0027204907531003454,2.1959156500183422e-5,-2.17509487518943e-8,0.0027206903780250197,2.1635680043467534e-5,-2.1309184877300774e-8,0.0027209858546815508,2.1346417556349277e-5,-2.0912787442917073e-8,0.002721347808163526,2.1132433058736414e-5,-2.06177932502233e-8,0.002721738732659261,2.101302770424033e-5,-2.045091160605777e-8,0.002722121842089695,2.0988064107378192e-5,-2.0412526919188236e-8,0.0027224663072612032,2.104272221321373e-5,-2.0482980964473065e-8,0.0027227497312666536,2.1152219247249398e-5,-2.0628864697851955e-8,0.0027229592187699085,2.1285646420264224e-5,-2.0808205423364215e-8,0.002723092024279769,2.140915534170127e-5,-2.0974851448080727e-8,0.002723156140984944,2.14891410191427e-5,-2.108288393508341e-8,0.002723170606461795,2.149605797679514e-5,-2.1091870780846034e-8,0.0027231647986974373,2.140913982897247e-5,-2.0973305086363463e-8,0.002723175747615389,2.122154123906254e-5,-2.0717585989345948e-8,0.0027232427667478894,2.094452464224403e-5,-2.0339705819586754e-8,0.0027233996145755853,2.0608713479640643e-5,-1.9880992713257535e-8,0.002723665721382843,2.026060892275378e-5,-1.9404470170278227e-8,0.0027240391567136266,1.9953854594028393e-5,-1.898310231028625e-8,0.002724494146855511,1.9736789731948312e-5,-1.8682948875842208e-8,0.002724984781134481,1.9639562245665583e-5,-1.8545605329381536e-8,0.002725454640230336,1.9664591180140306e-5,-1.8575060281540082e-8,0.0027258502841296267,1.978346436416098e-5,-1.8733227690675876e-8,0.0027261353236396123,1.9941877016394326e-5,-1.894645849238284e-8,0.002726301248658682,2.007230249813052e-5,-1.912271463933041e-8,0.0027263713289722514,2.011187104949174e-5,-1.9175991154117115e-8,0.002726395138448426,2.002057957804487e-5,-1.905127428909273e-8,0.002726434196991114,1.9793401183908815e-5,-1.8741182852925098e-8,0.0027265433420372793,1.946100805656228e-5,-1.828705235095383e-8,0.0027267551469351914,1.9078518607560066e-5,-1.7763682989189432e-8,0.002727073366580046,1.870747687105405e-5,-1.7254861286109985e-8,0.0027274765293817524,1.8398952985918913e-5,-1.683037011094019e-8,0.002727927993060576,1.818353027833995e-5,-1.6532295654523488e-8,0.0027283871266923043,1.8069347217504134e-5,-1.637222675764901e-8,0.0027288178204516824,1.804577514014172e-5,-1.633611041703065e-8,0.0027291931918580247,1.8089300870504294e-5,-1.6392157254153952e-8,0.0027294972768002954,1.816913014448269e-5,-1.649844892067187e-8,0.0027297251046408027,1.8251552466542002e-5,-1.660892918346911e-8,0.0027298822811575333,1.830324285422369e-5,-1.6677976929709144e-8,0.0027299846109979653,1.8294199006395545e-5,-1.6664471571957215e-8,0.0027300576392803658,1.8201084382144078e-5,-1.6536379482566312e-8,0.002730135367558795,1.801142871411346e-5,-1.6276481194654895e-8,0.0027302569950561194,1.772835840690819e-5,-1.5888815400112085e-8,0.002730460675000141,1.7374367034465673e-5,-1.540383280991605e-8,0.002730774317388617,1.6991538671805468e-5,-1.487874681986958e-8,0.002731205492992096,1.663554986253649e-5,-1.4389430286252634e-8,0.0027317346225685167,1.6362736100393333e-5,-1.401285392592605e-8,0.0027323159732417688,1.6213321694122396e-5,-1.3804237823242727e-8,0.0027328882043883593,1.6197272773221976e-5,-1.377768292956184e-8,0.002733391477933123,1.628923403372551e-5,-1.3899104903846669e-8,0.0027337846859482747,1.6435087027299024e-5,-1.4095004537599963e-8,0.002734056500043612,1.656745755001094e-5,-1.4273511480543449e-8,0.0027342271115420556,1.6624323330041047e-5,-1.4349761230979106e-8,0.002734341218625606,1.6564849873113524e-5,-1.4267579057934553e-8,0.0027344551943848145,1.6378505391622318e-5,-1.4012046808109738e-8,0.002734622289801755,1.608581588143182e-5,-1.3610682506044439e-8,0.0027348797656559553,1.5731229116967588e-5,-1.312384293400565e-8,0.0027352411979116873,1.5370487927067927e-5,-1.262758861964929e-8,0.0027356956705479342,1.5056407177672457e-5,-1.2194285616455754e-8,0.002736213318040265,1.4827270079832405e-5,-1.1876677483532097e-8,0.0027367546090290257,1.4700733657187753e-5,-1.169940036745348e-8,0.002737279962922846,1.4673731384326293e-5,-1.16586767454608e-8,0.0027377570640155654,1.4726736350655366e-5,-1.1728029197099415e-8,0.0027381648557289963,1.482989457646782e-5,-1.1866648191392354e-8,0.0027384946423735903,1.4948942426058718e-5,-1.2027544616739114e-8,0.002738749434445084,1.504985821963847e-5,-1.216399804528127e-8,0.0027389426406392242,1.5102225647928979e-5,-1.2234218749741384e-8,0.0027390967313658887,1.508190848938774e-5,-1.2205022203274869e-8,0.0027392418828776502,1.497377683520103e-5,-1.2055543818857391e-8,0.0027394140032673863,1.4774979914795335e-5,-1.1781703210623261e-8,0.0027396510558396095,1.449859754939216e-5,-1.1401214646296961e-8,0.0027399865631337478,1.4176337452192784e-5,-1.0957324233453986e-8,0.0027404401157403325,1.3857589419184968e-5,-1.0517579850249122e-8,0.002741006988407936,1.3601649709835046e-5,-1.016324470539438e-8,0.002741651946643131,1.3461932237357087e-5,-9.967701894510386e-9,0.0027423134297618586,1.3466164991872435e-5,-9.969292325791265e-9,0.0027429204127412043,1.3602045380436758e-5,-1.0151559338201335e-8,0.0027434161980657615,1.381781057785335e-5,-1.0443902181835858e-8,0.0027437775903663983,1.403930043979941e-5,-1.0744867582233018e-8,0.00274402026056172,1.4195086586668818e-5,-1.0956551973741348e-8,0.002744189707180539,1.4237647948831023e-5,-1.101361813162918e-8,0.0027443444308235623,1.4153214739371446e-5,-1.0896808965594635e-8,0.0027445391212823013,1.3960083614703103e-5,-1.063071839494125e-8,0.0027448126229584063,1.369940353501182e-5,-1.0271311517205686e-8,0.0027451820491002014,1.342296064314159e-5,-9.889353385649206e-9,0.0027456424369939375,1.3181296837245952e-5,-9.554228595057486e-9,0.0027461706266553357,1.301415215625418e-5,-9.320814951324564e-9,0.0027467319065318033,1.2944348784452829e-5,-9.220945708603037e-9,0.0027472878430236675,1.297566686114043e-5,-9.26028974478475e-9,0.0027478036209455806,1.3094521161716708e-5,-9.420488426281658e-9,0.0027482535395967965,1.3274409109423844e-5,-9.665206228210173e-9,0.002748624017387072,1.3481665911821765e-5,-9.94808846615289e-9,0.002748914201993835,1.3681151040180056e-5,-1.0220678594459335e-8,0.002749134840466332,1.3840922486020028e-5,-1.0438925666362003e-8,0.0027493062755827883,1.3935617636275572e-5,-1.0567851392877573e-8,0.0027494561978375956,1.3948871850020234e-5,-1.0584841736813426e-8,0.002749617298368145,1.3875330877006017e-5,-1.0482372438320108e-8,0.002749824478571436,1.3722661790345272e-5,-1.0270772986168708e-8,0.002750110830763187,1.3513482353169196e-5,-9.98093410823438e-9,0.00275050148863685,1.3286167853943228e-5,-9.665504146217214e-9,0.0027510052007713166,1.3092282740735443e-5,-9.395433012835077e-9,0.0027516054627253683,1.2987797311630384e-5,-9.247916863310523e-9,0.0027522560077975567,1.3016795714357577e-5,-9.283940992366734e-9,0.002752887270832192,1.3191513005764179e-5,-9.520705716744854e-9,0.0027534268750110877,1.3479307947422266e-5,-9.913575792228905e-9,0.002753827252818105,1.380820104122874e-5,-1.0363635022831688e-8,0.002754085066367869,1.4092408000508905e-5,-1.0752843979321471e-8,0.002754240423604777,1.4264671631161601e-5,-1.0988570669126968e-8,0.0027543577158397454,1.4297504261183262e-5,-1.1032801675695634e-8,0.0027545010082918016,1.4205075789953122e-5,-1.0904699986993847e-8,0.0027547161998007054,1.4030591799180186e-5,-1.0663283329901377e-8,0.0027550240194078655,1.3829185117178249e-5,-1.0384043206256625e-8,0.002755421453020713,1.3653474454465471e-5,-1.0139258403077382e-8,0.0027558875196220835,1.3544259564344984e-5,-9.985280220478687e-9,0.0027563903321073395,1.3525955479519786e-5,-9.956181654857124e-9,0.0027568938904163395,1.3605460183974092e-5,-1.0062009063794016e-8,0.002757364073561223,1.3773418082126131e-5,-1.029030898978133e-8,0.0027577735523741467,1.4007312606634619e-5,-1.0610254942756665e-8,0.002758105281049702,1.4275878871466236e-5,-1.0978721485269755e-8,0.0027583543129910426,1.4544196144378514e-5,-1.1347397176404875e-8,0.002758527884760369,1.4778781498711986e-5,-1.1669921998794136e-8,0.0027586439565762334,1.495202207329257e-5,-1.1908062139585563e-8,0.0027587286752269713,1.5045486741457556e-5,-1.2036263263573345e-8,0.002758813283168323,1.5052079543374385e-5,-1.2044567346228864e-8,0.0027589307562035483,1.497726783006875e-5,-1.1940277717807085e-8,0.0027591121400170103,1.4839587044545021e-5,-1.1748696271030066e-8,0.002759382258301141,1.4670374331164395e-5,-1.1512860934478634e-8,0.0027597543590631487,1.4512060743916354e-5,-1.1291303651724086e-8,0.002760223851724849,1.4413504572653444e-5,-1.1151667518328181e-8,0.002760762772812467,1.4420577561528979e-5,-1.1157671499436408e-8,0.002761318710750578,1.4561512390203414e-5,-1.1348746558323507e-8,0.00276182335825203,1.483046758444795e-5,-1.171717072812087e-8,0.002762213232767044,1.5178600777388183e-5,-1.2195628938203373e-8,0.0027624561618459875,1.5523579998102924e-5,-1.2670370954457433e-8,0.002762568055471419,1.577896645887847e-5,-1.3021911778698365e-8,0.002762607053442844,1.588892345218556e-5,-1.3173036202525945e-8,0.0027626477535367317,1.5847494556313896e-5,-1.3115353264673006e-8,0.002762752148698717,1.5693341116187472e-5,-1.290193227055894e-8,0.002762952717258098,1.5488291251018845e-5,-1.2617722370350503e-8,0.0027632510418019677,1.5294686690858635e-5,-1.2348462136331391e-8,0.0027636259344087917,1.5160707656321381e-5,-1.2160612203495138e-8,0.002764043924793039,1.511465428428553e-5,-1.2093523880228672e-8,0.002764468105360931,1.5165219435121325e-5,-1.2159711904489318e-8,0.0027648642771565795,1.5304554776486206e-5,-1.2348881160795975e-8,0.00276520491193756,1.551214917612753e-5,-1.2633083740317827e-8,0.0027654717421526196,1.5758859205074683e-5,-1.2972187445271782e-8,0.0027656573615933593,1.601108180866163e-5,-1.331966747011974e-8,0.0027657658412326984,1.623508143758839e-5,-1.3628693916074076e-8,0.0027658122315612965,1.6401336192405455e-5,-1.385824500072823e-8,0.0027658208032614435,1.64885423505343e-5,-1.397868551819702e-8,0.0027658220656359834,1.6486733828388484e-5,-1.397605157394892e-8,0.002765848891824904,1.639909794692674e-5,-1.3854513826157042e-8,0.0027659321674139512,1.6242317878778517e-5,-1.3636849548780435e-8,0.002766096303503263,1.6045369593808686e-5,-1.3362857387789591e-8,0.0027663548615603564,1.5846730676314847e-5,-1.308562701077851e-8,0.0027667064826740096,1.5689835021215877e-5,-1.2865361853446855e-8,0.002767131628491153,1.5616253392744474e-5,-1.2759959238257351e-8,0.002767591541465577,1.565613932350352e-5,-1.2811680422273687e-8,0.0027680318643640033,1.581672526418174e-5,-1.3031031172521404e-8,0.0027683935757452003,1.607229328191158e-5,-1.3382687188492964e-8,0.0027686315906423767,1.6362317419807093e-5,-1.3782849249591848e-8,0.0027687352106116232,1.660487394222258e-5,-1.4117902190796029e-8,0.002768738239820442,1.6725105080637398e-5,-1.4283993588661351e-8,0.0027687087079556953,1.6685822510540136e-5,-1.422947633870195e-8,0.0027687213527381837,1.650176304721841e-5,-1.3974559220475729e-8,0.0027688289978741332,1.622925799770131e-5,-1.3596908755438644e-8,0.002769048363398059,1.594031700512789e-5,-1.3195832869032236e-8,0.00276936337344147,1.569769408859385e-5,-1.2857958409166736e-8,0.002769738192543268,1.5541237964123733e-5,-1.2638499739393606e-8,0.002770130857577132,1.5485700596560033e-5,-1.2558236264973412e-8,0.0027705028435936804,1.5525121557837643e-5,-1.2609441752677153e-8,0.002770824104016123,1.5639139817898094e-5,-1.2764417778794309e-8,0.0027710750382562957,1.579871667179225e-5,-1.298325399628226e-8,0.002771246995946245,1.5970684935818387e-5,-1.322007185623983e-8,0.0027713422068845884,1.6121524757386047e-5,-1.3428307331702114e-8,0.0027713733059165882,1.622087961293736e-5,-1.3565689517813172e-8,0.0027713622519797507,1.6245092710609566e-5,-1.3599228831309594e-8,0.002771338258376431,1.6180665568763176e-5,-1.3510033682923686e-8,0.0027713344138243505,1.6027070557930125e-5,-1.3297175460530656e-8,0.0027713830768532144,1.579813080854103e-5,-1.2979564370243544e-8,0.0027715105782646693,1.5521323628688927e-5,-1.2595002061998987e-8,0.002771732045267941,1.5234636665673235e-5,-1.2195915802458485e-8,0.002772047301432447,1.4981007805899022e-5,-1.1841777298032802e-8,0.002772438752589332,1.4800880562158318e-5,-1.1588867502371844e-8,0.0027728720133379584,1.4723695349422957e-5,-1.1478455258934069e-8,0.0027733000270757664,1.475936384689405e-5,-1.1524829287417343e-8,0.0027736714038943994,1.4891518683271445e-5,-1.1705728640433002e-8,0.002773942949580787,1.5075513691583893e-5,-1.1959405556781578e-8,0.002774094298536084,1.5244784160866828e-5,-1.2193420369479077e-8,0.00277413935771806,1.5327642621168224e-5,-1.2308056164262575e-8,0.002774127095241945,1.5271382737278492e-5,-1.222991079233378e-8,0.002774127125267959,1.5063483024427677e-5,-1.1941373736095969e-8,0.002774204509579759,1.4737530909312808e-5,-1.1488800019336111e-8,0.0027743965548067697,1.43593324733346e-5,-1.0963210259393599e-8,0.0027747034985702353,1.4001351538615448e-5,-1.0464911437262635e-8,0.0027750951364715324,1.3719672259939094e-5,-1.007167416389651e-8,0.002775526051367617,1.3542754928601997e-5,-9.823200461899074e-9,0.0027759503581378433,1.3472044653032601e-5,-9.721903248961207e-9,0.0027763311030684443,1.3489110782461308e-5,-9.742655844025204e-9,0.0027766441055164853,1.356402503429683e-5,-9.84425800476849e-9,0.002776878237542247,1.3662175145885656e-5,-9.978801364369811e-9,0.00277703421910064,1.3749001999510627e-5,-1.0098250340897997e-8,0.002777123145672282,1.3793304300500613e-5,-1.0159108468992627e-8,0.002777165069365021,1.3769948799978488e-5,-1.012627712891473e-8,0.002777187380425079,1.366257139239754e-5,-9.976865115490197e-9,0.002777222427192686,1.3466379006569386e-5,-9.704079704233e-9,0.002777303795784524,1.3190508945819256e-5,-9.32046418862628e-9,0.0027774610887294536,1.285887005615791e-5,-8.859037531642524e-9,0.00277771379236086,1.250829794191475e-5,-8.370757335750319e-9,0.0027780656045215007,1.2183280121571277e-5,-7.917278908180143e-9,0.00277850108054271,1.1927476784055753e-5,-7.559280656595044e-9,0.002778986285044394,1.1773582658743977e-5,-7.3424319327927995e-9,0.0027794741941447932,1.1734065609188585e-5,-7.284473669250357e-9,0.0027799142794985264,1.1795451333347614e-5,-7.367127372081157e-9,0.00278026452821218,1.1918270864807826e-5,-7.535846169209884e-9,0.0027805032458643373,1.204384768123753e-5,-7.709138116829781e-9,0.0027806373209791524,1.2107676158375936e-5,-7.797171506191644e-9,0.002780703452468078,1.2057033090757864e-5,-7.726358310931846e-9,0.002780759925646668,1.186787561236933e-5,-7.46295792291357e-9,0.002780869728653987,1.155427127221588e-5,-7.026249491461181e-9,0.002781080498337681,1.1164946271353642e-5,-6.483757041896363e-9,0.002781409786732128,1.0767143875816982e-5,-5.928845847483083e-9,0.0027818421004138097,1.04248448157659e-5,-5.450501229246064e-9,0.0027823377629871307,1.0181105245430409e-5,-5.10879819574084e-9,0.002782847735319512,1.0050699713777196e-5,-4.924616944992279e-9,0.002783327243787241,1.0022856728953502e-5,-4.883325460734916e-9,0.0027837440651562097,1.0069594711575953e-5,-4.94624874966697e-9,0.0027840812269027786,1.015483206039899e-5,-5.063271670053514e-9,0.0027843360787357524,1.024152532104462e-5,-5.1827770304128115e-9,0.002784517883012557,1.0296305457586499e-5,-5.258162067166841e-9,0.0027846452783812006,1.0292292461840592e-5,-5.251838399917288e-9,0.002784744078074569,1.0211053940810853e-5,-5.138017383006263e-9,0.0027848451722726508,1.004447040455388e-5,-4.905319130341186e-9,0.002784981869337182,9.796760182050914e-6,-4.559563393831464e-9,0.0027851859388087303,9.486172936094592e-6,-4.1260871182282976e-9,0.0027854820195520776,9.145128566965864e-6,-3.649923337373014e-9,0.0027858809685050146,8.817212839408479e-6,-3.1916519447886542e-9,0.002786374004344479,8.549858663854469e-6,-2.8172810988601715e-9,0.002786930516713693,8.38311526590999e-6,-2.5826759770245543e-9,0.0027875021251903167,8.337323332657525e-6,-2.5164033042951878e-9,0.002788033442730153,8.404341144331321e-6,-2.6074358965324996e-9,0.0027884768663511967,8.546587963184419e-6,-2.8036922561923524e-9,0.002788806444515096,8.705359435428541e-6,-3.023511191011914e-9,0.002789025898946628,8.816155454370437e-6,-3.1769693624562517e-9,0.00278916808580964,8.826174280013064e-6,-3.1902919454504053e-9,0.0027892861494492062,8.708654066453408e-6,-3.0259083522581603e-9,0.002789439024007953,8.46996585135858e-6,-2.6924102085292982e-9,0.0027896754169786063,8.14743898998842e-6,-2.2415918566646356e-9,0.002790020989298804,7.798481749683577e-6,-1.7533598997337004e-9,0.0027904727105389194,7.484380983397801e-6,-1.3132102122914294e-9,0.0027910019465777094,7.254182931369871e-6,-9.89761674395551e-10,0.0027915644996498075,7.133899378245067e-6,-8.196308089392246e-10,0.002792113334641582,7.123723332179867e-6,-8.034153427098901e-10,0.0027926094573086616,7.202432983697204e-6,-9.117101623954198e-10,0.002793028233302452,7.335726174669705e-6,-1.0966748720526548e-9,0.0027933609484635524,7.4849003149403414e-6,-1.3041707157630382e-9,0.002793613109513304,7.61360949860106e-6,-1.4832721372423023e-9,0.002793801331699417,7.692125726622039e-6,-1.5923023708007069e-9,0.0027939501157332436,7.699650544928369e-6,-1.602113739190793e-9,0.0027940890449749374,7.62559574208575e-6,-1.4978805430814948e-9,0.0027942502546082484,7.47061613566804e-6,-1.2805101597583769e-9,0.002794465545354246,7.247708832349798e-6,-9.681400023267961e-10,0.0027947623730721393,6.982972729165114e-6,-5.97180208495864e-10,0.002795158293619206,6.714815163187818e-6,-2.2122179168722028e-10,0.0027956544044971682,6.489842552957791e-6,9.465788350054435e-11,0.0027962298905296608,6.353985618709735e-6,2.862426270105938e-10,0.0027968413003591638,6.339329590931643e-6,3.085594249353236e-10,0.002797430023565606,6.450574770211097e-6,1.5483829055035215e-10,0.0027979381407812233,6.657939065789282e-6,-1.33481326751483e-10,0.0027983274370340884,6.9023050870562255e-6,-4.73865860969561e-10,0.0027985929487883057,7.112534229482264e-6,-7.668664513252449e-10,0.0027987644712778367,7.227889781129287e-6,-9.274873085756629e-10,0.002798895846497114,7.215922522318092e-6,-9.102130577481535e-10,0.0027990476214502418,7.07954168609196e-6,-7.189055791823305e-10,0.002799270159329704,6.8528184660678055e-6,-4.0097058487487015e-10,0.0027995921098042825,6.589150394962895e-6,-3.089155205840986e-11,0.0028000160559371254,6.346543838175632e-6,3.10246237176008e-10,0.0028005208861621384,6.174077528739478e-6,5.536306075559972e-10,0.002801069138807742,6.102332622183427e-6,6.561508599671992e-10,0.002801616887775129,6.139228531226112e-6,6.063570042587458e-10,0.0028021235424224794,6.271340195284573e-6,4.227738196672006e-10,0.0028025593261495505,6.469448209654452e-6,1.462323628969768e-10,0.002802909202716053,6.696171451931554e-6,-1.7081556781815749e-10,0.0028031732715659992,6.913472533175175e-6,-4.748902722777455e-10,0.002803364595060627,7.088522312131387e-6,-7.198047146353163e-10,0.002803505761944061,7.197381055746142e-6,-8.718919784335805e-10,0.002803625279954858,7.226791581760613e-6,-9.125259098952547e-10,0.0028037543398572442,7.1748236665111314e-6,-8.389867042693141e-10,0.0028039239008144736,7.051055423278122e-6,-6.646711695244907e-10,0.0028041616337651505,6.8765748079719594e-6,-4.190817695600791e-10,0.0028044880974484863,6.6835013555270844e-6,-1.471822583423747e-10,0.0028049117634366405,6.5130028002482435e-6,9.333211200818222e-11,0.002805423407949294,6.410183518830969e-6,2.391581525590211e-10,0.0028059919682429956,6.414458134729057e-6,2.348761811647254e-10,0.0028065656354558507,6.545964496883274e-6,5.204916047160679e-11,0.0028070820322286597,6.792467980851788e-6,-2.923256812302114e-10,0.0028074875111325586,7.1049452709561795e-6,-7.295484999982558e-10,0.002807758398439204,7.408801568743201e-6,-1.1549479735996095e-9,0.002807912309953183,7.629016879277494e-6,-1.4632184010996237e-9,0.0028080018600268285,7.717209899264664e-6,-1.5864308892715257e-9,0.00280809416469148,7.666574793887121e-6,-1.5149558263742769e-9,0.0028082476851966315,7.509156810078956e-6,-1.293585924107478e-9,0.0028084967768828226,7.300588647517751e-6,-1.0001414868267381e-9,0.002808847262739549,7.101610708252468e-6,-7.196587372359342e-10,0.0028092805508106752,6.9632211202788204e-6,-5.236849754708002e-10,0.0028097620700029556,6.9179843415002716e-6,-4.5813084509820613e-10,0.0028102506436204987,6.977109497128568e-6,-5.3909443895529e-10,0.002810706875116468,7.1318269763759485e-6,-7.546337294862254e-10,0.002811099653827845,7.357649721019065e-6,-1.0705937383009498e-9,0.0028114103186717213,7.620360090645017e-6,-1.4389400470211245e-9,0.0028116342841793644,7.882562522965005e-6,-1.8069960493090511e-9,0.002811780336556491,8.109700436176797e-6,-2.1259981185286337e-9,0.0028118681577567702,8.274759500587497e-6,-2.3578054290919355e-9,0.002811924804212133,8.361260065829955e-6,-2.479149299892737e-9,0.002811980892546883,8.36454527445245e-6,-2.4834224476780367e-9,0.0028120670235339054,8.291786877210306e-6,-2.380638941437992e-9,0.002812210545938763,8.161235186498023e-6,-2.196355734372293e-9,0.0028124324269317093,8.000947582996757e-6,-1.9699141477060387e-9,0.0028127438794841287,7.846806856187975e-6,-1.7517213264542863e-9,0.002813142552806622,7.739137129470781e-6,-1.5985536553676695e-9,0.002813608808015108,7.716755992795095e-6,-1.5652027889490953e-9,0.002814103934259319,7.807540942446503e-6,-1.6911479779159391e-9,0.0028145735374341036,8.016337002635303e-6,-1.9834359406417603e-9,0.0028149593679730016,8.31455967856922e-6,-2.4019489267911616e-9,0.0028152192752681693,8.639495206008205e-6,-2.858393347499628e-9,0.002815347491924279,8.910155826623826e-6,-3.238690313459153e-9,0.0028153820992645705,9.056877288906372e-6,-3.444739279219633e-9,0.0028153917225959865,9.049565373279847e-6,-3.434183721829044e-9,0.0028154478006963196,8.907688181128402e-6,-3.234368005566589e-9,0.0028155987912163055,8.687766600877536e-6,-2.924641731063571e-9,0.002815858796138938,8.458997654451106e-6,-2.6021037702235526e-9,0.0028162112125574854,8.281283974367032e-6,-2.3508457347741356e-9,0.002816620244870729,8.193045999255578e-6,-2.2249439851131193e-9,0.002817043196425516,8.208464494140208e-6,-2.2446042949535775e-9,0.0028174399451113383,8.320583317078408e-6,-2.4004250119473305e-9,0.0028177788955663485,8.506869283546043e-6,-2.661052702041974e-9,0.0028180401266746525,8.735196722855205e-6,-2.9814634943747566e-9,0.002818216618208338,8.969546300902432e-6,-3.3109360361838935e-9,0.0028183139820533165,9.175233421802618e-6,-3.600466281728827e-9,0.0028183488727125663,9.323413400084446e-6,-3.809217986798757e-9,0.0028183463049050498,9.39458305470024e-6,-3.90954465122841e-9,0.0028183361606477814,9.380837778898787e-6,-3.890194719106599e-9,0.002818349263122649,9.286671155840795e-6,-3.757406772881838e-9,0.002818413492033781,9.128333531433483e-6,-3.53396419516556e-9,0.0028185502773691137,8.932029054209705e-6,-3.2566550844126667e-9,0.0028187715560268277,8.731181934898563e-6,-2.972477812164968e-9,0.0028190771735186674,8.562773878565448e-6,-2.7335615331514525e-9,0.002819452811212173,8.462515809163019e-6,-2.5904087552382515e-9,0.0028198689659859892,8.458399189389392e-6,-2.5827732791303527e-9,0.0028202823760493027,8.562461789260582e-6,-2.7279409911836136e-9,0.0028206420530898016,8.76203294867925e-6,-3.0082465413739715e-9,0.0028209016970371353,9.01428419331315e-6,-3.3633026041725225e-9,0.0028210372630595158,9.250300643214355e-6,-3.695772409602383e-9,0.0028210625026776777,9.393515552182452e-6,-3.897503770163006e-9,0.0028210309762700552,9.388841811821506e-6,-3.890735771174717e-9,0.0028210180397079793,9.227581680220804e-6,-3.6632088806019304e-9,0.002821090430482207,8.951597895319539e-6,-3.273910330543877e-9,0.002821281364602508,8.633748034245999e-6,-2.8253997402826636e-9,0.0028215841712364,8.34816387734706e-6,-2.4219756103304343e-9,0.0028219629940235817,8.147536600047868e-6,-2.1378075495426764e-9,0.0028223698510740254,8.054819543764938e-6,-2.0053439921519466e-9,0.002822758897752516,8.06627654451556e-6,-2.0195926662397562e-9,0.0028230947143213737,8.159510301354147e-6,-2.149322407764077e-9,0.0028233554406812823,8.301852148391436e-6,-2.348744115947894e-9,0.00282353282593384,8.45708600749022e-6,-2.5668892800147934e-9,0.002823630975521782,8.590367413029983e-6,-2.754534233626674e-9,0.002823664602469181,8.671985233133684e-6,-2.869577271902303e-9,0.0028236568220320374,8.680413957217215e-6,-2.881448031847007e-9,0.002823636368151626,8.604700974308771e-6,-2.77454826352887e-9,0.00282363417253053,8.446003171394267e-6,-2.55042869198829e-9,0.0028236793809163405,8.217892940976991e-6,-2.2281801649158934e-9,0.0028237951897224314,7.945063459574405e-6,-1.8425677017566835e-9,0.0028239951055245996,7.660380146708828e-6,-1.4398777251617586e-9,0.0028242801645024245,7.40050743300998e-6,-1.0718072754261351e-9,0.0028246375107151937,7.200455492493439e-6,-7.878393942073073e-10,0.002825040666646605,7.087470503711195e-6,-6.266431600801484e-10,0.002825451877475943,7.074723084324243e-6,-6.071044899922806e-10,0.00282582713879414,7.155466286875476e-6,-7.199525343266866e-10,0.0028261246005233435,7.299190176080726e-6,-9.222045847808211e-10,0.00282631625064073,7.452589468357933e-6,-1.138486076576167e-9,0.002826400528199012,7.5487591099507736e-6,-1.2740885116638722e-9,0.002826410104662908,7.52604944408374e-6,-1.2417419852670848e-9,0.0028264072933222306,7.3519489307029926e-6,-9.95445629992879e-10,0.002826464019776748,7.0400481913062265e-6,-5.543990372405558e-10,0.0028266339859106117,6.6478080126638315e-6,2.5428477574195166e-13,0.002826932486316038,6.254009951919073e-6,5.573195548555597e-10,0.002827334926475173,5.928910433440534e-6,1.017639188279871e-9,0.0028277917797869642,5.7135131054699254E-06,1.3232757200131534e-9,0.002828248468891538,5.614983691413445e-6,1.4639603114758254e-9,0.0028286601533812237,5.614073569452187e-6,1.4666632447107474e-9,0.0028289983913868215,5.676607424183315e-6,1.379463686399024e-9,0.002829251626940915,5.763552361016194e-6,1.257411163440545e-9,0.0028294226533315623,5.8378051497912814e-6,1.1529709034080448e-9,0.002829525391442807,5.868127420486881e-6,1.1104318965864509e-9,0.002829581983388046,5.831461400637911e-6,1.162556397104102e-9,0.0028296201636700017,5.714584370675174e-6,1.3281613329217984e-9,0.0028296704970861516,5.515438234757098e-6,1.610201352537694e-9,0.0028297631021037386,5.243980536622576e-6,1.9945855887171813e-9,0.0028299236827314406,4.922012339098648e-6,2.4504737826893106e-9,0.0028301691569658544,4.581263003820374e-6,2.933023335426697e-9,0.0028305037217332307,4.259296600010102e-6,3.3891673170969797e-9,0.002830916459461489,3.993408191619676e-6,3.766190530193445e-9,0.0028313814792820546,3.8133369601973606e-6,4.021977064794002e-9,0.0028318611572783646,3.7341893056990802e-6,4.135010647324168e-9,0.0028323123871055148,3.7511839643312496e-6,4.1118687449955575e-9,0.002832695135207755,3.837639289960757e-6,3.990171251095755e-9,0.0028329821184355144,3.947374265896908e-6,3.835263147375323e-9,0.0028331678013638183,4.02244680576321e-6,3.7292680413861366e-9,0.002833273994081028,4.0063226672806816e-6,3.752376733977591e-9,0.0028333486086335536,3.8605677828823e-6,3.959124752584863e-9,0.0028334548656437477,3.5800588386143807e-6,4.356815088093346e-9,0.0028336519146150165,3.199196575199989e-6,4.896744085319297e-9,0.002833973775156948,2.7832242943678695e-6,5.486528461109836e-9,0.002834417043797699,2.4062456980927005e-6,6.021220646396547e-9,0.002834944056387233,2.1262318186002894e-6,6.418661302859258e-9,0.0028354988875670265,1.969203084860813e-6,6.641874660667108e-9,0.0028360266300474844,1.927913656213458e-6,6.70098348403756e-9,0.0028364871221820765,1.971420933258333e-6,6.639725869469694e-9,0.0028368601012207684,2.0580493155069e-6,6.517137481949485e-9,0.002837143798391918,2.146084523307919e-6,6.392404569592256e-9,0.0028373505649315713,2.200262702481213e-6,6.315634711039505e-9,0.0028375022225614853,2.194747581939334e-6,6.323580516384682e-9,0.002837626278744532,2.1141632193792574e-6,6.438118184879123e-9,0.002837752983195648,1.9539503821470446e-6,6.665710573780227e-9,0.002837912672316925,1.720635357079953e-6,6.997035491702147e-9,0.0028381327625960472,1.4319563558805509e-6,7.406851308263388e-9,0.0028384339774149996,1.1162175023410766e-6,7.85496469067567e-9,0.0028388259645027686,8.098741102245192e-7,8.289678744088075e-9,0.0028393032769971362,5.525056854996284e-7,8.654901931555912e-9,0.002839843390194472,3.791424868007549e-7,8.900980702450035e-9,0.0028404085467517684,3.1124743347196077e-7,8.997452128487504e-9,0.002840952357445899,3.4901622113740223e-7,8.943973785765355e-9,0.002841430295633725,4.68119085106208e-7,8.775000509935415e-9,0.0028418113735728568,6.229385663401742e-7,8.555251582211405e-9,0.0028420874546643236,7.562180083845292e-7,8.366042862071104e-9,0.002842277186103206,8.12928826496597e-7,8.28557717186452e-9,0.0028424229792514757,7.548341939316745e-7,8.368220742089385e-9,0.0028425812098529235,5.718152359385369e-7,8.628388634888865e-9,0.002842807562695609,2.864119988032696e-7,9.034090564959052e-9,0.0028431411958904427,-5.075784686922267e-8,9.513435790152513e-9,0.002843592795816794,-3.745954342178899e-7,9.973922781259542e-9,0.00284414136383234,-6.243541079214667e-7,1.0329162879331443e-8,0.0028447415293055118,-7.608178796241404e-7,1.0523290713005752e-8,0.0028453383289325533,-7.7516339165713e-7,1.0543619193061516e-8,0.0028458829874018483,-6.870431643594794e-7,1.0418002465363624e-8,0.002846343745861855,-5.347045473568402e-7,1.0200845400060194e-8,0.002846709393672464,-3.626758819940621e-7,9.955588339874181e-9,0.0028469868913886353,-2.1168976993434465e-7,9.740321417669294e-9,0.0028471961486281772,-1.1277953739782726e-7,9.5993194186896e-9,0.002847364587199702,-8.507667609072321e-8,9.559858106078426e-9,0.0028475227795878447,-1.357926730672906e-7,9.63217247842041e-9,0.0028477012760148397,-2.6098770439544055e-7,9.810568108142715e-9,0.0028479280799226956,-4.4634904759132186e-7,1.0074568307647262e-8,0.002848226026012085,-6.678989044547163e-7,1.038996413878128e-8,0.002848609485491815,-8.932110104100397e-7,1.0710570698878495e-8,0.0028490803883028048,-1.08421348997412e-6,1.0982211998329638e-8,0.0028496244808374053,-1.2027066912850638e-6,1.1150545368581883e-8,0.0028502098087099434,-1.2189535497820264e-6,1.117325646547346e-8,0.0028507899812964224,-1.1218694346857707e-6,1.1034558640475975e-8,0.0028513137786630493,-9.269848437980516e-7,1.0756559639854864e-8,0.0028517396184371633,-6.772541783626091e-7,1.040045521595228e-8,0.002852049745857075,-4.3383629160081065e-7,1.0053410747715433e-8,0.002852257667938162,-2.588555502582333e-7,9.80397507841194e-9,0.0028524050176591494,-1.966808876808624e-7,9.715373390453078e-9,0.002852549088431962,-2.610733914805113e-7,9.807193562515353e-9,0.002852746181827145,-4.3236107396414083e-7,1.0051389365553414e-8,0.002853036583500799,-6.643300296990387e-7,1.0382115635541902e-8,0.0028534351813685878,-8.975086395893872e-7,1.0714629219647167e-8,0.002853929365115319,-1.0745790729053187e-6,1.096719853065988e-8,0.0028544839144717562,-1.1539281212368752e-6,1.1080391616891132e-8,0.002855051068247713,-1.1181731669905117e-6,1.1029268499031812e-8,0.002855582768565016,-9.75875355579879e-7,1.0825912624788529e-8,0.0028560415652221956,-7.566392276976092e-7,1.051252610395587e-8,0.0028564073406055135,-5.018534207721013e-7,1.0148247915315251e-8,0.002856678785926064,-2.5444286344771827e-7,9.794490668368394e-9,0.002856870524742683,-5.058886026101649e-8,9.503046426891806e-9,0.002857007914873242,8.512852095070961e-8,9.30908662963937e-9,0.0028571215454132087,1.412895044493818e-7,9.22891211852966e-9,0.002857242681589101,1.1896856287060092e-7,9.260923881079643e-9,0.0028573999738171854,3.009713316077348e-8,9.38800232202608e-9,0.0028576170512156747,-1.0428600410014353e-7,9.580041432918065e-9,0.002857910332403342,-2.5568229132032263e-7,9.796312889070212e-9,0.002858286478980994,-3.900984786692505e-7,9.988259642955946e-9,0.002858739364701392,-4.712582429285285e-7,1.0104059717794627e-8,0.00285924729195101,-4.661759280679692e-7,1.0096572400747676e-8,0.002859772355326098,-3.5361998523694726e-7,9.935435750221926e-9,0.0028602647405304277,-1.3415193562808552e-7,9.621442048735044e-9,0.0028606740590430527,1.6248167838119398e-7,9.197139078236257e-9,0.0028609662384943444,4.78853899398024e-7,8.74468806781909e-9,0.002861139063409164,7.44255750862787e-7,8.365236229068475e-9,0.002861226934688806,8.984655386532225e-7,8.144871394043985e-9,0.002861290126468282,9.137233591571715e-7,8.123196247026203e-9,0.0028613933351704225,8.035260371148903e-7,8.280824203979028e-9,0.002861584483698411,6.150660520729815e-7,8.55027050948895e-9,0.0028618827041504077,4.113854839993796e-7,8.841474477305177e-9,0.0028622775767180642,2.524378755512151e-7,9.068802254899132e-9,0.0028627363987564036,1.8135003911035153e-7,9.17060221962431e-9,0.0028632149243848224,2.1781405590917407e-7,9.118624569170666e-9,0.002863668101326738,3.577669060595684e-7,8.918529212376947e-9,0.0028640588395250108,5.775725882547501e-7,8.603998240368662e-9,0.002864363874395403,8.409557603452859e-7,8.226895323903023e-9,0.002864576317683268,1.1070964706719793e-6,7.845700967819764e-9,0.0028647049562361203,1.3383042800297684e-6,7.514484405755572e-9,0.0028647709664122996,1.505912805444349e-6,7.274393180785887e-9,0.0028648031644739605,1.5936658590036488e-6,7.148753085068565e-9,0.0028648329825001757,1.5985844872876452e-6,7.141820831205116e-9,0.0028648901078107145,1.5298597346848266e-6,7.240401923975936e-9,0.0028649992237887115,1.40662889791498e-6,7.417073022953166e-9,0.002865177723667968,1.255395999935133e-6,7.63388684017037e-9,0.002865433962330402,1.1074017364182093e-6,7.84611558047985e-9,0.0028657656359532793,9.9575507730559e-7,8.006322067477023e-9,0.002866158158739561,9.517297115380463e-7,8.069644697438206e-9,0.0028665835690910722,9.99411061201828e-7,8.001485323787432e-9,0.0028670015032235038,1.1483302317519537e-6,7.788115041184415e-9,0.002867364559705957,1.3852827350377053e-6,7.448455109494122e-9,0.0028676299233594852,1.6691386030128764e-6,7.041536345565719e-9,0.0028677759678411305,1.9347439744128324e-6,6.660862146080923e-9,0.0028678167309223023,2.1103546939003207e-6,6.409323306547407e-9,0.0028678034788689843,2.144698261273195e-6,6.3603400593137696e-9,0.0028678078376921227,2.029720577821034e-6,6.525302617003996e-9,0.0028678938191672595,1.8044434865642015e-6,6.8481776203151215e-9,0.002868094666236441,1.5376263800915127e-6,7.230454856236507e-9,0.002868405913933894,1.3009574329347206e-6,7.569539411050057e-9,0.0028687938676968555,1.1474463535309566e-6,7.789602788927635e-9,0.002869210861589051,1.1019524188615657e-6,7.855057338570128e-9,0.002869609334325944,1.1622461307956396e-6,7.769013139741857e-9,0.002869951231852881,1.3057241037395412e-6,7.563711223382599e-9,0.002870212677215331,1.4976923875705954e-6,7.288744102079043e-9,0.002870385194690064,1.699062535904297e-6,7.000097817318875e-9,0.002870474725317542,1.8727935944983242e-6,6.75093165594071e-9,0.002870499135165648,1.988954290042755e-6,6.584275013804583e-9,0.00287048464138741,2.0282382639665136e-6,6.527917653518532e-9,0.0028704616140799583,1.9837809533528225e-6,6.5917562221991524E-09,0.0028704602549171655,1.8612665906276216e-6,6.767640226165102e-9,0.002870506668811975,1.6774673462495774e-6,7.031500508441279e-9,0.0028706197689758587,1.457604560662817e-6,7.34716419913411e-9,0.0028708091655566463,1.2320673332684813e-6,7.671058717135242e-9,0.0028710739127016565,1.0328358362055718e-6,7.957305852913069e-9,0.0028714019528153388,8.896734068155328e-7,8.163146833604354e-9,0.0028717702214416355,8.259448522978371e-7,8.254940922690583e-9,0.0028721457505871515,8.537612288983449e-7,8.215181934479207e-9,0.0028724887943640687,9.684630238408015e-7,8.050494120702066e-9,0.0028727594429303256,1.1436800035455436e-6,7.798780069504199e-9,0.0028729285817180555,1.3300651297795598e-6,7.531028042365649e-9,0.0028729915695690435,1.462263368762386e-6,7.341218977444032e-9,0.002872978448805743,1.4772429274966988e-6,7.3198920236120235e-9,0.002872951252863827,1.339998687991839e-6,7.517195289934864e-9,0.0028729836176172785,1.0630678713911078e-6,7.914951705548082e-9,0.0028731308183241877,7.051695488262558e-7,8.42876029911416e-9,0.0028734078884947605,3.473260311513201e-7,8.942348496380804e-9,0.0028737882087745852,6.114666054513867e-8,9.353047158655345e-9,0.002874219668384876,-1.1272126322969022e-7,9.602619303010073e-9,0.0028746456433421104,-1.6888577001482716e-7,9.683354937474298e-9,0.002875020314855133,-1.291094150016922e-7,9.626438926383505e-9,0.00287531548780091,-3.018828501717634e-8,9.484597230108128e-9,0.0028755210579180877,8.668647485398011e-8,9.31689120875924e-9,0.0028756422882183752,1.8328829012502568e-7,9.178200849892443e-9,0.002875696134402279,2.288312141503027e-7,9.112800066087184e-9,0.002875707547399061,2.025805089596482e-7,9.150562494597015e-9,0.002875705846174958,9.52630333672185e-8,9.304873938120105e-9,0.0028757210926035038,-9.052120703341189e-8,9.57200496741452e-9,0.0028757804866157105,-3.4091383411167794e-7,9.932003851136088e-9,0.002875904942563708,-6.325855214179894e-7,1.035130470799866e-8,0.0028761062305016523,-9.357358663929467e-7,1.0787070613173603e-8,0.002876385114451254,-1.2180331505464313e-6,1.1192851470911072e-8,0.002876730724811969,-1.4490859095561661e-6,1.1524975361779462e-8,0.002877121258656621,-1.6050876840491572e-6,1.174919121731711e-8,0.002877526072604426,-1.6732673197605107e-6,1.1847070930135468e-8,0.0028779092664162932,-1.6557908710847165e-6,1.1821668584018685e-8,0.0028782350578963945,-1.5726563757144414e-6,1.1701746720225946e-8,0.002878475324870978,-1.4624372605699738e-6,1.1542873713258664e-8,0.0028786189483200725,-1.3787231489666856e-6,1.1422265207849368e-8,0.002878680701003052,-1.3798468481290254e-6,1.1423915368175761e-8,0.002878704787159146,-1.5113471987390404e-6,1.1613291349036044e-8,0.002878756903957089,-1.785757177929549e-6,1.2008265758302951e-8,0.002878902862502164,-2.1705939820080316e-6,1.2561939708202041e-8,0.0028791817969540797,-2.5954920375929927e-6,1.3173007501556022e-8,0.002879589402551466,-2.9784185508799e-6,1.3723483959784089e-8,0.0028800817252932734,-3.2567032182663314e-6,1.4123284543802338e-8,0.0028805956227206074,-3.4055518723271702e-6,1.4336808076009957e-8,0.00288107208392016,-3.4376003397330977e-6,1.4382284035630344e-8,0.0028814710783001875,-3.3898579305011365e-6,1.43129954824349e-8,0.0028817755563885373,-3.3082580675083343e-6,1.4195060433588716e-8,0.002881988308033612,-3.2361154678533363e-6,1.4090836012607044e-8,0.0028821262129773463,-3.207791533507497e-6,1.4049812193983022e-8,0.0028822147082530657,-3.246215519180097e-6,1.4105033781258338e-8,0.0028822834027905776,-3.36241780936278e-6,1.4272395487930903e-8,0.002882362616150177,-3.5558741422002764e-6,1.4551103140709693e-8,0.0028824803465096684,-3.815258525621979e-6,1.4924750790070064e-8,0.002882659335415783,-4.119686711663455e-6,1.5363142882474208e-8,0.0028829141547347752,-4.440809412356523e-6,1.5825359058537653e-8,0.0028832486380844327,-4.746136382797398e-6,1.626457640078978e-8,0.0028836543274357697,-5.003595714935634e-6,1.6634632356475022e-8,0.0028841105948802857,-5.186858658952929e-6,1.6897660746955784e-8,0.0028845868380229104,-5.280659678729527e-6,1.703172244416492e-8,0.0028850468268388713,-5.285119178421869e-6,1.703703042675255e-8,0.0028854548808014517,-5.2180136555174015e-6,1.693924927655556e-8,0.00288578318588404,-5.1141539701945615e-6,1.678862920440044e-8,0.0028860192930803964,-5.021207939658294e-6,1.6653980349342108e-8,0.0028861723562649236,-4.991365507388845e-6,1.6610608238690897e-8,0.0028862757956466495,-5.06888921218822e-6,1.6722303008240677e-8,0.0028863833910300974,-5.2754810860775145e-6,1.7020219754766915e-8,0.002886556622110814,-5.598336802918629e-6,1.7485702072118628e-8,0.0028868448006271175,-5.988001271290007e-6,1.804727106737048e-8,0.0028872654738177545,-6.371171534302883e-6,1.8599132347397268e-8,0.002887795844354059,-6.675623117016277e-6,1.903710691825924e-8,0.0028883812762736244,-6.855447025490349e-6,1.9295003604406827e-8,0.0028889563468819752,-6.903610854021034e-6,1.9362747686658358e-8,0.0028894665800328696,-6.847559620219423e-6,1.9280059028761153e-8,0.0028898810668172878,-6.734011844686922e-6,1.911450684067196e-8,0.0028901940052642504,-6.612662324206851e-6,1.893795127279494e-8,0.0028904191547270935,-6.524988204859821e-6,1.881034874825922e-8,0.002890582222841485,-6.4992181867616665e-6,1.8772471855239283e-8,0.0028907142743236822,-6.549601240706169e-6,1.8844849350322546e-8,0.0028908470537224477,-6.677663335062472e-6,1.9029580088897277e-8,0.0028910098168515577,-6.87394958687946e-6,1.9312855656179486e-8,0.0028912269035187145,-7.1197167658875545e-6,1.966742957177217e-8,0.0028915154465618195,-7.388703555439692e-6,2.0055217248474415e-8,0.002891882983346302,-7.649501334948221e-6,2.0430764834169687e-8,0.002892325261621495,-7.869140909601243e-6,2.0746451553512368e-8,0.002892825069667161,-8.018140622490618e-6,2.095977025193972e-8,0.0028933531569161294,-8.0765493987099e-6,2.1042023401707183e-8,0.0028938720607829473,-8.039749741569616e-6,2.0986676926427616e-8,0.002894342905333149,-7.92219781746215e-6,2.081475472290096e-8,0.0028947341280570267,-7.757261613370963e-6,2.0574609101836252e-8,0.0028950300744023127,-7.592178937176516e-6,2.033462657209387e-8,0.0028952370056188714,-7.47855706718128e-6,2.0169463592427875e-8,0.0028953844081573035,-7.460137255342665e-6,2.0142316838205095e-8,0.00289552034348127,-7.560525475110968e-6,2.0287169809216575e-8,0.0028957008077851775,-7.774273461944861e-6,2.0595931401456922e-8,0.0028959747760086865,-8.06484752748952e-6,2.1015565228355683e-8,0.0028963687909720668,-8.37202856618837e-6,2.1458840848969644e-8,0.002896876822197008,-8.628384556733143e-6,2.1828161536226112e-8,0.002897460687328443,-8.779917072525279e-6,2.2045408873836965e-8,0.0028980621551318326,-8.802502597728348e-6,2.207573173944743e-8,0.002898621746734977,-8.706920074860234e-6,2.1934852495291796e-8,0.0028990957821008693,-8.531279911183452e-6,2.1678125082780306e-8,0.002899465167343782,-8.326114196731398e-6,2.137891611386844e-8,0.0028997348041497496,-8.13959047569529e-6,2.110712912790612e-8,0.002899926963249216,-8.007836040779991e-6,2.091513975889782e-8,0.002900073067994656,-7.951291908204955e-6,2.0832502054918495e-8,0.002900206831484279,-7.975306429587075e-6,2.0866828269500727e-8,0.002900359629928538,-8.072622529241776e-6,2.1007425546019428e-8,0.0029005576921144888,-8.226159990315293e-6,2.1229360644075667e-8,0.0029008202589749987,-8.411462892954981e-6,2.1497037476612273e-8,0.0029011579526491515,-8.59892006014462e-6,2.176744153154923e-8,0.0029015709907129882,-8.756361710375036e-6,2.1993920303424827e-8,0.002902047505571332,-8.85279154909494e-6,2.2131593765595492e-8,0.0029025628872768883,-8.863671727157463e-6,2.2145000075912374e-8,0.0029030815052825793,-8.777345014016352e-6,2.2017385091665053e-8,0.0029035620496829224,-8.600986341434939e-6,2.175931513310784e-8,0.002903966637114285,-8.363362576374002e-6,2.141266869690318e-8,0.0029042717781266334,-8.111634884846253e-6,2.1045980547935134e-8,0.002904477372654277,-7.901280532790563e-6,2.073978444425112e-8,0.002904609628244343,-7.781372369153714e-6,2.0565217145761693e-8,0.002904715791276944,-7.780057503835996e-6,2.056294239996993e-8,0.0029048518634546975,-7.895457374774159e-6,2.0729997122619613e-8,0.0029050672122561154,-8.095212921731798e-6,2.1019213111936452e-8,0.0029053908949938285,-8.324795261790677e-6,2.1351336711916632e-8,0.002905823673533291,-8.52201545814966e-6,2.1636089845854755e-8,0.0029063379482547036,-8.63355664871243e-6,2.1796127132877224e-8,0.00290688567731947,-8.628754999473182e-6,2.178700899956975e-8,0.002907411886688896,-8.506448804640417e-6,2.1607149038605026e-8,0.002907869313118284,-8.29292031099503e-6,2.1294847433827952e-8,0.002908229337953015,-8.032291094367549e-6,2.0914343210019756e-8,0.002908486197412823,-7.773494661513888e-6,2.0536855496935417e-8,0.0029086544808403334,-7.5585686559262325e-6,2.0223523711567358e-8,0.0029087623904295403,-7.415402414785589e-6,2.001484051067057e-8,0.002908843981353781,-7.35553482324306e-6,1.9927459583560743e-8,0.002908932726752054,-7.375649943051864e-6,1.9956406208574644e-8,0.0029090572536835126,-7.460809532075294e-6,2.0079817615799907e-8,0.002909238952715364,-7.5879228762615555e-6,2.0264014865399943e-8,0.0029094906884145105,-7.728775534689363e-6,2.0467914700593435e-8,0.0029098158523242937,-7.852662044244406e-6,2.064685157630933e-8,0.002910207338650096,-7.929175550194102e-6,2.0756624253538985e-8,0.0029106466203267355,-7.931911576665453e-6,2.0758877958416994e-8,0.002911103814377557,-7.843588459108618e-6,2.062855490190973e-8,0.0029115402023730556,-7.66224497593975e-6,2.0362916420013977e-8,0.002911914696322001,-7.406730952055019e-6,1.998953139422466e-8,0.0029121945161994208,-7.118129171687856e-6,1.9568325801371748e-8,0.0029123675377467186,-6.853478439441242e-6,1.918239985768633e-8,0.002912450734123804,-6.670885447814342e-6,1.8916298524169225e-8,0.002912488859188778,-6.610394269086291e-6,1.88281387438807e-8,0.0029125417695362995,-6.679120462312963e-6,1.8928018749465943e-8,0.0029126652147423104,-6.848070988212437e-6,1.9173497757355166e-8,0.0029128935517388484,-7.061935206702308e-6,1.9483944368025575e-8,0.002913231037578079,-7.256695642236208e-6,1.9766193972595816e-8,0.0029136533209005457,-7.377571585707302e-6,1.9940619511564884e-8,0.0029141165252539614,-7.391701575272796e-6,1.9959524190801965e-8,0.0029145697689046887,-7.293322714917477e-6,1.981463990082668e-8,0.0029149673788549375,-7.1018310443380406e-6,1.953430007430907e-8,0.002915278149714961,-6.8545563898393026e-6,1.9172935518929185e-8,0.002915490151865234,-6.596725101954491e-6,1.8796465187354656e-8,0.0029156107375936115,-6.371248850546456e-6,1.846741356078346e-8,0.002915662539790091,-6.210673245514143e-6,1.8233164243708407e-8,0.0029156771594396804,-6.1327104522359935e-6,1.8119444504375368e-8,0.002915688499493966,-6.139498762978267e-6,1.812926086634637e-8,0.0029157272510905927,-6.219687203803143e-6,1.824596696099231e-8,0.0029158172217261446,-6.3520114728173305e-6,1.843850247261238e-8,0.002915973412501954,-6.5091582694995025e-6,1.8667034188020637e-8,0.0029162012640837876,-6.6612268782975755e-6,1.888798608393158e-8,0.0029164964235661433,-6.778735787311186e-6,1.9058396783844645e-8,0.002916844658644618,-6.835584702079287e-6,1.91402221340199e-8,0.0029172220097263466,-6.812552966048134e-6,1.910544630322981e-8,0.002917595884444303,-6.7017614420562816e-6,1.8942618913472558e-8,0.002917928412307093,-6.511815863831633e-6,1.8664385893287575e-8,0.00291818347875855,-6.2719153866716e-6,1.8313480562819844e-8,0.002918337682433519,-6.031490122748525e-6,1.7962147335797165e-8,0.002918392453911434,-5.8514246809711895e-6,1.7699255420367632e-8,0.0029183808220965175,-5.785913109725185e-6,1.760375851831056e-8,0.002918361694896576,-5.860827931022856e-6,1.7713146738291097e-8,0.0029184005478205227,-6.060277614749884e-6,1.8003943123245615e-8,0.0029185450818061424,-6.330635628385983e-6,1.8397723097046376e-8,0.002918808813042895,-6.6005652769916755e-6,1.8790403319492904e-8,0.002919169951357401,-6.805733183674234e-6,1.908827114831872e-8,0.0029195829508730235,-6.906435273516535e-6,1.92336174657321e-8,0.002919994648581057,-6.893430674434389e-6,1.9213166424777753e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json new file mode 100644 index 000000000..7805bb3bf --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":2000,"numberOfSamples":1000,"samples":[-0.0019226433452019043,-4.2400202047522655e-5,-4.847209139509104e-8,-0.0019224915279308452,-4.232138293995991e-5,-4.839917575682174e-8,-0.0019223575599970867,-4.2339533342532786e-5,-4.841941987929699e-8,-0.0019221925201880694,-4.2455757141232014e-5,-4.853500256368106e-8,-0.0019219535221161883,-4.264378690983704e-5,-4.87214377132331e-8,-0.0019216173050324704,-4.285653639574512e-5,-4.893368444013015e-8,-0.0019211878632388768,-4.304035090341533e-5,-4.911986351109583e-8,-0.0019206944269591652,-4.3151566455827686e-5,-4.923733483565604e-8,-0.001920180782153211,-4.316840557061996e-5,-4.9264336921476375e-8,-0.0019196912154135558,-4.3093903838697776e-5,-4.920299044056076e-8,-0.001919259170950511,-4.2950548434361e-5,-4.9074301884897993e-8,-0.0019189019210674083,-4.277089886837732e-5,-4.8909249976046343e-8,-0.0019186208521778832,-4.258868047478004e-5,-4.8740241599705884e-8,-0.001918404926768647,-4.243272605567538e-5,-4.859521792579728e-8,-0.0019182349450095773,-4.2323928794774185e-5,-4.849461482060666e-8,-0.0019180872700253946,-4.2274266862589164E-05,-4.8450338629402915e-8,-0.001917936666180632,-4.228680533004299e-5,-4.846574052979398e-8,-0.00191775854316843,-4.2355896173164964e-5,-4.8535824807684226e-8,-0.0019175311877270766,-4.246735024004276e-5,-4.864742159638906e-8,-0.0019172384671460499,-4.25989290061144e-5,-4.877961167038227e-8,-0.0019168730864799963,-4.2721876682799584e-5,-4.890508625070886e-8,-0.0019164398837302117,-4.280432151427329e-5,-4.8993279677066866e-8,-0.0019159579014177714,-4.281706315274191e-5,-4.901583883335078e-8,-0.0019154594243000278,-4.27412144250086e-5,-4.8953968414289994e-8,-0.001914984557283099,-4.2575562469439085e-5,-4.880561552483321e-8,-0.0019145716125768752,-4.234039279521026e-5,-4.858934382627422e-8,-0.0019142459086730812,-4.207501807745824e-5,-4.834220694952108e-8,-0.0019140111182697102,-4.1828569489815494e-5,-4.811113500434928e-8,-0.0019138468399848853,-4.1646650455964184e-5,-4.794024685992306e-8,-0.0019137136475314569,-4.155842585264431e-5,-4.785840090516636e-8,-0.0019135639168575628,-4.156847538008292e-5,-4.787112479174571e-8,-0.001913354878178476,-4.165575436672902e-5,-4.795925785880041e-8,-0.001913060039736298,-4.1779660100407035e-5,-4.808445425303678e-8,-0.0019126758326174886,-4.189128905126362e-5,-4.8199834042895305e-8,-0.0019122216639617473,-4.194655693717889e-5,-4.8262624541360104e-8,-0.0019117335388331718,-4.191721880810053e-5,-4.8244930247959284e-8,-0.0019112535774869718,-4.17965282482666e-5,-4.8139407883790543e-8,-0.0019108191058004997,-4.159831661316574e-5,-4.795859671838348e-8,-0.001910454761111615,-4.13507805095086e-5,-4.7729094163578805e-8,-0.0019101693588310655,-4.108797784158734e-5,-4.74834365018481e-8,-0.0019099571113809235,-4.084210928294797e-5,-4.725264424568893e-8,-0.0019098014051956349,-4.06383521782112e-5,-4.706116300989979e-8,-0.001909679232807439,-4.049244367589526e-5,-4.6924445600308274e-8,-0.0019095650792493577,-4.041027304587661e-5,-4.684851156054176e-8,-0.0019094338706790138,-4.038850509596943e-5,-4.6830551880131895e-8,-0.0019092631960406178,-4.041545998091156e-5,-4.685979719885473e-8,-0.0019090353342274217,-4.0471961726856714e-5,-4.691831881589462e-8,-0.0019087395911655302,-4.053242839868951e-5,-4.698199191766588e-8,-0.0019083750969175394,-4.0566889485238066e-5,-4.7022295836454817e-8,-0.0019079535950202848,-4.05448090409642e-5,-4.7009857068801336e-8,-0.0019075008929219535,-4.0441352326518995e-5,-4.692041592595363e-8,-0.0019070548602137859,-4.024557340002766e-5,-4.674274417153859e-8,-0.0019066581194424014,-3.996789525520936e-5,-4.648596905336088e-8,-0.0019063458229643833,-3.964246667720178e-5,-4.618202616974119e-8,-0.001906132593687367,-3.932066250072738e-5,-4.5879631296205274e-8,-0.001906005112413036,-3.9056140911694693e-5,-4.563013841888741e-8,-0.0019059250849624966,-3.888725831245831e-5,-4.547077730150599e-8,-0.0019058418160187416,-3.882488208844757e-5,-4.541289156609024e-8,-0.0019057084893034362,-3.885058262649113e-5,-4.5439933455113804e-8,-0.0019054953071705263,-3.892448678948119e-5,-4.551462448108332e-8,-0.0019051956015066044,-3.899818092129441e-5,-4.559102248754266e-8,-0.001904824751066378,-3.902764552633575e-5,-4.562680789434229e-8,-0.0019044139453100216,-3.898286178877979e-5,-4.5592592314242095e-8,-0.0019040014133682513,-3.8852641286461894e-5,-4.547679044559279e-8,-0.0019036234930003598,-3.864464423892581e-5,-4.5285911009026024e-8,-0.0019033074182967,-3.838144973804248e-5,-4.504099501526467e-8,-0.0019030670807785748,-3.809414814477403e-5,-4.477156044224583e-8,-0.0019029021776647626,-3.7815292683842436e-5,-4.4508817510060506e-8,-0.001902800227035411,-3.757290803529455e-5,-4.427982585191298e-8,-0.0019027403062597105,-3.738655521525043e-5,-4.410361508352597e-8,-0.0019026972766109718,-3.726562021454014e-5,-4.3989482282936625e-8,-0.0019026455605967178,-3.720939282853564e-5,-4.393706825168861e-8,-0.001902562049494492,-3.720819681311018e-5,-4.393747898583925e-8,-0.0019024282429587474,-3.7244887169539354e-5,-4.397474157144386e-8,-0.0019022320167928473,-3.7296417780327447e-5,-4.402726172840666e-8,-0.0019019694121183246,-3.733563521997301e-5,-4.406942025345132e-8,-0.0019016466101295054,-3.7333817380047615e-5,-4.4073850286943826e-8,-0.001901281721675244,-3.72647279533573e-5,-4.401521158739995e-8,-0.0019009051492186858,-3.7110772537172744e-5,-4.387608872624823e-8,-0.0019005564761927897,-3.687070357499274e-5,-4.365449081610721e-8,-0.0019002760006965934,-3.656614621766662e-5,-4.3370288285066725e-8,-0.0019000913323042824,-3.624205466668279e-5,-4.306583828633659e-8,-0.0019000039601944792,-3.5956706816941076e-5,-4.279656932567122e-8,-0.0018999840816792122,-3.576226105855051e-5,-4.261250079410351e-8,-0.0018999792883793371,-3.568461104514584e-5,-4.253901137884262e-8,-0.001899933981398471,-3.5713853399087564e-5,-4.2567602344540055e-8,-0.0018998090711157681,-3.581022732657273e-5,-4.266128735242672e-8,-0.0018995924498515157,-3.5920529128532807E-05,-4.27699363285063e-8,-0.0018992979805863262,-3.599552540735251e-5,-4.284667515898346e-8,-0.001898956996465333,-3.60016505232314e-5,-4.2859033641491364e-8,-0.0018986077115788766,-3.5925404995038095e-5,-4.2793327231141533e-8,-0.0018982861274868695,-3.5772115322624845e-5,-4.2653762704726326e-8,-0.0018980197803509253,-3.556151123416992e-5,-4.245848237196928e-8,-0.0018978243192027849,-3.532201505409536e-5,-4.2234258129154944e-8,-0.0018977025183165013,-3.5084842908056075e-5,-4.201085903922587e-8,-0.001897645338891351,-3.487865622253372e-5,-4.181584089370757e-8,-0.001897634548299051,-3.472539749417785e-5,-4.1670438822720854e-8,-0.0018976462592206278,-3.4637684651986404E-05,-4.158699002545304e-8,-0.0018976547528813345,-3.461783260192269e-5,-4.156798431104482e-8,-0.0018976360025567379,-3.465835456450116e-5,-4.160658512785339e-8,-0.0018975704668702292,-3.474353699435762e-5,-4.168818028849286e-8,-0.0018974450856599756,-3.485154582856132e-5,-4.179238643199875e-8,-0.0018972547032642363,-3.4956750270050015e-5,-4.189517808310863e-8,-0.0018970031462578617,-3.5032293373468896e-5,-4.1971187462921197e-8,-0.001896704041121835,-3.5053177068163955e-5,-4.199649895495414e-8,-0.0018963811064912409,-3.500033872352196e-5,-4.195247884233675e-8,-0.0018960669388229457,-3.486606242620335e-5,-4.183101890714069e-8,-0.0018957986732221059,-3.466005594878666e-5,-4.1640536726904226e-8,-0.0018956091571617987,-3.441367338006517e-5,-4.141024300465335e-8,-0.0018955143084655717,-3.417789714991304e-5,-4.11883959487616e-8,-0.0018955015199407235,-3.401103934461799e-5,-4.103064766105313e-8,-0.0018955276091062383,-3.395751831846302e-5,-4.097979506922786e-8,-0.0018955320612609062,-3.4027724788744977e-5,-4.104650552871127e-8,-0.001895460925824634,-3.419213691026499e-5,-4.120354608540807e-8,-0.0018952876637236959,-3.439431347479264e-5,-4.139792350116541e-8,-0.0018950194973305701,-3.4574094187676726e-5,-4.157273141268476e-8,-0.00189468901820827,-3.468727701743215e-5,-4.168573954249668e-8,-0.0018943393648524587,-3.471417304124221e-5,-4.171758103848185e-8,-0.001894011175966523,-3.4658126432902484e-5,-4.1670568510380554e-8,-0.0018937347654549707,-3.4538913747532676e-5,-4.156270803527193e-8,-0.0018935271586108895,-3.438520384909261e-5,-4.1420753571334326e-8,-0.0018933922404869188,-3.4228171385826936e-5,-4.127420869753851e-8,-0.0018933224519850319,-3.409667569558539e-5,-4.115067186901395e-8,-0.001893301244193991,-3.40137190510597e-5,-4.10723266568858e-8,-0.0018933060255165923,-3.399399788202456e-5,-4.105348708812609e-8,-0.0018933114133081418,-3.404253904550354e-5,-4.109924608197351e-8,-0.0018932925837213562,-3.415443233452324e-5,-4.120524021833533e-8,-0.0018932284621856921,-3.431570348176952e-5,-4.135853030487643e-8,-0.001893104383091029,-3.4505267334039883e-5,-4.1539480078514925e-8,-0.00189291393259836,-3.469764551964496e-5,-4.172428673891212e-8,-0.0018926599383916741,-3.486610463956082e-5,-4.188783776156979e-8,-0.0018923546511316431,-3.498605241766292e-5,-4.2006785198344876e-8,-0.001892019101621626,-3.5038631408074926e-5,-4.206286015466167e-8,-0.0018916814855736094,-3.5014534367428806e-5,-4.204652314564249e-8,-0.001891374040852943,-3.491799599962725e-5,-4.196092987201902e-8,-0.0018911275262606326,-3.477018738663742e-5,-4.182542386637248e-8,-0.0018909628356181614,-3.460994197225293e-5,-4.167647877700423e-8,-0.0018908809794151223,-3.448870510773402e-5,-4.1563025636714426e-8,-0.001890855680381783,-3.4457266426274074e-5,-4.1533801407386716e-8,-0.0018908353879217353,-3.454621539121781e-5,-4.1618610494880996e-8,-0.0018907590601062614,-3.474930510512576e-5,-4.1812322746267864e-8,-0.0018905806559135173,-3.502183484605819e-5,-4.2073175486873276e-8,-0.0018902883688857062,-3.529801938551741e-5,-4.233914044230188e-8,-0.0018899068551920142,-3.551742428610809e-5,-4.255290749642152e-8,-0.001889483249018912,-3.564481602849056e-5,-4.268065997382881e-8,-0.0018890679245541686,-3.567523527632135e-5,-4.2716955210695495e-8,-0.00188870032072965,-3.562727788606181e-5,-4.267856906938492e-8,-0.0018884030745074487,-3.5532202829357725e-5,-4.2594437460528625e-8,-0.0018881823723488097,-3.54243921208098e-5,-4.2496795451858114e-8,-0.0018880312102406572,-3.533504994855418e-5,-4.2415230301185514e-8,-0.0018879332139387782,-3.5288747014991394e-5,-4.237330143238159e-8,-0.0018878660597741292,-3.5301680267534746e-5,-4.23867434249854e-8,-0.001887804493950075,-3.5380813257388804e-5,-4.246254511061698e-8,-0.0018877231921547025,-3.552361030820859e-5,-4.259866804167272e-8,-0.0018875996014664324,-3.5718391160070784e-5,-4.278440830777563e-8,-0.0018874167566322304,-3.594551788242534e-5,-4.300154835611885e-8,-0.0018871657927251448,-3.617965687985636e-5,-4.322647911791066e-8,-0.0018868476636197298,-3.639308212496223e-5,-4.3433238917490384e-8,-0.0018864736576865142,-3.655967876258171e-5,-4.359717299143751e-8,-0.0018860644895497603,-3.66591992046944e-5,-4.369885112248462e-8,-0.0018856478855353213,-3.668124668546799e-5,-4.37278181581545e-8,-0.0018852547440176993,-3.6628421846668554e-5,-4.3685686879638724e-8,-0.0018849140165977931,-3.651813115392309e-5,-4.358808695279573e-8,-0.0018846464338938206,-3.638236555382138e-5,-4.346473580791103e-8,-0.0018844576056432885,-3.6264235942699986e-5,-4.3356365793623564e-8,-0.0018843321784880178,-3.6209913884206997e-5,-4.3307130103906174e-8,-0.0018842322632395324,-3.625576306513159e-5,-4.335226126403655e-8,-0.0018841040436168481,-3.641349949400654e-5,-4.350374571050373e-8,-0.0018838940566287233,-3.6660400894427665e-5,-4.374080127460915e-8,-0.001883570085252579,-3.694276386559895e-5,-4.401301964778491e-8,-0.001883135475562002,-3.7194520085842316e-5,-4.425796870583932e-8,-0.001882627578444282,-3.73621475032825e-5,-4.442477583414205e-8,-0.0018821014403124572,-3.742201299485457e-5,-4.4490542846202025e-8,-0.001881609313986513,-3.7382507458315104e-5,-4.4462439215216833e-8,-0.0018811865907120172,-3.7274116019286886e-5,-4.436849914685254e-8,-0.001880847632416261,-3.713591350573811e-5,-4.424508395808057e-8,-0.00188058871037337,-3.7004918805228556e-5,-4.4126962304448526e-8,-0.0018803936614843618,-3.691021781204701e-5,-4.4041748300567786e-8,-0.0018802392951189633,-3.6870851790922326e-5,-4.400778710220607e-8,-0.0018800994849178696,-3.68957089255605e-5,-4.40339130327419e-8,-0.0018799481169941405,-3.698411204251374e-5,-4.411991825255021e-8,-0.0018797614670353787,-3.7126553405316096e-5,-4.425722892864331e-8,-0.0018795204776576248,-3.730559347706619e-5,-4.442976975442706e-8,-0.0018792131464299988,-3.749729428555327e-5,-4.46153152223929e-8,-0.0018788368365865878,-3.7673694011914794e-5,-4.4787772369335294e-8,-0.0018783998781203336,-3.780658890837698e-5,-4.492065092723705e-8,-0.0018779216417479986,-3.787236867220032e-5,-4.4991520603290696e-8,-0.0018774304478634798,-3.785712894848209e-5,-4.4986782858554793e-8,-0.001876959132956837,-3.776087580238688e-5,-4.490568783170876e-8,-0.001876538772816988,-3.759950843431477e-5,-4.476237298058196e-8,-0.0018761917084975216,-3.740363503756282e-5,-4.458499652618009e-8,-0.0018759253154816227,-3.721393836510612e-5,-4.441161416080866e-8,-0.0018757279816746558,-3.7073377257336396e-5,-4.4282962063134714e-8,-0.0018755687920489152,-3.701708377818567e-5,-4.4232881827984826e-8,-0.0018754023218197238,-3.706175871807319e-5,-4.427809041286009e-8,-0.0018751791516401983,-3.71976903316632e-5,-4.4410338519050925e-8,-0.0018748606150037481,-3.738752598197328e-5,-4.4594994984169714e-8,-0.0018744330348925565,-3.7574982787928245E-05,-4.47791613026569e-8,-0.0018739145177022712,-3.770239276914684e-5,-4.490826020461936e-8,-0.0018733495373167643,-3.773009490362128e-5,-4.4944415378813574e-8,-0.0018727931908080317,-3.764831441568e-5,-4.487773977743384e-8,-0.0018722931442570632,-3.7476441825173546e-5,-4.472576455407728e-8,-0.0018718776143170825,-3.72522449686114e-5,-4.452343076403651e-8,-0.0018715526178116695,-3.701813258333055e-5,-4.431030817274317e-8,-0.0018713062231411261,-3.681055615655657e-5,-4.4120686585272034e-8,-0.001871115468151383,-3.665468354723957e-5,-4.397851191896047e-8,-0.001870952694577932,-3.6563328602725056e-5,-4.389625440586987e-8,-0.0018707900517583916,-3.653811265418476e-5,-4.3875885637797216e-8,-0.0018706023334060244,-3.6571255822349916e-5,-4.391050608580251e-8,-0.0018703688700737859,-3.664722159578986e-5,-4.398588937722728e-8,-0.0018700751930006965,-3.6744157938658e-5,-4.408184554328447e-8,-0.0018697148769254426,-3.683557666976917e-5,-4.4173775089313205e-8,-0.0018692914772034106,-3.6892936200826666e-5,-4.423502611041501e-8,-0.0018688199023591616,-3.688965083963331e-5,-4.424057092448585e-8,-0.0018683261082645549,-3.680648604854699e-5,-4.4172010900809014e-8,-0.0018678439684996118,-3.663736658049673e-5,-4.4023038613393244e-8,-0.0018674088734324848,-3.639364723333976e-5,-4.3803546879327065e-8,-0.0018670490319146785,-3.610454803253589e-5,-4.354021989210011e-8,-0.001866776960604691,-3.581233195531623e-5,-4.327223113044107e-8,-0.0018665842545617494,-3.556274227869284e-5,-4.304246095848443e-8,-0.0018664419014308188,-3.539322985208859e-5,-4.2886518844144926e-8,-0.001866306540510951,-3.532250177755452e-5,-4.282282625286369e-8,-0.0018661311596336301,-3.5344543323723834e-5,-4.284673828172474e-8,-0.0018658774885188531,-3.542898898557433e-5,-4.293057236042494e-8,-0.0018655268253949977,-3.55281941668765e-5,-4.303001094315354e-8,-0.0018650860333417425,-3.55896847358241e-5,-4.309572055327366e-8,-0.0018645862558132557,-3.557072469934887e-5,-4.3087114771064386e-8,-0.001864074064290464,-3.54502290003869e-5,-4.298370377047688e-8,-0.0018635978679334747,-3.523359331224885e-5,-4.278980205390345e-8,-0.0018631947076426666,-3.494883476042089e-5,-4.2531058883068645e-8,-0.0018628822307316867,-3.4636347734627516E-05,-4.224496475448857e-8,-0.0018626577466252,-3.433705755884229e-5,-4.196979779298566e-8,-0.0018625028468491243,-3.408334448344101e-5,-4.173608792809358e-8,-0.0018623903292806535,-3.389462368841906e-5,-4.1562378749819724e-8,-0.001862290600784725,-3.377697613200107e-5,-4.145477037782527e-8,-0.0018621762300559555,-3.3725088096835355e-5,-4.14086669723388e-8,-0.0018620246347852986,-3.372488473601601e-5,-4.141123207304418e-8,-0.0018618195632346566,-3.375593156589706e-5,-4.1443656121148575e-8,-0.0018615521548540242,-3.3793432453618705e-5,-4.148302730689643e-8,-0.001861222100187459,-3.3810221048498295E-05,-4.15041470998425e-8,-0.0018608389284970092,-3.377941053241642e-5,-4.148192086511341e-8,-0.0018604228570434176,-3.367833230390359e-5,-4.139496124109246e-8,-0.0018600040268228783,-3.3493942425028966e-5,-4.123062094176194e-8,-0.001859618642548962,-3.322877352067173e-5,-4.0990619843655576e-8,-0.0018593011806838898,-3.290498445207031e-5,-4.0694967467908326e-8,-0.001859073836432133,-3.256319848003421e-5,-4.038105550600808e-8,-0.0018589370096645738,-3.225400787141628e-5,-4.0095898376829484e-8,-0.0018588658572420299,-3.202355089014602e-5,-3.988278237900221e-8,-0.001858815953690681,-3.1898535195761845e-5,-3.9767279252543205e-8,-0.0018587365322608792,-3.187731481624273e-5,-3.974875641256137e-8,-0.001858585847420525,-3.193072891426777e-5,-3.9800881931187754e-8,-0.0018583427276889898,-3.201157846011818e-5,-3.988018363222736e-8,-0.001858011024484624,-3.206838339685549e-5,-3.993871620605644e-8,-0.0018576168661056972,-3.2058722129593e-5,-3.993651170976707e-8,-0.001857200628294303,-3.1958785793748546e-5,-3.98506487342928e-8,-0.0018568063178679155,-3.1767390735336565e-5,-3.9679225404044e-8,-0.0018564711830394505,-3.150417991339459e-5,-3.943989843936122e-8,-0.0018562180244630548,-3.120309508365586e-5,-3.916393604405171e-8,-0.001856051832860989,-3.0903287984785486e-5,-3.888777991719524e-8,-0.0018559610387409902,-3.0640165715613776e-5,-3.864464037772421e-8,-0.0018559222165318323,-3.043888182499085e-5,-3.845831450517588e-8,-0.0018559062367179708,-3.031135180046263e-5,-3.8340287099323454e-8,-0.0018558839785556914,-3.025648674119293e-5,-3.828987583339211e-8,-0.0018558305005729916,-3.0262498510445098e-5,-3.829637141557298e-8,-0.0018557274688207667,-3.030998413607464e-5,-3.8341946180221575e-8,-0.0018555642923261315,-3.0374874455143256e-5,-3.8404431294548646e-8,-0.0018553386335638984,-3.043096245585696e-5,-3.8459652833342595e-8,-0.0018550567897867762,-3.0452262426219995e-5,-3.8483550463237314e-8,-0.0018547340635318174,-3.041572528206477e-5,-3.8454603062521525e-8,-0.0018543947164707576,-3.03048875961989e-5,-3.835716288178646e-8,-0.0018540704590361671,-3.0114692323656852e-5,-3.81859702743685e-8,-0.0018537960249984855,-2.985666954648834e-5,-3.79511015108531e-8,-0.0018536008786521339,-2.9562027461414482e-5,-3.768102528692731e-8,-0.0018534981424192035,-2.927893614320846e-5,-3.742024332911934e-8,-0.0018534751696137296,-2.9061233360087007e-5,-3.72188887172703e-8,-0.0018534923481789171,-2.8950357584252507e-5,-3.711593484750272e-8,-0.0018534940550578869,-2.8958436077817732e-5,-3.7123378482837e-8,-0.0018534282008300274,-2.9062277323979435e-5,-3.722046668883958e-8,-0.0018532645332598092,-2.921211788923309e-5,-3.736159207290112e-8,-0.0018530028720135114,-2.934986972526837e-5,-3.7493050320642694e-8,-0.0018526694542170326,-2.942727873570747e-5,-3.756982425163037e-8,-0.0018523058642196187,-2.9417150023504876e-5,-3.7566073539067835e-8,-0.0018519564866905035,-2.9316192868627697e-5,-3.7477965536880444e-8,-0.0018516584089416203,-2.9141557732680905e-5,-3.7320700414486564e-8,-0.001851435208412855,-2.8923992161479002e-5,-3.712235494419344e-8,-0.001851294541339165,-2.869997092993335e-5,-3.691666372244825e-8,-0.0018512288972952473,-2.850431556199019e-5,-3.673612972502268e-8,-0.0018512187605911334,-2.8364293030248146e-5,-3.6606422818222735e-8,-0.0018512372743969517,-2.8295880091963878e-5,-3.6542771387623024e-8,-0.001851255373367241,-2.830245486957463e-5,-3.654865101402205e-8,-0.0018512464347500161,-2.837567990696616e-5,-3.661658029509977e-8,-0.0018511897654824728,-2.849797616767571e-5,-3.6730452314410044e-8,-0.0018510726455833026,-2.864577894127868e-5,-3.6868605111867225e-8,-0.0018508911239511774,-2.879283048085962e-5,-3.700688885749968e-8,-0.0018506500169525825,-2.891316386992196e-5,-3.712138235946777e-8,-0.0018503624659893852,-2.8983841434482034e-5,-3.719083313132091e-8,-0.001850049192722774,-2.8987717253845237e-5,-3.719912582085492e-8,-0.00184973724683297,-2.8916604783197052e-5,-3.7138199915807674e-8,-0.0018494574590516221,-2.877500685094965e-5,-3.7011601488886906e-8,-0.001849239457271444,-2.8583618727700412e-5,-3.6837917133073514e-8,-0.001849103637120204,-2.8380420558935783e-5,-3.665199142573758e-8,-0.0018490512556514666,-2.8216113176951286e-5,-3.650082802289004e-8,-0.0018490568923369543,-2.814133170477168e-5,-3.643173901900574e-8,-0.001849070044366471,-2.8187498919253204e-5,-3.6474479853762786e-8,-0.0018490301023305032,-2.835027238269989e-5,-3.662573037762882e-8,-0.0018488899067574623,-2.8587217166636767e-5,-3.6846766146306595e-8,-0.0018486348257891318,-2.883361606393152e-5,-3.707797543919425e-8,-0.0018482863056600417,-2.902755950667316e-5,-3.726201459105288e-8,-0.0018478899852914469,-2.9130064005063796e-5,-3.736241363816512e-8,-0.0018474976562760789,-2.91321131307372e-5,-3.737016828147584e-8,-0.0018471524750899352,-2.905016180405401e-5,-3.729976063286029e-8,-0.0018468812786227445,-2.8916268553225196e-5,-3.718025357565311e-8,-0.0018466931172711491,-2.876806315238052e-5,-3.7046173746412294e-8,-0.0018465815057894385,-2.8640983775258864e-5,-3.6930365429741035e-8,-0.00184652829693714,-2.8563136245366806e-5,-3.685914654239289e-8,-0.0018465080445311866,-2.8552306292304803e-5,-3.6849396405970724e-8,-0.0018464923711327586,-2.8614698711177184e-5,-3.69072585309602e-8,-0.0018464540475209713,-2.874515858709884e-5,-3.702828145510411e-8,-0.001846370522506678,-2.8928669467886978e-5,-3.7198811661589566e-8,-0.001846226627091265,-2.9142919199792575e-5,-3.739840984195331e-8,-0.0018460161773210895,-2.936159596526058e-5,-3.7602928735736206e-8,-0.0018457424092981416,-2.9557907441157696e-5,-3.7787745528739335e-8,-0.0018454174436069045,-2.9707932709951874e-5,-3.793078679950588e-8,-0.001845060979936064,-2.9793682517744152e-5,-3.8015266553066575e-8,-0.0018446983139210466,-2.9805837685586976e-5,-3.803216933965162e-8,-0.001844357663506958,-2.974619611849742e-5,-3.7982560537325245e-8,-0.0018440664544479193,-2.9629797711193566e-5,-3.7879707314877856e-8,-0.001843845950446449,-2.948601531108566e-5,-3.775030341662861e-8,-0.0018437041818345754,-2.9356851092842417e-5,-3.763307774716062e-8,-0.0018436286704259478,-2.929018395984869e-5,-3.7572610524337075e-8,-0.0018435826591715672,-2.9326650546160026e-5,-3.7607099199983846e-8,-0.001843510243611047,-2.9482479522100277e-5,-3.7752270839027916e-8,-0.0018433534878047207,-2.9736569576451163e-5,-3.798922207122916e-8,-0.001843076228620517,-3.003258999787417e-5,-3.826624809927366e-8,-0.0018426810050820315,-3.0299279226205748e-5,-3.851758748645876e-8,-0.0018422077376924746,-3.0478508169391107e-5,-3.8689353289091895e-8,-0.0018417156239789582,-3.054470317700498e-5,-3.875746335719129e-8,-0.0018412606553196052,-3.050710730095082e-5,-3.872977574482587e-8,-0.001840880483325183,-3.0398882257686496e-5,-3.8636192256924036e-8,-0.001840590004125507,-3.026250677128237e-5,-3.851540126764517e-8,-0.0018403844397698059,-3.013820957242196e-5,-3.840435285169504e-8,-0.001840245361005513,-3.0057347763451893e-5,-3.8332152701456324e-8,-0.0018401466765782936,-3.0039751280580974e-5,-3.831749547487945e-8,-0.0018400595016326148,-3.0093363332831677e-5,-3.836817784862127e-8,-0.0018399559497764423,-3.0215015910877106e-5,-3.848169905675189e-8,-0.001839812170196447,-3.039186553279613e-5,-3.864654273812751e-8,-0.0018396108283989022,-3.060338054950594e-5,-3.884402378562721e-8,-0.0018393430417674114,-3.082394307346604e-5,-3.905071575977295e-8,-0.001839009544828154,-3.1026114366856945e-5,-3.924146216346563e-8,-0.0018386207708631277,-3.1184328723264915e-5,-3.939273712194119e-8,-0.0018381957305413437,-3.127857148136643e-5,-3.948596451419425e-8,-0.0018377597459139795,-3.1297656724416976e-5,-3.95104860508152e-8,-0.001837341137178437,-3.1241751125251476e-5,-3.946590292406994e-8,-0.0018369670512292443,-3.112376810976386e-5,-3.9363472022820164e-8,-0.0018366586561733092,-3.096932899220622e-5,-3.922626209101001e-8,-0.0018364258708403016,-3.0814812173559905e-5,-3.9087559514838445e-8,-0.0018362621920370473,-3.070252357614279e-5,-3.8986539372919337e-8,-0.0018361412688580824,-3.067203929167175e-5,-3.896025500527251e-8,-0.0018360180816703487,-3.0748042684471684e-5,-3.903223795898209e-8,-0.0018358378502917804,-3.092774827382751e-5,-3.920064225747588e-8,-0.0018355532968053283,-3.1174550168373766e-5,-3.9432189756387474e-8,-0.0018351446756584952,-3.142525945238052e-5,-3.966879216514516e-8,-0.001834631257077125,-3.161182618802566e-5,-3.9847630332795574e-8,-0.001834065391188641,-3.168747068911088e-5,-3.992527940095902e-8,-0.0018335116541834382,-3.164236364109196e-5,-3.989214970654177e-8,-0.0018330236496004874,-3.1501495858562004e-5,-3.977056585296882e-8,-0.0018326302885483708,-3.130976247069251e-5,-3.960119517536447e-8,-0.0018323344622033428,-3.111494455177007e-5,-3.94275962437217e-8,-0.0018321196002908996,-3.095597209536023e-5,-3.928554181120305e-8,-0.0018319582888422555,-3.085789845493625e-5,-3.919836392406287e-8,-0.0018318194757880513,-3.083157342368737e-5,-3.9176511626126014e-8,-0.0018316733480543946,-3.0875483927058214e-5,-3.9219089175635253e-8,-0.0018314943794796696,-3.097812687524317e-5,-3.931593991989682e-8,-0.0018312633560748676,-3.1120334429811935e-5,-3.9449760179892773e-8,-0.001830968913688379,-3.1277592120351454e-5,-3.9598246635518696e-8,-0.0018306087634235733,-3.14226374107931e-5,-3.9736499110668715e-8,-0.0018301904168349817,-3.152864766531905e-5,-3.9839932121797345e-8,-0.0018297309265778968,-3.1573033171681355e-5,-3.988771007373838e-8,-0.0018292551760944991,-3.154139489645285e-5,-3.986633134180522e-8,-0.0018287925523648566,-3.1430926466745534e-5,-3.977274223006469e-8,-0.0018283721888019805,-3.125244172846257e-5,-3.961626454205167e-8,-0.0018280173510476312,-3.1030241019074e-5,-3.941861928815817e-8,-0.0018277399014371466,-3.079933897322065e-5,-3.921157228495376e-8,-0.0018275359237807758,-3.060002936908609e-5,-3.9032106768399976e-8,-0.0018273836315456557,-3.0470075984707517e-5,-3.891530628053033e-8,-0.0018272448509398856,-3.0435259419920423e-5,-3.8885571590877783e-8,-0.0018270713806662069,-3.0500042234658058e-5,-3.8947817158765014e-8,-0.0018268166773114957,-3.064158208297821e-5,-3.908171343754616e-8,-0.0018264509824322654,-3.081128525962225e-5,-3.924294928095106e-8,-0.0018259745066705093,-3.0946791653507584e-5,-3.937422858396294e-8,-0.001825421200068397,-3.0992294321174295e-5,-3.942401662190722e-8,-0.001824848707194268,-3.091859675203208e-5,-3.936503312287334e-8,-0.0018243181665254498,-3.0732388589482095e-5,-3.920280801715213e-8,-0.0018238741939498265,-3.047033281073113e-5,-3.897033103345112e-8,-0.0018235344222076416,-3.0182968256406758e-5,-3.871343791162342e-8,-0.0018232907112232296,-2.9917962061241705e-5,-3.8475612220985564e-8,-0.0018231175915879915,-2.9709470223528575e-5,-3.8288287874661005e-8,-0.0018229820547856707,-2.9574767415543407e-5,-3.8167680241916334e-8,-0.0018228511227224586,-2.951575072500136e-5,-3.811601209651671e-8,-0.0018226963993247997,-2.9522399260808083e-5,-3.812455102291935e-8,-0.001822496346012939,-2.9576313361484465e-5,-3.817679071516764e-8,-0.00182223736569908,-2.9653667368211555e-5,-3.82511596794088e-8,-0.001821914484007764,-2.9727713244422272e-5,-3.8323339418991535e-8,-0.0018215319226575477,-2.9771325860086927e-5,-3.836859871537784e-8,-0.0018211033649289739,-2.9760077349048065e-5,-3.8364575828414726e-8,-0.0018206513209798074,-2.967600860452736e-5,-3.82946771372016e-8,-0.001820204868578569,-2.95117106918752e-5,-3.815177651088395e-8,-0.001819795308698592,-2.9273717903851084e-5,-3.7941337848129227e-8,-0.0018194499553985499,-2.8983792765006212e-5,-3.768268339819807e-8,-0.001819185216669178,-2.867678407238349e-5,-3.74071910297524e-8,-0.0018190008974349288,-2.83945853396037e-5,-3.715294339073842e-8,-0.001818877777254797,-2.8177048843502435e-5,-3.69565401325332e-8,-0.001818779842287521,-2.8051892787703585e-5,-3.684386725138177e-8,-0.0018186613648890997,-2.8026242318695985e-5,-3.682221547238342e-8,-0.0018184777104345217,-2.8082404782524753e-5,-3.687617397457534e-8,-0.0018181975534309522,-2.8179856821560048e-5,-3.6969212144048666e-8,-0.001817813196202531,-2.8264185854983048e-5,-3.705172966271644e-8,-0.001817345167041442,-2.8281685470529075e-5,-3.707441588866618e-8,-0.0018168381018592475,-2.8195553966210703e-5,-3.7003162870434875e-8,-0.0018163479603249767,-2.799754849487948e-5,-3.6829836985857307e-8,-0.0018159250008670967,-2.770979157575244e-5,-3.657403648862273e-8,-0.0018155995956956029,-2.7375894624095573e-5,-3.6275093682421794e-8,-0.0018153764219808644,-2.704596699485922e-5,-3.5978494998850386e-8,-0.0018152377869368145,-2.6762455524996808e-5,-3.572301447864534e-8,-0.001815152477201721,-2.6551760020655958e-5,-3.553302574177351e-8,-0.0018150853173970892,-2.6422470662984083e-5,-3.541677798998169e-8,-0.0018150042988686545,-2.6368080187245047e-5,-3.5368740905128105e-8,-0.001814884542944513,-2.637140326946383e-5,-3.5373559468304656e-8,-0.0018147098501943748,-2.640883213452553e-5,-3.540992975432918e-8,-0.001814472968339351,-2.6453705314678775e-5,-3.5453704890593495e-8,-0.0018141754822484056,-2.6478914642215583e-5,-3.548029701796509e-8,-0.0018138277280354835,-2.645933668573588e-5,-3.54668779570484e-8,-0.0018134485433922909,-2.63746995002284e-5,-3.539493771542412e-8,-0.0018130641999637516,-2.6213143484268603e-5,-3.525347116797519e-8,-0.0018127056529817164,-2.5975139443379584e-5,-3.504252776569707e-8,-0.0018124034131899443,-2.5676611824827752e-5,-3.477610412804476e-8,-0.0018121801872194175,-2.534931109205454e-5,-3.448259855575883e-8,-0.0018120429840718477,-2.503646524431114e-5,-3.420100849172037e-8,-0.0018119778375527472,-2.4783230392470123e-5,-3.3972382770939356e-8,-0.001811950347330866,-2.462408751833058e-5,-3.3828419190625865e-8,-0.0018119132838824324,-2.4571574822020067e-5,-3.3781151941416513e-8,-0.0018118193692635378,-2.461097139426063e-5,-3.381793208892705e-8,-0.0018116348830005524,-2.470333459138878e-5,-3.390395510139745e-8,-0.0018113494195414132,-2.479592830408992e-5,-3.399155855798691e-8,-0.0018109788397635016,-2.483652227449304e-5,-3.403315775348767e-8,-0.0018105608775236578,-2.4787225178468724e-5,-3.399388280325552e-8,-0.001810144903993606,-2.4634019749026035e-5,-3.386038668968676e-8,-0.0018097788424705386,-2.438943653685379e-5,-3.364343809426621e-8,-0.0018094970976968308,-2.408776623021186e-5,-3.3373712923926915e-8,-0.0018093131065530167,-2.3774611485516244e-5,-3.3092397700764274e-8,-0.0018092184234519324,-2.3494490111001275e-5,-3.283995827133673e-8,-0.0018091877331322158,-2.3280593294754563e-5,-3.2646790853564697e-8,-0.0018091871161683125,-2.314939866682767e-5,-3.252822506211939e-8,-0.0018091823293289193,-2.31004611501778e-5,-3.248421726376951e-8,-0.0018091448540584615,-2.311978262620908e-5,-3.250233499343941e-8,-0.0018090550794540737,-2.3184591180723153e-5,-3.2562086291900066e-8,-0.0018089031861997175,-2.3267897328885993e-5,-3.2639095018153503e-8,-0.0018086887334329814,-2.3342085624690892e-5,-3.2708403157821664e-8,-0.0018084198247745962,-2.338158487023955e-5,-3.2746898333729124e-8,-0.0018081122968712463,-2.3365150542970265e-5,-3.273533916353727e-8,-0.001807788822855228,-2.3278370617031e-5,-3.2660558495518114e-8,-0.0018074773359588981,-2.3116713555088714e-5,-3.251818044986732e-8,-0.0018072078836895496,-2.2888860456224638e-5,-3.231565942478291e-8,-0.0018070071067168634,-2.2619145607374683e-5,-3.2074584949186564e-8,-0.0018068904090166695,-2.2346867579039005e-5,-3.18301977417072e-8,-0.001806853807850492,-2.2119984734449717e-5,-3.162581546841964e-8,-0.0018068696241016469,-2.198255341150245e-5,-3.150153125112428e-8,-0.0018068904530553504,-2.195926967130759e-5,-3.1480191546692454e-8,-0.0018068624614854115,-2.2044177423088666e-5,-3.155704270849953e-8,-0.0018067433270976935,-2.2200245280886165e-5,-3.1699156433731375e-8,-0.0018065165630427827,-2.2371032429944445e-5,-3.1855811466588946e-8,-0.0018061958896326482,-2.2498959032548624e-5,-3.197492592167717e-8,-0.0018058190557784669,-2.2542034459431462e-5,-3.201819263383411e-8,-0.0018054353226003737,-2.2483393859611878e-5,-3.196979945333175e-8,-0.001805091981515879,-2.2332389766442987e-5,-3.183757466667896e-8,-0.0018048237525921153,-2.211905907663405e-5,-3.1648156894879373e-8,-0.0018046468284378982,-2.1884874969180767e-5,-3.1438765962970895e-8,-0.0018045577965828564,-2.167257080863706e-5,-3.124804952076372e-8,-0.0018045367469031802,-2.1517256483314775e-5,-3.1108003719807276e-8,-0.0018045532547471112,-2.1440415901790588e-5,-3.103843208390343e-8,-0.0018045734964459543,-2.1447606975861767e-5,-3.1044738831155513e-8,-0.0018045667264467702,-2.1529672691860464e-5,-3.111893588046535e-8,-0.0018045098804961046,-2.1666384245823865e-5,-3.1242914374253404e-8,-0.0018043898839023068,-2.183112130503548e-5,-3.1392708760228225e-8,-0.001804203954475141,-2.1995397908962797e-5,-3.1542638797071024e-8,-0.0018039586205425583,-2.2132522471774145e-5,-3.166864148494045e-8,-0.0018036682150897336,-2.222029327998615e-5,-3.1750683255942955e-8,-0.0018033532774611,-2.2243105107731316e-5,-3.1774601732825967e-8,-0.0018030388535303287,-2.2193945397383773e-5,-3.173385130063672e-8,-0.0018027522942073136,-2.2076575061598045e-5,-3.1631467135425805e-8,-0.0018025198123736337,-2.1907738260673892e-5,-3.148213395270582e-8,-0.0018023610503111382,-2.171835234695091e-5,-3.131339673265721e-8,-0.0018022817446064101,-2.155153029171974e-5,-3.1164020013668663e-8,-0.0018022664981731129,-2.145492195250491e-5,-3.107715875834362e-8,-0.0018022761116299893,-2.1466616576633423e-5,-3.1087611729159285e-8,-0.001802254637597213,-2.1598488185100718e-5,-3.1206666940015674e-8,-0.0018021472428660756,-2.182595909351053e-5,-3.1412695010306495e-8,-0.0018019218634438376,-2.2092822584774562e-5,-3.1655360838329714e-8,-0.0018015825756897933,-2.2331161258804622e-5,-3.187351846210822e-8,-0.0018011669858702807,-2.2485932648024347e-5,-3.2017362632812046e-8,-0.0018007305205330378,-2.2531424552391003e-5,-3.20632837968358e-8,-0.0018003274466781097,-2.247396849454174e-5,-3.201639378115172e-8,-0.001799997044701253,-2.2344006761817026e-5,-3.190352915618942e-8,-0.0017997576968600084,-2.2183994777753875e-5,-3.1762527108728355e-8,-0.0017996074214415598,-2.2037129804367622e-5,-3.163218737463046e-8,-0.0017995281388526994,-2.1939134700851098e-5,-3.1544874466880096e-8,-0.001799491474118722,-2.191336925847295e-5,-3.1522014871558e-8,-0.0017994648236848451,-2.196879034163294e-5,-3.157211653547259e-8,-0.0017994169612412726,-2.210030852102367e-5,-3.1690969385098476e-8,-0.0017993225970557186,-2.2291116208268445e-5,-3.1863685374065217e-8,-0.0017991654559053219,-2.2516364846537557e-5,-3.2068017711543623e-8,-0.0017989396964144166,-2.2747470340719118e-5,-3.2278281986817246e-8,-0.001798649733945888,-2.2956364822787877e-5,-3.246922246142647e-8,-0.0017983088087218547,-2.3119105042172602e-5,-3.2619262744900355e-8,-0.0017979368481374199,-2.3218557224021916e-5,-3.271288686018867e-8,-0.001797558043108042,-2.3246284945411038e-5,-3.274229168261259e-8,-0.0017971982454755217,-2.3203905608775542e-5,-3.2708591798824984e-8,-0.0017968820442133351,-2.3104089519329166e-5,-3.2622768771998037e-8,-0.0017966291126735867,-2.297111342990777e-5,-3.250628913382254e-8,-0.0017964493540700971,-2.2840186859440642e-5,-3.239064633254201e-8,-0.001796337092370337,-2.2753871040159905e-5,-3.231424590201427e-8,-0.001796266176874397,-2.2753701692947285e-5,-3.2314867821004395e-8,-0.0017961898758915664,-2.2866622884127602e-5,-3.241733430757836e-8,-0.0017960501969663332,-2.3089920943539757e-5,-3.261975895170297e-8,-0.0017957976108034395,-2.3383568322421448e-5,-3.288650179068292e-8,-0.0017954135250510931,-2.3679171476829465e-5,-3.315617804332179e-8,-0.0017949215447578652,-2.390518557869303e-5,-3.336437672142568e-8,-0.0017943787200954949,-2.401500851776904e-5,-3.3468942402757484e-8,-0.0017938521133034476,-2.400161061140643e-5,-3.346310636110839e-8,-0.0017933953283730748,-2.3893135268437862e-5,-3.3371567284018426e-8,-0.0017930360672664986,-2.3736813868647664e-5,-3.323619106299432e-8,-0.0017927757839283627,-2.3582117106361543e-5,-3.310107169625848e-8,-0.0017925963117210405,-2.3469363688785598e-5,-3.300241303329868e-8,-0.0017924682328384592,-2.342451096539411e-5,-3.296382113706184e-8,-0.0017923581550719071,-2.345828625550179e-5,-3.299539036168371e-8,-0.001792234150133278,-2.356759742598324e-5,-3.309481410911366e-8,-0.0017920696405059335,-2.3737980155055785e-5,-3.324947345493431e-8,-0.0017918461088012336,-2.3946656287756952e-5,-3.343914759620848e-8,-0.0017915547494891267,-2.416604836192296e-5,-3.363918826601897e-8,-0.0017911970460121622,-2.4367571375549456e-5,-3.382396166819764e-8,-0.0017907841940512808,-2.4525457139788785e-5,-3.3970302096064133e-8,-0.0017903353488858134,-2.4620205356925683e-5,-3.4060599419872674e-8,-0.001789874928831574,-2.464121873006898e-5,-3.408513361013069e-8,-0.0017894293545302076,-2.458842006514815e-5,-3.404350871950484e-8,-0.001789023505241213,-2.4472837169482275e-5,-3.394520600674971e-8,-0.0017886770648342907,-2.431614883409421e-5,-3.3809267595780996e-8,-0.0017884008200234735,-2.4149141187628658e-5,-3.366304609271047e-8,-0.001788192903348495,-2.4008712245158947e-5,-3.353964297579916e-8,-0.0017880354372265181,-2.393253545893989e-5,-3.347316905691076e-8,-0.0017878931539800256,-2.3950554353910987e-5,-3.34910405981934e-8,-0.0017877167144701928,-2.4073806065351983e-5,-3.360377068735919e-8,-0.001787453569690734,-2.428392045087678e-5,-3.379534491041236e-8,-0.0017870663495322726,-2.4530220442592966e-5,-3.402051298850108e-8,-0.0017865519910194932,-2.4741563720019448e-5,-3.4215448424805376e-8,-0.0017859491906381667,-2.4852189071213217e-5,-3.4321023197333045e-8,-0.001785325958533287,-2.482869995671932e-5,-3.4307016493753474e-8,-0.0017847528767015353,-2.4681669420333632e-5,-3.418245486606978e-8,-0.0017842781208460322,-2.4456188730650273e-5,-3.3987154219619505e-8,-0.0017839168488831807,-2.4210443635923462e-5,-3.3772695142451446e-8,-0.0017836554356915608,-2.3996010205156732e-5,-3.358499104157047e-8,-0.0017834629055072672,-2.384722325415727e-5,-3.345487005540549e-8,-0.0017833022278605421,-2.377911957973221e-5,-3.33961693481918e-8,-0.0017831382257718895,-2.3790191594592873e-5,-3.340803787799357e-8,-0.0017829420119458068,-2.386664304225821e-5,-3.347858835271957e-8,-0.0017826931337199766,-2.3986439556649512e-5,-3.35884337520014e-8,-0.001782380554182279,-2.4122805007119548e-5,-3.37138034186474e-8,-0.0017820030107513522,-2.424741808773985e-5,-3.382943346932811e-8,-0.0017815688268330704,-2.4333593880854584e-5,-3.391144581214018e-8,-0.0017810949919451016,-2.435957061890063e-5,-3.3940296734933424e-8,-0.0017806052023764001,-2.4311695591746605e-5,-3.3903609380761455e-8,-0.001780126733231539,-2.4186960953258744e-5,-3.3798419210927013e-8,-0.001779686389109376,-2.3994309151659606e-5,-3.363234575116789e-8,-0.0017793060255654567,-2.3754312161234117e-5,-3.3423362014270186e-8,-0.0017789982504817423,-2.3497003448101446e-5,-3.319796437690346e-8,-0.0017787629677499328,-2.325789658218794e-5,-3.2987743056121986e-8,-0.0017785853328477087,-2.307245026259536e-5,-3.2824528494159e-8,-0.001778435693719291,-2.29692203202828e-5,-3.2734270343295896e-8,-0.0017782724447692514,-2.2962114363640616e-5,-3.2729999425653523e-8,-0.0017780489744251891,-2.304310446279494e-5,-3.2805121499466924e-8,-0.0017777252482119056,-2.3178271529330762e-5,-3.292970232577239e-8,-0.0017772823647096638,-2.331129259651724e-5,-3.305351428606098e-8,-0.0017767346083272459,-2.3377529158287416e-5,-3.311868318348257e-8,-0.001776130764697321,-2.3326480780226323e-5,-3.3079844371637935e-8,-0.0017755397912121303,-2.3142506066602418e-5,-3.292267378791187e-8,-0.001775025923089456,-2.285130228165791e-5,-3.2669641431352325e-8,-0.001774626618706956,-2.2507845107702927e-5,-3.2369284423643596e-8,-0.0017743445685003865,-2.217390512592298e-5,-3.207630409849978e-8,-0.0017741544806826274,-2.1898231682136928e-5,-3.1834061464338805e-8,-0.0017740169436090173,-2.1707118952548065e-5,-3.166620956255327e-8,-0.001773891219541728,-2.1604779152879516e-5,-3.157692307526984e-8,-0.0017737432310165142,-2.157882930216389e-5,-3.155562491937049e-8,-0.0017735489504333692,-2.1606679331330368e-5,-3.1582552828697624e-8,-0.0017732949817235678,-2.1660754250425577e-5,-3.163336707176071e-8,-0.0017729779982578978,-2.1712249139899234e-5,-3.1682516270717386e-8,-0.0017726039251191308,-2.1733947237802756e-5,-3.170578892729579e-8,-0.0017721870422029683,-2.170274238348413e-5,-3.168258293259854e-8,-0.001771748742021881,-2.160228540957275e-5,-3.1598253034946674e-8,-0.001771315436498432,-2.142574791419228e-5,-3.144654198656495e-8,-0.0017709151725227585,-2.1178148251122183e-5,-3.123163082063926e-8,-0.0017705729667818262,-2.0877318554922502e-5,-3.096901728522543e-8,-0.00177030549185305,-2.055260685325797e-5,-3.0684433448224743e-8,-0.0017701162882080364,-2.0240789383713746e-5,-3.041032430169265e-8,-0.0017699929466398218,-1.99794218315807e-5,-3.018005089313501e-8,-0.0017699074633654773,-1.9798779288104986e-5,-3.002078373264498e-8,-0.0017698202590316055,-1.971411094245867e-5,-2.994657558110185e-8,-0.0017696875886955075,-1.9720002942223983e-5,-2.9953206911113435e-8,-0.0017694714315701055,-1.9788544043428927e-5,-3.0016365819494506e-8,-0.001769150179508032,-1.9872824099373976e-5,-3.009460999645151e-8,-0.0017687273917546744,-1.9916635597634004e-5,-3.013794933369788e-8,-0.0017682349328222557,-1.986951675134688e-5,-3.0101278511672435e-8,-0.00176772710105645,-1.970328034493384e-5,-2.995916376833186e-8,-0.0017672653670454336,-1.942323674398719e-5,-2.9715881402750377e-8,-0.0017668987135009146,-1.906762066737871e-5,-2.9404951820690843e-8,-0.0017666484557888058,-1.8694185914153163e-5,-2.9077305426574343e-8,-0.0017665045683398996,-1.836037649987278e-5,-2.8783779540595175e-8,-0.0017664336822339468,-1.810670803004512e-5,-2.85604298531802e-8,-0.0017663927590512497,-1.7949525459591675e-5,-2.8422063980110166e-8,-0.0017663414629926905,-1.7882936783559632e-5,-2.8363836548011972e-8,-0.001766249541876796,-1.7885707909765793e-5,-2.8367242121714928e-8,-0.001766099266242993,-1.7928819727490756e-5,-2.8406756909275128e-8,-0.0017658847993394775,-1.798137782732972e-5,-2.8455090069843767e-8,-0.001765610393070421,-1.8014480188581894e-5,-2.8486659197502897e-8,-0.0017652885448722823,-1.800366604960887e-5,-2.8479796999216368e-8,-0.0017649384258213695,-1.7930802219111313e-5,-2.8418420896184835e-8,-0.0017645842871166185,-1.778602853787445e-5,-2.829372109660203e-8,-0.0017642532352409623,-1.7569903288050705e-5,-2.81060198076404e-8,-0.001763971759473834,-1.7295278259522374e-5,-2.786641950500421e-8,-0.0017637607807011494,-1.698782162266873e-5,-2.7597305393828584e-8,-0.0017636298282722234,-1.668378910785923e-5,-2.7330463361969477e-8,-0.0017635720325075124,-1.6424062245120354e-5,-2.7101919283812356e-8,-0.0017635623160880396,-1.624485381333525e-5,-2.6943804573923697e-8,-0.0017635607308321933,-1.6167370096356146e-5,-2.6875224575923194e-8,-0.0017635211289864948,-1.6190012162179073e-5,-2.68952735608918e-8,-0.0017634030561349838,-1.6286391210993562e-5,-2.6981120973846906e-8,-0.0017631832067511017,-1.6410496829813158e-5,-2.7092420717209323e-8,-0.001762862804611093,-1.650784066444652e-5,-2.7181070789573557e-8,-0.001762468592752757,-1.6529538541808296e-5,-2.720366625840219e-8,-0.001762046894151369,-1.6445530812446836e-5,-2.713326263374019e-8,-0.0017616519554521687,-1.6253198861825676e-5,-2.696709599279156e-8,-0.0017613315225252794,-1.5978453405918325e-5,-2.672764292807032e-8,-0.0017611140058775958,-1.5668350101802668e-5,-2.645617877953825e-8,-0.0017610016624053787,-1.5377341425857762e-5,-2.6200694380823762e-8,-0.001760972152477191,-1.5152050261090025e-5,-2.6002466768736517e-8,-0.0017609872896826445,-1.5020078162915458e-5,-2.5886132235295784e-8,-0.0017610048499390252,-1.4986153105280482e-5,-2.585618781524479e-8,-0.0017609887967856529,-1.5035267740803247e-5,-2.5899659894477047e-8,-0.0017609151979063953,-1.5139768158020223e-5,-2.5992305073980463e-8,-0.001760773716567572,-1.5266958060346903e-5,-2.610532992986437e-8,-0.0017605661687073292,-1.5385079455718696e-5,-2.6210718388494383e-8,-0.0017603038826338377,-1.5467116653328303e-5,-2.6284636330568005e-8,-0.0017600050563999715,-1.5492918931559058e-5,-2.630931543163531e-8,-0.00175969254649456,-1.5450515709074643e-5,-2.6274181953792665e-8,-0.0017593918639489119,-1.5337330423786408e-5,-2.617687582404043e-8,-0.0017591287810466108,-1.516152233340109e-5,-2.6024399594225813e-8,-0.0017589258943309788,-1.4943092225619993e-5,-2.5834108333616962e-8,-0.0017587977883399433,-1.4713698844311321e-5,-2.563361964748376e-8,-0.001758745306123578,-1.4513557060983797e-5,-2.5458186180871662e-8,-0.0017587508567577885,-1.4384033445413648e-5,-2.534426611652559e-8,-0.0017587779139626098,-1.4356303112866524e-5,-2.5319563744401592e-8,-0.0017587774818432792,-1.4439371548397277e-5,-2.5392423095802513e-8,-0.0017587014180465244,-1.461308765223457e-5,-2.5545545630735418e-8,-0.0017585182143315644,-1.4831017637906244e-5,-2.573837988454579e-8,-0.001758224300036135,-1.5033522952700285e-5,-2.5918544356983626e-8,-0.0017578456814572269,-1.5165890121277228e-5,-2.6037769834404815e-8,-0.0017574296827317477,-1.5194062164951215e-5,-2.6065783871821737e-8,-0.0017570309130902051,-1.5112670663097581e-5,-2.5997452534758276e-8,-0.001756696813994369,-1.4944139321311835e-5,-2.5852086776316284e-8,-0.0017564568402563836,-1.473071652369088e-5,-2.566653582995585e-8,-0.0017563173354597894,-1.4522642160396031e-5,-2.548486082353178e-8,-0.0017562624354948073,-1.4365851015030895e-5,-2.5347546705261553e-8,-0.0017562599735600776,-1.4292151664489295e-5,-2.5282821848690496e-8,-0.001756270345717931,-1.4313890299943314e-5,-2.5301868529854778e-8,-0.0017562557588578422,-1.4423796145213121e-5,-2.5398581829437754e-8,-0.0017561874812613571,-1.4599191257972496e-5,-2.5553204717269587e-8,-0.0017560497205785389,-1.4808590783445874e-5,-2.573812424229174e-8,-0.0017558401001670073,-1.501849889141526e-5,-2.5923886858305346e-8,-0.0017555677036126833,-1.5198851791683837e-5,-2.6084035700955837e-8,-0.0017552499882569114,-1.5326523211685818e-5,-2.6198219746351277e-8,-0.0017549096171388453,-1.5387143092883683e-5,-2.625378099409158e-8,-0.0017545716844747704,-1.5375917958639373e-5,-2.624643446693762e-8,-0.0017542612485054693,-1.5298085448759974e-5,-2.618062930004095e-8,-0.0017540007404882867,-1.5169273450952789e-5,-2.6069861979063126e-8,-0.0017538066861335557,-1.5015531634949477e-5,-2.593675647987724e-8,-0.0017536853789179659,-1.4872118319182157e-5,-2.5812093138283254e-8,-0.0017536279768385933,-1.4779491480665109e-5,-2.5731383005018647e-8,-0.001753606952723239,-1.477510058162383e-5,-2.5727704626657337e-8,-0.0017535772625469973,-1.4881293853944655e-5,-2.5821044107833472e-8,-0.0017534854838303832,-1.5093084239007569e-5,-2.600743669074431e-8,-0.001753286710863749,-1.5372854528035302e-5,-2.6254185280220255e-8,-0.0017529628465813953,-1.5658309245887e-5,-2.650676375421154e-8,-0.0017525321779777868,-1.5882916451512282e-5,-2.6706754294287406e-8,-0.0017520438774256833,-1.599931632431093e-5,-2.6812413521358316e-8,-0.0017515603547515798,-1.599389242849295e-5,-2.6811474485739375e-8,-0.0017511370747768787,-1.58870721613282e-5,-2.6721446136561115e-8,-0.0017508085426400448,-1.5722498178991464e-5,-2.6580205900138525e-8,-0.001750583522276346,-1.5552126055896935e-5,-2.6433054088095324e-8,-0.0017504477988545496,-1.5423007708300132e-5,-2.6321212129111954e-8,-0.001750371174214469,-1.5368439711583733e-5,-2.62740633198849e-8,-0.001750315851837096,-1.5403810993203438e-5,-2.630543047416448e-8,-0.0017502443819633047,-1.552642617773328e-5,-2.641330452405617e-8,-0.0017501260881107377,-1.5718366270618406e-5,-2.6582255837826362e-8,-0.001749941315168841,-1.595138996435713e-5,-2.6787687878177625e-8,-0.0017496832210316077,-1.6192740022060927e-5,-2.7000937830024997e-8,-0.0017493572693855985,-1.6410744434680557e-5,-2.719422519070173e-8,-0.001748978948913387,-1.6579358203906588e-5,-2.7344668887639668e-8,-0.0017485704968312657,-1.6681163415333903e-5,-2.74369274282324e-8,-0.0017481574240992264,-1.670883282721197e-5,-2.7464466784574147e-8,-0.0017477653066889829,-1.666547427544194e-5,-2.742983935525184e-8,-0.0017474168841164288,-1.6564305460559376e-5,-2.7344394725503e-8,-0.001747129279233854,-1.6427879931202274e-5,-2.722763656186771e-8,-0.0017469110243550452,-1.6286771476204226e-5,-2.7106146180372478e-8,-0.0017467586534195868,-1.6177063093025705e-5,-2.7011472007132247e-8,-0.0017466533463252492,-1.6135412490742596e-5,-2.6975864478472212e-8,-0.0017465594178202246,-1.6190686058868135e-5,-2.7024931986323628e-8,-0.0017464276261986936,-1.6352739951425828e-5,-2.7167717614836124e-8,-0.0017462061719448097,-1.6602042086509395e-5,-2.7387475511613235e-8,-0.0017458589390846183,-1.688727509586495e-5,-2.7639480984314817e-8,-0.001745383793112345,-1.7137548063945405e-5,-2.7861723308800773e-8,-0.001744819115139456,-1.7287659579105718e-5,-2.7997065592867195e-8,-0.0017442316274042247,-1.7303833560797986e-5,-2.8015768007836517e-8,-0.0017436912573285538,-1.7194973975304273e-5,-2.7925287860788828e-8,-0.001743247452036388,-1.7004614184730193e-5,-2.7763247275154654e-8,-0.0017429180130239536,-1.6791404372740664e-5,-2.758049651565357e-8,-0.0017426913839497045,-1.6609904370917028e-5,-2.7424492345162885e-8,-0.001742536475141356,-1.649859690995107e-5,-2.7328913073261393e-8,-0.0017424137905466815,-1.6475754777084468e-5,-2.731001280582881e-8,-0.0017422844622990985,-1.6540670952381766e-5,-2.7367575703814308e-8,-0.001742116355369948,-1.6677544114767887e-5,-2.7488179361086792e-8,-0.0017418876343611228,-1.686031928037145e-5,-2.764933739189588e-8,-0.0017415883616594284,-1.70577248174131e-5,-2.782387438953023e-8,-0.0017412205022093819,-1.7238115114124338e-5,-2.7984175560639326e-8,-0.0017407965855088022,-1.737379930727008e-5,-2.8106002984605667e-8,-0.0017403372333003285,-1.744456666693547e-5,-2.81716008451723e-8,-0.0017398678463401798,-1.7440083829039737e-5,-2.817179627356715e-8,-0.0017394149398974874,-1.7360942313155324e-5,-2.8106908907450188e-8,-0.0017390025998627163,-1.7218462503755394e-5,-2.7986581351569095e-8,-0.0017386492629266872,-1.7033516940844868e-5,-2.78287765345854e-8,-0.0017383648667583472,-1.6834511621145167e-5,-2.7658071698212013e-8,-0.0017381483860776027,-1.6654526309760896e-5,-2.750323777098479e-8,-0.0017379857880764208,-1.6527352718845074e-5,-2.7393844848311547e-8,-0.0017378488996451671,-1.6481799532138352e-5,-2.735530264547702e-8,-0.0017376966372265247,-1.653390656976417e-5,-2.7402002468754002e-8,-0.0017374807521994074,-1.6678137811977933e-5,-2.752950967892001e-8,-0.0017371577619254865,-1.6881003467352378e-5,-2.7708880462880502e-8,-0.0017367058418978965,-1.7082956805723142e-5,-2.7888277038928824e-8,-0.0017361397871615877,-1.7213636041267133e-5,-2.8006313607759834e-8,-0.0017355130919502622,-1.7217983517437767e-5,-2.8014887489228886e-8,-0.0017349010873700975,-1.7080148864802256e-5,-2.789998107144859e-8,-0.0017343723348015217,-1.6829898005292252e-5,-2.7687166142917287e-8,-0.0017339647832955254,-1.6527764114669422e-5,-2.742869117101087e-8,-0.0017336786370508808,-1.6239846977128967e-5,-2.718170516827529e-8,-0.0017334849605685624,-1.6017009429821272e-5,-2.6990333500378085e-8,-0.0017333407869161536,-1.588567181395312e-5,-2.6877727087182345e-8,-0.0017332024740586718,-1.5848606242811324e-5,-2.6846667644146168e-8,-0.0017330340615586818,-1.5890746362680283e-5,-2.68844715727071e-8,-0.0017328110493750382,-1.598598400945783e-5,-2.696877596915934e-8,-0.00173252127473545,-1.6103053832416733e-5,-2.7072598915931684e-8,-0.0017321643150833425,-1.6210210138051937e-5,-2.716841036510506e-8,-0.0017317501140170313,-1.6278998147010685e-5,-2.723144593688566e-8,-0.0017312970188940173,-1.6287366080985484e-5,-2.7242447571344237e-8,-0.0017308292084595779,-1.6222185622260528e-5,-2.7189872388028625e-8,-0.001730373452436675,-1.6081006942388617e-5,-2.7071418830950497e-8,-0.0017299553582569695,-1.5872667604661172e-5,-2.6894553273205772e-8,-0.0017295955423252537,-1.5616500957420817e-5,-2.6675832877706237e-8,-0.0017293061873740823,-1.5340170469505593e-5,-2.6439061947713e-8,-0.0017290883470865532,-1.507625010199129e-5,-2.6212382075122478e-8,-0.0017289303472872032,-1.485771739629063e-5,-2.6024423253133448e-8,-0.0017288076171489378,-1.4712600788592941e-5,-2.5899692716363257e-8,-0.0017286843786890062,-1.4657982104751628e-5,-2.5853345982890227e-8,-0.0017285179920752429,-1.469378801204321e-5,-2.5885710544355952e-8,-0.0017282669016267444,-1.4797809692912494e-5,-2.597784298491023e-8,-0.0017279022709099565,-1.4924826606494031e-5,-2.6090678957383975e-8,-0.0017274210330882648,-1.5013539408658058e-5,-2.6171041964052904e-8,-0.0017268544886931924,-1.500339980186787e-5,-2.6166307322124555e-8,-0.0017262646488298942,-1.4857541654773406e-5,-2.6044338623451537e-8,-0.0017257250829835684,-1.4580494467278208e-5,-2.5808814537283378e-8,-0.0017252937794389228,-1.4218526667931194e-5,-2.5499476937908507e-8,-0.0017249930231404602,-1.3840794807331261e-5,-2.517585149150039e-8,-0.0017248067699141875,-1.351270711306445e-5,-2.4894335555473773e-8,-0.0017246934534974646,-1.3276295708485894e-5,-2.4691333401292228e-8,-0.0017246038274408126,-1.314433765536367e-5,-2.4578159853052325e-8,-0.0017244948196652298,-1.3105269854769773e-5,-2.454517288778279e-8,-0.0017243364526524838,-1.3132362073222714e-5,-2.456957312402072e-8,-0.0017241132667976712,-1.3192342565411862e-5,-2.4622786661510245e-8,-0.0017238228661482834,-1.325163183139236e-5,-2.4675851118792835e-8,-0.0017234735662261548,-1.3280343921097598e-5,-2.470291409721152e-8,-0.0017230820075737141,-1.3254924222723466e-5,-2.4683557620105018e-8,-0.0017226707950760843,-1.3160121817767504e-5,-2.4604525475472103e-8,-0.001722265910630456,-1.2990581890931382e-5,-2.4461095384133306e-8,-0.001721893605087852,-1.275194862461917e-5,-2.4258014835579526e-8,-0.0017215766694778005,-1.2461004044485085e-5,-2.400961012256891e-8,-0.0017213304202050618,-1.2144266502687791e-5,-2.373858904526001e-8,-0.0017211591144521662,-1.1834740035222872e-5,-2.3473278345894057e-8,-0.0017210536379387664,-1.15669121811399e-5,-2.3243368159746304e-8,-0.0017209912434660293,-1.137053703664978e-5,-2.3074600444917153e-8,-0.00172093786428734,-1.126418106526938e-5,-2.2983213066028008e-8,-0.0017208531150557185,-1.1249725559581083e-5,-2.2971150222902847e-8,-0.0017206977257007766,-1.1309037278010377e-5,-2.3023095245395752e-8,-0.0017204427559582552,-1.1404176889886242e-5,-2.3106548502949438e-8,-0.0017200791234227555,-1.1482681882738014e-5,-2.3176327687590162e-8,-0.0017196246541953794,-1.148889330573019e-5,-2.3184350335903796e-8,-0.001719124641958263,-1.1380227657635337e-5,-2.3093722950941158e-8,-0.0017186423638384035,-1.114361781624759e-5,-2.289295661201278e-8,-0.0017182400231541156,-1.0804036814357762e-5,-2.2603315828948557e-8,-0.0017179572397719124,-1.0418304686722344e-5,-2.2273489276189473e-8,-0.0017177979779009823,-1.0055136813138216e-5,-2.1962468500676522e-8,-0.0017177326568771723,-9.771363476111051e-6,-2.171915971274942e-8,-0.0017177126940655086,-9.59618259083335e-6,-2.1568855933039855e-8,-0.0017176882158911563,-9.528664202440341e-6,-2.151102115154199e-8,-0.0017176207842986657,-9.54532916023194e-6,-2.152570092195504e-8,-0.001717488539588401,-9.61114215968148e-6,-2.1582903167043163e-8,-0.0017172856020235222,-9.688935408136953e-6,-2.1650695633700068e-8,-0.0017170188075453885,-9.745503388018222e-6,-2.1700489974222203e-8,-0.001716704030343493,-9.75481187740589e-6,-2.1709853665659155e-8,-0.001716363051667733,-9.699527683861308e-6,-2.1663854398151375e-8,-0.0017160209740540878,-9.571902058244573e-6,-2.155581284513286e-8,-0.0017157037275235207,-9.374493289871258e-6,-2.1387892099804606e-8,-0.0017154351582843574,-9.12063251889091e-6,-2.1171465309349033e-8,-0.0017152334371241793,-8.834059379219236e-6,-2.0926792740536966e-8,-0.0017151070380174468,-8.54691461997685e-6,-2.0681324010697784e-8,-0.0017150511747853247,-8.295434661355793e-6,-2.0466057621787945e-8,-0.0017150460711992154,-8.113332137404114e-6,-2.030992124260642e-8,-0.0017150584488687581,-8.023886119027629e-6,-2.0233017236108107e-8,-0.0017150469068009022,-8.032794681682757e-6,-2.0240470470753276E-08,-0.0017149705846409252,-8.124212126971078e-6,-2.031895666669989e-8,-0.0017147992299687779,-8.261786867259084e-6,-2.043750161115691e-8,-0.0017145220766764634,-8.39524066367176e-6,-2.0553060054856926e-8,-0.001714152932724592,-8.471588872493842e-6,-2.062012893709478e-8,-0.0017137294505731322,-8.448766698921679e-6,-2.0602470471424994e-8,-0.0017133056268037235,-8.30827935977141e-6,-2.0484010951138584e-8,-0.0017129382965746429,-8.062726137621993e-6,-2.0275329834940626e-8,-0.0017126708829768335,-7.754388283059394e-6,-2.0012476947012425e-8,-0.0017125200757254853,-7.443621313326269e-6,-1.9747060849152198e-8,-0.0017124712795059404,-7.190431363037621e-6,-1.9530504080148718e-8,-0.001712485108463056,-7.0366396458408515e-6,-1.9398773754969298e-8,-0.0017125116285125956,-6.995979960543143e-6,-1.9363850589301513e-8,-0.0017125055152946264,-7.054904126090996e-6,-1.941433171688431e-8,-0.0017124362267456486,-7.181290036679982e-6,-1.9522819783303132e-8,-0.0017122912356786113,-7.33559115667751e-6,-1.9655458212988638e-8,-0.0017120739679193392,-7.480041670713854e-6,-1.9779851901213196e-8,-0.0017117993662422982,-7.584250733816216e-6,-1.9869913460128613e-8,-0.0017114893374762983,-7.627641340691138e-6,-1.9907989660052855e-8,-0.0017111690927208221,-7.6000125055850025e-6,-1.9885345225042433e-8,-0.0017108644073861132,-7.501412760528949e-6,-1.9802025000362843e-8,-0.0017105992780522003,-7.341978719606794e-6,-1.966667578346078e-8,-0.0017103933189507282,-7.1417111820099305e-6,-1.949632951528594e-8,-0.0017102585004460788,-6.929573781906971e-6,-1.9315642219774395e-8,-0.0017101954017993111,-6.7409497837180035e-6,-1.9154764556717096e-8,-0.0017101899463117245,-6.612514274616833e-6,-1.904501927146042e-8,-0.0017102124219094009,-6.574302226505446e-6,-1.9012164611844463e-8,-0.0017102208546907933,-6.640381461484933e-6,-1.906841604034119e-8,-0.0017101696872487946,-6.801430426475136e-6,-1.920604126355059e-8,-0.0017100221870999638,-7.023203351349197e-6,-1.939596217498844e-8,-0.0017097624173563275,-7.2532026779098715e-6,-1.959339512897098e-8,-0.0017094018542985613,-7.4343348959541015e-6,-1.9749511339903364e-8,-0.0017089776595243197,-7.520980981562084e-6,-1.982519953065219e-8,-0.0017085430785728673,-7.491875094526717e-6,-1.98021064005799e-8,-0.0017081533169143335,-7.355782261528479e-6,-1.968751486928549e-8,-0.0017078512816734047,-7.148736530329722e-6,-1.9512013140907094e-8,-0.0017076570788535014,-6.924050653939927e-6,-1.9321004792382517e-8,-0.0017075639301940206,-6.73805286028801e-6,-1.9162573935492407e-8,-0.0017075414744693901,-6.635623404704152e-6,-1.9075152574921577e-8,-0.0017075452538536885,-6.6397481673598866e-6,-1.907856769945405e-8,-0.0017075291279762277,-6.74799680854229e-6,-1.917095975773456e-8,-0.001707456464753147,-6.936270654025548e-6,-1.9331909124735297e-8,-0.001707306873839935,-7.167486224038338e-6,-1.9529815014463757e-8,-0.0017070774940020905,-7.40150152130711e-6,-1.9730384470556232e-8,-0.001706780055599116,-7.603160648750164e-6,-1.9903542367193303e-8,-0.0017064359548183703,-7.747073464223104e-6,-2.0027552034501053e-8,-0.0017060712869391593,-7.819370843360752e-6,-2.009053088308096e-8,-0.0017057128647851082,-7.81750689300007e-6,-2.0090272816758505e-8,-0.0017053853475831233,-7.749258787440385e-6,-2.0033369653230264e-8,-0.0017051090246987348,-7.63165252439743e-6,-1.9934273203516424e-8,-0.0017048976130836205,-7.48990374053086e-6,-1.9814391821666054e-8,-0.0017047556071532683,-7.355870167993619e-6,-1.9700800557958514e-8,-0.0017046752314598494,-7.265069438578037e-6,-1.962374814999241e-8,-0.001704633907873945,-7.251176602605976e-6,-1.9612010035070857e-8,-0.0017045942123405239,-7.337574074837141e-6,-1.968569133958673e-8,-0.0017045088636094908,-7.527447475358424e-6,-1.984773628854404e-8,-0.0017043321125059295,-7.796609969145614e-6,-2.0077728553648004e-8,-0.0017040352892301902,-8.094628881719389e-6,-2.033278529821439e-8,-0.0017036199174814714,-8.357321757473915e-6,-2.0558199710134475e-8,-0.0017031207453830734,-8.527279641554265e-6,-2.07049674527795e-8,-0.0017025957211632837,-8.573251713438601e-6,-2.0746330786424403e-8,-0.0017021073995130097,-8.499347348814524e-6,-2.0685612575558143e-8,-0.0017017044497118188,-8.341162243397592e-6,-2.0552915628861326e-8,-0.0017014101770728533,-8.152663137236833e-6,-2.0393996128262026e-8,-0.001701220123087332,-7.99029114266652e-6,-2.0256802195303342e-8,-0.0017011069963663247,-7.899440803721392e-6,-2.0180015465234488e-8,-0.0017010298088642021,-7.905934485141747e-6,-2.0185786978182623e-8,-0.0017009442845075707,-8.013087611659719e-6,-2.0277176829621546e-8,-0.001700812271449088,-8.203778005991368e-6,-2.043983579510598e-8,-0.001700608518360257,-8.446292559298515e-6,-2.0646923134808663e-8,-0.0017003238336688721,-8.702227743979316e-6,-2.086581340902206e-8,-0.0016999645473487364,-8.934420936028888e-6,-2.106486263485468e-8,-0.00169954913513485,-9.113190354238928e-6,-2.1218747636263865e-8,-0.0016991033874861217,-9.22001102864717e-6,-2.1311618593498575e-8,-0.0016986554807616981,-9.248647435155238e-6,-2.13380740034121e-8,-0.0016982318855080062,-9.204399731118582e-6,-2.1302519561850147e-8,-0.0016978543995590132,-9.10238542444722e-6,-2.121770451114759e-8,-0.0016975380294125626,-8.965565187764711e-6,-2.1103046899748445e-8,-0.0016972892355614753,-8.822716746064468e-6,-2.0982928734896224e-8,-0.001697104147393287,-8.706075816679848e-6,-2.0884721675880377e-8,-0.0016969666972081788,-8.647926619789557e-6,-2.0835920379221263e-8,-0.00169684740011825,-8.675181170249637e-6,-2.0859546028640884e-8,-0.0016967045804855362,-8.801519162920972e-6,-2.0967436610679105e-8,-0.0016964905065300056,-9.01844333619171e-6,-2.1152579343920042e-8,-0.0016961639731149969,-9.289415793960601e-6,-2.138406153842879e-8,-0.001695707106127775,-9.553311743058151e-6,-2.160998864081665e-8,-0.0016951385176591758,-9.741104001052941e-6,-2.1771702413548394e-8,-0.0016945128063564176,-9.801298769835388e-6,-2.1825425829586347e-8,-0.001693902985101117,-9.720976758235634e-6,-2.176009941619977e-8,-0.0016933741666031645,-9.529958261736527e-6,-2.1600847624303437e-8,-0.0016929627649807358,-9.286767509844959e-6,-2.1397063223247418e-8,-0.0016926700984223038,-9.056285660978077e-6,-2.1203544267075215e-8,-0.0016924690855679811,-8.890755742029625e-6,-2.1064502321326876e-8,-0.0016923170302585921,-8.819805710338477e-6,-2.1005150945671767e-8,-0.0016921682214408472,-8.8489478525651e-6,-2.1030391509463162e-8,-0.0016919833229793798,-8.963433333096914e-6,-2.1127991678712995e-8,-0.0016917350451069605,-9.1345146397534e-6,-2.1273812337831973e-8,-0.0016914106590955637,-9.326304850307346e-6,-2.1437577987506275e-8,-0.0016910119930584138,-9.50234733555081e-6,-2.158843896357954e-8,-0.0016905533915853798,-9.631291450467526e-6,-2.1699798048136526e-8,-0.0016900581754099764,-9.69110899668149e-6,-2.1752905508392625e-8,-0.0016895542586885487,-9.671493446052107e-6,-2.1738910779710982e-8,-0.0016890696305639124,-9.574362283327237e-6,-2.1659302094648493e-8,-0.0016886283866275086,-9.412685663855614e-6,-2.1524925607916213e-8,-0.001688247743667381,-9.208192002297713e-6,-2.1354054577412935e-8,-0.0016879360364431592,-8.98854909081757e-6,-2.1170017704178606e-8,-0.0016876914563649197,-8.784322466768402e-6,-2.0998642806816554e-8,-0.0016875013089274406,-8.625690463057586e-6,-2.086549585606093e-8,-0.0016873417279686287,-8.53858560005698e-6,-2.0792626469016813e-8,-0.001687178325547085,-8.539692110101775e-6,-2.079432297753112e-8,-0.0016869691166023061,-8.630151987089456e-6,-2.0871746461888742e-8,-0.0016866715029369072,-8.789267347131455e-6,-2.100754636158876e-8,-0.001686254318023176,-8.97163165767185e-6,-2.1163398058176738e-8,-0.0016857129301765929,-9.112940780203801e-6,-2.1284938230037018e-8,-0.0016850801573558933,-9.148161471228022e-6,-2.1317184884815498e-8,-0.001684422796496244,-9.037763226930734e-6,-2.122672379094548e-8,-0.0016838198027999708,-8.787797426035769e-6,-2.1018591580797273e-8,-0.0016833318949512636,-8.44940531154977e-6,-2.0735764854021037e-8,-0.0016829803888256231,-8.096954946202853e-6,-2.0440726785689123e-8,-0.0016827459755191082,-7.799047296914452e-6,-2.0191141842253217e-8,-0.001682583454796451,-7.598483392665845e-6,-2.0023083749209106e-8,-0.0016824406087873034,-7.507046345778621e-6,-1.9946647297024858e-8,-0.00168227233893414,-7.511005682637191e-6,-1.995050767444206e-8,-0.0016820477635596358,-7.580629314178077e-6,-2.0009840918065495e-8,-0.0016817519149339769,-7.679226904576688e-6,-2.0093885939198342e-8,-0.0016813844563981313,-7.770076038468931e-6,-2.017176810577966e-8,-0.00168095711875254,-7.821310599237092e-6,-2.02166337334569e-8,-0.0016804905773571324,-7.809332280904686e-6,-2.020854689581189e-8,-0.001680010953275545,-7.72105576611143e-6,-2.013639837823021e-8,-0.001679546036692029,-7.555014866778501e-6,-1.999884849506686e-8,-0.0016791214090587767,-7.3212178391739496e-6,-1.9804212819061585e-8,-0.0016787568208649483,-7.0396326381076e-6,-1.956919439356282e-8,-0.0016784633058374865,-6.737431280764423e-6,-1.9316573595337173e-8,-0.0016782413530992905,-6.445394475960026e-6,-1.907219462969039e-8,-0.001678080222805157,-6.193862700986028e-6,-1.8861571689255484e-8,-0.0016779584103784654,-6.008506027515523e-6,-1.8706342929766363e-8,-0.001677845249146384,-5.906093833141004e-6,-1.8620715185890165e-8,-0.0016777038192801804,-5.890290612856807e-6,-1.8607914310898255e-8,-0.0016774958004093384,-5.947719194763358e-6,-1.8656841222782147e-8,-0.0016771890493794792,-6.04551842846217e-6,-1.873997969081269e-8,-0.001676767832841618,-6.132885965309012e-6,-1.8814675758844495e-8,-0.0016762435242489034,-6.149771262434435e-6,-1.8830466334363702e-8,-0.0016756602448421592,-6.044400624246342e-6,-1.8743841862040513e-8,-0.001675087945535953,-5.795520152856072e-6,-1.8536922752685177e-8,-0.001674600133436057,-5.427392994706577e-6,-1.8229981102522346e-8,-0.0016742451149479186,-5.004926323171685e-6,-1.7877295972549893e-8,-0.0016740276746855878,-4.608399079730942e-6,-1.7546004506771972e-8,-0.0016739119980301556,-4.302510944871832e-6,-1.729026756861099e-8,-0.0016738412334485694,-4.117301795986611e-6,-1.7135338860309113e-8,-0.0016737597260480786,-4.047201977927108e-6,-1.7076725758927597e-8,-0.0016736272940627243,-4.062129813392705e-6,-1.708939796436854e-8,-0.0016734236526182423,-4.121225593287399e-6,-1.7139232302019368e-8,-0.0016731464204356393,-4.183527382690121e-6,-1.719194905092986e-8,-0.001672806667024793,-4.214324596648135e-6,-1.721846074771176e-8,-0.0016724243936852225,-4.1882372375009135e-6,-1.7197481453770475e-8,-0.0016720247121886067,-4.090499672781078e-6,-1.71166177315317e-8,-0.001671634560924054,-3.9173958791691575e-6,-1.697273167292582e-8,-0.0016712796064216253,-3.676148262014399e-6,-1.677183719774153e-8,-0.0016709811132979546,-3.3841381804794744e-6,-1.6528438089025636e-8,-0.001670752839878428,-3.067097445950772e-6,-1.626401154436992e-8,-0.0016705983902454557,-2.755995668689129e-6,-1.6004410253319553e-8,-0.0016705096420609104,-2.4827410471397807e-6,-1.5776279333381472e-8,-0.0016704667555038147,-2.2751486697532836e-6,-1.5602864533974782e-8,-0.001670440054529566,-2.151829226592785e-6,-1.5499751063543376e-8,-0.001670393800312215,-2.117817669325008e-6,-1.5471212409242127e-8,-0.001670291584102462,-2.1617204405963794e-6,-1.5507814775575798e-8,-0.0016701029794063543,-2.2550054075283997e-6,-1.5585801952800447e-8,-0.0016698110099757678,-2.354258371242796e-6,-1.5668961170856538e-8,-0.0016694193436379667,-2.4075797922360825e-6,-1.5713962061550806e-8,-0.0016689568880535386,-2.3659216383981152e-6,-1.5679837674904023e-8,-0.001668476255894404,-2.198389705642687e-6,-1.5540770761251108e-8,-0.0016680427111036224,-1.9070635849955495e-6,-1.5298448763090533e-8,-0.0016677138985701416,-1.5331708742942751e-6,-1.49871845626283e-8,-0.001667517861434114,-1.147223731015582e-6,-1.4665690841976024e-8,-0.0016674416245268775,-8.243545513833562e-7,-1.4396566986045408e-8,-0.0016674379465091208,-6.170824570407865e-7,-1.4223645290633774e-8,-0.0016674458929825874,-5.401446955353702e-7,-1.415932767755485e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json new file mode 100644 index 000000000..ddc7d4dd9 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":20000,"numberOfSamples":1000,"samples":[0.002920358133904192,-6.784113942412794e-6,1.9052440314477163e-8,0.0029206413912713745,-6.613636446664559e-6,1.880279195741177e-8,0.0029208307139081857,-6.4248857259363685e-6,1.8526799455172666e-8,0.002920930147853429,-6.259580496894272e-6,1.8285299846459358e-8,0.002920958301557765,-6.151401288497133e-6,1.8127384394993633e-8,0.002920943527534336,-6.121517965926748e-6,1.8083876197142136e-8,0.002920918375602291,-6.176714362040785e-6,1.816459054828576e-8,0.0029209142523147777,-6.309966452545619e-6,1.8359183512205728e-8,0.0029209570493570875,-6.502919273456435e-6,1.864078390277559e-8,0.0029210641805222245,-6.729529878146821e-6,1.8971329337261025e-8,0.0029212431239192664,-6.960111764971586e-6,1.9307474224319167e-8,0.0029214911994797127,-7.165144308668532e-6,1.960613535377138e-8,0.002921796120285953,-7.318617634903727e-6,1.982935162046132e-8,0.002922137007124233,-7.4010933087209115e-6,1.994874542519259e-8,0.0029224858842140738,-7.402792330024526e-6,1.9950053694911065e-8,0.0029228100891597296,-7.3269133160290385e-6,1.9838013786501703e-8,0.0029230765056806078,-7.192875581754198e-6,1.9641124744988003e-8,0.002923258593947595,-7.038021661925838e-6,1.941411030247615e-8,0.0029233461420444737,-6.914897975233613e-6,1.9233867338703342e-8,0.0029233550561071457,-6.88082642372724e-6,1.9184132872670825e-8,0.002923331035256764,-6.979157664713172e-6,1.9328047777690732e-8,0.002923340142385916,-7.2183869507838524e-6,1.9677702094935728e-8,0.002923445583922481,-7.561828631160178e-6,2.0179192009197127e-8,0.002923681317946548,-7.937980661899995e-6,2.072789220706034e-8,0.0029240384097172193,-8.268180631197756e-6,2.1208898937220332e-8,0.0029244717828463846,-8.495446917109097e-6,2.1539128515592525e-8,0.0029249206337382287,-8.5993447870362e-6,2.168897594018406e-8,0.0029253292642615033,-8.593866031641322e-6,2.1679150221309016e-8,0.002925659785723746,-8.515407336314436e-6,2.1563040883823154e-8,0.0029258958667452545,-8.409144036535884e-6,2.140676187245665e-8,0.0029260405842169023,-8.318330424117874e-6,2.1273515340970926e-8,0.0029261116369550147,-8.277597083016847e-6,2.1213831819462888e-8,0.0029261360482877165,-8.309529221173803e-6,2.1260608728115165e-8,0.0029261452014683505,-8.42340926017503e-6,2.142729184107828e-8,0.002926170313882796,-8.615486024606374e-6,2.1708269585437497e-8,0.00292623844165663,-8.870566448345604e-6,2.2081201504360447e-8,0.00292636924853009,-9.164729529600066e-6,2.2511001728707966e-8,0.0029265727710682966,-9.46889441648262e-6,2.295507952203869e-8,0.0029268483980316373,-9.752900430721535e-6,2.336931848773817e-8,0.0029271851539575938,-9.989600330613871e-6,2.371405611551756e-8,0.0029275631112714875,-1.0158516530347245e-5,2.3959412562508196e-8,0.002927955664309901,-1.0248883948905652e-5,2.408973052847181e-8,0.002928332543885939,-1.0262052169211477e-5,2.4107097524156514e-8,0.002928663659626732,-1.0213176614852856e-5,2.4033835922844377e-8,0.002928924086482032,-1.0131859571605514e-5,2.391343414198871e-8,0.002929100469893201,-1.006068720901442e-5,2.380835533385682e-8,0.00292919825272032,-1.0049779074946679e-5,2.3791978424671676e-8,0.0029292472514429032,-1.0145544621233506e-5,2.3932078427797663e-8,0.0029293008561212352,-1.0374107175155202e-5,2.4266580620660107e-8,0.0029294238469290295,-1.0725024417737487e-5,2.4779841229322424e-8,0.002929669111734987,-1.114611883277768e-5,2.539521780426727e-8,0.0029300535325597157,-1.1558053316444333e-5,2.599647534430263e-8,0.0029305485124082784,-1.1884615009568598e-5,2.647210161222967e-8,0.0029310923955805034,-1.2081611605397568e-5,2.675757842754958e-8,0.002931616304399638,-1.2148069338781219e-5,2.6851763811636517e-8,0.002932067285150511,-1.2117575796211164e-5,2.6804177118692685e-8,0.002932418917621506,-1.2040100109443465e-5,2.6688285414068273e-8,0.002932670230039864,-1.1965464765100921e-5,2.657720810322275e-8,0.0029328387680504554,-1.1933289258766363e-5,2.6528961772784398e-8,0.00293295270881014,-1.196897681852962e-5,2.658062017342903e-8,0.002933044376699607,-1.2083490982675024e-5,2.67480469420976e-8,0.0029331455921541476,-1.2274805413081184e-5,2.7028061070784242e-8,0.002933284292138651,-1.2529877406152909e-5,2.7401345594697467e-8,0.00293348183921598,-1.2826952297089921e-5,2.7835835906596038e-8,0.0029337508490475143,-1.3138354603080276e-5,2.829083170402535e-8,0.002934093645838865,-1.3433894030281315e-5,2.872201713802254e-8,0.0029345016544849406,-1.3684880135773215e-5,2.908736254701938e-8,0.0029349561406361926,-1.386840837531521e-5,2.935340201831078e-8,0.002935430486740117,-1.3971275110489517e-5,2.95009506018706e-8,0.002935893835760189,-1.3992889279387817e-5,2.9529348563241594e-8,0.002936315747796631,-1.3946693107954746e-5,2.9458526641335536e-8,0.0029366714399644074,-1.3859725730502529e-5,2.9328347332084718e-8,0.0029369471463227275,-1.3770076163005065e-5,2.919483182596872e-8,0.0029371450608840764,-1.3721886782902614e-5,2.912277265954847e-8,0.002937286864066753,-1.3757394229001907e-5,2.917400350300773e-8,0.0029374138979444495,-1.3905986529102212e-5,2.9391340967481903e-8,0.002937581299334286,-1.4172039349156543e-5,2.9780814874648412e-8,0.002937844163109093,-1.45262281968288e-5,3.029905020497397e-8,0.0029382377175291947,-1.4907319198974039e-5,3.085599616240686e-8,0.0029387598782889463,-1.5239082205155629e-5,3.13397558100923e-8,0.0029393676298225253,-1.5457827043506526e-5,3.165695446938089e-8,0.002939992216838139,-1.5536378976067384e-5,3.1767915909756623e-8,0.0029405653190518453,-1.5490797301223943e-5,3.169654522724492e-8,0.002941041254771594,-1.536815347138079e-5,3.151235350452084e-8,0.00294140542344543,-1.5225670745632641e-5,3.129971116966001e-8,0.0029416699353257774,-1.511314588614597e-5,3.113191036723647e-8,0.002941863403875871,-1.5063955018859357e-5,3.105791466104839e-8,0.002942020994539501,-1.5093505935668198e-5,3.110013611490886e-8,0.002942177366646585,-1.520170158147927e-5,3.125814014183412e-8,0.0029423625508156873,-1.537654151057894e-5,3.1514004634474597e-8,0.002942599690849947,-1.559743059921687e-5,3.183721614696178e-8,0.00294290359336924,-1.5838011990550073e-5,3.2188849522134435e-8,0.00294327957060671,-1.606891948600009e-5,3.252562907878252e-8,0.002943722566359027,-1.626091105834113e-5,3.2804552667574874e-8,0.0029442169460562008,-1.6388674978272435e-5,3.2988495583917805e-8,0.002944737613991192,-1.643514977217652e-5,3.3052553288382284e-8,0.002945253028492552,-1.6395599116742716e-5,3.299000825108424e-8,0.0029457301748656087,-1.6280316984019043e-5,3.2816276383530096e-8,0.0029461409054937337,-1.6114844458962526e-5,3.2569189442586106e-8,0.002946468467779173,-1.59369584836108e-5,3.230452078197805e-8,0.0029467127007430827,-1.5790452065963385e-5,3.20867790313752e-8,0.002946892484190752,-1.571653783339316e-5,3.19765091292342e-8,0.0029470444074099875,-1.574421226294738e-5,3.201610119609517e-8,0.00294721700040216,-1.5881334913556607e-5,3.2216717921521556e-8,0.002947460426363542,-1.6108825234197094e-5,3.2549869520431156e-8,0.002947812788728661,-1.6380947123874963e-5,3.294795449427606e-8,0.002948286406491707,-1.663423983095662e-5,3.3317466246604255e-8,0.0029488597757889802,-1.6805051579412595e-5,3.356478318315856e-8,0.0029494809972528905,-1.6850594771345913e-5,3.362711592054566e-8,0.0029500837834087173,-1.6764027436157334e-5,3.3494691584581735e-8,0.002950609547099543,-1.65754022846451e-5,3.321214488618771e-8,0.0029510248489415226,-1.6338277873894157e-5,3.285874310463184e-8,0.002951326908519711,-1.6110067758768604e-5,3.251932528889389e-8,0.002951537740617979,-1.5935923031543694e-5,3.226045946019777e-8,0.002951692897861342,-1.5841154803625142e-5,3.2119268917177497e-8,0.0029518308167177263,-1.5831373922113136e-5,3.210371527010424e-8,0.002951985680243071,-1.5896753371837802e-5,3.219898309769699e-8,0.0029521838394617654,-1.6017149276703177e-5,3.237510141211502e-8,0.0029524425171660266,-1.6166416508957604e-5,3.259333287301716e-8,0.002952769476479237,-1.631566760743691e-5,3.281097659429368e-8,0.0029531628666808734,-1.6435949662826805e-5,3.298530817637135e-8,0.002953611072809355,-1.6501010877409013e-5,3.307765926789581e-8,0.0029540929521073237,-1.6490693620487103e-5,3.305842467294873e-8,0.002954579264429746,-1.639499922671663e-5,3.291305556929234e-8,0.00295503617946976,-1.6218085914775832e-5,3.264794315872196e-8,0.0029554312636725514,-1.598068794654785e-5,3.2293958485677294e-8,0.002955741283648492,-1.5719093070127868e-5,3.1904895652031e-8,0.002955959806034109,-1.547937573783238e-5,3.154889715991773e-8,0.0029561017019983917,-1.5307268455907255e-5,3.129343797151466e-8,0.002956202124345455,-1.5236171399037398e-5,3.118759456372629e-8,0.002956309344895545,-1.5277053681785616e-5,3.124717312307237e-8,0.002956473061121083,-1.5413664099591182e-5,3.144774573045378e-8,0.002956731321048645,-1.56048785559379e-5,3.1728248939181924e-8,0.00295709965139376,-1.5793981380019647e-5,3.20047831722283e-8,0.002957565526219128,-1.592284518104132e-5,3.2191570296512827e-8,0.002958090281759539,-1.5947524626471783e-5,3.2223937815342005e-8,0.0029586188407144266,-1.5850738642942996e-5,3.2076690446522256e-8,0.002959094945026436,-1.5646720190761735e-5,3.177121976954928e-8,0.002959476848073268,-1.5376083073574004e-5,3.136786811924238e-8,0.0029597476091094625,-1.5092533249955837e-5,3.094622473963542e-8,0.0029599165389014807,-1.4847001851064014e-5,3.058161120537158e-8,0.0029600126576895124,-1.4675368085643121e-5,3.032691574396036e-8,0.0029600742944759875,-1.4593152680899354e-5,3.020479859533819e-8,0.0029601393336397405,-1.4596748310243467e-5,3.020960605628144e-8,0.002960238698290419,-1.4668406120361078e-5,3.031483113270092e-8,0.002960393348094185,-1.4782054688900286e-5,3.048176038556993e-8,0.0029606137208240614,-1.4908213038661743e-5,3.0666732803764704e-8,0.002960900307724539,-1.5017561814104221e-5,3.082638893027108e-8,0.002961244434757364,-1.50835587775595e-5,3.092151102287129e-8,0.0029616289196745093,-1.508481954343969e-5,3.092053838966425e-8,0.0029620288994349014,-1.5007922270276185e-5,3.080373072655211e-8,0.002962413625758523,-1.485083932757977e-5,3.056826258788275e-8,0.0029627502369207145,-1.4626387490437281e-5,3.023332794121676e-8,0.002963010182597418,-1.4364071234967201e-5,2.9842834228472035E-08,0.002963177767764606,-1.4107920694885702e-5,2.9462135061082662e-8,0.002963258245024794,-1.390835698351417e-5,2.9165907356940043e-8,0.002963281197327158,-1.3808595017261191e-5,2.9017964910745684e-8,0.0029632955592347656,-1.3829869002871433e-5,2.9049396981577167e-8,0.0029633562901483323,-1.396211303207011e-5,2.9244867118890364e-8,0.002963507429295757,-1.4165122782118485e-5,2.9544476640865564e-8,0.0029637685076608447,-1.4380196230406393e-5,2.986111941278739e-8,0.0029641293995320965,-1.4547336536681909e-5,3.010599812437667e-8,0.0029645544477331213,-1.462147944059388e-5,3.021262159737794e-8,0.002964993199433165,-1.4582947790407866e-5,3.015220993420224e-8,0.002965393786237881,-1.4440252912374524e-5,2.993775541428279e-8,0.002965715263846332,-1.4225700000439636e-5,2.9617431791449873e-8,0.002965936105661564,-1.3985740295725363e-5,2.926023813664994e-8,0.0029660572013795127,-1.3768956215185547e-5,2.893816297894991e-8,0.0029660991821764673,-1.361495218959358e-5,2.8709729777681658e-8,0.0029660954822132313,-1.3546940317984253e-5,2.8609061319606824e-8,0.0029660836753954115,-1.3569374678669404e-5,2.86424548981107e-8,0.002966097715672726,-1.3670152439685494e-5,2.8791723939980673e-8,0.002966162758787371,-1.382559151959131e-5,2.9021622975413763e-8,0.002966292909415142,-1.4006141463460001e-5,2.9288313696922994e-8,0.0029664912327432187,-1.4181368889154244e-5,2.9546719679842586e-8,0.00296675098439865,-1.432364071392131e-5,2.975594063607446e-8,0.0029670571768570203,-1.441068763053631e-5,2.988302426452729e-8,0.0029673880824924595,-1.4427641005829092e-5,2.990599124607975e-8,0.0029677168251591012,-1.4369146872198044e-5,2.9817001755657374e-8,0.002968013691011178,-1.4241810907193253e-5,2.962601250879183e-8,0.0029682500709710805,-1.4066513065220714e-5,2.93642059457502e-8,0.002968404731954602,-1.387910107568484e-5,2.9084963591962518e-8,0.002968471978193223,-1.3727039399383037e-5,2.88588007731629e-8,0.002968469059433979,-1.3659767445614165e-5,2.875897632722551e-8,0.0029684378958154877,-1.3713145157645224e-5,2.8838395498620046e-8,0.00296843646941631,-1.3893353069001035e-5,2.9105800690051132e-8,0.0029685202671800416,-1.4169383669450605e-5,2.9514779524273305e-8,0.0029687215722676882,-1.4480741544933563e-5,2.997532983204709e-8,0.0029690374925616814,-1.4758063993347154e-5,3.038452227517716e-8,0.002969432550313911,-1.494625005415047e-5,3.0660807023103234e-8,0.0029698527534371528,-1.501941615613648e-5,3.076614564288683e-8,0.002970242975131316,-1.4983590593674082e-5,3.070991787329774e-8,0.002970560707010411,-1.486978332026129e-5,3.053852833456252e-8,0.002970783380041674,-1.4722598896256202e-5,3.031840881526067e-8,0.0029709096528671933,-1.4588664344004444e-5,3.01187930361603e-8,0.0029709563531596737,-1.4507263299708571e-5,2.999782950169233e-8,0.0029709528196634203,-1.450412607323851e-5,2.9993430059943106e-8,0.0029709340930672533,-1.4588613765477793e-5,3.011917526326649e-8,0.0029709342235076834,-1.4754157039491757e-5,3.036503994043903e-8,0.0029709808089967682,-1.4981337496558506e-5,3.070201327711546e-8,0.0029710914938153535,-1.524256500555707e-5,3.1089054340748793e-8,0.0029712726180356206,-1.5507206205397086e-5,3.1480689014010646e-8,0.0029715197167699482,-1.5746211713835314e-5,3.1833846061620287e-8,0.002971819217195222,-1.5935676545529305e-5,3.211310994113541e-8,0.0029721506391493777,-1.6059298169857467e-5,3.2294356226821274e-8,0.002972488915422919,-1.6110085669579795e-5,3.236730284468479e-8,0.0029728068475521232,-1.609171171330991e-5,3.233754856855953e-8,0.0029730780491342918,-1.6019684593364873e-5,3.2228331099957483e-8,0.002973280996517472,-1.5922014544477006e-5,3.2081488017266414e-8,0.002973404663571169,-1.5838170077771026e-5,3.195582334149546e-8,0.0029734552005521004,-1.581431674792034e-5,3.1919928221359786e-8,0.002973461188362297,-1.589302000644207e-5,3.2036819078499595e-8,0.0029734728689441363,-1.609792381140514e-5,3.234121094806937e-8,0.0029735507610109523,-1.6418860094304986e-5,3.281753040259766e-8,0.002973744280704623,-1.6807320664665265e-5,3.3393348896120576e-8,0.0029740698756861514,-1.7189700640362698e-5,3.395915574472174e-8,0.002974502213153519,-1.7494403406110863e-5,3.4408643234550394e-8,0.002974984560957685,-1.767802825408724e-5,3.4677597890506306e-8,0.0029754513730213712,-1.773672456282881e-5,3.476073805538473e-8,0.002975849730807777,-1.7700253301847003e-5,3.470280180238341e-8,0.0029761508530331345,-1.7616516953682456e-5,3.4575409590022556e-8,0.0029763511916333146,-1.7535807952942615e-5,3.445351817065031e-8,0.0029764671850589274,-1.7499734982786542e-5,3.439891544803893e-8,0.002976527814731713,-1.753553605886131e-5,3.445182277720747e-8,0.0029765674333753333,-1.7654482487030005e-5,3.462863214504655e-8,0.0029766197783471023,-1.785285028144174e-5,3.4923452338110174e-8,0.002976713303471049,-1.8114495901758313e-5,3.531200044507124e-8,0.00297686786306883,-1.841450460826479e-5,3.575704849602197e-8,0.002977092820345906,-1.8723439945705067e-5,3.6214741069552453E-08,0.0029773865940886136,-1.9011730919729806e-5,3.6641106825301627e-8,0.00297773758195352,-1.9253744086145604e-5,3.6998098021908325e-8,0.002978126225410339,-1.9431077092030192e-5,3.725847234837322e-8,0.002978527778364898,-1.953481608938666e-5,3.740914085341509e-8,0.0029789154040244796,-1.9566826718393777e-5,3.7453087807647996e-8,0.002979263474936315,-1.9540223734977267e-5,3.741007038668588e-8,0.002979551126528603,-1.9479037319080024e-5,3.731610210216535e-8,0.002979766242014358,-1.9416859969519788e-5,3.722137847792964e-8,0.0029799099497124348,-1.9393715173435276e-5,3.7185523694292244e-8,0.002980000915971834,-1.94498533312271e-5,3.7268276541520824e-8,0.0029800772524500073,-1.9615566721707554e-5,3.7514326950814606e-8,0.002980192469529219,-1.9898167604817833e-5,3.7934040287157073e-8,0.0029804022602219083,-2.0271164712515565e-5,3.8487521814506124e-8,0.0029807434701728474,-2.067424132501533e-5,3.9084720785291444e-8,0.0029812147089178787,-2.1030261025836366e-5,3.961077233026522e-8,0.0029817719928732045,-2.127449949752043e-5,3.99694784583061e-8,0.0029823449666828935,-2.1379992430783766e-5,4.0121037663042906e-8,0.0029828645165091085,-2.136410513008704e-5,4.009182899623436e-8,0.0029832854451143304,-2.127531976246566e-5,3.995464665032265e-8,0.002983594498668351,-2.1171712511966522e-5,3.97964527218785e-8,0.0029838054954291746,-2.1103248487216302e-5,3.9691834147374094e-8,0.002983948836829765,-2.110276132606735e-5,3.968953147631429e-8,0.002984061290257191,-2.1184288397485705e-5,3.981006008442894e-8,0.002984178513731084,-2.1345484561751207E-05,4.004945855912969e-8,0.00298433040769511,-2.157146104983014e-5,4.0385128619668554e-8,0.002984538433971821,-2.183875045296736e-5,4.078179890719198e-8,0.002984814157245484,-2.2119128743535838e-5,4.1197228817699106e-8,0.0029851587068223267,-2.2383338100873876e-5,4.158774803164346e-8,0.0029855631058775885,-2.260472386163859e-5,4.191366897386889e-8,0.002986009558291577,-2.2762699849510053e-5,4.214444460091879e-8,0.002986473810408079,-2.2845709776562213e-5,4.226307152736928e-8,0.0029869284555065143,-2.285321248440732e-5,4.226903134195116e-8,0.0029873468009023675,-2.279640960153469e-5,4.217934987696174e-8,0.0029877069362470323,-2.2697618488155953e-5,4.202762496290873e-8,0.002987995706883981,-2.2588196005956238e-5,4.186087368514205e-8,0.0029882122724941918,-2.250493424394035e-5,4.173407992678916e-8,0.002988370845250907,-2.2484777608857293e-5,4.170223881865493e-8,0.0029885017936435655,-2.255756728162393e-5,4.180950622118746e-8,0.002988649508545319,-2.2737002269993502e-5,4.20757789848222e-8,0.002988864944534272,-2.3011660125789477e-5,4.248345478531366e-8,0.0029891917531914853,-2.3340375925996207e-5,4.2970713042447454e-8,0.0029896486141179545,-2.3657833305475466e-5,4.3439950290240724e-8,0.002990215930999584,-2.3893473135528555e-5,4.378597223794274e-8,0.0029908371871804683,-2.399812996226874e-5,4.393568517521914e-8,0.0029914382467285117,-2.396417191820179e-5,4.3878147729951906e-8,0.0029919551613743003,-2.38265851199188e-5,4.3666186218943454e-8,0.0029923547556799392,-2.364535922564181e-5,4.33899815622375e-8,0.0029926388924618567,-2.34815530183942e-5,4.314111317342226e-8,0.0029928352743501543,-2.3379858232251807e-5,4.298635560434982e-8,0.002992983643000855,-2.3362211966869825e-5,4.2958145653724355e-8,0.002993124239325345,-2.3429729514789833e-5,4.305762336091702e-8,0.0029932908205783236,-2.3568260581625195e-5,4.3263117748307686e-8,0.0029935075467194595,-2.3754218892099406e-5,4.353897939933425e-8,0.002993788115402275,-2.3959322132927218e-5,4.3842700238288005e-8,0.002994135865131543,-2.415427368613513e-5,4.413039745178603e-8,0.002994544317604473,-2.431187474329782e-5,4.436143642962751e-8,0.0029949981369148688,-2.4409940834154676e-5,4.4502773677267694e-8,0.002995474733920963,-2.4434159363146072e-5,4.453322269139798e-8,0.002995946867852737,-2.438065412063379e-5,4.444727962470359e-8,0.0029963863997792425,-2.4257633800533217e-5,4.425756592263305e-8,0.0029967688850502656,-2.4085455016201706e-5,4.399488097416399e-8,0.002997078338300538,-2.3894673268282683e-5,4.370522458009922e-8,0.002997311349129843,-2.3721945852451404e-5,4.344359182276227e-8,0.002997479656226587,-2.360404297666528e-5,4.32649398235654e-8,0.0029976103593761477,-2.357065305448074e-5,4.3213385803306306e-8,0.002997743110787153,-2.3636926496027646e-5,4.3311086910764544e-8,0.002997923748088096,-2.379704664473801e-5,4.354874311053949e-8,0.0029981942175954005,-2.4020889171051923e-5,4.388077348084879e-8,0.0029985799058661606,-2.4256592745038067e-5,4.422930981774514e-8,0.0029990778745615423,-2.444143335305884e-5,4.450051619084297e-8,0.002999651934402648,-2.4520419116148653e-5,4.461236561595702e-8,0.003000240119555401,-2.4466536425871935e-5,4.452486712152954e-8,0.0030007744382348467,-2.4292342453891288e-5,4.4257372821343864e-8,0.0030012043836071256,-2.4045254021272564e-5,4.388146492212079e-8,0.003001512146798215,-2.3788596603881732E-05,4.3492440534199405e-8,0.003001713011004348,-2.3579216292932016e-5,4.3175608587979206e-8,0.0030018440201570076,-2.345253767991309e-5,4.298382851303703e-8,0.0030019492490419297,-2.3418849803166555e-5,4.293202980731309e-8,0.0030020683571267115,-2.3467794115789163e-5,4.300412504387121e-8,0.003002230577040951,-2.3575924418412295e-5,4.3164515275253525e-8,0.0030024530481396073,-2.371369072928725e-5,4.336864156691746e-8,0.0030027414546316424,-2.3850507219765965e-5,4.357057053753451e-8,0.0030030914014577796,-2.395813305179184e-5,4.3728004665977624e-8,0.003003489836964812,-2.4013129247926298e-5,4.3805913400348664e-8,0.003003916505986112,-2.3999045197511412e-5,4.3779791639210484e-8,0.0030043458018004154,-2.3908648392456543e-5,4.3639009503235175e-8,0.003004749546491452,-2.3746015567883387e-5,4.338995688522113e-8,0.0030051010544452283,-2.3527756377723387e-5,4.305786620408989e-8,0.003005380278727441,-2.3282359290256304e-5,4.268578367873625e-8,0.0030055791218540325,-2.3046814799346892e-5,4.232942511550203e-8,0.003005705403471987,-2.2860300990568903e-5,4.2047613637055405e-8,0.0030057838269298923,-2.2755768795899834e-5,4.188959157506121e-8,0.0030058528292368726,-2.275134395340437e-5,4.188212374752424e-8,0.003005957307061821,-2.2843946110056914e-5,4.2020014794074985E-08,0.003006138413427418,-2.300724171618979e-5,4.226319699714995e-8,0.0030064225790959894,-2.319527741556905e-5,4.254234844837243e-8,0.003006812562702178,-2.335201743558618e-5,4.277330694714285e-8,0.0030072836012702583,-2.3425444976355578e-5,4.2878234687331705e-8,0.003007787264335132,-2.3382901257872224e-5,4.280856410095554e-8,0.003008263689228249,-2.3222450315454287e-5,4.2561953877304193e-8,0.0030086592071474436,-2.2974830200955383e-5,4.218511547518296e-8,0.0030089426676550976,-2.26937486182808e-5,4.17591305405803e-8,0.00300911333844383,-2.2438134195979213e-5,4.137267939823414e-8,0.003009197487585295,-2.225432969879038e-5,4.1095226879594374e-8,0.003009236757661162,-2.216547948200621e-5,4.0961121500672567e-8,0.003009274709149118,-2.217043771176245e-5,4.09681037873079e-8,0.0030093468102407217,-2.224960297551781e-5,4.108625065125137e-8,0.003009475717436156,-2.2373205783984607e-5,4.1270546851323725e-8,0.003009670815179887,-2.250862585044295e-5,4.147189797251425e-8,0.0030099299700386954,-2.2625428795493783e-5,4.164463699013084e-8,0.00301024187402901,-2.269838136100306e-5,4.1750971465696804e-8,0.003010588197802463,-2.2709282253166442e-5,4.17636812926794e-8,0.0030109454772800953,-2.2648401738654642e-5,4.1668279995880246e-8,0.0030112871514783373,-2.2515993789587058e-5,4.1465320020488957e-8,0.003011586410402015,-2.2323777967550487e-5,4.1172650945728414e-8,0.003011820354517727,-2.2095615453953176e-5,4.082642765490463e-8,0.0030119753682766987,-2.1866121724890676e-5,4.0478962804724885e-8,0.0030120526329220835,-2.167596603147096e-5,4.019155827324615e-8,0.003012071619005174,-2.1563470526289128e-5,4.002177521312465e-8,0.0030120689879420764,-2.1553983387326334e-5,4.0007412510859045e-8,0.0030120914835277484,-2.1650539471334874e-5,4.015251477306536e-8,0.003012183981443884,-2.1829957093484467e-5,4.0421644155871945e-8,0.003012376436940448,-2.2046872823385574e-5,4.074612539538994e-8,0.003012674385510726,-2.2245060636632923e-5,4.104120937557746e-8,0.003013056385483303,-2.237249037808146e-5,4.122877520759659e-8,0.003013479206572159,-2.2395363336080645e-5,4.125840285038834e-8,0.00301388907552939,-2.2307009988112173e-5,4.112064949092303e-8,0.003014235716569667,-2.21292539477236e-5,4.0848957479960844e-8,0.0030144852458368573,-2.1905904722336058e-5,4.0509715506145036e-8,0.003014628140393211,-2.1690273931464643e-5,4.0183354013727575e-8,0.0030146798861370155,-2.1530670765035162e-5,3.9942465173289727e-8,0.003014674513909391,-2.1458647516230403e-5,3.9834154839566405e-8,0.0030146539150070514,-2.1483480978725524e-5,3.9871866653527925e-8,0.003014657045850174,-2.159355446238517e-5,4.003762590554032e-8,0.0030147123189946208,-2.1762610361229233e-5,4.029158028075859e-8,0.0030148344079461886,-2.1957660138997936e-5,4.0583952504102195e-8,0.003015024723893025,-2.214588593896058e-5,4.0865392615269084e-8,0.0030152739036193445,-2.22993320272481e-5,4.109395623141755e-8,0.0030155648211872598,-2.239750335835605e-5,4.123893927793968e-8,0.0030158753159103555,-2.242862410171888e-5,4.1282740545661414e-8,0.0030161804959735242,-2.239035571976067e-5,4.122196425411615e-8,0.0030164549748184135,-2.2290484655788065e-5,4.106850249505057e-8,0.0030166756785176938,-2.2147566876471484e-5,4.085053467582822e-8,0.0030168257902463656,-2.1990840651876128e-5,4.0612367627877493e-8,0.0030168998356597245,-2.185809576971141e-5,4.041113557692705e-8,0.003016908801918456,-2.1790004412026398e-5,4.030814374624823e-8,0.0030168827390098687,-2.1820318277313286e-5,4.035402021045058e-8,0.0030168675107474373,-2.19637983748077e-5,4.057054444845606e-8,0.003016913871536386,-2.220687703617631e-5,4.09366942603126e-8,0.003017061280745224,-2.2507121073764624e-5,4.138801109760418e-8,0.0030173232653145413,-2.28042122748035e-5,4.1833304318833444e-8,0.0030176816547766365,-2.3038752114974032e-5,4.218308051823787e-8,0.003018092461901088,-2.317060860472061e-5,4.2377204037070425e-8,0.0030185000617629827,-2.3189358211647577e-5,4.240056434796237e-8,0.0030188531890023565,-2.3114278349446322e-5,4.2282916648184983e-8,0.0030191172695145925,-2.298608274263823e-5,4.2086230161827244e-8,0.003019280521670172,-2.2854616393563075e-5,4.188596434454325e-8,0.00301935377876645,-2.27664496809722e-5,4.1752283274555145e-8,0.0030193653932179577,-2.2755137035095014e-5,4.173540981919782e-8,0.0030193531828910203,-2.2835689436507088e-5,4.185743087774839e-8,0.003019355569264338,-2.3003756094996915e-5,4.211123646364793e-8,0.003019403958407845,-2.323899690414335e-5,4.246574371735947e-8,0.003019517875462904,-2.3511172447957385e-5,4.2875145551518413e-8,0.003019703373553423,-2.3786991097561844e-5,4.328922423781491e-8,0.003019954219332213,-2.4036029761377636e-5,4.3662218358333147e-8,0.003020254766068992,-2.423482031971884e-5,4.395891153209101e-8,0.003020583367897793,-2.4369010761043288e-5,4.415784033020523e-8,0.0030209155492026242,-2.4434102956819604e-5,4.425239523927991e-8,0.0030212267021837735,-2.443546844269732e-5,4.4250868318591255e-8,0.0030214945520319145,-2.438812313993975e-5,4.417614262844354e-8,0.0030217018620748537,-2.4316298536123176e-5,4.406504030121207e-8,0.0030218398456035413,-2.4252307744576375e-5,4.396654725060574e-8,0.003021912331535931,-2.4233602777596313e-5,4.39372627104561e-8,0.0030219396761021347,-2.429662036167427e-5,4.4032012805518794e-8,0.0030219599100410016,-2.4466782499552282e-5,4.4288740896769435e-8,0.00302202361177359,-2.4746531459929342e-5,4.47105455738881e-8,0.003022180395983599,-2.5107010582484676e-5,4.525329764117915e-8,0.003022460057180725,-2.5490814286278737e-5,4.5829951905006934e-8,0.003022857627761485,-2.5828964736561783e-5,4.633626256410645e-8,0.003023332267934383,-2.6065721301283244e-5,4.668826880948124e-8,0.003023821927221237,-2.6178133626157623e-5,4.685181828073514e-8,0.0030242654527104103,-2.618060722133502e-5,4.6849397702988095e-8,0.00302462064736006,-2.6115003315723564e-5,4.674500325784846e-8,0.003024872054652819,-2.6034210741007566e-5,4.661907867346306e-8,0.003025029247398639,-2.5987096868666402e-5,4.654559337911846e-8,0.003025119674183166,-2.600869221520683e-5,4.657718713531259e-8,0.0030251798618585422,-2.6115962524536738e-5,4.6738915646380234e-8,0.003025247304514287,-2.6307892425086884e-5,4.702858653637406e-8,0.0030253540345252404,-2.6568373656992416e-5,4.742130825887169e-8,0.003025522180290973,-2.6870812112854194e-5,4.7876552038498893e-8,0.0030257616742353777,-2.718362842899639e-5,4.834647617031556e-8,0.0030260701248843638,-2.7475754898200334e-5,4.878418797216237e-8,0.003026434531440565,-2.7721296131052857e-5,4.915072369570908e-8,0.003026834267375794,-2.790282528074767e-5,4.941997646359749e-8,0.003027244652317317,-2.801310467185596e-5,4.958126578195143e-8,0.00302764045789911,-2.8055375984440208e-5,4.963976761859313e-8,0.0030279989828120874,-2.8042678247256376e-5,4.961548465878466e-8,0.003028302732030385,-2.7996614735003015e-5,4.9541371336797554e-8,0.0030285419382640503,-2.7945668380696642e-5,4.946074008271887e-8,0.0030287171664962805,-2.7922799028450726e-5,4.9423540183523226e-8,0.003028841979820805,-2.796162115926255e-5,4.948048077466765e-8,0.0030289448272879803,-2.8090202994150213e-5,4.967360897101288e-8,0.00302906808799766,-2.832216698757468e-5,5.002291747065914e-8,0.003029261393516597,-2.8646859820436187e-5,5.051165188848918e-8,0.0030295674732655794,-2.9023648863821986e-5,5.107788139765754e-8,0.0030300035036457318,-2.9387468552092513e-5,5.1622994265168756e-8,0.003030547654439084,-2.966892547984612e-5,5.204210187529804e-8,0.0030311419708281494,-2.9821700123341288e-5,5.226546402242462e-8,0.003031713429022907,-2.9841451121119933e-5,5.228710697781398e-8,0.0030322015269454838,-2.9764614366811912e-5,5.216297581619774e-8,0.003032576700297681,-2.964992539693665e-5,5.1982771928407634e-8,0.0030328427049061664,-2.95558177823456e-5,5.18354400080819e-8,0.0030330273738204275,-2.952483864326578e-5,5.178537523848844e-8,0.0030331699517057442,-2.9577898541893805e-5,5.1863748181959154e-8,0.0030333104138618784,-2.9715604944099784e-5,5.207074030425486e-8,0.003033482465717576,-2.9922976396352082e-5,5.238294189196952e-8,0.0030337098242709487,-3.017493755703473e-5,5.276185486031358e-8,0.0030340047066781646,-3.0441434203506502e-5,5.316170038656006e-8,0.0030343677318868385,-3.069201162682167e-5,5.353632168723621e-8,0.0030347889661070187,-3.089987345211356e-5,5.384526338775909e-8,0.0030352499978571756,-3.104524236184448e-5,5.405880170678398e-8,0.0030357268634388502,-3.111778908424594e-5,5.416158516454266e-8,0.0030361935715449567,-3.1117887001919675e-5,5.415451590233293e-8,0.003036625814699871,-3.105651407747209e-5,5.4054586154864e-8,0.003037004388893214,-3.095390233892545e-5,5.3892806738359834e-8,0.003037318044491069,-3.083722670992275e-5,5.3710656905416486e-8,0.0030375656938618433,-3.073753439132445e-5,5.355535566628204e-8,0.0030377579336559293,-3.068595891553895e-5,5.347403607373892e-8,0.0030379177300265737,-3.0709070813912385e-5,5.350663829087113e-8,0.00303807966723912,-3.0823076928323533e-5,5.367713979638666e-8,0.0030382864205653216,-3.102708512509555e-5,5.3983480616954495e-8,0.003038580787609243,-3.1297162733261364e-5,5.438876948576837e-8,0.0030389926926067358,-3.158502205672186e-5,5.481947606929273e-8,0.003039524072818,-3.1826340398447944e-5,5.517809779127173e-8,0.0030401396754807146,-3.196074975273588e-5,5.5373393880473416e-8,0.0030407732402690456,-3.1956872342941396e-5,5.5358273365942866e-8,0.0030413506216760183,-3.1827784431995975e-5,5.515324561172027e-8,0.0030418182463314066,-3.1625541651179424e-5,5.4838080988230775e-8,0.003042160215499455,-3.141800758364335e-5,5.4516451859117366e-8,0.003042396527409552,-3.126315753054347e-5,5.4276642795710085e-8,0.003042568426483442,-3.119410063882663e-5,5.416865946881467e-8,0.0030427219468042673,-3.121729790939866e-5,5.4201628447496637e-8,0.0030428965072263536,-3.131876817788899e-5,5.435349924198628e-8,0.0030431195875498325,-3.1472417249374476e-5,5.4583966139684054e-8,0.003043405671120528,-3.164719823662061e-5,5.48454888443154e-8,0.003043757278206,-3.181220441401584e-5,5.509103044165085e-8,0.0030441666670632966,-3.194016210578213e-5,5.527928024881129e-8,0.0030446177728978936,-3.2010055857858906e-5,5.537854846801234e-8,0.0030450884814295937,-3.200922767702134e-5,5.5369895852801475e-8,0.003045553386619406,-3.193493319092446e-5,5.524947681257876e-8,0.003045987115545042,-3.179510076572901e-5,5.502968803317016e-8,0.0030463680745412454,-3.1607871380829794e-5,5.473845618856727e-8,0.0030466821164058687,-3.139963516825679e-5,5.441621391559135e-8,0.0030469255028017037,-3.120163298944072e-5,5.4110664553357935e-8,0.003047106649642553,-3.1045429760949075e-5,5.3869815322197836e-8,0.003047246264489913,-3.0957724333207185e-5,5.373401644060654e-8,0.0030473756148905722,-3.0955076276420677e-5,5.372793333790556e-8,0.0030475327337165107,-3.10391075449408e-5,5.385333611732599e-8,0.0030477562593878016,-3.119291882112134e-5,5.408383161903094e-8,0.0030480767420623433,-3.138019112187306e-5,5.436371344206401e-8,0.003048506271394186,-3.154923496407961e-5,5.461427067933738e-8,0.003049029398017934,-3.164403612417949e-5,5.4750595244403097E-08,0.003049600741217892,-3.162181473782961e-5,5.470817249590223e-8,0.0030501546590933595,-3.147129459702184e-5,5.447053534930495e-8,0.0030506267199089275,-3.122124129326912e-5,5.408216609011085e-8,0.003050977543809847,-3.0931489493301834e-5,5.363475132421305e-8,0.0030512056349143645,-3.066970206362606e-5,5.323164358366911e-8,0.0030513427951945633,-3.048709541508865e-5,5.2950735410073135e-8,0.0030514375272195533,-3.0405493613713788e-5,5.2824725934812176e-8,0.0030515374213706445,-3.0418359774685625e-5,5.284287745599565e-8,0.003051677995809869,-3.050014466075965e-5,5.296553808075435e-8,0.0030518790092155215,-3.061696562449272e-5,5.314062781446654e-8,0.003052145625853913,-3.073469977610028e-5,5.3316031028704927e-8,0.0030524714707749288,-3.082377392153637e-5,5.344682144560079e-8,0.0030528417493476028,-3.086160174564249e-5,5.34988474804598e-8,0.0030532358836312897,-3.0833881042707114e-5,5.345060667689741e-8,0.003053629879526026,-3.0735485986035706e-5,5.3294565854492434e-8,0.0030539988364117142,-3.0571146292916206e-5,5.30382059792326e-8,0.0030543199507090837,-3.0355674406952507e-5,5.270438907050841e-8,0.0030545760956502454,-3.0113150877368533e-5,5.233010961195881e-8,0.00305475954547292,-2.9874438142143042e-5,5.1962653663563995e-8,0.003054874940487383,-2.967277780668974e-5,5.165280031939516e-8,0.0030549404324154324,-2.9537825570307475e-5,5.144563962738253e-8,0.0030549861390338404,-2.9489134143288323e-5,5.137059250576423e-8,0.0030550495976808005,-2.953061394193003e-5,5.143300630399881e-8,0.003055168710759939,-2.9647526534915528e-5,5.160970828560753e-8,0.0030553733364540553,-2.9807121158297693e-5,5.1850176986509324e-8,0.0030556770688369554,-2.9963521348213533e-5,5.208418350889287e-8,0.0030560711382057876,-3.0066914121891328e-5,5.223590149011024e-8,0.003056522783852153,-3.007606385331831e-5,5.224295582005858e-8,0.0030569803906741184,-2.9971466768568165e-5,5.207634125974998e-8,0.0030573862107332603,-2.9764480348069197e-5,5.1754164969916074e-8,0.0030576939719519337,-2.9497043921062268e-5,5.134105271121149e-8,0.0030578844960596806,-2.9229485363525857e-5,5.092940536552576e-8,0.0030579714726823846,-2.9020378842860718e-5,5.060856308901679e-8,0.00305799430929109,-2.890783769790072e-5,5.0436246780448754e-8,0.0030580024833647516,-2.8900743931462217e-5,5.042530128741445e-8,0.0030580398139917744,-2.8981793723107103e-5,5.0548579370877406e-8,0.0030581349144192635,-2.9117796452997896e-5,5.075489270553819e-8,0.0030582989710085853,-2.927092112731661e-5,5.0986296117823764e-8,0.00305852838098303,-2.9406906130383003e-5,5.1190589621726315e-8,0.00305880913029923,-2.9499417804318987e-5,5.132784410791377e-8,0.0030591209014314944,-2.9531615236497716e-5,5.1372652866946216e-8,0.003059440241717404,-2.949633831159525e-5,5.131434068941656e-8,0.00305974298908132,-2.9395907947313022e-5,5.1156659354477445e-8,0.0030600065090859636,-2.9241933794825013e-5,5.091753916282965e-8,0.00306021229511157,-2.9054948323373344e-5,5.062856693783168e-8,0.003060349177847135,-2.8863199511689882e-5,5.033312632870034e-8,0.003060416814008068,-2.8699745555567035e-5,5.008188395273282e-8,0.0030604284223485962,-2.8597283966096064e-5,4.992478512143156e-8,0.0030604111977471983,-2.858098323762389e-5,4.990002248696701e-8,0.0030604029204521956,-2.8660871126497475e-5,5.002240613766968e-8,0.0030604443802250266,-2.8826475438747818e-5,5.027527520898142e-8,0.0030605691021830185,-2.9046441406551585e-5,5.061009175503469e-8,0.00306079346737266,-2.927436144349517e-5,5.0955543464884993e-8,0.0030611106463299936,-2.945974872572592e-5,5.123445153963956e-8,0.003061490627398194,-2.9561147187201426e-5,5.1383839021491824e-8,0.0030618866932196325,-2.9557585511589545e-5,5.137235223398255e-8,0.0030622468460100747,-2.9455021239405097e-5,5.1209933881528055e-8,0.0030625273270125427,-2.9285654512983767e-5,5.0946554534423536e-8,0.0030627045011972953,-2.909970499319971e-5,5.065943900038011e-8,0.003062781223049597,-2.8951506243513924e-5,5.043168206571564e-8,0.0030627851170516554,-2.8884214842026012e-5,5.032886811317642e-8,0.003062759221135395,-2.8918582214671775e-5,5.038203695084455e-8,0.0030627487734678108,-2.9049687038960627e-5,5.0582911500186546e-8,0.0030627893702877065,-2.9251814457828465e-5,5.0891584468485985e-8,0.0030629003148716434,-2.9488179827505706e-5,5.1251525998749074e-8,0.0030630839037973016,-2.972103318011528e-5,5.160504457192073e-8,0.0030633288315558426,-2.9918997653759335e-5,5.190441062046527e-8,0.003063615124797014,-3.0060785653816723e-5,5.211739828811116e-8,0.003063918729338474,-3.013609360645597e-5,5.222854366679751e-8,0.003064214995878956,-3.014497667576545e-5,5.223815136496016e-8,0.0030644811540353513,-3.0096760320048008e-5,5.2160662139867385e-8,0.003064698316991432,-3.0009023509637796e-5,5.202315302953461e-8,0.0030648536429064674,-2.990656924730143e-5,5.1863784882354814e-8,0.0030649429933266646,-2.9819741475536308e-5,5.1729180727117875e-8,0.0030649738454125133,-2.9781167475517766e-5,5.166933721709507e-8,0.0030649674206902153,-2.98201748061254e-5,5.172897531156119e-8,0.0030649581828044383,-2.9955006804012056e-5,5.19355879701887e-8,0.0030649887015580467,-3.0184701153387606e-5,5.2287079973691934e-8,0.0030650993228122743,-3.048438554024296e-5,5.274472973817438e-8,0.0030653151426291397,-3.080799959377198e-5,5.3237545317571995e-8,0.0030656356436287177,-3.109971429626911e-5,5.36798936350581e-8,0.003066032397083313,-3.131062399609393e-5,5.3997123564829124e-8,0.0030664566457068772,-3.141392264624986e-5,5.414878191396371e-8,0.003066853673243906,-3.141241782904111e-5,5.414000445922996e-8,0.003067178107954643,-3.1336255718859404e-5,5.401782535141934e-8,0.003067405017322031,-3.123297452844401e-5,5.385569119674471e-8,0.0030675342967685115,-3.115406523908855e-5,5.3732673458228506e-8,0.0030675883450696387,-3.1142126616185284e-5,5.3713731593782084e-8,0.003067604598905477,-3.122165258980363e-5,5.3835712946092174e-8,0.0030676253853558076,-3.139518885501176e-5,5.41016984091395e-8,0.0030676878955794595,-3.164514859820826e-5,5.448403678006608e-8,0.0030678167760080873,-3.1940102956282886e-5,5.4934156079083943e-8,0.00306802082106185,-3.22432379520567e-5,5.539556794925043e-8,0.0030682938008947383,-3.252038055262967e-5,5.581610023286302e-8,0.003068618188348601,-3.2745712319185725e-5,5.6156527333722295e-8,0.0030689700372110436,-3.290455445210272e-5,5.63947158589191e-8,0.0030693235621584002,-3.299368835276426e-5,5.652604281911584e-8,0.0030696546829265168,-3.302018003318915e-5,5.656158441311524e-8,0.003069943501781531,-3.299964329710182e-5,5.652548727111865e-8,0.0030701761356594238,-3.295448884467991e-5,5.6452316329964884e-8,0.0030703464351241215,-3.2912168983386934e-5,5.6384348797087725e-8,0.0030704579205523843,-3.290292724600728e-5,5.6368046064395786e-8,0.0030705257705411666,-3.2956240209135014e-5,5.6448491101539555e-8,0.003070577902929506,-3.3095212754677564e-5,5.666072725949836e-8,0.003070653303256023,-3.332901887976236e-5,5.7018206275630994e-8,0.0030707954675129484,-3.3645317050531466e-5,5.750131258839977e-8,0.003071040281409215,-3.4006866132882734e-5,5.805237688321617e-8,0.003071401442066699,-3.435724590922433e-5,5.858460257890024e-8,0.003071860664240823,-3.463707718078335e-5,5.900700173455468e-8,0.003072369948294953,-3.4805077484133635e-5,5.9256687131385314e-8,0.0030728668933984586,-3.4853323968064e-5,5.932224867940723e-8,0.00307329574470014,-3.4808729472292477e-5,5.9245906426521214e-8,0.0030736238628414326,-3.472127382584356e-5,5.910521892617646e-8,0.0030738476136962186,-3.4646440956723325e-5,5.898583976281836e-8,0.0030739883560582247,-3.462984017376718e-5,5.895772090868357e-8,0.0030740829181741033,-3.46981445897087e-5,5.906122528438606e-8,0.0030741729261370603,-3.485661305223858e-5,5.930354340403719e-8,0.0030742957031104122,-3.509154811261891e-5,5.966276668283171e-8,0.0030744779277463736,-3.537572740023708e-5,6.00964697542749e-8,0.0030747323559975367,-3.5675189893930766e-5,6.055223916889516e-8,0.003075057487670119,-3.5956061174078274e-5,6.097812908001633e-8,0.0030754397046584866,-3.619027550379833e-5,6.133134047523962e-8,0.0030758570531433604,-3.6359408441814945e-5,6.158398173260262e-8,0.0030762836935755364,-3.645637499575067e-5,6.17255797130405e-8,0.0030766941332692503,-3.6485215974385064e-5,6.176270393282051e-8,0.00307706662715048,-3.645952970605651e-5,6.17165520944473e-8,0.0030773855806581914,-3.64002479832436e-5,6.161954383422073e-8,0.0030776432027652626,-3.63332416409525e-5,6.151163570192726e-8,0.003077840759611733,-3.628682113866609e-5,6.143643256726638e-8,0.003077989627912044,-3.628885788142236e-5,6.143667890109774e-8,0.0030781120193623807,-3.6363006241524466e-5,6.154837667649236e-8,0.0030782405956229293,-3.652349964920907e-5,6.179278977302228e-8,0.0030784153961581056,-3.6768720995789186e-5,6.216668724687254e-8,0.003078676287039924,-3.707542807113103e-5,6.263368664319519e-8,0.0030790504999446576,-3.739763323181358e-5,6.312273725650803e-8,0.0030795385416962856,-3.767491089624212e-5,6.354097060212617e-8,0.0030801063485889927,-3.7851372011602716E-05,6.380282181650783e-8,0.003080691860843348,-3.789839797156401e-5,6.3864909335135015E-08,0.0030812263089583505,-3.782804205247127e-5,6.374660437345014e-8,0.0030816595018051856,-3.768799022595951e-5,6.352218567186832e-8,0.003081975175275685,-3.754141745986299e-5,6.328960513196501e-8,0.0030821904003572086,-3.7444257862379394e-5,6.313520651894206e-8,0.003082343638281676,-3.743069219176931e-5,6.311124043335557e-8,0.0030824800552818033,-3.7509564541134194e-5,6.323047245576145e-8,0.0030826400072475326,-3.7668452785068254e-5,6.347276711043042e-8,0.003082852413765722,-3.788093848520992e-5,6.379661295313797e-8,0.003083132266538477,-3.811403698482697e-5,6.415076333549884e-8,0.0030834808667202927,-3.833449478651092e-5,6.448396137955909e-8,0.0030838877341181153,-3.8513714836371074e-5,6.475242681002939e-8,0.0030843336004778847,-3.8631288755844996e-5,6.49251538042667e-8,0.003084794042322366,-3.867707285475078e-5,6.49869875714132e-8,0.0030852433321181686,-3.865183435490819e-5,6.49395475346079e-8,0.0030856581339217173,-3.856655888053119e-5,6.48001336398034e-8,0.0030860206460516367,-3.844058492853828e-5,6.459884806542256e-8,0.0030863208771382037,-3.8298947069799535e-5,6.437449277747022e-8,0.0030865580404335806,-3.816935596666206e-5,6.416988298112212e-8,0.0030867412223701774,-3.807898089265322e-5,6.402682842646071e-8,0.0030868893766480983,-3.8050984731237867e-5,6.398072676630348e-8,0.0030870304944824955,-3.810068561233592e-5,6.405462439468387e-8,0.003087199430753806,-3.823122572618231e-5,6.425261522376926e-8,0.0030874333446925814,-3.842914766591009e-5,6.455320872359164e-8,0.0030877636895722525,-3.866159342862816e-5,6.490525234810125e-8,0.0030882049718960573,-3.887836166676586e-5,6.523127311346362e-8,0.003088743561312213,-3.9022341755227606e-5,6.544356507347711e-8,0.003089333590640843,-3.904860755320145e-5,6.547348840413299e-8,0.0030899071036917716,-3.894510170953161e-5,6.530322358465656e-8,0.0030903979050176593,-3.8742004346281896e-5,6.498015271661827e-8,0.003090767228006569,-3.8501181533249536e-5,6.460049051721142e-8,0.0030910160608724553,-3.8290854101103754e-5,6.426997931057188e-8,0.0030911786470456865,-3.816087723268984e-5,6.406549047523721e-8,0.003091304636594572,-3.81308943961482e-5,6.401668515462453e-8,0.0030914415331645385,-3.819243835001492e-5,6.410948319588161e-8,0.003091624053373996,-3.831851468248846e-5,6.430123035197483e-8,0.0030918706623143453,-3.8474104361764894e-5,6.453722136219927e-8,0.0030921846709144477,-3.8624255014770126e-5,6.476330985906157e-8,0.0030925572633731823,-3.8739191826344275e-5,6.493373044917373e-8,0.0030929709124494467,-3.879722444333691e-5,6.501542077873879e-8,0.003093402731555433,-3.8786312162609277e-5,6.499027635350036e-8,0.0030938277663450082,-3.870467412242986e-5,6.485599547202599e-8,0.0030942222139669767,-3.856054410640383e-5,6.462566902485165e-8,0.003094566519648795,-3.8371053174280506e-5,6.432606100579885e-8,0.0030948481721392368,-3.816012347433993e-5,6.399436069664364e-8,0.003095063804553022,-3.795541247827492e-5,6.36734419165358e-8,0.003095220250846101,-3.778464042825393e-5,6.34061366452044e-8,0.003095334440344874,-3.76716671513097e-5,6.322910755980504e-8,0.00309543208101415,-3.76325912073004e-5,6.316677889485286e-8,0.0030955450293822886,-3.767217508425234e-5,6.32258396731875e-8,0.003095707183071852,-3.778095740397159e-5,6.339090801722296e-8,0.00309594862334514,-3.793365750566644e-5,6.36222778804018e-8,0.003096287931628474,-3.80901905074783e-5,6.385770713701393e-8,0.0030967236941520254,-3.8201303672671125e-5,6.402124536059043e-8,0.003097228280907147,-3.822036947682624e-5,6.404140759803494e-8,0.0030977490184312755,-3.8120022723220564e-5,6.387670810024808e-8,0.0030982210755350135,-3.7907147081520453e-5,6.353864073301886e-8,0.0030985900761617553,-3.762610731223205e-5,6.309655120907573e-8,0.0030988336384995293,-3.734434007536094e-5,6.265523738702239e-8,0.003098968816215725,-3.7126254709522466e-5,6.231441792645098e-8,0.003099041425769494,-3.7010331236075636e-5,6.213318613669418e-8,0.0030991055833493103,-3.7000963291756114e-5,6.211747094970239e-8,0.0030992057850765756,-3.707503307238412e-5,6.223050579274813e-8,0.0030993681475792695,-3.719515769679686e-5,6.241367766141261e-8,0.0030996000182369945,-3.7321886461173106e-5,6.260562024590069e-8,0.0030998940056717068,-3.742152940130405e-5,6.275433238229519e-8,0.003100233021590866,-3.7469791909199243e-5,6.282264287237035e-8,0.0031005946146256498,-3.74527865541713e-5,6.278957087078115e-8,0.0031009543309571943,-3.7366892039579344e-5,6.264995951136436e-8,0.003101288498980592,-3.721816385706405e-5,6.241351573364313e-8,0.0031015767979117176,-3.702139137135275e-5,6.210337620395833e-8,0.0031018047687390517,-3.679862687950359e-5,6.175387343947005e-8,0.0031019661991720264,-3.657686241831285e-5,6.140695022313485e-8,0.0031020649564957345,-3.638462538015085e-5,6.110684934249384e-8,0.0031021156285978737,-3.624768225270253e-5,6.089338495755532e-8,0.003102142484188417,-3.6184428286903e-5,6.079473351831937e-8,0.0031021765631752685,-3.620172937410701e-5,6.082097958568538e-8,0.0031022510076930674,-3.629208197157182e-5,6.095979473559371e-8,0.0031023950750430954,-3.643289906673445e-5,6.117550104443778e-8,0.0031026275545373554,-3.658852828809345e-5,6.141241349154455e-8,0.0031029505897565103,-3.6715498961018746e-5,6.160314515690131e-8,0.0031033454561945222,-3.677128760644678e-5,6.168223979401771e-8,0.0031037725875075316,-3.672594194239396e-5,6.160407633853862e-8,0.0031041783170027994,-3.6573890333345214e-5,6.13609507617016e-8,0.0031045091130757767,-3.634081561194844e-5,6.099349544356457e-8,0.0031047297909969312,-3.607980110758601e-5,6.058452494813771e-8,0.0031048374201034855,-3.585494963702326e-5,6.023352619407363e-8,0.003104862516995215,-3.5718644691785436e-5,6.002135737673514e-8,0.003104856093193385,-3.569405931092349e-5,5.998319444364333e-8,0.0031048700872880267,-3.577137790618058e-5,6.010288490586609e-8,0.003104941604094109,-3.5916960865466545e-5,6.032745899023271e-8,0.00310508658575867,-3.608784938858073e-5,6.058987181278256e-8,0.003105301813939656,-3.6244129061960325e-5,6.082825896614451e-8,0.0031055709169320175,-3.6355939860998774e-5,6.099670423139435e-8,0.003105870647986892,-3.6405690275413666e-5,6.106846533436347e-8,0.0031061756914431407,-3.638750956805874e-5,6.103492926911871e-8,0.0031064618740461935,-3.630572623697611e-5,6.090315332297189e-8,0.0031067083897661323,-3.617327510332381e-5,6.069340518034317e-8,0.0031068996748370463,-3.6010179052804656e-5,6.043687697777326e-8,0.0031070273067826453,-3.5841809895788134e-5,6.017304374810048e-8,0.003107091924907097,-3.569640763286369e-5,5.994580924865879e-8,0.003107104690948129,-3.5601421586642455e-5,5.979775912534584e-8,0.0031070874280543044,-3.557871974140187e-5,5.976263364692894e-8,0.0031070705639987084,-3.563939705212548e-5,5.985721638430891e-8,0.00310708845076731,-3.577953751271076e-5,6.007479140748683e-8,0.0031071724854550274,-3.597857902840596e-5,6.0382741421625e-8,0.003107343449944664,-3.620155104969642e-5,6.072622362437715e-8,0.0031076051132779385,-3.640540195274204e-5,6.10381901744192e-8,0.0031079410880545904,-3.6548419234103456e-5,6.125412657583635e-8,0.0031083163328670636,-3.6600797795219e-5,6.132843658673388e-8,0.003108683776045806,-3.655377779638129e-5,6.12484672972554e-8,0.0031089953478281146,-3.642449473760269e-5,6.104178540723422e-8,0.0031092151923365167,-3.6254006005909544e-5,6.077284786520125e-8,0.003109331132111241,-3.6097367552710236e-5,6.052739707346827e-8,0.00310935954808475,-3.6007610042852635e-5,6.038750927329051e-8,0.0031093404361101393,-3.601917120844064e-5,6.04059490162074e-8,0.0031093239113226005,-3.6137917913298556e-5,6.059089030936383e-8,0.003109354124427072,-3.6341991680345246e-5,6.090751315544337e-8,0.0031094576079410963,-3.6591899919457295e-5,6.12939239128099e-8,0.003109639723574992,-3.684400498898479e-5,6.168222747975021e-8,0.003109888172433052,-3.706155993675539e-5,6.201562972733295e-8,0.003110179865335902,-3.7220522609188814e-5,6.225730522644977e-8,0.0031104876813696455,-3.731061864999249e-5,6.239184703464731e-8,0.00311078539719096,-3.733367074941028e-5,6.242252235980394e-8,0.0031110506840359895,-3.730106234421321e-5,6.236728729470829e-8,0.003111266829818254,-3.723134017143124e-5,6.225510727514509e-8,0.0031114239398752712,-3.7148181411718e-5,6.212287206499815e-8,0.0031115201531575613,-3.7078419428024274e-5,6.201236188919679e-8,0.003111562975299694,-3.7049500972479054e-5,6.196625586571644e-8,0.003111570240611829,-3.7085775629295866e-5,6.20222732746493e-8,0.0031115696907623807,-3.720350361712773e-5,6.220533256957703e-8,0.003111595961660061,-3.740535774526301e-5,6.251900193071125e-8,0.0031116842348012787,-3.7676298720104116e-5,6.293919212979045e-8,0.0031118612256879658,-3.798340020650173e-5,6.341407163920447e-8,0.003112136139777003,-3.828150901245256e-5,6.387306782824209e-8,0.003112495379209596,-3.852427301854293e-5,6.424415997620797e-8,0.003112903926884855,-3.867726198381603e-5,6.447432367142958e-8,0.0031133136874417224,-3.872848224078679e-5,6.454579824951314e-8,0.0031136761793375063,-3.8692456923064395E-05,6.448222652228261e-8,0.0031139554371912236,-3.860656882561176e-5,6.434267804320025e-8,0.0031141372703484766,-3.8521032659985596e-5,6.420576709598722e-8,0.0031142324513703736,-3.848555621137015e-5,6.414873497201981e-8,0.003114273122112332,-3.85363882869955e-5,6.422732768153216e-8,0.0031143034616922818,-3.868736365238427e-5,6.446208120483557e-8,0.0031143674207793413,-3.892758353008189e-5,6.483503018920008e-8,0.003114497459059395,-3.9226240381586666e-5,6.529750515880651e-8,0.0031147078121036174,-3.954245370409532e-5,6.578559894383833e-8,0.00311499378960663,-3.983627974908429e-5,6.623730004445356e-8,0.0031153360888836355,-4.007726426013293e-5,6.660567612073376e-8,0.0031157075151952004,-4.024868825724295e-5,6.686529743458914e-8,0.00311607947574405,-4.034776414925683e-5,6.701237492469503e-8,0.0031164267230209515,-4.038331710088937e-5,6.706105409678788e-8,0.0031167301083817336,-4.037260325837689e-5,6.703845169512361e-8,0.003116977890976981,-4.033831580823609e-5,6.698004129434217e-8,0.0031171663505323325,-4.030610095786534e-5,6.692583316158584e-8,0.0031173002857739405,-4.030233658179883e-5,6.691691302618574e-8,0.0031173935830516013,-4.035158745219613e-5,6.699141672014888e-8,0.003117469472534857,-4.047311163717984e-5,6.71790093138832e-8,0.0031175594775110223,-4.067616621474953e-5,6.749354678239481e-8,0.0031176996760878236,-4.095478103045957e-5,6.792501578391407e-8,0.003117923245200117,-4.1284097202451735e-5,6.843400804444655e-8,0.003118249965451604,-4.162156390749211e-5,6.895378532468487e-8,0.0031186762577232225,-4.1915651713568604e-5,6.940399276282996e-8,0.0031191714040973333,-4.212116830683181e-5,6.971456663709166e-8,0.0031196840741649716,-4.2215346438736336e-5,6.985077033810668e-8,0.003120157847027817,-4.220674667049533e-5,6.98269624957057e-8,0.0031205489414833265,-4.2132362620646234e-5,6.97018734876997e-8,0.0031208383916512266,-4.20448327662397e-5,6.955836204462521e-8,0.003121034785095203,-4.199616018547974e-5,6.947774286240719e-8,0.003121168632125931,-4.202421267565137e-5,6.951862361251391e-8,0.0031212820770698153,-4.214528318978495e-5,6.970544612819716e-8,0.0031214177248149594,-4.235306877230772e-5,7.002722768273191e-8,0.0031216092731973467,-4.2622792035729374e-5,7.044435725304227e-8,0.0031218754919343627,-4.2918580516760454e-5,7.090035608149642e-8,0.0031222181803268524,-4.320209457310386e-5,7.133539946884241e-8,0.003122623947005099,-4.344044848734895e-5,7.169857291254788e-8,0.00312306884485219,-4.361179467816571e-5,7.195639886437939e-8,0.003123524289638139,-4.370774340490241e-5,7.209642624241596e-8,0.0031239626656890764,-4.373282262997294e-5,7.21262580887302e-8,0.0031243615440335547,-4.3701909396077086e-5,7.206948965492392e-8,0.0031247061538028763,-4.3636780471882876e-5,7.196033443639855e-8,0.0031249903765416783,-4.356272900897019e-5,7.183837800351165e-8,0.0031252168682957006,-4.3505688790359626e-5,7.174410685588453e-8,0.0031253968441908885,-4.348975073626395e-5,7.17150048965672e-8,0.0031255497310814042,-4.35346390742139e-5,7.178155313739291e-8,0.00312570246406995,-4.3652662272077505e-5,7.196242839516862e-8,0.0031258876523310264,-4.384487979547073e-5,7.225856364534224e-8,0.003126139361453899,-4.409699636109416e-5,7.26468964950289e-8,0.003126485461480311,-4.437689592985936e-5,7.307674195249288e-8,0.003126937079372063,-4.4637120813428204e-5,7.347383911846252e-8,0.003127478854765807,-4.482535361453673e-5,7.375675854161458e-8,0.0031280666690904416,-4.490213927602775e-5,7.386449999496449e-8,0.0031286382404406153,-4.4858518891369295e-5,7.37839353542856e-8,0.0031291344460409416,-4.472272685316552e-5,7.356017852034121e-8,0.0031295207052957296,-4.455029894921475e-5,7.328095575302624e-8,0.0031297969026368396,-4.440289276125083e-5,7.304320913549977e-8,0.0031299925059136854,-4.4327735522592144e-5,7.292069128837017e-8,0.0031301525953489643,-4.4346566926362245e-5,7.294663172919162e-8,0.003130323040755186,-4.44552245163689e-5,7.311334170083266e-8,0.0031305398839340287,-4.463002091424208e-5,7.338260528006618e-8,0.00313082404631057,-4.483652215332876e-5,7.369977824422968e-8,0.0031311803606072124,-4.503787355813529e-5,7.400698484506922e-8,0.0031315994383132096,-4.5201450522542784e-5,7.425347439859536e-8,0.0031320612381614877,-4.530356848674249e-5,7.440279963037097e-8,0.0031325396046175753,-4.533218545978504e-5,7.443682235158883e-8,0.003133007088926917,-4.528754210138793e-5,7.435654510846008e-8,0.003133439334571156,-4.51809403698077e-5,7.41801159799911e-8,0.003133818472273233,-4.503213230381495e-5,7.393873233871031e-8,0.003134135205289634,-4.486591093923118e-5,7.367133504974223e-8,0.0031343895555660316,-4.470855447784281e-5,7.34190699593144e-8,0.003134590575431148,-4.4584622562577654e-5,7.322027017012072e-8,0.0031347554245567386,-4.451420562905288e-5,7.310611312884732e-8,0.0031349080100163845,-4.451044644791041e-5,7.309669605942408e-8,0.0031350771198854635,-4.457710742852157e-5,7.319723119373661e-8,0.0031352936217133444,-4.47060605212665e-5,7.339422020383135e-8,0.0031355858958112227,-4.487510826442938e-5,7.365224958348347e-8,0.003135972822388433,-4.5047645339306655e-5,7.391369496033267e-8,0.0031364549294214225,-4.517674188187485e-5,7.410524949995039e-8,0.003137006880828943,-4.521608014150156e-5,7.415499865583744e-8,0.0031375773084138556,-4.513707215275879e-5,7.401903658596108e-8,0.003138101428611319,-4.494515854131807e-5,7.370680978793502e-8,0.0031385245037932065,-4.468383466731007e-5,7.328731665396651e-8,0.0031388241332245405,-4.441996388809048e-5,7.286597138629206e-8,0.003139017499846824,-4.421722026618582e-5,7.254276438257211e-8,0.003139150157383647,-4.411342074013215e-5,7.237653893372397e-8,0.0031392756212672386,-4.411288523762928e-5,7.237306272266767e-8,0.003139437968769991,-4.4192948719133804e-5,7.249557334607343e-8,0.0031396632755686426,-4.431658177299298e-5,7.268500837724008e-8,0.0031399588406845693,-4.444412071309936e-5,7.287870894461722e-8,0.0031403166737552367,-4.454122642373622e-5,7.302295817715162e-8,0.0031407183126958165,-4.4583109623867075e-5,7.307944575839242e-8,0.0031411394477191415,-4.4556196731207386e-5,7.302762227868937e-8,0.0031415539994911366,-4.445830099035177e-5,7.28647417048713e-8,0.003141937728993228,-4.429775179132686e-5,7.260437295376374e-8,0.0031422713373744243,-4.4091609934731785e-5,7.227358181570472e-8,0.0031425429027575314,-4.386309308749254e-5,7.190893225978437e-8,0.0031427494576673834,-4.363836426557965e-5,7.155149576181157e-8,0.0031428974772572276,-4.3442976873453624e-5,7.124128957024562e-8,0.003143002214192302,-4.329843267004607e-5,7.101185038058907e-8,0.003143086052266109,-4.321920239699395e-5,7.088551186228275e-8,0.0031431760678829164,-4.3210361139567735e-5,7.086966698763124e-8,0.0031433008971223707,-4.3265945431617366e-5,7.09542336198036e-8,0.003143486895319873,-4.336813785078726e-5,7.111052058211447e-8,0.0031437533847702066,-4.348759147027911e-5,7.12919612296051e-8,0.0031441069213620117,-4.358585463469756e-5,7.143813366953108e-8,0.003144535476545944,-4.362139298757207e-5,7.148429942205696e-8,0.003145005091611609,-4.3560203673701036e-5,7.137795505629189e-8,0.003145463126681861,-4.3389675112285365e-5,7.11003324650128e-8,0.003145851574927433,-4.3129979926205826e-5,7.068402441148508e-8,0.0031461283507413433,-4.2833959953962696e-5,7.021264040871186e-8,0.003146286100171612,-4.257032356693477e-5,6.979432110562806e-8,0.0031463558591178996,-4.239669820392884e-5,6.951932082306872e-8,0.003146392327049763,-4.233819904869464e-5,6.942631862677053e-8,0.0031464507043553205,-4.2383168839997224e-5,6.94958958380317e-8,0.0031465688651928546,-4.249459392815535e-5,6.966883115670779e-8,0.0031467612849682977,-4.262689345829094e-5,6.987285185595196e-8,0.0031470222789782287,-4.273918499304871e-5,7.004366315740973e-8,0.0031473330289561153,-4.2802158807808166e-5,7.013567759431403e-8,0.003147668417268007,-4.279983806022786e-5,7.01245308551207e-8,0.0031480021049310764,-4.272860133319068e-5,7.00052672228628e-8,0.0031483099313495784,-4.259528124034335e-5,6.978916831189976e-8,0.0031485723125253334,-4.241509647530167e-5,6.950045735299453e-8,0.0031487761173877083,-4.2209454417396814e-5,6.917289890407978e-8,0.0031489161538580373,-4.2003459881328945e-5,6.884596295593158e-8,0.003148996162170557,-4.1822953882087386e-5,6.856021556609623e-8,0.003149028978654053,-4.169106752864223e-5,6.835188836388549e-8,0.003149035482429731,-4.162464544196019e-5,6.824720046102467e-8,0.003149042199251593,-4.163112014627014e-5,6.825739085675065e-8,0.00314907771956232,-4.170639233813112e-5,6.837538674971382e-8,0.0031491682653819867,-4.18342132313785e-5,6.857492364962827e-8,0.0031493329122884942,-4.198742613049102e-5,6.881267918772647e-8,0.003149579039836493,-4.213120402571019e-5,6.903358555963276e-8,0.0031498986271138838,-4.2228420130555436e-5,6.91794432100356e-8,0.0031502664228729867,-4.2247298350746497e-5,6.920097199180307e-8,0.003150641701734798,-4.217078712182122e-5,6.907238815589541e-8,0.0031509754961388586,-4.200545381164349e-5,6.880509810771359e-8,0.0031512238608324395,-4.1785638196682574e-5,6.845392811745735e-8,0.0031513640821730364,-4.1567794289340616e-5,6.810802378555436e-8,0.003151406157010707,-4.141327484247085e-5,6.786370323995615e-8,0.0031513912510576945,-4.136560918026271e-5,6.778876311671728e-8,0.003151375804577231,-4.1434395174820625e-5,6.789730029476199e-8,0.0031514098642566202,-4.159482257943738e-5,6.81492342574456e-8,0.0031515215625475173,-4.18012216288661e-5,6.847194098192803e-8,0.0031517136174996478,-4.200494130433833e-5,6.878861599395965e-8,0.0031519692707481077,-4.216756787951769e-5,6.903911030241721e-8,0.003152261517243071,-4.2266490087485424e-5,6.918851693440988e-8,0.0031525610670786637,-4.229461685062819e-5,6.922644943555905e-8,0.0031528414655990046,-4.22573706176436e-5,6.9162068457332e-8,0.003153081775375267,-4.216923255662013e-5,6.901853417953314e-8,0.0031532678798198805,-4.205077312180638e-5,6.882835975902144e-8,0.0031533932546355388,-4.192616457967239e-5,6.862959482793142e-8,0.0031534595708972847,-4.1820803001536924e-5,6.84621653927876e-8,0.0031534770784778826,-4.175861379115542e-5,6.836364650161207e-8,0.0031534643622982412,-4.17588032667655e-5,6.836409543908077e-8,0.0031534468701465957,-4.183228856251606e-5,6.848035579602831e-8,0.003153453782052926,-4.197854007215975e-5,6.871105220452271e-8,0.003153513263736754,-4.218384148552481e-5,6.903390427614672e-8,0.0031536467429532566,-4.242196322172231e-5,6.940693592124387e-8,0.003153863430347162,-4.265783483101526e-5,6.977446531891138e-8,0.003154156585993926,-4.285397543340932e-5,7.007742427316526e-8,0.00315450279718283,-4.2978622186424466e-5,7.026625449926472e-8,0.0031548650041122103,-4.301400854080456e-5,7.031388230440871e-8,0.00315519943918034,-4.296289169347691e-5,7.022577473855363e-8,0.003155465859320983,-4.285109888117147e-5,7.00436294628589e-8,0.0031556391659936065,-4.272394847220358e-5,6.983943122484468e-8,0.0031557188612724523,-4.263555517927237e-5,6.969842457165365e-8,0.0031557317728420436,-4.263280101975123e-5,6.969387032889604e-8,0.0031557249027450757,-4.2739520543408744e-5,6.98623192302485e-8,0.0031557498994496218,-4.294833096833603e-5,7.019104128047928e-8,0.00315584589866597,-4.322452786249621e-5,7.062447804376743e-8,0.0031560287243041687,-4.3519737897634517e-5,7.108598411323216e-8,0.003156290210848438,-4.378791545601902e-5,7.150311106554863e-8,0.0031566054069980037,-4.3996660675542415e-5,7.182534984786604e-8,0.0031569423808284628,-4.4131253208340974e-5,7.203026754938302e-8,0.003157270337523358,-4.4192994871844845e-5,7.212064457656072e-8,0.003157564470837877,-4.419496903596624e-5,7.211761487890475e-8,0.003157808015852627,-4.415761251223253e-5,7.205364259861087e-8,0.0031579926823708912,-4.4105138784809375e-5,7.196695049477917e-8,0.0031581184957774153,-4.406285452731199e-5,7.189738913692536e-8,0.003158193599416625,-4.4054911516432865e-5,7.188294750699247e-8,0.003158234031798483,-4.4101897275740684e-5,7.195593087373301e-8,0.003158263018098467,-4.421788006294162e-5,7.213822712040806e-8,0.003158309054218505,-4.440704337455989e-5,7.243594276621938e-8,0.0031584021289597524,-4.466069514352587e-5,7.283470938809992e-8,0.0031585679463628875,-4.495603322513259e-5,7.329786169090022e-8,0.003158821045759386,-4.5258255933040026e-5,7.37699600181512e-8,0.003159158924190263,-4.5526890236963015e-5,7.418696615489833e-8,0.0031595597943583466,-4.572549126524957e-5,7.44916678688917e-8,0.003159985788919604,-4.5832004494916494e-5,7.465002833083531e-8,0.003160391467505701,-4.5846244908167024e-5,7.466284408960723e-8,0.003160735390904223,-4.5791651761595475e-5,7.456824370500927e-8,0.003160991329864051,-4.5710340506587154e-5,7.443354724124745e-8,0.0031611557652805296,-4.56525958579643e-5,7.433840211999739e-8,0.0031612493653574466,-4.566356507695597e-5,7.43536688058528e-8,0.0031613116320375638,-4.577082683019708e-5,7.452191859422641e-8,0.00316138983687732,-4.5976704493927694e-5,7.484561016922063e-8,0.0031615255351170207,-4.625816721714404e-5,7.52873081576349e-8,0.00316174330606514,-4.6574539940815696e-5,7.578215147025375e-8,0.0031620456464795553,-4.687999059605023e-5,7.625769376845123e-8,0.003162415165519021,-4.713588347181678e-5,7.665335200741533e-8,0.003162822036835446,-4.731880660958561e-5,7.693289460631574e-8,0.0031632329785881486,-4.7422738256966696e-5,7.708762391075058e-8,0.0031636185498555743,-4.7456548574135615e-5,7.713222429686289e-8,0.003163957394531511,-4.743930170684533e-5,7.709723112409955e-8,0.003164237749092535,-4.7395460395258866e-5,7.702145770310557e-8,0.0031644572629982944,-4.735103026805132e-5,7.694598016390119e-8,0.0031646221440750945,-4.733077694987257e-5,7.690981863864776e-8,0.003164746262745098,-4.735610332844896e-5,7.694660644621445e-8,0.003164850315648308,-4.744295341822404e-5,7.708123668442743e-8,0.003164960615211108,-4.7599282087552986e-5,7.732580598792541e-8,0.00316510674443353,-4.7822150507262595e-5,7.767502077308712e-8,0.0031653173075884386,-4.809522158373371e-5,7.810233831505504e-8,0.003165613500816317,-4.8388234367153477e-5,7.855932068502407e-8,0.003166001527547761,-4.8660505245747866e-5,7.898136490858256e-8,0.0031664667240323473,-4.886967395690606e-5,7.930165483686465e-8,0.0031669732473650035,-4.898427913808119e-5,7.947106008168446e-8,0.0031674717018881997,-4.899555012818512e-5,7.94766938590658e-8,0.0031679131839261526,-4.892263568963575e-5,7.934999749978144e-8,0.0031682643359964833,-4.8808002238974886e-5,7.91591853553536e-8,0.0031685171259444567,-4.8704610129976645e-5,7.898863798646383e-8,0.003168689888016564,-4.866027347872532e-5,7.891391738685978e-8,0.0031688203554882553,-4.870497925930795e-5,7.898168134647224e-8,0.0031689541483683986,-4.884458925824059e-5,7.919995944645049e-8,0.003169132666912061,-4.90615415154104e-5,7.953967154409288e-8,0.0031693835370994743,-4.932123743816433e-5,7.994513150365482e-8,0.0031697155633991425,-4.958174182690445e-5,8.034963065946353e-8,0.0031701188096189092,-4.9803993111668386e-5,8.069160780662406e-8,0.0031705690690595756,-4.995993501816825e-5,8.092735112553882e-8,0.0031710349046023332,-5.003685841512912e-5,8.103761860361142e-8,0.003171484997353245,-5.003758483585365e-5,8.10276899103105e-8,0.0031718939250299756,-4.997743721292307e-5,8.092241368604767e-8,0.0031722454763997874,-4.98796363572316e-5,8.075886678430627e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json new file mode 100644 index 000000000..841a3deb4 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":21000,"numberOfSamples":1000,"samples":[0.0031725336341924394,-4.9770637985046546e-5,8.057900832626396e-8,0.0031727619720193665,-4.967631255249218e-5,8.042370582661394e-8,0.0031729423213677447,-4.961918610821703e-5,8.032842301827844e-8,0.003173093301004051,-4.9616439750269165e-5,8.032005503717977e-8,0.0031732388512125246,-4.9678142521825614e-5,8.04140915834666e-8,0.003173406461172115,-4.980531114277095e-5,8.061152056197695e-8,0.003173624434517486,-4.998780080363393e-5,8.089554409980637e-8,0.0031739174410596086,-5.02027153676187e-5,8.122921958837977e-8,0.0031743000569504428,-5.0414905317985565e-5,8.155645946622467e-8,0.0031747693572844707,-5.058170552271261e-5,8.1809696462639e-8,0.003175299754099858,-5.066328166614758e-5,8.192630588543693e-8,0.003175844728509721,-5.06368615606572e-5,8.187106223913913e-8,0.003176348378152092,-5.0508762136083794e-5,8.16550486069026e-8,0.0031767639923363524,-5.0316402748498936e-5,8.133866443459827e-8,0.0031770709661550177,-5.011689791600365e-5,8.101329428919594e-8,0.0031772811274633317,-4.9967147620633346e-5,8.076944687326912e-8,0.003177432030673561,-4.9905479367471625e-5,8.066745206192551e-8,0.003177572270523811,-4.994259580574966e-5,8.072317955227706e-8,0.003177746439699948,-5.0063033684474547e-5,8.091070950808379e-8,0.0031779848344744835,-5.0233470557248106e-5,8.117598151931799e-8,0.0031782992076989803,-5.0413262606724425e-5,8.145387798184555e-8,0.003178683508504494,-5.056397454491497e-5,8.168346678500409e-8,0.0031791178624765563,-5.0656360805938936e-5,8.181895509495128e-8,0.003179574229733301,-5.067436252240991e-5,8.183576329438713e-8,0.003180022490647086,-5.0616168724939576e-5,8.173192449420742e-8,0.0031804358927458322,-5.049270511433461e-5,8.152548156884965e-8,0.0031807950553075313,-5.0324297904340744e-5,8.124910490024964e-8,0.0031810901697997096,-5.013646650496189e-5,8.094342997127281e-8,0.003181321456190578,-4.995570801310683e-5,8.065043893174666e-8,0.0031814982527144423,-4.9805917795511555e-5,8.040785329190629e-8,0.0031816373210504898,-4.970574993088201e-5,8.024497887522197e-8,0.0031817608717426495,-4.9666782981278536e-5,8.017978161620004e-8,0.0031818944706078238,-4.969213348437762e-5,8.021665586604609e-8,0.003182064656150664,-4.977526990474911e-5,8.034455083019423e-8,0.0031822958582123618,-4.9899054210053294e-5,8.053555151866265e-8,0.0031826060765792474,-5.00355420814562e-5,8.074475516704612e-8,0.0031830011463665404,-5.014786026254351e-5,8.091345990457809e-8,0.0031834686693217383,-5.0195995982255704e-5,8.097846711663703e-8,0.0031839746468371897,-5.01475748419181e-5,8.088913626890179e-8,0.0031844673261262986,-4.999173257679851e-5,8.062922765445895e-8,0.003184891172592454,-4.974957666882377e-5,8.023331134917238e-8,0.0031852075073160895,-4.9472597723993216e-5,7.978406694492346e-8,0.0031854111053174357,-4.922574084934537e-5,7.938518959159813e-8,0.0031855320833315435,-4.9062718900561163e-5,7.912193983519057e-8,0.003185621952271365,-4.9007423813544054e-5,7.903149987919705e-8,0.003185733140730741,-4.905026352546958e-5,7.909733195325303e-8,0.003185903073154297,-4.915750209942922e-5,7.926446313102022e-8,0.0031861477150601954,-4.9285511618747645e-5,7.946261622724468e-8,0.0031864630412842053,-4.9393086955828754e-5,7.962606325736776e-8,0.0031868305582437354,-4.944910682330027e-5,7.970578335261417e-8,0.0031872237417380285,-4.9435815064372105e-5,7.967442526435043e-8,0.003187613799646374,-4.934910556784959e-5,7.952642648280632e-8,0.0031879743406409483,-4.919701658863508e-5,7.927535204629794e-8,0.0031882849181979036,-4.899707191619981e-5,7.894954072044581e-8,0.0031885333705692622,-4.8772886247731465e-5,7.85867133852273e-8,0.0031887169235430774,-4.8550472591157195e-5,7.82281831475899e-8,0.0031888421191353347,-4.8354611885566905e-5,7.791317453714298e-8,0.0031889236591736768,-4.820561826479776e-5,7.767373204135999e-8,0.003188982392912168,-4.811685191685343e-5,7.753076281390647e-8,0.0031890428229633568,-4.80931088914721e-5,7.749144001256398e-8,0.003189130371339149,-4.8129751866914776e-5,7.754779717892457e-8,0.0031892684093893045,-4.821248076042052e-5,7.767640704932689e-8,0.003189474936144377,-4.8317827589117846e-5,7.78393091488724e-8,0.003189758740824415,-4.841472688601514e-5,7.798671830001753e-8,0.0031901151496382964,-4.846801130205281e-5,7.806277470675716e-8,0.0031905224205677797,-4.844497532884705e-5,7.801604196463123e-8,0.003190941284990858,-4.8325353983456495e-5,7.781525298490396e-8,0.0031913210506145494,-4.811258839800113e-5,7.746697340533311e-8,0.0031916141519961177,-4.784055752540146e-5,7.702604990677442e-8,0.003191795418319783,-4.7568255887754585e-5,7.658695371946121e-8,0.0031918755740832448,-4.73600221174305e-5,7.625217949764229e-8,0.003191898603829455,-4.725988960279658e-5,7.609132297246147e-8,0.0031919229650166662,-4.7275184045738147e-5,7.611500607230232e-8,0.003191998333085281,-4.737827479416436e-5,7.62779363395227e-8,0.0031921508881996145,-4.752216804202383e-5,7.65041794434679e-8,0.003192381393929433,-4.765854984268982e-5,7.671628736820805e-8,0.0031926718219546014,-4.7750056416319196e-5,7.685497758163076e-8,0.003192994371773742,-4.7775167613736925e-5,7.688676322707986e-8,0.0031933191121518447,-4.7727892633397725e-5,7.680310882032987e-8,0.0031936191057208192,-4.761498877639121e-5,7.661565929511285e-8,0.0031938734231599622,-4.74525826505499e-5,7.635065824624502e-8,0.0031940688710230926,-4.7262880918771545e-5,7.60436847923047e-8,0.0031942008964133926,-4.707097737875328e-5,7.573466367930087e-8,0.0031942737606263116,-4.6901719035824056e-5,7.546299629687368e-8,0.003194299972841271,-4.6776661718682426e-5,7.526278957837741e-8,0.003194298887206334,-4.6711226468842323e-5,7.51583342891208e-8,0.003194294386829285,-4.671240074914931e-5,7.516039741374076e-8,0.0031943118407074603,-4.6777394668392805e-5,7.526403312546946e-8,0.0031943746893159835,-4.6893437644436546e-5,7.544826377873212e-8,0.0031945009495270385,-4.7038759907479775e-5,7.567773903852656e-8,0.0031946998830175675,-4.7184820903478814e-5,7.590646855791671e-8,0.0031949691011137634,-4.729986237129749e-5,7.608369607755573e-8,0.0031952925157211496,-4.735397448743149e-5,7.616211706606225e-8,0.003195640046002511,-4.7325873413935426e-5,7.610866131565764e-8,0.0031959707011487326,-4.721084275969199e-5,7.591694218179518e-8,0.0031962407678702612,-4.7027544120006907e-5,7.561778712416466e-8,0.0031964172220154555,-4.68193172139658e-5,7.528100427078354e-8,0.003196492459990767,-4.664522204584982e-5,7.500092425591764e-8,0.003196492024360513,-4.6560407478603466e-5,7.486507180241458e-8,0.0031964677331033607,-4.6593856889802264e-5,7.491877034751068e-8,0.003196477403032644,-4.673659702635629e-5,7.514654134177191e-8,0.0031965625176653793,-4.694773588519694e-5,7.548204705047288e-8,0.0031967362693748544,-4.717322873987367e-5,7.583837429474331e-8,0.003196985533609338,-4.73651776342118e-5,7.613905990916508e-8,0.0031972812138878572,-4.74929888958597e-5,7.633588427653374e-8,0.003197589462630078,-4.7545490933105095e-5,7.64119965822908e-8,0.0031978796496195555,-4.752757942989125e-5,7.637620017022061e-8,0.00319812848863574,-4.745512493931714e-5,7.625453549820702e-8,0.00319832144886984,-4.73503257355979e-5,7.608275219379998e-8,0.003198452856742482,-4.723812082730018e-5,7.590064580016247e-8,0.0031985255501511783,-4.7143356527051194e-5,7.57476813144896e-8,0.0031985502819583764,-4.708825806567633e-5,7.565908112945316e-8,0.003198544736531598,-4.708995351933302e-5,7.566191375034777e-8,0.0031985318797554075,-4.7158036203798245e-5,7.577116598009077e-8,0.0031985373474858482,-4.729251335254058e-5,7.598640463765804e-8,0.003198585869566576,-4.7482775567525455e-5,7.629010685976644e-8,0.003198697155597323,-4.77081476564717e-5,7.664860219081877e-8,0.0031988819238857836,-4.794029858008897e-5,7.701607636820799e-8,0.003199138852327985,-4.8147471043280815e-5,7.734153154992998e-8,0.003199453210956632,-4.830010600773658e-5,7.757794512375888e-8,0.003199797758983186,-4.8377126251611665e-5,7.769236057072432e-8,0.0032001363178023106,-4.8371976704389703e-5,7.767540881795748e-8,0.0032004303140051693,-4.829716076321788e-5,7.754825940028813e-8,0.0032006480922657813,-4.818534649742223e-5,7.736402060215561e-8,0.0032007754503471137,-4.8084736666072045e-5,7.720004750070717e-8,0.0032008237523528764,-4.804734673697885e-5,7.713910918442968e-8,0.0032008304786310298,-4.811209016681051e-5,7.724247975155619e-8,0.0032008488052868407,-4.828932206014769e-5,7.75255161602495e-8,0.0032009288771208118,-4.8555592301733185e-5,7.794960329169746e-8,0.0032010998408043487,-4.886272668875077e-5,7.843695977208304e-8,0.003201361960637265,-4.915635461273817e-5,7.89004476629134e-8,0.0032016912406135044,-4.939361188750261e-5,7.927192014721211e-8,0.0032020513707647475,-4.955240233850549e-5,7.951689650027676e-8,0.003202405716929175,-4.963141986809062e-5,7.963431614369855e-8,0.003202725094131901,-4.964474472975755e-5,7.96475824883057e-8,0.0032029909049170156,-4.961523348656123e-5,7.959378125967193e-8,0.0032031952157390927,-4.9569099471490336e-5,7.951497736532009e-8,0.003203339535741044,-4.9532218017991734e-5,7.945241230521701e-8,0.003203433394698867,-4.9527674213515084e-5,7.944273135170713e-8,0.003203493051170196,-4.9573859322178696e-5,7.951503476725994e-8,0.0032035401504446515,-4.968261143955701e-5,7.968790885396807e-8,0.003203599881864006,-4.9857248372708116e-5,7.996622623173358e-8,0.0032036981474841027,-5.009083623491609e-5,8.033833401588e-8,0.003203857560932273,-5.036549668524096e-5,8.077497791863144e-8,0.003204092697562571,-5.0653692877754714e-5,8.123148677107812e-8,0.003204405679190628,-5.092213317310819e-5,8.165420910353239e-8,0.0032047836194003913,-5.1138171334250516e-5,8.199093925766638e-8,0.0032051993388942314,-5.1277508026645685e-5,8.220333981594443e-8,0.0032056159214573134,-5.1331152612609345e-5,8.227803147217174e-8,0.003205994476325643,-5.130950962968257e-5,8.223291039616594e-8,0.0032063034747539243,-5.124205747668012e-5,8.211628608958799e-8,0.0032065274675029567,-5.117202959915313e-5,8.199800522314307e-8,0.0032066727907678195,-5.114661833837934e-5,8.195353656090792e-8,0.003206768020942503,-5.120449980278048e-5,8.204400434520673e-8,0.003206857735831905,-5.1363916576045276e-5,8.229736031489842e-8,0.0032069901253816147,-5.161569359479557e-5,8.269759795845019e-8,0.0032072020803685336,-5.192501441612641e-5,8.318797642795423e-8,0.0032075077397297554,-5.2242393867866604e-5,8.368882847285539e-8,0.0032078955532431,-5.251946367429561e-5,8.412289258504691e-8,0.0032083345384939406,-5.272262269658563e-5,8.443706503733802e-8,0.0032087857334492185,-5.2839458337762004e-5,8.461246000974382e-8,0.0032092132683576424,-5.287735806351859e-5,8.466190722367029e-8,0.003209591378752329,-5.285732676741347e-5,8.461980304623928e-8,0.0032099067777057117,-5.28068081968459e-5,8.45304822826286e-8,0.0032101578456377655,-5.275393921740916e-5,8.443903221733049e-8,0.0032103524731652163,-5.272386017376191e-5,8.438550073902889e-8,0.003210505786562472,-5.273660287213019e-5,8.440164096217491e-8,0.0032106382225371155,-5.280577247081059e-5,8.450886182259405e-8,0.0032107738321281018,-5.293736316606222e-5,8.471631689347386e-8,0.0032109383060951215,-5.312841217033488e-5,8.501870672494748e-8,0.0032111560978738906,-5.3365752533195204e-5,8.53942849508674e-8,0.0032114462795934918,-5.362571089155793e-5,8.580446840164302e-8,0.003211817437324192,-5.3875979778961625e-5,8.619700739786424e-8,0.003212262941595191,-5.408075100149098e-5,8.651439387397291e-8,0.0032127589082548043,-5.42090965214644e-5,8.670741201761251e-8,0.003213267160170133,-5.4244595572723914e-5,8.675057308886833e-8,0.0032137438024166646,-5.419248668805494e-5,8.665344939450431e-8,0.003214151231767454,-5.4080711291759844e-5,8.646208359285265e-8,0.0032144693035585834,-5.395352361443707e-5,8.624839037585663e-8,0.003214701461565474,-5.385958237500533e-5,8.609072790016972e-8,0.003214873783886847,-5.383864063516811e-5,8.605238679805011e-8,0.0032150276171485034,-5.391105610832501e-5,8.616487457733809e-8,0.003215208326315366,-5.4072889410851724e-5,8.642041535988369e-8,0.0032154533705997484,-5.429755486548332e-5,8.677506471248515e-8,0.0032157828754069747,-5.4543390211428154e-5,8.716123185097693e-8,0.0032161952720170784,-5.47649828140714e-5,8.750601063943785e-8,0.0032166691643119804,-5.492483570390711e-5,8.7749822276115e-8,0.003217170484883344,-5.500177601999277e-5,8.785966932376333e-8,0.0032176621369899984,-5.499386164298536e-5,8.783350388091249e-8,0.0032181127441866936,-5.491583634520034e-5,8.76958803060696e-8,0.003218502126948113,-5.479314994168618e-5,8.748819344576886e-8,0.0032188229483265337,-5.465521433334049e-5,8.72578166749344e-8,0.0032190794757014783,-5.452988429357098e-5,8.704931644272088e-8,0.0032192849457666393,-5.443991014971355e-5,8.689888287838887e-8,0.003219458734952503,-5.440110974291796e-5,8.683149639470852e-8,0.003219623918717538,-5.442154904813298e-5,8.685964506488469e-8,0.0032198052118412182,-5.45010330062948e-5,8.698248405259667e-8,0.0032200268668433098,-5.463053766414709e-5,8.718490554543236e-8,0.0032203099278025797,-5.479171920972871e-5,8.743680309860852e-8,0.0032206683696555803,-5.4957218224956276e-5,8.769370344416006e-8,0.003221104252445989,-5.509302127948437e-5,8.790074530833945e-8,0.0032216031987040658,-5.516423932315975e-5,8.800209652952139e-8,0.003222132914621037,-5.514457142603367e-5,8.795617458979574e-8,0.003222647901010924,-5.502711200558859e-5,8.775290593353369e-8,0.0032231013851103294,-5.483131338436564e-5,8.74247239172623e-8,0.003223460966712298,-5.4600702849415643e-5,8.704264763661174e-8,0.003223720696988658,-5.43901749473945e-5,8.66955543476372e-8,0.0032239032022557705,-5.4248004296358326e-5,8.646099319840247e-8,0.003224051050262102,-5.4200944786757004e-5,8.638114273675721e-8,0.003224212268778945,-5.424827912428962e-5,8.645345453958669e-8,0.0032244265358801734,-5.4365234327404105e-5,8.663660081008881e-8,0.003224716276502034,-5.451231450454134e-5,8.686597920410975e-8,0.003225083737911467,-5.4646403659949004e-5,8.707189019189658e-8,0.0032255131188312245,-5.473059972318432e-5,8.719538813836393e-8,0.0032259761006378034,-5.4741087113638165e-5,8.719911679190398e-8,0.0032264390598020325,-5.467034723233956e-5,8.707212789604444e-8,0.003226870334335864,-5.452668660564738e-5,8.682879510984012e-8,0.0032272460710804887,-5.4330699940323715e-5,8.65029138253738e-8,0.0032275536298945894,-5.4109915442819836e-5,8.613902532997006e-8,0.003227792304669776,-5.389313593906661e-5,8.5783374691673e-8,0.0032279718677233277,-5.370570458175747e-5,8.547642058179856e-8,0.003228109845550558,-5.356634066004432e-5,8.524786544988952e-8,0.003228228456413095,-5.348557339633553e-5,8.511420042723426e-8,0.0032283518197443535,-5.346531342893715e-5,8.507801310989298e-8,0.0032285035568127823,-5.349896832429377e-5,8.512814037196994e-8,0.003228704536722173,-5.357174984312455e-5,8.524016481482288e-8,0.0032289703539402797,-5.366119984972382e-5,8.537735462686527e-8,0.00322930813206437,-5.373842092470895e-5,8.549282323459017e-8,0.003229712689921856,-5.377103839587337e-5,8.553448506801853e-8,0.0032301631836865975,-5.3729107718665944e-5,8.545465152637074e-8,0.0032306227277087924,-5.359428799950994e-5,8.522472059019744e-8,0.0032310441986026,-5.337012969281068e-5,8.48515280839209e-8,0.0032313836582013745,-5.30879790841398e-5,8.438660592029636e-8,0.0032316176061930268,-5.280197806460897e-5,8.391790250084734e-8,0.0032317548261706127,-5.2571609399665335e-5,8.354146004605948e-8,0.0032318343808087915,-5.243934120871027e-5,8.332524114371036e-8,0.00323190997001867,-5.24157284474321e-5,8.328513968311465e-8,0.003232029903870015,-5.247922773889295e-5,8.33849749888785e-8,0.0032322230037252673,-5.2587959715898925e-5,8.355594128527012e-8,0.0032324945300250224,-5.269508974157829e-5,8.372185756843382e-8,0.0032328299476484103,-5.2761097382812485e-5,8.381914925073835e-8,0.0032332022647684135,-5.2760565068347416e-5,8.380767128683809e-8,0.0032335796804347913,-5.268412304439345e-5,8.367349551296979e-8,0.003233931955256522,-5.2537170491451925e-5,8.342645104170425e-8,0.00323423510297691,-5.2336755010051395e-5,8.309480474079313e-8,0.003234474406802793,-5.210743061617814e-5,8.271847665355266e-8,0.0032346457437325534,-5.187668488346703e-5,8.234172294838152e-8,0.003234755280902423,-5.167055575138879e-5,8.200621219761825e-8,0.003234817807050895,-5.150997501251897e-5,8.174527616602243e-8,0.00323485410132211,-5.140821394599531e-5,8.157988013641992e-8,0.0032348878601373273,-5.1369622605597356e-5,8.15166024002056e-8,0.003234942697918216,-5.138953284328997e-5,8.154743911983669e-8,0.00323503947037617,-5.1454958354580704e-5,8.16508993774942e-8,0.0032351938886941546,-5.154582187779148e-5,8.179401797604287e-8,0.0032354142832091816,-5.16366609641141e-5,8.193524012891515e-8,0.003235699333554656,-5.1699018157927345e-5,8.202847891428973e-8,0.0032360358332845078,-5.170513116825102e-5,8.202923924758582e-8,0.003236397395298634,-5.163367599192616e-5,8.190391001440081e-8,0.0032367460274376706,-5.147751296830587e-5,8.164208997353886e-8,0.003237038911014802,-5.125146075858404e-5,8.126881868503913e-8,0.0032372413519731985,-5.099546813545693e-5,8.084938120768122e-8,0.0032373424767896393,-5.076735769152771e-5,8.04773994266105e-8,0.003237364737593232,-5.0623575968753e-5,8.024369261604461e-8,0.0032373583817348877,-5.0595930934664296e-5,8.01987556722749e-8,0.0032373814263608053,-5.067835383782129e-5,8.033154293976049e-8,0.0032374767927001143,-5.0831888417986464e-5,8.05778502518239e-8,0.0032376595358681605,-5.100299476696643e-5,8.08503013355666e-8,0.0032379179830066707,-5.1142929781694154e-5,8.106998345596535e-8,0.0032382234578475634,-5.121949714913483e-5,8.118548183125027e-8,0.0032385413765336594,-5.1220034229706235e-5,8.117745244402647e-8,0.0032388396301233986,-5.1148784000511076e-5,8.105395968506553e-8,0.00323909343633175,-5.1022080757357263e-5,8.084232217504016e-8,0.003239287476598087,-5.086344596635564e-5,8.058099601387515e-8,0.003239416418574005,-5.06993062299847e-5,8.031267394281034e-8,0.0032394844711164405,-5.055531403368913e-5,8.007849327535253e-8,0.0032395041778899027,-5.0453203864372276e-5,7.991313554603084e-8,0.003239494528968082,-5.0408228290502986e-5,7.98408045445796e-8,0.0032394784475627734,-5.0427301336513986e-5,7.987225828658261e-8,0.003239479791896909,-5.050810067219918e-5,8.000332058699083e-8,0.0032395202194974377,-5.063931236648878e-5,8.021522493846629e-8,0.003239616293252338,-5.080193546123921e-5,8.047671952390412e-8,0.003239777049036872,-5.097147176821398e-5,8.074769163503124e-8,0.003240002171167665,-5.112088531384368e-5,8.098412232278307e-8,0.0032402808961741075,-5.122423243494423e-5,8.114415044682696e-8,0.0032405918090109447,-5.126100829262938e-5,8.119521335082708e-8,0.003240904131438615,-5.122133435508816e-5,8.112236888320618e-8,0.003241181684719136,-5.111146117220087e-5,8.093692711688671e-8,0.003241390622446391,-5.095766931217798e-5,8.068237971757372e-8,0.0032415106650658305,-5.080520775946731e-5,8.04323546602781e-8,0.003241546514068598,-5.070868740467566e-5,8.027494782684523e-8,0.0032415324844812794,-5.071373081832885e-5,8.028313812372978e-8,0.003241523709398545,-5.083705921425271e-5,8.048281634683229e-8,0.0032415751240446157,-5.1057319994444045e-5,8.083823631077988e-8,0.003241719537245258,-5.132391935969942e-5,8.126660197144499e-8,0.0032419576140943988,-5.157842278878715e-5,8.167296421774885e-8,0.0032422632301883753,-5.177516910115313e-5,8.198373070848606e-8,0.0032425973491017465,-5.189151237656024e-5,8.216316480911329e-8,0.003242921385633165,-5.192728220314501e-5,8.221219939811576e-8,0.003243205429064354,-5.1898436692860174e-5,8.215775773060924e-8,0.0032434313058024543,-5.182970678799692e-5,8.204054311489319e-8,0.0032435923938506023,-5.1748673330064326e-5,8.190536290404036e-8,0.0032436920809447035,-5.1681708633171465e-5,8.179466859600291e-8,0.0032437419250657485,-5.165123951677518e-5,8.17443236041018e-8,0.0032437597611700603,-5.167373948957442e-5,8.178051974505204e-8,0.0032437676397874047,-5.1758154968282606e-5,8.191729901686929e-8,0.003243789408658554,-5.190473825027876e-5,8.215464440259327e-8,0.0032438478099100776,-5.2104555505873134e-5,8.247762756783664e-8,0.0032439612563935362,-5.234009583257239e-5,8.28573715553115e-8,0.0032441407595725984,-5.258721229750601e-5,8.325425050664329e-8,0.0032443875424479525,-5.281834024054875e-5,8.36232428780749e-8,0.0032446918276209393,-5.300675228469284e-5,8.392100559929466e-8,0.0032450332255609038,-5.3131371114476176e-5,8.411381289746435e-8,0.00324538295404514,-5.318148371486626e-5,8.418520437848297e-8,0.003245707983573782,-5.316071079859441e-5,8.414223757206918e-8,0.0032459772192329835,-5.3089364431137183e-5,8.401896535485175e-8,0.0032461694781570896,-5.300370532228837e-5,8.387484551908885e-8,0.003246281847351533,-5.2950284714670026e-5,8.37853066862844e-8,0.0032463352544695014,-5.297443793121066e-5,8.382308719834454e-8,0.0032463728424833803,-5.310479309421307e-5,8.403337508404443e-8,0.003246448216996769,-5.333992759564566e-5,8.441256609303461e-8,0.0032466062921121183,-5.364552457477591e-5,8.49040114435253e-8,0.0032468659901151594,-5.396605828032138e-5,8.541718992475005e-8,0.003247214553528512,-5.424562065011762e-5,8.586156956307863e-8,0.003247615679936334,-5.444642162568678e-5,8.617657458590432e-8,0.003248024912597425,-5.455655514944839e-5,8.634399975468773e-8,0.003248403432332568,-5.458687626580262e-5,8.638262859372707e-8,0.0032487255353343303,-5.4562352771310106e-5,8.633386467620277e-8,0.00324898008935198,-5.451326661190067e-5,8.624724859115626e-8,0.0032491685238771285,-5.4468896133598934e-5,8.617020704301661e-8,0.0032493017385686698,-5.44538837415368e-5,8.614231992982142e-8,0.0032493972235823195,-5.448639212370825e-5,8.619253072529561e-8,0.0032494766715691,-5.4577106999117414e-5,8.633766110669544e-8,0.003249563821635595,-5.4728537878472483e-5,8.658130339795376e-8,0.0032496821379050258,-5.4934496846960336e-5,8.691293350608795e-8,0.0032498520196944476,-5.5180047124981716e-5,8.730779131766455e-8,0.0032500875683692987,-5.544249647615775e-5,8.772852392629017e-8,0.0032503934051933206,-5.569395062737085e-5,8.812944569042736e-8,0.0032507623946056432,-5.5905572624570456e-5,8.846361811302392e-8,0.0032511752416808635,-5.60531534073218e-5,8.869203900002466e-8,0.0032516027189509527,-5.6122949655416366e-5,8.879316740083876e-8,0.003252010653866079,-5.6116271961945236e-5,8.87702629117698e-8,0.0032523669850277413,-5.605136928982403e-5,8.865417136694602e-8,0.0032526495630223616,-5.596163996267052e-5,8.850004846746351e-8,0.003252852996146235,-5.588978132512746e-5,8.837752315420322e-8,0.0032529925562878982,-5.58782471815996e-5,8.83550511189378e-8,0.003253103082055259,-5.595758026448335e-5,8.848108953757554e-8,0.0032532314776745693,-5.613576384150119e-5,8.876716640678854e-8,0.0032534234568621025,-5.6393001850667115e-5,8.917985280515563e-8,0.0032537084871765787,-5.668575826548498e-5,8.964767779069584e-8,0.0032540894242032077,-5.696017640428366e-5,9.008307761306017e-8,0.00325454214619616,-5.716962075359378e-5,9.041084937999461e-8,0.0032550252674333844,-5.728830620990315e-5,9.059011621990187e-8,0.003255494511827089,-5.731556283163272e-5,9.06209904156305e-8,0.003255914883576044,-5.7271048375594106e-5,9.0536487245569e-8,0.003256266746644497,-5.71854418674298e-5,9.03871423788393e-8,0.003256546050101389,-5.709145577327869e-5,9.022629331978918e-8,0.003256761198809244,-5.701770488175832e-5,9.010018411835402e-8,0.0032569290319573213,-5.6985589687069876e-5,9.004308407198988e-8,0.0032570712782715805,-5.700820517414628e-5,9.007569729439265e-8,0.003257211829634789,-5.709019855395602e-5,9.02050273070369e-8,0.003257374555642879,-5.722785472994945e-5,9.042451477474267e-8,0.0032575811280771455,-5.740918789972536e-5,9.07141464433097e-8,0.0032578484112563417,-5.761434937787547e-5,9.104111671626653e-8,0.003258185352705804,-5.781702102123823e-5,9.136217618930464e-8,0.0032585898547709312,-5.7987501554828986e-5,9.162880083070914e-8,0.003259046711760422,-5.8097856157750106e-5,9.179571951463989e-8,0.0032595281106661137,-5.812865707175766e-5,9.183195308320635e-8,0.003259997899742414,-5.807559874358659e-5,9.173151942039728e-8,0.003260419534272522,-5.7953377600878414e-5,9.151954278320197e-8,0.003260765818064894,-5.7794560130481856e-5,9.125009531413922e-8,0.0032610273094332534,-5.7642803315349266e-5,9.099481763997835e-8,0.0032612163205118245,-5.754195090058938e-5,9.082492438170712e-8,0.0032613648222029144,-5.752416949150301e-5,9.07918667306029e-8,0.0032615165714595593,-5.7600716096652344e-5,9.09125486368035e-8,0.003261715522120589,-5.7758163232549566e-5,9.116362370356967e-8,0.003261993680028687,-5.796146329096944e-5,9.148694570509478e-8,0.0032623620293660872,-5.8163394938097374e-5,9.180524978805767e-8,0.003262807665272582,-5.8317766793719975e-5,9.20437012761951e-8,0.0032632983134054426,-5.839199548958222e-5,9.215020451540345e-8,0.0032637924706452283,-5.8374669624859956e-5,9.210741718701442e-8,0.0032642511156409566,-5.827592207902026e-5,9.193302480930112e-8,0.0032646467560847373,-5.8121634092867766e-5,9.167002565308534e-8,0.003264967464613854,-5.794476140729533e-5,9.137245205768258e-8,0.0032652161360441057,-5.777729029325265e-5,9.109227604970783e-8,0.0032654068966987506,-5.764485386744147e-5,9.087078295628466e-8,0.003265560763456718,-5.756421591411039e-5,9.073466938213295e-8,0.0032657018358711034,-5.754278131830879e-5,9.069539608026732e-8,0.0032658544101094944,-5.757911789189286e-5,9.075008999633211e-8,0.0032660408074434333,-5.766372839766714e-5,9.088277448331733e-8,0.003266279396647697,-5.777976701135738e-5,9.106550153542938e-8,0.003266582301739539,-5.790395532285883e-5,9.12598753635655e-8,0.0032669526451217174,-5.80083795326496e-5,9.142009964322477e-8,0.003267381767555401,-5.8063972041273024e-5,9.149881185930952e-8,0.0032678476163183977,-5.804619770493952e-5,9.145646309337639e-8,0.003268316164476314,-5.79424713012002e-5,9.12733988533491e-8,0.0032687475221006164,-5.7759070899220414e-5,9.096097972973574e-8,0.003269106529960257,-5.7523825509117984e-5,9.056570793575683e-8,0.0032693746058921917,-5.7281393394498796e-5,9.01612217244734e-8,0.0032695575700859222,-5.7081169177186004e-5,8.982829299441299e-8,0.003269685200835826,-5.696205583363011e-5,8.962983858648573e-8,0.003269802214385346,-5.69404396125155e-5,8.959138558936853e-8,0.0032699545344188102,-5.700604476264368e-5,8.969464615227079e-8,0.0032701763009091883,-5.7126338282034846e-5,8.988518777066455e-8,0.003270481677542585,-5.725676162404585e-5,9.008956185060092e-8,0.0032708629470038705,-5.735286992395743e-5,9.023531943545998e-8,0.00327129431081459,-5.73809369580062e-5,9.026823726629858e-8,0.003271739599354458,-5.7324683909892404e-5,9.0162995318363e-8,0.0032721614993477402,-5.7187059246788255e-5,8.992569167509696e-8,0.0032725298445275717,-5.698731841848309e-5,8.958873870059514e-8,0.0032728270521627735,-5.675482647236528e-5,8.920055536744774e-8,0.003273049851570274,-5.652171851946322e-5,8.881356947561132e-8,0.0032732076970815966,-5.6316492523811355e-5,8.847388481842329e-8,0.003273319145670565,-5.615979289425225e-5,8.821459453534936e-8,0.0032734076545255755,-5.6062581528121386e-5,8.80529729256984e-8,0.003273497839452653,-5.602614665502433e-5,8.799058220459504e-8,0.003273612612866018,-5.604313201827532e-5,8.801494830994981e-8,0.0032737710867281598,-5.609888691693807e-5,8.81017115844299e-8,0.0032739868282610452,-5.617282175496241e-5,8.821681580619211e-8,0.0032742660365082388,-5.6239927611709573e-5,8.831905491514963e-8,0.003274605453936708,-5.627300819139812e-5,8.836386764965425e-8,0.0032749903608651097,-5.624637481283029e-5,8.830953041101465e-8,0.0032753938061936853,-5.614154823740327e-5,8.812653176627841e-8,0.0032757789936782864,-5.595449360495289e-5,8.78092919463083e-8,0.003276106647287594,-5.5701960526054305e-5,8.738628367074491e-8,0.0032763471421135533,-5.5422576587764e-5,8.692152997987455e-8,0.003276493258995722,-5.516877259292599e-5,8.650115186701256e-8,0.0032765664014518425,-5.499014654352684e-5,8.6206007430559e-8,0.003276610999942624,-5.491529491512299e-5,8.608196484440229e-8,0.00327667876464851,-5.494164014254628e-5,8.612345199946136e-8,0.0032768108494707626,-5.5038149965003114e-5,8.627829358674474e-8,0.0032770262708863127,-5.5157998227194705e-5,8.646888984364038e-8,0.0032773198064892668,-5.525387498988542e-5,8.661760852501955e-8,0.003277667339223204,-5.528988528837087e-5,8.666631731922832e-8,0.0032780346135977243,-5.5247658906088445e-5,8.658614562003795e-8,0.0032783860663120725,-5.512713483912658e-5,8.637835326428021e-8,0.0032786918994025917,-5.494363190933129e-5,8.606912261480339e-8,0.0032789327276445193,-5.472280951801439e-5,8.570104945011115e-8,0.003279101674465376,-5.449476059083265e-5,8.532342409842275e-8,0.0032792040453030104,-5.4288301754132294e-5,8.498301212375031e-8,0.0032792550494914192,-5.4126402494692005e-5,8.471678473867611e-8,0.00327927635003745,-5.402331015253779e-5,8.454741469132955e-8,0.003279292261048445,-5.398344931011103e-5,8.448159405887646e-8,0.0032793262697919023,-5.4001841681931624e-5,8.451073771217038e-8,0.0032793983038223334,-5.406554644950239e-5,8.461328637466328e-8,0.003279522775013503,-5.4155543035676e-5,8.475773055077884e-8,0.0032797071337421773,-5.4248736184423704e-5,8.490590178054932e-8,0.0032799506498463736,-5.432014534373688e-5,8.501666483516674e-8,0.003280243299674806,-5.434560660615751e-5,8.505051210231342e-8,0.003280565004985942,-5.430549748269372e-5,8.497579494488648e-8,0.003280886168989561,-5.4189871664097075e-5,8.47771184438119e-8,0.003281171139090372,-5.4004474659509736e-5,8.446499011144445e-8,0.003281386101154559,-5.377533480404946e-5,8.408301336304262e-8,0.0032815110470657827,-5.354778435894943e-5,8.370597725390225e-8,0.003281551525320081,-5.3376005048922325e-5,8.342256462979238e-8,0.0032815423544261006,-5.3303997698127796e-5,8.330417977081286e-8,0.0032815375199139597,-5.334662167257096e-5,8.337402779899631e-8,0.003281589425999078,-5.3482477388724635e-5,8.359571772677401e-8,0.003281729077837722,-5.366347603158219e-5,8.388931201996357e-8,0.0032819577992785165,-5.383448660629819e-5,8.416390530143764e-8,0.003282252028816867,-5.3951461208844274e-5,8.434755805679241e-8,0.003282575064733863,-5.399087527054447e-5,8.440270284958065e-8,0.0032828888308288045,-5.395041499415586e-5,8.432692167156779e-8,0.0032831620823933123,-5.384442525035143e-5,8.414501783308623e-8,0.003283374577592845,-5.369758720472906e-5,8.389827797025655e-8,0.0032835182149421297,-5.3538900495709054e-5,8.363445972132653e-8,0.003283596317507677,-5.3396677990892325e-5,8.339967143688218e-8,0.0032836217594359217,-5.3294597136367996e-5,8.323212142857587e-8,0.0032836142689651616,-5.3248868881598726e-5,8.31577096068053e-8,0.0032835972456282487,-5.326663219322064e-5,8.318754756177193e-8,0.003283594445314077,-5.33455619881586e-5,8.331735797629278e-8,0.003283626858166137,-5.34746355750414e-5,8.35286872417797e-8,0.0032837101355881193,-5.363590835227975e-5,8.379175121758466e-8,0.0032838527983820075,-5.3806929427041975e-5,8.406937560267436e-8,0.003284055181100754,-5.396343946274494e-5,8.432148778286718e-8,0.0032843089773761463,-5.40822511951771e-5,8.450998775388706e-8,0.003284597358913076,-5.414438100313206e-5,8.460404446842303e-8,0.003284895834787221,-5.413857912979374e-5,8.458595257932233e-8,0.003285174445296768,-5.406532947278778e-5,8.445757818292492e-8,0.0032854023338345904,-5.3940697089698616e-5,8.424636958756322e-8,0.0032855554831677934,-5.379806390910282e-5,8.400782714837921e-8,0.003285626815766494,-5.3684562539693467e-5,8.38193737194727e-8,0.0032856347701112503,-5.3649414340871245e-5,8.376117760633833e-8,0.0032856235616832005,-5.3725485877918647e-5,8.38860837426238e-8,0.003285650142636974,-5.391249164401037e-5,8.419236027689752e-8,0.0032857616382241683,-5.4173556173630084e-5,8.461836300416228e-8,0.003285976011289329,-5.444965808100916e-5,8.50665090145353e-8,0.003286277545198635,-5.468347961861177e-5,8.544264341871019e-8,0.0032866275363075573,-5.483838580460321e-5,8.568728752895917e-8,0.0032869809330381304,-5.490461627338049e-5,8.578565026164803e-8,0.0032872996339806037,-5.489474335285152e-5,8.575977711296552e-8,0.003287559053510933,-5.48347345844862e-5,8.565341922089876e-8,0.0032877491677817746,-5.475543920672599e-5,8.551775502054806e-8,0.0032878725457978937,-5.4686451467669074e-5,8.540127833973602e-8,0.0032879413934742783,-5.465235422268597e-5,8.534381381044643e-8,0.003287974597188788,-5.4670536130827427e-5,8.53731992403231e-8,0.003287994886136215,-5.474993658443841e-5,8.550343585455102e-8,0.003288026004617243,-5.489052942074253e-5,8.573393033814724e-8,0.0032880898877680324,-5.508355309891816e-5,8.604985500404462e-8,0.003288203921857211,-5.5312587539400495e-5,8.642385409484243e-8,0.0032883785505384453,-5.5555608027442216E-05,8.681938148259401e-8,0.0032886156357365445,-5.578790705412445e-5,8.719554080619211e-8,0.0032889078436774757,-5.5985521987479445e-5,8.751283667062376e-8,0.003289239125545009,-5.612881998939157e-5,8.77392146012537e-8,0.003289586318797038,-5.620594849831879e-5,8.78558281449679e-8,0.0032899218910641607,-5.621585137160659e-5,8.786195042061433e-8,0.0032902179191576634,-5.617054021271309e-5,8.77784760736655e-8,0.0032904515278464005,-5.609599525829377e-5,8.764903319639631e-8,0.003290611690989794,-5.603034994237022e-5,8.753663675600585e-8,0.0032907060886177963,-5.601757230920074e-5,8.751312401969255e-8,0.0032907648315062244,-5.60957001758165e-5,8.763993271030684e-8,0.00329083651219213,-5.628175714456582e-5,8.794367269940098e-8,0.003290973902945432,-5.656023599277606e-5,8.839762192953688e-8,0.003291213321631433,-5.6884077700507716e-5,8.892363541663668e-8,0.003291558763057707,-5.7191191598862794e-5,8.941943124269481e-8,0.0032919809643103797,-5.742839856654776e-5,8.979798297636507e-8,0.0032924313677109907,-5.756902600419823e-5,9.001640079964623e-8,0.0032928611324823196,-5.7616237434723784e-5,9.008120657162066e-8,0.003293234884122227,-5.759476981903807e-5,9.003437623650073e-8,0.003293535602904595,-5.753893290328132e-5,8.993321103832823e-8,0.003293762927268325,-5.7482792094576774e-5,8.983397854989548e-8,0.003293928650397064,-5.745439610101603e-5,8.978246898705095e-8,0.003294052074754002,-5.7473344437337244e-5,8.981023130920463e-8,0.003294156313027807,-5.755021904012821e-5,8.993390698836747e-8,0.0032942654733313977,-5.768674160814335e-5,9.01556607176256e-8,0.0032944022662521263,-5.787621616364838e-5,9.046394738638393e-8,0.003294585697181951,-5.810428412374258e-5,9.083470767938509e-8,0.003294828730883638,-5.835025192829971e-5,9.123350329312376e-8,0.0032951361110117538,-5.858935210068161e-5,9.161924961334033e-8,0.003295502862145243,-5.879608733804884e-5,9.194981099819587e-8,0.0032959140922813155,-5.894836427269165e-5,9.218894166181916e-8,0.003296346501630117,-5.903178845858687e-5,9.2313465377073e-8,0.0032967716942378903,-5.904330752969372e-5,9.231927451156279e-8,0.003297161013652729,-5.8993325195830865e-5,9.222465017716898e-8,0.0032974912528637187,-5.8905595820280855e-5,9.206977518622295e-8,0.0032977504065195102,-5.881449638135142e-5,9.191186754025751e-8,0.003297942473857903,-5.875940209359208e-5,9.181563871498607e-8,0.0032980898714052753,-5.877616173854993e-5,9.183921908280787e-8,0.0032982314957932714,-5.88866346272826e-5,9.201718962789459e-8,0.0032984146833885644,-5.908904162486795e-5,9.23451566292984e-8,0.0032986812779857745,-5.935379884542151e-5,9.277334751463147e-8,0.003299051997951586,-5.962945134656554e-5,9.321663709787946e-8,0.003299516827886728,-5.985901363351853e-5,9.358146928311346e-8,0.0033000378122319263,-5.999998453310655e-5,9.379868554416737e-8,0.003300563468977945,-6.003775679601342e-5,9.384541959529023e-8,0.003301046759699778,-5.9986342425414024e-5,9.374604054768167e-8,0.0033014576765286454,-5.987863396959832e-5,9.355579500500295e-8,0.003301786809054379,-5.975339670750789e-5,9.33390980278829e-8,0.0033020419823445663,-5.964508164161518e-5,9.315264867329e-8,0.0033022421362587082,-5.9578548895871055e-5,9.303685979764736e-8,0.003302411561432909,-5.9567748630520254e-5,9.301394192772079e-8,0.0033025757102160976,-5.961647141519134e-5,9.308938092423752e-8,0.003302758454813665,-5.971971311326604e-5,9.32543085753427e-8,0.003302980149123383,-5.986499809573707e-5,9.348767984635991e-8,0.0033032558966772426,-6.003362496588928e-5,9.375826851834662e-8,0.003303593705146403,-6.0202192353766145e-5,9.402715772445558e-8,0.0033039926166897105,-6.034495084095433e-5,9.425167222522078e-8,0.003304441386900897,-6.043737478577002e-5,9.439138689843304e-8,0.003304918618617791,-6.046082993353868e-5,9.441594479608006e-8,0.0033053952081656575,-6.040751190609572e-5,9.431324511412548e-8,0.0033058394190006372,-6.028418972979809e-5,9.409552551950787e-8,0.0033062239072710452,-6.011307792870043e-5,9.380056022170947e-8,0.0033065329819612454,-5.99287475949815e-5,9.348622559924204e-8,0.003306767914704313,-5.977122717532698e-5,9.321879190076651e-8,0.003306948486177933,-5.9676703637333575e-5,9.305741226162379e-8,0.0033071098761496675,-5.966803032891732e-5,9.303855751819586e-8,0.003307295078633383,-5.974750722150152e-5,9.316446634613662e-8,0.003307544114132092,-5.9894223093106617E-05,9.339925812123948e-8,0.0033078824817017226,-6.006764076265878e-5,9.367527554290179e-8,0.003308312428674662,-6.021771715946743e-5,9.390997219756039e-8,0.003308810868846452,-6.02993136284251e-5,9.402960860305769e-8,0.003309335890088662,-6.028585030600706e-5,9.39915224159716e-8,0.003309839846317023,-6.017646168426142e-5,9.379561381316522e-8,0.003310283495942255,-5.999380790271972e-5,9.348042402784567e-8,0.0033106453888089448,-5.977450811021991e-5,9.310709708273535e-8,0.0033109239015205183,-5.955734946844783e-5,9.273979011758474e-8,0.003311133299984977,-5.937407692846487e-5,9.243051520461885e-8,0.0033112972340637236,-5.924481776115903e-5,9.221178385233012e-8,0.0033114426199441147,-5.917750316763905e-5,9.209590179549796e-8,0.0033115952609545363,-5.9169497804775444e-5,9.207784107991695e-8,0.003311777204723194,-5.920987375766593e-5,9.213904652853273e-8,0.0033120052080999,-5.92814938356559e-5,9.225082851606375e-8,0.003312289594904694,-5.936274846059623e-5,9.237717028262174e-8,0.003312633024578902,-5.942929679557276e-5,9.247760893901174e-8,0.003313029137070735,-5.945642637260442e-5,9.251122688928723e-8,0.0033134615879803833,-5.942257807852542e-5,9.244260873645003e-8,0.0033139044987459776,-5.931413137224047e-5,9.22498336783901e-8,0.0033143255654085853,-5.913063940039792e-5,9.193309185903323e-8,0.003314692523404364,-5.888852657791199e-5,9.152061902109267e-8,0.003314982071759978,-5.862063074863608e-5,9.106765658072329e-8,0.0033151883441194956,-5.836990960235362e-5,9.064573525743296e-8,0.003315327061036844,-5.817820907612507e-5,9.032387007253822e-8,0.003315432756404787,-5.807381239007963e-5,9.014792415786519e-8,0.003315549502730872,-5.80625870862475e-5,9.012617527068651e-8,0.0033157184572218204,-5.8126053541180765e-5,9.022654455023874e-8,0.003315966551858763,-5.8226689676969886e-5,9.038585941639497e-8,0.0033162996332138915,-5.831825523870404e-5,9.052728727571216e-8,0.0033167015288640424,-5.835787971070538e-5,9.058041563143791e-8,0.0033171388754599613,-5.8316694902620264e-5,9.049864230177064e-8,0.003317570199537387,-5.818631498100734e-5,9.026951683504713e-8,0.0033179566224040904,-5.7979533462259516e-5,8.99154851350754e-8,0.0033182710352989515,-5.772533753434543e-5,8.94853309482593e-8,0.003318503156852944,-5.746022504077495e-5,8.903967082003617e-8,0.003318659520612165,-5.721893166409305e-5,8.863565691424088e-8,0.0033187593907932924,-5.7027409664830245e-5,8.831554830627552e-8,0.0033188288152567313,-5.6899447070337116e-5,8.810136402150192e-8,0.0033188949683195744,-5.683663868685322e-5,8.799503967854189e-8,0.0033189820031886176,-5.683044444173091e-5,8.79819251290983e-8,0.0033191086079180677,-5.686498657172212e-5,8.80353851458633e-8,0.0033192868090701146,-5.6919687627007744e-5,8.812108202417043e-8,0.0033195213608058194,-5.6971468212093134e-5,8.820056393045532e-8,0.003319809205334997,-5.6996756676009524e-5,8.823463939940167e-8,0.0033201388682853913,-5.6973850769248384e-5,8.818741927408212e-8,0.0033204901645404743,-5.688617916715095e-5,8.803185327819643e-8,0.0033208351653437364,-5.672667481568836e-5,8.775700668157399e-8,0.0033211417606726764,-5.650258196722333e-5,8.737589343481958e-8,0.0033213807589085697,-5.623860290952227e-5,8.693042466255639e-8,0.003321535704580842,-5.5975194089382036e-5,8.64882803546673e-8,0.003321611779853912,-5.575964063734652e-5,8.612788421461543e-8,0.0033216383488875716,-5.563121550563371e-5,8.591372038897917e-8,0.00332166160133251,-5.560648771923718e-5,8.587208299016034e-8,0.003321729332346463,-5.567246407025703e-5,8.597999999454416e-8,0.0033218749696411454,-5.5791288194139026e-5,8.617344710132884e-8,0.003322108078793622,-5.591357362818337e-5,8.636987047930183e-8,0.003322414074917141,-5.599359775464645e-5,8.649361999558831e-8,0.0033227610657908736,-5.600062818328033e-5,8.649468343439781e-8,0.0033231098129842453,-5.592409172339057e-5,8.635693899550423e-8,0.003323423401229845,-5.577304858807897e-5,8.60968278743868e-8,0.0033236746106560327,-5.5571625019046895e-5,8.57553706414179e-8,0.0033238501378285963,-5.535223551652658e-5,8.538670353148495e-8,0.003323951512978097,-5.5148243821503265e-5,8.504591708672522e-8,0.0033239930515267515,-5.4987516475655016e-5,8.477855814651931e-8,0.003323997693098464,-5.4888022929405465e-5,8.461360179444422e-8,0.0033239919654675055,-5.485601986581888e-5,8.456067453943338e-8,0.0033240012834951657,-5.4886614374086276e-5,8.461111130656435e-8,0.00332404640453801,-5.496599005265156e-5,8.474164448132102e-8,0.003324141328817078,-5.507438956499113e-5,8.491926542726227e-8,0.003324292421254159,-5.5189074106772154e-5,8.510604823670503e-8,0.0033244982624229583,-5.528690636714247e-5,8.526342573891019e-8,0.0033247498139609742,-5.534665974060568e-5,8.5356116539381e-8,0.003325030738318475,-5.535139742517621e-5,8.535622814349039e-8,0.003325318078773487,-5.529132808874682e-5,8.524810407518335e-8,0.0033255840434287193,-5.516732559483926e-5,8.503412127897562e-8,0.003325800025884042,-5.4994500283684165e-5,8.474038755337137e-8,0.003325943636647162,-5.4803921202816106e-5,8.441925947919739e-8,0.003326007954119694,-5.463949661780294e-5,8.414386557641033e-8,0.0033260093929748016,-5.454751850488496e-5,8.39906316797749e-8,0.0033259881913321188,-5.4560143825206843e-5,8.401195873056964e-8,0.0033259972865628765,-5.4680122236649234e-5,8.421112518435034e-8,0.003326082679984568,-5.4876669269890736e-5,8.453576539427439e-8,0.0033262656698723574,-5.509660108184346e-5,8.489670021080734e-8,0.0033265367421952,-5.528454025680654e-5,8.520177547374201e-8,0.0033268625692368203,-5.540089651290604e-5,8.53858406600953e-8,0.0033271997836301316,-5.5430263445104554e-5,8.542454745717457e-8,0.00332750801243725,-5.538020410605459e-5,8.533193941439912e-8,0.0033277582273325535,-5.527451512296222e-5,8.514878834424156e-8,0.0033279360985943923,-5.514504454421498e-5,8.492865234127454e-8,0.0033280417206101223,-5.502443713341801e-5,8.47257264967664e-8,0.0033280872119350394,-5.494062573953781e-5,8.458583816329359e-8,0.0033280931856418602,-5.4913121909954754e-5,8.454056432249686e-8,0.003328084687829209,-5.49510529651956e-5,8.460424445406648e-8,0.003328087119786794,-5.505287514330795e-5,8.477367296994299e-8,0.003328122619004344,-5.520754438276987e-5,8.503008040542494e-8,0.0033282072794208633,-5.539681605654844e-5,8.534289014342119e-8,0.0033283494784650124,-5.559823205385741e-5,8.567459021016955e-8,0.0033285493241682613,-5.5788247308437714e-5,8.5985886311372e-8,0.0033287989546007955,-5.594511202878772e-5,8.624053969095568e-8,0.0033290834152926,-5.605145404558202e-5,8.640978601385084e-8,0.0033293820025522038,-5.609665354800625e-5,8.647641681844645e-8,0.00332967012765513,-5.607914249037254e-5,8.64386360154981e-8,0.003329922108265471,-5.600868372770514e-5,8.63137014691309e-8,0.003330115618151409,-5.590807269377462e-5,8.614043768918587e-8,0.0033302381328333365,-5.58126677029861e-5,8.597808953775239e-8,0.0033302943335076583,-5.5765475825965935e-5,8.589791861426393e-8,0.0033303112431023363,-5.580611329656748e-5,8.596488539474054e-8,0.003330335893358347,-5.595512706192685e-5,8.621187561535514e-8,0.0033304217950196257,-5.620076748901601e-5,8.661809726569148e-8,0.0033306077541668403,-5.649824615334275e-5,8.710815973363818e-8,0.003330900673735715,-5.678551821777345e-5,8.757850948338549e-8,0.0033312733708816735,-5.7007580014031255e-5,8.793794593475561e-8,0.003331677827847687,-5.713506396332166e-5,8.81385544183494e-8,0.0033320641462310304,-5.7168762976044525e-5,8.818303689777447e-8,0.003332394888741356,-5.713232454494835e-5,8.81121521924967e-8,0.003332650948899174,-5.706056072566515e-5,8.79848172366316e-8,0.0033328307387244707,-5.69892054818512e-5,8.786079588531413e-8,0.003332946103134148,-5.6948270940260595e-5,8.7789662082767e-8,0.003333017524013881,-5.695869565914077e-5,8.780546633003202e-8,0.003333069785980845,-5.7031151550971855e-5,8.79250644837299e-8,0.003333128293176569,-5.7166122827538784e-5,8.814848616597651e-8,0.003333215942814037,-5.735486447701515e-5,8.846062555209589e-8,0.003333350526081416,-5.758107712399529e-5,8.883400189972032e-8,0.003333542711568079,-5.782323256543382e-5,8.923255045240708e-8,0.0033337948024626724,-5.805748921759443e-5,8.961641831353482e-8,0.0033341004955474854,-5.826092281925177e-5,8.994735848331943e-8,0.0033344456574180216,-5.8414663420069585e-5,9.019404254409442e-8,0.0033348099763535065,-5.850667539814434e-5,9.033680470762473e-8,0.0033351693972139954,-5.8534013007029704e-5,9.037145788055351e-8,0.0033354992652454255,-5.850435337312846e-5,9.031176994724097e-8,0.003335778150817505,-5.8436628216984924e-5,9.019026948162117e-8,0.0033359924676545083,-5.836033415719681e-5,9.005674088553579e-8,0.003336141696475799,-5.831247259530645e-5,8.99728131408324e-8,0.003336242937122228,-5.833081796090152e-5,9.000064726389226e-8,0.003336332072852576,-5.844314497737879e-5,9.018519988192054e-8,0.003336457993721301,-5.8654611621949015e-5,9.053364701309959e-8,0.003336668034416213,-5.8939341334053395e-5,9.100181248328803e-8,0.0033369886308538366,-5.9243988034202145e-5,9.15003563787348e-8,0.0033374117211466396,-5.950577741976175e-5,9.192485569877443e-8,0.0033378966406314506,-5.9676814334938345e-5,9.219623025373824e-8,0.003338387060585492,-5.974061238822445e-5,9.228818050131115e-8,0.003338832161640395,-5.9712769824558396e-5,9.222809662066525e-8,0.003339200660884803,-5.9629238348668325e-5,9.207713490030904e-8,0.0033394839946629365,-5.9531508527586526e-5,9.19051435138701e-8,0.00333969194933606,-5.9455615021928336e-5,9.177216062406416e-8,0.0033398456958361393,-5.9426735296063406e-5,9.171952556625893e-8,0.0033399714625476887,-5.94580076063395e-5,9.176821138029921e-8,0.0033400959454044452,-5.9551503177061825e-5,9.19207583444299e-8,0.003340243216604815,-5.969991931487511e-5,9.21642828744451e-8,0.003340432528612182,-5.988845372977386e-5,9.247363390315894e-8,0.00334067661964073,-6.009682747560091e-5,9.281470236403697e-8,0.003340980391006287,-6.0301603901974886e-5,9.314821825194654e-8,0.0033413400860247433,-6.047899922745841e-5,9.34344253905957e-8,0.0033417433406987395,-6.0608161718892285e-5,9.363861218700703e-8,0.0033421704338331562,-6.0674530868574566e-5,9.373681434940468e-8,0.003342596793867571,-6.067274472862805e-5,9.372073186756808e-8,0.003342996619504433,-6.060857747387037e-5,9.360092417739725e-8,0.0033433472973181913,-6.049938316515723e-5,9.340736779360886e-8,0.003343634076313921,-6.037265637678459e-5,9.318674843140178e-8,0.003343854352958671,-6.026253039672385e-5,9.29962869527095e-8,0.0033440207974379525,-6.02040503597778e-5,9.289398103642671e-8,0.00334416209570793,-6.0225227664861864e-5,9.292540486542561e-8,0.0033443195738953684,-6.033783862182839e-5,9.310869759814082e-8,0.0033445382535737425,-6.052967926745262e-5,9.342213643036966e-8,0.0033448528768625176,-6.076271261213488e-5,9.380146725962548e-8,0.0033452733341006566,-6.098129519580642e-5,9.415379750598335e-8,0.0033457773304763423,-6.11302103754188e-5,9.43875995339562e-8,0.003346316441695281,-6.117498982465232e-5,9.444642575943193e-8,0.0033468338086486238,-6.111354333006799e-5,9.432810795018451e-8,0.0033472838692474196,-6.097324927755117e-5,9.4079645301939e-8,0.0033476441985163447,-6.0797240704200516e-5,9.377398884436344e-8,0.0033479163084475117,-6.062888070521747e-5,9.348385258171712e-8,0.003348119017326552,-6.050124738963157e-5,9.326410433273226e-8,0.0033482798563691583,-6.043317112036643e-5,9.314535120928058e-8,0.0033484280459571253,-6.0429873261064216e-5,9.313533471622201e-8,0.0033485900303240564,-6.0485597297215256e-5,9.322360188274091e-8,0.0033487870427821647,-6.058650061285441e-5,9.338645264051759e-8,0.003349033779148276,-6.071317745669125e-5,9.359112405668456e-8,0.003349337512154647,-6.084287930407258e-5,9.379941019517652e-8,0.0033496973868342426,-6.0951778738148076e-5,9.39713912066027e-8,0.0033501040189214903,-6.1017654657638296e-5,9.406994902831682e-8,0.003350539852327468,-6.102313701204754e-5,9.406628005534092e-8,0.0033509808424563464,-6.0959184102096446e-5,9.394579478956938e-8,0.0033513997985662727,-6.0828035243102085e-5,9.371305998195274e-8,0.003351771242630648,-6.064464806465786e-5,9.339407682046672e-8,0.0033520770502697586,-6.043567280060645e-5,9.303431185934628e-8,0.0033523115992083793,-6.023549059632611e-5,9.269175686275925e-8,0.0033524849538567095,-6.0079656147178764e-5,9.242570667708549e-8,0.003352622868607595,-5.999683644913714e-5,9.228321247007672e-8,0.0033527629108964156,-6.0000858451751614e-5,9.228598308330152e-8,0.0033529466888537886,-6.0084899028015664e-5,9.242109352946563e-8,0.003353209163212818,-6.0220101719581925e-5,9.263915942649568e-8,0.003353567452423346,-6.036056292024498e-5,9.286301996208644e-8,0.003354013074553909,-6.045506176241125e-5,9.300742375322236e-8,0.003354511938151932,-6.0462793179074204e-5,9.300515855826013e-8,0.003355013937094379,-6.036701837740332e-5,9.282957547814603e-8,0.0033554690078815767,-6.018006277425595e-5,9.250263119120252e-8,0.0033558424476254254,-5.9937221757790955e-5,9.208440293612802e-8,0.0033561228412348943,-5.9683282240027307e-5,9.165030735952862e-8,0.003356320744440452,-5.9458664926667036e-5,9.126781835699132e-8,0.003356461215846782,-5.929059997108527e-5,9.09818074709203e-8,0.0033565749791113304,-5.919060979973586e-5,9.081060603989335e-8,0.0033566915189816907,-5.915640839670276e-5,9.07494897969949e-8,0.0033568350305881473,-5.91755770416691e-5,9.077702401431161e-8,0.003357022613830941,-5.9229226963443656e-5,9.086121990946202e-8,0.003357263701159578,-5.929496452229679e-5,9.096440629587108e-8,0.003357559911226247,-5.934921839576949e-5,9.104702421945221e-8,0.0033579049385909485,-5.9369383956175455e-5,9.1071192375381e-8,0.0033582845835001054,-5.9336313704812116e-5,9.100494733703145e-8,0.00335867744667257,-5.923739982099832e-5,9.082751861971475e-8,0.003359057001605932,-5.906997363720898e-5,9.053508695821385e-8,0.003359395616398978,-5.884413276926084e-5,9.014546329210125e-8,0.003359670484111321,-5.858354614172143e-5,8.96992412648217e-8,0.003359870306372325,-5.83227294745991e-5,8.925494292974744e-8,0.003360000476205311,-5.8100244081356475e-5,8.887733886137964e-8,0.0033600842939887445,-5.794905158876692e-5,8.862112733910623e-8,0.0033601588394004405,-5.7886876867381644e-5,8.851484939281549e-8,0.0033602660797591934,-5.790993390908707e-5,8.85506789176601e-8,0.003360441674025316,-5.799244505104898e-5,8.868407215376571e-8,0.003360704848971143,-5.809247460735285e-5,8.884397868653839e-8,0.003361052408555661,-5.8162610399993446e-5,8.895098477449679e-8,0.0033614587985430038,-5.816263041067814e-5,8.893850581578914e-8,0.003361882595100984,-5.807055435201572e-5,8.877103313526498e-8,0.0033622778382321966,-5.788851232418176e-5,8.845357733079992e-8,0.003362606646946412,-5.764123357960088e-5,8.802875740347297e-8,0.003362848722009863,-5.736772166360094e-5,8.756257923304475e-8,0.003363004624307182,-5.710951428610873e-5,8.712465566458204e-8,0.0033630925651310676,-5.690004657624532e-5,8.677046271557997e-8,0.0033631411170110623,-5.6758424875231495e-5,8.653114040510852e-8,0.003363181256001812,-5.668835779717318e-5,8.641199419472419e-8,0.0033632402740149748,-5.6680785627308535e-5,8.639713164955336e-8,0.0033633383786634027,-5.67180183840242e-5,8.64564805526587e-8,0.0033634874868962595,-5.6777755378881375e-5,8.65524655651299e-8,0.0033636912810481303,-5.683628445550697e-5,8.66452477529796e-8,0.003363945718484768,-5.687086249094485e-5,8.669663650025481e-8,0.0033642395389277832,-5.686171426360383e-5,8.667346696354637e-8,0.0033645548029027344,-5.6794222114151424e-5,8.655138743646585e-8,0.0033648679728196743,-5.6661634264931834e-5,8.631952160889124e-8,0.003365152316192434,-5.646808727765676e-5,8.598556119531746e-8,0.0033653823440695273,-5.6231009443925796e-5,8.557966538825618e-8,0.003365540348867742,-5.598115619209057e-5,8.515425825459867e-8,0.0033656236291926926,-5.5758262063050816e-5,8.477643543829795e-8,0.003365649237974656,-5.5601580627967396e-5,8.451187493962213e-8,0.003365652653538818,-5.5537505781072915e-5,8.440402629396734e-8,0.0033656789459104476,-5.5569291146105796e-5,8.445703766415184e-8,0.003365769023611574,-5.5674099565599833e-5,8.463116901817921e-8,0.003365946605285959,-5.580935658495085e-5,8.485389455646114e-8,0.003366211262409989,-5.592573091926771e-5,8.504204720695987e-8,0.0033665395943343838,-5.598132333980049e-5,8.512577176624952e-8,0.003366892961472996,-5.59521898282755e-5,8.506604596898847e-8,0.003367228357217615,-5.583677491599288e-5,8.486175343471328e-8,0.0033675090217883843,-5.565418314517531e-5,8.454632832083293e-8,0.0033677122812087027,-5.543770395775392e-5,8.417651191158752e-8,0.0033678331653782018,-5.522579913828783e-5,8.381704806824443e-8,0.0033678834944036373,-5.50530389308712e-5,8.352552276592036e-8,0.0033678872697589877,-5.494321345418341e-5,8.334103225252462e-8,0.003367874119813055,-5.490600237086945e-5,8.327889130742978e-8,0.0033678728417263332,-5.493731937946403e-5,8.333146207894089e-8,0.003367906582298691,-5.50223028120182e-5,8.347329601819736e-8,0.003367990240931756,-5.5139459330814e-5,8.36680693328067e-8,0.003368129820921837,-5.5264706650024884e-5,8.387526013174893e-8,0.0033683230141878383,-5.53746278372721e-5,8.405550425907457e-8,0.0033685602874602904,-5.544884667401181e-5,8.417455801548991e-8,0.0033688260245799536,-5.5471875403664845e-5,8.420648096017351e-8,0.0033690996964164,-5.54349217648513e-5,8.41368044105891e-8,0.0033693574390171246,-5.533796983745346e-5,8.396611154911362e-8,0.003369574738556079,-5.51920190230235e-5,8.371373979967595e-8,0.0033697309471166486,-5.502062543221554e-5,8.342014676700197e-8,0.0033698157191195807,-5.4858963662490004e-5,8.314502135403152e-8,0.00336983588693757,-5.4748211466438515e-5,8.295758836096101e-8,0.003369819180796456,-5.472435396786891e-5,8.291770942984493e-8,0.0033698103447281362,-5.4804144817696605e-5,8.305241791698605e-8,0.0033698580327925177,-5.497509215486744e-5,8.333937840761425e-8,0.00336999704671909,-5.519660736781785e-5,8.370918090270701e-8,0.003370235023755808,-5.541355414664154e-5,8.406846696487325e-8,0.0033705505910493,-5.557548077177791e-5,8.43325066766928e-8,0.0033709027002781183,-5.565191209448797e-5,8.445094442884492e-8,0.0033712449573918956,-5.563811944371171e-5,8.441726573141519e-8,0.0033715383281370122,-5.5551947479558465e-5,8.426301455023264e-8,0.0033717588003342688,-5.5425603682988634e-5,8.404350744757277e-8,0.0033718997534319347,-5.529628730757146e-5,8.382176259040501e-8,0.0033719703516509663,-5.519808521396885e-5,8.365483265879684e-8,0.0033719915125817105,-5.515616301581334e-5,8.358424368986457e-8,0.003371990670460589,-5.5183508520810655e-5,8.363084262341449e-8,0.003371996312094328,-5.5280222125438397e-5,8.37938999603007e-8,0.0033720332014755966,-5.543506986883743e-5,8.405389123547616e-8,0.0033721189855487107,-5.56286157858378e-5,8.437778720791833e-8,0.003372262458821144,-5.5837078683713314e-5,8.472545698884107e-8,0.0033724633940253805,-5.603614789623234e-5,8.505597653427594e-8,0.003372713546608454,-5.620417709122976e-5,8.533294234846123e-8,0.0033729982668022603,-5.632452546423462e-5,8.552844070193068e-8,0.00337329829570848,-5.6387235045065904e-5,8.562597120345452e-8,0.003373591662554191,-5.639037939243083e-5,8.56228158420924e-8,0.0033738558827816345,-5.634128823507716e-5,8.553209949381927e-8,0.0033740709065428706,-5.625757728164715e-5,8.538435984518772e-8,0.0033742233614416587,-5.6167318041165296e-5,8.522753464272809e-8,0.0033743120850930324,-5.6106839883563096e-5,8.512295286558207e-8,0.0033743535182657845,-5.6114284681771475e-5,8.51343302306435e-8,0.003374383584560917,-5.621816091412462e-5,8.530860378052354e-8,0.003374451653711905,-5.642363033026548e-5,8.565316246357324e-8,0.003374604874548048,-5.670392651341919e-5,8.612176775673318e-8,0.003374868363272367,-5.700515151316815e-5,8.662290807184912e-8,0.0033752327666612806,-5.726543902108981e-5,8.705223569982031e-8,0.003375657734454065,-5.743861941957818e-5,8.733251492462779e-8,0.00337608883276525,-5.7508964679654286e-5,8.743842547911098e-8,0.0033764770314720334,-5.749109053497066e-5,8.739613430904317e-8,0.003376791288154108,-5.741928432963936e-5,8.726484516431357e-8,0.003377021873463669,-5.733428391425587e-5,8.711405749206888e-8,0.003377177244553692,-5.727289468373037e-5,8.700584615729924e-8,0.0033772782065038614,-5.7261975296652276e-5,8.698482352101486e-8,0.003377351897211726,-5.731608876134401e-5,8.707450164078988e-8,0.0033774266600864046,-5.743750053577925e-5,8.727765185706965e-8,0.0033775279397840904,-5.761758344607225e-5,8.757892428997106e-8,0.0033776751676794963,-5.783921764291742e-5,8.794897670651642e-8,0.0033778797227997696,-5.807988352583364e-5,8.834963725304223e-8,0.0033781440270615184,-5.831509017006301e-5,8.873957895692964e-8,0.0033784617768650477,-5.8521803894550365e-5,8.908001953560924e-8,0.003378819238634322,-5.868149381761238e-5,8.933984781642511e-8,0.003379197323670683,-5.8782439093002966e-5,8.949957584080041e-8,0.003379574066231394,-5.882122050843463e-5,8.955393397490966e-8,0.003379927308581292,-5.880351542948081e-5,8.951323372093641e-8,0.0033802375736910525,-5.8744255904977356e-5,8.940353066295135e-8,0.003380491220639322,-5.86670851430349e-5,8.92654614473728e-8,0.003380684061250688,-5.8602724717853605e-5,8.915117457299559e-8,0.003380825238790617,-5.8585283278155506e-5,8.911787039413452e-8,0.0033809400725077258,-5.8645366370736766e-5,8.921617853680288e-8,0.0033810692089788217,-5.8799874204040243e-5,8.947323513780382e-8,0.003381260821250198,-5.904106722336901e-5,8.987469296042821e-8,0.0033815547925915685,-5.933123263112307e-5,9.0356110182332e-8,0.003381964109575867,-5.961028832185029e-5,9.081592148861166e-8,0.0033824647851254143,-5.981713959083937e-5,9.1151422106769e-8,0.003383003169851391,-5.9914358833980524e-5,9.130033548932249e-8,0.0033835175357943767,-5.9901254032734106e-5,9.126278647579509e-8,0.0033839605590798446,-5.980890433849116e-5,9.10926902260356e-8,0.00338431099616989,-5.968366488858203e-5,9.086948355865654e-8,0.0033845727837585357,-5.9570442762593056e-5,9.066948346775116e-8,0.0033847670858004075,-5.950243521857609e-5,9.05484296124944e-8,0.0033849232362922243,-5.9497727807565615e-5,9.053594275132374e-8,0.0033850716583332255,-5.956024397003957e-5,9.063751388399143e-8,0.0033852393421935963,-5.9682490187505253e-5,9.083949487511646e-8,0.0033854472176725985,-5.984859127500225e-5,9.111441080009529e-8,0.0033857086133339863,-6.003720459463659e-5,9.142588647628522e-8,0.0033860284271986017,-6.022439650227471e-5,9.173340583043047e-8,0.003386402955846923,-6.038656005091193e-5,9.199713865518988e-8,0.003386820462731965,-6.0503374088305864e-5,9.218289744117541e-8,0.003387262658810295,-6.05606230682693e-5,9.226693315388558e-8,0.0033877071395750856,-6.0552452997181255e-5,9.223981379163578e-8,0.0033881305330445235,-6.048266726105932e-5,9.210864890465263e-8,0.0033885120041810286,-6.036487174837796e-5,9.189727295160823e-8,0.003388836782278121,-6.022136221100909e-5,9.164417689053099e-8,0.003389099364723984,-6.008071140194549e-5,9.139814912203612e-8,0.003389306087909998,-5.9974056769629564e-5,9.121173103792565e-8,0.0033894766507592314,-5.992991778520634e-5,9.113234376727132e-8,0.0033896436217253243,-5.9967392439029444e-5,9.119094033650632e-8,0.003389848331184142,-6.00884494472235e-5,9.138938243016609e-8,0.003390131696696725,-6.027176738671097e-5,9.169052134537972e-8,0.003390520408645742,-6.0472489173007385e-5,9.20181223124543e-8,0.003391013048776062,-6.0632291852483944e-5,9.227391611926006e-8,0.003391574685345615,-6.069936708195099e-5,9.237117323434914e-8,0.0033921465752053356,-6.0649508463182645e-5,9.227013011226155e-8,0.003392668019375996,-6.049561955058757e-5,9.199390213601754e-8,0.003393098109249708,-6.027985582758634e-5,9.161498325294656e-8,0.003393425788317697,-6.005472021645174e-5,9.12229510324662e-8,0.00339366621882231,-5.986502345047448e-5,9.089367784604274e-8,0.003393849764889761,-5.973824800765525e-5,9.067301795341194e-8,0.0033940108887349028,-5.9683418753718195e-5,9.057517474706375e-8,0.0033941806177451347,-5.969475502631139e-5,9.058927390461232e-8,0.0033943828082887316,-5.9756555264083074e-5,9.068792616803152e-8,0.0033946329021984417,-5.984744069403636e-5,9.083450585144963e-8,0.003394937808251754,-5.994358255246006e-5,9.098854172687638e-8,0.003395296161910116,-6.002127117598997e-5,9.110993548500498e-8,0.003395698804414143,-6.0059267214638514e-5,9.116285658288206e-8,0.0033961296425301405,-6.004122350292775e-5,9.111984405853812e-8,0.0033965672449549665,-5.995817702591761e-5,9.096608893871411e-8,0.0033969875056327195,-5.9810681332088226e-5,9.070310529653611e-8,0.0033973673472186662,-5.960989551896998e-5,9.035055940505286e-8,0.0033976890073721226,-5.937702862808381e-5,8.994519524467432e-8,0.00339794414966279,-5.914078600227383e-5,8.953626954603158e-8,0.00339813686265762,-5.893285864413488e-5,8.91776383701858e-8,0.0033982846760873316,-5.8782022201718587e-5,8.891757350029357e-8,0.0033984170426695744,-5.8707756459061303e-5,8.878796990728907e-8,0.0033985710041651773,-5.8714419523522015e-5,8.879474808736464e-8,0.003398783964213327,-5.8787308590801815e-5,8.891163690828701e-8,0.003399084097724401,-5.889244323337396e-5,8.908026373626042e-8,0.003399480270250761,-5.898203293481756e-5,8.921967011645284e-8,0.0033999551699554283,-5.900646431000797e-5,8.924656326463904e-8,0.003400466358786225,-5.893049216975236e-5,8.91024588459512e-8,0.003400957801068039,-5.8747104648884236e-5,8.877683281588798e-8,0.003401378527359106,-5.848118000125292e-5,8.831304298309702e-8,0.0034016995373273343,-5.817987411373497e-5,8.779181892187154e-8,0.0034019205448226966,-5.789489120259509e-5,8.730103063936285e-8,0.0034020649231812825,-5.7666180030203005e-5,8.690798801868969e-8,0.003402168049287801,-5.751375176227864e-5,8.664571506488682e-8,0.003402265858276145,-5.743804869788241e-5,8.651389470980682e-8,0.00340238747932283,-5.742519852330234e-5,8.64881096032888e-8,0.0034025522455255973,-5.7453234933997976e-5,8.653057385184077e-8,0.0034027695489980392,-5.7497130460310654e-5,8.659865614011625e-8,0.003403039886903058,-5.753221388492227e-5,8.665054230622828e-8,0.0034033560870460524,-5.753644074444263e-5,8.664895352331391e-8,0.0034037044047870047,-5.7492186034072585e-5,8.656414307834132e-8,0.003404065680014834,-5.738807359108861e-5,8.637705347880114e-8,0.0034044170305128105,-5.722099116240365e-5,8.60828262613509e-8,0.003404734597935735,-5.6997926909140374e-5,8.569395943787588e-8,0.003404997558905359,-5.6736793275923886e-5,8.524163215191012e-8,0.0034051929890715296,-5.646520876211743e-5,8.477344074418974e-8,0.003405320408160798,-5.621648018227168e-5,8.434631513995815e-8,0.003405394300451476,-5.6022900264124296e-5,8.40149123124777e-8,0.0034054430646795236,-5.590772696450894e-5,8.381791884209707e-8,0.0034055038606741876,-5.587815564824331e-5,8.376626228374444e-8,0.0034056142384550816,-5.59216390476811e-5,8.383721738396868e-8,0.003405802567121793,-5.600706841995555e-5,8.397686437719106e-8,0.003406079762115114,-5.609104831024885e-5,8.411111539414267e-8,0.0034064347003346877,-5.6128202268790945e-5,8.416335082003054e-8,0.0034068351738956544,-5.6083285215666045e-5,8.407483916197228e-8,0.003407235151776666,-5.594181500695267e-5,8.382243623901492e-8,0.0034075871596243503,-5.5715353849958e-5,8.342714398589868e-8,0.0034078560389337632,-5.543856994368361e-5,8.294878555047174e-8,0.0034080288015259303,-5.5158405656903775e-5,8.246741739171249e-8,0.003408116556022004,-5.491960304745137e-5,8.20587213493105e-8,0.0034081483496585887,-5.475262430635319e-5,8.17736335484883e-8,0.0034081606287834965,-5.466819510979342e-5,8.162935251217643e-8,0.003408187213574958,-5.465879991060622e-5,8.161218884734959e-8,0.0034082529479952245,-5.470438823302094e-5,8.168747464274309e-8,0.0034083714747449156,-5.477893708194855e-5,8.181075694408507e-8,0.0034085458513296286,-5.4855751000708015e-5,8.193669718795236e-8,0.003408770414545297,-5.4910925975911326e-5,8.202480039048432e-8,0.003409032781106392,-5.4925363401297566e-5,8.204274072682829e-8,0.0034093155318804143,-5.488606600123461e-5,8.196858076576507e-8,0.0034095977133735593,-5.478735913882586e-5,8.179294852554372e-8,0.0034098566636729913,-5.463228818846857e-5,8.1521508229844755E-08,0.003410070752139286,-5.443391476149148e-5,8.117715796819658e-8,0.0034102233957102024,-5.4215684339399623e-5,8.0800505879973e-8,0.003410308068531649,-5.400958289018258e-5,8.044648266424068e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json new file mode 100644 index 000000000..5a65685cc --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":22000,"numberOfSamples":1000,"samples":[0.003410332914201753,-5.3850894022675106e-5,8.017517098961131e-8,0.003410322528879365,-5.376958194615e-5,8.003701237438996e-8,0.0034103145652221627,-5.3780481135696216e-5,8.005617875605212e-8,0.0034103506775372276,-5.3876274061593275e-5,8.021888857849169e-8,0.003410464307410866,-5.402707135418975e-5,8.047308167596654e-8,0.003410669971601388,-5.4187778507499705e-5,8.074133887896081e-8,0.003410958362427396,-5.431078402439631e-5,8.094271511350002e-8,0.0034112988966924413,-5.435925986441926e-5,8.101538020005893e-8,0.0034116483046836123,-5.431671386401488e-5,8.093263501288651e-8,0.0034119621492173344,-5.41904204198061e-5,8.070834304160092e-8,0.0034122059256284677,-5.400841636122217e-5,8.039138838903804e-8,0.0034123629141804617,-5.38113276447821e-5,8.005145827068325e-8,0.003412436926427523,-5.3641509849942013e-5,7.976047048128742e-8,0.0034124495366027988,-5.3532666321671336e-5,7.957504010808949e-8,0.0034124330661485227,-5.350283981451321e-5,7.952484351765614e-8,0.0034124218722404974,-5.3552370565715433e-5,7.960947036368768e-8,0.0034124447457084236,-5.3666539079328896e-5,7.980316491937519e-8,0.0034125202858526367,-5.382106091332426e-5,8.00642647210325e-8,0.0034126555868305777,-5.398815305369993e-5,8.034545908014444e-8,0.0034128473776592204,-5.414152490629849e-5,8.06021342297411e-8,0.0034130843642180496,-5.425966542015235e-5,8.079783644736344e-8,0.0034133497512128354,-5.4327618445658844e-5,8.090725685897239e-8,0.003413623435855102,-5.4337869912637006e-5,8.091781018622006e-8,0.003413883907454681,-5.429097539492461e-5,8.083081580105819e-8,0.0034141102665403125,-5.419622361028624e-5,8.066268207707981e-8,0.0034142849136512055,-5.407215162017978e-5,8.044570051432896e-8,0.00341439730488426,-5.394617096384391e-5,8.022718223765307e-8,0.003414448551881033,-5.385201336379878e-5,8.006482802604857e-8,0.0034144554442633347,-5.382365677022172e-5,8.001619006311863e-8,0.003414451133210198,-5.388562472720168e-5,8.012215438343905e-8,0.0034144795115925615,-5.4042269894100845e-5,8.038890648236031e-8,0.003414582717752921,-5.427144088560471e-5,8.077748959286917e-8,0.0034147858366957128,-5.452785635760065e-5,8.120990068433355e-8,0.003415086335408109,-5.475685197042185e-5,8.159276299340531e-8,0.0034154541675420077,-5.491264135361651e-5,8.184854560101504e-8,0.003415842328369328,-5.497241133679643e-5,8.19395012048398e-8,0.0034162020648540446,-5.494079694397467e-5,8.187500799224558e-8,0.0034164960597480513,-5.484509224563486e-5,8.170297816008171e-8,0.003416705855690934,-5.472520370648011e-5,8.14923147861858e-8,0.0034168331491478627,-5.462263220717812e-5,8.131389578844407e-8,0.003416896425673255,-5.457135459703978e-5,8.122506662590603e-8,0.003416924864737033,-5.459196701501527e-5,8.125992201462119e-8,0.0034169512624180483,-5.468942093895768e-5,8.142580537893595e-8,0.0034170054267853647,-5.485407812356393e-5,8.17054100824689e-8,0.0034171092005408077,-5.506533196508355e-5,8.206310391954363e-8,0.0034172737893538854,-5.529662285957986e-5,8.24534661992994e-8,0.0034174994368857004,-5.552057481406241e-5,8.282992315001632e-8,0.0034177769459542693,-5.5713266654435735e-5,8.315188937008223e-8,0.0034180902481047706,-5.58571185539423e-5,8.338960767448971e-8,0.0034184192209990544,-5.594239734507513e-5,8.352672714006698e-8,0.0034187422744122974,-5.5967759795049916e-5,8.356130894842189e-8,0.0034190386613258106,-5.5940313585960716e-5,8.350600300356605e-8,0.0034192907451060053,-5.5875438829459745e-5,8.338772029482915e-8,0.0034194865853197334,-5.5796286755981725e-5,8.324661178228372e-8,0.0034196231618546383,-5.573239332743332e-5,8.313343416160889e-8,0.0034197100026956712,-5.571629566234729e-5,8.310353167794132e-8,0.0034197718373557965,-5.5777017730924494e-5,8.320565011677361e-8,0.0034198476546487924,-5.593045265235306e-5,8.346570742357244e-8,0.0034199832418701356,-5.6169307155583144e-5,8.387000547866622e-8,0.0034202166393619616,-5.64584557493018e-5,8.435767926960611e-8,0.0034205614639800535,-5.67418663020452e-5,8.483274082655738e-8,0.003420997727034218,-5.696140593963007e-5,8.51962311929662e-8,0.0034214773558268368,-5.707879301142648e-5,8.538365211417604e-8,0.0034219421419332224,-5.708851047552745e-5,8.538688805157197e-8,0.0034223438059788605,-5.701585691614104e-5,8.525060072019697e-8,0.0034226564954146083,-5.690413699843295e-5,8.504993386503595e-8,0.003422878920363075,-5.679944106094893e-5,8.486413227000239e-8,0.0034230291674335464,-5.6739176541925223e-5,8.475681081074442e-8,0.003423136660697731,-5.6746178962097036e-5,8.476606168603778e-8,0.0034232343831674863,-5.682746769406769e-5,8.490269488349289e-8,0.0034233527024106186,-5.697594757338996e-5,8.515352124084064e-8,0.003423515048462373,-5.717372366496969e-5,8.548725451920484e-8,0.003423735360724929,-5.739623453008071e-5,8.586162778920173e-8,0.0034240171921175824,-5.761661689063496e-5,8.623076555625632e-8,0.003424354282394761,-5.7809781532945634e-5,8.655200921001188e-8,0.003424732337212298,-5.795580012171021e-5,8.679159414405439e-8,0.0034251316600929604,-5.804228112995662e-5,8.692867283680107e-8,0.0034255301389273553,-5.8065571370678764e-5,8.695739993818016e-8,0.0034259061435299876,-5.8030942708281336e-5,8.68873016976559e-8,0.003426241192945239,-5.7952061490074354e-5,8.674237096252997e-8,0.003426522442310002,-5.784987818084441e-5,8.655906513984539e-8,0.0034267450710929025,-5.775090698206635e-5,8.638314938058331e-8,0.0034269146613510586,-5.768461436478088e-5,8.626498016672915e-8,0.0034270492888037753,-5.7679206341423455e-5,8.625215296635437e-8,0.0034271801115048016,-5.775513150463932e-5,8.637847340111039e-8,0.003427348318837799,-5.791673040416302e-5,8.66500111928406e-8,0.003427596290732135,-5.814466196255829e-5,8.703260278195282e-8,0.0034279529627239238,-5.8394327194921334e-5,8.744949479355945e-8,0.003428418470586544,-5.860576263431353e-5,8.77983298726461e-8,0.00342895785967562,-5.872474275422114e-5,8.79870966366347e-8,0.0034295111225311516,-5.872520138069127e-5,8.797231646130829e-8,0.0034300159367414112,-5.8619276575255356e-5,8.777608739665868e-8,0.003430429936364875,-5.8449346719175054e-5,8.747221956219683e-8,0.0034307409539403753,-5.8269005362368705e-5,8.715330218992734e-8,0.0034309636874953423,-5.812488879415304e-5,8.689927969838687e-8,0.0034311290547955646,-5.804651663753494e-5,8.676002574361577e-8,0.0034312730856115364,-5.804431513186724e-5,8.675224016919222e-8,0.003431428842749821,-5.811258599710215e-5,8.686495556850346e-8,0.003431621833748501,-5.823424073945281e-5,8.706799112634763e-8,0.0034318679871170456,-5.838549788451625e-5,8.732014432177786e-8,0.0034321731793053077,-5.854001187955921e-5,8.757621999925782e-8,0.0034325337535511193,-5.8672442465983527E-05,8.779300375802679e-8,0.0034329377969641297,-5.876149483775846e-5,8.79343338304245e-8,0.0034333670820067457,-5.8792422402358875e-5,8.7975316488367e-8,0.0034337996533433854,-5.875886549720411e-5,8.790547650809066e-8,0.0034342129023982814,-5.8663743295375374e-5,8.773032040338553e-8,0.0034345867528595554,-5.8519040728693963E-05,8.747098149349937e-8,0.00343490662495616,-5.834457618854895e-5,8.716204139286165e-8,0.003435165997133961,-5.816584043444344e-5,8.684766473704805e-8,0.003435368377604481,-5.8010940498476064e-5,8.657614158669101e-8,0.003435528469312809,-5.79066894188021e-5,8.639300030976978e-8,0.0034356721817477088,-5.787374966119817e-5,8.633265875065238e-8,0.0034358346431882215,-5.7920805816179714e-5,8.640865043476558e-8,0.00343605489737805,-5.8038637339463834e-5,8.660388209222903e-8,0.0034363663675272185,-5.8196543664505935e-5,8.686495377469283e-8,0.003436784132872785,-5.834498191690136e-5,8.710692888866458e-8,0.003437293776835478,-5.8427735873480615e-5,8.72341254787051e-8,0.0034378497110881335,-5.8402092841660325e-5,8.717442687949159e-8,0.0034383882973978448,-5.8257765502926945e-5,8.691145603639477e-8,0.003438851408713721,-5.802240303565348e-5,8.649384664598423e-8,0.0034392073380863355,-5.774932951993929e-5,8.601401185593557e-8,0.0034394577744100104,-5.749559608304214e-5,8.557022184800596e-8,0.003439630233895451,-5.7303386349150334e-5,8.523451882013677e-8,0.0034397639148655676,-5.71921018810065e-5,8.503923334835471e-8,0.003439897152082377,-5.716002300749245e-5,8.498019404726612e-8,0.0034400599773055985,-5.719061355114749e-5,8.502796230293353e-8,0.0034402713672934656,-5.725932344600479e-5,8.513976877355545e-8,0.0034405393098027363,-5.7338962376120295e-5,8.52687687250456e-8,0.0034408620305790096,-5.7403458295962594e-5,8.5370360365332e-8,0.0034412295639111826,-5.74305399376233e-5,8.540661686558558e-8,0.0034416255077720182,-5.7403819017073256e-5,8.534975049941572e-8,0.0034420290593737894,-5.7314494475115625e-5,8.518502074925517e-8,0.0034424175204084556,-5.7162649725107814e-5,8.491300299198063e-8,0.0034427693744096327,-5.695780291358059e-5,8.45505703435799e-8,0.003443067694390436,-5.671827027498391e-5,8.412977141244271e-8,0.0034433033585062117,-5.6469137408961e-5,8.369422260683416e-8,0.003443477522363603,-5.6238888006486065e-5,8.329312068593308e-8,0.0034436028265143223,-5.6054927768332085e-5,8.297335687745774e-8,0.0034437028776761053,-5.593849466785818e-5,8.277067663956046e-8,0.0034438096971042514,-5.589961405993521e-5,8.270110737924363e-8,0.0034439589152577502,-5.593284157050621e-5,8.275395289466784e-8,0.0034441825909026142,-5.601493075148707e-5,8.288821797121621e-8,0.0034445001635288017,-5.610621465702858e-5,8.303535737202917e-8,0.0034449095226591654,-5.615762951966539e-5,8.311147869532069e-8,0.0034453821233687756,-5.612393855092263e-5,8.303989847633601e-8,0.003445866927768903,-5.598013860657117e-5,8.277898571579688e-8,0.003446305117155568,-5.573359851034611e-5,8.234268399454156e-8,0.003446650688170405,-5.54237541297035e-5,8.179975395214818e-8,0.003446886420895123,-5.5107576665760024e-5,8.124862318937609e-8,0.0034470267259821934,-5.483846667724602e-5,8.078097385183255e-8,0.00344710766051307,-5.464993566767857e-5,8.04536936374894e-8,0.003447171789706657,-5.455038535028025e-5,8.028012646114274e-8,0.0034472558389312216,-5.452741901483898e-5,8.02378602589795e-8,0.003447384454009153,-5.455622510521429e-5,8.028347230580017e-8,0.003447569166450617,-5.460748845901849e-5,8.036626359875367e-8,0.003447810144196527,-5.465292154467429e-5,8.043768722291936e-8,0.0034480987268725206,-5.466849659176279e-5,8.045671557812648e-8,0.003448419783191651,-5.46362499989435e-5,8.039277888315682e-8,0.003448753772593059,-5.45454637568273e-5,8.022774113086465e-8,0.0034490787902391605,-5.439364106836301e-5,7.995762374625734e-8,0.003449372967644381,-5.41872734508112e-5,7.959400330433788e-8,0.0034496174799257423,-5.394199608711304e-5,7.916430464845655e-8,0.003449800033082265,-5.368150494101013e-5,7.870985989025718e-8,0.0034499182123150364,-5.343472982432336e-5,7.828086678372597e-8,0.003449981722370573,-5.323117506956941e-5,7.792815673433031e-8,0.0034500124919465153,-5.30949612652312e-5,7.769278778854012e-8,0.0034500419488425822,-5.303878495366926e-5,7.759565134357626e-8,0.003450105483013042,-5.305939695552917e-5,7.762989261880157e-8,0.0034502349108771345,-5.3136052000312036E-05,7.775860628781301e-8,0.00345045036327994,-5.3232896856317525e-5,7.791934553656435e-8,0.0034507534559009615,-5.330563477313901e-5,7.803586216602371e-8,0.0034511239123253042,-5.331189940292976e-5,7.80359816725961e-8,0.0034515217741313154,-5.3223411868618484e-5,7.787229296285301e-8,0.0034518963778732035,-5.303630985682997e-5,7.753954870439826e-8,0.003452200772443476,-5.277494601652743e-5,7.708083438603485e-8,0.0034524067233620208,-5.24857622131667e-5,7.657676351766069e-8,0.003452513539318852,-5.222238745671445e-5,7.611970105647155e-8,0.003452546358006263,-5.202834487641089e-5,7.578401494859984e-8,0.003452545316805372,-5.1925238857953614e-5,7.56059228122419e-8,0.0034525517079226162,-5.1910531969244896e-5,7.55799748568084e-8,0.0034525973425899702,-5.1963341595560646e-5,7.566935879164173e-8,0.003452699860306806,-5.2053492925631584e-5,7.582168477769657e-8,0.003452863075258511,-5.2149607426261665e-5,7.598291155508565e-8,0.0034530799060755258,-5.222439818684115e-5,7.61063070119408e-8,0.003453335818338361,-5.2257343532068194e-5,7.615685892232103e-8,0.003453611766785339,-5.223571891965294e-5,7.61129377116946e-8,0.0034538864899658996,-5.215494408708145e-5,7.596690383151867e-8,0.003454138506384482,-5.201882998128307e-5,7.572562427973521e-8,0.003454348337076918,-5.183978826068164e-5,7.541091271463072e-8,0.0034545013314538756,-5.1638552963418784e-5,7.505903324803353e-8,0.003454591043269122,-5.144265642680074e-5,7.47179322561575e-8,0.0034546224963198295,-5.128290588661151e-5,7.444094709790633e-8,0.003454614029832736,-5.118756231866206e-5,7.427657654620211e-8,0.0034545960964780477,-5.117499667449252e-5,7.425575471974446e-8,0.0034546059759224725,-5.124696696840789e-5,7.438038383349255e-8,0.003454678971542103,-5.13853618139435e-5,7.46180167622108e-8,0.003454838496800186,-5.155451806553497e-5,7.490622976898416e-8,0.003455088410098183,-5.170923490366474e-5,7.516676020545438e-8,0.0034554104312331923,-5.18063784397559e-5,7.53256558047392e-8,0.0034557677626890567,-5.181660232781692e-5,7.533338722547459e-8,0.003456114043853787,-5.173270086815992e-5,7.517894604581043e-8,0.0034564052677747885,-5.157212308820495e-5,7.48937718027089e-8,0.003456611436614271,-5.1372648185342906e-5,7.454392055414663e-8,0.0034567244663298784,-5.118206849108857e-5,7.421205085109125e-8,0.0034567595924578005,-5.104487112438851e-5,7.397444303572169e-8,0.0034567496932292933,-5.0990411029647274e-5,7.388079046187029e-8,0.0034567348219838017,-5.1026634462844345E-05,7.394368941315555e-8,0.0034567511208470503,-5.1140910162072285e-5,7.41404001886787e-8,0.003456822969488365,-5.130640701071599e-5,7.442407063670418e-8,0.0034569600809666373,-5.149059048477161e-5,7.473844540174441e-8,0.003457158836079232,-5.166263101478568e-5,7.503054191154755e-8,0.0034574058624226842,-5.179814342816616e-5,7.525864485773623e-8,0.0034576819982162126,-5.188131487414444e-5,7.53958236160267e-8,0.003457965624434055,-5.190529764163641e-5,7.543055726802653e-8,0.003458235153642075,-5.187182989119657e-5,7.536613158997809e-8,0.003458470988800748,-5.179074706531707e-5,7.52198852644471e-8,0.0034586575036994354,-5.1679536585510255e-5,7.502247538759579e-8,0.0034587855033521653,-5.156254212189298e-5,7.481641900418598e-8,0.0034588552057932243,-5.1469030724573484e-5,7.465256143383775e-8,0.0034588791061978532,-5.142920657003421e-5,7.458297859873786e-8,0.003458883218149259,-5.1467660711166246e-5,7.464955268013278e-8,0.0034589045776179444,-5.159510836468649e-5,7.48697763858947e-8,0.0034589835250980615,-5.180135000044591e-5,7.522485150187091e-8,0.0034591517840109193,-5.205370320062124e-5,7.56573232920082e-8,0.0034594206555359705,-5.2303828254811026e-5,7.608317761780516e-8,0.0034597750906966754,-5.250174966429808e-5,7.641623908985145e-8,0.0034601771049745287,-5.2611539439694236e-5,7.659526793472266e-8,0.003460577222136936,-5.262200185778321e-5,7.660223703442587e-8,0.003460928903507887,-5.254861496345348e-5,7.646534203758294e-8,0.003461200559315436,-5.2427345790902366e-5,7.624789704143432e-8,0.0034613819623500147,-5.230371513415596e-5,7.602909490634815e-8,0.00346148446467581,-5.2220931733726785e-5,7.58833715008536e-8,0.003461536103359664,-5.2210117968981436e-5,7.586364467457609e-8,0.003461573517811942,-5.2284544913011865e-5,7.599167543503633e-8,0.0034616329485504336,-5.243864613206289e-5,7.625673698865155e-8,0.003461742549106104,-5.265142211148723e-5,7.662177846795173e-8,0.003461917703165235,-5.2892782274308036e-5,7.703449448843473e-8,0.0034621599737674246,-5.313072477304534e-5,7.74396760194996e-8,0.0034624591084389793,-5.33374098966768e-5,7.778955053911857e-8,0.003462796779292467,-5.349304510582412e-5,7.805033191515012e-8,0.003463150686187144,-5.3587487694671127e-5,7.820488911072816e-8,0.0034634980867577683,-5.362014291759816e-5,7.825256020973388e-8,0.0034638184347490337,-5.35989854743125e-5,7.820751398896041e-8,0.0034640953366142095,-5.353936163065365e-5,7.809672470592285e-8,0.0034643182806015373,-5.3462782486652334e-5,7.795785220255605e-8,0.0034644845501561154,-5.339545627403919e-5,7.783656035226323e-8,0.0034646014413177184,-5.336592005983549e-5,7.778221516267927e-8,0.0034646882637985664,-5.3400881599815127e-5,7.78405393635882e-8,0.003464776653159077,-5.351867683920702e-5,7.804231285445772e-8,0.003464906957150965,-5.372111733504216e-5,7.838949782169935e-8,0.0034651189235659127,-5.398689725856593e-5,7.884418711991946e-8,0.0034654377510551313,-5.427171287388532e-5,7.932912268318844e-8,0.003465861181889111,-5.45189747063227e-5,7.974637922620187e-8,0.0034663557995089868,-5.4679006723517416e-5,8.001057810235294e-8,0.003466866832075317,-5.4727667638690595e-5,8.008101605182355e-8,0.003467337213583027,-5.467430917764118e-5,7.997525515932372e-8,0.0034677259185634294,-5.45558137956383e-5,7.975848386026634e-8,0.0034680175758430914,-5.4421850197762574e-5,7.951758779610465e-8,0.003468221945391668,-5.431943863471243e-5,7.93341221303494e-8,0.003468366749984431,-5.4282189894998705e-5,7.926564782173139e-8,0.003468488253575451,-5.432554626942201e-5,7.933775100923389e-8,0.003468622577673265,-5.4446940976185534e-5,7.954473091422483e-8,0.00346879910386759,-5.4629139136083834e-5,7.985575566520995e-8,0.003469036315266957,-5.484531500646757e-5,8.022385234336574e-8,0.0034693400970225562,-5.506482644748267e-5,8.05959068464886e-8,0.003469704347103154,-5.525874833196587e-5,8.09221138287859e-8,0.003470113426848338,-5.54043045866477e-5,8.116348069551332e-8,0.003470545719066106,-5.548767615842907e-5,8.129655797854296e-8,0.0034709775149081618,-5.550506450046016e-5,8.131522490515083e-8,0.0034713865350294564,-5.546223505877917e-5,8.122990831469518e-8,0.00347175466700389,-5.537307165347207e-5,8.10651077332558e-8,0.003472069935483391,-5.5257707024367603e-5,8.085614780070984e-8,0.0034723279767847086,-5.514048489525153e-5,8.064555763367976e-8,0.0034725332728849033,-5.504767565387728e-5,8.047894670947377e-8,0.0034727002510506733,-5.5004592720721175e-5,8.039983781883514e-8,0.003472853897452726,-5.5031486682279284e-5,8.044249502323219e-8,0.0034730286883273595,-5.513778809238864e-5,8.062209526950794e-8,0.003473263973229728,-5.531544130156531e-5,8.092351809161323e-8,0.0034735943076693245,-5.553413717659481e-5,8.129347436960563e-8,0.003474035665897499,-5.574326882078972e-5,8.16441259001113e-8,0.0034745731955609315,-5.5884742086398796e-5,8.18752580591423e-8,0.0034751596486798657,-5.5914583892773785e-5,8.19115493205368e-8,0.003475729749079442,-5.5822556153648676e-5,8.173640984494093e-8,0.0034762246796353497,-5.563705319293436e-5,8.140033666182622e-8,0.003476612701492186,-5.541203574155975e-5,8.099801039245487e-8,0.003476895422108325,-5.52051656998577e-5,8.063001150121857e-8,0.0034771002354880218,-5.50597528893753e-5,8.037124816213464e-8,0.003477266808137206,-5.499678333889154e-5,8.025718895626209e-8,0.003477434878777277,-5.501575513956466e-5,8.028567476587208e-8,0.0034776364077081026,-5.510010155564282e-5,8.042677847876208e-8,0.0034778919129647623,-5.522370891534653e-5,8.063443431098723e-8,0.003478209655577147,-5.53567664624354e-5,8.085668027157581e-8,0.003478586484780268,-5.547053781197861e-5,8.104383769654996e-8,0.003479009745324267,-5.5541137233202974e-5,8.115488223399064e-8,0.0034794599661624203,-5.55522999409954e-5,8.116209039532e-8,0.00347991406310937,-5.5497055559913984e-5,8.105385714697197e-8,0.00348034877409459,-5.5378226962704636e-5,8.083554656447708e-8,0.003480743967899695,-5.5207701396177e-5,8.052824678244802e-8,0.003481085399356866,-5.500462615502403e-5,8.016563989201027e-8,0.003481366669257658,-5.4792906661938594e-5,7.978960191727658e-8,0.0034815903954937507,-5.459831114198394e-5,7.944505128213398e-8,0.003481768645435652,-5.444530524158718e-5,7.917429462220676e-8,0.003481922641158277,-5.435363020679066e-5,7.901097650404148e-8,0.003482081557943241,-5.43344611388244e-5,7.897344901624152e-8,0.0034822796949849086,-5.438607219406785e-5,7.90574880741661e-8,0.0034825508886991334,-5.4489814677525574e-5,7.922969966297901e-8,0.003482919510198329,-5.460863179618924e-5,7.942530879637457e-8,0.00348338922468968,-5.4691530175031036e-5,7.955606784582527e-8,0.0034839341482262006,-5.468684887826709e-5,7.953314250976801e-8,0.003484500044929782,-5.456236411226566e-5,7.930171563250027e-8,0.003485020395764967,-5.432242661163013e-5,7.887051211495277e-8,0.003485441830665722,-5.4009666442778456e-5,7.831463037203127e-8,0.003485744308334187,-5.3687830051453043e-5,7.774555423085291e-8,0.003485944356059249,-5.341619454208322e-5,7.726643890430705e-8,0.0034860824605426953,-5.323068031905013e-5,7.69391413336341e-8,0.003486205192699337,-5.313887848336849e-5,7.677573716104043e-8,0.003486351616487765,-5.312585818689202e-5,7.674902644824243e-8,0.003486546989851855,-5.3163832246076e-5,7.680975614919294e-8,0.003486802071512451,-5.322081037736187e-5,7.690188262653895e-8,0.003487115234474545,-5.326655085161755e-5,7.697289095930539e-8,0.003487475361305784,-5.3276107450321254e-5,7.697977967690026e-8,0.00348786468748232,-5.323188756023941e-5,7.689243976502786e-8,0.003488261541112851,-5.3124867656400085e-5,7.669564695902987e-8,0.0034886431118577687,-5.2955187271283527e-5,7.639006967152842e-8,0.0034889883345022694,-5.273207584356439e-5,7.599217164183895e-8,0.00348928082718179,-5.247287143335613e-5,7.553253065060545e-8,0.0034895115406157772,-5.220092938007728e-5,7.505217138911657e-8,0.0034896806403166163,-5.194253721386278e-5,7.45970984578306e-8,0.003489798281891112,-5.17231700616895e-5,7.421163449310192e-8,0.003489884081885023,-5.156346255637453e-5,7.393127924950925e-8,0.0034899651917605482,-5.1475349070217194e-5,7.37759579390884e-8,0.0034900730046242873,-5.145880727187514e-5,7.374448490150087e-8,0.0034902384487222934,-5.149957504391051e-5,7.38108940008001e-8,0.003490485713360978,-5.1568581097192085e-5,7.392383226896056e-8,0.0034908247516596694,-5.162452953725788e-5,7.401135645851316e-8,0.0034912442178913756,-5.162129070334261e-5,7.399384833356589e-8,0.0034917082870866084,-5.152067046187914e-5,7.380600775763368e-8,0.003492161919526589,-5.1307906470345714e-5,7.342344472404727e-8,0.0034925468003312904,-5.100251708159784e-5,7.28812436475048e-8,0.0034928230231711763,-5.065567102917774e-5,7.22692085054129e-8,0.00349298480607223,-5.0332008284307815e-5,7.170010948102879e-8,0.003493060486880091,-5.008509810197167e-5,7.126687367301145e-8,0.0034930978108644877,-4.994040408769448e-5,7.10129659368693e-8,0.003493144812116986,-4.989292212429899e-5,7.092852991350264e-8,0.003493236329890927,-4.991616821749949e-5,7.09664233386691e-8,0.003493389382240401,-4.997451260323819e-5,7.106400377600212e-8,0.0034936049670886314,-5.003303046878982e-5,7.116036558566628e-8,0.0034938724850190725,-5.006315699024087e-5,7.120605641471014e-8,0.003494174181710002,-5.004500801825621e-5,7.116689888635155e-8,0.003494488647240114,-4.9967898958017656e-5,7.10247226686362e-8,0.003494793491455296,-4.983017838931351e-5,7.077701977191036e-8,0.0034950676495118685,-4.963883343406836e-5,7.043629688622425e-8,0.0034952936893218015,-4.940884123717768e-5,7.00290073852739e-8,0.0034954602703394025,-4.91619116469257e-5,6.959337044053813e-8,0.003495564525333123,-4.8924164351532744e-5,6.917524860206665e-8,0.0034956137545527114,-4.872255946766232e-5,6.882178267966077e-8,0.003495625715726868,-4.858035828766625e-5,6.857332667336269e-8,0.003495626962793271,-4.8512296531638016e-5,6.845495049254806e-8,0.003495649053141319,-4.852049680516395e-5,6.846936904534974e-8,0.00349572299679345,-4.859225484338337e-5,6.859329915473242e-8,0.0034958728136478237,-4.870052145709375e-5,6.877863372874697e-8,0.003496109274904872,-4.8807474643686194e-5,6.895900381066696e-8,0.0034964250870034323,-4.887130098211752e-5,6.906179269833887e-8,0.0034967931639454048,-4.885581409325789e-5,6.902485348345956e-8,0.0034971698712657363,-4.874139651093061e-5,6.881530246607359e-8,0.0034975044920154213,-4.853405294472491e-5,6.84449092255104e-8,0.0034977539089692195,-4.82679369446728e-5,6.797415829244196e-8,0.0034978977356623906,-4.799750824878962e-5,6.749837862946622e-8,0.003497946438249529,-4.778016802970108e-5,6.71174247409688e-8,0.003497937170337883,-4.765667743097292e-5,6.690162413586374e-8,0.0034979190953097782,-4.763908471093491e-5,6.687094352623798e-8,0.003497936251514583,-4.771117288133363e-5,6.699607854306233e-8,0.0034980160892215074,-4.783863709240464e-5,6.72164958349271e-8,0.0034981665960245093,-4.798196106874302e-5,6.746304065721289e-8,0.0034983797653029723,-4.810632101892896e-5,6.7675162011292e-8,0.003498637465113023,-4.818668505636025e-5,6.780961989824135e-8,0.003498916867361659,-4.820909523255125e-5,6.784251930616007e-8,0.0034991943722301896,-4.816994545602405e-5,6.77679407084832e-8,0.003499448182358842,-4.8074658565751284e-5,6.759564195017042e-8,0.003499660159392372,-4.793641707463699e-5,6.734892080114882e-8,0.003499817561197899,-4.777495464323169e-5,6.70625616249293e-8,0.0034999149556601225,-4.761498368904733e-5,6.678005875369204e-8,0.0034999561644388504,-4.7483672003196496e-5,6.654908362581237e-8,0.003499955598723389,-4.7406752130685654e-5,6.64145242188782e-8,0.003499937981419274,-4.7403373506660164e-5,6.64093764187308e-8,0.0034999354725625304,-4.748062569635709e-5,6.654518620862992e-8,0.0034999818663642855,-4.762947778629249e-5,6.680512211808298e-8,0.003500104737353191,-4.782411608126126e-5,6.714310459443665e-8,0.0035003176166506283,-4.802589279357225e-5,6.749101949715656e-8,0.0035006147541124916,-4.819155958831892e-5,6.777333062458293e-8,0.0035009704717046735,-4.8283900302600454e-5,6.79257035406021e-8,0.0035013438418472647,-4.828195062171539e-5,6.791269545624289e-8,0.0035016879794580935,-4.818789700989003e-5,6.77394776851162e-8,0.00350196195728518,-4.8028314713332036e-5,6.7453611515929e-8,0.0035021422800556846,-4.784851634702435e-5,6.713486096804716e-8,0.0035022301857497284,-4.770064526201016e-5,6.687425034339409e-8,0.0035022515726871335,-4.762872570098612e-5,6.674801281177754e-8,0.003502248809025409,-4.76559744371242e-5,6.6795665439382e-8,0.0035022673478896467,-4.777938593190681e-5,6.701087743219682e-8,0.003502342631637575,-4.7973344665574994e-5,6.734808187955503e-8,0.0035024922414820824,-4.819969702053791e-5,6.774024524213613e-8,0.003502715017307082,-4.841926028605082e-5,6.811897897486228e-8,0.0035029954034810603,-4.8600480484494276e-5,6.842952899629088e-8,0.003503309784163736,-4.872362633221379e-5,6.863790981889476e-8,0.0035036322351094896,-4.878127146575032e-5,6.873159448741184e-8,0.0035039386022962613,-4.877672372667128e-5,6.871671928860393e-8,0.003504208970165578,-4.87218399559206e-5,6.861430714964363e-8,0.003504429141433504,-4.863501729753385e-5,6.845682584882933e-8,0.00350459182981821,-4.853945290340068e-5,6.828516088744188e-8,0.0035046979735865453,-4.846124060565817e-5,6.814520400131455e-8,0.00350475808642424,-4.842667362547513e-5,6.808297903800876e-8,0.00350479302443529,-4.845822639406622e-5,6.813746753851686e-8,0.003504833027239744,-4.8569169986268695e-5,6.833115419174137e-8,0.003504913702238319,-4.8757838383985466e-5,6.866012446657687e-8,0.0035050683853181447,-4.900391199350466e-5,6.908782646579392e-8,0.0035053182256271995,-4.926964452673352e-5,6.954751938057267e-8,0.003505663509814919,-4.950767016413277e-5,6.995616209346973e-8,0.003506080502214955,-4.967398233611283e-5,7.023720489982495e-8,0.0035065262851390663,-4.974153435641874e-5,7.034430756266863e-8,0.003506950416802348,-4.970896615211756e-5,7.027638385694825e-8,0.003507309058355678,-4.960110682063593e-5,7.0078148342398e-8,0.003507576569966767,-4.9461571981689524e-5,6.982680430100155e-8,0.003507751260505524,-4.9340525835212706e-5,6.961036660223815e-8,0.0035078543380118467,-4.928155435713404e-5,6.950463542881697e-8,0.003507923017411245,-4.931120710474176e-5,6.955507505634865e-8,0.003508000088817847,-4.943373386134086e-5,6.976794205386932e-8,0.0035081230318595195,-4.9631997266688886e-5,7.011223942234489e-8,0.003508315707408989,-4.987372010955851e-5,7.053089174394624e-8,0.003508584634184765,-5.012067906449034e-5,7.095689951327328e-8,0.003508920154172877,-5.033779131119303e-5,7.13291488630146e-8,0.0035093011174319503,-5.0499608977751295e-5,7.16036029544808e-8,0.0035097008909079027,-5.059322819724562e-5,7.175822123658268e-8,0.003510092795370233,-5.0618099620991336e-5,7.179252228933486e-8,0.0035104540074803628,-5.058396686418179e-5,7.172395576915468e-8,0.0035107678630634256,-5.050815563358695e-5,7.15831936559844e-8,0.0035110250474179707,-5.041300190160958e-5,7.140965978633763e-8,0.003511224303772449,-5.0323602655051194e-5,7.124755864747469e-8,0.003511373081760116,-5.026556563032649e-5,7.114182180173342e-8,0.0035114881227789486,-5.026219499321855e-5,7.113303314780363e-8,0.003511595434404246,-5.0330578468163386e-5,7.125049337013055e-8,0.003511728512620591,-5.047647794780582e-5,7.15033405278639e-8,0.0035119233836461974,-5.0689046876978714e-5,7.187153222950117e-8,0.003512209769178392,-5.093800093324406e-5,7.230120436607415e-8,0.003512599955153083,-5.1176799888461815e-5,7.271049692322936e-8,0.003513080034794742,-5.135392592457402e-5,7.300940477436388e-8,0.003513609502076132,-5.14298349934786e-5,7.312941724983363e-8,0.0035141320281950124,-5.139216413429823e-5,7.305001548325024e-8,0.0035145936629104664,-5.1261041454466944e-5,7.28077595651944e-8,0.003514959887450534,-5.108168091747994e-5,7.248300624823855e-8,0.0035152241266274524,-5.090867675710344e-5,7.217204520177112e-8,0.0035154059396990682,-5.078968882418096e-5,7.195828527441259e-8,0.0035155420813633245,-5.075426745699315e-5,7.189270617613542e-8,0.0035156751083582306,-5.0809654038145116e-5,7.198679130075311e-8,0.003515843117254807,-5.094257374417173e-5,7.221607476825528e-8,0.0035160725094786714,-5.112494538587068e-5,7.253048594280297e-8,0.0035163744088703465,-5.132142690619098e-5,7.286773029032713e-8,0.0035167446049327736,-5.1497064920155425e-5,7.316666417595633e-8,0.003517166385541075,-5.1623642515698906e-5,7.337826896105822e-8,0.0035176151934762446,-5.168374224689177e-5,7.347259275945112e-8,0.0035180638474490854,-5.167220679053694e-5,7.344117159692746e-8,0.003518487230567752,-5.159533656149261e-5,7.329555446259182e-8,0.0035188657466365884,-5.146856119474064e-5,7.306321274190783e-8,0.0035191873567905307,-5.13134535075297e-5,7.278232032475649e-8,0.0035194484899109596,-5.1154771029381724e-5,7.249655785721567e-8,0.0035196543025420254,-5.101775638284942e-5,7.225031546170417e-8,0.0035198186084428556,-5.0925530397301455e-5,7.208400788541844e-8,0.0035199635105888586,-5.089622436322815e-5,7.202894163244655e-8,0.003520118343208592,-5.093945103045378e-5,7.210112224469392e-8,0.0035203169511922577,-5.105206016209678e-5,7.229397007328736e-8,0.003520592065648051,-5.1214188069510806e-5,7.2571689142489e-8,0.00352096625240208,-5.138810927673326e-5,7.286756429012272e-8,0.0035214411001403445,-5.1523353653888815e-5,7.309310451119305e-8,0.0035219896591436894,-5.15702050538723e-5,7.316168179423694e-8,0.0035225589618442157,-5.149859927706176e-5,7.302152157725176e-8,0.003523085668432638,-5.1313067895405906e-5,7.268175566529078e-8,0.003523518917940908,-5.105359802726036e-5,7.221375246224139e-8,0.003523838095962248,-5.0780520742168284e-5,7.17243210762634e-8,0.0035240564761216146,-5.0552185506667285e-5,7.13161973079306e-8,0.003524211505779421,-5.040730619616483e-5,7.105688273569124e-8,0.003524349502340482,-5.035813602950126e-5,7.096680808680643e-8,0.0035245122820342207,-5.039321453053906e-5,7.102455458373297e-8,0.003524729076631242,-5.0485092313253465e-5,7.1180850127246e-8,0.003525013583176288,-5.059899047337806e-5,7.137404304621766e-8,0.003525364590777378,-5.070022815478351e-5,7.154318300099117e-8,0.0035257686958330417,-5.075977742115368e-5,7.163764186847562e-8,0.003526204144558562,-5.075793251795897e-5,7.16233638631601e-8,0.003526645154897335,-5.06861406598159e-5,7.148591957241648e-8,0.003527066167471657,-5.0547118838004726e-5,7.123062042100954e-8,0.0035274455836368955,-5.03535175473795e-5,7.088014482938875e-8,0.003527768623758874,-5.012545639882056e-5,7.047021401502236e-8,0.0035280290362206864,-4.988738877980477e-5,7.004408058198917e-8,0.0035282296839363246,-4.966483945398808e-5,6.964675729891865e-8,0.003528382291270085,-4.9481325891113706e-5,6.931952735975422e-8,0.003528506567199636,-4.935546278755109e-5,6.909476075587484e-8,0.003528628724271695,-4.929815291741338e-5,6.899092748257108e-8,0.0035287791842859104,-4.9309749713025403e-5,6.900767973450815e-8,0.0035289888641371506,-4.9377284113068966e-5,6.912119895490268e-8,0.003529283256307753,-4.947268367777429e-5,6.92813827041382e-8,0.0035296742313782816,-4.955407009659888e-5,6.941439827038625e-8,0.003530151349516904,-4.957278427309963e-5,6.943511266213218e-8,0.0035306772094212354,-4.948747198735312e-5,6.92717079077621e-8,0.003531192964839601,-4.928195652942658e-5,6.889685346018671e-8,0.0035316365215482056,-4.89774365236009e-5,6.834895029601523e-8,0.003531966575744259,-4.862874958980648e-5,6.772540073203424e-8,0.0035321786442322665,-4.830377164926679e-5,6.714615431489767e-8,0.003532303511122255,-4.805750770984733e-5,6.670788672264682e-8,0.0035323910644271955,-4.7915439884981005e-5,6.645464473265158e-8,0.003532490905278016,-4.787198094158151e-5,6.637538089556046e-8,0.0035326391070453276,-4.7899603242805185e-5,6.6420465804465665E-08,0.003532853457600977,-4.79609329089279e-5,6.652335567882734e-8,0.003533134764875135,-4.801870810507902e-5,6.661826425948239e-8,0.0035334709225311187,-4.80420607780708e-5,6.6651124930788e-8,0.0035338414892082007,-4.800969554135657e-5,6.658497123133597e-8,0.003534221883309781,-4.791109649069916e-5,6.640185991590025e-8,0.0035345870911481937,-4.774650430734176e-5,6.610271983901248e-8,0.003534914922415681,-4.7525956167852065e-5,6.570564041722356e-8,0.003535188784668761,-4.726751897573049e-5,6.524278234784632e-8,0.003535399869757837,-4.699475689773158e-5,6.475593288560843e-8,0.003535548488616758,-4.673352273796198e-5,6.429082959559262e-8,0.0035356443027719678,-4.6508419457597334e-5,6.389085743601263e-8,0.003535705452163371,-4.633936348530399e-5,6.359090277517784e-8,0.0035357567090917945,-4.623851257366044e-5,6.341187165168234e-8,0.003535826730715225,-4.6207747236638295e-5,6.335626221346214e-8,0.0035359444328626815,-4.62369186224868e-5,6.340521229944e-8,0.0035361343987252193,-4.6303140463713727e-5,6.351750974087675e-8,0.0035364112077063,-4.637182901460024e-5,6.363172583245652e-8,0.0035367731674912405,-4.640084478194753e-5,6.367372155706706e-8,0.003537197303637594,-4.634911429135081e-5,6.357183762261232e-8,0.0035376391122535576,-4.618966433176537e-5,6.327964211385549e-8,0.003538041119459337,-4.592349949638268e-5,6.280007246840904e-8,0.0035383510638224264,-4.558644822183458e-5,6.219724757422401e-8,0.0035385429814836127,-4.524104977366377e-5,6.158200500178063e-8,0.0035386287865788782,-4.495389988038994e-5,6.107183348045023e-8,0.003538652157842681,-4.477026159769317e-5,6.074602879654554e-8,0.0035386688439036844,-4.47004078804151e-5,6.062170724859673e-8,0.003538726003163398,-4.4722809906257866e-5,6.065974926915645e-8,0.0035388505435425223,-4.4797903515981296e-5,6.078947944701308e-8,0.003539047874416657,-4.488281287540454e-5,6.093489620785433e-8,0.0035393068814284787,-4.4941391084842396e-5,6.103238884542969e-8,0.003539606554146499,-4.494882794965666e-5,6.103867464873075e-8,0.003539921676724328,-4.4892499760318906e-5,6.093205597538492e-8,0.003540226919719803,-4.477102781459113e-5,6.07105950251088e-8,0.0035404997394379314,-4.4592754938286915e-5,6.03893845810904e-8,0.0035407226338242614,-4.437398906963968e-5,5.999749164758063e-8,0.003540885022134315,-4.413694086471505e-5,5.957436958624628e-8,0.0035409847601478635,-4.3907158055120185e-5,5.91653320895687e-8,0.003541029039603609,-4.371029443432704e-5,5.881578782502931e-8,0.003541034222876167,-4.3568356911767184e-5,5.856451374224705e-8,0.0035410242820919035,-4.34959360356527e-5,5.843690932693798e-8,0.0035410278165807162,-4.349704460319828e-5,5.8439391136652944e-8,0.003541073866467474,-4.35631774348635e-5,5.8556051173999174e-8,0.003541186954993939,-4.367314619920436e-5,5.874856491748497e-8,0.0035413819586960823,-4.379504612211161e-5,5.895993621631804e-8,0.003541659481115643,-4.389056974908652e-5,5.9122364071120686e-8,0.0035420026717852874,-4.392188556736655e-5,5.9169501196338025e-8,0.0035423770266627625,-4.386091460591744e-5,5.9052739202674654e-8,0.003542735137307152,-4.369954534362978e-5,5.8758966934382756e-8,0.003543027709928473,-4.345726115647605e-5,5.8323693696870554e-8,0.003543219432923343,-4.318096116450492e-5,5.783045574779396e-8,0.0035433037039722254,-4.293306375151269e-5,5.7389662664115485e-8,0.003543307510625984,-4.2770211481893025e-5,5.710096925546551e-8,0.003543281657416864,-4.2722564889928e-5,5.7016803661170176e-8,0.0035432808969128654,-4.2784998811324036e-5,5.7127048886294805e-8,0.003543345083182791,-4.29237431526913e-5,5.7371094348610354e-8,0.0035434901225729534,-4.309218173774192e-5,5.766603094543882e-8,0.0035437096200434323,-4.324625449648452e-5,5.793397699501254e-8,0.003543982437111229,-4.335377416740421e-5,5.811844457672117e-8,0.003544280963361055,-4.339731616568985e-5,5.81892230593214e-8,0.003544577345674607,-4.337307492070495e-5,5.814014309175838e-8,0.0035448472547188253,-4.328818788598209e-5,5.798423922921832e-8,0.003545071945356522,-4.315800457900615e-5,5.774893393946444e-8,0.0035452395202854154,-4.300371531604833e-5,5.7471914844255585e-8,0.0035453459408502194,-4.285012265748278e-5,5.719723861116069e-8,0.0035453958923160433,-4.2723120313231096e-5,5.697084279090594e-8,0.0035454032149012556,-4.264651128545993e-5,5.683482254338785e-8,0.0035453903011499546,-4.2638151061864956e-5,5.682050114724788e-8,0.003545385835098054,-4.270593783651835e-5,5.6941284815840156e-8,0.0035454206037119564,-4.2844639289619016e-5,5.718710304786205e-8,0.003545521737679013,-4.3034763683612925e-5,5.7522579910149e-8,0.0035457064554863466,-4.3244478586494526e-5,5.7890672855239426e-8,0.0035459768841103315,-4.343484771283477e-5,5.822218243869248e-8,0.0035463175130871715,-4.35676865911608e-5,5.8449803092231185e-8,0.003546696374372438,-4.361459001005239e-5,5.852408386886376e-8,0.003547070408275864,-4.3565227278255075e-5,5.842791123349795e-8,0.0035473947092906958,-4.343266116837182e-5,5.8185596798430805e-8,0.003547634245769986,-4.3253317404532224e-5,5.786248016398101e-8,0.003547775128552845,-4.307980993012999e-5,5.755198880500784e-8,0.0035478310759871168,-4.296686019185961e-5,5.7350653828112885e-8,0.003547840931561206,-4.295416001320256e-5,5.732790326738767e-8,0.003547856465191098,-4.305323561587963e-5,5.7503072995357236e-8,0.0035479251065484753,-4.3244764513410865e-5,5.7840967381065036e-8,0.0035480755467052556,-4.3487437490787506e-5,5.82678059755974e-8,0.003548312159234838,-4.3733132149183526e-5,5.869821561074207e-8,0.003548618609759482,-4.394085957403888e-5,5.9059893258797215e-8,0.0035489665155445534,-4.4084657379925696e-5,5.930742385274079e-8,0.0035493243155301293,-4.4155064485646884e-5,5.94246850590516e-8,0.0035496635912923074,-4.415657349882108e-5,5.942017343141657e-8,0.003549962454933137,-4.4103723515838815e-5,5.932002348157367e-8,0.0035502068853032385,-4.401745537774121e-5,5.91615814739689e-8,0.0035503910919313167,-4.392223541541534e-5,5.898836758135166e-8,0.0035505176599334156,-4.3843716170544275e-5,5.884594653272736e-8,0.0035505977261718136,-4.3806355923926305e-5,5.877765373835154e-8,0.0035506509029348764,-4.38304481117814e-5,5.881923373523053e-8,0.0035507042417583052,-4.392838644885185e-5,5.8992150582505356e-8,0.003550789375607358,-4.4100629561268414e-5,5.9296460179193444e-8,0.0035509372747178996,-4.4332623510118206e-5,5.970549942120029e-8,0.0035511709877155606,-4.459455929913146e-5,6.016568287046157e-8,0.0035514981633926815,-4.4845618151110135e-5,6.060425933750863e-8,0.0035519062473257645,-4.504285818124529e-5,6.094521953949166e-8,0.003552363010141798,-4.515265199572119e-5,6.112959670344877e-8,0.0035528232538145662,-4.516091931665212e-5,6.113348597576136e-8,0.0035532400588138987,-4.5078419810363994e-5,6.097717700290937e-8,0.0035535771481694945,-4.4939099071296303e-5,6.07218955472018e-8,0.0035538186514130496,-4.479186991256323e-5,6.045492489427308e-8,0.0035539735035672354,-4.4688098423139305e-5,6.02672442098929e-8,0.0035540731748337205,-4.466810631879039e-5,6.022963420680442e-8,0.0035541630731403067,-4.475043551216551e-5,6.037388305148787e-8,0.003554289865126375,-4.4927280773815736e-5,6.068503341769779e-8,0.0035544886846951913,-4.516779476639947e-5,6.110755581298996e-8,0.0035547745839082123,-4.542805241964009e-5,6.156319330980759e-8,0.0035551408759050616,-4.5663759910920776e-5,6.197350799964669e-8,0.003555563963135248,-4.5841008864221135e-5,6.227883337795943e-8,0.0035560116876657694,-4.5941979139417047e-5,6.24482093400329e-8,0.0035564516280192447,-4.596527201117455e-5,6.24798008660841e-8,0.003556857010155012,-4.592266312849646e-5,6.239502440655055e-8,0.003557209714814007,-4.5834565631833704e-5,6.223046308066282e-8,0.003557501080364987,-4.572581403912075e-5,6.203040815733011e-8,0.0035577315537230697,-4.562240269450946e-5,6.184110140786349e-8,0.003557910036471095,-4.554903608560832e-5,6.170637764909142e-8,0.0035580533024840793,-4.552692161730423e-5,6.166368747736406e-8,0.0035581853049642667,-4.557119728743023e-5,6.173946177102266e-8,0.0035583356940717664,-4.568768485662425e-5,6.194333838364082e-8,0.0035585365708927026,-4.586927857225371e-5,6.226185510588425e-8,0.0035588166627198116,-4.609326999183041e-5,6.265390851272246e-8,0.003559193137323904,-4.632193829336071e-5,6.30520372167614e-8,0.003559663281878733,-4.650876999059089e-5,6.337362542760012e-8,0.003560200245713937,-4.661063021140253e-5,6.354254648899662e-8,0.0035607569317794813,-4.6602396654738655e-5,6.351506594055439e-8,0.003561278648384015,-4.6487494514614917e-5,6.32983887923139e-8,0.0035617199935504846,-4.6298558243764545e-5,6.29516014692535e-8,0.003562058627582537,-4.608741314362649e-5,6.256758166751812e-8,0.0035623004672044175,-4.5909078533960046e-5,6.224430829280521e-8,0.003562475581175662,-4.5806486601264316e-5,6.205760310203278e-8,0.0035626279001984354,-4.580067735294027e-5,6.204384806523509e-8,0.003562802954124633,-4.5888015756848204e-5,6.219537779330008e-8,0.003563037055132452,-4.6043654273636875e-5,6.246701201447148e-8,0.003563350070700666,-4.622932203076322e-5,6.27901620525839e-8,0.0035637427913076075,-4.6403085941301916e-5,6.309025042503193e-8,0.003564198880158738,-4.6528682381631946e-5,6.330320173165173e-8,0.0035646903766327347,-4.658232632749611e-5,6.338736538669235e-8,0.0035651848849890845,-4.6555732749513495e-5,6.332870370697999e-8,0.0035656523705938485,-4.645535269046844e-5,6.313929883122431e-8,0.0035660700713561725,-4.6298937321714985e-5,6.285117367268997e-8,0.003566425004528302,-4.611096934697695e-5,6.250815533966789e-8,0.0035667143995241142,-4.591827694533483e-5,6.215809174271331e-8,0.0035669448573334944,-4.574655007561588e-5,6.184666832943819e-8,0.0035671310343054594,-4.561778706202556e-5,6.161284724828767e-8,0.0035672942787601126,-4.554824175451044e-5,6.148516952915002e-8,0.0035674611803288114,-4.5546361387194964e-5,6.147805454901015e-8,0.003567661543033928,-4.5610385548273515e-5,6.158757512312564e-8,0.003567924912442449,-4.5725767445714075e-5,6.178702994408387e-8,0.0035682748142848095,-4.5863544983274e-5,6.202428486357496e-8,0.0035687207877180566,-4.598192357438832e-5,6.222480065079293e-8,0.0035692503506583244,-4.603366023380281e-5,6.230484445613422e-8,0.0035698255742100237,-4.597995195287227e-5,6.219611092854864e-8,0.0035703895352063105,-4.580682740172019e-5,6.187471998839677e-8,0.003570883632004423,-4.553525834522834e-5,6.137904502638934e-8,0.003571268864222055,-4.521699225352601e-5,6.080211684283172e-8,0.0035715396695708015,-4.4916408899932836e-5,6.025908338968015e-8,0.003571723198393817,-4.468799023289393e-5,5.984686372144387e-8,0.003571866379697392,-4.456067955242553e-5,5.961625196141818e-8,0.0035720191409290983,-4.453406964456066e-5,5.956536150564443e-8,0.0035722211083410766,-4.458410992868764e-5,5.965019352482582e-8,0.003572494625911943,-4.4673173061435514e-5,5.980293252365561e-8,0.0035728434568544545,-4.476028636567257e-5,5.995034390494367e-8,0.0035732552997467812,-4.480936493091201e-5,6.002839604720158e-8,0.003573706429317807,-4.479480285769821e-5,5.99920413721776e-8,0.0035741673042217212,-4.4704415364411226e-5,5.982025244393188e-8,0.0035746082437256763,-4.45398457623661e-5,5.951659167339322e-8,0.003575004335958261,-4.43147481520429e-5,5.9105889956792483e-8,0.003575338940318722,-4.405137481478573e-5,5.862814161090186e-8,0.0035756054724064797,-4.3776367002100296e-5,5.81310100746709e-8,0.0035758075061845546,-4.3516565870462726e-5,5.766237414128631e-8,0.0035759576042431298,-4.32955011747464e-5,5.726406668644314e-8,0.003576075473322457,-4.313078064462699e-5,5.696719548910158e-8,0.0035761858511276887,-4.3032185858342236e-5,5.678871564724287e-8,0.0035763162079560256,-4.300017921430965e-5,5.672876610846801e-8,0.0035764940524594456,-4.3024605140873026e-5,5.6768438605918676e-8,0.0035767432881861085,-4.30836704446525e-5,5.686814868430869e-8,0.0035770790275487753,-4.314407216803266e-5,5.6968106744896594e-8,0.0035775010573515023,-4.3164050813275044e-5,5.699394484154996e-8,0.003577987803146952,-4.310136895375068e-5,5.6870952361826546e-8,0.0035784948165471183,-4.292678335936257e-5,5.65479221696561e-8,0.003578962840272767,-4.2639405852658924e-5,5.602429479005061e-8,0.003579336851006414,-4.227498438897039e-5,5.536473452635238e-8,0.003579588685688661,-4.18979968512765e-5,5.468488805835137e-8,0.0035797296080622783,-4.1578011198993515e-5,5.4109049105691114e-8,0.0035798042114301037,-4.1363105981440804e-5,5.372259413331688e-8,0.0035798702564199783,-4.126542984896543e-5,5.354626012529212e-8,0.0035799774382410184,-4.126391236459329e-5,5.354128307652321e-8,0.003580154993927935,-4.1317791469285e-5,5.363395239974795e-8,0.003580409608935486,-4.1381581597515776e-5,5.374262013811699e-8,0.003580729783643385,-4.1415934670145685e-5,5.3797139133405634e-8,0.003581092408746188,-4.139336320909661e-5,5.3748926352074026e-8,0.003581469034566333,-4.130007224972205e-5,5.357400193982709e-8,0.0035818310034735766,-4.1135487314135264e-5,5.3271956810880735e-8,0.0035821534692491988,-4.0910476824976e-5,5.286268340386592e-8,0.003582418418358619,-4.06446935945381e-5,5.238161243589318e-8,0.0035826166797022483,-4.0363280171443215e-5,5.187384845082181e-8,0.00358274884529989,-4.009317462540421e-5,5.1387588037206476e-8,0.003582824995614943,-3.985933882274082e-5,5.096737917280055e-8,0.0035828632611508504,-3.9681384105172434e-5,5.064806914993073e-8,0.0035828875139954875,-3.957098298811167e-5,5.045014818249678e-8,0.003582924529544475,-3.953016479695639e-5,5.0376688098463605e-8,0.00358300081862799,-3.955047708564117e-5,5.0411877426842314e-8,0.0035831392261010796,-3.961300640930363e-5,5.052117648958689e-8,0.003583355214352302,-3.968931328155379e-5,5.065319072165797e-8,0.0035836526718863154,-3.974377438611344e-5,5.074407946967609e-8,0.003584019676710392,-3.973841845099247e-5,5.072633320424865e-8,0.0035844258489106545,-3.9641235948389545e-5,5.0543575221023724e-8,0.003584824176308066,-3.943762986883524e-5,5.0170788891649215e-8,0.0035851605988330357,-3.914173842671066e-5,4.963424297277142e-8,0.0035853918960880448,-3.880043670747472e-5,4.9018405921792256e-8,0.003585505322328108,-3.848249328671764e-5,4.844644654517097e-8,0.003585527515563994,-3.8253569503164206e-5,4.803549689485371e-8,0.0035855144146158527,-3.8149888897543195e-5,4.784960245800021e-8,0.0035855273906091824,-3.8166487904675314e-5,4.787887836846632e-8,0.0035856104495281117,-3.8265157169492204e-5,4.805402080142565e-8,0.0035857798816200707,-3.8393560363288984e-5,4.828082047147677e-8,0.0035860268763078557,-3.8503227747035004e-5,4.847250586230702e-8,0.003586326680961035,-3.855986372475001e-5,4.8568113786697065e-8,0.003586648121636525,-3.8546152355993225e-5,4.853728942981486e-8,0.0035869605978639182,-3.846010828728895e-5,4.837710529272839e-8,0.003587238303345829,-3.8311783073421156e-5,4.810602981932446e-8,0.0035874625495865785,-3.811982896336047e-5,4.775775329407981e-8,0.00358762304655042,-3.790829412712801e-5,4.7375493462969575e-8,0.003587718543212155,-3.7703539314087314e-5,4.700651815697953e-8,0.0035877568854504843,-3.753109690746856e-5,4.669652828927809e-8,0.0035877543189045003,-3.741240911193318e-5,4.648378792509094e-8,0.0035877337821993926,-3.736170012036886e-5,4.639348279578213e-8,0.003587722146397466,-3.738348798138e-5,4.643324183247487e-8,0.003587746637258956,-3.747117499085622e-5,4.659063494568057e-8,0.0035878308010265218,-3.760702188597041e-5,4.683321176191194e-8,0.0035879904688035855,-3.776372946249842e-5,4.7111485215557924e-8,0.0035882302134709367,-3.790765307608103e-5,4.736488113389693e-8,0.0035885407027646038,-3.800358818517712e-5,4.753047496748133e-8,0.0035888975265631912,-3.802122612155703e-5,4.755460390198331e-8,0.003589262683625903,-3.7943134492679234e-5,4.740703403510289e-8,0.003589590313060849,-3.777295305645327e-5,4.709535929441549e-8,0.0035898376636516174,-3.754070148435225e-5,4.6674180657203245e-8,0.003589979939820703,-3.730052104784748e-5,4.6240824276023414e-8,0.003590023371945228,-3.711708048632642e-5,4.5910925049693536e-8,0.0035900077501635065,-3.7042871910765236e-5,4.577784781514526e-8,0.0035899933020088546,-3.709707415007798e-5,4.587502096050476e-8,0.003590037208575344,-3.725873614994456e-5,4.6163979998570615e-8,0.0035901730111987757,-3.747812082032692e-5,4.655494611376622e-8,0.0035904033060219416,-3.769784537258867e-5,4.6944876133643913e-8,0.003590705852666982,-3.787137405914086e-5,4.725061888805473e-8,0.0035910458330059257,-3.7972004750569304e-5,4.7424881917477886e-8,0.0035913870901548824,-3.799305368319623e-5,4.7456342834723396e-8,0.003591699210907479,-3.794340612840332e-5,4.736148608065085e-8,0.0035919606768198722,-3.7842095199116786e-5,4.7174801397497153e-8,0.0035921596171359957,-3.7713708795726786e-5,4.6940568127754947e-8,0.003592293558379161,-3.758490512066759e-5,4.6706667488679346e-8,0.0035923688823323,-3.7481625279828046e-5,4.651961895285797e-8,0.0035924001126666325,-3.742650014676788e-5,4.641991343171655e-8,0.003592408782381076,-3.743612894819133e-5,4.643708427178588e-8,0.0035924214411165024,-3.751830128528744e-5,4.6584688608919025e-8,0.0035924664696293106,-3.7669705308534085e-5,4.685621045027915e-8,0.003592569774155505,-3.7874901547291835e-5,4.7223301285490726e-8,0.003592749902450613,-3.810728859606727e-5,4.763765035237718e-8,0.0035930135281971444,-3.833251364146036e-5,4.8037268016193544e-8,0.003593352477999401,-3.85142094254474e-5,4.835692293551611e-8,0.003593743318325711,-3.862124028617287e-5,4.8541211620976406e-8,0.0035941500803349773,-3.8635219635304036e-5,4.855799005285224e-8,0.0035945303054739485,-3.8556856029829644e-5,4.8409563859566875e-8,0.0035948441441678958,-3.84093266238022e-5,4.8138450958546775e-8,0.0035950652932258955,-3.823653707192244e-5,4.7823971958565097E-08,0.003595191000352243,-3.809453371200407e-5,4.7566669363102354e-8,0.003595246796889517,-3.803631027123147e-5,4.7461060314247433E-08,0.0035952816700368603,-3.809404780623166e-5,4.756396298769029e-8,0.0035953529476908017,-3.826654280703843e-5,4.7872228760978966e-8,0.0035955064360887307,-3.851914359448242e-5,4.832290540180464e-8,0.0035957614102684605,-3.8797097685212365e-5,4.8817364790469434e-8,0.0035961074408753227,-3.904519065318432e-5,4.925659081088645e-8,0.0035965125426542463,-3.922380619036841e-5,4.9569925989950274e-8,0.0035969362675940465,-3.9315732962972006e-5,4.972712682605005e-8,0.003597341109482439,-3.932441886961113e-5,4.9735041797245097e-8,0.0035976991308152764,-3.9267828750470704e-5,4.962644042986901e-8,0.0035979941492756103,-3.917176770050048e-5,4.944797265987095e-8,0.0035982212646163817,-3.906461231436291e-5,4.925073309806581e-8,0.0035983853864858173,-3.8973731332623625e-5,4.9083882869826816e-8,0.003598499705108412,-3.8923037020490345e-5,4.899027237780294e-8,0.003598584313547959,-3.893093107139329e-5,4.900272753215885e-8,0.003598664665047769,-3.900814200916675e-5,4.914012707459969e-8,0.003598769295912446,-3.91554181102269e-5,4.940325446403414e-8,0.003598926296552057,-3.936159589408526e-5,4.9771395938974046e-8,0.0035991584178781378,-3.9603052569638225e-5,5.020149262688757e-8,0.0035994774570306106,-3.9845742495034574e-5,5.063196470603437e-8,0.003599879456446016,-4.0050595060088164e-5,5.099254875986903e-8,0.0036003427551529487,-4.018188155414745e-5,5.121939647495595e-8,0.0036008305267239238,-4.021666105614067e-5,5.127201267350899e-8,0.003601298082359539,-4.015241628723848e-5,5.114683795044416e-8,0.0036017034785005065,-4.001010080325409e-5,5.0882498429844205e-8,0.0036020186446318633,-3.983102151691306e-5,5.055393791953197e-8,0.00360223784043595,-3.966773922720605e-5,5.025583994965174e-8,0.0036023807275160397,-3.957088011118183e-5,5.0078834765566855e-8,0.0036024884440489483,-3.957514576006304e-5,5.008445593779248e-8,0.003602612836630004,-3.9688759093846825e-5,5.028643421396089e-8,0.003602801507346342,-3.9890448396384285e-5,5.064559582445518e-8,0.0036030837132397233,-4.013591224250133e-5,5.1081729897139555e-8,0.0036034625787910108,-4.037175117016467e-5,5.149873123423126e-8,0.0036039164745840613,-4.0551277524241955e-5,5.181297742668326e-8,0.0036044080529050305,-4.0646004294966926e-5,5.197384946590186e-8,0.00360489619893693,-4.064945869958866e-5,5.197041780922286e-8,0.0036053460251226866,-4.0574082061552914e-5,5.182570742191499e-8,0.0036057344318386826,-4.044453999591332e-5,5.158455566701788e-8,0.0036060514579108944,-4.029075668722807e-5,5.130104481965624e-8,0.003606299011004411,-4.01424970484346e-5,5.1028778692332877e-8,0.0036064885833287518,-4.0025849226308426e-5,5.081459498933569e-8,0.003606638973317254,-3.9961099891688534e-5,5.069476213733481e-8,0.003606774332411993,-3.9961203232245695e-5,5.069221405358963e-8,0.0036069222452277806,-4.003023028212907e-5,5.081374865009258e-8,0.0036071112182922568,-4.016168303508934e-5,5.1047028727656355e-8,0.003607366963232316,-4.033714988858951e-5,5.135826999643147e-8,0.0036077072303672525,-4.0526398781894345e-5,5.169257162187404e-8,0.0036081358410376746,-4.069044856608033e-5,5.19795998409735e-8,0.00360863791472181,-4.0788768684664725e-5,5.214662964419998e-8,0.0036091792602710175,-4.079000858969095e-5,5.2137837160242114e-8,0.003609712280943959,-4.068309768113012e-5,5.1934170132578293e-8,0.0036101880918484254,-4.04838562463079e-5,5.1565076095717744e-8,0.0036105710604826644,-4.0233135214053623e-5,5.11049366675387e-8,0.0036108500263461432,-3.998610781681087e-5,5.065355467128838e-8,0.003611041677968052,-3.9796540409886596e-5,5.0307660035659015e-8,0.0036111851665100313,-3.970186618515915e-5,5.0134017422303575e-8,0.0036113304864999287,-3.971382372907988e-5,5.0152753919674675e-8,0.0036115247250119607,-3.98167918000583e-5,5.033467938084641e-8,0.0036118001491949494,-3.997345877334354e-5,5.061180843179813e-8,0.003612167114637999,-4.013564216404726e-5,5.089703004119631e-8,0.0036126132814578962,-4.025692196720492e-5,5.110687626163271e-8,0.0036131087640671185,-4.0303479742982214e-5,5.118093281193777e-8,0.0036136150876857724,-4.026034802700086e-5,5.109292725088119e-8,0.003614094856008835,-4.0132016043704154e-5,5.085165351686192e-8,0.0036145193074628326,-3.993836208888382e-5,5.0493512681573206e-8,0.003614872292763547,-3.9708210576448246e-5,5.0070825982924494e-8,0.003615150815762236,-3.947285164647236e-5,4.9640137095099506e-8,0.0036153632808230353,-3.926096931140428e-5,4.9253097195019005e-8,0.0036155267616432177,-3.909538048400595e-5,4.89506275147321e-8,0.0036156642392711075,-3.8991230807476714e-5,4.8759693003331155e-8,0.0036158021749105296,-3.895495080175904e-5,4.86914245950835e-8,0.0036159682275933073,-3.8983383111791493e-5,4.873955389149923e-8,0.003616188577386115,-3.9062911493915725e-5,4.887889729439448e-8,0.0036164842465590077,-3.9168981167351876e-5,4.906461395007111e-8,0.003616866127419069,-3.926707099410478e-5,4.9234122993500053E-08,0.003617329348913702,-3.931673398289274e-5,4.9314522167269587e-8,0.003617849150796829,-3.928001916208648e-5,4.923780665633049e-8,0.003618381798653043,-3.913360777112033e-5,4.896267227430695e-8,0.0036188735440883186,-3.888055553865431e-5,4.849554188132768e-8,0.003619276853702225,-3.855491658006466e-5,4.789873129478229e-8,0.0036195676184713646,-3.821416389457841e-5,4.7276580612196774e-8,0.0036197545025373444,-3.792090095161403e-5,4.6742254073388355e-8,0.0036198753513412853,-3.772222272857822e-5,4.6380371688515686e-8,0.0036199830801991757,-3.763623905030227e-5,4.6222755173165736e-8,0.00362012849213772,-3.7650144684676776e-5,4.624521707582522e-8,0.003620346940104583,-3.77278873639625e-5,4.6381754134727366e-8,0.0036206519317770578,-3.7822429509832206e-5,4.654694600928876e-8,0.0036210353347296935,-3.788800232657244e-5,4.6658156643896576e-8,0.0036214722356083732,-3.7889552847069945e-5,4.665250017723497e-8,0.0036219282737146377,-3.7808250334028e-5,4.6496606350338104e-8,0.003622367558528604,-3.764294604213074e-5,4.618907856043481e-8,0.003622759613618764,-3.740807222574171e-5,4.5756568470016735e-8,0.003623084197594277,-3.7129000539556704e-5,4.524531717165578e-8,0.0036233334897944123,-3.6836271033352585e-5,4.471070197478162e-8,0.003623511822352105,-3.656004150987419e-5,4.42072171491852e-8,0.003623633625770037,-3.632568696345636e-5,4.378055463898182e-8,0.0036237204746564565,-3.615095303416537e-5,4.3462496938331666e-8,0.0036237980238943072,-3.604451542869379e-5,4.326833725239851e-8,0.0036238932087061873,-3.600542881626248e-5,4.3195891834918523e-8,0.0036240316260941043,-3.6022998605292114e-5,4.322528366433578e-8,0.003624234754252283,-3.6076927455552074E-05,4.331926852948421e-8,0.0036245165668879796,-3.613800749232242e-5,4.34246123367742e-8,0.003624879311897084,-3.617023187311202e-5,4.3476066000601294e-8,0.0036253090835464646,-3.6135726391495956e-5,4.3405390637871034e-8,0.0036257732585274127,-3.6003592967351125e-5,4.315733397260209e-8,0.0036262232058954036,-3.576186980901324e-5,4.271111422394686e-8,0.003626605331546473,-3.542823247726426e-5,4.209956869519151e-8,0.003626879436036661,-3.50518579454549e-5,4.1412337399755736e-8,0.0036270365079126123,-3.470071004044956e-5,4.0772704917605835e-8,0.0036271047904969573,-3.443736111457935e-5,4.029373159298715e-8,0.0036271389316380864,-3.429581521273013e-5,4.003629528591115e-8,0.0036271983746661196,-3.427189565117347e-5,3.999186380888534e-8,0.0036273272627723543,-3.433001504928174e-5,4.009507060595036e-8,0.0036275443605000503,-3.441929039714666e-5,4.02532013146905e-8,0.003627843559349204,-3.448978456372097e-5,4.037574941419381e-8,0.0036282007307444626,-3.450355291645972e-5,4.039436204166938e-8,0.0036285824334346233,-3.443962968437811e-5,4.027168052144104e-8,0.003628953774846586,-3.4294406238919776e-5,4.000181674287031e-8,0.003629284453436167,-3.4079224683629005e-5,3.960585055025596e-8,0.00362955288864694,-3.381643465683662e-5,3.912462715686188e-8,0.0036297485036715003,-3.353465476085004e-5,3.8610171191587416e-8,0.0036298722480067286,-3.3263883330298314e-5,3.811684927278125e-8,0.003629935574821214,-3.303104643643447e-5,3.769332757952957e-8,0.003629958188257625,-3.285642390889165e-5,3.737611903004188e-8,0.003629964993502037,-3.275128511796277e-5,3.7185320702803963e-8,0.0036299828010852926,-3.271683137367501e-5,3.712271268820873e-8,0.003630037189355566,-3.274419552984249e-5,3.7171770693712e-8,0.003630149597490292,-3.281517977483511e-5,3.729903127915843e-8,0.0036303345419651353,-3.290362286671258e-5,3.7456641443449155e-8,0.0036305967997701106,-3.297753462876925e-5,3.758635247116539e-8,0.003630928513207681,-3.300252642506156e-5,3.762587782766384e-8,0.0036313068265694214,-3.294744940956532e-5,3.7519188323039196e-8,0.00363169380297549,-3.2792780456482834e-5,3.7231652891866554e-8,0.0036320412779389313,-3.254062980327011e-5,3.676798183842747e-8,0.0036323028298620714,-3.222229600651305e-5,3.618566999286661e-8,0.00363245144150968,-3.1896535693968474e-5,3.559165692670533e-8,0.003632494924818845,-3.163343128727202e-5,3.5112974053962996e-8,0.003632477752238004,-3.148784739433187e-5,3.4848610971418145e-8,0.0036324645616411712,-3.147677766139223e-5,3.4828549478256566e-8,0.003632513929295136,-3.1574620316264846e-5,3.5005434477029905e-8,0.0036326579319382944,-3.1727711619258e-5,3.528122902984301e-8,0.0036328967617592235,-3.187682011716218e-5,3.554823526809591e-8,0.0036332061434049393,-3.197502524181992e-5,3.572156454636925e-8,0.0036335495974229026,-3.1995847248725226e-5,3.575374279393732e-8,0.003633889293870905,-3.19333227910892e-5,3.563461873953822e-8,0.003634193172744235,-3.17978842240923e-5,3.538369154094479e-8,0.003634438615965457,-3.161109030916799e-5,3.504045625380042e-8,0.003634613855985011,-3.1400671454106465e-5,3.465541572534082e-8,0.003634718071699902,-3.11961575856113e-5,3.428219175465637e-8,0.003634760562279025,-3.102500639946222e-5,3.3970535921702535e-8,0.0036347591134491177,-3.0909251987672765e-5,3.376025962304962e-8,0.003634737607805422,-3.086278268132625e-5,3.367629517795057e-8,0.0036347229490649663,-3.088948453492992e-5,3.372533325761154e-8,0.003634741563228235,-3.0982560065987805e-5,3.389460784514429e-8,0.003634815901229414,-3.112512713113596e-5,3.4153020033679004e-8,0.0036349612766972193,-3.129198170965659e-5,3.4454394956192596e-8,0.003635183245992869,-3.145240784677646e-5,3.4742669582784826e-8,0.0036354757079425717,-3.1573956992053166e-5,3.495886526255861e-8,0.0036358199160614058,-3.1627212256825974e-5,3.504983415027823e-8,0.0036361849045063073,-3.159171660721317e-5,3.4979039620345153e-8,0.003636530479561921,-3.1462895172653124e-5,3.473901011215707e-8,0.0036368142578559253,-3.1258495477149596e-5,3.436280051338025e-8,0.003637003387374721,-3.102115681331883e-5,3.3928392231956515e-8,0.003637088755021439,-3.081237158304347e-5,3.35475459720963e-8,0.003637094946225761,-3.069500019812094e-5,3.333402234292594e-8,0.0036370770559699434,-3.0708848592774254e-5,3.335935424561485e-8,0.0036371013292986853,-3.085231309250355e-5,3.361973574732224e-8,0.0036372186076369544,-3.108268917674487e-5,3.4036836713625407e-8,0.0036374461301725914,-3.133543760619602e-5,3.449300493597974e-8,0.0036377666800752285,-3.154966294649507e-5,3.4877648547478624e-8,0.003638141297749838,-3.1685759118405125e-5,3.511925103365506e-8,0.0036385252843173046,-3.173024090401332e-5,3.5193980505349496e-8,0.0036388799750885084,-3.1691380373824776e-5,3.5117541386689996e-8,0.003639178463924923,-3.1591479016366276e-5,3.493096321710203e-8,0.003639406831918024,-3.145964120367891e-5,3.4687408289269027e-8,0.0036395631103395176,-3.132641488984484e-5,3.444246310972407e-8,0.003639655535314708,-3.122008096808154e-5,3.4247456211883176e-8,0.0036397006665107633,-3.1163893875378406e-5,3.414448139816457e-8,0.003639721329488939,-3.1173806420359784e-5,3.416226804857164e-8,0.0036397441644748767,-3.125655767899938e-5,3.431270209771732e-8,0.003639796568166988,-3.140832386339877e-5,3.458839076722247e-8,0.0036399030331303018,-3.161441580614675e-5,3.49621599593727e-8,0.0036400812861970703,-3.1850493516183555e-5,3.538933414193512e-8,0.0036403388783366928,-3.2085469069802425e-5,3.581309683606768e-8,0.003640670899708472,-3.228595888933305e-5,3.617266898678714e-8,0.003641059410890908,-3.242184074945234e-5,3.6413480741849684e-8,0.003641474976614793,-3.2472192397990765e-5,3.6497992784001544e-8,0.0036418804736073327,-3.243081777099901e-5,3.6415684316993066e-8,0.0036422373048892133,-3.231046066567557e-5,3.619054998193656e-8,0.003642513965287651,-3.2144261682321465e-5,3.588351146600024e-8,0.0036426959856221573,-3.198235682061668e-5,3.5586005065773693e-8,0.0036427944977556605,-3.1881697208743154e-5,3.5401356745524745e-8,0.0036428486849075714,-3.188933045907144e-5,3.5414444145402196e-8,0.0036429173685921887,-3.202403752604784e-5,3.565852233264122e-8,0.0036430596414088368,-3.226577445343364e-5,3.609629779052436e-8,0.0036433124954249867,-3.2561078847616284e-5,3.66299793816928e-8,0.0036436776177795477,-3.284337212027593e-5,3.713830880496045e-8,0.0036441242313400286,-3.3057030277970586e-5,3.7520345040000954e-8,0.0036446041810241324,-3.317277180321848e-5,3.772337507096917e-8,0.0036450692490085615,-3.3189738563198884e-5,3.7746545722749065e-8,0.003645482899676809,-3.3128175256394194e-5,3.7627357042686266e-8,0.0036458246434632187,-3.301933774306142e-5,3.7423151774873677e-8,0.003646089234413236,-3.289707990184836e-5,3.71957515176344e-8,0.003646283665094115,-3.279244336538491e-5,3.7001641525103554e-8,0.0036464239349174375,-3.273067656021924e-5,3.6886607019548715e-8,0.0036465323149864697,-3.272957018214073e-5,3.6882747854165715e-8,0.0036466349961541663,-3.279825429446103e-5,3.700630533575309e-8,0.0036467596710251142,-3.2936106766617314e-5,3.725568811188398e-8,0.0036469325807821826,-3.313193807407561e-5,3.7610026698915855e-8,0.0036471748124150484,-3.3364069240662704e-5,3.802938859382088e-8,0.003647498169133209,-3.360210126412473e-5,3.845809149088258e-8,0.0036479015316435363,-3.38109253939106e-5,3.883209072712449e-8,0.003648368986541947,-3.395689666898082e-5,3.909027582893097e-8,0.003648870921029724,-3.401521748118757e-5,3.9187927000580045e-8,0.0036493686380024244,-3.397675991479839e-5,3.91090927084104e-8,0.0036498219897588453,-3.385230235314705e-5,3.887418894134722e-8,0.0036501985693956885,-3.367263505175776e-5,3.854000701640252e-8,0.0036504824684245895,-3.348382883038354e-5,3.819088250354824e-8,0.003650680396759058,-3.333785800459016e-5,3.792145205144569e-8,0.003650822939161007,-3.3279840876376515e-5,3.781338373671198e-8,0.003650959134371577,-3.3334613467666114e-5,3.791106516073476e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json new file mode 100644 index 000000000..3f54533a6 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":23000,"numberOfSamples":1000,"samples":[0.003651144035305788,-3.3496975736922465e-5,3.820410327566936e-8,0.0036514219143992843,-3.3730554777606135e-5,3.862552436820353e-8,0.0036518112676496577,-3.397791609056264e-5,3.907035721036122e-8,0.00365229870095008,-3.417907449598782e-5,3.9429383363913e-8,0.00365284489977173,-3.4290356787269744e-5,3.962343833009104e-8,0.0036533992613388363,-3.429527055965991e-5,3.962310443890886e-8,0.003653915601993734,-3.4204210437811016e-5,3.9448034728001705e-8,0.0036543625588809866,-3.404606217387052e-5,3.915149562803171e-8,0.003654726821743164,-3.385745548023324e-5,3.880065521411588e-8,0.003655011114586897,-3.367402646076845e-5,3.846060844958942e-8,0.003655229952491537,-3.352516388562213e-5,3.818482941081412e-8,0.0036554053665251193,-3.343165583497147e-5,3.8010946814686524e-8,0.0036555634966590643,-3.3404964167691095e-5,3.7959478606448984e-8,0.0036557319972541605,-3.3447035834001456e-5,3.803352192134055e-8,0.0036559377077366316,-3.355009646938942e-5,3.821840523078073e-8,0.003656203941986329,-3.3696494348695236e-5,3.848145228658821e-8,0.0036565469978612378,-3.3859223781751256e-5,3.877301569526761e-8,0.0036569720596978405,-3.4004124438745524e-5,3.9030579556823116e-8,0.003657469498455847,-3.40947073072433e-5,3.918763315500793e-8,0.003658013393850613,-3.409978236972752e-5,3.918760770228968e-8,0.0036585642841328063,-3.400250012732713e-5,3.9000338042948336e-8,0.003659077039174998,-3.380774452480385e-5,3.8635466490843415e-8,0.0036595124517896076,-3.354428513728769e-5,3.8146233975437406e-8,0.0036598488695074555,-3.325957393919969e-5,3.761980345160911e-8,0.0036600895177045143,-3.30080589998171e-5,3.7155744789631976e-8,0.0036602626699706706,-3.2836659874036776e-5,3.6839414480127626e-8,0.0036604145345912036,-3.277203283919482e-5,3.671875744486885e-8,0.003660597076071134,-3.281332359526204e-5,3.679128814107534e-8,0.0036608541980586175,-3.293230507705976e-5,3.700462952878297e-8,0.003661210012998719,-3.308093000187256e-5,3.7270537712529526e-8,0.003661662575751951,-3.320440094368456e-5,3.74888633727299e-8,0.003662185161327315,-3.325597408349231e-5,3.7574542846225874e-8,0.003662734729255613,-3.320874898829924e-5,3.747900861351535e-8,0.0036632644530644296,-3.3060666580031256e-5,3.719917570818271e-8,0.003663735688217234,-3.283177311008349e-5,3.677230797634811e-8,0.003664125550367317,-3.255600900274537e-5,3.6260899113540797e-8,0.0036644288159946347,-3.227144312843095e-5,3.573475239964142e-8,0.003664655379067319,-3.20122786606644e-5,3.525635740926294e-8,0.0036648256060508692,-3.180406776074698e-5,3.487218993328028e-8,0.0036649655917790954,-3.166186058055134e-5,3.460940215582945e-8,0.003665103342555086,-3.15901849968733e-5,3.4475849367541365e-8,0.003665265988254904,-3.158372346364206e-5,3.4461364201339914e-8,0.003665477540567749,-3.162801003528849e-5,3.4539055157405407e-8,0.0036657565338192736,-3.17000936026722e-5,3.466655892539428e-8,0.0036661130590637785,-3.176968248208968e-5,3.478820502904388e-8,0.003666545202793297,-3.180174937323968e-5,3.483986629008923e-8,0.003667035788941662,-3.1761745550580205e-5,3.475855435760227e-8,0.0036675514497473767,-3.162389916152661e-5,3.449759311569503e-8,0.003668046654744528,-3.138114071038292e-5,3.404470126419763e-8,0.0036684741721542814,-3.105261032794423e-5,3.343560777759723e-8,0.003668799974560434,-3.068345735179965e-5,3.2753539214570226e-8,0.0036690165364966303,-3.0334013759936222e-5,3.2109244036842246e-8,0.0036691474276989216,-3.0061206934846583e-5,3.160683200695938e-8,0.0036692401145173264,-2.9900241087574385e-5,3.131020806459519e-8,0.0036693503292834495,-2.9854613982101406e-5,3.122493185911916e-8,0.003669525187357138,-2.989751080207272e-5,3.1301037813817e-8,0.0036697912282753556,-2.9982013376298203e-5,3.1452001909760237e-8,0.003670149929656101,-3.0055069990531985e-5,3.15804774867729e-8,0.00367058012275416,-3.007069224005011e-5,3.160245845426072e-8,0.003671045233915078,-2.9999480736268876e-5,3.14646043020311e-8,0.00367150289146305,-2.9833136999524488e-5,3.1152343179196404e-8,0.0036719145236925356,-2.9583830819543413e-5,3.068856987855197e-8,0.0036722528819754623,-2.9279274289988172e-5,3.012451965536157e-8,0.0036725060723375516,-2.8955216659429878e-5,2.9525956515840337e-8,0.003672677754130943,-2.864755268356975e-5,2.895869275364607e-8,0.003672784291843022,-2.838594682136872e-5,2.8476927435519246e-8,0.0036728502871910297,-2.8189969093245898e-5,2.8116221838894727e-8,0.0036729039195573616,-2.8067750927584617e-5,2.7891105878276732e-8,0.0036729730472076353,-2.8016458620949784e-5,2.7795998669456532e-8,0.0036730823256591566,-2.8023639314141942e-5,2.7807699502206006e-8,0.0036732510393670506,-2.806876922500443e-5,2.7888233842029837e-8,0.0036734911388206174,-2.8124848250507907e-5,2.7987802985082756e-8,0.003673805048096844,-2.8160365318995213e-5,2.8048454388623762e-8,0.0036741831643614118,-2.8142417714421486e-5,2.800989211450284e-8,0.0036746017845311393,-2.8042014596425726e-5,2.781926303572099e-8,0.003675023305396148,-2.7842042600133794e-5,2.7445742165138232e-8,0.003675401277467576,-2.7546573380207877e-5,2.6897486202051013e-8,0.0036756920590245525,-2.718737099853137e-5,2.623340000871415e-8,0.0036758711240840844,-2.682142732552505e-5,2.555844943167183e-8,0.0036759465937811365,-2.6515692647237495e-5,2.499551903112205e-8,0.0036759605227197774,-2.6323182982489206e-5,2.464151777744949e-8,0.0036759744983032644,-2.6262593443452535e-5,2.4530039671133795e-8,0.0036760466285700347,-2.6312844659637143e-5,2.462156779143457e-8,0.0036762123044454384,-2.6424126112870143e-5,2.4824015221802194e-8,0.003676476786014314,-2.6537239075107872e-5,2.5028430559382807e-8,0.0036768192350094923,-2.6601221243758545e-5,2.5141395201407517e-8,0.0036772028513650874,-2.658386925131194e-5,2.5104237965815816e-8,0.0036775858883604795,-2.6474864491415744e-5,2.4898599976612817e-8,0.0036779306440379686,-2.6283647779182486e-5,2.4542371246482394e-8,0.003678209538973982,-2.603439997978615e-5,2.408037372138913e-8,0.003678408358108114,-2.5759783494692988e-5,2.357282896906436e-8,0.003678526948850447,-2.5494493653466036e-5,2.308351403533256e-8,0.0036785777355817883,-2.5269467883076505e-5,2.2669143006386352e-8,0.003678582593628918,-2.5107461818455048e-5,2.2371273529194018e-8,0.003678568782474355,-2.5020417507422695e-5,2.2211520779320994e-8,0.0036785647042003374,-2.500871973525351e-5,2.21902445854814e-8,0.0036785961805071692,-2.5062054156622615e-5,2.228816628316454e-8,0.003678683593958781,-2.5161266743696174e-5,2.24697994986493e-8,0.003678839813725382,-2.528068865976697e-5,2.268772363615898e-8,0.0036790686589521994,-2.5390721102639514e-5,2.28873548323344e-8,0.0036793636633603534,-2.5460766843175067e-5,2.301239734670839e-8,0.0036797070625050198,-2.5462938404665122e-5,2.3011746096490555e-8,0.0036800695540226,-2.5377224112577794e-5,2.2849032250097418e-8,0.0036804123072578534,-2.5198284596178738e-5,2.251506689142407e-8,0.003680693157902537,-2.4942526484895308E-05,2.2040681988927512e-8,0.003680878158399637,-2.4651854910035483e-5,2.150341156448466e-8,0.0036809565821238504,-2.4388619881055524e-5,2.101802531841774e-8,0.003680952179938686,-2.4218042502926116e-5,2.0704157135192892e-8,0.003680920788736872,-2.418258152607271e-5,2.063924897056901e-8,0.0036809307429876595,-2.428216159309294e-5,2.082238656290625e-8,0.0036810354111426534,-2.4473729304710523e-5,2.1173726237950885e-8,0.003681253971997315,-2.4690578711906134e-5,2.1570233191745147e-8,0.0036815697161010955,-2.4868511669727512e-5,2.1893875946001677e-8,0.00368194233743989,-2.4964629040890916e-5,2.2066135288962184e-8,0.003682324212490332,-2.496342898745231e-5,2.2059068741709067e-8,0.0036826731166814996,-2.4873277705717296e-5,2.1888636709994033e-8,0.0036829591588462465,-2.4718729832185195e-5,2.1600441398920033e-8,0.003683167023967205,-2.4532594782350245e-5,2.1255080252265367e-8,0.0036832954099022645,-2.4349370543578626e-5,2.0916081024659693e-8,0.0036833550335923348,-2.4200218198591833e-5,2.0640692551785886e-8,0.0036833658565634006,-2.410924176009306e-5,2.047307011231562e-8,0.00368335380237866,-2.4090944865297163e-5,2.0439619325797367e-8,0.0036833471475006176,-2.4148859135246296e-5,2.054650508300012e-8,0.003683372810946003,-2.4275435196936255e-5,2.07794955328708e-8,0.003683452919780664,-2.445325289733475e-5,2.110623168930102e-8,0.003683602046501696,-2.465734339942249e-5,2.1480525304410102e-8,0.003683825298735307,-2.4858264023953814e-5,2.184802813428788e-8,0.0036841172991974114,-2.5025683730293013e-5,2.2152849985111426e-8,0.0036844620856947494,-2.5132324086251992e-5,2.234486049199623e-8,0.003684833943600737,-2.5158192450841574e-5,2.2387540094785343e-8,0.0036851994497372497,-2.5095227283073492e-5,2.226654684123872e-8,0.003685521611166236,-2.495214102688181e-5,2.199854944989616e-8,0.0036857671361551635,-2.4758044853092278e-5,2.1637716007903936e-8,0.0036859169029455434,-2.4561976529873085E-05,2.127462522493109e-8,0.0036859772914223593,-2.44246555966739e-5,2.102094321803886e-8,0.0036859863765741317,-2.4400569866343113e-5,2.0976459090247287e-8,0.0036860072100742725,-2.451503865503077e-5,2.1187033549314085e-8,0.0036861059724534228,-2.4748908547852973e-5,2.1616674172997784e-8,0.003686324629094954,-2.504318975211854e-5,2.2156284356747038e-8,0.003686664486266351,-2.5323155005089623e-5,2.2668137696737203e-8,0.0036870898114569946,-2.5527244493044108e-5,2.303909962374833e-8,0.003687546149128421,-2.5624766795011134e-5,2.3213143420424893e-8,0.00368798044731879,-2.5617338941137874e-5,2.3193859568407812e-8,0.0036883539373483384,-2.5529670793774248e-5,2.3027315403045705e-8,0.0036886463867155743,-2.5397760191839542e-5,2.2780188658898496e-8,0.003688854693802478,-2.5259351496340612e-5,2.2522155643143783e-8,0.0036889891708466456,-2.5147850491353615e-5,2.231471497123031e-8,0.0036890695533378795,-2.5088946206269493e-5,2.2205016955307542e-8,0.0036891214131626097,-2.5098827308126288e-5,2.222261384963983e-8,0.0036891729137179556,-2.518329063537529e-5,2.2377841591020216e-8,0.0036892516769625227,-2.5337494371236543e-5,2.2661397865423784e-8,0.0036893816097385863,-2.554645169281843e-5,2.3045303929869593e-8,0.0036895797925711486,-2.578657672893664e-5,2.3485809567516533e-8,0.0036898538468566012,-2.6028463573269312e-5,2.392855402626147e-8,0.003690200266554174,-2.624073990187162e-5,2.431568410168666e-8,0.0036906040827712275,-2.6394652975592825e-5,2.4594312535909952e-8,0.0036910401320671615,-2.646892578198544e-5,2.4725481010514338e-8,0.0036914760290490357,-2.6454258869800837e-5,2.469246723504824e-8,0.0036918767628710283,-2.6356872170899155e-5,2.450728188668473e-8,0.003692210885339878,-2.6200462392483775e-5,2.4214168577148188e-8,0.0036924581686777775,-2.602543095805307e-5,2.388800430693621e-8,0.003692617733382483,-2.5883626505455566e-5,2.362443103435925e-8,0.0036927139953002153,-2.58271594885082e-5,2.3519158494680385e-8,0.0036927961075991973,-2.5891978747853797e-5,2.3637775773338626e-8,0.0036929267649546634,-2.6081277797364088e-5,2.398538810384016e-8,0.0036931609455419815,-2.6358161739026842e-5,2.4493348826303326e-8,0.0036935234174346435,-2.665549718890737e-5,2.5037572254635175e-8,0.003693998101314756,-2.6900775812927172e-5,2.5484402286752192e-8,0.0036945360219985063,-2.7042710855034788e-5,2.5739608547857825e-8,0.0036950760446270714,-2.7065371302568437e-5,2.57743737612283e-8,0.003695565661023816,-2.6985691375977797e-5,2.5620578062499176e-8,0.00369597274607554,-2.684069713273219e-5,2.5347080120574853e-8,0.003696287324292012,-2.667345195030066e-5,2.5033662232297028e-8,0.0036965173262114045,-2.6523010525635966e-5,2.4752456189175374e-8,0.0036966825886261623,-2.6419227346433036e-5,2.455840471365584e-8,0.003696809522700842,-2.6380986372349695e-5,2.4486064306819182e-8,0.0036969270936339123,-2.6416117172469423e-5,2.454950799475654e-8,0.0036970637745599656,-2.6521893503182198e-5,2.4743286277766767e-8,0.0036972449046433265,-2.6685737210574117e-5,2.504376987032764e-8,0.0036974900334030988,-2.6886274245188e-5,2.541115595707101e-8,0.003697810176347896,-2.7095219934198905e-5,2.5793006605434385e-8,0.0036982053804941253,-2.728057365079077e-5,2.613018555159297e-8,0.003698663356525077,-2.7411217452902692e-5,2.6365357275177697e-8,0.0036991599725369096,-2.7462484334453646e-5,2.6453253365305067e-8,0.0036996621606698965,-2.7421763096580724e-5,2.6370997112730044e-8,0.00370013328491362,-2.729281033021235e-5,2.6126029195423446e-8,0.0037005403211717563,-2.7097411250876837e-5,2.5759105766375958e-8,0.0037008616198824073,-2.6873458549975153e-5,2.534063229254157e-8,0.0037010937154705065,-2.6669054268328128e-5,2.4959623377691335e-8,0.0037012553893138378,-2.6532771677849146e-5,2.470560529795536e-8,0.003701386925754609,-2.6501162935385394e-5,2.464554459140342e-8,0.0037015427319560873,-2.65862451416973e-5,2.4800881221936585e-8,0.0037017770840136652,-2.6767600671031702e-5,2.5133175185444305e-8,0.003702126226889177,-2.6994365678892358e-5,2.5547991564237983e-8,0.003702594034496086,-2.7199503702774686e-5,2.5921361512321817e-8,0.003703149146929241,-2.7322124217394617e-5,2.6140992193989e-8,0.0037037362260185593,-2.732763109091641e-5,2.6143421934714618e-8,0.003704295665546802,-2.721607872496196e-5,2.5929372282700263e-8,0.0037047816795343263,-2.7016566312550213e-5,2.5553267597604028e-8,0.003705171555362991,-2.6773370862474705e-5,2.509745527697299e-8,0.003705465407158616,-2.6531809403462105e-5,2.4645955131628586e-8,0.0037056802842188206,-2.6328749558537203e-5,2.4266888380384873e-8,0.003705842962671197,-2.6188473724591307e-5,2.4004889346311846e-8,0.0037059839388316924,-2.6122241314280676e-5,2.3880388417301026e-8,0.0037061332623507665,-2.6129556128220352e-5,2.3892034999399584e-8,0.003706317770909461,-2.6199800840217618e-5,2.4019772205175913e-8,0.0037065589557418377,-2.6313745875571078e-5,2.4227665838511646e-8,0.003706870840343872,-2.644512355745995e-5,2.4466855843329514e-8,0.003707257688373799,-2.6562856852741105e-5,2.4679720562225874e-8,0.003707711915905993,-2.6634592082949376e-5,2.4806441695489335e-8,0.003708213120455237,-2.663186058357122e-5,2.479455939697902e-8,0.0037087294412449907,-2.6536451255494063e-5,2.4610743259413702e-8,0.003709222214515911,-2.6346543661015368e-5,2.4252099963225886e-8,0.0037096538724641567,-2.6080329046030495e-5,2.3752812169666824e-8,0.003709997524539029,-2.577492734907529e-5,2.3182040780489726e-8,0.0037102454227998637,-2.5479672505274922e-5,2.263137359655951e-8,0.0037104132986381126,-2.524481178501241e-5,2.219379012489409e-8,0.0037105385684950997,-2.5108446768208215e-5,2.1939440481081604e-8,0.003710672201591465,-2.5085405601484373e-5,2.1895121723236657e-8,0.0037108659074224157,-2.5161493732589e-5,2.2033822651041703e-8,0.0037111577917986476,-2.5295461489293446e-5,2.2278586025456243e-8,0.0037115606470070174,-2.542917933201141e-5,2.2521498478199035e-8,0.0037120571654388006,-2.5503837048517596e-5,2.2653719725711947e-8,0.003712604656330799,-2.5477070966070233e-5,2.259714366597435e-8,0.0037131481138471807,-2.5334611035146297e-5,2.232587717598007e-8,0.0037136365417578987,-2.509202414715311e-5,2.1869364929837613e-8,0.0037140360486028587,-2.4786787143587042e-5,2.1297584304020552e-8,0.0037143354755474435,-2.4465255139622436e-5,2.069678054959071e-8,0.003714544467024974,-2.4170306202152613e-5,2.0146497047207724e-8,0.003714687020580643,-2.393338515246342e-5,1.9704838425664365e-8,0.0037147941125955726,-2.3771532108372094e-5,1.9403042636394202e-8,0.0037148976705766875,-2.3687944947412868e-5,1.924662719845783e-8,0.0037150265340877417,-2.367419895466894e-5,1.9219583030809972e-8,0.003715204015883382,-2.37127525260934e-5,1.928905809182854e-8,0.0037154462776015544,-2.377915294824585e-5,1.9409457545578542e-8,0.0037157608120527794,-2.384409788521174e-5,1.9526274662557453e-8,0.0037161447586631148,-2.387597552240848e-5,1.9580823667812967e-8,0.003716583383528966,-2.384460787773986e-5,1.9517213785745727e-8,0.0037170496879362957,-2.372665990986959e-5,1.929240272445178e-8,0.003717506623292282,-2.3512366057301022e-5,1.8888665065491976e-8,0.003717913280569818,-2.3211764390501293e-5,1.832510925529357e-8,0.0037182350231976446,-2.2857213753819283e-5,1.766226069432184e-8,0.0037184549931704456,-2.2499015996168416e-5,1.69938183046161e-8,0.0037185822522199053,-2.2193400184984013e-5,1.642422937600723e-8,0.0037186520125712316,-2.1986125984029035e-5,1.6038180871423233e-8,0.0037187166025020217,-2.1897980951190913e-5,1.5873715102312037e-8,0.0037188302313518797,-2.1918094714878887e-5,1.5909975868926e-8,0.0037190333250862505,-2.200738683831528e-5,1.6073822676410523e-8,0.003719341736464505,-2.211021106517147e-5,1.6261616807192078e-8,0.003719743573072058,-2.216979978548509e-5,1.636795341593824e-8,0.0037202036700935363,-2.214280148765948e-5,1.631260873446929e-8,0.0037206737661205037,-2.2009147434640982e-5,1.6058763393847896e-8,0.0037211051970497504,-2.1775071201819367e-5,1.5618506174731158e-8,0.003721460458739193,-2.1469112666244478e-5,1.5045318183279198e-8,0.0037217205729197273,-2.113297412457324e-5,1.4417004888548999e-8,0.0037218868002361744,-2.081050254733132e-5,1.3815164650950308e-8,0.0037219772900882707,-2.0538209327698315e-5,1.3307554545741322e-8,0.003722020789722907,-2.033950176989565e-5,1.2937408851043707e-8,0.00372204987109083,-2.022296133826621e-5,1.2720322617019088e-8,0.0037220953992123298,-2.018363795951063e-5,1.2646747001885697e-8,0.0037221828649194387,-2.0205878245740093e-5,1.26873047206367e-8,0.0037223303313133104,-2.02664502220618e-5,1.2798609312135926e-8,0.003722547317866394,-2.0337344535813425e-5,1.292845264550573e-8,0.0037228339677174557,-2.0388317730423293e-5,1.3020518278734751e-8,0.003723180190839855,-2.0389705420379754e-5,1.3019629712220013e-8,0.0037235650128087322,-2.0316187736311858e-5,1.2878799919059847e-8,0.003723957027956693,-2.0152005616268402e-5,1.256897561523051e-8,0.003724317479797812,-1.9897320189773163e-5,1.2090860847159705e-8,0.0037246074892309214,-1.9573777293026863e-5,1.1485194896322013e-8,0.0037247994563825186,-1.922551672634567e-5,1.0834500081040653e-8,0.003724889413287953,-1.8911635022200557e-5,1.024891375539621e-8,0.003724903860006442,-1.8689419208005423e-5,9.834890386340725e-9,0.0037248950039658825,-1.8593936835862856e-5,9.657227552497414e-9,0.0037249241617011717,-1.8624070004157957e-5,9.713213497022367e-9,0.0037250406734058938,-1.874272347827841e-5,9.933231932671707e-9,0.003725266442256563,-1.889068343187049e-5,1.0206743013046786e-8,0.003725591957814072,-1.900639132302381e-5,1.0419161121580107e-8,0.0037259828367480837,-1.9042941445738243e-5,1.0483445088589561e-8,0.0037263919105630754,-1.8977532859680972e-5,1.0357575288150131e-8,0.0037267718541946424,-1.8812970780198845e-5,1.004722544629047e-8,0.0037270852122032435,-1.857321752592454e-5,9.597390829866145e-9,0.0037273105106150057,-1.829556589372417e-5,9.077766944676528e-9,0.0037274442822466383,-1.8021665816886436e-5,8.566019197106112e-9,0.003727499446205275,-1.7789180452793088e-5,8.132238797880786e-9,0.0037275009651962054,-1.762549477405663e-5,7.827238632585327e-9,0.003727480107433613,-1.7544324987777415e-5,7.676278027300595e-9,0.003727468693735596,-1.7545252223564655e-5,7.678260381961283e-9,0.0037274943796830745,-1.7615546114334517e-5,7.809198521585769e-9,0.0037275775048591624,-1.773333185341448e-5,8.028155894012631e-9,0.003727729461688348,-1.7871140037744037e-5,8.283855986333845e-9,0.0037279521045785026,-1.7999224672154963e-5,8.520831022886832e-9,0.0037282376812551145,-1.80885880022614e-5,8.685033780576021e-9,0.0037285690243083164,-1.8114038809190196e-5,8.729555432946514e-9,0.003728920113641478,-1.8057767593507887e-5,8.621345067804234e-9,0.0037292576952676747,-1.7913835381609194e-5,8.349624258909386e-9,0.0037295452618239825,-1.769325645659619e-5,7.935342096310923e-9,0.003729750685610381,-1.742782377238727e-5,7.438195143004906e-9,0.0037298573864923707,-1.7169070621178025e-5,6.954523489002591e-9,0.0037298756982351187,-1.6978346810287705e-5,6.598664526266755e-9,0.003729847357057938,-1.690734999300974e-5,6.466620041821976e-9,0.0037298361456615196,-1.6976011363689884e-5,6.594939654273422e-9,0.0037299052651525726,-1.716065001020904e-5,6.938856540972064e-9,0.003730092529452638,-1.7401587629302746e-5,7.386701385086378e-9,0.0037303974273488636,-1.7626624987369516e-5,7.803782958842304e-9,0.0037307856005640463,-1.7776600142330956e-5,8.080023637204767e-9,0.0037312048557727917,-1.782075236454326e-5,8.158500185359126e-9,0.0037316025984929033,-1.7758874434021704e-5,8.039315141398938e-9,0.003731938096263313,-1.7614499874872118e-5,7.76676690099454e-9,0.0037321881752387263,-1.7424800949631686e-5,7.410439462798648e-9,0.003732347832913049,-1.7230987288991442e-5,7.047285654047261e-9,0.003732427807332729,-1.7070752855394434e-5,6.747564430999931e-9,0.0037324505819447216,-1.6972951318685194e-5,6.564937105062063e-9,0.0037324456392299724,-1.695435236964585e-5,6.530439072511247e-9,0.003732444524964121,-1.701842445824136e-5,6.650238763256346e-9,0.0037324762624747466,-1.7155994000405556e-5,6.906918712508451e-9,0.003732563584080442,-1.734745000939961e-5,7.263649467205659e-9,0.003732720347862681,-1.7566052220995436e-5,7.670403442963853e-9,0.003732950305259306,-1.7781762662003478e-5,8.071102483695934e-9,0.003733247046701793,-1.796503766997897e-5,8.410658713739836e-9,0.003733594793483443,-1.8090329320746774e-5,8.641476568061361e-9,0.003733969829689655,-1.8139333953936072e-5,8.729522514097567e-9,0.0037343425695851745,-1.8104141430392796e-5,8.660245887318678e-9,0.003734680606263795,-1.7990430125363365e-5,8.444572497323546e-9,0.003734953553838489,-1.782034694147802e-5,8.124239420623847e-9,0.003735140403146867,-1.7633507226156773e-5,7.77352976095781e-9,0.003735238848109435,-1.748329459267977e-5,7.4921953391734e-9,0.003735273477531778,-1.742550583944127e-5,7.384151459049214e-9,0.0037352966592492363,-1.749922907883764e-5,7.52182191537506e-9,0.0037353759026406193,-1.7706708770883272e-5,7.908742842178216e-9,0.003735568740471046,-1.8005201420696946e-5,8.464598259716825e-9,0.003735897522340255,-1.8320262806021934e-5,9.050180658370451e-9,0.0037363400742964556,-1.8575326378219387e-5,9.522633384422312e-9,0.0037368415776035976,-1.8720037863678725e-5,9.788290822532997e-9,0.0037373380712256233,-1.874245668787921e-5,9.825363797506921e-9,0.0037377771555825133,-1.8663787364666786e-5,9.673974471483982e-9,0.0037381282616453346,-1.852433494079792e-5,9.409797508911304e-9,0.0037383834002827367,-1.8369540890756483e-5,9.117901324121186e-9,0.003738552757404369,-1.824019873721411e-5,8.874473223547163e-9,0.003738658809558917,-1.8167100505264942e-5,8.736870253285727e-9,0.003738730844138739,-1.8168783218842287e-5,8.739462794445459e-9,0.0037388003329487827,-1.8251037280980622e-5,8.892751862877826e-9,0.00373889698628947,-1.8407514500518183e-5,9.18453775255549e-9,0.0037390453516148825,-1.8621272393550024e-5,9.582855243041857e-9,0.0037392620029640536,-1.886722395403692e-5,1.0040612490717398e-8,0.0037395535311001136,-1.9115464924135617e-5,1.0501851379362463e-8,0.0037399156645016815,-1.9335279841595094e-5,1.0909231443508442e-8,0.003740333727271666,-1.949936503986908e-5,1.1211879486748627e-8,0.0037407843754003085,-1.9587781487259298e-5,1.1372730485053469e-8,0.00374123843967038,-1.9591286559904284e-5,1.1374739407503882e-8,0.003741664694071747,-1.951376722599113e-5,1.1225445494692067e-8,0.003742034426709988,-1.9373566096839915e-5,1.0959456056172562e-8,0.0037423268826330203,-1.9203348136011737e-5,1.0638143074060602e-8,0.0037425355319994974,-1.9047512251718933e-5,1.0344682395521544e-8,0.003742674153842459,-1.8955552707843683e-5,1.0171510875620036e-8,0.003742780075672932,-1.897020365172007e-5,1.0198117014107015e-8,0.003742910352084255,-1.91115247419747e-5,1.0461391980825988e-8,0.003743127236642866,-1.936274082819314e-5,1.0929372494595087e-8,0.0037434748877366456,-1.966787992300605e-5,1.1497025901544866e-8,0.0037439582292228346,-1.994830716850865e-5,1.2017239417133448e-8,0.0037445380916303205,-2.0132874757777342e-5,1.235715857869903e-8,0.003745147304945264,-2.018475709919423e-5,1.24483095139559e-8,0.003745717536123864,-2.0110039024257403e-5,1.2302602979977455e-8,0.0037462009957385913,-1.994718213155144e-5,1.1992528512288664e-8,0.003746578533952196,-1.9748112336383324e-5,1.1615631205305184e-8,0.0037468562058775336,-1.9561943110626034e-5,1.1263957057301948e-8,0.0037470568320752493,-1.942580720910747e-5,1.1006894832462288e-8,0.003747211591296955,-1.936188801722068e-5,1.0885690830408487e-8,0.0037473537091404366,-1.937798694893093e-5,1.0914592901045096e-8,0.00374751426169476,-1.9469411529319156e-5,1.1084443738119213e-8,0.003747719306811906,-1.9621107982094123e-5,1.1366715498674678e-8,0.003747987653823677,-1.98098865025236e-5,1.171772196127629e-8,0.0037483289877986337,-2.00069900657524e-5,1.2083476553019989e-8,0.0037487424409848157,-2.018133651430223e-5,1.2405790481457967e-8,0.003749216049729212,-2.0303576953806943e-5,1.262985740223278e-8,0.0037497276616432853,-2.0350656359240593e-5,1.2712744009555985e-8,0.0037502476097356495,-2.0310161881186038e-5,1.263147987969798e-8,0.0037507430698388022,-2.01836052339569e-5,1.238917732256602e-8,0.003751183640813286,-1.9987806416820744e-5,1.201762072309364e-8,0.003751547358372743,-1.975377558398845e-5,1.1575159589463945e-8,0.0037518262278624856,-1.9522888966651756e-5,1.1139487350292194e-8,0.003752030366449994,-1.9340357022812065e-5,1.0795307888503861e-8,0.003752189575101569,-1.9246075080711368e-5,1.0617115929008991e-8,0.00375235065514588,-1.926362082860626e-5,1.0648597353873207e-8,0.00375256874733072,-1.9389760757096198e-5,1.0883103913087454e-8,0.0037528923589819,-1.95889336244771e-5,1.1253515334163685e-8,0.003753345377221318,-1.9798233653190108e-5,1.1641722277737352e-8,0.003753914085684261,-1.9945444226348306e-5,1.1912441558529761e-8,0.0037545482183929373,-1.997468342657704e-5,1.1961217063101045e-8,0.003755178268860511,-1.9866841003214947e-5,1.1752664664935419e-8,0.003755740498054235,-1.9643572837075e-5,1.132790926630942e-8,0.003756196287862252,-1.9354386897528227e-5,1.078027677361611e-8,0.0037565380292510645,-1.9056473937833167e-5,1.02173374524946e-8,0.003756783287516352,-1.879808625982981e-5,9.729641408606765e-9,0.003756964059188642,-1.8610299848009276e-5,9.375278483928095e-9,0.0037571168822495586,-1.850601029274588e-5,9.178087064121487e-9,0.0037572761536310796,-1.8482743679660896e-5,9.133032553034088e-9,0.003757470458105261,-1.8526444575679007e-5,9.213386299761704e-9,0.003757720726876309,-1.8614862202039136e-5,9.377117285257808e-9,0.0037580391353763576,-1.8720347719301517e-5,9.572164083264661e-9,0.0037584281701537876,-1.88124868526117e-5,9.741392613497707e-9,0.003758879845331222,-1.886115999095588e-5,9.828343171502811e-9,0.003759375547369298,-1.884045521805883e-5,9.784556157303305e-9,0.0037598873171901443,-1.8733336140393533e-5,9.578297218737537e-9,0.0037603812993048536,-1.8536245409891986e-5,9.20316322759362e-9,0.003760823522734917,-1.826223272290799e-5,8.683933253519903e-9,0.0037611872682305502,-1.794102306496649e-5,8.07668074991078e-9,0.003761460322951104,-1.761495849043393e-5,7.461118830695648e-9,0.003761649939215854,-1.7330967802997768e-5,6.925453527388214e-9,0.003761783669047966,-1.7130080930370736e-5,6.546618226195867e-9,0.0037619052215471355,-1.7036850169632218e-5,6.370380696093653e-9,0.0037620655927134623,-1.7051287457088965e-5,6.396265383341771e-9,0.0037623107889809214,-1.7145824206739997e-5,6.571987750426438e-9,0.0037626686506996173,-1.7269316797664524e-5,6.8011328521040325e-9,0.0037631385620556235,-1.7358826009662052e-5,6.965369983083214e-9,0.003763688525936491,-1.735727517214488e-5,6.957620478797519e-9,0.0037642627046168722,-1.7231514285195872e-5,6.7159383377332736e-9,0.003764798192409383,-1.6983144070799588e-5,6.243784790204022e-9,0.003765244475384821,-1.6646684177942917e-5,5.606514320308481e-9,0.003765577041731878,-1.6276113749033035e-5,4.905976489211403e-9,0.0037658001496303955,-1.5926872483978327e-5,4.246574565661419e-9,0.003765940043113608,-1.5641428521669665e-5,3.7080826046676444e-9,0.0037660339883212393,-1.5442580188857785e-5,3.3330932819261697e-9,0.0037661202972565054,-1.533378212849883e-5,3.1277370664346276e-9,0.0037662317987403426,-1.530331931720143e-5,3.0696368494463564e-9,0.00376639269783391,-1.5329353706236113e-5,3.117459743615627e-9,0.0037666175999535394,-1.5384239766858776e-5,3.2190461479142756e-9,0.003766911424015544,-1.5437798596845338e-5,3.3175546155956647e-9,0.0037672694199051165,-1.5460010735471215e-5,3.3565118674225895e-9,0.003767677144880793,-1.5423844881946676e-5,3.285127707090549e-9,0.0037681108405431198,-1.5308808573030386e-5,3.0649759961602738e-9,0.00376853909328297,-1.5105335091860154e-5,2.678249819012819e-9,0.0037689267978603287,-1.4819271966290807e-5,2.1362017496681052e-9,0.0037692419464796334,-1.4474679157593949e-5,1.4843891964449467e-9,0.003769464408607395,-1.4112525842013234e-5,8.001758661740843e-10,0.0037695940570376656,-1.3783562552421724e-5,1.7924187200268179e-10,0.003769654513644912,-1.3535943066435279e-5,-2.877953882684514e-10,0.003769689655352273,-1.3401132828683478e-5,-5.419454827697908e-10,0.0037697528877103145,-1.3383352936094304e-5,-5.756719343471206e-10,0.0037698924838657317,-1.3456848768446041e-5,-4.379133873754168e-10,0.0037701379529232566,-1.3572133855236433e-5,-2.2219011005250034e-10,0.0037704917152187136,-1.36690613658659e-5,-4.190341608565942e-11,0.003770928286669406,-1.3692704936665648e-5,-4.184426881656405e-13,0.003771400984222682,-1.360764722503169e-5,-1.6419689144365008e-10,0.0037718542846100875,-1.3406801484918508e-5,-5.462400593197952e-10,0.0037722383742051645,-1.3112239502991186e-5,-1.1045888736203505e-9,0.0037725215280944423,-1.2767820548965187e-5,-1.756277314541145e-9,0.003772696517123917,-1.2426225277517897e-5,-2.4018373226817705e-9,0.003772779492258509,-1.2135018031827889e-5,-2.9516198186066968e-9,0.0037728027992608884,-1.1926333275018554e-5,-3.345233937647147e-9,0.003772805248437262,-1.1812618336310583e-5,-3.559509949169215e-9,0.0037728234022769208,-1.1787985186950563e-5,-3.605855082757096e-9,0.003772885871274732,-1.1832888997680663e-5,-3.5213519611769673e-9,0.0037730107830056705,-1.1919671821302818e-5,-3.3582733409701644e-9,0.0037732054834411486,-1.201738319949041e-5,-3.1750111515168823e-9,0.0037734672788120238,-1.2095393134790393e-5,-3.029308059715573e-9,0.0037737843623683997,-1.2126141515841897e-5,-2.9731078275435696e-9,0.0037741366633792803,-1.2087713479066177e-5,-3.0477005332985616e-9,0.0037744969434948855,-1.1966854684521575e-5,-3.2780044851181107e-9,0.0037748329505799573,-1.1762652811277419e-5,-3.665584516120736e-9,0.0037751117090649177,-1.1490296257088035e-5,-4.1815534879312055e-9,0.003775306671071242,-1.1183066734645489e-5,-4.762857357367671e-9,0.0037754069823609203,-1.0889694911885241e-5,-5.3173572358538974e-9,0.0037754256798606545,-1.0664706834353456e-5,-5.742147928915882e-9,0.003775401726689244,-1.0552455653838138e-5,-5.953742048116789e-9,0.003775391866454253,-1.0570337492320954e-5,-5.9196954740658214E-09,0.0037754533346908404,-1.069965404964022e-5,-5.6757115830877735e-9,0.0037756245234761812,-1.0889973474384802e-5,-5.3172574611983255e-9,0.0037759125769722722,-1.1075505491388981e-5,-4.9685789284492975e-9,0.0037762927653174714,-1.119569145297422e-5,-4.743856103245313e-9,0.0037767180710236953,-1.1211551456236634e-5,-4.716422581730153e-9,0.0037771336262513635,-1.1113289439129748e-5,-4.904484620551893e-9,0.0037774906920141566,-1.0919093669290008e-5,-5.273435637376515e-9,0.0037777568305629415,-1.0667562119560446e-5,-5.750186818487831e-9,0.0037779208867569462,-1.0406866195721732e-5,-6.243650787702565e-9,0.003777992767016646,-1.018352746019933e-5,-6.665958168127169e-9,0.0037779989182269913,-1.0033140590648544e-5,-6.949989656900959e-9,0.0037779751011073896,-9.97469904417571e-6,-7.060078675057539e-9,0.0037779584786724603,-1.0009194292538516e-5,-6.994608417451776e-9,0.0037779809048557934,-1.0121958368840203e-5,-6.781516708789922e-9,0.0037780645720082466,-1.0287344353781977e-5,-6.469394097223917e-9,0.003778220234630747,-1.047413085648688e-5,-6.1172540917545026e-9,0.003778447456985994,-1.0650388607779883e-5,-5.785368244403539e-9,0.003778735979536752,-1.078723859059365e-5,-5.528224279977244e-9,0.0037790674522738318,-1.086163687447547e-5,-5.3893085312301e-9,0.0037794172242492487,-1.0858682366088469e-5,-5.396741791551607e-9,0.003779756331525049,-1.0773944571270184e-5,-5.55883105247937e-9,0.0037800542820276006,-1.0616049404699768e-5,-5.859127603922072e-9,0.0037802835715694304,-1.0409041615552987e-5,-6.251958361016585e-9,0.0037804265587483227,-1.019284428731572e-5,-6.661632999833887e-9,0.0037804839392265306,-1.0019107510829138e-5,-6.990419724209726e-9,0.003780481632655872,-9.940027335123063e-6,-7.139785874260027e-9,0.003780470551458204,-9.990760852975178e-6,-7.043636122099973e-9,0.0037805145003715693,-1.0171924492472818e-5,-6.701260118724001e-9,0.0037806679024364473,-1.0443026877787217e-5,-6.189548974586507e-9,0.003780953749669685,-1.0734040814978671e-5,-5.640990002948598e-9,0.003781354446672115,-1.0970848138577473e-5,-5.195569712053512e-9,0.0037818202123343133,-1.1100878236964057e-5,-4.952398320323635e-9,0.0037822885451625726,-1.1106690075405191e-5,-4.9441331682067115e-9,0.0037827037918562686,-1.1004732221553931e-5,-5.139393429677356e-9,0.003783029580921028,-1.083450210581651e-5,-5.463297256101165e-9,0.0037832528926456414,-1.0645014240624529e-5,-5.8230619263333884E-09,0.003783382008619057,-1.0483107839539345e-5,-6.130107278142606e-9,0.0037834411521074293,-1.0385293670330903e-5,-6.315462602182711e-9,0.003783463866855065,-1.0373167422302901e-5,-6.338434431871988e-9,0.003783486346677699,-1.0451924135314523e-5,-6.1894075059543604e-9,0.0037835415059761126,-1.0611498941792025e-5,-5.887657773983901e-9,0.0037836543994592214,-1.0829747870240204e-5,-5.475280541301254e-9,0.0037838393893894684,-1.1076912436351042e-5,-5.00868499477498e-9,0.0037840991940355684,-1.1320547095963303e-5,-4.549244861849569e-9,0.0037844256115939245,-1.1530111692398709e-5,-4.154636535393267e-9,0.003784801380528869,-1.168067724546158e-5,-3.871892905681978e-9,0.0037852026131201958,-1.1755664641185652e-5,-3.732277813199833e-9,0.0037856015155439153,-1.1748839795853997e-5,-3.747515652641209e-9,0.003785969367532291,-1.166580442859177e-5,-3.906921033511718e-9,0.00378628001510182,-1.1525110745466617e-5,-4.175235589964458e-9,0.003786514449205436,-1.1358637205725354e-5,-4.491921267897067e-9,0.0037866667919770496,-1.1209875032777431e-5,-4.774493370527981e-9,0.0037867507548969247,-1.1128029735137191e-5,-4.929817589830909e-9,0.0037868036489551913,-1.1156279232741838e-5,-4.8764159931144795e-9,0.0037868831215570773,-1.1315159538627571e-5,-4.575860551166065e-9,0.0037870524179700496,-1.1587432273622035e-5,-4.061235434398263e-9,0.0037873563096598654,-1.1915434657407038e-5,-3.441960618087722e-9,0.0037877994416602927,-1.2218268853877623e-5,-2.871179678081107e-9,0.00378834159065941,-1.2422814649923206e-5,-2.4871089224278254e-9,0.0037889140278449785,-1.249102829822317e-5,-2.361451809750297e-9,0.0037894464319104034,-1.2428832387716597e-5,-2.4826372919214795e-9,0.003789888854569995,-1.2276000741283246e-5,-2.775033513542293e-9,0.003790220598166225,-1.2087372015433666e-5,-3.13458685349092e-9,0.003790447689810322,-1.1915907774812648e-5,-3.4609407828149515e-9,0.0037905948035725874,-1.1802236082212254e-5,-3.6772233896817644e-9,0.003790696401172688,-1.1770385986698964e-5,-3.73808626895047e-9,0.003790789335206898,-1.1827575732369238e-5,-3.6300747743801807e-9,0.003790907337032187,-1.1966138926110403e-5,-3.3679632150517645e-9,0.0037910770946163676,-1.2166553303929558e-5,-2.9889909055131355e-9,0.0037913156361942314,-1.2401135693384962e-5,-2.545809144827838e-9,0.0037916289168516333,-1.263815898674036e-5,-2.0986190900712304e-9,0.0037920116463947694,-1.2846175399722612e-5,-1.7069510131467538e-9,0.0037924484233062025,-1.299819527970367e-5,-1.4217770124520617e-9,0.0037929160329965078,-1.3075228465631499e-5,-1.2788768709480869e-9,0.0037933865555892653,-1.3068858631174979e-5,-1.294030013439374e-9,0.0037938309814365434,-1.2982776331081918e-5,-1.4601266957738199e-9,0.0037942231481280977,-1.283322743822306e-5,-1.7462770627408988e-9,0.003794543866539171,-1.2648304256008901e-5,-2.0991058430070644e-9,0.003794785242433129,-1.2465858940810928e-5,-2.4467144889246194e-9,0.0037949550625008244,-1.232927438422763e-5,-2.7067816859225326e-9,0.003795080187817642,-1.2279927284374798e-5,-2.8009626097236014e-9,0.0037952065161867134,-1.2345871523227187e-5,-2.6763892980301933e-9,0.0037953921373555235,-1.2528542983790664e-5,-2.3307936469979733e-9,0.0037956913857025054,-1.2793157015980988e-5,-1.8305356927816436e-9,0.003796132776286854,-1.3071563213552118e-5,-1.3050406169510527e-9,0.0037967017325761278,-1.328280143626571e-5,-9.077926254452141e-10,0.0037973411548898497,-1.3364516232244082e-5,-7.568234874396928e-10,0.0037979727650269374,-1.3297561018064426e-5,-8.881042448926196e-10,0.003798527090663047,-1.3109356495992466e-5,-1.2492122368724608e-9,0.003798964917021712,-1.28570520619648e-5,-1.7313517826797332e-9,0.0037992820034057637,-1.2603783737617608e-5,-2.2145093402545987e-9,0.003799500926082306,-1.240063635168012e-5,-2.6017407417391375e-9,0.0037996585584883936,-1.2278587025970907e-5,-2.8344302677579545e-9,0.0037997952173949366,-1.2248205620853774e-5,-2.892780987975255e-9,0.0037999474748775944,-1.2303191954665917e-5,-2.789037696090718e-9,0.003800144171209063,-1.2424890429828608e-5,-2.5588855394347242e-9,0.0038004044225855666,-1.2586549203308632e-5,-2.2533402981175947e-9,0.003800736709459013,-1.2757180681021012e-5,-1.9313801867040904e-9,0.0038011386726849684,-1.2905234943333781e-5,-1.6529274004774604e-9,0.0038015976307220777,-1.300228941643676e-5,-1.4718298071475957e-9,0.0038020920655212837,-1.3026745702081325e-5,-1.4288825387251392e-9,0.0038025942999659027,-1.2967137471847075e-5,-1.5456250913598982e-9,0.0038030742779153713,-1.2824453504739554e-5,-1.8199956009474816e-9,0.0038035040835843223,-1.2613005619355985e-5,-2.224696148359336e-9,0.003803862725819495,-1.2359515273662385e-5,-2.7088896073266286e-9,0.0038041406058219682,-1.210021971862752e-5,-3.203654961905564e-9,0.003804343039903815,-1.187601536262798e-5,-3.6312222314006306e-9,0.0038044921992625045,-1.172572264151848e-5,-3.9178384073525195e-9,0.00380462650870891,-1.1677577510893996e-5,-4.010014190249887e-9,0.0038047960105914956,-1.1739750231113836e-5,-3.892553967922982e-9,0.0038050522524015824,-1.1892359741202971e-5,-3.603641811340095e-9,0.0038054328722651374,-1.2085474055587181e-5,-3.238495369877979e-9,0.003805944893983198,-1.224821847258572e-5,-2.931950879082715e-9,0.003806555314129275,-1.2310374852742212e-5,-2.8173999266934114e-9,0.003807197680863527,-1.2229146407934576e-5,-2.9759540232212596e-9,0.0038077950074467274,-1.2006673466743497e-5,-3.4031768325958983e-9,0.003808287639007238,-1.1687444632760447e-5,-4.014049779331443e-9,0.003808650970431554,-1.1338022030420527e-5,-4.681632012604156e-9,0.003808896131037573,-1.1022265614456972e-5,-5.284306129734353e-9,0.0038090582406506883,-1.0784417102233183e-5,-5.738002868905132e-9,0.0038091815513970188,-1.0643809594594406e-5,-6.006202185145872e-9,0.003809307974440942,-1.0597903969188504e-5,-6.094047127429888e-9,0.0038094707196667066,-1.062865600428072e-5,-6.036147477861492e-9,0.0038096919065528753,-1.070881560223071e-5,-5.8845641294033734e-9,0.003809982306819115,-1.0806887438420577e-5,-5.699365884995947e-9,0.003810341878982876,-1.0890883083801036e-5,-5.541482188826337e-9,0.003810760558410313,-1.0931470433055232e-5,-5.466698369518253e-9,0.003811219360612792,-1.0905036479831683e-5,-5.5198308461602985e-9,0.003811692191355198,-1.0796853778255012e-5,-5.728734249431048e-9,0.0038121488378866334,-1.0604042188757008e-5,-6.098714331775193e-9,0.0038125593293713445,-1.0337543772812268e-5,-6.608803289335694e-9,0.003812899313522184,-1.0022178567600895e-5,-7.211652084835195e-9,0.003813155569947561,-9.694053505107579e-6,-7.838435889364233e-9,0.003813330410478557,-9.395101236701062e-6,-8.409236512806301e-9,0.0038134436413059824,-9.165292526420089e-6,-8.847896464769259e-9,0.0038135310890633975,-9.033789295919845e-6,-9.098924795496566e-9,0.0038136392405932478,-9.010703935907942e-6,-9.143237881021444e-9,0.0038138161247166904,-9.081404582108e-6,-9.008993457535895e-9,0.003814099382214336,-9.205645720023213e-6,-8.773169562587337e-9,0.0038145038512597245,-9.323767143029389e-6,-8.549656250554983e-9,0.003815012795942145,-9.370894020933878e-6,-8.462137200027408e-9,0.0038155779477628124,-9.29673571143693E-06,-8.606350895718982e-9,0.0038161315938342274,-9.08397255339519e-6,-9.015063906599803e-9,0.0038166080185463146,-8.755923206484596e-6,-9.64348405426532e-9,0.003816965037754244,-8.368207760136484e-6,-1.0385219024877421e-8,0.003817195248806939,-7.988222530295059e-6,-1.1111520776134655e-8,0.0038173229340541176,-7.673167559394442e-6,-1.1713278449963451e-8,0.0038173910001939285,-7.456361956860252e-6,-1.212711923818663e-8,0.0038174460930694254,-7.344703089557365e-6,-1.234016488954878e-8,0.0038175278039535875,-7.323953104584782e-6,-1.2379836417372083e-8,0.00381766349450458,-7.3667834734719346E-06,-1.2298441630227018e-8,0.003817867345920316,-7.44006181186134e-6,-1.2159268639340678e-8,0.003818141527292887,-7.510114938000029e-6,-1.2026573341010378e-8,0.003818477933177015,-7.546220680736763e-6,-1.1958946292781465e-8,0.003818859819405176,-7.523169308927341e-6,-1.2004439996582582e-8,0.0038192634063506886,-7.4236603910782554e-6,-1.2196000644852678e-8,0.0038196599709800997,-7.2408663983656445e-6,-1.254657877456703e-8,0.003820019070571289,-6.980898470168708e-6,-1.3044426574530458e-8,0.0038203132898458427,-6.664287919255013e-6,-1.3650268900585339e-8,0.0038205242460868597,-6.325154432293589e-6,-1.4298887743684189e-8,0.0038206486164603457,-6.006817141678243e-6,-1.4907506500728048e-8,0.0038207020750147184,-5.75354803338733e-6,-1.5391558345619086e-8,0.0038207189146382747,-5.599839594091006e-6,-1.568521212544733e-8,0.0038207461938191602,-5.560151445206347e-6,-1.5760970711142652e-8,0.00382083315281559,-5.622636517693993e-6,-1.5641635859755003e-8,0.003821018492077559,-5.749455228146534e-6,-1.5399662200224305e-8,0.0038213190875863523,-5.884391306755396e-6,-1.5142562499287096e-8,0.0038217235693960125,-5.966361142703782e-6,-1.4987076158289204e-8,0.0038221931563597426,-5.9456270845393625e-6,-1.502819170366169e-8,0.0038226704818977797,-5.798272337779563e-6,-1.531149257821805e-8,0.0038230947974088572,-5.5340664292121286e-6,-1.581812655956149e-8,0.0038234191450172406,-5.194116998158923e-6,-1.6469310260958883e-8,0.003823623312951976,-4.838285790666961e-6,-1.7150435861376128e-8,0.0038237175482825378,-4.526986941152714e-6,-1.7745939341755873e-8,0.0038237362016777052,-4.3046651521168036e-6,-1.8170927741837015e-8,0.003823725137708133,-4.1908453164058315e-6,-1.8388262055022257e-8,0.003823728754133948,-4.180212251173304e-6,-1.8408322336149633e-8,0.0038237809830387044,-4.2490079943162265e-6,-1.8276693046141356e-8,0.0038239015028385787,-4.363551982793333e-6,-1.8057833412152605e-8,0.003824095946593768,-4.487740674388706e-6,-1.7820751134813358e-8,0.003824358126063857,-4.588281903972761e-6,-1.7629039709488436e-8,0.0038246727136478013,-4.637862217435199e-6,-1.753487003336477e-8,0.003825017627068585,-4.61711276381841e-6,-1.7575256806811815e-8,0.003825366118825118,-4.516259894351772e-6,-1.7768895996776932e-8,0.0038256891088083935,-4.336919177129825e-6,-1.8112701958105336e-8,0.0038259584950023394,-4.093846046758095e-6,-1.8578421203903003e-8,0.00382615197722384,-3.815735474025295e-6,-1.9111084395452904e-8,0.0038262592364493595,-3.543489200549398e-6,-1.963234108463913e-8,0.0038262880282502877,-3.3242349858685718e-6,-2.005195595532296e-8,0.0038262672917729517,-3.200584377536259e-6,-2.0288421016364784e-8,0.0038262439982333636,-3.197318624244381e-6,-2.029444817156697e-8,0.003826272400189211,-3.3105522427901474e-6,-2.0077656752741834e-8,0.0038263982363601133,-3.505059768382942e-6,-1.9705603558615896e-8,0.003826643866615569,-3.7224637285441357e-6,-1.929005491723827e-8,0.003827000550067141,-3.897808129259171e-6,-1.8955276671465806e-8,0.0038274307773840765,-3.9781801362031975e-6,-1.8802446818552187e-8,0.0038278791501668245,-3.936838386802747e-6,-1.8882656721060616e-8,0.003828287511464482,-3.7789936758587133e-6,-1.91858484343628e-8,0.003828609599833306,-3.538639788532877e-6,-1.9646859993872794e-8,0.0038288214789188135,-3.2682591437941436e-6,-2.01651251887211e-8,0.0038289254924217973,-3.0247269062595245e-6,-2.0631684713590868e-8,0.0038289472814131997,-2.855414110560565e-6,-2.0955834728401942e-8,0.0038289273259179074,-2.788188187669053e-6,-2.108429624581785e-8,0.0038289100096469695,-2.827593307999e-6,-2.100851341943847e-8,0.0038289336504991763,-2.957270847791984e-6,-2.0759969177050435e-8,0.0038290239989857604,-3.1466075062872564e-6,-2.0397397678011425e-8,0.0038291919363631554,-3.358735621529485e-6,-1.9991428033826533e-8,0.0038294345412146105,-3.5575484015966483e-6,-1.9611153660184545e-8,0.0038297379974115684,-3.7126062375014595e-6,-1.931477643950267e-8,0.0038300809546290265,-3.8019422327944494e-6,-1.9144289526878937e-8,0.003830437556664625,-3.813471476213471e-6,-1.9122815383613343e-8,0.0038307800423785735,-3.7458453013279217e-6,-1.925296167705247e-8,0.0038310813355700818,-3.6092600087004904e-6,-1.951522260747604e-8,0.003831318289772106,-3.4261620143933223e-6,-1.9866570427390518e-8,0.0038314761727888578,-3.2310651372663914e-6,-2.024078705408704e-8,0.003831554328173983,-3.067891478985199e-6,-2.0553606536838275e-8,0.00383157155253598,-2.9829338185445362e-6,-2.071629056719002e-8,0.0038315679388297268,-3.0127134004410304e-6,-2.0658964500687748e-8,0.0038315991481782685,-3.1692879484097765e-6,-2.0358751628086406e-8,0.0038317214021556132,-3.429727904878386e-6,-1.9859827008455862e-8,0.0038319713636641617,-3.7377031114383478e-6,-1.9270251199510938e-8,0.003832350581616624,-4.0199454376947184e-6,-1.8730381252591345e-8,0.003832823444733821,-4.211063811726861e-6,-1.8365375552540856e-8,0.0038333298168283644,-4.2746105018214276e-6,-1.82449115700899e-8,0.0038338051698647065,-4.211439514210527e-6,-1.8367216874901712e-8,0.003834198761806769,-4.0546278942909735e-6,-1.8668806860764246e-8,0.003834484151940069,-3.856273197654131e-6,-1.9049773936193798e-8,0.0038346613147808603,-3.6724518049993973e-6,-1.940260611015573e-8,0.0038347524550533677,-3.550605899014387e-6,-1.9636361789940677e-8,0.0038347942577808274,-3.52127028068912e-6,-1.969253972068335e-8,0.0038348288874075678,-3.5944825007219915e-6,-1.9551978029488838e-8,0.0038348954913967792,-3.7604912766397788e-6,-1.9233502467926943e-8,0.0038350235792819626,-3.9939514459539405e-6,-1.8785861778853742e-8,0.0038352291926199416,-4.260277158951203e-6,-1.8275496622939114e-8,0.003835514073341714,-4.522523088560736e-6,-1.7773291753942183e-8,0.0038358673369616493,-4.7473979554075516E-06,-1.7343025332758908e-8,0.0038362687210526454,-4.9095732722181525e-6,-1.7033139263666595e-8,0.00383669236799276,-4.99408908331157e-6,-1.6872194841765404e-8,0.003837110381916312,-4.997253315309627e-6,-1.6867206012024054e-8,0.0038374959397268127,-4.926686817006647e-6,-1.7003556999435392e-8,0.003837826168240292,-4.800973729438346e-6,-1.724561889505605e-8,0.0038380852198412027,-4.64897087800454e-6,-1.7538006826362915e-8,0.0038382680055769084,-4.508244405378731e-6,-1.780856000998818e-8,0.0038383845372422826,-4.4213473667315845e-6,-1.7975542156029803e-8,0.0038384635487548452,-4.428331072852901e-6,-1.7962111992879813e-8,0.003838552412999034,-4.554891468079644e-6,-1.7719129920892407e-8,0.003838709449637709,-4.79857611780019e-6,-1.7251579776228027e-8,0.003838986727658379,-5.120008018211622e-6,-1.6635275122453434e-8,0.0038394080255532118,-5.448208410521412e-6,-1.6006525398447498e-8,0.0038399539523913803,-5.703228860578149e-6,-1.5518689679738132e-8,0.003840565607656355,-5.826728491288216e-6,-1.5283563189269852e-8,0.0038411666084649057,-5.803303992373885e-6,-1.5330502316579828e-8,0.003841690669226006,-5.6615015185918996e-6,-1.5604511736937722e-8,0.0038421002535852433,-5.457713918832178e-6,-1.5997183329700725e-8,0.0038423907809453407,-5.254822630049416e-6,-1.6387728287251544e-8,0.003842584084612968,-5.1054363205735894e-6,-1.6675159725889587e-8,0.0038427176193724898,-5.043044755021766e-6,-1.6795248365588627e-8,0.003842834018332966,-5.07989312250766e-6,-1.6724578044920652e-8,0.003842972942410085,-5.209054269116863e-6,-1.6476567824802356e-8,0.0038431654789848045,-5.4086399567047076e-6,-1.60933997922233e-8,0.00384343077449617,-5.647036470412883e-6,-1.563595510392797e-8,0.00384377466746861,-5.888566057774086e-6,-1.5172890552403953e-8,0.003844190175581018,-6.098988812967744e-6,-1.477000694122479e-8,0.0038446595948861905,-6.250255466342545e-6,-1.4481091439427506e-8,0.003845157818995818,-6.324023724179862e-6,-1.4341201409106802e-8,0.0038456562996112983,-6.313615647304992e-6,-1.4362989566193652e-8,0.003846127011783707,-6.224437602563978e-6,-1.4535971378501742e-8,0.003846546039512686,-6.073206328661482e-6,-1.4828020425045514e-8,0.0038468967151338742,-5.886318244836747e-6,-1.518844046641186e-8,0.0038471724104394123,-5.6974965543184785e-6,-1.5552409101517088e-8,0.0038473791476006172,-5.544524492413738e-6,-1.5847232591313744e-8,0.0038475379016441485,-5.464345014145458e-6,-1.6001824499551356e-8,0.0038476855030219305,-5.485613097100651e-6,-1.596112434254084e-8,0.003847871879727775,-5.6186931393504005e-6,-1.5705383768277254e-8,0.0038481508803807564,-5.845389848453475e-6,-1.526986177286528e-8,0.003848563503714657,-6.114171536753636e-6,-1.4753886498476955e-8,0.0038491178160156275,-6.348715588209728e-6,-1.4304328128888127e-8,0.0038497770085141143,-6.472740813382431e-6,-1.4067840281603289e-8,0.0038504673064347367,-6.441502007513236e-6,-1.4130328256331074e-8,0.0038511053849232322,-6.261082594443713e-6,-1.4479857491646347e-8,0.003851629844832358,-5.983091492067725e-6,-1.5016874116127136e-8,0.003852018859395578,-5.680152288202065e-6,-1.5601434430578248e-8,0.0038522882875718684,-5.418923444947771e-6,-1.6105201466218447e-8,0.0038524776393092323,-5.243503092060938e-6,-1.644339124890214e-8,0.0038526343526436983,-5.171293042120779e-6,-1.658266798991624e-8,0.0038528022610099396,-5.196803821713961e-6,-1.6533754071038998e-8,0.003853015203081441,-5.2983925912731155e-6,-1.6338444310091512e-8,0.003853294442269686,-5.444945618229092e-6,-1.6056762373860484e-8,0.0038536482567425854,-5.601504835855946e-6,-1.5756133822008962e-8,0.0038540726814287585,-5.7339517789242305e-6,-1.550233250246981e-8,0.0038545530770026947,-5.813032433141409e-6,-1.535167747524828e-8,0.003855066511348219,-5.817774971569551e-6,-1.5344433001374196e-8,0.0038555849763886965,-5.738119863076067e-6,-1.5499788248752717e-8,0.0038560793166990247,-5.576384824864866e-6,-1.5813120373490353e-8,0.0038565234608473496,-5.347216994734051e-6,-1.6256150387493468e-8,0.0038568984147355433,-5.075979025649893e-6,-1.678004601450871e-8,0.00385719557764678,-4.795731754718215e-6,-1.7321162029551486e-8,0.0038574190570229696,-4.543041028615571e-6,-1.780903983008837e-8,0.003857586762326891,-4.352859428110214e-6,-1.817625138390654e-8,0.003857730049101876,-4.252572787910336e-6,-1.8369938134093778e-8,0.0038578912513364937,-4.255213948707043e-6,-1.8364992404288677e-8,0.003858117874957074,-4.3525404651654585e-6,-1.8177456727680517e-8,0.003858452354547486,-4.510210597999658e-6,-1.7873784612501723e-8,0.003858917791777117,-4.669051428707108e-6,-1.756829129472984e-8,0.003859503672194377,-4.756979406824098e-6,-1.7400082133742694e-8,0.003860160107605068,-4.712384004790362e-6,-1.7487936966225806e-8,0.0038608091664962376,-4.510570068775836e-6,-1.7879323414882926e-8,0.003861372398538454,-4.177424357879907e-6,-1.8524047943606895e-8,0.003861800506333025,-3.7795425476321384e-6,-1.9293349565570984e-8,0.0038620880164654562,-3.396288792625095e-6,-2.0033913711143205e-8,0.003862267166860147,-3.0911799396654256e-6,-2.062317555474824e-8,0.0038623893494130436,-2.8966628210158406e-6,-2.099867596807234e-8,0.003862506563495998,-2.8140990119499413e-6,-2.115798768293966e-8,0.0038626598321244918,-2.822389550608056e-6,-2.114198102596278e-8,0.003862874873005275,-2.8882527356427605e-6,-2.1014973901108832e-8,0.003863162336153394,-2.9744902195046028e-6,-2.0848814677809523e-8,0.0038635199304515298,-3.045533830271848e-6,-2.0712205478631623e-8,0.0038639348992436243,-3.0710234770790767e-6,-2.066378398501029e-8,0.0038643864355204357,-3.028367117469868e-6,-2.0747147455070232e-8,0.00386484822728367,-2.904831494192115e-6,-2.0986801911394604e-8,0.0038652914752601592,-2.699236644680084e-6,-2.1384920240420773e-8,0.003865688624510196,-2.4228755743300013e-6,-2.191962018272638e-8,0.00386601767419727,-2.0990064949875313e-6,-2.2545976090700474e-8,0.003866266452299767,-1.760409030734062e-6,-2.3200715561079226e-8,0.0038664359843247702,-1.4449098341719433e-6,-2.3810796904036255e-8,0.0038665420780329414,-1.1892409375748905e-6,-2.4305217895457498e-8,0.003866614450261009,-1.0220808697119544e-6,-2.4628464023641513e-8,0.0038666931331427633,-9.574329517630934e-7,-2.4753373068809092e-8,0.00386682224894407,-9.894664267422647e-7,-2.469119648990868e-8,0.0038670414158975728,-1.0900193002419434e-6,-2.449647640784153e-8,0.0038673755149895308,-1.2103925169421118e-6,-2.4263553007702945e-8,0.0038678247276590877,-1.2892296045959293e-6,-2.4111252377403624e-8,0.003868358444959499,-1.267252656795297e-6,-2.4154311249935473e-8,0.0038689178723244452,-1.106609395965305e-6,-2.446591385034712e-8,0.0038694306364283385,-8.077989637281885e-7,-2.504494355576824e-8,0.0038698345342124824,-4.141703486132289e-7,-2.5807311711834674e-8,0.003870099809101716,1.7314109784301966e-9,-2.661245619101961e-8,0.0038702378083155316,3.6458720020279093e-7,-2.7314567339474627e-8,0.0038702920854368386,6.214663267685033e-7,-2.7811317375819918e-8,0.0038703190910244194,7.53858335647063e-7,-2.8067074676155508e-8,0.00387036974897286,7.748010931081934e-7,-2.8107228302703305e-8,0.0038704788581488724,7.175311052953002e-7,-2.7996153658333026e-8,0.0038706626331334653,6.232083040671878e-7,-2.781347285744613e-8,0.0038709211656908133,5.318687125353667e-7,-2.7636609917695287e-8,0.003871242513436442,4.772284502188831e-7,-2.753078648423058e-8,0.003871606525933271,4.841804967947889e-7,-2.754418615260003e-8,0.0038719879135084533,5.675785755217659e-7,-2.7705577960566147e-8,0.003872358880346966,7.314004543716178e-7,-2.8022675148351287e-8,0.0038726919022138077,9.680249185641712e-7,-2.8480732932027746e-8,0.003872963138652044,1.2579586782204766e-6,-2.9042030043767234e-8,0.00387315657601737,1.5708285211382788e-6,-2.9647789466682646e-8,0.0038732683373289547,1.86855923238929e-6,-3.0224309921934445e-8,0.0038733099271485473,2.1112153111972303e-6,-3.069424612561177e-8,0.003873308852725411,2.2650543922665764e-6,-3.0992188082449424e-8,0.0038733053736022243,2.3111642765606837e-6,-3.108140596859698e-8,0.003873345192169577,2.2521788410355123e-6,-3.0966904370240415e-8,0.0038734693367986866,2.1146262125177263e-6,-3.0700024716839653e-8,0.003873703593536369,1.9454980220390796e-6,-3.037183659191588e-8,0.0038740502205765353,1.8030645268901052e-6,-3.009534652539585e-8,0.003874484463380578,1.7433559304306285e-6,-2.997927136727451e-8,0.003874957745425761,1.805067475563303e-6,-3.009872427079351e-8,0.0038754081819814224,1.9969121911983876e-6,-3.0470633717663e-8,0.0038757768904046563,2.2921729176794824e-6,-3.104314330933098e-8,0.0038760255596562514,2.6342273406501153e-6,-3.1706344087442033e-8,0.003876148467003275,2.953007064522305e-6,-3.232426651598912e-8,0.003876173208269964,3.1867247516892045e-6,-3.2777089184574225e-8,0.0038761496228379723,3.299682974732298e-6,-3.2995681880150156e-8,0.0038761325461103228,3.2890272755367357e-6,-3.297463097922817e-8,0.003876166403606068,3.179714693762658e-6,-3.276239593634084e-8,0.003876276896591104,3.0126859225590633e-6,-3.243833774524097e-8,0.0038764701624275557,2.8325579269208208e-6,-3.208888404389721e-8,0.0038767365992111737,2.6787515873070964e-6,-3.1790385133102694e-8,0.003877056148306675,2.580816495240054e-6,-3.160009687833867e-8,0.003877403029010765,2.556826343211539e-6,-3.1553084495681475e-8,0.0038777493008821016,2.613289973686861e-6,-3.166203618942354e-8,0.0038780675614554605,2.745446505360736e-6,-3.191780672517262e-8,0.003878333476381656,2.937524412643369e-6,-3.2289889347489e-8,0.0038785287779384415,3.1632353044676755e-6,-3.2727348319001116e-8,0.0038786449743421613,3.38733667833281e-6,-3.3161835770498974e-8,0.0038786873128192818,3.569409484611795e-6,-3.351491898098499e-8,0.003878677591593657,3.6707118908738144e-6,-3.371139093728882e-8,0.003878653651155005,3.663736005572876e-6,-3.369782934114989e-8,0.003878663611183559,3.5420997935283253e-6,-3.346179770353897e-8,0.003878754731082063,3.3267106762652564e-6,-3.304380167421774e-8,0.003878959662882301,3.0642480397399228e-6,-3.2534349810315585e-8,0.0038792851193151815,2.8166766000497898e-6,-3.2053637071171815e-8,0.003879707781335941,2.644580007151263e-6,-3.171924924585675e-8,0.003880179414535661,2.590044261113597e-6,-3.161296170025512e-8,0.003880639462395093,2.664856929841553e-6,-3.175779169109812e-8,0.003881030963909623,2.847441295081661e-6,-3.211196330829822e-8,0.003881315132026455,3.088989773401876e-6,-3.258074793403881e-8,0.003881480673019954,3.3267950065992406e-6,-3.304234350010906e-8,0.0038815453906210946,3.500934082932849e-6,-3.33803219040278e-8,0.0038815497710628015,3.5694288741531944e-6,-3.3513127109619604e-8,0.003881544796778198,3.5173837589184617e-6,-3.341184114435914e-8,0.003881578212321525,3.3577257039687044e-6,-3.310159999772678e-8,0.0038816837406748395,3.1243817248589497e-6,-3.264830861127478e-8,0.0038818760151617553,2.8614164265762064e-6,-3.213752525507882e-8,0.0038821512694009203,2.612341272483004e-6,-3.165370238768937e-8,0.0038824917692874394,2.4124461107722537e-6,-3.1265314802538124e-8,0.003882871480346175,2.2849072067360234e-6,-3.1017329356398934e-8,0.0038832611824149987,2.2398928027330586e-6,-3.0929494207351274e-8,0.0038836323245214632,2.275318774487282e-6,-3.099781618751069e-8,0.0038839597921307414,2.378108423025778e-6,-3.119699030134757e-8,0.0038842242152507703,2.5254286212354412e-6,-3.148275781095068e-8,0.0038844144663355965,2.686059250390416e-6,-3.179451894543604e-8,0.0038845306688387576,2.822639547206788e-6,-3.2059675183163195e-8,0.003884587357003466,2.8959475224504465e-6,-3.220196455639171e-8,0.0038846153737523,2.8722310269464106e-6,-3.21557550736718e-8,0.003884660056959134,2.7333387608771316e-6,-3.18857668919105e-8,0.0038847732762158013,2.4869046599035173e-6,-3.1406851357082614e-8,0.0038849991252745794,2.1712642698410145e-6,-3.0793495921892944e-8,0.0038853574442500984,1.8496451423368823e-6,-3.016850650976043e-8,0.0038858330515733975,1.5925789224385644e-6,-2.9668865383990577e-8,0.003886377556622482,1.4547566015723252e-6,-2.940082528056271e-8,0.0038869241473787107,1.4569552475180457e-6,-2.9404819127186324e-8,0.0038874085176017156,1.5809669809562609e-6,-2.9645564220367717e-8,0.003887786800305342,1.7780034980890623e-6,-3.002832302171855e-8,0.0038880447159318995,1.9850173646662214e-6,-3.0430573951043864e-8,0.0038881971924163384,2.1420596256770285e-6,-3.073574438290413e-8,0.003888280961175994,2.205781072292864e-6,-3.085948449380518e-8,0.0038883435694981065,2.1568374784550173e-6,-3.076410840731744e-8,0.0038884319296096136,2.0009593416802778e-6,-3.0460718017368735e-8,0.00388858281744708,1.7646673454508626e-6,-3.000089846925649e-8,0.003888816937092785,1.487387634284406e-6,-2.9461380448588014e-8,0.003889137213009564,1.2122368285186793e-6,-2.8926083312790018e-8,0.0038895308769200843,9.77741933194379e-7,-2.8469964105098837e-8,0.0038899740437511265,8.120453633245923e-7,-2.81477220260484e-8,0.003890437171818333,7.300902557734322e-7,-2.7988343358411724e-8,0.0038908900772970704,7.333723847624609e-7,-2.7994672649499975e-8,0.0038913058202770783,8.11313345377628e-7,-2.8146131740211625e-8,0.003891663485624368,9.432958331578632e-7,-2.8402680159512044e-8,0.0038919502946732623,1.1008399990349611e-6,-2.8708996787877187e-8,0.0038921635340459903,1.2499486900889057e-6,-2.8998973546822423e-8,0.0038923125934744473,1.3541502616078596e-6,-2.9201603267134142e-8,0.0038924208408559866,1.379197734291158e-6,-2.9250157793629576e-8,0.0038925260361622285,1.3003034856014153e-6,-2.909634192665132e-8,0.0038926769630940033,1.1115916402400212e-6,-2.8728743103664676e-8,0.0038929238963934187,8.34996763450161e-7,-2.819013439953649e-8,0.003893302729372596,5.229491681716229e-7,-2.7582633768285374e-8,0.0038938176635446077,2.486270920040773e-7,-2.704868519022275e-8,0.0038944323474479204,8.290889866841129e-8,-2.6726217478885122e-8,0.0038950779585628413,6.71542862886964e-8,-2.6695708784190685e-8,0.0038956768103849595,1.9679611586948285e-7,-2.694825472718397e-8,0.003896169311776245,4.2495370109331924e-7,-2.73925766726845e-8,0.003896530677936019,6.822594553111313e-7,-2.7893606935094835e-8,0.0038967721729981984,9.007324311420936e-7,-2.8318972956552194e-8,0.003896930972109137,1.0312737312306008e-6,-2.8573056292209646e-8,0.0038970560356940956,1.0512333616440805e-6,-2.8611714898809007e-8,0.0038971954492596143,9.637576168076825e-7,-2.84410251401411e-8,0.0038973875128366286,7.922909732076531e-7,-2.8106623400673385e-8,0.003897655773663217,5.73039745366953e-7,-2.7679078820458593e-8,0.0038980074203048315,3.470975623162463e-7,-2.723855936562174e-8,0.003898434383602654,1.532557749678879e-7,-2.686076811069166e-8,0.003898916483642837,2.2273778031217942e-8,-2.6605698033749048e-8,0.003899425869944706,-2.6879705272445377e-8,-2.651026260606674e-8,0.003899931946443452,1.135752503116599e-8,-2.658517606455315e-8,0.003900405988380751,1.2952483923987927e-7,-2.6815784333920333e-8,0.0039008248607193337,3.0902597073996624e-7,-2.7165815642283763e-8,0.0039011736945926885,5.228355224148576e-7,-2.7582659172522265e-8,0.003901447733469793,7.385703341824681e-7,-2.800327930437387e-8,0.0039016535931530446,9.218576909926763e-7,-2.8360689234556944e-8,0.003901810063641041,1.0402342282423203e-6,-2.8591513682344532e-8,0.0039019482346590566,1.068114437545263e-6,-2.8645727584383664e-8,0.0039021099156309434,9.933162871447647e-7,-2.8499486010026745e-8,0.0039023425147539973,8.245733393134014e-7,-2.816985246159411e-8,0.0039026886667243655,5.973876226969504e-7,-2.7726207946250197e-8,0.0039031709184319144,3.732053312467776e-7,-2.728856993304565e-8,0.003903776436955178,2.2643689124575264e-7,-2.7002203145251322e-8,0.0039044517336320776,2.1908852626009318e-7,-2.6988107235954432e-8,0.0039051160269753435,3.7343990320735743e-7,-2.728970832405026e-8,0.0039056904602020087,6.597257455398579e-7,-2.7848816986833218e-8,0.0039061274952976715,1.008182754458275e-6,-2.8529159419230002e-8,0.003906424029832539,1.337864454440272e-6,-2.917267690733211e-8,0.0039066143239121455,1.584673185538172e-6,-2.9654276855512307e-8,0.003906751629333246,1.7160417124478927e-6,-2.991045051383723e-8,0.003906889981347287,1.7312807173328777e-6,-2.993987957694521e-8,0.003907072257425082,1.6535639424178371e-6,-2.978777180552823e-8,0.003907324953080964,1.5196860399174986e-6,-2.9525923596991393e-8,0.003907657617907691,1.3710174126904936e-6,-2.9235136326534077e-8,0.003908064791635279,1.246627938272527e-6,-2.8991808582392042e-8,0.003908529121213566,1.178355331974727e-6,-2.8858246582644022e-8,0.0039090251008069895,1.1874723538953122e-6,-2.8876064406570793e-8,0.0039095231741027164,1.2828026766380307e-6,-2.9062457134925734e-8,0.003909993971965604,1.4602429723720258e-6,-2.940930205385144e-8,0.003910412376088683,1.7037257014122688e-6,-2.9885126077279e-8,0.003910760972899444,1.9875614267849495e-6,-3.043974711070414e-8,0.003911032543742426,2.279815827653438e-6,-3.1010855542352346e-8,0.003911231493909528,2.5463069029857515e-6,-3.153173238001942e-8,0.003911374222650876,2.7549910335127733e-6,-3.193972170951845e-8,0.003911488384327841,2.880624085469085e-6,-3.218531726661661e-8,0.003911610864352182,2.909667982481857e-6,-3.224183476086153e-8,0.003911783886839922,2.84536194505679e-6,-3.211546429333361e-8,0.003912048236733935,2.7121190655270843e-6,-3.1853969077637996e-8,0.003912432956737331,2.5569177610852085e-6,-3.1549408250500364e-8,0.003912942711842446,2.4439948046497946e-6,-3.13276712957956e-8,0.003913547494005578,2.439525781374463e-6,-3.1318405148871284e-8,0.003914182801008766,2.587612510786791e-6,-3.160796365905382e-8,0.00391476670682019,2.8876813198392386e-6,-3.219515496038958e-8,0.003915229878465214,3.288612511808708e-6,-3.297977441605243e-8,0.00391554262842195,3.707168304776008e-6,-3.3798756641249064e-8,0.003915722816780819,4.061134667377567e-6,-3.449114586943816e-8,0.0039158221519932715,4.297554871760769e-6,-3.495337435976911e-8,0.003915902612886247,4.403020028690837e-6,-3.5159304982510026e-8,0.003916016771863963,4.3972762305046315e-6,-3.51476057496457e-8,0.003916198069716032,4.319425094326008e-6,-3.499472431255641e-8,0.003916459596845121,4.214738888555488e-6,-3.4789167335719515e-8,0.003916797401300606,4.125457418511884e-6,-3.46135897824814e-8,0.003917195121291198,4.085545626385126e-6,-3.453456558879286e-8,0.003917628376812855,4.118078743411213e-6,-3.459741276197698e-8,0.00391806864547818,4.234057023541767e-6,-3.4823781820516536e-8,0.0039184868549933145,4.432100524385358e-6,-3.521100643460954e-8,0.003918856894454718,4.698942282664103e-6,-3.5733089149345645e-8,0.003919159062997544,5.010909292212568e-6,-3.634366398414867e-8,0.003919383180819294,5.336673361384431e-6,-3.698142096457321e-8,0.003919530829987342,5.641296545403175e-6,-3.757799607711368e-8,0.0039196162213828035,5.891218249778886e-6,-3.8067651883344666e-8,0.0039196653747344806,6.059652716046391e-6,-3.8397777275256785E-08,0.003919713456096689,6.131770978781817e-6,-3.853905013964011e-8,0.003919800276775679,6.108967573413839e-6,-3.849390802272054e-8,0.003919964045053333,6.011521522845613e-6,-3.830191792649171e-8,0.003920233494230299,5.878730153642338e-6,-3.804014811232711e-8,0.003920618992780859,5.764983763374026e-6,-3.781547454419313e-8,0.00392110459247313,5.730010496430183e-6,-3.7745352062984805e-8,0.0039216448866342514,5.822802882578071e-6,-3.792614771435408e-8,0.00392217165582521,6.062441369382195e-6,-3.839540769990899e-8,0.003922612784897084,6.424343781374744e-6,-3.910483982583697e-8,0.003922918279510956,6.842549813656679e-6,-3.9924854655693004e-8,0.0039230801956615,7.231684285990491e-6,-4.068779460101494e-8,0.003923134148926395,7.5187772284920845e-6,-4.125047503163074e-8,0.003923141833425455,7.667435752105012e-6,-4.1541586012182924e-8,0.003923166269325025,7.683166138878378e-6,-4.1571999586433136e-8,0.003923253198934327,7.602234341381125e-6,-4.1412808153840096e-8,0.00392342418128479,7.474463541507354e-6,-4.1161593315289665e-8,0.003923678875818511,7.348774715809465e-6,-4.091417238620076e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json new file mode 100644 index 000000000..509a7d10c --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":24000,"numberOfSamples":1000,"samples":[0.003924001349468574,7.264665173102422e-6,-4.0747989552475184e-8,0.003924366586169156,7.248790607297544e-6,-4.0715438046854016e-8,0.0039247455983737215,7.31449699975775e-6,-4.084288354023843e-8,0.003925109134008881,7.462510402409807e-6,-4.1131928535769936e-8,0.003925430619334403,7.681943579661476e-6,-4.156132990390201e-8,0.003925688916221978,7.9515663056217e-6,-4.208949033990723e-8,0.003925871139610513,8.241724001493012e-6,-4.26582543580377e-8,0.003925975343160025,8.517452558510482e-6,-4.319903585164052e-8,0.003926012408625573,8.743124708146312e-6,-4.364190844664137e-8,0.0039260062351111815,8.888393011087458e-6,-4.392721436513869e-8,0.0039259914819518545,8.934553769547599e-6,-4.401802379763859e-8,0.003926008601681654,8.87995541059872e-6,-4.391078722925618e-8,0.003926096603853184,8.742886424791559e-6,-4.364111335220435e-8,0.003926284700461693,8.560700555841224e-6,-4.328218871863738e-8,0.003926584419799495,8.38460458304358e-6,-4.293463839580567e-8,0.003926983982520055,8.27018419490559e-6,-4.270791978660203e-8,0.003927446933578442,8.26450952654458e-6,-4.269489056436631e-8,0.003927917035426422,8.392007583137403e-6,-4.294388907717355e-8,0.003928330548152765,8.643213090672838e-6,-4.343648270886796e-8,0.003928634404239271,8.97202431142347e-6,-4.4082022548759444e-8,0.003928804571353034,9.306016764539644e-6,-4.473798796749362e-8,0.003928855847415065,9.568840746130847e-6,-4.525415343428905e-8,0.0039288366735898165,9.705875342600683e-6,-4.552310678124801e-8,0.003928810708523999,9.70075387287824e-6,-4.5512697637589113e-8,0.003928834802404048,9.575566014901797e-6,-4.526632710582171e-8,0.003928943827175889,9.377534807333275e-6,-4.487669985208786e-8,0.003929146690245219,9.161289638700064e-6,-4.445102369531869e-8,0.003929431010766044,8.97479258527682e-6,-4.408344678591044e-8,0.003929771249439363,8.851942834798086e-6,-4.3840594450064106e-8,0.003930136299987928,8.810775413828423e-6,-4.375803213461219e-8,0.0039304949376361325,8.854733935909684e-6,-4.3842713182813283e-8,0.003930819251349883,8.97490756364095e-6,-4.4077307493303816e-8,0.003931086911330102,9.152169769274805e-6,-4.442436000944777e-8,0.0039312831240633185,9.359120650070548e-6,-4.4830096409770687e-8,0.003931402736278697,9.562353565431697e-6,-4.522888479978551e-8,0.0039314523679986994,9.725809891954073e-6,-4.554983213541918e-8,0.003931451821677968,9.81581544058732e-6,-4.572667330703574e-8,0.0039314335373014,9.807739373223678e-6,-4.5710846370490446e-8,0.003931438847422937,9.693139686684408e-6,-4.5485541526462294e-8,0.003931510540598468,9.485126741041124e-6,-4.507628154878644e-8,0.0039316827752822045,9.21922505098598e-6,-4.455269004539336e-8,0.003931971055312627,8.947933809120098e-6,-4.401789076476449e-8,0.0039323657307728825,8.729358784614993e-6,-4.358622919525109e-8,0.003932831731699162,8.612643855888081e-6,-4.335462841531593e-8,0.003933315344617792,8.62429738570606e-6,-4.337560654570439e-8,0.003933756715300976,8.759463349484685e-6,-4.363994931455601e-8,0.003934105106059232,8.981053856326873e-6,-4.407485811762412e-8,0.003934332913929343,9.227877438043526e-6,-4.4559891225405716e-8,0.0039344440871193175,9.430525068002884e-6,-4.4958286576969273e-8,0.003934473402796723,9.530858688927084e-6,-4.5155432327327116e-8,0.003934475863914978,9.498545685117723e-6,-4.509149078422063e-8,0.003934509718222492,9.33827824991407e-6,-4.47756142603218e-8,0.003934619792227327,9.085158588882537e-6,-4.427682786107174e-8,0.003934827415641757,8.791280140237335e-6,-4.369760258181166e-8,0.00393512933343696,8.510038014808986e-6,-4.31429928445453e-8,0.0039355035636141015,8.284081649552148e-6,-4.269695029529051e-8,0.003935918018543304,8.139406686077033e-6,-4.241070000822375e-8,0.003936338353846052,8.084775818140693e-6,-4.2301584302013366e-8,0.003936733445406277,8.114176353890525e-6,-4.235787766689351e-8,0.0039370785461212525,8.210197709692123e-6,-4.254541828860122e-8,0.003937356971767464,8.347130480599071e-6,-4.281369430236631e-8,0.003937561263758311,8.493567783692922e-6,-4.310094762045791e-8,0.003937694438031615,8.615002843389891e-6,-4.333926631812809e-8,0.003937771330134241,8.67725650150846e-6,-4.346131796842194e-8,0.003937819322870859,8.651508326884634e-6,-4.3410256470381495e-8,0.003937877058427044,8.521099894445721e-6,-4.3153137231452934e-8,0.003937989463885939,8.288931327634417e-6,-4.269550841092151e-8,0.003938198228981029,7.982475866423666e-6,-4.209131265757179e-8,0.003938529202136906,7.652421272823026e-6,-4.144024574779018e-8,0.003938981172624146,7.362348631112524e-6,-4.086748201679056e-8,0.003939521858698951,7.171057158621901e-6,-4.048891544782165e-8,0.003940094615197016,7.113880374154503e-6,-4.0374365707466556e-8,0.0039406342007793785,7.190918645244552e-6,-4.052432522098116e-8,0.003941085456845227,7.366953288287352e-6,-4.086966435709471e-8,0.003941417979926735,7.582297213206803e-6,-4.1292902967637985e-8,0.003941632550878733,7.769811582108233e-6,-4.1661704613367465e-8,0.0039417586573959,7.872367731094012e-6,-4.186332403044912e-8,0.00394184498935138,7.856147459827803e-6,-4.183089280710224e-8,0.003941946090056001,7.716963831159671e-6,-4.155595404739903e-8,0.003942108844751583,7.478721284531861e-6,-4.1085488184775086e-8,0.003942362280649743,7.1851264448118275e-6,-4.0505610055412035e-8,0.003942713056297738,6.887545188092401e-6,-3.9917635489093076e-8,0.003943147094181412,6.63285056822077e-6,-3.9414089140640513e-8,0.00394363576055283,6.45458746493619e-6,-3.906122521138246e-8,0.003944143851940386,6.3689698481875325e-6,-3.889108334065558e-8,0.003944636869159611,6.375238897636767e-6,-3.89021835862169e-8,0.003945086178514301,6.458758785510235e-6,-3.906566285644976e-8,0.003945471885644119,6.595087712929455e-6,-3.9333345409787816e-8,0.003945784062145488,6.75381682031183e-6,-3.96453240801719e-8,0.0039460231949269235,6.9018086924852714e-6,-3.993631138475404e-8,0.003946200484182494,7.0061699834473986e-6,-4.0141443325436696e-8,0.003946338123548155,7.037663514739489e-6,-4.020297398706976e-8,0.003946469030517169,6.975321308310946e-6,-4.007939202239149e-8,0.0039466347171631935,6.8125615268396335e-6,-3.9757548945000605e-8,0.003946879526314831,6.563781000662389e-6,-3.926572917290399e-8,0.003947240113576192,6.26832771088985e-6,-3.8681519815076635e-8,0.00394773162032693,5.987155767768718e-6,-3.8125213666258697e-8,0.00394833606959585,5.788678511154436e-6,-3.7731893344309e-8,0.0039490010315956,5.726070108611301e-6,-3.760663760887806e-8,0.003949653254363835,5.815841448021564e-6,-3.778221021701663e-8,0.003950222933085804,6.029784395114221e-6,-3.8203094717768544e-8,0.003950666763769117,6.305251283013329e-6,-3.874572335149639e-8,0.003950978997636163,6.567633107643007e-6,-3.926282625402561e-8,0.003951187946508848,6.753390037519353e-6,-3.9628897768472654e-8,0.003951342970045106,6.82499234587586e-6,-3.9769697357740485e-8,0.00395149899125544,6.775528812781524e-6,-3.9671369919487616e-8,0.003951703461040263,6.625121099539185e-6,-3.9373432374454456e-8,0.003951987858015527,6.412572497682793e-6,-3.8952382552237284e-8,0.003952363959429004,6.185216687773946e-6,-3.8501729618800614e-8,0.003952824318389738,5.9890392604355895e-6,-3.811248119847719e-8,0.003953346084383744,5.8605580191022866e-6,-3.7857015174201214e-8,0.003953896995412957,5.821583390244034e-6,-3.777860582122305e-8,0.003954442092751837,5.877359468380301e-6,-3.7887672658214384e-8,0.003954949781935346,6.017769412892624e-6,-3.816417373000497e-8,0.003955396289717578,6.220694202785564e-6,-3.856432318594815e-8,0.003955768174884203,6.456367672750993e-6,-3.902927598979735e-8,0.003956063179994125,6.691705169501888e-6,-3.949369249275251e-8,0.003956290051901221,6.894111093467348e-6,-3.989319559509603e-8,0.003956467854520423,7.034854759428582e-6,-4.017095218887658e-8,0.0039566249669400816,7.092436622888951e-6,-4.0284290088954386e-8,0.003956797478346305,7.056481487425291e-6,-4.021245059161304e-8,0.003957025994777186,6.932388600346256e-6,-3.996590300588929e-8,0.003957349414623954,6.7458410699163445e-6,-3.959537173887109e-8,0.003957794778545756,6.544498614818847e-6,-3.9195220973930975e-8,0.003958364489074411,6.392651543668574e-6,-3.889283923884582e-8,0.003959026190955713,6.355295837039837e-6,-3.881705762450065e-8,0.003959713978117959,6.473712946892012e-6,-3.904975388942963e-8,0.003960346658841707,6.743821961530491e-6,-3.958294960032686e-8,0.003960857575990237,7.112323350996538e-6,-4.031115186969541e-8,0.0039612197932018854,7.496174919039376e-6,-4.10699402100219e-8,0.003961452306299503,7.814588012843276e-6,-4.169936348567501e-8,0.003961606574536528,8.01530911676443e-6,-4.209596468724888e-8,0.003961744529834369,8.08439052342442e-6,-4.223205431160473e-8,0.003961919898203691,8.041055608842375e-6,-4.2145503385516964e-8,0.003962167934107929,7.92540646416268e-6,-4.1915471608097986e-8,0.003962502766954194,7.785608877629877e-6,-4.1637175222764884e-8,0.003962919504652272,7.667738377555936e-6,-4.140189174962666e-8,0.00396339860412415,7.6088866362392024e-6,-4.128330394764023e-8,0.003963911081389532,7.633028280277278e-6,-4.132919427751386e-8,0.003964423927548092,7.749152914604407e-6,-4.1557593105492124e-8,0.003964905318504584,7.951432583245587e-6,-4.1957026443146924e-8,0.003965329172806784,8.221199670866641e-6,-4.249046155503989e-8,0.0039656786145144665,8.530378408627668e-6,-4.310220299700377e-8,0.003965947990889918,8.845841392371245e-6,-4.37266017606286e-8,0.003966143368775138,9.134007815143316e-6,-4.429715430491004e-8,0.003966281763390242,9.365126081644348e-6,-4.475489492347632e-8,0.003966389432433808,9.517028569907252e-6,-4.50557398961551e-8,0.0039664994413490615,9.578380169243303e-6,-4.517691762130738e-8,0.003966648478154706,9.551562333274848e-6,-4.512279719134597e-8,0.003966872442131501,9.455213790585541e-6,-4.493010285476397e-8,0.003967200009096507,9.325645135291122e-6,-4.4670856835179115e-8,0.003967643942139405,9.215087087823338e-6,-4.4448923046119814e-8,0.0039681916280942,9.183905742556441e-6,-4.438445858297688e-8,0.003968799131557344,9.284666046934797e-6,-4.4582129386551373e-8,0.003969395714603861,9.540259293398974e-6,-4.508756258136944e-8,0.0039699037202130414,9.926237027984614e-6,-4.585222439096121e-8,0.003970268552470416,1.0371684773005795e-5,-4.673521137896835e-8,0.003970482142169558,1.078412203468818e-5,-4.755282003004367e-8,0.0039705843561092195,1.10860283048514e-5,-4.815115477383973e-8,0.003970642360386332,1.1241376583518066e-5,-4.845874452293147e-8,0.003970722821708415,1.125981504453911e-5,-4.8494689966727235e-8,0.0039708723071808566,1.11829441885822e-5,-4.834134805360363e-8,0.003971110919069601,1.1065211622363857e-5,-4.810650188240576e-8,0.003971435431608885,1.0958632735931508e-5,-4.7893216781566505e-8,0.003971826265812919,1.0903990546723049e-5,-4.778250186894762e-8,0.003972254586729742,1.0927283245886881e-5,-4.782624238951511e-8,0.003972688105211575,1.1039249843146977e-5,-4.8046116883982526e-8,0.0039730955939297884,1.1236386675066273e-5,-4.843545087392066e-8,0.00397345054557075,1.1502799362280447e-5,-4.8962807876693554e-8,0.003973734208169738,1.1812792318729848e-5,-4.9577158828296015e-8,0.003973937950405579,1.2134265111817801e-5,-5.021471558067026e-8,0.003974064679006379,1.2432918992578263e-5,-5.080734411592102e-8,0.003974128944467808,1.2676973960732623e-5,-5.129190491821449e-8,0.003974155556457899,1.2841827542246017e-5,-5.1619414061577866e-8,0.0039741767870729505,1.2914097734147498e-5,-5.1763003268766806e-8,0.003974228381508199,1.2894585117898373e-5,-5.1723840310494984e-8,0.0039743446740342315,1.2799778794775203e-5,-5.1534278839920305e-8,0.003974553031218095,1.2661651645222267e-5,-5.1257656952560386e-8,0.00397486770830553,1.252526192551265e-5,-5.0983665712715536e-8,0.003975283624309093,1.244306855380536e-5,-5.081702986908633e-8,0.003975771762776541,1.2464764616558008e-5,-5.085712444532777e-8,0.003976279358595454,1.2622668128129355e-5,-5.1168686224427466e-8,0.003976738806949802,1.2915806066879637e-5,-5.174997205879499e-8,0.00397708712480231,1.3300494013523065e-5,-5.251398213335525e-8,0.003977290708495544,1.3697307875515348e-5,-5.3302462984544026e-8,0.003977362035950759,1.4017395454687275e-5,-5.393846232144907e-8,0.003977355858695399,1.4196719691249908e-5,-5.429455632185751e-8,0.003977345605575303,1.4218583669657343e-5,-5.433755885903962e-8,0.003977394646971235,1.4112859234273654e-5,-5.412679978292305e-8,0.003977538120767945,1.3937040535825622e-5,-5.377637606636613e-8,0.003977780313015663,1.3753373811437281e-5,-5.3409789340420174E-08,0.0039781024005110955,1.361276026355333e-5,-5.312812805725196e-8,0.003978473023124186,1.3547849219766439e-5,-5.299644136530384e-8,0.003978857094370713,1.3572654477401475e-5,-5.304293291262342e-8,0.00397922161367756,1.3685187261991948e-5,-5.326404503945597e-8,0.0039795391090315735,1.387078103509612e-5,-5.363091484811033e-8,0.003979789799970764,1.4105237357237993e-5,-5.4095556401576257e-8,0.0039799632178153825,1.4357845076354077e-5,-5.45968922420498e-8,0.003980059500806607,1.4594673222991368e-5,-5.506737604277994e-8,0.003980090142970023,1.4782539911570218e-5,-5.5440930753357645e-8,0.003980077642195864,1.4893710156689642e-5,-5.566226817310781e-8,0.003980053468419345,1.4910803096605801e-5,-5.56965853216742e-8,0.0039800541106269635,1.4830983623911673e-5,-5.553787293347947e-8,0.0039801154418540406,1.466838142817004e-5,-5.5213797919344863e-8,0.003980266139921954,1.4453775388946017e-5,-5.478524269653043e-8,0.003980521287767714,1.4231023369268172e-5,-5.4339391697161045e-8,0.003980877353979621,1.4050315119139707e-5,-5.397640762167942e-8,0.003981309717837675,1.395868469966156e-5,-5.3790488944141864e-8,0.003981774090037387,1.3988628469092594e-5,-5.3846999457069773e-8,0.003982213281677193,1.4146764402475845e-5,-5.415961657859051e-8,0.003982570011449755,1.4406143821260008e-5,-5.467482526558627e-8,0.003982804131697453,1.47071498764841e-5,-5.527369286809923e-8,0.003982908778352366,1.4970992193698437e-5,-5.579891732093303e-8,0.003982916824397885,1.5124448073961797e-5,-5.6104337480320424e-8,0.003982891263406429,1.5126160410236833e-5,-5.610742482232311e-8,0.00398290215454356,1.4980743595872157e-5,-5.581730514030468e-8,0.0039830019202654705,1.4733222541316497e-5,-5.532354528930037e-8,0.003983211326857249,1.4448727937037265e-5,-5.4755680309660146e-8,0.003983520104257227,1.4189885389384998e-5,-5.423828496751849e-8,0.003983897259054235,1.4001826693159665e-5,-5.386125283385029e-8,0.003984303459136277,1.3907216352427944e-5,-5.366993275012876e-8,0.003984700579759181,1.3908279420985249e-5,-5.3669095525382856e-8,0.003985057207973846,1.399170223752423e-5,-5.3832563887307894e-8,0.00398535107067196,1.4133635001783242e-5,-5.411306762933109e-8,0.003985569881970607,1.4303771905497005e-5,-5.445033306625039e-8,0.0039857117052029475,1.4468652878353123e-5,-5.4777689929636526e-8,0.003985785248092382,1.4594817843348775e-5,-5.502840613731594e-8,0.003985809897015252,1.4652472383143383e-5,-5.514301337657362e-8,0.003985814826438397,1.4619974837042523e-5,-5.5078226609295487e-8,0.0039858363205629195,1.4488750116827408e-5,-5.481669944437828e-8,0.003985912714645442,1.426742833517886e-5,-5.4375274115178266e-8,0.003986077146685968,1.3983468945714063e-5,-5.380829619913038e-8,0.003986349418788184,1.3680607655818763e-5,-5.320267121504874e-8,0.003986729243878734,1.3411429492368585e-5,-5.266321054783875e-8,0.003987193368925278,1.3226052188088213e-5,-5.229014065094215e-8,0.0039876982347206835,1.3159498917999302e-5,-5.2153854337675876E-08,0.00398818833657533,1.3221106579292605e-5,-5.227358445765773e-8,0.003988608901007278,1.338916970518754e-5,-5.260647556617648e-8,0.003988920183252699,1.3613194193081244e-5,-5.3051916801022585e-8,0.003989109646982799,1.3824650626505712e-5,-5.347299765131535e-8,0.003989197746223967,1.3954767944424933e-5,-5.373215558025435e-8,0.003989233827788415,1.3954763566654355e-5,-5.373171638754063e-8,0.003989281800794039,1.3811236850979288e-5,-5.3444699852450874e-8,0.003989400134260441,1.3549823535973889e-5,-5.292209959911019e-8,0.003989624365284392,1.3225093106393183e-5,-5.227268643727621e-8,0.003989959279866753,1.290162083662521e-5,-5.1625249279043706e-8,0.0039903824814073756,1.2635093520500604e-5,-5.109093995112096e-8,0.00399085532254792,1.2460509228031144e-5,-5.0739748289693165e-8,0.003991335096141489,1.2389290014694273e-5,-5.0594703090057124e-8,0.003991784193685639,1.2412788238110021e-5,-5.063879306432595e-8,0.0039921750376531425,1.2508400657934924e-5,-5.082710027342623e-8,0.0039924916979013365,1.264552801312763e-5,-5.109866380876292e-8,0.003992729733420645,1.2790244411010073e-5,-5.138580639540977e-8,0.003992895505481774,1.2908774182592685e-5,-5.162109554086806e-8,0.003993005539841018,1.2970483448082949e-5,-5.1743325651077926e-8,0.003993085805853583,1.2951169554634605e-5,-5.170407528089941e-8,0.0039931702182065525,1.2837098930575677e-5,-5.1475750096119304e-8,0.003993297356816803,1.2629535465925717e-5,-5.106062222453551e-8,0.003993504537036869,1.2348458326471559e-5,-5.04982889205154e-8,0.00399381928261621,1.2033164964636035e-5,-4.9866956012253766e-8,0.003994250001187529,1.1737322154317254e-5,-4.9273662215669775e-8,0.0039947794474397376,1.1517572315967707e-5,-4.883161802180583e-8,0.003995364932969854,1.1417909076784898e-5,-4.8629022529340004e-8,0.0039959471867255245,1.145512467560501e-5,-4.8699907040692296e-8,0.003996465923696541,1.1611411554188564e-5,-4.9009176717670445e-8,0.003996876828671035,1.1837637422183225e-5,-4.9458966925161574e-8,0.003997163971009506,1.2066380201857806e-5,-4.991458667779847e-8,0.003997343759283495,1.2230228260355551e-5,-5.024110820721207e-8,0.003997459714537061,1.227962356731739e-5,-5.033913205513782e-8,0.0039975700174394516,1.2195246540345806e-5,-5.016966528746188e-8,0.0039977315793668896,1.199171433994848e-5,-4.9761614483588085e-8,0.003997985303974457,1.1711837911922054e-5,-4.920037428897476e-8,0.003998346858193554,1.1413566865496914e-5,-4.8601769213070115e-8,0.0039988053495900785,1.1154143067304714e-5,-4.808037527313077e-8,0.0039993293627035445,1.0976671983429418e-5,-4.7722620398013583e-8,0.003999877225762814,1.0902767894712806e-5,-4.7571985490559816e-8,0.004000407493370264,1.0931979187466173e-5,-4.762776490445662e-8,0.00400088668699902,1.1046120607170104e-5,-4.785368769200271e-8,0.0040012933178902805,1.1215681826101956e-5,-4.8190753288722657e-8,0.004001618824597613,1.140602944436198e-5,-4.856968419517292e-8,0.004001866716617343,1.1582292382143262e-5,-4.8920729394387654e-8,0.004002051089467816,1.1712900988527266e-5,-4.9180732644461024e-8,0.004002195134543225,1.1772393926335084e-5,-4.9298705411811596e-8,0.0040023296147842545,1.1744241358596293e-5,-4.9241438831947997e-8,0.004002490702025333,1.1624164492064202e-5,-4.9000150214148706e-8,0.004002716177242634,1.1423787492992013e-5,-4.859784391910101e-8,0.0040030390227214704,1.1173356864132723e-5,-4.8094833920023865e-8,0.004003478361347815,1.0920997712239193e-5,-4.7587334303852796e-8,0.004004029802038545,1.0725563863908767e-5,-4.719320099784125e-8,0.004004659792221574,1.0641953511935584e-5,-4.7022548424382676e-8,0.004005309358395405,1.0702231547952575e-5,-4.713991105371558e-8,0.004005909305357476,1.0900742430031743e-5,-4.7534332339053704e-8,0.004006402231050277,1.1192022790909333e-5,-4.8115061170983004e-8,0.004006761493609258,1.1504328555145381e-5,-4.8738556290387605e-8,0.004006998416788491,1.1762810600434922e-5,-4.925487801263246e-8,0.0040071557972175655,1.1911802199676452e-5,-4.955234189469917e-8,0.004007292492485376,1.1928068755813912e-5,-4.9584090451901684e-8,0.004007466154921649,1.182270536529946e-5,-4.9371962164986925e-8,0.004007719484345561,1.1633960677447274e-5,-4.8992235679285965e-8,0.004008072516982853,1.1415035698476774e-5,-4.855132546462214e-8,0.004008521247009628,1.1220739757355388e-5,-4.81591306861145e-8,0.004009041556486812,1.1095986552782165e-5,-4.790595409748483e-8,0.004009596684482728,1.1068126254001404e-5,-4.784699794194256e-8,0.004010146061004549,1.1144061978931795e-5,-4.799641499742937e-8,0.0040106533603855915,1.1311869844993711e-5,-4.833044905420133e-8,0.004011092236707525,1.1545566812726804e-5,-4.8796997573800546e-8,0.004011449171177877,1.1811239466230054e-5,-4.9327987188523245e-8,0.004011723764818403,1.2072971677857698e-5,-4.985134835693644e-8,0.00401192736389657,1.2297623888833959e-5,-5.0300619813788786e-8,0.004012080963416897,1.2458294160137046e-5,-5.06218316152855e-8,0.004012212952149902,1.2536886563441079e-5,-5.077857415701251e-8,0.004012356748830488,1.2526361690877996e-5,-5.075648134300845e-8,0.004012547921684051,1.2433048238960548e-5,-5.0567928963629637e-8,0.0040128199805693305,1.2278886932150372e-5,-5.025666471468604e-8,0.004013197985529161,1.2102470950470938e-5,-4.990002190519058e-8,0.00401369000353784,1.1956510006150005e-5,-4.960388878819715e-8,0.004014278532066863,1.1898883530667995e-5,-4.948472066423443e-8,0.0040149167491389135,1.197622246061075e-5,-4.963648586630433e-8,0.004015535619726837,1.2203997061740317e-5,-5.0090569001978953e-8,0.004016064005360639,1.2553240036393509e-5,-5.0789018255737813e-8,0.0040164548830214815,1.2954750430225737e-5,-5.1592962190804215e-8,0.004016703733644348,1.3322431746732769e-5,-5.232951731508461e-8,0.004016848431434354,1.3584310465564186e-5,-5.2854110685949694e-8,0.004016951977140229,1.3704978067918915e-5,-5.309550581731473e-8,0.00401707918422125,1.3690726517722423e-5,-5.3066050186417026e-8,0.004017278464444657,1.3580022117076173e-5,-5.284257367174307e-8,0.004017573349390648,1.3427603643939568e-5,-5.253461517336548e-8,0.004017962524787026,1.3289293461804937e-5,-5.2254123260796106e-8,0.004018424992325505,1.3210932934703492e-5,-5.2093339215260626e-8,0.0040189273729024705,1.3221997414880813e-5,-5.211190437947683e-8,0.0040194315062708425,1.3333214209773679e-5,-5.2331872879317006e-8,0.004019901334926071,1.3537385768781908e-5,-5.273915282943784e-8,0.00402030839443015,1.3812681913253474e-5,-5.3290015781132485e-8,0.004020635440219238,1.4127527132908653e-5,-5.392095666905157e-8,0.004020878035146411,1.4446146519830484e-5,-5.455996088115213e-8,0.004021044226821732,1.473392798977689e-5,-5.513737746601209e-8,0.00402115275112109,1.496191131793451e-5,-5.559493860655362e-8,0.004021230393628464,1.5110074592057919e-5,-5.589227823087387e-8,0.004021308993990323,1.5169566143298608e-5,-5.601133518705951e-8,0.004021422225284333,1.5144214158221058e-5,-5.595940175161358e-8,0.0040216019835709,1.505150937068162e-5,-5.57712373201424e-8,0.004021873939755527,1.4922916833095616e-5,-5.550989215428107e-8,0.0040222517467002885,1.4802621499919506e-5,-5.5264327043482085e-8,0.004022730175355548,1.4742845077977562e-5,-5.513999395696767e-8,0.00402327924617558,1.4793651408929851e-5,-5.5238179247849234e-8,0.004023843665981839,1.498685836194858e-5,-5.562340967782772e-8,0.004024352851506316,1.5318263529964064e-5,-5.62874975195311e-8,0.004024743118745088,1.573836892528872e-5,-5.7130821512435726e-8,0.004024984194842726,1.6162535861771282e-5,-5.7982877436069443E-08,0.004025094377176705,1.6501026274800637e-5,-5.866291758713605e-8,0.004025133037057492,1.6693810177365013e-5,-5.9050065212816505e-8,0.0040251747474465615,1.6730082192383597e-5,-5.912247029379822e-8,0.004025281332087344,1.6644195416193686e-5,-5.894897656672424e-8,0.004025485746450353,1.6495866969054968e-5,-5.864930998217878e-8,0.004025790429201538,1.634835179138792e-5,-5.8350370181822665e-8,0.0040261746462862255,1.6253223052331517e-5,-5.815584387978385e-8,0.0040266044641294775,1.624327250382378e-5,-5.813200951807451e-8,0.004027041638836209,1.633135361213576e-5,-5.8305293951082345e-8,0.00402745025711566,1.6512469372403883e-5,-5.866622925242898e-8,0.00402780134494779,1.6767326438795646e-5,-5.917637987828972e-8,0.004028075926393701,1.7066612366788847e-5,-5.977686171643531e-8,0.004028266748303052,1.7375686093179322e-5,-6.039784671300595e-8,0.004028378700267617,1.7659404592882538e-5,-6.096841423803015e-8,0.004028427921096438,1.7886793273255926e-5,-6.142604364033798e-8,0.00402843964084909,1.8035151508268353e-5,-6.172486403108444e-8,0.004028445012514573,1.809312331270539e-5,-6.184175008856881e-8,0.0040284773268235005,1.8062494703952662e-5,-6.177988665082503e-8,0.004028567910222432,1.7958723498241694e-5,-6.156990468255793e-8,0.004028741861400401,1.781021131030546e-5,-6.12686094634135e-8,0.0040290136622913525,1.765619786846825e-5,-6.095496322789188e-8,0.0040293826809504,1.754280016104753e-5,-6.07222216328837e-8,0.004029829124215082,1.751619084809753e-5,-6.066410876225836e-8,0.004030312256108125,1.7612020509539247e-5,-6.085324393616324e-8,0.004030774031389632,1.7841815454699297e-5,-6.131341293797681e-8,0.00403115142107213,1.8180564860966387e-5,-6.199433879515745e-8,0.0040313974300052735,1.8563852856182064e-5,-6.27659191383855e-8,0.004031503203472192,1.8902856758312773e-5,-6.344869780801121e-8,0.004031507215610012,1.9116091643266002e-5,-6.387812802255732e-8,0.004031481930153734,1.916242569246173e-5,-6.397118926916185e-8,0.004031503768949901,1.9055383830683572e-5,-6.375504333127174e-8,0.004031624504421274,1.885153534554923e-5,-6.334344369125224e-8,0.00403185885677837,1.8623798019755862e-5,-6.288296518438462e-8,0.004032189274944319,1.8436620157024645e-5,-6.250321630029159e-8,0.004032579178971542,1.83324637336343e-5,-6.228981683190497e-8,0.004032986090714059,1.8329161981569122e-5,-6.227911243671427e-8,0.0040333708125981456,1.8423493871162983e-5,-6.246522183995398e-8,0.004033702484811329,1.8596808258675e-5,-6.281112340841897e-8,0.0040339608469825575,1.882045266602357e-5,-6.325939983367222e-8,0.004034137070431829,1.906045203237547e-5,-6.374161530130195e-8,0.004034233855241526,1.928170635220029e-5,-6.41868612531973e-8,0.004034264876079334,1.9452018078757834e-5,-6.453000617107153e-8,0.004034253391531761,1.9546047063260236e-5,-6.47197441623075e-8,0.004034229755724816,1.9548977882390267e-5,-6.472596597020264e-8,0.004034227730682795,1.9459320969577683e-5,-6.454533452522716e-8,0.004034279865723162,1.9290186380915923e-5,-6.420383235003002e-8,0.004034412486171448,1.9068594732676885e-5,-6.375547510633614e-8,0.00403464093034948,1.8832637893526655e-5,-6.327679436677401e-8,0.004034965687074627,1.8626536313167505e-5,-6.285707244922939e-8,0.004035370034247165,1.8493819644007736e-5,-6.258465123000945e-8,0.004035819874790727,1.846886648562048e-5,-6.252971679787746e-8,0.004036266904185114,1.856732169763407e-5,-6.272465029492704e-8,0.0040366565598250765,1.8777113738250836e-5,-6.31455681508602e-8,0.0040369414612311345,1.9053783781087113e-5,-6.370271942688705e-8,0.004037098344333292,1.932539834606959e-5,-6.42504851948613e-8,0.004037141902942749,1.951083270094533e-5,-6.462457097034529e-8,0.004037125865169994,1.954813798447868e-5,-6.46995458547251e-8,0.004037125861820998,1.9419995141300983e-5,-6.444028053955575e-8,0.00403721048480607,1.9160768124473176e-5,-6.391602935018678e-8,0.004037416430514758,1.88403649270376e-5,-6.326771012194285e-8,0.0040377405727112705,1.853563684839144e-5,-6.265022145619625e-8,0.004038149143064464,1.8305856043064805e-5,-6.218312567891382e-8,0.004038594479970898,1.8181596820678142e-5,-6.192833669694351e-8,0.004039029805036155,1.8165835433560526e-5,-6.189230839848963e-8,0.004039418015136255,1.8241197474729e-5,-6.204049708155263e-8,0.0040397350446880215,1.837815198734788e-5,-6.231370568667206e-8,0.004039969999138671,1.8541650006683282e-5,-6.264136381327966e-8,0.004040124041563737,1.8695860404660215e-5,-6.295108921511804e-8,0.004040209074777056,1.8807706049100226e-5,-6.317591860236914e-8,0.004040246363654397,1.88500021655281e-5,-6.32607471793734e-8,0.004040264737547788,1.8804636954320954e-5,-6.316879237455187e-8,0.004040297831687618,1.866571824947087e-5,-6.288791561688243e-8,0.004040379958326903,1.844201983765977e-5,-6.243550964565625e-8,0.004040540705219954,1.8157672301950075e-5,-6.185990253089828e-8,0.004040799030115895,1.7850119174229367e-5,-6.123634554926798e-8,0.0040411581509778,1.7564868093298403e-5,-6.065660011340943e-8,0.004041602732207329,1.734741098407994e-5,-6.021277355052825e-8,0.0040420995762303815,1.7233639004230466e-5,-5.997796689164541e-8,0.004042602323436688,1.724067110935005e-5,-5.998756494201581e-8,0.00404305992163886,1.736012884995211e-5,-6.022533875758978e-8,0.004043427966196684,1.7555910433464828e-5,-6.061865961283453e-8,0.0040436810936756275,1.7768500926616962e-5,-6.104709566844615e-8,0.004043823230883101,1.7927149455153616e-5,-6.1367140862782e-8,0.004043891164479845,1.7968977540453174e-5,-6.145110341710769e-8,0.004043947176700689,1.7860007267002482e-5,-6.122984744605595e-8,0.0040440603521150744,1.760913353792817e-5,-6.072111082777755e-8,0.004044282997667049,1.726658843338252e-5,-6.002633777071843e-8,0.004044633306112802,1.6905912165610116e-5,-5.929416783466505e-8,0.0040450925842591984,1.6598297213721576e-5,-5.866858772554347e-8,0.004045616463144047,1.6391968202125593e-5,-5.824729428445154e-8,0.004046152091763345,1.630410509649094e-5,-5.80653572847142e-8,0.004046652760383014,1.6324348036651065e-5,-5.8102214711525505e-8,0.004047085929565268,1.6424100266681775e-5,-5.830035937199191e-8,0.004047435228495953,1.6566189179488793e-5,-5.8584786032397173e-8,0.004047698959744002,1.671216642566975e-5,-5.8877737365682856e-8,0.004047887444712365,1.6826943646276348e-5,-5.9108127517374904e-8,0.00404802049508203,1.6881670483517197e-5,-5.9217433706880595e-8,0.004048125273323472,1.6855947238255258e-5,-5.9164217502915826e-8,0.004048234127401434,1.674008799311883e-5,-5.8928701076803824e-8,0.004048381670060571,1.6537530470193916e-5,-5.851761039418674e-8,0.004048600436416601,1.6266746291805815e-5,-5.796802584768781e-8,0.004048914984056892,1.5961326425245878e-5,-5.734760338043135e-8,0.004049335282066074,1.566668088020222e-5,-5.674801447212363e-8,0.0040498513719114376,1.5432414454828066e-5,-5.626965875165331e-8,0.004050431921230339,1.5301075079280176e-5,-5.5998974280483204e-8,0.004051028668995067,1.5296083993458358e-5,-5.598395649797168e-8,0.004051586738790464,1.5412983005455173e-5,-5.62162478465142e-8,0.004052058328986434,1.5617600591062285e-5,-5.6627167195976384e-8,0.004052415758160085,1.5852514347711364e-5,-5.7100596870077054e-8,0.004052659913064241,1.6050494133565283e-5,-5.7500160816537554e-8,0.0040528214440387015,1.6151570852562244e-5,-5.7703907353645075e-8,0.004052953861013157,1.611931020329749e-5,-5.763746552942237e-8,0.004053119682835466,1.595162622613579e-5,-5.729612717276807e-8,0.004053373025435257,1.5682212292362576e-5,-5.6747852350428666e-8,0.004053744027610918,1.537106055446932e-5,-5.611410681536437e-8,0.004054230846152612,1.5086637935810276e-5,-5.553375453822118e-8,0.004054802304411898,1.488624806595296e-5,-5.5123232299645195e-8,0.0040554095026198176,1.4802029857689209e-5,-5.494808734565473e-8,0.004056000829014219,1.4836834906018199e-5,-5.501449222707493e-8,0.0040565344012080526,1.496913360261363e-5,-5.527907211829798e-8,0.004056984713435475,1.5162646600086324e-5,-5.5668377746635783e-8,0.004057343673139978,1.537616244421555e-5,-5.609881419197702e-8,0.004057618154709957,1.5570907870645105e-5,-5.6491651348612124e-8,0.004057826336088842,1.571498161585009e-5,-5.678207302107251e-8,0.004057994236563965,1.5785663812756403e-5,-5.692387796847087e-8,0.004058152876449292,1.5770755436499932e-5,-5.6892175274642595e-8,0.004058335730497766,1.56698047725992e-5,-5.6685842838322767e-8,0.004058575736492297,1.5495479753201927e-5,-5.6330312045967666e-8,0.004058901067412491,1.5274593050186677e-5,-5.587969998232432e-8,0.0040593292989023755,1.504744016568601e-5,-5.541556302293769e-8,0.004059860688647646,1.4863522530534258e-5,-5.5038323485976716e-8,0.004060472924789321,1.4772178278052189e-5,-5.484831991380623e-8,0.004061121016256655,1.4808824187926628e-5,-5.491786333355384e-8,0.004061745398388068,1.4980995070619321e-5,-5.526278213620586e-8,0.0040622878335508355,1.5260905424743596e-5,-5.58271445794069e-8,0.00406270977840194,1.5589957864201896e-5,-5.6492254117461846e-8,0.004063005280007226,1.5895053516072876e-5,-5.71096919262533e-8,0.004063202722944347,1.611033761314179e-5,-5.7545486920249105e-8,0.004063355322523949,1.6195737978189514e-5,-5.7717829505718655e-8,0.004063524982892078,1.614629397440836e-5,-5.761611433490631e-8,0.0040637654881181635,1.5990874718776372e-5,-5.729846921069878e-8,0.0040641096822484745,1.5782374878243806e-5,-5.687200018963553e-8,0.004064563196214051,1.558309622417832e-5,-5.646323142518138e-8,0.004065105372946402,1.5449401160722053e-5,-5.6186965778914343e-8,0.004065696400389077,1.5419375479983378e-5,-5.612111731815594e-8,0.004066288252635861,1.5506240841777267e-5,-5.6293121212787874e-8,0.004066836155862962,1.5698542971993716e-5,-5.668010909236039e-8,0.004067307459695976,1.5966009975132922e-5,-5.7220705532581126e-8,0.00406768613309999,1.6268363193234948e-5,-5.783296271933897e-8,0.004067972917711898,1.6564106468153707e-5,-5.8432340733695405e-8,0.004068182486831887,1.681727652571284e-5,-5.894554234053274e-8,0.00406833933892352,1.7001503611134662e-5,-5.931880776278692e-8,0.004068473756113949,1.7101841750667816e-5,-5.952159722920657e-8,0.004068618388467829,1.7115337876791556e-5,-5.9547687041123166e-8,0.004068805319711415,1.7051183194416186e-5,-5.941546370891142e-8,0.004069063045413328,1.693080237181354e-5,-5.9168176976249445e-8,0.004069412642286213,1.6787584460103433e-5,-5.887352588619779e-8,0.004069862675046376,1.6665125654505054e-5,-5.862021049541122e-8,0.0040704033862420915,1.6612132979317868e-5,-5.8507611354420696e-8,0.004071002433343476,1.6672362317351996e-5,-5.8625252169843815e-8,0.004071606146962371,1.6870078458229394e-5,-5.90230533337598e-8,0.004072150180031084,1.7195707718266797e-5,-5.968194828764344e-8,0.004072579327330133,1.7600304654934825e-5,-6.050250155157372e-8,0.004072869038903364,1.800622384140864e-5,-6.132663264350784e-8,0.004073036765467772,1.8332569931295446e-5,-6.1989505493645e-8,0.004073135737926338,1.852349328887892e-5,-6.237718185712606e-8,0.004073234663677566,1.85650892687075e-5,-6.246099877342193e-8,0.004073394556097025,1.848476914851136e-5,-6.229627231999442e-8,0.004073652726352091,1.833737723399551e-5,-6.199414171839608e-8,0.004074017372470005,1.818678426452505e-5,-6.168431508746106e-8,0.0040744707750797445,1.808984214398682e-5,-6.148259812586677e-8,0.004074977337424825,1.8085790232343694e-5,-6.14693541796517e-8,0.004075493263269258,1.8191439776279438e-5,-6.167952512829171e-8,0.004075975798354961,1.840124607827241e-5,-6.210249277646861e-8,0.004076390776901895,1.8691144047334405e-5,-6.268964660170682e-8,0.004076717622217568,1.902494399145827e-5,-6.336732629192284e-8,0.004076951353972912,1.9361837440099986e-5,-6.405219775676581e-8,0.004077101746210127,1.96635091438295e-5,-6.46659095300111e-8,0.0040771903314508785,1.989970237527024e-5,-6.514655672234517e-8,0.004077246262806788,2.005165635670929e-5,-6.545569860243698e-8,0.004077302032084395,2.0113486301099913e-5,-6.558109876386352e-8,0.0040773896466789,2.0092092019349717e-5,-6.553647593087778e-8,0.004077537342209875,2.0006253451383885e-5,-6.535969647604283e-8,0.004077766555167821,1.988527789663943e-5,-6.511016738314298e-8,0.004078088689458051,1.976710784085783e-5,-6.486516989220184e-8,0.004078501328342447,1.96951136887764e-5,-6.471343334262049e-8,0.004078984379126887,1.971216651307541e-5,-6.474300004433253e-8,0.004079498090171917,1.985082590723176e-5,-6.502100525056876e-8,0.004079986278779378,2.0120252289371937e-5,-6.55667052274478e-8,0.004080388235941525,2.0494122797303468e-5,-6.632662153528476e-8,0.004080659282108669,2.0908086133771597e-5,-6.716933519624624e-8,0.0040807921628955995,2.1274886377819846e-5,-6.791652262392293e-8,0.004080825530396653,2.151542116556529e-5,-6.840653341073122e-8,0.00408083076942298,2.1590301346052778e-5,-6.855881484240877e-8,0.00408088328291802,2.1513241158620907e-5,-6.84010788689678e-8,0.004081035155949392,2.134019848115492e-5,-6.804703209129059e-8,0.004081302546732209,2.1144355238359504e-5,-6.764545015636383e-8,0.004081668918553097,2.0992072249557375e-5,-6.733141248227607e-8,0.00408209685499066,2.092848134334002e-5,-6.719713964870882e-8,0.004082540990125184,2.09731231952271e-5,-6.72830951751148e-8,0.004082958197133572,2.112218615191573e-5,-6.758231956110174e-8,0.00408331422869279,2.1353847294547875e-5,-6.805099975797541e-8,0.0040835874057665485,2.1634567155020024e-5,-6.862106700376206e-8,0.004083770116681637,2.1925434668298697e-5,-6.921309213990532e-8,0.004083868551366543,2.218816882099307e-5,-6.974866033503243e-8,0.0040839008942840345,2.239039499761978e-5,-7.016132947403248e-8,0.004083894232067077,2.250978778831476e-5,-7.0405207142333e-8,0.004083880571241067,2.25366960163881e-5,-7.046030306590217e-8,0.00408389252947929,2.2475031488631666e-5,-7.033426314434203e-8,0.004083959249418965,2.2341562177163083e-5,-7.00608865512821e-8,0.004084102836943754,2.2163971654346905e-5,-6.969625158825354e-8,0.004084335399848269,2.1977972812721735e-5,-6.931302372966625e-8,0.004084656614019778,2.1823582213426522e-5,-6.899305140282665e-8,0.004085051725131036,2.1740298666453316e-5,-6.881758196303943e-8,0.00408549043013785,2.1760499615591525e-5,-6.88536205880247e-8,0.004085928134416261,2.1900671848150498e-5,-6.913569532030017e-8,0.0040863118371121795,2.215161693360532e-5,-6.964550832191338e-8,0.004086592559838579,2.2471365259167905e-5,-7.029728262333709e-8,0.004086743511323791,2.278742626781085e-5,-7.094245749548945e-8,0.004086777069432108,2.3014650869490377e-5,-7.140649996468963e-8,0.004086748324489586,2.3086554162397423e-5,-7.155319319147187e-8,0.004086737210606845,2.298478523801362e-5,-7.134486880118048e-8,0.0040868162246094596,2.274751838270059e-5,-7.085933294161156e-8,0.004087022774633262,2.245098166859568e-5,-7.025197183973786e-8,0.004087351063401967,2.21773293531232e-5,-6.969023534135919e-8,0.004087762942117613,2.1988078250473938e-5,-6.929965848306815e-8,0.004088206426731321,2.1912888693068682e-5,-6.914113536613453e-8,0.0040886315320029145,2.1951514131721826e-5,-6.921484527465759e-8,0.004088999563181579,2.2082048330308014e-5,-6.947683655171173e-8,0.004089286694209541,2.227007195705091e-5,-6.985740065000953e-8,0.0040894840997412005,2.2476260228544262e-5,-7.027641992708612e-8,0.004089596524746182,2.2662126678655353e-5,-7.065510425729817e-8,0.004089640201779963,2.2794420332461283e-5,-7.092513321189004e-8,0.0040896402838893646,2.284862699133553e-5,-7.103599943485881e-8,0.004089627705490863,2.2811697616913437e-5,-7.096068474456991e-8,0.004089635411507748,2.2683801109797253e-5,-7.069921973276663e-8,0.004089694115390104,2.2478677051700234e-5,-7.027932793650815e-8,0.004089828036207196,2.2222286505042233e-5,-6.975365444924291e-8,0.004090051161470819,2.1949786269337134e-5,-6.919369964114232e-8,0.004090364511991667,2.170103932630054e-5,-6.86808528694382e-8,0.004090754790796106,2.151498959955255e-5,-6.829506592183514e-8,0.004091194666195651,2.142330844766789e-5,-6.810185855541579e-8,0.004091644993372157,2.1443624281504225e-5,-6.813824314344391e-8,0.0040920596967446154,2.1572833523424404e-5,-6.83986719144852e-8,0.004092394222561333,2.1782031162445324e-5,-6.88243378416857e-8,0.00409261763274889,2.2016102025325163e-5,-6.93022303226837e-8,0.0040927261558925485,2.2201941671687712e-5,-6.968213454108016e-8,0.004092752390399775,2.226781056753669e-5,-6.98165868041908e-8,0.004092761828782771,2.217010941896625e-5,-6.961594162020133e-8,0.004092832347522563,2.191489742469643e-5,-6.90924145000651e-8,0.004093023916310563,2.1559197363135236e-5,-6.836256507621499e-8,0.004093355382863215,2.1188443825140062e-5,-6.760103065423595e-8,0.004093801442773309,2.0883140487863215e-5,-6.697239893387999e-8,0.004094308353665391,2.0693642127327703e-5,-6.657980636574702e-8,0.004094815962852751,2.0632674505226746e-5,-6.644971858931919e-8,0.0040952745320277885,2.068224872375703e-5,-6.654596569206641e-8,0.0040956524926629954,2.0806194730034872e-5,-6.67951505187713e-8,0.004095937126088291,2.0961685991746184e-5,-6.711000602505771e-8,0.004096131713874594,2.1107263596701378e-5,-6.740571701477901e-8,0.004096251810518326,2.1207630473032185e-5,-6.760979080112129e-8,0.004096321810660583,2.123646163530461e-5,-6.766796655208107e-8,0.004096371868974252,2.117828020698269e-5,-6.754820351325027e-8,0.004096434786498749,2.102987222746858e-5,-6.724363080817744e-8,0.0040965424713340064,2.0801158863912584e-5,-6.677428971329367e-8,0.004096721827951759,2.0514974467630822e-5,-6.618661611930796e-8,0.004096990403276643,2.0205057223031076e-5,-6.554934138305202e-8,0.004097352573177603,1.9911884762201487e-5,-6.494509874821933e-8,0.0040977972420050135,1.9676507214749987e-5,-6.445798705026133e-8,0.00409829795293573,1.953307645034436e-5,-6.415839226662203e-8,0.00409881595753222,1.950131413892924e-5,-6.408749767114518e-8,0.0040993062317397294,1.958041987144307e-5,-6.424454113672405e-8,0.004099725949858662,1.9745840788228674e-5,-6.457984351456717e-8,0.004100044534043069,1.9950335607570126e-5,-6.499672432697775e-8,0.004100253632198516,2.013084019847643e-5,-6.536554032319219e-8,0.004100374104936217,2.0221969791798727e-5,-6.555157283498206e-8,0.004100455954183344,2.017477740412432e-5,-6.545379905395303e-8,0.0041005675891791,1.9975516702515512e-5,-6.504358355699308e-8,0.004100774805833544,1.965545542492212e-5,-6.438482789008002e-8,0.004101116885460426,1.928372582152993e-5,-6.361922074229146e-8,0.004101591870619371,1.894360567216253e-5,-6.291755062884213e-8,0.004102159238000308,1.8703470116557066e-5,-6.242018269746027e-8,0.00410275747591571,1.859703517591237e-5,-6.219659152435074e-8,0.0041033257619690735,1.8620141853715126e-5,-6.223872071816769e-8,0.004103819526959297,1.874065523208672e-5,-6.248114525442182e-8,0.004104216341986781,1.8912959818053868e-5,-6.283064370406833e-8,0.004104514378076207,1.909031638156852e-5,-6.319144791179558e-8,0.004104727475774354,1.9232607115184218e-5,-6.348113509152911e-8,0.004104879851426564,1.931006277488053e-5,-6.363836365897142e-8,0.004105001750774871,1.9304641429037065e-5,-6.362581755356893e-8,0.004105126061105588,1.9210481227772614e-5,-6.343120965738759e-8,0.004105285298052878,1.903412670485694e-5,-6.306774716776545e-8,0.004105508333763851,1.879451414608241e-5,-6.257405625726658e-8,0.004105816518487927,1.8522105372562953e-5,-6.201237977882163e-8,0.004106219408261088,1.8256224455901378e-5,-6.146316659960243e-8,0.004106711031782206,1.8039834534071813e-5,-6.101448588822051e-8,0.00410726820104739,1.7911758794004197e-5,-6.074620274769431e-8,0.00410785241819564,1.7897526858302653e-5,-6.071123337928272e-8,0.004108416180285091,1.8001212401072268e-5,-6.091866896065255e-8,0.0041089130241994485,1.820113748087769e-5,-6.132469615222139e-8,0.004109309104207408,1.8451646262672002e-5,-6.183595690444914e-8,0.0041095931983087045,1.869153552715818e-5,-6.232669811154938e-8,0.004109782084836411,1.8857869433917337e-5,-6.266717936609684e-8,0.004109919049387194,1.890226775739589e-5,-6.275732940350907e-8,0.004110064678761718,1.8805497319272342e-5,-6.255697025959145e-8,0.004110281124285083,1.858555641793577e-5,-6.210261238000375e-8,0.004110613703963449,1.829511610327427e-5,-6.150227952510236e-8,0.004111076186029953,1.8007169267841526e-5,-6.090602884987728e-8,0.004111646199815092,1.779292050803584e-5,-6.046048759796877e-8,0.0041122733354077975,1.770055011084275e-5,-6.026514317284309e-8,0.0041128962379817155,1.774357289428051e-5,-6.034829633072815e-8,0.004113460777981091,1.790224628658376e-5,-6.06698069713779e-8,0.004113932211375858,1.8134726118468195e-5,-6.114390913053563e-8,0.004114298813701848,1.8391239948785017e-5,-6.166830949707429e-8,0.004114568894174971,1.862570592744579e-5,-6.214811466500701e-8,0.004114764817887481,1.8802594772439982e-5,-6.251002429640857e-8,0.004114916941016438,1.8899611324047082e-5,-6.270792853777051e-8,0.004115058788903396,1.8907892822336005e-5,-6.272336282371548e-8,0.004115223529956793,1.883126597625609e-5,-6.256398245923092e-8,0.00411544112890223,1.8685396522870248e-5,-6.226179188618023e-8,0.004115735426728429,1.8496880076378558e-5,-6.187126850283822e-8,0.004116120670135077,1.830166124887891e-5,-6.146615285795259e-8,0.0041165976094830435,1.8141735245261587e-5,-6.113275473128614e-8,0.0041171501459813615,1.8059102673713814e-5,-6.095761535265301e-8,0.0041177444298378775,1.808677278934742e-5,-6.100903876410642e-8,0.0041183326482072515,1.8238377845822922e-5,-6.131565461947553e-8,0.004118862644895194,1.8500025366803055e-5,-6.184947666116739e-8,0.004119291845670744,1.882888305936909e-5,-6.252277761117837e-8,0.004119600995524518,1.916129270179671e-5,-6.320463576506777e-8,0.004119802051454148,1.9429176950619105e-5,-6.375467477591138e-8,0.004119936452241972,1.9579389208801835e-5,-6.406297574667329e-8,0.004120063979010977,1.958911524116044e-5,-6.408192449547398e-8,0.004120246088908799,1.9472222424355246e-5,-6.383944294513096e-8,0.00412052913259154,1.927501773422856e-5,-6.343041897475507e-8,0.004120932292519319,1.906320686341203e-5,-6.299000026420115e-8,0.0041214433902594435,1.890409343719484e-5,-6.265701578056743e-8,0.004122023468462977,1.884920647966687e-5,-6.253815085908088e-8,0.004122618451191795,1.8922390072082127e-5,-6.268323571647604e-8,0.004123173897075194,1.911656377839061e-5,-6.307832429936484e-8,0.0041236480036418895,1.939920158835302e-5,-6.365677983994343e-8,0.004124019202185466,1.9723461236942205e-5,-6.432213367561228e-8,0.004124287288244285,2.0040448516884058e-5,-6.49734234542431e-8,0.004124469567213898,2.0308896945277934e-5,-6.552527867409888e-8,0.004124594685466592,2.050066336393985e-5,-6.591937018917111e-8,0.004124696486907284,2.0602417835979338e-5,-6.61279466825767e-8,0.004124809121272801,2.0614914334906605e-5,-6.615231627858997e-8,0.00412496354787499,2.055127128513555e-5,-6.601926590271963e-8,0.004125184918062037,2.0435134717556e-5,-6.57772755655983e-8,0.004125490124622406,2.029885113054249e-5,-6.549281651963915e-8,0.004125884999648892,2.0181120072676474e-5,-6.524562199853932e-8,0.004126361187835996,2.012312227810521e-5,-6.512079755335909e-8,0.004126893637683346,2.016202160381174e-5,-6.519543374690128e-8,0.0041274407643772945,2.0321520249793008e-5,-6.551902559572129e-8,0.0041279499280898095,2.0601210358685798e-5,-6.609131944530118e-8,0.00412836969991199,2.0969274287628928e-5,-6.684706034379096e-8,0.004128666706476001,2.1364544730577544e-5,-6.766013860494177e-8,0.0041288402130868545,2.1711284432474734e-5,-6.837410979895914e-8,0.0041289260941142205,2.1943052421982018e-5,-6.88515335136089e-8,0.0041289863790102055,2.2025323150899638e-5,-6.902071138081227e-8,0.004129088666642758,2.1966206179071726e-5,-6.889782614187511e-8,0.0041292849632450085,2.1811418243791324e-5,-6.857662713945957e-8,0.0041295982485091585,2.1627811881081866e-5,-6.819461136355642e-8,0.004130019713586947,2.1483464269815928e-5,-6.789215710034456e-8,0.004130514847826705,2.1431037977969292e-5,-6.777831067919666e-8,0.004131034556120914,2.1497848193685356e-5,-6.79102050168444e-8,0.0041315275855180284,2.1683260008845836e-5,-6.828741599827955e-8,0.0041319514162801475,2.196236627165169e-5,-6.885922779761631e-8,0.0041322797208666745,2.2294052841138688e-5,-6.95410620986726e-8,0.004132505435793167,2.2631076927335552e-5,-7.023526137874012e-8,0.004132639559466678,2.2929656701609897e-5,-7.085103297987233e-8,0.0041327068073958445,2.3156619956378226e-5,-7.131941152567361e-8,0.004132739789933165,2.329325563893979e-5,-7.160135080100659e-8,0.0041327732697304005,2.3336073204430915e-5,-7.168931655885992e-8,0.004132839498526474,2.3295362222597494e-5,-7.160425905283545e-8,0.00413296489491445,2.319267720853539e-5,-7.139037898864675e-8,0.004133167727447015,2.3058081690060263e-5,-7.110948143247038e-8,0.004133456251584568,2.2927368246838634e-5,-7.083536734083875e-8,0.004133826864680379,2.2838893766911416e-5,-7.064744138921729e-8,0.004134262246139552,2.2829234263837425e-5,-7.062178621276581e-8,0.004134730285875639,2.2926717969593375e-5,-7.081769093706275e-8,0.004135185707911027,2.31425991815179e-5,-7.125916402041035e-8,0.0041355769071945506,2.346164589422353e-5,-7.191520269449173e-8,0.004135859441965122,2.383687117408675e-5,-7.268874415754124e-8,0.00413601369908566,2.4195039750171892e-5,-7.342810252300716e-8,0.004136058529573073,2.4456681249135846e-5,-7.396855759155849e-8,0.004136050487278654,2.456513384479195e-5,-7.419258398190955e-8,0.004136065019007573,2.4509860369459744e-5,-7.407805053129414e-8,0.004136168231272512,2.4330162569653813e-5,-7.370577611668552e-8,0.004136394459822497,2.409789030051738e-5,-7.322376999160329e-8,0.0041367395368764786,2.389056192725738e-5,-7.279186780905995e-8,0.0041371686481556655,2.3768649735412706e-5,-7.253505860848046e-8,0.004137631091783037,2.3763952092816136e-5,-7.251957894397494e-8,0.0041380747660009765,2.3878490225956004e-5,-7.275049880309497e-8,0.004138456791204421,2.4090059448810835e-5,-7.318286374029693e-8,0.004138749601503419,2.4360668956780575e-5,-7.37387885346733e-8,0.004138943194899096,2.4645468588374668e-5,-7.4325712073413e-8,0.004139044422775969,2.49009409295305e-5,-7.485336553975188e-8,0.0041390740178470385,2.509158954761269e-5,-7.52478055388981e-8,0.004139062078858488,2.519450532721772e-5,-7.546109277291754e-8,0.004139042857680081,2.5201537323836e-5,-7.547591881161818e-8,0.004139049681730755,2.5119185084212284e-5,-7.530538123596477e-8,0.004139110696144454,2.4966623708413148e-5,-7.498882514872912e-8,0.004139245793706889,2.4772544989273615e-5,-7.458527889421062e-8,0.004139464664095014,2.4571523457755883e-5,-7.416602259172535e-8,0.0041397656452513715,2.4400247311316832e-5,-7.380696250121588e-8,0.004140135103394312,2.4293510720908743e-5,-7.358048043260725e-8,0.004140547313718007,2.427954414351527e-5,-7.354575599206736e-8,0.004140965413628404,2.4374141223041407e-5,-7.373639326420042e-8,0.004141344873455721,2.457362346913388e-5,-7.414551482757032e-8,0.004141641326420783,2.48483642172095e-5,-7.471205791422762e-8,0.0041418235765014145,2.5141002654557318e-5,-7.53169965475809e-8,0.004141889215372904,2.537511100337642e-5,-7.58014858398564e-8,0.004141874921065243,2.5477517766043897e-5,-7.601342829768719e-8,0.004141851043315424,2.5408217951499304e-5,-7.58696248028512e-8,0.004141897199717203,2.5181416417097176e-5,-7.539927233814727e-8,0.004142070032062376,2.4862233791190885e-5,-7.473692425033855e-8,0.004142382136416294,2.4539521848464896e-5,-7.406615519129582e-8,0.004142802962387187,2.4291862821753357e-5,-7.354938496791458e-8,0.004143276515293847,2.4165133492908547e-5,-7.328171206236878e-8,0.004143742610608551,2.416776805253065e-5,-7.328119646301892e-8,0.004144152149564842,2.427840550811608e-5,-7.350451056510971e-8,0.004144474270556827,2.4457891470911152e-5,-7.387144252687797e-8,0.004144697408744952,2.4660435604785124e-5,-7.428767698568889e-8,0.004144827026181618,2.484202674459949e-5,-7.466207837487929e-8,0.004144881994566124,2.4966196964502726e-5,-7.491871231531306e-8,0.0041448905048311665,2.500781452275799e-5,-7.500493400442998e-8,0.004144885711446158,2.4955282841337656e-5,-7.489617429690564e-8,0.004144901261135358,2.481120187725696e-5,-7.459741678649363e-8,0.004144966982912023,2.4591489692204364e-5,-7.41413441693972e-8,0.004145105121592094,2.4322991873659133e-5,-7.358329870301691e-8,0.004145327544473218,2.403980237268326e-5,-7.299364256044502e-8,0.004145634190738719,2.377879003345024e-5,-7.24485997969921e-8,0.0041460127758167105,2.3574818073592004e-5,-7.202053283003591e-8,0.00414643966336036,2.3455929817344242e-5,-7.17680808924154e-8,0.004146881876040019,2.343860803994068e-5,-7.172625974921142e-8,0.0041473004753961136,2.3523144481116746e-5,-7.189658153429537e-8,0.004147656007247302,2.3689506623327728e-5,-7.223811648289735e-8,0.004147916808771172,2.3895221603221915e-5,-7.266284458651311e-8,0.0041480699650081705,2.4078275121643128e-5,-7.304167053080141e-8,0.004148132195104441,2.4168654642653938e-5,-7.322864004199276e-8,0.004148154320381181,2.4109831376965727e-5,-7.310586674653458e-8,0.004148211444887462,2.388423375298592e-5,-7.263656875158706e-8,0.004148377033934869,2.3528252738308904e-5,-7.189610084153054e-8,0.004148691963497075,2.3123109596003326e-5,-7.105280147716092e-8,0.0041491473031022115,2.27629923552026e-5,-7.030185625864194e-8,0.004149691355374006,2.251899382813585e-5,-6.979067613092937e-8,0.004150253959921051,2.2418989460666156e-5,-6.957735617198645e-8,0.0041507716459602394,2.2449203170718728e-5,-6.963393426794152e-8,0.0041512023452277315,2.2568972898863263e-5,-6.987681903782312e-8,0.004151528686471275,2.2727414027209948e-5,-7.020106669410957e-8,0.004151754402958528,2.287579296648152e-5,-7.050582576156142e-8,0.004151898371708361,2.2974592076086222e-5,-7.070894000466604e-8,0.004151988885126911,2.2996670531363484e-5,-7.075363347500511e-8,0.004152058955955876,2.2928322974470473e-5,-7.061092750138042e-8,0.004152142382845093,2.2769356506527704e-5,-7.02799821925708e-8,0.0041522701226427315,2.253246200945357e-5,-6.978684571499767e-8,0.004152466791086021,2.2241707192617996e-5,-6.91812637823709e-8,0.004152747431065876,2.192983419561754e-5,-6.853098876725601e-8,0.004153115009949348,2.163416853510276e-5,-6.791329347391853e-8,0.004153559267504416,2.1391372281000134e-5,-6.740420502635174e-8,0.004154057371060857,2.1231670864169294e-5,-6.706668724391143e-8,0.004154576533781043,2.1173336928637963e-5,-6.693925978559595e-8,0.004155078480972005,2.121824985076246e-5,-6.702665399660066e-8,0.00415552544495053,2.1349266802329204e-5,-6.729405133405011e-8,0.004155887326128362,2.153005321203464e-5,-6.76663910045802e-8,0.004156149549489265,2.1708297200182368e-5,-6.803485371706521e-8,0.004156320429207047,2.18236504091612e-5,-6.827342868724723e-8,0.004156435436193511,2.1821325191162423e-5,-6.826745995209362e-8,0.004156554325266331,2.1670061717922965e-5,-6.795132318021076e-8,0.004156747395736589,2.137880483492358e-5,-6.734326680703699e-8,0.004157071827894007,2.100211751024774e-5,-6.655662407843876e-8,0.004157547507220719,2.0626045399976664e-5,-6.577030263586701e-8,0.004158146618620178,2.033725265562143e-5,-6.516458127082557e-8,0.0041588047435924405,2.0191197783449442e-5,-6.485500848833399e-8,0.00415944679960301,2.0196654226797564e-5,-6.486025586921148e-8,0.004160012347865569,2.0321627878139327e-5,-6.51143438105989e-8,0.004160468885463152,2.0512010737360385e-5,-6.550526134746365e-8,0.004160812154099564,2.071068901280456e-5,-6.591452917912113e-8,0.004161059067630895,2.087014425419266e-5,-6.624331294613351e-8,0.004161239040043181,2.095792204410952e-5,-6.642382604808944e-8,0.004161386829742425,2.095738077188751e-5,-6.642102047979822e-8,0.0041615375835493676,2.0866361049708102e-5,-6.622998144256762e-8,0.004161723445766619,2.069540030448162e-5,-6.587231810027344e-8,0.004161970833005958,2.0465957657424777e-5,-6.53924752623177e-8,0.004162297807662163,2.0208374532718804e-5,-6.485342857751e-8,0.004162711465524075,1.9958972538912966e-5,-6.433060157681065e-8,0.004163205788963567,1.9755721872438256e-5,-6.390289279020207e-8,0.004163760874885751,1.9632401292486634e-5,-6.364064398012052e-8,0.0041643445126078645,1.9611945515193513e-5,-6.359191191485507e-8,0.004164916661599382,1.9700370056451175e-5,-6.376982675484982e-8,0.004165436593260296,1.9883038081479463e-5,-6.414465536185601e-8,0.004165871533002719,2.0124840290481865e-5,-6.464389273479223e-8,0.004166204973161034,2.03750141868381e-5,-6.516203187808346e-8,0.0041664427071129,2.0576291719662896e-5,-6.557950750839939e-8,0.004166614831251215,2.067725739446178e-5,-6.578854573835485e-8,0.004166772201513261,2.064596860090837e-5,-6.572180046924913e-8,0.004166976394844767,2.0481684872547044e-5,-6.537706967734264e-8,0.004167283762105637,2.0220289969068403e-5,-6.482876722062341e-8,0.0041677270966903575,1.9928853053708316e-5,-6.42166276496646e-8,0.004168301889621721,1.9687639520167372e-5,-6.370817178698891e-8,0.004168964945397345,1.9564346141463034e-5,-6.344493463573707e-8,0.0041696482095524585,1.9591663234778752e-5,-6.349560115607152e-8,0.004170281928490304,1.975909669494271e-5,-6.383883261318782e-8,0.004170815776114936,2.002177562328637e-5,-6.438149484450375e-8,0.004171229165072177,2.0319307693815556e-5,-6.499787658365365e-8,0.004171529641595815,2.0594371506068787e-5,-6.556842529790701e-8,0.004171744205095692,2.08044574697309e-5,-6.600426377969002e-8,0.004171909319060356,2.0925909999591906e-5,-6.625570255367975e-8,0.004172063035543002,2.095283945319605e-5,-6.631007474738575e-8,0.004172240006446445,2.0893942567726186e-5,-6.618518936112582e-8,0.004172468631381149,2.0769185793469826e-5,-6.592244924085984e-8,0.00417276921141435,2.0606998287037323e-5,-6.558098507505531e-8,0.004173152263607924,2.044171213681954e-5,-6.523229587640529e-8,0.004173616699217774,2.0310521591751063e-5,-6.49539193513707e-8,0.004174148228173609,2.0249146804649307e-5,-6.482044670278411e-8,0.0041747190205534725,2.0285797724636808e-5,-6.489100076513135e-8,0.004175290038969232,2.043401685070224e-5,-6.519431780277011e-8,0.004175817138082009,2.0686286120805764e-5,-6.571531492271147e-8,0.004176260742955059,2.1011275247548487e-5,-6.638915896100802e-8,0.004176596947866172,2.135738903704526e-5,-6.710846106930013e-8,0.004176826283818876,2.1663316572518304e-5,-6.774516430718877e-8,0.004176976440504031,2.187329985370935e-5,-6.818241888125293e-8,0.004177097171342621,2.1952541600749897e-5,-6.834687461472092e-8,0.004177248393652027,2.1897850265493772e-5,-6.823110493770005e-8,0.004177484698447774,2.1740143881249863e-5,-6.789904756326871e-8,0.004177840456289382,2.153777152476557e-5,-6.74722389787032e-8,0.004178319648003268,2.1361956093379974e-5,-6.709951969906079e-8,0.004178893720907776,2.1277850737766288e-5,-6.69174602353876e-8,0.004179508920172153,2.1326593435868438e-5,-6.701273548062968e-8,0.00418010143870764,2.1514398644594126e-5,-6.739909921106913e-8,0.004180615325979776,2.181278040040501e-5,-6.801760816720763e-8,0.004181016588925626,2.2169477458321236e-5,-6.875930338309788e-8,0.004181298828271539,2.2524986894682156e-5,-6.949975199756988e-8,0.004181480040607371,2.282791399696808e-5,-7.013122390191389e-8,0.0041815939531634075,2.304443453220907e-5,-7.058260201965475e-8,0.004181680312312281,2.3160968578745368e-5,-7.082508197011263e-8,0.0041817771738139765,2.31820016723154e-5,-7.086767934850143e-8,0.004181916138040746,2.3125777208913207e-5,-7.074824050457918e-8,0.004182119981389813,2.301988109644779e-5,-7.052420786013162e-8,0.004182401587912403,2.2897560902910874e-5,-7.026493333350233e-8,0.004182763226082177,2.279464572132352e-5,-7.004528039888718e-8,0.004183195714757309,2.27463722411251e-5,-6.993905040066949e-8,0.0041836776903782045,2.2783245722880823e-5,-7.001037080800247e-8,0.004184175936522711,2.2925337371297516e-5,-7.030174363642383e-8,0.004184648351533992,2.3175376573468616e-5,-7.081948145094982e-8,0.00418505106926234,2.351265779926658e-5,-7.152078397866612e-8,0.00418534981740814,2.3891456557676195e-5,-7.231026107348822e-8,0.004185532699444083,2.4247798955379997e-5,-7.305402455302344e-8,0.0041856186975773695,2.4515523630203316e-5,-7.361333203789702e-8,0.004185656116733408,2.4647127383329684e-5,-7.388829334143641e-8,0.004185709463990267,2.4630561585255983e-5,-7.385309068068146e-8,0.004185839553237669,2.4494045601495442e-5,-7.356612233607162e-8,0.004186085175026919,2.4297013898756418e-5,-7.315119149276783e-8,0.004186453058714402,2.4111865678345753e-5,-7.275951997366621e-8,0.00418691819641979,2.4003918546233812e-5,-7.252797509274851e-8,0.004187432570247736,2.4015686123816057e-5,-7.254618294928173e-8,0.004187938527366445,2.4158751006996613e-5,-7.283932258420115e-8,0.00418838289655064,2.4413937365967342e-5,-7.336815666881627e-8,0.004188728513422404,2.4738606360928003e-5,-7.404399556996649e-8,0.00418896077263449,2.5078536869024493e-5,-7.475342352649681e-8,0.004189088187108331,2.5380979408035573e-5,-7.538568393181177e-8,0.004189137637378765,2.560542386655624e-5,-7.585541248978948e-8,0.004189146482758514,2.5729746333905715e-5,-7.611571356090715e-8,0.004189154226481784,2.5751295531856018e-5,-7.616056328669566e-8,0.004189195811872894,2.5684118435083626e-5,-7.601902615037475e-8,0.004189297432699497,2.55542284301067e-5,-7.574531169066045e-8,0.004189474640743976,2.539461358412779e-5,-7.54082984053367e-8,0.004189731923761839,2.5240920754474522e-5,-7.508253449426259e-8,0.004190062893369365,2.5127892543049684e-5,-7.484086743090381e-8,0.004190450577587119,2.508605327542561e-5,-7.474758404267058e-8,0.004190867863493793,2.5137902888573805e-5,-7.48504270355493e-8,0.004191278851066964,2.5293029167128904e-5,-7.517021445445091e-8,0.004191642553303303,2.55423836176811e-5,-7.568861108228818e-8,0.004191920429727899,2.585359199989586e-5,-7.633807975528864e-8,0.004192087961726734,2.6171043691637975e-5,-7.700197953776512e-8,0.0041921473996541884,2.6425138639552714e-5,-7.753404214212685e-8,0.004192134962329874,2.655208648022618e-5,-7.780007245043969e-8,0.004192114992464122,2.6518357750800253e-5,-7.772933711625707e-8,0.004192159595389882,2.6337159580545134e-5,-7.734907825665287e-8,0.0041923223662205,2.6066037508450072e-5,-7.677941655751047e-8,0.004192619875803577,2.578592305862587e-5,-7.618950486964727e-8,0.0041930293080447165,2.557321200031067e-5,-7.57392457018824e-8,0.004193500258489232,2.5478197525003033e-5,-7.553431849801728e-8,0.004193972401104941,2.5516253407646417e-5,-7.560771560475328e-8,0.004194391412284077,2.5670481527066318e-5,-7.592504671513956e-8,0.004194719476384159,2.5901118869691845e-5,-7.640387556528128e-8,0.004194939943894964,2.6157253045760205e-5,-7.693795310378307e-8,0.004195057196908215,2.6387965736528168e-5,-7.742045708403442e-8,0.004195093049339342,2.655137914482246e-5,-7.776307074307687e-8,0.0041950809049979216,2.662075619193178e-5,-7.790902792572845e-8,0.0041950589164355375,2.6587196549228087e-5,-7.783901651533447e-8,0.004195063418449753,2.6459035460426867e-5,-7.75700484300396e-8,0.004195123687424457,2.6258649342688074e-5,-7.714875237095379e-8,0.004195258624765763,2.6017731648806405e-5,-7.664139315682479e-8,0.0041954753979068695,2.5772178721423704e-5,-7.612311259338277e-8,0.004195769575099257,2.5557431308106203e-5,-7.566822001278618e-8,0.004196126138573454,2.540453466231477e-5,-7.534204817948078e-8,0.004196520954855405,2.53367037714102e-5,-7.51938225051339e-8,0.004196922622790946,2.5365966871741377e-5,-7.524954946219042e-8,0.004197295156724912,2.5489504985313087e-5,-7.550410520029874e-8,0.004197602564194241,2.5685951525308174e-5,-7.591317047680027e-8,0.004197816369561635,2.5913292788382522e-5,-7.638861304882352e-8,0.004197925960352721,2.6111518336327034e-5,-7.68040568734833e-8,0.004197949030411529,2.6213720596972247e-5,-7.701841069760118e-8,0.004197935777056729,2.6166841984154432e-5,-7.691972134593537e-8,0.004197959246279704,2.5955973534895593e-5,-7.647632694596954e-8,0.004198090449018128,2.561816100677808e-5,-7.576574198158926e-8,0.0041983690577137925,2.523320397695459e-5,-7.495518310321368e-8,0.00419878704502883,2.4893403872054307e-5,-7.423809664192561e-8,0.004199294657828197,2.466944744060831e-5,-7.37627848726335e-8,0.004199822567905109,2.4590529631573546e-5,-7.35909004360926e-8,0.004200305861270729,2.4644214422214637e-5,-7.369713717322046e-8,0.0042006995521685,2.478930388189759e-5,-7.399597656866322e-8,0.0042009837510207735,2.497203494463084e-5,-7.437531825774549e-8,0.004201161612568837,2.5139530804678885e-5,-7.472443695283559e-8,0.0042012538478359,2.524867550071118e-5,-7.495254886807737e-8,0.004201292331705662,2.527094607106964e-5,-7.49991216701699e-8,0.00420131393742547,2.5194311755950153e-5,-7.483814941996342e-8,0.004201354951284227,2.502295376661067e-5,-7.447781373617757e-8,0.0042014462866753815,2.4775206437341213e-5,-7.395626000164893e-8,0.004201609778427287,2.448005996210069e-5,-7.333420007618452e-8,0.004201855844869758,2.4172631007671907e-5,-7.268529378705414e-8,0.004202182698645817,2.3889171851144942e-5,-7.208562808425933e-8,0.004202577017310062,2.3662279170995062e-5,-7.160372968477706e-8,0.004203015758641201,2.351672818202007e-5,-7.129194406720078e-8,0.004203468829726377,2.3466037764782944e-5,-7.11792747736706e-8,0.004203902457944527,2.3509754658052647e-5,-7.126556074908164e-8,0.004204283346550584,2.3631449505063676e-5,-7.151698648158335e-8,0.004204584061959764,2.3797752657327603e-5,-7.186374646115213e-8,0.0042047900364866496,2.3959694992948275e-5,-7.22027000677904e-8,0.0042049075001769935,2.4058568751254713e-5,-7.240978381987185e-8,0.004204969667533672,2.4038460412971196e-5,-7.23666645880367e-8,0.004205036113172845,2.386531479855544e-5,-7.200115046387884e-8,0.004205179685910332,2.3546624248548318e-5,-7.132872503889457e-8,0.0042054607744250174,2.313929579412769e-5,-7.046897812798647e-8,0.00420589989798239,2.27347232082449e-5,-6.961404483515537e-8,0.004206466015888612,2.242427014344388e-5,-6.895601774624227e-8,0.004207089445384607,2.2264274521212205e-5,-6.861351443079364e-8,0.004207690765000283,2.2260358548173973e-5,-6.859880736537034e-8,0.004208207794816714,2.2375384589948536e-5,-6.883449347627073e-8,0.004208608832725967,2.2550256047354552e-5,-6.919700655526116e-8,0.004208892174623421,2.2724239908018644e-5,-6.955907850228315e-8,0.0042090782601795,2.284808125073127e-5,-6.981713891001085e-8,0.004209200296160906,2.2889691428958756e-5,-6.990328564693268e-8,0.004209296350094005,2.283492007234416e-5,-6.97870980120373e-8,0.004209403565906254,2.268592751806816e-5,-6.947247890090181e-8,0.004209554005893156,2.2458595057271006e-5,-6.899240475833879e-8,0.004209771538720962,2.2179411033598958e-5,-6.840241608206303e-8,0.00421006954601963,2.1881833085248087e-5,-6.777287276654248e-8,0.0042104495193963105,2.1602047665670182e-5,-6.717991814560981e-8,0.0042109008189892645,2.137421177667367e-5,-6.669544160393412e-8,0.004211401868604031,2.1225620883696596e-5,-6.637699983388579e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json new file mode 100644 index 000000000..ea9010347 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":25000,"numberOfSamples":1000,"samples":[0.0042119228229227776,2.117242668988509e-5,-6.625892772821196e-8,0.00421242951621424,2.1216421815835606e-5,-6.634559593072919e-8,0.004212888396602669,2.1343324948057996e-5,-6.660764965178544e-8,0.004213272077688695,2.1522955697259163e-5,-6.698208934125665e-8,0.004213565153061029,2.171164617537871e-5,-6.737707330135306e-8,0.004213769823711238,2.1857483451438128e-5,-6.768286051317844e-8,0.004213910198871436,2.190927122349849e-5,-6.779084064030356e-8,0.004214032922657624,2.1829493537962127e-5,-6.762116816618272e-8,0.004214200852587069,2.160938196621095e-5,-6.71548148810529e-8,0.004214477322022827,2.1280462370500936e-5,-6.645802296286292e-8,0.004214903100503305,2.091373094832423e-5,-6.568048925307495e-8,0.004215475880773675,2.0600151223130995e-5,-6.501412598684065e-8,0.004216145898744334,2.0417442948628495e-5,-6.462301093688222e-8,0.004216833579580056,2.0400376819345232e-5,-6.458079850055622e-8,0.004217459970123071,2.053157579362677e-5,-6.485132807375522e-8,0.004217972502130171,2.0755398012646987e-5,-6.531780445307867e-8,0.004218354775674382,2.100283844312381e-5,-6.583514699901046e-8,0.004218621473875984,2.1213061032032433e-5,-6.627523661803764e-8,0.004218806437975746,2.1344829856945014e-5,-6.655094448616457e-8,0.0042189509605779895,2.1378863630848206e-5,-6.662115374902181e-8,0.004219095409105211,2.1315105530184897e-5,-6.648517553484988e-8,0.004219274283414654,2.1168357298914947e-5,-6.617374421911176e-8,0.0042195135261831026,2.0964046864058137e-5,-6.574021509881736e-8,0.0042198289277669875,2.0734467344645254e-5,-6.52526270229363e-8,0.004220225061155502,2.0515161357874974e-5,-6.478598265567233e-8,0.004220694716869642,2.0341013243499278e-5,-6.441392136515793e-8,0.004221219187507694,2.024179213121955e-5,-6.419932023758131e-8,0.004221769966808666,2.0237378693578086e-5,-6.418431147260425e-8,0.0042223122778394,2.033346797221274e-5,-6.438129961003437e-8,0.004222810379006872,2.051879431947242e-5,-6.47670814186124e-8,0.0042232340746766765,2.0764877854194254e-5,-6.528213506219293e-8,0.004223565395287756,2.1029006330211313e-5,-6.583665389689409e-8,0.004223804128873946,2.1260585340412296e-5,-6.632374566900979e-8,0.004223970876957566,2.1410361180324564e-5,-6.663887945834917e-8,0.004224106369310762,2.14415465441151e-5,-6.670356203916723e-8,0.0042242657983087495,2.134115638552841e-5,-6.648957977625455e-8,0.004224507399419219,2.112855412696634e-5,-6.603731852191216e-8,0.004224876159364572,2.085686994094544e-5,-6.545888489491197e-8,0.004225386732174476,2.0603067839644234e-5,-6.491709513429656e-8,0.004226013160943935,2.0446027498544085e-5,-6.457905743766462e-8,0.004226693128151923,2.043932475634994e-5,-6.45585312505897e-8,0.004227347974683707,2.059163946791718e-5,-6.487440472016235e-8,0.004227909703767054,2.086563813515611e-5,-6.544822544194953e-8,0.004228341362829596,2.1195202646072075e-5,-6.614053530613902e-8,0.004228642402086946,2.1510125092377255e-5,-6.680302045077538e-8,0.004228840647210552,2.1755805619472572e-5,-6.732012834688552e-8,0.004228978598476052,2.190213346099413e-5,-6.762786101905045e-8,0.0042291010496863166,2.194302357527711e-5,-6.771287814009528e-8,0.0042292470592518745,2.1891133200885374e-5,-6.760145956889963e-8,0.004229446049571827,2.1771621167792976e-5,-6.73464393792848e-8,0.004229716468222322,2.1616855272094037e-5,-6.701607817399818e-8,0.004230065522044785,2.146232151279719e-5,-6.668539495546459e-8,0.004230489183412082,2.134317016838142e-5,-6.642880367863476e-8,0.004230972374903851,2.12906866823376e-5,-6.631261090471438e-8,0.004231489771832401,2.132821216102119e-5,-6.638640134078987e-8,0.00423200798906628,2.1466603019303647e-5,-6.667347585959588e-8,0.004232489876042049,2.1700112891328544e-5,-6.716214332465655e-8,0.004232901078212662,2.2004253231900497e-5,-6.780110661848243e-8,0.0042332180115707534,2.233735468493118e-5,-6.850259405413669e-8,0.004233435294041164,2.264690582136456e-5,-6.915558955274176e-8,0.004233570081750011,2.288024682846949e-5,-6.964836523197342e-8,0.004233661175459219,2.299740945877807e-5,-6.989570010663392e-8,0.00423376212210765,2.298272324126421e-5,-6.986362270031153e-8,0.004233929261141872,2.2851697779811398e-5,-6.958422181245012e-8,0.004234207211841524,2.2650495622957343e-5,-6.915475814576002e-8,0.004234615425259081,2.2446809897144912e-5,-6.871849564593151e-8,0.004235140014210337,2.231313047848069e-5,-6.842929415254376e-8,0.004235734703969059,2.230620625541042e-5,-6.840801170460767e-8,0.004236332511029088,2.2449320169543877e-5,-6.870475534746973e-8,0.004236865352914913,2.2724777630289437e-5,-6.928273029224622e-8,0.004237284245080581,2.3080599212484498e-5,-7.003223837757029e-8,0.004237571736415137,2.3448608166368112E-05,-7.080893495957507e-8,0.004237742342841121,2.3765484141766943e-5,-7.147847424023432e-8,0.004237833085799702,2.3988137660734125e-5,-7.194917126202141e-8,0.004237890189882673,2.4099447950975766e-5,-7.218425790080511e-8,0.004237957595590428,2.4105773514283147e-5,-7.219670738284095e-8,0.004238069919582637,2.4030269658422523e-5,-7.203516533111505e-8,0.004238249618365501,2.39056679238968e-5,-7.176871236223504e-8,0.004238506777009503,2.376842054507791e-5,-7.14744782604305e-8,0.004238839960336995,2.3654485763485328e-5,-7.122870298290076e-8,0.004239237195182148,2.359612316887198e-5,-7.109993006965748e-8,0.00423967689584437,2.3618836515735366e-5,-7.114251881836275e-8,0.00424012919339875,2.3737839999153642e-5,-7.138914208350213e-8,0.004240558555859129,2.3954028829091893e-5,-7.184219988672258e-8,0.004240928632216016,2.425035359666654e-5,-7.246603747851151e-8,0.004241209686151803,2.4590515496345863e-5,-7.31840475098621e-8,0.004241387602314709,2.4922420371615704e-5,-7.388587732093796e-8,0.00424147157146284,2.5187961743731242e-5,-7.44481247159738e-8,0.004241496426214619,2.5338027012562994e-5,-7.476619148263978e-8,0.004241516665120159,2.53481927416961e-5,-7.478765248745461e-8,0.004241592614544567,2.5228750538790737e-5,-7.453362965654456e-8,0.004241773093309497,2.5024267468472517e-5,-7.409800415341168e-8,0.004242080828456248,2.480219962828495e-5,-7.362345063271682e-8,0.004242505642303187,2.463448176734963e-5,-7.326256531566072e-8,0.004243007230734643,2.4578174120876555e-5,-7.313688342900408e-8,0.004243526169055569,2.4660842178798045e-5,-7.330574786416262e-8,0.004243999680967984,2.4874463362710607e-5,-7.375310120416703e-8,0.0042443776570801894,2.5179193207145155e-5,-7.439515440950807e-8,0.004244634361830328,2.551555261019759e-5,-7.510602778954726e-8,0.0042447725833558445,2.5820973313206575e-5,-7.575282082432305e-8,0.004244819645713096,2.6045265557054406e-5,-7.622855268466984e-8,0.004244817657500771,2.6160427534331055e-5,-7.647316726976563e-8,0.004244812063322777,2.6162998914343238e-5,-7.647870316326475e-8,0.004244842201737484,2.6070232563465724e-5,-7.628128320228887e-8,0.004244935733735506,2.5913058455968382e-5,-7.594622609168704e-8,0.004245106822619801,2.572872050475992e-5,-7.555241538069889e-8,0.004245356804103788,2.5554802441117856e-5,-7.517960510152853e-8,0.004245675934005867,2.5425040582432493e-5,-7.48995353162313e-8,0.004246045266184226,2.53664067068817e-5,-7.47697603900719e-8,0.004246438382144604,2.5396616745149382e-5,-7.482836234073875e-8,0.004246823330043397,2.552139706651534e-5,-7.508808847131201e-8,0.004247165619004974,2.5731389115804212e-5,-7.55296442638736e-8,0.004247433275937945,2.5999499171301278e-5,-7.609589214748047e-8,0.0042476044631466715,2.6280705900143398e-5,-7.669131102787287e-8,0.004247676613223559,2.6517177808645175e-5,-7.719284879324458e-8,0.004247673609435171,2.6650746595202952e-5,-7.747651982304646e-8,0.004247645708001549,2.66412350943042e-5,-7.74564776254694e-8,0.004247658309913079,2.6483856580341366e-5,-7.712204781528955e-8,0.004247771456591539,2.6216061034290582e-5,-7.655226898516179e-8,0.004248018640476505,2.590800755606473e-5,-7.589568494417051e-8,0.004248395212570714,2.563994069145496e-5,-7.532244221725396e-8,0.004248861259489376,2.5477021622606432e-5,-7.497104067998361e-8,0.00424935590167607,2.5452038700586148e-5,-7.491170753332291e-8,0.004249815624233812,2.5560514080836893e-5,-7.513587325912593e-8,0.0042501900081495896,2.5766672608186727e-5,-7.556853344785969e-8,0.004250451383611506,2.6015861961209102e-5,-7.609427999654669e-8,0.0042505977356969114,2.6248914551540066e-5,-7.658758795271883e-8,0.0042506498090625795,2.6415031884901112e-5,-7.694017883491166e-8,0.004250644097952955,2.648096828203765e-5,-7.708071584908982e-8,0.0042506237812728765,2.6435303290169302e-5,-7.698415129034421e-8,0.004250629816343292,2.6287691938557887e-5,-7.667036324682085e-8,0.0042506940711203485,2.6064200669597658e-5,-7.619435383064163e-8,0.00425083548128867,2.5800616341765846e-5,-7.563201480582007e-8,0.004251059186062351,2.5535598231431913e-5,-7.506549954746807e-8,0.004251357853991461,2.5304981396812947e-5,-7.457106386619228e-8,0.004251714123475805,2.5137752884505912e-5,-7.421052674232194e-8,0.004252103288002902,2.5053445751813735e-5,-7.402578044122805e-8,0.0042524958808914486,2.5060282096586535e-5,-7.403485203242214e-8,0.004252860347046862,2.5153483119387155e-5,-7.422821487858902e-8,0.004253166420302202,2.5313592833064807e-5,-7.4565027741937e-8,0.004253390056795452,2.5505445065978426e-5,-7.497072826604751e-8,0.004253520373611728,2.567954717105097e-5,-7.533987563241299e-8,0.004253567583483577,2.5778553226866115e-5,-7.555000192971296e-8,0.004253568477479618,2.57508981459835e-5,-7.549083696491824e-8,0.004253583802551681,2.5570092233629636e-5,-7.51055603806773e-8,0.004253683035294351,2.5251865633977112e-5,-7.44273175308893e-8,0.0042539191944363595,2.4857202588394434e-5,-7.35855734003273e-8,0.004254305764216735,2.447438286380503e-5,-7.276784994537231e-8,0.004254809815918776,2.4186839495990022e-5,-7.215147164839955e-8,0.004255365549942023,2.40441206534225e-5,-7.184200794898621e-8,0.004255899200387112,2.4050089820884473e-5,-7.184826829956902e-8,0.0042563516080044266,2.416972185021108e-5,-7.209662433728606e-8,0.004256690396141003,2.434605252160264e-5,-7.246675786316027e-8,0.0042569115892744334,2.4517943449023026e-5,-7.282912443145628e-8,0.0042570344588616455,2.463347637775471e-5,-7.30732558512375e-8,0.0042570934805204125,2.465775417313392e-5,-7.312438614433928e-8,0.004257129932313604,2.4575925834567138e-5,-7.295011734563332e-8,0.0042571843494951115,2.4392667825468296e-5,-7.255962537821784e-8,0.00425729039774817,2.4129023933815476e-5,-7.199717208281165e-8,0.004257470606229811,2.3817370327804808e-5,-7.133146006679518e-8,0.004257734255741909,2.349544247400287e-5,-7.064283667735547e-8,0.004258077393204028,2.3200390137071024e-5,-7.001050679824002e-8,0.004258484618862725,2.2963666553012255e-5,-6.950158216921607e-8,0.004258932027056634,2.2807293789006354e-5,-6.916316297269846e-8,0.0042593906153518026,2.2741586385370254e-5,-6.901757022449099e-8,0.0042598297434363165,2.276399055898611e-5,-6.905989169541386e-8,0.004260220606168873,2.2858651267932304e-5,-6.925694232532747e-8,0.004260539991874552,2.2996585299082128e-5,-6.954740578872719e-8,0.004260774793749827,2.3136869567961894e-5,-6.984415171021355e-8,0.004260927452055153,2.3230106921002925e-5,-7.004155848425731e-8,0.004261021309681241,2.3226075701983406e-5,-7.003196358517582e-8,0.004261102938290243,2.308688722779646e-5,-6.9733984200722e-8,0.004261236712509181,2.2804045770392858e-5,-6.912910597515336e-8,0.004261487734137989,2.2412204909363093e-5,-6.829103484152083e-8,0.004261895857940792,2.1987951130290533e-5,-6.738297115674651e-8,0.004262453748847359,2.1626559517556065e-5,-6.660796308383029e-8,0.004263104835077354,2.14049565306401e-5,-6.613002381831203e-8,0.004263765230072934,2.1352073118542486e-5,-6.601108302348439e-8,0.004264356348996169,2.14434400684497e-5,-6.619951822339648e-8,0.00426482929740014,2.1618744627758198e-5,-6.656745990661841e-8,0.004265171943391067,2.1807560186110623e-5,-6.696539410340849e-8,0.004265402331610535,2.194966411597293e-5,-6.726522140368924e-8,0.004265556764276095,2.2005321336605362e-5,-6.738204521109695e-8,0.004265678484351986,2.1957407300082035e-5,-6.727876331639272e-8,0.004265809259589074,2.1808924150594526e-5,-6.696101507231523e-8,0.004265983904005325,2.1578682448027443e-5,-6.646826954849454e-8,0.004266226920993157,2.1296504146896058e-5,-6.586379168206377e-8,0.004266550629286272,2.0998265292050864e-5,-6.522408289024045e-8,0.004266954602654954,2.072086530767614e-5,-6.46280184319503e-8,0.0042674264408546,2.0497353315112702e-5,-6.414629674705478e-8,0.004267943861511287,2.0352576012947905e-5,-6.383209365453901e-8,0.004268477960877023,2.0299833661802612e-5,-6.371398436365584e-8,0.004268997253092252,2.0338959047789847e-5,-6.379193925228933e-8,0.004269472004022922,2.0455923406950072e-5,-6.403649435074647e-8,0.004269878504480831,2.0623872099556896e-5,-6.439082513227808e-8,0.004270203091943123,2.0805512560485156e-5,-6.477560803074754e-8,0.004270445852852126,2.0956944805511876e-5,-6.509700275244613e-8,0.004270623800199121,2.10334314266037e-5,-6.525895403540025e-8,0.004270772558072353,2.0997890319405713e-5,-6.518152289098647e-8,0.00427094441011345,2.083220432249813e-5,-6.482534637528951e-8,0.004271199798210908,2.05492416329248e-5,-6.421755267416815e-8,0.00427159041645784,2.0199863007888447e-5,-6.346677840095314e-8,0.004272137010630017,1.986641311092636e-5,-6.274914812415897e-8,0.004272812866192905,1.9637907019181664e-5,-6.225512618287865e-8,0.004273546661830289,1.957484111226967e-5,-6.211428300886088e-8,0.004274248084309201,1.9683554754882735e-5,-6.234052528862284e-8,0.004274842584556,1.9916585609271047e-5,-6.283284863669002e-8,0.004275294989396107,2.0196932839426866e-5,-6.34271221447608e-8,0.004275612111248886,2.044876157713103e-5,-6.396157774097112e-8,0.004275829854443942,2.0618302854561106e-5,-6.432132893338302e-8,0.004275996344867708,2.068048102350494e-5,-6.445246254988373e-8,0.004276158761153353,2.0635703336763096e-5,-6.435525871581819e-8,0.00427635575964747,2.050278681984088e-5,-6.406929194779216e-8,0.004276614264766545,2.03118344130943e-5,-6.365844604760266e-8,0.004276948681532183,2.0098462742130343e-5,-6.319870838452115e-8,0.00427736112987467,1.9899240304877655e-5,-6.276838480380487e-8,0.004277842211255956,1.974773290141609e-5,-6.243949971073313e-8,0.004278372391904025,1.967077619426468e-5,-6.226968673760751e-8,0.004278924276628769,1.9684968915617704e-5,-6.229464867897638e-8,0.00427946603046503,1.9793798937027695e-5,-6.252207128612635e-8,0.004279965907331355,1.9986115124125946e-5,-6.292842834492383e-8,0.004280397398965965,2.0236567080278434e-5,-6.345990398536185e-8,0.004280744247696593,2.0508303055502708e-5,-6.403801521126411e-8,0.004281004505802116,2.075787626038736e-5,-6.45698971255669e-8,0.004281192901995228,2.0941958152062637e-5,-6.496252518206134e-8,0.004281340930710332,2.1025255578912166e-5,-6.513969573609285e-8,0.004281494037741554,2.0988991621400003e-5,-6.506040387677097e-8,0.004281705020143845,2.083884172795236e-5,-6.473613988226346e-8,0.004282022932066112,2.0609966237029076e-5,-6.424190093837948e-8,0.004282478182800925,2.0365345667199266e-5,-6.371269223823294e-8,0.004283067616495902,2.018344302717714e-5,-6.331700549222439e-8,0.004283747241477742,2.0134651144824004e-5,-6.320619458649664e-8,0.0042844407554519515,2.0253973496551404e-5,-6.345578723847007e-8,0.004285064598384449,2.0524555265033713e-5,-6.403009214368057e-8,0.004285558228008341,2.0883667246896797e-5,-6.479498002189184e-8,0.004285903068305841,2.1248575485531713e-5,-6.557331881327865e-8,0.004286121591209917,2.1546759971092086e-5,-6.620971443688664e-8,0.004286261550244254,2.173512138139228e-5,-6.661161891835543e-8,0.004286377010822107,2.1803562222643158e-5,-6.675698118613891e-8,0.004286514639174886,2.1767962224157696e-5,-6.667927461907289e-8,0.004286707249844844,2.1659831340824737e-5,-6.644549978914754e-8,0.004286972651294204,2.1517288514130502e-5,-6.613702981233638e-8,0.004287315036407035,2.137879459328305e-5,-6.583625969488997e-8,0.004287726996196279,2.1279125575024203e-5,-6.561792724729806e-8,0.00428819142343141,2.1246497524740444e-5,-6.554282703858169e-8,0.004288683412819257,2.1300005175710134e-5,-6.56522121072733e-8,0.004289172646002349,2.144705325197606e-5,-6.596225331674356e-8,0.004289626831671317,2.1681083267848825e-5,-6.64591918001667e-8,0.004290016489747565,2.1980505883871905e-5,-6.709706780234995e-8,0.0042903207017423875,2.2309974166205005e-5,-6.780039689973465e-8,0.004290532704681695,2.2624802256956494e-5,-6.847351420232322e-8,0.004290663720481053,2.2878545281189634e-5,-6.901668815447957e-8,0.004290743428588021,2.3032647343331645e-5,-6.934675430215987e-8,0.004290816160740989,2.3066060527652307e-5,-6.941783186631997e-8,0.004290932973482719,2.298241860165485e-5,-6.923692897416443e-8,0.004291140720082246,2.281268438762679e-5,-6.886989001401675e-8,0.004291469988513568,2.261171092999127e-5,-6.843422945885471e-8,0.0042919245712092595,2.244789438370406e-5,-6.807700264279899e-8,0.004292475971297328,2.238658804783379e-5,-6.793912075922681e-8,0.004293066649609138,2.2470558774809148e-5,-6.811318501504072e-8,0.004293623937526895,2.2703998892035536e-5,-6.860890598586648e-8,0.0042940818493636184,2.304812006375384e-5,-6.934344898792616e-8,0.004294402362672422,2.3432831436448893e-5,-7.016645002765099e-8,0.004294586104386337,2.378055743966283e-5,-7.091121590795328e-8,0.004294667795317409,2.4030920659155234e-5,-7.144780929009046e-8,0.004294700566059802,2.4155324165777983e-5,-7.171440891510901e-8,0.004294738209100082,2.4157840931771394e-5,-7.171925710040148e-8,0.0042948226573763385,2.4066452881318333e-5,-7.152192906009953e-8,0.004294978812281802,2.3921337639631674e-5,-7.120830502904449e-8,0.004295214901080934,2.3765000948817973e-5,-7.08694876550506e-8,0.004295525436407369,2.363587044291823e-5,-7.058807624485363e-8,0.004295894601684546,2.3564786623837452E-05,-7.04305813207749e-8,0.004296299122201778,2.357308522950433e-5,-7.044321503200956e-8,0.004296710657229467,2.367115187319423e-5,-7.064870539544668e-8,0.004297098295590391,2.38568917503796e-5,-7.104295898373251e-8,0.004297431906932636,2.4114275885103977e-5,-7.159190498213205e-8,0.004297686870625992,2.4412901902798002e-5,-7.223050607165677e-8,0.004297849991681794,2.4710049162891303e-5,-7.286710575334312e-8,0.00429792530231652,2.4956591162591826e-5,-7.339606327152146e-8,0.004297937372396556,2.5107015043400802e-5,-7.371925088269417e-8,0.004297929510021779,2.5131737805527713e-5,-7.377254984435431e-8,0.004297955548234345,2.5027789983162344e-5,-7.354890403274291e-8,0.004298066575615005,2.4823310836198834e-5,-7.310812995376074e-8,0.004298296552607654,2.4573070322224938e-5,-7.256747872959403e-8,0.004298651648983001,2.434559188780995e-5,-7.207413756368472e-8,0.004299106911661393,2.4205518413300738e-5,-7.176741926718479e-8,0.004299611453430702,2.4196312655059432e-5,-7.174150839999789e-8,0.0043001009376553104,2.4328171010078167e-5,-7.201924724959771e-8,0.004300514215980978,2.45747458074727e-5,-7.254478183774332e-8,0.00430080955408668,2.4880164403869278e-5,-7.319841098782959e-8,0.00430097535914321,2.5174795560467062e-5,-7.383040760602065e-8,0.004301031639911904,2.5394822709818133e-5,-7.430318462394381e-8,0.004301021854896047,2.549876742515806e-5,-7.452698087324046e-8,0.004300998826632299,2.5475424898201563e-5,-7.447707677090092e-8,0.0043010105133326326,2.5341837209243172e-5,-7.418955573869462e-8,0.00430109035070397,2.513426620792213e-5,-7.374198268112992e-8,0.004301253742716078,2.48970164755011e-5,-7.32294267491531e-8,0.004301499427306543,2.467299592201586e-5,-7.274417707510015e-8,0.0043018132999952385,2.4497627550464064e-5,-7.236262240548909e-8,0.004302172657874503,2.4395814589290057e-5,-7.213867310051331e-8,0.004302549817683467,2.4380785913499932e-5,-7.210122313442096e-8,0.0043029149958991805,2.44536492446394e-5,-7.225313252007961e-8,0.004303238964457443,2.460296377691644e-5,-7.2570238773880585E-08,0.00430349625434463,2.4804348391217722e-5,-7.300042578258291e-8,0.0043036695281246816,2.50209511462533e-5,-7.34645445614565e-8,0.0043037550770795956,2.5206324498041653e-5,-7.386254745634518e-8,0.004303768148276709,2.5311391686062272e-5,-7.408849797523384e-8,0.004303745290754547,2.5296058710614142e-5,-7.405564302472968e-8,0.0043037402219377715,2.5143263129179642e-5,-7.372674513257676e-8,0.004303811401843918,2.486984655474745e-5,-7.31375476237472e-8,0.004304003924871586,2.452738717704159e-5,-7.239861410051003e-8,0.004304332998053507,2.4189634346796077e-5,-7.166837537127397e-8,0.004304777053220583,2.3930305794275484e-5,-7.110548942813876e-8,0.0043052839373079,2.380055815885997e-5,-7.082046368346776e-8,0.004305786979287081,2.381512406074437e-5,-7.084577599968396e-8,0.004306223908680077,2.3950918898359302e-5,-7.113265222969439e-8,0.0043065521824008435,2.4156359154944985e-5,-7.157081214482665e-8,0.00430675720105395,2.4366745878058644e-5,-7.202132826384251e-8,0.00430685272341944,2.452074994873828e-5,-7.235202054839195e-8,0.0043068746876313785,2.457397362237289e-5,-7.246674040986775e-8,0.004306870807432403,2.450692094765032e-5,-7.232274420159353e-8,0.0043068889333198876,2.4326274108967804e-5,-7.193368553734489e-8,0.004306967157178836,2.4060115372153373e-5,-7.135951482856131e-8,0.004307127792060001,2.3749312473508598e-5,-7.068800846487233e-8,0.004307375847549257,2.3437998378882705e-5,-7.001424126954424e-8,0.0043077011487614265,2.316559033074148e-5,-6.942331161839482e-8,0.004308082476774727,2.296156998550824e-5,-6.897901648309085e-8,0.004308492160407662,2.2843008936849732e-5,-6.871848008341235e-8,0.00430890014225028,2.2814028032551207e-5,-6.865098180169714e-8,0.004309277281921247,2.2866200020617407e-5,-6.875880227967708e-8,0.004309598220494261,2.2979234337591817e-5,-6.899862356038913e-8,0.004309844408536244,2.3121853538730567e-5,-6.930329429478826e-8,0.0043100078615668095,2.3253479651415424e-5,-6.95853524949172e-8,0.004310095640386761,2.3328083445441076e-5,-6.974529757037752e-8,0.0043101338257101485,2.3301787131791224e-5,-6.968807200575135e-8,0.004310168187241177,2.3144787924465443e-5,-6.934892854607553e-8,0.004310257826444425,2.285531683637069e-5,-6.872365125157918e-8,0.004310459684221365,2.2469228310805165e-5,-6.788925321183882e-8,0.0043108073193948325,2.2056750050369026e-5,-6.699692997284909e-8,0.004311294032439131,2.170255209789584e-5,-6.622910378436072e-8,0.004311871307369093,2.1476062378587954e-5,-6.573553756794064e-8,0.004312465198993063,2.1407057452158824e-5,-6.558081946270183e-8,0.004313001977162613,2.147859710794636e-5,-6.572910476913147e-8,0.00431343005920553,2.1637960989153616e-5,-6.606750631843108e-8,0.004313730316577628,2.181691089414023e-5,-6.644950764688654e-8,0.004313914738250244,2.1951418489715036e-5,-6.673726332891451e-8,0.004314017860593639,2.1995240270097538e-5,-6.6830778021755e-8,0.00431408563427076,2.1926188546349096e-5,-6.668152880876458e-8,0.004314164844430976,2.1746350005664837e-5,-6.62931915957548e-8,0.00431429466372932,2.1478088191753095e-5,-6.571331506627689e-8,0.004314501024681896,2.1157447735519515e-5,-6.501929657323107e-8,0.004314794068269408,2.0826407239506826e-5,-6.430170217264929e-8,0.004315168523400873,2.0525388218328684e-5,-6.364798919827755e-8,0.00431560642180513,2.0287173353931803e-5,-6.31292183912412e-8,0.0043160812455876356,2.0132909454777427e-5,-6.279132138753954e-8,0.004316562520177888,2.007033177327738e-5,-6.265126152698634e-8,0.00431702006617794,2.00938082788825e-5,-6.269717769742918e-8,0.004317427588706235,2.018551638500187e-5,-6.28909388180351e-8,0.004317765712734754,2.0317234227004703e-5,-6.317193328846631e-8,0.004318024775138963,2.0452628316515763e-5,-6.34618604024906e-8,0.00431820770093002,2.0550394730606987e-5,-6.367139110618334e-8,0.004318332893899484,2.0569188001987255e-5,-6.371081436092053e-8,0.004318436011644906,2.04754635624101e-5,-6.350712260775898e-8,0.0043185681789404615,2.0254385622796044e-5,-6.302778494565895e-8,0.004318787523787666,1.9921423273137004e-5,-6.230594134708772e-8,0.004319142414166795,1.9528518015015e-5,-6.145372829533996e-8,0.004319650180655444,1.9156534321257355e-5,-6.064588141621515e-8,0.004320282432594846,1.8890460254098007e-5,-6.006610839445816e-8,0.00432096924731175,1.8786257539194468e-5,-5.983551079099197e-8,0.004321623889974825,1.8848028753740572e-5,-5.996331107102821e-8,0.004322174856199251,1.9029232241916958e-5,-6.03494594472305e-8,0.004322587553187694,1.9254995930678356e-5,-6.083272565155132e-8,0.004322867520357473,1.9450265918529555e-5,-6.125132934634046e-8,0.004323049667978551,1.956007946768571e-5,-6.148655784160723e-8,0.004323182862961931,1.9557648041747735e-5,-6.148015369528662e-8,0.004323316556168647,1.9443050480583164e-5,-6.123159791433297e-8,0.004323491840940722,1.9237131005163212e-5,-6.0785188942898e-8,0.004323736659978244,1.8974013586600857e-5,-6.021415798447603e-8,0.00432406401637427,1.8693883726101143e-5,-5.960523413418266e-8,0.004324472264424686,1.8436553474490432e-5,-5.904470094336049e-8,0.004324946983099295,1.8236033860153257e-5,-5.860648003866715e-8,0.004325464084859797,1.811635649105119e-5,-5.8342897748555724e-8,0.004325993794135984,1.8088868183602328e-5,-5.8278740560323874e-8,0.004326505053826906,1.8151193617222837e-5,-5.84090469392405e-8,0.004326969827564337,1.8287871460248693e-5,-5.870057233852731e-8,0.004327366867667058,1.8472348280178974e-5,-5.909613070587311e-8,0.004327684784604043,1.8669955227489085e-5,-5.952094345795759e-8,0.004327924409123366,1.8841706401499647e-5,-5.989069354469142e-8,0.004328100446453682,1.8948978694444737e-5,-6.012153384588638e-8,0.004328242207755195,1.8959396499784854e-5,-6.014285604854431e-8,0.00432839251061342,1.8854306712077532e-5,-5.991366270790545e-8,0.004328602976287375,1.8637363771232864e-5,-5.9441399495521534e-8,0.004328923808193235,1.834172061702968e-5,-5.879768517306489e-8,0.0043293877420519525,1.803074398317214e-5,-5.8119858923673065e-8,0.004329992303019424,1.7786082973530267e-5,-5.7585025996974733e-8,0.0043306904239555155,1.768141014178147e-5,-5.735306902442807e-8,0.004331400140317573,1.7751344357086818e-5,-5.749928204325917e-8,0.00433203358321681,1.797402614272783e-5,-5.79766211094402e-8,0.004332530332663138,1.828016466901793e-5,-5.8635303908857e-8,0.004332875915402321,1.858298602165903e-5,-5.928765562337491e-8,0.00433309804217549,1.8810034258350935e-5,-5.977689798049865e-8,0.004333248483983109,1.8921204984793378e-5,-6.001607106531904e-8,0.00433338344031064,1.891050947589809e-5,-5.999178553599807e-8,0.004333550076056095,1.879802272931174e-5,-5.974688447449809e-8,0.00433378028617974,1.8619161178224815e-5,-5.935746777534596e-8,0.004334089547866698,1.841532739235039e-5,-5.891288378805079e-8,0.004334478361386218,1.8227051919153682e-5,-5.8500987248132956e-8,0.004334934676237755,1.8089192813388756e-5,-5.819765687811798e-8,0.004335436753461419,1.8027479513569926e-5,-5.805910095808496e-8,0.0043359564346629785,1.805604332199269e-5,-5.8116315662884676e-8,0.004336462854060841,1.8175905259323786e-5,-5.837173979925861e-8,0.0043369265589401195,1.8374650843245116e-5,-5.8798606028170783e-8,0.0043373237749320314,1.8627644789034814e-5,-5.9343665372251605e-8,0.004337640287689868,1.8900903887741546e-5,-5.993342885257249e-8,0.004337874393414731,1.915541028175581e-5,-6.0483416036833585E-08,0.004338038508031595,1.935252810257927e-5,-6.090974291052553e-8,0.004338159117798005,1.9460134108828392e-5,-6.114232980148806e-8,0.004338274774933433,1.9459013263327866e-5,-6.113884811203717e-8,0.004338431681466829,1.9348999136279857e-5,-6.089826911602292e-8,0.004338676165081497,1.9153806772625883e-5,-6.047161761109011e-8,0.004339043688685932,1.8922294391678095e-5,-5.996487910391701e-8,0.004339545635601907,1.872276095381814e-5,-5.952661815361361e-8,0.004340158161930944,1.8627380820978457e-5,-5.9314042383671195e-8,0.004340820587457169,1.8688023122385006e-5,-5.944030774359304e-8,0.0043414499059315215,1.8912570225124942e-5,-5.992294543545765e-8,0.004341969354982378,1.9256317958197064e-5,-6.066513104038634e-8,0.00434233727438235,1.963727956575248e-5,-6.148895689362684e-8,0.004342559700425284,1.9968375421524345e-5,-6.22053917653275e-8,0.004342681194553419,2.0187890581981525e-5,-6.268039485374884e-8,0.004342762928135588,2.0273446998614515e-5,-6.286515201466919e-8,0.004342861762115175,2.0238340874590014e-5,-6.278807051788223e-8,0.0043430181177510525,2.0118621313219873e-5,-6.25268278416331e-8,0.004343252686041884,1.9959504096147545e-5,-6.217910056180777e-8,0.004343568466291725,1.9805367104343365e-5,-6.184105171446118e-8,0.004343954731686096,1.9693836953182042e-5,-6.159455561595036e-8,0.004344390973704534,1.9652723436851773e-5,-6.150043408182522e-8,0.004344850331140559,1.969838524407601e-5,-6.159471002910778e-8,0.004345302792489047,1.9834740731576415e-5,-6.188629404236862e-8,0.004345718569954192,2.0052786388798823e-5,-6.235588467085406e-8,0.004346071890108299,2.0330942481172956e-5,-6.295676357140448e-8,0.004346345120939216,2.0636843362656404e-5,-6.361874562488397e-8,0.004346532649407227,2.0931092520010435e-5,-6.425633112670948e-8,0.004346643556812209,2.1172987348254808e-5,-6.478105282775598e-8,0.004346702139067369,2.1327622981692872e-5,-6.511679997367014e-8,0.004346745608778673,2.137326837845882e-5,-6.521581332631904e-8,0.004346818808370958,2.130755124320618e-5,-6.507223672428581e-8,0.004346966320702236,2.1150975510158874e-5,-6.472999399619078e-8,0.004347222824520035,2.0946473775532036e-5,-6.428207114555517e-8,0.004347603087958219,2.0753784072168932e-5,-6.385844812624413e-8,0.004348093942432825,2.0637814013072452e-5,-6.36007815326696e-8,0.004348651739160019,2.0651659508830847e-5,-6.36252925003523e-8,0.0043492091234758985,2.0818025289423062e-5,-6.398208836552688e-8,0.004349692649033529,2.1116545144798856e-5,-6.462735152225057e-8,0.004350046851532632,2.148558579412229e-5,-6.542717677117046e-8,0.004350254077818288,2.1841590704683874e-5,-6.619972247540033e-8,0.004350339218690546,2.2108334127427978e-5,-6.677897296497183e-8,0.0043503570289232605,2.2241363549602545e-5,-6.706795464383658e-8,0.004350370300956235,2.2236598604831392e-5,-6.705740408002692e-8,0.004350430646805905,2.2122994339245096e-5,-6.680980212150948e-8,0.004350568672542956,2.1947338186704e-5,-6.642641374111236e-8,0.004350793241612556,2.1759652050497017e-5,-6.601571687264844e-8,0.0043510958731244245,2.1603418432720286e-5,-6.567227801223937e-8,0.004351456464205779,2.1510811396030194e-5,-6.546638399293138e-8,0.004351848247956533,2.1501213936502228e-5,-6.544069492800358e-8,0.004352241536665431,2.1581184167779784e-5,-6.560999904068952e-8,0.00435260671995346,2.174478040527643e-5,-6.596178678053824e-8,0.004352917203110646,2.1974004373243897e-5,-6.645716600620018e-8,0.004353152776554337,2.2239771173006768e-5,-6.70329889115276e-8,0.0043533034557195595,2.250423557099356e-5,-6.760694213289382e-8,0.004353373159793762,2.2725320394767957e-5,-6.808739588456914e-8,0.004353381934028024,2.2863721397970617e-5,-6.838860655220757e-8,0.004353365144473504,2.2891593869259356e-5,-6.844958399294913e-8,0.004353368520464555,2.2800891768739177e-5,-6.825225963723115e-8,0.004353439178980252,2.2608536352457108e-5,-6.783284315230564e-8,0.004353614398994551,2.235592337679717e-5,-6.728093363331758e-8,0.004353911091254241,2.210179351953395e-5,-6.672420060605343e-8,0.004354319093981324,2.1909457854221882e-5,-6.63007028625976e-8,0.00435480070535855,2.183105798865961e-5,-6.612459579585697e-8,0.004355297564439238,2.1892701313526038e-5,-6.62535720399581e-8,0.004355744274261172,2.208486894760374e-5,-6.666768156040473e-8,0.004356085988373349,2.2362140804206785e-5,-6.72684784304803e-8,0.004356294790867451,2.265429960519879e-5,-6.790310472655907e-8,0.004356378446729466,2.2886711643210605e-5,-6.840875002736263e-8,0.004356377083974059,2.300287959510685e-5,-6.866191818023424e-8,0.004356348835649946,2.2979906602058662e-5,-6.861222380829316e-8,0.004356351070803769,2.283100298627068e-5,-6.828791603511024e-8,0.0043564253033482265,2.2596103437619816e-5,-6.777550831067574e-8,0.004356590438485916,2.232692894571213e-5,-6.71873398673657e-8,0.004356843977258533,2.207328036231141e-5,-6.663181407464889e-8,0.00435716773989199,2.1874255200302816e-5,-6.619429149558181e-8,0.0043575345277402245,2.17545974438534e-5,-6.592907552880914e-8,0.00435791364940389,2.1724473774609717e-5,-6.585880479157714e-8,0.004358274835255978,2.1780736857639492e-5,-6.597708420358102e-8,0.00435859102021611,2.190842428008057e-5,-6.625166759485598e-8,0.004358840788105637,2.2082124326210005e-5,-6.66273960160543e-8,0.004359011140673432,2.2267590761594875e-5,-6.702970759557112e-8,0.004359100770459174,2.2424521416654e-5,-6.737069654700543e-8,0.0043591232349589806,2.2511572931629804e-5,-6.756005138998922e-8,0.004359108521787183,2.2494178942973776e-5,-6.752211476792377e-8,0.004359100878157092,2.235434252364082e-5,-6.721725820444066e-8,0.004359151203790916,2.209952344550378e-5,-6.666129656422452e-8,0.004359304391648528,2.1766202486049173e-5,-6.59333189575158e-8,0.004359585156155929,2.141440124607869e-5,-6.516384241477555e-8,0.004359988028082468,2.1112991988769316e-5,-6.450292098818624e-8,0.004360476321122433,2.0920264451710092e-5,-6.407788779132097e-8,0.004360991139310915,2.0866833130000284e-5,-6.395608344448584e-8,0.0043614672632936585,2.094691373648151e-5,-6.412567446990825e-8,0.00436185047259702,2.1120373710730043e-5,-6.449986452881506e-8,0.004362111124733698,2.1324180464702604e-5,-6.4941620161576e-8,0.004362250570187353,2.1489435250093217e-5,-6.53007002748905e-8,0.004362299121386524,2.155913544719217e-5,-6.54524253343876e-8,0.004362306490900004,2.1501808725852057e-5,-6.532755100187959e-8,0.004362327761153033,2.131732881203479e-5,-6.492513324816661e-8,0.0043624093738372635,2.103373524474476e-5,-6.430576510522246e-8,0.0043625793884881775,2.0697054625575986e-5,-6.356950528095524e-8,0.004362844207020741,2.0358383999011046e-5,-6.282776240788013e-8,0.004363191208127825,2.006260880711081e-5,-6.217865603614356e-8,0.004363594835992581,1.984133466131531e-5,-6.169150041406605e-8,0.004364023394089613,1.971031936272081e-5,-6.140108548051583e-8,0.004364444713893855,1.9670147056786693e-5,-6.130906149278202e-8,0.004364830116595006,1.9708457183723877e-5,-6.13887614197793e-8,0.004365157008842049,1.9802456355045293e-5,-6.159066614971228e-8,0.0043654108447642925,1.9921222630134676e-5,-6.184741174273681e-8,0.004365587133171469,2.002805687530203e-5,-6.207888714985402e-8,0.004365693773882021,2.0083687956816993e-5,-6.219920719112305e-8,0.004365753261816067,2.0051413982690625e-5,-6.21279557727769e-8,0.004365803266929434,1.990492580654581e-5,-6.18073352015643e-8,0.004365893211815998,1.963812772857377e-5,-6.122369196067238e-8,0.00436607468587738,1.9273718051626967e-5,-6.042630561545666e-8,0.004366386030933518,1.8864892817626648e-5,-5.953112197574838e-8,0.004366836077417156,1.8485075349996475e-5,-5.869834534688314e-8,0.004367395636384049,1.8206114824510273e-5,-5.808489610024617e-8,0.0043680034475078715,1.807342018736887e-5,-5.779018629925774e-8,0.004368585429190273,1.8090183319349116e-5,-5.7821670584522674e-8,0.004369078205338029,1.8218018646954217e-5,-5.8096130493753056e-8,0.004369446485515545,1.8391914972714372e-5,-5.8472137246485704e-8,0.00436968898915749,1.854111673960781e-5,-5.879546235081837e-8,0.004369833869388169,1.8607666783746486e-5,-5.893945230499611e-8,0.004369927829734204,1.8558083076927652e-5,-5.883053071818364e-8,0.0043700232722843815,1.8387261432697222e-5,-5.845686139765173e-8,0.004370166642890487,1.8115771799109823e-5,-5.78626810222891e-8,0.004370389908592708,1.778250420799372e-5,-5.7132479090411445e-8,0.004370706190176643,1.7434832951346612e-5,-5.63696521066772e-8,0.004371109765100231,1.7118586178875612e-5,-5.5674571774707e-8,0.00437157972214823,1.6869939219546253e-5,-5.5126719806860253e-8,0.004372085769119738,1.671054970042191e-5,-5.477386649502183e-8,0.004372594495239376,1.6646123535862942e-5,-5.462880762363998e-8,0.004373074761423813,1.6667710334556395e-5,-5.467217352867607e-8,0.004373501568673639,1.675457816700928e-5,-5.485876153998176e-8,0.004373858478157565,1.687756120804058e-5,-5.5124896858937915e-8,0.004374139111879542,1.7002287531392034e-5,-5.5395470307775045e-8,0.0043743482958161295,1.7092346989803696e-5,-5.559079621301812e-8,0.004374503133939031,1.7112951246571128e-5,-5.5634563689226273e-8,0.004374633720251839,1.7035925052044434e-5,-5.546478116239983e-8,0.00437478225005965,1.6846665517467146e-5,-5.504911354774486e-8,0.0043749983953135655,1.6552475631203626e-5,-5.440324873724291e-8,0.004375328872488854,1.618927976830758e-5,-5.360566541222857e-8,0.0043758013925030695,1.5821068508656155e-5,-5.2796405543630164e-8,0.004376408267399701,1.552634116046679e-5,-5.214735730105396e-8,0.004377099954417064,1.5371900421595234E-05,-5.180488666204743e-8,0.004377797060914417,1.5385036173928835e-5,-5.182897065432117e-8,0.004378418187720637,1.5540645773084347e-5,-5.2165003016123936e-8,0.004378909008357041,1.5771884933839974e-5,-5.266706122898232e-8,0.0043792572209281865,1.599719360222389e-5,-5.315697219265368e-8,0.004379488986244382,1.6147744983164754e-5,-5.34842622002332e-8,0.004379653735493992,1.6183696763184442e-5,-5.356159676976171e-8,0.004379807029548539,1.6097454183882332e-5,-5.337188796430934e-8,0.004379997377027852,1.5908215829117925e-5,-5.2956489809098333e-8,0.004380258535441446,1.5652790384862128e-5,-5.239536296392365e-8,0.004380606499311609,1.5376010872551103e-5,-5.178635373794103e-8,0.00438103981704955,1.5122274389860483e-5,-5.122678455064238e-8,0.0043815422062817,1.4928716380928159e-5,-5.079841505994918e-8,0.0043820867949589636,1.4820349015323273e-5,-5.055656434916802e-8,0.004382641303252554,1.4807475268811135e-5,-5.052422039228374e-8,0.004383173380248949,1.4885420145896664e-5,-5.0691348370280644e-8,0.004383655356796422,1.5036302184118528e-5,-5.1018815625741976e-8,0.004384067847834171,1.5232293344004387e-5,-5.144564428159387e-8,0.0043844019828522774,1.543961315370945e-5,-5.1897827868784535e-8,0.004384660446837142,1.5622634657119858e-5,-5.229728990740927e-8,0.0043848576711448175,1.5747902572815793e-5,-5.257058563354719e-8,0.0043850193932531934,1.5788236658408824e-5,-5.2657827564574646e-8,0.0043851814481957125,1.572732220635757e-5,-5.252279948825495e-8,0.004385386970873339,1.5565072314536914e-5,-5.216487783723147e-8,0.004385680534183977,1.532309143986357e-5,-5.163119876709418e-8,0.004386097920633204,1.5047759637200314e-5,-5.102352030618483e-8,0.004386652021040343,1.4806503360449029e-5,-5.0490006751438264e-8,0.004387319473877426,1.4672634763753373e-5,-5.019184730718326e-8,0.004388037475553013,1.4699180145777687e-5,-5.024571194944651e-8,0.004388719358254085,1.4892581471994294e-5,-5.066597535539156e-8,0.004389286252243407,1.5203884862031068e-5,-5.1345376667470573e-8,0.00438969797548042,1.5546829342512437e-5,-5.209476228885879e-8,0.004389964650890107,1.583302129175502e-5,-5.272030351592314e-8,0.004390134913807563,1.6002864742013964e-5,-5.309129370757188e-8,0.004390272271287374,1.6037840528340582e-5,-5.3166940446750974e-8,0.004390434097429688,1.595511112825302e-5,-5.298445643173724e-8,0.004390660057645578,1.579392903294117e-5,-5.262936255347156e-8,0.004390969109008046,1.5602006407262715e-5,-5.220585215637865e-8,0.0043913615412258964,1.542537772061049e-5,-5.1814795817357e-8,0.004391823037389939,1.5302039558842245e-5,-5.153985439117854e-8,0.004392329121287766,1.5258332624760626e-5,-5.143939304550827e-8,0.004392849551497714,1.5307073316800725e-5,-5.1542117695367437e-8,0.004393352682154456,1.54470359086033e-5,-5.18457185429351e-8,0.00439380971458905,1.566375392426153e-5,-5.23185628529972e-8,0.004394198597306122,1.5931683059558592e-5,-5.2904527284831545e-8,0.004394507186734965,1.621768345692803e-5,-5.353077333402549e-8,0.004394735227108045,1.6485492657756142e-5,-5.411762647781867e-8,0.004394894902223298,1.6700626893534787e-5,-5.45892803278868e-8,0.004395009971871057,1.6835218512750443e-5,-5.48843068576531e-8,0.004395113603586854,1.687246367982367e-5,-5.496537371682426e-8,0.004395244949411491,1.6810475067017456e-5,-5.482779901120044e-8,0.0043954442427448425,1.6665347947444088e-5,-5.450649984627839e-8,0.004395745883391455,1.6472740140844224e-5,-5.407968384406357e-8,0.0043961693024316155,1.6286178870649144e-5,-5.366522773031633e-8,0.0043967088244268844,1.616943709032258e-5,-5.340384348847231e-8,0.00439732633496883,1.6180870696195093e-5,-5.342443633742838e-8,0.004397953375547895,1.635135413255929e-5,-5.379535836427356e-8,0.0043985084347460835,1.6664842817597192e-5,-5.448152340898046e-8,0.004398926535594353,1.7055762545965226e-5,-5.533868602056141e-8,0.004399186184162931,1.7430878674003617e-5,-5.616169045398201e-8,0.004399316502889809,1.7706012639717648e-5,-5.676535310620799e-8,0.004399380619391071,1.7836085828877507e-5,-5.7050496127308454e-8,0.0043994479138703985,1.782330059445976e-5,-5.70217692683362e-8,0.004399571685962228,1.7705329205192075e-5,-5.676158687960766e-8,0.004399779842592975,1.7535919356775476e-5,-5.6387604272475e-8,0.004400076250313624,1.736849329520766e-5,-5.601691660456328e-8,0.0044004470021380936,1.7246443601718784e-5,-5.574493496590799e-8,0.0044008672958289925,1.7199144884804796e-5,-5.5636639903815625e-8,0.004401307044890794,1.724130099925887e-5,-5.572497188992369e-8,0.00440173510197177,1.737368836590099e-5,-5.6012208288017816e-8,0.004402122691783258,1.7584415933249197e-5,-5.6472543144591716e-8,0.004402446537357039,1.785064042267672e-5,-5.705582151470724e-8,0.004402691816659508,1.8141037663291022e-5,-5.7693066337959046e-8,0.004402854735432183,1.841939830699297e-5,-5.8304506128850546e-8,0.0044029441466111215,1.86494319283523e-5,-5.88101859483882e-8,0.004402981550175842,1.8800342453498846e-5,-5.914217622460607e-8,0.004402999067764595,1.8852377164001726e-5,-5.925669183407802e-8,0.004403035359985339,1.8801411674438728e-5,-5.914416507577008e-8,0.0044031298139103415,1.866162281600663e-5,-5.883524829467042e-8,0.004403315601073636,1.8465518632622366e-5,-5.8401102927705954e-8,0.004403612303337892,1.8260820798133723e-5,-5.794674902359043e-8,0.00440401903455858,1.810360352195355e-5,-5.7596036212635465e-8,0.004404509752154576,1.8047165882872968e-5,-5.746702598309528e-8,0.004405033516436402,1.812725114889848e-5,-5.763917890945277e-8,0.004405522902615492,1.834684093381671e-5,-5.8119578846809494e-8,0.0044059119457882465,1.866727755270758e-5,-5.8823215461512124e-8,0.004406159440016461,1.9013925428711905e-5,-5.958550245976834e-8,0.004406266628248096,1.9299284542711648e-5,-6.021339687547807e-8,0.004406277737108989,1.945484969608813e-5,-6.055575571644973e-8,0.004406261496645234,1.9454837423611572e-5,-6.055559500071444e-8,0.004406284449775708,1.9319660877416878e-5,-6.025761062267969e-8,0.00440639062788073,1.910099176720538e-5,-5.977521664665257e-8,0.004406594829344743,1.886022453602534e-5,-5.924323335780905e-8,0.004406887078573716,1.8651292088100253e-5,-5.878025539400848e-8,0.004407241761031286,1.8511880264080445e-5,-5.846944211875105e-8,0.0044076263524043535,1.8461551898719056e-5,-5.835435137480919e-8,0.0044080076754981525,1.8503530268696664e-5,-5.8442683603324096e-8,0.00440835579500999,1.862755742929406e-5,-5.871235534719573e-8,0.004408646532290339,1.881262321625275e-5,-5.911736690258402e-8,0.004408863496128932,1.9029458207028737e-5,-5.959328119831901e-8,0.004409000066919958,1.924325840921723e-5,-6.006330961355848e-8,0.004409061253908856,1.9417302526743488e-5,-6.044637646552229e-8,0.004409064800155661,1.9517894893698925e-5,-6.066804549783033e-8,0.00440904055014602,1.9520391771617026e-5,-6.067376479634501e-8,0.004409027212339246,1.9415263477098266e-5,-6.044217579738232e-8,0.004409066265143777,1.9212538136596372e-5,-5.99949182565613e-8,0.004409193715141178,1.8942795303234154e-5,-5.939893403493536e-8,0.0044094314113227616,1.865344497733075e-5,-5.875845298339941e-8,0.004409780143242562,1.8400286623901103e-5,-5.8196555817766816e-8,0.004410216569539457,1.8235638567657733e-5,-5.782905216370578e-8,0.004410695422717016,1.8195238170461436e-5,-5.773546974239403e-8,0.004411157650944433,1.8286844900537162e-5,-5.7933659296607315e-8,0.004411543971861461,1.8484117436023682e-5,-5.836601541020027e-8,0.004411811395675748,1.8729348317482946e-5,-5.890535923731313e-8,0.004411947793992804,1.89470109132833e-5,-5.938486561457419e-8,0.0044119780011767805,1.906592214848751e-5,-5.964712702981143e-8,0.004411956808968038,1.9042277832868503e-5,-5.9595124411453214e-8,0.004411950401682743,1.8873156757466962e-5,-5.92220569871064e-8,0.004412014554899769,1.8594182067809693e-5,-5.8606156280090905e-8,0.004412179536671111,1.8263848967560027e-5,-5.7876134214088945e-8,0.0044124466739733125,1.7943581917926447e-5,-5.716729690606632e-8,0.004412794575472388,1.7682304086576782e-5,-5.6587619247160394e-8,0.004413189368832398,1.7509204078874898e-5,-5.6201810628385806e-8,0.004413594086340192,1.743345530047553e-5,-5.603059765879325e-8,0.004413975065031127,1.7447630029714103e-5,-5.605809066694707e-8,0.004414305472350097,1.7532025516451413e-5,-5.6241179923360305e-8,0.004414567041261399,1.7658503065552773e-5,-5.651793566777759e-8,0.004414751115520992,1.779363418722658e-5,-5.681456751260478e-8,0.004414859663338807,1.7901658854669397e-5,-5.7052019121006296e-8,0.0044149062993784445,1.794805755027884e-5,-5.7153915757579485e-8,0.004414916691840586,1.7904389601374315e-5,-5.7057269944060924e-8,0.004414927200000021,1.77543682378513e-5,-5.672588204884182e-8,0.0044149804922138025,1.750003314877578e-5,-5.616395099473292e-8,0.00441511759337999,1.7165714561544804e-5,-5.542484487782527e-8,0.004415367428776234,1.679696126662312e-5,-5.460881274387819e-8,0.0044157368984729635,1.64525946058128e-5,-5.3845568238601775e-8,0.0044162055472075626,1.6190716787134946e-5,-5.3263516737987664e-8,0.004416727899593218,1.6052589799655223e-5,-5.295419024084609e-8,0.0044172437234548155,1.6049869174066154e-5,-5.294395078197559e-8,0.004417693384688244,1.615974344870538e-5,-5.3183040430361466e-8,0.004418033663467096,1.6329784446188893e-5,-5.355607037861073e-8,0.004418249405605174,1.6491255741248804e-5,-5.391129234465096e-8,0.004418357633513688,1.657727659886784e-5,-5.41007360539825e-8,0.004418402673640693,1.6540796109409133e-5,-5.4020027084270734e-8,0.004418443391223361,1.636694373579072e-5,-5.3635805163711675e-8,0.004418536429934856,1.6075637077552477e-5,-5.2991599870440183e-8,0.004418721153570862,1.5713686813819345e-5,-5.219048380509432e-8,0.004419011327149181,1.5339827180016276e-5,-5.136208116526004e-8,0.004419395436149071,1.5008693642004086e-5,-5.062720950800594e-8,0.004419843763828487,1.475917925423041e-5,-5.0072119853676645e-8,0.004420318190940414,1.4609543041482485e-5,-4.973758066953034e-8,0.004420781006999231,1.455837640529271e-5,-4.9620879180614367e-8,0.004421200875707693,1.4588855571197866e-5,-4.9685116993361385e-8,0.004421555921818236,1.4673832615992423e-5,-4.9870423302738325e-8,0.004421834861138942,1.4780363310829798e-5,-5.0103979045361175e-8,0.004422037237442245,1.4873349197413976e-5,-5.030810679146616e-8,0.0044221735003303324,1.4918708687383351e-5,-5.0407314602882546e-8,0.004422265076734925,1.488684665139391e-5,-5.0335987892971714e-8,0.004422343894139628,1.4757129675741033e-5,-5.004829930915722e-8,0.004422450182798508,1.4523472760162985e-5,-4.953057889944237e-8,0.004422627129488367,1.4199935359410018e-5,-4.8813710361903955e-8,0.004422911606825086,1.382367526534905e-5,-4.7979688149729203e-8,0.004423322237828266,1.3451651182103001e-5,-4.715436315562399e-8,0.00442384901396835,1.3148639319550321e-5,-4.6480995689175956e-8,0.004424450465700748,1.2968277830758903e-5,-4.6078384882655163e-8,0.004425062411682258,1.2934115116972632e-5,-4.599895383332543e-8,0.004425616532075163,1.3029713949506274e-5,-4.620678002907812e-8,0.00442606125460747,1.3203026493029452e-5,-4.658713648167632e-8,0.004426376247492937,1.3382921571667098e-5,-4.698291956016331e-8,0.0044265757656095205,1.3500398155340669e-5,-4.7241493967355725e-8,0.0044267015746751685,1.3506656906523134e-5,-4.7254652877251136e-8,0.004426809564985756,1.3383317501207797e-5,-4.698127400556689e-8,0.004426954798878417,1.3143641854113754e-5,-4.645015416988944e-8,0.004427178862902963,1.282611238434304e-5,-4.574598280569655e-8,0.004427502065621027,1.248309395401886e-5,-4.498442593684408e-8,0.004427921557662274,1.2167909243147152e-5,-4.4283605507852286e-8,0.0044284149290582065,1.1923590626574095e-5,-4.373914849628887e-8,0.004428947492553156,1.1775726251332769e-5,-4.340818287378602e-8,0.0044294807498054785,1.1730276245194692e-5,-4.330431159108967e-8,0.00442997978210213,1.1775616157272551e-5,-4.3402016286169154e-8,0.004430418284203898,1.1887104697408922e-5,-4.3646763807176316e-8,0.004430781078167451,1.2032394059880673e-5,-4.396683813881441e-8,0.004431064723837474,1.2176260557030221e-5,-4.428411771350637e-8,0.0044312770935376515,1.228454666456542e-5,-4.452283720664672e-8,0.004431436570445023,1.2327479539015128e-5,-4.4616919616307796e-8,0.004431571073044788,1.2282959424570596e-5,-4.451723465126646e-8,0.004431716519505703,1.2140402085948442e-5,-4.420012359781004e-8,0.004431913708413011,1.190525144918933e-5,-4.367745401611296e-8,0.004432202271488714,1.1603137979985335e-5,-4.3005902031456583e-8,0.00443261096494701,1.128105558813796e-5,-4.228959825337529e-8,0.004433145658560025,1.1001798769206879e-5,-4.166779716993523e-8,0.004433779801368679,1.082900401217352e-5,-4.12817006687968e-8,0.004434454646972603,1.0805123199301839e-5,-4.122560821070611e-8,0.004435094025680583,1.093179184586048e-5,-4.1503363883340675e-8,0.004435629850168535,1.1164738583475233e-5,-4.20170322203088e-8,0.004436026030782993,1.1428372850655338e-5,-4.259921088755147e-8,0.004436288544140871,1.1642827137621819e-5,-4.30729574358741e-8,0.00443645852333741,1.1749408550127374e-5,-4.33081550485094e-8,0.004436594888881352,1.1724150687214207e-5,-4.3251474414460785e-8,0.004436755874140951,1.1577909422798677e-5,-4.292656969019233e-8,0.00443698556045168,1.134743368171151e-5,-4.241440383930332e-8,0.004437307141160754,1.1082923092713402e-5,-4.1825890935872864e-8,0.004437722000943753,1.0835997728485317e-5,-4.1275427325207346e-8,0.004438212894918262,1.0650076781292515e-5,-4.0859608303239765e-8,0.004438749638289341,1.055393982394728e-5,-4.0642808497137944e-8,0.004439295959152751,1.0558721353467244e-5,-4.065026502851615e-8,0.004439816265453436,1.065819146280534e-5,-4.0868482817672476e-8,0.004440281272009354,1.0831676496297347e-5,-4.1251640135869176e-8,0.004440671831938921,1.1048643543678123e-5,-4.173183848769729e-8,0.004440980777783971,1.1273898329578631e-5,-4.2230779881881195e-8,0.00444121303269828,1.1472474912977608e-5,-4.267071508775094e-8,0.004441384565236301,1.1613723431763203e-5,-4.298351149337096e-8,0.004441520716355006,1.1674659260946504e-5,-4.311801611635916e-8,0.004441654103827259,1.1642927188475744e-5,-4.304658575328331e-8,0.004441821893723169,1.151970903380154e-5,-4.277157863485106e-8,0.004442061733825511,1.1322569755221519e-5,-4.2331789891194374e-8,0.004442405367359218,1.1087324544257746e-5,-4.1806717475930976e-8,0.004442869542993695,1.0866655575333044e-5,-4.1313536007648224e-8,0.004443445735403163,1.0722317764963522e-5,-4.0989728756109695e-8,0.004444093284368835,1.0708865030730829e-5,-4.0956817567218523e-8,0.0044447430760904995,1.085167507562386e-5,-4.127142029165161e-8,0.004445316435740319,1.1129602124610225e-5,-4.1886642259513546e-8,0.004445754128237322,1.1475626607160576e-5,-4.2653546623268654e-8,0.004446040101964218,1.180003031512926e-5,-4.3372752883896014e-8,0.004446205530673317,1.2024629257590159e-5,-4.387057130415036e-8,0.004446312162708855,1.2108771182796773e-5,-4.405669777283164e-8,0.004446427135514646,1.2055740045207085e-5,-4.3938284164400834e-8,0.004446602819718554,1.1902415131929761e-5,-4.3596893302424874e-8,0.004446867462772274,1.1702280581489064e-5,-4.3150880569211476e-8,0.00444722502652385,1.1510013581017392e-5,-4.272141346034424e-8,0.004447660112373166,1.1371009258943887e-5,-4.240940734950581e-8,0.004448144592351008,1.1315808141326373e-5,-4.228315760058449e-8,0.00444864413440166,1.1358103698667109e-5,-4.237371725707588e-8,0.004449124029971733,1.1495141539025288e-5,-4.2675501313854964e-8,0.004449554153193063,1.1709878328814522e-5,-4.315087896932633e-8,0.004449912835517964,1.1974488478859295e-5,-4.373794004970734e-8,0.004450189440411732,1.2254789064169708e-5,-4.4360459045246395e-8,0.004450385488268202,1.2515133469631053e-5,-4.493894052335691e-8,0.004450514285615522,1.2723218588808307e-5,-4.540139076746559e-8,0.004450599251519201,1.285424788009527e-5,-4.569253626675187e-8,0.0044506713012207,1.2894201090678989e-5,-4.578100104332719e-8,0.004450765540459394,1.2842246866083047e-5,-4.5664633203186566e-8,0.004450917284953617,1.2712332911019386e-5,-4.537412450667041e-8,0.004451157155322636,1.2533780867555994e-5,-4.497450577626395e-8,0.004451504873237557,1.2350163721766086e-5,-4.45628020467471e-8,0.004451961919675364,1.2214876307893983e-5,-4.425820466465791e-8,0.004452504731610211,1.218142064773772e-5,-4.418032467973815e-8,0.004453082319776596,1.2287689702351628e-5,-4.441399178406356e-8,0.0044536237576869794,1.2537566429059222e-5,-4.496809227303929e-8,0.004454058600129623,1.2889221277017663e-5,-4.5749448011482285e-8,0.004454344557171657,1.3261764007055407e-5,-4.657774011379726e-8,0.004454487209756872,1.356321056345686e-5,-4.724799032523849e-8,0.004454537817108847,1.3726577222573843e-5,-4.761103975360433e-8,0.004454569953530231,1.3733042945322505e-5,-4.762500825386583e-8,0.0044546503114754445,1.3611019367534598e-5,-4.7353008192290663e-8,0.004454819540444871,1.3417353161617989e-5,-4.692121901981639e-8,0.004455088006355839,1.3214963151419203e-5,-4.6469264458608674e-8,0.0044554417320164475,1.3056798315819873e-5,-4.6114776888332594e-8,0.00445585181070049,1.2978205618864193e-5,-4.5936593073707565e-8,0.004456283063848414,1.2995515360089378e-5,-4.597157388372203e-8,0.004456700455403941,1.3107894323916252e-5,-4.621850553884396e-8,0.0044570734879752745,1.3300386432833933e-5,-4.664459015113946e-8,0.004457379329847273,1.354733210799182e-5,-4.719288460843296e-8,0.004457605083715164,1.381611653844664e-5,-4.779065425340231e-8,0.004457749208594007,1.4071308351959136e-5,-4.835873390854053e-8,0.004457821935847933,1.4279162754995978e-5,-4.882171487818592e-8,0.004457844413589892,1.4412244841220207e-5,-4.9118304592704225e-8,0.004457846392811299,1.4453606997495086e-5,-4.9210578647334747e-8,0.004457862579541846,1.4399892313824196e-5,-4.909080557286075e-8,0.004457928006711199,1.4262935015950712e-5,-4.878499921089497e-8,0.0044580728160356475,1.406956442522464e-5,-4.835259699152093e-8,0.004458316817654614,1.385936585539174e-5,-4.7881662798881046e-8,0.004458664213340158,1.3680097018682372e-5,-4.7478820736234354e-8,0.004459099197509258,1.3580228791160693e-5,-4.725262339870064e-8,0.004459584026033035,1.3598195514992196e-5,-4.728940689142557e-8,0.004460062199621417,1.3749252092781208e-5,-4.762371409222547e-8,0.0044604695823886415,1.4013664681784223e-5,-4.8211740969940616e-8,0.004460753777901616,1.4333327715772738e-5,-4.8923755358978294e-8,0.004460895857321044,1.4624178301927179e-5,-4.957195585635171e-8,0.00446092230560696,1.4804495669279922e-5,-4.997383459421404e-8,0.004460896977374359,1.4826692738442146e-5,-5.002318300311229e-8,0.004460895349738283,1.4694329378561483e-5,-4.972790533985917e-8,0.004460976016780967,1.4455254987504552e-5,-4.919452719357374e-8,0.0044611646111219405,1.4178234027314433e-5,-4.857603680579923e-8,0.004461454185855782,1.3928460573193122e-5,-4.801746458935442e-8,0.0044618157539403095,1.3752419469232318e-5,-4.7622364855750946e-8,0.0044622107137216325,1.3673354803297678e-5,-4.7442825841443116e-8,0.00446260043945746,1.369354382664959e-5,-4.7484455725649896e-8,0.004462952022908023,1.3799219006272274e-5,-4.7717131725367e-8,0.004463241121058138,1.3965553328710682e-5,-4.8085882901992276e-8,0.004463453324834858,1.4160873361938923e-5,-4.852016867099879e-8,0.0044635849469705675,1.435036495631774e-5,-4.894218569650978e-8,0.004463643417515637,1.4499782775240661e-5,-4.9275285274911396e-8,0.004463647051016639,1.4579493829923948e-5,-4.945312739285398e-8,0.004463623708041326,1.456882906403381e-5,-4.9429429021382195e-8,0.004463607842406662,1.4460176219189537e-5,-4.918704040982184e-8,0.0044636357910401445,1.4261818394534823e-5,-4.874420470914212e-8,0.0044637397511841466,1.3998495202235436e-5,-4.815581116683994e-8,0.004463941391235043,1.3708962880863763e-5,-4.7508063679370155e-8,0.004464246337336341,1.3440376771153735e-5,-4.6906117413019404e-8,0.0044646407956383674,1.3240001878015215e-5,-4.645569825673976e-8,0.004465091381001237,1.3145269848031426e-5,-4.624087973870854e-8,0.004465549066273715,1.3173598219246631e-5,-4.6301165592733985e-8,0.004465957939694511,1.3314136875100861e-5,-4.661280004540448e-8,0.004466268576327031,1.352468763662037e-5,-4.708169932958065e-8,0.00446645372428031,1.3737541360524216e-5,-4.7556478385599956e-8,0.004466520878302181,1.3876287526487771e-5,-4.786615773013864e-8,0.004466514326078782,1.3880445157377903e-5,-4.7875375783545784e-8,0.004466502142877897,1.3727918531229615e-5,-4.753461483998569e-8,0.004466552086217613,1.344312403337607e-5,-4.689826847344771e-8,0.0044667082651349286,1.3085819784721498e-5,-4.609959388131855e-8,0.004466980019477852,1.2727550786706039e-5,-4.529813388914731e-8,0.004467345755137234,1.2428783962732317e-5,-4.4628795806165725e-8,0.004467765779943532,1.2225982089979055e-5,-4.4173112494455235e-8,0.004468196005854024,1.2129693991677846e-5,-4.395498255353792e-8,0.004468597642816224,1.2129490543834448e-5,-4.395156917433471e-8,0.00446894206410521,1.2201011417455164e-5,-4.410885737385981e-8,0.00446921225500677,1.2312244640502023e-5,-4.43555394468987e-8,0.004469402654481283,1.2428213420078234e-5,-4.46134499502362e-8,0.0044695185950805304,1.2514503621319245e-5,-4.48055188286882e-8,0.004469575723049835,1.2540430548831996e-5,-4.486296672886854e-8,0.004469599148903078,1.2482479511679878e-5,-4.473308223481721e-8,0.004469621667375493,1.2328204497541601e-5,-4.4387945702341005e-8,0.004469680258111596,1.2080054076724377e-5,-4.38329250854799e-8,0.004469810440791369,1.1757832861630705e-5,-4.3112118745779403e-8,0.004470038938882233,1.139812552580378e-5,-4.2307071423256166e-8,0.004470376233823944,1.1049363336854192e-5,-4.1525836645826615e-8,0.004470811437085582,1.0762470256707936e-5,-4.088220096014905e-8,0.004471311827050345,1.057885493987764e-5,-4.046892914926202e-8,0.004471828174441778,1.0518954079644614e-5,-4.0332120643179816e-8,0.00447230517930829,1.057478045414597e-5,-4.045439322306815e-8,0.004472694773246646,1.0709058764895794e-5,-4.075274930775221e-8,0.004472969079340785,1.0862056909000877e-5,-4.1093716830421817e-8,0.004473129460972397,1.096542999972803e-5,-4.1324306385980915e-8,0.004473208349376754,1.0960344314636686e-5,-4.131265117419883e-8,0.004473261801176122,1.0814980769902441e-5,-4.098727821687716e-8,0.004473353611162491,1.0535090952922028e-5,-4.036078520359405e-8,0.004473535890618031,1.0162456216834655e-5,-3.952640941680167e-8,0.004473833792415958,9.760956408521302e-6,-3.862688960352953e-8,0.004474240602953426,9.396173414810474e-6,-3.7808898628385294e-8,0.004474724001444978,9.11738920258227e-6,-3.718281945206038e-8,0.004475238859403357,8.948272943174389e-6,-3.6801887768029544e-8,0.0044757402350894555,8.887048525787006e-6,-3.6662466891908055e-8,0.004476192324498001,8.912754115928486e-6,-3.6717928510436886e-8,0.004476572466872101,8.99328366656885e-6,-3.689655835364853e-8,0.004476871540255352,9.092325994737656e-6,-3.711706737226179e-8,0.0044770926280973825,9.174281950373387e-6,-3.7299643889725875e-8,0.004477249315061717,9.207572991317009e-6,-3.737343689531388e-8,0.0044773641629216165,9.167232096321902e-6,-3.7282422144220036e-8,0.004477467204936426,9.037578898248145e-6,-3.699141801660316e-8,0.004477593756950581,8.815347168589488e-6,-3.649307148880597e-8,0.00447778058690321,8.512872182307729e-6,-3.5814955514758316e-8,0.004478059745215661,8.159958224253264e-6,-3.502372164908136e-8,0.004478450365817333,7.802247766408065e-6,-3.4221459193305144e-8,0.004478950468601355,7.494062159631074e-6,-3.3529720730520204e-8,0.004479532465119492,7.285542176108168e-6,-3.3060801908352687e-8,0.004480146136971822,7.2072554470058906e-6,-3.288331103792207e-8,0.004480730224220354,7.258279349781589e-6,-3.2995444030558204e-8,0.004481229449583244,7.4035582392112385e-6,-3.331896233314279e-8,0.004481610689525678,7.582522644393277e-6,-3.371838931973838e-8,0.004481872292063173,7.725939025928392e-6,-3.403868938062639e-8,0.00448204374844317,7.774910697168804e-6,-3.414782399457034e-8,0.004482176671298304,7.696059172490782e-6,-3.397078855811176e-8,0.004482330435030019,7.4890430319435334e-6,-3.350650916046562e-8,0.004482556672721601,7.1850969128227755e-6,-3.282465246101726e-8,0.0044828866992572885,6.837522641746615e-6,-3.2044432737991846e-8,0.0044833250857910616,6.507056498926579e-6,-3.130192899832561e-8,0.004483850858172803,6.24650987263678e-6,-3.071570165203201e-8,0.004484425307959444,6.08924159396039e-6,-3.036088489326645e-8,0.004485003194359061,6.044356934728174e-6,-3.025827024763154e-8,0.004485543401858622,6.098712850233066e-6,-3.0378643182073185e-8,0.004486016219005494,6.2234233182378906e-6,-3.0657287324259747e-8,0.0044864064166258944,6.3817652026060565e-6,-3.1011736157922704e-8,0.004486712974298434,6.536100940869929e-6,-3.135738930785751e-8,0.004486946987567679,6.652794334948827e-6,-3.16186317416998e-8,0.0044871290855611435,6.705289352964788e-6,-3.173578594963119e-8,0.004487287039748156,6.676139966458214e-6,-3.1669660514816774e-8,0.004487453549021817,6.558809591876483e-6,-3.1405558068106883e-8,0.004487663626245549,6.359694715241642e-6,-3.095779699979666e-8,0.004487950667436226,6.100153211559874e-6,-3.0374268126452117e-8,0.004488340386805238,5.817319379742182e-6,-2.973828357636435e-8,0.004488842722498734,5.561454687988725e-6,-2.9162651978515495e-8,0.004489443758855133,5.387386078451001e-6,-2.87704753805209e-8,0.00449010207955269,5.339481305214199e-6,-2.866142686948672e-8,0.004490754688042762,5.434077367358827e-6,-2.887228736862537e-8,0.004491334130057058,5.647948607453723e-6,-2.9351019643881805e-8,0.004491791249757919,5.921297869142392e-6,-2.99634549511861e-8,0.004492112629279643,6.17644552752166e-6,-3.0535254824106297e-8,0.00449232388491216,6.343735825162951e-6,-3.0910079891972617e-8,0.004492478423788278,6.3824291151391336e-6,-3.0996454297399085e-8,0.0044926387333911215,6.288994539844147e-6,-3.078631234061721e-8,0.004492858636300761,6.092913739653983e-6,-3.0345562453837724e-8,0.004493171588724417,5.844789364045817e-6,-2.9787493231587065e-8,0.00449358619792652,5.60206433789655e-6,-2.9240893731404095e-8,0.004494087869175982,5.4161245069199806e-6,-2.882123891207294e-8,0.004494644740160421,5.322864554289205e-6,-2.8609503663609465e-8,0.004495216006784931,5.337654872160231e-6,-2.864069875751362e-8,0.004495760772876803,5.45491845871229e-6,-2.8902689986086383e-8,0.00449624562807949,5.6517357057193595e-6,-2.9344127629553888e-8,0.004496649625176552,5.894052353282223e-6,-2.988837234120634e-8,0.004496966197981279,6.14368973988668e-6,-3.044936038422412e-8,0.004497202413708704,6.364618307242032e-6,-3.094585642668188e-8,0.004497376491928267,6.527582409948589e-6,-3.131194447327545e-8,0.004497514640436966,6.6129278100694005e-6,-3.150337999113445e-8,0.004497647925917268,6.612117621637158e-6,-3.150093270015358e-8,0.004497809336845073,6.528610724443239e-6,-3.131231070153016e-8,0.004498030707089667,6.3785361876222695e-6,-3.09736925859592e-8,0.004498338829174895,6.191080665260008e-6,-3.055066942661581e-8,0.004498750077775436,6.0076683654676744e-6,-3.013646953689903e-8,0.004499263612814337,5.8780642609847445e-6,-2.9843203850422515e-8,0.004499854940636369,5.851244450515609e-6,-2.9781269629881294E-08,0.004500473936466841,5.960397636023314e-6,-3.002551100540538e-8,0.004501052719345036,6.205775394502228e-6,-3.057655086561226e-8,0.00450152565398311,6.544818406940442e-6,-3.133855594471292e-8,0.004501855052718436,6.89991925988118e-6,-3.213677936923044e-8,0.004502048299394567,7.184984577129539e-6,-3.277745584916125e-8,0.00450215485481849,7.337928245096862e-6,-3.312096524996092e-8,0.004502244939964075,7.34104622514252e-6,-3.31275673941889e-8,0.0045023832883471036,7.220589179745083e-6,-3.285626158580508e-8,0.0045026110823796145,7.030850470500054e-6,-3.2428926008768215e-8,0.0045029404092560505,6.834169236371335e-6,-3.198546698313869e-8,0.004503358106314494,6.685082210089396e-6,-3.1648403907449894e-8,0.004503833931529304,6.621199922123047e-6,-3.150250475699595e-8,0.004504329393182454,6.659916022098113e-6,-3.158735035096041e-8,0.004504805490228415,6.79906815339101e-6,-3.18986098972113e-8,0.0045052288712172945,7.020052500014815e-6,-3.239479081077634e-8,0.004505576291020284,7.292536290791366e-6,-3.300768877577651e-8,0.004505837190189702,7.580099251624076e-6,-3.3655110613896705e-8,0.0045060143045280365,7.846042790020471e-6,-3.42541110553583e-8,0.004506122446663604,8.058625318459529e-6,-3.473295260761845e-8,0.0045061858442556986,8.195104654863028e-6,-3.504028264202122e-8,0.004506234642510104,8.244233774000591e-6,-3.515070923594395e-8,0.004506301185498216,8.20730170658394e-6,-3.506705303538336e-8,0.004506416396345633,8.098093426558627e-6,-3.482021907021817e-8,0.004506606235169193,7.94206498498607e-6,-3.446740371929097e-8,0.004506887964378976,7.774744655900673e-6,-3.4088620681013444e-8,0.004507265898608951,7.63883680811971e-6,-3.378026681707891e-8,0.004507726866888514,7.578827637892328e-6,-3.364294154809401e-8,0.0045082369085281135,7.631796357853752e-6,-3.376059550196789e-8,0.0045087423408103665,7.81442404265071e-6,-3.4171064362557586e-8,0.004509179270358261,8.109527450340536e-6,-3.48355963905556e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json new file mode 100644 index 000000000..d989a12f4 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":26000,"numberOfSamples":1000,"samples":[0.004509493310776733,8.460255546355793e-6,-3.5625800851343465e-8,0.004509663584584268,8.78152154032578e-6,-3.634960149730122e-8,0.004509716789810693,8.989819707723907e-6,-3.681866430913203e-8,0.004509719059465651,9.037418772725032e-6,-3.692552117143939e-8,0.004509748243703133,8.930185223519827e-6,-3.668355434778159e-8,0.004509863647122957,8.719470842231082e-6,-3.620846132642241e-8,0.004510089653785742,8.476972036399517e-6,-3.5661533171045015e-8,0.004510416800722429,8.269299770251092e-6,-3.51925282944491e-8,0.004510813094911667,8.1427235238956e-6,-3.4905561743649874e-8,0.004511237012805131,8.118815983827459e-6,-3.4849442039030304e-8,0.004511647598100416,8.19695215375018e-6,-3.5023237901990346e-8,0.004512010754110658,8.359585736620415e-6,-3.538793530902102e-8,0.004512302608721269,8.577895407180773e-6,-3.5878908014654e-8,0.004512511101780664,8.817020399356672e-6,-3.6417590410461715e-8,0.004512636407156604,9.040913865577355e-6,-3.692247406897225e-8,0.004512690307657771,9.216869444768706e-6,-3.7319489010541575e-8,0.004512694498577715,9.319590010896785e-6,-3.755134208751638e-8,0.004512677812454461,9.33448051439994e-6,-3.758499305360356e-8,0.004512672525088187,9.259714461186162e-6,-3.74162487552752e-8,0.004512710155956202,9.106773676260358e-6,-3.7070886445067697e-8,0.004512817232229619,8.899452134994748e-6,-3.660239062283695e-8,0.004513011361703757,8.671416905011533e-6,-3.6086549932726506e-8,0.0045132978459024205,8.462410007400726e-6,-3.561303803422552e-8,0.00451366700674806,8.313087368408677e-6,-3.5273853268424084e-8,0.004514092641922462,8.258223307030978e-6,-3.5147920393724736e-8,0.004514532771288454,8.318077690988317e-6,-3.5281410931936163e-8,0.004514934630932754,8.4888481118899e-6,-3.566597134940736e-8,0.004515245854344678,8.735374126556136e-6,-3.622214330179837e-8,0.0045154316998782295,8.991891199064452e-6,-3.6801147360575755e-8,0.004515492902915043,9.176856590224277e-6,-3.7218586920753816e-8,0.004515473030595792,9.22132948769478e-6,-3.731873347690093e-8,0.004515445973338222,9.09843419372188e-6,-3.704104339955742e-8,0.00451548682469044,8.835578371895206e-6,-3.644751863773576e-8,0.00451564268107663,8.500985857177386e-6,-3.5692080359945736e-8,0.0045159197183348996,8.174205711565663e-6,-3.495399269113799e-8,0.004516289609363855,7.91891452501725e-6,-3.437668106843999e-8,0.004516706111846334,7.769533914623208e-6,-3.403776290168179e-8,0.004517121078763411,7.73134067417984e-6,-3.3949388348932536e-8,0.0045174946878258695,7.787734155315276e-6,-3.4074540770568025e-8,0.004517799867137044,7.908923469211388e-6,-3.434642142253354e-8,0.004518023021591153,8.059160327422076e-6,-3.468456742654183e-8,0.004518163140214663,8.202005982025426e-6,-3.50066650311153e-8,0.004518230411948181,8.30424890030949e-6,-3.523747823122548e-8,0.004518244570725208,8.33915192550796e-6,-3.531634932075353e-8,0.004518232782286238,8.28935594403696e-6,-3.5203891163581475e-8,0.004518226774465987,8.149365170645358e-6,-3.488762043767852e-8,0.004518259006711036,7.927116613346235e-6,-3.438542274392408e-8,0.004518358060544222,7.643963370228097e-6,-3.3745425584923236e-8,0.004518543856405558,7.332621283429884e-6,-3.3041356370972954e-8,0.004518823498710852,7.0329632269025115e-6,-3.236314547040654e-8,0.004519188579967757,6.785903929501321e-6,-3.180325247605029e-8,0.004519614661144808,6.626048418181081e-6,-3.14401232958339e-8,0.0045200634304379044,6.5740276672578925e-6,-3.132079397132222e-8,0.004520487966458727,6.62956304606739e-6,-3.144502131997278e-8,0.00452084147546764,6.766843341505083e-6,-3.175463526314589e-8,0.004521089187148414,6.934764185105069e-6,-3.2134004538126606e-8,0.004521221269959029,7.065025688552307e-6,-3.2428442843453624e-8,0.004521261859102045,7.089574850293132e-6,-3.248384715700535e-8,0.0045212674299407694,6.964089990219654e-6,-3.2199939344201606e-8,0.004521310513078177,6.687544084459722e-6,-3.1574464342686096e-8,0.004521453447203763,6.305670157088708e-6,-3.071085821791362e-8,0.0045217253573987225,5.893958647960642e-6,-2.9779688167653515e-8,0.004522114733755025,5.529133856038296e-6,-2.8954214723599135e-8,0.004522579377927455,5.264744210794258e-6,-2.8355366465152043e-8,0.004523065009217748,5.120982847527676e-6,-2.802885167464862e-8,0.004523521972907846,5.088150002782038e-6,-2.7952986672350293e-8,0.004523914736487703,5.136932989628306e-6,-2.8061821235107004e-8,0.004524224518460753,5.229079919518181e-6,-2.8269112293518485e-8,0.004524447866784532,5.325356167857952e-6,-2.8486202260608446e-8,0.004524593830297251,5.390497834119252e-6,-2.8633216627973057e-8,0.004524681160259874,5.396171432205578e-6,-2.864585654482284e-8,0.004524735849207278,5.323027317101781e-6,-2.8480176026552257e-8,0.0045247886943237964,5.16249823096028e-6,-2.8116730602371682e-8,0.004524872353940403,4.918444281738836e-6,-2.7564280225240977e-8,0.0045250174349796965,4.608134848323794e-6,-2.68619228883987e-8,0.004525247591606092,4.261615509273891e-6,-2.6077583364155316e-8,0.004525574321292053,3.918549452938378e-6,-2.530086898948843e-8,0.00452599277311532,3.622150479587777e-6,-2.462943302074595e-8,0.0045264801545203655,3.4107258886289212e-6,-2.4149954956603862e-8,0.004526998018263306,3.308450392319929e-6,-2.3917312554474847e-8,0.004527498775693957,3.317760005942039e-6,-2.3937301228621522e-8,0.00452793558120547,3.415707219466181e-6,-2.415823276235786e-8,0.00452827373820132,3.555942963102195e-6,-2.4475281614218993e-8,0.004528501076735233,3.677053577969154e-6,-2.4749321189987848e-8,0.004528634255226658,3.7166708540264696e-6,-2.4838951555615288e-8,0.00452871788049019,3.6288209284880697e-6,-2.4639908971730102e-8,0.004528814461392247,3.399578871249497e-6,-2.4120586107355082e-8,0.004528986348915549,3.0544546974012395e-6,-2.3338735228699577e-8,0.004529275447593868,2.652362755159554e-6,-2.2427751850493508e-8,0.0045296894826229355,2.266809562799965e-6,-2.1554061940523532e-8,0.004530201357681512,1.962172998408435e-6,-2.0863453384503786e-8,0.004530761107800889,1.7757792179593227e-6,-2.044053421769499e-8,0.004531313427122603,1.7122786235617054e-6,-2.0295983770420518e-8,0.0045318125655776954,1.749367675975404e-6,-2.037944352447753e-8,0.004532230187937357,1.8490802478591477e-6,-2.0605011670815894e-8,0.00453255650096998,1.968861091375431e-6,-2.08762767548505e-8,0.004532797413529103,2.069429992863889e-6,-2.1104137100273155e-8,0.004532970455627508,2.1191957801873115e-6,-2.121685754164669e-8,0.004533101006844266,2.0963386322046738e-6,-2.1164869031366592e-8,0.004533219236241922,1.9898190337828303e-6,-2.09231193072752e-8,0.004533357423629913,1.8001513809640854e-6,-2.0492836790277707e-8,0.004533546992225019,1.540165048997408e-6,-1.9903207651827864e-8,0.004533814625910253,1.2352637227640804e-6,-1.9211889086172134e-8,0.0045341773121543635,9.220902568912064e-7,-1.8501932634248034e-8,0.004534637007950439,6.443360771918933e-7,-1.7872295458798828e-8,0.004535176664792075,4.4499167138597644e-7,-1.7420339103780497e-8,0.004535760035304328,3.557925328380303e-7,-1.7217978115692215e-8,0.004536337215533742,3.866412902473646e-7,-1.728772350881937e-8,0.004536855876733859,5.191842687487436e-7,-1.7588072274695526e-8,0.004537275385870752,7.081369882607212e-7,-1.8016430469229954e-8,0.004537579125593926,8.912435030713721e-7,-1.8431639886474907e-8,0.004537780530744449,1.005317578228007e-6,-1.8690357071296403e-8,0.004537920538034231,1.0034699039837472e-6,-1.868616129977461e-8,0.0045380570398233745,8.682810605385142e-7,-1.837946472292758e-8,0.004538249294644987,6.169983072998986e-7,-1.780931248930263e-8,0.004538541670781989,2.970358272201004e-7,-1.708319176747392e-8,0.004538951579800054,-2.7231731686069303e-8,-1.634711520277816e-8,0.004539465565272268,-2.9245638234442717e-7,-1.5744867236873657e-8,0.004540044817016876,-4.530987714794202e-7,-1.537993968878856e-8,0.004540637691521912,-4.913904592554641e-7,-1.5292863661002783e-8,0.0045411941681401885,-4.179588426089708e-7,-1.545968048557915e-8,0.0045416771529875445,-2.646725790176748e-7,-1.580808820140591e-8,0.004542067915028178,-7.389589463817978e-8,-1.624181308946475e-8,0.004542365941693601,1.1161571806108388e-7,-1.6663601282918254e-8,0.004542585366851695,2.557719936323004e-7,-1.6991327574329404e-8,0.004542750301596352,3.328556897280507e-7,-1.7166487509062615e-8,0.004542890539772055,3.288339048433999e-7,-1.7157205799619142e-8,0.004543038110357333,2.4148307307612337e-7,-1.6958505979006495e-8,0.00454322442352209,8.020747945813414e-8,-1.659185787564851e-8,0.004543477357567356,-1.341554185295706e-7,-1.6104693284517906e-8,0.0045438176089469635,-3.6995599015852086e-7,-1.5568968349127696e-8,0.004544254057927853,-5.868612278189073e-7,-1.507632289085078e-8,0.004544778812882803,-7.409000787411416e-7,-1.4726631776247386e-8,0.0045453638821404034,-7.933529756111925e-7,-1.4607830316871693e-8,0.004545962512626217,-7.226259496806341e-7,-1.4768947865738407e-8,0.004546517831531095,-5.353354038386974e-7,-1.5194914668309396e-8,0.004546978401910495,-2.705801777601392e-7,-1.5796839796783648e-8,0.004547315606031961,7.426064280520287e-9,-1.6428760347708144e-8,0.00454753489003374,2.2771495362971647e-7,-1.6929398929145512e-8,0.004547674975302893,3.348200634734904e-7,-1.7172762210130373e-8,0.004547795269270398,3.0546407671952013e-7,-1.7106022758788838e-8,0.004547957342816333,1.5361082419481356e-7,-1.6760923023671023e-8,0.004548207818776337,-7.620926519655014e-8,-1.623857269178295e-8,0.004548567688113334,-3.2310178950335675e-7,-1.5677235728358874e-8,0.004549029689400049,-5.261904517049809e-7,-1.5215224434557068e-8,0.004549562879332015,-6.387181991297879e-7,-1.4958938590346338e-8,0.004550122119909111,-6.369676213818445e-7,-1.4962560924246113e-8,0.004550659547407562,-5.227487180281773e-7,-1.522226203843342e-8,0.00455113503524916,-3.198295674394947e-7,-1.568415057741117e-8,0.004551523306381531,-6.614611648123595e-8,-1.6261898726347644e-8,0.004551816641272785,1.9551328796095916e-7,-1.685796274830549e-8,0.004552023601182218,4.2580724108011224e-7,-1.7382583753550408e-8,0.004552165189758773,5.945892816202448e-7,-1.7766991018379748e-8,0.004552270093790798,6.837932410099917e-7,-1.7970026091410244e-8,0.004552370226282839,6.880617875256065e-7,-1.797954851084639e-8,0.004552497089156715,6.141061808103928e-7,-1.781091130786019e-8,0.004552678823971549,4.796156243032983e-7,-1.7504429067141582e-8,0.004552937441607541,3.1202357072442164e-7,-1.7122570952647516e-8,0.004553285657210565,1.4683488458868566e-7,-1.6746191281231358e-8,0.004553723072438308,2.461230159602889e-8,-1.6467701649164962e-8,0.004554232297584862,-1.4673606685835707e-8,-1.6378198838017022e-8,0.004554776931368462,5.916408340345163e-8,-1.654648595704409e-8,0.004555304544316013,2.5471410996338887e-7,-1.699210890005788e-8,0.004555757580182239,5.487508779098537e-7,-1.766206390844868e-8,0.00455609163018589,8.847980560550384e-7,-1.8427567403072217e-8,0.004556294266149341,1.1862585904106192e-6,-1.9114066338961307e-8,0.00455639356224145,1.3819276275300728e-6,-1.955944643880223e-8,0.004556449423840962,1.4320994076717743e-6,-1.967347844662727e-8,0.00455653146260646,1.3415196289400694e-6,-1.9467164239301853e-8,0.004556695250636879,1.1538974614742377e-6,-1.9040064669564954e-8,0.00455696762660136,9.337292242152009e-7,-1.8538868697838413e-8,0.004557344253094815,7.457228920368247e-7,-1.8110674855141883e-8,0.004557796262614695,6.393184058846508e-7,-1.7867944352973605e-8,0.004558280964655819,6.408021303045762e-7,-1.7870661006435703e-8,0.004558752717751708,7.521507776956689e-7,-1.812364701480733e-8,0.004559171865542613,9.545520907436515e-7,-1.8584396920373626e-8,0.004559510918417762,1.214685417394258e-6,-1.9177186559210626e-8,0.0045597577345257365,1.492268065989241e-6,-1.9810175736451022e-8,0.004559915758252532,1.747525782261627e-6,-2.0392490975707653e-8,0.004560001790681829,1.947399946982737e-6,-2.084852456530275e-8,0.004560042130719432,2.069755428846989e-6,-2.112766147211479e-8,0.004560068031127442,2.105379942421046e-6,-2.1208875035905857e-8,0.004560111313149676,2.0580137470542224e-6,-2.110073390215724e-8,0.004560200668904181,1.943025512553438e-6,-2.083829693588606e-8,0.004560358702285993,1.785412603296129e-6,-2.0478523102675264e-8,0.004560599413535639,1.6174458646150957e-6,-2.009495393525646e-8,0.004560925771429382,1.4758038902445344e-6,-1.977126696599221e-8,0.004561327227637577,1.3976103681723366e-6,-1.9592281027131787e-8,0.004561777687863393,1.414475222692563e-6,-1.963031184849548e-8,0.004562235579990404,1.5439760444566057e-6,-1.9925614673578647e-8,0.004562648675447503,1.7796412722016043e-6,-2.046341689014831e-8,0.004562966076598825,2.0834817290894464e-6,-2.1156859279096877e-8,0.004563156563769151,2.3880171788488707e-6,-2.1851733662215338e-8,0.004563226026995868,2.6134961406077906e-6,-2.236596297709388e-8,0.004563222002259049,2.697182257226839e-6,-2.255654425324677e-8,0.004563218140920344,2.6200473503104345e-6,-2.2380369070183947e-8,0.004563285177328307,2.4142697533356353e-6,-2.1911080480621846e-8,0.00456346510562536,2.1474700508499156e-6,-2.1302898831592876e-8,0.0045637614855055355,1.8952029862123072e-6,-2.0727876983910757e-8,0.004564146109374209,1.717390042126911e-6,-2.0322347502066937e-8,0.004564573586655692,1.6467160412382832e-6,-2.0160696512706902e-8,0.004564995621143562,1.6879982482464885e-6,-2.025403919365333e-8,0.004565371098880404,1.823849272809698e-6,-2.0563061761098215e-8,0.004565671575998424,2.0224636955771143e-6,-2.1015577494141815e-8,0.004565883304822525,2.2451570701558744e-6,-2.1523520714831093e-8,0.004566007062175339,2.4528861969496664e-6,-2.1997743592595424e-8,0.004566056469157245,2.6116666971517507e-6,-2.23604574329312e-8,0.004566055109573586,2.6967378051573467e-6,-2.2554903643749895e-8,0.004566032787591015,2.6952576374760298e-6,-2.2551638035756678e-8,0.004566021340058094,2.6074130943391173e-6,-2.2351082445335482e-8,0.004566050456020915,2.445916611802514e-6,-2.198229461679592e-8,0.004566143978834918,2.234071638222029e-6,-2.1498460356284963e-8,0.004566316991076654,2.002834908710053e-6,-2.0970174692905903e-8,0.004566573698773829,1.7872369419549948e-6,-2.047735188978444e-8,0.004566906025496633,1.6222415688750605e-6,-2.009987915744285e-8,0.004567292941820179,1.5378947751270364e-6,-1.9906572258774763e-8,0.0045677009482845456,1.5534732761251689e-6,-1.9941722705096247e-8,0.004568086845586504,1.6706423254153708e-6,-2.0209304708076832e-8,0.004568404479915657,1.8669001932336232e-6,-2.065787129431821e-8,0.004568616641222311,2.0927296815380814e-6,-2.1174057753546027e-8,0.004568710628782926,2.277737563029436e-6,-2.159677431671749e-8,0.004568710906383361,2.3496980887248315e-6,-2.1760931647364762e-8,0.004568678450507578,2.2627328227331568e-6,-2.1561913449607736e-8,0.004568690934995052,2.0202730399911163e-6,-2.100789416692359e-8,0.004568811461316786,1.6765736725135978e-6,-2.0223021008261412e-8,0.004569064102334118,1.3138502582226867e-6,-1.939501198865483e-8,0.00456942983638702,1.0095623883627573e-6,-1.870048308376553e-8,0.0045698609228537225,8.126805895776015e-7,-1.8250956905805127e-8,0.004570301299600792,7.370286449055343e-7,-1.8077863586350383e-8,0.004570702395164331,7.675146472653699e-7,-1.8146849034032396e-8,0.004571031105591736,8.712119800734532e-7,-1.838299920858834e-8,0.004571271553897738,1.0077872223193491e-6,-1.8694474593890068e-8,0.004571423431715869,1.1371794672960694e-6,-1.898988427190855e-8,0.00457149912894306,1.224623094486609e-6,-1.9189713805360918e-8,0.004571520661368493,1.2439529482437433e-6,-1.9233970167685107e-8,0.004571516461258664,1.1798659800376192e-6,-1.90875063062554e-8,0.004571517887299565,1.0292685411183112e-6,-1.874320617434184e-8,0.00457155544903053,8.015811947188519e-7,-1.822266996676711e-8,0.004571654890494846,5.177527012148897e-7,-1.757386049492885e-8,0.0045718335249696285,2.0776980474633583e-7,-1.686531683855287e-8,0.004572097388308316,-9.323396016944465e-8,-1.6177255542095043e-8,0.004572439665645757,-3.4987692521596087e-7,-1.5590463436344316e-8,0.004572840644505964,-5.31972816140779e-7,-1.5173961796713732e-8,0.004573269348815289,-6.200415053200593e-7,-1.4972436045635267e-8,0.004573687024026574,-6.10406095595246e-7,-1.4994491965318193e-8,0.004574052809641157,-5.192579563073559e-7,-1.520320779417572e-8,0.00457433198222599,-3.843987328357727e-7,-1.5512049283710714e-8,0.004574506433080039,-2.6231970700412053e-7,-1.57915871799184e-8,0.004574585098804139,-2.1787955603130257e-7,-1.5893271807468845e-8,0.0045746091849351205,-3.056827632750247e-7,-1.569220003592137e-8,0.004574645498676162,-5.476968892825376e-7,-1.513834525051923e-8,0.004574765267068838,-9.184797312588896e-7,-1.4290196294897466e-8,0.00457501606601899,-1.3499749934384158e-6,-1.3303575679860455e-8,0.004575402559457306,-1.7569182650377685e-6,-1.2373436343486388e-8,0.00457588755670308,-2.0690376161348062e-6,-1.1660288023729968e-8,0.004576410675222101,-2.2521266223356963e-6,-1.1242149216779647e-8,0.004576911396180024,-2.3103385627944873e-6,-1.1109414454615705e-8,0.004577344958268909,-2.275047092560445e-6,-1.119036156480763e-8,0.004577688009744958,-2.190125367673378e-6,-1.1384764724171442e-8,0.00457793703023403,-2.1001362793857524e-6,-1.1590799048558753e-8,0.004578103680851678,-2.0432033769984585e-6,-1.1721260373927869e-8,0.004578209903486739,-2.0476287663152695e-6,-1.1711299731405369e-8,0.00457828387494594,-2.1305649056463137e-6,-1.1521549135013692e-8,0.004578356691217041,-2.2974938653969773e-6,-1.113942510021554e-8,0.004578459254883159,-2.5420904405371936e-6,-1.0579494532798996e-8,0.004578618975408969,-2.8466169571197294e-6,-9.882523233547e-9,0.004578856169100808,-3.183321162571054e-6,-9.112167432714705e-9,0.004579180478803452,-3.5174083811508843e-6,-8.34808453913955e-9,0.004579588120477424,-3.8118316727193404e-6,-7.674971745318212e-9,0.004580060934558044,-4.03352156185739e-6,-7.168392305513895e-9,0.0045805679854873955,-4.1600968235078126e-6,-6.87951141941344e-9,0.0045810699651512255,-4.185692981165825e-6,-6.821782230335321e-9,0.00458152603375295,-4.124467505914989e-6,-6.962856854404446e-9,0.004581902189684743,-4.010657797913334e-6,-7.224349646031663e-9,0.004582179915574498,-3.894438306832133e-6,-7.491268811747432e-9,0.004582363424246814,-3.833098119282915e-6,-7.632267271587255e-9,0.004582483126184382,-3.8777855317296025e-6,-7.53011848341852e-9,0.004582592398102796,-4.057840675385612e-6,-7.117693448106915e-9,0.004582755475052093,-4.367487092300224e-6,-6.408428922268497e-9,0.004583027684494128,-4.761913130848646e-6,-5.505193981758026e-9,0.004583434904318093,-5.1682652158940795e-6,-4.575001218916299e-9,0.004583962740856525,-5.509717091332434e-6,-3.793847647778333e-9,0.004584562235224711,-5.731726984261732e-6,-3.286608037184449e-9,0.0045851690079899594,-5.8173444046123675e-6,-3.092013230972495e-9,0.004585724984926677,-5.785936446522613e-6,-3.1655856948169594e-9,0.004586192672434863,-5.680003803249362e-6,-3.4098510201368928e-9,0.004586558909587067,-5.549240041603622e-6,-3.710862720240599e-9,0.004586831090544941,-5.438473165345392e-6,-3.965824489806852e-9,0.004587030516411275,-5.381337431846182e-6,-4.097587491428378e-9,0.004587186126494469,-5.398361853965937e-6,-4.059053627389166e-9,0.0045873298103882906,-5.49731379182367e-6,-3.8324359563939324e-9,0.004587493095288864,-5.6741958005571095e-6,-3.427014054705955e-9,0.0045877044693880785,-5.914235263036652e-6,-2.876857912876998e-9,0.004587986651218072,-6.192958116809043e-6,-2.238299632400325e-9,0.004588353448843592,-6.477950803344133e-6,-1.5858038797377467e-9,0.004588806428404769,-6.73216177730537e-6,-1.0043412823020856e-9,0.00458933233628059,-6.919340188748711e-6,-5.769299288868636e-10,0.004589902743292579,-7.011376771941958e-6,-3.6786881572565e-10,0.004590477310455618,-6.996130497857601e-6,-4.0485922692968167e-10,0.004591011167147137,-6.883260760486553e-6,-6.656513658249578e-10,0.0045914652682251846,-6.705371049354524e-6,-1.075393733113511e-9,0.004591817010039603,-6.512924106794449e-6,-1.5182606557942965e-9,0.004592067796621043,-6.363468442006583e-6,-1.8621675068497396e-9,0.004592244944227824,-6.307637731525589e-6,-1.9909320328163395e-9,0.004592396800370081,-6.375463343972728e-6,-1.835720290287429e-9,0.004592581636072272,-6.566741952320174e-6,-1.397147556305703e-9,0.004592852503308843,-6.848670800862258e-6,-7.506592754098574e-10,0.0045932418347822595,-7.16265852740837e-6,-3.085310633349787e-11,0.004593750787773998,-7.439775464126724e-6,6.039907256439864e-10,0.004594348004365676,-7.620693551409611e-6,1.0176568839792315e-9,0.004594979307958952,-7.67285027729872e-6,1.1353900564086016e-9,0.004595584733360852,-7.597882344516838e-6,9.60993606260401e-10,0.004596115629330661,-7.427042036220201e-6,5.663444100107817e-10,0.004596545284004681,-7.208277314545172e-6,6.172570217697634e-11,0.004596870828408168,-6.9916428475073475e-6,-4.377209163440163e-10,0.004597108555701069,-6.818392915343977e-6,-8.371051908542961e-10,0.004597286586221487,-6.715617670183615e-6,-1.0741512526115635e-9,0.004597438018468549,-6.6953943241077795e-6,-1.1211643140079087e-9,0.004597595917342151,-6.7563461785649045e-6,-9.814428534041288e-10,0.0045977900559172604,-6.8858632210796456e-6,-6.841521467843064e-10,0.004598044659033155,-7.062128212677125e-6,-2.796287018101613e-10,0.004598376318128057,-7.255916920005681e-6,1.6480339335871812e-10,0.004598791545151504,-7.4327601793754e-6,5.698408862789437e-10,0.004599284036273952,-7.55641510487658e-6,8.521963256757693e-10,0.004599832545317101,-7.59449169585154e-6,9.37519703522967e-10,0.004600401089893143,-7.526267837569374e-6,7.783330705853753e-10,0.0046009435048163455,-7.351117380604259e-6,3.7337668699399923e-10,0.004601413323426574,-7.094082392306315e-6,-2.1959916877791475e-10,0.004601777276461345,-6.804398311453375e-6,-8.872456883447427e-10,0.004602027574734469,-6.544807205465784e-6,-1.4852269544859042e-9,0.004602187108824936,-6.373998484428838e-6,-1.878640796994688e-9,0.004602304305622246,-6.328662725555859e-6,-1.983290254130587e-9,0.004602439234285484,-6.4122851305789306e-6,-1.7913894121004542e-9,0.004602646341656962,-6.59454075292182e-6,-1.372856112257814e-9,0.004602959791749618,-6.820555679744346e-6,-8.539567811146143e-10,0.004603385401025903,-7.026168406663905e-6,-3.8223413598513426e-10,0.004603900535041509,-7.154432726648315e-6,-8.862971018962839e-11,0.004604461221360877,-7.16909923779504e-6,-5.6530923583887666e-11,0.004605014161836207,-7.061911347469658e-6,-3.0496913721986693e-10,0.004605510173710997,-6.852198505821913e-6,-7.894778705239851e-10,0.004605915231864156,-6.579480498016876e-6,-1.4190378636351609e-9,0.004606216233404941,-6.291994615044852e-6,-2.0824711583876744e-9,0.00460642071017142,-6.035108556079831e-6,-2.675171494544614e-9,0.00460655193149057,-5.842863718623184e-6,-3.1186589302558516e-9,0.004606641995139615,-5.733972110264688e-6,-3.369853455113043e-9,0.004606725264452894,-5.711711571864843e-6,-3.4213163304000836e-9,0.0046068334424430035,-5.7661813773756325e-6,-3.2960088168680032e-9,0.004606992447073734,-5.877366283212291e-6,-3.0401786490361465e-9,0.004607220525040382,-6.01804827384349e-6,-2.7166204947669695e-9,0.004607526828035787,-6.156368380259616e-6,-2.3987754818787228e-9,0.004607909878637184,-6.2584771004198995e-6,-2.1646433927517645e-9,0.004608355861891447,-6.292108699703443e-6,-2.0885544550141327e-9,0.004608837460403657,-6.231941022115572e-6,-2.2288041686048496e-9,0.004609314869247811,-6.066944432541149e-6,-2.610692390028512e-9,0.004609741181179981,-5.808287594175388e-6,-3.208296374163034e-9,0.004610073532643847,-5.494016982094601e-6,-3.9337217762102935e-9,0.004610288280096579,-5.185259144008995e-6,-4.645941435360547e-9,0.004610393895995997,-4.950873931477467e-6,-5.186269288801948e-9,0.004610433184336685,-4.844246198175972e-6,-5.431895389162019e-9,0.004610470758879338,-4.8829096485003395e-6,-5.342766223918112e-9,0.0046105707030473,-5.0419564476459976e-6,-4.976589310976798e-9,0.004610775446429694,-5.26417400954597e-6,-4.465310329754646e-9,0.004611094963682681,-5.480348310975678e-6,-3.968302033161426e-9,0.00461150823724263,-5.62972692844612e-6,-3.625329611994953e-9,0.004611973094222571,-5.673786679284628e-6,-3.524987578971608e-9,0.0046124390559712505,-5.60146915226002e-6,-3.692726761576285e-9,0.004612859222188488,-5.427288532920816e-6,-4.095184948750271e-9,0.004613199097686521,-5.184761096077944e-6,-4.655216115005645e-9,0.00461344157660515,-4.917463952163088e-6,-5.272388730713527e-9,0.004613587996069912,-4.669665926120923e-6,-5.844552407820035e-9,0.004613655691602776,-4.478251084401866e-6,-6.28652082530562e-9,0.004613673077859672,-4.367267921755222e-6,-6.542744128551488e-9,0.00461367367651798,-4.345651474038695e-6,-6.592631310893555e-9,0.0046136904516331,-4.407814373872608e-6,-6.449178045460803e-9,0.004613751389181142,-4.536239263420983e-6,-6.152919507168062e-9,0.004613876649815567,-4.704994955452618e-6,-5.763751856803909e-9,0.004614077028175075,-4.883303608630905e-6,-5.352690069082215e-9,0.004614353162834188,-5.038827337005442e-6,-4.994329710158694e-9,0.004614695036423012,-5.140875843306533e-6,-4.759499974144619e-9,0.004615081647533657,-5.164078436357073e-6,-4.706796509128987e-9,0.004615481345908867,-5.093156815280933e-6,-4.871507157630509e-9,0.004615854140456318,-4.928932317867542e-6,-5.251665030544923e-9,0.004616157793161933,-4.694284295014727e-6,-5.794263848231378e-9,0.004616358878782183,-4.436656622864292e-6,-6.389541647842568e-9,0.004616447225878722,-4.222062557520083e-6,-6.884973524270293e-9,0.004616447316459371,-4.117217975337249e-6,-7.126660174101772e-9,0.0046164171712829195,-4.163817419832329e-6,-7.018720722844495e-9,0.004616430002982171,-4.358091358751388e-6,-6.5703061256921416e-9,0.004616545920780777,-4.64955458388336e-6,-5.898225015384205e-9,0.004616789519416018,-4.961068379082266e-6,-5.180477898492885e-9,0.004617144952363664,-5.21797868115541e-6,-4.5890532040936815e-9,0.004617567428571435,-5.370589400078979e-6,-4.238257150629672e-9,0.004618001377383055,-5.4024523567296e-6,-4.165786813726474e-9,0.00461839617858386,-5.326689531338634e-6,-4.341319230810882e-9,0.004618715659086564,-5.176427103811998e-6,-4.688546619249612e-9,0.004618941704013463,-4.994299138923035e-6,-5.1092602716603065e-9,0.0046190738457956015,-4.823500218588578e-6,-5.503860695653606e-9,0.004619126539673815,-4.701021915286869e-6,-5.786919842108562e-9,0.00461912513350184,-4.6530002781485684e-6,-5.897985711351209e-9,0.004619101113456684,-4.692128922859444e-6,-5.8076723886911916e-9,0.004619087174435325,-4.817110070681227e-6,-5.5190059356818914e-9,0.004619112672785507,-5.013950645613634e-6,-5.064416509080086e-9,0.004619199956383798,-5.258745206492392e-6,-4.499227652478228e-9,0.004619361925076508,-5.521396310506229e-6,-3.892989039720409e-9,0.004619600861690062,-5.769630238686212e-6,-3.3201995651143257e-9,0.0046199082837785595,-5.972903127371703e-6,-2.851352592334347e-9,0.004620265553426885,-6.106140175320044e-6,-2.5443702178223045e-9,0.004620645157437597,-6.15344235394916e-6,-2.4360418005486742e-9,0.004621012910332626,-6.111969284666793e-6,-2.5329705998129033e-9,0.004621331889116244,-5.995896088586415e-6,-2.8023280874564467e-9,0.004621569196957076,-5.839257062531263e-6,-3.16525563366286e-9,0.004621705946598681,-5.6949592448301445e-6,-3.499245426945735e-9,0.0046217486369424686,-5.626269776579186e-6,-3.6579976183436843e-9,0.004621736346891752,-5.688589628394338e-6,-3.5136773121236357e-9,0.004621735560203208,-5.9056093086997374e-6,-3.011976455429588e-9,0.004621818663207311,-6.252544277839716e-6,-2.2106262735571202e-9,0.004622034186749106,-6.660327133482274e-6,-1.269447535738715e-9,0.004622386277920894,-7.0421296244785226e-6,-3.8895869566759596e-10,0.004622835921998608,-7.326987257096725e-6,2.672247922603419e-10,0.004623320597655784,-7.481387241366695e-6,6.22078154458821e-10,0.004623778166074979,-7.511256501722334e-6,6.895832720469361e-10,0.0046241631750252934,-7.4503005879202574e-6,5.476957123973267e-10,0.0046244526906444455,-7.344777280885875e-6,3.031921981158643e-10,0.004624644751104253,-7.241142852555951e-6,6.324918068849496e-11,0.0046247535293354415,-7.178329664083658e-6,-8.227089394819571e-11,0.004624803929537004,-7.1838293799132266e-6,-6.982495105222414e-11,0.004624826696230001,-7.272134715425384e-6,1.3414464882997706e-10,0.004624854095060916,-7.444583539571314e-6,5.327371256362688e-10,0.004624916026302616,-7.690267618702546e-6,1.1006291093985203e-9,0.004625036574007785,-7.98793405485864e-6,1.7885067099525766e-9,0.004625231133799637,-8.30888821439031e-6,2.5298802519654072e-9,0.004625504428824734,-8.620815020618825e-6,3.2500039740028935e-9,0.004625849747329165,-8.892151827359156e-6,3.875986187591585e-9,0.0046262495157665465,-9.09652545200698e-6,4.346970267559263e-9,0.004626677147753625,-9.216883627944467e-6,4.623605244888573e-9,0.004627100098948487,-9.249002221467704e-6,4.6961442314090165e-9,0.004627484100502901,-9.204044867914665e-6,4.590434874603475e-9,0.004627798689161824,-9.109776567161958e-6,4.3708109803278244e-9,0.004628024187515499,-9.0095003276215e-6,4.1376398888795614e-9,0.004628159602392367,-8.956974239448121e-6,4.015455545081188e-9,0.004628229255540625,-9.005485803645908e-6,4.127521100134283e-9,0.004628283803510658,-9.1910726190435e-6,4.556926589182645e-9,0.004628390435834369,-9.514454774165462e-6,5.304877259037512e-9,0.004628610918423801,-9.931843970056032e-6,6.269651296939101e-9,0.004628975503068454,-1.03648245865506e-5,7.2696549997176675e-9,0.004629467998225569,-1.0728850454589621e-5,8.10939549229837e-9,0.004630032512152586,-1.0965482676576773e-5,8.65397700401509e-9,0.004630597398772655,-1.1060056137677217e-5,8.86984853736169e-9,0.004631101082919748,-1.1038122203419039e-5,8.816457412620772e-9,0.004631507147841215,-1.0948389067229884e-5,8.606690701628071e-9,0.004631806481354592,-1.0844288661248472e-5,8.364204739480547e-9,0.004632011465302068,-1.0771358781577292e-5,8.194291991699351e-9,0.004632147892557216,-1.0761401585255883e-5,8.170455351365712e-9,0.004632247893263616,-1.0831308542105932e-5,8.331728476942694e-9,0.00463234477781505,-1.0984114505098195e-5,8.685073680741978e-9,0.004632469369290628,-1.1210771926742844e-5,9.209415190899736e-9,0.004632647141513031,-1.1492171204089592e-5,9.860291714348777e-9,0.004632895765556187,-1.1801489544677315e-5,1.0575356211698413e-8,0.004633222987185644,-1.2107161747595294e-5,1.1281365019742708e-8,0.004633625109689717,-1.2376748980879223e-5,1.1903214390625413e-8,0.004634086659004174,-1.2581610090192167e-5,1.2374746891829162e-8,0.004634581752502566,-1.2701806877036646e-5,1.2650024924146413e-8,0.004635077356706937,-1.273044813037253e-5,1.2713298103112125e-8,0.004635538281190807,-1.2676599340062202e-5,1.2585709492729057e-8,0.004635933426539173,-1.2565907068775515e-5,1.2326775887080312e-8,0.0046362425090470906,-1.2438342120984666e-5,1.202920592778017e-8,0.004636462294497865,-1.234271921279755e-5,1.1806193185873564e-8,0.004636611028747824,-1.232775517799123e-5,1.1770617073140064e-8,0.004636729067608224,-1.2429993538057063e-5,1.2006973681361427e-8,0.004636873204322435,-1.2660614669240317e-5,1.2540806146547426e-8,0.004637103047741207,-1.2995764214321633e-5,1.3316407776853431e-8,0.004637461294852211,-1.3376967540621544e-5,1.4197950262497705e-8,0.00463795534065098,-1.3726217412767458e-5,1.5004554273269622e-8,0.004638550845381015,-1.3972478316380603e-5,1.5571711376454045e-8,0.004639183148953752,-1.4077211752893863e-5,1.5810383357853653e-8,0.0046397812865391925,-1.4045280259926954e-5,1.5732214181573113e-8,0.0046402914283477465,-1.3917086868911308e-5,1.5431235497281092e-8,0.004640688992994678,-1.3749519789539588e-5,1.50396004361683e-8,0.004640977811977925,-1.3597154104758875e-5,1.4683939035007512e-8,0.0046411816590931215,-1.3500634643284917e-5,1.4458435271925997e-8,0.004641334337283517,-1.3482814716284878e-5,1.4415936504639937e-8,0.004641471841569615,-1.3549864644392499e-5,1.45705737914381e-8,0.004641627345314647,-1.36943373473814e-5,1.4904873429144573e-8,0.004641828265389255,-1.3898382253809021e-5,1.5377192152694978e-8,0.004642094369945667,-1.4136568493739574e-5,1.592827642183505e-8,0.004642436229981527,-1.4378530825307724e-5,1.648746362443435e-8,0.004642853793025203,-1.4591962398589605e-5,1.6979710468902657e-8,0.00464333536372152,-1.4746476784586312e-5,1.7334602810121096e-8,0.004643857739129038,-1.481845010519349e-5,1.749756817785199e-8,0.00464438837763796,-1.479624509342569e-5,1.7441917675913e-8,0.0046448901141322415,-1.4684572553892183e-5,1.7178880316379137e-8,0.00464532817306209,-1.4506395760338885e-5,1.676197448758261e-8,0.0046456782783954416,-1.4300948688484878e-5,1.628240091514535e-8,0.004645933875498211,-1.4117326680498562e-5,1.5854168093428857e-8,0.004646110289799332,-1.4004423473821114e-5,1.5590715394014384e-8,0.004646244116896511,-1.399911276381716e-5,1.5577449679665026e-8,0.004646387005593405,-1.41153100211975e-5,1.5846355805771457e-8,0.004646594141764705,-1.4337032558028205e-5,1.6359950354097322e-8,0.004646909305258094,-1.4618613247030586e-5,1.701188561366317e-8,0.0046473503812339495,-1.4894178333601433e-5,1.7649042879564176e-8,0.004647900916773948,-1.5095625610264924e-5,1.811329983033688e-8,0.004648512809389593,-1.5173842404411922e-5,1.829077431406508e-8,0.004649120903019922,-1.5114403601433032e-5,1.8148248545685655e-8,0.004649663817187577,-1.4940331193331636e-5,1.7739550224659373e-8,0.004650101646361556,-1.4701189768492982e-5,1.7180166575556488e-8,0.004650423559198932,-1.4455016176381626e-5,1.6605176919502795e-8,0.004650644665764515,-1.4251827770794912e-5,1.613086614501808e-8,0.004650796624019296,-1.4124141025250696e-5,1.583268895658235e-8,0.004650917415804542,-1.4084914955533756e-5,1.5740543813909623e-8,0.004651043598431591,-1.4130241265291127e-5,1.5845089278510927e-8,0.0046512057278376125,-1.4243729279101672e-5,1.6107974164142077e-8,0.0046514261340793615,-1.4400690454054686e-5,1.6471579916206996e-8,0.00465171789456136,-1.4571531090473221e-5,1.6866922638427443e-8,0.004652084137226091,-1.4724599130893931e-5,1.7220302263998086e-8,0.00465251732741125,-1.4829134893015994e-5,1.746020024223448e-8,0.004652998819609395,-1.4859005735948932e-5,1.7525983107701823e-8,0.004653499526234626,-1.4797478165342453e-5,1.7378984205893643e-8,0.004653982822792938,-1.4642447874902636e-5,1.701461884775316e-8,0.004654410522758944,-1.4410540357957179e-5,1.6471859896107837e-8,0.004654751676673082,-1.4137726039344877e-5,1.5834608479389963e-8,0.0046549921899199246,-1.3874312315314267e-5,1.5219993013443092e-8,0.004655141733859297,-1.3673984905797297e-5,1.4752835810267254e-8,0.004655234441725839,-1.3579420898515158e-5,1.4532174851046341e-8,0.00465532189043984,-1.3609191262358246e-5,1.460084197006534e-8,0.00465545992364021,-1.3750758727023153e-5,1.4929278998332993e-8,0.004655693328327301,-1.3962304090208998e-5,1.5419907146882814e-8,0.004656043110456753,-1.4183068768481111e-5,1.5931259431933548e-8,0.0046565001678516875,-1.434927671056179e-5,1.631501554350779e-8,0.004657027305155954,-1.4411158052329369e-5,1.6455548921583325e-8,0.004657569281103155,-1.434612452943196e-5,1.630052615942731e-8,0.004658068049326739,-1.41639120076071e-5,1.5872851697627348e-8,0.0046584782426453645,-1.3901969676808915e-5,1.525993191601153e-8,0.0046587776708922075,-1.3613082255371558e-5,1.458484088844579e-8,0.004658969832612916,-1.3350233172794423e-5,1.397103491590227e-8,0.004659079003760188,-1.3154157206487545e-5,1.3513330900768914e-8,0.004659141208384155,-1.3046837117797856e-5,1.3262761688597618e-8,0.004659194957403009,-1.3031068730407019e-5,1.3225604937819598e-8,0.004659274330167408,-1.3094026415269862e-5,1.3371747416260096e-8,0.0046594050651191455,-1.3212282800757067e-5,1.3646426315830232e-8,0.004659602999671059,-1.3356523513515203e-5,1.3981232874721674e-8,0.004659873789227049,-1.3495310852038219E-05,1.430287645128278e-8,0.004660213024776066,-1.359808005239616e-5,1.4540151248134795e-8,0.00466060633304002,-1.3637992835869933e-5,1.4630579714044076e-8,0.00466102965981684,-1.3595349253137439e-5,1.4528372069494455e-8,0.004661450563042212,-1.3461902340691184e-5,1.421449651710166e-8,0.004661831730217652,-1.3245578696188559e-5,1.3707678548966238e-8,0.004662137755511344,-1.2973872164911173e-5,1.307227092715899e-8,0.004662344999202101,-1.2693012432152884e-5,1.2416231574338447e-8,0.0046624519407560735,-1.2460082818593682E-05,1.1872648439435237e-8,0.004662485004202495,-1.2327880026386206e-5,1.1564379854227212e-8,0.004662494901102442,-1.2327021407297365e-5,1.1562375295099926e-8,0.004662542595555069,-1.24533420275431e-5,1.185644126351985e-8,0.0046626799506357805,-1.2667322066857839e-5,1.2354101779958266e-8,0.004662933402383711,-1.2906251170550697e-5,1.2909087247827492e-8,0.004663297073919368,-1.3103506845817271e-5,1.3366273288023952e-8,0.004663736575308624,-1.3207064274389993e-5,1.360471420722314e-8,0.00466420034455511,-1.3191474217760806e-5,1.3565421464328888e-8,0.004664633821846689,-1.3061257113502004e-5,1.3259181775894936e-8,0.0046649923454657955,-1.284657142486857e-5,1.2756441236261749e-8,0.0046652500093320995,-1.2593575575264028e-5,1.2164869400910327e-8,0.004665403125135055,-1.2352518526780268e-5,1.160163133759852e-8,0.004665468293837048,-1.2166612359423423e-5,1.1167452954822372e-8,0.004665476372929213,-1.2064179756235221e-5,1.092829431744967e-8,0.004665464527011558,-1.205536188602705e-5,1.090765701107904e-8,0.00466546866248559,-1.2133139463074206e-5,1.1088976843000324e-8,0.004665517840456056,-1.2277264814901737e-5,1.1424838647350068e-8,0.00466563119751025,-1.245936221956031e-5,1.1848924275875613e-8,0.004665817006354218,-1.2647802841822536e-5,1.2287410809984839e-8,0.004666073053110041,-1.281166414378168e-5,1.2668190698852117e-8,0.004666387542373383,-1.292381306206243e-5,1.2928022906658796e-8,0.004666740117300406,-1.2963606556451226e-5,1.3018805625924864e-8,0.004667103089208761,-1.2919782368290056e-5,1.2914336858847914e-8,0.004667443516313451,-1.2793855787151033e-5,1.261828935995056e-8,0.004667727216102982,-1.2603634007130076e-5,1.2172443742013038e-8,0.004667925717887047,-1.2385223968453717e-5,1.1661335221281164e-8,0.004668025982969037,-1.2190587373047782e-5,1.1206425769168459e-8,0.004668040124918859,-1.2077562615726495e-5,1.0942668267392677e-8,0.004668009332740903,-1.2092131257680859e-5,1.0977046211594681e-8,0.004667995963365245,-1.2248776168792324e-5,1.1342816317376177e-8,0.004668063394253834,-1.2519839245074089e-5,1.1974895693262607e-8,0.004668252213447853,-1.2842352538933383e-5,1.272604191553377e-8,0.004668565476656956,-1.3140346753934688e-5,1.3419026252516424e-8,0.004668970137839872,-1.3350798188378615e-5,1.390712963685913e-8,0.00466941145688206,-1.3440881943664238e-5,1.4114239617360718e-8,0.004669831352637258,-1.3411820715628956e-5,1.4043647933471819e-8,0.004670183125758375,-1.3292231840828618e-5,1.3762398499525709e-8,0.004670439551567326,-1.3126587614643615e-5,1.3374333363953765e-8,0.0046705947835942166,-1.2963357965618242e-5,1.2992486691062576e-8,0.004670661871582767,-1.2845325839862214e-5,1.2716578643366719e-8,0.004670667699865216,-1.2802931475699457e-5,1.2617538625965364e-8,0.004670646681376949,-1.2850763728081769e-5,1.2729307862896565e-8,0.00467063427678483,-1.2987111806417097e-5,1.304775137827414e-8,0.004670661343090428,-1.3196164916613432e-5,1.353577457443399e-8,0.004670750064167247,-1.3452020070287972e-5,1.4132715042564545e-8,0.004670911777831962,-1.3723508501828329e-5,1.4765677409608379e-8,0.004671146597861861,-1.397894625705489e-5,1.5360669460035923e-8,0.004671444375319671,-1.4190158848444865e-5,1.5851986140975655e-8,0.004671786392194452,-1.4335593144657587e-5,1.6189419371909977e-8,0.004672147385320302,-1.440277455442945e-5,1.634395024210514e-8,0.004672497882915822,-1.439047323877524e-5,1.63128171558708e-8,0.004672807221955093,-1.4310754474099981e-5,1.6124358297051074e-8,0.004673047967062916,-1.4190585450886653e-5,1.5841798023873977e-8,0.004673202402940901,-1.4071681804180103e-5,1.556283414706472e-8,0.004673270739720579,-1.4006175424222032e-5,1.5409373309145138e-8,0.004673278417874302,-1.4045585886180635e-5,1.5501616287218707e-8,0.0046732771097705355,-1.4223112429589761e-5,1.5916656213600744e-8,0.0046733335426375954,-1.4535231411889031e-5,1.6645637433110732e-8,0.0046735060396706435,-1.4934337773744007e-5,1.7576826633511244e-8,0.004673819189801707,-1.5341741234222534e-5,1.852618723245616e-8,0.004674252268579398,-1.5677278964770178e-5,1.9306615085994873e-8,0.004674748944885229,-1.5888924620635015e-5,1.9797027686382072e-8,0.004675240882951573,-1.5966460031890974e-5,1.997414641383107e-8,0.004675670613593522,-1.593625842060622e-5,1.9900119679567408e-8,0.0046760041793818975,-1.5845643844857367e-5,1.9685820881802324e-8,0.00467623309851158,-1.5746690960885734e-5,1.945294625392006e-8,0.004676369818220206,-1.568457041001168e-5,1.930686205008403e-8,0.004676440772138309,-1.5691203227189234e-5,1.932191376955323e-8,0.004676479528732202,-1.5782987495501686e-5,1.9536206216259085e-8,0.004676520954653062,-1.5961033347667108e-5,1.995215400474037e-8,0.004676596422060922,-1.6212951573783454e-5,2.0540610281932875e-8,0.004676730027189161,-1.6515837372076925e-5,2.1247813816331533e-8,0.004676935979999788,-1.6840152095742693e-5,2.2004505046599017e-8,0.004677217318990602,-1.7154102391278926e-5,2.2736247570911134e-8,0.00467756602649892,-1.7428077777037665e-5,2.3373860561672378e-8,0.004677964479425937,-1.763863379374355e-5,2.3862716425329537e-8,0.0046783879238457065,-1.7771596392012232e-5,2.4169923607945506e-8,0.004678807583239352,-1.782417897198473e-5,2.4289203675387195e-8,0.004679194192743565,-1.780618647288843e-5,2.4243687912563586e-8,0.004679521978008149,-1.7740311713799754e-5,2.4086639550366526e-8,0.0046797732769125674,-1.7661270247751158e-5,2.3899445231071237e-8,0.004679943926326737,-1.7612934963310745e-5,2.378485408762777e-8,0.00468004874105327,-1.76419904879494e-5,2.38520116422879e-8,0.0046801248137174605,-1.7786845602176726e-5,2.4190427202702886e-8,0.004680228593309382,-1.806263404032576e-5,2.4834927068767032e-8,0.004680422650323219,-1.844760764224442e-5,2.5734020536887993e-8,0.0046807527992763975,-1.8880759513499523e-5,2.674458018490809e-8,0.0046812254701966765,-1.9278549072575866e-5,2.7671099756894892e-8,0.004681800427430815,-1.9566523632612258e-5,2.8339657629219468e-8,0.004682406079741662,-1.9708395147643984e-5,2.8665861411746463e-8,0.004682968366748158,-1.9715465849410977e-5,2.867679352392317e-8,0.004683435608529261,-1.9634266355882566e-5,2.8481924313167707e-8,0.0046837883337889595,-1.952439154406978e-5,2.822106187628867e-8,0.004684035487230924,-1.9439673756009193e-5,2.8020203083391307e-8,0.004684204485088165,-1.941806770279495e-5,2.7967929163297136e-8,0.00468433116167156,-1.9479029937500837e-5,2.8109428435669545e-8,0.004684452186456466,-1.9625176187452407e-5,2.845049597540157e-8,0.004684600168465979,-1.984553498761316e-5,2.896517248241957e-8,0.0046848006032723915,-2.0118998764571928e-5,2.9603786467988204e-8,0.0046850698397548065,-2.041773635670475e-5,3.0300926191513015e-8,0.004685413783371999,-2.0710763850050337e-5,3.098384943257845e-8,0.00468582740770953,-2.096777642395736e-5,3.1581541361914726e-8,0.004686295292293071,-2.1163165376747107e-5,3.203417446835051e-8,0.004686793459251504,-2.127986172954694e-5,3.230208207219933e-8,0.004687292561605285,-2.1312386356273433e-5,3.2372809600881676e-8,0.0046877621105637915,-2.126854613740853e-5,3.2264991110637834e-8,0.004688175258111988,-2.1169442043346494e-5,3.202831932504239e-8,0.004688513640797768,-2.104761290672734e-5,3.173919627450822e-8,0.004688771804655766,-2.0943260277204035e-5,3.149188772523059e-8,0.004688960704666771,-2.089847309766487e-5,3.138494951118754e-8,0.004689109427812848,-2.0949239557927876e-5,3.150244410680444e-8,0.0046892635417487075,-2.111546408427255e-5,3.189053130139887e-8,0.004689477922148566,-2.139077308886334e-5,3.253367882818093e-8,0.004689802698454854,-2.1736387602686895e-5,3.3340499356742825e-8,0.004690264446209853,-2.2085256460148676e-5,3.415361339714332e-8,0.004690850572478942,-2.2360461861946586e-5,3.4792836260214054e-8,0.004691507905376526,-2.2503277074614084e-5,3.512087981369812e-8,0.0046921603699025816,-2.2496547289027997e-5,3.5098078105129547e-8,0.004692737515622717,-2.2369205648309436e-5,3.4792895698371355e-8,0.0046931977430484575,-2.218033828194287e-5,3.434443116540985e-8,0.004693535450245421,-2.19946049648199e-5,3.390460552743203e-8,0.004693773572452373,-2.1862829343110403e-5,3.359254933534034e-8,0.0046939501630360635,-2.181362607661693e-5,3.3475032195887265e-8,0.004694106408800557,-2.1853986931876104e-5,3.356800326714713e-8,0.004694278929507639,-2.1974145041739544e-5,3.384814078091561e-8,0.004694495986966662,-2.2153135943492177e-5,3.4265942399950725e-8,0.00469477605708682,-2.236343686777121e-5,3.475658838964401e-8,0.004695127385027143,-2.25745849279392e-5,3.5248415385464474e-8,0.004695547882976639,-2.2756322352379375e-5,3.567032900021728e-8,0.004696025355911659,-2.2881787560675736e-5,3.595935203368904e-8,0.004696538399017729,-2.2930998865573962e-5,3.6068830865346576e-8,0.0046970585118214685,-2.2894428695522926e-5,3.597678695177047e-8,0.0046975538398428066,-2.277591695522771e-5,3.569266368776685e-8,0.004697994417085737,-2.2593897361128732e-5,3.52601055038316e-8,0.004698358163045725,-2.238005741037552e-5,3.475374675121492e-8,0.0046986364344812365,-2.2175013783692378e-5,3.4269031535764016e-8,0.0046988377483364,-2.2021316841364653e-5,3.3905777612987485e-8,0.004698988505350433,-2.1954843872662592E-05,3.3747957039559153e-8,0.00469913001615439,-2.199603289469974e-5,3.384312019587815e-8,0.004699311555481439,-2.2142626039551497e-5,3.418542095617081e-8,0.004699579681160445,-2.2366028659942287e-5,3.470720003209844e-8,0.004699965159038889,-2.261379023439517e-5,3.528496641002932e-8,0.0047004707613474824,-2.2820209470544427e-5,3.576439822294622e-8,0.004701065275270101,-2.29245915141501e-5,3.600321104272019e-8,0.0047016890656927665,-2.2891951736126434e-5,3.591970431021748e-8,0.004702272011748362,-2.2726666777386748e-5,3.5524736397453896e-8,0.004702756920507253,-2.2470877734699576e-5,3.491788013206634e-8,0.004703116987165939,-2.2187808782063738e-5,3.4248104068405246e-8,0.004703359534640568,-2.193925935774467e-5,3.3660754039070295e-8,0.004703517130520162,-2.176842696306175e-5,3.325714330433221e-8,0.004703633418269326,-2.1693450292192006e-5,3.3079469125848756e-8,0.004703750784664788,-2.1710014565138826e-5,3.311710181821752e-8,0.004703902999268972,-2.1798210735348334e-5,3.332284229703271e-8,0.00470411241473192,-2.1929606093883388e-5,3.362958798550564e-8,0.004704389870876045,-2.207267688476105e-5,3.396308166894864e-8,0.0047047356012256255,-2.2196523423997598e-5,3.425061394883235e-8,0.004705140226676658,-2.2273583221930157e-5,3.4427402906015455e-8,0.004705585684179088,-2.2282131344618075e-5,3.444250019797068e-8,0.004706046484988976,-2.2209080754436687e-5,3.426539393023329e-8,0.004706492021561705,-2.205305499960459e-5,3.389321201807501e-8,0.004706890608130669,-2.182697129221664e-5,3.3356730967267744e-8,0.00470721539646339,-2.1558758464267093e-5,3.2721977504560417e-8,0.004707451321018943,-2.12887104727388e-5,3.208392178194558e-8,0.004707601124258925,-2.1062650368795808e-5,3.1550339335174934e-8,0.004707687923092548,-2.092164673284272e-5,3.1217597646232705e-8,0.004707752373939844,-2.0890881213821516e-5,3.1144495257733445e-8,0.004707844271649323,-2.097124597532204e-5,3.1332583670419434e-8,0.004708010475613604,-2.113670162270532e-5,3.172008981581706e-8,0.004708282385389394,-2.1338748014371744e-5,3.219257613945702e-8,0.0047086664359290925,-2.15173693706775e-5,3.2608780636782456e-8,0.0047091404880734164,-2.161606952423453e-5,3.283599569519555e-8,0.004709657840613588,-2.159728736032355e-5,3.278626927707014e-8,0.0047101587972046815,-2.14536381865304e-5,3.244275536750323e-8,0.004710587092019814,-2.1210639927389882e-5,3.1866026733256766e-8,0.004710905784652387,-2.0918934500008726e-5,3.11756702803512e-8,0.004711106530119068,-2.0638435018091832e-5,3.051288304831013e-8,0.004711208865517889,-2.0420804081158147e-5,2.999917704131898e-8,0.004711250995690448,-2.029710843358638e-5,2.9707348003223693e-8,0.004711277151420492,-2.0274053881011356e-5,2.9652724627549498e-8,0.00471132674977426,-2.033766978305856e-5,2.9801983439850805e-8,0.00471142806619857,-2.046071242907155e-5,3.009067825446045e-8,0.004711596296366146,-2.061020016312087e-5,3.044100612335261e-8,0.004711834389857875,-2.0753171954947886e-5,3.077533281366249e-8,0.004712134965726818,-2.086041685204148e-5,3.1024925417154556e-8,0.004712482251510385,-2.090882235568343e-5,3.1135456149055995e-8,0.004712853737906606,-2.0883211847782863e-5,3.107133595210802e-8,0.004713221881139335,-2.0778334625325025e-5,3.082042383122008e-8,0.004713556597760101,-2.0601134262572815e-5,3.0399376917884984e-8,0.004713829354068818,-2.037263915355485e-5,2.9858068237885336e-8,0.004714019207495355,-2.0127999853239356e-5,2.9279591365504785e-8,0.004714120040236812,-1.9912737159773322e-5,2.8771311538676714e-8,0.00471414655809,-1.9773869991005393e-5,2.8443873226592142e-8,0.004714135386249772,-1.9746861801332327e-5,2.83804276963628e-8,0.004714138370032906,-1.984258160661189e-5,2.8606000254505665e-8,0.004714208596707071,-2.004036454826956e-5,2.9071316232283385e-8,0.004714383927031075,-2.029154199139544e-5,2.966130936884501e-8,0.00471467478824134,-2.0532945180363846e-5,3.022705867006223e-8,0.004715061013315357,-2.070513244011117e-5,3.0628741349271914e-8,0.00471549819391272,-2.076855953990602e-5,3.0773644450018024e-8,0.004715930398805945,-2.0712828599232458e-5,3.06378229761092e-8,0.00471630479798327,-2.0557372487725065e-5,3.02675794944921e-8,0.00471658419168978,-2.0344538606421003e-5,2.9763064924636998e-8,0.004716754587575241,-2.012762846230072e-5,2.9250034311585e-8,0.004716826391143379,-1.9957347775696705e-5,2.8847903519089865e-8,0.004716829482927148,-1.9870328926400146e-5,2.8642734974974278e-8,0.004716804183631088,-1.9882591570309303e-5,2.8671899620700577e-8,0.004716791192796836,-1.9989005281011388e-5,2.8922902741116466e-8,0.004716823437325514,-2.016770532199581e-5,2.934387756265717e-8,0.004716921469150951,-2.0387043502867066e-5,2.986002387931219e-8,0.0047170924226144694,-2.0612596164450385e-5,3.0390138793191444e-8,0.004717331446500595,-2.081266616228881e-5,3.085955828244744e-8,0.00471762425529221,-2.0961852660023846e-5,3.120852397033979e-8,0.004717949786709429,-2.104309008518074e-5,3.139695112234478e-8,0.004718282560551554,-2.104890203008696e-5,3.1407378398035346e-8,0.00471859492533725,-2.0982516486430054e-5,3.1247623321056654e-8,0.004718859796079545,-2.0859052414961204e-5,3.0953605446153896e-8,0.004719054624823485,-2.0706285041295662e-5,3.059112867970817e-8,0.004719167008269947,-2.0563643657749342e-5,3.025342322589191e-8,0.0047192012609654915,-2.0477478018717793e-5,3.00498426889888e-8,0.00471918345441392,-2.0491050133859172e-5,3.0082155472353386e-8,0.004719160711673773,-2.0630138351970563e-5,3.041060704503147e-8,0.004719191097019601,-2.0889406258420564e-5,3.1021931692673706e-8,0.004719325043469325,-2.1227769789697886e-5,3.181866698159706e-8,0.0047195859260143365,-2.1578468896618452e-5,3.264310559084911e-8,0.004719960156972756,-2.187111814865657e-5,3.3329373513019146e-8,0.004720402230039262,-2.2055137896671795e-5,3.375863627291979e-8,0.004720851199728154,-2.211368644516015e-5,3.3891818178741824e-8,0.004721249742534635,-2.2064084478755165e-5,3.3770422384395773e-8,0.004721558271420089,-2.194802371751545e-5,3.349326327499581e-8,0.004721761248337392,-2.181765833721016e-5,3.318355542341268e-8,0.004721866556401599,-2.1722520963282726e-5,3.295805030285286e-8,0.004721900238871268,-2.169987115382176e-5,3.29043510790176e-8,0.004721898892204645,-2.176929055241197e-5,3.306826983285239e-8,0.004721901529417458,-2.193141803818353e-5,3.345092527192641e-8,0.004721942348745987,-2.2170269412426117e-5,3.401426136456454e-8,0.004722045516212493,-2.2458138717909424e-5,3.4692640398515564e-8,0.004722222546618573,-2.2761699487966296e-5,3.540726851507083e-8,0.0047224722135377,-2.3047940802877143e-5,3.6080226653327896e-8,0.004722782394577666,-2.3288951948910685e-5,3.6645758612571877e-8,0.004723132980101565,-2.3465103100195668e-5,3.7057739558551584e-8,0.004723499026608934,-2.3566743782828097e-5,3.729363200615465e-8,0.004723853726366984,-2.3594919509001365e-5,3.7356145869933e-8,0.004724171226410891,-2.356158846622636e-5,3.727375668144662e-8,0.00472442964344223,-2.3489522051841577e-5,3.710048713221879e-8,0.004724614776565834,-2.3411574874169688e-5,3.691415587823861e-8,0.004724724794459883,-2.3368277341243487e-5,3.6810591870453345e-8,0.0047247752100325596,-2.340213360934399e-5,3.6890033197833116e-8,0.004724801818033701,-2.354741153860014e-5,3.723294414462482e-8,0.00472485768521177,-2.3816423663497148e-5,3.786770260091306e-8,0.004725000635390749,-2.418751526032683e-5,3.8742466858000376e-8,0.004725272431033011,-2.4603620051597823e-5,3.972202334985268e-8,0.0047256788219663705,-2.4987702204493527e-5,4.062439541897351e-8,0.004726183285667441,-2.5270759185625143e-5,4.128696584233639e-8,0.004726720126803429,-2.541754230471784e-5,4.162712542300643e-8,0.004727219448344189,-2.5435941739691993e-5,4.166429361538732e-8,0.004727629770664268,-2.536784151980682e-5,4.149811650246318e-8,0.00472792886355938,-2.5270329894455154e-5,4.126387077300937e-8,0.00472812265068321,-2.5197835046972124e-5,4.109015364379114e-8,0.0047282373150355555,-2.5190669974525258e-5,4.1071880240448236e-8,0.004728309665470908,-2.5270343003186838e-5,4.125937504726307e-8,0.004728378624615121,-2.543968430350618e-5,4.165883422548709e-8,0.004728478767596398,-2.5685707126707573e-5,4.223916565564198e-8,0.004728635885651726,-2.5983880913205705e-5,4.294209090323031e-8,0.004728864409439411,-2.6303109090072288e-5,4.369389967187808e-8,0.00472916659618418,-2.6610845597161917e-5,4.44175634064523e-8,0.004729533321857145,-2.687781278328495e-5,4.5043926732075706e-8,0.00472994622235607,-2.708187235910797e-5,4.55208730022123e-8,0.004730380793270376,-2.721067737099242e-5,4.5819553184842186e-8,0.004730809906752847,-2.7262961196945158e-5,4.593735403726144e-8,0.004731207297948036,-2.724866569169805e-5,4.589813042879811e-8,0.004731550882303068,-2.7188193463415645e-5,4.5750407942570875e-8,0.004731825972564864,-2.7110878798737e-5,4.5563763450471336e-8,0.004732028530653421,-2.7052515132200603e-5,4.54229491228676e-8,0.004732168446389242,-2.7051350258781955e-5,4.541834024160813e-8,0.004732272116670077,-2.714157631827611e-5,4.563044734216501e-8,0.004732382358303023,-2.734381236381859e-5,4.610740117539504e-8,0.004732552676207028,-2.765400554259749e-5,4.6838853150868065e-8,0.004732833512182073,-2.803550331529912e-5,4.773748847006038e-8,0.004733252285295634,-2.842190019560124e-5,4.864598097253564e-8,0.004733796293531172,-2.8735835655547945e-5,4.9381511830951945e-8,0.004734411109839088,-2.891853713979851e-5,4.980557132802008e-8,0.004735019503554785,-2.895397730306729e-5,4.9880998252676156e-8,0.004735551138537044,-2.887270533546891e-5,4.9680920882470014e-8,0.00473596575267552,-2.873482839748109e-5,4.9348284107208375e-8,0.004736259519104328,-2.8605104853960317e-5,4.903667122874668e-8,0.004736457060975534,-2.8533821667809858e-5,4.886493863585071e-8,0.0047365979415711565,-2.85485921602435e-5,4.88979128990018e-8,0.004736724583238949,-2.8654807118183317e-5,4.914769787656253e-8,0.0047368742116397,-2.8840382877356432e-5,4.958511728727826e-8,0.004737074552126241,-2.9081541619000465e-5,5.015347478913712e-8,0.004737342012367782,-2.934812648323624e-5,5.078111482310837e-8,0.004737681309886265,-2.960821833601568e-5,5.139231870366264e-8,0.004738086098954303,-2.9832193363411564e-5,5.191692419486976e-8,0.004738540469209245,-2.9996259595434974e-5,5.229874245767923e-8,0.0047390212881655396,-3.0085394338945098e-5,5.2502529913061444e-8,0.004739501377336211,-3.0095423581682325e-5,5.251886124976056e-8,0.004739953305782397,-3.0033870472254683e-5,5.236603682676017e-8,0.004740353348319325,-2.9919407976351642e-5,5.208868447062693e-8,0.004740685200385828,-2.9779991128983356e-5,5.175327771239827e-8,0.004740943182403257,-2.9649741613378564e-5,5.1440738209547884e-8,0.004741134674185391,-2.9564621576085497e-5,5.1236171222247815e-8,0.004741281429687509,-2.955689735080932e-5,5.121571324845782e-8,0.004741419089674041,-2.9648317114137292e-5,5.1430346955513816e-8,0.004741593583568248,-2.984236535396184e-5,5.18876132323745e-8,0.0047418528064249385,-3.0117417530783683e-5,5.2535574522677666e-8,0.004742232999460031,-3.0424697664623252e-5,5.325821214909581e-8,0.004742742611363063,-3.069609207813721e-5,5.3894094209571386e-8,0.004743351393757184,-3.086414788615748e-5,5.4283751424790724e-8,0.004743994368040548,-3.088836563852584e-5,5.433186801908802e-8,0.004744593460110826,-3.0773559410401626e-5,5.4050676811265004e-8,0.004745086788273111,-3.0567784478253706e-5,5.3554919237006306e-8,0.004745448989905369,-3.034083898991905e-5,5.301067418598428e-8,0.0047456930853903715,-3.015732469647893e-5,5.257126350003612e-8,0.004745857698513026,-3.00585998089884e-5,5.233439298931279e-8,0.004745990240669041,-3.0058200221043662e-5,5.233146185427817e-8,0.004746133999600095,-3.01466801907586e-5,5.2539325380684306e-8,0.004746321325199566,-3.0299826522431672e-5,5.289999214373297e-8,0.004746571565708012,-3.048628868783824e-5,5.333878061980279e-8,0.004746891547053987,-3.067323831866283e-5,5.377769034777425e-8,0.004747276976592629,-3.083031101807034e-5,5.414468688672485e-8,0.0047477141402886116,-3.09325591886319E-05,5.4380693556431183e-8,0.004748181886555148,-3.096289364885244e-5,5.444541244979396e-8,0.004748654088097438,-3.09141513535335e-5,5.432224087989675e-8,0.004749102826477359,-3.079058892868887e-5,5.4021765189798875e-8,0.0047495023578297945,-3.060826542501298e-5,5.358256772490767e-8,0.004749833466407175,-3.0393770407297746e-5,5.306810148158317e-8,0.0047500874842839194,-3.018108231591561e-5,5.2559163277776153e-8,0.004750269208928283,-3.000667785776047e-5,5.214226026089898e-8,0.004750398005292498,-2.990333609399654e-5,5.1894905169507964e-8,0.004750506508683392,-2.9893424852776115e-5,5.186969825178604e-8,0.004750636541043871,-2.9982645840082855e-5,5.2079533030619567e-8,0.0047508320083346,-3.0155421919572188e-5,5.248676449937229e-8,0.004751128908639331,-3.037369192805859e-5,5.300052553271625e-8,0.0047515437134295745,-3.058146946640733e-5,5.348771766126394e-8,0.004752063484848125,-3.071700733657849e-5,5.380196084787112e-8,0.0047526432287152715,-3.073156493559227e-5,5.382809002665862e-8,0.004753215530274019,-3.060859876345908e-5,5.352758456900073e-8,0.004753711939495655,-3.0373149193153703e-5,5.2960713748294996e-8,0.004754087100048578,-3.0083973403278307e-5,5.226769683183297e-8,0.00475433293603724,-2.98112136590755e-5,5.1615475629158006e-8,0.004754476264544549,-2.9611822552670604e-5,5.113920082596975e-8,0.004754563953700199,-2.9514823359041654e-5,5.0907249040929476e-8,0.0047546455613278705,-2.9520016886330627e-5,5.0918372072733805e-8,0.004754761071596459,-2.9605722627759065e-5,5.112036823852704e-8,0.004754935662167024,-2.9739033755819657e-5,5.143462572713782e-8,0.0047551796096890735,-2.988434036747737e-5,5.1776389895648226e-8,0.004755490589258526,-3.0008869624587908e-5,5.206783588245407e-8,0.004755856442393838,-3.008584029224015e-5,5.224546763974042e-8,0.004756257668350731,-3.0096339668500227e-5,5.2264540791731686e-8,0.004756669706745484,-3.0030731792701057e-5,5.210242554479061e-8,0.004757065414585785,-2.9889908539192638e-5,5.176159886049536e-8,0.004757418195542284,-2.968619040159789e-5,5.1271759843174285e-8,0.00475770601363651,-2.9443203318333868e-5,5.0689459342253564e-8,0.004757915965546911,-2.9193873541743718e-5,5.009323271378707e-8,0.004758048438176281,-2.8975983699953833e-5,4.957295059706262e-8,0.0047581194741599594,-2.882542250153593e-5,4.921372935448555e-8,0.004758160019778779,-2.876818870394926e-5,4.9076934374705044e-8,0.004758211358591651,-2.8813062505827567e-5,4.9182827912228046e-8,0.004758317093348088,-2.894711954955259e-5,4.950002836532726e-8,0.004758513086696229,-2.913579719092093e-5,4.994582695633771e-8,0.004758817511140333,-2.932837760191171e-5,5.03993731608605e-8,0.004759223605850981,-2.9468701036464705e-5,5.072723219425754e-8,0.004759697867909933,-2.9509504216527897e-5,5.0817464553032814e-8,0.004760185864983653,-2.942696235017769e-5,5.061410130962157e-8,0.0047606259543624555,-2.9230317643366145e-5,5.0139889000795495e-8,0.004760967607467908,-2.896139174117637e-5,4.9494965504536796e-8,0.004761187350905263,-2.8682116608214554e-5,4.882704196243258e-8,0.004761294966547717,-2.8454389880011927e-5,4.828336259201367e-8,0.004761327275387122,-2.8321230768383856e-5,4.796585845162461e-8,0.004761333553681048,-2.829714704173953e-5,4.790836114893017e-8,0.0047613601652829966,-2.8369688621673795e-5,4.808053312846534e-8,0.004761440321646852,-2.8508399895063426e-5,4.8409387338905586e-8,0.004761590551451071,-2.8675522491192136e-5,4.880485640357133e-8,0.004761812082991868,-2.883449707617644e-5,4.917998782520274e-8,0.004762094385548418,-2.8955069947828657e-5,4.946298307321452e-8,0.004762418882065095,-2.9015693696433737e-5,4.960280392062293e-8,0.0047627620311700624,-2.9004461174501594e-5,4.95713500331758e-8,0.004763097828331392,-2.8919547543918302e-5,4.936452599578333e-8,0.004763400221147088,-2.8769621484632385e-5,4.90032528762637e-8,0.004763646058855578,-2.8574085268911304e-5,4.8534040160042696e-8,0.004763818946533213,-2.8362398774863e-5,4.802731915464349e-8,0.004763913739565946,-2.8171404920085826e-5,4.757097276326134e-8,0.004763940543520972,-2.8039773963918373e-5,4.725700354486537e-8,0.004763926283878361,-2.7999613583819032e-5,4.7161505527736824e-8,0.004763911790083301,-2.806694015820014e-5,4.732201788368541e-8,0.004763943561668426,-2.8234348316907707e-5,4.772020956502153e-8,0.004764061768513518,-2.846950262937871e-5,4.827848357257109e-8,0.004764288248044224,-2.8721294087771193e-5,4.8874818169044365e-8,0.004764618840848933,-2.893247019251986e-5,4.93729414401414e-8,0.004765022978940383,-2.905493603698263e-5,4.965875709174304e-8,0.004765450868508584,-2.9062967578863874e-5,4.967170122917772e-8,0.004765846191254104,-2.8960399760946087e-5,4.942169071629253e-8,0.00476616076776282,-2.8779715550303997e-5,4.8986766544630736e-8,0.004766367084636814,-2.8573141543301774e-5,4.849172329484978e-8,0.004766464911858467,-2.839814847115955e-5,4.807347695622499e-8,0.00476647980983421,-2.8301831799976193e-5,4.784386143983262e-8,0.004766454199070231,-2.830937480805551e-5,4.7862255367856655e-8,0.004766434603844106,-2.8420157629011527e-5,4.8126495550133353e-8,0.004766459867818386,-2.861169104607286e-5,4.8582435764613466e-8,0.004766553900979995,-2.8848469249434867e-5,4.9145161379864336e-8,0.004766723895020026,-2.9091731049801776e-5,4.9722271610959204e-8,0.004766962652236033,-2.9307102792118214e-5,5.023203099217928e-8,0.004767252783211253,-2.946903329270971e-5,5.061383669831442e-8,0.004767570966247876,-2.956252059197733e-5,5.083224211036534e-8,0.00476789143265435,-2.9583263200849124e-5,5.0877272768619633e-8,0.004768188657904238,-2.9537233992896767e-5,5.076341708753041e-8,0.004768439713838026,-2.9440208044921784e-5,5.0528530531352904e-8,0.004768626910754468,-2.9317193423369705e-5,5.0232483468787865e-8,0.004768741178477299,-2.9201099070795987e-5,4.9953931538163455e-8,0.004768786027644776,-2.9129513499080413e-5,4.978252629146496e-8,0.004768780936853772,-2.9138496012208616e-5,4.980400285879896e-8,0.0047687618966803106,-2.9253256552848995e-5,5.007792821246455e-8,0.004768776430770757,-2.94777909524039e-5,5.0613091054872876e-8,0.004768871988096792,-2.9788111750287958e-5,5.13515752527904e-8,0.004769080444607102,-3.013432954967566e-5,5.2173957718739495e-8,0.004769405284770623,-3.0453486715106665e-5,5.293006343952431e-8,0.004769818220406904,-3.0688999004594416e-5,5.3485350267577706e-8,0.00477026743433048,-3.080834002271513e-5,5.376298803352503e-8,0.004770693577738604,-3.081168201237658e-5,5.3764285152528835e-8,0.004771046589895863,-3.072935915638893e-5,5.3562407814568835e-8,0.004771297631526678,-3.0610999818195513e-5,5.3276237909610404e-8,0.004771443711692161,-3.051122681918304e-5,5.303613422492912e-8,0.004771505396973143,-3.047631542556714e-5,5.295212013490912e-8,0.004771519499267242,-3.0534710642808274e-5,5.3091406911566415e-8,0.004771529205577235,-3.0692816320908944e-5,5.346855026149306e-8,0.00477157418650815,-3.0936189653487376e-5,5.404847750248202e-8,0.004771682921045021,-3.123511651048176e-5,5.4759893534474465e-8,0.004771868687189363,-3.1552574400663744e-5,5.551430977654335e-8,0.004772129449714966,-3.1852223337845775e-5,5.622508871487745e-8,0.004772450721118148,-3.210457768014518e-5,5.682212037646142e-8,0.0047728099065585915,-3.2290564110685556e-5,5.726024480323222e-8,0.004773180754965365,-3.240266257319448e-5,5.752190311025016e-8,0.004773537085899212,-3.244442374528547e-5,5.761592957241243e-8,0.004773855633711976,-3.242925814099788e-5,5.757463774878549e-8,0.004774118342142201,-3.237905496994603e-5,5.7450525834272396e-8,0.004774314614586185,-3.23226647010406e-5,5.731264700502641e-8,0.004774443914942631,-3.2293765111534964e-5,5.724146147285952e-8,0.004774518652136438,-3.232717786829844e-5,5.731994509929363e-8,0.0047745663374796085,-3.245259117379958e-5,5.761852250142311e-8,0.004774628801644312,-3.268548015279706e-5,5.817341730913397e-8,0.004774755642402249,-3.301726301171104e-5,5.896332753649877e-8,0.004774990554962329,-3.340982109567715e-5,5.989660608993938e-8,0.004775353818295921,-3.3800784181514464e-5,6.082409330155231e-8,0.004775829687604098,-3.412186477507274e-5,6.158296115132251e-8,0.004776367868533359,-3.4323594773016025e-5,6.205572173406188e-8,0.004776900497853547,-3.439347655809735e-5,6.22134491263007e-8,0.004777365818310518,-3.435798439395554e-5,6.21203712505869e-8,0.004777726423271264,-3.426947678704886e-5,6.190234646575702e-8,0.004777975587727213,-3.418704078505039e-5,6.170085067616404e-8,0.004778133031878161,-3.416016772550692e-5,6.163388088984261e-8,0.004778235183303571,-3.42193194337018e-5,6.177353927618648e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json new file mode 100644 index 000000000..2cb27659e --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":27000,"numberOfSamples":426,"samples":[0.004778324486778677,-3.437325503603603e-5,6.213990841775234e-8,0.0047784403655323285,-3.4611193149972956e-5,6.270647293317436e-8,0.004778612794687001,-3.490776213298559e-5,6.34120907874662e-8,0.004778858592736182,-3.52292773450405e-5,6.41760174740733e-8,0.004779180332297561,-3.554033000747647e-5,6.491361305699471e-8,0.0047795676373042825,-3.580972313910667e-5,6.555048782196374e-8,0.004780000304382801,-3.601491695515349e-5,6.603309632804475e-8,0.00478045244087296,-3.61445559073166e-5,6.63347373647879e-8,0.004780896788498023,-3.619907152539314e-5,6.64569282050896e-8,0.004781308537182374,-3.6189716300693844e-5,6.642701476463283e-8,0.004781668287402928,-3.613665338138569e-5,6.62935418736394e-8,0.004781964263597514,-3.606664631235279e-5,6.612070094818705e-8,0.004782194088007322,-3.6010502207012165e-5,6.598220199376154e-8,0.004782366358377176,-3.600003307813221e-5,6.595397202033107e-8,0.004782501973157172,-3.6063967015481664e-5,6.610431957871602e-8,0.004782634428155468,-3.622211612037997e-5,6.647996630880908e-8,0.004782807312744113,-3.647777437681964e-5,6.708796154697767e-8,0.004783066725500625,-3.681018070253991e-5,6.787788985789277e-8,0.004783447527929692,-3.717158351927006e-5,6.873512189479286e-8,0.004783956543699519,-3.749495769285591e-5,6.949941757309266e-8,0.004784561694818515,-3.7714824470447004e-5,7.001467512930746e-8,0.00478519734376055,-3.779386901530488e-5,7.019245393058328e-8,0.004785787298279908,-3.773988586048272e-5,7.005238005891471e-8,0.004786273540716633,-3.760159745695435e-5,6.971198893123057e-8,0.004786634261718939,-3.7446681679021194e-5,6.93338948131939e-8,0.004786883955125812,-3.7336538281738074e-5,6.90651418882107e-8,0.004787060855944783,-3.731025026111713e-5,6.89987545085644e-8,0.004787211498019626,-3.738052485901743e-5,6.916423518663561e-8,0.004787378723491085,-3.753768633517913e-5,6.953747098677388e-8,0.004787594743852002,-3.775688736390837e-5,7.005827277528313e-8,0.004787878341866488,-3.8005421267547694e-5,7.064797754466723e-8,0.004788234677867704,-3.824887091042978e-5,7.122411974828502e-8,0.004788656578890198,-3.845602832364749e-5,7.171211724931977e-8,0.004789126866304347,-3.8602762874008655e-5,7.205447458736902e-8,0.004789621527438917,-3.867476505188969e-5,7.221733392634786e-8,0.004790113453092092,-3.866900598852055e-5,7.219394452663505e-8,0.004790576389242894,-3.859380569021363e-5,7.200475975629059e-8,0.004790988658217021,-3.846749668906106e-5,7.169414035802423e-8,0.004791336185455692,-3.831592746623132e-5,7.132428928460062e-8,0.004791614602286293,-3.8169236193829984e-5,7.096748066882624e-8,0.004791830442019499,-3.8058199395276177E-05,7.069730505809583e-8,0.00479200147328233,-3.8010251494226334e-5,7.057912997799612e-8,0.00479215608282581,-3.8045112493544786e-5,7.065962097547686e-8,0.004792331243570715,-3.816988109148568e-5,7.095502401154791e-8,0.00479256801539422,-3.837391090721481e-5,7.143902873254914e-8,0.004792903356231363,-3.8625101009650084e-5,7.203412021826269e-8,0.00479335809982377,-3.887092912081732e-5,7.261428947824125e-8,0.004793923998139211,-3.904832069801235e-5,7.302876037880577e-8,0.004794557121329183,-3.910366330394545e-5,7.314982344552248e-8,0.004795186187943556,-3.901641098772414e-5,7.292918982979318e-8,0.004795737032643518,-3.881216157437762e-5,7.242916797983955e-8,0.004796161501972789,-3.855411099464743e-5,7.180203477009054e-8,0.004796453566145229,-3.831658356890081e-5,7.122636889591443e-8,0.004796644767523727,-3.815714860499036e-5,7.084000022037542e-8,0.004796785949434881,-3.8101951194646106e-5,7.070485098911682e-8,0.004796928139441377,-3.8146598603855446e-5,7.080934608157665e-8,0.004797110480654036,-3.8265789851055167e-5,7.109188904690533e-8,0.004797355877127002,-3.8424311612934556e-5,7.146748579270787e-8,0.004797671612426517,-3.8585616852327366e-5,7.184835086333892e-8,0.004798052093481322,-3.8717282547673696e-5,7.215687639979793e-8,0.004798481982683185,-3.879416904832568e-5,7.233306811500727e-8,0.0047989392109531745,-3.880032466659669e-5,7.233903786826962e-8,0.004799398014519919,-3.873014716490181e-5,7.216177815700216e-8,0.004799832156249859,-3.858883316916818e-5,7.181423253686315e-8,0.004800218353251468,-3.839193072968296e-5,7.133417138730679e-8,0.004800539728226463,-3.816370201797726e-5,7.07801739212383e-8,0.004800788798428815,-3.7934150450836535e-5,7.022440790334248e-8,0.004800969422381577,-3.773493298607536e-5,6.97427737273164e-8,0.004801097307136082,-3.7594608437565975e-5,6.940350057998089e-8,0.004801198860837516,-3.753375575082618e-5,6.925545753494772e-8,0.004801308307002621,-3.7560557353341817e-5,6.931760143740602e-8,0.004801463061629263,-3.766739513003747e-5,6.957089748412672e-8,0.0048016973159992595,-3.7829085241195104e-5,6.995424232825527e-8,0.004802033897188718,-3.800393663211438e-5,7.036721161540528e-8,0.004802475381486049,-3.8139426649914707e-5,7.068384881196978e-8,0.004802997237534293,-3.8183940325160886e-5,7.078086051437349e-8,0.0048035477616877155,-3.810365748834886e-5,7.057799420498539e-8,0.004804059432364746,-3.789890582121566e-5,7.007704800926735e-8,0.004804471058177286,-3.76100617891968e-5,6.93758159734603e-8,0.004804751226949466,-3.730566920695092e-5,6.863938578566553e-8,0.0048049094711126545,-3.705654492532993e-5,6.803781398940207e-8,0.004804988697932718,-3.691017647857788e-5,6.768458911635844e-8,0.004805045208603211,-3.687881976068849e-5,6.760819207952647e-8,0.004805128912216125,-3.6943695478478026e-5,6.776250536534154e-8,0.004805272128763522,-3.706800766501402e-5,6.805842303113509e-8,0.0048054875443432725,-3.72102043926267e-5,6.839587172762585e-8,0.004805771578807736,-3.733305531184578e-5,6.868556225257375e-8,0.004806109373196501,-3.740819210339049e-5,6.885971585954908e-8,0.004806479267214914,-3.741763766075652e-5,6.887556737614801e-8,0.00480685624919262,-3.7353970688048305e-5,6.871568343569287e-8,0.00480721474503835,-3.722005965565962e-5,6.838732853486281e-8,0.004807531254878627,-3.70285788369557e-5,6.792132402469517e-8,0.004807787168840347,-3.680107359176237e-5,6.736978068548045e-8,0.0048079717908961535,-3.656606685754552e-5,6.680147748275388e-8,0.004808085124176199,-3.635572067784862e-5,6.629375291303479e-8,0.0048081395655390005,-3.6201003683608846e-5,6.59208353445968e-8,0.004808159619935799,-3.61259119702826e-5,6.573995300854134e-8,0.004808179052187587,-3.614182096799145e-5,6.577781399967254e-8,0.0048082354644977225,-3.624339663861216e-5,6.602088125342372e-8,0.004808363016906486,-3.640739698014146e-5,6.641263422122376e-8,0.004808584568140996,-3.659514206004428e-5,6.685967165663355e-8,0.004808904762436531,-3.6758854267688404e-5,6.724710168628325e-8,0.00480930579650223,-3.685155258136531e-5,6.746239580653564e-8,0.0048097478566896616,-3.683927126708737e-5,6.742470100953433e-8,0.004810176029910032,-3.6712847565078014e-5,6.711298772615927e-8,0.0048105340254307105,-3.649482817530326e-5,6.658239512536003e-8,0.004810781727205723,-3.62365842449442e-5,6.595705126594526e-8,0.004810909644980501,-3.6003671889103674e-5,6.539470778083783e-8,0.004810942478516832,-3.5853999525254e-5,6.503419712779448e-8,0.004810929054258762,-3.581891665158464e-5,6.495006857326439e-8,0.0048109239580987374,-3.589619723046781e-5,6.513597488805307e-8,0.0048109704482596355,-3.605632765339819e-5,6.552011162684835e-8,0.004811091479469972,-3.625616637154878e-5,6.599830095926331e-8,0.0048112894999106535,-3.645235261818129e-5,6.646628961790225e-8,0.004811551496979631,-3.661003899809157e-5,6.684062633294758e-8,0.004811855326073649,-3.6706519877171644e-5,6.706718834733222e-8,0.004812175008010524,-3.673147922115121e-5,6.71216166824625e-8,0.00481248442724685,-3.668578285980148e-5,6.70063528600365e-8,0.004812759857408077,-3.6580011791983614e-5,6.67471364140862e-8,0.004812982021847438,-3.643312892218514e-5,6.638984182107787e-8,0.004813138260380984,-3.627105788419161e-5,6.599705939990736e-8,0.004813224984539436,-3.612453739463318e-5,6.56428706687843e-8,0.004813250027706149,-3.6025539008764395e-5,6.540413556464342e-8,0.004813233901618618,-3.600194055235022e-5,6.53476083256435e-8,0.004813208641342787,-3.6070981482546236e-5,6.55141956879046e-8,0.004813213185891162,-3.623309956685937e-5,6.590422431888505e-8,0.0048132853329533815,-3.6468577247922494e-5,6.646953796652841e-8,0.00481345196089862,-3.6739232782648675e-5,6.711775543238068e-8,0.004813720524850067,-3.699585543676539e-5,6.773031548224511e-8,0.004814074915372328,-3.718990777229592e-5,6.819070851646075e-8,0.004814477519636433,-3.7286327454266165e-5,6.841524919716474e-8,0.004814877412507499,-3.727371265226798e-5,6.837744468682739e-8,0.004815222824200392,-3.71687674239285e-5,6.811846623591315e-8,0.004815474776181273,-3.70132472069625e-5,6.773954080785747e-8,0.0048156180606356,-3.686348225678969e-5,6.737652512252384e-8,0.004815665783668138,-3.677486127562191e-5,6.716247159200004e-8,0.004815655222405848,-3.678604759224073e-5,6.718971555136587e-8,0.004815636005506843,-3.690868613654817e-5,6.74853269118757e-8,0.004815655154643246,-3.712641741469069e-5,6.800902880734398e-8,0.0048157448657402905,-3.740272786418989e-5,6.86723392503097e-8,0.004815916982414414,-3.769330697538445e-5,6.936842915828944e-8,0.004816164398472773,-3.79575991566434e-5,6.999989097850887e-8,0.004816466732888395,-3.8166161444911164e-5,7.049630552378684e-8,0.004816796998892661,-3.830332545250297e-5,7.082047667647441e-8,0.004817127128752034,-3.8366574426466915e-5,7.096680517792435e-8,0.004817431716377734,-3.8364425072400815e-5,7.095614538559232e-8,0.00481769031494261,-3.831406952629976e-5,7.0830151666776e-8,0.004817889007363463,-3.823930287395324e-5,7.064632660863894e-8,0.004818021924002364,-3.81685964240486e-5,7.047337979987863e-8,0.004818092995005395,-3.8132677946559405e-5,7.038533637487357e-8,0.004818117609598462,-3.8160829347254704e-5,7.045252292139183e-8,0.0048181231757472446,-3.8275439457385075e-5,7.072838433001155e-8,0.004818147032808319,-3.848524220234855e-5,7.123323584537503e-8,0.004818230263552585,-3.877913888410908e-5,7.193954194116859e-8,0.004818407376247594,-3.9123929426344404e-5,7.276667979907158e-8,0.004818694517905241,-3.946919365675648e-5,7.359290131063591e-8,0.004819081226702352,-3.975987623674142e-5,7.428575222689352e-8,0.004819530473516512,-3.99528372131395e-5,7.474192447320143e-8,0.004819988207444505,-4.003071053802827e-5,7.492052207630327e-8,0.0048203989246250615,-4.000728896884301e-5,7.485582965376748e-8,0.004820721175466344,-3.99227597487728e-5,7.464556945092878e-8,0.004820937782280773,-3.9831445677784674e-5,7.442110541926777e-8,0.004821058434419171,-3.978679151255124e-5,7.431111753324506e-8,0.004821115078288102,-3.982808284365596e-5,7.44096350669423e-8,0.0048211522270188,-3.9972043873461636e-5,7.475600152324611e-8,0.004821215190839854,-4.021085655268812e-5,7.533039650683856e-8,0.004821339447086454,-4.051642323333889e-5,7.606436621672032e-8,0.004821543793180569,-4.084903826994292e-5,7.686186217830935e-8,0.004821828560137223,-4.11675330397259e-5,7.762370019061549e-8,0.00482217843219588,-4.143791773110746e-5,7.826830249781045e-8,0.004822568060222116,-4.163862375087511e-5,7.874420409142698e-8,0.004822968276370532,-4.176204785493435e-5,7.903364411314588e-8,0.0048233512962861805,-4.1813332547424874e-5,7.914952587908982e-8,0.004823694268337095,-4.180773689787612e-5,7.912902718095061e-8,0.004823981341733217,-4.176770959006623e-5,7.902653839294732e-8,0.004824204843306262,-4.172022434438517e-5,7.890725119874452e-8,0.004824366170721857,-4.169434217802275e-5,7.884127164436675e-8,0.0048244767088938545,-4.1718500655906905e-5,7.889702962949885e-8,0.004824558542278362,-4.1816828861910714e-5,7.9132317175072e-8,0.004824644046356498,-4.2004005130913916e-5,7.958186192139638e-8,0.004824772810595939,-4.227902970506275e-5,8.02424031086156e-8,0.004824984330163837,-4.261986981161869e-5,8.105999852427741e-8,0.0048253063789773926,-4.2982701249766916e-5,8.192845535537351e-8,0.004825742302472369,-4.330968240475467e-5,8.2708249557431e-8,0.004826263889668254,-4.354578668059347e-5,8.326714000557609e-8,0.004826816164327769,-4.365883275531775e-5,8.352838122738419e-8,0.004827334389224904,-4.3652515189787744e-5,8.350199407923697e-8,0.0048277656748831246,-4.356505406150206e-5,8.328128245698638e-8,0.00482808475136242,-4.3454640222978786e-5,8.300742298950006e-8,0.0048282979694060126,-4.337986978855226e-5,8.282198985286413e-8,0.004828436715004647,-4.3383781338829196e-5,8.28283556019412e-8,0.004828545452468338,-4.3485739353153795e-5,8.307227830943268e-8,0.004828669442671055,-4.368097256269977e-5,8.354112596095182e-8,0.004828845131978453,-4.394543747541324e-5,8.417594361299053e-8,0.004829094332003,-4.42434357404026e-5,8.489003053203357e-8,0.004829422222056958,-4.453594609792681e-5,8.558908046994333e-8,0.004829818689134246,-4.4788154520325726e-5,8.618928271603903e-8,0.004830262162433468,-4.497503014521456e-5,8.663067376891177e-8,0.004830724791376845,-4.508429236527066e-5,8.688419593273334e-8,0.004831177763389958,-4.5116784857431304e-5,8.695250414418422e-8,0.0048315958105310045,-4.50848066644472e-5,8.686584714086303e-8,0.004831960372320328,-4.50092207251216e-5,8.667501419792826e-8,0.004832261385448886,-4.4916181410082026e-5,8.644339426785272e-8,0.004832498085672877,-4.4834021165063305e-5,8.623945104183476e-8,0.004832679280731162,-4.479034989518507e-5,8.612971656792317e-8,0.004832823322580668,-4.480906858922817e-5,8.61715560370843e-8,0.004832957631610085,-4.490685000713927e-5,8.640463908636807e-8,0.0048331170643941285,-4.508874878499018e-5,8.684036295819687e-8,0.004833339822081472,-4.5343323574385394e-5,8.745021561454051e-8,0.004833659599911437,-4.5639123415037367e-5,8.815754137046817e-8,0.004834094074838598,-4.592604139982e-5,8.884105976880853e-8,0.004834633097564738,-4.6145321609871045e-5,8.935914049205118e-8,0.004835233759482804,-4.624855257649796e-5,8.959560230484134e-8,0.004835829415303181,-4.621862951064732e-5,8.951018080070509e-8,0.004836352230776127,-4.6080232054244594e-5,8.916366565204528e-8,0.0048367583349983355,-4.589150422661235e-5,8.869757625100208e-8,0.004837041591904654,-4.572106996194247e-5,8.827831621545146e-8,0.004837230223456968,-4.562385027524527e-5,8.803847379686291e-8,0.004837371762779652,-4.562714338453696e-5,8.804318221037112e-8,0.004837516153686477,-4.572936473719342e-5,8.828738354028514e-8,0.004837703559825233,-4.590705729913291e-5,8.871321255880796e-8,0.00483795842100459,-4.6124666861455577e-5,8.923395641208231e-8,0.0048382884248457615,-4.634354743735913e-5,8.975592732878355e-8,0.004838686449812278,-4.652885932931713e-5,9.019505444720963e-8,0.004839134059291325,-4.6654302346770156e-5,9.048817401084265e-8,0.00483960577414928,-4.670490119196287e-5,9.059963781515475e-8,0.004840073592346507,-4.6677962776577816e-5,9.052354945919353e-8,0.004840511260350432,-4.6582397345525144e-5,9.028205993460479e-8,0.004840897899231785,-4.643670396318439e-5,8.992042145949509e-8,0.004841220660300779,-4.626596989787898e-5,8.949965282921296e-8,0.004841476202205037,-4.6098371678003375e-5,8.908802385796573e-8,0.004841671077489782,-4.596168029442229e-5,8.875259106524241e-8,0.004841821307091204,-4.587997080031785e-5,8.855125453694367e-8,0.004841951292609372,-4.587045888723051e-5,8.852512147964674e-8,0.004842091964053706,-4.5940344193465115e-5,8.869088863412212e-8,0.004842277739297711,-4.6083631809650075e-5,8.903322182845005e-8,0.004842541493972926,-4.627838807084122e-5,8.949828371537751e-8,0.004842906839177331,-4.648600438823033e-5,8.999219477976895e-8,0.004843378264295116,-4.665522221668618e-5,9.039097681872455e-8,0.004843932381435793,-4.6733606371812626e-5,9.056834871587784e-8,0.004844516593310677,-4.6686017948423326e-5,9.044026966797496e-8,0.004845061297440305,-4.651301745333522e-5,9.000924058638993e-8,0.004845504427784852,-4.6256995746914114e-5,8.93789350952813e-8,0.004845816313409309,-4.598827316210438e-5,8.872033893206934e-8,0.004846009719910427,-4.5777184591241536e-5,8.820391758061302e-8,0.004846129972474116,-4.566860671556084e-5,8.793778061329034e-8,0.0048462338316596935,-4.567181248329228e-5,8.794324136066889e-8,0.004846370227429732,-4.576600567215227e-5,8.816863162886767e-8,0.0048465699861102345,-4.591338738919411e-5,8.852141023091782e-8,0.004846844129874208,-4.6071908146491065e-5,8.889930925992923e-8,0.004847187112262369,-4.6204138643279386e-5,8.921179902089594e-8,0.004847581703514996,-4.6282067896565305e-5,8.939150694429025e-8,0.004848003735402131,-4.6289076937789076e-5,8.939877769506586e-8,0.004848426256645651,-4.6220321509909585e-5,8.922246700657916e-8,0.004848823209408606,-4.608209856359733e-5,8.887836627853265e-8,0.004849172664527739,-4.58903562975773e-5,8.840557932192903e-8,0.0048494595475039315,-4.5668426291373705e-5,8.786099087737668e-8,0.0048496777143903665,-4.544400174802944e-5,8.731188333905859e-8,0.004849831083297237,-4.524549703219852e-5,8.682706510070045e-8,0.0048499335706496585,-4.5098191704872816e-5,8.646751496052212e-8,0.004850007839811998,-4.502058698290767e-5,8.627758023189437e-8,0.004850082971399407,-4.502123491055191e-5,8.627733894012528e-8,0.00485019108473835,-4.509627653317102e-5,8.645669590689583e-8,0.004850362866722029,-4.522799803925022e-5,8.677198648497969e-8,0.004850621906510939,-4.5384910987798636e-5,8.71463393443206e-8,0.004850977946640694,-4.552441540774088e-5,8.747633199424684e-8,0.00485142013660625,-4.5599608404899196e-5,8.764862963748815e-8,0.0048519131380055204,-4.557121093968653e-5,8.756886324253519e-8,0.004852400538216197,-4.5422915883702246e-5,8.719862480298039e-8,0.004852819081156075,-4.517383633579113e-5,8.658536065820687e-8,0.004853121273694221,-4.4878623615075926e-5,8.586240756352643e-8,0.004853295526580276,-4.461012521329985e-5,8.52067471895604e-8,0.004853370910340709,-4.443133874108983e-5,8.477085726904584e-8,0.004853402989489355,-4.437253239360528e-5,8.462723494908248e-8,0.004853450340338429,-4.442557395851914e-5,8.475489986913897e-8,0.004853555566747505,-4.4554520782041413e-5,8.506551757055743e-8,0.004853737798332979,-4.471246662007726e-5,8.54446544743408e-8,0.00485399486389547,-4.485554721718429e-5,8.57858896141624e-8,0.004854309864890948,-4.495075979662197e-5,8.600964247263456e-8,0.00485465803028982,-4.497849770452831e-5,8.6069040778254e-8,0.00485501203358417,-4.493206747983682e-5,8.594850455856457e-8,0.00485534568228858,-4.481608527441229e-5,8.565974574854902e-8,0.004855636618776108,-4.464461889212684e-5,8.523726941055656e-8,0.004855868536584048,-4.4439150233652795e-5,8.473347207406128e-8,0.0048560330722339125,-4.422617519806977e-5,8.421282174134603e-8,0.004856131296365982,-4.4034205116743515e-5,8.374453608584602e-8,0.004856174444895931,-4.389004599187381e-5,8.339349699528367e-8,0.004856183359155293,-4.381463425405478e-5,8.321012126246628e-8,0.004856186304500604,-4.381908244061987e-5,8.322079181766202e-8,0.0048562152009108475,-4.3901681750652377e-5,8.342065742125228e-8,0.004856300584346492,-4.4046572784289005e-5,8.37705159905011e-8,0.004856465867596215,-4.422466583704176e-5,8.419918887759595e-8,0.004856721671702306,-4.439714167069116e-5,8.46121777512187e-8,0.004857061176355107,-4.452169624559631e-5,8.490696041970339e-8,0.004857457829840346,-4.456149265628484e-5,8.499476400738042e-8,0.00485786732258919,-4.4495941699599566e-5,8.482662558070934e-8,0.0048582357611451545,-4.433064375541632e-5,8.44172762033907e-8,0.004858514335168011,-4.4101716857274364e-5,8.385533918607352e-8,0.004858676764439197,-4.386931833014717e-5,8.32873433067394e-8,0.004858731337204977,-4.369916734671689e-5,8.287271910808891e-8,0.004858719353578516,-4.363884359422422e-5,8.272626402178683e-8,0.004858699079100403,-4.370113971203409e-5,8.287790899006382e-8,0.004858723862983524,-4.3863152455982114e-5,8.32708541147057e-8,0.004858826040038608,-4.4079389942548624e-5,8.379377681762571e-8,0.00485901243298159,-4.429951477497208e-5,8.432416681478761e-8,0.004859269289883763,-4.448198863401187e-5,8.476146671893096e-8,0.004859570954995191,-4.460045524794661e-5,8.504236029963514e-8,0.004859887795941977,-4.464428204949593e-5,8.514179476144743e-8,0.004860191622124641,-4.461614115330714e-5,8.506688634502332e-8,0.004860458789785439,-4.452889224023546e-5,8.48492775788132e-8,0.004860671945597038,-4.440278682495274e-5,8.453839235720549e-8,0.004860821241729715,-4.426305156165498e-5,8.419563819915824e-8,0.004860905419245433,-4.4137473414217795e-5,8.388856225560573e-8,0.004860932724572903,-4.405349915154474e-5,8.368376120026044e-8,0.004860921196088654,-4.403452027360999e-5,8.363778704610134e-8,0.004860897562807879,-4.4095524083173727e-5,8.378654746993848e-8,0.004860894101884112,-4.4238943389541296e-5,8.413526183041853e-8,0.0048609433408634845,-4.4451997534014956e-5,8.465211854456047e-8,0.004861071294856948,-4.470688491827875e-5,8.526891053304732e-8,0.004861290736213975,-4.4964675805282034e-5,8.589067031036176e-8,0.004861596402411748,-4.518269904195639e-5,8.641375721967553e-8,0.00486196380325942,-4.5324110154403064e-5,8.674916232953769e-8,0.0048623525742310615,-4.536760086172835e-5,8.684603658726279e-8,0.004862714420798966,-4.531482706925229e-5,8.670954354944289e-8,0.004863004623796651,-4.519303097661249e-5,8.640693812132527e-8,0.004863194723425296,-4.505076964306804e-5,8.605688184505726e-8,0.0048632825102846704,-4.494612337857568e-5,8.58005774809639e-8,0.004863294732214557,-4.492967036023607e-5,8.576036145889535e-8,0.004863279646140609,-4.50281209417457e-5,8.600009804265731e-8,0.004863291238192513,-4.5235972657266385e-5,8.650521261792416e-8,0.004863371875000471,-4.5519265521149334e-5,8.719217023603693e-8,0.004863541092600532,-4.5828989880735264e-5,8.794132978880563e-8,0.0048637941431590335,-4.611699389480268e-5,8.863570335939151e-8,0.004864108348633099,-4.6347665140982225e-5,8.918925654220265e-8,0.00486445241548828,-4.650270904600831e-5,8.95582979767788e-8,0.0048647945683711405,-4.658026758675538e-5,8.973908538631549e-8,0.004865107760312099,-4.659122884457311e-5,8.975868058567857e-8,0.004865372216069882,-4.655509521210519e-5,8.966485595145175e-8,0.004865576369720018,-4.649651590121914e-5,8.95177115085765e-8,0.004865717179949249,-4.644257685804242e-5,8.938315205316097e-8,0.004865800395588709,-4.642041241650156e-5,8.932709842864613e-8,0.004865840829426269,-4.6454505120622764e-5,8.940887781848442e-8,0.004865862139653059,-4.656317873149144e-5,8.967262906616372e-8,0.00486589520436499,-4.675433988431925e-5,9.013692766243163e-8,0.00486597415698355,-4.7021367342236717e-5,9.07848659725663e-8,0.004866129742279287,-4.7340909048838094e-5,9.15588685419079e-8,0.004866380968437412,-4.7674714425056845e-5,9.236536298478788e-8,0.004866727661902241,-4.797676853483728e-5,9.309231162293983e-8,0.004867147324684734,-4.8204752728047944e-5,9.363717379329655e-8,0.004867598631309231,-4.833237436364809e-5,9.393686151571851e-8,0.00486803127888161,-4.835807099496604e-5,9.398874966956663e-8,0.004868399226752945,-4.8306738611208255e-5,9.385460419655338e-8,0.0048686730911499205,-4.8223736532853264e-5,9.364566598366033e-8,0.004868847969216985,-4.816304071077976e-5,9.349354754634237e-8,0.0048689445715649204,-4.817300077705271e-5,9.351546946352385e-8,0.004869003383995121,-4.8283613222312364e-5,9.378341924616291e-8,0.004869073380924081,-4.849890638879081e-5,9.43059380023238e-8,0.0048691985524858695,-4.8796843985408144e-5,9.50282614209952e-8,0.004869406558763143,-4.9136789945777165e-5,9.585077822881535e-8,0.0048697031730176215,-4.947169627205198e-5,9.665881714263925e-8,0.004870073718317038,-4.9760441298475204e-5,9.735263346838005e-8,0.004870489786100687,-4.9976304469416066e-5,9.786787764373727e-8,0.004870917867218918,-5.010990840288102e-5,9.818254906626896e-8,0.004871326805083185,-5.016747905294032e-5,9.831256717497081e-8,0.004871692531052498,-5.016661596207553e-5,9.830134495028733e-8,0.004872000142688164,-5.0131652452055496e-5,9.820844897666668e-8,0.004872244237261572,-5.008976155652556e-5,9.810014547881626e-8,0.004872428488982316,-5.0068019068499616e-5,9.804229692860984e-8,0.004872565118915182,-5.0091037618228904e-5,9.809461966944169e-8,0.0048726744092658725,-5.017854275436142e-5,9.830475483883204e-8,0.004872783856378547,-5.034234927557437e-5,9.870086948139556e-8,0.00487292606572329,-5.058265619676878e-5,9.928265588588883e-8,0.0048731343054660824,-5.0884445663438285e-5,1.0001269113882292e-7,0.004873435129492483,-5.1215919899950034e-5,1.0081284930929764e-7,0.0048738390660209,-5.153170034332811e-5,1.015723136253397e-7,0.004874332805219763,-5.178266204412348e-5,1.0217165527867006e-7,0.004874877889632444,-5.1930947916088274e-5,1.0251939608479708e-7,0.004875419222669628,-5.196437324983978e-5,1.0258697726965176e-7,0.004875901546822159,-5.190279042143044e-5,1.0242405238386324e-7,0.004876286929160504,-5.179247995187442e-5,1.0214451691172397e-7,0.004876565554442809,-5.1691121210262656e-5,1.0188954108256096e-7,0.004876756238178176,-5.165032541885692e-5,1.0178476106510073e-7,0.004876898311797196,-5.170234825273362e-5,1.0190790776405611e-7,0.004877039291090606,-5.185415619525043e-5,1.0227463542533915e-7,0.004877222603926023,-5.20886997024062e-5,1.0284205932149231e-7,0.004877478233490123,-5.237148471881915e-5,1.0352515418660084e-7,0.004877817707882309,-5.2659998699574115e-5,1.0421992098956346e-7,0.004878233764547773,-5.291357147653802e-5,1.0482740644614637e-7,0.004878704103850562,-5.310151400306657e-5,1.0527339067231532e-7,0.0048791978095219886,-5.3207947753445196e-5,1.0551996632875121e-7,0.004879682486508378,-5.323275948828798e-5,1.055676880907866e-7,0.0048801303140343175,-5.318929968967715e-5,1.0544982140066945e-7,0.004880521970866183,-5.3100190207577814e-5,1.0522202640813102e-7,0.004880848294653186,-5.299267897057388e-5,1.0495098947741473e-7,0.0048811102117961675,-5.289457264711433e-5,1.0470451475918726e-7,0.004881317747189281,-5.2831136722353006e-5,1.045440020638691e-7,0.004881488756100408,-5.282274765893747e-5,1.0451875219165502e-7,0.004881647595748994,-5.2882791831743e-5,1.0466084584560046e-7,0.004881823499265498,-5.301535663747745e-5,1.0497951455693293e-7,0.004882047968987757,-5.321257874700818e-5,1.0545473459947656e-7,0.004882350207115018,-5.34522364381064e-5,1.0603152097503244e-7,0.004882749931583773,-5.3697319596594616e-5,1.0661911602920183e-7,0.004883248411975124,-5.390029444311228e-5,1.0710159048430002e-7,0.004883821223283848,-5.40142565780382e-5,1.0736509452548331e-7,0.004884418535029374,-5.400964585550486e-5,1.07338516263783e-7,0.004884977331862179,-5.388945231346987e-5,1.0703038492932809e-7,0.004885442982784979,-5.369291520334631e-5,1.0653767571805211e-7,0.0048857896031786405,-5.348285896525935e-5,1.060146273029446e-7,0.004886027899428079,-5.33225701704739e-5,1.0561598542362421e-7,0.004886197488183362,-5.3254761974328e-5,1.0544546399226637e-7,0.004886350220054461,-5.329186339414478e-5,1.0553216327134056e-7,0.00488653376420074,-5.341832436145469e-5,1.058366269418165e-7,0.004886780973520583,-5.3599972431194304e-5,1.0627419538425782e-7,0.004887105836022719,-5.379505921217329e-5,1.0674231474866518e-7,0.00488750437159898,-5.3963749688183614e-5,1.071437647657893e-7,0.004887958428542934,-5.4074868096297026e-5,1.074029666188478e-7,0.004888440866556042,-5.410987220354813e-5,1.0747544257958971e-7,0.004888921197063378,-5.406429862465683e-5,1.0735113586693954e-7,0.004889370931079509,-5.3946902121682926e-5,1.0705217492870693e-7,0.004889767913025726,-5.377692855867965e-5,1.0662613496775146e-7,0.004890099148351,-5.3580229669963764e-5,1.0613649899040003e-7,0.0048903619623596834,-5.3384985707783635e-5,1.0565218481282615e-7,0.004890563646224889,-5.321774155887791e-5,1.0523787065252472e-7,0.004890720050330306,-5.310023848256073e-5,1.0494629332969267e-7,0.00489085365033552,-5.304708763981897e-5,1.0481260896297154e-7,0.004890991351657461,-5.306401912048959e-5,1.0485014474108545e-7]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json new file mode 100644 index 000000000..9767b1b50 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":3000,"numberOfSamples":1000,"samples":[-0.0016674126654346861,-5.729007527752374e-7,-1.4186514962201376e-8,-0.0016673064653587321,-6.734015165127343e-7,-1.4270276706700349e-8,-0.0016671184978181936,-7.942288639572809e-7,-1.4371055120518062e-8,-0.0016668581653082658,-8.937549802808163e-7,-1.4454094104781238e-8,-0.0016665462863460693,-9.416288807763305e-7,-1.4494058993362982e-8,-0.0016662092022260732,-9.201664606449159e-7,-1.4476216298494372e-8,-0.0016658745541862263,-8.237755484396502e-7,-1.4395945891238539e-8,-0.0016655683268689287,-6.578186550518726e-7,-1.4257765362438796e-8,-0.0016653124526036561,-4.3741842925891825e-7,-1.4074304544820363e-8,-0.0016651224530400707,-1.8607276082775895e-7,-1.3865132894139859e-8,-0.0016650049642489826,6.643303169026634e-8,-1.3655018765663274e-8,-0.0016649554928538104,2.8739437967418395e-7,-1.347113935991257e-8,-0.0016649572160637774,4.4604795424859426e-7,-1.3339056817593825e-8,-0.0016649817855313575,5.194876808583452e-7,-1.3277813795917761e-8,-0.0016649928181043465,4.985157505581373e-7,-1.329507262967021e-8,-0.00166495207648607,3.9179414860133283e-7,-1.3383654246342673e-8,-0.0016648274069321705,2.26664827416035e-7,-1.352084347660865e-8,-0.001664600739494372,4.5708357821865315e-8,-1.367124421905444e-8,-0.001664274219706894,-1.0088239670451744e-7,-1.3793127784445051e-8,-0.0016638726869829803,-1.6616023108150796e-7,-1.3847473701249546e-8,-0.0016634410124484337,-1.1869904209770958e-7,-1.3808176255662588e-8,-0.0016630354517974334,4.659577780072841e-8,-1.3671009811639623e-8,-0.001662709627560605,3.030262655914423e-7,-1.3458136463059741e-8,-0.0016624982880314673,5.958730436677693e-7,-1.3214963229037875e-8,-0.001662404794976831,8.568537842964569e-7,-1.2998163907749735e-8,-0.0016623988702162175,1.0254972177202318e-6,-1.2857973826241794e-8,-0.0016624271346917532,1.0685455003698803e-6,-1.2822084766277138e-8,-0.0016624319248438782,9.883600460942418e-7,-1.2888614390257493e-8,-0.001662369242835807,8.174787260993229e-7,-1.3030565315055226e-8,-0.0016622183938909184,6.041843871353809e-7,-1.3207794337616674e-8,-0.0016619818565370786,3.9717316279278375e-7,-1.3379782718210806e-8,-0.0016616789185444716,2.3502260822879676e-7,-1.3514435597222689e-8,-0.0016613377123989804,1.417265131744283e-7,-1.3591822041815075e-8,-0.0016609886089808544,1.2662367606576446e-7,-1.360423147824086e-8,-0.0016606598282278315,1.863922842656112e-7,-1.3554490273298172e-8,-0.0016603748199426104,3.0744517886406376e-7,-1.3453938412913645e-8,-0.0016601505255394024,4.680421085231016e-7,-1.3320649411749458e-8,-0.0016599957713533597,6.402384067973255e-7,-1.3177803860265977e-8,-0.0016599094977454972,7.922656339357963e-7,-1.3051723165875262e-8,-0.0016598791098382528,8.920717595398815e-7,-1.296895475612751e-8,-0.0016598798337515695,9.124839151887528e-7,-1.2952012505708826e-8,-0.001659876379622952,8.376861160842476e-7,-1.3014014454721298e-8,-0.0016598280484381447,6.695105801256583e-7,-1.3153456420237919e-8,-0.0016596973256014155,4.309782162426044e-7,-1.3351256087288848e-8,-0.001659460185844518,1.644717783767708e-7,-1.3572258355341262e-8,-0.0016591147270322442,-7.656124715275952e-8,-1.3772130406953462e-8,-0.0016586845140589572,-2.408327142852044e-7,-1.3908356700286018e-8,-0.0016582146152118225,-2.934361433791715e-7,-1.3952042824758485e-8,-0.0016577609941446497,-2.2641155822799227e-7,-1.3896646268225657e-8,-0.0016573762399432718,-6.21980795145008e-8,-1.3760786009222337e-8,-0.0016570956693766155,1.5125835864904947e-7,-1.3584155440668849e-8,-0.0016569277304044742,3.526938844470182e-7,-1.3417439166449944e-8,-0.0016568517179810498,4.838995413033776e-7,-1.3308801583491872e-8,-0.0016568239567060939,5.055051370474298e-7,-1.329085416886814e-8,-0.0016567907846579653,4.069873023778711e-7,-1.3372361772156796e-8,-0.0016567038867919353,2.0748592272561992e-7,-1.3537525963856996e-8,-0.001656532487673912,-5.231661404744325e-8,-1.375267653077842e-8,-0.0016562685745488837,-3.2332365832738283e-7,-1.3977143471321514e-8,-0.0016559247754694372,-5.607837026808751e-7,-1.4173848477561865e-8,-0.0016555275418913935,-7.327632792039998e-7,-1.4316343411791168e-8,-0.0016551092006448183,-8.233258722118555e-7,-1.4391445802169112e-8,-0.0016547013993568505,-8.316848376668471e-7,-1.439852456672699e-8,-0.0016543308264849162,-7.693391900307951e-7,-1.4347111821174578e-8,-0.0016540168884855639,-6.568154472154755e-7,-1.4254194224863743e-8,-0.00165377050241833,-5.208100635030763e-7,-1.4141844859881727e-8,-0.001653593196269087,-3.917048152325665e-7,-1.4035172614624135e-8,-0.001653476129350162,-3.0088888763530243e-7,-1.3960118899539777e-8,-0.0016533992421155022,-2.7714172882948965e-7,-1.3940479436687606e-8,-0.0016533313967630901,-3.4151069511884616e-7,-1.3993675666328718e-8,-0.001653232946576946,-5.008677652271779e-7,-1.4125420729844042e-8,-0.001653062183142646,-7.418000865678651e-7,-1.4324648124704472e-8,-0.0016527858361718897,-1.0281008249946432e-6,-1.456142157572885e-8,-0.0016523911376223348,-1.305464686483764e-6,-1.4790826634502255e-8,-0.0016518942603108112,-1.5146795210217696e-6,-1.4963914427081036e-8,-0.001651339688429203,-1.609920243457309e-6,-1.5042853245080335e-8,-0.0016507887609035258,-1.5746267527137686e-6,-1.501402985970417e-8,-0.0016503014049699613,-1.4275884845194972e-6,-1.4893009020259092e-8,-0.0016499186673924447,-1.2167625516751627e-6,-1.4719368976416159e-8,-0.0016496525262988243,-1.0042695210536724e-6,-1.4544312694847968e-8,-0.0016494852722868205,-8.488903215522008e-7,-1.4416272286595473e-8,-0.0016493768933366411,-7.916520763817829e-7,-1.4369068693422452e-8,-0.0016492770441696662,-8.477319335831267e-7,-1.441525088113211e-8,-0.0016491379089976894,-1.005586142802875e-6,-1.454535921366001e-8,-0.0016489247906258263,-1.2324077723442385e-6,-1.4732398295614608e-8,-0.0016486222435663186,-1.483745124523919e-6,-1.4939753931208416e-8,-0.0016482349077829455,-1.714387062746813e-6,-1.5130169934377415e-8,-0.0016477837047942081,-1.8876251196414704e-6,-1.5273388453025773e-8,-0.0016472992687706423,-1.9809318567924716e-6,-1.53508288088995e-8,-0.0016468148667739665,-1.987610693939075e-6,-1.5356941194346824e-8,-0.0016463605427636564,-1.915263460295526e-6,-1.529794271457019e-8,-0.0016459592556230336,-1.7824940981911972e-6,-1.5189110139549575e-8,-0.0016456248820582223,-1.6151699815473968e-6,-1.5051713360546717e-8,-0.0016453614347904178,-1.4430148462818047e-6,-1.4910218742385646e-8,-0.0016451628120618224,-1.2966201405178637e-6,-1.4789829372760213e-8,-0.0016450127057533186,-1.2044728826030512e-6,-1.4714032583746818e-8,-0.0016448847709624051,-1.1893868953393184e-6,-1.4701653351213367e-8,-0.0016447437874436506,-1.2638103881750775e-6,-1.4762980827432679e-8,-0.0016445491773054968,-1.4241708565546202e-6,-1.48951005064794e-8,-0.0016442623193067107,-1.645902905672155e-6,-1.5077791633897704e-8,-0.0016438578535539828,-1.8825890625995552e-6,-1.5272828105373147e-8,-0.0016433361724119703,-2.073293524915233e-6,-1.5430051194420875e-8,-0.0016427306855190664,-2.1595591992381907e-6,-1.5501400836018825e-8,-0.0016421028587470339,-2.107131410238427e-6,-1.545878784662949e-8,-0.0016415236596336047,-1.921503495197351e-6,-1.5306805835881395e-8,-0.0016410491716874508,-1.6475995048951014e-6,-1.508237666232406e-8,-0.0016407026930217476,-1.3532595827599134e-6,-1.4841150585489634e-8,-0.0016404710798181709,-1.1058220927750292e-6,-1.4638324030823384e-8,-0.0016403140434198668,-9.529880693486804e-7,-1.4513000663883932e-8,-0.0016401794241349037,-9.138189075949228e-7,-1.4480834585139251e-8,-0.001640017698453548,-9.79444485492997e-7,-1.4534599598191043e-8,-0.0016397921504842823,-1.1199629554508742e-6,-1.46498259445195e-8,-0.001639483962540219,-1.2938873374757163e-6,-1.4792536911725107e-8,-0.0016390929025693608,-1.4576102121358978e-6,-1.492701055511908e-8,-0.0016386346780947172,-1.5734220969873702e-6,-1.5022352898574618e-8,-0.0016381360741017184,-1.615194314249089e-6,-1.50571474431728e-8,-0.0016376290513289884,-1.5712506992188948e-6,-1.502179647791281e-8,-0.0016371449438908516,-1.4444928408342774e-6,-1.4918620999811586e-8,-0.0016367096648583616,-1.25031555175269e-6,-1.4760165902237422e-8,-0.0016363404739891797,-1.0131188796195411e-6,-1.4566365366279228e-8,-0.0016360443826047542,-7.623240043753878e-7,-1.4361298196704363e-8,-0.0016358178081207191,-5.285826195157557e-7,-1.4170084868955413e-8,-0.0016356469788772767,-3.4036970890659786e-7,-1.4016082203265821e-8,-0.001635508814606122,-2.207663722595964e-7,-1.3918227118982464e-8,-0.0016353723164385856,-1.840892669518823e-7,-1.3888261221685396e-8,-0.0016352009622329746,-2.3204470491520787e-7,-1.3927578205263703e-8,-0.0016349571713373055,-3.4963943026521634e-7,-1.4023883873503605e-8,-0.0016346099310555375,-5.023932688054426e-7,-1.4148931817790818e-8,-0.0016341454885156152,-6.3792299560969e-7,-1.4259849140121573e-8,-0.0016335782650784292,-6.955174267981529e-7,-1.4307009536395608e-8,-0.0016329555381133835,-6.248455078933967e-7,-1.4249353069369657e-8,-0.001632348566823429,-4.0811994916454653e-7,-1.4072462495238987e-8,-0.0016318292392897165,-7.307325909948915e-8,-1.3799065103672127e-8,-0.0016314426223732346,3.1411804635436726e-7,-1.348317422928833e-8,-0.0016311911484804568,6.740899862647185e-7,-1.3189486706427881e-8,-0.0016310385568320672,9.431757478148973e-7,-1.2969887537649966e-8,-0.0016309281956906096,1.0909595365989285e-6,-1.284917620325891e-8,-0.0016308035869936743,1.1218851358131656e-6,-1.2823744428951683e-8,-0.001630622539391083,1.0659851233981184e-6,-1.286910999649688e-8,-0.0016303628898681499,9.662126791094569e-7,-1.2950244535657924e-8,-0.0016300220532569065,8.673019924964457e-7,-1.303067628890683e-8,-0.0016296132995635643,8.078877149326865e-7,-1.3078931636879651e-8,-0.001629160810966706,8.157006448712503e-7,-1.3072446478192921e-8,-0.0016286945140845575,9.051596921306019e-7,-1.2999506114425888e-8,-0.001628245126395128,1.0769022975441644e-6,-1.285960415768863e-8,-0.0016278397306271277,1.3189544201936767e-6,-1.266248230864526e-8,-0.001627498165347806,1.6092434451098838e-6,-1.2426094284497363e-8,-0.0016272305284777825,1.919140067868813e-6,-1.2173739988352222e-8,-0.0016270360259148394,2.2175661941671596e-6,-1.1930728972988056e-8,-0.0016269031154630333,2.475096567993343e-6,-1.1721030329836182e-8,-0.0016268106690123906,2.6677037698851066e-6,-1.1564201830643506e-8,-0.0016267299509751117,2.7800877693262435e-6,-1.1472661493037969e-8,-0.0016266273869119789,2.808609891480967e-6,-1.1449301618478332e-8,-0.0016264683188791577,2.7638226285538478e-6,-1.148545475645509e-8,-0.001626222281076474,2.6722456015579204e-6,-1.1559486532781036e-8,-0.0016258702666007566,2.576093825543154e-6,-1.1637054006801947e-8,-0.001625413368763386,2.528652681956703e-6,-1.1674892793466553e-8,-0.0016248800163113045,2.5829769218688514e-6,-1.163000825805575e-8,-0.0016243264182511817,2.7739410660516134e-6,-1.147422855629942e-8,-0.001623824448257784,3.0994362029174313e-6,-1.1209399713251122e-8,-0.0016234371005962335,3.5125193005639037e-6,-1.0873674286989874e-8,-0.0016231924460283597,3.934280626806754e-6,-1.0531046713794774e-8,-0.0016230722116879442,4.2839261521980505e-6,-1.0247004462157263e-8,-0.0016230223920017024,4.509022315061528e-6,-1.0064052989792204e-8,-0.001622977701628644,4.599308318664541e-6,-9.990503166746648e-9,-0.0016228844735368534,4.580979504172208e-6,-1.0005062897292258e-8,-0.0016227124043607017,4.500425340947215e-6,-1.007001881606373e-8,-0.0016224552660553113,4.4079367639713336E-06,-1.0144494972609784e-8,-0.001622125516269599,4.346659224530802e-6,-1.0193467505461069e-8,-0.001621747326018003,4.347159211571133e-6,-1.0192193851439426e-8,-0.001621350394160166,4.425844840376646e-6,-1.0127472727933714e-8,-0.0016209651093993971,4.585398795260131e-6,-9.99724721593909e-9,-0.001620618755614523,4.816205832030953e-6,-9.809405621898151e-9,-0.0016203324293711152,5.0984795936064065e-6,-9.580037457445881e-9,-0.0016201185778446112,5.4050620808012625e-6,-9.331168050521922e-9,-0.0016199792751218015,5.7049341968223675e-6,-9.087925536625024e-9,-0.0016199055449921847,5.967355112173079e-6,-8.875191668941198e-9,-0.0016198780222882233,6.166231880713312e-6,-8.714053321567563e-9,-0.0016198689897785872,6.284171358720325e-6,-8.618507598772804e-9,-0.0016198456428020592,6.315766071306402e-6,-8.59280112903386e-9,-0.001619774385405621,6.26973000154361e-6,-8.629727496350617e-9,-0.0016196259296935819,6.169525357590731e-6,-8.710169915500509e-9,-0.0016193810015156772,6.052090182629365e-6,-8.804188184311565e-9,-0.0016190363271137104,5.963922429773775e-6,-8.87422587160706e-9,-0.0016186098081281857,5.953407381087274e-6,-8.88131796854117e-9,-0.0016181424573248472,6.058817784323751e-6,-8.794748910421731e-9,-0.0016176935536342239,6.293589642068541e-6,-8.60386918296675e-9,-0.001617326219104022,6.634329004002173e-6,-8.327694536227654e-9,-0.0016170853930605306,7.020289243504353e-6,-8.015286175478002e-9,-0.0016169778930223832,7.370415677596483e-6,-7.732028934152944e-9,-0.0016169675000937544,7.6131522800298654E-06,-7.535643904942126e-9,-0.0016169901136538418,7.713155380487486e-6,-7.454642010804234e-9,-0.0016169800837689205,7.679978347262525e-6,-7.481256003272846e-9,-0.0016168922572558102,7.556948303108508e-6,-7.580374851378752e-9,-0.0016167104555515727,7.400752728903742e-6,-7.706059646917471e-9,-0.0016164437683271215,7.26360821746386e-6,-7.816027752541982e-9,-0.0016161173530747812,7.183346466944154e-6,-7.879724076888564e-9,-0.0016157633104902577,7.180632707092512e-6,-7.880570755501255e-9,-0.0016154140207041772,7.260286490250837e-6,-7.814851788477083e-9,-0.001615098001463881,7.414069548772224e-6,-7.689396067402687e-9,-0.001614837378113596,7.623584166153096e-6,-7.519187049980965e-9,-0.0016146461104334338,7.863038966555796e-6,-7.325110558075486e-9,-0.0016145285922477045,8.102151822196889e-6,-7.13161729702838e-9,-0.0016144786655525626,8.30954750461279e-6,-6.963995681741373e-9,-0.0016144794389958994,8.456851025280304e-6,-6.8450772368244266e-9,-0.0016145044863076245,8.523247037034214e-6,-6.791555454796449e-9,-0.0016145208238440725,8.499790759989043e-6,-6.810504300559879e-9,-0.0016144936330299336,8.392510891781708e-6,-6.896885929710203e-9,-0.001614392228170857,8.223343280763281e-6,-7.032834909617165e-9,-0.0016141963521061268,8.028183732838383e-6,-7.189288356946133e-9,-0.0016139016436967962,7.851860839942969e-6,-7.330101133146092e-9,-0.0016135231106711163,7.740313336524296e-6,-7.4183830864822594e-9,-0.0016130954016894184,7.730606125699386e-6,-7.424519615650904e-9,-0.0016126685428214326,7.840105042654435e-6,-7.334806831697677e-9,-0.0016122981087462733,8.057474208610399e-6,-7.1585873366644e-9,-0.0016120303080747725,8.339676729142519e-6,-6.930579850289531e-9,-0.001611885615787256,8.619402313112867e-6,-6.704899178695777e-9,-0.0016118481928508355,8.824139607217275e-6,-6.539785116730204e-9,-0.001611868604140801,8.90107812285037e-6,-6.477642765675682e-9,-0.001611881154272387,8.835912981377337e-6,-6.529915716142489e-9,-0.0016118277460059921,8.655388821984905e-6,-6.674986610903632e-9,-0.001611675919713035,8.41338736769802e-6,-6.869352972909047e-9,-0.0016114237381993468,8.169993921702883e-6,-7.06452679210035e-9,-0.001611093177231819,7.974354515474472e-6,-7.220908293079042e-9,-0.0016107187721478148,7.856385780125358e-6,-7.3144902295771e-9,-0.0016103373933631776,7.826230747315016e-6,-7.33726541883732e-9,-0.0016099815773490676,7.877830737849756e-6,-7.294288237410739e-9,-0.0016096761674665666,7.993507370107692e-6,-7.199928950656389e-9,-0.0016094369744081014,8.147984768505116e-6,-7.074608444117655e-9,-0.0016092702451640983,8.311598200694667e-6,-6.942216930039938e-9,-0.00160917228355665,8.453152537768642e-6,-6.827830668858108e-9,-0.001609129179254943,8.543077992903146e-6,-6.755189047281374e-9,-0.0016091171262881026,8.557333011262786e-6,-6.743558851885236e-9,-0.0016091041391435737,8.481979668330493e-6,-6.804049103358642e-9,-0.0016090539129368906,8.317618601666572e-6,-6.9360391917084e-9,-0.0016089320065604345,8.082194724983374e-6,-7.1249350615802805e-9,-0.0016087135318696238,7.810443188597418e-6,-7.342654995567478e-9,-0.0016083904469439763,7.548814847622212e-6,-7.551773316743061e-9,-0.0016079759933311404,7.346151109873746e-6,-7.71307892483668e-9,-0.0016075042761180575,7.242056143792723e-6,-7.794939036152872e-9,-0.00160702430711951,7.255973870729432e-6,-7.782022387653911e-9,-0.0016065893832426634,7.380066935880531e-6,-7.680904798184895e-9,-0.0016062439692449664,7.578337494266571e-6,-7.520654677956422e-9,-0.0016060111996290365,7.793284040925081e-6,-7.347429731587253e-9,-0.001605884722251656,7.959699219668078e-6,-7.2134347447406345e-9,-0.0016058284903456366,8.02276170190471e-6,-7.162490523129645e-9,-0.001605786300256652,7.954794950983538e-6,-7.216659725347376e-9,-0.0016056989183379042,7.763856680531235e-6,-7.3693711382787e-9,-0.0016055223349501092,7.489910937153623e-6,-7.5884774454684e-9,-0.0016052394922760655,7.190282869697641e-6,-7.827929734487749e-9,-0.0016048613732839356,6.9214213509586415e-6,-8.042440056461898e-9,-0.0016044191014809085,6.724717813606781e-6,-8.19887721405118e-9,-0.0016039523942876091,6.620315668122966e-6,-8.281210552001504e-9,-0.0016034994404368291,6.608103489245576e-6,-8.289661775609236e-9,-0.00160309058100955,6.672612775449543e-6,-8.236730302719379e-9,-0.0016027456251598608,6.788717605477168e-6,-8.142605180973005e-9,-0.0016024734564696638,6.92643298585074e-6,-8.031328805630021e-9,-0.001602272562723833,7.054461000471735e-6,-7.927975303945096e-9,-0.0016021316395473646,7.1429733909865235e-6,-7.85643420942448e-9,-0.001602030096147785,7.166416618010949e-6,-7.837159326460504e-9,-0.0016019389325304322,7.106967943498292e-6,-7.884384590805072e-9,-0.001601822909317285,6.958748005321464e-6,-8.002733282683978e-9,-0.001601645025670833,6.732028706082511e-6,-8.183846196126166e-9,-0.0016013737843991493,6.455595568760507e-6,-8.404514185145453e-9,-0.0016009923060795966,6.174736476004758e-6,-8.628343547216521e-9,-0.0016005063926833,5.943025935706647e-6,-8.81240660038963e-9,-0.001599947436018963,5.80863970378304e-6,-8.918249717289788e-9,-0.0015993671346443959,5.799343297164342e-6,-8.923895711975885e-9,-0.001598824450917896,5.912206177088279e-6,-8.831981049727163e-9,-0.0015983691261643967,6.112691262219383e-6,-8.670353040535608e-9,-0.001598027750726865,6.34370842368762e-6,-8.484735141405814e-9,-0.001597796970333321,6.541210365541908e-6,-8.32624668865039e-9,-0.0015976453400901444,6.6511270032490696e-6,-8.237927113772566e-9,-0.0015975225826418882,6.642865882163979e-6,-8.244027233433758e-9,-0.0015973733172837778,6.5160674645092064e-6,-8.344671256899067e-9,-0.0015971514460371861,6.299134854850162e-6,-8.517063826659138e-9,-0.0015968312197721644,6.040236787256278e-6,-8.722695998097968e-9,-0.0015964119337554,5.793741677183589e-6,-8.918192024461737e-9,-0.0015959153524303371,5.606512708157547e-6,-9.066246268690955e-9,-0.0015953776009036073,5.508240931702783e-6,-9.143302312759663e-9,-0.0015948390145066778,5.5079279870896205e-6,-9.142302190616902e-9,-0.0015943353730508711,5.595937570596819e-6,-9.07100224242127E-09,-0.0015938924112206762,5.749295724445448e-6,-8.947734194601513e-9,-0.0015935237022038366,5.937745603497693e-6,-8.796600268425784e-9,-0.0015932308952599915,6.128923308494835e-6,-8.643381449495809e-9,-0.0015930050349990598,6.292138592490837e-6,-8.512542405787741e-9,-0.0015928280496299403,6.401112560124816e-6,-8.425039499555748e-9,-0.001592674118163697,6.436402325511549e-6,-8.396358552439093e-9,-0.001592511242825915,6.388162226916735e-6,-8.434284847973138e-9,-0.0015923038548076277,6.259479463662382e-6,-8.536238644079333e-9,-0.0015920175360308354,6.069704190545227e-6,-8.686647143544019e-9,-0.0015916265581974022,5.855945053772369e-6,-8.855809836079169e-9,-0.0015911234432686942,5.66982094337028e-6,-9.002557749844637e-9,-0.0015905271902137126,5.566980643098267e-6,-9.082660120678599e-9,-0.0015898846649755427,5.5901058549402035e-6,-9.062364074658102e-9,-0.0015892607401442954,5.751420421663427e-6,-8.932240034166934e-9,-0.0015887185141690312,6.0241142294602755e-6,-8.713870498328418e-9,-0.0015882979764191441,6.3490168297115175e-6,-8.454426383873467e-9,-0.0015880035039804617,6.654182728757788e-6,-8.211064945180594e-9,-0.0015878052699886624,6.877775058584288e-6,-8.032786882775957e-9,-0.0015876517590710897,6.984489838970192e-6,-7.947450754328946e-9,-0.0015874863779336544,6.971221701182685e-6,-7.957325293941682e-9,-0.0015872619917445506,6.863185748489404e-6,-8.042215733171648e-9,-0.0015869502414554443,6.704200258300083e-6,-8.167230467721707e-9,-0.0015865450265327885,6.544861833301743e-6,-8.292209810873044e-9,-0.001586060881771174,6.431419708027262e-6,-8.380562643969391e-9,-0.0015855275390838218,6.397223103243651e-6,-8.4060105625722e-9,-0.001584982293378186,6.457920516330214e-6,-8.356321717507075e-9,-0.0015844620349776742,6.61081898948137e-6,-8.233749425801078e-9,-0.0015839966677754043,6.837813403661317e-6,-8.052680242552925e-9,-0.0015836049744388627,7.110512974486875e-6,-7.83558877254055e-9,-0.00158329313272495,7.39599782801762e-6,-7.60852007937778e-9,-0.0015830553572955281,7.661943418484884e-6,-7.397063210929995e-9,-0.0015828757453601038,7.88048537908479e-6,-7.223288825216026e-9,-0.0015827305073950087,8.030921094971425e-6,-7.103576255489422e-9,-0.0015825902239223386,8.10175707948008e-6,-7.046953362750228e-9,-0.0015824222470464458,8.09261347207407e-6,-7.0535751904136625e-9,-0.0015821938020142208,8.016239439311893e-6,-7.1131587433406575e-9,-0.001581876678930113,7.90023529461386e-6,-7.203688583790658e-9,-0.0015814541506088944,7.786937005316729e-6,-7.291589958387156e-9,-0.001580929437716428,7.72886735500687e-6,-7.33539011103742e-9,-0.001580332627237802,7.777305469592599e-6,-7.294769075619663e-9,-0.0015797203731629178,7.964409090283794e-6,-7.144630568893987e-9,-0.0015791630814620142,8.285391603077017e-6,-6.889058321940481e-9,-0.001578720878001717,8.692298812053108e-6,-6.566101724486824e-9,-0.001578419502984907,9.10747486170557e-6,-6.2370916464480965e-9,-0.0015782405062512823,9.452091527792786e-6,-5.9641611304561455e-9,-0.0015781312909732138,9.674079549613374e-6,-5.7882606428250385e-9,-0.001578027360075597,9.761402781761969e-6,-5.718703551331627e-9,-0.0015778737449317608,9.738155742011253e-6,-5.736256424581671e-9,-0.0015776373992268053,9.650582774239132e-6,-5.804222309092312e-9,-0.0015773098917586672,9.551555633876995e-6,-5.88077278945436e-9,-0.0015769037319662415,9.488450878456881e-6,-5.928572703455147e-9,-0.001576445875891479,9.49569390768316e-6,-5.920653078048749e-9,-0.001575970674530697,9.591327497139855e-6,-5.84304192231517e-9,-0.0015755133171369835,9.77658865659438e-6,-5.694997471322311e-9,-0.0015751042615903047,1.003778163139329e-5,-5.487458624638412e-9,-0.001574765041689377,1.0349895109118027e-5,-5.240176643150512e-9,-0.0015745057554236149,1.0681318357532525e-5,-4.978030419643896e-9,-0.001574324361526077,1.0998934195309128e-5,-4.727059345412328e-9,-0.0015742076584801335,1.1272847997949395e-5,-4.510760254880358e-9,-0.0015741334933916324,1.148015300643822e-5,-4.347106597166391e-9,-0.0015740736145208995,1.1607546540740536e-5,-4.2464524410951475e-9,-0.0015739967905234456,1.165297766004052e-5,-4.210215818202505e-9,-0.0015738721019847755,1.1626573124438477e-5,-4.230176567081147e-9,-0.0015736725816667494,1.1550994953670337e-5,-4.288272760115865e-9,-0.0015733796828682138,1.1460984868635478e-5,-4.357060355334619e-9,-0.0015729888863822469,1.1400977627530216e-5,-4.401668546947189e-9,-0.001572515654131937,1.1418948321355508e-5,-4.38465144129614e-9,-0.0015719991378984194,1.155499016771094e-5,-4.27489553861985e-9,-0.0015714991590845522,1.1825387317786e-5,-4.059992614526739e-9,-0.0015710820407434478,1.2207971645261938e-5,-3.757587705347629e-9,-0.00157079647604091,1.2639630181296142e-5,-3.4172617851035963e-9,-0.0015706506457699233,1.3034205729014649e-5,-3.106531606911105e-9,-0.0015706061696304065,1.3315507185698884e-5,-2.885049906609442e-9,-0.0015705947849098492,1.3446774868260129e-5,-2.7815199812259615e-9,-0.0015705471798354855,1.3439686701807493e-5,-2.7865797392088607e-9,-0.0015704165589056223,1.3341690442592115e-5,-2.8627232184856177e-9,-0.0015701872847721412,1.3213818456770147e-5,-2.9617956699222407e-9,-0.0015698706765883304,1.3111683729022345e-5,-3.0400379076245207e-9,-0.0015694951802119525,1.3074916344619818e-5,-3.0664473087197053e-9,-0.0015690965559719964,1.3124045477720016e-5,-3.02518922812497E-09,-0.0015687104237655423,1.3261776187223445e-5,-2.914483963298332e-9,-0.0015683672849147719,1.3476135614623932e-5,-2.744017121960997e-9,-0.001568089331561201,1.3744221248213585e-5,-2.531925583923272e-9,-0.001567888481635352,1.4036199389495978e-5,-2.301652902586154e-9,-0.0015677654444036897,1.431949385617295e-5,-2.0787019259425203e-9,-0.001567709854690696,1.4563082634763757e-5,-1.8873090716874538e-9,-0.0015677016010537767,1.474164561397543e-5,-1.7472081474154697e-9,-0.0015677133377832947,1.4839081201440235e-5,-1.6708576042155112e-9,-0.0015677139033290711,1.4850945784761677e-5,-1.6615071481920558e-9,-0.001567672273456403,1.4785614343760266e-5,-1.712298071717079e-9,-0.001567561728035762,1.4664077909571058e-5,-1.8064872373507266e-9,-0.001567363964362006,1.4518342278869283e-5,-1.9188087740274477e-9,-0.0015670730416101715,1.4388371092908044e-5,-2.017975036911366e-9,-0.001566699009351379,1.4317124795163991e-5,-2.0706086887569183e-9,-0.001566270342050259,1.434288706438812e-5,-2.0471994116831762e-9,-0.0015658331609196012,1.4488670512990482e-5,-1.9302484376469083e-9,-0.0015654445000836176,1.4750408147840926e-5,-1.72331580198987e-9,-0.0015651576376926135,1.5088818242514955e-5,-1.4572399696723894e-9,-0.0015650016611725502,1.543273520838367e-5,-1.1875289074112136e-9,-0.0015649646525930018,1.5699315031914638e-5,-9.786981777112633e-10,-0.0015649932080395524,1.5825615668091956e-5,-8.797288461446118e-10,-0.0015650127561441629,1.5794360168681763e-5,-9.039460652179229e-10,-0.0015649578766231919,1.5637909598140213e-5,-1.0258340424130335e-9,-0.0015647946888691952,1.5419919015121727e-5,-1.1953572908828253e-9,-0.001564525408102832,1.5208671664966406e-5,-1.3589165068917122e-9,-0.0015641786040441487,1.5056893076463547e-5,-1.4752664574075088e-9,-0.00156379486909857,1.4993534545273575e-5,-1.521981552315444e-9,-0.0015634150399108117,1.5024788854757072e-5,-1.4945831313107964e-9,-0.0015630731490801214,1.5139317110787819e-5,-1.4023153307767539e-9,-0.0015627932503844573,1.5314097884522007e-5,-1.2634546568637839e-9,-0.0015625884467632353,1.5519419283943223e-5,-1.1013546330723007e-9,-0.001562460875346721,1.5722949233932406e-5,-9.412785609553453e-10,-0.0015624021479970563,1.5893311969822037e-5,-8.076525173200512e-10,-0.0015623942663999986,1.600355815982286e-5,-7.213957276926135e-10,-0.0015624113087739449,1.603464562664121e-5,-6.972120092446669e-10,-0.0015624222244725121,1.5978599480086515e-5,-7.411073308205331e-10,-0.0015623947894483653,1.5840685366149302e-5,-8.486840929629714e-10,-0.0015623003825704094,1.563995164582476e-5,-1.0047498832725248e-9,-0.00156211896716867,1.5407677934949402e-5,-1.1846143530044873e-9,-0.0015618434715127026,1.5183522199556461e-5,-1.3572122413585078e-9,-0.001561482731818114,1.5009579708722523e-5,-1.4898312300154014e-9,-0.0015610623229379093,1.492287455651844e-5,-1.553978673492256e-9,-0.0015606225925568506,1.4946887881331915e-5,-1.5318866836714567e-9,-0.001560212971251659,1.5083203136375069e-5,-1.422837639342225e-9,-0.0015598818401117295,1.530556706953706e-5,-1.2475983890907835e-9,-0.0015596626235708532,1.5560011265301256e-5,-1.0482226412439358e-9,-0.001559559627593272,1.577486934926789e-5,-8.802955933378288e-10,-0.0015595405570984476,1.5881538273988095e-5,-7.9692043926817e-10,-0.0015595430360532403,1.5839771966023374e-5,-8.291538101517867e-10,-0.0015594959955338393,1.5654660779172335e-5,-9.72801001056983e-10,-0.0015593463001946208,1.5374391353418983e-5,-1.190114515735307e-9,-0.0015590762116928854,1.5069709060576866e-5,-1.4258030022227316e-9,-0.001558703847788798,1.4807611900845037e-5,-1.6276153266680996e-9,-0.0015582703547364113,1.4632787290015397e-5,-1.7608768873779355e-9,-0.00155782354477752,1.4561962806159921e-5,-1.812864234105201e-9,-0.0015574055106049006,1.4587994709651823e-5,-1.7895075593158592e-9,-0.0015570463687551211,1.4687835068240819e-5,-1.7090593224017948e-9,-0.0015567627265973315,1.4830172836249719e-5,-1.5960694700656643e-9,-0.0015565585721585488,1.4981143223910987e-5,-1.4769346528028385e-9,-0.0015564268779924705,1.5108248878273527e-5,-1.3768878228299211e-9,-0.001556351184307716,1.5183283689987646e-5,-1.3177718726983572e-9,-0.0015563071846080817,1.518499355836712e-5,-1.3159931882651027e-9,-0.001556264759061091,1.5101840586844419e-5,-1.3803631127402186e-9,-0.0015561910289953722,1.493467497760959e-5,-1.5099983155967233e-9,-0.001556054769142461,1.4698525876528096e-5,-1.692928407678446e-9,-0.0015558319325716652,1.4422419435365395e-5,-1.9062865699394374e-9,-0.00155551134062967,1.4146276673803998e-5,-2.118820791349384e-9,-0.0015550990200105716,1.3914554215767493e-5,-2.2959501362179986e-9,-0.0015546195256492723,1.376733680242155e-5,-2.406755127218841e-9,-0.001554113115567492,1.3730683214261952e-5,-2.4314473667369036e-9,-0.001553628664032215,1.3808584379673326e-5,-2.367474165297039e-9,-0.0015532132442453931,1.3978822784027847e-5,-2.232532482775318e-9,-0.0015529002123789554,1.4194626461009348e-5,-2.063117347756414e-9,-0.0015526985302697924,1.439325938164884e-5,-1.907804521574992e-9,-0.0015525869004329388,1.4511149461068737e-5,-1.8155962076796212e-9,-0.0015525163561113226,1.4502518791870292e-5,-1.821618126894051e-9,-0.0015524229966605255,1.4355340596169604e-5,-1.934861536785402e-9,-0.0015522480046320417,1.4097085782131253e-5,-2.1337720574238567e-9,-0.0015519570630758844,1.3785964147240603e-5,-2.373056019133126e-9,-0.0015515502090884452,1.3490805690072358e-5,-2.5993134735632945e-9,-0.0015510581583219735,1.3269136012428824e-5,-2.7680732374480753e-9,-0.0015505287216183647,1.3153018247135854e-5,-2.8547493909096727e-9,-0.0015500111337097319,1.3146302784594268e-5,-2.8566824400189927e-9,-0.0015495446374244918,1.3230505435768768e-5,-2.788469542937826e-9,-0.001549153320614908,1.3373991814169866e-5,-2.6747740927702085e-9,-0.0015488458317407083,1.3540368315253085e-5,-2.543818936185515e-9,-0.0015486175736199625,1.3694424215569561e-5,-2.422826603784886e-9,-0.0015484534953238353,1.3805782453544893e-5,-2.335244042665086e-9,-0.0015483305799586244,1.3851194736815257e-5,-2.2989915178837034e-9,-0.0015482199989999771,1.3816427644258473e-5,-2.3249912029369815e-9,-0.001548089463216438,1.369826171317471e-5,-2.41558809311908e-9,-0.0015479064843226234,1.3506495043573231e-5,-2.5629790637511724e-9,-0.0015476430650823826,1.3265142070830212e-5,-2.748308110889761e-9,-0.0015472817047777522,1.3011433188873347e-5,-2.9425170054115522e-9,-0.0015468215378123499,1.2791153939947237e-5,-3.1100615838046316e-9,-0.0015462823008519895,1.264978126784404e-5,-3.2158634430605283e-9,-0.0015457034820694632,1.2620793299373853e-5,-3.23437207800151e-9,-0.0015451371557708795,1.271461979911524e-5,-3.1580199349164043e-9,-0.0015446354809309358,1.2912598720449401e-5,-3.001718234269623e-9,-0.0015442364302565255,1.3169086681883902e-5,-2.801040276875315e-9,-0.0015439524938185769,1.342193894043896e-5,-2.604019123633512e-9,-0.0015437662068975597,1.3608488064402962e-5,-2.4588197532468753e-9,-0.0015436340713854192,1.3682357584886e-5,-2.4008622169249547e-9,-0.001543497962354699,1.3626252232787606e-5,-2.4430807619033354e-9,-0.00154330101649021,1.3456844397511336e-5,-2.572263294225788e-9,-0.0015430034083978895,1.3219882326718478e-5,-2.7529027871083723e-9,-0.0015425929181858147,1.2976711436722279e-5,-2.937645646025132e-9,-0.0015420866882192013,1.278670592403656e-5,-3.080856310691857e-9,-0.00154152398796979,1.2691851204048305e-5,-3.1504613502583297e-9,-0.001540953480044075,1.2708519035282108e-5,-3.1341863973903237e-9,-0.0015404202334010281,1.2827867903263539e-5,-3.039126457904035e-9,-0.0015399566733843208,1.302256759212801e-5,-2.886485245993735e-9,-0.0015395788942260255,1.325586308652444e-5,-2.7045866919813093e-9,-0.0015392872954454852,1.3489692472678766e-5,-2.5226746116671805e-9,-0.0015390695180788213,1.3690362719305401e-5,-2.3666060094382767e-9,-0.0015389039426561332,1.3831829101966165e-5,-2.2563601055744896e-9,-0.0015387628159656927,1.3897428531583792e-5,-2.20469239650718e-9,-0.0015386148936828994,1.388103058929039e-5,-2.2162086122068876e-9,-0.0015384280799308537,1.3788188762037226e-5,-2.28644706084773e-9,-0.0015381727896268602,1.3637252599749298e-5,-2.4010335015984904e-9,-0.00153782662638598,1.3459685165893791e-5,-2.5355047694054314e-9,-0.0015373803606947806,1.3298103454663454e-5,-2.6569224773298658e-9,-0.0015368439449366434,1.3200271754010526e-5,-2.7285944715443808e-9,-0.0015362497069414172,1.3208268582747388e-5,-2.7184455758695063e-9,-0.0015356491281297727,1.3344727868614513e-5,-2.609535624585385e-9,-0.0015351012857119798,1.3601376685119754e-5,-2.4087144532296773e-9,-0.001534655333305587,1.3936432395579682e-5,-2.1484399499017215e-9,-0.0015343338675460306,1.4284442308400234e-5,-1.8790986065537597e-9,-0.001534124900712501,1.4575769360907748e-5,-1.6540268609434805e-9,-0.001533986063403117,1.4757650849527079e-5,-1.5134089313619608e-9,-0.0015338585577077514,1.4808523097929115e-5,-1.4733758294952858e-9,-0.001533684646016743,1.4741520547899112e-5,-1.5234227094639102e-9,-0.001533422629589494,1.4597945041350879e-5,-1.6315309243635806e-9,-0.0015330556633583313,1.4434363097761433e-5,-1.7541719141681908e-9,-0.0015325932941699795,1.43077142414427e-5,-1.8477863331828831e-9,-0.0015320665277323265,1.426230754346835e-5,-1.878725396982042e-9,-0.0015315185461519663,1.4321473573738102e-5,-1.8295328556822685e-9,-0.001530993934766879,1.4485180350014558e-5,-1.7006180859558923e-9,-0.001530529287402824,1.4733246178698408e-5,-1.5076755247691595e-9,-0.0015301472235543963,1.5032273750256648e-5,-1.2763383865137975e-9,-0.001529854434526647,1.5343751423442615e-5,-1.0360201232972493e-9,-0.0015296430494533845,1.5631173065596047e-5,-8.145421075795626e-10,-0.0015294939224596445,1.5865044960165455e-5,-6.343581941131169e-10,-0.0015293804665335667,1.6025681201232713e-5,-5.104211518947967e-10,-0.0015292721800424954,1.6104406698012555e-5,-4.492264661427397e-10,-0.0015291376898846022,1.610398838942385e-5,-4.484456737093128e-10,-0.0015289476443276155,1.6038826092304203e-5,-4.967851368558057e-10,-0.0015286780300962212,1.5934920116292352e-5,-5.7407767303816e-10,-0.0015283144581671828,1.5828995706173513e-5,-6.520649957069123e-10,-0.001527857433495814,1.5765420962771622e-5,-6.968641554284709e-10,-0.0015273273599870595,1.578919190086431e-5,-6.74377333345776e-10,-0.001526766307082904,1.5934197950098757e-5,-5.592021348606761e-10,-0.0015262325434225242,1.6208917896855537e-5,-3.454009983392546e-10,-0.0015257856016340661,1.6585900155219326e-5,-5.434009904032178e-11,-0.001525465322369261,1.7003376453317625e-5,2.6667254099619e-10,-0.0015252747715500247,1.738282006332563e-5,5.577945753003107e-10,-0.0015251774516648478,1.765614484759572e-5,7.673293029466002e-10,-0.0015251111941016761,1.778888314628154e-5,8.693422948032573e-10,-0.0015250108675460873,1.7788373699605145e-5,8.698678813149482e-10,-0.0015248284104435656,1.769597096092772e-5,8.008933904221264e-10,-0.001524543138352943,1.7570342537972436e-5,7.074837082249667e-10,-0.001524161958697962,1.747014596631279e-5,6.344307222398109e-10,-0.00152371290844506,1.7441141511317046e-5,6.163780060845438e-10,-0.001523235851785127,1.7509215448337496e-5,6.72585413499027e-10,-0.0015227730669315363,1.7678694633934106e-5,8.058200670495614e-10,-0.0015223612736943114,1.7934688640477055e-5,1.0043203383510617e-9,-0.0015220259505717274,1.82482101335355e-5,1.2458005545171251e-9,-0.0015217783771147274,1.858278154644696e-5,1.502482588468059e-9,-0.0015216153779278,1.8901176203271382e-5,1.7461563926156706e-9,-0.001521521286606779,1.9171184850908933e-5,1.9524855806838318e-9,-0.0015214713531420381,1.936973086375099e-5,2.1040967574472464e-9,-0.0015214357043695024,1.9485117407839795e-5,2.1923000740043392e-9,-0.001521383137404215,1.9517692447771478e-5,2.217627952739704e-9,-0.0015212844821984616,1.9479511468266107e-5,2.1895835175049778e-9,-0.0015211156742934025,1.939342867657197e-5,2.1258913140746853e-9,-0.0015208608563400331,1.9291673965034527e-5,2.0512979780619082e-9,-0.001520515854495682,1.9213505125941906e-5,1.995657851135691e-9,-0.0015200919884612346,1.9200901897949216e-5,1.9905876211772794e-9,-0.0015196190517206686,1.9290978781291798e-5,2.0637415938522103e-9,-0.001519144803733725,1.9504713196396947e-5,2.2304122471037216e-9,-0.001518727462232059,1.9834280591372538e-5,2.484141135478913e-9,-0.0015184192950395239,2.0235367514319987e-5,2.7910634415758664e-9,-0.0015182452262433325,2.0633099952696904e-5,3.0944338572009063e-9,-0.0015181877354138221,2.094520859440517e-5,3.3320858875781925e-9,-0.0015181899043198905,2.1113683302729238e-5,3.4603240998125803e-9,-0.0015181776587180065,2.1127106051478163e-5,3.4708520228233463e-9,-0.0015180885131474918,2.1021030404410242e-5,3.391091106264991e-9,-0.0015178909438639508,2.0859213783789e-5,3.2698730446144373e-9,-0.0015175877233646422,2.0709171992738493e-5,3.1587082248994756e-9,-0.0015172073558787026,2.0623842481949752e-5,3.0977101310951086e-9,-0.0015167914191089214,2.063317965218757e-5,3.109204821067375e-9,-0.0015163832619076432,2.0743705953134367e-5,3.1975368071754336e-9,-0.0015160200669873704,2.0942485608743105e-5,3.3523023756736195e-9,-0.0015157281682930876,2.1202788343014117e-5,3.5528268410564887e-9,-0.0015155208240000008,2.1490072546112796e-5,3.7727761422749006e-9,-0.0015153978329193042,2.1767775800983042e-5,3.984512020996164e-9,-0.0015153466823297202,2.2002561279956053e-5,4.162975427671088e-9,-0.0015153449752000046,2.2168662578104594e-5,4.2888951154383054e-9,-0.0015153638372301824,2.225102728825126e-5,4.351136659371982e-9,-0.001515371889179471,2.2246993016359994e-5,4.3479874066622305e-9,-0.0015153392563930425,2.216641597337143e-5,4.287271959233951e-9,-0.001515241213541778,2.2030490914074532e-5,4.1854284582402095e-9,-0.0015150613338686283,2.1869574703626888e-5,4.065761994294679e-9,-0.0015147941551076818,2.1720147110229897e-5,3.956004055400928e-9,-0.0015144474064621842,2.1620798118500058e-5,3.885163322724043e-9,-0.0015140436280418352,2.160676344805545e-5,3.879380610579873e-9,-0.0015136202312386242,2.1702388771875214e-5,3.956357484574458e-9,-0.001513226034844196,2.191177437422689e-5,4.1185205826258535e-9,-0.0015129120080209172,2.221001677650227e-5,4.346649078495528e-9,-0.001512715541928629,2.254041791686142e-5,4.597890678761155e-9,-0.001512642323751254,2.282451516198137e-5,4.8132638236435735e-9,-0.001512656112032841,2.2987226657755368e-5,4.936448725917021e-9,-0.0015126871339836351,2.2987814401065566e-5,4.937036368579893e-9,-0.0015126589666124984,2.283832816494508e-5,4.824488181507253e-9,-0.0015125191642603442,2.2596939508072832e-5,4.643164810446097e-9,-0.001512255771697461,2.234135481963672e-5,4.452159952580022e-9,-0.0015118937115124553,2.2139907404171068e-5,4.303255975411923e-9,-0.00151147883232571,2.203443093930126e-5,4.227845582902372e-9,-0.001511060993239207,2.2037202305538674e-5,4.234671953457867e-9,-0.0015106824975225093,2.213657085421608e-5,4.314282868663287e-9,-0.0015103725536317254,2.2305348342064856e-5,4.4455958177446396e-9,-0.001510145935250769,2.2508543748264166e-5,4.601885979825811e-9,-0.0015100037941396729,2.27093975733727e-5,4.75536669510632e-9,-0.0015099353530227085,2.2873996336669858e-5,4.880600371514767e-9,-0.0015099200916151164,2.2974973370313923e-5,4.957188134048892e-9,-0.0015099304637137257,2.2994496007904244e-5,4.971952359005194e-9,-0.0015099352286913673,2.2926461766264454e-5,4.920579998432417e-9,-0.0015099033645110472,2.277759522000927e-5,4.808472749402745e-9,-0.0015098082535331882,2.256704567886276e-5,4.650450638927179e-9,-0.0015096316019525189,2.2324318804894625e-5,4.469136915658275e-9,-0.0015093665766133704,2.208567924099814e-5,4.2921241199986e-9,-0.0015090197629728298,2.1889299652124044e-5,4.148176635499323e-9,-0.0015086116448405531,2.1769507934527783e-5,4.062815296740895e-9,-0.0015081753500045245,2.1750466832938717e-5,4.05360291565382e-9,-0.0015077531763032308,2.183960388547096e-5,4.125383508132904e-9,-0.0015073900399322092,2.202167990402843e-5,4.2660809956394935e-9,-0.0015071232263286609,2.225573764208077e-5,4.44462415416496e-9,-0.0015069693776782423,2.2478572667533146e-5,4.6136193435732875e-9,-0.0015069127900212765,2.261830809440704e-5,4.719430802140069e-9,-0.0015069025568193628,2.2617773461514468e-5,4.719545121206075e-9,-0.0015068654430890603,2.2459193836491986e-5,4.601005606662283e-9,-0.001506732732291867,2.2175454413684737e-5,4.388897633440769e-9,-0.0015064676102254564,2.1838262916960467e-5,4.1374773793336535e-9,-0.0015060770908259737,2.152899176668202e-5,3.9081543995164606e-9,-0.0015056034531821725,2.130964096087466e-5,3.747499605308365e-9,-0.0015051039831142801,2.120817745888039e-5,3.67616765940978e-9,-0.0015046318558587788,2.121994692951462e-5,3.6900798243215312e-9,-0.0015042251268647423,2.1317953608248667e-5,3.768369282876351e-9,-0.0015039036630436163,2.1464388035088392e-5,3.88222893943776e-9,-0.0015036707819547192,2.1619516091843104e-5,4.001665844105285e-9,-0.0015035165886605325,2.1747302655433718e-5,4.099689013291884e-9,-0.00150342132600212,2.1818716266063703e-5,4.154695925069204e-9,-0.001503358325448771,2.1813879500024203e-5,4.1519986156729824e-9,-0.0015032968462424501,2.1723736492507323e-5,4.08503905892022e-9,-0.0015032052341075262,2.155133538091197e-5,3.956368101994074e-9,-0.0015030546872407823,2.1312355770057032e-5,3.778071180337243e-9,-0.0015028235326783174,2.103420332333634e-5,3.5710789610787957e-9,-0.0015025013887804367,2.075307806093682e-5,3.362886440108658e-9,-0.0015020922453497882,2.0508886287330707e-5,3.183598559287639e-9,-0.0015016154742786625,2.0338452391119222e-5,3.0607104114683997e-9,-0.0015011040515861569,2.0268076034948164e-5,3.0134867470089806e-9,-0.001500599804274013,2.030688168146457e-5,3.04807733049152e-9,-0.0015001460726057133,2.044239395900025e-5,3.154424023362247e-9,-0.00149977856352969,2.0639604039527855e-5,3.305819021705255e-9,-0.0014995156172464786,2.0844817059723325e-5,3.461959279396227e-9,-0.0014993500137638414,2.0995399978085027e-5,3.576249789876038e-9,-0.0014992456432738306,2.1035335583678028e-5,3.60729449457631e-9,-0.0014991428844553212,2.0933644184201608e-5,3.532476786791916e-9,-0.0014989745730104767,2.0698804268457708e-5,3.3586078624101303e-9,-0.0014986888360896111,2.0380406021878866e-5,3.1231135922833585e-9,-0.0014982686733544998,2.0053717417477414e-5,2.88245886837212e-9,-0.001497737525690711,1.979300837962255e-5,2.692135997911263e-9,-0.001497148017881539,1.9647196210900128e-5,2.588415637713842e-9,-0.0014965613991866607,1.9629093705834248e-5,2.5803785904338805e-9,-0.0014960289411646245,1.971968706434261e-5,2.653283174951249e-9,-0.0014955820412908304,1.9880736800477454e-5,2.778157555940626e-9,-0.0014952309905867504,2.006787897714019e-5,2.9216817011335566e-9,-0.0014949687552116315,2.0239968863611068e-5,3.053154202397362e-9,-0.001494776174475137,2.0364131096063462e-5,3.1481831138080597e-9,-0.0014946265704327824,2.0417849223123522e-5,3.1901577490234746e-9,-0.0014944892845262566,2.038968095963877e-5,3.170735822070018e-9,-0.001494332545660484,2.0279629489477603e-5,3.090127645122555e-9,-0.0014941263545837618,2.009946410020862e-5,2.957370145196969e-9,-0.0014938459444002585,1.9872625600314708e-5,2.7902699955053625e-9,-0.0014934759328347927,1.9632856641228426e-5,2.614335134584265e-9,-0.0014930145655336932,1.9420569813598002e-5,2.4599538294097267e-9,-0.001492476702076429,1.9276431553751654e-5,2.3574741074222654e-9,-0.001491893815555032,1.923270705234934e-5,2.3306640563010123e-9,-0.0014913096645020614,1.930428755097455e-5,2.3900526656468323e-9,-0.0014907716135890666,1.9482318555866433e-5,2.5283426168944e-9,-0.0014903193643921373,1.973316438958572e-5,2.7198781518158167e-9,-0.0014899741448074898,2.0003956799043533e-5,2.9249937542774248e-9,-0.0014897315523588778,2.023395845028581e-5,3.098573729705269e-9,-0.0014895604078392077,2.036929696434408e-5,3.200967785115278e-9,-0.0014894086578894246,2.0377579597678796e-5,3.2087039570247428e-9,-0.0014892158047863976,2.0258385868426954e-5,3.122098731804692e-9,-0.001488929416536435,2.00457625312811e-5,2.9669485121319134e-9,-0.0014885210657221955,1.9800292408669174e-5,2.7885218058526498e-9,-0.0014879957071757151,1.9591794282292342e-5,2.6386436925550972e-9,-0.0014873899746012964,1.9478359809753334e-5,2.5601312681883347e-9,-0.0014867596618360918,1.949011570768919e-5,2.5748323704033555e-9,-0.0014861620498762876,1.96239922223134e-5,2.6799132147527057e-9,-0.0014856407320978139,1.9849868774778618e-5,2.8525944425785092e-9,-0.0014852179082245765,2.0123138972227992e-5,3.0595746869390322e-9,-0.001484894404555705,2.0397436089605455e-5,3.266468246613373e-9,-0.0014846544662120268,2.063358248057847e-5,3.444366312054756e-9,-0.0014844719149976677,2.080401172999627e-5,3.573026893968126e-9,-0.0014843155256631664,2.089389600951698e-5,3.6416569247405195e-9,-0.0014841529717873015,2.0900677734307805e-5,3.6485643076621275e-9,-0.0014839536957402732,2.083324538196875e-5,3.6005774495059056e-9,-0.0014836914694317035,2.0711220588510544e-5,3.5125354304605184e-9,-0.0014833473561297718,2.0564086382282243e-5,3.406608295349423e-9,-0.0014829133688975399,2.0429297886048457e-5,3.3108019367196984e-9,-0.0014823963710327067,2.0348185310062236e-5,3.25579730356668E-09,-0.0014818207428450856,2.0358734524199104e-5,3.269510016130022e-9,-0.0014812274772494347,2.048563738802864e-5,3.369725367338494e-9,-0.0014806675693328044,2.0730221397913308e-5,3.556767697544755e-9,-0.0014801896123771137,2.106481501301274e-5,3.809538836492915e-9,-0.0014798249253679303,2.143590416769047e-5,4.088059593597637e-9,-0.0014795761455542354,2.177709692752412e-5,4.3431788306475135e-9,-0.0014794146511569793,2.202796158292254e-5,4.530508461441201e-9,-0.0014792883061481331,2.21516328538685e-5,4.623353141774396e-9,-0.0014791364524373138,2.2144870224967428e-5,4.620002061129199e-9,-0.001478906684187595,2.203791530288745e-5,4.543444647931511e-9,-0.0014785683235115793,2.1885258092804413e-5,4.434360357647662e-9,-0.0014781193401062422,2.1750689691606835e-5,4.339933827235743e-9,-0.0014775854795386373,2.169092982823376e-5,4.3017291032046366e-9,-0.001477012299802205,2.1742145708306606e-5,4.345842348530162e-9,-0.0014764526498468376,2.191281179061359e-5,4.477843345187745e-9,-0.0014759534363243591,2.2184454181331846e-5,4.683549499194312e-9,-0.0014755455960484022,2.2519217855883682e-5,4.93475027814799e-9,-0.0014752396898019221,2.2870962823821085e-5,5.1974073013490225e-9,-0.0014750271342094889,2.3195958122338928e-5,5.439457561441334e-9,-0.0014748851544931095,2.3460421517391652e-5,5.636259530417908e-9,-0.0014747829673421675,2.3644120169039524e-5,5.773169265596725e-9,-0.001474687320693333,2.374080291527646e-5,5.845840169919798e-9,-0.0014745666070528286,2.3756880234768512e-5,5.859274017653767e-9,-0.0014743937130802754,2.370958754850038e-5,5.826487086509059e-9,-0.0014741482569230124,2.3625217663658505e-5,5.767179828898929e-9,-0.001473818894785108,2.353730629244631e-5,5.7063097259063755e-9,-0.0014734060778071696,2.3484074946004946e-5,5.672082995091509e-9,-0.001472924981874492,2.3504008874457454e-5,5.692603170476783e-9,-0.0014724072644037177,2.3628534088270373e-5,5.790480507708103e-9,-0.0014718991918354172,2.387197597384268e-5,5.975569281186334e-9,-0.0014714535304005726,2.422153315886059e-5,6.2378093646216116e-9,-0.0014711147480171334,2.463284924493281e-5,6.5441791770475725e-9,-0.0014709018005976526,2.5037149761910478e-5,6.844044438239558e-9,-0.0014707971735682401,2.5361087416693702e-5,7.08371765685339e-9,-0.0014707499231823534,2.5551998946229314e-5,7.224937628064112e-9,-0.0014706928556039132,2.559617122586235e-5,7.2582251778159335e-9,-0.0014705654035565266,2.5521412187611647e-5,7.204692681405604e-9,-0.0014703314954858874,2.5384704814681434e-5,7.106814374546921e-9,-0.001469986538679709,2.5252782134341083e-5,7.013936096625625e-9,-0.0014695540981764408,2.5183955143550453e-5,6.968766442288963e-9,-0.0014690762900327096,2.5215950258180403e-5,6.998456432120111e-9,-0.0014686020708823385,2.5360870206104967e-5,7.1110940673169154e-9,-0.001468176386598783,2.5606318665205407e-5,7.296811789583651e-9,-0.001467831922902369,2.592100301791191e-5,7.532134484148677e-9,-0.0014675843884544473,2.6263002803544234e-5,7.786145194716698e-9,-0.0014674316308986469,2.6588795756606222e-5,8.027060457500164e-9,-0.0014673561469447757,2.6861167542429433e-5,8.22790296065784e-9,-0.001467329858105644,2.7054651629686617e-5,8.370365121482301e-9,-0.0014673197245071011,2.7158013293985568e-5,8.446566196624374e-9,-0.0014672929285562525,2.717410966689769e-5,8.458950180331899e-9,-0.0014672208834997042,2.7118011201820044e-5,8.4189307986924e-9,-0.0014670820001531884,2.7014370775278294e-5,8.34495143072538e-9,-0.0014668636033767842,2.6894642929169563e-5,8.260369284515231e-9,-0.0014665634811135814,2.6794222102966245e-5,8.19123024785904e-9,-0.0014661914098972825,2.674909228562432e-5,8.163696466874626e-9,-0.001465770520724381,2.679114846664634e-5,8.200590836488431e-9,-0.001465337400999473,2.6941364730020337e-5,8.316505230393117e-9,-0.0014649388274165344,2.720105595585084e-5,8.511638713086152e-9,-0.0014646228477321868,2.7543744071366404e-5,8.766111014759959e-9,-0.0014644237187200332,2.791300341092992e-5,9.03854416039646e-9,-0.001464344966501293,2.8232690622237343e-5,9.273507511061049e-9,-0.00146435037296069,2.8431059296295023e-5,9.418980704214775e-9,-0.0014643722903750673,2.8469546292426055e-5,9.447272055057291e-9,-0.0014643365365555757,2.835968319109381e-5,9.367378735882624e-9,-0.0014641906956874835,2.8157374663821298e-5,9.220801767421116e-9,-0.0014639203699168175,2.793907130398366e-5,9.063972153156974e-9,-0.001463547743641747,2.777469392086682e-5,8.94819704622287e-9,-0.0014631181589848093,2.770971394278009e-5,8.906400483072525e-9,-0.0014626840013922983,2.7759615661242276e-5,8.949152904876544e-9,-0.0014622919778576426,2.7913376841285792e-5,9.067487925009645e-9,-0.0014619755187329977,2.8141209895819113e-5,9.238874894232356e-9,-0.0014617515941158011,2.840319839203045e-5,9.43374255358404e-9,-0.0014616206414562979,2.8657228590944903e-5,9.621316724398479e-9,-0.0014615686117483452,2.88656511750599e-5,9.77438646312151e-9,-0.0014615705063021332,2.9000359578134314e-5,9.872855466969257e-9,-0.0014615948598680729,2.9046009835060456e-5,9.905967029354836e-9,-0.001461608579480747,2.900124632155569e-5,9.873148682283592e-9,-0.0014615815016667387,2.8877991973552452e-5,9.783504838835818e-9,-0.001461490094774729,2.86991569091944e-5,9.65415693656674e-9,-0.0014613200429391873,2.8495379357004293e-5,9.507823393054517e-9,-0.0014610677949529376,2.8301325099769305e-5,9.370010304543687e-9,-0.0014607412749224225,2.8151769243240655e-5,9.266016170060544e-9,-0.001460359934266054,2.807741831222614e-5,9.217802419101563e-9,-0.001459954104262802,2.810012125881796e-5,9.240548810429125e-9,-0.0014595629027557774,2.8227079611997363e-5,9.338632920695437e-9,-0.001459229207373408,2.8444570378339046e-5,9.501348366973721e-9,-0.0014589903312328463,2.8713478214577256e-5,9.699906185659169e-9,-0.0014588646330113623,2.8970928160528702e-5,9.888704607981145e-9,-0.0014588380390138703,2.9143000527045176e-5,1.0014441084658272e-8,-0.0014588592510678298,2.916941323267889e-5,1.0033827086917958e-8,-0.0014588523821274818,2.9030953044343186e-5,9.933409035109415e-9,-0.0014587456644553276,2.8762477106263568e-5,9.739062259576716e-9,-0.001458501091057045,2.844024437257861e-5,9.506799999855063e-9,-0.001458127143420008,2.8150315430128008e-5,9.299622484807696e-9,-0.001457669435461303,2.7957472722960843e-5,9.164649386359438e-9,-0.0014571891196582215,2.788982620398424e-5,9.12181556433836e-9,-0.001456742655817562,2.7940470402478702e-5,9.1652351867303225E-09,-0.0014563700347164715,2.807848674258035e-5,9.271524962474886e-9,-0.0014560912588836175,2.826144010513699e-5,9.409190716108027e-9,-0.0014559078903742333,2.8445360201978687e-5,9.546033498517481e-9,-0.0014558067229891146,2.859145029300421e-5,9.65399985693406e-9,-0.0014557639343839687,2.867025540336573e-5,9.712068997365372e-9,-0.0014557492065120391,2.8664138594720785e-5,9.707890097359682e-9,-0.0014557298001960863,2.8568493551007577e-5,9.638560286519974e-9,-0.0014556745936851589,2.839177608483774e-5,9.510625422205857e-9,-0.0014555579370875656,2.815423714782051e-5,9.339183329667601e-9,-0.0014553629537277198,2.788526924195518e-5,9.14595894628804e-9,-0.0014550838573302906,2.7619586166606147e-5,8.95646433151999e-9,-0.0014547270310782067,2.7392671032165182e-5,8.796565507284847e-9,-0.0014543107698863327,2.7235881381529104e-5,8.688803061502544e-9,-0.0014538636547068316,2.7171559156514596e-5,8.648806078255112e-9,-0.0014534215710303232,2.7208440099601352e-5,8.68207399305285e-9,-0.001453023162629078,2.7337595874378007e-5,8.781285876904159e-9,-0.0014527031545351094,2.7529636906441165e-5,8.924571639210088e-9,-0.0014524833008458392,2.7735059993107925e-5,9.075970709988018e-9,-0.0014523621957538728,2.7890571544417234e-5,9.19001842577633e-9,-0.0014523077282724134,2.793379091660291e-5,9.22219677030714e-9,-0.0014522585937687897,2.7825223830983982e-5,9.144582317840528e-9,-0.0014521403795198652,2.7569149189017554e-5,8.960821255109384e-9,-0.001451893505617349,2.7219493141957345e-5,8.71038541518176e-9,-0.0014514989868257015,2.6862149989671336e-5,8.455773632611902e-9,-0.0014509858377754307,2.6581283086955036e-5,8.257991564297597e-9,-0.0014504161415827162,2.642918854125528e-5,8.154588223766253e-9,-0.0014498591074915373,2.6414918608475404e-5,8.151437565096828e-9,-0.0014493694267968629,2.6511849721997745e-5,8.228438049517682e-9,-0.001448977429522189,2.667403387196817e-5,8.351639483937653e-9,-0.0014486894408670674,2.6851542282472955e-5,8.484552463610772e-9,-0.0014484932417684118,2.700055872143433e-5,8.595494996252945e-9,-0.0014483645278005612,2.7088384874182358e-5,8.661115546099852e-9,-0.0014482724252906584,2.709519725146361e-5,8.667505390416874e-9,-0.0014481837922433506,2.7014246607076915e-5,8.610209915657879e-9,-0.0014480667630384213,2.6851367625677863e-5,8.493819386236972e-9,-0.0014478939985973695,2.6623968239600285e-5,8.331252341426477e-9,-0.0014476458307236476,2.635924813759418e-5,8.142498231074953e-9,-0.00144731311061095,2.6091231865376743e-5,7.952456649511876e-9,-0.0014468992107673786,2.5856444834127285e-5,7.787722099695875e-9,-0.0014464205463444633,2.5688537660867144e-5,7.672567457310853e-9,-0.0014459051593164764,2.5612502082256553e-5,7.624669465502379e-9,-0.0014453891705153014,2.5639343311066898e-5,7.651283894303304e-9,-0.0014449112632642608,2.5762226244715e-5,7.746636370364774e-9,-0.0014445057152640856,2.595501245227754e-5,7.891145026699935e-9,-0.0014441946694093064,2.6173960497131583e-5,8.052917461887092e-9,-0.0014439806475695987,2.636349963132186e-5,8.192048807278225e-9,-0.0014438411873451745,2.646690890427581e-5,8.268250609640819e-9,-0.0014437286296687954,2.6441511003512633e-5,8.251567637578792e-9,-0.001443578444853297,2.6275165731848128e-5,8.1339948899965e-9,-0.0014433273202660133,2.5997083928831833e-5,7.937096006765073e-9,-0.001442936409115405,2.567444219779277e-5,7.709508223593939e-9,-0.0014424086701659907,2.5391506100637698e-5,7.511889392046065e-9,-0.0014417892862947695,2.5219227646515815e-5,7.3950023164529674e-9,-0.001441147821285167,2.5191187270965408e-5,7.382424698161206e-9,-0.0014405525671188652,2.5297654232244746e-5,7.46642211059057e-9,-0.0014400506984845914,2.549697136888099e-5,7.616367322101587e-9,-0.0014396609875323325,2.573422047511667e-5,7.792362299919142e-9,-0.0014393770763216152,2.595731091946943e-5,7.956884889193762e-9,-0.0014391755390315833,2.6126299063856226e-5,8.081435414644157e-9,-0.0014390240648945822,2.621661961154909e-5,8.14872862017226e-9,-0.0014388876944924675,2.6218749094750767e-5,8.152319004850451e-9,-0.0014387330155882449,2.6136521805769236e-5,8.095315097039274e-9,-0.0014385310964584244,2.5985249879172986e-5,7.98902323659588e-9,-0.0014382599562942464,2.578984727441783e-5,7.851630723953415e-9,-0.001437907000473791,2.558258430097201e-5,7.706602007982529e-9,-0.0014374713475980292,2.539984818095332e-5,7.580298299298504e-9,-0.0014369654370357835,2.5277430919184726E-05,7.498481675769508e-9,-0.0014364149450387434,2.524445155724815e-5,7.481837634246073e-9,-0.0014358560907401488,2.531680732424275e-5,7.541239382042651e-9,-0.0014353299421923447,2.549174348391302e-5,7.67395063074306e-9,-0.0014348742608147498,2.5745447771436074e-5,7.862124322155557e-9,-0.0014345144552345818,2.6035180886781052e-5,8.074600559849243e-9,-0.0014342558619612528,2.6306381027453562e-5,8.272200047331242e-9,-0.001434079589311781,2.6503932782313694e-5,8.415841468953633e-9,-0.0014339437223416472,2.658569469617018e-5,8.476099349229682e-9,-0.0014337909162949274,2.653533090809111e-5,8.442148816768944e-9,-0.0014335620776601706,2.6370518693983798e-5,8.32738512813637e-9,-0.0014332136074441035,2.614232716045764e-5,8.16878953155742e-9,-0.0014327328436069065,2.592319956427502e-5,8.01823403658462e-9,-0.0014321447131647473,2.5785451237951414e-5,7.927095900408931e-9,-0.0014315049081303302,2.5778022969174607e-5,7.92972291182139e-9,-0.001430881462440153,2.591187567232032e-5,8.0331743458699e-9,-0.0014303331772278684,2.616035797685171e-5,8.217711692267238e-9,-0.0014298944934438224,2.6472481447071226e-5,8.446469961108673e-9,-0.0014295714210435305,2.6790920056085873e-5,8.67839265732808e-9,-0.0014293466416022695,2.706669905365202e-5,8.878682424407924e-9,-0.0014291886521796292,2.726698482237647e-5,9.024249768378522e-9,-0.0014290605250002484,2.7376714200605378e-5,9.104750656058354e-9,-0.0014289262535661926,2.7396668664601868e-5,9.121125674470142e-9,-0.0014287546376585928,2.734037378186705e-5,9.083361209742851e-9,-0.0014285215854872378,2.7231132652078738e-5,9.008387004102195e-9,-0.0014282118094740023,2.7099446056366132e-5,8.91824477219024e-9,-0.0014278205169719102,2.6980369162120895e-5,8.838165817857077e-9,-0.0014273551041353886,2.6910052790540644e-5,8.794014126806641e-9,-0.001426836217410468,2.692081607168585e-5,8.808668492982802e-9,-0.0014262969989791532,2.703467650249471e-5,8.897360695655925e-9,-0.0014257791653392638,2.7256366225002294e-5,9.062761040100194e-9,-0.0014253252294257476,2.7568169951920956e-5,9.291482753990074e-9,-0.0014249678412150235,2.7929586139618507e-5,9.554082763102208e-9,-0.001424719247272349,2.8283922152095817e-5,9.8099633515569e-9,-0.0014245649540888968,2.857138997614607e-5,1.0016784431585915e-8,-0.001424464819701088,2.874523105273305e-5,1.0141889729331605e-8,-0.0014243621807249333,2.8785614912595313e-5,1.0172034668321106e-8,-0.001424198594399113,2.8706550061364885e-5,1.0118076747905602e-8,-0.0014239298298215845,2.855338333973738e-5,1.0012952173362216e-8,-0.0014235384273948743,2.8391359153604704e-5,9.903332600293055e-9,-0.001423039068963574,2.8288237213866135e-5,9.837163726172813e-9,-0.0014224748046457894,2.8295862255426144e-5,9.850620457112531e-9,-0.0014219048911750486,2.8436423102220665e-5,9.95855573897215e-9,-0.0014213881167722824,2.8698019217145672e-5,1.0151643259449534e-8,-0.001420967450066756,2.9040746996965335e-5,1.0400951762124473e-8,-0.0014206611416994707,2.941022918094345e-5,1.066766982712532e-8,-0.001420462210050991,2.9752840746124096e-5,1.0913884054961945e-8,-0.0014203445464611544,3.0027360180390388e-5,1.111072374244291e-8,-0.0014202718523974758,3.0210625033603962e-5,1.1242230035220288e-8,-0.0014202059478694213,3.0297793467362173e-5,1.130543514634517e-8,-0.0014201126851082163,3.0299379741317255e-5,1.1308212546961511e-8,-0.001419965354967399,3.023722740125861e-5,1.126641797154726e-8,-0.0014197463754245395,3.0140745523510838e-5,1.1201222166966375e-8,-0.0014194482287997765,3.004374201377961e-5,1.1136832656018542e-8,-0.0014190743137684472,2.9981438465230445e-5,1.1098298258684281e-8,-0.001418639809555389,2.9986901963587264e-5,1.1108885328964141e-8,-0.001418171968272546,3.008617815680982e-5,1.1186579824169502e-8,-0.0014177085861886171,3.0291942135319834e-5,1.133964646008498e-8,-0.001417293059956346,3.05967206924271e-5,1.1562003200599675e-8,-0.0014169650708668305,3.0968510049347896e-5,1.1830355814926381e-8,-0.0014167481369272308,3.135278601208798e-5,1.210581797947972e-8,-0.0014166384270926171,3.168371673086619e-5,1.2341922339142801e-8,-0.001416601011852032,3.1903068064781095e-5,1.2497950944243014e-8,-0.001416577597530908,3.197990561297152e-5,1.2552765821321245e-8,-0.001416504023895075,3.192205189348772e-5,1.2512782170450044e-8,-0.0014163303334027324,3.177388113563488e-5,1.241023118085146e-8,-0.0014160352058320256,3.160197306166359e-5,1.2292773285630224e-8,-0.00141563020412267,3.147525183817631e-5,1.2209223647116733e-8,-0.001415154182806351,3.144686499940079e-5,1.219665427065755e-8,-0.0014146612944608804,3.1542588220823e-5,1.2272337128455885e-8,-0.0014142068212377667,3.17574992652059e-5,1.2431711044918489e-8,-0.0014138345495532411,3.206030619328251e-5,1.2651790954942593e-8,-0.0014135683760217552,3.240316711893786e-5,1.2898338055852669e-8,-0.0014134095167311366,3.273394154711765e-5,1.3134557510283644e-8,-0.0014133391618895421,3.300757270905415e-5,1.3329020931988017e-8,-0.0014133249690354472,3.31939594183018e-5,1.34610409333419e-8,-0.0014133289896605121,3.328119077205221e-5,1.3522794560786908e-8,-0.001413314822460721,3.3274656159752014e-5,1.3518607273504532e-8,-0.0014132527079583823,3.3193518643689525e-5,1.3462443644765452e-8,-0.0014131223461608018,3.3066195373724894e-5,1.3374722960227905e-8,-0.001412913992766144,3.292604615376844e-5,1.3279258055873786e-8,-0.0014126286522506636,3.2807704536436217e-5,1.3200599557144906e-8,-0.0014122779793304208,3.274378481004234e-5,1.3161617579820244e-8,-0.0014118840527596287,3.276134215889836e-5,1.318093997452497e-8,-0.0014114785988180107,3.287744387268909e-5,1.3269863918137662e-8,-0.0014111005438624472,3.309364278437632e-5,1.3428626290622916e-8,-0.0014107903444190032,3.339035361538781e-5,1.3642698341029341e-8,-0.0014105801213301545,3.372401496582465e-5,1.388102605623399e-8,-0.0014104809172316352,3.403140528598448e-5,1.4099169038639324e-8,-0.0014104721889999377,3.4244418459823575e-5,1.4249623837810556e-8,-0.0014105012730983308,3.431313016865975e-5,1.4297897851110098e-8,-0.0014104976530675871,3.4227232153276674e-5,1.4237483279052317e-8,-0.0014103978203613941,3.4023102917727105e-5,1.409478258989675e-8,-0.0014101683041605874,3.37710788967813e-5,1.3920030577394821e-8,-0.0014098152448564095,3.3549879175073367e-5,1.3769043937615413e-8,-0.0014093780596700428,3.342166325020871e-5,1.3685419104499984e-8,-0.0014089135400348065,3.341756238018929e-5,1.3690309226175862e-8,-0.0014084788334548454,3.3535493238112093e-5,1.37811189010826e-8,-0.0014081186845767038,3.374669781848928e-5,1.3936497322555077e-8,-0.0014078585339577186,3.400633332696204e-5,1.4124144409347155e-8,-0.0014077028508541673,3.42645878758073e-5,1.4308805334751806e-8,-0.0014076373664685578,3.4476340111075574e-5,1.4459025629545484e-8,-0.0014076339312917433,3.4608360343685586e-5,1.4552028310657353e-8,-0.0014076568208633863,3.464345854701809e-5,1.457641017245677e-8,-0.001407669277186434,3.458141606859998e-5,1.4532638817739162e-8,-0.0014076391876356137,3.443714237304597e-5,1.4431695615751243e-8,-0.0014075431589499628,3.42369134134312e-5,1.4292440206539112e-8,-0.0014073687088618709,3.401369363319955e-5,1.4138337135936162e-8,-0.0014071148025871514,3.380247774740365e-5,1.3994150056515684e-8,-0.0014067912957618034,3.363619137526845e-5,1.3882976655598566e-8,-0.001406417785833611,3.3542132876375727e-5,1.3823657520053249e-8,-0.0014060220696082155,3.3538605100390865e-5,1.3828389059174037e-8,-0.0014056380007306819,3.363132267047934e-5,1.3900311168766636e-8,-0.0014053019647113963,3.3809476163547754e-5,1.403098639393186e-8,-0.0014050467952829435,3.404235090138576e-5,1.4198316878603361e-8,-0.0014048925106380783,3.427900969237467e-5,1.4366522015636952e-8,-0.0014048352740607154,3.4454830578689884e-5,1.4490717899879615e-8,-0.0014048394576729162,3.450785686877302e-5,1.452817586539771e-8,-0.0014048405652307403,3.4402642110255266e-5,1.4454790297227312e-8,-0.001404764049178016,3.415061768516878e-5,1.4279243287251102e-8,-0.0014045544794032856,3.381223147440442e-5,1.4044512501709342e-8,-0.001404199019517501,3.34753415760048e-5,1.3812662721467575e-8,-0.0014037308928993113,3.322120032523223e-5,1.3640780805957817e-8,-0.0014032126628860826,3.309751484531842e-5,1.3561886833224022e-8,-0.0014027118105852483,3.311012467826726e-5,1.3579138976547671e-8,-0.0014022815504324637,3.3230920394382554e-5,1.3671690150678322e-8,-0.0014019518800177807,3.341272421638346e-5,1.3805518700988216e-8,-0.0014017290980962978,3.360354473780993e-5,1.3943711301648619e-8,-0.0014016000243125806,3.375694744860536e-5,1.4053807349603574e-8,-0.001401537920759662,3.383830386691697e-5,1.4112051071441454e-8,-0.001401508516602354,3.38278961316903e-5,1.4105333153706423e-8,-0.0014014756088146735,3.372177220527613e-5,1.4031568509718768e-8,-0.0014014060660440912,3.353076489929489e-5,1.3898885331730495e-8,-0.0014012739860668733,3.327793091957308e-5,1.3723815329935129e-8,-0.0014010636973225197,3.2994742987017955e-5,1.3528667448275764e-8,-0.0014007713279077503,3.271646976821572e-5,1.3338315101143095e-8,-0.0014004048383781237,3.247734073521475e-5,1.3176767910392181e-8,-0.001399982720160362,3.230609707347399e-5,1.3063963984102755e-8,-0.0013995317115542282,3.222223618554686e-5,1.3013065431940527e-8,-0.0013990837824146862,3.223298100013896e-5,1.3028362806501945e-8,-0.0013986724408224693,3.2330914871978444e-5,1.310378977963939e-8,-0.0013983280897938944,3.249234472603756e-5,1.3222059543851011e-8,-0.0013980719157413676,3.26771022098923e-5,1.3354806377875613e-8,-0.001397908301055983,3.2831582187595467E-05,1.3464847011626819e-8,-0.001397817347062273,3.289747667782527e-5,1.3512189019105797e-8,-0.001397751512132713,3.28277047548693e-5,1.3464871106866769e-8,-0.0013976423203658295,3.260691801970788e-5,1.3312974762696126e-8,-0.0013974208313565252,3.2266892279175194e-5,1.3079220779759064e-8,-0.0013970462170215551,3.188350281420138e-5,1.2816866134850941e-8,-0.001396526429072313,3.15504266134185e-5,1.2591347003175733e-8,-0.0013959162362914407,3.134208482490942e-5,1.2454319312828303e-8,-0.0013952934212709952,3.12876940613365e-5,1.2425488800691024e-8,-0.0013947290248052181,3.1368994960239776e-5,1.2491155941132685e-8,-0.0013942677926455445,3.153656609401135e-5,1.2615901943459306e-8,-0.001393923604268954,3.173094679442987e-5,1.2757639356311874e-8,-0.0013936850245932673,3.189863660685751e-5,1.287894027262053e-8,-0.0013935243292366379,3.20005016684368e-5,1.295286703830315e-8,-0.0013934059148908537,3.2014351751696166e-5,1.2964583482053157e-8,-0.0013932926868055352,3.193431439306784e-5,1.29106853876459e-8,-0.0013931506171936453,3.176890244780789e-5,1.279767711238989e-8,-0.0013929521622677431,3.153852371658084e-5,1.2640170940633758e-8,-0.0013926789463034916,3.1272453315631026e-5,1.2458806214965603e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json new file mode 100644 index 000000000..fb9e3f35a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":4000,"numberOfSamples":1000,"samples":[-0.0013923237156324762,3.10051313115372e-5,1.227772476593132e-8,-0.0013918913030339685,3.0771749723490945e-5,1.2121506307793586e-8,-0.0013913982265213998,3.060338976954708e-5,1.2011722091998317e-8,-0.0013908707040811456,3.052231698115309e-5,1.1963565646016446e-8,-0.001390341194667023,3.053811122326968e-5,1.198311590315129e-8,-0.0013898437960375297,3.064516965374932e-5,1.206567850949141e-8,-0.0013894089283486013,3.0821985171837794e-5,1.219550046257788e-8,-0.0013890577325521491,3.103246124664618e-5,1.234697235237071e-8,-0.001388796542557306,3.12295787680487e-5,1.2487412403812631e-8,-0.0013886120720738905,3.136210718279558e-5,1.2581786671309725e-8,-0.0013884688947041909,3.1385084006792996e-5,1.2599819994917749e-8,-0.0013883119458332274,3.127360474065753e-5,1.2525244839418013e-8,-0.0013880771300425396,3.103666131759266e-5,1.2365079707027838e-8,-0.0013877108551321243,3.072388276790292e-5,1.2154123117817592e-8,-0.0013871929430152989,3.0416606360292832e-5,1.1948741207200948e-8,-0.001386550391714903,3.0201205713724095e-5,1.1808429582903155e-8,-0.0013858506737383077,3.01357997768827e-5,1.1772803776767341e-8,-0.0013851759104291312,3.0229273883448915e-5,1.1847175892297428e-8,-0.001384592881220668,3.0443874540562336e-5,1.2004550146250928e-8,-0.0013841349373795028,3.0716035009628255e-5,1.2200281016361826e-8,-0.0013838008265632472,3.098058540822912e-5,1.2389009867920565e-8,-0.0013835645353088798,3.118712181259742e-5,1.2536034707260684e-8,-0.0013833877106148682,3.130621279611001e-5,1.2621499602221395e-8,-0.0013832296076505604,3.132862793970199e-5,1.2639667607070031e-8,-0.0013830533398082588,3.12615629520694e-5,1.2596119024238894e-8,-0.0013828292717648978,3.1124447793189026e-5,1.2504739208443173e-8,-0.001382536894290198,3.094526718665489e-5,1.238515875044467e-8,-0.001382166093661862,3.0757242436986546e-5,1.2260502826500002e-8,-0.0013817180828804721,3.059536687843876e-5,1.2155030689028627e-8,-0.0013812057662645032,3.0492356610198686e-5,1.2091316281131741e-8,-0.001380652965115511,3.0473944416237442e-5,1.2086924984252354e-8,-0.0013800918794172976,3.055405387965315e-5,1.2151015510603047e-8,-0.0013795585330693598,3.073089776278415e-5,1.2281664264941277e-8,-0.0013790865545975047,3.098519781713838e-5,1.2464780864846123e-8,-0.0013787002512115332,3.128152698517288e-5,1.2675280274755086e-8,-0.0013784083744284533,3.1573186320784075e-5,1.2880703491497357e-8,-0.0013782000273174174,3.181021399913377e-5,1.3046891803617532e-8,-0.0013780438976636682,3.19495350745652e-5,1.3144947940134445E-08,-0.0013778917807731484,3.1965865743675875e-5,1.3158522917130986e-8,-0.0013776871187557247,3.186125601721507e-5,1.3090054814128084e-8,-0.0013773784345414448,3.167005542915762e-5,1.2963872114938864e-8,-0.0013769355296510653,3.145540027821075e-5,1.2823586040322064e-8,-0.0013763632310821636,3.129451925350386e-5,1.2721957602677264e-8,-0.0013757051938257864,3.12548297658547e-5,1.2704580862237566e-8,-0.0013750325167593762,3.136980980661643e-5,1.2793513871866098e-8,-0.0013744200205683455,3.162705495398507e-5,1.297932656913296e-8,-0.001373921486003332,3.197529339541822e-5,1.3226141868971426e-8,-0.0013735559011152846,3.2345581764334165e-5,1.348632479099502e-8,-0.001373308834962327,3.267443076739067e-5,1.371638565723486e-8,-0.0013731440063741707,3.2918760928589506e-5,1.3887174851188765e-8,-0.0013730169969555664,3.306017025212218e-5,1.3986670884338575e-8,-0.001372885707505598,3.310177282032628e-5,1.4017645484980559e-8,-0.0013727161916267327,3.3062157152929236e-5,1.3993385650784678e-8,-0.0013724849650755444,3.2969528124314865e-5,1.3933613214447525e-8,-0.0013721795043743403,3.2857132549704686e-5,1.3861350571725312e-8,-0.001371798199420233,3.275975393211377e-5,1.3800541749182052e-8,-0.001371350267391638,3.2710546394120883e-5,1.3773879566233536e-8,-0.0013708554660210265,3.273748651144435e-5,1.3800332746004124e-8,-0.0013703429392595617,3.285908614832062e-5,1.3892159705457934e-8,-0.0013698482842253537,3.3079732505826116e-5,1.4051723281032588e-8,-0.0013694081789119867,3.33859216188847e-5,1.4269017354682299e-8,-0.0013690527752354515,3.3745292715916165e-5,1.4521206280880815e-8,-0.0013687973523058758,3.411026251376824e-5,1.4775341685527618e-8,-0.001368635864809167,3.442685430142285e-5,1.4994571911094206e-8,-0.001368539190809793,3.464725058126877e-5,1.5146764379461272e-8,-0.0013684596653155585,3.474271507765218e-5,1.5213225547749854e-8,-0.001368341412275528,3.471292842213015e-5,1.519483961915156e-8,-0.0013681340963783179,3.458864103148684e-5,1.5113572919781048e-8,-0.001367806641243441,3.442624486265195e-5,1.50084742827696e-8,-0.0013673571913396174,3.429481060775766e-5,1.492663952720893e-8,-0.0013668159712882611,3.425816744323766e-5,1.4910976651613327e-8,-0.0013662389537410337,3.4356679623137404e-5,1.4987969233571176e-8,-0.0013656929127156684,3.45948313307106e-5,1.5159539607809455e-8,-0.0013652362239514341,3.493996318255312e-5,1.540252269790559e-8,-0.0013649025854399397,3.533339206451559e-5,1.5676457844807535e-8,-0.001364694017006319,3.5709311516460834e-5,1.5936510012581336e-8,-0.0013645848390629765,3.6013317990182196e-5,1.6146000719145376e-8,-0.001364533006244744,3.6213785847992433e-5,1.6284003030435945e-8,-0.0013644928514191061,3.630413358810897e-5,1.6346724249025713e-8,-0.0013644247321696538,3.629841553527456e-5,1.6344369702902035e-8,-0.0013643001276189908,3.622421100892573e-5,1.6296216699097295e-8,-0.0013641030557909385,3.611585301733881e-5,1.6225972675099123e-8,-0.001363829489218644,3.6009284510185593e-5,1.6158272516967093e-8,-0.0013634861732545276,3.59384398039273e-5,1.6116209694143087e-8,-0.0013630895393642458,3.593237657339973e-5,1.6119355456194334e-8,-0.0013626646638417342,3.601230966247092e-5,1.618170797397962e-8,-0.001362243629102119,3.61880268938273e-5,1.6309266089582144e-8,-0.0013618622841067652,3.64538655276576e-5,1.6497393820657673e-8,-0.0013615544772974737,3.6785502430891855e-5,1.6728827194428735e-8,-0.0013613437161679772,3.713991173468955e-5,1.697386187057922e-8,-0.001361234021080087,3.746108911824493e-5,1.719439828116546e-8,-0.0013612037638524796,3.7692536866159856e-5,1.7352457140518053e-8,-0.001361206847971344,3.779396838960132e-5,1.742144636974678e-8,-0.0013611832374142226,3.7756031020244054e-5,1.7396011201743785e-8,-0.001361076191644119,3.7606086154550635e-5,1.7295762883204998e-8,-0.0013608496577971183,3.7401677631123275e-5,1.716059227166306e-8,-0.0013604990488915285,3.721408821670011e-5,1.7039232838343093e-8,-0.0013600520125571307,3.710835900255645e-5,1.697551683056106e-8,-0.0013595600099726545,3.712640498271043e-5,1.699695432191236e-8,-0.0013590841935409244,3.727760024130748e-5,1.71086275657347e-8,-0.001358679890204125,3.7538440708709115e-5,1.7293378278633092e-8,-0.00135838372132039,3.7860514706880266e-5,1.7517577456580113e-8,-0.0013582064390924846,3.818407848658802e-5,1.7740504047095585e-8,-0.0013581329272131877,3.845318903981301e-5,1.7924558906917483e-8,-0.0013581286541984837,3.862806850028087e-5,1.804345582610699e-8,-0.0013581498661130592,3.869159882723496e-5,1.8086397228283904e-8,-0.0013581539476281528,3.8649261142348775e-5,1.8057850041261867e-8,-0.0013581071226586598,3.8524189345567815e-5,1.7974088393725628e-8,-0.0013579883897526658,3.835008509330396e-5,1.7858356144320932e-8,-0.00135779018044884,3.8164384929534315e-5,1.7736239335068338e-8,-0.001357517027048097,3.800295694389865e-5,1.7632074255281237e-8,-0.0013571835099064594,3.789645286761099e-5,1.7566453802397066e-8,-0.0013568122323385436,3.786770844912354e-5,1.7554432313878906e-8,-0.0013564319146861178,3.792940545542113e-5,1.760394100218013e-8,-0.0013560751230173448,3.808144637277682e-5,1.771409396726125e-8,-0.001355774723096159,3.830809315615486e-5,1.7873437098055103e-8,-0.0013555581129589143,3.85759738967685e-5,1.805883775217439e-8,-0.0013554390847187276,3.883530834118127e-5,1.8236503204011578e-8,-0.001355409076240439,3.9027250633763036e-5,1.836699003058032e-8,-0.0013554321238842734,3.909874292882928e-5,1.8415131641263553e-8,-0.0013554490528045462,3.90218298649933e-5,1.836291168093209e-8,-0.0013553934777036426,3.88088274293409e-5,1.8219570358978306e-8,-0.0013552148739573212,3.8513364752411945e-5,1.8022193158569097e-8,-0.0013548976458011926,3.821394753241361e-5,1.7824422483376295e-8,-0.0013544662886432806,3.7987376502045904e-5,1.767824374087245e-8,-0.001353975167144596,3.788495877740173e-5,1.7617747380746665e-8,-0.0013534897169433626,3.792082265498023e-5,1.765132964873523e-8,-0.0013530679623867672,3.807359000944715e-5,1.776318309780284e-8,-0.0013527479846985185,3.82970266342332e-5,1.7920945154219862e-8,-0.0013525427737545379,3.8534126622979775e-5,1.8085549434599747e-8,-0.0013524413684721215,3.8730475725509086e-5,1.8220348872787433e-8,-0.0013524143580498815,3.8844550459139665e-5,1.829793515757917e-8,-0.0013524218120327396,3.885388259987187e-5,1.830403299861606e-8,-0.0013524218425320289,3.8756778190668846e-5,1.8238389323156565e-8,-0.0013523781464381873,3.857000249417001e-5,1.8113029207340084e-8,-0.0013522652859119853,3.832360437107422e-5,1.7948697828581297e-8,-0.0013520711816035556,3.805446144349454e-5,1.7770522740602527e-8,-0.0013517970474576544,3.7800026057570636e-5,1.760383303417335e-8,-0.0013514555502732262,3.759328234789039e-5,1.7470765883749638e-8,-0.0013510681406707162,3.745922197053802e-5,1.7387859156658665e-8,-0.0013506622145259056,3.741251692416933e-5,1.7364450412879974e-8,-0.0013502682953014952,3.7455843878886433e-5,1.7401577299135237e-8,-0.0013499170098815133,3.757843888576176e-5,1.749114206947162e-8,-0.0013496352319221148,3.775487577483726e-5,1.7615323797154796e-8,-0.001349440649488639,3.794495617766193e-5,1.7746750386563e-8,-0.0013493347424008647,3.809671819615431e-5,1.7850659872577422e-8,-0.001349295890582923,3.8155046902679206e-5,1.7890635669466993e-8,-0.0013492766959825838,3.807708327935155e-5,1.783874654599152e-8,-0.0013492110735612106,3.785133903622449e-5,1.768815260529381e-8,-0.001349033855976422,3.751108479626499e-5,1.7461969909133265e-8,-0.0013487069795288752,3.71303580506857e-5,1.7210535401503925e-8,-0.0013482379377772538,3.67993136705882e-5,1.6994726215196717e-8,-0.001347678208637462,3.659042766946213e-5,1.6863046213677397e-8,-0.0013471024913643088,3.6534216931232214e-5,1.6835204236635903e-8,-0.0013465817610538201,3.661531138061667e-5,1.6899639174625656e-8,-0.0013461637307948591,3.67855921967629e-5,1.702274689456107e-8,-0.0013458659040266978,3.698362593147122e-5,1.716236688366139e-8,-0.0013456786096961092,3.715150481672573e-5,1.7279353443021854e-8,-0.0013455729607305563,3.7245547989349e-5,1.7344764650321256e-8,-0.0013455098437546319,3.724113849988471e-5,1.7342896275356996e-8,-0.0013454479816408654,3.713333537401668e-5,1.7271384802952297e-8,-0.0013453504339775678,3.693472237791048e-5,1.7139497446621565e-8,-0.0013451893773290563,3.66714125531848e-5,1.69653115025737e-8,-0.001344949053305138,3.6377906041960216e-5,1.677225728879621e-8,-0.0013446268270830342,3.6091487557028635e-5,1.658542561013439e-8,-0.0013442324429496473,3.584683872566402e-5,1.642801203779135e-8,-0.0013437858000863968,3.567151610583387e-5,1.6318286339007397e-8,-0.0013433138090793446,3.5582718952246464e-5,1.6267381969080993e-8,-0.0013428468552322856,3.5585336135370534e-5,1.6277959343087233e-8,-0.0013424151246411572,3.567102736278635e-5,1.6343650045473796e-8,-0.0013420448217986622,3.581815905326798e-5,1.6449191850671144e-8,-0.0013417540843769415,3.5992621037087415e-5,1.6571231526067074e-8,-0.0013415482762467888,3.6150103914661236e-5,1.6680073457991738e-8,-0.0013414149103668283,3.624123041516313e-5,1.6743183400191018e-8,-0.0013413198868642417,3.622112481074397e-5,1.6731446982117347e-8,-0.00134120845189209,3.606369069563323e-5,1.662842184473864e-8,-0.0013410151654745213,3.577732086480887e-5,1.644054815603201e-8,-0.0013406846000409867,3.5413460407537786e-5,1.6202722853245097e-8,-0.0013401964609990825,3.505743910760731e-5,1.597215167212452e-8,-0.001339580425708274,3.479926151774641e-5,1.5808809507200667e-8,-0.0013389081886428587,3.4697739505285814e-5,1.5751417893888703e-8,-0.0013382653066040724,3.475913717423584e-5,1.5803205836748927e-8,-0.0013377198411129057,3.494136132320177e-5,1.593492656261746e-8,-0.0013373043650111932,3.517656334298736e-5,1.610030358752367e-8,-0.001337015439682562,3.5396327466275055e-5,1.6253166407767607e-8,-0.0013368239990238354,3.5548502293726705e-5,1.6358821610884963e-8,-0.0013366882809558854,3.560374914900627e-5,1.639832805964985e-8,-0.001336564467218173,3.55549452941308e-5,1.636783817572624e-8,-0.001336413776905145,3.541320348266067e-5,1.627564290331889e-8,-0.0013362066349266496,3.520293709170862e-5,1.6138666700184393e-8,-0.0013359249232274644,3.4956909941254224e-5,1.5979096337218204e-8,-0.001335562924155841,3.4711420854670354e-5,1.582122151313896e-8,-0.0013351271377057652,3.4501629448674695e-5,1.568840971408109e-8,-0.0013346349529169633,3.435711455278746e-5,1.5600199028356044e-8,-0.0013341121333342526,3.429797828590833e-5,1.5569686455152157e-8,-0.0013335892705868344,3.433199575848479e-5,1.5601580165570786e-8,-0.0013330975858291425,3.4453164621146024e-5,1.5691228226897585e-8,-0.0013326644706178011,3.464175000353744e-5,1.5824749599259128e-8,-0.0013323090899715643,3.4865868704546576e-5,1.5980301002253026e-8,-0.001332038338966892,3.508467362609938e-5,1.6130447896255385e-8,-0.0013318434113794785,3.525330077002587e-5,1.6245627748951825e-8,-0.0013316975322695253,3.5330051294305984e-5,1.629891139049964e-8,-0.001331556286785722,3.528619312938393e-5,1.6272293810409786e-8,-0.0013313628892067757,3.5117465072944155e-5,1.6163989779264318e-8,-0.0013310606240185723,3.485372509921916e-5,1.5994525193249938e-8,-0.001330612092239529,3.4560074860567006e-5,1.5807325007709106e-8,-0.0013300188819388664,3.432251695865668e-5,1.5659203035008636e-8,-0.0013293294672254824,3.4218415257834896e-5,1.5600856484188996e-8,-0.0013286258106659328,3.4284781738908746e-5,1.565595284409048e-8,-0.0013279927272366466,3.45034557497139e-5,1.5811466092247673e-8,-0.001327487245815521,3.481218305757908e-5,1.6025241776050835e-8,-0.0013271243297834456,3.5132573390047304e-5,1.6244759544611692e-8,-0.0013268819281744182,3.539726971412401e-5,1.6425301589944376e-8,-0.0013267165573191055,3.556482846968116e-5,1.6539830337867083e-8,-0.0013265791200544272,3.5621827657685704e-5,1.65802341767557e-8,-0.0013264257556151145,3.5577571686315266e-5,1.6553560503722946e-8,-0.0013262233226004878,3.5456646993180176e-5,1.6476832678516347e-8,-0.0013259512363842734,3.529220284957108e-5,1.637245418374682e-8,-0.001325601512184336,3.512067149730725e-5,1.626470172512635e-8,-0.0013251780734556981,3.497753493359976e-5,1.6177001160356565e-8,-0.0013246955832461917,3.4893601735033355e-5,1.6129548566876927e-8,-0.0013241776457557696,3.48914999010468e-5,1.6137021291032074e-8,-0.001323654076904617,3.4982458503977466e-5,1.6206426975212878e-8,-0.001323157041794967,3.5163901163299414e-5,1.633548781930137e-8,-0.0013227162371304468,3.5418581049974166e-5,1.651211397605036e-8,-0.001322353687199993,3.571581068946272e-5,1.6715367990939248e-8,-0.0013220789387146789,3.601504810064792e-5,1.6918061706656873e-8,-0.0013218855424575772,3.627176280866538e-5,1.7090842854582353e-8,-0.0013217496703317407,3.644508967537851e-5,1.720733490398808e-8,-0.0013216315923340778,3.65064979819164e-5,1.7249749168249524e-8,-0.0013214807524120568,3.644842841848515e-5,1.7214291107647377e-8,-0.0013212451222116156,3.6291038759722376e-5,1.711523751546295e-8,-0.0013208846495029996,3.60839095678969e-5,1.6985751198887913e-8,-0.0013203863550454039,3.5898854230369885e-5,1.6873006904681262e-8,-0.0013197752519399667,3.581166273538234e-5,1.682623169287687e-8,-0.0013191132255276836,3.587626651540886e-5,1.6879911863534467e-8,-0.0013184815790603076,3.610241659999537e-5,1.7039381967031404e-8,-0.0013179528033887597,3.645020189165614e-5,1.7277474450637978e-8,-0.0013175658344386403,3.684610326885073e-5,1.7545256584706124e-8,-0.0013173174371027003,3.721139594219093e-5,1.7790800848516823e-8,-0.0013171711591591722,3.7487162393554715e-5,1.797564920289059e-8,-0.0013170751083556422,3.764583818573417e-5,1.8082333520008842e-8,-0.0013169783809209286,3.768958704883004e-5,1.8113134460390254e-8,-0.001316841058972772,3.764169488899078e-5,1.8084193168326844e-8,-0.001316637900558923,3.7536910324560003e-5,1.8018963620713753e-8,-0.0013163581227781179,3.74137736701684e-5,1.7943079177386814e-8,-0.0013160036253867771,3.730942928907114e-5,1.7880963442603383e-8,-0.0013155869869080489,3.725613444561233e-5,1.7853614375631473e-8,-0.0013151295414577234,3.7278505354125304e-5,1.787686235519351e-8,-0.0013146592408699255,3.7390914042800114e-5,1.7959684433815758e-8,-0.0013142077768859126,3.759497729467439e-5,1.8102557862085905e-8,-0.0013138065061219567,3.787768395385184e-5,1.829626511989185e-8,-0.0013134811566555547,3.821118959139425e-5,1.852186865762894e-8,-0.0013132460042088404,3.855535190871637e-5,1.8752556581883928e-8,-0.0013130988888896927,3.886358760935178e-5,1.895768052314085e-8,-0.0013130187880983333,3.9091668685304416e-5,1.9108648012779857e-8,-0.0013129673945528086,3.920788927157972e-5,1.9185567048502283e-8,-0.001312895240496861,3.920217618512819e-5,1.918302681873874e-8,-0.001312751730863596,3.9091588709663886e-5,1.911338071545348e-8,-0.0013124973851131767,3.892009752658912e-5,1.9006243630838438e-8,-0.0013121156803837925,3.875132474201483e-5,1.8903462645629538e-8,-0.0013116210944716046,3.865427657691962e-5,1.884969011796569e-8,-0.0013110596023093825,3.868436788208665e-5,1.8880112079492577e-8,-0.0013104989534392041,3.8865074759319735e-5,1.9008779400316116e-8,-0.0013100096397849926,3.917783531577995e-5,1.9222392671536106e-8,-0.001309642829716195,3.9566441267412706e-5,1.9483464693369486e-8,-0.0013094148936341004,3.995569860122959e-5,1.974262974906959e-8,-0.0013093055437344233,4.027611457180882e-5,1.9954738594955732e-8,-0.001309269039156997,4.048329051082387e-5,2.0091415425642147e-8,-0.0013092512762208149,4.0565121305456764e-5,2.0145608286767512e-8,-0.001309204630257768,4.053753924890765e-5,2.012862157893427e-8,-0.0013090962818779034,4.043433842048082e-5,2.0063277178960123e-8,-0.0013089102465701447,4.029664197237238e-5,1.997689758602726e-8,-0.0013086455823332675,4.0164989376255385e-5,1.9896096938048397e-8,-0.0013083132488531785,4.0074480065967925e-5,1.984365052124649e-8,-0.0013079330725531747,4.005204604799757e-5,1.9836785608003348e-8,-0.0013075312073712847,4.011466197911539e-5,1.9886069633644747e-8,-0.001307137746835643,4.026767679567208e-5,1.9994358344677895e-8,-0.0013067837953618638,4.0503094151805196e-5,2.01557240211866e-8,-0.001306497350497541,4.079836018355392e-5,2.0354765247593485e-8,-0.0013062978171497592,4.111688713507512e-5,2.0567103458832157e-8,-0.0013061898867567608,4.141184316071489e-5,2.076202115095573e-8,-0.0013061586859034154,4.163420723263055e-5,2.0907824211338083e-8,-0.001306168888940125,4.174442656977121e-5,2.097944515467198e-8,-0.0013061699709006594,4.1724685296821706e-5,2.0966324787464215e-8,-0.0013061076049721034,4.1587191985985025e-5,2.0877595932876798e-8,-0.0013059383156452651,4.137443165518275e-5,2.0741958445759947e-8,-0.0013056425938951044,4.115010375057371e-5,2.060146632532868e-8,-0.0013052319085176942,4.098302152604378e-5,2.0500810520890916e-8,-0.001304747148248314,4.092874780265062e-5,2.0475326047336553e-8,-0.0013042487662768554,4.101434730128175e-5,2.0541288681716853e-8,-0.0013038012226081626,4.1230688242288156e-5,2.0691321547541416e-8,-0.0013034559571685768,4.153480564579156e-5,2.0896370294196396e-8,-0.0013032379646765557,4.186207205593781e-5,2.111390047210881e-8,-0.0013031404096450596,4.214456168589532e-5,2.1299885763046148e-8,-0.0013031290193728036,4.232935992827865e-5,2.1420571741681682e-8,-0.0013031540596875038,4.23905340975399e-5,2.1460031357444974e-8,-0.0013031647722243158,4.233156537247573e-5,2.1421513055924925e-8,-0.0013031210288061141,4.217942322107834e-5,2.132339132411696e-8,-0.0013029993698451085,4.19743987627646e-5,2.1192421768565933e-8,-0.0013027936105723457,4.175999540557228e-5,2.1057114924379603e-8,-0.0013025120277159838,4.157542941681899e-5,2.094288448231488e-8,-0.0013021733414850117,4.145125605159004e-5,2.0869268627645957e-8,-0.001301802931785606,4.1407329810052036e-5,2.08486684580033e-8,-0.0013014297605223135,4.1451908374797514e-5,2.0885812894513818e-8,-0.001301083724057496,4.158098532303902e-5,2.097737756976615e-8,-0.0013007927456693646,4.177756479690925e-5,2.1111607157953057e-8,-0.0013005788777021498,4.201134797256275e-5,2.126826146359011e-8,-0.0013004531008736547,4.224008178027535e-5,2.1419659516259312e-8,-0.0013004095063849311,4.241435176037529e-5,2.1533904163364884e-8,-0.001300421059288809,4.248719684661846e-5,2.1581120022324038e-8,-0.0013004404355749176,4.2427837091928494e-5,2.154224223145945e-8,-0.0013004089398097013,4.223528221728633e-5,2.1417667998620045e-8,-0.001300273032166463,4.194483810430357e-5,2.1231287584532605e-8,-0.0013000028044365167,4.162178844603964e-5,2.1026176296912758e-8,-0.0012996038559836165,4.13426408192214e-5,2.0852193780685487e-8,-0.0012991166051237216,4.117141562699113e-5,2.075042537733095e-8,-0.0012986036072820868,4.11409724530234e-5,2.0741091404972655e-8,-0.00129813093698426,4.1245817779201306e-5,2.0819172199719124e-8,-0.0012977508063343123,4.144686388868798e-5,2.095795336418839e-8,-0.001297490230837804,4.168441992169005e-5,2.1117875653405696e-8,-0.0012973474395914163,4.1894427134593377e-5,2.1257279803455193e-8,-0.001297295439153459,4.2023506126082147e-5,2.1342116234441085e-8,-0.001297290782074011,4.2039616230905444e-5,2.135260920238544e-8,-0.0012972848326498105,4.193654440887813e-5,2.1285844007437435e-8,-0.0012972345579685953,4.173200901824314e-5,2.1154255926592056e-8,-0.0012971103085002236,4.146082617494708e-5,2.0981029477300475e-8,-0.0012968992859630204,4.116578087591e-5,2.0794135694006106e-8,-0.0012966049398672192,4.0888917956883526e-5,2.062073980233298e-8,-0.0012962436295018886,4.066503581169255e-5,2.048307865442981e-8,-0.0012958401889284622,4.051793533458231e-5,2.039611146731544e-8,-0.0012954236654983476,4.045897416475759e-5,2.036662737785466e-8,-0.001295023782419015,4.0486965044612695e-5,2.039320583348045e-8,-0.0012946679941183582,4.058855472756083e-5,2.04665171281949e-8,-0.001294378612670228,4.0738730472340536e-5,2.056977240662803e-8,-0.0012941693814056939,4.0901748941956324e-5,2.0679500965812705e-8,-0.0012940411451917645,4.1033526442706687e-5,2.0767257575044023e-8,-0.0012939771911233996,4.108715604463087e-5,2.0803239961642293e-8,-0.0012939403977219072,4.102298074380838e-5,2.0762689854466084e-8,-0.0012938758566673656,4.082263405184535e-5,2.0634736809638925e-8,-0.0012937224662835883,4.050242606522025e-5,2.04308134609819e-8,-0.0012934330065076513,4.0117530900919203e-5,2.0187204767311665e-8,-0.00129299496709262,3.974958987689844e-5,1.995693470396842e-8,-0.0012924399284722028,3.947942732467301e-5,1.97920270271869e-8,-0.0012918341252307118,3.935776650460108e-5,1.9724509449887175e-8,-0.0012912547182092019,3.938930857514804e-5,1.97562193674393e-8,-0.001290764690673244,3.9536318616132313E-05,1.9861433777957795e-8,-0.0012903973760540492,3.973598386964465e-5,1.999850762256767e-8,-0.001290153512484858,3.992107605315687e-5,2.0123564778314824e-8,-0.0012900074223779303,4.003630507822636e-5,2.0201177921784495e-8,-0.0012899173653183767,4.0047651738485965e-5,2.0210256251888748e-8,-0.001289836338458807,3.9945200597234635e-5,2.0145554957262593e-8,-0.0012897212998023743,3.9741174964429464E-05,2.0016045030261284e-8,-0.0012895399514628268,3.946480109359224e-5,1.984132894245313e-8,-0.001289274703109967,3.915530609271689e-5,1.9647018285539673e-8,-0.0012889236983102278,3.885435148165427e-5,1.9459904493796818e-8,-0.0012884992067051736,3.8599204907948656e-5,1.9303690980758627e-8,-0.0012880241094008248,3.841760919532316e-5,1.919581678542283e-8,-0.0012875274288492854,3.832480054634275e-5,1.9145604099175267e-8,-0.0012870398381923532,3.8322598965528926e-5,1.9153682307136752e-8,-0.001286589752637628,3.840001624621069e-5,1.921238243257403e-8,-0.001286200095515784,3.853470660398659e-5,1.9306731004946026e-8,-0.0012858854886256378,3.86948874374072e-5,1.9415831342562718e-8,-0.001285649499877651,3.8841815281819475e-5,1.9514646939711093e-8,-0.0012854817125208561,3.893347048250045e-5,1.9576511347082232e-8,-0.0012853550995704204,3.893063802338816e-5,1.957702413451274e-8,-0.0012852255062502298,3.880636244566652e-5,1.9499927026725242e-8,-0.0012850362965845573,3.855807120421911e-5,1.9344575221523857e-8,-0.0012847311762881526,3.821819412132976e-5,1.9132471126811794e-8,-0.0012842747415224602,3.785512960173213e-5,1.8907745295762985e-8,-0.0012836727720354248,3.755682902569352e-5,1.8726620068053298e-8,-0.0012829784848701268,3.739895052372073e-5,1.863702330001396e-8,-0.0012822761530718633,3.7413406126274804e-5,1.86584821716486e-8,-0.0012816490975353263,3.7576622715437714e-5,1.8774747376732938e-8,-0.0012811506382189232,3.782352818577273e-5,1.8943030423325083e-8,-0.001280792436308164,3.8075703038799706e-5,1.9112370169816575e-8,-0.0012805506354879592,3.8266803390174146e-5,1.924016463208864e-8,-0.001280380738437669,3.835616719714332e-5,1.9300925603521577e-8,-0.0012802324630361284,3.833113206068958e-5,1.9287565495948508e-8,-0.0012800605197691444,3.820264194508425e-5,1.920823586964087e-8,-0.0012798308757682997,3.799830026151315e-5,1.9081529959526996e-8,-0.001279523586304221,3.775524645033635e-5,1.8931707405877297e-8,-0.0012791333774328948,3.751366233471992e-5,1.8784512978711527e-8,-0.0012786686262423056,3.731102412992637e-5,1.866362274807214e-8,-0.001278148993439162,3.717726455085912e-5,1.858772206348688e-8,-0.001277601942460214,3.7131143654458575e-5,1.8568311190285357e-8,-0.001277058498171101,3.717813474632904e-5,1.860839408251708e-8,-0.0012765487555219646,3.7310038774287194e-5,1.8702216632045073e-8,-0.0012760977084929888,3.750624505138479e-5,1.8836075192321827e-8,-0.0012757217769639956,3.773626898786361e-5,1.8990020553034313e-8,-0.0012754261510291623,3.796321117292025e-5,1.9140234836138346e-8,-0.0012752029370164196,3.814797161205375e-5,1.92619071682081e-8,-0.0012750300928311285,3.825433491231409e-5,1.9332571089335484e-8,-0.0012748715426223701,3.825537269909844e-5,1.933609650898041e-8,-0.0012746797344262949,3.814138317428424e-5,1.926746861138821e-8,-0.0012744025805871105,3.7928235466975745e-5,1.9137729803848053e-8,-0.0012739963106319753,3.76626292022581e-5,1.897701998328715e-8,-0.0012734431088101711,3.741827327675125e-5,1.8832033009774208e-8,-0.0012727667106644165,3.7277449564075795e-5,1.875439150470419e-8,-0.0012720341118107905,3.730026444876515e-5,1.8781318347441222e-8,-0.0012713356167803904,3.749648014380484e-5,1.8917966913490027e-8,-0.0012707503868975216,3.7818967997163176e-5,1.913345694695096e-8,-0.0012703173742792029,3.818460780063819e-5,1.937431495323869e-8,-0.0012700276843224567,3.850870965846999e-5,1.958648929745315e-8,-0.0012698377681131297,3.873234768920965e-5,1.9732821725893906e-8,-0.0012696906468235986,3.883226562099348e-5,1.9799315570624595e-8,-0.0012695333572401244,3.881646913695297e-5,1.9792123553590806e-8,-0.0012693264687479164,3.8713735516634753e-5,1.9730552119127156e-8,-0.0012690470332673868,3.856312435152506e-5,1.9640099461015192e-8,-0.0012686878191508922,3.840594630060172e-5,1.9547213377593627E-08,-0.0012682550883168057,3.8280251328920796e-5,1.9475836828836382e-8,-0.0012677659821863632,3.8216972883763434e-5,1.9445125675948716e-8,-0.0012672456478990807,3.823702573972687e-5,1.9467782522189376e-8,-0.0012667239315270157,3.834915450270301e-5,1.954879813655444e-8,-0.0012662315252516165,3.8548712365379255e-5,1.9684700622829385e-8,-0.0012657956741872701,3.881779556352557e-5,1.9863631777743846E-08,-0.0012654358895180374,3.9127111421915734e-5,2.0066562567351532e-8,-0.0012651603219259492,3.943960149495701e-5,2.0269701099621573e-8,-0.0012649633922718845,3.97155188282893e-5,2.044787773900412e-8,-0.0012648251191054683,3.991847051986315e-5,2.0578512385264233e-8,-0.0012647124020133814,4.002181530954318e-5,2.0645672703362345e-8,-0.0012645824423290432,4.0014854271467307e-5,2.0643806946391964e-8,-0.001264388687972703,3.99081829052254e-5,2.0580779083148893e-8,-0.001264089784429187,3.973682895821391e-5,2.0479457047750557e-8,-0.0012636612589438738,3.955863316563664e-5,2.0376410433125773e-8,-0.001263107692385635,3.944474943991824e-5,2.031587286383709e-8,-0.0012624700916807313,3.9460627398303827e-5,2.0337965483915675e-8,-0.0012618210646095807,3.9641206055020366e-5,2.0463436185732815e-8,-0.0012612438544760331,3.997186027742948e-5,2.0682014530823786e-8,-0.0012608019231333165,4.03889145758586e-5,2.095293879084057e-8,-0.001260515403514942,4.080331509500292e-5,2.1219900523197546e-8,-0.0012603580066779792,4.1134769690694334e-5,2.143251915066937e-8,-0.0012602736669382706,4.133709908764442e-5,2.156229199212994e-8,-0.0012602001674625438,4.140455790552599e-5,2.1606510199617428e-8,-0.0012600871138250655,4.13627425982667e-5,2.1582334626039323e-8,-0.0012599037723692542,4.125395520943257e-5,2.1517286350261602e-8,-0.001259639059405887,4.112448324373034e-5,2.1440993984703374e-8,-0.0012592978126801822,4.1016374406620794e-5,2.1379934028673295e-8,-0.0012588963729254486,4.096310517242658e-5,2.1354792900167895e-8,-0.0012584587728795547,4.0987516848376617e-5,2.13793433801656e-8,-0.0012580135545439072,4.110070043061135e-5,2.145990419081642e-8,-0.001257590729174874,4.130124851631068e-5,2.1594960240885516e-8,-0.0012572184068382751,4.1574933436424366e-5,2.1774990856265992e-8,-0.0012569188758809874,4.1895365866185666e-5,2.198290829395347e-8,-0.0012567044061644376,4.2226400284913416e-5,2.2195638913385633e-8,-0.0012565736154616957,4.252676325544257e-5,2.2387154231576545e-8,-0.0012565095347204847,4.275674007069808e-5,2.2532803702984725e-8,-0.001256480413149145,4.2886024148070224e-5,2.261430451888185e-8,-0.0012564438185601924,4.290116127527485e-5,2.262433259898739e-8,-0.0012563537977570908,4.2810748157597085e-5,2.256953566001536e-8,-0.0012561701266762151,4.264685474788228e-5,2.2471059965738813e-8,-0.001255868216795208,4.246161786198218e-5,2.2362052663867524e-8,-0.00125544775922725,4.2318356345838705e-5,2.2281882031267264e-8,-0.0012549374800614776,4.22774052795677e-5,2.226731056823057e-8,-0.0012543928884045982,4.237873413357958e-5,2.2341924508824796e-8,-0.0012538846382849707,4.262624486160383e-5,2.2506767656905367e-8,-0.0012534783871114205,4.2981135163356555e-5,2.2736596297391955e-8,-0.0012532126561929605,4.3370682260662835e-5,2.2985558206766268e-8,-0.0012530852538086268,4.3711798272939364e-5,2.3201876301994538e-8,-0.0012530559769681426,4.393918260812166e-5,2.3345305957001018e-8,-0.0012530638749481211,4.4024288239515566e-5,2.3398863033464984e-8,-0.0012530490271740113,4.3977672971138264e-5,2.3370162208987406e-8,-0.0012529684380834512,4.383778762251783e-5,2.3284209882351702e-8,-0.0012528018888721966,4.365500575092296e-5,2.317318439808869e-8,-0.001252549834499636,4.34782797526141e-5,2.3067930135885604e-8,-0.0012522276998212633,4.334721846604825e-5,2.2992993745712078e-8,-0.0012518599576908918,4.3288848879161106e-5,2.2964722563118695e-8,-0.0012514754687159037,4.331706400168195e-5,2.299109201556656e-8,-0.0012511041057524219,4.343305080609753e-5,2.3072114029472213e-8,-0.0012507740089569535,4.362583037811218e-5,2.3200256491004583e-8,-0.001250508740600051,4.387284960062057e-5,2.336086149484763e-8,-0.0012503238892904954,4.414121645053139e-5,2.353297738143989e-8,-0.0012502232383400124,4.439057639247119e-5,2.3691245534858623e-8,-0.0012501953913701654,4.4578519987771495e-5,2.380937649691334e-8,-0.0012502124466062187,4.466862199857083e-5,2.386522426953918e-8,-0.0012502324655709908,4.463985453790723e-5,2.38466230351851e-8,-0.0012502066668911443,4.449465916127025e-5,2.3756267679178933e-8,-0.0012500904907569506,4.4262301368479445e-5,2.3613540810084584e-8,-0.0012498556988007213,4.3995081325114545e-5,2.3451824758728542e-8,-0.0012494996714732477,4.375734202677175e-5,2.3311357072906797e-8,-0.0012490486343557058,4.360978994232384e-5,2.3229326501100328e-8,-0.0012485532799728183,4.359328030608507e-5,2.3229896399582473e-8,-0.001248077323762565,4.3716595091107244e-5,2.331696995481848e-8,-0.0012476814413027032,4.395208150458591e-5,2.3471965518926978e-8,-0.0012474066926813987,4.424143994728845e-5,2.3657815110514976e-8,-0.001247262641945451,4.4511219507711075e-5,2.3828756487483382e-8,-0.0012472248755787513,4.469382181566311e-5,2.3943301525145774e-8,-0.0012472435198697964,4.474664503382738e-5,2.3975912178036033e-8,-0.001247259506344416,4.466205719091103e-5,2.3922954185837815e-8,-0.0012472217473297215,4.446513739596869e-5,2.3801066644975018e-8,-0.0012470987187946957,4.420202198632878e-5,2.3639715221988536e-8,-0.0012468817729012385,4.392519162060175e-5,2.3471897838937096e-8,-0.0012465817445801888,4.368137901444268e-5,2.3326586331146017e-8,-0.0012462224178688196,4.3504603084736476e-5,2.3224476425034505e-8,-0.0012458339394664786,4.3413868956406416e-5,2.317671064191687e-8,-0.0012454477067935401,4.341371210977519e-5,2.318536732956266e-8,-0.001245092875503066,4.349582099726864e-5,2.3244572533892913e-8,-0.001244793861427751,4.364070138997217e-5,2.334159650208275e-8,-0.0012445680145702208,4.381919330597018e-5,2.3457855646996076e-8,-0.0012444228840729505,4.399437802864513e-5,2.35701808197754e-8,-0.0012443530695937283,4.4124913953168016e-5,2.3652983748257247e-8,-0.0012443375127046577,4.4170905959475854e-5,2.36819578137255e-8,-0.001244339050323051,4.410267397222573e-5,2.3639490947179656e-8,-0.0012443085409083597,4.391102098493597e-5,2.352090842966235e-8,-0.0012441949428326805,4.361529559426061e-5,2.3339274923289387e-8,-0.0012439599109511782,4.3264248999509696e-5,2.3125688607710063e-8,-0.0012435919172900148,4.292632418466513e-5,2.2923014333021052e-8,-0.0012431132807987672,4.2670863701421686e-5,2.2774032688701237e-8,-0.0012425758812366372,4.2547004754978845e-5,2.2708303443627026e-8,-0.001242046681417017,4.256875652229016e-5,2.273310098467663e-8,-0.0012415887940260054,4.2711639999148036e-5,2.2831736522023835e-8,-0.0012412448848635037,4.292095325018456e-5,2.2969151481539737e-8,-0.0012410276081992223,4.312771971755229e-5,2.310214052847942e-8,-0.0012409187405165644,4.3266945611404475e-5,2.3190749585606232e-8,-0.001240876179833917,4.329319757536537e-5,2.3207763152117412e-8,-0.0012408462077011405,4.3189822733976015e-5,2.314410023143346e-8,-0.001240777320283415,4.297005585476495e-5,2.3009154427995445e-8,-0.0012406317702474867,4.267059575677806e-5,2.2826536022629307e-8,-0.0012403919863629748,4.234042689642282e-5,2.26269926746929e-8,-0.0012400610415698615,4.2028799199970334e-5,2.2440951581700866e-8,-0.0012396584394359302,4.1775753442481906e-5,2.229275950494211e-8,-0.001239213642370792,4.160681735016447e-5,2.2197568374873713e-8,-0.001238759622997134,4.153164993599383e-5,2.21606545642313e-8,-0.0012383277669794706,4.154532626799311e-5,2.217831390256571e-8,-0.0012379443945620973,4.163077699858882e-5,2.223941511624005e-8,-0.0012376284470835346,4.17613701854737e-5,2.2327028899360917e-8,-0.0012373896362990083,4.190335157601163e-5,2.2420000164546246e-8,-0.001237226498897373,4.201852746249583e-5,2.2494706995441768e-8,-0.0012371242703294284,4.2068080603654364e-5,2.2527507113518604e-8,-0.0012370533291036505,4.201858038815096e-5,2.249845761104157e-8,-0.001236970018387961,4.18506164139745e-5,2.239652980094868e-8,-0.0012368223070618539,4.1568658962976625e-5,2.2225481522563593e-8,-0.0012365619116138991,4.120801712255095e-5,2.2007914498811416e-8,-0.0012361611416612153,4.083280694899721e-5,2.1783828379414836e-8,-0.001235627714205694,4.052073423663693e-5,2.1601104914924004e-8,-0.0012350082702082678,4.0337708897671565e-5,2.149979267276202e-8,-0.0012343757042772982,4.031356310619789e-5,2.1497194944095898e-8,-0.0012338050721628741,4.043155020851939e-5,2.1581628688838263e-8,-0.001233349834870539,4.063630930677973e-5,2.1717708568439122e-8,-0.0012330286624901638,4.0854394434720134e-5,2.1859385815913868e-8,-0.001232825543872876,4.1016780529853954e-5,2.1964061307544442e-8,-0.0012326994687433222,4.1075328421856106e-5,2.20027389188401e-8,-0.001232597984556413,4.1010377237678075e-5,2.196447509602127e-8,-0.0012324701701386766,4.083038763729262e-5,2.1855784862297425e-8,-0.0012322765508626758,4.0566046838917725e-5,2.1696628675659008e-8,-0.0012319949600370919,4.026131873137667e-5,2.151464212796346e-8,-0.0012316222127142264,3.996359807215556e-5,2.1339009160521587e-8,-0.0012311720726316338,3.971485937041825e-5,2.1195127901571155e-8,-0.001230670573013148,3.954524762662862e-5,2.1100877649413684e-8,-0.0012301501032358588,3.946977464651513e-5,2.1064790494578928e-8,-0.0012296436170803153,3.9487963552311815e-5,2.108595595697376e-8,-0.0012291799191749856,3.958568949318732e-5,2.1155185653788322e-8,-0.0012287803742935324,3.973818698101526e-5,2.1256853700710867e-8,-0.001228456809047748,3.991337515449703e-5,2.1370956879184295e-8,-0.0012282101383242943,4.007518264093764e-5,2.1475236423481508e-8,-0.0012280293349605576,4.0187061533075706e-5,2.1547450730279715e-8,-0.0012278906587169442,4.0216265386799466e-5,2.1568075140606426e-8,-0.001227757733952711,4.0139660658889306e-5,2.152381649965794e-8,-0.001227584040852701,3.995131561109933e-5,2.141206714008766e-8,-0.0012273199557392438,3.9670437193476325e-5,2.1245481814044025e-8,-0.0012269256617048919,3.934568255249432e-5,2.1054357934419238e-8,-0.001226387988600605,3.9049849819512705e-5,2.088324803621528e-8,-0.0012257337792927004,3.886073981427376e-5,2.077925099285005e-8,-0.001225029176986983,3.8832259555441034e-5,2.0774438780732722e-8,-0.0012243597146831978,3.897014608672804e-5,2.087118383561181e-8,-0.001223799174185458,3.922790438935534e-5,2.1039910874573118e-8,-0.0012233842237546633,3.952612757691313e-5,2.123118242844517e-8,-0.001223107335217403,3.9782946538246464e-5,2.139456934167179e-8,-0.0012229273220081428,3.993907780657064e-5,2.1494114292522025e-8,-0.001222787747765819,3.996887325239496e-5,2.1515041468992588e-8,-0.0012226337779387417,3.987869845089384e-5,2.1462498186417195e-8,-0.0012224231672501788,3.9698352797038394e-5,2.135591073507243e-8,-0.001222131287192134,3.94706075535104e-5,2.1222223071618265e-8,-0.0012217517999359017,3.924165377627985e-5,2.1089871554669243e-8,-0.0012212945943425393,3.905340977839935e-5,2.0984126176207197e-8,-0.0012207820344604945,3.8937868022761935e-5,2.0923847255017387e-8,-0.0012202442110411317,3.891356765329418e-5,2.0919587003276005e-8,-0.0012197138193019857,3.898419985757117e-5,2.0972925719657997e-8,-0.0012192212575737466,3.913919956043711e-5,2.1076902982625034e-8,-0.0012187904880345962,3.9356035455342134e-5,2.1217396945348294e-8,-0.001218436045934365,3.960367962125383e-5,2.1375213106972125e-8,-0.00121816125440768,3.9846620466140236e-5,2.1528562534707792e-8,-0.0012179574526165029,4.004903399140244e-5,2.165570613461297e-8,-0.0012178040605647724,4.0179078031285165e-5,2.1737684879836926e-8,-0.001217669467291421,4.021348370120589e-5,2.1761144819940345e-8,-0.0012175131332450237,4.014272182328031e-5,2.1721351070588032e-8,-0.001217289990042325,3.997662689165655e-5,2.162532349147562e-8,-0.0012169585457825218,3.9749007528304005e-5,2.1494297600574853e-8,-0.0012164931847068905,3.9517836703297245e-5,2.136358703249228e-8,-0.0012158983378917096,3.9356329110915773e-5,2.1277115324960004e-8,-0.0012152176438466392,3.9332104759699913E-05,2.127493647531436e-8,-0.001214528479586985,3.947928991470707e-5,2.1376600643727462e-8,-0.0012139177363669367,3.9778311663362115e-5,2.1569180758206194e-8,-0.0012134484162272517,4.015900048914238e-5,2.180933946924029e-8,-0.0012131363021741985,4.052837642935356e-5,2.2040280902569133e-8,-0.0012129497831343294,4.080665261167639e-5,2.2213672818770073e-8,-0.0012128291159121656,4.095125233841926e-5,2.230428148992462e-8,-0.001212710628911282,4.096082546243361e-5,2.2312340353820234e-8,-0.0012125440419645064,4.0864936103992574e-5,2.2257017392004202e-8,-0.0012122998065612566,4.070927702557695e-5,2.2167052698862267e-8,-0.001211969092054254,4.054291261138361e-5,2.207270204179144e-8,-0.0012115601294701622,4.04096307802744e-5,2.2000393390250897e-8,-0.0012110935055385707,4.034290695442932e-5,2.1969806882960636e-8,-0.001210597514896922,4.0363263803066746e-5,2.1992540281281542e-8,-0.001210103734529621,4.047720018381726e-5,2.2071717239761007e-8,-0.0012096427900898502,4.0677387217859966e-5,2.22022573473533e-8,-0.0012092403935229314,4.094407090176532e-5,2.237175494917936e-8,-0.0012089138646246408,4.124773087837309e-5,2.2562054742508997e-8,-0.001208669509931094,4.155294488543246e-5,2.2751575294808985e-8,-0.0012085012343950414,4.1823087158483395e-5,2.2918206290301382e-8,-0.0012083905541689021,4.20253509279023e-5,2.304245225579731e-8,-0.0012083080279941285,4.213570362400274e-5,2.3110503419034456e-8,-0.0012082161114372763,4.2143459888724324e-5,2.3116949841108062e-8,-0.0012080735324706796,4.2055159230597596e-5,2.3066900585552403e-8,-0.001207841533426535,4.189723091537656e-5,2.297724001603263e-8,-0.0012074923383279116,4.171613868549196e-5,2.2876363669851336e-8,-0.001207019283053891,4.157362669411139e-5,2.2801120538061767e-8,-0.0012064459189305014,4.1534493783767346e-5,2.2789521758592166e-8,-0.0012058286024298984,4.164656524482071e-5,2.2869009240234377e-8,-0.0012052460554162017,4.19184087749905e-5,2.3043477200400544e-8,-0.0012047743940046401,4.2307229374438395e-5,2.3286316882609802e-8,-0.0012044572585227797,4.272895499439604e-5,2.3546579750409415e-8,-0.001204288381331058,4.308962693418823e-5,2.376779519103741e-8,-0.0012042176630236775,4.332107815521141e-5,2.390938507508682e-8,-0.0012041753802073372,4.340093341660907e-5,2.3958706867713977e-8,-0.00120409843142815,4.335014281596996e-5,2.3929491995290315e-8,-0.0012039461046134032,4.3216266495513626e-5,2.3851510393422998e-8,-0.0012037033879847602,4.305483536435831e-5,2.3758982441867673e-8,-0.001203376539335363,4.291599030590616e-5,2.368228317218689e-8,-0.00120298613557427,4.283755592078561e-5,2.364376268900528e-8,-0.00120256066507784,4.2842730196850536e-5,2.365655954004364e-8,-0.0012021315896690958,4.29401323049733e-5,2.3724918753893763e-8,-0.0012017295357681474,4.3124764351869256e-5,2.384500705422323e-8,-0.0012013810188355309,4.3379445958178134e-5,2.400589014719376e-8,-0.0012011053959982453,4.367684303151363e-5,2.4190760318183176e-8,-0.0012009120711434845,4.3982426851927915e-5,2.4378686124360526e-8,-0.001200798320179096,4.4258666524398955e-5,2.4547135559008024e-8,-0.0012007483813156155,4.447035815567847e-5,2.4675237441635286e-8,-0.0012007344048218429,4.45904789956841e-5,2.4747373111654414e-8,-0.0012007195396916456,4.4605667043112055E-05,2.475647427648304e-8,-0.0012006630679124704,4.4520319606676825e-5,2.4706349244549025e-8,-0.0012005271433299393,4.435834252862902e-5,2.4612444809990292e-8,-0.0012002844344340745,4.416178423355356e-5,2.450065938028214e-8,-0.0011999257549066937,4.39856842762662e-5,2.4403951995426074e-8,-0.0011994662184232547,4.3888471317910234e-5,2.435650342589999e-8,-0.001198947460842372,4.3917923813857226e-5,2.43855173915342e-8,-0.001198432684587654,4.409482178445086e-5,2.4501884310528832e-8,-0.0011979921332492878,4.43998509534339e-5,2.469284335350204e-8,-0.00119768078598594,4.4772044938470945e-5,2.492136091235081e-8,-0.0011975168459692923,4.512476493318901e-5,2.5135693210741254e-8,-0.00119747326559844,4.53756385533257e-5,2.528710231716238e-8,-0.0011974888649364393,4.547604253094459e-5,2.5347319618533324e-8,-0.0011974930862349044,4.542451975687877e-5,2.5316491092253453e-8,-0.0011974302262546881,4.525952548655604e-5,2.5218719541367353e-8,-0.0011972721728209824,4.5039793706352555e-5,2.509006550443868e-8,-0.0011970183063790395,4.48245155389913e-5,2.4966396418741908e-8,-0.001196687932279745,4.4660550904328974e-5,2.487559033145641e-8,-0.0011963111623788396,4.457738285834904e-5,2.4834604037411308e-8,-0.0011959215436754737,4.45871920184613e-5,2.4849769736576936e-8,-0.0011955511692190652,4.468712727908596e-5,2.4918432734679642e-8,-0.0011952275920148667,4.486193679281758e-5,2.5030717037665653e-8,-0.001194971551310585,4.508639373150898e-5,2.5171047327290172e-8,-0.001194794863314542,4.5327777567539424e-5,2.5319623085596163e-8,-0.001194698341899172,4.554901617532855e-5,2.5454274898017947e-8,-0.0011946701458042791,4.5713081220382614e-5,2.555310251854561e-8,-0.0011946854231435274,4.5788787339589856e-5,2.5597980508971714e-8,-0.0011947082714650892,4.575734391539159e-5,2.5578493326096783e-8,-0.0011946966519119835,4.561819225984636e-5,2.5495358009355167e-8,-0.0011946100335258174,4.539218001394653e-5,2.536213072497259e-8,-0.0011944184455051122,4.512031317912244e-5,2.5204163446924352e-8,-0.0011941107653257608,4.485734384224478e-5,2.5054453515492776e-8,-0.0011936999083235803,4.466088478508766e-5,2.4946937452023213e-8,-0.0011932230592092813,4.457796164782929e-5,2.4908499047797812e-8,-0.001192735881163747,4.463180004644925e-5,2.4951402925395812e-8,-0.0011923007264965835,4.481237616870531e-5,2.506816181625162e-8,-0.001191970530689217,4.507461064861558e-5,2.523093820360962e-8,-0.0011917724140860335,4.5347229185161454e-5,2.5397066980609755e-8,-0.0011916972032087528,4.5552150560644986e-5,2.552053976524705e-8,-0.0011917008223672682,4.5628853227269786e-5,2.55662585680403e-8,-0.001191718836140086,4.55536438037028e-5,2.5521241678494558e-8,-0.0011916882079971906,4.534483429463704e-5,2.5397506076360736e-8,-0.0011915661764232738,4.50523352358896e-5,2.52256885925892e-8,-0.0011913387387294007,4.47385355732246e-5,2.504346293478613e-8,-0.0011910180546011024,4.446011631860293e-5,2.4884567965759092e-8,-0.0011906333941084394,4.425692301702829e-5,2.4772196056940904e-8,-0.0011902211184680275,4.414860982271032e-5,2.4717178867113547e-8,-0.0011898169790774708,4.4136455261757274e-5,2.4719329452121577e-8,-0.0011894514485054754,4.420725000515381e-5,2.4769977404092045e-8,-0.0011891472970888017,4.43372203473938e-5,2.4854416724191735e-8,-0.0011889182539292847,4.449528806773453e-5,2.4953861754942293e-8,-0.0011887678749798924,4.464592966057503e-5,2.504712463555681e-8,-0.0011886883030289687,4.4752380198887884e-5,2.5112510632544797e-8,-0.0011886592771498138,4.478098874931083e-5,2.5130424449580425e-8,-0.0011886483992062577,4.4707117457076194e-5,2.5086889829383304e-8,-0.0011886140329250244,4.4522010180780784e-5,2.4977592415005244e-8,-0.0011885119078034235,4.4238713784012066e-5,2.4811273251672534e-8,-0.0011883051844906306,4.3894051675223444e-5,2.461069041472246e-8,-0.0011879756183442926,4.354386275480496e-5,2.4409531085824178e-8,-0.0011875317045031677,4.3250911754683235e-5,2.4244998266980886e-8,-0.001187009814984017,4.306830808202916e-5,2.4147865942933328e-8,-0.0011864667588603476,4.302388062774488e-5,2.4133330210664937e-8,-0.0011859656180111609,4.3111034611001064e-5,2.4195943412766552e-8,-0.0011855592107146609,4.328925296709795e-5,2.4310387221332328e-8,-0.0011852761111206852,4.349413359054941e-5,2.443782423047731e-8,-0.0011851131455521931,4.3654131747047644e-5,2.4535986395746288e-8,-0.0011850365116463047,4.370946428713365e-5,2.4570271546609728e-8,-0.0011849914632903148,4.362784368851426e-5,2.4522773768495008e-8,-0.001184917896100419,4.341215487751708e-5,2.43964861556252e-8,-0.0011847668283073867,4.3097519747167916e-5,2.4213256739576758e-8,-0.001184512183165127,4.273915270154866e-5,2.400637699709233e-8,-0.001184154359433377,4.239606712181469e-5,2.381082880477647e-8,-0.001183715829325232,4.211673537541401e-5,2.3654834718410355e-8,-0.001183232091457753,4.193072848064575e-5,2.355508585492585e-8,-0.001182742076052658,4.184692919527811e-5,2.351593181722576e-8,-0.001182280783554334,4.185637277082278e-5,2.3531280291149167e-8,-0.0011818749650736491,4.193705913158789e-5,2.3587563717348847e-8,-0.0011815412371566454,4.20587459208501e-5,2.3666591547139997e-8,-0.001181285518418681,4.218688550045602e-5,2.374784651401943e-8,-0.0011811028444095974,4.2285853886151184e-5,2.381037385561812e-8,-0.001180977123076948,4.232217251513254e-5,2.3834703066651765e-8,-0.0011808810539391222,4.2268560697046846e-5,2.3805269882627502e-8,-0.0011807771612472478,4.2109361969074505e-5,2.3713602572318883e-8,-0.0011806214602274067,4.1846957049957275e-5,2.356200196449372e-8,-0.0011803711677501327,4.150714518977967e-5,2.3366529209186637e-8,-0.0011799963986054275,4.113978509884284e-5,2.3157162420999488e-8,-0.0011794927933482826,4.08108363408142e-5,2.2972909369344754e-8,-0.0011788890049142986,4.058504354233647e-5,2.2851491515976213e-8,-0.0011782430294203484,4.050438512482597e-5,2.2816671906510717e-8,-0.0011776263052778516,4.0571991173592686e-5,2.2868981508891815e-8,-0.0011771016155169122,4.074982996867079e-5,2.2984703383283737e-8,-0.0011767044632477951,4.097122380197114e-5,2.3123630234264177e-8,-0.0011764349839248737,4.1161829736862925e-5,2.3241707139593455e-8,-0.0011762614801303043,4.1260299791107996e-5,2.330328303434297e-8,-0.0011761320404088328,4.1232336783918625e-5,2.328924297558214e-8,-0.0011759893133244327,4.1075838938516295e-5,2.3199711124094704e-8,-0.0011757842580515552,4.081779203779472e-5,2.3051819147004552e-8,-0.001175486057786376,4.050513963720658e-5,2.2873984543674025e-8,-0.0011750866908770193,4.0192525827399625e-5,2.2698514425147638e-8,-0.0011745998913217442,3.9930000443378806e-5,2.2554401861589946e-8,-0.0011740555181366963,3.975350915748105e-5,2.2461942074838184e-8,-0.0011734914447389271,3.967996159531561e-5,2.2430123462058758e-8,-0.001172945410878914,3.970705295686038e-5,2.245677720924922e-8,-0.0011724486794790487,3.981662159239835e-5,2.2530685939862905e-8,-0.0011720222605774908,3.997974255206267e-5,2.263458529327139e-8,-0.0011716754580197422,4.0161947727554296e-5,2.274816904236688e-8,-0.0011714059108263474,4.032766224367516e-5,2.285064391621753e-8,-0.0011712002787532773,4.044378850159482e-5,2.2922839703133115e-8,-0.001171035100466492,4.048293650443117e-5,2.2949153547451752e-8,-0.0011708778846540614,4.042697766162125e-5,2.2919658210313572e-8,-0.0011706891457959967,4.0271429475899425e-5,2.2832600750891778e-8,-0.001170426728995793,4.0030416719605716e-5,2.269711830719015e-8,-0.0011700538042031948,3.9740414742010276e-5,2.253517245414926e-8,-0.0011695506069301434,3.945916078722506e-5,2.2380689483545792e-8,-0.0011689268944945577,3.9255517922141815e-5,2.227353935744273e-8,-0.001168228173677312,3.918909798715985e-5,2.224769728531718e-8,-0.0011675279781217165,3.9285907063139966e-5,2.2317220439852915e-8,-0.0011669049542857158,3.952322670802093e-5,2.24676871654407e-8,-0.0011664145207980038,3.9834885125080155e-5,2.265953681114611e-8,-0.001166070295452867,4.013563731944959e-5,2.2842517129925196e-8,-0.0011658440641923867,4.035108613749354e-5,2.2973299450432576e-8,-0.0011656808972777184,4.043846993678506e-5,2.302764914878378e-8,-0.0011655191438936243,4.039246802510346e-5,2.300366653105076e-8,-0.0011653067613803536,4.023909875147127e-5,2.291788321046429e-8,-0.001165010689103841,4.002390781978695e-5,2.2797942341975254e-8,-0.0011646197556137458,3.979940906101893e-5,2.2674938420648966e-8,-0.0011641429633779334,3.961443280877213e-5,2.2577103601577477e-8,-0.0011636049134929856,3.950632417993853e-5,2.252541402741315e-8,-0.0011630396411959254,3.9496218494349576e-5,2.253115281543781e-8,-0.001162483900516477,3.95874667786907e-5,2.2595320378682432e-8,-0.0011619709327954436,3.976699600781008e-5,2.2709638135691125e-8,-0.0011615255979191684,4.000893838449559e-5,2.2858712233979922e-8,-0.0011611613858706039,4.0279582776409567e-5,2.3022849008527116e-8,-0.001160879376169587,4.054263299169933e-5,2.3181024514051384e-8,-0.0011606687592218374,4.076394687408465e-5,2.3313608208272293e-8,-0.0011605083240079387,4.09154288041749e-5,2.3404666156265128e-8,-0.00116036847554564,4.097823517679709e-5,2.34438834621506e-8,-0.0011602136824594566,4.0945659648512586e-5,2.3428227761797474e-8,-0.0011600057215318002,4.0826012397539306e-5,2.3363471925632195e-8,-0.0011597086232655231,4.0645264473458956e-5,2.326545539839303e-8,-0.0011592962457193116,4.0447999006798314e-5,2.3160337368834338e-8,-0.00115876229853727,4.0293821820255384e-5,2.3082332980724006e-8,-0.0011581301558147067,4.0245920350732926e-5,2.3067127381392428e-8,-0.0011574563121098651,4.035081622828792e-5,2.3140425634618856e-8,-0.0011568199270357543,4.061526212816023e-5,2.3304961265381497e-8,-0.0011562968471505665,4.099409631845051e-5,2.353376588241085e-8,-0.0011559290458727804,4.140161770840252e-5,2.3776854904296303e-8,-0.0011557078806939019,4.1744238983237644e-5,2.3980097768470524e-8,-0.0011555814912751524,4.195588110422897e-5,2.4105697188319998E-08,-0.001155479481195814,4.201658493401853e-5,2.4142985129680127e-8,-0.00115533863075793,4.194919447273282e-5,2.4106395513946268e-8,-0.0011551182129401877,4.1802901903976074e-5,2.4025610864818883e-8,-0.0011548035981328402,4.163510488935334e-5,2.3934641492285587e-8,-0.0011544024679921467,4.149790402491649e-5,2.3863731188845464e-8,-0.0011539381598193543,4.143037373269924e-5,2.3834886083816383e-8,-0.0011534428504190312,4.145529592249755e-5,2.3860242372633465e-8,-0.0011529515734318722,4.157867605802834e-5,2.3942156152824156e-8,-0.001152497126030711,4.17910018793201e-5,2.407424330087287e-8,-0.00115210581430915,4.2069853360416185e-5,2.4243037050196697e-8,-0.001151794185245135,4.238365328686831e-5,2.4430139497299415e-8,-0.0011515669930675036,4.269628302794372e-5,2.461478437537122e-8,-0.0011514166348674099,4.2972125399724006e-5,2.4776661433350763e-8,-0.0011513241096236361,4.318091082678523e-5,2.4898702175336794e-8,-0.0011512612721551612,4.330181717597658e-5,2.496949457208967e-8,-0.001151194039557355,4.332656629776271e-5,2.4985098203453446e-8,-0.0011510862887999457,4.326145348232724e-5,2.4950132422663092e-8,-0.0011509043845628019,4.312830423117919e-5,2.4878096818187747e-8,-0.0011506225888506414,4.296414251839801e-5,2.4790856099194497e-8,-0.0011502295873348479,4.281860836006933e-5,2.4716871495239724e-8,-0.0011497354598191344,4.27473669523015e-5,2.4687324428481763e-8,-0.0011491767132249047,4.27998987093043e-5,2.4729297172923822e-8,-0.0011486149745644995,4.300208635109734e-5,2.4856210146960896e-8,-0.0011481242788471762,4.333890754543513e-5,2.505836780419132e-8,-0.0011477663805973333,4.37484335258334e-5,2.529978271595454e-8,-0.0011475638693054652,4.413754488074797e-5,2.552713565537854e-8,-0.0011474880690233208,4.441675095791563e-5,2.5689536506059154e-8,-0.0011474716437174161,4.4535329714636256e-5,2.5758576446798924e-8,-0.0011474381423005444,4.4496153607781065e-5,2.573686319342581e-8,-0.0011473298248947472,4.434525522139947e-5,2.5651963688180006e-8,-0.0011471206519927625,4.4148021131686344e-5,2.5542431090685233e-8,-0.0011468143867924144,4.396712744434881e-5,2.5444745012451112e-8,-0.001146435178096694,4.384958556407789e-5,2.538566338712817e-8,-0.0011460173053052653,4.382244135856911e-5,2.537984964690841e-8,-0.0011455972066733823,4.389369052636168e-5,2.543072424927479e-8,-0.001145208205189756,4.4055310810386594e-5,2.553258147049571e-8,-0.0011448771116926027,4.4286732802865605e-5,2.5672846892049696e-8,-0.001144621838537778,4.455834866317327e-5,2.5834176207532318e-8,-0.0011444496596464482,4.483524010238264e-5,2.5996533958276677e-8,-0.0011443561757723407,4.508136367107901e-5,2.6139484084071172e-8,-0.001144325302176957,4.526422796836885e-5,2.624479996609313e-8,-0.0011443306796744088,4.5359678801102835e-5,2.629920696942144e-8,-0.001144338684074093,4.535607232962796e-5,2.6296805202445227e-8,-0.0011443128443530714,4.525711697688811e-5,2.6240674007741413e-8,-0.0011442192204715602,4.5082805045375516e-5,2.6143256225398415e-8,-0.0011440321422607781,4.4868033997148654e-5,2.6025290536327584e-8,-0.0011437397009143968,4.465876200865301e-5,2.5913293776335838e-8,-0.0011433483936894827,4.450556201387472e-5,2.5835666573269417e-8,-0.0011428859132346458,4.4454301330230345e-5,2.5817407374967364e-8,-0.0011424002463549068,4.4534205124580296e-5,2.587362598157788e-8,-0.0011419527122034946,4.474530750720313e-5,2.600289980431649e-8,-0.0011416033368196802,4.505002810376823e-5,2.618294554588382e-8,-0.001141390428908636,4.5375931822066494e-5,2.6372385764556846e-8,-0.0011413123883100827,4.5634818511907473e-5,2.6521473534591453e-8,-0.001141323589395823,4.5754058078499044e-5,2.6589641295518906e-8,-0.0011413505127724332,4.570482861131677e-5,2.65614039044391e-8,-0.0011413207093381398,4.5510745451041515e-5,2.6451239643199213e-8,-0.001141188094617734,4.523323032317512e-5,2.6295158823665544e-8,-0.0011409425267060696,4.494512245552072e-5,2.613539055975473e-8,-0.0011406039242835295,4.470782444666231e-5,2.6007055239340012e-8,-0.001140209199720666,4.455976514490526e-5,2.5931497221064563e-8,-0.0011397998215520568,4.451513360626569e-5,2.591575701768682e-8,-0.001139413450043509,4.456814837601221e-5,2.595536246540539e-8,-0.0011390795966643849,4.469876670368622e-5,2.60379203690528e-8,-0.0011388178217883774,4.487777100093782e-5,2.614620234117578e-8,-0.001138637029323737,4.507087406977781e-5,2.6260499784491232e-8,-0.0011385351171898522,4.524231213375679e-5,2.636058011508952e-8,-0.001138498908997064,4.5358536475447353e-5,2.6427687830903223e-8,-0.001138504742717813,4.539239795883406e-5,2.6446876610957435e-8,-0.0011385203577618363,4.5327686077719404e-5,2.6409596426616204e-8,-0.001138508626476679,4.5163215308385346e-5,2.6316020938140107e-8,-0.001138433164520453,4.491524922861346e-5,2.617635271007851e-8,-0.0011382651611644248,4.461705208805853e-5,2.60103768433134e-8,-0.0011379901212315725,4.431475914112068e-5,2.5844832363761734e-8,-0.0011376128472153897,4.405962607495448e-5,2.5708742448517676e-8,-0.0011371591432191399,4.38977377850055e-5,2.5627459120037902e-8,-0.0011366732292220137,4.385892899825392e-5,2.561652405049774e-8,-0.0011362103950232623,4.394710877414942e-5,2.5676581411835278e-8,-0.0011358251542952108,4.413475261191414e-5,2.5790765942044402e-8,-0.0011355565320898134,4.436471443508226e-5,2.5926126309661128e-8,-0.0011354142388612493,4.456177182242592e-5,2.6040272006294392e-8,-0.0011353715564004837,4.4653360616528623e-5,2.6092925147649926e-8,-0.0011353705510015804,4.459362909579968e-5,2.605922322764486e-8,-0.0011353404038372476,4.4380227560943225e-5,2.5938971302698022e-8,-0.0011352217466509087,4.405454262243014e-5,2.5756616732937143e-8,-0.0011349852948189293,4.368490247039827e-5,2.5551578991552723e-8,-0.0011346366674042077,4.334216194977203e-5,2.5364227495662016e-8,-0.001134208126523297,4.307971922662928e-5,2.5224447033233243e-8,-0.0011337443916172296,4.292448780803408e-5,2.5146609857361533e-8,-0.0011332897864486306,4.287791196077834e-5,2.5130427988720302e-8,-0.0011328801743606684,4.292232941936807e-5,2.5164886702881576e-8,-0.0011325395437544183,4.302832693352377e-5,2.5232645329543546e-8,-0.0011322795036267984,4.316082969546979e-5,2.5313558114926845e-8,-0.0011320999644248192,4.328354167402069e-5,2.538712994851353e-8,-0.0011319900022255828,4.336233306022805e-5,2.5434328063291953e-8,-0.0011319286947636842,4.336840808418778e-5,2.5439298179225213e-8,-0.0011318863330729578,4.328188187579225e-5,2.5391365668682646e-8,-0.001131826798984989,4.309582777844892e-5,2.5287327028303578e-8,-0.0011317119237820342,4.282000536402383e-5,2.513352362103692e-8,-0.0011315081184450266,4.248267021715128e-5,2.4946745756693704e-8,-0.0011311944679122136,4.212855215251888e-5,2.47528810798855e-8,-0.001130770145740669,4.181171313272162e-5,2.458263730132284e-8,-0.0011302581872849279,4.158375073838242e-5,2.446470685820663e-8,-0.0011297031604086858,4.1480108144529596e-5,2.4418045723061402e-8,-0.001129162188693781,4.15087736209508e-5,2.4445738038119535e-8,-0.001128691235841923,4.164541695493883e-5,2.453267453652789e-8,-0.0011283303644603515,4.1837167858544846e-5,2.464812593336712e-8,-0.0011280922029762194,4.201470996660632e-5,2.4752841228200912e-8,-0.0011279572033331556,4.2109977185660934e-5,2.480903447905591e-8,-0.0011278777807429035,4.2074869072542864e-5,2.4790706388729773e-8,-0.0011277911058960631,4.189530837193729e-5,2.4691226160505966e-8,-0.0011276372138476932,4.15954194176583e-5,2.4525357679971217e-8,-0.0011273763094417542,4.1229584247699144e-5,2.4324526909304625e-8,-0.0011269987883137111,4.0865150594873515e-5,2.4126913313744505e-8,-0.0011265246487921932,4.056282496645149e-5,2.396636013648397e-8,-0.0011259939870450367,4.0362229990203176e-5,2.3864352719984643e-8,-0.0011254538280006646,4.027651035222083e-5,2.3827236887481313e-8,-0.0011249466443459084,4.029509964658356e-5,2.3848081936514294e-8,-0.0011245033782163948,4.0390924133027086e-5,2.3910968573532058e-8,-0.0011241409403492657,4.052829514471608e-5,2.3995517170635476e-8,-0.00112386263638038,4.066934213518109e-5,2.4080458369857855e-8,-0.001123659844043524,4.077852227744454e-5,2.4146059818045725e-8,-0.0011235138537491161,4.082575535334954e-5,2.417579891950277e-8,-0.0011233975399612892,4.078906093563617e-5,2.4157813543967808e-8,-0.0011232772130354719,4.065741806846923e-5,2.4086515680471002e-8,-0.0011231154772805123,4.043402590037051e-5,2.3964410167377178e-8,-0.0011228760409062776,4.0139252991621545e-5,2.380366568263808e-8,-0.0011225309508780508,3.9811507466245704e-5,2.362643573893063e-8,-0.0011220694021852218,3.9503593998477884e-5,2.3462607402847364e-8,-0.0011215052868612503,3.927276808058977e-5,2.334405693151438e-8,-0.0011208791815421717,3.916532907922445e-5,2.32959719470691e-8,-0.0011202512996662164,3.9200465609938846e-5,2.332793726446843e-8,-0.001119685750452599,3.936055511280073e-5,2.3428801926640012e-8,-0.0011192313624241938,3.959351310628623e-5,2.3568365483427852e-8,-0.0011189067970222813,3.982728786145331e-5,2.370580293829856e-8,-0.0011186957125675833,3.9990849821071303e-5,2.380156013682102e-8,-0.0011185529359586416,4.003380335406222e-5,2.382827657042045e-8,-0.0011184183604654927,3.9938559297950844e-5,2.3777363910180102e-8,-0.0011182335261142832,3.972257873820071e-5,2.365991178424167e-8,-0.0011179561348970367,3.943138742499119e-5,2.3502406776038373e-8,-0.0011175690250342211,3.9125231705559594e-5,2.333898219278873e-8,-0.0011170818909624026,3.8863484851492184e-5,2.3202592856615218e-8,-0.0011165261146400343,3.869113689297805e-5,2.3117576365828163e-8,-0.0011159450191786187,3.863070018781825e-5,2.309541688994295e-8,-0.001115382950846316,3.8680782729081375e-5,2.3134291481037248e-8,-0.0011148763323054643,3.88202433349568e-5,2.3221657136516122e-8,-0.0011144484116093652,3.9015366788503146e-5,2.333836405534532e-8,-0.0011141077300649053,3.922741200952648e-5,2.3462821981382622e-8,-0.0011138492060015412,3.941880989590515e-5,2.357433208540127e-8,-0.0011136564631223104,3.955748183796071e-5,2.3655382121537695e-8,-0.001113504398766395,3.961966181875024e-5,2.3693174947865333e-8,-0.0011133616119702572,3.9591985478981636e-5,2.3680806672121074e-8,-0.0011131929173312004,3.9473502927766754e-5,2.3618399758240768e-8,-0.001112962646214551,3.927781992830418e-5,2.3514237054040706e-8,-0.0011126396430199091,3.903476453581059e-5,2.338553477815076e-8,-0.0011122044622860591,3.878987372235069e-5,2.325794563447264e-8,-0.0011116579050496058,3.859916050478475e-5,2.3162471082326266e-8,-0.0011110277638066819,3.8517161490373446e-5,2.3128770665243614e-8,-0.0011103686318442126,3.857932217863279e-5,2.317550345585091e-8,-0.0011097504345893342,3.878498007287958e-5,2.3301147042226735e-8,-0.0011092368658773112,3.909083067031221e-5,2.348067606937274e-8,-0.001108862561025627,3.9421677057301995e-5,2.3671766690779e-8,-0.0011086207894536008,3.969541345367182e-5,2.3828789988108746e-8,-0.001108467784835197,3.9850203582443234e-5,2.3917930158623212e-8,-0.0011083400223898265,3.986149013467848e-5,2.3926558339224554e-8,-0.0011081749835332257,3.9744019406875444e-5,2.3864144977322292e-8,-0.0011079272311021648,3.954206227866765e-5,2.3756473773474773e-8,-0.0011075764036130426,3.9314276041815806e-5,2.3636846724881514e-8,-0.0011071276513506274,3.911872082508301e-5,2.353751460723729e-8,-0.001106606712234522,3.9001210256697606e-5,2.3483218868648787e-8,-0.0011060519911277476,3.8988244203939216e-5,2.3487531140898155e-8,-0.001105505670300844,3.908468395961993e-5,2.3551953376769463e-8,-0.001105005565791467,3.927568764132802e-5,2.3667339954019526e-8,-0.0011045790708096976,3.9531788880221474e-5,2.3816896490402398e-8,-0.0011042398847317478,3.9815546406795756e-5,2.397985579796228e-8,-0.0011039874767033147,4.008822786866677e-5,2.413504494817365e-8,-0.0011038086569949937,4.031539899273079e-5,2.4263827315283715e-8,-0.0011036803427045844,4.047087645509333e-5,2.4352204679952328e-8,-0.0011035726966564098,4.053916604625667e-5,2.4392162684179795e-8,-0.0011034522434320714,4.051692930416066e-5,2.438250815301555e-8,-0.0011032850399023103,4.041397991610771e-5,2.4329393420554233e-8,-0.0011030403485004744,4.0253960514007384e-5,2.424655679752155e-8,-0.001102695483905325,4.0074227905403326e-5,2.415503580398189e-8,-0.001102242193580227,3.992352368685253e-5,2.4081660659305638e-8,-0.0011016936673696796,3.985525563697915e-5,2.4055253488353385e-8,-0.0011010891641663526,3.991473667135059e-5,2.409971221190807e-8,-0.0011004912378463276,4.012168328025906e-5,2.422468321626409e-8,-0.0010999711538006204,4.045477360482803e-5,2.4417430252093232e-8,-0.0010995842055226655,4.084938248726866e-5,2.4641830821643385e-8,-0.0010993460929871167,4.121581701041971e-5,2.484844677700392e-8,-0.0010992250658169746,4.1472215284716905e-5,2.4992557013455944e-8,-0.0010991556460179283,4.1574464276116506e-5,2.505058969589844e-8,-0.0010990652089385281,4.1527398961356164e-5,2.5026265284520233e-8,-0.001098898156768374,4.1375312448001e-5,2.4945200752454744e-8,-0.0010986280334354423,4.118167475058328e-5,2.484337320183111e-8,-0.0010982574815838655,4.100937470290851e-5,2.4755843824772127e-8,-0.0010978110406426043,4.090738485072404e-5,2.4709226856153248e-8,-0.0010973257121964122,4.0904499228446404e-5,2.471836767874099e-8,-0.0010968421791160742,4.10083665738254e-5,2.4786177550209052e-8,-0.0010963977347210852,4.120779805968306e-5,2.4905329142025246e-8,-0.0010960210677344888,4.147702335351955e-5,2.506090255556026e-8,-0.0010957289251758702,4.178110279291195e-5,2.5233456325869303e-8,-0.001095524697387541,4.2081778366454555e-5,2.540215364575196e-8,-0.0010953988246681838,4.2343079153780506e-5,2.5547670181248777e-8,-0.0010953307583887954,4.253610901231246e-5,2.5654681311269465e-8,-0.0010952920447938042,4.264254236325311e-5,2.571372890267199e-8,-0.0010952499739452775,4.2656633559821643e-5,2.5722338660353446e-8,-0.0010951713587064734,4.2585944785351156e-5,2.5685421940828945e-8,-0.0010950263137780906,4.245110365085979e-5,2.5615053368196092e-8,-0.001094792159453469,4.2284683294743016e-5,2.5529653777638224e-8,-0.0010944577225138132,4.212890345796607e-5,2.5452477208888395e-8,-0.0010940280855575993,4.2031223829935575e-5,2.5409021613321293e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json new file mode 100644 index 000000000..3a712547f --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":5000,"numberOfSamples":1000,"samples":[-0.001093528836966317,4.203642676149489e-5,2.5422725793163846e-8,-0.0010930072646208094,4.217440867148639e-5,2.5508574660559997e-8,-0.0010925265640548522,4.2445448281040656e-5,2.566549440168746e-8,-0.0010921498584701538,4.280927315836898e-5,2.5870776828536737e-8,-0.0010919163003251823,4.318794211770871e-5,2.6081780444674054e-8,-0.001091820523294629,4.348883154959585e-5,2.624831762871915e-8,-0.00109181029138295,4.364045659227296e-5,2.6331989440280285e-8,-0.0010918072934319603,4.362110831307491e-5,2.6321766949888615e-8,-0.0010917391971531742,4.346321105608486e-5,2.6236404835428295e-8,-0.0010915640090047574,4.323393624900339e-5,2.611370862534541e-8,-0.0010912766199280236,4.3007345034387695e-5,2.599493426705449e-8,-0.0010909009016498547,4.284299979150903e-5,2.5912727223068096e-8,-0.001090476431342811,4.277625215835485e-5,2.5885719367964947e-8,-0.0010900465218413144,4.2817753215300766e-5,2.5918503099339365e-8,-0.0010896499951765957,4.2957752709860237e-5,2.6004412180594708e-8,-0.0010893164869373976,4.3171842376795946e-5,2.612906955898042e-8,-0.0010890641035068592,4.34265580743787e-5,2.6273675178051805e-8,-0.0010888984776027527,4.3684563677071033e-5,2.6417842719480934e-8,-0.0010888129019089097,4.3909513777838174e-5,2.65421057988998e-8,-0.0010887895341848287,4.407054827337014e-5,2.663018859077577e-8,-0.0010888016920848876,4.4146217427231046e-5,2.667102788931276e-8,-0.001088817192482838,4.4127450376416946e-5,2.6660363442769395e-8,-0.0010888024752733671,4.401909753500576e-5,2.6601590837686793e-8,-0.0010887270459753056,4.383981898364833e-5,2.65056658451493e-8,-0.0010885677996571497,4.362036647066958e-5,2.639002532249307e-8,-0.0010883129235325867,4.3400346577718806e-5,2.627658759927833e-8,-0.0010879651578661836,4.322346930498476e-5,2.6188934255361087e-8,-0.001087544097987234,4.313109216854214e-5,2.6148709458164907e-8,-0.001087086674855694,4.315374123594729e-5,2.617116796712862e-8,-0.001086644066498112,4.330094126455337e-5,2.6260046435218025e-8,-0.0010862728381159504,4.3551620609182124e-5,2.640284239026193e-8,-0.00108601928226965,4.38502022017017e-5,2.656903579292576e-8,-0.0010859001135970722,4.411523709589743e-5,2.6714781887700585e-8,-0.0010858889754997796,4.426383145393484e-5,2.6795876138844725e-8,-0.0010859203351680025,4.424423453619814e-5,2.6785128110422738e-8,-0.001085913618912209,4.4058578601592776e-5,2.668460538734044e-8,-0.001085805393800295,4.376072785978275e-5,2.6524487039470494e-8,-0.0010855708545136362,4.343117507166159e-5,2.6349304657863846e-8,-0.0010852250584937636,4.314592290426317e-5,2.620071963961655e-8,-0.0010848090868554553,4.295570916633156e-5,2.6105975798650347e-8,-0.001084372654611788,4.2880291469861494e-5,2.6074830737518084e-8,-0.0010839610398885847,4.291308032542563e-5,2.6102403255115617e-8,-0.0010836081790852113,4.302959653013973e-5,2.6174200961517643e-8,-0.0010833344520610171,4.3195574161869046e-5,2.6270850944433867e-8,-0.001083146945167361,4.3373198164366636e-5,2.637160337223827e-8,-0.0010830405767407777,4.352569954505452e-5,2.645674242392391e-8,-0.0010829995124754573,4.3621083270509026e-5,2.6509425138913995e-8,-0.001082998991414148,4.363548696163819e-5,2.6517334874121295e-8,-0.0010830078695757855,4.3556232067080865e-5,2.6474252100274967e-8,-0.0010829921546684827,4.338421730365343e-5,2.638134536379059e-8,-0.0010829195457739626,4.313495597945831e-5,2.6247737743075178e-8,-0.0010827645199852117,4.2837568459182473e-5,2.6089894868217516e-8,-0.0010825131481838203,4.2531405839397756e-5,2.5929625306960433e-8,-0.0010821667257754604,4.2260415291339646e-5,2.5790800121408916e-8,-0.001081743391863589,4.2065789758412284e-5,2.5695202717475755e-8,-0.0010812771260442285,4.197779093233889e-5,2.5658116797976546e-8,-0.00108081368235774,4.2007788209395396e-5,2.5684279138019833e-8,-0.0010804030553122393,4.214188129809646e-5,2.5764875776401685e-8,-0.0010800884167244415,4.2338329128859495e-5,2.5876603076949472e-8,-0.001079892778156456,4.2531881372048156e-5,2.598424858567189e-8,-0.001079807154698478,4.264767562282009e-5,2.6048107274120274e-8,-0.0010797867060579334,4.262394191909685e-5,2.6035904077434437e-8,-0.001079760973783162,4.243610779021697e-5,2.593546226975552e-8,-0.0010796577282035234,4.210950720238184e-5,2.5761387251077892e-8,-0.00107942993302375,4.171117273294466e-5,2.555057096694696e-8,-0.001079071274203828,4.132383281774707e-5,2.5348037433669575e-8,-0.001078613065447523,4.101676275871758e-5,2.5191031444188244e-8,-0.0010781076445001167,4.082789625905243e-5,2.509930154443339e-8,-0.0010776094725232313,4.076147500814069e-5,2.507401361434535e-8,-0.0010771620659250866,4.079616385676292e-5,2.5102488709573008e-8,-0.001076792527426751,4.089624684549766e-5,2.5164595184415124e-8,-0.001076511483357941,4.102115014348993e-5,2.523807558214155e-8,-0.001076315486299618,4.1131846253385905e-5,2.530198861820359e-8,-0.00107618985214185,4.1194730844247526e-5,2.533864785318205e-8,-0.0010761111699562399,4.118418519494565e-5,2.5334821170315685e-8,-0.0010760496321073894,4.1084740905426734e-5,2.5282775112651636e-8,-0.0010759717151872302,4.089317638698599e-5,2.5181368331821842e-8,-0.0010758437806077928,4.062025720268964e-5,2.5037000465379675e-8,-0.001075636874965737,4.029124488214523e-5,2.4863872287821255e-8,-0.001075332344175619,3.994403311673042e-5,2.4682887122784044e-8,-0.0010749270772761371,3.962409533524119e-5,2.4518755050929554e-8,-0.0010744366625150808,3.937631781230898e-5,2.439541151761965e-8,-0.0010738948032005251,3.92350369958662e-5,2.433057466908826e-8,-0.0010733481764564313,3.9214698025557454e-5,2.433083409288902e-8,-0.0010728472503692334,3.930384295442124e-5,2.4388737863373705e-8,-0.0010724347731497891,3.94645175457536e-5,2.44828950313044e-8,-0.0010721343835682733,3.9638151634969455e-5,2.458148402653822e-8,-0.001071942205574794,3.9757775235519326e-5,2.4648932372444277e-8,-0.001071824440490328,3.976485588304506e-5,2.4654800605721794e-8,-0.0010717234455627444,3.962693202706781e-5,2.4582909766611626e-8,-0.0010715727554048086,3.935008138551149e-5,2.4437676459267312e-8,-0.0010713175244551965,3.8979848282591754e-5,2.4244352737564492e-8,-0.0010709326265880106,3.858785169979547e-5,2.4041693976913273e-8,-0.0010704300073954966,3.8248525783302696e-5,2.386941805332488e-8,-0.0010698520086136918,3.801636200014798e-5,2.375603419291011e-8,-0.0010692550526086402,3.791333074165718e-5,2.371227592816189e-8,-0.0010686922574283954,3.792939556885814e-5,2.3731673323543086e-8,-0.0010682017404291997,3.80320722103819e-5,2.379598347049132e-8,-0.0010678024504110503,3.8178531959137147e-5,2.3881867002065674e-8,-0.001067495548138812,3.832556322890049e-5,2.3966240581430207e-8,-0.001067268273277274,3.843582509864842e-5,2.4029501058277472e-8,-0.0010670980487706369,3.848102746680633e-5,2.4057051807740725e-8,-0.0010669558863532884,3.844342728250387e-5,2.4039967070581163e-8,-0.001066809160826231,3.8316803241082525e-5,2.3975457859135465e-8,-0.0010666243579828204,3.810746586828673e-5,2.386741669396789e-8,-0.0010663705574710293,3.7835149903862285e-5,2.3726898442079206e-8,-0.0010660241691441985,3.753288897009294e-5,2.3571997852970833e-8,-0.0010655747063436035,3.724442359481839e-5,2.3426335194630528e-8,-0.0010650302250668731,3.701779702157739e-5,2.331547794071486e-8,-0.0010644199291991467,3.68949742785659e-5,2.3261297539301097e-8,-0.001063791223981958,3.6899545236002384e-5,2.327544760228617e-8,-0.0010632000453968727,3.7026820203446666e-5,2.335429289972638e-8,-0.0010626963599818942,3.7241111127013385e-5,2.3477789197827204e-8,-0.0010623095681190381,3.748268981872828e-5,2.3613519575245354e-8,-0.0010620391726174265,3.768289862153553e-5,2.3724946388273585e-8,-0.0010618540779868658,3.7782581455481364e-5,2.3781234371721873e-8,-0.0010617006609737272,3.7748061352030124e-5,2.3765573920194672e-8,-0.0010615170480434892,3.758012724746697e-5,2.367965267011593e-8,-0.0010612495768359004,3.731371428715724e-5,2.3543130785882002e-8,-0.0010608669746345562,3.700835235428079e-5,2.3388256328231037e-8,-0.001060368182069979,3.6731912216637085e-5,2.325105313533104e-8,-0.0010597813426304625,3.654245594481344e-5,2.316169727120985e-8,-0.0010591544075762823,3.647402066316346e-5,2.313718174627855e-8,-0.0010585410167500333,3.653074230958909e-5,2.317853751683003e-8,-0.001057986920975386,3.669012758790272e-5,2.327290785733631e-8,-0.0010575211579176061,3.691257472653399e-5,2.339881300069309e-8,-0.001057153350837812,3.715260399430297e-5,2.3532138314401993e-8,-0.0010568758374386459,3.736812754225494e-5,2.365093104713143e-8,-0.0010566681914793606,3.752620921432137e-5,2.3738273286109503e-8,-0.0010565020401735535,3.760563844652094e-5,2.378349597906288e-8,-0.0010563451015339039,3.759754719033252e-5,2.3782437194464704e-8,-0.0010561643423562313,3.750528822528541e-5,2.3737377447389552e-8,-0.001055928777775758,3.734426906295574e-5,2.365696343832137e-8,-0.0010556126783150875,3.714173971895337e-5,2.3556054900511646e-8,-0.0010551998123746519,3.693577609363618e-5,2.3455071168099988e-8,-0.0010546886977346502,3.677200754758798e-5,2.3378106802298378e-8,-0.001054097575413405,3.66964742503015e-5,2.33490503669857e-8,-0.001053466266416154,3.674410830929957e-5,2.338552532428398e-8,-0.0010528513171096396,3.6925144473778674e-5,2.3491902560416617e-8,-0.0010523125721679219,3.721530665965493e-5,2.365441113669717e-8,-0.0010518941136466624,3.7556866487537555e-5,2.384196911473466e-8,-0.001051607652331739,3.787365765176419e-5,2.4014260649323585e-8,-0.0010514271013640408,3.809514403546298e-5,2.4134458275138142e-8,-0.001051297410707953,3.8178799703989044e-5,2.4180962088243847e-8,-0.001051153003686843,3.812136015142763e-5,2.415318391268279e-8,-0.00105093733776516,3.795628189484318e-5,2.4069945427589834e-8,-0.001050616809646753,3.7741095264425834e-5,2.396246019827039e-8,-0.0010501863481547247,3.754067586859115e-5,2.3865199592522806e-8,-0.0010496673073456411,3.7411575394765774e-5,2.380750812194908e-8,-0.0010490998191358019,3.739064048823195e-5,2.380774834712807e-8,-0.0010485322021737509,3.748944550858809e-5,2.38707245777141e-8,-0.0010480100257824426,3.769477583367159e-5,2.398835336975793e-8,-0.0010475672083879396,3.797425178348991e-5,2.4142928600404912e-8,-0.0010472208647171518,3.8285082197056416e-5,2.4311824887822292e-8,-0.0010469704046910332,3.858335909600687e-5,2.4472287017073512e-8,-0.0010468001087383734,3.883168894481607e-5,2.4605240478689e-8,-0.0010466836675630368,3.900401645641016e-5,2.469763622155349e-8,-0.0010465891449321784,3.9087623690885925e-5,2.4743396088065535e-8,-0.00104648333056439,3.908308679776768e-5,2.4743374271449885e-8,-0.0010463351903678341,3.900321589613522e-5,2.4704818833201865e-8,-0.0010461187174899236,3.887169112109677e-5,2.4640634398441143e-8,-0.0010458157657489216,3.872153411276594e-5,2.456847676636226e-8,-0.0010454194198092652,3.8592904649491364e-5,2.4509434847279802e-8,-0.0010449379598351336,3.85290470767447e-5,2.4485769249212857e-8,-0.0010443983417922637,3.8568960460999586e-5,2.4517067123617403e-8,-0.0010438466104127784,3.8736263817727636e-5,2.4614598497805885e-8,-0.0010433416549984493,3.902636136480175e-5,2.477493404220497e-8,-0.0010429399987465788,3.9398027050649106e-5,2.4975871277955936e-8,-0.0010426746362297934,3.9777843434769186e-5,2.5178904654138547e-8,-0.0010425380922074639,4.0081503788804406e-5,2.5340291710930592e-8,-0.0010424814444555638,4.0244644241275436e-5,2.5427023133151833e-8,-0.0010424322947735387,4.024690202392131e-5,2.5429321392407133e-8,-0.0010423219582340482,4.01162830340403e-5,2.5362869290134385e-8,-0.0010421073140257824,3.9914219183457514e-5,2.526080398688154e-8,-0.0010417790504298643,3.9712303792083824e-5,2.5161204349048078e-8,-0.001041357514815806,3.957206053756882e-5,2.509620077309175e-8,-0.0010408820867983744,3.953305791576254e-5,2.5085701841939114e-8,-0.0010403994183290342,3.960922925354849e-5,2.5135719972456448e-8,-0.001039953473752625,3.979097235888994e-5,2.5239903766051643e-8,-0.0010395783534878653,4.005056096735985e-5,2.538278306056733e-8,-0.0010392939602767437,4.034918264408066e-5,2.5543680164653243e-8,-0.001039104389012981,4.0644480901831106e-5,2.5700644896490313e-8,-0.0010389988421567525,4.089757785496551e-5,2.5833941072896978e-8,-0.0010389545970551956,4.107865514075927e-5,2.5928726316951552e-8,-0.0010389412824983889,4.11705030871186e-5,2.5976731161695342e-8,-0.001038925600905446,4.116986580467381e-5,2.5976894786312716e-8,-0.0010388757116827172,4.108687415422475e-5,2.5935077860987764e-8,-0.0010387648487817887,4.094320887370908e-5,2.586310945168862e-8,-0.0010385741873378635,4.0769583233729096e-5,2.5777407288912374e-8,-0.0010382952268426782,4.0602784133407614e-5,2.569728649515853e-8,-0.0010379320091739295,4.04820837611387e-5,2.564292327050562e-8,-0.0010375031926033312,4.0444330838904017e-5,2.56327270085341e-8,-0.0010370431136598767,4.0516825192555824e-5,2.5679750881275533e-8,-0.0010365998252919112,4.07078727032145e-5,2.5787103029239512e-8,-0.0010362274507746704,4.0997023108730364e-5,2.59432896351184e-8,-0.0010359711779905647,4.133023718538513e-5,2.6120005918730713e-8,-0.0010358476721283505,4.1627586877103866e-5,2.6276137158887212e-8,-0.0010358308191826967,4.180745449119192e-5,2.6370052259346927e-8,-0.0010358552027499252,4.18193769451226e-5,2.6376375102413223e-8,-0.0010358403135057738,4.166678727036104e-5,2.6297719124715485e-8,-0.0010357228189093813,4.140456572009227e-5,2.6163449539399887e-8,-0.0010354780401623975,4.111391003936417e-5,2.6016503918615263e-8,-0.0010351214402610947,4.0871490524131414e-5,2.5897043112633257e-8,-0.0010346952781462417,4.0728626709958974e-5,2.5831362930703574e-8,-0.0010342513894169626,4.070496768499591e-5,2.582864079884688e-8,-0.0010338376130666347,4.0792468598692156e-5,2.588333975697396e-8,-0.001033489928572441,4.09637112677769e-5,2.5979990127741127e-8,-0.0010332292836012598,4.118057987218832e-5,2.6098059615421084e-8,-0.0010330613284611158,4.140165888760393e-5,2.6215931638488723e-8,-0.0010329777530100068,4.158819846524718e-5,2.631390656871405e-8,-0.0010329586810779521,4.170886241656704e-5,2.6376437158564403e-8,-0.001032975936317296,4.1743274993385874e-5,2.6393736765147437e-8,-0.0010329969885598913,4.168421213030391e-5,2.636277559384442e-8,-0.0010329892783965391,4.153821954893292e-5,2.62875676595281e-8,-0.0010329244588995863,4.132454750884092e-5,2.6178635261370543e-8,-0.001032782060381272,4.10726094101633e-5,2.6051674387741775e-8,-0.0010325522769319654,4.0818357819433007e-5,2.5925576579428118e-8,-0.0010322377709549141,4.0599882712942876e-5,2.5819988038191913e-8,-0.0010318544785740738,4.045240035953763e-5,2.575258468299546e-8,-0.001031431325710975,4.0402610592020545e-5,2.5736166079833738e-8,-0.0010310082903914864,4.04622844238969e-5,2.577556155474702e-8,-0.0010306315696239265,4.062155526853457e-5,2.586455506912295e-8,-0.0010303445107737654,4.084394736602622e-5,2.5983723580936618e-8,-0.00103017415051348,4.106712011714914e-5,2.6101034286724267e-8,-0.00103011645990442,4.121429379152592e-5,2.617762452180817e-8,-0.0010301283373702107,4.1218183604357294e-5,2.617978519094077e-8,-0.0010301360479824519,4.1049891214193474e-5,2.6093535091742128e-8,-0.0010300617418679534,4.073592787552085e-5,2.5933314593629573e-8,-0.0010298552834028627,4.0349707833675383e-5,2.5737635695545288e-8,-0.0010295123624857808,3.9981058901976845e-5,2.555325702866578e-8,-0.0010290699371210256,3.970266737753418e-5,2.541762182017323e-8,-0.0010285862799355606,3.95510226577242e-5,2.5348871652570656e-8,-0.001028119665030133,3.952567217658717e-5,2.5345604153804084e-8,-0.0010277146398166707,3.9599592103778894e-5,2.5392608827923747e-8,-0.0010273969445857086,3.9732019239784237e-5,2.54679029136312e-8,-0.0010271741439923543,3.987889635605635e-5,2.554837330653049e-8,-0.0010270387420002831,3.999979218338487e-5,2.5613362144150908e-8,-0.0010269717730998133,4.006209216467498e-5,2.564665439659544e-8,-0.0010269462335600545,4.004361181148552e-5,2.563758062373979e-8,-0.001026930475247916,3.993429582593155e-5,2.5581696150718296e-8,-0.0010268917955752411,3.9737131056284514e-5,2.54811632465487e-8,-0.0010268003254188763,3.946803547779058e-5,2.5344696049297998e-8,-0.001026633045285693,3.9154302349015926e-5,2.51867793373167e-8,-0.001026377413673644,3.883136780108241e-5,2.502596843310329e-8,-0.0010260339595217747,3.8538067531633994e-5,2.4882331374804033e-8,-0.00102561729797183,3.8310807330376756e-5,2.477430480252826e-8,-0.0010251551932449294,3.8177261675103885e-5,2.471538175976041e-8,-0.001024685487708184,3.8150384280356484e-5,2.4711128828705612e-8,-0.0010242508292970316,3.822352571453758e-5,2.475696413222644e-8,-0.0010238910923221203,3.836763523516221e-5,2.4837113045173785e-8,-0.0010236336767047106,3.853222377882937e-5,2.492543131105467e-8,-0.0010234830537858264,3.865239008611646e-5,2.49891058187856e-8,-0.0010234129983969168,3.8663590948988006e-5,2.4996031285257513e-8,-0.0010233670245726736,3.852273512816904e-5,2.492524814844594e-8,-0.001023271959887443,3.822833359285693e-5,2.4776942964655382e-8,-0.0010230632432314934,3.782769524653137e-5,2.4575998844550145e-8,-0.0010227107525744934,3.740279961889332e-5,2.436473371991324e-8,-0.0010222302402959167,3.703969137491942e-5,2.418716232193019e-8,-0.0010216740030515826,3.6798124988745376e-5,2.4073362152007457e-8,-0.001021108290579188,3.669683896443461e-5,2.4031974626159863e-8,-0.0010205912572348655,3.6717350983459955e-5,2.4052398420585333e-8,-0.0010201604372997207,3.681830406381751e-5,2.411249122180296e-8,-0.0010198303307530497,3.6950727918991715e-5,2.418666800590093e-8,-0.0010195960756659162,3.706898533184759e-5,2.4251597017513103e-8,-0.001019439056359185,3.713670445797552e-5,2.4289132019925126e-8,-0.001019332059571601,3.7129221763336125e-5,2.428734485125245e-8,-0.0010192433493335681,3.70343141516297e-5,2.4240686043212892e-8,-0.0010191400194511332,3.685229866278754e-5,2.4149908608415946e-8,-0.0010189911883879065,3.659580376531763e-5,2.402192783224623e-8,-0.0010187714343872375,3.628895436908966e-5,2.3869435845986977e-8,-0.0010184645132939021,3.596533710163379e-5,2.3709873676371996e-8,-0.001018066855839815,3.566412672527142e-5,2.3563393719128077e-8,-0.0010175898667280023,3.542425031334137e-5,2.3449761052332165e-8,-0.0010170599390659412,3.5277162817117435e-5,2.3384558945173422e-8,-0.001016515394012989,3.523949770501541e-5,2.3375440811865953e-8,-0.0010160002224420199,3.530738001007149e-5,2.3419397704779323e-8,-0.0010155553831384591,3.545419198619564e-5,2.3501928264935122e-8,-0.001015209142874551,3.563302488615149e-5,2.3598624983890202e-8,-0.0010149684067089226,3.5784346527384886e-5,2.3679292211144022e-8,-0.0010148133891465872,3.584860072421633e-5,2.3714344288769612e-8,-0.0010146982630651578,3.5782055660811007E-05,2.3682629377636572e-8,-0.0010145599654888093,3.557207326886522e-5,2.3578848270284908e-8,-0.0010143351722388912,3.5245823371830506e-5,2.3417678410022003e-8,-0.0010139811800521554,3.486632047924191e-5,2.3231576085062046e-8,-0.001013492050599654,3.4513974439642034e-5,2.3061330561170134e-8,-0.0010129013184621315,3.4259974954934804e-5,2.2942555475658693e-8,-0.0010122691652813616,3.4143842428325755e-5,2.289440024171102e-8,-0.001011660964001645,3.416527319904436e-5,2.291564249859294e-8,-0.0010111280235503381,3.429134318278579e-5,2.2988645742694414e-8,-0.0010106976785511353,3.447205752042876e-5,2.3087503664077148e-8,-0.0010103730798261847,3.465571175252602e-5,2.3185940039964153e-8,-0.0010101387428839818,3.479919616418346e-5,2.3262469964226124e-8,-0.0010099675794849883,3.487271276682596e-5,2.3302608900919384e-8,-0.0010098269209837737,3.4860699206272e-5,2.3299134968487392e-8,-0.0010096829020666328,3.476102080226269e-5,2.3251535621906485e-8,-0.0010095036482449427,3.4583741581220033e-5,2.316533851284319e-8,-0.00100926202814437,3.434990375649573e-5,2.3051517011118484e-8,-0.0010089385902406682,3.409004467856952e-5,2.2925769286763956e-8,-0.0010085248696185096,3.384168830235557e-5,2.2807227493595864e-8,-0.0010080265806791115,3.3644931550302674e-5,2.2716140262856692e-8,-0.0010074654828322916,3.353571640167953e-5,2.26703687608163e-8,-0.0010068782778092742,3.353743271134205e-5,2.268110345686206e-8,-0.0010063112194841138,3.36528689313314e-5,2.274888894220196e-8,-0.0010058104572475534,3.3859569732431347e-5,2.286150383963712e-8,-0.0010054101212326877,3.411145176628525e-5,2.2995062591133473e-8,-0.0010051217418514823,3.434769733360527e-5,2.3118734876600543e-8,-0.0010049287823506632,3.450726125747007e-5,2.3202145373587556e-8,-0.0010047886815621875,3.454511779650876e-5,2.3223469127649264e-8,-0.001004642523791172,3.444551550645358e-5,2.317587375654054e-8,-0.0010044301777682276,3.4228082912857005e-5,2.307029016040388e-8,-0.0010041070053985303,3.394428660482434e-5,2.293333606477324e-8,-0.0010036572007801948,3.366424530591849e-5,2.280046957873214e-8,-0.0010030989670374397,3.3457142010512746e-5,2.2706067870780697e-8,-0.001002478977520436,3.3371580578821594e-5,2.2673661179006083e-8,-0.0010018578283530568,3.342312200493025e-5,2.2709939398912565e-8,-0.0010012922882052613,3.359334378293894e-5,2.2804621910948108e-8,-0.0010008212275209021,3.3839363188058443e-5,2.2935524319804295e-8,-0.0010004594328713067,3.410840614322706e-5,2.3076001992787873e-8,-0.0010001992187818722,3.4351274842747164e-5,2.320166356575127e-8,-0.0010000167281470184,3.453101661995363e-5,2.3294552412610813e-8,-9.998793317252265e-4,3.462633409658824e-5,2.3344654270450874e-8,-9.997518470452732e-4,3.4631318428131296e-5,2.3349607127017085e-8,-9.996009199043014e-4,3.455348552109253e-5,2.3313647478180466e-8,-9.9939795849614e-4,3.44114906802232e-5,2.3246470434010358e-8,-9.99121407187035e-4,3.4233040893128126e-5,2.3162210737379513e-8,-9.987590833800812e-4,3.405276743515656e-5,2.3078368950141786e-8,-9.983108679056524e-4,3.390926822320403e-5,2.3014265042933495e-8,-9.97791306534957e-4,3.384032770146051e-5,2.2988554306834156e-8,-9.972307991430098e-4,3.3875718713881964e-5,2.3015580148524872e-8,-9.966733564831009e-4,3.4028221102158114e-5,2.310094837163757e-8,-9.961691020362934e-4,3.428546408696686e-5,2.3237638825588425e-8,-9.957615865134595e-4,3.46069401339788e-5,2.3404762682669036e-8,-9.954733186501152e-4,3.493021100327155e-5,2.357086532821176e-8,-9.952956330342465e-4,3.5186762200118035e-5,2.370192787102682e-8,-9.95188477807128e-4,3.532262383638006e-5,2.377162507367407e-8,-9.950913872963697e-4,3.5315508210565336e-5,2.376975873492727e-8,-9.94941500795456e-4,3.518154860532421e-5,2.3705430116577784e-8,-9.946916452042978e-4,3.496972133573339e-5,2.3603993034892922e-8,-9.943224955306555e-4,3.4747072949003844e-5,2.3499389344168517e-8,-9.938459958236127e-4,3.458033160070616e-5,2.3424766870853507e-8,-9.933002965673123e-4,3.451936283405707e-5,2.3404222600228282e-8,-9.92738532106868e-4,3.4586492210376424e-5,2.34477123751599e-8,-9.922149570488884e-4,3.47737697346077e-5,2.35500702634693e-8,-9.917723365169562e-4,3.504802300243e-5,2.369389615669735e-8,-9.91433801696836e-4,3.536137626092322e-5,2.385500900287136e-8,-9.912006576782077e-4,3.566352992413874e-5,2.4008564476421496e-8,-9.910555099664157e-4,3.591217265700787e-5,2.4134077453991628e-8,-9.909685467225334e-4,3.607935109184319e-5,2.4218367354514807e-8,-9.90904493799253e-4,3.615353059249766e-5,2.4256393376223053e-8,-9.90828480212809e-4,3.613845925610944e-5,2.4250587005171246e-8,-9.90710154736621e-4,3.605041340979941e-5,2.420946428455628e-8,-9.905262925749175e-4,3.5915102415850375e-5,2.4146106990416895e-8,-9.902625674466235e-4,3.576480559520487e-5,2.407673810359449e-8,-9.899151595612757e-4,3.563558997580312e-5,2.4019285840091026e-8,-9.894925239248037e-4,3.556393259086711e-5,2.399161892926978e-8,-9.890169789091286e-4,3.558183032668142e-5,2.400906596769323e-8,-9.885248529442735e-4,3.570977187754583e-5,2.4080982598891237e-8,-9.880631022206629e-4,3.594816942793109e-5,2.4206693186517794e-8,-9.876803749587692e-4,3.6270078383065484e-5,2.4372152484305683e-8,-9.874125517596248e-4,3.662032117452578e-5,2.4549731590826265e-8,-9.872671120179847e-4,3.6926008414473374e-5,2.470348797116585e-8,-9.872146960178598e-4,3.7118461255131244e-5,2.4799926090503432e-8,-9.871951531337715e-4,3.715829143129886e-5,2.482028574407889e-8,-9.871375620403313e-4,3.705077677427379e-5,2.476806781996489e-8,-9.869847448893906e-4,3.684329236067619e-5,2.466765451933042e-8,-9.867105450566658e-4,3.660725536650436e-5,2.4555140657066402e-8,-9.86323904247596e-4,3.641469724773145e-5,2.4466432455541804e-8,-9.858615016007492e-4,3.631928880259697e-5,2.442766534764061e-8,-9.85374633250025e-4,3.634645237112784e-5,2.4450388419430107e-8,-9.849156337300748e-4,3.649235218034662e-5,2.453139904021426e-8,-9.845270231932197e-4,3.672923823051199e-5,2.465582036281864e-8,-9.842346708626541e-4,3.7014300862134964e-5,2.4801822245291615e-8,-9.840451716688692e-4,3.729969081586018e-5,2.4945700886248175e-8,-9.839470708571595e-4,3.754181375466232e-5,2.5066377411016933e-8,-9.839150653915634e-4,3.770836043790428e-5,2.514864253568232e-8,-9.83915845150665e-4,3.778218739727299e-5,2.5184832131647895e-8,-9.839141440703577e-4,3.776204586365129e-5,2.5175023720621267e-8,-9.838778946578378e-4,3.7660825559131726e-5,2.5126110722890017e-8,-9.837819111355383e-4,3.750231363693385e-5,2.5050212268447694e-8,-9.83610120160167e-4,3.731747931219535e-5,2.4962853060990782e-8,-9.833567922937184e-4,3.714089212336408e-5,2.4881163070795294e-8,-9.830272886633775e-4,3.700727412351498e-5,2.4822096717103307e-8,-9.826385911278707e-4,3.69477424015823e-5,2.4800505830703303e-8,-9.82219396284537e-4,3.698509836147771e-5,2.4826830050034716e-8,-9.818087670899545e-4,3.712771767756578e-5,2.4904243886600084e-8,-9.814515702841564e-4,3.7362648046258683e-5,2.5025539421476875e-8,-9.811889802018954e-4,3.7650571338024e-5,2.5170939795615703e-8,-9.810442154511204e-4,3.792755371116602e-5,2.5309102919604293e-8,-9.810080333830023e-4,3.811864493199592e-5,2.5403711739960307e-8,-9.81033207624282e-4,3.8163102204115404e-5,2.5425633123846726e-8,-9.810462359989666e-4,3.804100654306584e-5,2.5365828059548833e-8,-9.809743731534347e-4,3.778505688611488e-5,2.524112956896296e-8,-9.807739041156364e-4,3.746843502401319e-5,2.508825210734586e-8,-9.804438663459916e-4,3.717577379911337e-5,2.4949313572355698e-8,-9.800204118408863e-4,3.697428727925494e-5,2.485733884169189e-8,-9.795593431768212e-4,3.6897909348930136e-5,2.4828320900585492e-8,-9.791176972697106e-4,3.694613487266822e-5,2.4860822858248447e-8,-9.78740821256568e-4,3.709208601691692e-5,2.4940346749398108e-8,-9.784561041063255e-4,3.7293678129001164e-5,2.5045249521682385e-8,-9.782718489133458e-4,3.7504071244625615e-5,2.5152145120602866e-8,-9.781792758595254e-4,3.7679941882763186e-5,2.5239992535436655e-8,-9.781562333794412e-4,3.778745647138105e-5,2.5292850462091087e-8,-9.781718882523143e-4,3.780606999115621e-5,2.530147602469855e-8,-9.781918620216884e-4,3.773013883351006e-5,2.5263886480747403e-8,-9.781832167389938e-4,3.7568458080856365e-5,2.518501010675023e-8,-9.78118742072559e-4,3.7342042791065954e-5,2.507558218052921e-8,-9.779801236071979e-4,3.708061130398327e-5,2.4950452157285786e-8,-9.777597868775496e-4,3.681839353569755e-5,2.4826535622686178e-8,-9.774615375963498e-4,3.6589861622145944e-5,2.47206704952449e-8,-9.771002958644923e-4,3.642562803302159e-5,2.464752335844287e-8,-9.767011177636903e-4,3.6348412775412787e-5,2.461757103592887e-8,-9.762974059618317e-4,3.636884684333104e-5,2.463512177599872e-8,-9.759277035517238e-4,3.648101405343806e-5,2.4696356361916733e-8,-9.75629951246629e-4,3.665840901177218e-5,2.4787660934629145e-8,-9.754322748465593e-4,3.685252659570957e-5,2.4885193908702775e-8,-9.75340987613693e-4,3.699788916582287e-5,2.495739454375517e-8,-9.753299684090048e-4,3.702722840929396e-5,2.4972198717358794e-8,-9.753395265608093e-4,3.689599167738356e-5,2.490869287630752e-8,-9.752920720559031e-4,3.6606102877796636e-5,2.4768523544825133e-8,-9.751219280535475e-4,3.62127126348543e-5,2.457919604533296e-8,-9.748035378869218e-4,3.580501071706199e-5,2.4384716721739845e-8,-9.743604317943561e-4,3.5470563709328834E-05,2.4228018734390125e-8,-9.738510761405169e-4,3.526450154078282e-5,2.4135686744524703e-8,-9.733435765106256e-4,3.519840608946445e-5,2.411249078547065e-8,-9.728943634004211e-4,3.5247780682422384e-5,2.4145284649450995e-8,-9.725377477092212e-4,3.536768335651393e-5,2.4211049479849402e-8,-9.722848444423038e-4,3.550754893515966e-5,2.428448154165182e-8,-9.72127563371285e-4,3.562150854076412e-5,2.4343174928178926e-8,-9.720441769973178e-4,3.567417242302132e-5,2.437035998268252e-8,-9.720046367152485e-4,3.56432887461309e-5,2.4355963585866076e-8,-9.719752390974952e-4,3.552063301357858e-5,2.4296779131561367e-8,-9.719228596586245e-4,3.531171554305102e-5,2.4196141313711178e-8,-9.718188423673552e-4,3.503437202507118e-5,2.406317927089353e-8,-9.716423998941957e-4,3.471621408885309e-5,2.3911605715671775e-8,-9.713832408989576e-4,3.439096166140005e-5,2.3757978780585042e-8,-9.710430366130846e-4,3.409389102193965e-5,2.361948593481193e-8,-9.70635446133547e-4,3.3856923351839665e-5,2.3511491505683215e-8,-9.701846919981149e-4,3.370390574741038e-5,2.3445165212560717e-8,-9.697228228770885e-4,3.364647614797688e-5,2.342546325722505e-8,-9.692857745624962e-4,3.368081166293388e-5,2.3449670440655165e-8,-9.689081926968012e-4,3.378557365972413e-5,2.3506650641077334e-8,-9.686168099705691e-4,3.392170644199995e-5,2.357703705485365e-8,-9.684224658620934e-4,3.4035563171401795e-5,2.3634937383161203e-8,-9.68312113340623e-4,3.406746818840269e-5,2.3652061632635778e-8,-9.682443258694862e-4,3.396706662113197e-5,2.3604922859051918e-8,-9.681538286062369e-4,3.371329935534211e-5,2.348419799835916e-8,-9.679692761326831e-4,3.333058404686902e-5,2.330235800983941e-8,-9.676407409410866e-4,3.2888734991917684e-5,2.3093584924486144e-8,-9.671629996624705e-4,3.2480309923178234e-5,2.2902797651000153e-8,-9.665791080763037e-4,3.2184835146996645e-5,2.276825671546724e-8,-9.659613244934983e-4,3.204046428493923e-5,2.270778086296016e-8,-9.653822640887052e-4,3.203767611505963e-5,2.2715798323767404e-8,-9.648929276683705e-4,3.213287335072607e-5,2.2770213229558723e-8,-9.645149837962753e-4,3.226903530996189e-5,2.2842729866168465e-8,-9.642442355567376e-4,3.239247708087407e-5,2.2907171397624284e-8,-9.640587530216115e-4,3.24620993246358e-5,2.2943963859402317e-8,-9.639270001539048e-4,3.245248074250296e-5,2.2941464499432092e-8,-9.638140578411377e-4,3.235353569481727e-5,2.2895550510650823e-8,-9.6368595444148e-4,3.2168912493880215e-5,2.28086319018673e-8,-9.635128997527551e-4,3.191410788621952e-5,2.2688634455621677e-8,-9.632720633656184e-4,3.161432337084309e-5,2.2547969983926774e-8,-9.629500908473864e-4,3.1301728190777524e-5,2.2402276055104036e-8,-9.625451789726969e-4,3.101176374193039e-5,2.226867575507521e-8,-9.620681774777247e-4,3.077836455776551e-5,2.216345368450055e-8,-9.615420329416084e-4,3.0628500411465295e-5,2.209935540113096e-8,-9.609991467969121e-4,3.057690888665009e-5,2.2082994490797295e-8,-9.604766797714861e-4,3.062205911343596e-5,2.2112942498469528e-8,-9.600102747775835e-4,3.074434601472043e-5,2.2179018433807102e-8,-9.596270214263777e-4,3.090724439259373e-5,2.2263089974248304e-8,-9.593386562986945e-4,3.1061771792007744e-5,2.2341454918293274e-8,-9.591361349101454e-4,3.1154428547892235e-5,2.2388764734143828e-8,-9.589871735461636e-4,3.113854434292479e-5,2.2383389507898628e-8,-9.588390052667267e-4,3.0987899671081076e-5,2.23137088373979e-8,-9.586285812047179e-4,3.0709291166627064e-5,2.2183841699676357e-8,-9.583004549904042e-4,3.034807980718291e-5,2.20160808943815e-8,-9.578277490469907e-4,2.9980170319710332e-5,2.1846942684937246e-8,-9.572262091683876e-4,2.968886340238766e-5,2.1716059377740093e-8,-9.565515092747311e-4,2.953507814969651e-5,2.1651963566920276e-8,-9.558790138711099e-4,2.9536365304518656e-5,2.166217296734255e-8,-9.552767930981623e-4,2.9665583334704913e-5,2.173278583758932e-8,-9.547860467171304e-4,2.9867061406297094e-5,2.1836474927304304e-8,-9.544158266696612e-4,3.0078540975903094e-5,2.1943173400982044e-8,-9.541492278461368e-4,3.024805141205629e-5,2.20281932369835e-8,-9.539540335951516e-4,3.034185193150517e-5,2.2075920768301698e-8,-9.537924048895253e-4,3.0345247140230987e-5,2.208000983233228e-8,-9.536275311546465e-4,3.025982229495277e-5,2.204185499562896e-8,-9.534275077413425e-4,3.0099841725022342e-5,2.1968736705240954e-8,-9.531675967845711e-4,2.9889041402266785e-5,2.187225621318765e-8,-9.528318988517542e-4,2.9657867759765324e-5,2.1767059789256722e-8,-9.524149404686213e-4,2.9440645440285744e-5,2.1669541941369942e-8,-9.519231274636026e-4,2.9272003957849185e-5,2.1596154336982085e-8,-9.513754532627277e-4,2.9182105324352853e-5,2.156109047838405e-8,-9.508024505321581e-4,2.9190878090889825e-5,2.1573483188737836e-8,-9.502424663511357e-4,2.9302351813132366e-5,2.1634700321363326e-8,-9.49735030418587e-4,2.9500882232911995e-5,2.1736638845838566e-8,-9.493122042363756e-4,2.975120128025421e-5,2.1861931766478845e-8,-9.489899450602254e-4,3.0003488125871785e-5,2.19865714491652e-8,-9.487620601966599e-4,3.020311750055373e-5,2.2084695992892515e-8,-9.485988957950232e-4,3.030316317880326e-5,2.2134553407674564e-8,-9.484518091654521e-4,3.0276810472256283e-5,2.2124270364054122e-8,-9.482632222856166e-4,3.0126538386465414e-5,2.205597301242971e-8,-9.479807554179524e-4,2.9887047408005317e-5,2.194689841841948e-8,-9.475724436270446e-4,2.961960692398054e-5,2.1826477535904775e-8,-9.470384606933393e-4,2.9397309036501518e-5,2.1729216202936675e-8,-9.464140919087501e-4,2.9284117233135745e-5,2.168479093152599e-8,-9.457607135250013e-4,2.931474722874649e-5,2.1708699518209903e-8,-9.451468703045619e-4,2.948415363474355e-5,2.179756824154432e-8,-9.446272642077682e-4,2.975166154093429e-5,2.19313942223417e-8,-9.442287741878977e-4,3.005706659105484e-5,2.2081348790756766e-8,-9.439480612138644e-4,3.0340177706433605e-5,2.2219059244211306e-8,-9.437587330039747e-4,3.05555047742844e-5,2.232346391891961e-8,-9.436224123828684e-4,3.0678595514250895e-5,2.2383640253534496e-8,-9.434987028230832e-4,3.0705355294702186e-5,2.2398300631400305e-8,-9.433518093842979e-4,3.0647746413302585e-5,2.2373619930447855e-8,-9.431539596951896e-4,3.052879162175852e-5,2.2320812424416252e-8,-9.42886827941632e-4,3.0378337056025078e-5,2.2254139731918605e-8,-9.425421763466582e-4,3.0229750427711546e-5,2.2189391361884014e-8,-9.421224563862095e-4,3.011700715597695e-5,2.2142531937943215e-8,-9.416414774327706e-4,3.0071346469157127e-5,2.212810620989906e-8,-9.411245660268458e-4,3.0116816661240038e-5,2.215710354642401e-8,-9.406070615964384e-4,3.026467552618603e-5,2.2234316233793085e-8,-9.40129838692488e-4,3.050774422637882e-5,2.2355753528190237e-8,-9.397312194328286e-4,3.0817081031483444e-5,2.2507225708871276e-8,-9.394363651629871e-4,3.1143952690525606e-5,2.266544635054926e-8,-9.39247469629382e-4,3.14289902634384e-5,2.2802467253505157e-8,-9.391392811567771e-4,3.161734154321736e-5,2.28928419535772e-8,-9.390631834203985e-4,3.1675072753920046e-5,2.292128485717643e-8,-9.389595011470184e-4,3.160054917881444e-5,2.2887892684632222e-8,-9.38774017044829e-4,3.142629938669554e-5,2.2808821851867562E-08,-9.384731170441491e-4,3.121073248180759e-5,2.2712144428496986e-8,-9.380529653295315e-4,3.102263562512172e-5,2.2630329259409035e-8,-9.37540421932073e-4,3.0923179639618185e-5,2.2591680785415607e-8,-9.369857583175107e-4,3.095034383443137e-5,2.261312414301245e-8,-9.364492385837592e-4,3.1109898640259824e-5,2.269626110812058e-8,-9.359853619300495e-4,3.137546064701527e-5,2.2827755619925506e-8,-9.356295240548179e-4,3.16974681512932e-5,2.2983821119346855e-8,-9.353911527823038e-4,3.2017802198202046e-5,2.313717510433112e-8,-9.35254811672147e-4,3.228479107023496e-5,2.326399499414142e-8,-9.351875597689146e-4,3.2463820357644084e-5,2.3348709349042408e-8,-9.351488611202442e-4,3.2541398176328435e-5,2.338570291153537e-8,-9.350994833205346e-4,3.25234996917194e-5,2.3378386345866902e-8,-9.350074661012362e-4,3.2430678404906835e-5,2.333682380228043e-8,-9.348510276335349e-4,3.229243028857118e-5,2.3275080016553152e-8,-9.346193314669444e-4,3.214231620297721e-5,2.3208959235950077e-8,-9.34312262797197e-4,3.2014221186669155e-5,2.3154273367792384e-8,-9.339400414025882e-4,3.193933185076618e-5,2.3125418905859264e-8,-9.33522913696338e-4,3.194305448645945e-5,2.3133910756853474e-8,-9.330904862493931e-4,3.204115275895757e-5,2.3186578394138074e-8,-9.326796244283101e-4,3.223492294630654e-5,2.3283386135426127e-8,-9.323295184334296e-4,3.250635238251842e-5,2.3415326287966734e-8,-9.320730236673442e-4,3.281574833663746e-5,2.356349553000111e-8,-9.319252711366798e-4,3.310543782936856e-5,2.3700943505328696e-8,-9.318736216132645e-4,3.331219177128394e-5,2.3798471243414568e-8,-9.318752640651988e-4,3.338676318697942e-5,2.3833655432768257e-8,-9.31866963948998e-4,3.331301147491189e-5,2.3799668733206908e-8,-9.317849968972861e-4,3.311655040946259e-5,2.3709231637614105e-8,-9.315865645433877e-4,3.2857438239323513e-5,2.3591073380549135e-8,-9.312628626536916e-4,3.2610345594110236e-5,2.3480457903216238e-8,-9.308393005661033e-4,3.24417200448329e-5,2.3408301483171562e-8,-9.303651936824847e-4,3.239281090859414e-5,2.339318150193606e-8,-9.298986864069065e-4,3.24725338782039e-5,2.343818307136948e-8,-9.29492219127464e-4,3.265959531263871e-5,2.3532245846076462e-8,-9.291818021359038e-4,3.2911055999915944e-5,2.3654527540462002e-8,-9.289814804693926e-4,3.317408157338681e-5,2.3780107907133812e-8,-9.28883102878134e-4,3.339795710135585e-5,2.3885603751994195e-8,-9.288606081706539e-4,3.3543937048918637e-5,2.3953598676844333e-8,-9.288772589118661e-4,3.3591181371482934e-5,2.3975172255395918e-8,-9.288937419745458e-4,3.353814016920971e-5,2.395033272948154e-8,-9.288751893623011e-4,3.340004673214571e-5,2.3886721538417358e-8,-9.287959268978146e-4,3.320403594462646e-5,2.3797303763589087e-8,-9.286417064222096e-4,3.298355112980294e-5,2.369778683496962e-8,-9.284099392258089e-4,3.277328729013441e-5,2.3604298515993387e-8,-9.281087947963245e-4,3.260518664063019e-5,2.3531530406527254e-8,-9.277558922978596e-4,3.25053020042501e-5,2.3491259018736307e-8,-9.27376881127838e-4,3.2490978444289704E-05,2.349102519309791e-8,-9.270036743482587e-4,3.2567791005183e-5,2.3532761106056747e-8,-9.266715169341242e-4,3.2726055504754945e-5,2.361130945511728e-8,-9.264137151151058e-4,3.293770276831043e-5,2.3713172494102367e-8,-9.262532777753961e-4,3.315574465668824e-5,2.3816439311101114e-8,-9.261924253535585e-4,3.331972423030237e-5,2.389335984974595e-8,-9.262040127993932e-4,3.336992217268715e-5,2.3916815814377182e-8,-9.262317722939682e-4,3.326872605091641e-5,2.3870037451283865e-8,-9.26204733848964e-4,3.3020183443077696e-5,2.3755545743126395e-8,-9.260627882338456e-4,3.267485106444268e-5,2.3597373291928313e-8,-9.257806549268176e-4,3.2313603001887904e-5,2.343349628055146e-8,-9.253766285983505e-4,3.201794497161325e-5,2.3301884783205278e-8,-9.249026226141552e-4,3.1842977355389055e-5,2.3227766419155888e-8,-9.244236141866019e-4,3.1804942562237756e-5,2.321783898637054e-8,-9.239978305283136e-4,3.188429203691447e-5,2.3261932645223352e-8,-9.236643245273065e-4,3.203781785436325e-5,2.3339012154274225e-8,-9.234386977616611e-4,3.221281488408803e-5,2.3424069805742805e-8,-9.233147289125141e-4,3.235906739356297e-5,2.3493825767808208e-8,-9.232692914346888e-4,3.243722377144107e-5,2.3530540271546322e-8,-9.232686902572398e-4,3.242362191865267e-5,2.3524031114582375e-8,-9.232753070314963e-4,3.231198064538372e-5,2.347219924760264e-8,-9.232537561991422e-4,3.211234823824068e-5,2.3380345332508162e-8,-9.231758558037119e-4,3.1847866001873865e-5,2.3259584838009844e-8,-9.230239270817444e-4,3.155012781518374e-5,2.3124710835478002e-8,-9.227922362546493e-4,3.1253999746506684e-5,2.299185234886264e-8,-9.224867387452752e-4,3.0992724464646724e-5,2.2876250708263638e-8,-9.221236055597706e-4,3.079385597163362e-5,2.27903811393233e-8,-9.217270560533948e-4,3.067609570471294e-5,2.2742468990955336e-8,-9.213267796337176e-4,3.064680318714811e-5,2.2735346156833847e-8,-9.20954912564315e-4,3.0699934328855683e-5,2.2765581416612138e-8,-9.206421478418023e-4,3.08143607477365e-5,2.2822873109824424e-8,-9.204122660196305e-4,3.095320827010874e-5,2.2889943688910157e-8,-9.202747886912586e-4,3.106597764009101e-5,2.2943650815208422e-8,-9.20216936947342e-4,3.1095988189358365e-5,2.2958395502173376e-8,-9.201985234595585e-4,3.099497926622176e-5,2.2912665548665453e-8,-9.201557642877907e-4,3.074296687634402e-5,2.2797948208220792e-8,-9.200186966514138e-4,3.0364621739963786e-5,2.2626137511840795e-8,-9.197385636888824e-4,2.9929213138156976e-5,2.242949417390068e-8,-9.193108394574188e-4,2.9527970187913423e-5,2.225019669376877e-8,-9.187785340875029e-4,2.9238845703639758e-5,2.2123997801802605e-8,-9.182134225021054e-4,2.9098989670442113e-5,2.2067447146301895e-8,-9.176879830111815e-4,2.9098589555165532e-5,2.2075132170368005e-8,-9.17253784391652e-4,2.9193712335522423e-5,2.212586268610836e-8,-9.169332050515159e-4,2.932621852597383e-5,2.2192168520093514e-8,-9.167219505579218e-4,2.944065181810668e-5,2.224829932694638e-8,-9.165966656263807e-4,2.949439756587482e-5,2.2274934020959177e-8,-9.165233093736817e-4,2.9461840863147958e-5,2.226094758259148e-8,-9.164642868928159e-4,2.9334685108527463e-5,2.220331133229603e-8,-9.163839913645998e-4,2.9120232422900573e-5,2.2106066579955823e-8,-9.162530317647461e-4,2.883851348103519e-5,2.1978863978225656e-8,-9.160513185398048e-4,2.8518597058158136e-5,2.1835244906513958e-8,-9.15769988624412e-4,2.8194298243653313e-5,2.1690730238489156e-8,-9.154120664548803e-4,2.7899535170271005e-5,2.1560765750180442e-8,-9.149917488095805e-4,2.7663738874698725e-5,2.1458654195702416e-8,-9.145323801553542e-4,2.7507851429598272e-5,2.1393709233720136e-8,-9.140634112563936e-4,2.744128142921948e-5,2.136983448703116e-8,-9.136166435043148e-4,2.745994641856036e-5,2.1384644526880326e-8,-9.13221944692427e-4,2.754549808736449e-5,2.1429208794373388e-8,-9.129024910120398e-4,2.7665888640565562e-5,2.148847949703196e-8,-9.126694819496386e-4,2.7777706431344518e-5,2.154253176218981e-8,-9.125166098566058e-4,2.7831321553144563e-5,2.156899691685832e-8,-9.124157000485842e-4,2.7780165658292776e-5,2.1547232079309533e-8,-9.123165267733067e-4,2.759442992476146e-5,2.1464373542698462e-8,-9.121548623777333e-4,2.7276427140508372e-5,2.1322119221499095e-8,-9.118711019526034e-4,2.6870144591949852e-5,2.114094313683426e-8,-9.114350063079968e-4,2.6455006129514234e-5,2.0957209029743784e-8,-9.108634742462995e-4,2.6120092101343845e-5,2.081139801841706e-8,-9.102178200814272e-4,2.5929424367736944e-5,2.0732255869559906e-8,-9.095797117160946e-4,2.5898353086471822e-5,2.0726067368364644e-8,-9.090202329768966e-4,2.5993933266429337e-5,2.077699539719869e-8,-9.085793014011967e-4,2.615479802733407e-5,2.0856387709915296e-8,-9.082619863653898e-4,2.6315579246745158e-5,2.09341239475786e-8,-9.080467696016204e-4,2.6424152758084614e-5,2.098656643738969e-8,-9.078974977973308e-4,2.6448875948786817e-5,2.0999792057647626e-8,-9.077736775849799e-4,2.6378608518081082e-5,2.0969414117202983e-8,-9.076374388060467e-4,2.621931034153885e-5,2.089880711320176e-8,-9.074576563940846e-4,2.598981028468818e-5,2.0797007293920687e-8,-9.072123555606045e-4,2.5717763310892864e-5,2.067680801973962e-8,-9.068901702931364e-4,2.543581375595846e-5,2.055305287961445e-8,-9.064910919600087e-4,2.51777245706118e-5,2.044096225969404e-8,-9.060264239903059e-4,2.497429600456872e-5,2.0354350101638346e-8,-9.055176396903595e-4,2.4849147035049042e-5,2.0303725663131417e-8,-9.049938331462582e-4,2.48148520431951e-5,2.0294513960783498e-8,-9.044877759473634e-4,2.487013629166907e-5,2.0325761996341625e-8,-9.040309431041147e-4,2.4998716181532725e-5,2.0389648367651206e-8,-9.036480496186143e-4,2.5170219741609872e-5,2.0472012539751645e-8,-9.033517513971097e-4,2.534346091236584e-5,2.0553994872596846e-8,-9.031382345469437e-4,2.5472113323665762e-5,2.0614734900078757e-8,-9.029845516590252e-4,2.5512741628428336e-5,2.0635033273204925e-8,-9.028490149929373e-4,2.5434954827073677e-5,2.0601836238167363e-8,-9.026764902106563e-4,2.5232408447057923e-5,2.0513003051675774e-8,-9.02410173775587e-4,2.4931333305205534e-5,2.03809375747986e-8,-9.020092509206674e-4,2.459113424824214e-5,2.0232703367730958e-8,-9.014671775780341e-4,2.4291763948560345e-5,2.0104263036672917e-8,-9.008206650653747e-4,2.4108119510329703e-5,2.0028949316011377e-8,-9.001407652157997e-4,2.40815816794724e-5,2.002473027343289e-8,-8.995076036470077e-4,2.4204454860463047e-5,2.0087372224985797e-8,-8.989819618378563e-4,2.442640209534498e-5,2.0193550978397385e-8,-8.985886426926948e-4,2.4677367529835956e-5,2.0311351442965695e-8,-8.983168875609791e-4,2.489249041554455e-5,2.0411570672683616e-8,-8.981321994515865e-4,2.5027742305275945e-5,2.0474734817052442e-8,-8.979905680705888e-4,2.506411353886881e-5,2.0492861273368607e-8,-8.978493659111419e-4,2.50042478933684e-5,2.0467761838839778e-8,-8.976735626310779e-4,2.486629512223054e-5,2.040810250953443e-8,-8.974383807300419e-4,2.46779904367794e-5,2.0326637181998767e-8,-8.971300793370073e-4,2.447195277178342e-5,2.0238087853917463e-8,-8.967460299014721e-4,2.4281946492655756e-5,2.0157529321890946e-8,-8.962944874862408e-4,2.41394984040332e-5,2.009894778188007e-8,-8.957939342688571e-4,2.4070383811391924e-5,2.0073707412014148e-8,-8.952715333108823e-4,2.4090842783267837e-5,2.0088849549234874e-8,-8.94760107898572e-4,2.420397021695154e-5,2.014545178891125e-8,-8.942933680114259e-4,2.4397265038716906e-5,2.0237535845060154e-8,-8.938997498069575e-4,2.4642474151023778e-5,2.0352064205131918e-8,-8.935958998883974e-4,2.4898610660257977E-05,2.047041270308535e-8,-8.933813137979958e-4,2.5118392150347438e-5,2.057138082449648e-8,-8.932357382837027e-4,2.525738915614616e-5,2.0635360425476936e-8,-8.931205738507962e-4,2.5284299096435977e-5,2.0648906749984923e-8,-8.929848689198422e-4,2.5190265415252555e-5,2.0608774843090036e-8,-8.927757350545704e-4,2.4994824362930195e-5,2.052437537467493e-8,-8.924519189134882e-4,2.4745797708676503e-5,2.0417514294488545e-8,-8.919975931406865e-4,2.4510848006438183e-5,2.031846414448125e-8,-8.914314961573257e-4,2.436039906856739e-5,2.0258291785338553e-8,-8.908058509117407e-4,2.4345690900774747e-5,2.0259156353576073e-8,-8.901923458736179e-4,2.4480408023514104e-5,2.032632704668696e-8,-8.896591855754514e-4,2.473538117757218e-5,2.0446077286436584e-8,-8.892494467896753e-4,2.505003874490458e-5,2.0590986107984132e-8,-8.889707658958967e-4,2.5354671159387962e-5,2.0729934824061592e-8,-8.887992171195747e-4,2.5592069573353648e-5,2.0837712880844427e-8,-8.886922966930062e-4,2.572983863637043e-5,2.0900398514110002e-8,-8.886031916452067e-4,2.576187327548421e-5,2.0915874009217856e-8,-8.884910916697882e-4,2.5702806387382103e-5,2.0891201501616617e-8,-8.883263469942507e-4,2.5580247122862124e-5,2.0839048300129043e-8,-8.880918126579759e-4,2.5427917810549098e-5,2.0774582188619598e-8,-8.877822930623571e-4,2.528066113611859e-5,2.071327182632323e-8,-8.874034503409459e-4,2.51709375729389e-5,2.0669390176493168e-8,-8.869707261418254e-4,2.5125989723721748e-5,2.0654810035291582e-8,-8.865081500699982e-4,2.5164954314173364e-5,2.067774642510077e-8,-8.86046435520712e-4,2.5295625909005256e-5,2.074132329135633e-8,-8.856195799846079e-4,2.5511276908268373e-5,2.0842176511925037e-8,-8.852594627043434e-4,2.578871501824554e-5,2.0969645761179816e-8,-8.849887434082308e-4,2.6089236359805585e-5,2.1106290594163275e-8,-8.848135668142814e-4,2.6363915683878577e-5,2.12303363316089e-8,-8.847186517320325e-4,2.6563437790964064e-5,2.132009779085571e-8,-8.846674515235134e-4,2.6650601378864086e-5,2.1359523275735847e-8,-8.846087189309281e-4,2.66117823350549e-5,2.1343206192558952e-8,-8.844884826177575e-4,2.6463259603390726e-5,2.1279054822091283e-8,-8.84264302201615e-4,2.6249677950410016e-5,2.1187425909026206e-8,-8.839176546726403e-4,2.6034332006823362e-5,2.109662263366006e-8,-8.83460649868888e-4,2.588342561020468e-5,2.1035784916221402e-8,-8.82934630955511e-4,2.584833167410523e-5,2.102703848956324e-8,-8.824002202963414e-4,2.595091364572211e-5,2.1079174189276926e-8,-8.81920975885244e-4,2.61768927835987e-5,2.1185003004173495e-8,-8.815456299885851e-4,2.648030419312936e-5,2.132360042425762e-8,-8.812952960849518e-4,2.6797977084991984e-5,2.146685384949102e-8,-8.811602994497689e-4,2.7068443874576867e-5,2.1587808754275467e-8,-8.811068251980501e-4,2.7247856141716944e-5,2.1667584069800153e-8,-8.81089260979772e-4,2.7317788146902162e-5,2.169866440830599e-8,-8.810626671495409e-4,2.7284359038585255e-5,2.168436095027221e-8,-8.809914703339173e-4,2.7171697969967655e-5,2.1635803660338795e-8,-8.80853375306616e-4,2.7013728986054004e-5,2.1568241334736312e-8,-8.806396376131523e-4,2.6847076911299085e-5,2.14978976330453e-8,-8.803534902028214e-4,2.670608170906783e-5,2.1439805851815076e-8,-8.800081064751453e-4,2.661959400830792e-5,2.140644761622855e-8,-8.796247407013677e-4,2.6608697363742646e-5,2.1406789555317838e-8,-8.792309875330124e-4,2.668453948521081e-5,2.1445354689839482e-8,-8.788585456571649e-4,2.684586308158884e-5,2.152116684744657e-8,-8.78539601693883e-4,2.7076554888474195e-5,2.162673250547703e-8,-8.783011687268403e-4,2.7344451028370228e-5,2.1747606543339466e-8,-8.781575952511767e-4,2.760340690883203e-5,2.1863392752506867e-8,-8.781030584565838e-4,2.780060405021578e-5,2.1951002414711444e-8,-8.781075985026394e-4,2.7889387640801088e-5,2.1990279643567898e-8,-8.781205807905475e-4,2.7844561840664714e-5,2.197066505165757e-8,-8.780829418086908e-4,2.767387999018061e-5,2.1896173090185512e-8,-8.779448870805086e-4,2.74194206923248e-5,2.178590013371832e-8,-8.776820355245091e-4,2.7146767973214645e-5,2.166911671129024e-8,-8.773032995196551e-4,2.692589193920319e-5,2.157667830482182e-8,-8.768478522267831e-4,2.6811226903755186e-5,2.153215088316852e-8,-8.763733034865937e-4,2.6827771709541934e-5,2.1545755773169187e-8,-8.759398672705631e-4,2.6966612293309254e-5,2.1612637371882027e-8,-8.75595423955086e-4,2.718972268856917e-5,2.171528609991872e-8,-8.753651397527334e-4,2.744156484383133e-5,2.182888124213572e-8,-8.75247681912975e-4,2.766380317219204e-5,2.1927841507686533e-8,-8.752182834583848e-4,2.7809084316441637e-5,2.1991802394858896e-8,-8.752370705991506e-4,2.78503969031841e-5,2.2009553750829985e-8,-8.752596751637627e-4,2.7784140827711733e-5,2.1980196488628183e-8,-8.752468743315799e-4,2.7627256123099378e-5,2.1911727125109708e-8,-8.751709906385506e-4,2.741056684869909e-5,2.181802519722558e-8,-8.750184292407893e-4,2.717106230583093e-5,2.1715442258405405e-8,-8.747891179445456e-4,2.6945211256019782e-5,2.161989799005169e-8,-8.744942264117304e-4,2.6764246324536103e-5,2.1544865267399724e-8,-8.741534012510591e-4,2.6651298588158375e-5,2.1500162537119337e-8,-8.73792188217311e-4,2.6619664630001775e-5,2.1491228293641114e-8,-8.734396730616577e-4,2.6671435073366737e-5,2.1518551762450664e-8,-8.731258580016011e-4,2.679606382670435e-5,2.1577100432093963e-8,-8.7287798682881e-4,2.696908317973565e-5,2.165584590639723e-8,-8.727151324958717e-4,2.7152056798777518e-5,2.1737843898724333e-8,-8.726411876491597e-4,2.7295776371153268e-5,2.180169400597056e-8,-8.72638123277193e-4,2.7348884643569248e-5,2.1825288578833227e-8,-8.726635290724197e-4,2.7272385770363037e-5,2.1792059497611342e-8,-8.726572026318421e-4,2.7056308642078688e-5,2.16981558387545e-8,-8.725583379939474e-4,2.673014546177635e-5,2.1556946339519295e-8,-8.723277672615219e-4,2.6358529275551267e-5,2.1397083391496553e-8,-8.719640776249092e-4,2.6020955368897574e-5,2.1253534423843147e-8,-8.715045501738401e-4,2.5784651947306544e-5,2.1155571953329428e-8,-8.71011034255676e-4,2.5683903518439307e-5,2.1117663450457478e-8,-8.705491307552995e-4,2.5713812934991007e-5,2.113685431521052e-8,-8.701702166525884e-4,2.5837496324388218e-5,2.119617587482424e-8,-8.699014006819977e-4,2.6000426627921144e-5,2.1271201276789622e-8,-8.697436570127698e-4,2.6145631661998167e-5,2.1336868320268546e-8,-8.696759171271625e-4,2.6225891752515828E-05,2.137282593288771e-8,-8.696624900426764e-4,2.621144415050257e-5,2.136666972028361e-8,-8.696616766384265e-4,2.609309797451578e-5,2.1315093592520665e-8,-8.696339802855976e-4,2.58812240139253e-5,2.1223246173929514e-8,-8.695486258957221e-4,2.560145694153938e-5,2.1102720086846007e-8,-8.693875014404906e-4,2.5288439658636282e-5,2.096877998090809e-8,-8.691463110554454e-4,2.4979158898865863e-5,2.083749001199522e-8,-8.688333814216199e-4,2.4707133641329762e-5,2.0723252879501703e-8,-8.684669509396333e-4,2.449818770419122e-5,2.0637035505226535e-8,-8.680718625220174e-4,2.4367943926356345e-5,2.0585317375536392e-8,-8.676763190924599e-4,2.432063005736646e-5,2.0569587886541e-8,-8.673088635246923e-4,2.4348592526606557e-5,2.0586157121313442e-8,-8.669953180759233e-4,2.4432155464044134e-5,2.0626149014017224e-8,-8.667551694766482e-4,2.4539935083866278e-5,2.0675728630559995e-8,-8.665969051568935e-4,2.4630410220170644e-5,2.0716875446414914e-8,-8.665124727648299e-4,2.4656354944466406e-5,2.0729342915038327e-8,-8.664725697134575e-4,2.4573949994687252e-5,2.0694555012387574e-8,-8.664264664054185e-4,2.43569138231536e-5,2.0601608133330403e-8,-8.663110139622543e-4,2.401199304406164e-5,2.0453867175701917e-8,-8.660704693962533e-4,2.3586965902470763e-5,2.0272378725582345e-8,-8.656806366986982e-4,2.316147155005631e-5,2.0091868871878088e-8,-8.651633988921566e-4,2.281978312873848e-5,1.9948869925345905e-8,-8.645805810525198e-4,2.2618527290404762e-5,1.9867633866200034e-8,-8.640097643843145e-4,2.256770525095591e-5,1.9851904328723277e-8,-8.635166675543678e-4,2.2633614094821955e-5,1.9886336038762515e-8,-8.63137948012429e-4,2.2757311910044172e-5,1.9944743482180508e-8,-8.628781813717942e-4,2.2875933655872637e-5,1.9999555353413913e-8,-8.62716501594731e-4,2.2938215554097242e-5,2.0028639520069148e-8,-8.626167844185233e-4,2.291219190087368e-5,2.0018587878018706e-8,-8.625373867297079e-4,2.2786717609544522e-5,1.9965210231098124e-8,-8.624388179572647e-4,2.256927580919071e-5,1.987237287145151e-8,-8.62289189850553e-4,2.2281913356921493e-5,1.975006320331657e-8,-8.620677332013985e-4,2.195621272300181e-5,1.9612130462789248e-8,-8.617664966194991e-4,2.16277997444501e-5,1.9473928068892485e-8,-8.613902656342819e-4,2.1330954467429593e-5,1.935006757875441e-8,-8.609548908336364e-4,2.109389378252815e-5,1.9252475069560743e-8,-8.60484364617139e-4,2.0935189055747062e-5,1.9188905233103563e-8,-8.600071436128826e-4,2.086164348674763e-5,1.91620410767755e-8,-8.595522857630777e-4,2.086763182325774e-5,1.916920143547591e-8,-8.591457649603986e-4,2.0935595960451394e-5,1.9202563113239573e-8,-8.588070106868445e-4,2.103741778004402e-5,1.9249802291736785e-8,-8.585455278490724e-4,2.1136657572340328e-5,1.9295144248855717e-8,-8.583574459539792e-4,2.119206027325631e-5,1.9320951414396224e-8,-8.582223041875423e-4,2.1163256231024873e-5,1.9310193204886934e-8,-8.581015046639913e-4,2.1019633830437e-5,1.9250187621650533e-8,-8.579412331421961e-4,2.0752106826417253e-5,1.913751847356446e-8,-8.576831677947019e-4,2.0384459053393114e-5,1.898276909784322e-8,-8.572838524692297e-4,1.997686961930766e-5,1.8811952221028124e-8,-8.567366035007616e-4,1.9613260947646273e-5,1.8661045623987466e-8,-8.560824766647061e-4,1.9371935268362093e-5,1.8563376708157653e-8,-8.553990379155328e-4,1.9293084341216936e-5,1.8535706064271064e-8,-8.547703530167884e-4,1.936321412352537e-5,1.8571651992880513e-8,-8.542559556665059e-4,1.952555465174852e-5,1.864632532315067e-8,-8.538756727449201e-4,1.970687106733324e-5,1.8727989569739696e-8,-8.536133022643489e-4,1.9843141688829028e-5,1.8789169711081318e-8,-8.534305325201742e-4,1.989357508587466e-5,1.8812667709058706e-8,-8.532814843157356e-4,1.984307509264013e-5,1.879252452479186e-8,-8.531232008002682e-4,1.969807749884717e-5,1.8732068113313398e-8,-8.529215833508998e-4,1.9480194465247334e-5,1.864101205609392e-8,-8.526540395091069e-4,1.9220106769211913e-5,1.8532719999846374e-8,-8.523103008730304e-4,1.8952387630912345e-5,1.8421969114052342e-8,-8.518922166171214e-4,1.8711017815063302e-5,1.83230973754797e-8,-8.514126718644334e-4,1.8525339647629737e-5,1.8248378472723516e-8,-8.508935758492765e-4,1.8416482805648164e-5,1.820658103690855e-8,-8.503628746581636e-4,1.839451037204468e-5,1.8201787199229734e-8,-8.498506739728784e-4,1.8456726342008194e-5,1.823266217066025e-8,-8.493848597949864e-4,1.858755364818312e-5,1.8292382925859e-8,-8.489867877928165e-4,1.8760075533750793e-5,1.8369304773500778e-8,-8.486675197616957e-4,1.8939094885436825e-5,1.8448317961918758e-8,-8.484249414374999e-4,1.908551666785093e-5,1.8512794690847823e-8,-8.482420318448436e-4,1.9161892414962764e-5,1.854700959220887e-8,-8.480866947760388e-4,1.9139120485201888e-5,1.853898427741999e-8,-8.47914089849887e-4,1.9004229019293404e-5,1.8483705191242097e-8,-8.476729841454053e-4,1.8768219337488148e-5,1.8386304668266145e-8,-8.473174336537129e-4,1.847105600233066e-5,1.8264025543393118e-8,-8.46823043761053e-4,1.8178888378359918e-5,1.814493877116609e-8,-8.462024594710862e-4,1.7968779622830955e-5,1.8061442704564362e-8,-8.455100213327113e-4,1.790201857047041e-5,1.8039011781499097e-8,-8.44827387250912e-4,1.7997506299222376e-5,1.8085063263440332e-8,-8.442336473553949e-4,1.82219741246474e-5,1.8184995677384506e-8,-8.437761660142642e-4,1.8504766407932626e-5,1.8308588065556925e-8,-8.434584576481965e-4,1.8767662195956877e-5,1.842267679658266e-8,-8.4324815382798e-4,1.895151458304113e-5,1.8502419193258396e-8,-8.430953104809079e-4,1.9028223922689918e-5,1.853631028756183e-8,-8.429494942284543e-4,1.8998849917980934e-5,1.852528741826402e-8,-8.427701821877676e-4,1.8884905878580218e-5,1.8478909462789927E-08,-8.425307640973115e-4,1.8718917804788393e-5,1.8411232187863652e-8,-8.4221863676526e-4,1.853706175763964e-5,1.8337626368837928e-8,-8.418337179676496e-4,1.837420046907955e-5,1.827269721178165e-8,-8.413866423383756e-4,1.8260484347668602e-5,1.822893007494307e-8,-8.408968704231464e-4,1.8218648925198794e-5,1.821564458019552e-8,-8.403904546985228e-4,1.8261602613572497e-5,1.8238040596675744e-8,-8.398971047784783e-4,1.8390365569227584e-5,1.8296347683661744e-8,-8.394462933471349e-4,1.859286581010708e-5,1.8385307406524103e-8,-8.390625554693548e-4,1.8844349042141637e-5,1.849434016111365e-8,-8.387606740926772e-4,1.9109956838288736e-5,1.86086555425353e-8,-8.38541735765671e-4,1.934955354341349e-5,1.871133966197072e-8,-8.383910411803681e-4,1.9524369896896514e-5,1.8786212347626552e-8,-8.382786396254357e-4,1.9604517498810704e-5,1.882101552190826e-8,-8.381628606157513e-4,1.957613104080785e-5,1.8810378176449664e-8,-8.379968680478822e-4,1.9446885164135782e-5,1.8758024552986323e-8,-8.377380159940519e-4,1.924845999124919e-5,1.8677651607636933e-8,-8.373591718549969e-4,1.9034058927322546e-5,1.8591733411884385e-8,-8.368597531357094e-4,1.886904423475679e-5,1.8527502435010273e-8,-8.362722099438048e-4,1.881422597460021e-5,1.8509963766801086e-8,-8.356585036787218e-4,1.890516421021724e-5,1.8553367099453363e-8,-8.350935969910999e-4,1.913599743885326e-5,1.865465529485676e-8,-8.346403242080155e-4,1.945802313397077e-5,1.8793064946602195e-8,-8.34327545916489e-4,1.979670869488179e-5,1.893732043323308e-8,-8.341432058884843e-4,2.0079064624085877e-5,1.905704488089487e-8,-8.340443957116498e-4,2.0256813697895776e-5,1.9132370964305275e-8,-8.339762461212966e-4,2.0315496394862994e-5,1.915767659009268e-8,-8.338890176634837e-4,2.0269954024688864e-5,1.9139616310843984e-8,-8.337477088005211e-4,2.015310994528189e-5,1.9092327487425826e-8,-8.335344195487556e-4,2.0004740360878148e-5,1.9032641784256222e-8,-8.332464619472108e-4,1.9863456916696745e-5,1.897669433393755e-8,-8.328930721117551e-4,1.9762094713418337e-5,1.8938027533986976e-8,-8.32492297882966e-4,1.9725314418621403e-5,1.8926665101186917e-8,-8.32068415293489e-4,1.97681582273195e-5,1.8948588036477114e-8,-8.316495311428089e-4,1.9894810847537727e-5,1.900526818571205e-8,-8.312647852018803e-4,2.0097427747145573e-5,1.909320121864192e-8,-8.309406311115315e-4,2.0355522535096095e-5,1.9203660731413604e-8,-8.306961138447342e-4,2.0636898921431595e-5,1.9323105247655924e-8,-8.305378232200559e-4,2.0901137965268803e-5,1.9434664802670044e-8,-8.304559556956476e-4,2.1106081507306507e-5,1.9520878928693548e-8,-8.304232734093543e-4,2.121667553013109e-5,1.9567400873830927e-8,-8.303983658234531e-4,2.121422167099143e-5,1.9566836162855173e-8,-8.303333870477527e-4,2.1103220227911646e-5,1.952153119702011e-8,-8.301848490250651e-4,2.0913258553630374e-5,1.9444248405592745e-8,-8.299248979192241e-4,2.069466744819484e-5,1.935621254368111e-8,-8.295501421522738e-4,2.0508232040964325e-5,1.928269583340997e-8,-8.290853574454966e-4,2.0410715377186484e-5,1.9246942812164235e-8,-8.285801055587781e-4,2.0439332177392955e-5,1.9263794111536346e-8,-8.2809766077195e-4,2.059951905236773e-5,1.9334808940806114e-8,-8.276980402284858e-4,2.086083916102179e-5,1.944680759157122e-8,-8.274201421640853e-4,2.1164367562493242e-5,1.957510063623294e-8,-8.272700826664273e-4,2.1440488239337026e-5,1.9690891838981256e-8,-8.272211164209307e-4,2.163042771909038e-5,1.9770119508971764e-8,-8.272248984694739e-4,2.1702369405362463e-5,1.980002378644996e-8,-8.27228099796603e-4,2.1656229173428763e-5,1.9781034701150995e-8,-8.271868289199328e-4,2.151765544352276e-5,1.9724204114230814e-8,-8.270743741962598e-4,2.1326531390819485e-5,1.9646358599563786e-8,-8.26882219952542e-4,2.1125677324855516e-5,1.9565355735798533e-8,-8.266169368517766e-4,2.095292185174144e-5,1.94967870339568e-8,-8.262957480189584e-4,2.0836914464318622e-5,1.9452286083130493e-8,-8.25942474644233e-4,2.0795532754586838e-5,1.9438941053262905e-8,-8.255843718992038e-4,2.083550384946244e-5,1.9459206265133282e-8,-8.252495647333255e-4,2.095228065573517e-5,1.9510899184512012e-8,-8.249644062349847e-4,2.112985311313308e-5,1.958715392852858e-8,-8.247500865889223e-4,2.1340896571258705e-5,1.96765117319045e-8,-8.24618243855376e-4,2.1548299489712724e-5,1.9763583444848516e-8,-8.245661579256653e-4,2.1709369314150928e-5,1.983081139445514e-8,-8.245731982415894e-4,2.1783542272099323e-5,1.9861656355918796e-8,-8.246010337711906e-4,2.174293624505869e-5,1.9844932417100713e-8,-8.24599762693081e-4,2.1582829143363222e-5,1.9779092489063103e-8,-8.245199320168276e-4,2.1327443144663598e-5,1.9674559193285197e-8,-8.243271463267552e-4,2.1027056964939968e-5,1.9552443886955017e-8,-8.240137478913354e-4,2.0745880537874062E-05,1.9439417625111437e-8,-8.236027048837928e-4,2.054443207807126e-5,1.9360323569771445e-8,-8.231420981185931e-4,2.046260583006955e-5,1.9331166390175837e-8,-8.226923062309316e-4,2.050897293837082e-5,1.9354816716611825e-8,-8.223101620532402e-4,2.065914064149752e-5,1.9420558033546697e-8,-8.220346412416486e-4,2.0863033376546166e-5,1.9507310836051278e-8,-8.218778118280972e-4,2.1058697312165184e-5,1.958944171580837e-8,-8.218233231961076e-4,2.1188662210092975e-5,1.964349015093813e-8,-8.218326197553458e-4,2.1214125651217814e-5,1.9653903415513317e-8,-8.21856605729153e-4,2.112285109501725e-5,1.9616154125454246e-8,-8.218486723198633e-4,2.092896166987658e-5,1.9536534435121197e-8,-8.21774900682099e-4,2.0665900016862456e-5,1.9429164058162805e-8,-8.216189955439171e-4,2.0376078120981753e-5,1.9311669317101807e-8,-8.213819939742871e-4,2.010103213726683e-5,1.9201115798957357e-8,-8.210785719648872e-4,1.987447711399243e-5,1.911118281263017e-8,-8.20732153301422e-4,1.9718757169934105e-5,1.905076891931154e-8,-8.203703758138432e-4,1.964388881521585e-5,1.9023668998090353e-8,-8.200215277640999e-4,1.9647991667492965e-5,1.9028805308153496e-8,-8.197118007420141e-4,1.971813517172542e-5,1.906061049159396e-8,-8.194627667111748e-4,1.983118207998987e-5,1.910940136475893e-8,-8.192884188063901e-4,1.99548908795387e-5,1.9161861647232118e-8,-8.191914615513263e-4,2.005020377589606e-5,1.920200887423933e-8,-8.191593400069361e-4,2.0076033762683125e-5,1.92131658914827e-8,-8.191616964490206e-4,1.999753215727303e-5,1.918132541360626e-8,-8.191520734989105e-4,1.9797250015148836e-5,1.909967483876304e-8,-8.190765586708921e-4,1.948575838000759e-5,1.8972896885336155e-8,-8.188893026085382e-4,1.9105659284594878e-5,1.881876618035338e-8,-8.185698549347501e-4,1.8723588649551148e-5,1.8664805935860888e-8,-8.181336800547649e-4,1.8410527065246534e-5,1.8540121068539456e-8,-8.176292682317155e-4,1.8218322499468568e-5,1.8465698823274743e-8,-8.171225750854558e-4,1.816336880244077e-5,1.844774602721915e-8,-8.166763753560664e-4,1.8224017124166648e-5,1.8476781130729858e-8,-8.163333375780404e-4,1.8350561857245017e-5,1.853193523194076e-8,-8.16107745214289e-4,1.8481632209535812e-5,1.8587831243527868e-8,-8.159860616604793e-4,1.8560533642340127e-5,1.8621333711184525e-8,-8.159338548044192e-4,1.8547406867931718e-5,1.8616474714546974e-8,-8.159059685028022e-4,1.8425544094309115e-5,1.856691337547998e-8,-8.158571772717478e-4,1.8201877478809365e-5,1.8475986230218312e-8,-8.157511568267292e-4,1.790263037304738e-5,1.8354797984609146e-8,-8.155662647845826e-4,1.756578402681822e-5,1.8219061692464088e-8,-8.152974777324008e-4,1.7232463817564305e-5,1.80855624276064e-8,-8.149548380423059e-4,1.6939285910434784e-5,1.79690735294896e-8,-8.14559552341495e-4,1.6713010048744217e-5,1.7880250136234366e-8,-8.141391520903434e-4,1.6567887899189816e-5,1.7824625038532265e-8,-8.13722894907782e-4,1.65052911686815e-5,1.7802510165505718e-8,-8.133380240113629e-4,1.6514764792978118e-5,1.7809448528021547e-8,-8.130068823177181e-4,1.6575692411162992e-5,1.7836899066496914e-8,-8.127444898746023e-4,1.6659173301351172e-5,1.787301036505299e-8,-8.12556110967037e-4,1.6730231029844328e-5,1.79035428156178e-8,-8.1243455505061e-4,1.6751012160459823e-5,1.7913194389418595e-8,-8.123576337801389e-4,1.6686038010803166e-5,1.7887740556088877e-8,-8.122873281432063e-4,1.6510317217035855e-5,1.7817300812807638e-8,-8.12173296759821e-4,1.6219656866485414e-5,1.7700472205744483e-8,-8.119633169768517e-4,1.5839706948872637e-5,1.754794502201198e-8,-8.116204935794114e-4,1.5427302108426434e-5,1.7382995748216617e-8,-8.111412381260521e-4,1.5058049525129414e-5,1.723638629723847e-8,-8.105632272728717e-4,1.4801145884299286e-5,1.713607209252042e-8,-8.099554919138893e-4,1.4692744717581516e-5,1.7096374287795603e-8,-8.093939263332287e-4,1.4722847634811913e-5,1.7112747706322244e-8,-8.089353936498745e-4,1.484233801753127e-5,1.7164799969601408e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json new file mode 100644 index 000000000..36daa4505 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":6000,"numberOfSamples":1000,"samples":[-8.086030009769924e-4,1.4983810405869992e-5,1.7224897231104907e-8,-8.083859978917138e-4,1.5083891420443416e-5,1.7267300877946733e-8,-8.082495498012613e-4,1.5098334698112563e-5,1.727428602498279e-8,-8.08147627922185e-4,1.5007880436382382e-5,1.72384405012867e-8,-8.080344588306433e-4,1.4817024022017442e-5,1.716203842239244e-8,-8.078727223656254e-4,1.4548770451198794e-5,1.705477562558989e-8,-8.076383715174149e-4,1.4237727414253643e-5,1.6930867623711068e-8,-8.07322519250199e-4,1.3922902257012772e-5,1.6806096847405343e-8,-8.069308512481781e-4,1.3641062334595963e-5,1.6695163186853533e-8,-8.064810674365431e-4,1.3421371907981373e-5,1.6609600165603765e-8,-8.059989962711845e-4,1.3281793410593358e-5,1.65564122262766e-8,-8.055140919096513e-4,1.3227437282497666e-5,1.6537470119423336e-8,-8.050550211507427e-4,1.3250758311506548e-5,1.654960752689265e-8,-8.046459011976815e-4,1.3333167640947059e-5,1.658525704041747e-8,-8.04303377210941e-4,1.3447472960351647e-5,1.6633415280209964e-8,-8.040343930544604e-4,1.3560785131852206e-5,1.6680814883554258e-8,-8.038344371049681e-4,1.3637887698738715e-5,1.6713305884428016e-8,-8.036861808400415e-4,1.3645376246194308e-5,1.6717552173535383e-8,-8.035588881624019e-4,1.355715046434086e-5,1.668324932697258e-8,-8.034098545481887e-4,1.3361633179672876e-5,1.660599824235996e-8,-8.031899161995416e-4,1.3069806636622722e-5,1.6490473396248044e-8,-8.028548171317579e-4,1.2720836118968e-5,1.635260915989386e-8,-8.023817298130074e-4,1.2379672673151174e-5,1.6218567533971117e-8,-8.017848916609258e-4,1.21214866090865e-5,1.6118432225501397e-8,-8.011195394685814e-4,1.2004672862047483e-5,1.6075358566152277e-8,-8.004664161243661e-4,1.2045064498369676e-5,1.6095295025865495e-8,-7.999018683719954e-4,1.2207888551202842e-5,1.6163899894807838e-8,-7.994702224832471e-4,1.242340488168506e-5,1.625294935668257e-8,-7.991732540075557e-4,1.2615665237930678e-5,1.6331930886767175e-8,-7.989782632286061e-4,1.2727385321542004e-5,1.6378010390939176e-8,-7.988353176257354e-4,1.2731278778766297e-5,1.6380533700705246e-8,-7.98693545654588e-4,1.262891363153558e-5,1.6340492793338305e-8,-7.985117563218257e-4,1.2443008649451221e-5,1.6267331548458157e-8,-7.982633092416262e-4,1.2208291416633506e-5,1.617517573988445e-8,-7.97937024226046e-4,1.1963551111059878e-5,1.6079587401967125e-8,-7.975359220318068e-4,1.1745517867734186e-5,1.5995123017000115e-8,-7.970748169146011e-4,1.1584298423249006e-5,1.5933578635139873e-8,-7.96577147084504e-4,1.1500116000004205e-5,1.59027823489698e-8,-7.960712612774264e-4,1.1501312858278244e-5,1.5905873133149612e-8,-7.955863788122124e-4,1.1583659586297626e-5,1.5941057128577827e-8,-7.951485028139105e-4,1.1731083070377464e-5,1.6001886167851592e-8,-7.947767272267163e-4,1.191780985300591e-5,1.607808021319529e-8,-7.944803671342594e-4,1.2111620389700717e-5,1.615680382240154e-8,-7.942570988685387e-4,1.2277833661532118e-5,1.622426162217438e-8,-7.940921495251726e-4,1.2383811890041994e-5,1.6267523534675877e-8,-7.939586304605242e-4,1.2403888228974189e-5,1.627651653757225e-8,-7.938193280601158e-4,1.2324675476991541e-5,1.6246136706354253e-8,-7.936307142675456e-4,1.2150538325271284e-5,1.6178380649204796e-8,-7.933502814410618e-4,1.1908091876990174e-5,1.608405253597014e-8,-7.929477558193591e-4,1.164701184564693e-5,1.5982993948326116e-8,-7.924185834346178e-4,1.1433225812865484e-5,1.5901308272972388e-8,-7.91794201526995e-4,1.1331683271163489e-5,1.5864503448445484e-8,-7.911404620961953e-4,1.1381697803054312e-5,1.5887775959579784e-8,-7.905387505296019e-4,1.1576581858174432e-5,1.5968081661271605e-8,-7.900557579253249e-4,1.1862063556780149e-5,1.6083659449037498e-8,-7.897185238722374e-4,1.2157584885353175e-5,1.6202533533502623e-8,-7.895090488599649e-4,1.238821600505574e-5,1.629512295943271e-8,-7.893784662655317e-4,1.2508703453700893e-5,1.6343711956180873e-8,-7.892687928634058e-4,1.2510154891614356e-5,1.6345059350363414e-8,-7.891303130012338e-4,1.2412762325594466e-5,1.630746636423513e-8,-7.889301607306106e-4,1.22532563576661e-5,1.6245726990312346e-8,-7.886537075923972e-4,1.207350096757021e-5,1.6176528951831164e-8,-7.883021088407754e-4,1.1912612868365128e-5,1.611529698390703e-8,-7.878886554381245e-4,1.1802366938175958e-5,1.6074404646753326e-8,-7.874351827903575e-4,1.1764678405500699e-5,1.606225725212218e-8,-7.869686785579548e-4,1.1810193745663737e-5,1.6082821884922013e-8,-7.865178808041266e-4,1.1937644143326378e-5,1.613543027797478e-8,-7.861097334099989e-4,1.2134002375285157e-5,1.621485643068633e-8,-7.857657050956631e-4,1.2375715139896458e-5,1.631178566628287e-8,-7.854982761710509e-4,1.2631342722271491e-5,1.6413830995212057e-8,-7.853082129742637e-4,1.2865627763957707e-5,1.650712800670973e-8,-7.851832404152557e-4,1.3044611801087987e-5,1.6578365268496393e-8,-7.850984979333072e-4,1.3141234772513003e-5,1.661701655440917e-8,-7.850189859904393e-4,1.314074642924285e-5,1.6617484545055545e-8,-7.849040783473408e-4,1.3045167089176555e-5,1.658083277620777e-8,-7.847140887854131e-4,1.2875989940709468e-5,1.6515781106734278e-8,-7.84418739673568e-4,1.2674020385660439e-5,1.643854403323704e-8,-7.840067264380274e-4,1.2494690124657561e-5,1.637089555624342e-8,-7.834940629310338e-4,1.2397202649814611e-5,1.633586078646625e-8,-7.829269123445694e-4,1.242762480633356e-5,1.6351121218225165e-8,-7.823738580167101e-4,1.2600199243328678e-5,1.6421819173272966e-8,-7.819059640317111e-4,1.2886068491034284e-5,1.6536310251172648e-8,-7.815711190078477e-4,1.3218908359013295e-5,1.6668481029581357e-8,-7.813760467322517e-4,1.3518369457025356e-5,1.678692018769316e-8,-7.812866097556989e-4,1.3719738169680302e-5,1.6866455278038853e-8,-7.81245043675736e-4,1.3793772038801468e-5,1.689586528796916e-8,-7.811924892995569e-4,1.3748855436262393e-5,1.6878708749903426e-8,-7.810853126995724e-4,1.3619700644445478e-5,1.6828864667497608e-8,-7.809012145161698e-4,1.3452099763330615e-5,1.6764485192192976e-8,-7.806376216935296e-4,1.3290653946538645e-5,1.6703112676782687e-8,-7.803066615377375e-4,1.31716120529323e-5,1.6658847878700447e-8,-7.799298430182615e-4,1.311988593603372e-5,1.6641219568441624e-8,-7.795337437080761e-4,1.3148379669826384e-5,1.665500141543589e-8,-7.791466519745774e-4,1.3258192670318894e-5,1.6700371540229692e-8,-7.787956166079658e-4,1.3439123013885566e-5,1.6773161126941902e-8,-7.785034521569552e-4,1.3670540636302536e-5,1.6865211246133127e-8,-7.782855194761558e-4,1.3923070098588027e-5,1.6965022456657025e-8,-7.781465158733033e-4,1.4161671472159447e-5,1.705894395665733e-8,-7.780780274644127e-4,1.4350439747166847e-5,1.713304166764391e-8,-7.780578724819625e-4,1.4458808126371696e-5,1.717552433911576e-8,-7.780520945693767e-4,1.4468165316748068e-5,1.7179332308174036e-8,-7.780199264883032e-4,1.4377381074197417e-5,1.7144283672725583e-8,-7.779212697790456e-4,1.42055818063788e-5,1.707811591367681e-8,-7.777254715128031e-4,1.399092160934568e-5,1.6995928407681764e-8,-7.774196852037493e-4,1.37848241088391e-5,1.691784077706239e-8,-7.770148281025337e-4,1.3641905255902624e-5,1.68649932739021e-8,-7.7654695118254e-4,1.3606723344494496e-5,1.6854386908037733e-8,-7.760719733956719e-4,1.3699981752654324e-5,1.6893614104122298e-8,-7.756528920660803e-4,1.3908611710779359e-5,1.6977171984468366e-8,-7.753414973715193e-4,1.4185135339496087e-5,1.708636928482128e-8,-7.751607783545031e-4,1.4459758828692502e-5,1.7194078255654558e-8,-7.750965022472446e-4,1.4662655192892729e-5,1.7273331572288793e-8,-7.751031768498831e-4,1.4747011345581016e-5,1.730618293517172e-8,-7.751215862559233e-4,1.4701900854900151e-5,1.7288656969080978e-8,-7.750986283316115e-4,1.45502732264208e-5,1.7229950783472687e-8,-7.750005720993924e-4,1.4336090541435382e-5,1.714739884303355e-8,-7.748166257563864e-4,1.4108830030091316e-5,1.7060381671628664e-8,-7.74555246270904e-4,1.3911680743308552e-5,1.6985680755460048e-8,-7.742375216046733e-4,1.3775437312394145e-5,1.6935101840957774e-8,-7.738908672395347e-4,1.3716934985120997e-5,1.691492118059338e-8,-7.735443296708602e-4,1.373987657547806e-5,1.6926288994825302e-8,-7.732253688257358e-4,1.3836379992091725e-5,1.6965903557041073e-8,-7.729574201870145e-4,1.398850143961783e-5,1.702664562074045e-8,-7.727575479089458e-4,1.41697546103367e-5,1.7098179346093112e-8,-7.726338127068317e-4,1.4347167415583573e-5,1.7167741915981117e-8,-7.72582526013079e-4,1.4484672906976143e-5,1.7221441721592798e-8,-7.725862452751478e-4,1.4548420666369706e-5,1.724630156120042e-8,-7.726138958417847e-4,1.4513823225779425e-5,1.723297684502607e-8,-7.726244080267737e-4,1.4372974279860863e-5,1.717861929269323e-8,-7.725743889406402e-4,1.4139927504773041e-5,1.708890500581759e-8,-7.724286327675101e-4,1.3851021527237483e-5,1.6978122122320604e-8,-7.721705055599232e-4,1.3558663671444288e-5,1.6866694872960056e-8,-7.718085762849863e-4,1.3319387181004731e-5,1.6776479385700888e-8,-7.713767987397502e-4,1.3179295367351444e-5,1.6725086614472134e-8,-7.709275714331829e-4,1.3161122848693512e-5,1.6720920077215314e-8,-7.705191844169844e-4,1.3256827859980563e-5,1.6760442718757147e-8,-7.702008063045723e-4,1.3428227793557443e-5,1.6828582942267516e-8,-7.699990644679152e-4,1.361618554202354e-5,1.6902388068197547e-8,-7.699104039245936e-4,1.3756467861176603e-5,1.6957151603506948e-8,-7.699023224946573e-4,1.3797806695198463e-5,1.697331252819716e-8,-7.69923693570122e-4,1.3715970518988264e-5,1.6941802014512077e-8,-7.699204730517889e-4,1.3518607018056203e-5,1.686585566047806e-8,-7.698506029324883e-4,1.3239647040700348e-5,1.675881321149357e-8,-7.696928309426752e-4,1.292679553392078e-5,1.663924458294889e-8,-7.694477547487295e-4,1.2627916951666916e-5,1.6525649634657365e-8,-7.691330174202381e-4,1.2380977939982187e-5,1.6432564147368763e-8,-7.687761526504343e-4,1.2209237379755138e-5,1.6368739832210366e-8,-7.684079653894965e-4,1.2120781661778011e-5,1.633703602331063e-8,-7.680577369530784e-4,1.2110432408898472e-5,1.6335228492463344e-8,-7.677501944254693e-4,1.21623329271923e-5,1.6357054465017322e-8,-7.675035516029946e-4,1.2252353588631538e-5,1.6393155437041988e-8,-7.673278510063229e-4,1.2350244031443248e-5,1.6431898304259127e-8,-7.672231013092557e-4,1.2422047112441263e-5,1.6460286860244704e-8,-7.671772688900853e-4,1.243363156115782e-5,1.6465302548663993e-8,-7.671649640707796e-4,1.2356108383738767e-5,1.6435971563363704e-8,-7.671484101972802e-4,1.2173134658280302e-5,1.6366160768870968e-8,-7.670825263514741e-4,1.188858814480631e-5,1.6257519307403445e-8,-7.669249561884815e-4,1.153125860759139e-5,1.6121270567197454e-8,-7.666492306156377e-4,1.115245465159126e-5,1.5977261511360678e-8,-7.662560978121537e-4,1.0814456656206232e-5,1.5849466079461248e-8,-7.657770512027595e-4,1.05724402594284e-5,1.5758977593618244e-8,-7.65267023298901e-4,1.0456872508954073e-5,1.571723833544501e-8,-7.647885985095952e-4,1.0463873633946137e-5,1.5722417018223885e-8,-7.643941100002343e-4,1.0557097979145212e-5,1.5760262592280024e-8,-7.641121194876584e-4,1.0679365871370066e-5,1.580868049828012e-8,-7.639418824019487e-4,1.0769014504534602e-5,1.5844044262621295e-8,-7.63856040874777e-4,1.0775642632836637e-5,1.5847200884499e-8,-7.638095816807227e-4,1.067134664327151e-5,1.5807708446849496e-8,-7.637520719001363e-4,1.0455341968064698e-5,1.5725533933861105e-8,-7.636398633410946e-4,1.015159717703648e-5,1.5610082730947348e-8,-7.634452271731003e-4,9.80080001717917e-6,1.547706895850993e-8,-7.63160419406769e-4,9.449412193445568e-6,1.5344290126782374e-8,-7.627963935193374e-4,9.13916163473737e-6,1.522760366709052e-8,-7.623775983584871e-4,8.899634906261868e-6,1.5138131787055436e-8,-7.619351862275943e-4,8.745021320744058e-6,1.5081084100568852e-8,-7.615007251523846e-4,8.674467790722235e-6,1.5055961298020598E-08,-7.611015754607918e-4,8.674636046522299e-6,1.5057573206547553e-8,-7.607580727699104e-4,8.723012138457471e-6,1.507730793528806e-8,-7.604819845856674e-4,8.79104729455283e-6,1.5104310215033872e-8,-7.602755220059144e-4,8.84693302571431e-6,1.512651308174354e-8,-7.60130395955743e-4,8.858401879917029e-6,1.5131688225382546e-8,-7.600268787531797e-4,8.796280560370882e-6,1.5108794499177295e-8,-7.599335469922736e-4,8.639531259323042e-6,1.5049899963453894e-8,-0.000759809210702789,8.381910431287344e-6,1.495271925500096e-8,-7.596089689111743e-4,8.038852722231386e-6,1.4823230368913413e-8,-7.592954714676379e-4,7.651012523481406e-6,1.4677004696445236e-8,-7.588534536653339e-4,7.279557888325591e-6,1.4537373653592984e-8,-7.583012167940397e-4,6.990438849818558e-6,1.4429384557414762e-8,-7.576907836367265e-4,6.831496399448591e-6,1.4371061617021388e-8,-7.570930731261787e-4,6.813281142864784e-6,1.4366159181078007e-8,-7.56573893838745e-4,6.904553518906711e-6,1.440256548875904e-8,-7.561728030269616e-4,7.044803405478948e-6,1.445716559337654e-8,-7.55894167206311e-4,7.166043359666975e-6,1.450415417168199e-8,-7.55711412564325e-4,7.212993883249746e-6,1.4522671727194704e-8,-7.555791656848098e-4,7.1549930276133835e-6,1.4501273602714309e-8,-7.554470640511585e-4,6.988776194001312e-6,1.443893097512812e-8,-7.552712370159999e-4,6.734529749762169e-6,1.4343479112262025e-8,-7.550218631592772e-4,6.428246653777687e-6,1.422866437274883e-8,-7.546866678361489e-4,6.112788824185316e-6,1.4110719482184918e-8,-7.542707923333388e-4,5.8292867079302145e-6,1.400510243390426e-8,-7.537936783321645e-4,5.610111184424559e-6,1.392387568318107e-8,-7.532839358400108e-4,5.474383321977379e-6,1.3874075234006555e-8,-7.527734587962739e-4,5.42640635004478e-6,1.3857186797906472e-8,-7.522919859404003e-4,5.45669894844625e-6,1.386957766596827e-8,-7.518629339501932e-4,5.544851652733658e-6,1.3903575419281547e-8,-7.515008253699221e-4,5.66324214311497e-6,1.3948838400251825e-8,-7.51210094786353e-4,5.780767390543559e-6,1.3993723032625362e-8,-7.509847483529711e-4,5.866229168685598e-6,1.4026532943938554e-8,-7.508084438557491e-4,5.891537175053618e-6,1.4036723339664531e-8,-7.506548991499108e-4,5.835186884660035e-6,1.4016225902040902e-8,-7.504890649576297e-4,5.6865153995048614e-6,1.3961069522205696e-8,-7.502702069824309e-4,5.450810519333698e-6,1.3873309470797243e-8,-7.499584705215199e-4,5.154093641144201e-6,1.376281194863296e-8,-7.495258303846799e-4,4.844492327076601e-6,1.3647730610076522e-8,-7.489697010459084e-4,4.585680212391129e-6,1.3551982235163058e-8,-7.483229773845283e-4,4.439424944083938e-6,1.3498642646116442e-8,-7.47651384167147e-4,4.441135789993236e-6,1.3500781498633393e-8,-7.47033630108719e-4,4.5810783550153105e-6,1.3554518828823992e-8,-7.465319640685318e-4,4.8048662841334895e-6,1.3639340521473976e-8,-7.461696806020518e-4,5.035072310667735e-6,1.3726250888424918e-8,-7.45927649234082e-4,5.200984456189078e-6,1.3788876550238137e-8,-7.457581262680648e-4,5.260058265685222e-6,1.3811432021938078e-8,-7.456046602651826e-4,5.203880705388684e-6,1.3790914319102578e-8,-7.454181631269655e-4,5.052110434397819e-6,1.373481274651468e-8,-7.451656280700271e-4,4.841472760620587e-6,1.3656958068869079e-8,-7.448325507537849e-4,4.61494382342504e-6,1.357343640410499e-8,-7.444214445461733e-4,4.413322175715639e-6,1.3499417669267064e-8,-7.439484346229335e-4,4.2694368736615086e-6,1.3447009746671435e-8,-7.434389857049532e-4,4.204518303627032e-6,1.3423957631836567e-8,-7.429232000552066e-4,4.22642353337615e-6,1.3433047936838739e-8,-7.424310713391792e-4,4.3296407656193255e-6,1.3472159698785832e-8,-7.419881612882491e-4,4.496920195240808e-6,1.3534885426142835e-8,-7.416121363128246e-4,4.702242436589464e-6,1.3611614172495427e-8,-7.413105280088105e-4,4.9146848337064315e-6,1.369092983616905e-8,-7.410798564648585e-4,5.102579289552534e-6,1.3761123342581654e-8,-7.409059284613239e-4,5.2374620959614515e-6,1.3811649751762265e-8,-7.40765021747722e-4,5.2976581500819286e-6,1.3834473325427858e-8,-7.406258251361314e-4,5.271569720175211e-6,1.3825313013330133e-8,-7.404522940607082e-4,5.16079816624066e-6,1.3784817350730312e-8,-7.402080188256512e-4,4.982998369865964e-6,1.3719616164717567e-8,-7.398629579022926e-4,4.773502162654375e-6,1.3642888630399176e-8,-7.394027814983437e-4,4.583451075155526e-6,1.3573616754794363e-8,-7.388391120671625e-4,4.471358391383276e-6,1.3533406453527241e-8,-7.382156353710173e-4,4.486293417993243e-6,1.3540246689754017e-8,-7.376025584177996e-4,4.646263952038066e-6,1.360057244394542e-8,-7.370753966750942e-4,4.923220958661702e-6,1.3703844593894654e-8,-7.366853493943496e-4,5.247831278658755e-6,1.3824412277992002e-8,-7.364384127765779e-4,5.535851078356583e-6,1.3931243008841947e-8,-7.362964904189415e-4,5.721421847439438e-6,1.400013251189647e-8,-7.361977969831083e-4,5.777834083495166e-6,1.4021317172913075e-8,-7.360817614101209e-4,5.717840477241389e-6,1.3999596259483795e-8,-7.359055977095308e-4,5.580085272187351e-6,1.3949330970951832e-8,-7.356494891230436e-4,5.412741838724204e-6,1.3888375540751401e-8,-7.353140711726487e-4,5.2611317114854454e-6,1.3833462198014537e-8,-7.349148352444343e-4,5.160747629068616e-6,1.3797605620566516e-8,-7.34476381499244e-4,5.134402307300587e-6,1.378907362699951e-8,-7.340275945238301e-4,5.1916865952263e-6,1.3811240956866352e-8,-7.335976379390709e-4,5.3295409738639065e-6,1.386285790594125e-8,-7.332124264851362e-4,5.533583318487555e-6,1.393857552488052e-8,-7.328914883847182e-4,5.780224195792896e-6,1.4029729175094004e-8,-7.326453464977734e-4,6.039657534633526e-6,1.412541622107681e-8,-7.324737353478441e-4,6.279722160979335e-6,1.4213885118568412e-8,-7.323650721376349e-4,6.470322863277057e-6,1.4284138014656952e-8,-7.322974036581984e-4,6.587844288483066e-6,1.4327549734585913e-8,-7.322407659586676e-4,6.619032470350085e-6,1.4339305787613665e-8,-7.321607813179032e-4,6.563928060747684e-6,1.4319492082724502e-8,-7.320233046863541e-4,6.4374966021072834e-6,1.4273690279829042e-8,-7.317999978283977e-4,6.269641412024475e-6,1.4212954276300681e-8,-7.314747508146167e-4,6.103003158628865e-6,1.415295567438129e-8,-7.310503956340962e-4,5.987372946262786e-6,1.4111888222525968e-8,-7.30553886574779e-4,5.969501086118192e-6,1.4106716472582734e-8,-7.300364338939657e-4,6.078516230287104e-6,1.4147877299553037e-8,-7.295642924788504e-4,6.3107236580662384e-6,1.4233817360402606e-8,-7.29198788762624e-4,6.622175486804494e-6,1.4348383535941494e-8,-7.289720333664855e-4,6.9380135239147e-6,1.4464270004578152e-8,-7.288720132220635e-4,7.178968146684719e-6,1.4552629285696456e-8,-7.288478475491566e-4,7.292033122646066e-6,1.4594189017363577e-8,-7.288324425920637e-4,7.267653302542506e-6,1.4585519239748402e-8,-7.287681356467766e-4,7.1358561174840265e-6,1.4537665753835853e-8,-7.286220514824529e-4,6.9483598487620115e-6,1.4469630977301123e-8,-7.28388085845522e-4,6.7592678922152605e-6,1.4401275496516345e-8,-7.280804913481166e-4,6.612273121504457e-6,1.4348581630811597e-8,-7.277252407959589e-4,6.5354231757555416e-6,1.4321716844225746e-8,-7.273527660572583e-4,6.540950211029966e-6,1.4324997142073501e-8,-7.269930114233965e-4,6.6273182842564705e-6,1.4357691570767854e-8,-7.26672240266485e-4,6.781718300136292e-6,1.4414990002890305e-8,-7.264107154812758e-4,6.982473886382033e-6,1.4488915944389668e-8,-7.262207318281119e-4,7.201524453767113e-6,1.4569238469116222e-8,-7.261048945983162e-4,7.407366857871365e-6,1.464452799757507e-8,-7.260549073749619e-4,7.568797659062485e-6,1.4703494431167381e-8,-7.26051465526772e-4,7.659436861891897e-6,1.4736614332348274e-8,-7.260658689683676e-4,7.662469338693832e-6,1.4737849783051846e-8,-7.260636091525101e-4,7.574690894230019e-6,1.4706123818166879e-8,-7.260097162467727e-4,7.408843381596091e-6,1.4646170303919831e-8,-7.258751869359084e-4,7.193327753172565e-6,1.4568414770672015e-8,-7.256434329193616e-4,6.968816351578809e-6,1.4487705994885722e-8,-7.253155606930208e-4,6.781829885047062e-6,1.4420936000282275e-8,-7.249132562182546e-4,6.6756763505280914e-6,1.4383719471977372e-8,-7.244778292372096e-4,6.679612946037396e-6,1.438647617104953e-8,-7.240638597492315e-4,6.798235959896041e-6,1.443065370266917e-8,-7.237266826504071e-4,7.004766318589259e-6,1.4506391489857573e-8,-7.235054613225411e-4,7.243025516191428e-6,1.4593301323513466e-8,-7.2340765660686e-4,7.441405783647142e-6,1.4665511557876749e-8,-7.234034010785615e-4,7.53631382926181e-6,1.4700082991218885e-8,-7.234351925205399e-4,7.495034347391305e-6,1.468523799630331e-8,-7.234393429224217e-4,7.325932982914151e-6,1.462407472647779e-8,-7.233679091640017e-4,7.071240070168453e-6,1.4531993918580552e-8,-7.2320061796834e-4,6.7884821942071435e-6,1.4429962503804012e-8,-7.229442000740695e-4,6.531515408382787e-6,1.4337580335722595e-8,-7.226237824510028e-4,6.338676971745417e-6,1.4268730878278133e-8,-7.222726609371696e-4,6.229186086844068e-6,1.4230270463511608e-8,-7.219243370456767e-4,6.204979076589403e-6,1.4222735101428858e-8,-7.216077209136364e-4,6.254637305234233e-6,1.424182454315981e-8,-7.213447052154808e-4,6.357313551246988e-6,1.427987548429127e-8,-7.211489353260135e-4,6.485977719230195e-6,1.432706196354135e-8,-7.210249390732579e-4,6.610178726644471e-6,1.4372391800318248e-8,-7.209673047686168e-4,6.69888928465445e-6,1.440471413451235e-8,-7.209601280974389e-4,6.7240278150433335e-6,1.4413965009805703e-8,-7.20977427897608e-4,6.664882671759e-6,1.4392744472576701e-8,-7.209854343714221e-4,6.51295128433434e-6,1.4338056762127022e-8,-7.209473640933031e-4,6.27595967171071e-6,1.4252764848687728e-8,-7.20830498270342e-4,5.979351536502665e-6,1.4146129546232638e-8,-7.206142541252474e-4,5.663667819126294e-6,1.4032848951131945e-8,-7.202969652261338e-4,5.377288241995543e-6,1.3930404038766788e-8,-7.198989165010806e-4,5.1656853148451214e-6,1.3855144520274798e-8,-7.194600346572165e-4,5.059761967389392e-6,1.381807600558674e-8,-7.190320840484526e-4,5.066413372274996e-6,1.3821501796020195e-8,-7.186667008859963e-4,5.164217116728777e-6,1.3857550892980985e-8,-7.184018625214499e-4,5.306290101127747e-6,1.3909277458429183e-8,-7.182503872805278e-4,5.430848543585556e-6,1.3954476928807232e-8,-7.181945402363831e-4,5.477745639924967e-6,1.3971593615188382e-8,-7.181899363308149e-4,5.406401461740874e-6,1.3946114620028615e-8,-7.181787956068019e-4,5.208432912413644e-6,1.3875092760960466e-8,-7.181080232052682e-4,4.909307597908525e-6,1.3767756999698908e-8,-7.179446434546303e-4,4.558250395919083e-6,1.3641890350548404e-8,-7.176825410055812e-4,4.2115104900122955e-6,1.3517783575060329e-8,-7.173394303115774e-4,3.9166207270580965e-6,1.3412530864261023e-8,-7.169476918402883e-4,3.7030604472824477e-6,1.3336657086835069e-8,-7.165441754546074e-4,3.5802790936875876e-6,1.3293434686648582e-8,-7.161624370313028e-4,3.540740334466443e-6,1.3280030267105057e-8,-7.158283342384227e-4,3.5648889198243974e-6,1.3289336702046267e-8,-7.155582446948228e-4,3.6259309695520506e-6,1.3311712356351884e-8,-7.153587035969551e-4,3.6936410852722728e-6,1.3336343509346127e-8,-7.152264834437153e-4,3.7373251672731826e-6,1.3352284086218272e-8,-7.151486443905965e-4,3.7285507918335262e-6,1.3349406474614047e-8,-7.151027106872547e-4,3.6443643170977546e-6,1.3319531867733131e-8,-7.150577088567976e-4,3.471371309569102e-6,1.3257885044742072e-8,-7.149771233861474e-4,3.2102934517910352e-6,1.3164734543938834e-8,-7.148246566289133e-4,2.879607352494538e-6,1.304671174381637e-8,-7.145727155168279e-4,2.5159715205526265e-6,1.2916970172838227e-8,-7.14211741474117e-4,2.1691340011926946e-6,1.2793345447593278e-8,-7.13756704294834e-4,1.8907340958244058e-6,1.2694309938959155e-8,-7.13246867286023e-4,1.7195895090076379e-6,1.263368292154631e-8,-7.127372110269032e-4,1.6687917986243744e-6,1.2616035558109819e-8,-7.122837106314069e-4,1.7200599947476228e-6,1.2634736954970411e-8,-7.11927625851379e-4,1.8279231828251246e-6,1.2673513419775649e-8,-7.116842639270483e-4,1.9322272870562014e-6,1.2710931582090524e-8,-7.115395372739504e-4,1.9745795969288553e-6,1.2726232447310445e-8,-7.114547557725002e-4,1.9136654302389338e-6,1.270474472926178e-8,-7.113777961538001e-4,1.735292690655213e-6,1.2641441637291946e-8,-7.112572859060644e-4,1.4546876493828617e-6,1.2541763992937194e-8,-7.110556761496227e-4,1.1107338000528394e-6,1.2419577806846834e-8,-7.107574398631749e-4,7.542984399074633e-7,1.2293006190122626e-8,-7.103703854584871e-4,4.3467766591549663e-7,1.2179579666103922e-8,-7.099206413352514e-4,1.8848792044254664e-7,1.209227121863942e-8,-7.094440058956009e-4,3.38112439872334e-8,1.2037433652280913e-8,-7.089770272256449e-4,-3.005946575574514e-8,1.2014751159396523e-8,-7.085502677011695e-4,-1.8942666134325098e-8,1.2018584823579895e-8,-7.081845728037587e-4,4.1504324056836106e-8,1.2039859175127503e-8,-7.078898530136206e-4,1.2085396250360532e-7,1.2067846450829226e-8,-7.07665357590904e-4,1.8796389173417595e-7,1.2091574008084617e-8,-7.075005062641622e-4,2.1404627281451953e-7,1.2100880394544461e-8,-7.073757642706145e-4,1.7527949313218791e-7,1.2087321949694448e-8,-7.072636271028598e-4,5.563556618695607e-8,1.2045175593473184e-8,-7.07130371455471e-4,-1.496666377152965e-7,1.1972682276401499e-8,-7.069396260706627e-4,-4.3038263800395507e-7,1.1873415802529695e-8,-7.06658736467273e-4,-7.585342773530107e-7,1.1757266370952408e-8,-7.062679103912365e-4,-1.0893111587869973e-6,1.164011958067034e-8,-7.057699493448573e-4,-1.3683565279279107e-6,1.1541242460665835e-8,-7.051958014848092e-4,-1.546143275736306e-6,1.1478149826314971e-8,-7.046006461074884e-4,-1.5955509000684547e-6,1.1460378253613378e-8,-7.040489785775769e-4,-1.5244730508863847e-6,1.1485082661954835e-8,-7.035938487042454e-4,-1.3758182686775965e-6,1.1537113738876136e-8,-7.032597812034259e-4,-1.2137575651664247e-6,1.1593901613711014e-8,-7.030369079407669e-4,-1.1027795845962554e-6,1.1632801609042198e-8,-7.028872532957906e-4,-1.0889580682558247e-6,1.1637630789638363e-8,-7.027584678100196e-4,-1.1897271998792792e-6,1.1602238033439061e-8,-7.025988796732991e-4,-1.3932883666335377e-6,1.1530725736851102e-8,-7.02369467900341e-4,-1.6652872066721532e-6,1.1435125811886794e-8,-7.020507465969052e-4,-1.959328698109832e-6,1.1331711320640786e-8,-7.016442939978633e-4,-2.2282184952551496e-6,1.1237034626369414e-8,-7.011697035243303e-4,-2.4335618600813347e-6,1.1164544945400339e-8,-7.006583801112918e-4,-2.5521150452073807e-6,1.1122365961218336e-8,-7.001460060304543e-4,-2.5781375982917395e-6,1.1112496075816941e-8,-6.996655112290227e-4,-2.5220161431554106e-6,1.1131319063948755e-8,-6.992418776281199e-4,-2.4062965783673872e-6,1.1171004748331547e-8,-6.988893060139256e-4,-2.260591788360715e-6,1.1221277939326513e-8,-6.986105278643894e-4,-2.1166353920163535e-6,1.1271116834225942e-8,-6.983975667488254e-4,-2.0042272969958953e-6,1.1310137596645092e-8,-6.982331775114807e-4,-1.948167868728002e-6,1.1329646935505253e-8,-6.980924984224593e-4,-1.9658036073505293e-6,1.1323502940205919e-8,-6.979449169280985e-4,-2.064692866216944e-6,1.128895545665963e-8,-6.977566158534427e-4,-2.240091878769088e-6,1.1227562045779688e-8,-6.974946560896657e-4,-2.4725062008836e-6,1.1146078731656455e-8,-6.971334322778307e-4,-2.7265579611108132e-6,1.1056870056968845e-8,-6.966634001809645e-4,-2.9535495920723803e-6,1.0976992639682918e-8,-6.960998225694706e-4,-3.1003923112501523e-6,1.0925024976391107e-8,-6.954864809875409e-4,-3.125514095301827e-6,1.0915470365326537e-8,-6.94888405730523e-4,-3.0171655312078273e-6,1.0952385872816837e-8,-6.943721615170897e-4,-2.8040956720319907e-6,1.1025740558355747e-8,-6.939812476892919e-4,-2.5493950355256136e-6,1.111363121856989e-8,-6.937199582600355e-4,-2.328052856844355e-6,1.119007794880418e-8,-6.935545525919977e-4,-2.199995786806156e-6,1.123431816683279e-8,-6.93429179173718e-4,-2.1924546956316556e-6,1.1236874298485071e-8,-6.932862200777068e-4,-2.2974342328778687e-6,1.1200440938200634e-8,-6.930818299262455e-4,-2.4806963116481874e-6,1.1136809772812793e-8,-6.927932877982263e-4,-2.69515791678022e-6,1.1062250907052743e-8,-6.924193527516066e-4,-2.8932872464684024e-6,1.0993214408490107e-8,-6.919763333906085e-4,-3.036081365862266e-6,1.0943205101581768e-8,-6.91492215226939e-4,-3.098326934476717e-6,1.0920952638432522e-8,-6.910002904512773e-4,-3.070683044984637e-6,1.0929697707612377e-8,-6.905331356871504e-4,-2.959140124946023e-6,1.0967394783237994e-8,-6.90117596465121e-4,-2.7823877442401985e-6,1.1027633804261848e-8,-6.897712626577218e-4,-2.567793687719598e-6,1.1101026790081565e-8,-6.895006358475275e-4,-2.3467550008997916e-6,1.1176795508382824e-8,-6.89300944615274e-4,-2.150115599113473e-6,1.1244329229978124e-8,-6.891573100006782e-4,-2.00424231133623e-6,1.1294520632905088e-8,-6.890467540316551e-4,-1.9280356409594636e-6,1.1320793607430406e-8,-6.889406381638624e-4,-1.930734024848246e-6,1.1319874885504703e-8,-6.888074504279619e-4,-2.0102414136189414e-6,1.1292397488351405e-8,-6.886161724085662e-4,-2.1518695593095066e-6,1.1243363432643985e-8,-6.883407101463712e-4,-2.327739840236361e-6,1.1182368829498123e-8,-6.879658514959947e-4,-2.497813089077346e-6,1.1123245267791766e-8,-6.874944007746656e-4,-2.6143891697839814e-6,1.108247815801189e-8,-6.869533275424424e-4,-2.6320148015926607e-6,1.1075749525894508e-8,-6.863944546199724e-4,-2.522826202578732e-6,1.1112635168862053e-8,-6.858844538666012e-4,-2.2926275030821306e-6,1.1191109583836215e-8,-6.854832279089802e-4,-1.9877298379677976e-6,1.1295269233710088e-8,-6.852191743942243e-4,-1.6834486218362717e-6,1.1399318636952878e-8,-6.850762207670568e-4,-1.4561494259965552e-6,1.1477115718733162e-8,-6.850017506227822e-4,-1.353885669014518e-6,1.1512169978020316e-8,-6.849299395502611e-4,-1.382232489232581e-6,1.1502489363880025e-8,-6.848057305429362e-4,-1.5099055715152289e-6,1.1458706325152704e-8,-6.845983153559325e-4,-1.6859188037799119e-6,1.1398245647313847e-8,-6.843027428170722e-4,-1.8571846721204412e-6,1.1339299333489303e-8,-6.839342878524915e-4,-1.9804742909492373e-6,1.1296704524613013e-8,-6.83520537940993e-4,-2.0280142608472192e-6,1.1280001238857747e-8,-6.830941226507634e-4,-1.9884992920636643e-6,1.1293074773063915e-8,-6.826870433621648e-4,-1.8656132505174621e-6,1.13346680053564e-8,-6.823264387413217e-4,-1.6753696630438363e-6,1.1399305110651174e-8,-6.82031487121087e-4,-1.4427423697938251e-6,1.1478456664893744e-8,-6.818114056550049e-4,-1.1978017957364357e-6,1.1561864398442774e-8,-6.816645845240956e-4,-9.716026242010502e-7,1.1638940368353777e-8,-6.81578901101889e-4,-7.920793248862827e-7,1.1700156773758746e-8,-6.815332503350359e-4,-6.803319074311323e-7,1.173830361103633e-8,-6.815001275355418e-4,-6.477490111422285e-7,1.1749467706559448e-8,-6.814489184104265e-4,-6.941843501332436e-7,1.1733661035226025e-8,-6.813496403718091e-4,-8.071935459534741e-7,1.1695093476635976e-8,-6.81177053403738e-4,-9.623862476189849e-7,1.164206416834527e-8,-6.809151476327394e-4,-1.1251098518570805e-6,1.158639073471916e-8,-6.80561933977751e-4,-1.254012468855875e-6,1.154218474453644e-8,-6.801338767888566e-4,-1.307464024167702e-6,1.1523643336190613e-8,-6.79668066854345e-4,-1.2535982747354408e-6,1.1541612761355467e-8,-6.792188902309273e-4,-1.0830088825351644e-6,1.1599275967291585e-8,-6.78845970446115e-4,-8.196398734036575e-7,1.1688487599342648e-8,-6.785938804680131e-4,-5.21865523976247e-7,1.1789443842818592e-8,-6.784716853381285e-4,-2.670917135713526e-7,1.1875898145539714e-8,-6.784454801674145e-4,-1.229862560247459e-7,1.1924869708763637e-8,-6.78451422731065e-4,-1.2039502744957288e-7,1.1925808501975738e-8,-6.784224136183189e-4,-2.4413852327126643e-7,1.188376744728601e-8,-6.783122474568518e-4,-4.450160638167141e-7,1.1815400961230667e-8,-6.781056774875232e-4,-6.622121589485789e-7,1.1741382274874111e-8,-6.778146379208505e-4,-8.426921141446391e-7,1.1679787181502826e-8,-6.774678679897052e-4,-9.513665380458594e-7,1.1642596348323024e-8,-6.771004646386013e-4,-9.730261227384026e-7,1.163500954750871e-8,-6.767463032638174e-4,-9.096388229470013e-7,1.165635793010542e-8,-6.764335621130428e-4,-7.761178639860844e-7,1.170155308564171e-8,-6.761823408651586e-4,-5.962181208590508e-7,1.1762500661860506e-8,-6.76003339470729e-4,-3.9886548663780184e-7,1.1829366116277767e-8,-6.758971746004418e-4,-2.1465214616865e-7,1.189177429067364e-8,-6.75854349008327e-4,-7.229850977163453e-8,1.1940006997847552e-8,-6.758560464209218e-4,4.947983413017979e-9,1.1966210837941946e-8,-6.75876029123182e-4,2.7488136745964224e-9,1.196554475242547e-8,-6.758837935815457e-4,-8.161918553295126e-8,1.1937085753012027e-8,-6.758487615666738e-4,-2.3790708629766936e-7,1.1884286585775744e-8,-6.757450114730958e-4,-4.432901815565406e-7,1.1814847546413683e-8,-6.75555981832124e-4,-6.647221873892998e-7,1.1739927591423942e-8,-6.752785440219556e-4,-8.632714013106472e-7,1.1672680443195546e-8,-6.749257989924772e-4,-1.0003070529774613e-6,1.1626159710092367e-8,-6.745277736728225e-4,-1.04533785405786e-6,1.1610666373841045e-8,-6.74128768082691e-4,-9.849061499935828e-7,1.1630749295767326e-8,-6.737798662443241e-4,-8.306924641557072e-7,1.1682486866486084e-8,-6.735259935027122e-4,-6.231378273326227e-7,1.1752281613645974e-8,-6.733897881249691e-4,-4.257941722485988e-7,1.1818755484053001e-8,-6.733589931298577e-4,-3.0779861157673254e-7,1.185861347121806e-8,-6.733862647382449e-4,-3.189045445843042e-7,1.1855019353474524e-8,-6.734052719418553e-4,-4.6933352922082787e-7,1.1804407956455615e-8,-6.73356095178138e-4,-7.26669545411652e-7,1.1717608951207223e-8,-6.732058920007578e-4,-1.03135768079192e-6,1.1614681309859787e-8,-6.729549688437168e-4,-1.3203085634674708e-6,1.1516948301661333e-8,-6.726292231984343e-4,-1.5456410863813466e-6,1.1440629950089799e-8,-6.722669138054278e-4,-1.6825813512472906e-6,1.1394139323916218e-8,-6.719069745690607e-4,-1.728292691642922e-6,1.1378462534167964e-8,-6.715817867987357e-4,-1.6963310651301452e-6,1.1389032635968985e-8,-6.713140269531039e-4,-1.6104898771342205e-6,1.1417818254359392e-8,-6.711159576172181e-4,-1.4997911391117643e-6,1.1455027849828653e-8,-6.7098967808978e-4,-1.3947627025395655e-6,1.1490377166722129e-8,-6.709276170943395e-4,-1.3244157649111584e-6,1.1514110299334853e-8,-6.709132260466664e-4,-1.3133527174552276e-6,1.1517964713543777e-8,-6.709221924822578e-4,-1.3787160274900425e-6,1.1496180968261428e-8,-6.709246793383498e-4,-1.5271024239717297e-6,1.144652479963841e-8,-6.708890101922466e-4,-1.7521057789037506e-6,1.1371108056069637e-8,-6.707867329827515e-4,-2.03349427394575e-6,1.1276673671676083e-8,-6.705983390374779e-4,-2.3389296906621046e-6,1.1174033427878806e-8,-6.703183942720542e-4,-2.6286525837106187e-6,1.1076507144233978e-8,-6.699586275639561e-4,-2.862764821608109e-6,1.0997482902064068e-8,-6.695477636789244e-4,-3.009877260332382e-6,1.0947514998244096e-8,-6.691275106414471e-4,-3.0553669347500317e-6,1.093155672567259e-8,-6.687448110835039e-4,-3.0073333148598256e-6,1.0946969098039167e-8,-6.684411914721439e-4,-2.8982694801256994e-6,1.09829603567278e-8,-6.682410506419115e-4,-2.7805932569171573e-6,1.1022061743662119e-8,-6.681420923177971e-4,-2.7151112480580224e-6,1.1043947687668447e-8,-6.681122430425281e-4,-2.7538322953627776e-6,1.103115103055556e-8,-6.680967532338296e-4,-2.922229780866871e-6,1.0975005824736362e-8,-6.680351768836946e-4,-3.208938989025025e-6,1.0879155445024393e-8,-6.678818198079746e-4,-3.569206800689314e-6,1.07584697087957e-8,-6.676199799142348e-4,-3.941264216912157e-6,1.0633592515886972e-8,-6.672637124200508e-4,-4.26723863883779e-6,1.0523919613312888e-8,-6.668484745365341e-4,-4.508722102625259e-6,1.0442353880863865e-8,-6.664173881818245e-4,-4.652194081672177e-6,1.0393476953270497e-8,-6.660096559372878e-4,-4.705856726945458e-6,1.0374609216835914e-8,-6.6565400917304e-4,-4.692450116383464e-6,1.0378215067070535e-8,-6.65366691378365e-4,-4.641992506869934e-6,1.0394325668100645e-8,-6.651520724436302e-4,-4.586289293999795e-6,1.0412367136578511e-8,-6.650041770194664e-4,-4.555288303349263e-6,1.0422370733593156e-8,-6.649082145975189e-4,-4.574557922642622e-6,1.0415807035090087e-8,-6.648419516531094e-4,-4.663098319825658e-6,1.0386306849815094e-8,-6.647772977923628e-4,-4.830967209773467e-6,1.0330446811403125e-8,-6.64682793482468e-4,-5.0767082913095886e-6,1.0248610310513204e-8,-6.645276535009935e-4,-5.385272368662441e-6,1.014569716509483e-8,-6.642874935506787e-4,-5.727739295789978e-6,1.0031241672519338e-8,-6.639508926581502e-4,-6.064303841982294e-6,9.918438764338643e-9,-6.635248175263377e-4,-6.351327713612035e-6,9.821803180388749e-9,-6.630363208422775e-4,-6.551644593751551e-6,9.753736842483382e-9,-6.625286011154107e-4,-6.6453412099685115e-6,9.720943269391243e-9,-6.620515220562129e-4,-6.637210765563028e-6,9.721958663164957e-9,-6.616490030515382e-4,-6.557815458928014e-6,9.746799934408593e-9,-6.613470434299081e-4,-6.457206611119339e-6,9.779019488102298e-9,-6.611460182660693e-4,-6.3927400851426745e-6,9.799687434697574e-9,-6.610196289517972e-4,-6.414181155194645e-6,9.79227361540468e-9,-6.609211623926225e-4,-6.550090663171576e-6,9.747151909141079e-9,-6.607958578615187e-4,-6.799453044112043e-6,9.664428684028409e-9,-6.605961968829965e-4,-7.131600161094896e-6,9.554052462247139e-9,-6.602952658559864e-4,-7.495192731900008e-6,9.432897717263338e-9,-6.59893337291204e-4,-7.833471097170003e-6,9.319721647992294e-9,-6.594154199307799e-4,-8.10003951822256e-6,9.229912967892944e-9,-6.589015974741606e-4,-8.26940720505979e-6,9.171982193286219e-9,-6.583948475325114e-4,-8.339570999084169e-6,9.146702941363071e-9,-6.579310057521284e-4,-8.32782653290947e-6,9.1484953460235e-9,-6.575332522116057e-4,-8.26326332931551e-6,9.167892353553748e-9,-6.572109057110091e-4,-8.179301464685762e-6,9.193979644439203e-9,-6.569608894446945e-4,-8.108097437895046e-6,9.21621770862212e-9,-6.56770170806039e-4,-8.077049399664383e-6,9.225578151807406e-9,-6.566181353193237e-4,-8.106736580969876e-6,9.2152178288862e-9,-6.56478602741209e-4,-8.209430423295186e-6,9.18097422655523e-9,-6.563217982510564e-4,-8.387533414582957e-6,9.121895607077113e-9,-6.561169927829369e-4,-8.631800308226666e-6,9.04085550962115e-9,-6.558365936151278e-4,-8.91992576094595e-6,8.945052981019506e-9,-6.55462020900297e-4,-9.216878126763627e-6,8.845932484547084e-9,-6.549905970801155e-4,-9.47883318251498e-6,8.757896962005024e-9,-6.544410174747893e-4,-9.66200422791736e-6,8.695387849400742e-9,-6.538536905887626e-4,-9.73541782277881e-6,8.668667779698704e-9,-6.532830284212719e-4,-9.693338183562016e-6,8.679746644976681e-9,-6.527824423394355e-4,-9.561069012846983e-6,8.72050444633388e-9,-6.523874598641779e-4,-9.389804754378765e-6,8.77438033627454e-9,-6.521043283306284e-4,-9.24162630277522e-6,8.821227300503736e-9,-6.519088365606864e-4,-9.170835057503315e-6,8.843328210896267e-9,-6.517549256998489e-4,-9.20896440435165e-6,8.83024338053133e-9,-6.515887679402991e-4,-9.35797527614904e-6,8.781065819974303e-9,-6.513631828401716e-4,-9.592194273994584e-6,8.703882366870197e-9,-6.510485784423071e-4,-9.866901365965093e-6,8.613066195460134e-9,-6.506383852720353e-4,-1.0130449155765347e-5,8.525370284901691e-9,-6.501484713535216e-4,-1.0336665778532513e-5,8.455876704000505e-9,-6.496113485493177e-4,-1.0454609877589606e-5,8.414782975243667e-9,-6.490671674646127e-4,-1.0473577830441985e-5,8.405737418544261e-9,-6.485542315122563e-4,-1.0402716045749107e-5,8.42594207718587e-9,-6.48101570190052e-4,-1.0266290315339773e-5,8.467673384414735e-9,-6.477249772667448e-4,-1.0096801161149698e-5,8.520499798179897e-9,-6.474264817325805e-4,-9.928189624151298e-6,8.573469231980985e-9,-6.471962142913522e-4,-9.790591753984345e-6,8.616798727509629e-9,-6.470153398393853e-4,-9.707072173579713e-6,8.642931881769316e-9,-6.4685902944632e-4,-9.691946903899617e-6,8.647090904414083e-9,-6.466990567131604e-4,-9.749935634588221e-6,8.627569008879582e-9,-6.465061945891082e-4,-9.875497327061216e-6,8.585973740369635e-9,-6.462529770962636e-4,-1.005213254042066e-5,8.527489357020453e-9,-6.459175297868126e-4,-1.0252057697941712e-5,8.46101921967877e-9,-6.454888874271263e-4,-1.0437434177263124e-5,8.398808897746156e-9,-6.449732096697071e-4,-1.0564966265109888e-5,8.354946495019238e-9,-6.4439852831923e-4,-1.0595381812212404e-5,8.34225639995346e-9,-6.438138844513587e-4,-1.0507072144502154e-5,8.367854756241516e-9,-6.432790367365826e-4,-1.0308974899831868e-5,8.428993979308454e-9,-6.428454586197086e-4,-1.0044472629606271e-5,8.511840347096126e-9,-6.425364546618369e-4,-9.780404242463435e-6,8.595019151624936e-9,-6.423374992473061e-4,-9.584105091257316e-6,8.656940621566346e-9,-6.422025862017104e-4,-9.499924509528801e-6,8.683268961814048e-9,-6.420723318815535e-4,-9.536788226021915e-6,8.6709032555823e-9,-6.418937058551346e-4,-9.670339340684684e-6,8.62736165406817e-9,-6.416333150807353e-4,-9.854985606826542e-6,8.567021549391805e-9,-6.412819489618678e-4,-1.0038675384978085e-5,8.506456394204669e-9,-6.40852233208935e-4,-1.0175358821881159e-5,8.460459308358457e-9,-6.403723843214741e-4,-1.0233119886925515e-5,8.439407583253215e-9,-6.398785177155639e-4,-1.0197922583846564e-5,8.44800812947473e-9,-6.394070755339369e-4,-1.0073651943128085e-5,8.485229457435074e-9,-6.389883923031362e-4,-9.879211991447938e-6,8.545190825663756e-9,-6.386421940044092e-4,-9.643564938301254e-6,8.61872891621823e-9,-6.383754932638375e-4,-9.399866438278023e-6,8.695270282083074e-9,-6.381828126059341e-4,-9.179868626602678e-6,8.764629424150486e-9,-6.380482197594612e-4,-9.009455497870036e-6,8.818449463555083e-9,-6.379484020972791e-4,-8.905757191846968e-6,8.851137444227476e-9,-6.378559844764216e-4,-8.875794396678722e-6,8.860308373744816e-9,-6.37742611576723e-4,-8.916182840260416e-6,8.846890961194638e-9,-6.375817826161573e-4,-9.013389503892508e-6,8.815063136955268e-9,-6.373517365413405e-4,-9.144324590548281e-6,8.772088767448038e-9,-6.37038822435467e-4,-9.277480646007872e-6,8.727983133697308e-9,-6.366416476230471e-4,-9.375433709051482e-6,8.69473010267958e-9,-6.361755073060954e-4,-9.400076070259292e-6,8.68460137525384e-9,-6.356751215483993e-4,-9.321725715954837e-6,8.70721463674457e-9,-6.351921226563311e-4,-9.131431137281154e-6,8.765577089452952e-9,-6.34783668220924e-4,-8.851983055038034e-6,8.852573074499977e-9,-6.34492590110691e-4,-8.53933103808297e-6,8.950528563696693e-9,-6.343273922649219e-4,-8.26772377613986e-6,9.035920785086607e-9,-6.342551582389573e-4,-8.102013804904856e-6,9.088118007656425e-9,-6.342142013915741e-4,-8.071933386762328e-6,9.097504097485443e-9,-6.341394360266019e-4,-8.163387841999844e-6,9.06827899549311e-9,-6.339853162802021e-4,-8.329403778276332e-6,9.01508325066568e-9,-6.337359214736137e-4,-8.510810762680521e-6,8.956528860220945e-9,-6.334023030696212e-4,-8.65473815155575e-6,8.909374863487501e-9,-6.330132471509208e-4,-8.725202991217194e-6,8.885158614041552e-9,-6.326051717095914e-4,-8.706169178413972e-6,8.889176992237429e-9,-6.32214019748295e-4,-8.599843727994052e-6,8.920959050065301e-9,-6.318697327111989e-4,-8.422780448879686e-6,8.975440229886825e-9,-6.315928418750007e-4,-8.20125617049522e-6,9.044392176943476e-9,-6.313926873838825e-4,-7.966459175451952e-6,9.117945199759327e-9,-6.31267082506243e-4,-7.749777386235528e-6,9.186104282521891e-9,-6.312033160743475e-4,-7.5785372180136775e-6,9.240130028371382e-9,-6.311803126735913e-4,-7.472534294452365e-6,9.273661681811642e-9,-6.311716770969148e-4,-7.441681249593242e-6,9.283469414099118e-9,-6.311491861629334e-4,-7.484987837433047e-6,9.269772409499044e-9,-6.310862639818491e-4,-7.590780571477355e-6,9.236162458649285e-9,-6.309612058273856e-4,-7.737892241529536e-6,9.189230845951367e-9,-6.307601275839634e-4,-7.897660405035442e-6,9.137956611667645e-9,-6.304796987183105e-4,-8.036756534142556e-6,9.09284140190737e-9,-6.301296693209371e-4,-8.121168651637492e-6,9.064674114885852e-9,-6.297347052073675e-4,-8.122014010732786e-6,9.062695008476826e-9,-6.293340333682221e-4,-8.02357893613418e-6,9.092032490280441e-9,-6.289764922907992e-4,-7.832498886235678e-6,9.150771158405365e-9,-6.287088356458074e-4,-7.584313389584958e-6,9.227855564074418e-9,-6.285582300395714e-4,-7.340955663643736e-6,9.303857526237659e-9,-6.285162181702288e-4,-7.173981894358338e-6,9.35622506385365e-9,-6.28535844534191e-4,-7.137050918742098e-6,9.367918818323381e-9,-6.285482266619833e-4,-7.242236086511384e-6,9.334891322630107e-9,-6.284908233474023e-4,-7.4556587282647425e-6,9.267547066221383e-9,-6.28330425274692e-4,-7.714648020679488e-6,9.185435045716488e-9,-6.28069302206002e-4,-7.95377724697567e-6,9.109102634548203e-9,-6.277362671666278e-4,-8.124785819023314e-6,9.053825972438715e-9,-6.273721375619873e-4,-8.204270724462586e-6,9.02715680817319e-9,-6.27017398081553e-4,-8.191793049541557e-6,9.029461806338658e-9,-6.267047725449272e-4,-8.103665827061228e-6,9.055810702686439e-9,-6.26456043916988e-4,-7.966249400547607e-6,9.098033223137005e-9,-6.26281416479543e-4,-7.810389877515416e-6,9.146451274581206e-9,-6.261800463441795e-4,-7.667092566462788e-6,9.191260130576387e-9,-6.261411718711373e-4,-7.564004290537873e-6,9.223675064183579e-9,-6.261457836463466e-4,-7.522438367703082e-6,9.23690378724907e-9,-6.261689058554466e-4,-7.554911651594159e-6,9.226935824039986e-9,-6.26182575765119e-4,-7.663394769762143e-6,9.193084339014298e-9,-6.261594321595429e-4,-7.83867655737204e-6,9.138166390547462e-9,-6.26076519398364e-4,-8.061135092227624e-6,9.068247870454783e-9,-6.259188201018052e-4,-8.302926480673475e-6,8.991964522431026e-9,-6.256821123187454e-4,-8.531474630101965e-6,8.919455933728389e-9,-6.253747887567023e-4,-8.714062415411706e-6,8.860964423618094e-9,-6.250183114255093e-4,-8.823240323023451e-6,8.825167866103795e-9,-6.246458882436894e-4,-8.842823215536685e-6,8.817300503612222e-9,-6.242985755887415e-4,-8.774026346559433e-6,8.837199099376945e-9,-6.240177934968095e-4,-8.640273119230142e-6,8.87774343727035e-9,-6.238340168367981e-4,-8.487734929015043e-6,8.924628410892147e-9,-6.237537835039231e-4,-8.37786762163323e-6,8.958649435262117e-9,-6.237508622334895e-4,-8.370050553809897e-6,8.961109428361436e-9,-6.237694285501078e-4,-8.498608243715725e-6,8.921029687418638e-9,-6.237425116459058e-4,-8.75592709653261e-6,8.840509552635665e-9,-6.236182223750581e-4,-9.0935440897417e-6,8.734482255018053e-9,-6.233789176946422e-4,-9.44210315649724e-6,8.62453087546554e-9,-6.230431618178639e-4,-9.738006393072087e-6,8.530559779025655e-9,-6.226528415322329e-4,-9.942072412796151e-6,8.464944949980187e-9,-6.222558156538971e-4,-1.0044216892862036e-5,8.431044644216811e-9,-6.218928123420268e-4,-1.0057759649626142e-5,8.424931676993069e-9,-6.215911924046659e-4,-1.0010051523072495e-5,8.438260126232764e-9,-6.213639804945358e-4,-9.934048776771606e-6,8.460847692598394e-9,-6.212115296909202e-4,-9.862436775050359e-6,8.482499035264433e-9,-6.211238864357817e-4,-9.823973462843352e-6,8.494171700339035e-9,-6.210830596535341e-4,-9.841115150435778e-6,8.488757155704299e-9,-6.210651942122257e-4,-9.928215073960674e-6,8.461672312188594e-9,-6.210429443543682e-4,-1.0090001829574346e-5,8.411340895070526e-9,-6.209883936927952e-4,-1.032045635967511e-5,8.339532086435201e-9,-6.208766895726924e-4,-1.0602611237518307e-5,8.251410557946112e-9,-6.206901011511374e-4,-1.0909904384581257e-5,8.155117882712867e-9,-6.204217801816662e-4,-1.1209428967393452e-5,8.060785794006027e-9,-6.200783346355796e-4,-1.1467000570356854e-5,7.978999665257574e-9,-6.196803527606607e-4,-1.1653487857353938e-5,7.918867885019981e-9,-6.192602675084233e-4,-1.1751341629004252e-5,7.886009589301413e-9,-6.18857430993645e-4,-1.1760013081941588e-5,7.880853644284182e-9,-6.185107199373036e-4,-1.1698990162283051e-5,7.897639687734814e-9,-6.182494033759342e-4,-1.1607106693188978e-5,7.924550386176266e-9,-6.180837782626559e-4,-1.1536704553317361e-5,7.945441153139379e-9,-6.17998354061986e-4,-1.1541930108901036e-5,7.943422534415343e-9,-6.179514865732182e-4,-1.1662608663681637e-5,7.905878369024749e-9,-6.178847530264709e-4,-1.1908666705688085e-5,7.829382187794986e-9,-6.177413716940561e-4,-1.225291771545529e-5,7.722050838337925e-9,-6.174866683392963e-4,-1.2638281908291842e-5,7.601388082277714e-9,-6.171202061499132e-4,-1.2997807711744528e-5,7.488094639614473e-9,-6.166733164451345e-4,-1.3277552122048224e-5,7.398956214429256e-9,-6.161948260617495e-4,-1.3451111439177265e-5,7.342324255674225e-9,-6.157338992816079e-4,-1.3521276834735159e-5,7.317585667968248e-9,-6.153277910312762e-4,-1.351221220619276e-5,7.3175400954822244e-9,-6.149969832299286e-4,-1.345864223227892e-5,7.331678474457581e-9,-6.147459001310118e-4,-1.3396792379450818e-5,7.3489284361196675e-9,-6.14566195981989e-4,-1.335865891362545e-5,7.3594093806847335e-9,-6.144404163975216e-4,-1.3369061432935648e-5,7.3553652588823905e-9,-6.143451013492217e-4,-1.3444276092296466e-5,7.331624223806665e-9,-6.142533201726146e-4,-1.3591271145411236e-5,7.285864502738724e-9,-6.141370824533147e-4,-1.3807054893883965e-5,7.2188286363125555e-9,-6.139701752177742e-4,-1.4078197634895255e-5,7.134475176715785e-9,-6.137317622253945e-4,-1.4381127354302392e-5,7.03989660873347e-9,-6.13410548401449e-4,-1.4684067691371548e-5,6.944744457685035e-9,-6.130086364730966e-4,-1.4951295234998012e-5,6.8599511266353936e-9,-6.125436581487522e-4,-1.5149749237378634e-5,6.795727421966501e-9,-6.120476639627279e-4,-1.5256983677622905e-5,6.759136642679807e-9,-6.115619176413706e-4,-1.5268340231572266e-5,6.751886205597447e-9,-6.111281095430912e-4,-1.520077746265615e-5,6.769114447606619e-9,-6.107779587857513e-4,-1.5091461683002552e-5,6.799746818271109e-9,-6.10524015294988e-4,-1.4990666324170982e-5,6.828571027830531e-9,-6.103544553284269e-4,-1.4950126437351983e-5,6.839718154874809e-9,-6.10233932630094e-4,-1.5009403395997819e-5,6.820816675408024e-9,-6.101112797303565e-4,-1.5183860384006196e-5,6.7667449207401965e-9,-6.099330136988942e-4,-1.5458296216177136e-5,6.6817180549403645e-9,-6.096591780398321e-4,-1.5789545255279567e-5,6.578625916310926e-9,-6.092759401267423e-4,-1.611861496564348e-5,6.475384794437283e-9,-6.087995316766636e-4,-1.638857118742033e-5,6.389456320634693e-9,-6.082696917744599e-4,-1.656102986792536e-5,6.332762451172584e-9,-6.07735931357823e-4,-1.6624724248411486e-5,6.309028251969762e-9,-6.07243028636269e-4,-1.659408062376702e-5,6.314176973263146e-9,-6.068212130456064e-4,-1.6500688633924005e-5,6.3388763395423195e-9,-6.064828882107512e-4,-1.6382732655089433e-5,6.3716957047222936e-9,-6.062244250029457e-4,-1.6276375396916556e-5,6.401688363734559e-9,-6.060303124501623e-4,-1.6210566121514825e-5,6.41997117246288e-9,-6.058775295989655e-4,-1.6204774019256874e-5,6.420448907864246e-9,-6.057391575612956e-4,-1.6268443228459086e-5,6.400024095330046e-9,-6.055871563899351e-4,-1.640110876257458e-5,6.358597590462493e-9,-6.053947651586242e-4,-1.6592563064539658e-5,6.299040120511544e-9,-6.051391799853258e-4,-1.6823062293831563e-5,6.2271479239230684e-9,-6.04804958969757e-4,-1.7064185629920318e-5,6.15140407656365e-9,-6.043880305658054e-4,-1.7281339145854306e-5,6.082244629251485e-9,-6.038993664978827e-4,-1.743882255386278e-5,6.03054138334135e-9,-6.033664982363028e-4,-1.7507647128342022e-5,6.005236775662678e-9,-6.028306776843586e-4,-1.747471621344875e-5,6.0105545030052955e-9,-6.02338498179153e-4,-1.7350074414647643e-5,6.043785475000533e-9,-6.019293636463869e-4,-1.7168208077473955e-5,6.094852354472843e-9,-6.016229799273229e-4,-1.6981102965108023e-5,6.148328418570691e-9,-6.014120043088848e-4,-1.6844415703121967e-5,6.1875079574704055e-9,-6.012631542790681e-4,-1.6801491798937394e-5,6.199152357907398e-9,-6.011264926259588e-4,-1.687094638850435e-5,6.177250027198649e-9,-6.009494858060641e-4,-1.7041783355707502e-5,6.124605564008008e-9,-6.006912495843881e-4,-1.7277030403387907e-5,6.051910031149934e-9,-6.003329547922971e-4,-1.7524265175610315e-5,5.974701125327572e-9,-5.998817609412311e-4,-1.7729749635034893e-5,5.909152133979997e-9,-5.993674834698096e-4,-1.7852060415235455e-5,5.8679359897686786e-9,-5.98833377167506e-4,-1.7871308208750187e-5,5.857377281089162e-9,-5.983242961249349e-4,-1.7791603804934904e-5,5.876628602108236e-9,-5.978761089750183e-4,-1.763692721889734e-5,5.9188348328191164e-9,-5.97509246371083e-4,-1.744281060909608e-5,5.973566370425565e-9,-5.972272340443155e-4,-1.724717783696112e-5,6.029530158965291e-9,-5.970191412732754e-4,-1.708303930127975e-5,6.076760853223087e-9,-5.968639601907031e-4,-1.6974182393121108e-5,6.107949062772968e-9,-5.967351618909186e-4,-1.6933562355692315e-5,6.1189757620988596e-9,-5.966044914543551e-4,-1.6963408114122988e-5,6.108924653343465e-9,-5.964448552706594e-4,-1.7056054741231575e-5,6.079858424794432e-9,-5.962326779452772e-4,-1.719488339402509e-5,6.036551327657856e-9,-5.959503269411983e-4,-1.7355296242159556e-5,5.9862122504836265e-9,-5.955890709894159e-4,-1.7506243438176608e-5,5.9380510048463094e-9,-5.951525234145372e-4,-1.7613258416163484e-5,5.902393637339857e-9,-5.946596553230791e-4,-1.764400034962936e-5,5.889033529766786e-9,-5.941454005656148e-4,-1.757658081028564e-5,5.9047300999132285e-9,-5.936562505153676e-4,-1.740909145309199e-5,5.9503386560754e-9,-5.932393300043767e-4,-1.7166185049999746e-5,6.018820818675055e-9,-5.929270253618056e-4,-1.6897363809678338e-5,6.095715953083003e-9,-5.927235829331455e-4,-1.6664334583585255e-5,6.162832492505709e-9,-5.926012168281408e-4,-1.6521086061127168e-5,6.204080876826821e-9,-5.925088318791681e-4,-1.6495650783895652e-5,6.2108462578212325e-9,-5.923893296595289e-4,-1.6581983910685432e-5,6.18445634623603e-9,-5.921973240230338e-4,-1.6744373968298434e-5,6.135018198325406e-9,-5.919105305805832e-4,-1.6930486544110382e-5,6.077709827522491e-9,-5.915325837551485e-4,-1.708674963487434e-5,6.028320742756395e-9,-5.910887401414671e-4,-1.7171114333858196e-5,5.999481940305171e-9,-5.906173977802621e-4,-1.7160751663905477e-5,5.998318193545036e-9,-5.901602907269286e-4,-1.7054266849847147e-5,6.025679671747184e-9,-5.897536026274595e-4,-1.6869186278252847e-5,6.076768658723353e-9,-5.894215706944987e-4,-1.6636088071657184e-5,6.142787676934763e-9,-5.891734417193177e-4,-1.639112845867565e-5,6.21311247089221e-9,-5.890037891503861e-4,-1.616881901687457e-5,6.277444531418832e-9,-5.888953870874903e-4,-1.599649526801642e-5,6.32750261058349e-9,-5.888234156540204e-4,-1.5891120266408232e-5,6.358035497480615e-9,-5.887598278097893e-4,-1.585830828911002e-5,6.36716114540014e-9,-5.886770911880141e-4,-1.5892951435849457e-5,6.356201350362242e-9,-5.88551067772663e-4,-1.598065881617845e-5,6.329251478975357e-9,-5.883632730491481e-4,-1.609944079656462e-5,6.292675486505938e-9,-5.881029486085081e-4,-1.622153632414498e-5,6.254574948934901e-9,-5.877692932525501e-4,-1.6315735016464423e-5,6.224131558643309e-9,-5.873738337045345e-4,-1.6350916709415508e-5,6.2105932820424296e-9,-5.869421485315761e-4,-1.630165097021894e-5,6.221632150191717e-9,-5.865131121598357e-4,-1.6156063475258574e-5,6.261002414793579e-9,-5.861331744440621e-4,-1.592434760802166e-5,6.325989749491587e-9,-5.858441940187316e-4,-1.5643598634390996e-5,6.405942312898085e-9,-5.856671951075539e-4,-1.5373106219251778e-5,6.483607719282582e-9,-5.855897763285556e-4,-1.517729276675414e-5,6.540086767802591e-9,-5.855664407766135e-4,-1.5101743305100796e-5,6.561819413722951e-9,-5.855345304499817e-4,-1.5154956209859986e-5,6.545946710766161e-9,-5.854378007236991e-4,-1.5306366023333386e-5,6.500984799091855e-9,-5.852448952227367e-4,-1.550045098503084e-5,6.442830961710452e-9,-5.849551516575722e-4,-1.567734639813534e-5,6.388848412759949e-9,-5.845930082893017e-4,-1.5789777542943528e-5,6.352965558410412e-9,-5.841969678310368e-4,-1.5811729052473348e-5,6.343113417189745e-9,-5.838084552194186e-4,-1.5739511632880423e-5,6.360814546463471e-9,-5.834633032295308e-4,-1.5588003820527e-5,6.402145833924053e-9,-5.831864760835484e-4,-1.538472081382847e-5,6.4593502606737386e-9,-5.829896181558738e-4,-1.5163375096637597e-5,6.5226561160815544e-9,-5.828708999533577e-4,-1.4957769589611858e-5,6.582074977801076e-9,-5.828167555766546e-4,-1.479662672105976e-5,6.628984531476504e-9,-5.828049993600993e-4,-1.46998740108272e-5,6.657304486326205e-9,-5.828086784632086e-4,-1.4676619073704028e-5,6.664156600488167e-9,-5.828000486403008e-4,-1.472477456925716e-5,6.649997471487258e-9,-5.827541399829672e-4,-1.4832100153552331e-5,6.618295601842242e-9,-5.826515746817173e-4,-1.4978198357449995e-5,6.574915976578972e-9,-5.824806499688132e-4,-1.5136975222470618e-5,6.5273858129103555e-9,-0.00058223891266244855,-1.5279382997478107e-5,6.484113573877451e-9,-5.819343932522649e-4,-1.537659130322262e-5,6.453510098108357e-9,-5.815864337643335e-4,-1.540395190071223e-5,6.442875322162274e-9,-5.812255138914551e-4,-1.5346207013270155e-5,6.456887019322757e-9,-5.808906783087563e-4,-1.5203879326331496e-5,6.495696015125998e-9,-5.806227398257667e-4,-1.4999252917115385e-5,6.553106536171523e-9,-5.804523980144355e-4,-1.4778150938693694E-05,6.6159779015583296e-9,-5.803857787226134e-4,-1.460244790593015e-5,6.666344613112382e-9,-5.803949019080188e-4,-1.453107430828226e-5,6.68691651811743e-9,-5.804222577193308e-4,-1.4595598468279076e-5,6.6681996557004115e-9,-5.804015691477434e-4,-1.4784365571006996e-5,6.613182223466211e-9,-5.802844416075218e-4,-1.504659664064087e-5,6.536251455252701e-9,-5.800572407115345e-4,-1.5314205201811868e-5,6.456956105272316e-9,-5.79740462121484e-4,-1.5527257460748158e-5,6.392682319350163e-9,-5.793754455308698e-4,-1.564997575685766e-5,6.354031421288331e-9,-5.79008526869674e-4,-1.5673984575231003E-05,6.3438332685434564e-9,-5.786793595545836e-4,-1.561305703577987e-5,6.358555023821292e-9,-5.78414926698478e-4,-1.5494822966848187e-5,6.390561211013941e-9,-5.782279782895778e-4,-1.535291284406682e-5,6.430282529202295e-9,-5.781179986625985e-4,-1.5220866757312826e-5,6.467953037038186e-9,-5.780733038593612e-4,-1.5127728821522725e-5,6.494942808591026e-9,-5.780737214613339e-4,-1.5094878202343984e-5,6.5047765753731806e-9,-5.780937304323509e-4,-1.5133945325895573e-5,6.493829724860568e-9,-5.781059012122124e-4,-1.5245845768728994e-5,6.461654192249107e-9,-5.780844231366714e-4,-1.5420967008494582E-05,6.410916404303534e-9,-5.780084375089962e-4,-1.5640566187065733e-5,6.346952753693187e-9,-5.778647777628711e-4,-1.5879285361295647e-5,6.277008199105833e-9,-5.776498175490725e-4,-1.6108436934896513e-5,6.209288793870668e-9,-5.773703656839252e-4,-1.6299721111280603e-5,6.151931069035016e-9,-5.770436111533959e-4,-1.6429208290678547e-5,6.111913238799296e-9,-5.766960225533119e-4,-1.6481506020845262e-5,6.093889659946264e-9,-5.763608734161528e-4,-1.6454038016908552e-5,6.098936037071565e-9,-5.760736744361726e-4,-1.6361021724264736e-5,6.123317511020036e-9,-5.758647102549619e-4,-1.6235696451862072e-5,6.157725998483951e-9,-5.757488547335339e-4,-1.612803540234014e-5,6.1878352067051535e-9,-5.757153315080947e-4,-1.609480237938911e-5,6.197125012537102e-9,-5.757234435926061e-4,-1.6181340271018654e-5,6.17217305833007e-9,-5.757111211388329e-4,-1.6400971995423106e-5,6.108703432860775e-9,-5.756170143529824e-4,-1.6724228696811727e-5,6.014819069588441e-9,-5.754058752564376e-4,-1.7087730422599016e-5,5.908527015219574e-9,-5.750819117894468e-4,-1.7419566737748216e-5,5.810457691770534e-9,-5.746829127406637e-4,-1.7665934924859706e-5,5.736209930949652e-9,-5.742617293776332e-4,-1.7804887133825812e-5,5.692403621165638e-9,-5.738676244788915e-4,-1.7844643668928444e-5,5.677123312045796e-9,-5.735352118200017e-4,-1.781324586487339e-5,5.682774688163753e-9,-5.732813705044003e-4,-1.774712544477777e-5,5.699224028512855e-9,-5.731070706253558e-4,-1.7682465513048927e-5,5.716183635261324e-9,-5.730010810481334e-4,-1.7650014543434743e-5,5.7246996299768535e-9,-5.729437243720952e-4,-1.7672436560521165e-5,5.717992329661441e-9,-5.729101327422091e-4,-1.77629912703616e-5,5.691943387538161e-9,-5.728732254490138e-4,-1.7924881686606425e-5,5.645364913125561e-9,-5.728066872098459e-4,-1.8151183111504288e-5,5.580046983978404e-9,-5.726880446715707e-4,-1.8425518479711568e-5,5.500544376149344e-9,-5.725017360320156e-4,-1.8723776519021976e-5,5.4136497171616706e-9,-5.722417478110209e-4,-1.901709758465021e-5,5.327525281669176e-9,-5.719132058612187e-4,-1.9275973453983113e-5,5.250556794951275e-9,-5.715324599224961e-4,-1.9474966424702655e-5,5.190061549896955e-9,-5.711254487065863e-4,-1.9597425970417595e-5,5.150993130292952e-9,-5.707243215314012e-4,-1.963951786184574e-5,5.134796911166756e-9,-5.703624645452386e-4,-1.961289496480425e-5,5.138582384870229e-9,-5.700681701023597e-4,-1.9545349551733103e-5,5.154808129149603e-9,-5.698573617980196e-4,-1.947850234148492e-5,5.171796776237571e-9,-5.697265168248463e-4,-1.946126166119291e-5,5.175504776714801e-9,-5.696483046445741e-4,-1.9538307489946467e-5,5.152814866181088e-9,-5.695737447050487e-4,-1.9735023712205888e-5,5.095954657144991e-9,-5.694440581573207e-4,-2.0044122435153433e-5,5.006492424902162e-9,-5.692107976121244e-4,-2.0422259733411498e-5,4.896447185420986e-9,-5.688556702159739e-4,-2.080239735784011e-5,4.784807248298537e-9,-5.683984430252771e-4,-2.1118146298752406e-5,4.69055903235853e-9,-5.678877874524411e-4,-2.1327200844530532e-5,4.6259837892894646e-9,-5.673813072802742e-4,-2.1421699487486857e-5,4.593705379214873e-9,-5.669266461901139e-4,-2.1423333992840117e-5,4.588040913127525e-9,-5.665515251973581e-4,-2.1370168449335505e-5,4.598631280140418e-9,-5.66262954244887e-4,-2.1303510202976556e-5,4.614029495947506e-9,-5.660516519242294e-4,-2.1259150169743164e-5,4.624106881604416e-9,-5.658977760906469e-4,-2.1263246516499423e-5,4.621241923637268e-9,-5.657758344743934e-4,-2.1331262909287216e-5,4.600715978969188e-9,-5.656582879656547e-4,-2.146824690958318e-5,4.560744399958647e-9,-5.655182799852074e-4,-2.166944979816653e-5,4.502372881234427e-9,-5.653320939464026e-4,-2.19210611198664e-5,4.429288721729575e-9,-5.650817267772786e-4,-2.2201302733604196e-5,4.347494108741701e-9,-5.647576281566446e-4,-2.248238891148829e-5,4.2647329227178e-9,-5.64361175875774e-4,-2.273385814627313e-5,4.1895539317782425e-9,-5.639060211063388e-4,-2.2927360460003696e-5,4.129994037758887e-9,-5.634173669126164e-4,-2.3042324624474837e-5,4.092025805841426e-9,-5.629285951340259e-4,-2.3071330028784256e-5,4.078067292741761e-9,-5.624753358397186e-4,-2.3023652525244365e-5,4.085953126634584e-9,-5.620879235594856e-4,-2.2925599059856908e-5,4.1087412604200885e-9,-5.617838311213657e-4,-2.2816948292584702e-5,4.13556726191145e-9,-5.615618506350042e-4,-2.274366245931516e-5,4.1535543827756625e-9,-5.613996862607292e-4,-2.2747751693369897e-5,4.150602400752755e-9,-5.61256426475516e-4,-2.2855979724977274e-5,4.1186293748158945e-9,-5.61080812039059e-4,-2.307016575944345e-5,4.056477812301431e-9,-5.608247544560862e-4,-2.3362823347901296e-5,3.971353014138016e-9,-5.6045888275338e-4,-2.3681771753724775e-5,3.877666551810311e-9,-5.599840255643514e-4,-2.3964648029816697e-5,3.7929726560466655e-9,-5.594323224548366e-4,-2.4158896301923775e-5,3.732284697554104e-9,-5.588562140180068e-4,-2.4238382403495358e-5,3.7033386543166194e-9,-5.583104935056323e-4,-2.4208922097151482e-5,3.7049913841555217e-9,-5.578362118896362e-4,-2.4101634993633252e-5,3.729013562684922e-9,-5.574526700823866e-4,-2.395959922159319e-5,3.763717738012945e-9,-5.571580150477938e-4,-2.3824918225424018e-5,3.7974724057465164e-9,-5.56934945270612e-4,-2.3730431642789787e-5,3.820986693463586e-9,-5.567575402096818e-4,-2.369650431855389e-5,3.828264474037562e-9,-5.565968561839238e-4,-2.3731175634325677e-5,3.81667238499676e-9,-5.564247258473144e-4,-2.383170766272784e-5,3.786608603817477e-9,-5.562162343773809e-4,-2.3986308687498875e-5,3.741076017959136e-9,-5.559516320965893e-4,-2.41756410521933e-5,3.6852669334650524e-9,-5.556182989939095e-4,-2.4374329729557413e-5,3.626126257835752e-9,-5.552129829469255e-4,-2.455308708972398e-5,3.5717509128408136e-9,-5.547439478003086e-4,-2.4682169708976556e-5,3.5304410056635687e-9,-5.542320441001034e-4,-2.4736519034990855e-5,3.509299202176376e-9,-5.537093394875636e-4,-2.470209240070845e-5,3.5124945121858324e-9,-5.532141884717492e-4,-2.4581739735308707e-5,3.539625413001244e-9,-5.527827987017785e-4,-2.4398065123244182e-5,3.584874043486559e-9,-5.524392207026548e-4,-2.419093064879187e-5,3.6375935558350362E-09,-5.521871673866484e-4,-2.400904254983496e-5,3.6845003460724823e-9,-5.52006996859421e-4,-2.3897600320895216e-5,3.7129769442225496e-9,-5.518594417411545e-4,-2.3885806156130697e-5,3.714505319352247e-9,-5.516952472542898e-4,-2.3978206075858976e-5,3.6871706513466653e-9,-5.514680023266997e-4,-2.415252676916681e-5,3.636467576060659e-9,-5.511466570996784e-4,-2.436472997812125e-5,3.5741160763841065e-9,-5.507243054631822e-4,-2.456016575596165e-5,3.5151030037156743e-9,-5.502204943898792e-4,-2.4688078368491355e-5,3.4736716022299434e-9,-5.49675845316952e-4,-2.4715297420699776e-5,3.4594450841273604e-9,-5.491403496431156e-4,-2.4634524609268043e-5,3.475010754579904e-9,-5.486594079579832e-4,-2.4464309834586896e-5,3.5158016687115214e-9,-5.482626949453814e-4,-2.424130364105868e-5,3.572121989232335e-9,-5.479593003710058e-4,-2.400859263852101e-5,3.6322781071167195e-9,-5.477393924139225e-4,-2.380483572567349e-5,3.685543859039702e-9,-5.475800136344878e-4,-2.365734300350956e-5,3.7241138416981567e-9,-5.47451900115605e-4,-2.3579686113701558e-5,3.743864278401933e-9,-5.473251545092862e-4,-2.3572576485177517e-5,3.744220422532077e-9,-5.471730460260657e-4,-2.3626248739021626e-5,3.727569108803425e-9,-5.469742478632765e-4,-2.3723043848052887e-5,3.6985616396725427e-9,-5.467142469598954e-4,-2.3839630731377964e-5,3.6634824609621807e-9,-5.463866264206015e-4,-2.3948973655604125e-5,3.6296880385067596e-9,-5.4599456793534e-4,-2.4022629138410048e-5,3.604980769764583e-9,-5.455523444943196e-4,-2.4034135649642785e-5,3.5967054365603564e-9,-5.450858818683846e-4,-2.396401744104895e-5,3.6104037986387385e-9,-5.446308564687652e-4,-2.380610222496027e-5,3.648086038965713e-9,-5.442267710418497e-4,-2.3573376044700058e-5,3.7065940327411654e-9,-5.43906780201333e-4,-2.3300037015731352e-5,3.776970362392915e-9,-5.436858585814063e-4,-2.303631065445945e-5,3.8457757017923984e-9,-5.43552613478327e-4,-2.28353475000358e-5,3.898554409891338e-9,-5.434699258623914e-4,-2.2736277504907688e-5,3.924381501274142e-9,-5.433855832143338e-4,-2.275078970747129e-5,3.919540539705527e-9,-5.43248646299094e-4,-2.285936214945721e-5,3.888688548443496e-9,-5.430245801652687e-4,-2.3018194797770242e-5,3.8431759853901846e-9,-5.427037893107168e-4,-2.3172944399802506e-5,3.7974973736510936e-9,-5.423020260258028e-4,-2.3273629234107787e-5,3.765329016282113e-9,-5.418542195221602e-4,-2.328631805513169e-5,3.756319626683319e-9,-5.414045400541133e-4,-2.3199382210688513e-5,3.774257587440266e-9,-5.409955890221134e-4,-2.302384304625818e-5,3.8167930066406206e-9,-5.406592269132189e-4,-2.2788582348018324e-5,3.876564618794517e-9,-5.404109156371855e-4,-2.253214165155441e-5,3.943315026925249e-9,-5.402484736817223e-4,-2.2293496058127136e-5,4.00637464546443e-9,-5.401548723226671e-4,-2.210423231623976e-5,4.056855142789439e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json new file mode 100644 index 000000000..f56819cf3 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":7000,"numberOfSamples":1000,"samples":[-5.401035826582183e-4,-2.1983771746004456e-5,4.089071108861903e-9,-5.400645679375473e-4,-2.1937995914044596e-5,4.1010390739496695e-9,-5.400093979365809e-4,-2.1960549237341188e-5,4.094200825458988e-9,-5.399147607226752e-4,-2.203560775605646e-5,4.072680770337793e-9,-5.397644338651072e-4,-2.2140989396072942e-5,4.0424039620270295e-9,-5.395502643031555e-4,-2.2250959079911428e-5,4.010291455194114e-9,-5.392727708698771e-4,-2.233868896010399e-5,3.983582390762636e-9,-5.389417235021638e-4,-2.2378792834005243e-5,3.969178139964558e-9,-5.385766058145648e-4,-2.235055698671764e-5,3.972815745495291e-9,-5.382062428829531e-4,-2.2242365349685453e-5,3.9978965146973945e-9,-5.378662132655593e-4,-2.205712418011711e-5,4.043993326717811e-9,-5.375924932704364e-4,-2.181705877637256e-5,4.105479870305896e-9,-5.374109340395555e-4,-2.1564488189815053e-5,4.171221914461289e-9,-5.373252109046606e-4,-2.13546121672999e-5,4.226432351021938e-9,-5.373095626709229e-4,-2.123923851906108e-5,4.256999417283581e-9,-5.373130817418842e-4,-2.1246850964482913e-5,4.25485673473855e-9,-5.372765380678705e-4,-2.136960735856047e-5,4.221561718856039e-9,-5.371540300970259e-4,-2.156549994879516e-5,4.167859343731849e-9,-5.36928145915775e-4,-2.177449463181616e-5,4.109507993256763e-9,-5.36612298142394e-4,-2.193926959851254e-5,4.061836554881471e-9,-5.362421974391817e-4,-2.202084762893932e-5,4.035594559950374e-9,-5.358628658080441e-4,-2.200502185841941e-5,4.035163172736923e-9,-5.355167351147426e-4,-2.1900830823744038e-5,4.058798324504693e-9,-5.35235449411885e-4,-2.173439788390032e-5,4.100071676730384e-9,-5.350357193602122e-4,-2.15410881740401e-5,4.14980207032798e-9,-5.349185757880749e-4,-2.135782693181579e-5,4.198050291539687e-9,-5.348712290073628e-4,-2.121657442592248e-5,4.2359280087428855e-9,-5.348708000481933e-4,-2.1139615342117445e-5,4.257004944159546e-9,-5.348890826615417e-4,-2.113709309176623e-5,4.258128208977309e-9,-5.348974104172614e-4,-2.1206799246401138e-5,4.239584522007182e-9,-5.348708384321045e-4,-2.1335822917691524e-5,4.204678615706449e-9,-5.347911231697716e-4,-2.1503424398811796e-5,4.158913513206647e-9,-5.346483663470459e-4,-2.1684383203511062e-5,4.109023325019758e-9,-5.344415971986584e-4,-2.185222293312799e-5,4.062070768370815e-9,-5.341787121227865e-4,-2.198213649495927e-5,4.024683100836483e-9,-5.338760303296781e-4,-2.2053786749643512e-5,4.002365575691231e-9,-5.335574557412858e-4,-2.2054309116071213e-5,3.998758028608726e-9,-5.332528017860458e-4,-2.198181627770456e-5,4.014702338546216e-9,-5.32994271803446e-4,-2.1849184863030615e-5,4.047158626760407e-9,-5.328099775273082e-4,-2.1686695872980368E-05,4.088373074123842e-9,-5.327143982259301e-4,-2.1540670747909262e-5,4.1261167888255816e-9,-5.326982547305342e-4,-2.146472539588816e-5,4.145954976805639e-9,-5.327237676269208e-4,-2.150269819024173e-5,4.135827219007261e-9,-5.32732172820136e-4,-2.166880035547954e-5,4.091442962833996e-9,-5.32664363807273e-4,-2.193675634261866e-5,4.019307535221708e-9,-5.324850262715923e-4,-2.2247356034033065e-5,3.93482109123221e-9,-5.321959712692641e-4,-2.253169043764306e-5,3.856170494966331e-9,-5.318318024819819e-4,-2.2736299986202895e-5,3.797697407775919e-9,-5.314434001136979e-4,-2.283727543038531e-5,3.7661716224598815e-9,-5.310801862783224e-4,-2.2840328090950416e-5,3.760701663621395e-9,-5.307784695622606e-4,-2.277209911293882e-5,3.774865010501329e-9,-5.305570300482153e-4,-2.2669296597542187e-5,3.799377675031908e-9,-5.304177923198672e-4,-2.2569563199808032e-5,3.824373068544768e-9,-5.303490345079164e-4,-2.2505211219014473e-5,3.841055895162692e-9,-5.303294436667859e-4,-2.2499458669989806e-5,3.842819986704146e-9,-5.303323047521583e-4,-2.2564506861846283e-5,3.825934653411622e-9,-5.303295770130921e-4,-2.2701095439328812e-5,3.78981094362531e-9,-5.302956400451363e-4,-2.2899349303107257e-5,3.736840685640963e-9,-5.30210473665667e-4,-2.314073527658426e-5,3.6718507329490764e-9,-5.300620142371433e-4,-2.340093393614476e-5,3.601265981895817e-9,-5.298474349228372e-4,-2.3653284469214588e-5,3.532132956929273e-9,-5.29573308984056e-4,-2.3872320401723e-5,3.4711768964710575e-9,-5.292548431176042e-4,-2.403707365259649e-5,3.4239812057610383e-9,-5.289143407918906e-4,-2.4134058857944783e-5,3.3942741989696835e-9,-5.285789266630395e-4,-2.4159906281443744e-5,3.3832709646259577e-9,-5.282773952237134e-4,-2.4123609199085298e-5,3.389033411558258e-9,-5.280357364388392e-4,-2.404808982327215e-5,3.4059246595776906e-9,-5.278708810726782e-4,-2.3969949940549298e-5,3.4245089739342943e-9,-5.277831391864141e-4,-2.3935357712190903e-5,3.4325187746853774e-9,-5.277497546540487e-4,-2.3990053843999665e-5,3.417490568679712e-9,-5.277243373408124e-4,-2.416362760309801e-5,3.371043381811958e-9,-5.276472969010053e-4,-2.4453303594010498e-5,3.2933522318209953e-9,-5.274672038760931e-4,-2.4817592116745615e-5,3.1949762152372857e-9,-5.271634422555336e-4,-2.5188059386224728e-5,3.0937979755767632e-9,-5.267559068389037e-4,-2.549567899523349e-5,3.008057415556971e-9,-5.262952781608044e-4,-2.569664316277229e-5,2.9495561606916857e-9,-5.258412694183832e-4,-2.5783493066863733e-5,2.9207489680924703e-9,-5.254425066389419e-4,-2.5779503885456728e-5,2.9161612247094987e-9,-5.251263833011977e-4,-2.5724489785007588e-5,2.925940256027055e-9,-5.248986095698239e-4,-2.566102959629115e-5,2.9392604634341714e-9,-5.247480432907525e-4,-2.5625368004893986e-5,2.946595015690205e-9,-5.246528338231885e-4,-2.5643091786020372e-5,2.940887498147975e-9,-5.245858121778989e-4,-2.572797628618578e-5,2.918009092055048e-9,-5.245186697908287e-4,-2.5882406676612352e-5,2.8768303754599108e-9,-5.244252403009383e-4,-2.6098529986454154e-5,2.8190430572214277e-9,-5.242842104460674e-4,-2.6359918036558112e-5,2.748752781998075e-9,-5.240813809095547e-4,-2.664376012583758e-5,2.6718566779627634e-9,-5.23811405473642e-4,-2.6923697743507696e-5,2.5952305181850944e-9,-5.234786998958045e-4,-2.7173303690041893e-5,2.5257824612885647e-9,-5.230971720563157e-4,-2.7369871435687406e-5,2.4694878843742183e-9,-5.226886747385083e-4,-2.749801736194075e-5,2.4305157487672832e-9,-5.222802740203602e-4,-2.7552679878417226e-5,2.410501767346455e-9,-5.219004721067165e-4,-2.7541114744677728e-5,2.4080150610133087e-9,-5.215746064004773e-4,-2.748348611429587e-5,2.4182963593044943e-9,-5.213196916609409e-4,-2.741169261001642e-5,2.433387542607336e-9,-5.211390633776294e-4,-2.7365830864708946e-5,2.442883976030173e-9,-5.210177939670833e-4,-2.7387386588784694e-5,2.4356382416405185e-9,-5.2092103264559e-4,-2.7508753633437043e-5,2.4025749182162106e-9,-5.207983793056417e-4,-2.7740648686792387e-5,2.3401865242185253e-9,-5.205966266482828e-4,-2.806223642295004e-5,2.253350576167634e-9,-5.202789824851698e-4,-2.8421269302758358e-5,2.1554312055901617e-9,-5.198423209709797e-4,-2.8748981292602243e-5,2.064380772209385e-9,-5.193213569961983e-4,-2.8985277857182498e-5,1.996093068377223e-9,-5.187754286828383e-4,-2.9100856801229018e-5,1.95860814721846e-9,-5.182654734879904e-4,-2.910408008464851e-5,1.950328402209735e-9,-5.17834468885133e-4,-2.903146570281326e-5,1.9624204795998646e-9,-5.174994717055985e-4,-2.8930642345991606e-5,1.9830589980046977e-9,-5.172543344144145e-4,-2.8845521813800735e-5,2.0010793286060667e-9,-5.170775031307184e-4,-2.8808046397317225e-5,2.0080420772500573e-9,-5.169400421587481e-4,-2.883586587420426e-5,1.998918998843043e-9,-5.168116638617822e-4,-2.8933416322078027e-5,1.9719933681402133e-9,-5.166645952694134e-4,-2.9094191480639365e-5,1.928446821526537e-9,-5.16476024252827e-4,-2.930309443473024e-5,1.8718459878098334e-9,-5.162298604848831e-4,-2.9538674218475745e-5,1.8075644448687839e-9,-5.15918183163581e-4,-2.9775463189840496e-5,1.7421226458261029e-9,-5.155423951219354e-4,-2.9986754143992856e-5,1.682415416929058e-9,-5.151137407302886e-4,-3.0148054298078004e-5,1.6348102041026057e-9,-5.14652612618079e-4,-3.024103796625174e-5,1.6041685250154395e-9,-5.141862173715009e-4,-3.025736743569097e-5,1.5929194416540232e-9,-5.137445594032925e-4,-3.0201544061071227e-5,1.6003442662174793e-9,-5.133551073665073e-4,-3.0091913298744713e-5,1.6222546448333353e-9,-5.130369284461957e-4,-2.9959105712960137e-5,1.651244127376648e-9,-5.127954099507898e-4,-2.9841663506552026e-5,1.6776263789056898e-9,-5.126187743607301e-4,-2.977911818282605e-5,1.6910763709352394e-9,-5.124775920139699e-4,-2.980317215645477e-5,1.6828919402962205e-9,-5.123285291058596e-4,-2.992827896807966e-5,1.6485704768880652e-9,-5.121232184702717e-4,-3.0144080674584436e-5,1.5900146804836555e-9,-5.118216874803194e-4,-3.041333535976552e-5,1.5163090868023582e-9,-5.114069216089788e-4,-3.06788578426189e-5,1.4420450362417905e-9,-5.108941341159282e-4,-3.087997193374652e-5,1.383045829244638e-9,-5.103283884814538e-4,-3.097314754523197e-5,1.350950290890561e-9,-5.097696659935665e-4,-3.0946985077149386e-5,1.3492802047218747e-9,-5.092722871601308e-4,-3.0823751756630565e-5,1.3729826486285837e-9,-5.088689790088103e-4,-3.064783528784369e-5,1.4112787115572115e-9,-5.085657929059659e-4,-3.046880866802487e-5,1.4518356546063253e-9,-5.08346811352875e-4,-3.032757248561428e-5,1.4841879987672864e-9,-5.081833205273989e-4,-3.024951848205968e-5,1.5014927928567059e-9,-5.080425577921641e-4,-3.024389232124672e-5,1.5008319918093534e-9,-5.078937898414977e-4,-3.0306504584070308e-5,1.4827093655212703e-9,-5.077117106050379e-4,-3.042331137863873e-5,1.4502784815439696e-9,-5.074781087294359e-4,-3.0573627604291196e-5,1.4085697181512755e-9,-5.071827632231985e-4,-3.0732762305829554e-5,1.363783212066794e-9,-5.068241386956512e-4,-3.087440447664662e-5,1.322616276444108e-9,-5.064099743494193e-4,-3.097328317084115e-5,1.2915471371343079e-9,-5.059573813360568e-4,-3.100850766576199e-5,1.2759963019804067e-9,-5.054917280931815e-4,-3.09675266499804e-5,1.2793674539120017e-9,-5.050436028710859e-4,-3.085000943630236e-5,1.3021016279347987e-9,-5.046435847782699e-4,-3.067039629349787e-5,1.3410151010863194e-9,-5.043154041700915e-4,-3.0457621016956392e-5,1.3892739397176436e-9,-5.040690924503929e-4,-3.025093383015183e-5,1.4372920683562972e-9,-5.038963498673596e-4,-3.0091976510982597e-5,1.4745708467378526e-9,-5.037701041335682e-4,-3.001474285367648e-5,1.4921523724764496e-9,-5.036491510419384e-4,-3.0036038672483e-5,1.4850891219563646e-9,-5.034873278369172e-4,-3.0149240525066758e-5,1.4542250103523055e-9,-5.032453132593057e-4,-3.032361586041559e-5,1.4066373962624775e-9,-5.029021178492986e-4,-3.0510322165871625e-5,1.3543382658568904e-9,-5.024627404979756e-4,-3.06545113386691e-5,1.3112907864465489e-9,-5.01958677253733e-4,-3.0710749963624354e-5,1.2894420761309303e-9,-5.014397693770699e-4,-3.065674386674007e-5,1.2951067361437504e-9,-5.009594637119274e-4,-3.0499774007028698e-5,1.327181960804589e-9,-5.005591265624038e-4,-3.027289359707675e-5,1.3779593095465411e-9,-5.002577464773517e-4,-3.002286754188913e-5,1.4360302437884732e-9,-5.000502980916162e-4,-2.9795642680252517e-5,1.4898545010720947e-9,-4.999135018056022e-4,-2.96252177016554e-5,1.530564984614016e-9,-4.998148703059288e-4,-2.9528734833433275e-5,1.5533180663703762e-9,-4.997210391324866e-4,-2.9507108813167577e-5,1.557313949211449e-9,-4.996033580441727e-4,-2.95486805281199e-5,1.5450349761472517e-9,-4.994407134467235e-4,-2.963354086042027e-5,1.5212284427432084e-9,-4.99220513807549e-4,-2.9737275227078863e-5,1.4919412361183264e-9,-4.989388300780407e-4,-2.9833867578447486e-5,1.4637165471569636e-9,-4.986003615032496e-4,-2.989808300652266e-5,1.442933990607473e-9,-4.982184149831263e-4,-2.9907927865987277e-5,1.4351810441446417e-9,-4.978145252172193e-4,-2.9847712851288548e-5,1.4445248582206659e-9,-4.974169169914042e-4,-2.971176155615385e-5,1.4726359068551763e-9,-4.970569165391165e-4,-2.9508056286774713e-5,1.517893845763169e-9,-4.967628303390822e-4,-2.926026998042455e-5,1.574829976621728e-9,-4.96551978398408e-4,-2.900608455871382e-5,1.634431128285346e-9,-4.96423302209712e-4,-2.879027553840682e-5,1.6857146709917446e-9,-4.963541060645736e-4,-2.865323310167557e-5,1.7184681499924557e-9,-4.963036761354488e-4,-2.861842652841363e-5,1.7263462753477494e-9,-4.962236841992082e-4,-2.8683800491744274e-5,1.7091218148852898e-9,-4.960720233794146e-4,-2.8820919804120417e-5,1.673117417745899e-9,-4.958250916601518e-4,-2.898244031513813e-5,1.6295915726764063e-9,-4.954843911405692e-4,-2.911516518981793e-5,1.591663143962164e-9,-4.950757567029083e-4,-2.9174289607850693e-5,1.5708062654753593e-9,-4.946419883627445e-4,-2.9134683182893188e-5,1.5739443674704452e-9,-4.942313197632331e-4,-2.899634780038582e-5,1.601897900139963e-9,-4.938850760519116e-4,-2.8782878175581034e-5,1.6495407345080696e-9,-4.936280480341194e-4,-2.8533738897703263e-5,1.707525662802973e-9,-4.934641902772148e-4,-2.8293088750190768e-5,1.7649546067683797e-9,-4.933783032088761e-4,-2.80988640410467e-5,1.8121051613246878e-9,-4.933422254005704e-4,-2.7975289802310766e-5,1.8424210940995162e-9,-4.933227875226166e-4,-2.793022331205908e-5,1.853363241919422e-9,-4.932888738289174e-4,-2.7956735636432285e-5,1.8461872237371115e-9,-4.932160962554518e-4,-2.8037116641906087e-5,1.8250326211687373e-9,-4.930889594766327e-4,-2.8147435486230603e-5,1.7957702854856959e-9,-4.929012427190119e-4,-2.8261502965497104e-5,1.7649326447086253e-9,-4.926554961798312e-4,-2.835390391705434e-5,1.7388763334173934e-9,-4.923623095573031e-4,-2.8402349479687208e-5,1.7231683216680764e-9,-4.920395867133475e-4,-2.8389889647024718e-5,1.722073563894763e-9,-4.917115540492151e-4,-2.8307497965287012e-5,1.7379836944677346e-9,-4.914067695061618e-4,-2.815714883271202e-5,1.7707008124423624e-9,-4.911541935152892e-4,-2.7954758530073625e-5,1.8166878141640076e-9,-4.9097673506944e-4,-2.773135265619518e-5,1.868683014872907e-9,-4.908829819257416e-4,-2.753002578310636e-5,1.9163130986412e-9,-4.908600342594571e-4,-2.7396792960745575e-5,1.9482274136412787e-9,-4.908721173909682e-4,-2.736633164669827e-5,1.9555585722015448e-9,-4.908685218729858e-4,-2.7447945016454782e-5,1.935427847646306e-9,-4.907995565142859e-4,-2.7619289411182313e-5,1.8926347984558103e-9,-4.906336832509187e-4,-2.7832348344015255e-5,1.8383867655335314e-9,-4.903676923646972e-4,-2.802925951189207e-5,1.7865984348223615e-9,-4.900260027571856e-4,-2.81603898676814e-5,1.7495716625922467e-9,-4.89651135545775e-4,-2.8197278587712897e-5,1.7348223698973235e-9,-4.892906052692192e-4,-2.8137212384925217e-5,1.7438257478064728e-9,-4.889850187707911e-4,-2.800028120231637e-5,1.7725003438639047e-9,-4.887600631930353e-4,-2.782169608840279e-5,1.8128296668897378e-9,-4.886231415493295e-4,-2.764229676123075e-5,1.8550063239660704e-9,-4.885642484701803e-4,-2.7499550273375093e-5,1.8896080581632753e-9,-4.88560103003217e-4,-2.7420633789239168e-5,1.9094190965771907e-9,-4.885802098906471e-4,-2.741859369588705e-5,1.9105887095828677e-9,-4.885932963466409e-4,-2.749186494528233e-5,1.892958847920264e-9,-4.885727070221833e-4,-2.7626586385723848e-5,1.8596151082628022e-9,-4.884999125827284e-4,-2.780056601507957e-5,1.815912403162441e-9,-4.883659918181414e-4,-2.7987688626019622e-5,1.7683031663824352e-9,-4.881714965792303e-4,-2.8161857991136438e-5,1.7232621331153711e-9,-4.879253817230721e-4,-2.8300053385778088e-5,1.6864793191295907e-9,-4.876435954604153e-4,-2.838460913858599e-5,1.6623231380987314e-9,-4.87347570898538e-4,-2.8405127125376862e-5,1.6534487206287574e-9,-4.870624676766653e-4,-2.8360400428380635e-5,1.660397458157364e-9,-4.8681464921107224e-4,-2.8260451760282097e-5,1.6810999234867354e-9,-4.8662762504571956e-4,-2.8128194590838857e-5,1.710378936760407e-9,-4.865159493111669e-4,-2.7999259061439134e-5,1.7398402884595435e-9,-4.864778001628795e-4,-2.7917688216241995e-5,1.758782346831438e-9,-4.864891773662556e-4,-2.7925623648319725e-5,1.7566564873211407e-9,-4.8650469881442816e-4,-2.8048055389582203e-5,1.7268436941845679e-9,-4.8646900022718986e-4,-2.8278862045047066e-5,1.6701987909042514e-9,-4.863366661408441e-4,-2.8577505119019685e-5,1.596014686119699e-9,-4.8609095859314307e-4,-2.888149066944309e-5,1.5191180487893385e-9,-4.8575031131327785e-4,-2.9129303897496962e-5,1.4543917377772392e-9,-4.853594628443761e-4,-2.928127077721007e-5,1.4117786999065398e-9,-4.8497195747729835e-4,-2.932864068445588e-5,1.394071849831376e-9,-4.846337505125269e-4,-2.92901557766113e-5,1.397598481510503e-9,-4.8437354423659196e-4,-2.9201624636557654e-5,1.4144787727407432e-9,-4.842002284292061e-4,-2.9104393029698005e-5,1.4351477859261177e-9,-4.841052181270292e-4,-2.903609161431683e-5,1.4504558263885193e-9,-4.84067228217977e-4,-2.9024670479161186e-5,1.4531643834621424e-9,-4.840577748119623e-4,-2.90853939257728e-5,1.438879930124667e-9,-4.8404655015113853e-4,-2.9220176531956694e-5,1.4064663055144139e-9,-4.840061936266715e-4,-2.9418854952069273e-5,1.3579222509944927e-9,-4.839159970403585e-4,-2.9661986241126522e-5,1.2977592972372048e-9,-4.8376421255598803e-4,-2.99245694584744e-5,1.2320364517035848e-9,-4.8354887698368103e-4,-3.0180063885511402e-5,1.1672683012708056e-9,-4.832772700501507e-4,-3.0404142004948953e-5,1.1094257627540442e-9,-4.829643557323166e-4,-3.0577722626730395e-5,1.06319106972272e-9,-4.826306810340864e-4,-3.068915192762852e-5,1.0314937573263063e-9,-4.823000236618913e-4,-3.073572511170575e-5,1.0152261736262526e-9,-4.819967854440488e-4,-3.07247596187981e-5,1.0130129991719876e-9,-4.8174290438235536e-4,-3.067424662353938e-5,1.0209817846856487e-9,-4.8155387647187757e-4,-3.061273027346073e-5,1.032629336411569e-9,-4.814336608023644e-4,-3.057734555154527e-5,1.0391143981355627e-9,-4.813692597631775e-4,-3.060832201910778e-5,1.0304832601707698e-9,-4.813275459614071e-4,-3.073869463472397e-5,9.981998565152625e-10,-4.812585659790297e-4,-3.09804507134622e-5,9.386721541243323e-10,-4.811087866201458e-4,-3.1312961751180574e-5,8.56262021686922e-10,-4.8084200197442165e-4,-3.168291882514008e-5,7.634346976835111e-10,-4.804573453938174e-4,-3.202098523525012e-5,6.767668830172286e-10,-4.799919742448245e-4,-3.226863232885468e-5,6.104833504614054e-10,-4.7950561722214457e-4,-3.239963129412474e-5,5.713324640502453e-10,-4.7905711130771735e-4,-3.2424683834516966e-5,5.57489239643948e-10,-4.7868648919253005e-4,-3.2380572165611614e-5,5.61014998658449e-10,-4.78408756745913e-4,-3.231372536823076e-5,5.715060758294507e-10,-0.00047821695541208484,-3.226672810540936e-5,5.790543339561175e-10,-4.780892929635116e-4,-3.2270696159169436e-5,5.759797425532569e-10,-4.7799654019284706e-4,-3.2342694027153804e-5,5.575709307492149e-10,-4.7790798337904856e-4,-3.2486240286347094e-5,5.222191413059654e-10,-4.7779572256916394e-4,-3.269322339193252e-5,4.712137846897875e-10,-4.776377532430203e-4,-3.294643314889626e-5,4.0828191455557877e-10,-4.7742011900052996e-4,-3.322255415686779e-5,3.3887550315425643e-10,-4.7713813362436103e-4,-3.3495522236272236e-5,2.692723543611399e-10,-4.767966058786844e-4,-3.374005506219493e-5,2.0561845121165476e-10,-4.764089810761079e-4,-3.3935100660724256e-5,1.5304719488686107e-10,-4.759953978571277e-4,-3.4066794130658526e-5,1.150012473363178e-10,-4.75579914293648e-4,-3.4130529894258694e-5,9.281539758685568e-11,-4.7518726401693057e-4,-3.4132012358599385e-5,8.552166664277137e-11,-4.7483937947707337e-4,-3.4087283256587925e-5,8.9808001360197e-11,-4.745518134530909e-4,-3.402168289331611e-5,1.0012352749726892e-10,-4.743301302744044e-4,-3.396758918434555e-5,1.0901384685598315e-10,-4.7416643965561046e-4,-3.3960444197777966e-5,1.0790405985855532e-10,-4.740368979791793e-4,-3.4032281179469596e-5,8.86169595898152e-11,-4.739021227586955e-4,-3.420250408423377e-5,4.5725881072999446e-11,-4.7371326042227083e-4,-3.446757033559661e-5,-2.0710561717845824e-11,-4.734254927457585e-4,-3.479429725681101e-5,-1.0330249928567228e-10,-4.7301639236006836e-4,-3.5123672220509924e-5,-1.881476569178234e-10,-4.725000431178112e-4,-3.5388839961071916e-5,-2.591876480176443e-10,-4.7192604541348076e-4,-3.554105374407855e-5,-3.044707002743182e-10,-4.7136099969806975e-4,-3.556883779945993e-5,-3.206993534357789e-10,-4.7086294225468346e-4,-3.549888047725581e-5,-3.1342792392102554e-10,-4.7046352272326177e-4,-3.538050951555742e-5,-2.935213287305637e-10,-4.7016473226171217e-4,-3.5265590743997314e-5,-2.726806915020762e-10,-4.699464136836216e-4,-3.5194260656001715e-5,-2.6030955535709985e-10,-4.697770469616606e-4,-3.518932915329649e-5,-2.622205939252974e-10,-4.696228012465099e-4,-3.5256920462369833e-5,-2.8060094716625834e-10,-4.6945333703288087e-4,-3.538992906669341e-5,-3.145484253008059e-10,-4.69244867902677e-4,-3.5571919634512485e-5,-3.607624652693146e-10,-4.6898164086817774e-4,-3.5780529452895425e-5,-4.1425452821863957e-10,-4.686566863176195e-4,-3.5990449974228233e-5,-4.690962154934373e-10,-4.6827208786035787e-4,-3.617631589754077e-5,-5.192139267408718e-10,-4.678386863652773e-4,-3.631568320727738e-5,-5.591870571551936e-10,-4.6737497335989225e-4,-3.6392083291211825e-5,-5.849904896303589e-10,-4.6690488301707415e-4,-3.639782201853782e-5,-5.94602599597509e-10,-4.6645445102384944e-4,-3.633592139146378e-5,-5.883906819014525e-10,-4.660476945176547e-4,-3.6220661871468307e-5,-5.692228942796334e-10,-4.657022695838701e-4,-3.6076407131886816e-5,-5.422815071321678e-10,-4.6542554666657507e-4,-3.5934607127357874e-5,-5.145430862929582e-10,-4.6521176990474016e-4,-3.582914597600692e-5,-4.93889587145379e-10,-4.650408921003716e-4,-3.579037660247443e-5,-4.878228226654467e-10,-4.6487973809540686e-4,-3.583822677071e-5,-5.017887049330647e-10,-4.646864289969452e-4,-3.5975183793548686e-5,-5.37296846788472e-10,-4.64418929535433e-4,-3.618107017587765e-5,-5.903807450996709e-10,-4.640473748557744e-4,-3.641280549063968e-5,-6.513004445318026e-10,-4.6356706963375163e-4,-3.6612571972860786e-5,-7.064066461510136e-10,-4.6300573393137634e-4,-3.672503075757567e-5,-7.42296675743031e-10,-4.624182914159778e-4,-3.671797163766815e-5,-7.508047679955584e-10,-4.6186855565977626e-4,-3.659550128472903e-5,-7.321670756526646e-10,-4.614064225580401e-4,-3.6395389241618036e-5,-6.944563282812404e-10,-4.610528332327597e-4,-3.6172385710832e-5,-6.498299076742612e-10,-4.607987283925611e-4,-3.597801715887471e-5,-6.100320374056605e-10,-4.6061468507508637e-4,-3.5846959612404006e-5,-5.833503649471653e-10,-4.6046349004600013e-4,-3.579313229929127e-5,-5.736387227312834e-10,-4.6030994274539054e-4,-3.5812705095171745e-5,-5.807834219497946e-10,-4.601262422144594e-4,-3.588972134772124e-5,-6.017486078129592e-10,-4.5989390505752053e-4,-3.600142119002202e-5,-6.316505581854882e-10,-4.596038614192552e-4,-3.61222398339944e-5,-6.646706362294414e-10,-4.592559568531993e-4,-3.6226694452753686e-5,-6.948193567656552e-10,-4.5885834703375316e-4,-3.629175808199892e-5,-7.166060109300918e-10,-4.584267277797475e-4,-3.629920933167143e-5,-7.25651034334448e-10,-4.5798303120869814e-4,-3.623817319516776e-5,-7.192617233124736e-10,-4.575530806030977e-4,-3.610762730040304e-5,-6.969458465337379e-10,-4.571628892970559e-4,-3.591815255208761e-5,-6.607620683323364e-10,-4.56833823604343e-4,-3.569198142091502e-5,-6.153534493322551e-10,-4.5657747279228704e-4,-3.54605678450924e-5,-5.675121322431022e-10,-4.5639155317605325e-4,-3.525945503013983e-5,-5.251872676244543e-10,-4.562582877399368e-4,-3.5121101489857186e-5,-4.960025021303906e-10,-4.561462404911574e-4,-3.5067166813251846e-5,-4.855281510313871e-10,-4.560157354184803e-4,-3.510209657136758e-5,-4.956760285975314e-10,-4.558271844438492e-4,-3.520973052125918e-5,-5.23642942124648e-10,-4.555509722539143e-4,-3.5354377231198915e-5,-5.618485388203806e-10,-4.551767900011865e-4,-3.5487271728465515e-5,-5.99216862288837e-10,-4.547194931700101e-4,-3.555821241925147e-5,-6.238372524193589e-10,-4.5421824807652514e-4,-3.553016757808225e-5,-6.264728450339745e-10,-4.537270827198009e-4,-3.539206308847836e-5,-6.037125880351339e-10,-4.532987076358123e-4,-3.5163679660655164e-5,-5.592847955933052e-10,-4.5296792741134556e-4,-3.488912728160238e-5,-5.027086388929701e-10,-4.527422313081323e-4,-3.462138798450755e-5,-4.458766460131134e-10,-4.5260323410913533e-4,-3.4405453702598874e-5,-3.9926413768010085e-10,-4.5251644486876176e-4,-3.426740951649623e-5,-3.6938487658784766e-10,-4.5244332300902997e-4,-3.421213627964388e-5,-3.5808595438001316e-10,-4.523505626185003e-4,-3.4227480505678286e-5,-3.632636675315268e-10,-4.5221482312207624e-4,-3.4290899461766846e-5,-3.8020116677613763e-10,-4.5202375557595886e-4,-3.437554371425792e-5,-4.029081427514244e-10,-4.5177505774483904e-4,-3.445460262322402e-5,-4.251869797649234e-10,-4.514749547370295e-4,-3.4504079311446706e-5,-4.4139362238526164e-10,-4.5113679020358777e-4,-3.450468018923218e-5,-4.469651496899405e-10,-4.507797731939009e-4,-3.444350711070474e-5,-4.388225099902334e-10,-4.504274678763231e-4,-3.431595710739258e-5,-4.1574789980056126e-10,-4.501053968208255e-4,-3.412772239306382e-5,-3.7876689398194317e-10,-4.49837245052929e-4,-3.3896171321560205e-5,-3.3143923698792594e-10,-4.4963967883302245e-4,-3.364990241377015e-5,-2.7982500286964254e-10,-4.495167350280108e-4,-3.342519780636138e-5,-2.3182893325347959e-10,-4.494557916595384e-4,-3.32588698365336e-5,-1.9575098987866422e-10,-4.494275238613324e-4,-3.317868246084438e-5,-1.7822526619476317e-10,-4.493912544321645e-4,-3.319433112785999e-5,-1.8215182067943742e-10,-4.4930491559363935e-4,-3.329257874488547e-5,-2.0541584757431906e-10,-4.491366544886963e-4,-3.343893518934762e-5,-2.409915239755049e-10,-4.4887423428689434e-4,-3.358582747083409e-5,-2.785249749837473e-10,-4.4852918924545023e-4,-3.3684857564196356e-5,-3.069592004180854e-10,-4.481345025764483e-4,-3.3699547562141865E-05,-3.174400965017838e-10,-4.477364173205387e-4,-3.36150453685436e-5,-3.056899582009406e-10,-4.473824653024104e-4,-3.3442075559446554e-5,-2.731645840371916e-10,-4.471089794236686e-4,-3.3213746559910004e-5,-2.2659609678642381e-10,-4.4693193476726584e-4,-3.2975892326254515e-5,-1.7600234698550785e-10,-4.4684415933761597e-4,-3.2774072581832724e-5,-1.318180279743324e-10,-4.468195596048631e-4,-3.264180812728822e-5,-1.0215906621877542e-10,-4.468221350963377e-4,-3.259390394722096e-5,-9.111564082088563e-11,-4.468159270102211e-4,-3.262613831507543e-5,-9.843768488394674e-11,-4.4677253154619184e-4,-3.271981887431175e-5,-1.2037327381122013e-10,-4.466747593938944e-4,-3.2848326037323585e-5,-1.5107991793165482e-10,-4.465169535590928e-4,-3.298315215165685e-5,-1.8405170853296948e-10,-4.4630337571044507e-4,-3.309824656748056e-5,-2.1323351666357844e-10,-4.4604597579605345e-4,-3.317263929462189e-5,-2.337308573244723e-10,-4.45762317539977e-4,-3.3191928530204014e-5,-2.421841171496663e-10,-4.454738218877487e-4,-3.314935956184844e-5,-2.369644191333686e-10,-4.4520398080873634e-4,-3.304699535971351e-5,-2.1835135532547503e-10,-4.449759188950929e-4,-3.289697404544757e-5,-1.887628854791514e-10,-4.448087241116615e-4,-3.2722220146874976e-5,-1.529489231537002e-10,-4.4471242614531716e-4,-3.2555363695373645e-5,-1.1787226547448037e-10,-4.446825403539786e-4,-3.2434324371631275e-5,-9.188130706746193e-11,-4.4469655992664646e-4,-3.2393735943472714e-5,-8.291075104452407e-11,-4.4471563063769776e-4,-3.245364245052461e-5,-9.596818943647909e-11,-4.446933654754844e-4,-3.2609831845342675e-5,-1.3086158754423952e-10,-4.445900359888028e-4,-3.2831347836709934e-5,-1.814400172328324e-10,-4.4438642125605143e-4,-3.306811219248421e-5,-2.370680722983898e-10,-4.4409080264432883e-4,-3.326622792760892e-5,-2.858581212801058e-10,-4.437360837083105e-4,-3.33843518504114e-5,-3.1823887552277983e-10,-4.433690949210459e-4,-3.340463330407339e-5,-3.294487374573945e-10,-4.430370755530498e-4,-3.3335321031998855e-5,-3.203184353265311e-10,-4.427759960089928e-4,-3.320596713714179e-5,-2.9650278742528307e-10,-4.4260339341241914e-4,-3.305809413124731e-5,-2.666935334285821e-10,-4.425164934095727e-4,-3.293443729480453e-5,-2.403889490512539e-10,-4.424951037855245e-4,-3.286939195932481e-5,-2.2573681301802528e-10,-4.4250792553513906e-4,-3.2882577323854434e-5,-2.2789539745179735e-10,-4.425203905633074e-4,-3.297653466831185e-5,-2.4823497974085815e-10,-4.425019734590562e-4,-3.313848660280707e-5,-2.8448803781729026e-10,-4.424313311491289e-4,-3.334499881923905e-5,-3.3168004394333305e-10,-4.422985572981347e-4,-3.3567784931305844e-5,-3.834657566606249e-10,-4.4210484891880924e-4,-3.377905354369237e-5,-4.3346022827032136e-10,-4.4186050614891556e-4,-3.3955460677570604e-5,-4.762630706971752e-10,-0.00044158229376506733,-3.408047587119074e-5,-5.080560853142402e-10,-4.4129088951131405e-4,-3.4145537682724034e-5,-5.268328707022444e-10,-4.4100864451780675e-4,-3.415060214756904e-5,-5.324321778308508e-10,-4.4075744431709034e-4,-3.4104538515809105e-5,-5.265509515466792e-10,-4.405562048159596e-4,-3.402543308853396e-5,-5.128193797311413e-10,-4.4041749799388676e-4,-3.394031824044413e-5,-4.968520411437988e-10,-4.4034317371603764e-4,-3.388321666420194e-5,-4.859836819661576e-10,-4.4031985380117906e-4,-3.389003663385937e-5,-4.882781596747447e-10,-4.4031667309458187e-4,-3.398947734201114e-5,-5.105417250572887e-10,-4.40288726603928e-4,-3.419139460117802e-5,-5.556392875995702e-10,-4.4018852720764694e-4,-3.447763007612022e-5,-6.202734840122589e-10,-4.3998312776834925e-4,-3.4802253044518366e-5,-6.948530997978604e-10,-4.396688525708522e-4,-3.510470657110431e-5,-7.662719727894685e-10,-4.3927463938373874e-4,-3.533108692677226e-5,-8.225278615720626e-10,-4.388514849831018e-4,-3.545261924397217e-5,-8.567545923869293e-10,-4.384542114569926e-4,-3.5472467064472854e-5,-8.687704570663886e-10,-4.381250309194333e-4,-3.542007387575285e-5,-8.640367362840351e-10,-4.3788477725332484e-4,-3.533865244353876e-5,-8.512299465652137e-10,-4.377321566231613e-4,-3.52722511840646e-5,-8.396926899517458e-10,-4.3764830456916964e-4,-3.525614476523123e-5,-8.374333127536711e-10,-4.376036478383992e-4,-3.531151963905395e-5,-8.498330044244647e-10,-4.3756499698159503e-4,-3.544392307484552e-5,-8.790159276265403e-10,-4.3750174764789934e-4,-3.56445680225368e-5,-9.238259471745557e-10,-4.3739057794072914e-4,-3.5893675770702265e-5,-9.803621067461992e-10,-4.372182577922428e-4,-3.6165025749781834e-5,-1.042950971201023e-9,-4.369824734841252e-4,-3.6430802734025703e-5,-1.1053246753441703e-9,-4.36690901264442e-4,-3.6665949804834746e-5,-1.1617407465670032e-9,-4.3635900542241446e-4,-3.685147801086402e-5,-1.2078249534317108e-9,-4.360071976804138e-4,-3.697647114841903e-5,-1.2410262063482944e-9,-4.356579555231565e-4,-3.7038915732516285e-5,-1.260728985867218e-9,-4.353331667358742e-4,-3.704575670653252e-5,-1.2681800873321904e-9,-4.350516275750907e-4,-3.701249208677096e-5,-1.2663789075441324e-9,-4.348264748497907e-4,-3.696235632581322e-5,-1.2599873663792249e-9,-4.3466228069439307e-4,-3.692480626009468e-5,-1.2551736513394884e-9,-4.3455177288540366e-4,-3.6932510170417106e-5,-1.25912798564809e-9,-4.3447301468774706e-4,-3.701572674939781e-5,-1.278902275184977e-9,-4.3438916026796164e-4,-3.71935894381788e-5,-1.3194060826546412e-9,-4.3425376802956616e-4,-3.74638561498117e-5,-1.3809346111075104e-9,-4.340236163024067e-4,-3.779593543622154e-5,-1.4574024307369292e-9,-4.3367640876553675e-4,-3.8134118564692025e-5,-1.5369256916288049e-9,-4.332244241737091e-4,-3.8414502041651824e-5,-1.6055222702572017e-9,-4.3271386018431076e-4,-3.858948430017033e-5,-1.652481129483999e-9,-4.3220787923143326e-4,-3.864607462666557e-5,-1.6743270763616353e-9,-4.317629656468537e-4,-3.860761863456337e-5,-1.6752156913577408e-9,-4.3141176547786695e-4,-3.8520414864384305e-5,-1.6642240440609935e-9,-4.3115868222643985e-4,-3.8435327419660585e-5,-1.651702421749401e-9,-4.3098557996193025e-4,-3.8393580822086956e-5,-1.6464759363415677e-9,-4.3086147835504085e-4,-3.841992287116871e-5,-1.65440671246263e-9,-4.307516674336233e-4,-3.8521823132790755e-5,-1.6780078303099869e-9,-4.306243804306794e-4,-3.8692067403099935e-5,-1.716664885505569e-9,-4.3045497513185133e-4,-3.891267180424769e-5,-1.7671843133691706e-9,-4.302282105989142e-4,-3.9159095494623204e-5,-1.824566327370246e-9,-4.299390751286171e-4,-3.940438880534627e-5,-1.8829431790449586e-9,-4.295924025130069e-4,-3.9623034498814555e-5,-1.936562263178734e-9,-4.292014630930585e-4,-3.9794261037469396e-5,-1.9806593157273097e-9,-4.287856876623859e-4,-3.9904630596068394e-5,-2.0120950226613972e-9,-4.28367754503315e-4,-3.994964610903417e-5,-2.0296763544745215e-9,-4.279704452993792e-4,-3.9934237516808346e-5,-2.0341813886434956e-9,-4.276136265667553e-4,-3.987227137249826e-5,-2.0282039753249915e-9,-4.273114688402678e-4,-3.978527077197651e-5,-2.0159259234067885e-9,-4.2706992488113834e-4,-3.9700366198973295e-5,-2.002829069662559e-9,-4.268845197863682e-4,-3.964737840173896e-5,-1.9952647642030475e-9,-4.267386265969893e-4,-3.965471131576109e-5,-1.999700373052887e-9,-4.266029510717304e-4,-3.9743544324180614e-5,-2.0214358793739664e-9,-4.26437834568534e-4,-3.992039295746758e-5,-2.0627867533072652e-9,-4.2620038657907274e-4,-4.016980373449743e-5,-2.1212012265236316e-9,-4.2585728334790284e-4,-4.0451299582123726e-5,-2.1883606719571155e-9,-4.25400265363133e-4,-4.070596598753596e-5,-2.25155109322746e-9,-4.248561337280175e-4,-4.0874859811857436e-5,-2.2977411834001216e-9,-4.242820619720334e-4,-4.092274432793028e-5,-2.3187965446079723e-9,-4.237451316903482e-4,-4.085341822572131e-5,-2.3147791360394584e-9,-4.2329694415442286e-4,-4.070654441064251e-5,-2.2932869092235596e-9,-4.229578411734412e-4,-4.0538947222353454e-5,-2.2656447239000503e-9,-4.2271688421275413e-4,-4.040304127911455e-5,-2.2426165588610284e-9,-4.225427433080427e-4,-4.0333144803596924e-5,-2.231704275563879e-9,-4.223968689264773e-4,-4.0342043136537935e-5,-2.2363639652971267e-9,-4.222434398179648e-4,-4.042433106460874e-5,-2.256430112670042e-9,-4.220548334090586e-4,-4.056222883882198e-5,-2.2890006714688703e-9,-4.218136677594013e-4,-4.073117018433807e-5,-2.3293788637137593e-9,-4.21512946299068e-4,-4.0904258616967875e-5,-2.3719643641673716e-9,-4.2115531676598317e-4,-4.105575217512033e-5,-2.4111025484600863e-9,-4.207517952197999e-4,-4.1163907229954436e-5,-2.441863734119646e-9,-4.203200113401336e-4,-4.121333480514526e-5,-2.460678044086568e-9,-4.198819221794372e-4,-4.119688223171917e-5,-2.4657691210332674e-9,-4.194609188969578e-4,-4.111682572964086e-5,-2.4573520283086842e-9,-4.1907848888926417e-4,-4.0985005162454883e-5,-2.4375869987131062e-9,-4.1875086145044143e-4,-4.082171835588424e-5,-2.4103369791762464e-9,-4.1848604840921634e-4,-4.065342570658751e-5,-2.3807851127628465e-9,-4.182816061708275e-4,-4.050935427302264e-5,-2.3549026071762925e-9,-4.1812347686722286e-4,-4.041715861848515e-5,-2.3387103150409148e-9,-4.1798629068454416e-4,-4.039789505126642e-5,-2.337275945283984e-9,-4.178356307985684e-4,-4.046059638808345e-5,-2.353438615303446e-9,-4.1763304542852736e-4,-4.0597133531294696e-5,-2.3864309135234715e-9,-4.17344485054109e-4,-4.07791348421971e-5,-2.4308988000567276e-9,-4.1695157842682465e-4,-4.095991780817399e-5,-2.477108670627579e-9,-4.16462448119742e-4,-4.108433698392642e-5,-2.5130503328766345e-9,-4.15915771968092e-4,-4.1106404871525956e-5,-2.528346010590168e-9,-4.153721159190534e-4,-4.100833523430551e-5,-2.5184530965389194e-9,-4.1489323356661917e-4,-4.0810007275967356e-5,-2.4867440031700544e-9,-4.1451934265011636e-4,-4.056149998336314e-5,-2.443004015897615e-9,-4.14257057163492e-4,-4.032253315069391e-5,-2.399280027476654e-9,-4.140829643037679e-4,-4.014115402159914e-5,-2.365624213252662e-9,-4.139573594589503e-4,-4.004203540654317e-5,-2.347719850083814e-9,-4.1383883902764264e-4,-4.0026135838993726e-5,-2.346648557292666e-9,-4.1369395521428763e-4,-4.007714518494776e-5,-2.359918634965156e-9,-4.1350116283010187e-4,-4.0169438678037385e-5,-2.3828275358386247e-9,-4.132509204849382e-4,-4.02745458009851e-5,-2.409672202656709e-9,-4.12944098431814e-4,-4.036544899383293e-5,-2.434693727626981e-9,-4.1259003312596384e-4,-4.0419283786942026e-5,-2.4528076757501718e-9,-4.1220463180241106e-4,-4.041920894315126e-5,-2.460165886913844e-9,-4.118084241146482e-4,-4.035589750016881e-5,-2.4545551866637317e-9,-4.114243079808707e-4,-4.0228769440772255e-5,-2.4356339267987566e-9,-4.1107472547243434e-4,-4.004674770704506e-5,-2.4050065497151834e-9,-4.107782411517076e-4,-3.982801465533893e-5,-2.3661110631512318e-9,-4.1054594259781567e-4,-3.959827057314572e-5,-2.3238887851075064e-9,-4.10378395758591e-4,-3.938732383127705e-5,-2.2842171118400988e-9,-4.1026395191599125e-4,-3.922422342717951e-5,-2.2530908614786637e-9,-4.101791123460307e-4,-3.9131562701737556e-5,-2.23557803383868e-9,-4.100913745510124e-4,-3.911997116984464e-5,-2.2346619299068557e-9,-4.099645570075549e-4,-3.9183950507037974e-5,-2.250178149363926e-9,-4.097661972198411e-4,-3.930021397784681e-5,-2.278150153434694e-9,-4.0947612025577423e-4,-3.9429780090729804e-5,-2.310922006873919e-9,-4.090943862753506e-4,-3.952493336780649e-5,-2.338459230035468e-9,-4.086456517799025e-4,-3.954111611657848e-5,-2.3508883014153373e-9,-4.081763984351799e-4,-3.945141594102922e-5,-2.34172318966217e-9,-4.0774310491620253e-4,-3.9258165010706924e-5,-2.3105104000586573e-9,-4.0739410414728915e-4,-3.899487440782558e-5,-2.2634068239480487e-9,-4.071530517716821e-4,-3.8715380711305496e-5,-2.2110648360130516e-9,-4.07012517735472e-4,-3.8474663908117465e-5,-2.1647814676881445e-9,-4.0694031503661626e-4,-3.83111097332982e-5,-2.132885090794267e-9,-4.0689355328915437e-4,-3.823811500140989e-5,-2.118905391336737e-9,-4.0683245131795863e-4,-3.824611552137267e-5,-2.121744169365106e-9,-4.0672875066320724e-4,-3.83106584547127e-5,-2.137053712749919e-9,-4.065681541205749e-4,-3.8401284561318635e-5,-2.1588842425524963e-9,-4.063489170280104e-4,-3.848820200325258e-5,-2.181051087605659e-9,-4.0607899542711783e-4,-3.854620981262006e-5,-2.198080022710527e-9,-4.0577321760118843e-4,-3.855665233157998e-5,-2.2057933114142437e-9,-4.054509336224549e-4,-3.850839314776131e-5,-2.2016348705458945e-9,-4.051339790749997e-4,-3.839848304650612e-5,-2.1848218714545927e-9,-4.0484452728607707e-4,-3.8232763492249975e-5,-2.1563917184551757e-9,-4.046024009615301e-4,-3.8026166396044666e-5,-2.1191704389762e-9,-4.0442170184689123e-4,-3.780206287518215e-5,-2.0776109012345515e-9,-4.043071522932379e-4,-3.7589916539575194e-5,-2.037394588277785e-9,-4.0425112417486777e-4,-3.7420805564781884e-5,-2.0046841607319565e-9,-4.0423270413599097e-4,-3.732108474951415e-5,-1.9850017433876396e-9,-4.042199941499895e-4,-3.7305461211264305e-5,-1.9818909364028005e-9,-4.041759729458141e-4,-3.7371576180890595e-5,-1.995722476799383e-9,-4.040669367934563e-4,-3.749819781395151e-5,-2.023080949156707e-9,-4.038714430168704e-4,-3.764824543910441e-5,-2.0570719150784504e-9,-4.0358723837979936e-4,-3.777652245214125e-5,-2.088652532821821e-9,-4.0323392522940814e-4,-3.784066890271968e-5,-2.108786263221883e-9,-4.028499668827034e-4,-3.7812733764463005e-5,-2.110917795052249e-9,-4.024839213955273e-4,-3.768809159565209e-5,-2.0930452841422504e-9,-4.0218154105103323e-4,-3.748838143603014e-5,-2.0586134771402745e-9,-4.0197245691300375e-4,-3.7256296497542606e-5,-2.0156987881971886e-9,-4.0186148165965595e-4,-3.7042976733979594e-5,-1.974586200188155e-9,-4.018283808339541e-4,-3.6892494178303976e-5,-1.944623987475064e-9,-4.0183608868270894e-4,-3.6829760565161567e-5,-1.9316327261505804e-9,-4.0184323029191903e-4,-3.685629057238657e-5,-1.9367984159228025e-9,-4.0181540972463755e-4,-3.6953941902521246e-5,-1.9571606390107712e-9,-4.0173160962337696e-4,-3.7093205760581396e-5,-1.9871078224997477e-9,-4.015852743493223e-4,-3.724183204408453e-5,-2.0200937211791826e-9,-4.013819118193629e-4,-3.737112093517171e-5,-2.0500268935527753e-9,-4.0113546642722405e-4,-3.745934046666174e-5,-2.072145790532876e-9,-4.008649162475529e-4,-3.749303145455463e-5,-2.0834320591036338e-9,-4.005915876567197e-4,-3.746722429672266e-5,-2.0827005722215756e-9,-4.00337051736825e-4,-3.7385338843855984e-5,-2.0705219071079996e-9,-4.0012112723467486e-4,-3.725911600757237e-5,-2.0491068141487655e-9,-3.9995945006566694e-4,-3.710838880148392e-5,-2.02219878218256e-9,-3.9986036290861937e-4,-3.696000071532959e-5,-1.9948926212214277e-9,-3.9982147601925637e-4,-3.684496081292581e-5,-1.9731958999948373e-9,-3.998270224104261e-4,-3.6793151712941985e-5,-1.9631309255681626e-9,-3.9984782850540707e-4,-3.6825820017548094e-5,-1.9693326621769157e-9,-3.9984567314217234e-4,-3.6947721487253395e-5,-1.9934475370821446e-9,-3.997823060669654e-4,-3.714229558595796e-5,-2.0329994613703186e-9,-3.996308094008664e-4,-3.7373115060623765e-5,-2.0814266273117242e-9,-3.99384988712439e-4,-3.759249203934011e-5,-2.1295566994293455e-9,-3.9906271036433164e-4,-3.775472405457742e-5,-2.1681019565900638e-9,-3.987016202917927e-4,-3.7829193936713294e-5,-2.190272534708571e-9,-3.9834887836798216e-4,-3.780875269054671e-5,-2.193608295241445e-9,-3.980485538263064e-4,-3.7711034648837475e-5,-2.1805271009791155e-9,-3.978305141809676e-4,-3.75729460791574e-5,-2.157555028882998e-9,-3.9770366530245046e-4,-3.744037328616604e-5,-2.1335311050243456e-9,-3.9765504299890545e-4,-3.735613027207092e-5,-2.1172878104897155e-9,-3.976546923721489e-4,-3.7349520461290274e-5,-2.1154458093897077e-9,-3.976645841027215e-4,-3.7430385886824955e-5,-2.1309453027747796e-9,-3.9764857481630915e-4,-3.7588969553787584e-5,-2.16269710822895e-9,-3.975803240688057e-4,-3.78008285196242e-5,-2.206328545718188e-9,-3.9744725472712117e-4,-3.8034406317778884e-5,-2.2556260006985536e-9,-3.972504331599879e-4,-3.825848207709496e-5,-2.304116143937135e-9,-3.970016678082849e-4,-3.8447576129588216e-5,-2.346328968114079e-9,-3.967195597523896e-4,-3.85847761019194e-5,-2.378535140950185e-9,-3.9642580202908984e-4,-3.8662499543895226e-5,-2.3989805580658325e-9,-3.9614227617272086e-4,-3.8682093918056946e-5,-2.407778956750608e-9,-3.9588887819566896e-4,-3.865305185717903e-5,-2.406662527805749e-9,-3.9568165300506234e-4,-3.8592229765188354e-5,-2.3987512411946675e-9,-3.9553072846361295e-4,-3.852295871827556e-5,-2.3883867003944353e-9,-3.9543774790634314e-4,-3.847345808670505e-5,-2.3809297326839213e-9,-3.9539305003282924e-4,-3.847364136251777e-5,-2.382287114028292e-9,-3.9537371824626544e-4,-3.854948972135635e-5,-2.397910865159832e-9,-3.9534454501332527e-4,-3.8715107497318946e-5,-2.4312142198376576e-9,-3.952641095528031e-4,-3.896460770802551e-5,-2.4818178598376683e-9,-3.9509636929992376e-4,-3.9268210077471814e-5,-2.5445577437541576e-9,-3.9482433024793544e-4,-3.957704143478872e-5,-2.6102337078048142e-9,-3.944590437311957e-4,-3.983728465279895e-5,-2.66827632892777e-9,-3.9403811672779804e-4,-4.000826568398732e-5,-2.7102607573795425e-9,-3.936136334447647e-4,-4.007582516475161e-5,-2.732568246881595e-9,-3.932354489171214e-4,-4.005509986930359e-5,-2.7370829288428234e-9,-3.9293735005261444e-4,-3.9983124149450465e-5,-2.730028550413103e-9,-3.927304162113228e-4,-3.990616554842289e-5,-2.7198283129693987e-9,-3.926037104670152e-4,-3.986712394333029e-5,-2.7148744382944538e-9,-3.925300340245018e-4,-3.989630581245046e-5,-2.721726552456415e-9,-3.924740322961887e-4,-4.000673567964125e-5,-2.7439566656949624e-9,-3.9240044960224226e-4,-4.0193797020507027e-5,-2.781711773518208e-9,-3.9228100027058804e-4,-4.043835453992976e-5,-2.8319939335662753e-9,-3.920988397429943e-4,-4.071220949346134e-5,-2.8895632795737313e-9,-3.918501286346216e-4,-4.098447018044798e-5,-2.9482215655903276e-9,-3.915428759247042e-4,-4.1227354423628e-5,-3.002126932202798e-9,-3.911938860598323e-4,-4.142035578932055e-5,-3.0468184632871506e-9,-3.908248865257149e-4,-4.1552391217979064e-5,-3.079773043002786e-9,-3.904587877773441e-4,-4.162213920665322e-5,-3.100490246668063e-9,-3.901166540589265e-4,-4.163716629526032e-5,-3.1102498369570066e-9,-3.898154596295406e-4,-4.1612528206521545e-5,-3.1117545046976984e-9,-3.895663343014008e-4,-4.15692477287104e-5,-3.108816873159751e-9,-3.893729274795302e-4,-4.1532643167673676e-5,-3.106122424164249e-9,-3.8922964958095066e-4,-4.1530120920376783e-5,-3.108959796232942e-9,-3.8911993547672825e-4,-4.158773400879558e-5,-3.1226873440949273e-9,-3.890154780111431e-4,-4.172477613316137e-5,-3.1516937951170783e-9,-3.8887832398421657e-4,-4.1946490302301866e-5,-3.1978260954989524e-9,-3.8866798799491536e-4,-4.2236923527193535e-5,-3.2587392014650204e-9,-3.883541075724722e-4,-4.255643026767475e-5,-3.3271796700881e-9,-3.879309179981178e-4,-4.2848970224092304e-5,-3.3923178303223024e-9,-3.874252936797595e-4,-4.3060086306725585e-5,-3.4432808142227515e-9,-3.8689085406422015e-4,-4.315822428367038e-5,-3.473343383367832e-9,-3.863889877673784e-4,-4.3147231358598694e-5,-3.4823712443678767e-9,-3.859670303418556e-4,-4.306282988945449e-5,-3.476235200012914e-9,-3.856450179732965e-4,-4.29567332020061e-5,-3.4640108169692097e-9,-3.8541502948697586e-4,-4.287851646215824e-5,-3.4548315486565543e-9,-3.852493149355605e-4,-4.2863147399264384e-5,-3.4556957290431317e-9,-3.851111325842977e-4,-4.2926194690833945e-5,-3.4704676625369628e-9,-3.849641750666217e-4,-4.306488479653104e-5,-3.4997555963823663e-9,-3.8477904449105344e-4,-4.326230537360815e-5,-3.541315667419064e-9,-3.845368505256895e-4,-4.349269606106779e-5,-3.5907716079917845e-9,-3.842305470775176e-4,-4.372677264988809e-5,-3.6425556238611925e-9,-3.838644713396162e-4,-4.393662457551494e-5,-3.690971057311515e-9,-3.834524001017426e-4,-4.4099766813166904e-5,-3.731195660582228e-9,-3.8301455462920074e-4,-4.4201952462350065e-5,-3.760022682061001e-9,-3.8257407697839317e-4,-4.42385677285092e-5,-3.776219192075404e-9,-3.821534971407641e-4,-4.42146190699868e-5,-3.78049345493217e-9,-3.8177167811354886e-4,-4.414353188785048e-5,-3.775176115440497e-9,-3.814415037458072e-4,-4.404520966037506e-5,-3.763795599090132e-9,-3.811682438952999e-4,-4.3943745048884684e-5,-3.750686091708826e-9,-3.8094841874788385e-4,-4.3864881721126706e-5,-3.740645067077998e-9,-3.807690606418496e-4,-4.383310219135978e-5,-3.738542478624394e-9,-3.8060747113549404e-4,-4.3868015094879415e-5,-3.7487069852998005e-9,-3.8043212896826716e-4,-4.397964230952124e-5,-3.77392849591353e-9,-3.8020614214202126e-4,-4.416283549922484e-5,-3.814126337469046e-9,-3.7989477348660916e-4,-4.43925934432593e-5,-3.8651369785543476e-9,-3.7947723172862823e-4,-4.462397219530305e-5,-3.918497560033356e-9,-3.789593875598948e-4,-4.4800964639163135e-5,-3.96317158934382e-9,-3.783796554624242e-4,-4.487522211492297e-5,-3.989310173516736e-9,-3.7780028171270733e-4,-4.482731494297352e-5,-3.992457390009027e-9,-3.772848187336151e-4,-4.4677289049787794e-5,-3.975587279866091e-9,-3.768738589342568e-4,-4.4476302813578715e-5,-3.947557776892742e-9,-3.765731596693725e-4,-4.4284647088400656e-5,-3.919157973229763e-9,-3.763583684669076e-4,-4.415011216339383e-5,-3.8993178944763496e-9,-3.7618935482083637e-4,-4.409689236608701e-5,-3.893153730927883e-9,-3.760245905568384e-4,-4.412564418670974e-5,-3.901816527226052e-9,-3.758305281239963e-4,-4.4219737409461237e-5,-3.923290331122069e-9,-3.755856622553639e-4,-4.435289044370741e-5,-3.953443754350989e-9,-3.752809867131644e-4,-4.449563849145108e-5,-3.987032034029203e-9,-3.749186681115099e-4,-4.462002058569582e-5,-4.018598786101294e-9,-3.745100126286204e-4,-4.4702883418774216e-5,-4.043293546650498e-9,-3.740730272909859e-4,-4.472824114947566e-5,-4.057558558959361e-9,-3.736296275242296e-4,-4.4688796131403827e-5,-4.059581153155581e-9,-3.732025909944763e-4,-4.4586579231906474e-5,-4.049448013925343e-9,-3.7281240901532864e-4,-4.4432606619089756e-5,-4.029008414573869e-9,-3.724743361521061e-4,-4.4245446122239154e-5,-4.001513612609417e-9,-3.7219604683176886e-4,-4.404881315412431e-5,-3.971147889469539e-9,-3.719761559946201e-4,-4.386851506422404e-5,-3.942550572712875e-9,-3.718036869016746e-4,-4.3729011292962504e-5,-3.920339561133363e-9,-3.716585476438696e-4,-4.364979112255484e-5,-3.908574248164302e-9,-3.715130942800803e-4,-4.364173138022532e-5,-3.910078188684471e-9,-3.713350457921283e-4,-4.370352841575415e-5,-3.925586069346227e-9,-3.7109238380513845e-4,-4.3818651024463044e-5,-3.9528488394828995e-9,-3.707607845405598e-4,-4.395425389302266e-5,-3.986112633364346e-9,-3.7033298488081413e-4,-4.406449097933762e-5,-4.01659369367896e-9,-3.698271408886742e-4,-4.4100617660546984e-5,-4.034478858226037e-9,-3.6928850300559833e-4,-4.402761136944001e-5,-4.032309510928544e-9,-3.6877886950402043e-4,-4.3841161627626426e-5,-4.008397336623387e-9,-3.68354844176475e-4,-4.3574127073054776e-5,-3.9681227490621515e-9,-3.680456442399449e-4,-4.328536888044946e-5,-3.921896540270247e-9,-3.678438514995482e-4,-4.303605390842075e-5,-3.88088052714649e-9,-3.6771344272492777e-4,-4.286765668321312e-5,-3.853066475373028e-9,-3.6760744211130974e-4,-4.279271827029995e-5,-3.841571155142976e-9,-3.6748400287878505e-4,-4.279868404809011e-5,-3.845110101089603e-9,-3.6731503805980255e-4,-4.2858040425471004e-5,-3.859505188909107e-9,-3.670878782353395e-4,-4.293828963274571e-5,-3.879232548481663e-9,-3.668030259099282e-4,-4.300887457302174e-5,-3.8986149146387406e-9,-3.664707239972699e-4,-4.304497730933188e-5,-3.912649349560868e-9,-3.6610775839668016e-4,-4.302929792015812e-5,-3.917575783781463e-9,-3.657347454762509e-4,-4.295287241734541e-5,-3.911245377621743e-9,-3.653736412651876e-4,-4.2815417391808795e-5,-3.893281236926014e-9,-3.650452228879931e-4,-4.2625259277326516e-5,-3.865029786249455e-9,-3.6476641984123815e-4,-4.239866016669585e-5,-3.8293301914713776e-9,-3.645476115673927e-4,-4.215819173345968e-5,-3.790137077788593e-9,-3.643903517009124e-4,-4.192994909126311e-5,-3.752032661708107e-9,-3.642861036996599e-4,-4.173977362622034e-5,-3.71966635491313e-9,-3.642164327955368e-4,-4.160892942215545e-5,-3.697132215015159e-9,-3.641549093482707e-4,-4.1549858066543754e-5,-3.6872863278909777e-9,-3.6407072313266787e-4,-4.1562773802817286e-5,-3.6910546876715064e-9,-3.639337297548633e-4,-4.1633785245227165e-5,-3.706842402789998e-9,-3.637205402382895e-4,-4.17351263688552e-5,-3.730239026226662e-9,-3.634210733541716e-4,-4.182826882524199e-5,-3.7543125950062615e-9,-3.6304426985984744e-4,-4.187077889867399e-5,-3.770791848359487e-9,-3.626205679360432e-4,-4.1827023967553126e-5,-3.772195287003563e-9,-3.621980590998262e-4,-4.168082324199709e-5,-3.754465893092228e-9,-3.6183040236259707e-4,-4.144515737090433e-5,-3.719051514202747e-9,-3.615588707716338e-4,-4.1162290906568653e-5,-3.6731031521314867e-9,-3.61396538504054e-4,-4.089083947416614e-5,-3.627175685529882e-9,-3.6132387086853867e-4,-4.0684523717909506e-5,-3.5913642442355727e-9,-3.612984871112935e-4,-4.057381858184938e-5,-3.57191628278744e-9,-3.6127263538453984e-4,-4.0559572504084276e-5,-3.5699106570700582e-9,-3.6120844626298833e-4,-4.061897653845609e-5,-3.5820719173724824e-9,-3.610852118619653e-4,-4.0717434213808e-5,-3.6026558942381903e-9,-3.608991626924136e-4,-4.0819528038116416e-5,-3.625305177385425e-9,-3.6065929725962267e-4,-4.0895889554540754e-5,-3.644354040211268e-9,-3.6038248887045136e-4,-4.092611299111932e-5,-3.6555594903413846e-9,-3.6008948797461456e-4,-4.089924983103489e-5,-3.6564197922185135e-9,-3.598020583044798e-4,-4.0813324951301555e-5,-3.6462285238279096e-9,-3.5954081132138837e-4,-4.06746448702424e-5,-3.625955167087689e-9,-3.593232203764928e-4,-4.049706401005377e-5,-3.5980159849031315e-9,-3.591614767911618e-4,-4.030096233320472e-5,-3.5659792059672047e-9,-3.5906017581369425e-4,-4.011143008152642e-5,-3.5342021902016163e-9,-3.590142746293756e-4,-3.9955202075565014e-5,-3.5073577657903728e-9,-3.5900813493897933e-4,-3.9856294031816824e-5,-3.4898049410216977e-9,-3.590165228657977e-4,-3.9830885148132995e-5,-3.484809323888809e-9,-3.5900811619758537e-4,-3.988259608517585e-5,-3.4937187933879266e-9,-3.589513508368191e-4,-3.9999692692636196e-5,-3.515316951993148e-9,-3.588215300116031e-4,-4.015553409221791e-5,-3.5456245459726613e-9,-3.586074994236263e-4,-4.031277515563591e-5,-3.578347724118303e-9,-3.5831611404968134e-4,-4.0430887172238557e-5,-3.6060328154525907e-9,-3.5797300106842354e-4,-4.0475752013014714e-5,-3.621798180660383e-9,-3.5761860209188446e-4,-4.0429328523306393E-05,-3.6212892232579545e-9,-3.572993273213688e-4,-4.029669010026284e-5,-3.604282007806e-9,-3.5705516107877836e-4,-4.01074134564653e-5,-3.575261109336151e-9,-3.56907171864305e-4,-3.990910227757714e-5,-3.542466178765705e-9,-3.5685000952815797e-4,-3.975360446642084e-5,-3.51546370509442e-9,-3.568535768631939e-4,-3.968060851260814e-5,-3.502095452651505e-9,-3.568738387353768e-4,-3.9705767185260144e-5,-3.506123139270059e-9,-3.568676969066613e-4,-3.981847075560239e-5,-3.526548679024781e-9,-3.568050583051709e-4,-3.9988930782059254e-5,-3.558632436406407e-9,-3.56673931076042e-4,-4.017965642244248e-5,-3.595815124716367e-9,-3.564788653472729e-4,-4.035578451744323e-5,-3.631596410599711e-9,-3.562358193015023e-4,-4.049130472750036e-5,-3.6608170038248088e-9,-3.5596655047241536e-4,-4.057119598922274e-5,-3.6802591959901357e-9,-3.556941971200325e-4,-4.059099060777297e-5,-3.688733399766354e-9,-3.554403466676326e-4,-4.055530827745248e-5,-3.6868596918516015e-9,-3.552231502274103e-4,-4.047630480756108e-5,-3.6767210257453985e-9,-3.550558309426621e-4,-4.0372330118324426e-5,-3.6615103358701634e-9,-3.549450842029947e-4,-4.0266541812810685e-5,-3.6452166207126978e-9,-3.5488926874896996e-4,-4.018488717008979e-5,-3.6323023478007748e-9,-3.5487679855453013e-4,-4.0152863925988295e-5,-3.6272565039705226e-9,-3.5488564634128154e-4,-4.019082120417089e-5,-3.6339063053833576e-9,-3.548851821818268e-4,-4.030831790087331e-5,-3.6544836887830023e-9,-3.548412788564619e-4,-4.049915486044093e-5,-3.6886696467672877e-9,-3.547243771613122e-4,-4.073952000048624e-5,-3.733057102710848e-9,-3.5451840841679887e-4,-4.0991294984085655e-5,-3.781467494098887e-9,-3.5422725173712733e-4,-4.121070540757682e-5,-3.826258266543762e-9,-3.538757710829669e-4,-4.136004087638724e-5,-3.8603033376723175e-9,-3.53504443877645e-4,-4.1418554823238366e-5,-3.879000807542093e-9,-3.5315908496719346e-4,-4.1388813578662445e-5,-3.881636157749867e-9,-3.528788443462086e-4,-4.1296476166252965e-5,-3.871679975513234e-9,-3.5268596813342254e-4,-4.118364620333568e-5,-3.855939529728651e-9,-3.525801622010045e-4,-4.109766926615156e-5,-3.84277572321506e-9,-3.5253922633776333e-4,-4.107846753507557e-5,-3.839853266345332e-9,-3.5252589900936437e-4,-4.1148172477191464e-5,-3.852089139473279e-9,-3.5249873593641004e-4,-4.130635182893659e-5,-3.880468677924388e-9,-3.524232758040045e-4,-4.153215835850133e-5,-3.922098707575269e-9,-3.5227977421103506e-4,-4.179200475176239e-5,-3.971370515911904e-9,-3.5206553777650213e-4,-4.2049383308559924e-5,-4.02168889154195e-9,-3.517923456022032e-4,-4.22732706596802e-5,-4.067108127961648e-9,-3.5148116482799436e-4,-4.2443054420599876e-5,-4.103423630040207e-9,-3.5115656427665365e-4,-4.254990072284108e-5,-4.128602719456839e-9,-3.508422977149487e-4,-4.259571927212223e-5,-4.1426852963775e-9,-3.505584283820493e-4,-4.2591075740938084e-5,-4.1473814440995675e-9,-3.503196597354921e-4,-4.2553010117369735e-5,-4.145588069811775e-9,-3.5013425081355416e-4,-4.250315194947812e-5,-4.140977734111264e-9,-3.5000296732766683e-4,-4.246594915992028e-5,-4.1376949637137355e-9,-3.4991789475969336e-4,-4.2466442610266224e-5,-4.140069290235601e-9,-3.4986146693382345e-4,-4.252696515740907e-5,-4.152177172551735e-9,-3.498066307483597e-4,-4.266243723623054e-5,-4.177099698568324e-9,-3.497195305195477e-4,-4.287472041112924e-5,-4.215884841538455e-9,-3.495659175480646e-4,-4.31478811621325e-5,-4.266536865943841e-9,-3.4932096349046604e-4,-4.3447520413318964e-5,-4.323660910585198e-9,-3.4897946134101256e-4,-4.372699512012349e-5,-4.379354851830018e-9,-3.4856132871286715e-4,-4.394038767390347e-5,-4.425380590164783e-9,-3.481082489458901e-4,-4.4057719624662955e-5,-4.455829749739181e-9,-3.4767160295073125e-4,-4.407548988414973e-5,-4.469069235668393e-9,-3.4729671592580966e-4,-4.401761276765464e-5,-4.468122927844235e-9,-3.470101043459885e-4,-4.392694681445468e-5,-4.459514042827404e-9,-3.4681399513372885e-4,-4.3851866775344917e-5,-4.4512484058967996e-9,-3.466884675872167e-4,-4.383320048423082e-5,-4.450711814114548e-9,-3.465989335162038e-4,-4.3895141685846634e-5,-4.463003731704032e-9,-3.4650592936654275e-4,-4.404155435899953e-5,-4.4899789588464385e-9,-3.4637451628011674e-4,-4.425746261242522e-5,-4.53010146035591e-9,-3.46181278482088e-4,-4.451449326164072e-5,-4.579071229769213e-9,-3.459177599712526e-4,-4.477844122387709e-5,-4.631023039653653e-9,-3.4559013570456575e-4,-4.501691233562397e-5,-4.679952084717743e-9,-3.452158716119919e-4,-4.520525913805162e-5,-4.720973867124305e-9,-3.4481879495999203e-4,-4.532981541959789e-5,-4.7511223937350465e-9,-3.4442408015957925e-4,-4.538843813449534e-5,-4.769589480143558e-9,-3.440542089166945e-4,-4.5389084894805184e-5,-4.7774936884748956e-9,-3.437263070319252e-4,-4.534740102436488e-5,-4.77738576894948e-9,-3.4345067735983324e-4,-4.5284143124787143e-5,-4.772713716467364e-9,-3.4323003778487113e-4,-4.5222842054429787e-5,-4.76739691027074e-9,-3.4305901194424496e-4,-4.518761784714889e-5,-4.765524511352927e-9,-3.429236989818069e-4,-4.52007347246193e-5,-4.771068404277782e-9,-3.428015696217947e-4,-4.5279382227483e-5,-4.787430575127021e-9,-3.426625060919474e-4,-4.543136538951815e-5,-4.8166784633623644E-09,-3.424723163020663e-4,-4.565015092623224e-5,-4.858517932523486e-9,-3.4219991287895055e-4,-4.591113849483137e-5,-4.9093917591879784e-9,-3.418278103507178e-4,-4.6172490727433865e-5,-4.962406765475092e-9,-3.413624942079579e-4,-4.6383736833411844e-5,-5.008742784565768e-9,-3.408383536332906e-4,-4.650185695871724e-5,-5.040476506469633e-9,-3.4030994982600497e-4,-4.650853684917004e-5,-5.053640312983224e-9,-3.398339484712107e-4,-4.641889431496161e-5,-5.0498114969366615e-9,-3.394494690556336e-4,-4.627597601679743e-5,-5.03533340901495e-9,-3.3916682212753793e-4,-4.6134299214963423e-5,-5.018789578479401e-9,-3.389684970747851e-4,-4.60416761329767e-5,-5.0082068715226695e-9,-3.388189563580666e-4,-4.602714616208865e-5,-5.009119290870518e-9,-3.386770001401216e-4,-4.609734320211425e-5,-5.023773996416256e-9,-3.385060967047203e-4,-4.623938128036451e-5,-5.051224680335727e-9,-3.382808819877009e-4,-4.642712042057251e-5,-5.0879722483668916e-9,-3.3798991630609986e-4,-4.662831095629719e-5,-5.128915587919849e-9,-3.3763548039858775e-4,-4.6811176467318076e-5,-5.16845422831316e-9,-3.3723121913479214e-4,-4.694969103565298e-5,-5.201576989894772e-9,-3.367983998553216e-4,-4.7027084779648636e-5,-5.224733145745607e-9,-3.3636159656376993e-4,-4.703738149569362e-5,-5.236319126134027e-9,-3.359445418555763e-4,-4.698513068870385e-5,-5.236724866703748e-9,-3.3556670577894265e-4,-4.688372871358966e-5,-5.228009274195705e-9,-3.3524095168534554e-4,-4.675286146676685e-5,-5.213367901026198e-9,-3.3497229454820115e-4,-4.661567260074138e-5,-5.196589566113095e-9,-3.3475746495397114e-4,-4.6496053972731513e-5,-5.181629379466889e-9,-3.3458496403935856e-4,-4.6416067332450106e-5,-5.172290074158099e-9,-3.3443550989848553e-4,-4.639329367171046e-5,-5.171902756508261e-9,-3.3428303229029717e-4,-4.64378573046309e-5,-5.182859497219969e-9,-3.3409679136510515e-4,-4.654895942300463e-5,-5.205901867299847e-9,-3.3384565314112754e-4,-4.671137333713532e-5,-5.2392644177281354e-9,-3.3350538321036714e-4,-4.689360879171389e-5,-5.278078891925973e-9,-3.330683964243518e-4,-4.705068211910057e-5,-5.314688239576653e-9,-3.3255256023083976e-4,-4.713428191609814e-5,-5.340419822664278e-9,-3.320027438393118e-4,-4.71097541805525e-5,-5.3486420687704235e-9,-3.314797357602177e-4,-4.6972927801329136e-5,-5.337761831657595e-9,-3.3103860655846234e-4,-4.67558263411006e-5,-5.312260680512601e-9,-3.307076685003807e-4,-4.651535747158061e-5,-5.28090259224886e-9,-3.30480214378984e-4,-4.6310845214460665e-5,-5.2532057684234896e-9,-3.303220348953695e-4,-4.618357322333606e-5,-5.236272390095169e-9,-3.301874844254908e-4,-4.61477186883596e-5,-5.233313814606197e-9,-3.3003452239918076e-4,-4.619282888887948e-5,-5.243799607308075e-9,-3.2983367667361197e-4,-4.6292393090905275e-5,-5.264447531098321e-9,-3.2957087722242947e-4,-4.6413211027825386e-5,-5.2904004316313725e-9,-3.2924630863698787e-4,-4.652281087401979e-5,-5.316302669134748e-9,-3.288714144932077e-4,-4.659436358753661e-5,-5.337217434375077e-9,-3.284653025069503e-4,-4.6609576179093505e-5,-5.349376028202255e-9,-3.2805103471112654e-4,-4.656006986482792e-5,-5.35069069746132e-9,-3.2765205016821133e-4,-4.6447489372098676E-05,-5.340948027169847e-9,-3.2728894386480116e-4,-4.628254233746377e-5,-5.321669265696422e-9,-3.2697676918230653e-4,-4.608314579988514e-5,-5.295709141439522e-9,-3.2672307735294367e-4,-4.5871826451843845e-5,-5.266715731905392e-9,-3.265269163253492e-4,-4.567268490866273e-5,-5.238595811180517e-9,-3.263787833299249e-4,-4.5508326939279494e-5,-5.2150856928611045e-9,-3.262613612892449e-4,-4.5396953226487785e-5,-5.199410066665686e-9,-3.26150973687626e-4,-4.5349627530952965e-5,-5.193932690177878e-9,-3.2601983786595027e-4,-4.5367769831319596e-5,-5.1997081785981995e-9,-3.2583937029624085e-4,-4.544098475670977e-5,-5.215918457321146e-9,-3.2558503734766617e-4,-4.554569690961154e-5,-5.2393381578890325e-9,-3.252430307869566e-4,-4.5645933134909383e-5,-5.264196058241929e-9,-3.248178384294444e-4,-4.56983335628188e-5,-5.282923877448141e-9,-3.2433764411315686e-4,-4.566298738150629e-5,-5.288101154267343e-9,-3.238524934028116e-4,-4.55187894312056e-5,-5.275271384380036e-9,-3.2342122598822694e-4,-4.527677794176033e-5,-5.245365700942163e-9,-3.230898582700321e-4,-4.498163827286755e-5,-5.205044425823437e-9,-3.228725935037573e-4,-4.469651453348592e-5,-5.164266989512154e-9,-3.2274750094473347e-4,-4.4478159074842894e-5,-5.13235180184745e-9,-3.226689152698676e-4,-4.435700005748701e-5,-5.114830829337623e-9,-3.225871774071815e-4,-4.433186738587753e-5,-5.112508862693316e-9,-3.2246425807672813e-4,-4.437776497525427e-5,-5.1224162241922625e-9,-3.2228031504722966e-4,-4.445858657848031e-5,-5.139485592758135e-9,-3.2203286741891803e-4,-4.4538062588412724E-05,-5.1580709737048375e-9,-3.217324318411406e-4,-4.4586481028774453E-05,-5.173027330322962e-9,-3.213975733128406e-4,-4.458364652752997e-5,-5.180397855754135e-9,-3.210507152123642e-4,-4.451955192695055e-5,-5.177821168001773e-9,-3.20714821071863e-4,-4.43939735421001e-5,-5.164703758157465e-9,-3.2041064399458284e-4,-4.421548906702248e-5,-5.1421458139077516e-9,-3.2015437220027257e-4,-4.400000934734236e-5,-5.112638550353013e-9,-3.199556359923085e-4,-4.3768795235697604e-5,-5.079609309330488e-9,-3.1981598750983545e-4,-4.354585021416585e-5,-5.046904699548832e-9,-3.197281840014739e-4,-4.3354726543107915e-5,-5.018289250760496e-9,-3.196765829420705e-4,-4.321510531744181e-5,-4.997015044656991e-9,-3.1963870183165634e-4,-4.313959806056474e-5,-4.985452141399794e-9,-3.195878597550035e-4,-4.313112514042971e-5,-4.984725308729074e-9,-3.1949679113388595e-4,-4.318123126172128e-5,-4.994338339842217e-9,-3.1934206103072054e-4,-4.326970683766678e-5,-5.0118522340722995e-9,-3.191090769027233e-4,-4.336592775766331e-5,-5.032784985900198e-9,-3.1879727330728615e-4,-4.3432619842126424e-5,-5.0510003085641095e-9,-3.184242585414621e-4,-4.3432905625344e-5,-5.059844813029959e-9,-3.180265341602522e-4,-4.3340679734383175e-5,-5.054050804727019e-9,-3.1765375634226675e-4,-4.315212077889462e-5,-5.031931810784182e-9,-3.173550483018549e-4,-4.289299386726835e-5,-4.996837554368338e-9,-3.1716080997909414e-4,-4.261505262909454e-5,-4.9567039021442e-9,-3.170692069796597e-4,-4.237923706416617e-5,-4.921374850462595e-9,-3.170465026363197e-4,-4.223264659485568e-5,-4.898891858407981e-9,-3.170418960140496e-4,-4.21921256965402e-5,-4.892790866082162e-9,-3.1700761388347835e-4,-4.224278875220216e-5,-4.901672313350512e-9,-3.169131831034806e-4,-4.234911923149743e-5,-4.920678900423363e-9,-3.16749371627084e-4,-4.246978287171236e-5,-4.943593716023741e-9,-3.165243898644444e-4,-4.2568904032282556e-5,-4.964541739482594e-9,-3.1625720934575716e-4,-4.262161789567898e-5,-4.9789925323940574e-9,-3.159714090148497e-4,-4.2615163483100204e-5,-4.984192983307216e-9,-3.1569080936814757e-4,-4.254769010175503e-5,-4.979239205595006e-9,-3.154366980394452e-4,-4.242640923152246e-5,-4.964927408765917e-9,-3.1522594108550356e-4,-4.226576420878259e-5,-4.9434488536958256e-9,-3.150694594909588e-4,-4.2085617046374826e-5,-4.9179780034059015e-9,-3.1497088780468846e-4,-4.190919872197873e-5,-4.892216555795521e-9,-3.1492551795328115e-4,-4.1760510317359374e-5,-4.869937621819285e-9,-3.1491993926755705e-4,-4.166103135750512e-5,-4.85453930904946e-9,-3.1493292291119807e-4,-4.162602317937051e-5,-4.8486082924002386e-9,-3.149378852148921e-4,-4.166109759027768e-5,-4.853496717228234e-9,-3.149068763252208e-4,-4.1759869297922245e-5,-4.8689420569251265e-9,-3.1481563886056355e-4,-4.1903492821241635e-5,-4.892817724760096e-9,-3.146489018901334e-4,-4.206263788736928e-5,-4.921152563389806e-9,-3.1440486675449474e-4,-4.220199291018188e-5,-4.948556753677259e-9,-3.1409782736031844e-4,-4.2286972882281444e-5,-4.969141215356648e-9,-3.1375783301927705e-4,-4.229193221838251e-5,-4.9779020409811375e-9,-3.1342629281164673e-4,-4.2208473219180394e-5,-4.972322659694826e-9,-3.131469410284784e-4,-4.205134100763301e-5,-4.953675901336095e-9,-3.129532228356514e-4,-4.185850783786602e-5,-4.927339367737182e-9,-3.128559402293983e-4,-4.168268583803075e-5,-4.901590331357037e-9,-3.128372712174129e-4,-4.157504774094596e-5,-4.884996661975068e-9,-3.1285591758021213e-4,-4.1567376446027606e-5,-4.883435028626847e-9,-3.1286216261514294e-4,-4.166161325502891e-5,-4.898203035129861e-9,-3.128152510161355e-4,-4.1832011412133305e-5,-4.926093299613993e-9,-3.1269456478840265e-4,-4.2037319835952676e-5,-4.96108661782143e-9,-3.1250114325379443e-4,-4.2235381879465134e-5,-4.996540702951394e-9,-3.1225205877241923e-4,-4.239361488219513e-5,-5.026892948270938e-9,-3.119724750885652e-4,-4.249330688871886e-5,-5.048533140222312e-9,-3.116889276893549e-4,-4.252921835778996e-5,-5.059987008882629e-9,-3.1142503078342897e-4,-4.25069961860904e-5,-5.0616921955618265e-9,-3.111992283429283e-4,-4.244023805497469e-5,-5.055583300773006e-9,-3.1102368764590496e-4,-4.234797844643438e-5,-5.044617784933671e-9,-3.1090358734081304e-4,-4.22526006575234e-5,-5.032321067688745e-9,-3.108364399804756e-4,-4.217778740604939e-5,-5.022387283844178e-9,-3.108115257297438e-4,-4.214600986581236e-5,-5.018313830814128e-9,-3.1080993296466673e-4,-4.2175257475328325e-5,-5.023008475613783e-9,-3.1080593916080375e-4,-4.227521362395652e-5,-5.038322479284464e-9,-3.1077034837130563e-4,-4.244369565068855e-5,-5.06453984568056e-9,-3.1067585579162317e-4,-4.266468404943358e-5,-5.099969884051941e-9,-3.105035849258535e-4,-4.290936505875487e-5,-5.140877929168914e-9,-3.1024899896644803e-4,-4.314094465863473e-5,-5.181956628701638e-9,-3.0992505626402714e-4,-4.332264950955875e-5,-5.217361941575282e-9,-3.095610883380589e-4,-4.342700451466909e-5,-5.2421145403966415e-9,-3.091971222357173e-4,-4.3443817524911114e-5,-5.253502474396329e-9,-3.088746927985775e-4,-4.338445254519018e-5,-5.252067765269822e-9,-3.086262289687441e-4,-4.328075377912741e-5,-5.241813665026146e-9,-3.084657459880443e-4,-4.317815751980895e-5,-5.229427402694319e-9,-3.083838136062314e-4,-4.312402180818095e-5,-5.222569664693657e-9,-3.083492587428513e-4,-4.315408297432371e-5,-5.227650075739371e-9,-3.083181203766566e-4,-4.328165458806027e-5,-5.247856867561176e-9,-3.082471429138195e-4,-4.349411061585933e-5,-5.2822613795529054e-9,-3.081064848257633e-4,-4.375827146070421e-5,-5.3263709887758225e-9,-3.0788661043989416e-4,-4.403198008161343e-5,-5.373792020884821e-9,-3.0759759139367557e-4,-4.4276497491867025e-5,-5.418190385136207e-9,-3.072628362842785e-4,-4.4465056129220834e-5,-5.454790327401472e-9,-3.0691106900856074e-4,-4.458588788817899e-5,-5.481074258715986e-9,-3.0656967318466223e-4,-4.4640878311394534e-5,-5.496772186340735e-9,-3.0626062010192915e-4,-4.464213768265969e-5,-5.5034243148592386e-9,-3.0599865177202766e-4,-4.460833959835805e-5,-5.503787246380918e-9,-3.057908013060658e-4,-4.4561687503291136e-5,-5.501265100167681e-9,-3.0563641143263365e-4,-4.4525580714277986e-5,-5.4994619326435316e-9,-3.0552715792361276e-4,-4.4522582031122806e-5,-5.501861033144501e-9,-3.0544706109613843e-4,-4.457210286773981e-5,-5.511548919490009e-9,-0.00030537297561927964,-4.4687381552856436e-5,-5.5308628299553145e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json new file mode 100644 index 000000000..2eec9421f --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":8000,"numberOfSamples":1000,"samples":[-3.0527640252829807e-4,-4.487182696660493e-5,-5.56088448082571e-9,-3.051274863200565e-4,-4.511556230951057e-5,-5.6008437940501195e-9,-3.049014822200931e-4,-4.5393887171247894e-5,-5.647698563779582e-9,-3.045865825423837e-4,-4.566978863347711e-5,-5.696284894052496e-9,-3.041902526794886e-4,-4.590165294193654e-5,-5.7403050551512475e-9,-3.0374053440293064e-4,-4.605480630272924e-5,-5.774008768966934e-9,-3.032803042778928e-4,-4.6112832816305496e-5,-5.793973590280497e-9,-3.028557483245855e-4,-4.608383761616052e-5,-5.800251345674449e-9,-3.025032355259023e-4,-4.599882516164128e-5,-5.796427523208801e-9,-3.022393949447573e-4,-4.5902896545994185e-5,-5.788631331365615e-9,-3.020574267495867e-4,-4.5842714571687194e-5,-5.7838921806700334e-9,-3.019300694661608e-4,-4.585434504667538e-5,-5.7883384069394884e-9,-3.0181769376023336e-4,-4.595468543172006e-5,-5.805682519418446e-9,-3.0167899235319e-4,-4.613834629665025e-5,-5.83635658405951e-9,-3.014813398322303e-4,-4.638044052124705e-5,-5.877534282545917e-9,-3.0120806044062887e-4,-4.664417952898078e-5,-5.924029708374941e-9,-3.008608032921932e-4,-4.689076983299546e-5,-5.969769115749644e-9,-3.004568895018775e-4,-4.70885065576558e-5,-6.009334760264992e-9,-3.000232042040917e-4,-4.7218579979817117e-5,-6.039104695872155e-9,-2.995891071912802e-4,-4.72766796425179e-5,-6.057736521969508e-9,-2.9918053358217385e-4,-4.7271135672653113e-5,-6.066024169441235e-9,-2.9881634126882297e-4,-4.721922325858296e-5,-6.066350982343671e-9,-2.9850682571005375e-4,-4.714317647578276e-5,-6.0620073426491385e-9,-2.982536857147729e-4,-4.706682514849363e-5,-6.056588919504954e-9,-2.9805063249734796e-4,-4.7013055973122464e-5,-6.053577596287479e-9,-2.978841024009395e-4,-4.700177778028711e-5,-6.0560846647952315e-9,-2.97733963612634e-4,-4.7047861809806975e-5,-6.066639640409404e-9,-2.975745746966664e-4,-4.715862391952254e-5,-6.086875521052076e-9,-2.9737697702912646e-4,-4.733079302488828e-5,-6.117026762619431e-9,-2.9711318240313096e-4,-4.754766231303244e-5,-6.1553289826818086e-9,-2.967630328757633e-4,-4.777820603997843e-5,-6.1976547684464505e-9,-2.963225516133362e-4,-4.7980702799556336e-5,-6.237878353608434e-9,-2.9581034269964766e-4,-4.8112531767448336e-5,-6.26929277722192e-9,-2.952671701271256e-4,-4.8144449769795835e-5,-6.286810452998715e-9,-2.9474584957997816e-4,-4.807330163392616e-5,-6.28897999422168e-9,-2.942942146728656e-4,-4.7925741507049555e-5,-6.278697823265868e-9,-2.939390776646052e-4,-4.774982986598883e-5,-6.2621933111198565e-9,-2.9367888471910724e-4,-4.759858957460034e-5,-6.246887112949443e-9,-2.9348722961036977e-4,-4.751366495959348e-5,-6.239195834786848e-9,-2.933236015115482e-4,-4.7515401306169104e-5,-6.243051945843658e-9,-2.9314581436119905e-4,-4.760093779409941e-5,-6.2593279168203955e-9,-2.9292007500896937e-4,-4.774844549298213e-5,-6.286013467788338e-9,-2.926269983387905e-4,-4.792463505513392e-5,-6.318926256564662e-9,-2.9226350769051096e-4,-4.80930810595307e-5,-6.352759512595941e-9,-2.918412941194005e-4,-4.822168516898902e-5,-6.382264012712696e-9,-2.9138274761924426e-4,-4.8288192173938596e-5,-6.4033284884177525e-9,-2.9091546827443674e-4,-4.828307144331461e-5,-6.4137142155758484e-9,-2.904666459630382e-4,-4.820960531850297e-5,-6.413290100567614e-9,-2.9005845372039675e-4,-4.808169188193544e-5,-6.403779607548024e-9,-2.897051121066428e-4,-4.7920298339887756e-5,-6.388175539851937e-9,-2.894117280467004e-4,-4.77495594070045e-5,-6.3700487926475646e-9,-2.891745460224369e-4,-4.7593309240161246e-5,-6.352958916462981e-9,-2.889819981834109e-4,-4.7472392700331755e-5,-6.340071065896678e-9,-2.8881605249833365e-4,-4.740260960082055e-5,-6.333942633116508e-9,-2.886536932128631e-4,-4.739292957383811e-5,-6.336355114475078e-9,-2.884687014832789e-4,-4.7443667570689896e-5,-6.348050662755428e-9,-2.8823427250380447e-4,-4.754452904089668e-5,-6.368308311532382e-9,-2.879272735231633e-4,-4.767303651414079e-5,-6.394467888137689e-9,-2.875345818250315e-4,-4.7794856179294424e-5,-6.4217381728864196e-9,-2.8706055734247936e-4,-4.786832012302628e-5,-6.443756519509059e-9,-2.865324198422822e-4,-4.785486234755549e-5,-6.4542037210419195e-9,-2.859983895327293e-4,-4.773390713864742e-5,-6.449179015088165e-9,-2.8551497623516194e-4,-4.7515537099475336e-5,-6.429222290163076e-9,-2.8512656698742036e-4,-4.724172825041583e-5,-6.399602792241161e-9,-2.8484791237568235e-4,-4.697228518879425e-5,-6.368414825098121e-9,-2.846599731981497e-4,-4.676227057336778e-5,-6.343524830079535e-9,-2.845204990113826e-4,-4.664360730421715e-5,-6.330077698450703e-9,-2.8438137789211793e-4,-4.661903031892221e-5,-6.32954910609419e-9,-2.842033332610527e-4,-4.666740117899054e-5,-6.340163616828402e-9,-2.8396352830062366e-4,-4.6754274987887116e-5,-6.357961127061933e-9,-2.836566692220362e-4,-4.684229725179311e-5,-6.377959739889069e-9,-2.8329216427076527e-4,-4.689886773239183e-5,-6.395189096969708e-9,-2.828896488527907e-4,-4.6900720390375284e-5,-6.405540596281919e-9,-2.824742018907562e-4,-4.6836037546351875e-5,-6.4064023526000905e-9,-2.8207178859335354e-4,-4.670471097933904e-5,-6.397002591025266e-9,-2.817052464373959e-4,-4.6517083949337426e-5,-6.378389721142845e-9,-2.8139115347079264e-4,-4.629149712487325e-5,-6.3530658178796655e-9,-2.811378256204399e-4,-4.605106192105769e-5,-6.324396845660935e-9,-2.8094456582733565e-4,-4.582011369839805e-5,-6.295969795469077e-9,-2.8080213121061873e-4,-4.562084808863251e-5,-6.271061910825657e-9,-2.806941282722342e-4,-4.547056083835451e-5,-6.252305778500468e-9,-2.805989529923734e-4,-4.537959014034061e-5,-6.241511789741509e-9,-2.80492067241958e-4,-4.5349843601162954e-5,-6.239532828776588e-9,-2.803485913613245e-4,-4.5373805665704785e-5,-6.246068068716576e-9,-2.8014639891832464e-4,-4.543399639996473e-5,-6.259380228216586e-9,-2.7987013346108646e-4,-4.550321157816095e-5,-6.276047783203556e-9,-2.795162996405821e-4,-4.5546626057891795e-5,-6.291045688354151e-9,-2.790984739623287e-4,-4.5527321372703615e-5,-6.298505516465384e-9,-2.7865004000894166e-4,-4.541620148794469e-5,-6.2933199008508685e-9,-2.7822043288384707e-4,-4.520484869900707e-5,-6.273276588202333e-9,-2.7786184532760936e-4,-4.4915535087074116e-5,-6.240723143326448e-9,-2.776091852793529e-4,-4.459975553570474e-5,-6.202458787212566e-9,-2.774638632702066e-4,-4.432123225548417e-5,-6.167368360824802e-9,-2.7739275622409024e-4,-4.41307893297388e-5,-6.142942429461774e-9,-2.7734363791847937e-4,-4.404793703195258e-5,-6.132712569902154e-9,-2.772666481119829e-4,-4.405873879426259e-5,-6.135803693451539e-9,-2.7712954630060494e-4,-4.41272344392883e-5,-6.148198003690473e-9,-2.769220926915838e-4,-4.421078330515423e-5,-6.164515668643785e-9,-2.7665243775120893e-4,-4.4271847046803456e-5,-6.179465722684056e-9,-2.7634044414996943e-4,-4.42840858576599e-5,-6.188763867311319e-9,-2.760112787880964e-4,-4.4233969441495255e-5,-6.1896325079837635e-9,-2.7569053678467995e-4,-4.4119908832911274e-5,-6.1810143630256235e-9,-2.7540081443001705e-4,-4.395037973603709e-5,-6.1635500652351195e-9,-2.7515925763830574e-4,-4.374163186724933e-5,-6.13931893200916e-9,-2.7497583229343773e-4,-4.351509382685275e-5,-6.1113765985356755e-9,-2.7485228599034487e-4,-4.3294504323835476e-5,-6.083191373407955e-9,-2.747818899337699e-4,-4.3102814240736015e-5,-6.0580978536060394e-9,-2.7475014030275356e-4,-4.2959058861573174e-5,-6.038863549547172e-9,-2.747364727847155e-4,-4.287561578709453e-5,-6.027414092691353e-9,-2.7471679197166814e-4,-4.2856211898555225e-5,-6.024680664675889e-9,-2.74666552518033e-4,-4.2894856634732136e-5,-6.0304870842090665e-9,-2.745641634544586e-4,-4.297583426922976e-5,-6.043429961128174e-9,-2.7439449831047824e-4,-4.307484329777695e-5,-6.060781782144661e-9,-2.7415239183585174e-4,-4.316139154284506e-5,-6.078538519547611e-9,-2.738458939963984e-4,-4.320289628151456e-5,-6.0918223659286445e-9,-2.7349833665268886e-4,-4.317111271140737e-5,-6.095829254040278e-9,-2.731473286401864e-4,-4.305077016877184e-5,-6.087300751131777e-9,-2.728384066406977e-4,-4.284850797286421e-5,-6.0661306830069746e-9,-2.726122464122091e-4,-4.2597682445614436e-5,-6.036317211131248e-9,-2.724883882208636e-4,-4.2353186226421395e-5,-6.005346149629137e-9,-2.724538993112942e-4,-4.21739660621937e-5,-5.981721324392774e-9,-2.7246601864680027e-4,-4.209994110375406e-5,-5.971667694606237e-9,-2.724694960632973e-4,-4.2136627145050584e-5,-5.976871636177898e-9,-2.724184831524113e-4,-4.225643997788255e-5,-5.9944559253544774e-9,-2.7229051896981396e-4,-4.241362759713718e-5,-6.018773549341146e-9,-2.720878961454436e-4,-4.2562043557314734e-5,-6.043635716054438e-9,-2.718303929497391e-4,-4.266714123706157e-5,-6.063913242192316e-9,-2.715458512132313e-4,-4.271024379125761e-5,-6.076285881259704e-9,-2.712626659453091e-4,-4.268748746246162e-5,-6.07938776767281e-9,-2.710052329722968e-4,-4.260653559518088e-5,-6.073631332430156e-9,-2.707916949070718e-4,-4.248307887576607e-5,-6.060863861100873e-9,-2.7063291676093104e-4,-4.233782096456377e-5,-6.043919283576518e-9,-2.70531999054325e-4,-4.2193858972839276e-5,-6.026112658845783e-9,-2.7048412159524855e-4,-4.207417276834723e-5,-6.010749252660998e-9,-2.704768085276078e-4,-4.199898085891688e-5,-6.0007083249929064e-9,-2.7049091718653486e-4,-4.198292846456885e-5,-5.998122765150181e-9,-2.705026716692996e-4,-4.203245930769175e-5,-6.0041500657964715e-9,-2.704867786001442e-4,-4.2143960157053555e-5,-6.018813110137525e-9,-2.7042033326989443e-4,-4.2303217237346e-5,-6.0408918160634616e-9,-2.702869966792254e-4,-4.248659500899885e-5,-6.067897441023674e-9,-2.7008072908028737e-4,-4.26641123975258e-5,-6.096212887106141e-9,-2.698083301299173e-4,-4.2804202514864496e-5,-6.121495193355481e-9,-2.6949017078992116e-4,-4.287971029548579e-5,-6.139410707238995e-9,-2.6915846953213103e-4,-4.287457712691834e-5,-6.146692366322419e-9,-2.688523188530164e-4,-4.2790136468926805e-5,-6.142330933965789e-9,-2.6860905054935876e-4,-4.2648942394378234e-5,-6.128480097984698e-9,-2.684529386021688e-4,-4.249325511328419e-5,-6.110525799006696e-9,-2.683846561272461e-4,-4.237577162193681e-5,-6.0958916495610374e-9,-2.6837713845480256e-4,-4.2343242447415576e-5,-6.091676533973367e-9,-2.6838259865424467e-4,-4.241897119821026e-5,-6.1020278393601044e-9,-2.6834954243159544e-4,-4.259356052706968e-5,-6.126618946744287e-9,-2.682414538672124e-4,-4.282968580925502e-5,-6.161071746178656e-9,-2.680473788683876e-4,-4.307777590451198e-5,-6.198928228542621e-9,-2.6778068952418554e-4,-4.329323584064263e-5,-6.233932842908828e-9,-2.6746984498891765e-4,-4.3447294758245534e-5,-6.261585257801009e-9,-2.6714767994234935e-4,-4.3529579126087075e-5,-6.279696539448954e-9,-2.6684354540698494e-4,-4.3545106782298875e-5,-6.288235271926127e-9,-2.6657927046700944e-4,-4.3509317188260445e-5,-6.288838671033637e-9,-2.6636794026195363e-4,-4.3443465401146905e-5,-6.284232359286678e-9,-2.662140688653375e-4,-4.33711394559145e-5,-6.277670357631493e-9,-2.661141777281877e-4,-4.331570058397092e-5,-6.272450417208355e-9,-2.660574130223562e-4,-4.329813146063895e-5,-6.271533343649169e-9,-2.6602631028516745e-4,-4.3334832510506525e-5,-6.277259574999488e-9,-2.6599810856047266e-4,-4.3435186752350394e-5,-6.291119283070944e-9,-2.6594709819864e-4,-4.35991710667151e-5,-6.313534449691571e-9,-2.6584826187483416e-4,-4.3815728146144786e-5,-6.3436577175095264e-9,-2.6568197080015167e-4,-4.406282185693006e-5,-6.379260979809167e-9,-2.654388737832523e-4,-4.4309976961368614e-5,-6.416844899921613e-9,-2.651235904796523e-4,-4.452352360454744e-5,-6.45208973946681e-9,-2.6475574490715504e-4,-4.467379291793127e-5,-6.480660100582804e-9,-2.643674413816663e-4,-4.474263772198858e-5,-6.499235785255884e-9,-2.639972203386808e-4,-4.472932230357101e-5,-6.506524425656316e-9,-2.636814333534693e-4,-4.4652981742684745e-5,-6.50394943475184e-9,-2.6344474410546685e-4,-4.455031096217054e-5,-6.4957052750673075e-9,-2.6329215242018296e-4,-4.446797824163044e-5,-6.487971527226249e-9,-2.6320539661309406e-4,-4.445066132419316e-5,-6.487318143828218e-9,-2.63146231141766e-4,-4.452761326611089e-5,-6.498693327228091e-9,-2.630670795117471e-4,-4.4702593314460794e-5,-6.523735117410233e-9,-2.629259962418986e-4,-4.495205403355389e-5,-6.560195481816707e-9,-2.626998326199566e-4,-4.523322969000845e-5,-6.6028055138425835e-9,-2.6238984542081514e-4,-4.5498615964264204e-5,-6.645151128486782e-9,-2.620181139265042e-4,-4.57101034480172e-5,-6.681643636040315e-9,-2.6161796896905014e-4,-4.584720776675456e-5,-6.7088001834994565e-9,-2.6122365300701173e-4,-4.590801043953323e-5,-6.725594759670876e-9,-2.608629732320002e-4,-4.590508421570969e-5,-6.733110680725014e-9,-2.605538971319134e-4,-4.585973386898697e-5,-6.733869753505527e-9,-2.6030410219870376e-4,-4.5796853823059685e-5,-6.731122265893311e-9,-2.601120119629486e-4,-4.574121346938611e-5,-6.728248726724007e-9,-2.5996821459528486e-4,-4.571499884470834e-5,-6.728333811525041e-9,-2.5985675252670267e-4,-4.573601546615178e-5,-6.733900781581118e-9,-2.597563470776258e-4,-4.581593891770877e-5,-6.7467347208660815e-9,-2.596420276961034e-4,-4.5958327928148174e-5,-6.76770494879153e-9,-2.594877524327709e-4,-4.6156630892450285e-5,-6.796534200413236e-9,-2.5927042693107434e-4,-4.6392942692009576e-5,-6.8315565589601714e-9,-2.589751849875842e-4,-4.663871238482509e-5,-6.86962752289666e-9,-2.586008062635789e-4,-4.685864046342157e-5,-6.906416881867135e-9,-2.5816311466290005e-4,-4.7018104873896896e-5,-6.937219567577798e-9,-2.5769402554871504e-4,-4.70926588010539e-5,-6.9581636155644655e-9,-2.5723517884218273e-4,-4.707644773329669e-5,-6.967428938305518e-9,-2.568273908815006e-4,-4.6986025040791123e-5,-6.966001210496018e-9,-2.564992393431867e-4,-4.685748280218821e-5,-6.957630999254399e-9,-2.5625871902160277e-4,-4.6737400412949545e-5,-6.947966529409689e-9,-2.5609074998136574e-4,-4.667043573132832e-5,-6.943105351110571e-9,-2.5596122517727485e-4,-4.6687347367702306e-5,-6.947967062704738e-9,-2.5582634783583117e-4,-4.6796866950713174e-5,-6.964938644351132e-9,-2.5564461158371896e-4,-4.698373076282578e-5,-6.993209196686726e-9,-2.553879109156633e-4,-4.7213518226825917E-05,-7.029044733220987e-9,-2.5504832832596024e-4,-4.744277599023395e-5,-7.066933407213379e-9,-2.5463858429774843e-4,-4.7630969964505535e-5,-7.1011838454172516e-9,-2.541865650862485e-4,-4.775023325017012e-5,-7.127396703046114e-9,-2.537265402404863e-4,-4.7790107831489385e-5,-7.143345909601783e-9,-2.532904918374822e-4,-4.775683549761495e-5,-7.1491178104008635e-9,-2.529021042786563e-4,-4.766889086299671e-5,-7.146663004807935e-9,-2.525741732148423e-4,-4.7551249353078e-5,-7.139062192878236e-9,-2.5230871169483677e-4,-4.743029000875771e-5,-7.129782907503167e-9,-2.5209851175530824e-4,-4.733012368995658e-5,-7.12209759254885e-9,-2.519291245187472e-4,-4.7270279788107355e-5,-7.1187265860613594e-9,-2.517806968882801e-4,-4.726422556842384e-5,-7.12166746585097e-9,-2.5162963986732293e-4,-4.731809415808857e-5,-7.132097650423624e-9,-2.514505510713131e-4,-4.742927313984141e-5,-7.1502341423829864e-9,-2.512190030433243e-4,-4.758501628393123e-5,-7.175103678264232e-9,-2.5091568236328035e-4,-4.7761815907209246e-5,-7.204305121348925e-9,-2.5053181294401e-4,-4.7926849500478765e-5,-7.233991717484305e-9,-2.500746237911642e-4,-4.804301276238442e-5,-7.259360514494356e-9,-2.495701519604955e-4,-4.8078046570921506e-5,-7.275783141609628e-9,-2.490601882212913e-4,-4.8015746621047336e-5,-7.280321967292176e-9,-2.4859206990471175e-4,-4.786450499113676e-5,-7.272987851368456e-9,-2.4820404096295365e-4,-4.7657974491023386e-5,-7.2570490683069305e-9,-2.479123719305355e-4,-4.744593983612639e-5,-7.238137844085153e-9,-2.477062542180496e-4,-4.7278801363755583e-5,-7.2225323219480234e-9,-2.475523859045091e-4,-4.719243023421515e-5,-7.2153509223338515e-9,-2.4740634073176207e-4,-4.7199163254914456e-5,-7.21928276128765e-9,-2.472256149075255e-4,-4.728689651818537e-5,-7.234113502680999e-9,-2.469800996566623e-4,-4.742481447800407e-5,-7.2570090226968695e-9,-2.4665781472638505e-4,-4.757279635380423e-5,-7.283374548153914e-9,-2.462655369996502e-4,-4.769151536169288e-5,-7.308038135183422e-9,-2.458251322065457e-4,-4.775085456159175e-5,-7.326465854721028e-9,-2.4536711100036463e-4,-4.77350886691006e-5,-7.3357152755733405e-9,-2.4492329122390537e-4,-4.764420066221715e-5,-7.334911212083219e-9,-2.4452039783219196e-4,-4.749169496663902e-5,-7.3251748443696005e-9,-2.441758732145271e-4,-4.7300134577938174e-5,-7.309112821670338e-9,-2.4389627170717684e-4,-4.7095968591426874e-5,-7.2900891206745445e-9,-2.4367780651202367e-4,-4.6904922721911e-5,-7.2715143086660904e-9,-2.4350820404063506e-4,-4.674862028056588e-5,-7.2563236900772534e-9,-2.4336901910568495e-4,-4.6642494199979074e-5,-7.246701350541432e-9,-2.4323787902715116e-4,-4.6594604978692496e-5,-7.243991435989502e-9,-2.4309057272598025e-4,-4.6604855006113405e-5,-7.248666445835073e-9,-2.4290326713360635e-4,-4.666429753503088e-5,-7.260234391154556e-9,-2.4265533867043101e-4,-4.67546250155109e-5,-7.2770527231963495e-9,-2.4233328045250883e-4,-4.684845105661854e-5,-7.29615811529741e-9,-2.4193563237893614e-4,-4.6911622727816726e-5,-7.313363425619466e-9,-2.4147769061437337e-4,-4.690904210391057e-5,-7.323911274472526e-9,-2.409931846698145e-4,-4.68145030450435e-5,-7.3237831866979765e-9,-2.405293638181594e-4,-4.6622304985804496e-5,-7.311327256640174e-9,-2.4013397134164407e-4,-4.6354911420302454e-5,-7.288398575368516e-9,-2.3983792521253927e-4,-4.606009583001144e-5,-7.260171753226957e-9,-2.396424964711392e-4,-4.579591722183568e-5,-7.233460507133913e-9,-2.3951876787466002e-4,-4.561007369104896e-5,-7.21434469153871e-9,-2.394196251219914e-4,-4.552433842374012e-5,-7.206304347525716e-9,-2.3929702425245816e-4,-4.553082614515197e-5,-7.209572961363757e-9,-2.3911604156302504e-4,-4.559902693265397e-5,-7.221607636814043e-9,-2.3886148969033618e-4,-4.56878141259867e-5,-7.238141334743658e-9,-2.385376124584638e-4,-4.57569458542221e-5,-7.25434375948497e-9,-2.381635151221613e-4,-4.5775227331894453e-5,-7.265844606590987e-9,-2.3776689984276165e-4,-4.57248113055291e-5,-7.26951760352044e-9,-2.3737775512568452e-4,-4.560224089873021e-5,-7.26396202658587e-9,-2.3702288262502963e-4,-4.541701560695537e-5,-7.249620171308552e-9,-2.3672182048234104e-4,-4.518837706556744e-5,-7.228512886555455e-9,-2.3648451210419064e-4,-4.494110071809932e-5,-7.203679129923876e-9,-2.3631073766417756e-4,-4.470112417759971e-5,-7.1784915077864556e-9,-2.3619104748406788e-4,-4.449166637344944e-5,-7.156032804897266e-9,-2.361087730659606e-4,-4.433028327220373e-5,-7.138674148007875e-9,-2.3604256281260482e-4,-4.422705852302139e-5,-7.1278965459513375e-9,-2.3596896071219697e-4,-4.41837594790764e-5,-7.124282211477298e-9,-2.358648734407393e-4,-4.419359846967748e-5,-7.127541904743606e-9,-2.3571005457793368e-4,-4.424139308519803e-5,-7.136477505700135e-9,-2.3548986076137152e-4,-4.4304182265018096e-5,-7.148875985336727e-9,-2.3519855436410849e-4,-4.435271161882365e-5,-7.16145714276836e-9,-2.348430390860336e-4,-4.4354724701945077e-5,-7.170110582162483e-9,-2.3444587375598763e-4,-4.428117792866847e-5,-7.170657306550671e-9,-2.3404509111068765e-4,-4.411557127942225e-5,-7.1601656476032516e-9,-2.3368771973065835e-4,-4.386412570504797e-5,-7.138447255205115e-9,-2.334157329157928e-4,-4.356117057573164e-5,-7.108920211252188e-9,-2.3324859251575434e-4,-4.326304457334257e-5,-7.077986722810363e-9,-2.3317225159038513e-4,-4.3029164658112595e-5,-7.0528241170588876e-9,-2.3314325821755143e-4,-4.289880884221161e-5,-7.038651316312173e-9,-2.3310674475310233e-4,-4.287707539508815e-5,-7.037006731343113e-9,-2.330173793949718e-4,-4.2937138101060195e-5,-7.045793591462278e-9,-2.3285221519255721e-4,-4.303448249497462e-5,-7.060613085178226e-9,-2.3261221161084732e-4,-4.312326355963217e-5,-7.076380098752534e-9,-2.3231616237874106e-4,-4.3167782922615494e-5,-7.0885642907420745e-9,-2.3199226213489643e-4,-4.3147504709399666e-5,-7.093925360427784e-9,-2.3167066135599025e-4,-4.305722178644823e-5,-7.090854405127532e-9,-2.3137815592412457e-4,-4.290464072813479e-5,-7.079431225173229e-9,-2.3113482317374794e-4,-4.2706990561187926e-5,-7.061239222047379e-9,-2.3095210624270325e-4,-4.248733394858226e-5,-7.0389514644621475e-9,-2.3083209319112942e-4,-4.22708356697799e-5,-7.0157556508521975e-9,-2.3076787058155768e-4,-4.208124244565444e-5,-6.994754152444318e-9,-2.3074481404720975e-4,-4.193779429781794e-5,-6.978475418029599e-9,-2.3074269629111773e-4,-4.185278131262165e-5,-6.9685812919441475e-9,-2.3073838954341724e-4,-4.183002690679065e-5,-6.9657828504140465e-9,-2.307087773182823e-4,-4.1864416184094224e-5,-6.969890191920407e-9,-2.3063358371772487e-4,-4.19423194920427e-5,-6.979881232260712e-9,-2.304980447362638e-4,-4.204276810737836e-5,-6.993919691136392e-9,-2.3029541532778425e-4,-4.2139396145542684e-5,-7.00935383163725e-9,-2.3002929420596648e-4,-4.220331442258605e-5,-7.022821179996584e-9,-2.297155277725766e-4,-4.220735882242904e-5,-7.0306406913778314e-9,-2.2938274641947577e-4,-4.2132214476566026e-5,-7.029632424365228e-9,-2.2906972807424893e-4,-4.197407643695822e-5,-7.018296801761733e-9,-2.2881761972917472e-4,-4.175160042946605e-5,-6.997961873684011e-9,-2.286567093282979e-4,-4.15075256296687e-5,-6.9732029722847966e-9,-2.2859182172845228e-4,-4.129977684881916e-5,-6.9508561159118375e-9,-2.2859518852719337e-4,-4.118158264999498e-5,-6.937623078004585e-9,-2.2861445669427582e-4,-4.1179317366699686e-5,-6.937368890191579e-9,-2.2859373178187907e-4,-4.128165726085842e-5,-6.949709434593278e-9,-2.2849535207625107e-4,-4.144683429672747e-5,-6.970641653126126e-9,-2.283102601143957e-4,-4.162180946726997e-5,-6.994513297007544e-9,-2.280546314648973e-4,-4.1760936140705576e-5,-7.015996457807604e-9,-2.2775905137933017e-4,-4.1836162324814815e-5,-7.0312662464705675e-9,-2.2745750303615093e-4,-4.183854159207291e-5,-7.038384862713035e-9,-2.2717978153226345e-4,-4.1774688473891304e-5,-7.037214328561364e-9,-2.269476550317656e-4,-4.166168283592476e-5,-7.029107904443636e-9,-2.2677360769187676e-4,-4.152239765949198e-5,-7.016489998134974e-9,-2.2666086428735168e-4,-4.13817553708349e-5,-7.002360297324509e-9,-2.2660400530891817e-4,-4.126365474609324e-5,-6.989766583218536e-9,-2.2659004542151717e-4,-4.1188304668478054e-5,-6.981333927974789e-9,-2.266000219235072e-4,-4.116989011754661e-5,-6.978931288333946e-9,-2.266111881676761e-4,-4.12146495166316e-5,-6.9835033237536505e-9,-2.2659985001449061e-4,-4.131967774449151e-5,-6.9950455254666655e-9,-2.2654460748588225e-4,-4.147283960401956e-5,-7.012666563520272e-9,-2.264295628693442e-4,-4.165394006870694e-5,-7.034672741319516e-9,-2.2624709886908756e-4,-4.183709352380845e-5,-7.058654437906543e-9,-2.259998866238783e-4,-4.1994173550205136e-5,-7.081632424729571e-9,-2.2570180047419192e-4,-4.20991362790095e-5,-7.100361989265034e-9,-2.2537742095192945e-4,-4.213298776272619e-5,-7.111886301353217e-9,-2.2505959382885995e-4,-4.208912506154797e-5,-7.114348718520941e-9,-2.2478421898691062e-4,-4.197821401236689e-5,-7.107904138739319e-9,-2.2458174592226204e-4,-4.1830607186345735e-5,-7.0953504217620375e-9,-2.244663606137209e-4,-4.169327376221295e-5,-7.081979987657558e-9,-2.2442665203386655e-4,-4.1618683723854355e-5,-7.074284006802257e-9,-2.2442408061700852e-4,-4.1646821969372816e-5,-7.077692877238242e-9,-2.2440397415766895e-4,-4.178786877968106e-5,-7.0943342038050634e-9,-2.2431615173148974e-4,-4.201628734466668e-5,-7.122132208245681e-9,-2.2413418489370047e-4,-4.2281316841771065e-5,-7.155838491573877e-9,-2.238625036955378e-4,-4.252762716447894e-5,-7.189267752364687e-9,-2.2352958981585374e-4,-4.271389191467571e-5,-7.217364886846549e-9,-2.231742512295794e-4,-4.2821232086966055e-5,-7.2372470959088515e-9,-2.2283320562756947e-4,-4.285179730744506e-5,-7.2482661351785805e-9,-2.2253387205703278e-4,-4.282232746248896e-5,-7.2515555960049095e-9,-2.2229206566917885e-4,-4.275713751688142e-5,-7.2494356512215224e-9,-2.2211260756237194e-4,-4.2682685880708425e-5,-7.244838453971768e-9,-2.2199099538278396e-4,-4.262399641811782e-5,-7.240796077498677e-9,-2.2191514949620428e-4,-4.260230497054901e-5,-7.240011891369483e-9,-2.2186707232957353e-4,-4.26332616889838e-5,-7.244543832697758e-9,-2.2182464125580366e-4,-4.2725338241283515e-5,-7.255615619695993e-9,-2.217638453501513e-4,-4.287842690194515e-5,-7.273534478793906e-9,-2.2166170729793913e-4,-4.308298693357485e-5,-7.2976765517466445e-9,-2.2149980429336165e-4,-4.332033803452491e-5,-7.326522432477613e-9,-2.2126785688274673e-4,-4.3564584276414805e-5,-7.357751075488498e-9,-2.20966584781167e-4,-4.3786290015324124e-5,-7.388436436288333e-9,-2.2060898292754956e-4,-4.395759483340187e-5,-7.415404439706891e-9,-2.202193504707468e-4,-4.405796910551689e-5,-7.435775583366592e-9,-2.1982983813928416e-4,-4.407947682940211e-5,-7.4476444040565705e-9,-2.1947474914701923e-4,-4.403040203489803e-5,-7.450766846569757e-9,-2.1918316392070605e-4,-4.393615767618415e-5,-7.447040423172644e-9,-2.1897091886597989e-4,-4.3836355658260945e-5,-7.440501159279104e-9,-2.188338255077648e-4,-4.3777167322247025e-5,-7.4366017543605706e-9,-2.187450180632313e-4,-4.379926707359548e-5,-7.440747299185002e-9,-2.1865951766138927e-4,-4.3924079338995526e-5,-7.456451577868975e-9,-2.1852701523895825e-4,-4.414394644131482e-5,-7.48388495394003e-9,-2.1830915181893224e-4,-4.442241000664643e-5,-7.51964660486929e-9,-2.1799327092026865e-4,-4.47064341649404e-5,-7.558021886353412e-9,-2.1759542948186208e-4,-4.4945093539923776e-5,-7.593080121112747e-9,-2.1715190572061313e-4,-4.510525927973701e-5,-7.62051102463403e-9,-2.1670511352975532e-4,-4.5177775919498044e-5,-7.63846614779529e-9,-2.1629130702600425e-4,-4.5174263035486545e-5,-7.647414111500688e-9,-2.1593400226015044e-4,-4.511913434864514e-5,-7.649461867526958e-9,-2.1564283671687278e-4,-4.504151932089862e-5,-7.647573809127245e-9,-2.1541555700511315e-4,-4.496945565191675e-5,-7.644907915657562e-9,-2.152409460728591e-4,-4.4926547873120016E-05,-7.644326527091175e-9,-2.1510150205944102e-4,-4.493027145003056e-5,-7.648080390942638e-9,-2.1497560662559327e-4,-4.499101379307958e-5,-7.65764086825275e-9,-2.1483945926710325e-4,-4.511125926355644e-5,-7.673632641449619e-9,-2.1466926637521481e-4,-4.528477274004901e-5,-7.695803268049495e-9,-2.144441173207301e-4,-4.549613641988964e-5,-7.722992976764426e-9,-2.1414962209211983e-4,-4.572138551931352e-5,-7.753133503949428e-9,-2.137817825713578e-4,-4.5930557875204e-5,-7.783365806364265e-9,-2.1334992695909555e-4,-4.609259275443571e-5,-7.810385927253544e-9,-2.1287718132165904e-4,-4.6182138061975344e-5,-7.831058043246478e-9,-2.123972901802133e-4,-4.618667111745394e-5,-7.843194529569795e-9,-2.1194776550871445e-4,-4.611156504767954e-5,-7.846275859882824e-9,-2.1156084382754122e-4,-4.598097245517623e-5,-7.841849026160612e-9,-2.1125475027746477e-4,-4.5833615902049135e-5,-7.833415837621815e-9,-2.1102786191385352e-4,-4.57141563789811e-5,-7.825754714870187e-9,-2.1085766176323766e-4,-4.5662121102797614e-5,-7.823773717687805e-9,-2.1070526783781765e-4,-4.570112440445812e-5,-7.831148800367581e-9,-2.1052503260910168e-4,-4.5831388471697066e-5,-7.84914193292144e-9,-2.1027715631769618e-4,-4.602835716858338e-5,-7.876058836978009e-9,-2.0993957436240816e-4,-4.6248926026246374e-5,-7.90766713758257e-9,-2.095146194759454e-4,-4.644402823389973e-5,-7.938509723459188e-9,-2.0902749841148404e-4,-4.6573103373786205e-5,-7.963593692431587e-9,-2.085173003005473e-4,-4.6614726939852604e-5,-7.979751223426029e-9,-2.080247685004384e-4,-4.656971988276465e-5,-7.986202202748241e-9,-2.0758195037667867e-4,-4.645702153575651e-5,-7.984303236040702e-9,-2.0720680107128868e-4,-4.630568678322192e-5,-7.976805592462343e-9,-2.069027746736158e-4,-4.6146864470554793E-05,-7.967006829227965e-9,-2.0666149949068237e-4,-4.6008053738656595e-5,-7.958051544835984e-9,-2.0646643337144435e-4,-4.591001322147901e-5,-7.952478950941206e-9,-2.0629619473845173e-4,-4.586558575032321e-5,-7.952010523962518e-9,-2.0612715730170046e-4,-4.587946155808738e-5,-7.957511462395227e-9,-2.0593551752786214e-4,-4.594814009737746e-5,-7.969025447952002e-9,-2.0569936999224403e-4,-4.6059814191126656e-5,-7.985789917193825e-9,-2.054013396767555e-4,-4.619444426954505e-5,-8.006201300389058e-9,-2.0503200586908336e-4,-4.632476440606799e-5,-8.027795774410303e-9,-2.0459370977526643e-4,-4.6419232557928356e-5,-8.04739911864323e-9,-2.0410341514187733e-4,-4.644771828424737e-5,-8.061606874456355e-9,-2.0359249297940358e-4,-4.6389591386022976e-5,-8.06761967917358e-9,-2.0310152417526018e-4,-4.6241943470151586e-5,-8.064208675557398e-9,-2.026701314330422e-4,-4.602412220191169e-5,-8.05238930586289e-9,-2.0232482212882342e-4,-4.5775201703916056e-5,-8.035415203185357e-9,-2.0206981769589567e-4,-4.5543952383211005e-5,-8.017995799141722e-9,-2.0188503857131567e-4,-4.5374719563007136e-5,-8.005002937932091e-9,-2.0173208974531864e-4,-4.5294685661682146e-5,-8.000132839061242e-9,-2.0156558865288865e-4,-4.530694102432007e-5,-8.004940251523124e-9,-2.0134563404935994e-4,-4.5390862347908655e-5,-8.018476540387911e-9,-2.010477628284383e-4,-4.5508700213428396e-5,-8.037583629336856e-9,-2.0066816008643582e-4,-4.56159424839469e-5,-8.05775420557668e-9,-2.002233040454102e-4,-4.5672547498502866e-5,-8.074324603901956e-9,-1.9974456130923202e-4,-4.5652156194690424e-5,-8.083656540042794e-9,-1.992695170896543e-4,-4.554701856445397e-5,-8.083957366931921e-9,-1.9883270591920156e-4,-4.5367698049175715e-5,-8.075522287619769e-9,-1.9845841745310465e-4,-4.513832170771045e-5,-8.060398815725766e-9,-1.981572124953109e-4,-4.488951139782889e-5,-8.041672208553757e-9,-1.9792619199168255e-4,-4.46514605035761e-5,-8.022654713173082e-9,-1.97751818665741e-4,-4.444885607769098e-5,-8.006221420156825e-9,-1.9761372928278598e-4,-4.429815409582809e-5,-7.994418534127477e-9,-1.9748834183331958e-4,-4.4206787770554826e-5,-7.988349103172298e-9,-1.9735172150645567e-4,-4.417347840913245e-5,-7.988243219864344e-9,-1.9718177685405577e-4,-4.4188897515318655e-5,-7.993577576316224e-9,-1.969602185929472e-4,-4.423633228093872e-5,-8.003137811219496e-9,-1.96674791367231e-4,-4.429249144944042e-5,-8.01500158984719e-9,-1.9632209229852586e-4,-4.43290434847933e-5,-8.026530943997656e-9,-1.9591072087203853e-4,-4.4315855466975366e-5,-8.03455558004738e-9,-1.9546352222861362e-4,-4.422685189198833e-5,-8.035926730100295e-9,-1.9501665604001342e-4,-4.404835137258371e-5,-8.028456381532183e-9,-1.9461311284592976e-4,-4.3787482447394696e-5,-8.011956426634773e-9,-1.9429036612252486e-4,-4.3475903590539156e-5,-7.988819905738023e-9,-1.9406609579109184e-4,-4.31641133352837e-5,-7.963631507898714e-9,-1.939293801808378e-4,-4.290607476846081e-5,-7.941776010191559e-9,-1.9384326424020214e-4,-4.274050836180446e-5,-7.927647618378034e-9,-1.9375801371840964e-4,-4.267820492195053e-5,-7.923311832665135e-9,-1.9362806935360174e-4,-4.270088509049269e-5,-7.928124868965717e-9,-1.934249241067107e-4,-4.277008015595093e-5,-7.93923136862352e-9,-1.931422172148227e-4,-4.284026359050476e-5,-7.952533831849908e-9,-1.9279378906395382e-4,-4.287086605432226e-5,-7.963753390058145e-9,-1.9240746774724533e-4,-4.283438753175265e-5,-7.96935681810304e-9,-1.9201729184363728e-4,-4.272004332166115e-5,-7.967224995384466e-9,-1.9165604145344355e-4,-4.253352928312996e-5,-7.956980058119363e-9,-1.9134921912310286e-4,-4.229384282667856e-5,-7.939923003820991e-9,-1.9111121492372828e-4,-4.202818834980984e-5,-7.91860535841166e-9,-1.9094402083634387e-4,-4.176615800307559e-5,-7.896162848299419e-9,-1.9083831639714896e-4,-4.1534410208336746e-5,-7.87561120850624e-9,-1.9077625422079947e-4,-4.1352743879738196e-5,-7.859295143438076e-9,-1.9073505303328413e-4,-4.123196142628293e-5,-7.848605195695082e-9,-1.9069054410135802e-4,-4.1173414159399545e-5,-7.843964753064974e-9,-1.906201224278099e-4,-4.116971136664543e-5,-7.844982280018888e-9,-1.905050256123524e-4,-4.1205978856558556e-5,-7.850625899117948e-9,-1.9033218543530693e-4,-4.126132493487268e-5,-7.859318656901609e-9,-1.9009597946679268e-4,-4.131052250053904e-5,-7.868951080561997e-9,-1.8980014139863044e-4,-4.1326260782891054e-5,-7.876912836277283e-9,-1.8945967012305145e-4,-4.128269700216912e-5,-7.880323549005257e-9,-1.8910169760086778e-4,-4.116102678475968e-5,-7.876614821307504e-9,-0.00018876338867391296,-4.0956863108143176e-5,-7.864445949430287e-9,-1.884847853602136e-4,-4.0687258733253435e-5,-7.844654109638144e-9,-1.8829616966925856e-4,-4.039278804799636e-5,-7.820672655457958e-9,-1.88203845813791e-4,-4.012954778719805e-5,-7.797856014628003e-9,-1.8818277508791647e-4,-3.995054240701812e-5,-7.781684520999545e-9,-1.881832875362198e-4,-3.988448188439229e-5,-7.77566376533795e-9,-1.8815018874959586e-4,-3.992443525486756e-5,-7.780096416824334e-9,-1.880434791354815e-4,-4.003285000490112e-5,-7.792321866458137e-9,-1.8784973035415947e-4,-4.015822215563545e-5,-7.808013539986401e-9,-1.8758115050261835e-4,-4.025292234742e-5,-7.822655543413694e-9,-1.872668184883031e-4,-4.02846843903453e-5,-7.832609350063291e-9,-1.869421745375567e-4,-4.024036343886389e-5,-7.835668960723405e-9,-1.866405011096358e-4,-4.012421563344865e-5,-7.831233109466725e-9,-1.8638746606769327e-4,-3.9953517066443375e-5,-7.820209997762073e-9,-1.8619833336478678e-4,-3.9753447846682424E-05,-7.804705559277455e-9,-1.8607713456172942e-4,-3.955211791223761e-5,-7.787528077260694e-9,-1.8601733956143633e-4,-3.937609305312275e-5,-7.771594675631029e-9,-1.8600372362801028e-4,-3.924671808006975e-5,-7.759377516311174e-9,-1.860151033940145e-4,-3.9177490549839045e-5,-7.752521038826082e-9,-1.86027579535179e-4,-3.917265795237302e-5,-7.751697825195558e-9,-1.8601784500762417e-4,-3.922712275877602e-5,-7.756683939980297e-9,-1.859660991240961e-4,-3.932748873083235e-5,-7.76655338904938e-9,-1.858583415306685e-4,-3.945386020008228e-5,-7.779863803220138e-9,-1.856880765199331e-4,-3.9582104032858643e-5,-7.794764745634513e-9,-1.8545751111847034e-4,-3.968648336286518e-5,-7.80905273811186e-9,-1.8517832726768282e-4,-3.974272194646584e-5,-7.820277095975539e-9,-1.8487191715710737e-4,-3.973182286832981e-5,-7.826043324454552e-9,-1.84568326062585e-4,-3.964498003485806e-5,-7.824607063924266e-9,-1.8430252736954805e-4,-3.948909619720772e-5,-7.81567723225054e-9,-1.841068015813026e-4,-3.9290916557531185e-5,-7.801120265142914e-9,-1.8399941650295114e-4,-3.9096168023688346e-5,-7.785080204503404e-9,-1.8397315757144196e-4,-3.8959732030985414e-5,-7.773061430941858e-9,-1.8399121969710352e-4,-3.892667494260442e-5,-7.769999153806498e-9,-1.8399720413110593e-4,-3.9012062532908605e-5,-7.778165646339316e-9,-1.8393709799280938e-4,-3.919247414624714e-5,-7.796192327999907e-9,-1.837809253347292e-4,-3.94159913142451e-5,-7.81983562463752e-9,-1.835314504140859e-4,-3.9624174692404916e-5,-7.843866044999501e-9,-1.832175926465497e-4,-3.9772376929694886e-5,-7.863852973816922e-9,-0.00018288007799367867,-3.983939802399363e-5,-7.877101234873762e-9,-1.825581525567214e-4,-3.9826609012344015e-5,-7.88278698428171e-9,-1.8228153953364634e-4,-3.975151493070294e-5,-7.881673076367993e-9,-1.8206747389102235e-4,-3.96403257759107e-5,-7.87567869457065e-9,-1.8192093438847728e-4,-3.952183195728649e-5,-7.867403264403688e-9,-1.818363144226791e-4,-3.94230088792691e-5,-7.859627774104685e-9,-1.8179960057993597e-4,-3.9365938879669173e-5,-7.854836651382487e-9,-1.817908037429815e-4,-3.9365650403408574e-5,-7.85483970570868e-9,-1.817866154295425e-4,-3.9428705477013426e-5,-7.860566324909944e-9,-1.81763290141203e-4,-3.955254076382139e-5,-7.872043997922005e-9,-1.8169966125836646e-4,-3.9725745338659054e-5,-7.888521312020506e-9,-1.8157997375724025e-4,-3.992943179925509e-5,-7.908654800013727e-9,-1.8139615201193202e-4,-4.01395859443014e-5,-7.930677800847704e-9,-1.8114926843234067e-4,-4.0330149429537525e-5,-7.952524911278175e-9,-1.808500494869329e-4,-4.047662276442048e-5,-7.971962158343955e-9,-1.8051827933978514e-4,-4.055992560857808e-5,-7.986810256067089e-9,-1.8018101316444614e-4,-4.0570277674346596e-5,-7.995336625795394e-9,-1.7986930754112723e-4,-4.0510916503467394e-5,-7.996822725172099e-9,-1.796128754203871e-4,-4.0400967753350356e-5,-7.992167447243349e-9,-1.7943243126465743e-4,-4.027577035424067e-5,-7.984224841668468e-9,-1.793308527151646e-4,-4.0182267013651894e-5,-7.97751603843064e-9,-1.7928650189256697e-4,-4.016762654034507e-5,-7.977085620844553e-9,-1.7925412028238575e-4,-4.026237728195528e-5,-7.986681974367066e-9,-1.791774416147169e-4,-4.046502137035069e-5,-8.007050548514257e-9,-1.79010578141659e-4,-4.07384889308924e-5,-8.03541534862946e-9,-1.7873692411944845e-4,-4.102346717380981e-5,-8.066621496285543e-9,-1.783741420058078e-4,-4.1261830836882335e-5,-8.095249938080533e-9,-1.7796361074475225e-4,-4.1416463164230464e-5,-8.117421582789139e-9,-1.7755290410782594e-4,-4.1478368578888085e-5,-8.131520449449486e-9,-1.7718135033389617e-4,-4.146198733197798e-5,-8.13797055610707e-9,-1.768730990346715e-4,-4.139529321745453e-5,-8.138602365296292e-9,-1.766365818208645e-4,-4.131042648440153e-5,-8.135996394797593e-9,-1.7646729539195152e-4,-4.123728457209718e-5,-8.132931548149722e-9,-1.7635140912427015e-4,-4.119998363428822e-5,-8.131940782911007e-9,-1.7626901592075078e-4,-4.1215139264067615e-5,-8.13497319552361e-9,-1.7619688175239353e-4,-4.129104627639256e-5,-8.143187102834443e-9,-1.7611095329391106e-4,-4.142731358893801e-5,-8.156888519239014e-9,-1.7598889716912629e-4,-4.1614887437690714e-5,-8.17558928584182e-9,-1.7581281192462515e-4,-4.183670829192403e-5,-8.198133122013413e-9,-1.7557194116890116e-4,-4.206939570725801e-5,-8.222846596370708e-9,-1.7526489185315834e-4,-4.2286145337228534e-5,-8.247693685378518e-9,-1.749007892130791e-4,-4.246067239676419e-5,-8.27045287578726e-9,-1.7449889291473196e-4,-4.257177890837406e-5,-8.288966601271894e-9,-1.7408636134491067e-4,-4.260785569445014e-5,-8.301502622549816e-9,-1.7369417612683185e-4,-4.257044116629862e-5,-8.307207425135431e-9,-1.733515749373912e-4,-4.247603925671317e-5,-8.306560538240727e-9,-1.7307951561946385e-4,-4.235546258407321e-5,-8.301660768772593e-9,-1.7288404300892215e-4,-4.224980670333177e-5,-8.296116391034056e-9,-1.7275126742316764e-4,-4.220232082429011e-5,-8.29435675977847e-9,-1.7264662508130276e-4,-4.2246603872407674e-5,-8.300377709365537e-9,-1.7252121501086634e-4,-4.239390927424923e-5,-8.316260399484159e-9,-1.723259194563172e-4,-4.262512746453453e-5,-8.341125038747223e-9,-1.7202921853819408e-4,-4.289359303196469e-5,-8.371205255110296e-9,-1.7163005621497463e-4,-4.314027956941037e-5,-8.401196120311941e-9,-1.7115808212438073e-4,-4.3314891182245837e-5,-8.426208336859534e-9,-1.706611339045414e-4,-4.3391899781138715e-5,-8.4432830383759e-9,-1.701876762651756e-4,-4.3374419715413495e-5,-8.4518562411058e-9,-1.6977323193821857e-4,-4.328714577136297e-5,-8.4533209117178e-9,-1.6943492968409378e-4,-4.316484300779904e-5,-8.450215049832509e-9,-1.691728141266524e-4,-4.304229490465962e-5,-8.445454567334958e-9,-1.689743734967421e-4,-4.294814563749508e-5,-8.441762371783732e-9,-1.6881942342299218e-4,-4.2902261156559144e-5,-8.441296223429344e-9,-1.6868404487941965e-4,-4.291519214458628e-5,-8.445444774098598e-9,-1.6854347563705814e-4,-4.2988495594045744e-5,-8.454766529152133e-9,-1.6837439851704656e-4,-4.3115257163194266e-5,-8.469036389597806e-9,-1.681571293442517e-4,-4.3280710287122344e-5,-8.487346444855007e-9,-1.6787800682957013e-4,-4.3463272785180736e-5,-8.508217625345404e-9,-1.675319055511752e-4,-4.363653952219832e-5,-8.529718093993882e-9,-1.6712433065999726e-4,-4.3772654109465174e-5,-8.549625270960761e-9,-1.6667221550076703e-4,-4.3847053130506195e-5,-8.565688893545171e-9,-1.6620251090174813e-4,-4.384394863589244e-5,-8.576022891083493e-9,-1.6574805161057994e-4,-4.3761243185843136e-5,-8.57958137502147e-9,-1.653410166729793e-4,-4.361321227414499e-5,-8.57659196538238e-9,-1.6500526069332353e-4,-4.3429595920686075e-5,-8.568780938240553e-9,-1.6474941938175833e-4,-4.325061380526027e-5,-8.559242374508827e-9,-1.6456278474184848e-4,-4.311845658282386e-5,-8.551872091484495e-9,-1.6441558827007797e-4,-4.306679435913246e-5,-8.55041163875152e-9,-1.6426459590353389e-4,-4.31107428021797e-5,-8.55731514316368e-9,-1.6406370565747632e-4,-4.324040567689213e-5,-8.572814975918328e-9,-1.6377738091422734e-4,-4.3421136814201817e-5,-8.594619277300757e-9,-1.6339259528422065e-4,-4.360218549923664e-5,-8.618509053213847e-9,-1.6292403742707357e-4,-4.3731933663244515e-5,-8.639692356752142e-9,-1.6240945516230828e-4,-4.3773994492029846e-5,-8.654343911008955e-9,-1.618968607756375e-4,-4.371721460881521e-5,-8.660647603934844e-9,-1.614295836691662e-4,-4.357579691594396e-5,-8.658990171403235e-9,-1.6103554540079272e-4,-4.338116258064244e-5,-8.65143750147207e-9,-1.6072371734170566e-4,-4.317072694826411e-5,-8.640899300411265e-9,-1.60486597377181e-4,-4.2978486922922624e-5,-8.630346264051817e-9,-1.6030553083480994e-4,-4.28295955015562e-5,-8.622255741822829e-9,-1.6015613527411944e-4,-4.2738546072660895e-5,-8.618310231123223e-9,-1.6001252941236853e-4,-4.270953342717434e-5,-8.619310983523769e-9,-1.5985023392522713e-4,-4.27376696865566e-5,-8.62524258194941e-9,-1.5964820616548375e-4,-4.281026269130828e-5,-8.635407427994393e-9,-1.5939063606626693e-4,-4.290797545834162e-5,-8.648555381100611e-9,-1.5906893911632526e-4,-4.300622619989431e-5,-8.662980381924239e-9,-1.586839320425307e-4,-4.307745905419132e-5,-8.6766176574788e-9,-1.5824763893893554e-4,-4.309485149551601e-5,-8.687224944489166e-9,-1.577836553301402e-4,-4.303761508032331e-5,-8.692728743322592e-9,-1.5732473003351639e-4,-4.2897150815443866e-5,-8.691735505534104e-9,-1.5690673041701025e-4,-4.2682099455994495e-5,-8.684069583127032e-9,-1.5655967783061677e-4,-4.241963218334136e-5,-8.671100768675983e-9,-1.5629842252569848e-4,-4.215106331379977e-5,-8.65564776892293e-9,-1.5611654367897435e-4,-4.1922027222526855e-5,-8.641393519477788e-9,-1.5598634365727104e-4,-4.1769990723229766e-5,-8.631943434242865e-9,-1.558655337576891e-4,-4.171332468953909e-5,-8.62980875112357e-9,-1.55708599326998e-4,-4.1745676230751626e-5,-8.635639653747643e-9,-1.5547926756793228e-4,-4.183738871643539e-5,-8.64796410233513e-9,-1.5516040876164026e-4,-4.194344529267842e-5,-8.663544317198107e-9,-1.5475857077794318e-4,-4.2015642345345564e-5,-8.678275332417251e-9,-1.5430178219828054e-4,-4.2015487508945786e-5,-8.688346657903147e-9,-1.538312653883322e-4,-4.1923888974596855e-5,-8.691272266061803e-9,-1.5338985144061818e-4,-4.174464729428951e-5,-8.686443715723425e-9,-1.5301108912570144e-4,-4.150107912857046e-5,-8.675074640975934e-9,-1.5271247020407983e-4,-4.1227745509928506e-5,-8.659650972450587e-9,-1.5249412865362623e-4,-4.096082102643691e-5,-8.643154944543995e-9,-1.5234202142190386e-4,-4.0730361657362306e-5,-8.628341074666747e-9,-1.522332666590427e-4,-4.0556036818412694e-5,-8.617240877586801e-9,-1.5214146355814283e-4,-4.044607832465574e-5,-8.610948820189256e-9,-1.5204082770238207e-4,-4.0398276306418136e-5,-8.609649713449356e-9,-1.5190894966737008e-4,-4.040182404940597e-5,-8.612791693953891e-9,-1.5172855998777816e-4,-4.04392073340307e-5,-8.619289651721801e-9,-1.5148890221367985e-4,-4.048788673301634e-5,-8.627671304566296e-9,-1.511871960678653e-4,-4.052207249406931e-5,-8.636154913727928e-9,-1.5083025434630082e-4,-4.051521495503619e-5,-8.642725787473477e-9,-1.5043574158394175e-4,-4.044383852156764e-5,-8.645327734018624e-9,-1.500319353466808e-4,-4.029297377626192e-5,-8.642261093560134e-9,-1.496544166579292e-4,-4.006242686937451e-5,-8.632759521112276e-9,-1.4933857066749907e-4,-3.9771500609913104e-5,-8.61753525645397e-9,-1.4910878327908136e-4,-3.9458613965874134e-5,-8.598961074703302e-9,-1.4896817540041468e-4,-3.9173255620837376e-5,-8.580634729706417e-9,-1.4889434793359147e-4,-3.896143953895252e-5,-8.566369717397555e-9,-1.488446779231985e-4,-3.885027635490195e-5,-8.558992598500318e-9,-1.4876971971684565e-4,-3.883878985692342e-5,-8.559461170923111e-9,-1.4862882605840358e-4,-3.889897430693147e-5,-8.566637964807312e-9,-1.484015496846831e-4,-3.8985699273179814e-5,-8.577719545041904e-9,-1.4809146958670756e-4,-3.9050500471712874e-5,-8.589075917670951e-9,-1.4772283139077166e-4,-3.90541832810773e-5,-8.597200861671296e-9,-1.4733252302452735e-4,-3.8975093804996464e-5,-8.599531021666814e-9,-1.46960319709348e-4,-3.8811988524448995e-5,-8.594969943036304e-9,-1.4663989849332713e-4,-3.8581911562734315e-5,-8.58402541962936e-9,-1.4639243737691714e-4,-3.831439622032589e-5,-8.568556760394407e-9,-1.4622381432699978e-4,-3.8043832331238845e-5,-8.551221326080342e-9,-1.4612546696149864e-4,-3.780203085357788e-5,-8.534793996272362e-9,-1.4607800835754142e-4,-3.761267871861787e-5,-8.521560570514165e-9,-1.46056126596556e-4,-3.748848840769632e-5,-8.512936995642796e-9,-1.4603336462438332e-4,-3.743087337648366e-5,-8.509368863912567e-9,-1.4598588657925202e-4,-3.743138625583485e-5,-8.510465027645555e-9,-1.4589496353338089e-4,-3.747399290628529e-5,-8.515247763091069e-9,-1.4574843347403674e-4,-3.753744263121957e-5,-8.522385868843517e-9,-1.4554162934537264e-4,-3.759745129656199e-5,-8.530332304446479e-9,-1.4527818133022795e-4,-3.7628889350479104e-5,-8.537375532161534e-9,-1.4497079464529807e-4,-3.76084521534279e-5,-8.541699439939246e-9,-1.446416124057033e-4,-3.751836753687077e-5,-8.541581339326527e-9,-1.4432111704455668e-4,-3.7351398285757994e-5,-8.535812444372269e-9,-1.4404404714688575e-4,-3.711638518574359e-5,-8.524282605408122e-9,-1.438412079624837e-4,-3.684187866182322e-5,-8.508477097627533e-9,-1.4372811461076546e-4,-3.657397293866363e-5,-8.491503673689153e-9,-1.436949746655447e-4,-3.636532952138359e-5,-8.477371791217123e-9,-1.437049148338037e-4,-3.625715011489158e-5,-8.469647157873269e-9,-1.4370460041685984e-4,-3.626225419817731e-5,-8.470096677118393e-9,-1.436435657655829e-4,-3.6359182629031623e-5,-8.478059693349249e-9,-1.4349217679652826e-4,-3.650097828056397e-5,-8.49083875172551e-9,-1.4324944734727836e-4,-3.663301747612782e-5,-8.50476357027434e-9,-1.4293924274250757e-4,-3.6710244446883646e-5,-8.516318183217591e-9,-1.42599606440927e-4,-3.670734481993864e-5,-8.522934387042323e-9,-1.4227107692698355e-4,-3.66208983276144e-5,-8.523380609554418e-9,-1.4198762087161575e-4,-3.646586091026803e-5,-8.517827359725516e-9,-1.4177127123896665e-4,-3.626931158012475e-5,-8.507668428407443e-9,-1.4163010445375599e-4,-3.606360234221836e-5,-8.495144285064709e-9,-1.4155881398565556e-4,-3.588006957388633e-5,-8.482821921176052e-9,-1.4154122929864088e-4,-3.574396664003745e-5,-8.473039059830415e-9,-1.4155410250967632e-4,-3.5671120527783085e-5,-8.467454781925923e-9,-1.4157137341078065e-4,-3.5666522461359366e-5,-8.46681890030178e-9,-1.4156819516112225e-4,-3.572468450852716e-5,-8.4709875707388e-9,-1.4152418460917606e-4,-3.58313730753767e-5,-8.47912807725831e-9,-1.4142558873947818e-4,-3.59661705458511e-5,-8.489992557926502e-9,-1.412664184643966e-4,-3.6105261696455e-5,-8.502137383045136e-9,-1.4104888166358994e-4,-3.6224110895191465e-5,-8.514032189748423e-9,-1.4078340386514088e-4,-3.630008132933925e-5,-8.524097794432883e-9,-1.4048831120426743e-4,-3.6315244359799485e-5,-8.530777751256682e-9,-1.4018893987105985e-4,-3.6259700669489686e-5,-8.532761075544734e-9,-1.399154045802046e-4,-3.613554770648095e-5,-8.529406358796928e-9,-1.396978493880879e-4,-3.5960758369385744e-5,-8.5212719609298e-9,-1.395584274220083e-4,-3.5770777754258144e-5,-8.510484614118273e-9,-1.395010799090941e-4,-3.5614419533547606e-5,-8.500584815712752e-9,-1.3950347955379841e-4,-3.554134224026499e-5,-8.495600252331792e-9,-1.395181326667312e-4,-3.5583057711782186e-5,-8.49852886633527e-9,-1.3948692048425989e-4,-3.573661667274257e-5,-8.509976577861838e-9,-1.3936409233349114e-4,-3.596248146847602e-5,-8.52783178092342e-9,-1.3913464178440764e-4,-3.6200002121230084e-5,-8.548219699136488e-9,-1.3881747770678196e-4,-3.6391341144876804e-5,-8.567072309384218e-9,-1.384540237025143e-4,-3.650005380239695e-5,-8.581375137160207e-9,-1.380914704582618e-4,-3.6517145395985524e-5,-8.589669620504838e-9,-1.3776939627770373e-4,-3.645667302158028e-5,-8.591982763540148e-9,-1.375129529417687e-4,-3.634680402050186e-5,-8.589508759325445e-9,-1.373315794560991e-4,-3.622095854655851e-5,-8.584220023840957e-9,-1.3722091216789167e-4,-3.61110737959683e-5,-8.578448656336925e-9,-1.3716598999432205e-4,-3.6043161150447865e-5,-8.574449379800085e-9,-1.37144819913883e-4,-3.6034601772228566e-5,-8.573995788120039e-9,-1.3713202193536196e-4,-3.60927847497726e-5,-8.578098184526851e-9,-1.3710237308793484e-4,-3.621495858814332e-5,-8.586914569799196e-9,-1.3703402980724396e-4,-3.6389181641333254e-5,-8.5998516774355e-9,-1.36911205202354e-4,-3.65962542961265e-5,-8.615789199981454e-9,-1.3672602214730465e-4,-3.68124573584491e-5,-8.633327431858329e-9,-1.36479349089764e-4,-3.701271677512592e-5,-8.650970819822634e-9,-1.3618068653054776e-4,-3.717379627140313e-5,-8.667222550115315e-9,-1.358472662707308e-4,-3.7277344343605105e-5,-8.680647089426607e-9,-1.3550242612119607e-4,-3.731274903926245e-5,-8.68999424871703e-9,-1.3517320152061808e-4,-3.727978006702851e-5,-8.694459140313209e-9,-1.3488680793789882e-4,-3.719092897384664e-5,-8.694073713436727e-9,-1.3466544021457864e-4,-3.707279073129639e-5,-8.69010051987593e-9,-1.3451925275556113e-4,-3.696481485133304e-5,-8.685177236944263e-9,-1.344388658671642e-4,-3.69131046298267e-5,-8.682934876706395e-9,-1.3439108416693466e-4,-3.695778715724225e-5,-8.68695839392729e-9,-1.3432331140892352e-4,-3.7116200157038535e-5,-8.699334814541392e-9,-1.3417981211901297e-4,-3.737010340084863e-5,-8.71951455375979e-9,-1.339246580951755e-4,-3.7667420214442775e-5,-8.744316749020727e-9,-1.3355816900488716e-4,-3.7941435370631326e-5,-8.769244026211392e-9,-1.3311593340372153e-4,-3.813725721253883e-5,-8.79029609068621e-9,-1.3265197371800877e-4,-3.8229929052285945e-5,-8.80518898519348e-9,-1.3221793913426716e-4,-3.822643977336777e-5,-8.813555366407018e-9,-1.318492290963614e-4,-3.8155740932226004e-5,-8.816480101901048e-9,-1.3156091565529496e-4,-3.8055615871408505e-5,-8.815891247203971e-9,-1.3135036452187486e-4,-3.796239043644523e-5,-8.814051427765528e-9,-1.31202438800492e-4,-3.7905049072083586e-5,-8.813160873514698e-9,-1.3109463784149872e-4,-3.79028210263575e-5,-8.81503385420893e-9,-1.3100122611687848e-4,-3.796469387651649e-5,-8.820852830416448e-9,-1.3089648863076503e-4,-3.80897908046812e-5,-8.83104051118581e-9,-1.3075748536931842e-4,-3.826825886682798e-5,-8.84527997381368e-9,-1.3056648321026467e-4,-3.848267424904795e-5,-8.862659526172724e-9,-1.3031305885508222e-4,-3.871009371470224e-5,-8.881878607082005e-9,-1.2999564462678402e-4,-3.8924886973358905e-5,-8.90144922639146e-9,-1.296221126551315e-4,-3.9102224081252054e-5,-8.919852317394064e-9,-1.292091137554164e-4,-3.9221787764163894e-5,-8.935653170963314e-9,-1.287801342980387e-4,-3.9271231345139034e-5,-8.947626178113364e-9,-1.2836237102655372e-4,-3.924893370147562e-5,-8.954946573809908e-9,-1.2798264289840097e-4,-3.916561004732102e-5,-8.957459750970044e-9,-1.2766262594780724e-4,-3.9044431207776e-5,-8.955969094344736e-9,-1.2741366297480022e-4,-3.891923161696911e-5,-8.952404162384802e-9,-1.2723168997357461e-4,-3.883000967390067e-5,-8.949679509496966e-9,-1.27093748029005e-4,-3.881487829910734e-5,-8.951097831921052e-9,-1.2695870357679422e-4,-3.8898685950468335e-5,-8.959323326278861e-9,-1.267751555869125e-4,-3.908106724078372e-5,-8.975233990146882e-9,-1.2649729890266872e-4,-3.933002315131596e-5,-8.997238422616873e-9,-1.2610380646318407e-4,-3.958793924368254e-5,-9.021623338742478e-9,-1.2560933231630603e-4,-3.979117636916569e-5,-9.043949542052622e-9,-1.250601064281325e-4,-3.989428803618717e-5,-9.060747657363913e-9,-1.2451535807132656e-4,-3.988519479442612e-5,-9.070550347589108e-9,-1.2402584828578883e-4,-3.978414776435241e-5,-9.073886011159246e-9,-1.236205981940215e-4,-3.963065544738354e-5,-9.07260038223968e-9,-1.2330492479386814e-4,-3.946804731107443e-5,-9.06907791995821e-9,-1.2306592379153069e-4,-3.9332584341514184e-5,-9.065663183276685e-9,-1.228800828847495e-4,-3.9248605036294036e-5,-9.064298093394783e-9,-1.2271974809462355e-4,-3.9227959023930204e-5,-9.066308761174449e-9,-1.2255751932836511e-4,-3.9271422800291845e-5,-9.07230522767062e-9,-1.2236902385258616e-4,-3.937056825807537e-5,-9.082190481665708e-9,-1.2213485314795255e-4,-3.950953825587356e-5,-9.0952670217167e-9,-1.2184219766310128e-4,-3.966680598205627e-5,-9.110401741288104e-9,-1.2148636162885278e-4,-3.981726696521993e-5,-9.12619905571748e-9,-1.2107197250418744e-4,-3.9935062083796264e-5,-9.141156188037495e-9,-1.2061333772280514e-4,-3.9997258003077964e-5,-9.153805898123638e-9,-1.2013331124746263e-4,-3.998800386203117e-5,-9.162873756252375e-9,-1.1966030668005657e-4,-3.990236796499482e-5,-9.167476141008514e-9,-1.1922355711720542e-4,-3.9748848224879454e-5,-9.16735668291749e-9,-1.1884727409519039e-4,-3.9549573910041856e-5,-9.163106709226148e-9,-1.1854484500946807e-4,-3.9337626281964046e-5,-9.156273357353645e-9,-1.1831435745928925e-4,-3.9151554868869843e-5,-9.149247534449742e-9,-1.1813661119487769e-4,-3.9027669333984225e-5,-9.144851147026704e-9,-1.1797667960421902e-4,-3.899110483450793e-5,-9.145628060950681e-9,-1.1778991790734548e-4,-3.904737063700308e-5,-9.15299150810211e-9,-1.175325624741728e-4,-3.9177091689939015e-5,-9.166537396277783e-9,-1.1717523308225653e-4,-3.933731131848976e-5,-9.183898816605155e-9,-1.1671489921126038e-4,-3.947171279421601e-5,-9.20137620436505e-9,-1.1617906373001206e-4,-3.952820645458404e-5,-9.215188158288917e-9,-1.1561807446250038e-4,-3.947694802803824e-5,-9.222771080593783e-9,-1.1508795403832579e-4,-3.931977427169145e-5,-9.223487247363517e-9,-1.1463218392673738e-4,-3.9086539305895255e-5,-9.21849929028679e-9,-1.142709592978943e-4,-3.8821745934336895e-5,-9.210076040428456e-9,-1.1400074179654687e-4,-3.856946273893001e-5,-9.20078618611514e-9,-1.1380094799943816e-4,-3.836294492571193e-5,-9.192886631995141e-9,-1.1364261812623197e-4,-3.822069459714716e-5,-9.1879765359956e-9,-1.1349551541127026e-4,-3.814719957123449e-5,-9.186871306246775e-9,-1.1333258761490281e-4,-3.8135736535814055e-5,-9.189633338269424e-9,-1.1313230069867286e-4,-3.817141008984336e-5,-9.195706259883106e-9,-1.1287982382393343e-4,-3.823369291997683e-5,-9.204097657482591e-9,-1.1256786310513337e-4,-3.829851605574717e-5,-9.213553802888529e-9,-1.1219751803139118e-4,-3.8340376762559447e-5,-9.22269414066259e-9,-1.1177904223869293e-4,-3.833503671167999e-5,-9.230116686601745e-9,-1.1133191698447232e-4,-3.826315103578705e-5,-9.234523255112086e-9,-1.1088335748373442e-4,-3.811461096830071e-5,-9.234910233392347e-9,-1.1046449079987319e-4,-3.789262697562118e-5,-9.230826308386785e-9,-1.1010413601670693e-4,-3.7615910350771354e-5,-9.222627139411862e-9,-1.0982130517158393e-4,-3.731722308065027e-5,-9.21160402770721e-9,-1.0961868889767661e-4,-3.703748088216355e-5,-9.199872312326249e-9,-1.0947969429209346e-4,-3.681630820680492e-5,-9.189976537874282e-9,-1.0937067838856088e-4,-3.668157414423921e-5,-9.184272074658242e-9,-1.0924829447019257e-4,-3.664109554625678e-5,-9.18424056176897e-9,-1.0907020550257687e-4,-3.667913877536005e-5,-9.189954915184103e-9,-1.0880642515705916e-4,-3.6759033088402764e-5,-9.199907267392656e-9,-1.0844824947981108e-4,-3.683171835853091e-5,-9.211326762762983e-9,-1.0801195079731945e-4,-3.684853152381634e-5,-9.220949393187014e-9,-1.0753533107081977e-4,-3.6774884340293415e-5,-9.225997564122934e-9,-1.0706735543311275e-4,-3.6600269285523224e-5,-9.22499909034669e-9,-1.0665405844386353e-4,-3.634060345263345e-5,-9.218128116932532e-9,-1.0632599695639417e-4,-3.6031911809698865e-5,-9.206981038369621e-9,-1.0609189824736788e-4,-3.5718319405997615e-5,-9.19395506438557e-9,-1.0593992002165717e-4,-3.543962353913638e-5,-9.181522987160879e-9,-1.0584432970216088e-4,-3.5222894444418944e-5,-9.171654265312317e-9,-1.0577377509585269e-4,-3.5079615353876484e-5,-9.165501882736301e-9,-1.0569811427307857e-4,-3.500714701067259e-5,-9.163352800650679e-9,-1.0559264518508524e-4,-3.499226206662488e-5,-9.164771801813917e-9,-1.0544004786505433e-4,-3.5014920510423576e-5,-9.16883982493074e-9,-1.0523095671395252e-4,-3.5051391464275926e-5,-9.174389778026609e-9,-1.0496405295401565e-4,-3.507665669286638e-5,-9.180172150801203e-9,-1.0464618835727268e-4,-3.506655725701059e-5,-9.184939032839345e-9,-1.0429252092118758e-4,-3.500030193581135e-5,-9.187495988674884e-9,-1.039261276946598e-4,-3.48637823947789e-5,-9.186800523449334e-9,-1.0357615793353864e-4,-3.46536541858101e-5,-9.182170455832e-9,-1.0327350441689744e-4,-3.4381246691956354e-5,-9.173580720955574e-9,-1.0304364939716516e-4,-3.4074253186413085e-5,-9.161923230549191e-9,-1.0289802766204464e-4,-3.3773697803369534e-5,-9.149039646343281e-9,-1.0282725778280255e-4,-3.3524929232600696e-5,-9.137394421723031e-9,-1.0280029662432293e-4,-3.336441855594974e-5,-9.129418606410994e-9,-1.0277162008556858e-4,-3.3307298589755e-5,-9.126750143428798e-9,-1.0269452672034878e-4,-3.334132380659976e-5,-9.129679824022376e-9,-1.0253530901109662e-4,-3.3430128766657056e-5,-9.137028969170211e-9,-1.0228281327026914e-4,-3.352418168582912e-5,-9.146483951023313e-9,-1.0195058478501845e-4,-3.357486167811767e-5,-9.155243273725392e-9,-1.0157200536431759e-4,-3.354696552794696e-5,-9.160762004820197e-9,-1.0119077576295845e-4,-3.3426523116505044e-5,-9.161389983981338e-9,-1.0084972538708518e-4,-3.322258471680729e-5,-9.1567428994038e-9,-1.0058085340582454e-4,-3.296319855077416e-5,-9.1477233287177e-9,-1.0039895151362752e-4,-3.268715204906611e-5,-9.13620386476633e-9,-1.0030009479870362e-4,-3.243403248359135e-5,-9.124482475916777e-9,-1.0026481761500761e-4,-3.2235448634192776e-5,-9.114685797381227e-9,-1.002643617789796e-4,-3.210959204158094e-5,-9.108299298278605e-9,-1.0026767382911762e-4,-3.205986487873324e-5,-9.105941746310106e-9,-1.0024717983614368e-4,-3.207681406252085e-5,-9.107401083971613e-9,-1.0018239318013028e-4,-3.214184576455504e-5,-9.111860642617299e-9,-1.0006142614792553e-4,-3.223125875718116e-5,-9.118191582072067e-9,-9.988108258667136e-5,-3.2319691729833556e-5,-9.1251948611398e-9,-9.964632646321523e-5,-3.238278403756544e-5,-9.131729422340635e-9,-9.936964829441685e-5,-3.239938756272473e-5,-9.136742201877834e-9,-9.907040628933112e-5,-3.2353857807257145e-5,-9.139278262243717e-9,-9.877374852922494e-5,-3.22388541842853e-5,-9.138569270716463e-9,-9.850827687016545e-5,-3.2058685656720396e-5,-9.13425646517205e-9,-9.830143939364078e-5,-3.1832365719454527e-5,-9.126703455871307e-9,-9.817223068137955e-5,-3.159432274657247e-5,-9.117234559865558e-9,-9.812252419680496e-5,-3.138997708142053e-5,-9.108071823699427e-9,-9.813089016549055e-5,-3.126452109365012e-5,-9.10182146027846e-9,-9.815412222958905e-5,-3.124710157480261e-5,-9.100604093125194e-9,-9.813914491830552e-5,-3.1337456387429606e-5,-9.105211374499513e-9,-9.804153498796248e-5,-3.150322611607172e-5,-9.11475449547984e-9,-9.784154686536156e-5,-3.1690737195221436e-5,-9.127000792101932e-9,-9.754967528636868e-5,-3.1843765894223964e-5,-9.139172281973027e-9,-9.720055366819144e-5,-3.192085559051927e-5,-9.148776150107598e-9,-9.684015327249356e-5,-3.1904655488520306e-5,-9.154172659673398e-9,-9.651257696551535e-5,-3.180236177111936e-5,-9.154822358487452e-9,-9.62504127431069e-5,-3.163996841124646e-5,-9.151274976782774e-9,-9.60698168291565e-5,-3.145374077091899e-5,-9.144961054288212e-9,-9.596984265486474e-5,-3.128151423757891e-5,-9.137828523893096e-9,-9.593497386265119e-5,-3.115537334164327e-5,-9.131885483864583e-9,-9.593976606922285e-5,-3.109656681303233e-5,-9.128751308860314e-9,-9.595447136657913e-5,-3.111310201829616e-5,-9.129337933414458e-9,-9.595049936624177e-5,-3.119999178987712e-5,-9.133745810921736e-9,-9.590477548725535e-5,-3.134160856925637e-5,-9.141380171958168e-9,-9.580246226255177e-5,-3.151529116825042e-5,-9.151211708597388e-9,-9.563797539391283e-5,-3.16952830703858e-5,-9.162060481302314e-9,-9.541467373049275e-5,-3.185625961327806e-5,-9.172796825714589e-9,-9.514380915860319e-5,-3.197615493895167e-5,-9.182419310694514e-9,-9.48431552537596e-5,-3.2038443093745316e-5,-9.190051974883061e-9,-9.453543133902659e-5,-3.2034182987011704e-5,-9.194952520053085e-9,-9.424633486772374e-5,-3.1964113362905855e-5,-9.19662086089252e-9,-9.400158823504068e-5,-3.18408340759899e-5,-9.195038235111904e-9,-9.382220633420554e-5,-3.169033305608827e-5,-9.19095818861579e-9,-9.371778135278529e-5,-3.155104568024974e-5,-9.186065400464665e-9,-9.367914980804929e-5,-3.1468046822899884e-5,-9.182785199579648e-9,-9.367412170350315e-5,-3.1480918711509026e-5,-9.183626205872267e-9,-9.365156347345576e-5,-3.160755715402989e-5,-9.19020294586336e-9,-9.355668865963729e-5,-3.183175941432533e-5,-9.202419571888166e-9,-9.335267713728581e-5,-3.210430056471749e-5,-9.218371347956345e-9,-9.303667906521569e-5,-3.236020861117679e-5,-9.235103819495216e-9,-9.264032211325917e-5,-3.2543385860012626e-5,-9.249755228307922e-9,-9.221548591093086e-5,-3.262483810785695e-5,-9.26041652356236e-9,-9.181507378196565e-5,-3.260698117914955e-5,-9.266413523353581e-9,-9.147845491400025e-5,-3.251632942914815e-5,-9.268166415699002e-9,-9.122520847559706e-5,-3.239154168921172e-5,-9.266889513425695e-9,-9.105564635912965e-5,-3.227244723700269e-5,-9.2642646836748e-9,-9.095498913811478e-5,-3.219240887699171e-5,-9.262101784399266e-9,-9.08987318910297e-5,-3.217406213098664e-5,-9.261994204243429e-9,-9.085793054099272e-5,-3.222762121230062e-5,-9.265019829464496e-9,-9.080392835417925e-5,-3.2351052738033134e-5,-9.271567916967034e-9,-9.071228168806134e-5,-3.253168391369461e-5,-9.28134185774094e-9,-9.056569168800201e-5,-3.2748874236925676e-5,-9.293522462109239e-9,-9.035578936575062e-5,-3.297739074658915e-5,-9.307015941925984e-9,-9.008365802729651e-5,-3.319108369388331e-5,-9.32068773621464e-9,-8.975916266917992e-5,-3.336636099032471e-5,-9.33350717957054e-9,-8.939940883763627e-5,-3.348509546284864e-5,-9.344592008056796e-9,-8.902663953210632e-5,-3.353691102753202e-5,-9.353211946825554e-9,-8.866569313938621e-5,-3.352090126483869e-5,-9.35883336145802e-9,-8.834103551839693e-5,-3.3446806313605515e-5,-9.361261938630803e-9,-8.807317448099914e-5,-3.333560303798455e-5,-9.360872293875294e-9,-8.787408489854848e-5,-3.321895898344246e-5,-9.35881896249169e-9,-8.774178162211213e-5,-3.313618048205553e-5,-9.357051719661311e-9,-8.765551941425548e-5,-3.312704407820512e-5,-9.357971217288903e-9,-8.75747733839315e-5,-3.3219976944643985e-5,-9.363691049098633e-9,-8.74461410016907e-5,-3.341812218722618e-5,-9.375114762347986e-9,-8.7220065678816e-5,-3.3690479945789706e-5,-9.391311854138805e-9,-8.687212463896635e-5,-3.397702246395055e-5,-9.409699673510456e-9,-8.641654285989432e-5,-3.420979174434094e-5,-9.427069578077248e-9,-8.590181922728967e-5,-3.433967242416912e-5,-9.440848661633535e-9,-8.539061620032401e-5,-3.435314501297649e-5,-9.44984340985916e-9,-8.493672097339013e-5,-3.4271269582614564e-5,-9.454233252297501e-9,-8.45709727893319e-5,-3.413584988272384e-5,-9.45513539359531e-9,-8.429907159057472e-5,-3.399315338192215e-5,-9.454135610822126e-9,-8.410710066635141e-5,-3.388222278476255e-5,-9.452932691116559e-9,-8.39694300761685e-5,-3.382927951155617e-5,-9.453065287658341e-9,-8.385576288840835e-5,-3.384661045247159e-5,-9.455682021020762e-9,-8.373632656338405e-5,-3.39337961074905e-5,-9.461372860972362e-9,-8.358545827544782e-5,-3.407987563331084e-5,-9.470111676055729e-9,-8.338408132706894e-5,-3.426590539557689e-5,-9.481331913003121e-9,-8.312136430352067e-5,-3.446778153328366e-5,-9.494105686910258e-9,-8.279564587432089e-5,-3.465932720987703e-5,-9.507355644814983e-9,-8.241450667287213e-5,-3.481564090403858e-5,-9.520030613693909e-9,-8.19937854235765e-5,-3.491646452503521e-5,-9.531207314372736e-9,-8.155553782746594e-5,-3.494912799250977e-5,-9.540129776878508e-9,-8.112514759519504e-5,-3.491073158250606e-5,-9.546243568285508e-9,-8.072780222779476e-5,-3.480934834136822e-5,-9.549283156140592e-9,-8.038456389393579e-5,-3.466401475530754e-5,-9.549426224657887e-9,-8.010831362600719e-5,-3.450333338545574e-5,-9.54746360191402e-9,-7.989980971585162e-5,-3.4362440274271346e-5,-9.544875278633311e-9,-7.974437782718713e-5,-3.427773727254322e-5,-9.543676237437192e-9,-7.961061805952735e-5,-3.427884237468908e-5,-9.545950110564333e-9,-7.945341861300056e-5,-3.437837958684637e-5,-9.553132576768602e-9,-7.922353858236074e-5,-3.456254513569184e-5,-9.56529984876067e-9,-7.888371631202135e-5,-3.478810345141471e-5,-9.580865713138687e-9,-7.842594949679023e-5,-3.499174125974583e-5,-9.597013547859506e-9,-7.787972052612896e-5,-3.5111823238104886e-5,-9.61077091176288e-9,-7.730339317992335e-5,-3.5112654366270275e-5,-9.620133730535203e-9,-7.676190727235558e-5,-3.4997103078953485e-5,-9.624598331243174e-9,-7.630368913524509e-5,-3.480106932702219e-5,-9.62496228087358e-9,-7.594864786183333e-5,-3.457584341541249e-5,-9.622755990773589e-9,-7.568955618661085e-5,-3.4369955647098174e-5,-9.619710536672963e-9,-7.550120699012476e-5,-3.4218070735318946e-5,-9.617407235355379e-9,-7.53506844299028e-5,-3.4137703834965904e-5,-9.617061902570326e-9,-7.520512620818642e-5,-3.4130887726558557e-5,-9.619389347609227e-9,-7.503635353608889e-5,-3.4187713250424024e-5,-9.624544759331411e-9,-7.482323554456231e-5,-3.4289930549698735e-5,-9.63216195796353e-9,-7.455284746952063e-5,-3.441408243113663e-5,-9.641484197830746e-9,-7.422104933606681e-5,-3.4534311144901265e-5,-9.651545196785234e-9,-7.383266982034839e-5,-3.4625139821498456e-5,-9.661340808730684e-9,-7.340115252227199e-5,-3.466447763315732e-5,-9.669951148188559e-9,-7.29472860281118e-5,-3.4636811794840895e-5,-9.676610258024069e-9,-7.249670181575391e-5,-3.453612755069931e-5,-9.680751536488109e-9,-7.207617225320659e-5,-3.436789907206864e-5,-9.682071150846721e-9,-7.170907254595313e-5,-3.414954611457939e-5,-9.680633872207702e-9,-7.141062395474628e-5,-3.39088790257861e-5,-9.676997430229804e-9,-7.118375946617258e-5,-3.3680346460547944e-5,-9.672282908069223e-9,-7.101650731517465e-5,-3.349931488623629e-5,-9.668098481187566e-9,-7.088172523947388e-5,-3.33948756399492e-5,-9.666247026220778e-9,-7.074007291564022e-5,-3.3381977619494795e-5,-9.668224096412342e-9,-7.054706001923604e-5,-3.345448175111133e-5,-9.674640120668145e-9,-7.026421186175586e-5,-3.358188659485631e-5,-9.68481262676929e-9,-6.987236648803186e-5,-3.371310919852034e-5,-9.69679586348801e-9,-6.938216497629712e-5,-3.3789366876241454e-5,-9.707962916374584e-9,-6.883511643281062e-5,-3.376368965928737e-5,-9.715940864866819e-9,-6.829161852117123e-5,-3.3618736578177726e-5,-9.719434092883315e-9,-6.781005922500603e-5,-3.337302815858778e-5,-9.718519685799377e-9,-6.742756648217968e-5,-3.307197650765509e-5,-9.714369050431293e-9,-6.715167109481134e-5,-3.276964162612763e-5,-9.70868572509175e-9,-6.696431540140377e-5,-3.251149483555875e-5,-9.703181489926008e-9,-6.683272014943683e-5,-3.23249804831107e-5,-9.699229967536756e-9,-6.672046595425307e-5,-3.221830593712131e-5,-9.69768646622021e-9,-6.659514882482948e-5,-3.218413792480631e-5,-9.69883261424372e-9,-6.643222102070501e-5,-3.2204715407059465e-5,-9.702422223220024e-9,-6.621623206383647e-5,-3.225639014403438e-5,-9.707811412099236e-9,-6.594084229704343e-5,-3.231307689206832e-5,-9.714134303646899e-9,-6.560847130759857e-5,-3.234892257240772e-5,-9.720473000120565e-9,-6.522984548096849e-5,-3.2340745725612146e-5,-9.725978398839142e-9,-6.482324202400488e-5,-3.227068092840828e-5,-9.72993539962299e-9,-6.441292964570893e-5,-3.212909927557402e-5,-9.731798587080863e-9,-6.402628163536215e-5,-3.1917364877182857e-5,-9.731239839313383e-9,-6.368937200887575e-5,-3.164953586182567e-5,-9.728232443086724e-9,-6.342148728367543e-5,-3.135192586641782e-5,-9.723155862069091e-9,-6.3229704409613e-5,-3.105968506127635e-5,-9.716864968224381e-9,-6.310518395759158e-5,-3.081035792541784e-5,-9.710646408580894e-9,-6.302274843342547e-5,-3.0635492967811876e-5,-9.706009068758345e-9,-6.294459210654977e-5,-3.055226083848084e-5,-9.704313675315504e-9,-6.282790628516361e-5,-3.0557342633427204e-5,-9.706329094269245e-9,-6.263513206345579e-5,-3.062513212686725e-5,-9.711875217337033e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json new file mode 100644 index 000000000..76c3a68e8 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":9000,"numberOfSamples":1000,"samples":[-6.23446137633139e-5,-3.071164556992463e-5,-9.719731332151204e-9,-6.19586809157847e-5,-3.076438157665265e-5,-9.727914890125598e-9,-6.150587794551883e-5,-3.073654937098242e-5,-9.734280833128142e-9,-6.1034943329782044e-5,-3.060168191808949e-5,-9.737216476929997e-9,-6.0601038606681665e-5,-3.036287029042388e-5,-9.736134809126074e-9,-6.024888746053323e-5,-3.0051869736974383e-5,-9.731565682588457e-9,-5.999994090928063e-5,-2.971789522758825e-5,-9.724862066857019e-9,-5.9848834314815545e-5,-2.9411354882677176e-5,-9.71770907732456e-9,-5.976923198886019e-5,-2.916989718887004e-5,-9.711648469978378e-9,-5.972462316432335e-5,-2.9011586735457638e-5,-9.707751149758674e-9,-5.967870819510338e-5,-2.8935387308633597e-5,-9.70647628370283e-9,-5.9602228253192676e-5,-2.89259970676844e-5,-9.707695687073557e-9,-5.947591112549622e-5,-2.8959747148304846e-5,-9.710838540242717e-9,-5.929077173354268e-5,-2.9009608654381066e-5,-9.715094525623705e-9,-5.904719567985657e-5,-2.9048773862964067e-5,-9.71960852884578e-9,-5.8753773367436014e-5,-2.9053136374370507e-5,-9.72361187781754e-9,-5.842624685184096e-5,-2.9003338061866847e-5,-9.726475623750488e-9,-5.8086360356536405e-5,-2.8886966009567993e-5,-9.727714468149827e-9,-5.776002754298137e-5,-2.870105742876016e-5,-9.726995392498005e-9,-5.74741651198525e-5,-2.845449366073143e-5,-9.72419549652686e-9,-5.725183467800746e-5,-2.8169256139263426e-5,-9.71951151762819e-9,-5.7106100541113594e-5,-2.7879041181757347e-5,-9.713564114276547e-9,-5.7034227249689176e-5,-2.7623923778951554e-5,-9.707405962417725e-9,-5.7014849044397024e-5,-2.744114170465607e-5,-9.702361282140308e-9,-5.701050918052841e-5,-2.735425399096375e-5,-9.699698830847758e-9,-5.697609718243167e-5,-2.7364576162975244e-5,-9.700232368303819e-9,-5.6871038817050416e-5,-2.7448633497066595e-5,-9.704002376450864e-9,-5.667116781282969e-5,-2.7563221973356075e-5,-9.710182005555758e-9,-5.637617678776307e-5,-2.765667320675218e-5,-9.717264987992663e-9,-5.601027591624169e-5,-2.7682736375781414e-5,-9.723480590272698e-9,-5.561600483675091e-5,-2.7612936285683867e-5,-9.727297528384073e-9,-5.524303937361784e-5,-2.7443956618506687e-5,-9.727850312943274e-9,-5.493513840003189e-5,-2.7197955922928915e-5,-9.725154651913568e-9,-5.471906725691787e-5,-2.6915691607899557e-5,-9.72005407261872e-9,-5.4598911019501836e-5,-2.6644703453075705e-5,-9.713934027115233e-9,-5.455730383150816e-5,-2.64266189741069e-5,-9.708311206523093e-9,-5.4562420129529145e-5,-2.6287768574123053e-5,-9.704433569738843e-9,-5.457752704343605e-5,-2.623553492658023e-5,-9.703008653848694e-9,-5.456957532646678e-5,-2.6260220049275858e-5,-9.704121931504624e-9,-5.451464446828428e-5,-2.6340246599419492e-5,-9.707335422027123e-9,-5.439995050230707e-5,-2.6448131932234545e-5,-9.711898924726039e-9,-5.422339633670513e-5,-2.6555532499365036e-5,-9.716981565914689e-9,-5.399194066121386e-5,-2.663678226094542e-5,-9.721842938139277e-9,-5.37197431734721e-5,-2.667116151947731e-5,-9.725902670942154e-9,-5.342650643560834e-5,-2.6644534881516494e-5,-9.728727486336505e-9,-5.313587618209729e-5,-2.655097739679037e-5,-9.729995225631237e-9,-5.287334596399925e-5,-2.639462790136861e-5,-9.72950469114869e-9,-5.266297173036476e-5,-2.619143036945524e-5,-9.727266597271218e-9,-5.252243553464907e-5,-2.596971389861331e-5,-9.723645863256587e-9,-5.245681707745194e-5,-2.5767877042401753e-5,-9.719459836489783e-9,-5.245295661436816e-5,-2.562748717562385e-5,-9.715914975816248e-9,-5.247784135201871e-5,-2.558182145120203e-5,-9.714321344765071e-9,-5.248433005910525e-5,-2.5643167778965002e-5,-9.71565414605581e-9,-5.242443255043768e-5,-2.5794981125069657e-5,-9.720157774265109e-9,-5.2265507859568556e-5,-2.599424952537427e-5,-9.727205074415084e-9,-5.200192042456586e-5,-2.6184413784918434e-5,-9.735490249337039e-9,-5.165673914621095e-5,-2.6313264574752945e-5,-9.743443035999223e-9,-5.127351919687404e-5,-2.6348054742647138e-5,-9.749667801257827e-9,-5.0902725125982576e-5,-2.6282713166082426e-5,-9.75326720347049e-9,-5.0588284184408174e-5,-2.6136491038281e-5,-9.754009356253531e-9,-5.0357993370069754e-5,-2.5946393683606597e-5,-9.752342082004198e-9,-5.0219232993974796e-5,-2.5756667981670227e-5,-9.749262933352734e-9,-5.015982106504244e-5,-2.5608303159542794e-5,-9.746061951023208e-9,-5.0152906269271166e-5,-2.5530759317958693e-5,-9.743991748123502e-9,-5.016424167598713e-5,-2.5537314473559887e-5,-9.743957229389409e-9,-5.015987799753719e-5,-2.5624510658344092e-5,-9.746324283706057e-9,-5.011244865581866e-5,-2.5775123374663638e-5,-9.750904754883811e-9,-5.000492623338741e-5,-2.596321755352963e-5,-9.757101352467545e-9,-4.9831698223674514e-5,-2.6159651038122543e-5,-9.764134932390347e-9,-4.959756293540752e-5,-2.6336794409959954e-5,-9.77125471218565e-9,-4.9315586018946434e-5,-2.6471880876366733e-5,-9.777857341227311e-9,-4.900467765247903e-5,-2.6549048296052148e-5,-9.78350042703132e-9,-4.868733505302663e-5,-2.6560573645593127e-5,-9.787854781108205e-9,-4.8387507995782974e-5,-2.6507830841147043e-5,-9.790671063781774e-9,-4.812820015775109e-5,-2.640221991296037e-5,-9.791823659827242e-9,-4.792822925558667e-5,-2.626586053182433e-5,-9.791440657019166e-9,-4.7797688235235664e-5,-2.6131146731513124e-5,-9.790058210807481e-9,-4.7732434736905576e-5,-2.603750245204811e-5,-9.788680030956192e-9,-4.770949127982192e-5,-2.602362103765612e-5,-9.788622629016349e-9,-4.768699088683465e-5,-2.6115132800391774e-5,-9.791115783371455e-9,-4.7612514838547504e-5,-2.6311416798164514e-5,-9.796791594098938e-9,-4.744004786748611e-5,-2.6579162837951064e-5,-9.805340798551625e-9,-4.714894275327642e-5,-2.68596183979786e-5,-9.81558384504337e-9,-4.675409408145582e-5,-2.7088789244523173e-5,-9.82593563524379e-9,-4.63007016373858e-5,-2.7220538865820394e-5,-9.834966162719081e-9,-4.584698755933853e-5,-2.7240537539346205e-5,-9.841756608580806e-9,-4.544489497457328e-5,-2.716612358051693e-5,-9.845989371386469e-9,-4.512720869220526e-5,-2.7035870592725035e-5,-9.847894204339548e-9,-4.490350340869352e-5,-2.6895966227287968e-5,-9.848150476851382e-9,-4.4762813526265216e-5,-2.6788619054627426e-5,-9.847749002642056e-9,-4.467974944751262e-5,-2.6744535726717833e-5,-9.847788854326644e-9,-4.4621551529998665e-5,-2.67793858092927e-5,-9.849227199555758e-9,-4.4554711427458415e-5,-2.6893402551401513e-5,-9.852654250504786e-9,-4.445048423814215e-5,-2.7073346152810357e-5,-9.858177344922723e-9,-4.428881976659844e-5,-2.7296183901073322e-5,-9.865455416384905e-9,-4.406041691263042e-5,-2.753370714423536e-5,-9.873857188997167e-9,-4.376691930956634e-5,-2.7757247847319554e-5,-9.882664459772306e-9,-4.3419538053046194e-5,-2.7941805347373132e-5,-9.891234414250543e-9,-4.303660454191013e-5,-2.8069095603610774e-5,-9.899069051818642e-9,-4.264069174434751e-5,-2.8129368229640377e-5,-9.90579879900749e-9,-4.2255769073996823e-5,-2.8122238695490774e-5,-9.911139409555858e-9,-4.1904486407320275e-5,-2.8056896725693683e-5,-9.914892497705433e-9,-4.160543814119917e-5,-2.7951878164291356e-5,-9.9170275201943e-9,-4.137010911506443e-5,-2.783431847991674e-5,-9.917825281106567e-9,-4.119921521788755e-5,-2.7738086497587085e-5,-9.917998408072091e-9,-4.107878264055179e-5,-2.769954625238172e-5,-9.91867215364473e-9,-4.097763615938715e-5,-2.7749689768273665e-5,-9.921139370467895e-9,-4.0849404904229084e-5,-2.7902797854934692e-5,-9.926407792259145e-9,-4.0642441010064514e-5,-2.8145057541786642e-5,-9.934713814169385e-9,-4.031787237599612e-5,-2.8430538779043658e-5,-9.945298702787681e-9,-3.9868810330146976e-5,-2.8691908882654146e-5,-9.9566665170196e-9,-3.932833565054289e-5,-2.8864961803409028e-5,-9.967212572062042e-9,-3.875854394725441e-5,-2.891437192128338e-5,-9.975808367109482e-9,-3.822616913640833e-5,-2.8845330760606945e-5,-9.98201180056612e-9,-3.777943806979286e-5,-2.869613572190929e-5,-9.98594693625295e-9,-3.743725664498184e-5,-2.8519754654329504e-5,-9.98810862349428e-9,-3.719134397363045e-5,-2.8366020937962917e-5,-9.989234069973608e-9,-3.701525587842487e-5,-2.8270836040562245e-5,-9.99020103086058e-9,-3.6874340673262915e-5,-2.8252557552493445E-05,-9.991881928374356e-9,-3.6733633947777075e-5,-2.831302992680173e-5,-9.994958846882884e-9,-3.656313374093195e-5,-2.844073037686516e-5,-9.999766501751608e-9,-3.634100881655143e-5,-2.8614561011922926e-5,-1.000623541918002e-8,-3.605533964519792e-5,-2.8807801587885512e-5,-1.0013957531492734e-8,-3.570465334841229e-5,-2.8992079074828512e-5,-1.0022338457116705e-8,-3.529734816247884e-5,-2.914116709250595e-5,-1.0030762046344616e-8,-3.485006993645185e-5,-2.92343805861204e-5,-1.0038702615702036e-8,-3.4385142229079815e-5,-2.9259238226273796e-5,-1.0045757091094494e-8,-3.3927359255493513e-5,-2.9213049460563632e-5,-1.0051621058011619e-8,-3.350058407226353e-5,-2.9103332940466208e-5,-1.0056066702504657e-8,-3.3124457063630464e-5,-2.8947189972084985e-5,-1.0058976990550987e-8,-3.2811366323358286e-5,-2.8769735723801098e-5,-1.0060445345746964e-8,-3.256375787328263e-5,-2.8601623226662544e-5,-1.0060897143616392e-8,-3.2371816097269846e-5,-2.8475488693954947e-5,-1.0061145174295647e-8,-3.221189052935458e-5,-2.842075314931494e-5,-1.0062287880142022e-8,-3.204694100578321e-5,-2.8456309260332803e-5,-1.0065415316236122e-8,-3.183109485034811e-5,-2.8581804503757855e-5,-1.007118993199182e-8,-3.152026648812525e-5,-2.877048997646703e-5,-1.0079484318373714e-8,-3.108835216793204e-5,-2.8969238348406404e-5,-1.0089312218910324e-8,-3.0542974461299724e-5,-2.911131486583659e-5,-1.0099182540644034e-8,-2.992994780628945e-5,-2.9140766616140142e-5,-1.0107715115987456e-8,-2.9319253695152042e-5,-2.9036541761832005e-5,-1.0114124886146775e-8,-2.877809393386789e-5,-2.8820960229194144e-5,-1.0118307228329601e-8,-2.8346852894650365e-5,-2.8547443251060635e-5,-1.0120625267983092e-8,-2.803055359693186e-5,-2.8277133796314353e-5,-1.0121677071264258e-8,-2.7805852942645365e-5,-2.8058810315545394e-5,-1.0122171969069935e-8,-2.7634885870697304e-5,-2.7919586021142028e-5,-1.0122851241518537e-8,-2.7477784344898564e-5,-2.7865136011979794e-5,-1.0124374041290903e-8,-2.73005681768325e-5,-2.788470342701019e-5,-1.0127178785398857e-8,-2.707876938176712e-5,-2.7957027015369363e-5,-1.0131386580299943e-8,-2.6798428484780897e-5,-2.8055381987984983e-5,-1.0136799525049531e-8,-2.6455880523470634e-5,-2.8151496961065997e-5,-1.0142993650083491e-8,-2.6056989964450905e-5,-2.8218751221123247e-5,-1.0149458252670142e-8,-2.5615936366383297e-5,-2.82350089513246e-5,-1.0155717100330529e-8,-2.5153423477268736e-5,-2.8185218808561722e-5,-1.0161389371918144e-8,-2.469410784372093e-5,-2.80636100261117e-5,-1.0166188348621973e-8,-2.426321414819864e-5,-2.787501653366006e-5,-1.0169893731105325e-8,-2.3882668480529245e-5,-2.763487038497263e-5,-1.01723489245492e-8,-2.3567286234310905e-5,-2.7367666919278267e-5,-1.017351616196784e-8,-2.332156842397692e-5,-2.7103905438103306e-5,-1.017357593949472e-8,-2.3137641969046203e-5,-2.6875705732266855e-5,-1.0173013410180529e-8,-2.299476051584912e-5,-2.6711500845227497E-05,-1.017261329344951e-8,-2.2860705750699917e-5,-2.663018704620786e-5,-1.0173308322342749e-8,-2.2695665047880168e-5,-2.663518611623227e-5,-1.017589092482202e-8,-2.2459337873909423e-5,-2.6709603552242226e-5,-1.0180685150351775e-8,-2.212140867809451e-5,-2.6814846177850375e-5,-1.0187337375833014e-8,-2.1673671732367735e-5,-2.6895869468464378e-5,-1.0194873028803975e-8,-2.1139047774474032e-5,-2.68952440266726e-5,-1.0202044877588625e-8,-2.0570501852735378e-5,-2.6773653165214853e-5,-1.0207808391111026e-8,-2.0035779945461135e-5,-2.6527596262472074e-5,-1.0211650200164242e-8,-1.95929968856085e-5,-2.6192859779762135e-5,-1.0213616507492086e-8,-1.9270119523824262e-5,-2.5830075681245798e-5,-1.021413380368983e-8,-1.905933904298975e-5,-2.5500927912146165e-5,-1.021381348729072e-8,-1.892657043021345e-5,-2.5248592103061754e-5,-1.0213321886218076e-8,-1.8827443033921196e-5,-2.5090146839981592e-5,-1.0213277816654462e-8,-1.8720869387209668e-5,-2.5019585350191788e-5,-1.0214142627298827e-8,-1.8576464284264876e-5,-2.5015668692887527e-5,-1.0216127260583814e-8,-1.8376611843414558e-5,-2.504980617624261e-5,-1.0219166169699748e-8,-1.8115567499788158e-5,-2.5091878000311348e-5,-1.022297593256864e-8,-1.77975879404375e-5,-2.511396168920078e-5,-1.0227169183059294e-8,-1.743505293856026e-5,-2.5092754555130803e-5,-1.0231368833090536e-8,-1.7046707371919865e-5,-2.5011456803880348e-5,-1.0235274298180084e-8,-1.6655740859370975e-5,-2.4861532084328557e-5,-1.023866489114029e-8,-1.6287282974612118e-5,-2.464432330060455e-5,-1.0241365206381334e-8,-1.596501252310151e-5,-2.4372025169081737e-5,-1.024321801882643e-8,-1.570702113141324e-5,-2.406725812436014e-5,-1.0244103967347291e-8,-1.552160951313559e-5,-2.376063009939192e-5,-1.0244017040254267e-8,-1.5404061827608693e-5,-2.3486101581026236e-5,-1.0243161489551215e-8,-1.5335535519959935e-5,-2.327460877469775e-5,-1.0242006517918706e-8,-1.5284891552236783e-5,-2.314712391361825e-5,-1.0241237021644048e-8,-1.5213603604440276e-5,-2.3108728191468194e-5,-1.0241580512137116e-8,-1.5083201808082548e-5,-2.3145172717351075e-5,-1.0243555303704379e-8,-1.4864218209902013e-5,-2.32231622645874e-5,-1.0247243960115732e-8,-1.4545036900022462e-5,-2.3295366098052616e-5,-1.0252208937023976e-8,-1.4138251105215157e-5,-2.3310524416851092e-5,-1.0257614027791928e-8,-1.368146422366092e-5,-2.322748601135849e-5,-1.0262512342819018e-8,-1.322989051622768e-5,-2.3029486169829173e-5,-1.0266164007946504e-8,-1.2840855736179594e-5,-2.2732545405069593e-5,-1.0268236392507776e-8,-1.2555169579427251e-5,-2.238231187733215e-5,-1.0268825150242116e-8,-1.2383914527037539e-5,-2.2038912589209548e-5,-1.0268347802691693e-8,-1.2307249887307113e-5,-2.1756613087809175e-5,-1.0267393640885903e-8,-1.2284812012886326e-5,-2.156813016555327e-5,-1.0266572608916944e-8,-1.2270971936084373e-5,-2.1479552451146128e-5,-1.0266376938115249e-8,-1.2227457536302338e-5,-2.1474911265539056e-5,-1.0267077590847187e-8,-1.2129749205895953e-5,-2.1525263563921737e-5,-1.0268689111523196e-8,-1.1967892292312714e-5,-2.1597450054922837e-5,-1.0271017429226725e-8,-1.174422548889918e-5,-2.166023896731968e-5,-1.0273764819876203e-8,-1.1470257655664928e-5,-2.1687790859828148e-5,-1.0276640831595281e-8,-1.1163872918540682e-5,-2.16613873970703e-5,-1.0279429528370393e-8,-1.0847087574647729e-5,-2.1570437594962387e-5,-1.0281991235380007e-8,-1.0544002989509588e-5,-2.141339145539365e-5,-1.0284216045362617e-8,-1.0278390240021108e-5,-2.1198652865103365e-5,-1.0285974464584003e-8,-1.0070447996162899e-5,-2.0945037086426453e-5,-1.028711043152021e-8,-9.932690801530476e-6,-2.068088652200719e-5,-1.028749799157689e-8,-9.86563644678306e-6,-2.0440844298465255e-5,-1.0287141168707594e-8,-9.854764583517574e-6,-2.0259766952748523e-5,-1.028626273479879e-8,-9.870619619233569e-6,-2.01644508838674e-5,-1.0285319481300823e-8,-9.8733786193769e-6,-2.0165339281957866e-5,-1.0284908068411034e-8,-9.821625784056985e-6,-2.0251252759600633e-5,-1.0285579389915266e-8,-9.683168074476673e-6,-2.0389683901633625e-5,-1.0287635145367275e-8,-9.444561568473699e-6,-2.053338593781372e-5,-1.0290997813059452e-8,-9.116224347150207e-6,-2.063177957102368e-5,-1.0295216467786993e-8,-8.731339354531077e-6,-2.0644132770129046e-5,-1.0299605534523448e-8,-8.338457137712565e-6,-2.055092931652111e-5,-1.030345694288755e-8,-7.98933323349338e-6,-2.0360097137701205e-5,-1.0306242488373733e-8,-7.72506620945875e-6,-2.0105711184980106e-5,-1.0307743277604975e-8,-7.564775484823967e-6,-1.983876173135379e-5,-1.0308080804889762e-8,-7.500921681843046e-6,-1.9612526930376168e-5,-1.0307656350511951e-8,-7.503139782780013e-6,-1.946768074753192e-5,-1.0307019062928134e-8,-7.528820005869814e-6,-1.9422601531502887e-5,-1.0306699910081859e-8,-7.535794278292598e-6,-1.947177763761887e-5,-1.0307063665786794e-8,-7.492269894596984e-6,-1.959128917115925e-5,-1.0308233957531626e-8,-7.381486721375345e-6,-1.974765598713154e-5,-1.0310113143840973e-8,-7.201498312177095e-6,-1.990624677978869e-5,-1.031247670749912e-8,-6.962107167616799e-6,-2.0037161470478344e-5,-1.031508699283958e-8,-6.680993863389137e-6,-2.011834907841151e-5,-1.0317770097194946e-8,-6.380273436048308e-6,-2.0136768138740442e-5,-1.032042648831648e-8,-6.0838277247680745e-6,-2.0088636779103125e-5,-1.0322983928965702e-8,-5.815108860030673e-6,-1.9979521669310532e-5,-1.0325335032912242e-8,-5.594817165694961e-6,-1.9824453315227466e-5,-1.0327309582072665e-8,-5.437930590768389e-6,-1.9647685779100526e-5,-1.0328712972235372e-8,-5.349939383493514e-6,-1.948122710398913e-5,-1.0329423078834094e-8,-5.3228826376455855e-6,-1.936095973346019e-5,-1.0329498903693821e-8,-5.332864110333339e-6,-1.9319532507723174e-5,-1.0329235310495402e-8,-5.341522628441661e-6,-1.9376734531154476e-5,-1.0329117209882681e-8,-5.303353476159965e-6,-1.953039383977173e-5,-1.0329676054612896e-8,-5.17823507516099e-6,-1.9752454282041895e-5,-1.0331308373795825e-8,-4.945019491343102e-6,-1.9993909540435985e-5,-1.0334140752283602e-8,-4.610138350751177e-6,-2.019829297048899e-5,-1.0337995748268947e-8,-4.206914461260477e-6,-2.0318725218684748e-5,-1.0342450652703292e-8,-3.7858145479968068e-6,-2.033162353691172e-5,-1.0346947057188743e-8,-3.3999204340748854e-6,-2.0242322080569558e-5,-1.0350921705190584e-8,-3.090978422107698e-6,-2.0081863583639396e-5,-1.035394277316305e-8,-2.879939472361453e-6,-1.9897267305424163e-5,-1.0355827001534681e-8,-2.7637461044958318e-6,-1.9738805558921248e-5,-1.035669501194934e-8,-2.7182918430026305e-6,-1.9647845328083208e-5,-1.0356930437472887e-8,-2.706078182001334e-6,-1.964815539595743e-5,-1.0357046501868146e-8,-2.6861280184476436e-6,-1.9742416449230415e-5,-1.035751449251452e-8,-2.623356484294166e-6,-1.9914165200530054e-5,-1.0358627867133187e-8,-2.495051690997066e-6,-2.0133848461016657e-5,-1.0360457505484327e-8,-2.2933525948354025e-6,-2.0366613404506264e-5,-1.0362901596694904e-8,-2.024101506874866e-6,-2.057945330065126e-5,-1.036578541391425e-8,-1.703438490176005e-6,-2.0746243231691587e-5,-1.0368950180661795e-8,-1.353670649395772e-6,-2.085034603832491e-5,-1.0372285844231933e-8,-9.995092065925437e-7,-2.0885306200609506e-5,-1.0375703780683756e-8,-6.650892091385618e-7,-2.085449651147433e-5,-1.0379079635308058e-8,-3.715968940342627e-7,-2.0770428531116953e-5,-1.0382217349452199e-8,-1.3503446063713592e-7,-2.065397945826239e-5,-1.0384871607393536e-8,3.635039213145238e-8,-2.053328258334241e-5,-1.0386834569506982e-8,1.451554926153161e-7,-2.0441523455916053e-5,-1.038805057918194e-8,2.0789280435282035e-7,-2.041250688557186e-5,-1.0388697272151172e-8,2.56355366977416e-7,-2.047315309918241e-5,-1.0389176849844525e-8,3.3464806040304173e-7,-2.0633626967615144e-5,-1.039000389350313e-8,4.896682666698106e-7,-2.0878520990299207e-5,-1.0391635630909641e-8,7.558554175414243e-7,-2.1164864508976094e-5,-1.0394332164603972e-8,1.1400137473200676e-6,-2.143168146622313e-5,-1.039811235383832e-8,1.6149011662753742e-6,-2.161972150492724e-5,-1.040278944838272e-8,2.1267889603254867e-6,-2.169252145724684e-5,-1.0408016370122865e-8,2.613791080986166e-6,-2.1648099623553002e-5,-1.0413314414030032e-8,3.0255611796536674e-6,-2.1516600834236966e-5,-1.0418136661790554e-8,3.335896657502066e-6,-2.1347475609993867e-5,-1.0422008383847894e-8,3.5455028334495375e-6,-2.1193595706788387e-5,-1.0424695027343131e-8,3.6771057866818085e-6,-2.1098205117584193e-5,-1.0426297045670991e-8,3.766730983759074e-6,-2.1087212163472165e-5,-1.0427207186394536e-8,3.8543118584060025e-6,-2.116678673670468e-5,-1.0427955059979016e-8,3.97556153049034e-6,-2.1325112935168602e-5,-1.0429021553114722e-8,4.156112148298531e-6,-2.1536968915716497e-5,-1.043071137120023e-8,4.4083884967787636e-6,-2.1769858276116903e-5,-1.0433124870667529e-8,4.731238299426264e-6,-2.199039967092715e-5,-1.0436213182297564e-8,5.111871251593329e-6,-2.216982148981789e-5,-1.0439862617282118e-8,5.5293180610449155e-6,-2.228781360239789e-5,-1.0443951826756803e-8,5.958483105439134e-6,-2.2334471279948907e-5,-1.0448355486385057e-8,6.3739591557127685e-6,-2.2310548005592115e-5,-1.0452908274701619e-8,6.753167656295747e-6,-2.2226596306971968e-5,-1.0457371227043073e-8,7.0788641774440105e-6,-2.2101555638768476e-5,-1.0461442256004719e-8,7.341270437022586e-6,-2.19610250197676e-5,-1.0464828194753588e-8,7.540107011405848e-6,-2.18351220744106e-5,-1.0467357564690674e-8,7.686656069240698e-6,-2.1755428418429816e-5,-1.0469080980364281e-8,7.805377469636384e-6,-2.175014455624397e-5,-1.047029980195859e-8,7.933563002743403e-6,-2.1836872868918745e-5,-1.0471493607166954e-8,8.116719413656968e-6,-2.2013889674084526e-5,-1.0473170238320335e-8,8.397782946960609e-6,-2.2253242470900754e-5,-1.0475713376965965e-8,8.801167458084262e-6,-2.2501424654771112e-5,-1.0479313312473675e-8,9.31809147430383e-6,-2.2692544610459407e-5,-1.0483994091602052e-8,9.903277804372193e-6,-2.2771894060168208e-5,-1.0489651043077342e-8,1.0488693236733184e-5,-2.2718401944810526e-5,-1.0496011071352977e-8,1.1008517592282977e-5,-2.2552507598399298e-5,-1.0502567400688094e-8,1.14214527653244e-5,-2.2325484053898436e-5,-1.0508639692043991e-8,1.1719729539192924e-5,-2.2098427892878435e-5,-1.051360321451119e-8,1.192434757606461e-5,-2.192293983959106e-5,-1.0517149141774825e-8,1.2073148493867486e-5,-2.1830348879371115e-5,-1.0519399549919799e-8,1.2208507379845121e-5,-2.1829582167914723e-5,-1.0520823108331641e-8,1.2368142087573956e-5,-2.1910517424363665e-5,-1.0522026852220468e-8,1.2579647860001937e-5,-2.204963465047748e-5,-1.0523548294514526e-8,1.2858046046948135e-5,-2.2216044306126058e-5,-1.052573427092128e-8,1.3205504635807662e-5,-2.2377097194277054e-5,-1.0528728383253077e-8,1.3612660353343853e-5,-2.2503232700248113e-5,-1.0532528837699294e-8,1.4061128311368573e-5,-2.257179941745656e-5,-1.053705767622001e-8,1.4526835423976653e-5,-2.2569659248670465e-5,-1.0542194374134102e-8,1.4983796312142356e-5,-2.2494425657141477e-5,-1.0547763574333112e-8,1.5407831934948618e-5,-2.2354282969079747e-5,-1.0553504640982075e-8,1.5779770461427512e-5,-2.2166624359187616e-5,-1.0559067684047334e-8,1.608797482690634e-5,-2.195590135189993e-5,-1.0564065337397685e-8,1.6330245854374478e-5,-2.1750905552668204e-5,-1.0568177866410433e-8,1.6515130621988764e-5,-2.1581513602797013e-5,-1.0571271898841906e-8,1.6662595891771928e-5,-2.1474755707688038e-5,-1.0573475716392125e-8,1.680367989659793e-5,-2.144982680559584e-5,-1.0575164031555221e-8,1.6977991855744892e-5,-2.15119081550659e-5,-1.0576851619497795e-8,1.7227451460833117e-5,-2.164590037929872e-5,-1.0579043607594197e-8,1.758528349482335e-5,-2.1813063305720084e-5,-1.0582122319913347e-8,1.8061786594786307e-5,-2.1955189701945334e-5,-1.058632473338257e-8,1.8632948981106676e-5,-2.200995658499017e-5,-1.0591773118012249e-8,1.9241195983456193e-5,-2.193466323120593e-5,-1.0598445172373046e-8,1.981317133003406e-5,-2.1726452282952587e-5,-1.0606040069575834e-8,2.0287448616256157e-5,-2.1425281858291863e-5,-1.061388459734303e-8,2.0636332778655594e-5,-2.109672690297479e-5,-1.0621077002227759e-8,2.087033260256244e-5,-2.0805852875933422e-5,-1.0626847060734854e-8,2.1026869693195923e-5,-2.0597119217422514e-5,-1.0630882019558624e-8,2.115329294074093e-5,-2.0487273010198692e-5,-1.0633405474768798e-8,2.129300028400665e-5,-2.0468775249628576e-5,-1.0635008899056331e-8,2.1477766769687902e-5,-2.0517857674518222e-5,-1.0636384654839218e-8,2.172530639983127e-5,-2.0602735888928814e-5,-1.0638109815842078e-8,2.203989369531137e-5,-2.0690072956350867e-5,-1.0640550610319622e-8,2.2414327228279076e-5,-2.0749586688981025e-5,-1.0643876480653403e-8,2.2832428864176618e-5,-2.075731437602081e-5,-1.0648123545462657e-8,2.327186373709147e-5,-2.06979052512023e-5,-1.065324691100052e-8,2.370725263408254e-5,-2.056607264478361e-5,-1.065912813728469e-8,2.4113571523498897e-5,-2.0367140342581537e-5,-1.0665546197757955e-8,2.4469666599175597e-5,-2.011644324456059e-5,-1.067215081453571e-8,2.4761457155718238e-5,-1.9837455761494462e-5,-1.0678483547801098e-8,2.4984396740016067e-5,-1.9558825643028435e-5,-1.0684064625935296e-8,2.5144939672969598e-5,-1.9310587473940774e-5,-1.0688525639022025e-8,2.5260818881569855e-5,-1.9119802585786575e-5,-1.06917361236997e-8,2.535994562171527e-5,-1.9005914717674657e-5,-1.069386581323808e-8,2.5477696466233576e-5,-1.897609088271257e-5,-1.0695349149176802e-8,2.5652094341733997e-5,-1.902096367210599e-5,-1.0696767956414568e-8,2.5916298087693046e-5,-1.9111975005796678e-5,-1.0698709732170148e-8,2.628859728374691e-5,-1.9202643001807574e-5,-1.0701666562329869e-8,2.6762094197675117e-5,-1.9236556751696734e-5,-1.0705996336353121e-8,2.729911355674748e-5,-1.9163344524585584e-5,-1.0711891767678148e-8,2.783684602254258e-5,-1.895885387153898e-5,-1.0719277613221644e-8,2.8306670586864564e-5,-1.8639334239086277e-5,-1.072766183557865e-8,2.8659855505782475e-5,-1.8258763113995928e-5,-1.073612159190717e-8,2.8885279659063856e-5,-1.7888184927921706e-5,-1.0743575505291491e-8,2.9009231738796605e-5,-1.7588764782654586e-5,-1.0749225136080199e-8,2.908000233439939e-5,-1.7393518711195572e-5,-1.0752864147570606e-8,2.914855079008243e-5,-1.7304111401313012e-5,-1.0754868997586099e-8,2.9254770735155143e-5,-1.7298721919266967e-5,-1.0755947029287413e-8,2.9421960148790195e-5,-1.73433769434448e-5,-1.0756840443938963e-8,2.9657262395368594e-5,-1.7401543433202763e-5,-1.075813349050785e-8,2.9954830790562838e-5,-1.7440335048629465e-5,-1.0760197584755174e-8,3.0299471035757358e-5,-1.7433879737981824e-5,-1.0763229561035464e-8,3.066988743140981e-5,-1.7365039408173015e-5,-1.0767308977273792e-8,3.104156445903691e-5,-1.7226340848682806e-5,-1.0772421289059723e-8,3.138958150404849e-5,-1.7020431608455362e-5,-1.0778433463519163e-8,3.169160978062888e-5,-1.67599800034654e-5,-1.0785050830896731e-8,3.193113385062856e-5,-1.6466649719056538e-5,-1.0791801522036606e-8,3.2100549457274216e-5,-1.6168735086317945e-5,-1.0798090040294278e-8,3.2203473041458363e-5,-1.5897357896149383e-5,-1.080332573716205e-8,3.225558795119785e-5,-1.568153341658853e-5,-1.0807089151843031e-8,3.2283527758016355e-5,-1.5542734995758057e-5,-1.0809272801144117e-8,3.232156973954858e-5,-1.548986537631878e-5,-1.0810136690642487e-8,3.24062788787755e-5,-1.551564386066977e-5,-1.0810253821627843E-08,3.256954672694955e-5,-1.5595319915829232e-5,-1.0810370807169095e-8,3.2830743045217534e-5,-1.5688646392023816e-5,-1.0811243374832355e-8,3.318930936264058e-5,-1.5746136030541182e-5,-1.0813499406816032e-8,3.362016828548337e-5,-1.572010074949781e-5,-1.0817540474292183e-8,3.4075238666891787e-5,-1.5579179787124913e-5,-1.0823450353064908e-8,3.449382518613816e-5,-1.532196370613026e-5,-1.0830892582439516e-8,3.482107455406541e-5,-1.498254328611866e-5,-1.0839063244369992e-8,3.502767239053273e-5,-1.4622079522363778e-5,-1.0846829814097262e-8,3.5120439857015004e-5,-1.4307820231652071e-5,-1.085309302508078e-8,3.51375862864246e-5,-1.4089687106817873e-5,-1.085719959088525e-8,3.513199200269295e-5,-1.3986345854532377e-5,-1.085914650566585e-8,3.51525500412995e-5,-1.3985560988209588e-5,-1.085947705163363e-8,3.523209339490654e-5,-1.4054646803086456e-5,-1.0858988747294016e-8,3.5384088933798624e-5,-1.4153334684894148e-5,-1.0858452300955869e-8,3.560538153213612e-5,-1.4243709791482467e-5,-1.0858457682387729e-8,3.5881218350812025e-5,-1.4295764431560704e-5,-1.0859389106431877e-8,3.619005612992247e-5,-1.4289538747822578e-5,-1.0861464399875234e-8,3.650727263331189e-5,-1.4215445163763979e-5,-1.0864770150441248e-8,3.680795793798622e-5,-1.4073968871802461e-5,-1.0869255064842456e-8,3.7069338849790505e-5,-1.3875233842953704e-5,-1.0874690311021376e-8,3.7273324238066565e-5,-1.3638322204225281e-5,-1.0880636211450608e-8,3.740935211446729e-5,-1.338984019635138e-5,-1.0886460859978193e-8,3.747723555199965e-5,-1.3161108246832657e-5,-1.0891439508632244e-8,3.748918890039127e-5,-1.2983612439641286e-5,-1.0894923864558378e-8,3.746992648426565e-5,-1.2882969889767162e-5,-1.0896531846094513e-8,3.745388166964016e-5,-1.2872486930655807e-5,-1.089628939077259e-8,3.7479301400060466e-5,-1.2948111531254483e-5,-1.089466332568615e-8,3.758006931596514e-5,-1.3086710784613064e-5,-1.0892467653005773e-8,3.7777099336497654e-5,-1.3248905734680901e-5,-1.0890674230236611e-8,3.807156828641263e-5,-1.3386503835473725e-5,-1.0890190192257392e-8,3.844207700891592e-5,-1.3453370708504295e-5,-1.0891659080748418e-8,3.8847217212184006e-5,-1.341755372714709e-5,-1.0895313751720727e-8,3.9234030267991595e-5,-1.3271607631699584e-5,-1.090089279363746e-8,3.955132226947631e-5,-1.3037539781839813e-5,-1.0907643242370493e-8,3.976462669241938e-5,-1.2763223288738137e-5,-1.0914452499003047e-8,3.9867493531828635e-5,-1.250952451713426e-5,-1.0920130006578416e-8,3.988372523989806e-5,-1.2331758085782543e-5,-1.0923768775661982e-8,3.9858740281902724e-5,-1.226291312067013e-5,-1.0925025267279314e-8,3.98438771345933e-5,-1.2305852412647015e-5,-1.0924174807119913e-8,3.988096864166715e-5,-1.2436775734862486e-5,-1.092193559817097e-8,3.9993234799773925e-5,-1.2616327199137168e-5,-1.0919186656117713e-8,4.0184029323987886e-5,-1.2802124998079611e-5,-1.0916728214422174e-8,4.0441034122307655e-5,-1.295806215039957e-5,-1.0915158387722742e-8,4.07423430323965e-5,-1.3059008181614689e-5,-1.0914851840032176e-8,4.106194258997215e-5,-1.309190696252388e-5,-1.0915982377055156e-8,4.137369026554492e-5,-1.305496471159586e-5,-1.0918538217819229e-8,4.165397699143815e-5,-1.295627528662622e-5,-1.0922312589289403e-8,4.188372567499801e-5,-1.281253335343146e-5,-1.0926886273075621e-8,4.205038798547874e-5,-1.2647779157268254e-5,-1.0931637253225023e-8,4.2150263329725885e-5,-1.2491600175957169e-5,-1.0935808929506866e-8,4.219089514943613e-5,-1.2376014975777942e-5,-1.0938645719799141e-8,4.219264556971658e-5,-1.2330443038611213e-5,-1.0939574041035733e-8,4.2187994684927e-5,-1.2374868917154073e-5,-1.0938381011529256e-8,4.221708942536862e-5,-1.251262722220375e-5,-1.0935330563847715e-8,4.2319148750577894e-5,-1.272563608677644e-5,-1.0931164753811414e-8,4.252146931834362e-5,-1.2975210570017808e-5,-1.0926967333923104e-8,4.282981205890698e-5,-1.3209939979367455e-5,-1.0923913734952636e-8,4.3224317253663856e-5,-1.3379021269503886e-5,-1.092296888156952e-8,4.3663191015489984e-5,-1.3446687017306154e-5,-1.0924616375420668e-8,4.40932553261884e-5,-1.3402692615521834e-5,-1.0928699864093918e-8,4.446391154055205e-5,-1.3265486287865059e-5,-1.0934436131087437e-8,4.4740262897078254e-5,-1.3077370375528966e-5,-1.0940609312170373e-8,4.491180449520049e-5,-1.2893262674070154e-5,-1.0945898968800855e-8,4.49944176700801e-5,-1.2766207079580588e-5,-1.0949239480507803e-8,4.502512200115446e-5,-1.273370298418019e-5,-1.0950092267772875e-8,4.505116850684658e-5,-1.2808910095088956e-5,-1.0948539845884595e-8,4.511705275984765e-5,-1.2979305349759284e-5,-1.0945188231944347e-8,4.5253768849291526e-5,-1.3212635289537497e-5,-1.0940942427650663e-8,4.547343858202198e-5,-1.3467274984818715e-5,-1.093675586758881e-8,4.576991139681106e-5,-1.370288962080165e-5,-1.0933437996680767e-8,4.6123562686564354e-5,-1.3888173614010929e-5,-1.0931552459312198e-8,4.6507586318521756e-5,-1.4004532581867268e-5,-1.0931388495325245e-8,4.689364295154041e-5,-1.404638935558007e-5,-1.0932970781736282e-8,4.725592017948633e-5,-1.401955872819049e-5,-1.0936077710211673e-8,4.7573669880768315e-5,-1.3939013934426217e-5,-1.0940262282537435e-8,4.783282623871706e-5,-1.3826794886489019e-5,-1.0944887017204275e-8,4.8027394648472436e-5,-1.3710116999369636e-5,-1.0949190756732851e-8,4.816102679731794e-5,-1.361918978051325e-5,-1.095239527820225e-8,4.824866180786038e-5,-1.3583965343721564e-5,-1.0953844774146032e-8,4.8317389669767263E-05,-1.3629077500997938e-5,-1.0953156144793383e-8,4.8404937665998705e-5,-1.3766894228811147e-5,-1.0950352515756894e-8,4.85539270343216e-5,-1.3990186698127629e-5,-1.094594628661613e-8,4.880120852726276e-5,-1.4267952993854126e-5,-1.0940929580088114e-8,4.9164604434804093e-5,-1.4548760923785778e-5,-1.0936627198037842e-8,4.963284107903462e-5,-1.4773613411439147e-5,-1.0934389782899522e-8,5.016508945338154e-5,-1.4894876338232566e-5,-1.0935178671721424e-8,5.070227547728938e-5,-1.4892932210451892e-5,-1.0939190020118924e-8,5.118560276541905e-5,-1.4782534477633037e-5,-1.0945713139716886e-8,5.157392379064546e-5,-1.4606625431828425e-5,-1.095332893238933e-8,5.185338963389235e-5,-1.4421810233716862e-5,-1.0960371481365232e-8,5.203770610741841e-5,-1.4282157086463557e-5,-1.0965440644733544e-8,5.216122418436789e-5,-1.422646572966351e-5,-1.0967760623641757e-8,5.226841451573015e-5,-1.4271353392898255e-5,-1.0967288706004566e-8,5.2402901302713924e-5,-1.4410350265664105e-5,-1.0964601820102489e-8,5.2598368352539667e-5,-1.4617978010402564e-5,-1.0960658830434025e-8,5.2872840342696726e-5,-1.4857176091440661e-5,-1.0956540629101209e-8,5.322704970841118e-5,-1.5088075305254894e-5,-1.0953236332976238e-8,5.364663492512684e-5,-1.5275993367745722e-5,-1.0951500603035131e-8,5.410696514106418e-5,-1.539698624027727e-5,-1.095178087382418e-8,5.457893133346143e-5,-1.5440298921740233e-5,-1.0954194761142424e-8,5.50342383558213e-5,-1.540806131983914e-5,-1.0958542424790509e-8,5.544932692850507e-5,-1.5313173657149106e-5,-1.096434545062792e-8,5.580777697902618e-5,-1.5176465955951547e-5,-1.0970910845978872e-8,5.610161114139606e-5,-1.502389729946295e-5,-1.0977420875607443e-8,5.633207828382777e-5,-1.4883981469539802e-5,-1.0983045974823884e-8,5.651030827952544e-5,-1.4785143953867945e-5,-1.0987069782932988e-8,5.6657843445042456E-05,-1.475241870537396e-5,-1.098900869828785e-8,5.68064043339674e-5,-1.480281230944594e-5,-1.0988713689162896e-8,5.6995445257911e-5,-1.493919710310919e-5,-1.0986451645489575e-8,5.726569833881333e-5,-1.5144085304198487e-5,-1.0982961665724738e-8,5.7647873217573626e-5,-1.537676462498628e-5,-1.097945336000276e-8,5.8148783022304093e-5,-1.5578618482013747e-5,-1.0977468969124607e-8,5.8741629395056166e-5,-1.5689303712884644e-5,-1.0978518978595156e-8,5.936880170599819e-5,-1.5669452550320848e-5,-1.0983516728908241e-8,5.995982222233368e-5,-1.5518212400740367e-5,-1.0992265385709335e-8,6.045655109961612e-5,-1.5274524989521094e-5,-1.100336461316192e-8,6.083213388443301e-5,-1.500128721893175e-5,-1.1014687824535179e-8,6.109517706905173e-5,-1.476232162248893e-5,-1.1024177858417426e-8,6.128078642644321e-5,-1.4603933293794295e-5,-1.1030515003487311e-8,6.14360565632286e-5,-1.4546623392676997e-5,-1.1033379525122147e-8,6.160676979381152e-5,-1.4585862441534919e-5,-1.1033325129027129e-8,6.182836446050053e-5,-1.4698115916188576e-5,-1.103144492460905e-8,6.212137962144658e-5,-1.4848716247797194e-5,-1.1029016395917635e-8,6.249043218855688e-5,-1.499957486442772e-5,-1.1027231651313366e-8,6.292575713367833e-5,-1.5115848315998846e-5,-1.1027035010884309e-8,6.340659244996193e-5,-1.5171078050374148e-5,-1.1029042575856415e-8,6.39057084276371e-5,-1.5150397168465046e-5,-1.1033511588368882e-8,6.439430170432664e-5,-1.5051632264841132e-5,-1.1040338007405747e-8,6.484651366485014e-5,-1.4884453987230887e-5,-1.1049078955669309e-8,6.524295871579131e-5,-1.4668006957840344e-5,-1.1059009733669053e-8,6.557293822920603e-5,-1.4427696477046931e-5,-1.106922243082436e-8,6.583546021894932e-5,-1.4191801641639522e-5,-1.1078757988711264e-8,6.603942429151922e-5,-1.3988227254888844e-5,-1.1086754263160646e-8,6.620324712438544e-5,-1.3841351539194972e-5,-1.1092584244638724e-8,6.635399675116738e-5,-1.376871069724712e-5,-1.1095960923446284e-8,6.652567539394843e-5,-1.377713360613599e-5,-1.1097002545640146e-8,6.675562941069513e-5,-1.3858317394900903e-5,-1.109626926494747e-8,6.707780774668518e-5,-1.3985038180359028e-5,-1.1094780789983727e-8,6.751241829499467e-5,-1.4110813964274978e-5,-1.1093985695546706e-8,6.805398404589733e-5,-1.4176969697956724e-5,-1.1095592658974113e-8,6.866384590550756e-5,-1.4129570457204582e-5,-1.1101140430408416e-8,6.927548828970987e-5,-1.3942193950697216e-5,-1.1111323602410547e-8,6.981586375490909e-5,-1.3632135932979031e-5,-1.1125409233657399e-8,7.023376113526364e-5,-1.3257268294156674e-5,-1.1141255562749935e-8,7.051856313032443e-5,-1.2893039413830864e-5,-1.1156102060587921e-8,7.06990864524921e-5,-1.2603544775620664e-5,-1.1167680283957444e-8,7.082667807448929e-5,-1.2422764469719474e-5,-1.1174960488599823e-8,7.095499623308146e-5,-1.2351727669469376e-5,-1.1178226969257668e-8,7.112590319904138e-5,-1.2366745927631601e-5,-1.1178667858819269e-8,7.136360199813396e-5,-1.2431038164156497e-5,-1.117783577309838e-8,7.167471562637514e-5,-1.2504825814492575e-5,-1.1177222677717251e-8,7.20513073116622e-5,-1.2552337068439892e-5,-1.1178022183958767e-8,7.247483939519828e-5,-1.2546082636510993e-5,-1.1181041603564716e-8,7.292025057925622e-5,-1.2469246626440453e-5,-1.1186692155499417e-8,7.335996924164086e-5,-1.2316707228409032e-5,-1.1195001134773114e-8,7.376777185043507e-5,-1.2094851223874839e-5,-1.1205627668886617e-8,7.41223204444516e-5,-1.1820215935622424e-5,-1.1217891224875756e-8,7.441008632046292e-5,-1.1516986111407657e-5,-1.1230839822596301e-8,7.462727595584035e-5,-1.121357421653002e-5,-1.1243374292470443e-8,7.478054238337684e-5,-1.0938760084437633e-5,-1.1254418929902535e-8,7.48865297826223e-5,-1.0717820966566956e-5,-1.1263107130437595e-8,7.497036903850236e-5,-1.0568904309436396e-5,-1.1268942299422062e-8,7.506321783824891e-5,-1.0499811842188604e-5,-1.1271900341615984e-8,7.519881869817697e-5,-1.0505257389349248e-5,-1.1272463646632064e-8,7.540869080999105e-5,-1.056479190521469e-5,-1.1271600290428743e-8,7.571546174872404e-5,-1.0642370424357846e-5,-1.1270700670162078e-8,7.61246291272292e-5,-1.0689513165947758e-5,-1.1271446895380041e-8,7.661678435223831e-5,-1.0654320433158899e-5,-1.1275546237460665e-8,7.71448147730922e-5,-1.0497201563490087e-5,-1.1284249952033519e-8,7.764205458950148e-5,-1.0209521680141907e-5,-1.1297711821998253e-8,7.804347387462571e-5,-9.824875614952504e-6,-1.1314530735816466e-8,7.831185681715099e-5,-9.411967862924406e-6,-1.133196933848187e-8,7.84533388443129e-5,-9.048847109690942e-6,-1.134696307423481e-8,7.851205357156255e-5,-8.792740654590127e-6,-1.1357361358067248e-8,7.854866512846068e-5,-8.662856311024963e-6,-1.1362623719687482e-8,7.861729582289454e-5,-8.642245361453145e-6,-1.1363680031735883e-8,7.875197622822127e-5,-8.691794929389404e-6,-1.1362277223349593e-8,7.896418283479847e-5,-8.765841602924702e-6,-1.1360297098831838e-8,7.924709191886245e-5,-8.823284793479496e-6,-1.1359315593534433e-8,7.95818503140842e-5,-8.833269852576455e-6,-1.1360426738010168e-8,7.994322616848324e-5,-8.777041367256928e-6,-1.1364233495034238e-8,8.030394161526125e-5,-8.647855079034407e-6,-1.1370898907447606e-8,8.063800618353983e-5,-8.450099063104403e-6,-1.13801913797548e-8,8.092351739561471e-5,-8.197986994855086e-6,-1.139151507594174e-8,8.114517708580553e-5,-7.913748681025796e-6,-1.1403947928868321e-8,8.129649091610874e-5,-7.625053643838189e-6,-1.1416325803923466e-8,8.13812925714093e-5,-7.361498470228608e-6,-1.1427396960663914e-8,8.141408671042445e-5,-7.150374877007221e-6,-1.143603391639288e-8,8.141887617018724e-5,-7.012246466696308e-6,-1.1441458496670813e-8,8.142639354204631e-5,-6.9569547070524565e-6,-1.1443423882852663e-8,8.146989071188947e-5,-6.980733178277085e-6,-1.1442305223764873e-8,8.157988588747373e-5,-7.0650386142183395e-6,-1.1439079612900346e-8,8.177834068751832e-5,-7.177494714956207e-6,-1.1435206339439226e-8,8.207274310460953e-5,-7.275416748518267e-6,-1.1432431508335396e-8,8.24510452990543e-5,-7.312655501458012e-6,-1.1432513684254343e-8,8.287939415777408e-5,-7.250137973215447e-6,-1.14368513607406e-8,8.330545375814392e-5,-7.068926237825051e-6,-1.1446018896562171e-8,8.366980628525399e-5,-6.781801504635946e-6,-1.1459328098698728e-8,8.392475651610919e-5,-6.436424280153653e-6,-1.147469615909485e-8,8.405365240588183e-5,-6.103856380286995e-6,-1.1489120917511639e-8,8.407948845031888e-5,-5.853970011362507e-6,-1.1499731792143241e-8,8.405583920133282e-5,-5.729599983451548e-6,-1.1504887252346792e-8,8.404479026302159e-5,-5.733734864168806e-6,-1.1504668019600196e-8,8.409487550610288e-5,-5.8348805222652595e-6,-1.1500567610929476e-8,8.422953279231353e-5,-5.983832090974439e-6,-1.1494726575699467e-8,8.44475135877195e-5,-6.130958240035688e-6,-1.1489203384318796e-8,8.473016954110671e-5,-6.237308506807428e-6,-1.1485549198160168e-8,8.504997460131159e-5,-6.278822698858891e-6,-1.1484684339034437e-8,8.537722202659041e-5,-6.24604350020151e-6,-1.1486947837148801e-8,8.56843216611937e-5,-6.141962433049987e-6,-1.149219497561945e-8,8.594839135529726e-5,-5.979584647913548e-6,-1.1499878642207251e-8,8.615303700245352e-5,-5.7797022876110846e-6,-1.1509108282661373e-8,8.628989016331793e-5,-5.568700527437504e-6,-1.1518717192858226e-8,8.636003840534361e-5,-5.3759285752394796e-6,-1.1527377565087991e-8,8.637502793286532e-5,-5.230188533993722e-6,-1.1533784620290696e-8,8.635675385529202e-5,-5.155286769746592e-6,-1.1536897415011626e-8,8.63355224875678e-5,-5.165182714998419e-6,-1.1536184302568082e-8,8.634591892159362e-5,-5.259775561616308e-6,-1.1531803962477889e-8,8.642073115040163e-5,-5.4226586174864975e-6,-1.152465872996433e-8,8.65839351077441e-5,-5.622046886179956e-6,-1.1516287597576716e-8,8.684430755827092e-5,-5.8153923203604484e-6,-1.1508609070013934e-8,8.719130249188195e-5,-5.95728092691672e-6,-1.1503558232602766e-8,8.759455242721197e-5,-6.009491974966764e-6,-1.150267039330855e-8,8.800800850055604e-5,-5.95147211987009e-6,-1.1506668360848453e-8,8.837913286366379e-5,-5.7886627769627485e-6,-1.1515138637633855e-8,8.866225574551908e-5,-5.555373933240397e-6,-1.1526431984484355e-8,8.883301404506053e-5,-5.309063543337344e-6,-1.1537937388838975e-8,8.889840023466499e-5,-5.115164449411993e-6,-1.1546777723907165e-8,8.889656623832367e-5,-5.026383401286591e-6,-1.1550737585091733e-8,8.888441107440784e-5,-5.065123260574208e-6,-1.154900893343037e-8,8.891787950494431e-5,-5.21765631045529e-6,-1.1542374452129857e-8,8.903443511633252e-5,-5.442337151279303e-6,-1.1532775965427147e-8,8.924516874443352e-5,-5.686194762207577e-6,-1.1522563607641413e-8,8.953744138069596e-5,-5.90108623252899e-6,-1.1513813593362013e-8,8.988360538093972e-5,-6.053558073616242e-6,-1.1507938669655695e-8,9.025045498071756e-5,-6.127657333921901e-6,-1.1505594789433005e-8,9.06062942791196e-5,-6.123105910016481e-6,-1.1506768232466762e-8,9.092503624012695e-5,-6.051676523403866e-6,-1.1510921388865986e-8,9.118813404710323e-5,-5.933591903961702e-6,-1.1517128603869335e-8,9.138545565664259e-5,-5.794575433039127e-6,-1.1524189430321015e-8,9.151591271894805e-5,-5.66334449111308e-6,-1.1530742462923101e-8,9.158811085003475e-5,-5.568946066028995e-6,-1.1535410442970295e-8,9.162072310193748e-5,-5.537335450390624e-6,-1.1536995250412474e-8,9.164182458652515e-5,-5.58694690455087e-6,-1.1534711584048976e-8,9.168620213239225e-5,-5.723696108466005e-6,-1.152841879943091e-8,9.178992959661302e-5,-5.936777568263604e-6,-1.1518779345972147e-8,9.198249027190544e-5,-6.197337314678204e-6,-1.1507263760530225e-8,9.227820821065515e-5,-6.461935833751877e-6,-1.1495944136778205e-8,9.266993147833276e-5,-6.6812950165578724e-6,-1.1487076652143873e-8,9.31278874804674e-5,-6.8125918600802576e-6,-1.1482550916430714e-8,9.360510332344588e-5,-6.831677883244499e-6,-1.1483350519634967e-8,9.404841563306238e-5,-6.741163582188049e-6,-1.1489195433374426e-8,9.441208477567966e-5,-6.57151688468949e-6,-1.1498505989231926e-8,9.467017588287623e-5,-6.374429642810231e-6,-1.1508741618074349e-8,9.482411049793587e-5,-6.20983930092064e-6,-1.1517053215341923e-8,9.490280063124226e-5,-6.12986333255191e-6,-1.1521069363394867e-8,9.49546446025167e-5,-6.164351503798526e-6,-1.1519561592846616e-8,9.503343971679581e-5,-6.312991752990002e-6,-1.1512751366586703e-8,9.518296893644879e-5,-6.546957614728857e-6,-1.1502154648514587e-8,9.54258618892581e-5,-6.819249442704191e-6,-1.1490053068776307e-8,9.576033063758811e-5,-7.079181183195936e-6,-1.147882172959562e-8,9.616458460450145e-5,-7.285251177458946e-6,-1.1470361003639736e-8,9.660557779129375e-5,-7.412533789784719e-6,-1.1465779950685564e-8,9.70480253349657e-5,-7.454061673847203e-6,-1.1465342600263835e-8,9.746107955264904e-5,-7.418094434670623e-6,-1.1468592015480105e-8,9.782204348641294e-5,-7.323724614127018e-6,-1.1474549309030842e-8,9.811778004559563e-5,-7.196576837891347e-6,-1.1481914889362466e-8,9.834488254743438e-5,-7.065336659585935e-6,-1.1489242896633806e-8,9.85094970832235e-5,-6.958985648334306e-6,-1.1495095179541215e-8,9.862717385640469e-5,-6.90413645241066e-6,-1.1498196338733799e-8,9.8722513616579e-5,-6.921815594705209e-6,-1.1497607920369037e-8,9.882784972662761e-5,-7.023345607949021e-6,-1.1492923262731212e-8,9.897986411696639e-5,-7.205665995436498e-6,-1.148446098537155e-8,9.921318771121227e-5,-7.447586546246423e-6,-1.1473395307025696e-8,9.955120060763667e-5,-7.709619295232465e-6,-1.146172404791077e-8,9.999642762624879e-5,-7.940035443749168e-6,-1.1451968869426325e-8,1.0052494732063333e-4,-8.087647613726074e-6,-1.1446579632065744e-8,1.0108913471724907e-4,-8.117933472199266e-6,-1.1447169892722494e-8,1.016297505105532e-4,-8.025879558080473e-6,-1.1453875399227287e-8,1.0209339869072522e-4,-7.839290063002508e-6,-1.1465163461608666e-8,1.0244827762320929e-4,-7.610760831100816e-6,-1.1478236898852096e-8,1.0269227243374284e-4,-7.4019405703705335e-6,-1.1489879553959839e-8,1.0285149371859283e-4,-7.266368505272329e-6,-1.1497391887392736e-8,1.0297118136782965e-4,-7.236336161787715e-6,-1.1499280042755185e-8,1.0310270675950262e-4,-7.316726316035047e-6,-1.1495523318503002e-8,1.0329056362595021e-4,-7.486349598341804e-6,-1.148742159707798e-8,1.0356255453322497e-4,-7.705430672579288e-6,-1.1477144225777614e-8,1.0392519544575366e-4,-7.926623660176716e-6,-1.1467147125266295e-8,1.0436481553339658e-4,-8.106347722194308e-6,-1.1459615835618466e-8,1.048532139215313e-4,-8.213492770649762e-6,-1.1456056721422704e-8,1.0535556460250918e-4,-8.23373787288498e-6,-1.1457100913129077e-8,1.0583805546501133e-4,-8.169439622731186e-6,-1.1462518463608636e-8,1.0627352735391126e-4,-8.036400609196678e-6,-1.1471385560392026e-8,1.066445607363988e-4,-7.859266130393587e-6,-1.1482325768957206e-8,1.0694441306334356e-4,-7.666977342055716e-6,-1.1493758257334187e-8,1.0717666268625118e-4,-7.489017281889044e-6,-1.1504111986789331e-8,1.0735435490295485e-4,-7.35244966639261e-6,-1.1511999323604564e-8,1.0749903983642938e-4,-7.2792806829164845e-6,-1.1516363131548234e-8,1.0763957831135115e-4,-7.283580274524651e-6,-1.151661702847303e-8,1.0781007680501017e-4,-7.368012685883945e-6,-1.1512793302970118e-8,1.0804590054700001e-4,-7.520061810504988e-6,-1.1505692043057436e-8,1.0837680611466255e-4,-7.709425069854278e-6,-1.1496977420176755e-8,1.0881740161785823e-4,-7.889347522041987e-6,-1.1489103221812277e-8,1.0935759791410143e-4,-8.004876957400208e-6,-1.1484917776821892e-8,1.099584343313986e-4,-8.008601428695032e-6,-1.1486882532745956e-8,1.1055881062444225e-4,-7.879155597116695e-6,-1.1496092004950944e-8,1.1109371258594231e-4,-7.633039843956237e-6,-1.1511581608136922E-08,1.1151663459051103e-4,-7.321605202687162e-6,-1.1530431309502565e-8,1.1181492903404441e-4,-7.013454241810893e-6,-1.1548741122352925e-8,1.1201106022014476e-4,-6.771340174468865e-6,-1.1562985724005811e-8,1.1215140197415839e-4,-6.634405209780007e-6,-1.1571068149846324e-8,1.1228984212495073e-4,-6.611278102413541e-6,-1.1572697123814852e-8,1.1247315925664164e-4,-6.6831267112462406e-6,-1.1569144942454731e-8,1.127316993096942e-4,-6.812598750203812e-6,-1.156266778319374e-8,1.1307579932787652e-4,-6.954602663343077e-6,-1.1555859496188551e-8,1.1349688400417341e-4,-7.066217820959545e-6,-1.1551101049908461e-8,1.139717903089487e-4,-7.114299397794903e-6,-1.1550167056351804e-8,1.1446891416054345e-4,-7.080077937874377e-6,-1.1554002562827165e-8,1.149548174283551e-4,-6.960537575809596e-6,-1.1562667346861427e-8,1.1540007923220339e-4,-6.766933444370123e-6,-1.1575426285469924e-8,1.1578354861211906e-4,-6.521295786051894e-6,-1.1590947546989276e-8,1.1609463410885247e-4,-6.2519478086589645e-6,-1.160756007562344e-8,1.1633376296363593e-4,-5.989012039941205e-6,-1.1623518348194946e-8,1.1651156393922294e-4,-5.760573051355079e-6,-1.1637234212047214e-8,1.1664740182339614e-4,-5.589622358594828e-6,-1.1647459659802337e-8,1.1676759334021895e-4,-5.4915067272458905e-6,-1.1653428976732367e-8,1.1690326783015823e-4,-5.471531648050538e-6,-1.1654974611229112e-8,1.1708746557034123e-4,-5.5225030012895636e-6,-1.1652632718742514e-8,1.1735068033667883e-4,-5.622479874781477e-6,-1.1647735276380047e-8,1.1771412944112854e-4,-5.734062550996382e-6,-1.1642435438662262e-8,1.1818113725851937e-4,-5.8076621481172495e-6,-1.163954187668793e-8,1.1872926880585935e-4,-5.791344442245663e-6,-1.1642004245374285e-8,1.1930855430309953e-4,-5.647553044674574e-6,-1.1651984086518556e-8,1.1985155215788543e-4,-5.371443175151925e-6,-1.1669760410394222e-8,1.2029547121095116e-4,-4.99995084485974e-6,-1.1693115291372944e-8,1.2060678781026997e-4,-4.6024408688642385e-6,-1.1717833613867049e-8,1.2079400904598451e-4,-4.255199093046226e-6,-1.173926368756903e-8,1.2090126966665237e-4,-4.0137842781003e-6,-1.1754062382778059e-8,1.2098843584166365e-4,-3.897678566972292e-6,-1.176115704922468e-8,1.2111008984554611e-4,-3.891400665164609e-6,-1.1761637208694449e-8,1.213022496940009e-4,-3.95630760713687e-6,-1.1757971241563372e-8,1.2157839399120963e-4,-4.044896229076136e-6,-1.1753097167220337e-8,1.2193195516922581e-4,-4.112420305157807e-6,-1.1749718015863004e-8,1.2234182152848596e-4,-4.124267718560327e-6,-1.174987984666976e-8,1.227785275255919e-4,-4.059624660286843e-6,-1.1754780294877045e-8,1.2321007408265877e-4,-3.9124489345179326e-6,-1.1764728817057517e-8,1.2360698042256985e-4,-3.6904598768444323e-6,-1.1779212189448352e-8,1.2394631226203136e-4,-3.4126109266878824e-6,-1.1797041115608418e-8,1.242144823774108e-4,-3.1055077065965403e-6,-1.1816559520484416e-8,1.2440867826661164e-4,-2.799226073876711e-6,-1.1835897138338729e-8,1.2453685337986063e-4,-2.523031477587932e-6,-1.1853238148010125e-8,1.2461646512564885e-4,-2.301547896694e-6,-1.186706784611472e-8,1.2467235994619418e-4,-2.1516861724259745e-6,-1.1876371614580685e-8,1.2473410454800834e-4,-2.0803083645591164e-6,-1.1880779589050701e-8,1.2483283115915695e-4,-2.0825349597226646e-6,-1.1880660082478308e-8,1.2499748069359724e-4,-2.14069314709482e-6,-1.1877165836353078e-8,1.2525010295091812e-4,-2.2241823656063393e-6,-1.1872226457607199e-8,1.2559995192754653e-4,-2.2912602137460035e-6,-1.1868437590207958e-8,1.2603705811992328e-4,-2.2945068883105327e-6,-1.1868742828901586e-8,1.2652772420829495e-4,-2.191539426597471e-6,-1.1875794007561012e-8,1.2701630641300356e-4,-1.9604423994929207e-6,-1.1890987874401511e-8,1.2743771444703272e-4,-1.6147035257241735e-6,-1.1913481241468902e-8,1.2774003479321577e-4,-1.2075860053489198e-6,-1.1939854087612531e-8,1.2790733523272295e-4,-8.17705683285339e-7,-1.1965019553764724e-8,1.279679628288094e-4,-5.194673008425952e-7,-1.1984174542305361e-8,1.279816584662349e-4,-3.5470155045429583e-7,-1.1994671485721905e-8,1.280138942373341e-4,-3.2155917529888203e-7,-1.1996712018024326e-8,1.2811314916667707e-4,-3.832848611376374e-7,-1.1992721904466058e-8,1.2830082617175774e-4,-4.869902782138533e-7,-1.198611016092719e-8,1.2857305116365837e-4,-5.810461096132203e-7,-1.1980164163535222E-08,1.289084172136336e-4,-6.257202090277428e-7,-1.197740043466469e-8,1.2927653296285668e-4,-5.972525154990381e-7,-1.1979329944634138e-8,1.2964491995966202e-4,-4.877474608997493e-7,-1.1986472365228349e-8,1.2998387075651414e-4,-3.031311612369654e-7,-1.1998477370081351e-8,1.3026979244258862e-4,-6.038288953220458e-8,-1.2014282732417834e-8,1.3048752957989842e-4,2.1562191863560383e-7,-1.2032296857404085e-8,1.3063183983413705e-4,4.956069602951913e-7,-1.2050612633462722e-8,1.3070798712429174e-4,7.49696777087375e-7,-1.2067254493324593e-8,1.3073127127371782e-4,9.513984761652111e-7,-1.2080450782354818e-8,1.3072533232997706e-4,1.0813761032640532e-6,-1.2088898078971734e-8,1.3071932425519906e-4,1.1305045965556356e-6,-1.2091976791290884e-8,1.3074424349902703e-4,1.1018477731859764e-6,-1.2089887050399828e-8,1.3082870101893535e-4,1.0113362985932872e-6,-1.2083690937629776e-8,1.3099441618179766e-4,8.869501908669666e-7,-1.2075251931326807e-8,1.3125168068481923e-4,7.662116754938402e-7,-1.2067066918911372e-8,1.3159510738595574e-4,6.915586905267705e-7,-1.2061965515433264e-8,1.3200056820097142e-4,7.028841658829567e-7,-1.2062624571151364e-8,1.3242528918228636e-4,8.270198550287169e-7,-1.2070869118686841e-8,1.3281385380364976e-4,1.0657937989025924e-6,-1.2086852795495238e-8,1.3311208615874337e-4,1.3873940278361398e-6,-1.2108442324416934e-8,1.3328674475046086e-4,1.728378788589479e-6,-1.2131335420364398e-8,1.333423026531807e-4,2.011359960326922e-6,-1.2150284217646462e-8,1.333230859574093e-4,2.173641367897251e-6,-1.2161076558038903e-8,1.3329628509418603e-4,2.1916886718834704e-6,-1.2162183678561086e-8,1.3332488742110422e-4,2.0869799011873835e-6,-1.2155091872515184e-8,1.3344631607287334e-4,1.9118834458728775e-6,-1.214330168860428e-8,1.3366614959370036e-4,1.7270017762180142e-6,-1.213081977253317e-8,1.339647660819936e-4,1.5827822630531564e-6,-1.2120978054806648e-8,1.3430900171919165e-4,1.5107505188582636e-6,-1.2115885232530696e-8,1.346625507586368e-4,1.5227555156633589e-6,-1.2116379839448163e-8,1.3499278908367805e-4,1.6143357752029857e-6,-1.2122232655650623e-8,1.352743630890875e-4,1.7691319425712106e-6,-1.2132411706736463e-8,1.3549082147805045e-4,1.9628976716705375e-6,-1.214532559179744e-8,1.3563536205606977e-4,2.1669414090184472e-6,-1.2159041601093816e-8,1.3571114539193986e-4,2.3513531864422336e-6,-1.2171504657912729e-8,1.3573115122892719e-4,2.488365757099318e-6,-1.218077928907646e-8,1.3571726302195615e-4,2.555989521491244e-6,-1.2185316078541546e-8,1.3569814446294577e-4,2.5416602671032738e-6,-1.2184217684665625e-8,1.3570568585111713e-4,2.4452206623935392e-6,-1.2177449976565543e-8,1.3577024230789847e-4,2.280427964073108e-6,-1.216594442676682e-8,1.3591527737192273e-4,2.0743135607314645e-6,-1.2151550454018783e-8,1.361522991152803e-4,1.8640121265254014e-6,-1.213681987513195e-8,1.3647708727637718e-4,1.6911483786144465e-6,-1.2124630980449703e-8,1.3686810998498884e-4,1.5943000966245994e-6,-1.211767957644585e-8,1.3728794824521178e-4,1.6002951590033876e-6,-1.2117875538135754e-8,1.376885995265603e-4,1.715563961241601e-6,-1.2125719871977474e-8,1.380212492054774e-4,1.9198116421548985e-6,-1.2139827416802713e-8,1.3824979653251647e-4,2.16545754172393e-6,-1.2156862702966804e-8,1.3836476748777283e-4,2.3863798766054845e-6,-1.2172165361997345e-8,1.3839118089512586e-4,2.516681597723158e-6,-1.2181109204786456e-8,1.383836958661086e-4,2.5139173425388923e-6,-1.2180756018019766e-8,1.3840809682379775e-4,2.3754960365028225e-6,-1.2170971847677191e-8,1.3851731397930713e-4,2.1385549249810985e-6,-1.2154358737266609e-8,1.387345180742526e-4,1.8635150257748393e-6,-1.2135089041809021e-8,0.00013905061657867654,1.6115027181214983e-6,-1.21173713319074e-8,1.3943376606727773e-4,1.4271981388203693e-6,-1.2104305360794658e-8,1.3984300364040437e-4,1.3321511005655048e-6,-1.2097427842395805e-8,1.4023941764179271e-4,1.3266107575433846e-6,-1.2096814698533307e-8,1.4059252722173118e-4,1.3952876797859035e-6,-1.2101447432625885e-8,1.4088264636512158e-4,1.5134604515907064e-6,-1.2109616882522158e-8,1.4110100645417162e-4,1.651840139911393e-6,-1.211925900245617e-8,1.4124909369002032e-4,1.780117071596497e-6,-1.212821380203447e-8,1.41337902381737e-4,1.8698047521882043e-6,-1.2134441476175163e-8,1.413871243968482e-4,1.897057213198281e-6,-1.2136236886680415e-8,1.4142383018431504e-4,1.845841427761066e-6,-1.2132461012287831e-8,1.4147997719204125e-4,1.7113175489430788e-6,-1.2122777537746821e-8,1.4158823504138685e-4,1.502646517645388e-6,-1.2107840476713205e-8,1.4177619737628733e-4,1.2439767012537168e-6,-1.2089354094720186e-8,1.420599003828967e-4,9.723315462248096e-7,-1.206992596215161e-8,1.4243837480090518e-4,7.317359454874271e-7,-1.205266945550483e-8,1.428912639706557e-4,5.641719353741576e-7,-1.2040586686537376e-8,1.4338097885540922e-4,4.993306811954009e-7,-1.2035847099509482e-8,1.4385960277296563e-4,5.458783176763343e-7,-1.2039139663143369e-8,1.4427940471458366e-4,6.868122641353136e-7,-1.2049291370737595e-8,1.4460478846783334e-4,8.807411239238364e-7,-1.2063317321420302e-8,1.4482281559751307e-4,1.069839105541091e-6,-1.2076991054963683e-8,0.00014494904837242869,1.1937309248725323e-6,-1.2085887289049307e-8,1.4502568900064648e-4,1.2064426101944527e-6,-1.208665562177113e-8,1.4511070047506638e-4,1.0911379333922037e-6,-1.2078100163221958e-8,1.4526028585175462e-4,8.663198283372468e-7,-1.2061600256805915e-8,1.4551122674497707e-4,5.797058648325919e-7,-1.204063541031233e-8,1.45870714182893e-4,2.919007977922922e-7,-1.2019605889673682e-8,1.4631756661427476e-4,5.7383281304037876e-8,-1.2002481688680475e-8,1.4681257082234934e-4,-8.908235910099019e-8,-1.199182771411262e-8,1.4731178048653533e-4,-1.3681974382092278e-7,-1.1988462719314775e-8,1.4777718123388823e-4,-9.589928020150776e-8,-1.1991666707489123e-8,1.4818241807458256e-4,9.827970495226143e-9,-1.1999669866292774e-8,1.4851424057603252e-4,1.4975826284681487e-7,-1.2010174857616424e-8,1.4877150780700368e-4,2.9190903564939884e-7,-1.2020776035974408e-8,1.4896338718739874e-4,4.064988238931833e-7,-1.2029249027716422e-8,1.491076446423247e-4,4.6841038637613003e-7,-1.2033745868534184e-8,1.4922916257107874e-4,4.5938546572257956e-7,-1.2032953779941988e-8,1.493582247095228e-4,3.705242197180493e-7,-1.2026262139108474e-8,1.4952777954767635e-4,2.051005400277564e-7,-1.2013946805018194e-8,1.4976894050346446e-4,-1.904479417246828e-8,-1.19973299130609e-8,1.5010454947427974e-4,-2.6906541765304796e-7,-1.1978814248321542e-8,1.5054183504320976e-4,-5.005400438808663e-7,-1.1961656886072548e-8,1.510667193509588e-4,-6.659267765992611e-7,-1.1949384554955782e-8,1.5164312623254563e-4,-7.269820831206918e-7,-1.1944897119523432e-8,1.5221953156980696e-4,-6.673181911368249e-7,-1.1949511382214759e-8,1.5274192731700445e-4,-4.998737686083151e-7,-1.1962335916114308e-8,1.5316902981055573e-4,-2.655106490847173e-7,-1.198030645635063e-8,1.5348421088217352e-4,-2.266891378647792e-8,-1.1998944827432675e-8,1.537000877768807e-4,1.6834438575237464e-7,-1.2013585861232607e-8,1.538547110431581e-4,2.613132906223005e-7,-1.2020649305678164e-8,1.5400096519828458e-4,2.3581112219275996e-7,-1.2018566303697278e-8,1.5419235863208593e-4,1.0173672189554832e-7,-1.2008120314198619e-8,1.5446908544374386e-4,-1.043344103221339e-7,-1.1992147545698048e-8,1.548482390991489e-4,-3.2985719788034745e-7,-1.1974709621771796e-8,1.5532098094650596e-4,-5.207662508907146e-7,-1.1959996690102956e-8,1.5585716932915963e-4,-6.350241871756243e-7,-1.1951293605787887e-8,1.5641522266013897e-4,-6.511187991959759e-7,-1.1950307300835039e-8,1.569532769257661e-4,-5.697016549164902e-7,-1.1957005001839564e-8,1.5743798528095797e-4,-4.09469379855435e-7,-1.1969906863521253e-8,1.5784917981561064e-4,-2.0015710169451744e-7,-1.1986632887038163e-8,1.5818066995231428e-4,2.4528128874972442e-8,-1.2004482272335572e-8,1.584385964221662e-4,2.3238212408654543e-7,-1.2020894960770384e-8,1.5863886107822444e-4,3.9624199560292434e-7,-1.2033748244121223e-8,1.588046247824748e-4,4.961257588820515e-7,-1.2041519855910776e-8,1.5896414577085214e-4,5.208075434900433e-7,-1.2043387212766305e-8,1.5914861628490783e-4,4.6946391491526275e-7,-1.2039325589190074e-8,1.5938926955830503e-4,3.53541008361074e-7,-1.2030232908600866e-8,1.5971294009466412e-4,1.982741610365036e-7,-1.2018050074089633e-8,1.601357000258253e-4,4.2346553631336995e-8,-1.2005764507559371e-8,1.6065547610377416e-4,-6.653262914643824e-8,-1.199711354071502e-8,1.6124655500583345e-4,-8.178371801242496e-8,-1.1995829366236498e-8,1.618604147678731e-4,2.7237558855628032e-8,-1.200446695222325e-8,1.624361983654284e-4,2.6113543526894443e-7,-1.2023214939678597e-8,1.6291924082183584e-4,5.850389636777833e-7,-1.2049358081100115e-8,1.6328002909722807e-4,9.37029053897171e-7,-1.2077889657121621e-8,1.6352419934365228e-4,1.2479123374621913e-6,-1.2103126439366304e-8,1.6368904604779273e-4,1.4631281062483648e-6,-1.2120552485357369e-8,1.6382956183236765e-4,1.557395384432055e-6,-1.2128060940280816e-8,1.6400122926582002e-4,1.5381144862877748e-6,-1.2126239058948575e-8,1.6424588726093894e-4,1.439208355081074e-6,-1.2117853915445577e-8,1.6458370748174056e-4,1.3096328102448778e-6,-1.2106913755361764e-8,1.6501154402339606e-4,1.200644338827852e-6,-1.2097641160415495e-8,1.6550648589063686e-4,1.1547586852730628e-6,-1.2093577694547275e-8,1.6603290776267415e-4,1.198176070928625e-6,-1.209694831318382e-8,1.665511035023388e-4,1.3375614745420673e-6,-1.2108362039271342e-8,1.6702550418416318e-4,1.5612138983333382e-6,-1.2126873437650308e-8,1.674307780932752e-4,1.8436692523999273e-6,-1.2150349328123835e-8,1.677549195800197e-4,2.152050182706575e-6,-1.2176009110305286e-8,1.6799940801179606e-4,2.4524165413076667e-6,-1.2200981766056503e-8,1.6817724583540448e-4,2.7148658232038214e-6,-1.2222754118217347e-8,1.683099873280913e-4,2.9168866968960664e-6,-1.2239454785978735e-8,1.6842467146592558e-4,3.0452180407235236e-6,-1.224999322944638e-8,1.6855102695086848e-4,3.0968539557096263e-6,-1.2254119042353992e-8,1.6871880126855085e-4,3.079744230574199e-6,-1.2252464324778996e-8,1.6895472067160068e-4,3.0133940896606534e-6,-1.2246598903420829e-8,1.6927840464195295e-4,2.9289893043908684e-6,-1.2239070910506032e-8,1.6969685867088022e-4,2.8677904600524987e-6,-1.2233319274918822e-8,1.7019831718506845e-4,2.875824828445984e-6,-1.2233272151029017e-8,1.7074810284391787e-4,2.993272269193482e-6,-1.224246480019927e-8,1.7129098425295404e-4,3.2394101336393448e-6,-1.2262719249205929e-8,1.7176398102373194e-4,3.5987654038797006e-6,-1.2292867630372567e-8,1.7211809981800891e-4,4.018086806079489e-6,-1.2328398800877828e-8,1.723391427347796e-4,4.420818917734477e-6,-1.2362681188303285e-8,1.7245473153053103e-4,4.734662467285292e-6,-1.2389396409868513e-8,1.7252252726735316e-4,4.917578549027333e-6,-1.2404843785782865e-8,1.726071540897258e-4,4.968749604148368e-6,-1.2408893192054333e-8,1.727589046978858e-4,4.9221724964740185e-6,-1.2404411962237101e-8,1.7300260344177033e-4,4.83048076677902e-6,-1.2395876284086118e-8,1.7333699122422784e-4,4.748210739532242e-6,-1.2387966354953343e-8,1.7374060169450008e-4,4.719717242328655e-6,-1.2384556320964524e-8,1.7417998643729247e-4,4.77276442662093e-6,-1.2388155529251713e-8,1.7461775716833916e-4,4.916710446013261e-6,-1.2399710045232228e-8,1.7501937203030822e-4,5.1438468128633355e-6,-1.24186647572412e-8,1.7535828951289732e-4,5.432860035887848e-6,-1.2443225854658522e-8,1.756192629618798e-4,5.753664444472852e-6,-1.247077258016822e-8,1.7579965373443565e-4,6.07283129609336e-6,-1.249834752183416e-8,1.7590884946030766e-4,6.358829228718526e-6,-1.2523139875377372e-8,1.759661130968674e-4,6.586381943570775e-6,-1.2542883039875933e-8,1.759974500115724e-4,6.739459298134962e-6,-1.2556116611078232e-8,1.760321637278397e-4,6.812845618154416e-6,-1.2562313354106072e-8,1.7609950601134763e-4,6.812603660833107e-6,-1.2561914546371991e-8,1.7622548831381987e-4,6.755770295736606e-6,-1.2556315384687489e-8,1.7642970412317874e-4,6.669448359319251e-6,-1.2547819558221092e-8,1.7672181959903853e-4,6.589129298634931e-6,-1.2539538164845853e-8,1.7709754531837021e-4,6.555409184978373e-6,-1.253513882005936e-8,1.7753484841258758e-4,6.6077367992058346e-6,-1.2538298544744623e-8,1.7799261074736457e-4,6.774298835042637e-6,-1.2551762208519981e-8,1.7841520147040621e-4,7.059131678797954e-6,-1.2576102085454612e-8,1.7874610453487877e-4,7.431432411420299e-6,-1.2608660039097732e-8,1.7894917443968755e-4,7.825953175386766e-6,-1.264353962001558e-8,1.7902774380033063e-4,8.161207083206408e-6,-1.2673296174765145e-8,1.790278108183074e-4,8.37057801926549e-6,-1.2691829535203863e-8,1.7902000252517539e-4,8.429111940731165e-6,-1.2696822098010562e-8,1.7907052731275117e-4,8.359865779353108e-6,-1.2690259514578959e-8,1.792184376056174e-4,8.218710920752939e-6,-1.2677033409507345e-8,1.7946899122588982e-4,8.070217272528202e-6,-1.2662824877992331e-8,1.798005516314884e-4,7.968098174834111e-6,-1.2652431102927129e-8,1.8017678902342154e-4,7.945639373964074e-6,-1.2648941656457344e-8,1.8055783018827178e-4,8.014489469180937e-6,-1.2653594995131369e-8,1.809079743025977e-4,8.167991049630246e-6,-1.2666002492302427e-8,1.8120015594670137e-4,8.386055770599257e-6,-1.2684515636010646e-8,1.81418169137406e-4,8.640136272423779e-6,-1.2706635648062213e-8,1.8155745362714864e-4,8.897929471115659e-6,-1.2729437938407207e-8,1.816247890930127e-4,9.127778918254038e-6,-1.2749994232411722e-8,1.8163698371062952e-4,9.302709168045539e-6,-1.2765766433492419e-8,1.8161856182727902e-4,9.403888438419948e-6,-1.2774938041748913e-8,1.815985642893323e-4,9.423138551089404e-6,-1.2776645313126941e-8,1.8160681506560852e-4,9.36415692920561e-6,-1.2771087603012172e-8,1.8167007529985502e-4,9.242389932513445e-6,-1.2759527269267482e-8,1.8180839374719023e-4,9.083630182385395e-6,-1.2744194260900506e-8,1.8203189191582484e-4,8.921407254932055e-6,-1.272809684680252e-8,1.8233811686921964e-4,8.793234923543979e-6,-1.271472568547752e-8,1.8271007573164471e-4,8.735513832696627e-6,-1.2707603433132443e-8,1.831156226205783e-4,8.776587215035303e-6,-1.2709611967731912e-8,1.835098044135818e-4,8.927979072561361e-6,-1.2722097762312471e-8,1.8384221630675696e-4,9.175500192615347e-6,-1.27439367278731e-8,1.840705475552472e-4,9.474371020128938e-6,-1.2771002906062082e-8,1.841780628060236e-4,9.754616948466088e-6,-1.279667951127827e-8,1.8418683651227492e-4,9.940934290960093e-6,-1.281380356682737e-8,1.8415563603335129e-4,9.98187460304554e-6,-1.281747050358581e-8,1.8415861263877017e-4,9.872544364405676e-6,-1.2807136409084753e-8,1.842552921475183e-4,9.65575714304891e-6,-1.278665574601449e-8,1.8446960989311107e-4,9.401323160175794e-6,-1.2762350921109002e-8,1.847878917819339e-4,9.177921705907351e-6,-1.274048999348862e-8,1.851716145817177e-4,9.033077144764868e-6,-1.2725517880425859e-8,1.8557404333119885e-4,8.98674862545095e-6,-1.2719465951244568e-8,1.8595285565285299e-4,9.03489153155634e-6,-1.2722206457539776e-8,1.8627673471227903e-4,9.156961441484826e-6,-1.2732052732514901e-8,1.8652737698281774e-4,9.323291635298407e-6,-1.2746379558568107e-8,1.8669908398996258e-4,9.500851281252383e-6,-1.276214259667023e-8,1.867974540649122e-4,9.657494220093313e-6,-1.2776296198795173e-8,1.868377674238962e-4,9.765290802188679e-6,-1.2786140679959678e-8,1.8684306967336814e-4,9.803397871508996e-6,-1.2789619363565743e-8,1.868417147083351e-4,9.760610094037025e-6,-1.2785567727151342e-8,1.8686412458466885e-4,9.637324414561794e-6,-1.2773894189412115e-8,1.8693880886411663e-4,9.44635537749392e-6,-1.2755655110877828e-8,1.8708806034181723e-4,9.212124471751703e-6,-1.2732996276901077e-8,1.873239407935784e-4,8.968006164774606e-6,-1.2708946706398693e-8,1.8764524855502274e-4,8.751851247504868e-6,-1.2687053344743047e-8,1.8803613506589658e-4,8.600047003777075e-6,-1.267086308882513e-8,1.884668350213392e-4,8.540750156571121e-6,-1.266327943929974e-8,1.8889688401037388e-4,8.586957156317759e-6,-1.2665841049346619e-8,1.892813662336039e-4,8.7303677532984365E-06,-1.2678028004774141e-8,1.8958055151708885e-4,8.937957777496288e-6,-1.269682650981506e-8,1.8977205698003573e-4,9.154221964303619e-6,-1.2716894887330907e-8,1.8986226816951858e-4,9.312023948278568e-6,-1.2731645634466873e-8,1.8989097282145473e-4,9.3523306591095e-6,-1.2735235873700964e-8,1.899229344963519e-4,9.246977657328054e-6,-1.2724818924541804e-8,1.9002600500419477e-4,9.012639158824845e-6,-1.2701873808086355e-8,1.90245267253111e-4,8.705899735453676e-6,-1.267169944090641e-8,1.9058743747324758e-4,8.400731767561984e-6,-1.2641284800066107e-8,1.9102317062649488e-4,8.161375525659737e-6,-1.261678823134974e-8,1.915028135995743e-4,8.024638131175617e-6,-1.2601877107848063e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/Images/bing_maps_credit.png b/public/Cesium/Assets/Images/bing_maps_credit.png new file mode 100644 index 000000000..15109db3c Binary files /dev/null and b/public/Cesium/Assets/Images/bing_maps_credit.png differ diff --git a/public/Cesium/Assets/Images/cesium_credit.png b/public/Cesium/Assets/Images/cesium_credit.png new file mode 100644 index 000000000..4d1722b6b Binary files /dev/null and b/public/Cesium/Assets/Images/cesium_credit.png differ diff --git a/public/Cesium/Assets/Images/google_earth_credit.png b/public/Cesium/Assets/Images/google_earth_credit.png new file mode 100644 index 000000000..a7622d822 Binary files /dev/null and b/public/Cesium/Assets/Images/google_earth_credit.png differ diff --git a/public/Cesium/Assets/Images/ion-credit.png b/public/Cesium/Assets/Images/ion-credit.png new file mode 100644 index 000000000..71b7bdf1c Binary files /dev/null and b/public/Cesium/Assets/Images/ion-credit.png differ diff --git a/public/Cesium/Assets/Textures/LensFlare/DirtMask.jpg b/public/Cesium/Assets/Textures/LensFlare/DirtMask.jpg new file mode 100644 index 000000000..53299020e Binary files /dev/null and b/public/Cesium/Assets/Textures/LensFlare/DirtMask.jpg differ diff --git a/public/Cesium/Assets/Textures/LensFlare/StarBurst.jpg b/public/Cesium/Assets/Textures/LensFlare/StarBurst.jpg new file mode 100644 index 000000000..b54ac0910 Binary files /dev/null and b/public/Cesium/Assets/Textures/LensFlare/StarBurst.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg new file mode 100644 index 000000000..0cad64662 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg new file mode 100644 index 000000000..7e63bd63e Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg new file mode 100644 index 000000000..e65f1c78b Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg new file mode 100644 index 000000000..605f63f13 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg new file mode 100644 index 000000000..319458e12 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg new file mode 100644 index 000000000..a6a3859d6 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg new file mode 100644 index 000000000..6913a2b08 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg new file mode 100644 index 000000000..df89ed220 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg new file mode 100644 index 000000000..8f27415e2 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg new file mode 100644 index 000000000..ce2b06ecb Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg new file mode 100644 index 000000000..e3c031201 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg new file mode 100644 index 000000000..f3ec32150 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg new file mode 100644 index 000000000..b59816c01 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg new file mode 100644 index 000000000..795f21227 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg new file mode 100644 index 000000000..822b06514 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg new file mode 100644 index 000000000..4dd18ea4e Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg new file mode 100644 index 000000000..4540c7c94 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg new file mode 100644 index 000000000..32c6e5ae2 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg new file mode 100644 index 000000000..7c3909481 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg new file mode 100644 index 000000000..3e7abe713 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg new file mode 100644 index 000000000..0e0f1e9b1 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg new file mode 100644 index 000000000..732c32f95 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg new file mode 100644 index 000000000..576ec70e7 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg new file mode 100644 index 000000000..6347041f9 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg new file mode 100644 index 000000000..300aa5803 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg new file mode 100644 index 000000000..cd70fcad1 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg new file mode 100644 index 000000000..eabb83c79 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg new file mode 100644 index 000000000..54e6b0076 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg new file mode 100644 index 000000000..311241c8d Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg new file mode 100644 index 000000000..5ba398c58 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg new file mode 100644 index 000000000..e03c0c077 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg new file mode 100644 index 000000000..01a1caf81 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg new file mode 100644 index 000000000..372e3ef5b Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg new file mode 100644 index 000000000..fbcfa628f Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg new file mode 100644 index 000000000..334ab2581 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg new file mode 100644 index 000000000..ebbc3a099 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg new file mode 100644 index 000000000..c3a8e97c8 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg new file mode 100644 index 000000000..8f730f364 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg new file mode 100644 index 000000000..75235d6f8 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg new file mode 100644 index 000000000..036d682ec Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg new file mode 100644 index 000000000..dfd214467 Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg new file mode 100644 index 000000000..82c2a34aa Binary files /dev/null and b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg differ diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml b/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml new file mode 100644 index 000000000..d7734cce0 --- /dev/null +++ b/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml @@ -0,0 +1,14 @@ + + + NE2_HR_LC_SR_W_DR_recolored.tif + + EPSG:4326 + + + + + + + + + diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg new file mode 100644 index 000000000..67192282d Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg differ diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg new file mode 100644 index 000000000..3dfe883b3 Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg differ diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg new file mode 100644 index 000000000..7ef2363f2 Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg differ diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg new file mode 100644 index 000000000..f5d0d8b1e Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg differ diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg new file mode 100644 index 000000000..a8421113e Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg differ diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg new file mode 100644 index 000000000..5efcc76e2 Binary files /dev/null and b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg differ diff --git a/public/Cesium/Assets/Textures/maki/airfield.png b/public/Cesium/Assets/Textures/maki/airfield.png new file mode 100644 index 000000000..b77468424 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/airfield.png differ diff --git a/public/Cesium/Assets/Textures/maki/airport.png b/public/Cesium/Assets/Textures/maki/airport.png new file mode 100644 index 000000000..44a8413a7 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/airport.png differ diff --git a/public/Cesium/Assets/Textures/maki/alcohol-shop.png b/public/Cesium/Assets/Textures/maki/alcohol-shop.png new file mode 100644 index 000000000..b75a5d9ea Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/alcohol-shop.png differ diff --git a/public/Cesium/Assets/Textures/maki/america-football.png b/public/Cesium/Assets/Textures/maki/america-football.png new file mode 100644 index 000000000..5a2c6ba6f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/america-football.png differ diff --git a/public/Cesium/Assets/Textures/maki/art-gallery.png b/public/Cesium/Assets/Textures/maki/art-gallery.png new file mode 100644 index 000000000..a663512ef Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/art-gallery.png differ diff --git a/public/Cesium/Assets/Textures/maki/bakery.png b/public/Cesium/Assets/Textures/maki/bakery.png new file mode 100644 index 000000000..9735d5e53 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/bakery.png differ diff --git a/public/Cesium/Assets/Textures/maki/bank.png b/public/Cesium/Assets/Textures/maki/bank.png new file mode 100644 index 000000000..a67cee06e Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/bank.png differ diff --git a/public/Cesium/Assets/Textures/maki/bar.png b/public/Cesium/Assets/Textures/maki/bar.png new file mode 100644 index 000000000..8c2812fba Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/bar.png differ diff --git a/public/Cesium/Assets/Textures/maki/baseball.png b/public/Cesium/Assets/Textures/maki/baseball.png new file mode 100644 index 000000000..23f344bbf Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/baseball.png differ diff --git a/public/Cesium/Assets/Textures/maki/basketball.png b/public/Cesium/Assets/Textures/maki/basketball.png new file mode 100644 index 000000000..7ed3bfce3 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/basketball.png differ diff --git a/public/Cesium/Assets/Textures/maki/beer.png b/public/Cesium/Assets/Textures/maki/beer.png new file mode 100644 index 000000000..a15cf9911 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/beer.png differ diff --git a/public/Cesium/Assets/Textures/maki/bicycle.png b/public/Cesium/Assets/Textures/maki/bicycle.png new file mode 100644 index 000000000..fb871be48 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/bicycle.png differ diff --git a/public/Cesium/Assets/Textures/maki/building.png b/public/Cesium/Assets/Textures/maki/building.png new file mode 100644 index 000000000..885f1128a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/building.png differ diff --git a/public/Cesium/Assets/Textures/maki/bus.png b/public/Cesium/Assets/Textures/maki/bus.png new file mode 100644 index 000000000..783050234 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/bus.png differ diff --git a/public/Cesium/Assets/Textures/maki/cafe.png b/public/Cesium/Assets/Textures/maki/cafe.png new file mode 100644 index 000000000..2050cba3c Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cafe.png differ diff --git a/public/Cesium/Assets/Textures/maki/camera.png b/public/Cesium/Assets/Textures/maki/camera.png new file mode 100644 index 000000000..ec54e12a2 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/camera.png differ diff --git a/public/Cesium/Assets/Textures/maki/campsite.png b/public/Cesium/Assets/Textures/maki/campsite.png new file mode 100644 index 000000000..36e0a92de Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/campsite.png differ diff --git a/public/Cesium/Assets/Textures/maki/car.png b/public/Cesium/Assets/Textures/maki/car.png new file mode 100644 index 000000000..2075afa58 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/car.png differ diff --git a/public/Cesium/Assets/Textures/maki/cemetery.png b/public/Cesium/Assets/Textures/maki/cemetery.png new file mode 100644 index 000000000..df244fda0 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cemetery.png differ diff --git a/public/Cesium/Assets/Textures/maki/cesium.png b/public/Cesium/Assets/Textures/maki/cesium.png new file mode 100644 index 000000000..ce2755ded Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cesium.png differ diff --git a/public/Cesium/Assets/Textures/maki/chemist.png b/public/Cesium/Assets/Textures/maki/chemist.png new file mode 100644 index 000000000..eb1ea3574 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/chemist.png differ diff --git a/public/Cesium/Assets/Textures/maki/cinema.png b/public/Cesium/Assets/Textures/maki/cinema.png new file mode 100644 index 000000000..56b692561 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cinema.png differ diff --git a/public/Cesium/Assets/Textures/maki/circle-stroked.png b/public/Cesium/Assets/Textures/maki/circle-stroked.png new file mode 100644 index 000000000..88689e47f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/circle-stroked.png differ diff --git a/public/Cesium/Assets/Textures/maki/circle.png b/public/Cesium/Assets/Textures/maki/circle.png new file mode 100644 index 000000000..fbbd5822f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/circle.png differ diff --git a/public/Cesium/Assets/Textures/maki/city.png b/public/Cesium/Assets/Textures/maki/city.png new file mode 100644 index 000000000..37d8fad88 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/city.png differ diff --git a/public/Cesium/Assets/Textures/maki/clothing-store.png b/public/Cesium/Assets/Textures/maki/clothing-store.png new file mode 100644 index 000000000..ff5f8a2b1 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/clothing-store.png differ diff --git a/public/Cesium/Assets/Textures/maki/college.png b/public/Cesium/Assets/Textures/maki/college.png new file mode 100644 index 000000000..102638704 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/college.png differ diff --git a/public/Cesium/Assets/Textures/maki/commercial.png b/public/Cesium/Assets/Textures/maki/commercial.png new file mode 100644 index 000000000..fdf3b63c3 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/commercial.png differ diff --git a/public/Cesium/Assets/Textures/maki/cricket.png b/public/Cesium/Assets/Textures/maki/cricket.png new file mode 100644 index 000000000..6642a3af2 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cricket.png differ diff --git a/public/Cesium/Assets/Textures/maki/cross.png b/public/Cesium/Assets/Textures/maki/cross.png new file mode 100644 index 000000000..8945b3b4f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/cross.png differ diff --git a/public/Cesium/Assets/Textures/maki/dam.png b/public/Cesium/Assets/Textures/maki/dam.png new file mode 100644 index 000000000..aed88a88f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/dam.png differ diff --git a/public/Cesium/Assets/Textures/maki/danger.png b/public/Cesium/Assets/Textures/maki/danger.png new file mode 100644 index 000000000..9479572c3 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/danger.png differ diff --git a/public/Cesium/Assets/Textures/maki/disability.png b/public/Cesium/Assets/Textures/maki/disability.png new file mode 100644 index 000000000..1cc355097 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/disability.png differ diff --git a/public/Cesium/Assets/Textures/maki/dog-park.png b/public/Cesium/Assets/Textures/maki/dog-park.png new file mode 100644 index 000000000..3483e35b9 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/dog-park.png differ diff --git a/public/Cesium/Assets/Textures/maki/embassy.png b/public/Cesium/Assets/Textures/maki/embassy.png new file mode 100644 index 000000000..46b7e1e1c Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/embassy.png differ diff --git a/public/Cesium/Assets/Textures/maki/emergency-telephone.png b/public/Cesium/Assets/Textures/maki/emergency-telephone.png new file mode 100644 index 000000000..fac623968 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/emergency-telephone.png differ diff --git a/public/Cesium/Assets/Textures/maki/entrance.png b/public/Cesium/Assets/Textures/maki/entrance.png new file mode 100644 index 000000000..b0ba8c5d6 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/entrance.png differ diff --git a/public/Cesium/Assets/Textures/maki/farm.png b/public/Cesium/Assets/Textures/maki/farm.png new file mode 100644 index 000000000..7b03e825f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/farm.png differ diff --git a/public/Cesium/Assets/Textures/maki/fast-food.png b/public/Cesium/Assets/Textures/maki/fast-food.png new file mode 100644 index 000000000..9488c263f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/fast-food.png differ diff --git a/public/Cesium/Assets/Textures/maki/ferry.png b/public/Cesium/Assets/Textures/maki/ferry.png new file mode 100644 index 000000000..58c2f27a8 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/ferry.png differ diff --git a/public/Cesium/Assets/Textures/maki/fire-station.png b/public/Cesium/Assets/Textures/maki/fire-station.png new file mode 100644 index 000000000..427512f1d Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/fire-station.png differ diff --git a/public/Cesium/Assets/Textures/maki/fuel.png b/public/Cesium/Assets/Textures/maki/fuel.png new file mode 100644 index 000000000..dc6059b90 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/fuel.png differ diff --git a/public/Cesium/Assets/Textures/maki/garden.png b/public/Cesium/Assets/Textures/maki/garden.png new file mode 100644 index 000000000..265edb8d6 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/garden.png differ diff --git a/public/Cesium/Assets/Textures/maki/gift.png b/public/Cesium/Assets/Textures/maki/gift.png new file mode 100644 index 000000000..866263e16 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/gift.png differ diff --git a/public/Cesium/Assets/Textures/maki/golf.png b/public/Cesium/Assets/Textures/maki/golf.png new file mode 100644 index 000000000..2169d9158 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/golf.png differ diff --git a/public/Cesium/Assets/Textures/maki/grocery.png b/public/Cesium/Assets/Textures/maki/grocery.png new file mode 100644 index 000000000..05b09d4af Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/grocery.png differ diff --git a/public/Cesium/Assets/Textures/maki/hairdresser.png b/public/Cesium/Assets/Textures/maki/hairdresser.png new file mode 100644 index 000000000..68fbe1e85 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/hairdresser.png differ diff --git a/public/Cesium/Assets/Textures/maki/harbor.png b/public/Cesium/Assets/Textures/maki/harbor.png new file mode 100644 index 000000000..2814f3cd5 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/harbor.png differ diff --git a/public/Cesium/Assets/Textures/maki/heart.png b/public/Cesium/Assets/Textures/maki/heart.png new file mode 100644 index 000000000..82e98082c Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/heart.png differ diff --git a/public/Cesium/Assets/Textures/maki/heliport.png b/public/Cesium/Assets/Textures/maki/heliport.png new file mode 100644 index 000000000..953828d9e Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/heliport.png differ diff --git a/public/Cesium/Assets/Textures/maki/hospital.png b/public/Cesium/Assets/Textures/maki/hospital.png new file mode 100644 index 000000000..faf294e87 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/hospital.png differ diff --git a/public/Cesium/Assets/Textures/maki/ice-cream.png b/public/Cesium/Assets/Textures/maki/ice-cream.png new file mode 100644 index 000000000..323c96494 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/ice-cream.png differ diff --git a/public/Cesium/Assets/Textures/maki/industrial.png b/public/Cesium/Assets/Textures/maki/industrial.png new file mode 100644 index 000000000..9b3b525db Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/industrial.png differ diff --git a/public/Cesium/Assets/Textures/maki/land-use.png b/public/Cesium/Assets/Textures/maki/land-use.png new file mode 100644 index 000000000..f86b21bcd Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/land-use.png differ diff --git a/public/Cesium/Assets/Textures/maki/laundry.png b/public/Cesium/Assets/Textures/maki/laundry.png new file mode 100644 index 000000000..53fd20de4 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/laundry.png differ diff --git a/public/Cesium/Assets/Textures/maki/library.png b/public/Cesium/Assets/Textures/maki/library.png new file mode 100644 index 000000000..8564e84a3 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/library.png differ diff --git a/public/Cesium/Assets/Textures/maki/lighthouse.png b/public/Cesium/Assets/Textures/maki/lighthouse.png new file mode 100644 index 000000000..a78e21a5b Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/lighthouse.png differ diff --git a/public/Cesium/Assets/Textures/maki/lodging.png b/public/Cesium/Assets/Textures/maki/lodging.png new file mode 100644 index 000000000..4e41ea6f6 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/lodging.png differ diff --git a/public/Cesium/Assets/Textures/maki/logging.png b/public/Cesium/Assets/Textures/maki/logging.png new file mode 100644 index 000000000..4aeef0b7a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/logging.png differ diff --git a/public/Cesium/Assets/Textures/maki/london-underground.png b/public/Cesium/Assets/Textures/maki/london-underground.png new file mode 100644 index 000000000..94972f7dd Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/london-underground.png differ diff --git a/public/Cesium/Assets/Textures/maki/marker-stroked.png b/public/Cesium/Assets/Textures/maki/marker-stroked.png new file mode 100644 index 000000000..f00d11239 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/marker-stroked.png differ diff --git a/public/Cesium/Assets/Textures/maki/marker.png b/public/Cesium/Assets/Textures/maki/marker.png new file mode 100644 index 000000000..825eeca69 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/marker.png differ diff --git a/public/Cesium/Assets/Textures/maki/minefield.png b/public/Cesium/Assets/Textures/maki/minefield.png new file mode 100644 index 000000000..60e174abb Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/minefield.png differ diff --git a/public/Cesium/Assets/Textures/maki/mobilephone.png b/public/Cesium/Assets/Textures/maki/mobilephone.png new file mode 100644 index 000000000..a40ef9c1f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/mobilephone.png differ diff --git a/public/Cesium/Assets/Textures/maki/monument.png b/public/Cesium/Assets/Textures/maki/monument.png new file mode 100644 index 000000000..5b8b7debd Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/monument.png differ diff --git a/public/Cesium/Assets/Textures/maki/museum.png b/public/Cesium/Assets/Textures/maki/museum.png new file mode 100644 index 000000000..23c179003 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/museum.png differ diff --git a/public/Cesium/Assets/Textures/maki/music.png b/public/Cesium/Assets/Textures/maki/music.png new file mode 100644 index 000000000..dbef56f22 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/music.png differ diff --git a/public/Cesium/Assets/Textures/maki/oil-well.png b/public/Cesium/Assets/Textures/maki/oil-well.png new file mode 100644 index 000000000..a421f5aae Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/oil-well.png differ diff --git a/public/Cesium/Assets/Textures/maki/park.png b/public/Cesium/Assets/Textures/maki/park.png new file mode 100644 index 000000000..741110e37 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/park.png differ diff --git a/public/Cesium/Assets/Textures/maki/park2.png b/public/Cesium/Assets/Textures/maki/park2.png new file mode 100644 index 000000000..5f60dcc4d Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/park2.png differ diff --git a/public/Cesium/Assets/Textures/maki/parking-garage.png b/public/Cesium/Assets/Textures/maki/parking-garage.png new file mode 100644 index 000000000..b91a811a8 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/parking-garage.png differ diff --git a/public/Cesium/Assets/Textures/maki/parking.png b/public/Cesium/Assets/Textures/maki/parking.png new file mode 100644 index 000000000..6a843d93e Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/parking.png differ diff --git a/public/Cesium/Assets/Textures/maki/pharmacy.png b/public/Cesium/Assets/Textures/maki/pharmacy.png new file mode 100644 index 000000000..d82e4716f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/pharmacy.png differ diff --git a/public/Cesium/Assets/Textures/maki/pitch.png b/public/Cesium/Assets/Textures/maki/pitch.png new file mode 100644 index 000000000..a8205e802 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/pitch.png differ diff --git a/public/Cesium/Assets/Textures/maki/place-of-worship.png b/public/Cesium/Assets/Textures/maki/place-of-worship.png new file mode 100644 index 000000000..29f7c3172 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/place-of-worship.png differ diff --git a/public/Cesium/Assets/Textures/maki/playground.png b/public/Cesium/Assets/Textures/maki/playground.png new file mode 100644 index 000000000..5270d3c42 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/playground.png differ diff --git a/public/Cesium/Assets/Textures/maki/police.png b/public/Cesium/Assets/Textures/maki/police.png new file mode 100644 index 000000000..9787a05e9 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/police.png differ diff --git a/public/Cesium/Assets/Textures/maki/polling-place.png b/public/Cesium/Assets/Textures/maki/polling-place.png new file mode 100644 index 000000000..b2d02a904 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/polling-place.png differ diff --git a/public/Cesium/Assets/Textures/maki/post.png b/public/Cesium/Assets/Textures/maki/post.png new file mode 100644 index 000000000..ee7aaca7d Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/post.png differ diff --git a/public/Cesium/Assets/Textures/maki/prison.png b/public/Cesium/Assets/Textures/maki/prison.png new file mode 100644 index 000000000..355cba44a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/prison.png differ diff --git a/public/Cesium/Assets/Textures/maki/rail-above.png b/public/Cesium/Assets/Textures/maki/rail-above.png new file mode 100644 index 000000000..e48d7eac7 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rail-above.png differ diff --git a/public/Cesium/Assets/Textures/maki/rail-light.png b/public/Cesium/Assets/Textures/maki/rail-light.png new file mode 100644 index 000000000..895565e00 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rail-light.png differ diff --git a/public/Cesium/Assets/Textures/maki/rail-metro.png b/public/Cesium/Assets/Textures/maki/rail-metro.png new file mode 100644 index 000000000..86078c91f Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rail-metro.png differ diff --git a/public/Cesium/Assets/Textures/maki/rail-underground.png b/public/Cesium/Assets/Textures/maki/rail-underground.png new file mode 100644 index 000000000..42cfeb7e1 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rail-underground.png differ diff --git a/public/Cesium/Assets/Textures/maki/rail.png b/public/Cesium/Assets/Textures/maki/rail.png new file mode 100644 index 000000000..8af055dde Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rail.png differ diff --git a/public/Cesium/Assets/Textures/maki/religious-christian.png b/public/Cesium/Assets/Textures/maki/religious-christian.png new file mode 100644 index 000000000..201bc81ca Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/religious-christian.png differ diff --git a/public/Cesium/Assets/Textures/maki/religious-jewish.png b/public/Cesium/Assets/Textures/maki/religious-jewish.png new file mode 100644 index 000000000..e3c75f6b3 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/religious-jewish.png differ diff --git a/public/Cesium/Assets/Textures/maki/religious-muslim.png b/public/Cesium/Assets/Textures/maki/religious-muslim.png new file mode 100644 index 000000000..25cbf08aa Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/religious-muslim.png differ diff --git a/public/Cesium/Assets/Textures/maki/restaurant.png b/public/Cesium/Assets/Textures/maki/restaurant.png new file mode 100644 index 000000000..816282a6e Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/restaurant.png differ diff --git a/public/Cesium/Assets/Textures/maki/roadblock.png b/public/Cesium/Assets/Textures/maki/roadblock.png new file mode 100644 index 000000000..539f0ed84 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/roadblock.png differ diff --git a/public/Cesium/Assets/Textures/maki/rocket.png b/public/Cesium/Assets/Textures/maki/rocket.png new file mode 100644 index 000000000..e6ed71877 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/rocket.png differ diff --git a/public/Cesium/Assets/Textures/maki/school.png b/public/Cesium/Assets/Textures/maki/school.png new file mode 100644 index 000000000..fb20bf4e2 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/school.png differ diff --git a/public/Cesium/Assets/Textures/maki/scooter.png b/public/Cesium/Assets/Textures/maki/scooter.png new file mode 100644 index 000000000..41f741649 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/scooter.png differ diff --git a/public/Cesium/Assets/Textures/maki/shop.png b/public/Cesium/Assets/Textures/maki/shop.png new file mode 100644 index 000000000..11a6b755a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/shop.png differ diff --git a/public/Cesium/Assets/Textures/maki/skiing.png b/public/Cesium/Assets/Textures/maki/skiing.png new file mode 100644 index 000000000..4fc11e2e5 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/skiing.png differ diff --git a/public/Cesium/Assets/Textures/maki/slaughterhouse.png b/public/Cesium/Assets/Textures/maki/slaughterhouse.png new file mode 100644 index 000000000..9b094cabd Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/slaughterhouse.png differ diff --git a/public/Cesium/Assets/Textures/maki/soccer.png b/public/Cesium/Assets/Textures/maki/soccer.png new file mode 100644 index 000000000..2385daf91 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/soccer.png differ diff --git a/public/Cesium/Assets/Textures/maki/square-stroked.png b/public/Cesium/Assets/Textures/maki/square-stroked.png new file mode 100644 index 000000000..fce75b0d8 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/square-stroked.png differ diff --git a/public/Cesium/Assets/Textures/maki/square.png b/public/Cesium/Assets/Textures/maki/square.png new file mode 100644 index 000000000..babc9c531 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/square.png differ diff --git a/public/Cesium/Assets/Textures/maki/star-stroked.png b/public/Cesium/Assets/Textures/maki/star-stroked.png new file mode 100644 index 000000000..242e42e20 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/star-stroked.png differ diff --git a/public/Cesium/Assets/Textures/maki/star.png b/public/Cesium/Assets/Textures/maki/star.png new file mode 100644 index 000000000..447dd384a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/star.png differ diff --git a/public/Cesium/Assets/Textures/maki/suitcase.png b/public/Cesium/Assets/Textures/maki/suitcase.png new file mode 100644 index 000000000..a94f562e7 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/suitcase.png differ diff --git a/public/Cesium/Assets/Textures/maki/swimming.png b/public/Cesium/Assets/Textures/maki/swimming.png new file mode 100644 index 000000000..b9fbdcc5d Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/swimming.png differ diff --git a/public/Cesium/Assets/Textures/maki/telephone.png b/public/Cesium/Assets/Textures/maki/telephone.png new file mode 100644 index 000000000..6d57dc61a Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/telephone.png differ diff --git a/public/Cesium/Assets/Textures/maki/tennis.png b/public/Cesium/Assets/Textures/maki/tennis.png new file mode 100644 index 000000000..6cb632054 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/tennis.png differ diff --git a/public/Cesium/Assets/Textures/maki/theatre.png b/public/Cesium/Assets/Textures/maki/theatre.png new file mode 100644 index 000000000..772c96e4e Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/theatre.png differ diff --git a/public/Cesium/Assets/Textures/maki/toilets.png b/public/Cesium/Assets/Textures/maki/toilets.png new file mode 100644 index 000000000..e87cf19c0 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/toilets.png differ diff --git a/public/Cesium/Assets/Textures/maki/town-hall.png b/public/Cesium/Assets/Textures/maki/town-hall.png new file mode 100644 index 000000000..1af5c7ce4 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/town-hall.png differ diff --git a/public/Cesium/Assets/Textures/maki/town.png b/public/Cesium/Assets/Textures/maki/town.png new file mode 100644 index 000000000..416616951 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/town.png differ diff --git a/public/Cesium/Assets/Textures/maki/triangle-stroked.png b/public/Cesium/Assets/Textures/maki/triangle-stroked.png new file mode 100644 index 000000000..131c7d94c Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/triangle-stroked.png differ diff --git a/public/Cesium/Assets/Textures/maki/triangle.png b/public/Cesium/Assets/Textures/maki/triangle.png new file mode 100644 index 000000000..d9c47f421 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/triangle.png differ diff --git a/public/Cesium/Assets/Textures/maki/village.png b/public/Cesium/Assets/Textures/maki/village.png new file mode 100644 index 000000000..2650af502 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/village.png differ diff --git a/public/Cesium/Assets/Textures/maki/warehouse.png b/public/Cesium/Assets/Textures/maki/warehouse.png new file mode 100644 index 000000000..910f1e4c9 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/warehouse.png differ diff --git a/public/Cesium/Assets/Textures/maki/waste-basket.png b/public/Cesium/Assets/Textures/maki/waste-basket.png new file mode 100644 index 000000000..a71f9e4d7 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/waste-basket.png differ diff --git a/public/Cesium/Assets/Textures/maki/water.png b/public/Cesium/Assets/Textures/maki/water.png new file mode 100644 index 000000000..159a557de Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/water.png differ diff --git a/public/Cesium/Assets/Textures/maki/wetland.png b/public/Cesium/Assets/Textures/maki/wetland.png new file mode 100644 index 000000000..1e8dec832 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/wetland.png differ diff --git a/public/Cesium/Assets/Textures/maki/zoo.png b/public/Cesium/Assets/Textures/maki/zoo.png new file mode 100644 index 000000000..480229993 Binary files /dev/null and b/public/Cesium/Assets/Textures/maki/zoo.png differ diff --git a/public/Cesium/Assets/Textures/moonSmall.jpg b/public/Cesium/Assets/Textures/moonSmall.jpg new file mode 100644 index 000000000..47f52522e Binary files /dev/null and b/public/Cesium/Assets/Textures/moonSmall.jpg differ diff --git a/public/Cesium/Assets/Textures/pin.svg b/public/Cesium/Assets/Textures/pin.svg new file mode 100644 index 000000000..7892c3682 --- /dev/null +++ b/public/Cesium/Assets/Textures/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/Cesium/Assets/Textures/waterNormals.jpg b/public/Cesium/Assets/Textures/waterNormals.jpg new file mode 100644 index 000000000..eb1baa2d6 Binary files /dev/null and b/public/Cesium/Assets/Textures/waterNormals.jpg differ diff --git a/public/Cesium/Assets/Textures/waterNormalsSmall.jpg b/public/Cesium/Assets/Textures/waterNormalsSmall.jpg new file mode 100644 index 000000000..57b19d8f4 Binary files /dev/null and b/public/Cesium/Assets/Textures/waterNormalsSmall.jpg differ diff --git a/public/Cesium/Assets/approximateTerrainHeights.json b/public/Cesium/Assets/approximateTerrainHeights.json new file mode 100644 index 000000000..259b1cbb5 --- /dev/null +++ b/public/Cesium/Assets/approximateTerrainHeights.json @@ -0,0 +1 @@ +{"6-0-0":[-60.9,1359.39],"6-0-1":[-734.16,2871.77],"6-0-2":[-860.34,14.2],"6-0-3":[-820.07,8.89],"6-0-4":[-822.21,6.8],"6-0-5":[-1287.68,4.22],"6-0-6":[-3806.44,996.64],"6-0-7":[-4083.09,1473.8],"6-0-8":[-4254.47,1405.42],"6-0-9":[-4909.7,9.42],"6-0-10":[-5356.65,10.41],"6-0-11":[-5779.14,9.42],"6-0-12":[-5680.2,10.72],"6-0-13":[-5633.18,1797.13],"6-0-14":[-5473.11,3.24],"6-0-15":[-5073.82,0.06],"6-0-16":[-3112.78,-5.62],"6-0-17":[-4278.61,-10.79],"6-0-18":[-5776.01,-11.56],"6-0-19":[-8664.64,-9.29],"6-0-20":[-10108.73,43.72],"6-0-21":[-6315.74,480.3],"6-0-22":[-3138.45,-0.18],"6-0-23":[-3177.81,259.94],"6-0-24":[-4361.69,195.8],"6-0-25":[-4176.86,1120.83],"6-0-26":[-3604,1188.85],"6-0-27":[-4874.82,377.59],"6-0-28":[-5555.91,212.64],"6-0-29":[-6808.91,32.43],"6-0-30":[-6537.63,36.44],"6-0-31":[-5876.58,41.7],"6-0-32":[-6002.84,43.91],"6-0-33":[-6383.26,48.69],"6-0-34":[-6458.42,56.5],"6-0-35":[-6608.86,79],"6-0-36":[-6499.38,95.12],"6-0-37":[-6382.42,1242.86],"6-0-38":[-5476.07,1197.83],"6-0-39":[-6577.17,149.88],"6-0-40":[-5871.43,105.09],"6-0-41":[-5691.18,101.97],"6-0-42":[-6084.14,550.11],"6-0-43":[-6456.25,92.57],"6-0-44":[-5403.21,77.99],"6-0-45":[-7722.74,46.63],"6-0-46":[-8051.96,43.07],"6-0-47":[-7228.07,29.35],"6-0-48":[-6696.32,6.49],"6-0-49":[-7347.5,-4.52],"6-0-50":[-5663.37,1731.13],"6-0-51":[-4025.96,-29.46],"6-0-52":[-4181.98,-37.9],"6-0-53":[-3554.43,-44.45],"6-0-54":[-175.4,-32.99],"6-0-55":[-119.7,1412.43],"6-0-56":[-126.97,1474.79],"6-0-57":[-126.3,982.63],"6-0-58":[-1295.62,-59.46],"6-0-59":[-1696.92,-54.84],"6-0-60":[-2540.06,-48.64],"6-0-61":[-2969.81,258.8],"6-0-62":[-3982.53,2997.38],"6-0-63":[-4339.64,3098.17],"6-1-0":[-62.92,1400.78],"6-1-1":[-811.24,3723.38],"5-0-0":[-811.24,3723.38],"6-1-2":[-822.56,15.04],"6-1-3":[-767.63,8.36],"5-0-1":[-860.34,15.04],"6-1-4":[-730.48,6.83],"6-1-5":[-3128.49,4.83],"5-0-2":[-3128.49,6.83],"6-1-6":[-4134.79,343.9],"6-1-7":[-4441.09,308.3],"5-0-3":[-4441.09,1473.8],"6-1-8":[-4533.36,906.96],"6-1-9":[-4556.62,286.65],"5-0-4":[-4909.7,1405.42],"6-1-10":[-5768.3,14],"6-1-11":[-5899.35,14.18],"5-0-5":[-5899.35,14.18],"6-1-12":[-5651.2,10.46],"6-1-13":[-6362.61,1734.24],"5-0-6":[-6362.61,1797.13],"6-1-14":[-5667.12,6.52],"6-1-15":[-5396,1.31],"5-0-7":[-5667.12,6.52],"6-1-16":[-3687.33,294.62],"6-1-17":[-5765.96,-10],"5-0-8":[-5765.96,294.62],"6-1-18":[-5729.6,-12.15],"6-1-19":[-6079.81,-9.22],"5-0-9":[-8664.64,-9.22],"6-1-20":[-10076.36,-7.87],"6-1-21":[-9964.92,0.26],"5-0-10":[-10108.73,480.3],"6-1-22":[-9820.47,9.27],"6-1-23":[-10731.15,6.54],"5-0-11":[-10731.15,259.94],"6-1-24":[-8128.35,538.48],"6-1-25":[-3473,974.2],"5-0-12":[-8128.35,1120.83],"6-1-26":[-5852,229.74],"6-1-27":[-5790.22,521.25],"5-0-13":[-5852,1188.85],"6-1-28":[-5704.51,327.62],"6-1-29":[-6687.63,31.23],"5-0-14":[-6808.91,327.62],"6-1-30":[-6552.55,34.4],"6-1-31":[-6370.48,38.74],"5-0-15":[-6552.55,41.7],"6-1-32":[-5715.64,39.97],"6-1-33":[-5857.02,44.11],"5-0-16":[-6383.26,48.69],"6-1-34":[-6145.81,49.53],"6-1-35":[-6715.64,65.95],"5-0-17":[-6715.64,79],"6-1-36":[-5845.01,188.59],"6-1-37":[-5976.36,262.29],"5-0-18":[-6499.38,1242.86],"6-1-38":[-5615.55,1074.21],"6-1-39":[-5961.75,561.48],"5-0-19":[-6577.17,1197.83],"6-1-40":[-5749.3,105.17],"6-1-41":[-5646.26,99.7],"5-0-20":[-5871.43,105.17],"6-1-42":[-6209.24,82.54],"6-1-43":[-6165.22,61.85],"5-0-21":[-6456.25,550.11],"6-1-44":[-6248.43,55.81],"6-1-45":[-7562.16,46.46],"5-0-22":[-7722.74,77.99],"6-1-46":[-6645.44,36.12],"6-1-47":[-7451.64,306.25],"5-0-23":[-8051.96,306.25],"6-1-48":[-6155.38,5.19],"6-1-49":[-7337.43,-11.13],"5-0-24":[-7347.5,6.49],"6-1-50":[-7328.11,1663.23],"6-1-51":[-4298.74,-29.65],"5-0-25":[-7328.11,1731.13],"6-1-52":[-3730.44,-37.51],"6-1-53":[-191.66,-43.07],"5-0-26":[-4181.98,-37.51],"6-1-54":[-117.87,309.64],"6-1-55":[-120.92,886.84],"5-0-27":[-175.4,1412.43],"6-1-56":[-127.84,338.3],"6-1-57":[-130.41,309.89],"5-0-28":[-130.41,1474.79],"6-1-58":[-2110.87,-59.59],"6-1-59":[-2239.39,-55.12],"5-0-29":[-2239.39,-54.84],"6-1-60":[-3264.35,-49.4],"6-1-61":[-3093.55,-11.15],"5-0-30":[-3264.35,258.8],"6-1-62":[-4063.46,3443.81],"6-1-63":[-4241.6,3102.34],"5-0-31":[-4339.64,3443.81],"6-2-0":[-65.96,1535.56],"6-2-1":[-726.95,3893.49],"6-2-2":[-822.56,15.73],"6-2-3":[-756.52,7.2],"6-2-4":[-976.58,5.79],"6-2-5":[-3873.63,5.62],"6-2-6":[-4273.11,2.52],"6-2-7":[-4730.1,3.57],"6-2-8":[-4275.1,1107.58],"6-2-9":[-4203.77,935.49],"6-2-10":[-5335.51,447.82],"6-2-11":[-5754.56,22.33],"6-2-12":[-5580.99,15.33],"6-2-13":[-6324.53,1546.34],"6-2-14":[-5877.47,10.11],"6-2-15":[-5605.22,3.51],"6-2-16":[-5451.88,-3.75],"6-2-17":[-5191.5,-8.48],"6-2-18":[-5888.86,-11.53],"6-2-19":[-6170.07,-11.45],"6-2-20":[-6231.35,-7.64],"6-2-21":[-6591.66,-2.94],"6-2-22":[-6564.98,22.84],"6-2-23":[-9845.18,13.16],"6-2-24":[-9880.17,66.19],"6-2-25":[-9681.78,234.26],"6-2-26":[-9135.58,489.1],"6-2-27":[-5127.54,1851.33],"6-2-28":[-5847.04,276.4],"6-2-29":[-6984.98,26.06],"6-2-30":[-6587.38,259.45],"6-2-31":[-6810.43,34.73],"6-2-32":[-5944.71,36.73],"6-2-33":[-6196.39,38.35],"6-2-34":[-6274.62,45.33],"6-2-35":[-6655.12,56.51],"6-2-36":[-6233.79,1897.33],"6-2-37":[-6086.2,602.11],"6-2-38":[-5770.59,258.3],"6-2-39":[-5644.12,87.93],"6-2-40":[-5280.45,68.5],"6-2-41":[-5640.3,90.18],"6-2-42":[-5794.61,69.11],"6-2-43":[-6212.25,60.23],"6-2-44":[-6473.07,53.69],"6-2-45":[-6649.88,38.48],"6-2-46":[-6137.71,25.76],"6-2-47":[-7286.95,16.06],"6-2-48":[-6428.91,-1.78],"6-2-49":[-7302.54,-12.47],"6-2-50":[-7770.99,1478.35],"6-2-51":[-3880.57,-28.99],"6-2-52":[-3448.8,-36.15],"6-2-53":[-178.92,439.82],"6-2-54":[-123.47,902.48],"6-2-55":[-118.16,1085.57],"6-2-56":[-127.84,-21.84],"6-2-57":[-132.46,-19.72],"6-2-58":[-2110.87,-59.33],"6-2-59":[-2528.11,-55.1],"6-2-60":[-3347.91,-49.58],"6-2-61":[-3384.08,-43.95],"6-2-62":[-3950.67,3904.3],"6-2-63":[-4226.49,3104.92],"6-3-0":[-67.96,1730.59],"6-3-1":[-816.29,4033.51],"5-1-0":[-816.29,4033.51],"6-3-2":[-811.11,16.58],"6-3-3":[-756.52,6.48],"5-1-1":[-822.56,16.58],"4-0-0":[-860.34,4033.51],"6-3-4":[-1287.47,6.76],"6-3-5":[-4053.9,6.63],"5-1-2":[-4053.9,6.76],"6-3-6":[-4347.97,3.03],"6-3-7":[-4616.06,2.79],"5-1-3":[-4730.1,3.57],"4-0-1":[-4730.1,1473.8],"6-3-8":[-4631.95,912.84],"6-3-9":[-3872.37,618.8],"5-1-4":[-4631.95,1107.58],"6-3-10":[-5400.71,21.82],"6-3-11":[-5589.06,311.37],"5-1-5":[-5754.56,447.82],"4-0-2":[-5899.35,1405.42],"6-3-12":[-5676.31,24.46],"6-3-13":[-5899.59,1745.85],"5-1-6":[-6324.53,1745.85],"6-3-14":[-5693.6,13.6],"6-3-15":[-6424.28,5.28],"5-1-7":[-6424.28,13.6],"4-0-3":[-6424.28,1797.13],"6-3-16":[-5503.34,-3.16],"6-3-17":[-5293.32,-8.29],"5-1-8":[-5503.34,-3.16],"6-3-18":[-5706.05,-10.93],"6-3-19":[-5968.6,-12.17],"5-1-9":[-6170.07,-10.93],"4-0-4":[-8664.64,294.62],"6-3-20":[-6353.54,-7.64],"6-3-21":[-6004.34,0.47],"5-1-10":[-6591.66,0.47],"6-3-22":[-6626.4,23.06],"6-3-23":[-7232.28,22.37],"5-1-11":[-9845.18,23.06],"4-0-5":[-10731.15,480.3],"6-3-24":[-6517.94,19.36],"6-3-25":[-5787.28,113.77],"5-1-12":[-9880.17,234.26],"6-3-26":[-5603.42,996.87],"6-3-27":[-5500.68,711.38],"5-1-13":[-9135.58,1851.33],"4-0-6":[-9880.17,1851.33],"6-3-28":[-6128.57,217.04],"6-3-29":[-5976.44,24.86],"5-1-14":[-6984.98,276.4],"6-3-30":[-6431.75,177.46],"6-3-31":[-7363.73,30.64],"5-1-15":[-7363.73,259.45],"4-0-7":[-7363.73,327.62],"6-3-32":[-5957,33.87],"6-3-33":[-6180.13,35.79],"5-1-16":[-6196.39,38.35],"6-3-34":[-6378.4,41.34],"6-3-35":[-5963.3,51.07],"5-1-17":[-6655.12,56.51],"4-0-8":[-6715.64,79],"6-3-36":[-6145.95,771.39],"6-3-37":[-6134.23,997.06],"5-1-18":[-6233.79,1897.33],"6-3-38":[-5498.8,125.79],"6-3-39":[-5122.04,58.96],"5-1-19":[-5770.59,258.3],"4-0-9":[-6577.17,1897.33],"6-3-40":[-5350.19,59.21],"6-3-41":[-5359.87,68.85],"5-1-20":[-5640.3,90.18],"6-3-42":[-5855.5,55.57],"6-3-43":[-6391.29,45.14],"5-1-21":[-6391.29,69.11],"4-0-10":[-6456.25,550.11],"6-3-44":[-6435.56,42.37],"6-3-45":[-6707.23,30.69],"5-1-22":[-6707.23,53.69],"6-3-46":[-6686.73,18.1],"6-3-47":[-7092.52,6.67],"5-1-23":[-7286.95,25.76],"4-0-11":[-8051.96,306.25],"6-3-48":[-6953.08,-4.53],"6-3-49":[-5732.35,-13.01],"5-1-24":[-7302.54,-1.78],"6-3-50":[-7284.14,1619.84],"6-3-51":[-3483.9,-27.95],"5-1-25":[-7770.99,1619.84],"4-0-12":[-7770.99,1731.13],"6-3-52":[-2236.21,269.38],"6-3-53":[-158.69,-15.42],"5-1-26":[-3448.8,439.82],"6-3-54":[-99.02,616.8],"6-3-55":[-114.54,911.84],"5-1-27":[-123.47,1085.57],"4-0-13":[-4181.98,1412.43],"6-3-56":[-126.73,-22.99],"6-3-57":[-132.79,-17.75],"5-1-28":[-132.79,-17.75],"6-3-58":[-1869.44,-59.46],"6-3-59":[-2920.48,-55.06],"5-1-29":[-2920.48,-55.06],"4-0-14":[-2920.48,1474.79],"6-3-60":[-3346.96,-50.05],"6-3-61":[-3572.53,-43.58],"5-1-30":[-3572.53,-43.58],"6-3-62":[-3949.75,3970.41],"6-3-63":[-4299.54,3106.07],"5-1-31":[-4299.54,3970.41],"4-0-15":[-4339.64,3970.41],"6-4-0":[-67.96,1783.47],"6-4-1":[-1161.5,3926.7],"6-4-2":[-828.82,17.11],"6-4-3":[-704.94,7.09],"6-4-4":[-1407.45,8.01],"6-4-5":[-4181.68,6.22],"6-4-6":[-4383.79,2.41],"6-4-7":[-4623.83,611.05],"6-4-8":[-4397.23,1101.35],"6-4-9":[-3605.91,428.48],"6-4-10":[-5268.98,653.36],"6-4-11":[-5379.79,27.57],"6-4-12":[-5644.48,1825.97],"6-4-13":[-5659.92,2084.32],"6-4-14":[-5581.4,18.16],"6-4-15":[-6069.3,6.15],"6-4-16":[-5732.91,-2.51],"6-4-17":[-5561.06,-7.81],"6-4-18":[-5467.07,-10.93],"6-4-19":[-6445.04,-11.62],"6-4-20":[-6164.47,-7.94],"6-4-21":[-5852.56,0.97],"6-4-22":[-6692.69,17.55],"6-4-23":[-6202.21,28.15],"6-4-24":[-6698.19,19.59],"6-4-25":[-9080.84,56.94],"6-4-26":[-6082.57,22.24],"6-4-27":[-5919.39,25.71],"6-4-28":[-5822.56,27.19],"6-4-29":[-6220.26,27.84],"6-4-30":[-6622.88,28.27],"6-4-31":[-8273.64,29.58],"6-4-32":[-6224.53,32.89],"6-4-33":[-6221.95,34.86],"6-4-34":[-5718.7,35.6],"6-4-35":[-5595.88,39.9],"6-4-36":[-5808.46,43.72],"6-4-37":[-5899.51,45.71],"6-4-38":[-6912.49,48.56],"6-4-39":[-6145.04,45.88],"6-4-40":[-5619.26,863.24],"6-4-41":[-5186.7,42.29],"6-4-42":[-6049.87,42.26],"6-4-43":[-6355.98,37.32],"6-4-44":[-6622.78,32.28],"6-4-45":[-6960.65,25.33],"6-4-46":[-6793.71,17.65],"6-4-47":[-6566.43,1.08],"6-4-48":[-6377.69,-7.42],"6-4-49":[-5865.62,-13.57],"6-4-50":[-7273.09,1965.32],"6-4-51":[-5208.92,1802.98],"6-4-52":[-514.98,6.05],"6-4-53":[-481.77,671.37],"6-4-54":[-97.35,455.48],"6-4-55":[-113.49,1067.35],"6-4-56":[-126.75,528.03],"6-4-57":[-131.59,-27.82],"6-4-58":[-546.1,-58.9],"6-4-59":[-2622.06,-55.06],"6-4-60":[-3507.79,-49.97],"6-4-61":[-3821.97,-43.61],"6-4-62":[-3936.9,3807.76],"6-4-63":[-4312.53,3106.13],"6-5-0":[-65.96,1809.17],"6-5-1":[-1123.74,3611.78],"5-2-0":[-1161.5,3926.7],"6-5-2":[-783.29,17.66],"6-5-3":[-769.58,7.26],"5-2-1":[-828.82,17.66],"6-5-4":[-2373.31,8],"6-5-5":[-4237.37,1.64],"5-2-2":[-4237.37,8.01],"6-5-6":[-4523.95,0.57],"6-5-7":[-4449.41,977.81],"5-2-3":[-4623.83,977.81],"6-5-8":[-4776.71,1285.63],"6-5-9":[-3809.51,689.98],"5-2-4":[-4776.71,1285.63],"6-5-10":[-5160.02,574.41],"6-5-11":[-5484.51,29.76],"5-2-5":[-5484.51,653.36],"6-5-12":[-5463.02,2863.96],"6-5-13":[-5510.9,25.08],"5-2-6":[-5659.92,2863.96],"6-5-14":[-5633.47,19.59],"6-5-15":[-6371.35,5.94],"5-2-7":[-6371.35,19.59],"6-5-16":[-5828.33,-2.51],"6-5-17":[-6421.22,-7.99],"5-2-8":[-6421.22,-2.51],"6-5-18":[-5982.99,-11.55],"6-5-19":[-6565.05,-11.81],"5-2-9":[-6565.05,-10.93],"6-5-20":[-6784.16,-7.94],"6-5-21":[-6028.23,-0.19],"5-2-10":[-6784.16,0.97],"6-5-22":[-6399.53,8.23],"6-5-23":[-6135.89,68.18],"5-2-11":[-6692.69,68.18],"6-5-24":[-6055.38,18.67],"6-5-25":[-5836.09,998.66],"5-2-12":[-9080.84,998.66],"6-5-26":[-6060.91,20.47],"6-5-27":[-5996.07,196.74],"5-2-13":[-6082.57,196.74],"6-5-28":[-5155.46,84.53],"6-5-29":[-6004.46,30.66],"5-2-14":[-6220.26,84.53],"6-5-30":[-5896.13,32.3],"6-5-31":[-6776.17,32.65],"5-2-15":[-8273.64,32.65],"6-5-32":[-5810.52,32.3],"6-5-33":[-5562.23,34.31],"5-2-16":[-6224.53,34.86],"6-5-34":[-5388.87,33.96],"6-5-35":[-5395.61,37.54],"5-2-17":[-5718.7,39.9],"6-5-36":[-5752.23,37.44],"6-5-37":[-5924.58,31.1],"5-2-18":[-5924.58,45.71],"6-5-38":[-6440.59,38.62],"6-5-39":[-5463.5,31.7],"5-2-19":[-6912.49,48.56],"6-5-40":[-5484.19,50.2],"6-5-41":[-5747.8,29.27],"5-2-20":[-5747.8,863.24],"6-5-42":[-5919.79,28.59],"6-5-43":[-6218.64,25.16],"5-2-21":[-6355.98,42.26],"6-5-44":[-7345.46,23.39],"6-5-45":[-6835.24,19.09],"5-2-22":[-7345.46,32.28],"6-5-46":[-6802.21,10.74],"6-5-47":[-5979.18,-0.35],"5-2-23":[-6802.21,17.65],"6-5-48":[-5777.25,-8.28],"6-5-49":[-5982.59,-13.41],"5-2-24":[-6377.69,-7.42],"6-5-50":[-7131.76,-19.83],"6-5-51":[-4248.36,2750.95],"5-2-25":[-7273.09,2750.95],"6-5-52":[-82.49,0.95],"6-5-53":[-85.9,583.42],"5-2-26":[-514.98,671.37],"6-5-54":[-96.28,649.97],"6-5-55":[-112.03,1302.63],"5-2-27":[-113.49,1302.63],"6-5-56":[-123.43,899.72],"6-5-57":[-130.93,-28.8],"5-2-28":[-131.59,899.72],"6-5-58":[-2065.53,-59.02],"6-5-59":[-2302.29,-54.72],"5-2-29":[-2622.06,-54.72],"6-5-60":[-3827.92,146.66],"6-5-61":[-3883.39,-43.74],"5-2-30":[-3883.39,146.66],"6-5-62":[-4110.64,3579.75],"6-5-63":[-4229.45,3100.28],"5-2-31":[-4312.53,3807.76],"6-6-0":[-94.11,1778.04],"6-6-1":[-1591.32,2998.88],"6-6-2":[-746.81,17.98],"6-6-3":[-770.17,6.62],"6-6-4":[-3154.74,6.62],"6-6-5":[-4196.81,0.42],"6-6-6":[-4609.89,37.03],"6-6-7":[-4642.27,1376.89],"6-6-8":[-4626.96,982.62],"6-6-9":[-4855.42,985.82],"6-6-10":[-5061.5,1234.98],"6-6-11":[-4882.7,705.14],"6-6-12":[-5664.91,2536.32],"6-6-13":[-5500.81,22.83],"6-6-14":[-5641.77,19.52],"6-6-15":[-6089.63,5.64],"6-6-16":[-6504.35,-3.61],"6-6-17":[-6018.21,-9.15],"6-6-18":[-5722.93,-12.33],"6-6-19":[-6011.9,-12.54],"6-6-20":[-6422.91,-8.27],"6-6-21":[-6422.91,-1.95],"6-6-22":[-6254.61,7.14],"6-6-23":[-5852.12,190.01],"6-6-24":[-5518.96,138.47],"6-6-25":[-5674.11,119.03],"6-6-26":[-6452.43,16.51],"6-6-27":[-5818.55,191.73],"6-6-28":[-5208.22,135.96],"6-6-29":[-6149.2,51.55],"6-6-30":[-6208.7,50.16],"6-6-31":[-5562.63,33.27],"6-6-32":[-5937.47,31.91],"6-6-33":[-5302.58,272.18],"6-6-34":[-5325.41,52.97],"6-6-35":[-5599.08,41.94],"6-6-36":[-6146.87,29.88],"6-6-37":[-6482.14,25.29],"6-6-38":[-6038.67,32.55],"6-6-39":[-5338.91,25.04],"6-6-40":[-5281.24,46.05],"6-6-41":[-5779.94,21.25],"6-6-42":[-6126.98,21.21],"6-6-43":[-6173.19,20.07],"6-6-44":[-6250.7,16.55],"6-6-45":[-7523.68,12.64],"6-6-46":[-6434.49,7.66],"6-6-47":[-5854.24,-0.23],"6-6-48":[-5883.17,-8.01],"6-6-49":[-5303.84,-13.39],"6-6-50":[-6978.57,-19.08],"6-6-51":[-6793.58,2398.31],"6-6-52":[-80.36,612.17],"6-6-53":[-89.66,1323.98],"6-6-54":[-95.47,955.8],"6-6-55":[-110.06,986.95],"6-6-56":[-123.5,1457.88],"6-6-57":[-267.02,37.04],"6-6-58":[-2483.25,-62.06],"6-6-59":[-2735.7,-53.84],"6-6-60":[-3837.89,382.35],"6-6-61":[-3859.19,-36.44],"6-6-62":[-4111.64,3110.85],"6-6-63":[-4265.4,3090.17],"6-7-0":[-114.12,1993.53],"6-7-1":[-1659.34,3802.26],"5-3-0":[-1659.34,3802.26],"6-7-2":[-726.96,18.02],"6-7-3":[-856.88,4.75],"5-3-1":[-856.88,18.02],"4-1-0":[-1659.34,3926.7],"6-7-4":[-3515.76,174.18],"6-7-5":[-4316.77,-0.69],"5-3-2":[-4316.77,174.18],"6-7-6":[-4525.93,40.51],"6-7-7":[-4826.23,1489.28],"5-3-3":[-4826.23,1489.28],"4-1-1":[-4826.23,1489.28],"3-0-0":[-4826.23,4033.51],"6-7-8":[-4705.16,1063.92],"6-7-9":[-4508.79,1104.57],"5-3-4":[-4855.42,1104.57],"6-7-10":[-4405.97,1599.96],"6-7-11":[-4732.4,1740.57],"5-3-5":[-5061.5,1740.57],"4-1-2":[-5484.51,1740.57],"6-7-12":[-5035.8,2512.65],"6-7-13":[-6007.55,22.76],"5-3-6":[-6007.55,2536.32],"6-7-14":[-5655.69,18.21],"6-7-15":[-5490.55,3.05],"5-3-7":[-6089.63,19.52],"4-1-3":[-6371.35,2863.96],"3-0-1":[-6424.28,2863.96],"6-7-16":[-5742.76,-4.09],"6-7-17":[-5608.7,-10.07],"5-3-8":[-6504.35,-3.61],"6-7-18":[-5790.02,-13.47],"6-7-19":[-5942.52,-13.83],"5-3-9":[-6011.9,-12.33],"4-1-4":[-6565.05,-2.51],"6-7-20":[-6122.28,-10],"6-7-21":[-5983.9,-3.54],"5-3-10":[-6422.91,-1.95],"6-7-22":[-5652.19,4.69],"6-7-23":[-5471.5,14.6],"5-3-11":[-6254.61,190.01],"4-1-5":[-6784.16,190.01],"3-0-2":[-10731.15,480.3],"6-7-24":[-5211.11,1613.09],"6-7-25":[-10751.44,366.35],"5-3-12":[-10751.44,1613.09],"6-7-26":[-5776.41,11],"6-7-27":[-6202.43,17.46],"5-3-13":[-6452.43,191.73],"4-1-6":[-10751.44,1613.09],"6-7-28":[-6652.2,1903.24],"6-7-29":[-6197.55,32.99],"5-3-14":[-6652.2,1903.24],"6-7-30":[-5754.01,44.95],"6-7-31":[-5455.55,41.99],"5-3-15":[-6208.7,50.16],"4-1-7":[-8273.64,1903.24],"3-0-3":[-10751.44,1903.24],"6-7-32":[-5343.6,107.13],"6-7-33":[-4698.31,110.78],"5-3-16":[-5937.47,272.18],"6-7-34":[-5062.03,27.02],"6-7-35":[-5630.37,36.94],"5-3-17":[-5630.37,52.97],"4-1-8":[-6224.53,272.18],"6-7-36":[-6164.69,22.36],"6-7-37":[-5971.41,18.93],"5-3-18":[-6482.14,29.88],"6-7-38":[-5951.46,124.3],"6-7-39":[-4961.01,1612.94],"5-3-19":[-6038.67,1612.94],"4-1-9":[-6912.49,1612.94],"3-0-4":[-6912.49,1897.33],"6-7-40":[-6841.68,19.09],"6-7-41":[-6117.84,14.77],"5-3-20":[-6841.68,46.05],"6-7-42":[-6969.86,12.33],"6-7-43":[-6304.07,11.63],"5-3-21":[-6969.86,21.21],"4-1-10":[-6969.86,863.24],"6-7-44":[-6236.81,10.73],"6-7-45":[-6777.07,8.15],"5-3-22":[-7523.68,16.55],"6-7-46":[-5942.92,4.11],"6-7-47":[-6327.91,-2.7],"5-3-23":[-6434.49,7.66],"4-1-11":[-7523.68,32.28],"3-0-5":[-8051.96,863.24],"6-7-48":[-5660.04,-6.48],"6-7-49":[-5377.17,-13.72],"5-3-24":[-5883.17,-6.48],"6-7-50":[-6003.68,-19.18],"6-7-51":[-7476.07,2467.65],"5-3-25":[-7476.07,2467.65],"4-1-12":[-7476.07,2750.95],"6-7-52":[-294.64,1671.56],"6-7-53":[-81.45,1454.97],"5-3-26":[-294.64,1671.56],"6-7-54":[-93.97,1100.59],"6-7-55":[-109.85,1114.85],"5-3-27":[-110.06,1114.85],"4-1-13":[-514.98,1671.56],"3-0-6":[-7770.99,2750.95],"6-7-56":[-122.72,1462.27],"6-7-57":[-2671.74,44.62],"5-3-28":[-2671.74,1462.27],"6-7-58":[-3895.05,-62.74],"6-7-59":[-3863.74,340.29],"5-3-29":[-3895.05,340.29],"4-1-14":[-3895.05,1462.27],"6-7-60":[-3837.37,329.56],"6-7-61":[-3854.32,5.39],"5-3-30":[-3859.19,382.35],"6-7-62":[-3894.65,3872.33],"6-7-63":[-4253.4,3078.77],"5-3-31":[-4265.4,3872.33],"4-1-15":[-4312.53,3872.33],"3-0-7":[-4339.64,3970.41],"6-8-0":[-133.19,2418.18],"6-8-1":[-1497.67,3630.69],"6-8-2":[-725.49,17.9],"6-8-3":[-860.75,4.36],"6-8-4":[-3573.59,698.67],"6-8-5":[-4331.48,-1.15],"6-8-6":[-4503.3,46.22],"6-8-7":[-4850,2230.09],"6-8-8":[-4712.88,2322.75],"6-8-9":[-4566.51,1231.31],"6-8-10":[-4355.63,1286.11],"6-8-11":[-4501.55,2365.52],"6-8-12":[-4660.11,340.69],"6-8-13":[-5966.24,23.37],"6-8-14":[-5682.56,15.39],"6-8-15":[-5231.54,0.65],"6-8-16":[-5608.95,-6.49],"6-8-17":[-5431.41,-11.47],"6-8-18":[-5762.65,-14.68],"6-8-19":[-5770,-15.15],"6-8-20":[-6098.74,-12.28],"6-8-21":[-5777.78,-7.16],"6-8-22":[-5728.06,1],"6-8-23":[-5391.55,7.31],"6-8-24":[-5807.69,4224.76],"6-8-25":[-5219.34,4199.19],"6-8-26":[-9303.29,93.4],"6-8-27":[-5769.45,13.28],"6-8-28":[-6531.38,20.81],"6-8-29":[-6133.11,227.93],"6-8-30":[-5459.96,441.43],"6-8-31":[-5482.43,39.3],"6-8-32":[-5063.73,105.79],"6-8-33":[-4939.68,33.65],"6-8-34":[-5381.15,29.43],"6-8-35":[-5847.02,18.21],"6-8-36":[-6404.77,15.57],"6-8-37":[-6114.51,18.43],"6-8-38":[-5763.74,4199.19],"6-8-39":[-6049.76,4224.65],"6-8-40":[-5216.39,11.5],"6-8-41":[-6204.87,8],"6-8-42":[-6753.63,5.43],"6-8-43":[-6639.76,5.22],"6-8-44":[-6145.45,4.54],"6-8-45":[-6369.08,2.59],"6-8-46":[-6009.01,1.16],"6-8-47":[-6003.66,-3.98],"6-8-48":[-5816.42,-6.48],"6-8-49":[-5499.75,-13.07],"6-8-50":[-5244.21,-18.94],"6-8-51":[-6022.65,229.61],"6-8-52":[-333.13,2312.51],"6-8-53":[-78.98,1236.1],"6-8-54":[-91.83,1205.31],"6-8-55":[-109.23,2269.75],"6-8-56":[-120.92,2154.43],"6-8-57":[-3744.55,41.81],"6-8-58":[-4090.38,-62.51],"6-8-59":[-3900.79,772.25],"6-8-60":[-3952.21,254.93],"6-8-61":[-3830.41,77.33],"6-8-62":[-3849.56,3797.09],"6-8-63":[-4233.39,3066.33],"6-9-0":[-133.33,2625.88],"6-9-1":[-1543.8,2875.32],"5-4-0":[-1543.8,3630.69],"6-9-2":[-750.6,17.45],"6-9-3":[-948.63,3.84],"5-4-1":[-948.63,17.9],"6-9-4":[-3712.36,882.14],"6-9-5":[-4355.95,-2.83],"5-4-2":[-4355.95,882.14],"6-9-6":[-4514.92,52.5],"6-9-7":[-4691.52,2249.45],"5-4-3":[-4850,2249.45],"6-9-8":[-4726.41,1957.92],"6-9-9":[-4515.51,3549.52],"5-4-4":[-4726.41,3549.52],"6-9-10":[-3523.27,3498.22],"6-9-11":[-3809.98,2301.61],"5-4-5":[-4501.55,3498.22],"6-9-12":[-5184.02,28.12],"6-9-13":[-5526.88,22.28],"5-4-6":[-5966.24,340.69],"6-9-14":[-5637.58,10.49],"6-9-15":[-6327.22,-1.66],"5-4-7":[-6327.22,15.39],"6-9-16":[-6383.59,-8.53],"6-9-17":[-5698.62,-13.07],"5-4-8":[-6383.59,-6.49],"6-9-18":[-5820.88,-16.27],"6-9-19":[-5844.73,-16.03],"5-4-9":[-5844.73,-14.68],"6-9-20":[-5753.67,-13.34],"6-9-21":[-5997.64,-9.72],"5-4-10":[-6098.74,-7.16],"6-9-22":[-6149.97,-3.51],"6-9-23":[-5554.04,244.22],"5-4-11":[-6149.97,244.22],"6-9-24":[-5257.94,211.35],"6-9-25":[-5050.78,8.27],"5-4-12":[-5807.69,4224.76],"6-9-26":[-6105.07,325.78],"6-9-27":[-5717.79,7.73],"5-4-13":[-9303.29,325.78],"6-9-28":[-6191.84,3407.2],"6-9-29":[-6202.92,25.09],"5-4-14":[-6531.38,3407.2],"6-9-30":[-6482.71,28.45],"6-9-31":[-5201.78,30.86],"5-4-15":[-6482.71,441.43],"6-9-32":[-5182.24,31.34],"6-9-33":[-5362.99,28.46],"5-4-16":[-5362.99,105.79],"6-9-34":[-5789.15,22.63],"6-9-35":[-5533.58,15.89],"5-4-17":[-5847.02,29.43],"6-9-36":[-6622.39,11.11],"6-9-37":[-6497.61,364.92],"5-4-18":[-6622.39,364.92],"6-9-38":[-5642.43,11.45],"6-9-39":[-5994.03,7.86],"5-4-19":[-6049.76,4224.65],"6-9-40":[-5922.92,87.14],"6-9-41":[-6445.99,2.06],"5-4-20":[-6445.99,87.14],"6-9-42":[-6639.94,0.4],"6-9-43":[-5881.49,0.66],"5-4-21":[-6753.63,5.43],"6-9-44":[-6260.21,0.22],"6-9-45":[-6305.46,-1.28],"5-4-22":[-6369.08,4.54],"6-9-46":[-6130.83,-1.34],"6-9-47":[-6127.19,-5.15],"5-4-23":[-6130.83,1.16],"6-9-48":[-6167.65,-8.73],"6-9-49":[-5701.32,-13.13],"5-4-24":[-6167.65,-6.48],"6-9-50":[-5808.68,-17.8],"6-9-51":[-5585.66,-22.53],"5-4-25":[-6022.65,229.61],"6-9-52":[-3994.2,2166.51],"6-9-53":[-554.63,3405.43],"5-4-26":[-3994.2,3405.43],"6-9-54":[-90.63,3271.87],"6-9-55":[-107.41,1943.8],"5-4-27":[-109.23,3271.87],"6-9-56":[-119.96,2151.83],"6-9-57":[-3879.83,50.13],"5-4-28":[-3879.83,2154.43],"6-9-58":[-3936.01,-58.13],"6-9-59":[-3930.23,1007.23],"5-4-29":[-4090.38,1007.23],"6-9-60":[-3961.21,462.57],"6-9-61":[-3866.34,462.57],"5-4-30":[-3961.21,462.57],"6-9-62":[-3785.04,2783.57],"6-9-63":[-4243.39,3039.73],"5-4-31":[-4243.39,3797.09],"6-10-0":[-168.35,2478.84],"6-10-1":[-1188.55,2541.84],"6-10-2":[-835.74,17.55],"6-10-3":[-1077.31,67.73],"6-10-4":[-1634.85,417.41],"6-10-5":[-4329.28,-2.83],"6-10-6":[-4516.89,31.96],"6-10-7":[-4681.61,2250.87],"6-10-8":[-5159.84,1714.22],"6-10-9":[-4538.5,6207.28],"6-10-10":[-3782.64,2318.12],"6-10-11":[-3750.01,380.19],"6-10-12":[-5228.22,24.81],"6-10-13":[-5185.35,18.21],"6-10-14":[-5553.54,6.41],"6-10-15":[-6417.51,-4.11],"6-10-16":[-5662.92,-11.54],"6-10-17":[-5774.67,-15.64],"6-10-18":[-6844.62,-19.38],"6-10-19":[-6254.77,-18.81],"6-10-20":[-6338.1,-14.67],"6-10-21":[-6350.66,-11.93],"6-10-22":[-5752.27,-8.91],"6-10-23":[-5626.96,337.29],"6-10-24":[-5190.17,300.87],"6-10-25":[-6327.94,1587.33],"6-10-26":[-4919.76,858.44],"6-10-27":[-5755.82,266.32],"6-10-28":[-5400.68,1458.3],"6-10-29":[-5831.18,19.96],"6-10-30":[-5587.29,24.2],"6-10-31":[-5535.76,28.1],"6-10-32":[-5166.66,27.88],"6-10-33":[-5404.48,27.31],"6-10-34":[-5750.11,20.7],"6-10-35":[-5655.89,29.22],"6-10-36":[-6415.07,34.33],"6-10-37":[-6463.93,982.44],"6-10-38":[-5795.6,1738.21],"6-10-39":[-6460.21,368.88],"6-10-40":[-6468.28,399.3],"6-10-41":[-7036.1,-0.9],"6-10-42":[-6744.24,-1.07],"6-10-43":[-6358.02,-1.37],"6-10-44":[-6201.6,-2.29],"6-10-45":[-6329.6,-3.92],"6-10-46":[-5996.93,-4.4],"6-10-47":[-5697.46,-6.94],"6-10-48":[-5653.13,-10.44],"6-10-49":[-5656,-13.58],"6-10-50":[-5893.86,-16.97],"6-10-51":[-5523.63,-20.99],"6-10-52":[-5381.5,346.13],"6-10-53":[-1809.46,2120.75],"6-10-54":[-88.65,6095.63],"6-10-55":[-106.09,1765.96],"6-10-56":[-116.67,2185.42],"6-10-57":[-3874.65,26.49],"6-10-58":[-3919.09,-55.65],"6-10-59":[-3927.57,883.88],"6-10-60":[-3907.83,570.37],"6-10-61":[-3613.14,549.47],"6-10-62":[-3644,2425.34],"6-10-63":[-4227.35,3008.67],"6-11-0":[-183.38,2377.6],"6-11-1":[-1234.31,3176.27],"5-5-0":[-1234.31,3176.27],"6-11-2":[-902.26,18.15],"6-11-3":[-1164.72,75.57],"5-5-1":[-1164.72,75.57],"4-2-0":[-1543.8,3630.69],"6-11-4":[-2094.06,663.6],"6-11-5":[-4260.3,-3.47],"5-5-2":[-4329.28,663.6],"6-11-6":[-4409.85,5.59],"6-11-7":[-4506.16,2337.17],"5-5-3":[-4681.61,2337.17],"4-2-1":[-4850,2337.17],"6-11-8":[-5196.88,1624.53],"6-11-9":[-4768.63,4180.16],"5-5-4":[-5196.88,6207.28],"6-11-10":[-4182.3,4014.2],"6-11-11":[-3864.66,27.09],"5-5-5":[-4182.3,4014.2],"4-2-2":[-5196.88,6207.28],"6-11-12":[-4863.31,20.02],"6-11-13":[-5098.5,12.89],"5-5-6":[-5228.22,24.81],"6-11-14":[-5577.52,1.04],"6-11-15":[-5517.12,-7.02],"5-5-7":[-6417.51,6.41],"4-2-3":[-6417.51,340.69],"6-11-16":[-5726.26,-14.25],"6-11-17":[-6014.63,-18.62],"5-5-8":[-6014.63,-11.54],"6-11-18":[-6047.97,-21.88],"6-11-19":[-5954.95,-21.95],"5-5-9":[-6844.62,-18.81],"4-2-4":[-6844.62,-6.49],"6-11-20":[-6376.27,-17.94],"6-11-21":[-5426.35,-14.48],"5-5-10":[-6376.27,-11.93],"6-11-22":[-5074.5,-12.52],"6-11-23":[-5623.64,309.11],"5-5-11":[-5752.27,337.29],"4-2-5":[-6376.27,337.29],"6-11-24":[-6007.69,-8.2],"6-11-25":[-4854.06,287.11],"5-5-12":[-6327.94,1587.33],"6-11-26":[-4603.51,322.84],"6-11-27":[-5478.68,40.87],"5-5-13":[-5755.82,858.44],"4-2-6":[-9303.29,4224.76],"6-11-28":[-6630.7,3.39],"6-11-29":[-5892.13,13.1],"5-5-14":[-6630.7,1458.3],"6-11-30":[-5587.29,18.24],"6-11-31":[-5106.24,23.18],"5-5-15":[-5587.29,28.1],"4-2-7":[-6630.7,3407.2],"6-11-32":[-5002.41,23.23],"6-11-33":[-5509.79,21.8],"5-5-16":[-5509.79,27.88],"6-11-34":[-5851.53,15.53],"6-11-35":[-5631.96,8.74],"5-5-17":[-5851.53,29.22],"4-2-8":[-5851.53,105.79],"6-11-36":[-6312.55,4.25],"6-11-37":[-6661.84,108.86],"5-5-18":[-6661.84,982.44],"6-11-38":[-6246.69,418.12],"6-11-39":[-6396.35,-1.41],"5-5-19":[-6460.21,1738.21],"4-2-9":[-6661.84,4224.65],"6-11-40":[-6560.2,394.12],"6-11-41":[-6052.54,-2.74],"5-5-20":[-7036.1,399.3],"6-11-42":[-6502.29,-2.09],"6-11-43":[-6219.92,-2.6],"5-5-21":[-6744.24,-1.07],"4-2-10":[-7036.1,399.3],"6-11-44":[-5862.36,-3.6],"6-11-45":[-6436.13,-5.6],"5-5-22":[-6436.13,-2.29],"6-11-46":[-5819.59,-7.76],"6-11-47":[-5495.45,-8.93],"5-5-23":[-5996.93,-4.4],"4-2-11":[-6436.13,4.54],"6-11-48":[-5200.05,-11.9],"6-11-49":[-8103.44,-13.59],"5-5-24":[-8103.44,-10.44],"6-11-50":[-5232.18,-16.5],"6-11-51":[-4750.88,-20.15],"5-5-25":[-5893.86,-16.5],"4-2-12":[-8103.44,229.61],"6-11-52":[-5077.5,-23.76],"6-11-53":[-2754.79,3834.03],"5-5-26":[-5381.5,3834.03],"6-11-54":[-86.21,3972.34],"6-11-55":[-103.18,1602.16],"5-5-27":[-106.09,6095.63],"4-2-13":[-5381.5,6095.63],"6-11-56":[-113.79,2293.15],"6-11-57":[-3765.29,6.83],"5-5-28":[-3874.65,2293.15],"6-11-58":[-3865.62,-30.17],"6-11-59":[-3941.99,896.34],"5-5-29":[-3941.99,896.34],"4-2-14":[-4090.38,2293.15],"6-11-60":[-3893.37,667.99],"6-11-61":[-3732.8,564.8],"5-5-30":[-3907.83,667.99],"6-11-62":[-3422.03,3379.23],"6-11-63":[-4222.37,2977.45],"5-5-31":[-4227.35,3379.23],"4-2-15":[-4243.39,3797.09],"6-12-0":[-181.36,1693.13],"6-12-1":[-1455.74,2871.83],"6-12-2":[-1098.55,18.51],"6-12-3":[-1119.23,2.56],"6-12-4":[-1551.27,1171.54],"6-12-5":[-4185.02,252.83],"6-12-6":[-4455.12,-1.46],"6-12-7":[-4548.47,2626.58],"6-12-8":[-4886.04,1971.14],"6-12-9":[-4860.51,4964.36],"6-12-10":[-4561.15,5003.13],"6-12-11":[-4330.54,17.77],"6-12-12":[-5941.24,17.44],"6-12-13":[-5681.57,8.08],"6-12-14":[-5679.46,-2.54],"6-12-15":[-5618.32,-10.05],"6-12-16":[-5733.88,-16.83],"6-12-17":[-6117.04,-21.69],"6-12-18":[-6699.21,-25],"6-12-19":[-6042.47,-24.8],"6-12-20":[-6163.38,-22.36],"6-12-21":[-5676.67,-17.53],"6-12-22":[-4728.02,419.05],"6-12-23":[-5762.93,154.67],"6-12-24":[-5637.54,138.75],"6-12-25":[-5061.96,265.8],"6-12-26":[-4719.59,549.53],"6-12-27":[-5417.45,-4.41],"6-12-28":[-5746,-0.37],"6-12-29":[-5483.02,6.6],"6-12-30":[-5099.46,13.43],"6-12-31":[-4938.09,18.86],"6-12-32":[-4792.79,19.08],"6-12-33":[-6222.37,16.44],"6-12-34":[-5876.68,12.4],"6-12-35":[-5719.46,3.06],"6-12-36":[-6252.33,-0.47],"6-12-37":[-6689.38,26.39],"6-12-38":[-6041.73,15.85],"6-12-39":[-6382.53,13.14],"6-12-40":[-6633.54,-5.04],"6-12-41":[-5606.01,367.1],"6-12-42":[-6254.81,-4.66],"6-12-43":[-6442.49,-5.49],"6-12-44":[-6251.77,-5.68],"6-12-45":[-5961.27,-7.48],"6-12-46":[-6225.81,-9.37],"6-12-47":[-5200.68,-11.32],"6-12-48":[-4973.03,-13.01],"6-12-49":[-4891.62,-15.16],"6-12-50":[-4935.48,-16.79],"6-12-51":[-4684.63,-19.15],"6-12-52":[-4852.85,-23.29],"6-12-53":[-4722.62,4901.79],"6-12-54":[-84.64,4907.93],"6-12-55":[-100.6,1849.36],"6-12-56":[-110.81,2580.94],"6-12-57":[-3674.95,-28.39],"6-12-58":[-3819.03,732.21],"6-12-59":[-3893.84,1118.71],"6-12-60":[-3872.09,697.82],"6-12-61":[-3706.18,547.44],"6-12-62":[-3461.9,3177.52],"6-12-63":[-4221.36,2958.4],"6-13-0":[-161.34,1474.13],"6-13-1":[-1652.61,2990.28],"5-6-0":[-1652.61,2990.28],"6-13-2":[-922.38,18.69],"6-13-3":[-1307.85,2.29],"5-6-1":[-1307.85,18.69],"6-13-4":[-1245.45,1086.26],"6-13-5":[-4159.76,828.09],"5-6-2":[-4185.02,1171.54],"6-13-6":[-4531.15,-1.51],"6-13-7":[-4629.72,2443.65],"5-6-3":[-4629.72,2626.58],"6-13-8":[-4866.08,1955.52],"6-13-9":[-4896.44,3305.19],"5-6-4":[-4896.44,4964.36],"6-13-10":[-4581.53,5501.18],"6-13-11":[-5943.29,16.19],"5-6-5":[-5943.29,5501.18],"6-13-12":[-6014.26,12.53],"6-13-13":[-5533.57,1.23],"5-6-6":[-6014.26,17.44],"6-13-14":[-5250.64,-5.03],"6-13-15":[-5500.84,-13.68],"5-6-7":[-5679.46,-2.54],"6-13-16":[-5716.49,-19.6],"6-13-17":[-6636.39,-24.29],"5-6-8":[-6636.39,-16.83],"6-13-18":[-6228.62,-29.09],"6-13-19":[-5856.69,-28.05],"5-6-9":[-6699.21,-24.8],"6-13-20":[-5910.84,-25.11],"6-13-21":[-5256.1,-21.57],"5-6-10":[-6163.38,-17.53],"6-13-22":[-4830.29,-19.25],"6-13-23":[-5393,-19.08],"5-6-11":[-5762.93,419.05],"6-13-24":[-5111.43,229.65],"6-13-25":[-4776.85,276.62],"5-6-12":[-5637.54,276.62],"6-13-26":[-4587.09,1606.36],"6-13-27":[-5913.51,-7.34],"5-6-13":[-5913.51,1606.36],"6-13-28":[-5787.05,27.02],"6-13-29":[-4722.33,528.03],"5-6-14":[-5787.05,528.03],"6-13-30":[-5229.34,5.15],"6-13-31":[-5127.76,10.05],"5-6-15":[-5229.34,18.86],"6-13-32":[-4776.14,10.97],"6-13-33":[-5127.13,9.15],"5-6-16":[-6222.37,19.08],"6-13-34":[-5659.07,574],"6-13-35":[-7447.7,3.2],"5-6-17":[-7447.7,574],"6-13-36":[-6016.23,-2.96],"6-13-37":[-6776.68,18.94],"5-6-18":[-6776.68,26.39],"6-13-38":[-5885.01,15.14],"6-13-39":[-6294.03,21.33],"5-6-19":[-6382.53,21.33],"6-13-40":[-6242.29,-7.97],"6-13-41":[-5471.92,-4.36],"5-6-20":[-6633.54,367.1],"6-13-42":[-5640.19,-4.92],"6-13-43":[-6405.01,-8.03],"5-6-21":[-6442.49,-4.66],"6-13-44":[-6316.29,-8.36],"6-13-45":[-6352.55,-9.22],"5-6-22":[-6352.55,-5.68],"6-13-46":[-6171.18,-10.62],"6-13-47":[-5055.96,-11.92],"5-6-23":[-6225.81,-9.37],"6-13-48":[-4727.1,-14.27],"6-13-49":[-6709.55,-15.88],"5-6-24":[-6709.55,-13.01],"6-13-50":[-4532.06,-16.79],"6-13-51":[-4206.32,-18.04],"5-6-25":[-4935.48,-16.79],"6-13-52":[-3930.24,-21.69],"6-13-53":[-3805.7,5374.27],"5-6-26":[-4852.85,5374.27],"6-13-54":[-82.17,3164.74],"6-13-55":[-96.84,1843.66],"5-6-27":[-100.6,4907.93],"6-13-56":[-192.46,2256.65],"6-13-57":[-3560.52,-45.32],"5-6-28":[-3674.95,2580.94],"6-13-58":[-3777.45,799.79],"6-13-59":[-3830.96,1415.24],"5-6-29":[-3893.84,1415.24],"6-13-60":[-3818.7,696.8],"6-13-61":[-3786.2,578.81],"5-6-30":[-3872.09,697.82],"6-13-62":[-3456.9,2807.42],"6-13-63":[-4223.36,2933.27],"5-6-31":[-4223.36,3177.52],"6-14-0":[-215.89,1760.1],"6-14-1":[-1678.19,3160.02],"6-14-2":[-1200.9,18.69],"6-14-3":[-1245.84,2.84],"6-14-4":[-1486.78,1054.84],"6-14-5":[-4124.23,874.8],"6-14-6":[-4464.26,-3.21],"6-14-7":[-4716.03,1629.08],"6-14-8":[-4779.66,2195.84],"6-14-9":[-5029.49,2352.25],"6-14-10":[-4887.53,5990.12],"6-14-11":[-5167.06,1250.79],"6-14-12":[-3998.63,5.47],"6-14-13":[-5641.75,-2.9],"6-14-14":[-5640.26,-9.51],"6-14-15":[-6063.37,-17],"6-14-16":[-6353.19,-23.13],"6-14-17":[-6412.37,-26.79],"6-14-18":[-5979.38,-32.26],"6-14-19":[-5645.82,-30.63],"6-14-20":[-5195.75,-28.02],"6-14-21":[-4903.61,-1.91],"6-14-22":[-4940.46,-23.49],"6-14-23":[-5190.71,-22.95],"6-14-24":[-4875.96,295.99],"6-14-25":[-4544.85,145.6],"6-14-26":[-4451.65,78.85],"6-14-27":[-4792.38,-11.82],"6-14-28":[-4507.28,1173.83],"6-14-29":[-4839.24,388.87],"6-14-30":[-4916.53,-0.54],"6-14-31":[-4887.14,3.14],"6-14-32":[-4975.78,4.38],"6-14-33":[-5142.66,4.04],"6-14-34":[-5322.02,444.87],"6-14-35":[-5384.02,1253.85],"6-14-36":[-6344.65,-4.2],"6-14-37":[-5851.42,11.81],"6-14-38":[-5795.76,12.56],"6-14-39":[-5701.16,29.28],"6-14-40":[-6003.76,-9.96],"6-14-41":[-5477.38,-8.25],"6-14-42":[-5257.35,-7.63],"6-14-43":[-6050.14,-8.79],"6-14-44":[-6456.24,-9.44],"6-14-45":[-6312.83,-9.8],"6-14-46":[-5960.56,-11.59],"6-14-47":[-4585.8,-13.34],"6-14-48":[-4683.62,-14.96],"6-14-49":[-4721.83,-16.64],"6-14-50":[-3984.97,-17.15],"6-14-51":[-3687.61,-17.84],"6-14-52":[-3668.18,1159.79],"6-14-53":[-434.8,5828.29],"6-14-54":[-81.47,2178.34],"6-14-55":[-94.24,2088.55],"6-14-56":[-557.25,1489.78],"6-14-57":[-3334.1,-50.32],"6-14-58":[-3731.79,1501.65],"6-14-59":[-3805.12,1730.64],"6-14-60":[-3800.65,752.21],"6-14-61":[-3796.21,587.99],"6-14-62":[-3065.97,3232.04],"6-14-63":[-4227.36,2914.46],"6-15-0":[-252.92,1750.21],"6-15-1":[-1586.85,3417.75],"5-7-0":[-1678.19,3417.75],"6-15-2":[-1307.4,18.62],"6-15-3":[-1291.03,3.57],"5-7-1":[-1307.4,18.69],"4-3-0":[-1678.19,3417.75],"6-15-4":[-1008.08,3235.77],"6-15-5":[-3901.52,1165.61],"5-7-2":[-4124.23,3235.77],"6-15-6":[-4460.99,-3.02],"6-15-7":[-4699.29,1677.33],"5-7-3":[-4716.03,1677.33],"4-3-1":[-4716.03,3235.77],"3-1-0":[-4850,3630.69],"6-15-8":[-5027.23,2201.64],"6-15-9":[-5359.93,2244.89],"5-7-4":[-5359.93,2352.25],"6-15-10":[-5092.31,3286.53],"6-15-11":[-4715.56,4338.49],"5-7-5":[-5167.06,5990.12],"4-3-2":[-5943.29,5990.12],"6-15-12":[-4457.58,0.26],"6-15-13":[-5147.09,-5.77],"5-7-6":[-5641.75,5.47],"6-15-14":[-5959.55,-12.56],"6-15-15":[-6660.79,-19.83],"5-7-7":[-6660.79,-9.51],"4-3-3":[-6660.79,17.44],"3-1-1":[-6660.79,6207.28],"2-0-0":[-6660.79,6207.28],"6-15-16":[-6324.33,-25.72],"6-15-17":[-6080.83,-29.35],"5-7-8":[-6412.37,-23.13],"6-15-18":[-5404.77,-34.5],"6-15-19":[-5340.82,-33.7],"5-7-9":[-5979.38,-30.63],"4-3-4":[-6699.21,-16.83],"6-15-20":[-5105.14,-31.19],"6-15-21":[-4617.63,-29.89],"5-7-10":[-5195.75,-1.91],"6-15-22":[-4638.21,-28.48],"6-15-23":[-4781.63,1449.55],"5-7-11":[-5190.71,1449.55],"4-3-5":[-6163.38,1449.55],"3-1-2":[-6844.62,1449.55],"6-15-24":[-4774.4,187.4],"6-15-25":[-4764.79,87.27],"5-7-12":[-4875.96,295.99],"6-15-26":[-4780.15,-19.12],"6-15-27":[-5089.12,-17.07],"5-7-13":[-5089.12,78.85],"4-3-6":[-5913.51,1606.36],"6-15-28":[-4769.36,-13.51],"6-15-29":[-4843.95,-9.36],"5-7-14":[-4843.95,1173.83],"6-15-30":[-4850.25,-5.14],"6-15-31":[-4785.05,-2.71],"5-7-15":[-4916.53,3.14],"4-3-7":[-5787.05,1173.83],"3-1-3":[-9303.29,4224.76],"2-0-1":[-10751.44,4224.76],"6-15-32":[-4660.98,-1.71],"6-15-33":[-5517.77,-1.49],"5-7-16":[-5517.77,4.38],"6-15-34":[-5355.58,-2.12],"6-15-35":[-5221.35,-2.93],"5-7-17":[-5384.02,1253.85],"4-3-8":[-7447.7,1253.85],"6-15-36":[-5945.39,-4.46],"6-15-37":[-5896.5,-7.9],"5-7-18":[-6344.65,11.81],"6-15-38":[-5714.69,7.98],"6-15-39":[-5642.41,16.82],"5-7-19":[-5795.76,29.28],"4-3-9":[-6776.68,29.28],"3-1-4":[-7447.7,4224.65],"6-15-40":[-5681.96,210.54],"6-15-41":[-5264.79,-11.38],"5-7-20":[-6003.76,210.54],"6-15-42":[-5490.76,-10.1],"6-15-43":[-6114.44,-10.22],"5-7-21":[-6114.44,-7.63],"4-3-10":[-6633.54,367.1],"6-15-44":[-5810.62,-10.28],"6-15-45":[-6078.66,-10.38],"5-7-22":[-6456.24,-9.44],"6-15-46":[-5516.56,-12.05],"6-15-47":[-5004.1,-13.68],"5-7-23":[-5960.56,-11.59],"4-3-11":[-6456.24,-5.68],"3-1-5":[-7036.1,399.3],"2-0-2":[-8051.96,4224.65],"6-15-48":[-4386.38,-15.28],"6-15-49":[-4351.89,-16.57],"5-7-24":[-4721.83,-14.96],"6-15-50":[-3798.21,-17.93],"6-15-51":[-3479.92,-17.17],"5-7-25":[-3984.97,-17.15],"4-3-12":[-6709.55,-13.01],"6-15-52":[-3159.54,4170.48],"6-15-53":[-822.27,3102.72],"5-7-26":[-3668.18,5828.29],"6-15-54":[-79.48,2084.36],"6-15-55":[-91.99,2173.62],"5-7-27":[-94.24,2178.34],"4-3-13":[-4852.85,5828.29],"3-1-6":[-8103.44,6095.63],"6-15-56":[-143.51,1622.37],"6-15-57":[-2992.58,-47.94],"5-7-28":[-3334.1,1622.37],"6-15-58":[-3641,1582.81],"6-15-59":[-3753.24,3280.76],"5-7-29":[-3805.12,3280.76],"4-3-14":[-3893.84,3280.76],"6-15-60":[-3755.03,1055.95],"6-15-61":[-3729.99,583.66],"5-7-30":[-3800.65,1055.95],"6-15-62":[-2999.82,3299.77],"6-15-63":[-4222.86,2899.4],"5-7-31":[-4227.36,3299.77],"4-3-15":[-4227.36,3299.77],"3-1-7":[-4243.39,3797.09],"2-0-3":[-8103.44,6095.63],"6-16-0":[-250.92,1810.14],"6-16-1":[-1292.23,3415.68],"6-16-2":[-1365.82,18.81],"6-16-3":[-1466.32,3.62],"6-16-4":[-1138.15,2724.76],"6-16-5":[-3589.89,2752.29],"6-16-6":[-4465.85,-2.92],"6-16-7":[-4699.29,358.63],"6-16-8":[-5027.84,2700.74],"6-16-9":[-5450.75,2379.96],"6-16-10":[-5052.16,2349.52],"6-16-11":[-4766.48,3089.83],"6-16-12":[-5372.47,1191.79],"6-16-13":[-5318.08,1099.24],"6-16-14":[-5414.76,-15.25],"6-16-15":[-6829.25,-21.82],"6-16-16":[-6240.03,-27.45],"6-16-17":[-5540.11,-31.05],"6-16-18":[-5487.51,-35.86],"6-16-19":[-5353.62,20.74],"6-16-20":[-5006.12,-34.53],"6-16-21":[-4672.99,-33.65],"6-16-22":[-4556.55,-33.08],"6-16-23":[-4527.94,2112.46],"6-16-24":[-4781.49,-31.17],"6-16-25":[-4721.21,-29.12],"6-16-26":[-4621.98,-25.12],"6-16-27":[-4958.22,-22.61],"6-16-28":[-4911.16,-18.47],"6-16-29":[-5018.64,-14.42],"6-16-30":[-5681.41,-9.88],"6-16-31":[-4890.89,-7.01],"6-16-32":[-4847.19,-5.38],"6-16-33":[-4875.66,-5.07],"6-16-34":[-5164.7,-4.9],"6-16-35":[-6115.42,-5.38],"6-16-36":[-5822.7,-6.96],"6-16-37":[-6357.23,-9.38],"6-16-38":[-5707.43,-10.64],"6-16-39":[-5588.39,-10.88],"6-16-40":[-5367.6,395.5],"6-16-41":[-5450.06,-12.58],"6-16-42":[-5481.79,-11.89],"6-16-43":[-5542.03,-11.48],"6-16-44":[-6548.04,-10.73],"6-16-45":[-5665.39,-11.64],"6-16-46":[-5185,-12.42],"6-16-47":[-4202.64,-13.83],"6-16-48":[-4574.57,-14.63],"6-16-49":[-5094.21,-15.29],"6-16-50":[-3625.99,971.36],"6-16-51":[-3183.7,1215.57],"6-16-52":[-870.18,2897.13],"6-16-53":[-67.1,2248.84],"6-16-54":[-78.95,2468.64],"6-16-55":[-88.41,2460.72],"6-16-56":[-94.87,332.64],"6-16-57":[-2771.85,-36.44],"6-16-58":[-3499.69,2780.28],"6-16-59":[-3699.81,3057.06],"6-16-60":[-3732.88,1251.61],"6-16-61":[-3718.56,729.54],"6-16-62":[-2843.18,3324.73],"6-16-63":[-4214.39,2887.59],"6-17-0":[-199.93,1456.34],"6-17-1":[-1768,3620.15],"5-8-0":[-1768,3620.15],"6-17-2":[-1475.26,19.47],"6-17-3":[-1402.55,3.4],"5-8-1":[-1475.26,19.47],"6-17-4":[-1180.97,1470.8],"6-17-5":[-2625.03,2591.07],"5-8-2":[-3589.89,2752.29],"6-17-6":[-4466.16,-3.57],"6-17-7":[-4549.31,450.81],"5-8-3":[-4699.29,450.81],"6-17-8":[-5008.75,2409.04],"6-17-9":[-5233.55,2941.77],"5-8-4":[-5450.75,2941.77],"6-17-10":[-5119.82,2300.19],"6-17-11":[-4890.47,3041.41],"5-8-5":[-5119.82,3089.83],"6-17-12":[-6658.81,2709.89],"6-17-13":[-4851.18,1110.77],"5-8-6":[-6658.81,2709.89],"6-17-14":[-5821.52,-16.38],"6-17-15":[-5674.88,-22.03],"5-8-7":[-6829.25,-15.25],"6-17-16":[-5851.22,-26.24],"6-17-17":[-5301.91,-30.62],"5-8-8":[-6240.03,-26.24],"6-17-18":[-5466.61,-36.84],"6-17-19":[-5104.24,-38.94],"5-8-9":[-5487.51,20.74],"6-17-20":[-4709.73,-38.14],"6-17-21":[-4666.22,-37.3],"5-8-10":[-5006.12,-33.65],"6-17-22":[-4992.97,-37.32],"6-17-23":[-4460.76,239.39],"5-8-11":[-4992.97,2112.46],"6-17-24":[-4823.9,-36.06],"6-17-25":[-5006.1,-33.99],"5-8-12":[-5006.1,-29.12],"6-17-26":[-4437.45,-31.19],"6-17-27":[-4609.57,-27.45],"5-8-13":[-4958.22,-22.61],"6-17-28":[-4932.8,-23.68],"6-17-29":[-5183.75,-18.06],"5-8-14":[-5183.75,-14.42],"6-17-30":[-5106.77,-13.82],"6-17-31":[-4902.56,-10.34],"5-8-15":[-5681.41,-7.01],"6-17-32":[-4738.9,-8.32],"6-17-33":[-4738.24,-7.81],"5-8-16":[-4875.66,-5.07],"6-17-34":[-5231.72,-7.81],"6-17-35":[-5297.05,-8],"5-8-17":[-6115.42,-4.9],"6-17-36":[-5635.03,-8.25],"6-17-37":[-5415.4,-9.44],"5-8-18":[-6357.23,-6.96],"6-17-38":[-6887.6,-10.07],"6-17-39":[-5911.14,-11.06],"5-8-19":[-6887.6,-10.07],"6-17-40":[-5556.7,315.4],"6-17-41":[-5276.82,-11.32],"5-8-20":[-5556.7,395.5],"6-17-42":[-5701.15,-12.55],"6-17-43":[-5607.75,-11.22],"5-8-21":[-5701.15,-11.22],"6-17-44":[-6593.4,-10.83],"6-17-45":[-5575.85,-11.63],"5-8-22":[-6593.4,-10.73],"6-17-46":[-4741.3,-12.29],"6-17-47":[-4894.74,-13.43],"5-8-23":[-5185,-12.29],"6-17-48":[-4122.26,-14],"6-17-49":[-3621.62,-14.43],"5-8-24":[-5094.21,-14],"6-17-50":[-3957.44,993.74],"6-17-51":[-771.77,2522.54],"5-8-25":[-3957.44,2522.54],"6-17-52":[-216.42,2808.07],"6-17-53":[-64.39,2249.4],"5-8-26":[-870.18,2897.13],"6-17-54":[-75.83,2758.77],"6-17-55":[-84.15,2323.38],"5-8-27":[-88.41,2758.77],"6-17-56":[-89.73,401.81],"6-17-57":[-2441.75,-16.49],"5-8-28":[-2771.85,401.81],"6-17-58":[-2973.68,2730.02],"6-17-59":[-3594.22,2341.32],"5-8-29":[-3699.81,3057.06],"6-17-60":[-3727.72,1350.33],"6-17-61":[-3692.53,803.49],"5-8-30":[-3732.88,1350.33],"6-17-62":[-2811.27,3573.17],"6-17-63":[-4214.39,2879.05],"5-8-31":[-4214.39,3573.17],"6-18-0":[-239.93,1305.63],"6-18-1":[-1961.07,3782.46],"6-18-2":[-1554.87,20.08],"6-18-3":[-1327.79,253.46],"6-18-4":[-1088.12,3239.67],"6-18-5":[-1217.67,3108.19],"6-18-6":[-4824.35,142.08],"6-18-7":[-4475.98,429.97],"6-18-8":[-5097.66,2151.79],"6-18-9":[-5286.88,2614.23],"6-18-10":[-5383.94,2710.75],"6-18-11":[-4674.83,2698.9],"6-18-12":[-6208.63,2746.59],"6-18-13":[-5145.3,2747.57],"6-18-14":[-5330.71,1843.49],"6-18-15":[-5251.84,-22.18],"6-18-16":[-5203.52,-26.44],"6-18-17":[-5196.89,-29.66],"6-18-18":[-5294.47,-35.92],"6-18-19":[-4940.34,-39.87],"6-18-20":[-4969.7,-40.29],"6-18-21":[-4577.18,-40.68],"6-18-22":[-4373.32,-41.38],"6-18-23":[-4278.81,36.16],"6-18-24":[-4720.03,-40.24],"6-18-25":[-5013.32,-38.8],"6-18-26":[-4588.47,-35.89],"6-18-27":[-4400.12,-32.16],"6-18-28":[-5008.64,-27.65],"6-18-29":[-6174.12,-22.1],"6-18-30":[-4934.3,-17.75],"6-18-31":[-4842.18,-14.23],"6-18-32":[-4876.31,-11.43],"6-18-33":[-4758.41,-10.12],"6-18-34":[-5086.71,-9.98],"6-18-35":[-5093.33,-9.16],"6-18-36":[-5155.12,-9.09],"6-18-37":[-5307.78,-8.96],"6-18-38":[-5730.1,-9.07],"6-18-39":[-5129.31,-10.05],"6-18-40":[-5279.34,30.18],"6-18-41":[-5425.68,-10.66],"6-18-42":[-5345.64,-11.58],"6-18-43":[-5141.56,-10.9],"6-18-44":[-5415.73,-10.9],"6-18-45":[-5030.18,-11.37],"6-18-46":[-4788.93,-12.17],"6-18-47":[-4459,-12.57],"6-18-48":[-3487.82,-12.73],"6-18-49":[-3561.32,1575.89],"6-18-50":[-1988.24,2584.28],"6-18-51":[-538.42,2544.16],"6-18-52":[-46.75,2552.9],"6-18-53":[-62.71,2504.4],"6-18-54":[-73.11,2557.92],"6-18-55":[-79.89,2151.24],"6-18-56":[-258.64,398.97],"6-18-57":[-798.4,126.06],"6-18-58":[-1790.31,2750.5],"6-18-59":[-3353.04,2817.84],"6-18-60":[-3629.63,1490.05],"6-18-61":[-3621.66,901.46],"6-18-62":[-2800.02,3682.63],"6-18-63":[-4215.33,2878.07],"6-19-0":[-379.17,1287.38],"6-19-1":[-1593.06,3146.76],"5-9-0":[-1961.07,3782.46],"6-19-2":[-1890.58,20.54],"6-19-3":[-1414.05,2.42],"5-9-1":[-1890.58,253.46],"4-4-0":[-1961.07,3782.46],"6-19-4":[-1211.44,4101.76],"6-19-5":[-1382.71,2119.92],"5-9-2":[-1382.71,4101.76],"6-19-6":[-3876.71,317.55],"6-19-7":[-4530.82,581.34],"5-9-3":[-4824.35,581.34],"4-4-1":[-4824.35,4101.76],"6-19-8":[-4995.54,973.14],"6-19-9":[-5321.16,2480.85],"5-9-4":[-5321.16,2614.23],"6-19-10":[-5607.39,2228.73],"6-19-11":[-4754.48,2929.86],"5-9-5":[-5607.39,2929.86],"4-4-2":[-5607.39,3089.83],"6-19-12":[-6114.42,2399.44],"6-19-13":[-4562,3974.94],"5-9-6":[-6208.63,3974.94],"6-19-14":[-4492.89,2829.29],"6-19-15":[-5013.47,2131.34],"5-9-7":[-5330.71,2829.29],"4-4-3":[-6829.25,3974.94],"6-19-16":[-4953.87,1592.47],"6-19-17":[-4866.48,1595.59],"5-9-8":[-5203.52,1595.59],"6-19-18":[-5637.2,251.63],"6-19-19":[-5637.2,-38.05],"5-9-9":[-5637.2,251.63],"4-4-4":[-6240.03,1595.59],"6-19-20":[-4758.37,-41.29],"6-19-21":[-4461.38,-42.03],"5-9-10":[-4969.7,-40.29],"6-19-22":[-4510.74,-43.78],"6-19-23":[-4246.08,165.38],"5-9-11":[-4510.74,165.38],"4-4-5":[-5006.12,2112.46],"6-19-24":[-4386.55,-43.61],"6-19-25":[-4787.48,-42.14],"5-9-12":[-5013.32,-38.8],"6-19-26":[-4592.84,-39.76],"6-19-27":[-4940.84,-36.36],"5-9-13":[-4940.84,-32.16],"4-4-6":[-5013.32,-22.61],"6-19-28":[-4653.41,-31.27],"6-19-29":[-5351.52,-25.3],"5-9-14":[-6174.12,-22.1],"6-19-30":[-5449.15,-21.14],"6-19-31":[-5024.53,-17.54],"5-9-15":[-5449.15,-14.23],"4-4-7":[-6174.12,-7.01],"6-19-32":[-5169.3,-14.6],"6-19-33":[-5203.96,-12.43],"5-9-16":[-5203.96,-10.12],"6-19-34":[-5208.9,-11.75],"6-19-35":[-5361.21,-9.55],"5-9-17":[-5361.21,-9.16],"4-4-8":[-6115.42,-4.9],"6-19-36":[-5037.02,-8.58],"6-19-37":[-4920.17,-7.73],"5-9-18":[-5307.78,-7.73],"6-19-38":[-5156.8,-7.69],"6-19-39":[-5026.43,-8.18],"5-9-19":[-5730.1,-7.69],"4-4-9":[-6887.6,-6.96],"6-19-40":[-5045.17,0.38],"6-19-41":[-5538.83,-9.49],"5-9-20":[-5538.83,30.18],"6-19-42":[-5356.53,-10.86],"6-19-43":[-5215.62,-10.71],"5-9-21":[-5356.53,-10.71],"4-4-10":[-5701.15,395.5],"6-19-44":[-5127.44,-10.75],"6-19-45":[-5197.76,258.9],"5-9-22":[-5415.73,258.9],"6-19-46":[-4421.91,1557.91],"6-19-47":[-3471,1551.49],"5-9-23":[-4788.93,1557.91],"4-4-11":[-6593.4,1557.91],"6-19-48":[-3140.15,2121.88],"6-19-49":[-2469.93,2675.95],"5-9-24":[-3561.32,2675.95],"6-19-50":[-626.92,3796.99],"6-19-51":[-37.03,2275.43],"5-9-25":[-1988.24,3796.99],"4-4-12":[-5094.21,3796.99],"6-19-52":[-44.46,2778.85],"6-19-53":[-60.61,2131.71],"5-9-26":[-62.71,2778.85],"6-19-54":[-69.03,2392.98],"6-19-55":[-75.62,968.87],"5-9-27":[-79.89,2557.92],"4-4-13":[-870.18,2897.13],"6-19-56":[-347.17,572.32],"6-19-57":[-601.74,288.87],"5-9-28":[-798.4,572.32],"6-19-58":[-515.17,2986.57],"6-19-59":[-2994.68,3530.83],"5-9-29":[-3353.04,3530.83],"4-4-14":[-3699.81,3530.83],"6-19-60":[-3551.26,1514.1],"6-19-61":[-3519.87,956.54],"5-9-30":[-3629.63,1514.1],"6-19-62":[-2747.86,3114.64],"6-19-63":[-4214.39,2878.57],"5-9-31":[-4215.33,3682.63],"4-4-15":[-4215.33,3682.63],"6-20-0":[-417.32,1224.41],"6-20-1":[-1370.96,2452.93],"6-20-2":[-1973.46,20.82],"6-20-3":[-1633.9,2.38],"6-20-4":[-1302.3,1894.43],"6-20-5":[-1304.79,801.61],"6-20-6":[-3626.95,693.54],"6-20-7":[-4536.9,842.66],"6-20-8":[-5055.43,662.44],"6-20-9":[-5264.21,1501.83],"6-20-10":[-5515.35,1335.36],"6-20-11":[-5331.65,2410.7],"6-20-12":[-6105.34,2580.47],"6-20-13":[-4265.75,3118.01],"6-20-14":[-4519.48,3265.41],"6-20-15":[-4565.58,4373.52],"6-20-16":[-4835.84,3180.62],"6-20-17":[-4743.31,4292.74],"6-20-18":[-6588.28,2093.71],"6-20-19":[-4944.06,1757.21],"6-20-20":[-4796.65,-39.45],"6-20-21":[-4565.81,-41.79],"6-20-22":[-4128.01,-44.7],"6-20-23":[-3987,-46.27],"6-20-24":[-4050.55,-46.25],"6-20-25":[-4341.52,-44.61],"6-20-26":[-4080.21,-43],"6-20-27":[-4829.5,-39.48],"6-20-28":[-5119.06,-34.42],"6-20-29":[-5269.86,-28.53],"6-20-30":[-4689.02,-24.48],"6-20-31":[-4770.8,-20.85],"6-20-32":[-5202.52,-17.01],"6-20-33":[-4890.99,-14.29],"6-20-34":[-5023.56,-12.23],"6-20-35":[-4964.45,-9.38],"6-20-36":[-4986.97,-7.52],"6-20-37":[-4880.33,-6.21],"6-20-38":[-4961.7,-6.04],"6-20-39":[-4755.38,-6.16],"6-20-40":[-4689.63,-6.82],"6-20-41":[-4833.3,-7.83],"6-20-42":[-4861.26,-9.86],"6-20-43":[-4844.73,-10.66],"6-20-44":[-5134.28,1750.54],"6-20-45":[-3868.94,2051.18],"6-20-46":[-46.03,4249.41],"6-20-47":[-44.93,3135.77],"6-20-48":[-291.98,4326.16],"6-20-49":[-419.89,3212.16],"6-20-50":[-26.04,3002.43],"6-20-51":[-35.46,2455.47],"6-20-52":[-44.23,2254.26],"6-20-53":[-59.19,1409.29],"6-20-54":[-66.26,1525.83],"6-20-55":[-73.37,629.49],"6-20-56":[-489.3,852.51],"6-20-57":[-671.27,681.52],"6-20-58":[-552.12,1956.61],"6-20-59":[-2448.23,2297.87],"6-20-60":[-3307.66,1535.12],"6-20-61":[-3393.94,1063],"6-20-62":[-2705,2865.19],"6-20-63":[-4214.39,2878.57],"6-21-0":[-337.42,1346.84],"6-21-1":[-1233.6,2030.55],"5-10-0":[-1370.96,2452.93],"6-21-2":[-1772.55,89.14],"6-21-3":[-1871.86,2.72],"5-10-1":[-1973.46,89.14],"6-21-4":[-2467.23,2541.55],"6-21-5":[-1623.25,454.87],"5-10-2":[-2467.23,2541.55],"6-21-6":[-3359.57,413.74],"6-21-7":[-4538.31,781.37],"5-10-3":[-4538.31,842.66],"6-21-8":[-5075.96,696.58],"6-21-9":[-5249.7,880.39],"5-10-4":[-5264.21,1501.83],"6-21-10":[-5445.64,833.93],"6-21-11":[-5899.2,1099.39],"5-10-5":[-5899.2,2410.7],"6-21-12":[-4299.21,3253.8],"6-21-13":[-3763.46,3939.1],"5-10-6":[-6105.34,3939.1],"6-21-14":[-4281.45,2946.16],"6-21-15":[-4207.65,2851.96],"5-10-7":[-4565.58,4373.52],"6-21-16":[-4394.17,2953.97],"6-21-17":[-5603.84,3100.13],"5-10-8":[-5603.84,4292.74],"6-21-18":[-5251.97,4387.58],"6-21-19":[-4621.58,4242],"5-10-9":[-6588.28,4387.58],"6-21-20":[-4530.92,610.58],"6-21-21":[-4249.27,1248.21],"5-10-10":[-4796.65,1248.21],"6-21-22":[-4100.77,-43.26],"6-21-23":[-3917.92,-45.42],"5-10-11":[-4128.01,-43.26],"6-21-24":[-3839.51,-46.3],"6-21-25":[-4146.3,-45.23],"5-10-12":[-4341.52,-44.61],"6-21-26":[-4034.73,-43.77],"6-21-27":[-4622.19,-40.96],"5-10-13":[-4829.5,-39.48],"6-21-28":[-5026.68,-36.11],"6-21-29":[-4710.14,-30.73],"5-10-14":[-5269.86,-28.53],"6-21-30":[-4711.56,-26.83],"6-21-31":[-4649.73,-22.8],"5-10-15":[-4770.8,-20.85],"6-21-32":[-5165.04,-18.67],"6-21-33":[-5124.61,-15.13],"5-10-16":[-5202.52,-14.29],"6-21-34":[-4928.38,-12.89],"6-21-35":[-4817.72,-9.33],"5-10-17":[-5023.56,-9.33],"6-21-36":[-4751.47,-6.07],"6-21-37":[-4705.07,-4.67],"5-10-18":[-4986.97,-4.67],"6-21-38":[-4736.47,-4.21],"6-21-39":[-4814.85,-4.21],"5-10-19":[-4961.7,-4.21],"6-21-40":[-4826.11,-5.08],"6-21-41":[-5135.13,-6.52],"5-10-20":[-5135.13,-5.08],"6-21-42":[-5265.07,1190.2],"6-21-43":[-4590.1,596.6],"5-10-21":[-5265.07,1190.2],"6-21-44":[-2985.45,4155.23],"6-21-45":[-26.05,4282.35],"5-10-22":[-5134.28,4282.35],"6-21-46":[-26.03,3002.91],"6-21-47":[-24,2907.88],"5-10-23":[-46.03,4249.41],"6-21-48":[-22.24,2814],"6-21-49":[-21.6,2800.67],"5-10-24":[-419.89,4326.16],"6-21-50":[-23.2,3778.63],"6-21-51":[-31.43,3065.26],"5-10-25":[-35.46,3778.63],"6-21-52":[-42.02,1088.13],"6-21-53":[-56.28,798.49],"5-10-26":[-59.19,2254.26],"6-21-54":[-63.59,815.62],"6-21-55":[-71.43,688.52],"5-10-27":[-73.37,1525.83],"6-21-56":[-537.59,775.33],"6-21-57":[-441.32,399.72],"5-10-28":[-671.27,852.51],"6-21-58":[-523.41,1699.95],"6-21-59":[-1766.91,2538.05],"5-10-29":[-2448.23,2538.05],"6-21-60":[-3331.72,1626.41],"6-21-61":[-3355.23,1241.73],"5-10-30":[-3393.94,1626.41],"6-21-62":[-2622.98,2638.67],"6-21-63":[-4214.39,2874.63],"5-10-31":[-4214.39,2878.57],"6-22-0":[-398.63,1167.08],"6-22-1":[-651.33,2264.33],"6-22-2":[-1498.06,363.46],"6-22-3":[-1848.36,1220.89],"6-22-4":[-2407.5,3509.49],"6-22-5":[-1967.05,3362.6],"6-22-6":[-3532.52,562.23],"6-22-7":[-4708.86,561.11],"6-22-8":[-5102.62,731.19],"6-22-9":[-5406.44,633.28],"6-22-10":[-5616.21,980.63],"6-22-11":[-5777.27,953.84],"6-22-12":[-4339.32,1945.45],"6-22-13":[-3575.12,3751.07],"6-22-14":[-5353.78,3467.23],"6-22-15":[-3948.99,2981.68],"6-22-16":[-4230.11,2953.81],"6-22-17":[-4698.67,3455.03],"6-22-18":[-4417.21,3616.13],"6-22-19":[-4614.73,3677.07],"6-22-20":[-4612.07,3055.54],"6-22-21":[-4169.26,2579.5],"6-22-22":[-4121.9,227.36],"6-22-23":[-4832.83,-36.74],"6-22-24":[-4589.1,-43.31],"6-22-25":[-6924.66,-42.61],"6-22-26":[-3909.53,-41.08],"6-22-27":[-4173.36,-38.63],"6-22-28":[-5079.89,-34.92],"6-22-29":[-4716.43,-31.11],"6-22-30":[-4620.67,-27.03],"6-22-31":[-4566.09,-23.61],"6-22-32":[-4502.76,-19.66],"6-22-33":[-4557.38,-15.78],"6-22-34":[-4533.81,-12.28],"6-22-35":[-4814.45,-8],"6-22-36":[-4853.38,-4.62],"6-22-37":[-4430.16,-3.04],"6-22-38":[-4409.56,-2.78],"6-22-39":[-4975.84,-2.97],"6-22-40":[-4329.8,195.98],"6-22-41":[-4894.06,155.36],"6-22-42":[-4774.93,2577.48],"6-22-43":[-2521.79,3006.53],"6-22-44":[-112.74,3560.31],"6-22-45":[-107.66,3555.42],"6-22-46":[-25.48,3327.82],"6-22-47":[-23.5,2834],"6-22-48":[-21.38,2971.69],"6-22-49":[-20.27,3240.49],"6-22-50":[-22.59,3550.72],"6-22-51":[-29.7,1888.48],"6-22-52":[-41.54,948.84],"6-22-53":[-53.67,976.63],"6-22-54":[-61.27,681.33],"6-22-55":[-68.78,730.22],"6-22-56":[-498.55,541.09],"6-22-57":[-457.73,551.22],"6-22-58":[-534.91,3383.56],"6-22-59":[-664.24,3626.49],"6-22-60":[-2942.53,1694.94],"6-22-61":[-3274.61,1432.98],"6-22-62":[-2650.99,2576.08],"6-22-63":[-4214.39,2863.29],"6-23-0":[-421.11,1136.69],"6-23-1":[-833.08,2882.18],"5-11-0":[-833.08,2882.18],"6-23-2":[-1737.91,525.6],"6-23-3":[-2333.53,9.47],"5-11-1":[-2333.53,1220.89],"4-5-0":[-2333.53,2882.18],"6-23-4":[-2030.12,2135.73],"6-23-5":[-2116.36,1778.2],"5-11-2":[-2407.5,3509.49],"6-23-6":[-3602.71,628.59],"6-23-7":[-4632.63,437.77],"5-11-3":[-4708.86,628.59],"4-5-1":[-4708.86,3509.49],"3-2-0":[-4824.35,4101.76],"6-23-8":[-5155.37,620.34],"6-23-9":[-5302.33,595],"5-11-4":[-5406.44,731.19],"6-23-10":[-5557.74,952.89],"6-23-11":[-5636.66,969.04],"5-11-5":[-5777.27,980.63],"4-5-2":[-5899.2,2410.7],"6-23-12":[-4315.7,1217.71],"6-23-13":[-3848.72,3152.73],"5-11-6":[-4339.32,3751.07],"6-23-14":[-5731.78,3396.83],"6-23-15":[-3515.08,3385.15],"5-11-7":[-5731.78,3467.23],"4-5-3":[-6105.34,4373.52],"3-2-1":[-6829.25,4373.52],"6-23-16":[-3720.8,3846.98],"6-23-17":[-3729.31,3659.45],"5-11-8":[-4698.67,3846.98],"6-23-18":[-3857.79,3960.27],"6-23-19":[-4665.03,2781.72],"5-11-9":[-4665.03,3960.27],"4-5-4":[-6588.28,4387.58],"6-23-20":[-4586.57,2074.25],"6-23-21":[-3908.44,2324.4],"5-11-10":[-4612.07,3055.54],"6-23-22":[-4234.4,1902.28],"6-23-23":[-4248.98,-37.16],"5-11-11":[-4832.83,1902.28],"4-5-5":[-4832.83,3055.54],"3-2-2":[-6588.28,4387.58],"6-23-24":[-4096.4,-38.53],"6-23-25":[-3684.54,238.06],"5-11-12":[-6924.66,238.06],"6-23-26":[-4079.58,-36.65],"6-23-27":[-4195.46,-34.81],"5-11-13":[-4195.46,-34.81],"4-5-6":[-6924.66,238.06],"6-23-28":[-5581.2,-32.08],"6-23-29":[-5226.21,-29.04],"5-11-14":[-5581.2,-29.04],"6-23-30":[-4536.94,-25.29],"6-23-31":[-4550.37,-21.98],"5-11-15":[-4620.67,-21.98],"4-5-7":[-5581.2,-20.85],"3-2-3":[-6924.66,238.06],"6-23-32":[-4255.85,-18.42],"6-23-33":[-4442.94,-15],"5-11-16":[-4557.38,-15],"6-23-34":[-5616.78,-10.65],"6-23-35":[-4625.81,-6.84],"5-11-17":[-5616.78,-6.84],"4-5-8":[-5616.78,-6.84],"6-23-36":[-4390.47,-3.94],"6-23-37":[-4586.73,-2.35],"5-11-18":[-4853.38,-2.35],"6-23-38":[-4741.58,182.06],"6-23-39":[-4374.02,-2.19],"5-11-19":[-4975.84,182.06],"4-5-9":[-4986.97,182.06],"3-2-4":[-6887.6,182.06],"6-23-40":[-4592.1,-3.43],"6-23-41":[-4363.36,1835.28],"5-11-20":[-4894.06,1835.28],"6-23-42":[-1649.44,2317.4],"6-23-43":[-253.34,2074.33],"5-11-21":[-4774.93,3006.53],"4-5-10":[-5265.07,3006.53],"6-23-44":[-22.86,2716.48],"6-23-45":[-23.63,3833.28],"5-11-22":[-112.74,3833.28],"6-23-46":[-23.44,3527.63],"6-23-47":[-22.17,3624.57],"5-11-23":[-25.48,3624.57],"4-5-11":[-5134.28,4282.35],"3-2-5":[-6593.4,4282.35],"6-23-48":[-20.39,3270.25],"6-23-49":[-21.17,3156.76],"5-11-24":[-21.38,3270.25],"6-23-50":[-23.21,2985.77],"6-23-51":[-30.13,1202.75],"5-11-25":[-30.13,3550.72],"4-5-12":[-419.89,4326.16],"6-23-52":[-43.45,965.03],"6-23-53":[-51.53,945.27],"5-11-26":[-53.67,976.63],"6-23-54":[-58.95,477.09],"6-23-55":[-65.3,616.4],"5-11-27":[-68.78,730.22],"4-5-13":[-73.37,2254.26],"3-2-6":[-5094.21,4326.16],"6-23-56":[-381.19,424.76],"6-23-57":[-248.43,630.55],"5-11-28":[-498.55,630.55],"6-23-58":[-530.93,2010.01],"6-23-59":[-510.12,2194.6],"5-11-29":[-664.24,3626.49],"4-5-14":[-2448.23,3626.49],"6-23-60":[-2788.93,1763.02],"6-23-61":[-3206.53,1638.58],"5-11-30":[-3274.61,1763.02],"6-23-62":[-2569.85,2755.16],"6-23-63":[-4214.39,2834.96],"5-11-31":[-4214.39,2863.29],"4-5-15":[-4214.39,2878.57],"3-2-7":[-4215.33,3682.63],"6-24-0":[-444.11,1186.8],"6-24-1":[-1081.56,1860.38],"6-24-2":[-884.27,780.39],"6-24-3":[-2481.46,11.12],"6-24-4":[-1806.9,3362.09],"6-24-5":[-1623.32,2494.83],"6-24-6":[-3546.49,637.43],"6-24-7":[-4475.39,369.52],"6-24-8":[-5232.42,618.66],"6-24-9":[-5302.19,643.83],"6-24-10":[-5599.09,442.7],"6-24-11":[-5552.22,841.05],"6-24-12":[-4529.43,849.8],"6-24-13":[-4302.91,1071.09],"6-24-14":[-4466.8,2114.96],"6-24-15":[-3366.56,3889.28],"6-24-16":[-3659.9,4191.26],"6-24-17":[-3400.71,4109.88],"6-24-18":[-3545.38,3690.6],"6-24-19":[-4815.26,3824.21],"6-24-20":[-4264.88,3235.29],"6-24-21":[-3729.77,2589.58],"6-24-22":[-4007.02,1702.94],"6-24-23":[-5911.74,2045.21],"6-24-24":[-4035.63,-33.29],"6-24-25":[-4136.33,268.06],"6-24-26":[-4161.32,-31.52],"6-24-27":[-5001.37,-29.62],"6-24-28":[-4128.07,-28.02],"6-24-29":[-4975.29,-25.65],"6-24-30":[-4578.48,-23.11],"6-24-31":[-4349.57,-20.2],"6-24-32":[-4541,-17.27],"6-24-33":[-4341.2,-13.42],"6-24-34":[-4969.11,-9.91],"6-24-35":[-4622.82,-6.43],"6-24-36":[-6027.68,-3.86],"6-24-37":[-4987.2,-2.32],"6-24-38":[-4501.51,906.1],"6-24-39":[-4247.65,-2.13],"6-24-40":[-3703.92,2006.2],"6-24-41":[-3317.83,1625.93],"6-24-42":[-1102.76,2496.57],"6-24-43":[-20.18,3193.33],"6-24-44":[-21.4,3709.46],"6-24-45":[-21.96,3624.72],"6-24-46":[-21.96,3997.5],"6-24-47":[-20.69,3958.09],"6-24-48":[-19.53,3750.79],"6-24-49":[-21.86,2056.55],"6-24-50":[-23.63,1056.01],"6-24-51":[-30.13,836.55],"6-24-52":[-42.54,834.09],"6-24-53":[-50.73,423.69],"6-24-54":[-56.68,479.95],"6-24-55":[-62.37,620.69],"6-24-56":[-397.73,366.7],"6-24-57":[-327.26,618.35],"6-24-58":[-578.4,2438.84],"6-24-59":[-539.33,3441.15],"6-24-60":[-2590.64,1871.81],"6-24-61":[-3123.2,1816.7],"6-24-62":[-2650.65,2575.14],"6-24-63":[-4214.39,2813.19],"6-25-0":[-303.71,1053.33],"6-25-1":[-651.82,1708.98],"5-12-0":[-1081.56,1860.38],"6-25-2":[-922.35,1020.06],"6-25-3":[-2433.51,33.82],"5-12-1":[-2481.46,1020.06],"6-25-4":[-1734.73,293.97],"6-25-5":[-1461.69,334.46],"5-12-2":[-1806.9,3362.09],"6-25-6":[-3803.3,387.52],"6-25-7":[-4628.98,308.5],"5-12-3":[-4628.98,637.43],"6-25-8":[-5084.99,598.61],"6-25-9":[-5252.45,600.19],"5-12-4":[-5302.19,643.83],"6-25-10":[-5484.86,610.76],"6-25-11":[-5604.4,613.75],"5-12-5":[-5604.4,841.05],"6-25-12":[-4715.59,741.32],"6-25-13":[-4517.04,852.58],"5-12-6":[-4715.59,1071.09],"6-25-14":[-4478.47,2093.28],"6-25-15":[-3966.59,3842.68],"5-12-7":[-4478.47,3889.28],"6-25-16":[-3770.45,4204.45],"6-25-17":[-3937.86,3751.43],"5-12-8":[-3937.86,4204.45],"6-25-18":[-4104.8,4348.39],"6-25-19":[-5472.45,3458.34],"5-12-9":[-5472.45,4348.39],"6-25-20":[-5358.88,3295.69],"6-25-21":[-3924,3091.23],"5-12-10":[-5358.88,3295.69],"6-25-22":[-4181.74,3268.31],"6-25-23":[-4107.01,2081.23],"5-12-11":[-5911.74,3268.31],"6-25-24":[-4139.43,-28.52],"6-25-25":[-4417.91,-26.44],"5-12-12":[-4417.91,268.06],"6-25-26":[-4796.18,-25.22],"6-25-27":[-3903.47,-24.16],"5-12-13":[-5001.37,-24.16],"6-25-28":[-4620.9,-15.52],"6-25-29":[-4156.21,-22.31],"5-12-14":[-4975.29,-15.52],"6-25-30":[-4696.61,-20.5],"6-25-31":[-4184.51,-18.74],"5-12-15":[-4696.61,-18.74],"6-25-32":[-4009.76,-16.22],"6-25-33":[-4172.12,-12.95],"5-12-16":[-4541,-12.95],"6-25-34":[-4842.46,-9.78],"6-25-35":[-5609.97,98.48],"5-12-17":[-5609.97,98.48],"6-25-36":[-5165.76,-4.01],"6-25-37":[-5237.78,-2.5],"5-12-18":[-6027.68,-2.32],"6-25-38":[-5867.09,-2.18],"6-25-39":[-5887.61,-2.3],"5-12-19":[-5887.61,906.1],"6-25-40":[-3836.87,2005.22],"6-25-41":[-2624.66,3194.32],"5-12-20":[-3836.87,3194.32],"6-25-42":[-16.08,3023.14],"6-25-43":[-18.48,3241.73],"5-12-21":[-1102.76,3241.73],"6-25-44":[-19.58,3410.37],"6-25-45":[-20.51,4171.18],"5-12-22":[-21.96,4171.18],"6-25-46":[-20.66,3695.94],"6-25-47":[-19.83,4048.21],"5-12-23":[-21.96,4048.21],"6-25-48":[-19.6,3764.34],"6-25-49":[-22.09,1976.48],"5-12-24":[-22.09,3764.34],"6-25-50":[-24.31,843.14],"6-25-51":[-29.53,749.28],"5-12-25":[-30.13,1056.01],"6-25-52":[-38.65,583.75],"6-25-53":[-48.88,527.66],"5-12-26":[-50.73,834.09],"6-25-54":[-53.27,454.9],"6-25-55":[-321.18,564.64],"5-12-27":[-321.18,620.69],"6-25-56":[-365.61,281.37],"6-25-57":[-401.21,416.56],"5-12-28":[-401.21,618.35],"6-25-58":[-659.6,821.96],"6-25-59":[-553.58,1676.69],"5-12-29":[-659.6,3441.15],"6-25-60":[-2291.56,1996.28],"6-25-61":[-3041.73,1996.28],"5-12-30":[-3123.2,1996.28],"6-25-62":[-2813.69,2606.34],"6-25-63":[-4215.39,2795.26],"5-12-31":[-4215.39,2813.19],"6-26-0":[-439.71,1000.01],"6-26-1":[-730.5,1772.1],"6-26-2":[-897.49,2298.54],"6-26-3":[-1713.07,281.71],"6-26-4":[-1913.82,308.77],"6-26-5":[-1684.72,381.74],"6-26-6":[-3787.14,317.75],"6-26-7":[-4740.18,215.89],"6-26-8":[-5062.53,571.32],"6-26-9":[-5238.49,565.77],"6-26-10":[-6488.99,599.94],"6-26-11":[-6644.9,611.84],"6-26-12":[-4903.49,731.39],"6-26-13":[-5400.04,749.4],"6-26-14":[-4879.74,993.24],"6-26-15":[-4103.16,1446.2],"6-26-16":[-4120.52,3114.6],"6-26-17":[-4230.7,4338.56],"6-26-18":[-4413.49,4383.25],"6-26-19":[-5096.75,3998.98],"6-26-20":[-4111.25,3617.02],"6-26-21":[-3860.99,2970.04],"6-26-22":[-4545.1,3258.01],"6-26-23":[-4215.41,3307.88],"6-26-24":[-4394.09,2734.41],"6-26-25":[-4782.29,2861.69],"6-26-26":[-5685.17,-18.54],"6-26-27":[-4949.82,-18.19],"6-26-28":[-5202.13,-18.13],"6-26-29":[-4328.88,-18.06],"6-26-30":[-4889.01,-17.73],"6-26-31":[-4042.13,-17.02],"6-26-32":[-3932.99,-15.49],"6-26-33":[-4611.24,-12.9],"6-26-34":[-4215.41,-10],"6-26-35":[-4437.77,-7.31],"6-26-36":[-4454.44,-4.66],"6-26-37":[-4569.44,-3.18],"6-26-38":[-5094.37,2826.68],"6-26-39":[-4696.56,2654.65],"6-26-40":[-1698.12,3217.88],"6-26-41":[-10.71,3238.99],"6-26-42":[-14.63,2817.94],"6-26-43":[-16.88,3502.89],"6-26-44":[-18.57,3901.67],"6-26-45":[-19.41,4305.19],"6-26-46":[-19.51,4229.83],"6-26-47":[-18.58,3014],"6-26-48":[-19.11,1409.63],"6-26-49":[-22.08,981.78],"6-26-50":[-24.14,734.9],"6-26-51":[-29.38,727.51],"6-26-52":[-38.33,598.01],"6-26-53":[-46.19,511.34],"6-26-54":[-51.2,426.83],"6-26-55":[-57.5,452.88],"6-26-56":[-155.67,204.81],"6-26-57":[-311.85,196.31],"6-26-58":[-599.85,881.64],"6-26-59":[-578.3,1748.55],"6-26-60":[-1765.96,2076.65],"6-26-61":[-2851.24,2181.07],"6-26-62":[-2859.69,2606.49],"6-26-63":[-4215.39,2777.84],"6-27-0":[-553.59,784.94],"6-27-1":[-488.74,1493.87],"5-13-0":[-730.5,1772.1],"6-27-2":[-1148.95,2712.56],"6-27-3":[-2045.61,320.5],"5-13-1":[-2045.61,2712.56],"4-6-0":[-2481.46,2712.56],"6-27-4":[-2032.29,372.69],"6-27-5":[-1445.53,449.81],"5-13-2":[-2032.29,449.81],"6-27-6":[-3787.98,283.15],"6-27-7":[-4721.05,117.7],"5-13-3":[-4740.18,317.75],"4-6-1":[-4740.18,3362.09],"6-27-8":[-5023.3,325.53],"6-27-9":[-5311.91,428.65],"5-13-4":[-5311.91,571.32],"6-27-10":[-6550.67,567.14],"6-27-11":[-5322.93,510.84],"5-13-5":[-6644.9,611.84],"4-6-2":[-6644.9,841.05],"6-27-12":[-5100.87,779.83],"6-27-13":[-4957,797.9],"5-13-6":[-5400.04,797.9],"6-27-14":[-4562.1,843.62],"6-27-15":[-4900.36,1208.11],"5-13-7":[-4900.36,1446.2],"4-6-3":[-5400.04,3889.28],"6-27-16":[-4715.92,2194.75],"6-27-17":[-6020.76,1798.51],"5-13-8":[-6020.76,4338.56],"6-27-18":[-4494.59,2635.83],"6-27-19":[-4926.46,2159.53],"5-13-9":[-5096.75,4383.25],"4-6-4":[-6020.76,4383.25],"6-27-20":[-4552.08,1925.95],"6-27-21":[-3967.39,2697.84],"5-13-10":[-4552.08,3617.02],"6-27-22":[-4104.46,2999.92],"6-27-23":[-4228.95,3424.3],"5-13-11":[-4545.1,3424.3],"4-6-5":[-5911.74,3617.02],"6-27-24":[-4620.51,3479.94],"6-27-25":[-4583.52,4234.29],"5-13-12":[-4782.29,4234.29],"6-27-26":[-5549.86,-13],"6-27-27":[-5063.91,-12.54],"5-13-13":[-5685.17,-12.54],"4-6-6":[-5685.17,4234.29],"6-27-28":[-5516.32,-12.85],"6-27-29":[-5126.11,-13.41],"5-13-14":[-5516.32,-12.85],"6-27-30":[-4940.44,-14.09],"6-27-31":[-3922.85,-14.93],"5-13-15":[-4940.44,-14.09],"4-6-7":[-5516.32,-12.85],"6-27-32":[-10287.73,-14.66],"6-27-33":[-3838.8,-13.29],"5-13-16":[-10287.73,-12.9],"6-27-34":[-3952.86,-11.02],"6-27-35":[-4397.75,-9.21],"5-13-17":[-4437.77,-7.31],"4-6-8":[-10287.73,98.48],"6-27-36":[-3846.19,-6.32],"6-27-37":[-5411.31,-4.11],"5-13-18":[-5411.31,-3.18],"6-27-38":[-5381.88,4089.29],"6-27-39":[-7.82,3353.19],"5-13-19":[-5381.88,4089.29],"4-6-9":[-6027.68,4089.29],"6-27-40":[-6.36,3366.29],"6-27-41":[-8.91,2906.92],"5-13-20":[-1698.12,3366.29],"6-27-42":[-12.62,2615.39],"6-27-43":[-14.88,1857.98],"5-13-21":[-16.88,3502.89],"4-6-10":[-3836.87,3502.89],"6-27-44":[-15.67,2106.54],"6-27-45":[-17.16,2595.28],"5-13-22":[-19.41,4305.19],"6-27-46":[-17.14,1790.4],"6-27-47":[-16.64,2157.81],"5-13-23":[-19.51,4229.83],"4-6-11":[-21.96,4305.19],"6-27-48":[-18.13,1197.65],"6-27-49":[-20.76,806.78],"5-13-24":[-22.08,1409.63],"6-27-50":[-23.03,796.95],"6-27-51":[-27.57,771.94],"5-13-25":[-29.38,796.95],"4-6-12":[-30.13,3764.34],"6-27-52":[-33.04,487.72],"6-27-53":[-43.05,509.42],"5-13-26":[-46.19,598.01],"6-27-54":[-47.85,403.44],"6-27-55":[-55.33,313.6],"5-13-27":[-57.5,452.88],"4-6-13":[-321.18,834.09],"6-27-56":[-165.48,97.2],"6-27-57":[-389.09,647.09],"5-13-28":[-389.09,647.09],"6-27-58":[-464.97,899.06],"6-27-59":[-578.3,1803.34],"5-13-29":[-599.85,1803.34],"4-6-14":[-659.6,3441.15],"6-27-60":[-1164.05,2159.56],"6-27-61":[-2655.88,2197.16],"5-13-30":[-2851.24,2197.16],"6-27-62":[-2735.67,2581.41],"6-27-63":[-4215.89,2769.5],"5-13-31":[-4215.89,2777.84],"4-6-15":[-4215.89,2813.19],"6-28-0":[-589.49,895.88],"6-28-1":[-904.43,1735],"6-28-2":[-1112.91,1235.69],"6-28-3":[-2043.07,844.52],"6-28-4":[-2281.87,373.55],"6-28-5":[-1363.66,836.38],"6-28-6":[-4066.69,674.51],"6-28-7":[-4710.07,37.53],"6-28-8":[-5012.79,273.39],"6-28-9":[-5266.71,404.25],"6-28-10":[-5706.52,438.24],"6-28-11":[-5494.65,436.49],"6-28-12":[-5263.46,375.47],"6-28-13":[-5318.9,807.5],"6-28-14":[-4751.14,785.89],"6-28-15":[-4761.28,755.87],"6-28-16":[-5205.32,1090.39],"6-28-17":[-6497.54,1115.44],"6-28-18":[-4875.35,1003.31],"6-28-19":[-5278.57,1013.68],"6-28-20":[-4266.28,909.81],"6-28-21":[-4277.75,784.58],"6-28-22":[-4135.64,3697.19],"6-28-23":[-5658.77,3685.36],"6-28-24":[-4615.83,3903.97],"6-28-25":[-4879.2,5379.65],"6-28-26":[-6091.1,1685.03],"6-28-27":[-5229.41,-8.02],"6-28-28":[-5370.65,-9.26],"6-28-29":[-5029.2,-9.53],"6-28-30":[-5149.38,-10.39],"6-28-31":[-3741.68,-11.78],"6-28-32":[-4859.21,-13.08],"6-28-33":[-4605.78,-13.91],"6-28-34":[-3888.71,-12.68],"6-28-35":[-4747.63,-10.25],"6-28-36":[-4599.95,-7.52],"6-28-37":[-5655.38,1591.03],"6-28-38":[-3254.97,5307.64],"6-28-39":[-8.33,3851.97],"6-28-40":[-6.04,3653.33],"6-28-41":[-7.12,3606.16],"6-28-42":[-10.83,781.34],"6-28-43":[-12.78,907.4],"6-28-44":[-13.74,1016.87],"6-28-45":[-14.99,1005.18],"6-28-46":[-15.4,1103.03],"6-28-47":[-15.79,1073.93],"6-28-48":[-15.93,729.34],"6-28-49":[-19.25,738.55],"6-28-50":[-20.66,791.33],"6-28-51":[-24.63,359.46],"6-28-52":[-31.19,426.97],"6-28-53":[-40.85,427.93],"6-28-54":[-45.75,331.13],"6-28-55":[-52.39,260.77],"6-28-56":[-249.03,31.77],"6-28-57":[-291.84,721.39],"6-28-58":[-258.27,799.62],"6-28-59":[-519.66,1812.13],"6-28-60":[-695.6,2299.62],"6-28-61":[-2450.61,2175.98],"6-28-62":[-2467.84,2429.87],"6-28-63":[-4216.39,2761.57],"6-29-0":[-670.41,737.08],"6-29-1":[-665.35,1980.27],"5-14-0":[-904.43,1980.27],"6-29-2":[-1176.89,984.33],"6-29-3":[-2142.75,2066.14],"5-14-1":[-2142.75,2066.14],"6-29-4":[-2246.48,424.86],"6-29-5":[-1485.53,801.98],"5-14-2":[-2281.87,836.38],"6-29-6":[-4086.72,546.17],"6-29-7":[-4691.99,188.06],"5-14-3":[-4710.07,674.51],"6-29-8":[-4933.06,258.97],"6-29-9":[-5287.28,265.48],"5-14-4":[-5287.28,404.25],"6-29-10":[-5484.98,362.54],"6-29-11":[-5715.5,333.9],"5-14-5":[-5715.5,438.24],"6-29-12":[-5465.58,353.36],"6-29-13":[-5431.27,297.08],"5-14-6":[-5465.58,807.5],"6-29-14":[-4814.21,507.51],"6-29-15":[-5139.28,624.77],"5-14-7":[-5139.28,785.89],"6-29-16":[-4901.17,602.11],"6-29-17":[-6258.5,668.28],"5-14-8":[-6497.54,1115.44],"6-29-18":[-4824.97,558.27],"6-29-19":[-4787.72,500.16],"5-14-9":[-5278.57,1013.68],"6-29-20":[-4729.79,489.46],"6-29-21":[-4326.7,534.68],"5-14-10":[-4729.79,909.81],"6-29-22":[-4200.36,197.1],"6-29-23":[-5409.91,1437.08],"5-14-11":[-5658.77,3697.19],"6-29-24":[-4759.9,3376.08],"6-29-25":[-5145.15,5601.19],"5-14-12":[-5145.15,5601.19],"6-29-26":[-5646.48,3710.87],"6-29-27":[-5111.49,-5.43],"5-14-13":[-6091.1,3710.87],"6-29-28":[-5198.68,-5.37],"6-29-29":[-4685.05,-5.8],"5-14-14":[-5370.65,-5.37],"6-29-30":[-4562.98,-7.34],"6-29-31":[-3766.53,-8.54],"5-14-15":[-5149.38,-7.34],"6-29-32":[-4270.36,-11.17],"6-29-33":[-4267.65,-12.92],"5-14-16":[-4859.21,-11.17],"6-29-34":[-4304.77,-12.74],"6-29-35":[-5036.16,-10.37],"5-14-17":[-5036.16,-10.25],"6-29-36":[-4927.2,-7.55],"6-29-37":[-5616.3,3669.89],"5-14-18":[-5655.38,3669.89],"6-29-38":[-1835.13,5523.17],"6-29-39":[-3149.73,3283.09],"5-14-19":[-3254.97,5523.17],"6-29-40":[-3378.56,1345.28],"6-29-41":[-1756.43,193.62],"5-14-20":[-3378.56,3653.33],"6-29-42":[-70.76,507.97],"6-29-43":[-11.27,487.69],"5-14-21":[-70.76,907.4],"6-29-44":[-11.15,502.01],"6-29-45":[-11.69,556.71],"5-14-22":[-14.99,1016.87],"6-29-46":[-12.81,657.33],"6-29-47":[-11.24,593.9],"5-14-23":[-15.79,1103.03],"6-29-48":[-12.87,609.26],"6-29-49":[-15.22,481.25],"5-14-24":[-19.25,738.55],"6-29-50":[-18.28,290.43],"6-29-51":[-22.81,343.35],"5-14-25":[-24.63,791.33],"6-29-52":[-28.28,328.57],"6-29-53":[-37.41,365.55],"5-14-26":[-40.85,427.93],"6-29-54":[-82.28,245.7],"6-29-55":[-48.36,222.95],"5-14-27":[-82.28,331.13],"6-29-56":[-184.27,180.06],"6-29-57":[-496.2,695.16],"5-14-28":[-496.2,721.39],"6-29-58":[-343.95,1067.53],"6-29-59":[-491.39,1825.18],"5-14-29":[-519.66,1825.18],"6-29-60":[-664.28,2484.31],"6-29-61":[-2275.16,2200.25],"5-14-30":[-2450.61,2484.31],"6-29-62":[-2669.75,2364.99],"6-29-63":[-4216.39,2744.46],"5-14-31":[-4216.39,2761.57],"6-30-0":[-683.41,733.6],"6-30-1":[-703.44,2104.03],"6-30-2":[-1390.04,936.6],"6-30-3":[-1958,1609.72],"6-30-4":[-2316.35,717.95],"6-30-5":[-1776.88,1397.15],"6-30-6":[-3459.86,559.29],"6-30-7":[-4646.45,433.78],"6-30-8":[-5124.1,458.53],"6-30-9":[-5123.08,174.74],"6-30-10":[-5282.92,106.11],"6-30-11":[-6403.12,228.76],"6-30-12":[-7162.59,294.27],"6-30-13":[-6116.46,456.57],"6-30-14":[-5551.79,564.92],"6-30-15":[-5146.8,584.49],"6-30-16":[-5033.92,471.28],"6-30-17":[-5140.65,446.09],"6-30-18":[-5034.68,490.81],"6-30-19":[-4387.03,806.41],"6-30-20":[-5194.52,204.36],"6-30-21":[-4444.26,125.4],"6-30-22":[-4421.26,-25.61],"6-30-23":[-4321.97,-25.42],"6-30-24":[-4680.88,-14.04],"6-30-25":[-5059.77,2490.71],"6-30-26":[-4874.36,2540.82],"6-30-27":[-4690.19,-2.77],"6-30-28":[-5085.57,-1.84],"6-30-29":[-4909.25,-2.28],"6-30-30":[-4430.52,-4.28],"6-30-31":[-3787.91,-5.31],"6-30-32":[-3813.24,-8.63],"6-30-33":[-4282.62,-11.24],"6-30-34":[-4055.16,-12.14],"6-30-35":[-4888.98,-9.83],"6-30-36":[-6739.12,-7.4],"6-30-37":[-6668.56,2406.1],"6-30-38":[-2535.05,2428.71],"6-30-39":[-3785.54,-0.38],"6-30-40":[-3944.08,1.26],"6-30-41":[-3640.72,1.53],"6-30-42":[-109.86,126.71],"6-30-43":[-9.48,205.26],"6-30-44":[-9.48,795.12],"6-30-45":[-7.66,480.69],"6-30-46":[-9.07,435.79],"6-30-47":[-9.84,460.48],"6-30-48":[-11.72,559.47],"6-30-49":[-14.44,443.49],"6-30-50":[-16.72,447.4],"6-30-51":[-22.37,278.21],"6-30-52":[-110.99,220.76],"6-30-53":[-173.11,114.06],"6-30-54":[-118.63,158.11],"6-30-55":[-48.98,462.53],"6-30-56":[-132.66,437.71],"6-30-57":[-419.5,576.27],"6-30-58":[-337.86,1562.01],"6-30-59":[-652.43,1824.22],"6-30-60":[-559.27,2275.03],"6-30-61":[-2146.95,2180.52],"6-30-62":[-2620.12,2328.81],"6-30-63":[-4214.89,2744.46],"6-31-0":[-632.33,642.36],"6-31-1":[-1311.87,2619.83],"5-15-0":[-1311.87,2619.83],"6-31-2":[-1670.02,1700.11],"6-31-3":[-1505.89,2250.64],"5-15-1":[-1958,2250.64],"4-7-0":[-2142.75,2619.83],"6-31-4":[-2104.87,1374.08],"6-31-5":[-1565.53,583.45],"5-15-2":[-2316.35,1397.15],"6-31-6":[-3638.82,413.34],"6-31-7":[-4686.95,1580.64],"5-15-3":[-4686.95,1580.64],"4-7-1":[-4710.07,1580.64],"3-3-0":[-4740.18,3362.09],"6-31-8":[-5042.89,577.62],"6-31-9":[-4980.95,282.12],"5-15-4":[-5124.1,577.62],"6-31-10":[-5310.1,-46.98],"6-31-11":[-5722.75,190.58],"5-15-5":[-6403.12,228.76],"4-7-2":[-6403.12,577.62],"6-31-12":[-6291.76,324],"6-31-13":[-5111.3,447.15],"5-15-6":[-7162.59,456.57],"6-31-14":[-5530.61,671.12],"6-31-15":[-5164.36,604.9],"5-15-7":[-5551.79,671.12],"4-7-3":[-7162.59,807.5],"3-3-1":[-7162.59,3889.28],"2-1-0":[-7162.59,4373.52],"6-31-16":[-4822.44,422.75],"6-31-17":[-4823.05,300.32],"5-15-8":[-5140.65,471.28],"6-31-18":[-4833.5,509.53],"6-31-19":[-4467.91,590.45],"5-15-9":[-5034.68,806.41],"4-7-4":[-6497.54,1115.44],"6-31-20":[-4946.44,146.09],"6-31-21":[-4407.4,78.7],"5-15-10":[-5194.52,204.36],"6-31-22":[-4533.97,-24.95],"6-31-23":[-5033.68,-3.53],"5-15-11":[-5033.68,-3.53],"4-7-5":[-5658.77,3697.19],"3-3-2":[-6497.54,4383.25],"6-31-24":[-5131.34,129.8],"6-31-25":[-4759.71,2495.76],"5-15-12":[-5131.34,2495.76],"6-31-26":[-4820.52,4217.93],"6-31-27":[-4834.53,1667.28],"5-15-13":[-4874.36,4217.93],"4-7-6":[-6091.1,5601.19],"6-31-28":[-5293.16,3.56],"6-31-29":[-4500.18,1.79],"5-15-14":[-5293.16,3.56],"6-31-30":[-4189.47,-0.95],"6-31-31":[-4104.28,1700.45],"5-15-15":[-4430.52,1700.45],"4-7-7":[-5370.65,1700.45],"3-3-3":[-6091.1,5601.19],"2-1-1":[-6924.66,5601.19],"1-0-0":[-10751.44,6207.28],"6-31-32":[-3510.08,1684.42],"6-31-33":[-4070.18,-8.12],"5-15-16":[-4282.62,1684.42],"6-31-34":[-3905.47,-10.22],"6-31-35":[-4170.38,-8.63],"5-15-17":[-4888.98,-8.63],"4-7-8":[-5036.16,1684.42],"6-31-36":[-6565.97,1589.27],"6-31-37":[-1812.77,4112.94],"5-15-18":[-6739.12,4112.94],"6-31-38":[-859.48,2424.67],"6-31-39":[-3743.15,104.44],"5-15-19":[-3785.54,2428.71],"4-7-9":[-6739.12,5523.17],"3-3-4":[-10287.73,5523.17],"6-31-40":[-3908.65,3.59],"6-31-41":[-3567.18,3.57],"5-15-20":[-3944.08,3.59],"6-31-42":[-397.92,76.86],"6-31-43":[-58.3,146.46],"5-15-21":[-397.92,205.26],"4-7-10":[-3944.08,3653.33],"6-31-44":[-6.17,569.71],"6-31-45":[-5.45,505.58],"5-15-22":[-9.48,795.12],"6-31-46":[-4.53,291.79],"6-31-47":[-5.48,416.99],"5-15-23":[-9.84,460.48],"4-7-11":[-15.79,1103.03],"3-3-5":[-3944.08,4305.19],"2-1-2":[-10287.73,5523.17],"6-31-48":[-132.81,589.98],"6-31-49":[-11.96,638.88],"5-15-24":[-132.81,638.88],"6-31-50":[-15.08,443],"6-31-51":[-19.15,311.46],"5-15-25":[-22.37,447.4],"4-7-12":[-132.81,791.33],"6-31-52":[-198.6,182.6],"6-31-53":[-208.92,-9.98],"5-15-26":[-208.92,220.76],"6-31-54":[-201.71,281.1],"6-31-55":[-39.77,576.62],"5-15-27":[-201.71,576.62],"4-7-13":[-208.92,576.62],"3-3-6":[-321.18,3764.34],"6-31-56":[-270.99,1365.62],"6-31-57":[-502.2,424.34],"5-15-28":[-502.2,1365.62],"6-31-58":[-502.24,1267.01],"6-31-59":[-500.79,1887.87],"5-15-29":[-652.43,1887.87],"4-7-14":[-652.43,1887.87],"6-31-60":[-838.7,2175.26],"6-31-61":[-2146.95,1987.13],"5-15-30":[-2146.95,2275.03],"6-31-62":[-2638.31,2714.87],"6-31-63":[-4214.39,2744.46],"5-15-31":[-4214.89,2744.46],"4-7-15":[-4216.39,2761.57],"3-3-7":[-4216.39,3441.15],"2-1-3":[-5094.21,4326.16],"1-0-1":[-10287.73,6095.63],"6-32-0":[-651.16,891.44],"6-32-1":[-1552.49,1948.79],"6-32-2":[-1753.91,2344.15],"6-32-3":[-1288.78,1880.89],"6-32-4":[-1721.76,2029.25],"6-32-5":[-1511.31,684.11],"6-32-6":[-2539.96,367.14],"6-32-7":[-4349.76,395.57],"6-32-8":[-4839.06,546.23],"6-32-9":[-5001.37,248.1],"6-32-10":[-5439.68,-44.47],"6-32-11":[-5724.72,87.35],"6-32-12":[-6336.83,240.44],"6-32-13":[-5142.35,415.1],"6-32-14":[-5460.52,599.34],"6-32-15":[-4689.89,568.7],"6-32-16":[-4679.1,551.43],"6-32-17":[-5583.01,291.63],"6-32-18":[-5370.29,294.32],"6-32-19":[-5027.02,321.49],"6-32-20":[-4299.38,211.56],"6-32-21":[-4681.53,90.38],"6-32-22":[-4375.93,-7.81],"6-32-23":[-4439.29,-7.65],"6-32-24":[-5208.19,200.24],"6-32-25":[-5459.67,1010.31],"6-32-26":[-4966.32,3009.32],"6-32-27":[-4803.68,2376.93],"6-32-28":[-5024,10.91],"6-32-29":[-4552.19,10.51],"6-32-30":[-4518.06,6.74],"6-32-31":[-3413.49,663.37],"6-32-32":[-3814.72,716.38],"6-32-33":[-4502.59,-4.49],"6-32-34":[-3766.35,-6.53],"6-32-35":[-5498.08,-6.02],"6-32-36":[-6062.39,2332.91],"6-32-37":[-3402.81,2916.82],"6-32-38":[-3812.19,964.29],"6-32-39":[-1204.75,182.66],"6-32-40":[-3737.48,5.45],"6-32-41":[-3492.01,6.31],"6-32-42":[-2792.42,86.86],"6-32-43":[-49.18,196.98],"6-32-44":[-5.26,309.51],"6-32-45":[-4.78,279.02],"6-32-46":[-2.44,284.12],"6-32-47":[-68.64,505.12],"6-32-48":[-161.62,554.68],"6-32-49":[-174.75,577.05],"6-32-50":[-11.84,403.02],"6-32-51":[-80.26,236.41],"6-32-52":[-241.21,84.28],"6-32-53":[-273.09,-8.31],"6-32-54":[-233.27,253.41],"6-32-55":[-129.67,539.22],"6-32-56":[-348.03,403.5],"6-32-57":[-470.07,449.89],"6-32-58":[-496.76,1290.61],"6-32-59":[-472.31,2685.38],"6-32-60":[-800.22,2381.84],"6-32-61":[-1910.19,1985.53],"6-32-62":[-2730.3,2244.93],"6-32-63":[-4214.39,2744.46],"6-33-0":[-350.03,366.89],"6-33-1":[-1236.85,1500.73],"5-16-0":[-1552.49,1948.79],"6-33-2":[-1749.59,1693.18],"6-33-3":[-1626.27,2653.23],"5-16-1":[-1753.91,2653.23],"6-33-4":[-2555.32,4704.79],"6-33-5":[-1385.22,1009.47],"5-16-2":[-2555.32,4704.79],"6-33-6":[-1100.12,819.86],"6-33-7":[-4304.38,557.56],"5-16-3":[-4349.76,819.86],"6-33-8":[-4717.53,444.35],"6-33-9":[-5014.69,366.68],"5-16-4":[-5014.69,546.23],"6-33-10":[-5580.11,-42.25],"6-33-11":[-6310.58,-45.96],"5-16-5":[-6310.58,87.35],"6-33-12":[-5887.78,205.42],"6-33-13":[-5096.82,323.91],"5-16-6":[-6336.83,415.1],"6-33-14":[-5141.14,604.67],"6-33-15":[-5045.87,613.05],"5-16-7":[-5460.52,613.05],"6-33-16":[-4428.48,486.54],"6-33-17":[-5579.29,356.67],"5-16-8":[-5583.01,551.43],"6-33-18":[-5095.04,611.43],"6-33-19":[-4956.22,1256.4],"5-16-9":[-5370.29,1256.4],"6-33-20":[-4459.43,703.65],"6-33-21":[-4536.16,133.72],"5-16-10":[-4681.53,703.65],"6-33-22":[-4327.34,-9.17],"6-33-23":[-5710.56,-15.6],"5-16-11":[-5710.56,-7.65],"6-33-24":[-4728.77,38.89],"6-33-25":[-5255.71,-5.73],"5-16-12":[-5459.67,1010.31],"6-33-26":[-5088.65,2458.87],"6-33-27":[-5143.3,2108.97],"5-16-13":[-5143.3,3009.32],"6-33-28":[-5077.06,2165.37],"6-33-29":[-4768.23,21.34],"5-16-14":[-5077.06,2165.37],"6-33-30":[-4621.04,580.04],"6-33-31":[-3768.75,9.28],"5-16-15":[-4621.04,663.37],"6-33-32":[-4778.61,4.83],"6-33-33":[-3866.48,493.04],"5-16-16":[-4778.61,716.38],"6-33-34":[-3463.64,-2.74],"6-33-35":[-5264.94,2112.86],"5-16-17":[-5498.08,2112.86],"6-33-36":[-1265.04,2015.96],"6-33-37":[-5834.04,2371.84],"5-16-18":[-6062.39,2916.82],"6-33-38":[-5561.97,2.74],"6-33-39":[-4850.21,12.09],"5-16-19":[-5561.97,964.29],"6-33-40":[-3721.53,9.43],"6-33-41":[-3446.02,10.75],"5-16-20":[-3737.48,10.75],"6-33-42":[-2926.21,85.16],"6-33-43":[-6.76,670.08],"5-16-21":[-2926.21,670.08],"6-33-44":[-2.13,1191.3],"6-33-45":[-1.46,564.53],"5-16-22":[-5.26,1191.3],"6-33-46":[-0.15,347.1],"6-33-47":[-135.47,473.44],"5-16-23":[-135.47,505.12],"6-33-48":[-256.34,566.65],"6-33-49":[-167.37,570.37],"5-16-24":[-256.34,577.05],"6-33-50":[-7.73,310.25],"6-33-51":[-187.94,187.42],"5-16-25":[-187.94,403.02],"6-33-52":[-241.18,-3.66],"6-33-53":[-285.94,-5.75],"5-16-26":[-285.94,84.28],"6-33-54":[-219.87,399.59],"6-33-55":[-497.41,430.98],"5-16-27":[-497.41,539.22],"6-33-56":[-420.6,576.62],"6-33-57":[-736.8,864.62],"5-16-28":[-736.8,864.62],"6-33-58":[-774.19,1304.63],"6-33-59":[-793.68,4721.94],"5-16-29":[-793.68,4721.94],"6-33-60":[-800.68,2555.4],"6-33-61":[-1816.41,1732.44],"5-16-30":[-1910.19,2555.4],"6-33-62":[-2782.86,2245.57],"6-33-63":[-4214.89,2744.47],"5-16-31":[-4214.89,2744.47],"6-34-0":[-454.83,542.8],"6-34-1":[-1478.32,428.27],"6-34-2":[-1866.74,1823.83],"6-34-3":[-2047.48,2270.95],"6-34-4":[-2606.71,1556.84],"6-34-5":[-2627.94,1913.68],"6-34-6":[-1191.1,1056.55],"6-34-7":[-4260.54,570.75],"6-34-8":[-4632.93,613.97],"6-34-9":[-4928.09,433.17],"6-34-10":[-5263.71,-38.64],"6-34-11":[-6036.97,-44.35],"6-34-12":[-6155.38,171.79],"6-34-13":[-5688.04,145.12],"6-34-14":[-4849.44,594.92],"6-34-15":[-4302.63,614.36],"6-34-16":[-4708.92,432.14],"6-34-17":[-5187.86,436.84],"6-34-18":[-4796.58,1652.42],"6-34-19":[-4753.59,2004.7],"6-34-20":[-4390.66,358.2],"6-34-21":[-4342.5,76.45],"6-34-22":[-5078.47,86.32],"6-34-23":[-4795.27,678.56],"6-34-24":[-4711.24,565.42],"6-34-25":[-4864.62,19.57],"6-34-26":[-5307.29,735.54],"6-34-27":[-5583.4,729.46],"6-34-28":[-5386.72,3818.31],"6-34-29":[-5922.69,1199.76],"6-34-30":[-5526.33,213.98],"6-34-31":[-4419.31,21.13],"6-34-32":[-4679.46,20.08],"6-34-33":[-4932.19,93.97],"6-34-34":[-4711.18,1158.76],"6-34-35":[-3210.82,3734.31],"6-34-36":[-3366.76,691.45],"6-34-37":[-1999.35,687.54],"6-34-38":[-6807.88,9.8],"6-34-39":[-4726.82,503.41],"6-34-40":[-3500.23,611.32],"6-34-41":[-344.47,88.56],"6-34-42":[-83.1,82.28],"6-34-43":[-41.18,336.97],"6-34-44":[1.55,1938.99],"6-34-45":[1.48,1607.82],"6-34-46":[1.54,428.39],"6-34-47":[-71.85,420.82],"6-34-48":[-80.29,600.77],"6-34-49":[-1.02,564.78],"6-34-50":[-56.04,146.55],"6-34-51":[-187.94,168.79],"6-34-52":[-252.94,-1.44],"6-34-53":[-311.22,-3.74],"6-34-54":[-313.66,517.83],"6-34-55":[-438.4,576.97],"6-34-56":[-237.34,538.73],"6-34-57":[-161.05,1030.58],"6-34-58":[-811.08,1906.63],"6-34-59":[-838.51,1732.84],"6-34-60":[-783.24,2250.43],"6-34-61":[-1769.21,1753.86],"6-34-62":[-2783.53,2251.13],"6-34-63":[-4219.24,2745.47],"6-35-0":[-459.62,452.64],"6-35-1":[-1463.64,603.08],"5-17-0":[-1478.32,603.08],"6-35-2":[-1858.56,1923.59],"6-35-3":[-2344.57,2313.91],"5-17-1":[-2344.57,2313.91],"4-8-0":[-2344.57,2653.23],"6-35-4":[-2871.64,2252.73],"6-35-5":[-2571.35,1712.44],"5-17-2":[-2871.64,2252.73],"6-35-6":[-1027.03,1559.44],"6-35-7":[-4207.3,272.32],"5-17-3":[-4260.54,1559.44],"4-8-1":[-4349.76,4704.79],"6-35-8":[-4447.9,185.61],"6-35-9":[-5050.87,184.52],"5-17-4":[-5050.87,613.97],"6-35-10":[-5719.26,293.27],"6-35-11":[-5529.33,81.87],"5-17-5":[-6036.97,293.27],"4-8-2":[-6310.58,613.97],"6-35-12":[-5305.72,123.7],"6-35-13":[-4672.46,181.36],"5-17-6":[-6155.38,181.36],"6-35-14":[-4394.81,536.17],"6-35-15":[-4785.62,651.7],"5-17-7":[-4849.44,651.7],"4-8-3":[-6336.83,651.7],"6-35-16":[-5189.33,701.76],"6-35-17":[-5118.02,951.43],"5-17-8":[-5189.33,951.43],"6-35-18":[-4407.59,1713.99],"6-35-19":[-4331.47,1476.72],"5-17-9":[-4796.58,2004.7],"4-8-4":[-5583.01,2004.7],"6-35-20":[-4392,1834.6],"6-35-21":[-4783.03,28.94],"5-17-10":[-4783.03,1834.6],"6-35-22":[-4621.18,840.08],"6-35-23":[-4947.87,293.76],"5-17-11":[-5078.47,840.08],"4-8-5":[-5710.56,1834.6],"6-35-24":[-5282.94,1104.62],"6-35-25":[-4816.41,14.26],"5-17-12":[-5282.94,1104.62],"6-35-26":[-5347.3,8.26],"6-35-27":[-6488.32,357.63],"5-17-13":[-6488.32,735.54],"4-8-6":[-6488.32,3009.32],"6-35-28":[-6906.46,1960.73],"6-35-29":[-6336.37,4007.75],"5-17-14":[-6906.46,4007.75],"6-35-30":[-4440.69,4388.45],"6-35-31":[-4459.71,6213.75],"5-17-15":[-5526.33,6213.75],"4-8-7":[-6906.46,6213.75],"6-35-32":[-5218.74,6286.78],"6-35-33":[-5042.7,4458.62],"5-17-16":[-5218.74,6286.78],"6-35-34":[-4708.73,4118.74],"6-35-35":[-4012.1,1896.73],"5-17-17":[-4711.18,4118.74],"4-8-8":[-5498.08,6286.78],"6-35-36":[-3818.41,288.63],"6-35-37":[-2951.15,21.77],"5-17-18":[-3818.41,691.45],"6-35-38":[-7357.49,22.14],"6-35-39":[-4359.2,1048.6],"5-17-19":[-7357.49,1048.6],"4-8-9":[-7357.49,2916.82],"6-35-40":[-1553.17,257.76],"6-35-41":[-946.57,470.08],"5-17-20":[-3500.23,611.32],"6-35-42":[-1053.62,27.72],"6-35-43":[-866.11,1091.31],"5-17-21":[-1053.62,1091.31],"4-8-10":[-3737.48,1091.31],"6-35-44":[-69.43,1392.94],"6-35-45":[4.72,1677.79],"5-17-22":[-69.43,1938.99],"6-35-46":[4.86,939.44],"6-35-47":[-106.62,672.4],"5-17-23":[-106.62,939.44],"4-8-11":[-135.47,1938.99],"6-35-48":[-33.74,618.24],"6-35-49":[-3.08,519.17],"5-17-24":[-80.29,618.24],"6-35-50":[-125.18,177.05],"6-35-51":[-247.54,111.71],"5-17-25":[-247.54,177.05],"4-8-12":[-256.34,618.24],"6-35-52":[-237.66,68.63],"6-35-53":[-245.4,250.26],"5-17-26":[-311.22,250.26],"6-35-54":[-548.44,169.55],"6-35-55":[-478.9,182.61],"5-17-27":[-548.44,576.97],"4-8-13":[-548.44,576.97],"6-35-56":[-197.41,197.49],"6-35-57":[-850.85,1559.44],"5-17-28":[-850.85,1559.44],"6-35-58":[-952.94,1784.85],"6-35-59":[-708.27,2036.4],"5-17-29":[-952.94,2036.4],"4-8-14":[-952.94,4721.94],"6-35-60":[-528.88,2299.86],"6-35-61":[-1592.98,1971.3],"5-17-30":[-1769.21,2299.86],"6-35-62":[-2784.06,2260.72],"6-35-63":[-4215.39,2745.47],"5-17-31":[-4219.24,2745.47],"4-8-15":[-4219.24,2745.47],"6-36-0":[-489.79,822.76],"6-36-1":[-1366.27,1154.63],"6-36-2":[-1683.51,2230.75],"6-36-3":[-1884.8,2258.08],"6-36-4":[-2367.54,1817.36],"6-36-5":[-2385.15,2118.71],"6-36-6":[-1364.35,1862.67],"6-36-7":[-4087.74,611.89],"6-36-8":[-4262.94,282.83],"6-36-9":[-5089.76,575.77],"6-36-10":[-5139.84,428.02],"6-36-11":[-5274.38,430.05],"6-36-12":[-4997.51,408.97],"6-36-13":[-4177.36,406.33],"6-36-14":[-4221.39,610.85],"6-36-15":[-4309.16,575.3],"6-36-16":[-5063.08,700.02],"6-36-17":[-4764.18,927.51],"6-36-18":[-4804.48,1201.61],"6-36-19":[-4436.54,191.41],"6-36-20":[-4791.15,-36.24],"6-36-21":[-4697.14,-34.13],"6-36-22":[-4820.37,29.15],"6-36-23":[-5032.56,55.76],"6-36-24":[-6376.98,1947.58],"6-36-25":[-5043.08,2231.33],"6-36-26":[-5556.63,807.13],"6-36-27":[-6025.05,5673.66],"6-36-28":[-2187.54,6657.51],"6-36-29":[-180.23,4957.44],"6-36-30":[-37.47,5414.88],"6-36-31":[-328.06,5809.48],"6-36-32":[-623.84,5906.18],"6-36-33":[-4269.78,5319.85],"6-36-34":[-4417.62,5607.45],"6-36-35":[-4208.62,6754.44],"6-36-36":[-4176.44,5914.69],"6-36-37":[-4288.99,824.13],"6-36-38":[-6848.89,2167.33],"6-36-39":[-6923.15,1828.57],"6-36-40":[-4947.98,411.38],"6-36-41":[-5170.05,422.7],"6-36-42":[-5116.4,27.55],"6-36-43":[-3615.81,26.75],"6-36-44":[-1006.26,156.63],"6-36-45":[-89.15,1138.15],"6-36-46":[-54.04,900.59],"6-36-47":[-201.99,692.08],"6-36-48":[7.17,548.17],"6-36-49":[4.69,580.92],"6-36-50":[-48.23,396.38],"6-36-51":[-242.98,388.95],"6-36-52":[-185.02,401.03],"6-36-53":[-180.3,428.06],"6-36-54":[-562.17,511.81],"6-36-55":[-206.42,273.04],"6-36-56":[-156.47,519.49],"6-36-57":[-1062.12,1733.71],"6-36-58":[-1087.43,1801.07],"6-36-59":[-759.94,1748.06],"6-36-60":[-275.14,2158.52],"6-36-61":[-1442.57,2325.18],"6-36-62":[-2787.79,2281.25],"6-36-63":[-4215.39,2745.47],"6-37-0":[-529.7,950.33],"6-37-1":[-1610.79,1129.6],"5-18-0":[-1610.79,1154.63],"6-37-2":[-1851.99,2437.47],"6-37-3":[-1683.51,2148.92],"5-18-1":[-1884.8,2437.47],"6-37-4":[-1556.76,1260.24],"6-37-5":[-1695.95,1184.79],"5-18-2":[-2385.15,2118.71],"6-37-6":[-1120.23,1808.19],"6-37-7":[-3519.71,1101.49],"5-18-3":[-4087.74,1862.67],"6-37-8":[-4147.78,282.61],"6-37-9":[-4780.41,642.27],"5-18-4":[-5089.76,642.27],"6-37-10":[-5266.36,648.16],"6-37-11":[-5260.84,410.19],"5-18-5":[-5274.38,648.16],"6-37-12":[-4472.73,1084.61],"6-37-13":[-3802.59,2661.91],"5-18-6":[-4997.51,2661.91],"6-37-14":[-1764.59,3481.08],"6-37-15":[-3424.87,3901.29],"5-18-7":[-4309.16,3901.29],"6-37-16":[-3865.32,1597.57],"6-37-17":[-4566.1,1241.62],"5-18-8":[-5063.08,1597.57],"6-37-18":[-5188.07,1352.53],"6-37-19":[-5441.31,-10.6],"5-18-9":[-5441.31,1352.53],"6-37-20":[-5453.77,-42.73],"6-37-21":[-4766.46,-43.8],"5-18-10":[-5453.77,-34.13],"6-37-22":[-5001.2,-41.08],"6-37-23":[-5070.1,26.27],"5-18-11":[-5070.1,55.76],"6-37-24":[-6091.51,1217.95],"6-37-25":[-7536.97,2330.69],"5-18-12":[-7536.97,2330.69],"6-37-26":[-7556.84,5459.75],"6-37-27":[-346.06,5421.57],"5-18-13":[-7556.84,5673.66],"6-37-28":[-49.02,5700.22],"6-37-29":[-23.52,3844.52],"5-18-14":[-2187.54,6657.51],"6-37-30":[-114.49,5315.89],"6-37-31":[-8.04,3836.77],"5-18-15":[-328.06,5809.48],"6-37-32":[117.06,3769.75],"6-37-33":[-136.42,5266.88],"5-18-16":[-4269.78,5906.18],"6-37-34":[-34.08,3760.52],"6-37-35":[-2679.16,5683.59],"5-18-17":[-4417.62,6754.44],"6-37-36":[-4297.04,5564.58],"6-37-37":[-4632.8,5547.75],"5-18-18":[-4632.8,5914.69],"6-37-38":[-5938.07,2250.67],"6-37-39":[-4564.93,1130.92],"5-18-19":[-6923.15,2250.67],"6-37-40":[-5547.39,781.66],"6-37-41":[-5471.37,37.5],"5-18-20":[-5547.39,781.66],"6-37-42":[-5342.72,34.42],"6-37-43":[-5384.9,32.14],"5-18-21":[-5384.9,34.42],"6-37-44":[-4916.35,34.46],"6-37-45":[-3432.19,1376.54],"5-18-22":[-4916.35,1376.54],"6-37-46":[-122.33,1199.69],"6-37-47":[-70.31,1528.77],"5-18-23":[-201.99,1528.77],"6-37-48":[-68.87,4026.29],"6-37-49":[-269.44,3587.09],"5-18-24":[-269.44,4026.29],"6-37-50":[-96.77,2789.91],"6-37-51":[-222.29,1172.63],"5-18-25":[-242.98,2789.91],"6-37-52":[-5.66,395.16],"6-37-53":[-1.67,603.79],"5-18-26":[-185.02,603.79],"6-37-54":[-542.06,589.74],"6-37-55":[-65.58,231.36],"5-18-27":[-562.17,589.74],"6-37-56":[-96.03,1105.5],"6-37-57":[-923.87,1832.24],"5-18-28":[-1062.12,1832.24],"6-37-58":[-1032.37,1660.76],"6-37-59":[-1613.33,1225.22],"5-18-29":[-1613.33,1801.07],"6-37-60":[-479.28,2166.62],"6-37-61":[-1311.15,2452.46],"5-18-30":[-1442.57,2452.46],"6-37-62":[-2784.78,2321.18],"6-37-63":[-4220.26,2745.47],"5-18-31":[-4220.26,2745.47],"6-38-0":[-519.6,681.02],"6-38-1":[-2198.47,1253.78],"6-38-2":[-2189.44,2116.63],"6-38-3":[-1281.64,2052.81],"6-38-4":[-1351.54,1194.93],"6-38-5":[-1749.15,1667.87],"6-38-6":[-1095.72,1736.55],"6-38-7":[-1549.9,2969.55],"6-38-8":[-3766.38,332.82],"6-38-9":[-4402.36,633.8],"6-38-10":[-4964.76,658.27],"6-38-11":[-5005.56,464.64],"6-38-12":[-4494.31,1846.61],"6-38-13":[-982.8,2481.75],"6-38-14":[-30.94,2821.86],"6-38-15":[-404.7,3452.08],"6-38-16":[-470.67,2451.53],"6-38-17":[-481.26,3626.15],"6-38-18":[-86.89,4659.39],"6-38-19":[-8228.12,4831.22],"6-38-20":[-6381.71,4956.12],"6-38-21":[-6742.27,5115.31],"6-38-22":[-7913.93,2168.25],"6-38-23":[-7969.31,2607.62],"6-38-24":[-8050.34,1152.74],"6-38-25":[-8983.51,5763.75],"6-38-26":[-1820.84,6405.39],"6-38-27":[-65.4,6266.34],"6-38-28":[-114.23,4925.73],"6-38-29":[-32.53,5356.84],"6-38-30":[-54.2,3882.23],"6-38-31":[-58.3,839.2],"6-38-32":[68.16,826.19],"6-38-33":[63.39,3838.4],"6-38-34":[43.63,5193.89],"6-38-35":[-82.22,4760.78],"6-38-36":[-5251.11,6360.34],"6-38-37":[-4600.41,6449.41],"6-38-38":[-4723.57,5847.77],"6-38-39":[-5617.49,1104.68],"6-38-40":[-5800.95,2677.33],"6-38-41":[-5756.35,2243.25],"6-38-42":[-5801.58,5156.32],"6-38-43":[-5646.47,5062.63],"6-38-44":[-5456.02,5023.3],"6-38-45":[-4488.42,4724.4],"6-38-46":[-2637.57,3766.16],"6-38-47":[-218.88,2585.5],"6-38-48":[-268.93,3553.09],"6-38-49":[-290.78,3257.62],"6-38-50":[-72.84,2695.15],"6-38-51":[-106.71,1949.61],"6-38-52":[-22.58,448.63],"6-38-53":[-345.6,645.25],"6-38-54":[-425.69,601.83],"6-38-55":[-34.96,322.36],"6-38-56":[-362.66,2784.58],"6-38-57":[-1715.35,1767.29],"6-38-58":[-1598.79,1790.22],"6-38-59":[-1058.75,1401.52],"6-38-60":[-492.06,2004.84],"6-38-61":[-1191,2082.48],"6-38-62":[-2626.37,2346.02],"6-38-63":[-4248.26,2745.47],"6-39-0":[-540.35,1101.15],"6-39-1":[-2345.14,1569.05],"5-19-0":[-2345.14,1569.05],"6-39-2":[-2346.92,1723.34],"6-39-3":[-1117.86,1651.25],"5-19-1":[-2346.92,2116.63],"4-9-0":[-2346.92,2437.47],"6-39-4":[-1326.57,1535.69],"6-39-5":[-1071.1,1564.82],"5-19-2":[-1749.15,1667.87],"6-39-6":[-1194.75,2245.82],"6-39-7":[-1603.15,2751.69],"5-19-3":[-1603.15,2969.55],"4-9-1":[-4087.74,2969.55],"3-4-0":[-4349.76,4704.79],"6-39-8":[-3410.04,1942.94],"6-39-9":[-4259.66,781.05],"5-19-4":[-4402.36,1942.94],"6-39-10":[-4838.54,360.51],"6-39-11":[-4796.57,596.29],"5-19-5":[-5005.56,658.27],"4-9-2":[-5274.38,1942.94],"6-39-12":[-1992.23,2555.83],"6-39-13":[-110,1077.82],"5-19-6":[-4494.31,2555.83],"6-39-14":[-97.91,1073.14],"6-39-15":[-70.35,1579.36],"5-19-7":[-404.7,3452.08],"4-9-3":[-4997.51,3901.29],"3-4-1":[-6336.83,3901.29],"6-39-16":[-56.2,1927.38],"6-39-17":[-75.76,1953.98],"5-19-8":[-481.26,3626.15],"6-39-18":[-85.75,3926.12],"6-39-19":[-95.04,5824.32],"5-19-9":[-8228.12,5824.32],"4-9-4":[-8228.12,5824.32],"6-39-20":[-101.46,6819.12],"6-39-21":[-103.88,6238.9],"5-19-10":[-6742.27,6819.12],"6-39-22":[-105.29,6823.9],"6-39-23":[-347.5,6678.96],"5-19-11":[-7969.31,6823.9],"4-9-5":[-7969.31,6823.9],"3-4-2":[-8228.12,6823.9],"6-39-24":[-1003.53,6134.25],"6-39-25":[-603.21,6488.27],"5-19-12":[-8983.51,6488.27],"6-39-26":[-133.8,6313.82],"6-39-27":[-89.53,5209.77],"5-19-13":[-1820.84,6405.39],"4-9-6":[-8983.51,6488.27],"6-39-28":[-34.01,3550.67],"6-39-29":[-4.7,404.14],"5-19-14":[-114.23,5356.84],"6-39-30":[-66.26,759.95],"6-39-31":[-103.64,984.95],"5-19-15":[-103.64,3882.23],"4-9-7":[-2187.54,6657.51],"3-4-3":[-8983.51,6657.51],"6-39-32":[-0.58,914.93],"6-39-33":[34.67,648.95],"5-19-16":[-0.58,3838.4],"6-39-34":[29.78,308.24],"6-39-35":[-1861.76,3455.66],"5-19-17":[-1861.76,5193.89],"4-9-8":[-4417.62,6754.44],"6-39-36":[-5294.02,5347.83],"6-39-37":[-5290.9,6455.95],"5-19-18":[-5294.02,6455.95],"6-39-38":[-8591.11,6600.28],"6-39-39":[-8438.23,6222.25],"5-19-19":[-8591.11,6600.28],"4-9-9":[-8591.11,6600.28],"3-4-4":[-8591.11,6754.44],"6-39-40":[-5981.36,6775.96],"6-39-41":[-6284.61,6919.9],"5-19-20":[-6284.61,6919.9],"6-39-42":[-5637.46,6300.89],"6-39-43":[-5662.35,6969.13],"5-19-21":[-5801.58,6969.13],"4-9-10":[-6284.61,6969.13],"6-39-44":[-5728.78,5888.33],"6-39-45":[-5031.43,3998.13],"5-19-22":[-5728.78,5888.33],"6-39-46":[-3807.89,2022.28],"6-39-47":[-332.14,1957.39],"5-19-23":[-3807.89,3766.16],"4-9-11":[-5728.78,5888.33],"3-4-5":[-6284.61,6969.13],"6-39-48":[-175.48,1477.25],"6-39-49":[-384.07,1097.15],"5-19-24":[-384.07,3553.09],"6-39-50":[-1.5,1051.93],"6-39-51":[-63.31,2581.84],"5-19-25":[-106.71,2695.15],"4-9-12":[-384.07,4026.29],"6-39-52":[-197.52,578.19],"6-39-53":[-600.93,341.52],"5-19-26":[-600.93,645.25],"6-39-54":[-718.65,797.88],"6-39-55":[-24.6,1701.66],"5-19-27":[-718.65,1701.66],"4-9-13":[-718.65,1701.66],"3-4-6":[-718.65,4026.29],"6-39-56":[-498.94,2876.77],"6-39-57":[-2351.44,2323.88],"5-19-28":[-2351.44,2876.77],"6-39-58":[-2355.6,2011.29],"6-39-59":[-1040.24,1401.52],"5-19-29":[-2355.6,2011.29],"4-9-14":[-2355.6,2876.77],"6-39-60":[-450.15,1746.17],"6-39-61":[-1380.02,1850.39],"5-19-30":[-1380.02,2082.48],"6-39-62":[-2491.33,2348.16],"6-39-63":[-4221.26,2745.47],"5-19-31":[-4248.26,2745.47],"4-9-15":[-4248.26,2745.47],"3-4-7":[-4248.26,4721.94],"6-40-0":[-518.26,955.16],"6-40-1":[-1903.37,2049.21],"6-40-2":[-2397.96,1837.18],"6-40-3":[-1139.43,1301.31],"6-40-4":[-1317.34,1474.89],"6-40-5":[-852.66,1902.88],"6-40-6":[-1199.74,1790.09],"6-40-7":[-1039.02,2087.2],"6-40-8":[-1484.99,2121.08],"6-40-9":[-4113.48,1148.56],"6-40-10":[-5256.25,1032.11],"6-40-11":[-5559.15,935.94],"6-40-12":[-4034.62,1017.96],"6-40-13":[-239.87,1031.68],"6-40-14":[-129.01,1255.33],"6-40-15":[-156.96,787.13],"6-40-16":[-112.19,1095.82],"6-40-17":[-149.28,1612.57],"6-40-18":[-82.04,560.77],"6-40-19":[-88.7,797.37],"6-40-20":[-92.93,2767.12],"6-40-21":[-98.06,4454.06],"6-40-22":[-101.84,6008.42],"6-40-23":[-104.68,6321.87],"6-40-24":[-138.65,5950.05],"6-40-25":[-141.12,5674.19],"6-40-26":[-90.28,5257.92],"6-40-27":[-82.71,249.83],"6-40-28":[-60.97,2718.19],"6-40-29":[-37.5,2385.74],"6-40-30":[-52.83,2826.62],"6-40-31":[-121.52,2785.87],"6-40-32":[-10.01,2582.86],"6-40-33":[7.09,2809.61],"6-40-34":[-11.96,2317.75],"6-40-35":[-1931.5,2634.17],"6-40-36":[-5900.26,415.46],"6-40-37":[-5292.46,5469.94],"6-40-38":[-8473.44,5778.21],"6-40-39":[-8765.31,6050.05],"6-40-40":[-6184.48,6388.87],"6-40-41":[-6021.8,6039.42],"6-40-42":[-6469.31,4549.07],"6-40-43":[-5770.41,2816.12],"6-40-44":[-5499.84,812.73],"6-40-45":[-5107.82,598.59],"6-40-46":[-4907.4,1675.56],"6-40-47":[-1909.77,1125.83],"6-40-48":[-144.12,739.39],"6-40-49":[-415.2,1230.12],"6-40-50":[9.92,1016.65],"6-40-51":[-12.01,1141.97],"6-40-52":[-177.35,907.17],"6-40-53":[-969.23,971.12],"6-40-54":[-709.63,1167.51],"6-40-55":[-1316.7,2130.8],"6-40-56":[-1953,2245.41],"6-40-57":[-2399.4,2040.57],"6-40-58":[-2406.73,2090.43],"6-40-59":[-957.04,1300.57],"6-40-60":[-820.36,1398.5],"6-40-61":[-1488.61,1801.27],"6-40-62":[-2390.21,2344.27],"6-40-63":[-4215.39,2745.47],"6-41-0":[-375.14,788.95],"6-41-1":[-626.85,1980.15],"5-20-0":[-1903.37,2049.21],"6-41-2":[-2305.3,951.78],"6-41-3":[-1106.51,1019.58],"5-20-1":[-2397.96,1837.18],"6-41-4":[-897.08,1639.31],"6-41-5":[-1223.78,1899.16],"5-20-2":[-1317.34,1902.88],"6-41-6":[-1257.9,2841.54],"6-41-7":[-1237.22,3005.49],"5-20-3":[-1257.9,3005.49],"6-41-8":[-1400.73,2174.82],"6-41-9":[-4875.59,2640.33],"5-20-4":[-4875.59,2640.33],"6-41-10":[-4863.8,1491.48],"6-41-11":[-4557.28,1587.28],"5-20-5":[-5559.15,1587.28],"6-41-12":[-4321.84,864.36],"6-41-13":[-562.25,1005.83],"5-20-6":[-4321.84,1031.68],"6-41-14":[-181.17,588],"6-41-15":[-141.59,347.02],"5-20-7":[-181.17,1255.33],"6-41-16":[-162.09,265.73],"6-41-17":[-160.53,167.98],"5-20-8":[-162.09,1612.57],"6-41-18":[-71.61,1130.86],"6-41-19":[-78.01,364.32],"5-20-9":[-88.7,1130.86],"6-41-20":[-85.81,1807.61],"6-41-21":[-94.07,1879.15],"5-20-10":[-98.06,4454.06],"6-41-22":[-102.75,1192.45],"6-41-23":[-105.57,2546.24],"5-20-11":[-105.57,6321.87],"6-41-24":[-129.54,4079.61],"6-41-25":[-129.48,4284.46],"5-20-12":[-141.12,5950.05],"6-41-26":[-90.4,875.94],"6-41-27":[-83.95,666.67],"5-20-13":[-90.4,5257.92],"6-41-28":[-92.41,2565.59],"6-41-29":[-92.52,2449.21],"5-20-14":[-92.52,2718.19],"6-41-30":[4.52,2659.72],"6-41-31":[-1083.88,2129.57],"5-20-15":[-1083.88,2826.62],"6-41-32":[-35.4,2040.48],"6-41-33":[-58.32,2642.7],"5-20-16":[-58.32,2809.61],"6-41-34":[-21.58,2230.21],"6-41-35":[-1469.01,2467.61],"5-20-17":[-1931.5,2634.17],"6-41-36":[-4732.86,684.67],"6-41-37":[-4486.55,910.63],"5-20-18":[-5900.26,5469.94],"6-41-38":[-7810.98,4327.46],"6-41-39":[-8307.1,4098.61],"5-20-19":[-8765.31,6050.05],"6-41-40":[-6255.3,2622.25],"6-41-41":[-6370.08,1259.46],"5-20-20":[-6370.08,6388.87],"6-41-42":[-6091.27,1956.16],"6-41-43":[-5359.24,1847.62],"5-20-21":[-6469.31,4549.07],"6-41-44":[-5477.52,370.32],"6-41-45":[-5478.14,1242.87],"5-20-22":[-5499.84,1242.87],"6-41-46":[-5151.26,172.48],"6-41-47":[-3392.7,258.78],"5-20-23":[-5151.26,1675.56],"6-41-48":[-137.1,330.93],"6-41-49":[-460.55,546.49],"5-20-24":[-460.55,1230.12],"6-41-50":[10.24,988.83],"6-41-51":[-147.13,987.97],"5-20-25":[-147.13,1141.97],"6-41-52":[-427.03,1511.26],"6-41-53":[-750.68,1408.43],"5-20-26":[-969.23,1511.26],"6-41-54":[-589.21,2255.29],"6-41-55":[-772.02,2099.32],"5-20-27":[-1316.7,2255.29],"6-41-56":[-2123.37,2890.49],"6-41-57":[-2314.58,2528.76],"5-20-28":[-2399.4,2890.49],"6-41-58":[-2174.37,1987.4],"6-41-59":[-704.38,1390.38],"5-20-29":[-2406.73,2090.43],"6-41-60":[-1053.08,1209.84],"6-41-61":[-1736.3,967.78],"5-20-30":[-1736.3,1801.27],"6-41-62":[-2104.34,2332.43],"6-41-63":[-4222.3,2745.47],"5-20-31":[-4222.3,2745.47],"6-42-0":[-453.13,803.72],"6-42-1":[-1912.63,1447.17],"6-42-2":[-2173.89,636.09],"6-42-3":[-1352.22,1412.39],"6-42-4":[-879.27,1850.85],"6-42-5":[-1795.07,1425.68],"6-42-6":[-1103.4,1254.23],"6-42-7":[-613.53,109.47],"6-42-8":[-1048.58,2037.53],"6-42-9":[-4655.1,2218.59],"6-42-10":[-5197,19.12],"6-42-11":[-4779.19,1027.48],"6-42-12":[-4818.14,846.11],"6-42-13":[-1704.28,704.1],"6-42-14":[-1339.29,560.68],"6-42-15":[-2117.74,626.18],"6-42-16":[-2434.12,12.82],"6-42-17":[-97.7,9.64],"6-42-18":[-63.96,727.01],"6-42-19":[-70.71,146.41],"6-42-20":[-79.19,153.45],"6-42-21":[-92.99,121.66],"6-42-22":[-102.26,227.97],"6-42-23":[-104.51,246.54],"6-42-24":[-109.89,620.33],"6-42-25":[-127.72,1291.8],"6-42-26":[-127.8,1415.28],"6-42-27":[-108.65,1174.77],"6-42-28":[-95.38,906.03],"6-42-29":[-54.23,2236.77],"6-42-30":[-10.46,2551.06],"6-42-31":[-8.06,1982.48],"6-42-32":[-47.66,1810.47],"6-42-33":[-73.31,2410.43],"6-42-34":[-221.29,2194.7],"6-42-35":[-2087.24,851],"6-42-36":[-3955.53,1044.76],"6-42-37":[-6015.39,1316.28],"6-42-38":[-7426.7,1325.79],"6-42-39":[-6458.04,644.34],"6-42-40":[-6448.9,249.8],"6-42-41":[-7561.67,233.97],"6-42-42":[-7274.89,142.11],"6-42-43":[-6028.69,159.46],"6-42-44":[-5656.3,171.01],"6-42-45":[-5488.93,773.01],"6-42-46":[-5388.86,27.54],"6-42-47":[-4682.72,24.63],"6-42-48":[-546.32,617.18],"6-42-49":[-1069.25,540.69],"6-42-50":[-212.17,710.18],"6-42-51":[-710.71,831.11],"6-42-52":[-2466.84,974.47],"6-42-53":[-2642.04,41.77],"6-42-54":[-2230.11,2109.78],"6-42-55":[-1447.8,2069.8],"6-42-56":[-1941.74,269.27],"6-42-57":[-1984.8,1250.11],"6-42-58":[-1167.28,1211.47],"6-42-59":[-877.97,1082.45],"6-42-60":[-1133.93,1364.36],"6-42-61":[-1831.57,889.65],"6-42-62":[-2119.05,2326.44],"6-42-63":[-4223.29,2745.48],"6-43-0":[-435.12,768.15],"6-43-1":[-1633.64,761.78],"5-21-0":[-1912.63,1447.17],"6-43-2":[-1955.14,1359.43],"6-43-3":[-1586.09,1941.41],"5-21-1":[-2173.89,1941.41],"4-10-0":[-2397.96,2049.21],"6-43-4":[-843.7,2238.22],"6-43-5":[-674.96,1021.33],"5-21-2":[-1795.07,2238.22],"6-43-6":[-944.44,56.07],"6-43-7":[-951.56,55.35],"5-21-3":[-1103.4,1254.23],"4-10-1":[-1795.07,3005.49],"6-43-8":[-650.15,49.44],"6-43-9":[-2315.61,1677.31],"5-21-4":[-4655.1,2218.59],"6-43-10":[-5276.84,55.02],"6-43-11":[-5621.9,23.83],"5-21-5":[-5621.9,1027.48],"4-10-2":[-5621.9,2640.33],"6-43-12":[-5554.84,1193.16],"6-43-13":[-2774.99,895.93],"5-21-6":[-5554.84,1193.16],"6-43-14":[-4993.64,804.73],"6-43-15":[-5579.67,566.65],"5-21-7":[-5579.67,804.73],"4-10-3":[-5579.67,1255.33],"6-43-16":[-5390.46,-4.42],"6-43-17":[-4092.11,-13.27],"5-21-8":[-5390.46,12.82],"6-43-18":[-95.28,432.02],"6-43-19":[-63.3,214.23],"5-21-9":[-95.28,727.01],"4-10-4":[-5390.46,1612.57],"6-43-20":[-73.49,367.29],"6-43-21":[-87.06,352.61],"5-21-10":[-92.99,367.29],"6-43-22":[-94.59,661.37],"6-43-23":[-97.23,692.98],"5-21-11":[-104.51,692.98],"4-10-5":[-105.57,6321.87],"6-43-24":[-97.15,809.32],"6-43-25":[-102.43,1167.79],"5-21-12":[-127.72,1291.8],"6-43-26":[-113.66,921.21],"6-43-27":[-108.06,686.04],"5-21-13":[-127.8,1415.28],"4-10-6":[-141.12,5950.05],"6-43-28":[-95.84,602.42],"6-43-29":[-77.21,647.02],"5-21-14":[-95.84,2236.77],"6-43-30":[-149.21,1207.52],"6-43-31":[-18.35,1109.8],"5-21-15":[-149.21,2551.06],"4-10-7":[-1083.88,2826.62],"6-43-32":[-59.96,1027.78],"6-43-33":[-57.01,1121.51],"5-21-16":[-73.31,2410.43],"6-43-34":[-2930.18,657.03],"6-43-35":[-4527.52,621.44],"5-21-17":[-4527.52,2194.7],"4-10-8":[-4527.52,2809.61],"6-43-36":[-5297.58,689.04],"6-43-37":[-6039.3,949.21],"5-21-18":[-6039.3,1316.28],"6-43-38":[-6230.06,1245.78],"6-43-39":[-7317.05,856.34],"5-21-19":[-7426.7,1325.79],"4-10-9":[-8765.31,6050.05],"6-43-40":[-7777.47,738.99],"6-43-41":[-8245.68,703.38],"5-21-20":[-8245.68,738.99],"6-43-42":[-6689.99,362.62],"6-43-43":[-6202.56,395.29],"5-21-21":[-7274.89,395.29],"4-10-10":[-8245.68,6388.87],"6-43-44":[-6937.73,228.24],"6-43-45":[-5692.36,445.18],"5-21-22":[-6937.73,773.01],"6-43-46":[-5434.99,26.5],"6-43-47":[-4811.38,19.67],"5-21-23":[-5434.99,27.54],"4-10-11":[-6937.73,1675.56],"6-43-48":[-516.46,521.4],"6-43-49":[-513.94,786.22],"5-21-24":[-1069.25,786.22],"6-43-50":[-303.89,858.37],"6-43-51":[-2693.23,1148.31],"5-21-25":[-2693.23,1148.31],"4-10-12":[-2693.23,1230.12],"6-43-52":[-3342.42,41.03],"6-43-53":[-3212.72,44.21],"5-21-26":[-3342.42,974.47],"6-43-54":[-2665.55,1728.16],"6-43-55":[-1317.01,37.01],"5-21-27":[-2665.55,2109.78],"4-10-13":[-3342.42,2255.29],"6-43-56":[-1257.74,22.37],"6-43-57":[-970.28,259.92],"5-21-28":[-1984.8,1250.11],"6-43-58":[-1268.2,1118.73],"6-43-59":[-649.94,512.61],"5-21-29":[-1268.2,1211.47],"4-10-14":[-2406.73,2890.49],"6-43-60":[-599.83,1177.05],"6-43-61":[-1811.25,1371.37],"5-21-30":[-1831.57,1371.37],"6-43-62":[-2242.68,2317.26],"6-43-63":[-4215.39,2745.48],"5-21-31":[-4223.29,2745.48],"4-10-15":[-4223.29,2745.48],"6-44-0":[-401.99,533.78],"6-44-1":[-1084.56,771.47],"6-44-2":[-1764.29,1711.26],"6-44-3":[-1608.19,2089.38],"6-44-4":[-815.35,2319.04],"6-44-5":[-552.8,1708.39],"6-44-6":[-2155.62,1880.96],"6-44-7":[-2812.72,1854.07],"6-44-8":[-2870.71,1029.06],"6-44-9":[-2580.17,758.51],"6-44-10":[-4212.93,1786.88],"6-44-11":[-5974.95,35.64],"6-44-12":[-5589.14,148.72],"6-44-13":[-3396.26,486.61],"6-44-14":[-6359.32,577.05],"6-44-15":[-6549.98,408.54],"6-44-16":[-5888.74,8.57],"6-44-17":[-5613.75,-6.77],"6-44-18":[-4438.41,0.15],"6-44-19":[-1095.24,485.4],"6-44-20":[-431.29,464.32],"6-44-21":[-77.89,558.14],"6-44-22":[-85.04,878.92],"6-44-23":[-89.27,777.81],"6-44-24":[-91.01,742.52],"6-44-25":[-96.71,869.35],"6-44-26":[-98.96,900.05],"6-44-27":[-95.93,596.31],"6-44-28":[-95.18,733.32],"6-44-29":[-81.6,685.36],"6-44-30":[-61.24,1030.82],"6-44-31":[-99.31,889.3],"6-44-32":[-68.02,823.15],"6-44-33":[-45.24,1008.83],"6-44-34":[-2993.36,694.41],"6-44-35":[-4943.53,753.33],"6-44-36":[-5604.1,612.29],"6-44-37":[-5946.15,914.71],"6-44-38":[-6280.97,880.42],"6-44-39":[-7026.06,752.75],"6-44-40":[-7602.91,799.57],"6-44-41":[-6892.43,899.62],"6-44-42":[-6396.59,584.15],"6-44-43":[-5958.12,482.27],"6-44-44":[-5830.6,526.4],"6-44-45":[-5636.92,25.03],"6-44-46":[-5566.01,22.2],"6-44-47":[-5012.17,4.24],"6-44-48":[-1354.96,372.42],"6-44-49":[-617.47,514.04],"6-44-50":[-571.38,465.61],"6-44-51":[-3493,125.75],"6-44-52":[-3733.16,41.14],"6-44-53":[-3548.01,1523.88],"6-44-54":[-2867.09,578.59],"6-44-55":[-915.51,1108.35],"6-44-56":[-963.76,1813.61],"6-44-57":[-968.04,1896.59],"6-44-58":[-1231.82,1033.64],"6-44-59":[-144.3,780.38],"6-44-60":[-408.65,1172.05],"6-44-61":[-1797.59,1540.95],"6-44-62":[-2498.95,2298.91],"6-44-63":[-4215.39,2745.48],"6-45-0":[-514.14,579.03],"6-45-1":[-1079.97,716.42],"5-22-0":[-1084.56,771.47],"6-45-2":[-1682.8,1919.3],"6-45-3":[-1622.24,2185.38],"5-22-1":[-1764.29,2185.38],"6-45-4":[-758.02,2333.41],"6-45-5":[-564,2344.97],"5-22-2":[-815.35,2344.97],"6-45-6":[-3106.06,2399.4],"6-45-7":[-3469.32,1842.92],"5-22-3":[-3469.32,2399.4],"6-45-8":[-3594.96,2229.6],"6-45-9":[-3416.97,1280.25],"5-22-4":[-3594.96,2229.6],"6-45-10":[-5404.29,59.8],"6-45-11":[-5903.43,52.29],"5-22-5":[-5974.95,1786.88],"6-45-12":[-5584.37,48.25],"6-45-13":[-3699.42,43.66],"5-22-6":[-5589.14,486.61],"6-45-14":[-6475.73,301],"6-45-15":[-6553.82,337.49],"5-22-7":[-6553.82,577.05],"6-45-16":[-6157.36,30.39],"6-45-17":[-5825.15,6.02],"5-22-8":[-6157.36,30.39],"6-45-18":[-5323.59,-1.97],"6-45-19":[-4325.6,21.81],"5-22-9":[-5323.59,485.4],"6-45-20":[-1151.79,503.24],"6-45-21":[-62.29,1073.19],"5-22-10":[-1151.79,1073.19],"6-45-22":[-68.68,1362.48],"6-45-23":[-75.93,1318.62],"5-22-11":[-89.27,1362.48],"6-45-24":[-80.15,605.26],"6-45-25":[-85.3,1036.98],"5-22-12":[-96.71,1036.98],"6-45-26":[-89.68,1009.26],"6-45-27":[-90.85,499.44],"5-22-13":[-98.96,1009.26],"6-45-28":[-90.85,721.91],"6-45-29":[-87.64,772.95],"5-22-14":[-95.18,772.95],"6-45-30":[-71.92,795.54],"6-45-31":[-95.64,654.41],"5-22-15":[-99.31,1030.82],"6-45-32":[-74.95,667.42],"6-45-33":[-2803.2,777.54],"5-22-16":[-2803.2,1008.83],"6-45-34":[-4763.78,806.95],"6-45-35":[-5170.62,772.15],"5-22-17":[-5170.62,806.95],"6-45-36":[-5575.31,508.2],"6-45-37":[-6275.55,1020.26],"5-22-18":[-6275.55,1020.26],"6-45-38":[-6065.98,1043.99],"6-45-39":[-6587.67,630.24],"5-22-19":[-7026.06,1043.99],"6-45-40":[-6536.49,1344.63],"6-45-41":[-6510.29,1399.29],"5-22-20":[-7602.91,1399.29],"6-45-42":[-6285.66,1093.19],"6-45-43":[-6352.74,529.24],"5-22-21":[-6396.59,1093.19],"6-45-44":[-6945.4,38.77],"6-45-45":[-5841.63,9.67],"5-22-22":[-6945.4,526.4],"6-45-46":[-5569.08,2.28],"6-45-47":[-4979.43,-0.34],"5-22-23":[-5569.08,22.2],"6-45-48":[-281.94,314.96],"6-45-49":[-741.17,281],"5-22-24":[-1354.96,514.04],"6-45-50":[-3288.47,17.57],"6-45-51":[-3678.29,35.37],"5-22-25":[-3678.29,465.61],"6-45-52":[-3705.27,40.41],"6-45-53":[-3555.83,47.29],"5-22-26":[-3733.16,1523.88],"6-45-54":[-2954.33,1497.68],"6-45-55":[-561.55,2058.1],"5-22-27":[-2954.33,2058.1],"6-45-56":[-871.87,1991.65],"6-45-57":[-1444.63,2162.43],"5-22-28":[-1444.63,2162.43],"6-45-58":[-213.42,734.96],"6-45-59":[-176.36,717.06],"5-22-29":[-1231.82,1033.64],"6-45-60":[-307.69,1258.22],"6-45-61":[-2043.57,1979.94],"5-22-30":[-2043.57,1979.94],"6-45-62":[-2799.05,2275.47],"6-45-63":[-4215.39,2745.48],"5-22-31":[-4215.39,2745.48],"6-46-0":[-600.57,253.52],"6-46-1":[-1161.49,110.47],"6-46-2":[-1608.38,1909.74],"6-46-3":[-1608.38,2285.51],"6-46-4":[-660.02,2457.14],"6-46-5":[-587.75,2475.02],"6-46-6":[-3468.61,2542.84],"6-46-7":[-3842.71,1831.68],"6-46-8":[-4135.6,2027.72],"6-46-9":[-4164.77,2175.1],"6-46-10":[-5695.74,1494.43],"6-46-11":[-5636.52,68.28],"6-46-12":[-5418.75,63.25],"6-46-13":[-4699.06,55.81],"6-46-14":[-6555.82,52.22],"6-46-15":[-6273.74,53.92],"6-46-16":[-5934.72,41.06],"6-46-17":[-5945.64,21.16],"6-46-18":[-5476.11,10.12],"6-46-19":[-5080.14,1.96],"6-46-20":[-3726.88,-2.52],"6-46-21":[-2797.96,1768.73],"6-46-22":[-304.2,1772.18],"6-46-23":[-114.49,1703.39],"6-46-24":[-68.86,1058.15],"6-46-25":[-75.75,1031.41],"6-46-26":[-82.25,1437.44],"6-46-27":[-86.6,1104.08],"6-46-28":[-87.21,724.61],"6-46-29":[-85.59,850.74],"6-46-30":[-76.08,432.39],"6-46-31":[-188.32,61.63],"6-46-32":[-465.17,69.74],"6-46-33":[-3641.86,521.39],"6-46-34":[-5009.6,882.74],"6-46-35":[-5227.39,737.91],"6-46-36":[-5366.84,1154.07],"6-46-37":[-6065.49,1475.44],"6-46-38":[-5796.67,1034.42],"6-46-39":[-5802.83,1075.16],"6-46-40":[-6118.27,1855.39],"6-46-41":[-6014.32,1825.17],"6-46-42":[-5802.8,1827.75],"6-46-43":[-6312.21,13.98],"6-46-44":[-5836.48,10.93],"6-46-45":[-5773.27,-0.7],"6-46-46":[-5581.92,-1.87],"6-46-47":[-3927.84,-2.14],"6-46-48":[-3192.19,-2.22],"6-46-49":[-2704.45,9.5],"6-46-50":[-4015.33,14.82],"6-46-51":[-4109.31,36.85],"6-46-52":[-3815.7,40.45],"6-46-53":[-3570.03,1495.91],"6-46-54":[-1414.56,1745.13],"6-46-55":[-499.08,1430.54],"6-46-56":[-1211.42,796],"6-46-57":[-792.03,1400.19],"6-46-58":[-20.54,682.53],"6-46-59":[-312.54,445.25],"6-46-60":[-852.59,814.06],"6-46-61":[-2162.89,1965.25],"6-46-62":[-3090.6,2268.09],"6-46-63":[-4215.39,2745.48],"6-47-0":[-904.59,189.53],"6-47-1":[-1300.87,465.89],"5-23-0":[-1300.87,465.89],"6-47-2":[-1956.75,700.91],"6-47-3":[-1479.71,2373.94],"5-23-1":[-1956.75,2373.94],"4-11-0":[-1956.75,2373.94],"6-47-4":[-904.62,2625.24],"6-47-5":[-979.12,2882.05],"5-23-2":[-979.12,2882.05],"6-47-6":[-3656.18,2840.8],"6-47-7":[-4133.21,2476.32],"5-23-3":[-4133.21,2840.8],"4-11-1":[-4133.21,2882.05],"3-5-0":[-4133.21,3005.49],"6-47-8":[-4535.63,2769.8],"6-47-9":[-4542.9,2769.95],"5-23-4":[-4542.9,2769.95],"6-47-10":[-5649.71,2452.69],"6-47-11":[-4390.16,81.26],"5-23-5":[-5695.74,2452.69],"4-11-2":[-5974.95,2769.95],"6-47-12":[-5320.13,78.26],"6-47-13":[-3965.58,72.82],"5-23-6":[-5418.75,78.26],"6-47-14":[-6582.96,69.47],"6-47-15":[-6227.22,70.1],"5-23-7":[-6582.96,70.1],"4-11-3":[-6582.96,577.05],"3-5-1":[-6582.96,2769.95],"2-2-0":[-6582.96,4704.79],"6-47-16":[-5550.89,55.71],"6-47-17":[-5717.71,40.64],"5-23-8":[-5945.64,55.71],"6-47-18":[-5463.7,29.54],"6-47-19":[-5150.83,22.06],"5-23-9":[-5476.11,29.54],"4-11-4":[-6157.36,485.4],"6-47-20":[-4302.71,15.19],"6-47-21":[-3829.03,4.78],"5-23-10":[-4302.71,1768.73],"6-47-22":[-3450.87,-2.17],"6-47-23":[-169.03,2244.32],"5-23-11":[-3450.87,2244.32],"4-11-5":[-4302.71,2244.32],"3-5-2":[-6157.36,6321.87],"6-47-24":[-50.68,2250.32],"6-47-25":[-59.08,1259.93],"5-23-12":[-75.75,2250.32],"6-47-26":[-65.46,1510.11],"6-47-27":[-76.9,1617.75],"5-23-13":[-86.6,1617.75],"4-11-6":[-98.96,2250.32],"6-47-28":[-76.9,862.81],"6-47-29":[-77.77,653.06],"5-23-14":[-87.21,862.81],"6-47-30":[-72.57,423.19],"6-47-31":[-135.46,169.45],"5-23-15":[-188.32,432.39],"4-11-7":[-188.32,1030.82],"3-5-3":[-1083.88,5950.05],"2-2-1":[-8983.51,6823.9],"6-47-32":[-4004.8,198.92],"6-47-33":[-4253.5,442.32],"5-23-16":[-4253.5,521.39],"6-47-34":[-4745.48,663.07],"6-47-35":[-5210.95,868.81],"5-23-17":[-5227.39,882.74],"4-11-8":[-5227.39,1008.83],"6-47-36":[-5300,1657.87],"6-47-37":[-5463.79,1576.13],"5-23-18":[-6065.49,1657.87],"6-47-38":[-4906.81,1269.93],"6-47-39":[-5194.04,2353.32],"5-23-19":[-5802.83,2353.32],"4-11-9":[-7026.06,2353.32],"3-5-4":[-8765.31,6050.05],"6-47-40":[-6046.99,2413.32],"6-47-41":[-5047.25,2.39],"5-23-20":[-6118.27,2413.32],"6-47-42":[-5501.03,2.77],"6-47-43":[-5758.32,-2.9],"5-23-21":[-6312.21,1827.75],"4-11-10":[-7602.91,2413.32],"6-47-44":[-6089.22,-3.31],"6-47-45":[-5767.68,-4],"5-23-22":[-6089.22,10.93],"6-47-46":[-5390.06,-3],"6-47-47":[-5265.74,-2.76],"5-23-23":[-5581.92,-1.87],"4-11-11":[-6945.4,526.4],"3-5-5":[-8245.68,6388.87],"2-2-2":[-8765.31,6969.13],"6-47-48":[-4565.83,-2.42],"6-47-49":[-4375.17,12.36],"5-23-24":[-4565.83,12.36],"6-47-50":[-4451.86,19.2],"6-47-51":[-4093.83,36.67],"5-23-25":[-4451.86,36.85],"4-11-12":[-4565.83,514.04],"6-47-52":[-3679.12,42.39],"6-47-53":[-3118.44,2073.1],"5-23-26":[-3815.7,2073.1],"6-47-54":[14.52,1814.36],"6-47-55":[-56.43,1185.43],"5-23-27":[-1414.56,1814.36],"4-11-13":[-3815.7,2073.1],"3-5-6":[-4565.83,2255.29],"6-47-56":[-821.49,371.23],"6-47-57":[-206.04,937.06],"5-23-28":[-1211.42,1400.19],"6-47-58":[-257.19,355.03],"6-47-59":[-408.52,457.63],"5-23-29":[-408.52,682.53],"4-11-14":[-1444.63,2162.43],"6-47-60":[-393.65,962.23],"6-47-61":[-2075.98,1373.29],"5-23-30":[-2162.89,1965.25],"6-47-62":[-3803.43,2263.16],"6-47-63":[-4215.39,2745.98],"5-23-31":[-4215.39,2745.98],"4-11-15":[-4215.39,2745.98],"3-5-7":[-4223.29,2890.49],"2-2-3":[-4565.83,4721.94],"6-48-0":[-1002.56,89.53],"6-48-1":[-1625.52,784.32],"6-48-2":[-1856.43,949.4],"6-48-3":[-1397.31,2469.75],"6-48-4":[-934.43,2812.59],"6-48-5":[-1655.77,3024.06],"6-48-6":[-3835.14,3047.68],"6-48-7":[-4422.64,2826.07],"6-48-8":[-4694.59,2785.17],"6-48-9":[-4814.83,2833.9],"6-48-10":[-5546.05,2803.26],"6-48-11":[-4563.38,92.57],"6-48-12":[-5098.13,90.15],"6-48-13":[-3690.49,85.22],"6-48-14":[-6580.29,78.86],"6-48-15":[-6151.22,72.39],"6-48-16":[-6074.8,65.89],"6-48-17":[-5427.71,54.55],"6-48-18":[-6129.36,45.38],"6-48-19":[-5109.91,39.31],"6-48-20":[-4602.01,32.2],"6-48-21":[-4278.58,23.36],"6-48-22":[-3719.52,10.3],"6-48-23":[-2324.46,1973.99],"6-48-24":[-36.66,2699.24],"6-48-25":[-48.75,1971.8],"6-48-26":[-52.31,1656.77],"6-48-27":[-60.66,1603.49],"6-48-28":[-65.09,1259.07],"6-48-29":[-65.14,586.2],"6-48-30":[-85.29,344.01],"6-48-31":[-3865.9,57.26],"6-48-32":[-4518.8,80.25],"6-48-33":[-4888.4,366.28],"6-48-34":[-5293.87,588.21],"6-48-35":[-5433.96,1298.57],"6-48-36":[-5101.32,1756.49],"6-48-37":[-5420.55,1788.77],"6-48-38":[-5745.06,2047.81],"6-48-39":[-5639.86,2789.25],"6-48-40":[-6236.13,2060.99],"6-48-41":[-4727.7,-6.95],"6-48-42":[-5242.68,-7.27],"6-48-43":[-5266.3,-5.74],"6-48-44":[-5333.57,-5.85],"6-48-45":[-5726.45,-5.73],"6-48-46":[-5196.72,-5.21],"6-48-47":[-5068.54,-3.49],"6-48-48":[-4815.61,-1.35],"6-48-49":[-4598.65,16.97],"6-48-50":[-4840.96,17.53],"6-48-51":[-3842.65,35.69],"6-48-52":[-4250.99,41.28],"6-48-53":[-2309.22,2448.9],"6-48-54":[-833.91,2176.59],"6-48-55":[-163.3,1316.63],"6-48-56":[-625.27,364.42],"6-48-57":[-429.12,233.82],"6-48-58":[-370.87,131.2],"6-48-59":[-405.36,213.73],"6-48-60":[-403.85,1124.93],"6-48-61":[-2027.94,1548.87],"6-48-62":[-3799.43,2265.71],"6-48-63":[-4215.39,2746.48],"6-49-0":[-884.4,67.53],"6-49-1":[-1576.67,792.41],"5-24-0":[-1625.52,792.41],"6-49-2":[-968.6,1459.96],"6-49-3":[-1449.32,2462.17],"5-24-1":[-1856.43,2469.75],"6-49-4":[-1271.56,2812.59],"6-49-5":[-2510.28,3141.21],"5-24-2":[-2510.28,3141.21],"6-49-6":[-4105.65,3182.09],"6-49-7":[-4433.76,3042.62],"5-24-3":[-4433.76,3182.09],"6-49-8":[-4797.43,2652.87],"6-49-9":[-5015.21,2012.55],"5-24-4":[-5015.21,2833.9],"6-49-10":[-6312.12,334.77],"6-49-11":[-4263.69,101.28],"5-24-5":[-6312.12,2803.26],"6-49-12":[-4042.22,102],"6-49-13":[-4218.24,98.24],"5-24-6":[-5098.13,102],"6-49-14":[-6403.93,93.09],"6-49-15":[-6267.83,86.06],"5-24-7":[-6580.29,93.09],"6-49-16":[-6293.49,81.48],"6-49-17":[-5597.43,73.88],"5-24-8":[-6293.49,81.48],"6-49-18":[-5448.01,66.2],"6-49-19":[-5367.78,60.53],"5-24-9":[-6129.36,66.2],"6-49-20":[-4884.47,55.5],"6-49-21":[-4997.91,39.04],"5-24-10":[-4997.91,55.5],"6-49-22":[-4463.39,22.35],"6-49-23":[-3796.85,590.73],"5-24-11":[-4463.39,1973.99],"6-49-24":[-2425.07,2757.34],"6-49-25":[-305.26,1443.38],"5-24-12":[-2425.07,2757.34],"6-49-26":[-42.33,1372.15],"6-49-27":[-43.85,1922.31],"5-24-13":[-60.66,1922.31],"6-49-28":[-45.31,1258.47],"6-49-29":[-49.21,961.21],"5-24-14":[-65.14,1259.07],"6-49-30":[-109.15,1068.98],"6-49-31":[-4222.06,110.24],"5-24-15":[-4222.06,1068.98],"6-49-32":[-4682.57,79.72],"6-49-33":[-4896.78,1125.05],"5-24-16":[-4896.78,1125.05],"6-49-34":[-5688.41,966.21],"6-49-35":[-5559.66,1272.47],"5-24-17":[-5688.41,1298.57],"6-49-36":[-5912.92,2017.31],"6-49-37":[-5804.87,1423.16],"5-24-18":[-5912.92,2017.31],"6-49-38":[-6106.25,1567.33],"6-49-39":[-6381.23,2863.35],"5-24-19":[-6381.23,2863.35],"6-49-40":[-6341.73,694.74],"6-49-41":[-5511.51,-9.82],"5-24-20":[-6341.73,2060.99],"6-49-42":[-4982.01,-7.66],"6-49-43":[-5465.76,-7.18],"5-24-21":[-5465.76,-5.74],"6-49-44":[-4910.54,-6.72],"6-49-45":[-5277.97,-6.41],"5-24-22":[-5726.45,-5.73],"6-49-46":[-5311.51,-6.33],"6-49-47":[-5095.47,-4.79],"5-24-23":[-5311.51,-3.49],"6-49-48":[-4913.48,-0.71],"6-49-49":[-4767.83,15],"5-24-24":[-4913.48,16.97],"6-49-50":[-5488.9,15.14],"6-49-51":[-3939.76,37.34],"5-24-25":[-5488.9,37.34],"6-49-52":[-3572.36,40.03],"6-49-53":[-3055.63,450.7],"5-24-26":[-4250.99,2448.9],"6-49-54":[-2100.15,1967.18],"6-49-55":[-830.24,1959.77],"5-24-27":[-2100.15,2176.59],"6-49-56":[-499.68,462.22],"6-49-57":[-211.12,297.17],"5-24-28":[-625.27,462.22],"6-49-58":[-274.87,210.95],"6-49-59":[-342.73,50.33],"5-24-29":[-405.36,213.73],"6-49-60":[-160.19,1081.6],"6-49-61":[-2028.98,1679.35],"5-24-30":[-2028.98,1679.35],"6-49-62":[-3790.08,2265.71],"6-49-63":[-4219.2,2746.48],"5-24-31":[-4219.2,2746.48],"6-50-0":[-934.9,69.52],"6-50-1":[-1469.25,976.22],"6-50-2":[-737.71,1457.67],"6-50-3":[-1618.91,2355],"6-50-4":[-1269.34,2629.12],"6-50-5":[-3058.83,3200.74],"6-50-6":[-4224.36,3253.39],"6-50-7":[-4528.57,3209.33],"6-50-8":[-4867.96,3108.37],"6-50-9":[-5389.9,106.81],"6-50-10":[-5404.37,105.78],"6-50-11":[-3936.37,111.91],"6-50-12":[-3975.13,2633.15],"6-50-13":[-5213.59,108.32],"6-50-14":[-6122.93,103.27],"6-50-15":[-6062.21,96.8],"6-50-16":[-5451.29,93],"6-50-17":[-5793.05,87.83],"6-50-18":[-5441.17,80.4],"6-50-19":[-5078.03,76.44],"6-50-20":[-4896.54,68.85],"6-50-21":[-5006.6,47.85],"6-50-22":[-4983.72,31.01],"6-50-23":[-4241.18,12.45],"6-50-24":[-4270.18,2.19],"6-50-25":[-3977.54,109.32],"6-50-26":[-4394.4,914.15],"6-50-27":[-4327.88,559.81],"6-50-28":[-2118.33,1063.79],"6-50-29":[-34.54,1141.75],"6-50-30":[-3552.2,1000.51],"6-50-31":[-4554.15,-8.32],"6-50-32":[-5281.5,-10.92],"6-50-33":[-4950.78,1106.52],"6-50-34":[-6051.37,1190.32],"6-50-35":[-5728.2,1083.8],"6-50-36":[-6319.68,626.82],"6-50-37":[-6294.95,986.18],"6-50-38":[-7008.06,124.34],"6-50-39":[-6739.38,-5.86],"6-50-40":[-6851.27,-8.26],"6-50-41":[-5929.45,-6.03],"6-50-42":[-5432.53,-1.95],"6-50-43":[-4629.98,-2.36],"6-50-44":[-4319.88,-4.64],"6-50-45":[-5375.44,-4.06],"6-50-46":[-5352.82,-3.83],"6-50-47":[-4886.28,-3.1],"6-50-48":[-4927.65,0.55],"6-50-49":[-4878.3,12.98],"6-50-50":[-4465.96,23.35],"6-50-51":[-3742.67,2738.7],"6-50-52":[-3572.36,41.64],"6-50-53":[-3233.45,44],"6-50-54":[-2680.33,41.06],"6-50-55":[-1017.21,3258.28],"6-50-56":[-385.83,2270.17],"6-50-57":[-210.97,833.52],"6-50-58":[-293.35,735.1],"6-50-59":[-224.42,580.16],"6-50-60":[-151.03,1003.54],"6-50-61":[-1755.39,1715.15],"6-50-62":[-3795.59,2262.46],"6-50-63":[-4236.22,2746.48],"6-51-0":[-907.39,120.52],"6-51-1":[-1308.24,740.14],"5-25-0":[-1469.25,976.22],"6-51-2":[-1060.28,1225.55],"6-51-3":[-1586.02,2251.74],"5-25-1":[-1618.91,2355],"4-12-0":[-1856.43,2469.75],"6-51-4":[-1120.27,2558.11],"6-51-5":[-3440.48,3116.18],"5-25-2":[-3440.48,3200.74],"6-51-6":[-4327.81,3190.72],"6-51-7":[-4613.28,3318.44],"5-25-3":[-4613.28,3318.44],"4-12-1":[-4613.28,3318.44],"6-51-8":[-4928.05,2952.11],"6-51-9":[-5317.04,111.55],"5-25-4":[-5389.9,3108.37],"6-51-10":[-5773.22,118.01],"6-51-11":[-3983.49,122.71],"5-25-5":[-5773.22,122.71],"4-12-2":[-6312.12,3108.37],"6-51-12":[-4736.44,2776.21],"6-51-13":[-5062.61,118.71],"5-25-6":[-5213.59,2776.21],"6-51-14":[-5842.32,113.3],"6-51-15":[-5917.21,108.7],"5-25-7":[-6122.93,113.3],"4-12-3":[-6580.29,2776.21],"6-51-16":[-5510.34,107.59],"6-51-17":[-5386.95,102.26],"5-25-8":[-5793.05,107.59],"6-51-18":[-5246.88,98.78],"6-51-19":[-5023.93,94.27],"5-25-9":[-5441.17,98.78],"4-12-4":[-6293.49,107.59],"6-51-20":[-4702.21,77.17],"6-51-21":[-4520.84,56.25],"5-25-10":[-5006.6,77.17],"6-51-22":[-4931.19,41.92],"6-51-23":[-5003.58,22.97],"5-25-11":[-5003.58,41.92],"4-12-5":[-5006.6,1973.99],"6-51-24":[-4927.8,19.11],"6-51-25":[-4549.86,11.37],"5-25-12":[-4927.8,109.32],"6-51-26":[-4810.57,4.22],"6-51-27":[-4861.84,-3.86],"5-25-13":[-4861.84,914.15],"4-12-6":[-4927.8,2757.34],"6-51-28":[-4937.15,981.16],"6-51-29":[-4430.45,1135.93],"5-25-14":[-4937.15,1141.75],"6-51-30":[-4404.87,305.41],"6-51-31":[-4637.59,-1.06],"5-25-15":[-4637.59,1000.51],"4-12-7":[-4937.15,1259.07],"6-51-32":[-5219.05,-5.27],"6-51-33":[-4625.84,315.67],"5-25-16":[-5281.5,1106.52],"6-51-34":[-5717.47,1194.05],"6-51-35":[-6295.78,1027.17],"5-25-17":[-6295.78,1194.05],"4-12-8":[-6295.78,1298.57],"6-51-36":[-6924.46,-9.5],"6-51-37":[-6878,-8.12],"5-25-18":[-6924.46,986.18],"6-51-38":[-6234.42,-6.58],"6-51-39":[-6390.19,-3.54],"5-25-19":[-7008.06,124.34],"4-12-9":[-7008.06,2863.35],"6-51-40":[-7677.07,-6.14],"6-51-41":[-6648.02,-2.7],"5-25-20":[-7677.07,-2.7],"6-51-42":[-5887.74,4.88],"6-51-43":[-4881.84,4.82],"5-25-21":[-5887.74,4.88],"4-12-10":[-7677.07,2060.99],"6-51-44":[-4683.33,-0.42],"6-51-45":[-4718.71,-0.49],"5-25-22":[-5375.44,-0.42],"6-51-46":[-4904.66,-0.3],"6-51-47":[-4464.49,0.52],"5-25-23":[-5352.82,0.52],"4-12-11":[-5726.45,0.52],"6-51-48":[-4783.84,5.1],"6-51-49":[-5104.6,16.37],"5-25-24":[-5104.6,16.37],"6-51-50":[-4801.07,28.17],"6-51-51":[-3120.41,2916.19],"5-25-25":[-4801.07,2916.19],"4-12-12":[-5488.9,2916.19],"6-51-52":[-3181.33,44.42],"6-51-53":[-3383.44,45.57],"5-25-26":[-3572.36,45.57],"6-51-54":[-2894.6,41.85],"6-51-55":[-1321.25,3107.62],"5-25-27":[-2894.6,3258.28],"4-12-13":[-4250.99,3258.28],"6-51-56":[-153.79,2672.67],"6-51-57":[-145.78,1240.65],"5-25-28":[-385.83,2672.67],"6-51-58":[-210.99,1318.26],"6-51-59":[-468.11,682.83],"5-25-29":[-468.11,1318.26],"4-12-14":[-625.27,2672.67],"6-51-60":[-296.25,994.66],"6-51-61":[-1099.16,1785.3],"5-25-30":[-1755.39,1785.3],"6-51-62":[-3959.51,2257.85],"6-51-63":[-4228.8,2746.48],"5-25-31":[-4236.22,2746.48],"4-12-15":[-4236.22,2746.48],"6-52-0":[-733.46,128.52],"6-52-1":[-1214.07,792.32],"6-52-2":[-1144.24,1141.68],"6-52-3":[-1607.7,2076.74],"6-52-4":[-959.91,2521.51],"6-52-5":[-3476.54,2887.36],"6-52-6":[-4419.2,3023.83],"6-52-7":[-4739.83,3002.57],"6-52-8":[-4949.2,1206.68],"6-52-9":[-5254.67,120.01],"6-52-10":[-5012.8,125.87],"6-52-11":[-4183.89,126.28],"6-52-12":[-7086.05,122.56],"6-52-13":[-4742.87,121.98],"6-52-14":[-5741.02,120.69],"6-52-15":[-5712.7,118.59],"6-52-16":[-5649.06,117.92],"6-52-17":[-5750.86,956.08],"6-52-18":[-5457.64,292.1],"6-52-19":[-5232.26,98.45],"6-52-20":[-5260.33,80.32],"6-52-21":[-4887.73,62.32],"6-52-22":[-5495.99,49.65],"6-52-23":[-5492.27,32.21],"6-52-24":[-5015.71,30.74],"6-52-25":[-5073.96,27.03],"6-52-26":[-5048.05,18.42],"6-52-27":[-5662.8,3.79],"6-52-28":[-5485.53,1.81],"6-52-29":[-5441.5,9.77],"6-52-30":[-5026.25,1799.5],"6-52-31":[-4933.34,9.72],"6-52-32":[-4854.58,1.12],"6-52-33":[-5356.72,236.48],"6-52-34":[-5355.94,-6.99],"6-52-35":[-6308.17,-9.64],"6-52-36":[-7469.7,-7.29],"6-52-37":[-6466.58,-6.71],"6-52-38":[-5677.51,-5.18],"6-52-39":[-5879.9,-4.33],"6-52-40":[-6914.98,-5.17],"6-52-41":[-6668.6,0.3],"6-52-42":[-5783.44,5.27],"6-52-43":[-4800.88,6.16],"6-52-44":[-3657.96,8.81],"6-52-45":[-3599.29,299.98],"6-52-46":[-4106.24,909.05],"6-52-47":[-4134.65,9.11],"6-52-48":[-4445.46,11.62],"6-52-49":[-4535.08,20.83],"6-52-50":[-4818.88,31.49],"6-52-51":[-3539.4,44.15],"6-52-52":[-3219.89,48.11],"6-52-53":[-3059.39,47.57],"6-52-54":[-2932.62,39.99],"6-52-55":[-2319.46,1511.36],"6-52-56":[-1028.73,3019.59],"6-52-57":[-6.52,1863.6],"6-52-58":[-117.54,2132.8],"6-52-59":[-470.01,1124.55],"6-52-60":[-286.17,1099.18],"6-52-61":[-908.43,1887.29],"6-52-62":[-4139.66,2271.2],"6-52-63":[-4259.41,2746.48],"6-53-0":[-809.92,127.52],"6-53-1":[-947.44,1084.84],"5-26-0":[-1214.07,1084.84],"6-53-2":[-956.82,1208.94],"6-53-3":[-2013.41,1866.38],"5-26-1":[-2013.41,2076.74],"6-53-4":[-1764.48,2511.91],"6-53-5":[-3618.3,2633.93],"5-26-2":[-3618.3,2887.36],"6-53-6":[-4517.43,2633.93],"6-53-7":[-4776.29,3982.86],"5-26-3":[-4776.29,3982.86],"6-53-8":[-4996.61,121.21],"6-53-9":[-5272.07,128.08],"5-26-4":[-5272.07,1206.68],"6-53-10":[-5305.35,129.5],"6-53-11":[-4591.49,127.45],"5-26-5":[-5305.35,129.5],"6-53-12":[-8129.66,122.28],"6-53-13":[-5430.02,127.23],"5-26-6":[-8129.66,127.23],"6-53-14":[-5642.1,129.8],"6-53-15":[-5516.49,129.69],"5-26-7":[-5741.02,129.8],"6-53-16":[-5390.18,129.28],"6-53-17":[-5280.21,123.07],"5-26-8":[-5750.86,956.08],"6-53-18":[-4871.36,2346.09],"6-53-19":[-5425.47,100.63],"5-26-9":[-5457.64,2346.09],"6-53-20":[-4690.2,83.95],"6-53-21":[-5286.82,69.72],"5-26-10":[-5286.82,83.95],"6-53-22":[-5993.62,52.25],"6-53-23":[-5992.94,40.62],"5-26-11":[-5993.62,52.25],"6-53-24":[-5509.86,1698.2],"6-53-25":[-6172.64,36.9],"5-26-12":[-6172.64,1698.2],"6-53-26":[-5853.26,31.78],"6-53-27":[-6369.72,19.03],"5-26-13":[-6369.72,31.78],"6-53-28":[-5966.33,13.16],"6-53-29":[-5889.03,18.26],"5-26-14":[-5966.33,18.26],"6-53-30":[-5882.35,18.06],"6-53-31":[-5211.23,16.65],"5-26-15":[-5882.35,1799.5],"6-53-32":[-4558.97,11.61],"6-53-33":[-4701.82,-1.77],"5-26-16":[-5356.72,236.48],"6-53-34":[-5295.87,-5.37],"6-53-35":[-6621.27,-7.87],"5-26-17":[-6621.27,-5.37],"6-53-36":[-6149.42,-7.1],"6-53-37":[-6059.63,-6.55],"5-26-18":[-7469.7,-6.55],"6-53-38":[-5287.23,-5.31],"6-53-39":[-6580.97,584.18],"5-26-19":[-6580.97,584.18],"6-53-40":[-6305.15,-3.59],"6-53-41":[-6288.64,2.46],"5-26-20":[-6914.98,2.46],"6-53-42":[-5252.94,10.35],"6-53-43":[-4611.72,13.56],"5-26-21":[-5783.44,13.56],"6-53-44":[-3688.88,18.1],"6-53-45":[-3553.03,2273.57],"5-26-22":[-3688.88,2273.57],"6-53-46":[-3357.17,19.28],"6-53-47":[-3667.73,20.12],"5-26-23":[-4134.65,909.05],"6-53-48":[-3844.29,21.48],"6-53-49":[-4138.56,25.29],"5-26-24":[-4535.08,25.29],"6-53-50":[-4790.72,32.32],"6-53-51":[-3440.33,44.34],"5-26-25":[-4818.88,44.34],"6-53-52":[-3980.63,48.37],"6-53-53":[-2353.14,48.14],"5-26-26":[-3980.63,48.37],"6-53-54":[-2657.56,40.04],"6-53-55":[-2300.41,22.99],"5-26-27":[-2932.62,1511.36],"6-53-56":[-606.79,3601.13],"6-53-57":[-1293.17,2772.76],"5-26-28":[-1293.17,3601.13],"6-53-58":[-778.68,2578.34],"6-53-59":[-343.06,1326.38],"5-26-29":[-778.68,2578.34],"6-53-60":[-301.96,1634.18],"6-53-61":[-1086.2,1960.78],"5-26-30":[-1086.2,1960.78],"6-53-62":[-4340.78,2301.31],"6-53-63":[-4271.39,2746.48],"5-26-31":[-4340.78,2746.48],"6-54-0":[-754.78,88.51],"6-54-1":[-695.88,963.85],"6-54-2":[-418.94,1073.68],"6-54-3":[-2490,1676.23],"6-54-4":[-1598.54,2416.2],"6-54-5":[-3641.22,2217.34],"6-54-6":[-4536.45,2458.39],"6-54-7":[-4805.67,2560.61],"6-54-8":[-5052.79,127.95],"6-54-9":[-5437.3,130.4],"6-54-10":[-7400.45,984.27],"6-54-11":[-6940.26,1259.84],"6-54-12":[-8445.16,122.78],"6-54-13":[-5307.61,127.15],"6-54-14":[-5355.46,131.06],"6-54-15":[-5217.86,132.17],"6-54-16":[-5140.39,129.76],"6-54-17":[-4935.97,122.83],"6-54-18":[-4706.91,1086.32],"6-54-19":[-5082.4,100.89],"6-54-20":[-5179.26,82.99],"6-54-21":[-5666.62,66.49],"6-54-22":[-6090.48,53.95],"6-54-23":[-6169.21,42.86],"6-54-24":[-6313.67,45.39],"6-54-25":[-6126.45,1434.62],"6-54-26":[-6062.27,41.69],"6-54-27":[-6226.38,30.03],"6-54-28":[-6103.99,22.91],"6-54-29":[-6024.65,23.82],"6-54-30":[-6448.31,22.61],"6-54-31":[-5649.85,20.6],"6-54-32":[-5202.51,18.27],"6-54-33":[-5070.73,1.49],"6-54-34":[-5639,-1.98],"6-54-35":[-5982.46,-5.32],"6-54-36":[-6017.65,-6.18],"6-54-37":[-5355.92,-6.1],"6-54-38":[-4934.39,1347.61],"6-54-39":[-5602.69,-5.14],"6-54-40":[-5816.35,-0.74],"6-54-41":[-5840.06,5.66],"6-54-42":[-5618.61,12.5],"6-54-43":[-5587.6,19.2],"6-54-44":[-5458.07,24.93],"6-54-45":[-3690.54,1045.93],"6-54-46":[-4181.35,27.23],"6-54-47":[-3525.7,28],"6-54-48":[-4185.13,28.86],"6-54-49":[-4218.21,32.39],"6-54-50":[-4267.86,35.56],"6-54-51":[-3736.27,43.39],"6-54-52":[-3618.08,1349.09],"6-54-53":[-3154.88,1035.34],"6-54-54":[-1757.64,38.39],"6-54-55":[-1268.84,21.85],"6-54-56":[-1242.39,2823.54],"6-54-57":[-1478.9,2688.59],"6-54-58":[-756.79,2458.1],"6-54-59":[-426.59,2385.99],"6-54-60":[-450.17,1787.39],"6-54-61":[-1732.42,2012.99],"6-54-62":[-4431.77,2336.23],"6-54-63":[-4266.36,2746.48],"6-55-0":[-773.63,75.52],"6-55-1":[-909.04,906.14],"5-27-0":[-909.04,963.85],"6-55-2":[-384.43,939.66],"6-55-3":[-2740.34,1854.31],"5-27-1":[-2740.34,1854.31],"4-13-0":[-2740.34,2076.74],"6-55-4":[-1511.29,2030.68],"6-55-5":[-3639.12,2071.97],"5-27-2":[-3641.22,2416.2],"6-55-6":[-4571.3,2327.64],"6-55-7":[-4921.03,1988.61],"5-27-3":[-4921.03,2560.61],"4-13-1":[-4921.03,3982.86],"3-6-0":[-4921.03,3982.86],"6-55-8":[-5022.04,1471.32],"6-55-9":[-5224.27,194.14],"5-27-4":[-5437.3,1471.32],"6-55-10":[-7788.44,129.91],"6-55-11":[-8273.63,126.1],"5-27-5":[-8273.63,1259.84],"4-13-2":[-8273.63,1471.32],"6-55-12":[-7837.58,126.1],"6-55-13":[-5124.34,126.13],"5-27-6":[-8445.16,127.15],"6-55-14":[-5117.88,129.01],"6-55-15":[-4967.25,131.88],"5-27-7":[-5355.46,132.17],"4-13-3":[-8445.16,132.17],"3-6-1":[-8445.16,3108.37],"6-55-16":[-4833.04,129.91],"6-55-17":[-4637.36,120.26],"5-27-8":[-5140.39,129.91],"6-55-18":[-4526.53,1131.62],"6-55-19":[-4501.61,100.95],"5-27-9":[-5082.4,1131.62],"4-13-4":[-5750.86,2346.09],"6-55-20":[-5093.86,76.17],"6-55-21":[-5753.2,63.94],"5-27-10":[-5753.2,82.99],"6-55-22":[-5978.68,55.85],"6-55-23":[-6224.65,50.59],"5-27-11":[-6224.65,55.85],"4-13-5":[-6224.65,83.95],"3-6-2":[-6293.49,2346.09],"6-55-24":[-6228.02,51.75],"6-55-25":[-6270.35,2003.8],"5-27-12":[-6313.67,2003.8],"6-55-26":[-6240.19,2815.55],"6-55-27":[-6433.11,37.39],"5-27-13":[-6433.11,2815.55],"4-13-6":[-6433.11,2815.55],"6-55-28":[-6295.21,31.14],"6-55-29":[-6099.62,32.89],"5-27-14":[-6295.21,32.89],"6-55-30":[-6399.44,30.93],"6-55-31":[-5954.07,23.87],"5-27-15":[-6448.31,30.93],"4-13-7":[-6448.31,1799.5],"3-6-3":[-6448.31,2815.55],"6-55-32":[-5049.31,20.71],"6-55-33":[-4783.68,8.19],"5-27-16":[-5202.51,20.71],"6-55-34":[-5310.1,4],"6-55-35":[-5627.49,-1.23],"5-27-17":[-5982.46,4],"4-13-8":[-6621.27,236.48],"6-55-36":[-5557.2,-2.77],"6-55-37":[-4574.29,2699.54],"5-27-18":[-6017.65,2699.54],"6-55-38":[-4364.05,1963.83],"6-55-39":[-5227.73,-2.51],"5-27-19":[-5602.69,1963.83],"4-13-9":[-7469.7,2699.54],"3-6-4":[-7469.7,2863.35],"6-55-40":[-5398.44,3.34],"6-55-41":[-5418.06,11.75],"5-27-20":[-5840.06,11.75],"6-55-42":[-5567.95,18.07],"6-55-43":[-5910.79,25.53],"5-27-21":[-5910.79,25.53],"4-13-10":[-6914.98,25.53],"6-55-44":[-5858.3,32.41],"6-55-45":[-5328.4,1066.57],"5-27-22":[-5858.3,1066.57],"6-55-46":[-4416.42,36.95],"6-55-47":[-4492.85,36.98],"5-27-23":[-4492.85,36.98],"4-13-11":[-5858.3,2273.57],"3-6-5":[-7677.07,2273.57],"6-55-48":[-4477.06,36.96],"6-55-49":[-4483.64,37.24],"5-27-24":[-4483.64,37.24],"6-55-50":[-4294.04,39.76],"6-55-51":[-4067.88,42.27],"5-27-25":[-4294.04,43.39],"4-13-12":[-4818.88,44.34],"6-55-52":[-3984.71,37.89],"6-55-53":[-3551.53,38.97],"5-27-26":[-3984.71,1349.09],"6-55-54":[-1641.24,173.11],"6-55-55":[-1355.39,1438.49],"5-27-27":[-1757.64,1438.49],"4-13-13":[-3984.71,1511.36],"3-6-6":[-5488.9,3258.28],"6-55-56":[-1512.26,2044.53],"6-55-57":[-1226.91,2666.25],"5-27-28":[-1512.26,2823.54],"6-55-58":[-678.79,2014.72],"6-55-59":[-910.8,2088.28],"5-27-29":[-910.8,2458.1],"4-13-14":[-1512.26,3601.13],"6-55-60":[-652.73,1737.31],"6-55-61":[-3251.34,2103.65],"5-27-30":[-3251.34,2103.65],"6-55-62":[-4488.79,2360.08],"6-55-63":[-4270.87,2746.48],"5-27-31":[-4488.79,2746.48],"4-13-15":[-4488.79,2746.48],"3-6-7":[-4488.79,3601.13],"6-56-0":[-774.61,63.52],"6-56-1":[-909.04,872.66],"6-56-2":[-422.73,1232.27],"6-56-3":[-2742.33,1544.62],"6-56-4":[-1114.07,1035.02],"6-56-5":[-3179.65,1653.87],"6-56-6":[-4594.77,1002],"6-56-7":[-4924.28,671.1],"6-56-8":[-5019,1784.7],"6-56-9":[-5199.04,1475.57],"6-56-10":[-6481.97,128.25],"6-56-11":[-5268.9,126.29],"6-56-12":[-5631.13,126.29],"6-56-13":[-5336.55,126.21],"6-56-14":[-4959.12,126.55],"6-56-15":[-4734.53,127.18],"6-56-16":[-4920.4,126.5],"6-56-17":[-4441.83,117.02],"6-56-18":[-4364.6,106.96],"6-56-19":[-4479.79,92.67],"6-56-20":[-4807.92,81.82],"6-56-21":[-5147.88,72.03],"6-56-22":[-5777.15,65.54],"6-56-23":[-5742.39,64.24],"6-56-24":[-6087.05,52.11],"6-56-25":[-5930.72,53.98],"6-56-26":[-5982.95,52.63],"6-56-27":[-6107.29,44.22],"6-56-28":[-6675.95,40.2],"6-56-29":[-5957.58,37.67],"6-56-30":[-5964.89,36.23],"6-56-31":[-7097.01,26.97],"6-56-32":[-5371.34,25.11],"6-56-33":[-4808.56,15.56],"6-56-34":[-4714.13,11.93],"6-56-35":[-5258.45,18.59],"6-56-36":[-5112.44,4.11],"6-56-37":[-4736.03,0.85],"6-56-38":[-3880.88,0.68],"6-56-39":[-4794.46,1.89],"6-56-40":[-4889.28,8.4],"6-56-41":[-5026.05,16.04],"6-56-42":[-5214.14,22.14],"6-56-43":[-5362.66,30.63],"6-56-44":[-5615.35,36.65],"6-56-45":[-5576.93,40.5],"6-56-46":[-5354.96,43.37],"6-56-47":[-6001.14,44.13],"6-56-48":[-4965.81,43.98],"6-56-49":[-4608.39,41.79],"6-56-50":[-4520.54,41.65],"6-56-51":[-4015.97,42.33],"6-56-52":[-3435.94,40.96],"6-56-53":[-4034.45,41.96],"6-56-54":[-1992.34,1450.89],"6-56-55":[-566.09,1695.97],"6-56-56":[-1528.23,1011.13],"6-56-57":[-608.36,1329.89],"6-56-58":[-531.53,1771.7],"6-56-59":[-1105.87,1695.38],"6-56-60":[-1294.97,1632.27],"6-56-61":[-3320.58,2172.84],"6-56-62":[-4500.76,2379.92],"6-56-63":[-4387.83,2746.48],"6-57-0":[-830.8,52.51],"6-57-1":[-644.38,541.88],"5-28-0":[-909.04,872.66],"6-57-2":[-469.54,919.88],"6-57-3":[-1635.29,1436.69],"5-28-1":[-2742.33,1544.62],"6-57-4":[-1835.91,748.02],"6-57-5":[-1621.7,949.92],"5-28-2":[-3179.65,1653.87],"6-57-6":[-4643.42,115.49],"6-57-7":[-4970.55,126.66],"5-28-3":[-4970.55,1002],"6-57-8":[-5107.08,1937.43],"6-57-9":[-5242.54,2123.62],"5-28-4":[-5242.54,2123.62],"6-57-10":[-5693.64,124.91],"6-57-11":[-5329.67,123.99],"5-28-5":[-6481.97,128.25],"6-57-12":[-5384.49,123.99],"6-57-13":[-4791.5,122.5],"5-28-6":[-5631.13,126.29],"6-57-14":[-4728.1,124.14],"6-57-15":[-4503.56,123],"5-28-7":[-4959.12,127.18],"6-57-16":[-4242.46,119.6],"6-57-17":[-4149.79,110.36],"5-28-8":[-4920.4,126.5],"6-57-18":[-4243.75,101.63],"6-57-19":[-4386.42,95.46],"5-28-9":[-4479.79,106.96],"6-57-20":[-4570.43,1880.85],"6-57-21":[-4843.17,2439.69],"5-28-10":[-5147.88,2439.69],"6-57-22":[-5236.17,1522.97],"6-57-23":[-5741.26,68.01],"5-28-11":[-5777.15,1522.97],"6-57-24":[-5614.52,116.51],"6-57-25":[-5297.41,60.59],"5-28-12":[-6087.05,116.51],"6-57-26":[-5603.59,171.48],"6-57-27":[-5382.72,57.96],"5-28-13":[-6107.29,171.48],"6-57-28":[-5194.58,53.31],"6-57-29":[-5536.19,43.04],"5-28-14":[-6675.95,53.31],"6-57-30":[-5589.52,37.19],"6-57-31":[-7749.42,33.41],"5-28-15":[-7749.42,37.19],"6-57-32":[-6535.92,34.41],"6-57-33":[-5119.28,26.59],"5-28-16":[-6535.92,34.41],"6-57-34":[-5045.49,24.73],"6-57-35":[-5489.86,64.15],"5-28-17":[-5489.86,64.15],"6-57-36":[-4822.11,32.17],"6-57-37":[-4030.39,167.47],"5-28-18":[-5112.44,167.47],"6-57-38":[-3442.1,26.06],"6-57-39":[-4106.03,77.57],"5-28-19":[-4794.46,77.57],"6-57-40":[-3840.8,15.84],"6-57-41":[-4457.53,1486.33],"5-28-20":[-5026.05,1486.33],"6-57-42":[-4775,2391.26],"6-57-43":[-4880.59,1794.09],"5-28-21":[-5362.66,2391.26],"6-57-44":[-5715.96,40.42],"6-57-45":[-5874.66,45.89],"5-28-22":[-5874.66,45.89],"6-57-46":[-5731.84,49.37],"6-57-47":[-5915.23,50.19],"5-28-23":[-6001.14,50.19],"6-57-48":[-5019.61,50.16],"6-57-49":[-4959.49,48.13],"5-28-24":[-5019.61,50.16],"6-57-50":[-4915.16,45.48],"6-57-51":[-2574.6,44.16],"5-28-25":[-4915.16,45.48],"6-57-52":[-2779.21,42.18],"6-57-53":[-2770.8,42.48],"5-28-26":[-4034.45,42.48],"6-57-54":[-2250.06,2074.83],"6-57-55":[-937.18,1823.2],"5-28-27":[-2250.06,2074.83],"6-57-56":[-2391.06,13.36],"6-57-57":[-1732.19,11.7],"5-28-28":[-2391.06,1329.89],"6-57-58":[-480,1116.85],"6-57-59":[-648.11,1811.71],"5-28-29":[-1105.87,1811.71],"6-57-60":[-581.27,1663.61],"6-57-61":[-3797.26,2225.4],"5-28-30":[-3797.26,2225.4],"6-57-62":[-4462.42,2420.8],"6-57-63":[-4395.9,2746.48],"5-28-31":[-4500.76,2746.48],"6-58-0":[-1148.46,66.14],"6-58-1":[-665.78,663],"6-58-2":[-313.37,1111.16],"6-58-3":[-1468.54,664.4],"6-58-4":[-1187.8,1036.71],"6-58-5":[-1368.34,949.82],"6-58-6":[-4702.71,116.37],"6-58-7":[-4948.55,124.92],"6-58-8":[-5107.83,1885.38],"6-58-9":[-5547.42,2140.58],"6-58-10":[-5606.58,121.69],"6-58-11":[-6067.01,123.87],"6-58-12":[-5079.01,123.87],"6-58-13":[-4653.01,123.14],"6-58-14":[-4703.6,119.28],"6-58-15":[-4200.54,118.34],"6-58-16":[-4449.71,118.05],"6-58-17":[-4235.37,106.08],"6-58-18":[-4790.67,104.94],"6-58-19":[-4811.33,99.37],"6-58-20":[-4716.62,1402.2],"6-58-21":[-4379.44,3730.85],"6-58-22":[-4656.43,1980.83],"6-58-23":[-5347.55,745.87],"6-58-24":[-5267.8,535.71],"6-58-25":[-5167.21,356.34],"6-58-26":[-4869.58,135.29],"6-58-27":[-4636.76,301.55],"6-58-28":[-4670.67,458.6],"6-58-29":[-4517.78,728.66],"6-58-30":[-4838.32,41.91],"6-58-31":[-5688.29,38.21],"6-58-32":[-5734.08,38.21],"6-58-33":[-5055.81,33.98],"6-58-34":[-5032.26,864.67],"6-58-35":[-4600.32,429.6],"6-58-36":[-54.18,293.54],"6-58-37":[-1031.12,160.54],"6-58-38":[-1535.05,305.33],"6-58-39":[-68.02,458.89],"6-58-40":[-2869.5,631.86],"6-58-41":[-3974.67,1938.63],"6-58-42":[-4394.56,3619.16],"6-58-43":[-4562.11,1377.96],"6-58-44":[-5087.64,40.21],"6-58-45":[-5651.93,47.1],"6-58-46":[-5721.22,50.18],"6-58-47":[-5752.16,52.72],"6-58-48":[-4937.63,54.26],"6-58-49":[-4956.28,51.82],"6-58-50":[-4777.71,49.92],"6-58-51":[-3124.35,46.02],"6-58-52":[-1653.76,42.72],"6-58-53":[-2623.27,41.86],"6-58-54":[-2249.64,2067.07],"6-58-55":[-1286.31,1823.02],"6-58-56":[-1838.64,13.48],"6-58-57":[-2627.31,357.87],"6-58-58":[-2489.23,1674.63],"6-58-59":[-525.93,1949.57],"6-58-60":[-412.71,1790.34],"6-58-61":[-3836.73,2289.94],"6-58-62":[-4429.02,2460.86],"6-58-63":[-4376.9,2746.48],"6-59-0":[-1206.49,37.79],"6-59-1":[-771.79,804.61],"5-29-0":[-1206.49,804.61],"6-59-2":[-502.92,913.12],"6-59-3":[-1477.39,666.92],"5-29-1":[-1477.39,1111.16],"4-14-0":[-2742.33,1544.62],"6-59-4":[-1221.06,985.85],"6-59-5":[-1102.26,2634.47],"5-29-2":[-1368.34,2634.47],"6-59-6":[-4507.92,590.06],"6-59-7":[-5028.45,119.95],"5-29-3":[-5028.45,590.06],"4-14-1":[-5028.45,2634.47],"6-59-8":[-5146.03,1189.75],"6-59-9":[-5583.49,125.87],"5-29-4":[-5583.49,2140.58],"6-59-10":[-5586.8,120.74],"6-59-11":[-6953.14,121.48],"5-29-5":[-6953.14,123.87],"4-14-2":[-6953.14,2140.58],"6-59-12":[-5147.12,121.88],"6-59-13":[-4354.82,123],"5-29-6":[-5147.12,123.87],"6-59-14":[-4318.08,118.25],"6-59-15":[-5252.69,112.43],"5-29-7":[-5252.69,119.28],"4-14-3":[-5631.13,127.18],"6-59-16":[-4267.14,112.43],"6-59-17":[-4115.34,102.32],"5-29-8":[-4449.71,118.05],"6-59-18":[-4149.18,1976.1],"6-59-19":[-4477.69,98.54],"5-29-9":[-4811.33,1976.1],"4-14-4":[-4920.4,1976.1],"6-59-20":[-4890.61,88.87],"6-59-21":[-4996.43,731.97],"5-29-10":[-4996.43,3730.85],"6-59-22":[-5046.75,609.23],"6-59-23":[-5769,951.26],"5-29-11":[-5769,1980.83],"4-14-5":[-5777.15,3730.85],"6-59-24":[-5613.69,838.62],"6-59-25":[-4980.13,699.41],"5-29-12":[-5613.69,838.62],"6-59-26":[-4879.62,480.98],"6-59-27":[-4556.45,1567.34],"5-29-13":[-4879.62,1567.34],"4-14-6":[-6107.29,1567.34],"6-59-28":[-3942.58,1463.87],"6-59-29":[-5153.94,935.28],"5-29-14":[-5153.94,1463.87],"6-59-30":[-4808.82,49.38],"6-59-31":[-5536.73,40.51],"5-29-15":[-5688.29,49.38],"4-14-7":[-7749.42,1463.87],"6-59-32":[-5359.65,40.61],"6-59-33":[-4901.26,39.26],"5-29-16":[-5734.08,40.61],"6-59-34":[-4767.54,846.28],"6-59-35":[-25.15,1448.88],"5-29-17":[-5032.26,1448.88],"4-14-8":[-6535.92,1448.88],"6-59-36":[8.78,1514.42],"6-59-37":[8.23,473.97],"5-29-18":[-1031.12,1514.42],"6-59-38":[8.08,659.04],"6-59-39":[8.16,820.4],"5-29-19":[-1535.05,820.4],"4-14-9":[-5112.44,1514.42],"6-59-40":[9.22,900.26],"6-59-41":[-1973.23,613.04],"5-29-20":[-3974.67,1938.63],"6-59-42":[-3432.46,677.68],"6-59-43":[-4528.95,35.12],"5-29-21":[-4562.11,3619.16],"4-14-10":[-5362.66,3619.16],"6-59-44":[-5013.92,39.98],"6-59-45":[-5484.61,2060.11],"5-29-22":[-5651.93,2060.11],"6-59-46":[-5484.61,50.12],"6-59-47":[-5342,52.47],"5-29-23":[-5752.16,52.72],"4-14-11":[-6001.14,2060.11],"6-59-48":[-5782.44,55.19],"6-59-49":[-4748.58,55.91],"5-29-24":[-5782.44,55.91],"6-59-50":[-2644.4,53.48],"6-59-51":[-2954.78,49.06],"5-29-25":[-4777.71,53.48],"4-14-12":[-5782.44,55.91],"6-59-52":[-2619.14,44.55],"6-59-53":[-2018.58,39.12],"5-29-26":[-2623.27,44.55],"6-59-54":[-1697.04,33.19],"6-59-55":[-1710.62,1126.25],"5-29-27":[-2249.64,2067.07],"4-14-13":[-4034.45,2074.83],"6-59-56":[-2070.49,14.62],"6-59-57":[-3062.21,608.1],"5-29-28":[-3062.21,608.1],"6-59-58":[-2999.86,2647.27],"6-59-59":[-474.44,2213.91],"5-29-29":[-2999.86,2647.27],"4-14-14":[-3062.21,2647.27],"6-59-60":[-374.42,1899.59],"6-59-61":[-3953.82,2337.34],"5-29-30":[-3953.82,2337.34],"6-59-62":[-4440.83,2494.91],"6-59-63":[-4361.23,2746.48],"5-29-31":[-4440.83,2746.48],"4-14-15":[-4500.76,2746.48],"6-60-0":[-1299.63,37.78],"6-60-1":[-925.01,799.08],"6-60-2":[-888.63,844.65],"6-60-3":[-1564.59,1285.49],"6-60-4":[-1370.09,821.15],"6-60-5":[-861.46,2604.03],"6-60-6":[-2131.54,850.01],"6-60-7":[-5034.9,115.86],"6-60-8":[-5132.02,123.35],"6-60-9":[-5381,123.85],"6-60-10":[-5892.44,119.67],"6-60-11":[-6972.08,467.08],"6-60-12":[-5129.93,847.15],"6-60-13":[-4115.41,1061.19],"6-60-14":[-5149.97,118.9],"6-60-15":[-4197.74,106.06],"6-60-16":[-4496.35,848.03],"6-60-17":[-4334.49,934.31],"6-60-18":[-4285.89,948.19],"6-60-19":[-4575.69,97.22],"6-60-20":[-4698.24,3428.78],"6-60-21":[-4892.13,3435.16],"6-60-22":[-4748.59,753.26],"6-60-23":[-5350.38,625.45],"6-60-24":[-4910.61,621.86],"6-60-25":[-4648.03,616.33],"6-60-26":[-4676.41,571.22],"6-60-27":[-4867.15,986.01],"6-60-28":[-4699.54,1965.58],"6-60-29":[-4703.7,1465.14],"6-60-30":[-4667.95,448.45],"6-60-31":[-5397.54,41.59],"6-60-32":[-5480.26,40.1],"6-60-33":[-4905.17,384.5],"6-60-34":[-3030.57,1362.69],"6-60-35":[11.08,1866.57],"6-60-36":[9.95,974],"6-60-37":[10.09,560.21],"6-60-38":[10.53,590.61],"6-60-39":[11.82,617.24],"6-60-40":[12.34,504.44],"6-60-41":[13.01,728.38],"6-60-42":[-2724.53,3423.9],"6-60-43":[-4462.04,3558.63],"6-60-44":[-4869.33,38.1],"6-60-45":[-5088.63,920.71],"6-60-46":[-5053.46,931.45],"6-60-47":[-5012.51,826.02],"6-60-48":[-5033.05,56.45],"6-60-49":[-4522.14,56.31],"6-60-50":[-1171.04,965.28],"6-60-51":[-2688.99,777.38],"6-60-52":[-2494.46,322.12],"6-60-53":[-2239.43,37.45],"6-60-54":[-2334.36,27.21],"6-60-55":[-2566.02,18.18],"6-60-56":[-2200.43,18.97],"6-60-57":[-2916.5,1445.48],"6-60-58":[-3327.48,2647.27],"6-60-59":[-1547.91,2378.63],"6-60-60":[-2292.77,2084.27],"6-60-61":[-3981.16,2371.33],"6-60-62":[-4419.87,2524.96],"6-60-63":[-4393.27,2746.49],"6-61-0":[-1249.62,37.76],"6-61-1":[-1112.88,587.07],"5-30-0":[-1299.63,799.08],"6-61-2":[-1546.38,649.12],"6-61-3":[-1554.59,1436.28],"5-30-1":[-1564.59,1436.28],"6-61-4":[-1101.76,882.21],"6-61-5":[-477.94,2622.95],"5-30-2":[-1370.09,2622.95],"6-61-6":[-1793.98,2094.27],"6-61-7":[-4983.68,110.49],"5-30-3":[-5034.9,2094.27],"6-61-8":[-5222.84,113.62],"6-61-9":[-5428.09,792.85],"5-30-4":[-5428.09,792.85],"6-61-10":[-5710.62,472.86],"6-61-11":[-5248.33,998.82],"5-30-5":[-6972.08,998.82],"6-61-12":[-4485.39,911.33],"6-61-13":[-3387.91,978.67],"5-30-6":[-5129.93,1061.19],"6-61-14":[-4788.04,275.17],"6-61-15":[-4478.72,105.85],"5-30-7":[-5149.97,275.17],"6-61-16":[-4586.88,2441.8],"6-61-17":[-4535.47,2479.29],"5-30-8":[-4586.88,2479.29],"6-61-18":[-4473.78,1153.69],"6-61-19":[-4636.74,1045.54],"5-30-9":[-4636.74,1153.69],"6-61-20":[-4641.17,3969.25],"6-61-21":[-4928.56,3240.15],"5-30-10":[-4928.56,3969.25],"6-61-22":[-4945.72,538.03],"6-61-23":[-5865.09,581.24],"5-30-11":[-5865.09,753.26],"6-61-24":[-5850.78,518.07],"6-61-25":[-5370.23,456.49],"5-30-12":[-5850.78,621.86],"6-61-26":[-4853.21,2075.33],"6-61-27":[-5280.81,725.34],"5-30-13":[-5280.81,2075.33],"6-61-28":[-4922.18,1263.81],"6-61-29":[-5222.98,1793.46],"5-30-14":[-5222.98,1965.58],"6-61-30":[-5291.44,563.59],"6-61-31":[-5622.65,40.64],"5-30-15":[-5622.65,563.59],"6-61-32":[-5631.84,39.27],"6-61-33":[-4922.72,482.59],"5-30-16":[-5631.84,482.59],"6-61-34":[14.28,1670.46],"6-61-35":[11.71,1228.8],"5-30-17":[-3030.57,1866.57],"6-61-36":[11.3,718.33],"6-61-37":[-99.67,814.4],"5-30-18":[-99.67,974],"6-61-38":[11.9,417.33],"6-61-39":[12.45,434.7],"5-30-19":[10.53,617.24],"6-61-40":[12.64,544.46],"6-61-41":[13.85,536.59],"5-30-20":[12.34,728.38],"6-61-42":[-160.95,3255.79],"6-61-43":[-137.3,4091.3],"5-30-21":[-4462.04,4091.3],"6-61-44":[-3374.34,1009.54],"6-61-45":[-1542.98,1097.45],"5-30-22":[-5088.63,1097.45],"6-61-46":[21.26,2425.69],"6-61-47":[-4937.09,2341.94],"5-30-23":[-5053.46,2425.69],"6-61-48":[-4955.38,53.23],"6-61-49":[-2050.17,264.6],"5-30-24":[-5033.05,264.6],"6-61-50":[-85.62,935.9],"6-61-51":[-216.07,827.24],"5-30-25":[-2688.99,965.28],"6-61-52":[-1523.2,893.55],"6-61-53":[-1457.29,582.89],"5-30-26":[-2494.46,893.55],"6-61-54":[-3630.65,832.57],"6-61-55":[-3897.67,20.65],"5-30-27":[-3897.67,832.57],"6-61-56":[-3381.61,20.76],"6-61-57":[-3738.02,2173.37],"5-30-28":[-3738.02,2173.37],"6-61-58":[-3509.49,2720.05],"6-61-59":[-2958.98,2519.15],"5-30-29":[-3509.49,2720.05],"6-61-60":[-3517.99,2242.55],"6-61-61":[-4835.02,2404.88],"5-30-30":[-4835.02,2404.88],"6-61-62":[-4382.08,2555.1],"6-61-63":[-4356.44,2747.47],"5-30-31":[-4419.87,2747.47],"6-62-0":[-1240.53,37.73],"6-62-1":[-744.04,572.31],"6-62-2":[-1580.4,576.58],"6-62-3":[-1451.86,615.97],"6-62-4":[-1027.1,702.71],"6-62-5":[-541.12,2552.32],"6-62-6":[-1283.7,2664.01],"6-62-7":[-4784.72,103.88],"6-62-8":[-5202.61,107.83],"6-62-9":[-5387.25,111.74],"6-62-10":[-5726.24,298.22],"6-62-11":[-5787.56,1388.09],"6-62-12":[-5721.89,1035.94],"6-62-13":[-3686.08,1109.06],"6-62-14":[-4480.28,639.9],"6-62-15":[-4790.76,219.03],"6-62-16":[-4896.5,2687.22],"6-62-17":[-5213.44,2577.79],"6-62-18":[-5267.5,3501.33],"6-62-19":[-4911.78,2419.81],"6-62-20":[-5018.1,3718.38],"6-62-21":[-5389.78,1721.06],"6-62-22":[-5293.41,696.4],"6-62-23":[-6394.68,471.46],"6-62-24":[-6204.36,407.06],"6-62-25":[-6073.72,487.53],"6-62-26":[-5931.72,1006.14],"6-62-27":[-5677.56,631.61],"6-62-28":[-6118.85,789.75],"6-62-29":[-6377.35,766.66],"6-62-30":[-5920.61,332.62],"6-62-31":[-5347.75,38.68],"6-62-32":[-5283.42,38.48],"6-62-33":[-5043.38,317.61],"6-62-34":[14.55,749.67],"6-62-35":[12.03,765.74],"6-62-36":[12.1,606.6],"6-62-37":[12.83,948.09],"6-62-38":[12.65,466.53],"6-62-39":[13.05,375.52],"6-62-40":[13.65,421.27],"6-62-41":[15.43,679.87],"6-62-42":[16.17,1792.55],"6-62-43":[16.17,3730.02],"6-62-44":[-1802.42,2423.6],"6-62-45":[-795.86,3440.21],"6-62-46":[17.78,2505.49],"6-62-47":[-4748.41,2581.45],"6-62-48":[-4763.6,209.81],"6-62-49":[-141.99,627.25],"6-62-50":[-120.06,1059.5],"6-62-51":[-251.76,960.71],"6-62-52":[-247.14,1324.16],"6-62-53":[-1590.71,281.57],"6-62-54":[-3485.5,25.96],"6-62-55":[-3904.05,22.36],"6-62-56":[-3764.97,20.96],"6-62-57":[-3158.94,2479.23],"6-62-58":[-3693.62,2850.41],"6-62-59":[-3705.92,2618.27],"6-62-60":[-4289.29,2314.66],"6-62-61":[-4712.91,2457.95],"6-62-62":[-4452.31,2581.14],"6-62-63":[-4363.32,2749.47],"6-63-0":[-1319.19,37.73],"6-63-1":[-591,629.84],"5-31-0":[-1319.19,629.84],"6-63-2":[-1565.59,582.77],"6-63-3":[-787.72,708.63],"5-31-1":[-1580.4,708.63],"4-15-0":[-1580.4,1436.28],"6-63-4":[-1062.91,441.27],"6-63-5":[-825.64,2411.62],"5-31-2":[-1062.91,2552.32],"6-63-6":[-2079.21,2153.36],"6-63-7":[-4632.1,101.1],"5-31-3":[-4784.72,2664.01],"4-15-1":[-5034.9,2664.01],"3-7-0":[-5034.9,2664.01],"6-63-8":[-5168.36,103.66],"6-63-9":[-5405.65,103.55],"5-31-4":[-5405.65,111.74],"6-63-10":[-5625.94,500.18],"6-63-11":[-5368.78,821.88],"5-31-5":[-5787.56,1388.09],"4-15-2":[-6972.08,1388.09],"6-63-12":[-5779.91,942.82],"6-63-13":[-3150.45,686.85],"5-31-6":[-5779.91,1109.06],"6-63-14":[-4455.82,466.81],"6-63-15":[-4710.93,332.21],"5-31-7":[-4790.76,639.9],"4-15-3":[-5779.91,1109.06],"3-7-1":[-6972.08,2140.58],"2-3-0":[-8445.16,3982.86],"6-63-16":[-4828.77,3299.64],"6-63-17":[-5389.17,2357.66],"5-31-8":[-5389.17,3299.64],"6-63-18":[-5668.97,2423.37],"6-63-19":[-5265.41,1802.73],"5-31-9":[-5668.97,3501.33],"4-15-4":[-5668.97,3501.33],"6-63-20":[-5105.1,2177.76],"6-63-21":[-5430.78,856.94],"5-31-10":[-5430.78,3718.38],"6-63-22":[-6103,519.6],"6-63-23":[-6129.72,407.48],"5-31-11":[-6394.68,696.4],"4-15-5":[-6394.68,3969.25],"3-7-2":[-6394.68,3969.25],"6-63-24":[-6145.98,556.84],"6-63-25":[-6723.66,577.03],"5-31-12":[-6723.66,577.03],"6-63-26":[-6115.4,1303.84],"6-63-27":[-6907.8,572.26],"5-31-13":[-6907.8,1303.84],"4-15-6":[-6907.8,2075.33],"6-63-28":[-6077.21,555.42],"6-63-29":[-5349.22,874.92],"5-31-14":[-6377.35,874.92],"6-63-30":[-5907.53,370.77],"6-63-31":[-5392.83,36.2],"5-31-15":[-5920.61,370.77],"4-15-7":[-6377.35,1965.58],"3-7-3":[-7749.42,2075.33],"2-3-1":[-7749.42,3969.25],"1-1-0":[-8983.51,6823.9],"6-63-32":[-5237.08,36.78],"6-63-33":[-5332.47,337.3],"5-31-16":[-5332.47,337.3],"6-63-34":[12.34,850.91],"6-63-35":[10.7,534.42],"5-31-17":[10.7,850.91],"4-15-8":[-5631.84,1866.57],"6-63-36":[11.05,535.26],"6-63-37":[12.72,1059.45],"5-31-18":[11.05,1059.45],"6-63-38":[13.43,539.26],"6-63-39":[14.75,528.02],"5-31-19":[12.65,539.26],"4-15-9":[-99.67,1059.45],"3-7-4":[-6535.92,1866.57],"6-63-40":[15.89,392.77],"6-63-41":[17.66,514.08],"5-31-20":[13.65,679.87],"6-63-42":[18.18,854.51],"6-63-43":[17.22,2207.98],"5-31-21":[16.17,3730.02],"4-15-10":[-4462.04,4091.3],"6-63-44":[-2692.96,1819.27],"6-63-45":[-2727.24,2335.87],"5-31-22":[-2727.24,3440.21],"6-63-46":[-94.68,2294.55],"6-63-47":[-3267.83,3213.77],"5-31-23":[-4748.41,3213.77],"4-15-11":[-5088.63,3440.21],"3-7-5":[-6001.14,4091.3],"2-3-2":[-7677.07,4091.3],"6-63-48":[-2413.96,314.06],"6-63-49":[-125.93,458.45],"5-31-24":[-4763.6,627.25],"6-63-50":[-10.71,680.68],"6-63-51":[-74.8,920.28],"5-31-25":[-251.76,1059.5],"4-15-12":[-5033.05,1059.5],"6-63-52":[-207.69,768.72],"6-63-53":[-1592.49,477.85],"5-31-26":[-1592.49,1324.16],"6-63-54":[-3090.17,27.14],"6-63-55":[-3709.78,26.46],"5-31-27":[-3904.05,27.14],"4-15-13":[-3904.05,1324.16],"3-7-6":[-5782.44,2074.83],"6-63-56":[-3741.06,27.93],"6-63-57":[-3312.16,2064.74],"5-31-28":[-3764.97,2479.23],"6-63-58":[-3792.48,2924.47],"6-63-59":[-3755.19,2804.3],"5-31-29":[-3792.48,2924.47],"4-15-14":[-3792.48,2924.47],"6-63-60":[-4389.4,2430.85],"6-63-61":[-4358.46,2498.87],"5-31-30":[-4712.91,2498.87],"6-63-62":[-4399.93,2597.05],"6-63-63":[-4364.12,2749.47],"5-31-31":[-4452.31,2749.47],"4-15-15":[-4835.02,2749.47],"3-7-7":[-4835.02,2924.47],"2-3-3":[-5782.44,3601.13],"1-1-1":[-8765.31,6969.13],"0-0-0":[-10751.44,6969.13],"6-64-0":[-1334.18,71.4],"6-64-1":[-500.53,635.35],"6-64-2":[-1479.4,533.01],"6-64-3":[-727.38,868.41],"6-64-4":[-758.4,672.79],"6-64-5":[-493.96,1542.28],"6-64-6":[-1124.19,2748.59],"6-64-7":[-4705.66,97.64],"6-64-8":[-4703.7,101.59],"6-64-9":[-5432.74,100.52],"6-64-10":[-5630.75,100.56],"6-64-11":[-5630.75,95.58],"6-64-12":[-5345.91,93.35],"6-64-13":[-3563.83,320.14],"6-64-14":[-4443.47,478.36],"6-64-15":[-5021.66,1880.44],"6-64-16":[-5151.99,3439.27],"6-64-17":[-5464.6,2431.2],"6-64-18":[-5552.88,942.66],"6-64-19":[-5435.68,1847.74],"6-64-20":[-5111.48,1993.84],"6-64-21":[-5001.86,739.39],"6-64-22":[-5851.42,750.53],"6-64-23":[-5757.84,1166.19],"6-64-24":[-5891.23,962.42],"6-64-25":[-6214.46,863.32],"6-64-26":[-6405.06,556.46],"6-64-27":[-5931.02,439.96],"6-64-28":[-5910,880.1],"6-64-29":[-5948.93,1022.44],"6-64-30":[-5525.52,111.21],"6-64-31":[-5035.82,34.38],"6-64-32":[-5581.84,36.77],"6-64-33":[-4837,36.62],"6-64-34":[-3062.65,975.32],"6-64-35":[9.43,830.09],"6-64-36":[10.62,427.95],"6-64-37":[12.53,530.46],"6-64-38":[14.73,818.13],"6-64-39":[16.29,941.03],"6-64-40":[19.97,1131.19],"6-64-41":[19.97,747.03],"6-64-42":[20.9,738.64],"6-64-43":[20.23,1991.34],"6-64-44":[-2678.87,1870.96],"6-64-45":[-3009.41,892.45],"6-64-46":[-2298.84,2396.54],"6-64-47":[20.07,3307.05],"6-64-48":[21.17,1814.23],"6-64-49":[-19.17,460.22],"6-64-50":[-31.06,303.6],"6-64-51":[-119.99,69.5],"6-64-52":[-193.68,48.1],"6-64-53":[-365.14,33.44],"6-64-54":[-2807.25,34.01],"6-64-55":[-3663.22,33.97],"6-64-56":[-3651.68,28.87],"6-64-57":[-3375.09,2706.61],"6-64-58":[-3885.42,2970.03],"6-64-59":[-3243.34,2947.12],"6-64-60":[-5524.14,2543.75],"6-64-61":[-4267.84,2526.16],"6-64-62":[-4884.95,2618.03],"6-64-63":[-4358.43,2752.45],"6-65-0":[-1098.57,57.45],"6-65-1":[-389.02,564.12],"5-32-0":[-1334.18,635.35],"6-65-2":[-1174.16,508.61],"6-65-3":[-740.81,668.75],"5-32-1":[-1479.4,868.41],"6-65-4":[-627.75,699.43],"6-65-5":[-30.98,1367.57],"5-32-2":[-758.4,1542.28],"6-65-6":[-873.13,2772.09],"6-65-7":[-4574.33,94.7],"5-32-3":[-4705.66,2772.09],"6-65-8":[-4519.12,94.18],"6-65-9":[-5430.79,935.72],"5-32-4":[-5432.74,935.72],"6-65-10":[-5726.93,1428.23],"6-65-11":[-6027.37,136.3],"5-32-5":[-6027.37,1428.23],"6-65-12":[-5142.23,676.88],"6-65-13":[-4740.25,286.33],"5-32-6":[-5345.91,676.88],"6-65-14":[-4635.6,643.32],"6-65-15":[-5295.44,2274.24],"5-32-7":[-5295.44,2274.24],"6-65-16":[-5773.02,2373.31],"6-65-17":[-5528.15,1377.73],"5-32-8":[-5773.02,3439.27],"6-65-18":[-5597.07,1623.57],"6-65-19":[-5634.6,2161.99],"5-32-9":[-5634.6,2161.99],"6-65-20":[-5459.42,941.46],"6-65-21":[-5394.57,739.39],"5-32-10":[-5459.42,1993.84],"6-65-22":[-5524.01,1758.12],"6-65-23":[-5571.83,2914.18],"5-32-11":[-5851.42,2914.18],"6-65-24":[-5683.47,1308.02],"6-65-25":[-6049.62,733.03],"5-32-12":[-6214.46,1308.02],"6-65-26":[-5647.11,683.02],"6-65-27":[-5806.28,527.99],"5-32-13":[-6405.06,683.02],"6-65-28":[-5769.39,650.86],"6-65-29":[-5697.53,1095.61],"5-32-14":[-5948.93,1095.61],"6-65-30":[-5530.49,66.62],"6-65-31":[-4657.52,281.88],"5-32-15":[-5530.49,281.88],"6-65-32":[-4440.82,391.88],"6-65-33":[-4218.77,47.91],"5-32-16":[-5581.84,391.88],"6-65-34":[-2997.79,933.61],"6-65-35":[8.94,572.18],"5-32-17":[-3062.65,975.32],"6-65-36":[10.62,508.69],"6-65-37":[12.58,666.01],"5-32-18":[10.62,666.01],"6-65-38":[14.93,725.01],"6-65-39":[17.15,1254.61],"5-32-19":[14.73,1254.61],"6-65-40":[20.87,2815.18],"6-65-41":[22.64,1798.58],"5-32-20":[19.97,2815.18],"6-65-42":[22.51,738.64],"6-65-43":[20.23,937.99],"5-32-21":[20.23,1991.34],"6-65-44":[17.99,2193.6],"6-65-45":[-2963.47,1675],"5-32-22":[-3009.41,2193.6],"6-65-46":[-2928.08,1301.3],"6-65-47":[-2362.09,2234.57],"5-32-23":[-2928.08,3307.05],"6-65-48":[21.17,2126.31],"6-65-49":[-49.16,634.25],"5-32-24":[-49.16,2126.31],"6-65-50":[-3.62,255.51],"6-65-51":[-34.57,778.86],"5-32-25":[-119.99,778.86],"6-65-52":[-310.82,125.03],"6-65-53":[-1207.43,1371.74],"5-32-26":[-1207.43,1371.74],"6-65-54":[-2395.72,894.58],"6-65-55":[-2359.67,34.42],"5-32-27":[-3663.22,894.58],"6-65-56":[-3251.41,29.79],"6-65-57":[-3500.86,3054.91],"5-32-28":[-3651.68,3054.91],"6-65-58":[-3769.91,3100.96],"6-65-59":[-3303.24,3103.71],"5-32-29":[-3885.42,3103.71],"6-65-60":[-5524.14,2692.57],"6-65-61":[-4197.79,2548.45],"5-32-30":[-5524.14,2692.57],"6-65-62":[-5404.2,2639.22],"6-65-63":[-4369.78,2753.44],"5-32-31":[-5404.2,2753.44],"6-66-0":[-1299.53,57.45],"6-66-1":[-546.13,504.13],"6-66-2":[-1357.4,434.6],"6-66-3":[-827.83,430.64],"6-66-4":[-325.44,548.76],"6-66-5":[-25.54,1298.81],"6-66-6":[-925.44,3079.8],"6-66-7":[-4327.24,90.09],"6-66-8":[-4943.8,87.08],"6-66-9":[-5452.19,2049.01],"6-66-10":[-5694.43,2462.53],"6-66-11":[-5794.53,1233.38],"6-66-12":[-5386.45,117],"6-66-13":[-4487.2,876.36],"6-66-14":[-4794.62,1537.53],"6-66-15":[-5225.42,4840.9],"6-66-16":[-5125.62,4069.35],"6-66-17":[-6457.04,838.48],"6-66-18":[-5626.94,1553.78],"6-66-19":[-5791.54,2250.36],"6-66-20":[-5551.91,336.76],"6-66-21":[-5781.56,611.03],"6-66-22":[-5219.71,1857.82],"6-66-23":[-4876.68,2746.4],"6-66-24":[-5426.1,1769.87],"6-66-25":[-5582.63,1672.93],"6-66-26":[-5492.86,774.79],"6-66-27":[-5473.4,874.43],"6-66-28":[-5417.7,1294.91],"6-66-29":[-5122.17,816.36],"6-66-30":[-4914.13,431.08],"6-66-31":[-4204.51,2007.45],"6-66-32":[-3670.86,1816.45],"6-66-33":[-2644.22,362.07],"6-66-34":[7.09,766.35],"6-66-35":[8.79,1258.09],"6-66-36":[11.61,820.42],"6-66-37":[13.1,766.79],"6-66-38":[15.69,1619.97],"6-66-39":[19.55,1713.86],"6-66-40":[22.63,2725.4],"6-66-41":[24.02,1802.55],"6-66-42":[22.8,608.18],"6-66-43":[22.8,289.7],"6-66-44":[-3.93,2284.42],"6-66-45":[-3107.33,1585.24],"6-66-46":[-2944.98,813.79],"6-66-47":[-2724.13,3919.02],"6-66-48":[23.35,4706.54],"6-66-49":[23.35,1505.08],"6-66-50":[-149.54,861.98],"6-66-51":[-21.04,111.68],"6-66-52":[-546.34,1206.24],"6-66-53":[-1225.97,2364.91],"6-66-54":[-740.87,2008.92],"6-66-55":[-1651.18,33.84],"6-66-56":[-3214.03,30.48],"6-66-57":[-3430.56,3138.57],"6-66-58":[-3550.91,3267.05],"6-66-59":[-3667.44,3207.22],"6-66-60":[-2502.69,2800.27],"6-66-61":[-4064.25,2565.62],"6-66-62":[-5150.03,2666.15],"6-66-63":[-4380.24,2755.44],"6-67-0":[-1411.07,38.77],"6-67-1":[-777.85,325.07],"5-33-0":[-1411.07,504.13],"6-67-2":[-1008.17,301.02],"6-67-3":[-841.35,786.22],"5-33-1":[-1357.4,786.22],"4-16-0":[-1479.4,868.41],"6-67-4":[-120.01,946.45],"6-67-5":[24.93,1165.91],"5-33-2":[-325.44,1298.81],"6-67-6":[-675.67,2826.89],"6-67-7":[-4145.22,85.5],"5-33-3":[-4327.24,3079.8],"4-16-1":[-4705.66,3079.8],"6-67-8":[-5265.72,197.75],"6-67-9":[-6317.1,2315.19],"5-33-4":[-6317.1,2315.19],"6-67-10":[-5541.28,2472.36],"6-67-11":[-6275.45,847.8],"5-33-5":[-6275.45,2472.36],"4-16-2":[-6317.1,2472.36],"6-67-12":[-5974.42,217.69],"6-67-13":[-6088.36,1186.21],"5-33-6":[-6088.36,1186.21],"6-67-14":[-4895.96,1069.93],"6-67-15":[-5222.06,4029.26],"5-33-7":[-5225.42,4840.9],"4-16-3":[-6088.36,4840.9],"6-67-16":[-5683.46,2694.01],"6-67-17":[-5551.89,2374.38],"5-33-8":[-6457.04,4069.35],"6-67-18":[-6708.74,1143.75],"6-67-19":[-5720.89,1413.3],"5-33-9":[-6708.74,2250.36],"4-16-4":[-6708.74,4069.35],"6-67-20":[-5387.04,728.47],"6-67-21":[-5364.72,762.97],"5-33-10":[-5781.56,762.97],"6-67-22":[-5068.72,1483.6],"6-67-23":[-4831.99,1924.9],"5-33-11":[-5219.71,2746.4],"4-16-5":[-5851.42,2914.18],"6-67-24":[-5042.96,1977.29],"6-67-25":[-5197.69,2023.83],"5-33-12":[-5582.63,2023.83],"6-67-26":[-5129.75,714.89],"6-67-27":[-4799.44,784.44],"5-33-13":[-5492.86,874.43],"4-16-6":[-6405.06,2023.83],"6-67-28":[-4895.37,1784.96],"6-67-29":[-4493.72,3028.39],"5-33-14":[-5417.7,3028.39],"6-67-30":[-4058.35,4049.43],"6-67-31":[-2094.93,1231.48],"5-33-15":[-4914.13,4049.43],"4-16-7":[-5948.93,4049.43],"6-67-32":[-2544.85,1215.48],"6-67-33":[-2020.52,4000.43],"5-33-16":[-3670.86,4000.43],"6-67-34":[7.15,2977.39],"6-67-35":[9.03,1719.96],"5-33-17":[7.09,2977.39],"4-16-8":[-5581.84,4000.43],"6-67-36":[13.46,738.44],"6-67-37":[14.74,703.93],"5-33-18":[11.61,820.42],"6-67-38":[16.09,1946.83],"6-67-39":[20.85,1936.29],"5-33-19":[15.69,1946.83],"4-16-9":[10.62,1946.83],"6-67-40":[22.3,1877.89],"6-67-41":[23.96,1519.31],"5-33-20":[22.3,2725.4],"6-67-42":[24.8,762.58],"6-67-43":[-5.04,735.58],"5-33-21":[-5.04,762.58],"4-16-10":[-5.04,2815.18],"6-67-44":[-201.67,1518.16],"6-67-45":[-2914.72,1093.52],"5-33-22":[-3107.33,2284.42],"6-67-46":[-3023.85,2311.56],"6-67-47":[-2615.5,2568.33],"5-33-23":[-3023.85,3919.02],"4-16-11":[-3107.33,3919.02],"6-67-48":[-59.72,3904.84],"6-67-49":[23.85,1041.93],"5-33-24":[-59.72,4706.54],"6-67-50":[25.43,1154.04],"6-67-51":[-23.45,205.77],"5-33-25":[-149.54,1154.04],"4-16-12":[-149.54,4706.54],"6-67-52":[-660.53,831.59],"6-67-53":[-319.12,2383.62],"5-33-26":[-1225.97,2383.62],"6-67-54":[-558.14,2178.23],"6-67-55":[-1422.15,180.11],"5-33-27":[-1651.18,2178.23],"4-16-13":[-3663.22,2383.62],"6-67-56":[-3048.46,32.07],"6-67-57":[-2893.81,3175.51],"5-33-28":[-3430.56,3175.51],"6-67-58":[-3427.44,3414.15],"6-67-59":[-2366.66,3300.16],"5-33-29":[-3667.44,3414.15],"4-16-14":[-3885.42,3414.15],"6-67-60":[-2060.67,2920.73],"6-67-61":[-4046.55,2579.65],"5-33-30":[-4064.25,2920.73],"6-67-62":[-5067.2,2681.47],"6-67-63":[-4376.88,2759.37],"5-33-31":[-5150.03,2759.37],"4-16-15":[-5524.14,2920.73],"6-68-0":[-1395.97,228.71],"6-68-1":[-746.57,344.56],"6-68-2":[-1204.84,600.81],"6-68-3":[-573.03,1385.65],"6-68-4":[-211.37,1035.73],"6-68-5":[-227.53,1514.04],"6-68-6":[-1218.75,2800.76],"6-68-7":[-3690.64,1058.54],"6-68-8":[-5160.84,1750.98],"6-68-9":[-6317.1,1810.17],"6-68-10":[-5667.86,1715.33],"6-68-11":[-6260.37,400.65],"6-68-12":[-5691.62,248.2],"6-68-13":[-4704.67,988.47],"6-68-14":[-7020.16,1845.84],"6-68-15":[-5826.45,3777.17],"6-68-16":[-6188.92,2893.68],"6-68-17":[-5692.66,2503.27],"6-68-18":[-5375.56,2005.15],"6-68-19":[-5450.8,209.56],"6-68-20":[-4919.36,965.23],"6-68-21":[-4692.14,1068.73],"6-68-22":[-4667.49,1178.67],"6-68-23":[-4122.01,1310.69],"6-68-24":[-3252.84,1657.37],"6-68-25":[-1445.59,2062.81],"6-68-26":[-3234.01,2330.5],"6-68-27":[-3799.02,2407.12],"6-68-28":[-3849.29,1857.59],"6-68-29":[-2704.63,2461.39],"6-68-30":[-1235.92,1585.63],"6-68-31":[88.63,1076.94],"6-68-32":[52.66,1044.68],"6-68-33":[-17.85,1463.62],"6-68-34":[-25.08,2402.42],"6-68-35":[-3.35,1798.57],"6-68-36":[-2.05,2521.11],"6-68-37":[-19.61,2407.1],"6-68-38":[-21.61,2094.46],"6-68-39":[-59.49,1680.35],"6-68-40":[23.13,1273.22],"6-68-41":[24.24,1174.97],"6-68-42":[25.75,1094.83],"6-68-43":[-510.76,969.01],"6-68-44":[-1838.28,128.05],"6-68-45":[-3559.2,1968.98],"6-68-46":[-3590.74,2422.35],"6-68-47":[-77.86,2768.43],"6-68-48":[-48.75,3568.74],"6-68-49":[26.26,1796.66],"6-68-50":[26.82,970.67],"6-68-51":[-12.7,243.29],"6-68-52":[-81.09,392.83],"6-68-53":[8.74,1613.82],"6-68-54":[-371.45,1720.18],"6-68-55":[-731.98,1680.62],"6-68-56":[-2957.29,876.47],"6-68-57":[-2789.98,3169.81],"6-68-58":[-2473.32,3460.36],"6-68-59":[-2118.53,3384.4],"6-68-60":[-2469.5,3077.24],"6-68-61":[-4044.31,2588.56],"6-68-62":[-5294.54,2693.73],"6-68-63":[-4390.55,2763.36],"6-69-0":[-1534.01,353.71],"6-69-1":[-850.67,488.28],"5-34-0":[-1534.01,488.28],"6-69-2":[-1116.49,724.24],"6-69-3":[-389.05,1634.3],"5-34-1":[-1204.84,1634.3],"6-69-4":[-114.79,1233.17],"6-69-5":[-167.07,1537.33],"5-34-2":[-227.53,1537.33],"6-69-6":[-893.03,2579.46],"6-69-7":[-4333.93,1592.64],"5-34-3":[-4333.93,2800.76],"6-69-8":[-5100.83,1958.98],"6-69-9":[-5438.85,1310.43],"5-34-4":[-6317.1,1958.98],"6-69-10":[-5731.52,797.68],"6-69-11":[-6054.28,411.97],"5-34-5":[-6260.37,1715.33],"6-69-12":[-5152.25,280.51],"6-69-13":[-4670.89,1624.81],"5-34-6":[-5691.62,1624.81],"6-69-14":[-5444.08,1918.97],"6-69-15":[-5602.62,2548.59],"5-34-7":[-7020.16,3777.17],"6-69-16":[-5880.21,1992.85],"6-69-17":[-5615.19,2820.36],"5-34-8":[-6188.92,2893.68],"6-69-18":[-5076.52,3340.97],"6-69-19":[-5031.26,288.67],"5-34-9":[-5450.8,3340.97],"6-69-20":[-4517.89,392.95],"6-69-21":[-2713.93,877.11],"5-34-10":[-4919.36,1068.73],"6-69-22":[-1587.65,1976.43],"6-69-23":[-179.5,2379.26],"5-34-11":[-4667.49,2379.26],"6-69-24":[-76.51,3331.17],"6-69-25":[184,1663.86],"5-34-12":[-3252.84,3331.17],"6-69-26":[148.07,1957.8],"6-69-27":[176.23,2555.3],"5-34-13":[-3799.02,2555.3],"6-69-28":[29.61,2065.15],"6-69-29":[275.12,1747.94],"5-34-14":[-3849.29,2461.39],"6-69-30":[175.88,1070.44],"6-69-31":[253.73,861.8],"5-34-15":[-1235.92,1585.63],"6-69-32":[-26.92,879.81],"6-69-33":[167.87,1051.06],"5-34-16":[-26.92,1463.62],"6-69-34":[256.14,1735.94],"6-69-35":[12.55,2127.16],"5-34-17":[-25.08,2402.42],"6-69-36":[166.21,2639.31],"6-69-37":[175.08,2023.5],"5-34-18":[-19.61,2639.31],"6-69-38":[215,1749.24],"6-69-39":[10.84,3232.15],"5-34-19":[-59.49,3232.15],"6-69-40":[-162.31,2386.26],"6-69-41":[-159.88,2015.68],"5-34-20":[-162.31,2386.26],"6-69-42":[18.98,938.39],"6-69-43":[-2052.93,390.74],"5-34-21":[-2052.93,1094.83],"6-69-44":[-4025.63,257.63],"6-69-45":[-3561.57,3305.09],"5-34-22":[-4025.63,3305.09],"6-69-46":[-3491.33,2729.6],"6-69-47":[-498.59,1910.02],"5-34-23":[-3590.74,2768.43],"6-69-48":[-34.71,2419.32],"6-69-49":[27.99,1810.92],"5-34-24":[-48.75,3568.74],"6-69-50":[27.14,1580.34],"6-69-51":[-65.55,271.04],"5-34-25":[-65.55,1580.34],"6-69-52":[-38.22,401.67],"6-69-53":[22.44,782.08],"5-34-26":[-81.09,1613.82],"6-69-54":[19.27,1264.46],"6-69-55":[-516.11,1855.33],"5-34-27":[-731.98,1855.33],"6-69-56":[-2615.8,1502.36],"6-69-57":[-2563.83,3108.4],"5-34-28":[-2957.29,3169.81],"6-69-58":[-2060.43,3514.26],"6-69-59":[-931.16,3446.22],"5-34-29":[-2473.32,3514.26],"6-69-60":[-2662.69,3147.37],"6-69-61":[-4050.55,2608.3],"5-34-30":[-4050.55,3147.37],"6-69-62":[-4985.7,2704.02],"6-69-63":[-4378.1,2767.34],"5-34-31":[-5294.54,2767.34],"6-70-0":[-1296.53,146.9],"6-70-1":[-771.95,377.43],"6-70-2":[-1112.58,582.7],"6-70-3":[-12.71,1635.74],"6-70-4":[-143.04,1193.37],"6-70-5":[30.17,1777.45],"6-70-6":[-870.06,2266.17],"6-70-7":[-4579.35,2122.75],"6-70-8":[-5091.86,2096.53],"6-70-9":[-5441.27,735.36],"6-70-10":[-5521.23,350.95],"6-70-11":[-5870.11,119.82],"6-70-12":[-5490.68,358.72],"6-70-13":[-4850.2,462.61],"6-70-14":[-5849.2,2057.45],"6-70-15":[-5313.8,1043.38],"6-70-16":[-5533.8,2489.77],"6-70-17":[-5647.65,2049.01],"6-70-18":[-5270.37,753.24],"6-70-19":[-4446.22,1946.4],"6-70-20":[-2062.42,2219.67],"6-70-21":[-190.7,1622.53],"6-70-22":[68.85,2131.4],"6-70-23":[343.56,2428.71],"6-70-24":[27.16,3468.04],"6-70-25":[108.1,2059.93],"6-70-26":[121.91,1646.91],"6-70-27":[274.16,1823.65],"6-70-28":[322.1,1743.04],"6-70-29":[354.64,1235.68],"6-70-30":[262.03,872.26],"6-70-31":[254.18,533.95],"6-70-32":[223.98,518.93],"6-70-33":[192.31,886.28],"6-70-34":[374.92,1242.7],"6-70-35":[339.89,1757.04],"6-70-36":[292.26,1831.76],"6-70-37":[178.82,1687.18],"6-70-38":[175.77,2162.84],"6-70-39":[527.04,3422.04],"6-70-40":[356.51,2505.72],"6-70-41":[47.81,2222.4],"6-70-42":[-651.9,1720.53],"6-70-43":[-3892.14,2268.67],"6-70-44":[-4167.54,2017.39],"6-70-45":[-4024.78,727.91],"6-70-46":[-2423.02,1931.45],"6-70-47":[-1183.92,2422.92],"6-70-48":[29.91,1026.9],"6-70-49":[29.84,2002.07],"6-70-50":[31.81,455.04],"6-70-51":[-106.87,346],"6-70-52":[-425.67,109.12],"6-70-53":[-275.99,320.25],"6-70-54":[-257.87,689.96],"6-70-55":[15.38,1949.22],"6-70-56":[-1496.13,2034.64],"6-70-57":[-1371.09,3052.08],"6-70-58":[-472.27,3536.78],"6-70-59":[-295.51,3480.29],"6-70-60":[-2571.36,3239.33],"6-70-61":[-4037.07,2709.23],"6-70-62":[-4806.88,2724.91],"6-70-63":[-4397.11,2768.65],"6-71-0":[-1366.5,180.42],"6-71-1":[-1045.85,177.35],"5-35-0":[-1366.5,377.43],"6-71-2":[-1106.99,577.96],"6-71-3":[-139.06,862.17],"5-35-1":[-1112.58,1635.74],"4-17-0":[-1534.01,1635.74],"6-71-4":[-31.29,779.54],"6-71-5":[27.24,1826.93],"5-35-2":[-143.04,1826.93],"6-71-6":[-972.15,2236.9],"6-71-7":[-4515.43,1854.14],"5-35-3":[-4579.35,2266.17],"4-17-1":[-4579.35,2800.76],"3-8-0":[-4705.66,3079.8],"6-71-8":[-5083,851.76],"6-71-9":[-5368.62,511.56],"5-35-4":[-5441.27,2096.53],"6-71-10":[-5717.96,158.69],"6-71-11":[-6002.07,214.15],"5-35-5":[-6002.07,350.95],"4-17-2":[-6317.1,2096.53],"6-71-12":[-5985.81,342.67],"6-71-13":[-4829.82,644.43],"5-35-6":[-5985.81,644.43],"6-71-14":[-5630.52,2648.45],"6-71-15":[-5696.39,1842.42],"5-35-7":[-5849.2,2648.45],"4-17-3":[-7020.16,3777.17],"3-8-1":[-7020.16,4840.9],"6-71-16":[-5400.18,2700.03],"6-71-17":[-5606.51,2930.53],"5-35-8":[-5647.65,2930.53],"6-71-18":[-5476.96,2524.92],"6-71-19":[-2974.28,1636.67],"5-35-9":[-5476.96,2524.92],"4-17-4":[-6188.92,3340.97],"6-71-20":[18.37,2264.81],"6-71-21":[-31.98,1643.49],"5-35-10":[-2062.42,2264.81],"6-71-22":[94.19,1557.97],"6-71-23":[273.49,1396.87],"5-35-11":[68.85,2428.71],"4-17-5":[-4919.36,2428.71],"3-8-2":[-6708.74,4069.35],"6-71-24":[452.55,1492.56],"6-71-25":[308.29,1368.77],"5-35-12":[27.16,3468.04],"6-71-26":[326.68,1369.26],"6-71-27":[373.83,1499.67],"5-35-13":[121.91,1823.65],"4-17-6":[-3799.02,3468.04],"6-71-28":[371.4,1383.2],"6-71-29":[382.62,1091.79],"5-35-14":[322.1,1743.04],"6-71-30":[291.34,761.73],"6-71-31":[282.28,584.48],"5-35-15":[254.18,872.26],"4-17-7":[-3849.29,2461.39],"3-8-3":[-6405.06,4049.43],"6-71-32":[271.34,592.5],"6-71-33":[253.5,758.09],"5-35-16":[192.31,886.28],"6-71-34":[393.62,1099.25],"6-71-35":[383.62,1385.35],"5-35-17":[339.89,1757.04],"4-17-8":[-26.92,2402.42],"6-71-36":[388.19,1507.74],"6-71-37":[353.84,1380.25],"5-35-18":[178.82,1831.76],"6-71-38":[344.8,1371.66],"6-71-39":[487.74,1497.56],"5-35-19":[175.77,3422.04],"4-17-9":[-59.49,3422.04],"3-8-4":[-5581.84,4000.43],"6-71-40":[291.96,1399.38],"6-71-41":[101.97,1582.99],"5-35-20":[47.81,2505.72],"6-71-42":[-192.85,1667.49],"6-71-43":[-3939.79,2341.81],"5-35-21":[-3939.79,2341.81],"4-17-10":[-3939.79,2505.72],"6-71-44":[-5096.78,1732.68],"6-71-45":[-5096.08,2430.31],"5-35-22":[-5096.78,2430.31],"6-71-46":[-1220.58,2821.28],"6-71-47":[30.14,2550.27],"5-35-23":[-2423.02,2821.28],"4-17-11":[-5096.78,3305.09],"3-8-5":[-5096.78,3919.02],"6-71-48":[31.75,1822.33],"6-71-49":[32.11,2509.12],"5-35-24":[29.84,2509.12],"6-71-50":[33.7,620.24],"6-71-51":[-70.85,335.96],"5-35-25":[-106.87,620.24],"4-17-12":[-106.87,3568.74],"6-71-52":[-218.92,210.85],"6-71-53":[-209.1,157.78],"5-35-26":[-425.67,320.25],"6-71-54":[-161.71,548.2],"6-71-55":[-109.75,820.05],"5-35-27":[-257.87,1949.22],"4-17-13":[-731.98,1949.22],"3-8-6":[-3663.22,4706.54],"6-71-56":[-427.72,1800.79],"6-71-57":[-457.25,2944.43],"5-35-28":[-1496.13,3052.08],"6-71-58":[-482.06,3600.93],"6-71-59":[-266.53,3598.47],"5-35-29":[-482.06,3600.93],"4-17-14":[-2957.29,3600.93],"6-71-60":[-2661.25,3295.33],"6-71-61":[-4172.92,2810.96],"5-35-30":[-4172.92,3295.33],"6-71-62":[-5181.02,2751.92],"6-71-63":[-4390.32,2771.32],"5-35-31":[-5181.02,2771.32],"4-17-15":[-5294.54,3295.33],"3-8-7":[-5524.14,3600.93],"6-72-0":[-1151.65,235.57],"6-72-1":[-1116.99,366.1],"6-72-2":[-1218.03,841.26],"6-72-3":[-155.53,753.17],"6-72-4":[18.55,948.27],"6-72-5":[22.7,1790.98],"6-72-6":[-847.11,2859.42],"6-72-7":[-4432.93,1167.12],"6-72-8":[-5028.12,435.24],"6-72-9":[-5233.47,286.65],"6-72-10":[-5869.59,241.92],"6-72-11":[-6044.56,275.13],"6-72-12":[-6053.24,318.56],"6-72-13":[-5914.13,382.74],"6-72-14":[-5764.94,1998.12],"6-72-15":[-6150.11,2540.92],"6-72-16":[-5652.67,2847.57],"6-72-17":[-5293.94,2950.99],"6-72-18":[-5648.78,2427.62],"6-72-19":[-5036.24,2464.23],"6-72-20":[7.73,2380.96],"6-72-21":[-11.66,1773.15],"6-72-22":[88.27,1869.59],"6-72-23":[289.98,1464.79],"6-72-24":[470.56,1912.86],"6-72-25":[498.02,1340.77],"6-72-26":[593.56,1710.7],"6-72-27":[454.32,3017.52],"6-72-28":[444.14,1527.59],"6-72-29":[442.37,1113.75],"6-72-30":[352.38,786.57],"6-72-31":[319.72,701.62],"6-72-32":[322.07,733.63],"6-72-33":[332.54,807.65],"6-72-34":[430.54,1119.46],"6-72-35":[449.14,1534.31],"6-72-36":[468.39,2938.51],"6-72-37":[634.18,1558.71],"6-72-38":[538.7,1314.77],"6-72-39":[480.56,1888.87],"6-72-40":[305.79,1498.79],"6-72-41":[87.14,1901.6],"6-72-42":[-6.16,1783.15],"6-72-43":[-3410.48,2501.84],"6-72-44":[-4635.36,2392.7],"6-72-45":[-1535.43,2378.1],"6-72-46":[-1546.81,2846.24],"6-72-47":[32.16,2746.21],"6-72-48":[32.45,2472.37],"6-72-49":[32.5,2002.61],"6-72-50":[34.78,369.41],"6-72-51":[30.32,312.78],"6-72-52":[-33.81,268.25],"6-72-53":[-115.27,236.4],"6-72-54":[-93.35,289.52],"6-72-55":[-118.26,410.07],"6-72-56":[-452.6,1137.67],"6-72-57":[-498.31,3236.81],"6-72-58":[-447.32,3666.27],"6-72-59":[-205.86,3666.27],"6-72-60":[-1730.17,3378.93],"6-72-61":[-4033.67,2968.07],"6-72-62":[-5182.3,2779.15],"6-72-63":[-4400.75,2774.31],"6-73-0":[-1098.45,386.48],"6-73-1":[-252.17,589.35],"5-36-0":[-1151.65,589.35],"6-73-2":[-246.65,1025.36],"6-73-3":[23.45,1256.47],"5-36-1":[-1218.03,1256.47],"6-73-4":[23.04,1575.59],"6-73-5":[22,2167.88],"5-36-2":[18.55,2167.88],"6-73-6":[-768.66,2661.08],"6-73-7":[-4274.15,1083.56],"5-36-3":[-4432.93,2859.42],"6-73-8":[-5101.12,559.12],"6-73-9":[-5237.91,398.6],"5-36-4":[-5237.91,559.12],"6-73-10":[-5410.92,258.06],"6-73-11":[-5818.04,338.7],"5-36-5":[-6044.56,338.7],"6-73-12":[-5916.34,371.65],"6-73-13":[-6576.21,309.64],"5-36-6":[-6576.21,382.74],"6-73-14":[-6043.8,1369.76],"6-73-15":[-6226.23,2520.59],"5-36-7":[-6226.23,2540.92],"6-73-16":[-6031.72,1559.76],"6-73-17":[-4388.63,1798.35],"5-36-8":[-6031.72,2950.99],"6-73-18":[-4756.13,2185.74],"6-73-19":[-4900.81,2137.5],"5-36-9":[-5648.78,2464.23],"6-73-20":[-3072.54,2714.39],"6-73-21":[-117.56,3028.87],"5-36-10":[-3072.54,3028.87],"6-73-22":[27.75,1855.23],"6-73-23":[275.3,2052.36],"5-36-11":[27.75,2052.36],"6-73-24":[280.09,1490.96],"6-73-25":[366.24,1373.07],"5-36-12":[280.09,1912.86],"6-73-26":[428.45,2020.89],"6-73-27":[423.73,1615.01],"5-36-13":[423.73,3017.52],"6-73-28":[386.96,1897.94],"6-73-29":[394.88,1695.64],"5-36-14":[386.96,1897.94],"6-73-30":[425.75,1632.25],"6-73-31":[366.87,1474.32],"5-36-15":[319.72,1632.25],"6-73-32":[374.33,1540.39],"6-73-33":[413.29,1685.26],"5-36-16":[322.07,1685.26],"6-73-34":[408.77,1701.66],"6-73-35":[399.36,1902.71],"5-36-17":[399.36,1902.71],"6-73-36":[436.55,1683.01],"6-73-37":[454.43,2005.89],"5-36-18":[436.55,2938.51],"6-73-38":[387.47,1440.16],"6-73-39":[313.56,1496.99],"5-36-19":[313.56,1888.87],"6-73-40":[303.1,2110.34],"6-73-41":[35.21,1898.28],"5-36-20":[35.21,2110.34],"6-73-42":[-115.12,3126.88],"6-73-43":[-3277.96,2790.11],"5-36-21":[-3410.48,3126.88],"6-73-44":[-4410.36,2087.17],"6-73-45":[-1533.08,2111.08],"5-36-22":[-4635.36,2392.7],"6-73-46":[-1407.82,1782.34],"6-73-47":[-132.5,1515.81],"5-36-23":[-1546.81,2846.24],"6-73-48":[-48.96,2476.4],"6-73-49":[33.33,1341.89],"5-36-24":[-48.96,2476.4],"6-73-50":[35.38,302.26],"6-73-51":[30.59,367.74],"5-36-25":[30.32,369.41],"6-73-52":[27.68,312.58],"6-73-53":[-91.02,254.41],"5-36-26":[-115.27,312.58],"6-73-54":[20.07,387],"6-73-55":[-0.77,495.19],"5-36-27":[-118.26,495.19],"6-73-56":[-62.28,1042.73],"6-73-57":[-430.03,3236.81],"5-36-28":[-498.31,3236.81],"6-73-58":[-439.32,3671.29],"6-73-59":[-323.86,3685.99],"5-36-29":[-447.32,3685.99],"6-73-60":[-1858.42,3441.2],"6-73-61":[-4051.29,3024.01],"5-36-30":[-4051.29,3441.2],"6-73-62":[-4957.74,2818.12],"6-73-63":[-4411.94,2780.49],"5-36-31":[-5182.3,2818.12],"6-74-0":[-1236.82,554.52],"6-74-1":[-115.89,808.27],"6-74-2":[22.03,898.1],"6-74-3":[-214.68,1339.53],"6-74-4":[-109.83,1733.48],"6-74-5":[-19.14,1828.63],"6-74-6":[-1043.71,2004.49],"6-74-7":[-4151.29,736.85],"6-74-8":[-5058.32,3219.23],"6-74-9":[-5278.16,401.9],"6-74-10":[-5420.6,523.35],"6-74-11":[-5510.77,314.28],"6-74-12":[-5800,307.64],"6-74-13":[-6626.98,347.09],"6-74-14":[-6537.35,387.19],"6-74-15":[-6142.73,488.72],"6-74-16":[-6021.75,429.54],"6-74-17":[-5675.14,2570.69],"6-74-18":[-5047.31,3075.92],"6-74-19":[-4902.23,3021.97],"6-74-20":[-3976.43,2037.33],"6-74-21":[-2943.73,3474.34],"6-74-22":[11.08,2304.86],"6-74-23":[11.91,2318.87],"6-74-24":[164.06,1564.06],"6-74-25":[187.45,1723.71],"6-74-26":[300.4,1719.44],"6-74-27":[439.11,1802.88],"6-74-28":[346.35,1700.51],"6-74-29":[356.78,2454.65],"6-74-30":[452.9,3419],"6-74-31":[534,5024.49],"6-74-32":[553.03,4938.48],"6-74-33":[461.33,3461],"6-74-34":[382.42,2489.57],"6-74-35":[381.96,1708.52],"6-74-36":[432.19,1881.89],"6-74-37":[298.55,1739.34],"6-74-38":[217.88,1752.71],"6-74-39":[183.38,1623.82],"6-74-40":[18.19,2352.72],"6-74-41":[18.19,2369.87],"6-74-42":[-47.25,3510.35],"6-74-43":[-3200.67,2075.35],"6-74-44":[-4452.12,2962.7],"6-74-45":[-1603.77,2988.35],"6-74-46":[-2119.52,2510.29],"6-74-47":[-2188.57,416.42],"6-74-48":[-230.72,445.51],"6-74-49":[35.21,379.33],"6-74-50":[35.5,351.6],"6-74-51":[31.79,306.62],"6-74-52":[29.44,332.57],"6-74-53":[-27.17,205.8],"6-74-54":[20.92,394.56],"6-74-55":[18.14,656.54],"6-74-56":[-392.13,716.25],"6-74-57":[-410.17,2976.87],"6-74-58":[-426.08,3667.35],"6-74-59":[-338.34,3732.45],"6-74-60":[-1620.83,3510.17],"6-74-61":[-4272.22,3119.66],"6-74-62":[-4960.26,2893.13],"6-74-63":[-4388.84,2805.44],"6-75-0":[-1220.82,637.81],"6-75-1":[18.94,947.66],"5-37-0":[-1236.82,947.66],"6-75-2":[21.42,1165.87],"6-75-3":[-335.37,1205.39],"5-37-1":[-335.37,1339.53],"4-18-0":[-1236.82,1339.53],"6-75-4":[-108.22,1531.11],"6-75-5":[17.26,1406.61],"5-37-2":[-109.83,1828.63],"6-75-6":[-680,2529.86],"6-75-7":[-3764.21,1181.22],"5-37-3":[-4151.29,2529.86],"4-18-1":[-4432.93,2859.42],"6-75-8":[-4934.93,712.47],"6-75-9":[-5173.02,4110.39],"5-37-4":[-5278.16,4110.39],"6-75-10":[-5338.72,318.43],"6-75-11":[-5582.3,357.76],"5-37-5":[-5582.3,523.35],"4-18-2":[-6044.56,4110.39],"6-75-12":[-5891.33,313.84],"6-75-13":[-5966.26,252.12],"5-37-6":[-6626.98,347.09],"6-75-14":[-6187.44,293.98],"6-75-15":[-5647.59,195.69],"5-37-7":[-6537.35,488.72],"4-18-3":[-6626.98,2540.92],"6-75-16":[-6289.49,673.31],"6-75-17":[-6185.21,2438.12],"5-37-8":[-6289.49,2570.69],"6-75-18":[-5007.04,3012.55],"6-75-19":[-4544.81,2342.54],"5-37-9":[-5047.31,3075.92],"4-18-4":[-6289.49,3075.92],"6-75-20":[-4169.53,223.67],"6-75-21":[-3183.61,1970.91],"5-37-10":[-4169.53,3474.34],"6-75-22":[-1688.18,2002.31],"6-75-23":[-207.39,1362.61],"5-37-11":[-1688.18,2318.87],"4-18-5":[-4169.53,3474.34],"6-75-24":[65.06,2320.42],"6-75-25":[91.67,2518.28],"5-37-12":[65.06,2518.28],"6-75-26":[104.79,1669.47],"6-75-27":[352.02,1809.35],"5-37-13":[104.79,1809.35],"4-18-6":[65.06,3017.52],"6-75-28":[354.16,2864.49],"6-75-29":[356.57,2398.3],"5-37-14":[346.35,2864.49],"6-75-30":[389.82,3166.22],"6-75-31":[594.3,2060.9],"5-37-15":[389.82,5024.49],"4-18-7":[319.72,5024.49],"6-75-32":[585.06,2012.4],"6-75-33":[416.69,3105.21],"5-37-16":[416.69,4938.48],"6-75-34":[392.48,2443.31],"6-75-35":[382.84,2943.5],"5-37-17":[381.96,2943.5],"4-18-8":[322.07,4938.48],"6-75-36":[378.03,1864.36],"6-75-37":[93.22,1716.39],"5-37-18":[93.22,1881.89],"6-75-38":[74.67,2583.3],"6-75-39":[57.48,2427.44],"5-37-19":[57.48,2583.3],"4-18-9":[57.48,2938.51],"6-75-40":[-242.83,1442.62],"6-75-41":[-91.25,2018.31],"5-37-20":[-242.83,2369.87],"6-75-42":[-83.43,1989.17],"6-75-43":[-2707.91,240.08],"5-37-21":[-3200.67,3510.35],"4-18-10":[-3410.48,3510.35],"6-75-44":[-2823.85,2320.44],"6-75-45":[-1210.6,2953.57],"5-37-22":[-4452.12,2988.35],"6-75-46":[-2177.38,2379.21],"6-75-47":[-2265.89,699.95],"5-37-23":[-2265.89,2510.29],"4-18-11":[-4635.36,2988.35],"6-75-48":[-215.43,194.97],"6-75-49":[-173.62,295.62],"5-37-24":[-230.72,445.51],"6-75-50":[36.6,248.97],"6-75-51":[34.25,310.31],"5-37-25":[31.79,351.6],"4-18-12":[-230.72,2476.4],"6-75-52":[30.27,360.14],"6-75-53":[-41.42,701.92],"5-37-26":[-41.42,701.92],"6-75-54":[20.79,428.74],"6-75-55":[-121.89,777.04],"5-37-27":[-121.89,777.04],"4-18-13":[-121.89,777.04],"6-75-56":[-384.7,1213.92],"6-75-57":[-447.71,2787.68],"5-37-28":[-447.71,2976.87],"6-75-58":[-375.05,3670.33],"6-75-59":[-331.06,3745.57],"5-37-29":[-426.08,3745.57],"4-18-14":[-498.31,3745.57],"6-75-60":[-1033.03,3590.97],"6-75-61":[-4324.73,3236.16],"5-37-30":[-4324.73,3590.97],"6-75-62":[-4687.77,2971.57],"6-75-63":[-4404.37,2839.82],"5-37-31":[-4960.26,2971.57],"4-18-15":[-5182.3,3590.97],"6-76-0":[-1100.37,787.46],"6-76-1":[18.88,1369.31],"6-76-2":[20.05,1230.96],"6-76-3":[-173.13,1383.91],"6-76-4":[15.48,1488.42],"6-76-5":[14.03,1534.77],"6-76-6":[-164.43,2313.76],"6-76-7":[-3852.41,1139.05],"6-76-8":[-4903.69,538.64],"6-76-9":[-5169.28,306.08],"6-76-10":[-5362.81,316.75],"6-76-11":[-5483.38,357.69],"6-76-12":[-5573.62,332.1],"6-76-13":[-5588.1,291.25],"6-76-14":[-5682.31,251.97],"6-76-15":[-5514.79,721.64],"6-76-16":[-5255.82,1541.99],"6-76-17":[-5815.38,2603.85],"6-76-18":[-6277.37,3897.68],"6-76-19":[-5944.74,3093.99],"6-76-20":[-4889.87,2689.12],"6-76-21":[-3229.67,2516.84],"6-76-22":[-2487.96,2262.38],"6-76-23":[-2603.95,1972.68],"6-76-24":[-2073.83,2173.07],"6-76-25":[-93.96,1794.5],"6-76-26":[28.49,2849.88],"6-76-27":[217.45,2729.65],"6-76-28":[235.12,3267.45],"6-76-29":[230.59,3342.07],"6-76-30":[309.01,3564.01],"6-76-31":[236.85,4305.91],"6-76-32":[258.3,4251.91],"6-76-33":[330.21,3634.02],"6-76-34":[206.1,3310.07],"6-76-35":[230.19,3133.45],"6-76-36":[-18.37,2712.65],"6-76-37":[7.99,2969.88],"6-76-38":[-27.14,1841.51],"6-76-39":[-90.16,2064.08],"6-76-40":[-2173.17,1805.67],"6-76-41":[-2277.59,2225.38],"6-76-42":[-1756.08,2563.86],"6-76-43":[-2149.83,2801.7],"6-76-44":[-2247.85,3074.25],"6-76-45":[-318.31,3812.51],"6-76-46":[-2278.18,2525.74],"6-76-47":[-2641.23,1537.39],"6-76-48":[-60.34,737.51],"6-76-49":[-15.68,250.51],"6-76-50":[5.94,290.32],"6-76-51":[36.06,326.5],"6-76-52":[32.25,359.97],"6-76-53":[20.17,425.42],"6-76-54":[0.26,323.5],"6-76-55":[-203.89,540.75],"6-76-56":[-284.94,1400],"6-76-57":[-321.47,2930.46],"6-76-58":[-321.94,3670.26],"6-76-59":[-308.26,3781.61],"6-76-60":[-353.67,3628.25],"6-76-61":[-4071.22,3346.55],"6-76-62":[-5122.48,3092.47],"6-76-63":[-4415.19,2876.01],"6-77-0":[-1124.35,1055.36],"6-77-1":[18.74,1392.41],"5-38-0":[-1124.35,1392.41],"6-77-2":[19.64,1229.3],"6-77-3":[-94.34,1373.41],"5-38-1":[-173.13,1383.91],"6-77-4":[12.81,1634.75],"6-77-5":[12.61,1743.61],"5-38-2":[12.61,1743.61],"6-77-6":[-352.38,1813.53],"6-77-7":[-4089.95,676.92],"5-38-3":[-4089.95,2313.76],"6-77-8":[-4882.69,352.95],"6-77-9":[-5215.5,366.87],"5-38-4":[-5215.5,538.64],"6-77-10":[-5498.32,327.96],"6-77-11":[-5772.44,306.61],"5-38-5":[-5772.44,357.69],"6-77-12":[-5701.29,311.33],"6-77-13":[-5196.38,300.03],"5-38-6":[-5701.29,332.1],"6-77-14":[-5259.29,375.52],"6-77-15":[-4338.29,1214.51],"5-38-7":[-5682.31,1214.51],"6-77-16":[-4941.4,1062.09],"6-77-17":[-5667.66,3382.16],"5-38-8":[-5815.38,3382.16],"6-77-18":[-5914.86,3297.16],"6-77-19":[-5911.63,2377.57],"5-38-9":[-6277.37,3897.68],"6-77-20":[-5580.5,1781.74],"6-77-21":[-5357.43,1378.43],"5-38-10":[-5580.5,2689.12],"6-77-22":[-5016.07,2032.54],"6-77-23":[-4117.39,2355.84],"5-38-11":[-5016.07,2355.84],"6-77-24":[-3411.94,2168.09],"6-77-25":[-2838.58,2735.56],"5-38-12":[-3411.94,2735.56],"6-77-26":[-70.43,3016.69],"6-77-27":[82.06,4526.44],"5-38-13":[-70.43,4526.44],"6-77-28":[-83.3,4259.18],"6-77-29":[-358.33,4177.49],"5-38-14":[-358.33,4259.18],"6-77-30":[-934.21,5793.53],"6-77-31":[142.08,4892.29],"5-38-15":[-934.21,5793.53],"6-77-32":[136.09,5158.31],"6-77-33":[-45.68,5869.55],"5-38-16":[-45.68,5869.55],"6-77-34":[-49.58,4123.49],"6-77-35":[-48.06,4205.18],"5-38-17":[-49.58,4205.18],"6-77-36":[-18.95,4458.44],"6-77-37":[-438.11,2927.68],"5-38-18":[-438.11,4458.44],"6-77-38":[-2829.96,2650.56],"6-77-39":[-2796.31,2037.87],"5-38-19":[-2829.96,2650.56],"6-77-40":[-2472.44,2270.84],"6-77-41":[-1743.75,2075.54],"5-38-20":[-2472.44,2270.84],"6-77-42":[9.2,1378.06],"6-77-43":[15.55,1800.57],"5-38-21":[-2149.83,2801.7],"6-77-44":[24.23,2378.7],"6-77-45":[27.4,3201.77],"5-38-22":[-2247.85,3812.51],"6-77-46":[-2116.73,3332.16],"6-77-47":[-2192.81,1046.56],"5-38-23":[-2641.23,3332.16],"6-77-48":[-40.14,1277.56],"6-77-49":[42.15,369.81],"5-38-24":[-60.34,1277.56],"6-77-50":[-102.73,298.77],"6-77-51":[38.18,305.31],"5-38-25":[-102.73,326.5],"6-77-52":[33.28,305.57],"6-77-53":[29.46,331.34],"5-38-26":[20.17,425.42],"6-77-54":[-0.19,369.05],"6-77-55":[-189.27,356.35],"5-38-27":[-203.89,540.75],"6-77-56":[-235.14,1400],"6-77-57":[-372.29,3035.01],"5-38-28":[-372.29,3035.01],"6-77-58":[-287.74,3670.15],"6-77-59":[-274.5,3814.29],"5-38-29":[-321.94,3814.29],"6-77-60":[-469.71,3652.21],"6-77-61":[-3993.76,3460.18],"5-38-30":[-4071.22,3652.21],"6-77-62":[-5243.84,3182.27],"6-77-63":[-4424.23,2907.97],"5-38-31":[-5243.84,3182.27],"6-78-0":[-970.38,939.18],"6-78-1":[18.5,1250.32],"6-78-2":[-30.99,1167.04],"6-78-3":[14.08,1218.6],"6-78-4":[10.33,1687.01],"6-78-5":[8.69,1466.36],"6-78-6":[-400.01,1386.1],"6-78-7":[-3581.29,518.66],"6-78-8":[-4793.25,314.82],"6-78-9":[-5180.83,268.49],"6-78-10":[-5348.63,286.2],"6-78-11":[-5412.25,279.53],"6-78-12":[-4944.88,258.22],"6-78-13":[-4186.19,248.68],"6-78-14":[-4793.25,340.26],"6-78-15":[-4143.61,680.41],"6-78-16":[-5893.98,3881.85],"6-78-17":[-4967.62,3918.41],"6-78-18":[-5507.69,3209.2],"6-78-19":[-5894.31,1446.37],"6-78-20":[-5402.84,949.71],"6-78-21":[-5248.75,1047.17],"6-78-22":[-4866.76,1974.55],"6-78-23":[-4208.66,2149.19],"6-78-24":[-4061.47,2651.93],"6-78-25":[-3288.6,2755.96],"6-78-26":[-3098.02,3297.68],"6-78-27":[-3315.48,3970.6],"6-78-28":[-3578.64,3839.48],"6-78-29":[-3580.79,4373.18],"6-78-30":[-3657.85,1692.99],"6-78-31":[-3167.58,881.98],"6-78-32":[-77.85,835.18],"6-78-33":[-77.15,1678.99],"6-78-34":[-74.93,4326.17],"6-78-35":[-67.51,3769.59],"6-78-36":[-130.64,3880.6],"6-78-37":[-2000.23,3253.67],"6-78-38":[-2030.7,2669.71],"6-78-39":[-711.3,2607.92],"6-78-40":[-3.87,2060.19],"6-78-41":[3.4,2044.8],"6-78-42":[8.86,1048.06],"6-78-43":[15.8,951.21],"6-78-44":[24.72,1433.82],"6-78-45":[29.26,3156.2],"6-78-46":[-2024.01,3821.45],"6-78-47":[-2001.31,3842.94],"6-78-48":[-74.88,677.36],"6-78-49":[11.18,337.93],"6-78-50":[45.44,248.74],"6-78-51":[40.21,253.02],"6-78-52":[34.91,285.29],"6-78-53":[31.4,287.71],"6-78-54":[-3.31,270.42],"6-78-55":[-81.06,316.21],"6-78-56":[-257.78,1829.25],"6-78-57":[-388.9,3049.46],"6-78-58":[-347.69,3654.4],"6-78-59":[-343.6,3814.29],"6-78-60":[-573.3,3676.48],"6-78-61":[-3981.03,3515.55],"6-78-62":[-5253.05,3278.24],"6-78-63":[-4405.8,2956.72],"6-79-0":[-613.35,1108.07],"6-79-1":[-682.84,1001.69],"5-39-0":[-970.38,1250.32],"6-79-2":[-353.21,781.43],"6-79-3":[-157.61,1344.7],"5-39-1":[-353.21,1344.7],"4-19-0":[-1124.35,1392.41],"6-79-4":[-36.17,1629.79],"6-79-5":[7.69,1296.92],"5-39-2":[-36.17,1687.01],"6-79-6":[-355.26,1171.38],"6-79-7":[-2386.01,1544.08],"5-39-3":[-3581.29,1544.08],"4-19-1":[-4089.95,2313.76],"3-9-0":[-4432.93,2859.42],"6-79-8":[-4562.76,224],"6-79-9":[-5148.85,273.71],"5-39-4":[-5180.83,314.82],"6-79-10":[-5415.85,309.09],"6-79-11":[-5462.34,297.07],"5-39-5":[-5462.34,309.09],"4-19-2":[-5772.44,538.64],"6-79-12":[-5180.01,294.44],"6-79-13":[-4272.35,291.7],"5-39-6":[-5180.01,294.44],"6-79-14":[-5007.92,260.4],"6-79-15":[-4145.05,476.12],"5-39-7":[-5007.92,680.41],"4-19-3":[-5701.29,1214.51],"3-9-1":[-6626.98,4110.39],"2-4-0":[-7020.16,4840.9],"6-79-16":[-5156.24,5616.16],"6-79-17":[-5348.51,5133.37],"5-39-8":[-5893.98,5616.16],"6-79-18":[-4972.35,4058.15],"6-79-19":[-4829.8,3448.78],"5-39-9":[-5894.31,4058.15],"4-19-4":[-6277.37,5616.16],"6-79-20":[-4587.19,377.37],"6-79-21":[-4872.25,790.42],"5-39-10":[-5402.84,1047.17],"6-79-22":[-4701.53,1407.05],"6-79-23":[-4057.57,1499.62],"5-39-11":[-4866.76,2149.19],"4-19-5":[-5580.5,2689.12],"3-9-2":[-6289.49,5616.16],"6-79-24":[-3209.08,1721.97],"6-79-25":[-2548.5,2990.34],"5-39-12":[-4061.47,2990.34],"6-79-26":[-3723.11,3647.39],"6-79-27":[-3701.88,3223.81],"5-39-13":[-3723.11,3970.6],"4-19-6":[-4061.47,4526.44],"6-79-28":[-4216.96,3002.22],"6-79-29":[-4531.33,1451.56],"5-39-14":[-4531.33,4373.18],"6-79-30":[-4682.65,913.05],"6-79-31":[-4288.31,587.03],"5-39-15":[-4682.65,1692.99],"4-19-7":[-4682.65,5793.53],"3-9-3":[-4682.65,5793.53],"2-4-1":[-6708.74,5793.53],"6-79-32":[-3596.12,522.02],"6-79-33":[-86.64,869.52],"5-39-16":[-3596.12,1678.99],"6-79-34":[-81.84,1423.53],"6-79-35":[-1528.24,2909.22],"5-39-17":[-1528.24,4326.17],"4-19-8":[-3596.12,5869.55],"6-79-36":[-1674.39,3169.82],"6-79-37":[-933.73,3564.38],"5-39-18":[-2000.23,3880.6],"6-79-38":[-93.44,2963.33],"6-79-39":[-68.11,1691.97],"5-39-19":[-2030.7,2963.33],"4-19-9":[-2829.96,4458.44],"3-9-4":[-3596.12,5869.55],"6-79-40":[-18.99,1441.6],"6-79-41":[-12.01,1436.47],"5-39-20":[-18.99,2060.19],"6-79-42":[8.42,786.4],"6-79-43":[7.66,379.51],"5-39-21":[7.66,1048.06],"4-19-10":[-2472.44,2801.7],"6-79-44":[24.72,3388.51],"6-79-45":[31.3,4034.49],"5-39-22":[24.72,4034.49],"6-79-46":[30.84,5065.49],"6-79-47":[39.44,5582.77],"5-39-23":[-2024.01,5582.77],"4-19-11":[-2641.23,5582.77],"3-9-5":[-4635.36,5582.77],"2-4-2":[-5581.84,5869.55],"6-79-48":[-6.88,476.03],"6-79-49":[-45.43,262.45],"5-39-24":[-74.88,677.36],"6-79-50":[45.58,287.29],"6-79-51":[40.61,298.27],"5-39-25":[40.21,298.27],"4-19-12":[-102.73,1277.56],"6-79-52":[35.82,293.08],"6-79-53":[31.85,306.15],"5-39-26":[31.4,306.15],"6-79-54":[11.02,265.84],"6-79-55":[-22.65,224.63],"5-39-27":[-81.06,316.21],"4-19-13":[-203.89,540.75],"3-9-6":[-230.72,2476.4],"6-79-56":[-132.5,2238.4],"6-79-57":[-376.73,3044.79],"5-39-28":[-388.9,3049.46],"6-79-58":[-382.68,3633.13],"6-79-59":[-360.54,3703.54],"5-39-29":[-382.68,3814.29],"4-19-14":[-388.9,3814.29],"6-79-60":[-487.25,3739.77],"6-79-61":[-3962.4,3596.54],"5-39-30":[-3981.03,3739.77],"6-79-62":[-5147.9,3326.45],"6-79-63":[-4431.66,2985.88],"5-39-31":[-5253.05,3326.45],"4-19-15":[-5253.05,3739.77],"3-9-7":[-5253.05,3814.29],"2-4-3":[-5524.14,4706.54],"6-80-0":[-607.91,1052.02],"6-80-1":[-695.37,916.87],"6-80-2":[-313.43,688.23],"6-80-3":[-506.03,1590.08],"6-80-4":[-302.45,1299.84],"6-80-5":[-41.81,1102.37],"6-80-6":[-257.53,933.24],"6-80-7":[-884.89,1429.72],"6-80-8":[-4242.68,436.57],"6-80-9":[-5126.54,285.08],"6-80-10":[-5387.21,302.02],"6-80-11":[-5405.84,248.97],"6-80-12":[-5239.46,347.27],"6-80-13":[-4483.75,372.83],"6-80-14":[-5189.69,355.61],"6-80-15":[-3747.5,115.89],"6-80-16":[-3686.91,4485.88],"6-80-17":[-5781.09,4116.85],"6-80-18":[-5034.39,4577.24],"6-80-19":[-4691.4,3588.07],"6-80-20":[-4381.02,2783.91],"6-80-21":[-3952.44,444.94],"6-80-22":[-4308.52,925.69],"6-80-23":[-3977.26,1950.83],"6-80-24":[1.69,2559.62],"6-80-25":[11.6,2551.64],"6-80-26":[-3601.77,2444.71],"6-80-27":[-4091.03,2493.24],"6-80-28":[-4677.41,2422.23],"6-80-29":[-4881.94,1006.97],"6-80-30":[-4951.46,501.55],"6-80-31":[-4954.17,235.87],"6-80-32":[-4709.84,231.65],"6-80-33":[-3470.76,497.87],"6-80-34":[-87.49,977.44],"6-80-35":[-1955.8,2394.22],"6-80-36":[-4238.65,2432.86],"6-80-37":[-52.79,2399.7],"6-80-38":[-3.35,2631.65],"6-80-39":[-45.58,2635.66],"6-80-40":[-13.4,1977.92],"6-80-41":[3.13,907.5],"6-80-42":[-48.51,443.94],"6-80-43":[-13.11,2710.9],"6-80-44":[27.43,3527.05],"6-80-45":[35.59,4482.23],"6-80-46":[-2.1,3994.84],"6-80-47":[-76.02,4318.89],"6-80-48":[-36.78,116.54],"6-80-49":[-45.44,351.6],"6-80-50":[4.21,362.82],"6-80-51":[40.48,339.43],"6-80-52":[35.29,243.79],"6-80-53":[31.46,421.25],"6-80-54":[28.44,286.08],"6-80-55":[-16.19,572.15],"6-80-56":[-122.56,2427.48],"6-80-57":[-344.52,3127.78],"6-80-58":[-354.02,3590.93],"6-80-59":[-359.54,3615.32],"6-80-60":[-594.45,3741.77],"6-80-61":[-3969.31,3655.25],"6-80-62":[-5188.16,3360.65],"6-80-63":[-4417.84,3013.02],"6-81-0":[-445.47,790.85],"6-81-1":[-579.87,425.58],"5-40-0":[-695.37,1052.02],"6-81-2":[-242.37,1171.88],"6-81-3":[-234.37,703.61],"5-40-1":[-506.03,1590.08],"6-81-4":[-375.85,887.16],"6-81-5":[-161.15,1045.3],"5-40-2":[-375.85,1299.84],"6-81-6":[-62.37,1221.56],"6-81-7":[-1167.31,1508.82],"5-40-3":[-1167.31,1508.82],"6-81-8":[-4170.54,1226.45],"6-81-9":[-5147.46,477.07],"5-40-4":[-5147.46,1226.45],"6-81-10":[-5384.89,275.89],"6-81-11":[-5567.68,298.46],"5-40-5":[-5567.68,302.02],"6-81-12":[-5556.1,367.95],"6-81-13":[-5033.22,377.5],"5-40-6":[-5556.1,377.5],"6-81-14":[-5015.18,65.52],"6-81-15":[-4002.56,841.67],"5-40-7":[-5189.69,841.67],"6-81-16":[-3685,748.23],"6-81-17":[-4092.46,4455.71],"5-40-8":[-5781.09,4485.88],"6-81-18":[-4444.4,4802.09],"6-81-19":[-4794.15,3898.23],"5-40-9":[-5034.39,4802.09],"6-81-20":[-5198.95,4173.89],"6-81-21":[-5598.2,2032.48],"5-40-10":[-5598.2,4173.89],"6-81-22":[-5621.37,483.61],"6-81-23":[-5224.64,539.09],"5-40-11":[-5621.37,1950.83],"6-81-24":[-5022.02,1587.94],"6-81-25":[-4903.94,1702.56],"5-40-12":[-5022.02,2559.62],"6-81-26":[-3390.66,2723.38],"6-81-27":[-4200.55,2795.35],"5-40-13":[-4200.55,2795.35],"6-81-28":[-5482.93,1996.26],"6-81-29":[-5374.08,846.67],"5-40-14":[-5482.93,2422.23],"6-81-30":[-5361.33,410.82],"6-81-31":[-5223.91,-46.62],"5-40-15":[-5361.33,501.55],"6-81-32":[-5354.28,-45.29],"6-81-33":[-5202.96,382.82],"5-40-16":[-5354.28,497.87],"6-81-34":[-4772.87,840.63],"6-81-35":[-1909.66,1978.24],"5-40-17":[-4772.87,2394.22],"6-81-36":[-4295.27,2866.35],"6-81-37":[-2474.56,2817.4],"5-40-18":[-4295.27,2866.35],"6-81-38":[-37.94,1755.56],"6-81-39":[-49.87,1687.3],"5-40-19":[-49.87,2635.66],"6-81-40":[-57.71,536.44],"6-81-41":[-101.18,464.66],"5-40-20":[-101.18,1977.92],"6-81-42":[-87.87,1944.41],"6-81-43":[-12.99,4091.88],"5-40-21":[-87.87,4091.88],"6-81-44":[27.43,3768.23],"6-81-45":[-1031.88,4731.09],"5-40-22":[-1031.88,4731.09],"6-81-46":[-918.65,4364.68],"6-81-47":[-755.34,705.21],"5-40-23":[-918.65,4364.68],"6-81-48":[-47.43,895.68],"6-81-49":[-43.18,90.78],"5-40-24":[-47.43,895.68],"6-81-50":[2.4,372.49],"6-81-51":[21.02,334.11],"5-40-25":[2.4,372.49],"6-81-52":[33.96,288.46],"6-81-53":[30.7,269.64],"5-40-26":[30.7,421.25],"6-81-54":[28.32,478.06],"6-81-55":[3.1,1099.75],"5-40-27":[-16.19,1099.75],"6-81-56":[-100.26,2482.8],"6-81-57":[-290.32,3161.72],"5-40-28":[-344.52,3161.72],"6-81-58":[-314.37,3513.33],"6-81-59":[-375.95,3613.49],"5-40-29":[-375.95,3615.32],"6-81-60":[-590.56,3745.47],"6-81-61":[-3970.26,3699.75],"5-40-30":[-3970.26,3745.47],"6-81-62":[-5105.72,3382.27],"6-81-63":[-4656.2,3034.71],"5-40-31":[-5188.16,3382.27],"6-82-0":[-599.47,1070.76],"6-82-1":[-348.88,540.96],"6-82-2":[-38.22,899.07],"6-82-3":[-212.45,846.93],"6-82-4":[-648.98,789.11],"6-82-5":[1.27,1323.62],"6-82-6":[-313.5,1189.76],"6-82-7":[-260.3,2246.69],"6-82-8":[-3969.17,1587.85],"6-82-9":[-5168.42,441.34],"6-82-10":[-5365.38,321.16],"6-82-11":[-5536.76,337.16],"6-82-12":[-5534.93,384.64],"6-82-13":[-4880.9,320.68],"6-82-14":[-4736.9,173.57],"6-82-15":[-3958,982.13],"6-82-16":[-4319.35,522.27],"6-82-17":[-4720.05,294.16],"6-82-18":[-6332.17,3417.02],"6-82-19":[-6279.16,5595.76],"6-82-20":[-5617.22,4411.42],"6-82-21":[-5768.11,4366.48],"6-82-22":[-5860.36,1761.32],"6-82-23":[-5726.87,170.47],"6-82-24":[-5743.21,274.33],"6-82-25":[-5255.34,1114.62],"6-82-26":[-4888.06,1466.69],"6-82-27":[-5072.73,1380.57],"6-82-28":[-5232.44,723.52],"6-82-29":[-5364.53,27.68],"6-82-30":[-5545.23,11.01],"6-82-31":[-5332.59,-49.03],"6-82-32":[-5272.06,-45.11],"6-82-33":[-5358.16,-10.81],"6-82-34":[-5287.25,5.08],"6-82-35":[-5185.25,703.52],"6-82-36":[-5425.29,1352.56],"6-82-37":[-5630.71,1423.68],"6-82-38":[-35.86,1084.1],"6-82-39":[-24.06,227.43],"6-82-40":[-103.37,153.45],"6-82-41":[-202.87,1732.32],"6-82-42":[-86.69,4285.49],"6-82-43":[16.23,4287.41],"6-82-44":[-28.43,5494.75],"6-82-45":[-1068.46,3402],"6-82-46":[-987.88,286.16],"6-82-47":[-578.39,474.26],"6-82-48":[-51.84,1115.13],"6-82-49":[-50.16,171.52],"6-82-50":[-1.25,299.67],"6-82-51":[36.22,375.64],"6-82-52":[33.96,329.16],"6-82-53":[30.52,319.15],"6-82-54":[28.32,438.32],"6-82-55":[5.56,1774.62],"6-82-56":[-124.12,2729.04],"6-82-57":[-198.79,3157.08],"6-82-58":[-295.24,3362.16],"6-82-59":[-353.36,3614.29],"6-82-60":[-539.75,3772.23],"6-82-61":[-3953.55,3728.18],"6-82-62":[-5186.27,3397.85],"6-82-63":[-4702.29,3048.46],"6-83-0":[-564.45,1069.71],"6-83-1":[-153.79,796.8],"5-41-0":[-599.47,1070.76],"6-83-2":[15.31,951.14],"6-83-3":[-113.51,904.5],"5-41-1":[-212.45,951.14],"4-20-0":[-695.37,1590.08],"6-83-4":[-485.6,1019.15],"6-83-5":[-11.14,1503.33],"5-41-2":[-648.98,1503.33],"6-83-6":[-272.38,1230.82],"6-83-7":[-311.37,1993.91],"5-41-3":[-313.5,2246.69],"4-20-1":[-1167.31,2246.69],"6-83-8":[-4634.74,1908.12],"6-83-9":[-5125.14,331.03],"5-41-4":[-5168.42,1908.12],"6-83-10":[-5243.09,350.47],"6-83-11":[-5406.52,469.81],"5-41-5":[-5536.76,469.81],"4-20-2":[-5567.68,1908.12],"6-83-12":[-5439.07,476.59],"6-83-13":[-5360.87,627.4],"5-41-6":[-5534.93,627.4],"6-83-14":[-4630.33,323.7],"6-83-15":[-4323.21,232.09],"5-41-7":[-4736.9,982.13],"4-20-3":[-5556.1,982.13],"6-83-16":[-4496.34,321.64],"6-83-17":[-4885.79,1858.17],"5-41-8":[-4885.79,1858.17],"6-83-18":[-5123.35,3878.24],"6-83-19":[-6718.3,3814.01],"5-41-9":[-6718.3,5595.76],"4-20-4":[-6718.3,5595.76],"6-83-20":[-6774,4034.31],"6-83-21":[-6839.22,3448.75],"5-41-10":[-6839.22,4411.42],"6-83-22":[-5620.75,2931.28],"6-83-23":[-5595.05,1395.64],"5-41-11":[-5860.36,2931.28],"4-20-5":[-6839.22,4411.42],"6-83-24":[-5025.44,2920.56],"6-83-25":[-5267.5,1727.17],"5-41-12":[-5743.21,2920.56],"6-83-26":[-5123.87,1060.42],"6-83-27":[-5029.91,1466.16],"5-41-13":[-5123.87,1466.69],"4-20-6":[-5743.21,2920.56],"6-83-28":[-5508.98,-44.27],"6-83-29":[-4389.05,214.21],"5-41-14":[-5508.98,723.52],"6-83-30":[-4357.02,782.79],"6-83-31":[-5137.86,-50.21],"5-41-15":[-5545.23,782.79],"4-20-7":[-5545.23,2422.23],"6-83-32":[-5314.12,-46.38],"6-83-33":[-5614.7,862.8],"5-41-16":[-5614.7,862.8],"6-83-34":[-5577.79,-10.47],"6-83-35":[-5182.77,-31.32],"5-41-17":[-5577.79,703.52],"4-20-8":[-5614.7,2394.22],"6-83-36":[-4511.57,1412.17],"6-83-37":[-3831.85,1030.52],"5-41-18":[-5630.71,1423.68],"6-83-38":[-3585.77,1700.21],"6-83-39":[-27.02,3059.56],"5-41-19":[-3585.77,3059.56],"4-20-9":[-5630.71,3059.56],"6-83-40":[-134.31,1310.57],"6-83-41":[-191.43,2787.3],"5-41-20":[-202.87,2787.3],"6-83-42":[7.73,3357.26],"6-83-43":[16.98,3964.31],"5-41-21":[-86.69,4287.41],"4-20-10":[-202.87,4287.41],"6-83-44":[26.42,3759],"6-83-45":[-63.56,3836.25],"5-41-22":[-1068.46,5494.75],"6-83-46":[-60.94,1827.16],"6-83-47":[-114.1,314.63],"5-41-23":[-987.88,1827.16],"4-20-11":[-1068.46,5494.75],"6-83-48":[-83.21,231.08],"6-83-49":[-35.06,320.69],"5-41-24":[-83.21,1115.13],"6-83-50":[40.86,616.39],"6-83-51":[37.02,459.58],"5-41-25":[-1.25,616.39],"4-20-12":[-83.21,1115.13],"6-83-52":[33.5,442.85],"6-83-53":[30.59,339.47],"5-41-26":[30.52,442.85],"6-83-54":[28.68,337.03],"6-83-55":[18.67,2242.91],"5-41-27":[5.56,2242.91],"4-20-13":[-16.19,2242.91],"6-83-56":[-158.29,2841.08],"6-83-57":[-247.05,3100.22],"5-41-28":[-247.05,3157.08],"6-83-58":[-252.23,3161.67],"6-83-59":[-384,3541.02],"5-41-29":[-384,3614.29],"4-20-14":[-384,3615.32],"6-83-60":[-572.12,3807.22],"6-83-61":[-3879.34,3762.75],"5-41-30":[-3953.55,3807.22],"6-83-62":[-4903.55,3423.55],"6-83-63":[-4589.93,3056.25],"5-41-31":[-5186.27,3423.55],"4-20-15":[-5188.16,3807.22],"6-84-0":[-462.49,582.84],"6-84-1":[-328.81,1037.36],"6-84-2":[14.45,1081.68],"6-84-3":[-387.99,886.04],"6-84-4":[-216.46,1023.47],"6-84-5":[-70.1,1436.73],"6-84-6":[-103.35,1295.71],"6-84-7":[-303.02,1934.97],"6-84-8":[-4182.74,1250.98],"6-84-9":[-4917.61,1096.24],"6-84-10":[-5110.65,1512.31],"6-84-11":[-5270.52,975.89],"6-84-12":[-5290.16,1624.4],"6-84-13":[-5400.11,1020.66],"6-84-14":[-4894.48,630.85],"6-84-15":[-4745.05,381.12],"6-84-16":[-4987.2,265.27],"6-84-17":[-5281.48,292.44],"6-84-18":[-5836.1,3050.69],"6-84-19":[-5818.9,3289.8],"6-84-20":[-6578.1,3513.08],"6-84-21":[-5878.98,4466.14],"6-84-22":[-6534.79,3206.24],"6-84-23":[-5720.73,2955.44],"6-84-24":[-5516.96,1006.29],"6-84-25":[-4756.9,187.1],"6-84-26":[-4678.6,-35.61],"6-84-27":[-4654.95,-39.16],"6-84-28":[-4518.41,-28.72],"6-84-29":[-4208.2,213.94],"6-84-30":[-4538.58,-42.82],"6-84-31":[-4857.68,-53.64],"6-84-32":[-5394.31,-44.62],"6-84-33":[-5613.24,-41.47],"6-84-34":[-5297.8,-15.91],"6-84-35":[-5101.96,-11.7],"6-84-36":[-5499.36,-25.08],"6-84-37":[-4713.67,-16.99],"6-84-38":[-4301.04,185.08],"6-84-39":[-2980.26,961.28],"6-84-40":[-3378.52,2918.44],"6-84-41":[-1151.89,3127.26],"6-84-42":[7.34,4351.1],"6-84-43":[17.48,3400.07],"6-84-44":[21.66,3212.8],"6-84-45":[6.6,2997.69],"6-84-46":[-102.22,286.43],"6-84-47":[-22.51,261.98],"6-84-48":[-26.82,374.17],"6-84-49":[39.19,591.85],"6-84-50":[37.64,993.66],"6-84-51":[36.03,1601.39],"6-84-52":[33.47,925.89],"6-84-53":[30.96,1461.81],"6-84-54":[28.91,1084.24],"6-84-55":[16.37,1261.04],"6-84-56":[-130.15,2834.46],"6-84-57":[-396.29,2971.6],"6-84-58":[-396.29,2944.4],"6-84-59":[-328.25,3405.04],"6-84-60":[-597.8,3828.34],"6-84-61":[-3788.87,3798.94],"6-84-62":[-4848.77,3451.5],"6-84-63":[-4510.96,3061.98],"6-85-0":[-690,433.63],"6-85-1":[-457.37,975.82],"5-42-0":[-690,1037.36],"6-85-2":[13.83,1299.01],"6-85-3":[-419.89,1019.11],"5-42-1":[-419.89,1299.01],"6-85-4":[-830.07,1360.06],"6-85-5":[-695.45,2999.15],"5-42-2":[-830.07,2999.15],"6-85-6":[-266.96,2295.42],"6-85-7":[-1076.55,1778.99],"5-42-3":[-1076.55,2295.42],"6-85-8":[-4190.64,1773.8],"6-85-9":[-4762.25,1487.95],"5-42-4":[-4917.61,1773.8],"6-85-10":[-4948.41,1559.37],"6-85-11":[-5080.07,864.4],"5-42-5":[-5270.52,1559.37],"6-85-12":[-5419.76,1394.5],"6-85-13":[-5594.69,600.13],"5-42-6":[-5594.69,1624.4],"6-85-14":[-5097.9,429.21],"6-85-15":[-4796.18,315.69],"5-42-7":[-5097.9,630.85],"6-85-16":[-5524.4,243.14],"6-85-17":[-5768.88,430.08],"5-42-8":[-5768.88,430.08],"6-85-18":[-5589.1,3092.4],"6-85-19":[-5934.6,3228.78],"5-42-9":[-5934.6,3289.8],"6-85-20":[-6770.5,2831.82],"6-85-21":[-6817.28,3905.23],"5-42-10":[-6817.28,4466.14],"6-85-22":[-6709.38,3453.88],"6-85-23":[-5792.46,2164.41],"5-42-11":[-6709.38,3453.88],"6-85-24":[-5484.88,1992.49],"6-85-25":[-5286.66,25.87],"5-42-12":[-5516.96,1992.49],"6-85-26":[-4248.87,28.92],"6-85-27":[-4210.77,43.52],"5-42-13":[-4678.6,43.52],"6-85-28":[-3781.28,-37.67],"6-85-29":[-4287.62,-44.2],"5-42-14":[-4518.41,213.94],"6-85-30":[-4861.17,-59.06],"6-85-31":[-5132.57,-60.26],"5-42-15":[-5132.57,-42.82],"6-85-32":[-5556.87,-55.88],"6-85-33":[-5144.84,-49.83],"5-42-16":[-5613.24,-41.47],"6-85-34":[-4770.64,-41.73],"6-85-35":[-4833.5,-35.72],"5-42-17":[-5297.8,-11.7],"6-85-36":[-4832.9,-25.51],"6-85-37":[-4426.33,12.57],"5-42-18":[-5499.36,12.57],"6-85-38":[-4177.52,-11.51],"6-85-39":[-4112.02,1927.5],"5-42-19":[-4301.04,1927.5],"6-85-40":[-3664.51,2127.4],"6-85-41":[-89.15,3375.88],"5-42-20":[-3664.51,3375.88],"6-85-42":[7.34,3828.19],"6-85-43":[14.16,2719],"5-42-21":[7.34,4351.1],"6-85-44":[20.8,3176.76],"6-85-45":[23.87,3046.38],"5-42-22":[6.6,3212.8],"6-85-46":[27.26,405.08],"6-85-47":[-1.52,242.14],"5-42-23":[-102.22,405.08],"6-85-48":[-3.54,294.72],"6-85-49":[36.61,408.2],"5-42-24":[-26.82,591.85],"6-85-50":[36.35,551.14],"6-85-51":[-160.1,1362.49],"5-42-25":[-160.1,1601.39],"6-85-52":[-21.22,833.36],"6-85-53":[-20.09,1506.37],"5-42-26":[-21.22,1506.37],"6-85-54":[-4.67,1533.95],"6-85-55":[21.69,1802.8],"5-42-27":[-4.67,1802.8],"6-85-56":[-203.29,2724.67],"6-85-57":[-396.29,2726.3],"5-42-28":[-396.31,2971.6],"6-85-58":[-499.48,2693.03],"6-85-59":[-348.85,3395.87],"5-42-29":[-499.48,3405.04],"6-85-60":[-369.01,3894.08],"6-85-61":[-3796.88,3860.75],"5-42-30":[-3796.88,3894.08],"6-85-62":[-4719.26,3477.38],"6-85-63":[-4513.54,3064.64],"5-42-31":[-4848.77,3477.38],"6-86-0":[-753.27,251.12],"6-86-1":[-466.99,1030.05],"6-86-2":[11.81,1938.39],"6-86-3":[3.34,1421.23],"6-86-4":[-801.92,1600.86],"6-86-5":[-1082.04,3054.14],"6-86-6":[-700.69,2012.28],"6-86-7":[-806.03,2132.78],"6-86-8":[-3912.94,1361.22],"6-86-9":[-4585.29,250.25],"6-86-10":[-4946.48,219.71],"6-86-11":[-5126.76,213.66],"6-86-12":[-5068.99,217.01],"6-86-13":[-5140.98,281.46],"6-86-14":[-4858.96,248.91],"6-86-15":[-4878.06,244.16],"6-86-16":[-5684.41,713.35],"6-86-17":[-5765.18,925.05],"6-86-18":[-5641.98,769.1],"6-86-19":[-5615.16,3625.13],"6-86-20":[-5640.46,4120.59],"6-86-21":[-6897.64,2348.74],"6-86-22":[-6025.99,2575.17],"6-86-23":[-5754.46,426.39],"6-86-24":[-5012.35,324.48],"6-86-25":[-4448.42,182.37],"6-86-26":[-4638.51,-54.84],"6-86-27":[-4395.85,-37.12],"6-86-28":[-4402.76,-38.59],"6-86-29":[-4565.06,-65.77],"6-86-30":[-4843.92,-65.78],"6-86-31":[-5276.07,-67.58],"6-86-32":[-5038.14,-64],"6-86-33":[-4993.52,-57.09],"6-86-34":[-5251.52,-47.83],"6-86-35":[-5106.74,-36.76],"6-86-36":[-4516.21,-30.07],"6-86-37":[-4252,-21.06],"6-86-38":[-4015.79,209.37],"6-86-39":[-4236.3,376.48],"6-86-40":[-4436.02,387.36],"6-86-41":[-173.17,2468.93],"6-86-42":[7.71,2226.7],"6-86-43":[12.56,3995.58],"6-86-44":[18.37,3592.12],"6-86-45":[23.48,762.48],"6-86-46":[-48.04,901.05],"6-86-47":[-23.79,672.29],"6-86-48":[14.5,229.04],"6-86-49":[16.37,243.99],"6-86-50":[-198.8,279.58],"6-86-51":[34.42,205.49],"6-86-52":[31.27,211.66],"6-86-53":[23.66,225.7],"6-86-54":[-6.69,255.71],"6-86-55":[-6.75,1361.22],"6-86-56":[-210.37,2407.49],"6-86-57":[-215.22,2407.49],"6-86-58":[-397.61,2435.25],"6-86-59":[-355.94,3458.7],"6-86-60":[-377.17,3925.85],"6-86-61":[-3648.94,3915.12],"6-86-62":[-4993.61,3500.58],"6-86-63":[-4383.74,3065.4],"6-87-0":[-770.81,59.22],"6-87-1":[-454.18,910.5],"5-43-0":[-770.81,1030.05],"6-87-2":[10.38,2261.07],"6-87-3":[-386.02,2071.45],"5-43-1":[-386.02,2261.07],"4-21-0":[-770.81,2261.07],"6-87-4":[-383.96,1917.49],"6-87-5":[-3800.21,2042.55],"5-43-2":[-3800.21,3054.14],"6-87-6":[-2884.07,2117.36],"6-87-7":[-1727.04,2087.2],"5-43-3":[-2884.07,2132.78],"4-21-1":[-3800.21,3054.14],"3-10-0":[-3800.21,3054.14],"6-87-8":[-3759.02,1275.39],"6-87-9":[-4471.39,200.27],"5-43-4":[-4585.29,1361.22],"6-87-10":[-4763.91,154.26],"6-87-11":[-4755.98,142.53],"5-43-5":[-5126.76,219.71],"4-21-2":[-5270.52,1773.8],"6-87-12":[-4690.1,210.72],"6-87-13":[-5090.98,447.9],"5-43-6":[-5140.98,447.9],"6-87-14":[-3386.43,1084.54],"6-87-15":[-4735.27,566.99],"5-43-7":[-4878.06,1084.54],"4-21-3":[-5594.69,1624.4],"3-10-1":[-5594.69,1908.12],"6-87-16":[-5449.05,821.12],"6-87-17":[-5622.74,2139.17],"5-43-8":[-5765.18,2139.17],"6-87-18":[-5271.62,4103.6],"6-87-19":[-4991.34,4599.84],"5-43-9":[-5641.98,4599.84],"4-21-4":[-5934.6,4599.84],"6-87-20":[-5574.64,4772.12],"6-87-21":[-5572.75,3524.89],"5-43-10":[-6897.64,4772.12],"6-87-22":[-5739.76,2437.68],"6-87-23":[-5238.92,529.04],"5-43-11":[-6025.99,2575.17],"4-21-5":[-6897.64,4772.12],"3-10-2":[-6897.64,5595.76],"6-87-24":[-4481.3,-45.37],"6-87-25":[-6299.64,-54.11],"5-43-12":[-6299.64,324.48],"6-87-26":[-4518.2,-61.38],"6-87-27":[-5566.79,-68.36],"5-43-13":[-5566.79,-37.12],"4-21-6":[-6299.64,1992.49],"6-87-28":[-6365.04,-73.16],"6-87-29":[-4813.22,-76.65],"5-43-14":[-6365.04,-38.59],"6-87-30":[-4724.02,-74.88],"6-87-31":[-4950.65,-74.44],"5-43-15":[-5276.07,-65.78],"4-21-7":[-6365.04,213.94],"3-10-3":[-6365.04,2920.56],"6-87-32":[-5184.39,-70.63],"6-87-33":[-5209.14,-64.32],"5-43-16":[-5209.14,-57.09],"6-87-34":[-5299.08,-55.61],"6-87-35":[-4792.16,-45.34],"5-43-17":[-5299.08,-36.76],"4-21-8":[-5613.24,-11.7],"6-87-36":[-4585.57,-34.09],"6-87-37":[-4374.05,-24.11],"5-43-18":[-4585.57,-21.06],"6-87-38":[-3814.21,-13.14],"6-87-39":[-3394.78,-5.98],"5-43-19":[-4236.3,376.48],"4-21-9":[-5499.36,1927.5],"3-10-4":[-5630.71,3059.56],"6-87-40":[-3357.38,497.04],"6-87-41":[-93,2342.65],"5-43-20":[-4436.02,2468.93],"6-87-42":[5.69,3445.88],"6-87-43":[10.55,4709.11],"5-43-21":[5.69,4709.11],"4-21-10":[-4436.02,4709.11],"6-87-44":[18.37,4506.23],"6-87-45":[20.45,4004.61],"5-43-22":[18.37,4506.23],"6-87-46":[25.88,2081.25],"6-87-47":[28.04,795.12],"5-43-23":[-48.04,2081.25],"4-21-11":[-102.22,4506.23],"3-10-5":[-4436.02,5494.75],"6-87-48":[15.28,553.96],"6-87-49":[35.15,1026.53],"5-43-24":[14.5,1026.53],"6-87-50":[34.57,409.9],"6-87-51":[33.74,203.46],"5-43-25":[-198.8,409.9],"4-21-12":[-198.8,1601.39],"6-87-52":[16.11,133.57],"6-87-53":[-2.86,157.13],"5-43-26":[-2.86,225.7],"6-87-54":[-10.31,212.3],"6-87-55":[-10.62,1282.39],"5-43-27":[-10.62,1361.22],"4-21-13":[-21.22,1802.8],"3-10-6":[-198.8,2242.91],"6-87-56":[-79.71,1925.54],"6-87-57":[-164.03,1897.68],"5-43-28":[-215.22,2407.49],"6-87-58":[-346.65,2297.22],"6-87-59":[-393.73,3491.07],"5-43-29":[-397.61,3491.07],"4-21-14":[-499.48,3491.07],"6-87-60":[-577.11,3965.2],"6-87-61":[-3620.25,3965.2],"5-43-30":[-3648.94,3965.2],"6-87-62":[-5015.61,3512.38],"6-87-63":[-4383.62,3065.32],"5-43-31":[-5015.61,3512.38],"4-21-15":[-5015.61,3965.2],"3-10-7":[-5188.16,3965.2],"6-88-0":[-767.86,36.5],"6-88-1":[-428.44,959.04],"6-88-2":[9.6,2322.15],"6-88-3":[-39.25,2104.93],"6-88-4":[-606.74,2084.95],"6-88-5":[-2859.78,1815.24],"6-88-6":[-2822.2,1622.18],"6-88-7":[-1642.56,344.05],"6-88-8":[-3225.87,223.3],"6-88-9":[-4395.86,226.52],"6-88-10":[-4629.63,136.47],"6-88-11":[-4715.75,131.78],"6-88-12":[-4678.56,332.5],"6-88-13":[-4662.12,893.06],"6-88-14":[-1886.34,1554.79],"6-88-15":[-3945.89,447.99],"6-88-16":[-4579.02,2106.12],"6-88-17":[-4768.15,5451.96],"6-88-18":[-4851.07,5411.27],"6-88-19":[-5345.82,5666.76],"6-88-20":[-5826.83,4714.77],"6-88-21":[-5490.03,3432.07],"6-88-22":[-5665.99,1024.24],"6-88-23":[-4919.76,403.18],"6-88-24":[-4401.41,569.02],"6-88-25":[-4766.29,-59.6],"6-88-26":[-5085.97,-70.97],"6-88-27":[-4713.83,-76.12],"6-88-28":[-6296.59,-81.89],"6-88-29":[-5415.32,-85.59],"6-88-30":[-5415.58,-83.95],"6-88-31":[-5034.84,-81.05],"6-88-32":[-4678.13,-76.23],"6-88-33":[-5091.68,-69.57],"6-88-34":[-5315.04,-60.53],"6-88-35":[-4910.61,-49.91],"6-88-36":[-4700.31,-38.44],"6-88-37":[-4340.52,-27.34],"6-88-38":[-3775.62,-16.67],"6-88-39":[-3259.24,482.01],"6-88-40":[-197.97,378.18],"6-88-41":[-45.65,1001.24],"6-88-42":[1.91,3360.06],"6-88-43":[7.53,4608.76],"6-88-44":[12.64,5486.75],"6-88-45":[17.05,5223.27],"6-88-46":[21.65,5206.96],"6-88-47":[26.11,2040.12],"6-88-48":[30.67,440.1],"6-88-49":[-55.82,1713.79],"6-88-50":[33.89,827.05],"6-88-51":[33.4,306.53],"6-88-52":[7.42,123.77],"6-88-53":[-39.7,327.42],"6-88-54":[3.08,230.49],"6-88-55":[-15.39,234.28],"6-88-56":[-22.57,1116.82],"6-88-57":[-96.74,1564.5],"6-88-58":[-334.85,2295.88],"6-88-59":[-547.49,3490.99],"6-88-60":[-643.72,3997.79],"6-88-61":[-3594.02,4001.34],"6-88-62":[-4474.87,3523.63],"6-88-63":[-4558.49,3065.05],"6-89-0":[-706.47,30.41],"6-89-1":[-440.72,977.07],"5-44-0":[-767.86,977.07],"6-89-2":[9.34,2464.93],"6-89-3":[1.06,2473.48],"5-44-1":[-39.25,2473.48],"6-89-4":[-936.59,2332.14],"6-89-5":[-1376.15,981.03],"5-44-2":[-2859.78,2332.14],"6-89-6":[-1438.63,1303.35],"6-89-7":[-1336.73,318.58],"5-44-3":[-2822.2,1622.18],"6-89-8":[-3587.69,100.53],"6-89-9":[-4154.48,139.63],"5-44-4":[-4395.86,226.52],"6-89-10":[-4569.43,118.52],"6-89-11":[-4715.57,117.67],"5-44-5":[-4715.75,136.47],"6-89-12":[-4169.96,204.12],"6-89-13":[-3830.5,749.66],"5-44-6":[-4678.56,893.06],"6-89-14":[-2468.19,1122.49],"6-89-15":[-4016.9,1082.6],"5-44-7":[-4016.9,1554.79],"6-89-16":[-4414.85,4445.78],"6-89-17":[-4631.89,5979.55],"5-44-8":[-4768.15,5979.55],"6-89-18":[-4974.01,7425.22],"6-89-20":[-5304.14,2777.08],"6-89-19":[-5513.3,7670.17],"5-44-9":[-5513.3,7670.17],"6-89-21":[-5172.38,1028.73],"5-44-10":[-5826.83,4714.77],"6-89-22":[-4626.02,913.48],"6-89-23":[-5042.76,1654.1],"5-44-11":[-5665.99,1654.1],"6-89-24":[-5314.43,1010.35],"6-89-25":[-5903.05,598.43],"5-44-12":[-5903.05,1010.35],"6-89-26":[-6180.12,-75.99],"6-89-27":[-5778.91,-67.66],"5-44-13":[-6180.12,-67.66],"6-89-28":[-5869.67,-72.32],"6-89-29":[-4365.43,48.53],"5-44-14":[-6296.59,48.53],"6-89-30":[-4791.83,15.48],"6-89-31":[-5071.12,1.04],"5-44-15":[-5415.58,15.48],"6-89-32":[-4576.94,-3.46],"6-89-33":[-4785.27,6.33],"5-44-16":[-5091.68,6.33],"6-89-34":[-4574.62,105.2],"6-89-35":[-4689.33,94.67],"5-44-17":[-5315.04,105.2],"6-89-36":[-4438.32,200.09],"6-89-37":[-3765.77,-34.29],"5-44-18":[-4700.31,200.09],"6-89-38":[-3494.6,568.44],"6-89-39":[-182.94,902.33],"5-44-19":[-3775.62,902.33],"6-89-40":[-76.25,1584.1],"6-89-41":[-16.37,827.48],"5-44-20":[-197.97,1584.1],"6-89-42":[-2.98,985.73],"6-89-43":[4.23,2682.07],"5-44-21":[-2.98,4608.76],"6-89-44":[9.98,7438.17],"6-89-45":[13.89,7210.21],"5-44-22":[9.98,7438.17],"6-89-46":[21.65,5961.54],"6-89-47":[23.2,4291.76],"5-44-23":[21.65,5961.54],"6-89-48":[28.47,1036.59],"6-89-49":[32.48,1064.49],"5-44-24":[-55.82,1713.79],"6-89-50":[6.34,715.49],"6-89-51":[-9.37,197.65],"5-44-25":[-9.37,827.05],"6-89-52":[15.38,111.68],"6-89-53":[-3.32,343.8],"5-44-26":[-39.7,343.8],"6-89-54":[14.74,147.43],"6-89-55":[-17.33,117.58],"5-44-27":[-17.33,234.28],"6-89-56":[-17.83,392.26],"6-89-57":[-29.56,1769.28],"5-44-28":[-96.74,1769.28],"6-89-58":[-272.69,2436.17],"6-89-59":[-510.33,3484.93],"5-44-29":[-547.49,3490.99],"6-89-60":[-640.09,4020.7],"6-89-61":[-3575.47,4020.7],"5-44-30":[-3594.02,4020.7],"6-89-62":[-4236.46,3529.73],"6-89-63":[-4514.53,3064.81],"5-44-31":[-4558.49,3529.73],"6-90-0":[-640.98,61.26],"6-90-1":[-390.9,805.39],"6-90-2":[9.21,2183.68],"6-90-3":[0.25,2469.66],"6-90-4":[-1304.8,2425.45],"6-90-5":[-1149.32,1548.99],"6-90-6":[-414.72,2224.46],"6-90-7":[-1632.86,499.7],"6-90-8":[-3548.24,91.65],"6-90-9":[-4053.7,169.41],"6-90-10":[-4212.58,102.52],"6-90-11":[-4304.91,130.71],"6-90-12":[-3505.98,132.71],"6-90-13":[-2934.53,2598.41],"6-90-14":[-3135.99,1507.27],"6-90-15":[-4279.42,1151.88],"6-90-16":[-4489.05,4807.35],"6-90-17":[-4479.4,6513.21],"6-90-18":[-5017.58,7543.41],"6-90-20":[-5217.14,5343.32],"6-90-21":[-4488.37,447.8],"6-90-22":[-4547.42,998],"6-90-19":[-5325.59,8087.96],"6-90-23":[-5040.15,1264.93],"6-90-24":[-5735.98,1499.22],"6-90-25":[-5813.09,1527.78],"6-90-26":[-6081.85,969.76],"6-90-27":[-5744.78,1943.78],"6-90-28":[-5599.69,132.05],"6-90-29":[-5614.43,-76.78],"6-90-30":[-5738.79,-73.55],"6-90-31":[-5224.71,100.88],"6-90-32":[-4737.85,203.27],"6-90-33":[-3727.92,187.82],"6-90-34":[-3145.88,89.54],"6-90-35":[-2988.52,52.04],"6-90-36":[-2425.97,1816.78],"6-90-37":[-1039.44,953.76],"6-90-38":[-113.99,1391.73],"6-90-39":[-64.94,1364.22],"6-90-40":[-47.65,1160.93],"6-90-41":[-26.36,959.99],"6-90-42":[-11.95,366.79],"6-90-43":[1.09,5121.48],"6-90-44":[6.57,7900.96],"6-90-45":[11.56,7428.15],"6-90-46":[16.22,6455.21],"6-90-47":[21.29,4685.71],"6-90-48":[26.15,1023.87],"6-90-49":[29.48,1442.28],"6-90-50":[-31.98,2779.41],"6-90-51":[0.44,113.69],"6-90-52":[21.05,124.69],"6-90-53":[-11.69,331.23],"6-90-54":[10.84,175.41],"6-90-55":[-17.9,105.1],"6-90-56":[-21.34,1525.64],"6-90-57":[-32.68,2210.25],"6-90-58":[-120.9,2619.19],"6-90-59":[-433.61,3487.6],"6-90-60":[-567.12,4037.87],"6-90-61":[-3570.81,4030.9],"6-90-62":[-4219.09,3530.31],"6-90-63":[-4406.28,3064.82],"6-91-0":[-639.31,189.19],"6-91-1":[-384.95,834.08],"5-45-0":[-640.98,834.08],"6-91-2":[8.56,2367.16],"6-91-3":[-0.35,2551.86],"5-45-1":[-0.35,2551.86],"4-22-0":[-767.86,2551.86],"6-91-4":[-1479.06,2480.04],"6-91-5":[-281.82,1619.37],"5-45-2":[-1479.06,2480.04],"6-91-6":[-498.16,1605.36],"6-91-7":[-1553.63,731.58],"5-45-3":[-1632.86,2224.46],"4-22-1":[-2859.78,2480.04],"6-91-8":[-3586.88,81.75],"6-91-9":[-4086.33,122.72],"5-45-4":[-4086.33,169.41],"6-91-10":[-4014.01,110.81],"6-91-11":[-2910.87,118.68],"5-45-5":[-4304.91,130.71],"4-22-2":[-4715.75,226.52],"6-91-12":[-2973.92,133.68],"6-91-13":[-3695.85,487.76],"5-45-6":[-3695.85,2598.41],"6-91-14":[-3738.3,1504.92],"6-91-15":[-4043.82,1384.81],"5-45-7":[-4279.42,1507.27],"4-22-3":[-4678.56,2598.41],"6-91-16":[-4375.35,4930.95],"6-91-17":[-4265.58,5827.63],"5-45-8":[-4489.05,6513.21],"6-91-18":[-4366.17,6379.76],"6-91-19":[-4748.48,8560.58],"5-45-9":[-5325.59,8560.58],"4-22-4":[-5513.3,8560.58],"6-91-20":[-4652.94,6725.08],"6-91-21":[-4609.1,4563.58],"5-45-10":[-5217.14,6725.08],"6-91-22":[-4986.87,732.76],"6-91-23":[-5274.33,994.23],"5-45-11":[-5274.33,1264.93],"4-22-5":[-5826.83,6725.08],"6-91-24":[-5529.09,1273.26],"6-91-25":[-6647.67,698.38],"5-45-12":[-6647.67,1527.78],"6-91-26":[-5942.01,1069.77],"6-91-27":[-5762.94,2543.22],"5-45-13":[-6081.85,2543.22],"4-22-6":[-6647.67,2543.22],"6-91-28":[-5774.81,2590.24],"6-91-29":[-5738.63,1544.94],"5-45-14":[-5774.81,2590.24],"6-91-30":[-5469.78,-102.05],"6-91-31":[-5216.17,-100.58],"5-45-15":[-5738.79,100.88],"4-22-7":[-6296.59,2590.24],"6-91-32":[-5076.96,-96.41],"6-91-33":[-4415.5,-89.47],"5-45-16":[-5076.96,203.27],"6-91-34":[-3876.39,1456.94],"6-91-35":[-1368.49,2500.59],"5-45-17":[-3876.39,2500.59],"4-22-8":[-5315.04,2500.59],"6-91-36":[-142.2,2482.21],"6-91-37":[-116.73,1003.95],"5-45-18":[-2425.97,2482.21],"6-91-38":[-98.13,689.37],"6-91-39":[-76.39,1212.26],"5-45-19":[-113.99,1391.73],"4-22-9":[-4700.31,2482.21],"6-91-40":[-59.57,977.73],"6-91-41":[-39.69,677.26],"5-45-20":[-59.57,1160.93],"6-91-42":[-24.55,4424.66],"6-91-43":[-6.24,6545.87],"5-45-21":[-24.55,6545.87],"4-22-10":[-197.97,6545.87],"6-91-44":[3.69,8392.58],"6-91-45":[-0.46,6247.71],"5-45-22":[-0.46,8392.58],"6-91-46":[14.12,5742.63],"6-91-47":[18.73,4840.78],"5-45-23":[14.12,6455.21],"4-22-11":[-0.46,8392.58],"6-91-48":[26.15,1330.33],"6-91-49":[26.58,1464.91],"5-45-24":[26.15,1464.91],"6-91-50":[19.97,460.76],"6-91-51":[27.46,101.74],"5-45-25":[-31.98,2779.41],"4-22-12":[-55.82,2779.41],"6-91-52":[20.79,113.28],"6-91-53":[-17.77,113.81],"5-45-26":[-17.77,331.23],"6-91-54":[-9.28,129.12],"6-91-55":[-14.96,98.12],"5-45-27":[-17.9,175.41],"4-22-13":[-39.7,343.8],"6-91-56":[-19.59,1873.55],"6-91-57":[-21.81,2662.65],"5-45-28":[-32.68,2662.65],"6-91-58":[-80.34,2841.83],"6-91-59":[-317.86,3506.71],"5-45-29":[-433.61,3506.71],"4-22-14":[-547.49,3506.71],"6-91-60":[-233.74,4042.04],"6-91-61":[-3602.62,4030.73],"5-45-30":[-3602.62,4042.04],"6-91-62":[-4392.18,3527.6],"6-91-63":[-4471.35,3066.42],"5-45-31":[-4471.35,3530.31],"4-22-15":[-4558.49,4042.04],"6-92-0":[-645.12,227.14],"6-92-1":[-397.86,937.13],"6-92-2":[7.88,2366.12],"6-92-3":[-1.45,2837.93],"6-92-4":[-1235.35,2211.57],"6-92-5":[-686.65,1122.37],"6-92-6":[-162.24,1378.61],"6-92-7":[-774.24,1072.09],"6-92-8":[-3708.87,64.43],"6-92-9":[-3896.11,203.65],"6-92-10":[-3247.71,114.52],"6-92-11":[-4588.27,125.15],"6-92-12":[-4759.65,235.48],"6-92-13":[-4573.21,478.3],"6-92-14":[-4218.85,1419.87],"6-92-15":[-4033.49,4532.62],"6-92-16":[-3758.83,6633.62],"6-92-17":[-3919.79,7087.4],"6-92-18":[-4298.67,4976.93],"6-92-19":[-4525.92,7022.3],"6-92-20":[-4589.42,7194.47],"6-92-21":[-4677.75,7787.57],"6-92-22":[-4830.92,295.99],"6-92-23":[-5268.63,1069.67],"6-92-24":[-5627.16,1095.71],"6-92-25":[-6029.63,1197.87],"6-92-26":[-6091.69,1006.73],"6-92-27":[-6323.49,1132.42],"6-92-28":[-5678.07,434.8],"6-92-29":[-5900.81,2430.45],"6-92-30":[-5399.93,-101.01],"6-92-31":[-5206.63,-100.16],"6-92-32":[-5022.99,-94.42],"6-92-33":[-4622.89,-88.59],"6-92-34":[-4222.18,2382.44],"6-92-35":[-3966.9,367.8],"6-92-36":[-3737.67,1082.42],"6-92-37":[-3408.68,924.73],"6-92-38":[-104.92,1135.87],"6-92-39":[-84.27,1075.71],"6-92-40":[-67.56,1049.67],"6-92-41":[-47.53,244.26],"6-92-42":[-33.56,7477.1],"6-92-43":[-15.92,6783.47],"6-92-44":[-3.11,6972.29],"6-92-45":[3.14,4850.94],"6-92-46":[9.41,6956.38],"6-92-47":[15.61,6473.62],"6-92-48":[19.59,4411.61],"6-92-49":[23.34,1366.87],"6-92-50":[24.55,472.32],"6-92-51":[20.83,226.49],"6-92-52":[12.33,118.27],"6-92-53":[-1.93,111.49],"6-92-54":[-18.83,205.66],"6-92-55":[-19.8,76.05],"6-92-56":[-14.79,2339.17],"6-92-57":[-28.39,2935.32],"6-92-58":[-72.76,3173.47],"6-92-59":[-191.46,3593.63],"6-92-60":[-328.07,4042.04],"6-92-61":[-3603.54,4001.04],"6-92-62":[-4413.7,3516.41],"6-92-63":[-4414.53,3066.46],"6-93-0":[-598.54,447.74],"6-93-1":[-405.36,559.4],"5-46-0":[-645.12,937.13],"6-93-2":[7.36,2052.06],"6-93-3":[-1.93,2388.42],"5-46-1":[-1.93,2837.93],"6-93-4":[-825.37,1419.34],"6-93-5":[-321.04,1310.48],"5-46-2":[-1235.35,2211.57],"6-93-6":[-535.25,796.65],"6-93-7":[-1525.55,783.16],"5-46-3":[-1525.55,1378.61],"6-93-8":[-3607.56,149.97],"6-93-9":[-3782.36,236.06],"5-46-4":[-3896.11,236.06],"6-93-10":[-3244.4,155.46],"6-93-11":[-4940.09,162.81],"5-46-5":[-4940.09,162.81],"6-93-12":[-4915.47,446.71],"6-93-13":[-4738.91,2380.4],"5-46-6":[-4915.47,2380.4],"6-93-14":[-4289.66,2712],"6-93-15":[-4355.64,3961.77],"5-46-7":[-4355.64,4532.62],"6-93-16":[-4432.86,5107.74],"6-93-17":[-3773.11,3794.4],"5-46-8":[-4432.86,7087.4],"6-93-18":[-4143.17,6062.91],"6-93-19":[-4597.94,6911.73],"5-46-9":[-4597.94,7022.3],"6-93-20":[-4953.08,6600.18],"6-93-21":[-4693,8103.55],"5-46-10":[-4953.08,8103.55],"6-93-22":[-5242.48,2512.35],"6-93-23":[-5502.72,1178.46],"5-46-11":[-5502.72,2512.35],"6-93-24":[-5927.26,1262.43],"6-93-25":[-5842.24,1608.79],"5-46-12":[-6029.63,1608.79],"6-93-26":[-6117.19,-37.98],"6-93-27":[-6121.17,-86.28],"5-46-13":[-6323.49,1132.42],"6-93-28":[-5759.02,-88.67],"6-93-29":[-5683.35,351.9],"5-46-14":[-5900.81,2430.45],"6-93-30":[-5408.99,-92.98],"6-93-31":[-5189.72,-91.46],"5-46-15":[-5408.99,-91.46],"6-93-32":[-4779.36,-88.46],"6-93-33":[-4502,-84.21],"5-46-16":[-5022.99,-84.21],"6-93-34":[-4405.78,250.19],"6-93-35":[-4122.18,-69.13],"5-46-17":[-4405.78,2382.44],"6-93-36":[-3761.1,-61.65],"6-93-37":[-3546.44,-21.32],"5-46-18":[-3761.1,1082.42],"6-93-38":[-2986.65,1526.78],"6-93-39":[-92.35,1210.44],"5-46-19":[-2986.65,1526.78],"6-93-40":[-75.45,1148.44],"6-93-41":[-57.43,2392.36],"5-46-20":[-75.45,2392.36],"6-93-42":[-43.87,7996.56],"6-93-43":[-26.53,6529.17],"5-46-21":[-43.87,7996.56],"6-93-44":[-14.66,6785.68],"6-93-45":[-1.24,5925.82],"5-46-22":[-14.66,6972.29],"6-93-46":[5.93,3698.38],"6-93-47":[11.24,4974.72],"5-46-23":[5.93,6956.38],"6-93-48":[19.38,3851.93],"6-93-49":[19.38,2590],"5-46-24":[19.38,4411.61],"6-93-50":[20.9,2292.4],"6-93-51":[20.83,411.7],"5-46-25":[20.83,2292.4],"6-93-52":[12.97,151.82],"6-93-53":[18.26,165.91],"5-46-26":[-1.93,165.91],"6-93-54":[-9.15,247.3],"6-93-55":[-19.02,635.17],"5-46-27":[-19.8,635.17],"6-93-56":[-16.08,2519.02],"6-93-57":[-14.95,3197.54],"5-46-28":[-28.39,3197.54],"6-93-58":[-59.02,3364.13],"6-93-59":[-200.6,3621.13],"5-46-29":[-200.6,3621.13],"6-93-60":[-383.88,4025.51],"6-93-61":[-3638.41,3923.74],"5-46-30":[-3638.41,4042.04],"6-93-62":[-4412.72,3499.2],"6-93-63":[-4412.72,3067.15],"5-46-31":[-4414.53,3516.41],"6-94-0":[-576.96,447.74],"6-94-1":[-490.72,533.51],"6-94-2":[-88.61,1993.81],"6-94-3":[-25.35,2256.16],"6-94-4":[-65.53,916.49],"6-94-5":[-226.99,650.86],"6-94-6":[-535.25,744.12],"6-94-7":[-952.38,1128.23],"6-94-8":[-3523.31,216.58],"6-94-9":[-3903.39,232.96],"6-94-10":[-4655.36,204.28],"6-94-11":[-4953.77,252.1],"6-94-12":[-5052.19,544.69],"6-94-13":[-4860.03,2652.03],"6-94-14":[-4450.02,4375.85],"6-94-15":[-4317.75,3786.97],"6-94-16":[-4383.8,5220.28],"6-94-17":[-4658.52,3644.02],"6-94-18":[-4060.5,6686.7],"6-94-19":[-4111.06,6437.5],"6-94-20":[-4733.64,6733.83],"6-94-21":[-4909.98,8019.76],"6-94-22":[-4884.18,8777.15],"6-94-23":[-5346.94,1317.62],"6-94-24":[-5660.98,1124.07],"6-94-25":[-5665.75,1331.06],"6-94-26":[-5692.51,-73.06],"6-94-27":[-5733.14,-76.23],"6-94-28":[-5947.08,-77.26],"6-94-29":[-5808.81,-77.29],"6-94-30":[-5433.18,-78.62],"6-94-31":[-5040.3,-78.17],"6-94-32":[-4752.82,-76.46],"6-94-33":[-4483.87,-74.65],"6-94-34":[-4218.61,-71.13],"6-94-35":[-3868.68,-67.72],"6-94-36":[-3569.03,-60.57],"6-94-37":[-3265.74,-54.12],"6-94-38":[-2992,1261.05],"6-94-39":[-1598.7,1080.07],"6-94-40":[-77.95,1222.62],"6-94-41":[-61.78,8598.15],"6-94-42":[-50.7,7880.79],"6-94-43":[-33.49,6616.83],"6-94-44":[-21.33,6332.71],"6-94-45":[-8.99,6551.71],"6-94-46":[0.56,3604.04],"6-94-47":[7.51,4970.26],"6-94-48":[11.75,3721.8],"6-94-49":[15.47,4235.84],"6-94-50":[16.83,2541.05],"6-94-51":[15.6,525.74],"6-94-52":[12.93,239.09],"6-94-53":[11.48,204.28],"6-94-54":[-14.13,238.32],"6-94-55":[-18.6,1029.1],"6-94-56":[-15.92,2637.61],"6-94-57":[-11.52,3300.48],"6-94-58":[-61.57,3450.97],"6-94-59":[-198.69,3672.41],"6-94-60":[-397.08,3954.97],"6-94-61":[-3665.4,3850.88],"6-94-62":[-4412.06,3480.02],"6-94-63":[-4409.04,3067.91],"6-95-0":[-602.77,562.41],"6-95-1":[-460.9,424.48],"5-47-0":[-602.77,562.41],"6-95-2":[6.2,1674.74],"6-95-3":[-126.18,1339.78],"5-47-1":[-126.18,2256.16],"4-23-0":[-645.12,2837.93],"6-95-4":[-501.23,855.62],"6-95-5":[-355.11,859.48],"5-47-2":[-501.23,916.49],"6-95-6":[-433.11,1054.02],"6-95-7":[-816.66,941.07],"5-47-3":[-952.38,1128.23],"4-23-1":[-1525.55,2211.57],"3-11-0":[-2859.78,2837.93],"6-95-8":[-3578.67,733.23],"6-95-9":[-4260.32,628.73],"5-47-4":[-4260.32,733.23],"6-95-10":[-4696.15,242.85],"6-95-11":[-4872.34,262.78],"5-47-5":[-4953.77,262.78],"4-23-2":[-4953.77,733.23],"6-95-12":[-4878.33,2173.74],"6-95-13":[-4844.26,3529.7],"5-47-6":[-5052.19,3529.7],"6-95-14":[-4336.73,4279.84],"6-95-15":[-4012.33,3328.41],"5-47-7":[-4450.02,4375.85],"4-23-3":[-5052.19,4532.62],"3-11-1":[-5052.19,4532.62],"2-5-0":[-5594.69,4532.62],"6-95-16":[-3897.48,4987.09],"6-95-17":[-4190.29,2654.79],"5-47-8":[-4658.52,5220.28],"6-95-18":[-4529.97,6201.27],"6-95-19":[-4902.77,6890.4],"5-47-9":[-4902.77,6890.4],"4-23-4":[-4902.77,7087.4],"6-95-20":[-4279.48,6254.63],"6-95-21":[-4679.07,7070.27],"5-47-10":[-4909.98,8019.76],"6-95-22":[-5271.01,8478.4],"6-95-23":[-5469.35,533.63],"5-47-11":[-5469.35,8777.15],"4-23-5":[-5502.72,8777.15],"3-11-2":[-5826.83,8777.15],"6-95-24":[-6170.59,26.16],"6-95-25":[-6029.46,-61.4],"5-47-12":[-6170.59,1331.06],"6-95-26":[-6233.8,-63.4],"6-95-27":[-6168.75,-64.19],"5-47-13":[-6233.8,-63.4],"4-23-6":[-6323.49,1608.79],"6-95-28":[-5946.53,-62.12],"6-95-29":[-5563.77,-59.77],"5-47-14":[-5947.08,-59.77],"6-95-30":[-5415.34,-59.81],"6-95-31":[-5091.48,-60.33],"5-47-15":[-5433.18,-59.81],"4-23-7":[-5947.08,2430.45],"3-11-3":[-6647.67,2590.24],"2-5-1":[-6897.64,8777.15],"1-2-0":[-7020.16,8777.15],"6-95-32":[-4840.71,-61.96],"6-95-33":[-4477.56,-62.76],"5-47-16":[-4840.71,-61.96],"6-95-34":[-4145.89,-63.18],"6-95-35":[-4001.9,-62.21],"5-47-17":[-4218.61,-62.21],"4-23-8":[-5022.99,2382.44],"6-95-36":[-3450.75,-58.3],"6-95-37":[-3372.07,-51.25],"5-47-18":[-3569.03,-51.25],"6-95-38":[-2676.42,-44.8],"6-95-39":[-2060.04,21.7],"5-47-19":[-2992,1261.05],"4-23-9":[-3761.1,1526.78],"3-11-4":[-5315.04,2500.59],"6-95-40":[-87.28,515.63],"6-95-41":[-73.3,8337.38],"5-47-20":[-87.28,8598.15],"6-95-42":[-61.25,6940.28],"6-95-43":[-45.22,6206.62],"5-47-21":[-61.25,7880.79],"4-23-10":[-87.28,8598.15],"6-95-44":[-34.87,6723.39],"6-95-45":[-20.9,6097.25],"5-47-22":[-34.87,6723.39],"6-95-46":[-8.31,2575.12],"6-95-47":[-220.5,5153.81],"5-47-23":[-220.5,5153.81],"4-23-11":[-220.5,6972.29],"3-11-5":[-220.5,8598.15],"2-5-2":[-5630.71,8598.15],"6-95-48":[11.13,3250.14],"6-95-49":[11.13,4186.84],"5-47-24":[11.13,4235.84],"6-95-50":[13.37,3407.69],"6-95-51":[13.37,2121.23],"5-47-25":[13.37,3407.69],"4-23-12":[11.13,4411.61],"6-95-52":[10.23,254.78],"6-95-53":[-6.6,249.74],"5-47-26":[-6.6,254.78],"6-95-54":[-14.83,629.23],"6-95-55":[-23.34,1290.06],"5-47-27":[-23.34,1290.06],"4-23-13":[-23.34,1290.06],"3-11-6":[-55.82,4411.61],"6-95-56":[-11.92,2688.65],"6-95-57":[-12.05,3479.02],"5-47-28":[-15.92,3479.02],"6-95-58":[-66.28,3627.63],"6-95-59":[-225.58,3738.39],"5-47-29":[-225.58,3738.39],"4-23-14":[-225.58,3738.39],"6-95-60":[-389.39,3883.62],"6-95-61":[-3689.24,3781.94],"5-47-30":[-3689.24,3954.97],"6-95-62":[-4427.44,3420.26],"6-95-63":[-4395.91,3069.78],"5-47-31":[-4427.44,3480.02],"4-23-15":[-4427.44,4042.04],"3-11-7":[-4558.49,4042.04],"2-5-3":[-5188.16,4411.61],"1-2-1":[-5630.71,8598.15],"6-96-0":[-507.95,550.11],"6-96-1":[-395.05,585.56],"6-96-2":[6.32,1424.65],"6-96-3":[-31.33,1441.83],"6-96-4":[-453.58,1344.57],"6-96-5":[-201.96,1305.47],"6-96-6":[-290.34,1334],"6-96-7":[-358.6,1577.7],"6-96-8":[-3477.28,974.81],"6-96-9":[-4185.57,751.03],"6-96-10":[-4564.8,917.02],"6-96-11":[-4753.73,457.27],"6-96-12":[-4737.6,1266.17],"6-96-13":[-4756.71,3266],"6-96-14":[-4510.66,4151.48],"6-96-15":[-4069.46,4116.23],"6-96-16":[-3473.69,3824.31],"6-96-17":[-3788.26,2504.01],"6-96-18":[-4700.84,5909.96],"6-96-19":[-4874.41,6767.17],"6-96-20":[-5176.8,6522.84],"6-96-21":[-4920.94,7463.69],"6-96-22":[-5332.86,7512.84],"6-96-23":[-5984.55,1663.78],"6-96-24":[-5819.56,1062.24],"6-96-25":[-6172.54,-53.86],"6-96-26":[-6470.49,-59.44],"6-96-27":[-6334.52,407.51],"6-96-28":[-6436.56,114.95],"6-96-29":[-5830.63,-53.59],"6-96-30":[-5438.79,-48.89],"6-96-31":[-4933.77,-47.66],"6-96-32":[-4971.61,-47.94],"6-96-33":[-4598.44,-48.79],"6-96-34":[-4770.86,-51.46],"6-96-35":[-3985.12,95.94],"6-96-36":[-3493.93,364.5],"6-96-37":[-3068.68,-52.16],"6-96-38":[-2570.27,-47.88],"6-96-39":[-1611.51,971.23],"6-96-40":[-110.58,1645.76],"6-96-41":[-79.29,7274.95],"6-96-42":[-69.21,7054.69],"6-96-43":[-55.83,6428.04],"6-96-44":[-44.21,6604.16],"6-96-45":[-29.81,5836.96],"6-96-46":[-17.32,2435],"6-96-47":[-19.04,3762.29],"6-96-48":[3,4053.22],"6-96-49":[6.76,4099.84],"6-96-50":[9.32,3157.99],"6-96-51":[9.2,1217.16],"6-96-52":[7.16,445.77],"6-96-53":[-41.06,924.54],"6-96-54":[2.39,754.02],"6-96-55":[3.38,1584.77],"6-96-56":[14.61,2802.12],"6-96-57":[-13.87,3518.93],"6-96-58":[-60.39,3704.38],"6-96-59":[-114.78,3756.39],"6-96-60":[-212.46,3799.9],"6-96-61":[-3739.84,3696.84],"6-96-62":[-4393.72,3372.98],"6-96-63":[-4412.76,3073.17],"6-97-0":[-364.14,494.02],"6-97-1":[-399.12,366.65],"5-48-0":[-507.95,585.56],"6-97-2":[5.88,988],"6-97-3":[-5.43,1653.63],"5-48-1":[-31.33,1653.63],"6-97-4":[-15.46,1661.74],"6-97-5":[-282.65,1274.66],"5-48-2":[-453.58,1661.74],"6-97-6":[-438.53,1165.53],"6-97-7":[-407.85,1618.98],"5-48-3":[-438.53,1618.98],"6-97-8":[-2713.91,1177.41],"6-97-9":[-4143.19,764.98],"5-48-4":[-4185.57,1177.41],"6-97-10":[-4571.83,1092.04],"6-97-11":[-4667.26,823.06],"5-48-5":[-4753.73,1092.04],"6-97-12":[-4992.04,2561.56],"6-97-13":[-4442.71,2677.49],"5-48-6":[-4992.04,3266],"6-97-14":[-4214.57,2882.06],"6-97-15":[-4045.73,4155.27],"5-48-7":[-4510.66,4155.27],"6-97-16":[-3751.2,4825.04],"6-97-17":[-4087.17,4733.64],"5-48-8":[-4087.17,4825.04],"6-97-18":[-4588.68,5772.12],"6-97-19":[-4985.77,6131.65],"5-48-9":[-4985.77,6767.17],"6-97-20":[-5603.67,6237.58],"6-97-21":[-4539.45,7221.31],"5-48-10":[-5603.67,7463.69],"6-97-22":[-5521.12,5335.5],"6-97-23":[-6178.41,2777.96],"5-48-11":[-6178.41,7512.84],"6-97-24":[-5874.71,3021.9],"6-97-25":[-6475.28,1489.97],"5-48-12":[-6475.28,3021.9],"6-97-26":[-6434.12,365.67],"6-97-27":[-6299.38,671.16],"5-48-13":[-6470.49,671.16],"6-97-28":[-6037.15,253.16],"6-97-29":[-5599.45,634.69],"5-48-14":[-6436.56,634.69],"6-97-30":[-5263.17,2140.29],"6-97-31":[-5140.67,-30.37],"5-48-15":[-5438.79,2140.29],"6-97-32":[-5106.69,-30.41],"6-97-33":[-4931.92,2040.29],"5-48-16":[-5106.69,2040.29],"6-97-34":[-4661.45,548.69],"6-97-35":[-4636.64,171.14],"5-48-17":[-4770.86,548.69],"6-97-36":[-3316.65,618.15],"6-97-37":[-2881.1,316.65],"5-48-18":[-3493.93,618.15],"6-97-38":[-2676.29,1443.77],"6-97-39":[-137.79,2960.9],"5-48-19":[-2676.29,2960.9],"6-97-40":[-91.36,2693.99],"6-97-41":[-84.52,5200.27],"5-48-20":[-110.58,7274.95],"6-97-42":[-74.46,7161.3],"6-97-43":[-60.54,6144.57],"5-48-21":[-74.46,7161.3],"6-97-44":[-55.82,6036.64],"6-97-45":[-41.68,5696.1],"5-48-22":[-55.82,6604.16],"6-97-46":[-29.34,4612.61],"6-97-47":[-13.57,4736.04],"5-48-23":[-29.34,4736.04],"6-97-48":[-3.72,4132.25],"6-97-49":[2.56,2840.06],"5-48-24":[-3.72,4132.25],"6-97-50":[5.93,2600.03],"6-97-51":[6.01,2378.55],"5-48-25":[5.93,3157.99],"6-97-52":[3.78,811.06],"6-97-53":[-1.51,1061.04],"5-48-26":[-41.06,1061.04],"6-97-54":[-2.2,784.39],"6-97-55":[-0.05,1584.77],"5-48-27":[-2.2,1584.77],"6-97-56":[43.27,2824.51],"6-97-57":[-14.89,3500.23],"5-48-28":[-14.89,3518.93],"6-97-58":[-24.5,3719.54],"6-97-59":[-126.51,3755.97],"5-48-29":[-126.51,3756.39],"6-97-60":[-221.84,3775.22],"6-97-61":[-3792.88,3652.34],"5-48-30":[-3792.88,3799.9],"6-97-62":[-4477.7,3341.15],"6-97-63":[-4401.04,3074.67],"5-48-31":[-4477.7,3372.98],"6-98-0":[-371.51,448.58],"6-98-1":[-316.46,300.99],"6-98-2":[4.57,1060.02],"6-98-3":[-254.89,1807.12],"6-98-4":[-16.48,1774.8],"6-98-5":[-298.82,1169.06],"6-98-6":[-774.09,715.29],"6-98-7":[-2340.07,1569.96],"6-98-8":[-1082.6,1090.5],"6-98-9":[-4200.3,887.64],"6-98-10":[-4568.5,775.1],"6-98-11":[-4834.4,615.55],"6-98-12":[-4862.94,2887.36],"6-98-13":[-4329.53,2999.01],"6-98-14":[-4764.12,3482.56],"6-98-15":[-4080.63,3928.85],"6-98-16":[-4130.05,2953.75],"6-98-17":[-4647.34,5415.08],"6-98-18":[-4790.05,5725.81],"6-98-19":[-4988.02,5462.57],"6-98-20":[-5720.28,5731.48],"6-98-21":[-4587.04,6535.05],"6-98-22":[-5777.18,5106.11],"6-98-23":[-6446.93,3346.34],"6-98-24":[-6216.81,2464.8],"6-98-25":[-6329.09,2574.03],"6-98-26":[-6412.8,1748.97],"6-98-27":[-6111.95,1498.37],"6-98-28":[-6037.15,1085.71],"6-98-29":[-6003.77,550.46],"6-98-30":[-5871.84,3433.72],"6-98-31":[-5614.47,1843.03],"6-98-32":[-5471.08,1698.95],"6-98-33":[-1424.27,3384.6],"6-98-34":[-2250.26,448.92],"6-98-35":[-2791.74,954.7],"6-98-36":[-2811.05,1369.36],"6-98-37":[-388.5,1662.98],"6-98-38":[-190.16,2513.02],"6-98-39":[-96.25,2383.84],"6-98-40":[-93.34,3253.33],"6-98-41":[-85,4949.11],"6-98-42":[-76.44,6337.06],"6-98-43":[-68.5,5603.47],"6-98-44":[-62.86,5366.56],"6-98-45":[-50.56,5626.81],"6-98-46":[-38.51,5318.07],"6-98-47":[-23.36,2894.75],"6-98-48":[-12.63,3815.84],"6-98-49":[-1.83,3449.56],"6-98-50":[0.77,2894.03],"6-98-51":[1.97,2716.31],"6-98-52":[-0.24,590.54],"6-98-53":[-6.56,774.1],"6-98-54":[-6.92,878.64],"6-98-55":[-6.32,1715.72],"6-98-56":[12.62,2802.84],"6-98-57":[-12.46,3410],"6-98-58":[-22.47,3708.3],"6-98-59":[-214.72,3736.73],"6-98-60":[-1142.49,3737.71],"6-98-61":[-3792.91,3612.82],"6-98-62":[-4469.7,3317.35],"6-98-63":[-4417.4,3075.47],"6-99-0":[-364.52,447.51],"6-99-1":[-290.13,155.66],"5-49-0":[-371.51,448.58],"6-99-2":[-22.28,953.5],"6-99-3":[-482.07,1748.05],"5-49-1":[-482.07,1807.12],"4-24-0":[-507.95,1807.12],"6-99-4":[-813.43,1651.8],"6-99-5":[-218.72,590],"5-49-2":[-813.43,1774.8],"6-99-6":[-285.15,855.64],"6-99-7":[-3731.89,1480.74],"5-49-3":[-3731.89,1569.96],"4-24-1":[-3731.89,1774.8],"6-99-8":[-3736.42,1436.53],"6-99-9":[-4507.24,868.73],"5-49-4":[-4507.24,1436.53],"6-99-10":[-4621.74,599.89],"6-99-11":[-4707.79,729.83],"5-49-5":[-4834.4,775.1],"4-24-2":[-4834.4,1436.53],"6-99-12":[-5090.06,2274.47],"6-99-13":[-4188.76,3424.72],"5-49-6":[-5090.06,3424.72],"6-99-14":[-4292.66,3181.14],"6-99-15":[-4676.48,3821.64],"5-49-7":[-4764.12,3928.85],"4-24-3":[-5090.06,4155.27],"6-99-16":[-4251.07,3902.64],"6-99-17":[-4738.26,3828.18],"5-49-8":[-4738.26,5415.08],"6-99-18":[-4876.5,5499.12],"6-99-19":[-5960.03,6216.6],"5-49-9":[-5960.03,6216.6],"4-24-4":[-5960.03,6767.17],"6-99-20":[-6992.72,6063.79],"6-99-21":[-4952.91,6434.65],"5-49-10":[-6992.72,6535.05],"6-99-22":[-5781.88,5432.09],"6-99-23":[-6502.07,3530.75],"5-49-11":[-6502.07,5432.09],"4-24-5":[-6992.72,7512.84],"6-99-24":[-7339.17,2554.75],"6-99-25":[-6570.41,2536.99],"5-49-12":[-7339.17,2574.03],"6-99-26":[-6827.32,2080.04],"6-99-27":[-6445.11,2009.72],"5-49-13":[-6827.32,2080.04],"4-24-6":[-7339.17,3021.9],"6-99-28":[-6607.43,1760.05],"6-99-29":[-6362.58,1543.06],"5-49-14":[-6607.43,1760.05],"6-99-30":[-6442.03,2251.47],"6-99-31":[-5733.72,3054.12],"5-49-15":[-6442.03,3433.72],"4-24-7":[-6607.43,3433.72],"6-99-32":[-195.98,3098.13],"6-99-33":[-150.19,2196.47],"5-49-16":[-5471.08,3384.6],"6-99-34":[-147.54,1442.07],"6-99-35":[-118.78,1686.04],"5-49-17":[-2791.74,1686.04],"4-24-8":[-5471.08,3384.6],"6-99-36":[-143.43,1862.71],"6-99-37":[-88.25,2022.05],"5-49-18":[-2811.05,2022.05],"6-99-38":[-94.27,2510.97],"6-99-39":[-95.18,2501.75],"5-49-19":[-190.16,2513.02],"4-24-9":[-3493.93,2960.9],"6-99-40":[-92.2,3411.71],"6-99-41":[-83.68,5229.16],"5-49-20":[-93.34,5229.16],"6-99-42":[-78.69,6352.65],"6-99-43":[-74.99,5945.78],"5-49-21":[-78.69,6352.65],"4-24-10":[-110.58,7274.95],"6-99-44":[-72.56,6157.61],"6-99-45":[-59.76,5387.12],"5-49-22":[-72.56,6157.61],"6-99-46":[-48.96,3739.65],"6-99-47":[-34.76,3871.64],"5-49-23":[-48.96,5318.07],"4-24-11":[-72.56,6604.16],"6-99-48":[-22.48,3771.63],"6-99-49":[-11.77,3171.14],"5-49-24":[-22.48,3815.84],"6-99-50":[-6.68,3321.72],"6-99-51":[-3.06,2161.47],"5-49-25":[-6.68,3321.72],"4-24-12":[-22.48,4132.25],"6-99-52":[-6.11,696.82],"6-99-53":[-14.49,592.88],"5-49-26":[-14.49,774.1],"6-99-54":[-16.12,865.7],"6-99-55":[-5.53,1741.17],"5-49-27":[-16.12,1741.17],"4-24-13":[-41.06,1741.17],"6-99-56":[108.04,2705.18],"6-99-57":[-11.7,3387.35],"5-49-28":[-12.46,3410],"6-99-58":[-9.12,3611.49],"6-99-59":[-229.47,3694.95],"5-49-29":[-229.47,3736.73],"4-24-14":[-229.47,3756.39],"6-99-60":[-2254.34,3696.05],"6-99-61":[-3851.31,3543.3],"5-49-30":[-3851.31,3737.71],"6-99-62":[-4412.98,3284.67],"6-99-63":[-4408.48,3075.96],"5-49-31":[-4469.7,3317.35],"4-24-15":[-4477.7,3799.9],"6-100-0":[-390.94,351.58],"6-100-1":[-450.17,176.67],"6-100-2":[-337.26,852.14],"6-100-3":[-92.47,1463.97],"6-100-4":[-1198.63,1680.37],"6-100-5":[-276.63,702.17],"6-100-6":[-847.1,737.36],"6-100-7":[-779.5,1198.23],"6-100-8":[-1490.09,958.88],"6-100-9":[-4561.87,855.83],"6-100-10":[-4756.31,555.66],"6-100-11":[-4695.48,852.88],"6-100-12":[-4493.8,918],"6-100-13":[-4524.26,3194.59],"6-100-14":[-4412.44,2295.19],"6-100-15":[-4058.81,3379.04],"6-100-16":[-4869.14,3558.09],"6-100-17":[-5072.75,1902.58],"6-100-18":[-5507.87,5176.87],"6-100-19":[-6806.78,4952.19],"6-100-20":[-7047.82,6100.38],"6-100-21":[-5422.5,7111.28],"6-100-22":[-5589.41,4334.26],"6-100-23":[-6273.7,3117.27],"6-100-24":[-6680.93,3084.02],"6-100-25":[-7178.68,2792.64],"6-100-26":[-6925.86,1323.34],"6-100-27":[-5898.05,1726.89],"6-100-28":[-6590.9,1062.2],"6-100-29":[-6749.52,1503.56],"6-100-30":[-4431.14,3063.08],"6-100-31":[-68.74,3673.24],"6-100-32":[-174.08,3783.24],"6-100-33":[-79.57,3170.1],"6-100-34":[-114.16,1437.39],"6-100-35":[-109.27,1036.2],"6-100-36":[-136.16,1688.89],"6-100-37":[-82.44,1262.34],"6-100-38":[-86.64,2743.63],"6-100-39":[-87.84,2954.02],"6-100-40":[-85.52,3019.27],"6-100-41":[-80.19,4227.26],"6-100-42":[-78.68,7011.33],"6-100-43":[-81.4,5829.36],"6-100-44":[-80.06,4840.27],"6-100-45":[-66.32,5057.87],"6-100-46":[-55.39,1867.69],"6-100-47":[-41.05,3437.08],"6-100-48":[-30.56,3288.03],"6-100-49":[-19.26,2279.18],"6-100-50":[-931.09,3069.79],"6-100-51":[-9.52,911],"6-100-52":[-12.52,823.95],"6-100-53":[-17.41,557.51],"6-100-54":[-19.91,858.74],"6-100-55":[-15.87,1791.71],"6-100-56":[62.06,2640.61],"6-100-57":[-13.37,3292.47],"6-100-58":[-6.91,3525.76],"6-100-59":[-234.59,3605.31],"6-100-60":[-2981.06,3601.4],"6-100-61":[-3897.97,3433.72],"6-100-62":[-4391.74,3240.37],"6-100-63":[-4393.37,3075.89],"6-101-0":[-421.01,313.54],"6-101-1":[-512.44,178.89],"5-50-0":[-512.44,351.58],"6-101-2":[-361.24,1063.19],"6-101-3":[-0.04,1302.37],"5-50-1":[-361.24,1463.97],"6-101-4":[-1405.91,935.03],"6-101-5":[-772.36,832.71],"5-50-2":[-1405.91,1680.37],"6-101-6":[-1534.94,728.03],"6-101-7":[-1407.76,1011.68],"5-50-3":[-1534.94,1198.23],"6-101-8":[-2600.51,929.44],"6-101-9":[-4397.62,836.04],"5-50-4":[-4561.87,958.88],"6-101-10":[-4770.73,706.58],"6-101-11":[-4773,984.1],"5-50-5":[-4773,984.1],"6-101-12":[-4525.52,1472.91],"6-101-13":[-4274.01,2280.07],"5-50-6":[-4525.52,3194.59],"6-101-14":[-5036.77,1985.15],"6-101-15":[-4218.02,2132.01],"5-50-7":[-5036.77,3379.04],"6-101-16":[-5245.63,2678.17],"6-101-17":[-5049.38,2311.12],"5-50-8":[-5245.63,3558.09],"6-101-18":[-6178.58,3502.2],"6-101-19":[-6836.91,4106.19],"5-50-9":[-6836.91,5176.87],"6-101-20":[-6222.74,4524.83],"6-101-21":[-6183.09,1942.57],"5-50-10":[-7047.82,7111.28],"6-101-22":[-6217.18,2858.21],"6-101-23":[-6156.22,2530.43],"5-50-11":[-6273.7,4334.26],"6-101-24":[-6127.32,2937.63],"6-101-25":[-6187.88,2686.47],"5-50-12":[-7178.68,3084.02],"6-101-26":[-6708.63,1984.96],"6-101-27":[-6304.3,1793.02],"5-50-13":[-6925.86,1984.96],"6-101-28":[-6890.34,988.31],"6-101-29":[-6807.99,2085.28],"5-50-14":[-6890.34,2085.28],"6-101-30":[-827.51,2120.45],"6-101-31":[-91.17,1041.7],"5-50-15":[-4431.14,3673.24],"6-101-32":[-97.78,1126.85],"6-101-33":[-741.62,2229.43],"5-50-16":[-741.62,3783.24],"6-101-34":[-86,2218.28],"6-101-35":[-91.75,972.31],"5-50-17":[-114.16,2218.28],"6-101-36":[-82.03,1722.02],"6-101-37":[-67.22,1888.96],"5-50-18":[-136.16,1888.96],"6-101-38":[-84.9,2609.46],"6-101-39":[-73.16,2809.62],"5-50-19":[-87.84,2954.02],"6-101-40":[-76.24,2431.42],"6-101-41":[-78.06,2794.21],"5-50-20":[-85.52,4227.26],"6-101-42":[-80.1,1837.51],"6-101-43":[-82.02,4346.82],"5-50-21":[-82.02,7011.33],"6-101-44":[-82.43,4015.21],"6-101-45":[-71.27,3380.19],"5-50-22":[-82.43,5057.87],"6-101-46":[-62.71,2269.12],"6-101-47":[-49.64,2628.18],"5-50-23":[-62.71,3437.08],"6-101-48":[-39.39,2089],"6-101-49":[-28.16,1965.15],"5-50-24":[-39.39,3288.03],"6-101-50":[-1045.89,2237.07],"6-101-51":[-17.14,1465.9],"5-50-25":[-1045.89,3069.79],"6-101-52":[-18.23,975.1],"6-101-53":[-25.73,697.58],"5-50-26":[-25.73,975.1],"6-101-54":[-26.47,842.08],"6-101-55":[-27.05,1793.86],"5-50-27":[-27.05,1793.86],"6-101-56":[130.63,2600.89],"6-101-57":[-15.79,3117.95],"5-50-28":[-15.79,3292.47],"6-101-58":[-21.12,3441.93],"6-101-59":[-223.25,3528.69],"5-50-29":[-234.59,3605.31],"6-101-60":[-3261.12,3498.6],"6-101-61":[-4152.25,3363.74],"5-50-30":[-4152.25,3601.4],"6-101-62":[-4394.82,3196.67],"6-101-63":[-4379.5,3075.29],"5-50-31":[-4394.82,3240.37],"6-102-0":[-536.22,303.03],"6-102-1":[-458.93,93],"6-102-2":[-523.45,1394.62],"6-102-3":[-340.76,1118.35],"6-102-4":[-637.66,963.87],"6-102-5":[-1006.67,1119.08],"6-102-6":[-1697.74,734.39],"6-102-7":[-1650.38,887.81],"6-102-8":[-3194.12,947.89],"6-102-9":[-4309.08,743.5],"6-102-10":[-4735.62,607.14],"6-102-11":[-4787.15,1969.85],"6-102-12":[-4697.47,2509.72],"6-102-13":[-4218.23,1987.12],"6-102-14":[-4472.05,2758.43],"6-102-15":[-4465.68,2221.84],"6-102-16":[-4700.72,1397.18],"6-102-17":[-5315.38,2304.17],"6-102-18":[-6259.92,1918.57],"6-102-19":[-6187.94,3718.19],"6-102-20":[-5971.58,3019.64],"6-102-21":[-5845.44,2199.58],"6-102-22":[-6124.87,2506.96],"6-102-23":[-6381.94,1720.45],"6-102-24":[-5579.24,1495.1],"6-102-25":[-5964.56,1791.56],"6-102-26":[-6228.05,2581.3],"6-102-27":[-6191.63,2426.49],"6-102-28":[-7237.19,1298.21],"6-102-29":[-3650.72,3393.89],"6-102-30":[-84.28,1014.85],"6-102-31":[-93.44,1601.85],"6-102-32":[-104.01,1543.85],"6-102-33":[-125.97,901.87],"6-102-34":[-1367.07,3442.9],"6-102-35":[-1855.07,1260.19],"6-102-36":[-322.96,2328.48],"6-102-37":[-1009.39,2525.3],"6-102-38":[-380.49,1743.52],"6-102-39":[-142.48,1395.18],"6-102-40":[-83.25,1596.45],"6-102-41":[-78.87,2416.96],"6-102-42":[-80.62,2152.58],"6-102-43":[-81.5,2932.67],"6-102-44":[-81.55,3630.19],"6-102-45":[-75.32,1896.56],"6-102-46":[-66.17,2239.16],"6-102-47":[-55.15,1390.17],"6-102-48":[-45.84,2203.77],"6-102-49":[-34.14,2652.43],"6-102-50":[-1232.75,1976.12],"6-102-51":[-1190.99,2418.74],"6-102-52":[-24.4,1885.73],"6-102-53":[-30.23,601.14],"6-102-54":[-36.54,759.49],"6-102-55":[-33.13,1569.32],"6-102-56":[133.31,2518.52],"6-102-57":[-10.76,2973.89],"6-102-58":[-33.46,3288.12],"6-102-59":[-305.74,3458.77],"6-102-60":[-3439.58,3410.38],"6-102-61":[-4199.53,3280.26],"6-102-62":[-4394.84,3169.64],"6-102-63":[-4385.62,3074.68],"6-103-0":[-664.29,385.94],"6-103-1":[-607.48,87.39],"5-51-0":[-664.29,385.94],"6-103-2":[-559,1207.8],"6-103-3":[-287.93,790.24],"5-51-1":[-559,1394.62],"4-25-0":[-664.29,1463.97],"6-103-4":[-231.49,809.08],"6-103-5":[-1283.43,1038.7],"5-51-2":[-1283.43,1119.08],"6-103-6":[-1537.95,689.79],"6-103-7":[-1465.17,820.66],"5-51-3":[-1697.74,887.81],"4-25-1":[-1697.74,1680.37],"3-12-0":[-3731.89,1807.12],"6-103-8":[-3174.17,871.07],"6-103-9":[-4207.91,581.35],"5-51-4":[-4309.08,947.89],"6-103-10":[-4597.12,599.15],"6-103-11":[-4821.39,2526.11],"5-51-5":[-4821.39,2526.11],"4-25-2":[-4821.39,2526.11],"6-103-12":[-4544.45,2781.93],"6-103-13":[-4167.75,2000.38],"5-51-6":[-4697.47,2781.93],"6-103-14":[-4476.17,2483.46],"6-103-15":[-4442.04,1631.54],"5-51-7":[-4476.17,2758.43],"4-25-3":[-5036.77,3379.04],"3-12-1":[-5090.06,4155.27],"6-103-16":[-4817.91,1440.56],"6-103-17":[-5610.41,2312.81],"5-51-8":[-5610.41,2312.81],"6-103-18":[-6311.98,2785.32],"6-103-19":[-6138.44,2608.85],"5-51-9":[-6311.98,3718.19],"4-25-4":[-6836.91,5176.87],"6-103-20":[-5508.45,3075.61],"6-103-21":[-5886.75,2284.9],"5-51-10":[-5971.58,3075.61],"6-103-22":[-6066.19,2090.39],"6-103-23":[-5457.66,1930.57],"5-51-11":[-6381.94,2506.96],"4-25-5":[-7047.82,7111.28],"3-12-2":[-7047.82,7512.84],"6-103-24":[-5713.12,1683.1],"6-103-25":[-5757.33,1775.49],"5-51-12":[-5964.56,1791.56],"6-103-26":[-5922.59,22.84],"6-103-27":[-5849.17,35.12],"5-51-13":[-6228.05,2581.3],"4-25-6":[-7178.68,3084.02],"6-103-28":[-7243.99,50.12],"6-103-29":[-1454.02,3260.42],"5-51-14":[-7243.99,3393.89],"6-103-30":[-58.02,93.68],"6-103-31":[-60.48,1707.53],"5-51-15":[-93.44,1707.53],"4-25-7":[-7243.99,3673.24],"3-12-3":[-7339.17,3673.24],"6-103-32":[-162.28,1767.47],"6-103-33":[-1017.75,98.63],"5-51-16":[-1017.75,1767.47],"6-103-34":[-2341.53,3363.43],"6-103-35":[-4457.98,275.89],"5-51-17":[-4457.98,3442.9],"4-25-8":[-4457.98,3783.24],"6-103-36":[-4499.26,14.72],"6-103-37":[-3941.7,93.37],"5-51-18":[-4499.26,2525.3],"6-103-38":[-2622.21,1699.47],"6-103-39":[-141.96,1600.09],"5-51-19":[-2622.21,1743.52],"4-25-9":[-4499.26,2954.02],"3-12-4":[-5471.08,3783.24],"6-103-40":[-137.39,1823.56],"6-103-41":[-76.31,2004.38],"5-51-20":[-137.39,2416.96],"6-103-42":[-79.55,2165.55],"6-103-43":[-79.53,2984.61],"5-51-21":[-81.5,2984.61],"4-25-10":[-137.39,7011.33],"6-103-44":[-81.64,2519.86],"6-103-45":[-78.43,2732.28],"5-51-22":[-81.64,3630.19],"6-103-46":[-69.24,2273.81],"6-103-47":[-59.94,1433.55],"5-51-23":[-69.24,2273.81],"4-25-11":[-82.43,5057.87],"3-12-5":[-137.39,7274.95],"6-103-48":[-51.3,1616.53],"6-103-49":[-40.42,2462.04],"5-51-24":[-51.3,2652.43],"6-103-50":[-34.48,1978.37],"6-103-51":[-292.05,2624.92],"5-51-25":[-1232.75,2624.92],"4-25-12":[-1232.75,3288.03],"6-103-52":[-31.64,2452.11],"6-103-53":[-39.3,580.7],"5-51-26":[-39.3,2452.11],"6-103-54":[-43.14,595.46],"6-103-55":[-38.79,1241.72],"5-51-27":[-43.14,1569.32],"4-25-13":[-43.14,2452.11],"3-12-6":[-1232.75,4132.25],"6-103-56":[41.8,2536.98],"6-103-57":[-10.42,2925.63],"5-51-28":[-10.76,2973.89],"6-103-58":[-41.3,3218.56],"6-103-59":[-864.59,3373.24],"5-51-29":[-864.59,3458.77],"4-25-14":[-864.59,3605.31],"6-103-60":[-3543.19,3368.42],"6-103-61":[-4192.59,3217.25],"5-51-30":[-4199.53,3410.38],"6-103-62":[-4418.45,3122.3],"6-103-63":[-4379.77,3072.12],"5-51-31":[-4418.45,3169.64],"4-25-15":[-4418.45,3601.4],"3-12-7":[-4477.7,3799.9],"6-104-0":[-526.41,278.25],"6-104-1":[-607.48,84.32],"6-104-2":[-567.79,1215.23],"6-104-3":[-136.97,496.59],"6-104-4":[-530.59,368.79],"6-104-5":[-1286.3,495.96],"6-104-6":[-1290.23,483.95],"6-104-7":[-1728.3,491.06],"6-104-8":[-2795.06,750.89],"6-104-9":[-4321.31,561.53],"6-104-10":[-4660.95,1677.59],"6-104-11":[-4755.16,2530.45],"6-104-12":[-4867.13,2992.37],"6-104-13":[-4319.24,1634.35],"6-104-14":[-4861.02,1654.73],"6-104-15":[-4590.03,1754.54],"6-104-16":[-4680.89,1742.15],"6-104-17":[-5021.65,2838.35],"6-104-18":[-6327.49,3047.6],"6-104-19":[-6022.91,1847.96],"6-104-20":[-5238.09,1280.51],"6-104-21":[-5427.73,1772.77],"6-104-22":[-1527.77,2103.76],"6-104-23":[-3176.09,1877.29],"6-104-24":[-4631.17,953.51],"6-104-25":[-4908.55,27.99],"6-104-26":[-6087.43,44.5],"6-104-27":[-6964.5,55.83],"6-104-28":[-7180.91,944.4],"6-104-29":[-1168.01,3611.18],"6-104-30":[-48.05,2422.76],"6-104-31":[29.67,2305.23],"6-104-32":[-137.09,2345.05],"6-104-33":[-2420.97,2313.76],"6-104-34":[-3121.56,3699.18],"6-104-35":[-4705.71,1042.4],"6-104-36":[-4651.58,248.09],"6-104-37":[-4548.6,171.3],"6-104-38":[-3947.09,13.11],"6-104-39":[-1918.04,879.5],"6-104-40":[-160.75,1768.37],"6-104-41":[-63.64,2023.75],"6-104-42":[-75.39,1680.76],"6-104-43":[-77.46,1192.5],"6-104-44":[-81.92,1797.89],"6-104-45":[-78.44,2994.6],"6-104-46":[-69.89,2749.34],"6-104-47":[-61.52,1693.13],"6-104-48":[-54.23,1689.54],"6-104-49":[-44.26,1624.78],"6-104-50":[-39.25,1606.81],"6-104-51":[-36.43,2574.37],"6-104-52":[-37.17,2397.44],"6-104-53":[-45.54,1602.59],"6-104-54":[-46.98,571.52],"6-104-55":[-44.18,1300.89],"6-104-56":[14.72,2508.46],"6-104-57":[-9.19,2971.73],"6-104-58":[-48.98,3190.51],"6-104-59":[-1971.26,3320.02],"6-104-60":[-3543.17,3317.03],"6-104-61":[-4270.15,3144.59],"6-104-62":[-4463.8,3080.43],"6-104-63":[-4359.14,3069.68],"6-105-0":[-386.63,295.13],"6-105-1":[-530.27,104.53],"5-52-0":[-607.48,295.13],"6-105-2":[-57.63,673.64],"6-105-3":[-142.54,382.73],"5-52-1":[-567.79,1215.23],"6-105-4":[-1219.69,24.28],"6-105-5":[-1293.1,453.82],"5-52-2":[-1293.1,495.96],"6-105-6":[-1282.86,471.8],"6-105-7":[-1513.06,385.91],"5-52-3":[-1728.3,491.06],"6-105-8":[-3081.89,448.35],"6-105-9":[-4301.03,380.42],"5-52-4":[-4321.31,750.89],"6-105-10":[-4774.33,1615.07],"6-105-11":[-4753.47,2962.65],"5-52-5":[-4774.33,2962.65],"6-105-12":[-4793.17,2450.24],"6-105-13":[-4635.6,1532.32],"5-52-6":[-4867.13,2992.37],"6-105-14":[-5474.7,1232.86],"6-105-15":[-4765.11,1464.19],"5-52-7":[-5474.7,1754.54],"6-105-16":[-5081.47,2060.03],"6-105-17":[-5649.49,2407.63],"5-52-8":[-5649.49,2838.35],"6-105-18":[-6192.35,805.59],"6-105-19":[-5515.95,1519.8],"5-52-9":[-6327.49,3047.6],"6-105-20":[-153.64,1755.88],"6-105-21":[-69.59,1735.53],"5-52-10":[-5427.73,1772.77],"6-105-22":[4.65,2160.72],"6-105-23":[-47.98,1800.52],"5-52-11":[-3176.09,2160.72],"6-105-24":[-983.55,1138.97],"6-105-25":[-4898.89,52.59],"5-52-12":[-4908.55,1138.97],"6-105-26":[-6006.98,67.42],"6-105-27":[-7165.68,82.34],"5-52-13":[-7165.68,82.34],"6-105-28":[-7107.38,2813.87],"6-105-29":[-2789.9,4108.68],"5-52-14":[-7180.91,4108.68],"6-105-30":[-2046.22,2687.61],"6-105-31":[-2203.42,2267.3],"5-52-15":[-2203.42,2687.61],"6-105-32":[-2023.09,2189.3],"6-105-33":[-475.58,2628.6],"5-52-16":[-2420.97,2628.6],"6-105-34":[-2993.96,4026.67],"6-105-35":[-3073,2972.87],"5-52-17":[-4705.71,4026.67],"6-105-36":[-5007.8,38.1],"6-105-37":[-4418.38,27.92],"5-52-18":[-5007.8,248.09],"6-105-38":[-4679.05,2.72],"6-105-39":[-3358.64,1205.98],"5-52-19":[-4679.05,1205.98],"6-105-40":[-100.62,1717.53],"6-105-41":[13.76,2116.73],"5-52-20":[-160.75,2116.73],"6-105-42":[-14.21,1651.52],"6-105-43":[-99.76,1646.92],"5-52-21":[-99.76,1680.76],"6-105-44":[-78.53,1437.77],"6-105-45":[-78.21,708.59],"5-52-22":[-81.92,2994.6],"6-105-46":[-69.94,2304.63],"6-105-47":[-61.91,2016.37],"5-52-23":[-69.94,2749.34],"6-105-48":[-54.84,1440.18],"6-105-49":[-47.73,1222.85],"5-52-24":[-54.84,1689.54],"6-105-50":[-42.44,1502.32],"6-105-51":[-41.44,2344.1],"5-52-25":[-42.44,2574.37],"6-105-52":[-43.24,2813.61],"6-105-53":[-52.02,1580.09],"5-52-26":[-52.02,2813.61],"6-105-54":[-54.04,379.62],"6-105-55":[-53.1,680.38],"5-52-27":[-54.04,1300.89],"6-105-56":[19.16,2408.3],"6-105-57":[-6.33,3030.32],"5-52-28":[-9.19,3030.32],"6-105-58":[-48.95,3188.16],"6-105-59":[-2420.07,3235.61],"5-52-29":[-2420.07,3320.02],"6-105-60":[-3653.6,3197.29],"6-105-61":[-4402.41,3081.54],"5-52-30":[-4402.41,3317.03],"6-105-62":[-4442.47,3060.18],"6-105-63":[-4335.36,3063.52],"5-52-31":[-4463.8,3080.43],"6-106-0":[-382.69,518.1],"6-106-1":[-442,276.46],"6-106-2":[-281.26,561.88],"6-106-3":[-169.68,522.34],"6-106-4":[-1384.91,0.13],"6-106-5":[-1025.1,460.29],"6-106-6":[-1225,454.78],"6-106-7":[-1960.43,411.14],"6-106-8":[-3522.54,443.53],"6-106-9":[-4277.44,383.49],"6-106-10":[-4763.29,717.41],"6-106-11":[-4792.44,2548.26],"6-106-12":[-4965.29,2226.52],"6-106-13":[-4754.24,1486.61],"6-106-14":[-5102.45,1598.44],"6-106-15":[-4846.65,1743.81],"6-106-16":[-5136.73,1936.12],"6-106-17":[-5992.39,1887.25],"6-106-18":[-6270.11,785.42],"6-106-19":[-5555.1,1101.77],"6-106-20":[-105.16,584.53],"6-106-21":[-78.25,1795.67],"6-106-22":[-35.2,1934.56],"6-106-23":[-36.2,3691.21],"6-106-24":[-55.29,1951.28],"6-106-25":[-2434.64,2501.63],"6-106-26":[-5844.39,2962.21],"6-106-27":[-7088.95,2343.09],"6-106-28":[-7127.73,2288.03],"6-106-29":[-5085.75,1818.49],"6-106-30":[-2226.25,3403.08],"6-106-31":[-2614.6,3030.91],"6-106-32":[-5551.59,3132.81],"6-106-33":[-5187.49,3490.23],"6-106-34":[-4798.95,1959.49],"6-106-35":[-4231.66,2405.04],"6-106-36":[-5091.52,2311.11],"6-106-37":[-5322.52,2857.2],"6-106-38":[-4356.76,2411.64],"6-106-39":[-4709.05,1867.27],"6-106-40":[-1353.88,3536.2],"6-106-41":[-232.12,1847.54],"6-106-42":[-29.3,1738.68],"6-106-43":[-76.47,544.69],"6-106-44":[-78.18,1063.1],"6-106-45":[-82.72,673.36],"6-106-46":[-69.49,1847.24],"6-106-47":[-61.11,1904.12],"6-106-48":[-54.99,1698.78],"6-106-49":[-48.72,1558.94],"6-106-50":[-45.04,1454.59],"6-106-51":[-45.09,2182.46],"6-106-52":[-47.54,2446.34],"6-106-53":[-57.28,707.41],"6-106-54":[-61.21,389.51],"6-106-55":[-59.83,845.24],"6-106-56":[15,2462.74],"6-106-57":[-18.09,3046.36],"6-106-58":[-77.59,3177.4],"6-106-59":[-2784.49,3172.35],"6-106-60":[-5343.81,3109.06],"6-106-61":[-5227.4,3012.28],"6-106-62":[-4422.66,3048.31],"6-106-63":[-4439.18,3060.25],"6-107-0":[-286.77,546.08],"6-107-1":[-378.19,115.12],"5-53-0":[-442,546.08],"6-107-2":[-455.31,408.6],"6-107-3":[-333.04,478.27],"5-53-1":[-455.31,561.88],"4-26-0":[-607.48,1215.23],"6-107-4":[-681.52,0.24],"6-107-5":[-883.51,565.28],"5-53-2":[-1384.91,565.28],"6-107-6":[-779.35,479.01],"6-107-7":[-986.72,427.06],"5-53-3":[-1960.43,479.01],"4-26-1":[-1960.43,565.28],"6-107-8":[-3454.89,342.41],"6-107-9":[-4321.54,417.22],"5-53-4":[-4321.54,443.53],"6-107-10":[-4617.61,1200.19],"6-107-11":[-4818.58,2000.95],"5-53-5":[-4818.58,2548.26],"4-26-2":[-4818.58,2962.65],"6-107-12":[-5173.19,1644.22],"6-107-13":[-5052,1523.39],"5-53-6":[-5173.19,2226.52],"6-107-14":[-5421.41,1600.44],"6-107-15":[-5348.99,1541.69],"5-53-7":[-5421.41,1743.81],"4-26-3":[-5474.7,2992.37],"6-107-16":[-5283.07,816.14],"6-107-17":[-5990.04,1174.47],"5-53-8":[-5992.39,1936.12],"6-107-18":[-6455.15,918.27],"6-107-19":[-5625.24,284.34],"5-53-9":[-6455.15,1101.77],"4-26-4":[-6455.15,3047.6],"6-107-20":[-52.47,526.37],"6-107-21":[-35.84,1218.7],"5-53-10":[-105.16,1795.67],"6-107-22":[0.69,665.65],"6-107-23":[-53.71,3956.01],"5-53-11":[-53.71,3956.01],"4-26-5":[-5427.73,3956.01],"6-107-24":[11.3,1042.66],"6-107-25":[-140.92,2731.61],"5-53-12":[-2434.64,2731.61],"6-107-26":[-2442.89,2712.33],"6-107-27":[-3959.71,2627.63],"5-53-13":[-7088.95,2962.21],"4-26-6":[-7165.68,2962.21],"6-107-28":[-4124.69,2528.23],"6-107-29":[-5178.42,2469.27],"5-53-14":[-7127.73,2528.23],"6-107-30":[-6397.3,2587.77],"6-107-31":[-4678.95,2851.48],"5-53-15":[-6397.3,3403.08],"4-26-7":[-7180.91,4108.68],"6-107-32":[-5755.48,2955.49],"6-107-33":[-5453.9,2702.65],"5-53-16":[-5755.48,3490.23],"6-107-34":[-5829.92,2335.3],"6-107-35":[-5067.92,2392.22],"5-53-17":[-5829.92,2405.04],"4-26-8":[-5829.92,4026.67],"6-107-36":[-3178.2,2496.62],"6-107-37":[-5674.08,2665.32],"5-53-18":[-5674.08,2857.2],"6-107-38":[-5493.89,2656.26],"6-107-39":[-5934.3,936.67],"5-53-19":[-5934.3,2656.26],"4-26-9":[-5934.3,2857.2],"6-107-40":[-6907.12,3813],"6-107-41":[-1957.5,692.66],"5-53-20":[-6907.12,3813],"6-107-42":[-102.58,1162.16],"6-107-43":[-51.74,610.87],"5-53-21":[-102.58,1738.68],"4-26-10":[-6907.12,3813],"6-107-44":[-79.98,322.34],"6-107-45":[-103.15,850.26],"5-53-22":[-103.15,1063.1],"6-107-46":[-98.51,1077.53],"6-107-47":[-60.78,748.14],"5-53-23":[-98.51,1904.12],"4-26-11":[-103.15,2994.6],"6-107-48":[-54.95,1479.71],"6-107-49":[-49.55,1565.44],"5-53-24":[-54.99,1698.78],"6-107-50":[-47.09,1490.38],"6-107-51":[-49,1610.21],"5-53-25":[-49,2182.46],"4-26-12":[-54.99,2574.37],"6-107-52":[-52.14,1975.45],"6-107-53":[-62.69,1147.18],"5-53-26":[-62.69,2446.34],"6-107-54":[-67.4,422.24],"6-107-55":[-64.36,1172.91],"5-53-27":[-67.4,1172.91],"4-26-13":[-67.4,2813.61],"6-107-56":[0.38,2590.73],"6-107-57":[-18.89,3089.34],"5-53-28":[-18.89,3089.34],"6-107-58":[-68.11,3196.31],"6-107-59":[-2999.96,3163.37],"5-53-29":[-2999.96,3196.31],"4-26-14":[-2999.96,3320.02],"6-107-60":[-5139.66,2994.83],"6-107-61":[-4603,2932.32],"5-53-30":[-5343.81,3109.06],"6-107-62":[-4447.14,3035.5],"6-107-63":[-4391.36,3058.07],"5-53-31":[-4447.14,3060.25],"4-26-15":[-5343.81,3317.03],"6-108-0":[-269.86,460.52],"6-108-1":[-909.85,103.01],"6-108-2":[-934.43,448.87],"6-108-3":[-448.87,410.23],"6-108-4":[-1134.26,783.32],"6-108-5":[-1014.64,707.83],"6-108-6":[-803.54,487.14],"6-108-7":[-492.37,1127.4],"6-108-8":[-3410.5,1401.18],"6-108-9":[-4432.32,816.9],"6-108-10":[-4679.36,804.47],"6-108-11":[-4901.46,1845.92],"6-108-12":[-4877.43,1706.86],"6-108-13":[-5078.78,1269.14],"6-108-14":[-5485.84,878.23],"6-108-15":[-5416.22,339.07],"6-108-16":[-5311.85,1264.57],"6-108-17":[-5872.94,1987.41],"6-108-18":[-6139.97,1234.98],"6-108-19":[-5744.12,581.2],"6-108-20":[-1210.92,1941.55],"6-108-21":[18.57,485.34],"6-108-22":[22.07,547.54],"6-108-23":[8,553.56],"6-108-24":[22.25,451.89],"6-108-25":[12.35,918.99],"6-108-26":[-100.52,825.9],"6-108-27":[-1028.33,1607.31],"6-108-28":[-3782.32,2883.2],"6-108-29":[-5712.91,3011.04],"6-108-30":[-5919.23,2699.58],"6-108-31":[-6130.93,2053.63],"6-108-32":[-5581.72,1989.62],"6-108-33":[-5856.99,2752.59],"6-108-34":[-5125.09,2931.03],"6-108-35":[-9837.42,2985.2],"6-108-36":[-9176.01,1499.32],"6-108-37":[-7403.24,844.91],"6-108-38":[-6431.65,967.01],"6-108-39":[-6750.67,455.4],"6-108-40":[-8904.47,557.1],"6-108-41":[-2245.02,555.5],"6-108-42":[-155.54,497.24],"6-108-43":[-143.34,1897.55],"6-108-44":[-116.63,504.19],"6-108-45":[-69.83,1160],"6-108-46":[-133.68,1895.04],"6-108-47":[-58.68,1225.25],"6-108-48":[-54.09,331.06],"6-108-49":[-49.45,858.23],"6-108-50":[-48.53,1246.12],"6-108-51":[-51.56,1690.85],"6-108-52":[-55.45,1790.32],"6-108-53":[-65.39,785.47],"6-108-54":[-71.76,816.92],"6-108-55":[-65.99,1394.18],"6-108-56":[-2.53,2630.58],"6-108-57":[-6.92,3151.32],"6-108-58":[-53.92,3203.64],"6-108-59":[-2992.28,3159.64],"6-108-60":[-4112.67,2917.97],"6-108-61":[-4420.65,2871.65],"6-108-62":[-4443.67,3023.22],"6-108-63":[-4394.23,3057.86],"6-109-0":[-270.44,656.94],"6-109-1":[-827.99,51.45],"5-54-0":[-909.85,656.94],"6-109-2":[-881.02,445.4],"6-109-3":[-438.51,348.03],"5-54-1":[-934.43,448.87],"6-109-4":[-755.24,1075.1],"6-109-5":[-1021.66,875.53],"5-54-2":[-1134.26,1075.1],"6-109-6":[-964.92,1068.55],"6-109-7":[-1389.91,2201.02],"5-54-3":[-1389.91,2201.02],"6-109-8":[-2933.34,2117.99],"6-109-9":[-4505.72,1848.18],"5-54-4":[-4505.72,2117.99],"6-109-10":[-4787.22,676.85],"6-109-11":[-4862.28,2240.33],"5-54-5":[-4901.46,2240.33],"6-109-12":[-4826.2,2048.94],"6-109-13":[-4454.84,905.39],"5-54-6":[-5078.78,2048.94],"6-109-14":[-5226.57,1057.62],"6-109-15":[-5811.86,1445.43],"5-54-7":[-5811.86,1445.43],"6-109-16":[-6600.71,1718.97],"6-109-17":[-5848.43,2763.77],"5-54-8":[-6600.71,2763.77],"6-109-18":[-6128.18,1727.04],"6-109-19":[-5755.9,1925.58],"5-54-9":[-6139.97,1925.58],"6-109-20":[-2873.02,1453.61],"6-109-21":[16.04,722.76],"5-54-10":[-2873.02,1941.55],"6-109-22":[13.17,993.49],"6-109-23":[24.41,997.46],"5-54-11":[8,997.46],"6-109-24":[29.92,532.19],"6-109-25":[35.9,997.76],"5-54-12":[12.35,997.76],"6-109-26":[-62.41,705.14],"6-109-27":[-155.45,192.69],"5-54-13":[-1028.33,1607.31],"6-109-28":[-3320.92,2276.38],"6-109-29":[-5565.73,1372.75],"5-54-14":[-5712.91,3011.04],"6-109-30":[-5326.65,2446.71],"6-109-31":[-5439.11,2066.98],"5-54-15":[-6130.93,2699.58],"6-109-32":[-5242.54,2152.95],"6-109-33":[-9088.35,2555.71],"5-54-16":[-9088.35,2752.59],"6-109-34":[-9658.18,1415.76],"6-109-35":[-10034.76,2395.35],"5-54-17":[-10034.76,2985.2],"6-109-36":[-7677.31,198.32],"6-109-37":[-6489.8,755.14],"5-54-18":[-9176.01,1499.32],"6-109-38":[-6783.71,1012.77],"6-109-39":[-6707.72,556.98],"5-54-19":[-6783.71,1012.77],"6-109-40":[-7531.73,1049.45],"6-109-41":[-7516.23,1051.49],"5-54-20":[-8904.47,1051.49],"6-109-42":[-1415.28,657.78],"6-109-43":[-917.74,1418.1],"5-54-21":[-1415.28,1897.55],"6-109-44":[-203.47,1825.58],"6-109-45":[-2529.02,1649.03],"5-54-22":[-2529.02,1825.58],"6-109-46":[-2502.26,2676.78],"6-109-47":[-55.65,1688.92],"5-54-23":[-2502.26,2676.78],"6-109-48":[-52.05,1423.43],"6-109-49":[-47.99,1021.62],"5-54-24":[-54.09,1423.43],"6-109-50":[-47.82,876.38],"6-109-51":[-52.39,1918.93],"5-54-25":[-52.39,1918.93],"6-109-52":[-58.59,2139.52],"6-109-53":[-69.44,671.86],"5-54-26":[-69.44,2139.52],"6-109-54":[-76.93,1835.17],"6-109-55":[-75.43,2142.74],"5-54-27":[-76.93,2142.74],"6-109-56":[54.7,2622.61],"6-109-57":[-13.76,3171.09],"5-54-28":[-13.76,3171.09],"6-109-58":[-51.27,3189.23],"6-109-59":[-2937.77,3116.04],"5-54-29":[-2992.28,3203.64],"6-109-60":[-4129.79,2882.89],"6-109-61":[-4476.03,2844.52],"5-54-30":[-4476.03,2917.97],"6-109-62":[-4360.94,3011.97],"6-109-63":[-4379.14,3059.53],"5-54-31":[-4443.67,3059.53],"6-110-0":[-250.66,758.26],"6-110-1":[-639.76,157.09],"6-110-2":[-685.8,661.06],"6-110-3":[-268.85,380.05],"6-110-4":[-297.72,699.79],"6-110-5":[-929.59,824.82],"6-110-6":[-1441.83,856.13],"6-110-7":[-1340.2,1828.99],"6-110-8":[-2191.42,1922.66],"6-110-9":[-4584.62,2002.65],"6-110-10":[-4755.66,531.48],"6-110-11":[-4922.75,2290.58],"6-110-12":[-4734.98,2374.21],"6-110-13":[-4033.09,1509.02],"6-110-14":[-5177.97,1216.44],"6-110-15":[-5122.6,1386.01],"6-110-16":[-5852.6,1509.87],"6-110-17":[-6019.33,1774.19],"6-110-18":[-5925.45,999.37],"6-110-19":[-5864.11,1373.1],"6-110-20":[-1399.53,1801.42],"6-110-21":[-19.03,1948.19],"6-110-22":[24,1394.61],"6-110-23":[28.82,1297.55],"6-110-24":[34.84,856.67],"6-110-25":[38.27,554.6],"6-110-26":[-37.78,444.1],"6-110-27":[-141.33,346.26],"6-110-28":[-2350.94,127.03],"6-110-29":[-7570.28,837.45],"6-110-30":[-7572.68,2981.67],"6-110-31":[-4811.97,1446.01],"6-110-32":[-5014.78,1519.04],"6-110-33":[-5712.41,3088.67],"6-110-34":[-6523.63,862.43],"6-110-35":[-6612.97,116.33],"6-110-36":[-6757,359.52],"6-110-37":[-7622.08,453.11],"6-110-38":[-7728.22,558.61],"6-110-39":[-6469.64,915.42],"6-110-40":[-6273.13,1429.68],"6-110-41":[-6885.04,1437.62],"6-110-42":[-5789.08,1847.18],"6-110-43":[-2607.79,1764.42],"6-110-44":[-2139.1,1318.08],"6-110-45":[-3282.63,927.36],"6-110-46":[-3638.83,1736.18],"6-110-47":[-2977.08,1480.88],"6-110-48":[-49.85,1362.03],"6-110-49":[-46.08,1189.43],"6-110-50":[-46.52,1475],"6-110-51":[-52.46,2242.57],"6-110-52":[-59.62,2260.57],"6-110-53":[-71.74,522.46],"6-110-54":[-80.19,1992.64],"6-110-55":[-74.89,1933.66],"6-110-56":[37.2,2601.74],"6-110-57":[-29.38,3136.57],"6-110-58":[-51.27,3137.89],"6-110-59":[-2933.37,3008.63],"6-110-60":[-4048.36,2819.29],"6-110-61":[-4427.04,2805.69],"6-110-62":[-4352,2999.73],"6-110-63":[-4305.39,3062.38],"6-111-0":[-323.33,754.83],"6-111-1":[-702.85,187.17],"5-55-0":[-702.85,758.26],"6-111-2":[-737.84,648.26],"6-111-3":[-469.89,449.75],"5-55-1":[-737.84,661.06],"4-27-0":[-934.43,758.26],"6-111-4":[-1182.43,490.13],"6-111-5":[-1362,1088.07],"5-55-2":[-1362,1088.07],"6-111-6":[-1166.96,1035.63],"6-111-7":[-1423.87,1221.31],"5-55-3":[-1441.83,1828.99],"4-27-1":[-1441.83,2201.02],"3-13-0":[-1960.43,2201.02],"6-111-8":[-2163.91,1652.58],"6-111-9":[-4546.4,2070.51],"5-55-4":[-4584.62,2070.51],"6-111-10":[-4788.65,825.86],"6-111-11":[-4913.95,1856.83],"5-55-5":[-4922.75,2290.58],"4-27-2":[-4922.75,2290.58],"6-111-12":[-4533.1,2358.55],"6-111-13":[-4006.46,2286.52],"5-55-6":[-4734.98,2374.21],"6-111-14":[-4355.03,2263.84],"6-111-15":[-4810.31,1447.73],"5-55-7":[-5177.97,2263.84],"4-27-3":[-5811.86,2374.21],"3-13-1":[-5811.86,2992.37],"2-6-0":[-5811.86,4155.27],"6-111-16":[-5292.31,1878.55],"6-111-17":[-5825.22,62.05],"5-55-8":[-6019.33,1878.55],"6-111-18":[-5782.95,66.77],"6-111-19":[-6031.55,1986.11],"5-55-9":[-6031.55,1986.11],"4-27-4":[-6600.71,2763.77],"6-111-20":[-178.07,1882.11],"6-111-21":[27.45,387.12],"5-55-10":[-1399.53,1948.19],"6-111-22":[33.04,937.65],"6-111-23":[33.91,1419.55],"5-55-11":[24,1419.55],"4-27-5":[-2873.02,1948.19],"3-13-2":[-6600.71,3956.01],"6-111-24":[37.06,1087.22],"6-111-25":[39.61,455.2],"5-55-12":[34.84,1087.22],"6-111-26":[44.33,446.87],"6-111-27":[0.43,554.22],"5-55-13":[-141.33,554.22],"4-27-6":[-1028.33,1607.31],"6-111-28":[-342.38,125.8],"6-111-29":[-3693.35,614.14],"5-55-14":[-7570.28,837.45],"6-111-30":[-3688.89,1913.09],"6-111-31":[-4778.06,2928.23],"5-55-15":[-7572.68,2981.67],"4-27-7":[-7572.68,3011.04],"3-13-3":[-7572.68,4108.68],"2-6-1":[-7572.68,7512.84],"6-111-32":[-5480.06,3028.24],"6-111-33":[-6076.26,2016.59],"5-55-16":[-6076.26,3088.67],"6-111-34":[-8930.19,670.15],"6-111-35":[-6319.86,174.3],"5-55-17":[-8930.19,862.43],"4-27-8":[-10034.76,3088.67],"6-111-36":[-6662.31,610.22],"6-111-37":[-6727.95,457.36],"5-55-18":[-7622.08,610.22],"6-111-38":[-6703.37,466.21],"6-111-39":[-7157.32,1152.22],"5-55-19":[-7728.22,1152.22],"4-27-9":[-9176.01,1499.32],"3-13-4":[-10034.76,4026.67],"6-111-40":[-5842.52,1528.53],"6-111-41":[-5775.21,1002.66],"5-55-20":[-6885.04,1528.53],"6-111-42":[-5651.27,400.15],"6-111-43":[-4946.41,1791.1],"5-55-21":[-5789.08,1847.18],"4-27-10":[-8904.47,1897.55],"6-111-44":[-1567.69,1916.11],"6-111-45":[-3584.66,-20.77],"5-55-22":[-3584.66,1916.11],"6-111-46":[-3855.55,-20.97],"6-111-47":[-3726.44,1812.54],"5-55-23":[-3855.55,1812.54],"4-27-11":[-3855.55,2676.78],"3-13-5":[-8904.47,3813],"2-6-2":[-10034.76,7274.95],"6-111-48":[-45.23,1405.74],"6-111-49":[-42.63,2153.84],"5-55-24":[-49.85,2153.84],"6-111-50":[-45.55,2160.52],"6-111-51":[-51.95,2239.63],"5-55-25":[-52.46,2242.57],"4-27-12":[-54.09,2242.57],"6-111-52":[-60.12,1808.82],"6-111-53":[-74.09,806.78],"5-55-26":[-74.09,2260.57],"6-111-54":[-82.21,2067.49],"6-111-55":[-78.66,1711.28],"5-55-27":[-82.21,2067.49],"4-27-13":[-82.21,2260.57],"3-13-6":[-82.21,2813.61],"6-111-56":[18.81,2605.54],"6-111-57":[-26.45,2976.73],"5-55-28":[-29.38,3136.57],"6-111-58":[-46.21,2992.85],"6-111-59":[-3028.17,2893.93],"5-55-29":[-3028.17,3137.89],"4-27-14":[-3028.17,3203.64],"6-111-60":[-4045.52,2687.3],"6-111-61":[-4452.97,2763.19],"5-55-30":[-4452.97,2819.29],"6-111-62":[-4321.84,2987.5],"6-111-63":[-4305.39,3065.26],"5-55-31":[-4352,3065.26],"4-27-15":[-4476.03,3065.26],"3-13-7":[-5343.81,3320.02],"2-6-3":[-5343.81,4132.25],"6-112-0":[-315.35,703.8],"6-112-1":[-500.97,188.17],"6-112-2":[-672.54,426.09],"6-112-3":[-637.86,265.05],"6-112-4":[-1182.43,535.81],"6-112-5":[-1178.5,965.91],"6-112-6":[-1309.88,1017.56],"6-112-7":[-2150.48,1767.28],"6-112-8":[-3092.96,1681.65],"6-112-9":[-4395.44,1766.67],"6-112-10":[-4664.57,1755.07],"6-112-11":[-4741.98,1915.02],"6-112-12":[-4452.89,2099.48],"6-112-13":[-3978.01,2155.76],"6-112-14":[-4196.3,1965.97],"6-112-15":[-4806.19,2024.26],"6-112-16":[-5271.91,1410.98],"6-112-17":[-5632.69,66.52],"6-112-18":[-5870.55,3037.73],"6-112-19":[-5099.73,3225.44],"6-112-20":[-42.36,1148.96],"6-112-21":[-8.1,410.71],"6-112-22":[-5.97,293.67],"6-112-23":[36.79,1063.75],"6-112-24":[39.76,637.58],"6-112-25":[41.96,467.74],"6-112-26":[-2.18,358.76],"6-112-27":[-1.62,407.82],"6-112-28":[-55.19,128.34],"6-112-29":[-53.86,134.69],"6-112-30":[-1512.17,4766.85],"6-112-31":[-5137.94,1479.51],"6-112-32":[-5372.95,1532.53],"6-112-33":[-5738.8,4900.75],"6-112-34":[-8241.06,152.9],"6-112-35":[-7154.87,138.86],"6-112-36":[-6266.86,417.68],"6-112-37":[-6347.65,370.77],"6-112-38":[-6180.93,478.74],"6-112-39":[-6935.69,643.8],"6-112-40":[-6887.3,1103.75],"6-112-41":[-6044.18,301.67],"6-112-42":[-5342,426.73],"6-112-43":[-4826.53,1062.96],"6-112-44":[-2697.25,3130.43],"6-112-45":[-3480.96,2969.74],"6-112-46":[-3690.31,-16.66],"6-112-47":[-3710.67,1366.96],"6-112-48":[-2085.48,1915.25],"6-112-49":[-40.23,1848.97],"6-112-50":[-44.52,2039.75],"6-112-51":[-174.25,1981.47],"6-112-52":[-60.31,1859.99],"6-112-53":[-75.15,1697.18],"6-112-54":[-83.59,1769.68],"6-112-55":[-84.73,1703.65],"6-112-56":[14.74,2525.84],"6-112-57":[-27.87,2840.96],"6-112-58":[-40.15,2867.37],"6-112-59":[-2183.56,2794.55],"6-112-60":[-3705.32,2564.78],"6-112-61":[-4506.77,2709.29],"6-112-62":[-4289.6,2977.76],"6-112-63":[-4281.74,3068.14],"6-113-0":[-237.9,609.54],"6-113-1":[-654.94,258.06],"5-56-0":[-654.94,703.8],"6-113-2":[-681.4,461.37],"6-113-3":[-773.18,6.86],"5-56-1":[-773.18,461.37],"6-113-4":[-684.38,493.31],"6-113-5":[-626.54,608.12],"5-56-2":[-1182.43,965.91],"6-113-6":[-1337.5,609.54],"6-113-7":[-1015.02,2177.91],"5-56-3":[-2150.48,2177.91],"6-113-8":[-3386.76,2476.55],"6-113-9":[-4330.29,2650.27],"5-56-4":[-4395.44,2650.27],"6-113-10":[-4642.34,2153.15],"6-113-11":[-4825.16,1760.98],"5-56-5":[-4825.16,2153.15],"6-113-12":[-4357.22,1103.01],"6-113-13":[-4344.99,1633.71],"5-56-6":[-4452.89,2155.76],"6-113-14":[-5073.4,2108.2],"6-113-15":[-5648.56,1700.99],"5-56-7":[-5648.56,2108.2],"6-113-16":[-5457.85,1549.63],"6-113-17":[-5625.96,1641.19],"5-56-8":[-5632.69,1641.19],"6-113-18":[-5664.55,2604.93],"6-113-19":[-78.76,3800.26],"5-56-9":[-5870.55,3800.26],"6-113-20":[-8.36,1074.29],"6-113-21":[-5.83,1038.21],"5-56-10":[-42.36,1148.96],"6-113-22":[6.51,236.01],"6-113-23":[42.43,387.89],"5-56-11":[-5.97,1063.75],"6-113-24":[44.58,634.08],"6-113-25":[-5.67,464.96],"5-56-12":[-5.67,637.58],"6-113-26":[-99.13,216.97],"6-113-27":[-11.67,115.83],"5-56-13":[-99.13,407.82],"6-113-28":[0.49,237.05],"6-113-29":[3.59,230.31],"5-56-14":[-55.19,237.05],"6-113-30":[6.27,4681.3],"6-113-31":[-4723.47,2263.2],"5-56-15":[-5137.94,4766.85],"6-113-32":[-4812.96,2301.21],"6-113-33":[-5291.95,5227.39],"5-56-16":[-5738.8,5227.39],"6-113-34":[-8740.43,203.53],"6-113-35":[-8879.14,194.76],"5-56-17":[-8879.14,203.53],"6-113-36":[-7669.24,131.12],"6-113-37":[-6711.73,223.46],"5-56-18":[-7669.24,417.68],"6-113-38":[-7963.6,475.97],"6-113-39":[-6789.64,657.09],"5-56-19":[-7963.6,657.09],"6-113-40":[-5735.69,421.94],"6-113-41":[-5809.94,242.02],"5-56-20":[-6887.3,1103.75],"6-113-42":[-4854.7,1079.1],"6-113-43":[-4237.08,1164.85],"5-56-21":[-5342,1164.85],"6-113-44":[-6405.63,3720.25],"6-113-45":[-2520.67,2507.92],"5-56-22":[-6405.63,3720.25],"6-113-46":[-4096.61,1520.18],"6-113-47":[-3742.35,1494.65],"5-56-23":[-4096.61,1520.18],"6-113-48":[-2201.39,1675.03],"6-113-49":[-792.69,2012.19],"5-56-24":[-2201.39,2012.19],"6-113-50":[-191.23,1604.7],"6-113-51":[-162.88,1067.01],"5-56-25":[-191.23,2039.75],"6-113-52":[-197.34,1704.07],"6-113-53":[-76.66,2148.55],"5-56-26":[-197.34,2148.55],"6-113-54":[-85.09,2671.32],"6-113-55":[-88.87,2502.55],"5-56-27":[-88.87,2671.32],"6-113-56":[48.36,2522.11],"6-113-57":[-29.31,2629.41],"5-56-28":[-29.31,2840.96],"6-113-58":[-26.26,2726.71],"6-113-59":[-670.83,2693.87],"5-56-29":[-2183.56,2867.37],"6-113-60":[-3387.1,2498.35],"6-113-61":[-4352.21,2666.36],"5-56-30":[-4506.77,2709.29],"6-113-62":[-4113.81,2970.03],"6-113-63":[-4290.72,3070.04],"5-56-31":[-4290.72,3070.04],"6-114-0":[-217.29,631.52],"6-114-1":[-652.96,593.83],"6-114-2":[-652.96,502.69],"6-114-3":[-711.39,7.07],"6-114-4":[-962.46,35.46],"6-114-5":[-969.37,264.4],"6-114-6":[-2060.35,486.19],"6-114-7":[-1457.34,1696.85],"6-114-8":[-3458.33,2512.73],"6-114-9":[-4383.62,2822.43],"6-114-10":[-4900.81,2513.43],"6-114-11":[-4971.59,1227.42],"6-114-12":[-4627.64,627.07],"6-114-13":[-4444.85,1624.43],"6-114-14":[-5259.1,2346.04],"6-114-15":[-6433.58,1737.87],"6-114-16":[-5970.29,2312.97],"6-114-17":[-5424.99,2061.69],"6-114-18":[-4050.6,1666.14],"6-114-19":[-16.18,315.6],"6-114-20":[11.53,433.31],"6-114-21":[17.61,444.66],"6-114-22":[9.96,768.11],"6-114-23":[28.86,604.84],"6-114-24":[41.43,641.31],"6-114-25":[6.21,732.92],"6-114-26":[-2.3,520.43],"6-114-27":[-5.85,880.74],"6-114-28":[7.56,438.76],"6-114-29":[20.35,3629.05],"6-114-30":[-3441.73,3943.74],"6-114-31":[-4244.85,1426.8],"6-114-32":[-4340.52,1467.8],"6-114-33":[-4413.15,4032.23],"6-114-34":[-5477.02,3694.06],"6-114-35":[-10049.63,439.48],"6-114-36":[-10883.73,882.4],"6-114-37":[-5760.92,520.58],"6-114-38":[-8182.96,739.41],"6-114-39":[-5356.9,660.81],"6-114-40":[-8476.64,710.83],"6-114-41":[-9287.43,750.15],"6-114-42":[-9851.17,458.66],"6-114-43":[-9796.6,485.33],"6-114-44":[-9315.04,336.86],"6-114-45":[-7698.82,1596.14],"6-114-46":[-2831.4,1994.69],"6-114-47":[-793.5,2215.96],"6-114-48":[-1277.31,1574.86],"6-114-49":[-960.62,1356.08],"6-114-50":[-94.37,1531.42],"6-114-51":[-709.67,522.06],"6-114-52":[-430.47,1139.42],"6-114-53":[-75.38,2490.43],"6-114-54":[-88.58,2850.78],"6-114-55":[-89.56,2551.72],"6-114-56":[16.7,2298.07],"6-114-57":[-19.08,2577.32],"6-114-58":[-24.95,2638.08],"6-114-59":[-83.74,2612.99],"6-114-60":[-2174.13,2407.18],"6-114-61":[-3518.73,2636.29],"6-114-62":[-3712.95,2964.79],"6-114-63":[-4283.73,3070.97],"6-115-0":[-187.04,530.93],"6-115-1":[-99.37,430.8],"5-57-0":[-652.96,631.52],"6-115-2":[-563.41,825.96],"6-115-3":[-731.31,170.94],"5-57-1":[-731.31,825.96],"4-28-0":[-773.18,825.96],"6-115-4":[-1100.27,5.87],"6-115-5":[-1251.66,73.43],"5-57-2":[-1251.66,264.4],"6-115-6":[-1636.04,115.08],"6-115-7":[-2093.35,672.76],"5-57-3":[-2093.35,1696.85],"4-28-1":[-2150.48,2177.91],"6-115-8":[-3667.84,2830.65],"6-115-9":[-4258.51,2291.47],"5-57-4":[-4383.62,2830.65],"6-115-10":[-4724.92,2265.18],"6-115-11":[-4195.94,34.94],"5-57-5":[-4971.59,2513.43],"4-28-2":[-4971.59,2830.65],"6-115-12":[-3868.98,35.92],"6-115-13":[-5231.94,820.94],"5-57-6":[-5231.94,1624.43],"6-115-14":[-6647.87,1183.3],"6-115-15":[-5281.18,553.47],"5-57-7":[-6647.87,2346.04],"4-28-3":[-6647.87,2346.04],"6-115-16":[-5068.24,1740.56],"6-115-17":[-4365.04,1514.48],"5-57-8":[-5970.29,2312.97],"6-115-18":[-126.48,1481.35],"6-115-19":[16.45,488.33],"5-57-9":[-4050.6,1666.14],"4-28-4":[-5970.29,3800.26],"6-115-20":[24.53,517.03],"6-115-21":[25.92,466.97],"5-57-10":[11.53,517.03],"6-115-22":[27.14,504.64],"6-115-23":[25.23,721.3],"5-57-11":[9.96,768.11],"4-28-5":[-42.36,1148.96],"6-115-24":[19.75,1064.3],"6-115-25":[-5.67,1668.89],"5-57-12":[-5.67,1668.89],"6-115-26":[-2825.97,1447.2],"6-115-27":[-3615.64,572.29],"5-57-13":[-3615.64,1447.2],"4-28-6":[-3615.64,1668.89],"6-115-28":[-2126.29,211.74],"6-115-29":[-404.43,4475.65],"5-57-14":[-2126.29,4475.65],"6-115-30":[-2695.19,3432.98],"6-115-31":[-5029,210.19],"5-57-15":[-5029,3943.74],"4-28-7":[-5137.94,4766.85],"6-115-32":[-4771.84,296.18],"6-115-33":[-5123.4,3477.99],"5-57-16":[-5123.4,4032.23],"6-115-34":[-4997.92,4553.66],"6-115-35":[-7320.04,488.1],"5-57-17":[-10049.63,4553.66],"4-28-8":[-10049.63,5227.39],"6-115-36":[-10739.69,573.48],"6-115-37":[-5915.41,1449.42],"5-57-18":[-10883.73,1449.42],"6-115-38":[-5524.22,1670.14],"6-115-39":[-8932.24,1064.78],"5-57-19":[-8932.24,1670.14],"4-28-9":[-10883.73,1670.14],"6-115-40":[-8812,727.4],"6-115-41":[-8392.96,517.69],"5-57-20":[-9287.43,750.15],"6-115-42":[-7872.39,518.96],"6-115-43":[-6764.45,560.11],"5-57-21":[-9851.17,560.11],"4-28-10":[-9851.17,1164.85],"6-115-44":[-7018.42,521.33],"6-115-45":[-7799.77,1522.55],"5-57-22":[-9315.04,1596.14],"6-115-46":[-7614.84,1610.49],"6-115-47":[-6336.52,1704.56],"5-57-23":[-7614.84,2215.96],"4-28-11":[-9315.04,3720.25],"6-115-48":[-3744.4,504.45],"6-115-49":[-2649.47,1115.29],"5-57-24":[-3744.4,1574.86],"6-115-50":[-1798.94,796.94],"6-115-51":[-1884.46,1.57],"5-57-25":[-1884.46,1531.42],"4-28-12":[-3744.4,2039.75],"6-115-52":[-486.07,-22.55],"6-115-53":[-197.82,2231.18],"5-57-26":[-486.07,2490.43],"6-115-54":[-88.66,2288.35],"6-115-55":[-97.84,2886.75],"5-57-27":[-97.84,2886.75],"4-28-13":[-486.07,2886.75],"6-115-56":[-97.84,2001.44],"6-115-57":[-13.4,2428.6],"5-57-28":[-97.84,2577.32],"6-115-58":[-28.88,2560],"6-115-59":[-79.49,2552.69],"5-57-29":[-83.74,2638.08],"4-28-14":[-2183.56,2867.37],"6-115-60":[-2354.66,2355.28],"6-115-61":[-3053.46,2602.75],"5-57-30":[-3518.73,2636.29],"6-115-62":[-3317.66,2959.59],"6-115-63":[-4448.78,3076],"5-57-31":[-4448.78,3076],"4-28-15":[-4506.77,3076],"6-116-0":[-157.27,588],"6-116-1":[-30.91,619.39],"6-116-2":[-86.06,857.81],"6-116-3":[-594.94,584.08],"6-116-4":[-868.16,361.97],"6-116-5":[-1058.27,89.29],"6-116-6":[-1566.39,341.42],"6-116-7":[-2001.59,925.79],"6-116-8":[-3618.3,2260.37],"6-116-9":[-4360.2,2390.56],"6-116-10":[-4749.94,1856.79],"6-116-11":[-4365.05,37.51],"6-116-12":[-4921.25,37.9],"6-116-13":[-5623.28,37.4],"6-116-14":[-6034.38,40.87],"6-116-15":[-5248.79,1590.34],"6-116-16":[-4152.47,1786.57],"6-116-17":[-3533.65,1543.35],"6-116-18":[-3081.9,1965.18],"6-116-19":[15.73,2197.03],"6-116-20":[16.81,1387.12],"6-116-21":[19.43,339.66],"6-116-22":[23.95,968.42],"6-116-23":[29.01,1287.75],"6-116-24":[-77.95,1323.71],"6-116-25":[-1556,1284.39],"6-116-26":[-4497.18,99.51],"6-116-27":[-5262.69,99.08],"6-116-28":[-3029.54,3997.49],"6-116-29":[-6385.09,4112.66],"6-116-30":[-2568.6,1782.61],"6-116-31":[-6288.19,740.66],"6-116-32":[-7111.28,783.66],"6-116-33":[-5493.91,1907.63],"6-116-34":[-4683.48,4188.78],"6-116-35":[-7034.25,4099.51],"6-116-36":[-9875.02,139.92],"6-116-37":[-9525.81,129.47],"6-116-38":[-8773.83,1285.71],"6-116-39":[-7921.08,1325.23],"6-116-40":[-6582.23,1296.76],"6-116-41":[-6316.23,988.43],"6-116-42":[-8465.08,430.67],"6-116-43":[-6438.18,1421.13],"6-116-44":[-7095.88,2241.03],"6-116-45":[-7675.74,1999.21],"6-116-46":[-7337.56,1568.36],"6-116-47":[-9334.83,1737.57],"6-116-48":[-3739.03,1541.1],"6-116-49":[-3476.14,-13.09],"6-116-50":[-1798.94,-17.24],"6-116-51":[-1811.87,-19.53],"6-116-52":[-301.26,-22.38],"6-116-53":[-167.42,1885.71],"6-116-54":[-87.53,2398.56],"6-116-55":[-101.33,2286.69],"6-116-56":[-102.54,1792.11],"6-116-57":[-13.65,2338.91],"6-116-58":[-31.04,2481.09],"6-116-59":[-75.07,2481.96],"6-116-60":[-2584.8,2344.16],"6-116-61":[-2779.5,2569.82],"6-116-62":[-2768.05,2955.42],"6-116-63":[-4427.28,3081.95],"6-117-0":[-117.15,889.5],"6-117-1":[-8.17,1165.42],"5-58-0":[-157.27,1165.42],"6-117-2":[-333.27,1098.87],"6-117-3":[-364.55,1029.82],"5-58-1":[-594.94,1098.87],"6-117-4":[-777.9,446.39],"6-117-5":[-981.65,58.1],"5-58-2":[-1058.27,446.39],"6-117-6":[-1431.07,341.42],"6-117-7":[-1846.36,692.04],"5-58-3":[-2001.59,925.79],"6-117-8":[-3562.75,2175.65],"6-117-9":[-4180.76,2203.44],"5-58-4":[-4360.2,2390.56],"6-117-10":[-4281.24,2094.72],"6-117-11":[-4335.23,1541.51],"5-58-5":[-4749.94,2094.72],"6-117-12":[-4618.79,39.7],"6-117-13":[-4806.12,40.77],"5-58-6":[-5623.28,40.77],"6-117-14":[-5012.17,43.2],"6-117-15":[-6446.55,1533.21],"5-58-7":[-6446.55,1590.34],"6-117-16":[-4699.4,45.41],"6-117-17":[-4932.33,36.86],"5-58-8":[-4932.33,1786.57],"6-117-18":[-4982.4,1251.5],"6-117-19":[-4968.05,1583.75],"5-58-9":[-4982.4,2197.03],"6-117-20":[-528.87,1608.21],"6-117-21":[14.56,1512.08],"5-58-10":[-528.87,1608.21],"6-117-22":[19.38,1197.94],"6-117-23":[-32.07,1008.31],"5-58-11":[-32.07,1287.75],"6-117-24":[-324.64,868.08],"6-117-25":[-1824.42,88.5],"5-58-12":[-1824.42,1323.71],"6-117-26":[-4890.42,89.46],"6-117-27":[-4788.85,120.54],"5-58-13":[-5262.69,120.54],"6-117-28":[-3189.37,3000.93],"6-117-29":[-8146.74,1965.94],"5-58-14":[-8146.74,4112.66],"6-117-30":[-2812.73,2341.64],"6-117-31":[-7174.86,935.38],"5-58-15":[-7174.86,2341.64],"6-117-32":[-7126.95,964.38],"6-117-33":[-5915.39,2427.64],"5-58-16":[-7126.95,2427.64],"6-117-34":[-5061.26,2022.98],"6-117-35":[-6177.77,3071.93],"5-58-17":[-7034.25,4188.78],"6-117-36":[-6298.8,143.56],"6-117-37":[-6635.98,128.82],"5-58-18":[-9875.02,143.56],"6-117-38":[-6274.6,126.23],"6-117-39":[-6113.61,869.8],"5-58-19":[-8773.83,1325.23],"6-117-40":[-5929.23,1008.41],"6-117-41":[-6305.98,1199.98],"5-58-20":[-6582.23,1296.76],"6-117-42":[-6805.26,1550.43],"6-117-43":[-7008.26,1629.02],"5-58-21":[-8465.08,1629.02],"6-117-44":[-8681.6,1622.97],"6-117-45":[-8183.55,1262.52],"5-58-22":[-8681.6,2241.03],"6-117-46":[-6895.09,1.67],"6-117-47":[-9654.63,-5.89],"5-58-23":[-9654.63,1737.57],"6-117-48":[-7416.93,1460.21],"6-117-49":[-3583.39,-13.2],"5-58-24":[-7416.93,1541.1],"6-117-50":[-1433.49,-17.24],"6-117-51":[-1442.55,-20.04],"5-58-25":[-1811.87,-17.24],"6-117-52":[-456.12,1447.51],"6-117-53":[-164.68,2081.72],"5-58-26":[-456.12,2081.72],"6-117-54":[-86.62,2232.56],"6-117-55":[-101.99,2194.66],"5-58-27":[-101.99,2398.56],"6-117-56":[-106.25,1600.9],"6-117-57":[-18.37,2342.57],"5-58-28":[-106.25,2342.57],"6-117-58":[-30.84,2456.95],"6-117-59":[-74.54,2466.51],"5-58-29":[-75.07,2481.96],"6-117-60":[-2625.71,2291.18],"6-117-61":[-2781.74,2529.67],"5-58-30":[-2781.74,2569.82],"6-117-62":[-2248.52,2953.28],"6-117-63":[-4401.78,3084.91],"5-58-31":[-4427.28,3084.91],"6-118-0":[-129.02,911.99],"6-118-1":[6.64,1219.86],"6-118-2":[-297.72,2134.22],"6-118-3":[-2190.37,2133.38],"6-118-4":[-543.46,1022.63],"6-118-5":[-987.51,871.83],"6-118-6":[-1170.75,75.94],"6-118-7":[-2295.81,559.13],"6-118-8":[-3542.04,1102.21],"6-118-9":[-3936.44,1636.07],"6-118-10":[-4037.5,1813.48],"6-118-11":[-4143.24,1062.27],"6-118-12":[-4447.72,43.51],"6-118-13":[-4632.72,45.98],"6-118-14":[-5518.07,1460.13],"6-118-15":[-5586.61,1395.62],"6-118-16":[-6399.77,30.44],"6-118-17":[-5185.87,30.2],"6-118-18":[-5078.26,24.25],"6-118-19":[-5133.45,23.71],"6-118-20":[-5212.89,1371.43],"6-118-21":[-7297.49,1596.89],"6-118-22":[-4793.53,1262.63],"6-118-23":[-4385.58,466.32],"6-118-24":[-3305.66,72.19],"6-118-25":[-3117.27,81.26],"6-118-26":[-4793.75,84.41],"6-118-27":[-4811.89,769.24],"6-118-28":[-5121.46,987.57],"6-118-29":[-8895.66,337.7],"6-118-30":[-6033.07,2324.77],"6-118-31":[-6318.75,396.72],"6-118-32":[-4831.85,435.72],"6-118-33":[-4739.98,2388.16],"6-118-34":[-5400.43,419.14],"6-118-35":[-6063.11,1094.58],"6-118-36":[-8213.52,866.24],"6-118-37":[-6352.85,127.95],"6-118-38":[-5939.1,126.07],"6-118-39":[-6146.39,114.91],"6-118-40":[-5790.02,468.23],"6-118-41":[-6284.8,1263.13],"6-118-42":[-6559.51,1616.85],"6-118-43":[-6354.62,1396.93],"6-118-44":[-6695.74,40.32],"6-118-45":[-8749.81,22.42],"6-118-46":[-9912.03,6.94],"6-118-47":[-9502.69,-3.98],"6-118-48":[-9591.92,1305.84],"6-118-49":[-3423.16,1389.12],"6-118-50":[-1280.44,-10.19],"6-118-51":[-927.75,-20.43],"6-118-52":[-1013.08,982.96],"6-118-53":[-160.55,1825.48],"6-118-54":[-85.12,1590.07],"6-118-55":[-101.8,1107.21],"6-118-56":[-107,1522.76],"6-118-57":[-31.01,2294.89],"6-118-58":[-31.98,2319.46],"6-118-59":[-91.3,2399.61],"6-118-60":[-2793.15,2218.73],"6-118-61":[-2881.88,2447.37],"6-118-62":[-3368.66,2959.26],"6-118-63":[-4393.23,3089.37],"6-119-0":[-54.55,760],"6-119-1":[6.4,1341.53],"5-59-0":[-129.02,1341.53],"6-119-2":[-449.12,2688.82],"6-119-3":[-3165.15,3402.83],"5-59-1":[-3165.15,3402.83],"4-29-0":[-3165.15,3402.83],"6-119-4":[-610.56,1715.86],"6-119-5":[-1075.15,1249.44],"5-59-2":[-1075.15,1715.86],"6-119-6":[-1268.32,341.83],"6-119-7":[-1805.28,795.87],"5-59-3":[-2295.81,795.87],"4-29-1":[-2295.81,1715.86],"3-14-0":[-3165.15,3402.83],"6-119-8":[-3519.24,1098.37],"6-119-9":[-3570.74,1766.68],"5-59-4":[-3936.44,1766.68],"6-119-10":[-3550.32,1878.57],"6-119-11":[-6470.11,935.54],"5-59-5":[-6470.11,1878.57],"4-29-2":[-6470.11,2390.56],"6-119-12":[-4628.34,2005.12],"6-119-13":[-4845.41,2477.12],"5-59-6":[-4845.41,2477.12],"6-119-14":[-5636.3,1817.92],"6-119-15":[-5622.88,33.35],"5-59-7":[-5636.3,1817.92],"4-29-3":[-6446.55,2477.12],"3-14-1":[-6647.87,2830.65],"6-119-16":[-5611.37,23.39],"6-119-17":[-5516.39,17.38],"5-59-8":[-6399.77,30.44],"6-119-18":[-5476.01,11.21],"6-119-19":[-5309.53,11.2],"5-59-9":[-5476.01,24.25],"4-29-4":[-6399.77,2197.03],"6-119-20":[-5347.62,19.59],"6-119-21":[-5080.75,25.03],"5-59-10":[-7297.49,1596.89],"6-119-22":[-5020.66,34.94],"6-119-23":[-4903.3,56.89],"5-59-11":[-5020.66,1262.63],"4-29-5":[-7297.49,1608.21],"3-14-2":[-7297.49,3800.26],"6-119-24":[-3435.85,58.63],"6-119-25":[-3571.58,64.62],"5-59-12":[-3571.58,81.26],"6-119-26":[-4795.19,76.13],"6-119-27":[-4536.58,78.92],"5-59-13":[-4811.89,769.24],"4-29-6":[-5262.69,1323.71],"6-119-28":[-5330.86,1020.41],"6-119-29":[-7295.87,2736.56],"5-59-14":[-8895.66,2736.56],"6-119-30":[-3608.32,909.88],"6-119-31":[-3154.36,118.67],"5-59-15":[-6318.75,2324.77],"4-29-7":[-8895.66,4112.66],"3-14-3":[-8895.66,4766.85],"6-119-32":[-3114.22,260.46],"6-119-33":[-4255.39,960.88],"5-59-16":[-4831.85,2388.16],"6-119-34":[-5297.69,2782.57],"6-119-35":[-6052.62,1115.42],"5-59-17":[-6063.11,2782.57],"4-29-8":[-7126.95,4188.78],"6-119-36":[-6402.6,138.91],"6-119-37":[-6824.02,131.76],"5-59-18":[-8213.52,866.24],"6-119-38":[-6498.7,123.47],"6-119-39":[-5918.74,110.92],"5-59-19":[-6498.7,126.07],"4-29-9":[-9875.02,1325.23],"3-14-4":[-10883.73,5227.39],"6-119-40":[-6128.03,99.59],"6-119-41":[-6519.49,84.71],"5-59-20":[-6519.49,1263.13],"6-119-42":[-9176.7,74.04],"6-119-43":[-10680.3,59.16],"5-59-21":[-10680.3,1616.85],"4-29-10":[-10680.3,1629.02],"6-119-44":[-6763.45,40.96],"6-119-45":[-6519.66,25.39],"5-59-22":[-8749.81,40.96],"6-119-46":[-9445.89,10.69],"6-119-47":[-6123.65,-2.2],"5-59-23":[-9912.03,10.69],"4-29-11":[-9912.03,2241.03],"3-14-5":[-10680.3,3720.25],"6-119-48":[-10853.54,-8.1],"6-119-49":[-8574.57,1748.92],"5-59-24":[-10853.54,1748.92],"6-119-50":[-1223.57,2383.12],"6-119-51":[-217.21,1893.12],"5-59-25":[-1280.44,2383.12],"4-29-12":[-10853.54,2383.12],"6-119-52":[-433.74,838.54],"6-119-53":[-451.42,1902.57],"5-59-26":[-1013.08,1902.57],"6-119-54":[-84.63,1806.68],"6-119-55":[-101.06,1131.36],"5-59-27":[-101.8,1806.68],"4-29-13":[-1013.08,2398.56],"3-14-6":[-10853.54,2886.75],"6-119-56":[-106.67,1594.21],"6-119-57":[-31.01,2260.16],"5-59-28":[-107,2294.89],"6-119-58":[-40.57,2260.16],"6-119-59":[-122.46,2352.82],"5-59-29":[-122.46,2399.61],"4-29-14":[-122.46,2481.96],"6-119-60":[-2866.22,3169.82],"6-119-61":[-2914.69,2470.74],"5-59-30":[-2914.69,3169.82],"6-119-62":[-3553,2967.24],"6-119-63":[-4413.73,3091.37],"5-59-31":[-4413.73,3091.37],"4-29-15":[-4427.28,3169.82],"3-14-7":[-4506.77,3169.82],"6-120-0":[-55.55,724.25],"6-120-1":[5.52,1874.12],"6-120-2":[-955.47,2936.62],"6-120-3":[-2180.06,3414.83],"6-120-4":[-69.75,2856.44],"6-120-5":[-897.88,2143.79],"6-120-6":[-1157.78,2764.3],"6-120-7":[-2619.95,1481.77],"6-120-8":[-3296.34,1454.04],"6-120-9":[-3345.62,1757.61],"6-120-10":[-6609.18,947.68],"6-120-11":[-6590.7,2605.13],"6-120-12":[-5687.86,3631.59],"6-120-13":[-5276.6,3468.03],"6-120-14":[-5872.65,40.12],"6-120-15":[-5614.35,24.95],"6-120-16":[-5664,17.95],"6-120-17":[-5402.66,7.43],"6-120-18":[-5497,3],"6-120-19":[-5339.46,7.47],"6-120-20":[-4782.38,525.64],"6-120-21":[-4754.25,112.06],"6-120-22":[-4204.44,41.18],"6-120-23":[-3361.51,128.34],"6-120-24":[-2901.96,320.52],"6-120-25":[-4792.78,312.66],"6-120-26":[-5489.9,62.27],"6-120-27":[-4823.71,320.6],"6-120-28":[-5326.13,2329.59],"6-120-29":[-4282.44,1183.15],"6-120-30":[-2845.84,307.69],"6-120-31":[-3113.14,110.31],"6-120-32":[-3457.59,118.16],"6-120-33":[-4809.47,128.82],"6-120-34":[-5306.33,1251.14],"6-120-35":[-5928.98,2387.59],"6-120-36":[-6390.47,264.39],"6-120-37":[-6457.12,130.22],"6-120-38":[-6076.57,121.69],"6-120-39":[-5927.65,115.94],"6-120-40":[-5955.92,105.9],"6-120-41":[-6311.98,90.52],"6-120-42":[-6153.64,74.62],"6-120-43":[-5805.65,495.66],"6-120-44":[-5548.65,48.16],"6-120-45":[-6239.76,25.68],"6-120-46":[-7151.59,12.37],"6-120-47":[-6409.75,-0.49],"6-120-48":[-8360.13,-6.4],"6-120-49":[-7969.09,-10.64],"6-120-50":[-7897.4,3297.03],"6-120-51":[-1959.34,3585.59],"6-120-52":[-113.8,2516.12],"6-120-53":[-197.28,960.68],"6-120-54":[-84.73,1792.6],"6-120-55":[-104.1,1485.04],"6-120-56":[-112.02,1627.11],"6-120-57":[-24.77,2656.26],"6-120-58":[-47.85,2268.9],"6-120-59":[-172.93,2732.99],"6-120-60":[-3015.38,3191.81],"6-120-61":[-3572.17,2726.57],"6-120-62":[-4035.09,2977.2],"6-120-63":[-4362.3,3090.38],"6-121-0":[-56.54,784.16],"6-121-1":[-119.82,2728.02],"5-60-0":[-119.82,2728.02],"6-121-2":[-1558.73,4094.57],"6-121-3":[-1548.62,2241.19],"5-60-1":[-2180.06,4094.57],"6-121-4":[-1757.29,3832.91],"6-121-5":[-2241.05,3569.68],"5-60-2":[-2241.05,3832.91],"6-121-6":[-1300.6,2695.9],"6-121-7":[-2708.34,1052.69],"5-60-3":[-2708.34,2764.3],"6-121-8":[-3358.21,1653.57],"6-121-9":[-4131.5,1415.31],"5-60-4":[-4131.5,1757.61],"6-121-10":[-4858.1,1872.79],"6-121-11":[-5472.05,3277.23],"5-60-5":[-6609.18,3277.23],"6-121-12":[-5350.87,4774.23],"6-121-13":[-5927.84,28.14],"5-60-6":[-5927.84,4774.23],"6-121-14":[-7062.03,18.42],"6-121-15":[-5638.62,16.76],"5-60-7":[-7062.03,40.12],"6-121-16":[-5398.32,7.27],"6-121-17":[-5249.74,-0.26],"5-60-8":[-5664,17.95],"6-121-18":[-5445.67,-2.7],"6-121-19":[-4935,-0.57],"5-60-9":[-5497,7.47],"6-121-20":[-2281.98,2.2],"6-121-21":[-2412.8,8.56],"5-60-10":[-4782.38,525.64],"6-121-22":[-2319.41,15.96],"6-121-23":[-2554.81,30.18],"5-60-11":[-4204.44,128.34],"6-121-24":[-3725.28,107.41],"6-121-25":[-4952.98,278.42],"5-60-12":[-4952.98,320.52],"6-121-26":[-5302.77,60.14],"6-121-27":[-8432.48,310],"5-60-13":[-8432.48,320.6],"6-121-28":[-8445.91,1874.06],"6-121-29":[-4394.15,798.37],"5-60-14":[-8445.91,2329.59],"6-121-30":[-4214.87,673.97],"6-121-31":[-4909.25,96.35],"5-60-15":[-4909.25,673.97],"6-121-32":[-4524.53,101.5],"6-121-33":[-4708.54,1195.58],"5-60-16":[-4809.47,1195.58],"6-121-34":[-5263.16,839.37],"6-121-35":[-5431.78,1980.07],"5-60-17":[-5928.98,2387.59],"6-121-36":[-5881.53,241.22],"6-121-37":[-5906.24,129.2],"5-60-18":[-6457.12,264.39],"6-121-38":[-6153.29,122.21],"6-121-39":[-5665.94,116.7],"5-60-19":[-6153.29,122.21],"6-121-40":[-6068.98,106.12],"6-121-41":[-6769.5,94.44],"5-60-20":[-6769.5,106.12],"6-121-42":[-6326.71,82.35],"6-121-43":[-6475.65,66.27],"5-60-21":[-6475.65,495.66],"6-121-44":[-6585.85,55.75],"6-121-45":[-5665.02,35.28],"5-60-22":[-6585.85,55.75],"6-121-46":[-5980.55,21.22],"6-121-47":[-8565.41,3.98],"5-60-23":[-8565.41,21.22],"6-121-48":[-7688.98,-3.49],"6-121-49":[-6094.09,-8.06],"5-60-24":[-8360.13,-3.49],"6-121-50":[-7925.02,-10.84],"6-121-51":[-7262.98,4714.21],"5-60-25":[-7925.02,4714.21],"6-121-52":[-1254.34,3173.24],"6-121-53":[-279.33,1760.54],"5-60-26":[-1254.34,3173.24],"6-121-54":[-88.46,1430.3],"6-121-55":[-106.46,1636.79],"5-60-27":[-106.46,1792.6],"6-121-56":[-114.63,1037.69],"6-121-57":[-117.59,2620.78],"5-60-28":[-117.59,2656.26],"6-121-58":[-116.47,3433.82],"6-121-59":[-326.4,3317.92],"5-60-29":[-326.4,3433.82],"6-121-60":[-2852.26,2320.2],"6-121-61":[-3608.19,4077.78],"5-60-30":[-3608.19,4077.78],"6-121-62":[-4027.06,2984.14],"6-121-63":[-4301.84,3088.17],"5-60-31":[-4362.3,3090.38],"6-122-0":[-56.54,1014.6],"6-122-1":[-109.77,3546.5],"6-122-2":[-1210.31,4044.71],"6-122-3":[-1409.05,4.81],"6-122-4":[-1085.99,2572.72],"6-122-5":[-1350.81,3255.72],"6-122-6":[-1368.16,3402.98],"6-122-7":[-2794.56,1528.57],"6-122-8":[-3475.81,2107.47],"6-122-9":[-4413.25,1582.28],"6-122-10":[-5290.8,1233.67],"6-122-11":[-5917.39,932.54],"6-122-12":[-5796.65,850.98],"6-122-13":[-4791.57,472.87],"6-122-14":[-9889.98,16.34],"6-122-15":[-5992.39,6.88],"6-122-16":[-5621.81,-0.71],"6-122-17":[-5005.96,-4.25],"6-122-18":[-4194.8,-5.37],"6-122-19":[-3160.01,-6.19],"6-122-20":[-3411.31,-2.87],"6-122-21":[-3636.98,2.46],"6-122-22":[-3840.52,10.62],"6-122-23":[-3781.57,22.49],"6-122-24":[-4206.98,1627.03],"6-122-25":[-6101.98,333.75],"6-122-26":[-5952.12,54.72],"6-122-27":[-9079.48,60.99],"6-122-28":[-8454.89,738.31],"6-122-29":[-5441.79,72.29],"6-122-30":[-4625.54,81.32],"6-122-31":[-4641.51,86.88],"6-122-32":[-4517.57,92.44],"6-122-33":[-4923.32,106.03],"6-122-34":[-5332.06,119.42],"6-122-35":[-5557.99,866.32],"6-122-36":[-5705.71,218.89],"6-122-37":[-5889.42,127.16],"6-122-38":[-5897.43,340.77],"6-122-39":[-6007.07,1689.03],"6-122-40":[-6305.73,106.61],"6-122-41":[-6283.84,96.95],"6-122-42":[-6920.2,82.62],"6-122-43":[-7795.55,66.13],"6-122-44":[-6961.36,57.54],"6-122-45":[-6797.87,44.27],"6-122-46":[-6318.08,29.21],"6-122-47":[-7616.71,13.47],"6-122-48":[-10312.48,-2.93],"6-122-49":[-6228.89,-6.28],"6-122-50":[-6196.34,517.88],"6-122-51":[-6991.8,775.99],"6-122-52":[-4261.65,866.52],"6-122-53":[-1470.63,1246.67],"6-122-54":[-91.49,1594.29],"6-122-55":[-105.7,1756.51],"6-122-56":[-117.38,1533.57],"6-122-57":[-60.46,3075.8],"6-122-58":[-117.89,3148.6],"6-122-59":[-1054.95,2551.83],"6-122-60":[-2851.46,209.78],"6-122-61":[-3431.75,3800.64],"6-122-62":[-3988.49,3358.99],"6-122-63":[-4295.78,3084.48],"6-123-0":[-56.54,1244.65],"6-123-1":[-232.32,3676.75],"5-61-0":[-232.32,3676.75],"6-123-2":[-3382.75,4354.84],"6-123-3":[-1294.36,5.41],"5-61-1":[-3382.75,4354.84],"4-30-0":[-3382.75,4354.84],"6-123-4":[-2791.43,3682.29],"6-123-5":[-1170.46,3170.38],"5-61-2":[-2791.43,3682.29],"6-123-6":[-2127.24,3838.38],"6-123-7":[-3347.99,1680.33],"5-61-3":[-3347.99,3838.38],"4-30-1":[-3347.99,3838.38],"6-123-8":[-3635.38,1646.59],"6-123-9":[-3647.76,1328.47],"5-61-4":[-4413.25,2107.47],"6-123-10":[-5327.86,1210.93],"6-123-11":[-5689.06,20.59],"5-61-5":[-5917.39,1233.67],"4-30-2":[-6609.18,3277.23],"6-123-12":[-5306.98,744.81],"6-123-13":[-1323.94,597.84],"5-61-6":[-5796.65,850.98],"6-123-14":[-3360.99,467.59],"6-123-15":[-4513.17,2234.46],"5-61-7":[-9889.98,2234.46],"4-30-3":[-9889.98,4774.23],"6-123-16":[-4699.05,2752.59],"6-123-17":[-4390.06,-6.72],"5-61-8":[-5621.81,2752.59],"6-123-18":[-3204.99,-8.71],"6-123-19":[-3164.59,-8.81],"5-61-9":[-4194.8,-5.37],"4-30-4":[-5664,2752.59],"6-123-20":[-4217.52,33.69],"6-123-21":[-4274.01,312.86],"5-61-10":[-4274.01,312.86],"6-123-22":[-3827.4,1.5],"6-123-23":[-3830.58,209.11],"5-61-11":[-3840.52,209.11],"4-30-5":[-4782.38,525.64],"6-123-24":[-7245.18,1610.47],"6-123-25":[-7349.14,684.13],"5-61-12":[-7349.14,1627.03],"6-123-26":[-6517.45,1790.76],"6-123-27":[-9033.13,917.4],"5-61-13":[-9079.48,1790.76],"4-30-6":[-9079.48,1790.76],"6-123-28":[-5951.42,556.87],"6-123-29":[-5497.1,68.93],"5-61-14":[-8454.89,738.31],"6-123-30":[-4910.82,72.06],"6-123-31":[-4464.67,236.83],"5-61-15":[-4910.82,236.83],"4-30-7":[-8454.89,2329.59],"6-123-32":[-4593.18,105.9],"6-123-33":[-5101.41,189.87],"5-61-16":[-5101.41,189.87],"6-123-34":[-5266.67,289.81],"6-123-35":[-5291.73,608.86],"5-61-17":[-5557.99,866.32],"4-30-8":[-5928.98,2387.59],"6-123-36":[-5767.79,1017.74],"6-123-37":[-6472.3,1941.75],"5-61-18":[-6472.3,1941.75],"6-123-38":[-5832.98,717.25],"6-123-39":[-9233.31,1664.47],"5-61-19":[-9233.31,1689.03],"4-30-9":[-9233.31,1941.75],"6-123-40":[-6592.72,309.11],"6-123-41":[-6481.34,105.67],"5-61-20":[-6592.72,309.11],"6-123-42":[-6303.27,357.87],"6-123-43":[-6844.66,77.86],"5-61-21":[-7795.55,357.87],"4-30-10":[-7795.55,495.66],"6-123-44":[-7086.51,65.38],"6-123-45":[-5939.97,51.14],"5-61-22":[-7086.51,65.38],"6-123-46":[-6464.77,41.96],"6-123-47":[-5894.23,2939.6],"5-61-23":[-7616.71,2939.6],"4-30-11":[-8565.41,2939.6],"6-123-48":[-6765.22,2088.42],"6-123-49":[-7225.31,566.58],"5-61-24":[-10312.48,2088.42],"6-123-50":[-7023.81,649.83],"6-123-51":[-7022.87,934.21],"5-61-25":[-7023.81,934.21],"4-30-12":[-10312.48,4714.21],"6-123-52":[-4126.33,-32.37],"6-123-53":[-3406.12,1230.43],"5-61-26":[-4261.65,1246.67],"6-123-54":[-95.58,1329.47],"6-123-55":[-108.17,1683.59],"5-61-27":[-108.17,1756.51],"4-30-13":[-4261.65,3173.24],"6-123-56":[-118.68,1650.33],"6-123-57":[-116.81,3530.38],"5-61-28":[-118.68,3530.38],"6-123-58":[-159.87,2686.35],"6-123-59":[-2076.04,3368.3],"5-61-29":[-2076.04,3368.3],"4-30-14":[-2076.04,3530.38],"6-123-60":[-2853.15,-47.93],"6-123-61":[-3435.37,4324.92],"5-61-30":[-3435.37,4324.92],"6-123-62":[-3977.47,3260.29],"6-123-63":[-4287.81,3084.24],"5-61-31":[-4295.78,3358.99],"4-30-15":[-4362.3,4324.92],"6-124-0":[-56.54,1301.6],"6-124-1":[-1191.92,3708.01],"6-124-2":[-1848.48,3644.05],"6-124-3":[-995.03,5.75],"6-124-4":[-1020.34,2277.07],"6-124-5":[-1133.6,1872.18],"6-124-6":[-2735.85,3841.38],"6-124-7":[-3498.04,1617.82],"6-124-8":[-3588.31,1409.69],"6-124-9":[-4799.27,2305.88],"6-124-10":[-5503.23,2164.88],"6-124-11":[-6053.23,14.63],"6-124-12":[-5956.51,14.32],"6-124-13":[-796.01,475.72],"6-124-14":[-1475.84,8.76],"6-124-15":[-1676.68,2157.34],"6-124-16":[-2008.55,3583.72],"6-124-17":[-2140.02,1384.49],"6-124-18":[-2382.68,-6.47],"6-124-19":[-3086.24,3.63],"6-124-20":[-4605.92,-7.51],"6-124-21":[-4715.27,-4.76],"6-124-22":[-4322.05,-0.84],"6-124-23":[-7577.19,199.74],"6-124-24":[-7373.16,963.85],"6-124-25":[-4229.08,1044.88],"6-124-26":[-3856.45,38.19],"6-124-27":[-4605.43,656.26],"6-124-28":[-6193.84,78.61],"6-124-29":[-5618.92,57.21],"6-124-30":[-4139.69,61.69],"6-124-31":[-4704.02,110.26],"6-124-32":[-4720.62,114.26],"6-124-33":[-4885.21,199.85],"6-124-34":[-5006.81,1181.19],"6-124-35":[-5183.38,353.36],"6-124-36":[-5749.76,447.27],"6-124-37":[-5836.57,1039.27],"6-124-38":[-6631,1137.87],"6-124-39":[-6170.25,895.97],"6-124-40":[-6352.28,131.97],"6-124-41":[-6401.53,105.92],"6-124-42":[-6323.16,96.09],"6-124-43":[-6035.82,85.75],"6-124-44":[-6040.28,75.44],"6-124-45":[-6821.76,56.69],"6-124-46":[-7017.19,1441.5],"6-124-47":[-6967.66,3719.73],"6-124-48":[-6885.19,2290.2],"6-124-49":[-6816.74,-3.78],"6-124-50":[-7342.18,535.73],"6-124-51":[-4825.77,-20.62],"6-124-52":[-4087.83,-35.05],"6-124-53":[-3238.86,2185.88],"6-124-54":[-98.04,2328.88],"6-124-55":[-110.57,1461.98],"6-124-56":[-118.68,1628.36],"6-124-57":[-117.84,3544.4],"6-124-58":[-196.58,1962.19],"6-124-59":[-2437.77,2252.06],"6-124-60":[-2814.21,-48.57],"6-124-61":[-3412.93,3812.59],"6-124-62":[-4012.16,3705.94],"6-124-63":[-4284.77,3085.39],"6-125-0":[-56.54,1317.16],"6-125-1":[-572.69,3995.42],"5-62-0":[-1191.92,3995.42],"6-125-2":[-1311.11,2953.97],"6-125-3":[-964.64,6.39],"5-62-1":[-1848.48,3644.05],"6-125-4":[-964.64,6.49],"6-125-5":[-641.47,5.32],"5-62-2":[-1133.6,2277.07],"6-125-6":[-2768.91,6.47],"6-125-7":[-4295,1111.24],"5-62-3":[-4295,3841.38],"6-125-8":[-4019.88,1048.77],"6-125-9":[-4953.31,1518.99],"5-62-4":[-4953.31,2305.88],"6-125-10":[-5798.48,1665.46],"6-125-11":[-5866.14,6.86],"5-62-5":[-6053.23,2164.88],"6-125-12":[-5760.7,8.77],"6-125-13":[-4633.32,953.56],"5-62-6":[-5956.51,953.56],"6-125-14":[-1469.18,5.28],"6-125-15":[-2476.63,-2.39],"5-62-7":[-2476.63,2157.34],"6-125-16":[-2350.31,2480.82],"6-125-17":[-1065.55,2703.39],"5-62-8":[-2350.31,3583.72],"6-125-18":[-2048.5,2435.06],"6-125-19":[-2432.05,771.91],"5-62-9":[-3086.24,2435.06],"6-125-20":[-3878.8,43.61],"6-125-21":[-4100.08,-6.04],"5-62-10":[-4715.27,43.61],"6-125-22":[-5196.44,-3.42],"6-125-23":[-7758.52,4.64],"5-62-11":[-7758.52,199.74],"6-125-24":[-4709.36,513.79],"6-125-25":[-3752.38,24.94],"5-62-12":[-7373.16,1044.88],"6-125-26":[-6621.91,30.26],"6-125-27":[-5178.35,388.48],"5-62-13":[-6621.91,656.26],"6-125-28":[-5685.04,48.13],"6-125-29":[-5834.84,54.5],"5-62-14":[-6193.84,78.61],"6-125-30":[-5675.27,56.85],"6-125-31":[-4961.08,80.57],"5-62-15":[-5675.27,110.26],"6-125-32":[-5122.01,216.12],"6-125-33":[-5296.87,448.44],"5-62-16":[-5296.87,448.44],"6-125-34":[-5462.36,652.65],"6-125-35":[-5659.88,103.05],"5-62-17":[-5659.88,1181.19],"6-125-36":[-5926.4,124.13],"6-125-37":[-5839.93,130.49],"5-62-18":[-5926.4,1039.27],"6-125-38":[-5706.76,131.46],"6-125-39":[-5894.32,288.83],"5-62-19":[-6631,1137.87],"6-125-40":[-6238.28,107.87],"6-125-41":[-6426.06,104.69],"5-62-20":[-6426.06,131.97],"6-125-42":[-6389.68,97.22],"6-125-43":[-5810.29,89.45],"5-62-21":[-6389.68,97.22],"6-125-44":[-6349.71,816.34],"6-125-45":[-6401.67,2517.08],"5-62-22":[-6821.76,2517.08],"6-125-46":[-6548.04,2863.4],"6-125-47":[-7577.65,2605.15],"5-62-23":[-7577.74,3719.73],"6-125-48":[-7742.5,11.03],"6-125-49":[-6175.39,-4.71],"5-62-24":[-7742.5,2290.2],"6-125-50":[-7297.08,855.48],"6-125-51":[-4515.77,-21.91],"5-62-25":[-7342.18,855.48],"6-125-52":[-4005.44,-37.16],"6-125-53":[-3534.25,1715.44],"5-62-26":[-4087.83,2185.88],"6-125-54":[-99.71,1567.95],"6-125-55":[-113.95,1055.77],"5-62-27":[-113.95,2328.88],"6-125-56":[-118.23,1132.25],"6-125-57":[-119.6,-21.59],"5-62-28":[-119.6,3544.4],"6-125-58":[-269.84,-35.5],"6-125-59":[-2414.97,-52.66],"5-62-29":[-2437.77,2252.06],"6-125-60":[-2787.87,-48.63],"6-125-61":[-3242.97,2586.73],"5-62-30":[-3412.93,3812.59],"6-125-62":[-4002.19,3991.97],"6-125-63":[-4279.77,3087.55],"5-62-31":[-4284.77,3991.97],"6-126-0":[-56.54,1326.01],"6-126-1":[6.39,4136.33],"6-126-2":[-1110.71,3023.78],"6-126-3":[-832.6,7.32],"6-126-4":[-882.14,5.6],"6-126-5":[-714.62,4.51],"6-126-6":[-3402.46,5.95],"6-126-7":[-3875.2,1644.02],"6-126-8":[-5179.44,1334.46],"6-126-9":[-4806.11,1348.08],"6-126-10":[-5608.88,360.68],"6-126-11":[-5709.67,3.75],"6-126-12":[-5642.23,11.04],"6-126-13":[-5402.41,663.5],"6-126-14":[-3878.3,1.9],"6-126-15":[-3026,-2.13],"6-126-16":[-2994.81,-6.98],"6-126-17":[-3629.85,1723.22],"6-126-18":[-3098.11,2690.97],"6-126-19":[-3270.73,861.23],"6-126-20":[-4248.84,-6.36],"6-126-21":[-4689.77,-4.68],"6-126-22":[-4958.08,-4.14],"6-126-23":[-5774.74,4.18],"6-126-24":[-5415.15,260.52],"6-126-25":[-4431.02,483.23],"6-126-26":[-5087.7,174.6],"6-126-27":[-4511.06,229.72],"6-126-28":[-5530.34,40.97],"6-126-29":[-5978.96,401.29],"6-126-30":[-5867.38,423.39],"6-126-31":[-5805.77,165.51],"6-126-32":[-6483.05,56],"6-126-33":[-6671.64,66],"6-126-34":[-6545.42,76.55],"6-126-35":[-6624.72,95.02],"6-126-36":[-5934.9,297.72],"6-126-37":[-5555.83,122.31],"6-126-38":[-5267.64,587.24],"6-126-39":[-5478.95,124.15],"6-126-40":[-6264.23,107.99],"6-126-41":[-6215.65,102.99],"6-126-42":[-5936.66,96.7],"6-126-43":[-5953.59,87],"6-126-44":[-5339.24,921.24],"6-126-45":[-5656.73,2784.98],"6-126-46":[-6788.78,1743.24],"6-126-47":[-7214.84,29.21],"6-126-48":[-6130.94,11.4],"6-126-49":[-7290.53,-4.57],"6-126-50":[-7355,491.49],"6-126-51":[-5551.08,-26.38],"6-126-52":[-4441.49,-37.37],"6-126-53":[-3701.8,418.22],"6-126-54":[-122.63,1368.07],"6-126-55":[-115.57,1359.45],"6-126-56":[-120.87,1643.02],"6-126-57":[-122.6,-15.98],"6-126-58":[-624.79,-39.61],"6-126-59":[-2268.14,-52.64],"6-126-60":[-2705.49,-48.23],"6-126-61":[-3105.89,3164.9],"6-126-62":[-4043.65,4009.42],"6-126-63":[-4253.65,3089.77],"6-127-0":[-56.54,1334.33],"6-127-1":[-210.07,3234.37],"5-63-0":[-210.07,4136.33],"6-127-2":[-982.23,1050.27],"6-127-3":[-866.89,8.63],"5-63-1":[-1110.71,3023.78],"4-31-0":[-1848.48,4136.33],"6-127-4":[-866.24,6.79],"6-127-5":[-934.59,4.39],"5-63-2":[-934.59,6.79],"6-127-6":[-3725.21,612.64],"6-127-7":[-4050.17,1712.25],"5-63-3":[-4050.17,1712.25],"4-31-1":[-4295,3841.38],"3-15-0":[-4295,4354.84],"6-127-8":[-5328.81,1465.56],"6-127-9":[-4628.49,918.23],"5-63-4":[-5328.81,1465.56],"6-127-10":[-5971.35,11.47],"6-127-11":[-5641.74,3.44],"5-63-5":[-5971.35,360.68],"4-31-2":[-6053.23,2305.88],"6-127-12":[-5548.55,11.61],"6-127-13":[-5408.37,1210.91],"5-63-6":[-5642.23,1210.91],"6-127-14":[-5040.03,327.38],"6-127-15":[-3895.37,12.41],"5-63-7":[-5040.03,327.38],"4-31-3":[-5956.51,2157.34],"3-15-1":[-9889.98,4774.23],"2-7-0":[-9889.98,4774.23],"6-127-16":[-3066.41,-6.43],"6-127-17":[-4084.12,-10.68],"5-63-8":[-4084.12,1723.22],"6-127-18":[-4617.02,1681.88],"6-127-19":[-4460.78,-7.92],"5-63-9":[-4617.02,2690.97],"4-31-4":[-4617.02,3583.72],"6-127-20":[-4339.84,-7.92],"6-127-21":[-4478.85,40.71],"5-63-10":[-4689.77,40.71],"6-127-22":[-4490.23,-3.04],"6-127-23":[-4568.72,1.26],"5-63-11":[-5774.74,4.18],"4-31-5":[-7758.52,199.74],"3-15-2":[-7758.52,3583.72],"6-127-24":[-4711.94,9.72],"6-127-25":[-4084.66,1312.41],"5-63-12":[-5415.15,1312.41],"6-127-26":[-4195.61,981.61],"6-127-27":[-4943.02,64.11],"5-63-13":[-5087.7,981.61],"4-31-6":[-7373.16,1312.41],"6-127-28":[-5249.7,472.52],"6-127-29":[-5962.93,523.86],"5-63-14":[-5978.96,523.86],"6-127-30":[-6244.65,40.09],"6-127-31":[-5963.28,46.55],"5-63-15":[-6244.65,423.39],"4-31-7":[-6244.65,523.86],"3-15-3":[-9079.48,2329.59],"2-7-1":[-9079.48,4766.85],"1-3-0":[-9889.98,7512.84],"6-127-32":[-5882.89,50.53],"6-127-33":[-6530.92,57.98],"5-63-16":[-6671.64,66],"6-127-34":[-6610.51,69.75],"6-127-35":[-6659.17,86.05],"5-63-17":[-6659.17,95.02],"4-31-8":[-6671.64,1181.19],"6-127-36":[-6695.83,104.68],"6-127-37":[-5931.51,1069.23],"5-63-18":[-6695.83,1069.23],"6-127-38":[-5463.07,1371.15],"6-127-39":[-5548.25,108.66],"5-63-19":[-5548.25,1371.15],"4-31-9":[-6695.83,1371.15],"3-15-4":[-9233.31,2387.59],"6-127-40":[-6217.08,103.15],"6-127-41":[-6232.24,98.56],"5-63-20":[-6264.23,107.99],"6-127-42":[-6540.92,94.48],"6-127-43":[-5834.93,91.71],"5-63-21":[-6540.92,96.7],"4-31-10":[-6540.92,131.97],"6-127-44":[-5276.76,83.16],"6-127-45":[-5718.98,1759.88],"5-63-22":[-5718.98,2784.98],"6-127-46":[-6872.58,42.6],"6-127-47":[-7215.56,30.55],"5-63-23":[-7215.56,1743.24],"4-31-11":[-7577.65,3719.73],"3-15-5":[-8565.41,3719.73],"2-7-2":[-10883.73,5227.39],"6-127-48":[-6546.41,37.42],"6-127-49":[-7350.29,351.39],"5-63-24":[-7350.29,351.39],"6-127-50":[-7318.33,1130.9],"6-127-51":[-4299.75,-28.67],"5-63-25":[-7355,1130.9],"4-31-12":[-7742.5,2290.2],"6-127-52":[-4544.67,-37.45],"6-127-53":[-3726.9,-44.71],"5-63-26":[-4544.67,418.22],"6-127-54":[-175.46,962.23],"6-127-55":[-117.07,1527.58],"5-63-27":[-175.46,1527.58],"4-31-13":[-4544.67,2328.88],"3-15-6":[-10312.48,4714.21],"6-127-56":[-123.45,1789.28],"6-127-57":[-123.93,639.49],"5-63-28":[-123.93,1789.28],"6-127-58":[-1148.1,-47.82],"6-127-59":[-1910.34,-53.65],"5-63-29":[-2268.14,-39.61],"4-31-14":[-2437.77,3544.4],"6-127-60":[-2503.26,-48.22],"6-127-61":[-2903.07,1201.67],"5-63-30":[-3105.89,3164.9],"6-127-62":[-3966.1,3227.47],"6-127-63":[-4341.65,3092.98],"5-63-31":[-4341.65,4009.42],"4-31-15":[-4341.65,4009.42],"3-15-7":[-4362.3,4324.92],"2-7-3":[-10853.54,4714.21],"1-3-1":[-10883.73,7274.95],"0-1-0":[-10883.73,8777.15]} diff --git a/public/Cesium/Cesium.js b/public/Cesium/Cesium.js new file mode 100644 index 000000000..d475882f0 --- /dev/null +++ b/public/Cesium/Cesium.js @@ -0,0 +1,16264 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var Cesium=(()=>{var HSe=Object.create;var _9=Object.defineProperty;var zSe=Object.getOwnPropertyDescriptor;var KSe=Object.getOwnPropertyNames;var JSe=Object.getPrototypeOf,jSe=Object.prototype.hasOwnProperty;var E9=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Pu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qSe=(e,t)=>{for(var n in t)_9(e,n,{get:t[n],enumerable:!0})},wee=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of KSe(t))!jSe.call(e,o)&&o!==n&&_9(e,o,{get:()=>t[o],enumerable:!(i=zSe(t,o))||i.enumerable});return e};var y=(e,t,n)=>(n=e!=null?HSe(JSe(e)):{},wee(t||!e||!e.__esModule?_9(n,"default",{value:e,enumerable:!0}):n,e)),$Se=e=>wee(_9({},"__esModule",{value:!0}),e);var C=Pu(()=>{globalThis.CESIUM_WORKERS=atob("dmFyIENlc2l1bVdvcmtlcnM9KCgpPT57dmFyIGR4PU9iamVjdC5jcmVhdGU7dmFyIEdsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgbXg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgaHg9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7dmFyIF94PU9iamVjdC5nZXRQcm90b3R5cGVPZix5eD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBkcj0odD0+dHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6dHlwZW9mIFByb3h5PCJ1Ij9uZXcgUHJveHkodCx7Z2V0OihlLG4pPT4odHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6ZSlbbl19KTp0KShmdW5jdGlvbih0KXtpZih0eXBlb2YgcmVxdWlyZTwidSIpcmV0dXJuIHJlcXVpcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Rocm93IEVycm9yKCdEeW5hbWljIHJlcXVpcmUgb2YgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkJyl9KSxUMT10PT5lPT57dmFyIG49dFtlXTtpZihuKXJldHVybiBuKCk7dGhyb3cgbmV3IEVycm9yKCJNb2R1bGUgbm90IGZvdW5kIGluIGJ1bmRsZTogIitlKX07dmFyICQ9KHQsZSk9PigpPT4odCYmKGU9dCh0PTApKSxlKTt2YXIgWW49KHQsZSk9PigpPT4oZXx8dCgoZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZSksZS5leHBvcnRzKSxsZT0odCxlKT0+e2Zvcih2YXIgbiBpbiBlKUdsKHQsbix7Z2V0OmVbbl0sZW51bWVyYWJsZTohMH0pfSxPMT0odCxlLG4sbyk9PntpZihlJiZ0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKWZvcihsZXQgciBvZiBoeChlKSkheXguY2FsbCh0LHIpJiZyIT09biYmR2wodCxyLHtnZXQ6KCk9PmVbcl0sZW51bWVyYWJsZTohKG89bXgoZSxyKSl8fG8uZW51bWVyYWJsZX0pO3JldHVybiB0fTt2YXIgbXI9KHQsZSxuKT0+KG49dCE9bnVsbD9keChfeCh0KSk6e30sTzEoZXx8IXR8fCF0Ll9fZXNNb2R1bGU/R2wobiwiZGVmYXVsdCIse3ZhbHVlOnQsZW51bWVyYWJsZTohMH0pOm4sdCkpLGd4PXQ9Pk8xKEdsKHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0KTtmdW5jdGlvbiBBeCh0KXtyZXR1cm4gdCE9bnVsbH12YXIgbSxmdD0kKCgpPT57bT1BeH0pO2Z1bmN0aW9uIEdzKHQpe3RoaXMubmFtZT0iRGV2ZWxvcGVyRXJyb3IiLHRoaXMubWVzc2FnZT10O2xldCBlO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2gobil7ZT1uLnN0YWNrfXRoaXMuc3RhY2s9ZX12YXIgRCxIdD0kKCgpPT57ZnQoKTttKE9iamVjdC5jcmVhdGUpJiYoR3MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxHcy5wcm90b3R5cGUuY29uc3RydWN0b3I9R3MpO0dzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O0dzLnRocm93SW5zdGFudGlhdGlvbkVycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEdzKCJUaGlzIGZ1bmN0aW9uIGRlZmluZXMgYW4gaW50ZXJmYWNlIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4iKX07RD1Hc30pO2Z1bmN0aW9uIGJ4KHQpe3JldHVybmAke3R9IGlzIHJlcXVpcmVkLCBhY3R1YWwgdmFsdWUgd2FzIHVuZGVmaW5lZGB9ZnVuY3Rpb24gamModCxlLG4pe3JldHVybmBFeHBlY3RlZCAke259IHRvIGJlIHR5cGVvZiAke2V9LCBhY3R1YWwgdHlwZW9mIHdhcyAke3R9YH12YXIgJG4seSxXdD0kKCgpPT57ZnQoKTtIdCgpOyRuPXt9OyRuLnR5cGVPZj17fTskbi5kZWZpbmVkPWZ1bmN0aW9uKHQsZSl7aWYoIW0oZSkpdGhyb3cgbmV3IEQoYngodCkpfTskbi50eXBlT2YuZnVuYz1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJmdW5jdGlvbiIsdCkpfTskbi50eXBlT2Yuc3RyaW5nPWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJzdHJpbmciLHQpKX07JG4udHlwZU9mLm51bWJlcj1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRChqYyh0eXBlb2YgZSwibnVtYmVyIix0KSl9OyRuLnR5cGVPZi5udW1iZXIubGVzc1RoYW49ZnVuY3Rpb24odCxlLG4pe2lmKCRuLnR5cGVPZi5udW1iZXIodCxlKSxlPj1uKXRocm93IG5ldyBEKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiAke259LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07JG4udHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxuKXtpZigkbi50eXBlT2YubnVtYmVyKHQsZSksZT5uKXRocm93IG5ldyBEKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke259LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07JG4udHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUsbil7aWYoJG4udHlwZU9mLm51bWJlcih0LGUpLGU8PW4pdGhyb3cgbmV3IEQoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuICR7bn0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTskbi50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlLG4pe2lmKCRuLnR5cGVPZi5udW1iZXIodCxlKSxlPG4pdGhyb3cgbmV3IEQoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7bn0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTskbi50eXBlT2Yub2JqZWN0PWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJvYmplY3QiLHQpKX07JG4udHlwZU9mLmJvb2w9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJvb2xlYW4iKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJib29sZWFuIix0KSl9OyRuLnR5cGVPZi5iaWdpbnQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJpZ2ludCIpdGhyb3cgbmV3IEQoamModHlwZW9mIGUsImJpZ2ludCIsdCkpfTskbi50eXBlT2YubnVtYmVyLmVxdWFscz1mdW5jdGlvbih0LGUsbixvKXtpZigkbi50eXBlT2YubnVtYmVyKHQsbiksJG4udHlwZU9mLm51bWJlcihlLG8pLG4hPT1vKXRocm93IG5ldyBEKGAke3R9IG11c3QgYmUgZXF1YWwgdG8gJHtlfSwgdGhlIGFjdHVhbCB2YWx1ZXMgYXJlICR7bn0gYW5kICR7b31gKX07eT0kbn0pO3ZhciBSMT1ZbigoRUcsRTEpPT57dmFyIFNpPWZ1bmN0aW9uKHQpe3Q9PW51bGwmJih0PW5ldyBEYXRlKCkuZ2V0VGltZSgpKSx0aGlzLk49NjI0LHRoaXMuTT0zOTcsdGhpcy5NQVRSSVhfQT0yNTY3NDgzNjE1LHRoaXMuVVBQRVJfTUFTSz0yMTQ3NDgzNjQ4LHRoaXMuTE9XRVJfTUFTSz0yMTQ3NDgzNjQ3LHRoaXMubXQ9bmV3IEFycmF5KHRoaXMuTiksdGhpcy5tdGk9dGhpcy5OKzEsdC5jb25zdHJ1Y3Rvcj09QXJyYXk/dGhpcy5pbml0X2J5X2FycmF5KHQsdC5sZW5ndGgpOnRoaXMuaW5pdF9zZWVkKHQpfTtTaS5wcm90b3R5cGUuaW5pdF9zZWVkPWZ1bmN0aW9uKHQpe2Zvcih0aGlzLm10WzBdPXQ+Pj4wLHRoaXMubXRpPTE7dGhpcy5tdGk8dGhpcy5OO3RoaXMubXRpKyspe3ZhciB0PXRoaXMubXRbdGhpcy5tdGktMV1edGhpcy5tdFt0aGlzLm10aS0xXT4+PjMwO3RoaXMubXRbdGhpcy5tdGldPSgoKHQmNDI5NDkwMTc2MCk+Pj4xNikqMTgxMjQzMzI1Mzw8MTYpKyh0JjY1NTM1KSoxODEyNDMzMjUzK3RoaXMubXRpLHRoaXMubXRbdGhpcy5tdGldPj4+PTB9fTtTaS5wcm90b3R5cGUuaW5pdF9ieV9hcnJheT1mdW5jdGlvbih0LGUpe3ZhciBuLG8scjtmb3IodGhpcy5pbml0X3NlZWQoMTk2NTAyMTgpLG49MSxvPTAscj10aGlzLk4+ZT90aGlzLk46ZTtyO3ItLSl7dmFyIGk9dGhpcy5tdFtuLTFdXnRoaXMubXRbbi0xXT4+PjMwO3RoaXMubXRbbl09KHRoaXMubXRbbl1eKCgoaSY0Mjk0OTAxNzYwKT4+PjE2KSoxNjY0NTI1PDwxNikrKGkmNjU1MzUpKjE2NjQ1MjUpK3Rbb10rbyx0aGlzLm10W25dPj4+PTAsbisrLG8rKyxuPj10aGlzLk4mJih0aGlzLm10WzBdPXRoaXMubXRbdGhpcy5OLTFdLG49MSksbz49ZSYmKG89MCl9Zm9yKHI9dGhpcy5OLTE7cjtyLS0pe3ZhciBpPXRoaXMubXRbbi0xXV50aGlzLm10W24tMV0+Pj4zMDt0aGlzLm10W25dPSh0aGlzLm10W25dXigoKGkmNDI5NDkwMTc2MCk+Pj4xNikqMTU2NjA4Mzk0MTw8MTYpKyhpJjY1NTM1KSoxNTY2MDgzOTQxKS1uLHRoaXMubXRbbl0+Pj49MCxuKyssbj49dGhpcy5OJiYodGhpcy5tdFswXT10aGlzLm10W3RoaXMuTi0xXSxuPTEpfXRoaXMubXRbMF09MjE0NzQ4MzY0OH07U2kucHJvdG90eXBlLnJhbmRvbV9pbnQ9ZnVuY3Rpb24oKXt2YXIgdCxlPW5ldyBBcnJheSgwLHRoaXMuTUFUUklYX0EpO2lmKHRoaXMubXRpPj10aGlzLk4pe3ZhciBuO2Zvcih0aGlzLm10aT09dGhpcy5OKzEmJnRoaXMuaW5pdF9zZWVkKDU0ODkpLG49MDtuPHRoaXMuTi10aGlzLk07bisrKXQ9dGhpcy5tdFtuXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFtuKzFdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W25dPXRoaXMubXRbbit0aGlzLk1dXnQ+Pj4xXmVbdCYxXTtmb3IoO248dGhpcy5OLTE7bisrKXQ9dGhpcy5tdFtuXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFtuKzFdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W25dPXRoaXMubXRbbisodGhpcy5NLXRoaXMuTildXnQ+Pj4xXmVbdCYxXTt0PXRoaXMubXRbdGhpcy5OLTFdJnRoaXMuVVBQRVJfTUFTS3x0aGlzLm10WzBdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W3RoaXMuTi0xXT10aGlzLm10W3RoaXMuTS0xXV50Pj4+MV5lW3QmMV0sdGhpcy5tdGk9MH1yZXR1cm4gdD10aGlzLm10W3RoaXMubXRpKytdLHRePXQ+Pj4xMSx0Xj10PDw3JjI2MzY5Mjg2NDAsdF49dDw8MTUmNDAyMjczMDc1Mix0Xj10Pj4+MTgsdD4+PjB9O1NpLnByb3RvdHlwZS5yYW5kb21faW50MzE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCk+Pj4xfTtTaS5wcm90b3R5cGUucmFuZG9tX2luY2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCkqKDEvNDI5NDk2NzI5NSl9O1NpLnByb3RvdHlwZS5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCkqKDEvNDI5NDk2NzI5Nil9O1NpLnByb3RvdHlwZS5yYW5kb21fZXhjbD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJhbmRvbV9pbnQoKSsuNSkqKDEvNDI5NDk2NzI5Nil9O1NpLnByb3RvdHlwZS5yYW5kb21fbG9uZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMucmFuZG9tX2ludCgpPj4+NSxlPXRoaXMucmFuZG9tX2ludCgpPj4+NjtyZXR1cm4odCo2NzEwODg2NCtlKSooMS85MDA3MTk5MjU0NzQwOTkyKX07RTEuZXhwb3J0cz1TaX0pO3ZhciBTbSxDdCxWbCxTMSxQLEt0PSQoKCk9PntTbT1tcihSMSgpLDEpO1d0KCk7ZnQoKTtIdCgpO0N0PXt9O0N0LkVQU0lMT04xPS4xO0N0LkVQU0lMT04yPS4wMTtDdC5FUFNJTE9OMz0uMDAxO0N0LkVQU0lMT040PTFlLTQ7Q3QuRVBTSUxPTjU9MWUtNTtDdC5FUFNJTE9ONj0xZS02O0N0LkVQU0lMT043PTFlLTc7Q3QuRVBTSUxPTjg9MWUtODtDdC5FUFNJTE9OOT0xZS05O0N0LkVQU0lMT04xMD0xZS0xMDtDdC5FUFNJTE9OMTE9MWUtMTE7Q3QuRVBTSUxPTjEyPTFlLTEyO0N0LkVQU0lMT04xMz0xZS0xMztDdC5FUFNJTE9OMTQ9MWUtMTQ7Q3QuRVBTSUxPTjE1PTFlLTE1O0N0LkVQU0lMT04xNj0xZS0xNjtDdC5FUFNJTE9OMTc9MWUtMTc7Q3QuRVBTSUxPTjE4PTFlLTE4O0N0LkVQU0lMT04xOT0xZS0xOTtDdC5FUFNJTE9OMjA9MWUtMjA7Q3QuRVBTSUxPTjIxPTFlLTIxO0N0LkdSQVZJVEFUSU9OQUxQQVJBTUVURVI9Mzk4NjAwNDQxOGU1O0N0LlNPTEFSX1JBRElVUz02OTU1ZTU7Q3QuTFVOQVJfUkFESVVTPTE3Mzc0MDA7Q3QuU0lYVFlfRk9VUl9LSUxPQllURVM9NjQqMTAyNDtDdC5GT1VSX0dJR0FCWVRFUz00KjEwMjQqMTAyNCoxMDI0O0N0LnNpZ249TWF0aC5zaWduPz9mdW5jdGlvbihlKXtyZXR1cm4gZT0rZSxlPT09MHx8ZSE9PWU/ZTplPjA/MTotMX07Q3Quc2lnbk5vdFplcm89ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8tMToxfTtDdC50b1NOb3JtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9ZT8/MjU1LE1hdGgucm91bmQoKEN0LmNsYW1wKHQsLTEsMSkqLjUrLjUpKmUpfTtDdC5mcm9tU05vcm09ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPz8yNTUsQ3QuY2xhbXAodCwwLGUpL2UqMi0xfTtDdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuPU1hdGgubWF4KG4tZSwwKSxuPT09MD8wOkN0LmNsYW1wKCh0LWUpL24sMCwxKX07Q3Quc2luaD1NYXRoLnNpbmg/P2Z1bmN0aW9uKGUpe3JldHVybihNYXRoLmV4cChlKS1NYXRoLmV4cCgtZSkpLzJ9O0N0LmNvc2g9TWF0aC5jb3NoPz9mdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSkrTWF0aC5leHAoLWUpKS8yfTtDdC5sZXJwPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX07Q3QuUEk9TWF0aC5QSTtDdC5PTkVfT1ZFUl9QST0xL01hdGguUEk7Q3QuUElfT1ZFUl9UV089TWF0aC5QSS8yO0N0LlBJX09WRVJfVEhSRUU9TWF0aC5QSS8zO0N0LlBJX09WRVJfRk9VUj1NYXRoLlBJLzQ7Q3QuUElfT1ZFUl9TSVg9TWF0aC5QSS82O0N0LlRIUkVFX1BJX09WRVJfVFdPPTMqTWF0aC5QSS8yO0N0LlRXT19QST0yKk1hdGguUEk7Q3QuT05FX09WRVJfVFdPX1BJPTEvKDIqTWF0aC5QSSk7Q3QuUkFESUFOU19QRVJfREVHUkVFPU1hdGguUEkvMTgwO0N0LkRFR1JFRVNfUEVSX1JBRElBTj0xODAvTWF0aC5QSTtDdC5SQURJQU5TX1BFUl9BUkNTRUNPTkQ9Q3QuUkFESUFOU19QRVJfREVHUkVFLzM2MDA7Q3QudG9SYWRpYW5zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkZWdyZWVzIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0KkN0LlJBRElBTlNfUEVSX0RFR1JFRX07Q3QudG9EZWdyZWVzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyYWRpYW5zIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0KkN0LkRFR1JFRVNfUEVSX1JBRElBTn07Q3QuY29udmVydExvbmdpdHVkZVJhbmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhbmdsZSBpcyByZXF1aXJlZC4iKTtsZXQgZT1DdC5UV09fUEksbj10LU1hdGguZmxvb3IodC9lKSplO3JldHVybiBuPC1NYXRoLlBJP24rZTpuPj1NYXRoLlBJP24tZTpufTtDdC5jbGFtcFRvTGF0aXR1ZGVSYW5nZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIEN0LmNsYW1wKHQsLTEqQ3QuUElfT1ZFUl9UV08sQ3QuUElfT1ZFUl9UV08pfTtDdC5uZWdhdGl2ZVBpVG9QaT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQ+PS1DdC5QSSYmdDw9Q3QuUEk/dDpDdC56ZXJvVG9Ud29QaSh0K0N0LlBJKS1DdC5QSX07Q3QuemVyb1RvVHdvUGk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKHQ+PTAmJnQ8PUN0LlRXT19QSSlyZXR1cm4gdDtsZXQgZT1DdC5tb2QodCxDdC5UV09fUEkpO3JldHVybiBNYXRoLmFicyhlKTxDdC5FUFNJTE9OMTQmJk1hdGguYWJzKHQpPkN0LkVQU0lMT04xND9DdC5UV09fUEk6ZX07Q3QubW9kPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm0gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm4gaXMgcmVxdWlyZWQuIik7aWYoZT09PTApdGhyb3cgbmV3IEQoImRpdmlzb3IgY2Fubm90IGJlIDAuIik7cmV0dXJuIEN0LnNpZ24odCk9PT1DdC5zaWduKGUpJiZNYXRoLmFicyh0KTxNYXRoLmFicyhlKT90Oih0JWUrZSklZX07Q3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtpZighbSh0KSl0aHJvdyBuZXcgRCgibGVmdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicmlnaHQgaXMgcmVxdWlyZWQuIik7bj1uPz8wLG89bz8/bjtsZXQgcj1NYXRoLmFicyh0LWUpO3JldHVybiByPD1vfHxyPD1uKk1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKX07Q3QubGVzc1RoYW49ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJmaXJzdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgic2Vjb25kIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJhYnNvbHV0ZUVwc2lsb24gaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQtZTwtbn07Q3QubGVzc1RoYW5PckVxdWFscz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPG59O0N0LmdyZWF0ZXJUaGFuPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU+bn07Q3QuZ3JlYXRlclRoYW5PckVxdWFscz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPi1ufTtWbD1bMV07Q3QuZmFjdG9yaWFsPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwKXRocm93IG5ldyBEKCJBIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCBpcyByZXF1aXJlZC4iKTtsZXQgZT1WbC5sZW5ndGg7aWYodD49ZSl7bGV0IG49VmxbZS0xXTtmb3IobGV0IG89ZTtvPD10O28rKyl7bGV0IHI9bipvO1ZsLnB1c2gociksbj1yfX1yZXR1cm4gVmxbdF19O0N0LmluY3JlbWVudFdyYXA9ZnVuY3Rpb24odCxlLG4pe2lmKG49bj8/MCwhbSh0KSl0aHJvdyBuZXcgRCgibiBpcyByZXF1aXJlZC4iKTtpZihlPD1uKXRocm93IG5ldyBEKCJtYXhpbXVtVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gbWluaW11bVZhbHVlLiIpO3JldHVybisrdCx0PmUmJih0PW4pLHR9O0N0LmlzUG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD40Mjk0OTY3Mjk1KXRocm93IG5ldyBEKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kICgyXjMyKS0xIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0IT09MCYmKHQmdC0xKT09PTB9O0N0Lm5leHRQb3dlck9mVHdvPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwfHx0PjIxNDc0ODM2NDgpdGhyb3cgbmV3IEQoIkEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMl4zMSBpcyByZXF1aXJlZC4iKTtyZXR1cm4tLXQsdHw9dD4+MSx0fD10Pj4yLHR8PXQ+PjQsdHw9dD4+OCx0fD10Pj4xNiwrK3QsdH07Q3QucHJldmlvdXNQb3dlck9mVHdvPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwfHx0PjQyOTQ5NjcyOTUpdGhyb3cgbmV3IEQoIkEgbnVtYmVyIGJldHdlZW4gMCBhbmQgKDJeMzIpLTEgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHR8PXQ+PjEsdHw9dD4+Mix0fD10Pj40LHR8PXQ+PjgsdHw9dD4+MTYsdHw9dD4+MzIsdD0odD4+PjApLSh0Pj4+MSksdH07Q3QuY2xhbXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5udW1iZXIoInZhbHVlIix0KSx5LnR5cGVPZi5udW1iZXIoIm1pbiIsZSkseS50eXBlT2YubnVtYmVyKCJtYXgiLG4pLHQ8ZT9lOnQ+bj9uOnR9O1MxPW5ldyBTbS5kZWZhdWx0O0N0LnNldFJhbmRvbU51bWJlclNlZWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInNlZWQgaXMgcmVxdWlyZWQuIik7UzE9bmV3IFNtLmRlZmF1bHQodCl9O0N0Lm5leHRSYW5kb21OdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gUzEucmFuZG9tKCl9O0N0LnJhbmRvbUJldHdlZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gQ3QubmV4dFJhbmRvbU51bWJlcigpKihlLXQpK3R9O0N0LmFjb3NDbGFtcGVkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gTWF0aC5hY29zKEN0LmNsYW1wKHQsLTEsMSkpfTtDdC5hc2luQ2xhbXBlZD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGguYXNpbihDdC5jbGFtcCh0LC0xLDEpKX07Q3QuY2hvcmRMZW5ndGg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJhZGl1cyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gMiplKk1hdGguc2luKHQqLjUpfTtDdC5sb2dCYXNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm51bWJlciBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYmFzZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5sb2coZSl9O0N0LmNicnQ9TWF0aC5jYnJ0Pz9mdW5jdGlvbihlKXtsZXQgbj1NYXRoLnBvdyhNYXRoLmFicyhlKSwuMzMzMzMzMzMzMzMzMzMzMyk7cmV0dXJuIGU8MD8tbjpufTtDdC5sb2cyPU1hdGgubG9nMj8/ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpKk1hdGguTE9HMkV9O0N0LmZvZz1mdW5jdGlvbih0LGUpe2xldCBuPXQqZTtyZXR1cm4gMS1NYXRoLmV4cCgtKG4qbikpfTtDdC5mYXN0QXBwcm94aW1hdGVBdGFuPWZ1bmN0aW9uKHQpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIngiLHQpLHQqKC0uMTc4NCpNYXRoLmFicyh0KS0uMDY2Myp0KnQrMS4wMzAxKX07Q3QuZmFzdEFwcHJveGltYXRlQXRhbjI9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5udW1iZXIoIngiLHQpLHkudHlwZU9mLm51bWJlcigieSIsZSk7bGV0IG4sbz1NYXRoLmFicyh0KTtuPU1hdGguYWJzKGUpO2xldCByPU1hdGgubWF4KG8sbik7bj1NYXRoLm1pbihvLG4pO2xldCBpPW4vcjtpZihpc05hTihpKSl0aHJvdyBuZXcgRCgiZWl0aGVyIHggb3IgeSBtdXN0IGJlIG5vbnplcm8iKTtyZXR1cm4gbz1DdC5mYXN0QXBwcm94aW1hdGVBdGFuKGkpLG89TWF0aC5hYnMoZSk+TWF0aC5hYnModCk/Q3QuUElfT1ZFUl9UV08tbzpvLG89dDwwP0N0LlBJLW86byxvPWU8MD8tbzpvLG99O1A9Q3R9KTtmdW5jdGlvbiBidCh0LGUsbil7dGhpcy54PXQ/PzAsdGhpcy55PWU/PzAsdGhpcy56PW4/PzB9dmFyIGpsLHgxLHpsLHhtLHd4LGhyLEhjLGEsRHQ9JCgoKT0+e1d0KCk7ZnQoKTtIdCgpO0t0KCk7YnQuZnJvbVNwaGVyaWNhbD1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3BoZXJpY2FsIix0KSxtKGUpfHwoZT1uZXcgYnQpO2xldCBuPXQuY2xvY2ssbz10LmNvbmUscj10Lm1hZ25pdHVkZT8/MSxpPXIqTWF0aC5zaW4obyk7cmV0dXJuIGUueD1pKk1hdGguY29zKG4pLGUueT1pKk1hdGguc2luKG4pLGUuej1yKk1hdGguY29zKG8pLGV9O2J0LmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gbShvKT8oby54PXQsby55PWUsby56PW4sbyk6bmV3IGJ0KHQsZSxuKX07YnQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlKTpuZXcgYnQodC54LHQueSx0LnopfTtidC5mcm9tQ2FydGVzaWFuND1idC5jbG9uZTtidC5wYWNrZWRMZW5ndGg9MztidC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10LngsZVtuKytdPXQueSxlW25dPXQueixlfTtidC51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IGJ0KSxuLng9dFtlKytdLG4ueT10W2UrK10sbi56PXRbZV0sbn07YnQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IG49dC5sZW5ndGgsbz1uKjM7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMyBlbGVtZW50cyIpO2UubGVuZ3RoIT09byYmKGUubGVuZ3RoPW8pfWZvcihsZXQgcj0wO3I8bjsrK3IpYnQucGFjayh0W3JdLGUsciozKTtyZXR1cm4gZX07YnQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoImFycmF5Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwzKSx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2xldCBuPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9bi8zOmU9bmV3IEFycmF5KG4vMyk7Zm9yKGxldCBvPTA7bzxuO28rPTMpe2xldCByPW8vMztlW3JdPWJ0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O2J0LmZyb21BcnJheT1idC51bnBhY2s7YnQubWF4aW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWF4KHQueCx0LnksdC56KX07YnQubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnksdC56KX07YnQubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5taW4odC54LGUueCksbi55PU1hdGgubWluKHQueSxlLnkpLG4uej1NYXRoLm1pbih0LnosZS56KSxufTtidC5tYXhpbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSx5LnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD1NYXRoLm1heCh0LngsZS54KSxuLnk9TWF0aC5tYXgodC55LGUueSksbi56PU1hdGgubWF4KHQueixlLnopLG59O2J0LmNsYW1wPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVAuY2xhbXAodC54LGUueCxuLngpLGk9UC5jbGFtcCh0LnksZS55LG4ueSkscz1QLmNsYW1wKHQueixlLnosbi56KTtyZXR1cm4gby54PXIsby55PWksby56PXMsb307YnQubWFnbml0dWRlU3F1YXJlZD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56fTtidC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChidC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07amw9bmV3IGJ0O2J0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksYnQuc3VidHJhY3QodCxlLGpsKSxidC5tYWduaXR1ZGUoamwpfTtidC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxidC5zdWJ0cmFjdCh0LGUsamwpLGJ0Lm1hZ25pdHVkZVNxdWFyZWQoamwpfTtidC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPWJ0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L24sZS55PXQueS9uLGUuej10Lnovbixpc05hTihlLngpfHxpc05hTihlLnkpfHxpc05hTihlLnopKXRocm93IG5ldyBEKCJub3JtYWxpemVkIHJlc3VsdCBpcyBub3QgYSBudW1iZXIiKTtyZXR1cm4gZX07YnQuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnp9O2J0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG4uej10LnoqZS56LG59O2J0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxuLno9dC56L2UueixufTtidC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxuLno9dC56K2UueixufTtidC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG4uej10LnotZS56LG59O2J0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxufTtidC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngvZSxuLnk9dC55L2Usbi56PXQuei9lLG59O2J0Lm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGV9O2J0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD1NYXRoLmFicyh0LngpLGUueT1NYXRoLmFicyh0LnkpLGUuej1NYXRoLmFicyh0LnopLGV9O3gxPW5ldyBidDtidC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksYnQubXVsdGlwbHlCeVNjYWxhcihlLG4seDEpLG89YnQubXVsdGlwbHlCeVNjYWxhcih0LDEtbixvKSxidC5hZGQoeDEsbyxvKX07emw9bmV3IGJ0LHhtPW5ldyBidDtidC5hbmdsZUJldHdlZW49ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLGJ0Lm5vcm1hbGl6ZSh0LHpsKSxidC5ub3JtYWxpemUoZSx4bSk7bGV0IG49YnQuZG90KHpsLHhtKSxvPWJ0Lm1hZ25pdHVkZShidC5jcm9zcyh6bCx4bSx6bCkpO3JldHVybiBNYXRoLmF0YW4yKG8sbil9O3d4PW5ldyBidDtidC5tb3N0T3J0aG9nb25hbEF4aXM9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPWJ0Lm5vcm1hbGl6ZSh0LHd4KTtyZXR1cm4gYnQuYWJzKG4sbiksbi54PD1uLnk/bi54PD1uLno/ZT1idC5jbG9uZShidC5VTklUX1gsZSk6ZT1idC5jbG9uZShidC5VTklUX1osZSk6bi55PD1uLno/ZT1idC5jbG9uZShidC5VTklUX1ksZSk6ZT1idC5jbG9uZShidC5VTklUX1osZSksZX07YnQucHJvamVjdFZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhIix0KSx5LmRlZmluZWQoImIiLGUpLHkuZGVmaW5lZCgicmVzdWx0IixuKTtsZXQgbz1idC5kb3QodCxlKS9idC5kb3QoZSxlKTtyZXR1cm4gYnQubXVsdGlwbHlCeVNjYWxhcihlLG8sbil9O2J0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUuen07YnQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lng9PT1lW25dJiZ0Lnk9PT1lW24rMV0mJnQuej09PWVbbisyXX07YnQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJlAuZXF1YWxzRXBzaWxvbih0LngsZS54LG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnksZS55LG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnosZS56LG4sbyl9O2J0LmNyb3NzPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10Lngscj10LnksaT10Lnoscz1lLngsZj1lLnksdT1lLnosYz1yKnUtaSpmLGw9aSpzLW8qdSxwPW8qZi1yKnM7cmV0dXJuIG4ueD1jLG4ueT1sLG4uej1wLG59O2J0Lm1pZHBvaW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PSh0LngrZS54KSouNSxuLnk9KHQueStlLnkpKi41LG4uej0odC56K2UueikqLjUsbn07YnQuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHkudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLHQ9UC50b1JhZGlhbnModCksZT1QLnRvUmFkaWFucyhlKSxidC5mcm9tUmFkaWFucyh0LGUsbixvLHIpfTtocj1uZXcgYnQsSGM9bmV3IGJ0O2J0Ll9lbGxpcHNvaWRSYWRpaVNxdWFyZWQ9bmV3IGJ0KDYzNzgxMzcqNjM3ODEzNyw2Mzc4MTM3KjYzNzgxMzcsNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KTtidC5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsbixvLHIpe3kudHlwZU9mLm51bWJlcigibG9uZ2l0dWRlIix0KSx5LnR5cGVPZi5udW1iZXIoImxhdGl0dWRlIixlKSxuPW4/PzA7bGV0IGk9bShvKT9vLnJhZGlpU3F1YXJlZDpidC5fZWxsaXBzb2lkUmFkaWlTcXVhcmVkLHM9TWF0aC5jb3MoZSk7aHIueD1zKk1hdGguY29zKHQpLGhyLnk9cypNYXRoLnNpbih0KSxoci56PU1hdGguc2luKGUpLGhyPWJ0Lm5vcm1hbGl6ZShocixociksYnQubXVsdGlwbHlDb21wb25lbnRzKGksaHIsSGMpO2xldCBmPU1hdGguc3FydChidC5kb3QoaHIsSGMpKTtyZXR1cm4gSGM9YnQuZGl2aWRlQnlTY2FsYXIoSGMsZixIYyksaHI9YnQubXVsdGlwbHlCeVNjYWxhcihocixuLGhyKSxtKHIpfHwocj1uZXcgYnQpLGJ0LmFkZChIYyxocixyKX07YnQuZnJvbURlZ3JlZXNBcnJheT1mdW5jdGlvbih0LGUsbil7aWYoeS5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8Mnx8dC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIgYW5kIGF0IGxlYXN0IDIiKTtsZXQgbz10Lmxlbmd0aDttKG4pP24ubGVuZ3RoPW8vMjpuPW5ldyBBcnJheShvLzIpO2ZvcihsZXQgcj0wO3I8bztyKz0yKXtsZXQgaT10W3JdLHM9dFtyKzFdLGY9ci8yO25bZl09YnQuZnJvbURlZ3JlZXMoaSxzLDAsZSxuW2ZdKX1yZXR1cm4gbn07YnQuZnJvbVJhZGlhbnNBcnJheT1mdW5jdGlvbih0LGUsbil7aWYoeS5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8Mnx8dC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIgYW5kIGF0IGxlYXN0IDIiKTtsZXQgbz10Lmxlbmd0aDttKG4pP24ubGVuZ3RoPW8vMjpuPW5ldyBBcnJheShvLzIpO2ZvcihsZXQgcj0wO3I8bztyKz0yKXtsZXQgaT10W3JdLHM9dFtyKzFdLGY9ci8yO25bZl09YnQuZnJvbVJhZGlhbnMoaSxzLDAsZSxuW2ZdKX1yZXR1cm4gbn07YnQuZnJvbURlZ3JlZXNBcnJheUhlaWdodHM9ZnVuY3Rpb24odCxlLG4pe2lmKHkuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDN8fHQubGVuZ3RoJTMhPT0wKXRocm93IG5ldyBEKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzIGFuZCBhdCBsZWFzdCAzIik7bGV0IG89dC5sZW5ndGg7bShuKT9uLmxlbmd0aD1vLzM6bj1uZXcgQXJyYXkoby8zKTtmb3IobGV0IHI9MDtyPG87cis9Myl7bGV0IGk9dFtyXSxzPXRbcisxXSxmPXRbcisyXSx1PXIvMztuW3VdPWJ0LmZyb21EZWdyZWVzKGkscyxmLGUsblt1XSl9cmV0dXJuIG59O2J0LmZyb21SYWRpYW5zQXJyYXlIZWlnaHRzPWZ1bmN0aW9uKHQsZSxuKXtpZih5LmRlZmluZWQoImNvb3JkaW5hdGVzIix0KSx0Lmxlbmd0aDwzfHx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgidGhlIG51bWJlciBvZiBjb29yZGluYXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMyBhbmQgYXQgbGVhc3QgMyIpO2xldCBvPXQubGVuZ3RoO20obik/bi5sZW5ndGg9by8zOm49bmV3IEFycmF5KG8vMyk7Zm9yKGxldCByPTA7cjxvO3IrPTMpe2xldCBpPXRbcl0scz10W3IrMV0sZj10W3IrMl0sdT1yLzM7blt1XT1idC5mcm9tUmFkaWFucyhpLHMsZixlLG5bdV0pfXJldHVybiBufTtidC5aRVJPPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMCwwKSk7YnQuT05FPU9iamVjdC5mcmVlemUobmV3IGJ0KDEsMSwxKSk7YnQuVU5JVF9YPU9iamVjdC5mcmVlemUobmV3IGJ0KDEsMCwwKSk7YnQuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMSwwKSk7YnQuVU5JVF9aPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMCwxKSk7YnQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBidC5jbG9uZSh0aGlzLHQpfTtidC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBidC5lcXVhbHModGhpcyx0KX07YnQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiBidC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTtidC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0pYH07YT1idH0pO2Z1bmN0aW9uIEV4KHQsZSxuLG8scil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgib25lT3ZlclJhZGlpIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJvbmVPdmVyUmFkaWlTcXVhcmVkIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJjZW50ZXJUb2xlcmFuY2VTcXVhcmVkIGlzIHJlcXVpcmVkLiIpO2xldCBpPXQueCxzPXQueSxmPXQueix1PWUueCxjPWUueSxsPWUueixwPWkqaSp1KnUsZD1zKnMqYypjLGg9ZipmKmwqbCxfPXArZCtoLGc9TWF0aC5zcXJ0KDEvXyksYj1hLm11bHRpcGx5QnlTY2FsYXIodCxnLFR4KTtpZihfPG8pcmV0dXJuIGlzRmluaXRlKGcpP2EuY2xvbmUoYixyKTp2b2lkIDA7bGV0IHc9bi54LE89bi55LEU9bi56LFQ9T3g7VC54PWIueCp3KjIsVC55PWIueSpPKjIsVC56PWIueipFKjI7bGV0IHg9KDEtZykqYS5tYWduaXR1ZGUodCkvKC41KmEubWFnbml0dWRlKFQpKSxNPTAsTixGLEksdixCLEEsUyxDLEwseixqO2Rve3gtPU0sST0xLygxK3gqdyksdj0xLygxK3gqTyksQj0xLygxK3gqRSksQT1JKkksUz12KnYsQz1CKkIsTD1BKkksej1TKnYsaj1DKkIsTj1wKkErZCpTK2gqQy0xLEY9cCpMKncrZCp6Kk8raCpqKkU7bGV0IGs9LTIqRjtNPU4va313aGlsZShNYXRoLmFicyhOKT5QLkVQU0lMT04xMik7cmV0dXJuIG0ocik/KHIueD1pKkksci55PXMqdixyLno9ZipCLHIpOm5ldyBhKGkqSSxzKnYsZipCKX12YXIgVHgsT3gsSGwsQ209JCgoKT0+e0R0KCk7ZnQoKTtIdCgpO0t0KCk7VHg9bmV3IGEsT3g9bmV3IGE7SGw9RXh9KTtmdW5jdGlvbiBfbih0LGUsbil7dGhpcy5sb25naXR1ZGU9dD8/MCx0aGlzLmxhdGl0dWRlPWU/PzAsdGhpcy5oZWlnaHQ9bj8/MH12YXIgUngsU3gseHgsY3QsSWU9JCgoKT0+e0R0KCk7V3QoKTtmdCgpO0t0KCk7Q20oKTtfbi5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHkudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLG49bj8/MCxtKG8pPyhvLmxvbmdpdHVkZT10LG8ubGF0aXR1ZGU9ZSxvLmhlaWdodD1uLG8pOm5ldyBfbih0LGUsbil9O19uLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5udW1iZXIoImxvbmdpdHVkZSIsdCkseS50eXBlT2YubnVtYmVyKCJsYXRpdHVkZSIsZSksdD1QLnRvUmFkaWFucyh0KSxlPVAudG9SYWRpYW5zKGUpLF9uLmZyb21SYWRpYW5zKHQsZSxuLG8pfTtSeD1uZXcgYSxTeD1uZXcgYSx4eD1uZXcgYTtfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpPW5ldyBhKDEvNjM3ODEzNywxLzYzNzgxMzcsMS82MzU2NzUyMzE0MjQ1MTc5ZS05KTtfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZD1uZXcgYSgxLyg2Mzc4MTM3KjYzNzgxMzcpLDEvKDYzNzgxMzcqNjM3ODEzNyksMS8oNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KSk7X24uX2VsbGlwc29pZENlbnRlclRvbGVyYW5jZVNxdWFyZWQ9UC5FUFNJTE9OMTtfbi5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1tKGUpP2Uub25lT3ZlclJhZGlpOl9uLl9lbGxpcHNvaWRPbmVPdmVyUmFkaWkscj1tKGUpP2Uub25lT3ZlclJhZGlpU3F1YXJlZDpfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZCxpPW0oZSk/ZS5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZDpfbi5fZWxsaXBzb2lkQ2VudGVyVG9sZXJhbmNlU3F1YXJlZCxzPUhsKHQsbyxyLGksU3gpO2lmKCFtKHMpKXJldHVybjtsZXQgZj1hLm11bHRpcGx5Q29tcG9uZW50cyhzLHIsUngpO2Y9YS5ub3JtYWxpemUoZixmKTtsZXQgdT1hLnN1YnRyYWN0KHQscyx4eCksYz1NYXRoLmF0YW4yKGYueSxmLngpLGw9TWF0aC5hc2luKGYueikscD1QLnNpZ24oYS5kb3QodSx0KSkqYS5tYWduaXR1ZGUodSk7cmV0dXJuIG0obik/KG4ubG9uZ2l0dWRlPWMsbi5sYXRpdHVkZT1sLG4uaGVpZ2h0PXAsbik6bmV3IF9uKGMsbCxwKX07X24udG9DYXJ0ZXNpYW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImNhcnRvZ3JhcGhpYyIsdCksYS5mcm9tUmFkaWFucyh0LmxvbmdpdHVkZSx0LmxhdGl0dWRlLHQuaGVpZ2h0LGUsbil9O19uLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9dC5sb25naXR1ZGUsZS5sYXRpdHVkZT10LmxhdGl0dWRlLGUuaGVpZ2h0PXQuaGVpZ2h0LGUpOm5ldyBfbih0LmxvbmdpdHVkZSx0LmxhdGl0dWRlLHQuaGVpZ2h0KX07X24uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LmxvbmdpdHVkZT09PWUubG9uZ2l0dWRlJiZ0LmxhdGl0dWRlPT09ZS5sYXRpdHVkZSYmdC5oZWlnaHQ9PT1lLmhlaWdodH07X24uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC5sb25naXR1ZGUtZS5sb25naXR1ZGUpPD1uJiZNYXRoLmFicyh0LmxhdGl0dWRlLWUubGF0aXR1ZGUpPD1uJiZNYXRoLmFicyh0LmhlaWdodC1lLmhlaWdodCk8PW59O19uLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgX24oMCwwLDApKTtfbi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIF9uLmNsb25lKHRoaXMsdCl9O19uLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIF9uLmVxdWFscyh0aGlzLHQpfTtfbi5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBfbi5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07X24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMubG9uZ2l0dWRlfSwgJHt0aGlzLmxhdGl0dWRlfSwgJHt0aGlzLmhlaWdodH0pYH07Y3Q9X259KTtmdW5jdGlvbiBqdCh0LGUpe3RoaXMueD10Pz8wLHRoaXMueT1lPz8wfXZhciBxbCxDMSxQMSxNMSxDeCxKLGtlPSQoKCk9PntXdCgpO2Z0KCk7SHQoKTtLdCgpO2p0LmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG0obik/KG4ueD10LG4ueT1lLG4pOm5ldyBqdCh0LGUpfTtqdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlKTpuZXcganQodC54LHQueSl9O2p0LmZyb21DYXJ0ZXNpYW4zPWp0LmNsb25lO2p0LmZyb21DYXJ0ZXNpYW40PWp0LmNsb25lO2p0LnBhY2tlZExlbmd0aD0yO2p0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQueCxlW25dPXQueSxlfTtqdC51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IGp0KSxuLng9dFtlKytdLG4ueT10W2VdLG59O2p0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bioyO2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDIgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKWp0LnBhY2sodFtyXSxlLHIqMik7cmV0dXJuIGV9O2p0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsMiksdC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vMjplPW5ldyBBcnJheShuLzIpO2ZvcihsZXQgbz0wO288bjtvKz0yKXtsZXQgcj1vLzI7ZVtyXT1qdC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTtqdC5mcm9tQXJyYXk9anQudW5wYWNrO2p0Lm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55KX07anQubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnkpfTtqdC5taW5pbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSx5LnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD1NYXRoLm1pbih0LngsZS54KSxuLnk9TWF0aC5taW4odC55LGUueSksbn07anQubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5tYXgodC54LGUueCksbi55PU1hdGgubWF4KHQueSxlLnkpLG59O2p0LmNsYW1wPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVAuY2xhbXAodC54LGUueCxuLngpLGk9UC5jbGFtcCh0LnksZS55LG4ueSk7cmV0dXJuIG8ueD1yLG8ueT1pLG99O2p0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0Lnl9O2p0Lm1hZ25pdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KGp0Lm1hZ25pdHVkZVNxdWFyZWQodCkpfTtxbD1uZXcganQ7anQuZGlzdGFuY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxqdC5zdWJ0cmFjdCh0LGUscWwpLGp0Lm1hZ25pdHVkZShxbCl9O2p0LmRpc3RhbmNlU3F1YXJlZD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLGp0LnN1YnRyYWN0KHQsZSxxbCksanQubWFnbml0dWRlU3F1YXJlZChxbCl9O2p0Lm5vcm1hbGl6ZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49anQubWFnbml0dWRlKHQpO2lmKGUueD10LngvbixlLnk9dC55L24saXNOYU4oZS54KXx8aXNOYU4oZS55KSl0aHJvdyBuZXcgRCgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O2p0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueX07anQuY3Jvc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LngqZS55LXQueSplLnh9O2p0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG59O2p0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxufTtqdC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxufTtqdC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG59O2p0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG59O2p0LmRpdmlkZUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueC9lLG4ueT10LnkvZSxufTtqdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9LXQueCxlLnk9LXQueSxlfTtqdC5hYnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9TWF0aC5hYnModC54KSxlLnk9TWF0aC5hYnModC55KSxlfTtDMT1uZXcganQ7anQubGVycD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkseS50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHkudHlwZU9mLm51bWJlcigidCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLGp0Lm11bHRpcGx5QnlTY2FsYXIoZSxuLEMxKSxvPWp0Lm11bHRpcGx5QnlTY2FsYXIodCwxLW4sbyksanQuYWRkKEMxLG8sbyl9O1AxPW5ldyBqdCxNMT1uZXcganQ7anQuYW5nbGVCZXR3ZWVuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksanQubm9ybWFsaXplKHQsUDEpLGp0Lm5vcm1hbGl6ZShlLE0xKSxQLmFjb3NDbGFtcGVkKGp0LmRvdChQMSxNMSkpfTtDeD1uZXcganQ7anQubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1qdC5ub3JtYWxpemUodCxDeCk7cmV0dXJuIGp0LmFicyhuLG4pLG4ueDw9bi55P2U9anQuY2xvbmUoanQuVU5JVF9YLGUpOmU9anQuY2xvbmUoanQuVU5JVF9ZLGUpLGV9O2p0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnl9O2p0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC54PT09ZVtuXSYmdC55PT09ZVtuKzFdfTtqdC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmUC5lcXVhbHNFcHNpbG9uKHQueCxlLngsbixvKSYmUC5lcXVhbHNFcHNpbG9uKHQueSxlLnksbixvKX07anQuWkVSTz1PYmplY3QuZnJlZXplKG5ldyBqdCgwLDApKTtqdC5PTkU9T2JqZWN0LmZyZWV6ZShuZXcganQoMSwxKSk7anQuVU5JVF9YPU9iamVjdC5mcmVlemUobmV3IGp0KDEsMCkpO2p0LlVOSVRfWT1PYmplY3QuZnJlZXplKG5ldyBqdCgwLDEpKTtqdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGp0LmNsb25lKHRoaXMsdCl9O2p0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGp0LmVxdWFscyh0aGlzLHQpfTtqdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGp0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUsbil9O2p0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzLnh9LCAke3RoaXMueX0pYH07Sj1qdH0pO2Z1bmN0aW9uIEkxKHQsZSxuLG8pe2U9ZT8/MCxuPW4/PzAsbz1vPz8wLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ4IixlLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ5IixuLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ6IixvLDApLHQuX3JhZGlpPW5ldyBhKGUsbixvKSx0Ll9yYWRpaVNxdWFyZWQ9bmV3IGEoZSplLG4qbixvKm8pLHQuX3JhZGlpVG9UaGVGb3VydGg9bmV3IGEoZSplKmUqZSxuKm4qbipuLG8qbypvKm8pLHQuX29uZU92ZXJSYWRpaT1uZXcgYShlPT09MD8wOjEvZSxuPT09MD8wOjEvbixvPT09MD8wOjEvbyksdC5fb25lT3ZlclJhZGlpU3F1YXJlZD1uZXcgYShlPT09MD8wOjEvKGUqZSksbj09PTA/MDoxLyhuKm4pLG89PT0wPzA6MS8obypvKSksdC5fbWluaW11bVJhZGl1cz1NYXRoLm1pbihlLG4sbyksdC5fbWF4aW11bVJhZGl1cz1NYXRoLm1heChlLG4sbyksdC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD1QLkVQU0lMT04xLHQuX3JhZGlpU3F1YXJlZC56IT09MCYmKHQuX3NxdWFyZWRYT3ZlclNxdWFyZWRaPXQuX3JhZGlpU3F1YXJlZC54L3QuX3JhZGlpU3F1YXJlZC56KX1mdW5jdGlvbiBDZSh0LGUsbil7dGhpcy5fcmFkaWk9dm9pZCAwLHRoaXMuX3JhZGlpU3F1YXJlZD12b2lkIDAsdGhpcy5fcmFkaWlUb1RoZUZvdXJ0aD12b2lkIDAsdGhpcy5fb25lT3ZlclJhZGlpPXZvaWQgMCx0aGlzLl9vbmVPdmVyUmFkaWlTcXVhcmVkPXZvaWQgMCx0aGlzLl9taW5pbXVtUmFkaXVzPXZvaWQgMCx0aGlzLl9tYXhpbXVtUmFkaXVzPXZvaWQgMCx0aGlzLl9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkPXZvaWQgMCx0aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWj12b2lkIDAsSTEodGhpcyx0LGUsbil9ZnVuY3Rpb24gTjEodCxlLG4pe3kudHlwZU9mLm51bWJlcigiYSIsdCkseS50eXBlT2YubnVtYmVyKCJiIixlKSx5LnR5cGVPZi5mdW5jKCJmdW5jIixuKTtsZXQgbz0uNSooZSt0KSxyPS41KihlLXQpLGk9MDtmb3IobGV0IHM9MDtzPDU7cysrKXtsZXQgZj1yKkx4W3NdO2krPUR4W3NdKihuKG8rZikrbihvLWYpKX1yZXR1cm4gaSo9cixpfXZhciBQeCxNeCxOeCxJeCx2eCxGeCxMeCxEeCxZLCR0PSQoKCk9PntrZSgpO0R0KCk7SWUoKTtXdCgpO2Z0KCk7SHQoKTtLdCgpO0NtKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ2UucHJvdG90eXBlLHtyYWRpaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpfX0scmFkaWlTcXVhcmVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaWlTcXVhcmVkfX0scmFkaWlUb1RoZUZvdXJ0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpVG9UaGVGb3VydGh9fSxvbmVPdmVyUmFkaWk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbmVPdmVyUmFkaWl9fSxvbmVPdmVyUmFkaWlTcXVhcmVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZH19LG1pbmltdW1SYWRpdXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5pbXVtUmFkaXVzfX0sbWF4aW11bVJhZGl1czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heGltdW1SYWRpdXN9fX0pO0NlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpcmV0dXJuO2xldCBuPXQuX3JhZGlpO3JldHVybiBtKGUpPyhhLmNsb25lKG4sZS5fcmFkaWkpLGEuY2xvbmUodC5fcmFkaWlTcXVhcmVkLGUuX3JhZGlpU3F1YXJlZCksYS5jbG9uZSh0Ll9yYWRpaVRvVGhlRm91cnRoLGUuX3JhZGlpVG9UaGVGb3VydGgpLGEuY2xvbmUodC5fb25lT3ZlclJhZGlpLGUuX29uZU92ZXJSYWRpaSksYS5jbG9uZSh0Ll9vbmVPdmVyUmFkaWlTcXVhcmVkLGUuX29uZU92ZXJSYWRpaVNxdWFyZWQpLGUuX21pbmltdW1SYWRpdXM9dC5fbWluaW11bVJhZGl1cyxlLl9tYXhpbXVtUmFkaXVzPXQuX21heGltdW1SYWRpdXMsZS5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD10Ll9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkLGUpOm5ldyBDZShuLngsbi55LG4ueil9O0NlLmZyb21DYXJ0ZXNpYW4zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBDZSksbSh0KSYmSTEoZSx0LngsdC55LHQueiksZX07Q2UuV0dTODQ9T2JqZWN0LmZyZWV6ZShuZXcgQ2UoNjM3ODEzNyw2Mzc4MTM3LDYzNTY3NTIzMTQyNDUxNzllLTkpKTtDZS5VTklUX1NQSEVSRT1PYmplY3QuZnJlZXplKG5ldyBDZSgxLDEsMSkpO0NlLk1PT049T2JqZWN0LmZyZWV6ZShuZXcgQ2UoUC5MVU5BUl9SQURJVVMsUC5MVU5BUl9SQURJVVMsUC5MVU5BUl9SQURJVVMpKTtDZS5fZGVmYXVsdD1DZS5XR1M4NDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDZSx7ZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIENlLl9kZWZhdWx0fSxzZXQ6ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksQ2UuX2RlZmF1bHQ9dCxhLl9lbGxpcHNvaWRSYWRpaVNxdWFyZWQ9dC5yYWRpaVNxdWFyZWQsY3QuX2VsbGlwc29pZE9uZU92ZXJSYWRpaT10Lm9uZU92ZXJSYWRpaSxjdC5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZD10Lm9uZU92ZXJSYWRpaVNxdWFyZWQsY3QuX2VsbGlwc29pZENlbnRlclRvbGVyYW5jZVNxdWFyZWQ9dC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZH19fSk7Q2UucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBDZS5jbG9uZSh0aGlzLHQpfTtDZS5wYWNrZWRMZW5ndGg9YS5wYWNrZWRMZW5ndGg7Q2UucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxhLnBhY2sodC5fcmFkaWksZSxuKSxlfTtDZS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1hLnVucGFjayh0LGUpO3JldHVybiBDZS5mcm9tQ2FydGVzaWFuMyhvLG4pfTtDZS5wcm90b3R5cGUuZ2VvY2VudHJpY1N1cmZhY2VOb3JtYWw9YS5ub3JtYWxpemU7Q2UucHJvdG90eXBlLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIix0KTtsZXQgbj10LmxvbmdpdHVkZSxvPXQubGF0aXR1ZGUscj1NYXRoLmNvcyhvKSxpPXIqTWF0aC5jb3Mobikscz1yKk1hdGguc2luKG4pLGY9TWF0aC5zaW4obyk7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxlLng9aSxlLnk9cyxlLno9ZixhLm5vcm1hbGl6ZShlLGUpfTtDZS5wcm90b3R5cGUuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLGlzTmFOKHQueCl8fGlzTmFOKHQueSl8fGlzTmFOKHQueikpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBoYXMgYSBOYU4gY29tcG9uZW50Iik7aWYoIWEuZXF1YWxzRXBzaWxvbih0LGEuWkVSTyxQLkVQU0lMT04xNCkpcmV0dXJuIG0oZSl8fChlPW5ldyBhKSxlPWEubXVsdGlwbHlDb21wb25lbnRzKHQsdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCxlKSxhLm5vcm1hbGl6ZShlLGUpfTtQeD1uZXcgYSxNeD1uZXcgYTtDZS5wcm90b3R5cGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW49ZnVuY3Rpb24odCxlKXtsZXQgbj1QeCxvPU14O3RoaXMuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsQ2FydG9ncmFwaGljKHQsbiksYS5tdWx0aXBseUNvbXBvbmVudHModGhpcy5fcmFkaWlTcXVhcmVkLG4sbyk7bGV0IHI9TWF0aC5zcXJ0KGEuZG90KG4sbykpO3JldHVybiBhLmRpdmlkZUJ5U2NhbGFyKG8scixvKSxhLm11bHRpcGx5QnlTY2FsYXIobix0LmhlaWdodCxuKSxtKGUpfHwoZT1uZXcgYSksYS5hZGQobyxuLGUpfTtDZS5wcm90b3R5cGUuY2FydG9ncmFwaGljQXJyYXlUb0NhcnRlc2lhbkFycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0b2dyYXBoaWNzIix0KTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW46ZT1uZXcgQXJyYXkobik7Zm9yKGxldCBvPTA7bzxuO28rKyllW29dPXRoaXMuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4odFtvXSxlW29dKTtyZXR1cm4gZX07Tng9bmV3IGEsSXg9bmV3IGEsdng9bmV3IGE7Q2UucHJvdG90eXBlLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQsSXgpO2lmKCFtKG4pKXJldHVybjtsZXQgbz10aGlzLmdlb2RldGljU3VyZmFjZU5vcm1hbChuLE54KSxyPWEuc3VidHJhY3QodCxuLHZ4KSxpPU1hdGguYXRhbjIoby55LG8ueCkscz1NYXRoLmFzaW4oby56KSxmPVAuc2lnbihhLmRvdChyLHQpKSphLm1hZ25pdHVkZShyKTtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9aSxlLmxhdGl0dWRlPXMsZS5oZWlnaHQ9ZixlKTpuZXcgY3QoaSxzLGYpfTtDZS5wcm90b3R5cGUuY2FydGVzaWFuQXJyYXlUb0NhcnRvZ3JhcGhpY0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW46ZT1uZXcgQXJyYXkobik7Zm9yKGxldCBvPTA7bzxuOysrbyllW29dPXRoaXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModFtvXSxlW29dKTtyZXR1cm4gZX07Q2UucHJvdG90eXBlLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGwodCx0aGlzLl9vbmVPdmVyUmFkaWksdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCx0aGlzLl9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkLGUpfTtDZS5wcm90b3R5cGUuc2NhbGVUb0dlb2NlbnRyaWNTdXJmYWNlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBhKTtsZXQgbj10Lngsbz10Lnkscj10LnosaT10aGlzLl9vbmVPdmVyUmFkaWlTcXVhcmVkLHM9MS9NYXRoLnNxcnQobipuKmkueCtvKm8qaS55K3IqcippLnopO3JldHVybiBhLm11bHRpcGx5QnlTY2FsYXIodCxzLGUpfTtDZS5wcm90b3R5cGUudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxhLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX29uZU92ZXJSYWRpaSxlKX07Q2UucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uRnJvbVNjYWxlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxhLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX3JhZGlpLGUpfTtDZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmYS5lcXVhbHModGhpcy5fcmFkaWksdC5fcmFkaWkpfTtDZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaWkudG9TdHJpbmcoKX07Q2UucHJvdG90eXBlLmdldFN1cmZhY2VOb3JtYWxJbnRlcnNlY3Rpb25XaXRoWkF4aXM9ZnVuY3Rpb24odCxlLG4pe2lmKHkudHlwZU9mLm9iamVjdCgicG9zaXRpb24iLHQpLCFQLmVxdWFsc0Vwc2lsb24odGhpcy5fcmFkaWkueCx0aGlzLl9yYWRpaS55LFAuRVBTSUxPTjE1KSl0aHJvdyBuZXcgRCgiRWxsaXBzb2lkIG11c3QgYmUgYW4gZWxsaXBzb2lkIG9mIHJldm9sdXRpb24gKHJhZGlpLnggPT0gcmFkaWkueSkiKTt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oIkVsbGlwc29pZC5yYWRpaS56Iix0aGlzLl9yYWRpaS56LDApLGU9ZT8/MDtsZXQgbz10aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWjtpZihtKG4pfHwobj1uZXcgYSksbi54PTAsbi55PTAsbi56PXQueiooMS1vKSwhKE1hdGguYWJzKG4ueik+PXRoaXMuX3JhZGlpLnotZSkpcmV0dXJuIG59O0Z4PW5ldyBhO0NlLnByb3RvdHlwZS5nZXRMb2NhbEN1cnZhdHVyZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3VyZmFjZVBvc2l0aW9uIix0KSxtKGUpfHwoZT1uZXcgSik7bGV0IG49dGhpcy5nZXRTdXJmYWNlTm9ybWFsSW50ZXJzZWN0aW9uV2l0aFpBeGlzKHQsMCxGeCksbz1hLmRpc3RhbmNlKHQsbikscj10aGlzLm1pbmltdW1SYWRpdXMqby90aGlzLm1heGltdW1SYWRpdXMqKjIsaT1vKnIqKjI7cmV0dXJuIEouZnJvbUVsZW1lbnRzKDEvbywxL2ksZSl9O0x4PVsuMTQ4ODc0MzM4OTgxNjMsLjQzMzM5NTM5NDEyOTI1LC42Nzk0MDk1NjgyOTkwMiwuODY1MDYzMzY2Njg4OTgsLjk3MzkwNjUyODUxNzE3LDBdLER4PVsuMjk1NTI0MjI0NzE0NzUsLjI2OTI2NjcxOTMwOTk5LC4yMTkwODYzNjI1MTU5OCwuMTQ5NDUxMzQ5MTUwNTgsLjA2NjY3MTM0NDMwODY4NCwwXTtDZS5wcm90b3R5cGUuc3VyZmFjZUFyZWE9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQud2VzdCxuPXQuZWFzdCxvPXQuc291dGgscj10Lm5vcnRoO2Zvcig7bjxlOyluKz1QLlRXT19QSTtsZXQgaT10aGlzLl9yYWRpaVNxdWFyZWQscz1pLngsZj1pLnksdT1pLnosYz1zKmY7cmV0dXJuIE4xKG8scixmdW5jdGlvbihsKXtsZXQgcD1NYXRoLmNvcyhsKSxkPU1hdGguc2luKGwpO3JldHVybiBNYXRoLmNvcyhsKSpOMShlLG4sZnVuY3Rpb24oaCl7bGV0IF89TWF0aC5jb3MoaCksZz1NYXRoLnNpbihoKTtyZXR1cm4gTWF0aC5zcXJ0KGMqZCpkK3UqKGYqXypfK3MqZypnKSpwKnApfSl9KX07WT1DZX0pO2Z1bmN0aW9uIEtsKHQpe3RoaXMuX2VsbGlwc29pZD10Pz9ZLmRlZmF1bHQsdGhpcy5fc2VtaW1ham9yQXhpcz10aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9vbmVPdmVyU2VtaW1ham9yQXhpcz0xL3RoaXMuX3NlbWltYWpvckF4aXN9dmFyIGVvLHhpPSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpOyR0KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoS2wucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fX0pO0tsLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fc2VtaW1ham9yQXhpcyxvPXQubG9uZ2l0dWRlKm4scj10LmxhdGl0dWRlKm4saT10LmhlaWdodDtyZXR1cm4gbShlKT8oZS54PW8sZS55PXIsZS56PWksZSk6bmV3IGEobyxyLGkpfTtLbC5wcm90b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZCIpO2xldCBuPXRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzLG89dC54Km4scj10LnkqbixpPXQuejtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9byxlLmxhdGl0dWRlPXIsZS5oZWlnaHQ9aSxlKTpuZXcgY3QobyxyLGkpfTtlbz1LbH0pO3ZhciBCeCxTbixWcz0kKCgpPT57Qng9e09VVFNJREU6LTEsSU5URVJTRUNUSU5HOjAsSU5TSURFOjF9LFNuPU9iamVjdC5mcmVlemUoQngpfSk7ZnVuY3Rpb24gVXgodCxlKXt0aGlzLnN0YXJ0PXQ/PzAsdGhpcy5zdG9wPWU/PzB9dmFyIEpyLFdsPSQoKCk9PntKcj1VeH0pO2Z1bmN0aW9uIFR0KHQsZSxuLG8scixpLHMsZix1KXt0aGlzWzBdPXQ/PzAsdGhpc1sxXT1vPz8wLHRoaXNbMl09cz8/MCx0aGlzWzNdPWU/PzAsdGhpc1s0XT1yPz8wLHRoaXNbNV09Zj8/MCx0aGlzWzZdPW4/PzAsdGhpc1s3XT1pPz8wLHRoaXNbOF09dT8/MH1mdW5jdGlvbiBqeCh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248OTsrK24pe2xldCBvPXRbbl07ZSs9bypvfXJldHVybiBNYXRoLnNxcnQoZSl9ZnVuY3Rpb24gSHgodCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPDM7KytuKXtsZXQgbz10W1R0LmdldEVsZW1lbnRJbmRleChObVtuXSxNbVtuXSldO2UrPTIqbypvfXJldHVybiBNYXRoLnNxcnQoZSl9ZnVuY3Rpb24gcXgodCxlKXtsZXQgbj1QLkVQU0lMT04xNSxvPTAscj0xO2ZvcihsZXQgYz0wO2M8MzsrK2Mpe2xldCBsPU1hdGguYWJzKHRbVHQuZ2V0RWxlbWVudEluZGV4KE5tW2NdLE1tW2NdKV0pO2w+byYmKHI9YyxvPWwpfWxldCBpPTEscz0wLGY9TW1bcl0sdT1ObVtyXTtpZihNYXRoLmFicyh0W1R0LmdldEVsZW1lbnRJbmRleCh1LGYpXSk+bil7bGV0IGM9dFtUdC5nZXRFbGVtZW50SW5kZXgodSx1KV0sbD10W1R0LmdldEVsZW1lbnRJbmRleChmLGYpXSxwPXRbVHQuZ2V0RWxlbWVudEluZGV4KHUsZildLGQ9KGMtbCkvMi9wLGg7ZDwwP2g9LTEvKC1kK01hdGguc3FydCgxK2QqZCkpOmg9MS8oZCtNYXRoLnNxcnQoMStkKmQpKSxpPTEvTWF0aC5zcXJ0KDEraCpoKSxzPWgqaX1yZXR1cm4gZT1UdC5jbG9uZShUdC5JREVOVElUWSxlKSxlW1R0LmdldEVsZW1lbnRJbmRleChmLGYpXT1lW1R0LmdldEVsZW1lbnRJbmRleCh1LHUpXT1pLGVbVHQuZ2V0RWxlbWVudEluZGV4KHUsZildPXMsZVtUdC5nZXRFbGVtZW50SW5kZXgoZix1KV09LXMsZX12YXIga3gsR3gsUG0sdjEsVngsengsTW0sTm0sWGwsRjEsS3gsWixVbj0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7SHQoKTtLdCgpO1R0LnBhY2tlZExlbmd0aD05O1R0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXRbMF0sZVtuKytdPXRbMV0sZVtuKytdPXRbMl0sZVtuKytdPXRbM10sZVtuKytdPXRbNF0sZVtuKytdPXRbNV0sZVtuKytdPXRbNl0sZVtuKytdPXRbN10sZVtuKytdPXRbOF0sZX07VHQudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBUdCksblswXT10W2UrK10sblsxXT10W2UrK10sblsyXT10W2UrK10sblszXT10W2UrK10sbls0XT10W2UrK10sbls1XT10W2UrK10sbls2XT10W2UrK10sbls3XT10W2UrK10sbls4XT10W2UrK10sbn07VHQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IG49dC5sZW5ndGgsbz1uKjk7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogOSBlbGVtZW50cyIpO2UubGVuZ3RoIT09byYmKGUubGVuZ3RoPW8pfWZvcihsZXQgcj0wO3I8bjsrK3IpVHQucGFjayh0W3JdLGUscio5KTtyZXR1cm4gZX07VHQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoImFycmF5Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCw5KSx0Lmxlbmd0aCU5IT09MCl0aHJvdyBuZXcgRCgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5LiIpO2xldCBuPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9bi85OmU9bmV3IEFycmF5KG4vOSk7Zm9yKGxldCBvPTA7bzxuO28rPTkpe2xldCByPW8vOTtlW3JdPVR0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O1R0LmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZSk6bmV3IFR0KHRbMF0sdFszXSx0WzZdLHRbMV0sdFs0XSx0WzddLHRbMl0sdFs1XSx0WzhdKX07VHQuZnJvbUFycmF5PVR0LnVucGFjaztUdC5mcm9tQ29sdW1uTWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoInZhbHVlcyIsdCksVHQuY2xvbmUodCxlKX07VHQuZnJvbVJvd01ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbM10sZVsyXT10WzZdLGVbM109dFsxXSxlWzRdPXRbNF0sZVs1XT10WzddLGVbNl09dFsyXSxlWzddPXRbNV0sZVs4XT10WzhdLGUpOm5ldyBUdCh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XSl9O1R0LmZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KTtsZXQgbj10LngqdC54LG89dC54KnQueSxyPXQueCp0LnosaT10LngqdC53LHM9dC55KnQueSxmPXQueSp0LnosdT10LnkqdC53LGM9dC56KnQueixsPXQueip0LncscD10LncqdC53LGQ9bi1zLWMrcCxoPTIqKG8tbCksXz0yKihyK3UpLGc9MioobytsKSxiPS1uK3MtYytwLHc9MiooZi1pKSxPPTIqKHItdSksRT0yKihmK2kpLFQ9LW4tcytjK3A7cmV0dXJuIG0oZSk/KGVbMF09ZCxlWzFdPWcsZVsyXT1PLGVbM109aCxlWzRdPWIsZVs1XT1FLGVbNl09XyxlWzddPXcsZVs4XT1ULGUpOm5ldyBUdChkLGgsXyxnLGIsdyxPLEUsVCl9O1R0LmZyb21IZWFkaW5nUGl0Y2hSb2xsPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KTtsZXQgbj1NYXRoLmNvcygtdC5waXRjaCksbz1NYXRoLmNvcygtdC5oZWFkaW5nKSxyPU1hdGguY29zKHQucm9sbCksaT1NYXRoLnNpbigtdC5waXRjaCkscz1NYXRoLnNpbigtdC5oZWFkaW5nKSxmPU1hdGguc2luKHQucm9sbCksdT1uKm8sYz0tcipzK2YqaSpvLGw9ZipzK3IqaSpvLHA9bipzLGQ9cipvK2YqaSpzLGg9LWYqbytyKmkqcyxfPS1pLGc9ZipuLGI9cipuO3JldHVybiBtKGUpPyhlWzBdPXUsZVsxXT1wLGVbMl09XyxlWzNdPWMsZVs0XT1kLGVbNV09ZyxlWzZdPWwsZVs3XT1oLGVbOF09YixlKTpuZXcgVHQodSxjLGwscCxkLGgsXyxnLGIpfTtUdC5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT10LnksZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT10LnosZSk6bmV3IFR0KHQueCwwLDAsMCx0LnksMCwwLDAsdC56KX07VHQuZnJvbVVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT10LGVbNV09MCxlWzZdPTAsZVs3XT0wLGVbOF09dCxlKTpuZXcgVHQodCwwLDAsMCx0LDAsMCwwLHQpfTtUdC5mcm9tQ3Jvc3NQcm9kdWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmVjdG9yIix0KSxtKGUpPyhlWzBdPTAsZVsxXT10LnosZVsyXT0tdC55LGVbM109LXQueixlWzRdPTAsZVs1XT10LngsZVs2XT10LnksZVs3XT0tdC54LGVbOF09MCxlKTpuZXcgVHQoMCwtdC56LHQueSx0LnosMCwtdC54LC10LnksdC54LDApfTtUdC5mcm9tUm90YXRpb25YPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT0xLGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09bixlWzVdPW8sZVs2XT0wLGVbN109LW8sZVs4XT1uLGUpOm5ldyBUdCgxLDAsMCwwLG4sLW8sMCxvLG4pfTtUdC5mcm9tUm90YXRpb25ZPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT1uLGVbMV09MCxlWzJdPS1vLGVbM109MCxlWzRdPTEsZVs1XT0wLGVbNl09byxlWzddPTAsZVs4XT1uLGUpOm5ldyBUdChuLDAsbywwLDEsMCwtbywwLG4pfTtUdC5mcm9tUm90YXRpb25aPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT1uLGVbMV09byxlWzJdPTAsZVszXT0tbyxlWzRdPW4sZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0xLGUpOm5ldyBUdChuLC1vLDAsbyxuLDAsMCwwLDEpfTtUdC50b0FycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlKTpbdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF1dfTtUdC5nZXRFbGVtZW50SW5kZXg9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInJvdyIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygicm93IixlLDIpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwyKSx0KjMrZX07VHQuZ2V0Q29sdW1uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZSozLHI9dFtvXSxpPXRbbysxXSxzPXRbbysyXTtyZXR1cm4gbi54PXIsbi55PWksbi56PXMsbn07VHQuc2V0Q29sdW1uPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDIpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksbz1UdC5jbG9uZSh0LG8pO2xldCByPWUqMztyZXR1cm4gb1tyXT1uLngsb1tyKzFdPW4ueSxvW3IrMl09bi56LG99O1R0LmdldFJvdz1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPXRbZV0scj10W2UrM10saT10W2UrNl07cmV0dXJuIG4ueD1vLG4ueT1yLG4uej1pLG59O1R0LnNldFJvdz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSxvPVR0LmNsb25lKHQsbyksb1tlXT1uLngsb1tlKzNdPW4ueSxvW2UrNl09bi56LG99O2t4PW5ldyBhO1R0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVR0LmdldFNjYWxlKHQsa3gpLHI9ZS54L28ueCxpPWUueS9vLnkscz1lLnovby56O3JldHVybiBuWzBdPXRbMF0qcixuWzFdPXRbMV0qcixuWzJdPXRbMl0qcixuWzNdPXRbM10qaSxuWzRdPXRbNF0qaSxuWzVdPXRbNV0qaSxuWzZdPXRbNl0qcyxuWzddPXRbN10qcyxuWzhdPXRbOF0qcyxufTtHeD1uZXcgYTtUdC5zZXRVbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89VHQuZ2V0U2NhbGUodCxHeCkscj1lL28ueCxpPWUvby55LHM9ZS9vLno7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSpyLG5bM109dFszXSppLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSpzLG5bN109dFs3XSpzLG5bOF09dFs4XSpzLG59O1BtPW5ldyBhO1R0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx0WzJdLFBtKSksZS55PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbM10sdFs0XSx0WzVdLFBtKSksZS56PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbNl0sdFs3XSx0WzhdLFBtKSksZX07djE9bmV3IGE7VHQuZ2V0TWF4aW11bVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5nZXRTY2FsZSh0LHYxKSxhLm1heGltdW1Db21wb25lbnQodjEpfTtWeD1uZXcgYTtUdC5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1UdC5nZXRTY2FsZSh0LFZ4KTtyZXR1cm4gblswXT1lWzBdKm8ueCxuWzFdPWVbMV0qby54LG5bMl09ZVsyXSpvLngsblszXT1lWzNdKm8ueSxuWzRdPWVbNF0qby55LG5bNV09ZVs1XSpvLnksbls2XT1lWzZdKm8ueixuWzddPWVbN10qby56LG5bOF09ZVs4XSpvLnosbn07eng9bmV3IGE7VHQuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPVR0LmdldFNjYWxlKHQsengpO3JldHVybiBlWzBdPXRbMF0vbi54LGVbMV09dFsxXS9uLngsZVsyXT10WzJdL24ueCxlWzNdPXRbM10vbi55LGVbNF09dFs0XS9uLnksZVs1XT10WzVdL24ueSxlWzZdPXRbNl0vbi56LGVbN109dFs3XS9uLnosZVs4XT10WzhdL24ueixlfTtUdC5tdWx0aXBseT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplWzBdK3RbM10qZVsxXSt0WzZdKmVbMl0scj10WzFdKmVbMF0rdFs0XSplWzFdK3RbN10qZVsyXSxpPXRbMl0qZVswXSt0WzVdKmVbMV0rdFs4XSplWzJdLHM9dFswXSplWzNdK3RbM10qZVs0XSt0WzZdKmVbNV0sZj10WzFdKmVbM10rdFs0XSplWzRdK3RbN10qZVs1XSx1PXRbMl0qZVszXSt0WzVdKmVbNF0rdFs4XSplWzVdLGM9dFswXSplWzZdK3RbM10qZVs3XSt0WzZdKmVbOF0sbD10WzFdKmVbNl0rdFs0XSplWzddK3RbN10qZVs4XSxwPXRbMl0qZVs2XSt0WzVdKmVbN10rdFs4XSplWzhdO3JldHVybiBuWzBdPW8sblsxXT1yLG5bMl09aSxuWzNdPXMsbls0XT1mLG5bNV09dSxuWzZdPWMsbls3XT1sLG5bOF09cCxufTtUdC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0rZVswXSxuWzFdPXRbMV0rZVsxXSxuWzJdPXRbMl0rZVsyXSxuWzNdPXRbM10rZVszXSxuWzRdPXRbNF0rZVs0XSxuWzVdPXRbNV0rZVs1XSxuWzZdPXRbNl0rZVs2XSxuWzddPXRbN10rZVs3XSxuWzhdPXRbOF0rZVs4XSxufTtUdC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXS1lWzBdLG5bMV09dFsxXS1lWzFdLG5bMl09dFsyXS1lWzJdLG5bM109dFszXS1lWzNdLG5bNF09dFs0XS1lWzRdLG5bNV09dFs1XS1lWzVdLG5bNl09dFs2XS1lWzZdLG5bN109dFs3XS1lWzddLG5bOF09dFs4XS1lWzhdLG59O1R0Lm11bHRpcGx5QnlWZWN0b3I9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPWUueCxyPWUueSxpPWUueixzPXRbMF0qbyt0WzNdKnIrdFs2XSppLGY9dFsxXSpvK3RbNF0qcit0WzddKmksdT10WzJdKm8rdFs1XSpyK3RbOF0qaTtyZXR1cm4gbi54PXMsbi55PWYsbi56PXUsbn07VHQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSplLG5bMV09dFsxXSplLG5bMl09dFsyXSplLG5bM109dFszXSplLG5bNF09dFs0XSplLG5bNV09dFs1XSplLG5bNl09dFs2XSplLG5bN109dFs3XSplLG5bOF09dFs4XSplLG59O1R0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUueCxuWzFdPXRbMV0qZS54LG5bMl09dFsyXSplLngsblszXT10WzNdKmUueSxuWzRdPXRbNF0qZS55LG5bNV09dFs1XSplLnksbls2XT10WzZdKmUueixuWzddPXRbN10qZS56LG5bOF09dFs4XSplLnosbn07VHQubXVsdGlwbHlCeVVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUsblsxXT10WzFdKmUsblsyXT10WzJdKmUsblszXT10WzNdKmUsbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddKmUsbls4XT10WzhdKmUsbn07VHQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZX07VHQudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj10WzBdLG89dFszXSxyPXRbNl0saT10WzFdLHM9dFs0XSxmPXRbN10sdT10WzJdLGM9dFs1XSxsPXRbOF07cmV0dXJuIGVbMF09bixlWzFdPW8sZVsyXT1yLGVbM109aSxlWzRdPXMsZVs1XT1mLGVbNl09dSxlWzddPWMsZVs4XT1sLGV9O01tPVsxLDAsMF0sTm09WzIsMiwxXTtYbD1uZXcgVHQsRjE9bmV3IFR0O1R0LmNvbXB1dGVFaWdlbkRlY29tcG9zaXRpb249ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IG49UC5FUFNJTE9OMjAsbz0xMCxyPTAsaT0wO20oZSl8fChlPXt9KTtsZXQgcz1lLnVuaXRhcnk9VHQuY2xvbmUoVHQuSURFTlRJVFksZS51bml0YXJ5KSxmPWUuZGlhZ29uYWw9VHQuY2xvbmUodCxlLmRpYWdvbmFsKSx1PW4qangoZik7Zm9yKDtpPG8mJkh4KGYpPnU7KXF4KGYsWGwpLFR0LnRyYW5zcG9zZShYbCxGMSksVHQubXVsdGlwbHkoZixYbCxmKSxUdC5tdWx0aXBseShGMSxmLGYpLFR0Lm11bHRpcGx5KHMsWGwscyksKytyPjImJigrK2kscj0wKTtyZXR1cm4gZX07VHQuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT1NYXRoLmFicyh0WzBdKSxlWzFdPU1hdGguYWJzKHRbMV0pLGVbMl09TWF0aC5hYnModFsyXSksZVszXT1NYXRoLmFicyh0WzNdKSxlWzRdPU1hdGguYWJzKHRbNF0pLGVbNV09TWF0aC5hYnModFs1XSksZVs2XT1NYXRoLmFicyh0WzZdKSxlWzddPU1hdGguYWJzKHRbN10pLGVbOF09TWF0aC5hYnModFs4XSksZX07VHQuZGV0ZXJtaW5hbnQ9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpO2xldCBlPXRbMF0sbj10WzNdLG89dFs2XSxyPXRbMV0saT10WzRdLHM9dFs3XSxmPXRbMl0sdT10WzVdLGM9dFs4XTtyZXR1cm4gZSooaSpjLXUqcykrcioodSpvLW4qYykrZioobipzLWkqbyl9O1R0LmludmVyc2U9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXRbMF0sbz10WzFdLHI9dFsyXSxpPXRbM10scz10WzRdLGY9dFs1XSx1PXRbNl0sYz10WzddLGw9dFs4XSxwPVR0LmRldGVybWluYW50KHQpO2lmKE1hdGguYWJzKHApPD1QLkVQU0lMT04xNSl0aHJvdyBuZXcgRCgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIik7ZVswXT1zKmwtYypmLGVbMV09YypyLW8qbCxlWzJdPW8qZi1zKnIsZVszXT11KmYtaSpsLGVbNF09bipsLXUqcixlWzVdPWkqci1uKmYsZVs2XT1pKmMtdSpzLGVbN109dSpvLW4qYyxlWzhdPW4qcy1pKm87bGV0IGQ9MS9wO3JldHVybiBUdC5tdWx0aXBseUJ5U2NhbGFyKGUsZCxlKX07S3g9bmV3IFR0O1R0LmludmVyc2VUcmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxUdC5pbnZlcnNlKFR0LnRyYW5zcG9zZSh0LEt4KSxlKX07VHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzNdPT09ZVszXSYmdFs0XT09PWVbNF0mJnRbNV09PT1lWzVdJiZ0WzZdPT09ZVs2XSYmdFs3XT09PWVbN10mJnRbOF09PT1lWzhdfTtUdC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj1uPz8wLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh0WzBdLWVbMF0pPD1uJiZNYXRoLmFicyh0WzFdLWVbMV0pPD1uJiZNYXRoLmFicyh0WzJdLWVbMl0pPD1uJiZNYXRoLmFicyh0WzNdLWVbM10pPD1uJiZNYXRoLmFicyh0WzRdLWVbNF0pPD1uJiZNYXRoLmFicyh0WzVdLWVbNV0pPD1uJiZNYXRoLmFicyh0WzZdLWVbNl0pPD1uJiZNYXRoLmFicyh0WzddLWVbN10pPD1uJiZNYXRoLmFicyh0WzhdLWVbOF0pPD1ufTtUdC5JREVOVElUWT1PYmplY3QuZnJlZXplKG5ldyBUdCgxLDAsMCwwLDEsMCwwLDAsMSkpO1R0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgVHQoMCwwLDAsMCwwLDAsMCwwLDApKTtUdC5DT0xVTU4wUk9XMD0wO1R0LkNPTFVNTjBST1cxPTE7VHQuQ09MVU1OMFJPVzI9MjtUdC5DT0xVTU4xUk9XMD0zO1R0LkNPTFVNTjFST1cxPTQ7VHQuQ09MVU1OMVJPVzI9NTtUdC5DT0xVTU4yUk9XMD02O1R0LkNPTFVNTjJST1cxPTc7VHQuQ09MVU1OMlJPVzI9ODtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUdC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFR0LnBhY2tlZExlbmd0aH19fSk7VHQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5jbG9uZSh0aGlzLHQpfTtUdC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5lcXVhbHModGhpcyx0KX07VHQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0WzBdPT09ZVtuXSYmdFsxXT09PWVbbisxXSYmdFsyXT09PWVbbisyXSYmdFszXT09PWVbbiszXSYmdFs0XT09PWVbbis0XSYmdFs1XT09PWVbbis1XSYmdFs2XT09PWVbbis2XSYmdFs3XT09PWVbbis3XSYmdFs4XT09PWVbbis4XX07VHQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gVHQuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSl9O1R0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzWzBdfSwgJHt0aGlzWzNdfSwgJHt0aGlzWzZdfSkKKCR7dGhpc1sxXX0sICR7dGhpc1s0XX0sICR7dGhpc1s3XX0pCigke3RoaXNbMl19LCAke3RoaXNbNV19LCAke3RoaXNbOF19KWB9O1o9VHR9KTtmdW5jdGlvbiB2dCh0LGUsbixvKXt0aGlzLng9dD8/MCx0aGlzLnk9ZT8/MCx0aGlzLno9bj8/MCx0aGlzLnc9bz8/MH12YXIgWWwsTDEsV3gsSW0sVG8sWHgsWXgsRDEsbWUsX3I9JCgoKT0+e1d0KCk7ZnQoKTtIdCgpO0t0KCk7dnQuZnJvbUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxuLG8scil7cmV0dXJuIG0ocik/KHIueD10LHIueT1lLHIuej1uLHIudz1vLHIpOm5ldyB2dCh0LGUsbixvKX07dnQuZnJvbUNvbG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLG0oZSk/KGUueD10LnJlZCxlLnk9dC5ncmVlbixlLno9dC5ibHVlLGUudz10LmFscGhhLGUpOm5ldyB2dCh0LnJlZCx0LmdyZWVuLHQuYmx1ZSx0LmFscGhhKX07dnQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlLnc9dC53LGUpOm5ldyB2dCh0LngsdC55LHQueix0LncpfTt2dC5wYWNrZWRMZW5ndGg9NDt2dC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10LngsZVtuKytdPXQueSxlW24rK109dC56LGVbbl09dC53LGV9O3Z0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgdnQpLG4ueD10W2UrK10sbi55PXRbZSsrXSxuLno9dFtlKytdLG4udz10W2VdLG59O3Z0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bio0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKXZ0LnBhY2sodFtyXSxlLHIqNCk7cmV0dXJuIGV9O3Z0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vNDplPW5ldyBBcnJheShuLzQpO2ZvcihsZXQgbz0wO288bjtvKz00KXtsZXQgcj1vLzQ7ZVtyXT12dC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTt2dC5mcm9tQXJyYXk9dnQudW5wYWNrO3Z0Lm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55LHQueix0LncpfTt2dC5taW5pbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5taW4odC54LHQueSx0LnosdC53KX07dnQubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5taW4odC54LGUueCksbi55PU1hdGgubWluKHQueSxlLnkpLG4uej1NYXRoLm1pbih0LnosZS56KSxuLnc9TWF0aC5taW4odC53LGUudyksbn07dnQubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5tYXgodC54LGUueCksbi55PU1hdGgubWF4KHQueSxlLnkpLG4uej1NYXRoLm1heCh0LnosZS56KSxuLnc9TWF0aC5tYXgodC53LGUudyksbn07dnQuY2xhbXA9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHkudHlwZU9mLm9iamVjdCgibWF4IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyk7bGV0IHI9UC5jbGFtcCh0LngsZS54LG4ueCksaT1QLmNsYW1wKHQueSxlLnksbi55KSxzPVAuY2xhbXAodC56LGUueixuLnopLGY9UC5jbGFtcCh0LncsZS53LG4udyk7cmV0dXJuIG8ueD1yLG8ueT1pLG8uej1zLG8udz1mLG99O3Z0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0LnkrdC56KnQueit0LncqdC53fTt2dC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh2dC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07WWw9bmV3IHZ0O3Z0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdnQuc3VidHJhY3QodCxlLFlsKSx2dC5tYWduaXR1ZGUoWWwpfTt2dC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx2dC5zdWJ0cmFjdCh0LGUsWWwpLHZ0Lm1hZ25pdHVkZVNxdWFyZWQoWWwpfTt2dC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXZ0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L24sZS55PXQueS9uLGUuej10LnovbixlLnc9dC53L24saXNOYU4oZS54KXx8aXNOYU4oZS55KXx8aXNOYU4oZS56KXx8aXNOYU4oZS53KSl0aHJvdyBuZXcgRCgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O3Z0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O3Z0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG4uej10LnoqZS56LG4udz10LncqZS53LG59O3Z0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxuLno9dC56L2UueixuLnc9dC53L2UudyxufTt2dC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxuLno9dC56K2UueixuLnc9dC53K2UudyxufTt2dC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG4uej10LnotZS56LG4udz10LnctZS53LG59O3Z0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxuLnc9dC53KmUsbn07dnQuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2Usbi55PXQueS9lLG4uej10LnovZSxuLnc9dC53L2Usbn07dnQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07dnQuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZS56PU1hdGguYWJzKHQueiksZS53PU1hdGguYWJzKHQudyksZX07TDE9bmV3IHZ0O3Z0LmxlcnA9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHkudHlwZU9mLm9iamVjdCgiZW5kIixlKSx5LnR5cGVPZi5udW1iZXIoInQiLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSx2dC5tdWx0aXBseUJ5U2NhbGFyKGUsbixMMSksbz12dC5tdWx0aXBseUJ5U2NhbGFyKHQsMS1uLG8pLHZ0LmFkZChMMSxvLG8pfTtXeD1uZXcgdnQ7dnQubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj12dC5ub3JtYWxpemUodCxXeCk7cmV0dXJuIHZ0LmFicyhuLG4pLG4ueDw9bi55P24ueDw9bi56P24ueDw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9YLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4uejw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9aLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4ueTw9bi56P24ueTw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9ZLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4uejw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9aLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpLGV9O3Z0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUueiYmdC53PT09ZS53fTt2dC5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQueD09PWVbbl0mJnQueT09PWVbbisxXSYmdC56PT09ZVtuKzJdJiZ0Lnc9PT1lW24rM119O3Z0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZQLmVxdWFsc0Vwc2lsb24odC54LGUueCxuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC55LGUueSxuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC56LGUueixuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC53LGUudyxuLG8pfTt2dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHZ0KDAsMCwwLDApKTt2dC5PTkU9T2JqZWN0LmZyZWV6ZShuZXcgdnQoMSwxLDEsMSkpO3Z0LlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyB2dCgxLDAsMCwwKSk7dnQuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IHZ0KDAsMSwwLDApKTt2dC5VTklUX1o9T2JqZWN0LmZyZWV6ZShuZXcgdnQoMCwwLDEsMCkpO3Z0LlVOSVRfVz1PYmplY3QuZnJlZXplKG5ldyB2dCgwLDAsMCwxKSk7dnQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiB2dC5jbG9uZSh0aGlzLHQpfTt2dC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB2dC5lcXVhbHModGhpcyx0KX07dnQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2dC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTt2dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0sICR7dGhpcy53fSlgfTtJbT1uZXcgRmxvYXQzMkFycmF5KDEpLFRvPW5ldyBVaW50OEFycmF5KEltLmJ1ZmZlciksWHg9bmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKSxZeD1uZXcgVWludDhBcnJheShYeC5idWZmZXIpLEQxPVl4WzBdPT09Njg7dnQucGFja0Zsb2F0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLG0oZSl8fChlPW5ldyB2dCksSW1bMF09dCxEMT8oZS54PVRvWzBdLGUueT1Ub1sxXSxlLno9VG9bMl0sZS53PVRvWzNdKTooZS54PVRvWzNdLGUueT1Ub1syXSxlLno9VG9bMV0sZS53PVRvWzBdKSxlfTt2dC51bnBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJwYWNrZWRGbG9hdCIsdCksRDE/KFRvWzBdPXQueCxUb1sxXT10LnksVG9bMl09dC56LFRvWzNdPXQudyk6KFRvWzBdPXQudyxUb1sxXT10LnosVG9bMl09dC55LFRvWzNdPXQueCksSW1bMF19O21lPXZ0fSk7dmFyIHZtLEl0LHllPSQoKCk9Pnt2bT17fTt2bS5FTVBUWV9PQkpFQ1Q9T2JqZWN0LmZyZWV6ZSh7fSk7dm0uRU1QVFlfQVJSQVk9T2JqZWN0LmZyZWV6ZShbXSk7SXQ9dm19KTtmdW5jdGlvbiBzZih0KXt0aGlzLm5hbWU9IlJ1bnRpbWVFcnJvciIsdGhpcy5tZXNzYWdlPXQ7bGV0IGU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChuKXtlPW4uc3RhY2t9dGhpcy5zdGFjaz1lfXZhciBBZSx0aT0kKCgpPT57ZnQoKTttKE9iamVjdC5jcmVhdGUpJiYoc2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxzZi5wcm90b3R5cGUuY29uc3RydWN0b3I9c2YpO3NmLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O0FlPXNmfSk7ZnVuY3Rpb24gd3QodCxlLG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyl7dGhpc1swXT10Pz8wLHRoaXNbMV09cj8/MCx0aGlzWzJdPXU/PzAsdGhpc1szXT1kPz8wLHRoaXNbNF09ZT8/MCx0aGlzWzVdPWk/PzAsdGhpc1s2XT1jPz8wLHRoaXNbN109aD8/MCx0aGlzWzhdPW4/PzAsdGhpc1s5XT1zPz8wLHRoaXNbMTBdPWw/PzAsdGhpc1sxMV09Xz8/MCx0aGlzWzEyXT1vPz8wLHRoaXNbMTNdPWY/PzAsdGhpc1sxNF09cD8/MCx0aGlzWzE1XT1nPz8wfXZhciBxYyxLYyxjZiwkeCxaeCxGbSxCMSxReCxKeCx0QyxlQyxuQyxvQyxyQyxzdCxrbj0kKCgpPT57RHQoKTtfcigpO1d0KCk7eWUoKTtmdCgpO0h0KCk7S3QoKTtVbigpO3RpKCk7d3QucGFja2VkTGVuZ3RoPTE2O3d0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXRbMF0sZVtuKytdPXRbMV0sZVtuKytdPXRbMl0sZVtuKytdPXRbM10sZVtuKytdPXRbNF0sZVtuKytdPXRbNV0sZVtuKytdPXRbNl0sZVtuKytdPXRbN10sZVtuKytdPXRbOF0sZVtuKytdPXRbOV0sZVtuKytdPXRbMTBdLGVbbisrXT10WzExXSxlW24rK109dFsxMl0sZVtuKytdPXRbMTNdLGVbbisrXT10WzE0XSxlW25dPXRbMTVdLGV9O3d0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgd3QpLG5bMF09dFtlKytdLG5bMV09dFtlKytdLG5bMl09dFtlKytdLG5bM109dFtlKytdLG5bNF09dFtlKytdLG5bNV09dFtlKytdLG5bNl09dFtlKytdLG5bN109dFtlKytdLG5bOF09dFtlKytdLG5bOV09dFtlKytdLG5bMTBdPXRbZSsrXSxuWzExXT10W2UrK10sblsxMl09dFtlKytdLG5bMTNdPXRbZSsrXSxuWzE0XT10W2UrK10sblsxNV09dFtlXSxufTt3dC5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImFycmF5Iix0KTtsZXQgbj10Lmxlbmd0aCxvPW4qMTY7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMTYgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKXd0LnBhY2sodFtyXSxlLHIqMTYpO3JldHVybiBlfTt3dC51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHkuZGVmaW5lZCgiYXJyYXkiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDE2KSx0Lmxlbmd0aCUxNiE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYuIik7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uLzE2OmU9bmV3IEFycmF5KG4vMTYpO2ZvcihsZXQgbz0wO288bjtvKz0xNil7bGV0IHI9by8xNjtlW3JdPXd0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O3d0LmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGUpOm5ldyB3dCh0WzBdLHRbNF0sdFs4XSx0WzEyXSx0WzFdLHRbNV0sdFs5XSx0WzEzXSx0WzJdLHRbNl0sdFsxMF0sdFsxNF0sdFszXSx0WzddLHRbMTFdLHRbMTVdKX07d3QuZnJvbUFycmF5PXd0LnVucGFjazt3dC5mcm9tQ29sdW1uTWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoInZhbHVlcyIsdCksd3QuY2xvbmUodCxlKX07d3QuZnJvbVJvd01ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT10WzFdLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPXRbMl0sZVs5XT10WzZdLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXRbM10sZVsxM109dFs3XSxlWzE0XT10WzExXSxlWzE1XT10WzE1XSxlKTpuZXcgd3QodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF0sdFs5XSx0WzEwXSx0WzExXSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XSl9O3d0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsdCksZT1lPz9hLlpFUk8sbShuKT8oblswXT10WzBdLG5bMV09dFsxXSxuWzJdPXRbMl0sblszXT0wLG5bNF09dFszXSxuWzVdPXRbNF0sbls2XT10WzVdLG5bN109MCxuWzhdPXRbNl0sbls5XT10WzddLG5bMTBdPXRbOF0sblsxMV09MCxuWzEyXT1lLngsblsxM109ZS55LG5bMTRdPWUueixuWzE1XT0xLG4pOm5ldyB3dCh0WzBdLHRbM10sdFs2XSxlLngsdFsxXSx0WzRdLHRbN10sZS55LHRbMl0sdFs1XSx0WzhdLGUueiwwLDAsMCwxKX07d3QuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGU9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsbiksbShvKXx8KG89bmV3IHd0KTtsZXQgcj1uLngsaT1uLnkscz1uLnosZj1lLngqZS54LHU9ZS54KmUueSxjPWUueCplLnosbD1lLngqZS53LHA9ZS55KmUueSxkPWUueSplLnosaD1lLnkqZS53LF89ZS56KmUueixnPWUueiplLncsYj1lLncqZS53LHc9Zi1wLV8rYixPPTIqKHUtZyksRT0yKihjK2gpLFQ9MioodStnKSx4PS1mK3AtXytiLE09MiooZC1sKSxOPTIqKGMtaCksRj0yKihkK2wpLEk9LWYtcCtfK2I7cmV0dXJuIG9bMF09dypyLG9bMV09VCpyLG9bMl09TipyLG9bM109MCxvWzRdPU8qaSxvWzVdPXgqaSxvWzZdPUYqaSxvWzddPTAsb1s4XT1FKnMsb1s5XT1NKnMsb1sxMF09SSpzLG9bMTFdPTAsb1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10Lnosb1sxNV09MSxvfTt3dC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlIix0KSx3dC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZSh0LnRyYW5zbGF0aW9uLHQucm90YXRpb24sdC5zY2FsZSxlKX07d3QuZnJvbVRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb24iLHQpLHd0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKFouSURFTlRJVFksdCxlKX07d3QuZnJvbVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic2NhbGUiLHQpLG0oZSk/KGVbMF09dC54LGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09MCxlWzVdPXQueSxlWzZdPTAsZVs3XT0wLGVbOF09MCxlWzldPTAsZVsxMF09dC56LGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlKTpuZXcgd3QodC54LDAsMCwwLDAsdC55LDAsMCwwLDAsdC56LDAsMCwwLDAsMSl9O3d0LmZyb21Vbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJzY2FsZSIsdCksbShlKT8oZVswXT10LGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09MCxlWzVdPXQsZVs2XT0wLGVbN109MCxlWzhdPTAsZVs5XT0wLGVbMTBdPXQsZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLGUpOm5ldyB3dCh0LDAsMCwwLDAsdCwwLDAsMCwwLHQsMCwwLDAsMCwxKX07d3QuZnJvbVJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicm90YXRpb24iLHQpLG0oZSl8fChlPW5ldyB3dCksZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT0wLGVbNF09dFszXSxlWzVdPXRbNF0sZVs2XT10WzVdLGVbN109MCxlWzhdPXRbNl0sZVs5XT10WzddLGVbMTBdPXRbOF0sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLGV9O3FjPW5ldyBhLEtjPW5ldyBhLGNmPW5ldyBhO3d0LmZyb21DYW1lcmE9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhbWVyYSIsdCk7bGV0IG49dC5wb3NpdGlvbixvPXQuZGlyZWN0aW9uLHI9dC51cDt5LnR5cGVPZi5vYmplY3QoImNhbWVyYS5wb3NpdGlvbiIsbikseS50eXBlT2Yub2JqZWN0KCJjYW1lcmEuZGlyZWN0aW9uIixvKSx5LnR5cGVPZi5vYmplY3QoImNhbWVyYS51cCIsciksYS5ub3JtYWxpemUobyxxYyksYS5ub3JtYWxpemUoYS5jcm9zcyhxYyxyLEtjKSxLYyksYS5ub3JtYWxpemUoYS5jcm9zcyhLYyxxYyxjZiksY2YpO2xldCBpPUtjLngscz1LYy55LGY9S2Mueix1PXFjLngsYz1xYy55LGw9cWMueixwPWNmLngsZD1jZi55LGg9Y2YueixfPW4ueCxnPW4ueSxiPW4ueix3PWkqLV8rcyotZytmKi1iLE89cCotXytkKi1nK2gqLWIsRT11Kl8rYypnK2wqYjtyZXR1cm4gbShlKT8oZVswXT1pLGVbMV09cCxlWzJdPS11LGVbM109MCxlWzRdPXMsZVs1XT1kLGVbNl09LWMsZVs3XT0wLGVbOF09ZixlWzldPWgsZVsxMF09LWwsZVsxMV09MCxlWzEyXT13LGVbMTNdPU8sZVsxNF09RSxlWzE1XT0xLGUpOm5ldyB3dChpLHMsZix3LHAsZCxoLE8sLXUsLWMsLWwsRSwwLDAsMCwxKX07d3QuY29tcHV0ZVBlcnNwZWN0aXZlRmllbGRPZlZpZXc9ZnVuY3Rpb24odCxlLG4sbyxyKXt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImZvdlkiLHQsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJmb3ZZIix0LE1hdGguUEkpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigibmVhciIsbiwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImZhciIsbywwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIscik7bGV0IHM9MS9NYXRoLnRhbih0Ki41KSxmPXMvZSx1PShvK24pLyhuLW8pLGM9MipvKm4vKG4tbyk7cmV0dXJuIHJbMF09ZixyWzFdPTAsclsyXT0wLHJbM109MCxyWzRdPTAscls1XT1zLHJbNl09MCxyWzddPTAscls4XT0wLHJbOV09MCxyWzEwXT11LHJbMTFdPS0xLHJbMTJdPTAsclsxM109MCxyWzE0XT1jLHJbMTVdPTAscn07d3QuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcj1mdW5jdGlvbih0LGUsbixvLHIsaSxzKXt5LnR5cGVPZi5udW1iZXIoImxlZnQiLHQpLHkudHlwZU9mLm51bWJlcigicmlnaHQiLGUpLHkudHlwZU9mLm51bWJlcigiYm90dG9tIixuKSx5LnR5cGVPZi5udW1iZXIoInRvcCIsbykseS50eXBlT2YubnVtYmVyKCJuZWFyIixyKSx5LnR5cGVPZi5udW1iZXIoImZhciIsaSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHMpO2xldCBmPTEvKGUtdCksdT0xLyhvLW4pLGM9MS8oaS1yKSxsPS0oZSt0KSpmLHA9LShvK24pKnUsZD0tKGkrcikqYztyZXR1cm4gZio9Mix1Kj0yLGMqPS0yLHNbMF09ZixzWzFdPTAsc1syXT0wLHNbM109MCxzWzRdPTAsc1s1XT11LHNbNl09MCxzWzddPTAsc1s4XT0wLHNbOV09MCxzWzEwXT1jLHNbMTFdPTAsc1sxMl09bCxzWzEzXT1wLHNbMTRdPWQsc1sxNV09MSxzfTt3dC5jb21wdXRlUGVyc3BlY3RpdmVPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7eS50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSx5LnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSx5LnR5cGVPZi5udW1iZXIoImJvdHRvbSIsbikseS50eXBlT2YubnVtYmVyKCJ0b3AiLG8pLHkudHlwZU9mLm51bWJlcigibmVhciIscikseS50eXBlT2YubnVtYmVyKCJmYXIiLGkpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixzKTtsZXQgZj0yKnIvKGUtdCksdT0yKnIvKG8tbiksYz0oZSt0KS8oZS10KSxsPShvK24pLyhvLW4pLHA9LShpK3IpLyhpLXIpLGQ9LTEsaD0tMippKnIvKGktcik7cmV0dXJuIHNbMF09ZixzWzFdPTAsc1syXT0wLHNbM109MCxzWzRdPTAsc1s1XT11LHNbNl09MCxzWzddPTAsc1s4XT1jLHNbOV09bCxzWzEwXT1wLHNbMTFdPWQsc1sxMl09MCxzWzEzXT0wLHNbMTRdPWgsc1sxNV09MCxzfTt3dC5jb21wdXRlSW5maW5pdGVQZXJzcGVjdGl2ZU9mZkNlbnRlcj1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSx5LnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSx5LnR5cGVPZi5udW1iZXIoImJvdHRvbSIsbikseS50eXBlT2YubnVtYmVyKCJ0b3AiLG8pLHkudHlwZU9mLm51bWJlcigibmVhciIscikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBzPTIqci8oZS10KSxmPTIqci8oby1uKSx1PShlK3QpLyhlLXQpLGM9KG8rbikvKG8tbiksbD0tMSxwPS0xLGQ9LTIqcjtyZXR1cm4gaVswXT1zLGlbMV09MCxpWzJdPTAsaVszXT0wLGlbNF09MCxpWzVdPWYsaVs2XT0wLGlbN109MCxpWzhdPXUsaVs5XT1jLGlbMTBdPWwsaVsxMV09cCxpWzEyXT0wLGlbMTNdPTAsaVsxNF09ZCxpWzE1XT0wLGl9O3d0LmNvbXB1dGVWaWV3cG9ydFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSxuLG8pe20obyl8fChvPW5ldyB3dCksdD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IHI9dC54Pz8wLGk9dC55Pz8wLHM9dC53aWR0aD8/MCxmPXQuaGVpZ2h0Pz8wO2U9ZT8/MCxuPW4/PzE7bGV0IHU9cyouNSxjPWYqLjUsbD0obi1lKSouNSxwPXUsZD1jLGg9bCxfPXIrdSxnPWkrYyxiPWUrbCx3PTE7cmV0dXJuIG9bMF09cCxvWzFdPTAsb1syXT0wLG9bM109MCxvWzRdPTAsb1s1XT1kLG9bNl09MCxvWzddPTAsb1s4XT0wLG9bOV09MCxvWzEwXT1oLG9bMTFdPTAsb1sxMl09XyxvWzEzXT1nLG9bMTRdPWIsb1sxNV09dyxvfTt3dC5jb21wdXRlVmlldz1mdW5jdGlvbih0LGUsbixvLHIpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInBvc2l0aW9uIix0KSx5LnR5cGVPZi5vYmplY3QoImRpcmVjdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJ1cCIsbikseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsbykseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHIpLHJbMF09by54LHJbMV09bi54LHJbMl09LWUueCxyWzNdPTAscls0XT1vLnkscls1XT1uLnkscls2XT0tZS55LHJbN109MCxyWzhdPW8ueixyWzldPW4ueixyWzEwXT0tZS56LHJbMTFdPTAsclsxMl09LWEuZG90KG8sdCksclsxM109LWEuZG90KG4sdCksclsxNF09YS5kb3QoZSx0KSxyWzE1XT0xLHJ9O3d0LnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzExXT10WzExXSxlWzEyXT10WzEyXSxlWzEzXT10WzEzXSxlWzE0XT10WzE0XSxlWzE1XT10WzE1XSxlKTpbdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF0sdFs5XSx0WzEwXSx0WzExXSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XV19O3d0LmdldEVsZW1lbnRJbmRleD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicm93IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJyb3ciLGUsMykseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiY29sdW1uIix0LDMpLHQqNCtlfTt3dC5nZXRDb2x1bW49ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lKjQscj10W29dLGk9dFtvKzFdLHM9dFtvKzJdLGY9dFtvKzNdO3JldHVybiBuLng9cixuLnk9aSxuLno9cyxuLnc9ZixufTt3dC5zZXRDb2x1bW49ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSxvPXd0LmNsb25lKHQsbyk7bGV0IHI9ZSo0O3JldHVybiBvW3JdPW4ueCxvW3IrMV09bi55LG9bcisyXT1uLnosb1tyKzNdPW4udyxvfTt3dC5nZXRSb3c9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10W2VdLHI9dFtlKzRdLGk9dFtlKzhdLHM9dFtlKzEyXTtyZXR1cm4gbi54PW8sbi55PXIsbi56PWksbi53PXMsbn07d3Quc2V0Um93PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwzKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89d3QuY2xvbmUodCxvKSxvW2VdPW4ueCxvW2UrNF09bi55LG9bZSs4XT1uLnosb1tlKzEyXT1uLncsb307d3Quc2V0VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSxuWzFdPXRbMV0sblsyXT10WzJdLG5bM109dFszXSxuWzRdPXRbNF0sbls1XT10WzVdLG5bNl09dFs2XSxuWzddPXRbN10sbls4XT10WzhdLG5bOV09dFs5XSxuWzEwXT10WzEwXSxuWzExXT10WzExXSxuWzEyXT1lLngsblsxM109ZS55LG5bMTRdPWUueixuWzE1XT10WzE1XSxufTskeD1uZXcgYTt3dC5zZXRTY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz13dC5nZXRTY2FsZSh0LCR4KSxyPWUueC9vLngsaT1lLnkvby55LHM9ZS56L28uejtyZXR1cm4gblswXT10WzBdKnIsblsxXT10WzFdKnIsblsyXT10WzJdKnIsblszXT10WzNdLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSppLG5bN109dFs3XSxuWzhdPXRbOF0qcyxuWzldPXRbOV0qcyxuWzEwXT10WzEwXSpzLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O1p4PW5ldyBhO3d0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz13dC5nZXRTY2FsZSh0LFp4KSxyPWUvby54LGk9ZS9vLnkscz1lL28uejtyZXR1cm4gblswXT10WzBdKnIsblsxXT10WzFdKnIsblsyXT10WzJdKnIsblszXT10WzNdLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSppLG5bN109dFs3XSxuWzhdPXRbOF0qcyxuWzldPXRbOV0qcyxuWzEwXT10WzEwXSpzLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O0ZtPW5ldyBhO3d0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx0WzJdLEZtKSksZS55PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbNF0sdFs1XSx0WzZdLEZtKSksZS56PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbOF0sdFs5XSx0WzEwXSxGbSkpLGV9O0IxPW5ldyBhO3d0LmdldE1heGltdW1TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZ2V0U2NhbGUodCxCMSksYS5tYXhpbXVtQ29tcG9uZW50KEIxKX07UXg9bmV3IGE7d3Quc2V0Um90YXRpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89d3QuZ2V0U2NhbGUodCxReCk7cmV0dXJuIG5bMF09ZVswXSpvLngsblsxXT1lWzFdKm8ueCxuWzJdPWVbMl0qby54LG5bM109dFszXSxuWzRdPWVbM10qby55LG5bNV09ZVs0XSpvLnksbls2XT1lWzVdKm8ueSxuWzddPXRbN10sbls4XT1lWzZdKm8ueixuWzldPWVbN10qby56LG5bMTBdPWVbOF0qby56LG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O0p4PW5ldyBhO3d0LmdldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj13dC5nZXRTY2FsZSh0LEp4KTtyZXR1cm4gZVswXT10WzBdL24ueCxlWzFdPXRbMV0vbi54LGVbMl09dFsyXS9uLngsZVszXT10WzRdL24ueSxlWzRdPXRbNV0vbi55LGVbNV09dFs2XS9uLnksZVs2XT10WzhdL24ueixlWzddPXRbOV0vbi56LGVbOF09dFsxMF0vbi56LGV9O3d0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10WzBdLHI9dFsxXSxpPXRbMl0scz10WzNdLGY9dFs0XSx1PXRbNV0sYz10WzZdLGw9dFs3XSxwPXRbOF0sZD10WzldLGg9dFsxMF0sXz10WzExXSxnPXRbMTJdLGI9dFsxM10sdz10WzE0XSxPPXRbMTVdLEU9ZVswXSxUPWVbMV0seD1lWzJdLE09ZVszXSxOPWVbNF0sRj1lWzVdLEk9ZVs2XSx2PWVbN10sQj1lWzhdLEE9ZVs5XSxTPWVbMTBdLEM9ZVsxMV0sTD1lWzEyXSx6PWVbMTNdLGo9ZVsxNF0saz1lWzE1XSxxPW8qRStmKlQrcCp4K2cqTSxXPXIqRSt1KlQrZCp4K2IqTSxSPWkqRStjKlQraCp4K3cqTSxudD1zKkUrbCpUK18qeCtPKk0sYXQ9bypOK2YqRitwKkkrZyp2LGx0PXIqTit1KkYrZCpJK2IqdixfdD1pKk4rYypGK2gqSSt3KnYsb3Q9cypOK2wqRitfKkkrTyp2LFB0PW8qQitmKkErcCpTK2cqQyxndD1yKkIrdSpBK2QqUytiKkMsUnQ9aSpCK2MqQStoKlMrdypDLGR0PXMqQitsKkErXypTK08qQyxydD1vKkwrZip6K3AqaitnKmsseHQ9cipMK3UqeitkKmorYiprLEd0PWkqTCtjKnoraCpqK3cqayxwZT1zKkwrbCp6K18qaitPKms7cmV0dXJuIG5bMF09cSxuWzFdPVcsblsyXT1SLG5bM109bnQsbls0XT1hdCxuWzVdPWx0LG5bNl09X3Qsbls3XT1vdCxuWzhdPVB0LG5bOV09Z3QsblsxMF09UnQsblsxMV09ZHQsblsxMl09cnQsblsxM109eHQsblsxNF09R3QsblsxNV09cGUsbn07d3QuYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdK2VbMF0sblsxXT10WzFdK2VbMV0sblsyXT10WzJdK2VbMl0sblszXT10WzNdK2VbM10sbls0XT10WzRdK2VbNF0sbls1XT10WzVdK2VbNV0sbls2XT10WzZdK2VbNl0sbls3XT10WzddK2VbN10sbls4XT10WzhdK2VbOF0sbls5XT10WzldK2VbOV0sblsxMF09dFsxMF0rZVsxMF0sblsxMV09dFsxMV0rZVsxMV0sblsxMl09dFsxMl0rZVsxMl0sblsxM109dFsxM10rZVsxM10sblsxNF09dFsxNF0rZVsxNF0sblsxNV09dFsxNV0rZVsxNV0sbn07d3Quc3VidHJhY3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0tZVswXSxuWzFdPXRbMV0tZVsxXSxuWzJdPXRbMl0tZVsyXSxuWzNdPXRbM10tZVszXSxuWzRdPXRbNF0tZVs0XSxuWzVdPXRbNV0tZVs1XSxuWzZdPXRbNl0tZVs2XSxuWzddPXRbN10tZVs3XSxuWzhdPXRbOF0tZVs4XSxuWzldPXRbOV0tZVs5XSxuWzEwXT10WzEwXS1lWzEwXSxuWzExXT10WzExXS1lWzExXSxuWzEyXT10WzEyXS1lWzEyXSxuWzEzXT10WzEzXS1lWzEzXSxuWzE0XT10WzE0XS1lWzE0XSxuWzE1XT10WzE1XS1lWzE1XSxufTt3dC5tdWx0aXBseVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10WzBdLHI9dFsxXSxpPXRbMl0scz10WzRdLGY9dFs1XSx1PXRbNl0sYz10WzhdLGw9dFs5XSxwPXRbMTBdLGQ9dFsxMl0saD10WzEzXSxfPXRbMTRdLGc9ZVswXSxiPWVbMV0sdz1lWzJdLE89ZVs0XSxFPWVbNV0sVD1lWzZdLHg9ZVs4XSxNPWVbOV0sTj1lWzEwXSxGPWVbMTJdLEk9ZVsxM10sdj1lWzE0XSxCPW8qZytzKmIrYyp3LEE9cipnK2YqYitsKncsUz1pKmcrdSpiK3AqdyxDPW8qTytzKkUrYypULEw9cipPK2YqRStsKlQsej1pKk8rdSpFK3AqVCxqPW8qeCtzKk0rYypOLGs9cip4K2YqTStsKk4scT1pKngrdSpNK3AqTixXPW8qRitzKkkrYyp2K2QsUj1yKkYrZipJK2wqditoLG50PWkqRit1KkkrcCp2K187cmV0dXJuIG5bMF09QixuWzFdPUEsblsyXT1TLG5bM109MCxuWzRdPUMsbls1XT1MLG5bNl09eixuWzddPTAsbls4XT1qLG5bOV09ayxuWzEwXT1xLG5bMTFdPTAsblsxMl09VyxuWzEzXT1SLG5bMTRdPW50LG5bMTVdPTEsbn07d3QubXVsdGlwbHlCeU1hdHJpeDM9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSxyPXRbMV0saT10WzJdLHM9dFs0XSxmPXRbNV0sdT10WzZdLGM9dFs4XSxsPXRbOV0scD10WzEwXSxkPWVbMF0saD1lWzFdLF89ZVsyXSxnPWVbM10sYj1lWzRdLHc9ZVs1XSxPPWVbNl0sRT1lWzddLFQ9ZVs4XSx4PW8qZCtzKmgrYypfLE09cipkK2YqaCtsKl8sTj1pKmQrdSpoK3AqXyxGPW8qZytzKmIrYyp3LEk9cipnK2YqYitsKncsdj1pKmcrdSpiK3AqdyxCPW8qTytzKkUrYypULEE9cipPK2YqRStsKlQsUz1pKk8rdSpFK3AqVDtyZXR1cm4gblswXT14LG5bMV09TSxuWzJdPU4sblszXT0wLG5bNF09RixuWzVdPUksbls2XT12LG5bN109MCxuWzhdPUIsbls5XT1BLG5bMTBdPVMsblsxMV09MCxuWzEyXT10WzEyXSxuWzEzXT10WzEzXSxuWzE0XT10WzE0XSxuWzE1XT10WzE1XSxufTt3dC5tdWx0aXBseUJ5VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9byp0WzBdK3IqdFs0XStpKnRbOF0rdFsxMl0sZj1vKnRbMV0rcip0WzVdK2kqdFs5XSt0WzEzXSx1PW8qdFsyXStyKnRbNl0raSp0WzEwXSt0WzE0XTtyZXR1cm4gblswXT10WzBdLG5bMV09dFsxXSxuWzJdPXRbMl0sblszXT10WzNdLG5bNF09dFs0XSxuWzVdPXRbNV0sbls2XT10WzZdLG5bN109dFs3XSxuWzhdPXRbOF0sbls5XT10WzldLG5bMTBdPXRbMTBdLG5bMTFdPXRbMTFdLG5bMTJdPXMsblsxM109ZixuWzE0XT11LG5bMTVdPXRbMTVdLG59O3d0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lLngscj1lLnksaT1lLno7cmV0dXJuIG89PT0xJiZyPT09MSYmaT09PTE/d3QuY2xvbmUodCxuKTooblswXT1vKnRbMF0sblsxXT1vKnRbMV0sblsyXT1vKnRbMl0sblszXT10WzNdLG5bNF09cip0WzRdLG5bNV09cip0WzVdLG5bNl09cip0WzZdLG5bN109dFs3XSxuWzhdPWkqdFs4XSxuWzldPWkqdFs5XSxuWzEwXT1pKnRbMTBdLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG4pfTt3dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0qZSxuWzFdPXRbMV0qZSxuWzJdPXRbMl0qZSxuWzNdPXRbM10sbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddLG5bOF09dFs4XSplLG5bOV09dFs5XSplLG5bMTBdPXRbMTBdKmUsblsxMV09dFsxMV0sblsxMl09dFsxMl0sblsxM109dFsxM10sblsxNF09dFsxNF0sblsxNV09dFsxNV0sbn07d3QubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9ZS53LGY9dFswXSpvK3RbNF0qcit0WzhdKmkrdFsxMl0qcyx1PXRbMV0qbyt0WzVdKnIrdFs5XSppK3RbMTNdKnMsYz10WzJdKm8rdFs2XSpyK3RbMTBdKmkrdFsxNF0qcyxsPXRbM10qbyt0WzddKnIrdFsxMV0qaSt0WzE1XSpzO3JldHVybiBuLng9ZixuLnk9dSxuLno9YyxuLnc9bCxufTt3dC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9dFswXSpvK3RbNF0qcit0WzhdKmksZj10WzFdKm8rdFs1XSpyK3RbOV0qaSx1PXRbMl0qbyt0WzZdKnIrdFsxMF0qaTtyZXR1cm4gbi54PXMsbi55PWYsbi56PXUsbn07d3QubXVsdGlwbHlCeVBvaW50PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lLngscj1lLnksaT1lLnoscz10WzBdKm8rdFs0XSpyK3RbOF0qaSt0WzEyXSxmPXRbMV0qbyt0WzVdKnIrdFs5XSppK3RbMTNdLHU9dFsyXSpvK3RbNl0qcit0WzEwXSppK3RbMTRdO3JldHVybiBuLng9cyxuLnk9ZixuLno9dSxufTt3dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUsblsxXT10WzFdKmUsblsyXT10WzJdKmUsblszXT10WzNdKmUsbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddKmUsbls4XT10WzhdKmUsbls5XT10WzldKmUsblsxMF09dFsxMF0qZSxuWzExXT10WzExXSplLG5bMTJdPXRbMTJdKmUsblsxM109dFsxM10qZSxuWzE0XT10WzE0XSplLG5bMTVdPXRbMTVdKmUsbn07d3QubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZVs5XT0tdFs5XSxlWzEwXT0tdFsxMF0sZVsxMV09LXRbMTFdLGVbMTJdPS10WzEyXSxlWzEzXT0tdFsxM10sZVsxNF09LXRbMTRdLGVbMTVdPS10WzE1XSxlfTt3dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXRbMV0sbz10WzJdLHI9dFszXSxpPXRbNl0scz10WzddLGY9dFsxMV07cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT1uLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPW8sZVs5XT1pLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXIsZVsxM109cyxlWzE0XT1mLGVbMTVdPXRbMTVdLGV9O3d0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZVs0XT1NYXRoLmFicyh0WzRdKSxlWzVdPU1hdGguYWJzKHRbNV0pLGVbNl09TWF0aC5hYnModFs2XSksZVs3XT1NYXRoLmFicyh0WzddKSxlWzhdPU1hdGguYWJzKHRbOF0pLGVbOV09TWF0aC5hYnModFs5XSksZVsxMF09TWF0aC5hYnModFsxMF0pLGVbMTFdPU1hdGguYWJzKHRbMTFdKSxlWzEyXT1NYXRoLmFicyh0WzEyXSksZVsxM109TWF0aC5hYnModFsxM10pLGVbMTRdPU1hdGguYWJzKHRbMTRdKSxlWzE1XT1NYXRoLmFicyh0WzE1XSksZX07d3QuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzEyXT09PWVbMTJdJiZ0WzEzXT09PWVbMTNdJiZ0WzE0XT09PWVbMTRdJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzhdPT09ZVs4XSYmdFs5XT09PWVbOV0mJnRbMTBdPT09ZVsxMF0mJnRbM109PT1lWzNdJiZ0WzddPT09ZVs3XSYmdFsxMV09PT1lWzExXSYmdFsxNV09PT1lWzE1XX07d3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9biYmTWF0aC5hYnModFsxXS1lWzFdKTw9biYmTWF0aC5hYnModFsyXS1lWzJdKTw9biYmTWF0aC5hYnModFszXS1lWzNdKTw9biYmTWF0aC5hYnModFs0XS1lWzRdKTw9biYmTWF0aC5hYnModFs1XS1lWzVdKTw9biYmTWF0aC5hYnModFs2XS1lWzZdKTw9biYmTWF0aC5hYnModFs3XS1lWzddKTw9biYmTWF0aC5hYnModFs4XS1lWzhdKTw9biYmTWF0aC5hYnModFs5XS1lWzldKTw9biYmTWF0aC5hYnModFsxMF0tZVsxMF0pPD1uJiZNYXRoLmFicyh0WzExXS1lWzExXSk8PW4mJk1hdGguYWJzKHRbMTJdLWVbMTJdKTw9biYmTWF0aC5hYnModFsxM10tZVsxM10pPD1uJiZNYXRoLmFicyh0WzE0XS1lWzE0XSk8PW4mJk1hdGguYWJzKHRbMTVdLWVbMTVdKTw9bn07d3QuZ2V0VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9dFsxMl0sZS55PXRbMTNdLGUuej10WzE0XSxlfTt3dC5nZXRNYXRyaXgzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzRdLGVbNF09dFs1XSxlWzVdPXRbNl0sZVs2XT10WzhdLGVbN109dFs5XSxlWzhdPXRbMTBdLGV9O3RDPW5ldyBaLGVDPW5ldyBaLG5DPW5ldyBtZSxvQz1uZXcgbWUoMCwwLDAsMSk7d3QuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dFswXSxvPXRbNF0scj10WzhdLGk9dFsxMl0scz10WzFdLGY9dFs1XSx1PXRbOV0sYz10WzEzXSxsPXRbMl0scD10WzZdLGQ9dFsxMF0saD10WzE0XSxfPXRbM10sZz10WzddLGI9dFsxMV0sdz10WzE1XSxPPWQqdyxFPWgqYixUPXAqdyx4PWgqZyxNPXAqYixOPWQqZyxGPWwqdyxJPWgqXyx2PWwqYixCPWQqXyxBPWwqZyxTPXAqXyxDPU8qZit4KnUrTSpjLShFKmYrVCp1K04qYyksTD1FKnMrRip1K0IqYy0oTypzK0kqdSt2KmMpLHo9VCpzK0kqZitBKmMtKHgqcytGKmYrUypjKSxqPU4qcyt2KmYrUyp1LShNKnMrQipmK0EqdSksaz1FKm8rVCpyK04qaS0oTypvK3gqcitNKmkpLHE9TypuK0kqcit2KmktKEUqbitGKnIrQippKSxXPXgqbitGKm8rUyppLShUKm4rSSpvK0EqaSksUj1NKm4rQipvK0Eqci0oTipuK3YqbytTKnIpO089cipjLEU9aSp1LFQ9bypjLHg9aSpmLE09byp1LE49cipmLEY9bipjLEk9aSpzLHY9bip1LEI9cipzLEE9bipmLFM9bypzO2xldCBudD1PKmcreCpiK00qdy0oRSpnK1QqYitOKncpLGF0PUUqXytGKmIrQip3LShPKl8rSSpiK3YqdyksbHQ9VCpfK0kqZytBKnctKHgqXytGKmcrUyp3KSxfdD1OKl8rdipnK1MqYi0oTSpfK0IqZytBKmIpLG90PVQqZCtOKmgrRSpwLShNKmgrTypwK3gqZCksUHQ9dipoK08qbCtJKmQtKEYqZCtCKmgrRSpsKSxndD1GKnArUypoK3gqbC0oQSpoK1QqbCtJKnApLFJ0PUEqZCtNKmwrQipwLSh2KnArUypkK04qbCksZHQ9bipDK28qTCtyKnoraSpqO2lmKE1hdGguYWJzKGR0KTxQLkVQU0lMT04yMSl7aWYoWi5lcXVhbHNFcHNpbG9uKHd0LmdldE1hdHJpeDModCx0QyksZUMsUC5FUFNJTE9ONykmJm1lLmVxdWFscyh3dC5nZXRSb3codCwzLG5DKSxvQykpcmV0dXJuIGVbMF09MCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT0wLGVbMTFdPTAsZVsxMl09LXRbMTJdLGVbMTNdPS10WzEzXSxlWzE0XT0tdFsxNF0sZVsxNV09MSxlO3Rocm93IG5ldyBBZSgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIGJlY2F1c2UgaXRzIGRldGVybWluYXRlIGlzIHplcm8uIil9cmV0dXJuIGR0PTEvZHQsZVswXT1DKmR0LGVbMV09TCpkdCxlWzJdPXoqZHQsZVszXT1qKmR0LGVbNF09aypkdCxlWzVdPXEqZHQsZVs2XT1XKmR0LGVbN109UipkdCxlWzhdPW50KmR0LGVbOV09YXQqZHQsZVsxMF09bHQqZHQsZVsxMV09X3QqZHQsZVsxMl09b3QqZHQsZVsxM109UHQqZHQsZVsxNF09Z3QqZHQsZVsxNV09UnQqZHQsZX07d3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj10WzBdLG89dFsxXSxyPXRbMl0saT10WzRdLHM9dFs1XSxmPXRbNl0sdT10WzhdLGM9dFs5XSxsPXRbMTBdLHA9dFsxMl0sZD10WzEzXSxoPXRbMTRdLF89LW4qcC1vKmQtcipoLGc9LWkqcC1zKmQtZipoLGI9LXUqcC1jKmQtbCpoO3JldHVybiBlWzBdPW4sZVsxXT1pLGVbMl09dSxlWzNdPTAsZVs0XT1vLGVbNV09cyxlWzZdPWMsZVs3XT0wLGVbOF09cixlWzldPWYsZVsxMF09bCxlWzExXT0wLGVbMTJdPV8sZVsxM109ZyxlWzE0XT1iLGVbMTVdPTEsZX07ckM9bmV3IHd0O3d0LmludmVyc2VUcmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSx3dC5pbnZlcnNlKHd0LnRyYW5zcG9zZSh0LHJDKSxlKX07d3QuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgd3QoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSkpO3d0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgd3QoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCkpO3d0LkNPTFVNTjBST1cwPTA7d3QuQ09MVU1OMFJPVzE9MTt3dC5DT0xVTU4wUk9XMj0yO3d0LkNPTFVNTjBST1czPTM7d3QuQ09MVU1OMVJPVzA9NDt3dC5DT0xVTU4xUk9XMT01O3d0LkNPTFVNTjFST1cyPTY7d3QuQ09MVU1OMVJPVzM9Nzt3dC5DT0xVTU4yUk9XMD04O3d0LkNPTFVNTjJST1cxPTk7d3QuQ09MVU1OMlJPVzI9MTA7d3QuQ09MVU1OMlJPVzM9MTE7d3QuQ09MVU1OM1JPVzA9MTI7d3QuQ09MVU1OM1JPVzE9MTM7d3QuQ09MVU1OM1JPVzI9MTQ7d3QuQ09MVU1OM1JPVzM9MTU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMod3QucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB3dC5wYWNrZWRMZW5ndGh9fX0pO3d0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuY2xvbmUodGhpcyx0KX07d3QucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZXF1YWxzKHRoaXMsdCl9O3d0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFswXT09PWVbbl0mJnRbMV09PT1lW24rMV0mJnRbMl09PT1lW24rMl0mJnRbM109PT1lW24rM10mJnRbNF09PT1lW24rNF0mJnRbNV09PT1lW24rNV0mJnRbNl09PT1lW24rNl0mJnRbN109PT1lW24rN10mJnRbOF09PT1lW24rOF0mJnRbOV09PT1lW24rOV0mJnRbMTBdPT09ZVtuKzEwXSYmdFsxMV09PT1lW24rMTFdJiZ0WzEyXT09PWVbbisxMl0mJnRbMTNdPT09ZVtuKzEzXSYmdFsxNF09PT1lW24rMTRdJiZ0WzE1XT09PWVbbisxNV19O3d0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTt3dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1s0XX0sICR7dGhpc1s4XX0sICR7dGhpc1sxMl19KQooJHt0aGlzWzFdfSwgJHt0aGlzWzVdfSwgJHt0aGlzWzldfSwgJHt0aGlzWzEzXX0pCigke3RoaXNbMl19LCAke3RoaXNbNl19LCAke3RoaXNbMTBdfSwgJHt0aGlzWzE0XX0pCigke3RoaXNbM119LCAke3RoaXNbN119LCAke3RoaXNbMTFdfSwgJHt0aGlzWzE1XX0pYH07c3Q9d3R9KTtmdW5jdGlvbiBpQyh0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCkseS5kZWZpbmVkKCJpdGVtVG9GaW5kIixlKSx5LmRlZmluZWQoImNvbXBhcmF0b3IiLG4pO2xldCBvPTAscj10Lmxlbmd0aC0xLGkscztmb3IoO288PXI7KXtpZihpPX5+KChvK3IpLzIpLHM9bih0W2ldLGUpLHM8MCl7bz1pKzE7Y29udGludWV9aWYocz4wKXtyPWktMTtjb250aW51ZX1yZXR1cm4gaX1yZXR1cm5+KHIrMSl9dmFyIHpzLExtPSQoKCk9PntXdCgpO3pzPWlDfSk7ZnVuY3Rpb24gc0ModCxlLG4sbyxyKXt0aGlzLnhQb2xlV2FuZGVyPXQsdGhpcy55UG9sZVdhbmRlcj1lLHRoaXMueFBvbGVPZmZzZXQ9bix0aGlzLnlQb2xlT2Zmc2V0PW8sdGhpcy51dDFNaW51c1V0Yz1yfXZhciBhZixEbT0kKCgpPT57YWY9c0N9KTtmdW5jdGlvbiBjQyh0KXtpZih0PT09bnVsbHx8aXNOYU4odCkpdGhyb3cgbmV3IEQoInllYXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYSBudW1iZXIuIik7cmV0dXJuIHQlND09PTAmJnQlMTAwIT09MHx8dCU0MDA9PT0wfXZhciBmZixCbT0kKCgpPT57SHQoKTtmZj1jQ30pO2Z1bmN0aW9uIGFDKHQsZSxuLG8scixpLHMsZil7dD10Pz8xLGU9ZT8/MSxuPW4/PzEsbz1vPz8wLHI9cj8/MCxpPWk/PzAscz1zPz8wLGY9Zj8/ITEsZygpLGIoKSx0aGlzLnllYXI9dCx0aGlzLm1vbnRoPWUsdGhpcy5kYXk9bix0aGlzLmhvdXI9byx0aGlzLm1pbnV0ZT1yLHRoaXMuc2Vjb25kPWksdGhpcy5taWxsaXNlY29uZD1zLHRoaXMuaXNMZWFwU2Vjb25kPWY7ZnVuY3Rpb24gZygpe3kudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJZZWFyIix0LDEpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJZZWFyIix0LDk5OTkpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJNb250aCIsZSwxKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiTW9udGgiLGUsMTIpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJEYXkiLG4sMSkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIkRheSIsbiwzMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIkhvdXIiLG8sMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIkhvdXIiLG8sMjMpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJNaW51dGUiLHIsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIk1pbnV0ZSIsciw1OSkseS50eXBlT2YuYm9vbCgiSXNMZWFwU2Vjb25kIixmKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiU2Vjb25kIixpLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJTZWNvbmQiLGksZj82MDo1OSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1pbGxpc2Vjb25kIixzLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbigiTWlsbGlzZWNvbmQiLHMsMWUzKX1mdW5jdGlvbiBiKCl7bGV0IHc9ZT09PTImJmZmKHQpP1UxW2UtMV0rMTpVMVtlLTFdO2lmKG4+dyl0aHJvdyBuZXcgRCgiTW9udGggYW5kIERheSByZXByZXNlbnRzIGludmFsaWQgZGF0ZSIpfX12YXIgVTEsJGwsazE9JCgoKT0+e1d0KCk7SHQoKTtCbSgpO1UxPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07JGw9YUN9KTtmdW5jdGlvbiBmQyh0LGUpe3RoaXMuanVsaWFuRGF0ZT10LHRoaXMub2Zmc2V0PWV9dmFyIFhlLFVtPSQoKCk9PntYZT1mQ30pO3ZhciB1Qyx5bixabD0kKCgpPT57dUM9e1NFQ09ORFNfUEVSX01JTExJU0VDT05EOi4wMDEsU0VDT05EU19QRVJfTUlOVVRFOjYwLE1JTlVURVNfUEVSX0hPVVI6NjAsSE9VUlNfUEVSX0RBWToyNCxTRUNPTkRTX1BFUl9IT1VSOjM2MDAsTUlOVVRFU19QRVJfREFZOjE0NDAsU0VDT05EU19QRVJfREFZOjg2NDAwLERBWVNfUEVSX0pVTElBTl9DRU5UVVJZOjM2NTI1LFBJQ09TRUNPTkQ6MWUtOSxNT0RJRklFRF9KVUxJQU5fREFURV9ESUZGRVJFTkNFOjI0MDAwMDA1ZS0xfSx5bj1PYmplY3QuZnJlZXplKHVDKX0pO3ZhciBsQyxPZSxRbD0kKCgpPT57bEM9e1VUQzowLFRBSToxfSxPZT1PYmplY3QuZnJlZXplKGxDKX0pO2Z1bmN0aW9uIGttKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodC5qdWxpYW5EYXRlLGUuanVsaWFuRGF0ZSl9ZnVuY3Rpb24gbnAodCl7V2MuanVsaWFuRGF0ZT10O2xldCBlPXp0LmxlYXBTZWNvbmRzLG49enMoZSxXYyxrbSk7bjwwJiYobj1+biksbj49ZS5sZW5ndGgmJihuPWUubGVuZ3RoLTEpO2xldCBvPWVbbl0ub2Zmc2V0O24+MCYmenQuc2Vjb25kc0RpZmZlcmVuY2UoZVtuXS5qdWxpYW5EYXRlLHQpPm8mJihuLS0sbz1lW25dLm9mZnNldCksenQuYWRkU2Vjb25kcyh0LG8sdCl9ZnVuY3Rpb24gRzEodCxlKXtXYy5qdWxpYW5EYXRlPXQ7bGV0IG49enQubGVhcFNlY29uZHMsbz16cyhuLFdjLGttKTtpZihvPDAmJihvPX5vKSxvPT09MClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uWzBdLm9mZnNldCxlKTtpZihvPj1uLmxlbmd0aClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uW28tMV0ub2Zmc2V0LGUpO2xldCByPXp0LnNlY29uZHNEaWZmZXJlbmNlKG5bb10uanVsaWFuRGF0ZSx0KTtpZihyPT09MClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uW29dLm9mZnNldCxlKTtpZighKHI8PTEpKXJldHVybiB6dC5hZGRTZWNvbmRzKHQsLW5bLS1vXS5vZmZzZXQsZSl9ZnVuY3Rpb24gb3ModCxlLG4pe2xldCBvPWUveW4uU0VDT05EU19QRVJfREFZfDA7cmV0dXJuIHQrPW8sZS09eW4uU0VDT05EU19QRVJfREFZKm8sZTwwJiYodC0tLGUrPXluLlNFQ09ORFNfUEVSX0RBWSksbi5kYXlOdW1iZXI9dCxuLnNlY29uZHNPZkRheT1lLG59ZnVuY3Rpb24gR20odCxlLG4sbyxyLGkscyl7bGV0IGY9KGUtMTQpLzEyfDAsdT10KzQ4MDArZixjPSgxNDYxKnUvNHwwKSsoMzY3KihlLTItMTIqZikvMTJ8MCktKDMqKCh1KzEwMCkvMTAwfDApLzR8MCkrbi0zMjA3NTtvPW8tMTIsbzwwJiYobys9MjQpO2xldCBsPWkrKG8qeW4uU0VDT05EU19QRVJfSE9VUityKnluLlNFQ09ORFNfUEVSX01JTlVURStzKnluLlNFQ09ORFNfUEVSX01JTExJU0VDT05EKTtyZXR1cm4gbD49NDMyMDAmJihjLT0xKSxbYyxsXX1mdW5jdGlvbiB6dCh0LGUsbil7dGhpcy5kYXlOdW1iZXI9dm9pZCAwLHRoaXMuc2Vjb25kc09mRGF5PXZvaWQgMCx0PXQ/PzAsZT1lPz8wLG49bj8/T2UuVVRDO2xldCBvPXR8MDtlPWUrKHQtbykqeW4uU0VDT05EU19QRVJfREFZLG9zKG8sZSx0aGlzKSxuPT09T2UuVVRDJiZucCh0aGlzKX12YXIgVjEsSmwsdHAsV2MscEMsZEMsbUMsaEMsX0MsVm0seUMsZ0MsQUMsRHIsZXAsVm4sb3A9JCgoKT0+e0xtKCk7ZnQoKTtIdCgpO2sxKCk7Qm0oKTtVbSgpO1psKCk7UWwoKTtWMT1uZXcgJGwsSmw9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSx0cD0yOTtXYz1uZXcgWGU7cEM9L14oXGR7NH0pJC8sZEM9L14oXGR7NH0pLShcZHsyfSkkLyxtQz0vXihcZHs0fSktPyhcZHszfSkkLyxoQz0vXihcZHs0fSktP1coXGR7Mn0pLT8oXGR7MX0pPyQvLF9DPS9eKFxkezR9KS0/KFxkezJ9KS0/KFxkezJ9KSQvLFZtPS8oW1orXC1dKT8oXGR7Mn0pPzo/KFxkezJ9KT8kLyx5Qz0vXihcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxnQz0vXihcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxBQz0vXihcZHsyfSk6PyhcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxEcj0iSW52YWxpZCBJU08gODYwMSBkYXRlLiI7enQuZnJvbUdyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiAkbCkpdGhyb3cgbmV3IEQoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEdyZWdvcmlhbkRhdGUuIik7bGV0IG49R20odC55ZWFyLHQubW9udGgsdC5kYXksdC5ob3VyLHQubWludXRlLHQuc2Vjb25kLHQubWlsbGlzZWNvbmQpO3JldHVybiBtKGUpPyhvcyhuWzBdLG5bMV0sZSksbnAoZSksZSk6bmV3IHp0KG5bMF0sblsxXSxPZS5VVEMpfTt6dC5mcm9tRGF0ZT1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIERhdGUpfHxpc05hTih0LmdldFRpbWUoKSkpdGhyb3cgbmV3IEQoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZS4iKTtsZXQgbj1HbSh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpKzEsdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpLHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO3JldHVybiBtKGUpPyhvcyhuWzBdLG5bMV0sZSksbnAoZSksZSk6bmV3IHp0KG5bMF0sblsxXSxPZS5VVEMpfTt6dC5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRChEcik7dD10LnJlcGxhY2UoIiwiLCIuIik7bGV0IG49dC5zcGxpdCgiVCIpLG8scj0xLGk9MSxzPTAsZj0wLHU9MCxjPTAsbD1uWzBdLHA9blsxXSxkLGg7aWYoIW0obCkpdGhyb3cgbmV3IEQoRHIpO2xldCBfO2lmKG49bC5tYXRjaChfQyksbiE9PW51bGwpe2lmKF89bC5zcGxpdCgiLSIpLmxlbmd0aC0xLF8+MCYmXyE9PTIpdGhyb3cgbmV3IEQoRHIpO289K25bMV0scj0rblsyXSxpPStuWzNdfWVsc2UgaWYobj1sLm1hdGNoKGRDKSxuIT09bnVsbClvPStuWzFdLHI9K25bMl07ZWxzZSBpZihuPWwubWF0Y2gocEMpLG4hPT1udWxsKW89K25bMV07ZWxzZXtsZXQgTztpZihuPWwubWF0Y2gobUMpLG4hPT1udWxsKXtpZihvPStuWzFdLE89K25bMl0saD1mZihvKSxPPDF8fGgmJk8+MzY2fHwhaCYmTz4zNjUpdGhyb3cgbmV3IEQoRHIpfWVsc2UgaWYobj1sLm1hdGNoKGhDKSxuIT09bnVsbCl7bz0rblsxXTtsZXQgRT0rblsyXSxUPStuWzNdfHwwO2lmKF89bC5zcGxpdCgiLSIpLmxlbmd0aC0xLF8+MCYmKCFtKG5bM10pJiZfIT09MXx8bShuWzNdKSYmXyE9PTIpKXRocm93IG5ldyBEKERyKTtsZXQgeD1uZXcgRGF0ZShEYXRlLlVUQyhvLDAsNCkpO089RSo3K1QteC5nZXRVVENEYXkoKS0zfWVsc2UgdGhyb3cgbmV3IEQoRHIpO2Q9bmV3IERhdGUoRGF0ZS5VVEMobywwLDEpKSxkLnNldFVUQ0RhdGUoTykscj1kLmdldFVUQ01vbnRoKCkrMSxpPWQuZ2V0VVRDRGF0ZSgpfWlmKGg9ZmYobykscjwxfHxyPjEyfHxpPDF8fChyIT09Mnx8IWgpJiZpPkpsW3ItMV18fGgmJnI9PT0yJiZpPnRwKXRocm93IG5ldyBEKERyKTtsZXQgZztpZihtKHApKXtpZihuPXAubWF0Y2goQUMpLG4hPT1udWxsKXtpZihfPXAuc3BsaXQoIjoiKS5sZW5ndGgtMSxfPjAmJl8hPT0yJiZfIT09Myl0aHJvdyBuZXcgRChEcik7cz0rblsxXSxmPStuWzJdLHU9K25bM10sYz0rKG5bNF18fDApKjFlMyxnPTV9ZWxzZSBpZihuPXAubWF0Y2goZ0MpLG4hPT1udWxsKXtpZihfPXAuc3BsaXQoIjoiKS5sZW5ndGgtMSxfPjIpdGhyb3cgbmV3IEQoRHIpO3M9K25bMV0sZj0rblsyXSx1PSsoblszXXx8MCkqNjAsZz00fWVsc2UgaWYobj1wLm1hdGNoKHlDKSxuIT09bnVsbClzPStuWzFdLGY9KyhuWzJdfHwwKSo2MCxnPTM7ZWxzZSB0aHJvdyBuZXcgRChEcik7aWYoZj49NjB8fHU+PTYxfHxzPjI0fHxzPT09MjQmJihmPjB8fHU+MHx8Yz4wKSl0aHJvdyBuZXcgRChEcik7bGV0IE89bltnXSxFPStuW2crMV0sVD0rKG5bZysyXXx8MCk7c3dpdGNoKE8pe2Nhc2UiKyI6cz1zLUUsZj1mLVQ7YnJlYWs7Y2FzZSItIjpzPXMrRSxmPWYrVDticmVhaztjYXNlIloiOmJyZWFrO2RlZmF1bHQ6Zj1mK25ldyBEYXRlKERhdGUuVVRDKG8sci0xLGkscyxmKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTticmVha319bGV0IGI9dT09PTYwO2ZvcihiJiZ1LS07Zj49NjA7KWYtPTYwLHMrKztmb3IoO3M+PTI0OylzLT0yNCxpKys7Zm9yKGQ9aCYmcj09PTI/dHA6Smxbci0xXTtpPmQ7KWktPWQscisrLHI+MTImJihyLT0xMixvKyspLGQ9aCYmcj09PTI/dHA6Smxbci0xXTtmb3IoO2Y8MDspZis9NjAscy0tO2Zvcig7czwwOylzKz0yNCxpLS07Zm9yKDtpPDE7KXItLSxyPDEmJihyKz0xMixvLS0pLGQ9aCYmcj09PTI/dHA6Smxbci0xXSxpKz1kO2xldCB3PUdtKG8scixpLHMsZix1LGMpO3JldHVybiBtKGUpPyhvcyh3WzBdLHdbMV0sZSksbnAoZSkpOmU9bmV3IHp0KHdbMF0sd1sxXSxPZS5VVEMpLGImJnp0LmFkZFNlY29uZHMoZSwxLGUpLGV9O3p0Lm5vdz1mdW5jdGlvbih0KXtyZXR1cm4genQuZnJvbURhdGUobmV3IERhdGUsdCl9O2VwPW5ldyB6dCgwLDAsT2UuVEFJKTt6dC50b0dyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj0hMSxvPUcxKHQsZXApO20obyl8fCh6dC5hZGRTZWNvbmRzKHQsLTEsZXApLG89RzEoZXAsZXApLG49ITApO2xldCByPW8uZGF5TnVtYmVyLGk9by5zZWNvbmRzT2ZEYXk7aT49NDMyMDAmJihyKz0xKTtsZXQgcz1yKzY4NTY5fDAsZj00KnMvMTQ2MDk3fDA7cz1zLSgoMTQ2MDk3KmYrMykvNHwwKXwwO2xldCB1PTRlMyoocysxKS8xNDYxMDAxfDA7cz1zLSgxNDYxKnUvNHwwKSszMXwwO2xldCBjPTgwKnMvMjQ0N3wwLGw9cy0oMjQ0NypjLzgwfDApfDA7cz1jLzExfDA7bGV0IHA9YysyLTEyKnN8MCxkPTEwMCooZi00OSkrdStzfDAsaD1pL3luLlNFQ09ORFNfUEVSX0hPVVJ8MCxfPWktaCp5bi5TRUNPTkRTX1BFUl9IT1VSLGc9Xy95bi5TRUNPTkRTX1BFUl9NSU5VVEV8MDtfPV8tZyp5bi5TRUNPTkRTX1BFUl9NSU5VVEU7bGV0IGI9X3wwLHc9KF8tYikveW4uU0VDT05EU19QRVJfTUlMTElTRUNPTkQ7cmV0dXJuIGgrPTEyLGg+MjMmJihoLT0yNCksbiYmKGIrPTEpLG0oZSk/KGUueWVhcj1kLGUubW9udGg9cCxlLmRheT1sLGUuaG91cj1oLGUubWludXRlPWcsZS5zZWNvbmQ9YixlLm1pbGxpc2Vjb25kPXcsZS5pc0xlYXBTZWNvbmQ9bixlKTpuZXcgJGwoZCxwLGwsaCxnLGIsdyxuKX07enQudG9EYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXp0LnRvR3JlZ29yaWFuRGF0ZSh0LFYxKSxuPWUuc2Vjb25kO3JldHVybiBlLmlzTGVhcFNlY29uZCYmKG4tPTEpLG5ldyBEYXRlKERhdGUuVVRDKGUueWVhcixlLm1vbnRoLTEsZS5kYXksZS5ob3VyLGUubWludXRlLG4sZS5taWxsaXNlY29uZCkpfTt6dC50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj16dC50b0dyZWdvcmlhbkRhdGUodCxWMSksbz1uLnllYXIscj1uLm1vbnRoLGk9bi5kYXkscz1uLmhvdXIsZj1uLm1pbnV0ZSx1PW4uc2Vjb25kLGM9bi5taWxsaXNlY29uZDtvPT09MWU0JiZyPT09MSYmaT09PTEmJnM9PT0wJiZmPT09MCYmdT09PTAmJmM9PT0wJiYobz05OTk5LHI9MTIsaT0zMSxzPTI0KTtsZXQgbDtpZighbShlKSYmYyE9PTApe2xldCBwPWMqLjAxO3JldHVybiBsPXA8MWUtNj9wLnRvRml4ZWQoMjApLnJlcGxhY2UoIi4iLCIiKS5yZXBsYWNlKC8wKyQvLCIiKTpwLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIiIpLGAke28udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Zi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHt1LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS4ke2x9WmB9cmV0dXJuIW0oZSl8fGU9PT0wP2Ake28udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Zi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHt1LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVpgOihsPShjKi4wMSkudG9GaXhlZChlKS5yZXBsYWNlKCIuIiwiIikuc2xpY2UoMCxlKSxgJHtvLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwiMCIpfS0ke3IudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7aS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1UJHtzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2YudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7dS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0uJHtsfVpgKX07enQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmRheU51bWJlcj10LmRheU51bWJlcixlLnNlY29uZHNPZkRheT10LnNlY29uZHNPZkRheSxlKTpuZXcgenQodC5kYXlOdW1iZXIsdC5zZWNvbmRzT2ZEYXksT2UuVEFJKX07enQuY29tcGFyZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJyaWdodCBpcyByZXF1aXJlZC4iKTtsZXQgbj10LmRheU51bWJlci1lLmRheU51bWJlcjtyZXR1cm4gbiE9PTA/bjp0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheX07enQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LmRheU51bWJlcj09PWUuZGF5TnVtYmVyJiZ0LnNlY29uZHNPZkRheT09PWUuc2Vjb25kc09mRGF5fTt6dC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj1uPz8wLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh6dC5zZWNvbmRzRGlmZmVyZW5jZSh0LGUpKTw9bn07enQudG90YWxEYXlzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LmRheU51bWJlcit0LnNlY29uZHNPZkRheS95bi5TRUNPTkRTX1BFUl9EQVl9O3p0LnNlY29uZHNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO3JldHVybih0LmRheU51bWJlci1lLmRheU51bWJlcikqeW4uU0VDT05EU19QRVJfREFZKyh0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheSl9O3p0LmRheXNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBuPXQuZGF5TnVtYmVyLWUuZGF5TnVtYmVyLG89KHQuc2Vjb25kc09mRGF5LWUuc2Vjb25kc09mRGF5KS95bi5TRUNPTkRTX1BFUl9EQVk7cmV0dXJuIG4rb307enQuY29tcHV0ZVRhaU1pbnVzVXRjPWZ1bmN0aW9uKHQpe1djLmp1bGlhbkRhdGU9dDtsZXQgZT16dC5sZWFwU2Vjb25kcyxuPXpzKGUsV2Msa20pO3JldHVybiBuPDAmJihuPX5uLC0tbixuPDAmJihuPTApKSxlW25dLm9mZnNldH07enQuYWRkU2Vjb25kcz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInNlY29uZHMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gb3ModC5kYXlOdW1iZXIsdC5zZWNvbmRzT2ZEYXkrZSxuKX07enQuYWRkTWludXRlcz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm1pbnV0ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LnNlY29uZHNPZkRheStlKnluLlNFQ09ORFNfUEVSX01JTlVURTtyZXR1cm4gb3ModC5kYXlOdW1iZXIsbyxuKX07enQuYWRkSG91cnM9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJob3VycyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicmVzdWx0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXQuc2Vjb25kc09mRGF5K2UqeW4uU0VDT05EU19QRVJfSE9VUjtyZXR1cm4gb3ModC5kYXlOdW1iZXIsbyxuKX07enQuYWRkRGF5cz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImRheXMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LmRheU51bWJlcitlO3JldHVybiBvcyhvLHQuc2Vjb25kc09mRGF5LG4pfTt6dC5sZXNzVGhhbj1mdW5jdGlvbih0LGUpe3JldHVybiB6dC5jb21wYXJlKHQsZSk8MH07enQubGVzc1RoYW5PckVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB6dC5jb21wYXJlKHQsZSk8PTB9O3p0LmdyZWF0ZXJUaGFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodCxlKT4wfTt6dC5ncmVhdGVyVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodCxlKT49MH07enQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiB6dC5jbG9uZSh0aGlzLHQpfTt6dC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB6dC5lcXVhbHModGhpcyx0KX07enQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlKXtyZXR1cm4genQuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSl9O3p0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB6dC50b0lzbzg2MDEodGhpcyl9O3p0LmxlYXBTZWNvbmRzPVtuZXcgWGUobmV3IHp0KDI0NDEzMTcsNDMyMTAsT2UuVEFJKSwxMCksbmV3IFhlKG5ldyB6dCgyNDQxNDk5LDQzMjExLE9lLlRBSSksMTEpLG5ldyBYZShuZXcgenQoMjQ0MTY4Myw0MzIxMixPZS5UQUkpLDEyKSxuZXcgWGUobmV3IHp0KDI0NDIwNDgsNDMyMTMsT2UuVEFJKSwxMyksbmV3IFhlKG5ldyB6dCgyNDQyNDEzLDQzMjE0LE9lLlRBSSksMTQpLG5ldyBYZShuZXcgenQoMjQ0Mjc3OCw0MzIxNSxPZS5UQUkpLDE1KSxuZXcgWGUobmV3IHp0KDI0NDMxNDQsNDMyMTYsT2UuVEFJKSwxNiksbmV3IFhlKG5ldyB6dCgyNDQzNTA5LDQzMjE3LE9lLlRBSSksMTcpLG5ldyBYZShuZXcgenQoMjQ0Mzg3NCw0MzIxOCxPZS5UQUkpLDE4KSxuZXcgWGUobmV3IHp0KDI0NDQyMzksNDMyMTksT2UuVEFJKSwxOSksbmV3IFhlKG5ldyB6dCgyNDQ0Nzg2LDQzMjIwLE9lLlRBSSksMjApLG5ldyBYZShuZXcgenQoMjQ0NTE1MSw0MzIyMSxPZS5UQUkpLDIxKSxuZXcgWGUobmV3IHp0KDI0NDU1MTYsNDMyMjIsT2UuVEFJKSwyMiksbmV3IFhlKG5ldyB6dCgyNDQ2MjQ3LDQzMjIzLE9lLlRBSSksMjMpLG5ldyBYZShuZXcgenQoMjQ0NzE2MSw0MzIyNCxPZS5UQUkpLDI0KSxuZXcgWGUobmV3IHp0KDI0NDc4OTIsNDMyMjUsT2UuVEFJKSwyNSksbmV3IFhlKG5ldyB6dCgyNDQ4MjU3LDQzMjI2LE9lLlRBSSksMjYpLG5ldyBYZShuZXcgenQoMjQ0ODgwNCw0MzIyNyxPZS5UQUkpLDI3KSxuZXcgWGUobmV3IHp0KDI0NDkxNjksNDMyMjgsT2UuVEFJKSwyOCksbmV3IFhlKG5ldyB6dCgyNDQ5NTM0LDQzMjI5LE9lLlRBSSksMjkpLG5ldyBYZShuZXcgenQoMjQ1MDA4Myw0MzIzMCxPZS5UQUkpLDMwKSxuZXcgWGUobmV3IHp0KDI0NTA2MzAsNDMyMzEsT2UuVEFJKSwzMSksbmV3IFhlKG5ldyB6dCgyNDUxMTc5LDQzMjMyLE9lLlRBSSksMzIpLG5ldyBYZShuZXcgenQoMjQ1MzczNiw0MzIzMyxPZS5UQUkpLDMzKSxuZXcgWGUobmV3IHp0KDI0NTQ4MzIsNDMyMzQsT2UuVEFJKSwzNCksbmV3IFhlKG5ldyB6dCgyNDU2MTA5LDQzMjM1LE9lLlRBSSksMzUpLG5ldyBYZShuZXcgenQoMjQ1NzIwNCw0MzIzNixPZS5UQUkpLDM2KSxuZXcgWGUobmV3IHp0KDI0NTc3NTQsNDMyMzcsT2UuVEFJKSwzNyldO1ZuPXp0fSk7dmFyIHoxPVluKChYYyxZYyk9PnsvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMCBieSBAbWF0aGlhcyAqLyhmdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgWGM9PSJvYmplY3QiJiZYYyYmIVhjLm5vZGVUeXBlJiZYYyxuPXR5cGVvZiBZYz09Im9iamVjdCImJlljJiYhWWMubm9kZVR5cGUmJlljLG89dHlwZW9mIGdsb2JhbD09Im9iamVjdCImJmdsb2JhbDsoby5nbG9iYWw9PT1vfHxvLndpbmRvdz09PW98fG8uc2VsZj09PW8pJiYodD1vKTt2YXIgcixpPTIxNDc0ODM2NDcscz0zNixmPTEsdT0yNixjPTM4LGw9NzAwLHA9NzIsZD0xMjgsaD0iLSIsXz0vXnhuLS0vLGc9L1teXHgyMC1ceDdFXS8sYj0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2csdz17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0sTz1zLWYsRT1NYXRoLmZsb29yLFQ9U3RyaW5nLmZyb21DaGFyQ29kZSx4O2Z1bmN0aW9uIE0oayl7dGhyb3cgbmV3IFJhbmdlRXJyb3Iod1trXSl9ZnVuY3Rpb24gTihrLHEpe2Zvcih2YXIgVz1rLmxlbmd0aCxSPVtdO1ctLTspUltXXT1xKGtbV10pO3JldHVybiBSfWZ1bmN0aW9uIEYoayxxKXt2YXIgVz1rLnNwbGl0KCJAIiksUj0iIjtXLmxlbmd0aD4xJiYoUj1XWzBdKyJAIixrPVdbMV0pLGs9ay5yZXBsYWNlKGIsIi4iKTt2YXIgbnQ9ay5zcGxpdCgiLiIpLGF0PU4obnQscSkuam9pbigiLiIpO3JldHVybiBSK2F0fWZ1bmN0aW9uIEkoayl7Zm9yKHZhciBxPVtdLFc9MCxSPWsubGVuZ3RoLG50LGF0O1c8UjspbnQ9ay5jaGFyQ29kZUF0KFcrKyksbnQ+PTU1Mjk2JiZudDw9NTYzMTkmJlc8Uj8oYXQ9ay5jaGFyQ29kZUF0KFcrKyksKGF0JjY0NTEyKT09NTYzMjA/cS5wdXNoKCgobnQmMTAyMyk8PDEwKSsoYXQmMTAyMykrNjU1MzYpOihxLnB1c2gobnQpLFctLSkpOnEucHVzaChudCk7cmV0dXJuIHF9ZnVuY3Rpb24gdihrKXtyZXR1cm4gTihrLGZ1bmN0aW9uKHEpe3ZhciBXPSIiO3JldHVybiBxPjY1NTM1JiYocS09NjU1MzYsVys9VChxPj4+MTAmMTAyM3w1NTI5NikscT01NjMyMHxxJjEwMjMpLFcrPVQocSksV30pLmpvaW4oIiIpfWZ1bmN0aW9uIEIoayl7cmV0dXJuIGstNDg8MTA/ay0yMjprLTY1PDI2P2stNjU6ay05NzwyNj9rLTk3OnN9ZnVuY3Rpb24gQShrLHEpe3JldHVybiBrKzIyKzc1KihrPDI2KS0oKHEhPTApPDw1KX1mdW5jdGlvbiBTKGsscSxXKXt2YXIgUj0wO2ZvcihrPVc/RShrL2wpOms+PjEsays9RShrL3EpO2s+Typ1Pj4xO1IrPXMpaz1FKGsvTyk7cmV0dXJuIEUoUisoTysxKSprLyhrK2MpKX1mdW5jdGlvbiBDKGspe3ZhciBxPVtdLFc9ay5sZW5ndGgsUixudD0wLGF0PWQsbHQ9cCxfdCxvdCxQdCxndCxSdCxkdCxydCx4dCxHdDtmb3IoX3Q9ay5sYXN0SW5kZXhPZihoKSxfdDwwJiYoX3Q9MCksb3Q9MDtvdDxfdDsrK290KWsuY2hhckNvZGVBdChvdCk+PTEyOCYmTSgibm90LWJhc2ljIikscS5wdXNoKGsuY2hhckNvZGVBdChvdCkpO2ZvcihQdD1fdD4wP190KzE6MDtQdDxXOyl7Zm9yKGd0PW50LFJ0PTEsZHQ9cztQdD49VyYmTSgiaW52YWxpZC1pbnB1dCIpLHJ0PUIoay5jaGFyQ29kZUF0KFB0KyspKSwocnQ+PXN8fHJ0PkUoKGktbnQpL1J0KSkmJk0oIm92ZXJmbG93IiksbnQrPXJ0KlJ0LHh0PWR0PD1sdD9mOmR0Pj1sdCt1P3U6ZHQtbHQsIShydDx4dCk7ZHQrPXMpR3Q9cy14dCxSdD5FKGkvR3QpJiZNKCJvdmVyZmxvdyIpLFJ0Kj1HdDtSPXEubGVuZ3RoKzEsbHQ9UyhudC1ndCxSLGd0PT0wKSxFKG50L1IpPmktYXQmJk0oIm92ZXJmbG93IiksYXQrPUUobnQvUiksbnQlPVIscS5zcGxpY2UobnQrKywwLGF0KX1yZXR1cm4gdihxKX1mdW5jdGlvbiBMKGspe3ZhciBxLFcsUixudCxhdCxsdCxfdCxvdCxQdCxndCxSdCxkdD1bXSxydCx4dCxHdCxwZTtmb3Ioaz1JKGspLHJ0PWsubGVuZ3RoLHE9ZCxXPTAsYXQ9cCxsdD0wO2x0PHJ0OysrbHQpUnQ9a1tsdF0sUnQ8MTI4JiZkdC5wdXNoKFQoUnQpKTtmb3IoUj1udD1kdC5sZW5ndGgsbnQmJmR0LnB1c2goaCk7UjxydDspe2ZvcihfdD1pLGx0PTA7bHQ8cnQ7KytsdClSdD1rW2x0XSxSdD49cSYmUnQ8X3QmJihfdD1SdCk7Zm9yKHh0PVIrMSxfdC1xPkUoKGktVykveHQpJiZNKCJvdmVyZmxvdyIpLFcrPShfdC1xKSp4dCxxPV90LGx0PTA7bHQ8cnQ7KytsdClpZihSdD1rW2x0XSxSdDxxJiYrK1c+aSYmTSgib3ZlcmZsb3ciKSxSdD09cSl7Zm9yKG90PVcsUHQ9cztndD1QdDw9YXQ/ZjpQdD49YXQrdT91OlB0LWF0LCEob3Q8Z3QpO1B0Kz1zKXBlPW90LWd0LEd0PXMtZ3QsZHQucHVzaChUKEEoZ3QrcGUlR3QsMCkpKSxvdD1FKHBlL0d0KTtkdC5wdXNoKFQoQShvdCwwKSkpLGF0PVMoVyx4dCxSPT1udCksVz0wLCsrUn0rK1csKytxfXJldHVybiBkdC5qb2luKCIiKX1mdW5jdGlvbiB6KGspe3JldHVybiBGKGssZnVuY3Rpb24ocSl7cmV0dXJuIF8udGVzdChxKT9DKHEuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6cX0pfWZ1bmN0aW9uIGooayl7cmV0dXJuIEYoayxmdW5jdGlvbihxKXtyZXR1cm4gZy50ZXN0KHEpPyJ4bi0tIitMKHEpOnF9KX1pZihyPXt2ZXJzaW9uOiIxLjMuMiIsdWNzMjp7ZGVjb2RlOkksZW5jb2RlOnZ9LGRlY29kZTpDLGVuY29kZTpMLHRvQVNDSUk6aix0b1VuaWNvZGU6en0sdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kKWRlZmluZSgicHVueWNvZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KTtlbHNlIGlmKGUmJm4paWYoWWMuZXhwb3J0cz09ZSluLmV4cG9ydHM9cjtlbHNlIGZvcih4IGluIHIpci5oYXNPd25Qcm9wZXJ0eSh4KSYmKGVbeF09clt4XSk7ZWxzZSB0LnB1bnljb2RlPXJ9KShYYyl9KTt2YXIgSDE9WW4oKGoxLHJwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIElQdjYgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIHJwPT0ib2JqZWN0IiYmcnAuZXhwb3J0cz9ycC5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LklQdjY9ZSh0KX0pKGoxLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10JiZ0LklQdjY7ZnVuY3Rpb24gbihyKXt2YXIgaT1yLnRvTG93ZXJDYXNlKCkscz1pLnNwbGl0KCI6IiksZj1zLmxlbmd0aCx1PTg7c1swXT09PSIiJiZzWzFdPT09IiImJnNbMl09PT0iIj8ocy5zaGlmdCgpLHMuc2hpZnQoKSk6c1swXT09PSIiJiZzWzFdPT09IiI/cy5zaGlmdCgpOnNbZi0xXT09PSIiJiZzW2YtMl09PT0iIiYmcy5wb3AoKSxmPXMubGVuZ3RoLHNbZi0xXS5pbmRleE9mKCIuIikhPT0tMSYmKHU9Nyk7dmFyIGM7Zm9yKGM9MDtjPGYmJnNbY10hPT0iIjtjKyspO2lmKGM8dSlmb3Iocy5zcGxpY2UoYywxLCIwMDAwIik7cy5sZW5ndGg8dTspcy5zcGxpY2UoYywwLCIwMDAwIik7Zm9yKHZhciBsLHA9MDtwPHU7cCsrKXtsPXNbcF0uc3BsaXQoIiIpO2Zvcih2YXIgZD0wO2Q8MyYmKGxbMF09PT0iMCImJmwubGVuZ3RoPjEpO2QrKylsLnNwbGljZSgwLDEpO3NbcF09bC5qb2luKCIiKX12YXIgaD0tMSxfPTAsZz0wLGI9LTEsdz0hMTtmb3IocD0wO3A8dTtwKyspdz9zW3BdPT09IjAiP2crPTE6KHc9ITEsZz5fJiYoaD1iLF89ZykpOnNbcF09PT0iMCImJih3PSEwLGI9cCxnPTEpO2c+XyYmKGg9YixfPWcpLF8+MSYmcy5zcGxpY2UoaCxfLCIiKSxmPXMubGVuZ3RoO3ZhciBPPSIiO2ZvcihzWzBdPT09IiImJihPPSI6IikscD0wO3A8ZiYmKE8rPXNbcF0scCE9PWYtMSk7cCsrKU8rPSI6IjtyZXR1cm4gc1tmLTFdPT09IiImJihPKz0iOiIpLE99ZnVuY3Rpb24gbygpe3JldHVybiB0LklQdjY9PT10aGlzJiYodC5JUHY2PWUpLHRoaXN9cmV0dXJue2Jlc3Q6bixub0NvbmZsaWN0Om99fSl9KTt2YXIgSzE9WW4oKHExLGlwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIFNlY29uZCBMZXZlbCBEb21haW4gKFNMRCkgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIGlwPT0ib2JqZWN0IiYmaXAuZXhwb3J0cz9pcC5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LlNlY29uZExldmVsRG9tYWlucz1lKHQpfSkocTEsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXQmJnQuU2Vjb25kTGV2ZWxEb21haW5zLG49e2xpc3Q6e2FjOiIgY29tIGdvdiBtaWwgbmV0IG9yZyAiLGFlOiIgYWMgY28gZ292IG1pbCBuYW1lIG5ldCBvcmcgcHJvIHNjaCAiLGFmOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGFsOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixhbzoiIGNvIGVkIGd2IGl0IG9nIHBiICIsYXI6IiBjb20gZWR1IGdvYiBnb3YgaW50IG1pbCBuZXQgb3JnIHR1ciAiLGF0OiIgYWMgY28gZ3Ygb3IgIixhdToiIGFzbiBjb20gY3Npcm8gZWR1IGdvdiBpZCBuZXQgb3JnICIsYmE6IiBjbyBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyBycyB1bmJpIHVubW8gdW5zYSB1bnR6IHVuemUgIixiYjoiIGJpeiBjbyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgc3RvcmUgdHYgIixiaDoiIGJpeiBjYyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixibjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixibzoiIGNvbSBlZHUgZ29iIGdvdiBpbnQgbWlsIG5ldCBvcmcgdHYgIixicjoiIGFkbSBhZHYgYWdyIGFtIGFycSBhcnQgYXRvIGIgYmlvIGJsb2cgYm1kIGNpbSBjbmcgY250IGNvbSBjb29wIGVjbiBlZHUgZW5nIGVzcCBldGMgZXRpIGZhciBmbG9nIGZtIGZuZCBmb3QgZnN0IGcxMiBnZ2YgZ292IGltYiBpbmQgaW5mIGpvciBqdXMgbGVsIG1hdCBtZWQgbWlsIG11cyBuZXQgbm9tIG5vdCBudHIgb2RvIG9yZyBwcGcgcHJvIHBzYyBwc2kgcXNsIHJlYyBzbGcgc3J2IHRtcCB0cmQgdHVyIHR2IHZldCB2bG9nIHdpa2kgemxnICIsYnM6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsYno6IiBkdSBldCBvbSBvdiByZyAiLGNhOiIgYWIgYmMgbWIgbmIgbmYgbmwgbnMgbnQgbnUgb24gcGUgcWMgc2sgeWsgIixjazoiIGJpeiBjbyBlZHUgZ2VuIGdvdiBpbmZvIG5ldCBvcmcgIixjbjoiIGFjIGFoIGJqIGNvbSBjcSBlZHUgZmogZ2QgZ292IGdzIGd4IGd6IGhhIGhiIGhlIGhpIGhsIGhuIGpsIGpzIGp4IGxuIG1pbCBuZXQgbm0gbnggb3JnIHFoIHNjIHNkIHNoIHNuIHN4IHRqIHR3IHhqIHh6IHluIHpqICIsY286IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5vbSBvcmcgIixjcjoiIGFjIGMgY28gZWQgZmkgZ28gb3Igc2EgIixjeToiIGFjIGJpeiBjb20gZWtsb2dlcyBnb3YgbHRkIG5hbWUgbmV0IG9yZyBwYXJsaWFtZW50IHByZXNzIHBybyB0bSAiLGRvOiIgYXJ0IGNvbSBlZHUgZ29iIGdvdiBtaWwgbmV0IG9yZyBzbGQgd2ViICIsZHo6IiBhcnQgYXNzbyBjb20gZWR1IGdvdiBuZXQgb3JnIHBvbCAiLGVjOiIgY29tIGVkdSBmaW4gZ292IGluZm8gbWVkIG1pbCBuZXQgb3JnIHBybyAiLGVnOiIgY29tIGVkdSBldW4gZ292IG1pbCBuYW1lIG5ldCBvcmcgc2NpICIsZXI6IiBjb20gZWR1IGdvdiBpbmQgbWlsIG5ldCBvcmcgcm9jaGVzdCB3ICIsZXM6IiBjb20gZWR1IGdvYiBub20gb3JnICIsZXQ6IiBiaXogY29tIGVkdSBnb3YgaW5mbyBuYW1lIG5ldCBvcmcgIixmajoiIGFjIGJpeiBjb20gaW5mbyBtaWwgbmFtZSBuZXQgb3JnIHBybyAiLGZrOiIgYWMgY28gZ292IG5ldCBub20gb3JnICIsZnI6IiBhc3NvIGNvbSBmIGdvdXYgbm9tIHByZCBwcmVzc2UgdG0gIixnZzoiIGNvIG5ldCBvcmcgIixnaDoiIGNvbSBlZHUgZ292IG1pbCBvcmcgIixnbjoiIGFjIGNvbSBnb3YgbmV0IG9yZyAiLGdyOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixndDoiIGNvbSBlZHUgZ29iIGluZCBtaWwgbmV0IG9yZyAiLGd1OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGhrOiIgY29tIGVkdSBnb3YgaWR2IG5ldCBvcmcgIixodToiIDIwMDAgYWdyYXIgYm9sdCBjYXNpbm8gY2l0eSBjbyBlcm90aWNhIGVyb3Rpa2EgZmlsbSBmb3J1bSBnYW1lcyBob3RlbCBpbmZvIGluZ2F0bGFuIGpvZ2FzeiBrb255dmVsbyBsYWthcyBtZWRpYSBuZXdzIG9yZyBwcml2IHJla2xhbSBzZXggc2hvcCBzcG9ydCBzdWxpIHN6ZXggdG0gdG96c2RlIHV0YXphcyB2aWRlbyAiLGlkOiIgYWMgY28gZ28gbWlsIG5ldCBvciBzY2ggd2ViICIsaWw6IiBhYyBjbyBnb3YgaWRmIGsxMiBtdW5pIG5ldCBvcmcgIixpbjoiIGFjIGNvIGVkdSBlcm5ldCBmaXJtIGdlbiBnb3YgaSBpbmQgbWlsIG5ldCBuaWMgb3JnIHJlcyAiLGlxOiIgY29tIGVkdSBnb3YgaSBtaWwgbmV0IG9yZyAiLGlyOiIgYWMgY28gZG5zc2VjIGdvdiBpIGlkIG5ldCBvcmcgc2NoICIsaXQ6IiBlZHUgZ292ICIsamU6IiBjbyBuZXQgb3JnICIsam86IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLGpwOiIgYWMgYWQgY28gZWQgZ28gZ3IgbGcgbmUgb3IgIixrZToiIGFjIGNvIGdvIGluZm8gbWUgbW9iaSBuZSBvciBzYyAiLGtoOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgcGVyICIsa2k6IiBiaXogY29tIGRlIGVkdSBnb3YgaW5mbyBtb2IgbmV0IG9yZyB0ZWwgIixrbToiIGFzc28gY29tIGNvb3AgZWR1IGdvdXYgayBtZWRlY2luIG1pbCBub20gbm90YWlyZXMgcGhhcm1hY2llbnMgcHJlc3NlIHRtIHZldGVyaW5haXJlICIsa246IiBlZHUgZ292IG5ldCBvcmcgIixrcjoiIGFjIGJ1c2FuIGNodW5nYnVrIGNodW5nbmFtIGNvIGRhZWd1IGRhZWplb24gZXMgZ2FuZ3dvbiBnbyBnd2FuZ2p1IGd5ZW9uZ2J1ayBneWVvbmdnaSBneWVvbmduYW0gaHMgaW5jaGVvbiBqZWp1IGplb25idWsgamVvbm5hbSBrIGtnIG1pbCBtcyBuZSBvciBwZSByZSBzYyBzZW91bCB1bHNhbiAiLGt3OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt5OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt6OiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixsYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsazoiIGFzc24gY29tIGVkdSBnb3YgZ3JwIGhvdGVsIGludCBsdGQgbmV0IG5nbyBvcmcgc2NoIHNvYyB3ZWIgIixscjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsdjoiIGFzbiBjb20gY29uZiBlZHUgZ292IGlkIG1pbCBuZXQgb3JnICIsbHk6IiBjb20gZWR1IGdvdiBpZCBtZWQgbmV0IG9yZyBwbGMgc2NoICIsbWE6IiBhYyBjbyBnb3YgbSBuZXQgb3JnIHByZXNzICIsbWM6IiBhc3NvIHRtICIsbWU6IiBhYyBjbyBlZHUgZ292IGl0cyBuZXQgb3JnIHByaXYgIixtZzoiIGNvbSBlZHUgZ292IG1pbCBub20gb3JnIHByZCB0bSAiLG1rOiIgY29tIGVkdSBnb3YgaW5mIG5hbWUgbmV0IG9yZyBwcm8gIixtbDoiIGNvbSBlZHUgZ292IG5ldCBvcmcgcHJlc3NlICIsbW46IiBlZHUgZ292IG9yZyAiLG1vOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG10OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG12OiIgYWVybyBiaXogY29tIGNvb3AgZWR1IGdvdiBpbmZvIGludCBtaWwgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gIixtdzoiIGFjIGNvIGNvbSBjb29wIGVkdSBnb3YgaW50IG11c2V1bSBuZXQgb3JnICIsbXg6IiBjb20gZWR1IGdvYiBuZXQgb3JnICIsbXk6IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLG5mOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5ldCBvdGhlciBwZXIgcmVjIHN0b3JlIHdlYiAiLG5nOiIgYml6IGNvbSBlZHUgZ292IG1pbCBtb2JpIG5hbWUgbmV0IG9yZyBzY2ggIixuaToiIGFjIGNvIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyAiLG5wOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixucjoiIGJpeiBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixvbToiIGFjIGJpeiBjbyBjb20gZWR1IGdvdiBtZWQgbWlsIG11c2V1bSBuZXQgb3JnIHBybyBzY2ggIixwZToiIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyBzbGQgIixwaDoiIGNvbSBlZHUgZ292IGkgbWlsIG5ldCBuZ28gb3JnICIscGs6IiBiaXogY29tIGVkdSBmYW0gZ29iIGdvayBnb24gZ29wIGdvcyBnb3YgbmV0IG9yZyB3ZWIgIixwbDoiIGFydCBiaWFseXN0b2sgYml6IGNvbSBlZHUgZ2RhIGdkYW5zayBnb3J6b3cgZ292IGluZm8ga2F0b3dpY2Uga3Jha293IGxvZHogbHVibGluIG1pbCBuZXQgbmdvIG9sc3p0eW4gb3JnIHBvem5hbiBwd3IgcmFkb20gc2x1cHNrIHN6Y3plY2luIHRvcnVuIHdhcnN6YXdhIHdhdyB3cm9jIHdyb2NsYXcgemdvcmEgIixwcjoiIGFjIGJpeiBjb20gZWR1IGVzdCBnb3YgaW5mbyBpc2xhIG5hbWUgbmV0IG9yZyBwcm8gcHJvZiAiLHBzOiIgY29tIGVkdSBnb3YgbmV0IG9yZyBwbG8gc2VjICIscHc6IiBiZWxhdSBjbyBlZCBnbyBuZSBvciAiLHJvOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5vbSBudCBvcmcgcmVjIHN0b3JlIHRtIHd3dyAiLHJzOiIgYWMgY28gZWR1IGdvdiBpbiBvcmcgIixzYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzYzoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzaDoiIGNvIGNvbSBlZHUgZ292IG5ldCBub20gb3JnICIsc2w6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsc3Q6IiBjbyBjb20gY29uc3VsYWRvIGVkdSBlbWJhaXhhZGEgZ292IG1pbCBuZXQgb3JnIHByaW5jaXBlIHNhb3RvbWUgc3RvcmUgIixzdjoiIGNvbSBlZHUgZ29iIG9yZyByZWQgIixzejoiIGFjIGNvIG9yZyAiLHRyOiIgYXYgYmJzIGJlbCBiaXogY29tIGRyIGVkdSBnZW4gZ292IGluZm8gazEyIG5hbWUgbmV0IG9yZyBwb2wgdGVsIHRzayB0diB3ZWIgIix0dDoiIGFlcm8gYml6IGNhdCBjbyBjb20gY29vcCBlZHUgZ292IGluZm8gaW50IGpvYnMgbWlsIG1vYmkgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gdGVsIHRyYXZlbCAiLHR3OiIgY2x1YiBjb20gZWJpeiBlZHUgZ2FtZSBnb3YgaWR2IG1pbCBuZXQgb3JnICIsbXU6IiBhYyBjbyBjb20gZ292IG5ldCBvciBvcmcgIixtejoiIGFjIGNvIGVkdSBnb3Ygb3JnICIsbmE6IiBjbyBjb20gIixuejoiIGFjIGNvIGNyaSBnZWVrIGdlbiBnb3Z0IGhlYWx0aCBpd2kgbWFvcmkgbWlsIG5ldCBvcmcgcGFybGlhbWVudCBzY2hvb2wgIixwYToiIGFibyBhYyBjb20gZWR1IGdvYiBpbmcgbWVkIG5ldCBub20gb3JnIHNsZCAiLHB0OiIgY29tIGVkdSBnb3YgaW50IG5ldCBub21lIG9yZyBwdWJsICIscHk6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyAiLHFhOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixyZToiIGFzc28gY29tIG5vbSAiLHJ1OiIgYWMgYWR5Z2V5YSBhbHRhaSBhbXVyIGFya2hhbmdlbHNrIGFzdHJha2hhbiBiYXNoa2lyaWEgYmVsZ29yb2QgYmlyIGJyeWFuc2sgYnVyeWF0aWEgY2JnIGNoZWwgY2hlbHlhYmluc2sgY2hpdGEgY2h1a290a2EgY2h1dmFzaGlhIGNvbSBkYWdlc3RhbiBlLWJ1cmcgZWR1IGdvdiBncm96bnkgaW50IGlya3V0c2sgaXZhbm92byBpemhldnNrIGphciBqb3Noa2FyLW9sYSBrYWxteWtpYSBrYWx1Z2Ega2FtY2hhdGthIGthcmVsaWEga2F6YW4ga2NociBrZW1lcm92byBraGFiYXJvdnNrIGtoYWthc3NpYSBraHYga2lyb3Yga29lbmlnIGtvbWkga29zdHJvbWEga3Jhbm95YXJzayBrdWJhbiBrdXJnYW4ga3Vyc2sgbGlwZXRzayBtYWdhZGFuIG1hcmkgbWFyaS1lbCBtYXJpbmUgbWlsIG1vcmRvdmlhIG1vc3JlZyBtc2sgbXVybWFuc2sgbmFsY2hpayBuZXQgbm5vdiBub3Ygbm92b3NpYmlyc2sgbnNrIG9tc2sgb3JlbmJ1cmcgb3JnIG9yeW9sIHBlbnphIHBlcm0gcHAgcHNrb3YgcHR6IHJuZCByeWF6YW4gc2FraGFsaW4gc2FtYXJhIHNhcmF0b3Ygc2ltYmlyc2sgc21vbGVuc2sgc3BiIHN0YXZyb3BvbCBzdHYgc3VyZ3V0IHRhbWJvdiB0YXRhcnN0YW4gdG9tIHRvbXNrIHRzYXJpdHN5biB0c2sgdHVsYSB0dXZhIHR2ZXIgdHl1bWVuIHVkbSB1ZG11cnRpYSB1bGFuLXVkZSB2bGFkaWthdmtheiB2bGFkaW1pciB2bGFkaXZvc3RvayB2b2xnb2dyYWQgdm9sb2dkYSB2b3JvbmV6aCB2cm4gdnlhdGthIHlha3V0aWEgeWFtYWwgeWVrYXRlcmluYnVyZyB5dXpobm8tc2FraGFsaW5zayAiLHJ3OiIgYWMgY28gY29tIGVkdSBnb3V2IGdvdiBpbnQgbWlsIG5ldCAiLHNhOiIgY29tIGVkdSBnb3YgbWVkIG5ldCBvcmcgcHViIHNjaCAiLHNkOiIgY29tIGVkdSBnb3YgaW5mbyBtZWQgbmV0IG9yZyB0diAiLHNlOiIgYSBhYyBiIGJkIGMgZCBlIGYgZyBoIGkgayBsIG0gbiBvIG9yZyBwIHBhcnRpIHBwIHByZXNzIHIgcyB0IHRtIHUgdyB4IHkgeiAiLHNnOiIgY29tIGVkdSBnb3YgaWRuIG5ldCBvcmcgcGVyICIsc246IiBhcnQgY29tIGVkdSBnb3V2IG9yZyBwZXJzbyB1bml2ICIsc3k6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5ld3Mgb3JnICIsdGg6IiBhYyBjbyBnbyBpbiBtaSBuZXQgb3IgIix0ajoiIGFjIGJpeiBjbyBjb20gZWR1IGdvIGdvdiBpbmZvIGludCBtaWwgbmFtZSBuZXQgbmljIG9yZyB0ZXN0IHdlYiAiLHRuOiIgYWdyaW5ldCBjb20gZGVmZW5zZSBlZHVuZXQgZW5zIGZpbiBnb3YgaW5kIGluZm8gaW50bCBtaW5jb20gbmF0IG5ldCBvcmcgcGVyc28gcm5ydCBybnMgcm51IHRvdXJpc20gIix0ejoiIGFjIGNvIGdvIG5lIG9yICIsdWE6IiBiaXogY2hlcmthc3N5IGNoZXJuaWdvdiBjaGVybm92dHN5IGNrIGNuIGNvIGNvbSBjcmltZWEgY3YgZG4gZG5lcHJvcGV0cm92c2sgZG9uZXRzayBkcCBlZHUgZ292IGlmIGluIGl2YW5vLWZyYW5raXZzayBraCBraGFya292IGtoZXJzb24ga2htZWxuaXRza2l5IGtpZXYga2lyb3ZvZ3JhZCBrbSBrciBrcyBrdiBsZyBsdWdhbnNrIGx1dHNrIGx2aXYgbWUgbWsgbmV0IG5pa29sYWV2IG9kIG9kZXNzYSBvcmcgcGwgcG9sdGF2YSBwcCByb3ZubyBydiBzZWJhc3RvcG9sIHN1bXkgdGUgdGVybm9waWwgdXpoZ29yb2QgdmlubmljYSB2biB6YXBvcml6aHpoZSB6aGl0b21pciB6cCB6dCAiLHVnOiIgYWMgY28gZ28gbmUgb3Igb3JnIHNjICIsdWs6IiBhYyBibCBicml0aXNoLWxpYnJhcnkgY28gY3ltIGdvdiBnb3Z0IGljbmV0IGpldCBsZWEgbHRkIG1lIG1pbCBtb2QgbmF0aW9uYWwtbGlicmFyeS1zY290bGFuZCBuZWwgbmV0IG5ocyBuaWMgbmxzIG9yZyBvcmduIHBhcmxpYW1lbnQgcGxjIHBvbGljZSBzY2ggc2NvdCBzb2MgIix1czoiIGRuaSBmZWQgaXNhIGtpZHMgbnNuICIsdXk6IiBjb20gZWR1IGd1YiBtaWwgbmV0IG9yZyAiLHZlOiIgY28gY29tIGVkdSBnb2IgaW5mbyBtaWwgbmV0IG9yZyB3ZWIgIix2aToiIGNvIGNvbSBrMTIgbmV0IG9yZyAiLHZuOiIgYWMgYml6IGNvbSBlZHUgZ292IGhlYWx0aCBpbmZvIGludCBuYW1lIG5ldCBvcmcgcHJvICIseWU6IiBjbyBjb20gZ292IGx0ZCBtZSBuZXQgb3JnIHBsYyAiLHl1OiIgYWMgY28gZWR1IGdvdiBvcmcgIix6YToiIGFjIGFncmljIGFsdCBib3Vyc2UgY2l0eSBjbyBjeWJlcm5ldCBkYiBlZHUgZ292IGdyb25kYXIgaWFjY2VzcyBpbXQgaW5jYSBsYW5kZXNpZ24gbGF3IG1pbCBuZXQgbmdvIG5pcyBub20gb2xpdmV0dGkgb3JnIHBpeCBzY2hvb2wgdG0gd2ViICIsem06IiBhYyBjbyBjb20gZWR1IGdvdiBuZXQgb3JnIHNjaCAiLGNvbToiYXIgYnIgY24gZGUgZXUgZ2IgZ3IgaHUganBuIGtyIG5vIHFjIHJ1IHNhIHNlIHVrIHVzIHV5IHphICIsbmV0OiJnYiBqcCBzZSB1ayAiLG9yZzoiYWUiLGRlOiJjb20gIn0saGFzOmZ1bmN0aW9uKG8pe3ZhciByPW8ubGFzdEluZGV4T2YoIi4iKTtpZihyPD0wfHxyPj1vLmxlbmd0aC0xKXJldHVybiExO3ZhciBpPW8ubGFzdEluZGV4T2YoIi4iLHItMSk7aWYoaTw9MHx8aT49ci0xKXJldHVybiExO3ZhciBzPW4ubGlzdFtvLnNsaWNlKHIrMSldO3JldHVybiBzP3MuaW5kZXhPZigiICIrby5zbGljZShpKzEscikrIiAiKT49MDohMX0saXM6ZnVuY3Rpb24obyl7dmFyIHI9by5sYXN0SW5kZXhPZigiLiIpO2lmKHI8PTB8fHI+PW8ubGVuZ3RoLTEpcmV0dXJuITE7dmFyIGk9by5sYXN0SW5kZXhPZigiLiIsci0xKTtpZihpPj0wKXJldHVybiExO3ZhciBzPW4ubGlzdFtvLnNsaWNlKHIrMSldO3JldHVybiBzP3MuaW5kZXhPZigiICIrby5zbGljZSgwLHIpKyIgIik+PTA6ITF9LGdldDpmdW5jdGlvbihvKXt2YXIgcj1vLmxhc3RJbmRleE9mKCIuIik7aWYocjw9MHx8cj49by5sZW5ndGgtMSlyZXR1cm4gbnVsbDt2YXIgaT1vLmxhc3RJbmRleE9mKCIuIixyLTEpO2lmKGk8PTB8fGk+PXItMSlyZXR1cm4gbnVsbDt2YXIgcz1uLmxpc3Rbby5zbGljZShyKzEpXTtyZXR1cm4hc3x8cy5pbmRleE9mKCIgIitvLnNsaWNlKGkrMSxyKSsiICIpPDA/bnVsbDpvLnNsaWNlKGkrMSl9LG5vQ29uZmxpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdC5TZWNvbmRMZXZlbERvbWFpbnM9PT10aGlzJiYodC5TZWNvbmRMZXZlbERvbWFpbnM9ZSksdGhpc319O3JldHVybiBufSl9KTt2YXIganM9WW4oKFcxLHNwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqCiAqIFZlcnNpb246IDEuMTkuMTEKICoKICogQXV0aG9yOiBSb2RuZXkgUmVobQogKiBXZWI6IGh0dHA6Ly9tZWRpYWxpemUuZ2l0aHViLmlvL1VSSS5qcy8KICoKICogTGljZW5zZWQgdW5kZXIKICogICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAqCiAqLyhmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0Ijt0eXBlb2Ygc3A9PSJvYmplY3QiJiZzcC5leHBvcnRzP3NwLmV4cG9ydHM9ZSh6MSgpLEgxKCksSzEoKSk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuL3B1bnljb2RlIiwiLi9JUHY2IiwiLi9TZWNvbmRMZXZlbERvbWFpbnMiXSxlKTp0LlVSST1lKHQucHVueWNvZGUsdC5JUHY2LHQuU2Vjb25kTGV2ZWxEb21haW5zLHQpfSkoVzEsZnVuY3Rpb24odCxlLG4sbyl7InVzZSBzdHJpY3QiO3ZhciByPW8mJm8uVVJJO2Z1bmN0aW9uIGkoQSxTKXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPj0xLEw9YXJndW1lbnRzLmxlbmd0aD49MjtpZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gQz9MP25ldyBpKEEsUyk6bmV3IGkoQSk6bmV3IGk7aWYoQT09PXZvaWQgMCl7aWYoQyl0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmRlZmluZWQgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yIFVSSSIpO3R5cGVvZiBsb2NhdGlvbjwidSI/QT1sb2NhdGlvbi5ocmVmKyIiOkE9IiJ9aWYoQT09PW51bGwmJkMpdGhyb3cgbmV3IFR5cGVFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgVVJJIik7cmV0dXJuIHRoaXMuaHJlZihBKSxTIT09dm9pZCAwP3RoaXMuYWJzb2x1dGVUbyhTKTp0aGlzfWZ1bmN0aW9uIHMoQSl7cmV0dXJuL15bMC05XSskLy50ZXN0KEEpfWkudmVyc2lvbj0iMS4xOS4xMSI7dmFyIGY9aS5wcm90b3R5cGUsdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGMoQSl7cmV0dXJuIEEucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9ZnVuY3Rpb24gbChBKXtyZXR1cm4gQT09PXZvaWQgMD8iVW5kZWZpbmVkIjpTdHJpbmcoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEEpKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBwKEEpe3JldHVybiBsKEEpPT09IkFycmF5In1mdW5jdGlvbiBkKEEsUyl7dmFyIEM9e30sTCx6O2lmKGwoUyk9PT0iUmVnRXhwIilDPW51bGw7ZWxzZSBpZihwKFMpKWZvcihMPTAsej1TLmxlbmd0aDtMPHo7TCsrKUNbU1tMXV09ITA7ZWxzZSBDW1NdPSEwO2ZvcihMPTAsej1BLmxlbmd0aDtMPHo7TCsrKXt2YXIgaj1DJiZDW0FbTF1dIT09dm9pZCAwfHwhQyYmUy50ZXN0KEFbTF0pO2omJihBLnNwbGljZShMLDEpLHotLSxMLS0pfXJldHVybiBBfWZ1bmN0aW9uIGgoQSxTKXt2YXIgQyxMO2lmKHAoUykpe2ZvcihDPTAsTD1TLmxlbmd0aDtDPEw7QysrKWlmKCFoKEEsU1tDXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIHo9bChTKTtmb3IoQz0wLEw9QS5sZW5ndGg7QzxMO0MrKylpZih6PT09IlJlZ0V4cCIpe2lmKHR5cGVvZiBBW0NdPT0ic3RyaW5nIiYmQVtDXS5tYXRjaChTKSlyZXR1cm4hMH1lbHNlIGlmKEFbQ109PT1TKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIF8oQSxTKXtpZighcChBKXx8IXAoUyl8fEEubGVuZ3RoIT09Uy5sZW5ndGgpcmV0dXJuITE7QS5zb3J0KCksUy5zb3J0KCk7Zm9yKHZhciBDPTAsTD1BLmxlbmd0aDtDPEw7QysrKWlmKEFbQ10hPT1TW0NdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGcoQSl7dmFyIFM9L15cLyt8XC8rJC9nO3JldHVybiBBLnJlcGxhY2UoUywiIil9aS5fcGFydHM9ZnVuY3Rpb24oKXtyZXR1cm57cHJvdG9jb2w6bnVsbCx1c2VybmFtZTpudWxsLHBhc3N3b3JkOm51bGwsaG9zdG5hbWU6bnVsbCx1cm46bnVsbCxwb3J0Om51bGwscGF0aDpudWxsLHF1ZXJ5Om51bGwsZnJhZ21lbnQ6bnVsbCxwcmV2ZW50SW52YWxpZEhvc3RuYW1lOmkucHJldmVudEludmFsaWRIb3N0bmFtZSxkdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM6aS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsZXNjYXBlUXVlcnlTcGFjZTppLmVzY2FwZVF1ZXJ5U3BhY2V9fSxpLnByZXZlbnRJbnZhbGlkSG9zdG5hbWU9ITEsaS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ITEsaS5lc2NhcGVRdWVyeVNwYWNlPSEwLGkucHJvdG9jb2xfZXhwcmVzc2lvbj0vXlthLXpdW2EtejAtOS4rLV0qJC9pLGkuaWRuX2V4cHJlc3Npb249L1teYS16MC05XC5fLV0vaSxpLnB1bnljb2RlX2V4cHJlc3Npb249Lyh4bi0tKS9pLGkuaXA0X2V4cHJlc3Npb249L15cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9JC8saS5pcDZfZXhwcmVzc2lvbj0vXlxzKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKShcLigyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpKSglLispP1xzKiQvLGkuZmluZF91cmlfZXhwcmVzc2lvbj0vXGIoKD86W2Etel1bXHctXSs6KD86XC97MSwzfXxbYS16MC05JV0pfHd3d1xkezAsM31bLl18W2EtejAtOS5cLV0rWy5dW2Etel17Miw0fVwvKSg/OlteXHMoKTw+XSt8XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKSkrKD86XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKXxbXlxzYCEoKVxbXF17fTs6JyIuLDw+P8KrwrvigJzigJ3igJjigJldKSkvaWcsaS5maW5kVXJpPXtzdGFydDovXGIoPzooW2Etel1bYS16MC05ListXSo6XC9cLyl8d3d3XC4pL2dpLGVuZDovW1xzXHJcbl18JC8sdHJpbTovW2AhKClcW1xde307OiciLiw8Pj/Cq8K74oCc4oCd4oCe4oCY4oCZXSskLyxwYXJlbnM6LyhcKFteXCldKlwpfFxbW15cXV0qXF18XHtbXn1dKlx9fDxbXj5dKj4pL2d9LGkubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb249L15bXHgwMC1ceDIwXHUwMGEwXHUxNjgwXHUyMDAwLVx1MjAwYVx1MjAyOFx1MjAyOVx1MjAyZlx1MjA1Zlx1MzAwMFx1ZmVmZl0rLyxpLmFzY2lpX3RhYl93aGl0ZXNwYWNlPS9bXHUwMDA5XHUwMDBBXHUwMDBEXSsvZyxpLmRlZmF1bHRQb3J0cz17aHR0cDoiODAiLGh0dHBzOiI0NDMiLGZ0cDoiMjEiLGdvcGhlcjoiNzAiLHdzOiI4MCIsd3NzOiI0NDMifSxpLmhvc3RQcm90b2NvbHM9WyJodHRwIiwiaHR0cHMiXSxpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycz0vW15hLXpBLVowLTlcLlwtOl9dLyxpLmRvbUF0dHJpYnV0ZXM9e2E6ImhyZWYiLGJsb2NrcXVvdGU6ImNpdGUiLGxpbms6ImhyZWYiLGJhc2U6ImhyZWYiLHNjcmlwdDoic3JjIixmb3JtOiJhY3Rpb24iLGltZzoic3JjIixhcmVhOiJocmVmIixpZnJhbWU6InNyYyIsZW1iZWQ6InNyYyIsc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLGlucHV0OiJzcmMiLGF1ZGlvOiJzcmMiLHZpZGVvOiJzcmMifSxpLmdldERvbUF0dHJpYnV0ZT1mdW5jdGlvbihBKXtpZighKCFBfHwhQS5ub2RlTmFtZSkpe3ZhciBTPUEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighKFM9PT0iaW5wdXQiJiZBLnR5cGUhPT0iaW1hZ2UiKSlyZXR1cm4gaS5kb21BdHRyaWJ1dGVzW1NdfX07ZnVuY3Rpb24gYihBKXtyZXR1cm4gZXNjYXBlKEEpfWZ1bmN0aW9uIHcoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIScoKSpdL2csYikucmVwbGFjZSgvXCovZywiJTJBIil9aS5lbmNvZGU9dyxpLmRlY29kZT1kZWNvZGVVUklDb21wb25lbnQsaS5pc284ODU5PWZ1bmN0aW9uKCl7aS5lbmNvZGU9ZXNjYXBlLGkuZGVjb2RlPXVuZXNjYXBlfSxpLnVuaWNvZGU9ZnVuY3Rpb24oKXtpLmVuY29kZT13LGkuZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudH0saS5jaGFyYWN0ZXJzPXtwYXRobmFtZTp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDI0fDI2fDJCfDJDfDNCfDNEfDNBfDQwKS9pZyxtYXA6eyIlMjQiOiIkIiwiJTI2IjoiJiIsIiUyQiI6IisiLCIlMkMiOiIsIiwiJTNCIjoiOyIsIiUzRCI6Ij0iLCIlM0EiOiI6IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/I10vZyxtYXA6eyIvIjoiJTJGIiwiPyI6IiUzRiIsIiMiOiIlMjMifX19LHJlc2VydmVkOntlbmNvZGU6e2V4cHJlc3Npb246LyUoMjF8MjN8MjR8MjZ8Mjd8Mjh8Mjl8MkF8MkJ8MkN8MkZ8M0F8M0J8M0R8M0Z8NDB8NUJ8NUQpL2lnLG1hcDp7IiUzQSI6IjoiLCIlMkYiOiIvIiwiJTNGIjoiPyIsIiUyMyI6IiMiLCIlNUIiOiJbIiwiJTVEIjoiXSIsIiU0MCI6IkAiLCIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNiI6IiYiLCIlMjciOiInIiwiJTI4IjoiKCIsIiUyOSI6IikiLCIlMkEiOiIqIiwiJTJCIjoiKyIsIiUyQyI6IiwiLCIlM0IiOiI7IiwiJTNEIjoiPSJ9fX0sdXJucGF0aDp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDIxfDI0fDI3fDI4fDI5fDJBfDJCfDJDfDNCfDNEfDQwKS9pZyxtYXA6eyIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNyI6IiciLCIlMjgiOiIoIiwiJTI5IjoiKSIsIiUyQSI6IioiLCIlMkIiOiIrIiwiJTJDIjoiLCIsIiUzQiI6IjsiLCIlM0QiOiI9IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/IzpdL2csbWFwOnsiLyI6IiUyRiIsIj8iOiIlM0YiLCIjIjoiJTIzIiwiOiI6IiUzQSJ9fX19LGkuZW5jb2RlUXVlcnk9ZnVuY3Rpb24oQSxTKXt2YXIgQz1pLmVuY29kZShBKyIiKTtyZXR1cm4gUz09PXZvaWQgMCYmKFM9aS5lc2NhcGVRdWVyeVNwYWNlKSxTP0MucmVwbGFjZSgvJTIwL2csIisiKTpDfSxpLmRlY29kZVF1ZXJ5PWZ1bmN0aW9uKEEsUyl7QSs9IiIsUz09PXZvaWQgMCYmKFM9aS5lc2NhcGVRdWVyeVNwYWNlKTt0cnl7cmV0dXJuIGkuZGVjb2RlKFM/QS5yZXBsYWNlKC9cKy9nLCIlMjAiKTpBKX1jYXRjaHtyZXR1cm4gQX19O3ZhciBPPXtlbmNvZGU6ImVuY29kZSIsZGVjb2RlOiJkZWNvZGUifSxFLFQ9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gZnVuY3Rpb24oQyl7dHJ5e3JldHVybiBpW1NdKEMrIiIpLnJlcGxhY2UoaS5jaGFyYWN0ZXJzW0FdW1NdLmV4cHJlc3Npb24sZnVuY3Rpb24oTCl7cmV0dXJuIGkuY2hhcmFjdGVyc1tBXVtTXS5tYXBbTF19KX1jYXRjaHtyZXR1cm4gQ319fTtmb3IoRSBpbiBPKWlbRSsiUGF0aFNlZ21lbnQiXT1UKCJwYXRobmFtZSIsT1tFXSksaVtFKyJVcm5QYXRoU2VnbWVudCJdPVQoInVybnBhdGgiLE9bRV0pO3ZhciB4PWZ1bmN0aW9uKEEsUyxDKXtyZXR1cm4gZnVuY3Rpb24oTCl7dmFyIHo7Qz96PWZ1bmN0aW9uKFcpe3JldHVybiBpW1NdKGlbQ10oVykpfTp6PWlbU107Zm9yKHZhciBqPShMKyIiKS5zcGxpdChBKSxrPTAscT1qLmxlbmd0aDtrPHE7aysrKWpba109eihqW2tdKTtyZXR1cm4gai5qb2luKEEpfX07aS5kZWNvZGVQYXRoPXgoIi8iLCJkZWNvZGVQYXRoU2VnbWVudCIpLGkuZGVjb2RlVXJuUGF0aD14KCI6IiwiZGVjb2RlVXJuUGF0aFNlZ21lbnQiKSxpLnJlY29kZVBhdGg9eCgiLyIsImVuY29kZVBhdGhTZWdtZW50IiwiZGVjb2RlIiksaS5yZWNvZGVVcm5QYXRoPXgoIjoiLCJlbmNvZGVVcm5QYXRoU2VnbWVudCIsImRlY29kZSIpLGkuZW5jb2RlUmVzZXJ2ZWQ9VCgicmVzZXJ2ZWQiLCJlbmNvZGUiKSxpLnBhcnNlPWZ1bmN0aW9uKEEsUyl7dmFyIEM7cmV0dXJuIFN8fChTPXtwcmV2ZW50SW52YWxpZEhvc3RuYW1lOmkucHJldmVudEludmFsaWRIb3N0bmFtZX0pLEE9QS5yZXBsYWNlKGkubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb24sIiIpLEE9QS5yZXBsYWNlKGkuYXNjaWlfdGFiX3doaXRlc3BhY2UsIiIpLEM9QS5pbmRleE9mKCIjIiksQz4tMSYmKFMuZnJhZ21lbnQ9QS5zdWJzdHJpbmcoQysxKXx8bnVsbCxBPUEuc3Vic3RyaW5nKDAsQykpLEM9QS5pbmRleE9mKCI/IiksQz4tMSYmKFMucXVlcnk9QS5zdWJzdHJpbmcoQysxKXx8bnVsbCxBPUEuc3Vic3RyaW5nKDAsQykpLEE9QS5yZXBsYWNlKC9eKGh0dHBzP3xmdHB8d3NzPyk/OitbL1xcXSovaSwiJDE6Ly8iKSxBPUEucmVwbGFjZSgvXlsvXFxdezIsfS9pLCIvLyIpLEEuc3Vic3RyaW5nKDAsMik9PT0iLy8iPyhTLnByb3RvY29sPW51bGwsQT1BLnN1YnN0cmluZygyKSxBPWkucGFyc2VBdXRob3JpdHkoQSxTKSk6KEM9QS5pbmRleE9mKCI6IiksQz4tMSYmKFMucHJvdG9jb2w9QS5zdWJzdHJpbmcoMCxDKXx8bnVsbCxTLnByb3RvY29sJiYhUy5wcm90b2NvbC5tYXRjaChpLnByb3RvY29sX2V4cHJlc3Npb24pP1MucHJvdG9jb2w9dm9pZCAwOkEuc3Vic3RyaW5nKEMrMSxDKzMpLnJlcGxhY2UoL1xcL2csIi8iKT09PSIvLyI/KEE9QS5zdWJzdHJpbmcoQyszKSxBPWkucGFyc2VBdXRob3JpdHkoQSxTKSk6KEE9QS5zdWJzdHJpbmcoQysxKSxTLnVybj0hMCkpKSxTLnBhdGg9QSxTfSxpLnBhcnNlSG9zdD1mdW5jdGlvbihBLFMpe0F8fChBPSIiKSxBPUEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBDPUEuaW5kZXhPZigiLyIpLEwsejtpZihDPT09LTEmJihDPUEubGVuZ3RoKSxBLmNoYXJBdCgwKT09PSJbIilMPUEuaW5kZXhPZigiXSIpLFMuaG9zdG5hbWU9QS5zdWJzdHJpbmcoMSxMKXx8bnVsbCxTLnBvcnQ9QS5zdWJzdHJpbmcoTCsyLEMpfHxudWxsLFMucG9ydD09PSIvIiYmKFMucG9ydD1udWxsKTtlbHNle3ZhciBqPUEuaW5kZXhPZigiOiIpLGs9QS5pbmRleE9mKCIvIikscT1BLmluZGV4T2YoIjoiLGorMSk7cSE9PS0xJiYoaz09PS0xfHxxPGspPyhTLmhvc3RuYW1lPUEuc3Vic3RyaW5nKDAsQyl8fG51bGwsUy5wb3J0PW51bGwpOih6PUEuc3Vic3RyaW5nKDAsQykuc3BsaXQoIjoiKSxTLmhvc3RuYW1lPXpbMF18fG51bGwsUy5wb3J0PXpbMV18fG51bGwpfXJldHVybiBTLmhvc3RuYW1lJiZBLnN1YnN0cmluZyhDKS5jaGFyQXQoMCkhPT0iLyImJihDKyssQT0iLyIrQSksUy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lJiZpLmVuc3VyZVZhbGlkSG9zdG5hbWUoUy5ob3N0bmFtZSxTLnByb3RvY29sKSxTLnBvcnQmJmkuZW5zdXJlVmFsaWRQb3J0KFMucG9ydCksQS5zdWJzdHJpbmcoQyl8fCIvIn0saS5wYXJzZUF1dGhvcml0eT1mdW5jdGlvbihBLFMpe3JldHVybiBBPWkucGFyc2VVc2VyaW5mbyhBLFMpLGkucGFyc2VIb3N0KEEsUyl9LGkucGFyc2VVc2VyaW5mbz1mdW5jdGlvbihBLFMpe3ZhciBDPUEsTD1BLmluZGV4T2YoIlxcIik7TCE9PS0xJiYoQT1BLnJlcGxhY2UoL1xcL2csIi8iKSk7dmFyIHo9QS5pbmRleE9mKCIvIiksaj1BLmxhc3RJbmRleE9mKCJAIix6Pi0xP3o6QS5sZW5ndGgtMSksaztyZXR1cm4gaj4tMSYmKHo9PT0tMXx8ajx6KT8oaz1BLnN1YnN0cmluZygwLGopLnNwbGl0KCI6IiksUy51c2VybmFtZT1rWzBdP2kuZGVjb2RlKGtbMF0pOm51bGwsay5zaGlmdCgpLFMucGFzc3dvcmQ9a1swXT9pLmRlY29kZShrLmpvaW4oIjoiKSk6bnVsbCxBPUMuc3Vic3RyaW5nKGorMSkpOihTLnVzZXJuYW1lPW51bGwsUy5wYXNzd29yZD1udWxsKSxBfSxpLnBhcnNlUXVlcnk9ZnVuY3Rpb24oQSxTKXtpZighQSlyZXR1cm57fTtpZihBPUEucmVwbGFjZSgvJisvZywiJiIpLnJlcGxhY2UoL15cPyomKnwmKyQvZywiIiksIUEpcmV0dXJue307Zm9yKHZhciBDPXt9LEw9QS5zcGxpdCgiJiIpLHo9TC5sZW5ndGgsaixrLHEsVz0wO1c8ejtXKyspaj1MW1ddLnNwbGl0KCI9Iiksaz1pLmRlY29kZVF1ZXJ5KGouc2hpZnQoKSxTKSxxPWoubGVuZ3RoP2kuZGVjb2RlUXVlcnkoai5qb2luKCI9IiksUyk6bnVsbCxrIT09Il9fcHJvdG9fXyImJih1LmNhbGwoQyxrKT8oKHR5cGVvZiBDW2tdPT0ic3RyaW5nInx8Q1trXT09PW51bGwpJiYoQ1trXT1bQ1trXV0pLENba10ucHVzaChxKSk6Q1trXT1xKTtyZXR1cm4gQ30saS5idWlsZD1mdW5jdGlvbihBKXt2YXIgUz0iIixDPSExO3JldHVybiBBLnByb3RvY29sJiYoUys9QS5wcm90b2NvbCsiOiIpLCFBLnVybiYmKFN8fEEuaG9zdG5hbWUpJiYoUys9Ii8vIixDPSEwKSxTKz1pLmJ1aWxkQXV0aG9yaXR5KEEpfHwiIix0eXBlb2YgQS5wYXRoPT0ic3RyaW5nIiYmKEEucGF0aC5jaGFyQXQoMCkhPT0iLyImJkMmJihTKz0iLyIpLFMrPUEucGF0aCksdHlwZW9mIEEucXVlcnk9PSJzdHJpbmciJiZBLnF1ZXJ5JiYoUys9Ij8iK0EucXVlcnkpLHR5cGVvZiBBLmZyYWdtZW50PT0ic3RyaW5nIiYmQS5mcmFnbWVudCYmKFMrPSIjIitBLmZyYWdtZW50KSxTfSxpLmJ1aWxkSG9zdD1mdW5jdGlvbihBKXt2YXIgUz0iIjtpZihBLmhvc3RuYW1lKWkuaXA2X2V4cHJlc3Npb24udGVzdChBLmhvc3RuYW1lKT9TKz0iWyIrQS5ob3N0bmFtZSsiXSI6Uys9QS5ob3N0bmFtZTtlbHNlIHJldHVybiIiO3JldHVybiBBLnBvcnQmJihTKz0iOiIrQS5wb3J0KSxTfSxpLmJ1aWxkQXV0aG9yaXR5PWZ1bmN0aW9uKEEpe3JldHVybiBpLmJ1aWxkVXNlcmluZm8oQSkraS5idWlsZEhvc3QoQSl9LGkuYnVpbGRVc2VyaW5mbz1mdW5jdGlvbihBKXt2YXIgUz0iIjtyZXR1cm4gQS51c2VybmFtZSYmKFMrPWkuZW5jb2RlKEEudXNlcm5hbWUpKSxBLnBhc3N3b3JkJiYoUys9IjoiK2kuZW5jb2RlKEEucGFzc3dvcmQpKSxTJiYoUys9IkAiKSxTfSxpLmJ1aWxkUXVlcnk9ZnVuY3Rpb24oQSxTLEMpe3ZhciBMPSIiLHosaixrLHE7Zm9yKGogaW4gQSlpZihqIT09Il9fcHJvdG9fXyImJnUuY2FsbChBLGopKWlmKHAoQVtqXSkpZm9yKHo9e30saz0wLHE9QVtqXS5sZW5ndGg7azxxO2srKylBW2pdW2tdIT09dm9pZCAwJiZ6W0Fbal1ba10rIiJdPT09dm9pZCAwJiYoTCs9IiYiK2kuYnVpbGRRdWVyeVBhcmFtZXRlcihqLEFbal1ba10sQyksUyE9PSEwJiYoeltBW2pdW2tdKyIiXT0hMCkpO2Vsc2UgQVtqXSE9PXZvaWQgMCYmKEwrPSImIitpLmJ1aWxkUXVlcnlQYXJhbWV0ZXIoaixBW2pdLEMpKTtyZXR1cm4gTC5zdWJzdHJpbmcoMSl9LGkuYnVpbGRRdWVyeVBhcmFtZXRlcj1mdW5jdGlvbihBLFMsQyl7cmV0dXJuIGkuZW5jb2RlUXVlcnkoQSxDKSsoUyE9PW51bGw/Ij0iK2kuZW5jb2RlUXVlcnkoUyxDKToiIil9LGkuYWRkUXVlcnk9ZnVuY3Rpb24oQSxTLEMpe2lmKHR5cGVvZiBTPT0ib2JqZWN0Iilmb3IodmFyIEwgaW4gUyl1LmNhbGwoUyxMKSYmaS5hZGRRdWVyeShBLEwsU1tMXSk7ZWxzZSBpZih0eXBlb2YgUz09InN0cmluZyIpe2lmKEFbU109PT12b2lkIDApe0FbU109QztyZXR1cm59ZWxzZSB0eXBlb2YgQVtTXT09InN0cmluZyImJihBW1NdPVtBW1NdXSk7cChDKXx8KEM9W0NdKSxBW1NdPShBW1NdfHxbXSkuY29uY2F0KEMpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0saS5zZXRRdWVyeT1mdW5jdGlvbihBLFMsQyl7aWYodHlwZW9mIFM9PSJvYmplY3QiKWZvcih2YXIgTCBpbiBTKXUuY2FsbChTLEwpJiZpLnNldFF1ZXJ5KEEsTCxTW0xdKTtlbHNlIGlmKHR5cGVvZiBTPT0ic3RyaW5nIilBW1NdPUM9PT12b2lkIDA/bnVsbDpDO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLnNldFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0saS5yZW1vdmVRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEwseixqO2lmKHAoUykpZm9yKEw9MCx6PVMubGVuZ3RoO0w8ejtMKyspQVtTW0xdXT12b2lkIDA7ZWxzZSBpZihsKFMpPT09IlJlZ0V4cCIpZm9yKGogaW4gQSlTLnRlc3QoaikmJihBW2pdPXZvaWQgMCk7ZWxzZSBpZih0eXBlb2YgUz09Im9iamVjdCIpZm9yKGogaW4gUyl1LmNhbGwoUyxqKSYmaS5yZW1vdmVRdWVyeShBLGosU1tqXSk7ZWxzZSBpZih0eXBlb2YgUz09InN0cmluZyIpQyE9PXZvaWQgMD9sKEMpPT09IlJlZ0V4cCI/IXAoQVtTXSkmJkMudGVzdChBW1NdKT9BW1NdPXZvaWQgMDpBW1NdPWQoQVtTXSxDKTpBW1NdPT09U3RyaW5nKEMpJiYoIXAoQyl8fEMubGVuZ3RoPT09MSk/QVtTXT12b2lkIDA6cChBW1NdKSYmKEFbU109ZChBW1NdLEMpKTpBW1NdPXZvaWQgMDtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5yZW1vdmVRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcsIFJlZ0V4cCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIil9LGkuaGFzUXVlcnk9ZnVuY3Rpb24oQSxTLEMsTCl7c3dpdGNoKGwoUykpe2Nhc2UiU3RyaW5nIjpicmVhaztjYXNlIlJlZ0V4cCI6Zm9yKHZhciB6IGluIEEpaWYodS5jYWxsKEEseikmJlMudGVzdCh6KSYmKEM9PT12b2lkIDB8fGkuaGFzUXVlcnkoQSx6LEMpKSlyZXR1cm4hMDtyZXR1cm4hMTtjYXNlIk9iamVjdCI6Zm9yKHZhciBqIGluIFMpaWYodS5jYWxsKFMsaikmJiFpLmhhc1F1ZXJ5KEEsaixTW2pdKSlyZXR1cm4hMTtyZXR1cm4hMDtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5oYXNRdWVyeSgpIGFjY2VwdHMgYSBzdHJpbmcsIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBvYmplY3QgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIil9c3dpdGNoKGwoQykpe2Nhc2UiVW5kZWZpbmVkIjpyZXR1cm4gUyBpbiBBO2Nhc2UiQm9vbGVhbiI6dmFyIGs9ISEocChBW1NdKT9BW1NdLmxlbmd0aDpBW1NdKTtyZXR1cm4gQz09PWs7Y2FzZSJGdW5jdGlvbiI6cmV0dXJuISFDKEFbU10sUyxBKTtjYXNlIkFycmF5IjppZighcChBW1NdKSlyZXR1cm4hMTt2YXIgcT1MP2g6XztyZXR1cm4gcShBW1NdLEMpO2Nhc2UiUmVnRXhwIjpyZXR1cm4gcChBW1NdKT9MP2goQVtTXSxDKTohMTohIShBW1NdJiZBW1NdLm1hdGNoKEMpKTtjYXNlIk51bWJlciI6Qz1TdHJpbmcoQyk7Y2FzZSJTdHJpbmciOnJldHVybiBwKEFbU10pP0w/aChBW1NdLEMpOiExOkFbU109PT1DO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmhhc1F1ZXJ5KCkgYWNjZXB0cyB1bmRlZmluZWQsIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBSZWdFeHAsIEZ1bmN0aW9uIGFzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIiKX19LGkuam9pblBhdGhzPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLFM9W10sQz0wLEw9MDtMPGFyZ3VtZW50cy5sZW5ndGg7TCsrKXt2YXIgej1uZXcgaShhcmd1bWVudHNbTF0pO0EucHVzaCh6KTtmb3IodmFyIGo9ei5zZWdtZW50KCksaz0wO2s8ai5sZW5ndGg7aysrKXR5cGVvZiBqW2tdPT0ic3RyaW5nIiYmUy5wdXNoKGpba10pLGpba10mJkMrK31pZighUy5sZW5ndGh8fCFDKXJldHVybiBuZXcgaSgiIik7dmFyIHE9bmV3IGkoIiIpLnNlZ21lbnQoUyk7cmV0dXJuKEFbMF0ucGF0aCgpPT09IiJ8fEFbMF0ucGF0aCgpLnNsaWNlKDAsMSk9PT0iLyIpJiZxLnBhdGgoIi8iK3EucGF0aCgpKSxxLm5vcm1hbGl6ZSgpfSxpLmNvbW1vblBhdGg9ZnVuY3Rpb24oQSxTKXt2YXIgQz1NYXRoLm1pbihBLmxlbmd0aCxTLmxlbmd0aCksTDtmb3IoTD0wO0w8QztMKyspaWYoQS5jaGFyQXQoTCkhPT1TLmNoYXJBdChMKSl7TC0tO2JyZWFrfXJldHVybiBMPDE/QS5jaGFyQXQoMCk9PT1TLmNoYXJBdCgwKSYmQS5jaGFyQXQoMCk9PT0iLyI/Ii8iOiIiOigoQS5jaGFyQXQoTCkhPT0iLyJ8fFMuY2hhckF0KEwpIT09Ii8iKSYmKEw9QS5zdWJzdHJpbmcoMCxMKS5sYXN0SW5kZXhPZigiLyIpKSxBLnN1YnN0cmluZygwLEwrMSkpfSxpLndpdGhpblN0cmluZz1mdW5jdGlvbihBLFMsQyl7Q3x8KEM9e30pO3ZhciBMPUMuc3RhcnR8fGkuZmluZFVyaS5zdGFydCx6PUMuZW5kfHxpLmZpbmRVcmkuZW5kLGo9Qy50cmltfHxpLmZpbmRVcmkudHJpbSxrPUMucGFyZW5zfHxpLmZpbmRVcmkucGFyZW5zLHE9L1thLXowLTktXT1bIiddPyQvaTtmb3IoTC5sYXN0SW5kZXg9MDs7KXt2YXIgVz1MLmV4ZWMoQSk7aWYoIVcpYnJlYWs7dmFyIFI9Vy5pbmRleDtpZihDLmlnbm9yZUh0bWwpe3ZhciBudD1BLnNsaWNlKE1hdGgubWF4KFItMywwKSxSKTtpZihudCYmcS50ZXN0KG50KSljb250aW51ZX1mb3IodmFyIGF0PVIrQS5zbGljZShSKS5zZWFyY2goeiksbHQ9QS5zbGljZShSLGF0KSxfdD0tMTs7KXt2YXIgb3Q9ay5leGVjKGx0KTtpZighb3QpYnJlYWs7dmFyIFB0PW90LmluZGV4K290WzBdLmxlbmd0aDtfdD1NYXRoLm1heChfdCxQdCl9aWYoX3Q+LTE/bHQ9bHQuc2xpY2UoMCxfdCkrbHQuc2xpY2UoX3QpLnJlcGxhY2UoaiwiIik6bHQ9bHQucmVwbGFjZShqLCIiKSwhKGx0Lmxlbmd0aDw9V1swXS5sZW5ndGgpJiYhKEMuaWdub3JlJiZDLmlnbm9yZS50ZXN0KGx0KSkpe2F0PVIrbHQubGVuZ3RoO3ZhciBndD1TKGx0LFIsYXQsQSk7aWYoZ3Q9PT12b2lkIDApe0wubGFzdEluZGV4PWF0O2NvbnRpbnVlfWd0PVN0cmluZyhndCksQT1BLnNsaWNlKDAsUikrZ3QrQS5zbGljZShhdCksTC5sYXN0SW5kZXg9UitndC5sZW5ndGh9fXJldHVybiBMLmxhc3RJbmRleD0wLEF9LGkuZW5zdXJlVmFsaWRIb3N0bmFtZT1mdW5jdGlvbihBLFMpe3ZhciBDPSEhQSxMPSEhUyx6PSExO2lmKEwmJih6PWgoaS5ob3N0UHJvdG9jb2xzLFMpKSx6JiYhQyl0aHJvdyBuZXcgVHlwZUVycm9yKCJIb3N0bmFtZSBjYW5ub3QgYmUgZW1wdHksIGlmIHByb3RvY29sIGlzICIrUyk7aWYoQSYmQS5tYXRjaChpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycykpe2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLTpfXSBhbmQgUHVueWNvZGUuanMgaXMgbm90IGF2YWlsYWJsZScpO2lmKHQudG9BU0NJSShBKS5tYXRjaChpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycykpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tOl9dJyl9fSxpLmVuc3VyZVZhbGlkUG9ydD1mdW5jdGlvbihBKXtpZihBKXt2YXIgUz1OdW1iZXIoQSk7aWYoIShzKFMpJiZTPjAmJlM8NjU1MzYpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1BvcnQgIicrQSsnIiBpcyBub3QgYSB2YWxpZCBwb3J0Jyl9fSxpLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oQSl7aWYoQSl7dmFyIFM9e1VSSTp0aGlzLm5vQ29uZmxpY3QoKX07cmV0dXJuIG8uVVJJVGVtcGxhdGUmJnR5cGVvZiBvLlVSSVRlbXBsYXRlLm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihTLlVSSVRlbXBsYXRlPW8uVVJJVGVtcGxhdGUubm9Db25mbGljdCgpKSxvLklQdjYmJnR5cGVvZiBvLklQdjYubm9Db25mbGljdD09ImZ1bmN0aW9uIiYmKFMuSVB2Nj1vLklQdjYubm9Db25mbGljdCgpKSxvLlNlY29uZExldmVsRG9tYWlucyYmdHlwZW9mIG8uU2Vjb25kTGV2ZWxEb21haW5zLm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihTLlNlY29uZExldmVsRG9tYWlucz1vLlNlY29uZExldmVsRG9tYWlucy5ub0NvbmZsaWN0KCkpLFN9ZWxzZSBvLlVSST09PXRoaXMmJihvLlVSST1yKTtyZXR1cm4gdGhpc30sZi5idWlsZD1mdW5jdGlvbihBKXtyZXR1cm4gQT09PSEwP3RoaXMuX2RlZmVycmVkX2J1aWxkPSEwOihBPT09dm9pZCAwfHx0aGlzLl9kZWZlcnJlZF9idWlsZCkmJih0aGlzLl9zdHJpbmc9aS5idWlsZCh0aGlzLl9wYXJ0cyksdGhpcy5fZGVmZXJyZWRfYnVpbGQ9ITEpLHRoaXN9LGYuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkodGhpcyl9LGYudmFsdWVPZj1mLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVpbGQoITEpLl9zdHJpbmd9O2Z1bmN0aW9uIE0oQSl7cmV0dXJuIGZ1bmN0aW9uKFMsQyl7cmV0dXJuIFM9PT12b2lkIDA/dGhpcy5fcGFydHNbQV18fCIiOih0aGlzLl9wYXJ0c1tBXT1TfHxudWxsLHRoaXMuYnVpbGQoIUMpLHRoaXMpfX1mdW5jdGlvbiBOKEEsUyl7cmV0dXJuIGZ1bmN0aW9uKEMsTCl7cmV0dXJuIEM9PT12b2lkIDA/dGhpcy5fcGFydHNbQV18fCIiOihDIT09bnVsbCYmKEM9QysiIixDLmNoYXJBdCgwKT09PVMmJihDPUMuc3Vic3RyaW5nKDEpKSksdGhpcy5fcGFydHNbQV09Qyx0aGlzLmJ1aWxkKCFMKSx0aGlzKX19Zi5wcm90b2NvbD1NKCJwcm90b2NvbCIpLGYudXNlcm5hbWU9TSgidXNlcm5hbWUiKSxmLnBhc3N3b3JkPU0oInBhc3N3b3JkIiksZi5ob3N0bmFtZT1NKCJob3N0bmFtZSIpLGYucG9ydD1NKCJwb3J0IiksZi5xdWVyeT1OKCJxdWVyeSIsIj8iKSxmLmZyYWdtZW50PU4oImZyYWdtZW50IiwiIyIpLGYuc2VhcmNoPWZ1bmN0aW9uKEEsUyl7dmFyIEM9dGhpcy5xdWVyeShBLFMpO3JldHVybiB0eXBlb2YgQz09InN0cmluZyImJkMubGVuZ3RoPyI/IitDOkN9LGYuaGFzaD1mdW5jdGlvbihBLFMpe3ZhciBDPXRoaXMuZnJhZ21lbnQoQSxTKTtyZXR1cm4gdHlwZW9mIEM9PSJzdHJpbmciJiZDLmxlbmd0aD8iIyIrQzpDfSxmLnBhdGhuYW1lPWZ1bmN0aW9uKEEsUyl7aWYoQT09PXZvaWQgMHx8QT09PSEwKXt2YXIgQz10aGlzLl9wYXJ0cy5wYXRofHwodGhpcy5fcGFydHMuaG9zdG5hbWU/Ii8iOiIiKTtyZXR1cm4gQT8odGhpcy5fcGFydHMudXJuP2kuZGVjb2RlVXJuUGF0aDppLmRlY29kZVBhdGgpKEMpOkN9ZWxzZSByZXR1cm4gdGhpcy5fcGFydHMudXJuP3RoaXMuX3BhcnRzLnBhdGg9QT9pLnJlY29kZVVyblBhdGgoQSk6IiI6dGhpcy5fcGFydHMucGF0aD1BP2kucmVjb2RlUGF0aChBKToiLyIsdGhpcy5idWlsZCghUyksdGhpc30sZi5wYXRoPWYucGF0aG5hbWUsZi5ocmVmPWZ1bmN0aW9uKEEsUyl7dmFyIEM7aWYoQT09PXZvaWQgMClyZXR1cm4gdGhpcy50b1N0cmluZygpO3RoaXMuX3N0cmluZz0iIix0aGlzLl9wYXJ0cz1pLl9wYXJ0cygpO3ZhciBMPUEgaW5zdGFuY2VvZiBpLHo9dHlwZW9mIEE9PSJvYmplY3QiJiYoQS5ob3N0bmFtZXx8QS5wYXRofHxBLnBhdGhuYW1lKTtpZihBLm5vZGVOYW1lKXt2YXIgaj1pLmdldERvbUF0dHJpYnV0ZShBKTtBPUFbal18fCIiLHo9ITF9aWYoIUwmJnomJkEucGF0aG5hbWUhPT12b2lkIDAmJihBPUEudG9TdHJpbmcoKSksdHlwZW9mIEE9PSJzdHJpbmcifHxBIGluc3RhbmNlb2YgU3RyaW5nKXRoaXMuX3BhcnRzPWkucGFyc2UoU3RyaW5nKEEpLHRoaXMuX3BhcnRzKTtlbHNlIGlmKEx8fHope3ZhciBrPUw/QS5fcGFydHM6QTtmb3IoQyBpbiBrKUMhPT0icXVlcnkiJiZ1LmNhbGwodGhpcy5fcGFydHMsQykmJih0aGlzLl9wYXJ0c1tDXT1rW0NdKTtrLnF1ZXJ5JiZ0aGlzLnF1ZXJ5KGsucXVlcnksITEpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpbnB1dCIpO3JldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfSxmLmlzPWZ1bmN0aW9uKEEpe3ZhciBTPSExLEM9ITEsTD0hMSx6PSExLGo9ITEsaz0hMSxxPSExLFc9IXRoaXMuX3BhcnRzLnVybjtzd2l0Y2godGhpcy5fcGFydHMuaG9zdG5hbWUmJihXPSExLEM9aS5pcDRfZXhwcmVzc2lvbi50ZXN0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKSxMPWkuaXA2X2V4cHJlc3Npb24udGVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksUz1DfHxMLHo9IVMsaj16JiZuJiZuLmhhcyh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksaz16JiZpLmlkbl9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpLHE9eiYmaS5wdW55Y29kZV9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSxBLnRvTG93ZXJDYXNlKCkpe2Nhc2UicmVsYXRpdmUiOnJldHVybiBXO2Nhc2UiYWJzb2x1dGUiOnJldHVybiFXO2Nhc2UiZG9tYWluIjpjYXNlIm5hbWUiOnJldHVybiB6O2Nhc2Uic2xkIjpyZXR1cm4gajtjYXNlImlwIjpyZXR1cm4gUztjYXNlImlwNCI6Y2FzZSJpcHY0IjpjYXNlImluZXQ0IjpyZXR1cm4gQztjYXNlImlwNiI6Y2FzZSJpcHY2IjpjYXNlImluZXQ2IjpyZXR1cm4gTDtjYXNlImlkbiI6cmV0dXJuIGs7Y2FzZSJ1cmwiOnJldHVybiF0aGlzLl9wYXJ0cy51cm47Y2FzZSJ1cm4iOnJldHVybiEhdGhpcy5fcGFydHMudXJuO2Nhc2UicHVueWNvZGUiOnJldHVybiBxfXJldHVybiBudWxsfTt2YXIgRj1mLnByb3RvY29sLEk9Zi5wb3J0LHY9Zi5ob3N0bmFtZTtmLnByb3RvY29sPWZ1bmN0aW9uKEEsUyl7aWYoQSYmKEE9QS5yZXBsYWNlKC86KFwvXC8pPyQvLCIiKSwhQS5tYXRjaChpLnByb3RvY29sX2V4cHJlc3Npb24pKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm90b2NvbCAiJytBK2AiIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05ListXSBvciBkb2Vzbid0IHN0YXJ0IHdpdGggW0EtWl1gKTtyZXR1cm4gRi5jYWxsKHRoaXMsQSxTKX0sZi5zY2hlbWU9Zi5wcm90b2NvbCxmLnBvcnQ9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gdGhpcy5fcGFydHMudXJuP0E9PT12b2lkIDA/IiI6dGhpczooQSE9PXZvaWQgMCYmKEE9PT0wJiYoQT1udWxsKSxBJiYoQSs9IiIsQS5jaGFyQXQoMCk9PT0iOiImJihBPUEuc3Vic3RyaW5nKDEpKSxpLmVuc3VyZVZhbGlkUG9ydChBKSkpLEkuY2FsbCh0aGlzLEEsUykpfSxmLmhvc3RuYW1lPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQSE9PXZvaWQgMCl7dmFyIEM9e3ByZXZlbnRJbnZhbGlkSG9zdG5hbWU6dGhpcy5fcGFydHMucHJldmVudEludmFsaWRIb3N0bmFtZX0sTD1pLnBhcnNlSG9zdChBLEMpO2lmKEwhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO0E9Qy5ob3N0bmFtZSx0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lJiZpLmVuc3VyZVZhbGlkSG9zdG5hbWUoQSx0aGlzLl9wYXJ0cy5wcm90b2NvbCl9cmV0dXJuIHYuY2FsbCh0aGlzLEEsUyl9LGYub3JpZ2luPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7dmFyIEM9dGhpcy5wcm90b2NvbCgpLEw9dGhpcy5hdXRob3JpdHkoKTtyZXR1cm4gTD8oQz9DKyI6Ly8iOiIiKSt0aGlzLmF1dGhvcml0eSgpOiIifWVsc2V7dmFyIHo9aShBKTtyZXR1cm4gdGhpcy5wcm90b2NvbCh6LnByb3RvY29sKCkpLmF1dGhvcml0eSh6LmF1dGhvcml0eSgpKS5idWlsZCghUyksdGhpc319LGYuaG9zdD1mdW5jdGlvbihBLFMpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gQT09PXZvaWQgMD8iIjp0aGlzO2lmKEE9PT12b2lkIDApcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lP2kuYnVpbGRIb3N0KHRoaXMuX3BhcnRzKToiIjt2YXIgQz1pLnBhcnNlSG9zdChBLHRoaXMuX3BhcnRzKTtpZihDIT09Ii8iKXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLV0nKTtyZXR1cm4gdGhpcy5idWlsZCghUyksdGhpc30sZi5hdXRob3JpdHk9ZnVuY3Rpb24oQSxTKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIEE9PT12b2lkIDA/IiI6dGhpcztpZihBPT09dm9pZCAwKXJldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZT9pLmJ1aWxkQXV0aG9yaXR5KHRoaXMuX3BhcnRzKToiIjt2YXIgQz1pLnBhcnNlQXV0aG9yaXR5KEEsdGhpcy5fcGFydHMpO2lmKEMhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO3JldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfSxmLnVzZXJpbmZvPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7dmFyIEM9aS5idWlsZFVzZXJpbmZvKHRoaXMuX3BhcnRzKTtyZXR1cm4gQyYmQy5zdWJzdHJpbmcoMCxDLmxlbmd0aC0xKX1lbHNlIHJldHVybiBBW0EubGVuZ3RoLTFdIT09IkAiJiYoQSs9IkAiKSxpLnBhcnNlVXNlcmluZm8oQSx0aGlzLl9wYXJ0cyksdGhpcy5idWlsZCghUyksdGhpc30sZi5yZXNvdXJjZT1mdW5jdGlvbihBLFMpe3ZhciBDO3JldHVybiBBPT09dm9pZCAwP3RoaXMucGF0aCgpK3RoaXMuc2VhcmNoKCkrdGhpcy5oYXNoKCk6KEM9aS5wYXJzZShBKSx0aGlzLl9wYXJ0cy5wYXRoPUMucGF0aCx0aGlzLl9wYXJ0cy5xdWVyeT1DLnF1ZXJ5LHRoaXMuX3BhcnRzLmZyYWdtZW50PUMuZnJhZ21lbnQsdGhpcy5idWlsZCghUyksdGhpcyl9LGYuc3ViZG9tYWluPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7aWYoIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXJldHVybiIiO3ZhciBDPXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLmRvbWFpbigpLmxlbmd0aC0xO3JldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoMCxDKXx8IiJ9ZWxzZXt2YXIgTD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sZW5ndGgtdGhpcy5kb21haW4oKS5sZW5ndGgsej10aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoMCxMKSxqPW5ldyBSZWdFeHAoIl4iK2MoeikpO2lmKEEmJkEuY2hhckF0KEEubGVuZ3RoLTEpIT09Ii4iJiYoQSs9Ii4iKSxBLmluZGV4T2YoIjoiKSE9PS0xKXRocm93IG5ldyBUeXBlRXJyb3IoIkRvbWFpbnMgY2Fubm90IGNvbnRhaW4gY29sb25zIik7cmV0dXJuIEEmJmkuZW5zdXJlVmFsaWRIb3N0bmFtZShBLHRoaXMuX3BhcnRzLnByb3RvY29sKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKGosQSksdGhpcy5idWlsZCghUyksdGhpc319LGYuZG9tYWluPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYodHlwZW9mIEE9PSJib29sZWFuIiYmKFM9QSxBPXZvaWQgMCksQT09PXZvaWQgMCl7aWYoIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXJldHVybiIiO3ZhciBDPXRoaXMuX3BhcnRzLmhvc3RuYW1lLm1hdGNoKC9cLi9nKTtpZihDJiZDLmxlbmd0aDwyKXJldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZTt2YXIgTD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sZW5ndGgtdGhpcy50bGQoUykubGVuZ3RoLTE7cmV0dXJuIEw9dGhpcy5fcGFydHMuaG9zdG5hbWUubGFzdEluZGV4T2YoIi4iLEwtMSkrMSx0aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoTCl8fCIifWVsc2V7aWYoIUEpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBkb21haW4gZW1wdHkiKTtpZihBLmluZGV4T2YoIjoiKSE9PS0xKXRocm93IG5ldyBUeXBlRXJyb3IoIkRvbWFpbnMgY2Fubm90IGNvbnRhaW4gY29sb25zIik7aWYoaS5lbnN1cmVWYWxpZEhvc3RuYW1lKEEsdGhpcy5fcGFydHMucHJvdG9jb2wpLCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSl0aGlzLl9wYXJ0cy5ob3N0bmFtZT1BO2Vsc2V7dmFyIHo9bmV3IFJlZ0V4cChjKHRoaXMuZG9tYWluKCkpKyIkIik7dGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh6LEEpfXJldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfX0sZi50bGQ9ZnVuY3Rpb24oQSxTKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIEE9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgQT09ImJvb2xlYW4iJiYoUz1BLEE9dm9pZCAwKSxBPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEM9dGhpcy5fcGFydHMuaG9zdG5hbWUubGFzdEluZGV4T2YoIi4iKSxMPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZyhDKzEpO3JldHVybiBTIT09ITAmJm4mJm4ubGlzdFtMLnRvTG93ZXJDYXNlKCldJiZuLmdldCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSl8fEx9ZWxzZXt2YXIgejtpZihBKWlmKEEubWF0Y2goL1teYS16QS1aMC05LV0vKSlpZihuJiZuLmlzKEEpKXo9bmV3IFJlZ0V4cChjKHRoaXMudGxkKCkpKyIkIiksdGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh6LEEpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcignVExEICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTldJyk7ZWxzZXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJjYW5ub3Qgc2V0IFRMRCBvbiBub24tZG9tYWluIGhvc3QiKTt6PW5ldyBSZWdFeHAoYyh0aGlzLnRsZCgpKSsiJCIpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnJlcGxhY2UoeixBKX1lbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoImNhbm5vdCBzZXQgVExEIGVtcHR5Iik7cmV0dXJuIHRoaXMuYnVpbGQoIVMpLHRoaXN9fSxmLmRpcmVjdG9yeT1mdW5jdGlvbihBLFMpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gQT09PXZvaWQgMD8iIjp0aGlzO2lmKEE9PT12b2lkIDB8fEE9PT0hMCl7aWYoIXRoaXMuX3BhcnRzLnBhdGgmJiF0aGlzLl9wYXJ0cy5ob3N0bmFtZSlyZXR1cm4iIjtpZih0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIvIjt2YXIgQz10aGlzLl9wYXJ0cy5wYXRoLmxlbmd0aC10aGlzLmZpbGVuYW1lKCkubGVuZ3RoLTEsTD10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygwLEMpfHwodGhpcy5fcGFydHMuaG9zdG5hbWU/Ii8iOiIiKTtyZXR1cm4gQT9pLmRlY29kZVBhdGgoTCk6TH1lbHNle3ZhciB6PXRoaXMuX3BhcnRzLnBhdGgubGVuZ3RoLXRoaXMuZmlsZW5hbWUoKS5sZW5ndGgsaj10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygwLHopLGs9bmV3IFJlZ0V4cCgiXiIrYyhqKSk7cmV0dXJuIHRoaXMuaXMoInJlbGF0aXZlIil8fChBfHwoQT0iLyIpLEEuY2hhckF0KDApIT09Ii8iJiYoQT0iLyIrQSkpLEEmJkEuY2hhckF0KEEubGVuZ3RoLTEpIT09Ii8iJiYoQSs9Ii8iKSxBPWkucmVjb2RlUGF0aChBKSx0aGlzLl9wYXJ0cy5wYXRoPXRoaXMuX3BhcnRzLnBhdGgucmVwbGFjZShrLEEpLHRoaXMuYnVpbGQoIVMpLHRoaXN9fSxmLmZpbGVuYW1lPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYodHlwZW9mIEEhPSJzdHJpbmciKXtpZighdGhpcy5fcGFydHMucGF0aHx8dGhpcy5fcGFydHMucGF0aD09PSIvIilyZXR1cm4iIjt2YXIgQz10aGlzLl9wYXJ0cy5wYXRoLmxhc3RJbmRleE9mKCIvIiksTD10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZyhDKzEpO3JldHVybiBBP2kuZGVjb2RlUGF0aFNlZ21lbnQoTCk6TH1lbHNle3ZhciB6PSExO0EuY2hhckF0KDApPT09Ii8iJiYoQT1BLnN1YnN0cmluZygxKSksQS5tYXRjaCgvXC4/XC8vKSYmKHo9ITApO3ZhciBqPW5ldyBSZWdFeHAoYyh0aGlzLmZpbGVuYW1lKCkpKyIkIik7cmV0dXJuIEE9aS5yZWNvZGVQYXRoKEEpLHRoaXMuX3BhcnRzLnBhdGg9dGhpcy5fcGFydHMucGF0aC5yZXBsYWNlKGosQSksej90aGlzLm5vcm1hbGl6ZVBhdGgoUyk6dGhpcy5idWlsZCghUyksdGhpc319LGYuc3VmZml4PWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMHx8QT09PSEwKXtpZighdGhpcy5fcGFydHMucGF0aHx8dGhpcy5fcGFydHMucGF0aD09PSIvIilyZXR1cm4iIjt2YXIgQz10aGlzLmZpbGVuYW1lKCksTD1DLmxhc3RJbmRleE9mKCIuIikseixqO3JldHVybiBMPT09LTE/IiI6KHo9Qy5zdWJzdHJpbmcoTCsxKSxqPS9eW2EtejAtOSVdKyQvaS50ZXN0KHopP3o6IiIsQT9pLmRlY29kZVBhdGhTZWdtZW50KGopOmopfWVsc2V7QS5jaGFyQXQoMCk9PT0iLiImJihBPUEuc3Vic3RyaW5nKDEpKTt2YXIgaz10aGlzLnN1ZmZpeCgpLHE7aWYoaylBP3E9bmV3IFJlZ0V4cChjKGspKyIkIik6cT1uZXcgUmVnRXhwKGMoIi4iK2spKyIkIik7ZWxzZXtpZighQSlyZXR1cm4gdGhpczt0aGlzLl9wYXJ0cy5wYXRoKz0iLiIraS5yZWNvZGVQYXRoKEEpfXJldHVybiBxJiYoQT1pLnJlY29kZVBhdGgoQSksdGhpcy5fcGFydHMucGF0aD10aGlzLl9wYXJ0cy5wYXRoLnJlcGxhY2UocSxBKSksdGhpcy5idWlsZCghUyksdGhpc319LGYuc2VnbWVudD1mdW5jdGlvbihBLFMsQyl7dmFyIEw9dGhpcy5fcGFydHMudXJuPyI6IjoiLyIsej10aGlzLnBhdGgoKSxqPXouc3Vic3RyaW5nKDAsMSk9PT0iLyIsaz16LnNwbGl0KEwpO2lmKEEhPT12b2lkIDAmJnR5cGVvZiBBIT0ibnVtYmVyIiYmKEM9UyxTPUEsQT12b2lkIDApLEEhPT12b2lkIDAmJnR5cGVvZiBBIT0ibnVtYmVyIil0aHJvdyBuZXcgRXJyb3IoJ0JhZCBzZWdtZW50ICInK0ErJyIsIG11c3QgYmUgMC1iYXNlZCBpbnRlZ2VyJyk7aWYoaiYmay5zaGlmdCgpLEE8MCYmKEE9TWF0aC5tYXgoay5sZW5ndGgrQSwwKSksUz09PXZvaWQgMClyZXR1cm4gQT09PXZvaWQgMD9rOmtbQV07aWYoQT09PW51bGx8fGtbQV09PT12b2lkIDApaWYocChTKSl7az1bXTtmb3IodmFyIHE9MCxXPVMubGVuZ3RoO3E8VztxKyspIVNbcV0ubGVuZ3RoJiYoIWsubGVuZ3RofHwha1trLmxlbmd0aC0xXS5sZW5ndGgpfHwoay5sZW5ndGgmJiFrW2subGVuZ3RoLTFdLmxlbmd0aCYmay5wb3AoKSxrLnB1c2goZyhTW3FdKSkpfWVsc2UoU3x8dHlwZW9mIFM9PSJzdHJpbmciKSYmKFM9ZyhTKSxrW2subGVuZ3RoLTFdPT09IiI/a1trLmxlbmd0aC0xXT1TOmsucHVzaChTKSk7ZWxzZSBTP2tbQV09ZyhTKTprLnNwbGljZShBLDEpO3JldHVybiBqJiZrLnVuc2hpZnQoIiIpLHRoaXMucGF0aChrLmpvaW4oTCksQyl9LGYuc2VnbWVudENvZGVkPWZ1bmN0aW9uKEEsUyxDKXt2YXIgTCx6LGo7aWYodHlwZW9mIEEhPSJudW1iZXIiJiYoQz1TLFM9QSxBPXZvaWQgMCksUz09PXZvaWQgMCl7aWYoTD10aGlzLnNlZ21lbnQoQSxTLEMpLCFwKEwpKUw9TCE9PXZvaWQgMD9pLmRlY29kZShMKTp2b2lkIDA7ZWxzZSBmb3Ioej0wLGo9TC5sZW5ndGg7ejxqO3orKylMW3pdPWkuZGVjb2RlKExbel0pO3JldHVybiBMfWlmKCFwKFMpKVM9dHlwZW9mIFM9PSJzdHJpbmcifHxTIGluc3RhbmNlb2YgU3RyaW5nP2kuZW5jb2RlKFMpOlM7ZWxzZSBmb3Ioej0wLGo9Uy5sZW5ndGg7ejxqO3orKylTW3pdPWkuZW5jb2RlKFNbel0pO3JldHVybiB0aGlzLnNlZ21lbnQoQSxTLEMpfTt2YXIgQj1mLnF1ZXJ5O3JldHVybiBmLnF1ZXJ5PWZ1bmN0aW9uKEEsUyl7aWYoQT09PSEwKXJldHVybiBpLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7aWYodHlwZW9mIEE9PSJmdW5jdGlvbiIpe3ZhciBDPWkucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSxMPUEuY2FsbCh0aGlzLEMpO3JldHVybiB0aGlzLl9wYXJ0cy5xdWVyeT1pLmJ1aWxkUXVlcnkoTHx8Qyx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdGhpcy5idWlsZCghUyksdGhpc31lbHNlIHJldHVybiBBIT09dm9pZCAwJiZ0eXBlb2YgQSE9InN0cmluZyI/KHRoaXMuX3BhcnRzLnF1ZXJ5PWkuYnVpbGRRdWVyeShBLHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0aGlzLmJ1aWxkKCFTKSx0aGlzKTpCLmNhbGwodGhpcyxBLFMpfSxmLnNldFF1ZXJ5PWZ1bmN0aW9uKEEsUyxDKXt2YXIgTD1pLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7aWYodHlwZW9mIEE9PSJzdHJpbmcifHxBIGluc3RhbmNlb2YgU3RyaW5nKUxbQV09UyE9PXZvaWQgMD9TOm51bGw7ZWxzZSBpZih0eXBlb2YgQT09Im9iamVjdCIpZm9yKHZhciB6IGluIEEpdS5jYWxsKEEseikmJihMW3pdPUFbel0pO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKTtyZXR1cm4gdGhpcy5fcGFydHMucXVlcnk9aS5idWlsZFF1ZXJ5KEwsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBBIT0ic3RyaW5nIiYmKEM9UyksdGhpcy5idWlsZCghQyksdGhpc30sZi5hZGRRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEw9aS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBpLmFkZFF1ZXJ5KEwsQSxTPT09dm9pZCAwP251bGw6UyksdGhpcy5fcGFydHMucXVlcnk9aS5idWlsZFF1ZXJ5KEwsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBBIT0ic3RyaW5nIiYmKEM9UyksdGhpcy5idWlsZCghQyksdGhpc30sZi5yZW1vdmVRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEw9aS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBpLnJlbW92ZVF1ZXJ5KEwsQSxTKSx0aGlzLl9wYXJ0cy5xdWVyeT1pLmJ1aWxkUXVlcnkoTCx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdHlwZW9mIEEhPSJzdHJpbmciJiYoQz1TKSx0aGlzLmJ1aWxkKCFDKSx0aGlzfSxmLmhhc1F1ZXJ5PWZ1bmN0aW9uKEEsUyxDKXt2YXIgTD1pLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7cmV0dXJuIGkuaGFzUXVlcnkoTCxBLFMsQyl9LGYuc2V0U2VhcmNoPWYuc2V0UXVlcnksZi5hZGRTZWFyY2g9Zi5hZGRRdWVyeSxmLnJlbW92ZVNlYXJjaD1mLnJlbW92ZVF1ZXJ5LGYuaGFzU2VhcmNoPWYuaGFzUXVlcnksZi5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFydHMudXJuP3RoaXMubm9ybWFsaXplUHJvdG9jb2woITEpLm5vcm1hbGl6ZVBhdGgoITEpLm5vcm1hbGl6ZVF1ZXJ5KCExKS5ub3JtYWxpemVGcmFnbWVudCghMSkuYnVpbGQoKTp0aGlzLm5vcm1hbGl6ZVByb3RvY29sKCExKS5ub3JtYWxpemVIb3N0bmFtZSghMSkubm9ybWFsaXplUG9ydCghMSkubm9ybWFsaXplUGF0aCghMSkubm9ybWFsaXplUXVlcnkoITEpLm5vcm1hbGl6ZUZyYWdtZW50KCExKS5idWlsZCgpfSxmLm5vcm1hbGl6ZVByb3RvY29sPWZ1bmN0aW9uKEEpe3JldHVybiB0eXBlb2YgdGhpcy5fcGFydHMucHJvdG9jb2w9PSJzdHJpbmciJiYodGhpcy5fcGFydHMucHJvdG9jb2w9dGhpcy5fcGFydHMucHJvdG9jb2wudG9Mb3dlckNhc2UoKSx0aGlzLmJ1aWxkKCFBKSksdGhpc30sZi5ub3JtYWxpemVIb3N0bmFtZT1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5fcGFydHMuaG9zdG5hbWUmJih0aGlzLmlzKCJJRE4iKSYmdD90aGlzLl9wYXJ0cy5ob3N0bmFtZT10LnRvQVNDSUkodGhpcy5fcGFydHMuaG9zdG5hbWUpOnRoaXMuaXMoIklQdjYiKSYmZSYmKHRoaXMuX3BhcnRzLmhvc3RuYW1lPWUuYmVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSkpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCksdGhpcy5idWlsZCghQSkpLHRoaXN9LGYubm9ybWFsaXplUG9ydD1mdW5jdGlvbihBKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnByb3RvY29sPT0ic3RyaW5nIiYmdGhpcy5fcGFydHMucG9ydD09PWkuZGVmYXVsdFBvcnRzW3RoaXMuX3BhcnRzLnByb3RvY29sXSYmKHRoaXMuX3BhcnRzLnBvcnQ9bnVsbCx0aGlzLmJ1aWxkKCFBKSksdGhpc30sZi5ub3JtYWxpemVQYXRoPWZ1bmN0aW9uKEEpe3ZhciBTPXRoaXMuX3BhcnRzLnBhdGg7aWYoIVMpcmV0dXJuIHRoaXM7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiB0aGlzLl9wYXJ0cy5wYXRoPWkucmVjb2RlVXJuUGF0aCh0aGlzLl9wYXJ0cy5wYXRoKSx0aGlzLmJ1aWxkKCFBKSx0aGlzO2lmKHRoaXMuX3BhcnRzLnBhdGg9PT0iLyIpcmV0dXJuIHRoaXM7Uz1pLnJlY29kZVBhdGgoUyk7dmFyIEMsTD0iIix6LGo7Zm9yKFMuY2hhckF0KDApIT09Ii8iJiYoQz0hMCxTPSIvIitTKSwoUy5zbGljZSgtMyk9PT0iLy4uInx8Uy5zbGljZSgtMik9PT0iLy4iKSYmKFMrPSIvIiksUz1TLnJlcGxhY2UoLyhcLyhcLlwvKSspfChcL1wuJCkvZywiLyIpLnJlcGxhY2UoL1wvezIsfS9nLCIvIiksQyYmKEw9Uy5zdWJzdHJpbmcoMSkubWF0Y2goL14oXC5cLlwvKSsvKXx8IiIsTCYmKEw9TFswXSkpO3o9Uy5zZWFyY2goL1wvXC5cLihcL3wkKS8pLHohPT0tMTspe2lmKHo9PT0wKXtTPVMuc3Vic3RyaW5nKDMpO2NvbnRpbnVlfWo9Uy5zdWJzdHJpbmcoMCx6KS5sYXN0SW5kZXhPZigiLyIpLGo9PT0tMSYmKGo9eiksUz1TLnN1YnN0cmluZygwLGopK1Muc3Vic3RyaW5nKHorMyl9cmV0dXJuIEMmJnRoaXMuaXMoInJlbGF0aXZlIikmJihTPUwrUy5zdWJzdHJpbmcoMSkpLHRoaXMuX3BhcnRzLnBhdGg9Uyx0aGlzLmJ1aWxkKCFBKSx0aGlzfSxmLm5vcm1hbGl6ZVBhdGhuYW1lPWYubm9ybWFsaXplUGF0aCxmLm5vcm1hbGl6ZVF1ZXJ5PWZ1bmN0aW9uKEEpe3JldHVybiB0eXBlb2YgdGhpcy5fcGFydHMucXVlcnk9PSJzdHJpbmciJiYodGhpcy5fcGFydHMucXVlcnkubGVuZ3RoP3RoaXMucXVlcnkoaS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpKTp0aGlzLl9wYXJ0cy5xdWVyeT1udWxsLHRoaXMuYnVpbGQoIUEpKSx0aGlzfSxmLm5vcm1hbGl6ZUZyYWdtZW50PWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9wYXJ0cy5mcmFnbWVudHx8KHRoaXMuX3BhcnRzLmZyYWdtZW50PW51bGwsdGhpcy5idWlsZCghQSkpLHRoaXN9LGYubm9ybWFsaXplU2VhcmNoPWYubm9ybWFsaXplUXVlcnksZi5ub3JtYWxpemVIYXNoPWYubm9ybWFsaXplRnJhZ21lbnQsZi5pc284ODU5PWZ1bmN0aW9uKCl7dmFyIEE9aS5lbmNvZGUsUz1pLmRlY29kZTtpLmVuY29kZT1lc2NhcGUsaS5kZWNvZGU9ZGVjb2RlVVJJQ29tcG9uZW50O3RyeXt0aGlzLm5vcm1hbGl6ZSgpfWZpbmFsbHl7aS5lbmNvZGU9QSxpLmRlY29kZT1TfXJldHVybiB0aGlzfSxmLnVuaWNvZGU9ZnVuY3Rpb24oKXt2YXIgQT1pLmVuY29kZSxTPWkuZGVjb2RlO2kuZW5jb2RlPXcsaS5kZWNvZGU9dW5lc2NhcGU7dHJ5e3RoaXMubm9ybWFsaXplKCl9ZmluYWxseXtpLmVuY29kZT1BLGkuZGVjb2RlPVN9cmV0dXJuIHRoaXN9LGYucmVhZGFibGU9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLmNsb25lKCk7QS51c2VybmFtZSgiIikucGFzc3dvcmQoIiIpLm5vcm1hbGl6ZSgpO3ZhciBTPSIiO2lmKEEuX3BhcnRzLnByb3RvY29sJiYoUys9QS5fcGFydHMucHJvdG9jb2wrIjovLyIpLEEuX3BhcnRzLmhvc3RuYW1lJiYoQS5pcygicHVueWNvZGUiKSYmdD8oUys9dC50b1VuaWNvZGUoQS5fcGFydHMuaG9zdG5hbWUpLEEuX3BhcnRzLnBvcnQmJihTKz0iOiIrQS5fcGFydHMucG9ydCkpOlMrPUEuaG9zdCgpKSxBLl9wYXJ0cy5ob3N0bmFtZSYmQS5fcGFydHMucGF0aCYmQS5fcGFydHMucGF0aC5jaGFyQXQoMCkhPT0iLyImJihTKz0iLyIpLFMrPUEucGF0aCghMCksQS5fcGFydHMucXVlcnkpe2Zvcih2YXIgQz0iIixMPTAsej1BLl9wYXJ0cy5xdWVyeS5zcGxpdCgiJiIpLGo9ei5sZW5ndGg7TDxqO0wrKyl7dmFyIGs9KHpbTF18fCIiKS5zcGxpdCgiPSIpO0MrPSImIitpLmRlY29kZVF1ZXJ5KGtbMF0sdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSkucmVwbGFjZSgvJi9nLCIlMjYiKSxrWzFdIT09dm9pZCAwJiYoQys9Ij0iK2kuZGVjb2RlUXVlcnkoa1sxXSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKS5yZXBsYWNlKC8mL2csIiUyNiIpKX1TKz0iPyIrQy5zdWJzdHJpbmcoMSl9cmV0dXJuIFMrPWkuZGVjb2RlUXVlcnkoQS5oYXNoKCksITApLFN9LGYuYWJzb2x1dGVUbz1mdW5jdGlvbihBKXt2YXIgUz10aGlzLmNsb25lKCksQz1bInByb3RvY29sIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImhvc3RuYW1lIiwicG9ydCJdLEwseixqO2lmKHRoaXMuX3BhcnRzLnVybil0aHJvdyBuZXcgRXJyb3IoIlVSTnMgZG8gbm90IGhhdmUgYW55IGdlbmVyYWxseSBkZWZpbmVkIGhpZXJhcmNoaWNhbCBjb21wb25lbnRzIik7aWYoQSBpbnN0YW5jZW9mIGl8fChBPW5ldyBpKEEpKSxTLl9wYXJ0cy5wcm90b2NvbHx8KFMuX3BhcnRzLnByb3RvY29sPUEuX3BhcnRzLnByb3RvY29sLHRoaXMuX3BhcnRzLmhvc3RuYW1lKSlyZXR1cm4gUztmb3Ioej0wO2o9Q1t6XTt6KyspUy5fcGFydHNbal09QS5fcGFydHNbal07cmV0dXJuIFMuX3BhcnRzLnBhdGg/KFMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKC0yKT09PSIuLiImJihTLl9wYXJ0cy5wYXRoKz0iLyIpLFMucGF0aCgpLmNoYXJBdCgwKSE9PSIvIiYmKEw9QS5kaXJlY3RvcnkoKSxMPUx8fChBLnBhdGgoKS5pbmRleE9mKCIvIik9PT0wPyIvIjoiIiksUy5fcGFydHMucGF0aD0oTD9MKyIvIjoiIikrUy5fcGFydHMucGF0aCxTLm5vcm1hbGl6ZVBhdGgoKSkpOihTLl9wYXJ0cy5wYXRoPUEuX3BhcnRzLnBhdGgsUy5fcGFydHMucXVlcnl8fChTLl9wYXJ0cy5xdWVyeT1BLl9wYXJ0cy5xdWVyeSkpLFMuYnVpbGQoKSxTfSxmLnJlbGF0aXZlVG89ZnVuY3Rpb24oQSl7dmFyIFM9dGhpcy5jbG9uZSgpLm5vcm1hbGl6ZSgpLEMsTCx6LGosaztpZihTLl9wYXJ0cy51cm4pdGhyb3cgbmV3IEVycm9yKCJVUk5zIGRvIG5vdCBoYXZlIGFueSBnZW5lcmFsbHkgZGVmaW5lZCBoaWVyYXJjaGljYWwgY29tcG9uZW50cyIpO2lmKEE9bmV3IGkoQSkubm9ybWFsaXplKCksQz1TLl9wYXJ0cyxMPUEuX3BhcnRzLGo9Uy5wYXRoKCksaz1BLnBhdGgoKSxqLmNoYXJBdCgwKSE9PSIvIil0aHJvdyBuZXcgRXJyb3IoIlVSSSBpcyBhbHJlYWR5IHJlbGF0aXZlIik7aWYoay5jaGFyQXQoMCkhPT0iLyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FsY3VsYXRlIGEgVVJJIHJlbGF0aXZlIHRvIGFub3RoZXIgcmVsYXRpdmUgVVJJIik7aWYoQy5wcm90b2NvbD09PUwucHJvdG9jb2wmJihDLnByb3RvY29sPW51bGwpLEMudXNlcm5hbWUhPT1MLnVzZXJuYW1lfHxDLnBhc3N3b3JkIT09TC5wYXNzd29yZHx8Qy5wcm90b2NvbCE9PW51bGx8fEMudXNlcm5hbWUhPT1udWxsfHxDLnBhc3N3b3JkIT09bnVsbClyZXR1cm4gUy5idWlsZCgpO2lmKEMuaG9zdG5hbWU9PT1MLmhvc3RuYW1lJiZDLnBvcnQ9PT1MLnBvcnQpQy5ob3N0bmFtZT1udWxsLEMucG9ydD1udWxsO2Vsc2UgcmV0dXJuIFMuYnVpbGQoKTtpZihqPT09aylyZXR1cm4gQy5wYXRoPSIiLFMuYnVpbGQoKTtpZih6PWkuY29tbW9uUGF0aChqLGspLCF6KXJldHVybiBTLmJ1aWxkKCk7dmFyIHE9TC5wYXRoLnN1YnN0cmluZyh6Lmxlbmd0aCkucmVwbGFjZSgvW15cL10qJC8sIiIpLnJlcGxhY2UoLy4qP1wvL2csIi4uLyIpO3JldHVybiBDLnBhdGg9cStDLnBhdGguc3Vic3RyaW5nKHoubGVuZ3RoKXx8Ii4vIixTLmJ1aWxkKCl9LGYuZXF1YWxzPWZ1bmN0aW9uKEEpe3ZhciBTPXRoaXMuY2xvbmUoKSxDPW5ldyBpKEEpLEw9e30sej17fSxqPXt9LGsscSxXO2lmKFMubm9ybWFsaXplKCksQy5ub3JtYWxpemUoKSxTLnRvU3RyaW5nKCk9PT1DLnRvU3RyaW5nKCkpcmV0dXJuITA7aWYoaz1TLnF1ZXJ5KCkscT1DLnF1ZXJ5KCksUy5xdWVyeSgiIiksQy5xdWVyeSgiIiksUy50b1N0cmluZygpIT09Qy50b1N0cmluZygpfHxrLmxlbmd0aCE9PXEubGVuZ3RoKXJldHVybiExO0w9aS5wYXJzZVF1ZXJ5KGssdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksej1pLnBhcnNlUXVlcnkocSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtmb3IoVyBpbiBMKWlmKHUuY2FsbChMLFcpKXtpZihwKExbV10pKXtpZighXyhMW1ddLHpbV10pKXJldHVybiExfWVsc2UgaWYoTFtXXSE9PXpbV10pcmV0dXJuITE7altXXT0hMH1mb3IoVyBpbiB6KWlmKHUuY2FsbCh6LFcpJiYhaltXXSlyZXR1cm4hMTtyZXR1cm4hMH0sZi5wcmV2ZW50SW52YWxpZEhvc3RuYW1lPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lPSEhQSx0aGlzfSxmLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzPSEhQSx0aGlzfSxmLmVzY2FwZVF1ZXJ5U3BhY2U9ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2U9ISFBLHRoaXN9LGl9KX0pO2Z1bmN0aW9uIGJDKHQpe3JldHVybih0Lmxlbmd0aD09PTB8fHRbdC5sZW5ndGgtMV0hPT0iLyIpJiYodD1gJHt0fS9gKSx0fXZhciBYMSxZMT0kKCgpPT57WDE9YkN9KTtmdW5jdGlvbiAkMSh0LGUpe2lmKHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpcmV0dXJuIHQ7ZT1lPz8hMTtsZXQgbj1uZXcgdC5jb25zdHJ1Y3Rvcjtmb3IobGV0IG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXtsZXQgcj10W29dO2UmJihyPSQxKHIsZSkpLG5bb109cn1yZXR1cm4gbn12YXIgJGMsWjE9JCgoKT0+eyRjPSQxfSk7ZnVuY3Rpb24gUTEodCxlLG4pe249bj8/ITE7bGV0IG89e30scj1tKHQpLGk9bShlKSxzLGYsdTtpZihyKWZvcihzIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShzKSYmKGY9dFtzXSxpJiZuJiZ0eXBlb2YgZj09Im9iamVjdCImJmUuaGFzT3duUHJvcGVydHkocyk/KHU9ZVtzXSx0eXBlb2YgdT09Im9iamVjdCI/b1tzXT1RMShmLHUsbik6b1tzXT1mKTpvW3NdPWYpO2lmKGkpZm9yKHMgaW4gZSllLmhhc093blByb3BlcnR5KHMpJiYhby5oYXNPd25Qcm9wZXJ0eShzKSYmKHU9ZVtzXSxvW3NdPXUpO3JldHVybiBvfXZhciB5cixjcD0kKCgpPT57ZnQoKTt5cj1RMX0pO2Z1bmN0aW9uIHdDKCl7bGV0IHQsZSxuPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG8scil7dD1vLGU9cn0pO3JldHVybntyZXNvbHZlOnQscmVqZWN0OmUscHJvbWlzZTpufX12YXIgSHMsem09JCgoKT0+e0hzPXdDfSk7ZnVuY3Rpb24gam0odCxlKXtsZXQgbjtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PCJ1IiYmKG49ZG9jdW1lbnQpLGptLl9pbXBsZW1lbnRhdGlvbih0LGUsbil9dmFyIEoxLHVmLEhtPSQoKCk9PntKMT1tcihqcygpLDEpO2Z0KCk7SHQoKTtqbS5faW1wbGVtZW50YXRpb249ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyZWxhdGl2ZSB1cmkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpe2lmKHR5cGVvZiBuPiJ1IilyZXR1cm4gdDtlPW4uYmFzZVVSST8/bi5sb2NhdGlvbi5ocmVmfWxldCBvPW5ldyBKMS5kZWZhdWx0KHQpO3JldHVybiBvLnNjaGVtZSgpIT09IiI/by50b1N0cmluZygpOm8uYWJzb2x1dGVUbyhlKS50b1N0cmluZygpfTt1Zj1qbX0pO2Z1bmN0aW9uIFRDKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInVyaSBpcyByZXF1aXJlZC4iKTtsZXQgbj0iIixvPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gbyE9PS0xJiYobj10LnN1YnN0cmluZygwLG8rMSkpLGUmJih0PW5ldyB0QS5kZWZhdWx0KHQpLHQucXVlcnkoKS5sZW5ndGghPT0wJiYobis9YD8ke3QucXVlcnkoKX1gKSx0LmZyYWdtZW50KCkubGVuZ3RoIT09MCYmKG4rPWAjJHt0LmZyYWdtZW50KCl9YCkpLG59dmFyIHRBLGVBLG5BPSQoKCk9Pnt0QT1tcihqcygpLDEpO2Z0KCk7SHQoKTtlQT1UQ30pO2Z1bmN0aW9uIE9DKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ1cmkgaXMgcmVxdWlyZWQuIik7bGV0IGU9bmV3IG9BLmRlZmF1bHQodCk7ZS5ub3JtYWxpemUoKTtsZXQgbj1lLnBhdGgoKSxvPW4ubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gbyE9PS0xJiYobj1uLnN1YnN0cihvKzEpKSxvPW4ubGFzdEluZGV4T2YoIi4iKSxvPT09LTE/bj0iIjpuPW4uc3Vic3RyKG8rMSksbn12YXIgb0EsckEsaUE9JCgoKT0+e29BPW1yKGpzKCksMSk7ZnQoKTtIdCgpO3JBPU9DfSk7ZnVuY3Rpb24gRUModCxlLG4pe20oZSl8fChlPXQud2lkdGgpLG0obil8fChuPXQuaGVpZ2h0KTtsZXQgbz1zQVtlXTttKG8pfHwobz17fSxzQVtlXT1vKTtsZXQgcj1vW25dO2lmKCFtKHIpKXtsZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtpLndpZHRoPWUsaS5oZWlnaHQ9bixyPWkuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KSxyLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iY29weSIsb1tuXT1yfXJldHVybiByLmRyYXdJbWFnZSh0LDAsMCxlLG4pLHIuZ2V0SW1hZ2VEYXRhKDAsMCxlLG4pLmRhdGF9dmFyIHNBLHFtLGNBPSQoKCk9PntmdCgpO3NBPXt9O3FtPUVDfSk7ZnVuY3Rpb24gU0ModCl7cmV0dXJuIHkudHlwZU9mLnN0cmluZygidXJpIix0KSxSQy50ZXN0KHQpfXZhciBSQyxhcCxLbT0kKCgpPT57V3QoKTtSQz0vXmJsb2I6L2k7YXA9U0N9KTtmdW5jdGlvbiB4Qyh0KXttKGVpKXx8KGVpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksZWkuaHJlZj13aW5kb3cubG9jYXRpb24uaHJlZjtsZXQgZT1laS5ob3N0LG49ZWkucHJvdG9jb2w7cmV0dXJuIGVpLmhyZWY9dCxlaS5ocmVmPWVpLmhyZWYsbiE9PWVpLnByb3RvY29sfHxlIT09ZWkuaG9zdH12YXIgZWksYUEsZkE9JCgoKT0+e2Z0KCk7YUE9eEN9KTtmdW5jdGlvbiBQQyh0KXtyZXR1cm4geS50eXBlT2Yuc3RyaW5nKCJ1cmkiLHQpLENDLnRlc3QodCl9dmFyIENDLGZwLFdtPSQoKCk9PntXdCgpO0NDPS9eZGF0YTovaTtmcD1QQ30pO2Z1bmN0aW9uIE1DKHQpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBlLmFzeW5jPSEwLGUuc3JjPXQsbmV3IFByb21pc2UoKG4sbyk9Pnt3aW5kb3cuY3Jvc3NPcmlnaW5Jc29sYXRlZCYmZS5zZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIiwiYW5vbnltb3VzIik7bGV0IHI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtlLm9ubG9hZD1mdW5jdGlvbigpe2Uub25sb2FkPXZvaWQgMCxyLnJlbW92ZUNoaWxkKGUpLG4oKX0sZS5vbmVycm9yPWZ1bmN0aW9uKGkpe28oaSl9LHIuYXBwZW5kQ2hpbGQoZSl9KX12YXIgdUEsbEE9JCgoKT0+e3VBPU1DfSk7ZnVuY3Rpb24gTkModCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm9iaiBpcyByZXF1aXJlZC4iKTtsZXQgZT0iIjtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtsZXQgbz10W25dLHI9YCR7ZW5jb2RlVVJJQ29tcG9uZW50KG4pfT1gO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBpPTAscz1vLmxlbmd0aDtpPHM7KytpKWUrPWAke3IrZW5jb2RlVVJJQ29tcG9uZW50KG9baV0pfSZgO2Vsc2UgZSs9YCR7citlbmNvZGVVUklDb21wb25lbnQobyl9JmB9cmV0dXJuIGU9ZS5zbGljZSgwLC0xKSxlfXZhciBwQSxkQT0kKCgpPT57ZnQoKTtIdCgpO3BBPU5DfSk7ZnVuY3Rpb24gSUModCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInF1ZXJ5U3RyaW5nIGlzIHJlcXVpcmVkLiIpO2xldCBlPXt9O2lmKHQ9PT0iIilyZXR1cm4gZTtsZXQgbj10LnJlcGxhY2UoL1wrL2csIiUyMCIpLnNwbGl0KC9bJjtdLyk7Zm9yKGxldCBvPTAscj1uLmxlbmd0aDtvPHI7KytvKXtsZXQgaT1uW29dLnNwbGl0KCI9Iikscz1kZWNvZGVVUklDb21wb25lbnQoaVswXSksZj1pWzFdO20oZik/Zj1kZWNvZGVVUklDb21wb25lbnQoZik6Zj0iIjtsZXQgdT1lW3NdO3R5cGVvZiB1PT0ic3RyaW5nIj9lW3NdPVt1LGZdOkFycmF5LmlzQXJyYXkodSk/dS5wdXNoKGYpOmVbc109Zn1yZXR1cm4gZX12YXIgbUEsaEE9JCgoKT0+e2Z0KCk7SHQoKTttQT1JQ30pO3ZhciB2Qyx4bix1cD0kKCgpPT57dkM9e1VOSVNTVUVEOjAsSVNTVUVEOjEsQUNUSVZFOjIsUkVDRUlWRUQ6MyxDQU5DRUxMRUQ6NCxGQUlMRUQ6NX0seG49T2JqZWN0LmZyZWV6ZSh2Qyl9KTt2YXIgRkMsX0EseUE9JCgoKT0+e0ZDPXtURVJSQUlOOjAsSU1BR0VSWToxLFRJTEVTM0Q6MixPVEhFUjozfSxfQT1PYmplY3QuZnJlZXplKEZDKX0pO2Z1bmN0aW9uIGxwKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQudGhyb3R0bGVCeVNlcnZlcj8/ITEsbj10LnRocm90dGxlPz8hMTt0aGlzLnVybD10LnVybCx0aGlzLnJlcXVlc3RGdW5jdGlvbj10LnJlcXVlc3RGdW5jdGlvbix0aGlzLmNhbmNlbEZ1bmN0aW9uPXQuY2FuY2VsRnVuY3Rpb24sdGhpcy5wcmlvcml0eUZ1bmN0aW9uPXQucHJpb3JpdHlGdW5jdGlvbix0aGlzLnByaW9yaXR5PXQucHJpb3JpdHk/PzAsdGhpcy50aHJvdHRsZT1uLHRoaXMudGhyb3R0bGVCeVNlcnZlcj1lLHRoaXMudHlwZT10LnR5cGU/P19BLk9USEVSLHRoaXMuc2VydmVyS2V5PXQuc2VydmVyS2V5LHRoaXMuc3RhdGU9eG4uVU5JU1NVRUQsdGhpcy5kZWZlcnJlZD12b2lkIDAsdGhpcy5jYW5jZWxsZWQ9ITF9dmFyIGdBLEFBPSQoKCk9Pnt5ZSgpO2Z0KCk7dXAoKTt5QSgpO2xwLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGxlZD0hMH07bHAucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnVybD10aGlzLnVybCx0LnJlcXVlc3RGdW5jdGlvbj10aGlzLnJlcXVlc3RGdW5jdGlvbix0LmNhbmNlbEZ1bmN0aW9uPXRoaXMuY2FuY2VsRnVuY3Rpb24sdC5wcmlvcml0eUZ1bmN0aW9uPXRoaXMucHJpb3JpdHlGdW5jdGlvbix0LnByaW9yaXR5PXRoaXMucHJpb3JpdHksdC50aHJvdHRsZT10aGlzLnRocm90dGxlLHQudGhyb3R0bGVCeVNlcnZlcj10aGlzLnRocm90dGxlQnlTZXJ2ZXIsdC50eXBlPXRoaXMudHlwZSx0LnNlcnZlcktleT10aGlzLnNlcnZlcktleSx0LnN0YXRlPXhuLlVOSVNTVUVELHQuZGVmZXJyZWQ9dm9pZCAwLHQuY2FuY2VsbGVkPSExLHQpOm5ldyBscCh0aGlzKX07Z0E9bHB9KTtmdW5jdGlvbiBMQyh0KXtsZXQgZT17fTtpZighdClyZXR1cm4gZTtsZXQgbj10LnNwbGl0KGBccgpgKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoOysrbyl7bGV0IHI9bltvXSxpPXIuaW5kZXhPZigiOiAiKTtpZihpPjApe2xldCBzPXIuc3Vic3RyaW5nKDAsaSksZj1yLnN1YnN0cmluZyhpKzIpO2Vbc109Zn19cmV0dXJuIGV9dmFyIGJBLHdBPSQoKCk9PntiQT1MQ30pO2Z1bmN0aW9uIFRBKHQsZSxuKXt0aGlzLnN0YXR1c0NvZGU9dCx0aGlzLnJlc3BvbnNlPWUsdGhpcy5yZXNwb25zZUhlYWRlcnM9bix0eXBlb2YgdGhpcy5yZXNwb25zZUhlYWRlcnM9PSJzdHJpbmciJiYodGhpcy5yZXNwb25zZUhlYWRlcnM9YkEodGhpcy5yZXNwb25zZUhlYWRlcnMpKX12YXIgbGYsT0E9JCgoKT0+e2Z0KCk7d0EoKTtUQS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtsZXQgdD0iUmVxdWVzdCBoYXMgZmFpbGVkLiI7cmV0dXJuIG0odGhpcy5zdGF0dXNDb2RlKSYmKHQrPWAgU3RhdHVzIENvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWApLHR9O2xmPVRBfSk7ZnVuY3Rpb24gcGYoKXt0aGlzLl9saXN0ZW5lcnM9W10sdGhpcy5fc2NvcGVzPVtdLHRoaXMuX3RvUmVtb3ZlPVtdLHRoaXMuX2luc2lkZVJhaXNlRXZlbnQ9ITF9ZnVuY3Rpb24gREModCxlKXtyZXR1cm4gZS10fXZhciBFQSxSQT0kKCgpPT57V3QoKTtmdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBmLnByb3RvdHlwZSx7bnVtYmVyT2ZMaXN0ZW5lcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMubGVuZ3RoLXRoaXMuX3RvUmVtb3ZlLmxlbmd0aH19fSk7cGYucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5mdW5jKCJsaXN0ZW5lciIsdCksdGhpcy5fbGlzdGVuZXJzLnB1c2godCksdGhpcy5fc2NvcGVzLnB1c2goZSk7bGV0IG49dGhpcztyZXR1cm4gZnVuY3Rpb24oKXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKX19O3BmLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YuZnVuYygibGlzdGVuZXIiLHQpO2xldCBuPXRoaXMuX2xpc3RlbmVycyxvPXRoaXMuX3Njb3BlcyxyPS0xO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKG5baV09PT10JiZvW2ldPT09ZSl7cj1pO2JyZWFrfXJldHVybiByIT09LTE/KHRoaXMuX2luc2lkZVJhaXNlRXZlbnQ/KHRoaXMuX3RvUmVtb3ZlLnB1c2gociksbltyXT12b2lkIDAsb1tyXT12b2lkIDApOihuLnNwbGljZShyLDEpLG8uc3BsaWNlKHIsMSkpLCEwKTohMX07cGYucHJvdG90eXBlLnJhaXNlRXZlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSEwO2xldCB0LGU9dGhpcy5fbGlzdGVuZXJzLG49dGhpcy5fc2NvcGVzLG89ZS5sZW5ndGg7Zm9yKHQ9MDt0PG87dCsrKXtsZXQgaT1lW3RdO20oaSkmJmVbdF0uYXBwbHkoblt0XSxhcmd1bWVudHMpfWxldCByPXRoaXMuX3RvUmVtb3ZlO2lmKG89ci5sZW5ndGgsbz4wKXtmb3Ioci5zb3J0KERDKSx0PTA7dDxvO3QrKyl7bGV0IGk9clt0XTtlLnNwbGljZShpLDEpLG4uc3BsaWNlKGksMSl9ci5sZW5ndGg9MH10aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSExfTtFQT1wZn0pO2Z1bmN0aW9uIHFzKHQpe3kudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkseS5kZWZpbmVkKCJvcHRpb25zLmNvbXBhcmF0b3IiLHQuY29tcGFyYXRvciksdGhpcy5fY29tcGFyYXRvcj10LmNvbXBhcmF0b3IsdGhpcy5fYXJyYXk9W10sdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWF4aW11bUxlbmd0aD12b2lkIDB9ZnVuY3Rpb24gWG0odCxlLG4pe2xldCBvPXRbZV07dFtlXT10W25dLHRbbl09b312YXIgU0EseEE9JCgoKT0+e1d0KCk7ZnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxcy5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH19LGludGVybmFsQXJyYXk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheX19LG1heGltdW1MZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtTGVuZ3RofSxzZXQ6ZnVuY3Rpb24odCl7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1heGltdW1MZW5ndGgiLHQsMCk7bGV0IGU9dGhpcy5fbGVuZ3RoO2lmKHQ8ZSl7bGV0IG49dGhpcy5fYXJyYXk7Zm9yKGxldCBvPXQ7bzxlOysrbyluW29dPXZvaWQgMDt0aGlzLl9sZW5ndGg9dCxuLmxlbmd0aD10fXRoaXMuX21heGltdW1MZW5ndGg9dH19LGNvbXBhcmF0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wYXJhdG9yfX19KTtxcy5wcm90b3R5cGUucmVzZXJ2ZT1mdW5jdGlvbih0KXt0PXQ/P3RoaXMuX2xlbmd0aCx0aGlzLl9hcnJheS5sZW5ndGg9dH07cXMucHJvdG90eXBlLmhlYXBpZnk9ZnVuY3Rpb24odCl7dD10Pz8wO2xldCBlPXRoaXMuX2xlbmd0aCxuPXRoaXMuX2NvbXBhcmF0b3Isbz10aGlzLl9hcnJheSxyPS0xLGk9ITA7Zm9yKDtpOyl7bGV0IHM9MioodCsxKSxmPXMtMTtmPGUmJm4ob1tmXSxvW3RdKTwwP3I9ZjpyPXQsczxlJiZuKG9bc10sb1tyXSk8MCYmKHI9cyksciE9PXQ/KFhtKG8scix0KSx0PXIpOmk9ITF9fTtxcy5wcm90b3R5cGUucmVzb3J0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fbGVuZ3RoO2ZvcihsZXQgZT1NYXRoLmNlaWwodC8yKTtlPj0wOy0tZSl0aGlzLmhlYXBpZnkoZSl9O3FzLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCl7eS5kZWZpbmVkKCJlbGVtZW50Iix0KTtsZXQgZT10aGlzLl9hcnJheSxuPXRoaXMuX2NvbXBhcmF0b3Isbz10aGlzLl9tYXhpbXVtTGVuZ3RoLHI9dGhpcy5fbGVuZ3RoKys7Zm9yKHI8ZS5sZW5ndGg/ZVtyXT10OmUucHVzaCh0KTtyIT09MDspe2xldCBzPU1hdGguZmxvb3IoKHItMSkvMik7aWYobihlW3JdLGVbc10pPDApWG0oZSxyLHMpLHI9cztlbHNlIGJyZWFrfWxldCBpO3JldHVybiBtKG8pJiZ0aGlzLl9sZW5ndGg+byYmKGk9ZVtvXSx0aGlzLl9sZW5ndGg9byksaX07cXMucHJvdG90eXBlLnBvcD1mdW5jdGlvbih0KXtpZih0PXQ/PzAsdGhpcy5fbGVuZ3RoPT09MClyZXR1cm47eS50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJpbmRleCIsdCx0aGlzLl9sZW5ndGgpO2xldCBlPXRoaXMuX2FycmF5LG49ZVt0XTtyZXR1cm4gWG0oZSx0LC0tdGhpcy5fbGVuZ3RoKSx0aGlzLmhlYXBpZnkodCksZVt0aGlzLl9sZW5ndGhdPXZvaWQgMCxufTtTQT1xc30pO2Z1bmN0aW9uIEJDKHQsZSl7cmV0dXJuIHQucHJpb3JpdHktZS5wcmlvcml0eX1mdW5jdGlvbiB3bigpe31mdW5jdGlvbiBDQSh0KXttKHQucHJpb3JpdHlGdW5jdGlvbikmJih0LnByaW9yaXR5PXQucHJpb3JpdHlGdW5jdGlvbigpKX1mdW5jdGlvbiBQQSh0KXtyZXR1cm4gdC5zdGF0ZT09PXhuLlVOSVNTVUVEJiYodC5zdGF0ZT14bi5JU1NVRUQsdC5kZWZlcnJlZD1IcygpKSx0LmRlZmVycmVkLnByb21pc2V9ZnVuY3Rpb24ga0ModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHQuc3RhdGU9PT14bi5DQU5DRUxMRUQpcmV0dXJuO2xldCBuPXQuZGVmZXJyZWQ7LS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLGRwLnJhaXNlRXZlbnQoKSx0LnN0YXRlPXhuLlJFQ0VJVkVELHQuZGVmZXJyZWQ9dm9pZCAwLG4ucmVzb2x2ZShlKX19ZnVuY3Rpb24gR0ModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3Quc3RhdGUhPT14bi5DQU5DRUxMRUQmJigrK0hlLm51bWJlck9mRmFpbGVkUmVxdWVzdHMsLS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLGRwLnJhaXNlRXZlbnQoZSksdC5zdGF0ZT14bi5GQUlMRUQsdC5kZWZlcnJlZC5yZWplY3QoZSkpfX1mdW5jdGlvbiBNQSh0KXtsZXQgZT1QQSh0KTtyZXR1cm4gdC5zdGF0ZT14bi5BQ1RJVkUsbmkucHVzaCh0KSwrK0hlLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsKytIZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzRXZlciwrK0NpW3Quc2VydmVyS2V5XSx0LnJlcXVlc3RGdW5jdGlvbigpLnRoZW4oa0ModCkpLmNhdGNoKEdDKHQpKSxlfWZ1bmN0aW9uIEtzKHQpe2xldCBlPXQuc3RhdGU9PT14bi5BQ1RJVkU7aWYodC5zdGF0ZT14bi5DQU5DRUxMRUQsKytIZS5udW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzLG0odC5kZWZlcnJlZCkpe2xldCBuPXQuZGVmZXJyZWQ7dC5kZWZlcnJlZD12b2lkIDAsbi5yZWplY3QoKX1lJiYoLS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLCsrSGUubnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0cyksbSh0LmNhbmNlbEZ1bmN0aW9uKSYmdC5jYW5jZWxGdW5jdGlvbigpfWZ1bmN0aW9uIFZDKCl7d24uZGVidWdTaG93U3RhdGlzdGljcyYmKEhlLm51bWJlck9mQWN0aXZlUmVxdWVzdHM9PT0wJiZIZS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz4wJiYoSGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBhdHRlbXB0ZWQgcmVxdWVzdHM6ICR7SGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0c31gKSxIZS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPTApLEhlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgY2FuY2VsbGVkIHJlcXVlc3RzOiAke0hlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHN9YCksSGUubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz0wKSxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPjAmJihjb25zb2xlLmxvZyhgTnVtYmVyIG9mIGNhbmNlbGxlZCBhY3RpdmUgcmVxdWVzdHM6ICR7SGUubnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0c31gKSxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPTApLEhlLm51bWJlck9mRmFpbGVkUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgZmFpbGVkIHJlcXVlc3RzOiAke0hlLm51bWJlck9mRmFpbGVkUmVxdWVzdHN9YCksSGUubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz0wKSksSGUubGFzdE51bWJlck9mQWN0aXZlUmVxdWVzdHM9SGUubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cyl9dmFyIHBwLEhlLFpjLE9vLG5pLENpLFVDLGRwLG1wLE5BPSQoKCk9PntwcD1tcihqcygpLDEpO1d0KCk7em0oKTtmdCgpO1JBKCk7eEEoKTtLbSgpO1dtKCk7dXAoKTtIZT17bnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0czowLG51bWJlck9mQWN0aXZlUmVxdWVzdHM6MCxudW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzOjAsbnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0czowLG51bWJlck9mRmFpbGVkUmVxdWVzdHM6MCxudW1iZXJPZkFjdGl2ZVJlcXVlc3RzRXZlcjowLGxhc3ROdW1iZXJPZkFjdGl2ZVJlcXVlc3RzOjB9LFpjPTIwLE9vPW5ldyBTQSh7Y29tcGFyYXRvcjpCQ30pO09vLm1heGltdW1MZW5ndGg9WmM7T28ucmVzZXJ2ZShaYyk7bmk9W10sQ2k9e30sVUM9dHlwZW9mIGRvY3VtZW50PCJ1Ij9uZXcgcHAuZGVmYXVsdChkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTpuZXcgcHAuZGVmYXVsdCxkcD1uZXcgRUE7d24ubWF4aW11bVJlcXVlc3RzPTUwO3duLm1heGltdW1SZXF1ZXN0c1BlclNlcnZlcj0xODt3bi5yZXF1ZXN0c0J5U2VydmVyPXt9O3duLnRocm90dGxlUmVxdWVzdHM9ITA7d24uZGVidWdTaG93U3RhdGlzdGljcz0hMTt3bi5yZXF1ZXN0Q29tcGxldGVkRXZlbnQ9ZHA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMod24se3N0YXRpc3RpY3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBIZX19LHByaW9yaXR5SGVhcExlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpjfSxzZXQ6ZnVuY3Rpb24odCl7aWYodDxaYylmb3IoO09vLmxlbmd0aD50Oyl7bGV0IGU9T28ucG9wKCk7S3MoZSl9WmM9dCxPby5tYXhpbXVtTGVuZ3RoPXQsT28ucmVzZXJ2ZSh0KX19fSk7d24uc2VydmVySGFzT3BlblNsb3RzPWZ1bmN0aW9uKHQsZSl7ZT1lPz8xO2xldCBuPXduLnJlcXVlc3RzQnlTZXJ2ZXJbdF0/P3duLm1heGltdW1SZXF1ZXN0c1BlclNlcnZlcjtyZXR1cm4gQ2lbdF0rZTw9bn07d24uaGVhcEhhc09wZW5TbG90cz1mdW5jdGlvbih0KXtyZXR1cm4gT28ubGVuZ3RoK3Q8PVpjfTt3bi51cGRhdGU9ZnVuY3Rpb24oKXtsZXQgdCxlLG49MCxvPW5pLmxlbmd0aDtmb3IodD0wO3Q8bzsrK3Qpe2lmKGU9bmlbdF0sZS5jYW5jZWxsZWQmJktzKGUpLGUuc3RhdGUhPT14bi5BQ1RJVkUpeysrbjtjb250aW51ZX1uPjAmJihuaVt0LW5dPWUpfW5pLmxlbmd0aC09bjtsZXQgcj1Pby5pbnRlcm5hbEFycmF5LGk9T28ubGVuZ3RoO2Zvcih0PTA7dDxpOysrdClDQShyW3RdKTtPby5yZXNvcnQoKTtsZXQgcz1NYXRoLm1heCh3bi5tYXhpbXVtUmVxdWVzdHMtbmkubGVuZ3RoLDApLGY9MDtmb3IoO2Y8cyYmT28ubGVuZ3RoPjA7KXtpZihlPU9vLnBvcCgpLGUuY2FuY2VsbGVkKXtLcyhlKTtjb250aW51ZX1pZihlLnRocm90dGxlQnlTZXJ2ZXImJiF3bi5zZXJ2ZXJIYXNPcGVuU2xvdHMoZS5zZXJ2ZXJLZXkpKXtLcyhlKTtjb250aW51ZX1NQShlKSwrK2Z9VkMoKX07d24uZ2V0U2VydmVyS2V5PWZ1bmN0aW9uKHQpe3kudHlwZU9mLnN0cmluZygidXJsIix0KTtsZXQgZT1uZXcgcHAuZGVmYXVsdCh0KTtlLnNjaGVtZSgpPT09IiImJihlPWUuYWJzb2x1dGVUbyhVQyksZS5ub3JtYWxpemUoKSk7bGV0IG49ZS5hdXRob3JpdHkoKTsvOi8udGVzdChuKXx8KG49YCR7bn06JHtlLnNjaGVtZSgpPT09Imh0dHBzIj8iNDQzIjoiODAifWApO2xldCBvPUNpW25dO3JldHVybiBtKG8pfHwoQ2lbbl09MCksbn07d24ucmVxdWVzdD1mdW5jdGlvbih0KXtpZih5LnR5cGVPZi5vYmplY3QoInJlcXVlc3QiLHQpLHkudHlwZU9mLnN0cmluZygicmVxdWVzdC51cmwiLHQudXJsKSx5LnR5cGVPZi5mdW5jKCJyZXF1ZXN0LnJlcXVlc3RGdW5jdGlvbiIsdC5yZXF1ZXN0RnVuY3Rpb24pLGZwKHQudXJsKXx8YXAodC51cmwpKXJldHVybiBkcC5yYWlzZUV2ZW50KCksdC5zdGF0ZT14bi5SRUNFSVZFRCx0LnJlcXVlc3RGdW5jdGlvbigpO2lmKCsrSGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0cyxtKHQuc2VydmVyS2V5KXx8KHQuc2VydmVyS2V5PXduLmdldFNlcnZlcktleSh0LnVybCkpLHduLnRocm90dGxlUmVxdWVzdHMmJnQudGhyb3R0bGVCeVNlcnZlciYmIXduLnNlcnZlckhhc09wZW5TbG90cyh0LnNlcnZlcktleSkpcmV0dXJuO2lmKCF3bi50aHJvdHRsZVJlcXVlc3RzfHwhdC50aHJvdHRsZSlyZXR1cm4gTUEodCk7aWYobmkubGVuZ3RoPj13bi5tYXhpbXVtUmVxdWVzdHMpcmV0dXJuO0NBKHQpO2xldCBlPU9vLmluc2VydCh0KTtpZihtKGUpKXtpZihlPT09dClyZXR1cm47S3MoZSl9cmV0dXJuIFBBKHQpfTt3bi5jbGVhckZvclNwZWNzPWZ1bmN0aW9uKCl7Zm9yKDtPby5sZW5ndGg+MDspe2xldCBlPU9vLnBvcCgpO0tzKGUpfWxldCB0PW5pLmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7KytlKUtzKG5pW2VdKTtuaS5sZW5ndGg9MCxDaT17fSxIZS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPTAsSGUubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz0wLEhlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHM9MCxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPTAsSGUubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz0wLEhlLm51bWJlck9mQWN0aXZlUmVxdWVzdHNFdmVyPTAsSGUubGFzdE51bWJlck9mQWN0aXZlUmVxdWVzdHM9MH07d24ubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0J5U2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiBDaVt0XX07d24ucmVxdWVzdEhlYXA9T287bXA9d259KTtmdW5jdGlvbiB6Qyh0KXtsZXQgZT1uZXcgSUEuZGVmYXVsdCh0KTtlLm5vcm1hbGl6ZSgpO2xldCBuPWUuYXV0aG9yaXR5KCk7aWYobi5sZW5ndGghPT0wKXtpZihlLmF1dGhvcml0eShuKSxuLmluZGV4T2YoIkAiKSE9PS0xJiYobj1uLnNwbGl0KCJAIilbMV0pLG4uaW5kZXhPZigiOiIpPT09LTEpe2xldCBvPWUuc2NoZW1lKCk7aWYoby5sZW5ndGg9PT0wJiYobz13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsbz1vLnN1YnN0cmluZygwLG8ubGVuZ3RoLTEpKSxvPT09Imh0dHAiKW4rPSI6ODAiO2Vsc2UgaWYobz09PSJodHRwcyIpbis9Ijo0NDMiO2Vsc2UgcmV0dXJufXJldHVybiBufX12YXIgSUEsZGYsUWMsWW0sdkE9JCgoKT0+e0lBPW1yKGpzKCksMSk7ZnQoKTtIdCgpO2RmPXt9LFFjPXt9O2RmLmFkZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBEKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBuPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShRY1tuXSl8fChRY1tuXT0hMCl9O2RmLnJlbW92ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBEKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBuPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShRY1tuXSkmJmRlbGV0ZSBRY1tuXX07ZGYuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInVybCBpcyByZXF1aXJlZC4iKTtsZXQgZT16Qyh0KTtyZXR1cm4hIShtKGUpJiZtKFFjW2VdKSl9O2RmLmNsZWFyPWZ1bmN0aW9uKCl7UWM9e319O1ltPWRmfSk7ZnVuY3Rpb24gVnQodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1QsdHlwZW9mIHQ9PSJzdHJpbmciJiYodD17dXJsOnR9KSx5LnR5cGVPZi5zdHJpbmcoIm9wdGlvbnMudXJsIix0LnVybCksdGhpcy5fdXJsPXZvaWQgMCx0aGlzLl90ZW1wbGF0ZVZhbHVlcz1vaSh0LnRlbXBsYXRlVmFsdWVzLHt9KSx0aGlzLl9xdWVyeVBhcmFtZXRlcnM9b2kodC5xdWVyeVBhcmFtZXRlcnMse30pLHRoaXMuaGVhZGVycz1vaSh0LmhlYWRlcnMse30pLHRoaXMucmVxdWVzdD10LnJlcXVlc3Q/P25ldyBnQSx0aGlzLnByb3h5PXQucHJveHksdGhpcy5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayx0aGlzLnJldHJ5QXR0ZW1wdHM9dC5yZXRyeUF0dGVtcHRzPz8wLHRoaXMuX3JldHJ5Q291bnQ9MCx0LnBhcnNlVXJsPz8hMD90aGlzLnBhcnNlVXJsKHQudXJsLCEwLCEwKTp0aGlzLl91cmw9dC51cmwsdGhpcy5fY3JlZGl0cz10LmNyZWRpdHN9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gbSh0KT8kYyh0KTplfWZ1bmN0aW9uIGpDKHQpe3JldHVybiB0Lmxlbmd0aD09PTA/e306dC5pbmRleE9mKCI9Iik9PT0tMT97W3RdOnZvaWQgMH06bUEodCl9ZnVuY3Rpb24gX3AodCxlLG4pe2lmKCFuKXJldHVybiB5cih0LGUpO2xldCBvPSRjKHQsITApO2ZvcihsZXQgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe2xldCBpPW9bcl0scz1lW3JdO20oaSk/KEFycmF5LmlzQXJyYXkoaSl8fChpPW9bcl09W2ldKSxvW3JdPWkuY29uY2F0KHMpKTpvW3JdPUFycmF5LmlzQXJyYXkocyk/cy5zbGljZSgpOnN9cmV0dXJuIG99ZnVuY3Rpb24gSEModCl7bGV0IGU9T2JqZWN0LmtleXModCk7cmV0dXJuIGUubGVuZ3RoPT09MD8iIjplLmxlbmd0aD09PTEmJiFtKHRbZVswXV0pP2A/JHtlWzBdfWA6YD8ke3BBKHQpfWB9ZnVuY3Rpb24gJG0odCl7bGV0IGU9dC5yZXNvdXJjZSxuPXQuZmxpcFksbz10LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbixyPXQucHJlZmVySW1hZ2VCaXRtYXAsaT1lLnJlcXVlc3Q7aS51cmw9ZS51cmwsaS5yZXF1ZXN0RnVuY3Rpb249ZnVuY3Rpb24oKXtsZXQgZj0hMTshZS5pc0RhdGFVcmkmJiFlLmlzQmxvYlVyaSYmKGY9ZS5pc0Nyb3NzT3JpZ2luVXJsKTtsZXQgdT1IcygpO3JldHVybiBWdC5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlKGksZix1LG4sbyxyKSx1LnByb21pc2V9O2xldCBzPW1wLnJlcXVlc3QoaSk7aWYobShzKSlyZXR1cm4gcy5jYXRjaChmdW5jdGlvbihmKXtyZXR1cm4gaS5zdGF0ZSE9PXhuLkZBSUxFRD9Qcm9taXNlLnJlamVjdChmKTplLnJldHJ5T25FcnJvcihmKS50aGVuKGZ1bmN0aW9uKHUpe3JldHVybiB1PyhpLnN0YXRlPXhuLlVOSVNTVUVELGkuZGVmZXJyZWQ9dm9pZCAwLCRtKHtyZXNvdXJjZTplLGZsaXBZOm4sc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOm8scHJlZmVySW1hZ2VCaXRtYXA6cn0pKTpQcm9taXNlLnJlamVjdChmKX0pfSl9ZnVuY3Rpb24gQkEodCxlLG4pe2xldCBvPXt9O29bZV09bix0LnNldFF1ZXJ5UGFyYW1ldGVycyhvKTtsZXQgcj10LnJlcXVlc3QsaT10LnVybDtyLnVybD1pLHIucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IGY9SHMoKTtyZXR1cm4gd2luZG93W25dPWZ1bmN0aW9uKHUpe2YucmVzb2x2ZSh1KTt0cnl7ZGVsZXRlIHdpbmRvd1tuXX1jYXRjaHt3aW5kb3dbbl09dm9pZCAwfX0sVnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdChpLG4sZiksZi5wcm9taXNlfTtsZXQgcz1tcC5yZXF1ZXN0KHIpO2lmKG0ocykpcmV0dXJuIHMuY2F0Y2goZnVuY3Rpb24oZil7cmV0dXJuIHIuc3RhdGUhPT14bi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoZik6dC5yZXRyeU9uRXJyb3IoZikudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gdT8oci5zdGF0ZT14bi5VTklTU1VFRCxyLmRlZmVycmVkPXZvaWQgMCxCQSh0LGUsbikpOlByb21pc2UucmVqZWN0KGYpfSl9KX1mdW5jdGlvbiBabSh0KXtpZih0LnN0YXRlPT09eG4uSVNTVUVEfHx0LnN0YXRlPT09eG4uQUNUSVZFKXRocm93IG5ldyBBZSgiVGhlIFJlc291cmNlIGlzIGFscmVhZHkgYmVpbmcgZmV0Y2hlZC4iKTt0LnN0YXRlPXhuLlVOSVNTVUVELHQuZGVmZXJyZWQ9dm9pZCAwfWZ1bmN0aW9uIGhwKHQsZSl7bGV0IG49ZGVjb2RlVVJJQ29tcG9uZW50KGUpO3JldHVybiB0P2F0b2Iobik6bn1mdW5jdGlvbiBGQSh0LGUpe2xldCBuPWhwKHQsZSksbz1uZXcgQXJyYXlCdWZmZXIobi5sZW5ndGgpLHI9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspcltpXT1uLmNoYXJDb2RlQXQoaSk7cmV0dXJuIG99ZnVuY3Rpb24gS0ModCxlKXtlPWU/PyIiO2xldCBuPXRbMV0sbz0hIXRbMl0scj10WzNdLGkscztzd2l0Y2goZSl7Y2FzZSIiOmNhc2UidGV4dCI6cmV0dXJuIGhwKG8scik7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIEZBKG8scik7Y2FzZSJibG9iIjpyZXR1cm4gaT1GQShvLHIpLG5ldyBCbG9iKFtpXSx7dHlwZTpufSk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIHM9bmV3IERPTVBhcnNlcixzLnBhcnNlRnJvbVN0cmluZyhocChvLHIpLG4pO2Nhc2UianNvbiI6cmV0dXJuIEpTT04ucGFyc2UoaHAobyxyKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRChgVW5oYW5kbGVkIHJlc3BvbnNlVHlwZTogJHtlfWApfX1mdW5jdGlvbiBXQyh0LGUsbixvLHIsaSxzKXtmZXRjaCh0LHttZXRob2Q6bixoZWFkZXJzOnJ9KS50aGVuKGFzeW5jIGY9PntpZighZi5vayl7bGV0IHU9e307Zi5oZWFkZXJzLmZvckVhY2goKGMsbCk9Pnt1W2xdPWN9KSxpLnJlamVjdChuZXcgbGYoZi5zdGF0dXMsZix1KSk7cmV0dXJufXN3aXRjaChlKXtjYXNlInRleHQiOmkucmVzb2x2ZShmLnRleHQoKSk7YnJlYWs7Y2FzZSJqc29uIjppLnJlc29sdmUoZi5qc29uKCkpO2JyZWFrO2RlZmF1bHQ6aS5yZXNvbHZlKG5ldyBVaW50OEFycmF5KGF3YWl0IGYuYXJyYXlCdWZmZXIoKSkuYnVmZmVyKTticmVha319KS5jYXRjaCgoKT0+e2kucmVqZWN0KG5ldyBsZil9KX12YXIgTEEsREEsSmMscUMsWEMscmksbWY9JCgoKT0+e0xBPW1yKGpzKCksMSk7WTEoKTtXdCgpO1oxKCk7Y3AoKTt5ZSgpO3ptKCk7ZnQoKTtIdCgpO0htKCk7bkEoKTtpQSgpO2NBKCk7S20oKTtmQSgpO1dtKCk7bEEoKTtLdCgpO2RBKCk7aEEoKTtBQSgpO09BKCk7TkEoKTt1cCgpO3RpKCk7dkEoKTtEQT1mdW5jdGlvbigpe3RyeXtsZXQgdD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbigiR0VUIiwiIyIsITApLHQucmVzcG9uc2VUeXBlPSJibG9iIix0LnJlc3BvbnNlVHlwZT09PSJibG9iIn1jYXRjaHtyZXR1cm4hMX19KCk7VnQuY3JlYXRlSWZOZWVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBWdD90LmdldERlcml2ZWRSZXNvdXJjZSh7cmVxdWVzdDp0LnJlcXVlc3R9KTp0eXBlb2YgdCE9InN0cmluZyI/dDpuZXcgVnQoe3VybDp0fSl9O1Z0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG0oSmMpP0pjOnR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCE9ImZ1bmN0aW9uIj8oSmM9UHJvbWlzZS5yZXNvbHZlKCExKSxKYyk6KEpjPVZ0LmZldGNoQmxvYih7dXJsOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQUlBQUFDUWQxUGVBQUFBQkdkQlRVRUFBRTRnM3JFaURnQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFERWxFUVZRSTEyTmc2R0FBQUFFVUFJbmdFM1ppQUFBQUFFbEZUa1N1UW1DQyJ9KS50aGVuKGZ1bmN0aW9uKGUpe2xldCBuPXtpbWFnZU9yaWVudGF0aW9uOiJmbGlwWSIscHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifTtyZXR1cm4gUHJvbWlzZS5hbGwoW2NyZWF0ZUltYWdlQml0bWFwKGUsbiksY3JlYXRlSW1hZ2VCaXRtYXAoZSldKX0pLnRoZW4oZnVuY3Rpb24oZSl7bGV0IG49cW0oZVswXSksbz1xbShlWzFdKTtyZXR1cm4gblsxXSE9PW9bMV19KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSksSmMpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWdCx7aXNCbG9iU3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gREF9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFZ0LnByb3RvdHlwZSx7cXVlcnlQYXJhbWV0ZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbWV0ZXJzfX0sdGVtcGxhdGVWYWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZW1wbGF0ZVZhbHVlc319LHVybDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VXJsQ29tcG9uZW50KCEwLCEwKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyc2VVcmwodCwhMSwhMSl9fSxleHRlbnNpb246e2dldDpmdW5jdGlvbigpe3JldHVybiByQSh0aGlzLl91cmwpfX0saXNEYXRhVXJpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnAodGhpcy5fdXJsKX19LGlzQmxvYlVyaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFwKHRoaXMuX3VybCl9fSxpc0Nyb3NzT3JpZ2luVXJsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYUEodGhpcy5fdXJsKX19LGhhc0hlYWRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcnMpLmxlbmd0aD4wfX0sY3JlZGl0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWRpdHN9fX0pO1Z0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVybENvbXBvbmVudCghMCwhMCl9O1Z0LnByb3RvdHlwZS5wYXJzZVVybD1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1uZXcgTEEuZGVmYXVsdCh0KSxpPWpDKHIucXVlcnkoKSk7dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWU/X3AoaSx0aGlzLnF1ZXJ5UGFyYW1ldGVycyxuKTppLHIuc2VhcmNoKCIiKSxyLmZyYWdtZW50KCIiKSxtKG8pJiZyLnNjaGVtZSgpPT09IiImJihyPXIuYWJzb2x1dGVUbyh1ZihvKSkpLHRoaXMuX3VybD1yLnRvU3RyaW5nKCl9O1Z0LnByb3RvdHlwZS5nZXRVcmxDb21wb25lbnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmlzRGF0YVVyaSlyZXR1cm4gdGhpcy5fdXJsO2xldCBuPXRoaXMuX3VybDt0JiYobj1gJHtufSR7SEModGhpcy5xdWVyeVBhcmFtZXRlcnMpfWApLG49bi5yZXBsYWNlKC8lN0IvZywieyIpLnJlcGxhY2UoLyU3RC9nLCJ9Iik7bGV0IG89dGhpcy5fdGVtcGxhdGVWYWx1ZXM7cmV0dXJuIE9iamVjdC5rZXlzKG8pLmxlbmd0aD4wJiYobj1uLnJlcGxhY2UoL3soLio/KX0vZyxmdW5jdGlvbihyLGkpe2xldCBzPW9baV07cmV0dXJuIG0ocyk/ZW5jb2RlVVJJQ29tcG9uZW50KHMpOnJ9KSksZSYmbSh0aGlzLnByb3h5KSYmKG49dGhpcy5wcm94eS5nZXRVUkwobikpLG59O1Z0LnByb3RvdHlwZS5zZXRRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3F1ZXJ5UGFyYW1ldGVycz1fcCh0aGlzLl9xdWVyeVBhcmFtZXRlcnMsdCwhMSk6dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPV9wKHQsdGhpcy5fcXVlcnlQYXJhbWV0ZXJzLCExKX07VnQucHJvdG90eXBlLmFwcGVuZFF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbih0KXt0aGlzLl9xdWVyeVBhcmFtZXRlcnM9X3AodCx0aGlzLl9xdWVyeVBhcmFtZXRlcnMsITApfTtWdC5wcm90b3R5cGUuc2V0VGVtcGxhdGVWYWx1ZXM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3RlbXBsYXRlVmFsdWVzPXlyKHRoaXMuX3RlbXBsYXRlVmFsdWVzLHQpOnRoaXMuX3RlbXBsYXRlVmFsdWVzPXlyKHQsdGhpcy5fdGVtcGxhdGVWYWx1ZXMpfTtWdC5wcm90b3R5cGUuZ2V0RGVyaXZlZFJlc291cmNlPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuY2xvbmUoKTtpZihlLl9yZXRyeUNvdW50PTAsbSh0LnVybCkpe2xldCBuPXQucHJlc2VydmVRdWVyeVBhcmFtZXRlcnM/PyExO2UucGFyc2VVcmwodC51cmwsITAsbix0aGlzLl91cmwpfXJldHVybiBtKHQucXVlcnlQYXJhbWV0ZXJzKSYmKGUuX3F1ZXJ5UGFyYW1ldGVycz15cih0LnF1ZXJ5UGFyYW1ldGVycyxlLnF1ZXJ5UGFyYW1ldGVycykpLG0odC50ZW1wbGF0ZVZhbHVlcykmJihlLl90ZW1wbGF0ZVZhbHVlcz15cih0LnRlbXBsYXRlVmFsdWVzLGUudGVtcGxhdGVWYWx1ZXMpKSxtKHQuaGVhZGVycykmJihlLmhlYWRlcnM9eXIodC5oZWFkZXJzLGUuaGVhZGVycykpLG0odC5wcm94eSkmJihlLnByb3h5PXQucHJveHkpLG0odC5yZXF1ZXN0KSYmKGUucmVxdWVzdD10LnJlcXVlc3QpLG0odC5yZXRyeUNhbGxiYWNrKSYmKGUucmV0cnlDYWxsYmFjaz10LnJldHJ5Q2FsbGJhY2spLG0odC5yZXRyeUF0dGVtcHRzKSYmKGUucmV0cnlBdHRlbXB0cz10LnJldHJ5QXR0ZW1wdHMpLGV9O1Z0LnByb3RvdHlwZS5yZXRyeU9uRXJyb3I9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5yZXRyeUNhbGxiYWNrO2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24ifHx0aGlzLl9yZXRyeUNvdW50Pj10aGlzLnJldHJ5QXR0ZW1wdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7bGV0IG49dGhpcztyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUodGhpcyx0KSkudGhlbihmdW5jdGlvbihvKXtyZXR1cm4rK24uX3JldHJ5Q291bnQsb30pfTtWdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuX3VybD10aGlzLl91cmwsdC5fcXVlcnlQYXJhbWV0ZXJzPSRjKHRoaXMuX3F1ZXJ5UGFyYW1ldGVycyksdC5fdGVtcGxhdGVWYWx1ZXM9JGModGhpcy5fdGVtcGxhdGVWYWx1ZXMpLHQuaGVhZGVycz0kYyh0aGlzLmhlYWRlcnMpLHQucHJveHk9dGhpcy5wcm94eSx0LnJldHJ5Q2FsbGJhY2s9dGhpcy5yZXRyeUNhbGxiYWNrLHQucmV0cnlBdHRlbXB0cz10aGlzLnJldHJ5QXR0ZW1wdHMsdC5fcmV0cnlDb3VudD0wLHQucmVxdWVzdD10aGlzLnJlcXVlc3QuY2xvbmUoKSx0KTpuZXcgVnQoe3VybDp0aGlzLl91cmwscXVlcnlQYXJhbWV0ZXJzOnRoaXMucXVlcnlQYXJhbWV0ZXJzLHRlbXBsYXRlVmFsdWVzOnRoaXMudGVtcGxhdGVWYWx1ZXMsaGVhZGVyczp0aGlzLmhlYWRlcnMscHJveHk6dGhpcy5wcm94eSxyZXRyeUNhbGxiYWNrOnRoaXMucmV0cnlDYWxsYmFjayxyZXRyeUF0dGVtcHRzOnRoaXMucmV0cnlBdHRlbXB0cyxyZXF1ZXN0OnRoaXMucmVxdWVzdC5jbG9uZSgpLHBhcnNlVXJsOiExLGNyZWRpdHM6bSh0aGlzLmNyZWRpdHMpP3RoaXMuY3JlZGl0cy5zbGljZSgpOnZvaWQgMH0pfTtWdC5wcm90b3R5cGUuZ2V0QmFzZVVyaT1mdW5jdGlvbih0KXtyZXR1cm4gZUEodGhpcy5nZXRVcmxDb21wb25lbnQodCksdCl9O1Z0LnByb3RvdHlwZS5hcHBlbmRGb3J3YXJkU2xhc2g9ZnVuY3Rpb24oKXt0aGlzLl91cmw9WDEodGhpcy5fdXJsKX07VnQucHJvdG90eXBlLmZldGNoQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciJ9KX07VnQuZmV0Y2hBcnJheUJ1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoQXJyYXlCdWZmZXIoKX07VnQucHJvdG90eXBlLmZldGNoQmxvYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImJsb2IifSl9O1Z0LmZldGNoQmxvYj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoQmxvYigpfTtWdC5wcm90b3R5cGUuZmV0Y2hJbWFnZT1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnByZWZlckltYWdlQml0bWFwPz8hMSxuPXQucHJlZmVyQmxvYj8/ITEsbz10LmZsaXBZPz8hMSxyPXQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uPz8hMTtpZihabSh0aGlzLnJlcXVlc3QpLCFEQXx8dGhpcy5pc0RhdGFVcml8fHRoaXMuaXNCbG9iVXJpfHwhdGhpcy5oYXNIZWFkZXJzJiYhbilyZXR1cm4gJG0oe3Jlc291cmNlOnRoaXMsZmxpcFk6byxza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cixwcmVmZXJJbWFnZUJpdG1hcDplfSk7bGV0IGk9dGhpcy5mZXRjaEJsb2IoKTtpZighbShpKSlyZXR1cm47bGV0IHMsZix1LGM7cmV0dXJuIFZ0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zKCkudGhlbihmdW5jdGlvbihsKXtyZXR1cm4gcz1sLGY9cyYmZSxpfSkudGhlbihmdW5jdGlvbihsKXtpZighbShsKSlyZXR1cm47aWYoYz1sLGYpcmV0dXJuIFZ0LmNyZWF0ZUltYWdlQml0bWFwRnJvbUJsb2IobCx7ZmxpcFk6byxwcmVtdWx0aXBseUFscGhhOiExLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpyfSk7bGV0IHA9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobCk7cmV0dXJuIHU9bmV3IFZ0KHt1cmw6cH0pLCRtKHtyZXNvdXJjZTp1LGZsaXBZOm8sc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnIscHJlZmVySW1hZ2VCaXRtYXA6ITF9KX0pLnRoZW4oZnVuY3Rpb24obCl7aWYobShsKSlyZXR1cm4gbC5ibG9iPWMsZnx8d2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodS51cmwpLGx9KS5jYXRjaChmdW5jdGlvbihsKXtyZXR1cm4gbSh1KSYmd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodS51cmwpLGwuYmxvYj1jLFByb21pc2UucmVqZWN0KGwpfSl9O1Z0LmZldGNoSW1hZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaEltYWdlKHtmbGlwWTp0LmZsaXBZLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjp0LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbixwcmVmZXJCbG9iOnQucHJlZmVyQmxvYixwcmVmZXJJbWFnZUJpdG1hcDp0LnByZWZlckltYWdlQml0bWFwfSl9O1Z0LnByb3RvdHlwZS5mZXRjaFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJ0ZXh0In0pfTtWdC5mZXRjaFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaFRleHQoKX07VnQucHJvdG90eXBlLmZldGNoSnNvbj1mdW5jdGlvbigpe2xldCB0PXRoaXMuZmV0Y2goe3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCovKjtxPTAuMDEifX0pO2lmKG0odCkpcmV0dXJuIHQudGhlbihmdW5jdGlvbihlKXtpZihtKGUpKXJldHVybiBKU09OLnBhcnNlKGUpfSl9O1Z0LmZldGNoSnNvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoSnNvbigpfTtWdC5wcm90b3R5cGUuZmV0Y2hYTUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJkb2N1bWVudCIsb3ZlcnJpZGVNaW1lVHlwZToidGV4dC94bWwifSl9O1Z0LmZldGNoWE1MPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkuZmV0Y2hYTUwoKX07VnQucHJvdG90eXBlLmZldGNoSnNvbnA9ZnVuY3Rpb24odCl7dD10Pz8iY2FsbGJhY2siLFptKHRoaXMucmVxdWVzdCk7bGV0IGU7ZG8gZT1gbG9hZEpzb25wJHtQLm5leHRSYW5kb21OdW1iZXIoKS50b1N0cmluZygpLnN1YnN0cmluZygyLDgpfWA7d2hpbGUobSh3aW5kb3dbZV0pKTtyZXR1cm4gQkEodGhpcyx0LGUpfTtWdC5mZXRjaEpzb25wPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkuZmV0Y2hKc29ucCh0LmNhbGxiYWNrUGFyYW1ldGVyTmFtZSl9O1Z0LnByb3RvdHlwZS5fbWFrZVJlcXVlc3Q9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcztabShlLnJlcXVlc3QpO2xldCBuPWUucmVxdWVzdCxvPWUudXJsO24udXJsPW8sbi5yZXF1ZXN0RnVuY3Rpb249ZnVuY3Rpb24oKXtsZXQgaT10LnJlc3BvbnNlVHlwZSxzPXlyKHQuaGVhZGVycyxlLmhlYWRlcnMpLGY9dC5vdmVycmlkZU1pbWVUeXBlLHU9dC5tZXRob2QsYz10LmRhdGEsbD1IcygpLHA9VnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocihvLGksdSxjLHMsbCxmKTtyZXR1cm4gbShwKSYmbShwLmFib3J0KSYmKG4uY2FuY2VsRnVuY3Rpb249ZnVuY3Rpb24oKXtwLmFib3J0KCl9KSxsLnByb21pc2V9O2xldCByPW1wLnJlcXVlc3Qobik7aWYobShyKSlyZXR1cm4gci50aGVuKGZ1bmN0aW9uKGkpe3JldHVybiBuLmNhbmNlbEZ1bmN0aW9uPXZvaWQgMCxpfSkuY2F0Y2goZnVuY3Rpb24oaSl7cmV0dXJuIG4uY2FuY2VsRnVuY3Rpb249dm9pZCAwLG4uc3RhdGUhPT14bi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoaSk6ZS5yZXRyeU9uRXJyb3IoaSkudGhlbihmdW5jdGlvbihzKXtyZXR1cm4gcz8obi5zdGF0ZT14bi5VTklTU1VFRCxuLmRlZmVycmVkPXZvaWQgMCxlLmZldGNoKHQpKTpQcm9taXNlLnJlamVjdChpKX0pfSl9O3FDPS9eZGF0YTooLio/KSg7YmFzZTY0KT8sKC4qKSQvO1Z0LnByb3RvdHlwZS5mZXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdD1vaSh0LHt9KSx0Lm1ldGhvZD0iR0VUIix0aGlzLl9tYWtlUmVxdWVzdCh0KX07VnQuZmV0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaCh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O1Z0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9b2kodCx7fSksdC5tZXRob2Q9IkRFTEVURSIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O1Z0LmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmRlbGV0ZSh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlLGRhdGE6dC5kYXRhfSl9O1Z0LnByb3RvdHlwZS5oZWFkPWZ1bmN0aW9uKHQpe3JldHVybiB0PW9pKHQse30pLHQubWV0aG9kPSJIRUFEIix0aGlzLl9tYWtlUmVxdWVzdCh0KX07VnQuaGVhZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmhlYWQoe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtWdC5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdD1vaSh0LHt9KSx0Lm1ldGhvZD0iT1BUSU9OUyIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O1Z0Lm9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5vcHRpb25zKHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJkYXRhIix0KSxlPW9pKGUse30pLGUubWV0aG9kPSJQT1NUIixlLmRhdGE9dCx0aGlzLl9tYWtlUmVxdWVzdChlKX07VnQucG9zdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLnBvc3QodC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoImRhdGEiLHQpLGU9b2koZSx7fSksZS5tZXRob2Q9IlBVVCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O1Z0LnB1dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLnB1dCh0LmRhdGEse3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtWdC5wcm90b3R5cGUucGF0Y2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJkYXRhIix0KSxlPW9pKGUse30pLGUubWV0aG9kPSJQQVRDSCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O1Z0LnBhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkucGF0Y2godC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQuX0ltcGxlbWVudGF0aW9ucz17fTtWdC5fSW1wbGVtZW50YXRpb25zLmxvYWRJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe2xldCBvPW5ldyBJbWFnZTtvLm9ubG9hZD1mdW5jdGlvbigpe28ubmF0dXJhbFdpZHRoPT09MCYmby5uYXR1cmFsSGVpZ2h0PT09MCYmby53aWR0aD09PTAmJm8uaGVpZ2h0PT09MCYmKG8ud2lkdGg9MzAwLG8uaGVpZ2h0PTE1MCksbi5yZXNvbHZlKG8pfSxvLm9uZXJyb3I9ZnVuY3Rpb24ocil7bi5yZWplY3Qocil9LGUmJihZbS5jb250YWlucyh0KT9vLmNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiOm8uY3Jvc3NPcmlnaW49IiIpLG8uc3JjPXR9O1Z0Ll9JbXBsZW1lbnRhdGlvbnMuY3JlYXRlSW1hZ2U9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPXQudXJsO1Z0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zKCkudGhlbihmdW5jdGlvbihmKXtpZighKGYmJmkpKXtWdC5fSW1wbGVtZW50YXRpb25zLmxvYWRJbWFnZUVsZW1lbnQocyxlLG4pO3JldHVybn1sZXQgdT0iYmxvYiIsYz0iR0VUIixsPUhzKCkscD1WdC5fSW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyKHMsdSxjLHZvaWQgMCx2b2lkIDAsbCx2b2lkIDAsdm9pZCAwLHZvaWQgMCk7cmV0dXJuIG0ocCkmJm0ocC5hYm9ydCkmJih0LmNhbmNlbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7cC5hYm9ydCgpfSksbC5wcm9taXNlLnRoZW4oZnVuY3Rpb24oZCl7aWYoIW0oZCkpe24ucmVqZWN0KG5ldyBBZShgU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCAke3N9IGJ1dCBpdCBjb250YWluZWQgbm8gY29udGVudC5gKSk7cmV0dXJufXJldHVybiBWdC5jcmVhdGVJbWFnZUJpdG1hcEZyb21CbG9iKGQse2ZsaXBZOm8scHJlbXVsdGlwbHlBbHBoYTohMSxza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cn0pfSkudGhlbihmdW5jdGlvbihkKXtuLnJlc29sdmUoZCl9KX0pLmNhdGNoKGZ1bmN0aW9uKGYpe24ucmVqZWN0KGYpfSl9O1Z0LmNyZWF0ZUltYWdlQml0bWFwRnJvbUJsb2I9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJvcHRpb25zIixlKSx5LnR5cGVPZi5ib29sKCJvcHRpb25zLmZsaXBZIixlLmZsaXBZKSx5LnR5cGVPZi5ib29sKCJvcHRpb25zLnByZW11bHRpcGx5QWxwaGEiLGUucHJlbXVsdGlwbHlBbHBoYSkseS50eXBlT2YuYm9vbCgib3B0aW9ucy5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24iLGUuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uKSxjcmVhdGVJbWFnZUJpdG1hcCh0LHtpbWFnZU9yaWVudGF0aW9uOmUuZmxpcFk/ImZsaXBZIjoiZnJvbS1pbWFnZSIscHJlbXVsdGlwbHlBbHBoYTplLnByZW11bHRpcGx5QWxwaGE/InByZW11bHRpcGx5Ijoibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246ZS5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24/Im5vbmUiOiJkZWZhdWx0In0pfTtYQz10eXBlb2YgWE1MSHR0cFJlcXVlc3Q+InUiO1Z0Ll9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI9ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7bGV0IGY9cUMuZXhlYyh0KTtpZihmIT09bnVsbCl7aS5yZXNvbHZlKEtDKGYsZSkpO3JldHVybn1pZihYQyl7V0ModCxlLG4sbyxyLGkscyk7cmV0dXJufWxldCB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihZbS5jb250YWlucyh0KSYmKHUud2l0aENyZWRlbnRpYWxzPSEwKSx1Lm9wZW4obix0LCEwKSxtKHMpJiZtKHUub3ZlcnJpZGVNaW1lVHlwZSkmJnUub3ZlcnJpZGVNaW1lVHlwZShzKSxtKHIpKWZvcihsZXQgbCBpbiByKXIuaGFzT3duUHJvcGVydHkobCkmJnUuc2V0UmVxdWVzdEhlYWRlcihsLHJbbF0pO20oZSkmJih1LnJlc3BvbnNlVHlwZT1lKTtsZXQgYz0hMTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciJiYoYz10LmluZGV4T2YoImZpbGU6Ly8iKT09PTB8fHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubG9jYXRpb24ub3JpZ2luPT09ImZpbGU6Ly8iKSx1Lm9ubG9hZD1mdW5jdGlvbigpe2lmKCh1LnN0YXR1czwyMDB8fHUuc3RhdHVzPj0zMDApJiYhKGMmJnUuc3RhdHVzPT09MCkpe2kucmVqZWN0KG5ldyBsZih1LnN0YXR1cyx1LnJlc3BvbnNlLHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKTtyZXR1cm59bGV0IGw9dS5yZXNwb25zZSxwPXUucmVzcG9uc2VUeXBlO2lmKG49PT0iSEVBRCJ8fG49PT0iT1BUSU9OUyIpe2xldCBoPXUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkudHJpbSgpLnNwbGl0KC9bXHJcbl0rLyksXz17fTtoLmZvckVhY2goZnVuY3Rpb24oZyl7bGV0IGI9Zy5zcGxpdCgiOiAiKSx3PWIuc2hpZnQoKTtfW3ddPWIuam9pbigiOiAiKX0pLGkucmVzb2x2ZShfKTtyZXR1cm59aWYodS5zdGF0dXM9PT0yMDQpaS5yZXNvbHZlKHZvaWQgMCk7ZWxzZSBpZihtKGwpJiYoIW0oZSl8fHA9PT1lKSlpLnJlc29sdmUobCk7ZWxzZSBpZihlPT09Impzb24iJiZ0eXBlb2YgbD09InN0cmluZyIpdHJ5e2kucmVzb2x2ZShKU09OLnBhcnNlKGwpKX1jYXRjaChkKXtpLnJlamVjdChkKX1lbHNlKHA9PT0iInx8cD09PSJkb2N1bWVudCIpJiZtKHUucmVzcG9uc2VYTUwpJiZ1LnJlc3BvbnNlWE1MLmhhc0NoaWxkTm9kZXMoKT9pLnJlc29sdmUodS5yZXNwb25zZVhNTCk6KHA9PT0iInx8cD09PSJ0ZXh0IikmJm0odS5yZXNwb25zZVRleHQpP2kucmVzb2x2ZSh1LnJlc3BvbnNlVGV4dCk6aS5yZWplY3QobmV3IEFlKCJJbnZhbGlkIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlIHR5cGUuIikpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24obCl7aS5yZWplY3QobmV3IGxmKX0sdS5zZW5kKG8pLHV9O1Z0Ll9JbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB1QSh0LGUpLmNhdGNoKGZ1bmN0aW9uKG8pe24ucmVqZWN0KG8pfSl9O1Z0Ll9EZWZhdWx0SW1wbGVtZW50YXRpb25zPXt9O1Z0Ll9EZWZhdWx0SW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlPVZ0Ll9JbXBsZW1lbnRhdGlvbnMuY3JlYXRlSW1hZ2U7VnQuX0RlZmF1bHRJbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI9VnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocjtWdC5fRGVmYXVsdEltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdD1WdC5fSW1wbGVtZW50YXRpb25zLmxvYWRBbmRFeGVjdXRlU2NyaXB0O1Z0LkRFRkFVTFQ9T2JqZWN0LmZyZWV6ZShuZXcgVnQoe3VybDp0eXBlb2YgZG9jdW1lbnQ+InUiPyIiOmRvY3VtZW50LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXX0pKTtyaT1WdH0pO2Z1bmN0aW9uIF9mKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX2RhdGVzPXZvaWQgMCx0aGlzLl9zYW1wbGVzPXZvaWQgMCx0aGlzLl9kYXRlQ29sdW1uPS0xLHRoaXMuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj0tMSx0aGlzLl95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49LTEsdGhpcy5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uPS0xLHRoaXMuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj0tMSx0aGlzLl95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49LTEsdGhpcy5fdGFpTWludXNVdGNTZWNvbmRzQ29sdW1uPS0xLHRoaXMuX2NvbHVtbkNvdW50PTAsdGhpcy5fbGFzdEluZGV4PS0xLHRoaXMuX2FkZE5ld0xlYXBTZWNvbmRzPXQuYWRkTmV3TGVhcFNlY29uZHM/PyEwLG0odC5kYXRhKT9VQSh0aGlzLHQuZGF0YSk6VUEodGhpcyx7Y29sdW1uTmFtZXM6WyJkYXRlSXNvODYwMSIsIm1vZGlmaWVkSnVsaWFuRGF0ZVV0YyIsInhQb2xlV2FuZGVyUmFkaWFucyIsInlQb2xlV2FuZGVyUmFkaWFucyIsInV0MU1pbnVzVXRjU2Vjb25kcyIsImxlbmd0aE9mRGF5Q29ycmVjdGlvblNlY29uZHMiLCJ4Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiLCJ5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiLCJ0YWlNaW51c1V0Y1NlY29uZHMiXSxzYW1wbGVzOltdfSl9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gVm4uY29tcGFyZSh0Lmp1bGlhbkRhdGUsZSl9ZnVuY3Rpb24gVUEodCxlKXtpZighbShlLmNvbHVtbk5hbWVzKSl0aHJvdyBuZXcgQWUoIkVycm9yIGluIGxvYWRlZCBFT1AgZGF0YTogVGhlIGNvbHVtbk5hbWVzIHByb3BlcnR5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUuc2FtcGxlcykpdGhyb3cgbmV3IEFlKCJFcnJvciBpbiBsb2FkZWQgRU9QIGRhdGE6IFRoZSBzYW1wbGVzIHByb3BlcnR5IGlzIHJlcXVpcmVkLiIpO2xldCBuPWUuY29sdW1uTmFtZXMuaW5kZXhPZigibW9kaWZpZWRKdWxpYW5EYXRlVXRjIiksbz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInhQb2xlV2FuZGVyUmFkaWFucyIpLHI9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ5UG9sZVdhbmRlclJhZGlhbnMiKSxpPWUuY29sdW1uTmFtZXMuaW5kZXhPZigidXQxTWludXNVdGNTZWNvbmRzIikscz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInhDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFucyIpLGY9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiKSx1PWUuY29sdW1uTmFtZXMuaW5kZXhPZigidGFpTWludXNVdGNTZWNvbmRzIik7aWYobjwwfHxvPDB8fHI8MHx8aTwwfHxzPDB8fGY8MHx8dTwwKXRocm93IG5ldyBBZSgiRXJyb3IgaW4gbG9hZGVkIEVPUCBkYXRhOiBUaGUgY29sdW1uTmFtZXMgcHJvcGVydHkgbXVzdCBpbmNsdWRlIG1vZGlmaWVkSnVsaWFuRGF0ZVV0YywgeFBvbGVXYW5kZXJSYWRpYW5zLCB5UG9sZVdhbmRlclJhZGlhbnMsIHV0MU1pbnVzVXRjU2Vjb25kcywgeENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zLCB5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMsIGFuZCB0YWlNaW51c1V0Y1NlY29uZHMgY29sdW1ucyIpO2xldCBjPXQuX3NhbXBsZXM9ZS5zYW1wbGVzLGw9dC5fZGF0ZXM9W107dC5fZGF0ZUNvbHVtbj1uLHQuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj1vLHQuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj1yLHQuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbj1pLHQuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj1zLHQuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj1mLHQuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbj11LHQuX2NvbHVtbkNvdW50PWUuY29sdW1uTmFtZXMubGVuZ3RoLHQuX2xhc3RJbmRleD12b2lkIDA7bGV0IHAsZD10Ll9hZGROZXdMZWFwU2Vjb25kcztmb3IobGV0IGg9MCxfPWMubGVuZ3RoO2g8XztoKz10Ll9jb2x1bW5Db3VudCl7bGV0IGc9Y1toK25dLGI9Y1toK3VdLHc9Zyt5bi5NT0RJRklFRF9KVUxJQU5fREFURV9ESUZGRVJFTkNFLE89bmV3IFZuKHcsYixPZS5UQUkpO2lmKGwucHVzaChPKSxkKXtpZihiIT09cCYmbShwKSl7bGV0IEU9Vm4ubGVhcFNlY29uZHMsVD16cyhFLE8sWUMpO2lmKFQ8MCl7bGV0IHg9bmV3IFhlKE8sYik7RS5zcGxpY2UoflQsMCx4KX19cD1ifX19ZnVuY3Rpb24ga0EodCxlLG4sbyxyKXtsZXQgaT1uKm87ci54UG9sZVdhbmRlcj1lW2krdC5feFBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxyLnlQb2xlV2FuZGVyPWVbaSt0Ll95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dLHIueFBvbGVPZmZzZXQ9ZVtpK3QuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0sci55UG9sZU9mZnNldD1lW2krdC5feUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSxyLnV0MU1pbnVzVXRjPWVbaSt0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW5dfWZ1bmN0aW9uIGhmKHQsZSxuKXtyZXR1cm4gZSt0KihuLWUpfWZ1bmN0aW9uIEdBKHQsZSxuLG8scixpLHMpe2xldCBmPXQuX2NvbHVtbkNvdW50O2lmKGk+ZS5sZW5ndGgtMSlyZXR1cm4gcy54UG9sZVdhbmRlcj0wLHMueVBvbGVXYW5kZXI9MCxzLnhQb2xlT2Zmc2V0PTAscy55UG9sZU9mZnNldD0wLHMudXQxTWludXNVdGM9MCxzO2xldCB1PWVbcl0sYz1lW2ldO2lmKHUuZXF1YWxzKGMpfHxvLmVxdWFscyh1KSlyZXR1cm4ga0EodCxuLHIsZixzKSxzO2lmKG8uZXF1YWxzKGMpKXJldHVybiBrQSh0LG4saSxmLHMpLHM7bGV0IGw9Vm4uc2Vjb25kc0RpZmZlcmVuY2Uobyx1KS9Wbi5zZWNvbmRzRGlmZmVyZW5jZShjLHUpLHA9cipmLGQ9aSpmLGg9bltwK3QuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sXz1uW2QrdC5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uXSxnPV8taDtpZihnPi41fHxnPC0uNSl7bGV0IGI9bltwK3QuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sdz1uW2QrdC5fdGFpTWludXNVdGNTZWNvbmRzQ29sdW1uXTtiIT09dyYmKGMuZXF1YWxzKG8pP2g9XzpfLT13LWIpfXJldHVybiBzLnhQb2xlV2FuZGVyPWhmKGwsbltwK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0sbltkK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0pLHMueVBvbGVXYW5kZXI9aGYobCxuW3ArdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxuW2QrdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSkscy54UG9sZU9mZnNldD1oZihsLG5bcCt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLG5bZCt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dKSxzLnlQb2xlT2Zmc2V0PWhmKGwsbltwK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0sbltkK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0pLHMudXQxTWludXNVdGM9aGYobCxoLF8pLHN9dmFyIFZBLHpBPSQoKCk9PntMbSgpO1d0KCk7eWUoKTtmdCgpO0RtKCk7b3AoKTtVbSgpO21mKCk7dGkoKTtabCgpO1FsKCk7X2YuZnJvbVVybD1hc3luYyBmdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgidXJsIix0KSxlPWU/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj1yaS5jcmVhdGVJZk5lZWRlZCh0KSxvO3RyeXtvPWF3YWl0IG4uZmV0Y2hKc29uKCl9Y2F0Y2h7dGhyb3cgbmV3IEFlKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZXRyaWV2aW5nIHRoZSBFT1AgZGF0YSBmcm9tIHRoZSBVUkwgJHtuLnVybH0uYCl9cmV0dXJuIG5ldyBfZih7YWRkTmV3TGVhcFNlY29uZHM6ZS5hZGROZXdMZWFwU2Vjb25kcyxkYXRhOm99KX07X2YuTk9ORT1PYmplY3QuZnJlZXplKHtjb21wdXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSk/KGUueFBvbGVXYW5kZXI9MCxlLnlQb2xlV2FuZGVyPTAsZS54UG9sZU9mZnNldD0wLGUueVBvbGVPZmZzZXQ9MCxlLnV0MU1pbnVzVXRjPTApOmU9bmV3IGFmKDAsMCwwLDAsMCksZX19KTtfZi5wcm90b3R5cGUuY29tcHV0ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHRoaXMuX3NhbXBsZXMpKXJldHVybjtpZihtKGUpfHwoZT1uZXcgYWYoMCwwLDAsMCwwKSksdGhpcy5fc2FtcGxlcy5sZW5ndGg9PT0wKXJldHVybiBlLnhQb2xlV2FuZGVyPTAsZS55UG9sZVdhbmRlcj0wLGUueFBvbGVPZmZzZXQ9MCxlLnlQb2xlT2Zmc2V0PTAsZS51dDFNaW51c1V0Yz0wLGU7bGV0IG49dGhpcy5fZGF0ZXMsbz10aGlzLl9sYXN0SW5kZXgscj0wLGk9MDtpZihtKG8pKXtsZXQgZj1uW29dLHU9bltvKzFdLGM9Vm4ubGVzc1RoYW5PckVxdWFscyhmLHQpLGw9IW0odSkscD1sfHxWbi5ncmVhdGVyVGhhbk9yRXF1YWxzKHUsdCk7aWYoYyYmcClyZXR1cm4gcj1vLCFsJiZ1LmVxdWFscyh0KSYmKytyLGk9cisxLEdBKHRoaXMsbix0aGlzLl9zYW1wbGVzLHQscixpLGUpLGV9bGV0IHM9enMobix0LFZuLmNvbXBhcmUsdGhpcy5fZGF0ZUNvbHVtbik7cmV0dXJuIHM+PTA/KHM8bi5sZW5ndGgtMSYmbltzKzFdLmVxdWFscyh0KSYmKytzLHI9cyxpPXMpOihpPX5zLHI9aS0xLHI8MCYmKHI9MCkpLHRoaXMuX2xhc3RJbmRleD1yLEdBKHRoaXMsbix0aGlzLl9zYW1wbGVzLHQscixpLGUpLGV9O1ZBPV9mfSk7ZnVuY3Rpb24gRW8odCxlLG4pe3RoaXMuaGVhZGluZz10Pz8wLHRoaXMucGl0Y2g9ZT8/MCx0aGlzLnJvbGw9bj8/MH12YXIgeXAsakE9JCgoKT0+e2Z0KCk7SHQoKTtLdCgpO0VvLmZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInF1YXRlcm5pb24gaXMgcmVxdWlyZWQiKTttKGUpfHwoZT1uZXcgRW8pO2xldCBuPTIqKHQudyp0LnktdC56KnQueCksbz0xLTIqKHQueCp0LngrdC55KnQueSkscj0yKih0LncqdC54K3QueSp0LnopLGk9MS0yKih0LnkqdC55K3Queip0LnopLHM9MioodC53KnQueit0LngqdC55KTtyZXR1cm4gZS5oZWFkaW5nPS1NYXRoLmF0YW4yKHMsaSksZS5yb2xsPU1hdGguYXRhbjIocixvKSxlLnBpdGNoPS1QLmFzaW5DbGFtcGVkKG4pLGV9O0VvLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJoZWFkaW5nIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInBpdGNoIGlzIHJlcXVpcmVkIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJvbGwgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbShvKXx8KG89bmV3IEVvKSxvLmhlYWRpbmc9dCpQLlJBRElBTlNfUEVSX0RFR1JFRSxvLnBpdGNoPWUqUC5SQURJQU5TX1BFUl9ERUdSRUUsby5yb2xsPW4qUC5SQURJQU5TX1BFUl9ERUdSRUUsb307RW8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmhlYWRpbmc9dC5oZWFkaW5nLGUucGl0Y2g9dC5waXRjaCxlLnJvbGw9dC5yb2xsLGUpOm5ldyBFbyh0LmhlYWRpbmcsdC5waXRjaCx0LnJvbGwpfTtFby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuaGVhZGluZz09PWUuaGVhZGluZyYmdC5waXRjaD09PWUucGl0Y2gmJnQucm9sbD09PWUucm9sbH07RW8uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJlAuZXF1YWxzRXBzaWxvbih0LmhlYWRpbmcsZS5oZWFkaW5nLG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnBpdGNoLGUucGl0Y2gsbixvKSYmUC5lcXVhbHNFcHNpbG9uKHQucm9sbCxlLnJvbGwsbixvKX07RW8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBFby5jbG9uZSh0aGlzLHQpfTtFby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBFby5lcXVhbHModGhpcyx0KX07RW8ucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiBFby5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTtFby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5oZWFkaW5nfSwgJHt0aGlzLnBpdGNofSwgJHt0aGlzLnJvbGx9KWB9O3lwPUVvfSk7ZnVuY3Rpb24gJEMoKXtsZXQgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXtsZXQgbz10W2VdLmdldEF0dHJpYnV0ZSgic3JjIikscj1xQS5leGVjKG8pO2lmKHIhPT1udWxsKXJldHVybiByWzFdfX1mdW5jdGlvbiBLQSh0KXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PiJ1Ij90OihtKGdwKXx8KGdwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksZ3AuaHJlZj10LGdwLmhyZWYpfWZ1bmN0aW9uIFdBKCl7aWYobShXcykpcmV0dXJuIFdzO2xldCB0O2lmKHR5cGVvZiBDRVNJVU1fQkFTRV9VUkw8InUiP3Q9Q0VTSVVNX0JBU0VfVVJMOm0oSEE/LnVybCk/dD11ZigiLiIsSEEudXJsKTp0eXBlb2YgZGVmaW5lPT0ib2JqZWN0IiYmbShkZWZpbmUuYW1kKSYmIWRlZmluZS5hbWQudG9VcmxVbmRlZmluZWQmJm0oZHIudG9VcmwpP3Q9dWYoIi4uIixYcygiQ29yZS9idWlsZE1vZHVsZVVybC5qcyIpKTp0PSRDKCksIW0odCkpdGhyb3cgbmV3IEQoIlVuYWJsZSB0byBkZXRlcm1pbmUgQ2VzaXVtIGJhc2UgVVJMIGF1dG9tYXRpY2FsbHksIHRyeSBkZWZpbmluZyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgQ0VTSVVNX0JBU0VfVVJMLiIpO3JldHVybiBXcz1uZXcgcmkoe3VybDpLQSh0KX0pLFdzLmFwcGVuZEZvcndhcmRTbGFzaCgpLFdzfWZ1bmN0aW9uIFpDKHQpe3JldHVybiBLQShkci50b1VybChgLi4vJHt0fWApKX1mdW5jdGlvbiBYQSh0KXtyZXR1cm4gV0EoKS5nZXREZXJpdmVkUmVzb3VyY2Uoe3VybDp0fSkudXJsfWZ1bmN0aW9uIFhzKHQpe3JldHVybiBtKEFwKXx8KHR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShkci50b1VybCk/QXA9WkM6QXA9WEEpLEFwKHQpfXZhciBIQSxxQSxncCxXcyxBcCxicCxRbT0kKCgpPT57ZnQoKTtIdCgpO0htKCk7bWYoKTtIQT17fSxxQT0vKCg/Oi4qXC8pfF4pQ2VzaXVtXC5qcyg/Olw/fFwjfCQpLztYcy5fY2VzaXVtU2NyaXB0UmVnZXg9cUE7WHMuX2J1aWxkTW9kdWxlVXJsRnJvbUJhc2VVcmw9WEE7WHMuX2NsZWFyQmFzZVJlc291cmNlPWZ1bmN0aW9uKCl7V3M9dm9pZCAwfTtYcy5zZXRCYXNlVXJsPWZ1bmN0aW9uKHQpe1dzPXJpLkRFRkFVTFQuZ2V0RGVyaXZlZFJlc291cmNlKHt1cmw6dH0pfTtYcy5nZXRDZXNpdW1CYXNlVXJsPVdBO2JwPVhzfSk7ZnVuY3Rpb24gUUModCxlLG4pe3RoaXMueD10LHRoaXMueT1lLHRoaXMucz1ufXZhciB3cCxKbT0kKCgpPT57d3A9UUN9KTtmdW5jdGlvbiBuaCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLl94eXNGaWxlVXJsVGVtcGxhdGU9cmkuY3JlYXRlSWZOZWVkZWQodC54eXNGaWxlVXJsVGVtcGxhdGUpLHRoaXMuX2ludGVycG9sYXRpb25PcmRlcj10LmludGVycG9sYXRpb25PcmRlcj8/OSx0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZT10LnNhbXBsZVplcm9KdWxpYW5FcGhlbWVyaXNEYXRlPz8yNDQyMzk2NWUtMSx0aGlzLl9zYW1wbGVaZXJvRGF0ZVRUPW5ldyBWbih0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZSwwLE9lLlRBSSksdGhpcy5fc3RlcFNpemVEYXlzPXQuc3RlcFNpemVEYXlzPz8xLHRoaXMuX3NhbXBsZXNQZXJYeXNGaWxlPXQuc2FtcGxlc1Blclh5c0ZpbGU/PzFlMyx0aGlzLl90b3RhbFNhbXBsZXM9dC50b3RhbFNhbXBsZXM/PzI3NDI2LHRoaXMuX3NhbXBsZXM9bmV3IEFycmF5KHRoaXMuX3RvdGFsU2FtcGxlcyozKSx0aGlzLl9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3M9W107bGV0IGU9dGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLG49dGhpcy5fZGVub21pbmF0b3JzPW5ldyBBcnJheShlKzEpLG89dGhpcy5feFRhYmxlPW5ldyBBcnJheShlKzEpLHI9TWF0aC5wb3codGhpcy5fc3RlcFNpemVEYXlzLGUpO2ZvcihsZXQgaT0wO2k8PWU7KytpKXtuW2ldPXIsb1tpXT1pKnRoaXMuX3N0ZXBTaXplRGF5cztmb3IobGV0IHM9MDtzPD1lOysrcylzIT09aSYmKG5baV0qPWktcyk7bltpXT0xL25baV19dGhpcy5fd29yaz1uZXcgQXJyYXkoZSsxKSx0aGlzLl9jb2VmPW5ldyBBcnJheShlKzEpfWZ1bmN0aW9uIHRoKHQsZSxuKXtsZXQgbz1KQztyZXR1cm4gby5kYXlOdW1iZXI9ZSxvLnNlY29uZHNPZkRheT1uLFZuLmRheXNEaWZmZXJlbmNlKG8sdC5fc2FtcGxlWmVyb0RhdGVUVCl9ZnVuY3Rpb24gZWgodCxlKXtpZih0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV0pcmV0dXJuIHQuX2NodW5rRG93bmxvYWRzSW5Qcm9ncmVzc1tlXTtsZXQgbixvPXQuX3h5c0ZpbGVVcmxUZW1wbGF0ZTttKG8pP249by5nZXREZXJpdmVkUmVzb3VyY2Uoe3RlbXBsYXRlVmFsdWVzOnswOmV9fSk6bj1uZXcgcmkoe3VybDpicChgQXNzZXRzL0lBVTIwMDZfWFlTL0lBVTIwMDZfWFlTXyR7ZX0uanNvbmApfSk7bGV0IHI9bi5mZXRjaEpzb24oKS50aGVuKGZ1bmN0aW9uKGkpe3QuX2NodW5rRG93bmxvYWRzSW5Qcm9ncmVzc1tlXT0hMTtsZXQgcz10Ll9zYW1wbGVzLGY9aS5zYW1wbGVzLHU9ZSp0Ll9zYW1wbGVzUGVyWHlzRmlsZSozO2ZvcihsZXQgYz0wLGw9Zi5sZW5ndGg7YzxsOysrYylzW3UrY109ZltjXX0pO3JldHVybiB0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV09cixyfXZhciBKQyxZQSwkQT0kKCgpPT57UW0oKTt5ZSgpO2Z0KCk7Sm0oKTtvcCgpO21mKCk7UWwoKTtKQz1uZXcgVm4oMCwwLE9lLlRBSSk7bmgucHJvdG90eXBlLnByZWxvYWQ9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9dGgodGhpcyx0LGUpLGk9dGgodGhpcyxuLG8pLHM9ci90aGlzLl9zdGVwU2l6ZURheXMtdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLzJ8MDtzPDAmJihzPTApO2xldCBmPWkvdGhpcy5fc3RlcFNpemVEYXlzLXRoaXMuX2ludGVycG9sYXRpb25PcmRlci8yfDArdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyO2Y+PXRoaXMuX3RvdGFsU2FtcGxlcyYmKGY9dGhpcy5fdG90YWxTYW1wbGVzLTEpO2xldCB1PXMvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxjPWYvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxsPVtdO2ZvcihsZXQgcD11O3A8PWM7KytwKWwucHVzaChlaCh0aGlzLHApKTtyZXR1cm4gUHJvbWlzZS5hbGwobCl9O25oLnByb3RvdHlwZS5jb21wdXRlWHlzUmFkaWFucz1mdW5jdGlvbih0LGUsbil7bGV0IG89dGgodGhpcyx0LGUpO2lmKG88MClyZXR1cm47bGV0IHI9by90aGlzLl9zdGVwU2l6ZURheXN8MDtpZihyPj10aGlzLl90b3RhbFNhbXBsZXMpcmV0dXJuO2xldCBpPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixzPXItKGkvMnwwKTtzPDAmJihzPTApO2xldCBmPXMraTtmPj10aGlzLl90b3RhbFNhbXBsZXMmJihmPXRoaXMuX3RvdGFsU2FtcGxlcy0xLHM9Zi1pLHM8MCYmKHM9MCkpO2xldCB1PSExLGM9dGhpcy5fc2FtcGxlcztpZihtKGNbcyozXSl8fChlaCh0aGlzLHMvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCksdT0hMCksbShjW2YqM10pfHwoZWgodGhpcyxmL3RoaXMuX3NhbXBsZXNQZXJYeXNGaWxlfDApLHU9ITApLHUpcmV0dXJuO20obik/KG4ueD0wLG4ueT0wLG4ucz0wKTpuPW5ldyB3cCgwLDAsMCk7bGV0IGw9by1zKnRoaXMuX3N0ZXBTaXplRGF5cyxwPXRoaXMuX3dvcmssZD10aGlzLl9kZW5vbWluYXRvcnMsaD10aGlzLl9jb2VmLF89dGhpcy5feFRhYmxlLGcsYjtmb3IoZz0wO2c8PWk7KytnKXBbZ109bC1fW2ddO2ZvcihnPTA7Zzw9aTsrK2cpe2ZvcihoW2ddPTEsYj0wO2I8PWk7KytiKWIhPT1nJiYoaFtnXSo9cFtiXSk7aFtnXSo9ZFtnXTtsZXQgdz0ocytnKSozO24ueCs9aFtnXSpjW3crK10sbi55Kz1oW2ddKmNbdysrXSxuLnMrPWhbZ10qY1t3XX1yZXR1cm4gbn07WUE9bmh9KTt2YXIgcnMsTm4sV28sWkEsUUE9JCgoKT0+e2Z0KCk7Tm49e3JlcXVlc3RGdWxsc2NyZWVuOnZvaWQgMCxleGl0RnVsbHNjcmVlbjp2b2lkIDAsZnVsbHNjcmVlbkVuYWJsZWQ6dm9pZCAwLGZ1bGxzY3JlZW5FbGVtZW50OnZvaWQgMCxmdWxsc2NyZWVuY2hhbmdlOnZvaWQgMCxmdWxsc2NyZWVuZXJyb3I6dm9pZCAwfSxXbz17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhXbyx7ZWxlbWVudDp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIGRvY3VtZW50W05uLmZ1bGxzY3JlZW5FbGVtZW50XX19LGNoYW5nZUV2ZW50TmFtZTp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIE5uLmZ1bGxzY3JlZW5jaGFuZ2V9fSxlcnJvckV2ZW50TmFtZTp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIE5uLmZ1bGxzY3JlZW5lcnJvcn19LGVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe2lmKFdvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBkb2N1bWVudFtObi5mdWxsc2NyZWVuRW5hYmxlZF19fSxmdWxsc2NyZWVuOntnZXQ6ZnVuY3Rpb24oKXtpZihXby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSlyZXR1cm4gV28uZWxlbWVudCE9PW51bGx9fX0pO1dvLnN1cHBvcnRzRnVsbHNjcmVlbj1mdW5jdGlvbigpe2lmKG0ocnMpKXJldHVybiBycztycz0hMTtsZXQgdD1kb2N1bWVudC5ib2R5O2lmKHR5cGVvZiB0LnJlcXVlc3RGdWxsc2NyZWVuPT0iZnVuY3Rpb24iKXJldHVybiBObi5yZXF1ZXN0RnVsbHNjcmVlbj0icmVxdWVzdEZ1bGxzY3JlZW4iLE5uLmV4aXRGdWxsc2NyZWVuPSJleGl0RnVsbHNjcmVlbiIsTm4uZnVsbHNjcmVlbkVuYWJsZWQ9ImZ1bGxzY3JlZW5FbmFibGVkIixObi5mdWxsc2NyZWVuRWxlbWVudD0iZnVsbHNjcmVlbkVsZW1lbnQiLE5uLmZ1bGxzY3JlZW5jaGFuZ2U9ImZ1bGxzY3JlZW5jaGFuZ2UiLE5uLmZ1bGxzY3JlZW5lcnJvcj0iZnVsbHNjcmVlbmVycm9yIixycz0hMCxycztsZXQgZT1bIndlYmtpdCIsIm1veiIsIm8iLCJtcyIsImtodG1sIl0sbjtmb3IobGV0IG89MCxyPWUubGVuZ3RoO288cjsrK28pe2xldCBpPWVbb107bj1gJHtpfVJlcXVlc3RGdWxsc2NyZWVuYCx0eXBlb2YgdFtuXT09ImZ1bmN0aW9uIj8oTm4ucmVxdWVzdEZ1bGxzY3JlZW49bixycz0hMCk6KG49YCR7aX1SZXF1ZXN0RnVsbFNjcmVlbmAsdHlwZW9mIHRbbl09PSJmdW5jdGlvbiImJihObi5yZXF1ZXN0RnVsbHNjcmVlbj1uLHJzPSEwKSksbj1gJHtpfUV4aXRGdWxsc2NyZWVuYCx0eXBlb2YgZG9jdW1lbnRbbl09PSJmdW5jdGlvbiI/Tm4uZXhpdEZ1bGxzY3JlZW49bjoobj1gJHtpfUNhbmNlbEZ1bGxTY3JlZW5gLHR5cGVvZiBkb2N1bWVudFtuXT09ImZ1bmN0aW9uIiYmKE5uLmV4aXRGdWxsc2NyZWVuPW4pKSxuPWAke2l9RnVsbHNjcmVlbkVuYWJsZWRgLGRvY3VtZW50W25dIT09dm9pZCAwP05uLmZ1bGxzY3JlZW5FbmFibGVkPW46KG49YCR7aX1GdWxsU2NyZWVuRW5hYmxlZGAsZG9jdW1lbnRbbl0hPT12b2lkIDAmJihObi5mdWxsc2NyZWVuRW5hYmxlZD1uKSksbj1gJHtpfUZ1bGxzY3JlZW5FbGVtZW50YCxkb2N1bWVudFtuXSE9PXZvaWQgMD9Obi5mdWxsc2NyZWVuRWxlbWVudD1uOihuPWAke2l9RnVsbFNjcmVlbkVsZW1lbnRgLGRvY3VtZW50W25dIT09dm9pZCAwJiYoTm4uZnVsbHNjcmVlbkVsZW1lbnQ9bikpLG49YCR7aX1mdWxsc2NyZWVuY2hhbmdlYCxkb2N1bWVudFtgb24ke259YF0hPT12b2lkIDAmJihpPT09Im1zIiYmKG49Ik1TRnVsbHNjcmVlbkNoYW5nZSIpLE5uLmZ1bGxzY3JlZW5jaGFuZ2U9biksbj1gJHtpfWZ1bGxzY3JlZW5lcnJvcmAsZG9jdW1lbnRbYG9uJHtufWBdIT09dm9pZCAwJiYoaT09PSJtcyImJihuPSJNU0Z1bGxzY3JlZW5FcnJvciIpLE5uLmZ1bGxzY3JlZW5lcnJvcj1uKX1yZXR1cm4gcnN9O1dvLnJlcXVlc3RGdWxsc2NyZWVuPWZ1bmN0aW9uKHQsZSl7V28uc3VwcG9ydHNGdWxsc2NyZWVuKCkmJnRbTm4ucmVxdWVzdEZ1bGxzY3JlZW5dKHt2ckRpc3BsYXk6ZX0pfTtXby5leGl0RnVsbHNjcmVlbj1mdW5jdGlvbigpe1dvLnN1cHBvcnRzRnVsbHNjcmVlbigpJiZkb2N1bWVudFtObi5leGl0RnVsbHNjcmVlbl0oKX07V28uX25hbWVzPU5uO1pBPVdvfSk7ZnVuY3Rpb24gWXModCl7bGV0IGU9dC5zcGxpdCgiLiIpO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvOysrbillW25dPXBhcnNlSW50KGVbbl0sMTApO3JldHVybiBlfWZ1bmN0aW9uIGFoKCl7aWYoIW0oVHApJiYoVHA9ITEsIUNwKCkpKXtsZXQgdD0vIENocm9tZVwvKFtcLjAtOV0rKS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoVHA9ITAsSkE9WXModFsxXSkpfXJldHVybiBUcH1mdW5jdGlvbiB0Mygpe3JldHVybiBhaCgpJiZKQX1mdW5jdGlvbiBlYigpe2lmKCFtKE9wKSYmKE9wPSExLCFhaCgpJiYhQ3AoKSYmLyBTYWZhcmlcL1tcLjAtOV0rLy50ZXN0KFNvLnVzZXJBZ2VudCkpKXtsZXQgdD0vIFZlcnNpb25cLyhbXC4wLTldKykvLmV4ZWMoU28udXNlckFnZW50KTt0IT09bnVsbCYmKE9wPSEwLHRiPVlzKHRbMV0pKX1yZXR1cm4gT3B9ZnVuY3Rpb24gZTMoKXtyZXR1cm4gZWIoKSYmdGJ9ZnVuY3Rpb24gbmIoKXtpZighbShFcCkpe0VwPSExO2xldCB0PS8gQXBwbGVXZWJLaXRcLyhbXC4wLTldKykoXCs/KS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoRXA9ITAsc2g9WXModFsxXSksc2guaXNOaWdodGx5PSEhdFsyXSl9cmV0dXJuIEVwfWZ1bmN0aW9uIG4zKCl7cmV0dXJuIG5iKCkmJnNofWZ1bmN0aW9uIG9iKCl7aWYoIW0oeWYpKXt5Zj0hMTtsZXQgdDtTby5hcHBOYW1lPT09Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI/KHQ9L01TSUUgKFswLTldezEsfVtcLjAtOV17MCx9KS8uZXhlYyhTby51c2VyQWdlbnQpLHQhPT1udWxsJiYoeWY9ITAsY2g9WXModFsxXSkpKTpTby5hcHBOYW1lPT09Ik5ldHNjYXBlIiYmKHQ9L1RyaWRlbnRcLy4qcnY6KFswLTldezEsfVtcLjAtOV17MCx9KS8uZXhlYyhTby51c2VyQWdlbnQpLHQhPT1udWxsJiYoeWY9ITAsY2g9WXModFsxXSkpKX1yZXR1cm4geWZ9ZnVuY3Rpb24gbzMoKXtyZXR1cm4gb2IoKSYmY2h9ZnVuY3Rpb24gQ3AoKXtpZighbShScCkpe1JwPSExO2xldCB0PS8gRWRnXC8oW1wuMC05XSspLy5leGVjKFNvLnVzZXJBZ2VudCk7dCE9PW51bGwmJihScD0hMCxyYj1Zcyh0WzFdKSl9cmV0dXJuIFJwfWZ1bmN0aW9uIHIzKCl7cmV0dXJuIENwKCkmJnJifWZ1bmN0aW9uIFBwKCl7aWYoIW0oU3ApKXtTcD0hMTtsZXQgdD0vRmlyZWZveFwvKFtcLjAtOV0rKS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoU3A9ITAsZmg9WXModFsxXSkpfXJldHVybiBTcH1mdW5jdGlvbiBpMygpe3JldHVybiBtKG9oKXx8KG9oPS9XaW5kb3dzL2kudGVzdChTby5hcHBWZXJzaW9uKSksb2h9ZnVuY3Rpb24gczMoKXtyZXR1cm4gbShyaCl8fChyaD1uYXZpZ2F0b3IucGxhdGZvcm09PT0iaVBob25lInx8bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQb2QifHxuYXZpZ2F0b3IucGxhdGZvcm09PT0iaVBhZCIpLHJofWZ1bmN0aW9uIGMzKCl7cmV0dXJuIFBwKCkmJmZofWZ1bmN0aW9uIGEzKCl7cmV0dXJuIG0oaWgpfHwoaWg9IVBwKCkmJnR5cGVvZiBQb2ludGVyRXZlbnQ8InUiJiYoIW0oU28ucG9pbnRlckVuYWJsZWQpfHxTby5wb2ludGVyRW5hYmxlZCkpLGlofWZ1bmN0aW9uIHNiKCl7aWYoIW0oeHApKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7aW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7Iik7bGV0IGU9dC5zdHlsZS5pbWFnZVJlbmRlcmluZzt4cD1tKGUpJiZlIT09IiIseHAmJihpYj1lKX1yZXR1cm4geHB9ZnVuY3Rpb24gZjMoKXtyZXR1cm4gc2IoKT9pYjp2b2lkIDB9ZnVuY3Rpb24gUm8oKXtpZighUm8uaW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEQoIllvdSBtdXN0IGNhbGwgRmVhdHVyZURldGVjdGlvbi5zdXBwb3J0c1dlYlAuaW5pdGlhbGl6ZSBhbmQgd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgY2FsbGluZyBGZWF0dXJlRGV0ZWN0aW9uLnN1cHBvcnRzV2ViUCIpO3JldHVybiBSby5fcmVzdWx0fXZhciBTbyxUcCxKQSxPcCx0YixFcCxzaCx5ZixjaCxScCxyYixTcCxmaCxvaCxyaCxpaCxpYix4cCx0YSxnciwkcyx1aD0kKCgpPT57V3QoKTtmdCgpO0h0KCk7UUEoKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij9Tbz1uYXZpZ2F0b3I6U289e307Um8uX3Byb21pc2U9dm9pZCAwO1JvLl9yZXN1bHQ9dm9pZCAwO1JvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gbShSby5fcHJvbWlzZSl8fChSby5fcHJvbWlzZT1uZXcgUHJvbWlzZSh0PT57bGV0IGU9bmV3IEltYWdlO2Uub25sb2FkPWZ1bmN0aW9uKCl7Um8uX3Jlc3VsdD1lLndpZHRoPjAmJmUuaGVpZ2h0PjAsdChSby5fcmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7Um8uX3Jlc3VsdD0hMSx0KFJvLl9yZXN1bHQpfSxlLnNyYz0iZGF0YTppbWFnZS93ZWJwO2Jhc2U2NCxVa2xHUmlJQUFBQlhSVUpRVmxBNElCWUFBQUF3QVFDZEFTb0JBQUVBRHNEK0phUUFBM0FBQUFBQSJ9KSksUm8uX3Byb21pc2V9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJvLHtpbml0aWFsaXplZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0oUm8uX3Jlc3VsdCl9fX0pO3RhPVtdO3R5cGVvZiBBcnJheUJ1ZmZlcjwidSImJih0YS5wdXNoKEludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZ0YS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZ0YS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgQmlnSW50NjRBcnJheTwidSImJnRhLnB1c2goQmlnSW50NjRBcnJheSksdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1IiYmdGEucHVzaChCaWdVaW50NjRBcnJheSkpO2dyPXtpc0Nocm9tZTphaCxjaHJvbWVWZXJzaW9uOnQzLGlzU2FmYXJpOmViLHNhZmFyaVZlcnNpb246ZTMsaXNXZWJraXQ6bmIsd2Via2l0VmVyc2lvbjpuMyxpc0ludGVybmV0RXhwbG9yZXI6b2IsaW50ZXJuZXRFeHBsb3JlclZlcnNpb246bzMsaXNFZGdlOkNwLGVkZ2VWZXJzaW9uOnIzLGlzRmlyZWZveDpQcCxmaXJlZm94VmVyc2lvbjpjMyxpc1dpbmRvd3M6aTMsaXNJUGFkT3JJT1M6czMsaGFyZHdhcmVDb25jdXJyZW5jeTpTby5oYXJkd2FyZUNvbmN1cnJlbmN5Pz8zLHN1cHBvcnRzUG9pbnRlckV2ZW50czphMyxzdXBwb3J0c0ltYWdlUmVuZGVyaW5nUGl4ZWxhdGVkOnNiLHN1cHBvcnRzV2ViUDpSbyxpbWFnZVJlbmRlcmluZ1ZhbHVlOmYzLHR5cGVkQXJyYXlUeXBlczp0YX07Z3Iuc3VwcG9ydHNCYXNpcz1mdW5jdGlvbih0KXtyZXR1cm4gZ3Iuc3VwcG9ydHNXZWJBc3NlbWJseSgpJiZ0LmNvbnRleHQuc3VwcG9ydHNCYXNpc307Z3Iuc3VwcG9ydHNGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIFpBLnN1cHBvcnRzRnVsbHNjcmVlbigpfTtnci5zdXBwb3J0c1R5cGVkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSJ9O2dyLnN1cHBvcnRzQmlnSW50NjRBcnJheT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnSW50NjRBcnJheTwidSJ9O2dyLnN1cHBvcnRzQmlnVWludDY0QXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1In07Z3Iuc3VwcG9ydHNCaWdJbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJpZ0ludDwidSJ9O2dyLnN1cHBvcnRzV2ViV29ya2Vycz1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgV29ya2VyPCJ1In07Z3Iuc3VwcG9ydHNXZWJBc3NlbWJseT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgV2ViQXNzZW1ibHk8InUifTtnci5zdXBwb3J0c1dlYmdsMj1mdW5jdGlvbih0KXtyZXR1cm4geS5kZWZpbmVkKCJzY2VuZSIsdCksdC5jb250ZXh0LndlYmdsMn07Z3Iuc3VwcG9ydHNFc21XZWJXb3JrZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIVBwKCl8fHBhcnNlSW50KGZoKT49MTE0fTskcz1ncn0pO2Z1bmN0aW9uIEV0KHQsZSxuLG8pe3RoaXMueD10Pz8wLHRoaXMueT1lPz8wLHRoaXMuej1uPz8wLHRoaXMudz1vPz8wfXZhciBnZix1MyxsMyxjYixhYixsaCxmYixNcCxwaCxCcix1YixOcCxkaCxsYixtaCxoaCxwMyxkMyxBZixlYSxtMyxwYixJcCx2cCxQaSxNaSx0ZSxYbz0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7dWgoKTtLdCgpO1VuKCk7Z2Y9bmV3IGE7RXQuZnJvbUF4aXNBbmdsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJheGlzIix0KSx5LnR5cGVPZi5udW1iZXIoImFuZ2xlIixlKTtsZXQgbz1lLzIscj1NYXRoLnNpbihvKTtnZj1hLm5vcm1hbGl6ZSh0LGdmKTtsZXQgaT1nZi54KnIscz1nZi55KnIsZj1nZi56KnIsdT1NYXRoLmNvcyhvKTtyZXR1cm4gbShuKT8obi54PWksbi55PXMsbi56PWYsbi53PXUsbik6bmV3IEV0KGkscyxmLHUpfTt1Mz1bMSwyLDBdLGwzPW5ldyBBcnJheSgzKTtFdC5mcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IG4sbyxyLGkscyxmPXRbWi5DT0xVTU4wUk9XMF0sdT10W1ouQ09MVU1OMVJPVzFdLGM9dFtaLkNPTFVNTjJST1cyXSxsPWYrdStjO2lmKGw+MCluPU1hdGguc3FydChsKzEpLHM9LjUqbixuPS41L24sbz0odFtaLkNPTFVNTjFST1cyXS10W1ouQ09MVU1OMlJPVzFdKSpuLHI9KHRbWi5DT0xVTU4yUk9XMF0tdFtaLkNPTFVNTjBST1cyXSkqbixpPSh0W1ouQ09MVU1OMFJPVzFdLXRbWi5DT0xVTU4xUk9XMF0pKm47ZWxzZXtsZXQgcD11MyxkPTA7dT5mJiYoZD0xKSxjPmYmJmM+dSYmKGQ9Mik7bGV0IGg9cFtkXSxfPXBbaF07bj1NYXRoLnNxcnQodFtaLmdldEVsZW1lbnRJbmRleChkLGQpXS10W1ouZ2V0RWxlbWVudEluZGV4KGgsaCldLXRbWi5nZXRFbGVtZW50SW5kZXgoXyxfKV0rMSk7bGV0IGc9bDM7Z1tkXT0uNSpuLG49LjUvbixzPSh0W1ouZ2V0RWxlbWVudEluZGV4KF8saCldLXRbWi5nZXRFbGVtZW50SW5kZXgoaCxfKV0pKm4sZ1toXT0odFtaLmdldEVsZW1lbnRJbmRleChoLGQpXSt0W1ouZ2V0RWxlbWVudEluZGV4KGQsaCldKSpuLGdbX109KHRbWi5nZXRFbGVtZW50SW5kZXgoXyxkKV0rdFtaLmdldEVsZW1lbnRJbmRleChkLF8pXSkqbixvPS1nWzBdLHI9LWdbMV0saT0tZ1syXX1yZXR1cm4gbShlKT8oZS54PW8sZS55PXIsZS56PWksZS53PXMsZSk6bmV3IEV0KG8scixpLHMpfTtjYj1uZXcgRXQsYWI9bmV3IEV0LGxoPW5ldyBFdCxmYj1uZXcgRXQ7RXQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KSxmYj1FdC5mcm9tQXhpc0FuZ2xlKGEuVU5JVF9YLHQucm9sbCxjYiksbGg9RXQuZnJvbUF4aXNBbmdsZShhLlVOSVRfWSwtdC5waXRjaCxlKSxlPUV0Lm11bHRpcGx5KGxoLGZiLGxoKSxhYj1FdC5mcm9tQXhpc0FuZ2xlKGEuVU5JVF9aLC10LmhlYWRpbmcsY2IpLEV0Lm11bHRpcGx5KGFiLGUsZSl9O01wPW5ldyBhLHBoPW5ldyBhLEJyPW5ldyBFdCx1Yj1uZXcgRXQsTnA9bmV3IEV0O0V0LnBhY2tlZExlbmd0aD00O0V0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQueCxlW24rK109dC55LGVbbisrXT10LnosZVtuXT10LncsZX07RXQudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBFdCksbi54PXRbZV0sbi55PXRbZSsxXSxuLno9dFtlKzJdLG4udz10W2UrM10sbn07RXQucGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aD0zO0V0LmNvbnZlcnRQYWNrZWRBcnJheUZvckludGVycG9sYXRpb249ZnVuY3Rpb24odCxlLG4sbyl7RXQudW5wYWNrKHQsbio0LE5wKSxFdC5jb25qdWdhdGUoTnAsTnApO2ZvcihsZXQgcj0wLGk9bi1lKzE7cjxpO3IrKyl7bGV0IHM9ciozO0V0LnVucGFjayh0LChlK3IpKjQsQnIpLEV0Lm11bHRpcGx5KEJyLE5wLEJyKSxCci53PDAmJkV0Lm5lZ2F0ZShCcixCciksRXQuY29tcHV0ZUF4aXMoQnIsTXApO2xldCBmPUV0LmNvbXB1dGVBbmdsZShCcik7bShvKXx8KG89W10pLG9bc109TXAueCpmLG9bcysxXT1NcC55KmYsb1tzKzJdPU1wLnoqZn19O0V0LnVucGFja0ludGVycG9sYXRpb25SZXN1bHQ9ZnVuY3Rpb24odCxlLG4sbyxyKXttKHIpfHwocj1uZXcgRXQpLGEuZnJvbUFycmF5KHQsMCxwaCk7bGV0IGk9YS5tYWduaXR1ZGUocGgpO3JldHVybiBFdC51bnBhY2soZSxvKjQsdWIpLGk9PT0wP0V0LmNsb25lKEV0LklERU5USVRZLEJyKTpFdC5mcm9tQXhpc0FuZ2xlKHBoLGksQnIpLEV0Lm11bHRpcGx5KEJyLHViLHIpfTtFdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUudz10LncsZSk6bmV3IEV0KHQueCx0LnksdC56LHQudyl9O0V0LmNvbmp1Z2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9LXQueCxlLnk9LXQueSxlLno9LXQueixlLnc9dC53LGV9O0V0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCksdC54KnQueCt0LnkqdC55K3Queip0LnordC53KnQud307RXQubWFnbml0dWRlPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoRXQubWFnbml0dWRlU3F1YXJlZCh0KSl9O0V0Lm5vcm1hbGl6ZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj0xL0V0Lm1hZ25pdHVkZSh0KSxvPXQueCpuLHI9dC55Km4saT10LnoqbixzPXQudypuO3JldHVybiBlLng9byxlLnk9cixlLno9aSxlLnc9cyxlfTtFdC5pbnZlcnNlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPUV0Lm1hZ25pdHVkZVNxdWFyZWQodCk7cmV0dXJuIGU9RXQuY29uanVnYXRlKHQsZSksRXQubXVsdGlwbHlCeVNjYWxhcihlLDEvbixlKX07RXQuYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueCtlLngsbi55PXQueStlLnksbi56PXQueitlLnosbi53PXQudytlLncsbn07RXQuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54LWUueCxuLnk9dC55LWUueSxuLno9dC56LWUueixuLnc9dC53LWUudyxufTtFdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07RXQuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnordC53KmUud307RXQubXVsdGlwbHk9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPXQueCxyPXQueSxpPXQueixzPXQudyxmPWUueCx1PWUueSxjPWUueixsPWUudyxwPXMqZitvKmwrcipjLWkqdSxkPXMqdS1vKmMrcipsK2kqZixoPXMqYytvKnUtcipmK2kqbCxfPXMqbC1vKmYtcip1LWkqYztyZXR1cm4gbi54PXAsbi55PWQsbi56PWgsbi53PV8sbn07RXQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxuLnc9dC53KmUsbn07RXQuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueC9lLG4ueT10LnkvZSxuLno9dC56L2Usbi53PXQudy9lLG59O0V0LmNvbXB1dGVBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dC53O2lmKE1hdGguYWJzKG4tMSk8UC5FUFNJTE9ONnx8TWF0aC5hYnMobisxKTxQLkVQU0lMT042KXJldHVybiBlLng9MSxlLnk9ZS56PTAsZTtsZXQgbz0xL01hdGguc3FydCgxLW4qbik7cmV0dXJuIGUueD10LngqbyxlLnk9dC55Km8sZS56PXQueipvLGV9O0V0LmNvbXB1dGVBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxNYXRoLmFicyh0LnctMSk8UC5FUFNJTE9ONj8wOjIqTWF0aC5hY29zKHQudyl9O2RoPW5ldyBFdDtFdC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksZGg9RXQubXVsdGlwbHlCeVNjYWxhcihlLG4sZGgpLG89RXQubXVsdGlwbHlCeVNjYWxhcih0LDEtbixvKSxFdC5hZGQoZGgsbyxvKX07bGI9bmV3IEV0LG1oPW5ldyBFdCxoaD1uZXcgRXQ7RXQuc2xlcnA9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkseS50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHkudHlwZU9mLm51bWJlcigidCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPUV0LmRvdCh0LGUpLGk9ZTtpZihyPDAmJihyPS1yLGk9bGI9RXQubmVnYXRlKGUsbGIpKSwxLXI8UC5FUFNJTE9ONilyZXR1cm4gRXQubGVycCh0LGksbixvKTtsZXQgcz1NYXRoLmFjb3Mocik7cmV0dXJuIG1oPUV0Lm11bHRpcGx5QnlTY2FsYXIodCxNYXRoLnNpbigoMS1uKSpzKSxtaCksaGg9RXQubXVsdGlwbHlCeVNjYWxhcihpLE1hdGguc2luKG4qcyksaGgpLG89RXQuYWRkKG1oLGhoLG8pLEV0Lm11bHRpcGx5QnlTY2FsYXIobywxL01hdGguc2luKHMpLG8pfTtFdC5sb2c9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1QLmFjb3NDbGFtcGVkKHQudyksbz0wO3JldHVybiBuIT09MCYmKG89bi9NYXRoLnNpbihuKSksYS5tdWx0aXBseUJ5U2NhbGFyKHQsbyxlKX07RXQuZXhwPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1hLm1hZ25pdHVkZSh0KSxvPTA7cmV0dXJuIG4hPT0wJiYobz1NYXRoLnNpbihuKS9uKSxlLng9dC54Km8sZS55PXQueSpvLGUuej10LnoqbyxlLnc9TWF0aC5jb3MobiksZX07cDM9bmV3IGEsZDM9bmV3IGEsQWY9bmV3IEV0LGVhPW5ldyBFdDtFdC5jb21wdXRlSW5uZXJRdWFkcmFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgicTAiLHQpLHkudHlwZU9mLm9iamVjdCgicTEiLGUpLHkudHlwZU9mLm9iamVjdCgicTIiLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKTtsZXQgcj1FdC5jb25qdWdhdGUoZSxBZik7RXQubXVsdGlwbHkocixuLGVhKTtsZXQgaT1FdC5sb2coZWEscDMpO0V0Lm11bHRpcGx5KHIsdCxlYSk7bGV0IHM9RXQubG9nKGVhLGQzKTtyZXR1cm4gYS5hZGQoaSxzLGkpLGEubXVsdGlwbHlCeVNjYWxhcihpLC4yNSxpKSxhLm5lZ2F0ZShpLGkpLEV0LmV4cChpLEFmKSxFdC5tdWx0aXBseShlLEFmLG8pfTtFdC5zcXVhZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2Yub2JqZWN0KCJxMCIsdCkseS50eXBlT2Yub2JqZWN0KCJxMSIsZSkseS50eXBlT2Yub2JqZWN0KCJzMCIsbikseS50eXBlT2Yub2JqZWN0KCJzMSIsbykseS50eXBlT2YubnVtYmVyKCJ0IixyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IHM9RXQuc2xlcnAodCxlLHIsQWYpLGY9RXQuc2xlcnAobixvLHIsZWEpO3JldHVybiBFdC5zbGVycChzLGYsMipyKigxLXIpLGkpfTttMz1uZXcgRXQscGI9MS45MDExMDc0NTM1MTczMDAzLElwPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLHZwPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLFBpPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLE1pPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdO2ZvcihsZXQgdD0wO3Q8NzsrK3Qpe2xldCBlPXQrMSxuPTIqZSsxO0lwW3RdPTEvKGUqbiksdnBbdF09ZS9ufUlwWzddPXBiLzEzNjt2cFs3XT1wYio4LzE3O0V0LmZhc3RTbGVycD1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyk7bGV0IHI9RXQuZG90KHQsZSksaTtyPj0wP2k9MTooaT0tMSxyPS1yKTtsZXQgcz1yLTEsZj0xLW4sdT1uKm4sYz1mKmY7Zm9yKGxldCBoPTc7aD49MDstLWgpUGlbaF09KElwW2hdKnUtdnBbaF0pKnMsTWlbaF09KElwW2hdKmMtdnBbaF0pKnM7bGV0IGw9aSpuKigxK1BpWzBdKigxK1BpWzFdKigxK1BpWzJdKigxK1BpWzNdKigxK1BpWzRdKigxK1BpWzVdKigxK1BpWzZdKigxK1BpWzddKSkpKSkpKSkscD1mKigxK01pWzBdKigxK01pWzFdKigxK01pWzJdKigxK01pWzNdKigxK01pWzRdKigxK01pWzVdKigxK01pWzZdKigxK01pWzddKSkpKSkpKSksZD1FdC5tdWx0aXBseUJ5U2NhbGFyKHQscCxtMyk7cmV0dXJuIEV0Lm11bHRpcGx5QnlTY2FsYXIoZSxsLG8pLEV0LmFkZChkLG8sbyl9O0V0LmZhc3RTcXVhZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2Yub2JqZWN0KCJxMCIsdCkseS50eXBlT2Yub2JqZWN0KCJxMSIsZSkseS50eXBlT2Yub2JqZWN0KCJzMCIsbikseS50eXBlT2Yub2JqZWN0KCJzMSIsbykseS50eXBlT2YubnVtYmVyKCJ0IixyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IHM9RXQuZmFzdFNsZXJwKHQsZSxyLEFmKSxmPUV0LmZhc3RTbGVycChuLG8scixlYSk7cmV0dXJuIEV0LmZhc3RTbGVycChzLGYsMipyKigxLXIpLGkpfTtFdC5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQueD09PWUueCYmdC55PT09ZS55JiZ0Lno9PT1lLnomJnQudz09PWUud307RXQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC54LWUueCk8PW4mJk1hdGguYWJzKHQueS1lLnkpPD1uJiZNYXRoLmFicyh0LnotZS56KTw9biYmTWF0aC5hYnModC53LWUudyk8PW59O0V0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgRXQoMCwwLDAsMCkpO0V0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IEV0KDAsMCwwLDEpKTtFdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEV0LmNsb25lKHRoaXMsdCl9O0V0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0LmVxdWFscyh0aGlzLHQpfTtFdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBFdC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07RXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9LCAke3RoaXMud30pYH07dGU9RXR9KTt2YXIgUmUsX2gsbmEseWgsWW8saXMsc3MsY3MsaDMsXzMseTMsZzMsQTMsYjMsdzMsZGIsVDMsTzMsRTMsUjMsUzMseDMsQzMsUDMsTTMsTjMsRnAsYmgsSTMsdjMsRjMsTHAsTDMsRDMsQjMsVTMsZ2gsQWgsazMsRzMsVjMsejMsbWIsaGIsd2gsajMsSDMsVGgsX2IsJG8sYXM9JCgoKT0+e2tlKCk7RHQoKTtfcigpO0llKCk7V3QoKTtmdCgpO0h0KCk7ekEoKTtEbSgpOyR0KCk7akEoKTskQSgpO0ptKCk7b3AoKTtLdCgpO1VuKCk7a24oKTtYbygpO1psKCk7UmU9e30sX2g9e3VwOntzb3V0aDoiZWFzdCIsbm9ydGg6Indlc3QiLHdlc3Q6InNvdXRoIixlYXN0OiJub3J0aCJ9LGRvd246e3NvdXRoOiJ3ZXN0Iixub3J0aDoiZWFzdCIsd2VzdDoibm9ydGgiLGVhc3Q6InNvdXRoIn0sc291dGg6e3VwOiJ3ZXN0Iixkb3duOiJlYXN0Iix3ZXN0OiJkb3duIixlYXN0OiJ1cCJ9LG5vcnRoOnt1cDoiZWFzdCIsZG93bjoid2VzdCIsd2VzdDoidXAiLGVhc3Q6ImRvd24ifSx3ZXN0Ont1cDoibm9ydGgiLGRvd246InNvdXRoIixub3J0aDoiZG93biIsc291dGg6InVwIn0sZWFzdDp7dXA6InNvdXRoIixkb3duOiJub3J0aCIsbm9ydGg6InVwIixzb3V0aDoiZG93biJ9fSxuYT17bm9ydGg6Wy0xLDAsMF0sZWFzdDpbMCwxLDBdLHVwOlswLDAsMV0sc291dGg6WzEsMCwwXSx3ZXN0OlswLC0xLDBdLGRvd246WzAsMCwtMV19LHloPXt9LFlvPXtlYXN0Om5ldyBhLG5vcnRoOm5ldyBhLHVwOm5ldyBhLHdlc3Q6bmV3IGEsc291dGg6bmV3IGEsZG93bjpuZXcgYX0saXM9bmV3IGEsc3M9bmV3IGEsY3M9bmV3IGE7UmUubG9jYWxGcmFtZVRvRml4ZWRGcmFtZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUpe2lmKCFfaC5oYXNPd25Qcm9wZXJ0eSh0KXx8IV9oW3RdLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBEKCJmaXJzdEF4aXMgYW5kIHNlY29uZEF4aXMgbXVzdCBiZSBlYXN0LCBub3J0aCwgdXAsIHdlc3QsIHNvdXRoIG9yIGRvd24uIik7bGV0IG49X2hbdF1bZV0sbyxyPXQrZTtyZXR1cm4gbSh5aFtyXSk/bz15aFtyXToobz1mdW5jdGlvbihpLHMsZil7aWYoIW0oaSkpdGhyb3cgbmV3IEQoIm9yaWdpbiBpcyByZXF1aXJlZC4iKTtpZihpc05hTihpLngpfHxpc05hTihpLnkpfHxpc05hTihpLnopKXRocm93IG5ldyBEKCJvcmlnaW4gaGFzIGEgTmFOIGNvbXBvbmVudCIpO2lmKG0oZil8fChmPW5ldyBzdCksYS5lcXVhbHNFcHNpbG9uKGksYS5aRVJPLFAuRVBTSUxPTjE0KSlhLnVucGFjayhuYVt0XSwwLGlzKSxhLnVucGFjayhuYVtlXSwwLHNzKSxhLnVucGFjayhuYVtuXSwwLGNzKTtlbHNlIGlmKFAuZXF1YWxzRXBzaWxvbihpLngsMCxQLkVQU0lMT04xNCkmJlAuZXF1YWxzRXBzaWxvbihpLnksMCxQLkVQU0lMT04xNCkpe2xldCB1PVAuc2lnbihpLnopO2EudW5wYWNrKG5hW3RdLDAsaXMpLHQhPT0iZWFzdCImJnQhPT0id2VzdCImJmEubXVsdGlwbHlCeVNjYWxhcihpcyx1LGlzKSxhLnVucGFjayhuYVtlXSwwLHNzKSxlIT09ImVhc3QiJiZlIT09Indlc3QiJiZhLm11bHRpcGx5QnlTY2FsYXIoc3MsdSxzcyksYS51bnBhY2sobmFbbl0sMCxjcyksbiE9PSJlYXN0IiYmbiE9PSJ3ZXN0IiYmYS5tdWx0aXBseUJ5U2NhbGFyKGNzLHUsY3MpfWVsc2V7cz1zPz9ZLmRlZmF1bHQscy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSxZby51cCk7bGV0IHU9WW8udXAsYz1Zby5lYXN0O2MueD0taS55LGMueT1pLngsYy56PTAsYS5ub3JtYWxpemUoYyxZby5lYXN0KSxhLmNyb3NzKHUsYyxZby5ub3J0aCksYS5tdWx0aXBseUJ5U2NhbGFyKFlvLnVwLC0xLFlvLmRvd24pLGEubXVsdGlwbHlCeVNjYWxhcihZby5lYXN0LC0xLFlvLndlc3QpLGEubXVsdGlwbHlCeVNjYWxhcihZby5ub3J0aCwtMSxZby5zb3V0aCksaXM9WW9bdF0sc3M9WW9bZV0sY3M9WW9bbl19cmV0dXJuIGZbMF09aXMueCxmWzFdPWlzLnksZlsyXT1pcy56LGZbM109MCxmWzRdPXNzLngsZls1XT1zcy55LGZbNl09c3MueixmWzddPTAsZls4XT1jcy54LGZbOV09Y3MueSxmWzEwXT1jcy56LGZbMTFdPTAsZlsxMl09aS54LGZbMTNdPWkueSxmWzE0XT1pLnosZlsxNV09MSxmfSx5aFtyXT1vKSxvfTtSZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZT1SZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJlYXN0Iiwibm9ydGgiKTtSZS5ub3J0aEVhc3REb3duVG9GaXhlZEZyYW1lPVJlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwiZWFzdCIpO1JlLm5vcnRoVXBFYXN0VG9GaXhlZEZyYW1lPVJlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwidXAiKTtSZS5ub3J0aFdlc3RVcFRvRml4ZWRGcmFtZT1SZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtoMz1uZXcgdGUsXzM9bmV3IGEoMSwxLDEpLHkzPW5ldyBzdDtSZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lPWZ1bmN0aW9uKHQsZSxuLG8scil7eS50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKSxvPW8/P1JlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lO2xldCBpPXRlLmZyb21IZWFkaW5nUGl0Y2hSb2xsKGUsaDMpLHM9c3QuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGUoYS5aRVJPLGksXzMseTMpO3JldHVybiByPW8odCxuLHIpLHN0Lm11bHRpcGx5KHIscyxyKX07ZzM9bmV3IHN0LEEzPW5ldyBaO1JlLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSxuLG8scil7eS50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKTtsZXQgaT1SZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKHQsZSxuLG8sZzMpLHM9c3QuZ2V0TWF0cml4MyhpLEEzKTtyZXR1cm4gdGUuZnJvbVJvdGF0aW9uTWF0cml4KHMscil9O2IzPW5ldyBhKDEsMSwxKSx3Mz1uZXcgYSxkYj1uZXcgc3QsVDM9bmV3IHN0LE8zPW5ldyBaLEUzPW5ldyB0ZTtSZS5maXhlZEZyYW1lVG9IZWFkaW5nUGl0Y2hSb2xsPWZ1bmN0aW9uKHQsZSxuLG8pe3kuZGVmaW5lZCgidHJhbnNmb3JtIix0KSxlPWU/P1kuZGVmYXVsdCxuPW4/P1JlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lLG0obyl8fChvPW5ldyB5cCk7bGV0IHI9c3QuZ2V0VHJhbnNsYXRpb24odCx3Myk7aWYoYS5lcXVhbHMocixhLlpFUk8pKXJldHVybiBvLmhlYWRpbmc9MCxvLnBpdGNoPTAsby5yb2xsPTAsbztsZXQgaT1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24obihyLGUsZGIpLGRiKSxzPXN0LnNldFNjYWxlKHQsYjMsVDMpO3M9c3Quc2V0VHJhbnNsYXRpb24ocyxhLlpFUk8scyksaT1zdC5tdWx0aXBseShpLHMsaSk7bGV0IGY9dGUuZnJvbVJvdGF0aW9uTWF0cml4KHN0LmdldE1hdHJpeDMoaSxPMyksRTMpO3JldHVybiBmPXRlLm5vcm1hbGl6ZShmLGYpLHlwLmZyb21RdWF0ZXJuaW9uKGYsbyl9O1IzPTYqMzYwMCsyNDYwKzUwLjU0ODQxLFMzPTg2NDAxODQ4MTI4NjZlLTYseDM9LjA5MzEwNCxDMz0tNjJlLTcsUDM9MTE3NzI3NTgzODQ2NjhlLTMyLE0zPTcyOTIxMTU4NTUzZS0xNSxOMz1QLlRXT19QSS84NjQwMCxGcD1uZXcgVm47UmUuY29tcHV0ZUljcmZUb0NlbnRyYWxCb2R5Rml4ZWRNYXRyaXg9ZnVuY3Rpb24odCxlKXtsZXQgbj1SZS5jb21wdXRlSWNyZlRvRml4ZWRNYXRyaXgodCxlKTtyZXR1cm4gbShuKXx8KG49UmUuY29tcHV0ZVRlbWVUb1BzZXVkb0ZpeGVkTWF0cml4KHQsZSkpLG59O1JlLmNvbXB1dGVUZW1lVG9Qc2V1ZG9GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO0ZwPVZuLmFkZFNlY29uZHModCwtVm4uY29tcHV0ZVRhaU1pbnVzVXRjKHQpLEZwKTtsZXQgbj1GcC5kYXlOdW1iZXIsbz1GcC5zZWNvbmRzT2ZEYXkscixpPW4tMjQ1MTU0NTtvPj00MzIwMD9yPShpKy41KS95bi5EQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTpyPShpLS41KS95bi5EQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTtsZXQgZj0oUjMrciooUzMrciooeDMrcipDMykpKSpOMyVQLlRXT19QSSx1PU0zK1AzKihuLTI0NTE1NDU1ZS0xKSxjPShvK3luLlNFQ09ORFNfUEVSX0RBWSouNSkleW4uU0VDT05EU19QRVJfREFZLGw9Zit1KmMscD1NYXRoLmNvcyhsKSxkPU1hdGguc2luKGwpO3JldHVybiBtKGUpPyhlWzBdPXAsZVsxXT0tZCxlWzJdPTAsZVszXT1kLGVbNF09cCxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPTEsZSk6bmV3IFoocCxkLDAsLWQscCwwLDAsMCwxKX07UmUuaWF1MjAwNlh5c0RhdGE9bmV3IFlBO1JlLmVhcnRoT3JpZW50YXRpb25QYXJhbWV0ZXJzPVZBLk5PTkU7Ymg9MzIuMTg0LEkzPTI0NTE1NDU7UmUucHJlbG9hZEljcmZGaXhlZD1mdW5jdGlvbih0KXtsZXQgZT10LnN0YXJ0LmRheU51bWJlcixuPXQuc3RhcnQuc2Vjb25kc09mRGF5K2JoLG89dC5zdG9wLmRheU51bWJlcixyPXQuc3RvcC5zZWNvbmRzT2ZEYXkrYmg7cmV0dXJuIFJlLmlhdTIwMDZYeXNEYXRhLnByZWxvYWQoZSxuLG8scil9O1JlLmNvbXB1dGVJY3JmVG9GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgodCxlKTtpZihtKG4pKXJldHVybiBaLnRyYW5zcG9zZShuLGUpfTt2Mz0zMi4xODQsRjM9MjQ1MTU0NSxMcD1uZXcgeXAsTDM9bmV3IFosRDM9bmV3IFZuO1JlLmNvbXB1dGVNb29uRml4ZWRUb0ljcmZNYXRyaXg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZGF0ZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgWik7bGV0IG49Vm4uYWRkU2Vjb25kcyh0LHYzLEQzKSxvPVZuLnRvdGFsRGF5cyhuKS1GMyxyPVAudG9SYWRpYW5zKDEyLjExMiktUC50b1JhZGlhbnMoLjA1Mjk5MikqbyxpPVAudG9SYWRpYW5zKDI0LjIyNCktUC50b1JhZGlhbnMoLjEwNTk4NCkqbyxzPVAudG9SYWRpYW5zKDIyNy42NDUpK1AudG9SYWRpYW5zKDEzLjAxMikqbyxmPVAudG9SYWRpYW5zKDI2MS4xMDUpK1AudG9SYWRpYW5zKDEzLjM0MDcxNikqbyx1PVAudG9SYWRpYW5zKDM1OCkrUC50b1JhZGlhbnMoLjk4NTYpKm87cmV0dXJuIExwLnBpdGNoPVAudG9SYWRpYW5zKDE4MCktUC50b1JhZGlhbnMoMy44NzgpKk1hdGguc2luKHIpLVAudG9SYWRpYW5zKC4xMikqTWF0aC5zaW4oaSkrUC50b1JhZGlhbnMoLjA3KSpNYXRoLnNpbihzKS1QLnRvUmFkaWFucyguMDE3KSpNYXRoLnNpbihmKSxMcC5yb2xsPVAudG9SYWRpYW5zKDY2LjUzLTkwKStQLnRvUmFkaWFucygxLjU0MykqTWF0aC5jb3MocikrUC50b1JhZGlhbnMoLjI0KSpNYXRoLmNvcyhpKS1QLnRvUmFkaWFucyguMDI4KSpNYXRoLmNvcyhzKStQLnRvUmFkaWFucyguMDA3KSpNYXRoLmNvcyhmKSxMcC5oZWFkaW5nPVAudG9SYWRpYW5zKDI0NC4zNzUtOTApK1AudG9SYWRpYW5zKDEzLjE3NjM1ODMxKSpvK1AudG9SYWRpYW5zKDMuNTU4KSpNYXRoLnNpbihyKStQLnRvUmFkaWFucyguMTIxKSpNYXRoLnNpbihpKS1QLnRvUmFkaWFucyguMDY0KSpNYXRoLnNpbihzKStQLnRvUmFkaWFucyguMDE2KSpNYXRoLnNpbihmKStQLnRvUmFkaWFucyguMDI1KSpNYXRoLnNpbih1KSxaLmZyb21IZWFkaW5nUGl0Y2hSb2xsKExwLEwzKX07UmUuY29tcHV0ZUljcmZUb01vb25GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5jb21wdXRlTW9vbkZpeGVkVG9JY3JmTWF0cml4KHQsZSk7aWYobShuKSlyZXR1cm4gWi50cmFuc3Bvc2UobixlKX07QjM9bmV3IHdwKDAsMCwwKSxVMz1uZXcgYWYoMCwwLDAsMCwwLDApLGdoPW5ldyBaLEFoPW5ldyBaO1JlLmNvbXB1dGVGaXhlZFRvSWNyZk1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5lYXJ0aE9yaWVudGF0aW9uUGFyYW1ldGVycy5jb21wdXRlKHQsVTMpO2lmKCFtKG4pKXJldHVybjtsZXQgbz10LmRheU51bWJlcixyPXQuc2Vjb25kc09mRGF5K2JoLGk9UmUuaWF1MjAwNlh5c0RhdGEuY29tcHV0ZVh5c1JhZGlhbnMobyxyLEIzKTtpZighbShpKSlyZXR1cm47bGV0IHM9aS54K24ueFBvbGVPZmZzZXQsZj1pLnkrbi55UG9sZU9mZnNldCx1PTEvKDErTWF0aC5zcXJ0KDEtcypzLWYqZikpLGM9Z2g7Y1swXT0xLXUqcypzLGNbM109LXUqcypmLGNbNl09cyxjWzFdPS11KnMqZixjWzRdPTEtdSpmKmYsY1s3XT1mLGNbMl09LXMsY1s1XT0tZixjWzhdPTEtdSoocypzK2YqZik7bGV0IGw9Wi5mcm9tUm90YXRpb25aKC1pLnMsQWgpLHA9Wi5tdWx0aXBseShjLGwsZ2gpLGQ9dC5kYXlOdW1iZXIsaD10LnNlY29uZHNPZkRheS1Wbi5jb21wdXRlVGFpTWludXNVdGModCkrbi51dDFNaW51c1V0YyxfPWQtMjQ1MTU0NSxnPWgveW4uU0VDT05EU19QRVJfREFZLGI9Ljc3OTA1NzI3MzI2NCtnKy4wMDI3Mzc4MTE5MTEzNTQ0OCooXytnKTtiPWIlMSpQLlRXT19QSTtsZXQgdz1aLmZyb21Sb3RhdGlvblooYixBaCksTz1aLm11bHRpcGx5KHAsdyxnaCksRT1NYXRoLmNvcyhuLnhQb2xlV2FuZGVyKSxUPU1hdGguY29zKG4ueVBvbGVXYW5kZXIpLHg9TWF0aC5zaW4obi54UG9sZVdhbmRlciksTT1NYXRoLnNpbihuLnlQb2xlV2FuZGVyKSxOPW8tSTMrci95bi5TRUNPTkRTX1BFUl9EQVk7Ti89MzY1MjU7bGV0IEY9LTQ3ZS02Kk4qUC5SQURJQU5TX1BFUl9ERUdSRUUvMzYwMCxJPU1hdGguY29zKEYpLHY9TWF0aC5zaW4oRiksQj1BaDtyZXR1cm4gQlswXT1FKkksQlsxXT1FKnYsQlsyXT14LEJbM109LVQqditNKngqSSxCWzRdPVQqSStNKngqdixCWzVdPS1NKkUsQls2XT0tTSp2LVQqeCpJLEJbN109TSpJLVQqeCp2LEJbOF09VCpFLFoubXVsdGlwbHkoTyxCLGUpfTtrMz1uZXcgbWU7UmUucG9pbnRUb1dpbmRvd0Nvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiBvPVJlLnBvaW50VG9HTFdpbmRvd0Nvb3JkaW5hdGVzKHQsZSxuLG8pLG8ueT0yKmVbNV0tby55LG99O1JlLnBvaW50VG9HTFdpbmRvd0Nvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJ2aWV3cG9ydFRyYW5zZm9ybWF0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJwb2ludCBpcyByZXF1aXJlZC4iKTttKG8pfHwobz1uZXcgSik7bGV0IHI9azM7cmV0dXJuIHN0Lm11bHRpcGx5QnlWZWN0b3IodCxtZS5mcm9tRWxlbWVudHMobi54LG4ueSxuLnosMSxyKSxyKSxtZS5tdWx0aXBseUJ5U2NhbGFyKHIsMS9yLncsciksc3QubXVsdGlwbHlCeVZlY3RvcihlLHIsciksSi5mcm9tQ2FydGVzaWFuNChyLG8pfTtHMz1uZXcgYSxWMz1uZXcgYSx6Mz1uZXcgYTtSZS5yb3RhdGlvbk1hdHJpeEZyb21Qb3NpdGlvblZlbG9jaXR5PWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgidmVsb2NpdHkgaXMgcmVxdWlyZWQuIik7bGV0IHI9KG4/P1kuZGVmYXVsdCkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsRzMpLGk9YS5jcm9zcyhlLHIsVjMpO2EuZXF1YWxzRXBzaWxvbihpLGEuWkVSTyxQLkVQU0lMT042KSYmKGk9YS5jbG9uZShhLlVOSVRfWCxpKSk7bGV0IHM9YS5jcm9zcyhpLGUsejMpO3JldHVybiBhLm5vcm1hbGl6ZShzLHMpLGEuY3Jvc3MoZSxzLGkpLGEubmVnYXRlKGksaSksYS5ub3JtYWxpemUoaSxpKSxtKG8pfHwobz1uZXcgWiksb1swXT1lLngsb1sxXT1lLnksb1syXT1lLnosb1szXT1pLngsb1s0XT1pLnksb1s1XT1pLnosb1s2XT1zLngsb1s3XT1zLnksb1s4XT1zLnosb307bWI9bmV3IHN0KDAsMCwxLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDEpLGhiPW5ldyBjdCx3aD1uZXcgYSxqMz1uZXcgYSxIMz1uZXcgWixUaD1uZXcgc3QsX2I9bmV3IHN0O1JlLmJhc2lzVG8yRD1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInByb2plY3Rpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm1hdHJpeCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicmVzdWx0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXN0LmdldFRyYW5zbGF0aW9uKGUsajMpLHI9dC5lbGxpcHNvaWQsaTtpZihhLmVxdWFscyhvLGEuWkVSTykpaT1hLmNsb25lKGEuWkVSTyx3aCk7ZWxzZXtsZXQgbD1yLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG8saGIpO2k9dC5wcm9qZWN0KGwsd2gpLGEuZnJvbUVsZW1lbnRzKGkueixpLngsaS55LGkpfWxldCBzPVJlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG8scixUaCksZj1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24ocyxfYiksdT1zdC5nZXRNYXRyaXgzKGUsSDMpLGM9c3QubXVsdGlwbHlCeU1hdHJpeDMoZix1LG4pO3JldHVybiBzdC5tdWx0aXBseShtYixjLG4pLHN0LnNldFRyYW5zbGF0aW9uKG4saSxuKSxufTtSZS5lbGxpcHNvaWRUbzJETW9kZWxNYXRyaXg9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwcm9qZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJjZW50ZXIgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LmVsbGlwc29pZCxyPVJlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKGUsbyxUaCksaT1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24ocixfYikscz1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsaGIpLGY9dC5wcm9qZWN0KHMsd2gpO2EuZnJvbUVsZW1lbnRzKGYueixmLngsZi55LGYpO2xldCB1PXN0LmZyb21UcmFuc2xhdGlvbihmLFRoKTtyZXR1cm4gc3QubXVsdGlwbHkobWIsaSxuKSxzdC5tdWx0aXBseSh1LG4sbiksbn07JG89UmV9KTtmdW5jdGlvbiBjZSh0LGUsbixvKXt0aGlzLndlc3Q9dD8/MCx0aGlzLnNvdXRoPWU/PzAsdGhpcy5lYXN0PW4/PzAsdGhpcy5ub3J0aD1vPz8wfXZhciBxMyxLMyxXMyxYMyxZMyxPaCwkMyxOdCxUbj0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTskdCgpO0t0KCk7YXMoKTtrbigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNlLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjZS5jb21wdXRlV2lkdGgodGhpcyl9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjZS5jb21wdXRlSGVpZ2h0KHRoaXMpfX19KTtjZS5wYWNrZWRMZW5ndGg9NDtjZS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10Lndlc3QsZVtuKytdPXQuc291dGgsZVtuKytdPXQuZWFzdCxlW25dPXQubm9ydGgsZX07Y2UudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBjZSksbi53ZXN0PXRbZSsrXSxuLnNvdXRoPXRbZSsrXSxuLmVhc3Q9dFtlKytdLG4ubm9ydGg9dFtlXSxufTtjZS5jb21wdXRlV2lkdGg9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQuZWFzdCxuPXQud2VzdDtyZXR1cm4gZTxuJiYoZSs9UC5UV09fUEkpLGUtbn07Y2UuY29tcHV0ZUhlaWdodD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHQubm9ydGgtdC5zb3V0aH07Y2UuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gdD1QLnRvUmFkaWFucyh0Pz8wKSxlPVAudG9SYWRpYW5zKGU/PzApLG49UC50b1JhZGlhbnMobj8/MCksbz1QLnRvUmFkaWFucyhvPz8wKSxtKHIpPyhyLndlc3Q9dCxyLnNvdXRoPWUsci5lYXN0PW4sci5ub3J0aD1vLHIpOm5ldyBjZSh0LGUsbixvKX07Y2UuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gbShyKT8oci53ZXN0PXQ/PzAsci5zb3V0aD1lPz8wLHIuZWFzdD1uPz8wLHIubm9ydGg9bz8/MCxyKTpuZXcgY2UodCxlLG4sbyl9O2NlLmZyb21DYXJ0b2dyYXBoaWNBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydG9ncmFwaGljcyIsdCk7bGV0IG49TnVtYmVyLk1BWF9WQUxVRSxvPS1OdW1iZXIuTUFYX1ZBTFVFLHI9TnVtYmVyLk1BWF9WQUxVRSxpPS1OdW1iZXIuTUFYX1ZBTFVFLHM9TnVtYmVyLk1BWF9WQUxVRSxmPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgdT0wLGM9dC5sZW5ndGg7dTxjO3UrKyl7bGV0IGw9dFt1XTtuPU1hdGgubWluKG4sbC5sb25naXR1ZGUpLG89TWF0aC5tYXgobyxsLmxvbmdpdHVkZSkscz1NYXRoLm1pbihzLGwubGF0aXR1ZGUpLGY9TWF0aC5tYXgoZixsLmxhdGl0dWRlKTtsZXQgcD1sLmxvbmdpdHVkZT49MD9sLmxvbmdpdHVkZTpsLmxvbmdpdHVkZStQLlRXT19QSTtyPU1hdGgubWluKHIscCksaT1NYXRoLm1heChpLHApfXJldHVybiBvLW4+aS1yJiYobj1yLG89aSxvPlAuUEkmJihvPW8tUC5UV09fUEkpLG4+UC5QSSYmKG49bi1QLlRXT19QSSkpLG0oZSk/KGUud2VzdD1uLGUuc291dGg9cyxlLmVhc3Q9byxlLm5vcnRoPWYsZSk6bmV3IGNlKG4scyxvLGYpfTtjZS5mcm9tQ2FydGVzaWFuQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCksZT1lPz9ZLmRlZmF1bHQ7bGV0IG89TnVtYmVyLk1BWF9WQUxVRSxyPS1OdW1iZXIuTUFYX1ZBTFVFLGk9TnVtYmVyLk1BWF9WQUxVRSxzPS1OdW1iZXIuTUFYX1ZBTFVFLGY9TnVtYmVyLk1BWF9WQUxVRSx1PS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgYz0wLGw9dC5sZW5ndGg7YzxsO2MrKyl7bGV0IHA9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0W2NdKTtvPU1hdGgubWluKG8scC5sb25naXR1ZGUpLHI9TWF0aC5tYXgocixwLmxvbmdpdHVkZSksZj1NYXRoLm1pbihmLHAubGF0aXR1ZGUpLHU9TWF0aC5tYXgodSxwLmxhdGl0dWRlKTtsZXQgZD1wLmxvbmdpdHVkZT49MD9wLmxvbmdpdHVkZTpwLmxvbmdpdHVkZStQLlRXT19QSTtpPU1hdGgubWluKGksZCkscz1NYXRoLm1heChzLGQpfXJldHVybiByLW8+cy1pJiYobz1pLHI9cyxyPlAuUEkmJihyPXItUC5UV09fUEkpLG8+UC5QSSYmKG89by1QLlRXT19QSSkpLG0obik/KG4ud2VzdD1vLG4uc291dGg9ZixuLmVhc3Q9cixuLm5vcnRoPXUsbik6bmV3IGNlKG8sZixyLHUpfTtxMz1uZXcgYSxLMz1uZXcgYSxXMz1uZXcgYSxYMz1uZXcgYSxZMz1uZXcgYSxPaD1uZXcgQXJyYXkoNSk7Zm9yKGxldCB0PTA7dDxPaC5sZW5ndGg7Kyt0KU9oW3RdPW5ldyBhO2NlLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1NwaGVyZSIsdCk7bGV0IG89dC5jZW50ZXIscj10LnJhZGl1cztpZihtKGUpfHwoZT1ZLmRlZmF1bHQpLG0obil8fChuPW5ldyBjZSksYS5lcXVhbHMobyxhLlpFUk8pKXJldHVybiBjZS5jbG9uZShjZS5NQVhfVkFMVUUsbiksbjtsZXQgaT0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShvLGUscTMpLHM9c3QubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IoaSxhLlVOSVRfWCxLMyk7YS5ub3JtYWxpemUocyxzKTtsZXQgZj1zdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihpLGEuVU5JVF9ZLFczKTthLm5vcm1hbGl6ZShmLGYpLGEubXVsdGlwbHlCeVNjYWxhcihmLHIsZiksYS5tdWx0aXBseUJ5U2NhbGFyKHMscixzKTtsZXQgdT1hLm5lZ2F0ZShmLFkzKSxjPWEubmVnYXRlKHMsWDMpLGw9T2gscD1sWzBdO3JldHVybiBhLmFkZChvLGYscCkscD1sWzFdLGEuYWRkKG8sYyxwKSxwPWxbMl0sYS5hZGQobyx1LHApLHA9bFszXSxhLmFkZChvLHMscCksbFs0XT1vLGNlLmZyb21DYXJ0ZXNpYW5BcnJheShsLGUsbil9O2NlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS53ZXN0PXQud2VzdCxlLnNvdXRoPXQuc291dGgsZS5lYXN0PXQuZWFzdCxlLm5vcnRoPXQubm9ydGgsZSk6bmV3IGNlKHQud2VzdCx0LnNvdXRoLHQuZWFzdCx0Lm5vcnRoKX07Y2UuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC53ZXN0LWUud2VzdCk8PW4mJk1hdGguYWJzKHQuc291dGgtZS5zb3V0aCk8PW4mJk1hdGguYWJzKHQuZWFzdC1lLmVhc3QpPD1uJiZNYXRoLmFicyh0Lm5vcnRoLWUubm9ydGgpPD1ufTtjZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmNsb25lKHRoaXMsdCl9O2NlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmVxdWFscyh0aGlzLHQpfTtjZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQud2VzdD09PWUud2VzdCYmdC5zb3V0aD09PWUuc291dGgmJnQuZWFzdD09PWUuZWFzdCYmdC5ub3J0aD09PWUubm9ydGh9O2NlLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNlLmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTtjZS5fdmFsaWRhdGU9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQubm9ydGg7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoIixlLC1QLlBJX09WRVJfVFdPKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGgiLGUsUC5QSV9PVkVSX1RXTyk7bGV0IG49dC5zb3V0aDt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic291dGgiLG4sLVAuUElfT1ZFUl9UV08pLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJzb3V0aCIsbixQLlBJX09WRVJfVFdPKTtsZXQgbz10Lndlc3Q7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIndlc3QiLG8sLU1hdGguUEkpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0IixvLE1hdGguUEkpO2xldCByPXQuZWFzdDt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZWFzdCIsciwtTWF0aC5QSSkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImVhc3QiLHIsTWF0aC5QSSl9O2NlLnNvdXRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0Lndlc3QsdC5zb3V0aCl9O2NlLm5vcnRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0Lndlc3QsdC5ub3J0aCl9O2NlLm5vcnRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0LmVhc3QsdC5ub3J0aCl9O2NlLnNvdXRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0LmVhc3QsdC5zb3V0aCl9O2NlLmNlbnRlcj1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgbj10LmVhc3Qsbz10Lndlc3Q7bjxvJiYobis9UC5UV09fUEkpO2xldCByPVAubmVnYXRpdmVQaVRvUGkoKG8rbikqLjUpLGk9KHQuc291dGgrdC5ub3J0aCkqLjU7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXIsZS5sYXRpdHVkZT1pLGUuaGVpZ2h0PTAsZSk6bmV3IGN0KHIsaSl9O2NlLmludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgib3RoZXJSZWN0YW5nbGUiLGUpO2xldCBvPXQuZWFzdCxyPXQud2VzdCxpPWUuZWFzdCxzPWUud2VzdDtvPHImJmk+MD9vKz1QLlRXT19QSTppPHMmJm8+MCYmKGkrPVAuVFdPX1BJKSxvPHImJnM8MD9zKz1QLlRXT19QSTppPHMmJnI8MCYmKHIrPVAuVFdPX1BJKTtsZXQgZj1QLm5lZ2F0aXZlUGlUb1BpKE1hdGgubWF4KHIscykpLHU9UC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihvLGkpKTtpZigodC53ZXN0PHQuZWFzdHx8ZS53ZXN0PGUuZWFzdCkmJnU8PWYpcmV0dXJuO2xldCBjPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksbD1NYXRoLm1pbih0Lm5vcnRoLGUubm9ydGgpO2lmKCEoYz49bCkpcmV0dXJuIG0obik/KG4ud2VzdD1mLG4uc291dGg9YyxuLmVhc3Q9dSxuLm5vcnRoPWwsbik6bmV3IGNlKGYsYyx1LGwpfTtjZS5zaW1wbGVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSx5LnR5cGVPZi5vYmplY3QoIm90aGVyUmVjdGFuZ2xlIixlKTtsZXQgbz1NYXRoLm1heCh0Lndlc3QsZS53ZXN0KSxyPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksaT1NYXRoLm1pbih0LmVhc3QsZS5lYXN0KSxzPU1hdGgubWluKHQubm9ydGgsZS5ub3J0aCk7aWYoIShyPj1zfHxvPj1pKSlyZXR1cm4gbShuKT8obi53ZXN0PW8sbi5zb3V0aD1yLG4uZWFzdD1pLG4ubm9ydGg9cyxuKTpuZXcgY2UobyxyLGkscyl9O2NlLnVuaW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkseS50eXBlT2Yub2JqZWN0KCJvdGhlclJlY3RhbmdsZSIsZSksbShuKXx8KG49bmV3IGNlKTtsZXQgbz10LmVhc3Qscj10Lndlc3QsaT1lLmVhc3Qscz1lLndlc3Q7bzxyJiZpPjA/bys9UC5UV09fUEk6aTxzJiZvPjAmJihpKz1QLlRXT19QSSksbzxyJiZzPDA/cys9UC5UV09fUEk6aTxzJiZyPDAmJihyKz1QLlRXT19QSSk7bGV0IGY9UC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihyLHMpKSx1PVAubmVnYXRpdmVQaVRvUGkoTWF0aC5tYXgobyxpKSk7cmV0dXJuIG4ud2VzdD1mLG4uc291dGg9TWF0aC5taW4odC5zb3V0aCxlLnNvdXRoKSxuLmVhc3Q9dSxuLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5ub3J0aCksbn07Y2UuZXhwYW5kPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIixlKSxtKG4pfHwobj1uZXcgY2UpLG4ud2VzdD1NYXRoLm1pbih0Lndlc3QsZS5sb25naXR1ZGUpLG4uc291dGg9TWF0aC5taW4odC5zb3V0aCxlLmxhdGl0dWRlKSxuLmVhc3Q9TWF0aC5tYXgodC5lYXN0LGUubG9uZ2l0dWRlKSxuLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5sYXRpdHVkZSksbn07Y2UuY29udGFpbnM9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkseS50eXBlT2Yub2JqZWN0KCJjYXJ0b2dyYXBoaWMiLGUpO2xldCBuPWUubG9uZ2l0dWRlLG89ZS5sYXRpdHVkZSxyPXQud2VzdCxpPXQuZWFzdDtyZXR1cm4gaTxyJiYoaSs9UC5UV09fUEksbjwwJiYobis9UC5UV09fUEkpKSwobj5yfHxQLmVxdWFsc0Vwc2lsb24obixyLFAuRVBTSUxPTjE0KSkmJihuPGl8fFAuZXF1YWxzRXBzaWxvbihuLGksUC5FUFNJTE9OMTQpKSYmbz49dC5zb3V0aCYmbzw9dC5ub3J0aH07JDM9bmV3IGN0O2NlLnN1YnNhbXBsZT1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksZT1lPz9ZLmRlZmF1bHQsbj1uPz8wLG0obyl8fChvPVtdKTtsZXQgcj0wLGk9dC5ub3J0aCxzPXQuc291dGgsZj10LmVhc3QsdT10Lndlc3QsYz0kMztjLmhlaWdodD1uLGMubG9uZ2l0dWRlPXUsYy5sYXRpdHVkZT1pLG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyxjLmxvbmdpdHVkZT1mLG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyxjLmxhdGl0dWRlPXMsb1tyXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGMsb1tyXSkscisrLGMubG9uZ2l0dWRlPXUsb1tyXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGMsb1tyXSkscisrLGk8MD9jLmxhdGl0dWRlPWk6cz4wP2MubGF0aXR1ZGU9czpjLmxhdGl0dWRlPTA7Zm9yKGxldCBsPTE7bDw4OysrbCljLmxvbmdpdHVkZT0tTWF0aC5QSStsKlAuUElfT1ZFUl9UV08sY2UuY29udGFpbnModCxjKSYmKG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyk7cmV0dXJuIGMubGF0aXR1ZGU9PT0wJiYoYy5sb25naXR1ZGU9dSxvW3JdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYyxvW3JdKSxyKyssYy5sb25naXR1ZGU9ZixvW3JdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYyxvW3JdKSxyKyspLG8ubGVuZ3RoPXIsb307Y2Uuc3Vic2VjdGlvbj1mdW5jdGlvbih0LGUsbixvLHIsaSl7aWYoeS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygid2VzdExlcnAiLGUsMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInNvdXRoTGVycCIsbiwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixuLDEpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJlYXN0TGVycCIsbywwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiZWFzdExlcnAiLG8sMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoTGVycCIsciwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGhMZXJwIixyLDEpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSxvKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixuLHIpLG0oaSl8fChpPW5ldyBjZSksdC53ZXN0PD10LmVhc3Qpe2xldCBmPXQuZWFzdC10Lndlc3Q7aS53ZXN0PXQud2VzdCtlKmYsaS5lYXN0PXQud2VzdCtvKmZ9ZWxzZXtsZXQgZj1QLlRXT19QSSt0LmVhc3QtdC53ZXN0O2kud2VzdD1QLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtlKmYpLGkuZWFzdD1QLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtvKmYpfWxldCBzPXQubm9ydGgtdC5zb3V0aDtyZXR1cm4gaS5zb3V0aD10LnNvdXRoK24qcyxpLm5vcnRoPXQuc291dGgrcipzLGU9PT0xJiYoaS53ZXN0PXQuZWFzdCksbz09PTEmJihpLmVhc3Q9dC5lYXN0KSxuPT09MSYmKGkuc291dGg9dC5ub3J0aCkscj09PTEmJihpLm5vcnRoPXQubm9ydGgpLGl9O2NlLk1BWF9WQUxVRT1PYmplY3QuZnJlZXplKG5ldyBjZSgtTWF0aC5QSSwtUC5QSV9PVkVSX1RXTyxNYXRoLlBJLFAuUElfT1ZFUl9UV08pKTtOdD1jZX0pO2Z1bmN0aW9uIGVlKHQsZSl7dGhpcy5jZW50ZXI9YS5jbG9uZSh0Pz9hLlpFUk8pLHRoaXMucmFkaXVzPWU/PzB9dmFyIFNoLHhoLENoLFBoLE1oLE5oLEloLGFvLHZoLEZoLExoLERoLFozLHliLFEzLEozLEVoLFJoLHRQLGVQLG5QLG9QLHJQLGlQLHNQLGNQLGFQLGZQLHVQLGxQLGdiLHBQLGRQLG1QLGhQLF9QLGJiLEFiLEF0LHZlPSQoKCk9PntEdCgpO0llKCk7V3QoKTtmdCgpOyR0KCk7eGkoKTtWcygpO1dsKCk7S3QoKTtVbigpO2tuKCk7VG4oKTtTaD1uZXcgYSx4aD1uZXcgYSxDaD1uZXcgYSxQaD1uZXcgYSxNaD1uZXcgYSxOaD1uZXcgYSxJaD1uZXcgYSxhbz1uZXcgYSx2aD1uZXcgYSxGaD1uZXcgYSxMaD1uZXcgYSxEaD1uZXcgYSxaMz00LzMqUC5QSTtlZS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IGVlKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmNlbnRlcj1hLmNsb25lKGEuWkVSTyxlLmNlbnRlciksZS5yYWRpdXM9MCxlO2xldCBuPWEuY2xvbmUodFswXSxJaCksbz1hLmNsb25lKG4sU2gpLHI9YS5jbG9uZShuLHhoKSxpPWEuY2xvbmUobixDaCkscz1hLmNsb25lKG4sUGgpLGY9YS5jbG9uZShuLE1oKSx1PWEuY2xvbmUobixOaCksYz10Lmxlbmd0aCxsO2ZvcihsPTE7bDxjO2wrKyl7YS5jbG9uZSh0W2xdLG4pO2xldCBGPW4ueCxJPW4ueSx2PW4uejtGPG8ueCYmYS5jbG9uZShuLG8pLEY+cy54JiZhLmNsb25lKG4scyksSTxyLnkmJmEuY2xvbmUobixyKSxJPmYueSYmYS5jbG9uZShuLGYpLHY8aS56JiZhLmNsb25lKG4saSksdj51LnomJmEuY2xvbmUobix1KX1sZXQgcD1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChzLG8sYW8pKSxkPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGYscixhbykpLGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1vLGc9cyxiPXA7ZD5iJiYoYj1kLF89cixnPWYpLGg+YiYmKGI9aCxfPWksZz11KTtsZXQgdz12aDt3Lng9KF8ueCtnLngpKi41LHcueT0oXy55K2cueSkqLjUsdy56PShfLnorZy56KSouNTtsZXQgTz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChnLHcsYW8pKSxFPU1hdGguc3FydChPKSxUPUZoO1QueD1vLngsVC55PXIueSxULno9aS56O2xldCB4PUxoO3gueD1zLngseC55PWYueSx4Lno9dS56O2xldCBNPWEubWlkcG9pbnQoVCx4LERoKSxOPTA7Zm9yKGw9MDtsPGM7bCsrKXthLmNsb25lKHRbbF0sbik7bGV0IEY9YS5tYWduaXR1ZGUoYS5zdWJ0cmFjdChuLE0sYW8pKTtGPk4mJihOPUYpO2xldCBJPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KG4sdyxhbykpO2lmKEk+Tyl7bGV0IHY9TWF0aC5zcXJ0KEkpO0U9KEUrdikqLjUsTz1FKkU7bGV0IEI9di1FO3cueD0oRSp3LngrQipuLngpL3Ysdy55PShFKncueStCKm4ueSkvdix3Lno9KEUqdy56K0Iqbi56KS92fX1yZXR1cm4gRTxOPyhhLmNsb25lKHcsZS5jZW50ZXIpLGUucmFkaXVzPUUpOihhLmNsb25lKE0sZS5jZW50ZXIpLGUucmFkaXVzPU4pLGV9O3liPW5ldyBlbyxRMz1uZXcgYSxKMz1uZXcgYSxFaD1uZXcgY3QsUmg9bmV3IGN0O2VlLmZyb21SZWN0YW5nbGUyRD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGVlLmZyb21SZWN0YW5nbGVXaXRoSGVpZ2h0czJEKHQsZSwwLDAsbil9O2VlLmZyb21SZWN0YW5nbGVXaXRoSGVpZ2h0czJEPWZ1bmN0aW9uKHQsZSxuLG8scil7aWYobShyKXx8KHI9bmV3IGVlKSwhbSh0KSlyZXR1cm4gci5jZW50ZXI9YS5jbG9uZShhLlpFUk8sci5jZW50ZXIpLHIucmFkaXVzPTAscjt5Yi5fZWxsaXBzb2lkPVkuZGVmYXVsdCxlPWU/P3liLE50LnNvdXRod2VzdCh0LEVoKSxFaC5oZWlnaHQ9bixOdC5ub3J0aGVhc3QodCxSaCksUmguaGVpZ2h0PW87bGV0IGk9ZS5wcm9qZWN0KEVoLFEzKSxzPWUucHJvamVjdChSaCxKMyksZj1zLngtaS54LHU9cy55LWkueSxjPXMuei1pLno7ci5yYWRpdXM9TWF0aC5zcXJ0KGYqZit1KnUrYypjKSouNTtsZXQgbD1yLmNlbnRlcjtyZXR1cm4gbC54PWkueCtmKi41LGwueT1pLnkrdSouNSxsLno9aS56K2MqLjUscn07dFA9W107ZWUuZnJvbVJlY3RhbmdsZTNEPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKGU9ZT8/WS5kZWZhdWx0LG49bj8/MCxtKG8pfHwobz1uZXcgZWUpLCFtKHQpKXJldHVybiBvLmNlbnRlcj1hLmNsb25lKGEuWkVSTyxvLmNlbnRlciksby5yYWRpdXM9MCxvO2xldCByPU50LnN1YnNhbXBsZSh0LGUsbix0UCk7cmV0dXJuIGVlLmZyb21Qb2ludHMocixvKX07ZWUuZnJvbVZlcnRpY2VzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKG0obyl8fChvPW5ldyBlZSksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gby5jZW50ZXI9YS5jbG9uZShhLlpFUk8sby5jZW50ZXIpLG8ucmFkaXVzPTAsbztlPWU/P2EuWkVSTyxuPW4/PzMseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInN0cmlkZSIsbiwzKTtsZXQgcj1JaDtyLng9dFswXStlLngsci55PXRbMV0rZS55LHIuej10WzJdK2UuejtsZXQgaT1hLmNsb25lKHIsU2gpLHM9YS5jbG9uZShyLHhoKSxmPWEuY2xvbmUocixDaCksdT1hLmNsb25lKHIsUGgpLGM9YS5jbG9uZShyLE1oKSxsPWEuY2xvbmUocixOaCkscD10Lmxlbmd0aCxkO2ZvcihkPTA7ZDxwO2QrPW4pe2xldCB2PXRbZF0rZS54LEI9dFtkKzFdK2UueSxBPXRbZCsyXStlLno7ci54PXYsci55PUIsci56PUEsdjxpLngmJmEuY2xvbmUocixpKSx2PnUueCYmYS5jbG9uZShyLHUpLEI8cy55JiZhLmNsb25lKHIscyksQj5jLnkmJmEuY2xvbmUocixjKSxBPGYueiYmYS5jbG9uZShyLGYpLEE+bC56JiZhLmNsb25lKHIsbCl9bGV0IGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChjLHMsYW8pKSxnPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGwsZixhbykpLGI9aSx3PXUsTz1oO18+TyYmKE89XyxiPXMsdz1jKSxnPk8mJihPPWcsYj1mLHc9bCk7bGV0IEU9dmg7RS54PShiLngrdy54KSouNSxFLnk9KGIueSt3LnkpKi41LEUuej0oYi56K3cueikqLjU7bGV0IFQ9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodyxFLGFvKSkseD1NYXRoLnNxcnQoVCksTT1GaDtNLng9aS54LE0ueT1zLnksTS56PWYuejtsZXQgTj1MaDtOLng9dS54LE4ueT1jLnksTi56PWwuejtsZXQgRj1hLm1pZHBvaW50KE0sTixEaCksST0wO2ZvcihkPTA7ZDxwO2QrPW4pe3IueD10W2RdK2UueCxyLnk9dFtkKzFdK2UueSxyLno9dFtkKzJdK2UuejtsZXQgdj1hLm1hZ25pdHVkZShhLnN1YnRyYWN0KHIsRixhbykpO3Y+SSYmKEk9dik7bGV0IEI9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QocixFLGFvKSk7aWYoQj5UKXtsZXQgQT1NYXRoLnNxcnQoQik7eD0oeCtBKSouNSxUPXgqeDtsZXQgUz1BLXg7RS54PSh4KkUueCtTKnIueCkvQSxFLnk9KHgqRS55K1Mqci55KS9BLEUuej0oeCpFLnorUypyLnopL0F9fXJldHVybiB4PEk/KGEuY2xvbmUoRSxvLmNlbnRlciksby5yYWRpdXM9eCk6KGEuY2xvbmUoRixvLmNlbnRlciksby5yYWRpdXM9SSksb307ZWUuZnJvbUVuY29kZWRDYXJ0ZXNpYW5WZXJ0aWNlcz1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IGVlKSwhbSh0KXx8IW0oZSl8fHQubGVuZ3RoIT09ZS5sZW5ndGh8fHQubGVuZ3RoPT09MClyZXR1cm4gbi5jZW50ZXI9YS5jbG9uZShhLlpFUk8sbi5jZW50ZXIpLG4ucmFkaXVzPTAsbjtsZXQgbz1JaDtvLng9dFswXStlWzBdLG8ueT10WzFdK2VbMV0sby56PXRbMl0rZVsyXTtsZXQgcj1hLmNsb25lKG8sU2gpLGk9YS5jbG9uZShvLHhoKSxzPWEuY2xvbmUobyxDaCksZj1hLmNsb25lKG8sUGgpLHU9YS5jbG9uZShvLE1oKSxjPWEuY2xvbmUobyxOaCksbD10Lmxlbmd0aCxwO2ZvcihwPTA7cDxsO3ArPTMpe2xldCBJPXRbcF0rZVtwXSx2PXRbcCsxXStlW3ArMV0sQj10W3ArMl0rZVtwKzJdO28ueD1JLG8ueT12LG8uej1CLEk8ci54JiZhLmNsb25lKG8sciksST5mLngmJmEuY2xvbmUobyxmKSx2PGkueSYmYS5jbG9uZShvLGkpLHY+dS55JiZhLmNsb25lKG8sdSksQjxzLnomJmEuY2xvbmUobyxzKSxCPmMueiYmYS5jbG9uZShvLGMpfWxldCBkPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGYscixhbykpLGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChjLHMsYW8pKSxnPXIsYj1mLHc9ZDtoPncmJih3PWgsZz1pLGI9dSksXz53JiYodz1fLGc9cyxiPWMpO2xldCBPPXZoO08ueD0oZy54K2IueCkqLjUsTy55PShnLnkrYi55KSouNSxPLno9KGcueitiLnopKi41O2xldCBFPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGIsTyxhbykpLFQ9TWF0aC5zcXJ0KEUpLHg9Rmg7eC54PXIueCx4Lnk9aS55LHguej1zLno7bGV0IE09TGg7TS54PWYueCxNLnk9dS55LE0uej1jLno7bGV0IE49YS5taWRwb2ludCh4LE0sRGgpLEY9MDtmb3IocD0wO3A8bDtwKz0zKXtvLng9dFtwXStlW3BdLG8ueT10W3ArMV0rZVtwKzFdLG8uej10W3ArMl0rZVtwKzJdO2xldCBJPWEubWFnbml0dWRlKGEuc3VidHJhY3QobyxOLGFvKSk7ST5GJiYoRj1JKTtsZXQgdj1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChvLE8sYW8pKTtpZih2PkUpe2xldCBCPU1hdGguc3FydCh2KTtUPShUK0IpKi41LEU9VCpUO2xldCBBPUItVDtPLng9KFQqTy54K0Eqby54KS9CLE8ueT0oVCpPLnkrQSpvLnkpL0IsTy56PShUKk8ueitBKm8ueikvQn19cmV0dXJuIFQ8Rj8oYS5jbG9uZShPLG4uY2VudGVyKSxuLnJhZGl1cz1UKTooYS5jbG9uZShOLG4uY2VudGVyKSxuLnJhZGl1cz1GKSxufTtlZS5mcm9tQ29ybmVyUG9pbnRzPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImNvcm5lciIsdCkseS50eXBlT2Yub2JqZWN0KCJvcHBvc2l0ZUNvcm5lciIsZSksbShuKXx8KG49bmV3IGVlKTtsZXQgbz1hLm1pZHBvaW50KHQsZSxuLmNlbnRlcik7cmV0dXJuIG4ucmFkaXVzPWEuZGlzdGFuY2UobyxlKSxufTtlZS5mcm9tRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIix0KSxtKGUpfHwoZT1uZXcgZWUpLGEuY2xvbmUoYS5aRVJPLGUuY2VudGVyKSxlLnJhZGl1cz10Lm1heGltdW1SYWRpdXMsZX07ZVA9bmV3IGE7ZWUuZnJvbUJvdW5kaW5nU3BoZXJlcz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBlZSksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS5jZW50ZXI9YS5jbG9uZShhLlpFUk8sZS5jZW50ZXIpLGUucmFkaXVzPTAsZTtsZXQgbj10Lmxlbmd0aDtpZihuPT09MSlyZXR1cm4gZWUuY2xvbmUodFswXSxlKTtpZihuPT09MilyZXR1cm4gZWUudW5pb24odFswXSx0WzFdLGUpO2xldCBvPVtdLHI7Zm9yKHI9MDtyPG47cisrKW8ucHVzaCh0W3JdLmNlbnRlcik7ZT1lZS5mcm9tUG9pbnRzKG8sZSk7bGV0IGk9ZS5jZW50ZXIscz1lLnJhZGl1cztmb3Iocj0wO3I8bjtyKyspe2xldCBmPXRbcl07cz1NYXRoLm1heChzLGEuZGlzdGFuY2UoaSxmLmNlbnRlcixlUCkrZi5yYWRpdXMpfXJldHVybiBlLnJhZGl1cz1zLGV9O25QPW5ldyBhLG9QPW5ldyBhLHJQPW5ldyBhO2VlLmZyb21PcmllbnRlZEJvdW5kaW5nQm94PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJvcmllbnRlZEJvdW5kaW5nQm94Iix0KSxtKGUpfHwoZT1uZXcgZWUpO2xldCBuPXQuaGFsZkF4ZXMsbz1aLmdldENvbHVtbihuLDAsblApLHI9Wi5nZXRDb2x1bW4obiwxLG9QKSxpPVouZ2V0Q29sdW1uKG4sMixyUCk7cmV0dXJuIGEuYWRkKG8scixvKSxhLmFkZChvLGksbyksZS5jZW50ZXI9YS5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZS5yYWRpdXM9YS5tYWduaXR1ZGUobyksZX07aVA9bmV3IGEsc1A9bmV3IGE7ZWUuZnJvbVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm1hdGlvbiIsdCksbShlKXx8KGU9bmV3IGVlKTtsZXQgbj1zdC5nZXRUcmFuc2xhdGlvbih0LGlQKSxvPXN0LmdldFNjYWxlKHQsc1ApLHI9LjUqYS5tYWduaXR1ZGUobyk7cmV0dXJuIGUuY2VudGVyPWEuY2xvbmUobixlLmNlbnRlciksZS5yYWRpdXM9cixlfTtlZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUuY2VudGVyPWEuY2xvbmUodC5jZW50ZXIsZS5jZW50ZXIpLGUucmFkaXVzPXQucmFkaXVzLGUpOm5ldyBlZSh0LmNlbnRlcix0LnJhZGl1cyl9O2VlLnBhY2tlZExlbmd0aD00O2VlLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MDtsZXQgbz10LmNlbnRlcjtyZXR1cm4gZVtuKytdPW8ueCxlW24rK109by55LGVbbisrXT1vLnosZVtuXT10LnJhZGl1cyxlfTtlZS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgZWUpO2xldCBvPW4uY2VudGVyO3JldHVybiBvLng9dFtlKytdLG8ueT10W2UrK10sby56PXRbZSsrXSxuLnJhZGl1cz10W2VdLG59O2NQPW5ldyBhLGFQPW5ldyBhO2VlLnVuaW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLG0obil8fChuPW5ldyBlZSk7bGV0IG89dC5jZW50ZXIscj10LnJhZGl1cyxpPWUuY2VudGVyLHM9ZS5yYWRpdXMsZj1hLnN1YnRyYWN0KGksbyxjUCksdT1hLm1hZ25pdHVkZShmKTtpZihyPj11K3MpcmV0dXJuIHQuY2xvbmUobiksbjtpZihzPj11K3IpcmV0dXJuIGUuY2xvbmUobiksbjtsZXQgYz0ocit1K3MpKi41LGw9YS5tdWx0aXBseUJ5U2NhbGFyKGYsKC1yK2MpL3UsYVApO3JldHVybiBhLmFkZChsLG8sbCksYS5jbG9uZShsLG4uY2VudGVyKSxuLnJhZGl1cz1jLG59O2ZQPW5ldyBhO2VlLmV4cGFuZD1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG49ZWUuY2xvbmUodCxuKTtsZXQgbz1hLm1hZ25pdHVkZShhLnN1YnRyYWN0KGUsbi5jZW50ZXIsZlApKTtyZXR1cm4gbz5uLnJhZGl1cyYmKG4ucmFkaXVzPW8pLG59O2VlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHkudHlwZU9mLm9iamVjdCgicGxhbmUiLGUpO2xldCBuPXQuY2VudGVyLG89dC5yYWRpdXMscj1lLm5vcm1hbCxpPWEuZG90KHIsbikrZS5kaXN0YW5jZTtyZXR1cm4gaTwtbz9Tbi5PVVRTSURFOmk8bz9Tbi5JTlRFUlNFQ1RJTkc6U24uSU5TSURFfTtlZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0obil8fChuPW5ldyBlZSksbi5jZW50ZXI9c3QubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsbi5jZW50ZXIpLG4ucmFkaXVzPXN0LmdldE1heGltdW1TY2FsZShlKSp0LnJhZGl1cyxufTt1UD1uZXcgYTtlZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSk7bGV0IG49YS5zdWJ0cmFjdCh0LmNlbnRlcixlLHVQKSxvPWEubWFnbml0dWRlKG4pLXQucmFkaXVzO3JldHVybiBvPD0wPzA6bypvfTtlZS50cmFuc2Zvcm1XaXRob3V0U2NhbGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0obil8fChuPW5ldyBlZSksbi5jZW50ZXI9c3QubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsbi5jZW50ZXIpLG4ucmFkaXVzPXQucmFkaXVzLG59O2xQPW5ldyBhO2VlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJwb3NpdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb24iLG4pLG0obyl8fChvPW5ldyBKcik7bGV0IHI9YS5zdWJ0cmFjdCh0LmNlbnRlcixlLGxQKSxpPWEuZG90KG4scik7cmV0dXJuIG8uc3RhcnQ9aS10LnJhZGl1cyxvLnN0b3A9aSt0LnJhZGl1cyxvfTtnYj1uZXcgYSxwUD1uZXcgYSxkUD1uZXcgYSxtUD1uZXcgYSxoUD1uZXcgYSxfUD1uZXcgY3QsYmI9bmV3IEFycmF5KDgpO2ZvcihsZXQgdD0wO3Q8ODsrK3QpYmJbdF09bmV3IGE7QWI9bmV3IGVvO2VlLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCksQWIuX2VsbGlwc29pZD1ZLmRlZmF1bHQsZT1lPz9BYjtsZXQgbz1lLmVsbGlwc29pZCxyPXQuY2VudGVyLGk9dC5yYWRpdXMsczthLmVxdWFscyhyLGEuWkVSTyk/cz1hLmNsb25lKGEuVU5JVF9YLGdiKTpzPW8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHIsZ2IpO2xldCBmPWEuY3Jvc3MoYS5VTklUX1oscyxwUCk7YS5ub3JtYWxpemUoZixmKTtsZXQgdT1hLmNyb3NzKHMsZixkUCk7YS5ub3JtYWxpemUodSx1KSxhLm11bHRpcGx5QnlTY2FsYXIocyxpLHMpLGEubXVsdGlwbHlCeVNjYWxhcih1LGksdSksYS5tdWx0aXBseUJ5U2NhbGFyKGYsaSxmKTtsZXQgYz1hLm5lZ2F0ZSh1LGhQKSxsPWEubmVnYXRlKGYsbVApLHA9YmIsZD1wWzBdO2EuYWRkKHMsdSxkKSxhLmFkZChkLGYsZCksZD1wWzFdLGEuYWRkKHMsdSxkKSxhLmFkZChkLGwsZCksZD1wWzJdLGEuYWRkKHMsYyxkKSxhLmFkZChkLGwsZCksZD1wWzNdLGEuYWRkKHMsYyxkKSxhLmFkZChkLGYsZCksYS5uZWdhdGUocyxzKSxkPXBbNF0sYS5hZGQocyx1LGQpLGEuYWRkKGQsZixkKSxkPXBbNV0sYS5hZGQocyx1LGQpLGEuYWRkKGQsbCxkKSxkPXBbNl0sYS5hZGQocyxjLGQpLGEuYWRkKGQsbCxkKSxkPXBbN10sYS5hZGQocyxjLGQpLGEuYWRkKGQsZixkKTtsZXQgaD1wLmxlbmd0aDtmb3IobGV0IHc9MDt3PGg7Kyt3KXtsZXQgTz1wW3ddO2EuYWRkKHIsTyxPKTtsZXQgRT1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKE8sX1ApO2UucHJvamVjdChFLE8pfW49ZWUuZnJvbVBvaW50cyhwLG4pLHI9bi5jZW50ZXI7bGV0IF89ci54LGc9ci55LGI9ci56O3JldHVybiByLng9YixyLnk9XyxyLno9ZyxufTtlZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSx5LnR5cGVPZi5vYmplY3QoIm9jY2x1ZGVyIixlKSwhZS5pc0JvdW5kaW5nU3BoZXJlVmlzaWJsZSh0KX07ZWUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZhLmVxdWFscyh0LmNlbnRlcixlLmNlbnRlcikmJnQucmFkaXVzPT09ZS5yYWRpdXN9O2VlLnByb3RvdHlwZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gZWUuaW50ZXJzZWN0UGxhbmUodGhpcyx0KX07ZWUucHJvdG90eXBlLmRpc3RhbmNlU3F1YXJlZFRvPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5kaXN0YW5jZVNxdWFyZWRUbyh0aGlzLHQpfTtlZS5wcm90b3R5cGUuY29tcHV0ZVBsYW5lRGlzdGFuY2VzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZWUuY29tcHV0ZVBsYW5lRGlzdGFuY2VzKHRoaXMsdCxlLG4pfTtlZS5wcm90b3R5cGUuaXNPY2NsdWRlZD1mdW5jdGlvbih0KXtyZXR1cm4gZWUuaXNPY2NsdWRlZCh0aGlzLHQpfTtlZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5lcXVhbHModGhpcyx0KX07ZWUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5jbG9uZSh0aGlzLHQpfTtlZS5wcm90b3R5cGUudm9sdW1lPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5yYWRpdXM7cmV0dXJuIFozKnQqdCp0fTtBdD1lZX0pO3ZhciB5UCxGdCxacz0kKCgpPT57eVA9e0RFUFRIX0JVRkZFUl9CSVQ6MjU2LFNURU5DSUxfQlVGRkVSX0JJVDoxMDI0LENPTE9SX0JVRkZFUl9CSVQ6MTYzODQsUE9JTlRTOjAsTElORVM6MSxMSU5FX0xPT1A6MixMSU5FX1NUUklQOjMsVFJJQU5HTEVTOjQsVFJJQU5HTEVfU1RSSVA6NSxUUklBTkdMRV9GQU46NixaRVJPOjAsT05FOjEsU1JDX0NPTE9SOjc2OCxPTkVfTUlOVVNfU1JDX0NPTE9SOjc2OSxTUkNfQUxQSEE6NzcwLE9ORV9NSU5VU19TUkNfQUxQSEE6NzcxLERTVF9BTFBIQTo3NzIsT05FX01JTlVTX0RTVF9BTFBIQTo3NzMsRFNUX0NPTE9SOjc3NCxPTkVfTUlOVVNfRFNUX0NPTE9SOjc3NSxTUkNfQUxQSEFfU0FUVVJBVEU6Nzc2LEZVTkNfQUREOjMyNzc0LEJMRU5EX0VRVUFUSU9OOjMyNzc3LEJMRU5EX0VRVUFUSU9OX1JHQjozMjc3NyxCTEVORF9FUVVBVElPTl9BTFBIQTozNDg3NyxGVU5DX1NVQlRSQUNUOjMyNzc4LEZVTkNfUkVWRVJTRV9TVUJUUkFDVDozMjc3OSxCTEVORF9EU1RfUkdCOjMyOTY4LEJMRU5EX1NSQ19SR0I6MzI5NjksQkxFTkRfRFNUX0FMUEhBOjMyOTcwLEJMRU5EX1NSQ19BTFBIQTozMjk3MSxDT05TVEFOVF9DT0xPUjozMjc2OSxPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6MzI3NzAsQ09OU1RBTlRfQUxQSEE6MzI3NzEsT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOjMyNzcyLEJMRU5EX0NPTE9SOjMyNzczLEFSUkFZX0JVRkZFUjozNDk2MixFTEVNRU5UX0FSUkFZX0JVRkZFUjozNDk2MyxBUlJBWV9CVUZGRVJfQklORElORzozNDk2NCxFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOjM0OTY1LFNUUkVBTV9EUkFXOjM1MDQwLFNUQVRJQ19EUkFXOjM1MDQ0LERZTkFNSUNfRFJBVzozNTA0OCxCVUZGRVJfU0laRTozNDY2MCxCVUZGRVJfVVNBR0U6MzQ2NjEsQ1VSUkVOVF9WRVJURVhfQVRUUklCOjM0MzQyLEZST05UOjEwMjgsQkFDSzoxMDI5LEZST05UX0FORF9CQUNLOjEwMzIsQ1VMTF9GQUNFOjI4ODQsQkxFTkQ6MzA0MixESVRIRVI6MzAyNCxTVEVOQ0lMX1RFU1Q6Mjk2MCxERVBUSF9URVNUOjI5MjksU0NJU1NPUl9URVNUOjMwODksUE9MWUdPTl9PRkZTRVRfRklMTDozMjgyMyxTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6MzI5MjYsU0FNUExFX0NPVkVSQUdFOjMyOTI4LE5PX0VSUk9SOjAsSU5WQUxJRF9FTlVNOjEyODAsSU5WQUxJRF9WQUxVRToxMjgxLElOVkFMSURfT1BFUkFUSU9OOjEyODIsT1VUX09GX01FTU9SWToxMjg1LENXOjIzMDQsQ0NXOjIzMDUsTElORV9XSURUSDoyODQ5LEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRTozMzkwMSxBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6MzM5MDIsQ1VMTF9GQUNFX01PREU6Mjg4NSxGUk9OVF9GQUNFOjI4ODYsREVQVEhfUkFOR0U6MjkyOCxERVBUSF9XUklURU1BU0s6MjkzMCxERVBUSF9DTEVBUl9WQUxVRToyOTMxLERFUFRIX0ZVTkM6MjkzMixTVEVOQ0lMX0NMRUFSX1ZBTFVFOjI5NjEsU1RFTkNJTF9GVU5DOjI5NjIsU1RFTkNJTF9GQUlMOjI5NjQsU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6Mjk2NSxTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUzoyOTY2LFNURU5DSUxfUkVGOjI5NjcsU1RFTkNJTF9WQUxVRV9NQVNLOjI5NjMsU1RFTkNJTF9XUklURU1BU0s6Mjk2OCxTVEVOQ0lMX0JBQ0tfRlVOQzozNDgxNixTVEVOQ0lMX0JBQ0tfRkFJTDozNDgxNyxTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMOjM0ODE4LFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6MzQ4MTksU1RFTkNJTF9CQUNLX1JFRjozNjAwMyxTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzozNjAwNCxTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOjM2MDA1LFZJRVdQT1JUOjI5NzgsU0NJU1NPUl9CT1g6MzA4OCxDT0xPUl9DTEVBUl9WQUxVRTozMTA2LENPTE9SX1dSSVRFTUFTSzozMTA3LFVOUEFDS19BTElHTk1FTlQ6MzMxNyxQQUNLX0FMSUdOTUVOVDozMzMzLE1BWF9URVhUVVJFX1NJWkU6MzM3OSxNQVhfVklFV1BPUlRfRElNUzozMzg2LFNVQlBJWEVMX0JJVFM6MzQwOCxSRURfQklUUzozNDEwLEdSRUVOX0JJVFM6MzQxMSxCTFVFX0JJVFM6MzQxMixBTFBIQV9CSVRTOjM0MTMsREVQVEhfQklUUzozNDE0LFNURU5DSUxfQklUUzozNDE1LFBPTFlHT05fT0ZGU0VUX1VOSVRTOjEwNzUyLFBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjozMjgyNCxURVhUVVJFX0JJTkRJTkdfMkQ6MzI4NzMsU0FNUExFX0JVRkZFUlM6MzI5MzYsU0FNUExFUzozMjkzNyxTQU1QTEVfQ09WRVJBR0VfVkFMVUU6MzI5MzgsU0FNUExFX0NPVkVSQUdFX0lOVkVSVDozMjkzOSxDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzozNDQ2NyxET05UX0NBUkU6NDM1MixGQVNURVNUOjQzNTMsTklDRVNUOjQzNTQsR0VORVJBVEVfTUlQTUFQX0hJTlQ6MzMxNzAsQllURTo1MTIwLFVOU0lHTkVEX0JZVEU6NTEyMSxTSE9SVDo1MTIyLFVOU0lHTkVEX1NIT1JUOjUxMjMsSU5UOjUxMjQsVU5TSUdORURfSU5UOjUxMjUsRkxPQVQ6NTEyNixERVBUSF9DT01QT05FTlQ6NjQwMixBTFBIQTo2NDA2LFJHQjo2NDA3LFJHQkE6NjQwOCxMVU1JTkFOQ0U6NjQwOSxMVU1JTkFOQ0VfQUxQSEE6NjQxMCxVTlNJR05FRF9TSE9SVF80XzRfNF80OjMyODE5LFVOU0lHTkVEX1NIT1JUXzVfNV81XzE6MzI4MjAsVU5TSUdORURfU0hPUlRfNV82XzU6MzM2MzUsRlJBR01FTlRfU0hBREVSOjM1NjMyLFZFUlRFWF9TSEFERVI6MzU2MzMsTUFYX1ZFUlRFWF9BVFRSSUJTOjM0OTIxLE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOjM2MzQ3LE1BWF9WQVJZSU5HX1ZFQ1RPUlM6MzYzNDgsTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM6MzU2NjEsTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOjM1NjYwLE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOjM0OTMwLE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6MzYzNDksU0hBREVSX1RZUEU6MzU2NjMsREVMRVRFX1NUQVRVUzozNTcxMixMSU5LX1NUQVRVUzozNTcxNCxWQUxJREFURV9TVEFUVVM6MzU3MTUsQVRUQUNIRURfU0hBREVSUzozNTcxNyxBQ1RJVkVfVU5JRk9STVM6MzU3MTgsQUNUSVZFX0FUVFJJQlVURVM6MzU3MjEsU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOjM1NzI0LENVUlJFTlRfUFJPR1JBTTozNTcyNSxORVZFUjo1MTIsTEVTUzo1MTMsRVFVQUw6NTE0LExFUVVBTDo1MTUsR1JFQVRFUjo1MTYsTk9URVFVQUw6NTE3LEdFUVVBTDo1MTgsQUxXQVlTOjUxOSxLRUVQOjc2ODAsUkVQTEFDRTo3NjgxLElOQ1I6NzY4MixERUNSOjc2ODMsSU5WRVJUOjUzODYsSU5DUl9XUkFQOjM0MDU1LERFQ1JfV1JBUDozNDA1NixWRU5ET1I6NzkzNixSRU5ERVJFUjo3OTM3LFZFUlNJT046NzkzOCxORUFSRVNUOjk3MjgsTElORUFSOjk3MjksTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDo5OTg0LExJTkVBUl9NSVBNQVBfTkVBUkVTVDo5OTg1LE5FQVJFU1RfTUlQTUFQX0xJTkVBUjo5OTg2LExJTkVBUl9NSVBNQVBfTElORUFSOjk5ODcsVEVYVFVSRV9NQUdfRklMVEVSOjEwMjQwLFRFWFRVUkVfTUlOX0ZJTFRFUjoxMDI0MSxURVhUVVJFX1dSQVBfUzoxMDI0MixURVhUVVJFX1dSQVBfVDoxMDI0MyxURVhUVVJFXzJEOjM1NTMsVEVYVFVSRTo1ODkwLFRFWFRVUkVfQ1VCRV9NQVA6MzQwNjcsVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOjM0MDY4LFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDozNDA2OSxURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6MzQwNzAsVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOjM0MDcxLFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWTozNDA3MixURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6MzQwNzMsVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOjM0MDc0LE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6MzQwNzYsVEVYVFVSRTA6MzM5ODQsVEVYVFVSRTE6MzM5ODUsVEVYVFVSRTI6MzM5ODYsVEVYVFVSRTM6MzM5ODcsVEVYVFVSRTQ6MzM5ODgsVEVYVFVSRTU6MzM5ODksVEVYVFVSRTY6MzM5OTAsVEVYVFVSRTc6MzM5OTEsVEVYVFVSRTg6MzM5OTIsVEVYVFVSRTk6MzM5OTMsVEVYVFVSRTEwOjMzOTk0LFRFWFRVUkUxMTozMzk5NSxURVhUVVJFMTI6MzM5OTYsVEVYVFVSRTEzOjMzOTk3LFRFWFRVUkUxNDozMzk5OCxURVhUVVJFMTU6MzM5OTksVEVYVFVSRTE2OjM0ZTMsVEVYVFVSRTE3OjM0MDAxLFRFWFRVUkUxODozNDAwMixURVhUVVJFMTk6MzQwMDMsVEVYVFVSRTIwOjM0MDA0LFRFWFRVUkUyMTozNDAwNSxURVhUVVJFMjI6MzQwMDYsVEVYVFVSRTIzOjM0MDA3LFRFWFRVUkUyNDozNDAwOCxURVhUVVJFMjU6MzQwMDksVEVYVFVSRTI2OjM0MDEwLFRFWFRVUkUyNzozNDAxMSxURVhUVVJFMjg6MzQwMTIsVEVYVFVSRTI5OjM0MDEzLFRFWFRVUkUzMDozNDAxNCxURVhUVVJFMzE6MzQwMTUsQUNUSVZFX1RFWFRVUkU6MzQwMTYsUkVQRUFUOjEwNDk3LENMQU1QX1RPX0VER0U6MzMwNzEsTUlSUk9SRURfUkVQRUFUOjMzNjQ4LEZMT0FUX1ZFQzI6MzU2NjQsRkxPQVRfVkVDMzozNTY2NSxGTE9BVF9WRUM0OjM1NjY2LElOVF9WRUMyOjM1NjY3LElOVF9WRUMzOjM1NjY4LElOVF9WRUM0OjM1NjY5LEJPT0w6MzU2NzAsQk9PTF9WRUMyOjM1NjcxLEJPT0xfVkVDMzozNTY3MixCT09MX1ZFQzQ6MzU2NzMsRkxPQVRfTUFUMjozNTY3NCxGTE9BVF9NQVQzOjM1Njc1LEZMT0FUX01BVDQ6MzU2NzYsU0FNUExFUl8yRDozNTY3OCxTQU1QTEVSX0NVQkU6MzU2ODAsVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOjM0MzM4LFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTozNDMzOSxWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERTozNDM0MCxWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6MzQzNDEsVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOjM0OTIyLFZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUjozNDM3MyxWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOjM0OTc1LElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRTozNTczOCxJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDozNTczOSxDT01QSUxFX1NUQVRVUzozNTcxMyxMT1dfRkxPQVQ6MzYzMzYsTUVESVVNX0ZMT0FUOjM2MzM3LEhJR0hfRkxPQVQ6MzYzMzgsTE9XX0lOVDozNjMzOSxNRURJVU1fSU5UOjM2MzQwLEhJR0hfSU5UOjM2MzQxLEZSQU1FQlVGRkVSOjM2MTYwLFJFTkRFUkJVRkZFUjozNjE2MSxSR0JBNDozMjg1NCxSR0I1X0ExOjMyODU1LFJHQjU2NTozNjE5NCxERVBUSF9DT01QT05FTlQxNjozMzE4OSxTVEVOQ0lMX0lOREVYOjY0MDEsU1RFTkNJTF9JTkRFWDg6MzYxNjgsREVQVEhfU1RFTkNJTDozNDA0MSxSRU5ERVJCVUZGRVJfV0lEVEg6MzYxNjIsUkVOREVSQlVGRkVSX0hFSUdIVDozNjE2MyxSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOjM2MTY0LFJFTkRFUkJVRkZFUl9SRURfU0laRTozNjE3NixSRU5ERVJCVUZGRVJfR1JFRU5fU0laRTozNjE3NyxSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOjM2MTc4LFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOjM2MTc5LFJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOjM2MTgwLFJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6MzYxODEsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRTozNjA0OCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOjM2MDQ5LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDozNjA1MCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRTozNjA1MSxDT0xPUl9BVFRBQ0hNRU5UMDozNjA2NCxERVBUSF9BVFRBQ0hNRU5UOjM2MDk2LFNURU5DSUxfQVRUQUNITUVOVDozNjEyOCxERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6MzMzMDYsTk9ORTowLEZSQU1FQlVGRkVSX0NPTVBMRVRFOjM2MDUzLEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDozNjA1NCxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVDozNjA1NSxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM6MzYwNTcsRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ6MzYwNjEsRlJBTUVCVUZGRVJfQklORElORzozNjAwNixSRU5ERVJCVUZGRVJfQklORElORzozNjAwNyxNQVhfUkVOREVSQlVGRkVSX1NJWkU6MzQwMjQsSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046MTI4NixVTlBBQ0tfRkxJUF9ZX1dFQkdMOjM3NDQwLFVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTDozNzQ0MSxDT05URVhUX0xPU1RfV0VCR0w6Mzc0NDIsVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDozNzQ0MyxCUk9XU0VSX0RFRkFVTFRfV0VCR0w6Mzc0NDQsQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDozMzc3NixDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDozMzc3NyxDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDozMzc3OCxDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDozMzc3OSxDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOjM1ODQwLENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6MzU4NDEsQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6MzU4NDIsQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6MzU4NDMsQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X1dFQkdMOjM3ODA4LENPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w6MzYxOTYsQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk06MzY0OTIsSEFMRl9GTE9BVF9PRVM6MzYxOTMsRE9VQkxFOjUxMzAsUkVBRF9CVUZGRVI6MzA3NCxVTlBBQ0tfUk9XX0xFTkdUSDozMzE0LFVOUEFDS19TS0lQX1JPV1M6MzMxNSxVTlBBQ0tfU0tJUF9QSVhFTFM6MzMxNixQQUNLX1JPV19MRU5HVEg6MzMzMCxQQUNLX1NLSVBfUk9XUzozMzMxLFBBQ0tfU0tJUF9QSVhFTFM6MzMzMixDT0xPUjo2MTQ0LERFUFRIOjYxNDUsU1RFTkNJTDo2MTQ2LFJFRDo2NDAzLFJHQjg6MzI4NDksUkdCQTg6MzI4NTYsUkdCMTBfQTI6MzI4NTcsVEVYVFVSRV9CSU5ESU5HXzNEOjMyODc0LFVOUEFDS19TS0lQX0lNQUdFUzozMjg3NyxVTlBBQ0tfSU1BR0VfSEVJR0hUOjMyODc4LFRFWFRVUkVfM0Q6MzI4NzksVEVYVFVSRV9XUkFQX1I6MzI4ODIsTUFYXzNEX1RFWFRVUkVfU0laRTozMjg4MyxVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6MzM2NDAsTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTOjMzZTMsTUFYX0VMRU1FTlRTX0lORElDRVM6MzMwMDEsVEVYVFVSRV9NSU5fTE9EOjMzMDgyLFRFWFRVUkVfTUFYX0xPRDozMzA4MyxURVhUVVJFX0JBU0VfTEVWRUw6MzMwODQsVEVYVFVSRV9NQVhfTEVWRUw6MzMwODUsTUlOOjMyNzc1LE1BWDozMjc3NixERVBUSF9DT01QT05FTlQyNDozMzE5MCxNQVhfVEVYVFVSRV9MT0RfQklBUzozNDA0NSxURVhUVVJFX0NPTVBBUkVfTU9ERTozNDg5MixURVhUVVJFX0NPTVBBUkVfRlVOQzozNDg5MyxDVVJSRU5UX1FVRVJZOjM0OTE3LFFVRVJZX1JFU1VMVDozNDkxOCxRVUVSWV9SRVNVTFRfQVZBSUxBQkxFOjM0OTE5LFNUUkVBTV9SRUFEOjM1MDQxLFNUUkVBTV9DT1BZOjM1MDQyLFNUQVRJQ19SRUFEOjM1MDQ1LFNUQVRJQ19DT1BZOjM1MDQ2LERZTkFNSUNfUkVBRDozNTA0OSxEWU5BTUlDX0NPUFk6MzUwNTAsTUFYX0RSQVdfQlVGRkVSUzozNDg1MixEUkFXX0JVRkZFUjA6MzQ4NTMsRFJBV19CVUZGRVIxOjM0ODU0LERSQVdfQlVGRkVSMjozNDg1NSxEUkFXX0JVRkZFUjM6MzQ4NTYsRFJBV19CVUZGRVI0OjM0ODU3LERSQVdfQlVGRkVSNTozNDg1OCxEUkFXX0JVRkZFUjY6MzQ4NTksRFJBV19CVUZGRVI3OjM0ODYwLERSQVdfQlVGRkVSODozNDg2MSxEUkFXX0JVRkZFUjk6MzQ4NjIsRFJBV19CVUZGRVIxMDozNDg2MyxEUkFXX0JVRkZFUjExOjM0ODY0LERSQVdfQlVGRkVSMTI6MzQ4NjUsRFJBV19CVUZGRVIxMzozNDg2NixEUkFXX0JVRkZFUjE0OjM0ODY3LERSQVdfQlVGRkVSMTU6MzQ4NjgsTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzozNTY1NyxNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzozNTY1OCxTQU1QTEVSXzNEOjM1Njc5LFNBTVBMRVJfMkRfU0hBRE9XOjM1NjgyLEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQ6MzU3MjMsUElYRUxfUEFDS19CVUZGRVI6MzUwNTEsUElYRUxfVU5QQUNLX0JVRkZFUjozNTA1MixQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOjM1MDUzLFBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzozNTA1NSxGTE9BVF9NQVQyeDM6MzU2ODUsRkxPQVRfTUFUMng0OjM1Njg2LEZMT0FUX01BVDN4MjozNTY4NyxGTE9BVF9NQVQzeDQ6MzU2ODgsRkxPQVRfTUFUNHgyOjM1Njg5LEZMT0FUX01BVDR4MzozNTY5MCxTUkdCOjM1OTA0LFNSR0I4OjM1OTA1LFNSR0I4X0FMUEhBODozNTkwNyxDT01QQVJFX1JFRl9UT19URVhUVVJFOjM0ODk0LFJHQkEzMkY6MzQ4MzYsUkdCMzJGOjM0ODM3LFJHQkExNkY6MzQ4NDIsUkdCMTZGOjM0ODQzLFZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUjozNTA2OSxNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlM6MzUwNzEsTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUOjM1MDc2LE1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVDozNTA3NyxNQVhfVkFSWUlOR19DT01QT05FTlRTOjM1NjU5LFRFWFRVUkVfMkRfQVJSQVk6MzU4NjYsVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOjM1ODY5LFIxMUZfRzExRl9CMTBGOjM1ODk4LFVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6MzU4OTksUkdCOV9FNTozNTkwMSxVTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6MzU5MDIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOjM1OTY3LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUzozNTk2OCxUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6MzU5NzEsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDozNTk3MixUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6MzU5NzMsVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjozNTk3NixSQVNURVJJWkVSX0RJU0NBUkQ6MzU5NzcsTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTOjM1OTc4LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUzozNTk3OSxJTlRFUkxFQVZFRF9BVFRSSUJTOjM1OTgwLFNFUEFSQVRFX0FUVFJJQlM6MzU5ODEsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjozNTk4MixUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6MzU5ODMsUkdCQTMyVUk6MzYyMDgsUkdCMzJVSTozNjIwOSxSR0JBMTZVSTozNjIxNCxSR0IxNlVJOjM2MjE1LFJHQkE4VUk6MzYyMjAsUkdCOFVJOjM2MjIxLFJHQkEzMkk6MzYyMjYsUkdCMzJJOjM2MjI3LFJHQkExNkk6MzYyMzIsUkdCMTZJOjM2MjMzLFJHQkE4STozNjIzOCxSR0I4STozNjIzOSxSRURfSU5URUdFUjozNjI0NCxSR0JfSU5URUdFUjozNjI0OCxSR0JBX0lOVEVHRVI6MzYyNDksU0FNUExFUl8yRF9BUlJBWTozNjI4OSxTQU1QTEVSXzJEX0FSUkFZX1NIQURPVzozNjI5MixTQU1QTEVSX0NVQkVfU0hBRE9XOjM2MjkzLFVOU0lHTkVEX0lOVF9WRUMyOjM2Mjk0LFVOU0lHTkVEX0lOVF9WRUMzOjM2Mjk1LFVOU0lHTkVEX0lOVF9WRUM0OjM2Mjk2LElOVF9TQU1QTEVSXzJEOjM2Mjk4LElOVF9TQU1QTEVSXzNEOjM2Mjk5LElOVF9TQU1QTEVSX0NVQkU6MzYzMDAsSU5UX1NBTVBMRVJfMkRfQVJSQVk6MzYzMDMsVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6MzYzMDYsVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6MzYzMDcsVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRTozNjMwOCxVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWTozNjMxMSxERVBUSF9DT01QT05FTlQzMkY6MzYwMTIsREVQVEgzMkZfU1RFTkNJTDg6MzYwMTMsRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOjM2MjY5LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6MzMyOTYsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRTozMzI5NyxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFOjMzMjk4LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRTozMzI5OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRTozMzMwMCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkU6MzMzMDEsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOjMzMzAyLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOjMzMzAzLEZSQU1FQlVGRkVSX0RFRkFVTFQ6MzMzMDQsVU5TSUdORURfSU5UXzI0Xzg6MzQwNDIsREVQVEgyNF9TVEVOQ0lMODozNTA1NixVTlNJR05FRF9OT1JNQUxJWkVEOjM1ODYzLERSQVdfRlJBTUVCVUZGRVJfQklORElORzozNjAwNixSRUFEX0ZSQU1FQlVGRkVSOjM2MDA4LERSQVdfRlJBTUVCVUZGRVI6MzYwMDksUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HOjM2MDEwLFJFTkRFUkJVRkZFUl9TQU1QTEVTOjM2MDExLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjozNjA1MixNQVhfQ09MT1JfQVRUQUNITUVOVFM6MzYwNjMsQ09MT1JfQVRUQUNITUVOVDE6MzYwNjUsQ09MT1JfQVRUQUNITUVOVDI6MzYwNjYsQ09MT1JfQVRUQUNITUVOVDM6MzYwNjcsQ09MT1JfQVRUQUNITUVOVDQ6MzYwNjgsQ09MT1JfQVRUQUNITUVOVDU6MzYwNjksQ09MT1JfQVRUQUNITUVOVDY6MzYwNzAsQ09MT1JfQVRUQUNITUVOVDc6MzYwNzEsQ09MT1JfQVRUQUNITUVOVDg6MzYwNzIsQ09MT1JfQVRUQUNITUVOVDk6MzYwNzMsQ09MT1JfQVRUQUNITUVOVDEwOjM2MDc0LENPTE9SX0FUVEFDSE1FTlQxMTozNjA3NSxDT0xPUl9BVFRBQ0hNRU5UMTI6MzYwNzYsQ09MT1JfQVRUQUNITUVOVDEzOjM2MDc3LENPTE9SX0FUVEFDSE1FTlQxNDozNjA3OCxDT0xPUl9BVFRBQ0hNRU5UMTU6MzYwNzksRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRTozNjE4MixNQVhfU0FNUExFUzozNjE4MyxIQUxGX0ZMT0FUOjUxMzEsUkc6MzMzMTksUkdfSU5URUdFUjozMzMyMCxSODozMzMyMSxSRzg6MzMzMjMsUjE2RjozMzMyNSxSMzJGOjMzMzI2LFJHMTZGOjMzMzI3LFJHMzJGOjMzMzI4LFI4STozMzMyOSxSOFVJOjMzMzMwLFIxNkk6MzMzMzEsUjE2VUk6MzMzMzIsUjMySTozMzMzMyxSMzJVSTozMzMzNCxSRzhJOjMzMzM1LFJHOFVJOjMzMzM2LFJHMTZJOjMzMzM3LFJHMTZVSTozMzMzOCxSRzMySTozMzMzOSxSRzMyVUk6MzMzNDAsVkVSVEVYX0FSUkFZX0JJTkRJTkc6MzQyMjksUjhfU05PUk06MzY3NTYsUkc4X1NOT1JNOjM2NzU3LFJHQjhfU05PUk06MzY3NTgsUkdCQThfU05PUk06MzY3NTksU0lHTkVEX05PUk1BTElaRUQ6MzY3NjQsQ09QWV9SRUFEX0JVRkZFUjozNjY2MixDT1BZX1dSSVRFX0JVRkZFUjozNjY2MyxDT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc6MzY2NjIsQ09QWV9XUklURV9CVUZGRVJfQklORElORzozNjY2MyxVTklGT1JNX0JVRkZFUjozNTM0NSxVTklGT1JNX0JVRkZFUl9CSU5ESU5HOjM1MzY4LFVOSUZPUk1fQlVGRkVSX1NUQVJUOjM1MzY5LFVOSUZPUk1fQlVGRkVSX1NJWkU6MzUzNzAsTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUzozNTM3MSxNQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1M6MzUzNzMsTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTOjM1Mzc0LE1BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUzozNTM3NSxNQVhfVU5JRk9STV9CTE9DS19TSVpFOjM1Mzc2LE1BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOjM1Mzc3LE1BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6MzUzNzksVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDozNTM4MCxBQ1RJVkVfVU5JRk9STV9CTE9DS1M6MzUzODIsVU5JRk9STV9UWVBFOjM1MzgzLFVOSUZPUk1fU0laRTozNTM4NCxVTklGT1JNX0JMT0NLX0lOREVYOjM1Mzg2LFVOSUZPUk1fT0ZGU0VUOjM1Mzg3LFVOSUZPUk1fQVJSQVlfU1RSSURFOjM1Mzg4LFVOSUZPUk1fTUFUUklYX1NUUklERTozNTM4OSxVTklGT1JNX0lTX1JPV19NQUpPUjozNTM5MCxVTklGT1JNX0JMT0NLX0JJTkRJTkc6MzUzOTEsVU5JRk9STV9CTE9DS19EQVRBX1NJWkU6MzUzOTIsVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVM6MzUzOTQsVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOjM1Mzk1LFVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOjM1Mzk2LFVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6MzUzOTgsSU5WQUxJRF9JTkRFWDo0Mjk0OTY3Mjk1LE1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFM6MzcxNTQsTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFM6MzcxNTcsTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQ6MzcxMzcsT0JKRUNUX1RZUEU6MzcxMzgsU1lOQ19DT05ESVRJT046MzcxMzksU1lOQ19TVEFUVVM6MzcxNDAsU1lOQ19GTEFHUzozNzE0MSxTWU5DX0ZFTkNFOjM3MTQyLFNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFOjM3MTQzLFVOU0lHTkFMRUQ6MzcxNDQsU0lHTkFMRUQ6MzcxNDUsQUxSRUFEWV9TSUdOQUxFRDozNzE0NixUSU1FT1VUX0VYUElSRUQ6MzcxNDcsQ09ORElUSU9OX1NBVElTRklFRDozNzE0OCxXQUlUX0ZBSUxFRDozNzE0OSxTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVDoxLFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUjozNTA3MCxBTllfU0FNUExFU19QQVNTRUQ6MzU4ODcsQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRTozNjIwMixTQU1QTEVSX0JJTkRJTkc6MzUwOTcsUkdCMTBfQTJVSTozNjk3NSxJTlRfMl8xMF8xMF8xMF9SRVY6MzYyNTUsVFJBTlNGT1JNX0ZFRURCQUNLOjM2Mzg2LFRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQ6MzYzODcsVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRTozNjM4OCxUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzozNjM4OSxDT01QUkVTU0VEX1IxMV9FQUM6Mzc0ODgsQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQzozNzQ4OSxDT01QUkVTU0VEX1JHMTFfRUFDOjM3NDkwLENPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOjM3NDkxLENPTVBSRVNTRURfUkdCOF9FVEMyOjM3NDkyLENPTVBSRVNTRURfU1JHQjhfRVRDMjozNzQ5MyxDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOjM3NDk0LENPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOjM3NDk1LENPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Mzc0OTYsQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Mzc0OTcsVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOjM3MTY3LE1BWF9FTEVNRU5UX0lOREVYOjM2MjAzLFRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzozMzUwMyxNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6MzQwNDd9LEZ0PU9iamVjdC5mcmVlemUoeVApfSk7dmFyIHNlLGV0LERlPSQoKCk9PntmdCgpO0h0KCk7WnMoKTtzZT17QllURTpGdC5CWVRFLFVOU0lHTkVEX0JZVEU6RnQuVU5TSUdORURfQllURSxTSE9SVDpGdC5TSE9SVCxVTlNJR05FRF9TSE9SVDpGdC5VTlNJR05FRF9TSE9SVCxJTlQ6RnQuSU5ULFVOU0lHTkVEX0lOVDpGdC5VTlNJR05FRF9JTlQsRkxPQVQ6RnQuRkxPQVQsRE9VQkxFOkZ0LkRPVUJMRX07c2UuZ2V0U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3N3aXRjaCh0KXtjYXNlIHNlLkJZVEU6cmV0dXJuIEludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSBzZS5TSE9SVDpyZXR1cm4gSW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX1NIT1JUOnJldHVybiBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLklOVDpyZXR1cm4gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX0lOVDpyZXR1cm4gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSBzZS5GTE9BVDpyZXR1cm4gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugc2UuRE9VQkxFOnJldHVybiBGbG9hdDY0QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtzZS5mcm9tVHlwZWRBcnJheT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgSW50OEFycmF5KXJldHVybiBzZS5CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBzZS5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiBzZS5TSE9SVDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIHNlLlVOU0lHTkVEX1NIT1JUO2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiBzZS5JTlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBzZS5VTlNJR05FRF9JTlQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4gc2UuRkxPQVQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlyZXR1cm4gc2UuRE9VQkxFO3Rocm93IG5ldyBEKCJhcnJheSBtdXN0IGJlIGFuIEludDhBcnJheSwgVWludDhBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIG9yIEZsb2F0NjRBcnJheS4iKX07c2UudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJih0PT09c2UuQllURXx8dD09PXNlLlVOU0lHTkVEX0JZVEV8fHQ9PT1zZS5TSE9SVHx8dD09PXNlLlVOU0lHTkVEX1NIT1JUfHx0PT09c2UuSU5UfHx0PT09c2UuVU5TSUdORURfSU5UfHx0PT09c2UuRkxPQVR8fHQ9PT1zZS5ET1VCTEUpfTtzZS5jcmVhdGVUeXBlZEFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJ2YWx1ZXNPckxlbmd0aCBpcyByZXF1aXJlZC4iKTtzd2l0Y2godCl7Y2FzZSBzZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUpO2Nhc2Ugc2UuVU5TSUdORURfQllURTpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSk7Y2FzZSBzZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSk7Y2FzZSBzZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUpO2Nhc2Ugc2UuSU5UOnJldHVybiBuZXcgSW50MzJBcnJheShlKTtjYXNlIHNlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpO2Nhc2Ugc2UuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSk7Y2FzZSBzZS5ET1VCTEU6cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtzZS5jcmVhdGVBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJidWZmZXIgaXMgcmVxdWlyZWQuIik7c3dpdGNoKG49bj8/MCxvPW8/PyhlLmJ5dGVMZW5ndGgtbikvc2UuZ2V0U2l6ZUluQnl0ZXModCksdCl7Y2FzZSBzZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUsbixvKTtjYXNlIHNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIG5ldyBVaW50OEFycmF5KGUsbixvKTtjYXNlIHNlLlNIT1JUOnJldHVybiBuZXcgSW50MTZBcnJheShlLG4sbyk7Y2FzZSBzZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUsbixvKTtjYXNlIHNlLklOVDpyZXR1cm4gbmV3IEludDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuVU5TSUdORURfSU5UOnJldHVybiBuZXcgVWludDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuRE9VQkxFOnJldHVybiBuZXcgRmxvYXQ2NEFycmF5KGUsbixvKTtkZWZhdWx0OnRocm93IG5ldyBEKCJjb21wb25lbnREYXRhdHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O3NlLmZyb21OYW1lPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIkJZVEUiOnJldHVybiBzZS5CWVRFO2Nhc2UiVU5TSUdORURfQllURSI6cmV0dXJuIHNlLlVOU0lHTkVEX0JZVEU7Y2FzZSJTSE9SVCI6cmV0dXJuIHNlLlNIT1JUO2Nhc2UiVU5TSUdORURfU0hPUlQiOnJldHVybiBzZS5VTlNJR05FRF9TSE9SVDtjYXNlIklOVCI6cmV0dXJuIHNlLklOVDtjYXNlIlVOU0lHTkVEX0lOVCI6cmV0dXJuIHNlLlVOU0lHTkVEX0lOVDtjYXNlIkZMT0FUIjpyZXR1cm4gc2UuRkxPQVQ7Y2FzZSJET1VCTEUiOnJldHVybiBzZS5ET1VCTEU7ZGVmYXVsdDp0aHJvdyBuZXcgRCgibmFtZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O2V0PU9iamVjdC5mcmVlemUoc2UpfSk7dmFyIGdQLE5pLERwPSQoKCk9PntnUD17Tk9ORTowLFRSSUFOR0xFUzoxLExJTkVTOjIsUE9MWUxJTkVTOjN9LE5pPU9iamVjdC5mcmVlemUoZ1ApfSk7ZnVuY3Rpb24gWHQodCxlLG4sbyl7dGhpc1swXT10Pz8wLHRoaXNbMV09bj8/MCx0aGlzWzJdPWU/PzAsdGhpc1szXT1vPz8wfXZhciBBUCxiUCx3YixUYix3UCxUUCxabyxiZj0kKCgpPT57a2UoKTtXdCgpO2Z0KCk7SHQoKTtYdC5wYWNrZWRMZW5ndGg9NDtYdC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10WzBdLGVbbisrXT10WzFdLGVbbisrXT10WzJdLGVbbisrXT10WzNdLGV9O1h0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgWHQpLG5bMF09dFtlKytdLG5bMV09dFtlKytdLG5bMl09dFtlKytdLG5bM109dFtlKytdLG59O1h0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bio0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKVh0LnBhY2sodFtyXSxlLHIqNCk7cmV0dXJuIGV9O1h0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vNDplPW5ldyBBcnJheShuLzQpO2ZvcihsZXQgbz0wO288bjtvKz00KXtsZXQgcj1vLzQ7ZVtyXT1YdC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTtYdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlKTpuZXcgWHQodFswXSx0WzJdLHRbMV0sdFszXSl9O1h0LmZyb21BcnJheT1YdC51bnBhY2s7WHQuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLFh0LmNsb25lKHQsZSl9O1h0LmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzJdLGVbMl09dFsxXSxlWzNdPXRbM10sZSk6bmV3IFh0KHRbMF0sdFsxXSx0WzJdLHRbM10pfTtYdC5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPXQueSxlKTpuZXcgWHQodC54LDAsMCx0LnkpfTtYdC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109dCxlKTpuZXcgWHQodCwwLDAsdCl9O1h0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm51bWJlcigiYW5nbGUiLHQpO2xldCBuPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJuIG0oZSk/KGVbMF09bixlWzFdPW8sZVsyXT0tbyxlWzNdPW4sZSk6bmV3IFh0KG4sLW8sbyxuKX07WHQudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdXX07WHQuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwxKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMSksdCoyK2V9O1h0LmdldENvbHVtbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPWUqMixyPXRbb10saT10W28rMV07cmV0dXJuIG4ueD1yLG4ueT1pLG59O1h0LnNldENvbHVtbj1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89WHQuY2xvbmUodCxvKTtsZXQgcj1lKjI7cmV0dXJuIG9bcl09bi54LG9bcisxXT1uLnksb307WHQuZ2V0Um93PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFtlXSxyPXRbZSsyXTtyZXR1cm4gbi54PW8sbi55PXIsbn07WHQuc2V0Um93PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89WHQuY2xvbmUodCxvKSxvW2VdPW4ueCxvW2UrMl09bi55LG99O0FQPW5ldyBKO1h0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVh0LmdldFNjYWxlKHQsQVApLHI9ZS54L28ueCxpPWUueS9vLnk7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSppLG5bM109dFszXSppLG59O2JQPW5ldyBKO1h0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1YdC5nZXRTY2FsZSh0LGJQKSxyPWUvby54LGk9ZS9vLnk7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSppLG5bM109dFszXSppLG59O3diPW5ldyBKO1h0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PUoubWFnbml0dWRlKEouZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx3YikpLGUueT1KLm1hZ25pdHVkZShKLmZyb21FbGVtZW50cyh0WzJdLHRbM10sd2IpKSxlfTtUYj1uZXcgSjtYdC5nZXRNYXhpbXVtU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIFh0LmdldFNjYWxlKHQsVGIpLEoubWF4aW11bUNvbXBvbmVudChUYil9O3dQPW5ldyBKO1h0LnNldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVh0LmdldFNjYWxlKHQsd1ApO3JldHVybiBuWzBdPWVbMF0qby54LG5bMV09ZVsxXSpvLngsblsyXT1lWzJdKm8ueSxuWzNdPWVbM10qby55LG59O1RQPW5ldyBKO1h0LmdldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1YdC5nZXRTY2FsZSh0LFRQKTtyZXR1cm4gZVswXT10WzBdL24ueCxlWzFdPXRbMV0vbi54LGVbMl09dFsyXS9uLnksZVszXT10WzNdL24ueSxlfTtYdC5tdWx0aXBseT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplWzBdK3RbMl0qZVsxXSxyPXRbMF0qZVsyXSt0WzJdKmVbM10saT10WzFdKmVbMF0rdFszXSplWzFdLHM9dFsxXSplWzJdK3RbM10qZVszXTtyZXR1cm4gblswXT1vLG5bMV09aSxuWzJdPXIsblszXT1zLG59O1h0LmFkZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXStlWzBdLG5bMV09dFsxXStlWzFdLG5bMl09dFsyXStlWzJdLG5bM109dFszXStlWzNdLG59O1h0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdLWVbMF0sblsxXT10WzFdLWVbMV0sblsyXT10WzJdLWVbMl0sblszXT10WzNdLWVbM10sbn07WHQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplLngrdFsyXSplLnkscj10WzFdKmUueCt0WzNdKmUueTtyZXR1cm4gbi54PW8sbi55PXIsbn07WHQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSplLG5bMV09dFsxXSplLG5bMl09dFsyXSplLG5bM109dFszXSplLG59O1h0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUueCxuWzFdPXRbMV0qZS54LG5bMl09dFsyXSplLnksblszXT10WzNdKmUueSxufTtYdC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0qZSxuWzFdPXRbMV0qZSxuWzJdPXRbMl0qZSxuWzNdPXRbM10qZSxufTtYdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPS10WzBdLGVbMV09LXRbMV0sZVsyXT0tdFsyXSxlWzNdPS10WzNdLGV9O1h0LnRyYW5zcG9zZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dFswXSxvPXRbMl0scj10WzFdLGk9dFszXTtyZXR1cm4gZVswXT1uLGVbMV09byxlWzJdPXIsZVszXT1pLGV9O1h0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZX07WHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzNdPT09ZVszXX07WHQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0WzBdPT09ZVtuXSYmdFsxXT09PWVbbisxXSYmdFsyXT09PWVbbisyXSYmdFszXT09PWVbbiszXX07WHQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9biYmTWF0aC5hYnModFsxXS1lWzFdKTw9biYmTWF0aC5hYnModFsyXS1lWzJdKTw9biYmTWF0aC5hYnModFszXS1lWzNdKTw9bn07WHQuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgWHQoMSwwLDAsMSkpO1h0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgWHQoMCwwLDAsMCkpO1h0LkNPTFVNTjBST1cwPTA7WHQuQ09MVU1OMFJPVzE9MTtYdC5DT0xVTU4xUk9XMD0yO1h0LkNPTFVNTjFST1cxPTM7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWHQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBYdC5wYWNrZWRMZW5ndGh9fX0pO1h0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gWHQuY2xvbmUodGhpcyx0KX07WHQucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gWHQuZXF1YWxzKHRoaXMsdCl9O1h0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFh0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTtYdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1syXX0pCigke3RoaXNbMV19LCAke3RoaXNbM119KWB9O1pvPVh0fSk7dmFyIF9vLEJ0LHRuPSQoKCk9PntacygpO19vPXtQT0lOVFM6RnQuUE9JTlRTLExJTkVTOkZ0LkxJTkVTLExJTkVfTE9PUDpGdC5MSU5FX0xPT1AsTElORV9TVFJJUDpGdC5MSU5FX1NUUklQLFRSSUFOR0xFUzpGdC5UUklBTkdMRVMsVFJJQU5HTEVfU1RSSVA6RnQuVFJJQU5HTEVfU1RSSVAsVFJJQU5HTEVfRkFOOkZ0LlRSSUFOR0xFX0ZBTn07X28uaXNMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PV9vLkxJTkVTfHx0PT09X28uTElORV9MT09QfHx0PT09X28uTElORV9TVFJJUH07X28uaXNUcmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1fby5UUklBTkdMRVN8fHQ9PT1fby5UUklBTkdMRV9TVFJJUHx8dD09PV9vLlRSSUFOR0xFX0ZBTn07X28udmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1fby5QT0lOVFN8fHQ9PT1fby5MSU5FU3x8dD09PV9vLkxJTkVfTE9PUHx8dD09PV9vLkxJTkVfU1RSSVB8fHQ9PT1fby5UUklBTkdMRVN8fHQ9PT1fby5UUklBTkdMRV9TVFJJUHx8dD09PV9vLlRSSUFOR0xFX0ZBTn07QnQ9T2JqZWN0LmZyZWV6ZShfbyl9KTtmdW5jdGlvbiBCaCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMuYXR0cmlidXRlcyIsdC5hdHRyaWJ1dGVzKSx0aGlzLmF0dHJpYnV0ZXM9dC5hdHRyaWJ1dGVzLHRoaXMuaW5kaWNlcz10LmluZGljZXMsdGhpcy5wcmltaXRpdmVUeXBlPXQucHJpbWl0aXZlVHlwZT8/QnQuVFJJQU5HTEVTLHRoaXMuYm91bmRpbmdTcGhlcmU9dC5ib3VuZGluZ1NwaGVyZSx0aGlzLmdlb21ldHJ5VHlwZT10Lmdlb21ldHJ5VHlwZT8/TmkuTk9ORSx0aGlzLmJvdW5kaW5nU3BoZXJlQ1Y9dC5ib3VuZGluZ1NwaGVyZUNWLHRoaXMub2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlfXZhciBPUCxFUCxPYixSUCxTUCx4UCxDUCxQUCxNUCxOUCxVdCxZZT0kKCgpPT57a2UoKTtEdCgpO0llKCk7V3QoKTt5ZSgpO2Z0KCk7SHQoKTtEcCgpO2JmKCk7VW4oKTtrbigpO3RuKCk7WG8oKTtUbigpO2FzKCk7QmguY29tcHV0ZU51bWJlck9mVmVydGljZXM9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJnZW9tZXRyeSIsdCk7bGV0IGU9LTE7Zm9yKGxldCBuIGluIHQuYXR0cmlidXRlcylpZih0LmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkobikmJm0odC5hdHRyaWJ1dGVzW25dKSYmbSh0LmF0dHJpYnV0ZXNbbl0udmFsdWVzKSl7bGV0IG89dC5hdHRyaWJ1dGVzW25dLHI9by52YWx1ZXMubGVuZ3RoL28uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtpZihlIT09ciYmZSE9PS0xKXRocm93IG5ldyBEKCJBbGwgYXR0cmlidXRlIGxpc3RzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgYXR0cmlidXRlcy4iKTtlPXJ9cmV0dXJuIGV9O09QPW5ldyBjdCxFUD1uZXcgYSxPYj1uZXcgc3QsUlA9W25ldyBjdCxuZXcgY3QsbmV3IGN0XSxTUD1bbmV3IEosbmV3IEosbmV3IEpdLHhQPVtuZXcgSixuZXcgSixuZXcgSl0sQ1A9bmV3IGEsUFA9bmV3IHRlLE1QPW5ldyBzdCxOUD1uZXcgWm87QmguX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHIsaT1OdC5jZW50ZXIobyxPUCkscz1jdC50b0NhcnRlc2lhbihpLG4sRVApLGY9JG8uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocyxuLE9iKSx1PXN0LmludmVyc2UoZixPYiksYz1TUCxsPVJQO2xbMF0ubG9uZ2l0dWRlPW8ud2VzdCxsWzBdLmxhdGl0dWRlPW8uc291dGgsbFsxXS5sb25naXR1ZGU9by53ZXN0LGxbMV0ubGF0aXR1ZGU9by5ub3J0aCxsWzJdLmxvbmdpdHVkZT1vLmVhc3QsbFsyXS5sYXRpdHVkZT1vLnNvdXRoO2xldCBwPUNQO2ZvcihyPTA7cjwzO3IrKyljdC50b0NhcnRlc2lhbihsW3JdLG4scCkscD1zdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcih1LHAscCksY1tyXS54PXAueCxjW3JdLnk9cC55O2xldCBkPXRlLmZyb21BeGlzQW5nbGUoYS5VTklUX1osLWUsUFApLGg9Wi5mcm9tUXVhdGVybmlvbihkLE1QKSxfPXQubGVuZ3RoLGc9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHc9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE89TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihyPTA7cjxfO3IrKylwPXN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHUsdFtyXSxwKSxwPVoubXVsdGlwbHlCeVZlY3RvcihoLHAscCksZz1NYXRoLm1pbihnLHAueCksYj1NYXRoLm1pbihiLHAueSksdz1NYXRoLm1heCh3LHAueCksTz1NYXRoLm1heChPLHAueSk7bGV0IEU9Wm8uZnJvbVJvdGF0aW9uKGUsTlApLFQ9eFA7VFswXS54PWcsVFswXS55PWIsVFsxXS54PWcsVFsxXS55PU8sVFsyXS54PXcsVFsyXS55PWI7bGV0IHg9Y1swXSxNPWNbMl0ueC14LngsTj1jWzFdLnkteC55O2ZvcihyPTA7cjwzO3IrKyl7bGV0IEE9VFtyXTtaby5tdWx0aXBseUJ5VmVjdG9yKEUsQSxBKSxBLng9KEEueC14LngpL00sQS55PShBLnkteC55KS9OfWxldCBGPVRbMF0sST1UWzFdLHY9VFsyXSxCPW5ldyBBcnJheSg2KTtyZXR1cm4gSi5wYWNrKEYsQiksSi5wYWNrKEksQiwyKSxKLnBhY2sodixCLDQpLEJ9O1V0PUJofSk7ZnVuY3Rpb24gSVAodCl7aWYodD10Pz9JdC5FTVBUWV9PQkpFQ1QsIW0odC5jb21wb25lbnREYXRhdHlwZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMuY29tcG9uZW50RGF0YXR5cGUgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5jb21wb25lbnRzUGVyQXR0cmlidXRlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIGlzIHJlcXVpcmVkLiIpO2lmKHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZTwxfHx0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU+NCl0aHJvdyBuZXcgRCgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0LiIpO2lmKCFtKHQudmFsdWVzKSl0aHJvdyBuZXcgRCgib3B0aW9ucy52YWx1ZXMgaXMgcmVxdWlyZWQuIik7dGhpcy5jb21wb25lbnREYXRhdHlwZT10LmNvbXBvbmVudERhdGF0eXBlLHRoaXMuY29tcG9uZW50c1BlckF0dHJpYnV0ZT10LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsdGhpcy5ub3JtYWxpemU9dC5ub3JtYWxpemU/PyExLHRoaXMudmFsdWVzPXQudmFsdWVzfXZhciBpdCwkZT0kKCgpPT57eWUoKTtmdCgpO0h0KCk7aXQ9SVB9KTtmdW5jdGlvbiB2UCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24sdGhpcy5ub3JtYWw9dC5ub3JtYWwsdGhpcy5zdD10LnN0LHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50LHRoaXMudGFuZ2VudD10LnRhbmdlbnQsdGhpcy5jb2xvcj10LmNvbG9yfXZhciBpZSxhbj0kKCgpPT57eWUoKTtpZT12UH0pO3ZhciBxZSxFYixSYj0kKCgpPT57a2UoKTtEdCgpO19yKCk7V3QoKTtIdCgpO2JmKCk7VW4oKTtrbigpO3FlPXtTQ0FMQVI6IlNDQUxBUiIsVkVDMjoiVkVDMiIsVkVDMzoiVkVDMyIsVkVDNDoiVkVDNCIsTUFUMjoiTUFUMiIsTUFUMzoiTUFUMyIsTUFUNDoiTUFUNCJ9O3FlLmdldE1hdGhUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIHFlLlNDQUxBUjpyZXR1cm4gTnVtYmVyO2Nhc2UgcWUuVkVDMjpyZXR1cm4gSjtjYXNlIHFlLlZFQzM6cmV0dXJuIGE7Y2FzZSBxZS5WRUM0OnJldHVybiBtZTtjYXNlIHFlLk1BVDI6cmV0dXJuIFpvO2Nhc2UgcWUuTUFUMzpyZXR1cm4gWjtjYXNlIHFlLk1BVDQ6cmV0dXJuIHN0O2RlZmF1bHQ6dGhyb3cgbmV3IEQoImF0dHJpYnV0ZVR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtxZS5nZXROdW1iZXJPZkNvbXBvbmVudHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UgcWUuU0NBTEFSOnJldHVybiAxO2Nhc2UgcWUuVkVDMjpyZXR1cm4gMjtjYXNlIHFlLlZFQzM6cmV0dXJuIDM7Y2FzZSBxZS5WRUM0OmNhc2UgcWUuTUFUMjpyZXR1cm4gNDtjYXNlIHFlLk1BVDM6cmV0dXJuIDk7Y2FzZSBxZS5NQVQ0OnJldHVybiAxNjtkZWZhdWx0OnRocm93IG5ldyBEKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07cWUuZ2V0QXR0cmlidXRlTG9jYXRpb25Db3VudD1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBxZS5TQ0FMQVI6Y2FzZSBxZS5WRUMyOmNhc2UgcWUuVkVDMzpjYXNlIHFlLlZFQzQ6cmV0dXJuIDE7Y2FzZSBxZS5NQVQyOnJldHVybiAyO2Nhc2UgcWUuTUFUMzpyZXR1cm4gMztjYXNlIHFlLk1BVDQ6cmV0dXJuIDQ7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O3FlLmdldEdsc2xUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh5LnR5cGVPZi5zdHJpbmcoImF0dHJpYnV0ZVR5cGUiLHQpLHQpe2Nhc2UgcWUuU0NBTEFSOnJldHVybiJmbG9hdCI7Y2FzZSBxZS5WRUMyOnJldHVybiJ2ZWMyIjtjYXNlIHFlLlZFQzM6cmV0dXJuInZlYzMiO2Nhc2UgcWUuVkVDNDpyZXR1cm4idmVjNCI7Y2FzZSBxZS5NQVQyOnJldHVybiJtYXQyIjtjYXNlIHFlLk1BVDM6cmV0dXJuIm1hdDMiO2Nhc2UgcWUuTUFUNDpyZXR1cm4ibWF0NCI7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O0ViPU9iamVjdC5mcmVlemUocWUpfSk7ZnVuY3Rpb24gQnAodCl7cmV0dXJuIENiWzBdPXQsQ2JbMF19ZnVuY3Rpb24gVWgodCl7cmV0dXJuIHQ+PjFeLSh0JjEpfXZhciBTYix4Yixlbix3ZixDYixraCxubixmcz0kKCgpPT57a2UoKTtEdCgpO0RlKCk7V3QoKTtmdCgpO0h0KCk7S3QoKTtSYigpO1NiPTEvMjU2LHhiPTI1Nixlbj17fTtlbi5vY3RFbmNvZGVJblJhbmdlPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoInZlY3RvciIsdCkseS5kZWZpbmVkKCJyZXN1bHQiLG4pO2xldCBvPWEubWFnbml0dWRlU3F1YXJlZCh0KTtpZihNYXRoLmFicyhvLTEpPlAuRVBTSUxPTjYpdGhyb3cgbmV3IEQoInZlY3RvciBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7aWYobi54PXQueC8oTWF0aC5hYnModC54KStNYXRoLmFicyh0LnkpK01hdGguYWJzKHQueikpLG4ueT10LnkvKE1hdGguYWJzKHQueCkrTWF0aC5hYnModC55KStNYXRoLmFicyh0LnopKSx0Lno8MCl7bGV0IHI9bi54LGk9bi55O24ueD0oMS1NYXRoLmFicyhpKSkqUC5zaWduTm90WmVybyhyKSxuLnk9KDEtTWF0aC5hYnMocikpKlAuc2lnbk5vdFplcm8oaSl9cmV0dXJuIG4ueD1QLnRvU05vcm0obi54LGUpLG4ueT1QLnRvU05vcm0obi55LGUpLG59O2VuLm9jdEVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVybiBlbi5vY3RFbmNvZGVJblJhbmdlKHQsMjU1LGUpfTt3Zj1uZXcgSixDYj1uZXcgVWludDhBcnJheSgxKTtlbi5vY3RFbmNvZGVUb0NhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZW4ub2N0RW5jb2RlSW5SYW5nZSh0LDY1NTM1LHdmKSxlLng9QnAod2YueCpTYiksZS55PUJwKHdmLngpLGUuej1CcCh3Zi55KlNiKSxlLnc9QnAod2YueSksZX07ZW4ub2N0RGVjb2RlSW5SYW5nZT1mdW5jdGlvbih0LGUsbixvKXtpZih5LmRlZmluZWQoInJlc3VsdCIsbyksdDwwfHx0Pm58fGU8MHx8ZT5uKXRocm93IG5ldyBEKGB4IGFuZCB5IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kICR7bn1gKTtpZihvLng9UC5mcm9tU05vcm0odCxuKSxvLnk9UC5mcm9tU05vcm0oZSxuKSxvLno9MS0oTWF0aC5hYnMoby54KStNYXRoLmFicyhvLnkpKSxvLno8MCl7bGV0IHI9by54O28ueD0oMS1NYXRoLmFicyhvLnkpKSpQLnNpZ25Ob3RaZXJvKHIpLG8ueT0oMS1NYXRoLmFicyhyKSkqUC5zaWduTm90WmVybyhvLnkpfXJldHVybiBhLm5vcm1hbGl6ZShvLG8pfTtlbi5vY3REZWNvZGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlbi5vY3REZWNvZGVJblJhbmdlKHQsZSwyNTUsbil9O2VuLm9jdERlY29kZUZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJlbmNvZGVkIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dC54LG89dC55LHI9dC56LGk9dC53O2lmKG48MHx8bj4yNTV8fG88MHx8bz4yNTV8fHI8MHx8cj4yNTV8fGk8MHx8aT4yNTUpdGhyb3cgbmV3IEQoIngsIHksIHosIGFuZCB3IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kIDI1NSIpO2xldCBzPW4qeGIrbyxmPXIqeGIraTtyZXR1cm4gZW4ub2N0RGVjb2RlSW5SYW5nZShzLGYsNjU1MzUsZSl9O2VuLm9jdFBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4geS5kZWZpbmVkKCJlbmNvZGVkIix0KSwyNTYqdC54K3QueX07a2g9bmV3IEo7ZW4ub2N0RW5jb2RlRmxvYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGVuLm9jdEVuY29kZSh0LGtoKSxlbi5vY3RQYWNrRmxvYXQoa2gpfTtlbi5vY3REZWNvZGVGbG9hdD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgidmFsdWUiLHQpO2xldCBuPXQvMjU2LG89TWF0aC5mbG9vcihuKSxyPShuLW8pKjI1NjtyZXR1cm4gZW4ub2N0RGVjb2RlKG8scixlKX07ZW4ub2N0UGFjaz1mdW5jdGlvbih0LGUsbixvKXt5LmRlZmluZWQoInYxIix0KSx5LmRlZmluZWQoInYyIixlKSx5LmRlZmluZWQoInYzIixuKSx5LmRlZmluZWQoInJlc3VsdCIsbyk7bGV0IHI9ZW4ub2N0RW5jb2RlRmxvYXQodCksaT1lbi5vY3RFbmNvZGVGbG9hdChlKSxzPWVuLm9jdEVuY29kZShuLGtoKTtyZXR1cm4gby54PTY1NTM2KnMueCtyLG8ueT02NTUzNipzLnkraSxvfTtlbi5vY3RVbnBhY2s9ZnVuY3Rpb24odCxlLG4sbyl7eS5kZWZpbmVkKCJwYWNrZWQiLHQpLHkuZGVmaW5lZCgidjEiLGUpLHkuZGVmaW5lZCgidjIiLG4pLHkuZGVmaW5lZCgidjMiLG8pO2xldCByPXQueC82NTUzNixpPU1hdGguZmxvb3Iocikscz0oci1pKSo2NTUzNjtyPXQueS82NTUzNjtsZXQgZj1NYXRoLmZsb29yKHIpLHU9KHItZikqNjU1MzY7ZW4ub2N0RGVjb2RlRmxvYXQocyxlKSxlbi5vY3REZWNvZGVGbG9hdCh1LG4pLGVuLm9jdERlY29kZShpLGYsbyl9O2VuLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe3kuZGVmaW5lZCgidGV4dHVyZUNvb3JkaW5hdGVzIix0KTtsZXQgZT10LngqNDA5NXwwLG49dC55KjQwOTV8MDtyZXR1cm4gNDA5NiplK259O2VuLmRlY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNvbXByZXNzZWQiLHQpLHkuZGVmaW5lZCgicmVzdWx0IixlKTtsZXQgbj10LzQwOTYsbz1NYXRoLmZsb29yKG4pO3JldHVybiBlLng9by80MDk1LGUueT0odC1vKjQwOTYpLzQwOTUsZX07ZW4uemlnWmFnRGVsdGFEZWNvZGU9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgidUJ1ZmZlciIsdCkseS5kZWZpbmVkKCJ2QnVmZmVyIixlKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJ1QnVmZmVyLmxlbmd0aCIsInZCdWZmZXIubGVuZ3RoIix0Lmxlbmd0aCxlLmxlbmd0aCksbShuKSYmeS50eXBlT2YubnVtYmVyLmVxdWFscygidUJ1ZmZlci5sZW5ndGgiLCJoZWlnaHRCdWZmZXIubGVuZ3RoIix0Lmxlbmd0aCxuLmxlbmd0aCk7bGV0IG89dC5sZW5ndGgscj0wLGk9MCxzPTA7Zm9yKGxldCBmPTA7ZjxvOysrZilyKz1VaCh0W2ZdKSxpKz1VaChlW2ZdKSx0W2ZdPXIsZVtmXT1pLG0obikmJihzKz1VaChuW2ZdKSxuW2ZdPXMpfTtlbi5kZXF1YW50aXplPWZ1bmN0aW9uKHQsZSxuLG8pe3kuZGVmaW5lZCgidHlwZWRBcnJheSIsdCkseS5kZWZpbmVkKCJjb21wb25lbnREYXRhdHlwZSIsZSkseS5kZWZpbmVkKCJ0eXBlIixuKSx5LmRlZmluZWQoImNvdW50IixvKTtsZXQgcj1FYi5nZXROdW1iZXJPZkNvbXBvbmVudHMobiksaTtzd2l0Y2goZSl7Y2FzZSBldC5CWVRFOmk9MTI3O2JyZWFrO2Nhc2UgZXQuVU5TSUdORURfQllURTppPTI1NTticmVhaztjYXNlIGV0LlNIT1JUOmk9MzI3Njc7YnJlYWs7Y2FzZSBldC5VTlNJR05FRF9TSE9SVDppPTY1NTM1O2JyZWFrO2Nhc2UgZXQuSU5UOmk9MjE0NzQ4MzY0NzticmVhaztjYXNlIGV0LlVOU0lHTkVEX0lOVDppPTQyOTQ5NjcyOTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRChgQ2Fubm90IGRlcXVhbnRpemUgY29tcG9uZW50IGRhdGF0eXBlOiAke2V9YCl9bGV0IHM9bmV3IEZsb2F0MzJBcnJheShvKnIpO2ZvcihsZXQgZj0wO2Y8bztmKyspZm9yKGxldCB1PTA7dTxyO3UrKyl7bGV0IGM9ZipyK3U7c1tjXT1NYXRoLm1heCh0W2NdL2ksLTEpfXJldHVybiBzfTtlbi5kZWNvZGVSR0I1NjU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoInR5cGVkQXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoKjM7bShlKSYmeS50eXBlT2YubnVtYmVyLmVxdWFscygicmVzdWx0Lmxlbmd0aCIsInR5cGVkQXJyYXkubGVuZ3RoICogMyIsZS5sZW5ndGgsbik7bGV0IG89dC5sZW5ndGg7bShlKXx8KGU9bmV3IEZsb2F0MzJBcnJheShvKjMpKTtsZXQgcj0zMSxpPTYzLHM9MS8zMSxmPTEvNjM7Zm9yKGxldCB1PTA7dTxvO3UrKyl7bGV0IGM9dFt1XSxsPWM+PjExLHA9Yz4+NSZpLGQ9YyZyLGg9Myp1O2VbaF09bCpzLGVbaCsxXT1wKmYsZVtoKzJdPWQqc31yZXR1cm4gZX07bm49ZW59KTtmdW5jdGlvbiBGUCh0LGUsbixvLHIpe3kuZGVmaW5lZCgicG9pbnQiLHQpLHkuZGVmaW5lZCgicDAiLGUpLHkuZGVmaW5lZCgicDEiLG4pLHkuZGVmaW5lZCgicDIiLG8pLG0ocil8fChyPW5ldyBhKTtsZXQgaSxzLGYsdSxjLGwscCxkO2lmKG0oZS56KSl7aWYoYS5lcXVhbHNFcHNpbG9uKHQsZSxQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1gscik7aWYoYS5lcXVhbHNFcHNpbG9uKHQsbixQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1kscik7aWYoYS5lcXVhbHNFcHNpbG9uKHQsbyxQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1oscik7aT1hLnN1YnRyYWN0KG4sZSxQYikscz1hLnN1YnRyYWN0KG8sZSxNYiksZj1hLnN1YnRyYWN0KHQsZSxOYiksdT1hLmRvdChpLGkpLGM9YS5kb3QoaSxzKSxsPWEuZG90KGksZikscD1hLmRvdChzLHMpLGQ9YS5kb3QocyxmKX1lbHNle2lmKEouZXF1YWxzRXBzaWxvbih0LGUsUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9YLHIpO2lmKEouZXF1YWxzRXBzaWxvbih0LG4sUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9ZLHIpO2lmKEouZXF1YWxzRXBzaWxvbih0LG8sUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9aLHIpO2k9Si5zdWJ0cmFjdChuLGUsUGIpLHM9Si5zdWJ0cmFjdChvLGUsTWIpLGY9Si5zdWJ0cmFjdCh0LGUsTmIpLHU9Si5kb3QoaSxpKSxjPUouZG90KGkscyksbD1KLmRvdChpLGYpLHA9Si5kb3QocyxzKSxkPUouZG90KHMsZil9ci55PXAqbC1jKmQsci56PXUqZC1jKmw7bGV0IGg9dSpwLWMqYztpZihoIT09MClyZXR1cm4gci55Lz1oLHIuei89aCxyLng9MS1yLnktci56LHJ9dmFyIFBiLE1iLE5iLEliLHZiPSQoKCk9PntrZSgpO0R0KCk7V3QoKTtmdCgpO0t0KCk7UGI9bmV3IGEsTWI9bmV3IGEsTmI9bmV3IGE7SWI9RlB9KTtmdW5jdGlvbiBpaSgpe3RoaXMuaGlnaD1hLmNsb25lKGEuWkVSTyksdGhpcy5sb3c9YS5jbG9uZShhLlpFUk8pfXZhciBJaSxHaCxRcyxWaD0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7aWkuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksbShlKXx8KGU9e2hpZ2g6MCxsb3c6MH0pO2xldCBuO3JldHVybiB0Pj0wPyhuPU1hdGguZmxvb3IodC82NTUzNikqNjU1MzYsZS5oaWdoPW4sZS5sb3c9dC1uKToobj1NYXRoLmZsb29yKC10LzY1NTM2KSo2NTUzNixlLmhpZ2g9LW4sZS5sb3c9dCtuKSxlfTtJaT17aGlnaDowLGxvdzowfTtpaS5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBpaSk7bGV0IG49ZS5oaWdoLG89ZS5sb3c7cmV0dXJuIGlpLmVuY29kZSh0LngsSWkpLG4ueD1JaS5oaWdoLG8ueD1JaS5sb3csaWkuZW5jb2RlKHQueSxJaSksbi55PUlpLmhpZ2gsby55PUlpLmxvdyxpaS5lbmNvZGUodC56LElpKSxuLno9SWkuaGlnaCxvLno9SWkubG93LGV9O0doPW5ldyBpaTtpaS53cml0ZUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImNhcnRlc2lhbkFycmF5IixlKSx5LnR5cGVPZi5udW1iZXIoImluZGV4IixuKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLG4sMCksaWkuZnJvbUNhcnRlc2lhbih0LEdoKTtsZXQgbz1HaC5oaWdoLHI9R2gubG93O2Vbbl09by54LGVbbisxXT1vLnksZVtuKzJdPW8ueixlW24rM109ci54LGVbbis0XT1yLnksZVtuKzVdPXIuen07UXM9aWl9KTt2YXIgbm8sTHQsWmU9JCgoKT0+e2Z0KCk7SHQoKTtLdCgpO1pzKCk7bm89e1VOU0lHTkVEX0JZVEU6RnQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDpGdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6RnQuVU5TSUdORURfSU5UfTtuby5nZXRTaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBuby5VTlNJR05FRF9CWVRFOnJldHVybiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugbm8uVU5TSUdORURfU0hPUlQ6cmV0dXJuIFVpbnQxNkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugbm8uVU5TSUdORURfSU5UOnJldHVybiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVH10aHJvdyBuZXcgRCgiaW5kZXhEYXRhdHlwZSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHZhbGlkIEluZGV4RGF0YXR5cGUgY29uc3RhbnQuIil9O25vLmZyb21TaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAyOnJldHVybiBuby5VTlNJR05FRF9TSE9SVDtjYXNlIDQ6cmV0dXJuIG5vLlVOU0lHTkVEX0lOVDtjYXNlIDE6cmV0dXJuIG5vLlVOU0lHTkVEX0JZVEU7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiU2l6ZSBpbiBieXRlcyBjYW5ub3QgYmUgbWFwcGVkIHRvIGFuIEluZGV4RGF0YXR5cGUiKX19O25vLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiYodD09PW5vLlVOU0lHTkVEX0JZVEV8fHQ9PT1uby5VTlNJR05FRF9TSE9SVHx8dD09PW5vLlVOU0lHTkVEX0lOVCl9O25vLmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgibnVtYmVyT2ZWZXJ0aWNlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSk6bmV3IFVpbnQxNkFycmF5KGUpfTtuby5jcmVhdGVUeXBlZEFycmF5RnJvbUFycmF5QnVmZmVyPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJudW1iZXJPZlZlcnRpY2VzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzb3VyY2VBcnJheSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYnl0ZU9mZnNldCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSxuLG8pOm5ldyBVaW50MTZBcnJheShlLG4sbyl9O25vLmZyb21UeXBlZEFycmF5PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBuby5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheSlyZXR1cm4gbm8uVU5TSUdORURfU0hPUlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBuby5VTlNJR05FRF9JTlQ7dGhyb3cgbmV3IEQoImFycmF5IG11c3QgYmUgYSBVaW50OEFycmF5LCBVaW50MTZBcnJheSwgb3IgVWludDMyQXJyYXkuIil9O0x0PU9iamVjdC5mcmVlemUobm8pfSk7ZnVuY3Rpb24gRmIodCxlLG4pe2xldCBvPXQrZTtyZXR1cm4gUC5zaWduKHQpIT09UC5zaWduKGUpJiZNYXRoLmFicyhvL01hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSk8bj8wOm99dmFyIHpoLEFyLFVwPSQoKCk9PntIdCgpO0t0KCk7emg9e307emguY29tcHV0ZURpc2NyaW1pbmFudD1mdW5jdGlvbih0LGUsbil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7cmV0dXJuIGUqZS00KnQqbn07emguY29tcHV0ZVJlYWxSb290cz1mdW5jdGlvbih0LGUsbil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IG87aWYodD09PTApcmV0dXJuIGU9PT0wP1tdOlstbi9lXTtpZihlPT09MCl7aWYobj09PTApcmV0dXJuWzAsMF07bGV0IHU9TWF0aC5hYnMobiksYz1NYXRoLmFicyh0KTtpZih1PGMmJnUvYzxQLkVQU0lMT04xNClyZXR1cm5bMCwwXTtpZih1PmMmJmMvdTxQLkVQU0lMT04xNClyZXR1cm5bXTtpZihvPS1uL3QsbzwwKXJldHVybltdO2xldCBsPU1hdGguc3FydChvKTtyZXR1cm5bLWwsbF19ZWxzZSBpZihuPT09MClyZXR1cm4gbz0tZS90LG88MD9bbywwXTpbMCxvXTtsZXQgcj1lKmUsaT00KnQqbixzPUZiKHIsLWksUC5FUFNJTE9OMTQpO2lmKHM8MClyZXR1cm5bXTtsZXQgZj0tLjUqRmIoZSxQLnNpZ24oZSkqTWF0aC5zcXJ0KHMpLFAuRVBTSUxPTjE0KTtyZXR1cm4gZT4wP1tmL3Qsbi9mXTpbbi9mLGYvdF19O0FyPXpofSk7ZnVuY3Rpb24gamgodCxlLG4sbyl7bGV0IHI9dCxpPWUvMyxzPW4vMyxmPW8sdT1yKnMsYz1pKmYsbD1pKmkscD1zKnMsZD1yKnMtbCxoPXIqZi1pKnMsXz1pKmYtcCxnPTQqZCpfLWgqaCxiLHc7aWYoZzwwKXtsZXQgUixudCxhdDtsKmM+PXUqcD8oUj1yLG50PWQsYXQ9LTIqaSpkK3IqaCk6KFI9ZixudD1fLGF0PS1mKmgrMipzKl8pO2xldCBfdD0tKGF0PDA/LTE6MSkqTWF0aC5hYnMoUikqTWF0aC5zcXJ0KC1nKTt3PS1hdCtfdDtsZXQgb3Q9dy8yLFB0PW90PDA/LU1hdGgucG93KC1vdCwxLzMpOk1hdGgucG93KG90LDEvMyksZ3Q9dz09PV90Py1QdDotbnQvUHQ7cmV0dXJuIGI9bnQ8PTA/UHQrZ3Q6LWF0LyhQdCpQdCtndCpndCtudCksbCpjPj11KnA/WyhiLWkpL3JdOlstZi8oYitzKV19bGV0IE89ZCxFPS0yKmkqZCtyKmgsVD1fLHg9LWYqaCsyKnMqXyxNPU1hdGguc3FydChnKSxOPU1hdGguc3FydCgzKS8yLEY9TWF0aC5hYnMoTWF0aC5hdGFuMihyKk0sLUUpLzMpO2I9MipNYXRoLnNxcnQoLU8pO2xldCBJPU1hdGguY29zKEYpO3c9YipJO2xldCB2PWIqKC1JLzItTipNYXRoLnNpbihGKSksQj13K3Y+MippP3ctaTp2LWksQT1yLFM9Qi9BO0Y9TWF0aC5hYnMoTWF0aC5hdGFuMihmKk0sLXgpLzMpLGI9MipNYXRoLnNxcnQoLVQpLEk9TWF0aC5jb3MoRiksdz1iKkksdj1iKigtSS8yLU4qTWF0aC5zaW4oRikpO2xldCBDPS1mLEw9dyt2PDIqcz93K3M6ditzLHo9Qy9MLGo9QSpMLGs9LUIqTC1BKkMscT1CKkMsVz0ocyprLWkqcSkvKC1pKmsrcypqKTtyZXR1cm4gUzw9Vz9TPD16P1c8PXo/W1MsVyx6XTpbUyx6LFddOlt6LFMsV106Uzw9ej9bVyxTLHpdOlc8PXo/W1cseixTXTpbeixXLFNdfXZhciBIaCxrcCxMYj0kKCgpPT57SHQoKTtVcCgpO0hoPXt9O0hoLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLG4sbyl7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCByPXQqdCxpPWUqZSxzPW4qbixmPW8qbztyZXR1cm4gMTgqdCplKm4qbytpKnMtMjcqcipmLTQqKHQqcypuK2kqZSpvKX07SGguY29tcHV0ZVJlYWxSb290cz1mdW5jdGlvbih0LGUsbixvKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IEQoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBEKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBuIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbyE9Im51bWJlciIpdGhyb3cgbmV3IEQoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IHIsaTtpZih0PT09MClyZXR1cm4gQXIuY29tcHV0ZVJlYWxSb290cyhlLG4sbyk7aWYoZT09PTApe2lmKG49PT0wKXtpZihvPT09MClyZXR1cm5bMCwwLDBdO2k9LW8vdDtsZXQgcz1pPDA/LU1hdGgucG93KC1pLDEvMyk6TWF0aC5wb3coaSwxLzMpO3JldHVybltzLHMsc119ZWxzZSBpZihvPT09MClyZXR1cm4gcj1Bci5jb21wdXRlUmVhbFJvb3RzKHQsMCxuKSxyLkxlbmd0aD09PTA/WzBdOltyWzBdLDAsclsxXV07cmV0dXJuIGpoKHQsMCxuLG8pfWVsc2V7aWYobj09PTApcmV0dXJuIG89PT0wPyhpPS1lL3QsaTwwP1tpLDAsMF06WzAsMCxpXSk6amgodCxlLDAsbyk7aWYobz09PTApcmV0dXJuIHI9QXIuY29tcHV0ZVJlYWxSb290cyh0LGUsbiksci5sZW5ndGg9PT0wP1swXTpyWzFdPD0wP1tyWzBdLHJbMV0sMF06clswXT49MD9bMCxyWzBdLHJbMV1dOltyWzBdLDAsclsxXV19cmV0dXJuIGpoKHQsZSxuLG8pfTtrcD1IaH0pO2Z1bmN0aW9uIFVyKHQsZSxuLG8pe2xldCByPXQqdCxpPWUtMypyLzgscz1uLWUqdC8yK3IqdC84LGY9by1uKnQvNCtlKnIvMTYtMypyKnIvMjU2LHU9a3AuY29tcHV0ZVJlYWxSb290cygxLDIqaSxpKmktNCpmLC1zKnMpO2lmKHUubGVuZ3RoPjApe2xldCBjPS10LzQsbD11W3UubGVuZ3RoLTFdO2lmKE1hdGguYWJzKGwpPFAuRVBTSUxPTjE0KXtsZXQgcD1Bci5jb21wdXRlUmVhbFJvb3RzKDEsaSxmKTtpZihwLmxlbmd0aD09PTIpe2xldCBkPXBbMF0saD1wWzFdLF87aWYoZD49MCYmaD49MCl7bGV0IGc9TWF0aC5zcXJ0KGQpLGI9TWF0aC5zcXJ0KGgpO3JldHVybltjLWIsYy1nLGMrZyxjK2JdfWVsc2V7aWYoZD49MCYmaDwwKXJldHVybiBfPU1hdGguc3FydChkKSxbYy1fLGMrX107aWYoZDwwJiZoPj0wKXJldHVybiBfPU1hdGguc3FydChoKSxbYy1fLGMrX119fXJldHVybltdfWVsc2UgaWYobD4wKXtsZXQgcD1NYXRoLnNxcnQobCksZD0oaStsLXMvcCkvMixoPShpK2wrcy9wKS8yLF89QXIuY29tcHV0ZVJlYWxSb290cygxLHAsZCksZz1Bci5jb21wdXRlUmVhbFJvb3RzKDEsLXAsaCk7cmV0dXJuIF8ubGVuZ3RoIT09MD8oX1swXSs9YyxfWzFdKz1jLGcubGVuZ3RoIT09MD8oZ1swXSs9YyxnWzFdKz1jLF9bMV08PWdbMF0/W19bMF0sX1sxXSxnWzBdLGdbMV1dOmdbMV08PV9bMF0/W2dbMF0sZ1sxXSxfWzBdLF9bMV1dOl9bMF0+PWdbMF0mJl9bMV08PWdbMV0/W2dbMF0sX1swXSxfWzFdLGdbMV1dOmdbMF0+PV9bMF0mJmdbMV08PV9bMV0/W19bMF0sZ1swXSxnWzFdLF9bMV1dOl9bMF0+Z1swXSYmX1swXTxnWzFdP1tnWzBdLF9bMF0sZ1sxXSxfWzFdXTpbX1swXSxnWzBdLF9bMV0sZ1sxXV0pOl8pOmcubGVuZ3RoIT09MD8oZ1swXSs9YyxnWzFdKz1jLGcpOltdfX1yZXR1cm5bXX1mdW5jdGlvbiBUZih0LGUsbixvKXtsZXQgcj1uKm4saT1lKmUscz10KnQsZj0tMiplLHU9bip0K2ktNCpvLGM9cypvLW4qZSp0K3IsbD1rcC5jb21wdXRlUmVhbFJvb3RzKDEsZix1LGMpO2lmKGwubGVuZ3RoPjApe2xldCBwPWxbMF0sZD1lLXAsaD1kKmQsXz10LzIsZz1kLzIsYj1oLTQqbyx3PWgrNCpNYXRoLmFicyhvKSxPPXMtNCpwLEU9cys0Kk1hdGguYWJzKHApLFQseDtpZihwPDB8fGIqRTxPKncpe2xldCBBPU1hdGguc3FydChPKTtUPUEvMix4PUE9PT0wPzA6KHQqZy1uKS9BfWVsc2V7bGV0IEE9TWF0aC5zcXJ0KGIpO1Q9QT09PTA/MDoodCpnLW4pL0EseD1BLzJ9bGV0IE0sTjtfPT09MCYmVD09PTA/KE09MCxOPTApOlAuc2lnbihfKT09PVAuc2lnbihUKT8oTT1fK1QsTj1wL00pOihOPV8tVCxNPXAvTik7bGV0IEYsSTtnPT09MCYmeD09PTA/KEY9MCxJPTApOlAuc2lnbihnKT09PVAuc2lnbih4KT8oRj1nK3gsST1vL0YpOihJPWcteCxGPW8vSSk7bGV0IHY9QXIuY29tcHV0ZVJlYWxSb290cygxLE0sRiksQj1Bci5jb21wdXRlUmVhbFJvb3RzKDEsTixJKTtpZih2Lmxlbmd0aCE9PTApcmV0dXJuIEIubGVuZ3RoIT09MD92WzFdPD1CWzBdP1t2WzBdLHZbMV0sQlswXSxCWzFdXTpCWzFdPD12WzBdP1tCWzBdLEJbMV0sdlswXSx2WzFdXTp2WzBdPj1CWzBdJiZ2WzFdPD1CWzFdP1tCWzBdLHZbMF0sdlsxXSxCWzFdXTpCWzBdPj12WzBdJiZCWzFdPD12WzFdP1t2WzBdLEJbMF0sQlsxXSx2WzFdXTp2WzBdPkJbMF0mJnZbMF08QlsxXT9bQlswXSx2WzBdLEJbMV0sdlsxXV06W3ZbMF0sQlswXSx2WzFdLEJbMV1dOnY7aWYoQi5sZW5ndGghPT0wKXJldHVybiBCfXJldHVybltdfXZhciBxaCxEYixCYj0kKCgpPT57TGIoKTtIdCgpO0t0KCk7VXAoKTtxaD17fTtxaC5jb21wdXRlRGlzY3JpbWluYW50PWZ1bmN0aW9uKHQsZSxuLG8scil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiByIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiZSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtsZXQgaT10KnQscz1pKnQsZj1lKmUsdT1mKmUsYz1uKm4sbD1jKm4scD1vKm8sZD1wKm8saD1yKnIsXz1oKnI7cmV0dXJuIGYqYypwLTQqdSpkLTQqdCpsKnArMTgqdCplKm4qZC0yNyppKnAqcCsyNTYqcypfK3IqKDE4KnUqbipvLTQqZipsKzE2KnQqYypjLTgwKnQqZSpjKm8tNip0KmYqcCsxNDQqaSpuKnApK2gqKDE0NCp0KmYqbi0yNypmKmYtMTI4KmkqYy0xOTIqaSplKm8pfTtxaC5jb21wdXRlUmVhbFJvb3RzPWZ1bmN0aW9uKHQsZSxuLG8scil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiByIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiZSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZihNYXRoLmFicyh0KTxQLkVQU0lMT04xNSlyZXR1cm4ga3AuY29tcHV0ZVJlYWxSb290cyhlLG4sbyxyKTtsZXQgaT1lL3Qscz1uL3QsZj1vL3QsdT1yL3QsYz1pPDA/MTowO3N3aXRjaChjKz1zPDA/YysxOmMsYys9ZjwwP2MrMTpjLGMrPXU8MD9jKzE6YyxjKXtjYXNlIDA6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTpyZXR1cm4gVGYoaSxzLGYsdSk7Y2FzZSAyOnJldHVybiBUZihpLHMsZix1KTtjYXNlIDM6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgNDpyZXR1cm4gVXIoaSxzLGYsdSk7Y2FzZSA1OnJldHVybiBUZihpLHMsZix1KTtjYXNlIDY6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgNzpyZXR1cm4gVXIoaSxzLGYsdSk7Y2FzZSA4OnJldHVybiBUZihpLHMsZix1KTtjYXNlIDk6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTA6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTE6cmV0dXJuIFRmKGkscyxmLHUpO2Nhc2UgMTI6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTM6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTQ6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTU6cmV0dXJuIFVyKGkscyxmLHUpO2RlZmF1bHQ6cmV0dXJufX07RGI9cWh9KTtmdW5jdGlvbiBHcCh0LGUpe2U9YS5jbG9uZShlPz9hLlpFUk8pLGEuZXF1YWxzKGUsYS5aRVJPKXx8YS5ub3JtYWxpemUoZSxlKSx0aGlzLm9yaWdpbj1hLmNsb25lKHQ/P2EuWkVSTyksdGhpcy5kaXJlY3Rpb249ZX12YXIgSnMsVnA9JCgoKT0+e0R0KCk7V3QoKTtmdCgpO0dwLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5vcmlnaW49YS5jbG9uZSh0Lm9yaWdpbiksZS5kaXJlY3Rpb249YS5jbG9uZSh0LmRpcmVjdGlvbiksZSk6bmV3IEdwKHQub3JpZ2luLHQuZGlyZWN0aW9uKX07R3AuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJheSIsdCkseS50eXBlT2YubnVtYmVyKCJ0IixlKSxtKG4pfHwobj1uZXcgYSksbj1hLm11bHRpcGx5QnlTY2FsYXIodC5kaXJlY3Rpb24sZSxuKSxhLmFkZCh0Lm9yaWdpbixuLG4pfTtKcz1HcH0pO2Z1bmN0aW9uIFVQKHQsZSxuLG8pe2xldCByPWUqZS00KnQqbjtpZihyPDApcmV0dXJuO2lmKHI+MCl7bGV0IHM9MS8oMip0KSxmPU1hdGguc3FydChyKSx1PSgtZStmKSpzLGM9KC1lLWYpKnM7cmV0dXJuIHU8Yz8oby5yb290MD11LG8ucm9vdDE9Yyk6KG8ucm9vdDA9YyxvLnJvb3QxPXUpLG99bGV0IGk9LWUvKDIqdCk7aWYoaSE9PTApcmV0dXJuIG8ucm9vdDA9by5yb290MT1pLG99ZnVuY3Rpb24gS2IodCxlLG4pe20obil8fChuPW5ldyBKcik7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixpPWUuY2VudGVyLHM9ZS5yYWRpdXMqZS5yYWRpdXMsZj1hLnN1YnRyYWN0KG8saSxxYiksdT1hLmRvdChyLHIpLGM9MiphLmRvdChyLGYpLGw9YS5tYWduaXR1ZGVTcXVhcmVkKGYpLXMscD1VUCh1LGMsbCxrUCk7aWYobShwKSlyZXR1cm4gbi5zdGFydD1wLnJvb3QwLG4uc3RvcD1wLnJvb3QxLG59ZnVuY3Rpb24gdGModCxlLG4pe2xldCBvPXQrZTtyZXR1cm4gUC5zaWduKHQpIT09UC5zaWduKGUpJiZNYXRoLmFicyhvL01hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSk8bj8wOm99dmFyIGduLExQLERQLHFiLFViLGtiLEJQLGtQLEdQLFZQLHpQLEtoLEdiLFZiLHpwLGpQLEhQLHFQLEtQLFdQLFhQLHpiLGpiLEhiLFlQLCRQLFpQLHlvLGVjPSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpO1dsKCk7S3QoKTtVbigpO1VwKCk7QmIoKTtWcCgpO2duPXt9O2duLnJheVBsYW5lPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwbGFuZSBpcyByZXF1aXJlZC4iKTttKG4pfHwobj1uZXcgYSk7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixpPWUubm9ybWFsLHM9YS5kb3QoaSxyKTtpZihNYXRoLmFicyhzKTxQLkVQU0lMT04xNSlyZXR1cm47bGV0IGY9KC1lLmRpc3RhbmNlLWEuZG90KGksbykpL3M7aWYoIShmPDApKXJldHVybiBuPWEubXVsdGlwbHlCeVNjYWxhcihyLGYsbiksYS5hZGQobyxuLG4pfTtMUD1uZXcgYSxEUD1uZXcgYSxxYj1uZXcgYSxVYj1uZXcgYSxrYj1uZXcgYTtnbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0obykpdGhyb3cgbmV3IEQoInAyIGlzIHJlcXVpcmVkLiIpO3I9cj8/ITE7bGV0IGk9dC5vcmlnaW4scz10LmRpcmVjdGlvbixmPWEuc3VidHJhY3QobixlLExQKSx1PWEuc3VidHJhY3QobyxlLERQKSxjPWEuY3Jvc3Mocyx1LHFiKSxsPWEuZG90KGYsYykscCxkLGgsXyxnO2lmKHIpe2lmKGw8UC5FUFNJTE9ONnx8KHA9YS5zdWJ0cmFjdChpLGUsVWIpLGg9YS5kb3QocCxjKSxoPDB8fGg+bCl8fChkPWEuY3Jvc3MocCxmLGtiKSxfPWEuZG90KHMsZCksXzwwfHxoK18+bCkpcmV0dXJuO2c9YS5kb3QodSxkKS9sfWVsc2V7aWYoTWF0aC5hYnMobCk8UC5FUFNJTE9ONilyZXR1cm47bGV0IGI9MS9sO2lmKHA9YS5zdWJ0cmFjdChpLGUsVWIpLGg9YS5kb3QocCxjKSpiLGg8MHx8aD4xfHwoZD1hLmNyb3NzKHAsZixrYiksXz1hLmRvdChzLGQpKmIsXzwwfHxoK18+MSkpcmV0dXJuO2c9YS5kb3QodSxkKSpifXJldHVybiBnfTtnbi5yYXlUcmlhbmdsZT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHM9Z24ucmF5VHJpYW5nbGVQYXJhbWV0cmljKHQsZSxuLG8scik7aWYoISghbShzKXx8czwwKSlyZXR1cm4gbShpKXx8KGk9bmV3IGEpLGEubXVsdGlwbHlCeVNjYWxhcih0LmRpcmVjdGlvbixzLGkpLGEuYWRkKHQub3JpZ2luLGksaSl9O0JQPW5ldyBKcztnbi5saW5lU2VnbWVudFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2MCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgidjEgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInAwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwMSBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgicDIgaXMgcmVxdWlyZWQuIik7bGV0IGY9QlA7YS5jbG9uZSh0LGYub3JpZ2luKSxhLnN1YnRyYWN0KGUsdCxmLmRpcmVjdGlvbiksYS5ub3JtYWxpemUoZi5kaXJlY3Rpb24sZi5kaXJlY3Rpb24pO2xldCB1PWduLnJheVRyaWFuZ2xlUGFyYW1ldHJpYyhmLG4sbyxyLGkpO2lmKCEoIW0odSl8fHU8MHx8dT5hLmRpc3RhbmNlKHQsZSkpKXJldHVybiBtKHMpfHwocz1uZXcgYSksYS5tdWx0aXBseUJ5U2NhbGFyKGYuZGlyZWN0aW9uLHUscyksYS5hZGQoZi5vcmlnaW4scyxzKX07a1A9e3Jvb3QwOjAscm9vdDE6MH07Z24ucmF5U3BoZXJlPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzcGhlcmUgaXMgcmVxdWlyZWQuIik7aWYobj1LYih0LGUsbiksISghbShuKXx8bi5zdG9wPDApKXJldHVybiBuLnN0YXJ0PU1hdGgubWF4KG4uc3RhcnQsMCksbn07R1A9bmV3IEpzO2duLmxpbmVTZWdtZW50U3BoZXJlPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtsZXQgcj1HUDthLmNsb25lKHQsci5vcmlnaW4pO2xldCBpPWEuc3VidHJhY3QoZSx0LHIuZGlyZWN0aW9uKSxzPWEubWFnbml0dWRlKGkpO2lmKGEubm9ybWFsaXplKGksaSksbz1LYihyLG4sbyksISghbShvKXx8by5zdG9wPDB8fG8uc3RhcnQ+cykpcmV0dXJuIG8uc3RhcnQ9TWF0aC5tYXgoby5zdGFydCwwKSxvLnN0b3A9TWF0aC5taW4oby5zdG9wLHMpLG99O1ZQPW5ldyBhLHpQPW5ldyBhO2duLnJheUVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImVsbGlwc29pZCBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLm9uZU92ZXJSYWRpaSxvPWEubXVsdGlwbHlDb21wb25lbnRzKG4sdC5vcmlnaW4sVlApLHI9YS5tdWx0aXBseUNvbXBvbmVudHMobix0LmRpcmVjdGlvbix6UCksaT1hLm1hZ25pdHVkZVNxdWFyZWQobykscz1hLmRvdChvLHIpLGYsdSxjLGwscDtpZihpPjEpe2lmKHM+PTApcmV0dXJuO2xldCBkPXMqcztpZihmPWktMSx1PWEubWFnbml0dWRlU3F1YXJlZChyKSxjPXUqZixkPGMpcmV0dXJuO2lmKGQ+Yyl7bD1zKnMtYyxwPS1zK01hdGguc3FydChsKTtsZXQgXz1wL3UsZz1mL3A7cmV0dXJuIF88Zz9uZXcgSnIoXyxnKTp7c3RhcnQ6ZyxzdG9wOl99fWxldCBoPU1hdGguc3FydChmL3UpO3JldHVybiBuZXcgSnIoaCxoKX1lbHNlIGlmKGk8MSlyZXR1cm4gZj1pLTEsdT1hLm1hZ25pdHVkZVNxdWFyZWQociksYz11KmYsbD1zKnMtYyxwPS1zK01hdGguc3FydChsKSxuZXcgSnIoMCxwL3UpO2lmKHM8MClyZXR1cm4gdT1hLm1hZ25pdHVkZVNxdWFyZWQociksbmV3IEpyKDAsLXMvdSl9O2duLnF1YWRyYXRpY1ZlY3RvckV4cHJlc3Npb249ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT1vKm8scz1yKnIsZj0odFtaLkNPTFVNTjFST1cxXS10W1ouQ09MVU1OMlJPVzJdKSpzLHU9cioobyp0Yyh0W1ouQ09MVU1OMVJPVzBdLHRbWi5DT0xVTU4wUk9XMV0sUC5FUFNJTE9OMTUpK2UueSksYz10W1ouQ09MVU1OMFJPVzBdKmkrdFtaLkNPTFVNTjJST1cyXSpzK28qZS54K24sbD1zKnRjKHRbWi5DT0xVTU4yUk9XMV0sdFtaLkNPTFVNTjFST1cyXSxQLkVQU0lMT04xNSkscD1yKihvKnRjKHRbWi5DT0xVTU4yUk9XMF0sdFtaLkNPTFVNTjBST1cyXSkrZS56KSxkLGg9W107aWYocD09PTAmJmw9PT0wKXtpZihkPUFyLmNvbXB1dGVSZWFsUm9vdHMoZix1LGMpLGQubGVuZ3RoPT09MClyZXR1cm4gaDtsZXQgRj1kWzBdLEk9TWF0aC5zcXJ0KE1hdGgubWF4KDEtRipGLDApKTtpZihoLnB1c2gobmV3IGEobyxyKkYsciotSSkpLGgucHVzaChuZXcgYShvLHIqRixyKkkpKSxkLmxlbmd0aD09PTIpe2xldCB2PWRbMV0sQj1NYXRoLnNxcnQoTWF0aC5tYXgoMS12KnYsMCkpO2gucHVzaChuZXcgYShvLHIqdixyKi1CKSksaC5wdXNoKG5ldyBhKG8scip2LHIqQikpfXJldHVybiBofWxldCBfPXAqcCxnPWwqbCxiPWYqZix3PXAqbCxPPWIrZyxFPTIqKHUqZit3KSxUPTIqYypmK3UqdS1nK18seD0yKihjKnUtdyksTT1jKmMtXztpZihPPT09MCYmRT09PTAmJlQ9PT0wJiZ4PT09MClyZXR1cm4gaDtkPURiLmNvbXB1dGVSZWFsUm9vdHMoTyxFLFQseCxNKTtsZXQgTj1kLmxlbmd0aDtpZihOPT09MClyZXR1cm4gaDtmb3IobGV0IEY9MDtGPE47KytGKXtsZXQgST1kW0ZdLHY9SSpJLEI9TWF0aC5tYXgoMS12LDApLEE9TWF0aC5zcXJ0KEIpLFM7UC5zaWduKGYpPT09UC5zaWduKGMpP1M9dGMoZip2K2MsdSpJLFAuRVBTSUxPTjEyKTpQLnNpZ24oYyk9PT1QLnNpZ24odSpJKT9TPXRjKGYqdix1KkkrYyxQLkVQU0lMT04xMik6Uz10YyhmKnYrdSpJLGMsUC5FUFNJTE9OMTIpO2xldCBDPXRjKGwqSSxwLFAuRVBTSUxPTjE1KSxMPVMqQztMPDA/aC5wdXNoKG5ldyBhKG8scipJLHIqQSkpOkw+MD9oLnB1c2gobmV3IGEobyxyKkksciotQSkpOkEhPT0wPyhoLnB1c2gobmV3IGEobyxyKkksciotQSkpLGgucHVzaChuZXcgYShvLHIqSSxyKkEpKSwrK0YpOmgucHVzaChuZXcgYShvLHIqSSxyKkEpKX1yZXR1cm4gaH07S2g9bmV3IGEsR2I9bmV3IGEsVmI9bmV3IGEsenA9bmV3IGEsalA9bmV3IGEsSFA9bmV3IFoscVA9bmV3IFosS1A9bmV3IFosV1A9bmV3IFosWFA9bmV3IFosemI9bmV3IFosamI9bmV3IFosSGI9bmV3IGEsWVA9bmV3IGEsJFA9bmV3IGN0O2duLmdyYXppbmdBbHRpdHVkZUxvY2F0aW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZWxsaXBzb2lkIGlzIHJlcXVpcmVkLiIpO2xldCBuPXQub3JpZ2luLG89dC5kaXJlY3Rpb247aWYoIWEuZXF1YWxzKG4sYS5aRVJPKSl7bGV0IE09ZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobixLaCk7aWYoYS5kb3QobyxNKT49MClyZXR1cm4gbn1sZXQgcj1tKHRoaXMucmF5RWxsaXBzb2lkKHQsZSkpLGk9ZS50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UobyxLaCkscz1hLm5vcm1hbGl6ZShpLGkpLGY9YS5tb3N0T3J0aG9nb25hbEF4aXMoaSx6cCksdT1hLm5vcm1hbGl6ZShhLmNyb3NzKGYscyxHYiksR2IpLGM9YS5ub3JtYWxpemUoYS5jcm9zcyhzLHUsVmIpLFZiKSxsPUhQO2xbMF09cy54LGxbMV09cy55LGxbMl09cy56LGxbM109dS54LGxbNF09dS55LGxbNV09dS56LGxbNl09Yy54LGxbN109Yy55LGxbOF09Yy56O2xldCBwPVoudHJhbnNwb3NlKGwscVApLGQ9Wi5mcm9tU2NhbGUoZS5yYWRpaSxLUCksaD1aLmZyb21TY2FsZShlLm9uZU92ZXJSYWRpaSxXUCksXz1YUDtfWzBdPTAsX1sxXT0tby56LF9bMl09by55LF9bM109by56LF9bNF09MCxfWzVdPS1vLngsX1s2XT0tby55LF9bN109by54LF9bOF09MDtsZXQgZz1aLm11bHRpcGx5KFoubXVsdGlwbHkocCxoLHpiKSxfLHpiKSxiPVoubXVsdGlwbHkoWi5tdWx0aXBseShnLGQsamIpLGwsamIpLHc9Wi5tdWx0aXBseUJ5VmVjdG9yKGcsbixqUCksTz1nbi5xdWFkcmF0aWNWZWN0b3JFeHByZXNzaW9uKGIsYS5uZWdhdGUodyxLaCksMCwwLDEpLEUsVCx4PU8ubGVuZ3RoO2lmKHg+MCl7bGV0IE09YS5jbG9uZShhLlpFUk8sWVApLE49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgST0wO0k8eDsrK0kpe0U9Wi5tdWx0aXBseUJ5VmVjdG9yKGQsWi5tdWx0aXBseUJ5VmVjdG9yKGwsT1tJXSxIYiksSGIpO2xldCB2PWEubm9ybWFsaXplKGEuc3VidHJhY3QoRSxuLHpwKSx6cCksQj1hLmRvdCh2LG8pO0I+TiYmKE49QixNPWEuY2xvbmUoRSxNKSl9bGV0IEY9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhNLCRQKTtyZXR1cm4gTj1QLmNsYW1wKE4sMCwxKSxUPWEubWFnbml0dWRlKGEuc3VidHJhY3QoTSxuLHpwKSkqTWF0aC5zcXJ0KDEtTipOKSxUPXI/LVQ6VCxGLmhlaWdodD1ULGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRixuZXcgYSl9fTtaUD1uZXcgYTtnbi5saW5lU2VnbWVudFBsYW5lPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJlbmRQb2ludDAgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImVuZFBvaW50MSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicGxhbmUgaXMgcmVxdWlyZWQuIik7bShvKXx8KG89bmV3IGEpO2xldCByPWEuc3VidHJhY3QoZSx0LFpQKSxpPW4ubm9ybWFsLHM9YS5kb3QoaSxyKTtpZihNYXRoLmFicyhzKTxQLkVQU0lMT042KXJldHVybjtsZXQgZj1hLmRvdChpLHQpLHU9LShuLmRpc3RhbmNlK2YpL3M7aWYoISh1PDB8fHU+MSkpcmV0dXJuIGEubXVsdGlwbHlCeVNjYWxhcihyLHUsbyksYS5hZGQodCxvLG8pLG99O2duLnRyaWFuZ2xlUGxhbmVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCl8fCFtKGUpfHwhbShuKXx8IW0obykpdGhyb3cgbmV3IEQoInAwLCBwMSwgcDIsIGFuZCBwbGFuZSBhcmUgcmVxdWlyZWQuIik7bGV0IHI9by5ub3JtYWwsaT1vLmRpc3RhbmNlLHM9YS5kb3Qocix0KStpPDAsZj1hLmRvdChyLGUpK2k8MCx1PWEuZG90KHIsbikraTwwLGM9MDtjKz1zPzE6MCxjKz1mPzE6MCxjKz11PzE6MDtsZXQgbCxwO2lmKChjPT09MXx8Yz09PTIpJiYobD1uZXcgYSxwPW5ldyBhKSxjPT09MSl7aWYocylyZXR1cm4gZ24ubGluZVNlZ21lbnRQbGFuZSh0LGUsbyxsKSxnbi5saW5lU2VnbWVudFBsYW5lKHQsbixvLHApLHtwb3NpdGlvbnM6W3QsZSxuLGwscF0saW5kaWNlczpbMCwzLDQsMSwyLDQsMSw0LDNdfTtpZihmKXJldHVybiBnbi5saW5lU2VnbWVudFBsYW5lKGUsbixvLGwpLGduLmxpbmVTZWdtZW50UGxhbmUoZSx0LG8scCkse3Bvc2l0aW9uczpbdCxlLG4sbCxwXSxpbmRpY2VzOlsxLDMsNCwyLDAsNCwyLDQsM119O2lmKHUpcmV0dXJuIGduLmxpbmVTZWdtZW50UGxhbmUobix0LG8sbCksZ24ubGluZVNlZ21lbnRQbGFuZShuLGUsbyxwKSx7cG9zaXRpb25zOlt0LGUsbixsLHBdLGluZGljZXM6WzIsMyw0LDAsMSw0LDAsNCwzXX19ZWxzZSBpZihjPT09MilpZihzKWlmKGYpe2lmKCF1KXJldHVybiBnbi5saW5lU2VnbWVudFBsYW5lKHQsbixvLGwpLGduLmxpbmVTZWdtZW50UGxhbmUoZSxuLG8scCkse3Bvc2l0aW9uczpbdCxlLG4sbCxwXSxpbmRpY2VzOlswLDEsNCwwLDQsMywyLDMsNF19fWVsc2UgcmV0dXJuIGduLmxpbmVTZWdtZW50UGxhbmUobixlLG8sbCksZ24ubGluZVNlZ21lbnRQbGFuZSh0LGUsbyxwKSx7cG9zaXRpb25zOlt0LGUsbixsLHBdLGluZGljZXM6WzIsMCw0LDIsNCwzLDEsMyw0XX07ZWxzZSByZXR1cm4gZ24ubGluZVNlZ21lbnRQbGFuZShlLHQsbyxsKSxnbi5saW5lU2VnbWVudFBsYW5lKG4sdCxvLHApLHtwb3NpdGlvbnM6W3QsZSxuLGwscF0saW5kaWNlczpbMSwyLDQsMSw0LDMsMCwzLDRdfX07eW89Z259KTtmdW5jdGlvbiBvbyh0LGUpe2lmKHkudHlwZU9mLm9iamVjdCgibm9ybWFsIix0KSwhUC5lcXVhbHNFcHNpbG9uKGEubWFnbml0dWRlKHQpLDEsUC5FUFNJTE9ONikpdGhyb3cgbmV3IEQoIm5vcm1hbCBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7eS50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsZSksdGhpcy5ub3JtYWw9YS5jbG9uZSh0KSx0aGlzLmRpc3RhbmNlPWV9dmFyIFFQLEpQLHRNLGVNLG5NLG9uLHVzPSQoKCk9PntEdCgpO19yKCk7V3QoKTtmdCgpO0h0KCk7S3QoKTtrbigpO29vLmZyb21Qb2ludE5vcm1hbD1mdW5jdGlvbih0LGUsbil7aWYoeS50eXBlT2Yub2JqZWN0KCJwb2ludCIsdCkseS50eXBlT2Yub2JqZWN0KCJub3JtYWwiLGUpLCFQLmVxdWFsc0Vwc2lsb24oYS5tYWduaXR1ZGUoZSksMSxQLkVQU0lMT042KSl0aHJvdyBuZXcgRCgibm9ybWFsIG11c3QgYmUgbm9ybWFsaXplZC4iKTtsZXQgbz0tYS5kb3QoZSx0KTtyZXR1cm4gbShuKT8oYS5jbG9uZShlLG4ubm9ybWFsKSxuLmRpc3RhbmNlPW8sbik6bmV3IG9vKGUsbyl9O1FQPW5ldyBhO29vLmZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjb2VmZmljaWVudHMiLHQpO2xldCBuPWEuZnJvbUNhcnRlc2lhbjQodCxRUCksbz10Lnc7aWYoIVAuZXF1YWxzRXBzaWxvbihhLm1hZ25pdHVkZShuKSwxLFAuRVBTSUxPTjYpKXRocm93IG5ldyBEKCJub3JtYWwgbXVzdCBiZSBub3JtYWxpemVkLiIpO3JldHVybiBtKGUpPyhhLmNsb25lKG4sZS5ub3JtYWwpLGUuZGlzdGFuY2U9byxlKTpuZXcgb28obixvKX07b28uZ2V0UG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSx5LnR5cGVPZi5vYmplY3QoInBvaW50IixlKSxhLmRvdCh0Lm5vcm1hbCxlKSt0LmRpc3RhbmNlfTtKUD1uZXcgYTtvby5wcm9qZWN0UG9pbnRPbnRvUGxhbmU9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgicGxhbmUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG0obil8fChuPW5ldyBhKTtsZXQgbz1vby5nZXRQb2ludERpc3RhbmNlKHQsZSkscj1hLm11bHRpcGx5QnlTY2FsYXIodC5ub3JtYWwsbyxKUCk7cmV0dXJuIGEuc3VidHJhY3QoZSxyLG4pfTt0TT1uZXcgc3QsZU09bmV3IG1lLG5NPW5ldyBhO29vLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpO2xldCBvPXQubm9ybWFsLHI9dC5kaXN0YW5jZSxpPXN0LmludmVyc2VUcmFuc3Bvc2UoZSx0TSkscz1tZS5mcm9tRWxlbWVudHMoby54LG8ueSxvLnoscixlTSk7cz1zdC5tdWx0aXBseUJ5VmVjdG9yKGkscyxzKTtsZXQgZj1hLmZyb21DYXJ0ZXNpYW40KHMsbk0pO3JldHVybiBzPW1lLmRpdmlkZUJ5U2NhbGFyKHMsYS5tYWduaXR1ZGUoZikscyksb28uZnJvbUNhcnRlc2lhbjQocyxuKX07b28uY2xvbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCksbShlKT8oYS5jbG9uZSh0Lm5vcm1hbCxlLm5vcm1hbCksZS5kaXN0YW5jZT10LmRpc3RhbmNlLGUpOm5ldyBvbyh0Lm5vcm1hbCx0LmRpc3RhbmNlKX07b28uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC5kaXN0YW5jZT09PWUuZGlzdGFuY2UmJmEuZXF1YWxzKHQubm9ybWFsLGUubm9ybWFsKX07b28uT1JJR0lOX1hZX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IG9vKGEuVU5JVF9aLDApKTtvby5PUklHSU5fWVpfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgb28oYS5VTklUX1gsMCkpO29vLk9SSUdJTl9aWF9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBvbyhhLlVOSVRfWSwwKSk7b249b299KTt2YXIgV2gsV2IsWGI9JCgoKT0+e3llKCk7ZnQoKTtIdCgpO1doPXt9O1doLmNhbGN1bGF0ZUFDTVI9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5pbmRpY2VzLG49dC5tYXhpbXVtSW5kZXgsbz10LmNhY2hlU2l6ZT8/MjQ7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IHI9ZS5sZW5ndGg7aWYocjwzfHxyJTMhPT0wKXRocm93IG5ldyBEKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYobjw9MCl0aHJvdyBuZXcgRCgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobzwzKXRocm93IG5ldyBEKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2lmKCFtKG4pKXtuPTA7bGV0IGY9MCx1PWVbZl07Zm9yKDtmPHI7KXU+biYmKG49dSksKytmLHU9ZVtmXX1sZXQgaT1bXTtmb3IobGV0IGY9MDtmPG4rMTtmKyspaVtmXT0wO2xldCBzPW8rMTtmb3IobGV0IGY9MDtmPHI7KytmKXMtaVtlW2ZdXT5vJiYoaVtlW2ZdXT1zLCsrcyk7cmV0dXJuKHMtbysxKS8oci8zKX07V2gudGlwc2lmeT1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LmluZGljZXMsbj10Lm1heGltdW1JbmRleCxvPXQuY2FjaGVTaXplPz8yNCxyO2Z1bmN0aW9uIGkoQixBLFMsQyl7Zm9yKDtBLmxlbmd0aD49MTspe2xldCBMPUFbQS5sZW5ndGgtMV07aWYoQS5zcGxpY2UoQS5sZW5ndGgtMSwxKSxCW0xdLm51bUxpdmVUcmlhbmdsZXM+MClyZXR1cm4gTH1mb3IoO3I8Qzspe2lmKEJbcl0ubnVtTGl2ZVRyaWFuZ2xlcz4wKXJldHVybisrcixyLTE7KytyfXJldHVybi0xfWZ1bmN0aW9uIHMoQixBLFMsQyxMLHosail7bGV0IGs9LTEscSxXPS0xLFI9MDtmb3IoO1I8Uy5sZW5ndGg7KXtsZXQgbnQ9U1tSXTtDW250XS5udW1MaXZlVHJpYW5nbGVzJiYocT0wLEwtQ1tudF0udGltZVN0YW1wKzIqQ1tudF0ubnVtTGl2ZVRyaWFuZ2xlczw9QSYmKHE9TC1DW250XS50aW1lU3RhbXApLChxPld8fFc9PT0tMSkmJihXPXEsaz1udCkpLCsrUn1yZXR1cm4gaz09PS0xP2koQyx6LEIsaik6a31pZighbShlKSl0aHJvdyBuZXcgRCgiaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtsZXQgZj1lLmxlbmd0aDtpZihmPDN8fGYlMyE9PTApdGhyb3cgbmV3IEQoImluZGljZXMgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aHJlZS4iKTtpZihuPD0wKXRocm93IG5ldyBEKCJtYXhpbXVtSW5kZXggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihvPDMpdGhyb3cgbmV3IEQoImNhY2hlU2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0d28uIik7bGV0IHU9MCxjPTAsbD1lW2NdLHA9ZjtpZihtKG4pKXU9bisxO2Vsc2V7Zm9yKDtjPHA7KWw+dSYmKHU9bCksKytjLGw9ZVtjXTtpZih1PT09LTEpcmV0dXJuIDA7Kyt1fWxldCBkPVtdLGg7Zm9yKGg9MDtoPHU7aCsrKWRbaF09e251bUxpdmVUcmlhbmdsZXM6MCx0aW1lU3RhbXA6MCx2ZXJ0ZXhUcmlhbmdsZXM6W119O2M9MDtsZXQgXz0wO2Zvcig7YzxwOylkW2VbY11dLnZlcnRleFRyaWFuZ2xlcy5wdXNoKF8pLCsrZFtlW2NdXS5udW1MaXZlVHJpYW5nbGVzLGRbZVtjKzFdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChfKSwrK2RbZVtjKzFdXS5udW1MaXZlVHJpYW5nbGVzLGRbZVtjKzJdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChfKSwrK2RbZVtjKzJdXS5udW1MaXZlVHJpYW5nbGVzLCsrXyxjKz0zO2xldCBnPTAsYj1vKzE7cj0xO2xldCB3PVtdLE89W10sRSxULHg9MCxNPVtdLE49Zi8zLEY9W107Zm9yKGg9MDtoPE47aCsrKUZbaF09ITE7bGV0IEksdjtmb3IoO2chPT0tMTspe3c9W10sVD1kW2ddLHY9VC52ZXJ0ZXhUcmlhbmdsZXMubGVuZ3RoO2ZvcihsZXQgQj0wO0I8djsrK0IpaWYoXz1ULnZlcnRleFRyaWFuZ2xlc1tCXSwhRltfXSl7RltfXT0hMCxjPV8rXytfO2ZvcihsZXQgQT0wO0E8MzsrK0EpST1lW2NdLHcucHVzaChJKSxPLnB1c2goSSksTVt4XT1JLCsreCxFPWRbSV0sLS1FLm51bUxpdmVUcmlhbmdsZXMsYi1FLnRpbWVTdGFtcD5vJiYoRS50aW1lU3RhbXA9YiwrK2IpLCsrY31nPXMoZSxvLHcsZCxiLE8sdSl9cmV0dXJuIE19O1diPVdofSk7ZnVuY3Rpb24gWXAodCxlLG4sbyxyKXt0W2UrK109bix0W2UrK109byx0W2UrK109byx0W2UrK109cix0W2UrK109cix0W2VdPW59ZnVuY3Rpb24gb00odCl7bGV0IGU9dC5sZW5ndGgsbj1lLzMqNixvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxuKSxyPTA7Zm9yKGxldCBpPTA7aTxlO2krPTMscis9NilZcChvLHIsdFtpXSx0W2krMV0sdFtpKzJdKTtyZXR1cm4gb31mdW5jdGlvbiByTSh0KXtsZXQgZT10Lmxlbmd0aDtpZihlPj0zKXtsZXQgbj0oZS0yKSo2LG89THQuY3JlYXRlVHlwZWRBcnJheShlLG4pO1lwKG8sMCx0WzBdLHRbMV0sdFsyXSk7bGV0IHI9Njtmb3IobGV0IGk9MztpPGU7KytpLHIrPTYpWXAobyxyLHRbaS0xXSx0W2ldLHRbaS0yXSk7cmV0dXJuIG99cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBpTSh0KXtpZih0Lmxlbmd0aD4wKXtsZXQgZT10Lmxlbmd0aC0xLG49KGUtMSkqNixvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxuKSxyPXRbMF0saT0wO2ZvcihsZXQgcz0xO3M8ZTsrK3MsaSs9NilZcChvLGkscix0W3NdLHRbcysxXSk7cmV0dXJuIG99cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBZYih0KXtsZXQgZT17fTtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZtKHRbbl0pJiZtKHRbbl0udmFsdWVzKSl7bGV0IG89dFtuXTtlW25dPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6by5jb21wb25lbnREYXRhdHlwZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOm8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxub3JtYWxpemU6by5ub3JtYWxpemUsdmFsdWVzOltdfSl9cmV0dXJuIGV9ZnVuY3Rpb24gc00odCxlLG4pe2ZvcihsZXQgbyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobykmJm0oZVtvXSkmJm0oZVtvXS52YWx1ZXMpKXtsZXQgcj1lW29dO2ZvcihsZXQgaT0wO2k8ci5jb21wb25lbnRzUGVyQXR0cmlidXRlOysraSl0W29dLnZhbHVlcy5wdXNoKHIudmFsdWVzW24qci5jb21wb25lbnRzUGVyQXR0cmlidXRlK2ldKX19ZnVuY3Rpb24gWWgodCxlKXtpZihtKGUpKXtsZXQgbj1lLnZhbHVlcyxvPW4ubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKz0zKWEudW5wYWNrKG4scixHciksc3QubXVsdGlwbHlCeVBvaW50KHQsR3IsR3IpLGEucGFjayhHcixuLHIpfX1mdW5jdGlvbiAkaCh0LGUpe2lmKG0oZSkpe2xldCBuPWUudmFsdWVzLG89bi5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrPTMpYS51bnBhY2sobixyLEdyKSxaLm11bHRpcGx5QnlWZWN0b3IodCxHcixHciksR3I9YS5ub3JtYWxpemUoR3IsR3IpLGEucGFjayhHcixuLHIpfX1mdW5jdGlvbiBhTSh0LGUpe2xldCBuPXQubGVuZ3RoLG89e30scj10WzBdW2VdLmF0dHJpYnV0ZXMsaTtmb3IoaSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoaSkmJm0ocltpXSkmJm0ocltpXS52YWx1ZXMpKXtsZXQgcz1yW2ldLGY9cy52YWx1ZXMubGVuZ3RoLHU9ITA7Zm9yKGxldCBjPTE7YzxuOysrYyl7bGV0IGw9dFtjXVtlXS5hdHRyaWJ1dGVzW2ldO2lmKCFtKGwpfHxzLmNvbXBvbmVudERhdGF0eXBlIT09bC5jb21wb25lbnREYXRhdHlwZXx8cy5jb21wb25lbnRzUGVyQXR0cmlidXRlIT09bC5jb21wb25lbnRzUGVyQXR0cmlidXRlfHxzLm5vcm1hbGl6ZSE9PWwubm9ybWFsaXplKXt1PSExO2JyZWFrfWYrPWwudmFsdWVzLmxlbmd0aH11JiYob1tpXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOnMuY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOnMubm9ybWFsaXplLHZhbHVlczpldC5jcmVhdGVUeXBlZEFycmF5KHMuY29tcG9uZW50RGF0YXR5cGUsZil9KSl9cmV0dXJuIG99ZnVuY3Rpb24gWmgodCxlKXtsZXQgbj10Lmxlbmd0aCxvLHIsaSxzLGY9dFswXS5tb2RlbE1hdHJpeCx1PW0odFswXVtlXS5pbmRpY2VzKSxjPXRbMF1bZV0ucHJpbWl0aXZlVHlwZTtmb3Iocj0xO3I8bjsrK3Ipe2lmKCFzdC5lcXVhbHModFtyXS5tb2RlbE1hdHJpeCxmKSl0aHJvdyBuZXcgRCgiQWxsIGluc3RhbmNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgbW9kZWxNYXRyaXguIik7aWYobSh0W3JdW2VdLmluZGljZXMpIT09dSl0aHJvdyBuZXcgRCgiQWxsIGluc3RhbmNlIGdlb21ldHJpZXMgbXVzdCBoYXZlIGFuIGluZGljZXMgb3Igbm90IGhhdmUgb25lLiIpO2lmKHRbcl1bZV0ucHJpbWl0aXZlVHlwZSE9PWMpdGhyb3cgbmV3IEQoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmltaXRpdmVUeXBlLiIpfWxldCBsPWFNKHQsZSkscCxkLGg7Zm9yKG8gaW4gbClpZihsLmhhc093blByb3BlcnR5KG8pKWZvcihwPWxbb10udmFsdWVzLHM9MCxyPTA7cjxuOysrcilmb3IoZD10W3JdW2VdLmF0dHJpYnV0ZXNbb10udmFsdWVzLGg9ZC5sZW5ndGgsaT0wO2k8aDsrK2kpcFtzKytdPWRbaV07bGV0IF87aWYodSl7bGV0IE89MDtmb3Iocj0wO3I8bjsrK3IpTys9dFtyXVtlXS5pbmRpY2VzLmxlbmd0aDtsZXQgRT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyhuZXcgVXQoe2F0dHJpYnV0ZXM6bCxwcmltaXRpdmVUeXBlOkJ0LlBPSU5UU30pKSxUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoRSxPKSx4PTAsTT0wO2ZvcihyPTA7cjxuOysrcil7bGV0IE49dFtyXVtlXS5pbmRpY2VzLEY9Ti5sZW5ndGg7Zm9yKHM9MDtzPEY7KytzKVRbeCsrXT1NK05bc107TSs9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModFtyXVtlXSl9Xz1UfWxldCBnPW5ldyBhLGI9MCx3O2ZvcihyPTA7cjxuOysrcil7aWYodz10W3JdW2VdLmJvdW5kaW5nU3BoZXJlLCFtKHcpKXtnPXZvaWQgMDticmVha31hLmFkZCh3LmNlbnRlcixnLGcpfWlmKG0oZykpZm9yKGEuZGl2aWRlQnlTY2FsYXIoZyxuLGcpLHI9MDtyPG47KytyKXt3PXRbcl1bZV0uYm91bmRpbmdTcGhlcmU7bGV0IE89YS5tYWduaXR1ZGUoYS5zdWJ0cmFjdCh3LmNlbnRlcixnLGZNKSkrdy5yYWRpdXM7Tz5iJiYoYj1PKX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmwsaW5kaWNlczpfLHByaW1pdGl2ZVR5cGU6Yyxib3VuZGluZ1NwaGVyZTptKGcpP25ldyBBdChnLGIpOnZvaWQgMH0pfWZ1bmN0aW9uIHBNKHQpe2lmKG0odC5pbmRpY2VzKSlyZXR1cm4gdDtsZXQgZT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDMpdGhyb3cgbmV3IEQoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0aHJlZS4iKTtpZihlJTMhPT0wKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aHJlZS4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsZSk7Zm9yKGxldCBvPTA7bzxlOysrbyluW29dPW87cmV0dXJuIHQuaW5kaWNlcz1uLHR9ZnVuY3Rpb24gZE0odCl7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgdGhyZWUuIik7bGV0IG49THQuY3JlYXRlVHlwZWRBcnJheShlLChlLTIpKjMpO25bMF09MSxuWzFdPTAsblsyXT0yO2xldCBvPTM7Zm9yKGxldCByPTM7cjxlOysrciluW28rK109ci0xLG5bbysrXT0wLG5bbysrXT1yO3JldHVybiB0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gbU0odCl7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgMy4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7blswXT0wLG5bMV09MSxuWzJdPTIsZT4zJiYoblszXT0wLG5bNF09MixuWzVdPTMpO2xldCBvPTY7Zm9yKGxldCByPTM7cjxlLTE7cis9MiluW28rK109cixuW28rK109ci0xLG5bbysrXT1yKzEscisyPGUmJihuW28rK109cixuW28rK109cisxLG5bbysrXT1yKzIpO3JldHVybiB0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gaE0odCl7aWYobSh0LmluZGljZXMpKXJldHVybiB0O2xldCBlPVV0LmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgRCgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtpZihlJTIhPT0wKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyLiIpO2xldCBuPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxlKTtmb3IobGV0IG89MDtvPGU7KytvKW5bb109bztyZXR1cm4gdC5pbmRpY2VzPW4sdH1mdW5jdGlvbiBfTSh0KXtsZXQgZT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDIpdGhyb3cgbmV3IEQoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0d28uIik7bGV0IG49THQuY3JlYXRlVHlwZWRBcnJheShlLChlLTEpKjIpO25bMF09MCxuWzFdPTE7bGV0IG89Mjtmb3IobGV0IHI9MjtyPGU7KytyKW5bbysrXT1yLTEsbltvKytdPXI7cmV0dXJuIHQuaW5kaWNlcz1uLHQucHJpbWl0aXZlVHlwZT1CdC5MSU5FUyx0fWZ1bmN0aW9uIHlNKHQpe2xldCBlPVV0LmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgRCgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsZSoyKTtuWzBdPTAsblsxXT0xO2xldCBvPTI7Zm9yKGxldCByPTI7cjxlOysrciluW28rK109ci0xLG5bbysrXT1yO3JldHVybiBuW28rK109ZS0xLG5bb109MCx0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuTElORVMsdH1mdW5jdGlvbiBnTSh0KXtzd2l0Y2godC5wcmltaXRpdmVUeXBlKXtjYXNlIEJ0LlRSSUFOR0xFX0ZBTjpyZXR1cm4gZE0odCk7Y2FzZSBCdC5UUklBTkdMRV9TVFJJUDpyZXR1cm4gbU0odCk7Y2FzZSBCdC5UUklBTkdMRVM6cmV0dXJuIHBNKHQpO2Nhc2UgQnQuTElORV9TVFJJUDpyZXR1cm4gX00odCk7Y2FzZSBCdC5MSU5FX0xPT1A6cmV0dXJuIHlNKHQpO2Nhc2UgQnQuTElORVM6cmV0dXJuIGhNKHQpfXJldHVybiB0fWZ1bmN0aW9uIGxzKHQsZSl7TWF0aC5hYnModC55KTxQLkVQU0lMT042JiYoZT90Lnk9LVAuRVBTSUxPTjY6dC55PVAuRVBTSUxPTjYpfWZ1bmN0aW9uIEFNKHQsZSxuKXtpZih0LnkhPT0wJiZlLnkhPT0wJiZuLnkhPT0wKXtscyh0LHQueTwwKSxscyhlLGUueTwwKSxscyhuLG4ueTwwKTtyZXR1cm59bGV0IG89TWF0aC5hYnModC55KSxyPU1hdGguYWJzKGUueSksaT1NYXRoLmFicyhuLnkpLHM7bz5yP28+aT9zPVAuc2lnbih0LnkpOnM9UC5zaWduKG4ueSk6cj5pP3M9UC5zaWduKGUueSk6cz1QLnNpZ24obi55KTtsZXQgZj1zPDA7bHModCxmKSxscyhlLGYpLGxzKG4sZil9ZnVuY3Rpb24gd3IodCxlLG4sbyl7YS5hZGQodCxhLm11bHRpcGx5QnlTY2FsYXIoYS5zdWJ0cmFjdChlLHQsdHcpLHQueS8odC55LWUueSksdHcpLG4pLGEuY2xvbmUobixvKSxscyhuLCEwKSxscyhvLCExKX1mdW5jdGlvbiBiTSh0LGUsbil7aWYodC54Pj0wfHxlLng+PTB8fG4ueD49MClyZXR1cm47QU0odCxlLG4pO2xldCBvPXQueTwwLHI9ZS55PDAsaT1uLnk8MCxzPTA7cys9bz8xOjAscys9cj8xOjAscys9aT8xOjA7bGV0IGY9UWguaW5kaWNlcztzPT09MT8oZlsxXT0zLGZbMl09NCxmWzVdPTYsZls3XT02LGZbOF09NSxvPyh3cih0LGUsbmMscmMpLHdyKHQsbixvYyxpYyksZlswXT0wLGZbM109MSxmWzRdPTIsZls2XT0xKTpyPyh3cihlLG4sbmMscmMpLHdyKGUsdCxvYyxpYyksZlswXT0xLGZbM109MixmWzRdPTAsZls2XT0yKTppJiYod3Iobix0LG5jLHJjKSx3cihuLGUsb2MsaWMpLGZbMF09MixmWzNdPTAsZls0XT0xLGZbNl09MCkpOnM9PT0yJiYoZlsyXT00LGZbNF09NCxmWzVdPTMsZls3XT01LGZbOF09NixvP3I/aXx8KHdyKG4sdCxuYyxyYyksd3IobixlLG9jLGljKSxmWzBdPTAsZlsxXT0xLGZbM109MCxmWzZdPTIpOih3cihlLG4sbmMscmMpLHdyKGUsdCxvYyxpYyksZlswXT0yLGZbMV09MCxmWzNdPTIsZls2XT0xKTood3IodCxlLG5jLHJjKSx3cih0LG4sb2MsaWMpLGZbMF09MSxmWzFdPTIsZlszXT0xLGZbNl09MCkpO2xldCB1PVFoLnBvc2l0aW9ucztyZXR1cm4gdVswXT10LHVbMV09ZSx1WzJdPW4sdS5sZW5ndGg9Mywocz09PTF8fHM9PT0yKSYmKHVbM109bmMsdVs0XT1vYyx1WzVdPXJjLHVbNl09aWMsdS5sZW5ndGg9NyksUWh9ZnVuY3Rpb24gZXcodCxlKXtsZXQgbj10LmF0dHJpYnV0ZXM7aWYobi5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoPT09MClyZXR1cm47Zm9yKGxldCByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbShuW3JdKSYmbShuW3JdLnZhbHVlcykpe2xldCBpPW5bcl07aS52YWx1ZXM9ZXQuY3JlYXRlVHlwZWRBcnJheShpLmNvbXBvbmVudERhdGF0eXBlLGkudmFsdWVzKX1sZXQgbz1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtyZXR1cm4gdC5pbmRpY2VzPUx0LmNyZWF0ZVR5cGVkQXJyYXkobyx0LmluZGljZXMpLGUmJih0LmJvdW5kaW5nU3BoZXJlPUF0LmZyb21WZXJ0aWNlcyhuLnBvc2l0aW9uLnZhbHVlcykpLHR9ZnVuY3Rpb24gc2EodCl7bGV0IGU9dC5hdHRyaWJ1dGVzLG49e307Zm9yKGxldCBvIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShvKSYmbShlW29dKSYmbShlW29dLnZhbHVlcykpe2xldCByPWVbb107bltvXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOnIuY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOnIubm9ybWFsaXplLHZhbHVlczpbXX0pfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6bixpbmRpY2VzOltdLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlfSl9ZnVuY3Rpb24gbjAodCxlLG4pe2xldCBvPW0odC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSk7ZT1ldyhlLG8pLG49ZXcobixvKSxtKG4pJiYhbShlKT90Lmdlb21ldHJ5PW46IW0obikmJm0oZSk/dC5nZW9tZXRyeT1lOih0Lndlc3RIZW1pc3BoZXJlR2VvbWV0cnk9ZSx0LmVhc3RIZW1pc3BoZXJlR2VvbWV0cnk9bix0Lmdlb21ldHJ5PXZvaWQgMCl9ZnVuY3Rpb24gbzAodCxlKXtsZXQgbj1uZXcgdCxvPW5ldyB0LHI9bmV3IHQ7cmV0dXJuIGZ1bmN0aW9uKGkscyxmLHUsYyxsLHAsZCl7bGV0IGg9dC5mcm9tQXJyYXkoYyxpKmUsbiksXz10LmZyb21BcnJheShjLHMqZSxvKSxnPXQuZnJvbUFycmF5KGMsZiplLHIpO3QubXVsdGlwbHlCeVNjYWxhcihoLHUueCxoKSx0Lm11bHRpcGx5QnlTY2FsYXIoXyx1LnksXyksdC5tdWx0aXBseUJ5U2NhbGFyKGcsdS56LGcpO2xldCBiPXQuYWRkKGgsXyxoKTt0LmFkZChiLGcsYiksZCYmdC5ub3JtYWxpemUoYixiKSx0LnBhY2soYixsLHAqZSl9fWZ1bmN0aW9uIEtwKHQsZSxuLG8scixpLHMsZix1LGMsbCxwLGQsaCxfLGcpe2lmKCFtKGkpJiYhbShzKSYmIW0oZikmJiFtKHUpJiYhbShjKSYmaD09PTApcmV0dXJuO2xldCBiPWEuZnJvbUFycmF5KHIsdCozLFJmKSx3PWEuZnJvbUFycmF5KHIsZSozLEpoKSxPPWEuZnJvbUFycmF5KHIsbiozLHQwKSxFPUliKG8sYix3LE8sT00pO2lmKG0oRSkpe2lmKG0oaSkmJlhwKHQsZSxuLEUsaSxwLm5vcm1hbC52YWx1ZXMsZywhMCksbShjKSl7bGV0IFQ9YS5mcm9tQXJyYXkoYyx0KjMsUmYpLHg9YS5mcm9tQXJyYXkoYyxlKjMsSmgpLE09YS5mcm9tQXJyYXkoYyxuKjMsdDApO2EubXVsdGlwbHlCeVNjYWxhcihULEUueCxUKSxhLm11bHRpcGx5QnlTY2FsYXIoeCxFLnkseCksYS5tdWx0aXBseUJ5U2NhbGFyKE0sRS56LE0pO2xldCBOOyFhLmVxdWFscyhULGEuWkVSTyl8fCFhLmVxdWFscyh4LGEuWkVSTyl8fCFhLmVxdWFscyhNLGEuWkVSTyk/KE49YS5hZGQoVCx4LFQpLGEuYWRkKE4sTSxOKSxhLm5vcm1hbGl6ZShOLE4pKTooTj1SZixOLng9MCxOLnk9MCxOLno9MCksYS5wYWNrKE4scC5leHRydWRlRGlyZWN0aW9uLnZhbHVlcyxnKjMpfWlmKG0obCkmJlRNKHQsZSxuLEUsbCxwLmFwcGx5T2Zmc2V0LnZhbHVlcyxnKSxtKHMpJiZYcCh0LGUsbixFLHMscC50YW5nZW50LnZhbHVlcyxnLCEwKSxtKGYpJiZYcCh0LGUsbixFLGYscC5iaXRhbmdlbnQudmFsdWVzLGcsITApLG0odSkmJmN3KHQsZSxuLEUsdSxwLnN0LnZhbHVlcyxnKSxoPjApZm9yKGxldCBUPTA7VDxoO1QrKyl7bGV0IHg9ZFtUXTtFTSh0LGUsbixFLGcsX1t4XSxwW3hdKX19fWZ1bmN0aW9uIEVNKHQsZSxuLG8scixpLHMpe2xldCBmPWkuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx1PWkudmFsdWVzLGM9cy52YWx1ZXM7c3dpdGNoKGYpe2Nhc2UgNDp3TSh0LGUsbixvLHUsYyxyLCExKTticmVhaztjYXNlIDM6WHAodCxlLG4sbyx1LGMsciwhMSk7YnJlYWs7Y2FzZSAyOmN3KHQsZSxuLG8sdSxjLHIsITEpO2JyZWFrO2RlZmF1bHQ6Y1tyXT11W3RdKm8ueCt1W2VdKm8ueSt1W25dKm8uen19ZnVuY3Rpb24gc2kodCxlLG4sbyxyLGkpe2xldCBzPXQucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zO2lmKHIhPT0tMSl7bGV0IGY9b1tyXSx1PW5bZl07cmV0dXJuIHU9PT0tMT8obltmXT1zLHQucG9zaXRpb24udmFsdWVzLnB1c2goaS54LGkueSxpLnopLGUucHVzaChzKSxzKTooZS5wdXNoKHUpLHUpfXJldHVybiB0LnBvc2l0aW9uLnZhbHVlcy5wdXNoKGkueCxpLnksaS56KSxlLnB1c2gocyksc31mdW5jdGlvbiBudyh0KXtsZXQgZT10Lmdlb21ldHJ5LG49ZS5hdHRyaWJ1dGVzLG89bi5wb3NpdGlvbi52YWx1ZXMscj1tKG4ubm9ybWFsKT9uLm5vcm1hbC52YWx1ZXM6dm9pZCAwLGk9bShuLmJpdGFuZ2VudCk/bi5iaXRhbmdlbnQudmFsdWVzOnZvaWQgMCxzPW0obi50YW5nZW50KT9uLnRhbmdlbnQudmFsdWVzOnZvaWQgMCxmPW0obi5zdCk/bi5zdC52YWx1ZXM6dm9pZCAwLHU9bShuLmV4dHJ1ZGVEaXJlY3Rpb24pP24uZXh0cnVkZURpcmVjdGlvbi52YWx1ZXM6dm9pZCAwLGM9bShuLmFwcGx5T2Zmc2V0KT9uLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsbD1lLmluZGljZXMscD1bXTtmb3IobGV0IE4gaW4gbiluLmhhc093blByb3BlcnR5KE4pJiYhUk1bTl0mJm0obltOXSkmJnAucHVzaChOKTtsZXQgZD1wLmxlbmd0aCxoPXNhKGUpLF89c2EoZSksZyxiLHcsTyxFLFQ9W107VC5sZW5ndGg9by5sZW5ndGgvMztsZXQgeD1bXTtmb3IoeC5sZW5ndGg9by5sZW5ndGgvMyxFPTA7RTxULmxlbmd0aDsrK0UpVFtFXT0tMSx4W0VdPS0xO2xldCBNPWwubGVuZ3RoO2ZvcihFPTA7RTxNO0UrPTMpe2xldCBOPWxbRV0sRj1sW0UrMV0sST1sW0UrMl0sdj1hLmZyb21BcnJheShvLE4qMyksQj1hLmZyb21BcnJheShvLEYqMyksQT1hLmZyb21BcnJheShvLEkqMyksUz1iTSh2LEIsQSk7aWYobShTKSYmUy5wb3NpdGlvbnMubGVuZ3RoPjMpe2xldCBDPVMucG9zaXRpb25zLEw9Uy5pbmRpY2VzLHo9TC5sZW5ndGg7Zm9yKGxldCBqPTA7ajx6Oysrail7bGV0IGs9TFtqXSxxPUNba107cS55PDA/KGc9Xy5hdHRyaWJ1dGVzLGI9Xy5pbmRpY2VzLHc9VCk6KGc9aC5hdHRyaWJ1dGVzLGI9aC5pbmRpY2VzLHc9eCksTz1zaShnLGIsdyxsLGs8Mz9FK2s6LTEscSksS3AoTixGLEkscSxvLHIscyxpLGYsdSxjLGcscCxkLG4sTyl9fWVsc2UgbShTKSYmKHY9Uy5wb3NpdGlvbnNbMF0sQj1TLnBvc2l0aW9uc1sxXSxBPVMucG9zaXRpb25zWzJdKSx2Lnk8MD8oZz1fLmF0dHJpYnV0ZXMsYj1fLmluZGljZXMsdz1UKTooZz1oLmF0dHJpYnV0ZXMsYj1oLmluZGljZXMsdz14KSxPPXNpKGcsYix3LGwsRSx2KSxLcChOLEYsSSx2LG8scixzLGksZix1LGMsZyxwLGQsbixPKSxPPXNpKGcsYix3LGwsRSsxLEIpLEtwKE4sRixJLEIsbyxyLHMsaSxmLHUsYyxnLHAsZCxuLE8pLE89c2koZyxiLHcsbCxFKzIsQSksS3AoTixGLEksQSxvLHIscyxpLGYsdSxjLGcscCxkLG4sTyl9bjAodCxfLGgpfWZ1bmN0aW9uIGlhKHQsZSxuLG8scixpLHMpe2lmKCFtKHMpKXJldHVybjtsZXQgZj1hLmZyb21BcnJheShvLHQqMyxSZik7YS5lcXVhbHNFcHNpbG9uKGYsbixQLkVQU0lMT04xMCk/aS5hcHBseU9mZnNldC52YWx1ZXNbcl09c1t0XTppLmFwcGx5T2Zmc2V0LnZhbHVlc1tyXT1zW2VdfWZ1bmN0aW9uIG93KHQpe2xldCBlPXQuZ2VvbWV0cnksbj1lLmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLnZhbHVlcyxyPW0obi5hcHBseU9mZnNldCk/bi5hcHBseU9mZnNldC52YWx1ZXM6dm9pZCAwLGk9ZS5pbmRpY2VzLHM9c2EoZSksZj1zYShlKSx1LGM9aS5sZW5ndGgsbD1bXTtsLmxlbmd0aD1vLmxlbmd0aC8zO2xldCBwPVtdO2ZvcihwLmxlbmd0aD1vLmxlbmd0aC8zLHU9MDt1PGwubGVuZ3RoOysrdSlsW3VdPS0xLHBbdV09LTE7Zm9yKHU9MDt1PGM7dSs9Mil7bGV0IGQ9aVt1XSxoPWlbdSsxXSxfPWEuZnJvbUFycmF5KG8sZCozLFJmKSxnPWEuZnJvbUFycmF5KG8saCozLEpoKSxiO01hdGguYWJzKF8ueSk8UC5FUFNJTE9ONiYmKF8ueTwwP18ueT0tUC5FUFNJTE9ONjpfLnk9UC5FUFNJTE9ONiksTWF0aC5hYnMoZy55KTxQLkVQU0lMT042JiYoZy55PDA/Zy55PS1QLkVQU0lMT042OmcueT1QLkVQU0lMT042KTtsZXQgdz1zLmF0dHJpYnV0ZXMsTz1zLmluZGljZXMsRT1wLFQ9Zi5hdHRyaWJ1dGVzLHg9Zi5pbmRpY2VzLE09bCxOPXlvLmxpbmVTZWdtZW50UGxhbmUoXyxnLGF3LHQwKTtpZihtKE4pKXtsZXQgRj1hLm11bHRpcGx5QnlTY2FsYXIoYS5VTklUX1ksNSpQLkVQU0lMT045LFNNKTtfLnk8MCYmKGEubmVnYXRlKEYsRiksdz1mLmF0dHJpYnV0ZXMsTz1mLmluZGljZXMsRT1sLFQ9cy5hdHRyaWJ1dGVzLHg9cy5pbmRpY2VzLE09cCk7bGV0IEk9YS5hZGQoTixGLHhNKTtiPXNpKHcsTyxFLGksdSxfKSxpYShkLGgsXyxvLGIsdyxyKSxiPXNpKHcsTyxFLGksLTEsSSksaWEoZCxoLEksbyxiLHcsciksYS5uZWdhdGUoRixGKSxhLmFkZChOLEYsSSksYj1zaShULHgsTSxpLC0xLEkpLGlhKGQsaCxJLG8sYixULHIpLGI9c2koVCx4LE0saSx1KzEsZyksaWEoZCxoLGcsbyxiLFQscil9ZWxzZXtsZXQgRixJLHY7Xy55PDA/KEY9Zi5hdHRyaWJ1dGVzLEk9Zi5pbmRpY2VzLHY9bCk6KEY9cy5hdHRyaWJ1dGVzLEk9cy5pbmRpY2VzLHY9cCksYj1zaShGLEksdixpLHUsXyksaWEoZCxoLF8sbyxiLEYsciksYj1zaShGLEksdixpLHUrMSxnKSxpYShkLGgsZyxvLGIsRixyKX19bjAodCxmLHMpfWZ1bmN0aW9uIHN3KHQpe2xldCBlPXQuYXR0cmlidXRlcyxuPWUucG9zaXRpb24udmFsdWVzLG89ZS5wcmV2UG9zaXRpb24udmFsdWVzLHI9ZS5uZXh0UG9zaXRpb24udmFsdWVzLGk9bi5sZW5ndGg7Zm9yKGxldCBzPTA7czxpO3MrPTMpe2xldCBmPWEudW5wYWNrKG4scyxmdyk7aWYoZi54PjApY29udGludWU7bGV0IHU9YS51bnBhY2sobyxzLHV3KTsoZi55PDAmJnUueT4wfHxmLnk+MCYmdS55PDApJiYocy0zPjA/KG9bc109bltzLTNdLG9bcysxXT1uW3MtMl0sb1tzKzJdPW5bcy0xXSk6YS5wYWNrKGYsbyxzKSk7bGV0IGM9YS51bnBhY2socixzLGUwKTsoZi55PDAmJmMueT4wfHxmLnk+MCYmYy55PDApJiYocyszPGk/KHJbc109bltzKzNdLHJbcysxXT1uW3MrNF0scltzKzJdPW5bcys1XSk6YS5wYWNrKGYscixzKSl9fWZ1bmN0aW9uIHZNKHQpe2xldCBlPXQuZ2VvbWV0cnksbj1lLmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLnZhbHVlcyxyPW4ucHJldlBvc2l0aW9uLnZhbHVlcyxpPW4ubmV4dFBvc2l0aW9uLnZhbHVlcyxzPW4uZXhwYW5kQW5kV2lkdGgudmFsdWVzLGY9bShuLnN0KT9uLnN0LnZhbHVlczp2b2lkIDAsdT1tKG4uY29sb3IpP24uY29sb3IudmFsdWVzOnZvaWQgMCxjPXNhKGUpLGw9c2EoZSkscCxkLGgsXz0hMSxnPW8ubGVuZ3RoLzM7Zm9yKHA9MDtwPGc7cCs9NCl7bGV0IGI9cCx3PXArMixPPWEuZnJvbUFycmF5KG8sYiozLGZ3KSxFPWEuZnJvbUFycmF5KG8sdyozLHV3KTtpZihNYXRoLmFicyhPLnkpPFdwKWZvcihPLnk9V3AqKEUueTwwPy0xOjEpLG9bcCozKzFdPU8ueSxvWyhwKzEpKjMrMV09Ty55LGQ9YiozO2Q8YiozKzEyO2QrPTMpcltkXT1vW3AqM10scltkKzFdPW9bcCozKzFdLHJbZCsyXT1vW3AqMysyXTtpZihNYXRoLmFicyhFLnkpPFdwKWZvcihFLnk9V3AqKE8ueTwwPy0xOjEpLG9bKHArMikqMysxXT1FLnksb1socCszKSozKzFdPUUueSxkPWIqMztkPGIqMysxMjtkKz0zKWlbZF09b1socCsyKSozXSxpW2QrMV09b1socCsyKSozKzFdLGlbZCsyXT1vWyhwKzIpKjMrMl07bGV0IFQ9Yy5hdHRyaWJ1dGVzLHg9Yy5pbmRpY2VzLE09bC5hdHRyaWJ1dGVzLE49bC5pbmRpY2VzLEY9eW8ubGluZVNlZ21lbnRQbGFuZShPLEUsYXcsUE0pO2lmKG0oRikpe189ITA7bGV0IEk9YS5tdWx0aXBseUJ5U2NhbGFyKGEuVU5JVF9ZLElNLE1NKTtPLnk8MCYmKGEubmVnYXRlKEksSSksVD1sLmF0dHJpYnV0ZXMseD1sLmluZGljZXMsTT1jLmF0dHJpYnV0ZXMsTj1jLmluZGljZXMpO2xldCB2PWEuYWRkKEYsSSxOTSk7VC5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueixPLngsTy55LE8ueiksVC5wb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5wb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2gocltiKjNdLHJbYiozKzFdLHJbYiozKzJdKSxULnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChyW2IqMyszXSxyW2IqMys0XSxyW2IqMys1XSksVC5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2goTy54LE8ueSxPLnosTy54LE8ueSxPLnopLFQubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxULm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2godi54LHYueSx2LnopLFQubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxhLm5lZ2F0ZShJLEkpLGEuYWRkKEYsSSx2KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKEUueCxFLnksRS56LEUueCxFLnksRS56KSxNLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksTS5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2godi54LHYueSx2LnopLE0ucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksTS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goRS54LEUueSxFLnosRS54LEUueSxFLnopLE0ubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKGlbdyozXSxpW3cqMysxXSxpW3cqMysyXSksTS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goaVt3KjMrM10saVt3KjMrNF0saVt3KjMrNV0pO2xldCBCPUouZnJvbUFycmF5KHMsYioyLHJ3KSxBPU1hdGguYWJzKEIueSk7VC5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSxBLDEsQSksVC5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSwtQSwxLC1BKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLEEsMSxBKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLC1BLDEsLUEpO2xldCBTPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEYsTyxlMCkpO2lmKFMvPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEUsTyxlMCkpLG0odSkpe2xldCBDPW1lLmZyb21BcnJheSh1LGIqNCxpdyksTD1tZS5mcm9tQXJyYXkodSx3KjQsaXcpLHo9UC5sZXJwKEMueCxMLngsUyksaj1QLmxlcnAoQy55LEwueSxTKSxrPVAubGVycChDLnosTC56LFMpLHE9UC5sZXJwKEMudyxMLncsUyk7Zm9yKGQ9Yio0O2Q8Yio0Kzg7KytkKVQuY29sb3IudmFsdWVzLnB1c2godVtkXSk7Zm9yKFQuY29sb3IudmFsdWVzLnB1c2goeixqLGsscSksVC5jb2xvci52YWx1ZXMucHVzaCh6LGosayxxKSxNLmNvbG9yLnZhbHVlcy5wdXNoKHosaixrLHEpLE0uY29sb3IudmFsdWVzLnB1c2goeixqLGsscSksZD13KjQ7ZDx3KjQrODsrK2QpTS5jb2xvci52YWx1ZXMucHVzaCh1W2RdKX1pZihtKGYpKXtsZXQgQz1KLmZyb21BcnJheShmLGIqMixydyksTD1KLmZyb21BcnJheShmLChwKzMpKjIsQ00pLHo9UC5sZXJwKEMueCxMLngsUyk7Zm9yKGQ9YioyO2Q8YioyKzQ7KytkKVQuc3QudmFsdWVzLnB1c2goZltkXSk7Zm9yKFQuc3QudmFsdWVzLnB1c2goeixDLnkpLFQuc3QudmFsdWVzLnB1c2goeixMLnkpLE0uc3QudmFsdWVzLnB1c2goeixDLnkpLE0uc3QudmFsdWVzLnB1c2goeixMLnkpLGQ9dyoyO2Q8dyoyKzQ7KytkKU0uc3QudmFsdWVzLnB1c2goZltkXSl9aD1ULnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHgucHVzaChoLGgrMixoKzEpLHgucHVzaChoKzEsaCsyLGgrMyksaD1NLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LE4ucHVzaChoLGgrMixoKzEpLE4ucHVzaChoKzEsaCsyLGgrMyl9ZWxzZXtsZXQgSSx2O2ZvcihPLnk8MD8oST1sLmF0dHJpYnV0ZXMsdj1sLmluZGljZXMpOihJPWMuYXR0cmlidXRlcyx2PWMuaW5kaWNlcyksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChFLngsRS55LEUueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChFLngsRS55LEUueiksZD1wKjM7ZDxwKjMrMTI7KytkKUkucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHJbZF0pLEkubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKGlbZF0pO2ZvcihkPXAqMjtkPHAqMis4OysrZClJLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKHNbZF0pLG0oZikmJkkuc3QudmFsdWVzLnB1c2goZltkXSk7aWYobSh1KSlmb3IoZD1wKjQ7ZDxwKjQrMTY7KytkKUkuY29sb3IudmFsdWVzLnB1c2godVtkXSk7aD1JLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHYucHVzaChoLGgrMixoKzEpLHYucHVzaChoKzEsaCsyLGgrMyl9fV8mJihzdyhsKSxzdyhjKSksbjAodCxsLGMpfXZhciBMbywkYixjTSxYaCxHcixqcCxIcCxmTSxicixPZixvYSxyYSx1TSxaYixsTSxFZixrcixRYixKYixxcCx0dyxuYyxvYyxyYyxpYyxRaCx3TSxYcCxjdyxUTSxSZixKaCx0MCxPTSxSTSxhdyxTTSx4TSxydyxDTSxmdyx1dyxlMCxQTSxNTSxOTSxpdyxJTSxXcCxHZSxjaT0kKCgpPT57ZnMoKTt2YigpO3ZlKCk7a2UoKTtEdCgpO19yKCk7SWUoKTtEZSgpO2Z0KCk7SHQoKTtWaCgpO3hpKCk7WWUoKTskZSgpO0RwKCk7WmUoKTtWcygpO2VjKCk7S3QoKTtVbigpO2tuKCk7dXMoKTt0bigpO1hiKCk7TG89e307TG8udG9XaXJlZnJhbWU9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuaW5kaWNlcztpZihtKGUpKXtzd2l0Y2godC5wcmltaXRpdmVUeXBlKXtjYXNlIEJ0LlRSSUFOR0xFUzp0LmluZGljZXM9b00oZSk7YnJlYWs7Y2FzZSBCdC5UUklBTkdMRV9TVFJJUDp0LmluZGljZXM9ck0oZSk7YnJlYWs7Y2FzZSBCdC5UUklBTkdMRV9GQU46dC5pbmRpY2VzPWlNKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEQoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBUUklBTkdMRVMsIFRSSUFOR0xFX1NUUklQLCBvciBUUklBTkdMRV9GQU4uIil9dC5wcmltaXRpdmVUeXBlPUJ0LkxJTkVTfXJldHVybiB0fTtMby5jcmVhdGVMaW5lU2VnbWVudHNGb3JWZWN0b3JzPWZ1bmN0aW9uKHQsZSxuKXtpZihlPWU/PyJub3JtYWwiLCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24pKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IEQoYGdlb21ldHJ5LmF0dHJpYnV0ZXMgbXVzdCBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGF0dHJpYnV0ZU5hbWUgcGFyYW1ldGVyLCAke2V9LmApO249bj8/MWU0O2xldCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscj10LmF0dHJpYnV0ZXNbZV0udmFsdWVzLGk9by5sZW5ndGgscz1uZXcgRmxvYXQ2NEFycmF5KDIqaSksZj0wO2ZvcihsZXQgbD0wO2w8aTtsKz0zKXNbZisrXT1vW2xdLHNbZisrXT1vW2wrMV0sc1tmKytdPW9bbCsyXSxzW2YrK109b1tsXStyW2xdKm4sc1tmKytdPW9bbCsxXStyW2wrMV0qbixzW2YrK109b1tsKzJdK3JbbCsyXSpuO2xldCB1LGM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShjKSYmKHU9bmV3IEF0KGMuY2VudGVyLGMucmFkaXVzK24pKSxuZXcgVXQoe2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pfSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOnV9KX07TG8uY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT1bInBvc2l0aW9uIiwicG9zaXRpb25IaWdoIiwicG9zaXRpb25Mb3ciLCJwb3NpdGlvbjNESGlnaCIsInBvc2l0aW9uM0RMb3ciLCJwb3NpdGlvbjJESGlnaCIsInBvc2l0aW9uMkRMb3ciLCJwaWNrQ29sb3IiLCJub3JtYWwiLCJzdCIsInRhbmdlbnQiLCJiaXRhbmdlbnQiLCJleHRydWRlRGlyZWN0aW9uIiwiY29tcHJlc3NlZEF0dHJpYnV0ZXMiXSxuPXQuYXR0cmlidXRlcyxvPXt9LHI9MCxpLHM9ZS5sZW5ndGg7Zm9yKGk9MDtpPHM7KytpKXtsZXQgZj1lW2ldO20obltmXSkmJihvW2ZdPXIrKyl9Zm9yKGxldCBmIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShmKSYmIW0ob1tmXSkmJihvW2ZdPXIrKyk7cmV0dXJuIG99O0xvLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCksbj10LmluZGljZXM7aWYobShuKSl7bGV0IG89bmV3IEludDMyQXJyYXkoZSk7Zm9yKGxldCBkPTA7ZDxlO2QrKylvW2RdPS0xO2xldCByPW4saT1yLmxlbmd0aCxzPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxpKSxmPTAsdT0wLGM9MCxsO2Zvcig7ZjxpOylsPW9bcltmXV0sbCE9PS0xP3NbdV09bDoobD1yW2ZdLG9bbF09YyxzW3VdPWMsKytjKSwrK2YsKyt1O3QuaW5kaWNlcz1zO2xldCBwPXQuYXR0cmlidXRlcztmb3IobGV0IGQgaW4gcClpZihwLmhhc093blByb3BlcnR5KGQpJiZtKHBbZF0pJiZtKHBbZF0udmFsdWVzKSl7bGV0IGg9cFtkXSxfPWgudmFsdWVzLGc9MCxiPWguY29tcG9uZW50c1BlckF0dHJpYnV0ZSx3PWV0LmNyZWF0ZVR5cGVkQXJyYXkoaC5jb21wb25lbnREYXRhdHlwZSxjKmIpO2Zvcig7ZzxlOyl7bGV0IE89b1tnXTtpZihPIT09LTEpZm9yKGxldCBFPTA7RTxiO0UrKyl3W2IqTytFXT1fW2IqZytFXTsrK2d9aC52YWx1ZXM9d319cmV0dXJuIHR9O0xvLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5pbmRpY2VzO2lmKHQucHJpbWl0aXZlVHlwZT09PUJ0LlRSSUFOR0xFUyYmbShuKSl7bGV0IG89bi5sZW5ndGgscj0wO2ZvcihsZXQgaT0wO2k8bztpKyspbltpXT5yJiYocj1uW2ldKTt0LmluZGljZXM9V2IudGlwc2lmeSh7aW5kaWNlczpuLG1heGltdW1JbmRleDpyLGNhY2hlU2l6ZTplfSl9cmV0dXJuIHR9O0xvLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKG0odC5pbmRpY2VzKSYmdC5wcmltaXRpdmVUeXBlIT09QnQuVFJJQU5HTEVTJiZ0LnByaW1pdGl2ZVR5cGUhPT1CdC5MSU5FUyYmdC5wcmltaXRpdmVUeXBlIT09QnQuUE9JTlRTKXRocm93IG5ldyBEKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgZXF1YWwgdG8gUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIFByaW1pdGl2ZVR5cGUuTElORVMsIG9yIFByaW1pdGl2ZVR5cGUuUE9JTlRTLiIpO2xldCBlPVtdLG49VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYobSh0LmluZGljZXMpJiZuPj1QLlNJWFRZX0ZPVVJfS0lMT0JZVEVTKXtsZXQgbz1bXSxyPVtdLGk9MCxzPVliKHQuYXR0cmlidXRlcyksZj10LmluZGljZXMsdT1mLmxlbmd0aCxjO3QucHJpbWl0aXZlVHlwZT09PUJ0LlRSSUFOR0xFUz9jPTM6dC5wcmltaXRpdmVUeXBlPT09QnQuTElORVM/Yz0yOnQucHJpbWl0aXZlVHlwZT09PUJ0LlBPSU5UUyYmKGM9MSk7Zm9yKGxldCBsPTA7bDx1O2wrPWMpe2ZvcihsZXQgcD0wO3A8YzsrK3Ape2xldCBkPWZbbCtwXSxoPW9bZF07bShoKXx8KGg9aSsrLG9bZF09aCxzTShzLHQuYXR0cmlidXRlcyxkKSksci5wdXNoKGgpfWkrYz49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUyYmKGUucHVzaChuZXcgVXQoe2F0dHJpYnV0ZXM6cyxpbmRpY2VzOnIscHJpbWl0aXZlVHlwZTp0LnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6dC5ib3VuZGluZ1NwaGVyZSxib3VuZGluZ1NwaGVyZUNWOnQuYm91bmRpbmdTcGhlcmVDVn0pKSxvPVtdLHI9W10saT0wLHM9WWIodC5hdHRyaWJ1dGVzKSl9ci5sZW5ndGghPT0wJiZlLnB1c2gobmV3IFV0KHthdHRyaWJ1dGVzOnMsaW5kaWNlczpyLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOnQuYm91bmRpbmdTcGhlcmUsYm91bmRpbmdTcGhlcmVDVjp0LmJvdW5kaW5nU3BoZXJlQ1Z9KSl9ZWxzZSBlLnB1c2godCk7cmV0dXJuIGV9OyRiPW5ldyBhLGNNPW5ldyBjdDtMby5wcm9qZWN0VG8yRD1mdW5jdGlvbih0LGUsbixvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXR0cmlidXRlTmFtZSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYXR0cmlidXRlTmFtZTNEIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJhdHRyaWJ1dGVOYW1lMkQgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzW2VdKSl0aHJvdyBuZXcgRChgZ2VvbWV0cnkgbXVzdCBoYXZlIGF0dHJpYnV0ZSBtYXRjaGluZyB0aGUgYXR0cmlidXRlTmFtZSBhcmd1bWVudDogJHtlfS5gKTtpZih0LmF0dHJpYnV0ZXNbZV0uY29tcG9uZW50RGF0YXR5cGUhPT1ldC5ET1VCTEUpdGhyb3cgbmV3IEQoIlRoZSBhdHRyaWJ1dGUgY29tcG9uZW50RGF0YXR5cGUgbXVzdCBiZSBDb21wb25lbnREYXRhdHlwZS5ET1VCTEUuIik7bGV0IGk9dC5hdHRyaWJ1dGVzW2VdO3I9bShyKT9yOm5ldyBlbztsZXQgcz1yLmVsbGlwc29pZCxmPWkudmFsdWVzLHU9bmV3IEZsb2F0NjRBcnJheShmLmxlbmd0aCksYz0wO2ZvcihsZXQgbD0wO2w8Zi5sZW5ndGg7bCs9Myl7bGV0IHA9YS5mcm9tQXJyYXkoZixsLCRiKSxkPXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocCxjTSk7aWYoIW0oZCkpdGhyb3cgbmV3IEQoYENvdWxkIG5vdCBwcm9qZWN0IHBvaW50ICgke3AueH0sICR7cC55fSwgJHtwLnp9KSB0byAyRC5gKTtsZXQgaD1yLnByb2plY3QoZCwkYik7dVtjKytdPWgueCx1W2MrK109aC55LHVbYysrXT1oLnp9cmV0dXJuIHQuYXR0cmlidXRlc1tuXT1pLHQuYXR0cmlidXRlc1tvXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnV9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O1hoPXtoaWdoOjAsbG93OjB9O0xvLmVuY29kZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixvKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImF0dHJpYnV0ZU5hbWUgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImF0dHJpYnV0ZUhpZ2hOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJhdHRyaWJ1dGVMb3dOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IEQoYGdlb21ldHJ5IG11c3QgaGF2ZSBhdHRyaWJ1dGUgbWF0Y2hpbmcgdGhlIGF0dHJpYnV0ZU5hbWUgYXJndW1lbnQ6ICR7ZX0uYCk7aWYodC5hdHRyaWJ1dGVzW2VdLmNvbXBvbmVudERhdGF0eXBlIT09ZXQuRE9VQkxFKXRocm93IG5ldyBEKCJUaGUgYXR0cmlidXRlIGNvbXBvbmVudERhdGF0eXBlIG11c3QgYmUgQ29tcG9uZW50RGF0YXR5cGUuRE9VQkxFLiIpO2xldCByPXQuYXR0cmlidXRlc1tlXSxpPXIudmFsdWVzLHM9aS5sZW5ndGgsZj1uZXcgRmxvYXQzMkFycmF5KHMpLHU9bmV3IEZsb2F0MzJBcnJheShzKTtmb3IobGV0IGw9MDtsPHM7KytsKVFzLmVuY29kZShpW2xdLFhoKSxmW2xdPVhoLmhpZ2gsdVtsXT1YaC5sb3c7bGV0IGM9ci5jb21wb25lbnRzUGVyQXR0cmlidXRlO3JldHVybiB0LmF0dHJpYnV0ZXNbbl09bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOmMsdmFsdWVzOmZ9KSx0LmF0dHJpYnV0ZXNbb109bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOmMsdmFsdWVzOnV9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O0dyPW5ldyBhO2pwPW5ldyBzdCxIcD1uZXcgWjtMby50cmFuc2Zvcm1Ub1dvcmxkQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImluc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXQubW9kZWxNYXRyaXg7aWYoc3QuZXF1YWxzKGUsc3QuSURFTlRJVFkpKXJldHVybiB0O2xldCBuPXQuZ2VvbWV0cnkuYXR0cmlidXRlcztZaChlLG4ucG9zaXRpb24pLFloKGUsbi5wcmV2UG9zaXRpb24pLFloKGUsbi5uZXh0UG9zaXRpb24pLChtKG4ubm9ybWFsKXx8bShuLnRhbmdlbnQpfHxtKG4uYml0YW5nZW50KSkmJihzdC5pbnZlcnNlKGUsanApLHN0LnRyYW5zcG9zZShqcCxqcCksc3QuZ2V0TWF0cml4MyhqcCxIcCksJGgoSHAsbi5ub3JtYWwpLCRoKEhwLG4udGFuZ2VudCksJGgoSHAsbi5iaXRhbmdlbnQpKTtsZXQgbz10Lmdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlO3JldHVybiBtKG8pJiYodC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZT1BdC50cmFuc2Zvcm0obyxlLG8pKSx0Lm1vZGVsTWF0cml4PXN0LmNsb25lKHN0LklERU5USVRZKSx0fTtmTT1uZXcgYTtMby5jb21iaW5lSW5zdGFuY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0Lmxlbmd0aDwxKXRocm93IG5ldyBEKCJpbnN0YW5jZXMgaXMgcmVxdWlyZWQgYW5kIG11c3QgaGF2ZSBsZW5ndGggZ3JlYXRlciB0aGFuIHplcm8uIik7bGV0IGU9W10sbj1bXSxvPXQubGVuZ3RoO2ZvcihsZXQgaT0wO2k8bzsrK2kpe2xldCBzPXRbaV07bShzLmdlb21ldHJ5KT9lLnB1c2gocyk6bShzLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiZtKHMuZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm4ucHVzaChzKX1sZXQgcj1bXTtyZXR1cm4gZS5sZW5ndGg+MCYmci5wdXNoKFpoKGUsImdlb21ldHJ5IikpLG4ubGVuZ3RoPjAmJihyLnB1c2goWmgobiwid2VzdEhlbWlzcGhlcmVHZW9tZXRyeSIpKSxyLnB1c2goWmgobiwiZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSIpKSkscn07YnI9bmV3IGEsT2Y9bmV3IGEsb2E9bmV3IGEscmE9bmV3IGE7TG8uY29tcHV0ZU5vcm1hbD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKXx8IW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuaW5kaWNlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmluZGljZXMgaXMgcmVxdWlyZWQuIik7aWYodC5pbmRpY2VzLmxlbmd0aDwyfHx0LmluZGljZXMubGVuZ3RoJTMhPT0wKXRocm93IG5ldyBEKCJnZW9tZXRyeS5pbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBiZSBhIG11bHRpcGxlIG9mIDMuIik7aWYodC5wcmltaXRpdmVUeXBlIT09QnQuVFJJQU5HTEVTKXRocm93IG5ldyBEKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgYmUgUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMuIik7bGV0IGU9dC5pbmRpY2VzLG49dC5hdHRyaWJ1dGVzLG89bi5wb3NpdGlvbi52YWx1ZXMscj1uLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxpPWUubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGY9bmV3IEFycmF5KGkvMyksdT1uZXcgQXJyYXkoaSksYztmb3IoYz0wO2M8cjtjKyspc1tjXT17aW5kZXhPZmZzZXQ6MCxjb3VudDowLGN1cnJlbnRDb3VudDowfTtsZXQgbD0wO2ZvcihjPTA7YzxpO2MrPTMpe2xldCBfPWVbY10sZz1lW2MrMV0sYj1lW2MrMl0sdz1fKjMsTz1nKjMsRT1iKjM7T2YueD1vW3ddLE9mLnk9b1t3KzFdLE9mLno9b1t3KzJdLG9hLng9b1tPXSxvYS55PW9bTysxXSxvYS56PW9bTysyXSxyYS54PW9bRV0scmEueT1vW0UrMV0scmEuej1vW0UrMl0sc1tfXS5jb3VudCsrLHNbZ10uY291bnQrKyxzW2JdLmNvdW50KyssYS5zdWJ0cmFjdChvYSxPZixvYSksYS5zdWJ0cmFjdChyYSxPZixyYSksZltsXT1hLmNyb3NzKG9hLHJhLG5ldyBhKSxsKyt9bGV0IHA9MDtmb3IoYz0wO2M8cjtjKyspc1tjXS5pbmRleE9mZnNldCs9cCxwKz1zW2NdLmNvdW50O2w9MDtsZXQgZDtmb3IoYz0wO2M8aTtjKz0zKXtkPXNbZVtjXV07bGV0IF89ZC5pbmRleE9mZnNldCtkLmN1cnJlbnRDb3VudDt1W19dPWwsZC5jdXJyZW50Q291bnQrKyxkPXNbZVtjKzFdXSxfPWQuaW5kZXhPZmZzZXQrZC5jdXJyZW50Q291bnQsdVtfXT1sLGQuY3VycmVudENvdW50KyssZD1zW2VbYysyXV0sXz1kLmluZGV4T2Zmc2V0K2QuY3VycmVudENvdW50LHVbX109bCxkLmN1cnJlbnRDb3VudCsrLGwrK31sZXQgaD1uZXcgRmxvYXQzMkFycmF5KHIqMyk7Zm9yKGM9MDtjPHI7YysrKXtsZXQgXz1jKjM7aWYoZD1zW2NdLGEuY2xvbmUoYS5aRVJPLGJyKSxkLmNvdW50PjApe2ZvcihsPTA7bDxkLmNvdW50O2wrKylhLmFkZChicixmW3VbZC5pbmRleE9mZnNldCtsXV0sYnIpO2EuZXF1YWxzRXBzaWxvbihhLlpFUk8sYnIsUC5FUFNJTE9OMTApJiZhLmNsb25lKGZbdVtkLmluZGV4T2Zmc2V0XV0sYnIpfWEuZXF1YWxzRXBzaWxvbihhLlpFUk8sYnIsUC5FUFNJTE9OMTApJiYoYnIuej0xKSxhLm5vcm1hbGl6ZShicixiciksaFtfXT1ici54LGhbXysxXT1ici55LGhbXysyXT1ici56fXJldHVybiB0LmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSksdH07dU09bmV3IGEsWmI9bmV3IGEsbE09bmV3IGE7TG8uY29tcHV0ZVRhbmdlbnRBbmRCaXRhbmdlbnQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuYXR0cmlidXRlcyxuPXQuaW5kaWNlcztpZighbShlLnBvc2l0aW9uKXx8IW0oZS5wb3NpdGlvbi52YWx1ZXMpKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShlLm5vcm1hbCl8fCFtKGUubm9ybWFsLnZhbHVlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShlLnN0KXx8IW0oZS5zdC52YWx1ZXMpKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnN0LnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkuaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtpZihuLmxlbmd0aDwyfHxuLmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkuaW5kaWNlcyBsZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2lmKHQucHJpbWl0aXZlVHlwZSE9PUJ0LlRSSUFOR0xFUyl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSBtdXN0IGJlIFByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTLiIpO2xldCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscj10LmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyxpPXQuYXR0cmlidXRlcy5zdC52YWx1ZXMscz10LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLGY9bi5sZW5ndGgsdT1uZXcgQXJyYXkocyozKSxjO2ZvcihjPTA7Yzx1Lmxlbmd0aDtjKyspdVtjXT0wO2xldCBsLHAsZDtmb3IoYz0wO2M8ZjtjKz0zKXtsZXQgZz1uW2NdLGI9bltjKzFdLHc9bltjKzJdO2w9ZyozLHA9YiozLGQ9dyozO2xldCBPPWcqMixFPWIqMixUPXcqMix4PW9bbF0sTT1vW2wrMV0sTj1vW2wrMl0sRj1pW09dLEk9aVtPKzFdLHY9aVtFKzFdLUksQj1pW1QrMV0tSSxBPTEvKChpW0VdLUYpKkItKGlbVF0tRikqdiksUz0oQioob1twXS14KS12KihvW2RdLXgpKSpBLEM9KEIqKG9bcCsxXS1NKS12KihvW2QrMV0tTSkpKkEsTD0oQioob1twKzJdLU4pLXYqKG9bZCsyXS1OKSkqQTt1W2xdKz1TLHVbbCsxXSs9Qyx1W2wrMl0rPUwsdVtwXSs9Uyx1W3ArMV0rPUMsdVtwKzJdKz1MLHVbZF0rPVMsdVtkKzFdKz1DLHVbZCsyXSs9TH1sZXQgaD1uZXcgRmxvYXQzMkFycmF5KHMqMyksXz1uZXcgRmxvYXQzMkFycmF5KHMqMyk7Zm9yKGM9MDtjPHM7YysrKXtsPWMqMyxwPWwrMSxkPWwrMjtsZXQgZz1hLmZyb21BcnJheShyLGwsdU0pLGI9YS5mcm9tQXJyYXkodSxsLGxNKSx3PWEuZG90KGcsYik7YS5tdWx0aXBseUJ5U2NhbGFyKGcsdyxaYiksYS5ub3JtYWxpemUoYS5zdWJ0cmFjdChiLFpiLGIpLGIpLGhbbF09Yi54LGhbcF09Yi55LGhbZF09Yi56LGEubm9ybWFsaXplKGEuY3Jvc3MoZyxiLGIpLGIpLF9bbF09Yi54LF9bcF09Yi55LF9bZF09Yi56fXJldHVybiB0LmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pLHQuYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSx0fTtFZj1uZXcgSixrcj1uZXcgYSxRYj1uZXcgYSxKYj1uZXcgYSxxcD1uZXcgSjtMby5jb21wcmVzc1ZlcnRpY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT10LmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbixuLG87aWYobShlKSl7bGV0IE09ZS52YWx1ZXM7bz1NLmxlbmd0aC8zO2xldCBOPW5ldyBGbG9hdDMyQXJyYXkobyoyKSxGPTA7Zm9yKG49MDtuPG87KytuKXtpZihhLmZyb21BcnJheShNLG4qMyxrciksYS5lcXVhbHMoa3IsYS5aRVJPKSl7Ris9Mjtjb250aW51ZX1xcD1ubi5vY3RFbmNvZGVJblJhbmdlKGtyLDY1NTM1LHFwKSxOW0YrK109cXAueCxOW0YrK109cXAueX1yZXR1cm4gdC5hdHRyaWJ1dGVzLmNvbXByZXNzZWRBdHRyaWJ1dGVzPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpOfSksZGVsZXRlIHQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uLHR9bGV0IHI9dC5hdHRyaWJ1dGVzLm5vcm1hbCxpPXQuYXR0cmlidXRlcy5zdCxzPW0ociksZj1tKGkpO2lmKCFzJiYhZilyZXR1cm4gdDtsZXQgdT10LmF0dHJpYnV0ZXMudGFuZ2VudCxjPXQuYXR0cmlidXRlcy5iaXRhbmdlbnQsbD1tKHUpLHA9bShjKSxkLGgsXyxnO3MmJihkPXIudmFsdWVzKSxmJiYoaD1pLnZhbHVlcyksbCYmKF89dS52YWx1ZXMpLHAmJihnPWMudmFsdWVzKSxvPShzP2QubGVuZ3RoOmgubGVuZ3RoKS8ocz8zOjIpO2xldCBPPW8sRT1mJiZzPzI6MTtFKz1sfHxwPzE6MCxPKj1FO2xldCBUPW5ldyBGbG9hdDMyQXJyYXkoTykseD0wO2ZvcihuPTA7bjxvOysrbil7ZiYmKEouZnJvbUFycmF5KGgsbioyLEVmKSxUW3grK109bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoRWYpKTtsZXQgTT1uKjM7cyYmbShfKSYmbShnKT8oYS5mcm9tQXJyYXkoZCxNLGtyKSxhLmZyb21BcnJheShfLE0sUWIpLGEuZnJvbUFycmF5KGcsTSxKYiksbm4ub2N0UGFjayhrcixRYixKYixFZiksVFt4KytdPUVmLngsVFt4KytdPUVmLnkpOihzJiYoYS5mcm9tQXJyYXkoZCxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSxsJiYoYS5mcm9tQXJyYXkoXyxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSxwJiYoYS5mcm9tQXJyYXkoZyxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSl9cmV0dXJuIHQuYXR0cmlidXRlcy5jb21wcmVzc2VkQXR0cmlidXRlcz1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6RSx2YWx1ZXM6VH0pLHMmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMubm9ybWFsLGYmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMuc3QscCYmZGVsZXRlIHQuYXR0cmlidXRlcy5iaXRhbmdlbnQsbCYmZGVsZXRlIHQuYXR0cmlidXRlcy50YW5nZW50LHR9O3R3PW5ldyBhO25jPW5ldyBhLG9jPW5ldyBhLHJjPW5ldyBhLGljPW5ldyBhLFFoPXtwb3NpdGlvbnM6bmV3IEFycmF5KDcpLGluZGljZXM6bmV3IEFycmF5KDkpfTt3TT1vMChtZSw0KSxYcD1vMChhLDMpLGN3PW8wKEosMiksVE09ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7bGV0IGY9clt0XSpvLngsdT1yW2VdKm8ueSxjPXJbbl0qby56O2lbc109Zit1K2M+UC5FUFNJTE9ONj8xOjB9LFJmPW5ldyBhLEpoPW5ldyBhLHQwPW5ldyBhLE9NPW5ldyBhO1JNPXtwb3NpdGlvbjohMCxub3JtYWw6ITAsYml0YW5nZW50OiEwLHRhbmdlbnQ6ITAsc3Q6ITAsZXh0cnVkZURpcmVjdGlvbjohMCxhcHBseU9mZnNldDohMH07YXc9b24uZnJvbVBvaW50Tm9ybWFsKGEuWkVSTyxhLlVOSVRfWSksU009bmV3IGEseE09bmV3IGE7cnc9bmV3IEosQ009bmV3IEosZnc9bmV3IGEsdXc9bmV3IGEsZTA9bmV3IGEsUE09bmV3IGEsTU09bmV3IGEsTk09bmV3IGEsaXc9bmV3IG1lO0lNPTUqUC5FUFNJTE9OOSxXcD1QLkVQU0lMT042O0xvLnNwbGl0TG9uZ2l0dWRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJpbnN0YW5jZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10Lmdlb21ldHJ5LG49ZS5ib3VuZGluZ1NwaGVyZTtpZihtKG4pJiYobi5jZW50ZXIueC1uLnJhZGl1cz4wfHxBdC5pbnRlcnNlY3RQbGFuZShuLG9uLk9SSUdJTl9aWF9QTEFORSkhPT1Tbi5JTlRFUlNFQ1RJTkcpKXJldHVybiB0O2lmKGUuZ2VvbWV0cnlUeXBlIT09TmkuTk9ORSlzd2l0Y2goZS5nZW9tZXRyeVR5cGUpe2Nhc2UgTmkuUE9MWUxJTkVTOnZNKHQpO2JyZWFrO2Nhc2UgTmkuVFJJQU5HTEVTOm53KHQpO2JyZWFrO2Nhc2UgTmkuTElORVM6b3codCk7YnJlYWt9ZWxzZSBnTShlKSxlLnByaW1pdGl2ZVR5cGU9PT1CdC5UUklBTkdMRVM/bncodCk6ZS5wcmltaXRpdmVUeXBlPT09QnQuTElORVMmJm93KHQpO3JldHVybiB0fTtHZT1Mb30pO2Z1bmN0aW9uIFNmKHQsZSxuKXt0PXQ/PzAsZT1lPz8wLG49bj8/MCx0aGlzLnZhbHVlPW5ldyBGbG9hdDMyQXJyYXkoW3QsZSxuXSl9dmFyIGx3LHB3PSQoKCk9PntXdCgpO0RlKCk7ZnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhTZi5wcm90b3R5cGUse2NvbXBvbmVudERhdGF0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuRkxPQVR9fSxjb21wb25lbnRzUGVyQXR0cmlidXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gM319LG5vcm1hbGl6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITF9fX0pO1NmLmZyb21DYXJ0ZXNpYW4zPWZ1bmN0aW9uKHQpe3JldHVybiB5LmRlZmluZWQoIm9mZnNldCIsdCksbmV3IFNmKHQueCx0LnksdC56KX07U2YudG9WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoIm9mZnNldCIsdCksbShlKXx8KGU9bmV3IEZsb2F0MzJBcnJheShbdC54LHQueSx0LnpdKSksZVswXT10LngsZVsxXT10LnksZVsyXT10LnosZX07bHc9U2Z9KTtmdW5jdGlvbiBRbyh0KXt0aGlzLl9lbGxpcHNvaWQ9dD8/WS5XR1M4NCx0aGlzLl9zZW1pbWFqb3JBeGlzPXRoaXMuX2VsbGlwc29pZC5tYXhpbXVtUmFkaXVzLHRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzPTEvdGhpcy5fc2VtaW1ham9yQXhpc312YXIgcm8sc2M9JCgoKT0+e0R0KCk7SWUoKTtmdCgpO0h0KCk7JHQoKTtLdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFFvLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX19KTtRby5tZXJjYXRvckFuZ2xlVG9HZW9kZXRpY0xhdGl0dWRlPWZ1bmN0aW9uKHQpe3JldHVybiBQLlBJX09WRVJfVFdPLTIqTWF0aC5hdGFuKE1hdGguZXhwKC10KSl9O1FvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGU9ZnVuY3Rpb24odCl7dD5Rby5NYXhpbXVtTGF0aXR1ZGU/dD1Rby5NYXhpbXVtTGF0aXR1ZGU6dDwtUW8uTWF4aW11bUxhdGl0dWRlJiYodD0tUW8uTWF4aW11bUxhdGl0dWRlKTtsZXQgZT1NYXRoLnNpbih0KTtyZXR1cm4gLjUqTWF0aC5sb2coKDErZSkvKDEtZSkpfTtRby5NYXhpbXVtTGF0aXR1ZGU9UW8ubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZShNYXRoLlBJKTtRby5wcm90b3R5cGUucHJvamVjdD1mdW5jdGlvbih0LGUpe2xldCBuPXRoaXMuX3NlbWltYWpvckF4aXMsbz10LmxvbmdpdHVkZSpuLHI9UW8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZSh0LmxhdGl0dWRlKSpuLGk9dC5oZWlnaHQ7cmV0dXJuIG0oZSk/KGUueD1vLGUueT1yLGUuej1pLGUpOm5ldyBhKG8scixpKX07UW8ucHJvdG90eXBlLnVucHJvamVjdD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQiKTtsZXQgbj10aGlzLl9vbmVPdmVyU2VtaW1ham9yQXhpcyxvPXQueCpuLHI9UW8ubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZSh0LnkqbiksaT10Lno7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPW8sZS5sYXRpdHVkZT1yLGUuaGVpZ2h0PWksZSk6bmV3IGN0KG8scixpKX07cm89UW99KTtmdW5jdGlvbiBGTSh0LGUsbil7bGV0IG89IW4scj10Lmxlbmd0aCxpO2lmKCFvJiZyPjEpe2xldCBzPXRbMF0ubW9kZWxNYXRyaXg7Zm9yKGk9MTtpPHI7KytpKWlmKCFzdC5lcXVhbHMocyx0W2ldLm1vZGVsTWF0cml4KSl7bz0hMDticmVha319aWYobylmb3IoaT0wO2k8cjsrK2kpbSh0W2ldLmdlb21ldHJ5KSYmR2UudHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzKHRbaV0pO2Vsc2Ugc3QubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbihlLHRbMF0ubW9kZWxNYXRyaXgsZSl9ZnVuY3Rpb24gcjAodCxlKXtsZXQgbj10LmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLHI9by52YWx1ZXMubGVuZ3RoL28uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtuLmJhdGNoSWQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOm5ldyBGbG9hdDMyQXJyYXkocil9KTtsZXQgaT1uLmJhdGNoSWQudmFsdWVzO2ZvcihsZXQgcz0wO3M8cjsrK3MpaVtzXT1lfWZ1bmN0aW9uIExNKHQpe2xldCBlPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248ZTsrK24pe2xldCBvPXRbbl07bShvLmdlb21ldHJ5KT9yMChvLmdlb21ldHJ5LG4pOm0oby53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmbShvLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiYocjAoby53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5LG4pLHIwKG8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSxuKSl9fWZ1bmN0aW9uIERNKHQpe2xldCBlPXQuaW5zdGFuY2VzLG49dC5wcm9qZWN0aW9uLG89dC5lbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkLHI9dC5zY2VuZTNET25seSxpPXQudmVydGV4Q2FjaGVPcHRpbWl6ZSxzPXQuY29tcHJlc3NWZXJ0aWNlcyxmPXQubW9kZWxNYXRyaXgsdSxjLGwscD1lLmxlbmd0aDtmb3IodT0wO3U8cDsrK3UpaWYobShlW3VdLmdlb21ldHJ5KSl7bD1lW3VdLmdlb21ldHJ5LnByaW1pdGl2ZVR5cGU7YnJlYWt9Zm9yKHU9MTt1PHA7Kyt1KWlmKG0oZVt1XS5nZW9tZXRyeSkmJmVbdV0uZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSE9PWwpdGhyb3cgbmV3IEQoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmltaXRpdmVUeXBlLiIpO2lmKEZNKGUsZixyKSwhcilmb3IodT0wO3U8cDsrK3UpbShlW3VdLmdlb21ldHJ5KSYmR2Uuc3BsaXRMb25naXR1ZGUoZVt1XSk7aWYoTE0oZSksaSlmb3IodT0wO3U8cDsrK3Upe2xldCBoPWVbdV07bShoLmdlb21ldHJ5KT8oR2UucmVvcmRlckZvclBvc3RWZXJ0ZXhDYWNoZShoLmdlb21ldHJ5KSxHZS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoaC5nZW9tZXRyeSkpOm0oaC53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmbShoLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiYoR2UucmVvcmRlckZvclBvc3RWZXJ0ZXhDYWNoZShoLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpLEdlLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZShoLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpLEdlLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoaC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSxHZS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoaC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSl9bGV0IGQ9R2UuY29tYmluZUluc3RhbmNlcyhlKTtmb3IocD1kLmxlbmd0aCx1PTA7dTxwOysrdSl7Yz1kW3VdO2xldCBoPWMuYXR0cmlidXRlcztpZihyKWZvcihsZXQgXyBpbiBoKWguaGFzT3duUHJvcGVydHkoXykmJmhbX10uY29tcG9uZW50RGF0YXR5cGU9PT1ldC5ET1VCTEUmJkdlLmVuY29kZUF0dHJpYnV0ZShjLF8sYCR7X30zREhpZ2hgLGAke199M0RMb3dgKTtlbHNlIGZvcihsZXQgXyBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoXykmJmhbX10uY29tcG9uZW50RGF0YXR5cGU9PT1ldC5ET1VCTEUpe2xldCBnPWAke199M0RgLGI9YCR7X30yRGA7R2UucHJvamVjdFRvMkQoYyxfLGcsYixuKSxtKGMuYm91bmRpbmdTcGhlcmUpJiZfPT09InBvc2l0aW9uIiYmKGMuYm91bmRpbmdTcGhlcmVDVj1BdC5mcm9tVmVydGljZXMoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uMkQudmFsdWVzKSksR2UuZW5jb2RlQXR0cmlidXRlKGMsZyxgJHtnfUhpZ2hgLGAke2d9TG93YCksR2UuZW5jb2RlQXR0cmlidXRlKGMsYixgJHtifUhpZ2hgLGAke2J9TG93YCl9cyYmR2UuY29tcHJlc3NWZXJ0aWNlcyhjKX1pZighbyl7bGV0IGg9W107Zm9yKHA9ZC5sZW5ndGgsdT0wO3U8cDsrK3UpYz1kW3VdLGg9aC5jb25jYXQoR2UuZml0VG9VbnNpZ25lZFNob3J0SW5kaWNlcyhjKSk7ZD1ofXJldHVybiBkfWZ1bmN0aW9uIGkwKHQsZSxuLG8pe2xldCByLGkscyxmPW8ubGVuZ3RoLTE7aWYoZj49MCl7bGV0IGM9b1tmXTtyPWMub2Zmc2V0K2MuY291bnQscz1jLmluZGV4LGk9bltzXS5pbmRpY2VzLmxlbmd0aH1lbHNlIHI9MCxzPTAsaT1uW3NdLmluZGljZXMubGVuZ3RoO2xldCB1PXQubGVuZ3RoO2ZvcihsZXQgYz0wO2M8dTsrK2Mpe2xldCBwPXRbY11bZV07aWYoIW0ocCkpY29udGludWU7bGV0IGQ9cC5pbmRpY2VzLmxlbmd0aDtyK2Q+aSYmKHI9MCxpPW5bKytzXS5pbmRpY2VzLmxlbmd0aCksby5wdXNoKHtpbmRleDpzLG9mZnNldDpyLGNvdW50OmR9KSxyKz1kfX1mdW5jdGlvbiBCTSh0LGUpe2xldCBuPVtdO3JldHVybiBpMCh0LCJnZW9tZXRyeSIsZSxuKSxpMCh0LCJ3ZXN0SGVtaXNwaGVyZUdlb21ldHJ5IixlLG4pLGkwKHQsImVhc3RIZW1pc3BoZXJlR2VvbWV0cnkiLGUsbiksbn1mdW5jdGlvbiBVTSh0LGUpe2xldCBuPXQuYXR0cmlidXRlcztmb3IobGV0IG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXtsZXQgcj1uW29dO20ocikmJm0oci52YWx1ZXMpJiZlLnB1c2goci52YWx1ZXMuYnVmZmVyKX1tKHQuaW5kaWNlcykmJmUucHVzaCh0LmluZGljZXMuYnVmZmVyKX1mdW5jdGlvbiBrTSh0LGUpe2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjsrK28pVU0odFtvXSxlKX1mdW5jdGlvbiBHTSh0KXtsZXQgZT0xLG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuO28rKyl7bGV0IHI9dFtvXTtpZigrK2UsIW0ocikpY29udGludWU7bGV0IGk9ci5hdHRyaWJ1dGVzO2UrPTcrMipBdC5wYWNrZWRMZW5ndGgrKG0oci5pbmRpY2VzKT9yLmluZGljZXMubGVuZ3RoOjApO2ZvcihsZXQgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykmJm0oaVtzXSkpe2xldCBmPWlbc107ZSs9NStmLnZhbHVlcy5sZW5ndGh9fXJldHVybiBlfWZ1bmN0aW9uIFZNKHQsZSl7bGV0IG49dC5sZW5ndGgsbz1uZXcgRmxvYXQ2NEFycmF5KDErbioxOSkscj0wO29bcisrXT1uO2ZvcihsZXQgaT0wO2k8bjtpKyspe2xldCBzPXRbaV07aWYoc3QucGFjayhzLm1vZGVsTWF0cml4LG8scikscis9c3QucGFja2VkTGVuZ3RoLG0ocy5hdHRyaWJ1dGVzKSYmbShzLmF0dHJpYnV0ZXMub2Zmc2V0KSl7bGV0IGY9cy5hdHRyaWJ1dGVzLm9mZnNldC52YWx1ZTtvW3JdPWZbMF0sb1tyKzFdPWZbMV0sb1tyKzJdPWZbMl19cis9M31yZXR1cm4gZS5wdXNoKG8uYnVmZmVyKSxvfWZ1bmN0aW9uIHpNKHQpe2xldCBlPXQsbj1uZXcgQXJyYXkoZVswXSksbz0wLHI9MTtmb3IoO3I8ZS5sZW5ndGg7KXtsZXQgaT1zdC51bnBhY2soZSxyKSxzO3IrPXN0LnBhY2tlZExlbmd0aCxtKGVbcl0pJiYocz17b2Zmc2V0Om5ldyBsdyhlW3JdLGVbcisxXSxlW3IrMl0pfSkscis9MyxuW28rK109e21vZGVsTWF0cml4OmksYXR0cmlidXRlczpzfX1yZXR1cm4gbn1mdW5jdGlvbiBkdyh0KXtsZXQgZT10Lmxlbmd0aCxuPTErKEF0LnBhY2tlZExlbmd0aCsxKSplLG89bmV3IEZsb2F0MzJBcnJheShuKSxyPTA7b1tyKytdPWU7Zm9yKGxldCBpPTA7aTxlOysraSl7bGV0IHM9dFtpXTttKHMpPyhvW3IrK109MSxBdC5wYWNrKHRbaV0sbyxyKSk6b1tyKytdPTAscis9QXQucGFja2VkTGVuZ3RofXJldHVybiBvfWZ1bmN0aW9uIG13KHQpe2xldCBlPW5ldyBBcnJheSh0WzBdKSxuPTAsbz0xO2Zvcig7bzx0Lmxlbmd0aDspdFtvKytdPT09MSYmKGVbbl09QXQudW5wYWNrKHQsbykpLCsrbixvKz1BdC5wYWNrZWRMZW5ndGg7cmV0dXJuIGV9dmFyIHZpLGNhLHMwPSQoKCk9Pnt2ZSgpO0RlKCk7ZnQoKTtIdCgpOyR0KCk7eGkoKTtZZSgpOyRlKCk7YW4oKTtjaSgpO1plKCk7a24oKTtwdygpO3NjKCk7dmk9e307dmkuY29tYmluZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlLG4sbz10Lmluc3RhbmNlcyxyPW8ubGVuZ3RoLGkscyxmPSExO3I+MCYmKGU9RE0odCksZS5sZW5ndGg+MCYmKG49R2UuY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zKGVbMF0pLHQuY3JlYXRlUGlja09mZnNldHMmJihpPUJNKG8sZSkpKSxtKG9bMF0uYXR0cmlidXRlcykmJm0ob1swXS5hdHRyaWJ1dGVzLm9mZnNldCkmJihzPW5ldyBBcnJheShyKSxmPSEwKSk7bGV0IHU9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpO2ZvcihsZXQgbD0wO2w8cjsrK2wpe2xldCBwPW9bbF0sZD1wLmdlb21ldHJ5O20oZCkmJih1W2xdPWQuYm91bmRpbmdTcGhlcmUsY1tsXT1kLmJvdW5kaW5nU3BoZXJlQ1YsZiYmKHNbbF09cC5nZW9tZXRyeS5vZmZzZXRBdHRyaWJ1dGUpKTtsZXQgaD1wLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksXz1wLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk7bShoKSYmbShfKSYmKG0oaC5ib3VuZGluZ1NwaGVyZSkmJm0oXy5ib3VuZGluZ1NwaGVyZSkmJih1W2xdPUF0LnVuaW9uKGguYm91bmRpbmdTcGhlcmUsXy5ib3VuZGluZ1NwaGVyZSkpLG0oaC5ib3VuZGluZ1NwaGVyZUNWKSYmbShfLmJvdW5kaW5nU3BoZXJlQ1YpJiYoY1tsXT1BdC51bmlvbihoLmJvdW5kaW5nU3BoZXJlQ1YsXy5ib3VuZGluZ1NwaGVyZUNWKSkpfXJldHVybntnZW9tZXRyaWVzOmUsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxhdHRyaWJ1dGVMb2NhdGlvbnM6bixwaWNrT2Zmc2V0czppLG9mZnNldEluc3RhbmNlRXh0ZW5kOnMsYm91bmRpbmdTcGhlcmVzOnUsYm91bmRpbmdTcGhlcmVzQ1Y6Y319O3ZpLnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtsZXQgbj1uZXcgRmxvYXQ2NEFycmF5KEdNKHQpKSxvPVtdLHI9e30saT10Lmxlbmd0aCxzPTA7bltzKytdPWk7Zm9yKGxldCBmPTA7ZjxpO2YrKyl7bGV0IHU9dFtmXSxjPW0odSk7aWYobltzKytdPWM/MTowLCFjKWNvbnRpbnVlO25bcysrXT11LnByaW1pdGl2ZVR5cGUsbltzKytdPXUuZ2VvbWV0cnlUeXBlLG5bcysrXT11Lm9mZnNldEF0dHJpYnV0ZT8/LTE7bGV0IGw9bSh1LmJvdW5kaW5nU3BoZXJlKT8xOjA7bltzKytdPWwsbCYmQXQucGFjayh1LmJvdW5kaW5nU3BoZXJlLG4scykscys9QXQucGFja2VkTGVuZ3RoO2xldCBwPW0odS5ib3VuZGluZ1NwaGVyZUNWKT8xOjA7bltzKytdPXAscCYmQXQucGFjayh1LmJvdW5kaW5nU3BoZXJlQ1YsbixzKSxzKz1BdC5wYWNrZWRMZW5ndGg7bGV0IGQ9dS5hdHRyaWJ1dGVzLGg9W107Zm9yKGxldCBnIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShnKSYmbShkW2ddKSYmKGgucHVzaChnKSxtKHJbZ10pfHwocltnXT1vLmxlbmd0aCxvLnB1c2goZykpKTtuW3MrK109aC5sZW5ndGg7Zm9yKGxldCBnPTA7ZzxoLmxlbmd0aDtnKyspe2xldCBiPWhbZ10sdz1kW2JdO25bcysrXT1yW2JdLG5bcysrXT13LmNvbXBvbmVudERhdGF0eXBlLG5bcysrXT13LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbltzKytdPXcubm9ybWFsaXplPzE6MCxuW3MrK109dy52YWx1ZXMubGVuZ3RoLG4uc2V0KHcudmFsdWVzLHMpLHMrPXcudmFsdWVzLmxlbmd0aH1sZXQgXz1tKHUuaW5kaWNlcyk/dS5pbmRpY2VzLmxlbmd0aDowO25bcysrXT1fLF8+MCYmKG4uc2V0KHUuaW5kaWNlcyxzKSxzKz1fKX1yZXR1cm4gZS5wdXNoKG4uYnVmZmVyKSx7c3RyaW5nVGFibGU6byxwYWNrZWREYXRhOm59fTt2aS51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCl7bGV0IGU9dC5zdHJpbmdUYWJsZSxuPXQucGFja2VkRGF0YSxvLHI9bmV3IEFycmF5KG5bMF0pLGk9MCxzPTE7Zm9yKDtzPG4ubGVuZ3RoOyl7aWYoIShuW3MrK109PT0xKSl7cltpKytdPXZvaWQgMDtjb250aW51ZX1sZXQgdT1uW3MrK10sYz1uW3MrK10sbD1uW3MrK107bD09PS0xJiYobD12b2lkIDApO2xldCBwLGQ7bltzKytdPT09MSYmKHA9QXQudW5wYWNrKG4scykpLHMrPUF0LnBhY2tlZExlbmd0aCxuW3MrK109PT0xJiYoZD1BdC51bnBhY2sobixzKSkscys9QXQucGFja2VkTGVuZ3RoO2xldCBnLGIsdyxPPW5ldyBpZSxFPW5bcysrXTtmb3Iobz0wO288RTtvKyspe2xldCB4PWVbbltzKytdXSxNPW5bcysrXTt3PW5bcysrXTtsZXQgTj1uW3MrK10hPT0wO2c9bltzKytdLGI9ZXQuY3JlYXRlVHlwZWRBcnJheShNLGcpO2ZvcihsZXQgRj0wO0Y8ZztGKyspYltGXT1uW3MrK107T1t4XT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOk0sY29tcG9uZW50c1BlckF0dHJpYnV0ZTp3LG5vcm1hbGl6ZTpOLHZhbHVlczpifSl9bGV0IFQ7aWYoZz1uW3MrK10sZz4wKXtsZXQgeD1iLmxlbmd0aC93O2ZvcihUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoeCxnKSxvPTA7bzxnO28rKylUW29dPW5bcysrXX1yW2krK109bmV3IFV0KHtwcmltaXRpdmVUeXBlOnUsZ2VvbWV0cnlUeXBlOmMsYm91bmRpbmdTcGhlcmU6cCxib3VuZGluZ1NwaGVyZUNWOmQsaW5kaWNlczpULGF0dHJpYnV0ZXM6TyxvZmZzZXRBdHRyaWJ1dGU6bH0pfXJldHVybiByfTt2aS5wYWNrQ29tYmluZUdlb21ldHJ5UGFyYW1ldGVycz1mdW5jdGlvbih0LGUpe2xldCBuPXQuY3JlYXRlR2VvbWV0cnlSZXN1bHRzLG89bi5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrKyllLnB1c2gobltyXS5wYWNrZWREYXRhLmJ1ZmZlcik7cmV0dXJue2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxwYWNrZWRJbnN0YW5jZXM6Vk0odC5pbnN0YW5jZXMsZSksZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGlzR2VvZ3JhcGhpYzp0LnByb2plY3Rpb24gaW5zdGFuY2VvZiBlbyxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOnQuZWxlbWVudEluZGV4VWludFN1cHBvcnRlZCxzY2VuZTNET25seTp0LnNjZW5lM0RPbmx5LHZlcnRleENhY2hlT3B0aW1pemU6dC52ZXJ0ZXhDYWNoZU9wdGltaXplLGNvbXByZXNzVmVydGljZXM6dC5jb21wcmVzc1ZlcnRpY2VzLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgsY3JlYXRlUGlja09mZnNldHM6dC5jcmVhdGVQaWNrT2Zmc2V0c319O3ZpLnVucGFja0NvbWJpbmVHZW9tZXRyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7bGV0IGU9ek0odC5wYWNrZWRJbnN0YW5jZXMpLG49dC5jcmVhdGVHZW9tZXRyeVJlc3VsdHMsbz1uLmxlbmd0aCxyPTA7Zm9yKGxldCBmPTA7ZjxvO2YrKyl7bGV0IHU9dmkudW5wYWNrQ3JlYXRlR2VvbWV0cnlSZXN1bHRzKG5bZl0pLGM9dS5sZW5ndGg7Zm9yKGxldCBsPTA7bDxjO2wrKyl7bGV0IHA9dVtsXSxkPWVbcl07ZC5nZW9tZXRyeT1wLCsrcn19bGV0IGk9WS5jbG9uZSh0LmVsbGlwc29pZCkscz10LmlzR2VvZ3JhcGhpYz9uZXcgZW8oaSk6bmV3IHJvKGkpO3JldHVybntpbnN0YW5jZXM6ZSxlbGxpcHNvaWQ6aSxwcm9qZWN0aW9uOnMsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDpzdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxjcmVhdGVQaWNrT2Zmc2V0czp0LmNyZWF0ZVBpY2tPZmZzZXRzfX07dmkucGFja0NvbWJpbmVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXttKHQuZ2VvbWV0cmllcykmJmtNKHQuZ2VvbWV0cmllcyxlKTtsZXQgbj1kdyh0LmJvdW5kaW5nU3BoZXJlcyksbz1kdyh0LmJvdW5kaW5nU3BoZXJlc0NWKTtyZXR1cm4gZS5wdXNoKG4uYnVmZmVyLG8uYnVmZmVyKSx7Z2VvbWV0cmllczp0Lmdlb21ldHJpZXMsYXR0cmlidXRlTG9jYXRpb25zOnQuYXR0cmlidXRlTG9jYXRpb25zLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgscGlja09mZnNldHM6dC5waWNrT2Zmc2V0cyxvZmZzZXRJbnN0YW5jZUV4dGVuZDp0Lm9mZnNldEluc3RhbmNlRXh0ZW5kLGJvdW5kaW5nU3BoZXJlczpuLGJvdW5kaW5nU3BoZXJlc0NWOm99fTt2aS51bnBhY2tDb21iaW5lR2VvbWV0cnlSZXN1bHRzPWZ1bmN0aW9uKHQpe3JldHVybntnZW9tZXRyaWVzOnQuZ2VvbWV0cmllcyxhdHRyaWJ1dGVMb2NhdGlvbnM6dC5hdHRyaWJ1dGVMb2NhdGlvbnMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxwaWNrT2Zmc2V0czp0LnBpY2tPZmZzZXRzLG9mZnNldEluc3RhbmNlRXh0ZW5kOnQub2Zmc2V0SW5zdGFuY2VFeHRlbmQsYm91bmRpbmdTcGhlcmVzOm13KHQuYm91bmRpbmdTcGhlcmVzKSxib3VuZGluZ1NwaGVyZXNDVjptdyh0LmJvdW5kaW5nU3BoZXJlc0NWKX19O2NhPXZpfSk7ZnVuY3Rpb24gak0odCl7bGV0IGUsbj10Lm5hbWUsbz10Lm1lc3NhZ2U7bShuKSYmbShvKT9lPWAke259OiAke299YDplPXQudG9TdHJpbmcoKTtsZXQgcj10LnN0YWNrO3JldHVybiBtKHIpJiYoZSs9YAoke3J9YCksZX12YXIgaHcsX3c9JCgoKT0+e2Z0KCk7aHc9ak19KTt2YXIgYzA9e307bGUoYzAse2RlZmF1bHQ6KCk9PlVlfSk7ZnVuY3Rpb24gSE0odCl7YXN5bmMgZnVuY3Rpb24gZSh7ZGF0YTpvfSl7bGV0IHI9W10saT17aWQ6by5pZCxyZXN1bHQ6dm9pZCAwLGVycm9yOnZvaWQgMH07c2VsZi5DRVNJVU1fQkFTRV9VUkw9by5iYXNlVXJsO3RyeXtsZXQgcz1hd2FpdCB0KG8ucGFyYW1ldGVycyxyKTtpLnJlc3VsdD1zfWNhdGNoKHMpe3MgaW5zdGFuY2VvZiBFcnJvcj9pLmVycm9yPXtuYW1lOnMubmFtZSxtZXNzYWdlOnMubWVzc2FnZSxzdGFjazpzLnN0YWNrfTppLmVycm9yPXN9by5jYW5UcmFuc2ZlckFycmF5QnVmZmVyfHwoci5sZW5ndGg9MCk7dHJ5e3Bvc3RNZXNzYWdlKGkscil9Y2F0Y2gocyl7aS5yZXN1bHQ9dm9pZCAwLGkuZXJyb3I9YHBvc3RNZXNzYWdlIGZhaWxlZCB3aXRoIGVycm9yOiAke2h3KHMpfQogIHdpdGggcmVzcG9uc2VNZXNzYWdlOiAke0pTT04uc3RyaW5naWZ5KGkpfWAscG9zdE1lc3NhZ2UoaSl9fWZ1bmN0aW9uIG4obyl7cG9zdE1lc3NhZ2Uoe2lkOm8uZGF0YT8uaWQsZXJyb3I6YHBvc3RNZXNzYWdlIGZhaWxlZCB3aXRoIGVycm9yOiAke0pTT04uc3RyaW5naWZ5KG8pfWB9KX1yZXR1cm4gc2VsZi5vbm1lc3NhZ2U9ZSxzZWxmLm9ubWVzc2FnZWVycm9yPW4sc2VsZn12YXIgVWUsWm49JCgoKT0+e193KCk7VWU9SE19KTt2YXIgYTA9e307bGUoYTAse2RlZmF1bHQ6KCk9PktNfSk7ZnVuY3Rpb24gcU0odCxlKXtsZXQgbj1jYS51bnBhY2tDb21iaW5lR2VvbWV0cnlQYXJhbWV0ZXJzKHQpLG89Y2EuY29tYmluZUdlb21ldHJ5KG4pO3JldHVybiBjYS5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cyhvLGUpfXZhciBLTSxmMD0kKCgpPT57czAoKTtabigpO0tNPVVlKHFNKX0pO3ZhciBXTSxhZSxEbz0kKCgpPT57V009e05PTkU6MCxUT1A6MSxBTEw6Mn0sYWU9T2JqZWN0LmZyZWV6ZShXTSl9KTtmdW5jdGlvbiB6bih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24/PyExLHRoaXMubm9ybWFsPXQubm9ybWFsPz8hMSx0aGlzLnN0PXQuc3Q/PyExLHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50Pz8hMSx0aGlzLnRhbmdlbnQ9dC50YW5nZW50Pz8hMSx0aGlzLmNvbG9yPXQuY29sb3I/PyExfXZhciBwdCx4bz0kKCgpPT57eWUoKTtmdCgpO0h0KCk7em4uUE9TSVRJT05fT05MWT1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITB9KSk7em4uUE9TSVRJT05fQU5EX05PUk1BTD1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITAsbm9ybWFsOiEwfSkpO3puLlBPU0lUSU9OX05PUk1BTF9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgem4oe3Bvc2l0aW9uOiEwLG5vcm1hbDohMCxzdDohMH0pKTt6bi5QT1NJVElPTl9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgem4oe3Bvc2l0aW9uOiEwLHN0OiEwfSkpO3puLlBPU0lUSU9OX0FORF9DT0xPUj1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITAsY29sb3I6ITB9KSk7em4uQUxMPU9iamVjdC5mcmVlemUobmV3IHpuKHtwb3NpdGlvbjohMCxub3JtYWw6ITAsc3Q6ITAsdGFuZ2VudDohMCxiaXRhbmdlbnQ6ITB9KSk7em4uREVGQVVMVD16bi5QT1NJVElPTl9OT1JNQUxfQU5EX1NUO3puLnBhY2tlZExlbmd0aD02O3puLnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBuPW4/PzAsZVtuKytdPXQucG9zaXRpb24/MTowLGVbbisrXT10Lm5vcm1hbD8xOjAsZVtuKytdPXQuc3Q/MTowLGVbbisrXT10LnRhbmdlbnQ/MTowLGVbbisrXT10LmJpdGFuZ2VudD8xOjAsZVtuXT10LmNvbG9yPzE6MCxlfTt6bi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBlPWU/PzAsbShuKXx8KG49bmV3IHpuKSxuLnBvc2l0aW9uPXRbZSsrXT09PTEsbi5ub3JtYWw9dFtlKytdPT09MSxuLnN0PXRbZSsrXT09PTEsbi50YW5nZW50PXRbZSsrXT09PTEsbi5iaXRhbmdlbnQ9dFtlKytdPT09MSxuLmNvbG9yPXRbZV09PT0xLG59O3puLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKXx8KGU9bmV3IHpuKSxlLnBvc2l0aW9uPXQucG9zaXRpb24sZS5ub3JtYWw9dC5ub3JtYWwsZS5zdD10LnN0LGUudGFuZ2VudD10LnRhbmdlbnQsZS5iaXRhbmdlbnQ9dC5iaXRhbmdlbnQsZS5jb2xvcj10LmNvbG9yLGV9O3B0PXpufSk7ZnVuY3Rpb24gaXIodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5taW5pbXVtLG49dC5tYXhpbXVtO2lmKHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbiksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO2xldCBvPXQudmVydGV4Rm9ybWF0Pz9wdC5ERUZBVUxUO3RoaXMuX21pbmltdW09YS5jbG9uZShlKSx0aGlzLl9tYXhpbXVtPWEuY2xvbmUobiksdGhpcy5fdmVydGV4Rm9ybWF0PW8sdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUJveEdlb21ldHJ5In12YXIgWE0sZ3csQXcsYncseXcsdTAseGYsbDA9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7WWUoKTskZSgpO2FuKCk7RG8oKTt0bigpO3hvKCk7WE09bmV3IGE7aXIuZnJvbURpbWVuc2lvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5kaW1lbnNpb25zO3kudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGEpO3JldHVybiBuZXcgaXIoe21pbmltdW06YS5uZWdhdGUobixuZXcgYSksbWF4aW11bTpuLHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9KX07aXIuZnJvbUF4aXNBbGlnbmVkQm91bmRpbmdCb3g9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiYm91bmRpbmdCb3giLHQpLG5ldyBpcih7bWluaW11bTp0Lm1pbmltdW0sbWF4aW11bTp0Lm1heGltdW19KX07aXIucGFja2VkTGVuZ3RoPTIqYS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzE7aXIucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxhLnBhY2sodC5fbWluaW11bSxlLG4pLGEucGFjayh0Ll9tYXhpbXVtLGUsbithLnBhY2tlZExlbmd0aCkscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKzIqYS5wYWNrZWRMZW5ndGgpLGVbbisyKmEucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aF09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtndz1uZXcgYSxBdz1uZXcgYSxidz1uZXcgcHQseXc9e21pbmltdW06Z3csbWF4aW11bTpBdyx2ZXJ0ZXhGb3JtYXQ6Yncsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07aXIudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89YS51bnBhY2sodCxlLGd3KSxyPWEudW5wYWNrKHQsZSthLnBhY2tlZExlbmd0aCxBdyksaT1wdC51bnBhY2sodCxlKzIqYS5wYWNrZWRMZW5ndGgsYncpLHM9dFtlKzIqYS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoXTtyZXR1cm4gbShuKT8obi5fbWluaW11bT1hLmNsb25lKG8sbi5fbWluaW11bSksbi5fbWF4aW11bT1hLmNsb25lKHIsbi5fbWF4aW11bSksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGksbi5fdmVydGV4Rm9ybWF0KSxuLl9vZmZzZXRBdHRyaWJ1dGU9cz09PS0xP3ZvaWQgMDpzLG4pOih5dy5vZmZzZXRBdHRyaWJ1dGU9cz09PS0xP3ZvaWQgMDpzLG5ldyBpcih5dykpfTtpci5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9taW5pbXVtLG49dC5fbWF4aW11bSxvPXQuX3ZlcnRleEZvcm1hdDtpZihhLmVxdWFscyhlLG4pKXJldHVybjtsZXQgcj1uZXcgaWUsaSxzO2lmKG8ucG9zaXRpb24mJihvLnN0fHxvLm5vcm1hbHx8by50YW5nZW50fHxvLmJpdGFuZ2VudCkpe2lmKG8ucG9zaXRpb24mJihzPW5ldyBGbG9hdDY0QXJyYXkoNzIpLHNbMF09ZS54LHNbMV09ZS55LHNbMl09bi56LHNbM109bi54LHNbNF09ZS55LHNbNV09bi56LHNbNl09bi54LHNbN109bi55LHNbOF09bi56LHNbOV09ZS54LHNbMTBdPW4ueSxzWzExXT1uLnosc1sxMl09ZS54LHNbMTNdPWUueSxzWzE0XT1lLnosc1sxNV09bi54LHNbMTZdPWUueSxzWzE3XT1lLnosc1sxOF09bi54LHNbMTldPW4ueSxzWzIwXT1lLnosc1syMV09ZS54LHNbMjJdPW4ueSxzWzIzXT1lLnosc1syNF09bi54LHNbMjVdPWUueSxzWzI2XT1lLnosc1syN109bi54LHNbMjhdPW4ueSxzWzI5XT1lLnosc1szMF09bi54LHNbMzFdPW4ueSxzWzMyXT1uLnosc1szM109bi54LHNbMzRdPWUueSxzWzM1XT1uLnosc1szNl09ZS54LHNbMzddPWUueSxzWzM4XT1lLnosc1szOV09ZS54LHNbNDBdPW4ueSxzWzQxXT1lLnosc1s0Ml09ZS54LHNbNDNdPW4ueSxzWzQ0XT1uLnosc1s0NV09ZS54LHNbNDZdPWUueSxzWzQ3XT1uLnosc1s0OF09ZS54LHNbNDldPW4ueSxzWzUwXT1lLnosc1s1MV09bi54LHNbNTJdPW4ueSxzWzUzXT1lLnosc1s1NF09bi54LHNbNTVdPW4ueSxzWzU2XT1uLnosc1s1N109ZS54LHNbNThdPW4ueSxzWzU5XT1uLnosc1s2MF09ZS54LHNbNjFdPWUueSxzWzYyXT1lLnosc1s2M109bi54LHNbNjRdPWUueSxzWzY1XT1lLnosc1s2Nl09bi54LHNbNjddPWUueSxzWzY4XT1uLnosc1s2OV09ZS54LHNbNzBdPWUueSxzWzcxXT1uLnosci5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnN9KSksby5ub3JtYWwpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MCxjWzFdPTAsY1syXT0xLGNbM109MCxjWzRdPTAsY1s1XT0xLGNbNl09MCxjWzddPTAsY1s4XT0xLGNbOV09MCxjWzEwXT0wLGNbMTFdPTEsY1sxMl09MCxjWzEzXT0wLGNbMTRdPS0xLGNbMTVdPTAsY1sxNl09MCxjWzE3XT0tMSxjWzE4XT0wLGNbMTldPTAsY1syMF09LTEsY1syMV09MCxjWzIyXT0wLGNbMjNdPS0xLGNbMjRdPTEsY1syNV09MCxjWzI2XT0wLGNbMjddPTEsY1syOF09MCxjWzI5XT0wLGNbMzBdPTEsY1szMV09MCxjWzMyXT0wLGNbMzNdPTEsY1szNF09MCxjWzM1XT0wLGNbMzZdPS0xLGNbMzddPTAsY1szOF09MCxjWzM5XT0tMSxjWzQwXT0wLGNbNDFdPTAsY1s0Ml09LTEsY1s0M109MCxjWzQ0XT0wLGNbNDVdPS0xLGNbNDZdPTAsY1s0N109MCxjWzQ4XT0wLGNbNDldPTEsY1s1MF09MCxjWzUxXT0wLGNbNTJdPTEsY1s1M109MCxjWzU0XT0wLGNbNTVdPTEsY1s1Nl09MCxjWzU3XT0wLGNbNThdPTEsY1s1OV09MCxjWzYwXT0wLGNbNjFdPS0xLGNbNjJdPTAsY1s2M109MCxjWzY0XT0tMSxjWzY1XT0wLGNbNjZdPTAsY1s2N109LTEsY1s2OF09MCxjWzY5XT0wLGNbNzBdPS0xLGNbNzFdPTAsci5ub3JtYWw9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmN9KX1pZihvLnN0KXtsZXQgYz1uZXcgRmxvYXQzMkFycmF5KDQ4KTtjWzBdPTAsY1sxXT0wLGNbMl09MSxjWzNdPTAsY1s0XT0xLGNbNV09MSxjWzZdPTAsY1s3XT0xLGNbOF09MSxjWzldPTAsY1sxMF09MCxjWzExXT0wLGNbMTJdPTAsY1sxM109MSxjWzE0XT0xLGNbMTVdPTEsY1sxNl09MCxjWzE3XT0wLGNbMThdPTEsY1sxOV09MCxjWzIwXT0xLGNbMjFdPTEsY1syMl09MCxjWzIzXT0xLGNbMjRdPTEsY1syNV09MCxjWzI2XT0wLGNbMjddPTAsY1syOF09MCxjWzI5XT0xLGNbMzBdPTEsY1szMV09MSxjWzMyXT0xLGNbMzNdPTAsY1szNF09MCxjWzM1XT0wLGNbMzZdPTAsY1szN109MSxjWzM4XT0xLGNbMzldPTEsY1s0MF09MCxjWzQxXT0wLGNbNDJdPTEsY1s0M109MCxjWzQ0XT0xLGNbNDVdPTEsY1s0Nl09MCxjWzQ3XT0xLHIuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmN9KX1pZihvLnRhbmdlbnQpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MSxjWzFdPTAsY1syXT0wLGNbM109MSxjWzRdPTAsY1s1XT0wLGNbNl09MSxjWzddPTAsY1s4XT0wLGNbOV09MSxjWzEwXT0wLGNbMTFdPTAsY1sxMl09LTEsY1sxM109MCxjWzE0XT0wLGNbMTVdPS0xLGNbMTZdPTAsY1sxN109MCxjWzE4XT0tMSxjWzE5XT0wLGNbMjBdPTAsY1syMV09LTEsY1syMl09MCxjWzIzXT0wLGNbMjRdPTAsY1syNV09MSxjWzI2XT0wLGNbMjddPTAsY1syOF09MSxjWzI5XT0wLGNbMzBdPTAsY1szMV09MSxjWzMyXT0wLGNbMzNdPTAsY1szNF09MSxjWzM1XT0wLGNbMzZdPTAsY1szN109LTEsY1szOF09MCxjWzM5XT0wLGNbNDBdPS0xLGNbNDFdPTAsY1s0Ml09MCxjWzQzXT0tMSxjWzQ0XT0wLGNbNDVdPTAsY1s0Nl09LTEsY1s0N109MCxjWzQ4XT0tMSxjWzQ5XT0wLGNbNTBdPTAsY1s1MV09LTEsY1s1Ml09MCxjWzUzXT0wLGNbNTRdPS0xLGNbNTVdPTAsY1s1Nl09MCxjWzU3XT0tMSxjWzU4XT0wLGNbNTldPTAsY1s2MF09MSxjWzYxXT0wLGNbNjJdPTAsY1s2M109MSxjWzY0XT0wLGNbNjVdPTAsY1s2Nl09MSxjWzY3XT0wLGNbNjhdPTAsY1s2OV09MSxjWzcwXT0wLGNbNzFdPTAsci50YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpjfSl9aWYoby5iaXRhbmdlbnQpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MCxjWzFdPTEsY1syXT0wLGNbM109MCxjWzRdPTEsY1s1XT0wLGNbNl09MCxjWzddPTEsY1s4XT0wLGNbOV09MCxjWzEwXT0xLGNbMTFdPTAsY1sxMl09MCxjWzEzXT0xLGNbMTRdPTAsY1sxNV09MCxjWzE2XT0xLGNbMTddPTAsY1sxOF09MCxjWzE5XT0xLGNbMjBdPTAsY1syMV09MCxjWzIyXT0xLGNbMjNdPTAsY1syNF09MCxjWzI1XT0wLGNbMjZdPTEsY1syN109MCxjWzI4XT0wLGNbMjldPTEsY1szMF09MCxjWzMxXT0wLGNbMzJdPTEsY1szM109MCxjWzM0XT0wLGNbMzVdPTEsY1szNl09MCxjWzM3XT0wLGNbMzhdPTEsY1szOV09MCxjWzQwXT0wLGNbNDFdPTEsY1s0Ml09MCxjWzQzXT0wLGNbNDRdPTEsY1s0NV09MCxjWzQ2XT0wLGNbNDddPTEsY1s0OF09MCxjWzQ5XT0wLGNbNTBdPTEsY1s1MV09MCxjWzUyXT0wLGNbNTNdPTEsY1s1NF09MCxjWzU1XT0wLGNbNTZdPTEsY1s1N109MCxjWzU4XT0wLGNbNTldPTEsY1s2MF09MCxjWzYxXT0wLGNbNjJdPTEsY1s2M109MCxjWzY0XT0wLGNbNjVdPTEsY1s2Nl09MCxjWzY3XT0wLGNbNjhdPTEsY1s2OV09MCxjWzcwXT0wLGNbNzFdPTEsci5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmN9KX1pPW5ldyBVaW50MTZBcnJheSgzNiksaVswXT0wLGlbMV09MSxpWzJdPTIsaVszXT0wLGlbNF09MixpWzVdPTMsaVs2XT02LGlbN109NSxpWzhdPTQsaVs5XT03LGlbMTBdPTYsaVsxMV09NCxpWzEyXT04LGlbMTNdPTksaVsxNF09MTAsaVsxNV09OCxpWzE2XT0xMCxpWzE3XT0xMSxpWzE4XT0xNCxpWzE5XT0xMyxpWzIwXT0xMixpWzIxXT0xNSxpWzIyXT0xNCxpWzIzXT0xMixpWzI0XT0xOCxpWzI1XT0xNyxpWzI2XT0xNixpWzI3XT0xOSxpWzI4XT0xOCxpWzI5XT0xNixpWzMwXT0yMCxpWzMxXT0yMSxpWzMyXT0yMixpWzMzXT0yMCxpWzM0XT0yMixpWzM1XT0yM31lbHNlIHM9bmV3IEZsb2F0NjRBcnJheSgyNCksc1swXT1lLngsc1sxXT1lLnksc1syXT1lLnosc1szXT1uLngsc1s0XT1lLnksc1s1XT1lLnosc1s2XT1uLngsc1s3XT1uLnksc1s4XT1lLnosc1s5XT1lLngsc1sxMF09bi55LHNbMTFdPWUueixzWzEyXT1lLngsc1sxM109ZS55LHNbMTRdPW4ueixzWzE1XT1uLngsc1sxNl09ZS55LHNbMTddPW4ueixzWzE4XT1uLngsc1sxOV09bi55LHNbMjBdPW4ueixzWzIxXT1lLngsc1syMl09bi55LHNbMjNdPW4ueixyLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pLGk9bmV3IFVpbnQxNkFycmF5KDM2KSxpWzBdPTQsaVsxXT01LGlbMl09NixpWzNdPTQsaVs0XT02LGlbNV09NyxpWzZdPTEsaVs3XT0wLGlbOF09MyxpWzldPTEsaVsxMF09MyxpWzExXT0yLGlbMTJdPTEsaVsxM109NixpWzE0XT01LGlbMTVdPTEsaVsxNl09MixpWzE3XT02LGlbMThdPTIsaVsxOV09MyxpWzIwXT03LGlbMjFdPTIsaVsyMl09NyxpWzIzXT02LGlbMjRdPTMsaVsyNV09MCxpWzI2XT00LGlbMjddPTMsaVsyOF09NCxpWzI5XT03LGlbMzBdPTAsaVszMV09MSxpWzMyXT01LGlbMzNdPTAsaVszNF09NSxpWzM1XT00O2xldCBmPWEuc3VidHJhY3QobixlLFhNKSx1PWEubWFnbml0dWRlKGYpKi41O2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGM9cy5sZW5ndGgsbD10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxwPW5ldyBVaW50OEFycmF5KGMvMykuZmlsbChsKTtyLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnB9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOnIsaW5kaWNlczppLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBBdChhLlpFUk8sdSksb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtpci5nZXRVbml0Qm94PWZ1bmN0aW9uKCl7cmV0dXJuIG0odTApfHwodTA9aXIuY3JlYXRlR2VvbWV0cnkoaXIuZnJvbURpbWVuc2lvbnMoe2RpbWVuc2lvbnM6bmV3IGEoMSwxLDEpLHZlcnRleEZvcm1hdDpwdC5QT1NJVElPTl9PTkxZfSkpKSx1MH07eGY9aXJ9KTt2YXIgcDA9e307bGUocDAse2RlZmF1bHQ6KCk9PiRNfSk7ZnVuY3Rpb24gWU0odCxlKXtyZXR1cm4gbShlKSYmKHQ9eGYudW5wYWNrKHQsZSkpLHhmLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciAkTSxkMD0kKCgpPT57bDAoKTtmdCgpOyRNPVlNfSk7ZnVuY3Rpb24gYWkodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5taW5pbXVtLG49dC5tYXhpbXVtO2lmKHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbiksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX21pbj1hLmNsb25lKGUpLHRoaXMuX21heD1hLmNsb25lKG4pLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnkifXZhciBaTSxUdyxPdyx3dyxtMCxFdz0kKCgpPT57dmUoKTtEdCgpO1d0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO3RuKCk7Wk09bmV3IGE7YWkuZnJvbURpbWVuc2lvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5kaW1lbnNpb25zO3kudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGEpO3JldHVybiBuZXcgYWkoe21pbmltdW06YS5uZWdhdGUobixuZXcgYSksbWF4aW11bTpuLG9mZnNldEF0dHJpYnV0ZTp0Lm9mZnNldEF0dHJpYnV0ZX0pfTthaS5mcm9tQXhpc0FsaWduZWRCb3VuZGluZ0JveD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJib3VuZGluZEJveCIsdCksbmV3IGFpKHttaW5pbXVtOnQubWluaW11bSxtYXhpbXVtOnQubWF4aW11bX0pfTthaS5wYWNrZWRMZW5ndGg9MiphLnBhY2tlZExlbmd0aCsxO2FpLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsYS5wYWNrKHQuX21pbixlLG4pLGEucGFjayh0Ll9tYXgsZSxuK2EucGFja2VkTGVuZ3RoKSxlW24rYS5wYWNrZWRMZW5ndGgqMl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtUdz1uZXcgYSxPdz1uZXcgYSx3dz17bWluaW11bTpUdyxtYXhpbXVtOk93LG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O2FpLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxUdykscj1hLnVucGFjayh0LGUrYS5wYWNrZWRMZW5ndGgsT3cpLGk9dFtlK2EucGFja2VkTGVuZ3RoKjJdO3JldHVybiBtKG4pPyhuLl9taW49YS5jbG9uZShvLG4uX21pbiksbi5fbWF4PWEuY2xvbmUocixuLl9tYXgpLG4uX29mZnNldEF0dHJpYnV0ZT1pPT09LTE/dm9pZCAwOmksbik6KHd3Lm9mZnNldEF0dHJpYnV0ZT1pPT09LTE/dm9pZCAwOmksbmV3IGFpKHd3KSl9O2FpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX21pbixuPXQuX21heDtpZihhLmVxdWFscyhlLG4pKXJldHVybjtsZXQgbz1uZXcgaWUscj1uZXcgVWludDE2QXJyYXkoMjQpLGk9bmV3IEZsb2F0NjRBcnJheSgyNCk7aVswXT1lLngsaVsxXT1lLnksaVsyXT1lLnosaVszXT1uLngsaVs0XT1lLnksaVs1XT1lLnosaVs2XT1uLngsaVs3XT1uLnksaVs4XT1lLnosaVs5XT1lLngsaVsxMF09bi55LGlbMTFdPWUueixpWzEyXT1lLngsaVsxM109ZS55LGlbMTRdPW4ueixpWzE1XT1uLngsaVsxNl09ZS55LGlbMTddPW4ueixpWzE4XT1uLngsaVsxOV09bi55LGlbMjBdPW4ueixpWzIxXT1lLngsaVsyMl09bi55LGlbMjNdPW4ueixvLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aX0pLHJbMF09NCxyWzFdPTUsclsyXT01LHJbM109NixyWzRdPTYscls1XT03LHJbNl09NyxyWzddPTQscls4XT0wLHJbOV09MSxyWzEwXT0xLHJbMTFdPTIsclsxMl09MixyWzEzXT0zLHJbMTRdPTMsclsxNV09MCxyWzE2XT0wLHJbMTddPTQsclsxOF09MSxyWzE5XT01LHJbMjBdPTIsclsyMV09NixyWzIyXT0zLHJbMjNdPTc7bGV0IHM9YS5zdWJ0cmFjdChuLGUsWk0pLGY9YS5tYWduaXR1ZGUocykqLjU7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdT1pLmxlbmd0aCxjPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLGw9bmV3IFVpbnQ4QXJyYXkodS8zKS5maWxsKGMpO28uYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6bH0pfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6byxpbmRpY2VzOnIscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpuZXcgQXQoYS5aRVJPLGYpLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07bTA9YWl9KTt2YXIgaDA9e307bGUoaDAse2RlZmF1bHQ6KCk9PkpNfSk7ZnVuY3Rpb24gUU0odCxlKXtyZXR1cm4gbShlKSYmKHQ9bTAudW5wYWNrKHQsZSkpLG0wLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBKTSxfMD0kKCgpPT57RXcoKTtmdCgpO0pNPVFNfSk7ZnVuY3Rpb24gYWEodCxlLG4sbyxyLGkscyxmLHUsYyl7bGV0IGw9dCtlO2EubXVsdGlwbHlCeVNjYWxhcihvLE1hdGguY29zKGwpLCRwKSxhLm11bHRpcGx5QnlTY2FsYXIobixNYXRoLnNpbihsKSxSdyksYS5hZGQoJHAsUncsJHApO2xldCBwPU1hdGguY29zKHQpO3A9cCpwO2xldCBkPU1hdGguc2luKHQpO2Q9ZCpkO2xldCBfPWkvTWF0aC5zcXJ0KHMqcCtyKmQpL2Y7cmV0dXJuIHRlLmZyb21BeGlzQW5nbGUoJHAsXyxTdyksWi5mcm9tUXVhdGVybmlvbihTdyx4dyksWi5tdWx0aXBseUJ5VmVjdG9yKHh3LHUsYyksYS5ub3JtYWxpemUoYyxjKSxhLm11bHRpcGx5QnlTY2FsYXIoYyxmLGMpLGN9dmFyIGcwLCRwLFJ3LFN3LHh3LEN3LFB3LHkwLHROLGVOLG5OLG9OLFZyLEEwPSQoKCk9PntEdCgpO0t0KCk7VW4oKTtYbygpO2cwPXt9LCRwPW5ldyBhLFJ3PW5ldyBhLFN3PW5ldyB0ZSx4dz1uZXcgWjtDdz1uZXcgYSxQdz1uZXcgYSx5MD1uZXcgYSx0Tj1uZXcgYTtnMC5yYWlzZVBvc2l0aW9uc1RvSGVpZ2h0PWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1lLmVsbGlwc29pZCxyPWUuaGVpZ2h0LGk9ZS5leHRydWRlZEhlaWdodCxzPW4/dC5sZW5ndGgvMyoyOnQubGVuZ3RoLzMsZj1uZXcgRmxvYXQ2NEFycmF5KHMqMyksdT10Lmxlbmd0aCxjPW4/dTowO2ZvcihsZXQgbD0wO2w8dTtsKz0zKXtsZXQgcD1sKzEsZD1sKzIsaD1hLmZyb21BcnJheSh0LGwsQ3cpO28uc2NhbGVUb0dlb2RldGljU3VyZmFjZShoLGgpO2xldCBfPWEuY2xvbmUoaCxQdyksZz1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChoLHROKSxiPWEubXVsdGlwbHlCeVNjYWxhcihnLHIseTApO2EuYWRkKGgsYixoKSxuJiYoYS5tdWx0aXBseUJ5U2NhbGFyKGcsaSxiKSxhLmFkZChfLGIsXyksZltsK2NdPV8ueCxmW3ArY109Xy55LGZbZCtjXT1fLnopLGZbbF09aC54LGZbcF09aC55LGZbZF09aC56fXJldHVybiBmfTtlTj1uZXcgYSxuTj1uZXcgYSxvTj1uZXcgYTtnMC5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbil7bGV0IG89dC5zZW1pTWlub3JBeGlzLHI9dC5zZW1pTWFqb3JBeGlzLGk9dC5yb3RhdGlvbixzPXQuY2VudGVyLGY9dC5ncmFudWxhcml0eSo4LHU9bypvLGM9cipyLGw9cipvLHA9YS5tYWduaXR1ZGUocyksZD1hLm5vcm1hbGl6ZShzLGVOKSxoPWEuY3Jvc3MoYS5VTklUX1oscyxuTik7aD1hLm5vcm1hbGl6ZShoLGgpO2xldCBfPWEuY3Jvc3MoZCxoLG9OKSxnPTErTWF0aC5jZWlsKFAuUElfT1ZFUl9UV08vZiksYj1QLlBJX09WRVJfVFdPLyhnLTEpLHc9UC5QSV9PVkVSX1RXTy1nKmI7dzwwJiYoZy09TWF0aC5jZWlsKE1hdGguYWJzKHcpL2IpKTtsZXQgTz0yKihnKihnKzIpKSxFPWU/bmV3IEFycmF5KE8qMyk6dm9pZCAwLFQ9MCx4PUN3LE09UHcsTj1nKjQqMyxGPU4tMSxJPTAsdj1uP25ldyBBcnJheShOKTp2b2lkIDAsQixBLFMsQyxMO2Zvcih3PVAuUElfT1ZFUl9UV08seD1hYSh3LGksXyxoLHUsbCxjLHAsZCx4KSxlJiYoRVtUKytdPXgueCxFW1QrK109eC55LEVbVCsrXT14LnopLG4mJih2W0YtLV09eC56LHZbRi0tXT14LnksdltGLS1dPXgueCksdz1QLlBJX09WRVJfVFdPLWIsQj0xO0I8ZysxOysrQil7aWYoeD1hYSh3LGksXyxoLHUsbCxjLHAsZCx4KSxNPWFhKE1hdGguUEktdyxpLF8saCx1LGwsYyxwLGQsTSksZSl7Zm9yKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LFM9MipCKzIsQT0xO0E8Uy0xOysrQSlDPUEvKFMtMSksTD1hLmxlcnAoeCxNLEMseTApLEVbVCsrXT1MLngsRVtUKytdPUwueSxFW1QrK109TC56O0VbVCsrXT1NLngsRVtUKytdPU0ueSxFW1QrK109TS56fW4mJih2W0YtLV09eC56LHZbRi0tXT14LnksdltGLS1dPXgueCx2W0krK109TS54LHZbSSsrXT1NLnksdltJKytdPU0ueiksdz1QLlBJX09WRVJfVFdPLShCKzEpKmJ9Zm9yKEI9ZztCPjE7LS1CKXtpZih3PVAuUElfT1ZFUl9UV08tKEItMSkqYix4PWFhKC13LGksXyxoLHUsbCxjLHAsZCx4KSxNPWFhKHcrTWF0aC5QSSxpLF8saCx1LGwsYyxwLGQsTSksZSl7Zm9yKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LFM9MiooQi0xKSsyLEE9MTtBPFMtMTsrK0EpQz1BLyhTLTEpLEw9YS5sZXJwKHgsTSxDLHkwKSxFW1QrK109TC54LEVbVCsrXT1MLnksRVtUKytdPUwuejtFW1QrK109TS54LEVbVCsrXT1NLnksRVtUKytdPU0uen1uJiYodltGLS1dPXgueix2W0YtLV09eC55LHZbRi0tXT14LngsdltJKytdPU0ueCx2W0krK109TS55LHZbSSsrXT1NLnopfXc9UC5QSV9PVkVSX1RXTyx4PWFhKC13LGksXyxoLHUsbCxjLHAsZCx4KTtsZXQgej17fTtyZXR1cm4gZSYmKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LHoucG9zaXRpb25zPUUsei5udW1QdHM9ZyksbiYmKHZbRi0tXT14LnosdltGLS1dPXgueSx2W0YtLV09eC54LHoub3V0ZXJQb3NpdGlvbnM9diksen07VnI9ZzB9KTtmdW5jdGlvbiByTih0KXtpZih0PXQ/P0l0LkVNUFRZX09CSkVDVCwhbSh0Lmdlb21ldHJ5KSl0aHJvdyBuZXcgRCgib3B0aW9ucy5nZW9tZXRyeSBpcyByZXF1aXJlZC4iKTt0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpcy5tb2RlbE1hdHJpeD1zdC5jbG9uZSh0Lm1vZGVsTWF0cml4Pz9zdC5JREVOVElUWSksdGhpcy5pZD10LmlkLHRoaXMucGlja1ByaW1pdGl2ZT10LnBpY2tQcmltaXRpdmUsdGhpcy5hdHRyaWJ1dGVzPXQuYXR0cmlidXRlcz8/e30sdGhpcy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5PXZvaWQgMCx0aGlzLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnk9dm9pZCAwfXZhciBmbyxjYz0kKCgpPT57eWUoKTtmdCgpO0h0KCk7a24oKTtmbz1yTn0pO2Z1bmN0aW9uIFV3KHQsZSxuKXtsZXQgbz1lLnZlcnRleEZvcm1hdCxyPWUuY2VudGVyLGk9ZS5zZW1pTWFqb3JBeGlzLHM9ZS5zZW1pTWlub3JBeGlzLGY9ZS5lbGxpcHNvaWQsdT1lLnN0Um90YXRpb24sYz1uP3QubGVuZ3RoLzMqMjp0Lmxlbmd0aC8zLGw9ZS5zaGFkb3dWb2x1bWUscD1vLnN0P25ldyBGbG9hdDMyQXJyYXkoYyoyKTp2b2lkIDAsZD1vLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGg9by50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoYyozKTp2b2lkIDAsXz1vLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGc9bD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGI9MCx3PUl3LE89dncsRT1GdyxUPW5ldyBlbyhmKSx4PVQucHJvamVjdChmLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsSnApLEx3KSxNPWYuc2NhbGVUb0dlb2RldGljU3VyZmFjZShyLGZhKTtmLmdlb2RldGljU3VyZmFjZU5vcm1hbChNLE0pO2xldCBOPU53LEY9aU47aWYodSE9PTApe2xldCBMPXRlLmZyb21BeGlzQW5nbGUoTSx1LFQwKTtOPVouZnJvbVF1YXRlcm5pb24oTCxOKSxMPXRlLmZyb21BeGlzQW5nbGUoTSwtdSxUMCksRj1aLmZyb21RdWF0ZXJuaW9uKEwsRil9ZWxzZSBOPVouY2xvbmUoWi5JREVOVElUWSxOKSxGPVouY2xvbmUoWi5JREVOVElUWSxGKTtsZXQgST1KLmZyb21FbGVtZW50cyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLER3KSx2PUouZnJvbUVsZW1lbnRzKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQncpLEI9dC5sZW5ndGgsQT1uP0I6MCxTPUEvMyoyO2ZvcihsZXQgTD0wO0w8QjtMKz0zKXtsZXQgej1MKzEsaj1MKzIsaz1hLmZyb21BcnJheSh0LEwsZmEpO2lmKG8uc3Qpe2xldCBxPVoubXVsdGlwbHlCeVZlY3RvcihOLGssYjApLFc9VC5wcm9qZWN0KGYuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocSxKcCksdzApO2Euc3VidHJhY3QoVyx4LFcpLFFuLng9KFcueCtpKS8oMippKSxRbi55PShXLnkrcykvKDIqcyksSS54PU1hdGgubWluKFFuLngsSS54KSxJLnk9TWF0aC5taW4oUW4ueSxJLnkpLHYueD1NYXRoLm1heChRbi54LHYueCksdi55PU1hdGgubWF4KFFuLnksdi55KSxuJiYocFtiK1NdPVFuLngscFtiKzErU109UW4ueSkscFtiKytdPVFuLngscFtiKytdPVFuLnl9KG8ubm9ybWFsfHxvLnRhbmdlbnR8fG8uYml0YW5nZW50fHxsKSYmKHc9Zi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoayx3KSxsJiYoZ1tMK0FdPS13LngsZ1t6K0FdPS13LnksZ1tqK0FdPS13LnopLChvLm5vcm1hbHx8by50YW5nZW50fHxvLmJpdGFuZ2VudCkmJigoby50YW5nZW50fHxvLmJpdGFuZ2VudCkmJihPPWEubm9ybWFsaXplKGEuY3Jvc3MoYS5VTklUX1osdyxPKSxPKSxaLm11bHRpcGx5QnlWZWN0b3IoRixPLE8pKSxvLm5vcm1hbCYmKGRbTF09dy54LGRbel09dy55LGRbal09dy56LG4mJihkW0wrQV09LXcueCxkW3orQV09LXcueSxkW2orQV09LXcueikpLG8udGFuZ2VudCYmKGhbTF09Ty54LGhbel09Ty55LGhbal09Ty56LG4mJihoW0wrQV09LU8ueCxoW3orQV09LU8ueSxoW2orQV09LU8ueikpLG8uYml0YW5nZW50JiYoRT1hLm5vcm1hbGl6ZShhLmNyb3NzKHcsTyxFKSxFKSxfW0xdPUUueCxfW3pdPUUueSxfW2pdPUUueixuJiYoX1tMK0FdPUUueCxfW3orQV09RS55LF9baitBXT1FLnopKSkpfWlmKG8uc3Qpe0I9cC5sZW5ndGg7Zm9yKGxldCBMPTA7TDxCO0wrPTIpcFtMXT0ocFtMXS1JLngpLyh2LngtSS54KSxwW0wrMV09KHBbTCsxXS1JLnkpLyh2LnktSS55KX1sZXQgQz1uZXcgaWU7aWYoby5wb3NpdGlvbil7bGV0IEw9VnIucmFpc2VQb3NpdGlvbnNUb0hlaWdodCh0LGUsbik7Qy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkx9KX1pZihvLnN0JiYoQy5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6cH0pKSxvLm5vcm1hbCYmKEMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpkfSkpLG8udGFuZ2VudCYmKEMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pKSxvLmJpdGFuZ2VudCYmKEMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLGwmJihDLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmd9KSksbiYmbShlLm9mZnNldEF0dHJpYnV0ZSkpe2xldCBMPW5ldyBVaW50OEFycmF5KGMpO2lmKGUub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKUw9TC5maWxsKDEsMCxjLzIpO2Vsc2V7bGV0IHo9ZS5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtMPUwuZmlsbCh6KX1DLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkx9KX1yZXR1cm4gQ31mdW5jdGlvbiBrdyh0KXtsZXQgZT1uZXcgQXJyYXkoMTIqKHQqKHQrMSkpLTYpLG49MCxvLHIsaSxzLGY7Zm9yKG89MCxpPTEscz0wO3M8MztzKyspZVtuKytdPWkrKyxlW24rK109byxlW24rK109aTtmb3Iocz0yO3M8dCsxOysrcyl7Zm9yKGk9cyoocysxKS0xLG89KHMtMSkqcy0xLGVbbisrXT1pKyssZVtuKytdPW8sZVtuKytdPWkscj0yKnMsZj0wO2Y8ci0xOysrZillW24rK109aSxlW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pKyssZVtuKytdPW8sZVtuKytdPWk7ZVtuKytdPWkrKyxlW24rK109byxlW24rK109aX1mb3Iocj10KjIsKytpLCsrbyxzPTA7czxyLTE7KytzKWVbbisrXT1pLGVbbisrXT1vKyssZVtuKytdPW8sZVtuKytdPWkrKyxlW24rK109byxlW24rK109aTtmb3IoZVtuKytdPWksZVtuKytdPW8rKyxlW24rK109byxlW24rK109aSsrLGVbbisrXT1vKyssZVtuKytdPW8sKytvLHM9dC0xO3M+MTstLXMpe2ZvcihlW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pLHI9MipzLGY9MDtmPHItMTsrK2YpZVtuKytdPWksZVtuKytdPW8rKyxlW24rK109byxlW24rK109aSsrLGVbbisrXT1vLGVbbisrXT1pO2VbbisrXT1vKyssZVtuKytdPW8rKyxlW24rK109aSsrfWZvcihzPTA7czwzO3MrKyllW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pO3JldHVybiBlfWZ1bmN0aW9uIHNOKHQpe2xldCBlPXQuY2VudGVyO2FjPWEubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxhYyksdC5oZWlnaHQsYWMpLGFjPWEuYWRkKGUsYWMsYWMpO2xldCBuPW5ldyBBdChhYyx0LnNlbWlNYWpvckF4aXMpLG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMCwhMSkscj1vLnBvc2l0aW9ucyxpPW8ubnVtUHRzLHM9VXcocix0LCExKSxmPWt3KGkpO3JldHVybiBmPUx0LmNyZWF0ZVR5cGVkQXJyYXkoci5sZW5ndGgvMyxmKSx7Ym91bmRpbmdTcGhlcmU6bixhdHRyaWJ1dGVzOnMsaW5kaWNlczpmfX1mdW5jdGlvbiBjTih0LGUpe2xldCBuPWUudmVydGV4Rm9ybWF0LG89ZS5jZW50ZXIscj1lLnNlbWlNYWpvckF4aXMsaT1lLnNlbWlNaW5vckF4aXMscz1lLmVsbGlwc29pZCxmPWUuaGVpZ2h0LHU9ZS5leHRydWRlZEhlaWdodCxjPWUuc3RSb3RhdGlvbixsPXQubGVuZ3RoLzMqMixwPW5ldyBGbG9hdDY0QXJyYXkobCozKSxkPW4uc3Q/bmV3IEZsb2F0MzJBcnJheShsKjIpOnZvaWQgMCxoPW4ubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkobCozKTp2b2lkIDAsXz1uLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShsKjMpOnZvaWQgMCxnPW4uYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobCozKTp2b2lkIDAsYj1lLnNoYWRvd1ZvbHVtZSx3PWI/bmV3IEZsb2F0MzJBcnJheShsKjMpOnZvaWQgMCxPPTAsRT1JdyxUPXZ3LHg9RncsTT1uZXcgZW8ocyksTj1NLnByb2plY3Qocy5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhvLEpwKSxMdyksRj1zLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UobyxmYSk7cy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoRixGKTtsZXQgST10ZS5mcm9tQXhpc0FuZ2xlKEYsYyxUMCksdj1aLmZyb21RdWF0ZXJuaW9uKEksTncpLEI9Si5mcm9tRWxlbWVudHMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxEdyksQT1KLmZyb21FbGVtZW50cyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEJ3KSxTPXQubGVuZ3RoLEM9Uy8zKjI7Zm9yKGxldCB6PTA7ejxTO3orPTMpe2xldCBqPXorMSxrPXorMixxPWEuZnJvbUFycmF5KHQseixmYSksVztpZihuLnN0KXtsZXQgbnQ9Wi5tdWx0aXBseUJ5VmVjdG9yKHYscSxiMCksYXQ9TS5wcm9qZWN0KHMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobnQsSnApLHcwKTthLnN1YnRyYWN0KGF0LE4sYXQpLFFuLng9KGF0LngrcikvKDIqciksUW4ueT0oYXQueStpKS8oMippKSxCLng9TWF0aC5taW4oUW4ueCxCLngpLEIueT1NYXRoLm1pbihRbi55LEIueSksQS54PU1hdGgubWF4KFFuLngsQS54KSxBLnk9TWF0aC5tYXgoUW4ueSxBLnkpLGRbTytDXT1Rbi54LGRbTysxK0NdPVFuLnksZFtPKytdPVFuLngsZFtPKytdPVFuLnl9cT1zLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocSxxKSxXPWEuY2xvbmUocSxiMCksRT1zLmdlb2RldGljU3VyZmFjZU5vcm1hbChxLEUpLGImJih3W3orU109LUUueCx3W2orU109LUUueSx3W2srU109LUUueik7bGV0IFI9YS5tdWx0aXBseUJ5U2NhbGFyKEUsZixNdyk7aWYocT1hLmFkZChxLFIscSksUj1hLm11bHRpcGx5QnlTY2FsYXIoRSx1LFIpLFc9YS5hZGQoVyxSLFcpLG4ucG9zaXRpb24mJihwW3orU109Vy54LHBbaitTXT1XLnkscFtrK1NdPVcueixwW3pdPXEueCxwW2pdPXEueSxwW2tdPXEueiksbi5ub3JtYWx8fG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpe3g9YS5jbG9uZShFLHgpO2xldCBudD1hLmZyb21BcnJheSh0LCh6KzMpJVMsTXcpO2Euc3VidHJhY3QobnQscSxudCk7bGV0IGF0PWEuc3VidHJhY3QoVyxxLHcwKTtFPWEubm9ybWFsaXplKGEuY3Jvc3MoYXQsbnQsRSksRSksbi5ub3JtYWwmJihoW3pdPUUueCxoW2pdPUUueSxoW2tdPUUueixoW3orU109RS54LGhbaitTXT1FLnksaFtrK1NdPUUueiksbi50YW5nZW50JiYoVD1hLm5vcm1hbGl6ZShhLmNyb3NzKHgsRSxUKSxUKSxfW3pdPVQueCxfW2pdPVQueSxfW2tdPVQueixfW3orU109VC54LF9beisxK1NdPVQueSxfW3orMitTXT1ULnopLG4uYml0YW5nZW50JiYoZ1t6XT14LngsZ1tqXT14LnksZ1trXT14LnosZ1t6K1NdPXgueCxnW2orU109eC55LGdbaytTXT14LnopfX1pZihuLnN0KXtTPWQubGVuZ3RoO2ZvcihsZXQgej0wO3o8Uzt6Kz0yKWRbel09KGRbel0tQi54KS8oQS54LUIueCksZFt6KzFdPShkW3orMV0tQi55KS8oQS55LUIueSl9bGV0IEw9bmV3IGllO2lmKG4ucG9zaXRpb24mJihMLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cH0pKSxuLnN0JiYoTC5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6ZH0pKSxuLm5vcm1hbCYmKEwubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSkpLG4udGFuZ2VudCYmKEwudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pKSxuLmJpdGFuZ2VudCYmKEwuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpnfSkpLGImJihMLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnd9KSksbShlLm9mZnNldEF0dHJpYnV0ZSkpe2xldCB6PW5ldyBVaW50OEFycmF5KGwpO2lmKGUub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXo9ei5maWxsKDEsMCxsLzIpO2Vsc2V7bGV0IGo9ZS5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTt6PXouZmlsbChqKX1MLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnp9KX1yZXR1cm4gTH1mdW5jdGlvbiBhTih0KXtsZXQgZT10Lmxlbmd0aC8zLG49THQuY3JlYXRlVHlwZWRBcnJheShlLGUqNiksbz0wO2ZvcihsZXQgcj0wO3I8ZTtyKyspe2xldCBpPXIscz1yK2UsZj0oaSsxKSVlLHU9ZitlO25bbysrXT1pLG5bbysrXT1zLG5bbysrXT1mLG5bbysrXT1mLG5bbysrXT1zLG5bbysrXT11fXJldHVybiBufWZ1bmN0aW9uIGZOKHQpe2xldCBlPXQuY2VudGVyLG49dC5lbGxpcHNvaWQsbz10LnNlbWlNYWpvckF4aXMscj1hLm11bHRpcGx5QnlTY2FsYXIobi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxmYSksdC5oZWlnaHQsZmEpO1pwLmNlbnRlcj1hLmFkZChlLHIsWnAuY2VudGVyKSxacC5yYWRpdXM9byxyPWEubXVsdGlwbHlCeVNjYWxhcihuLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLHIpLHQuZXh0cnVkZWRIZWlnaHQsciksUXAuY2VudGVyPWEuYWRkKGUscixRcC5jZW50ZXIpLFFwLnJhZGl1cz1vO2xldCBpPVZyLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zKHQsITAsITApLHM9aS5wb3NpdGlvbnMsZj1pLm51bVB0cyx1PWkub3V0ZXJQb3NpdGlvbnMsYz1BdC51bmlvbihacCxRcCksbD1VdyhzLHQsITApLHA9a3coZiksZD1wLmxlbmd0aDtwLmxlbmd0aD1kKjI7bGV0IGg9cy5sZW5ndGgvMztmb3IobGV0IFQ9MDtUPGQ7VCs9MylwW1QrZF09cFtUKzJdK2gscFtUKzErZF09cFtUKzFdK2gscFtUKzIrZF09cFtUXStoO2xldCBfPUx0LmNyZWF0ZVR5cGVkQXJyYXkoaCoyLzMscCksZz1uZXcgVXQoe2F0dHJpYnV0ZXM6bCxpbmRpY2VzOl8scHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9KSxiPWNOKHUsdCk7cD1hTih1KTtsZXQgdz1MdC5jcmVhdGVUeXBlZEFycmF5KHUubGVuZ3RoKjIvMyxwKSxPPW5ldyBVdCh7YXR0cmlidXRlczpiLGluZGljZXM6dyxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU30pLEU9R2UuY29tYmluZUluc3RhbmNlcyhbbmV3IGZvKHtnZW9tZXRyeTpnfSksbmV3IGZvKHtnZW9tZXRyeTpPfSldKTtyZXR1cm57Ym91bmRpbmdTcGhlcmU6YyxhdHRyaWJ1dGVzOkVbMF0uYXR0cmlidXRlcyxpbmRpY2VzOkVbMF0uaW5kaWNlc319ZnVuY3Rpb24gR3codCxlLG4sbyxyLGkscyl7bGV0IHU9VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0LHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOm4scm90YXRpb246byxncmFudWxhcml0eTpyfSwhMSwhMCkub3V0ZXJQb3NpdGlvbnMsYz11Lmxlbmd0aC8zLGw9bmV3IEFycmF5KGMpO2ZvcihsZXQgZD0wO2Q8YzsrK2QpbFtkXT1hLmZyb21BcnJheSh1LGQqMyk7bGV0IHA9TnQuZnJvbUNhcnRlc2lhbkFycmF5KGwsaSxzKTtyZXR1cm4gcC53aWR0aD5QLlBJJiYocC5ub3J0aD1wLm5vcnRoPjA/UC5QSV9PVkVSX1RXTy1QLkVQU0lMT043OnAubm9ydGgscC5zb3V0aD1wLnNvdXRoPDA/UC5FUFNJTE9ONy1QLlBJX09WRVJfVFdPOnAuc291dGgscC5lYXN0PVAuUEkscC53ZXN0PS1QLlBJKSxwfWZ1bmN0aW9uIHVpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQuY2VudGVyLG49dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCxvPXQuc2VtaU1ham9yQXhpcyxyPXQuc2VtaU1pbm9yQXhpcyxpPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHM9dC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQ7aWYoeS5kZWZpbmVkKCJvcHRpb25zLmNlbnRlciIsZSkseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNYWpvckF4aXMiLG8pLHkudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWlub3JBeGlzIixyKSxvPHIpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoaTw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgZj10LmhlaWdodD8/MCx1PXQuZXh0cnVkZWRIZWlnaHQ/P2Y7dGhpcy5fY2VudGVyPWEuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1vLHRoaXMuX3NlbWlNaW5vckF4aXM9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShuKSx0aGlzLl9yb3RhdGlvbj10LnJvdGF0aW9uPz8wLHRoaXMuX3N0Um90YXRpb249dC5zdFJvdGF0aW9uPz8wLHRoaXMuX2hlaWdodD1NYXRoLm1heCh1LGYpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHMpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKHUsZiksdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNlR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9yZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9dm9pZCAwfWZ1bmN0aW9uIHVOKHQpe2xldCBlPS10Ll9zdFJvdGF0aW9uO2lmKGU9PT0wKXJldHVyblswLDAsMCwxLDEsMF07bGV0IG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxyb3RhdGlvbjp0Ll9yb3RhdGlvbixncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eX0sITEsITApLm91dGVyUG9zaXRpb25zLHI9by5sZW5ndGgvMyxpPW5ldyBBcnJheShyKTtmb3IobGV0IHU9MDt1PHI7Kyt1KWlbdV09YS5mcm9tQXJyYXkobyx1KjMpO2xldCBzPXQuX2VsbGlwc29pZCxmPXQucmVjdGFuZ2xlO3JldHVybiBVdC5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhpLGUscyxmKX12YXIgZmEsYjAsdzAsTXcsUW4sTncsaU4sVDAsSXcsdncsRncsSnAsTHcsRHcsQncsYWMsWnAsUXAsVncsencsancsZmksenIsTzA9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO3llKCk7ZnQoKTtIdCgpO0EwKCk7JHQoKTt4aSgpO1llKCk7JGUoKTthbigpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtVbigpO3RuKCk7WG8oKTtUbigpO3hvKCk7ZmE9bmV3IGEsYjA9bmV3IGEsdzA9bmV3IGEsTXc9bmV3IGEsUW49bmV3IEosTnc9bmV3IFosaU49bmV3IFosVDA9bmV3IHRlLEl3PW5ldyBhLHZ3PW5ldyBhLEZ3PW5ldyBhLEpwPW5ldyBjdCxMdz1uZXcgYSxEdz1uZXcgSixCdz1uZXcgSjthYz1uZXcgYTtacD1uZXcgQXQsUXA9bmV3IEF0O3VpLnBhY2tlZExlbmd0aD1hLnBhY2tlZExlbmd0aCtZLnBhY2tlZExlbmd0aCtwdC5wYWNrZWRMZW5ndGgrOTt1aS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGEucGFjayh0Ll9jZW50ZXIsZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxuKz1wdC5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX3NlbWlNYWpvckF4aXMsZVtuKytdPXQuX3NlbWlNaW5vckF4aXMsZVtuKytdPXQuX3JvdGF0aW9uLGVbbisrXT10Ll9zdFJvdGF0aW9uLGVbbisrXT10Ll9oZWlnaHQsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07Vnc9bmV3IGEsenc9bmV3IFksanc9bmV3IHB0LGZpPXtjZW50ZXI6VncsZWxsaXBzb2lkOnp3LHZlcnRleEZvcm1hdDpqdyxzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07dWkudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89YS51bnBhY2sodCxlLFZ3KTtlKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1ZLnVucGFjayh0LGUsencpO2UrPVkucGFja2VkTGVuZ3RoO2xldCBpPXB0LnVucGFjayh0LGUsancpO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgcz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2UrK10saD10W2UrK109PT0xLF89dFtlXTtyZXR1cm4gbShuKT8obi5fY2VudGVyPWEuY2xvbmUobyxuLl9jZW50ZXIpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX3NlbWlNYWpvckF4aXM9cyxuLl9zZW1pTWlub3JBeGlzPWYsbi5fcm90YXRpb249dSxuLl9zdFJvdGF0aW9uPWMsbi5faGVpZ2h0PWwsbi5fZ3JhbnVsYXJpdHk9cCxuLl9leHRydWRlZEhlaWdodD1kLG4uX3NoYWRvd1ZvbHVtZT1oLG4uX29mZnNldEF0dHJpYnV0ZT1fPT09LTE/dm9pZCAwOl8sbik6KGZpLmhlaWdodD1sLGZpLmV4dHJ1ZGVkSGVpZ2h0PWQsZmkuZ3JhbnVsYXJpdHk9cCxmaS5zdFJvdGF0aW9uPWMsZmkucm90YXRpb249dSxmaS5zZW1pTWFqb3JBeGlzPXMsZmkuc2VtaU1pbm9yQXhpcz1mLGZpLnNoYWRvd1ZvbHVtZT1oLGZpLm9mZnNldEF0dHJpYnV0ZT1fPT09LTE/dm9pZCAwOl8sbmV3IHVpKGZpKSl9O3VpLmNvbXB1dGVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LmNlbnRlcixvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LnNlbWlNYWpvckF4aXMsaT10LnNlbWlNaW5vckF4aXMscz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxmPXQucm90YXRpb24/PzA7aWYoeS5kZWZpbmVkKCJvcHRpb25zLmNlbnRlciIsbikseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNYWpvckF4aXMiLHIpLHkudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWlub3JBeGlzIixpKSxyPGkpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoczw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtyZXR1cm4gR3cobixyLGksZixzLG8sZSl9O3VpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKHQuX3NlbWlNYWpvckF4aXM8PTB8fHQuX3NlbWlNaW5vckF4aXM8PTApcmV0dXJuO2xldCBlPXQuX2hlaWdodCxuPXQuX2V4dHJ1ZGVkSGVpZ2h0LG89IVAuZXF1YWxzRXBzaWxvbihlLG4sMCxQLkVQU0lMT04yKTt0Ll9jZW50ZXI9dC5fZWxsaXBzb2lkLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodC5fY2VudGVyLHQuX2NlbnRlcik7bGV0IHI9e2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxlbGxpcHNvaWQ6dC5fZWxsaXBzb2lkLHJvdGF0aW9uOnQuX3JvdGF0aW9uLGhlaWdodDplLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5LHZlcnRleEZvcm1hdDp0Ll92ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9ufSxpO2lmKG8pci5leHRydWRlZEhlaWdodD1uLHIuc2hhZG93Vm9sdW1lPXQuX3NoYWRvd1ZvbHVtZSxyLm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsaT1mTihyKTtlbHNlIGlmKGk9c04ociksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgcz1pLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxmPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLHU9bmV3IFVpbnQ4QXJyYXkocy8zKS5maWxsKGYpO2kuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczp1fSl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczppLmF0dHJpYnV0ZXMsaW5kaWNlczppLmluZGljZXMscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6aS5ib3VuZGluZ1NwaGVyZSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O3VpLmNyZWF0ZVNoYWRvd1ZvbHVtZT1mdW5jdGlvbih0LGUsbil7bGV0IG89dC5fZ3JhbnVsYXJpdHkscj10Ll9lbGxpcHNvaWQsaT1lKG8scikscz1uKG8scik7cmV0dXJuIG5ldyB1aSh7Y2VudGVyOnQuX2NlbnRlcixzZW1pTWFqb3JBeGlzOnQuX3NlbWlNYWpvckF4aXMsc2VtaU1pbm9yQXhpczp0Ll9zZW1pTWlub3JBeGlzLGVsbGlwc29pZDpyLHJvdGF0aW9uOnQuX3JvdGF0aW9uLHN0Um90YXRpb246dC5fc3RSb3RhdGlvbixncmFudWxhcml0eTpvLGV4dHJ1ZGVkSGVpZ2h0OmksaGVpZ2h0OnMsdmVydGV4Rm9ybWF0OnB0LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHVpLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9yZWN0YW5nbGUpfHwodGhpcy5fcmVjdGFuZ2xlPUd3KHRoaXMuX2NlbnRlcix0aGlzLl9zZW1pTWFqb3JBeGlzLHRoaXMuX3NlbWlNaW5vckF4aXMsdGhpcy5fcm90YXRpb24sdGhpcy5fZ3JhbnVsYXJpdHksdGhpcy5fZWxsaXBzb2lkKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXVOKHRoaXMpKSx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzfX19KTt6cj11aX0pO2Z1bmN0aW9uIEZpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaXVzO3kudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgbj17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksdmVydGV4Rm9ybWF0OnQudmVydGV4Rm9ybWF0LHN0Um90YXRpb246dC5zdFJvdGF0aW9uLHNoYWRvd1ZvbHVtZTp0LnNoYWRvd1ZvbHVtZX07dGhpcy5fZWxsaXBzZUdlb21ldHJ5PW5ldyB6cihuKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDaXJjbGVHZW9tZXRyeSJ9dmFyIEh3LGdvLEUwLHF3PSQoKCk9PntEdCgpO1d0KCk7eWUoKTtmdCgpO08wKCk7JHQoKTt4bygpO0ZpLnBhY2tlZExlbmd0aD16ci5wYWNrZWRMZW5ndGg7RmkucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHpyLnBhY2sodC5fZWxsaXBzZUdlb21ldHJ5LGUsbil9O0h3PW5ldyB6cih7Y2VudGVyOm5ldyBhLHNlbWlNYWpvckF4aXM6MSxzZW1pTWlub3JBeGlzOjF9KSxnbz17Y2VudGVyOm5ldyBhLHJhZGl1czp2b2lkIDAsZWxsaXBzb2lkOlkuY2xvbmUoWS5kZWZhdWx0KSxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsdmVydGV4Rm9ybWF0Om5ldyBwdCxzdFJvdGF0aW9uOnZvaWQgMCxzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMCxzaGFkb3dWb2x1bWU6dm9pZCAwfTtGaS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXpyLnVucGFjayh0LGUsSHcpO3JldHVybiBnby5jZW50ZXI9YS5jbG9uZShvLl9jZW50ZXIsZ28uY2VudGVyKSxnby5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsZ28uZWxsaXBzb2lkKSxnby5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsSHcuX2VsbGlwc29pZCksZ28uaGVpZ2h0PW8uX2hlaWdodCxnby5leHRydWRlZEhlaWdodD1vLl9leHRydWRlZEhlaWdodCxnby5ncmFudWxhcml0eT1vLl9ncmFudWxhcml0eSxnby52ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoby5fdmVydGV4Rm9ybWF0LGdvLnZlcnRleEZvcm1hdCksZ28uc3RSb3RhdGlvbj1vLl9zdFJvdGF0aW9uLGdvLnNoYWRvd1ZvbHVtZT1vLl9zaGFkb3dWb2x1bWUsbShuKT8oZ28uc2VtaU1ham9yQXhpcz1vLl9zZW1pTWFqb3JBeGlzLGdvLnNlbWlNaW5vckF4aXM9by5fc2VtaU1pbm9yQXhpcyxuLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHpyKGdvKSxuKTooZ28ucmFkaXVzPW8uX3NlbWlNYWpvckF4aXMsbmV3IEZpKGdvKSl9O0ZpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiB6ci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTtGaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2VsbGlwc2VHZW9tZXRyeS5fZ3JhbnVsYXJpdHkscj10Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCxpPWUobyxyKSxzPW4obyxyKTtyZXR1cm4gbmV3IEZpKHtjZW50ZXI6dC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIscmFkaXVzOnQuX2VsbGlwc2VHZW9tZXRyeS5fc2VtaU1ham9yQXhpcyxlbGxpcHNvaWQ6cixzdFJvdGF0aW9uOnQuX2VsbGlwc2VHZW9tZXRyeS5fc3RSb3RhdGlvbixncmFudWxhcml0eTpvLGV4dHJ1ZGVkSGVpZ2h0OmksaGVpZ2h0OnMsdmVydGV4Rm9ybWF0OnB0LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZpLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzZUdlb21ldHJ5LnJlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNlR2VvbWV0cnkudGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7RTA9Rml9KTt2YXIgUjA9e307bGUoUjAse2RlZmF1bHQ6KCk9PnBOfSk7ZnVuY3Rpb24gbE4odCxlKXtyZXR1cm4gbShlKSYmKHQ9RTAudW5wYWNrKHQsZSkpLHQuX2VsbGlwc2VHZW9tZXRyeS5fY2VudGVyPWEuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIpLHQuX2VsbGlwc2VHZW9tZXRyeS5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQpLEUwLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBwTixTMD0kKCgpPT57RHQoKTtxdygpO2Z0KCk7JHQoKTtwTj1sTn0pO2Z1bmN0aW9uIGROKHQpe2xldCBlPXQuY2VudGVyO2ZjPWEubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxmYyksdC5oZWlnaHQsZmMpLGZjPWEuYWRkKGUsZmMsZmMpO2xldCBuPW5ldyBBdChmYyx0LnNlbWlNYWpvckF4aXMpLG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMSwhMCkub3V0ZXJQb3NpdGlvbnMscj1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6VnIucmFpc2VQb3NpdGlvbnNUb0hlaWdodChvLHQsITEpfSl9KSxpPW8ubGVuZ3RoLzMscz1MdC5jcmVhdGVUeXBlZEFycmF5KGksaSoyKSxmPTA7Zm9yKGxldCB1PTA7dTxpOysrdSlzW2YrK109dSxzW2YrK109KHUrMSklaTtyZXR1cm57Ym91bmRpbmdTcGhlcmU6bixhdHRyaWJ1dGVzOnIsaW5kaWNlczpzfX1mdW5jdGlvbiBtTih0KXtsZXQgZT10LmNlbnRlcixuPXQuZWxsaXBzb2lkLG89dC5zZW1pTWFqb3JBeGlzLHI9YS5tdWx0aXBseUJ5U2NhbGFyKG4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGUsS3cpLHQuaGVpZ2h0LEt3KTt0ZC5jZW50ZXI9YS5hZGQoZSxyLHRkLmNlbnRlciksdGQucmFkaXVzPW8scj1hLm11bHRpcGx5QnlTY2FsYXIobi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxyKSx0LmV4dHJ1ZGVkSGVpZ2h0LHIpLGVkLmNlbnRlcj1hLmFkZChlLHIsZWQuY2VudGVyKSxlZC5yYWRpdXM9bztsZXQgaT1Wci5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh0LCExLCEwKS5vdXRlclBvc2l0aW9ucyxzPW5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpWci5yYWlzZVBvc2l0aW9uc1RvSGVpZ2h0KGksdCwhMCl9KX0pO2k9cy5wb3NpdGlvbi52YWx1ZXM7bGV0IGY9QXQudW5pb24odGQsZWQpLHU9aS5sZW5ndGgvMztpZihtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IF89bmV3IFVpbnQ4QXJyYXkodSk7aWYodC5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5UT1ApXz1fLmZpbGwoMSwwLHUvMik7ZWxzZXtsZXQgZz10Lm9mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO189Xy5maWxsKGcpfXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6X30pfWxldCBjPXQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPz8xNjtjPVAuY2xhbXAoYywwLHUvMik7bGV0IGw9THQuY3JlYXRlVHlwZWRBcnJheSh1LHUqMitjKjIpO3UvPTI7bGV0IHA9MCxkO2ZvcihkPTA7ZDx1OysrZClsW3ArK109ZCxsW3ArK109KGQrMSkldSxsW3ArK109ZCt1LGxbcCsrXT0oZCsxKSV1K3U7bGV0IGg7aWYoYz4wKXtsZXQgXz1NYXRoLm1pbihjLHUpO2g9TWF0aC5yb3VuZCh1L18pO2xldCBnPU1hdGgubWluKGgqYyx1KTtmb3IoZD0wO2Q8ZztkKz1oKWxbcCsrXT1kLGxbcCsrXT1kK3V9cmV0dXJue2JvdW5kaW5nU3BoZXJlOmYsYXR0cmlidXRlczpzLGluZGljZXM6bH19ZnVuY3Rpb24gdWEodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5jZW50ZXIsbj10LmVsbGlwc29pZD8/WS5kZWZhdWx0LG89dC5zZW1pTWFqb3JBeGlzLHI9dC5zZW1pTWlub3JBeGlzLGk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUU7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImNlbnRlciBpcyByZXF1aXJlZC4iKTtpZighbShvKSl0aHJvdyBuZXcgRCgic2VtaU1ham9yQXhpcyBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgic2VtaU1pbm9yQXhpcyBpcyByZXF1aXJlZC4iKTtpZihvPHIpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoaTw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgcz10LmhlaWdodD8/MCxmPXQuZXh0cnVkZWRIZWlnaHQ/P3M7dGhpcy5fY2VudGVyPWEuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1vLHRoaXMuX3NlbWlNaW5vckF4aXM9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShuKSx0aGlzLl9yb3RhdGlvbj10LnJvdGF0aW9uPz8wLHRoaXMuX2hlaWdodD1NYXRoLm1heChmLHMpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oZixzKSx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9TWF0aC5tYXgodC5udW1iZXJPZlZlcnRpY2FsTGluZXM/PzE2LDApLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5In12YXIgS3csZmMsdGQsZWQsV3csWHcsTGksanIseDA9JCgoKT0+e3ZlKCk7RHQoKTtEZSgpO3llKCk7ZnQoKTtIdCgpO0EwKCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTt0bigpO0t3PW5ldyBhLGZjPW5ldyBhO3RkPW5ldyBBdCxlZD1uZXcgQXQ7dWEucGFja2VkTGVuZ3RoPWEucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoKzg7dWEucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxhLnBhY2sodC5fY2VudGVyLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9zZW1pTWFqb3JBeGlzLGVbbisrXT10Ll9zZW1pTWlub3JBeGlzLGVbbisrXT10Ll9yb3RhdGlvbixlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9ncmFudWxhcml0eSxlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07V3c9bmV3IGEsWHc9bmV3IFksTGk9e2NlbnRlcjpXdyxlbGxpcHNvaWQ6WHcsc2VtaU1ham9yQXhpczp2b2lkIDAsc2VtaU1pbm9yQXhpczp2b2lkIDAscm90YXRpb246dm9pZCAwLGhlaWdodDp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O3VhLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxXdyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHI9WS51bnBhY2sodCxlLFh3KTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pPyhuLl9jZW50ZXI9YS5jbG9uZShvLG4uX2NlbnRlciksbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX3NlbWlNYWpvckF4aXM9aSxuLl9zZW1pTWlub3JBeGlzPXMsbi5fcm90YXRpb249ZixuLl9oZWlnaHQ9dSxuLl9ncmFudWxhcml0eT1jLG4uX2V4dHJ1ZGVkSGVpZ2h0PWwsbi5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooTGkuaGVpZ2h0PXUsTGkuZXh0cnVkZWRIZWlnaHQ9bCxMaS5ncmFudWxhcml0eT1jLExpLnJvdGF0aW9uPWYsTGkuc2VtaU1ham9yQXhpcz1pLExpLnNlbWlNaW5vckF4aXM9cyxMaS5udW1iZXJPZlZlcnRpY2FsTGluZXM9cCxMaS5vZmZzZXRBdHRyaWJ1dGU9ZD09PS0xP3ZvaWQgMDpkLG5ldyB1YShMaSkpfTt1YS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtpZih0Ll9zZW1pTWFqb3JBeGlzPD0wfHx0Ll9zZW1pTWlub3JBeGlzPD0wKXJldHVybjtsZXQgZT10Ll9oZWlnaHQsbj10Ll9leHRydWRlZEhlaWdodCxvPSFQLmVxdWFsc0Vwc2lsb24oZSxuLDAsUC5FUFNJTE9OMik7dC5fY2VudGVyPXQuX2VsbGlwc29pZC5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQuX2NlbnRlcix0Ll9jZW50ZXIpO2xldCByPXtjZW50ZXI6dC5fY2VudGVyLHNlbWlNYWpvckF4aXM6dC5fc2VtaU1ham9yQXhpcyxzZW1pTWlub3JBeGlzOnQuX3NlbWlNaW5vckF4aXMsZWxsaXBzb2lkOnQuX2VsbGlwc29pZCxyb3RhdGlvbjp0Ll9yb3RhdGlvbixoZWlnaHQ6ZSxncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eSxudW1iZXJPZlZlcnRpY2FsTGluZXM6dC5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzfSxpO2lmKG8pci5leHRydWRlZEhlaWdodD1uLHIub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSxpPW1OKHIpO2Vsc2UgaWYoaT1kTihyKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBzPWkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLGY9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsdT1uZXcgVWludDhBcnJheShzLzMpLmZpbGwoZik7aS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnV9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmkuYXR0cmlidXRlcyxpbmRpY2VzOmkuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOmkuYm91bmRpbmdTcGhlcmUsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtqcj11YX0pO2Z1bmN0aW9uIGxhKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaXVzO3kudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgbj17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzfTt0aGlzLl9lbGxpcHNlR2VvbWV0cnk9bmV3IGpyKG4pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNpcmNsZU91dGxpbmVHZW9tZXRyeSJ9dmFyIGhOLHNyLEMwLFl3PSQoKCk9PntEdCgpO1d0KCk7eWUoKTtmdCgpO3gwKCk7JHQoKTtsYS5wYWNrZWRMZW5ndGg9anIucGFja2VkTGVuZ3RoO2xhLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxqci5wYWNrKHQuX2VsbGlwc2VHZW9tZXRyeSxlLG4pfTtoTj1uZXcganIoe2NlbnRlcjpuZXcgYSxzZW1pTWFqb3JBeGlzOjEsc2VtaU1pbm9yQXhpczoxfSksc3I9e2NlbnRlcjpuZXcgYSxyYWRpdXM6dm9pZCAwLGVsbGlwc29pZDpZLmNsb25lKFkuVU5JVF9TUEhFUkUpLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwfTtsYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPWpyLnVucGFjayh0LGUsaE4pO3JldHVybiBzci5jZW50ZXI9YS5jbG9uZShvLl9jZW50ZXIsc3IuY2VudGVyKSxzci5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsc3IuZWxsaXBzb2lkKSxzci5oZWlnaHQ9by5faGVpZ2h0LHNyLmV4dHJ1ZGVkSGVpZ2h0PW8uX2V4dHJ1ZGVkSGVpZ2h0LHNyLmdyYW51bGFyaXR5PW8uX2dyYW51bGFyaXR5LHNyLm51bWJlck9mVmVydGljYWxMaW5lcz1vLl9udW1iZXJPZlZlcnRpY2FsTGluZXMsbShuKT8oc3Iuc2VtaU1ham9yQXhpcz1vLl9zZW1pTWFqb3JBeGlzLHNyLnNlbWlNaW5vckF4aXM9by5fc2VtaU1pbm9yQXhpcyxuLl9lbGxpcHNlR2VvbWV0cnk9bmV3IGpyKHNyKSxuKTooc3IucmFkaXVzPW8uX3NlbWlNYWpvckF4aXMsbmV3IGxhKHNyKSl9O2xhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBqci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTtDMD1sYX0pO3ZhciBQMD17fTtsZShQMCx7ZGVmYXVsdDooKT0+eU59KTtmdW5jdGlvbiBfTih0LGUpe3JldHVybiBtKGUpJiYodD1DMC51bnBhY2sodCxlKSksdC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXI9YS5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlciksdC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCksQzAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHlOLE0wPSQoKCk9PntEdCgpO1l3KCk7ZnQoKTskdCgpO3lOPV9OfSk7ZnVuY3Rpb24gZ04odCxlLG4sbyl7aWYoeS5kZWZpbmVkKCJlcXVhbHNFcHNpbG9uIixlKSwhbSh0KSlyZXR1cm47bj1uPz8hMTtsZXQgcj1tKG8pLGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiB0O2xldCBzLGY9dFswXSx1LGMsbD0wLHA9LTE7Zm9yKHM9MTtzPGk7KytzKXU9dFtzXSxlKGYsdSwkdyk/KG0oYyl8fChjPXQuc2xpY2UoMCxzKSxsPXMtMSxwPTApLHImJm8ucHVzaChzKSk6KG0oYykmJihjLnB1c2godSksbD1zLHImJihwPW8ubGVuZ3RoKSksZj11KTtyZXR1cm4gbiYmZSh0WzBdLHRbaS0xXSwkdykmJihyJiYobShjKT9vLnNwbGljZShwLDAsbCk6by5wdXNoKGktMSkpLG0oYyk/Yy5sZW5ndGgtPTE6Yz10LnNsaWNlKDAsLTEpKSxtKGMpP2M6dH12YXIgJHcsQ24sSHI9JCgoKT0+e1d0KCk7ZnQoKTtLdCgpOyR3PVAuRVBTSUxPTjEwO0NuPWdOfSk7ZnVuY3Rpb24gSW4odCxlLG4sbyl7dGhpcy54PXQ/PzAsdGhpcy55PWU/PzAsdGhpcy53aWR0aD1uPz8wLHRoaXMuaGVpZ2h0PW8/PzB9dmFyIFp3LEFOLGJOLHFyLENmPSQoKCk9PntrZSgpO0llKCk7V3QoKTtmdCgpOyR0KCk7eGkoKTtWcygpO1RuKCk7SW4ucGFja2VkTGVuZ3RoPTQ7SW4ucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxlW24rK109dC54LGVbbisrXT10LnksZVtuKytdPXQud2lkdGgsZVtuXT10LmhlaWdodCxlfTtJbi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IEluKSxuLng9dFtlKytdLG4ueT10W2UrK10sbi53aWR0aD10W2UrK10sbi5oZWlnaHQ9dFtlXSxufTtJbi5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IEluKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLng9MCxlLnk9MCxlLndpZHRoPTAsZS5oZWlnaHQ9MCxlO2xldCBuPXQubGVuZ3RoLG89dFswXS54LHI9dFswXS55LGk9dFswXS54LHM9dFswXS55O2ZvcihsZXQgZj0xO2Y8bjtmKyspe2xldCB1PXRbZl0sYz11LngsbD11Lnk7bz1NYXRoLm1pbihjLG8pLGk9TWF0aC5tYXgoYyxpKSxyPU1hdGgubWluKGwscikscz1NYXRoLm1heChsLHMpfXJldHVybiBlLng9byxlLnk9cixlLndpZHRoPWktbyxlLmhlaWdodD1zLXIsZX07Wnc9bmV3IGVvLEFOPW5ldyBjdCxiTj1uZXcgY3Q7SW4uZnJvbVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IEluKSwhbSh0KSlyZXR1cm4gbi54PTAsbi55PTAsbi53aWR0aD0wLG4uaGVpZ2h0PTAsbjtady5fZWxsaXBzb2lkPVkuZGVmYXVsdCxlPWU/P1p3O2xldCBvPWUucHJvamVjdChOdC5zb3V0aHdlc3QodCxBTikpLHI9ZS5wcm9qZWN0KE50Lm5vcnRoZWFzdCh0LGJOKSk7cmV0dXJuIEouc3VidHJhY3QocixvLHIpLG4ueD1vLngsbi55PW8ueSxuLndpZHRoPXIueCxuLmhlaWdodD1yLnksbn07SW4uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0LGUpOm5ldyBJbih0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpfTtJbi51bmlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxtKG4pfHwobj1uZXcgSW4pO2xldCBvPU1hdGgubWluKHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSksaT1NYXRoLm1heCh0LngrdC53aWR0aCxlLngrZS53aWR0aCkscz1NYXRoLm1heCh0LnkrdC5oZWlnaHQsZS55K2UuaGVpZ2h0KTtyZXR1cm4gbi54PW8sbi55PXIsbi53aWR0aD1pLW8sbi5oZWlnaHQ9cy1yLG59O0luLmV4cGFuZD1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG49SW4uY2xvbmUodCxuKTtsZXQgbz1lLngtbi54LHI9ZS55LW4ueTtyZXR1cm4gbz5uLndpZHRoP24ud2lkdGg9bzpvPDAmJihuLndpZHRoLT1vLG4ueD1lLngpLHI+bi5oZWlnaHQ/bi5oZWlnaHQ9cjpyPDAmJihuLmhlaWdodC09cixuLnk9ZS55KSxufTtJbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpO2xldCBuPXQueCxvPXQueSxyPWUueCxpPWUueTtyZXR1cm4gbj5yK2Uud2lkdGh8fG4rdC53aWR0aDxyfHxvK3QuaGVpZ2h0PGl8fG8+aStlLmhlaWdodD9Tbi5PVVRTSURFOlNuLklOVEVSU0VDVElOR307SW4uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lng9PT1lLngmJnQueT09PWUueSYmdC53aWR0aD09PWUud2lkdGgmJnQuaGVpZ2h0PT09ZS5oZWlnaHR9O0luLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gSW4uY2xvbmUodGhpcyx0KX07SW4ucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gSW4uaW50ZXJzZWN0KHRoaXMsdCl9O0luLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEluLmVxdWFscyh0aGlzLHQpfTtxcj1Jbn0pO2Z1bmN0aW9uIEJvKHQsZSxuKXt0aGlzLm1pbmltdW09YS5jbG9uZSh0Pz9hLlpFUk8pLHRoaXMubWF4aW11bT1hLmNsb25lKGU/P2EuWkVSTyksbShuKT9uPWEuY2xvbmUobik6bj1hLm1pZHBvaW50KHRoaXMubWluaW11bSx0aGlzLm1heGltdW0sbmV3IGEpLHRoaXMuY2VudGVyPW59dmFyIG5kLERpLFBmPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtWcygpO0JvLmZyb21Db3JuZXJzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJtaW5pbXVtIix0KSx5LmRlZmluZWQoIm1heGltdW0iLGUpLG0obil8fChuPW5ldyBCbyksbi5taW5pbXVtPWEuY2xvbmUodCxuLm1pbmltdW0pLG4ubWF4aW11bT1hLmNsb25lKGUsbi5tYXhpbXVtKSxuLmNlbnRlcj1hLm1pZHBvaW50KHQsZSxuLmNlbnRlciksbn07Qm8uZnJvbVBvaW50cz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBCbyksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS5taW5pbXVtPWEuY2xvbmUoYS5aRVJPLGUubWluaW11bSksZS5tYXhpbXVtPWEuY2xvbmUoYS5aRVJPLGUubWF4aW11bSksZS5jZW50ZXI9YS5jbG9uZShhLlpFUk8sZS5jZW50ZXIpLGU7bGV0IG49dFswXS54LG89dFswXS55LHI9dFswXS56LGk9dFswXS54LHM9dFswXS55LGY9dFswXS56LHU9dC5sZW5ndGg7Zm9yKGxldCBwPTE7cDx1O3ArKyl7bGV0IGQ9dFtwXSxoPWQueCxfPWQueSxnPWQuejtuPU1hdGgubWluKGgsbiksaT1NYXRoLm1heChoLGkpLG89TWF0aC5taW4oXyxvKSxzPU1hdGgubWF4KF8scykscj1NYXRoLm1pbihnLHIpLGY9TWF0aC5tYXgoZyxmKX1sZXQgYz1lLm1pbmltdW07Yy54PW4sYy55PW8sYy56PXI7bGV0IGw9ZS5tYXhpbXVtO3JldHVybiBsLng9aSxsLnk9cyxsLno9ZixlLmNlbnRlcj1hLm1pZHBvaW50KGMsbCxlLmNlbnRlciksZX07Qm8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm1pbmltdW09YS5jbG9uZSh0Lm1pbmltdW0sZS5taW5pbXVtKSxlLm1heGltdW09YS5jbG9uZSh0Lm1heGltdW0sZS5tYXhpbXVtKSxlLmNlbnRlcj1hLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxlKTpuZXcgQm8odC5taW5pbXVtLHQubWF4aW11bSx0LmNlbnRlcil9O0JvLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmYS5lcXVhbHModC5jZW50ZXIsZS5jZW50ZXIpJiZhLmVxdWFscyh0Lm1pbmltdW0sZS5taW5pbXVtKSYmYS5lcXVhbHModC5tYXhpbXVtLGUubWF4aW11bSl9O25kPW5ldyBhO0JvLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJib3giLHQpLHkuZGVmaW5lZCgicGxhbmUiLGUpLG5kPWEuc3VidHJhY3QodC5tYXhpbXVtLHQubWluaW11bSxuZCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKG5kLC41LG5kKSxvPWUubm9ybWFsLHI9bi54Kk1hdGguYWJzKG8ueCkrbi55Kk1hdGguYWJzKG8ueSkrbi56Kk1hdGguYWJzKG8ueiksaT1hLmRvdCh0LmNlbnRlcixvKStlLmRpc3RhbmNlO3JldHVybiBpLXI+MD9Tbi5JTlNJREU6aStyPDA/U24uT1VUU0lERTpTbi5JTlRFUlNFQ1RJTkd9O0JvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gQm8uY2xvbmUodGhpcyx0KX07Qm8ucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBCby5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtCby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBCby5lcXVhbHModGhpcyx0KX07RGk9Qm99KTtmdW5jdGlvbiBsaSh0LGUpe2lmKHkuZGVmaW5lZCgib3JpZ2luIix0KSxlPWU/P1kuZGVmYXVsdCx0PWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0KSwhbSh0KSl0aHJvdyBuZXcgRCgib3JpZ2luIG11c3Qgbm90IGJlIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGVsbGlwc29pZC4iKTtsZXQgbj0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0LGUpO3RoaXMuX2VsbGlwc29pZD1lLHRoaXMuX29yaWdpbj10LHRoaXMuX3hBeGlzPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMCxOMCkpLHRoaXMuX3lBeGlzPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMSxOMCkpO2xldCBvPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMixOMCkpO3RoaXMuX3BsYW5lPW9uLmZyb21Qb2ludE5vcm1hbCh0LG8pfXZhciBOMCx3TixRdyxvZCxUTixBbyxwYT0kKCgpPT57UGYoKTtrZSgpO0R0KCk7X3IoKTtXdCgpO2Z0KCk7SHQoKTskdCgpO2VjKCk7a24oKTt1cygpO1ZwKCk7YXMoKTtOMD1uZXcgbWU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGkucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxvcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW59fSxwbGFuZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lfX0seEF4aXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl94QXhpc319LHlBeGlzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUF4aXN9fSx6QXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lLm5vcm1hbH19fSk7d049bmV3IERpO2xpLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbnMiLHQpO2xldCBuPURpLmZyb21Qb2ludHModCx3Tik7cmV0dXJuIG5ldyBsaShuLmNlbnRlcixlKX07UXc9bmV3IEpzLG9kPW5ldyBhO2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbiIsdCk7bGV0IG49UXc7bi5vcmlnaW49dCxhLm5vcm1hbGl6ZSh0LG4uZGlyZWN0aW9uKTtsZXQgbz15by5yYXlQbGFuZShuLHRoaXMuX3BsYW5lLG9kKTtpZihtKG8pfHwoYS5uZWdhdGUobi5kaXJlY3Rpb24sbi5kaXJlY3Rpb24pLG89eW8ucmF5UGxhbmUobix0aGlzLl9wbGFuZSxvZCkpLG0obykpe2xldCByPWEuc3VidHJhY3Qobyx0aGlzLl9vcmlnaW4sbyksaT1hLmRvdCh0aGlzLl94QXhpcyxyKSxzPWEuZG90KHRoaXMuX3lBeGlzLHIpO3JldHVybiBtKGUpPyhlLng9aSxlLnk9cyxlKTpuZXcgSihpLHMpfX07bGkucHJvdG90eXBlLnByb2plY3RQb2ludHNPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgbj0wLG89dC5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrKyl7bGV0IGk9dGhpcy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUodFtyXSxlW25dKTttKGkpJiYoZVtuXT1pLG4rKyl9cmV0dXJuIGUubGVuZ3RoPW4sZX07bGkucHJvdG90eXBlLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbiIsdCksbShlKXx8KGU9bmV3IEopO2xldCBuPVF3O24ub3JpZ2luPXQsYS5jbG9uZSh0aGlzLl9wbGFuZS5ub3JtYWwsbi5kaXJlY3Rpb24pO2xldCBvPXlvLnJheVBsYW5lKG4sdGhpcy5fcGxhbmUsb2QpO20obyl8fChhLm5lZ2F0ZShuLmRpcmVjdGlvbixuLmRpcmVjdGlvbiksbz15by5yYXlQbGFuZShuLHRoaXMuX3BsYW5lLG9kKSk7bGV0IHI9YS5zdWJ0cmFjdChvLHRoaXMuX29yaWdpbixvKSxpPWEuZG90KHRoaXMuX3hBeGlzLHIpLHM9YS5kb3QodGhpcy5feUF4aXMscik7cmV0dXJuIGUueD1pLGUueT1zLGV9O2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzVG9OZWFyZXN0T25QbGFuZT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCksbShlKXx8KGU9W10pO2xldCBuPXQubGVuZ3RoO2UubGVuZ3RoPW47Zm9yKGxldCBvPTA7bzxuO28rKyllW29dPXRoaXMucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZSh0W29dLGVbb10pO3JldHVybiBlfTtUTj1uZXcgYTtsaS5wcm90b3R5cGUucHJvamVjdFBvaW50T250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFuIix0KSxtKGUpfHwoZT1uZXcgYSk7bGV0IG49dGhpcy5fZWxsaXBzb2lkLG89dGhpcy5fb3JpZ2luLHI9dGhpcy5feEF4aXMsaT10aGlzLl95QXhpcyxzPVROO3JldHVybiBhLm11bHRpcGx5QnlTY2FsYXIocix0LngscyksZT1hLmFkZChvLHMsZSksYS5tdWx0aXBseUJ5U2NhbGFyKGksdC55LHMpLGEuYWRkKGUscyxlKSxuLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZShlLGUpLGV9O2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzT250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uOmU9bmV3IEFycmF5KG4pO2ZvcihsZXQgbz0wO288bjsrK28pZVtvXT10aGlzLnByb2plY3RQb2ludE9udG9FbGxpcHNvaWQodFtvXSxlW29dKTtyZXR1cm4gZX07QW89bGl9KTtmdW5jdGlvbiBCZSh0LGUpe3RoaXMuY2VudGVyPWEuY2xvbmUodD8/YS5aRVJPKSx0aGlzLmhhbGZBeGVzPVouY2xvbmUoZT8/Wi5aRVJPKX1mdW5jdGlvbiBKdyh0LGUsbixvLHIsaSxzLGYsdSxjLGwpe2lmKCFtKHIpfHwhbShpKXx8IW0ocyl8fCFtKGYpfHwhbSh1KXx8IW0oYykpdGhyb3cgbmV3IEQoImFsbCBleHRlbnRzIChtaW5pbXVtL21heGltdW0gWC9ZL1opIGFyZSByZXF1aXJlZC4iKTttKGwpfHwobD1uZXcgQmUpO2xldCBwPWwuaGFsZkF4ZXM7Wi5zZXRDb2x1bW4ocCwwLGUscCksWi5zZXRDb2x1bW4ocCwxLG4scCksWi5zZXRDb2x1bW4ocCwyLG8scCk7bGV0IGQ9clQ7ZC54PShyK2kpLzIsZC55PShzK2YpLzIsZC56PSh1K2MpLzI7bGV0IGg9Tk47aC54PShpLXIpLzIsaC55PShmLXMpLzIsaC56PShjLXUpLzI7bGV0IF89bC5jZW50ZXI7cmV0dXJuIGQ9Wi5tdWx0aXBseUJ5VmVjdG9yKHAsZCxkKSxhLmFkZCh0LGQsXyksWi5tdWx0aXBseUJ5U2NhbGUocCxoLHApLGx9dmFyIE9OLEVOLFJOLFNOLHhOLENOLFBOLE1OLHJULE5OLHRULElOLHZOLEZOLExOLEROLEJOLFVOLGVULGtOLG5ULEdOLFZOLHpOLGpOLEhOLHFOLEtOLFdOLFhOLFlOLCROLFpOLFFOLEpOLHRJLGlULHNULGNULGVJLG9ULG5JLG9JLHJJLGlJLHNJLGNJLGFJLGZJLENvLGRhPSQoKCk9Pnt2ZSgpO2tlKCk7RHQoKTtJZSgpO1d0KCk7ZnQoKTtIdCgpOyR0KCk7cGEoKTtWcygpO1dsKCk7S3QoKTtVbigpO2tuKCk7dXMoKTtUbigpO0JlLnBhY2tlZExlbmd0aD1hLnBhY2tlZExlbmd0aCtaLnBhY2tlZExlbmd0aDtCZS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGEucGFjayh0LmNlbnRlcixlLG4pLFoucGFjayh0LmhhbGZBeGVzLGUsbithLnBhY2tlZExlbmd0aCksZX07QmUudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBCZSksYS51bnBhY2sodCxlLG4uY2VudGVyKSxaLnVucGFjayh0LGUrYS5wYWNrZWRMZW5ndGgsbi5oYWxmQXhlcyksbn07T049bmV3IGEsRU49bmV3IGEsUk49bmV3IGEsU049bmV3IGEseE49bmV3IGEsQ049bmV3IGEsUE49bmV3IFosTU49e3VuaXRhcnk6bmV3IFosZGlhZ29uYWw6bmV3IFp9O0JlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcgQmUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUuaGFsZkF4ZXM9Wi5aRVJPLGUuY2VudGVyPWEuWkVSTyxlO2xldCBuLG89dC5sZW5ndGgscj1hLmNsb25lKHRbMF0sT04pO2ZvcihuPTE7bjxvO24rKylhLmFkZChyLHRbbl0scik7bGV0IGk9MS9vO2EubXVsdGlwbHlCeVNjYWxhcihyLGkscik7bGV0IHM9MCxmPTAsdT0wLGM9MCxsPTAscD0wLGQ7Zm9yKG49MDtuPG87bisrKWQ9YS5zdWJ0cmFjdCh0W25dLHIsRU4pLHMrPWQueCpkLngsZis9ZC54KmQueSx1Kz1kLngqZC56LGMrPWQueSpkLnksbCs9ZC55KmQueixwKz1kLnoqZC56O3MqPWksZio9aSx1Kj1pLGMqPWksbCo9aSxwKj1pO2xldCBoPVBOO2hbMF09cyxoWzFdPWYsaFsyXT11LGhbM109ZixoWzRdPWMsaFs1XT1sLGhbNl09dSxoWzddPWwsaFs4XT1wO2xldCBfPVouY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbihoLE1OKSxnPVouY2xvbmUoXy51bml0YXJ5LGUuaGFsZkF4ZXMpLGI9Wi5nZXRDb2x1bW4oZywwLFNOKSx3PVouZ2V0Q29sdW1uKGcsMSx4TiksTz1aLmdldENvbHVtbihnLDIsQ04pLEU9LU51bWJlci5NQVhfVkFMVUUsVD0tTnVtYmVyLk1BWF9WQUxVRSx4PS1OdW1iZXIuTUFYX1ZBTFVFLE09TnVtYmVyLk1BWF9WQUxVRSxOPU51bWJlci5NQVhfVkFMVUUsRj1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihuPTA7bjxvO24rKylkPXRbbl0sRT1NYXRoLm1heChhLmRvdChiLGQpLEUpLFQ9TWF0aC5tYXgoYS5kb3QodyxkKSxUKSx4PU1hdGgubWF4KGEuZG90KE8sZCkseCksTT1NYXRoLm1pbihhLmRvdChiLGQpLE0pLE49TWF0aC5taW4oYS5kb3QodyxkKSxOKSxGPU1hdGgubWluKGEuZG90KE8sZCksRik7Yj1hLm11bHRpcGx5QnlTY2FsYXIoYiwuNSooTStFKSxiKSx3PWEubXVsdGlwbHlCeVNjYWxhcih3LC41KihOK1QpLHcpLE89YS5tdWx0aXBseUJ5U2NhbGFyKE8sLjUqKEYreCksTyk7bGV0IEk9YS5hZGQoYix3LGUuY2VudGVyKTthLmFkZChJLE8sSSk7bGV0IHY9Uk47cmV0dXJuIHYueD1FLU0sdi55PVQtTix2Lno9eC1GLGEubXVsdGlwbHlCeVNjYWxhcih2LC41LHYpLFoubXVsdGlwbHlCeVNjYWxlKGUuaGFsZkF4ZXMsdixlLmhhbGZBeGVzKSxlfTtyVD1uZXcgYSxOTj1uZXcgYTt0VD1uZXcgY3QsSU49bmV3IGEsdk49bmV3IGN0LEZOPW5ldyBjdCxMTj1uZXcgY3QsRE49bmV3IGN0LEJOPW5ldyBjdCxVTj1uZXcgYSxlVD1uZXcgYSxrTj1uZXcgYSxuVD1uZXcgYSxHTj1uZXcgYSxWTj1uZXcgSix6Tj1uZXcgSixqTj1uZXcgSixITj1uZXcgSixxTj1uZXcgSixLTj1uZXcgYSxXTj1uZXcgYSxYTj1uZXcgYSxZTj1uZXcgYSwkTj1uZXcgSixaTj1uZXcgYSxRTj1uZXcgYSxKTj1uZXcgYSx0ST1uZXcgb24oYS5VTklUX1gsMCk7QmUuZnJvbVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbixvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyZWN0YW5nbGUgaXMgcmVxdWlyZWQiKTtpZih0LndpZHRoPDB8fHQud2lkdGg+UC5UV09fUEkpdGhyb3cgbmV3IEQoIlJlY3RhbmdsZSB3aWR0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMiAqIHBpIik7aWYodC5oZWlnaHQ8MHx8dC5oZWlnaHQ+UC5QSSl0aHJvdyBuZXcgRCgiUmVjdGFuZ2xlIGhlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgcGkiKTtpZihtKG8pJiYhUC5lcXVhbHNFcHNpbG9uKG8ucmFkaWkueCxvLnJhZGlpLnksUC5FUFNJTE9OMTUpKXRocm93IG5ldyBEKCJFbGxpcHNvaWQgbXVzdCBiZSBhbiBlbGxpcHNvaWQgb2YgcmV2b2x1dGlvbiAocmFkaWkueCA9PSByYWRpaS55KSIpO2U9ZT8/MCxuPW4/PzAsbz1vPz9ZLmRlZmF1bHQ7bGV0IGkscyxmLHUsYyxsLHA7aWYodC53aWR0aDw9UC5QSSl7bGV0IE49TnQuY2VudGVyKHQsdFQpLEY9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihOLElOKSxJPW5ldyBBbyhGLG8pO3A9SS5wbGFuZTtsZXQgdj1OLmxvbmdpdHVkZSxCPXQuc291dGg8MCYmdC5ub3J0aD4wPzA6Ti5sYXRpdHVkZSxBPWN0LmZyb21SYWRpYW5zKHYsdC5ub3J0aCxuLHZOKSxTPWN0LmZyb21SYWRpYW5zKHQud2VzdCx0Lm5vcnRoLG4sRk4pLEM9Y3QuZnJvbVJhZGlhbnModC53ZXN0LEIsbixMTiksTD1jdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5zb3V0aCxuLEROKSx6PWN0LmZyb21SYWRpYW5zKHYsdC5zb3V0aCxuLEJOKSxqPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxVTiksaz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFMsZVQpLHE9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDLGtOKSxXPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTCxuVCksUj1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHosR04pLG50PUkucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShqLFZOKSxhdD1JLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoayx6TiksbHQ9SS5wcm9qZWN0UG9pbnRUb05lYXJlc3RPblBsYW5lKHEsak4pLF90PUkucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShXLEhOKSxvdD1JLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoUixxTik7cmV0dXJuIGk9TWF0aC5taW4oYXQueCxsdC54LF90LngpLHM9LWksdT1NYXRoLm1heChhdC55LG50LnkpLGY9TWF0aC5taW4oX3QueSxvdC55KSxTLmhlaWdodD1MLmhlaWdodD1lLGs9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihTLGVUKSxXPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTCxuVCksYz1NYXRoLm1pbihvbi5nZXRQb2ludERpc3RhbmNlKHAsayksb24uZ2V0UG9pbnREaXN0YW5jZShwLFcpKSxsPW4sSncoSS5vcmlnaW4sSS54QXhpcyxJLnlBeGlzLEkuekF4aXMsaSxzLGYsdSxjLGwscil9bGV0IGQ9dC5zb3V0aD4wLGg9dC5ub3J0aDwwLF89ZD90LnNvdXRoOmg/dC5ub3J0aDowLGc9TnQuY2VudGVyKHQsdFQpLmxvbmdpdHVkZSxiPWEuZnJvbVJhZGlhbnMoZyxfLG4sbyxLTik7Yi56PTA7bGV0IE89TWF0aC5hYnMoYi54KTxQLkVQU0lMT04xMCYmTWF0aC5hYnMoYi55KTxQLkVQU0lMT04xMD9hLlVOSVRfWDphLm5vcm1hbGl6ZShiLFdOKSxFPWEuVU5JVF9aLFQ9YS5jcm9zcyhPLEUsWE4pO3A9b24uZnJvbVBvaW50Tm9ybWFsKGIsTyx0SSk7bGV0IHg9YS5mcm9tUmFkaWFucyhnK1AuUElfT1ZFUl9UV08sXyxuLG8sWU4pO3M9YS5kb3Qob24ucHJvamVjdFBvaW50T250b1BsYW5lKHAseCwkTiksVCksaT0tcyx1PWEuZnJvbVJhZGlhbnMoMCx0Lm5vcnRoLGg/ZTpuLG8sWk4pLnosZj1hLmZyb21SYWRpYW5zKDAsdC5zb3V0aCxkP2U6bixvLFFOKS56O2xldCBNPWEuZnJvbVJhZGlhbnModC5lYXN0LF8sbixvLEpOKTtyZXR1cm4gYz1vbi5nZXRQb2ludERpc3RhbmNlKHAsTSksbD0wLEp3KGIsVCxFLE8saSxzLGYsdSxjLGwscil9O0JlLmZyb21UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgQmUpLGUuY2VudGVyPXN0LmdldFRyYW5zbGF0aW9uKHQsZS5jZW50ZXIpLGUuaGFsZkF4ZXM9c3QuZ2V0TWF0cml4Myh0LGUuaGFsZkF4ZXMpLGUuaGFsZkF4ZXM9Wi5tdWx0aXBseUJ5U2NhbGFyKGUuaGFsZkF4ZXMsLjUsZS5oYWxmQXhlcyksZX07QmUuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhhLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxaLmNsb25lKHQuaGFsZkF4ZXMsZS5oYWxmQXhlcyksZSk6bmV3IEJlKHQuY2VudGVyLHQuaGFsZkF4ZXMpfTtCZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInBsYW5lIGlzIHJlcXVpcmVkLiIpO2xldCBuPXQuY2VudGVyLG89ZS5ub3JtYWwscj10LmhhbGZBeGVzLGk9by54LHM9by55LGY9by56LHU9TWF0aC5hYnMoaSpyW1ouQ09MVU1OMFJPVzBdK3MqcltaLkNPTFVNTjBST1cxXStmKnJbWi5DT0xVTU4wUk9XMl0pK01hdGguYWJzKGkqcltaLkNPTFVNTjFST1cwXStzKnJbWi5DT0xVTU4xUk9XMV0rZipyW1ouQ09MVU1OMVJPVzJdKStNYXRoLmFicyhpKnJbWi5DT0xVTU4yUk9XMF0rcypyW1ouQ09MVU1OMlJPVzFdK2YqcltaLkNPTFVNTjJST1cyXSksYz1hLmRvdChvLG4pK2UuZGlzdGFuY2U7cmV0dXJuIGM8PS11P1NuLk9VVFNJREU6Yz49dT9Tbi5JTlNJREU6U24uSU5URVJTRUNUSU5HfTtpVD1uZXcgYSxzVD1uZXcgYSxjVD1uZXcgYSxlST1uZXcgYSxvVD1uZXcgYSxuST1uZXcgYTtCZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZC4iKTtsZXQgbj1hLnN1YnRyYWN0KGUsdC5jZW50ZXIsclQpLG89dC5oYWxmQXhlcyxyPVouZ2V0Q29sdW1uKG8sMCxpVCksaT1aLmdldENvbHVtbihvLDEsc1QpLHM9Wi5nZXRDb2x1bW4obywyLGNUKSxmPWEubWFnbml0dWRlKHIpLHU9YS5tYWduaXR1ZGUoaSksYz1hLm1hZ25pdHVkZShzKSxsPSEwLHA9ITAsZD0hMDtmPjA/YS5kaXZpZGVCeVNjYWxhcihyLGYscik6bD0hMSx1PjA/YS5kaXZpZGVCeVNjYWxhcihpLHUsaSk6cD0hMSxjPjA/YS5kaXZpZGVCeVNjYWxhcihzLGMscyk6ZD0hMTtsZXQgaD0hbCshcCshZCxfLGcsYjtpZihoPT09MSl7bGV0IFQ9cjtfPWksZz1zLHA/ZHx8KFQ9cyxnPXIpOihUPWksXz1yKSxiPWEuY3Jvc3MoXyxnLG9UKSxUPT09cj9yPWI6VD09PWk/aT1iOlQ9PT1zJiYocz1iKX1lbHNlIGlmKGg9PT0yKXtfPXIscD9fPWk6ZCYmKF89cyk7bGV0IFQ9YS5VTklUX1k7VC5lcXVhbHNFcHNpbG9uKF8sUC5FUFNJTE9OMykmJihUPWEuVU5JVF9YKSxnPWEuY3Jvc3MoXyxULGVJKSxhLm5vcm1hbGl6ZShnLGcpLGI9YS5jcm9zcyhfLGcsb1QpLGEubm9ybWFsaXplKGIsYiksXz09PXI/KGk9ZyxzPWIpOl89PT1pPyhzPWcscj1iKTpfPT09cyYmKHI9ZyxpPWIpfWVsc2UgaD09PTMmJihyPWEuVU5JVF9YLGk9YS5VTklUX1kscz1hLlVOSVRfWik7bGV0IHc9bkk7dy54PWEuZG90KG4sciksdy55PWEuZG90KG4saSksdy56PWEuZG90KG4scyk7bGV0IE89MCxFO3JldHVybiB3Lng8LWY/KEU9dy54K2YsTys9RSpFKTp3Lng+ZiYmKEU9dy54LWYsTys9RSpFKSx3Lnk8LXU/KEU9dy55K3UsTys9RSpFKTp3Lnk+dSYmKEU9dy55LXUsTys9RSpFKSx3Lno8LWM/KEU9dy56K2MsTys9RSpFKTp3Lno+YyYmKEU9dy56LWMsTys9RSpFKSxPfTtvST1uZXcgYSxyST1uZXcgYTtCZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImJveCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicG9zaXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpcmVjdGlvbiBpcyByZXF1aXJlZC4iKTttKG8pfHwobz1uZXcgSnIpO2xldCByPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxpPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxzPXQuY2VudGVyLGY9dC5oYWxmQXhlcyx1PVouZ2V0Q29sdW1uKGYsMCxpVCksYz1aLmdldENvbHVtbihmLDEsc1QpLGw9Wi5nZXRDb2x1bW4oZiwyLGNUKSxwPWEuYWRkKHUsYyxvSSk7YS5hZGQocCxsLHApLGEuYWRkKHAscyxwKTtsZXQgZD1hLnN1YnRyYWN0KHAsZSxySSksaD1hLmRvdChuLGQpO3JldHVybiByPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLGEuYWRkKHMsdSxwKSxhLmFkZChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5hZGQocyx1LHApLGEuc3VidHJhY3QocCxjLHApLGEuYWRkKHAsbCxwKSxhLnN1YnRyYWN0KHAsZSxkKSxoPWEuZG90KG4sZCkscj1NYXRoLm1pbihoLHIpLGk9TWF0aC5tYXgoaCxpKSxhLmFkZChzLHUscCksYS5zdWJ0cmFjdChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5zdWJ0cmFjdChzLHUscCksYS5hZGQocCxjLHApLGEuYWRkKHAsbCxwKSxhLnN1YnRyYWN0KHAsZSxkKSxoPWEuZG90KG4sZCkscj1NYXRoLm1pbihoLHIpLGk9TWF0aC5tYXgoaCxpKSxhLnN1YnRyYWN0KHMsdSxwKSxhLmFkZChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5zdWJ0cmFjdChzLHUscCksYS5zdWJ0cmFjdChwLGMscCksYS5hZGQocCxsLHApLGEuc3VidHJhY3QocCxlLGQpLGg9YS5kb3QobixkKSxyPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLGEuc3VidHJhY3Qocyx1LHApLGEuc3VidHJhY3QocCxjLHApLGEuc3VidHJhY3QocCxsLHApLGEuc3VidHJhY3QocCxlLGQpLGg9YS5kb3QobixkKSxyPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLG8uc3RhcnQ9cixvLnN0b3A9aSxvfTtpST1uZXcgYSxzST1uZXcgYSxjST1uZXcgYTtCZS5jb21wdXRlQ29ybmVycz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiYm94Iix0KSxtKGUpfHwoZT1bbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGFdKTtsZXQgbj10LmNlbnRlcixvPXQuaGFsZkF4ZXMscj1aLmdldENvbHVtbihvLDAsaUkpLGk9Wi5nZXRDb2x1bW4obywxLHNJKSxzPVouZ2V0Q29sdW1uKG8sMixjSSk7cmV0dXJuIGEuY2xvbmUobixlWzBdKSxhLnN1YnRyYWN0KGVbMF0scixlWzBdKSxhLnN1YnRyYWN0KGVbMF0saSxlWzBdKSxhLnN1YnRyYWN0KGVbMF0scyxlWzBdKSxhLmNsb25lKG4sZVsxXSksYS5zdWJ0cmFjdChlWzFdLHIsZVsxXSksYS5zdWJ0cmFjdChlWzFdLGksZVsxXSksYS5hZGQoZVsxXSxzLGVbMV0pLGEuY2xvbmUobixlWzJdKSxhLnN1YnRyYWN0KGVbMl0scixlWzJdKSxhLmFkZChlWzJdLGksZVsyXSksYS5zdWJ0cmFjdChlWzJdLHMsZVsyXSksYS5jbG9uZShuLGVbM10pLGEuc3VidHJhY3QoZVszXSxyLGVbM10pLGEuYWRkKGVbM10saSxlWzNdKSxhLmFkZChlWzNdLHMsZVszXSksYS5jbG9uZShuLGVbNF0pLGEuYWRkKGVbNF0scixlWzRdKSxhLnN1YnRyYWN0KGVbNF0saSxlWzRdKSxhLnN1YnRyYWN0KGVbNF0scyxlWzRdKSxhLmNsb25lKG4sZVs1XSksYS5hZGQoZVs1XSxyLGVbNV0pLGEuc3VidHJhY3QoZVs1XSxpLGVbNV0pLGEuYWRkKGVbNV0scyxlWzVdKSxhLmNsb25lKG4sZVs2XSksYS5hZGQoZVs2XSxyLGVbNl0pLGEuYWRkKGVbNl0saSxlWzZdKSxhLnN1YnRyYWN0KGVbNl0scyxlWzZdKSxhLmNsb25lKG4sZVs3XSksYS5hZGQoZVs3XSxyLGVbN10pLGEuYWRkKGVbN10saSxlWzddKSxhLmFkZChlWzddLHMsZVs3XSksZX07YUk9bmV3IFo7QmUuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJib3giLHQpLG0oZSl8fChlPW5ldyBzdCk7bGV0IG49dC5jZW50ZXIsbz1aLm11bHRpcGx5QnlVbmlmb3JtU2NhbGUodC5oYWxmQXhlcywyLGFJKTtyZXR1cm4gc3QuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obyxuLGUpfTtmST1uZXcgQXQ7QmUuaXNPY2NsdWRlZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9jY2x1ZGVyIGlzIHJlcXVpcmVkLiIpO2xldCBuPUF0LmZyb21PcmllbnRlZEJvdW5kaW5nQm94KHQsZkkpO3JldHVybiFlLmlzQm91bmRpbmdTcGhlcmVWaXNpYmxlKG4pfTtCZS5wcm90b3R5cGUuaW50ZXJzZWN0UGxhbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEJlLmludGVyc2VjdFBsYW5lKHRoaXMsdCl9O0JlLnByb3RvdHlwZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0KXtyZXR1cm4gQmUuZGlzdGFuY2VTcXVhcmVkVG8odGhpcyx0KX07QmUucHJvdG90eXBlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIEJlLmNvbXB1dGVQbGFuZURpc3RhbmNlcyh0aGlzLHQsZSxuKX07QmUucHJvdG90eXBlLmNvbXB1dGVDb3JuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBCZS5jb21wdXRlQ29ybmVycyh0aGlzLHQpfTtCZS5wcm90b3R5cGUuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBCZS5jb21wdXRlVHJhbnNmb3JtYXRpb24odGhpcyx0KX07QmUucHJvdG90eXBlLmlzT2NjbHVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJlLmlzT2NjbHVkZWQodGhpcyx0KX07QmUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZhLmVxdWFscyh0LmNlbnRlcixlLmNlbnRlcikmJlouZXF1YWxzKHQuaGFsZkF4ZXMsZS5oYWxmQXhlcyl9O0JlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gQmUuY2xvbmUodGhpcyx0KX07QmUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gQmUuZXF1YWxzKHRoaXMsdCl9O0NvPUJlfSk7ZnVuY3Rpb24gcFQodCxlLG4sbyxyKXtsZXQgaT1hLnN1YnRyYWN0KHQsZSx1SSkscz1hLmRvdChuLGkpLGY9YS5kb3QobyxpKTtyZXR1cm4gSi5mcm9tRWxlbWVudHMocyxmLHIpfXZhciBNZix1SSxhVCxmVCx1VCxsVCxtYSxJMD0kKCgpPT57a2UoKTtEdCgpO1d0KCk7VW4oKTtkYSgpO01mPXt9LHVJPW5ldyBhLGFUPW5ldyBhLGZUPW5ldyBhLHVUPW5ldyBhLGxUPW5ldyBDbztNZi52YWxpZE91dGxpbmU9ZnVuY3Rpb24odCl7eS5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBuPUNvLmZyb21Qb2ludHModCxsVCkuaGFsZkF4ZXMsbz1aLmdldENvbHVtbihuLDAsYVQpLHI9Wi5nZXRDb2x1bW4obiwxLGZUKSxpPVouZ2V0Q29sdW1uKG4sMix1VCkscz1hLm1hZ25pdHVkZShvKSxmPWEubWFnbml0dWRlKHIpLHU9YS5tYWduaXR1ZGUoaSk7cmV0dXJuIShzPT09MCYmKGY9PT0wfHx1PT09MCl8fGY9PT0wJiZ1PT09MCl9O01mLmNvbXB1dGVQcm9qZWN0VG8yREFyZ3VtZW50cz1mdW5jdGlvbih0LGUsbixvKXt5LmRlZmluZWQoInBvc2l0aW9ucyIsdCkseS5kZWZpbmVkKCJjZW50ZXJSZXN1bHQiLGUpLHkuZGVmaW5lZCgicGxhbmVBeGlzMVJlc3VsdCIsbikseS5kZWZpbmVkKCJwbGFuZUF4aXMyUmVzdWx0IixvKTtsZXQgcj1Dby5mcm9tUG9pbnRzKHQsbFQpLGk9ci5oYWxmQXhlcyxzPVouZ2V0Q29sdW1uKGksMCxhVCksZj1aLmdldENvbHVtbihpLDEsZlQpLHU9Wi5nZXRDb2x1bW4oaSwyLHVUKSxjPWEubWFnbml0dWRlKHMpLGw9YS5tYWduaXR1ZGUoZikscD1hLm1hZ25pdHVkZSh1KSxkPU1hdGgubWluKGMsbCxwKTtpZihjPT09MCYmKGw9PT0wfHxwPT09MCl8fGw9PT0wJiZwPT09MClyZXR1cm4hMTtsZXQgaCxfO3JldHVybihkPT09bHx8ZD09PXApJiYoaD1zKSxkPT09Yz9oPWY6ZD09PXAmJihfPWYpLChkPT09Y3x8ZD09PWwpJiYoXz11KSxhLm5vcm1hbGl6ZShoLG4pLGEubm9ybWFsaXplKF8sbyksYS5jbG9uZShyLmNlbnRlcixlKSwhMH07TWYuY3JlYXRlUHJvamVjdFBvaW50c1RvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe2xldCByPW5ldyBBcnJheShvLmxlbmd0aCk7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspcltpXT1wVChvW2ldLHQsZSxuKTtyZXR1cm4gcn19O01mLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8scil7cmV0dXJuIHBUKG8sdCxlLG4scil9fTttYT1NZn0pO3ZhciBsSSxoZSx1Yz0kKCgpPT57bEk9e05PTkU6MCxHRU9ERVNJQzoxLFJIVU1COjJ9LGhlPU9iamVjdC5mcmVlemUobEkpfSk7ZnVuY3Rpb24gRjAodCxlLG4pe2lmKHQ9PT0wKXJldHVybiBlKm47bGV0IG89dCp0LHI9bypvLGk9cipvLHM9aSpvLGY9cypvLHU9ZipvLGM9bixsPU1hdGguc2luKDIqYykscD1NYXRoLnNpbig0KmMpLGQ9TWF0aC5zaW4oNipjKSxoPU1hdGguc2luKDgqYyksXz1NYXRoLnNpbigxMCpjKSxnPU1hdGguc2luKDEyKmMpO3JldHVybiBlKigoMS1vLzQtMypyLzY0LTUqaS8yNTYtMTc1KnMvMTYzODQtNDQxKmYvNjU1MzYtNDg1MSp1LzEwNDg1NzYpKmMtKDMqby84KzMqci8zMis0NSppLzEwMjQrMTA1KnMvNDA5NisyMjA1KmYvMTMxMDcyKzYyMzcqdS81MjQyODgpKmwrKDE1KnIvMjU2KzQ1KmkvMTAyNCs1MjUqcy8xNjM4NCsxNTc1KmYvNjU1MzYrMTU1OTI1KnUvODM4ODYwOCkqcC0oMzUqaS8zMDcyKzE3NSpzLzEyMjg4KzM2NzUqZi8yNjIxNDQrMTM0NzUqdS8xMDQ4NTc2KSpkKygzMTUqcy8xMzEwNzIrMjIwNSpmLzUyNDI4OCs0MzY1OSp1LzgzODg2MDgpKmgtKDY5MypmLzEzMTA3MjArNjIzNyp1LzUyNDI4ODApKl8rMTAwMSp1LzgzODg2MDgqZyl9ZnVuY3Rpb24gcEkodCxlLG4pe2xldCBvPXQvbjtpZihlPT09MClyZXR1cm4gbztsZXQgcj1vKm8saT1yKm8scz1pKm8sZj1lLHU9ZipmLGM9dSp1LGw9Yyp1LHA9bCp1LGQ9cCp1LGg9ZCp1LF89TWF0aC5zaW4oMipvKSxnPU1hdGguY29zKDIqbyksYj1NYXRoLnNpbig0Km8pLHc9TWF0aC5jb3MoNCpvKSxPPU1hdGguc2luKDYqbyksRT1NYXRoLmNvcyg2Km8pLFQ9TWF0aC5zaW4oOCpvKSx4PU1hdGguY29zKDgqbyksTT1NYXRoLnNpbigxMCpvKSxOPU1hdGguY29zKDEwKm8pLEY9TWF0aC5zaW4oMTIqbyk7cmV0dXJuIG8rbyp1LzQrNypvKmMvNjQrMTUqbypsLzI1Nis1NzkqbypwLzE2Mzg0KzE1MTUqbypkLzY1NTM2KzE2ODM3Km8qaC8xMDQ4NTc2KygzKm8qYy8xNis0NSpvKmwvMjU2LW8qKDMyKnItNTYxKSpwLzQwOTYtbyooMjMyKnItMTY3NykqZC8xNjM4NCtvKigzOTk5ODUtOTA1NjAqcis1MTIqcykqaC81MjQyODgwKSpnKygyMSpvKmwvMjU2KzQ4MypvKnAvNDA5Ni1vKigyMjQqci0xOTY5KSpkLzE2Mzg0LW8qKDMzMTUyKnItMTEyNTk5KSpoLzEwNDg1NzYpKncrKDE1MSpvKnAvNDA5Nis0NjgxKm8qZC82NTUzNisxNDc5Km8qaC8xNjM4NC00NTMqaSpoLzMyNzY4KSpFKygxMDk3Km8qZC82NTUzNis0Mjc4MypvKmgvMTA0ODU3NikqeCs4MDExKm8qaC8xMDQ4NTc2Kk4rKDMqdS84KzMqYy8xNisyMTMqbC8yMDQ4LTMqcipsLzY0KzI1NSpwLzQwOTYtMzMqcipwLzUxMisyMDg2MSpkLzUyNDI4OC0zMypyKmQvNTEyK3MqZC8xMDI0KzI4MjczKmgvMTA0ODU3Ni00NzEqcipoLzgxOTIrOSpzKmgvNDA5NikqXysoMjEqYy8yNTYrMjEqbC8yNTYrNTMzKnAvODE5Mi0yMSpyKnAvNTEyKzE5NypkLzQwOTYtMzE1KnIqZC80MDk2KzU4NDAzOSpoLzE2Nzc3MjE2LTEyNTE3KnIqaC8xMzEwNzIrNypzKmgvMjA0OCkqYisoMTUxKmwvNjE0NCsxNTEqcC80MDk2KzUwMTkqZC8xMzEwNzItNDUzKnIqZC8xNjM4NCsyNjk2NSpoLzc4NjQzMi04NjA3KnIqaC8xMzEwNzIpKk8rKDEwOTcqcC8xMzEwNzIrMTA5NypkLzY1NTM2KzIyNTc5NypoLzEwNDg1NzYwLTEwOTcqcipoLzY1NTM2KSpUKyg4MDExKmQvMjYyMTQ0MCs4MDExKmgvMTA0ODU3NikqTSsyOTMzOTMqaC8yNTE2NTgyNDAqRn1mdW5jdGlvbiBoYSh0LGUpe2lmKHQ9PT0wKXJldHVybiBNYXRoLmxvZyhNYXRoLnRhbiguNSooUC5QSV9PVkVSX1RXTytlKSkpO2xldCBuPXQqTWF0aC5zaW4oZSk7cmV0dXJuIE1hdGgubG9nKE1hdGgudGFuKC41KihQLlBJX09WRVJfVFdPK2UpKSktdC8yKk1hdGgubG9nKCgxK24pLygxLW4pKX1mdW5jdGlvbiBkSSh0LGUsbixvLHIpe2xldCBpPWhhKHQuX2VsbGlwdGljaXR5LG4pLHM9aGEodC5fZWxsaXB0aWNpdHkscik7cmV0dXJuIE1hdGguYXRhbjIoUC5uZWdhdGl2ZVBpVG9QaShvLWUpLHMtaSl9ZnVuY3Rpb24gbUkodCxlLG4sbyxyLGkscyl7bGV0IGY9dC5faGVhZGluZyx1PWktbyxjPTA7aWYoUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKGYpLFAuUElfT1ZFUl9UV08sUC5FUFNJTE9OOCkpaWYoZT09PW4pYz1lKk1hdGguY29zKHIpKlAubmVnYXRpdmVQaVRvUGkodSk7ZWxzZXtsZXQgbD1NYXRoLnNpbihyKTtjPWUqTWF0aC5jb3MocikqUC5uZWdhdGl2ZVBpVG9QaSh1KS9NYXRoLnNxcnQoMS10Ll9lbGxpcHRpY2l0eVNxdWFyZWQqbCpsKX1lbHNle2xldCBsPUYwKHQuX2VsbGlwdGljaXR5LGUscik7Yz0oRjAodC5fZWxsaXB0aWNpdHksZSxzKS1sKS9NYXRoLmNvcyhmKX1yZXR1cm4gTWF0aC5hYnMoYyl9ZnVuY3Rpb24gZFQodCxlLG4sbyl7bGV0IHI9YS5ub3JtYWxpemUoby5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihlLHYwKSxoSSksaT1hLm5vcm1hbGl6ZShvLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKG4sdjApLHYwKTt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygidmFsdWUiLE1hdGguYWJzKE1hdGguYWJzKGEuYW5nbGVCZXR3ZWVuKHIsaSkpLU1hdGguUEkpLC4wMTI1KTtsZXQgcz1vLm1heGltdW1SYWRpdXMsZj1vLm1pbmltdW1SYWRpdXMsdT1zKnMsYz1mKmY7dC5fZWxsaXB0aWNpdHlTcXVhcmVkPSh1LWMpL3UsdC5fZWxsaXB0aWNpdHk9TWF0aC5zcXJ0KHQuX2VsbGlwdGljaXR5U3F1YXJlZCksdC5fc3RhcnQ9Y3QuY2xvbmUoZSx0Ll9zdGFydCksdC5fc3RhcnQuaGVpZ2h0PTAsdC5fZW5kPWN0LmNsb25lKG4sdC5fZW5kKSx0Ll9lbmQuaGVpZ2h0PTAsdC5faGVhZGluZz1kSSh0LGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSksdC5fZGlzdGFuY2U9bUkodCxvLm1heGltdW1SYWRpdXMsby5taW5pbXVtUmFkaXVzLGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSl9ZnVuY3Rpb24gbVQodCxlLG4sbyxyLGkpe2lmKG49PT0wKXJldHVybiBjdC5jbG9uZSh0LGkpO2xldCBzPXIqcixmLHUsYztpZihNYXRoLmFicyhQLlBJX09WRVJfVFdPLU1hdGguYWJzKGUpKT5QLkVQU0lMT044KXtsZXQgbD1GMChyLG8sdC5sYXRpdHVkZSkscD1uKk1hdGguY29zKGUpLGQ9bCtwO2lmKHU9cEkoZCxyLG8pLE1hdGguYWJzKGUpPFAuRVBTSUxPTjEwKWY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZSk7ZWxzZXtsZXQgaD1oYShyLHQubGF0aXR1ZGUpLF89aGEocix1KTtjPU1hdGgudGFuKGUpKihfLWgpLGY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZStjKX19ZWxzZXt1PXQubGF0aXR1ZGU7bGV0IGw7aWYocj09PTApbD1vKk1hdGguY29zKHQubGF0aXR1ZGUpO2Vsc2V7bGV0IHA9TWF0aC5zaW4odC5sYXRpdHVkZSk7bD1vKk1hdGguY29zKHQubGF0aXR1ZGUpL01hdGguc3FydCgxLXMqcCpwKX1jPW4vbCxlPjA/Zj1QLm5lZ2F0aXZlUGlUb1BpKHQubG9uZ2l0dWRlK2MpOmY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZS1jKX1yZXR1cm4gbShpKT8oaS5sb25naXR1ZGU9ZixpLmxhdGl0dWRlPXUsaS5oZWlnaHQ9MCxpKTpuZXcgY3QoZix1LDApfWZ1bmN0aW9uIEJpKHQsZSxuKXtsZXQgbz1uPz9ZLmRlZmF1bHQ7dGhpcy5fZWxsaXBzb2lkPW8sdGhpcy5fc3RhcnQ9bmV3IGN0LHRoaXMuX2VuZD1uZXcgY3QsdGhpcy5faGVhZGluZz12b2lkIDAsdGhpcy5fZGlzdGFuY2U9dm9pZCAwLHRoaXMuX2VsbGlwdGljaXR5PXZvaWQgMCx0aGlzLl9lbGxpcHRpY2l0eVNxdWFyZWQ9dm9pZCAwLG0odCkmJm0oZSkmJmRUKHRoaXMsdCxlLG8pfXZhciBoSSx2MCxKbyxOZj0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTtIdCgpOyR0KCk7S3QoKTtoST1uZXcgYSx2MD1uZXcgYTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhCaS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHN1cmZhY2VEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9kaXN0YW5jZX19LHN0YXJ0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhcnR9fSxlbmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmR9fSxoZWFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX2hlYWRpbmd9fX0pO0JpLmZyb21TdGFydEhlYWRpbmdEaXN0YW5jZT1mdW5jdGlvbih0LGUsbixvLHIpe3kuZGVmaW5lZCgic3RhcnQiLHQpLHkuZGVmaW5lZCgiaGVhZGluZyIsZSkseS5kZWZpbmVkKCJkaXN0YW5jZSIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJkaXN0YW5jZSIsbiwwKTtsZXQgaT1vPz9ZLmRlZmF1bHQscz1pLm1heGltdW1SYWRpdXMsZj1pLm1pbmltdW1SYWRpdXMsdT1zKnMsYz1mKmYsbD1NYXRoLnNxcnQoKHUtYykvdSk7ZT1QLm5lZ2F0aXZlUGlUb1BpKGUpO2xldCBwPW1UKHQsZSxuLGkubWF4aW11bVJhZGl1cyxsKTtyZXR1cm4hbShyKXx8bShvKSYmIW8uZXF1YWxzKHIuZWxsaXBzb2lkKT9uZXcgQmkodCxwLGkpOihyLnNldEVuZFBvaW50cyh0LHApLHIpfTtCaS5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJzdGFydCIsdCkseS5kZWZpbmVkKCJlbmQiLGUpLGRUKHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O0JpLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHQqdGhpcy5fZGlzdGFuY2UsZSl9O0JpLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IEQoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7cmV0dXJuIG1UKHRoaXMuX3N0YXJ0LHRoaXMuX2hlYWRpbmcsdCx0aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9lbGxpcHRpY2l0eSxlKX07QmkucHJvdG90eXBlLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25Mb25naXR1ZGUiLHQpLCFtKHRoaXMuX2Rpc3RhbmNlKXx8dGhpcy5fZGlzdGFuY2U9PT0wKXRocm93IG5ldyBEKCJFbGxpcHNvaWRSaHVtYkxpbmUgbXVzdCBoYXZlIGRpc3RpbmN0IHN0YXJ0IGFuZCBlbmQgc2V0LiIpO2xldCBuPXRoaXMuX2VsbGlwdGljaXR5LG89dGhpcy5faGVhZGluZyxyPU1hdGguYWJzKG8pLGk9dGhpcy5fc3RhcnQ7aWYodD1QLm5lZ2F0aXZlUGlUb1BpKHQpLFAuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0KSxNYXRoLlBJLFAuRVBTSUxPTjE0KSYmKHQ9UC5zaWduKGkubG9uZ2l0dWRlKSpNYXRoLlBJKSxtKGUpfHwoZT1uZXcgY3QpLE1hdGguYWJzKFAuUElfT1ZFUl9UV08tcik8PVAuRVBTSUxPTjgpcmV0dXJuIGUubG9uZ2l0dWRlPXQsZS5sYXRpdHVkZT1pLmxhdGl0dWRlLGUuaGVpZ2h0PTAsZTtpZihQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoUC5QSV9PVkVSX1RXTy1yKSxQLlBJX09WRVJfVFdPLFAuRVBTSUxPTjgpKXJldHVybiBQLmVxdWFsc0Vwc2lsb24odCxpLmxvbmdpdHVkZSxQLkVQU0lMT04xMik/dm9pZCAwOihlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9UC5QSV9PVkVSX1RXTypQLnNpZ24oUC5QSV9PVkVSX1RXTy1vKSxlLmhlaWdodD0wLGUpO2xldCBzPWkubGF0aXR1ZGUsZj1uKk1hdGguc2luKHMpLHU9TWF0aC50YW4oLjUqKFAuUElfT1ZFUl9UV08rcykpKk1hdGguZXhwKCh0LWkubG9uZ2l0dWRlKS9NYXRoLnRhbihvKSksYz0oMStmKS8oMS1mKSxsPWkubGF0aXR1ZGUscDtkb3twPWw7bGV0IGQ9bipNYXRoLnNpbihwKSxoPSgxK2QpLygxLWQpO2w9MipNYXRoLmF0YW4odSpNYXRoLnBvdyhoL2Msbi8yKSktUC5QSV9PVkVSX1RXT313aGlsZSghUC5lcXVhbHNFcHNpbG9uKGwscCxQLkVQU0lMT04xMikpO3JldHVybiBlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9bCxlLmhlaWdodD0wLGV9O0JpLnByb3RvdHlwZS5maW5kSW50ZXJzZWN0aW9uV2l0aExhdGl0dWRlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25MYXRpdHVkZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IEQoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7bGV0IG49dGhpcy5fZWxsaXB0aWNpdHksbz10aGlzLl9oZWFkaW5nLHI9dGhpcy5fc3RhcnQ7aWYoUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKG8pLFAuUElfT1ZFUl9UV08sUC5FUFNJTE9OOCkpcmV0dXJuO2xldCBpPWhhKG4sci5sYXRpdHVkZSkscz1oYShuLHQpLGY9TWF0aC50YW4obykqKHMtaSksdT1QLm5lZ2F0aXZlUGlUb1BpKHIubG9uZ2l0dWRlK2YpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT11LGUubGF0aXR1ZGU9dCxlLmhlaWdodD0wLGUpOm5ldyBjdCh1LHQsMCl9O0pvPUJpfSk7ZnVuY3Rpb24gX0kodCxlKXt0aGlzLnBvc2l0aW9ucz1tKHQpP3Q6W10sdGhpcy5ob2xlcz1tKGUpP2U6W119dmFyIGhULF9UPSQoKCk9PntmdCgpO2hUPV9JfSk7ZnVuY3Rpb24gQjAodCxlLG49Mil7bGV0IG89ZSYmZS5sZW5ndGgscj1vP2VbMF0qbjp0Lmxlbmd0aCxpPWdUKHQsMCxyLG4sITApLHM9W107aWYoIWl8fGkubmV4dD09PWkucHJldilyZXR1cm4gcztsZXQgZix1LGM7aWYobyYmKGk9d0kodCxlLGksbikpLHQubGVuZ3RoPjgwKm4pe2Y9dFswXSx1PXRbMV07bGV0IGw9ZixwPXU7Zm9yKGxldCBkPW47ZDxyO2QrPW4pe2xldCBoPXRbZF0sXz10W2QrMV07aDxmJiYoZj1oKSxfPHUmJih1PV8pLGg+bCYmKGw9aCksXz5wJiYocD1fKX1jPU1hdGgubWF4KGwtZixwLXUpLGM9YyE9PTA/MzI3NjcvYzowfXJldHVybiB2ZihpLHMsbixmLHUsYywwKSxzfWZ1bmN0aW9uIGdUKHQsZSxuLG8scil7bGV0IGk7aWYocj09PUlJKHQsZSxuLG8pPjApZm9yKGxldCBzPWU7czxuO3MrPW8paT15VChzL298MCx0W3NdLHRbcysxXSxpKTtlbHNlIGZvcihsZXQgcz1uLW87cz49ZTtzLT1vKWk9eVQocy9vfDAsdFtzXSx0W3MrMV0saSk7cmV0dXJuIGkmJl9hKGksaS5uZXh0KSYmKExmKGkpLGk9aS5uZXh0KSxpfWZ1bmN0aW9uIGxjKHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7bGV0IG49dCxvO2RvIGlmKG89ITEsIW4uc3RlaW5lciYmKF9hKG4sbi5uZXh0KXx8dm4obi5wcmV2LG4sbi5uZXh0KT09PTApKXtpZihMZihuKSxuPWU9bi5wcmV2LG49PT1uLm5leHQpYnJlYWs7bz0hMH1lbHNlIG49bi5uZXh0O3doaWxlKG98fG4hPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiB2Zih0LGUsbixvLHIsaSxzKXtpZighdClyZXR1cm47IXMmJmkmJlNJKHQsbyxyLGkpO2xldCBmPXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KXtsZXQgdT10LnByZXYsYz10Lm5leHQ7aWYoaT9nSSh0LG8scixpKTp5SSh0KSl7ZS5wdXNoKHUuaSx0LmksYy5pKSxMZih0KSx0PWMubmV4dCxmPWMubmV4dDtjb250aW51ZX1pZih0PWMsdD09PWYpe3M/cz09PTE/KHQ9QUkobGModCksZSksdmYodCxlLG4sbyxyLGksMikpOnM9PT0yJiZiSSh0LGUsbixvLHIsaSk6dmYobGModCksZSxuLG8scixpLDEpO2JyZWFrfX19ZnVuY3Rpb24geUkodCl7bGV0IGU9dC5wcmV2LG49dCxvPXQubmV4dDtpZih2bihlLG4sbyk+PTApcmV0dXJuITE7bGV0IHI9ZS54LGk9bi54LHM9by54LGY9ZS55LHU9bi55LGM9by55LGw9TWF0aC5taW4ocixpLHMpLHA9TWF0aC5taW4oZix1LGMpLGQ9TWF0aC5tYXgocixpLHMpLGg9TWF0aC5tYXgoZix1LGMpLF89by5uZXh0O2Zvcig7XyE9PWU7KXtpZihfLng+PWwmJl8ueDw9ZCYmXy55Pj1wJiZfLnk8PWgmJklmKHIsZixpLHUscyxjLF8ueCxfLnkpJiZ2bihfLnByZXYsXyxfLm5leHQpPj0wKXJldHVybiExO189Xy5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGdJKHQsZSxuLG8pe2xldCByPXQucHJldixpPXQscz10Lm5leHQ7aWYodm4ocixpLHMpPj0wKXJldHVybiExO2xldCBmPXIueCx1PWkueCxjPXMueCxsPXIueSxwPWkueSxkPXMueSxoPU1hdGgubWluKGYsdSxjKSxfPU1hdGgubWluKGwscCxkKSxnPU1hdGgubWF4KGYsdSxjKSxiPU1hdGgubWF4KGwscCxkKSx3PUwwKGgsXyxlLG4sbyksTz1MMChnLGIsZSxuLG8pLEU9dC5wcmV2WixUPXQubmV4dFo7Zm9yKDtFJiZFLno+PXcmJlQmJlQuejw9Tzspe2lmKEUueD49aCYmRS54PD1nJiZFLnk+PV8mJkUueTw9YiYmRSE9PXImJkUhPT1zJiZJZihmLGwsdSxwLGMsZCxFLngsRS55KSYmdm4oRS5wcmV2LEUsRS5uZXh0KT49MHx8KEU9RS5wcmV2WixULng+PWgmJlQueDw9ZyYmVC55Pj1fJiZULnk8PWImJlQhPT1yJiZUIT09cyYmSWYoZixsLHUscCxjLGQsVC54LFQueSkmJnZuKFQucHJldixULFQubmV4dCk+PTApKXJldHVybiExO1Q9VC5uZXh0Wn1mb3IoO0UmJkUuej49dzspe2lmKEUueD49aCYmRS54PD1nJiZFLnk+PV8mJkUueTw9YiYmRSE9PXImJkUhPT1zJiZJZihmLGwsdSxwLGMsZCxFLngsRS55KSYmdm4oRS5wcmV2LEUsRS5uZXh0KT49MClyZXR1cm4hMTtFPUUucHJldlp9Zm9yKDtUJiZULno8PU87KXtpZihULng+PWgmJlQueDw9ZyYmVC55Pj1fJiZULnk8PWImJlQhPT1yJiZUIT09cyYmSWYoZixsLHUscCxjLGQsVC54LFQueSkmJnZuKFQucHJldixULFQubmV4dCk+PTApcmV0dXJuITE7VD1ULm5leHRafXJldHVybiEwfWZ1bmN0aW9uIEFJKHQsZSl7bGV0IG49dDtkb3tsZXQgbz1uLnByZXYscj1uLm5leHQubmV4dDshX2EobyxyKSYmYlQobyxuLG4ubmV4dCxyKSYmRmYobyxyKSYmRmYocixvKSYmKGUucHVzaChvLmksbi5pLHIuaSksTGYobiksTGYobi5uZXh0KSxuPXQ9ciksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBsYyhuKX1mdW5jdGlvbiBiSSh0LGUsbixvLHIsaSl7bGV0IHM9dDtkb3tsZXQgZj1zLm5leHQubmV4dDtmb3IoO2YhPT1zLnByZXY7KXtpZihzLmkhPT1mLmkmJlBJKHMsZikpe2xldCB1PXdUKHMsZik7cz1sYyhzLHMubmV4dCksdT1sYyh1LHUubmV4dCksdmYocyxlLG4sbyxyLGksMCksdmYodSxlLG4sbyxyLGksMCk7cmV0dXJufWY9Zi5uZXh0fXM9cy5uZXh0fXdoaWxlKHMhPT10KX1mdW5jdGlvbiB3SSh0LGUsbixvKXtsZXQgcj1bXTtmb3IobGV0IGk9MCxzPWUubGVuZ3RoO2k8cztpKyspe2xldCBmPWVbaV0qbyx1PWk8cy0xP2VbaSsxXSpvOnQubGVuZ3RoLGM9Z1QodCxmLHUsbywhMSk7Yz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksci5wdXNoKENJKGMpKX1yLnNvcnQoVEkpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKW49T0kocltpXSxuKTtyZXR1cm4gbn1mdW5jdGlvbiBUSSh0LGUpe2xldCBuPXQueC1lLng7aWYobj09PTAmJihuPXQueS1lLnksbj09PTApKXtsZXQgbz0odC5uZXh0LnktdC55KS8odC5uZXh0LngtdC54KSxyPShlLm5leHQueS1lLnkpLyhlLm5leHQueC1lLngpO249by1yfXJldHVybiBufWZ1bmN0aW9uIE9JKHQsZSl7bGV0IG49RUkodCxlKTtpZighbilyZXR1cm4gZTtsZXQgbz13VChuLHQpO3JldHVybiBsYyhvLG8ubmV4dCksbGMobixuLm5leHQpfWZ1bmN0aW9uIEVJKHQsZSl7bGV0IG49ZSxvPXQueCxyPXQueSxpPS0xLzAscztpZihfYSh0LG4pKXJldHVybiBuO2Rve2lmKF9hKHQsbi5uZXh0KSlyZXR1cm4gbi5uZXh0O2lmKHI8PW4ueSYmcj49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXtsZXQgcD1uLngrKHItbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZihwPD1vJiZwPmkmJihpPXAscz1uLng8bi5uZXh0Lng/bjpuLm5leHQscD09PW8pKXJldHVybiBzfW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighcylyZXR1cm4gbnVsbDtsZXQgZj1zLHU9cy54LGM9cy55LGw9MS8wO249cztkb3tpZihvPj1uLngmJm4ueD49dSYmbyE9PW4ueCYmQVQocjxjP286aSxyLHUsYyxyPGM/aTpvLHIsbi54LG4ueSkpe2xldCBwPU1hdGguYWJzKHItbi55KS8oby1uLngpO0ZmKG4sdCkmJihwPGx8fHA9PT1sJiYobi54PnMueHx8bi54PT09cy54JiZSSShzLG4pKSkmJihzPW4sbD1wKX1uPW4ubmV4dH13aGlsZShuIT09Zik7cmV0dXJuIHN9ZnVuY3Rpb24gUkkodCxlKXtyZXR1cm4gdm4odC5wcmV2LHQsZS5wcmV2KTwwJiZ2bihlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gU0kodCxlLG4sbyl7bGV0IHI9dDtkbyByLno9PT0wJiYoci56PUwwKHIueCxyLnksZSxuLG8pKSxyLnByZXZaPXIucHJldixyLm5leHRaPXIubmV4dCxyPXIubmV4dDt3aGlsZShyIT09dCk7ci5wcmV2Wi5uZXh0Wj1udWxsLHIucHJldlo9bnVsbCx4SShyKX1mdW5jdGlvbiB4SSh0KXtsZXQgZSxuPTE7ZG97bGV0IG89dCxyO3Q9bnVsbDtsZXQgaT1udWxsO2ZvcihlPTA7bzspe2UrKztsZXQgcz1vLGY9MDtmb3IobGV0IGM9MDtjPG4mJihmKysscz1zLm5leHRaLCEhcyk7YysrKTtsZXQgdT1uO2Zvcig7Zj4wfHx1PjAmJnM7KWYhPT0wJiYodT09PTB8fCFzfHxvLno8PXMueik/KHI9byxvPW8ubmV4dFosZi0tKToocj1zLHM9cy5uZXh0Wix1LS0pLGk/aS5uZXh0Wj1yOnQ9cixyLnByZXZaPWksaT1yO289c31pLm5leHRaPW51bGwsbio9Mn13aGlsZShlPjEpO3JldHVybiB0fWZ1bmN0aW9uIEwwKHQsZSxuLG8scil7cmV0dXJuIHQ9KHQtbikqcnwwLGU9KGUtbykqcnwwLHQ9KHR8dDw8OCkmMTY3MTE5MzUsdD0odHx0PDw0KSYyNTI2NDUxMzUsdD0odHx0PDwyKSY4NTg5OTM0NTksdD0odHx0PDwxKSYxNDMxNjU1NzY1LGU9KGV8ZTw8OCkmMTY3MTE5MzUsZT0oZXxlPDw0KSYyNTI2NDUxMzUsZT0oZXxlPDwyKSY4NTg5OTM0NTksZT0oZXxlPDwxKSYxNDMxNjU1NzY1LHR8ZTw8MX1mdW5jdGlvbiBDSSh0KXtsZXQgZT10LG49dDtkbyhlLng8bi54fHxlLng9PT1uLngmJmUueTxuLnkpJiYobj1lKSxlPWUubmV4dDt3aGlsZShlIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gQVQodCxlLG4sbyxyLGkscyxmKXtyZXR1cm4oci1zKSooZS1mKT49KHQtcykqKGktZikmJih0LXMpKihvLWYpPj0obi1zKSooZS1mKSYmKG4tcykqKGktZik+PShyLXMpKihvLWYpfWZ1bmN0aW9uIElmKHQsZSxuLG8scixpLHMsZil7cmV0dXJuISh0PT09cyYmZT09PWYpJiZBVCh0LGUsbixvLHIsaSxzLGYpfWZ1bmN0aW9uIFBJKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIU1JKHQsZSkmJihGZih0LGUpJiZGZihlLHQpJiZOSSh0LGUpJiYodm4odC5wcmV2LHQsZS5wcmV2KXx8dm4odCxlLnByZXYsZSkpfHxfYSh0LGUpJiZ2bih0LnByZXYsdCx0Lm5leHQpPjAmJnZuKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gdm4odCxlLG4pe3JldHVybihlLnktdC55KSoobi54LWUueCktKGUueC10LngpKihuLnktZS55KX1mdW5jdGlvbiBfYSh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBiVCh0LGUsbixvKXtsZXQgcj1pZCh2bih0LGUsbikpLGk9aWQodm4odCxlLG8pKSxzPWlkKHZuKG4sbyx0KSksZj1pZCh2bihuLG8sZSkpO3JldHVybiEhKHIhPT1pJiZzIT09Znx8cj09PTAmJnJkKHQsbixlKXx8aT09PTAmJnJkKHQsbyxlKXx8cz09PTAmJnJkKG4sdCxvKXx8Zj09PTAmJnJkKG4sZSxvKSl9ZnVuY3Rpb24gcmQodCxlLG4pe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxuLngpJiZlLng+PU1hdGgubWluKHQueCxuLngpJiZlLnk8PU1hdGgubWF4KHQueSxuLnkpJiZlLnk+PU1hdGgubWluKHQueSxuLnkpfWZ1bmN0aW9uIGlkKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBNSSh0LGUpe2xldCBuPXQ7ZG97aWYobi5pIT09dC5pJiZuLm5leHQuaSE9PXQuaSYmbi5pIT09ZS5pJiZuLm5leHQuaSE9PWUuaSYmYlQobixuLm5leHQsdCxlKSlyZXR1cm4hMDtuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuITF9ZnVuY3Rpb24gRmYodCxlKXtyZXR1cm4gdm4odC5wcmV2LHQsdC5uZXh0KTwwP3ZuKHQsZSx0Lm5leHQpPj0wJiZ2bih0LHQucHJldixlKT49MDp2bih0LGUsdC5wcmV2KTwwfHx2bih0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIE5JKHQsZSl7bGV0IG49dCxvPSExLHI9KHQueCtlLngpLzIsaT0odC55K2UueSkvMjtkbyBuLnk+aSE9bi5uZXh0Lnk+aSYmbi5uZXh0LnkhPT1uLnkmJnI8KG4ubmV4dC54LW4ueCkqKGktbi55KS8obi5uZXh0Lnktbi55KStuLngmJihvPSFvKSxuPW4ubmV4dDt3aGlsZShuIT09dCk7cmV0dXJuIG99ZnVuY3Rpb24gd1QodCxlKXtsZXQgbj1EMCh0LmksdC54LHQueSksbz1EMChlLmksZS54LGUueSkscj10Lm5leHQsaT1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LG4ubmV4dD1yLHIucHJldj1uLG8ubmV4dD1uLG4ucHJldj1vLGkubmV4dD1vLG8ucHJldj1pLG99ZnVuY3Rpb24geVQodCxlLG4sbyl7bGV0IHI9RDAodCxlLG4pO3JldHVybiBvPyhyLm5leHQ9by5uZXh0LHIucHJldj1vLG8ubmV4dC5wcmV2PXIsby5uZXh0PXIpOihyLnByZXY9cixyLm5leHQ9cikscn1mdW5jdGlvbiBMZih0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIEQwKHQsZSxuKXtyZXR1cm57aTp0LHg6ZSx5Om4scHJldjpudWxsLG5leHQ6bnVsbCx6OjAscHJldlo6bnVsbCxuZXh0WjpudWxsLHN0ZWluZXI6ITF9fWZ1bmN0aW9uIElJKHQsZSxuLG8pe2xldCByPTA7Zm9yKGxldCBpPWUscz1uLW87aTxuO2krPW8pcis9KHRbc10tdFtpXSkqKHRbaSsxXSt0W3MrMV0pLHM9aTtyZXR1cm4gcn12YXIgVFQ9JCgoKT0+e30pO3ZhciBzZCxQbyxwYz0kKCgpPT57WnMoKTtzZD17Q0xPQ0tXSVNFOkZ0LkNXLENPVU5URVJfQ0xPQ0tXSVNFOkZ0LkNDV307c2QudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1zZC5DTE9DS1dJU0V8fHQ9PT1zZC5DT1VOVEVSX0NMT0NLV0lTRX07UG89T2JqZWN0LmZyZWV6ZShzZCl9KTt2YXIgdkksRkkscHMsU1QseFQsQ1QsT1QsRVQsUlQsVWksUFQsTVQsTlQseWEsTEksREksQkksVTAsUGUsS3I9JCgoKT0+e1RUKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO2Z0KCk7JHQoKTtOZigpO1llKCk7JGUoKTtLdCgpO3RuKCk7cGMoKTt2ST1uZXcgYSxGST1uZXcgYSxwcz17fTtwcy5jb21wdXRlQXJlYTJEPWZ1bmN0aW9uKHQpe3kuZGVmaW5lZCgicG9zaXRpb25zIix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicG9zaXRpb25zLmxlbmd0aCIsdC5sZW5ndGgsMyk7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz1lLTEscj0wO3I8ZTtvPXIrKyl7bGV0IGk9dFtvXSxzPXRbcl07bis9aS54KnMueS1zLngqaS55fXJldHVybiBuKi41fTtwcy5jb21wdXRlV2luZGluZ09yZGVyMkQ9ZnVuY3Rpb24odCl7cmV0dXJuIHBzLmNvbXB1dGVBcmVhMkQodCk+MD9Qby5DT1VOVEVSX0NMT0NLV0lTRTpQby5DTE9DS1dJU0V9O3BzLnRyaWFuZ3VsYXRlPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBuPUoucGFja0FycmF5KHQpO3JldHVybiBCMChuLGUsMil9O1NUPW5ldyBhLHhUPW5ldyBhLENUPW5ldyBhLE9UPW5ldyBhLEVUPW5ldyBhLFJUPW5ldyBhLFVpPW5ldyBhLFBUPW5ldyBKLE1UPW5ldyBKLE5UPW5ldyBKLHlhPW5ldyBKO3BzLmNvbXB1dGVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsbixvLHIpe3I9cj8/UC5SQURJQU5TX1BFUl9ERUdSRUU7bGV0IGk9bShvKTt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkseS5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHkuZGVmaW5lZCgiaW5kaWNlcyIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixuLmxlbmd0aCwzKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixuLmxlbmd0aCUzLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHIsMCk7bGV0IHM9bi5zbGljZSgwKSxmLHU9ZS5sZW5ndGgsYz1uZXcgQXJyYXkodSozKSxsPW5ldyBBcnJheSh1KjIpLHA9MCxkPTA7Zm9yKGY9MDtmPHU7ZisrKXtsZXQgRT1lW2ZdO2lmKGNbcCsrXT1FLngsY1twKytdPUUueSxjW3ArK109RS56LGkpe2xldCBUPW9bZl07bFtkKytdPVQueCxsW2QrK109VC55fX1sZXQgaD1bXSxfPXt9LGc9dC5tYXhpbXVtUmFkaXVzLGI9UC5jaG9yZExlbmd0aChyLGcpLHc9YipiO2Zvcig7cy5sZW5ndGg+MDspe2xldCBFPXMucG9wKCksVD1zLnBvcCgpLHg9cy5wb3AoKSxNPWEuZnJvbUFycmF5KGMseCozLFNUKSxOPWEuZnJvbUFycmF5KGMsVCozLHhUKSxGPWEuZnJvbUFycmF5KGMsRSozLENUKSxJLHYsQjtpJiYoST1KLmZyb21BcnJheShsLHgqMixQVCksdj1KLmZyb21BcnJheShsLFQqMixNVCksQj1KLmZyb21BcnJheShsLEUqMixOVCkpO2xldCBBPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShNLE9UKSxnLE9UKSxTPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShOLEVUKSxnLEVUKSxDPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShGLFJUKSxnLFJUKSxMPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEEsUyxVaSkpLHo9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QoUyxDLFVpKSksaj1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChDLEEsVWkpKSxrPU1hdGgubWF4KEwseixqKSxxLFcsUjtrPnc/TD09PWs/KHE9YCR7TWF0aC5taW4oeCxUKX0gJHtNYXRoLm1heCh4LFQpfWAsZj1fW3FdLG0oZil8fChXPWEuYWRkKE0sTixVaSksYS5tdWx0aXBseUJ5U2NhbGFyKFcsLjUsVyksYy5wdXNoKFcueCxXLnksVy56KSxmPWMubGVuZ3RoLzMtMSxfW3FdPWYsaSYmKFI9Si5hZGQoSSx2LHlhKSxKLm11bHRpcGx5QnlTY2FsYXIoUiwuNSxSKSxsLnB1c2goUi54LFIueSkpKSxzLnB1c2goeCxmLEUpLHMucHVzaChmLFQsRSkpOno9PT1rPyhxPWAke01hdGgubWluKFQsRSl9ICR7TWF0aC5tYXgoVCxFKX1gLGY9X1txXSxtKGYpfHwoVz1hLmFkZChOLEYsVWkpLGEubXVsdGlwbHlCeVNjYWxhcihXLC41LFcpLGMucHVzaChXLngsVy55LFcueiksZj1jLmxlbmd0aC8zLTEsX1txXT1mLGkmJihSPUouYWRkKHYsQix5YSksSi5tdWx0aXBseUJ5U2NhbGFyKFIsLjUsUiksbC5wdXNoKFIueCxSLnkpKSkscy5wdXNoKFQsZix4KSxzLnB1c2goZixFLHgpKTpqPT09ayYmKHE9YCR7TWF0aC5taW4oRSx4KX0gJHtNYXRoLm1heChFLHgpfWAsZj1fW3FdLG0oZil8fChXPWEuYWRkKEYsTSxVaSksYS5tdWx0aXBseUJ5U2NhbGFyKFcsLjUsVyksYy5wdXNoKFcueCxXLnksVy56KSxmPWMubGVuZ3RoLzMtMSxfW3FdPWYsaSYmKFI9Si5hZGQoQixJLHlhKSxKLm11bHRpcGx5QnlTY2FsYXIoUiwuNSxSKSxsLnB1c2goUi54LFIueSkpKSxzLnB1c2goRSxmLFQpLHMucHVzaChmLHgsVCkpOihoLnB1c2goeCksaC5wdXNoKFQpLGgucHVzaChFKSl9bGV0IE89e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Y30pfSxpbmRpY2VzOmgscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9O3JldHVybiBpJiYoTy5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsfSkpLG5ldyBVdChPKX07TEk9bmV3IGN0LERJPW5ldyBjdCxCST1uZXcgY3QsVTA9bmV3IGN0O3BzLmNvbXB1dGVSaHVtYkxpbmVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsbixvLHIpe3I9cj8/UC5SQURJQU5TX1BFUl9ERUdSRUU7bGV0IGk9bShvKTt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkseS5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHkuZGVmaW5lZCgiaW5kaWNlcyIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixuLmxlbmd0aCwzKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixuLmxlbmd0aCUzLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHIsMCk7bGV0IHM9bi5zbGljZSgwKSxmLHU9ZS5sZW5ndGgsYz1uZXcgQXJyYXkodSozKSxsPW5ldyBBcnJheSh1KjIpLHA9MCxkPTA7Zm9yKGY9MDtmPHU7ZisrKXtsZXQgeD1lW2ZdO2lmKGNbcCsrXT14LngsY1twKytdPXgueSxjW3ArK109eC56LGkpe2xldCBNPW9bZl07bFtkKytdPU0ueCxsW2QrK109TS55fX1sZXQgaD1bXSxfPXt9LGc9dC5tYXhpbXVtUmFkaXVzLGI9UC5jaG9yZExlbmd0aChyLGcpLHc9bmV3IEpvKHZvaWQgMCx2b2lkIDAsdCksTz1uZXcgSm8odm9pZCAwLHZvaWQgMCx0KSxFPW5ldyBKbyh2b2lkIDAsdm9pZCAwLHQpO2Zvcig7cy5sZW5ndGg+MDspe2xldCB4PXMucG9wKCksTT1zLnBvcCgpLE49cy5wb3AoKSxGPWEuZnJvbUFycmF5KGMsTiozLFNUKSxJPWEuZnJvbUFycmF5KGMsTSozLHhUKSx2PWEuZnJvbUFycmF5KGMseCozLENUKSxCLEEsUztpJiYoQj1KLmZyb21BcnJheShsLE4qMixQVCksQT1KLmZyb21BcnJheShsLE0qMixNVCksUz1KLmZyb21BcnJheShsLHgqMixOVCkpO2xldCBDPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoRixMSSksTD10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKEksREkpLHo9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh2LEJJKTt3LnNldEVuZFBvaW50cyhDLEwpO2xldCBqPXcuc3VyZmFjZURpc3RhbmNlO08uc2V0RW5kUG9pbnRzKEwseik7bGV0IGs9Ty5zdXJmYWNlRGlzdGFuY2U7RS5zZXRFbmRQb2ludHMoeixDKTtsZXQgcT1FLnN1cmZhY2VEaXN0YW5jZSxXPU1hdGgubWF4KGosayxxKSxSLG50LGF0LGx0LF90O1c+Yj9qPT09Vz8oUj1gJHtNYXRoLm1pbihOLE0pfSAke01hdGgubWF4KE4sTSl9YCxmPV9bUl0sbShmKXx8KG50PXcuaW50ZXJwb2xhdGVVc2luZ0ZyYWN0aW9uKC41LFUwKSxhdD0oQy5oZWlnaHQrTC5oZWlnaHQpKi41LGx0PWEuZnJvbVJhZGlhbnMobnQubG9uZ2l0dWRlLG50LmxhdGl0dWRlLGF0LHQsVWkpLGMucHVzaChsdC54LGx0LnksbHQueiksZj1jLmxlbmd0aC8zLTEsX1tSXT1mLGkmJihfdD1KLmFkZChCLEEseWEpLEoubXVsdGlwbHlCeVNjYWxhcihfdCwuNSxfdCksbC5wdXNoKF90LngsX3QueSkpKSxzLnB1c2goTixmLHgpLHMucHVzaChmLE0seCkpOms9PT1XPyhSPWAke01hdGgubWluKE0seCl9ICR7TWF0aC5tYXgoTSx4KX1gLGY9X1tSXSxtKGYpfHwobnQ9Ty5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsVTApLGF0PShMLmhlaWdodCt6LmhlaWdodCkqLjUsbHQ9YS5mcm9tUmFkaWFucyhudC5sb25naXR1ZGUsbnQubGF0aXR1ZGUsYXQsdCxVaSksYy5wdXNoKGx0LngsbHQueSxsdC56KSxmPWMubGVuZ3RoLzMtMSxfW1JdPWYsaSYmKF90PUouYWRkKEEsUyx5YSksSi5tdWx0aXBseUJ5U2NhbGFyKF90LC41LF90KSxsLnB1c2goX3QueCxfdC55KSkpLHMucHVzaChNLGYsTikscy5wdXNoKGYseCxOKSk6cT09PVcmJihSPWAke01hdGgubWluKHgsTil9ICR7TWF0aC5tYXgoeCxOKX1gLGY9X1tSXSxtKGYpfHwobnQ9RS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsVTApLGF0PSh6LmhlaWdodCtDLmhlaWdodCkqLjUsbHQ9YS5mcm9tUmFkaWFucyhudC5sb25naXR1ZGUsbnQubGF0aXR1ZGUsYXQsdCxVaSksYy5wdXNoKGx0LngsbHQueSxsdC56KSxmPWMubGVuZ3RoLzMtMSxfW1JdPWYsaSYmKF90PUouYWRkKFMsQix5YSksSi5tdWx0aXBseUJ5U2NhbGFyKF90LC41LF90KSxsLnB1c2goX3QueCxfdC55KSkpLHMucHVzaCh4LGYsTSkscy5wdXNoKGYsTixNKSk6KGgucHVzaChOKSxoLnB1c2goTSksaC5wdXNoKHgpKX1sZXQgVD17YXR0cmlidXRlczp7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpjfSl9LGluZGljZXM6aCxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU307cmV0dXJuIGkmJihULmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmx9KSksbmV3IFV0KFQpfTtwcy5zY2FsZVRvR2VvZGV0aWNIZWlnaHQ9ZnVuY3Rpb24odCxlLG4sbyl7bj1uPz9ZLmRlZmF1bHQ7bGV0IHI9dkksaT1GSTtpZihlPWU/PzAsbz1vPz8hMCxtKHQpKXtsZXQgcz10Lmxlbmd0aDtmb3IobGV0IGY9MDtmPHM7Zis9MylhLmZyb21BcnJheSh0LGYsaSksbyYmKGk9bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGksaSkpLGUhPT0wJiYocj1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChpLHIpLGEubXVsdGlwbHlCeVNjYWxhcihyLGUsciksYS5hZGQoaSxyLGkpKSx0W2ZdPWkueCx0W2YrMV09aS55LHRbZisyXT1pLnp9cmV0dXJuIHR9O1BlPXBzfSk7ZnVuY3Rpb24gZHMoKXt0aGlzLl9hcnJheT1bXSx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9sZW5ndGg9MH12YXIgazAsSVQ9JCgoKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRzLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVuZ3RofX19KTtkcy5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbih0KXt0aGlzLl9hcnJheS5wdXNoKHQpLHRoaXMuX2xlbmd0aCsrfTtkcy5wcm90b3R5cGUuZGVxdWV1ZT1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aD09PTApcmV0dXJuO2xldCB0PXRoaXMuX2FycmF5LGU9dGhpcy5fb2Zmc2V0LG49dFtlXTtyZXR1cm4gdFtlXT12b2lkIDAsZSsrLGU+MTAmJmUqMj50Lmxlbmd0aCYmKHRoaXMuX2FycmF5PXQuc2xpY2UoZSksZT0wKSx0aGlzLl9vZmZzZXQ9ZSx0aGlzLl9sZW5ndGgtLSxufTtkcy5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aCE9PTApcmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX29mZnNldF19O2RzLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXJyYXkuaW5kZXhPZih0KSE9PS0xfTtkcy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9hcnJheS5sZW5ndGg9dGhpcy5fb2Zmc2V0PXRoaXMuX2xlbmd0aD0wfTtkcy5wcm90b3R5cGUuc29ydD1mdW5jdGlvbih0KXt0aGlzLl9vZmZzZXQ+MCYmKHRoaXMuX2FycmF5PXRoaXMuX2FycmF5LnNsaWNlKHRoaXMuX29mZnNldCksdGhpcy5fb2Zmc2V0PTApLHRoaXMuX2FycmF5LnNvcnQodCl9O2swPWRzfSk7ZnVuY3Rpb24gTFQodCxlLG4sbyl7cmV0dXJuIEouc3VidHJhY3QoZSx0LGRjKSxKLm11bHRpcGx5QnlTY2FsYXIoZGMsbi9vLGRjKSxKLmFkZCh0LGRjLGRjKSxbZGMueCxkYy55XX1mdW5jdGlvbiBVSSh0LGUsbixvKXtyZXR1cm4gYS5zdWJ0cmFjdChlLHQsbXMpLGEubXVsdGlwbHlCeVNjYWxhcihtcyxuL28sbXMpLGEuYWRkKHQsbXMsbXMpLFttcy54LG1zLnksbXMuel19ZnVuY3Rpb24gS0kodCxlLG4pe2xldCBvPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModCxhZCkscj1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsZmQpO2lmKE1hdGguc2lnbihvLmxhdGl0dWRlKT09PU1hdGguc2lnbihyLmxhdGl0dWRlKSlyZXR1cm47Y2Quc2V0RW5kUG9pbnRzKG8scik7bGV0IGk9Y2QuZmluZEludGVyc2VjdGlvbldpdGhMYXRpdHVkZSgwLHFJKTtpZighbShpKSlyZXR1cm47bGV0IHM9TWF0aC5taW4oby5sb25naXR1ZGUsci5sb25naXR1ZGUpLGY9TWF0aC5tYXgoby5sb25naXR1ZGUsci5sb25naXR1ZGUpO2lmKE1hdGguYWJzKGYtcyk+UC5QSSl7bGV0IHU9cztzPWYsZj11fWlmKCEoaS5sb25naXR1ZGU8c3x8aS5sb25naXR1ZGU+ZikpcmV0dXJuIG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaSl9ZnVuY3Rpb24gV0kodCxlLG4sbyl7aWYobz09PWhlLlJIVU1CKXJldHVybiBLSSh0LGUsbik7bGV0IHI9eW8ubGluZVNlZ21lbnRQbGFuZSh0LGUsb24uT1JJR0lOX1hZX1BMQU5FKTtpZihtKHIpKXJldHVybiBuLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocixyKX1mdW5jdGlvbiBZSSh0LGUsbil7bGV0IG89W10scixpLHMsZix1LGM9MDtmb3IoO2M8dC5sZW5ndGg7KXtyPXRbY10saT10WyhjKzEpJXQubGVuZ3RoXSxzPVAuc2lnbihyLnopLGY9UC5zaWduKGkueik7bGV0IGw9cD0+ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhwLFhJKS5sb25naXR1ZGU7aWYocz09PTApby5wdXNoKHtwb3NpdGlvbjpjLHR5cGU6cyx2aXNpdGVkOiExLG5leHQ6Zix0aGV0YTpsKHIpfSk7ZWxzZSBpZihmIT09MCl7aWYodT1XSShyLGksZSxuKSwrK2MsIW0odSkpY29udGludWU7dC5zcGxpY2UoYywwLHUpLG8ucHVzaCh7cG9zaXRpb246Yyx0eXBlOnMsdmlzaXRlZDohMSxuZXh0OmYsdGhldGE6bCh1KX0pfSsrY31yZXR1cm4gb31mdW5jdGlvbiBEVCh0LGUsbixvLHIsaSxzKXtsZXQgZj1bXSx1PWksYz1wPT5kPT5kLnBvc2l0aW9uPT09cCxsPVtdO2Rve2xldCBwPW5bdV07Zi5wdXNoKHApO2xldCBkPW8uZmluZEluZGV4KGModSkpLGg9b1tkXTtpZighbShoKSl7Kyt1O2NvbnRpbnVlfWxldHt2aXNpdGVkOl8sdHlwZTpnLG5leHQ6Yn09aDtpZihoLnZpc2l0ZWQ9ITAsZz09PTApe2lmKGI9PT0wKXtsZXQgVD1vW2QtKHM/MTotMSldO2lmKFQ/LnBvc2l0aW9uPT09dSsxKVQudmlzaXRlZD0hMDtlbHNleysrdTtjb250aW51ZX19aWYoIV8mJnMmJmI+MHx8aT09PXUmJiFzJiZiPDApeysrdTtjb250aW51ZX19aWYoIShzP2c+PTA6Zzw9MCkpeysrdTtjb250aW51ZX1ffHxsLnB1c2godSk7bGV0IE89ZCsocz8xOi0xKSxFPW9bT107aWYoIW0oRSkpeysrdTtjb250aW51ZX11PUUucG9zaXRpb259d2hpbGUodTxuLmxlbmd0aCYmdT49MCYmdSE9PWkmJmYubGVuZ3RoPG4ubGVuZ3RoKTt0LnNwbGljZShlLHIsZik7Zm9yKGxldCBwIG9mIGwpZT1EVCh0LCsrZSxuLG8sMCxwLCFzKTtyZXR1cm4gZX12YXIgT24sZGMsbXMsYWQsZmQsa0ksR0ksY2QsVkksekksakksSEkscUksWEksJEksWkksUUksSkksdlQsRlQsdHYsZXYsX2UsRGY9JCgoKT0+e3VjKCk7SHIoKTtrZSgpO0R0KCk7SWUoKTtEZSgpO2Z0KCk7JHQoKTtOZigpO1llKCk7JGUoKTthbigpO2NpKCk7WmUoKTtlYygpO0t0KCk7VW4oKTt1cygpO19UKCk7S3IoKTt0bigpO1hvKCk7SVQoKTtwYygpO09uPXt9O09uLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGg9ZnVuY3Rpb24odCxlKXtsZXQgbj0wLG89W3RdO2Zvcig7by5sZW5ndGg+MDspe2xldCByPW8ucG9wKCk7aWYoIW0ocikpY29udGludWU7bis9MjtsZXQgaT1yLnBvc2l0aW9ucyxzPXIuaG9sZXM7aWYobShpKSYmaS5sZW5ndGg+MCYmKG4rPWkubGVuZ3RoKmUucGFja2VkTGVuZ3RoKSxtKHMpKXtsZXQgZj1zLmxlbmd0aDtmb3IobGV0IHU9MDt1PGY7Kyt1KW8ucHVzaChzW3VdKX19cmV0dXJuIG59O09uLnBhY2tQb2x5Z29uSGllcmFyY2h5PWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPVt0XTtmb3IoO3IubGVuZ3RoPjA7KXtsZXQgaT1yLnBvcCgpO2lmKCFtKGkpKWNvbnRpbnVlO2xldCBzPWkucG9zaXRpb25zLGY9aS5ob2xlcztpZihlW24rK109bShzKT9zLmxlbmd0aDowLGVbbisrXT1tKGYpP2YubGVuZ3RoOjAsbShzKSl7bGV0IHU9cy5sZW5ndGg7Zm9yKGxldCBjPTA7Yzx1OysrYyxuKz1vLnBhY2tlZExlbmd0aClvLnBhY2soc1tjXSxlLG4pfWlmKG0oZikpe2xldCB1PWYubGVuZ3RoO2ZvcihsZXQgYz0wO2M8dTsrK2Mpci5wdXNoKGZbY10pfX1yZXR1cm4gbn07T24udW5wYWNrUG9seWdvbkhpZXJhcmNoeT1mdW5jdGlvbih0LGUsbil7bGV0IG89dFtlKytdLHI9dFtlKytdLGk9bmV3IEFycmF5KG8pLHM9cj4wP25ldyBBcnJheShyKTp2b2lkIDA7Zm9yKGxldCBmPTA7ZjxvOysrZixlKz1uLnBhY2tlZExlbmd0aClpW2ZdPW4udW5wYWNrKHQsZSk7Zm9yKGxldCBmPTA7ZjxyOysrZilzW2ZdPU9uLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLG4pLGU9c1tmXS5zdGFydGluZ0luZGV4LGRlbGV0ZSBzW2ZdLnN0YXJ0aW5nSW5kZXg7cmV0dXJue3Bvc2l0aW9uczppLGhvbGVzOnMsc3RhcnRpbmdJbmRleDplfX07ZGM9bmV3IEo7bXM9bmV3IGE7T24uc3ViZGl2aWRlTGluZUNvdW50PWZ1bmN0aW9uKHQsZSxuKXtsZXQgcj1hLmRpc3RhbmNlKHQsZSkvbixpPU1hdGgubWF4KDAsTWF0aC5jZWlsKFAubG9nMihyKSkpO3JldHVybiBNYXRoLnBvdygyLGkpfTthZD1uZXcgY3QsZmQ9bmV3IGN0LGtJPW5ldyBjdCxHST1uZXcgYSxjZD1uZXcgSm87T24uc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQ9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLGFkKSxpPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobixmZCksZj1uZXcgSm8ocixpLHQpLnN1cmZhY2VEaXN0YW5jZS9vLHU9TWF0aC5tYXgoMCxNYXRoLmNlaWwoUC5sb2cyKGYpKSk7cmV0dXJuIE1hdGgucG93KDIsdSl9O09uLnN1YmRpdmlkZVRleGNvb3JkTGluZT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHM9T24uc3ViZGl2aWRlTGluZUNvdW50KG4sbyxyKSxmPUouZGlzdGFuY2UodCxlKSx1PWYvcyxjPWk7Yy5sZW5ndGg9cyoyO2xldCBsPTA7Zm9yKGxldCBwPTA7cDxzO3ArKyl7bGV0IGQ9TFQodCxlLHAqdSxmKTtjW2wrK109ZFswXSxjW2wrK109ZFsxXX1yZXR1cm4gY307T24uc3ViZGl2aWRlTGluZT1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1Pbi5zdWJkaXZpZGVMaW5lQ291bnQodCxlLG4pLGk9YS5kaXN0YW5jZSh0LGUpLHM9aS9yO20obyl8fChvPVtdKTtsZXQgZj1vO2YubGVuZ3RoPXIqMztsZXQgdT0wO2ZvcihsZXQgYz0wO2M8cjtjKyspe2xldCBsPVVJKHQsZSxjKnMsaSk7Zlt1KytdPWxbMF0sZlt1KytdPWxbMV0sZlt1KytdPWxbMl19cmV0dXJuIGZ9O09uLnN1YmRpdmlkZVRleGNvb3JkUmh1bWJMaW5lPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobyxhZCksdT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsZmQpO2NkLnNldEVuZFBvaW50cyhmLHUpO2xldCBjPWNkLnN1cmZhY2VEaXN0YW5jZS9pLGw9TWF0aC5tYXgoMCxNYXRoLmNlaWwoUC5sb2cyKGMpKSkscD1NYXRoLnBvdygyLGwpLGQ9Si5kaXN0YW5jZSh0LGUpLGg9ZC9wLF89cztfLmxlbmd0aD1wKjI7bGV0IGc9MDtmb3IobGV0IGI9MDtiPHA7YisrKXtsZXQgdz1MVCh0LGUsYipoLGQpO19bZysrXT13WzBdLF9bZysrXT13WzFdfXJldHVybiBffTtPbi5zdWJkaXZpZGVSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsYWQpLHM9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhuLGZkKSxmPW5ldyBKbyhpLHMsdCk7aWYobShyKXx8KHI9W10pLGYuc3VyZmFjZURpc3RhbmNlPD1vKXJldHVybiByLmxlbmd0aD0zLHJbMF09ZS54LHJbMV09ZS55LHJbMl09ZS56LHI7bGV0IHU9Zi5zdXJmYWNlRGlzdGFuY2UvbyxjPU1hdGgubWF4KDAsTWF0aC5jZWlsKFAubG9nMih1KSkpLGw9TWF0aC5wb3coMixjKSxwPWYuc3VyZmFjZURpc3RhbmNlL2wsZD1yO2QubGVuZ3RoPWwqMztsZXQgaD0wO2ZvcihsZXQgXz0wO188bDtfKyspe2xldCBnPWYuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShfKnAsa0kpLGI9dC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihnLEdJKTtkW2grK109Yi54LGRbaCsrXT1iLnksZFtoKytdPWIuen1yZXR1cm4gZH07Vkk9bmV3IGEsekk9bmV3IGEsakk9bmV3IGEsSEk9bmV3IGE7T24uc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQ9ZnVuY3Rpb24odCxlLG4sbyxyKXtvPW8/P1kuZGVmYXVsdDtsZXQgaT1WSSxzPXpJLGY9akksdT1ISTtpZihtKHQpJiZtKHQuYXR0cmlidXRlcykmJm0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKSl7bGV0IGM9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxsPWMubGVuZ3RoLzI7Zm9yKGxldCBwPTA7cDxsO3ArPTMpYS5mcm9tQXJyYXkoYyxwLGYpLG8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGYsaSksdT1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZix1KSxzPWEubXVsdGlwbHlCeVNjYWxhcihpLG4scykscz1hLmFkZCh1LHMscyksY1twK2xdPXMueCxjW3ArMStsXT1zLnksY1twKzIrbF09cy56LHImJih1PWEuY2xvbmUoZix1KSkscz1hLm11bHRpcGx5QnlTY2FsYXIoaSxlLHMpLHM9YS5hZGQodSxzLHMpLGNbcF09cy54LGNbcCsxXT1zLnksY1twKzJdPXMuen1yZXR1cm4gdH07T24ucG9seWdvbk91dGxpbmVzRnJvbUhpZXJhcmNoeT1mdW5jdGlvbih0LGUsbil7bGV0IG89W10scj1uZXcgazA7ci5lbnF1ZXVlKHQpO2xldCBpLHMsZjtmb3IoO3IubGVuZ3RoIT09MDspe2xldCB1PXIuZGVxdWV1ZSgpLGM9dS5wb3NpdGlvbnM7aWYoZSlmb3IoZj1jLmxlbmd0aCxpPTA7aTxmO2krKyluLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoY1tpXSxjW2ldKTtpZihjPUNuKGMsYS5lcXVhbHNFcHNpbG9uLCEwKSxjLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBsPXUuaG9sZXM/dS5ob2xlcy5sZW5ndGg6MDtmb3IoaT0wO2k8bDtpKyspe2xldCBwPXUuaG9sZXNbaV0sZD1wLnBvc2l0aW9ucztpZihlKWZvcihmPWQubGVuZ3RoLHM9MDtzPGY7KytzKW4uc2NhbGVUb0dlb2RldGljU3VyZmFjZShkW3NdLGRbc10pO2lmKGQ9Q24oZCxhLmVxdWFsc0Vwc2lsb24sITApLGQubGVuZ3RoPDMpY29udGludWU7by5wdXNoKGQpO2xldCBoPTA7Zm9yKG0ocC5ob2xlcykmJihoPXAuaG9sZXMubGVuZ3RoKSxzPTA7czxoO3MrKylyLmVucXVldWUocC5ob2xlc1tzXSl9by5wdXNoKGMpfXJldHVybiBvfTtxST1uZXcgY3Q7WEk9bmV3IGN0O09uLnNwbGl0UG9seWdvbnNPbkVxdWF0b3I9ZnVuY3Rpb24odCxlLG4sbyl7bShvKXx8KG89W10pLG8uc3BsaWNlKDAsMCwuLi50KSxvLmxlbmd0aD10Lmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxvLmxlbmd0aDspe2xldCBpPW9bcl0scz1pLnNsaWNlKCk7aWYoaS5sZW5ndGg8Myl7b1tyXT1zLCsrcjtjb250aW51ZX1sZXQgZj1ZSShzLGUsbik7aWYocy5sZW5ndGg9PT1pLmxlbmd0aHx8Zi5sZW5ndGg8PTEpe29bcl09cywrK3I7Y29udGludWV9Zi5zb3J0KChjLGwpPT5jLnRoZXRhLWwudGhldGEpO2xldCB1PXNbMF0uej49MDtyPURUKG8scixzLGYsMSwwLHUpfXJldHVybiBvfTtPbi5wb2x5Z29uc0Zyb21IaWVyYXJjaHk9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPVtdLGY9W10sdT1uZXcgazA7dS5lbnF1ZXVlKHQpO2xldCBjPW0oaSk7Zm9yKDt1Lmxlbmd0aCE9PTA7KXtsZXQgbD11LmRlcXVldWUoKSxwPWwucG9zaXRpb25zLGQ9bC5ob2xlcyxoLF87aWYobylmb3IoXz1wLmxlbmd0aCxoPTA7aDxfO2grKylyLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocFtoXSxwW2hdKTtpZihlfHwocD1DbihwLGEuZXF1YWxzRXBzaWxvbiwhMCkpLHAubGVuZ3RoPDMpY29udGludWU7bGV0IGc9bihwKTtpZighbShnKSljb250aW51ZTtsZXQgYj1bXSx3PVBlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChnKTtpZih3PT09UG8uQ0xPQ0tXSVNFJiYoZy5yZXZlcnNlKCkscD1wLnNsaWNlKCkucmV2ZXJzZSgpKSxjKXtjPSExO2xldCBNPVtwXTtpZihNPWkoTSxNKSxNLmxlbmd0aD4xKXtmb3IobGV0IE4gb2YgTSl1LmVucXVldWUobmV3IGhUKE4sZCkpO2NvbnRpbnVlfX1sZXQgTz1wLnNsaWNlKCksRT1tKGQpP2QubGVuZ3RoOjAsVD1bXSx4O2ZvcihoPTA7aDxFO2grKyl7bGV0IE09ZFtoXSxOPU0ucG9zaXRpb25zO2lmKG8pZm9yKF89Ti5sZW5ndGgseD0wO3g8XzsrK3gpci5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKE5beF0sTlt4XSk7aWYoZXx8KE49Q24oTixhLmVxdWFsc0Vwc2lsb24sITApKSxOLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBGPW4oTik7aWYoIW0oRikpY29udGludWU7dz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoRiksdz09PVBvLkNMT0NLV0lTRSYmKEYucmV2ZXJzZSgpLE49Ti5zbGljZSgpLnJldmVyc2UoKSksVC5wdXNoKE4pLGIucHVzaChPLmxlbmd0aCksTz1PLmNvbmNhdChOKSxnPWcuY29uY2F0KEYpO2xldCBJPTA7Zm9yKG0oTS5ob2xlcykmJihJPU0uaG9sZXMubGVuZ3RoKSx4PTA7eDxJO3grKyl1LmVucXVldWUoTS5ob2xlc1t4XSl9cy5wdXNoKHtvdXRlclJpbmc6cCxob2xlczpUfSksZi5wdXNoKHtwb3NpdGlvbnM6Tyxwb3NpdGlvbnMyRDpnLGhvbGVzOmJ9KX1yZXR1cm57aGllcmFyY2h5OnMscG9seWdvbnM6Zn19OyRJPW5ldyBKLFpJPW5ldyBhLFFJPW5ldyB0ZSxKST1uZXcgWjtPbi5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGU9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10ZS5mcm9tQXhpc0FuZ2xlKHQsbyxRSSkscz1aLmZyb21RdWF0ZXJuaW9uKGksSkkpLGY9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGw9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHA9bi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxwOysrZCl7bGV0IGg9YS5jbG9uZShuW2RdLFpJKTtaLm11bHRpcGx5QnlWZWN0b3IocyxoLGgpO2xldCBfPWUoaCwkSSk7bShfKSYmKGY9TWF0aC5taW4oZixfLngpLHU9TWF0aC5tYXgodSxfLngpLGM9TWF0aC5taW4oYyxfLnkpLGw9TWF0aC5tYXgobCxfLnkpKX1yZXR1cm4gci54PWYsci55PWMsci53aWR0aD11LWYsci5oZWlnaHQ9bC1jLHJ9O09uLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbixvLHIsaSxzKXtsZXQgZj1QZS50cmlhbmd1bGF0ZShlLnBvc2l0aW9uczJELGUuaG9sZXMpO2YubGVuZ3RoPDMmJihmPVswLDEsMl0pO2xldCB1PWUucG9zaXRpb25zLGM9bShuKSxsPWM/bi5wb3NpdGlvbnM6dm9pZCAwO2lmKHIpe2xldCBwPXUubGVuZ3RoLGQ9bmV3IEFycmF5KHAqMyksaD0wO2ZvcihsZXQgYj0wO2I8cDtiKyspe2xldCB3PXVbYl07ZFtoKytdPXcueCxkW2grK109dy55LGRbaCsrXT13Lnp9bGV0IF89e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZH0pfSxpbmRpY2VzOmYscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9O2MmJihfLmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkoucGFja0FycmF5KGwpfSkpO2xldCBnPW5ldyBVdChfKTtyZXR1cm4gaS5ub3JtYWw/R2UuY29tcHV0ZU5vcm1hbChnKTpnfWlmKHM9PT1oZS5HRU9ERVNJQylyZXR1cm4gUGUuY29tcHV0ZVN1YmRpdmlzaW9uKHQsdSxmLGwsbyk7aWYocz09PWhlLlJIVU1CKXJldHVybiBQZS5jb21wdXRlUmh1bWJMaW5lU3ViZGl2aXNpb24odCx1LGYsbCxvKX07dlQ9W10sRlQ9W10sdHY9bmV3IGEsZXY9bmV3IGE7T24uY29tcHV0ZVdhbGxHZW9tZXRyeT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHMsZix1LGMsbCxwLGQsaCxfLGc9dC5sZW5ndGgsYj0wLHc9MCxPPW0oZSksRT1PP2UucG9zaXRpb25zOnZvaWQgMDtpZihyKWZvcihmPWcqMyoyLHM9bmV3IEFycmF5KGYqMiksTyYmKF89ZyoyKjIsaD1uZXcgQXJyYXkoXyoyKSksdT0wO3U8Zzt1KyspYz10W3VdLGw9dFsodSsxKSVnXSxzW2JdPXNbYitmXT1jLngsKytiLHNbYl09c1tiK2ZdPWMueSwrK2Isc1tiXT1zW2IrZl09Yy56LCsrYixzW2JdPXNbYitmXT1sLngsKytiLHNbYl09c1tiK2ZdPWwueSwrK2Isc1tiXT1zW2IrZl09bC56LCsrYixPJiYocD1FW3VdLGQ9RVsodSsxKSVnXSxoW3ddPWhbdytfXT1wLngsKyt3LGhbd109aFt3K19dPXAueSwrK3csaFt3XT1oW3crX109ZC54LCsrdyxoW3ddPWhbdytfXT1kLnksKyt3KTtlbHNle2xldCBGPVAuY2hvcmRMZW5ndGgobyxuLm1heGltdW1SYWRpdXMpLEk9MDtpZihpPT09aGUuR0VPREVTSUMpZm9yKHU9MDt1PGc7dSsrKUkrPU9uLnN1YmRpdmlkZUxpbmVDb3VudCh0W3VdLHRbKHUrMSklZ10sRik7ZWxzZSBpZihpPT09aGUuUkhVTUIpZm9yKHU9MDt1PGc7dSsrKUkrPU9uLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KG4sdFt1XSx0Wyh1KzEpJWddLEYpO2ZvcihmPShJK2cpKjMscz1uZXcgQXJyYXkoZioyKSxPJiYoXz0oSStnKSoyLGg9bmV3IEFycmF5KF8qMikpLHU9MDt1PGc7dSsrKXtjPXRbdV0sbD10Wyh1KzEpJWddO2xldCB2LEI7TyYmKHA9RVt1XSxkPUVbKHUrMSklZ10pLGk9PT1oZS5HRU9ERVNJQz8odj1Pbi5zdWJkaXZpZGVMaW5lKGMsbCxGLEZUKSxPJiYoQj1Pbi5zdWJkaXZpZGVUZXhjb29yZExpbmUocCxkLGMsbCxGLHZUKSkpOmk9PT1oZS5SSFVNQiYmKHY9T24uc3ViZGl2aWRlUmh1bWJMaW5lKG4sYyxsLEYsRlQpLE8mJihCPU9uLnN1YmRpdmlkZVRleGNvb3JkUmh1bWJMaW5lKHAsZCxuLGMsbCxGLHZUKSkpO2xldCBBPXYubGVuZ3RoO2ZvcihsZXQgUz0wO1M8QTsrK1MsKytiKXNbYl09dltTXSxzW2IrZl09dltTXTtpZihzW2JdPWwueCxzW2IrZl09bC54LCsrYixzW2JdPWwueSxzW2IrZl09bC55LCsrYixzW2JdPWwueixzW2IrZl09bC56LCsrYixPKXtsZXQgUz1CLmxlbmd0aDtmb3IobGV0IEM9MDtDPFM7KytDLCsrdyloW3ddPUJbQ10saFt3K19dPUJbQ107aFt3XT1kLngsaFt3K19dPWQueCwrK3csaFt3XT1kLnksaFt3K19dPWQueSwrK3d9fX1nPXMubGVuZ3RoO2xldCBUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZy8zLGctdC5sZW5ndGgqNikseD0wO2ZvcihnLz02LHU9MDt1PGc7dSsrKXtsZXQgRj11LEk9RisxLHY9RitnLEI9disxO2M9YS5mcm9tQXJyYXkocyxGKjMsdHYpLGw9YS5mcm9tQXJyYXkocyxJKjMsZXYpLCFhLmVxdWFsc0Vwc2lsb24oYyxsLFAuRVBTSUxPTjEwLFAuRVBTSUxPTjEwKSYmKFRbeCsrXT1GLFRbeCsrXT12LFRbeCsrXT1JLFRbeCsrXT1JLFRbeCsrXT12LFRbeCsrXT1CKX1sZXQgTT17YXR0cmlidXRlczpuZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pfSksaW5kaWNlczpULHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTfTtyZXR1cm4gTyYmKE0uYXR0cmlidXRlcy5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6aH0pKSxuZXcgVXQoTSl9O19lPU9ufSk7ZnVuY3Rpb24gbXYodCxlLG4sbyxyLGkscyxmLHUpe2xldCBjPXQucG9zaXRpb25zLGw9UGUudHJpYW5ndWxhdGUodC5wb3NpdGlvbnMyRCx0LmhvbGVzKTtsLmxlbmd0aDwzJiYobD1bMCwxLDJdKTtsZXQgcD1MdC5jcmVhdGVUeXBlZEFycmF5KGMubGVuZ3RoLGwubGVuZ3RoKTtwLnNldChsKTtsZXQgZD1sdjtpZihvIT09MCl7bGV0IEI9dGUuZnJvbUF4aXNBbmdsZShzLG8sQlQpO2lmKGQ9Wi5mcm9tUXVhdGVybmlvbihCLGQpLGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpe0I9dGUuZnJvbUF4aXNBbmdsZShzLC1vLEJUKTtsZXQgQT1aLmZyb21RdWF0ZXJuaW9uKEIscHYpO2Y9YS5ub3JtYWxpemUoWi5tdWx0aXBseUJ5VmVjdG9yKEEsZixmKSxmKSxlLmJpdGFuZ2VudCYmKHU9YS5ub3JtYWxpemUoYS5jcm9zcyhzLGYsdSksdSkpfX1lbHNlIGQ9Wi5jbG9uZShaLklERU5USVRZLGQpO2xldCBoPWl2O2Uuc3QmJihoLng9bi54LGgueT1uLnkpO2xldCBfPWMubGVuZ3RoLGc9XyozLGI9bmV3IEZsb2F0NjRBcnJheShnKSx3PWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoZyk6dm9pZCAwLE89ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZyk6dm9pZCAwLEU9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShnKTp2b2lkIDAsVD1lLnN0P25ldyBGbG9hdDMyQXJyYXkoXyoyKTp2b2lkIDAseD0wLE09MCxOPTAsRj0wLEk9MDtmb3IobGV0IEI9MDtCPF87QisrKXtsZXQgQT1jW0JdO2lmKGJbeCsrXT1BLngsYlt4KytdPUEueSxiW3grK109QS56LGUuc3QpaWYobShyKSYmci5wb3NpdGlvbnMubGVuZ3RoPT09XylUW0krK109ci5wb3NpdGlvbnNbQl0ueCxUW0krK109ci5wb3NpdGlvbnNbQl0ueTtlbHNle2xldCBTPVoubXVsdGlwbHlCeVZlY3RvcihkLEEsbnYpLEM9aShTLHJ2KTtKLnN1YnRyYWN0KEMsaCxDKTtsZXQgTD1QLmNsYW1wKEMueC9uLndpZHRoLDAsMSksej1QLmNsYW1wKEMueS9uLmhlaWdodCwwLDEpO1RbSSsrXT1MLFRbSSsrXT16fWUubm9ybWFsJiYod1tNKytdPXMueCx3W00rK109cy55LHdbTSsrXT1zLnopLGUudGFuZ2VudCYmKE9bRisrXT1mLngsT1tGKytdPWYueSxPW0YrK109Zi56KSxlLmJpdGFuZ2VudCYmKEVbTisrXT11LngsRVtOKytdPXUueSxFW04rK109dS56KX1sZXQgdj1uZXcgaWU7cmV0dXJuIGUucG9zaXRpb24mJih2LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Yn0pKSxlLm5vcm1hbCYmKHYubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp3fSkpLGUudGFuZ2VudCYmKHYudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pKSxlLmJpdGFuZ2VudCYmKHYuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpFfSkpLGUuc3QmJih2LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpUfSkpLG5ldyBVdCh7YXR0cmlidXRlczp2LGluZGljZXM6cCxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU30pfWZ1bmN0aW9uIG1jKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9seWdvbkhpZXJhcmNoeSxuPXQudGV4dHVyZUNvb3JkaW5hdGVzO3kuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKTtsZXQgbz10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDt0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUobyksdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3N0Um90YXRpb249dC5zdFJvdGF0aW9uPz8wLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5Iix0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9bix0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrcHQucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoKyhtKG4pP19lLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgobixKKToxKSsyfXZhciBudixvdixydixpdixzdixjdixhdixCZixmdix1dixCVCxsdixwdixkdixodixfdix5dixHMCxVVD0kKCgpPT57SHIoKTtDZigpO3ZlKCk7a2UoKTtEdCgpO1d0KCk7RGUoKTtJMCgpO3llKCk7ZnQoKTskdCgpO1llKCk7JGUoKTthbigpO2NjKCk7Y2koKTtaZSgpO0t0KCk7VW4oKTtEZigpO0tyKCk7dG4oKTtYbygpO3hvKCk7bnY9bmV3IGEsb3Y9bmV3IHFyLHJ2PW5ldyBKLGl2PW5ldyBKLHN2PW5ldyBhLGN2PW5ldyBhLGF2PW5ldyBhLEJmPW5ldyBhLGZ2PW5ldyBhLHV2PW5ldyBhLEJUPW5ldyB0ZSxsdj1uZXcgWixwdj1uZXcgWixkdj1uZXcgYTttYy5mcm9tUG9zaXRpb25zPWZ1bmN0aW9uKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHkuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLHQucG9zaXRpb25zKTtsZXQgZT17cG9seWdvbkhpZXJhcmNoeTp7cG9zaXRpb25zOnQucG9zaXRpb25zfSx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0LnN0Um90YXRpb24sZWxsaXBzb2lkOnQuZWxsaXBzb2lkLHRleHR1cmVDb29yZGluYXRlczp0LnRleHR1cmVDb29yZGluYXRlc307cmV0dXJuIG5ldyBtYyhlKX07bWMucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxuPV9lLnBhY2tQb2x5Z29uSGllcmFyY2h5KHQuX3BvbHlnb25IaWVyYXJjaHksZSxuLGEpLFkucGFjayh0Ll9lbGxpcHNvaWQsZSxuKSxuKz1ZLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fc3RSb3RhdGlvbixtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/bj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxuLEopOmVbbisrXT0tMSxlW24rK109dC5wYWNrZWRMZW5ndGgsZX07aHY9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxfdj1uZXcgcHQseXY9e3BvbHlnb25IaWVyYXJjaHk6e319O21jLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPV9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGEpO2U9by5zdGFydGluZ0luZGV4LGRlbGV0ZSBvLnN0YXJ0aW5nSW5kZXg7bGV0IHI9WS51bnBhY2sodCxlLGh2KTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLF92KTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlXT09PS0xP3ZvaWQgMDpfZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxKKTttKGYpPyhlPWYuc3RhcnRpbmdJbmRleCxkZWxldGUgZi5zdGFydGluZ0luZGV4KTplKys7bGV0IHU9dFtlKytdO3JldHVybiBtKG4pfHwobj1uZXcgbWMoeXYpKSxuLl9wb2x5Z29uSGllcmFyY2h5PW8sbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShpLG4uX3ZlcnRleEZvcm1hdCksbi5fc3RSb3RhdGlvbj1zLG4uX3RleHR1cmVDb29yZGluYXRlcz1mLG4ucGFja2VkTGVuZ3RoPXUsbn07bWMuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fdmVydGV4Rm9ybWF0LG49dC5fcG9seWdvbkhpZXJhcmNoeSxvPXQuX3N0Um90YXRpb24scj10Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsaT1tKHIpLHM9bi5wb3NpdGlvbnM7aWYocz1DbihzLGEuZXF1YWxzRXBzaWxvbiwhMCkscy5sZW5ndGg8MylyZXR1cm47bGV0IGY9c3YsdT1jdixjPWF2LGw9ZnYscD11djtpZighbWEuY29tcHV0ZVByb2plY3RUbzJEQXJndW1lbnRzKHMsQmYsbCxwKSlyZXR1cm47aWYoZj1hLmNyb3NzKGwscCxmKSxmPWEubm9ybWFsaXplKGYsZiksIWEuZXF1YWxzRXBzaWxvbihCZixhLlpFUk8sUC5FUFNJTE9ONikpe2xldCBJPXQuX2VsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoQmYsZHYpO2EuZG90KGYsSSk8MCYmKGY9YS5uZWdhdGUoZixmKSxsPWEubmVnYXRlKGwsbCkpfWxldCBoPW1hLmNyZWF0ZVByb2plY3RQb2ludHNUbzJERnVuY3Rpb24oQmYsbCxwKSxfPW1hLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbihCZixsLHApO2UudGFuZ2VudCYmKHU9YS5jbG9uZShsLHUpKSxlLmJpdGFuZ2VudCYmKGM9YS5jbG9uZShwLGMpKTtsZXQgZz1fZS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkobixpLGgsITEpLGI9Zy5oaWVyYXJjaHksdz1nLnBvbHlnb25zLE89ZnVuY3Rpb24oSSl7cmV0dXJuIEl9LEU9aT9fZS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkociwhMCxPLCExKS5wb2x5Z29uczp2b2lkIDA7aWYoYi5sZW5ndGg9PT0wKXJldHVybjtzPWJbMF0ub3V0ZXJSaW5nO2xldCBUPUF0LmZyb21Qb2ludHMocykseD1fZS5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGUoZixfLHMsbyxvdiksTT1bXTtmb3IobGV0IEk9MDtJPHcubGVuZ3RoO0krKyl7bGV0IHY9bmV3IGZvKHtnZW9tZXRyeTptdih3W0ldLGUseCxvLGk/RVtJXTp2b2lkIDAsXyxmLHUsYyl9KTtNLnB1c2godil9bGV0IE49R2UuY29tYmluZUluc3RhbmNlcyhNKVswXTtOLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPW5ldyBGbG9hdDY0QXJyYXkoTi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyksTi5pbmRpY2VzPUx0LmNyZWF0ZVR5cGVkQXJyYXkoTi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxOLmluZGljZXMpO2xldCBGPU4uYXR0cmlidXRlcztyZXR1cm4gZS5wb3NpdGlvbnx8ZGVsZXRlIEYucG9zaXRpb24sbmV3IFV0KHthdHRyaWJ1dGVzOkYsaW5kaWNlczpOLmluZGljZXMscHJpbWl0aXZlVHlwZTpOLnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6VH0pfTtHMD1tY30pO3ZhciBWMD17fTtsZShWMCx7ZGVmYXVsdDooKT0+QXZ9KTtmdW5jdGlvbiBndih0LGUpe3JldHVybiBtKGUpJiYodD1HMC51bnBhY2sodCxlKSksRzAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIEF2LHowPSQoKCk9PntVVCgpO2Z0KCk7QXY9Z3Z9KTtmdW5jdGlvbiBidih0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBGbG9hdDY0QXJyYXkoZSozKSxvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxlKjIpLHI9MCxpPTA7Zm9yKGxldCBmPTA7ZjxlO2YrKyl7bGV0IHU9dFtmXTtuW3IrK109dS54LG5bcisrXT11LnksbltyKytdPXUueixvW2krK109ZixvW2krK109KGYrMSklZX1sZXQgcz1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6bn0pfSk7cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpzLGluZGljZXM6byxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9ZnVuY3Rpb24gaGModCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb2x5Z29uSGllcmFyY2h5O3kuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKSx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrMX12YXIgd3YsajAsa1Q9JCgoKT0+e0hyKCk7dmUoKTtEdCgpO1d0KCk7RGUoKTtJMCgpO3llKCk7ZnQoKTtZZSgpOyRlKCk7YW4oKTtjYygpO2NpKCk7WmUoKTtEZigpO3RuKCk7aGMuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc319O3JldHVybiBuZXcgaGMoZSl9O2hjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsbj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsbixhKSxlW25dPXQucGFja2VkTGVuZ3RoLGV9O3d2PXtwb2x5Z29uSGllcmFyY2h5Ont9fTtoYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1fZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxhKTtlPW8uc3RhcnRpbmdJbmRleCxkZWxldGUgby5zdGFydGluZ0luZGV4O2xldCByPXRbZV07cmV0dXJuIG0obil8fChuPW5ldyBoYyh3dikpLG4uX3BvbHlnb25IaWVyYXJjaHk9byxuLnBhY2tlZExlbmd0aD1yLG59O2hjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3BvbHlnb25IaWVyYXJjaHksbj1lLnBvc2l0aW9ucztpZihuPUNuKG4sYS5lcXVhbHNFcHNpbG9uLCEwKSxuLmxlbmd0aDwzfHwhbWEudmFsaWRPdXRsaW5lKG4pKXJldHVybjtsZXQgcj1fZS5wb2x5Z29uT3V0bGluZXNGcm9tSGllcmFyY2h5KGUsITEpO2lmKHIubGVuZ3RoPT09MClyZXR1cm47bGV0IGk9W107Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2xldCBjPW5ldyBmbyh7Z2VvbWV0cnk6YnYoclt1XSl9KTtpLnB1c2goYyl9bGV0IHM9R2UuY29tYmluZUluc3RhbmNlcyhpKVswXSxmPUF0LmZyb21Qb2ludHMoZS5wb3NpdGlvbnMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6cy5hdHRyaWJ1dGVzLGluZGljZXM6cy5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6cy5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmZ9KX07ajA9aGN9KTt2YXIgSDA9e307bGUoSDAse2RlZmF1bHQ6KCk9Pk92fSk7ZnVuY3Rpb24gVHYodCxlKXtyZXR1cm4gbShlKSYmKHQ9ajAudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksajAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIE92LHEwPSQoKCk9PntrVCgpO2Z0KCk7JHQoKTtPdj1Udn0pO3ZhciBFdixmbixfYz0kKCgpPT57RXY9e1JPVU5ERUQ6MCxNSVRFUkVEOjEsQkVWRUxFRDoyfSxmbj1PYmplY3QuZnJlZXplKEV2KX0pO2Z1bmN0aW9uIFJ2KHQpe2xldCBlPXQuX3VTcXVhcmVkLG49dC5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsbz10Ll9lbGxpcHNvaWQubWluaW11bVJhZGl1cyxyPShuLW8pL24saT1NYXRoLmNvcyh0Ll9zdGFydEhlYWRpbmcpLHM9TWF0aC5zaW4odC5fc3RhcnRIZWFkaW5nKSxmPSgxLXIpKk1hdGgudGFuKHQuX3N0YXJ0LmxhdGl0dWRlKSx1PTEvTWF0aC5zcXJ0KDErZipmKSxjPXUqZixsPU1hdGguYXRhbjIoZixpKSxwPXUqcyxkPXAqcCxoPTEtZCxfPU1hdGguc3FydChoKSxnPWUvNCxiPWcqZyx3PWIqZyxPPWIqYixFPTErZy0zKmIvNCs1KncvNC0xNzUqTy82NCxUPTEtZysxNSpiLzgtMzUqdy84LHg9MS0zKmcrMzUqYi80LE09MS01KmcsTj1FKmwtVCpNYXRoLnNpbigyKmwpKmcvMi14Kk1hdGguc2luKDQqbCkqYi8xNi1NKk1hdGguc2luKDYqbCkqdy80OC1NYXRoLnNpbig4KmwpKjUqTy81MTIsRj10Ll9jb25zdGFudHM7Ri5hPW4sRi5iPW8sRi5mPXIsRi5jb3NpbmVIZWFkaW5nPWksRi5zaW5lSGVhZGluZz1zLEYudGFuVT1mLEYuY29zaW5lVT11LEYuc2luZVU9YyxGLnNpZ21hPWwsRi5zaW5lQWxwaGE9cCxGLnNpbmVTcXVhcmVkQWxwaGE9ZCxGLmNvc2luZVNxdWFyZWRBbHBoYT1oLEYuY29zaW5lQWxwaGE9XyxGLnUyT3ZlcjQ9ZyxGLnU0T3ZlcjE2PWIsRi51Nk92ZXI2ND13LEYudThPdmVyMjU2PU8sRi5hMD1FLEYuYTE9VCxGLmEyPXgsRi5hMz1NLEYuZGlzdGFuY2VSYXRpbz1OfWZ1bmN0aW9uIFN2KHQsZSl7cmV0dXJuIHQqZSooNCt0Kig0LTMqZSkpLzE2fWZ1bmN0aW9uIEdUKHQsZSxuLG8scixpLHMpe2xldCBmPVN2KHQsbik7cmV0dXJuKDEtZikqdCplKihvK2YqcioocytmKmkqKDIqcypzLTEpKSl9ZnVuY3Rpb24geHYodCxlLG4sbyxyLGkscyl7bGV0IGY9KGUtbikvZSx1PWktbyxjPU1hdGguYXRhbigoMS1mKSpNYXRoLnRhbihyKSksbD1NYXRoLmF0YW4oKDEtZikqTWF0aC50YW4ocykpLHA9TWF0aC5jb3MoYyksZD1NYXRoLnNpbihjKSxoPU1hdGguY29zKGwpLF89TWF0aC5zaW4obCksZz1wKmgsYj1wKl8sdz1kKl8sTz1kKmgsRT11LFQ9UC5UV09fUEkseD1NYXRoLmNvcyhFKSxNPU1hdGguc2luKEUpLE4sRixJLHYsQjtkb3t4PU1hdGguY29zKEUpLE09TWF0aC5zaW4oRSk7bGV0IFc9Yi1PKng7ST1NYXRoLnNxcnQoaCpoKk0qTStXKlcpLEY9dytnKngsTj1NYXRoLmF0YW4yKEksRik7bGV0IFI7ST09PTA/KFI9MCx2PTEpOihSPWcqTS9JLHY9MS1SKlIpLFQ9RSxCPUYtMip3L3YsaXNGaW5pdGUoQil8fChCPTApLEU9dStHVChmLFIsdixOLEksRixCKX13aGlsZShNYXRoLmFicyhFLVQpPlAuRVBTSUxPTjEyKTtsZXQgQT12KihlKmUtbipuKS8obipuKSxTPTErQSooNDA5NitBKihBKigzMjAtMTc1KkEpLTc2OCkpLzE2Mzg0LEM9QSooMjU2K0EqKEEqKDc0LTQ3KkEpLTEyOCkpLzEwMjQsTD1CKkIsej1DKkkqKEIrQyooRiooMipMLTEpLUMqQiooNCpJKkktMykqKDQqTC0zKS82KS80KSxqPW4qUyooTi16KSxrPU1hdGguYXRhbjIoaCpNLGItTyp4KSxxPU1hdGguYXRhbjIocCpNLGIqeC1PKTt0Ll9kaXN0YW5jZT1qLHQuX3N0YXJ0SGVhZGluZz1rLHQuX2VuZEhlYWRpbmc9cSx0Ll91U3F1YXJlZD1BfWZ1bmN0aW9uIFZUKHQsZSxuLG8pe2xldCByPWEubm9ybWFsaXplKG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZSxLMCksQ3YpLGk9YS5ub3JtYWxpemUoby5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihuLEswKSxLMCk7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInZhbHVlIixNYXRoLmFicyhNYXRoLmFicyhhLmFuZ2xlQmV0d2VlbihyLGkpKS1NYXRoLlBJKSwuMDEyNSkseHYodCxvLm1heGltdW1SYWRpdXMsby5taW5pbXVtUmFkaXVzLGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSksdC5fc3RhcnQ9Y3QuY2xvbmUoZSx0Ll9zdGFydCksdC5fZW5kPWN0LmNsb25lKG4sdC5fZW5kKSx0Ll9zdGFydC5oZWlnaHQ9MCx0Ll9lbmQuaGVpZ2h0PTAsUnYodCl9ZnVuY3Rpb24gVWYodCxlLG4pe2xldCBvPW4/P1kuZGVmYXVsdDt0aGlzLl9lbGxpcHNvaWQ9byx0aGlzLl9zdGFydD1uZXcgY3QsdGhpcy5fZW5kPW5ldyBjdCx0aGlzLl9jb25zdGFudHM9e30sdGhpcy5fc3RhcnRIZWFkaW5nPXZvaWQgMCx0aGlzLl9lbmRIZWFkaW5nPXZvaWQgMCx0aGlzLl9kaXN0YW5jZT12b2lkIDAsdGhpcy5fdVNxdWFyZWQ9dm9pZCAwLG0odCkmJm0oZSkmJlZUKHRoaXMsdCxlLG8pfXZhciBDdixLMCx1ZCxXMD0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTskdCgpO0t0KCk7Q3Y9bmV3IGEsSzA9bmV3IGE7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVWYucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxzdXJmYWNlRGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB5LmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fZGlzdGFuY2V9fSxzdGFydDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXJ0fX0sZW5kOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5kfX0sc3RhcnRIZWFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX3N0YXJ0SGVhZGluZ319LGVuZEhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB5LmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fZW5kSGVhZGluZ319fSk7VWYucHJvdG90eXBlLnNldEVuZFBvaW50cz1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgic3RhcnQiLHQpLHkuZGVmaW5lZCgiZW5kIixlKSxWVCh0aGlzLHQsZSx0aGlzLl9lbGxpcHNvaWQpfTtVZi5wcm90b3R5cGUuaW50ZXJwb2xhdGVVc2luZ0ZyYWN0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZSh0aGlzLl9kaXN0YW5jZSp0LGUpfTtVZi5wcm90b3R5cGUuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKTtsZXQgbj10aGlzLl9jb25zdGFudHMsbz1uLmRpc3RhbmNlUmF0aW8rdC9uLmIscj1NYXRoLmNvcygyKm8pLGk9TWF0aC5jb3MoNCpvKSxzPU1hdGguY29zKDYqbyksZj1NYXRoLnNpbigyKm8pLHU9TWF0aC5zaW4oNCpvKSxjPU1hdGguc2luKDYqbyksbD1NYXRoLnNpbig4Km8pLHA9bypvLGQ9bypwLGg9bi51OE92ZXIyNTYsXz1uLnUyT3ZlcjQsZz1uLnU2T3ZlcjY0LGI9bi51NE92ZXIxNix3PTIqZCpoKnIvMytvKigxLV8rNypiLzQtMTUqZy80KzU3OSpoLzY0LShiLTE1KmcvNCsxODcqaC8xNikqci0oNSpnLzQtMTE1KmgvMTYpKmktMjkqaCpzLzE2KSsoXy8yLWIrNzEqZy8zMi04NSpoLzE2KSpmKyg1KmIvMTYtNSpnLzQrMzgzKmgvOTYpKnUtcCooKGctMTEqaC8yKSpmKzUqaCp1LzIpKygyOSpnLzk2LTI5KmgvMTYpKmMrNTM5KmgqbC8xNTM2LE89TWF0aC5hc2luKE1hdGguc2luKHcpKm4uY29zaW5lQWxwaGEpLEU9TWF0aC5hdGFuKG4uYS9uLmIqTWF0aC50YW4oTykpO3c9dy1uLnNpZ21hO2xldCBUPU1hdGguY29zKDIqbi5zaWdtYSt3KSx4PU1hdGguc2luKHcpLE09TWF0aC5jb3ModyksTj1uLmNvc2luZVUqTSxGPW4uc2luZVUqeCx2PU1hdGguYXRhbjIoeCpuLnNpbmVIZWFkaW5nLE4tRipuLmNvc2luZUhlYWRpbmcpLUdUKG4uZixuLnNpbmVBbHBoYSxuLmNvc2luZVNxdWFyZWRBbHBoYSx3LHgsTSxUKTtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9dGhpcy5fc3RhcnQubG9uZ2l0dWRlK3YsZS5sYXRpdHVkZT1FLGUuaGVpZ2h0PTAsZSk6bmV3IGN0KHRoaXMuX3N0YXJ0LmxvbmdpdHVkZSt2LEUsMCl9O3VkPVVmfSk7ZnVuY3Rpb24gcVQodCxlLG4pe2xldCBvPVkwO28ubGVuZ3RoPXQ7bGV0IHI7aWYoZT09PW4pe2ZvcihyPTA7cjx0O3IrKylvW3JdPWU7cmV0dXJuIG99bGV0IHM9KG4tZSkvdDtmb3Iocj0wO3I8dDtyKyspe2xldCBmPWUrcipzO29bcl09Zn1yZXR1cm4gb31mdW5jdGlvbiBCdih0LGUsbixvLHIsaSxzLGYpe2xldCB1PW8uc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0LCQwKSxjPW8uc2NhbGVUb0dlb2RldGljU3VyZmFjZShlLER2KSxsPVVvLm51bWJlck9mUG9pbnRzKHQsZSxuKSxwPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModSxwZCksZD1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGMsbGQpLGg9cVQobCxyLGkpO1gwLnNldEVuZFBvaW50cyhwLGQpO2xldCBfPVgwLnN1cmZhY2VEaXN0YW5jZS9sLGc9ZjtwLmhlaWdodD1yO2xldCBiPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4ocCxocyk7YS5wYWNrKGIscyxnKSxnKz0zO2ZvcihsZXQgdz0xO3c8bDt3Kyspe2xldCBPPVgwLmludGVycG9sYXRlVXNpbmdTdXJmYWNlRGlzdGFuY2UodypfLGxkKTtPLmhlaWdodD1oW3ddLGI9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihPLGhzKSxhLnBhY2soYixzLGcpLGcrPTN9cmV0dXJuIGd9ZnVuY3Rpb24gVXYodCxlLG4sbyxyLGkscyxmKXtsZXQgdT1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHQscGQpLGM9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLGxkKSxsPVVvLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lKHUsYyxuKTt1LmhlaWdodD0wLGMuaGVpZ2h0PTA7bGV0IHA9cVQobCxyLGkpO2tmLmVsbGlwc29pZC5lcXVhbHMobyl8fChrZj1uZXcgSm8odm9pZCAwLHZvaWQgMCxvKSksa2Yuc2V0RW5kUG9pbnRzKHUsYyk7bGV0IGQ9a2Yuc3VyZmFjZURpc3RhbmNlL2wsaD1mO3UuaGVpZ2h0PXI7bGV0IF89by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih1LGhzKTthLnBhY2soXyxzLGgpLGgrPTM7Zm9yKGxldCBnPTE7ZzxsO2crKyl7bGV0IGI9a2YuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShnKmQsbGQpO2IuaGVpZ2h0PXBbZ10sXz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGIsaHMpLGEucGFjayhfLHMsaCksaCs9M31yZXR1cm4gaH12YXIgVW8sUHYsTXYsTnYselQsSXYsalQsdnYsRnYsTHYsWTAscGQsbGQsaHMsJDAsRHYsWDAsa2YsSFQsa3YsQW4sZ2E9JCgoKT0+e0R0KCk7SWUoKTtmdCgpO0h0KCk7JHQoKTtXMCgpO05mKCk7ZWMoKTtLdCgpO2tuKCk7dXMoKTtVbz17fTtVby5udW1iZXJPZlBvaW50cz1mdW5jdGlvbih0LGUsbil7bGV0IG89YS5kaXN0YW5jZSh0LGUpO3JldHVybiBNYXRoLmNlaWwoby9uKX07VW8ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPU1hdGgucG93KHQubG9uZ2l0dWRlLWUubG9uZ2l0dWRlLDIpK01hdGgucG93KHQubGF0aXR1ZGUtZS5sYXRpdHVkZSwyKTtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmNlaWwoTWF0aC5zcXJ0KG8vKG4qbikpKSl9O1B2PW5ldyBjdDtVby5leHRyYWN0SGVpZ2h0cz1mdW5jdGlvbih0LGUpe2xldCBuPXQubGVuZ3RoLG89bmV3IEFycmF5KG4pO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBpPXRbcl07b1tyXT1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGksUHYpLmhlaWdodH1yZXR1cm4gb307TXY9bmV3IHN0LE52PW5ldyBhLHpUPW5ldyBhLEl2PW5ldyBvbihhLlVOSVRfWCwwKSxqVD1uZXcgYSx2dj1uZXcgb24oYS5VTklUX1gsMCksRnY9bmV3IGEsTHY9bmV3IGEsWTA9W107cGQ9bmV3IGN0LGxkPW5ldyBjdCxocz1uZXcgYSwkMD1uZXcgYSxEdj1uZXcgYSxYMD1uZXcgdWQsa2Y9bmV3IEpvO1VvLndyYXBMb25naXR1ZGU9ZnVuY3Rpb24odCxlKXtsZXQgbj1bXSxvPVtdO2lmKG0odCkmJnQubGVuZ3RoPjApe2U9ZT8/c3QuSURFTlRJVFk7bGV0IHI9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGUsTXYpLGk9c3QubXVsdGlwbHlCeVBvaW50KHIsYS5aRVJPLE52KSxzPWEubm9ybWFsaXplKHN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHIsYS5VTklUX1kselQpLHpUKSxmPW9uLmZyb21Qb2ludE5vcm1hbChpLHMsSXYpLHU9YS5ub3JtYWxpemUoc3QubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IocixhLlVOSVRfWCxqVCksalQpLGM9b24uZnJvbVBvaW50Tm9ybWFsKGksdSx2diksbD0xO24ucHVzaChhLmNsb25lKHRbMF0pKTtsZXQgcD1uWzBdLGQ9dC5sZW5ndGg7Zm9yKGxldCBoPTE7aDxkOysraCl7bGV0IF89dFtoXTtpZihvbi5nZXRQb2ludERpc3RhbmNlKGMscCk8MHx8b24uZ2V0UG9pbnREaXN0YW5jZShjLF8pPDApe2xldCBnPXlvLmxpbmVTZWdtZW50UGxhbmUocCxfLGYsRnYpO2lmKG0oZykpe2xldCBiPWEubXVsdGlwbHlCeVNjYWxhcihzLDVlLTksTHYpO29uLmdldFBvaW50RGlzdGFuY2UoZixwKTwwJiZhLm5lZ2F0ZShiLGIpLG4ucHVzaChhLmFkZChnLGIsbmV3IGEpKSxvLnB1c2gobCsxKSxhLm5lZ2F0ZShiLGIpLG4ucHVzaChhLmFkZChnLGIsbmV3IGEpKSxsPTF9fW4ucHVzaChhLmNsb25lKHRbaF0pKSxsKysscD1ffW8ucHVzaChsKX1yZXR1cm57cG9zaXRpb25zOm4sbGVuZ3RoczpvfX07VW8uZ2VuZXJhdGVBcmM9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9e30pO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLmxlbmd0aCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmhlaWdodD8/MCxpPUFycmF5LmlzQXJyYXkocik7aWYobjwxKXJldHVybltdO2lmKG49PT0xKXtsZXQgZz1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZVswXSwkMCk7aWYocj1pP3JbMF06cixyIT09MCl7bGV0IGI9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZyxocyk7YS5tdWx0aXBseUJ5U2NhbGFyKGIscixiKSxhLmFkZChnLGIsZyl9cmV0dXJuW2cueCxnLnksZy56XX1sZXQgcz10Lm1pbkRpc3RhbmNlO2lmKCFtKHMpKXtsZXQgZz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRTtzPVAuY2hvcmRMZW5ndGgoZyxvLm1heGltdW1SYWRpdXMpfWxldCBmPTAsdTtmb3IodT0wO3U8bi0xO3UrKylmKz1Vby5udW1iZXJPZlBvaW50cyhlW3VdLGVbdSsxXSxzKTtsZXQgYz0oZisxKSozLGw9bmV3IEFycmF5KGMpLHA9MDtmb3IodT0wO3U8bi0xO3UrKyl7bGV0IGc9ZVt1XSxiPWVbdSsxXSx3PWk/clt1XTpyLE89aT9yW3UrMV06cjtwPUJ2KGcsYixzLG8sdyxPLGwscCl9WTAubGVuZ3RoPTA7bGV0IGQ9ZVtuLTFdLGg9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhkLHBkKTtoLmhlaWdodD1pP3Jbbi0xXTpyO2xldCBfPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaCxocyk7cmV0dXJuIGEucGFjayhfLGwsYy0zKSxsfTtIVD1uZXcgY3Qsa3Y9bmV3IGN0O1VvLmdlbmVyYXRlUmh1bWJBcmM9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9e30pO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLmxlbmd0aCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmhlaWdodD8/MCxpPUFycmF5LmlzQXJyYXkocik7aWYobjwxKXJldHVybltdO2lmKG49PT0xKXtsZXQgdz1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZVswXSwkMCk7aWYocj1pP3JbMF06cixyIT09MCl7bGV0IE89by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwodyxocyk7YS5tdWx0aXBseUJ5U2NhbGFyKE8scixPKSxhLmFkZCh3LE8sdyl9cmV0dXJuW3cueCx3Lnksdy56XX1sZXQgcz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxmPTAsdSxjPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZVswXSxIVCksbDtmb3IodT0wO3U8bi0xO3UrKylsPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZVt1KzFdLGt2KSxmKz1Vby5udW1iZXJPZlBvaW50c1JodW1iTGluZShjLGwscyksYz1jdC5jbG9uZShsLEhUKTtsZXQgcD0oZisxKSozLGQ9bmV3IEFycmF5KHApLGg9MDtmb3IodT0wO3U8bi0xO3UrKyl7bGV0IHc9ZVt1XSxPPWVbdSsxXSxFPWk/clt1XTpyLFQ9aT9yW3UrMV06cjtoPVV2KHcsTyxzLG8sRSxULGQsaCl9WTAubGVuZ3RoPTA7bGV0IF89ZVtuLTFdLGc9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhfLHBkKTtnLmhlaWdodD1pP3Jbbi0xXTpyO2xldCBiPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZyxocyk7cmV0dXJuIGEucGFjayhiLGQscC0zKSxkfTtVby5nZW5lcmF0ZUNhcnRlc2lhbkFyYz1mdW5jdGlvbih0KXtsZXQgZT1Vby5nZW5lcmF0ZUFyYyh0KSxuPWUubGVuZ3RoLzMsbz1uZXcgQXJyYXkobik7Zm9yKGxldCByPTA7cjxuO3IrKylvW3JdPWEudW5wYWNrKGUsciozKTtyZXR1cm4gb307VW8uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYz1mdW5jdGlvbih0KXtsZXQgZT1Vby5nZW5lcmF0ZVJodW1iQXJjKHQpLG49ZS5sZW5ndGgvMyxvPW5ldyBBcnJheShuKTtmb3IobGV0IHI9MDtyPG47cisrKW9bcl09YS51bnBhY2soZSxyKjMpO3JldHVybiBvfTtBbj1Vb30pO2Z1bmN0aW9uIEdmKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImlkZW50aWZpZXIgaXMgcmVxdWlyZWQuIik7bShLVFt0XSl8fChLVFt0XT0hMCxjb25zb2xlLndhcm4oZT8/dCkpfXZhciBLVCxkZCxaMD0kKCgpPT57ZnQoKTtIdCgpO0tUPXt9O0dmLmdlb21ldHJ5T3V0bGluZXM9IkVudGl0eSBnZW9tZXRyeSBvdXRsaW5lcyBhcmUgdW5zdXBwb3J0ZWQgb24gdGVycmFpbi4gT3V0bGluZXMgd2lsbCBiZSBkaXNhYmxlZC4gVG8gZW5hYmxlIG91dGxpbmVzLCBkaXNhYmxlIGdlb21ldHJ5IHRlcnJhaW4gY2xhbXBpbmcgYnkgZXhwbGljaXRseSBzZXR0aW5nIGhlaWdodCB0byAwLiI7R2YuZ2VvbWV0cnlaSW5kZXg9IkVudGl0eSBnZW9tZXRyeSB3aXRoIHpJbmRleCBhcmUgdW5zdXBwb3J0ZWQgd2hlbiBoZWlnaHQgb3IgZXh0cnVkZWRIZWlnaHQgYXJlIGRlZmluZWQuICB6SW5kZXggd2lsbCBiZSBpZ25vcmVkIjtHZi5nZW9tZXRyeUhlaWdodFJlZmVyZW5jZT0iRW50aXR5IGNvcnJpZG9yLCBlbGxpcHNlLCBwb2x5Z29uIG9yIHJlY3RhbmdsZSB3aXRoIGhlaWdodFJlZmVyZW5jZSBtdXN0IGFsc28gaGF2ZSBhIGRlZmluZWQgaGVpZ2h0LiAgaGVpZ2h0UmVmZXJlbmNlIHdpbGwgYmUgaWdub3JlZCI7R2YuZ2VvbWV0cnlFeHRydWRlZEhlaWdodFJlZmVyZW5jZT0iRW50aXR5IGNvcnJpZG9yLCBlbGxpcHNlLCBwb2x5Z29uIG9yIHJlY3RhbmdsZSB3aXRoIGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIG11c3QgYWxzbyBoYXZlIGEgZGVmaW5lZCBleHRydWRlZEhlaWdodC4gIGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIHdpbGwgYmUgaWdub3JlZCI7ZGQ9R2Z9KTtmdW5jdGlvbiBZdih0LGUpe2xldCBuPW5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCByPXRbb107UTA9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhyLFEwKSxuW29dPVEwLmhlaWdodCx0W29dPWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZShyLHIpfXJldHVybiBufWZ1bmN0aW9uIEowKHQsZSxuLG8pe2xldCByPXRbMF0saT10WzFdLHM9YS5hbmdsZUJldHdlZW4ocixpKSxmPU1hdGguY2VpbChzL28pLHU9bmV3IEFycmF5KGYpLGM7aWYoZT09PW4pe2ZvcihjPTA7YzxmO2MrKyl1W2NdPWU7cmV0dXJuIHUucHVzaChuKSx1fWxldCBwPShuLWUpL2Y7Zm9yKGM9MTtjPGY7YysrKXtsZXQgZD1lK2MqcDt1W2NdPWR9cmV0dXJuIHVbMF09ZSx1LnB1c2gobiksdX1mdW5jdGlvbiAkdih0LGUsbixvKXtsZXQgcj1uZXcgQW8obixvKSxpPXIucHJvamVjdFBvaW50T250b1BsYW5lKGEuYWRkKG4sdCxoZCksaGQpLHM9ci5wcm9qZWN0UG9pbnRPbnRvUGxhbmUoYS5hZGQobixlLF9kKSxfZCksZj1KLmFuZ2xlQmV0d2VlbihpLHMpO3JldHVybiBzLngqaS55LXMueSppLng+PTA/LWY6Zn1mdW5jdGlvbiBraSh0LGUsbixvLHIsaSxzLGYpe2xldCB1PXRGLGM9ZUY7eWM9JG8uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUodCxyLHljKSx1PXN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHljLFp2LHUpLHU9YS5ub3JtYWxpemUodSx1KTtsZXQgbD0kdih1LGUsdCxyKTt0Xz1aLmZyb21Sb3RhdGlvbloobCx0XyksV1Quej1pLHljPXN0Lm11bHRpcGx5VHJhbnNmb3JtYXRpb24oeWMsc3QuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24odF8sV1QsUXYpLHljKTtsZXQgcD1KdjtwWzBdPXM7Zm9yKGxldCBkPTA7ZDxmO2QrKylmb3IobGV0IGg9MDtoPG4ubGVuZ3RoO2grPTMpYz1hLmZyb21BcnJheShuLGgsYyksYz1aLm11bHRpcGx5QnlWZWN0b3IocCxjLGMpLGM9c3QubXVsdGlwbHlCeVBvaW50KHljLGMsYyksby5wdXNoKGMueCxjLnksYy56KTtyZXR1cm4gb31mdW5jdGlvbiBlXyh0LGUsbixvLHIsaSxzKXtmb3IobGV0IGY9MDtmPHQubGVuZ3RoO2YrPTMpe2xldCB1PWEuZnJvbUFycmF5KHQsZixuRik7bz1raSh1LGUsbixvLHIsaVtmLzNdLHMsMSl9cmV0dXJuIG99ZnVuY3Rpb24gb0YodCxlKXtsZXQgbj10Lmxlbmd0aCxvPW5ldyBBcnJheShuKjYpLHI9MCxpPWUueCtlLndpZHRoLzIscz1lLnkrZS5oZWlnaHQvMixmPXRbMF07b1tyKytdPWYueC1pLG9bcisrXT0wLG9bcisrXT1mLnktcztmb3IobGV0IHU9MTt1PG47dSsrKXtmPXRbdV07bGV0IGM9Zi54LWksbD1mLnktcztvW3IrK109YyxvW3IrK109MCxvW3IrK109bCxvW3IrK109YyxvW3IrK109MCxvW3IrK109bH1yZXR1cm4gZj10WzBdLG9bcisrXT1mLngtaSxvW3IrK109MCxvW3IrK109Zi55LXMsb31mdW5jdGlvbiBYVCh0LGUpe2xldCBuPXQubGVuZ3RoLG89bmV3IEFycmF5KG4qMykscj0wLGk9ZS54K2Uud2lkdGgvMixzPWUueStlLmhlaWdodC8yO2ZvcihsZXQgZj0wO2Y8bjtmKyspb1tyKytdPXRbZl0ueC1pLG9bcisrXT0wLG9bcisrXT10W2ZdLnktcztyZXR1cm4gb31mdW5jdGlvbiBRVCh0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1hLmFuZ2xlQmV0d2VlbihhLnN1YnRyYWN0KGUsdCxBYSksYS5zdWJ0cmFjdChuLHQsbWQpKSxwPW89PT1mbi5CRVZFTEVEPzA6TWF0aC5jZWlsKGwvUC50b1JhZGlhbnMoNSkpLGQ7cj9kPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZShhLm5lZ2F0ZSh0LEFhKSxsLyhwKzEpLFlUKSxaVCk6ZD1aLmZyb21RdWF0ZXJuaW9uKHRlLmZyb21BeGlzQW5nbGUodCxsLyhwKzEpLFlUKSxaVCk7bGV0IGgsXztpZihlPWEuY2xvbmUoZSwkVCkscD4wKXtsZXQgZz1jPzI6MTtmb3IobGV0IGI9MDtiPHA7YisrKWU9Wi5tdWx0aXBseUJ5VmVjdG9yKGQsZSxlKSxoPWEuc3VidHJhY3QoZSx0LEFhKSxoPWEubm9ybWFsaXplKGgsaCkscnx8KGg9YS5uZWdhdGUoaCxoKSksXz1pLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZSxtZCkscz1raShfLGgsZixzLGksdSwxLGcpfWVsc2UgaD1hLnN1YnRyYWN0KGUsdCxBYSksaD1hLm5vcm1hbGl6ZShoLGgpLHJ8fChoPWEubmVnYXRlKGgsaCkpLF89aS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGUsbWQpLHM9a2koXyxoLGYscyxpLHUsMSwxKSxuPWEuY2xvbmUobiwkVCksaD1hLnN1YnRyYWN0KG4sdCxBYSksaD1hLm5vcm1hbGl6ZShoLGgpLHJ8fChoPWEubmVnYXRlKGgsaCkpLF89aS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKG4sbWQpLHM9a2koXyxoLGYscyxpLHUsMSwxKTtyZXR1cm4gc312YXIgdW8sR3YsVnYsenYsanYsSHYscXYsS3YsV3YsWHYsQWEsbWQsVmYsUTAsaGQsX2QsWnYseWMsUXYsdF8sSnYsdEYsZUYsV1QsbkYsWVQsJFQsWlQsckYsaUYsX3MseWQ9JCgoKT0+e2tlKCk7RHQoKTtfcigpO0llKCk7X2MoKTtwYSgpO0t0KCk7VW4oKTtrbigpO2dhKCk7WG8oKTthcygpO1owKCk7dW89W25ldyBhLG5ldyBhXSxHdj1uZXcgYSxWdj1uZXcgYSx6dj1uZXcgYSxqdj1uZXcgYSxIdj1uZXcgYSxxdj1uZXcgYSxLdj1uZXcgYSxXdj1uZXcgYSxYdj1uZXcgYSxBYT1uZXcgYSxtZD1uZXcgYSxWZj17fSxRMD1uZXcgY3Q7aGQ9bmV3IGEsX2Q9bmV3IGE7WnY9bmV3IGEoLTEsMCwwKSx5Yz1uZXcgc3QsUXY9bmV3IHN0LHRfPW5ldyBaLEp2PVouSURFTlRJVFkuY2xvbmUoKSx0Rj1uZXcgYSxlRj1uZXcgbWUsV1Q9bmV3IGE7bkY9bmV3IGE7WVQ9bmV3IHRlLCRUPW5ldyBhLFpUPW5ldyBaO1ZmLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGU9ZnVuY3Rpb24odCl7bGV0IGU9dC5sZW5ndGgsbj1bXTtmb3IobGV0IG89ZS0xLHI9MDtyPGU7bz1yKyspe2xldCBpPXRbb10scz10W3JdO0ouZXF1YWxzKGkscyl8fG4ucHVzaChzKX1yZXR1cm4gbn07VmYuYW5nbGVJc0dyZWF0ZXJUaGFuUGk9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9bmV3IEFvKG4sbyksaT1yLnByb2plY3RQb2ludE9udG9QbGFuZShhLmFkZChuLHQsaGQpLGhkKSxzPXIucHJvamVjdFBvaW50T250b1BsYW5lKGEuYWRkKG4sZSxfZCksX2QpO3JldHVybiBzLngqaS55LXMueSppLng+PTB9O3JGPW5ldyBhLGlGPW5ldyBhO1ZmLmNvbXB1dGVQb3NpdGlvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT1vLl9lbGxpcHNvaWQscz1Zdih0LGkpLGY9by5fZ3JhbnVsYXJpdHksdT1vLl9jb3JuZXJUeXBlLGM9cj9vRihlLG4pOlhUKGUsbiksbD1yP1hUKGUsbik6dm9pZCAwLHA9bi5oZWlnaHQvMixkPW4ud2lkdGgvMixoPXQubGVuZ3RoLF89W10sZz1yP1tdOnZvaWQgMCxiPUd2LHc9VnYsTz16dixFPWp2LFQ9SHYseD1xdixNPUt2LE49V3YsRj1YdixJPXRbMF0sdj10WzFdO0U9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoSSxFKSxiPWEuc3VidHJhY3QodixJLGIpLGI9YS5ub3JtYWxpemUoYixiKSxOPWEuY3Jvc3MoRSxiLE4pLE49YS5ub3JtYWxpemUoTixOKTtsZXQgQj1zWzBdLEE9c1sxXTtyJiYoZz1raShJLE4sbCxnLGksQitwLDEsMSkpLEY9YS5jbG9uZShJLEYpLEk9dix3PWEubmVnYXRlKGIsdyk7bGV0IFMsQztmb3IobGV0IGo9MTtqPGgtMTtqKyspe2xldCBrPXI/MjoxO2lmKHY9dFtqKzFdLEkuZXF1YWxzKHYpKXtkZCgiUG9zaXRpb25zIGFyZSB0b28gY2xvc2UgYW5kIGFyZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQgd2l0aCByb3VuZGluZyBlcnJvci4iKTtjb250aW51ZX1iPWEuc3VidHJhY3QodixJLGIpLGI9YS5ub3JtYWxpemUoYixiKSxFPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEksRSk7bGV0IHE9YS5tdWx0aXBseUJ5U2NhbGFyKEUsYS5kb3QoYixFKSxyRik7YS5zdWJ0cmFjdChiLHEscSksYS5ub3JtYWxpemUocSxxKTtsZXQgVz1hLm11bHRpcGx5QnlTY2FsYXIoRSxhLmRvdCh3LEUpLGlGKTtpZihhLnN1YnRyYWN0KHcsVyxXKSxhLm5vcm1hbGl6ZShXLFcpLCFQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYS5kb3QocSxXKSksMSxQLkVQU0lMT043KSl7Tz1hLmFkZChiLHcsTyksTz1hLm5vcm1hbGl6ZShPLE8pLE89YS5jcm9zcyhPLEUsTyksTz1hLmNyb3NzKEUsTyxPKSxPPWEubm9ybWFsaXplKE8sTyk7bGV0IG50PTEvTWF0aC5tYXgoLjI1LGEubWFnbml0dWRlKGEuY3Jvc3MoTyx3LEFhKSkpLGF0PVZmLmFuZ2xlSXNHcmVhdGVyVGhhblBpKGIsdyxJLGkpO2F0PyhUPWEuYWRkKEksYS5tdWx0aXBseUJ5U2NhbGFyKE8sbnQqZCxPKSxUKSx4PWEuYWRkKFQsYS5tdWx0aXBseUJ5U2NhbGFyKE4sZCx4KSx4KSx1b1swXT1hLmNsb25lKEYsdW9bMF0pLHVvWzFdPWEuY2xvbmUoeCx1b1sxXSksUz1KMCh1byxCK3AsQStwLGYpLEM9QW4uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp1byxncmFudWxhcml0eTpmLGVsbGlwc29pZDppfSksXz1lXyhDLE4sYyxfLGksUywxKSxOPWEuY3Jvc3MoRSxiLE4pLE49YS5ub3JtYWxpemUoTixOKSxNPWEuYWRkKFQsYS5tdWx0aXBseUJ5U2NhbGFyKE4sZCxNKSxNKSx1PT09Zm4uUk9VTkRFRHx8dT09PWZuLkJFVkVMRUQ/UVQoVCx4LE0sdSxhdCxpLF8sYyxBK3Ascik6KE89YS5uZWdhdGUoTyxPKSxfPWtpKEksTyxjLF8saSxBK3AsbnQsaykpLEY9YS5jbG9uZShNLEYpKTooVD1hLmFkZChJLGEubXVsdGlwbHlCeVNjYWxhcihPLG50KmQsTyksVCkseD1hLmFkZChULGEubXVsdGlwbHlCeVNjYWxhcihOLC1kLHgpLHgpLHVvWzBdPWEuY2xvbmUoRix1b1swXSksdW9bMV09YS5jbG9uZSh4LHVvWzFdKSxTPUowKHVvLEIrcCxBK3AsZiksQz1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOnVvLGdyYW51bGFyaXR5OmYsZWxsaXBzb2lkOml9KSxfPWVfKEMsTixjLF8saSxTLDEpLE49YS5jcm9zcyhFLGIsTiksTj1hLm5vcm1hbGl6ZShOLE4pLE09YS5hZGQoVCxhLm11bHRpcGx5QnlTY2FsYXIoTiwtZCxNKSxNKSx1PT09Zm4uUk9VTkRFRHx8dT09PWZuLkJFVkVMRUQ/UVQoVCx4LE0sdSxhdCxpLF8sYyxBK3Ascik6Xz1raShJLE8sYyxfLGksQStwLG50LGspLEY9YS5jbG9uZShNLEYpKSx3PWEubmVnYXRlKGIsdyl9ZWxzZSBfPWtpKEYsTixjLF8saSxCK3AsMSwxKSxGPUk7Qj1BLEE9c1tqKzFdLEk9dn11b1swXT1hLmNsb25lKEYsdW9bMF0pLHVvWzFdPWEuY2xvbmUoSSx1b1sxXSksUz1KMCh1byxCK3AsQStwLGYpLEM9QW4uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp1byxncmFudWxhcml0eTpmLGVsbGlwc29pZDppfSksXz1lXyhDLE4sYyxfLGksUywxKSxyJiYoZz1raShJLE4sbCxnLGksQStwLDEsMSkpLGg9Xy5sZW5ndGg7bGV0IEw9cj9oK2cubGVuZ3RoOmgsej1uZXcgRmxvYXQ2NEFycmF5KEwpO3JldHVybiB6LnNldChfKSxyJiZ6LnNldChnLGgpLHp9O19zPVZmfSk7ZnVuY3Rpb24gZ2QodCxlLG4sbyxyKXtsZXQgaT1hLmFuZ2xlQmV0d2VlbihhLnN1YnRyYWN0KGUsdCxiYSksYS5zdWJ0cmFjdChuLHQsb08pKSxzPW89PT1mbi5CRVZFTEVEPzE6TWF0aC5jZWlsKGkvUC50b1JhZGlhbnMoNSkpKzEsZj1zKjMsdT1uZXcgQXJyYXkoZik7dVtmLTNdPW4ueCx1W2YtMl09bi55LHVbZi0xXT1uLno7bGV0IGM7cj9jPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZShhLm5lZ2F0ZSh0LGJhKSxpL3MsdE8pLGVPKTpjPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZSh0LGkvcyx0TyksZU8pO2xldCBsPTA7ZT1hLmNsb25lKGUsYmEpO2ZvcihsZXQgcD0wO3A8cztwKyspZT1aLm11bHRpcGx5QnlWZWN0b3IoYyxlLGUpLHVbbCsrXT1lLngsdVtsKytdPWUueSx1W2wrK109ZS56O3JldHVybiB1fWZ1bmN0aW9uIG1GKHQpe2xldCBlPXJPLG49aU8sbz1zTyxyPXRbMV07bj1hLmZyb21BcnJheSh0WzFdLHIubGVuZ3RoLTMsbiksbz1hLmZyb21BcnJheSh0WzBdLDAsbyksZT1hLm1pZHBvaW50KG4sbyxlKTtsZXQgaT1nZChlLG4sbyxmbi5ST1VOREVELCExKSxzPXQubGVuZ3RoLTEsZj10W3MtMV07cj10W3NdLG49YS5mcm9tQXJyYXkoZixmLmxlbmd0aC0zLG4pLG89YS5mcm9tQXJyYXkociwwLG8pLGU9YS5taWRwb2ludChuLG8sZSk7bGV0IHU9Z2QoZSxuLG8sZm4uUk9VTkRFRCwhMSk7cmV0dXJuW2ksdV19ZnVuY3Rpb24gbk8odCxlLG4sbyl7bGV0IHI9YmE7cmV0dXJuIG8/cj1hLmFkZCh0LGUscik6KGU9YS5uZWdhdGUoZSxlKSxyPWEuYWRkKHQsZSxyKSksW3IueCxyLnksci56LG4ueCxuLnksbi56XX1mdW5jdGlvbiBuXyh0LGUsbixvKXtsZXQgcj1uZXcgQXJyYXkodC5sZW5ndGgpLGk9bmV3IEFycmF5KHQubGVuZ3RoKSxzPWEubXVsdGlwbHlCeVNjYWxhcihlLG4sYmEpLGY9YS5uZWdhdGUocyxvTyksdT0wLGM9dC5sZW5ndGgtMTtmb3IobGV0IGw9MDtsPHQubGVuZ3RoO2wrPTMpe2xldCBwPWEuZnJvbUFycmF5KHQsbCxzRiksZD1hLmFkZChwLGYsSlQpO3JbdSsrXT1kLngsclt1KytdPWQueSxyW3UrK109ZC56O2xldCBoPWEuYWRkKHAscyxKVCk7aVtjLS1dPWgueixpW2MtLV09aC55LGlbYy0tXT1oLnh9cmV0dXJuIG8ucHVzaChyLGkpLG99dmFyIG9fLGJhLG9PLHNGLEpULGtvLHJPLGlPLHNPLGNGLGFGLGZGLHVGLGxGLHBGLGRGLHRPLGVPLGhGLF9GLEtlLHJfPSQoKCk9PntEdCgpO19jKCk7ZnQoKTtLdCgpO1VuKCk7Z2EoKTt5ZCgpO1hvKCk7b189e30sYmE9bmV3IGEsb089bmV3IGEsc0Y9bmV3IGEsSlQ9bmV3IGEsa289W25ldyBhLG5ldyBhXSxyTz1uZXcgYSxpTz1uZXcgYSxzTz1uZXcgYSxjRj1uZXcgYSxhRj1uZXcgYSxmRj1uZXcgYSx1Rj1uZXcgYSxsRj1uZXcgYSxwRj1uZXcgYSxkRj1uZXcgYSx0Tz1uZXcgdGUsZU89bmV3IFo7b18uYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPWUueCxpPWUueSxzPWUuejttKG4pJiYodFtuXT1yLHRbbisxXT1pLHRbbisyXT1zKSxtKG8pJiYodFtvXT1zLHRbby0xXT1pLHRbby0yXT1yKX07aEY9bmV3IGEsX0Y9bmV3IGE7b18uY29tcHV0ZVBvc2l0aW9ucz1mdW5jdGlvbih0KXtsZXQgZT10LmdyYW51bGFyaXR5LG49dC5wb3NpdGlvbnMsbz10LmVsbGlwc29pZCxyPXQud2lkdGgvMixpPXQuY29ybmVyVHlwZSxzPXQuc2F2ZUF0dHJpYnV0ZXMsZj1yTyx1PWlPLGM9c08sbD1jRixwPWFGLGQ9ZkYsaD11RixfPWxGLGc9cEYsYj1kRix3PVtdLE89cz9bXTp2b2lkIDAsRT1zP1tdOnZvaWQgMCxUPW5bMF0seD1uWzFdO3U9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdCh4LFQsdSksdSksZj1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChULGYpLGw9YS5ub3JtYWxpemUoYS5jcm9zcyhmLHUsbCksbCkscyYmKE8ucHVzaChsLngsbC55LGwueiksRS5wdXNoKGYueCxmLnksZi56KSksaD1hLmNsb25lKFQsaCksVD14LGM9YS5uZWdhdGUodSxjKTtsZXQgTSxOPVtdLEYsST1uLmxlbmd0aDtmb3IoRj0xO0Y8SS0xO0YrKyl7Zj1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChULGYpLHg9bltGKzFdLHU9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdCh4LFQsdSksdSk7bGV0IEI9YS5tdWx0aXBseUJ5U2NhbGFyKGYsYS5kb3QodSxmKSxoRik7YS5zdWJ0cmFjdCh1LEIsQiksYS5ub3JtYWxpemUoQixCKTtsZXQgQT1hLm11bHRpcGx5QnlTY2FsYXIoZixhLmRvdChjLGYpLF9GKTtpZihhLnN1YnRyYWN0KGMsQSxBKSxhLm5vcm1hbGl6ZShBLEEpLCFQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYS5kb3QoQixBKSksMSxQLkVQU0lMT043KSl7cD1hLm5vcm1hbGl6ZShhLmFkZCh1LGMscCkscCkscD1hLmNyb3NzKHAsZixwKSxwPWEuY3Jvc3MoZixwLHApLHA9YS5ub3JtYWxpemUocCxwKTtsZXQgQz1yL01hdGgubWF4KC4yNSxhLm1hZ25pdHVkZShhLmNyb3NzKHAsYyxiYSkpKSxMPV9zLmFuZ2xlSXNHcmVhdGVyVGhhblBpKHUsYyxULG8pO3A9YS5tdWx0aXBseUJ5U2NhbGFyKHAsQyxwKSxMPyhfPWEuYWRkKFQscCxfKSxiPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscixiKSxiKSxnPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscioyLGcpLGcpLGtvWzBdPWEuY2xvbmUoaCxrb1swXSksa29bMV09YS5jbG9uZShiLGtvWzFdKSxNPUFuLmdlbmVyYXRlQXJjKHtwb3NpdGlvbnM6a28sZ3JhbnVsYXJpdHk6ZSxlbGxpcHNvaWQ6b30pLHc9bl8oTSxsLHIsdykscyYmKE8ucHVzaChsLngsbC55LGwueiksRS5wdXNoKGYueCxmLnksZi56KSksZD1hLmNsb25lKGcsZCksbD1hLm5vcm1hbGl6ZShhLmNyb3NzKGYsdSxsKSxsKSxnPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscioyLGcpLGcpLGg9YS5hZGQoXyxhLm11bHRpcGx5QnlTY2FsYXIobCxyLGgpLGgpLGk9PT1mbi5ST1VOREVEfHxpPT09Zm4uQkVWRUxFRD9OLnB1c2goe2xlZnRQb3NpdGlvbnM6Z2QoXyxkLGcsaSxMKX0pOk4ucHVzaCh7bGVmdFBvc2l0aW9uczpuTyhULGEubmVnYXRlKHAscCksZyxMKX0pKTooZz1hLmFkZChULHAsZyksYj1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIsYiksYiksYiksXz1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIqMixfKSxfKSxfKSxrb1swXT1hLmNsb25lKGgsa29bMF0pLGtvWzFdPWEuY2xvbmUoYixrb1sxXSksTT1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOmtvLGdyYW51bGFyaXR5OmUsZWxsaXBzb2lkOm99KSx3PW5fKE0sbCxyLHcpLHMmJihPLnB1c2gobC54LGwueSxsLnopLEUucHVzaChmLngsZi55LGYueikpLGQ9YS5jbG9uZShfLGQpLGw9YS5ub3JtYWxpemUoYS5jcm9zcyhmLHUsbCksbCksXz1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIqMixfKSxfKSxfKSxoPWEuYWRkKGcsYS5uZWdhdGUoYS5tdWx0aXBseUJ5U2NhbGFyKGwscixoKSxoKSxoKSxpPT09Zm4uUk9VTkRFRHx8aT09PWZuLkJFVkVMRUQ/Ti5wdXNoKHtyaWdodFBvc2l0aW9uczpnZChnLGQsXyxpLEwpfSk6Ti5wdXNoKHtyaWdodFBvc2l0aW9uczpuTyhULHAsXyxMKX0pKSxjPWEubmVnYXRlKHUsYyl9VD14fWY9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoVCxmKSxrb1swXT1hLmNsb25lKGgsa29bMF0pLGtvWzFdPWEuY2xvbmUoVCxrb1sxXSksTT1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOmtvLGdyYW51bGFyaXR5OmUsZWxsaXBzb2lkOm99KSx3PW5fKE0sbCxyLHcpLHMmJihPLnB1c2gobC54LGwueSxsLnopLEUucHVzaChmLngsZi55LGYueikpO2xldCB2O3JldHVybiBpPT09Zm4uUk9VTkRFRCYmKHY9bUYodykpLHtwb3NpdGlvbnM6dyxjb3JuZXJzOk4sbGVmdHM6Tyxub3JtYWxzOkUsZW5kUG9zaXRpb25zOnZ9fTtLZT1vX30pO2Z1bmN0aW9uIHBPKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtuXSx0W25dKTtyZXR1cm4gdH1mdW5jdGlvbiBXcih0LGUsbixvLHIsaSl7bGV0IHM9dC5ub3JtYWxzLGY9dC50YW5nZW50cyx1PXQuYml0YW5nZW50cyxjPWEubm9ybWFsaXplKGEuY3Jvc3MobixlLHlzKSx5cyk7aS5ub3JtYWwmJktlLmFkZEF0dHJpYnV0ZShzLGUsbyxyKSxpLnRhbmdlbnQmJktlLmFkZEF0dHJpYnV0ZShmLGMsbyxyKSxpLmJpdGFuZ2VudCYmS2UuYWRkQXR0cmlidXRlKHUsbixvLHIpfWZ1bmN0aW9uIGRPKHQsZSxuKXtsZXQgbz10LnBvc2l0aW9ucyxyPXQuY29ybmVycyxpPXQuZW5kUG9zaXRpb25zLHM9dC5sZWZ0cyxmPXQubm9ybWFscyx1PW5ldyBpZSxjLGw9MCxwPTAsZCxoPTAsXztmb3IoZD0wO2Q8by5sZW5ndGg7ZCs9MilfPW9bZF0ubGVuZ3RoLTMsbCs9XyxoKz1fKjIscCs9b1tkKzFdLmxlbmd0aC0zO2ZvcihsKz0zLHArPTMsZD0wO2Q8ci5sZW5ndGg7ZCsrKXtjPXJbZF07bGV0IG90PXJbZF0ubGVmdFBvc2l0aW9uczttKG90KT8oXz1vdC5sZW5ndGgsbCs9XyxoKz1fKTooXz1yW2RdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxwKz1fLGgrPV8pfWxldCBnPW0oaSksYjtnJiYoYj1pWzBdLmxlbmd0aC0zLGwrPWIscCs9YixiLz0zLGgrPWIqNik7bGV0IHc9bCtwLE89bmV3IEZsb2F0NjRBcnJheSh3KSxFPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkodyk6dm9pZCAwLFQ9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkodyk6dm9pZCAwLHg9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheSh3KTp2b2lkIDAsTT17bm9ybWFsczpFLHRhbmdlbnRzOlQsYml0YW5nZW50czp4fSxOPTAsRj13LTEsSSx2LEIsQSxTPWZPLEM9dU8sTCx6LGo9Yi8yLGs9THQuY3JlYXRlVHlwZWRBcnJheSh3LzMsaCkscT0wO2lmKGcpe3o9QWQsTD1iZDtsZXQgb3Q9aVswXTtmb3IoUz1hLmZyb21BcnJheShmLDAsUyksQz1hLmZyb21BcnJheShzLDAsQyksZD0wO2Q8ajtkKyspej1hLmZyb21BcnJheShvdCwoai0xLWQpKjMseiksTD1hLmZyb21BcnJheShvdCwoaitkKSozLEwpLEtlLmFkZEF0dHJpYnV0ZShPLEwsTiksS2UuYWRkQXR0cmlidXRlKE8seix2b2lkIDAsRiksV3IoTSxTLEMsTixGLGUpLHY9Ti8zLEE9disxLEk9KEYtMikvMyxCPUktMSxrW3ErK109SSxrW3ErK109dixrW3ErK109QixrW3ErK109QixrW3ErK109dixrW3ErK109QSxOKz0zLEYtPTN9bGV0IFc9MCxSPTAsbnQ9b1tXKytdLGF0PW9bVysrXTtPLnNldChudCxOKSxPLnNldChhdCxGLWF0Lmxlbmd0aCsxKSxDPWEuZnJvbUFycmF5KHMsUixDKTtsZXQgbHQsX3Q7Zm9yKF89YXQubGVuZ3RoLTMsZD0wO2Q8XztkKz0zKWx0PW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEuZnJvbUFycmF5KG50LGQseXMpLHlzKSxfdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShhdCxfLWQsd2EpLHdhKSxTPWEubm9ybWFsaXplKGEuYWRkKGx0LF90LFMpLFMpLFdyKE0sUyxDLE4sRixlKSx2PU4vMyxBPXYrMSxJPShGLTIpLzMsQj1JLTEsa1txKytdPUksa1txKytdPXYsa1txKytdPUIsa1txKytdPUIsa1txKytdPXYsa1txKytdPUEsTis9MyxGLT0zO2ZvcihsdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShudCxfLHlzKSx5cyksX3Q9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoYS5mcm9tQXJyYXkoYXQsXyx3YSksd2EpLFM9YS5ub3JtYWxpemUoYS5hZGQobHQsX3QsUyksUyksUis9MyxkPTA7ZDxyLmxlbmd0aDtkKyspe2xldCBvdDtjPXJbZF07bGV0IFB0PWMubGVmdFBvc2l0aW9ucyxndD1jLnJpZ2h0UG9zaXRpb25zLFJ0LGR0LHJ0PWxPLHh0PUFkLEd0PWJkO2lmKFM9YS5mcm9tQXJyYXkoZixSLFMpLG0oUHQpKXtmb3IoV3IoTSxTLEMsdm9pZCAwLEYsZSksRi09MyxSdD1BLGR0PUIsb3Q9MDtvdDxQdC5sZW5ndGgvMztvdCsrKXJ0PWEuZnJvbUFycmF5KFB0LG90KjMscnQpLGtbcSsrXT1SdCxrW3ErK109ZHQtb3QtMSxrW3ErK109ZHQtb3QsS2UuYWRkQXR0cmlidXRlKE8scnQsdm9pZCAwLEYpLHh0PWEuZnJvbUFycmF5KE8sKGR0LW90LTEpKjMseHQpLEd0PWEuZnJvbUFycmF5KE8sUnQqMyxHdCksQz1hLm5vcm1hbGl6ZShhLnN1YnRyYWN0KHh0LEd0LEMpLEMpLFdyKE0sUyxDLHZvaWQgMCxGLGUpLEYtPTM7cnQ9YS5mcm9tQXJyYXkoTyxSdCozLHJ0KSx4dD1hLnN1YnRyYWN0KGEuZnJvbUFycmF5KE8sZHQqMyx4dCkscnQseHQpLEd0PWEuc3VidHJhY3QoYS5mcm9tQXJyYXkoTywoZHQtb3QpKjMsR3QpLHJ0LEd0KSxDPWEubm9ybWFsaXplKGEuYWRkKHh0LEd0LEMpLEMpLFdyKE0sUyxDLE4sdm9pZCAwLGUpLE4rPTN9ZWxzZXtmb3IoV3IoTSxTLEMsTix2b2lkIDAsZSksTis9MyxSdD1CLGR0PUEsb3Q9MDtvdDxndC5sZW5ndGgvMztvdCsrKXJ0PWEuZnJvbUFycmF5KGd0LG90KjMscnQpLGtbcSsrXT1SdCxrW3ErK109ZHQrb3Qsa1txKytdPWR0K290KzEsS2UuYWRkQXR0cmlidXRlKE8scnQsTikseHQ9YS5mcm9tQXJyYXkoTyxSdCozLHh0KSxHdD1hLmZyb21BcnJheShPLChkdCtvdCkqMyxHdCksQz1hLm5vcm1hbGl6ZShhLnN1YnRyYWN0KHh0LEd0LEMpLEMpLFdyKE0sUyxDLE4sdm9pZCAwLGUpLE4rPTM7cnQ9YS5mcm9tQXJyYXkoTyxSdCozLHJ0KSx4dD1hLnN1YnRyYWN0KGEuZnJvbUFycmF5KE8sKGR0K290KSozLHh0KSxydCx4dCksR3Q9YS5zdWJ0cmFjdChhLmZyb21BcnJheShPLGR0KjMsR3QpLHJ0LEd0KSxDPWEubm9ybWFsaXplKGEubmVnYXRlKGEuYWRkKEd0LHh0LEMpLEMpLEMpLFdyKE0sUyxDLHZvaWQgMCxGLGUpLEYtPTN9Zm9yKG50PW9bVysrXSxhdD1vW1crK10sbnQuc3BsaWNlKDAsMyksYXQuc3BsaWNlKGF0Lmxlbmd0aC0zLDMpLE8uc2V0KG50LE4pLE8uc2V0KGF0LEYtYXQubGVuZ3RoKzEpLF89YXQubGVuZ3RoLTMsUis9MyxDPWEuZnJvbUFycmF5KHMsUixDKSxvdD0wO290PGF0Lmxlbmd0aDtvdCs9MylsdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShudCxvdCx5cykseXMpLF90PW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEuZnJvbUFycmF5KGF0LF8tb3Qsd2EpLHdhKSxTPWEubm9ybWFsaXplKGEuYWRkKGx0LF90LFMpLFMpLFdyKE0sUyxDLE4sRixlKSxBPU4vMyx2PUEtMSxCPShGLTIpLzMsST1CKzEsa1txKytdPUksa1txKytdPXYsa1txKytdPUIsa1txKytdPUIsa1txKytdPXYsa1txKytdPUEsTis9MyxGLT0zO04tPTMsRis9M31pZihTPWEuZnJvbUFycmF5KGYsZi5sZW5ndGgtMyxTKSxXcihNLFMsQyxOLEYsZSksZyl7Tis9MyxGLT0zLHo9QWQsTD1iZDtsZXQgb3Q9aVsxXTtmb3IoZD0wO2Q8ajtkKyspej1hLmZyb21BcnJheShvdCwoYi1kLTEpKjMseiksTD1hLmZyb21BcnJheShvdCxkKjMsTCksS2UuYWRkQXR0cmlidXRlKE8seix2b2lkIDAsRiksS2UuYWRkQXR0cmlidXRlKE8sTCxOKSxXcihNLFMsQyxOLEYsZSksQT1OLzMsdj1BLTEsQj0oRi0yKS8zLEk9QisxLGtbcSsrXT1JLGtbcSsrXT12LGtbcSsrXT1CLGtbcSsrXT1CLGtbcSsrXT12LGtbcSsrXT1BLE4rPTMsRi09M31pZih1LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pLGUuc3Qpe2xldCBvdD1uZXcgRmxvYXQzMkFycmF5KHcvMyoyKSxQdCxndCxSdD0wO2lmKGcpe2wvPTMscC89MztsZXQgZHQ9TWF0aC5QSS8oYisxKTtndD0xLyhsLWIrMSksUHQ9MS8ocC1iKzEpO2xldCBydCx4dD1iLzI7Zm9yKGQ9eHQrMTtkPGIrMTtkKyspcnQ9UC5QSV9PVkVSX1RXTytkdCpkLG90W1J0KytdPVB0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD0xO2Q8cC1iKzE7ZCsrKW90W1J0KytdPWQqUHQsb3RbUnQrK109MDtmb3IoZD1iO2Q+eHQ7ZC0tKXJ0PVAuUElfT1ZFUl9UV08tZCpkdCxvdFtSdCsrXT0xLVB0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD14dDtkPjA7ZC0tKXJ0PVAuUElfT1ZFUl9UV08tZHQqZCxvdFtSdCsrXT0xLWd0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD1sLWI7ZD4wO2QtLSlvdFtSdCsrXT1kKmd0LG90W1J0KytdPTE7Zm9yKGQ9MTtkPHh0KzE7ZCsrKXJ0PVAuUElfT1ZFUl9UV08rZHQqZCxvdFtSdCsrXT1ndCooMStNYXRoLmNvcyhydCkpLG90W1J0KytdPS41KigxK01hdGguc2luKHJ0KSl9ZWxzZXtmb3IobC89MyxwLz0zLGd0PTEvKGwtMSksUHQ9MS8ocC0xKSxkPTA7ZDxwO2QrKylvdFtSdCsrXT1kKlB0LG90W1J0KytdPTA7Zm9yKGQ9bDtkPjA7ZC0tKW90W1J0KytdPShkLTEpKmd0LG90W1J0KytdPTF9dS5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6b3R9KX1yZXR1cm4gZS5ub3JtYWwmJih1Lm5vcm1hbD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6TS5ub3JtYWxzfSkpLGUudGFuZ2VudCYmKHUudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6TS50YW5nZW50c30pKSxlLmJpdGFuZ2VudCYmKHUuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpNLmJpdGFuZ2VudHN9KSkse2F0dHJpYnV0ZXM6dSxpbmRpY2VzOmt9fWZ1bmN0aW9uIGdGKHQsZSl7aWYoIWUubm9ybWFsJiYhZS50YW5nZW50JiYhZS5iaXRhbmdlbnQmJiFlLnN0KXJldHVybiB0O2xldCBuPXQucG9zaXRpb24udmFsdWVzLG8scjsoZS5ub3JtYWx8fGUuYml0YW5nZW50KSYmKG89dC5ub3JtYWwudmFsdWVzLHI9dC5iaXRhbmdlbnQudmFsdWVzKTtsZXQgaT10LnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMTgscz1pKjMsZj1pKjIsdT1zKjIsYztpZihlLm5vcm1hbHx8ZS5iaXRhbmdlbnR8fGUudGFuZ2VudCl7bGV0IGw9ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShzKjYpOnZvaWQgMCxwPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMqNik6dm9pZCAwLGQ9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShzKjYpOnZvaWQgMCxoPWZPLF89dU8sZz1BZCxiPWJkLHc9eUYsTz1sTyxFPXU7Zm9yKGM9MDtjPHM7Yys9Myl7bGV0IFQ9RSt1O2g9YS5mcm9tQXJyYXkobixjLGgpLF89YS5mcm9tQXJyYXkobixjK3MsXyksZz1hLmZyb21BcnJheShuLChjKzMpJXMsZyksXz1hLnN1YnRyYWN0KF8saCxfKSxnPWEuc3VidHJhY3QoZyxoLGcpLGI9YS5ub3JtYWxpemUoYS5jcm9zcyhfLGcsYiksYiksZS5ub3JtYWwmJihLZS5hZGRBdHRyaWJ1dGUobCxiLFQpLEtlLmFkZEF0dHJpYnV0ZShsLGIsVCszKSxLZS5hZGRBdHRyaWJ1dGUobCxiLEUpLEtlLmFkZEF0dHJpYnV0ZShsLGIsRSszKSksKGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYoTz1hLmZyb21BcnJheShvLGMsTyksZS5iaXRhbmdlbnQmJihLZS5hZGRBdHRyaWJ1dGUoZCxPLFQpLEtlLmFkZEF0dHJpYnV0ZShkLE8sVCszKSxLZS5hZGRBdHRyaWJ1dGUoZCxPLEUpLEtlLmFkZEF0dHJpYnV0ZShkLE8sRSszKSksZS50YW5nZW50JiYodz1hLm5vcm1hbGl6ZShhLmNyb3NzKE8sYix3KSx3KSxLZS5hZGRBdHRyaWJ1dGUocCx3LFQpLEtlLmFkZEF0dHJpYnV0ZShwLHcsVCszKSxLZS5hZGRBdHRyaWJ1dGUocCx3LEUpLEtlLmFkZEF0dHJpYnV0ZShwLHcsRSszKSkpLEUrPTZ9aWYoZS5ub3JtYWwpe2ZvcihsLnNldChvKSxjPTA7YzxzO2MrPTMpbFtjK3NdPS1vW2NdLGxbYytzKzFdPS1vW2MrMV0sbFtjK3MrMl09LW9bYysyXTt0Lm5vcm1hbC52YWx1ZXM9bH1lbHNlIHQubm9ybWFsPXZvaWQgMDtpZihlLmJpdGFuZ2VudD8oZC5zZXQociksZC5zZXQocixzKSx0LmJpdGFuZ2VudC52YWx1ZXM9ZCk6dC5iaXRhbmdlbnQ9dm9pZCAwLGUudGFuZ2VudCl7bGV0IFQ9dC50YW5nZW50LnZhbHVlcztwLnNldChUKSxwLnNldChULHMpLHQudGFuZ2VudC52YWx1ZXM9cH19aWYoZS5zdCl7bGV0IGw9dC5zdC52YWx1ZXMscD1uZXcgRmxvYXQzMkFycmF5KGYqNik7cC5zZXQobCkscC5zZXQobCxmKTtsZXQgZD1mKjI7Zm9yKGxldCBoPTA7aDwyO2grKyl7Zm9yKHBbZCsrXT1sWzBdLHBbZCsrXT1sWzFdLGM9MjtjPGY7Yys9Mil7bGV0IF89bFtjXSxnPWxbYysxXTtwW2QrK109XyxwW2QrK109ZyxwW2QrK109XyxwW2QrK109Z31wW2QrK109bFswXSxwW2QrK109bFsxXX10LnN0LnZhbHVlcz1wfXJldHVybiB0fWZ1bmN0aW9uIGlfKHQsZSxuKXtuW2UrK109dFswXSxuW2UrK109dFsxXSxuW2UrK109dFsyXTtmb3IobGV0IG89MztvPHQubGVuZ3RoO28rPTMpe2xldCByPXRbb10saT10W28rMV0scz10W28rMl07bltlKytdPXIsbltlKytdPWksbltlKytdPXMsbltlKytdPXIsbltlKytdPWksbltlKytdPXN9cmV0dXJuIG5bZSsrXT10WzBdLG5bZSsrXT10WzFdLG5bZSsrXT10WzJdLG59ZnVuY3Rpb24gQUYodCxlKXtsZXQgbj1uZXcgcHQoe3Bvc2l0aW9uOmUucG9zaXRpb24sbm9ybWFsOmUubm9ybWFsfHxlLmJpdGFuZ2VudHx8dC5zaGFkb3dWb2x1bWUsdGFuZ2VudDplLnRhbmdlbnQsYml0YW5nZW50OmUubm9ybWFsfHxlLmJpdGFuZ2VudCxzdDplLnN0fSksbz10LmVsbGlwc29pZCxyPUtlLmNvbXB1dGVQb3NpdGlvbnModCksaT1kTyhyLG4sbykscz10LmhlaWdodCxmPXQuZXh0cnVkZWRIZWlnaHQsdT1pLmF0dHJpYnV0ZXMsYz1pLmluZGljZXMsbD11LnBvc2l0aW9uLnZhbHVlcyxwPWwubGVuZ3RoLGQ9bmV3IEZsb2F0NjRBcnJheShwKjYpLGg9bmV3IEZsb2F0NjRBcnJheShwKTtoLnNldChsKTtsZXQgXz1uZXcgRmxvYXQ2NEFycmF5KHAqNCk7bD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQobCxzLG8pLF89aV8obCwwLF8pLGg9UGUuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGgsZixvKSxfPWlfKGgscCoyLF8pLGQuc2V0KGwpLGQuc2V0KGgscCksZC5zZXQoXyxwKjIpLHUucG9zaXRpb24udmFsdWVzPWQsdT1nRih1LGUpO2xldCBnLGI9cC8zO2lmKHQuc2hhZG93Vm9sdW1lKXtsZXQgST11Lm5vcm1hbC52YWx1ZXM7cD1JLmxlbmd0aDtsZXQgdj1uZXcgRmxvYXQzMkFycmF5KHAqNik7Zm9yKGc9MDtnPHA7ZysrKUlbZ109LUlbZ107di5zZXQoSSxwKSx2PWlfKEkscCo0LHYpLHUuZXh0cnVkZURpcmVjdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dn0pLGUubm9ybWFsfHwodS5ub3JtYWw9dm9pZCAwKX1pZihtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IEk9bmV3IFVpbnQ4QXJyYXkoYio2KTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUClJPUkuZmlsbCgxLDAsYikuZmlsbCgxLGIqMixiKjQpO2Vsc2V7bGV0IHY9dC5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtJPUkuZmlsbCh2KX11LmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkl9KX1sZXQgdz1jLmxlbmd0aCxPPWIrYixFPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZC5sZW5ndGgvMyx3KjIrTyozKTtFLnNldChjKTtsZXQgVD13O2ZvcihnPTA7Zzx3O2crPTMpe2xldCBJPWNbZ10sdj1jW2crMV0sQj1jW2crMl07RVtUKytdPUIrYixFW1QrK109ditiLEVbVCsrXT1JK2J9bGV0IHgsTSxOLEY7Zm9yKGc9MDtnPE87Zys9Mil4PWcrTyxNPXgrTyxOPXgrMSxGPU0rMSxFW1QrK109eCxFW1QrK109TSxFW1QrK109TixFW1QrK109TixFW1QrK109TSxFW1QrK109RjtyZXR1cm57YXR0cmlidXRlczp1LGluZGljZXM6RX19ZnVuY3Rpb24gYU8odCxlLG4sbyxyLGkpe2xldCBzPWEuc3VidHJhY3QoZSx0LGNPKTthLm5vcm1hbGl6ZShzLHMpO2xldCBmPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsemYpLHU9YS5jcm9zcyhzLGYsY08pO2EubXVsdGlwbHlCeVNjYWxhcih1LG8sdSk7bGV0IGM9ci5sYXRpdHVkZSxsPXIubG9uZ2l0dWRlLHA9aS5sYXRpdHVkZSxkPWkubG9uZ2l0dWRlO2EuYWRkKHQsdSx6Ziksbi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh6ZixPcik7bGV0IGg9T3IubGF0aXR1ZGUsXz1Pci5sb25naXR1ZGU7Yz1NYXRoLm1pbihjLGgpLGw9TWF0aC5taW4obCxfKSxwPU1hdGgubWF4KHAsaCksZD1NYXRoLm1heChkLF8pLGEuc3VidHJhY3QodCx1LHpmKSxuLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHpmLE9yKSxoPU9yLmxhdGl0dWRlLF89T3IubG9uZ2l0dWRlLGM9TWF0aC5taW4oYyxoKSxsPU1hdGgubWluKGwsXykscD1NYXRoLm1heChwLGgpLGQ9TWF0aC5tYXgoZCxfKSxyLmxhdGl0dWRlPWMsci5sb25naXR1ZGU9bCxpLmxhdGl0dWRlPXAsaS5sb25naXR1ZGU9ZH1mdW5jdGlvbiBtTyh0LGUsbixvLHIpe3Q9cE8odCxlKTtsZXQgaT1Dbih0LGEuZXF1YWxzRXBzaWxvbikscz1pLmxlbmd0aDtpZihzPDJ8fG48PTApcmV0dXJuIG5ldyBOdDtsZXQgZj1uKi41O3RyLmxhdGl0dWRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx0ci5sb25naXR1ZGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGVyLmxhdGl0dWRlPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxlci5sb25naXR1ZGU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCB1LGM7aWYobz09PWZuLlJPVU5ERUQpe2xldCBkPWlbMF07YS5zdWJ0cmFjdChkLGlbMV0sVHIpLGEubm9ybWFsaXplKFRyLFRyKSxhLm11bHRpcGx5QnlTY2FsYXIoVHIsZixUciksYS5hZGQoZCxUcixqZiksZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhqZixPciksdT1Pci5sYXRpdHVkZSxjPU9yLmxvbmdpdHVkZSx0ci5sYXRpdHVkZT1NYXRoLm1pbih0ci5sYXRpdHVkZSx1KSx0ci5sb25naXR1ZGU9TWF0aC5taW4odHIubG9uZ2l0dWRlLGMpLGVyLmxhdGl0dWRlPU1hdGgubWF4KGVyLmxhdGl0dWRlLHUpLGVyLmxvbmdpdHVkZT1NYXRoLm1heChlci5sb25naXR1ZGUsYyl9Zm9yKGxldCBkPTA7ZDxzLTE7KytkKWFPKGlbZF0saVtkKzFdLGUsZix0cixlcik7bGV0IGw9aVtzLTFdO2Euc3VidHJhY3QobCxpW3MtMl0sVHIpLGEubm9ybWFsaXplKFRyLFRyKSxhLm11bHRpcGx5QnlTY2FsYXIoVHIsZixUciksYS5hZGQobCxUcixqZiksYU8obCxqZixlLGYsdHIsZXIpLG89PT1mbi5ST1VOREVEJiYoZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhqZixPciksdT1Pci5sYXRpdHVkZSxjPU9yLmxvbmdpdHVkZSx0ci5sYXRpdHVkZT1NYXRoLm1pbih0ci5sYXRpdHVkZSx1KSx0ci5sb25naXR1ZGU9TWF0aC5taW4odHIubG9uZ2l0dWRlLGMpLGVyLmxhdGl0dWRlPU1hdGgubWF4KGVyLmxhdGl0dWRlLHUpLGVyLmxvbmdpdHVkZT1NYXRoLm1heChlci5sb25naXR1ZGUsYykpO2xldCBwPW0ocik/cjpuZXcgTnQ7cmV0dXJuIHAubm9ydGg9ZXIubGF0aXR1ZGUscC5zb3V0aD10ci5sYXRpdHVkZSxwLmVhc3Q9ZXIubG9uZ2l0dWRlLHAud2VzdD10ci5sb25naXR1ZGUscH1mdW5jdGlvbiBWaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQud2lkdGg7eS5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsZSkseS5kZWZpbmVkKCJvcHRpb25zLndpZHRoIixuKTtsZXQgbz10LmhlaWdodD8/MCxyPXQuZXh0cnVkZWRIZWlnaHQ/P287dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCksdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHQudmVydGV4Rm9ybWF0Pz9wdC5ERUZBVUxUKSx0aGlzLl93aWR0aD1uLHRoaXMuX2hlaWdodD1NYXRoLm1heChvLHIpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG8sciksdGhpcy5fY29ybmVyVHlwZT10LmNvcm5lclR5cGU/P2ZuLlJPVU5ERUQsdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3JyaWRvckdlb21ldHJ5Iix0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLnBhY2tlZExlbmd0aD0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs3fXZhciBmTyx1TyxBZCxiZCx5RixsTyx5cyx3YSxjTyx6ZixPcixUcixqZix0cixlcixoTyxfTyxHaSxzXyx5Tz0kKCgpPT57SHIoKTt2ZSgpO0R0KCk7SWUoKTtXdCgpO0RlKCk7X2MoKTtyXygpO3llKCk7ZnQoKTskdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO0tyKCk7dG4oKTtUbigpO3hvKCk7Zk89bmV3IGEsdU89bmV3IGEsQWQ9bmV3IGEsYmQ9bmV3IGEseUY9bmV3IGEsbE89bmV3IGEseXM9bmV3IGEsd2E9bmV3IGE7Y089bmV3IGEsemY9bmV3IGEsT3I9bmV3IGN0O1RyPW5ldyBhLGpmPW5ldyBhLHRyPW5ldyBjdCxlcj1uZXcgY3Q7VmkucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wO2xldCBvPXQuX3Bvc2l0aW9ucyxyPW8ubGVuZ3RoO2VbbisrXT1yO2ZvcihsZXQgaT0wO2k8cjsrK2ksbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKG9baV0sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fY29ybmVyVHlwZSxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O2hPPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksX089bmV3IHB0LEdpPXtwb3NpdGlvbnM6dm9pZCAwLGVsbGlwc29pZDpoTyx2ZXJ0ZXhGb3JtYXQ6X08sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGNvcm5lclR5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxzaGFkb3dWb2x1bWU6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O1ZpLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPXRbZSsrXSxyPW5ldyBBcnJheShvKTtmb3IobGV0IF89MDtfPG87KytfLGUrPWEucGFja2VkTGVuZ3RoKXJbX109YS51bnBhY2sodCxlKTtsZXQgaT1ZLnVucGFjayh0LGUsaE8pO2UrPVkucGFja2VkTGVuZ3RoO2xldCBzPXB0LnVucGFjayh0LGUsX08pO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2UrK109PT0xLGg9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPXIsbi5fZWxsaXBzb2lkPVkuY2xvbmUoaSxuLl9lbGxpcHNvaWQpLG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShzLG4uX3ZlcnRleEZvcm1hdCksbi5fd2lkdGg9ZixuLl9oZWlnaHQ9dSxuLl9leHRydWRlZEhlaWdodD1jLG4uX2Nvcm5lclR5cGU9bCxuLl9ncmFudWxhcml0eT1wLG4uX3NoYWRvd1ZvbHVtZT1kLG4uX29mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsbik6KEdpLnBvc2l0aW9ucz1yLEdpLndpZHRoPWYsR2kuaGVpZ2h0PXUsR2kuZXh0cnVkZWRIZWlnaHQ9YyxHaS5jb3JuZXJUeXBlPWwsR2kuZ3JhbnVsYXJpdHk9cCxHaS5zaGFkb3dWb2x1bWU9ZCxHaS5vZmZzZXRBdHRyaWJ1dGU9aD09PS0xP3ZvaWQgMDpoLG5ldyBWaShHaSkpfTtWaS5jb21wdXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IG49dC5wb3NpdGlvbnMsbz10LndpZHRoO3kuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLG4pLHkuZGVmaW5lZCgib3B0aW9ucy53aWR0aCIsbyk7bGV0IHI9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCxpPXQuY29ybmVyVHlwZT8/Zm4uUk9VTkRFRDtyZXR1cm4gbU8obixyLG8saSxlKX07VmkuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fd2lkdGgsbz10Ll9lbGxpcHNvaWQ7ZT1wTyhlLG8pO2xldCByPUNuKGUsYS5lcXVhbHNFcHNpbG9uKTtpZihyLmxlbmd0aDwyfHxuPD0wKXJldHVybjtsZXQgaT10Ll9oZWlnaHQscz10Ll9leHRydWRlZEhlaWdodCxmPSFQLmVxdWFsc0Vwc2lsb24oaSxzLDAsUC5FUFNJTE9OMiksdT10Ll92ZXJ0ZXhGb3JtYXQsYz17ZWxsaXBzb2lkOm8scG9zaXRpb25zOnIsd2lkdGg6bixjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksc2F2ZUF0dHJpYnV0ZXM6ITB9LGw7aWYoZiljLmhlaWdodD1pLGMuZXh0cnVkZWRIZWlnaHQ9cyxjLnNoYWRvd1ZvbHVtZT10Ll9zaGFkb3dWb2x1bWUsYy5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLGw9QUYoYyx1KTtlbHNle2xldCBoPUtlLmNvbXB1dGVQb3NpdGlvbnMoYyk7aWYobD1kTyhoLHUsbyksbC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQobC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxpLG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IF89dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsZz1sLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxiPW5ldyBVaW50OEFycmF5KGcvMykuZmlsbChfKTtsLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Yn0pfX1sZXQgcD1sLmF0dHJpYnV0ZXMsZD1BdC5mcm9tVmVydGljZXMocC5wb3NpdGlvbi52YWx1ZXMsdm9pZCAwLDMpO3JldHVybiB1LnBvc2l0aW9ufHwobC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz12b2lkIDApLG5ldyBVdCh7YXR0cmlidXRlczpwLGluZGljZXM6bC5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOmQsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtWaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2dyYW51bGFyaXR5LHI9dC5fZWxsaXBzb2lkLGk9ZShvLHIpLHM9bihvLHIpO3JldHVybiBuZXcgVmkoe3Bvc2l0aW9uczp0Ll9wb3NpdGlvbnMsd2lkdGg6dC5fd2lkdGgsY29ybmVyVHlwZTp0Ll9jb3JuZXJUeXBlLGVsbGlwc29pZDpyLGdyYW51bGFyaXR5Om8sZXh0cnVkZWRIZWlnaHQ6aSxoZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVmkucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JlY3RhbmdsZSl8fCh0aGlzLl9yZWN0YW5nbGU9bU8odGhpcy5fcG9zaXRpb25zLHRoaXMuX2VsbGlwc29pZCx0aGlzLl93aWR0aCx0aGlzLl9jb3JuZXJUeXBlKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuWzAsMCwwLDEsMSwwXX19fSk7c189Vml9KTt2YXIgY189e307bGUoY18se2RlZmF1bHQ6KCk9PndGfSk7ZnVuY3Rpb24gYkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9c18udW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksc18uY3JlYXRlR2VvbWV0cnkodCl9dmFyIHdGLGFfPSQoKCk9Pnt5TygpO2Z0KCk7JHQoKTt3Rj1iRn0pO2Z1bmN0aW9uIE9GKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtuXSx0W25dKTtyZXR1cm4gdH1mdW5jdGlvbiBiTyh0LGUpe2xldCBuPVtdLG89dC5wb3NpdGlvbnMscj10LmNvcm5lcnMsaT10LmVuZFBvc2l0aW9ucyxzPW5ldyBpZSxmLHU9MCxjPTAsbCxwPTAsZDtmb3IobD0wO2w8by5sZW5ndGg7bCs9MilkPW9bbF0ubGVuZ3RoLTMsdSs9ZCxwKz1kLzMqNCxjKz1vW2wrMV0ubGVuZ3RoLTM7Zm9yKHUrPTMsYys9MyxsPTA7bDxyLmxlbmd0aDtsKyspe2Y9cltsXTtsZXQgTD1yW2xdLmxlZnRQb3NpdGlvbnM7bShMKT8oZD1MLmxlbmd0aCx1Kz1kLHArPWQvMyoyKTooZD1yW2xdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxjKz1kLHArPWQvMyoyKX1sZXQgaD1tKGkpLF87aCYmKF89aVswXS5sZW5ndGgtMyx1Kz1fLGMrPV8sXy89MyxwKz1fKjQpO2xldCBnPXUrYyxiPW5ldyBGbG9hdDY0QXJyYXkoZyksdz0wLE89Zy0xLEUsVCx4LE0sTixGLEk9Xy8yLHY9THQuY3JlYXRlVHlwZWRBcnJheShnLzMscCs0KSxCPTA7aWYodltCKytdPXcvMyx2W0IrK109KE8tMikvMyxoKXtuLnB1c2gody8zKSxGPWdPLE49QU87bGV0IEw9aVswXTtmb3IobD0wO2w8STtsKyspRj1hLmZyb21BcnJheShMLChJLTEtbCkqMyxGKSxOPWEuZnJvbUFycmF5KEwsKEkrbCkqMyxOKSxLZS5hZGRBdHRyaWJ1dGUoYixOLHcpLEtlLmFkZEF0dHJpYnV0ZShiLEYsdm9pZCAwLE8pLFQ9dy8zLE09VCsxLEU9KE8tMikvMyx4PUUtMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTN9bGV0IEE9MCxTPW9bQSsrXSxDPW9bQSsrXTtmb3IoYi5zZXQoUyx3KSxiLnNldChDLE8tQy5sZW5ndGgrMSksZD1DLmxlbmd0aC0zLG4ucHVzaCh3LzMsKE8tMikvMyksbD0wO2w8ZDtsKz0zKVQ9dy8zLE09VCsxLEU9KE8tMikvMyx4PUUtMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTM7Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bGV0IEw7Zj1yW2xdO2xldCB6PWYubGVmdFBvc2l0aW9ucyxqPWYucmlnaHRQb3NpdGlvbnMsayxxPVRGO2lmKG0oeikpe2ZvcihPLT0zLGs9eCxuLnB1c2goTSksTD0wO0w8ei5sZW5ndGgvMztMKyspcT1hLmZyb21BcnJheSh6LEwqMyxxKSx2W0IrK109ay1MLTEsdltCKytdPWstTCxLZS5hZGRBdHRyaWJ1dGUoYixxLHZvaWQgMCxPKSxPLT0zO24ucHVzaChrLU1hdGguZmxvb3Ioei5sZW5ndGgvNikpLGU9PT1mbi5CRVZFTEVEJiZuLnB1c2goKE8tMikvMysxKSx3Kz0zfWVsc2V7Zm9yKHcrPTMsaz1NLG4ucHVzaCh4KSxMPTA7TDxqLmxlbmd0aC8zO0wrKylxPWEuZnJvbUFycmF5KGosTCozLHEpLHZbQisrXT1rK0wsdltCKytdPWsrTCsxLEtlLmFkZEF0dHJpYnV0ZShiLHEsdyksdys9MztuLnB1c2goaytNYXRoLmZsb29yKGoubGVuZ3RoLzYpKSxlPT09Zm4uQkVWRUxFRCYmbi5wdXNoKHcvMy0xKSxPLT0zfWZvcihTPW9bQSsrXSxDPW9bQSsrXSxTLnNwbGljZSgwLDMpLEMuc3BsaWNlKEMubGVuZ3RoLTMsMyksYi5zZXQoUyx3KSxiLnNldChDLE8tQy5sZW5ndGgrMSksZD1DLmxlbmd0aC0zLEw9MDtMPEMubGVuZ3RoO0wrPTMpTT13LzMsVD1NLTEseD0oTy0yKS8zLEU9eCsxLHZbQisrXT1FLHZbQisrXT14LHZbQisrXT1ULHZbQisrXT1NLHcrPTMsTy09Mzt3LT0zLE8rPTMsbi5wdXNoKHcvMywoTy0yKS8zKX1pZihoKXt3Kz0zLE8tPTMsRj1nTyxOPUFPO2xldCBMPWlbMV07Zm9yKGw9MDtsPEk7bCsrKUY9YS5mcm9tQXJyYXkoTCwoXy1sLTEpKjMsRiksTj1hLmZyb21BcnJheShMLGwqMyxOKSxLZS5hZGRBdHRyaWJ1dGUoYixGLHZvaWQgMCxPKSxLZS5hZGRBdHRyaWJ1dGUoYixOLHcpLE09dy8zLFQ9TS0xLHg9KE8tMikvMyxFPXgrMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTM7bi5wdXNoKHcvMyl9ZWxzZSBuLnB1c2gody8zLChPLTIpLzMpO3JldHVybiB2W0IrK109dy8zLHZbQisrXT0oTy0yKS8zLHMucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpifSkse2F0dHJpYnV0ZXM6cyxpbmRpY2VzOnYsd2FsbEluZGljZXM6bn19ZnVuY3Rpb24gRUYodCl7bGV0IGU9dC5lbGxpcHNvaWQsbj1LZS5jb21wdXRlUG9zaXRpb25zKHQpLG89Yk8obix0LmNvcm5lclR5cGUpLHI9by53YWxsSW5kaWNlcyxpPXQuaGVpZ2h0LHM9dC5leHRydWRlZEhlaWdodCxmPW8uYXR0cmlidXRlcyx1PW8uaW5kaWNlcyxjPWYucG9zaXRpb24udmFsdWVzLGw9Yy5sZW5ndGgscD1uZXcgRmxvYXQ2NEFycmF5KGwpO3Auc2V0KGMpO2xldCBkPW5ldyBGbG9hdDY0QXJyYXkobCoyKTtpZihjPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChjLGksZSkscD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQocCxzLGUpLGQuc2V0KGMpLGQuc2V0KHAsbCksZi5wb3NpdGlvbi52YWx1ZXM9ZCxsLz0zLG0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgRT1uZXcgVWludDhBcnJheShsKjIpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKUU9RS5maWxsKDEsMCxsKTtlbHNle2xldCBUPXQub2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjE7RT1FLmZpbGwoVCl9Zi5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpFfSl9bGV0IGgsXz11Lmxlbmd0aCxnPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZC5sZW5ndGgvMywoXytyLmxlbmd0aCkqMik7Zy5zZXQodSk7bGV0IGI9Xztmb3IoaD0wO2g8XztoKz0yKXtsZXQgRT11W2hdLFQ9dVtoKzFdO2dbYisrXT1FK2wsZ1tiKytdPVQrbH1sZXQgdyxPO2ZvcihoPTA7aDxyLmxlbmd0aDtoKyspdz1yW2hdLE89dytsLGdbYisrXT13LGdbYisrXT1PO3JldHVybnthdHRyaWJ1dGVzOmYsaW5kaWNlczpnfX1mdW5jdGlvbiBIZih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQud2lkdGg7eS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLnBvc2l0aW9ucyIsZSkseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLndpZHRoIixuKTtsZXQgbz10LmhlaWdodD8/MCxyPXQuZXh0cnVkZWRIZWlnaHQ/P287dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCksdGhpcy5fd2lkdGg9bix0aGlzLl9oZWlnaHQ9TWF0aC5tYXgobyxyKSx0aGlzLl9leHRydWRlZEhlaWdodD1NYXRoLm1pbihvLHIpLHRoaXMuX2Nvcm5lclR5cGU9dC5jb3JuZXJUeXBlPz9mbi5ST1VOREVELHRoaXMuX2dyYW51bGFyaXR5PXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeSIsdGhpcy5wYWNrZWRMZW5ndGg9MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aCtZLnBhY2tlZExlbmd0aCs2fXZhciBnTyxBTyxURix3TyxncyxmXyxUTz0kKCgpPT57SHIoKTt2ZSgpO0R0KCk7V3QoKTtEZSgpO19jKCk7cl8oKTt5ZSgpO2Z0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTtLcigpO3RuKCk7Z089bmV3IGEsQU89bmV3IGEsVEY9bmV3IGE7SGYucGFjaz1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS50eXBlT2Yub2JqZWN0KCJhcnJheSIsZSksbj1uPz8wO2xldCBvPXQuX3Bvc2l0aW9ucyxyPW8ubGVuZ3RoO2VbbisrXT1yO2ZvcihsZXQgaT0wO2k8cjsrK2ksbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKG9baV0sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fY29ybmVyVHlwZSxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O3dPPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksZ3M9e3Bvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOndPLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07SGYudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89dFtlKytdLHI9bmV3IEFycmF5KG8pO2ZvcihsZXQgZD0wO2Q8bzsrK2QsZSs9YS5wYWNrZWRMZW5ndGgpcltkXT1hLnVucGFjayh0LGUpO2xldCBpPVkudW5wYWNrKHQsZSx3Tyk7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPXIsbi5fZWxsaXBzb2lkPVkuY2xvbmUoaSxuLl9lbGxpcHNvaWQpLG4uX3dpZHRoPXMsbi5faGVpZ2h0PWYsbi5fZXh0cnVkZWRIZWlnaHQ9dSxuLl9jb3JuZXJUeXBlPWMsbi5fZ3JhbnVsYXJpdHk9bCxuLl9vZmZzZXRBdHRyaWJ1dGU9cD09PS0xP3ZvaWQgMDpwLG4pOihncy5wb3NpdGlvbnM9cixncy53aWR0aD1zLGdzLmhlaWdodD1mLGdzLmV4dHJ1ZGVkSGVpZ2h0PXUsZ3MuY29ybmVyVHlwZT1jLGdzLmdyYW51bGFyaXR5PWwsZ3Mub2Zmc2V0QXR0cmlidXRlPXA9PT0tMT92b2lkIDA6cCxuZXcgSGYoZ3MpKX07SGYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fd2lkdGgsbz10Ll9lbGxpcHNvaWQ7ZT1PRihlLG8pO2xldCByPUNuKGUsYS5lcXVhbHNFcHNpbG9uKTtpZihyLmxlbmd0aDwyfHxuPD0wKXJldHVybjtsZXQgaT10Ll9oZWlnaHQscz10Ll9leHRydWRlZEhlaWdodCxmPSFQLmVxdWFsc0Vwc2lsb24oaSxzLDAsUC5FUFNJTE9OMiksdT17ZWxsaXBzb2lkOm8scG9zaXRpb25zOnIsd2lkdGg6bixjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksc2F2ZUF0dHJpYnV0ZXM6ITF9LGM7aWYoZil1LmhlaWdodD1pLHUuZXh0cnVkZWRIZWlnaHQ9cyx1Lm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsYz1FRih1KTtlbHNle2xldCBkPUtlLmNvbXB1dGVQb3NpdGlvbnModSk7aWYoYz1iTyhkLHUuY29ybmVyVHlwZSksYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxpLG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGg9Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsXz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxnPW5ldyBVaW50OEFycmF5KGgvMykuZmlsbChfKTtjLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Z30pfX1sZXQgbD1jLmF0dHJpYnV0ZXMscD1BdC5mcm9tVmVydGljZXMobC5wb3NpdGlvbi52YWx1ZXMsdm9pZCAwLDMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6bCxpbmRpY2VzOmMuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOnAsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtmXz1IZn0pO3ZhciB1Xz17fTtsZSh1Xyx7ZGVmYXVsdDooKT0+U0Z9KTtmdW5jdGlvbiBSRih0LGUpe3JldHVybiBtKGUpJiYodD1mXy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxmXy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgU0YsbF89JCgoKT0+e1RPKCk7ZnQoKTskdCgpO1NGPVJGfSk7dmFyIE9PLHdkLHBfPSQoKCk9PntLdCgpO09PPXt9O09PLmNvbXB1dGVQb3NpdGlvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10Ki41LHM9LWksZj1vK28sdT1yPzIqZjpmLGM9bmV3IEZsb2F0NjRBcnJheSh1KjMpLGwscD0wLGQ9MCxoPXI/ZiozOjAsXz1yPyhmK28pKjM6byozO2ZvcihsPTA7bDxvO2wrKyl7bGV0IGc9bC9vKlAuVFdPX1BJLGI9TWF0aC5jb3MoZyksdz1NYXRoLnNpbihnKSxPPWIqbixFPXcqbixUPWIqZSx4PXcqZTtjW2QraF09TyxjW2QraCsxXT1FLGNbZCtoKzJdPXMsY1tkK19dPVQsY1tkK18rMV09eCxjW2QrXysyXT1pLGQrPTMsciYmKGNbcCsrXT1PLGNbcCsrXT1FLGNbcCsrXT1zLGNbcCsrXT1ULGNbcCsrXT14LGNbcCsrXT1pKX1yZXR1cm4gY307d2Q9T099KTtmdW5jdGlvbiB6aSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10Lmxlbmd0aCxuPXQudG9wUmFkaXVzLG89dC5ib3R0b21SYWRpdXMscj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxpPXQuc2xpY2VzPz8xMjg7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMubGVuZ3RoIG11c3QgYmUgZGVmaW5lZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgib3B0aW9ucy50b3BSYWRpdXMgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJvcHRpb25zLmJvdHRvbVJhZGl1cyBtdXN0IGJlIGRlZmluZWQuIik7aWYoaTwzKXRocm93IG5ldyBEKCJvcHRpb25zLnNsaWNlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAzLiIpO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl0aHJvdyBuZXcgRCgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9sZW5ndGg9ZSx0aGlzLl90b3BSYWRpdXM9bix0aGlzLl9ib3R0b21SYWRpdXM9byx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUociksdGhpcy5fc2xpY2VzPWksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUN5bGluZGVyR2VvbWV0cnkifXZhciBkXyx4RixDRixQRixNRixFTyxUYSxtXyxxZixoXz0kKCgpPT57dmUoKTtrZSgpO0R0KCk7RGUoKTtwXygpO3llKCk7ZnQoKTtIdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO3RuKCk7eG8oKTtkXz1uZXcgSix4Rj1uZXcgYSxDRj1uZXcgYSxQRj1uZXcgYSxNRj1uZXcgYTt6aS5wYWNrZWRMZW5ndGg9cHQucGFja2VkTGVuZ3RoKzU7emkucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fbGVuZ3RoLGVbbisrXT10Ll90b3BSYWRpdXMsZVtuKytdPXQuX2JvdHRvbVJhZGl1cyxlW24rK109dC5fc2xpY2VzLGVbbl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtFTz1uZXcgcHQsVGE9e3ZlcnRleEZvcm1hdDpFTyxsZW5ndGg6dm9pZCAwLHRvcFJhZGl1czp2b2lkIDAsYm90dG9tUmFkaXVzOnZvaWQgMCxzbGljZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O3ppLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPXB0LnVucGFjayh0LGUsRU8pO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10saT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2VdO3JldHVybiBtKG4pPyhuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUobyxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2xlbmd0aD1yLG4uX3RvcFJhZGl1cz1pLG4uX2JvdHRvbVJhZGl1cz1zLG4uX3NsaWNlcz1mLG4uX29mZnNldEF0dHJpYnV0ZT11PT09LTE/dm9pZCAwOnUsbik6KFRhLmxlbmd0aD1yLFRhLnRvcFJhZGl1cz1pLFRhLmJvdHRvbVJhZGl1cz1zLFRhLnNsaWNlcz1mLFRhLm9mZnNldEF0dHJpYnV0ZT11PT09LTE/dm9pZCAwOnUsbmV3IHppKFRhKSl9O3ppLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2xlbmd0aCxuPXQuX3RvcFJhZGl1cyxvPXQuX2JvdHRvbVJhZGl1cyxyPXQuX3ZlcnRleEZvcm1hdCxpPXQuX3NsaWNlcztpZihlPD0wfHxuPDB8fG88MHx8bj09PTAmJm89PT0wKXJldHVybjtsZXQgcz1pK2ksZj1pK3MsdT1zK3MsYz13ZC5jb21wdXRlUG9zaXRpb25zKGUsbixvLGksITApLGw9ci5zdD9uZXcgRmxvYXQzMkFycmF5KHUqMik6dm9pZCAwLHA9ci5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheSh1KjMpOnZvaWQgMCxkPXIudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHUqMyk6dm9pZCAwLGg9ci5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheSh1KjMpOnZvaWQgMCxfLGc9ci5ub3JtYWx8fHIudGFuZ2VudHx8ci5iaXRhbmdlbnQ7aWYoZyl7bGV0IE49ci50YW5nZW50fHxyLmJpdGFuZ2VudCxGPTAsST0wLHY9MCxCPU1hdGguYXRhbjIoby1uLGUpLEE9eEY7QS56PU1hdGguc2luKEIpO2xldCBTPU1hdGguY29zKEIpLEM9UEYsTD1DRjtmb3IoXz0wO188aTtfKyspe2xldCB6PV8vaSpQLlRXT19QSSxqPVMqTWF0aC5jb3Moeiksaz1TKk1hdGguc2luKHopO2cmJihBLng9aixBLnk9ayxOJiYoQz1hLm5vcm1hbGl6ZShhLmNyb3NzKGEuVU5JVF9aLEEsQyksQykpLHIubm9ybWFsJiYocFtGKytdPUEueCxwW0YrK109QS55LHBbRisrXT1BLnoscFtGKytdPUEueCxwW0YrK109QS55LHBbRisrXT1BLnopLHIudGFuZ2VudCYmKGRbSSsrXT1DLngsZFtJKytdPUMueSxkW0krK109Qy56LGRbSSsrXT1DLngsZFtJKytdPUMueSxkW0krK109Qy56KSxyLmJpdGFuZ2VudCYmKEw9YS5ub3JtYWxpemUoYS5jcm9zcyhBLEMsTCksTCksaFt2KytdPUwueCxoW3YrK109TC55LGhbdisrXT1MLnosaFt2KytdPUwueCxoW3YrK109TC55LGhbdisrXT1MLnopKX1mb3IoXz0wO188aTtfKyspci5ub3JtYWwmJihwW0YrK109MCxwW0YrK109MCxwW0YrK109LTEpLHIudGFuZ2VudCYmKGRbSSsrXT0xLGRbSSsrXT0wLGRbSSsrXT0wKSxyLmJpdGFuZ2VudCYmKGhbdisrXT0wLGhbdisrXT0tMSxoW3YrK109MCk7Zm9yKF89MDtfPGk7XysrKXIubm9ybWFsJiYocFtGKytdPTAscFtGKytdPTAscFtGKytdPTEpLHIudGFuZ2VudCYmKGRbSSsrXT0xLGRbSSsrXT0wLGRbSSsrXT0wKSxyLmJpdGFuZ2VudCYmKGhbdisrXT0wLGhbdisrXT0xLGhbdisrXT0wKX1sZXQgYj0xMippLTEyLHc9THQuY3JlYXRlVHlwZWRBcnJheSh1LGIpLE89MCxFPTA7Zm9yKF89MDtfPGktMTtfKyspd1tPKytdPUUsd1tPKytdPUUrMix3W08rK109RSszLHdbTysrXT1FLHdbTysrXT1FKzMsd1tPKytdPUUrMSxFKz0yO2Zvcih3W08rK109cy0yLHdbTysrXT0wLHdbTysrXT0xLHdbTysrXT1zLTIsd1tPKytdPTEsd1tPKytdPXMtMSxfPTE7XzxpLTE7XysrKXdbTysrXT1zK18rMSx3W08rK109cytfLHdbTysrXT1zO2ZvcihfPTE7XzxpLTE7XysrKXdbTysrXT1mLHdbTysrXT1mK18sd1tPKytdPWYrXysxO2xldCBUPTA7aWYoci5zdCl7bGV0IE49TWF0aC5tYXgobixvKTtmb3IoXz0wO188dTtfKyspe2xldCBGPWEuZnJvbUFycmF5KGMsXyozLE1GKTtsW1QrK109KEYueCtOKS8oMipOKSxsW1QrK109KEYueStOKS8oMipOKX19bGV0IHg9bmV3IGllO3IucG9zaXRpb24mJih4LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Y30pKSxyLm5vcm1hbCYmKHgubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpwfSkpLHIudGFuZ2VudCYmKHgudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZH0pKSxyLmJpdGFuZ2VudCYmKHguYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSkpLHIuc3QmJih4LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsfSkpLGRfLng9ZSouNSxkXy55PU1hdGgubWF4KG8sbik7bGV0IE09bmV3IEF0KGEuWkVSTyxKLm1hZ25pdHVkZShkXykpO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7ZT1jLmxlbmd0aDtsZXQgTj10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxGPW5ldyBVaW50OEFycmF5KGUvMykuZmlsbChOKTt4LmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkZ9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOngsaW5kaWNlczp3LHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOk0sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTt6aS5nZXRVbml0Q3lsaW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbShtXyl8fChtXz16aS5jcmVhdGVHZW9tZXRyeShuZXcgemkoe3RvcFJhZGl1czoxLGJvdHRvbVJhZGl1czoxLGxlbmd0aDoxLHZlcnRleEZvcm1hdDpwdC5QT1NJVElPTl9PTkxZfSkpKSxtX307cWY9eml9KTt2YXIgX189e307bGUoX18se2RlZmF1bHQ6KCk9PklGfSk7ZnVuY3Rpb24gTkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9cWYudW5wYWNrKHQsZSkpLHFmLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBJRix5Xz0kKCgpPT57aF8oKTtmdCgpO0lGPU5GfSk7ZnVuY3Rpb24gT2EodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5sZW5ndGgsbj10LnRvcFJhZGl1cyxvPXQuYm90dG9tUmFkaXVzLHI9dC5zbGljZXM/PzEyOCxpPU1hdGgubWF4KHQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPz8xNiwwKTtpZih5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMucG9zaXRpb25zIixlKSx5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMudG9wUmFkaXVzIixuKSx5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuYm90dG9tUmFkaXVzIixvKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygib3B0aW9ucy5zbGljZXMiLHIsMyksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX2xlbmd0aD1lLHRoaXMuX3RvcFJhZGl1cz1uLHRoaXMuX2JvdHRvbVJhZGl1cz1vLHRoaXMuX3NsaWNlcz1yLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz1pLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeSJ9dmFyIGdfLGdjLEFfLFJPPSQoKCk9Pnt2ZSgpO2tlKCk7RHQoKTtXdCgpO0RlKCk7cF8oKTt5ZSgpO2Z0KCk7SHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7dG4oKTtnXz1uZXcgSjtPYS5wYWNrZWRMZW5ndGg9NjtPYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10Ll9sZW5ndGgsZVtuKytdPXQuX3RvcFJhZGl1cyxlW24rK109dC5fYm90dG9tUmFkaXVzLGVbbisrXT10Ll9zbGljZXMsZVtuKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07Z2M9e2xlbmd0aDp2b2lkIDAsdG9wUmFkaXVzOnZvaWQgMCxib3R0b21SYWRpdXM6dm9pZCAwLHNsaWNlczp2b2lkIDAsbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtPYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scj10W2UrK10saT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2VdO3JldHVybiBtKG4pPyhuLl9sZW5ndGg9byxuLl90b3BSYWRpdXM9cixuLl9ib3R0b21SYWRpdXM9aSxuLl9zbGljZXM9cyxuLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixuLl9vZmZzZXRBdHRyaWJ1dGU9dT09PS0xP3ZvaWQgMDp1LG4pOihnYy5sZW5ndGg9byxnYy50b3BSYWRpdXM9cixnYy5ib3R0b21SYWRpdXM9aSxnYy5zbGljZXM9cyxnYy5udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixnYy5vZmZzZXRBdHRyaWJ1dGU9dT09PS0xP3ZvaWQgMDp1LG5ldyBPYShnYykpfTtPYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9sZW5ndGgsbj10Ll90b3BSYWRpdXMsbz10Ll9ib3R0b21SYWRpdXMscj10Ll9zbGljZXMsaT10Ll9udW1iZXJPZlZlcnRpY2FsTGluZXM7aWYoZTw9MHx8bjwwfHxvPDB8fG49PT0wJiZvPT09MClyZXR1cm47bGV0IHM9cioyLGY9d2QuY29tcHV0ZVBvc2l0aW9ucyhlLG4sbyxyLCExKSx1PXIqMixjO2lmKGk+MCl7bGV0IGc9TWF0aC5taW4oaSxyKTtjPU1hdGgucm91bmQoci9nKSx1Kz1nfWxldCBsPUx0LmNyZWF0ZVR5cGVkQXJyYXkocyx1KjIpLHA9MCxkO2ZvcihkPTA7ZDxyLTE7ZCsrKWxbcCsrXT1kLGxbcCsrXT1kKzEsbFtwKytdPWQrcixsW3ArK109ZCsxK3I7aWYobFtwKytdPXItMSxsW3ArK109MCxsW3ArK109cityLTEsbFtwKytdPXIsaT4wKWZvcihkPTA7ZDxyO2QrPWMpbFtwKytdPWQsbFtwKytdPWQrcjtsZXQgaD1uZXcgaWU7aC5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSxnXy54PWUqLjUsZ18ueT1NYXRoLm1heChvLG4pO2xldCBfPW5ldyBBdChhLlpFUk8sSi5tYWduaXR1ZGUoZ18pKTtpZihtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2U9Zi5sZW5ndGg7bGV0IGc9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsYj1uZXcgVWludDhBcnJheShlLzMpLmZpbGwoZyk7aC5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpifSl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpoLGluZGljZXM6bCxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOl8sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtBXz1PYX0pO3ZhciBiXz17fTtsZShiXyx7ZGVmYXVsdDooKT0+RkZ9KTtmdW5jdGlvbiB2Rih0LGUpe3JldHVybiBtKGUpJiYodD1BXy51bnBhY2sodCxlKSksQV8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIEZGLHdfPSQoKCk9PntSTygpO2Z0KCk7RkY9dkZ9KTt2YXIgVF89e307bGUoVF8se2RlZmF1bHQ6KCk9PkRGfSk7ZnVuY3Rpb24gTEYodCxlKXtyZXR1cm4gbShlKSYmKHQ9enIudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1hLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx6ci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgREYsT189JCgoKT0+e0R0KCk7ZnQoKTtPMCgpOyR0KCk7REY9TEZ9KTt2YXIgRV89e307bGUoRV8se2RlZmF1bHQ6KCk9PlVGfSk7ZnVuY3Rpb24gQkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9anIudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1hLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxqci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgVUYsUl89JCgoKT0+e0R0KCk7ZnQoKTt4MCgpOyR0KCk7VUY9QkZ9KTtmdW5jdGlvbiBqaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnJhZGlpPz9IRixuPXQuaW5uZXJSYWRpaT8/ZSxvPXQubWluaW11bUNsb2NrPz8wLHI9dC5tYXhpbXVtQ2xvY2s/P1AuVFdPX1BJLGk9dC5taW5pbXVtQ29uZT8/MCxzPXQubWF4aW11bUNvbmU/P1AuUEksZj1NYXRoLnJvdW5kKHQuc3RhY2tQYXJ0aXRpb25zPz82NCksdT1NYXRoLnJvdW5kKHQuc2xpY2VQYXJ0aXRpb25zPz82NCksYz10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDtpZih1PDMpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc2xpY2VQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gdGhyZWUuIik7aWYoZjwzKXRocm93IG5ldyBEKCJvcHRpb25zLnN0YWNrUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIHRocmVlLiIpO3RoaXMuX3JhZGlpPWEuY2xvbmUoZSksdGhpcy5faW5uZXJSYWRpaT1hLmNsb25lKG4pLHRoaXMuX21pbmltdW1DbG9jaz1vLHRoaXMuX21heGltdW1DbG9jaz1yLHRoaXMuX21pbmltdW1Db25lPWksdGhpcy5fbWF4aW11bUNvbmU9cyx0aGlzLl9zdGFja1BhcnRpdGlvbnM9Zix0aGlzLl9zbGljZVBhcnRpdGlvbnM9dSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoYyksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc29pZEdlb21ldHJ5In12YXIga0YsR0YsVkYsekYsakYsSEYsU08seE8sQ08sUE8sTU8sQXMsU18sY3IsVGQ9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTt0bigpO3hvKCk7a0Y9bmV3IGEsR0Y9bmV3IGEsVkY9bmV3IGEsekY9bmV3IGEsakY9bmV3IGEsSEY9bmV3IGEoMSwxLDEpLFNPPU1hdGguY29zLHhPPU1hdGguc2luO2ppLnBhY2tlZExlbmd0aD0yKmEucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs3O2ppLnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBuPW4/PzAsYS5wYWNrKHQuX3JhZGlpLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsYS5wYWNrKHQuX2lubmVyUmFkaWksZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fbWluaW11bUNsb2NrLGVbbisrXT10Ll9tYXhpbXVtQ2xvY2ssZVtuKytdPXQuX21pbmltdW1Db25lLGVbbisrXT10Ll9tYXhpbXVtQ29uZSxlW24rK109dC5fc3RhY2tQYXJ0aXRpb25zLGVbbisrXT10Ll9zbGljZVBhcnRpdGlvbnMsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O0NPPW5ldyBhLFBPPW5ldyBhLE1PPW5ldyBwdCxBcz17cmFkaWk6Q08saW5uZXJSYWRpaTpQTyx2ZXJ0ZXhGb3JtYXQ6TU8sbWluaW11bUNsb2NrOnZvaWQgMCxtYXhpbXVtQ2xvY2s6dm9pZCAwLG1pbmltdW1Db25lOnZvaWQgMCxtYXhpbXVtQ29uZTp2b2lkIDAsc3RhY2tQYXJ0aXRpb25zOnZvaWQgMCxzbGljZVBhcnRpdGlvbnM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O2ppLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxDTyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHI9YS51bnBhY2sodCxlLFBPKTtlKz1hLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLE1PKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShuKT8obi5fcmFkaWk9YS5jbG9uZShvLG4uX3JhZGlpKSxuLl9pbm5lclJhZGlpPWEuY2xvbmUocixuLl9pbm5lclJhZGlpKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX21pbmltdW1DbG9jaz1zLG4uX21heGltdW1DbG9jaz1mLG4uX21pbmltdW1Db25lPXUsbi5fbWF4aW11bUNvbmU9YyxuLl9zdGFja1BhcnRpdGlvbnM9bCxuLl9zbGljZVBhcnRpdGlvbnM9cCxuLl9vZmZzZXRBdHRyaWJ1dGU9ZD09PS0xP3ZvaWQgMDpkLG4pOihBcy5taW5pbXVtQ2xvY2s9cyxBcy5tYXhpbXVtQ2xvY2s9ZixBcy5taW5pbXVtQ29uZT11LEFzLm1heGltdW1Db25lPWMsQXMuc3RhY2tQYXJ0aXRpb25zPWwsQXMuc2xpY2VQYXJ0aXRpb25zPXAsQXMub2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuZXcgamkoQXMpKX07amkuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcmFkaWk7aWYoZS54PD0wfHxlLnk8PTB8fGUuejw9MClyZXR1cm47bGV0IG49dC5faW5uZXJSYWRpaTtpZihuLng8PTB8fG4ueTw9MHx8bi56PD0wKXJldHVybjtsZXQgbz10Ll9taW5pbXVtQ2xvY2sscj10Ll9tYXhpbXVtQ2xvY2ssaT10Ll9taW5pbXVtQ29uZSxzPXQuX21heGltdW1Db25lLGY9dC5fdmVydGV4Rm9ybWF0LHU9dC5fc2xpY2VQYXJ0aXRpb25zKzEsYz10Ll9zdGFja1BhcnRpdGlvbnMrMTt1PU1hdGgucm91bmQodSpNYXRoLmFicyhyLW8pL1AuVFdPX1BJKSxjPU1hdGgucm91bmQoYypNYXRoLmFicyhzLWkpL1AuUEkpLHU8MiYmKHU9MiksYzwyJiYoYz0yKTtsZXQgbCxwLGQ9MCxoPVtpXSxfPVtvXTtmb3IobD0wO2w8YztsKyspaC5wdXNoKGkrbCoocy1pKS8oYy0xKSk7Zm9yKGgucHVzaChzKSxwPTA7cDx1O3ArKylfLnB1c2gobytwKihyLW8pLyh1LTEpKTtfLnB1c2gocik7bGV0IGc9aC5sZW5ndGgsYj1fLmxlbmd0aCx3PTAsTz0xLEU9bi54IT09ZS54fHxuLnkhPT1lLnl8fG4ueiE9PWUueixUPSExLHg9ITEsTT0hMTtFJiYoTz0yLGk+MCYmKFQ9ITAsdys9dS0xKSxzPE1hdGguUEkmJih4PSEwLHcrPXUtMSksKHItbyklUC5UV09fUEk/KE09ITAsdys9KGMtMSkqMisxKTp3Kz0xKTtsZXQgTj1iKmcqTyxGPW5ldyBGbG9hdDY0QXJyYXkoTiozKSxJPW5ldyBBcnJheShOKS5maWxsKCExKSx2PW5ldyBBcnJheShOKS5maWxsKCExKSxCPXUqYypPLEE9NiooQit3KzEtKHUrYykqTyksUz1MdC5jcmVhdGVUeXBlZEFycmF5KEIsQSksQz1mLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KE4qMyk6dm9pZCAwLEw9Zi50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoTiozKTp2b2lkIDAsej1mLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KE4qMyk6dm9pZCAwLGo9Zi5zdD9uZXcgRmxvYXQzMkFycmF5KE4qMik6dm9pZCAwLGs9bmV3IEFycmF5KGcpLHE9bmV3IEFycmF5KGcpO2ZvcihsPTA7bDxnO2wrKylrW2xdPXhPKGhbbF0pLHFbbF09U08oaFtsXSk7bGV0IFc9bmV3IEFycmF5KGIpLFI9bmV3IEFycmF5KGIpO2ZvcihwPTA7cDxiO3ArKylSW3BdPVNPKF9bcF0pLFdbcF09eE8oX1twXSk7Zm9yKGw9MDtsPGc7bCsrKWZvcihwPTA7cDxiO3ArKylGW2QrK109ZS54KmtbbF0qUltwXSxGW2QrK109ZS55KmtbbF0qV1twXSxGW2QrK109ZS56KnFbbF07bGV0IG50PU4vMjtpZihFKWZvcihsPTA7bDxnO2wrKylmb3IocD0wO3A8YjtwKyspRltkKytdPW4ueCprW2xdKlJbcF0sRltkKytdPW4ueSprW2xdKldbcF0sRltkKytdPW4ueipxW2xdLElbbnRdPSEwLGw+MCYmbCE9PWctMSYmcCE9PTAmJnAhPT1iLTEmJih2W250XT0hMCksbnQrKztkPTA7bGV0IGF0LGx0O2ZvcihsPTE7bDxnLTI7bCsrKWZvcihhdD1sKmIsbHQ9KGwrMSkqYixwPTE7cDxiLTI7cCsrKVNbZCsrXT1sdCtwLFNbZCsrXT1sdCtwKzEsU1tkKytdPWF0K3ArMSxTW2QrK109bHQrcCxTW2QrK109YXQrcCsxLFNbZCsrXT1hdCtwO2lmKEUpe2xldCBkZT1nKmI7Zm9yKGw9MTtsPGctMjtsKyspZm9yKGF0PWRlK2wqYixsdD1kZSsobCsxKSpiLHA9MTtwPGItMjtwKyspU1tkKytdPWx0K3AsU1tkKytdPWF0K3AsU1tkKytdPWF0K3ArMSxTW2QrK109bHQrcCxTW2QrK109YXQrcCsxLFNbZCsrXT1sdCtwKzF9bGV0IF90LG90O2lmKEUpe2lmKFQpZm9yKG90PWcqYixsPTE7bDxiLTI7bCsrKVNbZCsrXT1sLFNbZCsrXT1sKzEsU1tkKytdPW90K2wrMSxTW2QrK109bCxTW2QrK109b3QrbCsxLFNbZCsrXT1vdCtsO2lmKHgpZm9yKF90PWcqYi1iLG90PWcqYipPLWIsbD0xO2w8Yi0yO2wrKylTW2QrK109X3QrbCsxLFNbZCsrXT1fdCtsLFNbZCsrXT1vdCtsLFNbZCsrXT1fdCtsKzEsU1tkKytdPW90K2wsU1tkKytdPW90K2wrMX1pZihNKXtmb3IobD0xO2w8Zy0yO2wrKylvdD1iKmcrYipsLF90PWIqbCxTW2QrK109b3QsU1tkKytdPV90K2IsU1tkKytdPV90LFNbZCsrXT1vdCxTW2QrK109b3QrYixTW2QrK109X3QrYjtmb3IobD0xO2w8Zy0yO2wrKylvdD1iKmcrYioobCsxKS0xLF90PWIqKGwrMSktMSxTW2QrK109X3QrYixTW2QrK109b3QsU1tkKytdPV90LFNbZCsrXT1fdCtiLFNbZCsrXT1vdCtiLFNbZCsrXT1vdH1sZXQgUHQ9bmV3IGllO2YucG9zaXRpb24mJihQdC5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkZ9KSk7bGV0IGd0PTAsUnQ9MCxkdD0wLHJ0PTAseHQ9Ti8yLEd0LHBlPVkuZnJvbUNhcnRlc2lhbjMoZSkscmU9WS5mcm9tQ2FydGVzaWFuMyhuKTtpZihmLnN0fHxmLm5vcm1hbHx8Zi50YW5nZW50fHxmLmJpdGFuZ2VudCl7Zm9yKGw9MDtsPE47bCsrKXtHdD1JW2xdP3JlOnBlO2xldCBkZT1hLmZyb21BcnJheShGLGwqMyxrRiksZmU9R3QuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGRlLEdGKTtpZih2W2xdJiZhLm5lZ2F0ZShmZSxmZSksZi5zdCl7bGV0IFp0PUoubmVnYXRlKGZlLGpGKTtqW2d0KytdPU1hdGguYXRhbjIoWnQueSxadC54KS9QLlRXT19QSSsuNSxqW2d0KytdPU1hdGguYXNpbihmZS56KS9NYXRoLlBJKy41fWlmKGYubm9ybWFsJiYoQ1tSdCsrXT1mZS54LENbUnQrK109ZmUueSxDW1J0KytdPWZlLnopLGYudGFuZ2VudHx8Zi5iaXRhbmdlbnQpe2xldCBadD1WRixRdD0wLE5lO2lmKElbbF0mJihRdD14dCksIVQmJmw+PVF0JiZsPFF0K2IqMj9OZT1hLlVOSVRfWDpOZT1hLlVOSVRfWixhLmNyb3NzKE5lLGZlLFp0KSxhLm5vcm1hbGl6ZShadCxadCksZi50YW5nZW50JiYoTFtkdCsrXT1adC54LExbZHQrK109WnQueSxMW2R0KytdPVp0LnopLGYuYml0YW5nZW50KXtsZXQgZ2U9YS5jcm9zcyhmZSxadCx6Rik7YS5ub3JtYWxpemUoZ2UsZ2UpLHpbcnQrK109Z2UueCx6W3J0KytdPWdlLnkseltydCsrXT1nZS56fX19Zi5zdCYmKFB0LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpqfSkpLGYubm9ybWFsJiYoUHQubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpDfSkpLGYudGFuZ2VudCYmKFB0LnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkx9KSksZi5iaXRhbmdlbnQmJihQdC5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnp9KSl9aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgZGU9Ri5sZW5ndGgsZmU9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsWnQ9bmV3IFVpbnQ4QXJyYXkoZGUvMykuZmlsbChmZSk7UHQuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6WnR9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOlB0LGluZGljZXM6UyxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFUyxib3VuZGluZ1NwaGVyZTpBdC5mcm9tRWxsaXBzb2lkKHBlKSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O2ppLmdldFVuaXRFbGxpcHNvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbShTXyl8fChTXz1qaS5jcmVhdGVHZW9tZXRyeShuZXcgamkoe3JhZGlpOm5ldyBhKDEsMSwxKSx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWX0pKSksU199O2NyPWppfSk7dmFyIHhfPXt9O2xlKHhfLHtkZWZhdWx0OigpPT5LRn0pO2Z1bmN0aW9uIHFGKHQsZSl7cmV0dXJuIG0oZSkmJih0PWNyLnVucGFjayh0LGUpKSxjci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgS0YsQ189JCgoKT0+e2Z0KCk7VGQoKTtLRj1xRn0pO2Z1bmN0aW9uIEVhKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaWk/P1dGLG49dC5pbm5lclJhZGlpPz9lLG89dC5taW5pbXVtQ2xvY2s/PzAscj10Lm1heGltdW1DbG9jaz8/UC5UV09fUEksaT10Lm1pbmltdW1Db25lPz8wLHM9dC5tYXhpbXVtQ29uZT8/UC5QSSxmPU1hdGgucm91bmQodC5zdGFja1BhcnRpdGlvbnM/PzEwKSx1PU1hdGgucm91bmQodC5zbGljZVBhcnRpdGlvbnM/PzgpLGM9TWF0aC5yb3VuZCh0LnN1YmRpdmlzaW9ucz8/MTI4KTtpZihmPDEpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc3RhY2tQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gMSIpO2lmKHU8MCl0aHJvdyBuZXcgRCgib3B0aW9ucy5zbGljZVBhcnRpdGlvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiAwIik7aWYoYzwwKXRocm93IG5ldyBEKCJvcHRpb25zLnN1YmRpdmlzaW9ucyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl0aHJvdyBuZXcgRCgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9yYWRpaT1hLmNsb25lKGUpLHRoaXMuX2lubmVyUmFkaWk9YS5jbG9uZShuKSx0aGlzLl9taW5pbXVtQ2xvY2s9byx0aGlzLl9tYXhpbXVtQ2xvY2s9cix0aGlzLl9taW5pbXVtQ29uZT1pLHRoaXMuX21heGltdW1Db25lPXMsdGhpcy5fc3RhY2tQYXJ0aXRpb25zPWYsdGhpcy5fc2xpY2VQYXJ0aXRpb25zPXUsdGhpcy5fc3ViZGl2aXNpb25zPWMsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeSJ9dmFyIFdGLE9kLEVkLE5PLElPLEhpLFhyLFBfPSQoKCk9Pnt2ZSgpO0R0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO3RuKCk7V0Y9bmV3IGEoMSwxLDEpLE9kPU1hdGguY29zLEVkPU1hdGguc2luO0VhLnBhY2tlZExlbmd0aD0yKmEucGFja2VkTGVuZ3RoKzg7RWEucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxhLnBhY2sodC5fcmFkaWksZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxhLnBhY2sodC5faW5uZXJSYWRpaSxlLG4pLG4rPWEucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9taW5pbXVtQ2xvY2ssZVtuKytdPXQuX21heGltdW1DbG9jayxlW24rK109dC5fbWluaW11bUNvbmUsZVtuKytdPXQuX21heGltdW1Db25lLGVbbisrXT10Ll9zdGFja1BhcnRpdGlvbnMsZVtuKytdPXQuX3NsaWNlUGFydGl0aW9ucyxlW24rK109dC5fc3ViZGl2aXNpb25zLGVbbl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtOTz1uZXcgYSxJTz1uZXcgYSxIaT17cmFkaWk6Tk8saW5uZXJSYWRpaTpJTyxtaW5pbXVtQ2xvY2s6dm9pZCAwLG1heGltdW1DbG9jazp2b2lkIDAsbWluaW11bUNvbmU6dm9pZCAwLG1heGltdW1Db25lOnZvaWQgMCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDAsc3ViZGl2aXNpb25zOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtFYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9ZT8/MDtsZXQgbz1hLnVucGFjayh0LGUsTk8pO2UrPWEucGFja2VkTGVuZ3RoO2xldCByPWEudW5wYWNrKHQsZSxJTyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IGk9dFtlKytdLHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShuKT8obi5fcmFkaWk9YS5jbG9uZShvLG4uX3JhZGlpKSxuLl9pbm5lclJhZGlpPWEuY2xvbmUocixuLl9pbm5lclJhZGlpKSxuLl9taW5pbXVtQ2xvY2s9aSxuLl9tYXhpbXVtQ2xvY2s9cyxuLl9taW5pbXVtQ29uZT1mLG4uX21heGltdW1Db25lPXUsbi5fc3RhY2tQYXJ0aXRpb25zPWMsbi5fc2xpY2VQYXJ0aXRpb25zPWwsbi5fc3ViZGl2aXNpb25zPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooSGkubWluaW11bUNsb2NrPWksSGkubWF4aW11bUNsb2NrPXMsSGkubWluaW11bUNvbmU9ZixIaS5tYXhpbXVtQ29uZT11LEhpLnN0YWNrUGFydGl0aW9ucz1jLEhpLnNsaWNlUGFydGl0aW9ucz1sLEhpLnN1YmRpdmlzaW9ucz1wLEhpLm9mZnNldEF0dHJpYnV0ZT1kPT09LTE/dm9pZCAwOmQsbmV3IEVhKEhpKSl9O0VhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3JhZGlpO2lmKGUueDw9MHx8ZS55PD0wfHxlLno8PTApcmV0dXJuO2xldCBuPXQuX2lubmVyUmFkaWk7aWYobi54PD0wfHxuLnk8PTB8fG4uejw9MClyZXR1cm47bGV0IG89dC5fbWluaW11bUNsb2NrLHI9dC5fbWF4aW11bUNsb2NrLGk9dC5fbWluaW11bUNvbmUscz10Ll9tYXhpbXVtQ29uZSxmPXQuX3N1YmRpdmlzaW9ucyx1PVkuZnJvbUNhcnRlc2lhbjMoZSksYz10Ll9zbGljZVBhcnRpdGlvbnMrMSxsPXQuX3N0YWNrUGFydGl0aW9ucysxO2M9TWF0aC5yb3VuZChjKk1hdGguYWJzKHItbykvUC5UV09fUEkpLGw9TWF0aC5yb3VuZChsKk1hdGguYWJzKHMtaSkvUC5QSSksYzwyJiYoYz0yKSxsPDImJihsPTIpO2xldCBwPTAsZD0xLGg9bi54IT09ZS54fHxuLnkhPT1lLnl8fG4ueiE9PWUueixfPSExLGc9ITE7aCYmKGQ9MixpPjAmJihfPSEwLHArPWMpLHM8TWF0aC5QSSYmKGc9ITAscCs9YykpO2xldCBiPWYqZCoobCtjKSx3PW5ldyBGbG9hdDY0QXJyYXkoYiozKSxPPTIqKGIrcC0oYytsKSpkKSxFPUx0LmNyZWF0ZVR5cGVkQXJyYXkoYixPKSxULHgsTSxOLEY9MCxJPW5ldyBBcnJheShsKSx2PW5ldyBBcnJheShsKTtmb3IoVD0wO1Q8bDtUKyspTj1pK1QqKHMtaSkvKGwtMSksSVtUXT1FZChOKSx2W1RdPU9kKE4pO2xldCBCPW5ldyBBcnJheShmKSxBPW5ldyBBcnJheShmKTtmb3IoVD0wO1Q8ZjtUKyspTT1vK1QqKHItbykvKGYtMSksQltUXT1FZChNKSxBW1RdPU9kKE0pO2ZvcihUPTA7VDxsO1QrKylmb3IoeD0wO3g8Zjt4Kyspd1tGKytdPWUueCpJW1RdKkFbeF0sd1tGKytdPWUueSpJW1RdKkJbeF0sd1tGKytdPWUueip2W1RdO2lmKGgpZm9yKFQ9MDtUPGw7VCsrKWZvcih4PTA7eDxmO3grKyl3W0YrK109bi54KklbVF0qQVt4XSx3W0YrK109bi55KklbVF0qQlt4XSx3W0YrK109bi56KnZbVF07Zm9yKEkubGVuZ3RoPWYsdi5sZW5ndGg9ZixUPTA7VDxmO1QrKylOPWkrVCoocy1pKS8oZi0xKSxJW1RdPUVkKE4pLHZbVF09T2QoTik7Zm9yKEIubGVuZ3RoPWMsQS5sZW5ndGg9YyxUPTA7VDxjO1QrKylNPW8rVCooci1vKS8oYy0xKSxCW1RdPUVkKE0pLEFbVF09T2QoTSk7Zm9yKFQ9MDtUPGY7VCsrKWZvcih4PTA7eDxjO3grKyl3W0YrK109ZS54KklbVF0qQVt4XSx3W0YrK109ZS55KklbVF0qQlt4XSx3W0YrK109ZS56KnZbVF07aWYoaClmb3IoVD0wO1Q8ZjtUKyspZm9yKHg9MDt4PGM7eCsrKXdbRisrXT1uLngqSVtUXSpBW3hdLHdbRisrXT1uLnkqSVtUXSpCW3hdLHdbRisrXT1uLnoqdltUXTtmb3IoRj0wLFQ9MDtUPGwqZDtUKyspe2xldCBMPVQqZjtmb3IoeD0wO3g8Zi0xO3grKylFW0YrK109TCt4LEVbRisrXT1MK3grMX1sZXQgUz1sKmYqZDtmb3IoVD0wO1Q8YztUKyspZm9yKHg9MDt4PGYtMTt4KyspRVtGKytdPVMrVCt4KmMsRVtGKytdPVMrVCsoeCsxKSpjO2lmKGgpZm9yKFM9bCpmKmQrYypmLFQ9MDtUPGM7VCsrKWZvcih4PTA7eDxmLTE7eCsrKUVbRisrXT1TK1QreCpjLEVbRisrXT1TK1QrKHgrMSkqYztpZihoKXtsZXQgTD1sKmYqZCx6PUwrZipjO2lmKF8pZm9yKFQ9MDtUPGM7VCsrKUVbRisrXT1MK1QsRVtGKytdPXorVDtpZihnKWZvcihMKz1mKmMtYyx6Kz1mKmMtYyxUPTA7VDxjO1QrKylFW0YrK109TCtULEVbRisrXT16K1R9bGV0IEM9bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnd9KX0pO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IEw9dy5sZW5ndGgsej10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxqPW5ldyBVaW50OEFycmF5KEwvMykuZmlsbCh6KTtDLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmp9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOkMsaW5kaWNlczpFLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbUVsbGlwc29pZCh1KSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O1hyPUVhfSk7dmFyIE1fPXt9O2xlKE1fLHtkZWZhdWx0OigpPT5ZRn0pO2Z1bmN0aW9uIFhGKHQsZSl7cmV0dXJuIG0odC5idWZmZXIsZSkmJih0PVhyLnVucGFjayh0LGUpKSxYci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgWUYsTl89JCgoKT0+e2Z0KCk7UF8oKTtZRj1YRn0pO2Z1bmN0aW9uIEVyKHQpe3RoaXMucGxhbmVzPXQ/P1tdfXZhciBLZixicywkRix2TyxSZCxJXz0kKCgpPT57RHQoKTtfcigpO2Z0KCk7SHQoKTtWcygpO3VzKCk7S2Y9W25ldyBhLG5ldyBhLG5ldyBhXTthLmNsb25lKGEuVU5JVF9YLEtmWzBdKTthLmNsb25lKGEuVU5JVF9ZLEtmWzFdKTthLmNsb25lKGEuVU5JVF9aLEtmWzJdKTticz1uZXcgYSwkRj1uZXcgYSx2Tz1uZXcgb24obmV3IGEoMSwwLDApLDApO0VyLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3VuZGluZ1NwaGVyZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgRXIpO2xldCBuPUtmLmxlbmd0aCxvPWUucGxhbmVzO28ubGVuZ3RoPTIqbjtsZXQgcj10LmNlbnRlcixpPXQucmFkaXVzLHM9MDtmb3IobGV0IGY9MDtmPG47KytmKXtsZXQgdT1LZltmXSxjPW9bc10sbD1vW3MrMV07bShjKXx8KGM9b1tzXT1uZXcgbWUpLG0obCl8fChsPW9bcysxXT1uZXcgbWUpLGEubXVsdGlwbHlCeVNjYWxhcih1LC1pLGJzKSxhLmFkZChyLGJzLGJzKSxjLng9dS54LGMueT11LnksYy56PXUueixjLnc9LWEuZG90KHUsYnMpLGEubXVsdGlwbHlCeVNjYWxhcih1LGksYnMpLGEuYWRkKHIsYnMsYnMpLGwueD0tdS54LGwueT0tdS55LGwuej0tdS56LGwudz0tYS5kb3QoYS5uZWdhdGUodSwkRiksYnMpLHMrPTJ9cmV0dXJuIGV9O0VyLnByb3RvdHlwZS5jb21wdXRlVmlzaWJpbGl0eT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYm91bmRpbmdWb2x1bWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5wbGFuZXMsbj0hMTtmb3IobGV0IG89MCxyPWUubGVuZ3RoO288cjsrK28pe2xldCBpPXQuaW50ZXJzZWN0UGxhbmUob24uZnJvbUNhcnRlc2lhbjQoZVtvXSx2TykpO2lmKGk9PT1Tbi5PVVRTSURFKXJldHVybiBTbi5PVVRTSURFO2k9PT1Tbi5JTlRFUlNFQ1RJTkcmJihuPSEwKX1yZXR1cm4gbj9Tbi5JTlRFUlNFQ1RJTkc6U24uSU5TSURFfTtFci5wcm90b3R5cGUuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImJvdW5kaW5nVm9sdW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwYXJlbnRQbGFuZU1hc2sgaXMgcmVxdWlyZWQuIik7aWYoZT09PUVyLk1BU0tfT1VUU0lERXx8ZT09PUVyLk1BU0tfSU5TSURFKXJldHVybiBlO2xldCBuPUVyLk1BU0tfSU5TSURFLG89dGhpcy5wbGFuZXM7Zm9yKGxldCByPTAsaT1vLmxlbmd0aDtyPGk7KytyKXtsZXQgcz1yPDMxPzE8PHI6MDtpZihyPDMxJiYoZSZzKT09PTApY29udGludWU7bGV0IGY9dC5pbnRlcnNlY3RQbGFuZShvbi5mcm9tQ2FydGVzaWFuNChvW3JdLHZPKSk7aWYoZj09PVNuLk9VVFNJREUpcmV0dXJuIEVyLk1BU0tfT1VUU0lERTtmPT09U24uSU5URVJTRUNUSU5HJiYobnw9cyl9cmV0dXJuIG59O0VyLk1BU0tfT1VUU0lERT00Mjk0OTY3Mjk1O0VyLk1BU0tfSU5TSURFPTA7RXIuTUFTS19JTkRFVEVSTUlOQVRFPTIxNDc0ODM2NDc7UmQ9RXJ9KTtmdW5jdGlvbiBwaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMuX2xlZnQ9dm9pZCAwLHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLl9yaWdodD12b2lkIDAsdGhpcy50b3A9dC50b3AsdGhpcy5fdG9wPXZvaWQgMCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLl9ib3R0b209dm9pZCAwLHRoaXMubmVhcj10Lm5lYXI/PzEsdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9dC5mYXI/PzVlOCx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy5fY3VsbGluZ1ZvbHVtZT1uZXcgUmQsdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4PW5ldyBzdH1mdW5jdGlvbiBGTyh0KXtpZighbSh0LnJpZ2h0KXx8IW0odC5sZWZ0KXx8IW0odC50b3ApfHwhbSh0LmJvdHRvbSl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgRCgicmlnaHQsIGxlZnQsIHRvcCwgYm90dG9tLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtpZih0LnRvcCE9PXQuX3RvcHx8dC5ib3R0b20hPT10Ll9ib3R0b218fHQubGVmdCE9PXQuX2xlZnR8fHQucmlnaHQhPT10Ll9yaWdodHx8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQubGVmdD50LnJpZ2h0KXRocm93IG5ldyBEKCJyaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBsZWZ0LiIpO2lmKHQuYm90dG9tPnQudG9wKXRocm93IG5ldyBEKCJ0b3AgbXVzdCBiZSBncmVhdGVyIHRoYW4gYm90dG9tLiIpO2lmKHQubmVhcjw9MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBEKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fbGVmdD10LmxlZnQsdC5fcmlnaHQ9dC5yaWdodCx0Ll90b3A9dC50b3AsdC5fYm90dG9tPXQuYm90dG9tLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcix0Ll9vcnRob2dyYXBoaWNNYXRyaXg9c3QuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcih0LmxlZnQsdC5yaWdodCx0LmJvdHRvbSx0LnRvcCx0Lm5lYXIsdC5mYXIsdC5fb3J0aG9ncmFwaGljTWF0cml4KX19dmFyIFpGLFFGLEpGLHZfLExPLERPPSQoKCk9PntEdCgpO19yKCk7SV8oKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO2tuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocGkucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRk8odGhpcyksdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4fX19KTtaRj1uZXcgYSxRRj1uZXcgYSxKRj1uZXcgYSx2Xz1uZXcgYTtwaS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbz10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxyPXRoaXMudG9wLGk9dGhpcy5ib3R0b20scz10aGlzLnJpZ2h0LGY9dGhpcy5sZWZ0LHU9dGhpcy5uZWFyLGM9dGhpcy5mYXIsbD1hLmNyb3NzKGUsbixaRik7YS5ub3JtYWxpemUobCxsKTtsZXQgcD1RRjthLm11bHRpcGx5QnlTY2FsYXIoZSx1LHApLGEuYWRkKHQscCxwKTtsZXQgZD1KRjthLm11bHRpcGx5QnlTY2FsYXIobCxmLGQpLGEuYWRkKHAsZCxkKTtsZXQgaD1vWzBdO3JldHVybiBtKGgpfHwoaD1vWzBdPW5ldyBtZSksaC54PWwueCxoLnk9bC55LGguej1sLnosaC53PS1hLmRvdChsLGQpLGEubXVsdGlwbHlCeVNjYWxhcihsLHMsZCksYS5hZGQocCxkLGQpLGg9b1sxXSxtKGgpfHwoaD1vWzFdPW5ldyBtZSksaC54PS1sLngsaC55PS1sLnksaC56PS1sLnosaC53PS1hLmRvdChhLm5lZ2F0ZShsLHZfKSxkKSxhLm11bHRpcGx5QnlTY2FsYXIobixpLGQpLGEuYWRkKHAsZCxkKSxoPW9bMl0sbShoKXx8KGg9b1syXT1uZXcgbWUpLGgueD1uLngsaC55PW4ueSxoLno9bi56LGgudz0tYS5kb3QobixkKSxhLm11bHRpcGx5QnlTY2FsYXIobixyLGQpLGEuYWRkKHAsZCxkKSxoPW9bM10sbShoKXx8KGg9b1szXT1uZXcgbWUpLGgueD0tbi54LGgueT0tbi55LGguej0tbi56LGgudz0tYS5kb3QoYS5uZWdhdGUobix2XyksZCksaD1vWzRdLG0oaCl8fChoPW9bNF09bmV3IG1lKSxoLng9ZS54LGgueT1lLnksaC56PWUueixoLnc9LWEuZG90KGUscCksYS5tdWx0aXBseUJ5U2NhbGFyKGUsYyxkKSxhLmFkZCh0LGQsZCksaD1vWzVdLG0oaCl8fChoPW9bNV09bmV3IG1lKSxoLng9LWUueCxoLnk9LWUueSxoLno9LWUueixoLnc9LWEuZG90KGEubmVnYXRlKGUsdl8pLGQpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O3BpLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZihGTyh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IEQoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkLiIpO2lmKG88PTApdGhyb3cgbmV3IEQoInBpeGVsUmF0aW8gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgiQSByZXN1bHQgb2JqZWN0IGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMucmlnaHQtdGhpcy5sZWZ0LHM9dGhpcy50b3AtdGhpcy5ib3R0b20sZj1vKmkvdCx1PW8qcy9lO3JldHVybiByLng9ZixyLnk9dSxyfTtwaS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBwaSksdC5sZWZ0PXRoaXMubGVmdCx0LnJpZ2h0PXRoaXMucmlnaHQsdC50b3A9dGhpcy50b3AsdC5ib3R0b209dGhpcy5ib3R0b20sdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9sZWZ0PXZvaWQgMCx0Ll9yaWdodD12b2lkIDAsdC5fdG9wPXZvaWQgMCx0Ll9ib3R0b209dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdH07cGkucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdCBpbnN0YW5jZW9mIHBpJiZ0aGlzLnJpZ2h0PT09dC5yaWdodCYmdGhpcy5sZWZ0PT09dC5sZWZ0JiZ0aGlzLnRvcD09PXQudG9wJiZ0aGlzLmJvdHRvbT09PXQuYm90dG9tJiZ0aGlzLm5lYXI9PT10Lm5lYXImJnRoaXMuZmFyPT09dC5mYXJ9O3BpLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09PXRoaXN8fG0odCkmJnQgaW5zdGFuY2VvZiBwaSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMucmlnaHQsdC5yaWdodCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5sZWZ0LHQubGVmdCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy50b3AsdC50b3AsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMuYm90dG9tLHQuYm90dG9tLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLm5lYXIsdC5uZWFyLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLmZhcix0LmZhcixlLG4pfTtMTz1waX0pO2Z1bmN0aW9uIG5yKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX29mZkNlbnRlckZydXN0dW09bmV3IExPLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5hc3BlY3RSYXRpbz10LmFzcGVjdFJhdGlvLHRoaXMuX2FzcGVjdFJhdGlvPXZvaWQgMCx0aGlzLm5lYXI9dC5uZWFyPz8xLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPXQuZmFyPz81ZTgsdGhpcy5fZmFyPXRoaXMuZmFyfWZ1bmN0aW9uIHdzKHQpe2lmKCFtKHQud2lkdGgpfHwhbSh0LmFzcGVjdFJhdGlvKXx8IW0odC5uZWFyKXx8IW0odC5mYXIpKXRocm93IG5ldyBEKCJ3aWR0aCwgYXNwZWN0UmF0aW8sIG5lYXIsIG9yIGZhciBwYXJhbWV0ZXJzIGFyZSBub3Qgc2V0LiIpO2xldCBlPXQuX29mZkNlbnRlckZydXN0dW07aWYodC53aWR0aCE9PXQuX3dpZHRofHx0LmFzcGVjdFJhdGlvIT09dC5fYXNwZWN0UmF0aW98fHQubmVhciE9PXQuX25lYXJ8fHQuZmFyIT09dC5fZmFyKXtpZih0LmFzcGVjdFJhdGlvPDApdGhyb3cgbmV3IEQoImFzcGVjdFJhdGlvIG11c3QgYmUgcG9zaXRpdmUuIik7aWYodC5uZWFyPDB8fHQubmVhcj50LmZhcil0aHJvdyBuZXcgRCgibmVhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gZmFyLiIpO3QuX2FzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdC5fd2lkdGg9dC53aWR0aCx0Ll9uZWFyPXQubmVhcix0Ll9mYXI9dC5mYXI7bGV0IG49MS90LmFzcGVjdFJhdGlvO2UucmlnaHQ9dC53aWR0aCouNSxlLmxlZnQ9LWUucmlnaHQsZS50b3A9biplLnJpZ2h0LGUuYm90dG9tPS1lLnRvcCxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyfX12YXIgTW8sRl89JCgoKT0+e1d0KCk7eWUoKTtmdCgpO0h0KCk7S3QoKTtETygpO25yLnBhY2tlZExlbmd0aD00O25yLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQud2lkdGgsZVtuKytdPXQuYXNwZWN0UmF0aW8sZVtuKytdPXQubmVhcixlW25dPXQuZmFyLGV9O25yLnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgbnIpLG4ud2lkdGg9dFtlKytdLG4uYXNwZWN0UmF0aW89dFtlKytdLG4ubmVhcj10W2UrK10sbi5mYXI9dFtlXSxufTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiB3cyh0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxvZmZDZW50ZXJGcnVzdHVtOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bX19fSk7bnIucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jb21wdXRlQ3VsbGluZ1ZvbHVtZSh0LGUsbil9O25yLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5nZXRQaXhlbERpbWVuc2lvbnModCxlLG4sbyxyKX07bnIucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgbnIpLHQuYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0LndpZHRoPXRoaXMud2lkdGgsdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9hc3BlY3RSYXRpbz12b2lkIDAsdC5fd2lkdGg9dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jbG9uZSh0Ll9vZmZDZW50ZXJGcnVzdHVtKSx0fTtuci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiBucik/ITE6KHdzKHRoaXMpLHdzKHQpLHRoaXMud2lkdGg9PT10LndpZHRoJiZ0aGlzLmFzcGVjdFJhdGlvPT09dC5hc3BlY3RSYXRpbyYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHModC5fb2ZmQ2VudGVyRnJ1c3R1bSkpfTtuci5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIG5yKT8hMTood3ModGhpcyksd3ModCksUC5lcXVhbHNFcHNpbG9uKHRoaXMud2lkdGgsdC53aWR0aCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsbikmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsbikpfTtNbz1ucn0pO2Z1bmN0aW9uIGRpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMubGVmdD10LmxlZnQsdGhpcy5fbGVmdD12b2lkIDAsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMuX3JpZ2h0PXZvaWQgMCx0aGlzLnRvcD10LnRvcCx0aGlzLl90b3A9dm9pZCAwLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMuX2JvdHRvbT12b2lkIDAsdGhpcy5uZWFyPXQubmVhcj8/MSx0aGlzLl9uZWFyPXRoaXMubmVhcix0aGlzLmZhcj10LmZhcj8/NWU4LHRoaXMuX2Zhcj10aGlzLmZhcix0aGlzLl9jdWxsaW5nVm9sdW1lPW5ldyBSZCx0aGlzLl9wZXJzcGVjdGl2ZU1hdHJpeD1uZXcgc3QsdGhpcy5faW5maW5pdGVQZXJzcGVjdGl2ZT1uZXcgc3R9ZnVuY3Rpb24gTF8odCl7aWYoIW0odC5yaWdodCl8fCFtKHQubGVmdCl8fCFtKHQudG9wKXx8IW0odC5ib3R0b20pfHwhbSh0Lm5lYXIpfHwhbSh0LmZhcikpdGhyb3cgbmV3IEQoInJpZ2h0LCBsZWZ0LCB0b3AsIGJvdHRvbSwgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0e3RvcDplLGJvdHRvbTpuLHJpZ2h0Om8sbGVmdDpyLG5lYXI6aSxmYXI6c309dDtpZihlIT09dC5fdG9wfHxuIT09dC5fYm90dG9tfHxyIT09dC5fbGVmdHx8byE9PXQuX3JpZ2h0fHxpIT09dC5fbmVhcnx8cyE9PXQuX2Zhcil7aWYodC5uZWFyPD0wfHx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IEQoIm5lYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIGZhci4iKTt0Ll9sZWZ0PXIsdC5fcmlnaHQ9byx0Ll90b3A9ZSx0Ll9ib3R0b209bix0Ll9uZWFyPWksdC5fZmFyPXMsdC5fcGVyc3BlY3RpdmVNYXRyaXg9c3QuY29tcHV0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHIsbyxuLGUsaSxzLHQuX3BlcnNwZWN0aXZlTWF0cml4KSx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlPXN0LmNvbXB1dGVJbmZpbml0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHIsbyxuLGUsaSx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlKX19dmFyIHRMLGVMLG5MLG9MLEJPLFVPPSQoKCk9PntEdCgpO19yKCk7SV8oKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO2tuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGkucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTF8odGhpcyksdGhpcy5fcGVyc3BlY3RpdmVNYXRyaXh9fSxpbmZpbml0ZVByb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBMXyh0aGlzKSx0aGlzLl9pbmZpbml0ZVBlcnNwZWN0aXZlfX19KTt0TD1uZXcgYSxlTD1uZXcgYSxuTD1uZXcgYSxvTD1uZXcgYTtkaS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbz10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxyPXRoaXMudG9wLGk9dGhpcy5ib3R0b20scz10aGlzLnJpZ2h0LGY9dGhpcy5sZWZ0LHU9dGhpcy5uZWFyLGM9dGhpcy5mYXIsbD1hLmNyb3NzKGUsbix0TCkscD1lTDthLm11bHRpcGx5QnlTY2FsYXIoZSx1LHApLGEuYWRkKHQscCxwKTtsZXQgZD1uTDthLm11bHRpcGx5QnlTY2FsYXIoZSxjLGQpLGEuYWRkKHQsZCxkKTtsZXQgaD1vTDthLm11bHRpcGx5QnlTY2FsYXIobCxmLGgpLGEuYWRkKHAsaCxoKSxhLnN1YnRyYWN0KGgsdCxoKSxhLm5vcm1hbGl6ZShoLGgpLGEuY3Jvc3MoaCxuLGgpLGEubm9ybWFsaXplKGgsaCk7bGV0IF89b1swXTtyZXR1cm4gbShfKXx8KF89b1swXT1uZXcgbWUpLF8ueD1oLngsXy55PWgueSxfLno9aC56LF8udz0tYS5kb3QoaCx0KSxhLm11bHRpcGx5QnlTY2FsYXIobCxzLGgpLGEuYWRkKHAsaCxoKSxhLnN1YnRyYWN0KGgsdCxoKSxhLmNyb3NzKG4saCxoKSxhLm5vcm1hbGl6ZShoLGgpLF89b1sxXSxtKF8pfHwoXz1vWzFdPW5ldyBtZSksXy54PWgueCxfLnk9aC55LF8uej1oLnosXy53PS1hLmRvdChoLHQpLGEubXVsdGlwbHlCeVNjYWxhcihuLGksaCksYS5hZGQocCxoLGgpLGEuc3VidHJhY3QoaCx0LGgpLGEuY3Jvc3MobCxoLGgpLGEubm9ybWFsaXplKGgsaCksXz1vWzJdLG0oXyl8fChfPW9bMl09bmV3IG1lKSxfLng9aC54LF8ueT1oLnksXy56PWgueixfLnc9LWEuZG90KGgsdCksYS5tdWx0aXBseUJ5U2NhbGFyKG4scixoKSxhLmFkZChwLGgsaCksYS5zdWJ0cmFjdChoLHQsaCksYS5jcm9zcyhoLGwsaCksYS5ub3JtYWxpemUoaCxoKSxfPW9bM10sbShfKXx8KF89b1szXT1uZXcgbWUpLF8ueD1oLngsXy55PWgueSxfLno9aC56LF8udz0tYS5kb3QoaCx0KSxfPW9bNF0sbShfKXx8KF89b1s0XT1uZXcgbWUpLF8ueD1lLngsXy55PWUueSxfLno9ZS56LF8udz0tYS5kb3QoZSxwKSxhLm5lZ2F0ZShlLGgpLF89b1s1XSxtKF8pfHwoXz1vWzVdPW5ldyBtZSksXy54PWgueCxfLnk9aC55LF8uej1oLnosXy53PS1hLmRvdChoLGQpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O2RpLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZihMXyh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IEQoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkIik7aWYobzw9MCl0aHJvdyBuZXcgRCgicGl4ZWxSYXRpbyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKCFtKHIpKXRocm93IG5ldyBEKCJBIHJlc3VsdCBvYmplY3QgaXMgcmVxdWlyZWQuIik7bGV0IGk9MS90aGlzLm5lYXIscz10aGlzLnRvcCppLGY9MipvKm4qcy9lO3M9dGhpcy5yaWdodCppO2xldCB1PTIqbypuKnMvdDtyZXR1cm4gci54PXUsci55PWYscn07ZGkucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgZGkpLHQucmlnaHQ9dGhpcy5yaWdodCx0LmxlZnQ9dGhpcy5sZWZ0LHQudG9wPXRoaXMudG9wLHQuYm90dG9tPXRoaXMuYm90dG9tLHQubmVhcj10aGlzLm5lYXIsdC5mYXI9dGhpcy5mYXIsdC5fbGVmdD12b2lkIDAsdC5fcmlnaHQ9dm9pZCAwLHQuX3RvcD12b2lkIDAsdC5fYm90dG9tPXZvaWQgMCx0Ll9uZWFyPXZvaWQgMCx0Ll9mYXI9dm9pZCAwLHR9O2RpLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJnQgaW5zdGFuY2VvZiBkaSYmdGhpcy5yaWdodD09PXQucmlnaHQmJnRoaXMubGVmdD09PXQubGVmdCYmdGhpcy50b3A9PT10LnRvcCYmdGhpcy5ib3R0b209PT10LmJvdHRvbSYmdGhpcy5uZWFyPT09dC5uZWFyJiZ0aGlzLmZhcj09PXQuZmFyfTtkaS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9PT10aGlzfHxtKHQpJiZ0IGluc3RhbmNlb2YgZGkmJlAuZXF1YWxzRXBzaWxvbih0aGlzLnJpZ2h0LHQucmlnaHQsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMubGVmdCx0LmxlZnQsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMudG9wLHQudG9wLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLmJvdHRvbSx0LmJvdHRvbSxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5uZWFyLHQubmVhcixlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5mYXIsdC5mYXIsZSxuKX07Qk89ZGl9KTtmdW5jdGlvbiBvcih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtPW5ldyBCTyx0aGlzLmZvdj10LmZvdix0aGlzLl9mb3Y9dm9pZCAwLHRoaXMuX2Zvdnk9dm9pZCAwLHRoaXMuX3NzZURlbm9taW5hdG9yPXZvaWQgMCx0aGlzLmFzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdGhpcy5fYXNwZWN0UmF0aW89dm9pZCAwLHRoaXMubmVhcj10Lm5lYXI/PzEsdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9dC5mYXI/PzVlOCx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy54T2Zmc2V0PXQueE9mZnNldD8/MCx0aGlzLl94T2Zmc2V0PXRoaXMueE9mZnNldCx0aGlzLnlPZmZzZXQ9dC55T2Zmc2V0Pz8wLHRoaXMuX3lPZmZzZXQ9dGhpcy55T2Zmc2V0fWZ1bmN0aW9uIFlyKHQpe2lmKCFtKHQuZm92KXx8IW0odC5hc3BlY3RSYXRpbyl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgRCgiZm92LCBhc3BlY3RSYXRpbywgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7aWYoISh0LmZvdiE9PXQuX2Zvdnx8dC5hc3BlY3RSYXRpbyE9PXQuX2FzcGVjdFJhdGlvfHx0Lm5lYXIhPT10Ll9uZWFyfHx0LmZhciE9PXQuX2Zhcnx8dC54T2Zmc2V0IT09dC5feE9mZnNldHx8dC55T2Zmc2V0IT09dC5feU9mZnNldCkpcmV0dXJuO2lmKHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJmb3YiLHQuZm92LDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbigiZm92Iix0LmZvdixNYXRoLlBJKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXNwZWN0UmF0aW8iLHQuYXNwZWN0UmF0aW8sMCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5lYXIiLHQubmVhciwwKSx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IEQoIm5lYXIgbXVzdCBiZSBsZXNzIHRoYW4gZmFyLiIpO3QuX2FzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdC5fZm92PXQuZm92LHQuX2Zvdnk9dC5hc3BlY3RSYXRpbzw9MT90LmZvdjpNYXRoLmF0YW4oTWF0aC50YW4odC5mb3YqLjUpL3QuYXNwZWN0UmF0aW8pKjIsdC5fbmVhcj10Lm5lYXIsdC5fZmFyPXQuZmFyLHQuX3NzZURlbm9taW5hdG9yPTIqTWF0aC50YW4oLjUqdC5fZm92eSksdC5feE9mZnNldD10LnhPZmZzZXQsdC5feU9mZnNldD10LnlPZmZzZXQ7bGV0IG49dC5fb2ZmQ2VudGVyRnJ1c3R1bTtuLnRvcD10Lm5lYXIqTWF0aC50YW4oLjUqdC5fZm92eSksbi5ib3R0b209LW4udG9wLG4ucmlnaHQ9dC5hc3BlY3RSYXRpbypuLnRvcCxuLmxlZnQ9LW4ucmlnaHQsbi5uZWFyPXQubmVhcixuLmZhcj10LmZhcixuLnJpZ2h0Kz10LnhPZmZzZXQsbi5sZWZ0Kz10LnhPZmZzZXQsbi50b3ArPXQueU9mZnNldCxuLmJvdHRvbSs9dC55T2Zmc2V0fXZhciBObyxEXz0kKCgpPT57V3QoKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO1VPKCk7b3IucGFja2VkTGVuZ3RoPTY7b3IucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxlW24rK109dC5mb3YsZVtuKytdPXQuYXNwZWN0UmF0aW8sZVtuKytdPXQubmVhcixlW24rK109dC5mYXIsZVtuKytdPXQueE9mZnNldCxlW25dPXQueU9mZnNldCxlfTtvci51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IG9yKSxuLmZvdj10W2UrK10sbi5hc3BlY3RSYXRpbz10W2UrK10sbi5uZWFyPXRbZSsrXSxuLmZhcj10W2UrK10sbi54T2Zmc2V0PXRbZSsrXSxuLnlPZmZzZXQ9dFtlXSxufTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxpbmZpbml0ZVByb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmluZmluaXRlUHJvamVjdGlvbk1hdHJpeH19LGZvdnk6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9mb3Z5fX0sc3NlRGVub21pbmF0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9zc2VEZW5vbWluYXRvcn19LG9mZkNlbnRlckZydXN0dW06e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtfX19KTtvci5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmNvbXB1dGVDdWxsaW5nVm9sdW1lKHQsZSxuKX07b3IucHJvdG90eXBlLmdldFBpeGVsRGltZW5zaW9ucz1mdW5jdGlvbih0LGUsbixvLHIpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmdldFBpeGVsRGltZW5zaW9ucyh0LGUsbixvLHIpfTtvci5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBvciksdC5hc3BlY3RSYXRpbz10aGlzLmFzcGVjdFJhdGlvLHQuZm92PXRoaXMuZm92LHQubmVhcj10aGlzLm5lYXIsdC5mYXI9dGhpcy5mYXIsdC5fYXNwZWN0UmF0aW89dm9pZCAwLHQuX2Zvdj12b2lkIDAsdC5fbmVhcj12b2lkIDAsdC5fZmFyPXZvaWQgMCx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmNsb25lKHQuX29mZkNlbnRlckZydXN0dW0pLHR9O29yLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIG9yKT8hMTooWXIodGhpcyksWXIodCksdGhpcy5mb3Y9PT10LmZvdiYmdGhpcy5hc3BlY3RSYXRpbz09PXQuYXNwZWN0UmF0aW8mJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzKHQuX29mZkNlbnRlckZydXN0dW0pKX07b3IucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiBvcik/ITE6KFlyKHRoaXMpLFlyKHQpLFAuZXF1YWxzRXBzaWxvbih0aGlzLmZvdix0LmZvdixlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsbikmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsbikpfTtObz1vcn0pO2Z1bmN0aW9uIEFjKHQpe3kudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkseS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLmZydXN0dW0iLHQuZnJ1c3R1bSkseS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLm9yaWdpbiIsdC5vcmlnaW4pLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmllbnRhdGlvbiIsdC5vcmllbnRhdGlvbik7bGV0IGU9dC5mcnVzdHVtLG49dC5vcmllbnRhdGlvbixvPXQub3JpZ2luLHI9dC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQsaT10Ll9kcmF3TmVhclBsYW5lPz8hMCxzLGY7ZSBpbnN0YW5jZW9mIE5vPyhzPVNkLGY9Tm8ucGFja2VkTGVuZ3RoKTplIGluc3RhbmNlb2YgTW8mJihzPXJMLGY9TW8ucGFja2VkTGVuZ3RoKSx0aGlzLl9mcnVzdHVtVHlwZT1zLHRoaXMuX2ZydXN0dW09ZS5jbG9uZSgpLHRoaXMuX29yaWdpbj1hLmNsb25lKG8pLHRoaXMuX29yaWVudGF0aW9uPXRlLmNsb25lKG4pLHRoaXMuX2RyYXdOZWFyUGxhbmU9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cix0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVGcnVzdHVtR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrZithLnBhY2tlZExlbmd0aCt0ZS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RofWZ1bmN0aW9uIFJhKHQsZSxuLG8scixpLHMsZil7bGV0IHU9dC8zKjI7Zm9yKGxldCBjPTA7Yzw0OysrYyltKGUpJiYoZVt0XT1pLngsZVt0KzFdPWkueSxlW3QrMl09aS56KSxtKG4pJiYoblt0XT1zLngsblt0KzFdPXMueSxuW3QrMl09cy56KSxtKG8pJiYob1t0XT1mLngsb1t0KzFdPWYueSxvW3QrMl09Zi56KSx0Kz0zO3JbdV09MCxyW3UrMV09MCxyW3UrMl09MSxyW3UrM109MCxyW3UrNF09MSxyW3UrNV09MSxyW3UrNl09MCxyW3UrN109MX12YXIgU2QsckwsaUwsc0wsY0wsYUwsZkwsdUwsbEwsQl8sa08sR08sVk8scEwsZEwsbUwsVHMsV2Ysek8sWGYsVV89JCgoKT0+e3ZlKCk7RHQoKTtfcigpO1d0KCk7RGUoKTtmdCgpO1llKCk7JGUoKTthbigpO1VuKCk7a24oKTtGXygpO0RfKCk7dG4oKTtYbygpO3hvKCk7U2Q9MCxyTD0xO0FjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MDtsZXQgbz10Ll9mcnVzdHVtVHlwZSxyPXQuX2ZydXN0dW07cmV0dXJuIGVbbisrXT1vLG89PT1TZD8oTm8ucGFjayhyLGUsbiksbis9Tm8ucGFja2VkTGVuZ3RoKTooTW8ucGFjayhyLGUsbiksbis9TW8ucGFja2VkTGVuZ3RoKSxhLnBhY2sodC5fb3JpZ2luLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsdGUucGFjayh0Ll9vcmllbnRhdGlvbixlLG4pLG4rPXRlLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW25dPXQuX2RyYXdOZWFyUGxhbmU/MTowLGV9O2lMPW5ldyBObyxzTD1uZXcgTW8sY0w9bmV3IHRlLGFMPW5ldyBhLGZMPW5ldyBwdDtBYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scjtvPT09U2Q/KHI9Tm8udW5wYWNrKHQsZSxpTCksZSs9Tm8ucGFja2VkTGVuZ3RoKToocj1Nby51bnBhY2sodCxlLHNMKSxlKz1Nby5wYWNrZWRMZW5ndGgpO2xldCBpPWEudW5wYWNrKHQsZSxhTCk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHM9dGUudW5wYWNrKHQsZSxjTCk7ZSs9dGUucGFja2VkTGVuZ3RoO2xldCBmPXB0LnVucGFjayh0LGUsZkwpO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgdT10W2VdPT09MTtpZighbShuKSlyZXR1cm4gbmV3IEFjKHtmcnVzdHVtOnIsb3JpZ2luOmksb3JpZW50YXRpb246cyx2ZXJ0ZXhGb3JtYXQ6ZixfZHJhd05lYXJQbGFuZTp1fSk7bGV0IGM9bz09PW4uX2ZydXN0dW1UeXBlP24uX2ZydXN0dW06dm9pZCAwO3JldHVybiBuLl9mcnVzdHVtPXIuY2xvbmUoYyksbi5fZnJ1c3R1bVR5cGU9byxuLl9vcmlnaW49YS5jbG9uZShpLG4uX29yaWdpbiksbi5fb3JpZW50YXRpb249dGUuY2xvbmUocyxuLl9vcmllbnRhdGlvbiksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGYsbi5fdmVydGV4Rm9ybWF0KSxuLl9kcmF3TmVhclBsYW5lPXUsbn07dUw9bmV3IFosbEw9bmV3IHN0LEJfPW5ldyBzdCxrTz1uZXcgYSxHTz1uZXcgYSxWTz1uZXcgYSxwTD1uZXcgYSxkTD1uZXcgYSxtTD1uZXcgYSxUcz1uZXcgQXJyYXkoMyksV2Y9bmV3IEFycmF5KDQpO1dmWzBdPW5ldyBtZSgtMSwtMSwxLDEpO1dmWzFdPW5ldyBtZSgxLC0xLDEsMSk7V2ZbMl09bmV3IG1lKDEsMSwxLDEpO1dmWzNdPW5ldyBtZSgtMSwxLDEsMSk7ek89bmV3IEFycmF5KDQpO2ZvcihsZXQgdD0wO3Q8NDsrK3Qpek9bdF09bmV3IG1lO0FjLl9jb21wdXRlTmVhckZhclBsYW5lcz1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYpe2xldCB1PVouZnJvbVF1YXRlcm5pb24oZSx1TCksYz1pPz9rTyxsPXM/P0dPLHA9Zj8/Vk87Yz1aLmdldENvbHVtbih1LDAsYyksbD1aLmdldENvbHVtbih1LDEsbCkscD1aLmdldENvbHVtbih1LDIscCksYS5ub3JtYWxpemUoYyxjKSxhLm5vcm1hbGl6ZShsLGwpLGEubm9ybWFsaXplKHAscCksYS5uZWdhdGUoYyxjKTtsZXQgZD1zdC5jb21wdXRlVmlldyh0LHAsbCxjLGxMKSxoLF8sZz1vLnByb2plY3Rpb25NYXRyaXg7aWYobj09PVNkKXtsZXQgYj1zdC5tdWx0aXBseShnLGQsQl8pO189c3QuaW52ZXJzZShiLEJfKX1lbHNlIGg9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGQsQl8pO20oXyk/KFRzWzBdPW8ubmVhcixUc1sxXT1vLmZhcik6KFRzWzBdPTAsVHNbMV09by5uZWFyLFRzWzJdPW8uZmFyKTtmb3IobGV0IGI9MDtiPDI7KytiKWZvcihsZXQgdz0wO3c8NDsrK3cpe2xldCBPPW1lLmNsb25lKFdmW3ddLHpPW3ddKTtpZihtKF8pKXtPPXN0Lm11bHRpcGx5QnlWZWN0b3IoXyxPLE8pO2xldCBFPTEvTy53O2EubXVsdGlwbHlCeVNjYWxhcihPLEUsTyksYS5zdWJ0cmFjdChPLHQsTyksYS5ub3JtYWxpemUoTyxPKTtsZXQgVD1hLmRvdChwLE8pO2EubXVsdGlwbHlCeVNjYWxhcihPLFRzW2JdL1QsTyksYS5hZGQoTyx0LE8pfWVsc2V7bGV0IEU9by5vZmZDZW50ZXJGcnVzdHVtO20oRSkmJihvPUUpO2xldCBUPVRzW2JdLHg9VHNbYisxXTtPLng9KE8ueCooby5yaWdodC1vLmxlZnQpK28ubGVmdCtvLnJpZ2h0KSouNSxPLnk9KE8ueSooby50b3Atby5ib3R0b20pK28uYm90dG9tK28udG9wKSouNSxPLno9KE8ueiooVC14KS1ULXgpKi41LE8udz0xLHN0Lm11bHRpcGx5QnlWZWN0b3IoaCxPLE8pfXJbMTIqYit3KjNdPU8ueCxyWzEyKmIrdyozKzFdPU8ueSxyWzEyKmIrdyozKzJdPU8uen19O0FjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2ZydXN0dW1UeXBlLG49dC5fZnJ1c3R1bSxvPXQuX29yaWdpbixyPXQuX29yaWVudGF0aW9uLGk9dC5fZHJhd05lYXJQbGFuZSxzPXQuX3ZlcnRleEZvcm1hdCxmPWk/Njo1LHU9bmV3IEZsb2F0NjRBcnJheSg3Mik7QWMuX2NvbXB1dGVOZWFyRmFyUGxhbmVzKG8scixlLG4sdSk7bGV0IGM9MjQ7dVtjXT11WzEyXSx1W2MrMV09dVsxM10sdVtjKzJdPXVbMTRdLHVbYyszXT11WzBdLHVbYys0XT11WzFdLHVbYys1XT11WzJdLHVbYys2XT11WzldLHVbYys3XT11WzEwXSx1W2MrOF09dVsxMV0sdVtjKzldPXVbMjFdLHVbYysxMF09dVsyMl0sdVtjKzExXT11WzIzXSxjKz0xMix1W2NdPXVbMTVdLHVbYysxXT11WzE2XSx1W2MrMl09dVsxN10sdVtjKzNdPXVbM10sdVtjKzRdPXVbNF0sdVtjKzVdPXVbNV0sdVtjKzZdPXVbMF0sdVtjKzddPXVbMV0sdVtjKzhdPXVbMl0sdVtjKzldPXVbMTJdLHVbYysxMF09dVsxM10sdVtjKzExXT11WzE0XSxjKz0xMix1W2NdPXVbM10sdVtjKzFdPXVbNF0sdVtjKzJdPXVbNV0sdVtjKzNdPXVbMTVdLHVbYys0XT11WzE2XSx1W2MrNV09dVsxN10sdVtjKzZdPXVbMThdLHVbYys3XT11WzE5XSx1W2MrOF09dVsyMF0sdVtjKzldPXVbNl0sdVtjKzEwXT11WzddLHVbYysxMV09dVs4XSxjKz0xMix1W2NdPXVbNl0sdVtjKzFdPXVbN10sdVtjKzJdPXVbOF0sdVtjKzNdPXVbMThdLHVbYys0XT11WzE5XSx1W2MrNV09dVsyMF0sdVtjKzZdPXVbMjFdLHVbYys3XT11WzIyXSx1W2MrOF09dVsyM10sdVtjKzldPXVbOV0sdVtjKzEwXT11WzEwXSx1W2MrMTFdPXVbMTFdLGl8fCh1PXUuc3ViYXJyYXkoMTIpKTtsZXQgbD1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dX0pfSk7aWYobShzLm5vcm1hbCl8fG0ocy50YW5nZW50KXx8bShzLmJpdGFuZ2VudCl8fG0ocy5zdCkpe2xldCBkPW0ocy5ub3JtYWwpP25ldyBGbG9hdDMyQXJyYXkoMTIqZik6dm9pZCAwLGg9bShzLnRhbmdlbnQpP25ldyBGbG9hdDMyQXJyYXkoMTIqZik6dm9pZCAwLF89bShzLmJpdGFuZ2VudCk/bmV3IEZsb2F0MzJBcnJheSgxMipmKTp2b2lkIDAsZz1tKHMuc3QpP25ldyBGbG9hdDMyQXJyYXkoOCpmKTp2b2lkIDAsYj1rTyx3PUdPLE89Vk8sRT1hLm5lZ2F0ZShiLHBMKSxUPWEubmVnYXRlKHcsZEwpLHg9YS5uZWdhdGUoTyxtTCk7Yz0wLGkmJihSYShjLGQsaCxfLGcseCxiLHcpLGMrPTEyKSxSYShjLGQsaCxfLGcsTyxFLHcpLGMrPTEyLFJhKGMsZCxoLF8sZyxFLHgsdyksYys9MTIsUmEoYyxkLGgsXyxnLFQseCxFKSxjKz0xMixSYShjLGQsaCxfLGcsYixPLHcpLGMrPTEyLFJhKGMsZCxoLF8sZyx3LE8sRSksbShkKSYmKGwubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpkfSkpLG0oaCkmJihsLnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmh9KSksbShfKSYmKGwuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLG0oZykmJihsLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpnfSkpfWxldCBwPW5ldyBVaW50MTZBcnJheSg2KmYpO2ZvcihsZXQgZD0wO2Q8ZjsrK2Qpe2xldCBoPWQqNixfPWQqNDtwW2hdPV8scFtoKzFdPV8rMSxwW2grMl09XysyLHBbaCszXT1fLHBbaCs0XT1fKzIscFtoKzVdPV8rM31yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmwsaW5kaWNlczpwLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOkF0LmZyb21WZXJ0aWNlcyh1KX0pfTtYZj1BY30pO3ZhciBrXz17fTtsZShrXyx7ZGVmYXVsdDooKT0+X0x9KTtmdW5jdGlvbiBoTCh0LGUpe3JldHVybiBtKGUpJiYodD1YZi51bnBhY2sodCxlKSksWGYuY3JlYXRlR2VvbWV0cnkodCl9dmFyIF9MLEdfPSQoKCk9PntmdCgpO1VfKCk7X0w9aEx9KTtmdW5jdGlvbiBZZih0KXt5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMiLHQpLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5mcnVzdHVtIix0LmZydXN0dW0pLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmlnaW4iLHQub3JpZ2luKSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZW50YXRpb24iLHQub3JpZW50YXRpb24pO2xldCBlPXQuZnJ1c3R1bSxuPXQub3JpZW50YXRpb24sbz10Lm9yaWdpbixyPXQuX2RyYXdOZWFyUGxhbmU/PyEwLGkscztlIGluc3RhbmNlb2YgTm8/KGk9Vl8scz1Oby5wYWNrZWRMZW5ndGgpOmUgaW5zdGFuY2VvZiBNbyYmKGk9eUwscz1Nby5wYWNrZWRMZW5ndGgpLHRoaXMuX2ZydXN0dW1UeXBlPWksdGhpcy5fZnJ1c3R1bT1lLmNsb25lKCksdGhpcy5fb3JpZ2luPWEuY2xvbmUobyksdGhpcy5fb3JpZW50YXRpb249dGUuY2xvbmUobiksdGhpcy5fZHJhd05lYXJQbGFuZT1yLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrcythLnBhY2tlZExlbmd0aCt0ZS5wYWNrZWRMZW5ndGh9dmFyIFZfLHlMLGdMLEFMLGJMLHdMLHpfLGpPPSQoKCk9Pnt2ZSgpO0R0KCk7V3QoKTtEZSgpO2Z0KCk7VV8oKTtZZSgpOyRlKCk7YW4oKTtGXygpO0RfKCk7dG4oKTtYbygpO1ZfPTAseUw9MTtZZi5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzA7bGV0IG89dC5fZnJ1c3R1bVR5cGUscj10Ll9mcnVzdHVtO3JldHVybiBlW24rK109byxvPT09Vl8/KE5vLnBhY2socixlLG4pLG4rPU5vLnBhY2tlZExlbmd0aCk6KE1vLnBhY2socixlLG4pLG4rPU1vLnBhY2tlZExlbmd0aCksYS5wYWNrKHQuX29yaWdpbixlLG4pLG4rPWEucGFja2VkTGVuZ3RoLHRlLnBhY2sodC5fb3JpZW50YXRpb24sZSxuKSxuKz10ZS5wYWNrZWRMZW5ndGgsZVtuXT10Ll9kcmF3TmVhclBsYW5lPzE6MCxlfTtnTD1uZXcgTm8sQUw9bmV3IE1vLGJMPW5ldyB0ZSx3TD1uZXcgYTtZZi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scjtvPT09Vl8/KHI9Tm8udW5wYWNrKHQsZSxnTCksZSs9Tm8ucGFja2VkTGVuZ3RoKToocj1Nby51bnBhY2sodCxlLEFMKSxlKz1Nby5wYWNrZWRMZW5ndGgpO2xldCBpPWEudW5wYWNrKHQsZSx3TCk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHM9dGUudW5wYWNrKHQsZSxiTCk7ZSs9dGUucGFja2VkTGVuZ3RoO2xldCBmPXRbZV09PT0xO2lmKCFtKG4pKXJldHVybiBuZXcgWWYoe2ZydXN0dW06cixvcmlnaW46aSxvcmllbnRhdGlvbjpzLF9kcmF3TmVhclBsYW5lOmZ9KTtsZXQgdT1vPT09bi5fZnJ1c3R1bVR5cGU/bi5fZnJ1c3R1bTp2b2lkIDA7cmV0dXJuIG4uX2ZydXN0dW09ci5jbG9uZSh1KSxuLl9mcnVzdHVtVHlwZT1vLG4uX29yaWdpbj1hLmNsb25lKGksbi5fb3JpZ2luKSxuLl9vcmllbnRhdGlvbj10ZS5jbG9uZShzLG4uX29yaWVudGF0aW9uKSxuLl9kcmF3TmVhclBsYW5lPWYsbn07WWYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fZnJ1c3R1bVR5cGUsbj10Ll9mcnVzdHVtLG89dC5fb3JpZ2luLHI9dC5fb3JpZW50YXRpb24saT10Ll9kcmF3TmVhclBsYW5lLHM9bmV3IEZsb2F0NjRBcnJheSgyNCk7WGYuX2NvbXB1dGVOZWFyRmFyUGxhbmVzKG8scixlLG4scyk7bGV0IGY9bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnN9KX0pLHUsYyxsPWk/MjoxLHA9bmV3IFVpbnQxNkFycmF5KDgqKGwrMSkpLGQ9aT8wOjE7Zm9yKDtkPDI7KytkKXU9aT9kKjg6MCxjPWQqNCxwW3VdPWMscFt1KzFdPWMrMSxwW3UrMl09YysxLHBbdSszXT1jKzIscFt1KzRdPWMrMixwW3UrNV09YyszLHBbdSs2XT1jKzMscFt1KzddPWM7Zm9yKGQ9MDtkPDI7KytkKXU9KGwrZCkqOCxjPWQqNCxwW3VdPWMscFt1KzFdPWMrNCxwW3UrMl09YysxLHBbdSszXT1jKzUscFt1KzRdPWMrMixwW3UrNV09Yys2LHBbdSs2XT1jKzMscFt1KzddPWMrNztyZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmYsaW5kaWNlczpwLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbVZlcnRpY2VzKHMpfSl9O3pfPVlmfSk7dmFyIGpfPXt9O2xlKGpfLHtkZWZhdWx0OigpPT5PTH0pO2Z1bmN0aW9uIFRMKHQsZSl7cmV0dXJuIG0oZSkmJih0PXpfLnVucGFjayh0LGUpKSx6Xy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgT0wsSF89JCgoKT0+e2Z0KCk7ak8oKTtPTD1UTH0pO2Z1bmN0aW9uIE9zKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX2VsbGlwc29pZD10LmVsbGlwc29pZD8/WS5kZWZhdWx0LHRoaXMuX3JlY3RhbmdsZT10LnJlY3RhbmdsZT8/TnQuTUFYX1ZBTFVFLHRoaXMuX3Byb2plY3Rpb249bmV3IGVvKHRoaXMuX2VsbGlwc29pZCksdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1g9dC5udW1iZXJPZkxldmVsWmVyb1RpbGVzWD8/Mix0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWT10Lm51bWJlck9mTGV2ZWxaZXJvVGlsZXNZPz8xfXZhciBITyxxTz0kKCgpPT57a2UoKTtXdCgpO3llKCk7ZnQoKTskdCgpO3hpKCk7S3QoKTtUbigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE9zLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX0scmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVjdGFuZ2xlfX0scHJvamVjdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb2plY3Rpb259fX0pO09zLnByb3RvdHlwZS5nZXROdW1iZXJPZlhUaWxlc0F0TGV2ZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX251bWJlck9mTGV2ZWxaZXJvVGlsZXNYPDx0fTtPcy5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWTw8dH07T3MucHJvdG90eXBlLnJlY3RhbmdsZVRvTmF0aXZlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJyZWN0YW5nbGUiLHQpO2xldCBuPVAudG9EZWdyZWVzKHQud2VzdCksbz1QLnRvRGVncmVlcyh0LnNvdXRoKSxyPVAudG9EZWdyZWVzKHQuZWFzdCksaT1QLnRvRGVncmVlcyh0Lm5vcnRoKTtyZXR1cm4gbShlKT8oZS53ZXN0PW4sZS5zb3V0aD1vLGUuZWFzdD1yLGUubm9ydGg9aSxlKTpuZXcgTnQobixvLHIsaSl9O09zLnByb3RvdHlwZS50aWxlWFlUb05hdGl2ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj10aGlzLnRpbGVYWVRvUmVjdGFuZ2xlKHQsZSxuLG8pO3JldHVybiByLndlc3Q9UC50b0RlZ3JlZXMoci53ZXN0KSxyLnNvdXRoPVAudG9EZWdyZWVzKHIuc291dGgpLHIuZWFzdD1QLnRvRGVncmVlcyhyLmVhc3QpLHIubm9ydGg9UC50b0RlZ3JlZXMoci5ub3J0aCkscn07T3MucHJvdG90eXBlLnRpbGVYWVRvUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPXRoaXMuX3JlY3RhbmdsZSxpPXRoaXMuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsKG4pLHM9dGhpcy5nZXROdW1iZXJPZllUaWxlc0F0TGV2ZWwobiksZj1yLndpZHRoL2ksdT10KmYrci53ZXN0LGM9KHQrMSkqZityLndlc3QsbD1yLmhlaWdodC9zLHA9ci5ub3J0aC1lKmwsZD1yLm5vcnRoLShlKzEpKmw7cmV0dXJuIG0obyl8fChvPW5ldyBOdCh1LGQsYyxwKSksby53ZXN0PXUsby5zb3V0aD1kLG8uZWFzdD1jLG8ubm9ydGg9cCxvfTtPcy5wcm90b3R5cGUucG9zaXRpb25Ub1RpbGVYWT1mdW5jdGlvbih0LGUsbil7bGV0IG89dGhpcy5fcmVjdGFuZ2xlO2lmKCFOdC5jb250YWlucyhvLHQpKXJldHVybjtsZXQgcj10aGlzLmdldE51bWJlck9mWFRpbGVzQXRMZXZlbChlKSxpPXRoaXMuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKGUpLHM9by53aWR0aC9yLGY9by5oZWlnaHQvaSx1PXQubG9uZ2l0dWRlO28uZWFzdDxvLndlc3QmJih1Kz1QLlRXT19QSSk7bGV0IGM9KHUtby53ZXN0KS9zfDA7Yz49ciYmKGM9ci0xKTtsZXQgbD0oby5ub3J0aC10LmxhdGl0dWRlKS9mfDA7cmV0dXJuIGw+PWkmJihsPWktMSksbShuKT8obi54PWMsbi55PWwsbik6bmV3IEooYyxsKX07SE89T3N9KTtmdW5jdGlvbiAkTyh0KXtjdC5mcm9tUmFkaWFucyh0LmVhc3QsdC5ub3J0aCwwLCRmWzBdKSxjdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5ub3J0aCwwLCRmWzFdKSxjdC5mcm9tUmFkaWFucyh0LmVhc3QsdC5zb3V0aCwwLCRmWzJdKSxjdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5zb3V0aCwwLCRmWzNdKTtsZXQgZT0wLG49MCxvPTAscj0wLGk9UG4uX3RlcnJhaW5IZWlnaHRzTWF4TGV2ZWwscztmb3Iocz0wO3M8PWk7KytzKXtsZXQgZj0hMTtmb3IobGV0IHU9MDt1PDQ7Kyt1KXtsZXQgYz0kZlt1XTtpZihSTC5wb3NpdGlvblRvVGlsZVhZKGMscyxaZiksdT09PTApbz1aZi54LHI9WmYueTtlbHNlIGlmKG8hPT1aZi54fHxyIT09WmYueSl7Zj0hMDticmVha319aWYoZilicmVhaztlPW8sbj1yfWlmKHMhPT0wKXJldHVybnt4OmUseTpuLGxldmVsOnM+aT9pOnMtMX19dmFyIEtPLFdPLFhPLHFfLEVMLFlPLFJMLCRmLFpmLFBuLHhkLEtfPSQoKCk9Pnt2ZSgpO1FtKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtmdCgpO0h0KCk7JHQoKTtxTygpO1RuKCk7bWYoKTtLTz1uZXcgYSxXTz1uZXcgYSxYTz1uZXcgY3QscV89bmV3IGEsRUw9bmV3IGEsWU89bmV3IEF0LFJMPW5ldyBITywkZj1bbmV3IGN0LG5ldyBjdCxuZXcgY3QsbmV3IGN0XSxaZj1uZXcgSixQbj17fTtQbi5pbml0aWFsaXplPWZ1bmN0aW9uKCl7bGV0IHQ9UG4uX2luaXRQcm9taXNlO3JldHVybiBtKHQpfHwodD1yaS5mZXRjaEpzb24oYnAoIkFzc2V0cy9hcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmpzb24iKSkudGhlbihmdW5jdGlvbihlKXtQbi5fdGVycmFpbkhlaWdodHM9ZX0pLFBuLl9pbml0UHJvbWlzZT10KSx0fTtQbi5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHM9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oUG4uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgRCgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPWU/P1kuZGVmYXVsdDtsZXQgbj0kTyh0KSxvPVBuLl9kZWZhdWx0TWluVGVycmFpbkhlaWdodCxyPVBuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKG4pKXtsZXQgaT1gJHtuLmxldmVsfS0ke24ueH0tJHtuLnl9YCxzPVBuLl90ZXJyYWluSGVpZ2h0c1tpXTttKHMpJiYobz1zWzBdLHI9c1sxXSksZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihOdC5ub3J0aGVhc3QodCxYTyksS08pLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTnQuc291dGh3ZXN0KHQsWE8pLFdPKSxhLm1pZHBvaW50KFdPLEtPLHFfKTtsZXQgZj1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocV8sRUwpO2lmKG0oZikpe2xldCB1PWEuZGlzdGFuY2UocV8sZik7bz1NYXRoLm1pbihvLC11KX1lbHNlIG89UG4uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0fXJldHVybiBvPU1hdGgubWF4KFBuLl9kZWZhdWx0TWluVGVycmFpbkhlaWdodCxvKSx7bWluaW11bVRlcnJhaW5IZWlnaHQ6byxtYXhpbXVtVGVycmFpbkhlaWdodDpyfX07UG4uZ2V0Qm91bmRpbmdTcGhlcmU9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oUG4uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgRCgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPWU/P1kuZGVmYXVsdDtsZXQgbj0kTyh0KSxvPVBuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKG4pKXtsZXQgaT1gJHtuLmxldmVsfS0ke24ueH0tJHtuLnl9YCxzPVBuLl90ZXJyYWluSGVpZ2h0c1tpXTttKHMpJiYobz1zWzFdKX1sZXQgcj1BdC5mcm9tUmVjdGFuZ2xlM0QodCxlLDApO3JldHVybiBBdC5mcm9tUmVjdGFuZ2xlM0QodCxlLG8sWU8pLEF0LnVuaW9uKHIsWU8scil9O1BuLl90ZXJyYWluSGVpZ2h0c01heExldmVsPTY7UG4uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0PTllMztQbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQ9LTFlNTtQbi5fdGVycmFpbkhlaWdodHM9dm9pZCAwO1BuLl9pbml0UHJvbWlzZT12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUG4se2luaXRpYWxpemVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbShQbi5fdGVycmFpbkhlaWdodHMpfX19KTt4ZD1Qbn0pO2Z1bmN0aW9uIFJzKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBEKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKHQuYXJjVHlwZSkmJnQuYXJjVHlwZSE9PWhlLkdFT0RFU0lDJiZ0LmFyY1R5cGUhPT1oZS5SSFVNQil0aHJvdyBuZXcgRCgiVmFsaWQgb3B0aW9ucyBmb3IgYXJjVHlwZSBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTt0aGlzLndpZHRoPXQud2lkdGg/PzEsdGhpcy5fcG9zaXRpb25zPWUsdGhpcy5ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz85OTk5LHRoaXMubG9vcD10Lmxvb3A/PyExLHRoaXMuYXJjVHlwZT10LmFyY1R5cGU/P2hlLkdFT0RFU0lDLHRoaXMuX2VsbGlwc29pZD1ZLmRlZmF1bHQsdGhpcy5fcHJvamVjdGlvbkluZGV4PTAsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlR3JvdW5kUG9seWxpbmVHZW9tZXRyeSIsdGhpcy5fc2NlbmUzRE9ubHk9ITF9ZnVuY3Rpb24gSl8odCxlLG4sbyxyKXtsZXQgaT1HbyhvLHQsMCx4TCkscz1HbyhvLHQsbixRTyksZj1HbyhvLGUsMCxKTyksdT1xaShzLGksUU8pLGM9cWkoZixpLEpPKTtyZXR1cm4gYS5jcm9zcyhjLHUsciksYS5ub3JtYWxpemUocixyKX1mdW5jdGlvbiBXXyh0LGUsbixvLHIsaSxzLGYsdSxjLGwpe2lmKHI9PT0wKXJldHVybjtsZXQgcDtpPT09aGUuR0VPREVTSUM/cD1uZXcgdWQodCxlLHMpOmk9PT1oZS5SSFVNQiYmKHA9bmV3IEpvKHQsZSxzKSk7bGV0IGQ9cC5zdXJmYWNlRGlzdGFuY2U7aWYoZDxyKXJldHVybjtsZXQgaD1KXyh0LGUsbyxzLE5MKSxfPU1hdGguY2VpbChkL3IpLGc9ZC9fLGI9Zyx3PV8tMSxPPWYubGVuZ3RoO2ZvcihsZXQgRT0wO0U8dztFKyspe2xldCBUPXAuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShiLENMKSx4PUdvKHMsVCxuLFBMKSxNPUdvKHMsVCxvLE1MKTthLnBhY2soaCxmLE8pLGEucGFjayh4LHUsTyksYS5wYWNrKE0sYyxPKSxsLnB1c2goVC5sYXRpdHVkZSksbC5wdXNoKFQubG9uZ2l0dWRlKSxPKz0zLGIrPWd9fWZ1bmN0aW9uIEdvKHQsZSxuLG8pe3JldHVybiBjdC5jbG9uZShlLFhfKSxYXy5oZWlnaHQ9bixjdC50b0NhcnRlc2lhbihYXyx0LG8pfWZ1bmN0aW9uIHFpKHQsZSxuKXtyZXR1cm4gYS5zdWJ0cmFjdCh0LGUsbiksYS5ub3JtYWxpemUobixuKSxufWZ1bmN0aW9uIHRFKHQsZSxuLG8pe3JldHVybiBvPXFpKHQsZSxvKSxvPWEuY3Jvc3MobyxuLG8pLG89YS5ub3JtYWxpemUobyxvKSxvPWEuY3Jvc3MobixvLG8pLG99ZnVuY3Rpb24gWV8odCxlLG4sbyxyKXtsZXQgaT1xaShuLGUsQUUpLHM9dEUodCxlLGksSUwpLGY9dEUobyxlLGksdkwpO2lmKFAuZXF1YWxzRXBzaWxvbihhLmRvdChzLGYpLERMLFAuRVBTSUxPTjUpKXJldHVybiByPWEuY3Jvc3MoaSxzLHIpLHI9YS5ub3JtYWxpemUocixyKSxyO3I9YS5hZGQoZixzLHIpLHI9YS5ub3JtYWxpemUocixyKTtsZXQgdT1hLmNyb3NzKGkscixGTCk7cmV0dXJuIGEuZG90KGYsdSk8TEwmJihyPWEubmVnYXRlKHIscikpLHJ9ZnVuY3Rpb24gb0UodCxlLG4sbyl7bGV0IHI9cWkobixlLHpMKSxpPWEuZG90KHIsdCk7aWYoaT5fRXx8aTxaTyl7bGV0IHM9cWkobyxuLEFFKSxmPWk8Wk8/UC5QSV9PVkVSX1RXTzotUC5QSV9PVkVSX1RXTyx1PXRlLmZyb21BeGlzQW5nbGUocyxmLEhMKSxjPVouZnJvbVF1YXRlcm5pb24odSxqTCk7cmV0dXJuIFoubXVsdGlwbHlCeVZlY3RvcihjLHQsdCksITB9cmV0dXJuITF9ZnVuY3Rpb24gUWYodCxlLG4sbyxyKXtsZXQgaT1jdC50b0NhcnRlc2lhbihlLHQuX2VsbGlwc29pZCxxTCkscz1hLmFkZChpLG4saUUpLGY9ITEsdT10Ll9lbGxpcHNvaWQsYz11LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHMsckUpO01hdGguYWJzKGUubG9uZ2l0dWRlLWMubG9uZ2l0dWRlKT5QLlBJX09WRVJfVFdPJiYoZj0hMCxzPWEuc3VidHJhY3QoaSxuLGlFKSxjPXUuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocyxyRSkpLGMuaGVpZ2h0PTA7bGV0IGw9dC5wcm9qZWN0KGMscik7cmV0dXJuIHI9YS5zdWJ0cmFjdChsLG8sciksci56PTAscj1hLm5vcm1hbGl6ZShyLHIpLGYmJmEubmVnYXRlKHIscikscn1mdW5jdGlvbiBjRSh0LGUsbixvLHIsaSl7bGV0IHM9YS5zdWJ0cmFjdChlLHQsS0wpO2Eubm9ybWFsaXplKHMscyk7bGV0IGY9bi15RSx1PWEubXVsdGlwbHlCeVNjYWxhcihzLGYsc0UpO2EuYWRkKHQsdSxyKTtsZXQgYz1vLWdFO3U9YS5tdWx0aXBseUJ5U2NhbGFyKHMsYyxzRSksYS5hZGQoZSx1LGkpfWZ1bmN0aW9uIE1kKHQsZSl7bGV0IG49b24uZ2V0UG9pbnREaXN0YW5jZShOZCx0KSxvPW9uLmdldFBvaW50RGlzdGFuY2UoTmQsZSkscj1XTDtQLmVxdWFsc0Vwc2lsb24obiwwLFAuRVBTSUxPTjIpPyhyPXFpKGUsdCxyKSxhLm11bHRpcGx5QnlTY2FsYXIocixQLkVQU0lMT04yLHIpLGEuYWRkKHQscix0KSk6UC5lcXVhbHNFcHNpbG9uKG8sMCxQLkVQU0lMT04yKSYmKHI9cWkodCxlLHIpLGEubXVsdGlwbHlCeVNjYWxhcihyLFAuRVBTSUxPTjIsciksYS5hZGQoZSxyLGUpKX1mdW5jdGlvbiBYTCh0LGUpe2xldCBuPU1hdGguYWJzKHQubG9uZ2l0dWRlKSxvPU1hdGguYWJzKGUubG9uZ2l0dWRlKTtpZihQLmVxdWFsc0Vwc2lsb24obixQLlBJLFAuRVBTSUxPTjExKSl7bGV0IHI9UC5zaWduKGUubG9uZ2l0dWRlKTtyZXR1cm4gdC5sb25naXR1ZGU9cioobi1QLkVQU0lMT04xMSksMX1lbHNlIGlmKFAuZXF1YWxzRXBzaWxvbihvLFAuUEksUC5FUFNJTE9OMTEpKXtsZXQgcj1QLnNpZ24odC5sb25naXR1ZGUpO3JldHVybiBlLmxvbmdpdHVkZT1yKihvLVAuRVBTSUxPTjExKSwyfXJldHVybiAwfWZ1bmN0aW9uIGREKHQsZSxuLG8scixpLHMpe2xldCBmLHUsYz1lLl9lbGxpcHNvaWQsbD1uLmxlbmd0aC8zLTEscD1sKjgsZD1wKjQsaD1sKjM2LF89cD42NTUzNT9uZXcgVWludDMyQXJyYXkoaCk6bmV3IFVpbnQxNkFycmF5KGgpLGc9bmV3IEZsb2F0NjRBcnJheShwKjMpLGI9bmV3IEZsb2F0MzJBcnJheShkKSx3PW5ldyBGbG9hdDMyQXJyYXkoZCksTz1uZXcgRmxvYXQzMkFycmF5KGQpLEU9bmV3IEZsb2F0MzJBcnJheShkKSxUPW5ldyBGbG9hdDMyQXJyYXkoZCkseCxNLE4sRjtzJiYoeD1uZXcgRmxvYXQzMkFycmF5KGQpLE09bmV3IEZsb2F0MzJBcnJheShkKSxOPW5ldyBGbG9hdDMyQXJyYXkoZCksRj1uZXcgRmxvYXQzMkFycmF5KHAqMikpO2xldCBJPWkubGVuZ3RoLzIsdj0wLEI9YkU7Qi5oZWlnaHQ9MDtsZXQgQT13RTtBLmhlaWdodD0wO2xldCBTPWFFLEM9JF87aWYocylmb3IodT0wLGY9MTtmPEk7ZisrKUIubGF0aXR1ZGU9aVt1XSxCLmxvbmdpdHVkZT1pW3UrMV0sQS5sYXRpdHVkZT1pW3UrMl0sQS5sb25naXR1ZGU9aVt1KzNdLFM9ZS5wcm9qZWN0KEIsUyksQz1lLnByb2plY3QoQSxDKSx2Kz1hLmRpc3RhbmNlKFMsQyksdSs9MjtsZXQgTD1vLmxlbmd0aC8zO0M9YS51bnBhY2sobywwLEMpO2xldCB6PTA7Zm9yKHU9MyxmPTE7ZjxMO2YrKylTPWEuY2xvbmUoQyxTKSxDPWEudW5wYWNrKG8sdSxDKSx6Kz1hLmRpc3RhbmNlKFMsQyksdSs9MztsZXQgajt1PTM7bGV0IGs9MCxxPTAsVz0wLFI9MCxudD0hMSxhdD1hLnVucGFjayhuLDAsdUUpLGx0PWEudW5wYWNrKG8sMCwkXyksX3Q9YS51bnBhY2sociwwLGxFKTtpZih0KXtsZXQgR3Q9YS51bnBhY2sobixuLmxlbmd0aC02LGZFKTtvRShfdCxHdCxhdCxsdCkmJihfdD1hLm5lZ2F0ZShfdCxfdCkpfWxldCBvdD0wLFB0PTAsZ3Q9MDtmb3IoZj0wO2Y8bDtmKyspe2xldCBHdD1hLmNsb25lKGF0LGZFKSxwZT1hLmNsb25lKGx0LGFFKSxyZT1hLmNsb25lKF90LFlMKTtudCYmKHJlPWEubmVnYXRlKHJlLHJlKSksYXQ9YS51bnBhY2sobix1LHVFKSxsdD1hLnVucGFjayhvLHUsJF8pLF90PWEudW5wYWNrKHIsdSxsRSksbnQ9b0UoX3QsR3QsYXQsbHQpLEIubGF0aXR1ZGU9aVtrXSxCLmxvbmdpdHVkZT1pW2srMV0sQS5sYXRpdHVkZT1pW2srMl0sQS5sb25naXR1ZGU9aVtrKzNdO2xldCBkZSxmZSxadCxRdDtpZihzKXtsZXQgRmU9WEwoQixBKTtkZT1lLnByb2plY3QoQixuRCksZmU9ZS5wcm9qZWN0KEEsb0QpO2xldCBEbj1xaShmZSxkZSxkRSk7RG4ueT1NYXRoLmFicyhEbi55KSxadD1aXyxRdD1RXyxGZT09PTB8fGEuZG90KERuLGEuVU5JVF9ZKT5fRT8oWnQ9UWYoZSxCLHJlLGRlLFpfKSxRdD1RZihlLEEsX3QsZmUsUV8pKTpGZT09PTE/KFF0PVFmKGUsQSxfdCxmZSxRXyksWnQueD0wLFp0Lnk9UC5zaWduKEIubG9uZ2l0dWRlLU1hdGguYWJzKEEubG9uZ2l0dWRlKSksWnQuej0wKTooWnQ9UWYoZSxCLHJlLGRlLFpfKSxRdC54PTAsUXQueT1QLnNpZ24oQi5sb25naXR1ZGUtQS5sb25naXR1ZGUpLFF0Lno9MCl9bGV0IE5lPWEuZGlzdGFuY2UocGUsbHQpLGdlPVFzLmZyb21DYXJ0ZXNpYW4oR3QsZkQpLEVlPWEuc3VidHJhY3QoYXQsR3QsckQpLHVuPWEubm9ybWFsaXplKEVlLHBFKSxWZT1hLnN1YnRyYWN0KHBlLEd0LGlEKTtWZT1hLm5vcm1hbGl6ZShWZSxWZSk7bGV0IGJlPWEuY3Jvc3ModW4sVmUscEUpO2JlPWEubm9ybWFsaXplKGJlLGJlKTtsZXQgbG49YS5jcm9zcyhWZSxyZSxjRCk7bG49YS5ub3JtYWxpemUobG4sbG4pO2xldCBwbj1hLnN1YnRyYWN0KGx0LGF0LHNEKTtwbj1hLm5vcm1hbGl6ZShwbixwbik7bGV0IEVuPWEuY3Jvc3MoX3QscG4sYUQpO0VuPWEubm9ybWFsaXplKEVuLEVuKTtsZXQgb2U9TmUveixZdD1vdC96LHplPTAsZG4sc24sbW4sbG89MCxxbj0wO2lmKHMpe3plPWEuZGlzdGFuY2UoZGUsZmUpLGRuPVFzLmZyb21DYXJ0ZXNpYW4oZGUsdUQpLHNuPWEuc3VidHJhY3QoZmUsZGUsZEUpLG1uPWEubm9ybWFsaXplKHNuLGxEKTtsZXQgRmU9bW4ueDttbi54PW1uLnksbW4ueT0tRmUsbG89emUvdixxbj1QdC92fWZvcihqPTA7ajw4O2orKyl7bGV0IEZlPVIraio0LERuPXEraioyLFhuPUZlKzMsSG89ajw0PzE6LTEscm49aj09PTJ8fGo9PT0zfHxqPT09Nnx8aj09PTc/MTotMTthLnBhY2soZ2UuaGlnaCxiLEZlKSxiW1huXT1FZS54LGEucGFjayhnZS5sb3csdyxGZSksd1tYbl09RWUueSxhLnBhY2sobG4sTyxGZSksT1tYbl09RWUueixhLnBhY2soRW4sRSxGZSksRVtYbl09b2UqSG8sYS5wYWNrKGJlLFQsRmUpO2xldCBSbj1ZdCpybjtSbj09PTAmJnJuPDAmJihSbj05KSxUW1huXT1SbixzJiYoeFtGZV09ZG4uaGlnaC54LHhbRmUrMV09ZG4uaGlnaC55LHhbRmUrMl09ZG4ubG93LngseFtGZSszXT1kbi5sb3cueSxOW0ZlXT0tWnQueSxOW0ZlKzFdPVp0LngsTltGZSsyXT1RdC55LE5bRmUrM109LVF0LngsTVtGZV09c24ueCxNW0ZlKzFdPXNuLnksTVtGZSsyXT1tbi54LE1bRmUrM109bW4ueSxGW0RuXT1sbypIbyxSbj1xbipybixSbj09PTAmJnJuPDAmJihSbj05KSxGW0RuKzFdPVJuKX1sZXQgUWU9dEQsY249ZUQsV2U9UUwsaG49SkwscG89TnQuZnJvbUNhcnRvZ3JhcGhpY0FycmF5KCRMLFpMKSxLbj14ZC5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHMocG8sYyksV249S24ubWluaW11bVRlcnJhaW5IZWlnaHQsbW89S24ubWF4aW11bVRlcnJhaW5IZWlnaHQ7Z3QrPU1hdGguYWJzKFduKSxndCs9TWF0aC5hYnMobW8pLGNFKEd0LHBlLFduLG1vLFFlLFdlKSxjRShhdCxsdCxXbixtbyxjbixobik7bGV0IGplPWEubXVsdGlwbHlCeVNjYWxhcihiZSxQLkVQU0lMT041LG1FKTthLmFkZChRZSxqZSxRZSksYS5hZGQoY24samUsY24pLGEuYWRkKFdlLGplLFdlKSxhLmFkZChobixqZSxobiksTWQoUWUsY24pLE1kKFdlLGhuKSxhLnBhY2soUWUsZyxXKSxhLnBhY2soY24sZyxXKzMpLGEucGFjayhobixnLFcrNiksYS5wYWNrKFdlLGcsVys5KSxqZT1hLm11bHRpcGx5QnlTY2FsYXIoYmUsLTIqUC5FUFNJTE9ONSxtRSksYS5hZGQoUWUsamUsUWUpLGEuYWRkKGNuLGplLGNuKSxhLmFkZChXZSxqZSxXZSksYS5hZGQoaG4samUsaG4pLE1kKFFlLGNuKSxNZChXZSxobiksYS5wYWNrKFFlLGcsVysxMiksYS5wYWNrKGNuLGcsVysxNSksYS5wYWNrKGhuLGcsVysxOCksYS5wYWNrKFdlLGcsVysyMSksays9Mix1Kz0zLHErPTE2LFcrPTI0LFIrPTMyLG90Kz1OZSxQdCs9emV9dT0wO2xldCBSdD0wO2ZvcihmPTA7ZjxsO2YrKyl7Zm9yKGo9MDtqPGhFO2orKylfW3Ural09VEVbal0rUnQ7UnQrPTgsdSs9aEV9bGV0IGR0PXBEO0F0LmZyb21WZXJ0aWNlcyhuLGEuWkVSTywzLGR0WzBdKSxBdC5mcm9tVmVydGljZXMobyxhLlpFUk8sMyxkdFsxXSk7bGV0IHJ0PUF0LmZyb21Cb3VuZGluZ1NwaGVyZXMoZHQpO3J0LnJhZGl1cys9Z3QvKGwqMik7bGV0IHh0PXtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsbm9ybWFsaXplOiExLHZhbHVlczpnfSksc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYOkVzKGIpLHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WTpFcyh3KSxzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaOkVzKE8pLGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblg6RXMoRSkscmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZOkVzKFQpfTtyZXR1cm4gcyYmKHh0LnN0YXJ0SGlMbzJEPUVzKHgpLHh0Lm9mZnNldEFuZFJpZ2h0MkQ9RXMoTSkseHQuc3RhcnRFbmROb3JtYWxzMkQ9RXMoTikseHQudGV4Y29vcmROb3JtYWxpemF0aW9uMkQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsbm9ybWFsaXplOiExLHZhbHVlczpGfSkpLG5ldyBVdCh7YXR0cmlidXRlczp4dCxpbmRpY2VzOl8sYm91bmRpbmdTcGhlcmU6cnR9KX1mdW5jdGlvbiBFcyh0KXtyZXR1cm4gbmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsbm9ybWFsaXplOiExLHZhbHVlczp0fSl9dmFyIHR5LFNMLF9FLFpPLHlFLGdFLHhMLFFPLEpPLENMLFBMLE1MLE5MLFhfLElMLHZMLEZMLEFFLExMLERMLE5kLEJMLFVMLGtMLEdMLFZMLENkLFBkLGVFLG5FLHpMLGpMLEhMLHJFLHFMLGlFLEtMLHNFLFdMLGJFLHdFLGFFLCRfLGZFLHVFLFlMLGxFLCRMLFpMLFFMLEpMLHRELGVELG5ELG9ELFpfLFFfLHJELGlELHNELHBFLGNELGFELGZELHVELGRFLGxELG1FLHBELFRFLGhFLGV5LE9FPSQoKCk9PntLXygpO3VjKCk7SHIoKTt2ZSgpO0R0KCk7SWUoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtXMCgpO05mKCk7VmgoKTt4aSgpO1llKCk7JGUoKTtlYygpO0t0KCk7VW4oKTt1cygpO1hvKCk7VG4oKTtzYygpO3R5PVtlbyxyb10sU0w9dHkubGVuZ3RoLF9FPU1hdGguY29zKFAudG9SYWRpYW5zKDMwKSksWk89TWF0aC5jb3MoUC50b1JhZGlhbnMoMTUwKSkseUU9MCxnRT0xZTM7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUnMucHJvdG90eXBlLHtwYWNrZWRMZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiAxK3RoaXMuX3Bvc2l0aW9ucy5sZW5ndGgqMysxKzErMStZLnBhY2tlZExlbmd0aCsxKzF9fX0pO1JzLnNldFByb2plY3Rpb25BbmRFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlKXtsZXQgbj0wO2ZvcihsZXQgbz0wO288U0w7bysrKWlmKGUgaW5zdGFuY2VvZiB0eVtvXSl7bj1vO2JyZWFrfXQuX3Byb2plY3Rpb25JbmRleD1uLHQuX2VsbGlwc29pZD1lLmVsbGlwc29pZH07eEw9bmV3IGEsUU89bmV3IGEsSk89bmV3IGE7Q0w9bmV3IGN0LFBMPW5ldyBhLE1MPW5ldyBhLE5MPW5ldyBhO1hfPW5ldyBjdDtScy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKTtsZXQgbz1uPz8wLHI9dC5fcG9zaXRpb25zLGk9ci5sZW5ndGg7ZVtvKytdPWk7Zm9yKGxldCBzPTA7czxpOysrcyl7bGV0IGY9cltzXTthLnBhY2soZixlLG8pLG8rPTN9cmV0dXJuIGVbbysrXT10LmdyYW51bGFyaXR5LGVbbysrXT10Lmxvb3A/MTowLGVbbysrXT10LmFyY1R5cGUsWS5wYWNrKHQuX2VsbGlwc29pZCxlLG8pLG8rPVkucGFja2VkTGVuZ3RoLGVbbysrXT10Ll9wcm9qZWN0aW9uSW5kZXgsZVtvKytdPXQuX3NjZW5lM0RPbmx5PzE6MCxlfTtScy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBvPWU/PzAscj10W28rK10saT1uZXcgQXJyYXkocik7Zm9yKGxldCBkPTA7ZDxyO2QrKylpW2RdPWEudW5wYWNrKHQsbyksbys9MztsZXQgcz10W28rK10sZj10W28rK109PT0xLHU9dFtvKytdLGM9WS51bnBhY2sodCxvKTtvKz1ZLnBhY2tlZExlbmd0aDtsZXQgbD10W28rK10scD10W28rK109PT0xO3JldHVybiBtKG4pfHwobj1uZXcgUnMoe3Bvc2l0aW9uczppfSkpLG4uX3Bvc2l0aW9ucz1pLG4uZ3JhbnVsYXJpdHk9cyxuLmxvb3A9ZixuLmFyY1R5cGU9dSxuLl9lbGxpcHNvaWQ9YyxuLl9wcm9qZWN0aW9uSW5kZXg9bCxuLl9zY2VuZTNET25seT1wLG59O0lMPW5ldyBhLHZMPW5ldyBhLEZMPW5ldyBhLEFFPW5ldyBhLExMPTAsREw9LTE7TmQ9b24uZnJvbVBvaW50Tm9ybWFsKGEuWkVSTyxhLlVOSVRfWSksQkw9bmV3IGEsVUw9bmV3IGEsa0w9bmV3IGEsR0w9bmV3IGEsVkw9bmV3IGEsQ2Q9bmV3IGEsUGQ9bmV3IGN0LGVFPW5ldyBjdCxuRT1uZXcgY3Q7UnMuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9IXQuX3NjZW5lM0RPbmx5LG49dC5sb29wLG89dC5fZWxsaXBzb2lkLHI9dC5ncmFudWxhcml0eSxpPXQuYXJjVHlwZSxzPW5ldyB0eVt0Ll9wcm9qZWN0aW9uSW5kZXhdKG8pLGY9eUUsdT1nRSxjLGwscD10Ll9wb3NpdGlvbnMsZD1wLmxlbmd0aDtkPT09MiYmKG49ITEpO2xldCBoLF8sZyxiLHc9bmV3IEpvKHZvaWQgMCx2b2lkIDAsbyksTyxFLFQseD1bcFswXV07Zm9yKGw9MDtsPGQtMTtsKyspaD1wW2xdLF89cFtsKzFdLE89eW8ubGluZVNlZ21lbnRQbGFuZShoLF8sTmQsQ2QpLG0oTykmJiFhLmVxdWFsc0Vwc2lsb24oTyxoLFAuRVBTSUxPTjcpJiYhYS5lcXVhbHNFcHNpbG9uKE8sXyxQLkVQU0lMT043KSYmKHQuYXJjVHlwZT09PWhlLkdFT0RFU0lDP3gucHVzaChhLmNsb25lKE8pKTp0LmFyY1R5cGU9PT1oZS5SSFVNQiYmKFQ9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhPLFBkKS5sb25naXR1ZGUsZz1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGgsUGQpLGI9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhfLGVFKSx3LnNldEVuZFBvaW50cyhnLGIpLEU9dy5maW5kSW50ZXJzZWN0aW9uV2l0aExvbmdpdHVkZShULG5FKSxPPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRSxDZCksbShPKSYmIWEuZXF1YWxzRXBzaWxvbihPLGgsUC5FUFNJTE9ONykmJiFhLmVxdWFsc0Vwc2lsb24oTyxfLFAuRVBTSUxPTjcpJiZ4LnB1c2goYS5jbG9uZShPKSkpKSx4LnB1c2goXyk7biYmKGg9cFtkLTFdLF89cFswXSxPPXlvLmxpbmVTZWdtZW50UGxhbmUoaCxfLE5kLENkKSxtKE8pJiYhYS5lcXVhbHNFcHNpbG9uKE8saCxQLkVQU0lMT043KSYmIWEuZXF1YWxzRXBzaWxvbihPLF8sUC5FUFNJTE9ONykmJih0LmFyY1R5cGU9PT1oZS5HRU9ERVNJQz94LnB1c2goYS5jbG9uZShPKSk6dC5hcmNUeXBlPT09aGUuUkhVTUImJihUPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoTyxQZCkubG9uZ2l0dWRlLGc9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhoLFBkKSxiPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoXyxlRSksdy5zZXRFbmRQb2ludHMoZyxiKSxFPXcuZmluZEludGVyc2VjdGlvbldpdGhMb25naXR1ZGUoVCxuRSksTz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEUsQ2QpLG0oTykmJiFhLmVxdWFsc0Vwc2lsb24oTyxoLFAuRVBTSUxPTjcpJiYhYS5lcXVhbHNFcHNpbG9uKE8sXyxQLkVQU0lMT043KSYmeC5wdXNoKGEuY2xvbmUoTykpKSkpO2xldCBNPXgubGVuZ3RoLE49bmV3IEFycmF5KE0pO2ZvcihsPTA7bDxNO2wrKyl7bGV0IG50PWN0LmZyb21DYXJ0ZXNpYW4oeFtsXSxvKTtudC5oZWlnaHQ9MCxOW2xdPW50fWlmKE49Q24oTixjdC5lcXVhbHNFcHNpbG9uKSxNPU4ubGVuZ3RoLE08MilyZXR1cm47bGV0IEY9W10sST1bXSx2PVtdLEI9W10sQT1CTCxTPVVMLEM9a0wsTD1HTCx6PVZMLGo9TlswXSxrPU5bMV0scT1OW00tMV07Zm9yKEE9R28obyxxLGYsQSksTD1HbyhvLGssZixMKSxTPUdvKG8saixmLFMpLEM9R28obyxqLHUsQyksbj96PVlfKEEsUyxDLEwseik6ej1KXyhqLGssdSxvLHopLGEucGFjayh6LEksMCksYS5wYWNrKFMsdiwwKSxhLnBhY2soQyxCLDApLEYucHVzaChqLmxhdGl0dWRlKSxGLnB1c2goai5sb25naXR1ZGUpLFdfKGosayxmLHUscixpLG8sSSx2LEIsRiksbD0xO2w8TS0xOysrbCl7QT1hLmNsb25lKFMsQSksUz1hLmNsb25lKEwsUyk7bGV0IG50PU5bbF07R28obyxudCx1LEMpLEdvKG8sTltsKzFdLGYsTCksWV8oQSxTLEMsTCx6KSxjPUkubGVuZ3RoLGEucGFjayh6LEksYyksYS5wYWNrKFMsdixjKSxhLnBhY2soQyxCLGMpLEYucHVzaChudC5sYXRpdHVkZSksRi5wdXNoKG50LmxvbmdpdHVkZSksV18oTltsXSxOW2wrMV0sZix1LHIsaSxvLEksdixCLEYpfWxldCBXPU5bTS0xXSxSPU5bTS0yXTtpZihTPUdvKG8sVyxmLFMpLEM9R28obyxXLHUsQyksbil7bGV0IG50PU5bMF07QT1HbyhvLFIsZixBKSxMPUdvKG8sbnQsZixMKSx6PVlfKEEsUyxDLEwseil9ZWxzZSB6PUpfKFIsVyx1LG8seik7aWYoYz1JLmxlbmd0aCxhLnBhY2soeixJLGMpLGEucGFjayhTLHYsYyksYS5wYWNrKEMsQixjKSxGLnB1c2goVy5sYXRpdHVkZSksRi5wdXNoKFcubG9uZ2l0dWRlKSxuKXtmb3IoV18oVyxqLGYsdSxyLGksbyxJLHYsQixGKSxjPUkubGVuZ3RoLGw9MDtsPDM7KytsKUlbYytsXT1JW2xdLHZbYytsXT12W2xdLEJbYytsXT1CW2xdO0YucHVzaChqLmxhdGl0dWRlKSxGLnB1c2goai5sb25naXR1ZGUpfXJldHVybiBkRChuLHMsdixCLEksRixlKX07ekw9bmV3IGEsakw9bmV3IFosSEw9bmV3IHRlO3JFPW5ldyBjdCxxTD1uZXcgYSxpRT1uZXcgYTtLTD1uZXcgYSxzRT1uZXcgYTtXTD1uZXcgYTtiRT1uZXcgY3Qsd0U9bmV3IGN0LGFFPW5ldyBhLCRfPW5ldyBhLGZFPW5ldyBhLHVFPW5ldyBhLFlMPW5ldyBhLGxFPW5ldyBhLCRMPVtiRSx3RV0sWkw9bmV3IE50LFFMPW5ldyBhLEpMPW5ldyBhLHREPW5ldyBhLGVEPW5ldyBhLG5EPW5ldyBhLG9EPW5ldyBhLFpfPW5ldyBhLFFfPW5ldyBhLHJEPW5ldyBhLGlEPW5ldyBhLHNEPW5ldyBhLHBFPW5ldyBhLGNEPW5ldyBhLGFEPW5ldyBhLGZEPW5ldyBRcyx1RD1uZXcgUXMsZEU9bmV3IGEsbEQ9bmV3IGEsbUU9bmV3IGEscEQ9W25ldyBBdCxuZXcgQXRdLFRFPVswLDIsMSwwLDMsMiwwLDcsMywwLDQsNywwLDUsNCwwLDEsNSw1LDcsNCw1LDYsNyw1LDIsNiw1LDEsMiwzLDYsMiwzLDcsNl0saEU9VEUubGVuZ3RoO1JzLl9wcm9qZWN0Tm9ybWFsPVFmO2V5PVJzfSk7dmFyIG55PXt9O2xlKG55LHtkZWZhdWx0OigpPT5oRH0pO2Z1bmN0aW9uIG1EKHQsZSl7cmV0dXJuIHhkLmluaXRpYWxpemUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG0oZSkmJih0PWV5LnVucGFjayh0LGUpKSxleS5jcmVhdGVHZW9tZXRyeSh0KX0pfXZhciBoRCxveT0kKCgpPT57S18oKTtmdCgpO09FKCk7aEQ9bUR9KTtmdW5jdGlvbiBTYSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDt0aGlzLl92ZXJ0ZXhGb3JtYXQ9ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQbGFuZUdlb21ldHJ5In12YXIgRUUsX0QsSWQsdmQscnksUkU9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO1llKCk7JGUoKTthbigpO3RuKCk7eG8oKTtTYS5wYWNrZWRMZW5ndGg9cHQucGFja2VkTGVuZ3RoO1NhLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxlfTtFRT1uZXcgcHQsX0Q9e3ZlcnRleEZvcm1hdDpFRX07U2EudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89cHQudW5wYWNrKHQsZSxFRSk7cmV0dXJuIG0obik/KG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShvLG4uX3ZlcnRleEZvcm1hdCksbik6bmV3IFNhKF9EKX07SWQ9bmV3IGEoLS41LC0uNSwwKSx2ZD1uZXcgYSguNSwuNSwwKTtTYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll92ZXJ0ZXhGb3JtYXQsbj1uZXcgaWUsbyxyO2lmKGUucG9zaXRpb24pe2lmKHI9bmV3IEZsb2F0NjRBcnJheSgxMiksclswXT1JZC54LHJbMV09SWQueSxyWzJdPTAsclszXT12ZC54LHJbNF09SWQueSxyWzVdPTAscls2XT12ZC54LHJbN109dmQueSxyWzhdPTAscls5XT1JZC54LHJbMTBdPXZkLnksclsxMV09MCxuLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cn0pLGUubm9ybWFsKXtsZXQgaT1uZXcgRmxvYXQzMkFycmF5KDEyKTtpWzBdPTAsaVsxXT0wLGlbMl09MSxpWzNdPTAsaVs0XT0wLGlbNV09MSxpWzZdPTAsaVs3XT0wLGlbOF09MSxpWzldPTAsaVsxMF09MCxpWzExXT0xLG4ubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczppfSl9aWYoZS5zdCl7bGV0IGk9bmV3IEZsb2F0MzJBcnJheSg4KTtpWzBdPTAsaVsxXT0wLGlbMl09MSxpWzNdPTAsaVs0XT0xLGlbNV09MSxpWzZdPTAsaVs3XT0xLG4uc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOml9KX1pZihlLnRhbmdlbnQpe2xldCBpPW5ldyBGbG9hdDMyQXJyYXkoMTIpO2lbMF09MSxpWzFdPTAsaVsyXT0wLGlbM109MSxpWzRdPTAsaVs1XT0wLGlbNl09MSxpWzddPTAsaVs4XT0wLGlbOV09MSxpWzEwXT0wLGlbMTFdPTAsbi50YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczppfSl9aWYoZS5iaXRhbmdlbnQpe2xldCBpPW5ldyBGbG9hdDMyQXJyYXkoMTIpO2lbMF09MCxpWzFdPTEsaVsyXT0wLGlbM109MCxpWzRdPTEsaVs1XT0wLGlbNl09MCxpWzddPTEsaVs4XT0wLGlbOV09MCxpWzEwXT0xLGlbMTFdPTAsbi5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOml9KX1vPW5ldyBVaW50MTZBcnJheSg2KSxvWzBdPTAsb1sxXT0xLG9bMl09MixvWzNdPTAsb1s0XT0yLG9bNV09M31yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOm4saW5kaWNlczpvLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBBdChhLlpFUk8sTWF0aC5zcXJ0KDIpKX0pfTtyeT1TYX0pO3ZhciBpeT17fTtsZShpeSx7ZGVmYXVsdDooKT0+Z0R9KTtmdW5jdGlvbiB5RCh0LGUpe3JldHVybiBtKGUpJiYodD1yeS51bnBhY2sodCxlKSkscnkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGdELHN5PSQoKCk9PntmdCgpO1JFKCk7Z0Q9eUR9KTtmdW5jdGlvbiB4YSgpe3RoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBsYW5lT3V0bGluZUdlb21ldHJ5In12YXIgU3MsRmQsY3ksU0U9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7ZnQoKTtZZSgpOyRlKCk7YW4oKTt0bigpO3hhLnBhY2tlZExlbmd0aD0wO3hhLnBhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksZX07eGEudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksbShuKT9uOm5ldyB4YX07U3M9bmV3IGEoLS41LC0uNSwwKSxGZD1uZXcgYSguNSwuNSwwKTt4YS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbigpe2xldCB0PW5ldyBpZSxlPW5ldyBVaW50MTZBcnJheSg4KSxuPW5ldyBGbG9hdDY0QXJyYXkoMTIpO3JldHVybiBuWzBdPVNzLngsblsxXT1Tcy55LG5bMl09U3MueixuWzNdPUZkLngsbls0XT1Tcy55LG5bNV09U3MueixuWzZdPUZkLngsbls3XT1GZC55LG5bOF09U3MueixuWzldPVNzLngsblsxMF09RmQueSxuWzExXT1Tcy56LHQucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpufSksZVswXT0wLGVbMV09MSxlWzJdPTEsZVszXT0yLGVbNF09MixlWzVdPTMsZVs2XT0zLGVbN109MCxuZXcgVXQoe2F0dHJpYnV0ZXM6dCxpbmRpY2VzOmUscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpuZXcgQXQoYS5aRVJPLE1hdGguc3FydCgyKSl9KX07Y3k9eGF9KTt2YXIgYXk9e307bGUoYXkse2RlZmF1bHQ6KCk9PmJEfSk7ZnVuY3Rpb24gQUQodCxlKXtyZXR1cm4gbShlKSYmKHQ9Y3kudW5wYWNrKHQsZSkpLGN5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBiRCxmeT0kKCgpPT57ZnQoKTtTRSgpO2JEPUFEfSk7ZnVuY3Rpb24gRm4odCxlKXt0aGlzLnBvc2l0aW9uPXQsbSh0aGlzLnBvc2l0aW9uKXx8KHRoaXMucG9zaXRpb249bmV3IEopLHRoaXMudGFuZ2VudFBsYW5lPWUsbSh0aGlzLnRhbmdlbnRQbGFuZSl8fCh0aGlzLnRhbmdlbnRQbGFuZT1Gbi5OT1JUSF9QT0xFX1RBTkdFTlRfUExBTkUpfXZhciBDYSx3RCxURCxPRCxFRCxhcix4RT0kKCgpPT57a2UoKTtEdCgpO0llKCk7V3QoKTtmdCgpOyR0KCk7cGEoKTtlYygpO0t0KCk7VnAoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGbi5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFuZ2VudFBsYW5lLmVsbGlwc29pZH19LHg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uLnh9fSx5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbi55fX0sY29uZm9ybWFsTGF0aXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PUoubWFnbml0dWRlKHRoaXMucG9zaXRpb24pLGU9Mip0aGlzLmVsbGlwc29pZC5tYXhpbXVtUmFkaXVzO3JldHVybiB0aGlzLnRhbmdlbnRQbGFuZS5wbGFuZS5ub3JtYWwueiooUC5QSV9PVkVSX1RXTy0yKk1hdGguYXRhbjIodCxlKSl9fSxsb25naXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PVAuUElfT1ZFUl9UV08rTWF0aC5hdGFuMih0aGlzLnksdGhpcy54KTtyZXR1cm4gdD5NYXRoLlBJJiYodC09UC5UV09fUEkpLHR9fX0pO0NhPW5ldyBjdCx3RD1uZXcgYTtGbi5wcm90b3R5cGUuZ2V0TGF0aXR1ZGU9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9WS5kZWZhdWx0KSxDYS5sYXRpdHVkZT10aGlzLmNvbmZvcm1hbExhdGl0dWRlLENhLmxvbmdpdHVkZT10aGlzLmxvbmdpdHVkZSxDYS5oZWlnaHQ9MDtsZXQgZT10aGlzLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDYSx3RCk7cmV0dXJuIHQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxDYSksQ2EubGF0aXR1ZGV9O1REPW5ldyBKcyxPRD1uZXcgYSxFRD1uZXcgYTtGbi5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0ZXNpYW4iLHQpO2xldCBuPVAuc2lnbk5vdFplcm8odC56KSxvPUZuLk5PUlRIX1BPTEVfVEFOR0VOVF9QTEFORSxyPUZuLlNPVVRIX1BPTEU7bjwwJiYobz1Gbi5TT1VUSF9QT0xFX1RBTkdFTlRfUExBTkUscj1Gbi5OT1JUSF9QT0xFKTtsZXQgaT1URDtpLm9yaWdpbj1vLmVsbGlwc29pZC5zY2FsZVRvR2VvY2VudHJpY1N1cmZhY2UodCxpLm9yaWdpbiksaS5kaXJlY3Rpb249YS5zdWJ0cmFjdChpLm9yaWdpbixyLE9EKSxhLm5vcm1hbGl6ZShpLmRpcmVjdGlvbixpLmRpcmVjdGlvbik7bGV0IHM9eW8ucmF5UGxhbmUoaSxvLnBsYW5lLEVEKSxmPWEuc3VidHJhY3QocyxyLHMpLHU9YS5kb3Qoby54QXhpcyxmKSxjPW4qYS5kb3Qoby55QXhpcyxmKTtyZXR1cm4gbShlKT8oZS5wb3NpdGlvbj1uZXcgSih1LGMpLGUudGFuZ2VudFBsYW5lPW8sZSk6bmV3IEZuKG5ldyBKKHUsYyksbyl9O0ZuLmZyb21DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uOmU9bmV3IEFycmF5KG4pO2ZvcihsZXQgbz0wO288bjtvKyspZVtvXT1Gbi5mcm9tQ2FydGVzaWFuKHRbb10sZVtvXSk7cmV0dXJuIGV9O0ZuLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5wb3NpdGlvbj10LnBvc2l0aW9uLGUudGFuZ2VudFBsYW5lPXQudGFuZ2VudFBsYW5lLGUpOm5ldyBGbih0LnBvc2l0aW9uLHQudGFuZ2VudFBsYW5lKX07Rm4uSEFMRl9VTklUX1NQSEVSRT1PYmplY3QuZnJlZXplKG5ldyBZKC41LC41LC41KSk7Rm4uTk9SVEhfUE9MRT1PYmplY3QuZnJlZXplKG5ldyBhKDAsMCwuNSkpO0ZuLlNPVVRIX1BPTEU9T2JqZWN0LmZyZWV6ZShuZXcgYSgwLDAsLS41KSk7Rm4uTk9SVEhfUE9MRV9UQU5HRU5UX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IEFvKEZuLk5PUlRIX1BPTEUsRm4uSEFMRl9VTklUX1NQSEVSRSkpO0ZuLlNPVVRIX1BPTEVfVEFOR0VOVF9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBBbyhGbi5TT1VUSF9QT0xFLEZuLkhBTEZfVU5JVF9TUEhFUkUpKTthcj1Gbn0pO2Z1bmN0aW9uIFNEKHQsZSxuLG8pe2xldCBpPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModCxSRCkuaGVpZ2h0LHM9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLENFKTtzLmhlaWdodD1pLG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4ocyxlKTtsZXQgZj1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG4sQ0UpO2YuaGVpZ2h0PWktMTAwLG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZixuKX1mdW5jdGlvbiB1eSh0KXtsZXQgZT10LnZlcnRleEZvcm1hdCxuPXQuZ2VvbWV0cnksbz10LnNoYWRvd1ZvbHVtZSxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsaT1tKG4uYXR0cmlidXRlcy5zdCk/bi5hdHRyaWJ1dGVzLnN0LnZhbHVlczp2b2lkIDAscz1yLmxlbmd0aCxmPXQud2FsbCx1PXQudG9wfHxmLGM9dC5ib3R0b218fGY7aWYoZS5zdHx8ZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnR8fG8pe2xldCBsPXQuYm91bmRpbmdSZWN0YW5nbGUscD10LnJvdGF0aW9uQXhpcyxkPXQucHJvamVjdFRvMmQsaD10LmVsbGlwc29pZCxfPXQuc3RSb3RhdGlvbixnPXQucGVyUG9zaXRpb25IZWlnaHQsYj12RDtiLng9bC54LGIueT1sLnk7bGV0IHc9ZS5zdD9uZXcgRmxvYXQzMkFycmF5KDIqKHMvMykpOnZvaWQgMCxPO2Uubm9ybWFsJiYoZyYmdSYmIWY/Tz1uLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlczpPPW5ldyBGbG9hdDMyQXJyYXkocykpO2xldCBFPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxUPWUuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocyk6dm9pZCAwLHg9bz9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxNPTAsTj0wLEY9Q0QsST1QRCx2PU1ELEI9ITAsQT1ERCxTPUJEO2lmKF8hPT0wKXtsZXQgej10ZS5mcm9tQXhpc0FuZ2xlKHAsXyxNRSk7QT1aLmZyb21RdWF0ZXJuaW9uKHosQSksej10ZS5mcm9tQXhpc0FuZ2xlKHAsLV8sTUUpLFM9Wi5mcm9tUXVhdGVybmlvbih6LFMpfWVsc2UgQT1aLmNsb25lKFouSURFTlRJVFksQSksUz1aLmNsb25lKFouSURFTlRJVFksUyk7bGV0IEM9MCxMPTA7dSYmYyYmKEM9cy8yLEw9cy8zLHMvPTIpO2ZvcihsZXQgej0wO3o8czt6Kz0zKXtsZXQgaj1hLmZyb21BcnJheShyLHosTEQpO2lmKGUuc3QmJiFtKGkpKXtsZXQgaz1aLm11bHRpcGx5QnlWZWN0b3IoQSxqLHhEKTtrPWguc2NhbGVUb0dlb2RldGljU3VyZmFjZShrLGspO2xldCBxPWQoW2tdLEZEKVswXTtKLnN1YnRyYWN0KHEsYixxKTtsZXQgVz1QLmNsYW1wKHEueC9sLndpZHRoLDAsMSksUj1QLmNsYW1wKHEueS9sLmhlaWdodCwwLDEpO2MmJih3W00rTF09Vyx3W00rMStMXT1SKSx1JiYod1tNXT1XLHdbTSsxXT1SKSxNKz0yfWlmKGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50fHxvKXtsZXQgaz1OKzEscT1OKzI7aWYoZil7aWYoeiszPHMpe2xldCBXPWEuZnJvbUFycmF5KHIseiszLE5EKTtpZihCKXtsZXQgUj1hLmZyb21BcnJheShyLHorcyxJRCk7ZyYmU0QoaixXLFIsaCksYS5zdWJ0cmFjdChXLGosVyksYS5zdWJ0cmFjdChSLGosUiksRj1hLm5vcm1hbGl6ZShhLmNyb3NzKFIsVyxGKSxGKSxCPSExfWEuZXF1YWxzRXBzaWxvbihXLGosUC5FUFNJTE9OMTApJiYoQj0hMCl9KGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYodj1oLmdlb2RldGljU3VyZmFjZU5vcm1hbChqLHYpLGUudGFuZ2VudCYmKEk9YS5ub3JtYWxpemUoYS5jcm9zcyh2LEYsSSksSSkpKX1lbHNlIEY9aC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaixGKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihnJiYoTGQ9YS5mcm9tQXJyYXkoTyxOLExkKSxtaT1hLmNyb3NzKGEuVU5JVF9aLExkLG1pKSxtaT1hLm5vcm1hbGl6ZShaLm11bHRpcGx5QnlWZWN0b3IoUyxtaSxtaSksbWkpLGUuYml0YW5nZW50JiYoUGE9YS5ub3JtYWxpemUoYS5jcm9zcyhMZCxtaSxQYSksUGEpKSksST1hLmNyb3NzKGEuVU5JVF9aLEYsSSksST1hLm5vcm1hbGl6ZShaLm11bHRpcGx5QnlWZWN0b3IoUyxJLEkpLEkpLGUuYml0YW5nZW50JiYodj1hLm5vcm1hbGl6ZShhLmNyb3NzKEYsSSx2KSx2KSkpO2Uubm9ybWFsJiYodC53YWxsPyhPW04rQ109Ri54LE9baytDXT1GLnksT1txK0NdPUYueik6YyYmKE9bTitDXT0tRi54LE9baytDXT0tRi55LE9bcStDXT0tRi56KSwodSYmIWd8fGYpJiYoT1tOXT1GLngsT1trXT1GLnksT1txXT1GLnopKSxvJiYoZiYmKEY9aC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaixGKSkseFtOK0NdPS1GLngseFtrK0NdPS1GLnkseFtxK0NdPS1GLnopLGUudGFuZ2VudCYmKHQud2FsbD8oRVtOK0NdPUkueCxFW2srQ109SS55LEVbcStDXT1JLnopOmMmJihFW04rQ109LUkueCxFW2srQ109LUkueSxFW3ErQ109LUkueiksdSYmKGc/KEVbTl09bWkueCxFW2tdPW1pLnksRVtxXT1taS56KTooRVtOXT1JLngsRVtrXT1JLnksRVtxXT1JLnopKSksZS5iaXRhbmdlbnQmJihjJiYoVFtOK0NdPXYueCxUW2srQ109di55LFRbcStDXT12LnopLHUmJihnPyhUW05dPVBhLngsVFtrXT1QYS55LFRbcV09UGEueik6KFRbTl09di54LFRba109di55LFRbcV09di56KSkpLE4rPTN9fWUuc3QmJiFtKGkpJiYobi5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczp3fSkpLGUubm9ybWFsJiYobi5hdHRyaWJ1dGVzLm5vcm1hbD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pKSxlLnRhbmdlbnQmJihuLmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RX0pKSxlLmJpdGFuZ2VudCYmKG4uYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlR9KSksbyYmKG4uYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp4fSkpfWlmKHQuZXh0cnVkZSYmbSh0Lm9mZnNldEF0dHJpYnV0ZSkpe2xldCBsPXIubGVuZ3RoLzMscD1uZXcgVWludDhBcnJheShsKTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl1JiZjfHxmP3A9cC5maWxsKDEsMCxsLzIpOnUmJihwPXAuZmlsbCgxKSk7ZWxzZXtsZXQgZD10Lm9mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO3A9cC5maWxsKGQpfW4uYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpwfSl9cmV0dXJuIG59ZnVuY3Rpb24gVUQodCxlLG4sbyxyLGkscyxmLHUsYyl7bGV0IGw9e3dhbGxzOltdfSxwO2lmKHN8fGYpe2xldCBPPV9lLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucyh0LGUsbixvLGksdSxjKSxFPU8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsVD1PLmluZGljZXMseCxNO2lmKHMmJmYpe2xldCBOPUUuY29uY2F0KEUpO3g9Ti5sZW5ndGgvMyxNPUx0LmNyZWF0ZVR5cGVkQXJyYXkoeCxULmxlbmd0aCoyKSxNLnNldChUKTtsZXQgRj1ULmxlbmd0aCxJPXgvMjtmb3IocD0wO3A8RjtwKz0zKXtsZXQgdj1NW3BdK0ksQj1NW3ArMV0rSSxBPU1bcCsyXStJO01bcCtGXT1BLE1bcCsxK0ZdPUIsTVtwKzIrRl09dn1pZihPLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPU4saSYmdS5ub3JtYWwpe2xldCB2PU8uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzO08uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPW5ldyBGbG9hdDMyQXJyYXkoTi5sZW5ndGgpLE8uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzLnNldCh2KX1pZih1LnN0JiZtKG4pKXtsZXQgdj1PLmF0dHJpYnV0ZXMuc3QudmFsdWVzO08uYXR0cmlidXRlcy5zdC52YWx1ZXM9bmV3IEZsb2F0MzJBcnJheSh4KjIpLE8uYXR0cmlidXRlcy5zdC52YWx1ZXM9di5jb25jYXQodil9Ty5pbmRpY2VzPU19ZWxzZSBpZihmKXtmb3IoeD1FLmxlbmd0aC8zLE09THQuY3JlYXRlVHlwZWRBcnJheSh4LFQubGVuZ3RoKSxwPTA7cDxULmxlbmd0aDtwKz0zKU1bcF09VFtwKzJdLE1bcCsxXT1UW3ArMV0sTVtwKzJdPVRbcF07Ty5pbmRpY2VzPU19bC50b3BBbmRCb3R0b209bmV3IGZvKHtnZW9tZXRyeTpPfSl9bGV0IGQ9ci5vdXRlclJpbmcsaD1Bby5mcm9tUG9pbnRzKGQsdCksXz1oLnByb2plY3RQb2ludHNPbnRvUGxhbmUoZCxORSksZz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoXyk7Zz09PVBvLkNMT0NLV0lTRSYmKGQ9ZC5zbGljZSgpLnJldmVyc2UoKSk7bGV0IGI9X2UuY29tcHV0ZVdhbGxHZW9tZXRyeShkLG4sdCxvLGksYyk7bC53YWxscy5wdXNoKG5ldyBmbyh7Z2VvbWV0cnk6Yn0pKTtsZXQgdz1yLmhvbGVzO2ZvcihwPTA7cDx3Lmxlbmd0aDtwKyspe2xldCBPPXdbcF07Xz1oLnByb2plY3RQb2ludHNPbnRvUGxhbmUoTyxORSksZz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoXyksZz09PVBvLkNPVU5URVJfQ0xPQ0tXSVNFJiYoTz1PLnNsaWNlKCkucmV2ZXJzZSgpKSxiPV9lLmNvbXB1dGVXYWxsR2VvbWV0cnkoTyxuLHQsbyxpLGMpLGwud2FsbHMucHVzaChuZXcgZm8oe2dlb21ldHJ5OmJ9KSl9cmV0dXJuIGx9ZnVuY3Rpb24gU3IodCl7aWYoeS50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSxtKHQucGVyUG9zaXRpb25IZWlnaHQpJiZ0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgRCgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT1oZS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09aGUuUkhVTUIpdGhyb3cgbmV3IEQoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksbj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxpPXQuc3RSb3RhdGlvbj8/MCxzPXQudGV4dHVyZUNvb3JkaW5hdGVzLGY9dC5wZXJQb3NpdGlvbkhlaWdodD8/ITEsdT1mJiZtKHQuZXh0cnVkZWRIZWlnaHQpLGM9dC5oZWlnaHQ/PzAsbD10LmV4dHJ1ZGVkSGVpZ2h0Pz9jO2lmKCF1KXtsZXQgcD1NYXRoLm1heChjLGwpO2w9TWF0aC5taW4oYyxsKSxjPXB9dGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKG4pLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKG8pLHRoaXMuX2dyYW51bGFyaXR5PXIsdGhpcy5fc3RSb3RhdGlvbj1pLHRoaXMuX2hlaWdodD1jLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PWwsdGhpcy5fY2xvc2VUb3A9dC5jbG9zZVRvcD8/ITAsdGhpcy5fY2xvc2VCb3R0b209dC5jbG9zZUJvdHRvbT8/ITAsdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PWYsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPXUsdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5Z29uR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9hcmNUeXBlPXQuYXJjVHlwZT8/aGUuR0VPREVTSUMsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9cyx0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKyhzP19lLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgocyxKKToxKSsxMn1mdW5jdGlvbiBJRSh0LGUsbixvLHIsaSl7bGV0IHM9dC5sb25naXR1ZGUsZj1zPj0wP3M6cytQLlRXT19QSTtyLndlc3RPdmVySWRsPU1hdGgubWluKHIud2VzdE92ZXJJZGwsZiksci5lYXN0T3ZlcklkbD1NYXRoLm1heChyLmVhc3RPdmVySWRsLGYpLGkud2VzdD1NYXRoLm1pbihpLndlc3QscyksaS5lYXN0PU1hdGgubWF4KGkuZWFzdCxzKTtsZXQgdT10LmdldExhdGl0dWRlKG4pLGM9dTtpZihpLnNvdXRoPU1hdGgubWluKGkuc291dGgsdSksaS5ub3J0aD1NYXRoLm1heChpLm5vcnRoLHUpLG8hPT1oZS5SSFVNQil7bGV0IGQ9Si5zdWJ0cmFjdChlLnBvc2l0aW9uLHQucG9zaXRpb24sekQpLGg9Si5kb3QoZS5wb3NpdGlvbixkKS9KLmRvdChkLGQpO2lmKGg+MCYmaDwxKXtsZXQgXz1KLmFkZChlLnBvc2l0aW9uLEoubXVsdGlwbHlCeVNjYWxhcihkLC1oLGQpLGpEKSxnPWFyLmNsb25lKGUsSEQpO2cucG9zaXRpb249XztsZXQgYj1nLmdldExhdGl0dWRlKG4pO2kuc291dGg9TWF0aC5taW4oaS5zb3V0aCxiKSxpLm5vcnRoPU1hdGgubWF4KGkubm9ydGgsYiksTWF0aC5hYnModSk+TWF0aC5hYnMoYikmJihjPWIpfX1sZXQgbD1lLngqdC55LXQueCplLnkscD1NYXRoLnNpZ24obCk7cCE9PTAmJihwKj1KLmFuZ2xlQmV0d2VlbihlLnBvc2l0aW9uLHQucG9zaXRpb24pKSxjPj0wJiYoci5ub3J0aEFuZ2xlKz1wKSxjPD0wJiYoci5zb3V0aEFuZ2xlKz1wKX1mdW5jdGlvbiBXRCh0LGUsbil7cmV0dXJuIHQuaGVpZ2h0Pj1QLlBJfHx0LndpZHRoPj1QLlBJP2FyLmZyb21DYXJ0ZXNpYW4oZVswXSxLRCkudGFuZ2VudFBsYW5lOkFvLmZyb21Qb2ludHMoZSxuKX1mdW5jdGlvbiBYRCh0LGUsbil7cmV0dXJuKG8scik9PntpZih0LmhlaWdodD49UC5QSXx8dC53aWR0aD49UC5QSSl7aWYodC5zb3V0aDwwJiZ0Lm5vcnRoPjApe20ocil8fChyPVtdKTtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoOysrcyl7bGV0IGY9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhvW3NdLEZFKTtyW3NdPW5ldyBKKGYubG9uZ2l0dWRlL1AuUEksZi5sYXRpdHVkZS9QLlBJX09WRVJfVFdPKX1yZXR1cm4gci5sZW5ndGg9by5sZW5ndGgscn1yZXR1cm4gYXIuZnJvbUNhcnRlc2lhbkFycmF5KG8scil9cmV0dXJuIEFvLmZyb21Qb2ludHMoZSxuKS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKG8scil9fWZ1bmN0aW9uIFlEKHQsZSxuKXtpZih0LmhlaWdodD49UC5QSXx8dC53aWR0aD49UC5QSSlyZXR1cm4ocixpKT0+e2lmKHQuc291dGg8MCYmdC5ub3J0aD4wKXtsZXQgcz1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsRkUpO3JldHVybiBtKGkpfHwoaT1uZXcgSiksaS54PXMubG9uZ2l0dWRlL1AuUEksaS55PXMubGF0aXR1ZGUvUC5QSV9PVkVSX1RXTyxpfXJldHVybiBhci5mcm9tQ2FydGVzaWFuKHIsaSl9O2xldCBvPUFvLmZyb21Qb2ludHMoZSxuKTtyZXR1cm4ocixpKT0+by5wcm9qZWN0UG9pbnRzT250b1BsYW5lKHIsaSl9ZnVuY3Rpb24gJEQodCxlLG4sbyl7cmV0dXJuKHIsaSk9PiFvJiYodC5oZWlnaHQ+PVAuUElfT1ZFUl9UV098fHQud2lkdGg+PTIqUC5QSV9PVkVSX1RIUkVFKT9fZS5zcGxpdFBvbHlnb25zT25FcXVhdG9yKHIsZSxuLGkpOnJ9ZnVuY3Rpb24gWkQodCxlLG4sbyl7aWYoZS5oZWlnaHQ+PVAuUEl8fGUud2lkdGg+PVAuUEkpcmV0dXJuIHFyLmZyb21SZWN0YW5nbGUoZSx2b2lkIDAsUEUpO2xldCByPXQsaT1Bby5mcm9tUG9pbnRzKHIsbik7cmV0dXJuIF9lLmNvbXB1dGVCb3VuZGluZ1JlY3RhbmdsZShpLnBsYW5lLm5vcm1hbCxpLnByb2plY3RQb2ludE9udG9QbGFuZS5iaW5kKGkpLHIsbyxQRSl9ZnVuY3Rpb24gUUQodCl7bGV0IGU9LXQuX3N0Um90YXRpb247aWYoZT09PTApcmV0dXJuWzAsMCwwLDEsMSwwXTtsZXQgbj10Ll9lbGxpcHNvaWQsbz10Ll9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9ucyxyPXQucmVjdGFuZ2xlO3JldHVybiBVdC5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhvLGUsbixyKX12YXIgUkQsQ0UsUEUseEQsQ0QsUEQsTUQsTkQsSUQsTGQsbWksUGEsdkQsRkQsTEQsTUUsREQsQkQsTkUsa0QsR0QsVkQsekQsakQsSEQsdkUscUQsUnIsS0QsRkUsbHksTEU9JCgoKT0+e3VjKCk7Q2YoKTt2ZSgpO2tlKCk7RHQoKTtJZSgpO1d0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO3BhKCk7WWUoKTskZSgpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtVbigpO0RmKCk7S3IoKTtYbygpO1RuKCk7eEUoKTt4bygpO3BjKCk7UkQ9bmV3IGN0LENFPW5ldyBjdDtQRT1uZXcgcXIseEQ9bmV3IGEsQ0Q9bmV3IGEsUEQ9bmV3IGEsTUQ9bmV3IGEsTkQ9bmV3IGEsSUQ9bmV3IGEsTGQ9bmV3IGEsbWk9bmV3IGEsUGE9bmV3IGEsdkQ9bmV3IEosRkQ9bmV3IEosTEQ9bmV3IGEsTUU9bmV3IHRlLEREPW5ldyBaLEJEPW5ldyBaO05FPVtdO1NyLmZyb21Qb3NpdGlvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1QseS5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9LGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxzdFJvdGF0aW9uOnQuc3RSb3RhdGlvbixlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsZ3JhbnVsYXJpdHk6dC5ncmFudWxhcml0eSxwZXJQb3NpdGlvbkhlaWdodDp0LnBlclBvc2l0aW9uSGVpZ2h0LGNsb3NlVG9wOnQuY2xvc2VUb3AsY2xvc2VCb3R0b206dC5jbG9zZUJvdHRvbSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGUsYXJjVHlwZTp0LmFyY1R5cGUsdGV4dHVyZUNvb3JkaW5hdGVzOnQudGV4dHVyZUNvb3JkaW5hdGVzfTtyZXR1cm4gbmV3IFNyKGUpfTtTci5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLG49X2UucGFja1BvbHlnb25IaWVyYXJjaHkodC5fcG9seWdvbkhpZXJhcmNoeSxlLG4sYSksWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9oZWlnaHQsZVtuKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbbisrXT10Ll9ncmFudWxhcml0eSxlW24rK109dC5fc3RSb3RhdGlvbixlW24rK109dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPzE6MCxlW24rK109dC5fcGVyUG9zaXRpb25IZWlnaHQ/MTowLGVbbisrXT10Ll9jbG9zZVRvcD8xOjAsZVtuKytdPXQuX2Nsb3NlQm90dG9tPzE6MCxlW24rK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW24rK109dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlW24rK109dC5fYXJjVHlwZSxtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/bj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxuLEopOmVbbisrXT0tMSxlW24rK109dC5wYWNrZWRMZW5ndGgsZX07a0Q9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxHRD1uZXcgcHQsVkQ9e3BvbHlnb25IaWVyYXJjaHk6e319O1NyLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPV9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGEpO2U9by5zdGFydGluZ0luZGV4LGRlbGV0ZSBvLnN0YXJ0aW5nSW5kZXg7bGV0IHI9WS51bnBhY2sodCxlLGtEKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLEdEKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdPT09MSxwPXRbZSsrXT09PTEsZD10W2UrK109PT0xLGg9dFtlKytdPT09MSxfPXRbZSsrXT09PTEsZz10W2UrK10sYj10W2UrK10sdz10W2VdPT09LTE/dm9pZCAwOl9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLEopO20odyk/KGU9dy5zdGFydGluZ0luZGV4LGRlbGV0ZSB3LnN0YXJ0aW5nSW5kZXgpOmUrKztsZXQgTz10W2UrK107cmV0dXJuIG0obil8fChuPW5ldyBTcihWRCkpLG4uX3BvbHlnb25IaWVyYXJjaHk9byxuLl9lbGxpcHNvaWQ9WS5jbG9uZShyLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGksbi5fdmVydGV4Rm9ybWF0KSxuLl9oZWlnaHQ9cyxuLl9leHRydWRlZEhlaWdodD1mLG4uX2dyYW51bGFyaXR5PXUsbi5fc3RSb3RhdGlvbj1jLG4uX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT1sLG4uX3BlclBvc2l0aW9uSGVpZ2h0PXAsbi5fY2xvc2VUb3A9ZCxuLl9jbG9zZUJvdHRvbT1oLG4uX3NoYWRvd1ZvbHVtZT1fLG4uX29mZnNldEF0dHJpYnV0ZT1nPT09LTE/dm9pZCAwOmcsbi5fYXJjVHlwZT1iLG4uX3RleHR1cmVDb29yZGluYXRlcz13LG4ucGFja2VkTGVuZ3RoPU8sbn07ekQ9bmV3IEosakQ9bmV3IEosSEQ9bmV3IGFyO3ZFPW5ldyBhcixxRD1uZXcgYXIsUnI9e25vcnRoQW5nbGU6MCxzb3V0aEFuZ2xlOjAsd2VzdE92ZXJJZGw6MCxlYXN0T3ZlcklkbDowfTtTci5jb21wdXRlUmVjdGFuZ2xlRnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbixvKXtpZih5LmRlZmluZWQoInBvc2l0aW9ucyIsdCksbShvKXx8KG89bmV3IE50KSx0Lmxlbmd0aDwzKXJldHVybiBvO28ud2VzdD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksby5lYXN0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxvLnNvdXRoPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxvLm5vcnRoPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxSci5ub3J0aEFuZ2xlPTAsUnIuc291dGhBbmdsZT0wLFJyLndlc3RPdmVySWRsPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxSci5lYXN0T3ZlcklkbD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IHI9dC5sZW5ndGgsaT1hci5mcm9tQ2FydGVzaWFuKHRbMF0scUQpO2ZvcihsZXQgcz0xO3M8cjtzKyspe2xldCBmPWFyLmZyb21DYXJ0ZXNpYW4odFtzXSx2RSk7SUUoZixpLGUsbixScixvKSxpPWFyLmNsb25lKGYsaSl9cmV0dXJuIElFKGFyLmZyb21DYXJ0ZXNpYW4odFswXSx2RSksaSxlLG4sUnIsbyksby5lYXN0LW8ud2VzdD5Sci5lYXN0T3ZlcklkbC1Sci53ZXN0T3ZlcklkbCYmKG8ud2VzdD1Sci53ZXN0T3ZlcklkbCxvLmVhc3Q9UnIuZWFzdE92ZXJJZGwsby5lYXN0PlAuUEkmJihvLmVhc3Q9by5lYXN0LVAuVFdPX1BJKSxvLndlc3Q+UC5QSSYmKG8ud2VzdD1vLndlc3QtUC5UV09fUEkpKSxQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoUnIubm9ydGhBbmdsZSksUC5UV09fUEksUC5FUFNJTE9OMTApJiYoby5ub3J0aD1QLlBJX09WRVJfVFdPLG8uZWFzdD1QLlBJLG8ud2VzdD0tUC5QSSksUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKFJyLnNvdXRoQW5nbGUpLFAuVFdPX1BJLFAuRVBTSUxPTjEwKSYmKG8uc291dGg9LVAuUElfT1ZFUl9UV08sby5lYXN0PVAuUEksby53ZXN0PS1QLlBJKSxvfTtLRD1uZXcgYXI7RkU9bmV3IGN0O1NyLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3ZlcnRleEZvcm1hdCxuPXQuX2VsbGlwc29pZCxvPXQuX2dyYW51bGFyaXR5LHI9dC5fc3RSb3RhdGlvbixpPXQuX3BvbHlnb25IaWVyYXJjaHkscz10Ll9wZXJQb3NpdGlvbkhlaWdodCxmPXQuX2Nsb3NlVG9wLHU9dC5fY2xvc2VCb3R0b20sYz10Ll9hcmNUeXBlLGw9dC5fdGV4dHVyZUNvb3JkaW5hdGVzLHA9bShsKSxkPWkucG9zaXRpb25zO2lmKGQubGVuZ3RoPDMpcmV0dXJuO2xldCBoPXQucmVjdGFuZ2xlLF89X2UucG9seWdvbnNGcm9tSGllcmFyY2h5KGkscCxYRChoLGQsbiksIXMsbiwkRChoLG4sYyxzKSksZz1fLmhpZXJhcmNoeSxiPV8ucG9seWdvbnMsdz1mdW5jdGlvbihDKXtyZXR1cm4gQ30sTz1wP19lLnBvbHlnb25zRnJvbUhpZXJhcmNoeShsLCEwLHcsITEsbikucG9seWdvbnM6dm9pZCAwO2lmKGcubGVuZ3RoPT09MClyZXR1cm47bGV0IEU9Z1swXS5vdXRlclJpbmcsVD1aRChFLGgsbixyKSx4PVtdLE09dC5faGVpZ2h0LE49dC5fZXh0cnVkZWRIZWlnaHQsRj10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGV8fCFQLmVxdWFsc0Vwc2lsb24oTSxOLDAsUC5FUFNJTE9OMiksST17cGVyUG9zaXRpb25IZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6ZSxnZW9tZXRyeTp2b2lkIDAscm90YXRpb25BeGlzOldEKGgsRSxuKS5wbGFuZS5ub3JtYWwscHJvamVjdFRvMmQ6WUQoaCxFLG4pLGJvdW5kaW5nUmVjdGFuZ2xlOlQsZWxsaXBzb2lkOm4sc3RSb3RhdGlvbjpyLHRleHR1cmVDb29yZGluYXRlczp2b2lkIDAsYm90dG9tOiExLHRvcDohMCx3YWxsOiExLGV4dHJ1ZGU6ITEsYXJjVHlwZTpjfSx2O2lmKEYpZm9yKEkuZXh0cnVkZT0hMCxJLnRvcD1mLEkuYm90dG9tPXUsSS5zaGFkb3dWb2x1bWU9dC5fc2hhZG93Vm9sdW1lLEkub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSx2PTA7djxiLmxlbmd0aDt2Kyspe2xldCBDPVVEKG4sYlt2XSxwP09bdl06dm9pZCAwLG8sZ1t2XSxzLGYsdSxlLGMpLEw7ZiYmdT8oTD1DLnRvcEFuZEJvdHRvbSxJLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKEwuZ2VvbWV0cnksTSxOLG4scykpOmY/KEw9Qy50b3BBbmRCb3R0b20sTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxNLG4sIXMpLEkuZ2VvbWV0cnk9TC5nZW9tZXRyeSk6dSYmKEw9Qy50b3BBbmRCb3R0b20sTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxOLG4sITApLEkuZ2VvbWV0cnk9TC5nZW9tZXRyeSksKGZ8fHUpJiYoSS53YWxsPSExLEwuZ2VvbWV0cnk9dXkoSSkseC5wdXNoKEwpKTtsZXQgej1DLndhbGxzO0kud2FsbD0hMDtmb3IobGV0IGo9MDtqPHoubGVuZ3RoO2orKyl7bGV0IGs9eltqXTtJLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKGsuZ2VvbWV0cnksTSxOLG4scyksay5nZW9tZXRyeT11eShJKSx4LnB1c2goayl9fWVsc2UgZm9yKHY9MDt2PGIubGVuZ3RoO3YrKyl7bGV0IEM9bmV3IGZvKHtnZW9tZXRyeTpfZS5jcmVhdGVHZW9tZXRyeUZyb21Qb3NpdGlvbnMobixiW3ZdLHA/T1t2XTp2b2lkIDAsbyxzLGUsYyl9KTtpZihDLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChDLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLE0sbiwhcyksSS5nZW9tZXRyeT1DLmdlb21ldHJ5LEMuZ2VvbWV0cnk9dXkoSSksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgTD1DLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCx6PXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLGo9bmV3IFVpbnQ4QXJyYXkoTC8zKS5maWxsKHopO0MuZ2VvbWV0cnkuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpqfSl9eC5wdXNoKEMpfWxldCBCPUdlLmNvbWJpbmVJbnN0YW5jZXMoeClbMF07Qi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1uZXcgRmxvYXQ2NEFycmF5KEIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpLEIuaW5kaWNlcz1MdC5jcmVhdGVUeXBlZEFycmF5KEIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsQi5pbmRpY2VzKTtsZXQgQT1CLmF0dHJpYnV0ZXMsUz1BdC5mcm9tVmVydGljZXMoQS5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBlLnBvc2l0aW9ufHxkZWxldGUgQS5wb3NpdGlvbixuZXcgVXQoe2F0dHJpYnV0ZXM6QSxpbmRpY2VzOkIuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkIucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTpTLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07U3IuY3JlYXRlU2hhZG93Vm9sdW1lPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10Ll9ncmFudWxhcml0eSxyPXQuX2VsbGlwc29pZCxpPWUobyxyKSxzPW4obyxyKTtyZXR1cm4gbmV3IFNyKHtwb2x5Z29uSGllcmFyY2h5OnQuX3BvbHlnb25IaWVyYXJjaHksZWxsaXBzb2lkOnIsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om8scGVyUG9zaXRpb25IZWlnaHQ6ITEsZXh0cnVkZWRIZWlnaHQ6aSxoZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITAsYXJjVHlwZTp0Ll9hcmNUeXBlfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFNyLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtpZighbSh0aGlzLl9yZWN0YW5nbGUpKXtsZXQgdD10aGlzLl9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9uczt0aGlzLl9yZWN0YW5nbGU9U3IuY29tcHV0ZVJlY3RhbmdsZUZyb21Qb3NpdGlvbnModCx0aGlzLl9lbGxpcHNvaWQsdGhpcy5fYXJjVHlwZSl9cmV0dXJuIHRoaXMuX3JlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMpfHwodGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz1RRCh0aGlzKSksdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7bHk9U3J9KTt2YXIgcHk9e307bGUocHkse2RlZmF1bHQ6KCk9PnRCfSk7ZnVuY3Rpb24gSkQodCxlKXtyZXR1cm4gbShlKSYmKHQ9bHkudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksbHkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHRCLGR5PSQoKCk9PntmdCgpOyR0KCk7TEUoKTt0Qj1KRH0pO2Z1bmN0aW9uIGVCKHQsZSxuLG8scil7bGV0IHM9QW8uZnJvbVBvaW50cyhlLHQpLnByb2plY3RQb2ludHNPbnRvUGxhbmUoZSxERSk7UGUuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKHMpPT09UG8uQ0xPQ0tXSVNFJiYocy5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTtsZXQgdSxjLGw9ZS5sZW5ndGgscD0wO2lmKG8pZm9yKHU9bmV3IEZsb2F0NjRBcnJheShsKjIqMyksYz0wO2M8bDtjKyspe2xldCBfPWVbY10sZz1lWyhjKzEpJWxdO3VbcCsrXT1fLngsdVtwKytdPV8ueSx1W3ArK109Xy56LHVbcCsrXT1nLngsdVtwKytdPWcueSx1W3ArK109Zy56fWVsc2V7bGV0IF89MDtpZihyPT09aGUuR0VPREVTSUMpZm9yKGM9MDtjPGw7YysrKV8rPV9lLnN1YmRpdmlkZUxpbmVDb3VudChlW2NdLGVbKGMrMSklbF0sbik7ZWxzZSBpZihyPT09aGUuUkhVTUIpZm9yKGM9MDtjPGw7YysrKV8rPV9lLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KHQsZVtjXSxlWyhjKzEpJWxdLG4pO2Zvcih1PW5ldyBGbG9hdDY0QXJyYXkoXyozKSxjPTA7YzxsO2MrKyl7bGV0IGc7cj09PWhlLkdFT0RFU0lDP2c9X2Uuc3ViZGl2aWRlTGluZShlW2NdLGVbKGMrMSklbF0sbixEZCk6cj09PWhlLlJIVU1CJiYoZz1fZS5zdWJkaXZpZGVSaHVtYkxpbmUodCxlW2NdLGVbKGMrMSklbF0sbixEZCkpO2xldCBiPWcubGVuZ3RoO2ZvcihsZXQgdz0wO3c8YjsrK3cpdVtwKytdPWdbd119fWw9dS5sZW5ndGgvMztsZXQgZD1sKjIsaD1MdC5jcmVhdGVUeXBlZEFycmF5KGwsZCk7Zm9yKHA9MCxjPTA7YzxsLTE7YysrKWhbcCsrXT1jLGhbcCsrXT1jKzE7cmV0dXJuIGhbcCsrXT1sLTEsaFtwKytdPTAsbmV3IGZvKHtnZW9tZXRyeTpuZXcgVXQoe2F0dHJpYnV0ZXM6bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnV9KX0pLGluZGljZXM6aCxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9KX1mdW5jdGlvbiBuQih0LGUsbixvLHIpe2xldCBzPUFvLmZyb21Qb2ludHMoZSx0KS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKGUsREUpO1BlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChzKT09PVBvLkNMT0NLV0lTRSYmKHMucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7bGV0IHUsYyxsPWUubGVuZ3RoLHA9bmV3IEFycmF5KGwpLGQ9MDtpZihvKWZvcih1PW5ldyBGbG9hdDY0QXJyYXkobCoyKjMqMiksYz0wO2M8bDsrK2Mpe3BbY109ZC8zO2xldCBiPWVbY10sdz1lWyhjKzEpJWxdO3VbZCsrXT1iLngsdVtkKytdPWIueSx1W2QrK109Yi56LHVbZCsrXT13LngsdVtkKytdPXcueSx1W2QrK109dy56fWVsc2V7bGV0IGI9MDtpZihyPT09aGUuR0VPREVTSUMpZm9yKGM9MDtjPGw7YysrKWIrPV9lLnN1YmRpdmlkZUxpbmVDb3VudChlW2NdLGVbKGMrMSklbF0sbik7ZWxzZSBpZihyPT09aGUuUkhVTUIpZm9yKGM9MDtjPGw7YysrKWIrPV9lLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KHQsZVtjXSxlWyhjKzEpJWxdLG4pO2Zvcih1PW5ldyBGbG9hdDY0QXJyYXkoYiozKjIpLGM9MDtjPGw7KytjKXtwW2NdPWQvMztsZXQgdztyPT09aGUuR0VPREVTSUM/dz1fZS5zdWJkaXZpZGVMaW5lKGVbY10sZVsoYysxKSVsXSxuLERkKTpyPT09aGUuUkhVTUImJih3PV9lLnN1YmRpdmlkZVJodW1iTGluZSh0LGVbY10sZVsoYysxKSVsXSxuLERkKSk7bGV0IE89dy5sZW5ndGg7Zm9yKGxldCBFPTA7RTxPOysrRSl1W2QrK109d1tFXX19bD11Lmxlbmd0aC82O2xldCBoPXAubGVuZ3RoLF89KGwqMitoKSoyLGc9THQuY3JlYXRlVHlwZWRBcnJheShsK2gsXyk7Zm9yKGQ9MCxjPTA7YzxsOysrYylnW2QrK109YyxnW2QrK109KGMrMSklbCxnW2QrK109YytsLGdbZCsrXT0oYysxKSVsK2w7Zm9yKGM9MDtjPGg7YysrKXtsZXQgYj1wW2NdO2dbZCsrXT1iLGdbZCsrXT1iK2x9cmV0dXJuIG5ldyBmbyh7Z2VvbWV0cnk6bmV3IFV0KHthdHRyaWJ1dGVzOm5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp1fSl9KSxpbmRpY2VzOmcscHJpbWl0aXZlVHlwZTpCdC5MSU5FU30pfSl9ZnVuY3Rpb24gYmModCl7aWYoeS50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSx0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgRCgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT1oZS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09aGUuUkhVTUIpdGhyb3cgbmV3IEQoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksbj10LmVsbGlwc29pZD8/WS5kZWZhdWx0LG89dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUscj10LnBlclBvc2l0aW9uSGVpZ2h0Pz8hMSxpPXImJm0odC5leHRydWRlZEhlaWdodCkscz10LmFyY1R5cGU/P2hlLkdFT0RFU0lDLGY9dC5oZWlnaHQ/PzAsdT10LmV4dHJ1ZGVkSGVpZ2h0Pz9mO2lmKCFpKXtsZXQgYz1NYXRoLm1heChmLHUpO3U9TWF0aC5taW4oZix1KSxmPWN9dGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUobiksdGhpcy5fZ3JhbnVsYXJpdHk9byx0aGlzLl9oZWlnaHQ9Zix0aGlzLl9leHRydWRlZEhlaWdodD11LHRoaXMuX2FyY1R5cGU9cyx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHQ9cix0aGlzLl9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU9aSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeSIsdGhpcy5wYWNrZWRMZW5ndGg9X2UuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChlLGEpK1kucGFja2VkTGVuZ3RoKzh9dmFyIERFLERkLG9CLHJCLG15LEJFPSQoKCk9Pnt1YygpO3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtwYSgpO1llKCk7JGUoKTthbigpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtEZigpO0tyKCk7dG4oKTtwYygpO0RFPVtdLERkPVtdO2JjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsbj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsbixhKSxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2hlaWdodCxlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU/MTowLGVbbisrXT10Ll9wZXJQb3NpdGlvbkhlaWdodD8xOjAsZVtuKytdPXQuX2FyY1R5cGUsZVtuKytdPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZVtuXT10LnBhY2tlZExlbmd0aCxlfTtvQj1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLHJCPXtwb2x5Z29uSGllcmFyY2h5Ont9fTtiYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1fZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxhKTtlPW8uc3RhcnRpbmdJbmRleCxkZWxldGUgby5zdGFydGluZ0luZGV4O2xldCByPVkudW5wYWNrKHQsZSxvQik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGk9dFtlKytdLHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdPT09MSxjPXRbZSsrXT09PTEsbD10W2UrK10scD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pfHwobj1uZXcgYmMockIpKSxuLl9wb2x5Z29uSGllcmFyY2h5PW8sbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX2hlaWdodD1pLG4uX2V4dHJ1ZGVkSGVpZ2h0PXMsbi5fZ3JhbnVsYXJpdHk9ZixuLl9wZXJQb3NpdGlvbkhlaWdodD1jLG4uX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT11LG4uX2FyY1R5cGU9bCxuLl9vZmZzZXRBdHRyaWJ1dGU9cD09PS0xP3ZvaWQgMDpwLG4ucGFja2VkTGVuZ3RoPWQsbn07YmMuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc30saGVpZ2h0OnQuaGVpZ2h0LGV4dHJ1ZGVkSGVpZ2h0OnQuZXh0cnVkZWRIZWlnaHQsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHkscGVyUG9zaXRpb25IZWlnaHQ6dC5wZXJQb3NpdGlvbkhlaWdodCxhcmNUeXBlOnQuYXJjVHlwZSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9O3JldHVybiBuZXcgYmMoZSl9O2JjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2VsbGlwc29pZCxuPXQuX2dyYW51bGFyaXR5LG89dC5fcG9seWdvbkhpZXJhcmNoeSxyPXQuX3BlclBvc2l0aW9uSGVpZ2h0LGk9dC5fYXJjVHlwZSxzPV9lLnBvbHlnb25PdXRsaW5lc0Zyb21IaWVyYXJjaHkobywhcixlKTtpZihzLmxlbmd0aD09PTApcmV0dXJuO2xldCBmLHU9W10sYz1QLmNob3JkTGVuZ3RoKG4sZS5tYXhpbXVtUmFkaXVzKSxsPXQuX2hlaWdodCxwPXQuX2V4dHJ1ZGVkSGVpZ2h0LGQ9dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlfHwhUC5lcXVhbHNFcHNpbG9uKGwscCwwLFAuRVBTSUxPTjIpLGgsXztpZihkKWZvcihfPTA7XzxzLmxlbmd0aDtfKyspe2lmKGY9bkIoZSxzW19dLGMscixpKSxmLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKGYuZ2VvbWV0cnksbCxwLGUsciksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1mLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLE89bmV3IFVpbnQ4QXJyYXkodyk7dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QP089Ty5maWxsKDEsMCx3LzIpOihoPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLE89Ty5maWxsKGgpKSxmLmdlb21ldHJ5LmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6T30pfXUucHVzaChmKX1lbHNlIGZvcihfPTA7XzxzLmxlbmd0aDtfKyspe2lmKGY9ZUIoZSxzW19dLGMscixpKSxmLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChmLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGwsZSwhciksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1mLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aDtoPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO2xldCBPPW5ldyBVaW50OEFycmF5KHcvMykuZmlsbChoKTtmLmdlb21ldHJ5LmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6T30pfXUucHVzaChmKX1sZXQgZz1HZS5jb21iaW5lSW5zdGFuY2VzKHUpWzBdLGI9QXQuZnJvbVZlcnRpY2VzKGcuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6Zy5hdHRyaWJ1dGVzLGluZGljZXM6Zy5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6Zy5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmIsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtteT1iY30pO3ZhciBoeT17fTtsZShoeSx7ZGVmYXVsdDooKT0+c0J9KTtmdW5jdGlvbiBpQih0LGUpe3JldHVybiBtKGUpJiYodD1teS51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxteS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgc0IsX3k9JCgoKT0+e2Z0KCk7JHQoKTtCRSgpO3NCPWlCfSk7ZnVuY3Rpb24geXkodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuKjY8MT90KyhlLXQpKjYqbjpuKjI8MT9lOm4qMzwyP3QrKGUtdCkqKDIvMy1uKSo2OnR9ZnVuY3Rpb24gSCh0LGUsbixvKXt0aGlzLnJlZD10Pz8xLHRoaXMuZ3JlZW49ZT8/MSx0aGlzLmJsdWU9bj8/MSx0aGlzLmFscGhhPW8/PzF9dmFyIGd5LEF5LEtpLGNCLGFCLGZCLHVCLG5lLE1hPSQoKCk9PntXdCgpO3llKCk7ZnQoKTt1aCgpO0t0KCk7SC5mcm9tQ2FydGVzaWFuND1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksbShlKT8oZS5yZWQ9dC54LGUuZ3JlZW49dC55LGUuYmx1ZT10LnosZS5hbHBoYT10LncsZSk6bmV3IEgodC54LHQueSx0LnosdC53KX07SC5mcm9tQnl0ZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gdD1ILmJ5dGVUb0Zsb2F0KHQ/PzI1NSksZT1ILmJ5dGVUb0Zsb2F0KGU/PzI1NSksbj1ILmJ5dGVUb0Zsb2F0KG4/PzI1NSksbz1ILmJ5dGVUb0Zsb2F0KG8/PzI1NSksbShyKT8oci5yZWQ9dCxyLmdyZWVuPWUsci5ibHVlPW4sci5hbHBoYT1vLHIpOm5ldyBIKHQsZSxuLG8pfTtILmZyb21BbHBoYT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigiYWxwaGEiLGUpLG0obik/KG4ucmVkPXQucmVkLG4uZ3JlZW49dC5ncmVlbixuLmJsdWU9dC5ibHVlLG4uYWxwaGE9ZSxuKTpuZXcgSCh0LnJlZCx0LmdyZWVuLHQuYmx1ZSxlKX07JHMuc3VwcG9ydHNUeXBlZEFycmF5cygpJiYoZ3k9bmV3IEFycmF5QnVmZmVyKDQpLEF5PW5ldyBVaW50MzJBcnJheShneSksS2k9bmV3IFVpbnQ4QXJyYXkoZ3kpKTtILmZyb21SZ2JhPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEF5WzBdPXQsSC5mcm9tQnl0ZXMoS2lbMF0sS2lbMV0sS2lbMl0sS2lbM10sZSl9O0guZnJvbUhzbD1mdW5jdGlvbih0LGUsbixvLHIpe3Q9KHQ/PzApJTEsZT1lPz8wLG49bj8/MCxvPW8/PzE7bGV0IGk9bixzPW4sZj1uO2lmKGUhPT0wKXtsZXQgdTtuPC41P3U9biooMStlKTp1PW4rZS1uKmU7bGV0IGM9MipuLXU7aT15eShjLHUsdCsxLzMpLHM9eXkoYyx1LHQpLGY9eXkoYyx1LHQtMS8zKX1yZXR1cm4gbShyKT8oci5yZWQ9aSxyLmdyZWVuPXMsci5ibHVlPWYsci5hbHBoYT1vLHIpOm5ldyBIKGkscyxmLG8pfTtILmZyb21SYW5kb209ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LnJlZDtpZighbShuKSl7bGV0IHM9dC5taW5pbXVtUmVkPz8wLGY9dC5tYXhpbXVtUmVkPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtUmVkIixzLGYpLG49cytQLm5leHRSYW5kb21OdW1iZXIoKSooZi1zKX1sZXQgbz10LmdyZWVuO2lmKCFtKG8pKXtsZXQgcz10Lm1pbmltdW1HcmVlbj8/MCxmPXQubWF4aW11bUdyZWVuPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtR3JlZW4iLHMsZiksbz1zK1AubmV4dFJhbmRvbU51bWJlcigpKihmLXMpfWxldCByPXQuYmx1ZTtpZighbShyKSl7bGV0IHM9dC5taW5pbXVtQmx1ZT8/MCxmPXQubWF4aW11bUJsdWU/PzE7eS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1CbHVlIixzLGYpLHI9cytQLm5leHRSYW5kb21OdW1iZXIoKSooZi1zKX1sZXQgaT10LmFscGhhO2lmKCFtKGkpKXtsZXQgcz10Lm1pbmltdW1BbHBoYT8/MCxmPXQubWF4aW11bUFscGhhPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtQWxwaGEiLHMsZiksaT1zK1AubmV4dFJhbmRvbU51bWJlcigpKihmLXMpfXJldHVybiBtKGUpPyhlLnJlZD1uLGUuZ3JlZW49byxlLmJsdWU9cixlLmFscGhhPWksZSk6bmV3IEgobixvLHIsaSl9O2NCPS9eIyhbMC05YS1mXSkoWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSk/JC9pLGFCPS9eIyhbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSk/JC9pLGZCPS9ecmdiYT9ccypcKFxzKihbMC05Ll0rJT8pXHMqWyxcc10rXHMqKFswLTkuXSslPylccypbLFxzXStccyooWzAtOS5dKyU/KSg/OlxzKlssXHMvXStccyooWzAtOS5dKykpP1xzKlwpJC9pLHVCPS9eaHNsYT9ccypcKFxzKihbMC05Ll0rKVxzKlssXHNdK1xzKihbMC05Ll0rJSlccypbLFxzXStccyooWzAtOS5dKyUpKD86XHMqWyxccy9dK1xzKihbMC05Ll0rKSk/XHMqXCkkL2k7SC5mcm9tQ3NzQ29sb3JTdHJpbmc9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5zdHJpbmcoImNvbG9yIix0KSxtKGUpfHwoZT1uZXcgSCksdD10LnRyaW0oKTtsZXQgbj1IW3QudG9VcHBlckNhc2UoKV07aWYobShuKSlyZXR1cm4gSC5jbG9uZShuLGUpLGU7bGV0IG89Y0IuZXhlYyh0KTtyZXR1cm4gbyE9PW51bGw/KGUucmVkPXBhcnNlSW50KG9bMV0sMTYpLzE1LGUuZ3JlZW49cGFyc2VJbnQob1syXSwxNikvMTUsZS5ibHVlPXBhcnNlSW50KG9bM10sMTYpLzE1LGUuYWxwaGE9cGFyc2VJbnQob1s0XT8/ImYiLDE2KS8xNSxlKToobz1hQi5leGVjKHQpLG8hPT1udWxsPyhlLnJlZD1wYXJzZUludChvWzFdLDE2KS8yNTUsZS5ncmVlbj1wYXJzZUludChvWzJdLDE2KS8yNTUsZS5ibHVlPXBhcnNlSW50KG9bM10sMTYpLzI1NSxlLmFscGhhPXBhcnNlSW50KG9bNF0/PyJmZiIsMTYpLzI1NSxlKToobz1mQi5leGVjKHQpLG8hPT1udWxsPyhlLnJlZD1wYXJzZUZsb2F0KG9bMV0pLyhvWzFdLnN1YnN0cigtMSk9PT0iJSI/MTAwOjI1NSksZS5ncmVlbj1wYXJzZUZsb2F0KG9bMl0pLyhvWzJdLnN1YnN0cigtMSk9PT0iJSI/MTAwOjI1NSksZS5ibHVlPXBhcnNlRmxvYXQob1szXSkvKG9bM10uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmFscGhhPXBhcnNlRmxvYXQob1s0XT8/IjEuMCIpLGUpOihvPXVCLmV4ZWModCksbyE9PW51bGw/SC5mcm9tSHNsKHBhcnNlRmxvYXQob1sxXSkvMzYwLHBhcnNlRmxvYXQob1syXSkvMTAwLHBhcnNlRmxvYXQob1szXSkvMTAwLHBhcnNlRmxvYXQob1s0XT8/IjEuMCIpLGUpOihlPXZvaWQgMCxlKSkpKX07SC5wYWNrZWRMZW5ndGg9NDtILnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQucmVkLGVbbisrXT10LmdyZWVuLGVbbisrXT10LmJsdWUsZVtuXT10LmFscGhhLGV9O0gudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBIKSxuLnJlZD10W2UrK10sbi5ncmVlbj10W2UrK10sbi5ibHVlPXRbZSsrXSxuLmFscGhhPXRbZV0sbn07SC5ieXRlVG9GbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gdC8yNTV9O0guZmxvYXRUb0J5dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT0xPzI1NTp0KjI1NnwwfTtILmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5yZWQ9dC5yZWQsZS5ncmVlbj10LmdyZWVuLGUuYmx1ZT10LmJsdWUsZS5hbHBoYT10LmFscGhhLGUpOm5ldyBIKHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpfTtILmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC5yZWQ9PT1lLnJlZCYmdC5ncmVlbj09PWUuZ3JlZW4mJnQuYmx1ZT09PWUuYmx1ZSYmdC5hbHBoYT09PWUuYWxwaGF9O0guZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LnJlZD09PWVbbl0mJnQuZ3JlZW49PT1lW24rMV0mJnQuYmx1ZT09PWVbbisyXSYmdC5hbHBoYT09PWVbbiszXX07SC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEguY2xvbmUodGhpcyx0KX07SC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBILmVxdWFscyh0aGlzLHQpfTtILnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZNYXRoLmFicyh0aGlzLnJlZC10LnJlZCk8PWUmJk1hdGguYWJzKHRoaXMuZ3JlZW4tdC5ncmVlbik8PWUmJk1hdGguYWJzKHRoaXMuYmx1ZS10LmJsdWUpPD1lJiZNYXRoLmFicyh0aGlzLmFscGhhLXQuYWxwaGEpPD1lfTtILnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzLnJlZH0sICR7dGhpcy5ncmVlbn0sICR7dGhpcy5ibHVlfSwgJHt0aGlzLmFscGhhfSlgfTtILnByb3RvdHlwZS50b0Nzc0NvbG9yU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9SC5mbG9hdFRvQnl0ZSh0aGlzLnJlZCksZT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLG49SC5mbG9hdFRvQnl0ZSh0aGlzLmJsdWUpO3JldHVybiB0aGlzLmFscGhhPT09MT9gcmdiKCR7dH0sJHtlfSwke259KWA6YHJnYmEoJHt0fSwke2V9LCR7bn0sJHt0aGlzLmFscGhhfSlgfTtILnByb3RvdHlwZS50b0Nzc0hleFN0cmluZz1mdW5jdGlvbigpe2xldCB0PUguZmxvYXRUb0J5dGUodGhpcy5yZWQpLnRvU3RyaW5nKDE2KTt0Lmxlbmd0aDwyJiYodD1gMCR7dH1gKTtsZXQgZT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLnRvU3RyaW5nKDE2KTtlLmxlbmd0aDwyJiYoZT1gMCR7ZX1gKTtsZXQgbj1ILmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSkudG9TdHJpbmcoMTYpO2lmKG4ubGVuZ3RoPDImJihuPWAwJHtufWApLHRoaXMuYWxwaGE8MSl7bGV0IG89SC5mbG9hdFRvQnl0ZSh0aGlzLmFscGhhKS50b1N0cmluZygxNik7cmV0dXJuIG8ubGVuZ3RoPDImJihvPWAwJHtvfWApLGAjJHt0fSR7ZX0ke259JHtvfWB9cmV0dXJuYCMke3R9JHtlfSR7bn1gfTtILnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKHQpe2xldCBlPUguZmxvYXRUb0J5dGUodGhpcy5yZWQpLG49SC5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxvPUguZmxvYXRUb0J5dGUodGhpcy5ibHVlKSxyPUguZmxvYXRUb0J5dGUodGhpcy5hbHBoYSk7cmV0dXJuIG0odCk/KHRbMF09ZSx0WzFdPW4sdFsyXT1vLHRbM109cix0KTpbZSxuLG8scl19O0gucHJvdG90eXBlLnRvUmdiYT1mdW5jdGlvbigpe3JldHVybiBLaVswXT1ILmZsb2F0VG9CeXRlKHRoaXMucmVkKSxLaVsxXT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLEtpWzJdPUguZmxvYXRUb0J5dGUodGhpcy5ibHVlKSxLaVszXT1ILmZsb2F0VG9CeXRlKHRoaXMuYWxwaGEpLEF5WzBdfTtILnByb3RvdHlwZS5icmlnaHRlbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIm1hZ25pdHVkZSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1hZ25pdHVkZSIsdCwwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksdD0xLXQsZS5yZWQ9MS0oMS10aGlzLnJlZCkqdCxlLmdyZWVuPTEtKDEtdGhpcy5ncmVlbikqdCxlLmJsdWU9MS0oMS10aGlzLmJsdWUpKnQsZS5hbHBoYT10aGlzLmFscGhhLGV9O0gucHJvdG90eXBlLmRhcmtlbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIm1hZ25pdHVkZSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1hZ25pdHVkZSIsdCwwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksdD0xLXQsZS5yZWQ9dGhpcy5yZWQqdCxlLmdyZWVuPXRoaXMuZ3JlZW4qdCxlLmJsdWU9dGhpcy5ibHVlKnQsZS5hbHBoYT10aGlzLmFscGhhLGV9O0gucHJvdG90eXBlLndpdGhBbHBoYT1mdW5jdGlvbih0LGUpe3JldHVybiBILmZyb21BbHBoYSh0aGlzLHQsZSl9O0guYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQrZS5yZWQsbi5ncmVlbj10LmdyZWVuK2UuZ3JlZW4sbi5ibHVlPXQuYmx1ZStlLmJsdWUsbi5hbHBoYT10LmFscGhhK2UuYWxwaGEsbn07SC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPXQucmVkLWUucmVkLG4uZ3JlZW49dC5ncmVlbi1lLmdyZWVuLG4uYmx1ZT10LmJsdWUtZS5ibHVlLG4uYWxwaGE9dC5hbHBoYS1lLmFscGhhLG59O0gubXVsdGlwbHk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLnJlZD10LnJlZCplLnJlZCxuLmdyZWVuPXQuZ3JlZW4qZS5ncmVlbixuLmJsdWU9dC5ibHVlKmUuYmx1ZSxuLmFscGhhPXQuYWxwaGEqZS5hbHBoYSxufTtILmRpdmlkZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPXQucmVkL2UucmVkLG4uZ3JlZW49dC5ncmVlbi9lLmdyZWVuLG4uYmx1ZT10LmJsdWUvZS5ibHVlLG4uYWxwaGE9dC5hbHBoYS9lLmFscGhhLG59O0gubW9kPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQlZS5yZWQsbi5ncmVlbj10LmdyZWVuJWUuZ3JlZW4sbi5ibHVlPXQuYmx1ZSVlLmJsdWUsbi5hbHBoYT10LmFscGhhJWUuYWxwaGEsbn07SC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksby5yZWQ9UC5sZXJwKHQucmVkLGUucmVkLG4pLG8uZ3JlZW49UC5sZXJwKHQuZ3JlZW4sZS5ncmVlbixuKSxvLmJsdWU9UC5sZXJwKHQuYmx1ZSxlLmJsdWUsbiksby5hbHBoYT1QLmxlcnAodC5hbHBoYSxlLmFscGhhLG4pLG99O0gubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQqZSxuLmdyZWVuPXQuZ3JlZW4qZSxuLmJsdWU9dC5ibHVlKmUsbi5hbHBoYT10LmFscGhhKmUsbn07SC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQvZSxuLmdyZWVuPXQuZ3JlZW4vZSxuLmJsdWU9dC5ibHVlL2Usbi5hbHBoYT10LmFscGhhL2Usbn07SC5BTElDRUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwRjhGRiIpKTtILkFOVElRVUVXSElURT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkFFQkQ3IikpO0guQVFVQT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRkZGIikpO0guQVFVQU1BUklORT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0ZGRkQ0IikpO0guQVpVUkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwRkZGRiIpKTtILkJFSUdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUY1REMiKSk7SC5CSVNRVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRTRDNCIpKTtILkJMQUNLPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwMDAiKSk7SC5CTEFOQ0hFREFMTU9ORD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFQkNEIikpO0guQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMEZGIikpO0guQkxVRVZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOEEyQkUyIikpO0guQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0E1MkEyQSIpKTtILkJVUkxZV09PRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREVCODg3IikpO0guQ0FERVRCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM1RjlFQTAiKSk7SC5DSEFSVFJFVVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3RkZGMDAiKSk7SC5DSE9DT0xBVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0QyNjkxRSIpKTtILkNPUkFMPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjdGNTAiKSk7SC5DT1JORkxPV0VSQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNjQ5NUVEIikpO0guQ09STlNJTEs9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRjhEQyIpKTtILkNSSU1TT049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0RDMTQzQyIpKTtILkNZQU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkZGRiIpKTtILkRBUktCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwOEIiKSk7SC5EQVJLQ1lBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA4QjhCIikpO0guREFSS0dPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQjg4NjBCIikpO0guREFSS0dSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0E5QTlBOSIpKTtILkRBUktHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA2NDAwIikpO0guREFSS0dSRVk9SC5EQVJLR1JBWTtILkRBUktLSEFLST1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQkRCNzZCIikpO0guREFSS01BR0VOVEE9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhCMDA4QiIpKTtILkRBUktPTElWRUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM1NTZCMkYiKSk7SC5EQVJLT1JBTkdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjhDMDAiKSk7SC5EQVJLT1JDSElEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5OTMyQ0MiKSk7SC5EQVJLUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjAwMDAiKSk7SC5EQVJLU0FMTU9OPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNFOTk2N0EiKSk7SC5EQVJLU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhGQkM4RiIpKTtILkRBUktTTEFURUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQ4M0Q4QiIpKTtILkRBUktTTEFURUdSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzJGNEY0RiIpKTtILkRBUktTTEFURUdSRVk9SC5EQVJLU0xBVEVHUkFZO0guREFSS1RVUlFVT0lTRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBDRUQxIikpO0guREFSS1ZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTQwMEQzIikpO0guREVFUFBJTks9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGMTQ5MyIpKTtILkRFRVBTS1lCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEJGRkYiKSk7SC5ESU1HUkFZPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2OTY5NjkiKSk7SC5ESU1HUkVZPUguRElNR1JBWTtILkRPREdFUkJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzFFOTBGRiIpKTtILkZJUkVCUklDSz1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQjIyMjIyIikpO0guRkxPUkFMV0hJVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkFGMCIpKTtILkZPUkVTVEdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyMjhCMjIiKSk7SC5GVUNIU0lBPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwRkYiKSk7SC5HQUlOU0JPUk89T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0RDRENEQyIpKTtILkdIT1NUV0hJVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0Y4RjhGRiIpKTtILkdPTEQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRDcwMCIpKTtILkdPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREFBNTIwIikpO0guR1JBWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODA4MDgwIikpO0guR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwODAwMCIpKTtILkdSRUVOWUVMTE9XPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBREZGMkYiKSk7SC5HUkVZPUguR1JBWTtILkhPTkVZREVXPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEZGRjAiKSk7SC5IT1RQSU5LPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjY5QjQiKSk7SC5JTkRJQU5SRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0NENUM1QyIpKTtILklORElHTz1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNEIwMDgyIikpO0guSVZPUlk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkZGMCIpKTtILktIQUtJPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEU2OEMiKSk7SC5MQVZFTkRFUj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTZFNkZBIikpO0guTEFWRU5EQVJfQkxVU0g9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRjBGNSIpKTtILkxBV05HUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0NGQzAwIikpO0guTEVNT05DSElGRk9OPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBQ0QiKSk7SC5MSUdIVEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0FERDhFNiIpKTtILkxJR0hUQ09SQUw9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwODA4MCIpKTtILkxJR0hUQ1lBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTBGRkZGIikpO0guTElHSFRHT0xERU5ST0RZRUxMT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZBRkFEMiIpKTtILkxJR0hUR1JBWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDNEM0QzIikpO0guTElHSFRHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTBFRTkwIikpO0guTElHSFRHUkVZPUguTElHSFRHUkFZO0guTElHSFRQSU5LPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkI2QzEiKSk7SC5MSUdIVFNFQUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyMEIyQUEiKSk7SC5MSUdIVFNLWUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzg3Q0VGQSIpKTtILkxJR0hUU0xBVEVHUkFZPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3Nzg4OTkiKSk7SC5MSUdIVFNMQVRFR1JFWT1ILkxJR0hUU0xBVEVHUkFZO0guTElHSFRTVEVFTEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0IwQzRERSIpKTtILkxJR0hUWUVMTE9XPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRTAiKSk7SC5MSU1FPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGMDAiKSk7SC5MSU1FR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzMyQ0QzMiIpKTtILkxJTkVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGQUYwRTYiKSk7SC5NQUdFTlRBPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwRkYiKSk7SC5NQVJPT049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzgwMDAwMCIpKTtILk1FRElVTUFRVUFNQVJJTkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzY2Q0RBQSIpKTtILk1FRElVTUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDBDRCIpKTtILk1FRElVTU9SQ0hJRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQkE1NUQzIikpO0guTUVESVVNUFVSUExFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5MzcwREIiKSk7SC5NRURJVU1TRUFHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjM0NCMzcxIikpO0guTUVESVVNU0xBVEVCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3QjY4RUUiKSk7SC5NRURJVU1TUFJJTkdHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGQTlBIikpO0guTUVESVVNVFVSUVVPSVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0OEQxQ0MiKSk7SC5NRURJVU1WSU9MRVRSRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0M3MTU4NSIpKTtILk1JRE5JR0hUQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMTkxOTcwIikpO0guTUlOVENSRUFNPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUZGRkEiKSk7SC5NSVNUWVJPU0U9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRTRFMSIpKTtILk1PQ0NBU0lOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0QjUiKSk7SC5OQVZBSk9XSElURT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZERUFEIikpO0guTkFWWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDgwIikpO0guT0xETEFDRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkRGNUU2IikpO0guT0xJVkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzgwODAwMCIpKTtILk9MSVZFRFJBQj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNkI4RTIzIikpO0guT1JBTkdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkE1MDAiKSk7SC5PUkFOR0VSRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGNDUwMCIpKTtILk9SQ0hJRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREE3MEQ2IikpO0guUEFMRUdPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRUVFOEFBIikpO0guUEFMRUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5OEZCOTgiKSk7SC5QQUxFVFVSUVVPSVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBRkVFRUUiKSk7SC5QQUxFVklPTEVUUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQjcwOTMiKSk7SC5QQVBBWUFXSElQPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkVGRDUiKSk7SC5QRUFDSFBVRkY9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGREFCOSIpKTtILlBFUlU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0NEODUzRiIpKTtILlBJTks9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGQzBDQiIpKTtILlBMVU09T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0REQTBERCIpKTtILlBPV0RFUkJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0IwRTBFNiIpKTtILlBVUlBMRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODAwMDgwIikpO0guUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwMDAiKSk7SC5ST1NZQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0JDOEY4RiIpKTtILlJPWUFMQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNDE2OUUxIikpO0guU0FERExFQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhCNDUxMyIpKTtILlNBTE1PTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkE4MDcyIikpO0guU0FORFlCUk9XTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjRBNDYwIikpO0guU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzJFOEI1NyIpKTtILlNFQVNIRUxMPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkY1RUUiKSk7SC5TSUVOTkE9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0EwNTIyRCIpKTtILlNJTFZFUj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQzBDMEMwIikpO0guU0tZQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODdDRUVCIikpO0guU0xBVEVCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2QTVBQ0QiKSk7SC5TTEFURUdSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzcwODA5MCIpKTtILlNMQVRFR1JFWT1ILlNMQVRFR1JBWTtILlNOT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkFGQSIpKTtILlNQUklOR0dSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGN0YiKSk7SC5TVEVFTEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQ2ODJCNCIpKTtILlRBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDJCNDhDIikpO0guVEVBTD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA4MDgwIikpO0guVEhJU1RMRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDhCRkQ4IikpO0guVE9NQVRPPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjYzNDciKSk7SC5UVVJRVU9JU0U9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQwRTBEMCIpKTtILlZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRUU4MkVFIikpO0guV0hFQVQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0Y1REVCMyIpKTtILldISVRFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRkYiKSk7SC5XSElURVNNT0tFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUY1RjUiKSk7SC5ZRUxMT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkYwMCIpKTtILllFTExPV0dSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5QUNEMzIiKSk7SC5UUkFOU1BBUkVOVD1PYmplY3QuZnJlZXplKG5ldyBIKDAsMCwwLDApKTtuZT1IfSk7ZnVuY3Rpb24gbEIodCxlLG4sbyxyKXtsZXQgaT16RTtpLmxlbmd0aD1yO2xldCBzLGY9bi5yZWQsdT1uLmdyZWVuLGM9bi5ibHVlLGw9bi5hbHBoYSxwPW8ucmVkLGQ9by5ncmVlbixoPW8uYmx1ZSxfPW8uYWxwaGE7aWYobmUuZXF1YWxzKG4sbykpe2ZvcihzPTA7czxyO3MrKylpW3NdPW5lLmNsb25lKG4pO3JldHVybiBpfWxldCBnPShwLWYpL3IsYj0oZC11KS9yLHc9KGgtYykvcixPPShfLWwpL3I7Zm9yKHM9MDtzPHI7cysrKWlbc109bmV3IG5lKGYrcypnLHUrcypiLGMrcyp3LGwrcypPKTtyZXR1cm4gaX1mdW5jdGlvbiBKZih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQuY29sb3JzLG89dC53aWR0aD8/MSxyPXQuY29sb3JzUGVyVmVydGV4Pz8hMTtpZighbShlKXx8ZS5sZW5ndGg8Mil0aHJvdyBuZXcgRCgiQXQgbGVhc3QgdHdvIHBvc2l0aW9ucyBhcmUgcmVxdWlyZWQuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJ3aWR0aCBtdXN0IGJlIGEgbnVtYmVyIik7aWYobShuKSYmKHImJm4ubGVuZ3RoPGUubGVuZ3RofHwhciYmbi5sZW5ndGg8ZS5sZW5ndGgtMSkpdGhyb3cgbmV3IEQoImNvbG9ycyBoYXMgYW4gaW52YWxpZCBsZW5ndGguIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fY29sb3JzPW4sdGhpcy5fd2lkdGg9byx0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9cix0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUodC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQpLHRoaXMuX2FyY1R5cGU9dC5hcmNUeXBlPz9oZS5HRU9ERVNJQyx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5bGluZUdlb21ldHJ5IjtsZXQgaT0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoO2krPW0obik/MStuLmxlbmd0aCpuZS5wYWNrZWRMZW5ndGg6MSx0aGlzLnBhY2tlZExlbmd0aD1pK1kucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs0fXZhciB6RSxqRSxIRSx3YyxVRSxrRSxHRSxWRSxieSxxRT0kKCgpPT57dWMoKTtIcigpO3ZlKCk7RHQoKTtNYSgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEcCgpO1plKCk7S3QoKTtnYSgpO3RuKCk7eG8oKTt6RT1bXTtKZi5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9jb2xvcnM7Zm9yKGk9bShzKT9zLmxlbmd0aDowLGVbbisrXT1pLG89MDtvPGk7KytvLG4rPW5lLnBhY2tlZExlbmd0aCluZS5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5fY29sb3JzUGVyVmVydGV4PzE6MCxlW24rK109dC5fYXJjVHlwZSxlW25dPXQuX2dyYW51bGFyaXR5LGV9O2pFPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksSEU9bmV3IHB0LHdjPXtwb3NpdGlvbnM6dm9pZCAwLGNvbG9yczp2b2lkIDAsZWxsaXBzb2lkOmpFLHZlcnRleEZvcm1hdDpIRSx3aWR0aDp2b2lkIDAsY29sb3JzUGVyVmVydGV4OnZvaWQgMCxhcmNUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O0pmLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM9cj4wP25ldyBBcnJheShyKTp2b2lkIDA7Zm9yKG89MDtvPHI7KytvLGUrPW5lLnBhY2tlZExlbmd0aClzW29dPW5lLnVucGFjayh0LGUpO2xldCBmPVkudW5wYWNrKHQsZSxqRSk7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IHU9cHQudW5wYWNrKHQsZSxIRSk7ZSs9cHQucGFja2VkTGVuZ3RoO2xldCBjPXRbZSsrXSxsPXRbZSsrXT09PTEscD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pPyhuLl9wb3NpdGlvbnM9aSxuLl9jb2xvcnM9cyxuLl9lbGxpcHNvaWQ9WS5jbG9uZShmLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHUsbi5fdmVydGV4Rm9ybWF0KSxuLl93aWR0aD1jLG4uX2NvbG9yc1BlclZlcnRleD1sLG4uX2FyY1R5cGU9cCxuLl9ncmFudWxhcml0eT1kLG4pOih3Yy5wb3NpdGlvbnM9aSx3Yy5jb2xvcnM9cyx3Yy53aWR0aD1jLHdjLmNvbG9yc1BlclZlcnRleD1sLHdjLmFyY1R5cGU9cCx3Yy5ncmFudWxhcml0eT1kLG5ldyBKZih3YykpfTtVRT1uZXcgYSxrRT1uZXcgYSxHRT1uZXcgYSxWRT1uZXcgYTtKZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll93aWR0aCxuPXQuX3ZlcnRleEZvcm1hdCxvPXQuX2NvbG9ycyxyPXQuX2NvbG9yc1BlclZlcnRleCxpPXQuX2FyY1R5cGUscz10Ll9ncmFudWxhcml0eSxmPXQuX2VsbGlwc29pZCx1LGMsbCxwPVtdLGQ9Q24odC5fcG9zaXRpb25zLGEuZXF1YWxzRXBzaWxvbiwhMSxwKTtpZihtKG8pJiZwLmxlbmd0aD4wKXtsZXQgTD0wLHo9cFswXTtvPW8uZmlsdGVyKGZ1bmN0aW9uKGosayl7bGV0IHE9ITE7cmV0dXJuIHI/cT1rPT09enx8az09PTAmJno9PT0xOnE9aysxPT09eixxPyhMKyssej1wW0xdLCExKTohMH0pfWxldCBoPWQubGVuZ3RoO2lmKGg8Mnx8ZTw9MClyZXR1cm47aWYoaT09PWhlLkdFT0RFU0lDfHxpPT09aGUuUkhVTUIpe2xldCBMLHo7aT09PWhlLkdFT0RFU0lDPyhMPVAuY2hvcmRMZW5ndGgocyxmLm1heGltdW1SYWRpdXMpLHo9QW4ubnVtYmVyT2ZQb2ludHMpOihMPXMsej1Bbi5udW1iZXJPZlBvaW50c1JodW1iTGluZSk7bGV0IGo9QW4uZXh0cmFjdEhlaWdodHMoZCxmKTtpZihtKG8pKXtsZXQgaz0xO2Zvcih1PTA7dTxoLTE7Kyt1KWsrPXooZFt1XSxkW3UrMV0sTCk7bGV0IHE9bmV3IEFycmF5KGspLFc9MDtmb3IodT0wO3U8aC0xOysrdSl7bGV0IFI9ZFt1XSxudD1kW3UrMV0sYXQ9b1t1XSxsdD16KFIsbnQsTCk7aWYociYmdTxrKXtsZXQgX3Q9b1t1KzFdLG90PWxCKFIsbnQsYXQsX3QsbHQpLFB0PW90Lmxlbmd0aDtmb3IoYz0wO2M8UHQ7KytjKXFbVysrXT1vdFtjXX1lbHNlIGZvcihjPTA7YzxsdDsrK2MpcVtXKytdPW5lLmNsb25lKGF0KX1xW1ddPW5lLmNsb25lKG9bby5sZW5ndGgtMV0pLG89cSx6RS5sZW5ndGg9MH1pPT09aGUuR0VPREVTSUM/ZD1Bbi5nZW5lcmF0ZUNhcnRlc2lhbkFyYyh7cG9zaXRpb25zOmQsbWluRGlzdGFuY2U6TCxlbGxpcHNvaWQ6ZixoZWlnaHQ6an0pOmQ9QW4uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYyh7cG9zaXRpb25zOmQsZ3JhbnVsYXJpdHk6TCxlbGxpcHNvaWQ6ZixoZWlnaHQ6an0pfWg9ZC5sZW5ndGg7bGV0IF89aCo0LTQsZz1uZXcgRmxvYXQ2NEFycmF5KF8qMyksYj1uZXcgRmxvYXQ2NEFycmF5KF8qMyksdz1uZXcgRmxvYXQ2NEFycmF5KF8qMyksTz1uZXcgRmxvYXQzMkFycmF5KF8qMiksRT1uLnN0P25ldyBGbG9hdDMyQXJyYXkoXyoyKTp2b2lkIDAsVD1tKG8pP25ldyBVaW50OEFycmF5KF8qNCk6dm9pZCAwLHg9MCxNPTAsTj0wLEY9MCxJO2ZvcihjPTA7YzxoOysrYyl7Yz09PTA/KEk9VUUsYS5zdWJ0cmFjdChkWzBdLGRbMV0sSSksYS5hZGQoZFswXSxJLEkpKTpJPWRbYy0xXSxhLmNsb25lKEksR0UpLGEuY2xvbmUoZFtjXSxrRSksYz09PWgtMT8oST1VRSxhLnN1YnRyYWN0KGRbaC0xXSxkW2gtMl0sSSksYS5hZGQoZFtoLTFdLEksSSkpOkk9ZFtjKzFdLGEuY2xvbmUoSSxWRSk7bGV0IEwsejttKFQpJiYoYyE9PTAmJiFyP0w9b1tjLTFdOkw9b1tjXSxjIT09aC0xJiYoej1vW2NdKSk7bGV0IGo9Yz09PTA/MjowLGs9Yz09PWgtMT8yOjQ7Zm9yKGw9ajtsPGs7KytsKXthLnBhY2soa0UsZyx4KSxhLnBhY2soR0UsYix4KSxhLnBhY2soVkUsdyx4KSx4Kz0zO2xldCBxPWwtMjwwPy0xOjE7aWYoT1tNKytdPTIqKGwlMiktMSxPW00rK109cSplLG4uc3QmJihFW04rK109Yy8oaC0xKSxFW04rK109TWF0aC5tYXgoT1tNLTJdLDApKSxtKFQpKXtsZXQgVz1sPDI/TDp6O1RbRisrXT1uZS5mbG9hdFRvQnl0ZShXLnJlZCksVFtGKytdPW5lLmZsb2F0VG9CeXRlKFcuZ3JlZW4pLFRbRisrXT1uZS5mbG9hdFRvQnl0ZShXLmJsdWUpLFRbRisrXT1uZS5mbG9hdFRvQnl0ZShXLmFscGhhKX19fWxldCB2PW5ldyBpZTt2LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Z30pLHYucHJldlBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Yn0pLHYubmV4dFBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6d30pLHYuZXhwYW5kQW5kV2lkdGg9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOk99KSxuLnN0JiYodi5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6RX0pKSxtKFQpJiYodi5jb2xvcj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LHZhbHVlczpULG5vcm1hbGl6ZTohMH0pKTtsZXQgQj1MdC5jcmVhdGVUeXBlZEFycmF5KF8saCo2LTYpLEE9MCxTPTAsQz1oLTE7Zm9yKGM9MDtjPEM7KytjKUJbUysrXT1BLEJbUysrXT1BKzIsQltTKytdPUErMSxCW1MrK109QSsxLEJbUysrXT1BKzIsQltTKytdPUErMyxBKz00O3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6dixpbmRpY2VzOkIscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbVBvaW50cyhkKSxnZW9tZXRyeVR5cGU6TmkuUE9MWUxJTkVTfSl9O2J5PUpmfSk7dmFyIHd5PXt9O2xlKHd5LHtkZWZhdWx0OigpPT5kQn0pO2Z1bmN0aW9uIHBCKHQsZSl7cmV0dXJuIG0oZSkmJih0PWJ5LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLGJ5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBkQixUeT0kKCgpPT57ZnQoKTskdCgpO3FFKCk7ZEI9cEJ9KTtmdW5jdGlvbiBtQih0LGUsbixvKXtsZXQgcj1uZXcgaWU7by5wb3NpdGlvbiYmKHIucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp0fSkpO2xldCBpPWUubGVuZ3RoLHM9dC5sZW5ndGgvMyxmPShzLWkqMikvKGkqMiksdT1QZS50cmlhbmd1bGF0ZShlKSxjPShmLTEpKmkqNit1Lmxlbmd0aCoyLGw9THQuY3JlYXRlVHlwZWRBcnJheShzLGMpLHAsZCxoLF8sZyxiLHc9aSoyLE89MDtmb3IocD0wO3A8Zi0xO3ArKyl7Zm9yKGQ9MDtkPGktMTtkKyspaD1kKjIrcCppKjIsYj1oK3csXz1oKzEsZz1fK3csbFtPKytdPV8sbFtPKytdPWgsbFtPKytdPWcsbFtPKytdPWcsbFtPKytdPWgsbFtPKytdPWI7aD1pKjItMitwKmkqMixfPWgrMSxnPV8rdyxiPWgrdyxsW08rK109XyxsW08rK109aCxsW08rK109ZyxsW08rK109ZyxsW08rK109aCxsW08rK109Yn1pZihvLnN0fHxvLnRhbmdlbnR8fG8uYml0YW5nZW50KXtsZXQgeD1uZXcgRmxvYXQzMkFycmF5KHMqMiksTT0xLyhmLTEpLE49MS9uLmhlaWdodCxGPW4uaGVpZ2h0LzIsSSx2LEI9MDtmb3IocD0wO3A8ZjtwKyspe2ZvcihJPXAqTSx2PU4qKGVbMF0ueStGKSx4W0IrK109SSx4W0IrK109dixkPTE7ZDxpO2QrKyl2PU4qKGVbZF0ueStGKSx4W0IrK109SSx4W0IrK109dix4W0IrK109SSx4W0IrK109djt2PU4qKGVbMF0ueStGKSx4W0IrK109SSx4W0IrK109dn1mb3IoZD0wO2Q8aTtkKyspST0wLHY9TiooZVtkXS55K0YpLHhbQisrXT1JLHhbQisrXT12O2ZvcihkPTA7ZDxpO2QrKylJPShmLTEpKk0sdj1OKihlW2RdLnkrRikseFtCKytdPUkseFtCKytdPXY7ci5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6bmV3IEZsb2F0MzJBcnJheSh4KX0pfWxldCBFPXMtaSoyO2ZvcihwPTA7cDx1Lmxlbmd0aDtwKz0zKXtsZXQgeD11W3BdK0UsTT11W3ArMV0rRSxOPXVbcCsyXStFO2xbTysrXT14LGxbTysrXT1NLGxbTysrXT1OLGxbTysrXT1OK2ksbFtPKytdPU0raSxsW08rK109eCtpfWxldCBUPW5ldyBVdCh7YXR0cmlidXRlczpyLGluZGljZXM6bCxib3VuZGluZ1NwaGVyZTpBdC5mcm9tVmVydGljZXModCkscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9KTtpZihvLm5vcm1hbCYmKFQ9R2UuY29tcHV0ZU5vcm1hbChUKSksby50YW5nZW50fHxvLmJpdGFuZ2VudCl7dHJ5e1Q9R2UuY29tcHV0ZVRhbmdlbnRBbmRCaXRhbmdlbnQoVCl9Y2F0Y2h7ZGQoInBvbHlsaW5lLXZvbHVtZS10YW5nZW50LWJpdGFuZ2VudCIsIlVuYWJsZSB0byBjb21wdXRlIHRhbmdlbnRzIGFuZCBiaXRhbmdlbnRzIGZvciBwb2x5bGluZSB2b2x1bWUgZ2VvbWV0cnkiKX1vLnRhbmdlbnR8fChULmF0dHJpYnV0ZXMudGFuZ2VudD12b2lkIDApLG8uYml0YW5nZW50fHwoVC5hdHRyaWJ1dGVzLmJpdGFuZ2VudD12b2lkIDApLG8uc3R8fChULmF0dHJpYnV0ZXMuc3Q9dm9pZCAwKX1yZXR1cm4gVH1mdW5jdGlvbiBldSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvbHlsaW5lUG9zaXRpb25zLG49dC5zaGFwZVBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb2x5bGluZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5zaGFwZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9zaGFwZT1uLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQpLHRoaXMuX2Nvcm5lclR5cGU9dC5jb3JuZXJUeXBlPz9mbi5ST1VOREVELHRoaXMuX3ZlcnRleEZvcm1hdD1wdC5jbG9uZSh0LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCksdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeSI7bGV0IG89MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtvKz0xK24ubGVuZ3RoKkoucGFja2VkTGVuZ3RoLHRoaXMucGFja2VkTGVuZ3RoPW8rWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzJ9dmFyIEtFLFdFLHR1LGhCLE95LFhFPSQoKCk9PntIcigpO0NmKCk7dmUoKTtrZSgpO0R0KCk7RGUoKTtfYygpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7Y2koKTtaZSgpO0t0KCk7WjAoKTtLcigpO3lkKCk7dG4oKTt4bygpO3BjKCk7ZXUucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7bj1uPz8wO2xldCBvLHI9dC5fcG9zaXRpb25zLGk9ci5sZW5ndGg7Zm9yKGVbbisrXT1pLG89MDtvPGk7KytvLG4rPWEucGFja2VkTGVuZ3RoKWEucGFjayhyW29dLGUsbik7bGV0IHM9dC5fc2hhcGU7Zm9yKGk9cy5sZW5ndGgsZVtuKytdPWksbz0wO288aTsrK28sbis9Si5wYWNrZWRMZW5ndGgpSi5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9jb3JuZXJUeXBlLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07S0U9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxXRT1uZXcgcHQsdHU9e3BvbHlsaW5lUG9zaXRpb25zOnZvaWQgMCxzaGFwZVBvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOktFLHZlcnRleEZvcm1hdDpXRSxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O2V1LnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1KLnBhY2tlZExlbmd0aClzW29dPUoudW5wYWNrKHQsZSk7bGV0IGY9WS51bnBhY2sodCxlLEtFKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgdT1wdC51bnBhY2sodCxlLFdFKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IGM9dFtlKytdLGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fc2hhcGU9cyxuLl9lbGxpcHNvaWQ9WS5jbG9uZShmLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHUsbi5fdmVydGV4Rm9ybWF0KSxuLl9jb3JuZXJUeXBlPWMsbi5fZ3JhbnVsYXJpdHk9bCxuKToodHUucG9seWxpbmVQb3NpdGlvbnM9aSx0dS5zaGFwZVBvc2l0aW9ucz1zLHR1LmNvcm5lclR5cGU9Yyx0dS5ncmFudWxhcml0eT1sLG5ldyBldSh0dSkpfTtoQj1uZXcgcXI7ZXUuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49Q24oZSxhLmVxdWFsc0Vwc2lsb24pLG89dC5fc2hhcGU7aWYobz1fcy5yZW1vdmVEdXBsaWNhdGVzRnJvbVNoYXBlKG8pLG4ubGVuZ3RoPDJ8fG8ubGVuZ3RoPDMpcmV0dXJuO1BlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChvKT09PVBvLkNMT0NLV0lTRSYmby5yZXZlcnNlKCk7bGV0IHI9cXIuZnJvbVBvaW50cyhvLGhCKSxpPV9zLmNvbXB1dGVQb3NpdGlvbnMobixvLHIsdCwhMCk7cmV0dXJuIG1CKGksbyxyLHQuX3ZlcnRleEZvcm1hdCl9O095PWV1fSk7dmFyIEV5PXt9O2xlKEV5LHtkZWZhdWx0OigpPT55Qn0pO2Z1bmN0aW9uIF9CKHQsZSl7cmV0dXJuIG0oZSkmJih0PU95LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLE95LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciB5QixSeT0kKCgpPT57ZnQoKTskdCgpO1hFKCk7eUI9X0J9KTtmdW5jdGlvbiBnQih0LGUpe2xldCBuPW5ldyBpZTtuLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dH0pO2xldCBvPWUubGVuZ3RoLHI9bi5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMscz10Lmxlbmd0aC8zL28sZj1MdC5jcmVhdGVUeXBlZEFycmF5KHIsMipvKihzKzEpKSx1LGMsbD0wO3U9MDtsZXQgcD11Km87Zm9yKGM9MDtjPG8tMTtjKyspZltsKytdPWMrcCxmW2wrK109YytwKzE7Zm9yKGZbbCsrXT1vLTErcCxmW2wrK109cCx1PXMtMSxwPXUqbyxjPTA7YzxvLTE7YysrKWZbbCsrXT1jK3AsZltsKytdPWMrcCsxO2ZvcihmW2wrK109by0xK3AsZltsKytdPXAsdT0wO3U8cy0xO3UrKyl7bGV0IGg9byp1LF89aCtvO2ZvcihjPTA7YzxvO2MrKylmW2wrK109YytoLGZbbCsrXT1jK199cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpuLGluZGljZXM6THQuY3JlYXRlVHlwZWRBcnJheShyLGYpLGJvdW5kaW5nU3BoZXJlOkF0LmZyb21WZXJ0aWNlcyh0KSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9ZnVuY3Rpb24gb3UodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb2x5bGluZVBvc2l0aW9ucyxuPXQuc2hhcGVQb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9seWxpbmVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc2hhcGVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fc2hhcGU9bix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl9jb3JuZXJUeXBlPXQuY29ybmVyVHlwZT8/Zm4uUk9VTkRFRCx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeSI7bGV0IG89MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtvKz0xK24ubGVuZ3RoKkoucGFja2VkTGVuZ3RoLHRoaXMucGFja2VkTGVuZ3RoPW8rWS5wYWNrZWRMZW5ndGgrMn12YXIgWUUsbnUsQUIsU3ksJEU9JCgoKT0+e0hyKCk7Q2YoKTt2ZSgpO2tlKCk7RHQoKTtEZSgpO19jKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtaZSgpO0t0KCk7S3IoKTt5ZCgpO3RuKCk7cGMoKTtvdS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9zaGFwZTtmb3IoaT1zLmxlbmd0aCxlW24rK109aSxvPTA7bzxpOysrbyxuKz1KLnBhY2tlZExlbmd0aClKLnBhY2soc1tvXSxlLG4pO3JldHVybiBZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2Nvcm5lclR5cGUsZVtuXT10Ll9ncmFudWxhcml0eSxlfTtZRT1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLG51PXtwb2x5bGluZVBvc2l0aW9uczp2b2lkIDAsc2hhcGVQb3NpdGlvbnM6dm9pZCAwLGVsbGlwc29pZDpZRSxoZWlnaHQ6dm9pZCAwLGNvcm5lclR5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07b3UudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcz1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPUoucGFja2VkTGVuZ3RoKXNbb109Si51bnBhY2sodCxlKTtsZXQgZj1ZLnVucGFjayh0LGUsWUUpO2UrPVkucGFja2VkTGVuZ3RoO2xldCB1PXRbZSsrXSxjPXRbZV07cmV0dXJuIG0obik/KG4uX3Bvc2l0aW9ucz1pLG4uX3NoYXBlPXMsbi5fZWxsaXBzb2lkPVkuY2xvbmUoZixuLl9lbGxpcHNvaWQpLG4uX2Nvcm5lclR5cGU9dSxuLl9ncmFudWxhcml0eT1jLG4pOihudS5wb2x5bGluZVBvc2l0aW9ucz1pLG51LnNoYXBlUG9zaXRpb25zPXMsbnUuY29ybmVyVHlwZT11LG51LmdyYW51bGFyaXR5PWMsbmV3IG91KG51KSl9O0FCPW5ldyBxcjtvdS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsbj1DbihlLGEuZXF1YWxzRXBzaWxvbiksbz10Ll9zaGFwZTtpZihvPV9zLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGUobyksbi5sZW5ndGg8Mnx8by5sZW5ndGg8MylyZXR1cm47UGUuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKG8pPT09UG8uQ0xPQ0tXSVNFJiZvLnJldmVyc2UoKTtsZXQgcj1xci5mcm9tUG9pbnRzKG8sQUIpLGk9X3MuY29tcHV0ZVBvc2l0aW9ucyhuLG8scix0LCExKTtyZXR1cm4gZ0IoaSxvKX07U3k9b3V9KTt2YXIgeHk9e307bGUoeHkse2RlZmF1bHQ6KCk9PndCfSk7ZnVuY3Rpb24gYkIodCxlKXtyZXR1cm4gbShlKSYmKHQ9U3kudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksU3kuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHdCLEN5PSQoKCk9PntmdCgpOyR0KCk7JEUoKTt3Qj1iQn0pO2Z1bmN0aW9uIEpFKHQsZSxuLG8scixpLHMpe2xldCBmPU1hdGguY29zKGUpLHU9bypmLGM9bipmLGw9TWF0aC5zaW4oZSkscD1vKmwsZD1uKmw7cnUuX2VsbGlwc29pZD1ZLmRlZmF1bHQseHI9cnUucHJvamVjdCh0LHhyKSx4cj1hLnN1YnRyYWN0KHhyLEJkLHhyKTtsZXQgaD1aby5mcm9tUm90YXRpb24oZSxPQik7eHI9Wm8ubXVsdGlwbHlCeVZlY3RvcihoLHhyLHhyKSx4cj1hLmFkZCh4cixCZCx4ciksdD1ydS51bnByb2plY3QoeHIsdCksaS09MSxzLT0xO2xldCBfPXQubGF0aXR1ZGUsZz1fK2kqZCxiPV8tdSpzLHc9Xy11KnMraSpkLE89TWF0aC5tYXgoXyxnLGIsdyksRT1NYXRoLm1pbihfLGcsYix3KSxUPXQubG9uZ2l0dWRlLHg9VCtpKmMsTT1UK3MqcCxOPVQrcypwK2kqYyxGPU1hdGgubWF4KFQseCxNLE4pLEk9TWF0aC5taW4oVCx4LE0sTik7cmV0dXJue25vcnRoOk8sc291dGg6RSxlYXN0OkYsd2VzdDpJLGdyYW5ZQ29zOnUsZ3JhbllTaW46cCxncmFuWENvczpjLGdyYW5YU2luOmQsbndDb3JuZXI6dH19dmFyIFpFLFFFLFRCLFB5LE9CLHhyLEVCLEJkLHJ1LGJvLE15PSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpOyR0KCk7eGkoKTtLdCgpO2JmKCk7VG4oKTtaRT1NYXRoLmNvcyxRRT1NYXRoLnNpbixUQj1NYXRoLnNxcnQsUHk9e307UHkuY29tcHV0ZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPWUucmFkaWlTcXVhcmVkLHU9dC5ud0Nvcm5lcixjPXQuYm91bmRpbmdSZWN0YW5nbGUsbD11LmxhdGl0dWRlLXQuZ3JhbllDb3MqbytyKnQuZ3JhblhTaW4scD1aRShsKSxkPVFFKGwpLGg9Zi56KmQsXz11LmxvbmdpdHVkZStvKnQuZ3JhbllTaW4rcip0LmdyYW5YQ29zLGc9cCpaRShfKSxiPXAqUUUoXyksdz1mLngqZyxPPWYueSpiLEU9VEIodypnK08qYitoKmQpO2lmKGkueD13L0UsaS55PU8vRSxpLno9aC9FLG4pe2xldCBUPXQuc3ROd0Nvcm5lcjttKFQpPyhsPVQubGF0aXR1ZGUtdC5zdEdyYW5ZQ29zKm8rcip0LnN0R3JhblhTaW4sXz1ULmxvbmdpdHVkZStvKnQuc3RHcmFuWVNpbityKnQuc3RHcmFuWENvcyxzLng9KF8tdC5zdFdlc3QpKnQubG9uU2NhbGFyLHMueT0obC10LnN0U291dGgpKnQubGF0U2NhbGFyKToocy54PShfLWMud2VzdCkqdC5sb25TY2FsYXIscy55PShsLWMuc291dGgpKnQubGF0U2NhbGFyKX19O09CPW5ldyBabyx4cj1uZXcgYSxFQj1uZXcgY3QsQmQ9bmV3IGEscnU9bmV3IGVvO1B5LmNvbXB1dGVPcHRpb25zPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPXQuZWFzdCx1PXQud2VzdCxjPXQubm9ydGgsbD10LnNvdXRoLHA9ITEsZD0hMTtjPT09UC5QSV9PVkVSX1RXTyYmKHA9ITApLGw9PT0tUC5QSV9PVkVSX1RXTyYmKGQ9ITApO2xldCBoLF89Yy1sO3U+Zj9oPVAuVFdPX1BJLXUrZjpoPWYtdTtsZXQgZz1NYXRoLmNlaWwoaC9lKSsxLGI9TWF0aC5jZWlsKF8vZSkrMSx3PWgvKGctMSksTz1fLyhiLTEpLEU9TnQubm9ydGh3ZXN0KHQsaSksVD1OdC5jZW50ZXIodCxFQik7KG4hPT0wfHxvIT09MCkmJihULmxvbmdpdHVkZTxFLmxvbmdpdHVkZSYmKFQubG9uZ2l0dWRlKz1QLlRXT19QSSkscnUuX2VsbGlwc29pZD1ZLmRlZmF1bHQsQmQ9cnUucHJvamVjdChULEJkKSk7bGV0IHg9TyxNPXcsTj0wLEY9MCxJPU50LmNsb25lKHQsciksdj17Z3JhbllDb3M6eCxncmFuWVNpbjpOLGdyYW5YQ29zOk0sZ3JhblhTaW46Rixud0Nvcm5lcjpFLGJvdW5kaW5nUmVjdGFuZ2xlOkksd2lkdGg6ZyxoZWlnaHQ6Yixub3J0aENhcDpwLHNvdXRoQ2FwOmR9O2lmKG4hPT0wKXtsZXQgQj1KRShFLG4sdyxPLFQsZyxiKTtpZihjPUIubm9ydGgsbD1CLnNvdXRoLGY9Qi5lYXN0LHU9Qi53ZXN0LGM8LVAuUElfT1ZFUl9UV098fGM+UC5QSV9PVkVSX1RXT3x8bDwtUC5QSV9PVkVSX1RXT3x8bD5QLlBJX09WRVJfVFdPKXRocm93IG5ldyBEKCJSb3RhdGVkIHJlY3RhbmdsZSBpcyBpbnZhbGlkLiAgSXQgY3Jvc3NlcyBvdmVyIGVpdGhlciB0aGUgbm9ydGggb3Igc291dGggcG9sZS4iKTt2LmdyYW5ZQ29zPUIuZ3JhbllDb3Msdi5ncmFuWVNpbj1CLmdyYW5ZU2luLHYuZ3JhblhDb3M9Qi5ncmFuWENvcyx2LmdyYW5YU2luPUIuZ3JhblhTaW4sSS5ub3J0aD1jLEkuc291dGg9bCxJLmVhc3Q9ZixJLndlc3Q9dX1pZihvIT09MCl7bj1uLW87bGV0IEI9TnQubm9ydGh3ZXN0KEkscyksQT1KRShCLG4sdyxPLFQsZyxiKTt2LnN0R3JhbllDb3M9QS5ncmFuWUNvcyx2LnN0R3JhblhDb3M9QS5ncmFuWENvcyx2LnN0R3JhbllTaW49QS5ncmFuWVNpbix2LnN0R3JhblhTaW49QS5ncmFuWFNpbix2LnN0TndDb3JuZXI9Qix2LnN0V2VzdD1BLndlc3Qsdi5zdFNvdXRoPUEuc291dGh9cmV0dXJuIHZ9O2JvPVB5fSk7ZnVuY3Rpb24gc1IodCxlKXtsZXQgbj1uZXcgVXQoe2F0dHJpYnV0ZXM6bmV3IGllLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTfSk7cmV0dXJuIG4uYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUucG9zaXRpb25zfSksdC5ub3JtYWwmJihuLmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLm5vcm1hbHN9KSksdC50YW5nZW50JiYobi5hdHRyaWJ1dGVzLnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUudGFuZ2VudHN9KSksdC5iaXRhbmdlbnQmJihuLmF0dHJpYnV0ZXMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLmJpdGFuZ2VudHN9KSksbn1mdW5jdGlvbiBDQih0LGUsbixvKXtsZXQgcj10Lmxlbmd0aCxpPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLHM9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLGY9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShyKTp2b2lkIDAsdT0wLGM9clIsbD1vUixwPW5SO2lmKGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50KWZvcihsZXQgZD0wO2Q8cjtkKz0zKXtsZXQgaD1hLmZyb21BcnJheSh0LGQsTnkpLF89dSsxLGc9dSsyO3A9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaCxwKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihhLmNyb3NzKGEuVU5JVF9aLHAsbCksWi5tdWx0aXBseUJ5VmVjdG9yKG8sbCxsKSxhLm5vcm1hbGl6ZShsLGwpLGUuYml0YW5nZW50JiZhLm5vcm1hbGl6ZShhLmNyb3NzKHAsbCxjKSxjKSksZS5ub3JtYWwmJihpW3VdPXAueCxpW19dPXAueSxpW2ddPXAueiksZS50YW5nZW50JiYoc1t1XT1sLngsc1tfXT1sLnksc1tnXT1sLnopLGUuYml0YW5nZW50JiYoZlt1XT1jLngsZltfXT1jLnksZltnXT1jLnopLHUrPTN9cmV0dXJuIHNSKGUse3Bvc2l0aW9uczp0LG5vcm1hbHM6aSx0YW5nZW50czpzLGJpdGFuZ2VudHM6Zn0pfWZ1bmN0aW9uIFBCKHQsZSxuKXtsZXQgbz10Lmxlbmd0aCxyPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkobyk6dm9pZCAwLGk9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobyk6dm9pZCAwLHM9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShvKTp2b2lkIDAsZj0wLHU9MCxjPTAsbD0hMCxwPXJSLGQ9b1IsaD1uUjtpZihlLm5vcm1hbHx8ZS50YW5nZW50fHxlLmJpdGFuZ2VudClmb3IobGV0IF89MDtfPG87Xys9Nil7bGV0IGc9YS5mcm9tQXJyYXkodCxfLE55KSxiPWEuZnJvbUFycmF5KHQsKF8rNiklbyxJeSk7aWYobCl7bGV0IHc9YS5mcm9tQXJyYXkodCwoXyszKSVvLGNSKTthLnN1YnRyYWN0KGIsZyxiKSxhLnN1YnRyYWN0KHcsZyx3KSxoPWEubm9ybWFsaXplKGEuY3Jvc3ModyxiLGgpLGgpLGw9ITF9YS5lcXVhbHNFcHNpbG9uKGIsZyxQLkVQU0lMT04xMCkmJihsPSEwKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihwPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGcscCksZS50YW5nZW50JiYoZD1hLm5vcm1hbGl6ZShhLmNyb3NzKHAsaCxkKSxkKSkpLGUubm9ybWFsJiYocltmKytdPWgueCxyW2YrK109aC55LHJbZisrXT1oLnoscltmKytdPWgueCxyW2YrK109aC55LHJbZisrXT1oLnopLGUudGFuZ2VudCYmKGlbdSsrXT1kLngsaVt1KytdPWQueSxpW3UrK109ZC56LGlbdSsrXT1kLngsaVt1KytdPWQueSxpW3UrK109ZC56KSxlLmJpdGFuZ2VudCYmKHNbYysrXT1wLngsc1tjKytdPXAueSxzW2MrK109cC56LHNbYysrXT1wLngsc1tjKytdPXAueSxzW2MrK109cC56KX1yZXR1cm4gc1IoZSx7cG9zaXRpb25zOnQsbm9ybWFsczpyLHRhbmdlbnRzOmksYml0YW5nZW50czpzfSl9ZnVuY3Rpb24gYVIodCxlKXtsZXQgbj10Ll92ZXJ0ZXhGb3JtYXQsbz10Ll9lbGxpcHNvaWQscj1lLmhlaWdodCxpPWUud2lkdGgscz1lLm5vcnRoQ2FwLGY9ZS5zb3V0aENhcCx1PTAsYz1yLGw9cixwPTA7cyYmKHU9MSxsLT0xLHArPTEpLGYmJihjLT0xLGwtPTEscCs9MSkscCs9aSpsO2xldCBkPW4ucG9zaXRpb24/bmV3IEZsb2F0NjRBcnJheShwKjMpOnZvaWQgMCxoPW4uc3Q/bmV3IEZsb2F0MzJBcnJheShwKjIpOnZvaWQgMCxfPTAsZz0wLGI9Tnksdz1SQixPPU51bWJlci5NQVhfVkFMVUUsRT1OdW1iZXIuTUFYX1ZBTFVFLFQ9LU51bWJlci5NQVhfVkFMVUUseD0tTnVtYmVyLk1BWF9WQUxVRTtmb3IobGV0IEE9dTtBPGM7KytBKWZvcihsZXQgUz0wO1M8aTsrK1MpYm8uY29tcHV0ZVBvc2l0aW9uKGUsbyxuLnN0LEEsUyxiLHcpLGRbXysrXT1iLngsZFtfKytdPWIueSxkW18rK109Yi56LG4uc3QmJihoW2crK109dy54LGhbZysrXT13LnksTz1NYXRoLm1pbihPLHcueCksRT1NYXRoLm1pbihFLHcueSksVD1NYXRoLm1heChULHcueCkseD1NYXRoLm1heCh4LHcueSkpO2lmKHMmJihiby5jb21wdXRlUG9zaXRpb24oZSxvLG4uc3QsMCwwLGIsdyksZFtfKytdPWIueCxkW18rK109Yi55LGRbXysrXT1iLnosbi5zdCYmKGhbZysrXT13LngsaFtnKytdPXcueSxPPXcueCxFPXcueSxUPXcueCx4PXcueSkpLGYmJihiby5jb21wdXRlUG9zaXRpb24oZSxvLG4uc3Qsci0xLDAsYix3KSxkW18rK109Yi54LGRbXysrXT1iLnksZFtfXT1iLnosbi5zdCYmKGhbZysrXT13LngsaFtnXT13LnksTz1NYXRoLm1pbihPLHcueCksRT1NYXRoLm1pbihFLHcueSksVD1NYXRoLm1heChULHcueCkseD1NYXRoLm1heCh4LHcueSkpKSxuLnN0JiYoTzwwfHxFPDB8fFQ+MXx8eD4xKSlmb3IobGV0IEE9MDtBPGgubGVuZ3RoO0ErPTIpaFtBXT0oaFtBXS1PKS8oVC1PKSxoW0ErMV09KGhbQSsxXS1FKS8oeC1FKTtsZXQgTT1DQihkLG4sbyxlLnRhbmdlbnRSb3RhdGlvbk1hdHJpeCksTj02KihpLTEpKihsLTEpO3MmJihOKz0zKihpLTEpKSxmJiYoTis9MyooaS0xKSk7bGV0IEY9THQuY3JlYXRlVHlwZWRBcnJheShwLE4pLEk9MCx2PTAsQjtmb3IoQj0wO0I8bC0xOysrQil7Zm9yKGxldCBBPTA7QTxpLTE7KytBKXtsZXQgUz1JLEM9UytpLEw9QysxLHo9UysxO0ZbdisrXT1TLEZbdisrXT1DLEZbdisrXT16LEZbdisrXT16LEZbdisrXT1DLEZbdisrXT1MLCsrSX0rK0l9aWYoc3x8Zil7bGV0IEE9cC0xLFM9cC0xO3MmJmYmJihBPXAtMik7bGV0IEMsTDtpZihJPTAscylmb3IoQj0wO0I8aS0xO0IrKylDPUksTD1DKzEsRlt2KytdPUEsRlt2KytdPUMsRlt2KytdPUwsKytJO2lmKGYpZm9yKEk9KGwtMSkqaSxCPTA7QjxpLTE7QisrKUM9SSxMPUMrMSxGW3YrK109QyxGW3YrK109UyxGW3YrK109TCwrK0l9cmV0dXJuIE0uaW5kaWNlcz1GLG4uc3QmJihNLmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmh9KSksTX1mdW5jdGlvbiBOYSh0LGUsbixvLHIpe3JldHVybiB0W2UrK109b1tuXSx0W2UrK109b1tuKzFdLHRbZSsrXT1vW24rMl0sdFtlKytdPXJbbl0sdFtlKytdPXJbbisxXSx0W2VdPXJbbisyXSx0fWZ1bmN0aW9uIElhKHQsZSxuLG8pe3JldHVybiB0W2UrK109b1tuXSx0W2UrK109b1tuKzFdLHRbZSsrXT1vW25dLHRbZV09b1tuKzFdLHR9ZnVuY3Rpb24gTUIodCxlKXtsZXQgbj10Ll9zaGFkb3dWb2x1bWUsbz10Ll9vZmZzZXRBdHRyaWJ1dGUscj10Ll92ZXJ0ZXhGb3JtYXQsaT10Ll9leHRydWRlZEhlaWdodCxzPXQuX3N1cmZhY2VIZWlnaHQsZj10Ll9lbGxpcHNvaWQsdT1lLmhlaWdodCxjPWUud2lkdGgsbDtpZihuKXtsZXQgUXQ9cHQuY2xvbmUocix2eSk7UXQubm9ybWFsPSEwLHQuX3ZlcnRleEZvcm1hdD1RdH1sZXQgcD1hUih0LGUpO24mJih0Ll92ZXJ0ZXhGb3JtYXQ9cik7bGV0IGQ9UGUuc2NhbGVUb0dlb2RldGljSGVpZ2h0KHAuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscyxmLCExKTtkPW5ldyBGbG9hdDY0QXJyYXkoZCk7bGV0IGg9ZC5sZW5ndGgsXz1oKjIsZz1uZXcgRmxvYXQ2NEFycmF5KF8pO2cuc2V0KGQpO2xldCBiPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChwLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGksZik7Zy5zZXQoYixoKSxwLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPWc7bGV0IHc9ci5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShfKTp2b2lkIDAsTz1yLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShfKTp2b2lkIDAsRT1yLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KF8pOnZvaWQgMCxUPXIuc3Q/bmV3IEZsb2F0MzJBcnJheShfLzMqMik6dm9pZCAwLHgsTTtpZihyLm5vcm1hbCl7Zm9yKE09cC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMsdy5zZXQoTSksbD0wO2w8aDtsKyspTVtsXT0tTVtsXTt3LnNldChNLGgpLHAuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPXd9aWYobil7TT1wLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyxyLm5vcm1hbHx8KHAuYXR0cmlidXRlcy5ub3JtYWw9dm9pZCAwKTtsZXQgUXQ9bmV3IEZsb2F0MzJBcnJheShfKTtmb3IobD0wO2w8aDtsKyspTVtsXT0tTVtsXTtRdC5zZXQoTSxoKSxwLmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6UXR9KX1sZXQgTixGPW0obyk7aWYoRil7bGV0IFF0PWgvMyoyLE5lPW5ldyBVaW50OEFycmF5KFF0KTtvPT09YWUuVE9QP05lPU5lLmZpbGwoMSwwLFF0LzIpOihOPW89PT1hZS5OT05FPzA6MSxOZT1OZS5maWxsKE4pKSxwLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6TmV9KX1pZihyLnRhbmdlbnQpe2xldCBRdD1wLmF0dHJpYnV0ZXMudGFuZ2VudC52YWx1ZXM7Zm9yKE8uc2V0KFF0KSxsPTA7bDxoO2wrKylRdFtsXT0tUXRbbF07Ty5zZXQoUXQsaCkscC5hdHRyaWJ1dGVzLnRhbmdlbnQudmFsdWVzPU99aWYoci5iaXRhbmdlbnQpe2xldCBRdD1wLmF0dHJpYnV0ZXMuYml0YW5nZW50LnZhbHVlcztFLnNldChRdCksRS5zZXQoUXQsaCkscC5hdHRyaWJ1dGVzLmJpdGFuZ2VudC52YWx1ZXM9RX1yLnN0JiYoeD1wLmF0dHJpYnV0ZXMuc3QudmFsdWVzLFQuc2V0KHgpLFQuc2V0KHgsaC8zKjIpLHAuYXR0cmlidXRlcy5zdC52YWx1ZXM9VCk7bGV0IEk9cC5pbmRpY2VzLHY9SS5sZW5ndGgsQj1oLzMsQT1MdC5jcmVhdGVUeXBlZEFycmF5KF8vMyx2KjIpO2ZvcihBLnNldChJKSxsPTA7bDx2O2wrPTMpQVtsK3ZdPUlbbCsyXStCLEFbbCsxK3ZdPUlbbCsxXStCLEFbbCsyK3ZdPUlbbF0rQjtwLmluZGljZXM9QTtsZXQgUz1lLm5vcnRoQ2FwLEM9ZS5zb3V0aENhcCxMPXUsej0yLGo9MCxrPTQscT00O1MmJih6LT0xLEwtPTEsais9MSxrLT0yLHEtPTEpLEMmJih6LT0xLEwtPTEsais9MSxrLT0yLHEtPTEpLGorPXoqYysyKkwtaztsZXQgVz0oaitxKSoyLFI9bmV3IEZsb2F0NjRBcnJheShXKjMpLG50PW4/bmV3IEZsb2F0MzJBcnJheShXKjMpOnZvaWQgMCxhdD1GP25ldyBVaW50OEFycmF5KFcpOnZvaWQgMCxsdD1yLnN0P25ldyBGbG9hdDMyQXJyYXkoVyoyKTp2b2lkIDAsX3Q9bz09PWFlLlRPUDtGJiYhX3QmJihOPW89PT1hZS5BTEw/MTowLGF0PWF0LmZpbGwoTikpO2xldCBvdD0wLFB0PTAsZ3Q9MCxSdD0wLGR0PWMqTCxydDtmb3IobD0wO2w8ZHQ7bCs9YylydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtpZihDKXtsZXQgUXQ9Uz9kdCsxOmR0O2ZvcihydD1RdCozLGw9MDtsPDI7bCsrKVI9TmEoUixvdCxydCxkLGIpLG90Kz02LHIuc3QmJihsdD1JYShsdCxQdCxRdCoyLHgpLFB0Kz00KSxuJiYoZ3QrPTMsbnRbZ3QrK109TVtydF0sbnRbZ3QrK109TVtydCsxXSxudFtndCsrXT1NW3J0KzJdKSxfdCYmKGF0W1J0KytdPTEsUnQrPTEpfWVsc2UgZm9yKGw9ZHQtYztsPGR0O2wrKylydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtmb3IobD1kdC0xO2w+MDtsLT1jKXJ0PWwqMyxSPU5hKFIsb3QscnQsZCxiKSxvdCs9NixyLnN0JiYobHQ9SWEobHQsUHQsbCoyLHgpLFB0Kz00KSxuJiYoZ3QrPTMsbnRbZ3QrK109TVtydF0sbnRbZ3QrK109TVtydCsxXSxudFtndCsrXT1NW3J0KzJdKSxfdCYmKGF0W1J0KytdPTEsUnQrPTEpO2lmKFMpe2xldCBRdD1kdDtmb3IocnQ9UXQqMyxsPTA7bDwyO2wrKylSPU5hKFIsb3QscnQsZCxiKSxvdCs9NixyLnN0JiYobHQ9SWEobHQsUHQsUXQqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKX1lbHNlIGZvcihsPWMtMTtsPj0wO2wtLSlydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtsZXQgeHQ9UEIoUixyLGYpO3Iuc3QmJih4dC5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsdH0pKSxuJiYoeHQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpudH0pKSxGJiYoeHQuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczphdH0pKTtsZXQgR3Q9THQuY3JlYXRlVHlwZWRBcnJheShXLGoqNikscGUscmUsZGUsZmU7aD1SLmxlbmd0aC8zO2xldCBadD0wO2ZvcihsPTA7bDxoLTE7bCs9Mil7cGU9bCxmZT0ocGUrMiklaDtsZXQgUXQ9YS5mcm9tQXJyYXkoUixwZSozLEl5KSxOZT1hLmZyb21BcnJheShSLGZlKjMsY1IpO2EuZXF1YWxzRXBzaWxvbihRdCxOZSxQLkVQU0lMT04xMCl8fChyZT0ocGUrMSklaCxkZT0ocmUrMiklaCxHdFtadCsrXT1wZSxHdFtadCsrXT1yZSxHdFtadCsrXT1mZSxHdFtadCsrXT1mZSxHdFtadCsrXT1yZSxHdFtadCsrXT1kZSl9cmV0dXJuIHh0LmluZGljZXM9R3QseHQ9R2UuY29tYmluZUluc3RhbmNlcyhbbmV3IGZvKHtnZW9tZXRyeTpwfSksbmV3IGZvKHtnZW9tZXRyeTp4dH0pXSkseHRbMF19ZnVuY3Rpb24gRnkodCxlLG4sbyxyKXtpZihuPT09MClyZXR1cm4gTnQuY2xvbmUodCxyKTtsZXQgaT1iby5jb21wdXRlT3B0aW9ucyh0LGUsbiwwLGlSLGZSKSxzPWkuaGVpZ2h0LGY9aS53aWR0aCx1PU5CO3JldHVybiBiby5jb21wdXRlUG9zaXRpb24oaSxvLCExLDAsMCx1WzBdKSxiby5jb21wdXRlUG9zaXRpb24oaSxvLCExLDAsZi0xLHVbMV0pLGJvLmNvbXB1dGVQb3NpdGlvbihpLG8sITEscy0xLDAsdVsyXSksYm8uY29tcHV0ZVBvc2l0aW9uKGksbywhMSxzLTEsZi0xLHVbM10pLE50LmZyb21DYXJ0ZXNpYW5BcnJheSh1LG8scil9ZnVuY3Rpb24gaGkodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5yZWN0YW5nbGU7aWYoeS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLGUpLE50Ll92YWxpZGF0ZShlKSxlLm5vcnRoPGUuc291dGgpdGhyb3cgbmV3IEQoIm9wdGlvbnMucmVjdGFuZ2xlLm5vcnRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG9wdGlvbnMucmVjdGFuZ2xlLnNvdXRoIik7bGV0IG49dC5oZWlnaHQ/PzAsbz10LmV4dHJ1ZGVkSGVpZ2h0Pz9uO3RoaXMuX3JlY3RhbmdsZT1OdC5jbG9uZShlKSx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl9zdXJmYWNlSGVpZ2h0PU1hdGgubWF4KG4sbyksdGhpcy5fcm90YXRpb249dC5yb3RhdGlvbj8/MCx0aGlzLl9zdFJvdGF0aW9uPXQuc3RSb3RhdGlvbj8/MCx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUodC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG4sbyksdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVSZWN0YW5nbGVHZW9tZXRyeSIsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3JvdGF0ZWRSZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9dm9pZCAwfWZ1bmN0aW9uIFVCKHQpe2lmKHQuX3N0Um90YXRpb249PT0wKXJldHVyblswLDAsMCwxLDEsMF07bGV0IGU9TnQuY2xvbmUodC5fcmVjdGFuZ2xlLGVSKSxuPXQuX2dyYW51bGFyaXR5LG89dC5fZWxsaXBzb2lkLHI9dC5fcm90YXRpb24tdC5fc3RSb3RhdGlvbixpPUZ5KGUsbixyLG8sZVIpLHM9TEI7c1swXS54PWkud2VzdCxzWzBdLnk9aS5zb3V0aCxzWzFdLng9aS53ZXN0LHNbMV0ueT1pLm5vcnRoLHNbMl0ueD1pLmVhc3Qsc1syXS55PWkuc291dGg7bGV0IGY9dC5yZWN0YW5nbGUsdT1aby5mcm9tUm90YXRpb24odC5fc3RSb3RhdGlvbixEQiksYz1OdC5jZW50ZXIoZixCQik7Zm9yKGxldCBfPTA7XzwzOysrXyl7bGV0IGc9c1tfXTtnLngtPWMubG9uZ2l0dWRlLGcueS09Yy5sYXRpdHVkZSxaby5tdWx0aXBseUJ5VmVjdG9yKHUsZyxnKSxnLngrPWMubG9uZ2l0dWRlLGcueSs9Yy5sYXRpdHVkZSxnLng9KGcueC1mLndlc3QpL2Yud2lkdGgsZy55PShnLnktZi5zb3V0aCkvZi5oZWlnaHR9bGV0IGw9c1swXSxwPXNbMV0sZD1zWzJdLGg9bmV3IEFycmF5KDYpO3JldHVybiBKLnBhY2sobCxoKSxKLnBhY2socCxoLDIpLEoucGFjayhkLGgsNCksaH12YXIgTnksblIsb1IsclIsaVIsUkIsU0IseEIsSXksY1IsdnksTkIsZlIsSUIsdVIsbFIseHMsdkIsdFIsRkIsZVIsTEIsREIsQkIsTHkscFI9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7Y2MoKTtEbygpO2NpKCk7WmUoKTtLdCgpO2JmKCk7VW4oKTtLcigpO3RuKCk7WG8oKTtUbigpO015KCk7eG8oKTtOeT1uZXcgYSxuUj1uZXcgYSxvUj1uZXcgYSxyUj1uZXcgYSxpUj1uZXcgTnQsUkI9bmV3IEosU0I9bmV3IEF0LHhCPW5ldyBBdDtJeT1uZXcgYSxjUj1uZXcgYTt2eT1uZXcgcHQ7TkI9W25ldyBhLG5ldyBhLG5ldyBhLG5ldyBhXSxmUj1uZXcgY3QsSUI9bmV3IGN0O2hpLnBhY2tlZExlbmd0aD1OdC5wYWNrZWRMZW5ndGgrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzc7aGkucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxOdC5wYWNrKHQuX3JlY3RhbmdsZSxlLG4pLG4rPU50LnBhY2tlZExlbmd0aCxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxuKz1wdC5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9zdXJmYWNlSGVpZ2h0LGVbbisrXT10Ll9yb3RhdGlvbixlW24rK109dC5fc3RSb3RhdGlvbixlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O3VSPW5ldyBOdCxsUj1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLHhzPXtyZWN0YW5nbGU6dVIsZWxsaXBzb2lkOmxSLHZlcnRleEZvcm1hdDp2eSxncmFudWxhcml0eTp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07aGkudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89TnQudW5wYWNrKHQsZSx1Uik7ZSs9TnQucGFja2VkTGVuZ3RoO2xldCByPVkudW5wYWNrKHQsZSxsUik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGk9cHQudW5wYWNrKHQsZSx2eSk7ZSs9cHQucGFja2VkTGVuZ3RoO2xldCBzPXRbZSsrXSxmPXRbZSsrXSx1PXRbZSsrXSxjPXRbZSsrXSxsPXRbZSsrXSxwPXRbZSsrXT09PTEsZD10W2VdO3JldHVybiBtKG4pPyhuLl9yZWN0YW5nbGU9TnQuY2xvbmUobyxuLl9yZWN0YW5nbGUpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2dyYW51bGFyaXR5PXMsbi5fc3VyZmFjZUhlaWdodD1mLG4uX3JvdGF0aW9uPXUsbi5fc3RSb3RhdGlvbj1jLG4uX2V4dHJ1ZGVkSGVpZ2h0PWwsbi5fc2hhZG93Vm9sdW1lPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooeHMuZ3JhbnVsYXJpdHk9cyx4cy5oZWlnaHQ9Zix4cy5yb3RhdGlvbj11LHhzLnN0Um90YXRpb249Yyx4cy5leHRydWRlZEhlaWdodD1sLHhzLnNoYWRvd1ZvbHVtZT1wLHhzLm9mZnNldEF0dHJpYnV0ZT1kPT09LTE/dm9pZCAwOmQsbmV3IGhpKHhzKSl9O2hpLmNvbXB1dGVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LnJlY3RhbmdsZTtpZih5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsbiksTnQuX3ZhbGlkYXRlKG4pLG4ubm9ydGg8bi5zb3V0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgbz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxyPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsaT10LnJvdGF0aW9uPz8wO3JldHVybiBGeShuLG8saSxyLGUpfTt2Qj1uZXcgWix0Uj1uZXcgdGUsRkI9bmV3IGN0O2hpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKFAuZXF1YWxzRXBzaWxvbih0Ll9yZWN0YW5nbGUubm9ydGgsdC5fcmVjdGFuZ2xlLnNvdXRoLFAuRVBTSUxPTjEwKXx8UC5lcXVhbHNFcHNpbG9uKHQuX3JlY3RhbmdsZS5lYXN0LHQuX3JlY3RhbmdsZS53ZXN0LFAuRVBTSUxPTjEwKSlyZXR1cm47bGV0IGU9dC5fcmVjdGFuZ2xlLG49dC5fZWxsaXBzb2lkLG89dC5fcm90YXRpb24scj10Ll9zdFJvdGF0aW9uLGk9dC5fdmVydGV4Rm9ybWF0LHM9Ym8uY29tcHV0ZU9wdGlvbnMoZSx0Ll9ncmFudWxhcml0eSxvLHIsaVIsZlIsSUIpLGY9dkI7aWYociE9PTB8fG8hPT0wKXtsZXQgaD1OdC5jZW50ZXIoZSxGQiksXz1uLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYyhoLEl5KTt0ZS5mcm9tQXhpc0FuZ2xlKF8sLXIsdFIpLFouZnJvbVF1YXRlcm5pb24odFIsZil9ZWxzZSBaLmNsb25lKFouSURFTlRJVFksZik7bGV0IHU9dC5fc3VyZmFjZUhlaWdodCxjPXQuX2V4dHJ1ZGVkSGVpZ2h0LGw9IVAuZXF1YWxzRXBzaWxvbih1LGMsMCxQLkVQU0lMT04yKTtzLmxvblNjYWxhcj0xL3QuX3JlY3RhbmdsZS53aWR0aCxzLmxhdFNjYWxhcj0xL3QuX3JlY3RhbmdsZS5oZWlnaHQscy50YW5nZW50Um90YXRpb25NYXRyaXg9ZjtsZXQgcCxkO2lmKGU9dC5fcmVjdGFuZ2xlLGwpe3A9TUIodCxzKTtsZXQgaD1BdC5mcm9tUmVjdGFuZ2xlM0QoZSxuLHUseEIpLF89QXQuZnJvbVJlY3RhbmdsZTNEKGUsbixjLFNCKTtkPUF0LnVuaW9uKGgsXyl9ZWxzZXtpZihwPWFSKHQscykscC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQocC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyx1LG4sITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGg9cC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsXz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxnPW5ldyBVaW50OEFycmF5KGgvMykuZmlsbChfKTtwLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Z30pfWQ9QXQuZnJvbVJlY3RhbmdsZTNEKGUsbix1KX1yZXR1cm4gaS5wb3NpdGlvbnx8ZGVsZXRlIHAuYXR0cmlidXRlcy5wb3NpdGlvbixuZXcgVXQoe2F0dHJpYnV0ZXM6cC5hdHRyaWJ1dGVzLGluZGljZXM6cC5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6cC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmQsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtoaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2dyYW51bGFyaXR5LHI9dC5fZWxsaXBzb2lkLGk9ZShvLHIpLHM9bihvLHIpO3JldHVybiBuZXcgaGkoe3JlY3RhbmdsZTp0Ll9yZWN0YW5nbGUscm90YXRpb246dC5fcm90YXRpb24sZWxsaXBzb2lkOnIsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om8sZXh0cnVkZWRIZWlnaHQ6cyxoZWlnaHQ6aSx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07ZVI9bmV3IE50LExCPVtuZXcgSixuZXcgSixuZXcgSl0sREI9bmV3IFpvLEJCPW5ldyBjdDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhoaS5wcm90b3R5cGUse3JlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fcm90YXRlZFJlY3RhbmdsZSl8fCh0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlPUZ5KHRoaXMuX3JlY3RhbmdsZSx0aGlzLl9ncmFudWxhcml0eSx0aGlzLl9yb3RhdGlvbix0aGlzLl9lbGxpcHNvaWQpKSx0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPVVCKHRoaXMpKSx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzfX19KTtMeT1oaX0pO3ZhciBEeT17fTtsZShEeSx7ZGVmYXVsdDooKT0+R0J9KTtmdW5jdGlvbiBrQih0LGUpe3JldHVybiBtKGUpJiYodD1MeS51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx0Ll9yZWN0YW5nbGU9TnQuY2xvbmUodC5fcmVjdGFuZ2xlKSxMeS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgR0IsQnk9JCgoKT0+e2Z0KCk7JHQoKTtUbigpO3BSKCk7R0I9a0J9KTtmdW5jdGlvbiBkUih0LGUpe2xldCBuPXQuX2VsbGlwc29pZCxvPWUuaGVpZ2h0LHI9ZS53aWR0aCxpPWUubm9ydGhDYXAscz1lLnNvdXRoQ2FwLGY9byx1PTIsYz0wLGw9NDtpJiYodS09MSxmLT0xLGMrPTEsbC09MikscyYmKHUtPTEsZi09MSxjKz0xLGwtPTIpLGMrPXUqcisyKmYtbDtsZXQgcD1uZXcgRmxvYXQ2NEFycmF5KGMqMyksZD0wLGg9MCxfLGc9akI7aWYoaSliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsMCxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtlbHNlIGZvcihfPTA7XzxyO18rKyliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsXyxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtmb3IoXz1yLTEsaD0xO2g8bztoKyspYm8uY29tcHV0ZVBvc2l0aW9uKGUsbiwhMSxoLF8sZykscFtkKytdPWcueCxwW2QrK109Zy55LHBbZCsrXT1nLno7aWYoaD1vLTEsIXMpZm9yKF89ci0yO18+PTA7Xy0tKWJvLmNvbXB1dGVQb3NpdGlvbihlLG4sITEsaCxfLGcpLHBbZCsrXT1nLngscFtkKytdPWcueSxwW2QrK109Zy56O2ZvcihfPTAsaD1vLTI7aD4wO2gtLSliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsXyxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtsZXQgYj1wLmxlbmd0aC8zKjIsdz1MdC5jcmVhdGVUeXBlZEFycmF5KHAubGVuZ3RoLzMsYiksTz0wO2ZvcihsZXQgVD0wO1Q8cC5sZW5ndGgvMy0xO1QrKyl3W08rK109VCx3W08rK109VCsxO3dbTysrXT1wLmxlbmd0aC8zLTEsd1tPKytdPTA7bGV0IEU9bmV3IFV0KHthdHRyaWJ1dGVzOm5ldyBpZSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSk7cmV0dXJuIEUuYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnB9KSxFLmluZGljZXM9dyxFfWZ1bmN0aW9uIHFCKHQsZSl7bGV0IG49dC5fc3VyZmFjZUhlaWdodCxvPXQuX2V4dHJ1ZGVkSGVpZ2h0LHI9dC5fZWxsaXBzb2lkLGk9ZFIodCxlKSxzPWUuaGVpZ2h0LGY9ZS53aWR0aCx1PVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChpLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG4sciwhMSksYz11Lmxlbmd0aCxsPW5ldyBGbG9hdDY0QXJyYXkoYyoyKTtsLnNldCh1KTtsZXQgcD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxvLHIpO2wuc2V0KHAsYyksaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1sO2xldCBkPWUubm9ydGhDYXAsaD1lLnNvdXRoQ2FwLF89NDtkJiYoXy09MSksaCYmKF8tPTEpO2xldCBnPShsLmxlbmd0aC8zK18pKjIsYj1MdC5jcmVhdGVUeXBlZEFycmF5KGwubGVuZ3RoLzMsZyk7Yz1sLmxlbmd0aC82O2xldCB3PTA7Zm9yKGxldCBFPTA7RTxjLTE7RSsrKWJbdysrXT1FLGJbdysrXT1FKzEsYlt3KytdPUUrYyxiW3crK109RStjKzE7Ylt3KytdPWMtMSxiW3crK109MCxiW3crK109YytjLTEsYlt3KytdPWMsYlt3KytdPTAsYlt3KytdPWM7bGV0IE87aWYoZClPPXMtMTtlbHNle2xldCBFPWYtMTtiW3crK109RSxiW3crK109RStjLE89ZitzLTJ9aWYoYlt3KytdPU8sYlt3KytdPU8rYywhaCl7bGV0IEU9ZitPLTE7Ylt3KytdPUUsYlt3XT1FK2N9cmV0dXJuIGkuaW5kaWNlcz1iLGl9ZnVuY3Rpb24gRmEodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5yZWN0YW5nbGUsbj10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LnJvdGF0aW9uPz8wO2lmKCFtKGUpKXRocm93IG5ldyBEKCJyZWN0YW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoTnQuX3ZhbGlkYXRlKGUpLGUubm9ydGg8ZS5zb3V0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgaT10LmhlaWdodD8/MCxzPXQuZXh0cnVkZWRIZWlnaHQ/P2k7dGhpcy5fcmVjdGFuZ2xlPU50LmNsb25lKGUpLHRoaXMuX2dyYW51bGFyaXR5PW4sdGhpcy5fZWxsaXBzb2lkPW8sdGhpcy5fc3VyZmFjZUhlaWdodD1NYXRoLm1heChpLHMpLHRoaXMuX3JvdGF0aW9uPXIsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oaSxzKSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUmVjdGFuZ2xlT3V0bGluZUdlb21ldHJ5In12YXIgVkIsekIsakIsSEIsbVIsaFIsdmEsS0IsVXksX1I9JCgoKT0+e3ZlKCk7RHQoKTtJZSgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTtLcigpO3RuKCk7VG4oKTtNeSgpO1ZCPW5ldyBBdCx6Qj1uZXcgQXQsakI9bmV3IGEsSEI9bmV3IE50O0ZhLnBhY2tlZExlbmd0aD1OdC5wYWNrZWRMZW5ndGgrWS5wYWNrZWRMZW5ndGgrNTtGYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbj1uPz8wLE50LnBhY2sodC5fcmVjdGFuZ2xlLGUsbiksbis9TnQucGFja2VkTGVuZ3RoLFkucGFjayh0Ll9lbGxpcHNvaWQsZSxuKSxuKz1ZLnBhY2tlZExlbmd0aCxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuKytdPXQuX3N1cmZhY2VIZWlnaHQsZVtuKytdPXQuX3JvdGF0aW9uLGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07bVI9bmV3IE50LGhSPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksdmE9e3JlY3RhbmdsZTptUixlbGxpcHNvaWQ6aFIsZ3JhbnVsYXJpdHk6dm9pZCAwLGhlaWdodDp2b2lkIDAscm90YXRpb246dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtGYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9ZT8/MDtsZXQgbz1OdC51bnBhY2sodCxlLG1SKTtlKz1OdC5wYWNrZWRMZW5ndGg7bGV0IHI9WS51bnBhY2sodCxlLGhSKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2VdO3JldHVybiBtKG4pPyhuLl9yZWN0YW5nbGU9TnQuY2xvbmUobyxuLl9yZWN0YW5nbGUpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl9zdXJmYWNlSGVpZ2h0PXMsbi5fcm90YXRpb249ZixuLl9leHRydWRlZEhlaWdodD11LG4uX29mZnNldEF0dHJpYnV0ZT1jPT09LTE/dm9pZCAwOmMsbik6KHZhLmdyYW51bGFyaXR5PWksdmEuaGVpZ2h0PXMsdmEucm90YXRpb249Zix2YS5leHRydWRlZEhlaWdodD11LHZhLm9mZnNldEF0dHJpYnV0ZT1jPT09LTE/dm9pZCAwOmMsbmV3IEZhKHZhKSl9O0tCPW5ldyBjdDtGYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9yZWN0YW5nbGUsbj10Ll9lbGxpcHNvaWQsbz1iby5jb21wdXRlT3B0aW9ucyhlLHQuX2dyYW51bGFyaXR5LHQuX3JvdGF0aW9uLDAsSEIsS0IpLHIsaTtpZihQLmVxdWFsc0Vwc2lsb24oZS5ub3J0aCxlLnNvdXRoLFAuRVBTSUxPTjEwKXx8UC5lcXVhbHNFcHNpbG9uKGUuZWFzdCxlLndlc3QsUC5FUFNJTE9OMTApKXJldHVybjtsZXQgcz10Ll9zdXJmYWNlSGVpZ2h0LGY9dC5fZXh0cnVkZWRIZWlnaHQsdT0hUC5lcXVhbHNFcHNpbG9uKHMsZiwwLFAuRVBTSUxPTjIpLGM7aWYodSl7aWYocj1xQih0LG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGQ9ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxoPW5ldyBVaW50OEFycmF5KGQpO3QuX29mZnNldEF0dHJpYnV0ZT09PWFlLlRPUD9oPWguZmlsbCgxLDAsZC8yKTooYz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxoPWguZmlsbChjKSksci5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmh9KX1sZXQgbD1BdC5mcm9tUmVjdGFuZ2xlM0QoZSxuLHMsekIpLHA9QXQuZnJvbVJlY3RhbmdsZTNEKGUsbixmLFZCKTtpPUF0LnVuaW9uKGwscCl9ZWxzZXtpZihyPWRSKHQsbyksci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxzLG4sITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGw9ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGg7Yz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtsZXQgcD1uZXcgVWludDhBcnJheShsLzMpLmZpbGwoYyk7ci5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnB9KX1pPUF0LmZyb21SZWN0YW5nbGUzRChlLG4scyl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpyLmF0dHJpYnV0ZXMsaW5kaWNlczpyLmluZGljZXMscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTppLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07VXk9RmF9KTt2YXIga3k9e307bGUoa3kse2RlZmF1bHQ6KCk9PlhCfSk7ZnVuY3Rpb24gV0IodCxlKXtyZXR1cm4gbShlKSYmKHQ9VXkudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksdC5fcmVjdGFuZ2xlPU50LmNsb25lKHQuX3JlY3RhbmdsZSksVXkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFhCLEd5PSQoKCk9PntmdCgpOyR0KCk7VG4oKTtfUigpO1hCPVdCfSk7ZnVuY3Rpb24gWUIodCxlLG4sbyxyLGkscyl7bGV0IGY9QW4ubnVtYmVyT2ZQb2ludHModCxlLHIpLHUsYz1uLnJlZCxsPW4uZ3JlZW4scD1uLmJsdWUsZD1uLmFscGhhLGg9by5yZWQsXz1vLmdyZWVuLGc9by5ibHVlLGI9by5hbHBoYTtpZihuZS5lcXVhbHMobixvKSl7Zm9yKHU9MDt1PGY7dSsrKWlbcysrXT1uZS5mbG9hdFRvQnl0ZShjKSxpW3MrK109bmUuZmxvYXRUb0J5dGUobCksaVtzKytdPW5lLmZsb2F0VG9CeXRlKHApLGlbcysrXT1uZS5mbG9hdFRvQnl0ZShkKTtyZXR1cm4gc31sZXQgdz0oaC1jKS9mLE89KF8tbCkvZixFPShnLXApL2YsVD0oYi1kKS9mLHg9cztmb3IodT0wO3U8Zjt1KyspaVt4KytdPW5lLmZsb2F0VG9CeXRlKGMrdSp3KSxpW3grK109bmUuZmxvYXRUb0J5dGUobCt1Kk8pLGlbeCsrXT1uZS5mbG9hdFRvQnl0ZShwK3UqRSksaVt4KytdPW5lLmZsb2F0VG9CeXRlKGQrdSpUKTtyZXR1cm4geH1mdW5jdGlvbiBpdSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQuY29sb3JzLG89dC5jb2xvcnNQZXJWZXJ0ZXg/PyExO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBEKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKG4pJiYobyYmbi5sZW5ndGg8ZS5sZW5ndGh8fCFvJiZuLmxlbmd0aDxlLmxlbmd0aC0xKSl0aHJvdyBuZXcgRCgiY29sb3JzIGhhcyBhbiBpbnZhbGlkIGxlbmd0aC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9jb2xvcnM9bix0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9byx0aGlzLl9hcmNUeXBlPXQuYXJjVHlwZT8/aGUuR0VPREVTSUMsdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fZWxsaXBzb2lkPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeSI7bGV0IHI9MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtyKz1tKG4pPzErbi5sZW5ndGgqbmUucGFja2VkTGVuZ3RoOjEsdGhpcy5wYWNrZWRMZW5ndGg9citZLnBhY2tlZExlbmd0aCszfXZhciBVZCxrZCwkQixWeSx5Uj0kKCgpPT57dWMoKTt2ZSgpO0R0KCk7TWEoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7WmUoKTtLdCgpO2dhKCk7dG4oKTtpdS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9jb2xvcnM7Zm9yKGk9bShzKT9zLmxlbmd0aDowLGVbbisrXT1pLG89MDtvPGk7KytvLG4rPW5lLnBhY2tlZExlbmd0aCluZS5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9jb2xvcnNQZXJWZXJ0ZXg/MTowLGVbbisrXT10Ll9hcmNUeXBlLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07aXUudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcz1yPjA/bmV3IEFycmF5KHIpOnZvaWQgMDtmb3Iobz0wO288cjsrK28sZSs9bmUucGFja2VkTGVuZ3RoKXNbb109bmUudW5wYWNrKHQsZSk7bGV0IGY9WS51bnBhY2sodCxlKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgdT10W2UrK109PT0xLGM9dFtlKytdLGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fY29sb3JzPXMsbi5fZWxsaXBzb2lkPWYsbi5fY29sb3JzUGVyVmVydGV4PXUsbi5fYXJjVHlwZT1jLG4uX2dyYW51bGFyaXR5PWwsbik6bmV3IGl1KHtwb3NpdGlvbnM6aSxjb2xvcnM6cyxlbGxpcHNvaWQ6Zixjb2xvcnNQZXJWZXJ0ZXg6dSxhcmNUeXBlOmMsZ3JhbnVsYXJpdHk6bH0pfTtVZD1uZXcgQXJyYXkoMiksa2Q9bmV3IEFycmF5KDIpLCRCPXtwb3NpdGlvbnM6VWQsaGVpZ2h0OmtkLGVsbGlwc29pZDp2b2lkIDAsbWluRGlzdGFuY2U6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07aXUuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fY29sb3JzLG89dC5fY29sb3JzUGVyVmVydGV4LHI9dC5fYXJjVHlwZSxpPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLGY9UC5jaG9yZExlbmd0aChpLHMubWF4aW11bVJhZGl1cyksdT1tKG4pJiYhbyxjLGw9ZS5sZW5ndGgscCxkLGgsXyxnPTA7aWYocj09PWhlLkdFT0RFU0lDfHxyPT09aGUuUkhVTUIpe2xldCBULHgsTTtyPT09aGUuR0VPREVTSUM/KFQ9UC5jaG9yZExlbmd0aChpLHMubWF4aW11bVJhZGl1cykseD1Bbi5udW1iZXJPZlBvaW50cyxNPUFuLmdlbmVyYXRlQXJjKTooVD1pLHg9QW4ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmUsTT1Bbi5nZW5lcmF0ZVJodW1iQXJjKTtsZXQgTj1Bbi5leHRyYWN0SGVpZ2h0cyhlLHMpLEY9JEI7aWYocj09PWhlLkdFT0RFU0lDP0YubWluRGlzdGFuY2U9ZjpGLmdyYW51bGFyaXR5PWksRi5lbGxpcHNvaWQ9cyx1KXtsZXQgST0wO2ZvcihjPTA7YzxsLTE7YysrKUkrPXgoZVtjXSxlW2MrMV0sVCkrMTtwPW5ldyBGbG9hdDY0QXJyYXkoSSozKSxoPW5ldyBVaW50OEFycmF5KEkqNCksRi5wb3NpdGlvbnM9VWQsRi5oZWlnaHQ9a2Q7bGV0IHY9MDtmb3IoYz0wO2M8bC0xOysrYyl7VWRbMF09ZVtjXSxVZFsxXT1lW2MrMV0sa2RbMF09TltjXSxrZFsxXT1OW2MrMV07bGV0IEI9TShGKTtpZihtKG4pKXtsZXQgQT1CLmxlbmd0aC8zO189bltjXTtmb3IobGV0IFM9MDtTPEE7KytTKWhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLnJlZCksaFt2KytdPW5lLmZsb2F0VG9CeXRlKF8uZ3JlZW4pLGhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLmJsdWUpLGhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLmFscGhhKX1wLnNldChCLGcpLGcrPUIubGVuZ3RofX1lbHNlIGlmKEYucG9zaXRpb25zPWUsRi5oZWlnaHQ9TixwPW5ldyBGbG9hdDY0QXJyYXkoTShGKSksbShuKSl7Zm9yKGg9bmV3IFVpbnQ4QXJyYXkocC5sZW5ndGgvMyo0KSxjPTA7YzxsLTE7KytjKXtsZXQgdj1lW2NdLEI9ZVtjKzFdLEE9bltjXSxTPW5bYysxXTtnPVlCKHYsQixBLFMsZixoLGcpfWxldCBJPW5bbC0xXTtoW2crK109bmUuZmxvYXRUb0J5dGUoSS5yZWQpLGhbZysrXT1uZS5mbG9hdFRvQnl0ZShJLmdyZWVuKSxoW2crK109bmUuZmxvYXRUb0J5dGUoSS5ibHVlKSxoW2crK109bmUuZmxvYXRUb0J5dGUoSS5hbHBoYSl9fWVsc2V7ZD11P2wqMi0yOmwscD1uZXcgRmxvYXQ2NEFycmF5KGQqMyksaD1tKG4pP25ldyBVaW50OEFycmF5KGQqNCk6dm9pZCAwO2xldCBUPTAseD0wO2ZvcihjPTA7YzxsOysrYyl7bGV0IE09ZVtjXTtpZih1JiZjPjAmJihhLnBhY2soTSxwLFQpLFQrPTMsXz1uW2MtMV0saFt4KytdPW5lLmZsb2F0VG9CeXRlKF8ucmVkKSxoW3grK109bmUuZmxvYXRUb0J5dGUoXy5ncmVlbiksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uYmx1ZSksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uYWxwaGEpKSx1JiZjPT09bC0xKWJyZWFrO2EucGFjayhNLHAsVCksVCs9MyxtKG4pJiYoXz1uW2NdLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLnJlZCksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uZ3JlZW4pLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLmJsdWUpLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLmFscGhhKSl9fWxldCBiPW5ldyBpZTtiLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cH0pLG0obikmJihiLmNvbG9yPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsdmFsdWVzOmgsbm9ybWFsaXplOiEwfSkpLGQ9cC5sZW5ndGgvMztsZXQgdz0oZC0xKSoyLE89THQuY3JlYXRlVHlwZWRBcnJheShkLHcpLEU9MDtmb3IoYz0wO2M8ZC0xOysrYylPW0UrK109YyxPW0UrK109YysxO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6YixpbmRpY2VzOk8scHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpBdC5mcm9tUG9pbnRzKGUpfSl9O1Z5PWl1fSk7dmFyIHp5PXt9O2xlKHp5LHtkZWZhdWx0OigpPT5RQn0pO2Z1bmN0aW9uIFpCKHQsZSl7cmV0dXJuIG0oZSkmJih0PVZ5LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLFZ5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBRQixqeT0kKCgpPT57ZnQoKTskdCgpO3lSKCk7UUI9WkJ9KTtmdW5jdGlvbiBMYSh0KXtsZXQgZT10LnJhZGl1cz8/MSxvPXtyYWRpaTpuZXcgYShlLGUsZSksc3RhY2tQYXJ0aXRpb25zOnQuc3RhY2tQYXJ0aXRpb25zLHNsaWNlUGFydGl0aW9uczp0LnNsaWNlUGFydGl0aW9ucyx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3RoaXMuX2VsbGlwc29pZEdlb21ldHJ5PW5ldyBjcihvKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVTcGhlcmVHZW9tZXRyeSJ9dmFyIEpCLENzLEh5LGdSPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtUZCgpO3hvKCk7TGEucGFja2VkTGVuZ3RoPWNyLnBhY2tlZExlbmd0aDtMYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksY3IucGFjayh0Ll9lbGxpcHNvaWRHZW9tZXRyeSxlLG4pfTtKQj1uZXcgY3IsQ3M9e3JhZGl1czp2b2lkIDAscmFkaWk6bmV3IGEsdmVydGV4Rm9ybWF0Om5ldyBwdCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDB9O0xhLnVucGFjaz1mdW5jdGlvbih0LGUsbil7bGV0IG89Y3IudW5wYWNrKHQsZSxKQik7cmV0dXJuIENzLnZlcnRleEZvcm1hdD1wdC5jbG9uZShvLl92ZXJ0ZXhGb3JtYXQsQ3MudmVydGV4Rm9ybWF0KSxDcy5zdGFja1BhcnRpdGlvbnM9by5fc3RhY2tQYXJ0aXRpb25zLENzLnNsaWNlUGFydGl0aW9ucz1vLl9zbGljZVBhcnRpdGlvbnMsbShuKT8oYS5jbG9uZShvLl9yYWRpaSxDcy5yYWRpaSksbi5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IGNyKENzKSxuKTooQ3MucmFkaXVzPW8uX3JhZGlpLngsbmV3IExhKENzKSl9O0xhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBjci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNvaWRHZW9tZXRyeSl9O0h5PUxhfSk7dmFyIHF5PXt9O2xlKHF5LHtkZWZhdWx0OigpPT5lNH0pO2Z1bmN0aW9uIHQ0KHQsZSl7cmV0dXJuIG0oZSkmJih0PUh5LnVucGFjayh0LGUpKSxIeS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgZTQsS3k9JCgoKT0+e2Z0KCk7Z1IoKTtlND10NH0pO2Z1bmN0aW9uIERhKHQpe2xldCBlPXQucmFkaXVzPz8xLG89e3JhZGlpOm5ldyBhKGUsZSxlKSxzdGFja1BhcnRpdGlvbnM6dC5zdGFja1BhcnRpdGlvbnMsc2xpY2VQYXJ0aXRpb25zOnQuc2xpY2VQYXJ0aXRpb25zLHN1YmRpdmlzaW9uczp0LnN1YmRpdmlzaW9uc307dGhpcy5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IFhyKG8pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeSJ9dmFyIG40LFRjLFd5LEFSPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtQXygpO0RhLnBhY2tlZExlbmd0aD1Yci5wYWNrZWRMZW5ndGg7RGEucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLFhyLnBhY2sodC5fZWxsaXBzb2lkR2VvbWV0cnksZSxuKX07bjQ9bmV3IFhyLFRjPXtyYWRpdXM6dm9pZCAwLHJhZGlpOm5ldyBhLHN0YWNrUGFydGl0aW9uczp2b2lkIDAsc2xpY2VQYXJ0aXRpb25zOnZvaWQgMCxzdWJkaXZpc2lvbnM6dm9pZCAwfTtEYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPVhyLnVucGFjayh0LGUsbjQpO3JldHVybiBUYy5zdGFja1BhcnRpdGlvbnM9by5fc3RhY2tQYXJ0aXRpb25zLFRjLnNsaWNlUGFydGl0aW9ucz1vLl9zbGljZVBhcnRpdGlvbnMsVGMuc3ViZGl2aXNpb25zPW8uX3N1YmRpdmlzaW9ucyxtKG4pPyhhLmNsb25lKG8uX3JhZGlpLFRjLnJhZGlpKSxuLl9lbGxpcHNvaWRHZW9tZXRyeT1uZXcgWHIoVGMpLG4pOihUYy5yYWRpdXM9by5fcmFkaWkueCxuZXcgRGEoVGMpKX07RGEuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIFhyLmNyZWF0ZUdlb21ldHJ5KHQuX2VsbGlwc29pZEdlb21ldHJ5KX07V3k9RGF9KTt2YXIgWHk9e307bGUoWHkse2RlZmF1bHQ6KCk9PnI0fSk7ZnVuY3Rpb24gbzQodCxlKXtyZXR1cm4gbShlKSYmKHQ9V3kudW5wYWNrKHQsZSkpLFd5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciByNCxZeT0kKCgpPT57ZnQoKTtBUigpO3I0PW80fSk7dmFyICR5PXt9O2xlKCR5LHtkZWZhdWx0OigpPT5FNH0pO2Z1bmN0aW9uIGE0KHQsZSxuLG8scixpLHMpe2xldCBmPXQubGVuZ3RoLHU9bmV3IEZsb2F0NjRBcnJheShmKjMpO2ZvcihsZXQgYz0wO2M8ZjsrK2Mpe2xldCBsPXRbY10scD1lW2NdLGQ9bltjXSxoPVAubGVycChvLndlc3Qsby5lYXN0LGwvc3UpLF89UC5sZXJwKG8uc291dGgsby5ub3J0aCxwL3N1KSxnPVAubGVycChyLGksZC9zdSksYj1jdC5mcm9tUmFkaWFucyhoLF8sZyxzNCksdz1zLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGIsYzQpO2EucGFjayh3LHUsYyozKX1yZXR1cm4gdX1mdW5jdGlvbiBmNCh0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBVaW50MzJBcnJheShlKzEpLG89MDtmb3IobGV0IHI9MDtyPGU7KytyKW5bcl09byxvKz10W3JdO3JldHVybiBuW2VdPW8sbn1mdW5jdGlvbiBwNCh0LGUsbixvKXtsZXQgcj1vLmxlbmd0aCxpPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoaSksZj11NCx1PWw0LGM9MDtmb3IobGV0IHA9MDtwPHI7cCsrKXtsZXQgZD1vW3BdLGg9ZDtmb3IobGV0IF89MTtfPGQ7XysrKXtsZXQgZz1jK18sYj1nLTE7dS5sb25naXR1ZGU9dFtnXSx1LmxhdGl0dWRlPWVbZ10sZi5sb25naXR1ZGU9dFtiXSxmLmxhdGl0dWRlPWVbYl0sY3QuZXF1YWxzKHUsZikmJihoLS0sc1tiXT0xKX1vW3BdPWgsYys9ZH1sZXQgbD0wO2ZvcihsZXQgcD0wO3A8aTtwKyspc1twXSE9PTEmJih0W2xdPXRbcF0sZVtsXT1lW3BdLG5bbF09bltwXSxsKyspfWZ1bmN0aW9uIEVSKHQpe2xldCBlPXQqOCxuPWUqMyxvPWUqNDt0aGlzLnN0YXJ0RWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuZW5kRWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuc3RhcnRQb3NpdGlvbkFuZEhlaWdodHM9bmV3IEZsb2F0MzJBcnJheShvKSx0aGlzLnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcz1uZXcgRmxvYXQzMkFycmF5KG8pLHRoaXMuZW5kUG9zaXRpb25BbmRIZWlnaHRzPW5ldyBGbG9hdDMyQXJyYXkobyksdGhpcy5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocz1uZXcgRmxvYXQzMkFycmF5KG8pLHRoaXMudmVydGV4QmF0Y2hJZHM9bmV3IFVpbnQxNkFycmF5KGUpLHRoaXMuaW5kaWNlcz1MdC5jcmVhdGVUeXBlZEFycmF5KGUsMzYqdCksdGhpcy52ZWMzT2Zmc2V0PTAsdGhpcy52ZWM0T2Zmc2V0PTAsdGhpcy5iYXRjaElkT2Zmc2V0PTAsdGhpcy5pbmRleE9mZnNldD0wLHRoaXMudm9sdW1lU3RhcnRJbmRleD0wfWZ1bmN0aW9uIHdSKHQsZSxuLG8scil7bGV0IGk9YS5zdWJ0cmFjdChuLGUsZDQpLHM9YS5zdWJ0cmFjdChlLHQsYlIpO3JldHVybiBhLm5vcm1hbGl6ZShpLGkpLGEubm9ybWFsaXplKHMscyksYS5kb3QoaSxzKTxpNCYmKHM9YS5tdWx0aXBseUJ5U2NhbGFyKHMsLTEsYlIpKSxhLmFkZChpLHMsciksYS5lcXVhbHMocixhLlpFUk8pJiYocj1hLnN1YnRyYWN0KHQsZSkpLGEuY3Jvc3MocixvLHIpLGEuY3Jvc3MobyxyLHIpLGEubm9ybWFsaXplKHIscikscn1mdW5jdGlvbiBPNCh0LGUpe2xldCBuPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbz1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHI9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxpPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKSxzPWc0LGY9QTQsdT1iNCxjPW5ldyBGbG9hdDY0QXJyYXkodC5wYWNrZWRCdWZmZXIpLGw9MCxwPWNbbCsrXSxkPWNbbCsrXTtOdC51bnBhY2soYyxsLHMpLGwrPU50LnBhY2tlZExlbmd0aCxZLnVucGFjayhjLGwsZiksbCs9WS5wYWNrZWRMZW5ndGgsYS51bnBhY2soYyxsLHUpO2xldCBoLF89bi5sZW5ndGgvMyxnPW4uc3ViYXJyYXkoMCxfKSxiPW4uc3ViYXJyYXkoXywyKl8pLHc9bi5zdWJhcnJheSgyKl8sMypfKTtubi56aWdaYWdEZWx0YURlY29kZShnLGIsdykscDQoZyxiLHcscik7bGV0IE89ci5sZW5ndGgsRT0wO2ZvcihoPTA7aDxPO2grKyl7bGV0IEI9cltoXTtFKz1CLTF9bGV0IFQ9bmV3IEVSKEUpLHg9YTQoZyxiLHcscyxwLGQsZix1KTtfPWcubGVuZ3RoO2xldCBNPW5ldyBGbG9hdDMyQXJyYXkoXyozKTtmb3IoaD0wO2g8XzsrK2gpTVtoKjNdPXhbaCozXS11LngsTVtoKjMrMV09eFtoKjMrMV0tdS55LE1baCozKzJdPXhbaCozKzJdLXUuejtsZXQgTj0wLEY9MDtmb3IoaD0wO2g8TztoKyspe2xldCBCPXJbaF0tMSxBPW9baF0qLjUsUz1pW2hdLEM9Tjtmb3IobGV0IEw9MDtMPEI7TCsrKXtsZXQgej1hLnVucGFjayhNLE4sdzQpLGo9YS51bnBhY2soTSxOKzMsVDQpLGs9d1tGXSxxPXdbRisxXTtrPVAubGVycChwLGQsay9zdSkscT1QLmxlcnAocCxkLHEvc3UpLEYrKztsZXQgVz1HZCxSPVZkO2lmKEw9PT0wKXtsZXQgbnQ9QytCKjMsYXQ9YS51bnBhY2soTSxudCxHZCk7aWYoYS5lcXVhbHMoYXQseikpYS51bnBhY2soTSxudC0zLFcpO2Vsc2V7bGV0IGx0PWEuc3VidHJhY3QoeixqLEdkKTtXPWEuYWRkKGx0LHosR2QpfX1lbHNlIGEudW5wYWNrKE0sTi0zLFcpO2lmKEw9PT1CLTEpe2xldCBudD1hLnVucGFjayhNLEMsVmQpO2lmKGEuZXF1YWxzKG50LGopKWEudW5wYWNrKE0sQyszLFIpO2Vsc2V7bGV0IGF0PWEuc3VidHJhY3Qoaix6LFZkKTtSPWEuYWRkKGF0LGosVmQpfX1lbHNlIGEudW5wYWNrKE0sTis2LFIpO1QuYWRkVm9sdW1lKFcseixqLFIsayxxLEEsUyx1LGYpLE4rPTN9Tis9MyxGKyt9bGV0IEk9VC5pbmRpY2VzO2UucHVzaChULnN0YXJ0RWxsaXBzb2lkTm9ybWFscy5idWZmZXIpLGUucHVzaChULmVuZEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyKSxlLnB1c2goVC5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIpLGUucHVzaChULnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcy5idWZmZXIpLGUucHVzaChULmVuZFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIpLGUucHVzaChULmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLmJ1ZmZlciksZS5wdXNoKFQudmVydGV4QmF0Y2hJZHMuYnVmZmVyKSxlLnB1c2goSS5idWZmZXIpO2xldCB2PXtpbmRleERhdGF0eXBlOkkuQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxzdGFydEVsbGlwc29pZE5vcm1hbHM6VC5zdGFydEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyLGVuZEVsbGlwc29pZE5vcm1hbHM6VC5lbmRFbGxpcHNvaWROb3JtYWxzLmJ1ZmZlcixzdGFydFBvc2l0aW9uQW5kSGVpZ2h0czpULnN0YXJ0UG9zaXRpb25BbmRIZWlnaHRzLmJ1ZmZlcixzdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHM6VC5zdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHMuYnVmZmVyLGVuZFBvc2l0aW9uQW5kSGVpZ2h0czpULmVuZFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIsZW5kRmFjZU5vcm1hbEFuZEhhbGZXaWR0aHM6VC5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocy5idWZmZXIsdmVydGV4QmF0Y2hJZHM6VC52ZXJ0ZXhCYXRjaElkcy5idWZmZXIsaW5kaWNlczpJLmJ1ZmZlcn07aWYodC5rZWVwRGVjb2RlZFBvc2l0aW9ucyl7bGV0IEI9ZjQocik7ZS5wdXNoKHguYnVmZmVyLEIuYnVmZmVyKSx2PXlyKHYse2RlY29kZWRQb3NpdGlvbnM6eC5idWZmZXIsZGVjb2RlZFBvc2l0aW9uT2Zmc2V0czpCLmJ1ZmZlcn0pfXJldHVybiB2fXZhciBzdSxpNCxzNCxjNCx1NCxsNCxiUixkNCxSUixUUixPUixtNCxoNCxfNCx5NCxnNCxBNCxiNCxHZCx3NCxUNCxWZCxFNCxaeT0kKCgpPT57ZnMoKTtEdCgpO0llKCk7Y3AoKTskdCgpO1plKCk7S3QoKTtUbigpO1puKCk7c3U9MzI3NjcsaTQ9TWF0aC5jb3MoUC50b1JhZGlhbnMoMTUwKSksczQ9bmV3IGN0LGM0PW5ldyBhO3U0PW5ldyBjdCxsND1uZXcgY3Q7YlI9bmV3IGEsZDQ9bmV3IGE7UlI9WzAsMiw2LDAsNiw0LDAsMSwzLDAsMywyLDAsNCw1LDAsNSwxLDUsMywxLDUsNywzLDcsNSw0LDcsNCw2LDcsNiwyLDcsMiwzXSxUUj1SUi5sZW5ndGgsT1I9bmV3IGEsbTQ9bmV3IGEsaDQ9bmV3IGEsXzQ9bmV3IGEseTQ9bmV3IGE7RVIucHJvdG90eXBlLmFkZFZvbHVtZT1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1hLmFkZChlLHUsT1IpLHA9Yy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobCxtNCk7bD1hLmFkZChuLHUsT1IpO2xldCBkPWMuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwsXzQpLGg9d1IodCxlLG4scCxoNCksXz13UihvLG4sZSxkLHk0KSxnPXRoaXMuc3RhcnRFbGxpcHNvaWROb3JtYWxzLGI9dGhpcy5lbmRFbGxpcHNvaWROb3JtYWxzLHc9dGhpcy5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cyxPPXRoaXMuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzLEU9dGhpcy5lbmRQb3NpdGlvbkFuZEhlaWdodHMsVD10aGlzLmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLHg9dGhpcy52ZXJ0ZXhCYXRjaElkcyxNPXRoaXMuYmF0Y2hJZE9mZnNldCxOPXRoaXMudmVjM09mZnNldCxGPXRoaXMudmVjNE9mZnNldCxJO2ZvcihJPTA7STw4O0krKylhLnBhY2socCxnLE4pLGEucGFjayhkLGIsTiksYS5wYWNrKGUsdyxGKSx3W0YrM109cixhLnBhY2sobixFLEYpLEVbRiszXT1pLGEucGFjayhoLE8sRiksT1tGKzNdPUksYS5wYWNrKF8sVCxGKSxUW0YrM109cyx4W00rK109ZixOKz0zLEYrPTQ7dGhpcy5iYXRjaElkT2Zmc2V0PU0sdGhpcy52ZWMzT2Zmc2V0PU4sdGhpcy52ZWM0T2Zmc2V0PUY7bGV0IHY9dGhpcy5pbmRpY2VzLEI9dGhpcy52b2x1bWVTdGFydEluZGV4LEE9dGhpcy5pbmRleE9mZnNldDtmb3IoST0wO0k8VFI7SSsrKXZbQStJXT1SUltJXStCO3RoaXMudm9sdW1lU3RhcnRJbmRleCs9OCx0aGlzLmluZGV4T2Zmc2V0Kz1UUn07ZzQ9bmV3IE50LEE0PW5ldyBZLGI0PW5ldyBhLEdkPW5ldyBhLHc0PW5ldyBhLFQ0PW5ldyBhLFZkPW5ldyBhO0U0PVVlKE80KX0pO2Z1bmN0aW9uIFI0KHQpe3RoaXMub2Zmc2V0PXQub2Zmc2V0LHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLmNvbG9yPXQuY29sb3IsdGhpcy5iYXRjaElkcz10LmJhdGNoSWRzfXZhciBTUix4Uj0kKCgpPT57U1I9UjR9KTt2YXIgUXk9e307bGUoUXkse2RlZmF1bHQ6KCk9Pms0fSk7ZnVuY3Rpb24gTTQodCxlKXtsZXQgbj1lKlM0LG89YS51bnBhY2sodCxuLGpkKTtuKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1zdC51bnBhY2sodCxuLENyLm1vZGVsTWF0cml4KTtzdC5tdWx0aXBseUJ5U2NhbGUocixvLHIpO2xldCBpPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9TWF0aC5zcXJ0KDMpLENyfWZ1bmN0aW9uIE40KHQsZSl7bGV0IG49ZSp4NCxvPXRbbisrXSxyPXRbbisrXSxpPWEuZnJvbUVsZW1lbnRzKG8sbyxyLGpkKSxzPXN0LnVucGFjayh0LG4sQ3IubW9kZWxNYXRyaXgpO3N0Lm11bHRpcGx5QnlTY2FsZShzLGkscyk7bGV0IGY9Q3IuYm91bmRpbmdWb2x1bWU7cmV0dXJuIGEuY2xvbmUoYS5aRVJPLGYuY2VudGVyKSxmLnJhZGl1cz1NYXRoLnNxcnQoMiksQ3J9ZnVuY3Rpb24gSTQodCxlKXtsZXQgbj1lKkM0LG89YS51bnBhY2sodCxuLGpkKTtuKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1zdC51bnBhY2sodCxuLENyLm1vZGVsTWF0cml4KTtzdC5tdWx0aXBseUJ5U2NhbGUocixvLHIpO2xldCBpPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9MSxDcn1mdW5jdGlvbiB2NCh0LGUpe2xldCBuPWUqUDQsbz10W24rK10scj1hLnVucGFjayh0LG4samQpLGk9c3QuZnJvbVRyYW5zbGF0aW9uKHIsQ3IubW9kZWxNYXRyaXgpO3N0Lm11bHRpcGx5QnlVbmlmb3JtU2NhbGUoaSxvLGkpO2xldCBzPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxzLmNlbnRlcikscy5yYWRpdXM9MSxDcn1mdW5jdGlvbiB6ZCh0LGUsbixvLHIpe2lmKCFtKGUpKXJldHVybjtsZXQgaT1uLmxlbmd0aCxzPW8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsZj1vLmluZGljZXMsdT10LnBvc2l0aW9ucyxjPXQudmVydGV4QmF0Y2hJZHMsbD10LmluZGljZXMscD10LmJhdGNoSWRzLGQ9dC5iYXRjaFRhYmxlQ29sb3JzLGg9dC5iYXRjaGVkSW5kaWNlcyxfPXQuaW5kZXhPZmZzZXRzLGc9dC5pbmRleENvdW50cyxiPXQuYm91bmRpbmdWb2x1bWVzLHc9dC5tb2RlbE1hdHJpeCxPPXQuY2VudGVyLEU9dC5wb3NpdGlvbk9mZnNldCxUPXQuYmF0Y2hJZEluZGV4LHg9dC5pbmRleE9mZnNldCxNPXQuYmF0Y2hlZEluZGljZXNPZmZzZXQ7Zm9yKGxldCBOPTA7TjxpOysrTil7bGV0IEY9cihlLE4pLEk9Ri5tb2RlbE1hdHJpeDtzdC5tdWx0aXBseSh3LEksSSk7bGV0IHY9bltOXSxCPXMubGVuZ3RoO2ZvcihsZXQgQz0wO0M8QjtDKz0zKXtsZXQgTD1hLnVucGFjayhzLEMsRjQpO3N0Lm11bHRpcGx5QnlQb2ludChJLEwsTCksYS5zdWJ0cmFjdChMLE8sTCksYS5wYWNrKEwsdSxFKjMrQyksY1tUKytdPXZ9bGV0IEE9Zi5sZW5ndGg7Zm9yKGxldCBDPTA7QzxBOysrQylsW3grQ109ZltDXStFO2xldCBTPU4rTTtoW1NdPW5ldyBTUih7b2Zmc2V0OngsY291bnQ6QSxjb2xvcjpuZS5mcm9tUmdiYShkW3ZdKSxiYXRjaElkczpbdl19KSxwW1NdPXYsX1tTXT14LGdbU109QSxiW1NdPUF0LnRyYW5zZm9ybShGLmJvdW5kaW5nVm9sdW1lLEkpLEUrPUIvMyx4Kz1BfXQucG9zaXRpb25PZmZzZXQ9RSx0LmJhdGNoSWRJbmRleD1ULHQuaW5kZXhPZmZzZXQ9eCx0LmJhdGNoZWRJbmRpY2VzT2Zmc2V0Kz1pfWZ1bmN0aW9uIEw0KHQpe2xldCBlPW5ldyBGbG9hdDY0QXJyYXkodCksbj0wO2EudW5wYWNrKGUsbixDUiksbis9YS5wYWNrZWRMZW5ndGgsc3QudW5wYWNrKGUsbixQUil9ZnVuY3Rpb24gRDQodCl7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz0wO288ZTsrK28pbis9bmUucGFja2VkTGVuZ3RoKzMrdFtvXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gQjQodCxlLG4pe2xldCBvPW4ubGVuZ3RoLHI9MitvKkF0LnBhY2tlZExlbmd0aCsxK0Q0KGUpLGk9bmV3IEZsb2F0NjRBcnJheShyKSxzPTA7aVtzKytdPXQsaVtzKytdPW87Zm9yKGxldCB1PTA7dTxvOysrdSlBdC5wYWNrKG5bdV0saSxzKSxzKz1BdC5wYWNrZWRMZW5ndGg7bGV0IGY9ZS5sZW5ndGg7aVtzKytdPWY7Zm9yKGxldCB1PTA7dTxmOysrdSl7bGV0IGM9ZVt1XTtuZS5wYWNrKGMuY29sb3IsaSxzKSxzKz1uZS5wYWNrZWRMZW5ndGgsaVtzKytdPWMub2Zmc2V0LGlbcysrXT1jLmNvdW50O2xldCBsPWMuYmF0Y2hJZHMscD1sLmxlbmd0aDtpW3MrK109cDtmb3IobGV0IGQ9MDtkPHA7KytkKWlbcysrXT1sW2RdfXJldHVybiBpfWZ1bmN0aW9uIFU0KHQsZSl7bGV0IG49bSh0LmJveGVzKT9uZXcgRmxvYXQzMkFycmF5KHQuYm94ZXMpOnZvaWQgMCxvPW0odC5ib3hCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuYm94QmF0Y2hJZHMpOnZvaWQgMCxyPW0odC5jeWxpbmRlcnMpP25ldyBGbG9hdDMyQXJyYXkodC5jeWxpbmRlcnMpOnZvaWQgMCxpPW0odC5jeWxpbmRlckJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5jeWxpbmRlckJhdGNoSWRzKTp2b2lkIDAscz1tKHQuZWxsaXBzb2lkcyk/bmV3IEZsb2F0MzJBcnJheSh0LmVsbGlwc29pZHMpOnZvaWQgMCxmPW0odC5lbGxpcHNvaWRCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuZWxsaXBzb2lkQmF0Y2hJZHMpOnZvaWQgMCx1PW0odC5zcGhlcmVzKT9uZXcgRmxvYXQzMkFycmF5KHQuc3BoZXJlcyk6dm9pZCAwLGM9bSh0LnNwaGVyZUJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5zcGhlcmVCYXRjaElkcyk6dm9pZCAwLGw9bShuKT9vLmxlbmd0aDowLHA9bShyKT9pLmxlbmd0aDowLGQ9bShzKT9mLmxlbmd0aDowLGg9bSh1KT9jLmxlbmd0aDowLF89eGYuZ2V0VW5pdEJveCgpLGc9cWYuZ2V0VW5pdEN5bGluZGVyKCksYj1jci5nZXRVbml0RWxsaXBzb2lkKCksdz1fLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLE89Zy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxFPWIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsVD13Lmxlbmd0aCpsO1QrPU8ubGVuZ3RoKnAsVCs9RS5sZW5ndGgqKGQraCk7bGV0IHg9Xy5pbmRpY2VzLE09Zy5pbmRpY2VzLE49Yi5pbmRpY2VzLEY9eC5sZW5ndGgqbDtGKz1NLmxlbmd0aCpwLEYrPU4ubGVuZ3RoKihkK2gpO2xldCBJPW5ldyBGbG9hdDMyQXJyYXkoVCksdj1uZXcgVWludDE2QXJyYXkoVC8zKSxCPUx0LmNyZWF0ZVR5cGVkQXJyYXkoVC8zLEYpLEE9bCtwK2QraCxTPW5ldyBVaW50MTZBcnJheShBKSxDPW5ldyBBcnJheShBKSxMPW5ldyBVaW50MzJBcnJheShBKSx6PW5ldyBVaW50MzJBcnJheShBKSxqPW5ldyBBcnJheShBKTtMNCh0LnBhY2tlZEJ1ZmZlcik7bGV0IGs9e2JhdGNoVGFibGVDb2xvcnM6bmV3IFVpbnQzMkFycmF5KHQuYmF0Y2hUYWJsZUNvbG9ycykscG9zaXRpb25zOkksdmVydGV4QmF0Y2hJZHM6dixpbmRpY2VzOkIsYmF0Y2hJZHM6UyxiYXRjaGVkSW5kaWNlczpDLGluZGV4T2Zmc2V0czpMLGluZGV4Q291bnRzOnosYm91bmRpbmdWb2x1bWVzOmoscG9zaXRpb25PZmZzZXQ6MCxiYXRjaElkSW5kZXg6MCxpbmRleE9mZnNldDowLGJhdGNoZWRJbmRpY2VzT2Zmc2V0OjAsbW9kZWxNYXRyaXg6UFIsY2VudGVyOkNSfTt6ZChrLG4sbyxfLE00KSx6ZChrLHIsaSxnLE40KSx6ZChrLHMsZixiLEk0KSx6ZChrLHUsYyxiLHY0KTtsZXQgcT1CNChCLkJZVEVTX1BFUl9FTEVNRU5ULEMsaik7cmV0dXJuIGUucHVzaChJLmJ1ZmZlcix2LmJ1ZmZlcixCLmJ1ZmZlciksZS5wdXNoKFMuYnVmZmVyLEwuYnVmZmVyLHouYnVmZmVyKSxlLnB1c2gocS5idWZmZXIpLHtwb3NpdGlvbnM6SS5idWZmZXIsdmVydGV4QmF0Y2hJZHM6di5idWZmZXIsaW5kaWNlczpCLmJ1ZmZlcixpbmRleE9mZnNldHM6TC5idWZmZXIsaW5kZXhDb3VudHM6ei5idWZmZXIsYmF0Y2hJZHM6Uy5idWZmZXIscGFja2VkQnVmZmVyOnEuYnVmZmVyfX12YXIgamQsUzQseDQsQzQsUDQsQ3IsRjQsQ1IsUFIsazQsSnk9JCgoKT0+e3ZlKCk7bDAoKTtEdCgpO01hKCk7aF8oKTtmdCgpO1RkKCk7WmUoKTtrbigpO3hSKCk7Wm4oKTtqZD1uZXcgYSxTND1zdC5wYWNrZWRMZW5ndGgrYS5wYWNrZWRMZW5ndGgseDQ9c3QucGFja2VkTGVuZ3RoKzIsQzQ9c3QucGFja2VkTGVuZ3RoK2EucGFja2VkTGVuZ3RoLFA0PWEucGFja2VkTGVuZ3RoKzEsQ3I9e21vZGVsTWF0cml4Om5ldyBzdCxib3VuZGluZ1ZvbHVtZTpuZXcgQXR9O0Y0PW5ldyBhO0NSPW5ldyBhLFBSPW5ldyBzdDtrND1VZShVNCl9KTt2YXIgZWc9e307bGUoZWcse2RlZmF1bHQ6KCk9Pkg0fSk7ZnVuY3Rpb24gejQodCl7dD1uZXcgRmxvYXQ2NEFycmF5KHQpO2xldCBlPTA7SGQubWluPXRbZSsrXSxIZC5tYXg9dFtlKytdLE50LnVucGFjayh0LGUsTVIpLGUrPU50LnBhY2tlZExlbmd0aCxZLnVucGFjayh0LGUsTlIpfWZ1bmN0aW9uIGo0KHQsZSl7bGV0IG49bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKTt6NCh0LnBhY2tlZEJ1ZmZlcik7bGV0IG89TVIscj1OUixpPUhkLm1pbixzPUhkLm1heCxmPW4ubGVuZ3RoLzMsdT1uLnN1YmFycmF5KDAsZiksYz1uLnN1YmFycmF5KGYsMipmKSxsPW4uc3ViYXJyYXkoMipmLDMqZik7bm4uemlnWmFnRGVsdGFEZWNvZGUodSxjLGwpO2xldCBwPW5ldyBGbG9hdDY0QXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgZD0wO2Q8ZjsrK2Qpe2xldCBoPXVbZF0sXz1jW2RdLGc9bFtkXSxiPVAubGVycChvLndlc3Qsby5lYXN0LGgvdGcpLHc9UC5sZXJwKG8uc291dGgsby5ub3J0aCxfL3RnKSxPPVAubGVycChpLHMsZy90ZyksRT1jdC5mcm9tUmFkaWFucyhiLHcsTyxHNCksVD1yLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEUsVjQpO2EucGFjayhULHAsZCozKX1yZXR1cm4gZS5wdXNoKHAuYnVmZmVyKSx7cG9zaXRpb25zOnAuYnVmZmVyfX12YXIgdGcsRzQsVjQsTVIsTlIsSGQsSDQsbmc9JCgoKT0+e2ZzKCk7RHQoKTtJZSgpOyR0KCk7S3QoKTtUbigpO1puKCk7dGc9MzI3NjcsRzQ9bmV3IGN0LFY0PW5ldyBhLE1SPW5ldyBOdCxOUj1uZXcgWSxIZD17bWluOnZvaWQgMCxtYXg6dm9pZCAwfTtIND1VZShqNCl9KTt2YXIgb2c9e307bGUob2cse2RlZmF1bHQ6KCk9PnRVfSk7ZnVuY3Rpb24gcTQodCl7bGV0IGU9bmV3IEZsb2F0NjRBcnJheSh0KSxuPTA7QmEuaW5kZXhCeXRlc1BlckVsZW1lbnQ9ZVtuKytdLEJhLm1pbj1lW24rK10sQmEubWF4PWVbbisrXSxhLnVucGFjayhlLG4sTFIpLG4rPWEucGFja2VkTGVuZ3RoLFkudW5wYWNrKGUsbixEUiksbis9WS5wYWNrZWRMZW5ndGgsTnQudW5wYWNrKGUsbixCUil9ZnVuY3Rpb24gSzQodCl7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz0wO288ZTsrK28pbis9bmUucGFja2VkTGVuZ3RoKzMrdFtvXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gVzQodCxlLG4pe2xldCBvPWUubGVuZ3RoLHI9MitvKkNvLnBhY2tlZExlbmd0aCsxK0s0KG4pLGk9bmV3IEZsb2F0NjRBcnJheShyKSxzPTA7aVtzKytdPXQsaVtzKytdPW87Zm9yKGxldCB1PTA7dTxvOysrdSlDby5wYWNrKGVbdV0saSxzKSxzKz1Dby5wYWNrZWRMZW5ndGg7bGV0IGY9bi5sZW5ndGg7aVtzKytdPWY7Zm9yKGxldCB1PTA7dTxmOysrdSl7bGV0IGM9blt1XTtuZS5wYWNrKGMuY29sb3IsaSxzKSxzKz1uZS5wYWNrZWRMZW5ndGgsaVtzKytdPWMub2Zmc2V0LGlbcysrXT1jLmNvdW50O2xldCBsPWMuYmF0Y2hJZHMscD1sLmxlbmd0aDtpW3MrK109cDtmb3IobGV0IGQ9MDtkPHA7KytkKWlbcysrXT1sW2RdfXJldHVybiBpfWZ1bmN0aW9uIEo0KHQsZSl7cTQodC5wYWNrZWRCdWZmZXIpO2xldCBuO0JhLmluZGV4Qnl0ZXNQZXJFbGVtZW50PT09Mj9uPW5ldyBVaW50MTZBcnJheSh0LmluZGljZXMpOm49bmV3IFVpbnQzMkFycmF5KHQuaW5kaWNlcyk7bGV0IHI9bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKSxpPW5ldyBVaW50MzJBcnJheSh0LmNvdW50cykscz1uZXcgVWludDMyQXJyYXkodC5pbmRleENvdW50cyksZj1uZXcgVWludDMyQXJyYXkodC5iYXRjaElkcyksdT1uZXcgVWludDMyQXJyYXkodC5iYXRjaFRhYmxlQ29sb3JzKSxjPW5ldyBBcnJheShpLmxlbmd0aCksbD1MUixwPURSLGQ9QlIsaD1CYS5taW4sXz1CYS5tYXgsZz10Lm1pbmltdW1IZWlnaHRzLGI9dC5tYXhpbXVtSGVpZ2h0czttKGcpJiZtKGIpJiYoZz1uZXcgRmxvYXQzMkFycmF5KGcpLGI9bmV3IEZsb2F0MzJBcnJheShiKSk7bGV0IHcsTyxFLFQ9ci5sZW5ndGgvMix4PXIuc3ViYXJyYXkoMCxUKSxNPXIuc3ViYXJyYXkoVCwyKlQpO25uLnppZ1phZ0RlbHRhRGVjb2RlKHgsTSk7bGV0IE49bmV3IEZsb2F0NjRBcnJheShUKjMpO2Zvcih3PTA7dzxUOysrdyl7bGV0IG90PXhbd10sUHQ9TVt3XSxndD1QLmxlcnAoZC53ZXN0LGQuZWFzdCxvdC9JUiksUnQ9UC5sZXJwKGQuc291dGgsZC5ub3J0aCxQdC9JUiksZHQ9Y3QuZnJvbVJhZGlhbnMoZ3QsUnQsMCxGUikscnQ9cC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihkdCx2Uik7YS5wYWNrKHJ0LE4sdyozKX1sZXQgRj1pLmxlbmd0aCxJPW5ldyBBcnJheShGKSx2PW5ldyBBcnJheShGKSxCPTAsQT0wO2Zvcih3PTA7dzxGOysrdylJW3ddPUIsdlt3XT1BLEIrPWlbd10sQSs9c1t3XTtsZXQgUz1uZXcgRmxvYXQzMkFycmF5KFQqMyoyKSxDPW5ldyBVaW50MTZBcnJheShUKjIpLEw9bmV3IFVpbnQzMkFycmF5KHYubGVuZ3RoKSx6PW5ldyBVaW50MzJBcnJheShzLmxlbmd0aCksaj1bXSxrPXt9O2Zvcih3PTA7dzxGOysrdylFPXVbd10sbShrW0VdKT8oa1tFXS5wb3NpdGlvbkxlbmd0aCs9aVt3XSxrW0VdLmluZGV4TGVuZ3RoKz1zW3ddLGtbRV0uYmF0Y2hJZHMucHVzaCh3KSk6a1tFXT17cG9zaXRpb25MZW5ndGg6aVt3XSxpbmRleExlbmd0aDpzW3ddLG9mZnNldDowLGluZGV4T2Zmc2V0OjAsYmF0Y2hJZHM6W3ddfTtsZXQgcSxXPTAsUj0wO2ZvcihFIGluIGspaWYoay5oYXNPd25Qcm9wZXJ0eShFKSl7cT1rW0VdLHEub2Zmc2V0PVcscS5pbmRleE9mZnNldD1SO2xldCBvdD1xLnBvc2l0aW9uTGVuZ3RoKjIsUHQ9cS5pbmRleExlbmd0aCoyK3EucG9zaXRpb25MZW5ndGgqNjtXKz1vdCxSKz1QdCxxLmluZGV4TGVuZ3RoPVB0fWxldCBudD1bXTtmb3IoRSBpbiBrKWsuaGFzT3duUHJvcGVydHkoRSkmJihxPWtbRV0sbnQucHVzaCh7Y29sb3I6bmUuZnJvbVJnYmEocGFyc2VJbnQoRSkpLG9mZnNldDpxLmluZGV4T2Zmc2V0LGNvdW50OnEuaW5kZXhMZW5ndGgsYmF0Y2hJZHM6cS5iYXRjaElkc30pKTtmb3Iodz0wO3c8RjsrK3cpe0U9dVt3XSxxPWtbRV07bGV0IG90PXEub2Zmc2V0LFB0PW90KjMsZ3Q9b3QsUnQ9SVt3XSxkdD1pW3ddLHJ0PWZbd10seHQ9aCxHdD1fO20oZykmJm0oYikmJih4dD1nW3ddLEd0PWJbd10pO2xldCBwZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscmU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxmZT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKE89MDtPPGR0OysrTyl7bGV0IGdlPWEudW5wYWNrKE4sUnQqMytPKjMsdlIpO3Auc2NhbGVUb0dlb2RldGljU3VyZmFjZShnZSxnZSk7bGV0IEVlPXAuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZ2UsRlIpLHVuPUVlLmxhdGl0dWRlLFZlPUVlLmxvbmdpdHVkZTtwZT1NYXRoLm1pbih1bixwZSkscmU9TWF0aC5tYXgodW4scmUpLGRlPU1hdGgubWluKFZlLGRlKSxmZT1NYXRoLm1heChWZSxmZSk7bGV0IGJlPXAuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGdlLFg0KSxsbj1hLm11bHRpcGx5QnlTY2FsYXIoYmUseHQsWTQpLHBuPWEuYWRkKGdlLGxuLCQ0KTtsbj1hLm11bHRpcGx5QnlTY2FsYXIoYmUsR3QsbG4pO2xldCBFbj1hLmFkZChnZSxsbixaNCk7YS5zdWJ0cmFjdChFbixsLEVuKSxhLnN1YnRyYWN0KHBuLGwscG4pLGEucGFjayhFbixTLFB0KSxhLnBhY2socG4sUyxQdCszKSxDW2d0XT1ydCxDW2d0KzFdPXJ0LFB0Kz02LGd0Kz0yfWQ9UTQsZC53ZXN0PWRlLGQuZWFzdD1mZSxkLnNvdXRoPXBlLGQubm9ydGg9cmUsY1t3XT1Dby5mcm9tUmVjdGFuZ2xlKGQsaCxfLHApO2xldCBadD1xLmluZGV4T2Zmc2V0LFF0PXZbd10sTmU9c1t3XTtmb3IoTFt3XT1adCxPPTA7TzxOZTtPKz0zKXtsZXQgZ2U9bltRdCtPXS1SdCxFZT1uW1F0K08rMV0tUnQsdW49bltRdCtPKzJdLVJ0O2pbWnQrK109Z2UqMitvdCxqW1p0KytdPUVlKjIrb3QsaltadCsrXT11bioyK290LGpbWnQrK109dW4qMisxK290LGpbWnQrK109RWUqMisxK290LGpbWnQrK109Z2UqMisxK290fWZvcihPPTA7TzxkdDsrK08pe2xldCBnZT1PLEVlPShPKzEpJWR0O2pbWnQrK109Z2UqMisxK290LGpbWnQrK109RWUqMitvdCxqW1p0KytdPWdlKjIrb3QsaltadCsrXT1nZSoyKzErb3QsaltadCsrXT1FZSoyKzErb3QsaltadCsrXT1FZSoyK290fXEub2Zmc2V0Kz1kdCoyLHEuaW5kZXhPZmZzZXQ9WnQselt3XT1adC1MW3ddfWo9THQuY3JlYXRlVHlwZWRBcnJheShTLmxlbmd0aC8zLGopO2xldCBhdD1udC5sZW5ndGg7Zm9yKGxldCBvdD0wO290PGF0Oysrb3Qpe2xldCBQdD1udFtvdF0uYmF0Y2hJZHMsZ3Q9MCxSdD1QdC5sZW5ndGg7Zm9yKGxldCBkdD0wO2R0PFJ0OysrZHQpZ3QrPXpbUHRbZHRdXTtudFtvdF0uY291bnQ9Z3R9bGV0IGx0PWouQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxfdD1XNChsdCxjLG50KTtyZXR1cm4gZS5wdXNoKFMuYnVmZmVyLGouYnVmZmVyLEwuYnVmZmVyLHouYnVmZmVyLEMuYnVmZmVyLF90LmJ1ZmZlcikse3Bvc2l0aW9uczpTLmJ1ZmZlcixpbmRpY2VzOmouYnVmZmVyLGluZGV4T2Zmc2V0czpMLmJ1ZmZlcixpbmRleENvdW50czp6LmJ1ZmZlcixiYXRjaElkczpDLmJ1ZmZlcixwYWNrZWRCdWZmZXI6X3QuYnVmZmVyfX12YXIgTFIsRFIsQlIsQmEsSVIsdlIsWDQsWTQsJDQsWjQsRlIsUTQsdFUscmc9JCgoKT0+e2ZzKCk7RHQoKTtJZSgpO01hKCk7ZnQoKTskdCgpO1plKCk7S3QoKTtkYSgpO1RuKCk7Wm4oKTtMUj1uZXcgYSxEUj1uZXcgWSxCUj1uZXcgTnQsQmE9e21pbjp2b2lkIDAsbWF4OnZvaWQgMCxpbmRleEJ5dGVzUGVyRWxlbWVudDp2b2lkIDB9O0lSPTMyNzY3LHZSPW5ldyBhLFg0PW5ldyBhLFk0PW5ldyBhLCQ0PW5ldyBhLFo0PW5ldyBhLEZSPW5ldyBjdCxRND1uZXcgTnQ7dFU9VWUoSjQpfSk7ZnVuY3Rpb24gb1UodCxlLG4sbyxyKXtsZXQgaT10Lmxlbmd0aC8zLHM9dC5zdWJhcnJheSgwLGkpLGY9dC5zdWJhcnJheShpLDIqaSksdT10LnN1YmFycmF5KDIqaSwzKmkpO25uLnppZ1phZ0RlbHRhRGVjb2RlKHMsZix1KTtsZXQgYz1uZXcgRmxvYXQ2NEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IGw9MDtsPGk7KytsKXtsZXQgcD1zW2xdLGQ9ZltsXSxoPXVbbF0sXz1QLmxlcnAoZS53ZXN0LGUuZWFzdCxwL2lnKSxnPVAubGVycChlLnNvdXRoLGUubm9ydGgsZC9pZyksYj1QLmxlcnAobixvLGgvaWcpLHc9Y3QuZnJvbVJhZGlhbnMoXyxnLGIsZVUpLE89ci5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih3LG5VKTthLnBhY2soTyxjLGwqMyl9cmV0dXJuIGN9dmFyIGlnLGVVLG5VLFVSLGtSPSQoKCk9PntmcygpO0R0KCk7SWUoKTtLdCgpO2lnPTMyNzY3LGVVPW5ldyBjdCxuVT1uZXcgYTtVUj1vVX0pO3ZhciBzZz17fTtsZShzZyx7ZGVmYXVsdDooKT0+YVV9KTtmdW5jdGlvbiByVSh0KXt0PW5ldyBGbG9hdDY0QXJyYXkodCk7bGV0IGU9MDtxZC5taW49dFtlKytdLHFkLm1heD10W2UrK10sTnQudW5wYWNrKHQsZSxIUiksZSs9TnQucGFja2VkTGVuZ3RoLFkudW5wYWNrKHQsZSxxUiksZSs9WS5wYWNrZWRMZW5ndGgsYS51bnBhY2sodCxlLEtSKX1mdW5jdGlvbiBpVSh0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBVaW50MzJBcnJheShlKzEpLG89MDtmb3IobGV0IHI9MDtyPGU7KytyKW5bcl09byxvKz10W3JdO3JldHVybiBuW2VdPW8sbn1mdW5jdGlvbiBjVSh0LGUpe2xldCBuPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbz1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHI9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxpPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKTtyVSh0LnBhY2tlZEJ1ZmZlcik7bGV0IHM9SFIsZj1xUix1PUtSLGM9cWQubWluLGw9cWQubWF4LHA9VVIobixzLGMsbCxmKSxkPXAubGVuZ3RoLzMsaD1kKjQtNCxfPW5ldyBGbG9hdDMyQXJyYXkoaCozKSxnPW5ldyBGbG9hdDMyQXJyYXkoaCozKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCozKSx3PW5ldyBGbG9hdDMyQXJyYXkoaCoyKSxPPW5ldyBVaW50MTZBcnJheShoKSxFPTAsVD0wLHg9MCxNLE49MCxGPXIubGVuZ3RoO2ZvcihNPTA7TTxGOysrTSl7bGV0IFM9cltNXSxDPW9bTV0sTD1pW01dO2ZvcihsZXQgej0wO3o8UzsrK3ope2xldCBqO2lmKHo9PT0wKXtsZXQgbnQ9YS51bnBhY2socCxOKjMsR1IpLGF0PWEudW5wYWNrKHAsKE4rMSkqMyxWUik7aj1hLnN1YnRyYWN0KG50LGF0LHpSKSxhLmFkZChudCxqLGopfWVsc2Ugaj1hLnVucGFjayhwLChOK3otMSkqMyx6Uik7bGV0IGs9YS51bnBhY2socCwoTit6KSozLHNVKSxxO2lmKHo9PT1TLTEpe2xldCBudD1hLnVucGFjayhwLChOK1MtMSkqMyxHUiksYXQ9YS51bnBhY2socCwoTitTLTIpKjMsVlIpO3E9YS5zdWJ0cmFjdChudCxhdCxqUiksYS5hZGQobnQscSxxKX1lbHNlIHE9YS51bnBhY2socCwoTit6KzEpKjMsalIpO2Euc3VidHJhY3Qoaix1LGopLGEuc3VidHJhY3Qoayx1LGspLGEuc3VidHJhY3QocSx1LHEpO2xldCBXPXo9PT0wPzI6MCxSPXo9PT1TLTE/Mjo0O2ZvcihsZXQgbnQ9VztudDxSOysrbnQpe2EucGFjayhrLF8sRSksYS5wYWNrKGosZyxFKSxhLnBhY2socSxiLEUpLEUrPTM7bGV0IGF0PW50LTI8MD8tMToxO3dbVCsrXT0yKihudCUyKS0xLHdbVCsrXT1hdCpDLE9beCsrXT1MfX1OKz1TfWxldCBJPUx0LmNyZWF0ZVR5cGVkQXJyYXkoaCxkKjYtNiksdj0wLEI9MDtmb3IoRj1kLTEsTT0wO008RjsrK00pSVtCKytdPXYsSVtCKytdPXYrMixJW0IrK109disxLElbQisrXT12KzEsSVtCKytdPXYrMixJW0IrK109diszLHYrPTQ7ZS5wdXNoKF8uYnVmZmVyLGcuYnVmZmVyLGIuYnVmZmVyKSxlLnB1c2gody5idWZmZXIsTy5idWZmZXIsSS5idWZmZXIpO2xldCBBPXtpbmRleERhdGF0eXBlOkkuQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxjdXJyZW50UG9zaXRpb25zOl8uYnVmZmVyLHByZXZpb3VzUG9zaXRpb25zOmcuYnVmZmVyLG5leHRQb3NpdGlvbnM6Yi5idWZmZXIsZXhwYW5kQW5kV2lkdGg6dy5idWZmZXIsYmF0Y2hJZHM6Ty5idWZmZXIsaW5kaWNlczpJLmJ1ZmZlcn07aWYodC5rZWVwRGVjb2RlZFBvc2l0aW9ucyl7bGV0IFM9aVUocik7ZS5wdXNoKHAuYnVmZmVyLFMuYnVmZmVyKSxBPXlyKEEse2RlY29kZWRQb3NpdGlvbnM6cC5idWZmZXIsZGVjb2RlZFBvc2l0aW9uT2Zmc2V0czpTLmJ1ZmZlcn0pfXJldHVybiBBfXZhciBIUixxUixLUixxZCxHUixWUix6UixzVSxqUixhVSxjZz0kKCgpPT57RHQoKTtjcCgpO2tSKCk7JHQoKTtaZSgpO1RuKCk7Wm4oKTtIUj1uZXcgTnQscVI9bmV3IFksS1I9bmV3IGEscWQ9e21pbjp2b2lkIDAsbWF4OnZvaWQgMH07R1I9bmV3IGEsVlI9bmV3IGEselI9bmV3IGEsc1U9bmV3IGEsalI9bmV3IGE7YVU9VWUoY1UpfSk7ZnVuY3Rpb24gX2kodCxlKXt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCksdGhpcy5fZWxsaXBzb2lkPXQsdGhpcy5fY2FtZXJhUG9zaXRpb249bmV3IGEsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW5ldyBhLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9MCxtKGUpJiYodGhpcy5jYW1lcmFQb3NpdGlvbj1lKX1mdW5jdGlvbiBZUih0LGUsbil7aWYobShlKSYmZTwwJiZ0Lm1pbmltdW1SYWRpdXM+LWUpe2xldCBvPWEuZnJvbUVsZW1lbnRzKHQucmFkaWkueCtlLHQucmFkaWkueStlLHQucmFkaWkueitlLGxVKTt0PVkuZnJvbUNhcnRlc2lhbjMobyxuKX1yZXR1cm4gdH1mdW5jdGlvbiAkUih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoImRpcmVjdGlvblRvUG9pbnQiLGUpLHkuZGVmaW5lZCgicG9zaXRpb25zIixuKSxtKG8pfHwobz1uZXcgYSk7bGV0IHI9dDIodCxlKSxpPTA7Zm9yKGxldCBzPTAsZj1uLmxlbmd0aDtzPGY7KytzKXtsZXQgdT1uW3NdLGM9UVIodCx1LHIpO2lmKGM8MClyZXR1cm47aT1NYXRoLm1heChpLGMpfXJldHVybiBKUihyLGksbyl9ZnVuY3Rpb24gWlIodCxlLG4sbyxyLGkpe3kudHlwZU9mLm9iamVjdCgiZGlyZWN0aW9uVG9Qb2ludCIsZSkseS5kZWZpbmVkKCJ2ZXJ0aWNlcyIsbikseS50eXBlT2YubnVtYmVyKCJzdHJpZGUiLG8pLG0oaSl8fChpPW5ldyBhKSxvPW8/PzMscj1yPz9hLlpFUk87bGV0IHM9dDIodCxlKSxmPTA7Zm9yKGxldCB1PTAsYz1uLmxlbmd0aDt1PGM7dSs9byl7S2QueD1uW3VdK3IueCxLZC55PW5bdSsxXStyLnksS2Quej1uW3UrMl0rci56O2xldCBsPVFSKHQsS2Qscyk7aWYobDwwKXJldHVybjtmPU1hdGgubWF4KGYsbCl9cmV0dXJuIEpSKHMsZixpKX1mdW5jdGlvbiBmZyh0LGUsbil7bGV0IG89ZSxyPW4saT1hLnN1YnRyYWN0KHQsbyxXUikscz0tYS5kb3QoaSxvKTtyZXR1cm4hKHI8MD9zPjA6cz5yJiZzKnMvYS5tYWduaXR1ZGVTcXVhcmVkKGkpPnIpfWZ1bmN0aW9uIFFSKHQsZSxuKXtsZXQgbz10LnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZShlLHBVKSxyPWEubWFnbml0dWRlU3F1YXJlZChvKSxpPU1hdGguc3FydChyKSxzPWEuZGl2aWRlQnlTY2FsYXIobyxpLGRVKTtyPU1hdGgubWF4KDEsciksaT1NYXRoLm1heCgxLGkpO2xldCBmPWEuZG90KHMsbiksdT1hLm1hZ25pdHVkZShhLmNyb3NzKHMsbixzKSksYz0xL2ksbD1NYXRoLnNxcnQoci0xKSpjO3JldHVybiAxLyhmKmMtdSpsKX1mdW5jdGlvbiBKUih0LGUsbil7aWYoIShlPD0wfHxlPT09MS8wfHxlIT09ZSkpcmV0dXJuIGEubXVsdGlwbHlCeVNjYWxhcih0LGUsbil9ZnVuY3Rpb24gdDIodCxlKXtyZXR1cm4gYS5lcXVhbHMoZSxhLlpFUk8pP2U6KHQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKGUsYWcpLGEubm9ybWFsaXplKGFnLGFnKSl9dmFyIFdSLGZVLFhSLHVVLGxVLEtkLHBVLGRVLGFnLFBzLGN1PSQoKCk9Pnt2ZSgpO0R0KCk7V3QoKTtmdCgpOyR0KCk7VG4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfaS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LGNhbWVyYVBvc2l0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FtZXJhUG9zaXRpb259LHNldDpmdW5jdGlvbih0KXtsZXQgbj10aGlzLl9lbGxpcHNvaWQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKHQsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlKSxvPWEubWFnbml0dWRlU3F1YXJlZChuKS0xO2EuY2xvbmUodCx0aGlzLl9jYW1lcmFQb3NpdGlvbiksdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW4sdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZD1vfX19KTtXUj1uZXcgYTtfaS5wcm90b3R5cGUuaXNQb2ludFZpc2libGU9ZnVuY3Rpb24odCl7bGV0IG49dGhpcy5fZWxsaXBzb2lkLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZSh0LFdSKTtyZXR1cm4gZmcobix0aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2UsdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCl9O19pLnByb3RvdHlwZS5pc1NjYWxlZFNwYWNlUG9pbnRWaXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBmZyh0LHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZSx0aGlzLl9kaXN0YW5jZVRvTGltYkluU2NhbGVkU3BhY2VTcXVhcmVkKX07ZlU9bmV3IGE7X2kucHJvdG90eXBlLmlzU2NhbGVkU3BhY2VQb2ludFZpc2libGVQb3NzaWJseVVuZGVyRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fZWxsaXBzb2lkLG8scjtyZXR1cm4gbShlKSYmZTwwJiZuLm1pbmltdW1SYWRpdXM+LWU/KHI9ZlUsci54PXRoaXMuX2NhbWVyYVBvc2l0aW9uLngvKG4ucmFkaWkueCtlKSxyLnk9dGhpcy5fY2FtZXJhUG9zaXRpb24ueS8obi5yYWRpaS55K2UpLHIuej10aGlzLl9jYW1lcmFQb3NpdGlvbi56LyhuLnJhZGlpLnorZSksbz1yLngqci54K3IueSpyLnkrci56KnIuei0xKToocj10aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2Usbz10aGlzLl9kaXN0YW5jZVRvTGltYkluU2NhbGVkU3BhY2VTcXVhcmVkKSxmZyh0LHIsbyl9O19pLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludD1mdW5jdGlvbih0LGUsbil7cmV0dXJuICRSKHRoaXMuX2VsbGlwc29pZCx0LGUsbil9O1hSPVkuY2xvbmUoWS5VTklUX1NQSEVSRSk7X2kucHJvdG90eXBlLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1ZUih0aGlzLl9lbGxpcHNvaWQsbixYUik7cmV0dXJuICRSKHIsdCxlLG8pfTtfaS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tVmVydGljZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gWlIodGhpcy5fZWxsaXBzb2lkLHQsZSxuLG8scil9O19pLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPVlSKHRoaXMuX2VsbGlwc29pZCxyLFhSKTtyZXR1cm4gWlIocyx0LGUsbixvLGkpfTt1VT1bXTtfaS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IG89TnQuc3Vic2FtcGxlKHQsZSwwLHVVKSxyPUF0LmZyb21Qb2ludHMobyk7aWYoIShhLm1hZ25pdHVkZShyLmNlbnRlcik8LjEqZS5taW5pbXVtUmFkaXVzKSlyZXR1cm4gdGhpcy5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludChyLmNlbnRlcixvLG4pfTtsVT1uZXcgYTtLZD1uZXcgYTtwVT1uZXcgYSxkVT1uZXcgYTthZz1uZXcgYTtQcz1faX0pO3ZhciBXZCxtVSxlMixuMj0kKCgpPT57RHQoKTtJZSgpO0h0KCk7ZnQoKTtXZD17fTtXZC5nZXRIZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe2lmKCFOdW1iZXIuaXNGaW5pdGUoZSkpdGhyb3cgbmV3IEQoInNjYWxlIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyLiIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IEQoInJlbGF0aXZlSGVpZ2h0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyLiIpO3JldHVybih0LW4pKmUrbn07bVU9bmV3IGN0O1dkLmdldFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scil7bGV0IGk9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LG1VKTtpZighbShpKSlyZXR1cm4gYS5jbG9uZSh0LHIpO2xldCBzPVdkLmdldEhlaWdodChpLmhlaWdodCxuLG8pO3JldHVybiBhLmZyb21SYWRpYW5zKGkubG9uZ2l0dWRlLGkubGF0aXR1ZGUscyxlLHIpfTtlMj1XZH0pO3ZhciBoVSxQcixvMj0kKCgpPT57aFU9e05PTkU6MCxCSVRTMTI6MX0sUHI9T2JqZWN0LmZyZWV6ZShoVSl9KTtmdW5jdGlvbiBJbyh0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1Qci5OT05FLHAsZDtpZihtKGUpJiZtKG4pJiZtKG8pJiZtKHIpKXtsZXQgaD1lLm1pbmltdW0sXz1lLm1heGltdW0sZz1hLnN1YnRyYWN0KF8saCxfVSksYj1vLW47TWF0aC5tYXgoYS5tYXhpbXVtQ29tcG9uZW50KGcpLGIpPGdVLTE/bD1Qci5CSVRTMTI6bD1Qci5OT05FLHA9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHIsbmV3IHN0KTtsZXQgTz1hLm5lZ2F0ZShoLE9jKTtzdC5tdWx0aXBseShzdC5mcm9tVHJhbnNsYXRpb24oTyxYZCkscCxwKTtsZXQgRT1PYztFLng9MS9nLngsRS55PTEvZy55LEUuej0xL2cueixzdC5tdWx0aXBseShzdC5mcm9tU2NhbGUoRSxYZCkscCxwKSxkPXN0LmNsb25lKHIpLHN0LnNldFRyYW5zbGF0aW9uKGQsYS5aRVJPLGQpLHI9c3QuY2xvbmUocixuZXcgc3QpO2xldCBUPXN0LmZyb21UcmFuc2xhdGlvbihoLFhkKSx4PXN0LmZyb21TY2FsZShnLHlVKSxNPXN0Lm11bHRpcGx5KFQseCxYZCk7c3QubXVsdGlwbHkocixNLHIpLHN0Lm11bHRpcGx5KGQsTSxkKX10aGlzLnF1YW50aXphdGlvbj1sLHRoaXMubWluaW11bUhlaWdodD1uLHRoaXMubWF4aW11bUhlaWdodD1vLHRoaXMuY2VudGVyPWEuY2xvbmUodCksdGhpcy50b1NjYWxlZEVOVT1wLHRoaXMuZnJvbVNjYWxlZEVOVT1yLHRoaXMubWF0cml4PWQsdGhpcy5oYXNWZXJ0ZXhOb3JtYWxzPWksdGhpcy5oYXNXZWJNZXJjYXRvclQ9cz8/ITEsdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPWY/PyExLHRoaXMuZXhhZ2dlcmF0aW9uPXU/PzEsdGhpcy5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD1jPz8wLHRoaXMuc3RyaWRlPTAsdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsPTAsdGhpcy5fb2Zmc2V0VmVydGV4Tm9ybWFsPTAsdGhpcy5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cygpfXZhciBPYyxfVSxNcixYZCx5VSxnVSxBVSxyMixZZCwkZCxNcyxhdT0kKCgpPT57ZnMoKTtrZSgpO0R0KCk7RGUoKTtmdCgpO0t0KCk7a24oKTtuMigpO28yKCk7T2M9bmV3IGEsX1U9bmV3IGEsTXI9bmV3IEosWGQ9bmV3IHN0LHlVPW5ldyBzdCxnVT1NYXRoLnBvdygyLDEyKTtJby5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMsZil7bGV0IHU9by54LGM9by55O2lmKHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyKXtuPXN0Lm11bHRpcGx5QnlQb2ludCh0aGlzLnRvU2NhbGVkRU5VLG4sT2MpLG4ueD1QLmNsYW1wKG4ueCwwLDEpLG4ueT1QLmNsYW1wKG4ueSwwLDEpLG4uej1QLmNsYW1wKG4ueiwwLDEpO2xldCBsPXRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQscD1QLmNsYW1wKChyLXRoaXMubWluaW11bUhlaWdodCkvbCwwLDEpO0ouZnJvbUVsZW1lbnRzKG4ueCxuLnksTXIpO2xldCBkPW5uLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKE1yKTtKLmZyb21FbGVtZW50cyhuLnoscCxNcik7bGV0IGg9bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoTXIpO0ouZnJvbUVsZW1lbnRzKHUsYyxNcik7bGV0IF89bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoTXIpO2lmKHRbZSsrXT1kLHRbZSsrXT1oLHRbZSsrXT1fLHRoaXMuaGFzV2ViTWVyY2F0b3JUKXtKLmZyb21FbGVtZW50cyhzLDAsTXIpO2xldCBnPW5uLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKE1yKTt0W2UrK109Z319ZWxzZSBhLnN1YnRyYWN0KG4sdGhpcy5jZW50ZXIsT2MpLHRbZSsrXT1PYy54LHRbZSsrXT1PYy55LHRbZSsrXT1PYy56LHRbZSsrXT1yLHRbZSsrXT11LHRbZSsrXT1jLHRoaXMuaGFzV2ViTWVyY2F0b3JUJiYodFtlKytdPXMpO3JldHVybiB0aGlzLmhhc1ZlcnRleE5vcm1hbHMmJih0W2UrK109bm4ub2N0UGFja0Zsb2F0KGkpKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJih0W2UrK109Zi54LHRbZSsrXT1mLnksdFtlKytdPWYueiksZX07QVU9bmV3IGEscjI9bmV3IGE7SW8ucHJvdG90eXBlLmFkZEdlb2RldGljU3VyZmFjZU5vcm1hbHM9ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IG89dGhpcy5zdHJpZGUscj10Lmxlbmd0aC9vO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMCx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IGk9dGhpcy5zdHJpZGU7Zm9yKGxldCBzPTA7czxyO3MrKyl7Zm9yKGxldCBsPTA7bDxvO2wrKyl7bGV0IHA9cypvK2wsZD1zKmkrbDtlW2RdPXRbcF19bGV0IGY9dGhpcy5kZWNvZGVQb3NpdGlvbihlLHMsQVUpLHU9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZixyMiksYz1zKmkrdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsO2VbY109dS54LGVbYysxXT11LnksZVtjKzJdPXUuen19O0lvLnByb3RvdHlwZS5yZW1vdmVHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IG49dGhpcy5zdHJpZGUsbz10Lmxlbmd0aC9uO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMSx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IHI9dGhpcy5zdHJpZGU7Zm9yKGxldCBpPTA7aTxvO2krKylmb3IobGV0IHM9MDtzPHI7cysrKXtsZXQgZj1pKm4rcyx1PWkqcitzO2VbdV09dFtmXX19O0lvLnByb3RvdHlwZS5kZWNvZGVQb3NpdGlvbj1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IGEpLGUqPXRoaXMuc3RyaWRlLHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyKXtsZXQgbz1ubi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZV0sTXIpO24ueD1vLngsbi55PW8ueTtsZXQgcj1ubi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSsxXSxNcik7cmV0dXJuIG4uej1yLngsc3QubXVsdGlwbHlCeVBvaW50KHRoaXMuZnJvbVNjYWxlZEVOVSxuLG4pfXJldHVybiBuLng9dFtlXSxuLnk9dFtlKzFdLG4uej10W2UrMl0sYS5hZGQobix0aGlzLmNlbnRlcixuKX07SW8ucHJvdG90eXBlLmdldEV4YWdnZXJhdGVkUG9zaXRpb249ZnVuY3Rpb24odCxlLG4pe249dGhpcy5kZWNvZGVQb3NpdGlvbih0LGUsbik7bGV0IG89dGhpcy5leGFnZ2VyYXRpb24scj10aGlzLmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0O2lmKG8hPT0xJiZ0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMpe2xldCBzPXRoaXMuZGVjb2RlR2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsZSxyMiksZj10aGlzLmRlY29kZUhlaWdodCh0LGUpLHU9ZTIuZ2V0SGVpZ2h0KGYsbyxyKS1mO24ueCs9cy54KnUsbi55Kz1zLnkqdSxuLnorPXMueip1fXJldHVybiBufTtJby5wcm90b3R5cGUuZGVjb2RlVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbShuKXx8KG49bmV3IEopLGUqPXRoaXMuc3RyaWRlLHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyP25uLmRlY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXModFtlKzJdLG4pOkouZnJvbUVsZW1lbnRzKHRbZSs0XSx0W2UrNV0sbil9O0lvLnByb3RvdHlwZS5kZWNvZGVIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1Qci5CSVRTMTI/bm4uZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrMV0sTXIpLnkqKHRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQpK3RoaXMubWluaW11bUhlaWdodDp0W2UrM119O0lvLnByb3RvdHlwZS5kZWNvZGVXZWJNZXJjYXRvclQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1Qci5CSVRTMTI/bm4uZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrM10sTXIpLng6dFtlKzZdfTtJby5wcm90b3R5cGUuZ2V0T2N0RW5jb2RlZE5vcm1hbD1mdW5jdGlvbih0LGUsbil7ZT1lKnRoaXMuc3RyaWRlK3RoaXMuX29mZnNldFZlcnRleE5vcm1hbDtsZXQgbz10W2VdLzI1NixyPU1hdGguZmxvb3IobyksaT0oby1yKSoyNTY7cmV0dXJuIEouZnJvbUVsZW1lbnRzKHIsaSxuKX07SW8ucHJvdG90eXBlLmRlY29kZUdlb2RldGljU3VyZmFjZU5vcm1hbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9ZSp0aGlzLnN0cmlkZSt0aGlzLl9vZmZzZXRHZW9kZXRpY1N1cmZhY2VOb3JtYWwsbi54PXRbZV0sbi55PXRbZSsxXSxuLno9dFtlKzJdLG59O0lvLnByb3RvdHlwZS5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cz1mdW5jdGlvbigpe2xldCB0PTA7c3dpdGNoKHRoaXMucXVhbnRpemF0aW9uKXtjYXNlIFByLkJJVFMxMjp0Kz0zO2JyZWFrO2RlZmF1bHQ6dCs9Nn10aGlzLmhhc1dlYk1lcmNhdG9yVCYmKHQrPTEpLHRoaXMuaGFzVmVydGV4Tm9ybWFscyYmKHRoaXMuX29mZnNldFZlcnRleE5vcm1hbD10LHQrPTEpLHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscyYmKHRoaXMuX29mZnNldEdlb2RldGljU3VyZmFjZU5vcm1hbD10LHQrPTMpLHRoaXMuc3RyaWRlPXR9O1lkPXtwb3NpdGlvbjNEQW5kSGVpZ2h0OjAsdGV4dHVyZUNvb3JkQW5kRW5jb2RlZE5vcm1hbHM6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn0sJGQ9e2NvbXByZXNzZWQwOjAsY29tcHJlc3NlZDE6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn07SW8ucHJvdG90eXBlLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7bGV0IGU9ZXQuRkxPQVQsbj1ldC5nZXRTaXplSW5CeXRlcyhlKSxvPXRoaXMuc3RyaWRlKm4scj0wLGk9W107ZnVuY3Rpb24gcyhmLHUpe2kucHVzaCh7aW5kZXg6Zix2ZXJ0ZXhCdWZmZXI6dCxjb21wb25lbnREYXRhdHlwZTplLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6dSxvZmZzZXRJbkJ5dGVzOnIsc3RyaWRlSW5CeXRlczpvfSkscis9dSpufWlmKHRoaXMucXVhbnRpemF0aW9uPT09UHIuTk9ORSl7cyhZZC5wb3NpdGlvbjNEQW5kSGVpZ2h0LDQpO2xldCBmPTI7Zis9dGhpcy5oYXNXZWJNZXJjYXRvclQ/MTowLGYrPXRoaXMuaGFzVmVydGV4Tm9ybWFscz8xOjAscyhZZC50ZXh0dXJlQ29vcmRBbmRFbmNvZGVkTm9ybWFscyxmKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnMoWWQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfWVsc2V7bGV0IGY9dGhpcy5oYXNXZWJNZXJjYXRvclR8fHRoaXMuaGFzVmVydGV4Tm9ybWFscyx1PXRoaXMuaGFzV2ViTWVyY2F0b3JUJiZ0aGlzLmhhc1ZlcnRleE5vcm1hbHM7cygkZC5jb21wcmVzc2VkMCxmPzQ6MyksdSYmcygkZC5jb21wcmVzc2VkMSwxKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnMoJGQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfXJldHVybiBpfTtJby5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVhbnRpemF0aW9uPT09UHIuTk9ORT9ZZDokZH07SW8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpfHwoZT1uZXcgSW8pLGUucXVhbnRpemF0aW9uPXQucXVhbnRpemF0aW9uLGUubWluaW11bUhlaWdodD10Lm1pbmltdW1IZWlnaHQsZS5tYXhpbXVtSGVpZ2h0PXQubWF4aW11bUhlaWdodCxlLmNlbnRlcj1hLmNsb25lKHQuY2VudGVyKSxlLnRvU2NhbGVkRU5VPXN0LmNsb25lKHQudG9TY2FsZWRFTlUpLGUuZnJvbVNjYWxlZEVOVT1zdC5jbG9uZSh0LmZyb21TY2FsZWRFTlUpLGUubWF0cml4PXN0LmNsb25lKHQubWF0cml4KSxlLmhhc1ZlcnRleE5vcm1hbHM9dC5oYXNWZXJ0ZXhOb3JtYWxzLGUuaGFzV2ViTWVyY2F0b3JUPXQuaGFzV2ViTWVyY2F0b3JULGUuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz10Lmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMsZS5leGFnZ2VyYXRpb249dC5leGFnZ2VyYXRpb24sZS5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD10LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0LGUuX2NhbGN1bGF0ZVN0cmlkZUFuZE9mZnNldHMoKSxlfTtNcz1Jb30pO3ZhciBsZz17fTtsZShsZyx7ZGVmYXVsdDooKT0+eFV9KTtmdW5jdGlvbiBmdSh0LGUsbil7bj1uPz9QO2xldCBvPXQubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bzsrK3IpaWYobi5lcXVhbHNFcHNpbG9uKHRbcl0sZSxQLkVQU0lMT04xMikpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gVFUodCxlKXt0LmVsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkKSx0LnJlY3RhbmdsZT1OdC5jbG9uZSh0LnJlY3RhbmdsZSk7bGV0IG49U1UodC5idWZmZXIsdC5yZWxhdGl2ZVRvQ2VudGVyLHQuZWxsaXBzb2lkLHQucmVjdGFuZ2xlLHQubmF0aXZlUmVjdGFuZ2xlLHQuZXhhZ2dlcmF0aW9uLHQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsdC5za2lydEhlaWdodCx0LmluY2x1ZGVXZWJNZXJjYXRvclQsdC5uZWdhdGl2ZUFsdGl0dWRlRXhwb25lbnRCaWFzLHQubmVnYXRpdmVFbGV2YXRpb25UaHJlc2hvbGQpLG89bi52ZXJ0aWNlcztlLnB1c2goby5idWZmZXIpO2xldCByPW4uaW5kaWNlcztyZXR1cm4gZS5wdXNoKHIuYnVmZmVyKSx7dmVydGljZXM6by5idWZmZXIsaW5kaWNlczpyLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6bi5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDpuLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDpuLm1heGltdW1IZWlnaHQsYm91bmRpbmdTcGhlcmUzRDpuLmJvdW5kaW5nU3BoZXJlM0Qsb3JpZW50ZWRCb3VuZGluZ0JveDpuLm9yaWVudGVkQm91bmRpbmdCb3gsb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6bi5vY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZSxlbmNvZGluZzpuLmVuY29kaW5nLHZlcnRleENvdW50V2l0aG91dFNraXJ0czpuLnZlcnRleENvdW50V2l0aG91dFNraXJ0cyxpbmRleENvdW50V2l0aG91dFNraXJ0czpuLmluZGV4Q291bnRXaXRob3V0U2tpcnRzLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOm4ud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsc291dGhJbmRpY2VzRWFzdFRvV2VzdDpuLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsZWFzdEluZGljZXNOb3J0aFRvU291dGg6bi5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxub3J0aEluZGljZXNXZXN0VG9FYXN0Om4ubm9ydGhJbmRpY2VzV2VzdFRvRWFzdH19ZnVuY3Rpb24gU1UodCxlLG4sbyxyLGkscyxmLHUsYyxsKXtsZXQgcCxkLGgsXyxnLGI7bShvKT8ocD1vLndlc3QsZD1vLnNvdXRoLGg9by5lYXN0LF89by5ub3J0aCxnPW8ud2lkdGgsYj1vLmhlaWdodCk6KHA9UC50b1JhZGlhbnMoci53ZXN0KSxkPVAudG9SYWRpYW5zKHIuc291dGgpLGg9UC50b1JhZGlhbnMoci5lYXN0KSxfPVAudG9SYWRpYW5zKHIubm9ydGgpLGc9UC50b1JhZGlhbnMoby53aWR0aCksYj1QLnRvUmFkaWFucyhvLmhlaWdodCkpO2xldCB3PVtkLF9dLE89W3AsaF0sRT0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShlLG4pLFQ9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKEUsUlUpLHgsTTt1JiYoeD1yby5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKGQpLE09MS8ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShfKS14KSk7bGV0IEY9aSE9PTEsST1uZXcgRGF0YVZpZXcodCksdj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT1PVTtBLng9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEEueT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQS56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgUz1FVTtTLng9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFMueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksUy56PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtsZXQgQz0wLEw9MCx6PTAsaixrO2ZvcihrPTA7azw0Oysrayl7bGV0IG9lPUM7aj1JLmdldFVpbnQzMihvZSwhMCksb2UrPXVnO2xldCBZdD1QLnRvUmFkaWFucyhJLmdldEZsb2F0NjQob2UsITApKjE4MCk7b2UrPUVjLGZ1KE8sWXQpPT09LTEmJk8ucHVzaChZdCk7bGV0IHplPVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChvZSwhMCkqMTgwKTtvZSs9RWMsZnUodyx6ZSk9PT0tMSYmdy5wdXNoKHplKSxvZSs9MipFYztsZXQgZG49SS5nZXRJbnQzMihvZSwhMCk7b2UrPVpkLEwrPWRuLGRuPUkuZ2V0SW50MzIob2UsITApLHorPWRuKjMsQys9ait1Z31sZXQgcT1bXSxXPVtdLFI9bmV3IEFycmF5KEwpLG50PW5ldyBBcnJheShMKSxhdD1uZXcgQXJyYXkoTCksbHQ9dT9uZXcgQXJyYXkoTCk6W10sX3Q9Rj9uZXcgQXJyYXkoTCk6W10sb3Q9bmV3IEFycmF5KHopLFB0PVtdLGd0PVtdLFJ0PVtdLGR0PVtdLHJ0PTAseHQ9MDtmb3IoQz0wLGs9MDtrPDQ7KytrKXtqPUkuZ2V0VWludDMyKEMsITApLEMrPXVnO2xldCBvZT1DLFl0PVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChDLCEwKSoxODApO0MrPUVjO2xldCB6ZT1QLnRvUmFkaWFucyhJLmdldEZsb2F0NjQoQywhMCkqMTgwKTtDKz1FYztsZXQgZG49UC50b1JhZGlhbnMoSS5nZXRGbG9hdDY0KEMsITApKjE4MCksc249ZG4qLjU7Qys9RWM7bGV0IG1uPVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChDLCEwKSoxODApLGxvPW1uKi41O0MrPUVjO2xldCBxbj1JLmdldEludDMyKEMsITApO0MrPVpkO2xldCBRZT1JLmdldEludDMyKEMsITApO0MrPVpkLEMrPVpkO2xldCBjbj1uZXcgQXJyYXkocW4pO2ZvcihsZXQgaG49MDtobjxxbjsrK2huKXtsZXQgcG89WXQrSS5nZXRVaW50OChDKyspKmRuO3ZvLmxvbmdpdHVkZT1wbztsZXQgS249emUrSS5nZXRVaW50OChDKyspKm1uO3ZvLmxhdGl0dWRlPUtuO2xldCBXbj1JLmdldEZsb2F0MzIoQywhMCk7aWYoQys9d1UsV24hPT0wJiZXbjxsJiYoV24qPS1NYXRoLnBvdygyLGMpKSxXbio9NjM3MTAxMCx2by5oZWlnaHQ9V24sZnUoTyxwbykhPT0tMXx8ZnUodyxLbikhPT0tMSl7bGV0IERuPWZ1KHEsdm8sY3QpO2lmKERuPT09LTEpcS5wdXNoKGN0LmNsb25lKHZvKSksVy5wdXNoKHJ0KTtlbHNle2NuW2huXT1XW0RuXTtjb250aW51ZX19Y25baG5dPXJ0LE1hdGguYWJzKHBvLXApPHNuP1B0LnB1c2goe2luZGV4OnJ0LGNhcnRvZ3JhcGhpYzpjdC5jbG9uZSh2byl9KTpNYXRoLmFicyhwby1oKTxzbj9SdC5wdXNoKHtpbmRleDpydCxjYXJ0b2dyYXBoaWM6Y3QuY2xvbmUodm8pfSk6TWF0aC5hYnMoS24tZCk8bG8/Z3QucHVzaCh7aW5kZXg6cnQsY2FydG9ncmFwaGljOmN0LmNsb25lKHZvKX0pOk1hdGguYWJzKEtuLV8pPGxvJiZkdC5wdXNoKHtpbmRleDpydCxjYXJ0b2dyYXBoaWM6Y3QuY2xvbmUodm8pfSksdj1NYXRoLm1pbihXbix2KSxCPU1hdGgubWF4KFduLEIpLGF0W3J0XT1XbjtsZXQgbW89bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih2byk7aWYoUltydF09bW8sdSYmKGx0W3J0XT0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShLbikteCkqTSksRil7bGV0IERuPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKG1vKTtfdFtydF09RG59c3QubXVsdGlwbHlCeVBvaW50KFQsbW8sVWEpLGEubWluaW11bUJ5Q29tcG9uZW50KFVhLEEsQSksYS5tYXhpbXVtQnlDb21wb25lbnQoVWEsUyxTKTtsZXQgamU9KHBvLXApLyhoLXApO2plPVAuY2xhbXAoamUsMCwxKTtsZXQgRmU9KEtuLWQpLyhfLWQpO0ZlPVAuY2xhbXAoRmUsMCwxKSxudFtydF09bmV3IEooamUsRmUpLCsrcnR9bGV0IFdlPVFlKjM7Zm9yKGxldCBobj0wO2huPFdlOysraG4sKyt4dClvdFt4dF09Y25bSS5nZXRVaW50MTYoQywhMCldLEMrPWJVO2lmKGohPT1DLW9lKXRocm93IG5ldyBBZSgiSW52YWxpZCB0ZXJyYWluIHRpbGUuIil9Ui5sZW5ndGg9cnQsbnQubGVuZ3RoPXJ0LGF0Lmxlbmd0aD1ydCx1JiYobHQubGVuZ3RoPXJ0KSxGJiYoX3QubGVuZ3RoPXJ0KTtsZXQgR3Q9cnQscGU9eHQscmU9e2hNaW46dixsYXN0Qm9yZGVyUG9pbnQ6dm9pZCAwLHNraXJ0SGVpZ2h0OmYsdG9FTlU6VCxlbGxpcHNvaWQ6bixtaW5pbXVtOkEsbWF4aW11bTpTfTtQdC5zb3J0KGZ1bmN0aW9uKG9lLFl0KXtyZXR1cm4gWXQuY2FydG9ncmFwaGljLmxhdGl0dWRlLW9lLmNhcnRvZ3JhcGhpYy5sYXRpdHVkZX0pLGd0LnNvcnQoZnVuY3Rpb24ob2UsWXQpe3JldHVybiBvZS5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLVl0LmNhcnRvZ3JhcGhpYy5sb25naXR1ZGV9KSxSdC5zb3J0KGZ1bmN0aW9uKG9lLFl0KXtyZXR1cm4gb2UuY2FydG9ncmFwaGljLmxhdGl0dWRlLVl0LmNhcnRvZ3JhcGhpYy5sYXRpdHVkZX0pLGR0LnNvcnQoZnVuY3Rpb24ob2UsWXQpe3JldHVybiBZdC5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLW9lLmNhcnRvZ3JhcGhpYy5sb25naXR1ZGV9KTtsZXQgZGU9MWUtNTtpZihRZChSLGF0LG50LGx0LF90LG90LHJlLFB0LC1kZSpnLCEwLC1kZSpiKSxRZChSLGF0LG50LGx0LF90LG90LHJlLGd0LC1kZSpiLCExKSxRZChSLGF0LG50LGx0LF90LG90LHJlLFJ0LGRlKmcsITAsZGUqYiksUWQoUixhdCxudCxsdCxfdCxvdCxyZSxkdCxkZSpiLCExKSxQdC5sZW5ndGg+MCYmZHQubGVuZ3RoPjApe2xldCBvZT1QdFswXS5pbmRleCxZdD1HdCx6ZT1kdFtkdC5sZW5ndGgtMV0uaW5kZXgsZG49Ui5sZW5ndGgtMTtvdC5wdXNoKHplLGRuLFl0LFl0LG9lLHplKX1MPVIubGVuZ3RoO2xldCBmZT1BdC5mcm9tUG9pbnRzKFIpLFp0O20obykmJihadD1Dby5mcm9tUmVjdGFuZ2xlKG8sdixCLG4pKTtsZXQgTmU9bmV3IFBzKG4pLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZChlLFIsdiksZ2U9bmV3IERpKEEsUyxlKSxFZT1uZXcgTXMoZSxnZSxyZS5oTWluLEIsRSwhMSx1LEYsaSxzKSx1bj1uZXcgRmxvYXQzMkFycmF5KEwqRWUuc3RyaWRlKSxWZT0wO2ZvcihsZXQgb2U9MDtvZTxMOysrb2UpVmU9RWUuZW5jb2RlKHVuLFZlLFJbb2VdLG50W29lXSxhdFtvZV0sdm9pZCAwLGx0W29lXSxfdFtvZV0pO2xldCBiZT1QdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxsbj1ndC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxwbj1SdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxFbj1kdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKTtyZXR1cm4gbG4udW5zaGlmdChwbltwbi5sZW5ndGgtMV0pLGxuLnB1c2goYmVbMF0pLEVuLnVuc2hpZnQoYmVbYmUubGVuZ3RoLTFdKSxFbi5wdXNoKHBuWzBdKSx7dmVydGljZXM6dW4saW5kaWNlczpuZXcgVWludDE2QXJyYXkob3QpLG1heGltdW1IZWlnaHQ6QixtaW5pbXVtSGVpZ2h0OnYsZW5jb2Rpbmc6RWUsYm91bmRpbmdTcGhlcmUzRDpmZSxvcmllbnRlZEJvdW5kaW5nQm94Olp0LG9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlOk5lLHZlcnRleENvdW50V2l0aG91dFNraXJ0czpHdCxpbmRleENvdW50V2l0aG91dFNraXJ0czpwZSx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpiZSxzb3V0aEluZGljZXNFYXN0VG9XZXN0OmxuLGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOnBuLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6RW59fWZ1bmN0aW9uIFFkKHQsZSxuLG8scixpLHMsZix1LGMsbCl7bGV0IHA9Zi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxwOysrZCl7bGV0IGg9ZltkXSxfPWguY2FydG9ncmFwaGljLGc9aC5pbmRleCxiPXQubGVuZ3RoLHc9Xy5sb25naXR1ZGUsTz1fLmxhdGl0dWRlO089UC5jbGFtcChPLC1QLlBJX09WRVJfVFdPLFAuUElfT1ZFUl9UV08pO2xldCBFPV8uaGVpZ2h0LXMuc2tpcnRIZWlnaHQ7cy5oTWluPU1hdGgubWluKHMuaE1pbixFKSxjdC5mcm9tUmFkaWFucyh3LE8sRSx2byksYyYmKHZvLmxvbmdpdHVkZSs9dSksYz9kPT09cC0xP3ZvLmxhdGl0dWRlKz1sOmQ9PT0wJiYodm8ubGF0aXR1ZGUtPWwpOnZvLmxhdGl0dWRlKz11O2xldCBUPXMuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHZvKTt0LnB1c2goVCksZS5wdXNoKEUpLG4ucHVzaChKLmNsb25lKG5bZ10pKSxvLmxlbmd0aD4wJiZvLnB1c2gob1tnXSksci5sZW5ndGg+MCYmci5wdXNoKHJbZ10pLHN0Lm11bHRpcGx5QnlQb2ludChzLnRvRU5VLFQsVWEpO2xldCB4PXMubWluaW11bSxNPXMubWF4aW11bTthLm1pbmltdW1CeUNvbXBvbmVudChVYSx4LHgpLGEubWF4aW11bUJ5Q29tcG9uZW50KFVhLE0sTSk7bGV0IE49cy5sYXN0Qm9yZGVyUG9pbnQ7aWYobShOKSl7bGV0IEY9Ti5pbmRleDtpLnB1c2goRixiLTEsYixiLGcsRil9cy5sYXN0Qm9yZGVyUG9pbnQ9aH19dmFyIGJVLFpkLHVnLHdVLEVjLHZvLFVhLE9VLEVVLFJVLHhVLHBnPSQoKCk9PntQZigpO3ZlKCk7a2UoKTtEdCgpO0llKCk7ZnQoKTskdCgpO2N1KCk7S3QoKTtrbigpO2RhKCk7VG4oKTt0aSgpO2F1KCk7YXMoKTtzYygpO1puKCk7YlU9VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsWmQ9SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCx1Zz1VaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCx3VT1GbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsRWM9RmxvYXQ2NEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO3ZvPW5ldyBjdCxVYT1uZXcgYSxPVT1uZXcgYSxFVT1uZXcgYSxSVT1uZXcgc3Q7eFU9VWUoVFUpfSk7dmFyIENVLGkyLHMyPSQoKCk9PntDVT17Tk9ORTowLExFUkM6MX0saTI9T2JqZWN0LmZyZWV6ZShDVSl9KTt2YXIgeWksZGcsUFUsTVUsTlUsYzIsYTI9JCgoKT0+e1BmKCk7dmUoKTtrZSgpO0R0KCk7ZnQoKTtIdCgpOyR0KCk7Y3UoKTtLdCgpO2tuKCk7ZGEoKTtUbigpO2F1KCk7YXMoKTtzYygpO3lpPXt9O3lpLkRFRkFVTFRfU1RSVUNUVVJFPU9iamVjdC5mcmVlemUoe2hlaWdodFNjYWxlOjEsaGVpZ2h0T2Zmc2V0OjAsZWxlbWVudHNQZXJIZWlnaHQ6MSxzdHJpZGU6MSxlbGVtZW50TXVsdGlwbGllcjoyNTYsaXNCaWdFbmRpYW46ITF9KTtkZz1uZXcgYSxQVT1uZXcgc3QsTVU9bmV3IGEsTlU9bmV3IGE7eWkuY29tcHV0ZVZlcnRpY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHwhbSh0LmhlaWdodG1hcCkpdGhyb3cgbmV3IEQoIm9wdGlvbnMuaGVpZ2h0bWFwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQud2lkdGgpfHwhbSh0LmhlaWdodCkpdGhyb3cgbmV3IEQoIm9wdGlvbnMud2lkdGggYW5kIG9wdGlvbnMuaGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZighbSh0Lm5hdGl2ZVJlY3RhbmdsZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMubmF0aXZlUmVjdGFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuc2tpcnRIZWlnaHQpKXRocm93IG5ldyBEKCJvcHRpb25zLnNraXJ0SGVpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBlPU1hdGguY29zLG49TWF0aC5zaW4sbz1NYXRoLnNxcnQscj1NYXRoLmF0YW4saT1NYXRoLmV4cCxzPVAuUElfT1ZFUl9UV08sZj1QLnRvUmFkaWFucyx1PXQuaGVpZ2h0bWFwLGM9dC53aWR0aCxsPXQuaGVpZ2h0LHA9dC5za2lydEhlaWdodCxkPXA+MCxoPXQuaXNHZW9ncmFwaGljPz8hMCxfPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsZz0xL18ubWF4aW11bVJhZGl1cyxiPU50LmNsb25lKHQubmF0aXZlUmVjdGFuZ2xlKSx3PU50LmNsb25lKHQucmVjdGFuZ2xlKSxPLEUsVCx4O20odyk/KE89dy53ZXN0LEU9dy5zb3V0aCxUPXcuZWFzdCx4PXcubm9ydGgpOmg/KE89ZihiLndlc3QpLEU9ZihiLnNvdXRoKSxUPWYoYi5lYXN0KSx4PWYoYi5ub3J0aCkpOihPPWIud2VzdCpnLEU9cy0yKnIoaSgtYi5zb3V0aCpnKSksVD1iLmVhc3QqZyx4PXMtMipyKGkoLWIubm9ydGgqZykpKTtsZXQgTT10LnJlbGF0aXZlVG9DZW50ZXIsTj1tKE0pO009Tj9NOmEuWkVSTztsZXQgRj10LmluY2x1ZGVXZWJNZXJjYXRvclQ/PyExLEk9dC5leGFnZ2VyYXRpb24/PzEsdj10LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0Pz8wLEE9SSE9PTEsUz10LnN0cnVjdHVyZT8/eWkuREVGQVVMVF9TVFJVQ1RVUkUsQz1TLmhlaWdodFNjYWxlPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5oZWlnaHRTY2FsZSxMPVMuaGVpZ2h0T2Zmc2V0Pz95aS5ERUZBVUxUX1NUUlVDVFVSRS5oZWlnaHRPZmZzZXQsej1TLmVsZW1lbnRzUGVySGVpZ2h0Pz95aS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50c1BlckhlaWdodCxqPVMuc3RyaWRlPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5zdHJpZGUsaz1TLmVsZW1lbnRNdWx0aXBsaWVyPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50TXVsdGlwbGllcixxPVMuaXNCaWdFbmRpYW4/P3lpLkRFRkFVTFRfU1RSVUNUVVJFLmlzQmlnRW5kaWFuLFc9TnQuY29tcHV0ZVdpZHRoKGIpLFI9TnQuY29tcHV0ZUhlaWdodChiKSxudD1XLyhjLTEpLGF0PVIvKGwtMSk7aHx8KFcqPWcsUio9Zyk7bGV0IGx0PV8ucmFkaWlTcXVhcmVkLF90PWx0Lngsb3Q9bHQueSxQdD1sdC56LGd0PTY1NTM2LFJ0PS02NTUzNixkdD0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShNLF8pLHJ0PXN0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihkdCxQVSkseHQsR3Q7RiYmKHh0PXJvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoRSksR3Q9MS8ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZSh4KS14dCkpO2xldCBwZT1NVTtwZS54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwZS55PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwZS56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgcmU9TlU7cmUueD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkscmUueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkscmUuej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IGRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxmZT1jKmwsWnQ9cD4wP2MqMitsKjI6MCxRdD1mZStadCxOZT1uZXcgQXJyYXkoUXQpLGdlPW5ldyBBcnJheShRdCksRWU9bmV3IEFycmF5KFF0KSx1bj1GP25ldyBBcnJheShRdCk6W10sVmU9QT9uZXcgQXJyYXkoUXQpOltdLGJlPTAsbG49bCxwbj0wLEVuPWM7ZCYmKC0tYmUsKytsbiwtLXBuLCsrRW4pO2xldCBvZT0xZS01O2ZvcihsZXQgUWU9YmU7UWU8bG47KytRZSl7bGV0IGNuPVFlO2NuPDAmJihjbj0wKSxjbj49bCYmKGNuPWwtMSk7bGV0IFdlPWIubm9ydGgtYXQqY247aD9XZT1mKFdlKTpXZT1zLTIqcihpKC1XZSpnKSk7bGV0IGhuPShXZS1FKS8oeC1FKTtobj1QLmNsYW1wKGhuLDAsMSk7bGV0IHBvPVFlPT09YmUsS249UWU9PT1sbi0xO3A+MCYmKHBvP1dlKz1vZSpSOktuJiYoV2UtPW9lKlIpKTtsZXQgV249ZShXZSksbW89bihXZSksamU9UHQqbW8sRmU7RiYmKEZlPShyby5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKFdlKS14dCkqR3QpO2ZvcihsZXQgRG49cG47RG48RW47KytEbil7bGV0IFhuPURuO1huPDAmJihYbj0wKSxYbj49YyYmKFhuPWMtMSk7bGV0IEhvPWNuKihjKmopK1huKmoscm47aWYoej09PTEpcm49dVtIb107ZWxzZXtybj0wO2xldCBobztpZihxKWZvcihobz0wO2hvPHo7Kytobylybj1ybiprK3VbSG8raG9dO2Vsc2UgZm9yKGhvPXotMTtobz49MDstLWhvKXJuPXJuKmsrdVtIbytob119cm49cm4qQytMLFJ0PU1hdGgubWF4KFJ0LHJuKSxndD1NYXRoLm1pbihndCxybik7bGV0IFJuPWIud2VzdCtudCpYbjtoP1JuPWYoUm4pOlJuPVJuKmc7bGV0IGZyPShSbi1PKS8oVC1PKTtmcj1QLmNsYW1wKGZyLDAsMSk7bGV0IHRvPWNuKmMrWG47aWYocD4wKXtsZXQgaG89RG49PT1wbixGcj1Ebj09PUVuLTEsTmM9cG98fEtufHxob3x8RnI7aWYoKHBvfHxLbikmJihob3x8RnIpKWNvbnRpbnVlO05jJiYocm4tPXAsaG8/KHRvPWZlKyhsLWNuLTEpLFJuLT1vZSpXKTpLbj90bz1mZStsKyhjLVhuLTEpOkZyPyh0bz1mZStsK2MrY24sUm4rPW9lKlcpOnBvJiYodG89ZmUrbCtjK2wrWG4pKX1sZXQgcW89V24qZShSbiksSXI9V24qbihSbiksSXM9X3QqcW8sdnM9b3QqSXIsdnI9MS9vKElzKnFvK3ZzKklyK2plKm1vKSxaaT1Jcyp2cixGcz12cyp2cix3aT1qZSp2cixzbz1uZXcgYTtzby54PVppK3FvKnJuLHNvLnk9RnMrSXIqcm4sc28uej13aSttbypybixzdC5tdWx0aXBseUJ5UG9pbnQocnQsc28sZGcpLGEubWluaW11bUJ5Q29tcG9uZW50KGRnLHBlLHBlKSxhLm1heGltdW1CeUNvbXBvbmVudChkZyxyZSxyZSksZGU9TWF0aC5taW4oZGUscm4pLE5lW3RvXT1zbyxFZVt0b109bmV3IEooZnIsaG4pLGdlW3RvXT1ybixGJiYodW5bdG9dPUZlKSxBJiYoVmVbdG9dPV8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHNvKSl9fWxldCBZdD1BdC5mcm9tUG9pbnRzKE5lKSx6ZTttKHcpJiYoemU9Q28uZnJvbVJlY3RhbmdsZSh3LGd0LFJ0LF8pKTtsZXQgZG47TiYmKGRuPW5ldyBQcyhfKS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludFBvc3NpYmx5VW5kZXJFbGxpcHNvaWQoTSxOZSxndCkpO2xldCBzbj1uZXcgRGkocGUscmUsTSksbW49bmV3IE1zKE0sc24sZGUsUnQsZHQsITEsRixBLEksdiksbG89bmV3IEZsb2F0MzJBcnJheShRdCptbi5zdHJpZGUpLHFuPTA7Zm9yKGxldCBRZT0wO1FlPFF0OysrUWUpcW49bW4uZW5jb2RlKGxvLHFuLE5lW1FlXSxFZVtRZV0sZ2VbUWVdLHZvaWQgMCx1bltRZV0sVmVbUWVdKTtyZXR1cm57dmVydGljZXM6bG8sbWF4aW11bUhlaWdodDpSdCxtaW5pbXVtSGVpZ2h0Omd0LGVuY29kaW5nOm1uLGJvdW5kaW5nU3BoZXJlM0Q6WXQsb3JpZW50ZWRCb3VuZGluZ0JveDp6ZSxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpkbn19O2MyPXlpfSk7dmFyIGYyPVluKChXYXQsSmQpPT57LyogQ29weXJpZ2h0IDIwMTUtMjAxOCBFc3JpLiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIEBwcmVzZXJ2ZSAqLyhmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHI9e307ci5kZWZhdWx0Tm9EYXRhVmFsdWU9LTM0MDI3OTk5Mzg3OTAxNDg0ZTIyLHIuZGVjb2RlPWZ1bmN0aW9uKGwscCl7cD1wfHx7fTt2YXIgZD1wLmVuY29kZWRNYXNrRGF0YXx8cC5lbmNvZGVkTWFza0RhdGE9PT1udWxsLGg9dShsLHAuaW5wdXRPZmZzZXR8fDAsZCksXz1wLm5vRGF0YVZhbHVlIT09bnVsbD9wLm5vRGF0YVZhbHVlOnIuZGVmYXVsdE5vRGF0YVZhbHVlLGc9aShoLHAucGl4ZWxUeXBlfHxGbG9hdDMyQXJyYXkscC5lbmNvZGVkTWFza0RhdGEsXyxwLnJldHVybk1hc2spLGI9e3dpZHRoOmgud2lkdGgsaGVpZ2h0OmguaGVpZ2h0LHBpeGVsRGF0YTpnLnJlc3VsdFBpeGVscyxtaW5WYWx1ZTpnLm1pblZhbHVlLG1heFZhbHVlOmgucGl4ZWxzLm1heFZhbHVlLG5vRGF0YVZhbHVlOl99O3JldHVybiBnLnJlc3VsdE1hc2smJihiLm1hc2tEYXRhPWcucmVzdWx0TWFzaykscC5yZXR1cm5FbmNvZGVkTWFzayYmaC5tYXNrJiYoYi5lbmNvZGVkTWFza0RhdGE9aC5tYXNrLmJpdHNldD9oLm1hc2suYml0c2V0Om51bGwpLHAucmV0dXJuRmlsZUluZm8mJihiLmZpbGVJbmZvPXMoaCkscC5jb21wdXRlVXNlZEJpdERlcHRocyYmKGIuZmlsZUluZm8uYml0RGVwdGhzPWYoaCkpKSxifTt2YXIgaT1mdW5jdGlvbihsLHAsZCxoLF8pe3ZhciBnPTAsYj1sLnBpeGVscy5udW1CbG9ja3NYLHc9bC5waXhlbHMubnVtQmxvY2tzWSxPPU1hdGguZmxvb3IobC53aWR0aC9iKSxFPU1hdGguZmxvb3IobC5oZWlnaHQvdyksVD0yKmwubWF4WkVycm9yLHg9TnVtYmVyLk1BWF9WQUxVRSxNO2Q9ZHx8KGwubWFzaz9sLm1hc2suYml0c2V0Om51bGwpO3ZhciBOLEY7Tj1uZXcgcChsLndpZHRoKmwuaGVpZ2h0KSxfJiZkJiYoRj1uZXcgVWludDhBcnJheShsLndpZHRoKmwuaGVpZ2h0KSk7Zm9yKHZhciBJPW5ldyBGbG9hdDMyQXJyYXkoTypFKSx2LEIsQT0wO0E8PXc7QSsrKXt2YXIgUz1BIT09dz9FOmwuaGVpZ2h0JXc7aWYoUyE9PTApZm9yKHZhciBDPTA7Qzw9YjtDKyspe3ZhciBMPUMhPT1iP086bC53aWR0aCViO2lmKEwhPT0wKXt2YXIgej1BKmwud2lkdGgqRStDKk8saj1sLndpZHRoLUwsaz1sLnBpeGVscy5ibG9ja3NbZ10scSxXLFI7ay5lbmNvZGluZzwyPyhrLmVuY29kaW5nPT09MD9xPWsucmF3RGF0YTooYyhrLnN0dWZmZWREYXRhLGsuYml0c1BlclBpeGVsLGsubnVtVmFsaWRQaXhlbHMsay5vZmZzZXQsVCxJLGwucGl4ZWxzLm1heFZhbHVlKSxxPUkpLFc9MCk6ay5lbmNvZGluZz09PTI/Uj0wOlI9ay5vZmZzZXQ7dmFyIG50O2lmKGQpZm9yKEI9MDtCPFM7QisrKXtmb3IoeiY3JiYobnQ9ZFt6Pj4zXSxudDw8PXomNyksdj0wO3Y8TDt2KyspeiY3fHwobnQ9ZFt6Pj4zXSksbnQmMTI4PyhGJiYoRlt6XT0xKSxNPWsuZW5jb2Rpbmc8Mj9xW1crK106Uix4PXg+TT9NOngsTlt6KytdPU0pOihGJiYoRlt6XT0wKSxOW3orK109aCksbnQ8PD0xO3orPWp9ZWxzZSBpZihrLmVuY29kaW5nPDIpZm9yKEI9MDtCPFM7QisrKXtmb3Iodj0wO3Y8TDt2KyspTT1xW1crK10seD14Pk0/TTp4LE5beisrXT1NO3orPWp9ZWxzZSBmb3IoeD14PlI/Ujp4LEI9MDtCPFM7QisrKXtmb3Iodj0wO3Y8TDt2KyspTlt6KytdPVI7eis9an1pZihrLmVuY29kaW5nPT09MSYmVyE9PWsubnVtVmFsaWRQaXhlbHMpdGhyb3ciQmxvY2sgYW5kIE1hc2sgZG8gbm90IG1hdGNoIjtnKyt9fX1yZXR1cm57cmVzdWx0UGl4ZWxzOk4scmVzdWx0TWFzazpGLG1pblZhbHVlOnh9fSxzPWZ1bmN0aW9uKGwpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzpsLmZpbGVJZGVudGlmaWVyU3RyaW5nLGZpbGVWZXJzaW9uOmwuZmlsZVZlcnNpb24saW1hZ2VUeXBlOmwuaW1hZ2VUeXBlLGhlaWdodDpsLmhlaWdodCx3aWR0aDpsLndpZHRoLG1heFpFcnJvcjpsLm1heFpFcnJvcixlb2ZPZmZzZXQ6bC5lb2ZPZmZzZXQsbWFzazpsLm1hc2s/e251bUJsb2Nrc1g6bC5tYXNrLm51bUJsb2Nrc1gsbnVtQmxvY2tzWTpsLm1hc2subnVtQmxvY2tzWSxudW1CeXRlczpsLm1hc2subnVtQnl0ZXMsbWF4VmFsdWU6bC5tYXNrLm1heFZhbHVlfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDpsLnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6bC5waXhlbHMubnVtQmxvY2tzWSxudW1CeXRlczpsLnBpeGVscy5udW1CeXRlcyxtYXhWYWx1ZTpsLnBpeGVscy5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpsLm5vRGF0YVZhbHVlfX19LGY9ZnVuY3Rpb24obCl7Zm9yKHZhciBwPWwucGl4ZWxzLm51bUJsb2Nrc1gqbC5waXhlbHMubnVtQmxvY2tzWSxkPXt9LGg9MDtoPHA7aCsrKXt2YXIgXz1sLnBpeGVscy5ibG9ja3NbaF07Xy5lbmNvZGluZz09PTA/ZC5mbG9hdDMyPSEwOl8uZW5jb2Rpbmc9PT0xP2RbXy5iaXRzUGVyUGl4ZWxdPSEwOmRbMF09ITB9cmV0dXJuIE9iamVjdC5rZXlzKGQpfSx1PWZ1bmN0aW9uKGwscCxkKXt2YXIgaD17fSxfPW5ldyBVaW50OEFycmF5KGwscCwxMCk7aWYoaC5maWxlSWRlbnRpZmllclN0cmluZz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsXyksaC5maWxlSWRlbnRpZmllclN0cmluZy50cmltKCkhPT0iQ250WkltYWdlIil0aHJvdyJVbmV4cGVjdGVkIGZpbGUgaWRlbnRpZmllciBzdHJpbmc6ICIraC5maWxlSWRlbnRpZmllclN0cmluZztwKz0xMDt2YXIgZz1uZXcgRGF0YVZpZXcobCxwLDI0KTtpZihoLmZpbGVWZXJzaW9uPWcuZ2V0SW50MzIoMCwhMCksaC5pbWFnZVR5cGU9Zy5nZXRJbnQzMig0LCEwKSxoLmhlaWdodD1nLmdldFVpbnQzMig4LCEwKSxoLndpZHRoPWcuZ2V0VWludDMyKDEyLCEwKSxoLm1heFpFcnJvcj1nLmdldEZsb2F0NjQoMTYsITApLHArPTI0LCFkKWlmKGc9bmV3IERhdGFWaWV3KGwscCwxNiksaC5tYXNrPXt9LGgubWFzay5udW1CbG9ja3NZPWcuZ2V0VWludDMyKDAsITApLGgubWFzay5udW1CbG9ja3NYPWcuZ2V0VWludDMyKDQsITApLGgubWFzay5udW1CeXRlcz1nLmdldFVpbnQzMig4LCEwKSxoLm1hc2subWF4VmFsdWU9Zy5nZXRGbG9hdDMyKDEyLCEwKSxwKz0xNixoLm1hc2subnVtQnl0ZXM+MCl7dmFyIGI9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGgud2lkdGgqaC5oZWlnaHQvOCkpO2c9bmV3IERhdGFWaWV3KGwscCxoLm1hc2subnVtQnl0ZXMpO3ZhciB3PWcuZ2V0SW50MTYoMCwhMCksTz0yLEU9MDtkb3tpZih3PjApZm9yKDt3LS07KWJbRSsrXT1nLmdldFVpbnQ4KE8rKyk7ZWxzZXt2YXIgVD1nLmdldFVpbnQ4KE8rKyk7Zm9yKHc9LXc7dy0tOyliW0UrK109VH13PWcuZ2V0SW50MTYoTywhMCksTys9Mn13aGlsZShPPGgubWFzay5udW1CeXRlcyk7aWYodyE9PS0zMjc2OHx8RTxiLmxlbmd0aCl0aHJvdyJVbmV4cGVjdGVkIGVuZCBvZiBtYXNrIFJMRSBlbmNvZGluZyI7aC5tYXNrLmJpdHNldD1iLHArPWgubWFzay5udW1CeXRlc31lbHNlKGgubWFzay5udW1CeXRlc3xoLm1hc2subnVtQmxvY2tzWXxoLm1hc2subWF4VmFsdWUpPT09MCYmKGgubWFzay5iaXRzZXQ9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGgud2lkdGgqaC5oZWlnaHQvOCkpKTtnPW5ldyBEYXRhVmlldyhsLHAsMTYpLGgucGl4ZWxzPXt9LGgucGl4ZWxzLm51bUJsb2Nrc1k9Zy5nZXRVaW50MzIoMCwhMCksaC5waXhlbHMubnVtQmxvY2tzWD1nLmdldFVpbnQzMig0LCEwKSxoLnBpeGVscy5udW1CeXRlcz1nLmdldFVpbnQzMig4LCEwKSxoLnBpeGVscy5tYXhWYWx1ZT1nLmdldEZsb2F0MzIoMTIsITApLHArPTE2O3ZhciB4PWgucGl4ZWxzLm51bUJsb2Nrc1gsTT1oLnBpeGVscy5udW1CbG9ja3NZLE49eCsoaC53aWR0aCV4PjA/MTowKSxGPU0rKGguaGVpZ2h0JU0+MD8xOjApO2gucGl4ZWxzLmJsb2Nrcz1uZXcgQXJyYXkoTipGKTtmb3IodmFyIEk9MCx2PTA7djxGO3YrKylmb3IodmFyIEI9MDtCPE47QisrKXt2YXIgQT0wLFM9bC5ieXRlTGVuZ3RoLXA7Zz1uZXcgRGF0YVZpZXcobCxwLE1hdGgubWluKDEwLFMpKTt2YXIgQz17fTtoLnBpeGVscy5ibG9ja3NbSSsrXT1DO3ZhciBMPWcuZ2V0VWludDgoMCk7aWYoQSsrLEMuZW5jb2Rpbmc9TCY2MyxDLmVuY29kaW5nPjMpdGhyb3ciSW52YWxpZCBibG9jayBlbmNvZGluZyAoIitDLmVuY29kaW5nKyIpIjtpZihDLmVuY29kaW5nPT09Mil7cCsrO2NvbnRpbnVlfWlmKEwhPT0wJiZMIT09Mil7aWYoTD4+PTYsQy5vZmZzZXRUeXBlPUwsTD09PTIpQy5vZmZzZXQ9Zy5nZXRJbnQ4KDEpLEErKztlbHNlIGlmKEw9PT0xKUMub2Zmc2V0PWcuZ2V0SW50MTYoMSwhMCksQSs9MjtlbHNlIGlmKEw9PT0wKUMub2Zmc2V0PWcuZ2V0RmxvYXQzMigxLCEwKSxBKz00O2Vsc2UgdGhyb3ciSW52YWxpZCBibG9jayBvZmZzZXQgdHlwZSI7aWYoQy5lbmNvZGluZz09PTEpaWYoTD1nLmdldFVpbnQ4KEEpLEErKyxDLmJpdHNQZXJQaXhlbD1MJjYzLEw+Pj02LEMubnVtVmFsaWRQaXhlbHNUeXBlPUwsTD09PTIpQy5udW1WYWxpZFBpeGVscz1nLmdldFVpbnQ4KEEpLEErKztlbHNlIGlmKEw9PT0xKUMubnVtVmFsaWRQaXhlbHM9Zy5nZXRVaW50MTYoQSwhMCksQSs9MjtlbHNlIGlmKEw9PT0wKUMubnVtVmFsaWRQaXhlbHM9Zy5nZXRVaW50MzIoQSwhMCksQSs9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSJ9aWYocCs9QSxDLmVuY29kaW5nIT09Myl7dmFyIHosajtpZihDLmVuY29kaW5nPT09MCl7dmFyIGs9KGgucGl4ZWxzLm51bUJ5dGVzLTEpLzQ7aWYoayE9PU1hdGguZmxvb3IoaykpdGhyb3cidW5jb21wcmVzc2VkIGJsb2NrIGhhcyBpbnZhbGlkIGxlbmd0aCI7ej1uZXcgQXJyYXlCdWZmZXIoayo0KSxqPW5ldyBVaW50OEFycmF5KHopLGouc2V0KG5ldyBVaW50OEFycmF5KGwscCxrKjQpKTt2YXIgcT1uZXcgRmxvYXQzMkFycmF5KHopO0MucmF3RGF0YT1xLHArPWsqNH1lbHNlIGlmKEMuZW5jb2Rpbmc9PT0xKXt2YXIgVz1NYXRoLmNlaWwoQy5udW1WYWxpZFBpeGVscypDLmJpdHNQZXJQaXhlbC84KSxSPU1hdGguY2VpbChXLzQpO3o9bmV3IEFycmF5QnVmZmVyKFIqNCksaj1uZXcgVWludDhBcnJheSh6KSxqLnNldChuZXcgVWludDhBcnJheShsLHAsVykpLEMuc3R1ZmZlZERhdGE9bmV3IFVpbnQzMkFycmF5KHopLHArPVd9fX1yZXR1cm4gaC5lb2ZPZmZzZXQ9cCxofSxjPWZ1bmN0aW9uKGwscCxkLGgsXyxnLGIpe3ZhciB3PSgxPDxwKS0xLE89MCxFLFQ9MCx4LE0sTj1NYXRoLmNlaWwoKGItaCkvXyksRj1sLmxlbmd0aCo0LU1hdGguY2VpbChwKmQvOCk7Zm9yKGxbbC5sZW5ndGgtMV08PD04KkYsRT0wO0U8ZDtFKyspe2lmKFQ9PT0wJiYoTT1sW08rK10sVD0zMiksVD49cCl4PU0+Pj5ULXAmdyxULT1wO2Vsc2V7dmFyIEk9cC1UO3g9KE0mdyk8PEkmdyxNPWxbTysrXSxUPTMyLUkseCs9TT4+PlR9Z1tFXT14PE4/aCt4Kl86Yn1yZXR1cm4gZ307cmV0dXJuIHJ9KCksZT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj17dW5zdHVmZjpmdW5jdGlvbih1LGMsbCxwLGQsaCxfLGcpe3ZhciBiPSgxPDxsKS0xLHc9MCxPLEU9MCxULHgsTSxOLEY9dS5sZW5ndGgqNC1NYXRoLmNlaWwobCpwLzgpO2lmKHVbdS5sZW5ndGgtMV08PD04KkYsZClmb3IoTz0wO088cDtPKyspRT09PTAmJih4PXVbdysrXSxFPTMyKSxFPj1sPyhUPXg+Pj5FLWwmYixFLT1sKTooTT1sLUUsVD0oeCZiKTw8TSZiLHg9dVt3KytdLEU9MzItTSxUKz14Pj4+RSksY1tPXT1kW1RdO2Vsc2UgZm9yKE49TWF0aC5jZWlsKChnLWgpL18pLE89MDtPPHA7TysrKUU9PT0wJiYoeD11W3crK10sRT0zMiksRT49bD8oVD14Pj4+RS1sJmIsRS09bCk6KE09bC1FLFQ9KHgmYik8PE0mYix4PXVbdysrXSxFPTMyLU0sVCs9eD4+PkUpLGNbT109VDxOP2grVCpfOmd9LHVuc3R1ZmZMVVQ6ZnVuY3Rpb24odSxjLGwscCxkLGgpe3ZhciBfPSgxPDxjKS0xLGc9MCxiPTAsdz0wLE89MCxFPTAsVCx4PVtdLE09dS5sZW5ndGgqNC1NYXRoLmNlaWwoYypsLzgpO3VbdS5sZW5ndGgtMV08PD04Kk07dmFyIE49TWF0aC5jZWlsKChoLXApL2QpO2ZvcihiPTA7YjxsO2IrKylPPT09MCYmKFQ9dVtnKytdLE89MzIpLE8+PWM/KEU9VD4+Pk8tYyZfLE8tPWMpOih3PWMtTyxFPShUJl8pPDx3Jl8sVD11W2crK10sTz0zMi13LEUrPVQ+Pj5PKSx4W2JdPUU8Tj9wK0UqZDpoO3JldHVybiB4LnVuc2hpZnQocCkseH0sdW5zdHVmZjI6ZnVuY3Rpb24odSxjLGwscCxkLGgsXyxnKXt2YXIgYj0oMTw8bCktMSx3PTAsTyxFPTAsVD0wLHgsTSxOO2lmKGQpZm9yKE89MDtPPHA7TysrKUU9PT0wJiYoTT11W3crK10sRT0zMixUPTApLEU+PWw/KHg9TT4+PlQmYixFLT1sLFQrPWwpOihOPWwtRSx4PU0+Pj5UJmIsTT11W3crK10sRT0zMi1OLHh8PShNJigxPDxOKS0xKTw8bC1OLFQ9TiksY1tPXT1kW3hdO2Vsc2V7dmFyIEY9TWF0aC5jZWlsKChnLWgpL18pO2ZvcihPPTA7TzxwO08rKylFPT09MCYmKE09dVt3KytdLEU9MzIsVD0wKSxFPj1sPyh4PU0+Pj5UJmIsRS09bCxUKz1sKTooTj1sLUUseD1NPj4+VCZiLE09dVt3KytdLEU9MzItTix4fD0oTSYoMTw8TiktMSk8PGwtTixUPU4pLGNbT109eDxGP2greCpfOmd9cmV0dXJuIGN9LHVuc3R1ZmZMVVQyOmZ1bmN0aW9uKHUsYyxsLHAsZCxoKXt2YXIgXz0oMTw8YyktMSxnPTAsYj0wLHc9MCxPPTAsRT0wLFQ9MCx4LE09W10sTj1NYXRoLmNlaWwoKGgtcCkvZCk7Zm9yKGI9MDtiPGw7YisrKU89PT0wJiYoeD11W2crK10sTz0zMixUPTApLE8+PWM/KEU9eD4+PlQmXyxPLT1jLFQrPWMpOih3PWMtTyxFPXg+Pj5UJl8seD11W2crK10sTz0zMi13LEV8PSh4JigxPDx3KS0xKTw8Yy13LFQ9dyksTVtiXT1FPE4/cCtFKmQ6aDtyZXR1cm4gTS51bnNoaWZ0KHApLE19LG9yaWdpbmFsVW5zdHVmZjpmdW5jdGlvbih1LGMsbCxwKXt2YXIgZD0oMTw8bCktMSxoPTAsXyxnPTAsYix3LE8sRT11Lmxlbmd0aCo0LU1hdGguY2VpbChsKnAvOCk7Zm9yKHVbdS5sZW5ndGgtMV08PD04KkUsXz0wO188cDtfKyspZz09PTAmJih3PXVbaCsrXSxnPTMyKSxnPj1sPyhiPXc+Pj5nLWwmZCxnLT1sKTooTz1sLWcsYj0odyZkKTw8TyZkLHc9dVtoKytdLGc9MzItTyxiKz13Pj4+ZyksY1tfXT1iO3JldHVybiBjfSxvcmlnaW5hbFVuc3R1ZmYyOmZ1bmN0aW9uKHUsYyxsLHApe3ZhciBkPSgxPDxsKS0xLGg9MCxfLGc9MCxiPTAsdyxPLEU7Zm9yKF89MDtfPHA7XysrKWc9PT0wJiYoTz11W2grK10sZz0zMixiPTApLGc+PWw/KHc9Tz4+PmImZCxnLT1sLGIrPWwpOihFPWwtZyx3PU8+Pj5iJmQsTz11W2grK10sZz0zMi1FLHd8PShPJigxPDxFKS0xKTw8bC1FLGI9RSksY1tfXT13O3JldHVybiBjfX0saT17SFVGRk1BTl9MVVRfQklUU19NQVg6MTIsY29tcHV0ZUNoZWNrc3VtRmxldGNoZXIzMjpmdW5jdGlvbih1KXtmb3IodmFyIGM9NjU1MzUsbD02NTUzNSxwPXUubGVuZ3RoLGQ9TWF0aC5mbG9vcihwLzIpLGg9MDtkOyl7dmFyIF89ZD49MzU5PzM1OTpkO2QtPV87ZG8gYys9dVtoKytdPDw4LGwrPWMrPXVbaCsrXTt3aGlsZSgtLV8pO2M9KGMmNjU1MzUpKyhjPj4+MTYpLGw9KGwmNjU1MzUpKyhsPj4+MTYpfXJldHVybiBwJjEmJihsKz1jKz11W2hdPDw4KSxjPShjJjY1NTM1KSsoYz4+PjE2KSxsPShsJjY1NTM1KSsobD4+PjE2KSwobDw8MTZ8Yyk+Pj4wfSxyZWFkSGVhZGVySW5mbzpmdW5jdGlvbih1LGMpe3ZhciBsPWMucHRyLHA9bmV3IFVpbnQ4QXJyYXkodSxsLDYpLGQ9e307aWYoZC5maWxlSWRlbnRpZmllclN0cmluZz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscCksZC5maWxlSWRlbnRpZmllclN0cmluZy5sYXN0SW5kZXhPZigiTGVyYzIiLDApIT09MCl0aHJvdyJVbmV4cGVjdGVkIGZpbGUgaWRlbnRpZmllciBzdHJpbmcgKGV4cGVjdCBMZXJjMiApOiAiK2QuZmlsZUlkZW50aWZpZXJTdHJpbmc7bCs9Njt2YXIgaD1uZXcgRGF0YVZpZXcodSxsLDgpLF89aC5nZXRJbnQzMigwLCEwKTtkLmZpbGVWZXJzaW9uPV8sbCs9NCxfPj0zJiYoZC5jaGVja3N1bT1oLmdldFVpbnQzMig0LCEwKSxsKz00KSxoPW5ldyBEYXRhVmlldyh1LGwsMTIpLGQuaGVpZ2h0PWguZ2V0VWludDMyKDAsITApLGQud2lkdGg9aC5nZXRVaW50MzIoNCwhMCksbCs9OCxfPj00PyhkLm51bURpbXM9aC5nZXRVaW50MzIoOCwhMCksbCs9NCk6ZC5udW1EaW1zPTEsaD1uZXcgRGF0YVZpZXcodSxsLDQwKSxkLm51bVZhbGlkUGl4ZWw9aC5nZXRVaW50MzIoMCwhMCksZC5taWNyb0Jsb2NrU2l6ZT1oLmdldEludDMyKDQsITApLGQuYmxvYlNpemU9aC5nZXRJbnQzMig4LCEwKSxkLmltYWdlVHlwZT1oLmdldEludDMyKDEyLCEwKSxkLm1heFpFcnJvcj1oLmdldEZsb2F0NjQoMTYsITApLGQuek1pbj1oLmdldEZsb2F0NjQoMjQsITApLGQuek1heD1oLmdldEZsb2F0NjQoMzIsITApLGwrPTQwLGMuaGVhZGVySW5mbz1kLGMucHRyPWw7dmFyIGcsYjtpZihfPj0zJiYoYj1fPj00PzUyOjQ4LGc9dGhpcy5jb21wdXRlQ2hlY2tzdW1GbGV0Y2hlcjMyKG5ldyBVaW50OEFycmF5KHUsbC1iLGQuYmxvYlNpemUtMTQpKSxnIT09ZC5jaGVja3N1bSkpdGhyb3ciQ2hlY2tzdW0gZmFpbGVkLiI7cmV0dXJuITB9LGNoZWNrTWluTWF4UmFuZ2VzOmZ1bmN0aW9uKHUsYyl7dmFyIGw9Yy5oZWFkZXJJbmZvLHA9dGhpcy5nZXREYXRhVHlwZUFycmF5KGwuaW1hZ2VUeXBlKSxkPWwubnVtRGltcyp0aGlzLmdldERhdGFUeXBlU2l6ZShsLmltYWdlVHlwZSksaD10aGlzLnJlYWRTdWJBcnJheSh1LGMucHRyLHAsZCksXz10aGlzLnJlYWRTdWJBcnJheSh1LGMucHRyK2QscCxkKTtjLnB0cis9MipkO3ZhciBnLGI9ITA7Zm9yKGc9MDtnPGwubnVtRGltcztnKyspaWYoaFtnXSE9PV9bZ10pe2I9ITE7YnJlYWt9cmV0dXJuIGwubWluVmFsdWVzPWgsbC5tYXhWYWx1ZXM9XyxifSxyZWFkU3ViQXJyYXk6ZnVuY3Rpb24odSxjLGwscCl7dmFyIGQ7aWYobD09PVVpbnQ4QXJyYXkpZD1uZXcgVWludDhBcnJheSh1LGMscCk7ZWxzZXt2YXIgaD1uZXcgQXJyYXlCdWZmZXIocCksXz1uZXcgVWludDhBcnJheShoKTtfLnNldChuZXcgVWludDhBcnJheSh1LGMscCkpLGQ9bmV3IGwoaCl9cmV0dXJuIGR9LHJlYWRNYXNrOmZ1bmN0aW9uKHUsYyl7dmFyIGw9Yy5wdHIscD1jLmhlYWRlckluZm8sZD1wLndpZHRoKnAuaGVpZ2h0LGg9cC5udW1WYWxpZFBpeGVsLF89bmV3IERhdGFWaWV3KHUsbCw0KSxnPXt9O2lmKGcubnVtQnl0ZXM9Xy5nZXRVaW50MzIoMCwhMCksbCs9NCwoaD09PTB8fGQ9PT1oKSYmZy5udW1CeXRlcyE9PTApdGhyb3ciaW52YWxpZCBtYXNrIjt2YXIgYix3O2lmKGg9PT0wKWI9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGQvOCkpLGcuYml0c2V0PWIsdz1uZXcgVWludDhBcnJheShkKSxjLnBpeGVscy5yZXN1bHRNYXNrPXcsbCs9Zy5udW1CeXRlcztlbHNlIGlmKGcubnVtQnl0ZXM+MCl7Yj1uZXcgVWludDhBcnJheShNYXRoLmNlaWwoZC84KSksXz1uZXcgRGF0YVZpZXcodSxsLGcubnVtQnl0ZXMpO3ZhciBPPV8uZ2V0SW50MTYoMCwhMCksRT0yLFQ9MCx4PTA7ZG97aWYoTz4wKWZvcig7Ty0tOyliW1QrK109Xy5nZXRVaW50OChFKyspO2Vsc2UgZm9yKHg9Xy5nZXRVaW50OChFKyspLE89LU87Ty0tOyliW1QrK109eDtPPV8uZ2V0SW50MTYoRSwhMCksRSs9Mn13aGlsZShFPGcubnVtQnl0ZXMpO2lmKE8hPT0tMzI3Njh8fFQ8Yi5sZW5ndGgpdGhyb3ciVW5leHBlY3RlZCBlbmQgb2YgbWFzayBSTEUgZW5jb2RpbmciO3c9bmV3IFVpbnQ4QXJyYXkoZCk7dmFyIE09MCxOPTA7Zm9yKE49MDtOPGQ7TisrKU4mNz8oTT1iW04+PjNdLE08PD1OJjcpOk09YltOPj4zXSxNJjEyOCYmKHdbTl09MSk7Yy5waXhlbHMucmVzdWx0TWFzaz13LGcuYml0c2V0PWIsbCs9Zy5udW1CeXRlc31yZXR1cm4gYy5wdHI9bCxjLm1hc2s9ZywhMH0scmVhZERhdGFPbmVTd2VlcDpmdW5jdGlvbih1LGMsbCl7dmFyIHA9Yy5wdHIsZD1jLmhlYWRlckluZm8saD1kLm51bURpbXMsXz1kLndpZHRoKmQuaGVpZ2h0LGc9ZC5pbWFnZVR5cGUsYj1kLm51bVZhbGlkUGl4ZWwqaS5nZXREYXRhVHlwZVNpemUoZykqaCx3LE89Yy5waXhlbHMucmVzdWx0TWFzaztpZihsPT09VWludDhBcnJheSl3PW5ldyBVaW50OEFycmF5KHUscCxiKTtlbHNle3ZhciBFPW5ldyBBcnJheUJ1ZmZlcihiKSxUPW5ldyBVaW50OEFycmF5KEUpO1Quc2V0KG5ldyBVaW50OEFycmF5KHUscCxiKSksdz1uZXcgbChFKX1pZih3Lmxlbmd0aD09PV8qaCljLnBpeGVscy5yZXN1bHRQaXhlbHM9dztlbHNle2MucGl4ZWxzLnJlc3VsdFBpeGVscz1uZXcgbChfKmgpO3ZhciB4PTAsTT0wLE49MCxGPTA7aWYoaD4xKWZvcihOPTA7TjxoO04rKylmb3IoRj1OKl8sTT0wO008XztNKyspT1tNXSYmKGMucGl4ZWxzLnJlc3VsdFBpeGVsc1tGK01dPXdbeCsrXSk7ZWxzZSBmb3IoTT0wO008XztNKyspT1tNXSYmKGMucGl4ZWxzLnJlc3VsdFBpeGVsc1tNXT13W3grK10pfXJldHVybiBwKz1iLGMucHRyPXAsITB9LHJlYWRIdWZmbWFuVHJlZTpmdW5jdGlvbih1LGMpe3ZhciBsPXRoaXMuSFVGRk1BTl9MVVRfQklUU19NQVgscD1uZXcgRGF0YVZpZXcodSxjLnB0ciwxNik7Yy5wdHIrPTE2O3ZhciBkPXAuZ2V0SW50MzIoMCwhMCk7aWYoZDwyKXRocm93InVuc3VwcG9ydGVkIEh1ZmZtYW4gdmVyc2lvbiI7dmFyIGg9cC5nZXRJbnQzMig0LCEwKSxfPXAuZ2V0SW50MzIoOCwhMCksZz1wLmdldEludDMyKDEyLCEwKTtpZihfPj1nKXJldHVybiExO3ZhciBiPW5ldyBVaW50MzJBcnJheShnLV8pO2kuZGVjb2RlQml0cyh1LGMsYik7dmFyIHc9W10sTyxFLFQseDtmb3IoTz1fO088ZztPKyspRT1PLShPPGg/MDpoKSx3W0VdPXtmaXJzdDpiW08tX10sc2Vjb25kOm51bGx9O3ZhciBNPXUuYnl0ZUxlbmd0aC1jLnB0cixOPU1hdGguY2VpbChNLzQpLEY9bmV3IEFycmF5QnVmZmVyKE4qNCksST1uZXcgVWludDhBcnJheShGKTtJLnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLE0pKTt2YXIgdj1uZXcgVWludDMyQXJyYXkoRiksQj0wLEEsUz0wO2ZvcihBPXZbMF0sTz1fO088ZztPKyspRT1PLShPPGg/MDpoKSx4PXdbRV0uZmlyc3QseD4wJiYod1tFXS5zZWNvbmQ9QTw8Qj4+PjMyLXgsMzItQj49eD8oQis9eCxCPT09MzImJihCPTAsUysrLEE9dltTXSkpOihCKz14LTMyLFMrKyxBPXZbU10sd1tFXS5zZWNvbmR8PUE+Pj4zMi1CKSk7dmFyIEM9MCxMPTAsej1uZXcgcztmb3IoTz0wO088dy5sZW5ndGg7TysrKXdbT10hPT12b2lkIDAmJihDPU1hdGgubWF4KEMsd1tPXS5maXJzdCkpO0M+PWw/TD1sOkw9QyxDPj0zMCYmY29uc29sZS5sb2coIldBUm5pbmcsIGxhcmdlIE5VTSBMVVQgQklUUyBJUyAiK0MpO3ZhciBqPVtdLGsscSxXLFIsbnQsYXQ7Zm9yKE89XztPPGc7TysrKWlmKEU9Ty0oTzxoPzA6aCkseD13W0VdLmZpcnN0LHg+MClpZihrPVt4LEVdLHg8PUwpZm9yKHE9d1tFXS5zZWNvbmQ8PEwteCxXPTE8PEwteCxUPTA7VDxXO1QrKylqW3F8VF09aztlbHNlIGZvcihxPXdbRV0uc2Vjb25kLGF0PXosUj14LTE7Uj49MDtSLS0pbnQ9cT4+PlImMSxudD8oYXQucmlnaHR8fChhdC5yaWdodD1uZXcgcyksYXQ9YXQucmlnaHQpOihhdC5sZWZ0fHwoYXQubGVmdD1uZXcgcyksYXQ9YXQubGVmdCksUj09PTAmJiFhdC52YWwmJihhdC52YWw9a1sxXSk7cmV0dXJue2RlY29kZUx1dDpqLG51bUJpdHNMVVRRaWNrOkwsbnVtQml0c0xVVDpDLHRyZWU6eixzdHVmZmVkRGF0YTp2LHNyY1B0cjpTLGJpdFBvczpCfX0scmVhZEh1ZmZtYW46ZnVuY3Rpb24odSxjLGwpe3ZhciBwPWMuaGVhZGVySW5mbyxkPXAubnVtRGltcyxoPWMuaGVhZGVySW5mby5oZWlnaHQsXz1jLmhlYWRlckluZm8ud2lkdGgsZz1fKmgsYj10aGlzLnJlYWRIdWZmbWFuVHJlZSh1LGMpLHc9Yi5kZWNvZGVMdXQsTz1iLnRyZWUsRT1iLnN0dWZmZWREYXRhLFQ9Yi5zcmNQdHIseD1iLmJpdFBvcyxNPWIubnVtQml0c0xVVFFpY2ssTj1iLm51bUJpdHNMVVQsRj1jLmhlYWRlckluZm8uaW1hZ2VUeXBlPT09MD8xMjg6MCxJLHYsQixBPWMucGl4ZWxzLnJlc3VsdE1hc2ssUyxDLEwseixqLGsscSxXPTA7eD4wJiYoVCsrLHg9MCk7dmFyIFI9RVtUXSxudD1jLmVuY29kZU1vZGU9PT0xLGF0PW5ldyBsKGcqZCksbHQ9YXQsX3Q7Zm9yKF90PTA7X3Q8cC5udW1EaW1zO190Kyspe2lmKGQ+MSYmKGx0PW5ldyBsKGF0LmJ1ZmZlcixnKl90LGcpLFc9MCksYy5oZWFkZXJJbmZvLm51bVZhbGlkUGl4ZWw9PT1fKmgpZm9yKGs9MCx6PTA7ejxoO3orKylmb3Ioaj0wO2o8XztqKyssaysrKXtpZih2PTAsUz1SPDx4Pj4+MzItTSxDPVMsMzIteDxNJiYoU3w9RVtUKzFdPj4+NjQteC1NLEM9Uyksd1tDXSl2PXdbQ11bMV0seCs9d1tDXVswXTtlbHNlIGZvcihTPVI8PHg+Pj4zMi1OLEM9UywzMi14PE4mJihTfD1FW1QrMV0+Pj42NC14LU4sQz1TKSxJPU8scT0wO3E8TjtxKyspaWYoTD1TPj4+Ti1xLTEmMSxJPUw/SS5yaWdodDpJLmxlZnQsIShJLmxlZnR8fEkucmlnaHQpKXt2PUkudmFsLHg9eCtxKzE7YnJlYWt9eD49MzImJih4LT0zMixUKyssUj1FW1RdKSxCPXYtRixudD8oaj4wP0IrPVc6ej4wP0IrPWx0W2stX106Qis9VyxCJj0yNTUsbHRba109QixXPUIpOmx0W2tdPUJ9ZWxzZSBmb3Ioaz0wLHo9MDt6PGg7eisrKWZvcihqPTA7ajxfO2orKyxrKyspaWYoQVtrXSl7aWYodj0wLFM9Ujw8eD4+PjMyLU0sQz1TLDMyLXg8TSYmKFN8PUVbVCsxXT4+PjY0LXgtTSxDPVMpLHdbQ10pdj13W0NdWzFdLHgrPXdbQ11bMF07ZWxzZSBmb3IoUz1SPDx4Pj4+MzItTixDPVMsMzIteDxOJiYoU3w9RVtUKzFdPj4+NjQteC1OLEM9UyksST1PLHE9MDtxPE47cSsrKWlmKEw9Uz4+Pk4tcS0xJjEsST1MP0kucmlnaHQ6SS5sZWZ0LCEoSS5sZWZ0fHxJLnJpZ2h0KSl7dj1JLnZhbCx4PXgrcSsxO2JyZWFrfXg+PTMyJiYoeC09MzIsVCsrLFI9RVtUXSksQj12LUYsbnQ/KGo+MCYmQVtrLTFdP0IrPVc6ej4wJiZBW2stX10/Qis9bHRbay1fXTpCKz1XLEImPTI1NSxsdFtrXT1CLFc9Qik6bHRba109Qn1jLnB0cj1jLnB0cisoVCsxKSo0Kyh4PjA/NDowKX1jLnBpeGVscy5yZXN1bHRQaXhlbHM9YXR9LGRlY29kZUJpdHM6ZnVuY3Rpb24odSxjLGwscCxkKXt7dmFyIGg9Yy5oZWFkZXJJbmZvLF89aC5maWxlVmVyc2lvbixnPTAsYj1uZXcgRGF0YVZpZXcodSxjLnB0ciw1KSx3PWIuZ2V0VWludDgoMCk7ZysrO3ZhciBPPXc+PjYsRT1PPT09MD80OjMtTyxUPSh3JjMyKT4wLHg9dyYzMSxNPTA7aWYoRT09PTEpTT1iLmdldFVpbnQ4KGcpLGcrKztlbHNlIGlmKEU9PT0yKU09Yi5nZXRVaW50MTYoZywhMCksZys9MjtlbHNlIGlmKEU9PT00KU09Yi5nZXRVaW50MzIoZywhMCksZys9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSI7dmFyIE49MipoLm1heFpFcnJvcixGLEksdixCLEEsUyxDLEwseixqLGs9aC5udW1EaW1zPjE/aC5tYXhWYWx1ZXNbZF06aC56TWF4O2lmKFQpe2ZvcihjLmNvdW50ZXIubHV0KyssTD1iLmdldFVpbnQ4KGcpLHo9eCxnKyssQj1NYXRoLmNlaWwoKEwtMSkqeC84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSxjLnB0cis9Zyx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxDPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixqPTA7TC0xPj4+ajspaisrO0I9TWF0aC5jZWlsKE0qai84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxGPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixfPj0zP1M9ci51bnN0dWZmTFVUMihDLHgsTC0xLHAsTixrKTpTPXIudW5zdHVmZkxVVChDLHgsTC0xLHAsTixrKSxfPj0zP3IudW5zdHVmZjIoRixsLGosTSxTKTpyLnVuc3R1ZmYoRixsLGosTSxTKX1lbHNlIGMuY291bnRlci5iaXRzdHVmZmVyKyssaj14LGMucHRyKz1nLGo+MCYmKEI9TWF0aC5jZWlsKE0qai84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxGPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixfPj0zP3A9PW51bGw/ci5vcmlnaW5hbFVuc3R1ZmYyKEYsbCxqLE0pOnIudW5zdHVmZjIoRixsLGosTSwhMSxwLE4sayk6cD09bnVsbD9yLm9yaWdpbmFsVW5zdHVmZihGLGwsaixNKTpyLnVuc3R1ZmYoRixsLGosTSwhMSxwLE4saykpfX0scmVhZFRpbGVzOmZ1bmN0aW9uKHUsYyxsKXt2YXIgcD1jLmhlYWRlckluZm8sZD1wLndpZHRoLGg9cC5oZWlnaHQsXz1wLm1pY3JvQmxvY2tTaXplLGc9cC5pbWFnZVR5cGUsYj1pLmdldERhdGFUeXBlU2l6ZShnKSx3PU1hdGguY2VpbChkL18pLE89TWF0aC5jZWlsKGgvXyk7Yy5waXhlbHMubnVtQmxvY2tzWT1PLGMucGl4ZWxzLm51bUJsb2Nrc1g9dyxjLnBpeGVscy5wdHI9MDt2YXIgRT0wLFQ9MCx4PTAsTT0wLE49MCxGPTAsST0wLHY9MCxCPTAsQT0wLFM9MCxDPTAsTD0wLHo9MCxqPTAsaz0wLHEsVyxSLG50LGF0LGx0LF90PW5ldyBsKF8qXyksb3Q9aCVffHxfLFB0PWQlX3x8XyxndCxSdCxkdD1wLm51bURpbXMscnQseHQ9Yy5waXhlbHMucmVzdWx0TWFzayxHdD1jLnBpeGVscy5yZXN1bHRQaXhlbHM7Zm9yKHg9MDt4PE87eCsrKWZvcihOPXghPT1PLTE/XzpvdCxNPTA7TTx3O00rKylmb3IoRj1NIT09dy0xP186UHQsUz14KmQqXytNKl8sQz1kLUYscnQ9MDtydDxkdDtydCsrKXtpZihkdD4xJiYoR3Q9bmV3IGwoYy5waXhlbHMucmVzdWx0UGl4ZWxzLmJ1ZmZlcixkKmgqcnQqYixkKmgpKSxJPXUuYnl0ZUxlbmd0aC1jLnB0cixxPW5ldyBEYXRhVmlldyh1LGMucHRyLE1hdGgubWluKDEwLEkpKSxXPXt9LGs9MCx2PXEuZ2V0VWludDgoMCksaysrLEI9dj4+NiYyNTUsQT12Pj4yJjE1LEEhPT0oTSpfPj4zJjE1KSl0aHJvdyJpbnRlZ3JpdHkgaXNzdWUiO2lmKGx0PXYmMyxsdD4zKXRocm93IGMucHRyKz1rLCJJbnZhbGlkIGJsb2NrIGVuY29kaW5nICgiK2x0KyIpIjtpZihsdD09PTIpe2MuY291bnRlci5jb25zdGFudCsrLGMucHRyKz1rO2NvbnRpbnVlfWVsc2UgaWYobHQ9PT0wKXtpZihjLmNvdW50ZXIudW5jb21wcmVzc2VkKyssYy5wdHIrPWssTD1OKkYqYix6PXUuYnl0ZUxlbmd0aC1jLnB0cixMPUw8ej9MOnosUj1uZXcgQXJyYXlCdWZmZXIoTCViPT09MD9MOkwrYi1MJWIpLG50PW5ldyBVaW50OEFycmF5KFIpLG50LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEwpKSxhdD1uZXcgbChSKSxqPTAseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1hdFtqKytdKSxTKys7Uys9Q31lbHNlIGZvcihFPTA7RTxOO0UrKyl7Zm9yKFQ9MDtUPEY7VCsrKUd0W1MrK109YXRbaisrXTtTKz1DfWMucHRyKz1qKmJ9ZWxzZSBpZihndD1pLmdldERhdGFUeXBlVXNlZChnLEIpLFJ0PWkuZ2V0T25lUGl4ZWwoVyxrLGd0LHEpLGsrPWkuZ2V0RGF0YVR5cGVTaXplKGd0KSxsdD09PTMpaWYoYy5wdHIrPWssYy5jb3VudGVyLmNvbnN0YW50b2Zmc2V0KysseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1SdCksUysrO1MrPUN9ZWxzZSBmb3IoRT0wO0U8TjtFKyspe2ZvcihUPTA7VDxGO1QrKylHdFtTKytdPVJ0O1MrPUN9ZWxzZSBpZihjLnB0cis9ayxpLmRlY29kZUJpdHModSxjLF90LFJ0LHJ0KSxrPTAseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1fdFtrKytdKSxTKys7Uys9Q31lbHNlIGZvcihFPTA7RTxOO0UrKyl7Zm9yKFQ9MDtUPEY7VCsrKUd0W1MrK109X3RbaysrXTtTKz1DfX19LGZvcm1hdEZpbGVJbmZvOmZ1bmN0aW9uKHUpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzp1LmhlYWRlckluZm8uZmlsZUlkZW50aWZpZXJTdHJpbmcsZmlsZVZlcnNpb246dS5oZWFkZXJJbmZvLmZpbGVWZXJzaW9uLGltYWdlVHlwZTp1LmhlYWRlckluZm8uaW1hZ2VUeXBlLGhlaWdodDp1LmhlYWRlckluZm8uaGVpZ2h0LHdpZHRoOnUuaGVhZGVySW5mby53aWR0aCxudW1WYWxpZFBpeGVsOnUuaGVhZGVySW5mby5udW1WYWxpZFBpeGVsLG1pY3JvQmxvY2tTaXplOnUuaGVhZGVySW5mby5taWNyb0Jsb2NrU2l6ZSxibG9iU2l6ZTp1LmhlYWRlckluZm8uYmxvYlNpemUsbWF4WkVycm9yOnUuaGVhZGVySW5mby5tYXhaRXJyb3IscGl4ZWxUeXBlOmkuZ2V0UGl4ZWxUeXBlKHUuaGVhZGVySW5mby5pbWFnZVR5cGUpLGVvZk9mZnNldDp1LmVvZk9mZnNldCxtYXNrOnUubWFzaz97bnVtQnl0ZXM6dS5tYXNrLm51bUJ5dGVzfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDp1LnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6dS5waXhlbHMubnVtQmxvY2tzWSxtYXhWYWx1ZTp1LmhlYWRlckluZm8uek1heCxtaW5WYWx1ZTp1LmhlYWRlckluZm8uek1pbixub0RhdGFWYWx1ZTp1Lm5vRGF0YVZhbHVlfX19LGNvbnN0cnVjdENvbnN0YW50U3VyZmFjZTpmdW5jdGlvbih1KXt2YXIgYz11LmhlYWRlckluZm8uek1heCxsPXUuaGVhZGVySW5mby5udW1EaW1zLHA9dS5oZWFkZXJJbmZvLmhlaWdodCp1LmhlYWRlckluZm8ud2lkdGgsZD1wKmwsaD0wLF89MCxnPTAsYj11LnBpeGVscy5yZXN1bHRNYXNrO2lmKGIpaWYobD4xKWZvcihoPTA7aDxsO2grKylmb3IoZz1oKnAsXz0wO188cDtfKyspYltfXSYmKHUucGl4ZWxzLnJlc3VsdFBpeGVsc1tnK19dPWMpO2Vsc2UgZm9yKF89MDtfPHA7XysrKWJbX10mJih1LnBpeGVscy5yZXN1bHRQaXhlbHNbX109Yyk7ZWxzZSBpZih1LnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbCl1LnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbChjKTtlbHNlIGZvcihfPTA7XzxkO18rKyl1LnBpeGVscy5yZXN1bHRQaXhlbHNbX109Y30sZ2V0RGF0YVR5cGVBcnJheTpmdW5jdGlvbih1KXt2YXIgYztzd2l0Y2godSl7Y2FzZSAwOmM9SW50OEFycmF5O2JyZWFrO2Nhc2UgMTpjPVVpbnQ4QXJyYXk7YnJlYWs7Y2FzZSAyOmM9SW50MTZBcnJheTticmVhaztjYXNlIDM6Yz1VaW50MTZBcnJheTticmVhaztjYXNlIDQ6Yz1JbnQzMkFycmF5O2JyZWFrO2Nhc2UgNTpjPVVpbnQzMkFycmF5O2JyZWFrO2Nhc2UgNjpjPUZsb2F0MzJBcnJheTticmVhaztjYXNlIDc6Yz1GbG9hdDY0QXJyYXk7YnJlYWs7ZGVmYXVsdDpjPUZsb2F0MzJBcnJheX1yZXR1cm4gY30sZ2V0UGl4ZWxUeXBlOmZ1bmN0aW9uKHUpe3ZhciBjO3N3aXRjaCh1KXtjYXNlIDA6Yz0iUzgiO2JyZWFrO2Nhc2UgMTpjPSJVOCI7YnJlYWs7Y2FzZSAyOmM9IlMxNiI7YnJlYWs7Y2FzZSAzOmM9IlUxNiI7YnJlYWs7Y2FzZSA0OmM9IlMzMiI7YnJlYWs7Y2FzZSA1OmM9IlUzMiI7YnJlYWs7Y2FzZSA2OmM9IkYzMiI7YnJlYWs7Y2FzZSA3OmM9IkY2NCI7YnJlYWs7ZGVmYXVsdDpjPSJGMzIifXJldHVybiBjfSxpc1ZhbGlkUGl4ZWxWYWx1ZTpmdW5jdGlvbih1LGMpe2lmKGM9PW51bGwpcmV0dXJuITE7dmFyIGw7c3dpdGNoKHUpe2Nhc2UgMDpsPWM+PS0xMjgmJmM8PTEyNzticmVhaztjYXNlIDE6bD1jPj0wJiZjPD0yNTU7YnJlYWs7Y2FzZSAyOmw9Yz49LTMyNzY4JiZjPD0zMjc2NzticmVhaztjYXNlIDM6bD1jPj0wJiZjPD02NTUzNjticmVhaztjYXNlIDQ6bD1jPj0tMjE0NzQ4MzY0OCYmYzw9MjE0NzQ4MzY0NzticmVhaztjYXNlIDU6bD1jPj0wJiZjPD00Mjk0OTY3Mjk2O2JyZWFrO2Nhc2UgNjpsPWM+PS0zNDAyNzk5OTM4NzkwMTQ4NGUyMiYmYzw9MzQwMjc5OTkzODc5MDE0ODRlMjI7YnJlYWs7Y2FzZSA3Omw9Yz49NWUtMzI0JiZjPD0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7YnJlYWs7ZGVmYXVsdDpsPSExfXJldHVybiBsfSxnZXREYXRhVHlwZVNpemU6ZnVuY3Rpb24odSl7dmFyIGM9MDtzd2l0Y2godSl7Y2FzZSAwOmNhc2UgMTpjPTE7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjPTI7YnJlYWs7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Yz00O2JyZWFrO2Nhc2UgNzpjPTg7YnJlYWs7ZGVmYXVsdDpjPXV9cmV0dXJuIGN9LGdldERhdGFUeXBlVXNlZDpmdW5jdGlvbih1LGMpe3ZhciBsPXU7c3dpdGNoKHUpe2Nhc2UgMjpjYXNlIDQ6bD11LWM7YnJlYWs7Y2FzZSAzOmNhc2UgNTpsPXUtMipjO2JyZWFrO2Nhc2UgNjpjPT09MD9sPXU6Yz09PTE/bD0yOmw9MTticmVhaztjYXNlIDc6Yz09PTA/bD11Omw9dS0yKmMrMTticmVhaztkZWZhdWx0Omw9dTticmVha31yZXR1cm4gbH0sZ2V0T25lUGl4ZWw6ZnVuY3Rpb24odSxjLGwscCl7dmFyIGQ9MDtzd2l0Y2gobCl7Y2FzZSAwOmQ9cC5nZXRJbnQ4KGMpO2JyZWFrO2Nhc2UgMTpkPXAuZ2V0VWludDgoYyk7YnJlYWs7Y2FzZSAyOmQ9cC5nZXRJbnQxNihjLCEwKTticmVhaztjYXNlIDM6ZD1wLmdldFVpbnQxNihjLCEwKTticmVhaztjYXNlIDQ6ZD1wLmdldEludDMyKGMsITApO2JyZWFrO2Nhc2UgNTpkPXAuZ2V0VUludDMyKGMsITApO2JyZWFrO2Nhc2UgNjpkPXAuZ2V0RmxvYXQzMihjLCEwKTticmVhaztjYXNlIDc6ZD1wLmdldEZsb2F0NjQoYywhMCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJ0aGUgZGVjb2RlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoaXMgcGl4ZWwgdHlwZSJ9cmV0dXJuIGR9fSxzPWZ1bmN0aW9uKHUsYyxsKXt0aGlzLnZhbD11LHRoaXMubGVmdD1jLHRoaXMucmlnaHQ9bH0sZj17ZGVjb2RlOmZ1bmN0aW9uKHUsYyl7Yz1jfHx7fTt2YXIgbD1jLm5vRGF0YVZhbHVlLHA9MCxkPXt9O2lmKGQucHRyPWMuaW5wdXRPZmZzZXR8fDAsZC5waXhlbHM9e30sISFpLnJlYWRIZWFkZXJJbmZvKHUsZCkpe3ZhciBoPWQuaGVhZGVySW5mbyxfPWguZmlsZVZlcnNpb24sZz1pLmdldERhdGFUeXBlQXJyYXkoaC5pbWFnZVR5cGUpO2kucmVhZE1hc2sodSxkKSxoLm51bVZhbGlkUGl4ZWwhPT1oLndpZHRoKmguaGVpZ2h0JiYhZC5waXhlbHMucmVzdWx0TWFzayYmKGQucGl4ZWxzLnJlc3VsdE1hc2s9Yy5tYXNrRGF0YSk7dmFyIGI9aC53aWR0aCpoLmhlaWdodDtpZihkLnBpeGVscy5yZXN1bHRQaXhlbHM9bmV3IGcoYipoLm51bURpbXMpLGQuY291bnRlcj17b25lc3dlZXA6MCx1bmNvbXByZXNzZWQ6MCxsdXQ6MCxiaXRzdHVmZmVyOjAsY29uc3RhbnQ6MCxjb25zdGFudG9mZnNldDowfSxoLm51bVZhbGlkUGl4ZWwhPT0wKWlmKGguek1heD09PWguek1pbilpLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShkKTtlbHNlIGlmKF8+PTQmJmkuY2hlY2tNaW5NYXhSYW5nZXModSxkKSlpLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShkKTtlbHNle3ZhciB3PW5ldyBEYXRhVmlldyh1LGQucHRyLDIpLE89dy5nZXRVaW50OCgwKTtpZihkLnB0cisrLE8paS5yZWFkRGF0YU9uZVN3ZWVwKHUsZCxnKTtlbHNlIGlmKF8+MSYmaC5pbWFnZVR5cGU8PTEmJk1hdGguYWJzKGgubWF4WkVycm9yLS41KTwxZS01KXt2YXIgRT13LmdldFVpbnQ4KDEpO2lmKGQucHRyKyssZC5lbmNvZGVNb2RlPUUsRT4yfHxfPDQmJkU+MSl0aHJvdyJJbnZhbGlkIEh1ZmZtYW4gZmxhZyAiK0U7RT9pLnJlYWRIdWZmbWFuKHUsZCxnKTppLnJlYWRUaWxlcyh1LGQsZyl9ZWxzZSBpLnJlYWRUaWxlcyh1LGQsZyl9ZC5lb2ZPZmZzZXQ9ZC5wdHI7dmFyIFQ7Yy5pbnB1dE9mZnNldD8oVD1kLmhlYWRlckluZm8uYmxvYlNpemUrYy5pbnB1dE9mZnNldC1kLnB0cixNYXRoLmFicyhUKT49MSYmKGQuZW9mT2Zmc2V0PWMuaW5wdXRPZmZzZXQrZC5oZWFkZXJJbmZvLmJsb2JTaXplKSk6KFQ9ZC5oZWFkZXJJbmZvLmJsb2JTaXplLWQucHRyLE1hdGguYWJzKFQpPj0xJiYoZC5lb2ZPZmZzZXQ9ZC5oZWFkZXJJbmZvLmJsb2JTaXplKSk7dmFyIHg9e3dpZHRoOmgud2lkdGgsaGVpZ2h0OmguaGVpZ2h0LHBpeGVsRGF0YTpkLnBpeGVscy5yZXN1bHRQaXhlbHMsbWluVmFsdWU6aC56TWluLG1heFZhbHVlOmguek1heCx2YWxpZFBpeGVsQ291bnQ6aC5udW1WYWxpZFBpeGVsLGRpbUNvdW50OmgubnVtRGltcyxkaW1TdGF0czp7bWluVmFsdWVzOmgubWluVmFsdWVzLG1heFZhbHVlczpoLm1heFZhbHVlc30sbWFza0RhdGE6ZC5waXhlbHMucmVzdWx0TWFza307aWYoZC5waXhlbHMucmVzdWx0TWFzayYmaS5pc1ZhbGlkUGl4ZWxWYWx1ZShoLmltYWdlVHlwZSxsKSl7dmFyIE09ZC5waXhlbHMucmVzdWx0TWFzaztmb3IocD0wO3A8YjtwKyspTVtwXXx8KHgucGl4ZWxEYXRhW3BdPWwpO3gubm9EYXRhVmFsdWU9bH1yZXR1cm4gZC5ub0RhdGFWYWx1ZT1sLGMucmV0dXJuRmlsZUluZm8mJih4LmZpbGVJbmZvPWkuZm9ybWF0RmlsZUluZm8oZCkpLHh9fSxnZXRCYW5kQ291bnQ6ZnVuY3Rpb24odSl7dmFyIGM9MCxsPTAscD17fTtmb3IocC5wdHI9MCxwLnBpeGVscz17fTtsPHUuYnl0ZUxlbmd0aC01ODspaS5yZWFkSGVhZGVySW5mbyh1LHApLGwrPXAuaGVhZGVySW5mby5ibG9iU2l6ZSxjKysscC5wdHI9bDtyZXR1cm4gY319O3JldHVybiBmfSgpLG49ZnVuY3Rpb24oKXt2YXIgcj1uZXcgQXJyYXlCdWZmZXIoNCksaT1uZXcgVWludDhBcnJheShyKSxzPW5ldyBVaW50MzJBcnJheShyKTtyZXR1cm4gc1swXT0xLGlbMF09PT0xfSgpLG89e2RlY29kZTpmdW5jdGlvbihyLGkpe2lmKCFuKXRocm93IkJpZyBlbmRpYW4gc3lzdGVtIGlzIG5vdCBzdXBwb3J0ZWQuIjtpPWl8fHt9O3ZhciBzPWkuaW5wdXRPZmZzZXR8fDAsZj1uZXcgVWludDhBcnJheShyLHMsMTApLHU9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGYpLGMsbDtpZih1LnRyaW0oKT09PSJDbnRaSW1hZ2UiKWM9dCxsPTE7ZWxzZSBpZih1LnN1YnN0cmluZygwLDUpPT09IkxlcmMyIiljPWUsbD0yO2Vsc2UgdGhyb3ciVW5leHBlY3RlZCBmaWxlIGlkZW50aWZpZXIgc3RyaW5nOiAiK3U7Zm9yKHZhciBwPTAsZD1yLmJ5dGVMZW5ndGgtMTAsaCxfPVtdLGcsYix3PXt3aWR0aDowLGhlaWdodDowLHBpeGVsczpbXSxwaXhlbFR5cGU6aS5waXhlbFR5cGUsbWFzazpudWxsLHN0YXRpc3RpY3M6W119O3M8ZDspe3ZhciBPPWMuZGVjb2RlKHIse2lucHV0T2Zmc2V0OnMsZW5jb2RlZE1hc2tEYXRhOmgsbWFza0RhdGE6YixyZXR1cm5NYXNrOnA9PT0wLHJldHVybkVuY29kZWRNYXNrOnA9PT0wLHJldHVybkZpbGVJbmZvOiEwLHBpeGVsVHlwZTppLnBpeGVsVHlwZXx8bnVsbCxub0RhdGFWYWx1ZTppLm5vRGF0YVZhbHVlfHxudWxsfSk7cz1PLmZpbGVJbmZvLmVvZk9mZnNldCxwPT09MCYmKGg9Ty5lbmNvZGVkTWFza0RhdGEsYj1PLm1hc2tEYXRhLHcud2lkdGg9Ty53aWR0aCx3LmhlaWdodD1PLmhlaWdodCx3LmRpbUNvdW50PU8uZGltQ291bnR8fDEsdy5waXhlbFR5cGU9Ty5waXhlbFR5cGV8fE8uZmlsZUluZm8ucGl4ZWxUeXBlLHcubWFzaz1PLm1hc2tEYXRhKSxsPjEmJk8uZmlsZUluZm8ubWFzayYmTy5maWxlSW5mby5tYXNrLm51bUJ5dGVzPjAmJl8ucHVzaChPLm1hc2tEYXRhKSxwKyssdy5waXhlbHMucHVzaChPLnBpeGVsRGF0YSksdy5zdGF0aXN0aWNzLnB1c2goe21pblZhbHVlOk8ubWluVmFsdWUsbWF4VmFsdWU6Ty5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpPLm5vRGF0YVZhbHVlLGRpbVN0YXRzOk8uZGltU3RhdHN9KX12YXIgRSxULHg7aWYobD4xJiZfLmxlbmd0aD4xKXtmb3IoeD13LndpZHRoKncuaGVpZ2h0LHcuYmFuZE1hc2tzPV8sYj1uZXcgVWludDhBcnJheSh4KSxiLnNldChfWzBdKSxFPTE7RTxfLmxlbmd0aDtFKyspZm9yKGc9X1tFXSxUPTA7VDx4O1QrKyliW1RdPWJbVF0mZ1tUXTt3Lm1hc2tEYXRhPWJ9cmV0dXJuIHd9fTt0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbXSxmdW5jdGlvbigpe3JldHVybiBvfSk6dHlwZW9mIEpkPCJ1IiYmSmQuZXhwb3J0cz9KZC5leHBvcnRzPW86dGhpcy5MZXJjPW99KSgpfSk7dmFyIG1nPXt9O2xlKG1nLHtkZWZhdWx0OigpPT52VX0pO2Z1bmN0aW9uIElVKHQsZSl7aWYodC5lbmNvZGluZz09PWkyLkxFUkMpe2xldCByO3RyeXtyPXUyLmRlZmF1bHQuZGVjb2RlKHQuaGVpZ2h0bWFwKX1jYXRjaChzKXt0aHJvdyBuZXcgQWUocyl9aWYoci5zdGF0aXN0aWNzWzBdLm1pblZhbHVlPT09TnVtYmVyLk1BWF9WQUxVRSl0aHJvdyBuZXcgQWUoIkludmFsaWQgdGlsZSBkYXRhIik7dC5oZWlnaHRtYXA9ci5waXhlbHNbMF0sdC53aWR0aD1yLndpZHRoLHQuaGVpZ2h0PXIuaGVpZ2h0fXQuZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQpLHQucmVjdGFuZ2xlPU50LmNsb25lKHQucmVjdGFuZ2xlKTtsZXQgbj1jMi5jb21wdXRlVmVydGljZXModCksbz1uLnZlcnRpY2VzO3JldHVybiBlLnB1c2goby5idWZmZXIpLHt2ZXJ0aWNlczpvLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6bi5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDpuLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDpuLm1heGltdW1IZWlnaHQsZ3JpZFdpZHRoOnQud2lkdGgsZ3JpZEhlaWdodDp0LmhlaWdodCxib3VuZGluZ1NwaGVyZTNEOm4uYm91bmRpbmdTcGhlcmUzRCxvcmllbnRlZEJvdW5kaW5nQm94Om4ub3JpZW50ZWRCb3VuZGluZ0JveCxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpuLm9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlLGVuY29kaW5nOm4uZW5jb2Rpbmcsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6bi53ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aCxzb3V0aEluZGljZXNFYXN0VG9XZXN0Om4uc291dGhJbmRpY2VzRWFzdFRvV2VzdCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpuLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6bi5ub3J0aEluZGljZXNXZXN0VG9FYXN0fX12YXIgdTIsdlUsaGc9JCgoKT0+eyR0KCk7czIoKTthMigpO1RuKCk7dGkoKTt1Mj1tcihmMigpLDEpO1puKCk7dlU9VWUoSVUpfSk7ZnVuY3Rpb24gVm8oKXtELnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9ZnVuY3Rpb24gbTIodCxlKXtsZXQgbj1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkodCkscj1uZXcgQXJyYXkoZSksaT1uZXcgQXJyYXkodCkscztmb3Iocz0wO3M8dDsrK3MpaVtzXT1zLG9bc109dCplLTEtcztmb3Iocz0wO3M8ZTsrK3MpcltzXT0ocysxKSp0LTEsbltzXT0oZS1zLTEpKnQ7cmV0dXJue3dlc3RJbmRpY2VzU291dGhUb05vcnRoOm4sc291dGhJbmRpY2VzRWFzdFRvV2VzdDpvLGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOnIsbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDppfX1mdW5jdGlvbiBoMih0LGUsbixvKXtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8ZS0xOysraSl7Zm9yKGxldCBzPTA7czx0LTE7KytzKXtsZXQgZj1yLHU9Zit0LGM9dSsxLGw9ZisxO25bbysrXT1mLG5bbysrXT11LG5bbysrXT1sLG5bbysrXT1sLG5bbysrXT11LG5bbysrXT1jLCsrcn0rK3J9fWZ1bmN0aW9uIHRtKHQsZSxuLG8pe2xldCByPXRbMF0saT10Lmxlbmd0aDtmb3IobGV0IHM9MTtzPGk7KytzKXtsZXQgZj10W3NdO25bbysrXT1yLG5bbysrXT1mLG5bbysrXT1lLG5bbysrXT1lLG5bbysrXT1mLG5bbysrXT1lKzEscj1mLCsrZX1yZXR1cm4gb312YXIgbDIscDIsZDIsXzIseTI9JCgoKT0+e2Z0KCk7SHQoKTtaZSgpO0t0KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVm8ucHJvdG90eXBlLHtlcnJvckV2ZW50OntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY3JlZGl0OntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sdGlsaW5nU2NoZW1lOntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzV2F0ZXJNYXNrOntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzVmVydGV4Tm9ybWFsczp7Z2V0OkQudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGF2YWlsYWJpbGl0eTp7Z2V0OkQudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7bDI9W107Vm8uZ2V0UmVndWxhckdyaWRJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYodCplPj1QLkZPVVJfR0lHQUJZVEVTKXRocm93IG5ldyBEKCJUaGUgdG90YWwgbnVtYmVyIG9mIHZlcnRpY2VzICh3aWR0aCAqIGhlaWdodCkgbXVzdCBiZSBsZXNzIHRoYW4gNCwyOTQsOTY3LDI5Ni4iKTtsZXQgbj1sMlt0XTttKG4pfHwobDJbdF09bj1bXSk7bGV0IG89bltlXTtyZXR1cm4gbShvKXx8KHQqZTxQLlNJWFRZX0ZPVVJfS0lMT0JZVEVTP289bltlXT1uZXcgVWludDE2QXJyYXkoKHQtMSkqKGUtMSkqNik6bz1uW2VdPW5ldyBVaW50MzJBcnJheSgodC0xKSooZS0xKSo2KSxoMih0LGUsbywwKSksb307cDI9W107Vm8uZ2V0UmVndWxhckdyaWRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PVAuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IEQoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBuPXAyW3RdO20obil8fChwMlt0XT1uPVtdKTtsZXQgbz1uW2VdO2lmKCFtKG8pKXtsZXQgcj1Wby5nZXRSZWd1bGFyR3JpZEluZGljZXModCxlKSxpPW0yKHQsZSkscz1pLndlc3RJbmRpY2VzU291dGhUb05vcnRoLGY9aS5zb3V0aEluZGljZXNFYXN0VG9XZXN0LHU9aS5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxjPWkubm9ydGhJbmRpY2VzV2VzdFRvRWFzdDtvPW5bZV09e2luZGljZXM6cix3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpzLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6ZixlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDp1LG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6Y319cmV0dXJuIG99O2QyPVtdO1ZvLmdldFJlZ3VsYXJHcmlkQW5kU2tpcnRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PVAuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IEQoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBuPWQyW3RdO20obil8fChkMlt0XT1uPVtdKTtsZXQgbz1uW2VdO2lmKCFtKG8pKXtsZXQgcj10KmUsaT0odC0xKSooZS0xKSo2LHM9dCoyK2UqMixmPU1hdGgubWF4KDAscy00KSo2LHU9citzLGM9aStmLGw9bTIodCxlKSxwPWwud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsZD1sLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsaD1sLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLF89bC5ub3J0aEluZGljZXNXZXN0VG9FYXN0LGc9THQuY3JlYXRlVHlwZWRBcnJheSh1LGMpO2gyKHQsZSxnLDApLFZvLmFkZFNraXJ0SW5kaWNlcyhwLGQsaCxfLHIsZyxpKSxvPW5bZV09e2luZGljZXM6Zyx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpwLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6ZCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6XyxpbmRleENvdW50V2l0aG91dFNraXJ0czppfX1yZXR1cm4gb307Vm8uYWRkU2tpcnRJbmRpY2VzPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPXI7cz10bSh0LGYsaSxzKSxmKz10Lmxlbmd0aCxzPXRtKGUsZixpLHMpLGYrPWUubGVuZ3RoLHM9dG0obixmLGkscyksZis9bi5sZW5ndGgsdG0obyxmLGkscyl9O1ZvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5PS4yNTtWby5nZXRFc3RpbWF0ZWRMZXZlbFplcm9HZW9tZXRyaWNFcnJvckZvckFIZWlnaHRtYXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1heGltdW1SYWRpdXMqMipNYXRoLlBJKlZvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5LyhlKm4pfTtWby5wcm90b3R5cGUucmVxdWVzdFRpbGVHZW9tZXRyeT1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5nZXRMZXZlbE1heGltdW1HZW9tZXRyaWNFcnJvcj1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5nZXRUaWxlRGF0YUF2YWlsYWJsZT1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5sb2FkVGlsZURhdGFBdmFpbGFiaWxpdHk9RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcjtfMj1Wb30pO3ZhciB5Zz17fTtsZSh5Zyx7ZGVmYXVsdDooKT0+QlV9KTtmdW5jdGlvbiBEVSh0LGUpe2xldCBuPXQucXVhbnRpemVkVmVydGljZXMsbz1uLmxlbmd0aC8zLHI9dC5vY3RFbmNvZGVkTm9ybWFscyxpPXQud2VzdEluZGljZXMubGVuZ3RoK3QuZWFzdEluZGljZXMubGVuZ3RoK3Quc291dGhJbmRpY2VzLmxlbmd0aCt0Lm5vcnRoSW5kaWNlcy5sZW5ndGgscz10LmluY2x1ZGVXZWJNZXJjYXRvclQsZj10LmV4YWdnZXJhdGlvbix1PXQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsbD1mIT09MSxwPU50LmNsb25lKHQucmVjdGFuZ2xlKSxkPXAud2VzdCxoPXAuc291dGgsXz1wLmVhc3QsZz1wLm5vcnRoLGI9WS5jbG9uZSh0LmVsbGlwc29pZCksdz10Lm1pbmltdW1IZWlnaHQsTz10Lm1heGltdW1IZWlnaHQsRT10LnJlbGF0aXZlVG9DZW50ZXIsVD0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShFLGIpLHg9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKFQsbmV3IHN0KSxNLE47cyYmKE09cm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShoKSxOPTEvKHJvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoZyktTSkpO2xldCBGPW4uc3ViYXJyYXkoMCxvKSxJPW4uc3ViYXJyYXkobywyKm8pLHY9bi5zdWJhcnJheShvKjIsMypvKSxCPW0ociksQT1uZXcgQXJyYXkobyksUz1uZXcgQXJyYXkobyksQz1uZXcgQXJyYXkobyksTD1zP25ldyBBcnJheShvKTpbXSx6PWw/bmV3IEFycmF5KG8pOltdLGo9RlU7ai54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxqLnk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGouej1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bGV0IGs9TFU7ay54PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxrLnk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGsuej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IHE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFc9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG50PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmb3IobGV0IFl0PTA7WXQ8bzsrK1l0KXtsZXQgemU9RltZdF0sZG49SVtZdF0sc249emUvX2csbW49ZG4vX2csbG89UC5sZXJwKHcsTyx2W1l0XS9fZyk7Sm4ubG9uZ2l0dWRlPVAubGVycChkLF8sc24pLEpuLmxhdGl0dWRlPVAubGVycChoLGcsbW4pLEpuLmhlaWdodD1sbyxxPU1hdGgubWluKEpuLmxvbmdpdHVkZSxxKSxXPU1hdGgubWF4KEpuLmxvbmdpdHVkZSxXKSxSPU1hdGgubWluKEpuLmxhdGl0dWRlLFIpLG50PU1hdGgubWF4KEpuLmxhdGl0dWRlLG50KTtsZXQgcW49Yi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihKbik7QVtZdF09bmV3IEooc24sbW4pLFNbWXRdPWxvLENbWXRdPXFuLHMmJihMW1l0XT0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShKbi5sYXRpdHVkZSktTSkqTiksbCYmKHpbWXRdPWIuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHFuKSksc3QubXVsdGlwbHlCeVBvaW50KHgscW4sdXUpLGEubWluaW11bUJ5Q29tcG9uZW50KHV1LGosaiksYS5tYXhpbXVtQnlDb21wb25lbnQodXUsayxrKX1sZXQgYXQ9b20odC53ZXN0SW5kaWNlcyxmdW5jdGlvbihZdCx6ZSl7cmV0dXJuIEFbWXRdLnktQVt6ZV0ueX0pLGx0PW9tKHQuZWFzdEluZGljZXMsZnVuY3Rpb24oWXQsemUpe3JldHVybiBBW3plXS55LUFbWXRdLnl9KSxfdD1vbSh0LnNvdXRoSW5kaWNlcyxmdW5jdGlvbihZdCx6ZSl7cmV0dXJuIEFbemVdLngtQVtZdF0ueH0pLG90PW9tKHQubm9ydGhJbmRpY2VzLGZ1bmN0aW9uKFl0LHplKXtyZXR1cm4gQVtZdF0ueC1BW3plXS54fSksUHQ7dzwwJiYoUHQ9bmV3IFBzKGIpLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZChFLEMsdykpO2xldCBndD13O2d0PU1hdGgubWluKGd0LGVtKHQud2VzdEluZGljZXMsdC53ZXN0U2tpcnRIZWlnaHQsUyxBLHAsYix4LGosaykpLGd0PU1hdGgubWluKGd0LGVtKHQuc291dGhJbmRpY2VzLHQuc291dGhTa2lydEhlaWdodCxTLEEscCxiLHgsaixrKSksZ3Q9TWF0aC5taW4oZ3QsZW0odC5lYXN0SW5kaWNlcyx0LmVhc3RTa2lydEhlaWdodCxTLEEscCxiLHgsaixrKSksZ3Q9TWF0aC5taW4oZ3QsZW0odC5ub3J0aEluZGljZXMsdC5ub3J0aFNraXJ0SGVpZ2h0LFMsQSxwLGIseCxqLGspKTtsZXQgUnQ9bmV3IERpKGosayxFKSxkdD1uZXcgTXMoRSxSdCxndCxPLFQsQixzLGwsZix1KSxydD1kdC5zdHJpZGUseHQ9bypydCtpKnJ0LEd0PW5ldyBGbG9hdDMyQXJyYXkoeHQpLHBlPTA7Zm9yKGxldCBZdD0wO1l0PG87KytZdCl7aWYoQil7bGV0IHplPVl0KjI7a2EueD1yW3plXSxrYS55PXJbemUrMV19cGU9ZHQuZW5jb2RlKEd0LHBlLENbWXRdLEFbWXRdLFNbWXRdLGthLExbWXRdLHpbWXRdKX1sZXQgcmU9TWF0aC5tYXgoMCwoaS00KSoyKSxkZT10LmluZGljZXMubGVuZ3RoK3JlKjMsZmU9THQuY3JlYXRlVHlwZWRBcnJheShvK2ksZGUpO2ZlLnNldCh0LmluZGljZXMsMCk7bGV0IFp0PTFlLTQsUXQ9KFctcSkqWnQsTmU9KG50LVIpKlp0LGdlPS1RdCxFZT0wLHVuPVF0LFZlPTAsYmU9MCxsbj1OZSxwbj0wLEVuPS1OZSxvZT1vKnJ0O3JldHVybiBubShHdCxvZSxhdCxkdCxTLEEscixiLHAsdC53ZXN0U2tpcnRIZWlnaHQsTSxOLGdlLEVlKSxvZSs9dC53ZXN0SW5kaWNlcy5sZW5ndGgqcnQsbm0oR3Qsb2UsX3QsZHQsUyxBLHIsYixwLHQuc291dGhTa2lydEhlaWdodCxNLE4scG4sRW4pLG9lKz10LnNvdXRoSW5kaWNlcy5sZW5ndGgqcnQsbm0oR3Qsb2UsbHQsZHQsUyxBLHIsYixwLHQuZWFzdFNraXJ0SGVpZ2h0LE0sTix1bixWZSksb2UrPXQuZWFzdEluZGljZXMubGVuZ3RoKnJ0LG5tKEd0LG9lLG90LGR0LFMsQSxyLGIscCx0Lm5vcnRoU2tpcnRIZWlnaHQsTSxOLGJlLGxuKSxfMi5hZGRTa2lydEluZGljZXMoYXQsX3QsbHQsb3QsbyxmZSx0LmluZGljZXMubGVuZ3RoKSxlLnB1c2goR3QuYnVmZmVyLGZlLmJ1ZmZlcikse3ZlcnRpY2VzOkd0LmJ1ZmZlcixpbmRpY2VzOmZlLmJ1ZmZlcix3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDphdCxzb3V0aEluZGljZXNFYXN0VG9XZXN0Ol90LGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOmx0LG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6b3QsdmVydGV4U3RyaWRlOnJ0LGNlbnRlcjpFLG1pbmltdW1IZWlnaHQ6dyxtYXhpbXVtSGVpZ2h0Ok8sb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6UHQsZW5jb2Rpbmc6ZHQsaW5kZXhDb3VudFdpdGhvdXRTa2lydHM6dC5pbmRpY2VzLmxlbmd0aH19ZnVuY3Rpb24gZW0odCxlLG4sbyxyLGkscyxmLHUpe2xldCBjPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxsPXIubm9ydGgscD1yLnNvdXRoLGQ9ci5lYXN0LGg9ci53ZXN0O2Q8aCYmKGQrPVAuVFdPX1BJKTtsZXQgXz10Lmxlbmd0aDtmb3IobGV0IGc9MDtnPF87KytnKXtsZXQgYj10W2ddLHc9bltiXSxPPW9bYl07Sm4ubG9uZ2l0dWRlPVAubGVycChoLGQsTy54KSxKbi5sYXRpdHVkZT1QLmxlcnAocCxsLE8ueSksSm4uaGVpZ2h0PXctZTtsZXQgRT1pLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEpuLHV1KTtzdC5tdWx0aXBseUJ5UG9pbnQocyxFLEUpLGEubWluaW11bUJ5Q29tcG9uZW50KEUsZixmKSxhLm1heGltdW1CeUNvbXBvbmVudChFLHUsdSksYz1NYXRoLm1pbihjLEpuLmhlaWdodCl9cmV0dXJuIGN9ZnVuY3Rpb24gbm0odCxlLG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoKXtsZXQgXz1tKHMpLGc9dS5ub3J0aCxiPXUuc291dGgsdz11LmVhc3QsTz11Lndlc3Q7dzxPJiYodys9UC5UV09fUEkpO2xldCBFPW4ubGVuZ3RoO2ZvcihsZXQgVD0wO1Q8RTsrK1Qpe2xldCB4PW5bVF0sTT1yW3hdLE49aVt4XTtKbi5sb25naXR1ZGU9UC5sZXJwKE8sdyxOLngpK2QsSm4ubGF0aXR1ZGU9UC5sZXJwKGIsZyxOLnkpK2gsSm4uaGVpZ2h0PU0tYztsZXQgRj1mLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEpuLHV1KTtpZihfKXtsZXQgQj14KjI7a2EueD1zW0JdLGthLnk9c1tCKzFdfWxldCBJO28uaGFzV2ViTWVyY2F0b3JUJiYoST0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShKbi5sYXRpdHVkZSktbCkqcCk7bGV0IHY7by5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzJiYodj1mLmdlb2RldGljU3VyZmFjZU5vcm1hbChGKSksZT1vLmVuY29kZSh0LGUsRixOLEpuLmhlaWdodCxrYSxJLHYpfX1mdW5jdGlvbiBvbSh0LGUpe2xldCBuO3JldHVybiB0eXBlb2YgdC5zbGljZT09ImZ1bmN0aW9uIiYmKG49dC5zbGljZSgpLHR5cGVvZiBuLnNvcnQhPSJmdW5jdGlvbiImJihuPXZvaWQgMCkpLG0obil8fChuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKSxuLnNvcnQoZSksbn12YXIgX2csdXUsRlUsTFUsSm4sa2EsQlUsZ2c9JCgoKT0+e1BmKCk7a2UoKTtEdCgpO0llKCk7ZnQoKTskdCgpO2N1KCk7WmUoKTtLdCgpO2tuKCk7VG4oKTthdSgpO3kyKCk7YXMoKTtzYygpO1puKCk7X2c9MzI3NjcsdXU9bmV3IGEsRlU9bmV3IGEsTFU9bmV3IGEsSm49bmV3IGN0LGthPW5ldyBKO0JVPVVlKERVKX0pO2Z1bmN0aW9uIFVVKHQsZSl7cmV0dXJuIFAuZXF1YWxzRXBzaWxvbih0LmxhdGl0dWRlLGUubGF0aXR1ZGUsUC5FUFNJTE9OMTApJiZQLmVxdWFsc0Vwc2lsb24odC5sb25naXR1ZGUsZS5sb25naXR1ZGUsUC5FUFNJTE9OMTApfWZ1bmN0aW9uIFZVKHQsZSxuLG8pe2U9Q24oZSxhLmVxdWFsc0Vwc2lsb24pO2xldCByPWUubGVuZ3RoO2lmKHI8MilyZXR1cm47bGV0IGk9bShvKSxzPW0obiksZj1uZXcgQXJyYXkociksdT1uZXcgQXJyYXkociksYz1uZXcgQXJyYXkociksbD1lWzBdO2ZbMF09bDtsZXQgcD10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGwsa1UpO3MmJihwLmhlaWdodD1uWzBdKSx1WzBdPXAuaGVpZ2h0LGk/Y1swXT1vWzBdOmNbMF09MDtsZXQgZD11WzBdLGg9Y1swXSxfPWQ9PT1oLGc9MTtmb3IobGV0IGI9MTtiPHI7KytiKXtsZXQgdz1lW2JdLE89dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh3LEdVKTtzJiYoTy5oZWlnaHQ9bltiXSksXz1fJiZPLmhlaWdodD09PTAsVVUocCxPKT9wLmhlaWdodDxPLmhlaWdodCYmKHVbZy0xXT1PLmhlaWdodCk6KGZbZ109dyx1W2ddPU8uaGVpZ2h0LGk/Y1tnXT1vW2JdOmNbZ109MCxfPV8mJnVbZ109PT1jW2ddLGN0LmNsb25lKE8scCksKytnKX1pZighKF98fGc8MikpcmV0dXJuIGYubGVuZ3RoPWcsdS5sZW5ndGg9ZyxjLmxlbmd0aD1nLHtwb3NpdGlvbnM6Zix0b3BIZWlnaHRzOnUsYm90dG9tSGVpZ2h0czpjfX12YXIgZzIsa1UsR1UselUsalUsSFUscm0sQWc9JCgoKT0+e0hyKCk7RHQoKTtJZSgpO2Z0KCk7S3QoKTtnYSgpO2cyPXt9O2tVPW5ldyBjdCxHVT1uZXcgY3Q7elU9bmV3IEFycmF5KDIpLGpVPW5ldyBBcnJheSgyKSxIVT17cG9zaXRpb25zOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxlbGxpcHNvaWQ6dm9pZCAwfTtnMi5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxuLG8scixpKXtsZXQgcz1WVSh0LGUsbixvKTtpZighbShzKSlyZXR1cm47ZT1zLnBvc2l0aW9ucyxuPXMudG9wSGVpZ2h0cyxvPXMuYm90dG9tSGVpZ2h0cztsZXQgZj1lLmxlbmd0aCx1PWYtMixjLGwscD1QLmNob3JkTGVuZ3RoKHIsdC5tYXhpbXVtUmFkaXVzKSxkPUhVO2lmKGQubWluRGlzdGFuY2U9cCxkLmVsbGlwc29pZD10LGkpe2xldCBoPTAsXztmb3IoXz0wO188Zi0xO18rKyloKz1Bbi5udW1iZXJPZlBvaW50cyhlW19dLGVbXysxXSxwKSsxO2M9bmV3IEZsb2F0NjRBcnJheShoKjMpLGw9bmV3IEZsb2F0NjRBcnJheShoKjMpO2xldCBnPXpVLGI9alU7ZC5wb3NpdGlvbnM9ZyxkLmhlaWdodD1iO2xldCB3PTA7Zm9yKF89MDtfPGYtMTtfKyspe2dbMF09ZVtfXSxnWzFdPWVbXysxXSxiWzBdPW5bX10sYlsxXT1uW18rMV07bGV0IE89QW4uZ2VuZXJhdGVBcmMoZCk7Yy5zZXQoTyx3KSxiWzBdPW9bX10sYlsxXT1vW18rMV0sbC5zZXQoQW4uZ2VuZXJhdGVBcmMoZCksdyksdys9Ty5sZW5ndGh9fWVsc2UgZC5wb3NpdGlvbnM9ZSxkLmhlaWdodD1uLGM9bmV3IEZsb2F0NjRBcnJheShBbi5nZW5lcmF0ZUFyYyhkKSksZC5oZWlnaHQ9byxsPW5ldyBGbG9hdDY0QXJyYXkoQW4uZ2VuZXJhdGVBcmMoZCkpO3JldHVybntib3R0b21Qb3NpdGlvbnM6bCx0b3BQb3NpdGlvbnM6YyxudW1Db3JuZXJzOnV9fTtybT1nMn0pO2Z1bmN0aW9uIFJjKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zLG49dC5tYXhpbXVtSGVpZ2h0cyxvPXQubWluaW11bUhlaWdodHM7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2lmKG0obikmJm4ubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9zaXRpb25zIGFuZCBvcHRpb25zLm1heGltdW1IZWlnaHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGguIik7aWYobShvKSYmby5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWluaW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtsZXQgcj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxpPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHM9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdDt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9taW5pbXVtSGVpZ2h0cz1vLHRoaXMuX21heGltdW1IZWlnaHRzPW4sdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHIpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUocyksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlV2FsbEdlb21ldHJ5IjtsZXQgZj0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoKzI7bShvKSYmKGYrPW8ubGVuZ3RoKSxtKG4pJiYoZis9bi5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPWYrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzF9dmFyIGJnLGltLHFVLEEyLEtVLFdVLFhVLGIyLHcyLGx1LHdnLFQyPSQoKCk9Pnt2ZSgpO0R0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO1llKCk7JGUoKTthbigpO1plKCk7S3QoKTt0bigpO3hvKCk7QWcoKTtiZz1uZXcgYSxpbT1uZXcgYSxxVT1uZXcgYSxBMj1uZXcgYSxLVT1uZXcgYSxXVT1uZXcgYSxYVT1uZXcgYTtSYy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9taW5pbXVtSGVpZ2h0cztpZihpPW0ocyk/cy5sZW5ndGg6MCxlW24rK109aSxtKHMpKWZvcihvPTA7bzxpOysrbyllW24rK109c1tvXTtsZXQgZj10Ll9tYXhpbXVtSGVpZ2h0cztpZihpPW0oZik/Zi5sZW5ndGg6MCxlW24rK109aSxtKGYpKWZvcihvPTA7bzxpOysrbyllW24rK109ZltvXTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07YjI9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSx3Mj1uZXcgcHQsbHU9e3Bvc2l0aW9uczp2b2lkIDAsbWluaW11bUhlaWdodHM6dm9pZCAwLG1heGltdW1IZWlnaHRzOnZvaWQgMCxlbGxpcHNvaWQ6YjIsdmVydGV4Rm9ybWF0OncyLGdyYW51bGFyaXR5OnZvaWQgMH07UmMudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcztpZihyPjApZm9yKHM9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKXNbb109dFtlKytdO3I9dFtlKytdO2xldCBmO2lmKHI+MClmb3IoZj1uZXcgQXJyYXkociksbz0wO288cjsrK28pZltvXT10W2UrK107bGV0IHU9WS51bnBhY2sodCxlLGIyKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgYz1wdC51bnBhY2sodCxlLHcyKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fbWluaW11bUhlaWdodHM9cyxuLl9tYXhpbXVtSGVpZ2h0cz1mLG4uX2VsbGlwc29pZD1ZLmNsb25lKHUsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoYyxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2dyYW51bGFyaXR5PWwsbik6KGx1LnBvc2l0aW9ucz1pLGx1Lm1pbmltdW1IZWlnaHRzPXMsbHUubWF4aW11bUhlaWdodHM9ZixsdS5ncmFudWxhcml0eT1sLG5ldyBSYyhsdSkpfTtSYy5mcm9tQ29uc3RhbnRIZWlnaHRzPWZ1bmN0aW9uKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbixvLHI9dC5taW5pbXVtSGVpZ2h0LGk9dC5tYXhpbXVtSGVpZ2h0LHM9bShyKSxmPW0oaSk7aWYoc3x8Zil7bGV0IGM9ZS5sZW5ndGg7bj1zP25ldyBBcnJheShjKTp2b2lkIDAsbz1mP25ldyBBcnJheShjKTp2b2lkIDA7Zm9yKGxldCBsPTA7bDxjOysrbClzJiYobltsXT1yKSxmJiYob1tsXT1pKX1sZXQgdT17cG9zaXRpb25zOmUsbWF4aW11bUhlaWdodHM6byxtaW5pbXVtSGVpZ2h0czpuLGVsbGlwc29pZDp0LmVsbGlwc29pZCx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3JldHVybiBuZXcgUmModSl9O1JjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxuPXQuX21pbmltdW1IZWlnaHRzLG89dC5fbWF4aW11bUhlaWdodHMscj10Ll92ZXJ0ZXhGb3JtYXQsaT10Ll9ncmFudWxhcml0eSxzPXQuX2VsbGlwc29pZCxmPXJtLmNvbXB1dGVQb3NpdGlvbnMocyxlLG8sbixpLCEwKTtpZighbShmKSlyZXR1cm47bGV0IHU9Zi5ib3R0b21Qb3NpdGlvbnMsYz1mLnRvcFBvc2l0aW9ucyxsPWYubnVtQ29ybmVycyxwPWMubGVuZ3RoLGQ9cCoyLGg9ci5wb3NpdGlvbj9uZXcgRmxvYXQ2NEFycmF5KGQpOnZvaWQgMCxfPXIubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoZCk6dm9pZCAwLGc9ci50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZCk6dm9pZCAwLGI9ci5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShkKTp2b2lkIDAsdz1yLnN0P25ldyBGbG9hdDMyQXJyYXkoZC8zKjIpOnZvaWQgMCxPPTAsRT0wLFQ9MCx4PTAsTT0wLE49WFUsRj1XVSxJPUtVLHY9ITA7cC89MztsZXQgQixBPTAsUz0xLyhwLWwtMSk7Zm9yKEI9MDtCPHA7KytCKXtsZXQgaz1CKjMscT1hLmZyb21BcnJheShjLGssYmcpLFc9YS5mcm9tQXJyYXkodSxrLGltKTtpZihyLnBvc2l0aW9uJiYoaFtPKytdPVcueCxoW08rK109Vy55LGhbTysrXT1XLnosaFtPKytdPXEueCxoW08rK109cS55LGhbTysrXT1xLnopLHIuc3QmJih3W00rK109QSx3W00rK109MCx3W00rK109QSx3W00rK109MSksci5ub3JtYWx8fHIudGFuZ2VudHx8ci5iaXRhbmdlbnQpe2xldCBSPWEuY2xvbmUoYS5aRVJPLEEyKSxudD1hLnN1YnRyYWN0KHEscy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwocSxpbSksaW0pO2lmKEIrMTxwJiYoUj1hLmZyb21BcnJheShjLGsrMyxBMikpLHYpe2xldCBhdD1hLnN1YnRyYWN0KFIscSxxVSksbHQ9YS5zdWJ0cmFjdChudCxxLGJnKTtOPWEubm9ybWFsaXplKGEuY3Jvc3MobHQsYXQsTiksTiksdj0hMX1hLmVxdWFsc0Vwc2lsb24ocSxSLFAuRVBTSUxPTjEwKT92PSEwOihBKz1TLHIudGFuZ2VudCYmKEY9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdChSLHEsRiksRikpLHIuYml0YW5nZW50JiYoST1hLm5vcm1hbGl6ZShhLmNyb3NzKE4sRixJKSxJKSkpLHIubm9ybWFsJiYoX1tFKytdPU4ueCxfW0UrK109Ti55LF9bRSsrXT1OLnosX1tFKytdPU4ueCxfW0UrK109Ti55LF9bRSsrXT1OLnopLHIudGFuZ2VudCYmKGdbeCsrXT1GLngsZ1t4KytdPUYueSxnW3grK109Ri56LGdbeCsrXT1GLngsZ1t4KytdPUYueSxnW3grK109Ri56KSxyLmJpdGFuZ2VudCYmKGJbVCsrXT1JLngsYltUKytdPUkueSxiW1QrK109SS56LGJbVCsrXT1JLngsYltUKytdPUkueSxiW1QrK109SS56KX19bGV0IEM9bmV3IGllO3IucG9zaXRpb24mJihDLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pKSxyLm5vcm1hbCYmKEMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLHIudGFuZ2VudCYmKEMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Z30pKSxyLmJpdGFuZ2VudCYmKEMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpifSkpLHIuc3QmJihDLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczp3fSkpO2xldCBMPWQvMztkLT02KihsKzEpO2xldCB6PUx0LmNyZWF0ZVR5cGVkQXJyYXkoTCxkKSxqPTA7Zm9yKEI9MDtCPEwtMjtCKz0yKXtsZXQgaz1CLHE9QisyLFc9YS5mcm9tQXJyYXkoaCxrKjMsYmcpLFI9YS5mcm9tQXJyYXkoaCxxKjMsaW0pO2lmKGEuZXF1YWxzRXBzaWxvbihXLFIsUC5FUFNJTE9OMTApKWNvbnRpbnVlO2xldCBudD1CKzEsYXQ9QiszO3pbaisrXT1udCx6W2orK109ayx6W2orK109YXQseltqKytdPWF0LHpbaisrXT1rLHpbaisrXT1xfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6QyxpbmRpY2VzOnoscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6bmV3IEF0LmZyb21WZXJ0aWNlcyhoKX0pfTt3Zz1SY30pO3ZhciBUZz17fTtsZShUZyx7ZGVmYXVsdDooKT0+JFV9KTtmdW5jdGlvbiBZVSh0LGUpe3JldHVybiBtKGUpJiYodD13Zy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx3Zy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgJFUsT2c9JCgoKT0+e2Z0KCk7JHQoKTtUMigpOyRVPVlVfSk7ZnVuY3Rpb24gU2ModCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb3NpdGlvbnMsbj10Lm1heGltdW1IZWlnaHRzLG89dC5taW5pbXVtSGVpZ2h0cztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYobShuKSYmbi5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWF4aW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtpZihtKG8pJiZvLmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBhbmQgb3B0aW9ucy5taW5pbXVtSGVpZ2h0cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2xldCByPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLGk9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdDt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9taW5pbXVtSGVpZ2h0cz1vLHRoaXMuX21heGltdW1IZWlnaHRzPW4sdGhpcy5fZ3JhbnVsYXJpdHk9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShpKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5IjtsZXQgcz0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoKzI7bShvKSYmKHMrPW8ubGVuZ3RoKSxtKG4pJiYocys9bi5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPXMrWS5wYWNrZWRMZW5ndGgrMX12YXIgTzIsRTIsUjIscHUsRWcsUzI9JCgoKT0+e3ZlKCk7RHQoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7WmUoKTtLdCgpO3RuKCk7QWcoKTtPMj1uZXcgYSxFMj1uZXcgYTtTYy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9taW5pbXVtSGVpZ2h0cztpZihpPW0ocyk/cy5sZW5ndGg6MCxlW24rK109aSxtKHMpKWZvcihvPTA7bzxpOysrbyllW24rK109c1tvXTtsZXQgZj10Ll9tYXhpbXVtSGVpZ2h0cztpZihpPW0oZik/Zi5sZW5ndGg6MCxlW24rK109aSxtKGYpKWZvcihvPTA7bzxpOysrbyllW24rK109ZltvXTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07UjI9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxwdT17cG9zaXRpb25zOnZvaWQgMCxtaW5pbXVtSGVpZ2h0czp2b2lkIDAsbWF4aW11bUhlaWdodHM6dm9pZCAwLGVsbGlwc29pZDpSMixncmFudWxhcml0eTp2b2lkIDB9O1NjLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM7aWYocj4wKWZvcihzPW5ldyBBcnJheShyKSxvPTA7bzxyOysrbylzW29dPXRbZSsrXTtyPXRbZSsrXTtsZXQgZjtpZihyPjApZm9yKGY9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKWZbb109dFtlKytdO2xldCB1PVkudW5wYWNrKHQsZSxSMik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGM9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fbWluaW11bUhlaWdodHM9cyxuLl9tYXhpbXVtSGVpZ2h0cz1mLG4uX2VsbGlwc29pZD1ZLmNsb25lKHUsbi5fZWxsaXBzb2lkKSxuLl9ncmFudWxhcml0eT1jLG4pOihwdS5wb3NpdGlvbnM9aSxwdS5taW5pbXVtSGVpZ2h0cz1zLHB1Lm1heGltdW1IZWlnaHRzPWYscHUuZ3JhbnVsYXJpdHk9YyxuZXcgU2MocHUpKX07U2MuZnJvbUNvbnN0YW50SGVpZ2h0cz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7bGV0IG4sbyxyPXQubWluaW11bUhlaWdodCxpPXQubWF4aW11bUhlaWdodCxzPW0ociksZj1tKGkpO2lmKHN8fGYpe2xldCBjPWUubGVuZ3RoO249cz9uZXcgQXJyYXkoYyk6dm9pZCAwLG89Zj9uZXcgQXJyYXkoYyk6dm9pZCAwO2ZvcihsZXQgbD0wO2w8YzsrK2wpcyYmKG5bbF09ciksZiYmKG9bbF09aSl9bGV0IHU9e3Bvc2l0aW9uczplLG1heGltdW1IZWlnaHRzOm8sbWluaW11bUhlaWdodHM6bixlbGxpcHNvaWQ6dC5lbGxpcHNvaWR9O3JldHVybiBuZXcgU2ModSl9O1NjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxuPXQuX21pbmltdW1IZWlnaHRzLG89dC5fbWF4aW11bUhlaWdodHMscj10Ll9ncmFudWxhcml0eSxpPXQuX2VsbGlwc29pZCxzPXJtLmNvbXB1dGVQb3NpdGlvbnMoaSxlLG8sbixyLCExKTtpZighbShzKSlyZXR1cm47bGV0IGY9cy5ib3R0b21Qb3NpdGlvbnMsdT1zLnRvcFBvc2l0aW9ucyxjPXUubGVuZ3RoLGw9YyoyLHA9bmV3IEZsb2F0NjRBcnJheShsKSxkPTA7Yy89MztsZXQgaDtmb3IoaD0wO2g8YzsrK2gpe2xldCBPPWgqMyxFPWEuZnJvbUFycmF5KHUsTyxPMiksVD1hLmZyb21BcnJheShmLE8sRTIpO3BbZCsrXT1ULngscFtkKytdPVQueSxwW2QrK109VC56LHBbZCsrXT1FLngscFtkKytdPUUueSxwW2QrK109RS56fWxldCBfPW5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpwfSl9KSxnPWwvMztsPTIqZy00K2c7bGV0IGI9THQuY3JlYXRlVHlwZWRBcnJheShnLGwpLHc9MDtmb3IoaD0wO2g8Zy0yO2grPTIpe2xldCBPPWgsRT1oKzIsVD1hLmZyb21BcnJheShwLE8qMyxPMikseD1hLmZyb21BcnJheShwLEUqMyxFMik7aWYoYS5lcXVhbHNFcHNpbG9uKFQseCxQLkVQU0lMT04xMCkpY29udGludWU7bGV0IE09aCsxLE49aCszO2JbdysrXT1NLGJbdysrXT1PLGJbdysrXT1NLGJbdysrXT1OLGJbdysrXT1PLGJbdysrXT1FfXJldHVybiBiW3crK109Zy0yLGJbdysrXT1nLTEsbmV3IFV0KHthdHRyaWJ1dGVzOl8saW5kaWNlczpiLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6bmV3IEF0LmZyb21WZXJ0aWNlcyhwKX0pfTtFZz1TY30pO3ZhciBSZz17fTtsZShSZyx7ZGVmYXVsdDooKT0+UVV9KTtmdW5jdGlvbiBaVSh0LGUpe3JldHVybiBtKGUpJiYodD1FZy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxFZy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgUVUsU2c9JCgoKT0+e2Z0KCk7JHQoKTtTMigpO1FVPVpVfSk7dmFyIFBnPVluKChkdSxDZyk9Pnt2YXIga3Q9a3R8fHt9O2t0LnNjb3BlPXt9O2t0LmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKHQpe3ZhciBlPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGU8dC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6dFtlKytdfTp7ZG9uZTohMH19fTtrdC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybntuZXh0Omt0LmFycmF5SXRlcmF0b3JJbXBsKHQpfX07a3QubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuaXRlcmF0b3ImJnRbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gZT9lLmNhbGwodCk6a3QuYXJyYXlJdGVyYXRvcih0KX07a3QuQVNTVU1FX0VTNT0hMTtrdC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTtrdC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTtrdC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExO2t0LklTT0xBVEVfUE9MWUZJTExTPSExO2t0LkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7a3QuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7a3QuZ2V0R2xvYmFsPWZ1bmN0aW9uKHQpe3Q9W3R5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IiYmZ2xvYmFsVGhpcyx0LHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3csdHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmLHR5cGVvZiBnbG9iYWw9PSJvYmplY3QiJiZnbG9iYWxdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIgbj10W2VdO2lmKG4mJm4uTWF0aD09TWF0aClyZXR1cm4gbn10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpfTtrdC5nbG9iYWw9a3QuZ2V0R2xvYmFsKGR1KTtrdC5kZWZpbmVQcm9wZXJ0eT1rdC5BU1NVTUVfRVM1fHx0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09QXJyYXkucHJvdG90eXBlfHx0PT1PYmplY3QucHJvdG90eXBlfHwodFtlXT1uLnZhbHVlKSx0fTtrdC5JU19TWU1CT0xfTkFUSVZFPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woIngiKT09InN5bWJvbCI7a3QuVFJVU1RfRVM2X1BPTFlGSUxMUz0ha3QuSVNPTEFURV9QT0xZRklMTFN8fGt0LklTX1NZTUJPTF9OQVRJVkU7a3QucG9seWZpbGxzPXt9O2t0LnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTtrdC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7a3QucG9seWZpbGw9ZnVuY3Rpb24odCxlLG4sbyl7ZSYmKGt0LklTT0xBVEVfUE9MWUZJTExTP2t0LnBvbHlmaWxsSXNvbGF0ZWQodCxlLG4sbyk6a3QucG9seWZpbGxVbmlzb2xhdGVkKHQsZSxuLG8pKX07a3QucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKHQsZSxuLG8pe2ZvcihuPWt0Lmdsb2JhbCx0PXQuc3BsaXQoIi4iKSxvPTA7bzx0Lmxlbmd0aC0xO28rKyl7dmFyIHI9dFtvXTtpZighKHIgaW4gbikpcmV0dXJuO249bltyXX10PXRbdC5sZW5ndGgtMV0sbz1uW3RdLGU9ZShvKSxlIT1vJiZlIT1udWxsJiZrdC5kZWZpbmVQcm9wZXJ0eShuLHQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSl9O2t0LnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIHI9dC5zcGxpdCgiLiIpO3Q9ci5sZW5ndGg9PT0xLG89clswXSxvPSF0JiZvIGluIGt0LnBvbHlmaWxscz9rdC5wb2x5ZmlsbHM6a3QuZ2xvYmFsO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGgtMTtpKyspe3ZhciBzPXJbaV07aWYoIShzIGluIG8pKXJldHVybjtvPW9bc119cj1yW3IubGVuZ3RoLTFdLG49a3QuSVNfU1lNQk9MX05BVElWRSYmbj09PSJlczYiP29bcl06bnVsbCxlPWUobiksZSE9bnVsbCYmKHQ/a3QuZGVmaW5lUHJvcGVydHkoa3QucG9seWZpbGxzLHIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSk6ZSE9PW4mJihrdC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl09PT12b2lkIDAmJihuPTFlOSpNYXRoLnJhbmRvbSgpPj4+MCxrdC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl09a3QuSVNfU1lNQk9MX05BVElWRT9rdC5nbG9iYWwuU3ltYm9sKHIpOmt0LlBPTFlGSUxMX1BSRUZJWCtuKyIkIityKSxrdC5kZWZpbmVQcm9wZXJ0eShvLGt0LnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtyXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KSkpfTtrdC5wb2x5ZmlsbCgiUHJvbWlzZSIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3RoaXMuYmF0Y2hfPW51bGx9ZnVuY3Rpb24gbihzKXtyZXR1cm4gcyBpbnN0YW5jZW9mIHI/czpuZXcgcihmdW5jdGlvbihmLHUpe2Yocyl9KX1pZih0JiYoIShrdC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFfHxrdC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmdHlwZW9mIGt0Lmdsb2JhbC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ+InUiKXx8IWt0Lmdsb2JhbC5Qcm9taXNlfHxrdC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKT09PS0xKSlyZXR1cm4gdDtlLnByb3RvdHlwZS5hc3luY0V4ZWN1dGU9ZnVuY3Rpb24ocyl7aWYodGhpcy5iYXRjaF89PW51bGwpe3RoaXMuYmF0Y2hfPVtdO3ZhciBmPXRoaXM7dGhpcy5hc3luY0V4ZWN1dGVGdW5jdGlvbihmdW5jdGlvbigpe2YuZXhlY3V0ZUJhdGNoXygpfSl9dGhpcy5iYXRjaF8ucHVzaChzKX07dmFyIG89a3QuZ2xvYmFsLnNldFRpbWVvdXQ7ZS5wcm90b3R5cGUuYXN5bmNFeGVjdXRlRnVuY3Rpb249ZnVuY3Rpb24ocyl7byhzLDApfSxlLnByb3RvdHlwZS5leGVjdXRlQmF0Y2hfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJhdGNoXyYmdGhpcy5iYXRjaF8ubGVuZ3RoOyl7dmFyIHM9dGhpcy5iYXRjaF87dGhpcy5iYXRjaF89W107Zm9yKHZhciBmPTA7ZjxzLmxlbmd0aDsrK2Ype3ZhciB1PXNbZl07c1tmXT1udWxsO3RyeXt1KCl9Y2F0Y2goYyl7dGhpcy5hc3luY1Rocm93XyhjKX19fXRoaXMuYmF0Y2hfPW51bGx9LGUucHJvdG90eXBlLmFzeW5jVGhyb3dfPWZ1bmN0aW9uKHMpe3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXt0aHJvdyBzfSl9O3ZhciByPWZ1bmN0aW9uKHMpe3RoaXMuc3RhdGVfPTAsdGhpcy5yZXN1bHRfPXZvaWQgMCx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc189W10sdGhpcy5pc1JlamVjdGlvbkhhbmRsZWRfPSExO3ZhciBmPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7cyhmLnJlc29sdmUsZi5yZWplY3QpfWNhdGNoKHUpe2YucmVqZWN0KHUpfX07ci5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGMpe3JldHVybiBmdW5jdGlvbihsKXt1fHwodT0hMCxjLmNhbGwoZixsKSl9fXZhciBmPXRoaXMsdT0hMTtyZXR1cm57cmVzb2x2ZTpzKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OnModGhpcy5yZWplY3RfKX19LHIucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24ocyl7aWYocz09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihzIGluc3RhbmNlb2Ygcil0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKHMpO2Vsc2V7dDpzd2l0Y2godHlwZW9mIHMpe2Nhc2Uib2JqZWN0Ijp2YXIgZj1zIT1udWxsO2JyZWFrIHQ7Y2FzZSJmdW5jdGlvbiI6Zj0hMDticmVhayB0O2RlZmF1bHQ6Zj0hMX1mP3RoaXMucmVzb2x2ZVRvTm9uUHJvbWlzZU9ial8ocyk6dGhpcy5mdWxmaWxsXyhzKX19LHIucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKHMpe3ZhciBmPXZvaWQgMDt0cnl7Zj1zLnRoZW59Y2F0Y2godSl7dGhpcy5yZWplY3RfKHUpO3JldHVybn10eXBlb2YgZj09ImZ1bmN0aW9uIj90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhmLHMpOnRoaXMuZnVsZmlsbF8ocyl9LHIucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24ocyl7dGhpcy5zZXR0bGVfKDIscyl9LHIucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKHMpe3RoaXMuc2V0dGxlXygxLHMpfSxyLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKHMsZil7aWYodGhpcy5zdGF0ZV8hPTApdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitzKyIsICIrZisiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1zLHRoaXMucmVzdWx0Xz1mLHRoaXMuc3RhdGVfPT09MiYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpLHRoaXMuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc18oKX0sci5wcm90b3R5cGUuc2NoZWR1bGVVbmhhbmRsZWRSZWplY3Rpb25DaGVja189ZnVuY3Rpb24oKXt2YXIgcz10aGlzO28oZnVuY3Rpb24oKXtpZihzLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl8oKSl7dmFyIGY9a3QuZ2xvYmFsLmNvbnNvbGU7dHlwZW9mIGY8InUiJiZmLmVycm9yKHMucmVzdWx0Xyl9fSwxKX0sci5wcm90b3R5cGUubm90aWZ5VW5oYW5kbGVkUmVqZWN0aW9uXz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXylyZXR1cm4hMTt2YXIgcz1rdC5nbG9iYWwuQ3VzdG9tRXZlbnQsZj1rdC5nbG9iYWwuRXZlbnQsdT1rdC5nbG9iYWwuZGlzcGF0Y2hFdmVudDtyZXR1cm4gdHlwZW9mIHU+InUiPyEwOih0eXBlb2Ygcz09ImZ1bmN0aW9uIj9zPW5ldyBzKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6dHlwZW9mIGY9PSJmdW5jdGlvbiI/cz1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihzPWt0Lmdsb2JhbC5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxzLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxzKSkscy5wcm9taXNlPXRoaXMscy5yZWFzb249dGhpcy5yZXN1bHRfLHUocykpfSxyLnByb3RvdHlwZS5leGVjdXRlT25TZXR0bGVkQ2FsbGJhY2tzXz1mdW5jdGlvbigpe2lmKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXyE9bnVsbCl7Zm9yKHZhciBzPTA7czx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc18ubGVuZ3RoOysrcylpLmFzeW5jRXhlY3V0ZSh0aGlzLm9uU2V0dGxlZENhbGxiYWNrc19bc10pO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1udWxsfX07dmFyIGk9bmV3IGU7cmV0dXJuIHIucHJvdG90eXBlLnNldHRsZVNhbWVBc1Byb21pc2VfPWZ1bmN0aW9uKHMpe3ZhciBmPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTtzLmNhbGxXaGVuU2V0dGxlZF8oZi5yZXNvbHZlLGYucmVqZWN0KX0sci5wcm90b3R5cGUuc2V0dGxlU2FtZUFzVGhlbmFibGVfPWZ1bmN0aW9uKHMsZil7dmFyIHU9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpO3RyeXtzLmNhbGwoZix1LnJlc29sdmUsdS5yZWplY3QpfWNhdGNoKGMpe3UucmVqZWN0KGMpfX0sci5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihzLGYpe2Z1bmN0aW9uIHUoZCxoKXtyZXR1cm4gdHlwZW9mIGQ9PSJmdW5jdGlvbiI/ZnVuY3Rpb24oXyl7dHJ5e2MoZChfKSl9Y2F0Y2goZyl7bChnKX19Omh9dmFyIGMsbCxwPW5ldyByKGZ1bmN0aW9uKGQsaCl7Yz1kLGw9aH0pO3JldHVybiB0aGlzLmNhbGxXaGVuU2V0dGxlZF8odShzLGMpLHUoZixsKSkscH0sci5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24ocyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAscyl9LHIucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24ocyxmKXtmdW5jdGlvbiB1KCl7c3dpdGNoKGMuc3RhdGVfKXtjYXNlIDE6cyhjLnJlc3VsdF8pO2JyZWFrO2Nhc2UgMjpmKGMucmVzdWx0Xyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5leHBlY3RlZCBzdGF0ZTogIitjLnN0YXRlXyl9fXZhciBjPXRoaXM7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPT1udWxsP2kuYXN5bmNFeGVjdXRlKHUpOnRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5wdXNoKHUpLHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMH0sci5yZXNvbHZlPW4sci5yZWplY3Q9ZnVuY3Rpb24ocyl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGYsdSl7dShzKX0pfSxyLnJhY2U9ZnVuY3Rpb24ocyl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGYsdSl7Zm9yKHZhciBjPWt0Lm1ha2VJdGVyYXRvcihzKSxsPWMubmV4dCgpOyFsLmRvbmU7bD1jLm5leHQoKSluKGwudmFsdWUpLmNhbGxXaGVuU2V0dGxlZF8oZix1KX0pfSxyLmFsbD1mdW5jdGlvbihzKXt2YXIgZj1rdC5tYWtlSXRlcmF0b3IocyksdT1mLm5leHQoKTtyZXR1cm4gdS5kb25lP24oW10pOm5ldyByKGZ1bmN0aW9uKGMsbCl7ZnVuY3Rpb24gcChfKXtyZXR1cm4gZnVuY3Rpb24oZyl7ZFtfXT1nLGgtLSxoPT0wJiZjKGQpfX12YXIgZD1bXSxoPTA7ZG8gZC5wdXNoKHZvaWQgMCksaCsrLG4odS52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyhwKGQubGVuZ3RoLTEpLGwpLHU9Zi5uZXh0KCk7d2hpbGUoIXUuZG9uZSl9KX0scn0sImVzNiIsImVzMyIpO2t0Lm93bnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9O2t0LmFzc2lnbj1rdC5UUlVTVF9FUzZfUE9MWUZJTExTJiZ0eXBlb2YgT2JqZWN0LmFzc2lnbj09ImZ1bmN0aW9uIj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIG89YXJndW1lbnRzW25dO2lmKG8pZm9yKHZhciByIGluIG8pa3Qub3ducyhvLHIpJiYodFtyXT1vW3JdKX1yZXR1cm4gdH07a3QucG9seWZpbGwoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKHQpe3JldHVybiB0fHxrdC5hc3NpZ259LCJlczYiLCJlczMiKTtrdC5jaGVja1N0cmluZ0FyZ3M9ZnVuY3Rpb24odCxlLG4pe2lmKHQ9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS4iK24rIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS4iK24rIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpO3JldHVybiB0KyIifTtrdC5wb2x5ZmlsbCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbih0KXtyZXR1cm4gdHx8ZnVuY3Rpb24oZSxuKXt2YXIgbz1rdC5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLCJzdGFydHNXaXRoIik7ZSs9IiI7dmFyIHI9by5sZW5ndGgsaT1lLmxlbmd0aDtuPU1hdGgubWF4KDAsTWF0aC5taW4obnwwLG8ubGVuZ3RoKSk7Zm9yKHZhciBzPTA7czxpJiZuPHI7KWlmKG9bbisrXSE9ZVtzKytdKXJldHVybiExO3JldHVybiBzPj1pfX0sImVzNiIsImVzMyIpO2t0LnBvbHlmaWxsKCJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXtyZXR1cm4gbj1OdW1iZXIobiksbj09PTEvMHx8bj09PS0xLzA/bjpufDB9cmV0dXJuIHR8fGZ1bmN0aW9uKG4sbyxyKXt2YXIgaT10aGlzLmxlbmd0aDtpZihuPWUobiksbz1lKG8pLHI9cj09PXZvaWQgMD9pOmUociksbj0wPm4/TWF0aC5tYXgoaStuLDApOk1hdGgubWluKG4saSksbz0wPm8/TWF0aC5tYXgoaStvLDApOk1hdGgubWluKG8saSkscj0wPnI/TWF0aC5tYXgoaStyLDApOk1hdGgubWluKHIsaSksbjxvKWZvcig7bzxyOylvIGluIHRoaXM/dGhpc1tuKytdPXRoaXNbbysrXTooZGVsZXRlIHRoaXNbbisrXSxvKyspO2Vsc2UgZm9yKHI9TWF0aC5taW4ocixpK28tbiksbis9ci1vO3I+bzspLS1yIGluIHRoaXM/dGhpc1stLW5dPXRoaXNbcl06ZGVsZXRlIHRoaXNbLS1uXTtyZXR1cm4gdGhpc319LCJlczYiLCJlczMiKTtrdC50eXBlZEFycmF5Q29weVdpdGhpbj1mdW5jdGlvbih0KXtyZXR1cm4gdHx8QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW59O2t0LnBvbHlmaWxsKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2t0LnBvbHlmaWxsKCJVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2t0LnBvbHlmaWxsKCJJbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIlVpbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiVWludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiRmxvYXQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO3ZhciB4Zz1mdW5jdGlvbigpe3ZhciB0PXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTwidSImJih0PXR8fF9fZmlsZW5hbWUpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oVil7cmV0dXJuIFIubG9jYXRlRmlsZT9SLmxvY2F0ZUZpbGUoVixkdCk6ZHQrVn1mdW5jdGlvbiBvKFYsSyx0dCl7dmFyIE10PUsrdHQ7Zm9yKHR0PUs7Vlt0dF0mJiEodHQ+PU10KTspKyt0dDtpZigxNjx0dC1LJiZWLmJ1ZmZlciYmZ2UpcmV0dXJuIGdlLmRlY29kZShWLnN1YmFycmF5KEssdHQpKTtmb3IoTXQ9IiI7Szx0dDspe3ZhciB1ZT1WW0srK107aWYodWUmMTI4KXt2YXIgd2U9VltLKytdJjYzO2lmKCh1ZSYyMjQpPT0xOTIpTXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHVlJjMxKTw8Nnx3ZSk7ZWxzZXt2YXIgRWk9VltLKytdJjYzO3VlPSh1ZSYyNDApPT0yMjQ/KHVlJjE1KTw8MTJ8d2U8PDZ8RWk6KHVlJjcpPDwxOHx3ZTw8MTJ8RWk8PDZ8VltLKytdJjYzLDY1NTM2PnVlP010Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHVlKToodWUtPTY1NTM2LE10Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fHVlPj4xMCw1NjMyMHx1ZSYxMDIzKSl9fWVsc2UgTXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodWUpfXJldHVybiBNdH1mdW5jdGlvbiByKFYsSyl7cmV0dXJuIFY/byh1bixWLEspOiIifWZ1bmN0aW9uIGkoKXt2YXIgVj1RdC5idWZmZXI7Ui5IRUFQOD1FZT1uZXcgSW50OEFycmF5KFYpLFIuSEVBUDE2PW5ldyBJbnQxNkFycmF5KFYpLFIuSEVBUDMyPVZlPW5ldyBJbnQzMkFycmF5KFYpLFIuSEVBUFU4PXVuPW5ldyBVaW50OEFycmF5KFYpLFIuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoViksUi5IRUFQVTMyPWJlPW5ldyBVaW50MzJBcnJheShWKSxSLkhFQVBGMzI9bmV3IEZsb2F0MzJBcnJheShWKSxSLkhFQVBGNjQ9bmV3IEZsb2F0NjRBcnJheShWKX1mdW5jdGlvbiBzKFYpe3Rocm93IFIub25BYm9ydCYmUi5vbkFib3J0KFYpLFY9IkFib3J0ZWQoIitWKyIpIixmZShWKSxOZT0hMCxWPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoVisiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIpLGF0KFYpLFZ9ZnVuY3Rpb24gZihWKXt0cnl7aWYoVj09c24mJlp0KXJldHVybiBuZXcgVWludDhBcnJheShadCk7aWYocGUpcmV0dXJuIHBlKFYpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1jYXRjaChLKXtzKEspfX1mdW5jdGlvbiB1KCl7aWYoIVp0JiYoUHR8fGd0KSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhc24uc3RhcnRzV2l0aCgiZmlsZTovLyIpKXJldHVybiBmZXRjaChzbix7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oVil7aWYoIVYub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitzbisiJyI7cmV0dXJuIFYuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGYoc24pfSk7aWYocmUpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFYsSyl7cmUoc24sZnVuY3Rpb24odHQpe1YobmV3IFVpbnQ4QXJyYXkodHQpKX0sSyl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBmKHNuKX0pfWZ1bmN0aW9uIGMoVil7Zm9yKDswPFYubGVuZ3RoOylWLnNoaWZ0KCkoUil9ZnVuY3Rpb24gbChWKXt0aGlzLmV4Y1B0cj1WLHRoaXMucHRyPVYtMjQsdGhpcy5zZXRfdHlwZT1mdW5jdGlvbihLKXtiZVt0aGlzLnB0cis0Pj4yXT1LfSx0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIGJlW3RoaXMucHRyKzQ+PjJdfSx0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKEspe2JlW3RoaXMucHRyKzg+PjJdPUt9LHRoaXMuZ2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gYmVbdGhpcy5wdHIrOD4+Ml19LHRoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKEspe1ZlW3RoaXMucHRyPj4yXT1LfSx0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oSyl7RWVbdGhpcy5wdHIrMTI+PjBdPUs/MTowfSx0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gRWVbdGhpcy5wdHIrMTI+PjBdIT0wfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihLKXtFZVt0aGlzLnB0cisxMz4+MF09Sz8xOjB9LHRoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIEVlW3RoaXMucHRyKzEzPj4wXSE9MH0sdGhpcy5pbml0PWZ1bmN0aW9uKEssdHQpe3RoaXMuc2V0X2FkanVzdGVkX3B0cigwKSx0aGlzLnNldF90eXBlKEspLHRoaXMuc2V0X2Rlc3RydWN0b3IodHQpLHRoaXMuc2V0X3JlZmNvdW50KDApLHRoaXMuc2V0X2NhdWdodCghMSksdGhpcy5zZXRfcmV0aHJvd24oITEpfSx0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXtWZVt0aGlzLnB0cj4+Ml0rPTF9LHRoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgSz1WZVt0aGlzLnB0cj4+Ml07cmV0dXJuIFZlW3RoaXMucHRyPj4yXT1LLTEsSz09PTF9LHRoaXMuc2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbihLKXtiZVt0aGlzLnB0cisxNj4+Ml09S30sdGhpcy5nZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKCl7cmV0dXJuIGJlW3RoaXMucHRyKzE2Pj4yXX0sdGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe2lmKGtsKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIGJlW3RoaXMuZXhjUHRyPj4yXTt2YXIgSz10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtyZXR1cm4gSyE9PTA/Szp0aGlzLmV4Y1B0cn19ZnVuY3Rpb24gcCgpe2Z1bmN0aW9uIFYoKXtpZighb2YmJihvZj0hMCxSLmNhbGxlZFJ1bj0hMCwhTmUpKXtpZihvZT0hMCxjKHBuKSxudChSKSxSLm9uUnVudGltZUluaXRpYWxpemVkJiZSLm9uUnVudGltZUluaXRpYWxpemVkKCksUi5wb3N0UnVuKWZvcih0eXBlb2YgUi5wb3N0UnVuPT0iZnVuY3Rpb24iJiYoUi5wb3N0UnVuPVtSLnBvc3RSdW5dKTtSLnBvc3RSdW4ubGVuZ3RoOylFbi51bnNoaWZ0KFIucG9zdFJ1bi5zaGlmdCgpKTtjKEVuKX19aWYoISgwPFl0KSl7aWYoUi5wcmVSdW4pZm9yKHR5cGVvZiBSLnByZVJ1bj09ImZ1bmN0aW9uIiYmKFIucHJlUnVuPVtSLnByZVJ1bl0pO1IucHJlUnVuLmxlbmd0aDspbG4udW5zaGlmdChSLnByZVJ1bi5zaGlmdCgpKTtjKGxuKSwwPFl0fHwoUi5zZXRTdGF0dXM/KFIuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtSLnNldFN0YXR1cygiIil9LDEpLFYoKX0sMSkpOlYoKSl9fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gaChWKXtyZXR1cm4oVnx8ZCkuX19jYWNoZV9ffWZ1bmN0aW9uIF8oVixLKXt2YXIgdHQ9aChLKSxNdD10dFtWXTtyZXR1cm4gTXR8fChNdD1PYmplY3QuY3JlYXRlKChLfHxkKS5wcm90b3R5cGUpLE10LnB0cj1WLHR0W1ZdPU10KX1mdW5jdGlvbiBnKFYpe2lmKHR5cGVvZiBWPT0ic3RyaW5nIil7Zm9yKHZhciBLPTAsdHQ9MDt0dDxWLmxlbmd0aDsrK3R0KXt2YXIgTXQ9Vi5jaGFyQ29kZUF0KHR0KTsxMjc+PU10P0srKzoyMDQ3Pj1NdD9LKz0yOjU1Mjk2PD1NdCYmNTczNDM+PU10PyhLKz00LCsrdHQpOksrPTN9aWYoSz1BcnJheShLKzEpLHR0PTAsTXQ9Sy5sZW5ndGgsMDxNdCl7TXQ9dHQrTXQtMTtmb3IodmFyIHVlPTA7dWU8Vi5sZW5ndGg7Kyt1ZSl7dmFyIHdlPVYuY2hhckNvZGVBdCh1ZSk7aWYoNTUyOTY8PXdlJiY1NzM0Mz49d2Upe3ZhciBFaT1WLmNoYXJDb2RlQXQoKyt1ZSk7d2U9NjU1MzYrKCh3ZSYxMDIzKTw8MTApfEVpJjEwMjN9aWYoMTI3Pj13ZSl7aWYodHQ+PU10KWJyZWFrO0tbdHQrK109d2V9ZWxzZXtpZigyMDQ3Pj13ZSl7aWYodHQrMT49TXQpYnJlYWs7S1t0dCsrXT0xOTJ8d2U+PjZ9ZWxzZXtpZig2NTUzNT49d2Upe2lmKHR0KzI+PU10KWJyZWFrO0tbdHQrK109MjI0fHdlPj4xMn1lbHNle2lmKHR0KzM+PU10KWJyZWFrO0tbdHQrK109MjQwfHdlPj4xOCxLW3R0KytdPTEyOHx3ZT4+MTImNjN9S1t0dCsrXT0xMjh8d2U+PjYmNjN9S1t0dCsrXT0xMjh8d2UmNjN9fUtbdHRdPTB9cmV0dXJuIFY9eGUuYWxsb2MoSyxFZSkseGUuY29weShLLEVlLFYpLFZ9cmV0dXJuIFZ9ZnVuY3Rpb24gYihWKXtpZih0eXBlb2YgVj09Im9iamVjdCIpe3ZhciBLPXhlLmFsbG9jKFYsRWUpO3JldHVybiB4ZS5jb3B5KFYsRWUsSyksS31yZXR1cm4gVn1mdW5jdGlvbiB3KCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIFZvaWRQdHIsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gTygpe3RoaXMucHRyPWNuKCksaChPKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBFKCl7dGhpcy5wdHI9cG8oKSxoKEUpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFQoKXt0aGlzLnB0cj1tbygpLGgoVClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geCgpe3RoaXMucHRyPUZlKCksaCh4KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBNKCl7dGhpcy5wdHI9dnMoKSxoKE0pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE4oKXt0aGlzLnB0cj1zbygpLGgoTilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gRigpe3RoaXMucHRyPUljKCksaChGKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBJKCl7dGhpcy5wdHI9cnIoKSxoKEkpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHYoKXt0aGlzLnB0cj1GYygpLGgodilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gQigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBTdGF0dXMsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gQSgpe3RoaXMucHRyPXh1KCksaChBKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBTKCl7dGhpcy5wdHI9TGMoKSxoKFMpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aGlzLnB0cj1XYSgpLGgoQylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTCgpe3RoaXMucHRyPUJjKCksaChMKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB6KCl7dGhpcy5wdHI9THUoKSxoKHopW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIGooKXt0aGlzLnB0cj1VdSgpLGgoailbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gaygpe3RoaXMucHRyPWVzKCksaChrKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBxKCl7dGhpcy5wdHI9SHUoKSxoKHEpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFcoKXt0aGlzLnB0cj1RYSgpLGgoVylbdGhpcy5wdHJdPXRoaXN9ZT1lPT09dm9pZCAwP3t9OmU7dmFyIFI9dHlwZW9mIGU8InUiP2U6e30sbnQsYXQ7Ui5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihWLEspe250PVYsYXQ9S30pO3ZhciBsdD0hMSxfdD0hMTtSLm9uUnVudGltZUluaXRpYWxpemVkPWZ1bmN0aW9uKCl7bHQ9ITAsX3QmJnR5cGVvZiBSLm9uTW9kdWxlTG9hZGVkPT0iZnVuY3Rpb24iJiZSLm9uTW9kdWxlTG9hZGVkKFIpfSxSLm9uTW9kdWxlUGFyc2VkPWZ1bmN0aW9uKCl7X3Q9ITAsbHQmJnR5cGVvZiBSLm9uTW9kdWxlTG9hZGVkPT0iZnVuY3Rpb24iJiZSLm9uTW9kdWxlTG9hZGVkKFIpfSxSLmlzVmVyc2lvblN1cHBvcnRlZD1mdW5jdGlvbihWKXtyZXR1cm4gdHlwZW9mIFYhPSJzdHJpbmciPyExOihWPVYuc3BsaXQoIi4iKSwyPlYubGVuZ3RofHwzPFYubGVuZ3RoPyExOlZbMF09PTEmJjA8PVZbMV0mJjU+PVZbMV0/ITA6IShWWzBdIT0wfHwxMDxWWzFdKSl9O3ZhciBvdD1PYmplY3QuYXNzaWduKHt9LFIpLFB0PXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiLGd0PXR5cGVvZiBpbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iLFJ0PXR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT0ic3RyaW5nIixkdD0iIjtpZihSdCl7dmFyIHJ0PWRyKCJmcyIpLHh0PWRyKCJwYXRoIik7ZHQ9Z3Q/eHQuZGlybmFtZShkdCkrIi8iOl9fZGlybmFtZSsiLyI7dmFyIEd0PWZ1bmN0aW9uKFYsSyl7cmV0dXJuIFY9Vi5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChWKTp4dC5ub3JtYWxpemUoVikscnQucmVhZEZpbGVTeW5jKFYsSz92b2lkIDA6InV0ZjgiKX0scGU9ZnVuY3Rpb24oVil7cmV0dXJuIFY9R3QoViwhMCksVi5idWZmZXJ8fChWPW5ldyBVaW50OEFycmF5KFYpKSxWfSxyZT1mdW5jdGlvbihWLEssdHQpe1Y9Vi5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChWKTp4dC5ub3JtYWxpemUoVikscnQucmVhZEZpbGUoVixmdW5jdGlvbihNdCx1ZSl7TXQ/dHQoTXQpOksodWUuYnVmZmVyKX0pfTsxPHByb2Nlc3MuYXJndi5sZW5ndGgmJnByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikscHJvY2Vzcy5hcmd2LnNsaWNlKDIpLFIuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9fWVsc2UoUHR8fGd0KSYmKGd0P2R0PXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoZHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihkdD10KSxkdD1kdC5pbmRleE9mKCJibG9iOiIpIT09MD9kdC5zdWJzdHIoMCxkdC5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLEd0PWZ1bmN0aW9uKFYpe3ZhciBLPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gSy5vcGVuKCJHRVQiLFYsITEpLEsuc2VuZChudWxsKSxLLnJlc3BvbnNlVGV4dH0sZ3QmJihwZT1mdW5jdGlvbihWKXt2YXIgSz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIEsub3BlbigiR0VUIixWLCExKSxLLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLEsuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShLLnJlc3BvbnNlKX0pLHJlPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PW5ldyBYTUxIdHRwUmVxdWVzdDtNdC5vcGVuKCJHRVQiLFYsITApLE10LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLE10Lm9ubG9hZD1mdW5jdGlvbigpe010LnN0YXR1cz09MjAwfHxNdC5zdGF0dXM9PTAmJk10LnJlc3BvbnNlP0soTXQucmVzcG9uc2UpOnR0KCl9LE10Lm9uZXJyb3I9dHQsTXQuc2VuZChudWxsKX0pO3ZhciBkZT1SLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGZlPVIucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oUixvdCksb3Q9bnVsbDt2YXIgWnQ7Ui53YXNtQmluYXJ5JiYoWnQ9Ui53YXNtQmluYXJ5KSx0eXBlb2YgV2ViQXNzZW1ibHkhPSJvYmplY3QiJiZzKCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkIik7dmFyIFF0LE5lPSExLGdlPXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwLEVlLHVuLFZlLGJlLGxuPVtdLHBuPVtdLEVuPVtdLG9lPSExLFl0PTAsemU9bnVsbCxkbj1udWxsLHNuPSJkcmFjb19kZWNvZGVyLndhc20iO3NuLnN0YXJ0c1dpdGgoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiKXx8KHNuPW4oc24pKTt2YXIgbW49MCxsbz1bbnVsbCxbXSxbXV0scW49e2I6ZnVuY3Rpb24oVixLLHR0KXt0aHJvdyBuZXcgbChWKS5pbml0KEssdHQpLG1uKyssVn0sYTpmdW5jdGlvbigpe3MoIiIpfSxnOmZ1bmN0aW9uKFYsSyx0dCl7dW4uY29weVdpdGhpbihWLEssSyt0dCl9LGU6ZnVuY3Rpb24oVil7dmFyIEs9dW4ubGVuZ3RoO2lmKFY+Pj49MCwyMTQ3NDgzNjQ4PFYpcmV0dXJuITE7Zm9yKHZhciB0dD0xOzQ+PXR0O3R0Kj0yKXt2YXIgTXQ9SyooMSsuMi90dCk7TXQ9TWF0aC5taW4oTXQsVisxMDA2NjMyOTYpO3ZhciB1ZT1NYXRoO010PU1hdGgubWF4KFYsTXQpLHVlPXVlLm1pbi5jYWxsKHVlLDIxNDc0ODM2NDgsTXQrKDY1NTM2LU10JTY1NTM2KSU2NTUzNik7dDp7TXQ9UXQuYnVmZmVyO3RyeXtRdC5ncm93KHVlLU10LmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksaSgpO3ZhciB3ZT0xO2JyZWFrIHR9Y2F0Y2h7fXdlPXZvaWQgMH1pZih3ZSlyZXR1cm4hMH1yZXR1cm4hMX0sZjpmdW5jdGlvbihWKXtyZXR1cm4gNTJ9LGQ6ZnVuY3Rpb24oVixLLHR0LE10LHVlKXtyZXR1cm4gNzB9LGM6ZnVuY3Rpb24oVixLLHR0LE10KXtmb3IodmFyIHVlPTAsd2U9MDt3ZTx0dDt3ZSsrKXt2YXIgRWk9YmVbSz4+Ml0semM9YmVbSys0Pj4yXTtLKz04O2Zvcih2YXIgVT0wO1U8emM7VSsrKXt2YXIgRz11bltFaStVXSxYPWxvW1ZdO0c9PT0wfHxHPT09MTA/KChWPT09MT9kZTpmZSkobyhYLDApKSxYLmxlbmd0aD0wKTpYLnB1c2goRyl9dWUrPXpjfXJldHVybiBiZVtNdD4+Ml09dWUsMH19OyhmdW5jdGlvbigpe2Z1bmN0aW9uIFYodWUsd2Upe1IuYXNtPXVlLmV4cG9ydHMsUXQ9Ui5hc20uaCxpKCkscG4udW5zaGlmdChSLmFzbS5pKSxZdC0tLFIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmUi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKFl0KSxZdD09MCYmKHplIT09bnVsbCYmKGNsZWFySW50ZXJ2YWwoemUpLHplPW51bGwpLGRuJiYodWU9ZG4sZG49bnVsbCx1ZSgpKSl9ZnVuY3Rpb24gSyh1ZSl7Vih1ZS5pbnN0YW5jZSl9ZnVuY3Rpb24gdHQodWUpe3JldHVybiB1KCkudGhlbihmdW5jdGlvbih3ZSl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdlLE10KX0pLnRoZW4oZnVuY3Rpb24od2Upe3JldHVybiB3ZX0pLnRoZW4odWUsZnVuY3Rpb24od2Upe2ZlKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK3dlKSxzKHdlKX0pfXZhciBNdD17YTpxbn07aWYoWXQrKyxSLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJlIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhZdCksUi5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBSLmluc3RhbnRpYXRlV2FzbShNdCxWKX1jYXRjaCh1ZSl7ZmUoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrdWUpLGF0KHVlKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWnR8fHR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyE9ImZ1bmN0aW9uInx8c24uc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHxzbi5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFJ0fHx0eXBlb2YgZmV0Y2ghPSJmdW5jdGlvbiI/dHQoSyk6ZmV0Y2goc24se2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKHVlKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcodWUsTXQpLnRoZW4oSyxmdW5jdGlvbih3ZSl7cmV0dXJuIGZlKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIit3ZSksZmUoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksdHQoSyl9KX0pfSgpLmNhdGNoKGF0KSx7fX0pKCk7dmFyIFFlPVIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWU9Ui5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1SLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNuPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0RlY29kZXJCdWZmZXJfMD1mdW5jdGlvbigpe3JldHVybihjbj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9Ui5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXZT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oV2U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPVIuYXNtLm0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG49Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihobj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9fX2Rlc3Ryb3lfX18wPVIuYXNtLm4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG89Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBvPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1SLmFzbS5vKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtuPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS249Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfdHJhbnNmb3JtX3R5cGVfMD1SLmFzbS5wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFduPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oV249Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfX19kZXN0cm95X19fMD1SLmFzbS5xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1vPVIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKG1vPVIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPVIuYXNtLnIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samU9Ui5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oamU9Ui5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9Ui5hc20ucykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihGZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1SLmFzbS50KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRG49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1SLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWG49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1SLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhvPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEhvPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPVIuYXNtLncpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scm49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2RhdGFfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1SLmFzbS54KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKFJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPVIuYXNtLnkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZnI9Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1mdW5jdGlvbigpe3JldHVybihmcj1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbm9ybWFsaXplZF8wPVIuYXNtLnopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdG89Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4odG89Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9Ui5hc20uQSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1mdW5jdGlvbigpe3JldHVybihxbz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1SLmFzbS5CKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElyPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1mdW5jdGlvbigpe3JldHVybihJcj1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9Ui5hc20uQykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJcz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihJcz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1SLmFzbS5EKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZzPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4odnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1SLmFzbS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRpPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybigkaT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9Ui5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2cj1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4odnI9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPVIuYXNtLkcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmk9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihaaT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX21pbl92YWx1ZV8xPVIuYXNtLkgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9yYW5nZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZzPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1SLmFzbS5JKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdpPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih3aT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9Ui5hc20uSikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzbz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oc289Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPVIuYXNtLkspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG89Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihobz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPVIuYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRnI9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1mdW5jdGlvbigpe3JldHVybihGcj1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPVIuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihOYz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPVIuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWM9Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEljPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1SLmFzbS5PKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQm49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX2F0dHJpYnV0ZXNfMD1SLmFzbS5QKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRpPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybihUaT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9Ui5hc20uUSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKExlPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX19fZGVzdHJveV9fXzA9Ui5hc20uUikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxycj1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9NZXNoXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocnI9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPVIuYXNtLlMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVHU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVHU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9Ui5hc20uVCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKE91PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9hdHRyaWJ1dGVzXzA9Ui5hc20uVSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRXU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX3BvaW50c18wPVIuYXNtLlYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih2Yz1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPVIuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9Ui5hc20uWCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihxYT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1SLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPVIuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2E9Ui5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1SLmFzbS5fKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFpPVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWk9Ui5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19lcnJvcl9tc2dfMD1SLmFzbS4kKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFN1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihTdT1SLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9Ui5hc20uYWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oeHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9Ui5hc20uYmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9Ui5hc20uY2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmk9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihKaT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfc2l6ZV8wPVIuYXNtLmRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHRzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPVIuYXNtLmVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPVIuYXNtLmZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFB1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFB1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPVIuYXNtLmdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE11PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1SLmFzbS5oYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMcj1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihMcj1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS5pYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfRHJhY29VSW50OEFycmF5XzA9Ui5hc20uamEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWGE9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1SLmFzbS5rYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEYz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihEYz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1SLmFzbS5sYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPVIuYXNtLm1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oQmM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9EcmFjb0ludDE2QXJyYXlfMD1SLmFzbS5uYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPVIuYXNtLm9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPVIuYXNtLnBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihGdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ui5hc20ucWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEx1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1SLmFzbS5yYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKER1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9Ui5hc20uc2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1SLmFzbS50YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZYT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFlhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ui5hc20udWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihVdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0RyYWNvSW50MzJBcnJheV8wPVIuYXNtLnZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGt1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihrdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9Ui5hc20ud2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9Ui5hc20ueGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS55YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlcz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oZXM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfRHJhY29VSW50MzJBcnJheV8wPVIuYXNtLnphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHp1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oenU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1SLmFzbS5BYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oanU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPVIuYXNtLkJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTHM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKEh1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTWV0YWRhdGFRdWVyaWVyXzA9Ui5hc20uRGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scXU9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9IYXNFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHF1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1SLmFzbS5FYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1cj1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4odXI9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPVIuYXNtLkZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRhPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKCRhPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPVIuYXNtLkdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEt1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RG91YmxlRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihLdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9Ui5hc20uSGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sV3U9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRTdHJpbmdFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKFd1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1SLmFzbS5JYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1mdW5jdGlvbigpe3JldHVybihYdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1SLmFzbS5KYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLbz1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKEtvPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9Ui5hc20uS2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmE9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFphPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1SLmFzbS5MYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWE9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPVIuYXNtLk1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRHM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWRfMz1SLmFzbS5OYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKFl1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9NZXNoXzM9Ui5hc20uT2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1mdW5jdGlvbigpe3JldHVybihVYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZF8yPVIuYXNtLlBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCR1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9ZnVuY3Rpb24oKXtyZXR1cm4oJHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU5hbWVfMj1SLmFzbS5RYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKYT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPWZ1bmN0aW9uKCl7cmV0dXJuKEphPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5XzM9Ui5hc20uUmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGY9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9ZnVuY3Rpb24oKXtyZXR1cm4odGY9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9Ui5hc20uU2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKFp1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUJ5VW5pcXVlSWRfMj1SLmFzbS5UYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFF1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9Ui5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2M9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1mdW5jdGlvbigpe3JldHVybihrYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPVIuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdvPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHdvPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPVIuYXNtLldhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj1mdW5jdGlvbigpe3JldHVybihHYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9Ui5hc20uWGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihKdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MTZBcnJheV8zPVIuYXNtLllhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4odGw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDMyQXJyYXlfMz1SLmFzbS5aYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPWZ1bmN0aW9uKCl7cmV0dXJuKGVsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0XzM9Ui5hc20uX2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbHI9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihscj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50c18zPVIuYXNtLiRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKG5sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPVIuYXNtLmFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihvbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9Ui5hc20uYmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihybD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPVIuYXNtLmNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oQnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1SLmFzbS5kYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihpbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1SLmFzbS5lYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKE9pPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzXzM9Ui5hc20uZmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oc2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9Ui5hc20uZ2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9ZnVuY3Rpb24oKXtyZXR1cm4oY2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9Ui5hc20uaGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGFsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1SLmFzbS5pYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1mdW5jdGlvbigpe3JldHVybihmbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1SLmFzbS5qYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1bD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1mdW5jdGlvbigpe3JldHVybih1bD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1SLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1mdW5jdGlvbigpe3JldHVybihsbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1SLmFzbS5sYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHBsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9Ui5hc20ubWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKGRsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1SLmFzbS5uYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKG1sPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9OT19UUkFOU0ZPUk09Ui5hc20ub2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09ZnVuY3Rpb24oKXtyZXR1cm4oaGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09Ui5hc20ucGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sX2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKF9sPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1SLmFzbS5xYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxucz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKG5zPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0lOVkFMSUQ9Ui5hc20ucmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049ZnVuY3Rpb24oKXtyZXR1cm4oeWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049Ui5hc20uc2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfTk9STUFMPWZ1bmN0aW9uKCl7cmV0dXJuKGdsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1SLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVcz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1mdW5jdGlvbigpe3JldHVybihVcz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1SLmFzbS51YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9ZnVuY3Rpb24oKXtyZXR1cm4oVmM9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPVIuYXNtLnZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9ZnVuY3Rpb24oKXtyZXR1cm4oQWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfR0VORVJJQz1SLmFzbS53YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlZj1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9JTlZBTElEX0dFT01FVFJZX1RZUEU9ZnVuY3Rpb24oKXtyZXR1cm4oZWY9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPVIuYXNtLnhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPWZ1bmN0aW9uKCl7cmV0dXJuKGJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPVIuYXNtLnliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1RSSUFOR1VMQVJfTUVTSD1mdW5jdGlvbigpe3JldHVybih3bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9Ui5hc20uemIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9ZnVuY3Rpb24oKXtyZXR1cm4oVGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9Ui5hc20uQWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oT2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9Ui5hc20uQmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKEVsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UOD1SLmFzbS5DYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxSbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oUmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PVIuYXNtLkRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oU2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1SLmFzbS5FYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oeGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPVIuYXNtLkZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5mPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4obmY9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQzMj1SLmFzbS5HYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oQ2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PVIuYXNtLkhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oUGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ2ND1SLmFzbS5JYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1mdW5jdGlvbigpe3JldHVybihNbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1SLmFzbS5KYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxObD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1mdW5jdGlvbigpe3JldHVybihObD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1SLmFzbS5LYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1mdW5jdGlvbigpe3JldHVybihJbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1SLmFzbS5MYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVFlQRVNfQ09VTlQ9ZnVuY3Rpb24oKXtyZXR1cm4odmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPVIuYXNtLk1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPWZ1bmN0aW9uKCl7cmV0dXJuKEZsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPVIuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtzPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKGtzPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPVIuYXNtLk9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKExsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPVIuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWZ1bmN0aW9uKCl7cmV0dXJuKERsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPVIuYXNtLlFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4oQmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5TVVBQT1JURURfVkVSU0lPTj1SLmFzbS5SYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTktOT1dOX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4oVWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPVIuYXNtLlNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O1IuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihSLl9tYWxsb2M9Ui5hc20uVGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUi5fZnJlZT1mdW5jdGlvbigpe3JldHVybihSLl9mcmVlPVIuYXNtLlViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBrbD1mdW5jdGlvbigpe3JldHVybihrbD1SLmFzbS5WYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtSLl9fX3N0YXJ0X2VtX2pzPTE1ODU2LFIuX19fc3RvcF9lbV9qcz0xNTk1NDt2YXIgb2Y7aWYoZG49ZnVuY3Rpb24gVigpe29mfHxwKCksb2Z8fChkbj1WKX0sUi5wcmVJbml0KWZvcih0eXBlb2YgUi5wcmVJbml0PT0iZnVuY3Rpb24iJiYoUi5wcmVJbml0PVtSLnByZUluaXRdKTswPFIucHJlSW5pdC5sZW5ndGg7KVIucHJlSW5pdC5wb3AoKSgpO3AoKSxkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kLGQucHJvdG90eXBlLl9fY2xhc3NfXz1kLGQuX19jYWNoZV9fPXt9LFIuV3JhcHBlck9iamVjdD1kLFIuZ2V0Q2FjaGU9aCxSLndyYXBQb2ludGVyPV8sUi5jYXN0T2JqZWN0PWZ1bmN0aW9uKFYsSyl7cmV0dXJuIF8oVi5wdHIsSyl9LFIuTlVMTD1fKDApLFIuZGVzdHJveT1mdW5jdGlvbihWKXtpZighVi5fX2Rlc3Ryb3lfXyl0aHJvdyJFcnJvcjogQ2Fubm90IGRlc3Ryb3kgb2JqZWN0LiAoRGlkIHlvdSBjcmVhdGUgaXQgeW91cnNlbGY/KSI7Vi5fX2Rlc3Ryb3lfXygpLGRlbGV0ZSBoKFYuX19jbGFzc19fKVtWLnB0cl19LFIuY29tcGFyZT1mdW5jdGlvbihWLEspe3JldHVybiBWLnB0cj09PUsucHRyfSxSLmdldFBvaW50ZXI9ZnVuY3Rpb24oVil7cmV0dXJuIFYucHRyfSxSLmdldENsYXNzPWZ1bmN0aW9uKFYpe3JldHVybiBWLl9fY2xhc3NfX307dmFyIHhlPXtidWZmZXI6MCxzaXplOjAscG9zOjAsdGVtcHM6W10sbmVlZGVkOjAscHJlcGFyZTpmdW5jdGlvbigpe2lmKHhlLm5lZWRlZCl7Zm9yKHZhciBWPTA7Vjx4ZS50ZW1wcy5sZW5ndGg7VisrKVIuX2ZyZWUoeGUudGVtcHNbVl0pO3hlLnRlbXBzLmxlbmd0aD0wLFIuX2ZyZWUoeGUuYnVmZmVyKSx4ZS5idWZmZXI9MCx4ZS5zaXplKz14ZS5uZWVkZWQseGUubmVlZGVkPTB9eGUuYnVmZmVyfHwoeGUuc2l6ZSs9MTI4LHhlLmJ1ZmZlcj1SLl9tYWxsb2MoeGUuc2l6ZSkseGUuYnVmZmVyfHxzKHZvaWQgMCkpLHhlLnBvcz0wfSxhbGxvYzpmdW5jdGlvbihWLEspe3JldHVybiB4ZS5idWZmZXJ8fHModm9pZCAwKSxWPVYubGVuZ3RoKksuQllURVNfUEVSX0VMRU1FTlQsVj1WKzcmLTgseGUucG9zK1Y+PXhlLnNpemU/KDA8Vnx8cyh2b2lkIDApLHhlLm5lZWRlZCs9VixLPVIuX21hbGxvYyhWKSx4ZS50ZW1wcy5wdXNoKEspKTooSz14ZS5idWZmZXIreGUucG9zLHhlLnBvcys9ViksS30sY29weTpmdW5jdGlvbihWLEssdHQpe3N3aXRjaCh0dD4+Pj0wLEsuQllURVNfUEVSX0VMRU1FTlQpe2Nhc2UgMjp0dD4+Pj0xO2JyZWFrO2Nhc2UgNDp0dD4+Pj0yO2JyZWFrO2Nhc2UgODp0dD4+Pj0zfWZvcih2YXIgTXQ9MDtNdDxWLmxlbmd0aDtNdCsrKUtbdHQrTXRdPVZbTXRdfX07cmV0dXJuIHcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHcucHJvdG90eXBlLmNvbnN0cnVjdG9yPXcsdy5wcm90b3R5cGUuX19jbGFzc19fPXcsdy5fX2NhY2hlX189e30sUi5Wb2lkUHRyPXcsdy5wcm90b3R5cGUuX19kZXN0cm95X189dy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtRZSh0aGlzLnB0cil9LE8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU8sTy5wcm90b3R5cGUuX19jbGFzc19fPU8sTy5fX2NhY2hlX189e30sUi5EZWNvZGVyQnVmZmVyPU8sTy5wcm90b3R5cGUuSW5pdD1PLnByb3RvdHlwZS5Jbml0PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3hlLnByZXBhcmUoKSx0eXBlb2YgVj09Im9iamVjdCImJihWPWIoVikpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLFdlKHR0LFYsSyl9LE8ucHJvdG90eXBlLl9fZGVzdHJveV9fPU8ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7aG4odGhpcy5wdHIpfSxFLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FLEUucHJvdG90eXBlLl9fY2xhc3NfXz1FLEUuX19jYWNoZV9fPXt9LFIuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1FLEUucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPUUucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEtuKHRoaXMucHRyKX0sRS5wcm90b3R5cGUuX19kZXN0cm95X189RS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtXbih0aGlzLnB0cil9LFQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLFQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQsVC5wcm90b3R5cGUuX19jbGFzc19fPVQsVC5fX2NhY2hlX189e30sUi5HZW9tZXRyeUF0dHJpYnV0ZT1ULFQucHJvdG90eXBlLl9fZGVzdHJveV9fPVQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7amUodGhpcy5wdHIpfSx4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSx4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14LHgucHJvdG90eXBlLl9fY2xhc3NfXz14LHguX19jYWNoZV9fPXt9LFIuUG9pbnRBdHRyaWJ1dGU9eCx4LnByb3RvdHlwZS5zaXplPXgucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gRG4odGhpcy5wdHIpfSx4LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPXgucHJvdG90eXBlLkdldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gXyhYbih0aGlzLnB0ciksRSl9LHgucHJvdG90eXBlLmF0dHJpYnV0ZV90eXBlPXgucHJvdG90eXBlLmF0dHJpYnV0ZV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEhvKHRoaXMucHRyKX0seC5wcm90b3R5cGUuZGF0YV90eXBlPXgucHJvdG90eXBlLmRhdGFfdHlwZT1mdW5jdGlvbigpe3JldHVybiBybih0aGlzLnB0cil9LHgucHJvdG90eXBlLm51bV9jb21wb25lbnRzPXgucHJvdG90eXBlLm51bV9jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIFJuKHRoaXMucHRyKX0seC5wcm90b3R5cGUubm9ybWFsaXplZD14LnByb3RvdHlwZS5ub3JtYWxpemVkPWZ1bmN0aW9uKCl7cmV0dXJuISFmcih0aGlzLnB0cil9LHgucHJvdG90eXBlLmJ5dGVfc3RyaWRlPXgucHJvdG90eXBlLmJ5dGVfc3RyaWRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRvKHRoaXMucHRyKX0seC5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9eC5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gcW8odGhpcy5wdHIpfSx4LnByb3RvdHlwZS51bmlxdWVfaWQ9eC5wcm90b3R5cGUudW5pcXVlX2lkPWZ1bmN0aW9uKCl7cmV0dXJuIElyKHRoaXMucHRyKX0seC5wcm90b3R5cGUuX19kZXN0cm95X189eC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtJcyh0aGlzLnB0cil9LE0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE0ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU0sTS5wcm90b3R5cGUuX19jbGFzc19fPU0sTS5fX2NhY2hlX189e30sUi5BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm09TSxNLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1NLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksISEkaShLLFYpfSxNLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1NLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiB2cih0aGlzLnB0cil9LE0ucHJvdG90eXBlLm1pbl92YWx1ZT1NLnByb3RvdHlwZS5taW5fdmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLFppKEssVil9LE0ucHJvdG90eXBlLnJhbmdlPU0ucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIEZzKHRoaXMucHRyKX0sTS5wcm90b3R5cGUuX19kZXN0cm95X189TS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXt3aSh0aGlzLnB0cil9LE4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU4sTi5wcm90b3R5cGUuX19jbGFzc19fPU4sTi5fX2NhY2hlX189e30sUi5BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtPU4sTi5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9Ti5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLCEhaG8oSyxWKX0sTi5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9Ti5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gRnIodGhpcy5wdHIpfSxOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1OLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe05jKHRoaXMucHRyKX0sRi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksRi5wcm90b3R5cGUuY29uc3RydWN0b3I9RixGLnByb3RvdHlwZS5fX2NsYXNzX189RixGLl9fY2FjaGVfXz17fSxSLlBvaW50Q2xvdWQ9RixGLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1GLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBCbih0aGlzLnB0cil9LEYucHJvdG90eXBlLm51bV9wb2ludHM9Ri5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBUaSh0aGlzLnB0cil9LEYucHJvdG90eXBlLl9fZGVzdHJveV9fPUYucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7TGUodGhpcy5wdHIpfSxJLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1JLEkucHJvdG90eXBlLl9fY2xhc3NfXz1JLEkuX19jYWNoZV9fPXt9LFIuTWVzaD1JLEkucHJvdG90eXBlLm51bV9mYWNlcz1JLnByb3RvdHlwZS5udW1fZmFjZXM9ZnVuY3Rpb24oKXtyZXR1cm4gVHUodGhpcy5wdHIpfSxJLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1JLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBPdSh0aGlzLnB0cil9LEkucHJvdG90eXBlLm51bV9wb2ludHM9SS5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBFdSh0aGlzLnB0cil9LEkucHJvdG90eXBlLl9fZGVzdHJveV9fPUkucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dmModGhpcy5wdHIpfSx2LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSx2LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj12LHYucHJvdG90eXBlLl9fY2xhc3NfXz12LHYuX19jYWNoZV9fPXt9LFIuTWV0YWRhdGE9dix2LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz12LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3FhKHRoaXMucHRyKX0sQi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksQi5wcm90b3R5cGUuY29uc3RydWN0b3I9QixCLnByb3RvdHlwZS5fX2NsYXNzX189QixCLl9fY2FjaGVfXz17fSxSLlN0YXR1cz1CLEIucHJvdG90eXBlLmNvZGU9Qi5wcm90b3R5cGUuY29kZT1mdW5jdGlvbigpe3JldHVybiBSdSh0aGlzLnB0cil9LEIucHJvdG90eXBlLm9rPUIucHJvdG90eXBlLm9rPWZ1bmN0aW9uKCl7cmV0dXJuISFLYSh0aGlzLnB0cil9LEIucHJvdG90eXBlLmVycm9yX21zZz1CLnByb3RvdHlwZS5lcnJvcl9tc2c9ZnVuY3Rpb24oKXtyZXR1cm4gcihRaSh0aGlzLnB0cikpfSxCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1CLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1N1KHRoaXMucHRyKX0sQS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxBLnByb3RvdHlwZS5fX2NsYXNzX189QSxBLl9fY2FjaGVfXz17fSxSLkRyYWNvRmxvYXQzMkFycmF5PUEsQS5wcm90b3R5cGUuR2V0VmFsdWU9QS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEN1KEssVil9LEEucHJvdG90eXBlLnNpemU9QS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBKaSh0aGlzLnB0cil9LEEucHJvdG90eXBlLl9fZGVzdHJveV9fPUEucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dHModGhpcy5wdHIpfSxTLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TLFMucHJvdG90eXBlLl9fY2xhc3NfXz1TLFMuX19jYWNoZV9fPXt9LFIuRHJhY29JbnQ4QXJyYXk9UyxTLnByb3RvdHlwZS5HZXRWYWx1ZT1TLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksUHUoSyxWKX0sUy5wcm90b3R5cGUuc2l6ZT1TLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE11KHRoaXMucHRyKX0sUy5wcm90b3R5cGUuX19kZXN0cm95X189Uy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtMcih0aGlzLnB0cil9LEMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLEMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUMsQy5wcm90b3R5cGUuX19jbGFzc19fPUMsQy5fX2NhY2hlX189e30sUi5EcmFjb1VJbnQ4QXJyYXk9QyxDLnByb3RvdHlwZS5HZXRWYWx1ZT1DLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksWGEoSyxWKX0sQy5wcm90b3R5cGUuc2l6ZT1DLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIERjKHRoaXMucHRyKX0sQy5wcm90b3R5cGUuX19kZXN0cm95X189Qy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtOdSh0aGlzLnB0cil9LEwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLEwucHJvdG90eXBlLmNvbnN0cnVjdG9yPUwsTC5wcm90b3R5cGUuX19jbGFzc19fPUwsTC5fX2NhY2hlX189e30sUi5EcmFjb0ludDE2QXJyYXk9TCxMLnByb3RvdHlwZS5HZXRWYWx1ZT1MLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSXUoSyxWKX0sTC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHZ1KHRoaXMucHRyKX0sTC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtGdSh0aGlzLnB0cil9LHoucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHoucHJvdG90eXBlLmNvbnN0cnVjdG9yPXosei5wcm90b3R5cGUuX19jbGFzc19fPXosei5fX2NhY2hlX189e30sUi5EcmFjb1VJbnQxNkFycmF5PXosei5wcm90b3R5cGUuR2V0VmFsdWU9ei5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLER1KEssVil9LHoucHJvdG90eXBlLnNpemU9ei5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBCdSh0aGlzLnB0cil9LHoucHJvdG90eXBlLl9fZGVzdHJveV9fPXoucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WWEodGhpcy5wdHIpfSxqLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qLGoucHJvdG90eXBlLl9fY2xhc3NfXz1qLGouX19jYWNoZV9fPXt9LFIuRHJhY29JbnQzMkFycmF5PWosai5wcm90b3R5cGUuR2V0VmFsdWU9ai5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGt1KEssVil9LGoucHJvdG90eXBlLnNpemU9ai5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBHdSh0aGlzLnB0cil9LGoucHJvdG90eXBlLl9fZGVzdHJveV9fPWoucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7VnUodGhpcy5wdHIpfSxrLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxrLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rLGsucHJvdG90eXBlLl9fY2xhc3NfXz1rLGsuX19jYWNoZV9fPXt9LFIuRHJhY29VSW50MzJBcnJheT1rLGsucHJvdG90eXBlLkdldFZhbHVlPWsucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSx6dShLLFYpfSxrLnByb3RvdHlwZS5zaXplPWsucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4ganUodGhpcy5wdHIpfSxrLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1rLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0xzKHRoaXMucHRyKX0scS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSkscS5wcm90b3R5cGUuY29uc3RydWN0b3I9cSxxLnByb3RvdHlwZS5fX2NsYXNzX189cSxxLl9fY2FjaGVfXz17fSxSLk1ldGFkYXRhUXVlcmllcj1xLHEucHJvdG90eXBlLkhhc0VudHJ5PXEucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSwhIXF1KHR0LFYsSyl9LHEucHJvdG90eXBlLkdldEludEVudHJ5PXEucHJvdG90eXBlLkdldEludEVudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSx1cih0dCxWLEspfSxxLnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PXEucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7eGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSyksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCRhKE10LFYsSyx0dCl9LHEucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PXEucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSxLdSh0dCxWLEspfSxxLnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1xLnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSykscihXdSh0dCxWLEspKX0scS5wcm90b3R5cGUuTnVtRW50cmllcz1xLnByb3RvdHlwZS5OdW1FbnRyaWVzPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxYdShLLFYpfSxxLnByb3RvdHlwZS5HZXRFbnRyeU5hbWU9cS5wcm90b3R5cGUuR2V0RW50cnlOYW1lPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxyKEtvKHR0LFYsSykpfSxxLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1xLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1phKHRoaXMucHRyKX0sVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksVy5wcm90b3R5cGUuY29uc3RydWN0b3I9VyxXLnByb3RvdHlwZS5fX2NsYXNzX189VyxXLl9fY2FjaGVfXz17fSxSLkRlY29kZXI9VyxXLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvUG9pbnRDbG91ZD1XLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvUG9pbnRDbG91ZD1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLHR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9YihWKSksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLF8oRHMoTXQsVixLLHR0KSxCKX0sVy5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9Vy5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIHhlLnByZXBhcmUoKSx0eXBlb2YgVj09Im9iamVjdCImJihWPWIoVikpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSxfKFl1KE10LFYsSyx0dCksQil9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxVYyh0dCxWLEspfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSyksJHUodHQsVixLKX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIHhlLnByZXBhcmUoKSxWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLPUsmJnR5cGVvZiBLPT0ib2JqZWN0Ij9LLnB0cjpnKEspLHR0PXR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiP3R0LnB0cjpnKHR0KSxKYShNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxfKHRmKHR0LFYsSykseCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhadSh0dCxWLEspLHgpfSxXLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1XLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksXyhRdShLLFYpLHYpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhrYyh0dCxWLEspLHYpfSxXLnByb3RvdHlwZS5HZXRGYWNlRnJvbU1lc2g9Vy5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISF3byhNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoPVcucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9ZnVuY3Rpb24oVixLKXt2YXIgdHQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLEdjKHR0LFYsSyl9LFcucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PVcucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFKdShNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1XLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhdGwoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIWVsKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFscihNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHM9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFubChNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIW9sKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFybChNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhQnMoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhaWwoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIU9pKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIXNsKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0LE10LHVlKXt2YXIgd2U9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSxNdCYmdHlwZW9mIE10PT0ib2JqZWN0IiYmKE10PU10LnB0ciksdWUmJnR5cGVvZiB1ZT09Im9iamVjdCImJih1ZT11ZS5wdHIpLCEhY2wod2UsVixLLHR0LE10LHVlKX0sVy5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1XLnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO1YmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGFsKEssVil9LFcucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1XLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGZsKEssVil9LFcucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD1XLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oVixLKXt2YXIgdHQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLF8odWwodHQsVixLKSxCKX0sVy5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPVcucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhsbCh0dCxWLEspLEIpfSxXLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1XLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3BsKHRoaXMucHRyKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBWKCl7Ui5BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09ZGwoKSxSLkFUVFJJQlVURV9OT19UUkFOU0ZPUk09bWwoKSxSLkFUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWhsKCksUi5BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09X2woKSxSLklOVkFMSUQ9bnMoKSxSLlBPU0lUSU9OPXlsKCksUi5OT1JNQUw9Z2woKSxSLkNPTE9SPVVzKCksUi5URVhfQ09PUkQ9VmMoKSxSLkdFTkVSSUM9QWwoKSxSLklOVkFMSURfR0VPTUVUUllfVFlQRT1lZigpLFIuUE9JTlRfQ0xPVUQ9YmwoKSxSLlRSSUFOR1VMQVJfTUVTSD13bCgpLFIuRFRfSU5WQUxJRD1UbCgpLFIuRFRfSU5UOD1PbCgpLFIuRFRfVUlOVDg9RWwoKSxSLkRUX0lOVDE2PVJsKCksUi5EVF9VSU5UMTY9U2woKSxSLkRUX0lOVDMyPXhsKCksUi5EVF9VSU5UMzI9bmYoKSxSLkRUX0lOVDY0PUNsKCksUi5EVF9VSU5UNjQ9UGwoKSxSLkRUX0ZMT0FUMzI9TWwoKSxSLkRUX0ZMT0FUNjQ9TmwoKSxSLkRUX0JPT0w9SWwoKSxSLkRUX1RZUEVTX0NPVU5UPXZsKCksUi5PSz1GbCgpLFIuRFJBQ09fRVJST1I9a3MoKSxSLklPX0VSUk9SPUxsKCksUi5JTlZBTElEX1BBUkFNRVRFUj1EbCgpLFIuVU5TVVBQT1JURURfVkVSU0lPTj1CbCgpLFIuVU5LTk9XTl9WRVJTSU9OPVVsKCl9b2U/VigpOnBuLnVuc2hpZnQoVil9KCksdHlwZW9mIFIub25Nb2R1bGVQYXJzZWQ9PSJmdW5jdGlvbiImJlIub25Nb2R1bGVQYXJzZWQoKSxSLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGU9ZnVuY3Rpb24oVil7aWYoVi5fX2NsYXNzX18mJlYuX19jbGFzc19fPT09Ui5EZWNvZGVyQnVmZmVyKXJldHVybiBSLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZChWKTtpZig4PlYuYnl0ZUxlbmd0aClyZXR1cm4gUi5JTlZBTElEX0dFT01FVFJZX1RZUEU7c3dpdGNoKFZbN10pe2Nhc2UgMDpyZXR1cm4gUi5QT0lOVF9DTE9VRDtjYXNlIDE6cmV0dXJuIFIuVFJJQU5HVUxBUl9NRVNIO2RlZmF1bHQ6cmV0dXJuIFIuSU5WQUxJRF9HRU9NRVRSWV9UWVBFfX0sZS5yZWFkeX19KCk7dHlwZW9mIGR1PT0ib2JqZWN0IiYmdHlwZW9mIENnPT0ib2JqZWN0Ij9DZy5leHBvcnRzPXhnOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHhnfSk6dHlwZW9mIGR1PT0ib2JqZWN0IiYmKGR1LkRyYWNvRGVjb2Rlck1vZHVsZT14Zyl9KTt2YXIgTmc9e307bGUoTmcse2RlZmF1bHQ6KCk9PmM2fSk7ZnVuY3Rpb24gSlUodCxlKXtsZXQgbj10Lm51bV9wb2ludHMoKSxvPXQubnVtX2ZhY2VzKCkscj1uZXcgTWUuRHJhY29JbnQzMkFycmF5LGk9byozLHM9THQuY3JlYXRlVHlwZWRBcnJheShuLGkpLGY9MDtmb3IobGV0IHU9MDt1PG87Kyt1KWUuR2V0RmFjZUZyb21NZXNoKHQsdSxyKSxzW2YrMF09ci5HZXRWYWx1ZSgwKSxzW2YrMV09ci5HZXRWYWx1ZSgxKSxzW2YrMl09ci5HZXRWYWx1ZSgyKSxmKz0zO3JldHVybiBNZS5kZXN0cm95KHIpLHt0eXBlZEFycmF5OnMsbnVtYmVyT2ZJbmRpY2VzOml9fWZ1bmN0aW9uIHQ2KHQsZSxuLG8scil7bGV0IGkscztvLnF1YW50aXphdGlvbkJpdHM8PTg/KHM9bmV3IE1lLkRyYWNvVUludDhBcnJheSxpPW5ldyBVaW50OEFycmF5KHIpLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHModCxuLHMpKTpvLnF1YW50aXphdGlvbkJpdHM8PTE2PyhzPW5ldyBNZS5EcmFjb1VJbnQxNkFycmF5LGk9bmV3IFVpbnQxNkFycmF5KHIpLGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzKHQsbixzKSk6KHM9bmV3IE1lLkRyYWNvRmxvYXQzMkFycmF5LGk9bmV3IEZsb2F0MzJBcnJheShyKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKHQsbixzKSk7Zm9yKGxldCBmPTA7ZjxyOysrZilpW2ZdPXMuR2V0VmFsdWUoZik7cmV0dXJuIE1lLmRlc3Ryb3kocyksaX1mdW5jdGlvbiBlNih0LGUsbixvKXtsZXQgcixpO3N3aXRjaChuLmRhdGFfdHlwZSgpKXtjYXNlIDE6Y2FzZSAxMTppPW5ldyBNZS5EcmFjb0ludDhBcnJheSxyPW5ldyBJbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzKHQsbixpKTticmVhaztjYXNlIDI6aT1uZXcgTWUuRHJhY29VSW50OEFycmF5LHI9bmV3IFVpbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50cyh0LG4saSk7YnJlYWs7Y2FzZSAzOmk9bmV3IE1lLkRyYWNvSW50MTZBcnJheSxyPW5ldyBJbnQxNkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrO2Nhc2UgNDppPW5ldyBNZS5EcmFjb1VJbnQxNkFycmF5LHI9bmV3IFVpbnQxNkFycmF5KG8pLGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzKHQsbixpKTticmVhaztjYXNlIDU6Y2FzZSA3Omk9bmV3IE1lLkRyYWNvSW50MzJBcnJheSxyPW5ldyBJbnQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrO2Nhc2UgNjpjYXNlIDg6aT1uZXcgTWUuRHJhY29VSW50MzJBcnJheSxyPW5ldyBVaW50MzJBcnJheShvKSxlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cyh0LG4saSk7YnJlYWs7Y2FzZSA5OmNhc2UgMTA6aT1uZXcgTWUuRHJhY29GbG9hdDMyQXJyYXkscj1uZXcgRmxvYXQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrfWZvcihsZXQgcz0wO3M8bzsrK3MpcltzXT1pLkdldFZhbHVlKHMpO3JldHVybiBNZS5kZXN0cm95KGkpLHJ9ZnVuY3Rpb24geDIodCxlLG4pe2xldCBvPXQubnVtX3BvaW50cygpLHI9bi5udW1fY29tcG9uZW50cygpLGkscz1uZXcgTWUuQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtO2lmKHMuSW5pdEZyb21BdHRyaWJ1dGUobikpe2xldCBsPW5ldyBBcnJheShyKTtmb3IobGV0IHA9MDtwPHI7KytwKWxbcF09cy5taW5fdmFsdWUocCk7aT17cXVhbnRpemF0aW9uQml0czpzLnF1YW50aXphdGlvbl9iaXRzKCksbWluVmFsdWVzOmwscmFuZ2U6cy5yYW5nZSgpLG9jdEVuY29kZWQ6ITF9fU1lLmRlc3Ryb3kocykscz1uZXcgTWUuQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybSxzLkluaXRGcm9tQXR0cmlidXRlKG4pJiYoaT17cXVhbnRpemF0aW9uQml0czpzLnF1YW50aXphdGlvbl9iaXRzKCksb2N0RW5jb2RlZDohMH0pLE1lLmRlc3Ryb3kocyk7bGV0IGY9bypyLHU7bShpKT91PXQ2KHQsZSxuLGksZik6dT1lNih0LGUsbixmKTtsZXQgYz1ldC5mcm9tVHlwZWRBcnJheSh1KTtyZXR1cm57YXJyYXk6dSxkYXRhOntjb21wb25lbnRzUGVyQXR0cmlidXRlOnIsY29tcG9uZW50RGF0YXR5cGU6YyxieXRlT2Zmc2V0Om4uYnl0ZV9vZmZzZXQoKSxieXRlU3RyaWRlOmV0LmdldFNpemVJbkJ5dGVzKGMpKnIsbm9ybWFsaXplZDpuLm5vcm1hbGl6ZWQoKSxxdWFudGl6YXRpb246aX19fWZ1bmN0aW9uIG42KHQpe2xldCBlPW5ldyBNZS5EZWNvZGVyO3QuZGVxdWFudGl6ZUluU2hhZGVyJiYoZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtKE1lLlBPU0lUSU9OKSxlLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oTWUuTk9STUFMKSk7bGV0IG49bmV3IE1lLkRlY29kZXJCdWZmZXI7aWYobi5Jbml0KHQuYnVmZmVyLHQuYnVmZmVyLmxlbmd0aCksZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlKG4pIT09TWUuUE9JTlRfQ0xPVUQpdGhyb3cgbmV3IEFlKCJEcmFjbyBnZW9tZXRyeSB0eXBlIG11c3QgYmUgUE9JTlRfQ0xPVUQuIik7bGV0IHI9bmV3IE1lLlBvaW50Q2xvdWQsaT1lLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZChuLHIpO2lmKCFpLm9rKCl8fHIucHRyPT09MCl0aHJvdyBuZXcgQWUoYEVycm9yIGRlY29kaW5nIGRyYWNvIHBvaW50IGNsb3VkOiAke2kuZXJyb3JfbXNnKCl9YCk7TWUuZGVzdHJveShuKTtsZXQgcz17fSxmPXQucHJvcGVydGllcztmb3IobGV0IHUgaW4gZilpZihmLmhhc093blByb3BlcnR5KHUpKXtsZXQgYztpZih1PT09IlBPU0lUSU9OInx8dT09PSJOT1JNQUwiKXtsZXQgbD1lLkdldEF0dHJpYnV0ZUlkKHIsTWVbdV0pO2M9ZS5HZXRBdHRyaWJ1dGUocixsKX1lbHNle2xldCBsPWZbdV07Yz1lLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQocixsKX1zW3VdPXgyKHIsZSxjKX1yZXR1cm4gTWUuZGVzdHJveShyKSxNZS5kZXN0cm95KGUpLHN9ZnVuY3Rpb24gbzYodCl7bGV0IGU9bmV3IE1lLkRlY29kZXI7aWYodC5kZXF1YW50aXplSW5TaGFkZXIpZm9yKGxldCBsPTA7bDx0LmF0dHJpYnV0ZXNUb1NraXBUcmFuc2Zvcm0ubGVuZ3RoOysrbCllLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oTWVbdC5hdHRyaWJ1dGVzVG9Ta2lwVHJhbnNmb3JtW2xdXSk7bGV0IG49dC5idWZmZXJWaWV3LG89bmV3IE1lLkRlY29kZXJCdWZmZXI7aWYoby5Jbml0KHQuYXJyYXksbi5ieXRlTGVuZ3RoKSxlLkdldEVuY29kZWRHZW9tZXRyeVR5cGUobykhPT1NZS5UUklBTkdVTEFSX01FU0gpdGhyb3cgbmV3IEFlKCJVbnN1cHBvcnRlZCBkcmFjbyBtZXNoIGdlb21ldHJ5IHR5cGUuIik7bGV0IGk9bmV3IE1lLk1lc2gscz1lLkRlY29kZUJ1ZmZlclRvTWVzaChvLGkpO2lmKCFzLm9rKCl8fGkucHRyPT09MCl0aHJvdyBuZXcgQWUoYEVycm9yIGRlY29kaW5nIGRyYWNvIG1lc2ggZ2VvbWV0cnk6ICR7cy5lcnJvcl9tc2coKX1gKTtNZS5kZXN0cm95KG8pO2xldCBmPXt9LHU9dC5jb21wcmVzc2VkQXR0cmlidXRlcztmb3IobGV0IGwgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGwpKXtsZXQgcD11W2xdLGQ9ZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkKGkscCk7ZltsXT14MihpLGUsZCl9bGV0IGM9e2luZGV4QXJyYXk6SlUoaSxlKSxhdHRyaWJ1dGVEYXRhOmZ9O3JldHVybiBNZS5kZXN0cm95KGkpLE1lLmRlc3Ryb3koZSksY31hc3luYyBmdW5jdGlvbiByNih0LGUpe3JldHVybiBtKHQuYnVmZmVyVmlldyk/bzYodCk6bjYodCl9YXN5bmMgZnVuY3Rpb24gaTYodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pJiZtKG4ud2FzbUJpbmFyeUZpbGUpP01lPWF3YWl0KDAsTWcuZGVmYXVsdCkobik6TWU9YXdhaXQoMCxNZy5kZWZhdWx0KSgpLCEwfWFzeW5jIGZ1bmN0aW9uIHM2KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShuKT9pNih0LGUpOnI2KHQsZSl9dmFyIE1nLE1lLGM2LElnPSQoKCk9PntEZSgpO2Z0KCk7WmUoKTt0aSgpO1puKCk7TWc9bXIoUGcoKSwxKTtjNj1VZShzNil9KTtmdW5jdGlvbiB2Zyh0LGUpe2lmKHZnLnBhc3NUaHJvdWdoRGF0YUZvclRlc3RpbmcpcmV0dXJuIGU7eS50eXBlT2Yub2JqZWN0KCJrZXkiLHQpLHkudHlwZU9mLm9iamVjdCgiZGF0YSIsZSk7bGV0IG49dC5ieXRlTGVuZ3RoO2lmKG49PT0wfHxuJTQhPT0wKXRocm93IG5ldyBBZSgiVGhlIGxlbmd0aCBvZiBrZXkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgYSBtdWx0aXBsZSBvZiA0LiIpO2xldCBvPW5ldyBEYXRhVmlldyhlKSxyPW8uZ2V0VWludDMyKDAsITApO2lmKHI9PT1hNnx8cj09PWY2KXJldHVybiBlO2xldCBpPW5ldyBEYXRhVmlldyh0KSxzPTAsZj1lLmJ5dGVMZW5ndGgsdT1mLWYlOCxjPW4sbCxwPTg7Zm9yKDtzPHU7KWZvcihwPShwKzgpJTI0LGw9cDtzPHUmJmw8Yzspby5zZXRVaW50MzIocyxvLmdldFVpbnQzMihzLCEwKV5pLmdldFVpbnQzMihsLCEwKSwhMCksby5zZXRVaW50MzIocys0LG8uZ2V0VWludDMyKHMrNCwhMCleaS5nZXRVaW50MzIobCs0LCEwKSwhMCkscys9OCxsKz0yNDtpZihzPGYpZm9yKGw+PWMmJihwPShwKzgpJTI0LGw9cCk7czxmOylvLnNldFVpbnQ4KHMsby5nZXRVaW50OChzKV5pLmdldFVpbnQ4KGwpKSxzKyssbCsrfXZhciBhNixmNixDMixQMj0kKCgpPT57V3QoKTt0aSgpO2E2PTE5NTMwMjk4MDUsZjY9MjkxNzAzNDEwMDt2Zy5wYXNzVGhyb3VnaERhdGFGb3JUZXN0aW5nPSExO0MyPXZnfSk7ZnVuY3Rpb24gdTYodCxlKXtyZXR1cm4odCZlKSE9PTB9dmFyIEdhLE0yPSQoKCk9PntHYT11Nn0pO2Z1bmN0aW9uIGdpKHQsZSxuLG8scixpKXt0aGlzLl9iaXRzPXQsdGhpcy5jbm9kZVZlcnNpb249ZSx0aGlzLmltYWdlcnlWZXJzaW9uPW4sdGhpcy50ZXJyYWluVmVyc2lvbj1vLHRoaXMuaW1hZ2VyeVByb3ZpZGVyPXIsdGhpcy50ZXJyYWluUHJvdmlkZXI9aSx0aGlzLmFuY2VzdG9ySGFzVGVycmFpbj0hMSx0aGlzLnRlcnJhaW5TdGF0ZT12b2lkIDB9dmFyIGw2LE4yLHA2LGQ2LG02LEkyLHYyPSQoKCk9PntmdCgpO00yKCk7bDY9WzEsMiw0LDhdLE4yPTE1LHA2PTE2LGQ2PTY0LG02PTEyODtnaS5jbG9uZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpPyhlLl9iaXRzPXQuX2JpdHMsZS5jbm9kZVZlcnNpb249dC5jbm9kZVZlcnNpb24sZS5pbWFnZXJ5VmVyc2lvbj10LmltYWdlcnlWZXJzaW9uLGUudGVycmFpblZlcnNpb249dC50ZXJyYWluVmVyc2lvbixlLmltYWdlcnlQcm92aWRlcj10LmltYWdlcnlQcm92aWRlcixlLnRlcnJhaW5Qcm92aWRlcj10LnRlcnJhaW5Qcm92aWRlcik6ZT1uZXcgZ2kodC5fYml0cyx0LmNub2RlVmVyc2lvbix0LmltYWdlcnlWZXJzaW9uLHQudGVycmFpblZlcnNpb24sdC5pbWFnZXJ5UHJvdmlkZXIsdC50ZXJyYWluUHJvdmlkZXIpLGUuYW5jZXN0b3JIYXNUZXJyYWluPXQuYW5jZXN0b3JIYXNUZXJyYWluLGUudGVycmFpblN0YXRlPXQudGVycmFpblN0YXRlLGV9O2dpLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5hbmNlc3Rvckhhc1RlcnJhaW49dC5hbmNlc3Rvckhhc1RlcnJhaW58fHRoaXMuaGFzVGVycmFpbigpfTtnaS5wcm90b3R5cGUuaGFzU3VidHJlZT1mdW5jdGlvbigpe3JldHVybiBHYSh0aGlzLl9iaXRzLHA2KX07Z2kucHJvdG90eXBlLmhhc0ltYWdlcnk9ZnVuY3Rpb24oKXtyZXR1cm4gR2EodGhpcy5fYml0cyxkNil9O2dpLnByb3RvdHlwZS5oYXNUZXJyYWluPWZ1bmN0aW9uKCl7cmV0dXJuIEdhKHRoaXMuX2JpdHMsbTYpfTtnaS5wcm90b3R5cGUuaGFzQ2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gR2EodGhpcy5fYml0cyxOMil9O2dpLnByb3RvdHlwZS5oYXNDaGlsZD1mdW5jdGlvbih0KXtyZXR1cm4gR2EodGhpcy5fYml0cyxsNlt0XSl9O2dpLnByb3RvdHlwZS5nZXRDaGlsZEJpdG1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYml0cyZOMn07STI9Z2l9KTt2YXIgTDI9WW4oKE91dCxGMik9PnsidXNlIHN0cmljdCI7dmFyIGg2PSh0LGUsbixvKT0+e2xldCByPXQmNjU1MzV8MCxpPXQ+Pj4xNiY2NTUzNXwwLHM9MDtmb3IoO24hPT0wOyl7cz1uPjJlMz8yZTM6bixuLT1zO2RvIHI9citlW28rK118MCxpPWkrcnwwO3doaWxlKC0tcyk7ciU9NjU1MjEsaSU9NjU1MjF9cmV0dXJuIHJ8aTw8MTZ8MH07RjIuZXhwb3J0cz1oNn0pO3ZhciBCMj1ZbigoRXV0LEQyKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgXzY9KCk9PntsZXQgdCxlPVtdO2Zvcih2YXIgbj0wO248MjU2O24rKyl7dD1uO2Zvcih2YXIgbz0wO288ODtvKyspdD10JjE/Mzk4ODI5MjM4NF50Pj4+MTp0Pj4+MTtlW25dPXR9cmV0dXJuIGV9LHk2PW5ldyBVaW50MzJBcnJheShfNigpKSxnNj0odCxlLG4sbyk9PntsZXQgcj15NixpPW8rbjt0Xj0tMTtmb3IobGV0IHM9bztzPGk7cysrKXQ9dD4+PjheclsodF5lW3NdKSYyNTVdO3JldHVybiB0Xi0xfTtEMi5leHBvcnRzPWc2fSk7dmFyIGsyPVluKChSdXQsVTIpPT57InVzZSBzdHJpY3QiO1UyLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtsZXQgbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyxiLHcsTyxFLFQseCxNLE4sRixJLHYsQj1lLnN0YXRlO289ZS5uZXh0X2luLEk9ZS5pbnB1dCxyPW8rKGUuYXZhaWxfaW4tNSksaT1lLm5leHRfb3V0LHY9ZS5vdXRwdXQscz1pLShuLWUuYXZhaWxfb3V0KSxmPWkrKGUuYXZhaWxfb3V0LTI1NyksdT1CLmRtYXgsYz1CLndzaXplLGw9Qi53aGF2ZSxwPUIud25leHQsZD1CLndpbmRvdyxoPUIuaG9sZCxfPUIuYml0cyxnPUIubGVuY29kZSxiPUIuZGlzdGNvZGUsdz0oMTw8Qi5sZW5iaXRzKS0xLE89KDE8PEIuZGlzdGJpdHMpLTE7dDpkb3tfPDE1JiYoaCs9SVtvKytdPDxfLF8rPTgsaCs9SVtvKytdPDxfLF8rPTgpLEU9Z1toJnddO2U6Zm9yKDs7KXtpZihUPUU+Pj4yNCxoPj4+PVQsXy09VCxUPUU+Pj4xNiYyNTUsVD09PTApdltpKytdPUUmNjU1MzU7ZWxzZSBpZihUJjE2KXt4PUUmNjU1MzUsVCY9MTUsVCYmKF88VCYmKGgrPUlbbysrXTw8XyxfKz04KSx4Kz1oJigxPDxUKS0xLGg+Pj49VCxfLT1UKSxfPDE1JiYoaCs9SVtvKytdPDxfLF8rPTgsaCs9SVtvKytdPDxfLF8rPTgpLEU9YltoJk9dO246Zm9yKDs7KXtpZihUPUU+Pj4yNCxoPj4+PVQsXy09VCxUPUU+Pj4xNiYyNTUsVCYxNil7aWYoTT1FJjY1NTM1LFQmPTE1LF88VCYmKGgrPUlbbysrXTw8XyxfKz04LF88VCYmKGgrPUlbbysrXTw8XyxfKz04KSksTSs9aCYoMTw8VCktMSxNPnUpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsQi5tb2RlPTE2MjA5O2JyZWFrIHR9aWYoaD4+Pj1ULF8tPVQsVD1pLXMsTT5UKXtpZihUPU0tVCxUPmwmJkIuc2FuZSl7ZS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixCLm1vZGU9MTYyMDk7YnJlYWsgdH1pZihOPTAsRj1kLHA9PT0wKXtpZihOKz1jLVQsVDx4KXt4LT1UO2RvIHZbaSsrXT1kW04rK107d2hpbGUoLS1UKTtOPWktTSxGPXZ9fWVsc2UgaWYocDxUKXtpZihOKz1jK3AtVCxULT1wLFQ8eCl7eC09VDtkbyB2W2krK109ZFtOKytdO3doaWxlKC0tVCk7aWYoTj0wLHA8eCl7VD1wLHgtPVQ7ZG8gdltpKytdPWRbTisrXTt3aGlsZSgtLVQpO049aS1NLEY9dn19fWVsc2UgaWYoTis9cC1ULFQ8eCl7eC09VDtkbyB2W2krK109ZFtOKytdO3doaWxlKC0tVCk7Tj1pLU0sRj12fWZvcig7eD4yOyl2W2krK109RltOKytdLHZbaSsrXT1GW04rK10sdltpKytdPUZbTisrXSx4LT0zO3gmJih2W2krK109RltOKytdLHg+MSYmKHZbaSsrXT1GW04rK10pKX1lbHNle049aS1NO2RvIHZbaSsrXT12W04rK10sdltpKytdPXZbTisrXSx2W2krK109dltOKytdLHgtPTM7d2hpbGUoeD4yKTt4JiYodltpKytdPXZbTisrXSx4PjEmJih2W2krK109dltOKytdKSl9fWVsc2UgaWYoKFQmNjQpPT09MCl7RT1iWyhFJjY1NTM1KSsoaCYoMTw8VCktMSldO2NvbnRpbnVlIG59ZWxzZXtlLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixCLm1vZGU9MTYyMDk7YnJlYWsgdH1icmVha319ZWxzZSBpZigoVCY2NCk9PT0wKXtFPWdbKEUmNjU1MzUpKyhoJigxPDxUKS0xKV07Y29udGludWUgZX1lbHNlIGlmKFQmMzIpe0IubW9kZT0xNjE5MTticmVhayB0fWVsc2V7ZS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsQi5tb2RlPTE2MjA5O2JyZWFrIHR9YnJlYWt9fXdoaWxlKG88ciYmaTxmKTt4PV8+PjMsby09eCxfLT14PDwzLGgmPSgxPDxfKS0xLGUubmV4dF9pbj1vLGUubmV4dF9vdXQ9aSxlLmF2YWlsX2luPW88cj81KyhyLW8pOjUtKG8tciksZS5hdmFpbF9vdXQ9aTxmPzI1NysoZi1pKToyNTctKGktZiksQi5ob2xkPWgsQi5iaXRzPV99fSk7dmFyIFYyPVluKChTdXQsRzIpPT57InVzZSBzdHJpY3QiO3ZhciBBNj1uZXcgVWludDE2QXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSksYjY9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE3LDE3LDE3LDE3LDE4LDE4LDE4LDE4LDE5LDE5LDE5LDE5LDIwLDIwLDIwLDIwLDIxLDIxLDIxLDIxLDE2LDcyLDc4XSksdzY9bmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsMCwwXSksVDY9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XSksTzY9KHQsZSxuLG8scixpLHMsZik9PntsZXQgdT1mLmJpdHMsYz0wLGw9MCxwPTAsZD0wLGg9MCxfPTAsZz0wLGI9MCx3PTAsTz0wLEUsVCx4LE0sTixGPW51bGwsSSx2PW5ldyBVaW50MTZBcnJheSgxNiksQj1uZXcgVWludDE2QXJyYXkoMTYpLEE9bnVsbCxTLEMsTDtmb3IoYz0wO2M8PTE1O2MrKyl2W2NdPTA7Zm9yKGw9MDtsPG87bCsrKXZbZVtuK2xdXSsrO2ZvcihoPXUsZD0xNTtkPj0xJiZ2W2RdPT09MDtkLS0pO2lmKGg+ZCYmKGg9ZCksZD09PTApcmV0dXJuIHJbaSsrXT0xPDwyNHw2NDw8MTZ8MCxyW2krK109MTw8MjR8NjQ8PDE2fDAsZi5iaXRzPTEsMDtmb3IocD0xO3A8ZCYmdltwXT09PTA7cCsrKTtmb3IoaDxwJiYoaD1wKSxiPTEsYz0xO2M8PTE1O2MrKylpZihiPDw9MSxiLT12W2NdLGI8MClyZXR1cm4tMTtpZihiPjAmJih0PT09MHx8ZCE9PTEpKXJldHVybi0xO2ZvcihCWzFdPTAsYz0xO2M8MTU7YysrKUJbYysxXT1CW2NdK3ZbY107Zm9yKGw9MDtsPG87bCsrKWVbbitsXSE9PTAmJihzW0JbZVtuK2xdXSsrXT1sKTtpZih0PT09MD8oRj1BPXMsST0yMCk6dD09PTE/KEY9QTYsQT1iNixJPTI1Nyk6KEY9dzYsQT1UNixJPTApLE89MCxsPTAsYz1wLE49aSxfPWgsZz0wLHg9LTEsdz0xPDxoLE09dy0xLHQ9PT0xJiZ3Pjg1Mnx8dD09PTImJnc+NTkyKXJldHVybiAxO2Zvcig7Oyl7Uz1jLWcsc1tsXSsxPEk/KEM9MCxMPXNbbF0pOnNbbF0+PUk/KEM9QVtzW2xdLUldLEw9RltzW2xdLUldKTooQz05NixMPTApLEU9MTw8Yy1nLFQ9MTw8XyxwPVQ7ZG8gVC09RSxyW04rKE8+PmcpK1RdPVM8PDI0fEM8PDE2fEx8MDt3aGlsZShUIT09MCk7Zm9yKEU9MTw8Yy0xO08mRTspRT4+PTE7aWYoRSE9PTA/KE8mPUUtMSxPKz1FKTpPPTAsbCsrLC0tdltjXT09PTApe2lmKGM9PT1kKWJyZWFrO2M9ZVtuK3NbbF1dfWlmKGM+aCYmKE8mTSkhPT14KXtmb3IoZz09PTAmJihnPWgpLE4rPXAsXz1jLWcsYj0xPDxfO18rZzxkJiYoYi09dltfK2ddLCEoYjw9MCkpOylfKyssYjw8PTE7aWYodys9MTw8Xyx0PT09MSYmdz44NTJ8fHQ9PT0yJiZ3PjU5MilyZXR1cm4gMTt4PU8mTSxyW3hdPWg8PDI0fF88PDE2fE4taXwwfX1yZXR1cm4gTyE9PTAmJihyW04rT109Yy1nPDwyNHw2NDw8MTZ8MCksZi5iaXRzPWgsMH07RzIuZXhwb3J0cz1PNn0pO3ZhciBzbT1ZbigoeHV0LHoyKT0+eyJ1c2Ugc3RyaWN0Ijt6Mi5leHBvcnRzPXtaX05PX0ZMVVNIOjAsWl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9TVFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfTUVNX0VSUk9SOi00LFpfQlVGX0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6MyxaX0ZJWEVEOjQsWl9ERUZBVUxUX1NUUkFURUdZOjAsWl9CSU5BUlk6MCxaX1RFWFQ6MSxaX1VOS05PV046MixaX0RFRkxBVEVEOjh9fSk7dmFyIE9TPVluKChDdXQsJHIpPT57InVzZSBzdHJpY3QiO3ZhciBrZz1MMigpLEFpPUIyKCksRTY9azIoKSxtdT1WMigpLFI2PTAsbVM9MSxoUz0yLHtaX0ZJTklTSDpqMixaX0JMT0NLOlM2LFpfVFJFRVM6Y20sWl9PSzp4YyxaX1NUUkVBTV9FTkQ6eDYsWl9ORUVEX0RJQ1Q6QzYsWl9TVFJFQU1fRVJST1I6TnIsWl9EQVRBX0VSUk9SOl9TLFpfTUVNX0VSUk9SOkdnLFpfQlVGX0VSUk9SOlA2LFpfREVGTEFURUQ6SDJ9PXNtKCksbG09MTYxODAscTI9MTYxODEsSzI9MTYxODIsVzI9MTYxODMsWDI9MTYxODQsWTI9MTYxODUsJDI9MTYxODYsWjI9MTYxODcsUTI9MTYxODgsSjI9MTYxODksdW09MTYxOTAsV2k9MTYxOTEsRmc9MTYxOTIsdFM9MTYxOTMsTGc9MTYxOTQsZVM9MTYxOTUsblM9MTYxOTYsb1M9MTYxOTcsclM9MTYxOTgsYW09MTYxOTksZm09MTYyMDAsaVM9MTYyMDEsc1M9MTYyMDIsY1M9MTYyMDMsYVM9MTYyMDQsZlM9MTYyMDUsRGc9MTYyMDYsdVM9MTYyMDcsbFM9MTYyMDgsTW49MTYyMDksVmc9MTYyMTAseVM9MTYyMTEsTTY9ODUyLE42PTU5MixJNj0xNSx2Nj1JNixwUz10PT4odD4+PjI0JjI1NSkrKHQ+Pj44JjY1MjgwKSsoKHQmNjUyODApPDw4KSsoKHQmMjU1KTw8MjQpO2Z1bmN0aW9uIEY2KCl7dGhpcy5zdHJtPW51bGwsdGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRoaXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5iaXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyBVaW50MTZBcnJheSgzMjApLHRoaXMud29yaz1uZXcgVWludDE2QXJyYXkoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMuYmFjaz0wLHRoaXMud2FzPTB9dmFyIENjPXQ9PntpZighdClyZXR1cm4gMTtsZXQgZT10LnN0YXRlO3JldHVybiFlfHxlLnN0cm0hPT10fHxlLm1vZGU8bG18fGUubW9kZT55Uz8xOjB9LGdTPXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gdC50b3RhbF9pbj10LnRvdGFsX291dD1lLnRvdGFsPTAsdC5tc2c9IiIsZS53cmFwJiYodC5hZGxlcj1lLndyYXAmMSksZS5tb2RlPWxtLGUubGFzdD0wLGUuaGF2ZWRpY3Q9MCxlLmZsYWdzPS0xLGUuZG1heD0zMjc2OCxlLmhlYWQ9bnVsbCxlLmhvbGQ9MCxlLmJpdHM9MCxlLmxlbmNvZGU9ZS5sZW5keW49bmV3IEludDMyQXJyYXkoTTYpLGUuZGlzdGNvZGU9ZS5kaXN0ZHluPW5ldyBJbnQzMkFycmF5KE42KSxlLnNhbmU9MSxlLmJhY2s9LTEseGN9LEFTPXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53c2l6ZT0wLGUud2hhdmU9MCxlLnduZXh0PTAsZ1ModCl9LGJTPSh0LGUpPT57bGV0IG47aWYoQ2ModCkpcmV0dXJuIE5yO2xldCBvPXQuc3RhdGU7cmV0dXJuIGU8MD8obj0wLGU9LWUpOihuPShlPj40KSs1LGU8NDgmJihlJj0xNSkpLGUmJihlPDh8fGU+MTUpP05yOihvLndpbmRvdyE9PW51bGwmJm8ud2JpdHMhPT1lJiYoby53aW5kb3c9bnVsbCksby53cmFwPW4sby53Yml0cz1lLEFTKHQpKX0sd1M9KHQsZSk9PntpZighdClyZXR1cm4gTnI7bGV0IG49bmV3IEY2O3Quc3RhdGU9bixuLnN0cm09dCxuLndpbmRvdz1udWxsLG4ubW9kZT1sbTtsZXQgbz1iUyh0LGUpO3JldHVybiBvIT09eGMmJih0LnN0YXRlPW51bGwpLG99LEw2PXQ9PndTKHQsdjYpLGRTPSEwLEJnLFVnLEQ2PXQ9PntpZihkUyl7Qmc9bmV3IEludDMyQXJyYXkoNTEyKSxVZz1uZXcgSW50MzJBcnJheSgzMik7bGV0IGU9MDtmb3IoO2U8MTQ0Oyl0LmxlbnNbZSsrXT04O2Zvcig7ZTwyNTY7KXQubGVuc1tlKytdPTk7Zm9yKDtlPDI4MDspdC5sZW5zW2UrK109Nztmb3IoO2U8Mjg4Oyl0LmxlbnNbZSsrXT04O2ZvcihtdShtUyx0LmxlbnMsMCwyODgsQmcsMCx0Lndvcmsse2JpdHM6OX0pLGU9MDtlPDMyOyl0LmxlbnNbZSsrXT01O211KGhTLHQubGVucywwLDMyLFVnLDAsdC53b3JrLHtiaXRzOjV9KSxkUz0hMX10LmxlbmNvZGU9QmcsdC5sZW5iaXRzPTksdC5kaXN0Y29kZT1VZyx0LmRpc3RiaXRzPTV9LFRTPSh0LGUsbixvKT0+e2xldCByLGk9dC5zdGF0ZTtyZXR1cm4gaS53aW5kb3c9PT1udWxsJiYoaS53c2l6ZT0xPDxpLndiaXRzLGkud25leHQ9MCxpLndoYXZlPTAsaS53aW5kb3c9bmV3IFVpbnQ4QXJyYXkoaS53c2l6ZSkpLG8+PWkud3NpemU/KGkud2luZG93LnNldChlLnN1YmFycmF5KG4taS53c2l6ZSxuKSwwKSxpLnduZXh0PTAsaS53aGF2ZT1pLndzaXplKToocj1pLndzaXplLWkud25leHQscj5vJiYocj1vKSxpLndpbmRvdy5zZXQoZS5zdWJhcnJheShuLW8sbi1vK3IpLGkud25leHQpLG8tPXIsbz8oaS53aW5kb3cuc2V0KGUuc3ViYXJyYXkobi1vLG4pLDApLGkud25leHQ9byxpLndoYXZlPWkud3NpemUpOihpLnduZXh0Kz1yLGkud25leHQ9PT1pLndzaXplJiYoaS53bmV4dD0wKSxpLndoYXZlPGkud3NpemUmJihpLndoYXZlKz1yKSkpLDB9LEI2PSh0LGUpPT57bGV0IG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyxiPTAsdyxPLEUsVCx4LE0sTixGLEk9bmV3IFVpbnQ4QXJyYXkoNCksdixCLEE9bmV3IFVpbnQ4QXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtpZihDYyh0KXx8IXQub3V0cHV0fHwhdC5pbnB1dCYmdC5hdmFpbF9pbiE9PTApcmV0dXJuIE5yO249dC5zdGF0ZSxuLm1vZGU9PT1XaSYmKG4ubW9kZT1GZykscz10Lm5leHRfb3V0LHI9dC5vdXRwdXQsdT10LmF2YWlsX291dCxpPXQubmV4dF9pbixvPXQuaW5wdXQsZj10LmF2YWlsX2luLGM9bi5ob2xkLGw9bi5iaXRzLHA9ZixkPXUsRj14Yzt0OmZvcig7Oylzd2l0Y2gobi5tb2RlKXtjYXNlIGxtOmlmKG4ud3JhcD09PTApe24ubW9kZT1GZzticmVha31mb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLndyYXAmMiYmYz09PTM1NjE1KXtuLndiaXRzPT09MCYmKG4ud2JpdHM9MTUpLG4uY2hlY2s9MCxJWzBdPWMmMjU1LElbMV09Yz4+PjgmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDIsMCksYz0wLGw9MCxuLm1vZGU9cTI7YnJlYWt9aWYobi5oZWFkJiYobi5oZWFkLmRvbmU9ITEpLCEobi53cmFwJjEpfHwoKChjJjI1NSk8PDgpKyhjPj44KSklMzEpe3QubXNnPSJpbmNvcnJlY3QgaGVhZGVyIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9aWYoKGMmMTUpIT09SDIpe3QubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsbi5tb2RlPU1uO2JyZWFrfWlmKGM+Pj49NCxsLT00LE49KGMmMTUpKzgsbi53Yml0cz09PTAmJihuLndiaXRzPU4pLE4+MTV8fE4+bi53Yml0cyl7dC5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLG4ubW9kZT1NbjticmVha31uLmRtYXg9MTw8bi53Yml0cyxuLmZsYWdzPTAsdC5hZGxlcj1uLmNoZWNrPTEsbi5tb2RlPWMmNTEyP0oyOldpLGM9MCxsPTA7YnJlYWs7Y2FzZSBxMjpmb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLmZsYWdzPWMsKG4uZmxhZ3MmMjU1KSE9PUgyKXt0Lm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiLG4ubW9kZT1NbjticmVha31pZihuLmZsYWdzJjU3MzQ0KXt0Lm1zZz0idW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0IixuLm1vZGU9TW47YnJlYWt9bi5oZWFkJiYobi5oZWFkLnRleHQ9Yz4+OCYxKSxuLmZsYWdzJjUxMiYmbi53cmFwJjQmJihJWzBdPWMmMjU1LElbMV09Yz4+PjgmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDIsMCkpLGM9MCxsPTAsbi5tb2RlPUsyO2Nhc2UgSzI6Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5oZWFkJiYobi5oZWFkLnRpbWU9Yyksbi5mbGFncyY1MTImJm4ud3JhcCY0JiYoSVswXT1jJjI1NSxJWzFdPWM+Pj44JjI1NSxJWzJdPWM+Pj4xNiYyNTUsSVszXT1jPj4+MjQmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDQsMCkpLGM9MCxsPTAsbi5tb2RlPVcyO2Nhc2UgVzI6Zm9yKDtsPDE2Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5oZWFkJiYobi5oZWFkLnhmbGFncz1jJjI1NSxuLmhlYWQub3M9Yz4+OCksbi5mbGFncyY1MTImJm4ud3JhcCY0JiYoSVswXT1jJjI1NSxJWzFdPWM+Pj44JjI1NSxuLmNoZWNrPUFpKG4uY2hlY2ssSSwyLDApKSxjPTAsbD0wLG4ubW9kZT1YMjtjYXNlIFgyOmlmKG4uZmxhZ3MmMTAyNCl7Zm9yKDtsPDE2Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5sZW5ndGg9YyxuLmhlYWQmJihuLmhlYWQuZXh0cmFfbGVuPWMpLG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKElbMF09YyYyNTUsSVsxXT1jPj4+OCYyNTUsbi5jaGVjaz1BaShuLmNoZWNrLEksMiwwKSksYz0wLGw9MH1lbHNlIG4uaGVhZCYmKG4uaGVhZC5leHRyYT1udWxsKTtuLm1vZGU9WTI7Y2FzZSBZMjppZihuLmZsYWdzJjEwMjQmJihoPW4ubGVuZ3RoLGg+ZiYmKGg9ZiksaCYmKG4uaGVhZCYmKE49bi5oZWFkLmV4dHJhX2xlbi1uLmxlbmd0aCxuLmhlYWQuZXh0cmF8fChuLmhlYWQuZXh0cmE9bmV3IFVpbnQ4QXJyYXkobi5oZWFkLmV4dHJhX2xlbikpLG4uaGVhZC5leHRyYS5zZXQoby5zdWJhcnJheShpLGkraCksTikpLG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKG4uY2hlY2s9QWkobi5jaGVjayxvLGgsaSkpLGYtPWgsaSs9aCxuLmxlbmd0aC09aCksbi5sZW5ndGgpKWJyZWFrIHQ7bi5sZW5ndGg9MCxuLm1vZGU9JDI7Y2FzZSAkMjppZihuLmZsYWdzJjIwNDgpe2lmKGY9PT0wKWJyZWFrIHQ7aD0wO2RvIE49b1tpK2grK10sbi5oZWFkJiZOJiZuLmxlbmd0aDw2NTUzNiYmKG4uaGVhZC5uYW1lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKE4pKTt3aGlsZShOJiZoPGYpO2lmKG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKG4uY2hlY2s9QWkobi5jaGVjayxvLGgsaSkpLGYtPWgsaSs9aCxOKWJyZWFrIHR9ZWxzZSBuLmhlYWQmJihuLmhlYWQubmFtZT1udWxsKTtuLmxlbmd0aD0wLG4ubW9kZT1aMjtjYXNlIFoyOmlmKG4uZmxhZ3MmNDA5Nil7aWYoZj09PTApYnJlYWsgdDtoPTA7ZG8gTj1vW2kraCsrXSxuLmhlYWQmJk4mJm4ubGVuZ3RoPDY1NTM2JiYobi5oZWFkLmNvbW1lbnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoTikpO3doaWxlKE4mJmg8Zik7aWYobi5mbGFncyY1MTImJm4ud3JhcCY0JiYobi5jaGVjaz1BaShuLmNoZWNrLG8saCxpKSksZi09aCxpKz1oLE4pYnJlYWsgdH1lbHNlIG4uaGVhZCYmKG4uaGVhZC5jb21tZW50PW51bGwpO24ubW9kZT1RMjtjYXNlIFEyOmlmKG4uZmxhZ3MmNTEyKXtmb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLndyYXAmNCYmYyE9PShuLmNoZWNrJjY1NTM1KSl7dC5tc2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLG4ubW9kZT1NbjticmVha31jPTAsbD0wfW4uaGVhZCYmKG4uaGVhZC5oY3JjPW4uZmxhZ3M+PjkmMSxuLmhlYWQuZG9uZT0hMCksdC5hZGxlcj1uLmNoZWNrPTAsbi5tb2RlPVdpO2JyZWFrO2Nhc2UgSjI6Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9dC5hZGxlcj1uLmNoZWNrPXBTKGMpLGM9MCxsPTAsbi5tb2RlPXVtO2Nhc2UgdW06aWYobi5oYXZlZGljdD09PTApcmV0dXJuIHQubmV4dF9vdXQ9cyx0LmF2YWlsX291dD11LHQubmV4dF9pbj1pLHQuYXZhaWxfaW49ZixuLmhvbGQ9YyxuLmJpdHM9bCxDNjt0LmFkbGVyPW4uY2hlY2s9MSxuLm1vZGU9V2k7Y2FzZSBXaTppZihlPT09UzZ8fGU9PT1jbSlicmVhayB0O2Nhc2UgRmc6aWYobi5sYXN0KXtjPj4+PWwmNyxsLT1sJjcsbi5tb2RlPURnO2JyZWFrfWZvcig7bDwzOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9c3dpdGNoKG4ubGFzdD1jJjEsYz4+Pj0xLGwtPTEsYyYzKXtjYXNlIDA6bi5tb2RlPXRTO2JyZWFrO2Nhc2UgMTppZihENihuKSxuLm1vZGU9YW0sZT09PWNtKXtjPj4+PTIsbC09MjticmVhayB0fWJyZWFrO2Nhc2UgMjpuLm1vZGU9blM7YnJlYWs7Y2FzZSAzOnQubXNnPSJpbnZhbGlkIGJsb2NrIHR5cGUiLG4ubW9kZT1Nbn1jPj4+PTIsbC09MjticmVhaztjYXNlIHRTOmZvcihjPj4+PWwmNyxsLT1sJjc7bDwzMjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKChjJjY1NTM1KSE9PShjPj4+MTZeNjU1MzUpKXt0Lm1zZz0iaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyIsbi5tb2RlPU1uO2JyZWFrfWlmKG4ubGVuZ3RoPWMmNjU1MzUsYz0wLGw9MCxuLm1vZGU9TGcsZT09PWNtKWJyZWFrIHQ7Y2FzZSBMZzpuLm1vZGU9ZVM7Y2FzZSBlUzppZihoPW4ubGVuZ3RoLGgpe2lmKGg+ZiYmKGg9ZiksaD51JiYoaD11KSxoPT09MClicmVhayB0O3Iuc2V0KG8uc3ViYXJyYXkoaSxpK2gpLHMpLGYtPWgsaSs9aCx1LT1oLHMrPWgsbi5sZW5ndGgtPWg7YnJlYWt9bi5tb2RlPVdpO2JyZWFrO2Nhc2UgblM6Zm9yKDtsPDE0Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9aWYobi5ubGVuPShjJjMxKSsyNTcsYz4+Pj01LGwtPTUsbi5uZGlzdD0oYyYzMSkrMSxjPj4+PTUsbC09NSxuLm5jb2RlPShjJjE1KSs0LGM+Pj49NCxsLT00LG4ubmxlbj4yODZ8fG4ubmRpc3Q+MzApe3QubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsbi5tb2RlPU1uO2JyZWFrfW4uaGF2ZT0wLG4ubW9kZT1vUztjYXNlIG9TOmZvcig7bi5oYXZlPG4ubmNvZGU7KXtmb3IoO2w8Mzspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fW4ubGVuc1tBW24uaGF2ZSsrXV09YyY3LGM+Pj49MyxsLT0zfWZvcig7bi5oYXZlPDE5OyluLmxlbnNbQVtuLmhhdmUrK11dPTA7aWYobi5sZW5jb2RlPW4ubGVuZHluLG4ubGVuYml0cz03LHY9e2JpdHM6bi5sZW5iaXRzfSxGPW11KFI2LG4ubGVucywwLDE5LG4ubGVuY29kZSwwLG4ud29yayx2KSxuLmxlbmJpdHM9di5iaXRzLEYpe3QubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLG4ubW9kZT1NbjticmVha31uLmhhdmU9MCxuLm1vZGU9clM7Y2FzZSByUzpmb3IoO24uaGF2ZTxuLm5sZW4rbi5uZGlzdDspe2Zvcig7Yj1uLmxlbmNvZGVbYyYoMTw8bi5sZW5iaXRzKS0xXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEodzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihFPDE2KWM+Pj49dyxsLT13LG4ubGVuc1tuLmhhdmUrK109RTtlbHNle2lmKEU9PT0xNil7Zm9yKEI9dysyO2w8Qjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKGM+Pj49dyxsLT13LG4uaGF2ZT09PTApe3QubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixuLm1vZGU9TW47YnJlYWt9Tj1uLmxlbnNbbi5oYXZlLTFdLGg9MysoYyYzKSxjPj4+PTIsbC09Mn1lbHNlIGlmKEU9PT0xNyl7Zm9yKEI9dyszO2w8Qjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWM+Pj49dyxsLT13LE49MCxoPTMrKGMmNyksYz4+Pj0zLGwtPTN9ZWxzZXtmb3IoQj13Kzc7bDxCOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9Yz4+Pj13LGwtPXcsTj0wLGg9MTErKGMmMTI3KSxjPj4+PTcsbC09N31pZihuLmhhdmUraD5uLm5sZW4rbi5uZGlzdCl7dC5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLG4ubW9kZT1NbjticmVha31mb3IoO2gtLTspbi5sZW5zW24uaGF2ZSsrXT1OfX1pZihuLm1vZGU9PT1NbilicmVhaztpZihuLmxlbnNbMjU2XT09PTApe3QubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLG4ubW9kZT1NbjticmVha31pZihuLmxlbmJpdHM9OSx2PXtiaXRzOm4ubGVuYml0c30sRj1tdShtUyxuLmxlbnMsMCxuLm5sZW4sbi5sZW5jb2RlLDAsbi53b3JrLHYpLG4ubGVuYml0cz12LmJpdHMsRil7dC5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsbi5tb2RlPU1uO2JyZWFrfWlmKG4uZGlzdGJpdHM9NixuLmRpc3Rjb2RlPW4uZGlzdGR5bix2PXtiaXRzOm4uZGlzdGJpdHN9LEY9bXUoaFMsbi5sZW5zLG4ubmxlbixuLm5kaXN0LG4uZGlzdGNvZGUsMCxuLndvcmssdiksbi5kaXN0Yml0cz12LmJpdHMsRil7dC5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsbi5tb2RlPU1uO2JyZWFrfWlmKG4ubW9kZT1hbSxlPT09Y20pYnJlYWsgdDtjYXNlIGFtOm4ubW9kZT1mbTtjYXNlIGZtOmlmKGY+PTYmJnU+PTI1OCl7dC5uZXh0X291dD1zLHQuYXZhaWxfb3V0PXUsdC5uZXh0X2luPWksdC5hdmFpbF9pbj1mLG4uaG9sZD1jLG4uYml0cz1sLEU2KHQsZCkscz10Lm5leHRfb3V0LHI9dC5vdXRwdXQsdT10LmF2YWlsX291dCxpPXQubmV4dF9pbixvPXQuaW5wdXQsZj10LmF2YWlsX2luLGM9bi5ob2xkLGw9bi5iaXRzLG4ubW9kZT09PVdpJiYobi5iYWNrPS0xKTticmVha31mb3Iobi5iYWNrPTA7Yj1uLmxlbmNvZGVbYyYoMTw8bi5sZW5iaXRzKS0xXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEodzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihPJiYoTyYyNDApPT09MCl7Zm9yKFQ9dyx4PU8sTT1FO2I9bi5sZW5jb2RlW00rKChjJigxPDxUK3gpLTEpPj5UKV0sdz1iPj4+MjQsTz1iPj4+MTYmMjU1LEU9YiY2NTUzNSwhKFQrdzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1jPj4+PVQsbC09VCxuLmJhY2srPVR9aWYoYz4+Pj13LGwtPXcsbi5iYWNrKz13LG4ubGVuZ3RoPUUsTz09PTApe24ubW9kZT1mUzticmVha31pZihPJjMyKXtuLmJhY2s9LTEsbi5tb2RlPVdpO2JyZWFrfWlmKE8mNjQpe3QubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLG4ubW9kZT1NbjticmVha31uLmV4dHJhPU8mMTUsbi5tb2RlPWlTO2Nhc2UgaVM6aWYobi5leHRyYSl7Zm9yKEI9bi5leHRyYTtsPEI7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1uLmxlbmd0aCs9YyYoMTw8bi5leHRyYSktMSxjPj4+PW4uZXh0cmEsbC09bi5leHRyYSxuLmJhY2srPW4uZXh0cmF9bi53YXM9bi5sZW5ndGgsbi5tb2RlPXNTO2Nhc2Ugc1M6Zm9yKDtiPW4uZGlzdGNvZGVbYyYoMTw8bi5kaXN0Yml0cyktMV0sdz1iPj4+MjQsTz1iPj4+MTYmMjU1LEU9YiY2NTUzNSwhKHc8PWwpOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9aWYoKE8mMjQwKT09PTApe2ZvcihUPXcseD1PLE09RTtiPW4uZGlzdGNvZGVbTSsoKGMmKDE8PFQreCktMSk+PlQpXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEoVCt3PD1sKTspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWM+Pj49VCxsLT1ULG4uYmFjays9VH1pZihjPj4+PXcsbC09dyxuLmJhY2srPXcsTyY2NCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsbi5tb2RlPU1uO2JyZWFrfW4ub2Zmc2V0PUUsbi5leHRyYT1PJjE1LG4ubW9kZT1jUztjYXNlIGNTOmlmKG4uZXh0cmEpe2ZvcihCPW4uZXh0cmE7bDxCOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5vZmZzZXQrPWMmKDE8PG4uZXh0cmEpLTEsYz4+Pj1uLmV4dHJhLGwtPW4uZXh0cmEsbi5iYWNrKz1uLmV4dHJhfWlmKG4ub2Zmc2V0Pm4uZG1heCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixuLm1vZGU9TW47YnJlYWt9bi5tb2RlPWFTO2Nhc2UgYVM6aWYodT09PTApYnJlYWsgdDtpZihoPWQtdSxuLm9mZnNldD5oKXtpZihoPW4ub2Zmc2V0LWgsaD5uLndoYXZlJiZuLnNhbmUpe3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsbi5tb2RlPU1uO2JyZWFrfWg+bi53bmV4dD8oaC09bi53bmV4dCxfPW4ud3NpemUtaCk6Xz1uLnduZXh0LWgsaD5uLmxlbmd0aCYmKGg9bi5sZW5ndGgpLGc9bi53aW5kb3d9ZWxzZSBnPXIsXz1zLW4ub2Zmc2V0LGg9bi5sZW5ndGg7aD51JiYoaD11KSx1LT1oLG4ubGVuZ3RoLT1oO2RvIHJbcysrXT1nW18rK107d2hpbGUoLS1oKTtuLmxlbmd0aD09PTAmJihuLm1vZGU9Zm0pO2JyZWFrO2Nhc2UgZlM6aWYodT09PTApYnJlYWsgdDtyW3MrK109bi5sZW5ndGgsdS0tLG4ubW9kZT1mbTticmVhaztjYXNlIERnOmlmKG4ud3JhcCl7Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sY3w9b1tpKytdPDxsLGwrPTh9aWYoZC09dSx0LnRvdGFsX291dCs9ZCxuLnRvdGFsKz1kLG4ud3JhcCY0JiZkJiYodC5hZGxlcj1uLmNoZWNrPW4uZmxhZ3M/QWkobi5jaGVjayxyLGQscy1kKTprZyhuLmNoZWNrLHIsZCxzLWQpKSxkPXUsbi53cmFwJjQmJihuLmZsYWdzP2M6cFMoYykpIT09bi5jaGVjayl7dC5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9Yz0wLGw9MH1uLm1vZGU9dVM7Y2FzZSB1UzppZihuLndyYXAmJm4uZmxhZ3Mpe2Zvcig7bDwzMjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKG4ud3JhcCY0JiZjIT09KG4udG90YWwmNDI5NDk2NzI5NSkpe3QubXNnPSJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9Yz0wLGw9MH1uLm1vZGU9bFM7Y2FzZSBsUzpGPXg2O2JyZWFrIHQ7Y2FzZSBNbjpGPV9TO2JyZWFrIHQ7Y2FzZSBWZzpyZXR1cm4gR2c7Y2FzZSB5UzpkZWZhdWx0OnJldHVybiBOcn1yZXR1cm4gdC5uZXh0X291dD1zLHQuYXZhaWxfb3V0PXUsdC5uZXh0X2luPWksdC5hdmFpbF9pbj1mLG4uaG9sZD1jLG4uYml0cz1sLChuLndzaXplfHxkIT09dC5hdmFpbF9vdXQmJm4ubW9kZTxNbiYmKG4ubW9kZTxEZ3x8ZSE9PWoyKSkmJlRTKHQsdC5vdXRwdXQsdC5uZXh0X291dCxkLXQuYXZhaWxfb3V0KT8obi5tb2RlPVZnLEdnKToocC09dC5hdmFpbF9pbixkLT10LmF2YWlsX291dCx0LnRvdGFsX2luKz1wLHQudG90YWxfb3V0Kz1kLG4udG90YWwrPWQsbi53cmFwJjQmJmQmJih0LmFkbGVyPW4uY2hlY2s9bi5mbGFncz9BaShuLmNoZWNrLHIsZCx0Lm5leHRfb3V0LWQpOmtnKG4uY2hlY2sscixkLHQubmV4dF9vdXQtZCkpLHQuZGF0YV90eXBlPW4uYml0cysobi5sYXN0PzY0OjApKyhuLm1vZGU9PT1XaT8xMjg6MCkrKG4ubW9kZT09PWFtfHxuLm1vZGU9PT1MZz8yNTY6MCksKHA9PT0wJiZkPT09MHx8ZT09PWoyKSYmRj09PXhjJiYoRj1QNiksRil9LFU2PXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53aW5kb3cmJihlLndpbmRvdz1udWxsKSx0LnN0YXRlPW51bGwseGN9LGs2PSh0LGUpPT57aWYoQ2ModCkpcmV0dXJuIE5yO2xldCBuPXQuc3RhdGU7cmV0dXJuKG4ud3JhcCYyKT09PTA/TnI6KG4uaGVhZD1lLGUuZG9uZT0hMSx4Yyl9LEc2PSh0LGUpPT57bGV0IG49ZS5sZW5ndGgsbyxyLGk7cmV0dXJuIENjKHQpfHwobz10LnN0YXRlLG8ud3JhcCE9PTAmJm8ubW9kZSE9PXVtKT9OcjpvLm1vZGU9PT11bSYmKHI9MSxyPWtnKHIsZSxuLDApLHIhPT1vLmNoZWNrKT9fUzooaT1UUyh0LGUsbixuKSxpPyhvLm1vZGU9VmcsR2cpOihvLmhhdmVkaWN0PTEseGMpKX07JHIuZXhwb3J0cy5pbmZsYXRlUmVzZXQ9QVM7JHIuZXhwb3J0cy5pbmZsYXRlUmVzZXQyPWJTOyRyLmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcD1nUzskci5leHBvcnRzLmluZmxhdGVJbml0PUw2OyRyLmV4cG9ydHMuaW5mbGF0ZUluaXQyPXdTOyRyLmV4cG9ydHMuaW5mbGF0ZT1CNjskci5leHBvcnRzLmluZmxhdGVFbmQ9VTY7JHIuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyPWs2OyRyLmV4cG9ydHMuaW5mbGF0ZVNldERpY3Rpb25hcnk9RzY7JHIuZXhwb3J0cy5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9KTt2YXIgRVM9WW4oKFB1dCx6Zyk9PnsidXNlIHN0cmljdCI7dmFyIFY2PSh0LGUpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKTt6Zy5leHBvcnRzLmFzc2lnbj1mdW5jdGlvbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKDtlLmxlbmd0aDspe2xldCBuPWUuc2hpZnQoKTtpZihuKXtpZih0eXBlb2YgbiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcihuKyJtdXN0IGJlIG5vbi1vYmplY3QiKTtmb3IobGV0IG8gaW4gbilWNihuLG8pJiYodFtvXT1uW29dKX19cmV0dXJuIHR9O3pnLmV4cG9ydHMuZmxhdHRlbkNodW5rcz10PT57bGV0IGU9MDtmb3IobGV0IG89MCxyPXQubGVuZ3RoO288cjtvKyspZSs9dFtvXS5sZW5ndGg7bGV0IG49bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBvPTAscj0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IHM9dFtvXTtuLnNldChzLHIpLHIrPXMubGVuZ3RofXJldHVybiBufX0pO3ZhciBTUz1ZbigoTXV0LHBtKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUlM9ITA7dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgxKSl9Y2F0Y2h7UlM9ITF9dmFyIGh1PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKWh1W3RdPXQ+PTI1Mj82OnQ+PTI0OD81OnQ+PTI0MD80OnQ+PTIyND8zOnQ+PTE5Mj8yOjE7aHVbMjU0XT1odVsyNTRdPTE7cG0uZXhwb3J0cy5zdHJpbmcyYnVmPXQ9PntpZih0eXBlb2YgVGV4dEVuY29kZXI9PSJmdW5jdGlvbiImJlRleHRFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUpcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KTtsZXQgZSxuLG8scixpLHM9dC5sZW5ndGgsZj0wO2ZvcihyPTA7cjxzO3IrKyluPXQuY2hhckNvZGVBdChyKSwobiY2NDUxMik9PT01NTI5NiYmcisxPHMmJihvPXQuY2hhckNvZGVBdChyKzEpLChvJjY0NTEyKT09PTU2MzIwJiYobj02NTUzNisobi01NTI5Njw8MTApKyhvLTU2MzIwKSxyKyspKSxmKz1uPDEyOD8xOm48MjA0OD8yOm48NjU1MzY/Mzo0O2ZvcihlPW5ldyBVaW50OEFycmF5KGYpLGk9MCxyPTA7aTxmO3IrKyluPXQuY2hhckNvZGVBdChyKSwobiY2NDUxMik9PT01NTI5NiYmcisxPHMmJihvPXQuY2hhckNvZGVBdChyKzEpLChvJjY0NTEyKT09PTU2MzIwJiYobj02NTUzNisobi01NTI5Njw8MTApKyhvLTU2MzIwKSxyKyspKSxuPDEyOD9lW2krK109bjpuPDIwNDg/KGVbaSsrXT0xOTJ8bj4+PjYsZVtpKytdPTEyOHxuJjYzKTpuPDY1NTM2PyhlW2krK109MjI0fG4+Pj4xMixlW2krK109MTI4fG4+Pj42JjYzLGVbaSsrXT0xMjh8biY2Myk6KGVbaSsrXT0yNDB8bj4+PjE4LGVbaSsrXT0xMjh8bj4+PjEyJjYzLGVbaSsrXT0xMjh8bj4+PjYmNjMsZVtpKytdPTEyOHxuJjYzKTtyZXR1cm4gZX07dmFyIHo2PSh0LGUpPT57aWYoZTw2NTUzNCYmdC5zdWJhcnJheSYmUlMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0Lmxlbmd0aD09PWU/dDp0LnN1YmFycmF5KDAsZSkpO2xldCBuPSIiO2ZvcihsZXQgbz0wO288ZTtvKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W29dKTtyZXR1cm4gbn07cG0uZXhwb3J0cy5idWYyc3RyaW5nPSh0LGUpPT57bGV0IG49ZXx8dC5sZW5ndGg7aWYodHlwZW9mIFRleHREZWNvZGVyPT0iZnVuY3Rpb24iJiZUZXh0RGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlKXJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodC5zdWJhcnJheSgwLGUpKTtsZXQgbyxyLGk9bmV3IEFycmF5KG4qMik7Zm9yKHI9MCxvPTA7bzxuOyl7bGV0IHM9dFtvKytdO2lmKHM8MTI4KXtpW3IrK109cztjb250aW51ZX1sZXQgZj1odVtzXTtpZihmPjQpe2lbcisrXT02NTUzMyxvKz1mLTE7Y29udGludWV9Zm9yKHMmPWY9PT0yPzMxOmY9PT0zPzE1Ojc7Zj4xJiZvPG47KXM9czw8Nnx0W28rK10mNjMsZi0tO2lmKGY+MSl7aVtyKytdPTY1NTMzO2NvbnRpbnVlfXM8NjU1MzY/aVtyKytdPXM6KHMtPTY1NTM2LGlbcisrXT01NTI5NnxzPj4xMCYxMDIzLGlbcisrXT01NjMyMHxzJjEwMjMpfXJldHVybiB6NihpLHIpfTtwbS5leHBvcnRzLnV0Zjhib3JkZXI9KHQsZSk9PntlPWV8fHQubGVuZ3RoLGU+dC5sZW5ndGgmJihlPXQubGVuZ3RoKTtsZXQgbj1lLTE7Zm9yKDtuPj0wJiYodFtuXSYxOTIpPT09MTI4OyluLS07cmV0dXJuIG48MHx8bj09PTA/ZTpuK2h1W3Rbbl1dPmU/bjplfX0pO3ZhciBDUz1ZbigoTnV0LHhTKT0+eyJ1c2Ugc3RyaWN0Ijt4Uy5leHBvcnRzPXsyOiJuZWVkIGRpY3Rpb25hcnkiLDE6InN0cmVhbSBlbmQiLDA6IiIsIi0xIjoiZmlsZSBlcnJvciIsIi0yIjoic3RyZWFtIGVycm9yIiwiLTMiOiJkYXRhIGVycm9yIiwiLTQiOiJpbnN1ZmZpY2llbnQgbWVtb3J5IiwiLTUiOiJidWZmZXIgZXJyb3IiLCItNiI6ImluY29tcGF0aWJsZSB2ZXJzaW9uIn19KTt2YXIgTVM9WW4oKEl1dCxQUyk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gajYoKXt0aGlzLmlucHV0PW51bGwsdGhpcy5uZXh0X2luPTAsdGhpcy5hdmFpbF9pbj0wLHRoaXMudG90YWxfaW49MCx0aGlzLm91dHB1dD1udWxsLHRoaXMubmV4dF9vdXQ9MCx0aGlzLmF2YWlsX291dD0wLHRoaXMudG90YWxfb3V0PTAsdGhpcy5tc2c9IiIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfVBTLmV4cG9ydHM9ajZ9KTt2YXIgSVM9WW4oKHZ1dCxOUyk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSDYoKXt0aGlzLnRleHQ9MCx0aGlzLnRpbWU9MCx0aGlzLnhmbGFncz0wLHRoaXMub3M9MCx0aGlzLmV4dHJhPW51bGwsdGhpcy5leHRyYV9sZW49MCx0aGlzLm5hbWU9IiIsdGhpcy5jb21tZW50PSIiLHRoaXMuaGNyYz0wLHRoaXMuZG9uZT0hMX1OUy5leHBvcnRzPUg2fSk7dmFyIERTPVluKChGdXQsVmEpPT57InVzZSBzdHJpY3QiO3ZhciBYaT1PUygpLEZTPUVTKCkscWc9U1MoKSxLZz1DUygpLHE2PU1TKCksSzY9SVMoKSxMUz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHtaX05PX0ZMVVNIOlc2LFpfRklOSVNIOlg2LFpfT0s6X3UsWl9TVFJFQU1fRU5EOmpnLFpfTkVFRF9ESUNUOkhnLFpfU1RSRUFNX0VSUk9SOlk2LFpfREFUQV9FUlJPUjp2UyxaX01FTV9FUlJPUjokNn09c20oKTtmdW5jdGlvbiB5dSh0KXt0aGlzLm9wdGlvbnM9RlMuYXNzaWduKHtjaHVua1NpemU6MTAyNCo2NCx3aW5kb3dCaXRzOjE1LHRvOiIifSx0fHx7fSk7bGV0IGU9dGhpcy5vcHRpb25zO2UucmF3JiZlLndpbmRvd0JpdHM+PTAmJmUud2luZG93Qml0czwxNiYmKGUud2luZG93Qml0cz0tZS53aW5kb3dCaXRzLGUud2luZG93Qml0cz09PTAmJihlLndpbmRvd0JpdHM9LTE1KSksZS53aW5kb3dCaXRzPj0wJiZlLndpbmRvd0JpdHM8MTYmJiEodCYmdC53aW5kb3dCaXRzKSYmKGUud2luZG93Qml0cys9MzIpLGUud2luZG93Qml0cz4xNSYmZS53aW5kb3dCaXRzPDQ4JiYoZS53aW5kb3dCaXRzJjE1KT09PTAmJihlLndpbmRvd0JpdHN8PTE1KSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10sdGhpcy5zdHJtPW5ldyBxNix0aGlzLnN0cm0uYXZhaWxfb3V0PTA7bGV0IG49WGkuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSxlLndpbmRvd0JpdHMpO2lmKG4hPT1fdSl0aHJvdyBuZXcgRXJyb3IoS2dbbl0pO2lmKHRoaXMuaGVhZGVyPW5ldyBLNixYaS5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlciksZS5kaWN0aW9uYXJ5JiYodHlwZW9mIGUuZGljdGlvbmFyeT09InN0cmluZyI/ZS5kaWN0aW9uYXJ5PXFnLnN0cmluZzJidWYoZS5kaWN0aW9uYXJ5KTpMUy5jYWxsKGUuZGljdGlvbmFyeSk9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iJiYoZS5kaWN0aW9uYXJ5PW5ldyBVaW50OEFycmF5KGUuZGljdGlvbmFyeSkpLGUucmF3JiYobj1YaS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sZS5kaWN0aW9uYXJ5KSxuIT09X3UpKSl0aHJvdyBuZXcgRXJyb3IoS2dbbl0pfXl1LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5zdHJtLG89dGhpcy5vcHRpb25zLmNodW5rU2l6ZSxyPXRoaXMub3B0aW9ucy5kaWN0aW9uYXJ5LGkscyxmO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7Zm9yKGU9PT1+fmU/cz1lOnM9ZT09PSEwP1g2Olc2LExTLmNhbGwodCk9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iP24uaW5wdXQ9bmV3IFVpbnQ4QXJyYXkodCk6bi5pbnB1dD10LG4ubmV4dF9pbj0wLG4uYXZhaWxfaW49bi5pbnB1dC5sZW5ndGg7Oyl7Zm9yKG4uYXZhaWxfb3V0PT09MCYmKG4ub3V0cHV0PW5ldyBVaW50OEFycmF5KG8pLG4ubmV4dF9vdXQ9MCxuLmF2YWlsX291dD1vKSxpPVhpLmluZmxhdGUobixzKSxpPT09SGcmJnImJihpPVhpLmluZmxhdGVTZXREaWN0aW9uYXJ5KG4sciksaT09PV91P2k9WGkuaW5mbGF0ZShuLHMpOmk9PT12UyYmKGk9SGcpKTtuLmF2YWlsX2luPjAmJmk9PT1qZyYmbi5zdGF0ZS53cmFwPjAmJnRbbi5uZXh0X2luXSE9PTA7KVhpLmluZmxhdGVSZXNldChuKSxpPVhpLmluZmxhdGUobixzKTtzd2l0Y2goaSl7Y2FzZSBZNjpjYXNlIHZTOmNhc2UgSGc6Y2FzZSAkNjpyZXR1cm4gdGhpcy5vbkVuZChpKSx0aGlzLmVuZGVkPSEwLCExfWlmKGY9bi5hdmFpbF9vdXQsbi5uZXh0X291dCYmKG4uYXZhaWxfb3V0PT09MHx8aT09PWpnKSlpZih0aGlzLm9wdGlvbnMudG89PT0ic3RyaW5nIil7bGV0IHU9cWcudXRmOGJvcmRlcihuLm91dHB1dCxuLm5leHRfb3V0KSxjPW4ubmV4dF9vdXQtdSxsPXFnLmJ1ZjJzdHJpbmcobi5vdXRwdXQsdSk7bi5uZXh0X291dD1jLG4uYXZhaWxfb3V0PW8tYyxjJiZuLm91dHB1dC5zZXQobi5vdXRwdXQuc3ViYXJyYXkodSx1K2MpLDApLHRoaXMub25EYXRhKGwpfWVsc2UgdGhpcy5vbkRhdGEobi5vdXRwdXQubGVuZ3RoPT09bi5uZXh0X291dD9uLm91dHB1dDpuLm91dHB1dC5zdWJhcnJheSgwLG4ubmV4dF9vdXQpKTtpZighKGk9PT1fdSYmZj09PTApKXtpZihpPT09amcpcmV0dXJuIGk9WGkuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoaSksdGhpcy5lbmRlZD0hMCwhMDtpZihuLmF2YWlsX2luPT09MClicmVha319cmV0dXJuITB9O3l1LnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24odCl7dGhpcy5jaHVua3MucHVzaCh0KX07eXUucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHQpe3Q9PT1fdSYmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciP3RoaXMucmVzdWx0PXRoaXMuY2h1bmtzLmpvaW4oIiIpOnRoaXMucmVzdWx0PUZTLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj10LHRoaXMubXNnPXRoaXMuc3RybS5tc2d9O2Z1bmN0aW9uIFdnKHQsZSl7bGV0IG49bmV3IHl1KGUpO2lmKG4ucHVzaCh0KSxuLmVycil0aHJvdyBuLm1zZ3x8S2dbbi5lcnJdO3JldHVybiBuLnJlc3VsdH1mdW5jdGlvbiBaNih0LGUpe3JldHVybiBlPWV8fHt9LGUucmF3PSEwLFdnKHQsZSl9VmEuZXhwb3J0cy5JbmZsYXRlPXl1O1ZhLmV4cG9ydHMuaW5mbGF0ZT1XZztWYS5leHBvcnRzLmluZmxhdGVSYXc9WjY7VmEuZXhwb3J0cy51bmd6aXA9V2c7VmEuZXhwb3J0cy5jb25zdGFudHM9c20oKX0pO3ZhciBYZz17fTtsZShYZyx7ZGVmYXVsdDooKT0+czh9KTtmdW5jdGlvbiBRNih0LGUpe2xldCBuPU5zLmZyb21TdHJpbmcodC50eXBlKSxvPXQuYnVmZmVyO0MyKHQua2V5LG8pO2xldCByPWk4KG8pO289ci5idWZmZXI7bGV0IGk9ci5sZW5ndGg7c3dpdGNoKG4pe2Nhc2UgTnMuTUVUQURBVEE6cmV0dXJuIHQ4KG8saSx0LnF1YWRLZXkpO2Nhc2UgTnMuVEVSUkFJTjpyZXR1cm4gbzgobyxpLGUpO2Nhc2UgTnMuREJST09UOnJldHVybiBlLnB1c2gobykse2J1ZmZlcjpvfX19ZnVuY3Rpb24gdDgodCxlLG4pe2xldCBvPW5ldyBEYXRhVmlldyh0KSxyPTAsaT1vLmdldFVpbnQzMihyLCEwKTtpZihyKz1qYSxpIT09SjYpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIG1hZ2ljIik7bGV0IHM9by5nZXRVaW50MzIociwhMCk7aWYocis9amEscyE9PTEpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIGRhdGEgdHlwZS4gTXVzdCBiZSAxIGZvciBRdWFkVHJlZVBhY2tldCIpO2xldCBmPW8uZ2V0VWludDMyKHIsITApO2lmKHIrPWphLGYhPT0yKXRocm93IG5ldyBBZSgiSW52YWxpZCBRdWFkVHJlZVBhY2tldCB2ZXJzaW9uLiBPbmx5IHZlcnNpb24gMiBpcyBzdXBwb3J0ZWQuIik7bGV0IHU9by5nZXRJbnQzMihyLCEwKTtyKz1QYztsZXQgYz1vLmdldEludDMyKHIsITApO2lmKHIrPVBjLGMhPT0zMil0aHJvdyBuZXcgQWUoIkludmFsaWQgaW5zdGFuY2Ugc2l6ZS4iKTtsZXQgbD1vLmdldEludDMyKHIsITApO3IrPVBjO2xldCBwPW8uZ2V0SW50MzIociwhMCk7cis9UGM7bGV0IGQ9by5nZXRJbnQzMihyLCEwKTtpZihyKz1QYyxsIT09dSpjK3IpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIGRhdGFCdWZmZXJPZmZzZXQiKTtpZihsK3ArZCE9PWUpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIHBhY2tldCBvZmZzZXRzIik7bGV0IGg9W107Zm9yKGxldCBFPTA7RTx1OysrRSl7bGV0IFQ9by5nZXRVaW50OChyKTsrK3IsKytyO2xldCB4PW8uZ2V0VWludDE2KHIsITApO3IrPXphO2xldCBNPW8uZ2V0VWludDE2KHIsITApO3IrPXphO2xldCBOPW8uZ2V0VWludDE2KHIsITApO3IrPXphLHIrPXphLHIrPXphLHIrPVBjLHIrPVBjLHIrPTg7bGV0IEY9by5nZXRVaW50OChyKyspLEk9by5nZXRVaW50OChyKyspO3IrPXphLGgucHVzaChuZXcgSTIoVCx4LE0sTixGLEkpKX1sZXQgXz1bXSxnPTA7ZnVuY3Rpb24gYihFLFQseCl7bGV0IE09ITE7aWYoeD09PTQpe2lmKFQuaGFzU3VidHJlZSgpKXJldHVybjtNPSEwfWZvcihsZXQgTj0wO048NDsrK04pe2xldCBGPUUrTi50b1N0cmluZygpO2lmKE0pX1tGXT1udWxsO2Vsc2UgaWYoeDw0KWlmKCFULmhhc0NoaWxkKE4pKV9bRl09bnVsbDtlbHNle2lmKGc9PT11KXtjb25zb2xlLmxvZygiSW5jb3JyZWN0IG51bWJlciBvZiBpbnN0YW5jZXMiKTtyZXR1cm59bGV0IEk9aFtnKytdO19bRl09SSxiKEYsSSx4KzEpfX19bGV0IHc9MCxPPWhbZysrXTtyZXR1cm4gbj09PSIiPysrdzpfW25dPU8sYihuLE8sdyksX31mdW5jdGlvbiBvOCh0LGUsbil7bGV0IG89bmV3IERhdGFWaWV3KHQpLHI9ZnVuY3Rpb24oZil7Zm9yKGxldCB1PTA7dTxuODsrK3Upe2xldCBjPW8uZ2V0VWludDMyKGYsITApO2lmKGYrPWphLGYrPWMsZj5lKXRocm93IG5ldyBBZSgiTWFsZm9ybWVkIHRlcnJhaW4gcGFja2V0IGZvdW5kLiIpfXJldHVybiBmfSxpPTAscz1bXTtmb3IoO3MubGVuZ3RoPGU4Oyl7bGV0IGY9aTtpPXIoaSk7bGV0IHU9dC5zbGljZShmLGkpO24ucHVzaCh1KSxzLnB1c2godSl9cmV0dXJuIHN9ZnVuY3Rpb24gaTgodCl7bGV0IGU9bmV3IERhdGFWaWV3KHQpLG49MCxvPWUuZ2V0VWludDMyKG4sITApO2lmKG4rPWphLG8hPT1CUyYmbyE9PXI4KXRocm93IG5ldyBBZSgiSW52YWxpZCBtYWdpYyIpO2xldCByPWUuZ2V0VWludDMyKG4sbz09PUJTKTtuKz1qYTtsZXQgaT1uZXcgVWludDhBcnJheSh0LG4pLHM9VVMuZGVmYXVsdC5pbmZsYXRlKGkpO2lmKHMubGVuZ3RoIT09cil0aHJvdyBuZXcgQWUoIlNpemUgb2YgcGFja2V0IGRvZXNuJ3QgbWF0Y2ggaGVhZGVyIik7cmV0dXJuIHN9dmFyIFVTLHphLFBjLGphLE5zLEo2LGU4LG44LEJTLHI4LHM4LFlnPSQoKCk9PntQMigpO3YyKCk7dGkoKTtVUz1tcihEUygpLDEpO1puKCk7emE9VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsUGM9SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxqYT1VaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxOcz17TUVUQURBVEE6MCxURVJSQUlOOjEsREJST09UOjJ9O05zLmZyb21TdHJpbmc9ZnVuY3Rpb24odCl7aWYodD09PSJNZXRhZGF0YSIpcmV0dXJuIE5zLk1FVEFEQVRBO2lmKHQ9PT0iVGVycmFpbiIpcmV0dXJuIE5zLlRFUlJBSU47aWYodD09PSJEYlJvb3QiKXJldHVybiBOcy5EQlJPT1R9O0o2PTMyMzAxO2U4PTUsbjg9NDtCUz0xOTUzMDI5ODA1LHI4PTI5MTcwMzQxMDA7czg9VWUoUTYpfSk7ZnVuY3Rpb24gYzgodCl7cmV0dXJuIHkuZGVmaW5lZCgidmFsdWUiLHQpLHQ8PS4wNDA0NT90Ki4wNzczOTkzODA4MDQ5NTM1NzpNYXRoLnBvdygodCsuMDU1KSouOTQ3ODY3Mjk4NTc4MTk5MSwyLjQpfXZhciBkbSxrUz0kKCgpPT57V3QoKTtkbT1jOH0pO3ZhciBKZz17fTtsZShKZyx7ZGVmYXVsdDooKT0+djh9KTtmdW5jdGlvbiBhOCh0LGUsbixvLHIsaSl7bGV0IHM9biooMS10KStvKnQsZj1yKigxLXQpK2kqdDtyZXR1cm4gcyooMS1lKStmKmV9ZnVuY3Rpb24gbW0odCxlLG4sbyl7bGV0IHI9dCtlKm47cmV0dXJuIG9bcl19ZnVuY3Rpb24gZjgodCxlLG4pe2xldCBvPW4ubmF0aXZlRXh0ZW50LHI9KHQtby53ZXN0KS8oby5lYXN0LW8ud2VzdCkqKG4ud2lkdGgtMSksaT0oZS1vLnNvdXRoKS8oby5ub3J0aC1vLnNvdXRoKSoobi5oZWlnaHQtMSkscz1NYXRoLmZsb29yKHIpLGY9TWF0aC5mbG9vcihpKTtyLT1zLGktPWY7bGV0IHU9czxuLndpZHRoP3MrMTpzLGM9ZjxuLmhlaWdodD9mKzE6ZjtmPW4uaGVpZ2h0LTEtZixjPW4uaGVpZ2h0LTEtYztsZXQgbD1tbShzLGYsbi53aWR0aCxuLmJ1ZmZlcikscD1tbSh1LGYsbi53aWR0aCxuLmJ1ZmZlciksZD1tbShzLGMsbi53aWR0aCxuLmJ1ZmZlciksaD1tbSh1LGMsbi53aWR0aCxuLmJ1ZmZlciksXz1hOChyLGksbCxwLGQsaCk7cmV0dXJuIF89XypuLnNjYWxlK24ub2Zmc2V0LF99ZnVuY3Rpb24gR1ModCxlLG4pe2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtsZXQgcj1uW29dLm5hdGl2ZUV4dGVudCxpPW5ldyBhO2lmKG5bb10ucHJvamVjdGlvblR5cGU9PT0iV2ViTWVyY2F0b3IiKXtsZXQgcz1uW29dLnByb2plY3Rpb24uX2VsbGlwc29pZC5fcmFkaWk7aT1uZXcgcm8obmV3IFkocy54LHMueSxzLnopKS5wcm9qZWN0KG5ldyBjdCh0LGUsMCkpfWVsc2UgaS54PXQsaS55PWU7aWYoaS54PnIud2VzdCYmaS54PHIuZWFzdCYmaS55PnIuc291dGgmJmkueTxyLm5vcnRoKXJldHVybiBmOChpLngsaS55LG5bb10pfXJldHVybiAwfWZ1bmN0aW9uIHU4KHQsZSxuLG8scixpLHMpe2lmKHMpcmV0dXJuO2xldCBmPUdTKHIubG9uZ2l0dWRlLHIubGF0aXR1ZGUsaSk7Zm9yKGxldCB1PTA7dTx0OysrdSl7bGV0IGM9R1Moci5sb25naXR1ZGUrUC50b1JhZGlhbnMobiplW3UqM10pLHIubGF0aXR1ZGUrUC50b1JhZGlhbnMobyplW3UqMysxXSksaSk7ZVt1KjMrMl0rPWMtZn19ZnVuY3Rpb24gbDgodCxlLG4sbyxyLGkscyxmLHUpe2lmKHQ9PT0wfHwhbShlKXx8ZS5sZW5ndGg9PT0wKXJldHVybjtsZXQgYz1uZXcgWShNYXRoLnNxcnQocy54KSxNYXRoLnNxcnQocy55KSxNYXRoLnNxcnQocy56KSk7Zm9yKGxldCBsPTA7bDx0OysrbCl7bGV0IHA9bCozLGQ9cCsxLGg9cCsyLF89bmV3IGN0O18ubG9uZ2l0dWRlPW8ubG9uZ2l0dWRlK1AudG9SYWRpYW5zKGYqZVtwXSksXy5sYXRpdHVkZT1vLmxhdGl0dWRlK1AudG9SYWRpYW5zKHUqZVtkXSksXy5oZWlnaHQ9by5oZWlnaHQrZVtoXTtsZXQgZz17fTtjLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKF8sZyksZy54LT1yLngsZy55LT1yLnksZy56LT1yLno7bGV0IGI9e307aWYoWi5tdWx0aXBseUJ5VmVjdG9yKGksZyxiKSxlW3BdPWIueCxlW2RdPWIueSxlW2hdPWIueixtKG4pKXtsZXQgdz1uZXcgYShuW3BdLG5bZF0sbltoXSksTz17fTtaLm11bHRpcGx5QnlWZWN0b3IoaSx3LE8pLG5bcF09Ty54LG5bZF09Ty55LG5baF09Ty56fX19ZnVuY3Rpb24gcDgodCxlLG4pe2ZvcihsZXQgbz0wO288dDsrK28pe2xldCByPW5bbyo0XS82NTUzNSxpPW5bbyo0KzFdLzY1NTM1LHM9KG5bbyo0KzJdLW5bbyo0XSkvNjU1MzUsZj0obltvKjQrM10tbltvKjQrMV0pLzY1NTM1O2VbbyoyXSo9cyxlW28qMl0rPXIsZVtvKjIrMV0qPWYsZVtvKjIrMV0rPWl9fWZ1bmN0aW9uIGQ4KHQsZSxuLG8pe2xldCByPW5ldyBVaW50MzJBcnJheSh0KSxpPW0oZSk/Zj0+ZVtmXTpmPT5mLHM9MDtpZihvJiZtKG4pKXtsZXQgZj11PT5uW2kodSkqNCszXTwyNTU7Zm9yKGxldCB1PTA7dTx0O3UrPTMpIWYodSkmJiFmKHUrMSkmJiFmKHUrMikmJihyW3MrK109aSh1KSxyW3MrK109aSh1KzEpLHJbcysrXT1pKHUrMikpO2lmKHM+MCl7bGV0IHU9cztmb3IobGV0IGM9MDtjPHQ7Yys9MykoZihjKXx8ZihjKzEpfHxmKGMrMikpJiYoclt1KytdPWkoYyksclt1KytdPWkoYysxKSxyW3UrK109aShjKzIpKX1lbHNlIGZvcihsZXQgdT0wO3U8dDsrK3Upclt1XT1pKHUpfWVsc2V7cz10O2ZvcihsZXQgZj0wO2Y8dDsrK2YpcltmXT1pKGYpfXJldHVybntpbmRleEFycmF5OnIsdHJhbnNwYXJlbnRWZXJ0ZXhPZmZzZXQ6c319ZnVuY3Rpb24gbTgodCxlLG4pe2xldCBvPWVbbl07aWYobShvKSlyZXR1cm4gbztsZXQgcj1lW25dPXtwb3NpdGlvbnM6e30saW5kaWNlczp7fSxlZGdlczp7fX0saT10W25dPz90LmRlZmF1bHQ7cmV0dXJuIHIuaGFzT3V0bGluZT1tKGk/LmVkZ2VzKSxyfWZ1bmN0aW9uIGg4KHQsZSxuLG8pe2lmKCFtKHRbbl0pKXtsZXQgcj1uKjMsaT1lO2ZvcihsZXQgcz0wO3M8MztzKyspe2xldCBmPW9bcitzXTttKGlbZl0pfHwoaVtmXT17fSksaT1pW2ZdfW0oaS5pbmRleCl8fChpLmluZGV4PW4pLHRbbl09aS5pbmRleH19ZnVuY3Rpb24gXzgodCxlLG4sbyxyLGkpe2xldCBzLGY7bzxyPyhzPW8sZj1yKToocz1yLGY9byk7bGV0IHU9dFtzXTttKHUpfHwodT10W3NdPXt9KTtsZXQgYz11W2ZdO20oYyl8fChjPXVbZl09e25vcm1hbHNJbmRleDpbXSxvdXRsaW5lczpbXX0pLGMubm9ybWFsc0luZGV4LnB1c2goaSksKGMub3V0bGluZXMubGVuZ3RoPT09MHx8ZSE9PW98fG4hPT1yKSYmYy5vdXRsaW5lcy5wdXNoKGUsbil9ZnVuY3Rpb24geTgodCxlLG4sbyl7bGV0IHI9W107Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKz0zKXtsZXQgcz1tKGUpP2VbbltpXV06ImRlZmF1bHQiLGY9bTgodCxyLHMpO2lmKCFmLmhhc091dGxpbmUpY29udGludWU7bGV0IHU9Zi5pbmRpY2VzLGM9Zi5wb3NpdGlvbnM7Zm9yKGxldCBwPTA7cDwzO3ArKyl7bGV0IGQ9bltpK3BdO2g4KHUsYyxkLG8pfWxldCBsPWYuZWRnZXM7Zm9yKGxldCBwPTA7cDwzO3ArKyl7bGV0IGQ9bltpK3BdLGg9bltpKyhwKzEpJTNdLF89dVtkXSxnPXVbaF07XzgobCxkLGgsXyxnLGkpfX1yZXR1cm4gcn1mdW5jdGlvbiBWUyh0LGUsbixvKXtsZXQgcj1uW2VdKjMsaT1uW2UrMV0qMyxzPW5bZSsyXSozO2EuZnJvbUFycmF5KG8scixiaSksYS5mcm9tQXJyYXkobyxpLGhtKSxhLmZyb21BcnJheShvLHMsX20pLGEuc3VidHJhY3QoaG0sYmksaG0pLGEuc3VidHJhY3QoX20sYmksX20pLGEuY3Jvc3MoaG0sX20sYmkpO2xldCBmPWEubWFnbml0dWRlKGJpKTtmIT09MCYmYS5kaXZpZGVCeVNjYWxhcihiaSxmLGJpKTtsZXQgdT1lKjMsYz0oZSsxKSozLGw9KGUrMikqMzthLnBhY2soYmksdCx1KSxhLnBhY2soYmksdCxjKSxhLnBhY2soYmksdCxsKX1mdW5jdGlvbiBnOCh0LGUsbil7YS5mcm9tQXJyYXkodCxlLHltKSxhLmZyb21BcnJheSh0LG4sJGcpO2xldCBvPWEuZG90KHltLCRnKSxyPWEubWFnbml0dWRlKGEuY3Jvc3MoeW0sJGcseW0pKTtyZXR1cm4gTWF0aC5hdGFuMihyLG8pPC4yNX1mdW5jdGlvbiBBOCh0LGUsbixvLHIpe2lmKGUubm9ybWFsc0luZGV4Lmxlbmd0aD4xKXtsZXQgaT1vLmxlbmd0aD09PXIubGVuZ3RoO2ZvcihsZXQgcz0wO3M8ZS5ub3JtYWxzSW5kZXgubGVuZ3RoO3MrKyl7bGV0IGY9ZS5ub3JtYWxzSW5kZXhbc107aWYobShyW2YqM10pfHxWUyhyLGYsbixvKSxzIT09MClmb3IobGV0IHU9MDt1PHM7dSsrKXtsZXQgYz1lLm5vcm1hbHNJbmRleFt1XSxsPWk/bltmXSozOmYqMyxwPWk/bltjXSozOmMqMztpZihnOChyLGwscCkpcmV0dXJufX19dC5wdXNoKC4uLmUub3V0bGluZXMpfWZ1bmN0aW9uIGI4KHQsZSxuLG8scil7bGV0IGk9T2JqZWN0LmtleXMoZSk7Zm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKyspe2xldCBmPWVbaVtzXV0sdT1PYmplY3Qua2V5cyhmKTtmb3IobGV0IGM9MDtjPHUubGVuZ3RoO2MrKyl7bGV0IGw9Zlt1W2NdXTtBOCh0LGwsbixvLHIpfX19ZnVuY3Rpb24gdzgodCxlLG4sbyl7bGV0IHI9W10saT1PYmplY3Qua2V5cyh0KTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKyl7bGV0IGY9dFtpW3NdXS5lZGdlcztiOChyLGYsZSxuLG8pfXJldHVybiByfWZ1bmN0aW9uIFQ4KHQsZSxuLG8scil7aWYoIW0odCl8fE9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTApcmV0dXJuO2xldCBpPXk4KHQsZSxuLG8pOyghbShyKXx8bi5sZW5ndGgqMyE9PXIubGVuZ3RoKSYmKHI9W10pO2xldCBzPXc4KGksbixvLHIpO3JldHVybiBzLmxlbmd0aD4wP25ldyBVaW50MzJBcnJheShzKTp2b2lkIDB9ZnVuY3Rpb24gTzgodCl7bGV0IGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz00KWVbbl09ZG0obmUuYnl0ZVRvRmxvYXQodFtuXSkpLGVbbisxXT1kbShuZS5ieXRlVG9GbG9hdCh0W24rMV0pKSxlW24rMl09ZG0obmUuYnl0ZVRvRmxvYXQodFtuKzJdKSksZVtuKzNdPW5lLmJ5dGVUb0Zsb2F0KHRbbiszXSk7cmV0dXJuIGV9ZnVuY3Rpb24gRTgodCxlLG4sbyxyLGkscyl7bGV0IGY9e25vcm1hbHM6dm9pZCAwLHBvc2l0aW9uczp2b2lkIDAsdXYwczp2b2lkIDAsY29sb3JzOnZvaWQgMCxmZWF0dXJlSW5kZXg6dm9pZCAwLHZlcnRleENvdW50OnZvaWQgMH07aWYodD09PTB8fCFtKG4pfHxuLmxlbmd0aD09PTB8fG0obykpcmV0dXJuIGY7aWYobShlKSl7Zi52ZXJ0ZXhDb3VudD1lLmxlbmd0aCxmLnBvc2l0aW9ucz1uZXcgRmxvYXQzMkFycmF5KGUubGVuZ3RoKjMpLGYudXYwcz1tKHIpP25ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgqMik6dm9pZCAwLGYuY29sb3JzPW0oaSk/bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgqNCk6dm9pZCAwLGYuZmVhdHVyZUluZGV4PW0ocyk/bmV3IEFycmF5KGUubGVuZ3RoKTp2b2lkIDA7Zm9yKGxldCB1PTA7dTxlLmxlbmd0aDt1Kyspe2xldCBjPWVbdV07Zi5wb3NpdGlvbnNbdSozXT1uW2MqM10sZi5wb3NpdGlvbnNbdSozKzFdPW5bYyozKzFdLGYucG9zaXRpb25zW3UqMysyXT1uW2MqMysyXSxtKGYudXYwcykmJihmLnV2MHNbdSoyXT1yW2MqMl0sZi51djBzW3UqMisxXT1yW2MqMisxXSksbShmLmNvbG9ycykmJihmLmNvbG9yc1t1KjRdPWlbYyo0XSxmLmNvbG9yc1t1KjQrMV09aVtjKjQrMV0sZi5jb2xvcnNbdSo0KzJdPWlbYyo0KzJdLGYuY29sb3JzW3UqNCszXT1pW2MqNCszXSksbShmLmZlYXR1cmVJbmRleCkmJihmLmZlYXR1cmVJbmRleFt1XT1zW2NdKX10PWUubGVuZ3RoLG49Zi5wb3NpdGlvbnN9ZT1uZXcgQXJyYXkodCk7Zm9yKGxldCB1PTA7dTx0O3UrKyllW3VdPXU7Zi5ub3JtYWxzPW5ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgqMyk7Zm9yKGxldCB1PTA7dTxlLmxlbmd0aDt1Kz0zKVZTKGYubm9ybWFscyx1LGUsbik7cmV0dXJuIGZ9ZnVuY3Rpb24gUjgodCxlLG4sbyxyLGkscyxmKXtpZih0PT09MHx8IW0obil8fG4ubGVuZ3RoPT09MClyZXR1cm57YnVmZmVyczpbXSxidWZmZXJWaWV3czpbXSxhY2Nlc3NvcnM6W10sbWVzaGVzOltdLG5vZGVzOltdLG5vZGVzSW5TY2VuZTpbXX07bGV0IHU9W10sYz1bXSxsPVtdLHA9W10sZD1bXSxoPVtdLF89e30sZz1bXTttKGUpJiYodD1lLmxlbmd0aCk7bGV0e2luZGV4QXJyYXk6Yix0cmFuc3BhcmVudFZlcnRleE9mZnNldDp3fT1kOCh0LGUsaSxmLnNwbGl0R2VvbWV0cnlCeUNvbG9yVHJhbnNwYXJlbmN5KSxPPW5ldyBCbG9iKFtiXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pLEU9VVJMLmNyZWF0ZU9iamVjdFVSTChPKSxUPXQseD1mLmVuYWJsZUZlYXR1cmVzJiZtKHMpP25ldyBGbG9hdDMyQXJyYXkocy5sZW5ndGgpOnZvaWQgMCxNPTA7aWYobSh4KSlmb3IobGV0IHJ0PTA7cnQ8cy5sZW5ndGg7KytydCl7eFtydF09c1tydF07bGV0IHh0PXNbcnRdKzE7TTx4dCYmKE09eHQpfWxldCBOLEY9VDgoZi5zeW1ib2xvZ3lEYXRhLHMsYixuLG8pO2lmKG0oRikpe2xldCBydD1uZXcgQmxvYihbRl0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtOPVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBJPW4uc3ViYXJyYXkoMCxUKjMpLHY9bmV3IEJsb2IoW0ldLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSksQj1VUkwuY3JlYXRlT2JqZWN0VVJMKHYpLEE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFM9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEw9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHo9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGo9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgcnQ9MDtydDxJLmxlbmd0aC8zO3J0KyspQT1NYXRoLm1pbihBLElbcnQqMyswXSksUz1NYXRoLm1heChTLElbcnQqMyswXSksQz1NYXRoLm1pbihDLElbcnQqMysxXSksTD1NYXRoLm1heChMLElbcnQqMysxXSksej1NYXRoLm1pbih6LElbcnQqMysyXSksaj1NYXRoLm1heChqLElbcnQqMysyXSk7bGV0IGs9bz9vLnN1YmFycmF5KDAsVCozKTp2b2lkIDAscTtpZihtKGspKXtsZXQgcnQ9bmV3IEJsb2IoW2tdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7cT1VUkwuY3JlYXRlT2JqZWN0VVJMKHJ0KX1sZXQgVz1yP3Iuc3ViYXJyYXkoMCxUKjIpOnZvaWQgMCxSO2lmKG0oVykpe2xldCBydD1uZXcgQmxvYihbV10se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtSPVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBudD1tKGkpP084KGkuc3ViYXJyYXkoMCxUKjQpKTp2b2lkIDAsYXQ7aWYobShudCkpe2xldCBydD1uZXcgQmxvYihbbnRdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7YXQ9VVJMLmNyZWF0ZU9iamVjdFVSTChydCl9bGV0IGx0PW0oeCk/eC5zdWJhcnJheSgwLFQpOnZvaWQgMCxfdDtpZihtKGx0KSl7bGV0IHJ0PW5ldyBCbG9iKFtsdF0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtfdD1VUkwuY3JlYXRlT2JqZWN0VVJMKHJ0KX1sZXQgb3Q9bSh4KT9uZXcgRmxvYXQzMkFycmF5KE0pOnZvaWQgMCxQdDtpZihtKG90KSl7Zm9yKGxldCB4dD0wO3h0PG90Lmxlbmd0aDsrK3h0KW90W3h0XT14dDtsZXQgcnQ9bmV3IEJsb2IoW290XSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO1B0PVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBndD17fSxSdD17fTtndC5QT1NJVElPTj1sLmxlbmd0aCx1LnB1c2goe3VyaTpCLGJ5dGVMZW5ndGg6SS5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpJLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpJLmxlbmd0aC8zLHR5cGU6IlZFQzMiLG1heDpbQSxDLHpdLG1pbjpbUyxMLGpdfSksbShxKSYmKGd0Lk5PUk1BTD1sLmxlbmd0aCx1LnB1c2goe3VyaTpxLGJ5dGVMZW5ndGg6ay5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDprLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDprLmxlbmd0aC8zLHR5cGU6IlZFQzMifSkpLG0oUikmJihndC5URVhDT09SRF8wPWwubGVuZ3RoLHUucHVzaCh7dXJpOlIsYnl0ZUxlbmd0aDpXLmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOlcuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50OlcubGVuZ3RoLzIsdHlwZToiVkVDMiJ9KSksbShhdCkmJihndC5DT0xPUl8wPWwubGVuZ3RoLHUucHVzaCh7dXJpOmF0LGJ5dGVMZW5ndGg6bnQuYnl0ZUxlbmd0aH0pLGMucHVzaCh7YnVmZmVyOnUubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6bnQuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50Om50Lmxlbmd0aC80LHR5cGU6IlZFQzQifSkpLG0oX3QpJiYoZ3QuX0ZFQVRVUkVfSURfMD1sLmxlbmd0aCx1LnB1c2goe3VyaTpfdCxieXRlTGVuZ3RoOmx0LmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOmx0LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpsdC5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLFJ0LkVYVF9tZXNoX2ZlYXR1cmVzPXtmZWF0dXJlSWRzOlt7YXR0cmlidXRlOjAscHJvcGVydHlUYWJsZTowLGZlYXR1cmVDb3VudDpNfV19LGcucHVzaCgiRVhUX21lc2hfZmVhdHVyZXMiKSksbShQdCkmJih1LnB1c2goe3VyaTpQdCxieXRlTGVuZ3RoOm90LmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOm90LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksXy5FWFRfc3RydWN0dXJhbF9tZXRhZGF0YT17c2NoZW1hOntpZDoiaTNzLW1ldGFkYXRhLXNjaGVtYS0wMDEiLG5hbWU6IkkzUyBtZXRhZGF0YSBzY2hlbWEgMDAxIixkZXNjcmlwdGlvbjoiVGhlIHNjaGVtYSBmb3IgSTNTIG1ldGFkYXRhIix2ZXJzaW9uOiIxLjAiLGNsYXNzZXM6e2ZlYXR1cmU6e25hbWU6ImZlYXR1cmUiLGRlc2NyaXB0aW9uOiJGZWF0dXJlIG1ldGFkYXRhIixwcm9wZXJ0aWVzOntpbmRleDp7ZGVzY3JpcHRpb246IlRoZSBmZWF0dXJlIGluZGV4Iix0eXBlOiJTQ0FMQVIiLGNvbXBvbmVudFR5cGU6IkZMT0FUMzIiLHJlcXVpcmVkOiEwfX19fX0scHJvcGVydHlUYWJsZXM6W3tuYW1lOiJmZWF0dXJlLWluZGljZXMtbWFwcGluZyIsY2xhc3M6ImZlYXR1cmUiLGNvdW50Ok0scHJvcGVydGllczp7aW5kZXg6e3ZhbHVlczpjLmxlbmd0aC0xfX19XX0sZy5wdXNoKCJFWFRfc3RydWN0dXJhbF9tZXRhZGF0YSIpKSxtKE4pJiYodS5wdXNoKHt1cmk6TixieXRlTGVuZ3RoOkYuYnl0ZUxlbmd0aH0pLGMucHVzaCh7YnVmZmVyOnUubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6Ri5ieXRlTGVuZ3RoLHRhcmdldDozNDk2M30pLGwucHVzaCh7YnVmZmVyVmlldzpjLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjUsY291bnQ6Ri5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLFJ0LkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZT17aW5kaWNlczpsLmxlbmd0aC0xfSxnLnB1c2goIkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZSIpKSx1LnB1c2goe3VyaTpFLGJ5dGVMZW5ndGg6Yi5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpiLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSk7bGV0IGR0PVtdO3JldHVybiB3PjAmJihsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI1LGNvdW50OncsdHlwZToiU0NBTEFSIn0pLGR0LnB1c2goe2F0dHJpYnV0ZXM6Z3QsaW5kaWNlczpsLmxlbmd0aC0xLG1hdGVyaWFsOmR0Lmxlbmd0aCxleHRlbnNpb25zOlJ0fSkpLHc8dCYmKGwucHVzaCh7YnVmZmVyVmlldzpjLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6NCp3LGNvbXBvbmVudFR5cGU6NTEyNSxjb3VudDp0LXcsdHlwZToiU0NBTEFSIn0pLGR0LnB1c2goe2F0dHJpYnV0ZXM6Z3QsaW5kaWNlczpsLmxlbmd0aC0xLG1hdGVyaWFsOmR0Lmxlbmd0aCxleHRlbnNpb25zOlJ0LGV4dHJhOntpc1RyYW5zcGFyZW50OiEwfX0pKSxwLnB1c2goe3ByaW1pdGl2ZXM6ZHR9KSxoLnB1c2goMCksZC5wdXNoKHttZXNoOjB9KSx7YnVmZmVyczp1LGJ1ZmZlclZpZXdzOmMsYWNjZXNzb3JzOmwsbWVzaGVzOnAsbm9kZXM6ZCxub2Rlc0luU2NlbmU6aCxyb290RXh0ZW5zaW9uczpfLGV4dGVuc2lvbnNVc2VkOmd9fWZ1bmN0aW9uIFM4KHQsZSxuLG8pe2xldCByPW5ldyBVaW50OEFycmF5KHQsMCw1KTtyZXR1cm4gclswXT09PTY4JiZyWzFdPT09ODImJnJbMl09PT02NSYmclszXT09PTY3JiZyWzRdPT09Nzk/eDgodCxuKTpQOCh0LGUsbixvKX1mdW5jdGlvbiB4OCh0KXtsZXQgZT1RZyxuPW5ldyBlLkRlY29kZXJCdWZmZXIsbz1uZXcgVWludDhBcnJheSh0KTtuLkluaXQobyxvLmxlbmd0aCk7bGV0IHI9bmV3IGUuRGVjb2RlcixpPXIuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZShuKSxzPW5ldyBlLk1ldGFkYXRhUXVlcmllcixmLHU7aT09PWUuVFJJQU5HVUxBUl9NRVNIJiYoZj1uZXcgZS5NZXNoLHU9ci5EZWNvZGVCdWZmZXJUb01lc2gobixmKSk7bGV0IGM9e3ZlcnRleENvdW50OlswXSxmZWF0dXJlQ291bnQ6MH07aWYobSh1KSYmdS5vaygpJiZmLnB0ciE9PTApe2xldCBsPWYubnVtX2ZhY2VzKCkscD1mLm51bV9hdHRyaWJ1dGVzKCksZD1mLm51bV9wb2ludHMoKTtjLmluZGljZXM9bmV3IFVpbnQzMkFycmF5KGwqMyk7bGV0IGg9Yy5pbmRpY2VzO2MudmVydGV4Q291bnRbMF09ZCxjLnNjYWxlX3g9MSxjLnNjYWxlX3k9MTtsZXQgXz1uZXcgZS5EcmFjb0ludDMyQXJyYXkoMyk7Zm9yKGxldCBnPTA7ZzxsOysrZylyLkdldEZhY2VGcm9tTWVzaChmLGcsXyksaFtnKjNdPV8uR2V0VmFsdWUoMCksaFtnKjMrMV09Xy5HZXRWYWx1ZSgxKSxoW2cqMysyXT1fLkdldFZhbHVlKDIpO2UuZGVzdHJveShfKTtmb3IobGV0IGc9MDtnPHA7KytnKXtsZXQgYj1yLkdldEF0dHJpYnV0ZShmLGcpLHc9QzgoZSxyLGYsYixkKSxPPWIuYXR0cmlidXRlX3R5cGUoKSxFPSJ1bmtub3duIjtPPT09ZS5QT1NJVElPTj9FPSJwb3NpdGlvbnMiOk89PT1lLk5PUk1BTD9FPSJub3JtYWxzIjpPPT09ZS5DT0xPUj9FPSJjb2xvcnMiOk89PT1lLlRFWF9DT09SRCYmKEU9InV2MHMiKTtsZXQgVD1yLkdldEF0dHJpYnV0ZU1ldGFkYXRhKGYsZyk7aWYoVC5wdHIhPT0wKXtsZXQgeD1zLk51bUVudHJpZXMoVCk7Zm9yKGxldCBNPTA7TTx4OysrTSl7bGV0IE49cy5HZXRFbnRyeU5hbWUoVCxNKTtOPT09Imkzcy1zY2FsZV94Ij9jLnNjYWxlX3g9cy5HZXREb3VibGVFbnRyeShULCJpM3Mtc2NhbGVfeCIpOk49PT0iaTNzLXNjYWxlX3kiP2Muc2NhbGVfeT1zLkdldERvdWJsZUVudHJ5KFQsImkzcy1zY2FsZV95Iik6Tj09PSJpM3MtYXR0cmlidXRlLXR5cGUiJiYoRT1zLkdldFN0cmluZ0VudHJ5KFQsImkzcy1hdHRyaWJ1dGUtdHlwZSIpKX19bShjW0VdKSYmY29uc29sZS5sb2coIkF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyIsRSksY1tFXT13LEU9PT0iZmVhdHVyZS1pbmRleCImJmMuZmVhdHVyZUNvdW50Kyt9ZS5kZXN0cm95KGYpfXJldHVybiBlLmRlc3Ryb3kocyksZS5kZXN0cm95KHIpLGN9ZnVuY3Rpb24gQzgodCxlLG4sbyxyKXtsZXQgaT1vLm51bV9jb21wb25lbnRzKCkqcixzLHU9W2Z1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQ4QXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBJbnQ4QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDhBcnJheShpKSxlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBVaW50OEFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQxNkFycmF5KGkpLGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IEludDE2QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDE2QXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQxNkFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQzMkFycmF5KGkpLGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDMyQXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQzMkFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0Zsb2F0MzJBcnJheShpKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBGbG9hdDMyQXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29VSW50OEFycmF5KGkpLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9XVtvLmRhdGFfdHlwZSgpXSgpO3JldHVybiBtKHMpJiZ0LmRlc3Ryb3kocyksdX1mdW5jdGlvbiBQOCh0LGUsbixvKXtsZXQgcj17dmVydGV4Q291bnQ6MH0saT1uZXcgRGF0YVZpZXcodCk7dHJ5e2xldCBzPTA7aWYoci52ZXJ0ZXhDb3VudD1pLmdldFVpbnQzMihzLDEpLHMrPTQsci5mZWF0dXJlQ291bnQ9aS5nZXRVaW50MzIocywxKSxzKz00LG0obikpZm9yKGxldCBmPTA7ZjxuLmF0dHJpYnV0ZXMubGVuZ3RoO2YrKyltKGdtW24uYXR0cmlidXRlc1tmXV0pP3M9Z21bbi5hdHRyaWJ1dGVzW2ZdXShyLHQscyk6Y29uc29sZS5lcnJvcigiVW5rbm93biBkZWNvZGVyIGZvciIsbi5hdHRyaWJ1dGVzW2ZdKTtlbHNle2xldCBmPWUub3JkZXJpbmcsdT1lLmZlYXR1cmVBdHRyaWJ1dGVPcmRlcjttKG8pJiZtKG8uZ2VvbWV0cnlEYXRhKSYmbShvLmdlb21ldHJ5RGF0YVswXSkmJm0oby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zKSYmKGY9T2JqZWN0LmtleXMoby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLnZlcnRleEF0dHJpYnV0ZXMpLHU9T2JqZWN0LmtleXMoby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLmZlYXR1cmVBdHRyaWJ1dGVzKSk7Zm9yKGxldCBjPTA7YzxmLmxlbmd0aDtjKyspe2xldCBsPWdtW2ZbY11dO3M9bChyLHQscyl9Zm9yKGxldCBjPTA7Yzx1Lmxlbmd0aDtjKyspe2xldCBsPWdtW3VbY11dO3M9bChyLHQscyl9fX1jYXRjaChzKXtjb25zb2xlLmVycm9yKHMpfXJldHVybiByLnNjYWxlX3g9MSxyLnNjYWxlX3k9MSxyfWZ1bmN0aW9uIE04KHQpe2xldCBlPVM4KHQuYmluYXJ5RGF0YSx0LnNjaGVtYSx0LmJ1ZmZlckluZm8sdC5mZWF0dXJlRGF0YSk7bSh0Lmdlb2lkRGF0YUxpc3QpJiZ0Lmdlb2lkRGF0YUxpc3QubGVuZ3RoPjAmJnU4KGUudmVydGV4Q291bnQsZS5wb3NpdGlvbnMsZS5zY2FsZV94LGUuc2NhbGVfeSx0LmNhcnRvZ3JhcGhpY0NlbnRlcix0Lmdlb2lkRGF0YUxpc3QsITEpLGw4KGUudmVydGV4Q291bnQsZS5wb3NpdGlvbnMsZS5ub3JtYWxzLHQuY2FydG9ncmFwaGljQ2VudGVyLHQuY2FydGVzaWFuQ2VudGVyLHQucGFyZW50Um90YXRpb24sdC5lbGxpcHNvaWRSYWRpaVNxdWFyZSxlLnNjYWxlX3gsZS5zY2FsZV95KSxtKGUudXYwcykmJm0oZVsidXYtcmVnaW9uIl0pJiZwOChlLnZlcnRleENvdW50LGUudXYwcyxlWyJ1di1yZWdpb24iXSk7bGV0IG47aWYobShlWyJmZWF0dXJlLWluZGV4Il0pKW49ZVsiZmVhdHVyZS1pbmRleCJdO2Vsc2UgaWYobShlLmZhY2VSYW5nZSkpe249bmV3IEFycmF5KGUudmVydGV4Q291bnQpO2ZvcihsZXQgcz0wO3M8ZS5mYWNlUmFuZ2UubGVuZ3RoLTE7cys9Mil7bGV0IGY9cy8yLHU9ZS5mYWNlUmFuZ2Vbc10sYz1lLmZhY2VSYW5nZVtzKzFdO2ZvcihsZXQgbD11O2w8PWM7bCsrKW5bbCozXT1mLG5bbCozKzFdPWYsbltsKjMrMl09Zn19aWYodC5jYWxjdWxhdGVOb3JtYWxzKXtsZXQgcz1FOChlLnZlcnRleENvdW50LGUuaW5kaWNlcyxlLnBvc2l0aW9ucyxlLm5vcm1hbHMsZS51djBzLGUuY29sb3JzLG4pO20ocy5ub3JtYWxzKSYmKGUubm9ybWFscz1zLm5vcm1hbHMsbShzLnZlcnRleENvdW50KSYmKGUudmVydGV4Q291bnQ9cy52ZXJ0ZXhDb3VudCxlLmluZGljZXM9cy5pbmRpY2VzLGUucG9zaXRpb25zPXMucG9zaXRpb25zLGUudXYwcz1zLnV2MHMsZS5jb2xvcnM9cy5jb2xvcnMsbj1zLmZlYXR1cmVJbmRleCkpfWxldCBvPVI4KGUudmVydGV4Q291bnQsZS5pbmRpY2VzLGUucG9zaXRpb25zLGUubm9ybWFscyxlLnV2MHMsZS5jb2xvcnMsbix0KSxyPXtwb3NpdGlvbnM6ZS5wb3NpdGlvbnMsaW5kaWNlczplLmluZGljZXMsZmVhdHVyZUluZGV4Om4sc291cmNlVVJMOnQudXJsLGNhcnRlc2lhbkNlbnRlcjp0LmNhcnRlc2lhbkNlbnRlcixwYXJlbnRSb3RhdGlvbjp0LnBhcmVudFJvdGF0aW9ufTtyZXR1cm4gby5fY3VzdG9tQXR0cmlidXRlcz1yLHttZXNoRGF0YTpvfX1hc3luYyBmdW5jdGlvbiBOOCh0LGUpe2xldCBuPXQud2ViQXNzZW1ibHlDb25maWc7cmV0dXJuIG0obikmJm0obi53YXNtQmluYXJ5RmlsZSk/UWc9YXdhaXQoMCxaZy5kZWZhdWx0KShuKTpRZz1hd2FpdCgwLFpnLmRlZmF1bHQpKCksITB9ZnVuY3Rpb24gSTgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pP044KHQsZSk6TTgodCxlKX12YXIgWmcsUWcsYmksaG0sX20seW0sJGcsZ20sdjgsdDE9JCgoKT0+e1puKCk7ZnQoKTtzYygpOyR0KCk7SWUoKTtEdCgpO01hKCk7VW4oKTtLdCgpO1pnPW1yKFBnKCksMSk7a1MoKTtiaT1uZXcgYSxobT1uZXcgYSxfbT1uZXcgYTt5bT1uZXcgYSwkZz1uZXcgYTtnbT17cG9zaXRpb246ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQudmVydGV4Q291bnQqMztyZXR1cm4gdC5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LG5vcm1hbDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCozO3JldHVybiB0Lm5vcm1hbHM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LHV2MDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCoyO3JldHVybiB0LnV2MHM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LGNvbG9yOmZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10LnZlcnRleENvdW50KjQ7cmV0dXJuIHQuY29sb3JzPW5ldyBVaW50OEFycmF5KGUsbixvKSxuKz1vLG59LGZlYXR1cmVJZDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC5mZWF0dXJlQ291bnQ7cmV0dXJuIG4rPW8qOCxufSxpZDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC5mZWF0dXJlQ291bnQ7cmV0dXJuIG4rPW8qOCxufSxmYWNlUmFuZ2U6ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuZmVhdHVyZUNvdW50KjI7cmV0dXJuIHQuZmFjZVJhbmdlPW5ldyBVaW50MzJBcnJheShlLG4sbyksbis9byo0LG59LHV2UmVnaW9uOmZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10LnZlcnRleENvdW50KjQ7cmV0dXJuIHRbInV2LXJlZ2lvbiJdPW5ldyBVaW50MTZBcnJheShlLG4sbyksbis9byoyLG59LHJlZ2lvbjpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCo0O3JldHVybiB0WyJ1di1yZWdpb24iXT1uZXcgVWludDE2QXJyYXkoZSxuLG8pLG4rPW8qMixufX07djg9VWUoSTgpfSk7ZnVuY3Rpb24gRjgoKXtyZXR1cm4oZ3U9PT1udWxsfHxndS5ieXRlTGVuZ3RoPT09MCkmJihndT1uZXcgVWludDhBcnJheShMbi5tZW1vcnkuYnVmZmVyKSksZ3V9ZnVuY3Rpb24gelModCxlKXtyZXR1cm4gdD10Pj4+MCxIUy5kZWNvZGUoRjgoKS5zdWJhcnJheSh0LHQrZSkpfWZ1bmN0aW9uIHFTKCl7cmV0dXJuKEF1PT09bnVsbHx8QXUuYnl0ZUxlbmd0aD09PTApJiYoQXU9bmV3IFVpbnQzMkFycmF5KExuLm1lbW9yeS5idWZmZXIpKSxBdX1mdW5jdGlvbiBMOCh0LGUpe3JldHVybiB0PXQ+Pj4wLHFTKCkuc3ViYXJyYXkodC80LHQvNCtlKX1mdW5jdGlvbiBEOCh0LGUpe2xldCBuPWUodC5sZW5ndGgqNCw0KT4+PjA7cmV0dXJuIHFTKCkuc2V0KHQsbi80KSxLUz10Lmxlbmd0aCxufWZ1bmN0aW9uIGUxKHQpe2xldCBlPUxuLl9fd2JpbmRnZW5fZXhwb3J0XzAuZ2V0KHQpO3JldHVybiBMbi5fX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jKHQpLGV9ZnVuY3Rpb24gV1ModCxlLG4sbyxyKXtsZXQgaT1Mbi5nZW5lcmF0ZV9zcGxhdF90ZXh0dXJlKHQsZSxuLG8scik7aWYoaVsyXSl0aHJvdyBlMShpWzFdKTtyZXR1cm4gbjEuX193cmFwKGlbMF0pfWZ1bmN0aW9uIFhTKHQsZSxuKXtsZXQgbz1Mbi5yYWRpeF9zb3J0X2dhdXNzaWFuc19pbmRleGVzKHQsZSxuKTtpZihvWzJdKXRocm93IGUxKG9bMV0pO3JldHVybiBlMShvWzBdKX1hc3luYyBmdW5jdGlvbiBCOCh0LGUpe2lmKHR5cGVvZiBSZXNwb25zZT09ImZ1bmN0aW9uIiYmdCBpbnN0YW5jZW9mIFJlc3BvbnNlKXtpZih0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyh0LGUpfWNhdGNoKG8pe2lmKHQuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIT0iYXBwbGljYXRpb24vd2FzbSIpY29uc29sZS53YXJuKCJgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmdgIGZhaWxlZCBiZWNhdXNlIHlvdXIgc2VydmVyIGRvZXMgbm90IHNlcnZlIFdhc20gd2l0aCBgYXBwbGljYXRpb24vd2FzbWAgTUlNRSB0eXBlLiBGYWxsaW5nIGJhY2sgdG8gYFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlYCB3aGljaCBpcyBzbG93ZXIuIE9yaWdpbmFsIGVycm9yOlxuIixvKTtlbHNlIHRocm93IG99bGV0IG49YXdhaXQgdC5hcnJheUJ1ZmZlcigpO3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShuLGUpfWVsc2V7bGV0IG49YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodCxlKTtyZXR1cm4gbiBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlP3tpbnN0YW5jZTpuLG1vZHVsZTp0fTpufX1mdW5jdGlvbiBZUygpe2xldCB0PXt9O3JldHVybiB0LndiZz17fSx0LndiZy5fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OD1mdW5jdGlvbihlKXtyZXR1cm4gZS5idWZmZXJ9LHQud2JnLl9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2PWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0sdC53YmcuX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjg9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RofSx0LndiZy5fX3diZ19uZXdfNzgwYWJlZTVjMTczOWZkNz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShlKX0sdC53YmcuX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGUpfSx0LndiZy5fX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpfSx0LndiZy5fX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUsbj4+PjAsbz4+PjApfSx0LndiZy5fX3diZ19zZXRfMTBiYWQ5YmVlMGU5YzU4Yj1mdW5jdGlvbihlLG4sbyl7ZS5zZXQobixvPj4+MCl9LHQud2JnLl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5PWZ1bmN0aW9uKGUsbixvKXtlLnNldChuLG8+Pj4wKX0sdC53YmcuX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZT1mdW5jdGlvbigpe2xldCBlPUxuLl9fd2JpbmRnZW5fZXhwb3J0XzAsbj1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApLGUuc2V0KG4rMCx2b2lkIDApLGUuc2V0KG4rMSxudWxsKSxlLnNldChuKzIsITApLGUuc2V0KG4rMywhMSl9LHQud2JnLl9fd2JpbmRnZW5fbWVtb3J5PWZ1bmN0aW9uKCl7cmV0dXJuIExuLm1lbW9yeX0sdC53YmcuX193YmluZGdlbl9zdHJpbmdfbmV3PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHpTKGUsbil9LHQud2JnLl9fd2JpbmRnZW5fdGhyb3c9ZnVuY3Rpb24oZSxuKXt0aHJvdyBuZXcgRXJyb3IoelMoZSxuKSl9LHR9ZnVuY3Rpb24gJFModCxlKXtyZXR1cm4gTG49dC5leHBvcnRzLFU4Ll9fd2JpbmRnZW5fd2FzbV9tb2R1bGU9ZSxBdT1udWxsLGd1PW51bGwsTG4uX193YmluZGdlbl9zdGFydCgpLExufWZ1bmN0aW9uIEFtKHQpe2lmKExuIT09dm9pZCAwKXJldHVybiBMbjt0eXBlb2YgdDwidSImJihPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1PYmplY3QucHJvdG90eXBlP3ttb2R1bGU6dH09dDpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2xldCBlPVlTKCk7dCBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZXx8KHQ9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0KSk7bGV0IG49bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHQsZSk7cmV0dXJuICRTKG4sdCl9YXN5bmMgZnVuY3Rpb24gVTgodCl7aWYoTG4hPT12b2lkIDApcmV0dXJuIExuO3R5cGVvZiB0PCJ1IiYmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KT09PU9iamVjdC5wcm90b3R5cGU/e21vZHVsZV9vcl9wYXRoOnR9PXQ6Y29uc29sZS53YXJuKCJ1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnMgZm9yIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbjsgcGFzcyBhIHNpbmdsZSBvYmplY3QgaW5zdGVhZCIpKSx0eXBlb2YgdD4idSImJih0PW5ldyBVUkwoIndhc21fc3BsYXRzX2JnLndhc20iLGs4LnVybCkpO2xldCBlPVlTKCk7KHR5cGVvZiB0PT0ic3RyaW5nInx8dHlwZW9mIFJlcXVlc3Q9PSJmdW5jdGlvbiImJnQgaW5zdGFuY2VvZiBSZXF1ZXN0fHx0eXBlb2YgVVJMPT0iZnVuY3Rpb24iJiZ0IGluc3RhbmNlb2YgVVJMKSYmKHQ9ZmV0Y2godCkpO2xldHtpbnN0YW5jZTpuLG1vZHVsZTpvfT1hd2FpdCBCOChhd2FpdCB0LGUpO3JldHVybiAkUyhuLG8pfXZhciBrOCxMbixIUyxndSxBdSxLUyxqUyxuMSxvMT0kKCgpPT57azg9e30sSFM9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7aWdub3JlQk9NOiEwLGZhdGFsOiEwfSk6e2RlY29kZTooKT0+e3Rocm93IEVycm9yKCJUZXh0RGVjb2RlciBub3QgYXZhaWxhYmxlIil9fTt0eXBlb2YgVGV4dERlY29kZXI8InUiJiZIUy5kZWNvZGUoKTtndT1udWxsO0F1PW51bGw7S1M9MDtqUz10eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnk+InUiP3tyZWdpc3RlcjooKT0+e30sdW5yZWdpc3RlcjooKT0+e319Om5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSh0PT5Mbi5fX3diZ190ZXh0dXJlZGF0YV9mcmVlKHQ+Pj4wLDEpKSxuMT1jbGFzcyB0e3N0YXRpYyBfX3dyYXAoZSl7ZT1lPj4+MDtsZXQgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtyZXR1cm4gbi5fX3diZ19wdHI9ZSxqUy5yZWdpc3RlcihuLG4uX193YmdfcHRyLG4pLG59X19kZXN0cm95X2ludG9fcmF3KCl7bGV0IGU9dGhpcy5fX3diZ19wdHI7cmV0dXJuIHRoaXMuX193YmdfcHRyPTAsalMudW5yZWdpc3Rlcih0aGlzKSxlfWZyZWUoKXtsZXQgZT10aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO0xuLl9fd2JnX3RleHR1cmVkYXRhX2ZyZWUoZSwwKX1nZXQgZGF0YSgpe2xldCBlPUxuLnRleHR1cmVkYXRhX2RhdGEodGhpcy5fX3diZ19wdHIpO3ZhciBuPUw4KGVbMF0sZVsxXSkuc2xpY2UoKTtyZXR1cm4gTG4uX193YmluZGdlbl9mcmVlKGVbMF0sZVsxXSo0LDQpLG59Z2V0IHdpZHRoKCl7cmV0dXJuIExuLnRleHR1cmVkYXRhX3dpZHRoKHRoaXMuX193YmdfcHRyKT4+PjB9Z2V0IGhlaWdodCgpe3JldHVybiBMbi50ZXh0dXJlZGF0YV9oZWlnaHQodGhpcy5fX3diZ19wdHIpPj4+MH1zdGF0aWMgbmV3KGUsbixvKXtsZXQgcj1EOChlLExuLl9fd2JpbmRnZW5fbWFsbG9jKSxpPUtTLHM9TG4udGV4dHVyZWRhdGFfbmV3KHIsaSxuLG8pO3JldHVybiB0Ll9fd3JhcChzKX19fSk7dmFyIHIxPXt9O2xlKHIxLHtkZWZhdWx0OigpPT56OH0pO2FzeW5jIGZ1bmN0aW9uIEc4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztpZihtKG4pJiZtKG4ud2FzbUJpbmFyeSkpcmV0dXJuIEFtKHttb2R1bGU6bi53YXNtQmluYXJ5fSksITB9ZnVuY3Rpb24gVjgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO2lmKG0obikpcmV0dXJuIEc4KHQsZSk7bGV0e3ByaW1pdGl2ZTpvLHNvcnRUeXBlOnJ9PXQ7aWYocj09PSJJbmRleCIpcmV0dXJuIFhTKG8ucG9zaXRpb25zLG8ubW9kZWxWaWV3LG8uY291bnQpfXZhciB6OCxpMT0kKCgpPT57Wm4oKTtmdCgpO28xKCk7ejg9VWUoVjgpfSk7dmFyIHMxPXt9O2xlKHMxLHtkZWZhdWx0OigpPT5xOH0pO2FzeW5jIGZ1bmN0aW9uIGo4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShuKSYmbShuLndhc21CaW5hcnkpPyhBbSh7bW9kdWxlOm4ud2FzbUJpbmFyeX0pLCEwKTohMX1hc3luYyBmdW5jdGlvbiBIOCh0LGUpe2xldCBuPXQud2ViQXNzZW1ibHlDb25maWc7aWYobShuKSlyZXR1cm4gajgodCxlKTtsZXR7YXR0cmlidXRlczpvLGNvdW50OnJ9PXQsaT1XUyhvLnBvc2l0aW9ucyxvLnNjYWxlcyxvLnJvdGF0aW9ucyxvLmNvbG9ycyxyKTtyZXR1cm57ZGF0YTppLmRhdGEsd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9fXZhciBxOCxjMT0kKCgpPT57Wm4oKTtmdCgpO28xKCk7cTg9VWUoSDgpfSk7dmFyIFNlLGlvLGExPSQoKCk9PntacygpO1NlPXtVTlNJR05FRF9CWVRFOkZ0LlVOU0lHTkVEX0JZVEUsVU5TSUdORURfU0hPUlQ6RnQuVU5TSUdORURfU0hPUlQsVU5TSUdORURfSU5UOkZ0LlVOU0lHTkVEX0lOVCxGTE9BVDpGdC5GTE9BVCxIQUxGX0ZMT0FUOkZ0LkhBTEZfRkxPQVRfT0VTLFVOU0lHTkVEX0lOVF8yNF84OkZ0LlVOU0lHTkVEX0lOVF8yNF84LFVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6RnQuVU5TSUdORURfU0hPUlRfNF80XzRfNCxVTlNJR05FRF9TSE9SVF81XzVfNV8xOkZ0LlVOU0lHTkVEX1NIT1JUXzVfNV81XzEsVU5TSUdORURfU0hPUlRfNV82XzU6RnQuVU5TSUdORURfU0hPUlRfNV82XzV9O1NlLnRvV2ViR0xDb25zdGFudD1mdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIFNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIEZ0LlVOU0lHTkVEX0JZVEU7Y2FzZSBTZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gRnQuVU5TSUdORURfU0hPUlQ7Y2FzZSBTZS5VTlNJR05FRF9JTlQ6cmV0dXJuIEZ0LlVOU0lHTkVEX0lOVDtjYXNlIFNlLkZMT0FUOnJldHVybiBGdC5GTE9BVDtjYXNlIFNlLkhBTEZfRkxPQVQ6cmV0dXJuIGUud2ViZ2wyP0Z0LkhBTEZfRkxPQVQ6RnQuSEFMRl9GTE9BVF9PRVM7Y2FzZSBTZS5VTlNJR05FRF9JTlRfMjRfODpyZXR1cm4gRnQuVU5TSUdORURfSU5UXzI0Xzg7Y2FzZSBTZS5VTlNJR05FRF9TSE9SVF80XzRfNF80OnJldHVybiBGdC5VTlNJR05FRF9TSE9SVF80XzRfNF80O2Nhc2UgU2UuVU5TSUdORURfU0hPUlRfNV81XzVfMTpyZXR1cm4gRnQuVU5TSUdORURfU0hPUlRfNV81XzVfMTtjYXNlIFNlLlVOU0lHTkVEX1NIT1JUXzVfNl81OnJldHVybiBTZS5VTlNJR05FRF9TSE9SVF81XzZfNX19O1NlLmlzUGFja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09U2UuVU5TSUdORURfSU5UXzI0Xzh8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVF80XzRfNF80fHx0PT09U2UuVU5TSUdORURfU0hPUlRfNV81XzVfMXx8dD09PVNlLlVOU0lHTkVEX1NIT1JUXzVfNl81fTtTZS5zaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBTZS5VTlNJR05FRF9CWVRFOnJldHVybiAxO2Nhc2UgU2UuVU5TSUdORURfU0hPUlQ6Y2FzZSBTZS5VTlNJR05FRF9TSE9SVF80XzRfNF80OmNhc2UgU2UuVU5TSUdORURfU0hPUlRfNV81XzVfMTpjYXNlIFNlLlVOU0lHTkVEX1NIT1JUXzVfNl81OmNhc2UgU2UuSEFMRl9GTE9BVDpyZXR1cm4gMjtjYXNlIFNlLlVOU0lHTkVEX0lOVDpjYXNlIFNlLkZMT0FUOmNhc2UgU2UuVU5TSUdORURfSU5UXzI0Xzg6cmV0dXJuIDR9fTtTZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PVNlLlVOU0lHTkVEX0JZVEV8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVHx8dD09PVNlLlVOU0lHTkVEX0lOVHx8dD09PVNlLkZMT0FUfHx0PT09U2UuSEFMRl9GTE9BVHx8dD09PVNlLlVOU0lHTkVEX0lOVF8yNF84fHx0PT09U2UuVU5TSUdORURfU0hPUlRfNF80XzRfNHx8dD09PVNlLlVOU0lHTkVEX1NIT1JUXzVfNV81XzF8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVF81XzZfNX07U2UuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKHQpe2xldCBlPVNlLnNpemVJbkJ5dGVzKHQpO3JldHVybiBlPT09VWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVD9VaW50OEFycmF5OmU9PT1VaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVD9VaW50MTZBcnJheTplPT09RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UJiZ0PT09U2UuRkxPQVQ/RmxvYXQzMkFycmF5OlVpbnQzMkFycmF5fTtpbz1PYmplY3QuZnJlZXplKFNlKX0pO3ZhciBtdCxHbixaUz0kKCgpPT57YTEoKTtacygpO210PXtERVBUSF9DT01QT05FTlQ6RnQuREVQVEhfQ09NUE9ORU5ULERFUFRIX1NURU5DSUw6RnQuREVQVEhfU1RFTkNJTCxBTFBIQTpGdC5BTFBIQSxSRUQ6RnQuUkVELFJHOkZ0LlJHLFJHQjpGdC5SR0IsUkdCQTpGdC5SR0JBLFJFRF9JTlRFR0VSOkZ0LlJFRF9JTlRFR0VSLFJHX0lOVEVHRVI6RnQuUkdfSU5URUdFUixSR0JfSU5URUdFUjpGdC5SR0JfSU5URUdFUixSR0JBX0lOVEVHRVI6RnQuUkdCQV9JTlRFR0VSLExVTUlOQU5DRTpGdC5MVU1JTkFOQ0UsTFVNSU5BTkNFX0FMUEhBOkZ0LkxVTUlOQU5DRV9BTFBIQSxSR0JfRFhUMTpGdC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULFJHQkFfRFhUMTpGdC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCxSR0JBX0RYVDM6RnQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsUkdCQV9EWFQ1OkZ0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULFJHQl9QVlJUQ180QlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyxSR0JfUFZSVENfMkJQUFYxOkZ0LkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9QVlJUQ180QlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcsUkdCQV9QVlJUQ18yQlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9BU1RDOkZ0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTCxSR0JfRVRDMTpGdC5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMLFJHQjhfRVRDMjpGdC5DT01QUkVTU0VEX1JHQjhfRVRDMixSR0JBOF9FVEMyX0VBQzpGdC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLFJHQkFfQkM3OkZ0LkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNfTttdC5jb21wb25lbnRzTGVuZ3RoPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIG10LlJHQjpjYXNlIG10LlJHQl9JTlRFR0VSOnJldHVybiAzO2Nhc2UgbXQuUkdCQTpjYXNlIG10LlJHQkFfSU5URUdFUjpyZXR1cm4gNDtjYXNlIG10LkxVTUlOQU5DRV9BTFBIQTpjYXNlIG10LlJHOmNhc2UgbXQuUkdfSU5URUdFUjpyZXR1cm4gMjtjYXNlIG10LkFMUEhBOmNhc2UgbXQuUkVEOmNhc2UgbXQuUkVEX0lOVEVHRVI6Y2FzZSBtdC5MVU1JTkFOQ0U6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gMX19O210LnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09bXQuREVQVEhfQ09NUE9ORU5UfHx0PT09bXQuREVQVEhfU1RFTkNJTHx8dD09PW10LkFMUEhBfHx0PT09bXQuUkVEfHx0PT09bXQuUkd8fHQ9PT1tdC5SR0J8fHQ9PT1tdC5SR0JBfHx0PT09bXQuUkVEX0lOVEVHRVJ8fHQ9PT1tdC5SR19JTlRFR0VSfHx0PT09bXQuUkdCX0lOVEVHRVJ8fHQ9PT1tdC5SR0JBX0lOVEVHRVJ8fHQ9PT1tdC5MVU1JTkFOQ0V8fHQ9PT1tdC5MVU1JTkFOQ0VfQUxQSEF8fHQ9PT1tdC5SR0JfRFhUMXx8dD09PW10LlJHQkFfRFhUMXx8dD09PW10LlJHQkFfRFhUM3x8dD09PW10LlJHQkFfRFhUNXx8dD09PW10LlJHQl9QVlJUQ180QlBQVjF8fHQ9PT1tdC5SR0JfUFZSVENfMkJQUFYxfHx0PT09bXQuUkdCQV9QVlJUQ180QlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzJCUFBWMXx8dD09PW10LlJHQkFfQVNUQ3x8dD09PW10LlJHQl9FVEMxfHx0PT09bXQuUkdCOF9FVEMyfHx0PT09bXQuUkdCQThfRVRDMl9FQUN8fHQ9PT1tdC5SR0JBX0JDN307bXQuaXNDb2xvckZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJFRHx8dD09PW10LkFMUEhBfHx0PT09bXQuUkdCfHx0PT09bXQuUkdCQXx8dD09PW10LkxVTUlOQU5DRXx8dD09PW10LkxVTUlOQU5DRV9BTFBIQX07bXQuaXNEZXB0aEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LkRFUFRIX0NPTVBPTkVOVHx8dD09PW10LkRFUFRIX1NURU5DSUx9O210LmlzQ29tcHJlc3NlZEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9EWFQxfHx0PT09bXQuUkdCQV9EWFQxfHx0PT09bXQuUkdCQV9EWFQzfHx0PT09bXQuUkdCQV9EWFQ1fHx0PT09bXQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQkFfUFZSVENfMkJQUFYxfHx0PT09bXQuUkdCQV9BU1RDfHx0PT09bXQuUkdCX0VUQzF8fHQ9PT1tdC5SR0I4X0VUQzJ8fHQ9PT1tdC5SR0JBOF9FVEMyX0VBQ3x8dD09PW10LlJHQkFfQkM3fTttdC5pc0RYVEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9EWFQxfHx0PT09bXQuUkdCQV9EWFQxfHx0PT09bXQuUkdCQV9EWFQzfHx0PT09bXQuUkdCQV9EWFQ1fTttdC5pc1BWUlRDRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09bXQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQkFfUFZSVENfMkJQUFYxfTttdC5pc0FTVENGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0JBX0FTVEN9O210LmlzRVRDMUZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9FVEMxfTttdC5pc0VUQzJGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0I4X0VUQzJ8fHQ9PT1tdC5SR0JBOF9FVEMyX0VBQ307bXQuaXNCQzdGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0JBX0JDN307bXQuY29tcHJlc3NlZFRleHR1cmVTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsbil7c3dpdGNoKHQpe2Nhc2UgbXQuUkdCX0RYVDE6Y2FzZSBtdC5SR0JBX0RYVDE6Y2FzZSBtdC5SR0JfRVRDMTpjYXNlIG10LlJHQjhfRVRDMjpyZXR1cm4gTWF0aC5mbG9vcigoZSszKS80KSpNYXRoLmZsb29yKChuKzMpLzQpKjg7Y2FzZSBtdC5SR0JBX0RYVDM6Y2FzZSBtdC5SR0JBX0RYVDU6Y2FzZSBtdC5SR0JBX0FTVEM6Y2FzZSBtdC5SR0JBOF9FVEMyX0VBQzpyZXR1cm4gTWF0aC5mbG9vcigoZSszKS80KSpNYXRoLmZsb29yKChuKzMpLzQpKjE2O2Nhc2UgbXQuUkdCX1BWUlRDXzRCUFBWMTpjYXNlIG10LlJHQkFfUFZSVENfNEJQUFYxOnJldHVybiBNYXRoLmZsb29yKChNYXRoLm1heChlLDgpKk1hdGgubWF4KG4sOCkqNCs3KS84KTtjYXNlIG10LlJHQl9QVlJUQ18yQlBQVjE6Y2FzZSBtdC5SR0JBX1BWUlRDXzJCUFBWMTpyZXR1cm4gTWF0aC5mbG9vcigoTWF0aC5tYXgoZSwxNikqTWF0aC5tYXgobiw4KSoyKzcpLzgpO2Nhc2UgbXQuUkdCQV9CQzc6cmV0dXJuIE1hdGguY2VpbChlLzQpKk1hdGguY2VpbChuLzQpKjE2O2RlZmF1bHQ6cmV0dXJuIDB9fTttdC50ZXh0dXJlU2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9bXQuY29tcG9uZW50c0xlbmd0aCh0KTtyZXR1cm4gaW8uaXNQYWNrZWQoZSkmJihyPTEpLHIqaW8uc2l6ZUluQnl0ZXMoZSkqbipvfTttdC50ZXh0dXJlM0RTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsbixvLHIpe2xldCBpPW10LmNvbXBvbmVudHNMZW5ndGgodCk7cmV0dXJuIGlvLmlzUGFja2VkKGUpJiYoaT0xKSxpKmlvLnNpemVJbkJ5dGVzKGUpKm4qbypyfTttdC5hbGlnbm1lbnRJbkJ5dGVzPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1tdC50ZXh0dXJlU2l6ZUluQnl0ZXModCxlLG4sMSklNDtyZXR1cm4gbz09PTA/NDpvPT09Mj8yOjF9O210LmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9aW8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKGUpLGk9bXQuY29tcG9uZW50c0xlbmd0aCh0KSpuKm87cmV0dXJuIG5ldyByKGkpfTttdC5mbGlwWT1mdW5jdGlvbih0LGUsbixvLHIpe2lmKHI9PT0xKXJldHVybiB0O2xldCBpPW10LmNyZWF0ZVR5cGVkQXJyYXkoZSxuLG8scikscz1tdC5jb21wb25lbnRzTGVuZ3RoKGUpLGY9bypzO2ZvcihsZXQgdT0wO3U8cjsrK3Upe2xldCBjPXUqbypzLGw9KHItdS0xKSpvKnM7Zm9yKGxldCBwPTA7cDxmOysrcClpW2wrcF09dFtjK3BdfXJldHVybiBpfTttdC50b0ludGVybmFsRm9ybWF0PWZ1bmN0aW9uKHQsZSxuKXtpZighbi53ZWJnbDIpcmV0dXJuIHQ7aWYodD09PW10LkRFUFRIX1NURU5DSUwpcmV0dXJuIEZ0LkRFUFRIMjRfU1RFTkNJTDg7aWYodD09PW10LkRFUFRIX0NPTVBPTkVOVCl7aWYoZT09PWlvLlVOU0lHTkVEX1NIT1JUKXJldHVybiBGdC5ERVBUSF9DT01QT05FTlQxNjtpZihlPT09aW8uVU5TSUdORURfSU5UKXJldHVybiBGdC5ERVBUSF9DT01QT05FTlQyNH1pZihlPT09aW8uRkxPQVQpc3dpdGNoKHQpe2Nhc2UgbXQuUkdCQTpyZXR1cm4gRnQuUkdCQTMyRjtjYXNlIG10LlJHQjpyZXR1cm4gRnQuUkdCMzJGO2Nhc2UgbXQuUkc6cmV0dXJuIEZ0LlJHMzJGO2Nhc2UgbXQuUkVEOnJldHVybiBGdC5SMzJGfWlmKGU9PT1pby5IQUxGX0ZMT0FUKXN3aXRjaCh0KXtjYXNlIG10LlJHQkE6cmV0dXJuIEZ0LlJHQkExNkY7Y2FzZSBtdC5SR0I6cmV0dXJuIEZ0LlJHQjE2RjtjYXNlIG10LlJHOnJldHVybiBGdC5SRzE2RjtjYXNlIG10LlJFRDpyZXR1cm4gRnQuUjE2Rn1pZihlPT09aW8uVU5TSUdORURfQllURSlzd2l0Y2godCl7Y2FzZSBtdC5SR0JBOnJldHVybiBGdC5SR0JBODtjYXNlIG10LlJHQjpyZXR1cm4gRnQuUkdCODtjYXNlIG10LlJHOnJldHVybiBGdC5SRzg7Y2FzZSBtdC5SRUQ6cmV0dXJuIEZ0LlI4fWlmKGU9PT1pby5JTlQpc3dpdGNoKHQpe2Nhc2UgbXQuUkdCQV9JTlRFR0VSOnJldHVybiBGdC5SR0JBMzJJO2Nhc2UgbXQuUkdCX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQjMySTtjYXNlIG10LlJHX0lOVEVHRVI6cmV0dXJuIEZ0LlJHMzJJO2Nhc2UgbXQuUkVEX0lOVEVHRVI6cmV0dXJuIEZ0LlIzMkl9aWYoZT09PWlvLlVOU0lHTkVEX0lOVClzd2l0Y2godCl7Y2FzZSBtdC5SR0JBX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQkEzMlVJO2Nhc2UgbXQuUkdCX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQjMyVUk7Y2FzZSBtdC5SR19JTlRFR0VSOnJldHVybiBGdC5SRzMyVUk7Y2FzZSBtdC5SRURfSU5URUdFUjpyZXR1cm4gRnQuUjMyVUl9cmV0dXJuIHR9O0duPU9iamVjdC5mcmVlemUobXQpfSk7dmFyIEs4LGJ1LFFTPSQoKCk9PntLOD17VktfRk9STUFUX1VOREVGSU5FRDowLFZLX0ZPUk1BVF9SNEc0X1VOT1JNX1BBQ0s4OjEsVktfRk9STUFUX1I0RzRCNEE0X1VOT1JNX1BBQ0sxNjoyLFZLX0ZPUk1BVF9CNEc0UjRBNF9VTk9STV9QQUNLMTY6MyxWS19GT1JNQVRfUjVHNkI1X1VOT1JNX1BBQ0sxNjo0LFZLX0ZPUk1BVF9CNUc2UjVfVU5PUk1fUEFDSzE2OjUsVktfRk9STUFUX1I1RzVCNUExX1VOT1JNX1BBQ0sxNjo2LFZLX0ZPUk1BVF9CNUc1UjVBMV9VTk9STV9QQUNLMTY6NyxWS19GT1JNQVRfQTFSNUc1QjVfVU5PUk1fUEFDSzE2OjgsVktfRk9STUFUX1I4X1VOT1JNOjksVktfRk9STUFUX1I4X1NOT1JNOjEwLFZLX0ZPUk1BVF9SOF9VU0NBTEVEOjExLFZLX0ZPUk1BVF9SOF9TU0NBTEVEOjEyLFZLX0ZPUk1BVF9SOF9VSU5UOjEzLFZLX0ZPUk1BVF9SOF9TSU5UOjE0LFZLX0ZPUk1BVF9SOF9TUkdCOjE1LFZLX0ZPUk1BVF9SOEc4X1VOT1JNOjE2LFZLX0ZPUk1BVF9SOEc4X1NOT1JNOjE3LFZLX0ZPUk1BVF9SOEc4X1VTQ0FMRUQ6MTgsVktfRk9STUFUX1I4RzhfU1NDQUxFRDoxOSxWS19GT1JNQVRfUjhHOF9VSU5UOjIwLFZLX0ZPUk1BVF9SOEc4X1NJTlQ6MjEsVktfRk9STUFUX1I4RzhfU1JHQjoyMixWS19GT1JNQVRfUjhHOEI4X1VOT1JNOjIzLFZLX0ZPUk1BVF9SOEc4QjhfU05PUk06MjQsVktfRk9STUFUX1I4RzhCOF9VU0NBTEVEOjI1LFZLX0ZPUk1BVF9SOEc4QjhfU1NDQUxFRDoyNixWS19GT1JNQVRfUjhHOEI4X1VJTlQ6MjcsVktfRk9STUFUX1I4RzhCOF9TSU5UOjI4LFZLX0ZPUk1BVF9SOEc4QjhfU1JHQjoyOSxWS19GT1JNQVRfQjhHOFI4X1VOT1JNOjMwLFZLX0ZPUk1BVF9COEc4UjhfU05PUk06MzEsVktfRk9STUFUX0I4RzhSOF9VU0NBTEVEOjMyLFZLX0ZPUk1BVF9COEc4UjhfU1NDQUxFRDozMyxWS19GT1JNQVRfQjhHOFI4X1VJTlQ6MzQsVktfRk9STUFUX0I4RzhSOF9TSU5UOjM1LFZLX0ZPUk1BVF9COEc4UjhfU1JHQjozNixWS19GT1JNQVRfUjhHOEI4QThfVU5PUk06MzcsVktfRk9STUFUX1I4RzhCOEE4X1NOT1JNOjM4LFZLX0ZPUk1BVF9SOEc4QjhBOF9VU0NBTEVEOjM5LFZLX0ZPUk1BVF9SOEc4QjhBOF9TU0NBTEVEOjQwLFZLX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOjQxLFZLX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOjQyLFZLX0ZPUk1BVF9SOEc4QjhBOF9TUkdCOjQzLFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STTo0NCxWS19GT1JNQVRfQjhHOFI4QThfU05PUk06NDUsVktfRk9STUFUX0I4RzhSOEE4X1VTQ0FMRUQ6NDYsVktfRk9STUFUX0I4RzhSOEE4X1NTQ0FMRUQ6NDcsVktfRk9STUFUX0I4RzhSOEE4X1VJTlQ6NDgsVktfRk9STUFUX0I4RzhSOEE4X1NJTlQ6NDksVktfRk9STUFUX0I4RzhSOEE4X1NSR0I6NTAsVktfRk9STUFUX0E4QjhHOFI4X1VOT1JNX1BBQ0szMjo1MSxWS19GT1JNQVRfQThCOEc4UjhfU05PUk1fUEFDSzMyOjUyLFZLX0ZPUk1BVF9BOEI4RzhSOF9VU0NBTEVEX1BBQ0szMjo1MyxWS19GT1JNQVRfQThCOEc4UjhfU1NDQUxFRF9QQUNLMzI6NTQsVktfRk9STUFUX0E4QjhHOFI4X1VJTlRfUEFDSzMyOjU1LFZLX0ZPUk1BVF9BOEI4RzhSOF9TSU5UX1BBQ0szMjo1NixWS19GT1JNQVRfQThCOEc4UjhfU1JHQl9QQUNLMzI6NTcsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VOT1JNX1BBQ0szMjo1OCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU05PUk1fUEFDSzMyOjU5LFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9VU0NBTEVEX1BBQ0szMjo2MCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU1NDQUxFRF9QQUNLMzI6NjEsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VJTlRfUEFDSzMyOjYyLFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9TSU5UX1BBQ0szMjo2MyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVU5PUk1fUEFDSzMyOjY0LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TTk9STV9QQUNLMzI6NjUsVktfRk9STUFUX0EyQjEwRzEwUjEwX1VTQ0FMRURfUEFDSzMyOjY2LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TU0NBTEVEX1BBQ0szMjo2NyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVUlOVF9QQUNLMzI6NjgsVktfRk9STUFUX0EyQjEwRzEwUjEwX1NJTlRfUEFDSzMyOjY5LFZLX0ZPUk1BVF9SMTZfVU5PUk06NzAsVktfRk9STUFUX1IxNl9TTk9STTo3MSxWS19GT1JNQVRfUjE2X1VTQ0FMRUQ6NzIsVktfRk9STUFUX1IxNl9TU0NBTEVEOjczLFZLX0ZPUk1BVF9SMTZfVUlOVDo3NCxWS19GT1JNQVRfUjE2X1NJTlQ6NzUsVktfRk9STUFUX1IxNl9TRkxPQVQ6NzYsVktfRk9STUFUX1IxNkcxNl9VTk9STTo3NyxWS19GT1JNQVRfUjE2RzE2X1NOT1JNOjc4LFZLX0ZPUk1BVF9SMTZHMTZfVVNDQUxFRDo3OSxWS19GT1JNQVRfUjE2RzE2X1NTQ0FMRUQ6ODAsVktfRk9STUFUX1IxNkcxNl9VSU5UOjgxLFZLX0ZPUk1BVF9SMTZHMTZfU0lOVDo4MixWS19GT1JNQVRfUjE2RzE2X1NGTE9BVDo4MyxWS19GT1JNQVRfUjE2RzE2QjE2X1VOT1JNOjg0LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU05PUk06ODUsVktfRk9STUFUX1IxNkcxNkIxNl9VU0NBTEVEOjg2LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU1NDQUxFRDo4NyxWS19GT1JNQVRfUjE2RzE2QjE2X1VJTlQ6ODgsVktfRk9STUFUX1IxNkcxNkIxNl9TSU5UOjg5LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU0ZMT0FUOjkwLFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06OTEsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STTo5MixWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VTQ0FMRUQ6OTMsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TU0NBTEVEOjk0LFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDo5NSxWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6OTYsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQ6OTcsVktfRk9STUFUX1IzMl9VSU5UOjk4LFZLX0ZPUk1BVF9SMzJfU0lOVDo5OSxWS19GT1JNQVRfUjMyX1NGTE9BVDoxMDAsVktfRk9STUFUX1IzMkczMl9VSU5UOjEwMSxWS19GT1JNQVRfUjMyRzMyX1NJTlQ6MTAyLFZLX0ZPUk1BVF9SMzJHMzJfU0ZMT0FUOjEwMyxWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6MTA0LFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoxMDUsVktfRk9STUFUX1IzMkczMkIzMl9TRkxPQVQ6MTA2LFZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoxMDcsVktfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOjEwOCxWS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVDoxMDksVktfRk9STUFUX1I2NF9VSU5UOjExMCxWS19GT1JNQVRfUjY0X1NJTlQ6MTExLFZLX0ZPUk1BVF9SNjRfU0ZMT0FUOjExMixWS19GT1JNQVRfUjY0RzY0X1VJTlQ6MTEzLFZLX0ZPUk1BVF9SNjRHNjRfU0lOVDoxMTQsVktfRk9STUFUX1I2NEc2NF9TRkxPQVQ6MTE1LFZLX0ZPUk1BVF9SNjRHNjRCNjRfVUlOVDoxMTYsVktfRk9STUFUX1I2NEc2NEI2NF9TSU5UOjExNyxWS19GT1JNQVRfUjY0RzY0QjY0X1NGTE9BVDoxMTgsVktfRk9STUFUX1I2NEc2NEI2NEE2NF9VSU5UOjExOSxWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NJTlQ6MTIwLFZLX0ZPUk1BVF9SNjRHNjRCNjRBNjRfU0ZMT0FUOjEyMSxWS19GT1JNQVRfQjEwRzExUjExX1VGTE9BVF9QQUNLMzI6MTIyLFZLX0ZPUk1BVF9FNUI5RzlSOV9VRkxPQVRfUEFDSzMyOjEyMyxWS19GT1JNQVRfRDE2X1VOT1JNOjEyNCxWS19GT1JNQVRfWDhfRDI0X1VOT1JNX1BBQ0szMjoxMjUsVktfRk9STUFUX0QzMl9TRkxPQVQ6MTI2LFZLX0ZPUk1BVF9TOF9VSU5UOjEyNyxWS19GT1JNQVRfRDE2X1VOT1JNX1M4X1VJTlQ6MTI4LFZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoxMjksVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVDoxMzAsVktfRk9STUFUX0JDMV9SR0JfVU5PUk1fQkxPQ0s6MTMxLFZLX0ZPUk1BVF9CQzFfUkdCX1NSR0JfQkxPQ0s6MTMyLFZLX0ZPUk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSzoxMzMsVktfRk9STUFUX0JDMV9SR0JBX1NSR0JfQkxPQ0s6MTM0LFZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0s6MTM1LFZLX0ZPUk1BVF9CQzJfU1JHQl9CTE9DSzoxMzYsVktfRk9STUFUX0JDM19VTk9STV9CTE9DSzoxMzcsVktfRk9STUFUX0JDM19TUkdCX0JMT0NLOjEzOCxWS19GT1JNQVRfQkM0X1VOT1JNX0JMT0NLOjEzOSxWS19GT1JNQVRfQkM0X1NOT1JNX0JMT0NLOjE0MCxWS19GT1JNQVRfQkM1X1VOT1JNX0JMT0NLOjE0MSxWS19GT1JNQVRfQkM1X1NOT1JNX0JMT0NLOjE0MixWS19GT1JNQVRfQkM2SF9VRkxPQVRfQkxPQ0s6MTQzLFZLX0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSzoxNDQsVktfRk9STUFUX0JDN19VTk9STV9CTE9DSzoxNDUsVktfRk9STUFUX0JDN19TUkdCX0JMT0NLOjE0NixWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0s6MTQ3LFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLOjE0OCxWS19GT1JNQVRfRVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSzoxNDksVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSzoxNTAsVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0s6MTUxLFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0s6MTUyLFZLX0ZPUk1BVF9FQUNfUjExX1VOT1JNX0JMT0NLOjE1MyxWS19GT1JNQVRfRUFDX1IxMV9TTk9STV9CTE9DSzoxNTQsVktfRk9STUFUX0VBQ19SMTFHMTFfVU5PUk1fQkxPQ0s6MTU1LFZLX0ZPUk1BVF9FQUNfUjExRzExX1NOT1JNX0JMT0NLOjE1NixWS19GT1JNQVRfQVNUQ180eDRfVU5PUk1fQkxPQ0s6MTU3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdCX0JMT0NLOjE1OCxWS19GT1JNQVRfQVNUQ181eDRfVU5PUk1fQkxPQ0s6MTU5LFZLX0ZPUk1BVF9BU1RDXzV4NF9TUkdCX0JMT0NLOjE2MCxWS19GT1JNQVRfQVNUQ181eDVfVU5PUk1fQkxPQ0s6MTYxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TUkdCX0JMT0NLOjE2MixWS19GT1JNQVRfQVNUQ182eDVfVU5PUk1fQkxPQ0s6MTYzLFZLX0ZPUk1BVF9BU1RDXzZ4NV9TUkdCX0JMT0NLOjE2NCxWS19GT1JNQVRfQVNUQ182eDZfVU5PUk1fQkxPQ0s6MTY1LFZLX0ZPUk1BVF9BU1RDXzZ4Nl9TUkdCX0JMT0NLOjE2NixWS19GT1JNQVRfQVNUQ184eDVfVU5PUk1fQkxPQ0s6MTY3LFZLX0ZPUk1BVF9BU1RDXzh4NV9TUkdCX0JMT0NLOjE2OCxWS19GT1JNQVRfQVNUQ184eDZfVU5PUk1fQkxPQ0s6MTY5LFZLX0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLOjE3MCxWS19GT1JNQVRfQVNUQ184eDhfVU5PUk1fQkxPQ0s6MTcxLFZLX0ZPUk1BVF9BU1RDXzh4OF9TUkdCX0JMT0NLOjE3MixWS19GT1JNQVRfQVNUQ18xMHg1X1VOT1JNX0JMT0NLOjE3MyxWS19GT1JNQVRfQVNUQ18xMHg1X1NSR0JfQkxPQ0s6MTc0LFZLX0ZPUk1BVF9BU1RDXzEweDZfVU5PUk1fQkxPQ0s6MTc1LFZLX0ZPUk1BVF9BU1RDXzEweDZfU1JHQl9CTE9DSzoxNzYsVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9DSzoxNzcsVktfRk9STUFUX0FTVENfMTB4OF9TUkdCX0JMT0NLOjE3OCxWS19GT1JNQVRfQVNUQ18xMHgxMF9VTk9STV9CTE9DSzoxNzksVktfRk9STUFUX0FTVENfMTB4MTBfU1JHQl9CTE9DSzoxODAsVktfRk9STUFUX0FTVENfMTJ4MTBfVU5PUk1fQkxPQ0s6MTgxLFZLX0ZPUk1BVF9BU1RDXzEyeDEwX1NSR0JfQkxPQ0s6MTgyLFZLX0ZPUk1BVF9BU1RDXzEyeDEyX1VOT1JNX0JMT0NLOjE4MyxWS19GT1JNQVRfQVNUQ18xMngxMl9TUkdCX0JMT0NLOjE4NCxWS19GT1JNQVRfRzhCOEc4UjhfNDIyX1VOT1JNOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNOjEwMDAxNTYwMDEsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjBfVU5PUk06MTAwMDE1NjAwMixWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIwX1VOT1JNOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk06MTAwMDE1NjAwNCxWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIyX1VOT1JNOjEwMDAxNTYwMDUsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80NDRfVU5PUk06MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2OjEwMDAxNTYwMDcsVktfRk9STUFUX1IxMFg2RzEwWDZfVU5PUk1fMlBBQ0sxNjoxMDAwMTU2MDA4LFZLX0ZPUk1BVF9SMTBYNkcxMFg2QjEwWDZBMTBYNl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTAsVktfRk9STUFUX0IxMFg2RzEwWDZSMTBYNkcxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTEsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEzLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNl9SMTBYNl8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNCxWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMTYsVktfRk9STUFUX1IxMlg0X1VOT1JNX1BBQ0sxNjoxMDAwMTU2MDE3LFZLX0ZPUk1BVF9SMTJYNEcxMlg0X1VOT1JNXzJQQUNLMTY6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDE5LFZLX0ZPUk1BVF9HMTJYNEIxMlg0RzEyWDRSMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIwLFZLX0ZPUk1BVF9CMTJYNEcxMlg0UjEyWDRHMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMixWS19GT1JNQVRfRzEyWDRfQjEyWDRSMTJYNF8yUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMyxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjUsVktfRk9STUFUX0cxMlg0X0IxMlg0X1IxMlg0XzNQTEFORV80NDRfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDI2LFZLX0ZPUk1BVF9HMTZCMTZHMTZSMTZfNDIyX1VOT1JNOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk06MTAwMDE1NjAyOCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMF9VTk9STToxMDAwMTU2MDI5LFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjBfVU5PUk06MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STToxMDAwMTU2MDMxLFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjJfVU5PUk06MTAwMDE1NjAzMixWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQ0NF9VTk9STToxMDAwMTU2MDMzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NGUzLFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NDAwMSxWS19GT1JNQVRfUFZSVEMyXzJCUFBfVU5PUk1fQkxPQ0tfSU1HOjEwMDAwNTQwMDIsVktfRk9STUFUX1BWUlRDMl80QlBQX1VOT1JNX0JMT0NLX0lNRzoxMDAwMDU0MDAzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA0LFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA1LFZLX0ZPUk1BVF9QVlJUQzJfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA2LFZLX0ZPUk1BVF9QVlJUQzJfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjZlMyxWS19GT1JNQVRfQVNUQ181eDRfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDAxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDIsVktfRk9STUFUX0FTVENfNng1X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwMyxWS19GT1JNQVRfQVNUQ182eDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA0LFZLX0ZPUk1BVF9BU1RDXzh4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDUsVktfRk9STUFUX0FTVENfOHg2X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwNixWS19GT1JNQVRfQVNUQ184eDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA3LFZLX0ZPUk1BVF9BU1RDXzEweDVfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA4LFZLX0ZPUk1BVF9BU1RDXzEweDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA5LFZLX0ZPUk1BVF9BU1RDXzEweDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEwLFZLX0ZPUk1BVF9BU1RDXzEweDEwX1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAxMSxWS19GT1JNQVRfQVNUQ18xMngxMF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMTIsVktfRk9STUFUX0FTVENfMTJ4MTJfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEzLFZLX0ZPUk1BVF9HOEI4RzhSOF80MjJfVU5PUk1fS0hSOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDAxLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIwX1VOT1JNX0tIUjoxMDAwMTU2MDAyLFZLX0ZPUk1BVF9HOF9COFI4XzJQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMDQsVktfRk9STUFUX0c4X0I4UjhfMlBMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAwNSxWS19GT1JNQVRfRzhfQjhfUjhfM1BMQU5FXzQ0NF9VTk9STV9LSFI6MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2X0tIUjoxMDAwMTU2MDA3LFZLX0ZPUk1BVF9SMTBYNkcxMFg2X1VOT1JNXzJQQUNLMTZfS0hSOjEwMDAxNTYwMDgsVktfRk9STUFUX1IxMFg2RzEwWDZCMTBYNkExMFg2X1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDEwLFZLX0ZPUk1BVF9CMTBYNkcxMFg2UjEwWDZHMTBYNl80MjJfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxMSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxMyxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE0LFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjJfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE2LFZLX0ZPUk1BVF9SMTJYNF9VTk9STV9QQUNLMTZfS0hSOjEwMDAxNTYwMTcsVktfRk9STUFUX1IxMlg0RzEyWDRfVU5PUk1fMlBBQ0sxNl9LSFI6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxOSxWS19GT1JNQVRfRzEyWDRCMTJYNEcxMlg0UjEyWDRfNDIyX1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMjAsVktfRk9STUFUX0IxMlg0RzEyWDRSMTJYNEcxMlg0XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjIsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDIzLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDI1LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDQ0X1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjYsVktfRk9STUFUX0cxNkIxNkcxNlIxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjgsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMjksVktfRk9STUFUX0cxNl9CMTZSMTZfMlBMQU5FXzQyMF9VTk9STV9LSFI6MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAzMSxWS19GT1JNQVRfRzE2X0IxNlIxNl8yUExBTkVfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDMyLFZLX0ZPUk1BVF9HMTZfQjE2X1IxNl8zUExBTkVfNDQ0X1VOT1JNX0tIUjoxMDAwMTU2MDMzfSxidT1PYmplY3QuZnJlZXplKEs4KX0pO2Z1bmN0aW9uIFc4KCl7cmV0dXJue3ZrRm9ybWF0OjAsdHlwZVNpemU6MSxwaXhlbFdpZHRoOjAscGl4ZWxIZWlnaHQ6MCxwaXhlbERlcHRoOjAsbGF5ZXJDb3VudDowLGZhY2VDb3VudDoxLHN1cGVyY29tcHJlc3Npb25TY2hlbWU6MCxsZXZlbHM6W10sZGF0YUZvcm1hdERlc2NyaXB0b3I6W3t2ZW5kb3JJZDowLGRlc2NyaXB0b3JUeXBlOjAsdmVyc2lvbk51bWJlcjoyLGNvbG9yTW9kZWw6MCxjb2xvclByaW1hcmllczoxLHRyYW5zZmVyRnVuY3Rpb246MixmbGFnczowLHRleGVsQmxvY2tEaW1lbnNpb246WzAsMCwwLDBdLGJ5dGVzUGxhbmU6WzAsMCwwLDAsMCwwLDAsMF0sc2FtcGxlczpbXX1dLGtleVZhbHVlOnt9LGdsb2JhbERhdGE6bnVsbH19ZnVuY3Rpb24gSlModCl7cmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KX1mdW5jdGlvbiB0eCh0KXtsZXQgZT1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsem8ubGVuZ3RoKTtpZihlWzBdIT09em9bMF18fGVbMV0hPT16b1sxXXx8ZVsyXSE9PXpvWzJdfHxlWzNdIT09em9bM118fGVbNF0hPT16b1s0XXx8ZVs1XSE9PXpvWzVdfHxlWzZdIT09em9bNl18fGVbN10hPT16b1s3XXx8ZVs4XSE9PXpvWzhdfHxlWzldIT09em9bOV18fGVbMTBdIT09em9bMTBdfHxlWzExXSE9PXpvWzExXSl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgS1RYIDIuMCBpZGVudGlmaWVyLiIpO2xldCBuPVc4KCksbz0xNypVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxyPW5ldyBNYyh0LHpvLmxlbmd0aCxvLCEwKTtuLnZrRm9ybWF0PXIuX25leHRVaW50MzIoKSxuLnR5cGVTaXplPXIuX25leHRVaW50MzIoKSxuLnBpeGVsV2lkdGg9ci5fbmV4dFVpbnQzMigpLG4ucGl4ZWxIZWlnaHQ9ci5fbmV4dFVpbnQzMigpLG4ucGl4ZWxEZXB0aD1yLl9uZXh0VWludDMyKCksbi5sYXllckNvdW50PXIuX25leHRVaW50MzIoKSxuLmZhY2VDb3VudD1yLl9uZXh0VWludDMyKCk7bGV0IGk9ci5fbmV4dFVpbnQzMigpO24uc3VwZXJjb21wcmVzc2lvblNjaGVtZT1yLl9uZXh0VWludDMyKCk7bGV0IHM9ci5fbmV4dFVpbnQzMigpLGY9ci5fbmV4dFVpbnQzMigpLHU9ci5fbmV4dFVpbnQzMigpLGM9ci5fbmV4dFVpbnQzMigpLGw9ci5fbmV4dFVpbnQ2NCgpLHA9ci5fbmV4dFVpbnQ2NCgpLGQ9aSozKjgsaD1uZXcgTWModCx6by5sZW5ndGgrbyxkLCEwKTtmb3IobGV0IHJ0PTA7cnQ8aTtydCsrKW4ubGV2ZWxzLnB1c2goe2xldmVsRGF0YTpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQraC5fbmV4dFVpbnQ2NCgpLGguX25leHRVaW50NjQoKSksdW5jb21wcmVzc2VkQnl0ZUxlbmd0aDpoLl9uZXh0VWludDY0KCl9KTtsZXQgXz1uZXcgTWModCxzLGYsITApO18uX3NraXAoNCk7bGV0IGc9Xy5fbmV4dFVpbnQxNigpLGI9Xy5fbmV4dFVpbnQxNigpLHc9Xy5fbmV4dFVpbnQxNigpLE89Xy5fbmV4dFVpbnQxNigpLEU9Xy5fbmV4dFVpbnQ4KCksVD1fLl9uZXh0VWludDgoKSx4PV8uX25leHRVaW50OCgpLE09Xy5fbmV4dFVpbnQ4KCksTj1bXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCldLEY9W18uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpXSx2PXt2ZW5kb3JJZDpnLGRlc2NyaXB0b3JUeXBlOmIsdmVyc2lvbk51bWJlcjp3LGNvbG9yTW9kZWw6RSxjb2xvclByaW1hcmllczpULHRyYW5zZmVyRnVuY3Rpb246eCxmbGFnczpNLHRleGVsQmxvY2tEaW1lbnNpb246TixieXRlc1BsYW5lOkYsc2FtcGxlczpbXX0sUz0oTy80LTYpLzQ7Zm9yKGxldCBydD0wO3J0PFM7cnQrKyl7bGV0IHh0PXtiaXRPZmZzZXQ6Xy5fbmV4dFVpbnQxNigpLGJpdExlbmd0aDpfLl9uZXh0VWludDgoKSxjaGFubmVsVHlwZTpfLl9uZXh0VWludDgoKSxzYW1wbGVQb3NpdGlvbjpbXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCldLHNhbXBsZUxvd2VyOk51bWJlci5ORUdBVElWRV9JTkZJTklUWSxzYW1wbGVVcHBlcjpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl9O3h0LmNoYW5uZWxUeXBlJjY0Pyh4dC5zYW1wbGVMb3dlcj1fLl9uZXh0SW50MzIoKSx4dC5zYW1wbGVVcHBlcj1fLl9uZXh0SW50MzIoKSk6KHh0LnNhbXBsZUxvd2VyPV8uX25leHRVaW50MzIoKSx4dC5zYW1wbGVVcHBlcj1fLl9uZXh0VWludDMyKCkpLHYuc2FtcGxlc1tydF09eHR9bi5kYXRhRm9ybWF0RGVzY3JpcHRvci5sZW5ndGg9MCxuLmRhdGFGb3JtYXREZXNjcmlwdG9yLnB1c2godik7bGV0IEM9bmV3IE1jKHQsdSxjLCEwKTtmb3IoO0MuX29mZnNldDxjOyl7bGV0IHJ0PUMuX25leHRVaW50MzIoKSx4dD1DLl9zY2FuKHJ0KSxHdD1KUyh4dCk7aWYobi5rZXlWYWx1ZVtHdF09Qy5fbmV4dFVpbnQ4QXJyYXkocnQteHQuYnl0ZUxlbmd0aC0xKSxHdC5tYXRjaCgvXmt0eC9pKSl7bGV0IHJlPUpTKG4ua2V5VmFsdWVbR3RdKTtuLmtleVZhbHVlW0d0XT1yZS5zdWJzdHJpbmcoMCxyZS5sYXN0SW5kZXhPZigiXDAiKSl9bGV0IHBlPXJ0JTQ/NC1ydCU0OjA7Qy5fc2tpcChwZSl9aWYocDw9MClyZXR1cm4gbjtsZXQgTD1uZXcgTWModCxsLHAsITApLHo9TC5fbmV4dFVpbnQxNigpLGo9TC5fbmV4dFVpbnQxNigpLGs9TC5fbmV4dFVpbnQzMigpLHE9TC5fbmV4dFVpbnQzMigpLFc9TC5fbmV4dFVpbnQzMigpLFI9TC5fbmV4dFVpbnQzMigpLG50PVtdO2ZvcihsZXQgcnQ9MDtydDxpO3J0KyspbnQucHVzaCh7aW1hZ2VGbGFnczpMLl9uZXh0VWludDMyKCkscmdiU2xpY2VCeXRlT2Zmc2V0OkwuX25leHRVaW50MzIoKSxyZ2JTbGljZUJ5dGVMZW5ndGg6TC5fbmV4dFVpbnQzMigpLGFscGhhU2xpY2VCeXRlT2Zmc2V0OkwuX25leHRVaW50MzIoKSxhbHBoYVNsaWNlQnl0ZUxlbmd0aDpMLl9uZXh0VWludDMyKCl9KTtsZXQgYXQ9bCtMLl9vZmZzZXQsbHQ9YXQrayxfdD1sdCtxLG90PV90K1csUHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K2F0LGspLGd0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCtsdCxxKSxSdD1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQrX3QsVyksZHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K290LFIpO3JldHVybiBuLmdsb2JhbERhdGE9e2VuZHBvaW50Q291bnQ6eixzZWxlY3RvckNvdW50OmosaW1hZ2VEZXNjczpudCxlbmRwb2ludHNEYXRhOlB0LHNlbGVjdG9yc0RhdGE6Z3QsdGFibGVzRGF0YTpSdCxleHRlbmRlZERhdGE6ZHR9LG59dmFyIE1jLHVsdCx6byxleD0kKCgpPT57TWM9Y2xhc3N7Y29uc3RydWN0b3IoZSxuLG8scil7dGhpcy5fZGF0YVZpZXc9dm9pZCAwLHRoaXMuX2xpdHRsZUVuZGlhbj12b2lkIDAsdGhpcy5fb2Zmc2V0PXZvaWQgMCx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0K24sbyksdGhpcy5fbGl0dGxlRW5kaWFuPXIsdGhpcy5fb2Zmc2V0PTB9X25leHRVaW50OCgpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQ4KHRoaXMuX29mZnNldCk7cmV0dXJuIHRoaXMuX29mZnNldCs9MSxlfV9uZXh0VWludDE2KCl7bGV0IGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDE2KHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTIsZX1fbmV4dFVpbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLl9vZmZzZXQsdGhpcy5fbGl0dGxlRW5kaWFuKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz00LGV9X25leHRVaW50NjQoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0LHRoaXMuX2xpdHRsZUVuZGlhbiksbj10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0KzQsdGhpcy5fbGl0dGxlRW5kaWFuKSxvPWUrMioqMzIqbjtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz04LG99X25leHRJbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldEludDMyKHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTQsZX1fbmV4dFVpbnQ4QXJyYXkoZSl7bGV0IG49bmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrdGhpcy5fb2Zmc2V0LGUpO3JldHVybiB0aGlzLl9vZmZzZXQrPWUsbn1fc2tpcChlKXtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1lLHRoaXN9X3NjYW4oZSxuPTApe2xldCBvPXRoaXMuX29mZnNldCxyPTA7Zm9yKDt0aGlzLl9kYXRhVmlldy5nZXRVaW50OCh0aGlzLl9vZmZzZXQpIT09biYmcjxlOylyKyssdGhpcy5fb2Zmc2V0Kys7cmV0dXJuIHI8ZSYmdGhpcy5fb2Zmc2V0KyssbmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrbyxyKX19LHVsdD1uZXcgVWludDhBcnJheShbMF0pLHpvPVsxNzEsNzUsODQsODgsMzIsNTAsNDgsMTg3LDEzLDEwLDI2LDEwXX0pO3ZhciBueD1ZbigoYm0sdTEpPT57dmFyIGYxPWZ1bmN0aW9uKCl7dmFyIHQ9dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7cmV0dXJuIHR5cGVvZiBfX2ZpbGVuYW1lPCJ1IiYmKHQ9dHx8X19maWxlbmFtZSksZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10eXBlb2YgZTwidSI/ZTp7fSxvLHI7bi5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihVLEcpe289VSxyPUd9KTt2YXIgaT17fSxzO2ZvcihzIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShzKSYmKGlbc109bltzXSk7dmFyIGY9W10sdT0iLi90aGlzLnByb2dyYW0iLGM9ZnVuY3Rpb24oVSxHKXt0aHJvdyBHfSxsPSExLHA9ITEsZD0hMSxoPSExO2w9dHlwZW9mIHdpbmRvdz09Im9iamVjdCIscD10eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIixkPXR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT0ic3RyaW5nIixoPSFsJiYhZCYmIXA7dmFyIF89IiI7ZnVuY3Rpb24gZyhVKXtyZXR1cm4gbi5sb2NhdGVGaWxlP24ubG9jYXRlRmlsZShVLF8pOl8rVX12YXIgYix3LE8sRSxULHg7ZD8ocD9fPWRyKCJwYXRoIikuZGlybmFtZShfKSsiLyI6Xz1fX2Rpcm5hbWUrIi8iLGI9ZnVuY3Rpb24oRyxYKXtyZXR1cm4gVHx8KFQ9ZHIoImZzIikpLHh8fCh4PWRyKCJwYXRoIikpLEc9eC5ub3JtYWxpemUoRyksVC5yZWFkRmlsZVN5bmMoRyxYP251bGw6InV0ZjgiKX0sTz1mdW5jdGlvbihHKXt2YXIgWD1iKEcsITApO3JldHVybiBYLmJ1ZmZlcnx8KFg9bmV3IFVpbnQ4QXJyYXkoWCkpLEwoWC5idWZmZXIpLFh9LHByb2Nlc3MuYXJndi5sZW5ndGg+MSYmKHU9cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKSksZj1wcm9jZXNzLmFyZ3Yuc2xpY2UoMikscHJvY2Vzcy5vbigidW5jYXVnaHRFeGNlcHRpb24iLGZ1bmN0aW9uKFUpe2lmKCEoVSBpbnN0YW5jZW9mIEVpKSl0aHJvdyBVfSkscHJvY2Vzcy5vbigidW5oYW5kbGVkUmVqZWN0aW9uIixXZSksYz1mdW5jdGlvbihVKXtwcm9jZXNzLmV4aXQoVSl9LG4uaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9KTpoPyh0eXBlb2YgcmVhZDwidSImJihiPWZ1bmN0aW9uKEcpe3JldHVybiByZWFkKEcpfSksTz1mdW5jdGlvbihHKXt2YXIgWDtyZXR1cm4gdHlwZW9mIHJlYWRidWZmZXI9PSJmdW5jdGlvbiI/bmV3IFVpbnQ4QXJyYXkocmVhZGJ1ZmZlcihHKSk6KFg9cmVhZChHLCJiaW5hcnkiKSxMKHR5cGVvZiBYPT0ib2JqZWN0IiksWCl9LHR5cGVvZiBzY3JpcHRBcmdzPCJ1Ij9mPXNjcmlwdEFyZ3M6dHlwZW9mIGFyZ3VtZW50czwidSImJihmPWFyZ3VtZW50cyksdHlwZW9mIHF1aXQ9PSJmdW5jdGlvbiImJihjPWZ1bmN0aW9uKFUpe3F1aXQoVSl9KSx0eXBlb2YgcHJpbnQ8InUiJiYodHlwZW9mIGNvbnNvbGU+InUiJiYoY29uc29sZT17fSksY29uc29sZS5sb2c9cHJpbnQsY29uc29sZS53YXJuPWNvbnNvbGUuZXJyb3I9dHlwZW9mIHByaW50RXJyPCJ1Ij9wcmludEVycjpwcmludCkpOihsfHxwKSYmKHA/Xz1zZWxmLmxvY2F0aW9uLmhyZWY6dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKF89ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihfPXQpLF8uaW5kZXhPZigiYmxvYjoiKSE9PTA/Xz1fLnN1YnN0cigwLF8ubGFzdEluZGV4T2YoIi8iKSsxKTpfPSIiLGI9ZnVuY3Rpb24oVSl7dmFyIEc9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBHLm9wZW4oIkdFVCIsVSwhMSksRy5zZW5kKG51bGwpLEcucmVzcG9uc2VUZXh0fSxwJiYoTz1mdW5jdGlvbihVKXt2YXIgRz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIEcub3BlbigiR0VUIixVLCExKSxHLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLEcuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShHLnJlc3BvbnNlKX0pLHc9ZnVuY3Rpb24oVSxHLFgpe3ZhciBRPW5ldyBYTUxIdHRwUmVxdWVzdDtRLm9wZW4oIkdFVCIsVSwhMCksUS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixRLm9ubG9hZD1mdW5jdGlvbigpe2lmKFEuc3RhdHVzPT0yMDB8fFEuc3RhdHVzPT0wJiZRLnJlc3BvbnNlKXtHKFEucmVzcG9uc2UpO3JldHVybn1YKCl9LFEub25lcnJvcj1YLFEuc2VuZChudWxsKX0sRT1mdW5jdGlvbihVKXtkb2N1bWVudC50aXRsZT1VfSk7dmFyIE09bi5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxOPW4ucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO2ZvcihzIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShzKSYmKG5bc109aVtzXSk7aT1udWxsLG4uYXJndW1lbnRzJiYoZj1uLmFyZ3VtZW50cyksbi50aGlzUHJvZ3JhbSYmKHU9bi50aGlzUHJvZ3JhbSksbi5xdWl0JiYoYz1uLnF1aXQpO3ZhciBGPTAsST1mdW5jdGlvbihVKXtGPVV9LHY7bi53YXNtQmluYXJ5JiYodj1uLndhc21CaW5hcnkpO3ZhciBCPW4ubm9FeGl0UnVudGltZXx8ITA7dHlwZW9mIFdlYkFzc2VtYmx5IT0ib2JqZWN0IiYmV2UoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgQSxTPSExLEM7ZnVuY3Rpb24gTChVLEcpe1V8fFdlKCJBc3NlcnRpb24gZmFpbGVkOiAiK0cpfXZhciB6PXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwO2Z1bmN0aW9uIGooVSxHLFgpe2Zvcih2YXIgUT1HK1gsdXQ9RztVW3V0XSYmISh1dD49USk7KSsrdXQ7aWYodXQtRz4xNiYmVS5zdWJhcnJheSYmeilyZXR1cm4gei5kZWNvZGUoVS5zdWJhcnJheShHLHV0KSk7Zm9yKHZhciBPdD0iIjtHPHV0Oyl7dmFyIFN0PVVbRysrXTtpZighKFN0JjEyOCkpe090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKFN0KTtjb250aW51ZX12YXIgaHQ9VVtHKytdJjYzO2lmKChTdCYyMjQpPT0xOTIpe090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChTdCYzMSk8PDZ8aHQpO2NvbnRpbnVlfXZhciB5dD1VW0crK10mNjM7aWYoKFN0JjI0MCk9PTIyND9TdD0oU3QmMTUpPDwxMnxodDw8Nnx5dDpTdD0oU3QmNyk8PDE4fGh0PDwxMnx5dDw8NnxVW0crK10mNjMsU3Q8NjU1MzYpT3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoU3QpO2Vsc2V7dmFyIHF0PVN0LTY1NTM2O090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fHF0Pj4xMCw1NjMyMHxxdCYxMDIzKX19cmV0dXJuIE90fWZ1bmN0aW9uIGsoVSxHKXtyZXR1cm4gVT9qKHh0LFUsRyk6IiJ9ZnVuY3Rpb24gcShVLEcsWCxRKXtpZighKFE+MCkpcmV0dXJuIDA7Zm9yKHZhciB1dD1YLE90PVgrUS0xLFN0PTA7U3Q8VS5sZW5ndGg7KytTdCl7dmFyIGh0PVUuY2hhckNvZGVBdChTdCk7aWYoaHQ+PTU1Mjk2JiZodDw9NTczNDMpe3ZhciB5dD1VLmNoYXJDb2RlQXQoKytTdCk7aHQ9NjU1MzYrKChodCYxMDIzKTw8MTApfHl0JjEwMjN9aWYoaHQ8PTEyNyl7aWYoWD49T3QpYnJlYWs7R1tYKytdPWh0fWVsc2UgaWYoaHQ8PTIwNDcpe2lmKFgrMT49T3QpYnJlYWs7R1tYKytdPTE5MnxodD4+NixHW1grK109MTI4fGh0JjYzfWVsc2UgaWYoaHQ8PTY1NTM1KXtpZihYKzI+PU90KWJyZWFrO0dbWCsrXT0yMjR8aHQ+PjEyLEdbWCsrXT0xMjh8aHQ+PjYmNjMsR1tYKytdPTEyOHxodCY2M31lbHNle2lmKFgrMz49T3QpYnJlYWs7R1tYKytdPTI0MHxodD4+MTgsR1tYKytdPTEyOHxodD4+MTImNjMsR1tYKytdPTEyOHxodD4+NiY2MyxHW1grK109MTI4fGh0JjYzfX1yZXR1cm4gR1tYXT0wLFgtdXR9ZnVuY3Rpb24gVyhVLEcsWCl7cmV0dXJuIHEoVSx4dCxHLFgpfWZ1bmN0aW9uIFIoVSl7Zm9yKHZhciBHPTAsWD0wO1g8VS5sZW5ndGg7KytYKXt2YXIgUT1VLmNoYXJDb2RlQXQoWCk7UT49NTUyOTYmJlE8PTU3MzQzJiYoUT02NTUzNisoKFEmMTAyMyk8PDEwKXxVLmNoYXJDb2RlQXQoKytYKSYxMDIzKSxRPD0xMjc/KytHOlE8PTIwNDc/Rys9MjpRPD02NTUzNT9HKz0zOkcrPTR9cmV0dXJuIEd9dmFyIG50PXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnZvaWQgMDtmdW5jdGlvbiBhdChVLEcpe2Zvcih2YXIgWD1VLFE9WD4+MSx1dD1RK0cvMjshKFE+PXV0KSYmcGVbUV07KSsrUTtpZihYPVE8PDEsWC1VPjMyJiZudClyZXR1cm4gbnQuZGVjb2RlKHh0LnN1YmFycmF5KFUsWCkpO2Zvcih2YXIgT3Q9IiIsU3Q9MDshKFN0Pj1HLzIpOysrU3Qpe3ZhciBodD1HdFtVK1N0KjI+PjFdO2lmKGh0PT0wKWJyZWFrO090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGh0KX1yZXR1cm4gT3R9ZnVuY3Rpb24gbHQoVSxHLFgpe2lmKFg9PT12b2lkIDAmJihYPTIxNDc0ODM2NDcpLFg8MilyZXR1cm4gMDtYLT0yO2Zvcih2YXIgUT1HLHV0PVg8VS5sZW5ndGgqMj9YLzI6VS5sZW5ndGgsT3Q9MDtPdDx1dDsrK090KXt2YXIgU3Q9VS5jaGFyQ29kZUF0KE90KTtHdFtHPj4xXT1TdCxHKz0yfXJldHVybiBHdFtHPj4xXT0wLEctUX1mdW5jdGlvbiBfdChVKXtyZXR1cm4gVS5sZW5ndGgqMn1mdW5jdGlvbiBvdChVLEcpe2Zvcih2YXIgWD0wLFE9IiI7IShYPj1HLzQpOyl7dmFyIHV0PXJlW1UrWCo0Pj4yXTtpZih1dD09MClicmVhaztpZigrK1gsdXQ+PTY1NTM2KXt2YXIgT3Q9dXQtNjU1MzY7USs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxPdD4+MTAsNTYzMjB8T3QmMTAyMyl9ZWxzZSBRKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHV0KX1yZXR1cm4gUX1mdW5jdGlvbiBQdChVLEcsWCl7aWYoWD09PXZvaWQgMCYmKFg9MjE0NzQ4MzY0NyksWDw0KXJldHVybiAwO2Zvcih2YXIgUT1HLHV0PVErWC00LE90PTA7T3Q8VS5sZW5ndGg7KytPdCl7dmFyIFN0PVUuY2hhckNvZGVBdChPdCk7aWYoU3Q+PTU1Mjk2JiZTdDw9NTczNDMpe3ZhciBodD1VLmNoYXJDb2RlQXQoKytPdCk7U3Q9NjU1MzYrKChTdCYxMDIzKTw8MTApfGh0JjEwMjN9aWYocmVbRz4+Ml09U3QsRys9NCxHKzQ+dXQpYnJlYWt9cmV0dXJuIHJlW0c+PjJdPTAsRy1RfWZ1bmN0aW9uIGd0KFUpe2Zvcih2YXIgRz0wLFg9MDtYPFUubGVuZ3RoOysrWCl7dmFyIFE9VS5jaGFyQ29kZUF0KFgpO1E+PTU1Mjk2JiZRPD01NzM0MyYmKytYLEcrPTR9cmV0dXJuIEd9ZnVuY3Rpb24gUnQoVSxHKXtyZXR1cm4gVSVHPjAmJihVKz1HLVUlRyksVX12YXIgZHQscnQseHQsR3QscGUscmUsZGUsZmUsWnQ7ZnVuY3Rpb24gUXQoVSl7ZHQ9VSxuLkhFQVA4PXJ0PW5ldyBJbnQ4QXJyYXkoVSksbi5IRUFQMTY9R3Q9bmV3IEludDE2QXJyYXkoVSksbi5IRUFQMzI9cmU9bmV3IEludDMyQXJyYXkoVSksbi5IRUFQVTg9eHQ9bmV3IFVpbnQ4QXJyYXkoVSksbi5IRUFQVTE2PXBlPW5ldyBVaW50MTZBcnJheShVKSxuLkhFQVBVMzI9ZGU9bmV3IFVpbnQzMkFycmF5KFUpLG4uSEVBUEYzMj1mZT1uZXcgRmxvYXQzMkFycmF5KFUpLG4uSEVBUEY2ND1adD1uZXcgRmxvYXQ2NEFycmF5KFUpfXZhciBOZT1uLklOSVRJQUxfTUVNT1JZfHwxNjc3NzIxNixnZSxFZT1bXSx1bj1bXSxWZT1bXSxiZT1bXSxsbj0hMTtmdW5jdGlvbiBwbigpe2lmKG4ucHJlUnVuKWZvcih0eXBlb2Ygbi5wcmVSdW49PSJmdW5jdGlvbiImJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KXplKG4ucHJlUnVuLnNoaWZ0KCkpO0hvKEVlKX1mdW5jdGlvbiBFbigpe2xuPSEwLEhvKHVuKX1mdW5jdGlvbiBvZSgpe0hvKFZlKX1mdW5jdGlvbiBZdCgpe2lmKG4ucG9zdFJ1bilmb3IodHlwZW9mIG4ucG9zdFJ1bj09ImZ1bmN0aW9uIiYmKG4ucG9zdFJ1bj1bbi5wb3N0UnVuXSk7bi5wb3N0UnVuLmxlbmd0aDspc24obi5wb3N0UnVuLnNoaWZ0KCkpO0hvKGJlKX1mdW5jdGlvbiB6ZShVKXtFZS51bnNoaWZ0KFUpfWZ1bmN0aW9uIGRuKFUpe3VuLnVuc2hpZnQoVSl9ZnVuY3Rpb24gc24oVSl7YmUudW5zaGlmdChVKX12YXIgbW49MCxsbz1udWxsLHFuPW51bGw7ZnVuY3Rpb24gUWUoVSl7bW4rKyxuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhtbil9ZnVuY3Rpb24gY24oVSl7aWYobW4tLSxuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhtbiksbW49PTAmJihsbyE9PW51bGwmJihjbGVhckludGVydmFsKGxvKSxsbz1udWxsKSxxbikpe3ZhciBHPXFuO3FuPW51bGwsRygpfX1uLnByZWxvYWRlZEltYWdlcz17fSxuLnByZWxvYWRlZEF1ZGlvcz17fTtmdW5jdGlvbiBXZShVKXtuLm9uQWJvcnQmJm4ub25BYm9ydChVKSxVKz0iIixOKFUpLFM9ITAsQz0xLFU9ImFib3J0KCIrVSsiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iO3ZhciBHPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoVSk7dGhyb3cgcihHKSxHfWZ1bmN0aW9uIGhuKFUsRyl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aD9VLnN0YXJ0c1dpdGgoRyk6VS5pbmRleE9mKEcpPT09MH12YXIgcG89ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIEtuKFUpe3JldHVybiBobihVLHBvKX12YXIgV249ImZpbGU6Ly8iO2Z1bmN0aW9uIG1vKFUpe3JldHVybiBobihVLFduKX12YXIgamU9ImJhc2lzX3RyYW5zY29kZXIud2FzbSI7S24oamUpfHwoamU9ZyhqZSkpO2Z1bmN0aW9uIEZlKFUpe3RyeXtpZihVPT1qZSYmdilyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodik7aWYoTylyZXR1cm4gTyhVKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9Y2F0Y2goRyl7V2UoRyl9fWZ1bmN0aW9uIERuKCl7aWYoIXYmJihsfHxwKSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhbW8oamUpKXJldHVybiBmZXRjaChqZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oVSl7aWYoIVUub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitqZSsiJyI7cmV0dXJuIFUuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIEZlKGplKX0pO2lmKHcpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFUsRyl7dyhqZSxmdW5jdGlvbihYKXtVKG5ldyBVaW50OEFycmF5KFgpKX0sRyl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBGZShqZSl9KX1mdW5jdGlvbiBYbigpe3ZhciBVPXthOmtsfTtmdW5jdGlvbiBHKFN0LGh0KXt2YXIgeXQ9U3QuZXhwb3J0cztuLmFzbT15dCxBPW4uYXNtLkssUXQoQS5idWZmZXIpLGdlPW4uYXNtLk8sZG4obi5hc20uTCksY24oIndhc20taW5zdGFudGlhdGUiKX1RZSgid2FzbS1pbnN0YW50aWF0ZSIpO2Z1bmN0aW9uIFgoU3Qpe0coU3QuaW5zdGFuY2UpfWZ1bmN0aW9uIFEoU3Qpe3JldHVybiBEbigpLnRoZW4oZnVuY3Rpb24oaHQpe3ZhciB5dD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShodCxVKTtyZXR1cm4geXR9KS50aGVuKFN0LGZ1bmN0aW9uKGh0KXtOKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK2h0KSxXZShodCl9KX1mdW5jdGlvbiB1dCgpe3JldHVybiF2JiZ0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiImJiFLbihqZSkmJiFtbyhqZSkmJnR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIj9mZXRjaChqZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oU3Qpe3ZhciBodD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhTdCxVKTtyZXR1cm4gaHQudGhlbihYLGZ1bmN0aW9uKHl0KXtyZXR1cm4gTigid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIreXQpLE4oImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksUShYKX0pfSk6UShYKX1pZihuLmluc3RhbnRpYXRlV2FzbSl0cnl7dmFyIE90PW4uaW5zdGFudGlhdGVXYXNtKFUsRyk7cmV0dXJuIE90fWNhdGNoKFN0KXtyZXR1cm4gTigiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitTdCksITF9cmV0dXJuIHV0KCkuY2F0Y2gocikse319ZnVuY3Rpb24gSG8oVSl7Zm9yKDtVLmxlbmd0aD4wOyl7dmFyIEc9VS5zaGlmdCgpO2lmKHR5cGVvZiBHPT0iZnVuY3Rpb24iKXtHKG4pO2NvbnRpbnVlfXZhciBYPUcuZnVuYzt0eXBlb2YgWD09Im51bWJlciI/Ry5hcmc9PT12b2lkIDA/Z2UuZ2V0KFgpKCk6Z2UuZ2V0KFgpKEcuYXJnKTpYKEcuYXJnPT09dm9pZCAwP251bGw6Ry5hcmcpfX12YXIgcm49e307ZnVuY3Rpb24gUm4oVSl7Zm9yKDtVLmxlbmd0aDspe3ZhciBHPVUucG9wKCksWD1VLnBvcCgpO1goRyl9fWZ1bmN0aW9uIGZyKFUpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShkZVtVPj4yXSl9dmFyIHRvPXt9LHFvPXt9LElyPXt9LElzPTQ4LHZzPTU3O2Z1bmN0aW9uICRpKFUpe2lmKFU9PT12b2lkIDApcmV0dXJuIl91bmtub3duIjtVPVUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCIkIik7dmFyIEc9VS5jaGFyQ29kZUF0KDApO3JldHVybiBHPj1JcyYmRzw9dnM/Il8iK1U6VX1mdW5jdGlvbiB2cihVLEcpe3JldHVybiBVPSRpKFUpLG5ldyBGdW5jdGlvbigiYm9keSIsInJldHVybiBmdW5jdGlvbiAiK1UrYCgpIHsKICAgICJ1c2Ugc3RyaWN0IjsgICAgcmV0dXJuIGJvZHkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKYCkoRyl9ZnVuY3Rpb24gWmkoVSxHKXt2YXIgWD12cihHLGZ1bmN0aW9uKFEpe3RoaXMubmFtZT1HLHRoaXMubWVzc2FnZT1RO3ZhciB1dD1uZXcgRXJyb3IoUSkuc3RhY2s7dXQhPT12b2lkIDAmJih0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKStgCmArdXQucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIikpfSk7cmV0dXJuIFgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVS5wcm90b3R5cGUpLFgucHJvdG90eXBlLmNvbnN0cnVjdG9yPVgsWC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlPT09dm9pZCAwP3RoaXMubmFtZTp0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9LFh9dmFyIEZzPXZvaWQgMDtmdW5jdGlvbiB3aShVKXt0aHJvdyBuZXcgRnMoVSl9ZnVuY3Rpb24gc28oVSxHLFgpe1UuZm9yRWFjaChmdW5jdGlvbihodCl7SXJbaHRdPUd9KTtmdW5jdGlvbiBRKGh0KXt2YXIgeXQ9WChodCk7eXQubGVuZ3RoIT09VS5sZW5ndGgmJndpKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7Zm9yKHZhciBxdD0wO3F0PFUubGVuZ3RoOysrcXQpcnIoVVtxdF0seXRbcXRdKX12YXIgdXQ9bmV3IEFycmF5KEcubGVuZ3RoKSxPdD1bXSxTdD0wO0cuZm9yRWFjaChmdW5jdGlvbihodCx5dCl7cW8uaGFzT3duUHJvcGVydHkoaHQpP3V0W3l0XT1xb1todF06KE90LnB1c2goaHQpLHRvLmhhc093blByb3BlcnR5KGh0KXx8KHRvW2h0XT1bXSksdG9baHRdLnB1c2goZnVuY3Rpb24oKXt1dFt5dF09cW9baHRdLCsrU3QsU3Q9PT1PdC5sZW5ndGgmJlEodXQpfSkpfSksT3QubGVuZ3RoPT09MCYmUSh1dCl9ZnVuY3Rpb24gaG8oVSl7dmFyIEc9cm5bVV07ZGVsZXRlIHJuW1VdO3ZhciBYPUcucmF3Q29uc3RydWN0b3IsUT1HLnJhd0Rlc3RydWN0b3IsdXQ9Ry5maWVsZHMsT3Q9dXQubWFwKGZ1bmN0aW9uKFN0KXtyZXR1cm4gU3QuZ2V0dGVyUmV0dXJuVHlwZX0pLmNvbmNhdCh1dC5tYXAoZnVuY3Rpb24oU3Qpe3JldHVybiBTdC5zZXR0ZXJBcmd1bWVudFR5cGV9KSk7c28oW1VdLE90LGZ1bmN0aW9uKFN0KXt2YXIgaHQ9e307cmV0dXJuIHV0LmZvckVhY2goZnVuY3Rpb24oeXQscXQpe3ZhciBKdD15dC5maWVsZE5hbWUsVGU9U3RbcXRdLEplPXl0LmdldHRlcixibj15dC5nZXR0ZXJDb250ZXh0LGNvPVN0W3F0K3V0Lmxlbmd0aF0sRm89eXQuc2V0dGVyLHByPXl0LnNldHRlckNvbnRleHQ7aHRbSnRdPXtyZWFkOmZ1bmN0aW9uKFFyKXtyZXR1cm4gVGUuZnJvbVdpcmVUeXBlKEplKGJuLFFyKSl9LHdyaXRlOmZ1bmN0aW9uKFFyLHJmKXt2YXIgUmk9W107Rm8ocHIsUXIsY28udG9XaXJlVHlwZShSaSxyZikpLFJuKFJpKX19fSksW3tuYW1lOkcubmFtZSxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oeXQpe3ZhciBxdD17fTtmb3IodmFyIEp0IGluIGh0KXF0W0p0XT1odFtKdF0ucmVhZCh5dCk7cmV0dXJuIFEoeXQpLHF0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKHl0LHF0KXtmb3IodmFyIEp0IGluIGh0KWlmKCEoSnQgaW4gcXQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ01pc3NpbmcgZmllbGQ6ICAiJytKdCsnIicpO3ZhciBUZT1YKCk7Zm9yKEp0IGluIGh0KWh0W0p0XS53cml0ZShUZSxxdFtKdF0pO3JldHVybiB5dCE9PW51bGwmJnl0LnB1c2goUSxUZSksVGV9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6ZnIsZGVzdHJ1Y3RvckZ1bmN0aW9uOlF9XX0pfWZ1bmN0aW9uIEZyKFUpe3N3aXRjaChVKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIHR5cGUgc2l6ZTogIitVKX19ZnVuY3Rpb24gTmMoKXtmb3IodmFyIFU9bmV3IEFycmF5KDI1NiksRz0wO0c8MjU2OysrRylVW0ddPVN0cmluZy5mcm9tQ2hhckNvZGUoRyk7SWM9VX12YXIgSWM9dm9pZCAwO2Z1bmN0aW9uIEJuKFUpe2Zvcih2YXIgRz0iIixYPVU7eHRbWF07KUcrPUljW3h0W1grK11dO3JldHVybiBHfXZhciBUaT12b2lkIDA7ZnVuY3Rpb24gTGUoVSl7dGhyb3cgbmV3IFRpKFUpfWZ1bmN0aW9uIHJyKFUsRyxYKXtpZihYPVh8fHt9LCEoImFyZ1BhY2tBZHZhbmNlImluIEcpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKTt2YXIgUT1HLm5hbWU7aWYoVXx8TGUoJ3R5cGUgIicrUSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJykscW8uaGFzT3duUHJvcGVydHkoVSkpe2lmKFguaWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9ucylyZXR1cm47TGUoIkNhbm5vdCByZWdpc3RlciB0eXBlICciK1ErIicgdHdpY2UiKX1pZihxb1tVXT1HLGRlbGV0ZSBJcltVXSx0by5oYXNPd25Qcm9wZXJ0eShVKSl7dmFyIHV0PXRvW1VdO2RlbGV0ZSB0b1tVXSx1dC5mb3JFYWNoKGZ1bmN0aW9uKE90KXtPdCgpfSl9fWZ1bmN0aW9uIFR1KFUsRyxYLFEsdXQpe3ZhciBPdD1GcihYKTtHPUJuKEcpLHJyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oU3Qpe3JldHVybiEhU3R9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oU3QsaHQpe3JldHVybiBodD9ROnV0fSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZ1bmN0aW9uKFN0KXt2YXIgaHQ7aWYoWD09PTEpaHQ9cnQ7ZWxzZSBpZihYPT09MilodD1HdDtlbHNlIGlmKFg9PT00KWh0PXJlO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBib29sZWFuIHR5cGUgc2l6ZTogIitHKTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoaHRbU3Q+Pk90XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gT3UoVSl7aWYoISh0aGlzIGluc3RhbmNlb2YgTHIpfHwhKFUgaW5zdGFuY2VvZiBMcikpcmV0dXJuITE7Zm9yKHZhciBHPXRoaXMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsWD10aGlzLiQkLnB0cixRPVUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsdXQ9VS4kJC5wdHI7Ry5iYXNlQ2xhc3M7KVg9Ry51cGNhc3QoWCksRz1HLmJhc2VDbGFzcztmb3IoO1EuYmFzZUNsYXNzOyl1dD1RLnVwY2FzdCh1dCksUT1RLmJhc2VDbGFzcztyZXR1cm4gRz09PVEmJlg9PT11dH1mdW5jdGlvbiBFdShVKXtyZXR1cm57Y291bnQ6VS5jb3VudCxkZWxldGVTY2hlZHVsZWQ6VS5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6VS5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6VS5wdHIscHRyVHlwZTpVLnB0clR5cGUsc21hcnRQdHI6VS5zbWFydFB0cixzbWFydFB0clR5cGU6VS5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIHZjKFUpe2Z1bmN0aW9uIEcoWCl7cmV0dXJuIFguJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZX1MZShHKFUpKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIil9dmFyIEZjPSExO2Z1bmN0aW9uIHFhKFUpe31mdW5jdGlvbiBSdShVKXtVLnNtYXJ0UHRyP1Uuc21hcnRQdHJUeXBlLnJhd0Rlc3RydWN0b3IoVS5zbWFydFB0cik6VS5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5yYXdEZXN0cnVjdG9yKFUucHRyKX1mdW5jdGlvbiBLYShVKXtVLmNvdW50LnZhbHVlLT0xO3ZhciBHPVUuY291bnQudmFsdWU9PT0wO0cmJlJ1KFUpfWZ1bmN0aW9uIFFpKFUpe3JldHVybiB0eXBlb2YgRmluYWxpemF0aW9uR3JvdXA+InUiPyhRaT1mdW5jdGlvbihHKXtyZXR1cm4gR30sVSk6KEZjPW5ldyBGaW5hbGl6YXRpb25Hcm91cChmdW5jdGlvbihHKXtmb3IodmFyIFg9Ry5uZXh0KCk7IVguZG9uZTtYPUcubmV4dCgpKXt2YXIgUT1YLnZhbHVlO1EucHRyP0thKFEpOmNvbnNvbGUud2Fybigib2JqZWN0IGFscmVhZHkgZGVsZXRlZDogIitRLnB0cil9fSksUWk9ZnVuY3Rpb24oRyl7cmV0dXJuIEZjLnJlZ2lzdGVyKEcsRy4kJCxHLiQkKSxHfSxxYT1mdW5jdGlvbihHKXtGYy51bnJlZ2lzdGVyKEcuJCQpfSxRaShVKSl9ZnVuY3Rpb24gU3UoKXtpZih0aGlzLiQkLnB0cnx8dmModGhpcyksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSlyZXR1cm4gdGhpcy4kJC5jb3VudC52YWx1ZSs9MSx0aGlzO3ZhciBVPVFpKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6RXUodGhpcy4kJCl9fSkpO3JldHVybiBVLiQkLmNvdW50LnZhbHVlKz0xLFUuJCQuZGVsZXRlU2NoZWR1bGVkPSExLFV9ZnVuY3Rpb24geHUoKXt0aGlzLiQkLnB0cnx8dmModGhpcyksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlJiZMZSgiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpLHFhKHRoaXMpLEthKHRoaXMuJCQpLHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGV8fCh0aGlzLiQkLnNtYXJ0UHRyPXZvaWQgMCx0aGlzLiQkLnB0cj12b2lkIDApfWZ1bmN0aW9uIEN1KCl7cmV0dXJuIXRoaXMuJCQucHRyfXZhciBKaT12b2lkIDAsdHM9W107ZnVuY3Rpb24gTGMoKXtmb3IoO3RzLmxlbmd0aDspe3ZhciBVPXRzLnBvcCgpO1UuJCQuZGVsZXRlU2NoZWR1bGVkPSExLFUuZGVsZXRlKCl9fWZ1bmN0aW9uIFB1KCl7cmV0dXJuIHRoaXMuJCQucHRyfHx2Yyh0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJkxlKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksdHMucHVzaCh0aGlzKSx0cy5sZW5ndGg9PT0xJiZKaSYmSmkoTGMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkPSEwLHRoaXN9ZnVuY3Rpb24gTXUoKXtMci5wcm90b3R5cGUuaXNBbGlhc09mPU91LExyLnByb3RvdHlwZS5jbG9uZT1TdSxMci5wcm90b3R5cGUuZGVsZXRlPXh1LExyLnByb3RvdHlwZS5pc0RlbGV0ZWQ9Q3UsTHIucHJvdG90eXBlLmRlbGV0ZUxhdGVyPVB1fWZ1bmN0aW9uIExyKCl7fXZhciBXYT17fTtmdW5jdGlvbiBYYShVLEcsWCl7aWYoVVtHXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwKXt2YXIgUT1VW0ddO1VbR109ZnVuY3Rpb24oKXtyZXR1cm4gVVtHXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpfHxMZSgiRnVuY3Rpb24gJyIrWCsiJyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdHMgb25lIG9mICgiK1VbR10ub3ZlcmxvYWRUYWJsZSsiKSEiKSxVW0ddLm92ZXJsb2FkVGFibGVbYXJndW1lbnRzLmxlbmd0aF0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxVW0ddLm92ZXJsb2FkVGFibGU9W10sVVtHXS5vdmVybG9hZFRhYmxlW1EuYXJnQ291bnRdPVF9fWZ1bmN0aW9uIERjKFUsRyxYKXtuLmhhc093blByb3BlcnR5KFUpPygoWD09PXZvaWQgMHx8bltVXS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZuW1VdLm92ZXJsb2FkVGFibGVbWF0hPT12b2lkIDApJiZMZSgiQ2Fubm90IHJlZ2lzdGVyIHB1YmxpYyBuYW1lICciK1UrIicgdHdpY2UiKSxYYShuLFUsVSksbi5oYXNPd25Qcm9wZXJ0eShYKSYmTGUoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrWCsiKSEiKSxuW1VdLm92ZXJsb2FkVGFibGVbWF09Ryk6KG5bVV09RyxYIT09dm9pZCAwJiYobltVXS5udW1Bcmd1bWVudHM9WCkpfWZ1bmN0aW9uIE51KFUsRyxYLFEsdXQsT3QsU3QsaHQpe3RoaXMubmFtZT1VLHRoaXMuY29uc3RydWN0b3I9Ryx0aGlzLmluc3RhbmNlUHJvdG90eXBlPVgsdGhpcy5yYXdEZXN0cnVjdG9yPVEsdGhpcy5iYXNlQ2xhc3M9dXQsdGhpcy5nZXRBY3R1YWxUeXBlPU90LHRoaXMudXBjYXN0PVN0LHRoaXMuZG93bmNhc3Q9aHQsdGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBCYyhVLEcsWCl7Zm9yKDtHIT09WDspRy51cGNhc3R8fExlKCJFeHBlY3RlZCBudWxsIG9yIGluc3RhbmNlIG9mICIrWC5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK0cubmFtZSksVT1HLnVwY2FzdChVKSxHPUcuYmFzZUNsYXNzO3JldHVybiBVfWZ1bmN0aW9uIEl1KFUsRyl7aWYoRz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJkxlKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO0cuJCR8fExlKCdDYW5ub3QgcGFzcyAiJytPaShHKSsnIiBhcyBhICcrdGhpcy5uYW1lKSxHLiQkLnB0cnx8TGUoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt2YXIgWD1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFE9QmMoRy4kJC5wdHIsWCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFF9ZnVuY3Rpb24gdnUoVSxHKXt2YXIgWDtpZihHPT09bnVsbClyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmTGUoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpLHRoaXMuaXNTbWFydFBvaW50ZXI/KFg9dGhpcy5yYXdDb25zdHJ1Y3RvcigpLFUhPT1udWxsJiZVLnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFgpLFgpOjA7Ry4kJHx8TGUoJ0Nhbm5vdCBwYXNzICInK09pKEcpKyciIGFzIGEgJyt0aGlzLm5hbWUpLEcuJCQucHRyfHxMZSgiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpLCF0aGlzLmlzQ29uc3QmJkcuJCQucHRyVHlwZS5pc0NvbnN0JiZMZSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhHLiQkLnNtYXJ0UHRyVHlwZT9HLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOkcuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgUT1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO2lmKFg9QmMoRy4kJC5wdHIsUSx0aGlzLnJlZ2lzdGVyZWRDbGFzcyksdGhpcy5pc1NtYXJ0UG9pbnRlcilzd2l0Y2goRy4kJC5zbWFydFB0cj09PXZvaWQgMCYmTGUoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIiksdGhpcy5zaGFyaW5nUG9saWN5KXtjYXNlIDA6Ry4kJC5zbWFydFB0clR5cGU9PT10aGlzP1g9Ry4kJC5zbWFydFB0cjpMZSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhHLiQkLnNtYXJ0UHRyVHlwZT9HLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOkcuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTticmVhaztjYXNlIDE6WD1HLiQkLnNtYXJ0UHRyO2JyZWFrO2Nhc2UgMjppZihHLiQkLnNtYXJ0UHRyVHlwZT09PXRoaXMpWD1HLiQkLnNtYXJ0UHRyO2Vsc2V7dmFyIHV0PUcuY2xvbmUoKTtYPXRoaXMucmF3U2hhcmUoWCxscihmdW5jdGlvbigpe3V0LmRlbGV0ZSgpfSkpLFUhPT1udWxsJiZVLnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFgpfWJyZWFrO2RlZmF1bHQ6TGUoIlVuc3VwcG9ydGluZyBzaGFyaW5nIHBvbGljeSIpfXJldHVybiBYfWZ1bmN0aW9uIEZ1KFUsRyl7aWYoRz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJkxlKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO0cuJCR8fExlKCdDYW5ub3QgcGFzcyAiJytPaShHKSsnIiBhcyBhICcrdGhpcy5uYW1lKSxHLiQkLnB0cnx8TGUoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKSxHLiQkLnB0clR5cGUuaXNDb25zdCYmTGUoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitHLiQkLnB0clR5cGUubmFtZSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgWD1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFE9QmMoRy4kJC5wdHIsWCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFF9ZnVuY3Rpb24gTHUoVSl7cmV0dXJuIHRoaXMucmF3R2V0UG9pbnRlZSYmKFU9dGhpcy5yYXdHZXRQb2ludGVlKFUpKSxVfWZ1bmN0aW9uIER1KFUpe3RoaXMucmF3RGVzdHJ1Y3RvciYmdGhpcy5yYXdEZXN0cnVjdG9yKFUpfWZ1bmN0aW9uIEJ1KFUpe1UhPT1udWxsJiZVLmRlbGV0ZSgpfWZ1bmN0aW9uIFlhKFUsRyxYKXtpZihHPT09WClyZXR1cm4gVTtpZihYLmJhc2VDbGFzcz09PXZvaWQgMClyZXR1cm4gbnVsbDt2YXIgUT1ZYShVLEcsWC5iYXNlQ2xhc3MpO3JldHVybiBRPT09bnVsbD9udWxsOlguZG93bmNhc3QoUSl9ZnVuY3Rpb24gVXUoKXtyZXR1cm4gT2JqZWN0LmtleXMoZXMpLmxlbmd0aH1mdW5jdGlvbiBrdSgpe3ZhciBVPVtdO2Zvcih2YXIgRyBpbiBlcyllcy5oYXNPd25Qcm9wZXJ0eShHKSYmVS5wdXNoKGVzW0ddKTtyZXR1cm4gVX1mdW5jdGlvbiBHdShVKXtKaT1VLHRzLmxlbmd0aCYmSmkmJkppKExjKX1mdW5jdGlvbiBWdSgpe24uZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudD1VdSxuLmdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM9a3Usbi5mbHVzaFBlbmRpbmdEZWxldGVzPUxjLG4uc2V0RGVsYXlGdW5jdGlvbj1HdX12YXIgZXM9e307ZnVuY3Rpb24genUoVSxHKXtmb3IoRz09PXZvaWQgMCYmTGUoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpO1UuYmFzZUNsYXNzOylHPVUudXBjYXN0KEcpLFU9VS5iYXNlQ2xhc3M7cmV0dXJuIEd9ZnVuY3Rpb24ganUoVSxHKXtyZXR1cm4gRz16dShVLEcpLGVzW0ddfWZ1bmN0aW9uIExzKFUsRyl7KCFHLnB0clR5cGV8fCFHLnB0cikmJndpKCJtYWtlQ2xhc3NIYW5kbGUgcmVxdWlyZXMgcHRyIGFuZCBwdHJUeXBlIik7dmFyIFg9ISFHLnNtYXJ0UHRyVHlwZSxRPSEhRy5zbWFydFB0cjtyZXR1cm4gWCE9PVEmJndpKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKSxHLmNvdW50PXt2YWx1ZToxfSxRaShPYmplY3QuY3JlYXRlKFUseyQkOnt2YWx1ZTpHfX0pKX1mdW5jdGlvbiBIdShVKXt2YXIgRz10aGlzLmdldFBvaW50ZWUoVSk7aWYoIUcpcmV0dXJuIHRoaXMuZGVzdHJ1Y3RvcihVKSxudWxsO3ZhciBYPWp1KHRoaXMucmVnaXN0ZXJlZENsYXNzLEcpO2lmKFghPT12b2lkIDApe2lmKFguJCQuY291bnQudmFsdWU9PT0wKXJldHVybiBYLiQkLnB0cj1HLFguJCQuc21hcnRQdHI9VSxYLmNsb25lKCk7dmFyIFE9WC5jbG9uZSgpO3JldHVybiB0aGlzLmRlc3RydWN0b3IoVSksUX1mdW5jdGlvbiB1dCgpe3JldHVybiB0aGlzLmlzU21hcnRQb2ludGVyP0xzKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOkcsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6VX0pOkxzKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOlV9KX12YXIgT3Q9dGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShHKSxTdD1XYVtPdF07aWYoIVN0KXJldHVybiB1dC5jYWxsKHRoaXMpO3ZhciBodDt0aGlzLmlzQ29uc3Q/aHQ9U3QuY29uc3RQb2ludGVyVHlwZTpodD1TdC5wb2ludGVyVHlwZTt2YXIgeXQ9WWEoRyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyxodC5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiB5dD09PW51bGw/dXQuY2FsbCh0aGlzKTp0aGlzLmlzU21hcnRQb2ludGVyP0xzKGh0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTpodCxwdHI6eXQsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6VX0pOkxzKGh0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTpodCxwdHI6eXR9KX1mdW5jdGlvbiBxdSgpe3VyLnByb3RvdHlwZS5nZXRQb2ludGVlPUx1LHVyLnByb3RvdHlwZS5kZXN0cnVjdG9yPUR1LHVyLnByb3RvdHlwZS5hcmdQYWNrQWR2YW5jZT04LHVyLnByb3RvdHlwZS5yZWFkVmFsdWVGcm9tUG9pbnRlcj1mcix1ci5wcm90b3R5cGUuZGVsZXRlT2JqZWN0PUJ1LHVyLnByb3RvdHlwZS5mcm9tV2lyZVR5cGU9SHV9ZnVuY3Rpb24gdXIoVSxHLFgsUSx1dCxPdCxTdCxodCx5dCxxdCxKdCl7dGhpcy5uYW1lPVUsdGhpcy5yZWdpc3RlcmVkQ2xhc3M9Ryx0aGlzLmlzUmVmZXJlbmNlPVgsdGhpcy5pc0NvbnN0PVEsdGhpcy5pc1NtYXJ0UG9pbnRlcj11dCx0aGlzLnBvaW50ZWVUeXBlPU90LHRoaXMuc2hhcmluZ1BvbGljeT1TdCx0aGlzLnJhd0dldFBvaW50ZWU9aHQsdGhpcy5yYXdDb25zdHJ1Y3Rvcj15dCx0aGlzLnJhd1NoYXJlPXF0LHRoaXMucmF3RGVzdHJ1Y3Rvcj1KdCwhdXQmJkcuYmFzZUNsYXNzPT09dm9pZCAwP1E/KHRoaXMudG9XaXJlVHlwZT1JdSx0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsKToodGhpcy50b1dpcmVUeXBlPUZ1LHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGwpOnRoaXMudG9XaXJlVHlwZT12dX1mdW5jdGlvbiAkYShVLEcsWCl7bi5oYXNPd25Qcm9wZXJ0eShVKXx8d2koIlJlcGxhY2luZyBub25leGlzdGFudCBwdWJsaWMgc3ltYm9sIiksbltVXS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZYIT09dm9pZCAwP25bVV0ub3ZlcmxvYWRUYWJsZVtYXT1HOihuW1VdPUcsbltVXS5hcmdDb3VudD1YKX1mdW5jdGlvbiBLdShVLEcsWCl7dmFyIFE9blsiZHluQ2FsbF8iK1VdO3JldHVybiBYJiZYLmxlbmd0aD9RLmFwcGx5KG51bGwsW0ddLmNvbmNhdChYKSk6US5jYWxsKG51bGwsRyl9ZnVuY3Rpb24gV3UoVSxHLFgpe3JldHVybiBVLmluZGV4T2YoImoiKSE9LTE/S3UoVSxHLFgpOmdlLmdldChHKS5hcHBseShudWxsLFgpfWZ1bmN0aW9uIFh1KFUsRyl7dmFyIFg9W107cmV0dXJuIGZ1bmN0aW9uKCl7WC5sZW5ndGg9YXJndW1lbnRzLmxlbmd0aDtmb3IodmFyIFE9MDtRPGFyZ3VtZW50cy5sZW5ndGg7USsrKVhbUV09YXJndW1lbnRzW1FdO3JldHVybiBXdShVLEcsWCl9fWZ1bmN0aW9uIEtvKFUsRyl7VT1CbihVKTtmdW5jdGlvbiBYKCl7cmV0dXJuIFUuaW5kZXhPZigiaiIpIT0tMT9YdShVLEcpOmdlLmdldChHKX12YXIgUT1YKCk7cmV0dXJuIHR5cGVvZiBRIT0iZnVuY3Rpb24iJiZMZSgidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrVSsiOiAiK0cpLFF9dmFyIFphPXZvaWQgMDtmdW5jdGlvbiBRYShVKXt2YXIgRz10dChVKSxYPUJuKEcpO3JldHVybiBLKEcpLFh9ZnVuY3Rpb24gRHMoVSxHKXt2YXIgWD1bXSxRPXt9O2Z1bmN0aW9uIHV0KE90KXtpZighUVtPdF0mJiFxb1tPdF0pe2lmKElyW090XSl7SXJbT3RdLmZvckVhY2godXQpO3JldHVybn1YLnB1c2goT3QpLFFbT3RdPSEwfX10aHJvdyBHLmZvckVhY2godXQpLG5ldyBaYShVKyI6ICIrWC5tYXAoUWEpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gWXUoVSxHLFgsUSx1dCxPdCxTdCxodCx5dCxxdCxKdCxUZSxKZSl7SnQ9Qm4oSnQpLE90PUtvKHV0LE90KSxodCYmKGh0PUtvKFN0LGh0KSkscXQmJihxdD1Lbyh5dCxxdCkpLEplPUtvKFRlLEplKTt2YXIgYm49JGkoSnQpO0RjKGJuLGZ1bmN0aW9uKCl7RHMoIkNhbm5vdCBjb25zdHJ1Y3QgIitKdCsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbUV0pfSksc28oW1UsRyxYXSxRP1tRXTpbXSxmdW5jdGlvbihjbyl7Y289Y29bMF07dmFyIEZvLHByO1E/KEZvPWNvLnJlZ2lzdGVyZWRDbGFzcyxwcj1Gby5pbnN0YW5jZVByb3RvdHlwZSk6cHI9THIucHJvdG90eXBlO3ZhciBRcj12cihibixmdW5jdGlvbigpe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSE9PXJmKXRocm93IG5ldyBUaSgiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK0p0KTtpZihSaS5jb25zdHJ1Y3Rvcl9ib2R5PT09dm9pZCAwKXRocm93IG5ldyBUaShKdCsiIGhhcyBubyBhY2Nlc3NpYmxlIGNvbnN0cnVjdG9yIik7dmFyIHcxPVJpLmNvbnN0cnVjdG9yX2JvZHlbYXJndW1lbnRzLmxlbmd0aF07aWYodzE9PT12b2lkIDApdGhyb3cgbmV3IFRpKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK0p0KyIgd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RlZCAoIitPYmplY3Qua2V5cyhSaS5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKTtyZXR1cm4gdzEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkscmY9T2JqZWN0LmNyZWF0ZShwcix7Y29uc3RydWN0b3I6e3ZhbHVlOlFyfX0pO1FyLnByb3RvdHlwZT1yZjt2YXIgUmk9bmV3IE51KEp0LFFyLHJmLEplLEZvLE90LGh0LHF0KSxweD1uZXcgdXIoSnQsUmksITAsITEsITEpLEExPW5ldyB1cihKdCsiKiIsUmksITEsITEsITEpLGIxPW5ldyB1cihKdCsiIGNvbnN0KiIsUmksITEsITAsITEpO3JldHVybiBXYVtVXT17cG9pbnRlclR5cGU6QTEsY29uc3RQb2ludGVyVHlwZTpiMX0sJGEoYm4sUXIpLFtweCxBMSxiMV19KX1mdW5jdGlvbiBVYyhVLEcpe2Zvcih2YXIgWD1bXSxRPTA7UTxVO1ErKylYLnB1c2gocmVbKEc+PjIpK1FdKTtyZXR1cm4gWH1mdW5jdGlvbiAkdShVLEcsWCxRLHV0LE90KXtMKEc+MCk7dmFyIFN0PVVjKEcsWCk7dXQ9S28oUSx1dCk7dmFyIGh0PVtPdF0seXQ9W107c28oW10sW1VdLGZ1bmN0aW9uKHF0KXtxdD1xdFswXTt2YXIgSnQ9ImNvbnN0cnVjdG9yICIrcXQubmFtZTtpZihxdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT09PXZvaWQgMCYmKHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5PVtdKSxxdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVtHLTFdIT09dm9pZCAwKXRocm93IG5ldyBUaSgiQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIGNvbnN0cnVjdG9ycyB3aXRoIGlkZW50aWNhbCBudW1iZXIgb2YgcGFyYW1ldGVycyAoIisoRy0xKSsiKSBmb3IgY2xhc3MgJyIrcXQubmFtZSsiJyEgT3ZlcmxvYWQgcmVzb2x1dGlvbiBpcyBjdXJyZW50bHkgb25seSBwZXJmb3JtZWQgdXNpbmcgdGhlIHBhcmFtZXRlciBjb3VudCwgbm90IGFjdHVhbCB0eXBlIGluZm8hIik7cmV0dXJuIHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W0ctMV09ZnVuY3Rpb24oKXtEcygiQ2Fubm90IGNvbnN0cnVjdCAiK3F0Lm5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsU3QpfSxzbyhbXSxTdCxmdW5jdGlvbihUZSl7cmV0dXJuIHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W0ctMV09ZnVuY3Rpb24oKXthcmd1bWVudHMubGVuZ3RoIT09Ry0xJiZMZShKdCsiIGNhbGxlZCB3aXRoICIrYXJndW1lbnRzLmxlbmd0aCsiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIisoRy0xKSkseXQubGVuZ3RoPTAsaHQubGVuZ3RoPUc7Zm9yKHZhciBibj0xO2JuPEc7KytibilodFtibl09VGVbYm5dLnRvV2lyZVR5cGUoeXQsYXJndW1lbnRzW2JuLTFdKTt2YXIgY289dXQuYXBwbHkobnVsbCxodCk7cmV0dXJuIFJuKHl0KSxUZVswXS5mcm9tV2lyZVR5cGUoY28pfSxbXX0pLFtdfSl9ZnVuY3Rpb24gSmEoVSxHKXtpZighKFUgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgbmV3IFR5cGVFcnJvcigibmV3XyBjYWxsZWQgd2l0aCBjb25zdHJ1Y3RvciB0eXBlICIrdHlwZW9mIFUrIiB3aGljaCBpcyBub3QgYSBmdW5jdGlvbiIpO3ZhciBYPXZyKFUubmFtZXx8InVua25vd25GdW5jdGlvbk5hbWUiLGZ1bmN0aW9uKCl7fSk7WC5wcm90b3R5cGU9VS5wcm90b3R5cGU7dmFyIFE9bmV3IFgsdXQ9VS5hcHBseShRLEcpO3JldHVybiB1dCBpbnN0YW5jZW9mIE9iamVjdD91dDpRfWZ1bmN0aW9uIHRmKFUsRyxYLFEsdXQpe3ZhciBPdD1HLmxlbmd0aDtPdDwyJiZMZSgiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7Zm9yKHZhciBTdD1HWzFdIT09bnVsbCYmWCE9PW51bGwsaHQ9ITEseXQ9MTt5dDxHLmxlbmd0aDsrK3l0KWlmKEdbeXRdIT09bnVsbCYmR1t5dF0uZGVzdHJ1Y3RvckZ1bmN0aW9uPT09dm9pZCAwKXtodD0hMDticmVha31mb3IodmFyIHF0PUdbMF0ubmFtZSE9PSJ2b2lkIixKdD0iIixUZT0iIix5dD0wO3l0PE90LTI7Kyt5dClKdCs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCxUZSs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCsiV2lyZWQiO3ZhciBKZT0icmV0dXJuIGZ1bmN0aW9uICIrJGkoVSkrIigiK0p0K2ApIHsKaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09IGArKE90LTIpK2ApIHsKdGhyb3dCaW5kaW5nRXJyb3IoJ2Z1bmN0aW9uIGArVSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKE90LTIpK2AgYXJncyEnKTsKfQpgO2h0JiYoSmUrPWB2YXIgZGVzdHJ1Y3RvcnMgPSBbXTsKYCk7dmFyIGJuPWh0PyJkZXN0cnVjdG9ycyI6Im51bGwiLGNvPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl0sRm89W0xlLFEsdXQsUm4sR1swXSxHWzFdXTtTdCYmKEplKz0idmFyIHRoaXNXaXJlZCA9IGNsYXNzUGFyYW0udG9XaXJlVHlwZSgiK2JuK2AsIHRoaXMpOwpgKTtmb3IodmFyIHl0PTA7eXQ8T3QtMjsrK3l0KUplKz0idmFyIGFyZyIreXQrIldpcmVkID0gYXJnVHlwZSIreXQrIi50b1dpcmVUeXBlKCIrYm4rIiwgYXJnIit5dCsiKTsgLy8gIitHW3l0KzJdLm5hbWUrYApgLGNvLnB1c2goImFyZ1R5cGUiK3l0KSxGby5wdXNoKEdbeXQrMl0pO2lmKFN0JiYoVGU9InRoaXNXaXJlZCIrKFRlLmxlbmd0aD4wPyIsICI6IiIpK1RlKSxKZSs9KHF0PyJ2YXIgcnYgPSAiOiIiKSsiaW52b2tlcihmbiIrKFRlLmxlbmd0aD4wPyIsICI6IiIpK1RlK2ApOwpgLGh0KUplKz1gcnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpOwpgO2Vsc2UgZm9yKHZhciB5dD1TdD8xOjI7eXQ8Ry5sZW5ndGg7Kyt5dCl7dmFyIHByPXl0PT09MT8idGhpc1dpcmVkIjoiYXJnIisoeXQtMikrIldpcmVkIjtHW3l0XS5kZXN0cnVjdG9yRnVuY3Rpb24hPT1udWxsJiYoSmUrPXByKyJfZHRvcigiK3ByKyIpOyAvLyAiK0dbeXRdLm5hbWUrYApgLGNvLnB1c2gocHIrIl9kdG9yIiksRm8ucHVzaChHW3l0XS5kZXN0cnVjdG9yRnVuY3Rpb24pKX1xdCYmKEplKz1gdmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTsKcmV0dXJuIHJldDsKYCksSmUrPWB9CmAsY28ucHVzaChKZSk7dmFyIFFyPUphKEZ1bmN0aW9uLGNvKS5hcHBseShudWxsLEZvKTtyZXR1cm4gUXJ9ZnVuY3Rpb24gWnUoVSxHLFgsUSx1dCxPdCxTdCxodCl7dmFyIHl0PVVjKFgsUSk7Rz1CbihHKSxPdD1Lbyh1dCxPdCksc28oW10sW1VdLGZ1bmN0aW9uKHF0KXtxdD1xdFswXTt2YXIgSnQ9cXQubmFtZSsiLiIrRztodCYmcXQucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2goRyk7ZnVuY3Rpb24gVGUoKXtEcygiQ2Fubm90IGNhbGwgIitKdCsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIix5dCl9dmFyIEplPXF0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxibj1KZVtHXTtyZXR1cm4gYm49PT12b2lkIDB8fGJuLm92ZXJsb2FkVGFibGU9PT12b2lkIDAmJmJuLmNsYXNzTmFtZSE9PXF0Lm5hbWUmJmJuLmFyZ0NvdW50PT09WC0yPyhUZS5hcmdDb3VudD1YLTIsVGUuY2xhc3NOYW1lPXF0Lm5hbWUsSmVbR109VGUpOihYYShKZSxHLEp0KSxKZVtHXS5vdmVybG9hZFRhYmxlW1gtMl09VGUpLHNvKFtdLHl0LGZ1bmN0aW9uKGNvKXt2YXIgRm89dGYoSnQsY28scXQsT3QsU3QpO3JldHVybiBKZVtHXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwPyhGby5hcmdDb3VudD1YLTIsSmVbR109Rm8pOkplW0ddLm92ZXJsb2FkVGFibGVbWC0yXT1GbyxbXX0pLFtdfSl9ZnVuY3Rpb24gUXUoVSxHLFgpe1U9Qm4oVSksc28oW10sW0ddLGZ1bmN0aW9uKFEpe3JldHVybiBRPVFbMF0sbltVXT1RLmZyb21XaXJlVHlwZShYKSxbXX0pfXZhciBrYz1bXSx3bz1be30se3ZhbHVlOnZvaWQgMH0se3ZhbHVlOm51bGx9LHt2YWx1ZTohMH0se3ZhbHVlOiExfV07ZnVuY3Rpb24gR2MoVSl7VT40JiYtLXdvW1VdLnJlZmNvdW50PT09MCYmKHdvW1VdPXZvaWQgMCxrYy5wdXNoKFUpKX1mdW5jdGlvbiBKdSgpe2Zvcih2YXIgVT0wLEc9NTtHPHdvLmxlbmd0aDsrK0cpd29bR10hPT12b2lkIDAmJisrVTtyZXR1cm4gVX1mdW5jdGlvbiB0bCgpe2Zvcih2YXIgVT01O1U8d28ubGVuZ3RoOysrVSlpZih3b1tVXSE9PXZvaWQgMClyZXR1cm4gd29bVV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gZWwoKXtuLmNvdW50X2VtdmFsX2hhbmRsZXM9SnUsbi5nZXRfZmlyc3RfZW12YWw9dGx9ZnVuY3Rpb24gbHIoVSl7c3dpdGNoKFUpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6e3ZhciBHPWtjLmxlbmd0aD9rYy5wb3AoKTp3by5sZW5ndGg7cmV0dXJuIHdvW0ddPXtyZWZjb3VudDoxLHZhbHVlOlV9LEd9fX1mdW5jdGlvbiBubChVLEcpe0c9Qm4oRykscnIoVSx7bmFtZTpHLGZyb21XaXJlVHlwZTpmdW5jdGlvbihYKXt2YXIgUT13b1tYXS52YWx1ZTtyZXR1cm4gR2MoWCksUX0sdG9XaXJlVHlwZTpmdW5jdGlvbihYLFEpe3JldHVybiBscihRKX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmcixkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIG9sKFUsRyxYKXtzd2l0Y2goRyl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbihRKXt2YXIgdXQ9WD9ydDp4dDtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUodXRbUV0pfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKFEpe3ZhciB1dD1YP0d0OnBlO3JldHVybiB0aGlzLmZyb21XaXJlVHlwZSh1dFtRPj4xXSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oUSl7dmFyIHV0PVg/cmU6ZGU7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHV0W1E+PjJdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIitVKX19ZnVuY3Rpb24gcmwoVSxHLFgsUSl7dmFyIHV0PUZyKFgpO0c9Qm4oRyk7ZnVuY3Rpb24gT3QoKXt9T3QudmFsdWVzPXt9LHJyKFUse25hbWU6Ryxjb25zdHJ1Y3RvcjpPdCxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oU3Qpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnZhbHVlc1tTdF19LHRvV2lyZVR5cGU6ZnVuY3Rpb24oU3QsaHQpe3JldHVybiBodC52YWx1ZX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpvbChHLHV0LFEpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSksRGMoRyxPdCl9ZnVuY3Rpb24gQnMoVSxHKXt2YXIgWD1xb1tVXTtyZXR1cm4gWD09PXZvaWQgMCYmTGUoRysiIGhhcyB1bmtub3duIHR5cGUgIitRYShVKSksWH1mdW5jdGlvbiBpbChVLEcsWCl7dmFyIFE9QnMoVSwiZW51bSIpO0c9Qm4oRyk7dmFyIHV0PVEuY29uc3RydWN0b3IsT3Q9T2JqZWN0LmNyZWF0ZShRLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOlh9LGNvbnN0cnVjdG9yOnt2YWx1ZTp2cihRLm5hbWUrIl8iK0csZnVuY3Rpb24oKXt9KX19KTt1dC52YWx1ZXNbWF09T3QsdXRbR109T3R9ZnVuY3Rpb24gT2koVSl7aWYoVT09PW51bGwpcmV0dXJuIm51bGwiO3ZhciBHPXR5cGVvZiBVO3JldHVybiBHPT09Im9iamVjdCJ8fEc9PT0iYXJyYXkifHxHPT09ImZ1bmN0aW9uIj9VLnRvU3RyaW5nKCk6IiIrVX1mdW5jdGlvbiBzbChVLEcpe3N3aXRjaChHKXtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKFgpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShmZVtYPj4yXSl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oWCl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKFp0W1g+PjNdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGZsb2F0IHR5cGU6ICIrVSl9fWZ1bmN0aW9uIGNsKFUsRyxYKXt2YXIgUT1GcihYKTtHPUJuKEcpLHJyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24odXQpe3JldHVybiB1dH0sdG9XaXJlVHlwZTpmdW5jdGlvbih1dCxPdCl7aWYodHlwZW9mIE90IT0ibnVtYmVyIiYmdHlwZW9mIE90IT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgIicrT2koT3QpKyciIHRvICcrdGhpcy5uYW1lKTtyZXR1cm4gT3R9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6c2woRyxRKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIGFsKFUsRyxYLFEsdXQsT3Qpe3ZhciBTdD1VYyhHLFgpO1U9Qm4oVSksdXQ9S28oUSx1dCksRGMoVSxmdW5jdGlvbigpe0RzKCJDYW5ub3QgY2FsbCAiK1UrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsU3QpfSxHLTEpLHNvKFtdLFN0LGZ1bmN0aW9uKGh0KXt2YXIgeXQ9W2h0WzBdLG51bGxdLmNvbmNhdChodC5zbGljZSgxKSk7cmV0dXJuICRhKFUsdGYoVSx5dCxudWxsLHV0LE90KSxHLTEpLFtdfSl9ZnVuY3Rpb24gZmwoVSxHLFgpe3N3aXRjaChHKXtjYXNlIDA6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiBydFt1dF19OmZ1bmN0aW9uKHV0KXtyZXR1cm4geHRbdXRdfTtjYXNlIDE6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiBHdFt1dD4+MV19OmZ1bmN0aW9uKHV0KXtyZXR1cm4gcGVbdXQ+PjFdfTtjYXNlIDI6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiByZVt1dD4+Ml19OmZ1bmN0aW9uKHV0KXtyZXR1cm4gZGVbdXQ+PjJdfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gaW50ZWdlciB0eXBlOiAiK1UpfX1mdW5jdGlvbiB1bChVLEcsWCxRLHV0KXtHPUJuKEcpLHV0PT09LTEmJih1dD00Mjk0OTY3Mjk1KTt2YXIgT3Q9RnIoWCksU3Q9ZnVuY3Rpb24ocXQpe3JldHVybiBxdH07aWYoUT09PTApe3ZhciBodD0zMi04Klg7U3Q9ZnVuY3Rpb24ocXQpe3JldHVybiBxdDw8aHQ+Pj5odH19dmFyIHl0PUcuaW5kZXhPZigidW5zaWduZWQiKSE9LTE7cnIoVSx7bmFtZTpHLGZyb21XaXJlVHlwZTpTdCx0b1dpcmVUeXBlOmZ1bmN0aW9uKHF0LEp0KXtpZih0eXBlb2YgSnQhPSJudW1iZXIiJiZ0eXBlb2YgSnQhPSJib29sZWFuIil0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytPaShKdCkrJyIgdG8gJyt0aGlzLm5hbWUpO2lmKEp0PFF8fEp0PnV0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1Bhc3NpbmcgYSBudW1iZXIgIicrT2koSnQpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrRysnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrUSsiLCAiK3V0KyJdISIpO3JldHVybiB5dD9KdD4+PjA6SnR8MH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmbChHLE90LFEhPT0wKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIGxsKFUsRyxYKXt2YXIgUT1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldLHV0PVFbR107ZnVuY3Rpb24gT3QoU3Qpe1N0PVN0Pj4yO3ZhciBodD1kZSx5dD1odFtTdF0scXQ9aHRbU3QrMV07cmV0dXJuIG5ldyB1dChkdCxxdCx5dCl9WD1CbihYKSxycihVLHtuYW1lOlgsZnJvbVdpcmVUeXBlOk90LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6T3R9LHtpZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zOiEwfSl9ZnVuY3Rpb24gcGwoVSxHKXtHPUJuKEcpO3ZhciBYPUc9PT0ic3RkOjpzdHJpbmciO3JyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oUSl7dmFyIHV0PWRlW1E+PjJdLE90O2lmKFgpZm9yKHZhciBTdD1RKzQsaHQ9MDtodDw9dXQ7KytodCl7dmFyIHl0PVErNCtodDtpZihodD09dXR8fHh0W3l0XT09MCl7dmFyIHF0PXl0LVN0LEp0PWsoU3QscXQpO090PT09dm9pZCAwP090PUp0OihPdCs9IlwwIixPdCs9SnQpLFN0PXl0KzF9fWVsc2V7Zm9yKHZhciBUZT1uZXcgQXJyYXkodXQpLGh0PTA7aHQ8dXQ7KytodClUZVtodF09U3RyaW5nLmZyb21DaGFyQ29kZSh4dFtRKzQraHRdKTtPdD1UZS5qb2luKCIiKX1yZXR1cm4gSyhRKSxPdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihRLHV0KXt1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodXQ9bmV3IFVpbnQ4QXJyYXkodXQpKTt2YXIgT3QsU3Q9dHlwZW9mIHV0PT0ic3RyaW5nIjtTdHx8dXQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx1dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx1dCBpbnN0YW5jZW9mIEludDhBcnJheXx8TGUoIkNhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gc3RkOjpzdHJpbmciKSxYJiZTdD9PdD1mdW5jdGlvbigpe3JldHVybiBSKHV0KX06T3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdXQubGVuZ3RofTt2YXIgaHQ9T3QoKSx5dD1WKDQraHQrMSk7aWYoZGVbeXQ+PjJdPWh0LFgmJlN0KVcodXQseXQrNCxodCsxKTtlbHNlIGlmKFN0KWZvcih2YXIgcXQ9MDtxdDxodDsrK3F0KXt2YXIgSnQ9dXQuY2hhckNvZGVBdChxdCk7SnQ+MjU1JiYoSyh5dCksTGUoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpKSx4dFt5dCs0K3F0XT1KdH1lbHNlIGZvcih2YXIgcXQ9MDtxdDxodDsrK3F0KXh0W3l0KzQrcXRdPXV0W3F0XTtyZXR1cm4gUSE9PW51bGwmJlEucHVzaChLLHl0KSx5dH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmcixkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24oUSl7SyhRKX19KX1mdW5jdGlvbiBkbChVLEcsWCl7WD1CbihYKTt2YXIgUSx1dCxPdCxTdCxodDtHPT09Mj8oUT1hdCx1dD1sdCxTdD1fdCxPdD1mdW5jdGlvbigpe3JldHVybiBwZX0saHQ9MSk6Rz09PTQmJihRPW90LHV0PVB0LFN0PWd0LE90PWZ1bmN0aW9uKCl7cmV0dXJuIGRlfSxodD0yKSxycihVLHtuYW1lOlgsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKHl0KXtmb3IodmFyIHF0PWRlW3l0Pj4yXSxKdD1PdCgpLFRlLEplPXl0KzQsYm49MDtibjw9cXQ7Kytibil7dmFyIGNvPXl0KzQrYm4qRztpZihibj09cXR8fEp0W2NvPj5odF09PTApe3ZhciBGbz1jby1KZSxwcj1RKEplLEZvKTtUZT09PXZvaWQgMD9UZT1wcjooVGUrPSJcMCIsVGUrPXByKSxKZT1jbytHfX1yZXR1cm4gSyh5dCksVGV9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oeXQscXQpe3R5cGVvZiBxdCE9InN0cmluZyImJkxlKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAiK1gpO3ZhciBKdD1TdChxdCksVGU9Vig0K0p0K0cpO3JldHVybiBkZVtUZT4+Ml09SnQ+Pmh0LHV0KHF0LFRlKzQsSnQrRykseXQhPT1udWxsJiZ5dC5wdXNoKEssVGUpLFRlfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZyLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbih5dCl7Syh5dCl9fSl9ZnVuY3Rpb24gbWwoVSxHLFgsUSx1dCxPdCl7cm5bVV09e25hbWU6Qm4oRykscmF3Q29uc3RydWN0b3I6S28oWCxRKSxyYXdEZXN0cnVjdG9yOktvKHV0LE90KSxmaWVsZHM6W119fWZ1bmN0aW9uIGhsKFUsRyxYLFEsdXQsT3QsU3QsaHQseXQscXQpe3JuW1VdLmZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6Qm4oRyksZ2V0dGVyUmV0dXJuVHlwZTpYLGdldHRlcjpLbyhRLHV0KSxnZXR0ZXJDb250ZXh0Ok90LHNldHRlckFyZ3VtZW50VHlwZTpTdCxzZXR0ZXI6S28oaHQseXQpLHNldHRlckNvbnRleHQ6cXR9KX1mdW5jdGlvbiBfbChVLEcpe0c9Qm4oRykscnIoVSx7aXNWb2lkOiEwLG5hbWU6RyxhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTpmdW5jdGlvbigpe30sdG9XaXJlVHlwZTpmdW5jdGlvbihYLFEpe319KX1mdW5jdGlvbiBucyhVKXtyZXR1cm4gVXx8TGUoIkNhbm5vdCB1c2UgZGVsZXRlZCB2YWwuIGhhbmRsZSA9ICIrVSksd29bVV0udmFsdWV9ZnVuY3Rpb24geWwoVSxHLFgpe1U9bnMoVSksRz1CcyhHLCJlbXZhbDo6YXMiKTt2YXIgUT1bXSx1dD1scihRKTtyZXR1cm4gcmVbWD4+Ml09dXQsRy50b1dpcmVUeXBlKFEsVSl9dmFyIGdsPXt9O2Z1bmN0aW9uIFVzKFUpe3ZhciBHPWdsW1VdO3JldHVybiBHPT09dm9pZCAwP0JuKFUpOkd9dmFyIFZjPVtdO2Z1bmN0aW9uIEFsKFUsRyxYLFEpe1U9VmNbVV0sRz1ucyhHKSxYPVVzKFgpLFUoRyxYLG51bGwsUSl9ZnVuY3Rpb24gZWYoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXM9PSJvYmplY3QiP2dsb2JhbFRoaXM6ZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KCkoInJldHVybiB0aGlzIikoKX1mdW5jdGlvbiBibChVKXtyZXR1cm4gVT09PTA/bHIoZWYoKSk6KFU9VXMoVSksbHIoZWYoKVtVXSkpfWZ1bmN0aW9uIHdsKFUpe3ZhciBHPVZjLmxlbmd0aDtyZXR1cm4gVmMucHVzaChVKSxHfWZ1bmN0aW9uIFRsKFUsRyl7Zm9yKHZhciBYPW5ldyBBcnJheShVKSxRPTA7UTxVOysrUSlYW1FdPUJzKHJlWyhHPj4yKStRXSwicGFyYW1ldGVyICIrUSk7cmV0dXJuIFh9ZnVuY3Rpb24gT2woVSxHKXtmb3IodmFyIFg9VGwoVSxHKSxRPVhbMF0sdXQ9US5uYW1lKyJfJCIrWC5zbGljZSgxKS5tYXAoZnVuY3Rpb24oYm4pe3JldHVybiBibi5uYW1lfSkuam9pbigiXyIpKyIkIixPdD1bInJldFR5cGUiXSxTdD1bUV0saHQ9IiIseXQ9MDt5dDxVLTE7Kyt5dClodCs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCxPdC5wdXNoKCJhcmdUeXBlIit5dCksU3QucHVzaChYWzEreXRdKTtmb3IodmFyIHF0PSRpKCJtZXRob2RDYWxsZXJfIit1dCksSnQ9InJldHVybiBmdW5jdGlvbiAiK3F0K2AoaGFuZGxlLCBuYW1lLCBkZXN0cnVjdG9ycywgYXJncykgewpgLFRlPTAseXQ9MDt5dDxVLTE7Kyt5dClKdCs9IiAgICB2YXIgYXJnIit5dCsiID0gYXJnVHlwZSIreXQrIi5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzIisoVGU/IisiK1RlOiIiKStgKTsKYCxUZSs9WFt5dCsxXS5hcmdQYWNrQWR2YW5jZTtKdCs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIitodCtgKTsKYDtmb3IodmFyIHl0PTA7eXQ8VS0xOysreXQpWFt5dCsxXS5kZWxldGVPYmplY3QmJihKdCs9IiAgICBhcmdUeXBlIit5dCsiLmRlbGV0ZU9iamVjdChhcmciK3l0K2ApOwpgKTtRLmlzVm9pZHx8KEp0Kz1gICAgIHJldHVybiByZXRUeXBlLnRvV2lyZVR5cGUoZGVzdHJ1Y3RvcnMsIHJ2KTsKYCksSnQrPWB9OwpgLE90LnB1c2goSnQpO3ZhciBKZT1KYShGdW5jdGlvbixPdCkuYXBwbHkobnVsbCxTdCk7cmV0dXJuIHdsKEplKX1mdW5jdGlvbiBFbChVKXtyZXR1cm4gVT1VcyhVKSxscihuW1VdKX1mdW5jdGlvbiBSbChVLEcpe3JldHVybiBVPW5zKFUpLEc9bnMoRyksbHIoVVtHXSl9ZnVuY3Rpb24gU2woVSl7VT40JiYod29bVV0ucmVmY291bnQrPTEpfWZ1bmN0aW9uIHhsKFUpe2Zvcih2YXIgRz0iIixYPTA7WDxVOysrWClHKz0oWCE9PTA/IiwgIjoiIikrImFyZyIrWDtmb3IodmFyIFE9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIitVK2AoY29uc3RydWN0b3IsIGFyZ1R5cGVzLCBhcmdzKSB7CmAsWD0wO1g8VTsrK1gpUSs9InZhciBhcmdUeXBlIitYKyIgPSByZXF1aXJlUmVnaXN0ZXJlZFR5cGUoTW9kdWxlWydIRUFQMzInXVsoYXJnVHlwZXMgPj4+IDIpICsgIitYKyddLCAicGFyYW1ldGVyICcrWCtgIik7CnZhciBhcmdgK1grIiA9IGFyZ1R5cGUiK1grYC5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzKTsKYXJncyArPSBhcmdUeXBlYCtYK2BbJ2FyZ1BhY2tBZHZhbmNlJ107CmA7cmV0dXJuIFErPSJ2YXIgb2JqID0gbmV3IGNvbnN0cnVjdG9yKCIrRytgKTsKcmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTsKfQpgLG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiTW9kdWxlIiwiX19lbXZhbF9yZWdpc3RlciIsUSkoQnMsbixscil9dmFyIG5mPXt9O2Z1bmN0aW9uIENsKFUsRyxYLFEpe1U9bnMoVSk7dmFyIHV0PW5mW0ddO3JldHVybiB1dHx8KHV0PXhsKEcpLG5mW0ddPXV0KSx1dChVLFgsUSl9ZnVuY3Rpb24gUGwoVSl7cmV0dXJuIGxyKFVzKFUpKX1mdW5jdGlvbiBNbChVKXt2YXIgRz13b1tVXS52YWx1ZTtSbihHKSxHYyhVKX1mdW5jdGlvbiBObCgpe1dlKCl9ZnVuY3Rpb24gSWwoVSxHLFgpe3h0LmNvcHlXaXRoaW4oVSxHLEcrWCl9ZnVuY3Rpb24gdmwoVSl7dHJ5e3JldHVybiBBLmdyb3coVS1kdC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpLFF0KEEuYnVmZmVyKSwxfWNhdGNoe319ZnVuY3Rpb24gRmwoVSl7dmFyIEc9eHQubGVuZ3RoO1U9VT4+PjA7dmFyIFg9MjE0NzQ4MzY0ODtpZihVPlgpcmV0dXJuITE7Zm9yKHZhciBRPTE7UTw9NDtRKj0yKXt2YXIgdXQ9RyooMSsuMi9RKTt1dD1NYXRoLm1pbih1dCxVKzEwMDY2MzI5Nik7dmFyIE90PU1hdGgubWluKFgsUnQoTWF0aC5tYXgoVSx1dCksNjU1MzYpKSxTdD12bChPdCk7aWYoU3QpcmV0dXJuITB9cmV0dXJuITF9dmFyIGtzPXttYXBwaW5nczp7fSxidWZmZXJzOltudWxsLFtdLFtdXSxwcmludENoYXI6ZnVuY3Rpb24oVSxHKXt2YXIgWD1rcy5idWZmZXJzW1VdO0c9PT0wfHxHPT09MTA/KChVPT09MT9NOk4pKGooWCwwKSksWC5sZW5ndGg9MCk6WC5wdXNoKEcpfSx2YXJhcmdzOnZvaWQgMCxnZXQ6ZnVuY3Rpb24oKXtrcy52YXJhcmdzKz00O3ZhciBVPXJlW2tzLnZhcmFyZ3MtND4+Ml07cmV0dXJuIFV9LGdldFN0cjpmdW5jdGlvbihVKXt2YXIgRz1rKFUpO3JldHVybiBHfSxnZXQ2NDpmdW5jdGlvbihVLEcpe3JldHVybiBVfX07ZnVuY3Rpb24gTGwoVSl7cmV0dXJuIDB9ZnVuY3Rpb24gRGwoVSxHLFgsUSx1dCl7fWZ1bmN0aW9uIEJsKFUsRyxYLFEpe2Zvcih2YXIgdXQ9MCxPdD0wO090PFg7T3QrKyl7Zm9yKHZhciBTdD1yZVtHK090Kjg+PjJdLGh0PXJlW0crKE90KjgrNCk+PjJdLHl0PTA7eXQ8aHQ7eXQrKylrcy5wcmludENoYXIoVSx4dFtTdCt5dF0pO3V0Kz1odH1yZXR1cm4gcmVbUT4+Ml09dXQsMH1mdW5jdGlvbiBVbChVKXtJKFV8MCl9RnM9bi5JbnRlcm5hbEVycm9yPVppKEVycm9yLCJJbnRlcm5hbEVycm9yIiksTmMoKSxUaT1uLkJpbmRpbmdFcnJvcj1aaShFcnJvciwiQmluZGluZ0Vycm9yIiksTXUoKSxxdSgpLFZ1KCksWmE9bi5VbmJvdW5kVHlwZUVycm9yPVppKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIiksZWwoKTt2YXIga2w9e3Q6aG8sSTpUdSx4Oll1LHc6JHUsZDpadSxrOlF1LEg6bmwsbjpybCxhOmlsLEE6Y2wsaTphbCxqOnVsLGg6bGwsQjpwbCx2OmRsLHU6bWwsYzpobCxKOl9sLG06eWwsczpBbCxiOkdjLHk6YmwscDpPbCxyOkVsLGU6UmwsZzpTbCxxOkNsLGY6UGwsbDpNbCxvOk5sLEU6SWwsRjpGbCxHOkxsLEM6RGwsejpCbCxEOlVsfSxvZj1YbigpLHhlPW4uX19fd2FzbV9jYWxsX2N0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuKHhlPW4uX19fd2FzbV9jYWxsX2N0b3JzPW4uYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVj1uLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oVj1uLl9tYWxsb2M9bi5hc20uTSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLPW4uX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oSz1uLl9mcmVlPW4uYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdHQ9bi5fX19nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybih0dD1uLl9fX2dldFR5cGVOYW1lPW4uYXNtLlApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTXQ9bi5fX19lbWJpbmRfcmVnaXN0ZXJfbmF0aXZlX2FuZF9idWlsdGluX3R5cGVzPWZ1bmN0aW9uKCl7cmV0dXJuKE10PW4uX19fZW1iaW5kX3JlZ2lzdGVyX25hdGl2ZV9hbmRfYnVpbHRpbl90eXBlcz1uLmFzbS5RKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVlPW4uZHluQ2FsbF9qaWppPWZ1bmN0aW9uKCl7cmV0dXJuKHVlPW4uZHluQ2FsbF9qaWppPW4uYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2U7ZnVuY3Rpb24gRWkoVSl7dGhpcy5uYW1lPSJFeGl0U3RhdHVzIix0aGlzLm1lc3NhZ2U9IlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIitVKyIpIix0aGlzLnN0YXR1cz1VfXFuPWZ1bmN0aW9uIFUoKXt3ZXx8emMoKSx3ZXx8KHFuPVUpfTtmdW5jdGlvbiB6YyhVKXtpZihVPVV8fGYsbW4+MHx8KHBuKCksbW4+MCkpcmV0dXJuO2Z1bmN0aW9uIEcoKXt3ZXx8KHdlPSEwLG4uY2FsbGVkUnVuPSEwLCFTJiYoRW4oKSxvZSgpLG8obiksbi5vblJ1bnRpbWVJbml0aWFsaXplZCYmbi5vblJ1bnRpbWVJbml0aWFsaXplZCgpLFl0KCkpKX1uLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe24uc2V0U3RhdHVzKCIiKX0sMSksRygpfSwxKSk6RygpfWlmKG4ucnVuPXpjLG4ucHJlSW5pdClmb3IodHlwZW9mIG4ucHJlSW5pdD09ImZ1bmN0aW9uIiYmKG4ucHJlSW5pdD1bbi5wcmVJbml0XSk7bi5wcmVJbml0Lmxlbmd0aD4wOyluLnByZUluaXQucG9wKCkoKTtyZXR1cm4gemMoKSxlLnJlYWR5fX0oKTt0eXBlb2YgYm09PSJvYmplY3QiJiZ0eXBlb2YgdTE9PSJvYmplY3QiP3UxLmV4cG9ydHM9ZjE6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gZjF9KTp0eXBlb2YgYm09PSJvYmplY3QiJiYoYm0uQkFTSVM9ZjEpfSk7dmFyIGwxPXt9O2xlKGwxLHtkZWZhdWx0OigpPT5KOH0pO2Z1bmN0aW9uIFg4KHQsZSl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2NvZGVyTW9kdWxlIix3dSk7bGV0IG49dC5rdHgyQnVmZmVyLG89dC5zdXBwb3J0ZWRUYXJnZXRGb3JtYXRzLHI7dHJ5e3I9dHgobil9Y2F0Y2h7dGhyb3cgbmV3IEFlKCJJbnZhbGlkIEtUWDIgZmlsZS4iKX1pZihyLmxheWVyQ291bnQhPT0wKXRocm93IG5ldyBBZSgiS1RYMiB0ZXh0dXJlIGFycmF5cyBhcmUgbm90IHN1cHBvcnRlZC4iKTtpZihyLnBpeGVsRGVwdGghPT0wKXRocm93IG5ldyBBZSgiS1RYMiAzRCB0ZXh0dXJlcyBhcmUgdW5zdXBwb3J0ZWQuIik7bGV0IGk9ci5kYXRhRm9ybWF0RGVzY3JpcHRvclswXSxzPW5ldyBBcnJheShyLmxldmVsQ291bnQpO3JldHVybiByLnZrRm9ybWF0PT09MCYmKGkuY29sb3JNb2RlbD09PWl4fHxpLmNvbG9yTW9kZWw9PT1zeCk/JDgobixyLG8sd3UsZSxzKTooZS5wdXNoKG4uYnVmZmVyKSxZOChyLHMpKSxzfWZ1bmN0aW9uIFk4KHQsZSl7bGV0IG49dC52a0Zvcm1hdD09PWJ1LlZLX0ZPUk1BVF9SOEc4QjhfU1JHQj9Hbi5SR0I6R24uUkdCQSxvO3QudmtGb3JtYXQ9PT1idS5WS19GT1JNQVRfUjhHOEI4QThfVU5PUk0/bz1pby5VTlNJR05FRF9CWVRFOnQudmtGb3JtYXQ9PT1idS5WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVD9vPWlvLkhBTEZfRkxPQVQ6dC52a0Zvcm1hdD09PWJ1LlZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0ZMT0FUJiYobz1pby5GTE9BVCk7Zm9yKGxldCByPTA7cjx0LmxldmVscy5sZW5ndGg7KytyKXtsZXQgaT17fTtlW3JdPWk7bGV0IHM9dC5sZXZlbHNbcl0ubGV2ZWxEYXRhLGY9dC5waXhlbFdpZHRoPj5yLHU9dC5waXhlbEhlaWdodD4+cixjPWYqdSpHbi5jb21wb25lbnRzTGVuZ3RoKG4pO2ZvcihsZXQgbD0wO2w8dC5mYWNlQ291bnQ7KytsKXtsZXQgcD1zLmJ5dGVPZmZzZXQrYyp0LnR5cGVTaXplKmwsZDshbShvKXx8aW8uc2l6ZUluQnl0ZXMobyk9PT0xP2Q9bmV3IFVpbnQ4QXJyYXkocy5idWZmZXIscCxjKTppby5zaXplSW5CeXRlcyhvKT09PTI/ZD1uZXcgVWludDE2QXJyYXkocy5idWZmZXIscCxjKTpkPW5ldyBGbG9hdDMyQXJyYXkocy5idWZmZXIscCxjKSxpW3J4W2xdXT17aW50ZXJuYWxGb3JtYXQ6bixkYXRhdHlwZTpvLHdpZHRoOmYsaGVpZ2h0OnUsbGV2ZWxCdWZmZXI6ZH19fX1mdW5jdGlvbiAkOCh0LGUsbixvLHIsaSl7bGV0IHM9bmV3IG8uS1RYMkZpbGUodCksZj1zLmdldFdpZHRoKCksdT1zLmdldEhlaWdodCgpLGM9cy5nZXRMZXZlbHMoKSxsPXMuZ2V0SGFzQWxwaGEoKTtpZighKGY+MCl8fCEodT4wKXx8IShjPjApKXRocm93IHMuY2xvc2UoKSxzLmRlbGV0ZSgpLG5ldyBBZSgiSW52YWxpZCBLVFgyIGZpbGUiKTtsZXQgcCxkLGg9ZS5kYXRhRm9ybWF0RGVzY3JpcHRvclswXSxfPW8udHJhbnNjb2Rlcl90ZXh0dXJlX2Zvcm1hdDtpZihoLmNvbG9yTW9kZWw9PT1peClpZihuLmV0YylwPWw/R24uUkdCQThfRVRDMl9FQUM6R24uUkdCOF9FVEMyLGQ9bD9fLmNURkVUQzJfUkdCQTpfLmNURkVUQzFfUkdCO2Vsc2UgaWYobi5ldGMxJiYhbClwPUduLlJHQl9FVEMxLGQ9Xy5jVEZFVEMxX1JHQjtlbHNlIGlmKG4uczN0YylwPWw/R24uUkdCQV9EWFQ1OkduLlJHQl9EWFQxLGQ9bD9fLmNURkJDM19SR0JBOl8uY1RGQkMxX1JHQjtlbHNlIGlmKG4ucHZydGMpcD1sP0duLlJHQkFfUFZSVENfNEJQUFYxOkduLlJHQl9QVlJUQ180QlBQVjEsZD1sP18uY1RGUFZSVEMxXzRfUkdCQTpfLmNURlBWUlRDMV80X1JHQjtlbHNlIGlmKG4uYXN0YylwPUduLlJHQkFfQVNUQyxkPV8uY1RGQVNUQ180eDRfUkdCQTtlbHNlIGlmKG4uYmM3KXA9R24uUkdCQV9CQzcsZD1fLmNURkJDN19SR0JBO2Vsc2UgdGhyb3cgbmV3IEFlKCJObyB0cmFuc2NvZGluZyBmb3JtYXQgdGFyZ2V0IGF2YWlsYWJsZSBmb3IgRVRDMVMgY29tcHJlc3NlZCBrdHgyLiIpO2Vsc2UgaWYoaC5jb2xvck1vZGVsPT09c3gpaWYobi5hc3RjKXA9R24uUkdCQV9BU1RDLGQ9Xy5jVEZBU1RDXzR4NF9SR0JBO2Vsc2UgaWYobi5iYzcpcD1Hbi5SR0JBX0JDNyxkPV8uY1RGQkM3X1JHQkE7ZWxzZSBpZihuLnMzdGMpcD1sP0duLlJHQkFfRFhUNTpHbi5SR0JfRFhUMSxkPWw/Xy5jVEZCQzNfUkdCQTpfLmNURkJDMV9SR0I7ZWxzZSBpZihuLmV0YylwPWw/R24uUkdCQThfRVRDMl9FQUM6R24uUkdCOF9FVEMyLGQ9bD9fLmNURkVUQzJfUkdCQTpfLmNURkVUQzFfUkdCO2Vsc2UgaWYobi5ldGMxJiYhbClwPUduLlJHQl9FVEMxLGQ9Xy5jVEZFVEMxX1JHQjtlbHNlIGlmKG4ucHZydGMpcD1sP0duLlJHQkFfUFZSVENfNEJQUFYxOkduLlJHQl9QVlJUQ180QlBQVjEsZD1sP18uY1RGUFZSVEMxXzRfUkdCQTpfLmNURlBWUlRDMV80X1JHQjtlbHNlIHRocm93IG5ldyBBZSgiTm8gdHJhbnNjb2RpbmcgZm9ybWF0IHRhcmdldCBhdmFpbGFibGUgZm9yIFVBU1RDIGNvbXByZXNzZWQga3R4Mi4iKTtpZighcy5zdGFydFRyYW5zY29kaW5nKCkpdGhyb3cgcy5jbG9zZSgpLHMuZGVsZXRlKCksbmV3IEFlKCJzdGFydFRyYW5zY29kaW5nKCkgZmFpbGVkIik7Zm9yKGxldCBnPTA7ZzxlLmxldmVscy5sZW5ndGg7KytnKXtsZXQgYj17fTtpW2ddPWIsZj1lLnBpeGVsV2lkdGg+PmcsdT1lLnBpeGVsSGVpZ2h0Pj5nO2xldCB3PXMuZ2V0SW1hZ2VUcmFuc2NvZGVkU2l6ZUluQnl0ZXMoZywwLDAsZC52YWx1ZSksTz1uZXcgVWludDhBcnJheSh3KSxFPXMudHJhbnNjb2RlSW1hZ2UoTyxnLDAsMCxkLnZhbHVlLDAsLTEsLTEpO2lmKCFtKEUpKXRocm93IG5ldyBBZSgidHJhbnNjb2RlSW1hZ2UoKSBmYWlsZWQuIik7ci5wdXNoKE8uYnVmZmVyKSxiW3J4WzBdXT17aW50ZXJuYWxGb3JtYXQ6cCx3aWR0aDpmLGhlaWdodDp1LGxldmVsQnVmZmVyOk99fXJldHVybiBzLmNsb3NlKCkscy5kZWxldGUoKSxpfWFzeW5jIGZ1bmN0aW9uIFo4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZyxvPW94LmRlZmF1bHQ/P3NlbGYuQkFTSVM7cmV0dXJuIG0obi53YXNtQmluYXJ5RmlsZSk/d3U9YXdhaXQgbyhuKTp3dT1hd2FpdCBvKCksd3UuaW5pdGlhbGl6ZUJhc2lzKCksITB9ZnVuY3Rpb24gUTgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pP1o4KHQsZSk6WDgodCxlKX12YXIgb3gscngsaXgsc3gsd3UsSjgscDE9JCgoKT0+e2Z0KCk7V3QoKTtaUygpO3RpKCk7UVMoKTthMSgpO1puKCk7ZXgoKTtveD1tcihueCgpLDEpLHJ4PVsicG9zaXRpdmVYIiwibmVnYXRpdmVYIiwicG9zaXRpdmVZIiwibmVnYXRpdmVZIiwicG9zaXRpdmVaIiwibmVnYXRpdmVaIl0saXg9MTYzLHN4PTE2NjtKOD1VZShROCl9KTt2YXIgY3g9e307dmFyIGQxPSQoKCk9PntzZWxmLm9ubWVzc2FnZT1mdW5jdGlvbih0KXtsZXQgZT10LmRhdGEuYXJyYXksbj1zZWxmLndlYmtpdFBvc3RNZXNzYWdlfHxzZWxmLnBvc3RNZXNzYWdlO3RyeXtuKHthcnJheTplfSxbZS5idWZmZXJdKX1jYXRjaHtuKHt9KX19fSk7dmFyIHdtLFRtLGF4PSQoKCk9PntrZSgpO0R0KCk7V3QoKTtmdCgpO0h0KCk7d209e307d20uY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInRocmVzaG9sZCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgia2VlcEFib3ZlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1MCBpcyByZXF1aXJlZC4iKTtpZighbShvKSl0aHJvdyBuZXcgRCgidTEgaXMgcmVxdWlyZWQuIik7aWYoIW0ocikpdGhyb3cgbmV3IEQoInUyIGlzIHJlcXVpcmVkLiIpO20oaSk/aS5sZW5ndGg9MDppPVtdO2xldCBzLGYsdTtlPyhzPW48dCxmPW88dCx1PXI8dCk6KHM9bj50LGY9bz50LHU9cj50KTtsZXQgYz1zK2YrdSxsLHAsZCxoLF8sZztyZXR1cm4gYz09PTE/cz8obD0odC1uKS8oby1uKSxwPSh0LW4pLyhyLW4pLGkucHVzaCgxKSxpLnB1c2goMikscCE9PTEmJihpLnB1c2goLTEpLGkucHVzaCgwKSxpLnB1c2goMiksaS5wdXNoKHApKSxsIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDApLGkucHVzaCgxKSxpLnB1c2gobCkpKTpmPyhkPSh0LW8pLyhyLW8pLGg9KHQtbykvKG4tbyksaS5wdXNoKDIpLGkucHVzaCgwKSxoIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDEpLGkucHVzaCgwKSxpLnB1c2goaCkpLGQhPT0xJiYoaS5wdXNoKC0xKSxpLnB1c2goMSksaS5wdXNoKDIpLGkucHVzaChkKSkpOnUmJihfPSh0LXIpLyhuLXIpLGc9KHQtcikvKG8tciksaS5wdXNoKDApLGkucHVzaCgxKSxnIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDIpLGkucHVzaCgxKSxpLnB1c2goZykpLF8hPT0xJiYoaS5wdXNoKC0xKSxpLnB1c2goMiksaS5wdXNoKDApLGkucHVzaChfKSkpOmM9PT0yPyFzJiZuIT09dD8oaD0odC1vKS8obi1vKSxfPSh0LXIpLyhuLXIpLGkucHVzaCgwKSxpLnB1c2goLTEpLGkucHVzaCgxKSxpLnB1c2goMCksaS5wdXNoKGgpLGkucHVzaCgtMSksaS5wdXNoKDIpLGkucHVzaCgwKSxpLnB1c2goXykpOiFmJiZvIT09dD8oZz0odC1yKS8oby1yKSxsPSh0LW4pLyhvLW4pLGkucHVzaCgxKSxpLnB1c2goLTEpLGkucHVzaCgyKSxpLnB1c2goMSksaS5wdXNoKGcpLGkucHVzaCgtMSksaS5wdXNoKDApLGkucHVzaCgxKSxpLnB1c2gobCkpOiF1JiZyIT09dCYmKHA9KHQtbikvKHItbiksZD0odC1vKS8oci1vKSxpLnB1c2goMiksaS5wdXNoKC0xKSxpLnB1c2goMCksaS5wdXNoKDIpLGkucHVzaChwKSxpLnB1c2goLTEpLGkucHVzaCgxKSxpLnB1c2goMiksaS5wdXNoKGQpKTpjIT09MyYmKGkucHVzaCgwKSxpLnB1c2goMSksaS5wdXNoKDIpKSxpfTt3bS5jb21wdXRlQmFyeWNlbnRyaWNDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYsdSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInkgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoIngxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJ5MSBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgieDIgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IEQoInkyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHMpKXRocm93IG5ldyBEKCJ4MyBpcyByZXF1aXJlZC4iKTtpZighbShmKSl0aHJvdyBuZXcgRCgieTMgaXMgcmVxdWlyZWQuIik7bGV0IGM9bi1zLGw9cy1yLHA9aS1mLGQ9by1mLGg9MS8ocCpjK2wqZCksXz1lLWYsZz10LXMsYj0ocCpnK2wqXykqaCx3PSgtZCpnK2MqXykqaCxPPTEtYi13O3JldHVybiBtKHUpPyh1Lng9Yix1Lnk9dyx1Lno9Tyx1KTpuZXcgYShiLHcsTyl9O3dtLmNvbXB1dGVMaW5lU2VnbWVudExpbmVTZWdtZW50SW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMsZix1KXt5LnR5cGVPZi5udW1iZXIoIngwMCIsdCkseS50eXBlT2YubnVtYmVyKCJ5MDAiLGUpLHkudHlwZU9mLm51bWJlcigieDAxIixuKSx5LnR5cGVPZi5udW1iZXIoInkwMSIsbykseS50eXBlT2YubnVtYmVyKCJ4MTAiLHIpLHkudHlwZU9mLm51bWJlcigieTEwIixpKSx5LnR5cGVPZi5udW1iZXIoIngxMSIscykseS50eXBlT2YubnVtYmVyKCJ5MTEiLGYpO2xldCBjPShzLXIpKihlLWkpLShmLWkpKih0LXIpLGw9KG4tdCkqKGUtaSktKG8tZSkqKHQtcikscD0oZi1pKSoobi10KS0ocy1yKSooby1lKTtpZihwPT09MClyZXR1cm47bGV0IGQ9Yy9wLGg9bC9wO2lmKGQ+PTAmJmQ8PTEmJmg+PTAmJmg8PTEpcmV0dXJuIG0odSl8fCh1PW5ldyBKKSx1Lng9dCtkKihuLXQpLHUueT1lK2QqKG8tZSksdX07VG09d219KTt2YXIgbTE9e307bGUobTEse2RlZmF1bHQ6KCk9PmhrfSk7ZnVuY3Rpb24gcGsodCxlKXtsZXQgbj10LmlzRWFzdENoaWxkLG89dC5pc05vcnRoQ2hpbGQscj1uP1pyOjAsaT1uP2puOlpyLHM9bz9acjowLGY9bz9qbjpacix1PW5rLGM9b2ssbD1yayxwPXNrO3UubGVuZ3RoPTAsYy5sZW5ndGg9MCxsLmxlbmd0aD0wLHAubGVuZ3RoPTA7bGV0IGQ9aWs7ZC5sZW5ndGg9MDtsZXQgaD17fSxfPXQudmVydGljZXMsZz10LmluZGljZXM7Zz1nLnN1YmFycmF5KDAsdC5pbmRleENvdW50V2l0aG91dFNraXJ0cyk7bGV0IGI9TXMuY2xvbmUodC5lbmNvZGluZyksdz1iLmhhc1ZlcnRleE5vcm1hbHMsTz0wLEU9dC52ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHMsVD10Lm1pbmltdW1IZWlnaHQseD10Lm1heGltdW1IZWlnaHQsTT1uZXcgQXJyYXkoRSksTj1uZXcgQXJyYXkoRSksRj1uZXcgQXJyYXkoRSksST13P25ldyBBcnJheShFKjIpOnZvaWQgMCx2PTIwLEIsQSxTLEMsTDtmb3IoQT0wLFM9MDtBPEU7KytBLFMrPTIpe2xldCBWZT1iLmRlY29kZVRleHR1cmVDb29yZGluYXRlcyhfLEEsdWspO2lmKEI9Yi5kZWNvZGVIZWlnaHQoXyxBKSxDPVAuY2xhbXAoVmUueCpqbnwwLDAsam4pLEw9UC5jbGFtcChWZS55KmpufDAsMCxqbiksRltBXT1QLmNsYW1wKChCLVQpLyh4LVQpKmpufDAsMCxqbiksQzx2JiYoQz0wKSxMPHYmJihMPTApLGpuLUM8diYmKEM9am4pLGpuLUw8diYmKEw9am4pLE1bQV09QyxOW0FdPUwsdyl7bGV0IGJlPWIuZ2V0T2N0RW5jb2RlZE5vcm1hbChfLEEsbGspO0lbU109YmUueCxJW1MrMV09YmUueX0obiYmQz49WnJ8fCFuJiZDPD1acikmJihvJiZMPj1acnx8IW8mJkw8PVpyKSYmKGhbQV09Tyx1LnB1c2goQyksYy5wdXNoKEwpLGwucHVzaChGW0FdKSx3JiYocC5wdXNoKElbU10pLHAucHVzaChJW1MrMV0pKSwrK08pfWxldCB6PVtdO3oucHVzaChuZXcgSG4pLHoucHVzaChuZXcgSG4pLHoucHVzaChuZXcgSG4pO2xldCBqPVtdO2oucHVzaChuZXcgSG4pLGoucHVzaChuZXcgSG4pLGoucHVzaChuZXcgSG4pO2xldCBrLHE7Zm9yKEE9MDtBPGcubGVuZ3RoO0ErPTMpe2xldCBWZT1nW0FdLGJlPWdbQSsxXSxsbj1nW0ErMl0scG49TVtWZV0sRW49TVtiZV0sb2U9TVtsbl07elswXS5pbml0aWFsaXplSW5kZXhlZChNLE4sRixJLFZlKSx6WzFdLmluaXRpYWxpemVJbmRleGVkKE0sTixGLEksYmUpLHpbMl0uaW5pdGlhbGl6ZUluZGV4ZWQoTSxOLEYsSSxsbik7bGV0IFl0PVRtLmNsaXBUcmlhbmdsZUF0QXhpc0FsaWduZWRUaHJlc2hvbGQoWnIsbixwbixFbixvZSx0ayk7az0wLCEoaz49WXQubGVuZ3RoKSYmKGs9alswXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQoWXQsayx6KSwhKGs+PVl0Lmxlbmd0aCkmJihrPWpbMV0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFl0LGsseiksIShrPj1ZdC5sZW5ndGgpJiYoaz1qWzJdLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdChZdCxrLHopLHE9VG0uY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZChacixvLGpbMF0uZ2V0VigpLGpbMV0uZ2V0VigpLGpbMl0uZ2V0VigpLGZ4KSx1eCh1LGMsbCxwLGQsaCxxLGosdyksazxZdC5sZW5ndGgmJihqWzJdLmNsb25lKGpbMV0pLGpbMl0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFl0LGsseikscT1UbS5jbGlwVHJpYW5nbGVBdEF4aXNBbGlnbmVkVGhyZXNob2xkKFpyLG8salswXS5nZXRWKCksalsxXS5nZXRWKCksalsyXS5nZXRWKCksZngpLHV4KHUsYyxsLHAsZCxoLHEsaix3KSkpKSl9bGV0IFc9bj8tam46MCxSPW8/LWpuOjAsbnQ9W10sYXQ9W10sbHQ9W10sX3Q9W10sb3Q9TnVtYmVyLk1BWF9WQUxVRSxQdD0tb3QsZ3Q9ZWs7Z3QubGVuZ3RoPTA7bGV0IFJ0PVkuY2xvbmUodC5lbGxpcHNvaWQpLGR0PU50LmNsb25lKHQuY2hpbGRSZWN0YW5nbGUpLHJ0PWR0Lm5vcnRoLHh0PWR0LnNvdXRoLEd0PWR0LmVhc3QscGU9ZHQud2VzdDtmb3IoR3Q8cGUmJihHdCs9UC5UV09fUEkpLEE9MDtBPHUubGVuZ3RoOysrQSlDPU1hdGgucm91bmQodVtBXSksQzw9cj8obnQucHVzaChBKSxDPTApOkM+PWk/KGx0LnB1c2goQSksQz1qbik6Qz1DKjIrVyx1W0FdPUMsTD1NYXRoLnJvdW5kKGNbQV0pLEw8PXM/KGF0LnB1c2goQSksTD0wKTpMPj1mPyhfdC5wdXNoKEEpLEw9am4pOkw9TCoyK1IsY1tBXT1MLEI9UC5sZXJwKFQseCxsW0FdL2puKSxCPG90JiYob3Q9QiksQj5QdCYmKFB0PUIpLGxbQV09QixPbS5sb25naXR1ZGU9UC5sZXJwKHBlLEd0LEMvam4pLE9tLmxhdGl0dWRlPVAubGVycCh4dCxydCxML2puKSxPbS5oZWlnaHQ9QixSdC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihPbSxZaSksZ3QucHVzaChZaS54KSxndC5wdXNoKFlpLnkpLGd0LnB1c2goWWkueik7bGV0IHJlPUF0LmZyb21WZXJ0aWNlcyhndCxhLlpFUk8sMyxhayksZGU9Q28uZnJvbVJlY3RhbmdsZShkdCxvdCxQdCxSdCxmayksWnQ9bmV3IFBzKFJ0KS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQocmUuY2VudGVyLGd0LDMscmUuY2VudGVyLG90LGNrKSxRdD1QdC1vdCxOZT1uZXcgVWludDE2QXJyYXkodS5sZW5ndGgrYy5sZW5ndGgrbC5sZW5ndGgpO2ZvcihBPTA7QTx1Lmxlbmd0aDsrK0EpTmVbQV09dVtBXTtsZXQgZ2U9dS5sZW5ndGg7Zm9yKEE9MDtBPGMubGVuZ3RoOysrQSlOZVtnZStBXT1jW0FdO2ZvcihnZSs9Yy5sZW5ndGgsQT0wO0E8bC5sZW5ndGg7KytBKU5lW2dlK0FdPWpuKihsW0FdLW90KS9RdDtsZXQgRWU9THQuY3JlYXRlVHlwZWRBcnJheSh1Lmxlbmd0aCxkKSx1bjtpZih3KXtsZXQgVmU9bmV3IFVpbnQ4QXJyYXkocCk7ZS5wdXNoKE5lLmJ1ZmZlcixFZS5idWZmZXIsVmUuYnVmZmVyKSx1bj1WZS5idWZmZXJ9ZWxzZSBlLnB1c2goTmUuYnVmZmVyLEVlLmJ1ZmZlcik7cmV0dXJue3ZlcnRpY2VzOk5lLmJ1ZmZlcixlbmNvZGVkTm9ybWFsczp1bixpbmRpY2VzOkVlLmJ1ZmZlcixtaW5pbXVtSGVpZ2h0Om90LG1heGltdW1IZWlnaHQ6UHQsd2VzdEluZGljZXM6bnQsc291dGhJbmRpY2VzOmF0LGVhc3RJbmRpY2VzOmx0LG5vcnRoSW5kaWNlczpfdCxib3VuZGluZ1NwaGVyZTpyZSxvcmllbnRlZEJvdW5kaW5nQm94OmRlLGhvcml6b25PY2NsdXNpb25Qb2ludDpadH19ZnVuY3Rpb24gSG4oKXt0aGlzLnZlcnRleEJ1ZmZlcj12b2lkIDAsdGhpcy5pbmRleD12b2lkIDAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5zZWNvbmQ9dm9pZCAwLHRoaXMucmF0aW89dm9pZCAwfWZ1bmN0aW9uIGx4KHQsZSl7KytFbTtsZXQgbj1ka1tFbV0sbz1ta1tFbV07cmV0dXJuIG49bm4ub2N0RGVjb2RlKHQuZmlyc3QuZ2V0Tm9ybWFsWCgpLHQuZmlyc3QuZ2V0Tm9ybWFsWSgpLG4pLG89bm4ub2N0RGVjb2RlKHQuc2Vjb25kLmdldE5vcm1hbFgoKSx0LnNlY29uZC5nZXROb3JtYWxZKCksbyksWWk9YS5sZXJwKG4sbyx0LnJhdGlvLFlpKSxhLm5vcm1hbGl6ZShZaSxZaSksbm4ub2N0RW5jb2RlKFlpLGUpLC0tRW0sZX1mdW5jdGlvbiB1eCh0LGUsbixvLHIsaSxzLGYsdSl7aWYocy5sZW5ndGg9PT0wKXJldHVybjtsZXQgYz0wLGw9MDtmb3IoO2w8cy5sZW5ndGg7KWw9am9bYysrXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQocyxsLGYpO2ZvcihsZXQgcD0wO3A8YzsrK3Ape2xldCBkPWpvW3BdO2lmKGQuaXNJbmRleGVkKCkpZC5uZXdJbmRleD1pW2QuaW5kZXhdLGQudUJ1ZmZlcj10LGQudkJ1ZmZlcj1lLGQuaGVpZ2h0QnVmZmVyPW4sdSYmKGQubm9ybWFsQnVmZmVyPW8pO2Vsc2V7bGV0IGg9ZC5nZXRLZXkoKTtpZihtKGlbaF0pKWQubmV3SW5kZXg9aVtoXTtlbHNle2xldCBfPXQubGVuZ3RoO3QucHVzaChkLmdldFUoKSksZS5wdXNoKGQuZ2V0VigpKSxuLnB1c2goZC5nZXRIKCkpLHUmJihvLnB1c2goZC5nZXROb3JtYWxYKCkpLG8ucHVzaChkLmdldE5vcm1hbFkoKSkpLGQubmV3SW5kZXg9XyxpW2hdPV99fX1jPT09Mz8oci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMV0ubmV3SW5kZXgpLHIucHVzaChqb1syXS5uZXdJbmRleCkpOmM9PT00JiYoci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMV0ubmV3SW5kZXgpLHIucHVzaChqb1syXS5uZXdJbmRleCksci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMl0ubmV3SW5kZXgpLHIucHVzaChqb1szXS5uZXdJbmRleCkpfXZhciBqbixacix0ayxmeCxlayxPbSxZaSxuayxvayxyayxpayxzayxjayxhayxmayx1ayxsayxIYSxFbSxkayxtayxqbyxoayxoMT0kKCgpPT57ZnMoKTt2ZSgpO2tlKCk7RHQoKTtJZSgpO2Z0KCk7JHQoKTtjdSgpO1plKCk7YXgoKTtLdCgpO2RhKCk7VG4oKTthdSgpO1puKCk7am49MzI3NjcsWnI9am4vMnwwLHRrPVtdLGZ4PVtdLGVrPVtdLE9tPW5ldyBjdCxZaT1uZXcgYSxuaz1bXSxvaz1bXSxyaz1bXSxpaz1bXSxzaz1bXSxjaz1uZXcgYSxhaz1uZXcgQXQsZms9bmV3IENvLHVrPW5ldyBKLGxrPW5ldyBhO0huLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KXx8KHQ9bmV3IEhuKSx0LnVCdWZmZXI9dGhpcy51QnVmZmVyLHQudkJ1ZmZlcj10aGlzLnZCdWZmZXIsdC5oZWlnaHRCdWZmZXI9dGhpcy5oZWlnaHRCdWZmZXIsdC5ub3JtYWxCdWZmZXI9dGhpcy5ub3JtYWxCdWZmZXIsdC5pbmRleD10aGlzLmluZGV4LHQuZmlyc3Q9dGhpcy5maXJzdCx0LnNlY29uZD10aGlzLnNlY29uZCx0LnJhdGlvPXRoaXMucmF0aW8sdH07SG4ucHJvdG90eXBlLmluaXRpYWxpemVJbmRleGVkPWZ1bmN0aW9uKHQsZSxuLG8scil7dGhpcy51QnVmZmVyPXQsdGhpcy52QnVmZmVyPWUsdGhpcy5oZWlnaHRCdWZmZXI9bix0aGlzLm5vcm1hbEJ1ZmZlcj1vLHRoaXMuaW5kZXg9cix0aGlzLmZpcnN0PXZvaWQgMCx0aGlzLnNlY29uZD12b2lkIDAsdGhpcy5yYXRpbz12b2lkIDB9O0huLnByb3RvdHlwZS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQ9ZnVuY3Rpb24odCxlLG4pe2xldCBvPWUrMTtyZXR1cm4gdFtlXSE9PS0xP25bdFtlXV0uY2xvbmUodGhpcyk6KHRoaXMudmVydGV4QnVmZmVyPXZvaWQgMCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLmZpcnN0PW5bdFtvXV0sKytvLHRoaXMuc2Vjb25kPW5bdFtvXV0sKytvLHRoaXMucmF0aW89dFtvXSwrK28pLG99O0huLnByb3RvdHlwZS5nZXRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZGV4ZWQoKT90aGlzLmluZGV4OkpTT04uc3RyaW5naWZ5KHtmaXJzdDp0aGlzLmZpcnN0LmdldEtleSgpLHNlY29uZDp0aGlzLnNlY29uZC5nZXRLZXkoKSxyYXRpbzp0aGlzLnJhdGlvfSl9O0huLnByb3RvdHlwZS5pc0luZGV4ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KX07SG4ucHJvdG90eXBlLmdldEg9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLmhlaWdodEJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRIKCksdGhpcy5zZWNvbmQuZ2V0SCgpLHRoaXMucmF0aW8pfTtIbi5wcm90b3R5cGUuZ2V0VT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMudUJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRVKCksdGhpcy5zZWNvbmQuZ2V0VSgpLHRoaXMucmF0aW8pfTtIbi5wcm90b3R5cGUuZ2V0Vj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMudkJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRWKCksdGhpcy5zZWNvbmQuZ2V0VigpLHRoaXMucmF0aW8pfTtIYT1uZXcgSixFbT0tMSxkaz1bbmV3IGEsbmV3IGFdLG1rPVtuZXcgYSxuZXcgYV07SG4ucHJvdG90eXBlLmdldE5vcm1hbFg9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLm5vcm1hbEJ1ZmZlclt0aGlzLmluZGV4KjJdOihIYT1seCh0aGlzLEhhKSxIYS54KX07SG4ucHJvdG90eXBlLmdldE5vcm1hbFk9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLm5vcm1hbEJ1ZmZlclt0aGlzLmluZGV4KjIrMV06KEhhPWx4KHRoaXMsSGEpLEhhLnkpfTtqbz1bXTtqby5wdXNoKG5ldyBIbik7am8ucHVzaChuZXcgSG4pO2pvLnB1c2gobmV3IEhuKTtqby5wdXNoKG5ldyBIbik7aGs9VWUocGspfSk7dmFyIF9rLF8xPSQoKCk9Pntfaz1UMSh7Ii4vY29tYmluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGYwKCksYTApKSwiLi9jcmVhdGVCb3hHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkMCgpLHAwKSksIi4vY3JlYXRlQm94T3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KF8wKCksaDApKSwiLi9jcmVhdGVDaXJjbGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihTMCgpLFIwKSksIi4vY3JlYXRlQ2lyY2xlT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE0wKCksUDApKSwiLi9jcmVhdGVDb3BsYW5hclBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih6MCgpLFYwKSksIi4vY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHEwKCksSDApKSwiLi9jcmVhdGVDb3JyaWRvckdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGFfKCksY18pKSwiLi9jcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihsXygpLHVfKSksIi4vY3JlYXRlQ3lsaW5kZXJHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih5XygpLF9fKSksIi4vY3JlYXRlQ3lsaW5kZXJPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4od18oKSxiXykpLCIuL2NyZWF0ZUVsbGlwc2VHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihPXygpLFRfKSksIi4vY3JlYXRlRWxsaXBzZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihSXygpLEVfKSksIi4vY3JlYXRlRWxsaXBzb2lkR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oQ18oKSx4XykpLCIuL2NyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihOXygpLE1fKSksIi4vY3JlYXRlRnJ1c3R1bUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEdfKCksa18pKSwiLi9jcmVhdGVGcnVzdHVtT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEhfKCksal8pKSwiLi9jcmVhdGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihnMSgpLHkxKSksIi4vY3JlYXRlR3JvdW5kUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihveSgpLG55KSksIi4vY3JlYXRlUGxhbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihzeSgpLGl5KSksIi4vY3JlYXRlUGxhbmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZnkoKSxheSkpLCIuL2NyZWF0ZVBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkeSgpLHB5KSksIi4vY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihfeSgpLGh5KSksIi4vY3JlYXRlUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihUeSgpLHd5KSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihSeSgpLEV5KSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oQ3koKSx4eSkpLCIuL2NyZWF0ZVJlY3RhbmdsZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEJ5KCksRHkpKSwiLi9jcmVhdGVSZWN0YW5nbGVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oR3koKSxreSkpLCIuL2NyZWF0ZVNpbXBsZVBvbHlsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oankoKSx6eSkpLCIuL2NyZWF0ZVNwaGVyZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEt5KCkscXkpKSwiLi9jcmVhdGVTcGhlcmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oWXkoKSxYeSkpLCIuL2NyZWF0ZVRhc2tQcm9jZXNzb3JXb3JrZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oWm4oKSxjMCkpLCIuL2NyZWF0ZVZlY3RvclRpbGVDbGFtcGVkUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFp5KCksJHkpKSwiLi9jcmVhdGVWZWN0b3JUaWxlR2VvbWV0cmllcy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihKeSgpLFF5KSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvaW50cy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihuZygpLGVnKSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvbHlnb25zLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHJnKCksb2cpKSwiLi9jcmVhdGVWZWN0b3JUaWxlUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGNnKCksc2cpKSwiLi9jcmVhdGVWZXJ0aWNlc0Zyb21Hb29nbGVFYXJ0aEVudGVycHJpc2VCdWZmZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4ocGcoKSxsZykpLCIuL2NyZWF0ZVZlcnRpY2VzRnJvbUhlaWdodG1hcC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihoZygpLG1nKSksIi4vY3JlYXRlVmVydGljZXNGcm9tUXVhbnRpemVkVGVycmFpbk1lc2guanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZ2coKSx5ZykpLCIuL2NyZWF0ZVdhbGxHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihPZygpLFRnKSksIi4vY3JlYXRlV2FsbE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihTZygpLFJnKSksIi4vZGVjb2RlRHJhY28uanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oSWcoKSxOZykpLCIuL2RlY29kZUdvb2dsZUVhcnRoRW50ZXJwcmlzZVBhY2tldC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihZZygpLFhnKSksIi4vZGVjb2RlSTNTLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHQxKCksSmcpKSwiLi9nYXVzc2lhblNwbGF0U29ydGVyLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGkxKCkscjEpKSwiLi9nYXVzc2lhblNwbGF0VGV4dHVyZUdlbmVyYXRvci5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihjMSgpLHMxKSksIi4vdHJhbnNjb2RlS1RYMi5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihwMSgpLGwxKSksIi4vdHJhbnNmZXJUeXBlZEFycmF5VGVzdC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkMSgpLGN4KSksIi4vdXBzYW1wbGVRdWFudGl6ZWRUZXJyYWluTWVzaC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihoMSgpLG0xKSl9KX0pO3ZhciB5MT17fTtsZSh5MSx7ZGVmYXVsdDooKT0+QWt9KTthc3luYyBmdW5jdGlvbiB5ayh0LGUpe2xldCBuPVJtW2VdPz9SbVt0XTtyZXR1cm4gbShuKT9uOm0oZSk/KHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9uPWRyKGUpOm49KGF3YWl0IGltcG9ydChlKSkuZGVmYXVsdCxSbVtlXT1uLG4pOih0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/bj1kcihgV29ya2Vycy8ke3R9YCk6bj0obShlKT9hd2FpdCBpbXBvcnQoZSk6YXdhaXQgX2soYC4vJHt0fS5qc2ApKS5kZWZhdWx0LFJtW3RdPW4sbil9YXN5bmMgZnVuY3Rpb24gZ2sodCxlKXtsZXQgbj10LnN1YlRhc2tzLG89bi5sZW5ndGgscj1uZXcgQXJyYXkobyk7Zm9yKGxldCBpPTA7aTxvO2krKyl7bGV0IHM9bltpXSxmPXMuZ2VvbWV0cnksdT1zLm1vZHVsZU5hbWUsYz1zLm1vZHVsZVBhdGg7aWYobSh1KSYmbShjKSl0aHJvdyBuZXcgRCgiTXVzdCBvbmx5IHNldCBtb2R1bGVOYW1lIG9yIG1vZHVsZVBhdGgiKTttKHUpfHxtKGMpP3JbaV09eWsodSxjKS50aGVuKGw9PmwoZixzLm9mZnNldCkpOnJbaV09Zn1yZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihmdW5jdGlvbihpKXtyZXR1cm4gY2EucGFja0NyZWF0ZUdlb21ldHJ5UmVzdWx0cyhpLGUpfSl9dmFyIFJtLEFrLGcxPSQoKCk9PntIdCgpO2Z0KCk7czAoKTtabigpO18xKCk7Um09e307QWs9VWUoZ2spfSk7dmFyIF9HPXt9O2xlKF9HLHtjb21iaW5lR2VvbWV0cnk6KCk9PmJrLGNyZWF0ZUJveEdlb21ldHJ5OigpPT53ayxjcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnk6KCk9PlRrLGNyZWF0ZUNpcmNsZUdlb21ldHJ5OigpPT5PayxjcmVhdGVDaXJjbGVPdXRsaW5lR2VvbWV0cnk6KCk9PkVrLGNyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5OigpPT5SayxjcmVhdGVDb3BsYW5hclBvbHlnb25PdXRsaW5lR2VvbWV0cnk6KCk9PlNrLGNyZWF0ZUNvcnJpZG9yR2VvbWV0cnk6KCk9PnhrLGNyZWF0ZUNvcnJpZG9yT3V0bGluZUdlb21ldHJ5OigpPT5DayxjcmVhdGVDeWxpbmRlckdlb21ldHJ5OigpPT5QayxjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeTooKT0+TWssY3JlYXRlRWxsaXBzZUdlb21ldHJ5OigpPT5OayxjcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5OigpPT5JayxjcmVhdGVFbGxpcHNvaWRHZW9tZXRyeTooKT0+dmssY3JlYXRlRWxsaXBzb2lkT3V0bGluZUdlb21ldHJ5OigpPT5GayxjcmVhdGVGcnVzdHVtR2VvbWV0cnk6KCk9PkxrLGNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnk6KCk9PkRrLGNyZWF0ZUdlb21ldHJ5OigpPT5CayxjcmVhdGVHcm91bmRQb2x5bGluZUdlb21ldHJ5OigpPT5VayxjcmVhdGVQbGFuZUdlb21ldHJ5OigpPT5rayxjcmVhdGVQbGFuZU91dGxpbmVHZW9tZXRyeTooKT0+R2ssY3JlYXRlUG9seWdvbkdlb21ldHJ5OigpPT5WayxjcmVhdGVQb2x5Z29uT3V0bGluZUdlb21ldHJ5OigpPT56ayxjcmVhdGVQb2x5bGluZUdlb21ldHJ5OigpPT5qayxjcmVhdGVQb2x5bGluZVZvbHVtZUdlb21ldHJ5OigpPT5IayxjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeTooKT0+cWssY3JlYXRlUmVjdGFuZ2xlR2VvbWV0cnk6KCk9PktrLGNyZWF0ZVJlY3RhbmdsZU91dGxpbmVHZW9tZXRyeTooKT0+V2ssY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeTooKT0+WGssY3JlYXRlU3BoZXJlR2VvbWV0cnk6KCk9PllrLGNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeTooKT0+JGssY3JlYXRlVGFza1Byb2Nlc3NvcldvcmtlcjooKT0+WmssY3JlYXRlVmVjdG9yVGlsZUNsYW1wZWRQb2x5bGluZXM6KCk9PlFrLGNyZWF0ZVZlY3RvclRpbGVHZW9tZXRyaWVzOigpPT5KayxjcmVhdGVWZWN0b3JUaWxlUG9pbnRzOigpPT50RyxjcmVhdGVWZWN0b3JUaWxlUG9seWdvbnM6KCk9PmVHLGNyZWF0ZVZlY3RvclRpbGVQb2x5bGluZXM6KCk9Pm5HLGNyZWF0ZVZlcnRpY2VzRnJvbUdvb2dsZUVhcnRoRW50ZXJwcmlzZUJ1ZmZlcjooKT0+b0csY3JlYXRlVmVydGljZXNGcm9tSGVpZ2h0bWFwOigpPT5yRyxjcmVhdGVWZXJ0aWNlc0Zyb21RdWFudGl6ZWRUZXJyYWluTWVzaDooKT0+aUcsY3JlYXRlV2FsbEdlb21ldHJ5OigpPT5zRyxjcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5OigpPT5jRyxkZWNvZGVEcmFjbzooKT0+YUcsZGVjb2RlR29vZ2xlRWFydGhFbnRlcnByaXNlUGFja2V0OigpPT5mRyxkZWNvZGVJM1M6KCk9PnVHLGdhdXNzaWFuU3BsYXRTb3J0ZXI6KCk9PmxHLGdhdXNzaWFuU3BsYXRUZXh0dXJlR2VuZXJhdG9yOigpPT5wRyx0cmFuc2NvZGVLVFgyOigpPT5kRyx0cmFuc2ZlclR5cGVkQXJyYXlUZXN0OigpPT5tRyx1cHNhbXBsZVF1YW50aXplZFRlcnJhaW5NZXNoOigpPT5oR30pO3ZhciBiaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmYwKCkpfSx3az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmQwKCkpfSxUaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pl8wKCkpfSxPaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlMwKCkpfSxFaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk0wKCkpfSxSaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnowKCkpfSxTaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnEwKCkpfSx4az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmFfKCkpfSxDaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmxfKCkpfSxQaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnlfKCkpfSxNaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PndfKCkpfSxOaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9fKCkpfSxJaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlJfKCkpfSx2az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkNfKCkpfSxGaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk5fKCkpfSxMaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkdfKCkpfSxEaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkhfKCkpfSxCaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmcxKCkpfSxVaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pm95KCkpfSxraz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnN5KCkpfSxHaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmZ5KCkpfSxWaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmR5KCkpfSx6az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pl95KCkpfSxqaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlR5KCkpfSxIaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlJ5KCkpfSxxaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkN5KCkpfSxLaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkJ5KCkpfSxXaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkd5KCkpfSxYaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pmp5KCkpfSxZaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkt5KCkpfSwkaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pll5KCkpfSxaaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlpuKCkpfSxRaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Plp5KCkpfSxKaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkp5KCkpfSx0Rz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pm5nKCkpfSxlRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnJnKCkpfSxuRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmNnKCkpfSxvRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnBnKCkpfSxyRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmhnKCkpfSxpRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmdnKCkpfSxzRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9nKCkpfSxjRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlNnKCkpfSxhRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PklnKCkpfSxmRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PllnKCkpfSx1Rz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnQxKCkpfSxsRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmkxKCkpfSxwRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmMxKCkpfSxkRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnAxKCkpfSxtRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmQxKCkpfSxoRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmgxKCkpfTtyZXR1cm4gZ3goX0cpO30pKCk7Cg==")});var T9=Pu((YVt,Xee)=>{var OVt=y(C()),kp=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};kp.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};kp.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};kp.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n>>1^t[e&1];for(;n>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};kp.prototype.random_int31=function(){return this.random_int()>>>1};kp.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};kp.prototype.random=function(){return this.random_int()*(1/4294967296)};kp.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};kp.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};Xee.exports=kp});var Hee=Pu((G_,Z_)=>{var sZt=y(C());/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof G_=="object"&&G_&&!G_.nodeType&&G_,n=typeof Z_=="object"&&Z_&&!Z_.nodeType&&Z_,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,d=38,u=700,h=72,p=128,g="-",f=/^xn--/,b=/[^\x20-\x7E]/,x=/[\x2E\u3002\uFF0E\uFF61]/g,I={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},_=s-a,E=Math.floor,S=String.fromCharCode,R;function G(N){throw new RangeError(I[N])}function B(N,k){for(var v=N.length,O=[];v--;)O[v]=k(N[v]);return O}function w(N,k){var v=N.split("@"),O="";v.length>1&&(O=v[0]+"@",N=v[1]),N=N.replace(x,".");var H=N.split("."),ee=B(H,k).join(".");return O+ee}function F(N){for(var k=[],v=0,O=N.length,H,ee;v=55296&&H<=56319&&v65535&&(k-=65536,v+=S(k>>>10&1023|55296),k=56320|k&1023),v+=S(k),v}).join("")}function A(N){return N-48<10?N-22:N-65<26?N-65:N-97<26?N-97:s}function T(N,k){return N+22+75*(N<26)-((k!=0)<<5)}function L(N,k,v){var O=0;for(N=v?E(N/u):N>>1,N+=E(N/k);N>_*c>>1;O+=s)N=E(N/_);return E(O+(_+1)*N/(N+d))}function V(N){var k=[],v=N.length,O,H=0,ee=p,K=h,te,q,pe,ye,he,xe,Te,Be,Le;for(te=N.lastIndexOf(g),te<0&&(te=0),q=0;q=128&&G("not-basic"),k.push(N.charCodeAt(q));for(pe=te>0?te+1:0;pe=v&&G("invalid-input"),Te=A(N.charCodeAt(pe++)),(Te>=s||Te>E((r-H)/he))&&G("overflow"),H+=Te*he,Be=xe<=K?a:xe>=K+c?c:xe-K,!(TeE(r/Le)&&G("overflow"),he*=Le;O=k.length+1,K=L(H-ye,O,ye==0),E(H/O)>r-ee&&G("overflow"),ee+=E(H/O),H%=O,k.splice(H++,0,ee)}return P(k)}function W(N){var k,v,O,H,ee,K,te,q,pe,ye,he,xe=[],Te,Be,Le,De;for(N=F(N),Te=N.length,k=p,v=0,ee=h,K=0;K=k&&heE((r-v)/Be)&&G("overflow"),v+=(te-k)*Be,k=te,K=0;Kr&&G("overflow"),he==k){for(q=v,pe=s;ye=pe<=ee?a:pe>=ee+c?c:pe-ee,!(q{var aZt=y(C());/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof X9=="object"&&X9.exports?X9.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(zee,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var d;for(d=0;d1);p++)u.splice(0,1);s[h]=u.join("")}var g=-1,f=0,b=0,x=-1,I=!1;for(h=0;hf&&(g=x,f=b)):s[h]==="0"&&(I=!0,x=h,b=1);b>f&&(g=x,f=b),f>1&&s.splice(g,f,""),a=s.length;var _="";for(s[0]===""&&(_=":"),h=0;h{var cZt=y(C());/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof W9=="object"&&W9.exports?W9.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(Jee,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var Bd=Pu((qee,F9)=>{var lZt=y(C());/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof F9=="object"&&F9.exports?F9.exports=t(Hee(),Kee(),jee()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(qee,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(T,L){var V=arguments.length>=1,W=arguments.length>=2;if(!(this instanceof r))return V?W?new r(T,L):new r(T):new r;if(T===void 0){if(V)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?T=location.href+"":T=""}if(T===null&&V)throw new TypeError("null is not a valid argument for URI");return this.href(T),L!==void 0?this.absoluteTo(L):this}function s(T){return/^[0-9]+$/.test(T)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function d(T){return T.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function u(T){return T===void 0?"Undefined":String(Object.prototype.toString.call(T)).slice(8,-1)}function h(T){return u(T)==="Array"}function p(T,L){var V={},W,M;if(u(L)==="RegExp")V=null;else if(h(L))for(W=0,M=L.length;W]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(T){if(!(!T||!T.nodeName)){var L=T.nodeName.toLowerCase();if(!(L==="input"&&T.type!=="image"))return r.domAttributes[L]}};function x(T){return escape(T)}function I(T){return encodeURIComponent(T).replace(/[!'()*]/g,x).replace(/\*/g,"%2A")}r.encode=I,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=I,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(T,L){var V=r.encode(T+"");return L===void 0&&(L=r.escapeQuerySpace),L?V.replace(/%20/g,"+"):V},r.decodeQuery=function(T,L){T+="",L===void 0&&(L=r.escapeQuerySpace);try{return r.decode(L?T.replace(/\+/g,"%20"):T)}catch{return T}};var _={encode:"encode",decode:"decode"},E,S=function(T,L){return function(V){try{return r[L](V+"").replace(r.characters[T][L].expression,function(W){return r.characters[T][L].map[W]})}catch{return V}}};for(E in _)r[E+"PathSegment"]=S("pathname",_[E]),r[E+"UrnPathSegment"]=S("urnpath",_[E]);var R=function(T,L,V){return function(W){var M;V?M=function(v){return r[L](r[V](v))}:M=r[L];for(var Q=(W+"").split(T),N=0,k=Q.length;N-1&&(L.fragment=T.substring(V+1)||null,T=T.substring(0,V)),V=T.indexOf("?"),V>-1&&(L.query=T.substring(V+1)||null,T=T.substring(0,V)),T=T.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),T=T.replace(/^[/\\]{2,}/i,"//"),T.substring(0,2)==="//"?(L.protocol=null,T=T.substring(2),T=r.parseAuthority(T,L)):(V=T.indexOf(":"),V>-1&&(L.protocol=T.substring(0,V)||null,L.protocol&&!L.protocol.match(r.protocol_expression)?L.protocol=void 0:T.substring(V+1,V+3).replace(/\\/g,"/")==="//"?(T=T.substring(V+3),T=r.parseAuthority(T,L)):(T=T.substring(V+1),L.urn=!0))),L.path=T,L},r.parseHost=function(T,L){T||(T=""),T=T.replace(/\\/g,"/");var V=T.indexOf("/"),W,M;if(V===-1&&(V=T.length),T.charAt(0)==="[")W=T.indexOf("]"),L.hostname=T.substring(1,W)||null,L.port=T.substring(W+2,V)||null,L.port==="/"&&(L.port=null);else{var Q=T.indexOf(":"),N=T.indexOf("/"),k=T.indexOf(":",Q+1);k!==-1&&(N===-1||k-1?M:T.length-1),N;return Q>-1&&(M===-1||Q-1?K=K.slice(0,te)+K.slice(te).replace(Q,""):K=K.replace(Q,""),!(K.length<=v[0].length)&&!(V.ignore&&V.ignore.test(K))){ee=O+K.length;var ye=L(K,O,ee,T);if(ye===void 0){W.lastIndex=ee;continue}ye=String(ye),T=T.slice(0,O)+ye+T.slice(ee),W.lastIndex=O+ye.length}}return W.lastIndex=0,T},r.ensureValidHostname=function(T,L){var V=!!T,W=!!L,M=!1;if(W&&(M=g(r.hostProtocols,L)),M&&!V)throw new TypeError("Hostname cannot be empty, if protocol is "+L);if(T&&T.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(T).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(T){if(T){var L=Number(T);if(!(s(L)&&L>0&&L<65536))throw new TypeError('Port "'+T+'" is not a valid port')}},r.noConflict=function(T){if(T){var L={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(L.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(L.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(L.SecondLevelDomains=i.SecondLevelDomains.noConflict()),L}else i.URI===this&&(i.URI=o);return this},a.build=function(T){return T===!0?this._deferred_build=!0:(T===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function G(T){return function(L,V){return L===void 0?this._parts[T]||"":(this._parts[T]=L||null,this.build(!V),this)}}function B(T,L){return function(V,W){return V===void 0?this._parts[T]||"":(V!==null&&(V=V+"",V.charAt(0)===L&&(V=V.substring(1))),this._parts[T]=V,this.build(!W),this)}}a.protocol=G("protocol"),a.username=G("username"),a.password=G("password"),a.hostname=G("hostname"),a.port=G("port"),a.query=B("query","?"),a.fragment=B("fragment","#"),a.search=function(T,L){var V=this.query(T,L);return typeof V=="string"&&V.length?"?"+V:V},a.hash=function(T,L){var V=this.fragment(T,L);return typeof V=="string"&&V.length?"#"+V:V},a.pathname=function(T,L){if(T===void 0||T===!0){var V=this._parts.path||(this._parts.hostname?"/":"");return T?(this._parts.urn?r.decodeUrnPath:r.decodePath)(V):V}else return this._parts.urn?this._parts.path=T?r.recodeUrnPath(T):"":this._parts.path=T?r.recodePath(T):"/",this.build(!L),this},a.path=a.pathname,a.href=function(T,L){var V;if(T===void 0)return this.toString();this._string="",this._parts=r._parts();var W=T instanceof r,M=typeof T=="object"&&(T.hostname||T.path||T.pathname);if(T.nodeName){var Q=r.getDomAttribute(T);T=T[Q]||"",M=!1}if(!W&&M&&T.pathname!==void 0&&(T=T.toString()),typeof T=="string"||T instanceof String)this._parts=r.parse(String(T),this._parts);else if(W||M){var N=W?T._parts:T;for(V in N)V!=="query"&&c.call(this._parts,V)&&(this._parts[V]=N[V]);N.query&&this.query(N.query,!1)}else throw new TypeError("invalid input");return this.build(!L),this},a.is=function(T){var L=!1,V=!1,W=!1,M=!1,Q=!1,N=!1,k=!1,v=!this._parts.urn;switch(this._parts.hostname&&(v=!1,V=r.ip4_expression.test(this._parts.hostname),W=r.ip6_expression.test(this._parts.hostname),L=V||W,M=!L,Q=M&&n&&n.has(this._parts.hostname),N=M&&r.idn_expression.test(this._parts.hostname),k=M&&r.punycode_expression.test(this._parts.hostname)),T.toLowerCase()){case"relative":return v;case"absolute":return!v;case"domain":case"name":return M;case"sld":return Q;case"ip":return L;case"ip4":case"ipv4":case"inet4":return V;case"ip6":case"ipv6":case"inet6":return W;case"idn":return N;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return k}return null};var w=a.protocol,F=a.port,P=a.hostname;a.protocol=function(T,L){if(T&&(T=T.replace(/:(\/\/)?$/,""),!T.match(r.protocol_expression)))throw new TypeError('Protocol "'+T+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return w.call(this,T,L)},a.scheme=a.protocol,a.port=function(T,L){return this._parts.urn?T===void 0?"":this:(T!==void 0&&(T===0&&(T=null),T&&(T+="",T.charAt(0)===":"&&(T=T.substring(1)),r.ensureValidPort(T))),F.call(this,T,L))},a.hostname=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T!==void 0){var V={preventInvalidHostname:this._parts.preventInvalidHostname},W=r.parseHost(T,V);if(W!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');T=V.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(T,this._parts.protocol)}return P.call(this,T,L)},a.origin=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){var V=this.protocol(),W=this.authority();return W?(V?V+"://":"")+this.authority():""}else{var M=r(T);return this.protocol(M.protocol()).authority(M.authority()).build(!L),this}},a.host=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var V=r.parseHost(T,this._parts);if(V!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');return this.build(!L),this},a.authority=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var V=r.parseAuthority(T,this._parts);if(V!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');return this.build(!L),this},a.userinfo=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){var V=r.buildUserinfo(this._parts);return V&&V.substring(0,V.length-1)}else return T[T.length-1]!=="@"&&(T+="@"),r.parseUserinfo(T,this._parts),this.build(!L),this},a.resource=function(T,L){var V;return T===void 0?this.path()+this.search()+this.hash():(V=r.parse(T),this._parts.path=V.path,this._parts.query=V.query,this._parts.fragment=V.fragment,this.build(!L),this)},a.subdomain=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,V)||""}else{var W=this._parts.hostname.length-this.domain().length,M=this._parts.hostname.substring(0,W),Q=new RegExp("^"+d(M));if(T&&T.charAt(T.length-1)!=="."&&(T+="."),T.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return T&&r.ensureValidHostname(T,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(Q,T),this.build(!L),this}},a.domain=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T=="boolean"&&(L=T,T=void 0),T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.match(/\./g);if(V&&V.length<2)return this._parts.hostname;var W=this._parts.hostname.length-this.tld(L).length-1;return W=this._parts.hostname.lastIndexOf(".",W-1)+1,this._parts.hostname.substring(W)||""}else{if(!T)throw new TypeError("cannot set domain empty");if(T.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(T,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=T;else{var M=new RegExp(d(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(M,T)}return this.build(!L),this}},a.tld=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T=="boolean"&&(L=T,T=void 0),T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.lastIndexOf("."),W=this._parts.hostname.substring(V+1);return L!==!0&&n&&n.list[W.toLowerCase()]&&n.get(this._parts.hostname)||W}else{var M;if(T)if(T.match(/[^a-zA-Z0-9-]/))if(n&&n.is(T))M=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(M,T);else throw new TypeError('TLD "'+T+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");M=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(M,T)}else throw new TypeError("cannot set TLD empty");return this.build(!L),this}},a.directory=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0||T===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var V=this._parts.path.length-this.filename().length-1,W=this._parts.path.substring(0,V)||(this._parts.hostname?"/":"");return T?r.decodePath(W):W}else{var M=this._parts.path.length-this.filename().length,Q=this._parts.path.substring(0,M),N=new RegExp("^"+d(Q));return this.is("relative")||(T||(T="/"),T.charAt(0)!=="/"&&(T="/"+T)),T&&T.charAt(T.length-1)!=="/"&&(T+="/"),T=r.recodePath(T),this._parts.path=this._parts.path.replace(N,T),this.build(!L),this}},a.filename=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T!="string"){if(!this._parts.path||this._parts.path==="/")return"";var V=this._parts.path.lastIndexOf("/"),W=this._parts.path.substring(V+1);return T?r.decodePathSegment(W):W}else{var M=!1;T.charAt(0)==="/"&&(T=T.substring(1)),T.match(/\.?\//)&&(M=!0);var Q=new RegExp(d(this.filename())+"$");return T=r.recodePath(T),this._parts.path=this._parts.path.replace(Q,T),M?this.normalizePath(L):this.build(!L),this}},a.suffix=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0||T===!0){if(!this._parts.path||this._parts.path==="/")return"";var V=this.filename(),W=V.lastIndexOf("."),M,Q;return W===-1?"":(M=V.substring(W+1),Q=/^[a-z0-9%]+$/i.test(M)?M:"",T?r.decodePathSegment(Q):Q)}else{T.charAt(0)==="."&&(T=T.substring(1));var N=this.suffix(),k;if(N)T?k=new RegExp(d(N)+"$"):k=new RegExp(d("."+N)+"$");else{if(!T)return this;this._parts.path+="."+r.recodePath(T)}return k&&(T=r.recodePath(T),this._parts.path=this._parts.path.replace(k,T)),this.build(!L),this}},a.segment=function(T,L,V){var W=this._parts.urn?":":"/",M=this.path(),Q=M.substring(0,1)==="/",N=M.split(W);if(T!==void 0&&typeof T!="number"&&(V=L,L=T,T=void 0),T!==void 0&&typeof T!="number")throw new Error('Bad segment "'+T+'", must be 0-based integer');if(Q&&N.shift(),T<0&&(T=Math.max(N.length+T,0)),L===void 0)return T===void 0?N:N[T];if(T===null||N[T]===void 0)if(h(L)){N=[];for(var k=0,v=L.length;k{"use strict";var wUn=y(C());xue.exports=QJe;var t2=1e20;function QJe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,d,u,h,p,g,f,b;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?u=t.stride:u=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(p=e,h=p.getContext("2d"),r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,u=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(p=e.canvas,h=e,r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,u=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,u=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(d=c,c=Array(r*s),f=0,b=Math.floor(d.length/u);f{var $Un=y(C());function $Je(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,d=9,u=10,h=11,p=12,g=13,f=14,b=15,x=16,I=17,_=0,E=1,S=2,R=3,G=4;function B(A,T){return 55296<=A.charCodeAt(T)&&A.charCodeAt(T)<=56319&&56320<=A.charCodeAt(T+1)&&A.charCodeAt(T+1)<=57343}function w(A,T){T===void 0&&(T=0);var L=A.charCodeAt(T);if(55296<=L&&L<=56319&&T=1){var V=A.charCodeAt(T-1),W=L;return 55296<=V&&V<=56319?(V-55296)*1024+(W-56320)+65536:W}return L}function F(A,T,L){var V=[A].concat(T).concat([L]),W=V[V.length-2],M=L,Q=V.lastIndexOf(f);if(Q>1&&V.slice(1,Q).every(function(v){return v==i})&&[i,g,I].indexOf(A)==-1)return S;var N=V.lastIndexOf(o);if(N>0&&V.slice(1,N).every(function(v){return v==o})&&[p,o].indexOf(W)==-1)return V.filter(function(v){return v==o}).length%2==1?R:G;if(W==e&&M==t)return _;if(W==n||W==e||W==t)return M==f&&T.every(function(v){return v==i})?S:E;if(M==n||M==e||M==t)return E;if(W==s&&(M==s||M==a||M==d||M==u))return _;if((W==d||W==a)&&(M==a||M==c))return _;if((W==u||W==c)&&M==c)return _;if(M==i||M==b)return _;if(M==r)return _;if(W==p)return _;var k=V.indexOf(i)!=-1?V.lastIndexOf(i)-1:V.length-2;return[g,I].indexOf(V[k])!=-1&&V.slice(k+1,-1).every(function(v){return v==i})&&M==f||W==b&&[x,I].indexOf(M)!=-1?_:T.indexOf(o)!=-1?S:W==o&&M==o?_:E}this.nextBreak=function(A,T){if(T===void 0&&(T=0),T<0)return 0;if(T>=A.length-1)return A.length;for(var L=P(w(A,T)),V=[],W=T+1;W{var weo=y(C());/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,d=!0;c1&&d.charAt(u)==="=";)++h;return Math.ceil(d.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(d,u,h){for(var p=null,g=[],f=0,b=0,x;u>2],x=(I&3)<<4,b=1;break;case 1:g[f++]=o[x|I>>4],x=(I&15)<<2,b=2;break;case 2:g[f++]=o[x|I>>6],g[f++]=o[I&63],b=0;break}f>8191&&((p||(p=[])).push(String.fromCharCode.apply(String,g)),f=0)}return b&&(g[f++]=o[x],g[f++]=61,b===1&&(g[f++]=61)),p?(f&&p.push(String.fromCharCode.apply(String,g.slice(0,f))),p.join("")):String.fromCharCode.apply(String,g.slice(0,f))};var a="invalid encoding";i.decode=function(d,u,h){for(var p=h,g=0,f,b=0;b1)break;if((x=r[x])===undefined)throw Error(a);switch(g){case 0:f=x,g=1;break;case 1:u[h++]=f<<2|(x&48)>>4,f=x,g=2;break;case 2:u[h++]=(f&15)<<4|(x&60)>>2,f=x,g=3;break;case 3:u[h++]=(f&3)<<6|x,g=0;break}}if(g===1)throw Error(a);return h-p},i.test=function(d){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(d)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c0?0:2147483648,g,f);else if(isNaN(p))h(2143289344,g,f);else if(p>34028234663852886e22)h((b<<31|2139095040)>>>0,g,f);else if(p<11754943508222875e-54)h((b<<31|Math.round(p/1401298464324817e-60))>>>0,g,f);else{var x=Math.floor(Math.log(p)/Math.LN2),I=Math.round(p*Math.pow(2,-x)*8388608)&8388607;h((b<<31|x+127<<23|I)>>>0,g,f)}}c.writeFloatLE=d.bind(null,o),c.writeFloatBE=d.bind(null,r);function u(h,p,g){var f=h(p,g),b=(f>>31)*2+1,x=f>>>23&255,I=f&8388607;return x===255?I?NaN:b*(1/0):x===0?b*1401298464324817e-60*I:b*Math.pow(2,x-150)*(I+8388608)}c.readFloatLE=u.bind(null,s),c.readFloatBE=u.bind(null,a)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),u=new Uint8Array(d.buffer),h=u[7]===128;function p(x,I,_){d[0]=x,I[_]=u[0],I[_+1]=u[1],I[_+2]=u[2],I[_+3]=u[3],I[_+4]=u[4],I[_+5]=u[5],I[_+6]=u[6],I[_+7]=u[7]}function g(x,I,_){d[0]=x,I[_]=u[7],I[_+1]=u[6],I[_+2]=u[5],I[_+3]=u[4],I[_+4]=u[3],I[_+5]=u[2],I[_+6]=u[1],I[_+7]=u[0]}c.writeDoubleLE=h?p:g,c.writeDoubleBE=h?g:p;function f(x,I){return u[0]=x[I],u[1]=x[I+1],u[2]=x[I+2],u[3]=x[I+3],u[4]=x[I+4],u[5]=x[I+5],u[6]=x[I+6],u[7]=x[I+7],d[0]}function b(x,I){return u[7]=x[I],u[6]=x[I+1],u[5]=x[I+2],u[4]=x[I+3],u[3]=x[I+4],u[2]=x[I+5],u[1]=x[I+6],u[0]=x[I+7],d[0]}c.readDoubleLE=h?f:b,c.readDoubleBE=h?b:f}():function(){function d(h,p,g,f,b,x){var I=f<0?1:0;if(I&&(f=-f),f===0)h(0,b,x+p),h(1/f>0?0:2147483648,b,x+g);else if(isNaN(f))h(0,b,x+p),h(2146959360,b,x+g);else if(f>17976931348623157e292)h(0,b,x+p),h((I<<31|2146435072)>>>0,b,x+g);else{var _;if(f<22250738585072014e-324)_=f/5e-324,h(_>>>0,b,x+p),h((I<<31|_/4294967296)>>>0,b,x+g);else{var E=Math.floor(Math.log(f)/Math.LN2);E===1024&&(E=1023),_=f*Math.pow(2,-E),h(_*4503599627370496>>>0,b,x+p),h((I<<31|E+1023<<20|_*1048576&1048575)>>>0,b,x+g)}}}c.writeDoubleLE=d.bind(null,o,0,4),c.writeDoubleBE=d.bind(null,r,4,0);function u(h,p,g,f,b){var x=h(f,b+p),I=h(f,b+g),_=(I>>31)*2+1,E=I>>>20&2047,S=4294967296*(I&1048575)+x;return E===2047?S?NaN:_*(1/0):E===0?_*5e-324*S:_*Math.pow(2,E-1075)*(S+4503599627370496)}c.readDoubleLE=u.bind(null,s,0,4),c.readDoubleBE=u.bind(null,a,4,0)}(),c}function o(c,d,u){d[u]=c&255,d[u+1]=c>>>8&255,d[u+2]=c>>>16&255,d[u+3]=c>>>24}function r(c,d,u){d[u]=c>>>24,d[u+1]=c>>>16&255,d[u+2]=c>>>8&255,d[u+3]=c&255}function s(c,d){return(c[d]|c[d+1]<<8|c[d+2]<<16|c[d+3]<<24)>>>0}function a(c,d){return(c[d]<<24|c[d+1]<<16|c[d+2]<<8|c[d+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,d=null,u=a;return function(p){if(p<1||p>c)return o(p);u+p>a&&(d=o(a),u=0);var g=r.call(d,u,u+=p);return u&7&&(u=(u|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c191&&p<224?u[h++]=(p&31)<<6|r[s++]&63:p>239&&p<365?(p=((p&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,u[h++]=55296+(p>>10),u[h++]=56320+(p&1023)):u[h++]=(p&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((d||(d=[])).push(String.fromCharCode.apply(String,u)),h=0);return d?(h&&d.push(String.fromCharCode.apply(String,u.slice(0,h))),d.join("")):String.fromCharCode.apply(String,u.slice(0,h))},i.write=function(r,s,a){for(var c=a,d,u,h=0;h>6|192,s[a++]=d&63|128):(d&64512)===55296&&((u=r.charCodeAt(h+1))&64512)===56320?(d=65536+((d&1023)<<10)+(u&1023),++h,s[a++]=d>>18|240,s[a++]=d>>12&63|128,s[a++]=d>>6&63|128,s[a++]=d&63|128):(s[a++]=d>>12|224,s[a++]=d>>6&63|128,s[a++]=d&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(f,b){return RangeError("index out of range: "+f.pos+" + "+(b||1)+" > "+f.len)}function c(f){this.buf=f,this.pos=0,this.len=f.length}var d=typeof Uint8Array<"u"?function(b){if(b instanceof Uint8Array||Array.isArray(b))return new c(b);throw Error("illegal buffer")}:function(b){if(Array.isArray(b))return new c(b);throw Error("illegal buffer")},u=function(){return i.Buffer?function(x){return(c.create=function(_){return i.Buffer.isBuffer(_)?new o(_):d(_)})(x)}:d};c.create=u(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var b=4294967295;return function(){if(b=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(b=(b|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return b;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return b}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var b=this.uint32();return b>>>1^-(b&1)|0};function h(){var f=new r(0,0),b=0;if(this.len-this.pos>4){for(;b<4;++b)if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f;if(f.lo=(f.lo|(this.buf[this.pos]&127)<<28)>>>0,f.hi=(f.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return f;b=0}else{for(;b<3;++b){if(this.pos>=this.len)throw a(this);if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}return f.lo=(f.lo|(this.buf[this.pos++]&127)<>>0,f}if(this.len-this.pos>4){for(;b<5;++b)if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}else for(;b<5;++b){if(this.pos>=this.len)throw a(this);if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function p(f,b){return(f[b-4]|f[b-3]<<8|f[b-2]<<16|f[b-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(p(this.buf,this.pos+=4),p(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var b=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,b},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var b=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,b},c.prototype.bytes=function(){var b=this.uint32(),x=this.pos,I=this.pos+b;if(I>this.len)throw a(this,b);if(this.pos+=b,Array.isArray(this.buf))return this.buf.slice(x,I);if(x===I){var _=i.Buffer;return _?_.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,x,I)},c.prototype.string=function(){var b=this.bytes();return s.read(b,0,b.length)},c.prototype.skip=function(b){if(typeof b=="number"){if(this.pos+b>this.len)throw a(this,b);this.pos+=b}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(f){switch(f){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(f=this.uint32()&7)!==4;)this.skipType(f);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+f+" at offset "+this.pos)}return this},c._configure=function(f){o=f,c.create=u(),o._configure();var b=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[b](!1)},uint64:function(){return h.call(this)[b](!0)},sint64:function(){return h.call(this).zzDecode()[b](!1)},fixed64:function(){return g.call(this)[b](!0)},sfixed64:function(){return g.call(this)[b](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,d,u){if(!d)throw TypeError("request must be specified");var h=this;if(!u)return i.asPromise(r,h,s,a,c,d);if(!h.rpcImpl)return setTimeout(function(){u(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(g,f){if(g)return h.emit("error",g,s),u(g);if(f===null)return h.end(!0),undefined;if(!(f instanceof c))try{f=c[h.responseDelimited?"decodeDelimited":"decode"](f)}catch(b){return h.emit("error",b,s),u(b)}return h.emit("data",f,s),u(null,f)})}catch(p){return h.emit("error",p,s),setTimeout(function(){u(p)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,d){this.lo=c>>>0,this.hi=d>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(d){if(d===0)return r;var u=d<0;u&&(d=-d);var h=d>>>0,p=(d-h)/4294967296>>>0;return u&&(p=~p>>>0,h=~h>>>0,++h>4294967295&&(h=0,++p>4294967295&&(p=0))),new o(h,p)},o.from=function(d){if(typeof d=="number")return o.fromNumber(d);if(i.isString(d))if(i.Long)d=i.Long.fromString(d);else return o.fromNumber(parseInt(d,10));return d.low||d.high?new o(d.low>>>0,d.high>>>0):r},o.prototype.toNumber=function(d){if(!d&&this.hi>>>31){var u=~this.lo+1>>>0,h=~this.hi>>>0;return u||(h=h+1>>>0),-(u+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(d){return i.Long?new i.Long(this.lo|0,this.hi|0,!!d):{low:this.lo|0,high:this.hi|0,unsigned:!!d}};var a=String.prototype.charCodeAt;o.fromHash=function(d){return d===s?r:new o((a.call(d,0)|a.call(d,1)<<8|a.call(d,2)<<16|a.call(d,3)<<24)>>>0,(a.call(d,4)|a.call(d,5)<<8|a.call(d,6)<<16|a.call(d,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var d=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^d)>>>0,this.lo=(this.lo<<1^d)>>>0,this},o.prototype.zzDecode=function(){var d=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^d)>>>0,this.hi=(this.hi>>>1^d)>>>0,this},o.prototype.length=function(){var d=this.lo,u=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?u===0?d<16384?d<128?1:2:d<2097152?3:4:u<16384?u<128?5:6:u<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var d=a[c];return d!=null&&a.hasOwnProperty(c)?typeof d!="object"||(Array.isArray(d)?d.length:Object.keys(d).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var d=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(d.lo,d.hi,c):d.toNumber(!!c)};function o(s,a,c){for(var d=Object.keys(a),u=0;u-1;--h)if(c[u[h]]===1&&this[u[h]]!==undefined&&this[u[h]]!==null)return u[h]}},i.oneOfSetter=function(a){return function(c){for(var d=0;d127;)S[R++]=E&127|128,E>>>=7;S[R]=E}function b(E,S){this.len=E,this.next=undefined,this.val=S}b.prototype=Object.create(c.prototype),b.prototype.fn=f,h.prototype.uint32=function(S){return this.len+=(this.tail=this.tail.next=new b((S=S>>>0)<128?1:S<16384?2:S<2097152?3:S<268435456?4:5,S)).len,this},h.prototype.int32=function(S){return S<0?this._push(x,10,r.fromNumber(S)):this.uint32(S)},h.prototype.sint32=function(S){return this.uint32((S<<1^S>>31)>>>0)};function x(E,S,R){for(;E.hi;)S[R++]=E.lo&127|128,E.lo=(E.lo>>>7|E.hi<<25)>>>0,E.hi>>>=7;for(;E.lo>127;)S[R++]=E.lo&127|128,E.lo=E.lo>>>7;S[R++]=E.lo}h.prototype.uint64=function(S){var R=r.from(S);return this._push(x,R.length(),R)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(S){var R=r.from(S).zzEncode();return this._push(x,R.length(),R)},h.prototype.bool=function(S){return this._push(g,1,S?1:0)};function I(E,S,R){S[R]=E&255,S[R+1]=E>>>8&255,S[R+2]=E>>>16&255,S[R+3]=E>>>24}h.prototype.fixed32=function(S){return this._push(I,4,S>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(S){var R=r.from(S);return this._push(I,4,R.lo)._push(I,4,R.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(S){return this._push(i.float.writeFloatLE,4,S)},h.prototype.double=function(S){return this._push(i.float.writeDoubleLE,8,S)};var _=i.Array.prototype.set?function(S,R,G){R.set(S,G)}:function(S,R,G){for(var B=0;B>>0;if(!R)return this._push(g,1,0);if(i.isString(S)){var G=h.alloc(R=s.length(S));s.decode(S,G,0),S=G}return this.uint32(R)._push(_,R,S)},h.prototype.string=function(S){var R=a.length(S);return R?this.uint32(R)._push(a.write,R,S):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new u(this),this.head=this.tail=new c(d,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(d,0,0),this.len=0),this},h.prototype.ldelim=function(){var S=this.head,R=this.tail,G=this.len;return this.reset().uint32(G),G&&(this.tail.next=S.next,this.tail=R,this.len+=G),this},h.prototype.finish=function(){for(var S=this.head.next,R=this.constructor.alloc(this.len),G=0;S;)S.fn(S.val,R,G),G+=S.len,S=S.next;return R},h._configure=function(E){o=E,h.create=p(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,d,u){d.set(c,u)}:function(c,d,u){if(c.copy)c.copy(d,u,0,c.length);else for(var h=0;h>>0;return this.uint32(d),d&&this._push(r.writeBytesBuffer,d,c),this};function s(a,c,d){a.length<40?o.utf8.write(a,c,d):c.utf8Write?c.utf8Write(a,d):c.write(a,d)}r.prototype.string=function(c){var d=o.Buffer.byteLength(c);return this.uint32(d),d&&this._push(s,d,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var kTe=Pu((Wco,JY)=>{var Fco=y(C());/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(u,h){h=h||{};var p=h.encodedMaskData||h.encodedMaskData===null,g=c(u,h.inputOffset||0,p),f=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,b=r(g,h.pixelType||Float32Array,h.encodedMaskData,f,h.returnMask),x={width:g.width,height:g.height,pixelData:b.resultPixels,minValue:b.minValue,maxValue:g.pixels.maxValue,noDataValue:f};return b.resultMask&&(x.maskData=b.resultMask),h.returnEncodedMask&&g.mask&&(x.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(x.fileInfo=s(g),h.computeUsedBitDepths&&(x.fileInfo.bitDepths=a(g))),x};var r=function(u,h,p,g,f){var b=0,x=u.pixels.numBlocksX,I=u.pixels.numBlocksY,_=Math.floor(u.width/x),E=Math.floor(u.height/I),S=2*u.maxZError,R=Number.MAX_VALUE,G;p=p||(u.mask?u.mask.bitset:null);var B,w;B=new h(u.width*u.height),f&&p&&(w=new Uint8Array(u.width*u.height));for(var F=new Float32Array(_*E),P,A,T=0;T<=I;T++){var L=T!==I?E:u.height%I;if(L!==0)for(var V=0;V<=x;V++){var W=V!==x?_:u.width%x;if(W!==0){var M=T*u.width*E+V*_,Q=u.width-W,N=u.pixels.blocks[b],k,v,O;N.encoding<2?(N.encoding===0?k=N.rawData:(d(N.stuffedData,N.bitsPerPixel,N.numValidPixels,N.offset,S,F,u.pixels.maxValue),k=F),v=0):N.encoding===2?O=0:O=N.offset;var H;if(p)for(A=0;A>3],H<<=M&7),P=0;P>3]),H&128?(w&&(w[M]=1),G=N.encoding<2?k[v++]:O,R=R>G?G:R,B[M++]=G):(w&&(w[M]=0),B[M++]=g),H<<=1;M+=Q}else if(N.encoding<2)for(A=0;AG?G:R,B[M++]=G;M+=Q}else for(R=R>O?O:R,A=0;A0){var x=new Uint8Array(Math.ceil(g.width*g.height/8));b=new DataView(u,h,g.mask.numBytes);var I=b.getInt16(0,!0),_=2,E=0;do{if(I>0)for(;I--;)x[E++]=b.getUint8(_++);else{var S=b.getUint8(_++);for(I=-I;I--;)x[E++]=S}I=b.getInt16(_,!0),_+=2}while(_0?1:0),w=G+(g.height%G>0?1:0);g.pixels.blocks=new Array(B*w);for(var F=0,P=0;P3)throw"Invalid block encoding ("+V.encoding+")";if(V.encoding===2){h++;continue}if(W!==0&&W!==2){if(W>>=6,V.offsetType=W,W===2)V.offset=b.getInt8(1),T++;else if(W===1)V.offset=b.getInt16(1,!0),T+=2;else if(W===0)V.offset=b.getFloat32(1,!0),T+=4;else throw"Invalid block offset type";if(V.encoding===1)if(W=b.getUint8(T),T++,V.bitsPerPixel=W&63,W>>=6,V.numValidPixelsType=W,W===2)V.numValidPixels=b.getUint8(T),T++;else if(W===1)V.numValidPixels=b.getUint16(T,!0),T+=2;else if(W===0)V.numValidPixels=b.getUint32(T,!0),T+=4;else throw"Invalid valid pixel count type"}if(h+=T,V.encoding!==3){var M,Q;if(V.encoding===0){var N=(g.pixels.numBytes-1)/4;if(N!==Math.floor(N))throw"uncompressed block has invalid length";M=new ArrayBuffer(N*4),Q=new Uint8Array(M),Q.set(new Uint8Array(u,h,N*4));var k=new Float32Array(M);V.rawData=k,h+=N*4}else if(V.encoding===1){var v=Math.ceil(V.numValidPixels*V.bitsPerPixel/8),O=Math.ceil(v/4);M=new ArrayBuffer(O*4),Q=new Uint8Array(M),Q.set(new Uint8Array(u,h,v)),V.stuffedData=new Uint32Array(M),h+=v}}}return g.eofOffset=h,g},d=function(u,h,p,g,f,b,x){var I=(1<=h)R=G>>>S-h&I,S-=h;else{var F=h-S;R=(G&I)<>>S}b[E]=R=u?(S=R>>>E-u&x,E-=u):(G=u-E,S=(R&x)<>>E),d[_]=p[S];else for(B=Math.ceil((b-g)/f),_=0;_=u?(S=R>>>E-u&x,E-=u):(G=u-E,S=(R&x)<>>E),d[_]=S=d?(E=S>>>_-d&f,_-=d):(I=d-_,E=(S&f)<>>_),R[x]=E=u?(R=G>>>S&x,E-=u,S+=u):(B=u-E,R=G>>>S&x,G=c[I++],E=32-B,R|=(G&(1<=u?(R=G>>>S&x,E-=u,S+=u):(B=u-E,R=G>>>S&x,G=c[I++],E=32-B,R|=(G&(1<=d?(E=R>>>S&f,_-=d,S+=d):(I=d-_,E=R>>>S&f,R=c[b++],_=32-I,E|=(R&(1<=u?(x=I>>>b-u&p,b-=u):(_=u-b,x=(I&p)<<_&p,I=c[g++],b=32-_,x+=I>>>b),d[f]=x;return d},originalUnstuff2:function(c,d,u,h){var p=(1<=u?(I=_>>>x&p,b-=u,x+=u):(E=u-b,I=_>>>x&p,_=c[g++],b=32-E,I|=(_&(1<=359?359:p;p-=f;do d+=c[g++]<<8,u+=d+=c[g++];while(--f);d=(d&65535)+(d>>>16),u=(u&65535)+(u>>>16)}return h&1&&(u+=d+=c[g]<<8),d=(d&65535)+(d>>>16),u=(u&65535)+(u>>>16),(u<<16|d)>>>0},readHeaderInfo:function(c,d){var u=d.ptr,h=new Uint8Array(c,u,6),p={};if(p.fileIdentifierString=String.fromCharCode.apply(null,h),p.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+p.fileIdentifierString;u+=6;var g=new DataView(c,u,8),f=g.getInt32(0,!0);p.fileVersion=f,u+=4,f>=3&&(p.checksum=g.getUint32(4,!0),u+=4),g=new DataView(c,u,12),p.height=g.getUint32(0,!0),p.width=g.getUint32(4,!0),u+=8,f>=4?(p.numDims=g.getUint32(8,!0),u+=4):p.numDims=1,g=new DataView(c,u,40),p.numValidPixel=g.getUint32(0,!0),p.microBlockSize=g.getInt32(4,!0),p.blobSize=g.getInt32(8,!0),p.imageType=g.getInt32(12,!0),p.maxZError=g.getFloat64(16,!0),p.zMin=g.getFloat64(24,!0),p.zMax=g.getFloat64(32,!0),u+=40,d.headerInfo=p,d.ptr=u;var b,x;if(f>=3&&(x=f>=4?52:48,b=this.computeChecksumFletcher32(new Uint8Array(c,u-x,p.blobSize-14)),b!==p.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,d){var u=d.headerInfo,h=this.getDataTypeArray(u.imageType),p=u.numDims*this.getDataTypeSize(u.imageType),g=this.readSubArray(c,d.ptr,h,p),f=this.readSubArray(c,d.ptr+p,h,p);d.ptr+=2*p;var b,x=!0;for(b=0;b0){x=new Uint8Array(Math.ceil(p/8)),f=new DataView(c,u,b.numBytes);var _=f.getInt16(0,!0),E=2,S=0,R=0;do{if(_>0)for(;_--;)x[S++]=f.getUint8(E++);else for(R=f.getUint8(E++),_=-_;_--;)x[S++]=R;_=f.getInt16(E,!0),E+=2}while(E>3],G<<=B&7):G=x[B>>3],G&128&&(I[B]=1);d.pixels.resultMask=I,b.bitset=x,u+=b.numBytes}return d.ptr=u,d.mask=b,!0},readDataOneSweep:function(c,d,u){var h=d.ptr,p=d.headerInfo,g=p.numDims,f=p.width*p.height,b=p.imageType,x=p.numValidPixel*r.getDataTypeSize(b)*g,I,_=d.pixels.resultMask;if(u===Uint8Array)I=new Uint8Array(c,h,x);else{var E=new ArrayBuffer(x),S=new Uint8Array(E);S.set(new Uint8Array(c,h,x)),I=new u(E)}if(I.length===f*g)d.pixels.resultPixels=I;else{d.pixels.resultPixels=new u(f*g);var R=0,G=0,B=0,w=0;if(g>1)for(B=0;B=b)return!1;var x=new Uint32Array(b-f);r.decodeBits(c,d,x);var I=[],_,E,S,R;for(_=f;_0&&(I[E].second=T<>>32-R,32-A>=R?(A+=R,A===32&&(A=0,L++,T=P[L])):(A+=R-32,L++,T=P[L],I[E].second|=T>>>32-A));var V=0,W=0,M=new s;for(_=0;_=u?W=u:W=V,V>=30&&console.log("WARning, large NUM LUT BITS IS "+V);var Q=[],N,k,v,O,H,ee;for(_=f;_0)if(N=[R,E],R<=W)for(k=I[E].second<=0;O--)H=k>>>O&1,H?(ee.right||(ee.right=new s),ee=ee.right):(ee.left||(ee.left=new s),ee=ee.left),O===0&&!ee.val&&(ee.val=N[1]);return{decodeLut:Q,numBitsLUTQick:W,numBitsLUT:V,tree:M,stuffedData:P,srcPtr:L,bitPos:A}},readHuffman:function(c,d,u){var h=d.headerInfo,p=h.numDims,g=d.headerInfo.height,f=d.headerInfo.width,b=f*g,x=this.readHuffmanTree(c,d),I=x.decodeLut,_=x.tree,E=x.stuffedData,S=x.srcPtr,R=x.bitPos,G=x.numBitsLUTQick,B=x.numBitsLUT,w=d.headerInfo.imageType===0?128:0,F,P,A,T=d.pixels.resultMask,L,V,W,M,Q,N,k,v=0;R>0&&(S++,R=0);var O=E[S],H=d.encodeMode===1,ee=new u(b*p),K=ee,te;for(te=0;te1&&(K=new u(ee.buffer,b*te,b),v=0),d.headerInfo.numValidPixel===f*g)for(N=0,M=0;M>>32-G,V=L,32-R>>64-R-G,V=L),I[V])P=I[V][1],R+=I[V][0];else for(L=O<>>32-B,V=L,32-R>>64-R-B,V=L),F=_,k=0;k>>B-k-1&1,F=W?F.right:F.left,!(F.left||F.right)){P=F.val,R=R+k+1;break}R>=32&&(R-=32,S++,O=E[S]),A=P-w,H?(Q>0?A+=v:M>0?A+=K[N-f]:A+=v,A&=255,K[N]=A,v=A):K[N]=A}else for(N=0,M=0;M>>32-G,V=L,32-R>>64-R-G,V=L),I[V])P=I[V][1],R+=I[V][0];else for(L=O<>>32-B,V=L,32-R>>64-R-B,V=L),F=_,k=0;k>>B-k-1&1,F=W?F.right:F.left,!(F.left||F.right)){P=F.val,R=R+k+1;break}R>=32&&(R-=32,S++,O=E[S]),A=P-w,H?(Q>0&&T[N-1]?A+=v:M>0&&T[N-f]?A+=K[N-f]:A+=v,A&=255,K[N]=A,v=A):K[N]=A}d.ptr=d.ptr+(S+1)*4+(R>0?4:0)}d.pixels.resultPixels=ee},decodeBits:function(c,d,u,h,p){{var g=d.headerInfo,f=g.fileVersion,b=0,x=new DataView(c,d.ptr,5),I=x.getUint8(0);b++;var _=I>>6,E=_===0?4:3-_,S=(I&32)>0,R=I&31,G=0;if(E===1)G=x.getUint8(b),b++;else if(E===2)G=x.getUint16(b,!0),b+=2;else if(E===4)G=x.getUint32(b,!0),b+=4;else throw"Invalid valid pixel count type";var B=2*g.maxZError,w,F,P,A,T,L,V,W,M,Q,N=g.numDims>1?g.maxValues[p]:g.zMax;if(S){for(d.counter.lut++,W=x.getUint8(b),M=R,b++,A=Math.ceil((W-1)*R/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),d.ptr+=b,P.set(new Uint8Array(c,d.ptr,A)),V=new Uint32Array(F),d.ptr+=A,Q=0;W-1>>>Q;)Q++;A=Math.ceil(G*Q/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),P.set(new Uint8Array(c,d.ptr,A)),w=new Uint32Array(F),d.ptr+=A,f>=3?L=o.unstuffLUT2(V,R,W-1,h,B,N):L=o.unstuffLUT(V,R,W-1,h,B,N),f>=3?o.unstuff2(w,u,Q,G,L):o.unstuff(w,u,Q,G,L)}else d.counter.bitstuffer++,Q=R,d.ptr+=b,Q>0&&(A=Math.ceil(G*Q/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),P.set(new Uint8Array(c,d.ptr,A)),w=new Uint32Array(F),d.ptr+=A,f>=3?h==null?o.originalUnstuff2(w,u,Q,G):o.unstuff2(w,u,Q,G,!1,h,B,N):h==null?o.originalUnstuff(w,u,Q,G):o.unstuff(w,u,Q,G,!1,h,B,N))}},readTiles:function(c,d,u){var h=d.headerInfo,p=h.width,g=h.height,f=h.microBlockSize,b=h.imageType,x=r.getDataTypeSize(b),I=Math.ceil(p/f),_=Math.ceil(g/f);d.pixels.numBlocksY=_,d.pixels.numBlocksX=I,d.pixels.ptr=0;var E=0,S=0,R=0,G=0,B=0,w=0,F=0,P=0,A=0,T=0,L=0,V=0,W=0,M=0,Q=0,N=0,k,v,O,H,ee,K,te=new u(f*f),q=g%f||f,pe=p%f||f,ye,he,xe=h.numDims,Te,Be=d.pixels.resultMask,Le=d.pixels.resultPixels;for(R=0;R<_;R++)for(B=R!==_-1?f:q,G=0;G1&&(Le=new u(d.pixels.resultPixels.buffer,p*g*Te*x,p*g)),F=c.byteLength-d.ptr,k=new DataView(c,d.ptr,Math.min(10,F)),v={},N=0,P=k.getUint8(0),N++,A=P>>6&255,T=P>>2&15,T!==(G*f>>3&15))throw"integrity issue";if(K=P&3,K>3)throw d.ptr+=N,"Invalid block encoding ("+K+")";if(K===2){d.counter.constant++,d.ptr+=N;continue}else if(K===0){if(d.counter.uncompressed++,d.ptr+=N,W=B*w*x,M=c.byteLength-d.ptr,W=W1)for(g=0;g=-128&&d<=127;break;case 1:u=d>=0&&d<=255;break;case 2:u=d>=-32768&&d<=32767;break;case 3:u=d>=0&&d<=65536;break;case 4:u=d>=-2147483648&&d<=2147483647;break;case 5:u=d>=0&&d<=4294967296;break;case 6:u=d>=-34027999387901484e22&&d<=34027999387901484e22;break;case 7:u=d>=5e-324&&d<=17976931348623157e292;break;default:u=!1}return u},getDataTypeSize:function(c){var d=0;switch(c){case 0:case 1:d=1;break;case 2:case 3:d=2;break;case 4:case 5:case 6:d=4;break;case 7:d=8;break;default:d=c}return d},getDataTypeUsed:function(c,d){var u=c;switch(c){case 2:case 4:u=c-d;break;case 3:case 5:u=c-2*d;break;case 6:d===0?u=c:d===1?u=2:u=1;break;case 7:d===0?u=c:u=c-2*d+1;break;default:u=c;break}return u},getOnePixel:function(c,d,u,h){var p=0;switch(u){case 0:p=h.getInt8(d);break;case 1:p=h.getUint8(d);break;case 2:p=h.getInt16(d,!0);break;case 3:p=h.getUint16(d,!0);break;case 4:p=h.getInt32(d,!0);break;case 5:p=h.getUInt32(d,!0);break;case 6:p=h.getFloat32(d,!0);break;case 7:p=h.getFloat64(d,!0);break;default:throw"the decoder does not understand this pixel type"}return p}},s=function(c,d,u){this.val=c,this.left=d,this.right=u},a={decode:function(c,d){d=d||{};var u=d.noDataValue,h=0,p={};if(p.ptr=d.inputOffset||0,p.pixels={},!!r.readHeaderInfo(c,p)){var g=p.headerInfo,f=g.fileVersion,b=r.getDataTypeArray(g.imageType);r.readMask(c,p),g.numValidPixel!==g.width*g.height&&!p.pixels.resultMask&&(p.pixels.resultMask=d.maskData);var x=g.width*g.height;if(p.pixels.resultPixels=new b(x*g.numDims),p.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(p);else if(f>=4&&r.checkMinMaxRanges(c,p))r.constructConstantSurface(p);else{var I=new DataView(c,p.ptr,2),_=I.getUint8(0);if(p.ptr++,_)r.readDataOneSweep(c,p,b);else if(f>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var E=I.getUint8(1);if(p.ptr++,p.encodeMode=E,E>2||f<4&&E>1)throw"Invalid Huffman flag "+E;E?r.readHuffman(c,p,b):r.readTiles(c,p,b)}else r.readTiles(c,p,b)}p.eofOffset=p.ptr;var S;d.inputOffset?(S=p.headerInfo.blobSize+d.inputOffset-p.ptr,Math.abs(S)>=1&&(p.eofOffset=d.inputOffset+p.headerInfo.blobSize)):(S=p.headerInfo.blobSize-p.ptr,Math.abs(S)>=1&&(p.eofOffset=p.headerInfo.blobSize));var R={width:g.width,height:g.height,pixelData:p.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:p.pixels.resultMask};if(p.pixels.resultMask&&r.isValidPixelValue(g.imageType,u)){var G=p.pixels.resultMask;for(h=0;h1&&_.fileInfo.mask&&_.fileInfo.mask.numBytes>0&&f.push(_.maskData),h++,I.pixels.push(_.pixelData),I.statistics.push({minValue:_.minValue,maxValue:_.maxValue,noDataValue:_.noDataValue,dimStats:_.dimStats})}var E,S,R;if(u>1&&f.length>1){for(R=I.width*I.height,I.bandMasks=f,x=new Uint8Array(R),x.set(f[0]),E=1;E{var HWo=y(C());BSe.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var WSe=Pu((zWo,XSe)=>{var KWo=y(C()),{webm:NRt,mp4:DRt}=wSe(),bee=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,yee=()=>"wakeLock"in navigator,Cee=class{constructor(){if(this.enabled=!1,yee()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else bee()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",NRt),this._addSourceToVideo(this.noSleepVideo,"mp4",DRt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return yee()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):bee()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){yee()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):bee()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};XSe.exports=Cee});var dVt={};qSe(dVt,{AlphaMode:()=>Yf,AlphaPipelineStage:()=>Cw,AnchorPointDirect:()=>IB,AnchorPointIndirect:()=>_B,Animation:()=>WN,AnimationViewModel:()=>FN,Appearance:()=>go,ApproximateTerrainHeights:()=>Si,ArcGISTiledElevationTerrainProvider:()=>hq,ArcGisBaseMapType:()=>Gh,ArcGisMapServerImageryProvider:()=>QA,ArcGisMapService:()=>zd,ArcType:()=>dn,ArticulationStageType:()=>Pc,AssociativeArray:()=>Bt,Atmosphere:()=>JC,AtmospherePipelineStage:()=>ew,AttributeCompression:()=>Mn,AttributeType:()=>kt,AutoExposure:()=>OM,AutomaticUniforms:()=>tA,Axis:()=>ho,AxisAlignedBoundingBox:()=>Ib,B3dmLoader:()=>MB,B3dmParser:()=>WB,BaseLayerPicker:()=>MN,BaseLayerPickerViewModel:()=>PN,BatchTable:()=>oC,BatchTableHierarchy:()=>LC,BatchTexture:()=>yl,BatchTexturePipelineStage:()=>xw,Billboard:()=>Eo,BillboardCollection:()=>qd,BillboardGraphics:()=>_c,BillboardLoadState:()=>Ts,BillboardTexture:()=>JA,BillboardVisualizer:()=>h1,BingMapsGeocoderService:()=>pq,BingMapsImageryProvider:()=>Dw,BingMapsStyle:()=>JE,BlendEquation:()=>ac,BlendFunction:()=>Po,BlendOption:()=>No,BlendingState:()=>bn,BoundingRectangle:()=>Ke,BoundingSphere:()=>ue,BoundingSphereState:()=>At,BoundingVolumeSemantics:()=>YC,BoxEmitter:()=>s$,BoxGeometry:()=>sc,BoxGeometryUpdater:()=>AZ,BoxGraphics:()=>mC,BoxOutlineGeometry:()=>nh,BrdfLutGenerator:()=>JP,Buffer:()=>It,BufferLoader:()=>wC,BufferUsage:()=>Ne,CPUStylingPipelineStage:()=>Tw,CallbackPositionProperty:()=>gZ,CallbackProperty:()=>hh,Camera:()=>xo,CameraEventAggregator:()=>$M,CameraEventType:()=>qi,CameraFlightPath:()=>qP,Cartesian2:()=>D,Cartesian3:()=>m,Cartesian4:()=>ce,CartesianRectangle:()=>rT,Cartographic:()=>ge,CartographicGeocoderService:()=>gq,CatmullRomSpline:()=>bq,Cesium3DContentGroup:()=>SC,Cesium3DTile:()=>ym,Cesium3DTileBatchTable:()=>bA,Cesium3DTileColorBlendMode:()=>ed,Cesium3DTileContent:()=>a$,Cesium3DTileContentFactory:()=>Cx,Cesium3DTileContentState:()=>ir,Cesium3DTileContentType:()=>Js,Cesium3DTileFeature:()=>ma,Cesium3DTileFeatureTable:()=>Sh,Cesium3DTileOptimizationHint:()=>fm,Cesium3DTileOptimizations:()=>W2,Cesium3DTilePass:()=>zo,Cesium3DTilePassState:()=>vm,Cesium3DTilePointFeature:()=>jA,Cesium3DTileRefine:()=>tr,Cesium3DTileStyle:()=>p_,Cesium3DTileStyleEngine:()=>D2,Cesium3DTilesInspector:()=>kN,Cesium3DTilesInspectorViewModel:()=>UN,Cesium3DTilesVoxelProvider:()=>c$,Cesium3DTileset:()=>Ps,Cesium3DTilesetBaseTraversal:()=>H2,Cesium3DTilesetCache:()=>M2,Cesium3DTilesetGraphics:()=>yC,Cesium3DTilesetHeatmap:()=>v2,Cesium3DTilesetMetadata:()=>Gx,Cesium3DTilesetMostDetailedTraversal:()=>k2,Cesium3DTilesetSkipTraversal:()=>J2,Cesium3DTilesetStatistics:()=>Nh,Cesium3DTilesetTraversal:()=>ya,Cesium3DTilesetVisualizer:()=>j2,CesiumInspector:()=>HN,CesiumInspectorViewModel:()=>ON,CesiumTerrainProvider:()=>c_,CesiumWidget:()=>Hv,Check:()=>Bo,CheckerboardMaterialProperty:()=>BT,CircleEmitter:()=>aN,CircleGeometry:()=>Eq,CircleOutlineGeometry:()=>Tq,ClassificationModelDrawCommand:()=>PX,ClassificationPipelineStage:()=>Iw,ClassificationPrimitive:()=>$_,ClassificationType:()=>$n,ClearCommand:()=>xi,ClippingPlane:()=>OC,ClippingPlaneCollection:()=>Ws,ClippingPolygon:()=>GE,ClippingPolygonCollection:()=>Ih,Clock:()=>Yh,ClockRange:()=>ls,ClockStep:()=>Ro,ClockViewModel:()=>BN,CloudCollection:()=>f$,CloudType:()=>PL,Color:()=>U,ColorBlendMode:()=>Fc,ColorGeometryInstanceAttribute:()=>tn,ColorMaterialProperty:()=>qt,Command:()=>oee,ComponentDatatype:()=>J,Composite3DTileContent:()=>LZ,CompositeEntityCollection:()=>wJ,CompositeMaterialProperty:()=>XT,CompositePositionProperty:()=>ka,CompositeProperty:()=>Uc,CompressedTextureBuffer:()=>I1,ComputeCommand:()=>Il,ComputeEngine:()=>nP,ConditionsExpression:()=>iN,ConeEmitter:()=>A$,ConstantPositionProperty:()=>dl,ConstantProperty:()=>di,ConstantSpline:()=>QB,ContentMetadata:()=>S2,Context:()=>xI,ContextLimits:()=>Kt,CoplanarPolygonGeometry:()=>WW,CoplanarPolygonGeometryLibrary:()=>sg,CoplanarPolygonOutlineGeometry:()=>bm,CornerType:()=>Hi,CorrelationGroup:()=>EB,CorridorGeometry:()=>Px,CorridorGeometryLibrary:()=>io,CorridorGeometryUpdater:()=>sW,CorridorGraphics:()=>fC,CorridorOutlineGeometry:()=>rW,Credit:()=>Gt,CreditDisplay:()=>nM,CubeMap:()=>Pr,CubeMapFace:()=>B1,CubicRealPolynomial:()=>zy,CullFace:()=>Xi,CullingVolume:()=>Xs,CumulusCloud:()=>Bu,CustomDataSource:()=>mW,CustomHeightmapTerrainProvider:()=>Sq,CustomShader:()=>KI,CustomShaderMode:()=>DA,CustomShaderPipelineStage:()=>Bw,CustomShaderTranslucencyMode:()=>c0,CylinderGeometry:()=>hW,CylinderGeometryLibrary:()=>Mx,CylinderGeometryUpdater:()=>pW,CylinderGraphics:()=>pC,CylinderOutlineGeometry:()=>fW,CzmlDataSource:()=>TW,DataSource:()=>cs,DataSourceClock:()=>Oh,DataSourceCollection:()=>SW,DataSourceDisplay:()=>fF,DebugAppearance:()=>g$,DebugCameraPrimitive:()=>Rp,DebugInspector:()=>av,DebugModelMatrixPrimitive:()=>lN,DefaultProxy:()=>Lq,DepthFunction:()=>Fa,DepthPlane:()=>cM,DequantizationPipelineStage:()=>Xw,DerivedCommand:()=>Vp,DeveloperError:()=>Ae,DeviceOrientationCameraController:()=>lM,DirectionalLight:()=>b$,DiscardEmptyTileImagePolicy:()=>jE,DiscardMissingTileImagePolicy:()=>vw,DistanceDisplayCondition:()=>Qt,DistanceDisplayConditionGeometryInstanceAttribute:()=>jn,DoubleEndedPriorityQueue:()=>e_,DoublyLinkedList:()=>P2,DracoLoader:()=>TA,DrawCommand:()=>ot,DynamicAtmosphereLightingType:()=>GA,DynamicEnvironmentMapManager:()=>ZA,DynamicGeometryBatch:()=>Yx,DynamicGeometryUpdater:()=>yi,EarthOrientationParameters:()=>a1,EarthOrientationParametersSample:()=>ub,EasingFunction:()=>ms,EllipseGeometry:()=>Fl,EllipseGeometryLibrary:()=>Ad,EllipseGeometryUpdater:()=>RW,EllipseGraphics:()=>AC,EllipseOutlineGeometry:()=>du,Ellipsoid:()=>ie,EllipsoidGeodesic:()=>sA,EllipsoidGeometry:()=>xa,EllipsoidGeometryUpdater:()=>GW,EllipsoidGraphics:()=>gC,EllipsoidOutlineGeometry:()=>nu,EllipsoidPrimitive:()=>YP,EllipsoidRhumbLine:()=>cc,EllipsoidSurfaceAppearance:()=>y$,EllipsoidTangentPlane:()=>gs,EllipsoidTerrainProvider:()=>Tp,EllipsoidalOccluder:()=>gg,Empty3DTileContent:()=>yT,EncodedCartesian3:()=>ni,Entity:()=>ur,EntityCluster:()=>ou,EntityCollection:()=>Ca,EntityView:()=>AF,Event:()=>Ce,EventHelper:()=>Lr,Expression:()=>$u,ExpressionNodeType:()=>Et,ExtrapolationType:()=>su,FeatureDetection:()=>Ht,FeatureIdPipelineStage:()=>a0,Fog:()=>dM,ForEach:()=>Xe,FrameRateMonitor:()=>mN,FrameState:()=>uM,Framebuffer:()=>jr,FramebufferManager:()=>Gi,Frozen:()=>Y,FrustumCommands:()=>AM,FrustumGeometry:()=>RI,FrustumOutlineGeometry:()=>rM,Fullscreen:()=>Wr,FullscreenButton:()=>KN,FullscreenButtonViewModel:()=>zN,GaussianSplat3DTileContent:()=>bT,GaussianSplatPrimitive:()=>gT,GaussianSplatRenderResources:()=>I2,GaussianSplatSorter:()=>AT,GaussianSplatTextureGenerator:()=>x2,GeoJsonDataSource:()=>Q0,GeoJsonLoader:()=>vB,GeocodeType:()=>_y,Geocoder:()=>jN,GeocoderService:()=>BL,GeocoderViewModel:()=>JN,GeographicProjection:()=>Di,GeographicTilingScheme:()=>ao,Geometry:()=>pt,Geometry3DTileContent:()=>GZ,GeometryAttribute:()=>Ze,GeometryAttributes:()=>xn,GeometryFactory:()=>Rq,GeometryInstance:()=>wt,GeometryInstanceAttribute:()=>Gc,GeometryOffsetAttribute:()=>pn,GeometryPipeline:()=>Yn,GeometryPipelineStage:()=>Mw,GeometryType:()=>Qu,GeometryUpdater:()=>Ci,GeometryUpdaterSet:()=>nI,GeometryVisualizer:()=>nF,GetFeatureInfoFormat:()=>ox,Globe:()=>DP,GlobeDepth:()=>gM,GlobeSurfaceShaderSet:()=>GP,GlobeSurfaceTile:()=>Pm,GlobeSurfaceTileProvider:()=>BP,GlobeTranslucency:()=>wP,GlobeTranslucencyFramebuffer:()=>bM,GlobeTranslucencyState:()=>mM,GltfBufferViewLoader:()=>mE,GltfDracoLoader:()=>hE,GltfGpmLoader:()=>SB,GltfGpmLocal:()=>BE,GltfImageLoader:()=>fE,GltfIndexBufferLoader:()=>pE,GltfJsonLoader:()=>gE,GltfLoader:()=>Od,GltfLoaderUtil:()=>id,GltfMeshPrimitiveGpmLoader:()=>GB,GltfSpzLoader:()=>KZ,GltfStructuralMetadataLoader:()=>CB,GltfTextureLoader:()=>bE,GltfVertexBufferLoader:()=>yE,GoogleEarthEnterpriseImageryProvider:()=>x$,GoogleEarthEnterpriseMapsProvider:()=>kw,GoogleEarthEnterpriseMetadata:()=>ib,GoogleEarthEnterpriseTerrainData:()=>wL,GoogleEarthEnterpriseTerrainProvider:()=>Fq,GoogleEarthEnterpriseTileInformation:()=>Jv,GoogleGeocoderService:()=>Mq,GoogleMaps:()=>d_,GpxDataSource:()=>IF,GregorianDate:()=>Yp,GridImageryProvider:()=>I$,GridMaterialProperty:()=>kT,GroundGeometryUpdater:()=>ii,GroundPolylineGeometry:()=>cC,GroundPolylinePrimitive:()=>ch,GroundPrimitive:()=>cl,GroupMetadata:()=>VT,HeadingPitchRange:()=>Vm,HeadingPitchRoll:()=>ic,Heap:()=>n1,HeightReference:()=>et,HeightmapEncoding:()=>Xm,HeightmapTerrainData:()=>yc,HeightmapTessellator:()=>eL,HermitePolynomialApproximation:()=>AW,HermiteSpline:()=>o0,HilbertOrder:()=>cE,HomeButton:()=>$N,HomeButtonViewModel:()=>qN,HorizontalOrigin:()=>wi,I3SBuildingSceneLayerExplorer:()=>hee,I3SBuildingSceneLayerExplorerViewModel:()=>e9,I3SDataProvider:()=>_f,I3SDecoder:()=>hN,I3SFeature:()=>fN,I3SField:()=>pN,I3SGeometry:()=>ML,I3SLayer:()=>C_,I3SNode:()=>vL,I3SStatistics:()=>bN,I3SSublayer:()=>CN,I3SSymbology:()=>gN,I3dmLoader:()=>DB,I3dmParser:()=>NB,ITwinData:()=>S$,ITwinPlatform:()=>oa,Iau2000Orientation:()=>UP,Iau2006XysData:()=>c1,Iau2006XysSample:()=>ky,IauOrientationAxes:()=>kP,IauOrientationParameters:()=>QP,ImageBasedLighting:()=>TC,ImageBasedLightingPipelineStage:()=>nw,ImageMaterialProperty:()=>Lb,Imagery:()=>iT,ImageryConfiguration:()=>OX,ImageryCoverage:()=>sT,ImageryFlags:()=>$w,ImageryInput:()=>nX,ImageryLayer:()=>is,ImageryLayerCollection:()=>Xx,ImageryLayerFeatureInfo:()=>Vh,ImageryPipelineStage:()=>iX,ImageryProvider:()=>Sl,ImageryState:()=>Jn,Implicit3DTileContent:()=>EE,ImplicitAvailabilityBitstream:()=>dE,ImplicitMetadataView:()=>uE,ImplicitSubdivisionScheme:()=>Cs,ImplicitSubtree:()=>UC,ImplicitSubtreeCache:()=>rN,ImplicitSubtreeMetadata:()=>ZZ,ImplicitTileCoordinates:()=>wx,ImplicitTileset:()=>Bx,IndexDatatype:()=>Me,InfoBox:()=>n9,InfoBoxViewModel:()=>t9,InspectorShared:()=>Vd,InstanceAttributeSemantic:()=>Is,InstancingPipelineStage:()=>Aw,InterpolationAlgorithm:()=>vq,InterpolationType:()=>Eh,Intersect:()=>on,IntersectionTests:()=>fi,Intersections2D:()=>tb,Interval:()=>oc,InvertClassification:()=>uL,Ion:()=>Ah,IonGeocodeProviderType:()=>ob,IonGeocoderService:()=>u_,IonImageryProvider:()=>UA,IonResource:()=>Nd,IonWorldImageryStyle:()=>kA,Iso8601:()=>ze,JobScheduler:()=>hM,JobType:()=>uc,JsonMetadataTable:()=>BA,JulianDate:()=>j,KTX2Transcoder:()=>_1,KeyboardEventModifier:()=>La,KeyframeNode:()=>Go,KmlCamera:()=>_F,KmlDataSource:()=>pI,KmlLookAt:()=>HF,KmlTour:()=>zF,KmlTourFlyTo:()=>JF,KmlTourWait:()=>jF,Label:()=>p0,LabelCollection:()=>ep,LabelGraphics:()=>dh,LabelStyle:()=>nr,LabelVisualizer:()=>iF,LagrangePolynomialApproximation:()=>gW,LeapSecond:()=>ro,Light:()=>L$,LightingModel:()=>jf,LightingPipelineStage:()=>rX,LinearApproximation:()=>Nx,LinearSpline:()=>i0,ManagedArray:()=>bl,MapMode2D:()=>_d,MapProjection:()=>Qq,MapboxImageryProvider:()=>Yw,MapboxStyleImageryProvider:()=>R$,MappedPositions:()=>tX,Material:()=>so,MaterialAppearance:()=>Io,MaterialPipelineStage:()=>aX,MaterialProperty:()=>dr,Math:()=>Z,Matrix2:()=>Qi,Matrix3:()=>$,Matrix4:()=>X,Megatexture:()=>yL,MeshPrimitiveGpmLocal:()=>VB,MetadataClass:()=>Ch,MetadataClassProperty:()=>Qf,MetadataComponentType:()=>Ut,MetadataEntity:()=>Kn,MetadataEnum:()=>qZ,MetadataEnumValue:()=>jZ,MetadataPicking:()=>fM,MetadataPickingPipelineStage:()=>Jd,MetadataPipelineStage:()=>rm,MetadataSchema:()=>kd,MetadataSchemaLoader:()=>xE,MetadataSemantic:()=>kC,MetadataTable:()=>em,MetadataTableProperty:()=>wZ,MetadataType:()=>bt,MipmapHint:()=>Yu,Model:()=>Bh,Model3DTileContent:()=>jd,ModelAlphaOptions:()=>lx,ModelAnimation:()=>OB,ModelAnimationChannel:()=>YB,ModelAnimationCollection:()=>HB,ModelAnimationLoop:()=>od,ModelAnimationState:()=>Lh,ModelArticulation:()=>ow,ModelArticulationStage:()=>iw,ModelClippingPlanesPipelineStage:()=>aw,ModelClippingPolygonsPipelineStage:()=>dw,ModelColorPipelineStage:()=>s0,ModelComponents:()=>Tn,ModelDrawCommand:()=>MX,ModelDrawCommands:()=>DX,ModelFeature:()=>zB,ModelFeatureTable:()=>JB,ModelGraphics:()=>uA,ModelImagery:()=>HX,ModelImageryMapping:()=>sx,ModelLightingOptions:()=>XX,ModelMatrixUpdateStage:()=>gw,ModelNode:()=>uw,ModelPrimitiveImagery:()=>ax,ModelReader:()=>eX,ModelRenderResources:()=>LX,ModelRuntimeNode:()=>yw,ModelRuntimePrimitive:()=>_X,ModelSceneGraph:()=>QX,ModelSilhouettePipelineStage:()=>GX,ModelSkin:()=>EX,ModelSplitterPipelineStage:()=>BX,ModelStatistics:()=>UX,ModelType:()=>Tr,ModelUtility:()=>Mt,ModelVisualizer:()=>oF,Moon:()=>HP,MorphTargetsPipelineStage:()=>lX,MorphWeightSpline:()=>Uq,MortonOrder:()=>x0,Multiple3DTileContent:()=>V2,MultisampleFramebuffer:()=>ZB,NavigationHelpButton:()=>o9,NavigationHelpButtonViewModel:()=>i9,NearFarScalar:()=>zt,NeverTileDiscardPolicy:()=>G$,NodeRenderResources:()=>wX,NodeStatisticsPipelineStage:()=>bw,NodeTransformationProperty:()=>bC,OIT:()=>yM,Occluder:()=>zP,OffsetGeometryInstanceAttribute:()=>mo,OpenCageGeocoderService:()=>Yq,OpenStreetMapImageryProvider:()=>sb,OrderedGroundPrimitiveCollection:()=>LW,OrientedBoundingBox:()=>vn,OrthographicFrustum:()=>gn,OrthographicOffCenterFrustum:()=>qr,Packable:()=>Oq,PackableForInterpolation:()=>Hq,Particle:()=>QL,ParticleBurst:()=>B$,ParticleEmitter:()=>w$,ParticleSystem:()=>X$,Pass:()=>Ge,PassState:()=>Hc,PathGraphics:()=>mA,PathVisualizer:()=>sF,PeliasGeocoderService:()=>qv,PerInstanceColorAppearance:()=>yn,PerformanceDisplay:()=>kg,PerformanceWatchdog:()=>s9,PerformanceWatchdogViewModel:()=>r9,PerspectiveFrustum:()=>Ni,PerspectiveOffCenterFrustum:()=>vl,PickDepth:()=>pM,PickDepthFramebuffer:()=>xM,PickFramebuffer:()=>_M,PickedMetadataInfo:()=>Wv,Picking:()=>LM,PickingPipelineStage:()=>dX,PinBuilder:()=>Bg,PixelDatatype:()=>Ye,PixelFormat:()=>tt,Plane:()=>An,PlaneGeometry:()=>ZW,PlaneGeometryUpdater:()=>wW,PlaneGraphics:()=>lZ,PlaneOutlineGeometry:()=>BW,PntsLoader:()=>YX,PntsParser:()=>ux,PointCloud:()=>Yv,PointCloudEyeDomeLighting:()=>XA,PointCloudShading:()=>Hf,PointCloudStylingPipelineStage:()=>mX,PointGraphics:()=>CC,PointPrimitive:()=>$s,PointPrimitiveCollection:()=>vT,PointVisualizer:()=>cF,PolygonGeometry:()=>VA,PolygonGeometryLibrary:()=>ti,PolygonGeometryUpdater:()=>PW,PolygonGraphics:()=>uh,PolygonHierarchy:()=>lc,PolygonOutlineGeometry:()=>FW,PolygonPipeline:()=>_i,Polyline:()=>dm,PolylineArrowMaterialProperty:()=>OT,PolylineCollection:()=>Wh,PolylineColorAppearance:()=>bs,PolylineDashMaterialProperty:()=>zT,PolylineGeometry:()=>Zg,PolylineGeometryUpdater:()=>uF,PolylineGlowMaterialProperty:()=>JT,PolylineGraphics:()=>Zc,PolylineMaterialAppearance:()=>Pa,PolylineOutlineMaterialProperty:()=>V0,PolylinePipeline:()=>Oi,PolylineVisualizer:()=>hF,PolylineVolumeGeometry:()=>NW,PolylineVolumeGeometryLibrary:()=>Dh,PolylineVolumeGeometryUpdater:()=>kW,PolylineVolumeGraphics:()=>xC,PolylineVolumeOutlineGeometry:()=>UW,PositionProperty:()=>lh,PositionPropertyArray:()=>xg,PostProcessStage:()=>Lo,PostProcessStageCollection:()=>KM,PostProcessStageComposite:()=>Td,PostProcessStageLibrary:()=>Eu,PostProcessStageSampleMode:()=>_u,PostProcessStageTextureCache:()=>NI,PpeMetadata:()=>RB,PpeSource:()=>eee,PpeTexture:()=>LB,Primitive:()=>Nn,PrimitiveCollection:()=>Wl,PrimitiveLoadPlan:()=>$C,PrimitiveOutlineGenerator:()=>qC,PrimitiveOutlinePipelineStage:()=>pX,PrimitivePipeline:()=>rC,PrimitiveRenderResources:()=>WX,PrimitiveState:()=>Nr,PrimitiveStatisticsPipelineStage:()=>AX,PrimitiveType:()=>We,ProjectionPicker:()=>c9,ProjectionPickerViewModel:()=>a9,Property:()=>z,PropertyArray:()=>qT,PropertyAttribute:()=>jC,PropertyAttributeProperty:()=>AB,PropertyBag:()=>ml,PropertyTable:()=>_l,PropertyTexture:()=>wA,PropertyTextureProperty:()=>pB,ProviderViewModel:()=>Ls,Proxy:()=>zq,QuadraticRealPolynomial:()=>rl,QuadtreeOccluders:()=>XP,QuadtreePrimitive:()=>NP,QuadtreeTile:()=>WP,QuadtreeTileLoadState:()=>_a,QuadtreeTileProvider:()=>W$,QuantizedMeshTerrainData:()=>a_,QuarticRealPolynomial:()=>S1,Quaternion:()=>Pe,QuaternionSpline:()=>kB,Queue:()=>Jb,Ray:()=>En,Rectangle:()=>le,RectangleCollisionChecker:()=>oI,RectangleGeometry:()=>Jx,RectangleGeometryLibrary:()=>js,RectangleGeometryUpdater:()=>YW,RectangleGraphics:()=>mh,RectangleOutlineGeometry:()=>_x,ReferenceFrame:()=>eo,ReferenceProperty:()=>Ig,RenderState:()=>Qe,Renderbuffer:()=>Hd,RenderbufferFormat:()=>Tl,Request:()=>sr,RequestErrorEvent:()=>Lf,RequestScheduler:()=>Sc,RequestState:()=>mi,RequestType:()=>Zs,Resource:()=>Ve,ResourceCache:()=>Mi,ResourceCacheKey:()=>Cl,ResourceCacheStatistics:()=>tB,ResourceLoader:()=>Yi,ResourceLoaderState:()=>ft,Rotation:()=>_m,RuntimeError:()=>de,S2Cell:()=>xA,SDFSettings:()=>ga,SampledPositionProperty:()=>Oa,SampledProperty:()=>cu,Sampler:()=>sn,ScaledPositionProperty:()=>up,Scene:()=>Pv,SceneFramebuffer:()=>wI,SceneMode:()=>re,SceneMode2DPipelineStage:()=>gX,SceneModePicker:()=>d9,SceneModePickerViewModel:()=>l9,SceneTransforms:()=>to,SceneTransitioner:()=>qM,ScreenSpaceCameraController:()=>nv,ScreenSpaceEventHandler:()=>Su,ScreenSpaceEventType:()=>Zn,SelectedFeatureIdPipelineStage:()=>l0,SelectionIndicator:()=>h9,SelectionIndicatorViewModel:()=>m9,SensorVolumePortionToDisplay:()=>nS,ShaderBuilder:()=>OA,ShaderCache:()=>iP,ShaderDestination:()=>be,ShaderFunction:()=>SX,ShaderProgram:()=>ln,ShaderSource:()=>Oe,ShaderStruct:()=>TX,ShadowMap:()=>Hg,ShadowMapShader:()=>Bp,ShadowMode:()=>Gn,ShadowVolumeAppearance:()=>Pd,SharedContext:()=>aP,ShowGeometryInstanceAttribute:()=>Vn,Simon1994PlanetaryPositions:()=>ry,SimplePolylineGeometry:()=>Kq,SingleTileImageryProvider:()=>Ow,SkinningPipelineStage:()=>yX,SkyAtmosphere:()=>Mv,SkyBox:()=>vv,SpatialNode:()=>Bv,Spdcf:()=>TB,SpecularEnvironmentCubeMap:()=>ph,SphereEmitter:()=>P$,SphereGeometry:()=>Jq,SphereOutlineGeometry:()=>cg,Spherical:()=>bW,Spline:()=>yo,SplitDirection:()=>Ir,Splitter:()=>_L,StaticGeometryColorBatch:()=>Lm,StaticGeometryPerMaterialBatch:()=>Rm,StaticGroundGeometryColorBatch:()=>IS,StaticGroundGeometryPerMaterialBatch:()=>tF,StaticGroundPolylinePerMaterialBatch:()=>mF,StaticOutlineGeometryBatch:()=>TS,StencilConstants:()=>jt,StencilFunction:()=>ei,StencilOperation:()=>Ct,SteppedSpline:()=>UB,Stereographic:()=>Wc,StorageType:()=>$b,StripeMaterialProperty:()=>eS,StripeOrientation:()=>Hh,StructuralMetadata:()=>fa,StyleCommandsNeeded:()=>Rh,StyleExpression:()=>M$,Sun:()=>Qv,SunLight:()=>Ng,SunPostProcess:()=>rv,SupportedImageFormats:()=>xB,SvgPathBindingHandler:()=>GN,TaskProcessor:()=>hi,Terrain:()=>EN,TerrainData:()=>df,TerrainEncoding:()=>Kc,TerrainFillMesh:()=>oL,TerrainMesh:()=>Fm,TerrainOffsetProperty:()=>IC,TerrainProvider:()=>Es,TerrainQuantization:()=>Ia,TerrainState:()=>So,Texture:()=>Wt,Texture3D:()=>d7,TextureAtlas:()=>mx,TextureCache:()=>oP,TextureMagnificationFilter:()=>pi,TextureManager:()=>Lv,TextureMinificationFilter:()=>en,TexturePacker:()=>uT,TextureUniform:()=>q$,TextureWrap:()=>Ln,TileAvailability:()=>bf,TileBoundingRegion:()=>tu,TileBoundingS2Cell:()=>w2,TileBoundingSphere:()=>lg,TileBoundingVolume:()=>v$,TileCoordinatesImageryProvider:()=>SN,TileDiscardPolicy:()=>D$,TileEdge:()=>Rn,TileImagery:()=>oT,TileMapServiceImageryProvider:()=>u0,TileMetadata:()=>L2,TileOrientedBoundingBox:()=>hd,TileProviderError:()=>vo,TileReplacementQueue:()=>FP,TileSelectionResult:()=>li,TileState:()=>Q$,Tileset3DTileContent:()=>JX,TilesetMetadata:()=>X2,TilesetPipelineStage:()=>jB,TilingScheme:()=>jq,TimeConstants:()=>ai,TimeDynamicImagery:()=>rx,TimeDynamicPointCloud:()=>TL,TimeInterval:()=>wn,TimeIntervalCollection:()=>as,TimeIntervalCollectionPositionProperty:()=>_g,TimeIntervalCollectionProperty:()=>Eg,TimeStandard:()=>oi,Timeline:()=>A9,TimelineHighlightRange:()=>f9,TimelineTrack:()=>p9,Tipsify:()=>L1,ToggleButtonViewModel:()=>Vy,Tonemapper:()=>Kg,TrackingReferenceFrame:()=>rA,Transforms:()=>Dt,TranslationRotationScale:()=>Rb,TranslucentTileClassification:()=>EM,TridiagonalSystemSolver:()=>NE,TrustedServers:()=>X_,TweenCollection:()=>kI,UniformState:()=>sP,UniformType:()=>gL,UrlTemplateImageryProvider:()=>hc,VERSION:()=>lVt,VRButton:()=>b9,VRButtonViewModel:()=>g9,VRTheWorldTerrainProvider:()=>qq,VaryingType:()=>$$,Vector3DTileBatch:()=>Nf,Vector3DTileClampedPolylines:()=>b2,Vector3DTileContent:()=>C2,Vector3DTileGeometry:()=>CA,Vector3DTilePoints:()=>u2,Vector3DTilePolygons:()=>m2,Vector3DTilePolylines:()=>bx,Vector3DTilePrimitive:()=>GC,VelocityOrientationProperty:()=>CW,VelocityVectorProperty:()=>Tg,VertexArray:()=>ui,VertexArrayFacade:()=>zA,VertexAttributeSemantic:()=>lt,VertexFormat:()=>we,VerticalExaggeration:()=>Mr,VerticalExaggerationPipelineStage:()=>xX,VerticalOrigin:()=>kn,VideoSynchronizer:()=>$q,View:()=>FI,Viewer:()=>Iee,ViewportQuad:()=>U$,Visibility:()=>Zr,Visualizer:()=>J8,VoxelBoxShape:()=>jI,VoxelCell:()=>cv,VoxelContent:()=>JI,VoxelCylinderShape:()=>qI,VoxelEllipsoidShape:()=>$I,VoxelInspector:()=>C9,VoxelInspectorViewModel:()=>y9,VoxelMetadataOrder:()=>Um,VoxelPrimitive:()=>by,VoxelProvider:()=>Y$,VoxelRenderResources:()=>_v,VoxelShape:()=>O$,VoxelShapeType:()=>qa,VoxelTraversal:()=>wv,VulkanConstants:()=>e$,WallGeometry:()=>HW,WallGeometryLibrary:()=>jx,WallGeometryUpdater:()=>JW,WallGraphics:()=>hA,WallOutlineGeometry:()=>KW,WebGLConstants:()=>ne,WebMapServiceImageryProvider:()=>zw,WebMapTileServiceImageryProvider:()=>Jw,WebMercatorProjection:()=>Ui,WebMercatorTilingScheme:()=>_s,WindingOrder:()=>ws,WireframeIndexGenerator:()=>aT,WireframePipelineStage:()=>IX,_shadersAcesTonemappingStage:()=>RM,_shadersAdditiveBlend:()=>iv,_shadersAdjustTranslucentFS:()=>KS,_shadersAllMaterialAppearanceFS:()=>A1,_shadersAllMaterialAppearanceVS:()=>g1,_shadersAmbientOcclusionGenerate:()=>VM,_shadersAmbientOcclusionModulate:()=>GM,_shadersAspectRampMaterial:()=>X1,_shadersAtmosphereCommon:()=>_h,_shadersAtmosphereStageFS:()=>qB,_shadersAtmosphereStageVS:()=>$B,_shadersBasicMaterialAppearanceFS:()=>b1,_shadersBasicMaterialAppearanceVS:()=>y1,_shadersBillboardCollectionFS:()=>jX,_shadersBillboardCollectionVS:()=>qX,_shadersBlackAndWhite:()=>ZM,_shadersBloomComposite:()=>BM,_shadersBrdfLutGeneratorFS:()=>lP,_shadersBrightPass:()=>ov,_shadersBrightness:()=>wM,_shadersBumpMapMaterial:()=>W1,_shadersCPUStylingStageFS:()=>Ew,_shadersCPUStylingStageVS:()=>_w,_shadersCheckerboardMaterial:()=>F1,_shadersCloudCollectionFS:()=>dP,_shadersCloudCollectionVS:()=>uP,_shadersCloudNoiseFS:()=>mP,_shadersCloudNoiseVS:()=>hP,_shadersCompareAndPackTranslucentDepth:()=>fP,_shadersCompositeOITFS:()=>pP,_shadersCompositeTranslucentClassification:()=>WI,_shadersComputeIrradianceFS:()=>cB,_shadersComputeRadianceMapFS:()=>lB,_shadersContrastBias:()=>XM,_shadersConvolveSpecularMapFS:()=>dB,_shadersConvolveSpecularMapVS:()=>uB,_shadersCustomShaderStageFS:()=>Lw,_shadersCustomShaderStageVS:()=>Sw,_shadersCzmBuiltins:()=>iC,_shadersDepthOfField:()=>WM,_shadersDepthPlaneFS:()=>AP,_shadersDepthPlaneVS:()=>gP,_shadersDepthView:()=>FM,_shadersDepthViewPacked:()=>j$,_shadersDotMaterial:()=>P1,_shadersEdgeDetection:()=>PM,_shadersElevationBandMaterial:()=>M1,_shadersElevationContourMaterial:()=>v1,_shadersElevationRampMaterial:()=>N1,_shadersEllipsoidFS:()=>JS,_shadersEllipsoidSurfaceAppearanceFS:()=>dN,_shadersEllipsoidSurfaceAppearanceVS:()=>uN,_shadersEllipsoidVS:()=>jS,_shadersFXAA:()=>NM,_shadersFXAA3_11:()=>bP,_shadersFadeMaterial:()=>D1,_shadersFeatureIdStageFS:()=>Rw,_shadersFeatureIdStageVS:()=>Vw,_shadersFilmicTonemapping:()=>MM,_shadersGaussianBlur1D:()=>fy,_shadersGeometryStageFS:()=>Ww,_shadersGeometryStageVS:()=>Fw,_shadersGlobeFS:()=>yP,_shadersGlobeVS:()=>CP,_shadersGridMaterial:()=>Q1,_shadersGroundAtmosphere:()=>qS,_shadersHSBToRGB:()=>tV,_shadersHSLToRGB:()=>nV,_shadersImageBasedLightingStageFS:()=>tw,_shadersInstancingStageCommon:()=>mw,_shadersInstancingStageVS:()=>hw,_shadersIntersectBox:()=>pv,_shadersIntersectClippingPlanes:()=>fv,_shadersIntersectCylinder:()=>Av,_shadersIntersectDepth:()=>hv,_shadersIntersectEllipsoid:()=>gv,_shadersIntersectLongitude:()=>AL,_shadersIntersection:()=>HI,_shadersIntersectionUtils:()=>mv,_shadersLegacyInstancingStageVS:()=>fw,_shadersLensFlare:()=>DM,_shadersLightingStageFS:()=>oX,_shadersMaterialStageFS:()=>sX,_shadersMegatexture:()=>Iv,_shadersMetadataStageFS:()=>Gw,_shadersMetadataStageVS:()=>Zw,_shadersModelClippingPlanesStageFS:()=>sw,_shadersModelClippingPolygonsStageFS:()=>lw,_shadersModelClippingPolygonsStageVS:()=>cw,_shadersModelColorStageFS:()=>rw,_shadersModelFS:()=>NX,_shadersModelSilhouetteStageFS:()=>RX,_shadersModelSilhouetteStageVS:()=>VX,_shadersModelSplitterStageFS:()=>ZX,_shadersModelVS:()=>vX,_shadersModifiedReinhardTonemapping:()=>QM,_shadersMorphTargetsStageVS:()=>cX,_shadersNightVision:()=>UM,_shadersNormalMapMaterial:()=>U1,_shadersOctree:()=>xv,_shadersPassThrough:()=>Ed,_shadersPassThroughDepth:()=>uy,_shadersPbrNeutralTonemapping:()=>vM,_shadersPerInstanceColorAppearanceFS:()=>eR,_shadersPerInstanceColorAppearanceVS:()=>tR,_shadersPerInstanceFlatColorAppearanceFS:()=>tC,_shadersPerInstanceFlatColorAppearanceVS:()=>nR,_shadersPointCloudEyeDomeLighting:()=>wB,_shadersPointCloudStylingStageVS:()=>uX,_shadersPointPrimitiveCollectionFS:()=>R0,_shadersPointPrimitiveCollectionVS:()=>aW,_shadersPolygonSignedDistanceFS:()=>sB,_shadersPolylineArrowMaterial:()=>k1,_shadersPolylineColorAppearanceVS:()=>JG,_shadersPolylineCommon:()=>Md,_shadersPolylineDashMaterial:()=>Y1,_shadersPolylineFS:()=>dC,_shadersPolylineGlowMaterial:()=>O1,_shadersPolylineMaterialAppearanceVS:()=>jG,_shadersPolylineOutlineMaterial:()=>H1,_shadersPolylineShadowVolumeFS:()=>OG,_shadersPolylineShadowVolumeMorphFS:()=>HG,_shadersPolylineShadowVolumeMorphVS:()=>zG,_shadersPolylineShadowVolumeVS:()=>KG,_shadersPolylineVS:()=>r2,_shadersPrimitiveGaussianSplatFS:()=>E2,_shadersPrimitiveGaussianSplatVS:()=>_2,_shadersPrimitiveOutlineStageFS:()=>fX,_shadersPrimitiveOutlineStageVS:()=>hX,_shadersRGBToHSB:()=>iV,_shadersRGBToHSL:()=>oV,_shadersRGBToXYZ:()=>rV,_shadersReinhardTonemapping:()=>kM,_shadersReprojectWebMercatorFS:()=>jw,_shadersReprojectWebMercatorVS:()=>qw,_shadersRimLightingMaterial:()=>z1,_shadersSelectedFeatureIdStageCommon:()=>HE,_shadersShadowVolumeAppearanceFS:()=>j_,_shadersShadowVolumeAppearanceVS:()=>MG,_shadersShadowVolumeFS:()=>Eb,_shadersSilhouette:()=>YM,_shadersSkinningStageVS:()=>bX,_shadersSkyAtmosphereCommon:()=>$S,_shadersSkyAtmosphereFS:()=>xP,_shadersSkyAtmosphereVS:()=>IP,_shadersSkyBoxFS:()=>_P,_shadersSkyBoxVS:()=>EP,_shadersSlopeRampMaterial:()=>K1,_shadersStripeMaterial:()=>J1,_shadersSunFS:()=>TP,_shadersSunTextureFS:()=>SP,_shadersSunVS:()=>LP,_shadersTexturedMaterialAppearanceFS:()=>C1,_shadersTexturedMaterialAppearanceVS:()=>x1,_shadersVector3DTileClampedPolylinesFS:()=>A2,_shadersVector3DTileClampedPolylinesVS:()=>p2,_shadersVector3DTilePolylinesVS:()=>h2,_shadersVectorTileVS:()=>aE,_shadersVerticalExaggerationStageVS:()=>CX,_shadersViewportQuadFS:()=>RP,_shadersViewportQuadVS:()=>yI,_shadersVoxelFS:()=>dv,_shadersVoxelUtils:()=>lv,_shadersVoxelVS:()=>uv,_shadersWater:()=>q1,_shadersWaterMaskMaterial:()=>j1,_shadersXYZToRGB:()=>sV,_shadersacesTonemapping:()=>aV,_shadersalphaWeight:()=>cV,_shadersantialias:()=>lV,_shadersapplyHSBShift:()=>dV,_shadersapproximateSphericalCoordinates:()=>uV,_shadersapproximateTanh:()=>mV,_shadersbackFacing:()=>hV,_shadersbranchFreeTernary:()=>fV,_shaderscascadeColor:()=>pV,_shaderscascadeDistance:()=>AV,_shaderscascadeMatrix:()=>gV,_shaderscascadeWeights:()=>bV,_shadersclipPolygons:()=>yV,_shaderscolumbusViewMorph:()=>CV,_shaderscomputeAtmosphereColor:()=>xV,_shaderscomputeGroundAtmosphereScattering:()=>IV,_shaderscomputePosition:()=>_V,_shaderscomputeScattering:()=>EV,_shadersconvertUvToBox:()=>bv,_shadersconvertUvToCylinder:()=>yv,_shadersconvertUvToEllipsoid:()=>Cv,_shaderscosineAndSine:()=>TV,_shadersdecompressTextureCoordinates:()=>SV,_shadersdegreesPerRadian:()=>cR,_shadersdepthClamp:()=>LV,_shadersdepthRange:()=>lR,_shadersdepthRangeStruct:()=>HR,_shaderseastNorthUpToEyeCoordinates:()=>RV,_shadersellipsoidContainsPoint:()=>VV,_shadersellipsoidTextureCoordinates:()=>GV,_shadersepsilon1:()=>dR,_shadersepsilon2:()=>uR,_shadersepsilon3:()=>mR,_shadersepsilon4:()=>hR,_shadersepsilon5:()=>fR,_shadersepsilon6:()=>pR,_shadersepsilon7:()=>AR,_shadersequalsEpsilon:()=>ZV,_shaderseyeOffset:()=>BV,_shaderseyeToWindowCoordinates:()=>wV,_shadersfastApproximateAtan:()=>XV,_shadersfog:()=>WV,_shadersgammaCorrect:()=>FV,_shadersgeodeticSurfaceNormal:()=>PV,_shadersgetDefaultMaterial:()=>MV,_shadersgetDynamicAtmosphereLightDirection:()=>vV,_shadersgetLambertDiffuse:()=>NV,_shadersgetSpecular:()=>DV,_shadersgetWaterNoise:()=>QV,_shadershue:()=>UV,_shadersinfinity:()=>gR,_shadersinverseGamma:()=>kV,_shadersisEmpty:()=>YV,_shadersisFull:()=>OV,_shaderslatitudeToWebMercatorFraction:()=>HV,_shaderslineDistance:()=>zV,_shaderslinearToSrgb:()=>KV,_shadersluminance:()=>JV,_shadersmaterial:()=>zR,_shadersmaterialInput:()=>KR,_shadersmaximumComponent:()=>jV,_shadersmetersPerPixel:()=>qV,_shadersmodelMaterial:()=>JR,_shadersmodelToWindowCoordinates:()=>$V,_shadersmodelVertexOutput:()=>jR,_shadersmultiplyWithColorBalance:()=>eG,_shadersnearFarScalar:()=>tG,_shadersoctDecode:()=>nG,_shadersoneOverPi:()=>bR,_shadersoneOverTwoPi:()=>yR,_shaderspackDepth:()=>iG,_shaderspassCesium3DTile:()=>CR,_shaderspassCesium3DTileClassification:()=>xR,_shaderspassCesium3DTileClassificationIgnoreShow:()=>IR,_shaderspassClassification:()=>_R,_shaderspassCompute:()=>ER,_shaderspassEnvironment:()=>TR,_shaderspassGaussianSplats:()=>SR,_shaderspassGlobe:()=>LR,_shaderspassOpaque:()=>RR,_shaderspassOverlay:()=>VR,_shaderspassTerrainClassification:()=>GR,_shaderspassTranslucent:()=>ZR,_shaderspassVoxels:()=>BR,_shaderspbrLighting:()=>oG,_shaderspbrNeutralTonemapping:()=>rG,_shadersphong:()=>sG,_shaderspi:()=>wR,_shaderspiOverFour:()=>XR,_shaderspiOverSix:()=>WR,_shaderspiOverThree:()=>FR,_shaderspiOverTwo:()=>PR,_shadersplaneDistance:()=>aG,_shaderspointAlongRay:()=>cG,_shadersradiansPerDegree:()=>MR,_shadersray:()=>qR,_shadersrayEllipsoidIntersectionInterval:()=>lG,_shadersraySegment:()=>$R,_shadersraySphereIntersectionInterval:()=>dG,_shadersreadDepth:()=>uG,_shadersreadNonPerspective:()=>mG,_shadersreverseLogDepth:()=>hG,_shadersround:()=>fG,_shaderssaturation:()=>pG,_shaderssceneMode2D:()=>vR,_shaderssceneMode3D:()=>NR,_shaderssceneModeColumbusView:()=>DR,_shaderssceneModeMorphing:()=>QR,_shadersshadowDepthCompare:()=>AG,_shadersshadowParameters:()=>eV,_shadersshadowVisibility:()=>gG,_shaderssignNotZero:()=>bG,_shaderssolarRadius:()=>UR,_shaderssphericalHarmonics:()=>yG,_shaderssrgbToLinear:()=>CG,_shaderstangentToEyeSpaceMatrix:()=>xG,_shaderstextureCube:()=>IG,_shadersthreePiOver2:()=>kR,_shaderstransformPlane:()=>_G,_shaderstranslateRelativeToEye:()=>EG,_shaderstranslucentPhong:()=>TG,_shaderstranspose:()=>SG,_shaderstwoPi:()=>YR,_shadersunpackClippingExtents:()=>LG,_shadersunpackDepth:()=>RG,_shadersunpackFloat:()=>VG,_shadersunpackUint:()=>GG,_shadersvalueTransform:()=>ZG,_shadersvertexLogDepth:()=>BG,_shaderswebMercatorMaxLatitude:()=>OR,_shaderswindowToEyeCoordinates:()=>wG,_shaderswriteDepthClamp:()=>XG,_shaderswriteLogDepth:()=>WG,_shaderswriteNonPerspective:()=>FG,addAllToArray:()=>ci,addBuffer:()=>QZ,addDefaults:()=>XZ,addExtensionsRequired:()=>vZ,addExtensionsUsed:()=>tm,addPipelineExtras:()=>Db,addToArray:()=>Os,appendForwardSlash:()=>$L,arrayRemoveDuplicates:()=>Xo,barycentricCoordinates:()=>Hy,binarySearch:()=>Yo,buildModuleUrl:()=>hn,buildVoxelDrawCommands:()=>Tv,clone:()=>ke,combine:()=>Lt,computeFlyToLocationForRectangle:()=>EI,createBillboardPointCallback:()=>fx,createCommand:()=>Xn,createDefaultImageryProviderViewModels:()=>vN,createDefaultTerrainProviderViewModels:()=>NN,createElevationBandMaterial:()=>H$,createGooglePhotorealistic3DTileset:()=>z$,createGuid:()=>qn,createMaterialPropertyDescriptor:()=>Oo,createOsmBuildingsAsync:()=>K$,createPropertyDescriptor:()=>fe,createRawPropertyDescriptor:()=>ul,createTangentSpaceDebugPrimitive:()=>J$,createTaskProcessorWorker:()=>tee,createUniform:()=>sR,createUniformArray:()=>aR,createWorldBathymetryAsync:()=>eN,createWorldImageryAsync:()=>YA,createWorldTerrainAsync:()=>h_,decodeGoogleEarthEnterpriseData:()=>tN,decodeVectorPolylinePositions:()=>y2,defaultValue:()=>n$,defer:()=>Ol,defined:()=>l,demodernizeShader:()=>PG,deprecationWarning:()=>_r,destroyObject:()=>me,exportKml:()=>t7,findAccessorMinMax:()=>vC,findContentMetadata:()=>xx,findGroupMetadata:()=>Ix,findTileMetadata:()=>R2,forEachTextureInMaterial:()=>AE,formatError:()=>Kf,freezeRenderState:()=>lH,getAbsoluteUri:()=>Tf,getAccessorByteStride:()=>nd,getBaseUri:()=>e1,getBinaryAccessor:()=>Dd,getClipAndStyleCode:()=>Uv,getClippingFunction:()=>Qg,getComponentReader:()=>LA,getElement:()=>Dn,getExtensionFromUri:()=>Fy,getFilenameFromUri:()=>yg,getImageFromTypedArray:()=>Sv,getImagePixels:()=>$m,getJsonFromTypedArray:()=>mr,getMagic:()=>gh,getMetadataClassProperty:()=>Xv,getMetadataProperty:()=>Fv,getStringFromTypedArray:()=>$l,getTimestamp:()=>Fi,hasExtension:()=>Ii,heightReferenceOnEntityPropertyChanged:()=>fA,isBitSet:()=>el,isBlobUri:()=>Py,isCrossOriginUrl:()=>hb,isDataUri:()=>Op,isLeapYear:()=>qm,knockout:()=>Ee,knockout_3_5_1:()=>I_,knockout_es5:()=>VN,loadAndExecuteScript:()=>My,loadCubeMap:()=>cP,loadImageFromTypedArray:()=>FC,loadKTX2:()=>Kl,mergeSort:()=>Sp,moveTechniqueRenderStates:()=>MZ,moveTechniquesToExtension:()=>NZ,numberOfComponentsForType:()=>Ud,objectToQuery:()=>vy,oneTimeWarning:()=>xt,parseBatchTable:()=>PA,parseFeatureMetadataLegacy:()=>yB,parseGlb:()=>FZ,parseResponseHeaders:()=>t1,parseStructuralMetadata:()=>bB,pickModel:()=>dT,pointInsideTriangle:()=>i$,preprocess3DTileContent:()=>rg,processVoxelProperties:()=>Ev,queryToObject:()=>wd,readAccessorPacked:()=>UZ,removeExtension:()=>NC,removeExtensionsRequired:()=>WZ,removeExtensionsUsed:()=>MC,removePipelineExtras:()=>PZ,removeUnusedElements:()=>DZ,resizeImageToNextPowerOfTwo:()=>kb,sampleTerrain:()=>VP,sampleTerrainMostDetailed:()=>_I,scaleToGeodeticSurface:()=>Wy,srgbToLinear:()=>f_,subdivideArray:()=>vG,subscribeAndEvaluate:()=>$a,updateAccessorComponentTypes:()=>kZ,updateVersion:()=>YZ,usesExtension:()=>Er,viewerCesium3DTilesInspectorMixin:()=>_ee,viewerCesiumInspectorMixin:()=>Eee,viewerDragDropMixin:()=>See,viewerPerformanceWatchdogMixin:()=>Lee,viewerVoxelInspectorMixin:()=>Vee,webGLConstantToGlslType:()=>o$,wrapFunction:()=>nN,writeTextToCanvas:()=>Ax});var lMo=y(C(),1);var imo=y(C(),1);var DVt=y(C(),1);var pVt=y(C(),1),Z3={};Z3.EMPTY_OBJECT=Object.freeze({});Z3.EMPTY_ARRAY=Object.freeze([]);var Y=Z3;var gVt=y(C(),1);function eLe(e){return e!=null}var l=eLe;var CVt=y(C(),1);function wy(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(wy.prototype=Object.create(Error.prototype),wy.prototype.constructor=wy);wy.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};wy.throwInstantiationError=function(){throw new wy("This function defines an interface and should not be called directly.")};var Ae=wy;var LVt=y(C(),1);var EVt=y(C(),1);var Ys={};Ys.typeOf={};function tLe(e){return`${e} is required, actual value was undefined`}function L_(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}Ys.defined=function(e,t){if(!l(t))throw new Ae(tLe(e))};Ys.typeOf.func=function(e,t){if(typeof t!="function")throw new Ae(L_(typeof t,"function",e))};Ys.typeOf.string=function(e,t){if(typeof t!="string")throw new Ae(L_(typeof t,"string",e))};Ys.typeOf.number=function(e,t){if(typeof t!="number")throw new Ae(L_(typeof t,"number",e))};Ys.typeOf.number.lessThan=function(e,t,n){if(Ys.typeOf.number(e,t),t>=n)throw new Ae(`Expected ${e} to be less than ${n}, actual value was ${t}`)};Ys.typeOf.number.lessThanOrEquals=function(e,t,n){if(Ys.typeOf.number(e,t),t>n)throw new Ae(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};Ys.typeOf.number.greaterThan=function(e,t,n){if(Ys.typeOf.number(e,t),t<=n)throw new Ae(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};Ys.typeOf.number.greaterThanOrEquals=function(e,t,n){if(Ys.typeOf.number(e,t),t0){for(o.sort(nLe),e=0;e0&&(this._hash={},e.length=0)};var Bt=Xy;var vXt=y(C(),1);var qVt=y(C(),1);var zVt=y(C(),1),B3=y(T9(),1);var ht={};ht.EPSILON1=.1;ht.EPSILON2=.01;ht.EPSILON3=.001;ht.EPSILON4=1e-4;ht.EPSILON5=1e-5;ht.EPSILON6=1e-6;ht.EPSILON7=1e-7;ht.EPSILON8=1e-8;ht.EPSILON9=1e-9;ht.EPSILON10=1e-10;ht.EPSILON11=1e-11;ht.EPSILON12=1e-12;ht.EPSILON13=1e-13;ht.EPSILON14=1e-14;ht.EPSILON15=1e-15;ht.EPSILON16=1e-16;ht.EPSILON17=1e-17;ht.EPSILON18=1e-18;ht.EPSILON19=1e-19;ht.EPSILON20=1e-20;ht.EPSILON21=1e-21;ht.GRAVITATIONALPARAMETER=3986004418e5;ht.SOLAR_RADIUS=6955e5;ht.LUNAR_RADIUS=1737400;ht.SIXTY_FOUR_KILOBYTES=64*1024;ht.FOUR_GIGABYTES=4*1024*1024*1024;ht.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ht.signNotZero=function(e){return e<0?-1:1};ht.toSNorm=function(e,t){return t=t??255,Math.round((ht.clamp(e,-1,1)*.5+.5)*t)};ht.fromSNorm=function(e,t){return t=t??255,ht.clamp(e,0,t)/t*2-1};ht.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ht.clamp((e-t)/n,0,1)};ht.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ht.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ht.lerp=function(e,t,n){return(1-n)*e+n*t};ht.PI=Math.PI;ht.ONE_OVER_PI=1/Math.PI;ht.PI_OVER_TWO=Math.PI/2;ht.PI_OVER_THREE=Math.PI/3;ht.PI_OVER_FOUR=Math.PI/4;ht.PI_OVER_SIX=Math.PI/6;ht.THREE_PI_OVER_TWO=3*Math.PI/2;ht.TWO_PI=2*Math.PI;ht.ONE_OVER_TWO_PI=1/(2*Math.PI);ht.RADIANS_PER_DEGREE=Math.PI/180;ht.DEGREES_PER_RADIAN=180/Math.PI;ht.RADIANS_PER_ARCSECOND=ht.RADIANS_PER_DEGREE/3600;ht.toRadians=function(e){return e*ht.RADIANS_PER_DEGREE};ht.toDegrees=function(e){return e*ht.DEGREES_PER_RADIAN};ht.convertLongitudeRange=function(e){let t=ht.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ht.clampToLatitudeRange=function(e){return ht.clamp(e,-1*ht.PI_OVER_TWO,ht.PI_OVER_TWO)};ht.negativePiToPi=function(e){return e>=-ht.PI&&e<=ht.PI?e:ht.zeroToTwoPi(e+ht.PI)-ht.PI};ht.zeroToTwoPi=function(e){if(e>=0&&e<=ht.TWO_PI)return e;let t=ht.mod(e,ht.TWO_PI);return Math.abs(t)ht.EPSILON14?ht.TWO_PI:t};ht.mod=function(e,t){return ht.sign(e)===ht.sign(t)&&Math.abs(e)n};ht.greaterThanOrEquals=function(e,t,n){return e-t>-n};var S9=[1];ht.factorial=function(e){let t=S9.length;if(e>=t){let n=S9[t-1];for(let i=t;i<=e;i++){let o=n*i;S9.push(o),n=o}}return S9[e]};ht.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ht.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ht.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ht.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ht.clamp=function(e,t,n){return en?n:e};var Wee=new B3.default;ht.setRandomNumberSeed=function(e){Wee=new B3.default(e)};ht.nextRandomNumber=function(){return Wee.random()};ht.randomBetween=function(e,t){return ht.nextRandomNumber()*(t-e)+e};ht.acosClamped=function(e){return Math.acos(ht.clamp(e,-1,1))};ht.asinClamped=function(e){return Math.asin(ht.clamp(e,-1,1))};ht.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ht.logBase=function(e,t){return Math.log(e)/Math.log(t)};ht.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ht.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ht.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ht.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ht.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ht.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ht.PI_OVER_TWO-i:i,i=e<0?ht.PI-i:i,i=t<0?-i:i,i};var Z=ht;function Ot(e,t){this.x=e??0,this.y=t??0}Ot.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Ot(e,t)};Ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Ot(e.x,e.y)};Ot.fromCartesian3=Ot.clone;Ot.fromCartesian4=Ot.clone;Ot.packedLength=2;Ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ot),n.x=e[t++],n.y=e[t],n};Ot.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;oZ.EPSILON12);return l(o)?(o.x=r*F,o.y=s*P,o.z=a*A,o):new m(r*F,s*P,a*A)}var Wy=dLe;function qo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}qo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new qo(e,t,n)};qo.fromDegrees=function(e,t,n,i){return e=Z.toRadians(e),t=Z.toRadians(t),qo.fromRadians(e,t,n,i)};var uLe=new m,mLe=new m,hLe=new m;qo._ellipsoidOneOverRadii=new m(1/6378137,1/6378137,1/6356752314245179e-9);qo._ellipsoidOneOverRadiiSquared=new m(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));qo._ellipsoidCenterToleranceSquared=Z.EPSILON1;qo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:qo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:qo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:qo._ellipsoidCenterToleranceSquared,s=Wy(e,i,o,r,mLe);if(!l(s))return;let a=m.multiplyComponents(s,o,uLe);a=m.normalize(a,a);let c=m.subtract(e,s,hLe),d=Math.atan2(a.y,a.x),u=Math.asin(a.z),h=Z.sign(m.dot(c,e))*m.magnitude(c);return l(n)?(n.longitude=d,n.latitude=u,n.height=h,n):new qo(d,u,h)};qo.toCartesian=function(e,t,n){return m.fromRadians(e.longitude,e.latitude,e.height,t,n)};qo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new qo(e.longitude,e.latitude,e.height)};qo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};qo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};qo.ZERO=Object.freeze(new qo(0,0,0));qo.prototype.clone=function(e){return qo.clone(this,e)};qo.prototype.equals=function(e){return qo.equals(this,e)};qo.prototype.equalsEpsilon=function(e,t){return qo.equalsEpsilon(this,e,t)};qo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var ge=qo;var xGt=y(C(),1);function Dee(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new m(t,n,i),e._radiiSquared=new m(t*t,n*n,i*i),e._radiiToTheFourth=new m(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new m(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new m(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=Z.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Bi(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Dee(this,e,t,n)}Object.defineProperties(Bi.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Bi.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(m.clone(n,t._radii),m.clone(e._radiiSquared,t._radiiSquared),m.clone(e._radiiToTheFourth,t._radiiToTheFourth),m.clone(e._oneOverRadii,t._oneOverRadii),m.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Bi(n.x,n.y,n.z)};Bi.fromCartesian3=function(e,t){return l(t)||(t=new Bi),l(e)&&Dee(t,e.x,e.y,e.z),t};Bi.WGS84=Object.freeze(new Bi(6378137,6378137,6356752314245179e-9));Bi.UNIT_SPHERE=Object.freeze(new Bi(1,1,1));Bi.MOON=Object.freeze(new Bi(Z.LUNAR_RADIUS,Z.LUNAR_RADIUS,Z.LUNAR_RADIUS));Bi._default=Bi.WGS84;Object.defineProperties(Bi,{default:{get:function(){return Bi._default},set:function(e){Bi._default=e,m._ellipsoidRadiiSquared=e.radiiSquared,ge._ellipsoidOneOverRadii=e.oneOverRadii,ge._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,ge._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Bi.prototype.clone=function(e){return Bi.clone(this,e)};Bi.packedLength=m.packedLength;Bi.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),t};Bi.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t);return Bi.fromCartesian3(i,n)};Bi.prototype.geocentricSurfaceNormal=m.normalize;Bi.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new m),t.x=r,t.y=s,t.z=a,m.normalize(t,t)};Bi.prototype.geodeticSurfaceNormal=function(e,t){if(!m.equalsEpsilon(e,m.ZERO,Z.EPSILON14))return l(t)||(t=new m),t=m.multiplyComponents(e,this._oneOverRadiiSquared,t),m.normalize(t,t)};var fLe=new m,pLe=new m;Bi.prototype.cartographicToCartesian=function(e,t){let n=fLe,i=pLe;this.geodeticSurfaceNormalCartographic(e,n),m.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(m.dot(n,i));return m.divideByScalar(i,o,i),m.multiplyByScalar(n,e.height,n),l(t)||(t=new m),m.add(i,n,t)};Bi.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i=this._radii.z-t))return n};var yLe=new m;Bi.prototype.getLocalCurvature=function(e,t){l(t)||(t=new D);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,yLe),i=m.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return D.fromElements(1/i,1/r,t)};var CLe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],xLe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function Nee(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*CLe[s];r+=xLe[s]*(n(i+a)+n(i-a))}return r*=o,r}Bi.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n0){o=r-1;continue}return r}return~(o+1)}var Yo=SLe;var PGt=y(C(),1);function LLe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var ub=LLe;var rZt=y(C(),1);var kGt=y(C(),1);var vGt=y(C(),1);function RLe(e){return e%4===0&&e%100!==0||e%400===0}var qm=RLe;var kee=[31,28,31,30,31,30,31,31,30,31,30,31];function VLe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function b(){Bo.typeOf.number.greaterThanOrEquals("Year",e,1),Bo.typeOf.number.lessThanOrEquals("Year",e,9999),Bo.typeOf.number.greaterThanOrEquals("Month",t,1),Bo.typeOf.number.lessThanOrEquals("Month",t,12),Bo.typeOf.number.greaterThanOrEquals("Day",n,1),Bo.typeOf.number.lessThanOrEquals("Day",n,31),Bo.typeOf.number.greaterThanOrEquals("Hour",i,0),Bo.typeOf.number.lessThanOrEquals("Hour",i,23),Bo.typeOf.number.greaterThanOrEquals("Minute",o,0),Bo.typeOf.number.lessThanOrEquals("Minute",o,59),Bo.typeOf.bool("IsLeapSecond",a),Bo.typeOf.number.greaterThanOrEquals("Second",r,0),Bo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Bo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Bo.typeOf.number.lessThan("Millisecond",s,1e3)}function x(){let I=t===2&&qm(e)?kee[t-1]+1:kee[t-1];if(n>I)throw new Ae("Month and Day represents invalid date")}}var Yp=VLe;var OGt=y(C(),1);function GLe(e,t){this.julianDate=e,this.offset=t}var ro=GLe;var zGt=y(C(),1),ZLe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ai=Object.freeze(ZLe);var JGt=y(C(),1),BLe={UTC:0,TAI:1},oi=Object.freeze(BLe);var Oee=new Yp,W3=[31,28,31,30,31,30,31,31,30,31,30,31],F3=29;function P3(e,t){return Nt.compare(e.julianDate,t.julianDate)}var V_=new ro;function w9(e){V_.julianDate=e;let t=Nt.leapSeconds,n=Yo(t,V_,P3);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Nt.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Nt.addSeconds(e,i,e)}function Yee(e,t){V_.julianDate=e;let n=Nt.leapSeconds,i=Yo(n,V_,P3);if(i<0&&(i=~i),i===0)return Nt.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Nt.addSeconds(e,-n[i-1].offset,t);let o=Nt.secondsDifference(n[i].julianDate,e);if(o===0)return Nt.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Nt.addSeconds(e,-n[--i].offset,t)}function mb(e,t,n){let i=t/ai.SECONDS_PER_DAY|0;return e+=i,t-=ai.SECONDS_PER_DAY*i,t<0&&(e--,t+=ai.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function M3(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,d=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let u=r+(i*ai.SECONDS_PER_HOUR+o*ai.SECONDS_PER_MINUTE+s*ai.SECONDS_PER_MILLISECOND);return u>=43200&&(d-=1),[d,u]}var wLe=/^(\d{4})$/,XLe=/^(\d{4})-(\d{2})$/,WLe=/^(\d{4})-?(\d{3})$/,FLe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,PLe=/^(\d{4})-?(\d{2})-?(\d{2})$/,v3=/([Z+\-])?(\d{2})?:?(\d{2})?$/,MLe=/^(\d{2})(\.\d+)?/.source+v3.source,vLe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+v3.source,NLe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+v3.source;function Nt(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??oi.UTC;let i=e|0;t=t+(e-i)*ai.SECONDS_PER_DAY,mb(i,t,this),n===oi.UTC&&w9(this)}Nt.fromGregorianDate=function(e,t){let n=M3(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(mb(n[0],n[1],t),w9(t),t):new Nt(n[0],n[1],oi.UTC)};Nt.fromDate=function(e,t){let n=M3(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(mb(n[0],n[1],t),w9(t),t):new Nt(n[0],n[1],oi.UTC)};Nt.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,d=0,u=n[0],h=n[1],p,g;if(n=u.match(PLe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=u.match(XLe),n!==null)i=+n[1],o=+n[2];else if(n=u.match(wLe),n!==null)i=+n[1];else{let I;if(n=u.match(WLe),n!==null)i=+n[1],I=+n[2],g=qm(i);else if(n=u.match(FLe),n!==null){i=+n[1];let _=+n[2],E=+n[3]||0,S=new Date(Date.UTC(i,0,4));I=_*7+E-S.getUTCDay()-3}p=new Date(Date.UTC(i,0,1)),p.setUTCDate(I),o=p.getUTCMonth()+1,r=p.getUTCDate()}g=qm(i);let f;if(l(h)){n=h.match(NLe),n!==null?(s=+n[1],a=+n[2],c=+n[3],d=+(n[4]||0)*1e3,f=5):(n=h.match(vLe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,f=4):(n=h.match(MLe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,f=3)));let I=n[f],_=+n[f+1],E=+(n[f+2]||0);switch(I){case"+":s=s-_,a=a-E;break;case"-":s=s+_,a=a+E;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let b=c===60;for(b&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(p=g&&o===2?F3:W3[o-1];r>p;)r-=p,o++,o>12&&(o-=12,i++),p=g&&o===2?F3:W3[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),p=g&&o===2?F3:W3[o-1],r+=p;let x=M3(i,o,r,s,a,c,d);return l(t)?(mb(x[0],x[1],t),w9(t)):t=new Nt(x[0],x[1],oi.UTC),b&&Nt.addSeconds(t,1,t),t};Nt.now=function(e){return Nt.fromDate(new Date,e)};var B9=new Nt(0,0,oi.TAI);Nt.toGregorianDate=function(e,t){let n=!1,i=Yee(e,B9);l(i)||(Nt.addSeconds(e,-1,B9),i=Yee(B9,B9),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let d=80*s/2447|0,u=s-(2447*d/80|0)|0;s=d/11|0;let h=d+2-12*s|0,p=100*(a-49)+c+s|0,g=r/ai.SECONDS_PER_HOUR|0,f=r-g*ai.SECONDS_PER_HOUR,b=f/ai.SECONDS_PER_MINUTE|0;f=f-b*ai.SECONDS_PER_MINUTE;let x=f|0,I=(f-x)/ai.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(x+=1),l(t)?(t.year=p,t.month=h,t.day=u,t.hour=g,t.minute=b,t.second=x,t.millisecond=I,t.isLeapSecond=n,t):new Yp(p,h,u,g,b,x,I,n)};Nt.toDate=function(e){let t=Nt.toGregorianDate(e,Oee),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Nt.toIso8601=function(e,t){let n=Nt.toGregorianDate(e,Oee),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,d=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&d===0&&(i=9999,o=12,r=31,s=24);let u;if(!l(t)&&d!==0){let h=d*.01;return u=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${u}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(u=(d*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${u}Z`)};Nt.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Nt(e.dayNumber,e.secondsOfDay,oi.TAI)};Nt.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Nt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Nt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Nt.secondsDifference(e,t))<=n};Nt.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ai.SECONDS_PER_DAY};Nt.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ai.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Nt.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ai.SECONDS_PER_DAY;return n+i};Nt.computeTaiMinusUtc=function(e){V_.julianDate=e;let t=Nt.leapSeconds,n=Yo(t,V_,P3);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Nt.addSeconds=function(e,t,n){return mb(e.dayNumber,e.secondsOfDay+t,n)};Nt.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ai.SECONDS_PER_MINUTE;return mb(e.dayNumber,i,n)};Nt.addHours=function(e,t,n){let i=e.secondsOfDay+t*ai.SECONDS_PER_HOUR;return mb(e.dayNumber,i,n)};Nt.addDays=function(e,t,n){let i=e.dayNumber+t;return mb(i,e.secondsOfDay,n)};Nt.lessThan=function(e,t){return Nt.compare(e,t)<0};Nt.lessThanOrEquals=function(e,t){return Nt.compare(e,t)<=0};Nt.greaterThan=function(e,t){return Nt.compare(e,t)>0};Nt.greaterThanOrEquals=function(e,t){return Nt.compare(e,t)>=0};Nt.prototype.clone=function(e){return Nt.clone(this,e)};Nt.prototype.equals=function(e){return Nt.equals(this,e)};Nt.prototype.equalsEpsilon=function(e,t){return Nt.equalsEpsilon(this,e,t)};Nt.prototype.toString=function(){return Nt.toIso8601(this)};Nt.leapSeconds=[new ro(new Nt(2441317,43210,oi.TAI),10),new ro(new Nt(2441499,43211,oi.TAI),11),new ro(new Nt(2441683,43212,oi.TAI),12),new ro(new Nt(2442048,43213,oi.TAI),13),new ro(new Nt(2442413,43214,oi.TAI),14),new ro(new Nt(2442778,43215,oi.TAI),15),new ro(new Nt(2443144,43216,oi.TAI),16),new ro(new Nt(2443509,43217,oi.TAI),17),new ro(new Nt(2443874,43218,oi.TAI),18),new ro(new Nt(2444239,43219,oi.TAI),19),new ro(new Nt(2444786,43220,oi.TAI),20),new ro(new Nt(2445151,43221,oi.TAI),21),new ro(new Nt(2445516,43222,oi.TAI),22),new ro(new Nt(2446247,43223,oi.TAI),23),new ro(new Nt(2447161,43224,oi.TAI),24),new ro(new Nt(2447892,43225,oi.TAI),25),new ro(new Nt(2448257,43226,oi.TAI),26),new ro(new Nt(2448804,43227,oi.TAI),27),new ro(new Nt(2449169,43228,oi.TAI),28),new ro(new Nt(2449534,43229,oi.TAI),29),new ro(new Nt(2450083,43230,oi.TAI),30),new ro(new Nt(2450630,43231,oi.TAI),31),new ro(new Nt(2451179,43232,oi.TAI),32),new ro(new Nt(2453736,43233,oi.TAI),33),new ro(new Nt(2454832,43234,oi.TAI),34),new ro(new Nt(2456109,43235,oi.TAI),35),new ro(new Nt(2457204,43236,oi.TAI),36),new ro(new Nt(2457754,43237,oi.TAI),37)];var j=Nt;var zBt=y(C(),1),ute=y(Bd(),1);var uZt=y(C(),1);function DLe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var $L=DLe;var hZt=y(C(),1);function $ee(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=$ee(o,t)),n[i]=o}return n}var ke=$ee;var AZt=y(C(),1);function ete(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=ete(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var Lt=ete;var bZt=y(C(),1);function QLe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var Ol=QLe;var xZt=y(C(),1),tte=y(Bd(),1);function N3(e,t){let n;return typeof document<"u"&&(n=document),N3._implementation(e,t,n)}N3._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new tte.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var Tf=N3;var _Zt=y(C(),1),nte=y(Bd(),1);function ULe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new nte.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var e1=ULe;var TZt=y(C(),1),ite=y(Bd(),1);function kLe(e){let t=new ite.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var Fy=kLe;var RZt=y(C(),1);var ote={};function YLe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=ote[t];l(i)||(i={},ote[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var $m=YLe;var GZt=y(C(),1);var OLe=/^blob:/i;function HLe(e){return OLe.test(e)}var Py=HLe;var wZt=y(C(),1);var Sf;function zLe(e){l(Sf)||(Sf=document.createElement("a")),Sf.href=window.location.href;let t=Sf.host,n=Sf.protocol;return Sf.href=e,Sf.href=Sf.href,n!==Sf.protocol||t!==Sf.host}var hb=zLe;var WZt=y(C(),1);var KLe=/^data:/i;function JLe(e){return KLe.test(e)}var Op=JLe;var PZt=y(C(),1);function jLe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var My=jLe;var vZt=y(C(),1);function qLe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var t1=n1e;function rte(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=t1(this.responseHeaders))}rte.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var Lf=rte;var ABt=y(C(),1),M9=y(Bd(),1);var aBt=y(C(),1);function Ny(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(Ny.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e=0;--t)this.heapify(t)};Ny.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(oi&&(r=t[i],this._length=i),r};Ny.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return D3(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var n1=Ny;function i1e(e,t){return e.priority-t.priority}var Ao={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},B_=20,Tc=new n1({comparator:i1e});Tc.maximumLength=B_;Tc.reserve(B_);var Rf=[],Hp={},o1e=typeof document<"u"?new M9.default(document.location.href):new M9.default,v9=new Ce;function ar(){}ar.maximumRequests=50;ar.maximumRequestsPerServer=18;ar.requestsByServer={};ar.throttleRequests=!0;ar.debugShowStatistics=!1;ar.requestCompletedEvent=v9;Object.defineProperties(ar,{statistics:{get:function(){return Ao}},priorityHeapLength:{get:function(){return B_},set:function(e){if(ee;){let t=Tc.pop();Dy(t)}B_=e,Tc.maximumLength=e,Tc.reserve(e)}}});function ste(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}ar.serverHasOpenSlots=function(e,t){t=t??1;let n=ar.requestsByServer[e]??ar.maximumRequestsPerServer;return Hp[e]+t<=n};ar.heapHasOpenSlots=function(e){return Tc.length+e<=B_};function ate(e){return e.state===mi.UNISSUED&&(e.state=mi.ISSUED,e.deferred=Ol()),e.deferred.promise}function r1e(e){return function(t){if(e.state===mi.CANCELLED)return;let n=e.deferred;--Ao.numberOfActiveRequests,--Hp[e.serverKey],v9.raiseEvent(),e.state=mi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function s1e(e){return function(t){e.state!==mi.CANCELLED&&(++Ao.numberOfFailedRequests,--Ao.numberOfActiveRequests,--Hp[e.serverKey],v9.raiseEvent(t),e.state=mi.FAILED,e.deferred.reject(t))}}function cte(e){let t=ate(e);return e.state=mi.ACTIVE,Rf.push(e),++Ao.numberOfActiveRequests,++Ao.numberOfActiveRequestsEver,++Hp[e.serverKey],e.requestFunction().then(r1e(e)).catch(s1e(e)),t}function Dy(e){let t=e.state===mi.ACTIVE;if(e.state=mi.CANCELLED,++Ao.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--Ao.numberOfActiveRequests,--Hp[e.serverKey],++Ao.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}ar.update=function(){let e,t,n=0,i=Rf.length;for(e=0;e0&&(Rf[e-n]=t)}Rf.length-=n;let o=Tc.internalArray,r=Tc.length;for(e=0;e0;){if(t=Tc.pop(),t.cancelled){Dy(t);continue}if(t.throttleByServer&&!ar.serverHasOpenSlots(t.serverKey)){Dy(t);continue}cte(t),++a}a1e()};ar.getServerKey=function(e){let t=new M9.default(e);t.scheme()===""&&(t=t.absoluteTo(o1e),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=Hp[n];return l(i)||(Hp[n]=0),n};ar.request=function(e){if(Op(e.url)||Py(e.url))return v9.raiseEvent(),e.state=mi.RECEIVED,e.requestFunction();if(++Ao.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=ar.getServerKey(e.url)),ar.throttleRequests&&e.throttleByServer&&!ar.serverHasOpenSlots(e.serverKey))return;if(!ar.throttleRequests||!e.throttle)return cte(e);if(Rf.length>=ar.maximumRequests)return;ste(e);let t=Tc.insert(e);if(l(t)){if(t===e)return;Dy(t)}return ate(e)};function a1e(){ar.debugShowStatistics&&(Ao.numberOfActiveRequests===0&&Ao.lastNumberOfActiveRequests>0&&(Ao.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${Ao.numberOfAttemptedRequests}`),Ao.numberOfAttemptedRequests=0),Ao.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${Ao.numberOfCancelledRequests}`),Ao.numberOfCancelledRequests=0),Ao.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${Ao.numberOfCancelledActiveRequests}`),Ao.numberOfCancelledActiveRequests=0),Ao.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${Ao.numberOfFailedRequests}`),Ao.numberOfFailedRequests=0)),Ao.lastNumberOfActiveRequests=Ao.numberOfActiveRequests)}ar.clearForSpecs=function(){for(;Tc.length>0;){let t=Tc.pop();Dy(t)}let e=Rf.length;for(let t=0;t0}},credits:{get:function(){return this._credits}}});Ft.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Ft.prototype.parseUrl=function(e,t,n,i){let o=new ute.default(e),r=l1e(o.query());this._queryParameters=t?D9(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(Tf(i))),this._url=o.toString()};function l1e(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:wd(e)}function D9(e,t,n){if(!n)return Lt(e,t);let i=ke(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Ft.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${d1e(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function d1e(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${vy(e)}`}Ft.prototype.setQueryParameters=function(e,t){t?this._queryParameters=D9(this._queryParameters,e,!1):this._queryParameters=D9(e,this._queryParameters,!1)};Ft.prototype.appendQueryParameters=function(e){this._queryParameters=D9(e,this._queryParameters,!0)};Ft.prototype.setTemplateValues=function(e,t){t?this._templateValues=Lt(this._templateValues,e):this._templateValues=Lt(e,this._templateValues)};Ft.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=Lt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=Lt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=Lt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Ft.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Ft.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ke(this._queryParameters),e._templateValues=ke(this._templateValues),e.headers=ke(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Ft({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Ft.prototype.getBaseUri=function(e){return e1(this.getUrlComponent(e),e)};Ft.prototype.appendForwardSlash=function(){this._url=$L(this._url)};Ft.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Ft.fetchArrayBuffer=function(e){return new Ft(e).fetchArrayBuffer()};Ft.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Ft.fetchBlob=function(e){return new Ft(e).fetchBlob()};Ft.prototype.fetchImage=function(e){e=e??Y.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(U3(this.request),!mte||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return Q3({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,d;return Ft.supportsImageBitmapOptions().then(function(u){return s=u,a=s&&t,r}).then(function(u){if(!l(u))return;if(d=u,a)return Ft.createImageBitmapFromBlob(u,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(u);return c=new Ft({url:h}),Q3({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(u){if(l(u))return u.blob=d,a||window.URL.revokeObjectURL(c.url),u}).catch(function(u){return l(c)&&window.URL.revokeObjectURL(c.url),u.blob=d,Promise.reject(u)})};function Q3(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=Ol();return Ft._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Sc.request(r);if(l(s))return s.catch(function(a){return r.state!==mi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=mi.UNISSUED,r.deferred=void 0,Q3({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Ft.fetchImage=function(e){return new Ft(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Ft.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Ft.fetchText=function(e){return new Ft(e).fetchText()};Ft.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Ft.fetchJson=function(e){return new Ft(e).fetchJson()};Ft.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Ft.fetchXML=function(e){return new Ft(e).fetchXML()};Ft.prototype.fetchJsonp=function(e){e=e??"callback",U3(this.request);let t;do t=`loadJsonp${Z.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return hte(this,e,t)};function hte(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=Ol();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Ft._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Sc.request(o);if(l(s))return s.catch(function(a){return o.state!==mi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=mi.UNISSUED,o.deferred=void 0,hte(e,t,n)):Promise.reject(a)})})}Ft.fetchJsonp=function(e){return new Ft(e).fetchJsonp(e.callbackParameterName)};Ft.prototype._makeRequest=function(e){let t=this;U3(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=Lt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,d=e.data,u=Ol(),h=Ft._Implementations.loadWithXhr(i,r,c,d,s,u,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),u.promise};let o=Sc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==mi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=mi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function U3(e){if(e.state===mi.ISSUED||e.state===mi.ACTIVE)throw new de("The Resource is already being fetched.");e.state=mi.UNISSUED,e.deferred=void 0}var u1e=/^data:(.*?)(;base64)?,(.*)$/;function N9(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function dte(e,t){let n=N9(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r{if(!a.ok){let c={};a.headers.forEach((d,u)=>{c[u]=d}),r.reject(new Lf(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new Lf)})}var f1e=typeof XMLHttpRequest>"u";Ft._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=u1e.exec(e);if(a!==null){r.resolve(m1e(a,t));return}if(f1e){h1e(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(X_.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let u in o)o.hasOwnProperty(u)&&c.setRequestHeader(u,o[u]);l(t)&&(c.responseType=t);let d=!1;return typeof e=="string"&&(d=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(d&&c.status===0)){r.reject(new Lf(c.status,c.response,c.getAllResponseHeaders()));return}let u=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),f={};g.forEach(function(b){let x=b.split(": "),I=x.shift();f[I]=x.join(": ")}),r.resolve(f);return}if(c.status===204)r.resolve(void 0);else if(l(u)&&(!l(t)||h===t))r.resolve(u);else if(t==="json"&&typeof u=="string")try{r.resolve(JSON.parse(u))}catch(p){r.reject(p)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new de("Invalid XMLHttpRequest response type."))},c.onerror=function(u){r.reject(new Lf)},c.send(i),c};Ft._Implementations.loadAndExecuteScript=function(e,t,n){return My(e,t).catch(function(i){n.reject(i)})};Ft._DefaultImplementations={};Ft._DefaultImplementations.createImage=Ft._Implementations.createImage;Ft._DefaultImplementations.loadWithXhr=Ft._Implementations.loadWithXhr;Ft._DefaultImplementations.loadAndExecuteScript=Ft._Implementations.loadAndExecuteScript;Ft.DEFAULT=Object.freeze(new Ft({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var Ve=Ft;function s1(e){e=e??Y.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?fte(this,e.data):fte(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}s1.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new de(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new s1({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};s1.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new ub(0,0,0,0,0),t}});s1.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new ub(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],d=j.lessThanOrEquals(a,e),u=!l(c),h=u||j.greaterThanOrEquals(c,e);if(d&&h)return o=i,!u&&c.equals(e)&&++o,r=o+1,Ate(this,n,this._samples,e,o,r,t),t}let s=Yo(n,e,j.compare,this._dateColumn);return s>=0?(st.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],d=t[r];if(c.equals(d)||i.equals(c))return pte(e,n,o,a,s),s;if(i.equals(d))return pte(e,n,r,a,s),s;let u=j.secondsDifference(i,c)/j.secondsDifference(d,c),h=o*a,p=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],f=n[p+e._ut1MinusUtcSecondsColumn],b=f-g;if(b>.5||b<-.5){let x=n[h+e._taiMinusUtcSecondsColumn],I=n[p+e._taiMinusUtcSecondsColumn];x!==I&&(d.equals(i)?g=f:f-=I-x)}return s.xPoleWander=r1(u,n[h+e._xPoleWanderRadiansColumn],n[p+e._xPoleWanderRadiansColumn]),s.yPoleWander=r1(u,n[h+e._yPoleWanderRadiansColumn],n[p+e._yPoleWanderRadiansColumn]),s.xPoleOffset=r1(u,n[h+e._xCelestialPoleOffsetRadiansColumn],n[p+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=r1(u,n[h+e._yCelestialPoleOffsetRadiansColumn],n[p+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=r1(u,g,f),s}var a1=s1;var dwt=y(C(),1);function Lc(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Lc.fromQuaternion=function(e,t){l(t)||(t=new Lc);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-Z.asinClamped(n),t};Lc.fromDegrees=function(e,t,n,i){return l(i)||(i=new Lc),i.heading=e*Z.RADIANS_PER_DEGREE,i.pitch=t*Z.RADIANS_PER_DEGREE,i.roll=n*Z.RADIANS_PER_DEGREE,i};Lc.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Lc(e.heading,e.pitch,e.roll)};Lc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Lc.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&Z.equalsEpsilon(e.heading,t.heading,n,i)&&Z.equalsEpsilon(e.pitch,t.pitch,n,i)&&Z.equalsEpsilon(e.roll,t.roll,n,i)};Lc.prototype.clone=function(e){return Lc.clone(this,e)};Lc.prototype.equals=function(e){return Lc.equals(this,e)};Lc.prototype.equalsEpsilon=function(e,t,n){return Lc.equalsEpsilon(this,e,t,n)};Lc.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var ic=Lc;var Lwt=y(C(),1);var pwt=y(C(),1);var gte={};var bte=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function A1e(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t"u"?e:(l(Q9)||(Q9=document.createElement("a")),Q9.href=e,Q9.href)}var Qy;function Cte(){if(l(Qy))return Qy;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(gte?.url)?e=Tf(".",gte.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(E9.toUrl)?e=Tf("..",Uy("Core/buildModuleUrl.js")):e=A1e(),Qy=new Ve({url:yte(e)}),Qy.appendForwardSlash(),Qy}function g1e(e){return yte(E9.toUrl(`../${e}`))}function xte(e){return Cte().getDerivedResource({url:e}).url}var U9;function Uy(e){return l(U9)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(E9.toUrl)?U9=g1e:U9=xte),U9(e)}Uy._cesiumScriptRegex=bte;Uy._buildModuleUrlFromBaseUrl=xte;Uy._clearBaseResource=function(){Qy=void 0};Uy.setBaseUrl=function(e){Qy=Ve.DEFAULT.getDerivedResource({url:e})};Uy.getCesiumBaseUrl=Cte;var hn=Uy;var bwt=y(C(),1);function b1e(e,t,n){this.x=e,this.y=t,this.s=n}var ky=b1e;function O3(e){e=e??Y.EMPTY_OBJECT,this._xysFileUrlTemplate=Ve.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new j(this._sampleZeroJulianEphemerisDate,0,oi.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var y1e=new j(0,0,oi.TAI);function k3(e,t,n){let i=y1e;return i.dayNumber=t,i.secondsOfDay=n,j.daysDifference(i,e._sampleZeroDateTT)}O3.prototype.preload=function(e,t,n,i){let o=k3(this,e,t),r=k3(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,d=a/this._samplesPerXysFile|0,u=[];for(let h=c;h<=d;++h)u.push(Y3(this,h));return Promise.all(u)};O3.prototype.computeXysRadians=function(e,t,n){let i=k3(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,d=this._samples;if(l(d[s*3])||(Y3(this,s/this._samplesPerXysFile|0),c=!0),l(d[a*3])||(Y3(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new ky(0,0,0);let u=i-s*this._stepSizeDays,h=this._work,p=this._denominators,g=this._coef,f=this._xTable,b,x;for(b=0;b<=r;++b)h[b]=u-f[b];for(b=0;b<=r;++b){for(g[b]=1,x=0;x<=r;++x)x!==b&&(g[b]*=h[x]);g[b]*=p[b];let I=(s+b)*3;n.x+=g[b]*d[I++],n.y+=g[b]*d[I++],n.s+=g[b]*d[I]}return n};function Y3(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new Ve({url:hn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let d=0,u=a.length;di&&(o=d,i=u)}let r=1,s=0,a=z3[o],c=K3[o];if(Math.abs(e[ct.getElementIndex(c,a)])>n){let d=e[ct.getElementIndex(c,c)],u=e[ct.getElementIndex(a,a)],h=e[ct.getElementIndex(c,a)],p=(d-u)/2/h,g;p<0?g=-1/(-p+Math.sqrt(1+p*p)):g=1/(p+Math.sqrt(1+p*p)),r=1/Math.sqrt(1+g*g),s=g*r}return t=ct.clone(ct.IDENTITY,t),t[ct.getElementIndex(a,a)]=t[ct.getElementIndex(c,c)]=r,t[ct.getElementIndex(c,a)]=s,t[ct.getElementIndex(a,c)]=-s,t}var k9=new ct,_te=new ct;ct.computeEigenDecomposition=function(e,t){let n=Z.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=ct.clone(ct.IDENTITY,t.unitary),a=t.diagonal=ct.clone(e,t.diagonal),c=n*E1e(a);for(;rc;)S1e(a,k9),ct.transpose(k9,_te),ct.multiply(a,k9,a),ct.multiply(_te,a,a),ct.multiply(s,k9,s),++o>2&&(++r,o=0);return t};ct.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};ct.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],d=e[8];return t*(r*d-c*s)+o*(c*i-n*d)+a*(n*s-r*i)};ct.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],d=e[7],u=e[8],h=ct.determinant(e);t[0]=s*u-d*a,t[1]=d*o-i*u,t[2]=i*a-s*o,t[3]=c*a-r*u,t[4]=n*u-c*o,t[5]=r*o-n*a,t[6]=r*d-c*s,t[7]=c*i-n*d,t[8]=n*s-r*i;let p=1/h;return ct.multiplyByScalar(t,p,t)};var L1e=new ct;ct.inverseTranspose=function(e,t){return ct.inverse(ct.transpose(e,L1e),t)};ct.equals=function(e,t){return e===t||l(e)&&l(t)&&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]};ct.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};ct.IDENTITY=Object.freeze(new ct(1,0,0,0,1,0,0,0,1));ct.ZERO=Object.freeze(new ct(0,0,0,0,0,0,0,0,0));ct.COLUMN0ROW0=0;ct.COLUMN0ROW1=1;ct.COLUMN0ROW2=2;ct.COLUMN1ROW0=3;ct.COLUMN1ROW1=4;ct.COLUMN1ROW2=5;ct.COLUMN2ROW0=6;ct.COLUMN2ROW1=7;ct.COLUMN2ROW2=8;Object.defineProperties(ct.prototype,{length:{get:function(){return ct.packedLength}}});ct.prototype.clone=function(e){return ct.clone(this,e)};ct.prototype.equals=function(e){return ct.equals(this,e)};ct.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};ct.prototype.equalsEpsilon=function(e,t){return ct.equalsEpsilon(this,e,t)};ct.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var $=ct;var Dwt=y(C(),1);function at(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=p??0,this[4]=t??0,this[5]=r??0,this[6]=d??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=u??0,this[11]=f??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=b??0}at.packedLength=16;at.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};at.unpack=function(e,t,n){return t=t??0,l(n)||(n=new at),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};at.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o{let t=new Image;t.onload=function(){ol._result=t.width>0&&t.height>0,e(ol._result)},t.onerror=function(){ol._result=!1,e(ol._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),ol._promise};Object.defineProperties(ol,{initialized:{get:function(){return l(ol._result)}}});var M_=[];typeof ArrayBuffer<"u"&&(M_.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&M_.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&M_.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&M_.push(BigInt64Array),typeof BigUint64Array<"u"&&M_.push(BigUint64Array));var vu={isChrome:nO,chromeVersion:P1e,isSafari:Lte,safariVersion:M1e,isWebkit:Rte,webkitVersion:v1e,isInternetExplorer:Vte,internetExplorerVersion:N1e,isEdge:j9,edgeVersion:D1e,isFirefox:q9,firefoxVersion:k1e,isWindows:Q1e,isIPadOrIOS:U1e,hardwareConcurrency:Rc.hardwareConcurrency??3,supportsPointerEvents:Y1e,supportsImageRenderingPixelated:Bte,supportsWebP:ol,imageRenderingValue:O1e,typedArrayTypes:M_};vu.supportsBasis=function(e){return vu.supportsWebAssembly()&&e.context.supportsBasis};vu.supportsFullscreen=function(){return Wr.supportsFullscreen()};vu.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};vu.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};vu.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};vu.supportsBigInt=function(){return typeof BigInt<"u"};vu.supportsWebWorkers=function(){return typeof Worker<"u"};vu.supportsWebAssembly=function(){return typeof WebAssembly<"u"};vu.supportsWebgl2=function(e){return e.context.webgl2};vu.supportsEsmWebWorkers=function(){return!q9()||parseInt(iO)>=114};var Ht=vu;function dt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var u1=new m;dt.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);u1=m.normalize(e,u1);let r=u1.x*o,s=u1.y*o,a=u1.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new dt(r,s,a,c)};var H1e=[1,2,0],z1e=new Array(3);dt.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[$.COLUMN0ROW0],c=e[$.COLUMN1ROW1],d=e[$.COLUMN2ROW2],u=a+c+d;if(u>0)n=Math.sqrt(u+1),s=.5*n,n=.5/n,i=(e[$.COLUMN1ROW2]-e[$.COLUMN2ROW1])*n,o=(e[$.COLUMN2ROW0]-e[$.COLUMN0ROW2])*n,r=(e[$.COLUMN0ROW1]-e[$.COLUMN1ROW0])*n;else{let h=H1e,p=0;c>a&&(p=1),d>a&&d>c&&(p=2);let g=h[p],f=h[g];n=Math.sqrt(e[$.getElementIndex(p,p)]-e[$.getElementIndex(g,g)]-e[$.getElementIndex(f,f)]+1);let b=z1e;b[p]=.5*n,n=.5/n,s=(e[$.getElementIndex(f,g)]-e[$.getElementIndex(g,f)])*n,b[g]=(e[$.getElementIndex(g,p)]+e[$.getElementIndex(p,g)])*n,b[f]=(e[$.getElementIndex(f,p)]+e[$.getElementIndex(p,f)])*n,i=-b[0],o=-b[1],r=-b[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new dt(i,o,r,s)};var wte=new dt,Xte=new dt,oO=new dt,Wte=new dt;dt.fromHeadingPitchRoll=function(e,t){return Wte=dt.fromAxisAngle(m.UNIT_X,e.roll,wte),oO=dt.fromAxisAngle(m.UNIT_Y,-e.pitch,t),t=dt.multiply(oO,Wte,oO),Xte=dt.fromAxisAngle(m.UNIT_Z,-e.heading,wte),dt.multiply(Xte,t,t)};var $9=new m,rO=new m,eh=new dt,Fte=new dt,eD=new dt;dt.packedLength=4;dt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};dt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new dt),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};dt.packedInterpolationLength=3;dt.convertPackedArrayForInterpolation=function(e,t,n,i){dt.unpack(e,n*4,eD),dt.conjugate(eD,eD);for(let o=0,r=n-t+1;o=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,d=a*a;for(let g=7;g>=0;--g)zp[g]=(tD[g]*c-nD[g])*s,Kp[g]=(tD[g]*d-nD[g])*s;let u=r*n*(1+zp[0]*(1+zp[1]*(1+zp[2]*(1+zp[3]*(1+zp[4]*(1+zp[5]*(1+zp[6]*(1+zp[7])))))))),h=a*(1+Kp[0]*(1+Kp[1]*(1+Kp[2]*(1+Kp[3]*(1+Kp[4]*(1+Kp[5]*(1+Kp[6]*(1+Kp[7])))))))),p=dt.multiplyByScalar(e,h,j1e);return dt.multiplyByScalar(t,u,i),dt.add(p,i,i)};dt.fastSquad=function(e,t,n,i,o,r){let s=dt.fastSlerp(e,t,o,m1),a=dt.fastSlerp(n,i,o,v_);return dt.fastSlerp(s,a,2*o*(1-o),r)};dt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};dt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};dt.ZERO=Object.freeze(new dt(0,0,0,0));dt.IDENTITY=Object.freeze(new dt(0,0,0,1));dt.prototype.clone=function(e){return dt.clone(this,e)};dt.prototype.equals=function(e){return dt.equals(this,e)};dt.prototype.equalsEpsilon=function(e,t){return dt.equalsEpsilon(this,e,t)};dt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Pe=dt;var Ri={},lO={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},N_={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},dO={},zl={east:new m,north:new m,up:new m,west:new m,south:new m,down:new m},pb=new m,Ab=new m,gb=new m;Ri.localFrameToFixedFrameGenerator=function(e,t){if(!lO.hasOwnProperty(e)||!lO[e].hasOwnProperty(t))throw new Ae("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=lO[e][t],i,o=e+t;return l(dO[o])?i=dO[o]:(i=function(r,s,a){if(l(a)||(a=new X),m.equalsEpsilon(r,m.ZERO,Z.EPSILON14))m.unpack(N_[e],0,pb),m.unpack(N_[t],0,Ab),m.unpack(N_[n],0,gb);else if(Z.equalsEpsilon(r.x,0,Z.EPSILON14)&&Z.equalsEpsilon(r.y,0,Z.EPSILON14)){let c=Z.sign(r.z);m.unpack(N_[e],0,pb),e!=="east"&&e!=="west"&&m.multiplyByScalar(pb,c,pb),m.unpack(N_[t],0,Ab),t!=="east"&&t!=="west"&&m.multiplyByScalar(Ab,c,Ab),m.unpack(N_[n],0,gb),n!=="east"&&n!=="west"&&m.multiplyByScalar(gb,c,gb)}else{s=s??ie.default,s.geodeticSurfaceNormal(r,zl.up);let c=zl.up,d=zl.east;d.x=-r.y,d.y=r.x,d.z=0,m.normalize(d,zl.east),m.cross(c,d,zl.north),m.multiplyByScalar(zl.up,-1,zl.down),m.multiplyByScalar(zl.east,-1,zl.west),m.multiplyByScalar(zl.north,-1,zl.south),pb=zl[e],Ab=zl[t],gb=zl[n]}return a[0]=pb.x,a[1]=pb.y,a[2]=pb.z,a[3]=0,a[4]=Ab.x,a[5]=Ab.y,a[6]=Ab.z,a[7]=0,a[8]=gb.x,a[9]=gb.y,a[10]=gb.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},dO[o]=i),i};Ri.eastNorthUpToFixedFrame=Ri.localFrameToFixedFrameGenerator("east","north");Ri.northEastDownToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","east");Ri.northUpEastToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","up");Ri.northWestUpToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","west");var q1e=new Pe,$1e=new m(1,1,1),eRe=new X;Ri.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??Ri.eastNorthUpToFixedFrame;let r=Pe.fromHeadingPitchRoll(t,q1e),s=X.fromTranslationQuaternionRotationScale(m.ZERO,r,$1e,eRe);return o=i(e,n,o),X.multiply(o,s,o)};var tRe=new X,nRe=new $;Ri.headingPitchRollQuaternion=function(e,t,n,i,o){let r=Ri.headingPitchRollToFixedFrame(e,t,n,i,tRe),s=X.getMatrix3(r,nRe);return Pe.fromRotationMatrix(s,o)};var iRe=new m(1,1,1),oRe=new m,vte=new X,rRe=new X,sRe=new $,aRe=new Pe;Ri.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??ie.default,n=n??Ri.eastNorthUpToFixedFrame,l(i)||(i=new ic);let o=X.getTranslation(e,oRe);if(m.equals(o,m.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=X.inverseTransformation(n(o,t,vte),vte),s=X.setScale(e,iRe,rRe);s=X.setTranslation(s,m.ZERO,s),r=X.multiply(r,s,r);let a=Pe.fromRotationMatrix(X.getMatrix3(r,sRe),aRe);return a=Pe.normalize(a,a),ic.fromQuaternion(a,i)};var cRe=6*3600+2460+50.54841,lRe=8640184812866e-6,dRe=.093104,uRe=-62e-7,mRe=11772758384668e-32,hRe=72921158553e-15,fRe=Z.TWO_PI/86400,iD=new j;Ri.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=Ri.computeIcrfToFixedMatrix(e,t);return l(n)||(n=Ri.computeTemeToPseudoFixedMatrix(e,t)),n};Ri.computeTemeToPseudoFixedMatrix=function(e,t){iD=j.addSeconds(e,-j.computeTaiMinusUtc(e),iD);let n=iD.dayNumber,i=iD.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ai.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ai.DAYS_PER_JULIAN_CENTURY;let a=(cRe+o*(lRe+o*(dRe+o*uRe)))*fRe%Z.TWO_PI,c=hRe+mRe*(n-24515455e-1),d=(i+ai.SECONDS_PER_DAY*.5)%ai.SECONDS_PER_DAY,u=a+c*d,h=Math.cos(u),p=Math.sin(u);return l(t)?(t[0]=h,t[1]=-p,t[2]=0,t[3]=p,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new $(h,p,0,-p,h,0,0,0,1)};Ri.iau2006XysData=new c1;Ri.earthOrientationParameters=a1.NONE;var hO=32.184,pRe=2451545;Ri.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+hO,i=e.stop.dayNumber,o=e.stop.secondsOfDay+hO;return Ri.iau2006XysData.preload(t,n,i,o)};Ri.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new $);let n=Ri.computeFixedToIcrfMatrix(e,t);if(l(n))return $.transpose(n,t)};var ARe=32.184,gRe=2451545,oD=new ic,bRe=new $,yRe=new j;Ri.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new $);let n=j.addSeconds(e,ARe,yRe),i=j.totalDays(n)-gRe,o=Z.toRadians(12.112)-Z.toRadians(.052992)*i,r=Z.toRadians(24.224)-Z.toRadians(.105984)*i,s=Z.toRadians(227.645)+Z.toRadians(13.012)*i,a=Z.toRadians(261.105)+Z.toRadians(13.340716)*i,c=Z.toRadians(358)+Z.toRadians(.9856)*i;return oD.pitch=Z.toRadians(180)-Z.toRadians(3.878)*Math.sin(o)-Z.toRadians(.12)*Math.sin(r)+Z.toRadians(.07)*Math.sin(s)-Z.toRadians(.017)*Math.sin(a),oD.roll=Z.toRadians(66.53-90)+Z.toRadians(1.543)*Math.cos(o)+Z.toRadians(.24)*Math.cos(r)-Z.toRadians(.028)*Math.cos(s)+Z.toRadians(.007)*Math.cos(a),oD.heading=Z.toRadians(244.375-90)+Z.toRadians(13.17635831)*i+Z.toRadians(3.558)*Math.sin(o)+Z.toRadians(.121)*Math.sin(r)-Z.toRadians(.064)*Math.sin(s)+Z.toRadians(.016)*Math.sin(a)+Z.toRadians(.025)*Math.sin(c),$.fromHeadingPitchRoll(oD,bRe)};Ri.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new $);let n=Ri.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return $.transpose(n,t)};var CRe=new ky(0,0,0),xRe=new ub(0,0,0,0,0,0),uO=new $,mO=new $;Ri.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new $);let n=Ri.earthOrientationParameters.compute(e,xRe);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+hO,r=Ri.iau2006XysData.computeXysRadians(i,o,CRe);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),d=uO;d[0]=1-c*s*s,d[3]=-c*s*a,d[6]=s,d[1]=-c*s*a,d[4]=1-c*a*a,d[7]=a,d[2]=-s,d[5]=-a,d[8]=1-c*(s*s+a*a);let u=$.fromRotationZ(-r.s,mO),h=$.multiply(d,u,uO),p=e.dayNumber,g=e.secondsOfDay-j.computeTaiMinusUtc(e)+n.ut1MinusUtc,f=p-2451545,b=g/ai.SECONDS_PER_DAY,x=.779057273264+b+.00273781191135448*(f+b);x=x%1*Z.TWO_PI;let I=$.fromRotationZ(x,mO),_=$.multiply(h,I,uO),E=Math.cos(n.xPoleWander),S=Math.cos(n.yPoleWander),R=Math.sin(n.xPoleWander),G=Math.sin(n.yPoleWander),B=i-pRe+o/ai.SECONDS_PER_DAY;B/=36525;let w=-47e-6*B*Z.RADIANS_PER_DEGREE/3600,F=Math.cos(w),P=Math.sin(w),A=mO;return A[0]=E*F,A[1]=E*P,A[2]=R,A[3]=-S*P+G*R*F,A[4]=S*F+G*R*P,A[5]=-G*E,A[6]=-G*P-S*R*F,A[7]=G*F-S*R*P,A[8]=S*E,$.multiply(_,A,t)};var IRe=new ce;Ri.pointToWindowCoordinates=function(e,t,n,i){return i=Ri.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};Ri.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new D);let o=IRe;return X.multiplyByVector(e,ce.fromElements(n.x,n.y,n.z,1,o),o),ce.multiplyByScalar(o,1/o.w,o),X.multiplyByVector(t,o,o),D.fromCartesian4(o,i)};var _Re=new m,ERe=new m,TRe=new m;Ri.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??ie.default).geodeticSurfaceNormal(e,_Re),r=m.cross(t,o,ERe);m.equalsEpsilon(r,m.ZERO,Z.EPSILON6)&&(r=m.clone(m.UNIT_X,r));let s=m.cross(r,t,TRe);return m.normalize(s,s),m.cross(t,s,r),m.negate(r,r),m.normalize(r,r),l(i)||(i=new $),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var Nte=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Dte=new ge,fO=new m,SRe=new m,LRe=new $,pO=new X,Qte=new X;Ri.basisTo2D=function(e,t,n){let i=X.getTranslation(t,SRe),o=e.ellipsoid,r;if(m.equals(i,m.ZERO))r=m.clone(m.ZERO,fO);else{let u=o.cartesianToCartographic(i,Dte);r=e.project(u,fO),m.fromElements(r.z,r.x,r.y,r)}let s=Ri.eastNorthUpToFixedFrame(i,o,pO),a=X.inverseTransformation(s,Qte),c=X.getMatrix3(t,LRe),d=X.multiplyByMatrix3(a,c,n);return X.multiply(Nte,d,n),X.setTranslation(n,r,n),n};Ri.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=Ri.eastNorthUpToFixedFrame(t,i,pO),r=X.inverseTransformation(o,Qte),s=i.cartesianToCartographic(t,Dte),a=e.project(s,fO);m.fromElements(a.z,a.x,a.y,a);let c=X.fromTranslation(a,pO);return X.multiply(Nte,r,n),X.multiply(c,n,n),n};var Dt=Ri;function Pn(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Pn.prototype,{width:{get:function(){return Pn.computeWidth(this)}},height:{get:function(){return Pn.computeHeight(this)}}});Pn.packedLength=4;Pn.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Pn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Pn),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Pn.computeWidth=function(e){let t=e.east,n=e.west;return t=0?u.longitude:u.longitude+Z.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>Z.PI&&(i=i-Z.TWO_PI),n>Z.PI&&(n=n-Z.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Pn(n,s,i,a)};Pn.fromCartesianArray=function(e,t,n){t=t??ie.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let d=0,u=e.length;d=0?h.longitude:h.longitude+Z.TWO_PI;r=Math.min(r,p),s=Math.max(s,p)}return o-i>s-r&&(i=r,o=s,o>Z.PI&&(o=o-Z.TWO_PI),i>Z.PI&&(i=i-Z.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Pn(i,a,o,c)};var RRe=new m,VRe=new m,GRe=new m,ZRe=new m,BRe=new m,AO=new Array(5);for(let e=0;e0?i+=Z.TWO_PI:r0&&(r+=Z.TWO_PI),i=u))return l(n)?(n.west=a,n.south=d,n.east=c,n.north=u,n):new Pn(a,d,c,u)};Pn.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Pn(i,o,r,s)};Pn.union=function(e,t,n){l(n)||(n=new Pn);let i=e.east,o=e.west,r=t.east,s=t.west;i0?i+=Z.TWO_PI:r0&&(r+=Z.TWO_PI),io||Z.equalsEpsilon(n,o,Z.EPSILON14))&&(n=e.south&&i<=e.north};var wRe=new ge;Pn.subsample=function(e,t,n,i){t=t??ie.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,d=wRe;d.height=n,d.longitude=c,d.latitude=r,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=a,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.latitude=s,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=c,i[o]=t.cartographicToCartesian(d,i[o]),o++,r<0?d.latitude=r:s>0?d.latitude=s:d.latitude=0;for(let u=1;u<8;++u)d.longitude=-Math.PI+u*Z.PI_OVER_TWO,Pn.contains(e,d)&&(i[o]=t.cartographicToCartesian(d,i[o]),o++);return d.latitude===0&&(d.longitude=c,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=a,i[o]=t.cartographicToCartesian(d,i[o]),o++),i.length=o,i};Pn.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Pn),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=Z.TWO_PI+e.east-e.west;r.west=Z.negativePiToPi(e.west+t*a),r.east=Z.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Pn.MAX_VALUE=Object.freeze(new Pn(-Math.PI,-Z.PI_OVER_TWO,Math.PI,Z.PI_OVER_TWO));var le=Pn;function Jr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Jr.packedLength=4;Jr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Jr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Jr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Jr.fromPoints=function(e,t){if(l(t)||(t=new Jr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;an.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Jr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.widthr+t.height?on.OUTSIDE:on.INTERSECTING};Jr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Jr.prototype.clone=function(e){return Jr.clone(this,e)};Jr.prototype.intersect=function(e){return Jr.intersect(this,e)};Jr.prototype.equals=function(e){return Jr.equals(this,e)};var Ke=Jr;var YXt=y(C(),1);function gO(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function ae(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}ae.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new ae(e.x,e.y,e.z,e.w)};ae.fromBytes=function(e,t,n,i,o){return e=ae.byteToFloat(e??255),t=ae.byteToFloat(t??255),n=ae.byteToFloat(n??255),i=ae.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new ae(e,t,n,i)};ae.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new ae(e.red,e.green,e.blue,t)};var bO,yO,Jp;Ht.supportsTypedArrays()&&(bO=new ArrayBuffer(4),yO=new Uint32Array(bO),Jp=new Uint8Array(bO));ae.fromRgba=function(e,t){return yO[0]=e,ae.fromBytes(Jp[0],Jp[1],Jp[2],Jp[3],t)};ae.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let d=2*n-c;r=gO(d,c,e+1/3),s=gO(d,c,e),a=gO(d,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new ae(r,s,a,i)};ae.fromRandom=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+Z.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+Z.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+Z.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+Z.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new ae(n,i,o,r)};var FRe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,PRe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,MRe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,vRe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;ae.fromCssColorString=function(e,t){l(t)||(t=new ae),e=e.trim();let n=ae[e.toUpperCase()];if(l(n))return ae.clone(n,t),t;let i=FRe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=PRe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=MRe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=vRe.exec(e),i!==null?ae.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};ae.packedLength=4;ae.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};ae.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ae),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};ae.byteToFloat=function(e){return e/255};ae.floatToByte=function(e){return e===1?255:e*256|0};ae.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new ae(e.red,e.green,e.blue,e.alpha)};ae.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};ae.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};ae.prototype.clone=function(e){return ae.clone(this,e)};ae.prototype.equals=function(e){return ae.equals(this,e)};ae.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};ae.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};ae.prototype.toCssColorString=function(){let e=ae.floatToByte(this.red),t=ae.floatToByte(this.green),n=ae.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};ae.prototype.toCssHexString=function(){let e=ae.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=ae.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=ae.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=ae.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};ae.prototype.toBytes=function(e){let t=ae.floatToByte(this.red),n=ae.floatToByte(this.green),i=ae.floatToByte(this.blue),o=ae.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};ae.prototype.toRgba=function(){return Jp[0]=ae.floatToByte(this.red),Jp[1]=ae.floatToByte(this.green),Jp[2]=ae.floatToByte(this.blue),Jp[3]=ae.floatToByte(this.alpha),yO[0]};ae.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};ae.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};ae.prototype.withAlpha=function(e,t){return ae.fromAlpha(this,e,t)};ae.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};ae.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};ae.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};ae.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};ae.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};ae.lerp=function(e,t,n,i){return i.red=Z.lerp(e.red,t.red,n),i.green=Z.lerp(e.green,t.green,n),i.blue=Z.lerp(e.blue,t.blue,n),i.alpha=Z.lerp(e.alpha,t.alpha,n),i};ae.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};ae.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};ae.ALICEBLUE=Object.freeze(ae.fromCssColorString("#F0F8FF"));ae.ANTIQUEWHITE=Object.freeze(ae.fromCssColorString("#FAEBD7"));ae.AQUA=Object.freeze(ae.fromCssColorString("#00FFFF"));ae.AQUAMARINE=Object.freeze(ae.fromCssColorString("#7FFFD4"));ae.AZURE=Object.freeze(ae.fromCssColorString("#F0FFFF"));ae.BEIGE=Object.freeze(ae.fromCssColorString("#F5F5DC"));ae.BISQUE=Object.freeze(ae.fromCssColorString("#FFE4C4"));ae.BLACK=Object.freeze(ae.fromCssColorString("#000000"));ae.BLANCHEDALMOND=Object.freeze(ae.fromCssColorString("#FFEBCD"));ae.BLUE=Object.freeze(ae.fromCssColorString("#0000FF"));ae.BLUEVIOLET=Object.freeze(ae.fromCssColorString("#8A2BE2"));ae.BROWN=Object.freeze(ae.fromCssColorString("#A52A2A"));ae.BURLYWOOD=Object.freeze(ae.fromCssColorString("#DEB887"));ae.CADETBLUE=Object.freeze(ae.fromCssColorString("#5F9EA0"));ae.CHARTREUSE=Object.freeze(ae.fromCssColorString("#7FFF00"));ae.CHOCOLATE=Object.freeze(ae.fromCssColorString("#D2691E"));ae.CORAL=Object.freeze(ae.fromCssColorString("#FF7F50"));ae.CORNFLOWERBLUE=Object.freeze(ae.fromCssColorString("#6495ED"));ae.CORNSILK=Object.freeze(ae.fromCssColorString("#FFF8DC"));ae.CRIMSON=Object.freeze(ae.fromCssColorString("#DC143C"));ae.CYAN=Object.freeze(ae.fromCssColorString("#00FFFF"));ae.DARKBLUE=Object.freeze(ae.fromCssColorString("#00008B"));ae.DARKCYAN=Object.freeze(ae.fromCssColorString("#008B8B"));ae.DARKGOLDENROD=Object.freeze(ae.fromCssColorString("#B8860B"));ae.DARKGRAY=Object.freeze(ae.fromCssColorString("#A9A9A9"));ae.DARKGREEN=Object.freeze(ae.fromCssColorString("#006400"));ae.DARKGREY=ae.DARKGRAY;ae.DARKKHAKI=Object.freeze(ae.fromCssColorString("#BDB76B"));ae.DARKMAGENTA=Object.freeze(ae.fromCssColorString("#8B008B"));ae.DARKOLIVEGREEN=Object.freeze(ae.fromCssColorString("#556B2F"));ae.DARKORANGE=Object.freeze(ae.fromCssColorString("#FF8C00"));ae.DARKORCHID=Object.freeze(ae.fromCssColorString("#9932CC"));ae.DARKRED=Object.freeze(ae.fromCssColorString("#8B0000"));ae.DARKSALMON=Object.freeze(ae.fromCssColorString("#E9967A"));ae.DARKSEAGREEN=Object.freeze(ae.fromCssColorString("#8FBC8F"));ae.DARKSLATEBLUE=Object.freeze(ae.fromCssColorString("#483D8B"));ae.DARKSLATEGRAY=Object.freeze(ae.fromCssColorString("#2F4F4F"));ae.DARKSLATEGREY=ae.DARKSLATEGRAY;ae.DARKTURQUOISE=Object.freeze(ae.fromCssColorString("#00CED1"));ae.DARKVIOLET=Object.freeze(ae.fromCssColorString("#9400D3"));ae.DEEPPINK=Object.freeze(ae.fromCssColorString("#FF1493"));ae.DEEPSKYBLUE=Object.freeze(ae.fromCssColorString("#00BFFF"));ae.DIMGRAY=Object.freeze(ae.fromCssColorString("#696969"));ae.DIMGREY=ae.DIMGRAY;ae.DODGERBLUE=Object.freeze(ae.fromCssColorString("#1E90FF"));ae.FIREBRICK=Object.freeze(ae.fromCssColorString("#B22222"));ae.FLORALWHITE=Object.freeze(ae.fromCssColorString("#FFFAF0"));ae.FORESTGREEN=Object.freeze(ae.fromCssColorString("#228B22"));ae.FUCHSIA=Object.freeze(ae.fromCssColorString("#FF00FF"));ae.GAINSBORO=Object.freeze(ae.fromCssColorString("#DCDCDC"));ae.GHOSTWHITE=Object.freeze(ae.fromCssColorString("#F8F8FF"));ae.GOLD=Object.freeze(ae.fromCssColorString("#FFD700"));ae.GOLDENROD=Object.freeze(ae.fromCssColorString("#DAA520"));ae.GRAY=Object.freeze(ae.fromCssColorString("#808080"));ae.GREEN=Object.freeze(ae.fromCssColorString("#008000"));ae.GREENYELLOW=Object.freeze(ae.fromCssColorString("#ADFF2F"));ae.GREY=ae.GRAY;ae.HONEYDEW=Object.freeze(ae.fromCssColorString("#F0FFF0"));ae.HOTPINK=Object.freeze(ae.fromCssColorString("#FF69B4"));ae.INDIANRED=Object.freeze(ae.fromCssColorString("#CD5C5C"));ae.INDIGO=Object.freeze(ae.fromCssColorString("#4B0082"));ae.IVORY=Object.freeze(ae.fromCssColorString("#FFFFF0"));ae.KHAKI=Object.freeze(ae.fromCssColorString("#F0E68C"));ae.LAVENDER=Object.freeze(ae.fromCssColorString("#E6E6FA"));ae.LAVENDAR_BLUSH=Object.freeze(ae.fromCssColorString("#FFF0F5"));ae.LAWNGREEN=Object.freeze(ae.fromCssColorString("#7CFC00"));ae.LEMONCHIFFON=Object.freeze(ae.fromCssColorString("#FFFACD"));ae.LIGHTBLUE=Object.freeze(ae.fromCssColorString("#ADD8E6"));ae.LIGHTCORAL=Object.freeze(ae.fromCssColorString("#F08080"));ae.LIGHTCYAN=Object.freeze(ae.fromCssColorString("#E0FFFF"));ae.LIGHTGOLDENRODYELLOW=Object.freeze(ae.fromCssColorString("#FAFAD2"));ae.LIGHTGRAY=Object.freeze(ae.fromCssColorString("#D3D3D3"));ae.LIGHTGREEN=Object.freeze(ae.fromCssColorString("#90EE90"));ae.LIGHTGREY=ae.LIGHTGRAY;ae.LIGHTPINK=Object.freeze(ae.fromCssColorString("#FFB6C1"));ae.LIGHTSEAGREEN=Object.freeze(ae.fromCssColorString("#20B2AA"));ae.LIGHTSKYBLUE=Object.freeze(ae.fromCssColorString("#87CEFA"));ae.LIGHTSLATEGRAY=Object.freeze(ae.fromCssColorString("#778899"));ae.LIGHTSLATEGREY=ae.LIGHTSLATEGRAY;ae.LIGHTSTEELBLUE=Object.freeze(ae.fromCssColorString("#B0C4DE"));ae.LIGHTYELLOW=Object.freeze(ae.fromCssColorString("#FFFFE0"));ae.LIME=Object.freeze(ae.fromCssColorString("#00FF00"));ae.LIMEGREEN=Object.freeze(ae.fromCssColorString("#32CD32"));ae.LINEN=Object.freeze(ae.fromCssColorString("#FAF0E6"));ae.MAGENTA=Object.freeze(ae.fromCssColorString("#FF00FF"));ae.MAROON=Object.freeze(ae.fromCssColorString("#800000"));ae.MEDIUMAQUAMARINE=Object.freeze(ae.fromCssColorString("#66CDAA"));ae.MEDIUMBLUE=Object.freeze(ae.fromCssColorString("#0000CD"));ae.MEDIUMORCHID=Object.freeze(ae.fromCssColorString("#BA55D3"));ae.MEDIUMPURPLE=Object.freeze(ae.fromCssColorString("#9370DB"));ae.MEDIUMSEAGREEN=Object.freeze(ae.fromCssColorString("#3CB371"));ae.MEDIUMSLATEBLUE=Object.freeze(ae.fromCssColorString("#7B68EE"));ae.MEDIUMSPRINGGREEN=Object.freeze(ae.fromCssColorString("#00FA9A"));ae.MEDIUMTURQUOISE=Object.freeze(ae.fromCssColorString("#48D1CC"));ae.MEDIUMVIOLETRED=Object.freeze(ae.fromCssColorString("#C71585"));ae.MIDNIGHTBLUE=Object.freeze(ae.fromCssColorString("#191970"));ae.MINTCREAM=Object.freeze(ae.fromCssColorString("#F5FFFA"));ae.MISTYROSE=Object.freeze(ae.fromCssColorString("#FFE4E1"));ae.MOCCASIN=Object.freeze(ae.fromCssColorString("#FFE4B5"));ae.NAVAJOWHITE=Object.freeze(ae.fromCssColorString("#FFDEAD"));ae.NAVY=Object.freeze(ae.fromCssColorString("#000080"));ae.OLDLACE=Object.freeze(ae.fromCssColorString("#FDF5E6"));ae.OLIVE=Object.freeze(ae.fromCssColorString("#808000"));ae.OLIVEDRAB=Object.freeze(ae.fromCssColorString("#6B8E23"));ae.ORANGE=Object.freeze(ae.fromCssColorString("#FFA500"));ae.ORANGERED=Object.freeze(ae.fromCssColorString("#FF4500"));ae.ORCHID=Object.freeze(ae.fromCssColorString("#DA70D6"));ae.PALEGOLDENROD=Object.freeze(ae.fromCssColorString("#EEE8AA"));ae.PALEGREEN=Object.freeze(ae.fromCssColorString("#98FB98"));ae.PALETURQUOISE=Object.freeze(ae.fromCssColorString("#AFEEEE"));ae.PALEVIOLETRED=Object.freeze(ae.fromCssColorString("#DB7093"));ae.PAPAYAWHIP=Object.freeze(ae.fromCssColorString("#FFEFD5"));ae.PEACHPUFF=Object.freeze(ae.fromCssColorString("#FFDAB9"));ae.PERU=Object.freeze(ae.fromCssColorString("#CD853F"));ae.PINK=Object.freeze(ae.fromCssColorString("#FFC0CB"));ae.PLUM=Object.freeze(ae.fromCssColorString("#DDA0DD"));ae.POWDERBLUE=Object.freeze(ae.fromCssColorString("#B0E0E6"));ae.PURPLE=Object.freeze(ae.fromCssColorString("#800080"));ae.RED=Object.freeze(ae.fromCssColorString("#FF0000"));ae.ROSYBROWN=Object.freeze(ae.fromCssColorString("#BC8F8F"));ae.ROYALBLUE=Object.freeze(ae.fromCssColorString("#4169E1"));ae.SADDLEBROWN=Object.freeze(ae.fromCssColorString("#8B4513"));ae.SALMON=Object.freeze(ae.fromCssColorString("#FA8072"));ae.SANDYBROWN=Object.freeze(ae.fromCssColorString("#F4A460"));ae.SEAGREEN=Object.freeze(ae.fromCssColorString("#2E8B57"));ae.SEASHELL=Object.freeze(ae.fromCssColorString("#FFF5EE"));ae.SIENNA=Object.freeze(ae.fromCssColorString("#A0522D"));ae.SILVER=Object.freeze(ae.fromCssColorString("#C0C0C0"));ae.SKYBLUE=Object.freeze(ae.fromCssColorString("#87CEEB"));ae.SLATEBLUE=Object.freeze(ae.fromCssColorString("#6A5ACD"));ae.SLATEGRAY=Object.freeze(ae.fromCssColorString("#708090"));ae.SLATEGREY=ae.SLATEGRAY;ae.SNOW=Object.freeze(ae.fromCssColorString("#FFFAFA"));ae.SPRINGGREEN=Object.freeze(ae.fromCssColorString("#00FF7F"));ae.STEELBLUE=Object.freeze(ae.fromCssColorString("#4682B4"));ae.TAN=Object.freeze(ae.fromCssColorString("#D2B48C"));ae.TEAL=Object.freeze(ae.fromCssColorString("#008080"));ae.THISTLE=Object.freeze(ae.fromCssColorString("#D8BFD8"));ae.TOMATO=Object.freeze(ae.fromCssColorString("#FF6347"));ae.TURQUOISE=Object.freeze(ae.fromCssColorString("#40E0D0"));ae.VIOLET=Object.freeze(ae.fromCssColorString("#EE82EE"));ae.WHEAT=Object.freeze(ae.fromCssColorString("#F5DEB3"));ae.WHITE=Object.freeze(ae.fromCssColorString("#FFFFFF"));ae.WHITESMOKE=Object.freeze(ae.fromCssColorString("#F5F5F5"));ae.YELLOW=Object.freeze(ae.fromCssColorString("#FFFF00"));ae.YELLOWGREEN=Object.freeze(ae.fromCssColorString("#9ACD32"));ae.TRANSPARENT=Object.freeze(new ae(0,0,0,0));var U=ae;var HXt=y(C(),1);function NRe(){return!0}function DRe(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=NRe}var me=DRe;var JXt=y(C(),1);function Xd(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Xd.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Xd.packedLength=2;Xd.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Xd.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Xd),n.near=e[t++],n.far=e[t],n};Xd.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Xd.clone=function(e,t){if(l(e))return l(t)||(t=new Xd),t.near=e.near,t.far=e.far,t};Xd.prototype.clone=function(e){return Xd.clone(this,e)};Xd.prototype.equals=function(e){return Xd.equals(this,e)};var Qt=Xd;var $Xt=y(C(),1);function Nu(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}Nu.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new Nu(e.near,e.nearValue,e.far,e.farValue)};Nu.packedLength=4;Nu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};Nu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Nu),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};Nu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};Nu.prototype.clone=function(e){return Nu.clone(this,e)};Nu.prototype.equals=function(e){return Nu.equals(this,e)};var zt=Nu;var t2t=y(C(),1),Oy={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},et=Object.freeze(Oy);function Du(e){return e===Oy.CLAMP_TO_GROUND||e===Oy.CLAMP_TO_3D_TILE||e===Oy.CLAMP_TO_TERRAIN}function D_(e){return e===Oy.RELATIVE_TO_GROUND||e===Oy.RELATIVE_TO_3D_TILE||e===Oy.RELATIVE_TO_TERRAIN}var i2t=y(C(),1),QRe={CENTER:0,LEFT:1,RIGHT:-1},wi=Object.freeze(QRe);var r2t=y(C(),1),URe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},kn=Object.freeze(URe);var a2t=y(C(),1),kRe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),At=kRe;var u2t=y(C(),1);function th(){Ae.throwInstantiationError()}Object.defineProperties(th.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError}});th.prototype.getValue=Ae.throwInstantiationError;th.prototype.equals=Ae.throwInstantiationError;th.equals=function(e,t){return e===t||l(e)&&e.equals(t)};th.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new kte(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new kte(r)):(CO(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],CO(s.get(r.id),r,a),s.remove(r.id)};function CO(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var h1=bb;var rin=y(C(),1);var OWt=y(C(),1);var Y2t=y(C(),1);var B2t=y(C(),1);function mVe(e,t){this.start=e??0,this.stop=t??0}var oc=mVe;function _n(e,t){this.center=m.clone(e??m.ZERO),this.radius=t??0}var _O=new m,EO=new m,TO=new m,SO=new m,LO=new m,RO=new m,VO=new m,wa=new m,GO=new m,ZO=new m,BO=new m,wO=new m,hVe=4/3*Z.PI;_n.fromPoints=function(e,t){if(l(t)||(t=new _n),!l(e)||e.length===0)return t.center=m.clone(m.ZERO,t.center),t.radius=0,t;let n=m.clone(e[0],VO),i=m.clone(n,_O),o=m.clone(n,EO),r=m.clone(n,TO),s=m.clone(n,SO),a=m.clone(n,LO),c=m.clone(n,RO),d=e.length,u;for(u=1;us.x&&m.clone(n,s),Fa.y&&m.clone(n,a),Pc.z&&m.clone(n,c)}let h=m.magnitudeSquared(m.subtract(s,i,wa)),p=m.magnitudeSquared(m.subtract(a,o,wa)),g=m.magnitudeSquared(m.subtract(c,r,wa)),f=i,b=s,x=h;p>x&&(x=p,f=o,b=a),g>x&&(x=g,f=r,b=c);let I=GO;I.x=(f.x+b.x)*.5,I.y=(f.y+b.y)*.5,I.z=(f.z+b.z)*.5;let _=m.magnitudeSquared(m.subtract(b,I,wa)),E=Math.sqrt(_),S=ZO;S.x=i.x,S.y=o.y,S.z=r.z;let R=BO;R.x=s.x,R.y=a.y,R.z=c.z;let G=m.midpoint(S,R,wO),B=0;for(u=0;uB&&(B=w);let F=m.magnitudeSquared(m.subtract(n,I,wa));if(F>_){let P=Math.sqrt(F);E=(E+P)*.5,_=E*E;let A=P-E;I.x=(E*I.x+A*n.x)/P,I.y=(E*I.y+A*n.y)/P,I.z=(E*I.z+A*n.z)/P}}return Ec.x&&m.clone(o,c),Ad.y&&m.clone(o,d),Tu.z&&m.clone(o,u)}let g=m.magnitudeSquared(m.subtract(c,r,wa)),f=m.magnitudeSquared(m.subtract(d,s,wa)),b=m.magnitudeSquared(m.subtract(u,a,wa)),x=r,I=c,_=g;f>_&&(_=f,x=s,I=d),b>_&&(_=b,x=a,I=u);let E=GO;E.x=(x.x+I.x)*.5,E.y=(x.y+I.y)*.5,E.z=(x.z+I.z)*.5;let S=m.magnitudeSquared(m.subtract(I,E,wa)),R=Math.sqrt(S),G=ZO;G.x=r.x,G.y=s.y,G.z=a.z;let B=BO;B.x=c.x,B.y=d.y,B.z=u.z;let w=m.midpoint(G,B,wO),F=0;for(p=0;pF&&(F=P);let A=m.magnitudeSquared(m.subtract(o,E,wa));if(A>S){let T=Math.sqrt(A);R=(R+T)*.5,S=R*R;let L=T-R;E.x=(R*E.x+L*o.x)/T,E.y=(R*E.y+L*o.y)/T,E.z=(R*E.z+L*o.z)/T}}return Ra.x&&m.clone(i,a),Pc.y&&m.clone(i,c),Ad.z&&m.clone(i,d)}let p=m.magnitudeSquared(m.subtract(a,o,wa)),g=m.magnitudeSquared(m.subtract(c,r,wa)),f=m.magnitudeSquared(m.subtract(d,s,wa)),b=o,x=a,I=p;g>I&&(I=g,b=r,x=c),f>I&&(I=f,b=s,x=d);let _=GO;_.x=(b.x+x.x)*.5,_.y=(b.y+x.y)*.5,_.z=(b.z+x.z)*.5;let E=m.magnitudeSquared(m.subtract(x,_,wa)),S=Math.sqrt(E),R=ZO;R.x=o.x,R.y=r.y,R.z=s.z;let G=BO;G.x=a.x,G.y=c.y,G.z=d.z;let B=m.midpoint(R,G,wO),w=0;for(h=0;hw&&(w=F);let P=m.magnitudeSquared(m.subtract(i,_,wa));if(P>E){let A=Math.sqrt(P);S=(S+A)*.5,E=S*S;let T=A-S;_.x=(S*_.x+T*i.x)/A,_.y=(S*_.y+T*i.y)/A,_.z=(S*_.z+T*i.z)/A}}return S=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let d=(o+c+s)*.5,u=m.multiplyByScalar(a,(-o+d)/c,EVe);return m.add(u,i,u),m.clone(u,n.center),n.radius=d,n};var TVe=new m;_n.expand=function(e,t,n){n=_n.clone(e,n);let i=m.magnitude(m.subtract(t,n.center,TVe));return i>n.radius&&(n.radius=i),n};_n.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=m.dot(o,n)+t.distance;return r<-i?on.OUTSIDE:r{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),Xa._canTransferArrayBuffer=s}})}return Xa._canTransferArrayBuffer}var PO=new Ce;function FO(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function MO(e){let t=new ane.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(hb(e))s=e;else if(!n){let a=hn(`${Xa._workerModulePrefix}/${i}.js`);hb(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=FO(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${FO(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=FO(a),new Worker(r,o)}if(r=e,n||(r=hn(`${Xa._workerModulePrefix+i}.js`)),!Ht.supportsEsmWebWorkers())throw new de("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function aGe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!Ht.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new de(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=hn(t.fallbackModulePath),n}n.wasmBinaryFile=hn(t.wasmBinaryFile);let i=await Ve.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function Xa(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var cGe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new de(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new Ae(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),PO.raiseEvent(s),i(s)}else PO.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},lGe=[];async function dGe(e,t,n){let i=await Promise.resolve(cne());l(n)?i||(n.length=0):n=lGe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",cGe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:hn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function uGe(e,t,n){++e._activeTasks;try{let i=await dGe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}Xa.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=MO(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return uGe(this,e,t)};Xa.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=MO(this._workerPath),i=await aGe(this,e),o=await Promise.resolve(cne()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,d)=>{n.onmessage=function({data:u}){l(u)?c(u.result):d(new de("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};Xa.prototype.isDestroyed=function(){return!1};Xa.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),me(this)};Xa.taskCompletedEvent=PO;Xa._defaultWorkerModulePrefix="Workers/";Xa._workerModulePrefix=Xa._defaultWorkerModulePrefix;Xa._canTransferArrayBuffer=void 0;var hi=Xa;function jp(){}jp._transcodeTaskProcessor=new hi("transcodeKTX2",Number.POSITIVE_INFINITY);jp._readyPromise=void 0;function mGe(){let e=jp._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return jp._transcodeTaskProcessor;throw new de("KTX2 transcoder could not be initialized.")});jp._readyPromise=e}jp.transcode=function(e,t){return l(jp._readyPromise)||mGe(),jp._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r>1^-(e&1)}wo.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a>11,u=c>>5&o,h=c&i,p=3*a;t[p]=d*r,t[p+1]=u*s,t[p+2]=h*r}return t};var Mn=wo;var cMt=y(C(),1);var fne=new m,pne=new m,Ane=new m;function hGe(e,t,n,i,o){l(o)||(o=new m);let r,s,a,c,d,u,h,p;if(l(t.z)){if(m.equalsEpsilon(e,t,Z.EPSILON14))return m.clone(m.UNIT_X,o);if(m.equalsEpsilon(e,n,Z.EPSILON14))return m.clone(m.UNIT_Y,o);if(m.equalsEpsilon(e,i,Z.EPSILON14))return m.clone(m.UNIT_Z,o);r=m.subtract(n,t,fne),s=m.subtract(i,t,pne),a=m.subtract(e,t,Ane),c=m.dot(r,r),d=m.dot(r,s),u=m.dot(r,a),h=m.dot(s,s),p=m.dot(s,a)}else{if(D.equalsEpsilon(e,t,Z.EPSILON14))return m.clone(m.UNIT_X,o);if(D.equalsEpsilon(e,n,Z.EPSILON14))return m.clone(m.UNIT_Y,o);if(D.equalsEpsilon(e,i,Z.EPSILON14))return m.clone(m.UNIT_Z,o);r=D.subtract(n,t,fne),s=D.subtract(i,t,pne),a=D.subtract(e,t,Ane),c=D.dot(r,r),d=D.dot(r,s),u=D.dot(r,a),h=D.dot(s,s),p=D.dot(s,a)}o.y=h*u-d*p,o.z=c*p-d*u;let g=c*h-d*d;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var Hy=hGe;var mMt=y(C(),1);function Zf(){this.high=m.clone(m.ZERO),this.low=m.clone(m.ZERO)}Zf.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var qp={high:0,low:0};Zf.fromCartesian=function(e,t){l(t)||(t=new Zf);let n=t.high,i=t.low;return Zf.encode(e.x,qp),n.x=qp.high,i.x=qp.low,Zf.encode(e.y,qp),n.y=qp.high,i.y=qp.low,Zf.encode(e.z,qp),n.z=qp.high,i.z=qp.low,t};var DO=new Zf;Zf.writeElements=function(e,t,n){Zf.fromCartesian(e,DO);let i=DO.high,o=DO.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ni=Zf;var gMt=y(C(),1);var ca={UNSIGNED_BYTE:ne.UNSIGNED_BYTE,UNSIGNED_SHORT:ne.UNSIGNED_SHORT,UNSIGNED_INT:ne.UNSIGNED_INT};ca.getSizeInBytes=function(e){switch(e){case ca.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case ca.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case ca.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};ca.fromSizeInBytes=function(e){switch(e){case 2:return ca.UNSIGNED_SHORT;case 4:return ca.UNSIGNED_INT;case 1:return ca.UNSIGNED_BYTE}};ca.validate=function(e){return l(e)&&(e===ca.UNSIGNED_BYTE||e===ca.UNSIGNED_SHORT||e===ca.UNSIGNED_INT)};ca.createTypedArray=function(e,t){return e>=Z.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};ca.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=Z.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};ca.fromTypedArray=function(e){if(e instanceof Uint8Array)return ca.UNSIGNED_BYTE;if(e instanceof Uint16Array)return ca.UNSIGNED_SHORT;if(e instanceof Uint32Array)return ca.UNSIGNED_INT};var Me=Object.freeze(ca);var UMt=y(C(),1);var CMt=y(C(),1);var QO={};QO.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function gne(e,t,n){let i=e+t;return Z.sign(e)!==Z.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))d&&d/c0?[a/e,n/a]:[n/a,a/e]};var rl=QO;var RMt=y(C(),1);var _Mt=y(C(),1);var kO={};kO.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function UO(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,d=r*a,u=r*r,h=s*s,p=o*s-u,g=o*a-r*s,f=r*a-h,b=4*p*f-g*g,x,I;if(b<0){let O,H,ee;u*d>=c*h?(O=o,H=p,ee=-2*r*p+o*g):(O=a,H=f,ee=-a*g+2*s*f);let te=-(ee<0?-1:1)*Math.abs(O)*Math.sqrt(-b);I=-ee+te;let q=I/2,pe=q<0?-Math.pow(-q,1/3):Math.pow(q,1/3),ye=I===te?-pe:-H/pe;return x=H<=0?pe+ye:-ee/(pe*pe+ye*ye+H),u*d>=c*h?[(x-r)/o]:[-a/(x+s)]}let _=p,E=-2*r*p+o*g,S=f,R=-a*g+2*s*f,G=Math.sqrt(b),B=Math.sqrt(3)/2,w=Math.abs(Math.atan2(o*G,-E)/3);x=2*Math.sqrt(-_);let F=Math.cos(w);I=x*F;let P=x*(-F/2-B*Math.sin(w)),A=I+P>2*r?I-r:P-r,T=o,L=A/T;w=Math.abs(Math.atan2(a*G,-R)/3),x=2*Math.sqrt(-S),F=Math.cos(w),I=x*F,P=x*(-F/2-B*Math.sin(w));let V=-a,W=I+P<2*s?I+s:P+s,M=V/W,Q=T*W,N=-A*W-T*V,k=A*V,v=(s*N-r*k)/(-r*N+s*Q);return L<=v?L<=M?v<=M?[L,v,M]:[L,M,v]:[M,L,v]:L<=M?[v,L,M]:v<=M?[v,M,L]:[M,v,L]}kO.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return rl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=rl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return UO(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):UO(e,t,0,i);if(i===0)return o=rl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return UO(e,t,n,i)};var zy=kO;var YO={};YO.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,d=n*n,u=d*n,h=i*i,p=h*i,g=o*o,f=g*o;return a*d*h-4*c*p-4*e*u*h+18*e*t*n*p-27*r*h*h+256*s*f+o*(18*c*n*i-4*a*u+16*e*d*d-80*e*t*d*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*d-192*r*t*i)};function ih(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=zy.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let d=-e/4,u=c[c.length-1];if(Math.abs(u)=0&&g>=0){let b=Math.sqrt(p),x=Math.sqrt(g);return[d-x,d-b,d+b,d+x]}else{if(p>=0&&g<0)return f=Math.sqrt(p),[d-f,d+f];if(p<0&&g>=0)return f=Math.sqrt(g),[d-f,d+f]}}return[]}else if(u>0){let h=Math.sqrt(u),p=(r+u-s/h)/2,g=(r+u+s/h)/2,f=rl.computeRealRoots(1,h,p),b=rl.computeRealRoots(1,-h,g);return f.length!==0?(f[0]+=d,f[1]+=d,b.length!==0?(b[0]+=d,b[1]+=d,f[1]<=b[0]?[f[0],f[1],b[0],b[1]]:b[1]<=f[0]?[b[0],b[1],f[0],f[1]]:f[0]>=b[0]&&f[1]<=b[1]?[b[0],f[0],f[1],b[1]]:b[0]>=f[0]&&b[1]<=f[1]?[f[0],b[0],b[1],f[1]]:f[0]>b[0]&&f[0]0){let h=u[0],p=t-h,g=p*p,f=e/2,b=p/2,x=g-4*i,I=g+4*Math.abs(i),_=s-4*h,E=s+4*Math.abs(h),S,R;if(h<0||x*E<_*I){let T=Math.sqrt(_);S=T/2,R=T===0?0:(e*b-n)/T}else{let T=Math.sqrt(x);S=T===0?0:(e*b-n)/T,R=T/2}let G,B;f===0&&S===0?(G=0,B=0):Z.sign(f)===Z.sign(S)?(G=f+S,B=h/G):(B=f-S,G=h/B);let w,F;b===0&&R===0?(w=0,F=0):Z.sign(b)===Z.sign(R)?(w=b+R,F=i/w):(F=b-R,w=i/F);let P=rl.computeRealRoots(1,G,w),A=rl.computeRealRoots(1,B,F);if(P.length!==0)return A.length!==0?P[1]<=A[0]?[P[0],P[1],A[0],A[1]]:A[1]<=P[0]?[A[0],A[1],P[0],P[1]]:P[0]>=A[0]&&P[1]<=A[1]?[A[0],P[0],P[1],A[1]]:A[0]>=P[0]&&A[1]<=P[1]?[P[0],A[0],A[1],P[1]]:P[0]>A[0]&&P[0]u)||(p=m.cross(h,a,yne),f=m.dot(s,p),f<0||g+f>u))return;b=m.dot(c,p)/u}else{if(Math.abs(u)1||(p=m.cross(h,a,yne),f=m.dot(s,p)*x,f<0||g+f>1))return;b=m.dot(c,p)*x}return b};$o.rayTriangle=function(e,t,n,i,o,r){let s=$o.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new m),m.multiplyByScalar(e.direction,s,r),m.add(e.origin,r,r)};var AGe=new En;$o.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=AGe;m.clone(e,a.origin),m.subtract(t,e,a.direction),m.normalize(a.direction,a.direction);let c=$o.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>m.distance(e,t)))return l(s)||(s=new m),m.multiplyByScalar(a.direction,c,s),m.add(a.origin,s,s)};function gGe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,d=(-t-a)*s;return cs))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var CGe=new m,xGe=new m;$o.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=m.multiplyComponents(n,e.origin,CGe),o=m.multiplyComponents(n,e.direction,xGe),r=m.magnitudeSquared(i),s=m.dot(i,o),a,c,d,u,h;if(r>1){if(s>=0)return;let p=s*s;if(a=r-1,c=m.magnitudeSquared(o),d=c*a,pd){u=s*s-d,h=-s+Math.sqrt(u);let f=h/c,b=a/h;return f0?g.push(new m(i,o*F,o*-T)):T!==0?(g.push(new m(i,o*F,o*-T)),g.push(new m(i,o*F,o*T)),++w):g.push(new m(i,o*F,o*T))}return g};var OO=new m,Cne=new m,xne=new m,cD=new m,IGe=new m,_Ge=new $,EGe=new $,TGe=new $,SGe=new $,LGe=new $,Ine=new $,_ne=new $,Ene=new m,RGe=new m,VGe=new ge;$o.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!m.equals(n,m.ZERO)){let G=t.geodeticSurfaceNormal(n,OO);if(m.dot(i,G)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,OO),s=m.normalize(r,r),a=m.mostOrthogonalAxis(r,cD),c=m.normalize(m.cross(a,s,Cne),Cne),d=m.normalize(m.cross(s,c,xne),xne),u=_Ge;u[0]=s.x,u[1]=s.y,u[2]=s.z,u[3]=c.x,u[4]=c.y,u[5]=c.z,u[6]=d.x,u[7]=d.y,u[8]=d.z;let h=$.transpose(u,EGe),p=$.fromScale(t.radii,TGe),g=$.fromScale(t.oneOverRadii,SGe),f=LGe;f[0]=0,f[1]=-i.z,f[2]=i.y,f[3]=i.z,f[4]=0,f[5]=-i.x,f[6]=-i.y,f[7]=i.x,f[8]=0;let b=$.multiply($.multiply(h,g,Ine),f,Ine),x=$.multiply($.multiply(b,p,_ne),u,_ne),I=$.multiplyByVector(b,n,IGe),_=$o.quadraticVectorExpression(x,m.negate(I,OO),0,0,1),E,S,R=_.length;if(R>0){let G=m.clone(m.ZERO,RGe),B=Number.NEGATIVE_INFINITY;for(let F=0;FB&&(B=A,G=m.clone(E,G))}let w=t.cartesianToCartographic(G,VGe);return B=Z.clamp(B,0,1),S=m.magnitude(m.subtract(G,n,cD))*Math.sqrt(1-B*B),S=o?-S:S,w.height=S,t.cartographicToCartesian(w,new m)}};var GGe=new m;$o.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new m);let o=m.subtract(t,e,GGe),r=n.normal,s=m.dot(r,o);if(Math.abs(s)1))return m.multiplyByScalar(o,c,i),m.add(e,i,i),i};$o.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=m.dot(o,e)+r<0,a=m.dot(o,t)+r<0,c=m.dot(o,n)+r<0,d=0;d+=s?1:0,d+=a?1:0,d+=c?1:0;let u,h;if((d===1||d===2)&&(u=new m,h=new m),d===1){if(s)return $o.lineSegmentPlane(e,t,i,u),$o.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,u,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return $o.lineSegmentPlane(t,n,i,u),$o.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,u,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return $o.lineSegmentPlane(n,e,i,u),$o.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,u,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(d===2)if(s)if(a){if(!c)return $o.lineSegmentPlane(e,n,i,u),$o.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,u,h],indices:[0,1,4,0,4,3,2,3,4]}}else return $o.lineSegmentPlane(n,t,i,u),$o.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,u,h],indices:[2,0,4,2,4,3,1,3,4]};else return $o.lineSegmentPlane(t,e,i,u),$o.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,u,h],indices:[1,2,4,1,4,3,0,3,4]}};var fi=$o;var KMt=y(C(),1);function la(e,t){this.normal=m.clone(e),this.distance=t}la.fromPointNormal=function(e,t,n){let i=-m.dot(t,e);return l(n)?(m.clone(t,n.normal),n.distance=i,n):new la(t,i)};var ZGe=new m;la.fromCartesian4=function(e,t){let n=m.fromCartesian4(e,ZGe),i=e.w;return l(t)?(m.clone(n,t.normal),t.distance=i,t):new la(n,i)};la.getPointDistance=function(e,t){return m.dot(e.normal,t)+e.distance};var BGe=new m;la.projectPointOntoPlane=function(e,t,n){l(n)||(n=new m);let i=la.getPointDistance(e,t),o=m.multiplyByScalar(e.normal,i,BGe);return m.subtract(t,o,n)};var wGe=new X,XGe=new ce,WGe=new m;la.transform=function(e,t,n){let i=e.normal,o=e.distance,r=X.inverseTranspose(t,wGe),s=ce.fromElements(i.x,i.y,i.z,o,XGe);s=X.multiplyByVector(r,s,s);let a=m.fromCartesian4(s,WGe);return s=ce.divideByScalar(s,m.magnitude(a),s),la.fromCartesian4(s,n)};la.clone=function(e,t){return l(t)?(m.clone(e.normal,t.normal),t.distance=e.distance,t):new la(e.normal,e.distance)};la.equals=function(e,t){return e.distance===t.distance&&m.equals(e.normal,t.normal)};la.ORIGIN_XY_PLANE=Object.freeze(new la(m.UNIT_Z,0));la.ORIGIN_YZ_PLANE=Object.freeze(new la(m.UNIT_X,0));la.ORIGIN_ZX_PLANE=Object.freeze(new la(m.UNIT_Y,0));var An=la;var $Mt=y(C(),1);var HO={};HO.calculateACMR=function(e){e=e??Y.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;an&&(n=c),++a,c=t[a]}let r=[];for(let a=0;ai&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};HO.tipsify=function(e){e=e??Y.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(A,T,L,V){for(;T.length>=1;){let W=T[T.length-1];if(T.splice(T.length-1,1),A[W].numLiveTriangles>0)return W}for(;o0)return++o,o-1;++o}return-1}function s(A,T,L,V,W,M,Q){let N=-1,k,v=-1,O=0;for(;Ov||v===-1)&&(v=k,N=H)),++O}return N===-1?r(V,M,A,Q):N}let a=t.length,c=0,d=0,u=t[d],h=a;if(l(n))c=n+1;else{for(;dc&&(c=u),++d,u=t[d];if(c===-1)return 0;++c}let p=[],g;for(g=0;gi&&(E.timeStamp=x,++x),++d}b=s(t,i,I,p,x,_,c)}return G};var L1=HO;var sl={};function pD(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function FGe(e){let t=e.length,n=t/3*6,i=Me.createTypedArray(t,n),o=0;for(let r=0;r=3){let n=(t-2)*6,i=Me.createTypedArray(t,n);pD(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r0){let t=e.length-1,n=(t-1)*6,i=Me.createTypedArray(t,n),o=e[0],r=0;for(let s=1;so&&(o=n[r]);e.indices=L1.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function Lne(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new Ze({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function vGe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r=Z.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=Lne(e.attributes),a=e.indices,c=a.length,d;e.primitiveType===We.TRIANGLES?d=3:e.primitiveType===We.LINES?d=2:e.primitiveType===We.POINTS&&(d=1);for(let u=0;u=Z.SIXTY_FOUR_KILOBYTES&&(t.push(new pt({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=Lne(e.attributes))}o.length!==0&&t.push(new pt({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var Rne=new m,NGe=new ge;sl.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Di;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),d=0;for(let u=0;ux&&(x=_)}return new pt({attributes:u,indices:f,primitiveType:d,boundingSphere:l(b)?new ue(b,x):void 0})}sl.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r0&&o.push(jO(t,"geometry")),n.length>0&&(o.push(jO(n,"westHemisphereGeometry")),o.push(jO(n,"eastHemisphereGeometry"))),o};var Uu=new m,R1=new m,O_=new m,H_=new m;sl.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),d;for(d=0;d0){for(u=0;u3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;oo?i>r?s=Z.sign(e.y):s=Z.sign(n.y):o>r?s=Z.sign(t.y):s=Z.sign(n.y);let a=s<0;yb(e,a),yb(t,a),yb(n,a)}var Bne=new m;function ku(e,t,n,i){m.add(e,m.multiplyByScalar(m.subtract(t,e,Bne),e.y/(e.y-t.y),Bne),n),m.clone(n,i),yb(n,!0),yb(i,!1)}var Jy=new m,jy=new m,qy=new m,$y=new m,qO={positions:new Array(7),indices:new Array(9)};function $Ge(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;qGe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=qO.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(ku(e,t,Jy,qy),ku(e,n,jy,$y),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(ku(t,n,Jy,qy),ku(t,e,jy,$y),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(ku(n,e,Jy,qy),ku(n,t,jy,$y),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(ku(n,e,Jy,qy),ku(n,t,jy,$y),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(ku(t,n,Jy,qy),ku(t,e,jy,$y),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(ku(e,t,Jy,qy),ku(e,n,jy,$y),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=qO.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=Jy,c[4]=jy,c[5]=qy,c[6]=$y,c.length=7),qO}function wne(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=J.createTypedArray(r.componentDatatype,r.values)}let i=pt.computeNumberOfVertices(e);return e.indices=Me.createTypedArray(i,e.indices),t&&(e.boundingSphere=ue.fromVertices(n.position.values)),e}function K_(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new Ze({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new pt({attributes:n,indices:[],primitiveType:e.primitiveType})}function nH(e,t,n){let i=l(e.geometry.boundingSphere);t=wne(t,i),n=wne(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function iH(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,d,u,h,p){let g=e.fromArray(d,r*t,n),f=e.fromArray(d,s*t,i),b=e.fromArray(d,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(f,c.y,f),e.multiplyByScalar(b,c.z,b);let x=e.add(g,f,g);e.add(x,b,x),p&&e.normalize(x,x),e.pack(x,u,h*t)}}var eZe=iH(ce,4),fD=iH(m,3),vne=iH(D,2),tZe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,d=o[n]*i.z;r[s]=a+c+d>Z.EPSILON6?1:0},G1=new m,$O=new m,eH=new m,nZe=new m;function mD(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(d)&&g===0)return;let x=m.fromArray(o,e*3,G1),I=m.fromArray(o,t*3,$O),_=m.fromArray(o,n*3,eH),E=Hy(i,x,I,_,nZe);if(l(E)){if(l(r)&&fD(e,t,n,E,r,h.normal.values,b,!0),l(d)){let S=m.fromArray(d,e*3,G1),R=m.fromArray(d,t*3,$O),G=m.fromArray(d,n*3,eH);m.multiplyByScalar(S,E.x,S),m.multiplyByScalar(R,E.y,R),m.multiplyByScalar(G,E.z,G);let B;!m.equals(S,m.ZERO)||!m.equals(R,m.ZERO)||!m.equals(G,m.ZERO)?(B=m.add(S,R,S),m.add(B,G,B),m.normalize(B,B)):(B=G1,B.x=0,B.y=0,B.z=0),m.pack(B,h.extrudeDirection.values,b*3)}if(l(u)&&tZe(e,t,n,E,u,h.applyOffset.values,b),l(s)&&fD(e,t,n,E,s,h.tangent.values,b,!0),l(a)&&fD(e,t,n,E,a,h.bitangent.values,b,!0),l(c)&&vne(e,t,n,E,c,h.st.values,b),g>0)for(let S=0;S3){let V=L.positions,W=L.indices,M=W.length;for(let Q=0;Q0)continue;let c=m.unpack(i,s,Qne);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):m.pack(a,i,s));let d=m.unpack(o,s,tH);(a.y<0&&d.y>0||a.y>0&&d.y<0)&&(s+30||ue.intersectPlane(n,An.ORIGIN_ZX_PLANE)!==on.INTERSECTING))return e;if(t.geometryType!==Qu.NONE)switch(t.geometryType){case Qu.POLYLINES:mZe(e);break;case Qu.TRIANGLES:Xne(e);break;case Qu.LINES:Wne(e);break}else jGe(t),t.primitiveType===We.TRIANGLES?Xne(e):t.primitiveType===We.LINES&&Wne(e);return e};var Yn=sl;var Zvt=y(C(),1);var Lvt=y(C(),1);var Vi={UNSIGNED_BYTE:ne.UNSIGNED_BYTE,UNSIGNED_SHORT:ne.UNSIGNED_SHORT,UNSIGNED_INT:ne.UNSIGNED_INT,FLOAT:ne.FLOAT,HALF_FLOAT:ne.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ne.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ne.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ne.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ne.UNSIGNED_SHORT_5_6_5};Vi.toWebGLConstant=function(e,t){switch(e){case Vi.UNSIGNED_BYTE:return ne.UNSIGNED_BYTE;case Vi.UNSIGNED_SHORT:return ne.UNSIGNED_SHORT;case Vi.UNSIGNED_INT:return ne.UNSIGNED_INT;case Vi.FLOAT:return ne.FLOAT;case Vi.HALF_FLOAT:return t.webgl2?ne.HALF_FLOAT:ne.HALF_FLOAT_OES;case Vi.UNSIGNED_INT_24_8:return ne.UNSIGNED_INT_24_8;case Vi.UNSIGNED_SHORT_4_4_4_4:return ne.UNSIGNED_SHORT_4_4_4_4;case Vi.UNSIGNED_SHORT_5_5_5_1:return ne.UNSIGNED_SHORT_5_5_5_1;case Vi.UNSIGNED_SHORT_5_6_5:return Vi.UNSIGNED_SHORT_5_6_5}};Vi.isPacked=function(e){return e===Vi.UNSIGNED_INT_24_8||e===Vi.UNSIGNED_SHORT_4_4_4_4||e===Vi.UNSIGNED_SHORT_5_5_5_1||e===Vi.UNSIGNED_SHORT_5_6_5};Vi.sizeInBytes=function(e){switch(e){case Vi.UNSIGNED_BYTE:return 1;case Vi.UNSIGNED_SHORT:case Vi.UNSIGNED_SHORT_4_4_4_4:case Vi.UNSIGNED_SHORT_5_5_5_1:case Vi.UNSIGNED_SHORT_5_6_5:case Vi.HALF_FLOAT:return 2;case Vi.UNSIGNED_INT:case Vi.FLOAT:case Vi.UNSIGNED_INT_24_8:return 4}};Vi.validate=function(e){return e===Vi.UNSIGNED_BYTE||e===Vi.UNSIGNED_SHORT||e===Vi.UNSIGNED_INT||e===Vi.FLOAT||e===Vi.HALF_FLOAT||e===Vi.UNSIGNED_INT_24_8||e===Vi.UNSIGNED_SHORT_4_4_4_4||e===Vi.UNSIGNED_SHORT_5_5_5_1||e===Vi.UNSIGNED_SHORT_5_6_5};Vi.getTypedArrayConstructor=function(e){let t=Vi.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Vi.FLOAT?Float32Array:Uint32Array};var Ye=Object.freeze(Vi);var $e={DEPTH_COMPONENT:ne.DEPTH_COMPONENT,DEPTH_STENCIL:ne.DEPTH_STENCIL,ALPHA:ne.ALPHA,RED:ne.RED,RG:ne.RG,RGB:ne.RGB,RGBA:ne.RGBA,RED_INTEGER:ne.RED_INTEGER,RG_INTEGER:ne.RG_INTEGER,RGB_INTEGER:ne.RGB_INTEGER,RGBA_INTEGER:ne.RGBA_INTEGER,LUMINANCE:ne.LUMINANCE,LUMINANCE_ALPHA:ne.LUMINANCE_ALPHA,RGB_DXT1:ne.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ne.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ne.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ne.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ne.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ne.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ne.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ne.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ne.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ne.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ne.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ne.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ne.COMPRESSED_RGBA_BPTC_UNORM};$e.componentsLength=function(e){switch(e){case $e.RGB:case $e.RGB_INTEGER:return 3;case $e.RGBA:case $e.RGBA_INTEGER:return 4;case $e.LUMINANCE_ALPHA:case $e.RG:case $e.RG_INTEGER:return 2;case $e.ALPHA:case $e.RED:case $e.RED_INTEGER:case $e.LUMINANCE:return 1;default:return 1}};$e.validate=function(e){return e===$e.DEPTH_COMPONENT||e===$e.DEPTH_STENCIL||e===$e.ALPHA||e===$e.RED||e===$e.RG||e===$e.RGB||e===$e.RGBA||e===$e.RED_INTEGER||e===$e.RG_INTEGER||e===$e.RGB_INTEGER||e===$e.RGBA_INTEGER||e===$e.LUMINANCE||e===$e.LUMINANCE_ALPHA||e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5||e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1||e===$e.RGBA_ASTC||e===$e.RGB_ETC1||e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC||e===$e.RGBA_BC7};$e.isColorFormat=function(e){return e===$e.RED||e===$e.ALPHA||e===$e.RGB||e===$e.RGBA||e===$e.LUMINANCE||e===$e.LUMINANCE_ALPHA};$e.isDepthFormat=function(e){return e===$e.DEPTH_COMPONENT||e===$e.DEPTH_STENCIL};$e.isCompressedFormat=function(e){return e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5||e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1||e===$e.RGBA_ASTC||e===$e.RGB_ETC1||e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC||e===$e.RGBA_BC7};$e.isDXTFormat=function(e){return e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5};$e.isPVRTCFormat=function(e){return e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1};$e.isASTCFormat=function(e){return e===$e.RGBA_ASTC};$e.isETC1Format=function(e){return e===$e.RGB_ETC1};$e.isETC2Format=function(e){return e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC};$e.isBC7Format=function(e){return e===$e.RGBA_BC7};$e.compressedTextureSizeInBytes=function(e,t,n){switch(e){case $e.RGB_DXT1:case $e.RGBA_DXT1:case $e.RGB_ETC1:case $e.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case $e.RGBA_DXT3:case $e.RGBA_DXT5:case $e.RGBA_ASTC:case $e.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case $e.RGB_PVRTC_4BPPV1:case $e.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case $e.RGB_PVRTC_2BPPV1:case $e.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case $e.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};$e.textureSizeInBytes=function(e,t,n,i){let o=$e.componentsLength(e);return Ye.isPacked(t)&&(o=1),o*Ye.sizeInBytes(t)*n*i};$e.texture3DSizeInBytes=function(e,t,n,i,o){let r=$e.componentsLength(e);return Ye.isPacked(t)&&(r=1),r*Ye.sizeInBytes(t)*n*i*o};$e.alignmentInBytes=function(e,t,n){let i=$e.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};$e.createTypedArray=function(e,t,n,i){let o=Ye.getTypedArrayConstructor(t),r=$e.componentsLength(e)*n*i;return new o(r)};$e.flipY=function(e,t,n,i,o){if(o===1)return e;let r=$e.createTypedArray(t,n,i,o),s=$e.componentsLength(t),a=i*s;for(let c=0;c0&&(i.glVertexAttribDivisor(d,this.instanceDivisor),i._vertexAttribDivisors[d]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function kne(e,t,n){for(let i=0;i0&&(c=!0),l(s[r].value)&&(d=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),kne(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=d,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Une(e){return e.values.length/e.componentsPerAttribute}function fZe(e){return J.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function pZe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===J.DOUBLE&&(e[n].componentDatatype=J.FLOAT,e[n].values=J.createTypedArray(J.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=Une(e[o[0]]),t=1;t0){let d=J.getSizeInBytes(e[o[0]].componentDatatype),u=a%d;u!==0&&(a+=d-u);let h=r*a,p=new ArrayBuffer(h),g={};for(t=0;t=Z.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?p=It.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Me.UNSIGNED_INT}):p=It.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Me.UNSIGNED_SHORT})),new $p({context:t,attributes:u,indexBuffer:p})};Object.defineProperties($p.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});$p.prototype.getAttribute=function(e){return this._attributes[e]};function AZe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=Kt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function gZe(e,t){let n=e._attributes,i=n.length;for(let o=0;o maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var E9t=y(C(),1),v1=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var S9t=y(C(),1),N1=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var R9t=y(C(),1),D1=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var G9t=y(C(),1),Q1=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var B9t=y(C(),1),U1=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var X9t=y(C(),1),k1=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var F9t=y(C(),1),Y1=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var M9t=y(C(),1),O1=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var N9t=y(C(),1),H1=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var Q9t=y(C(),1),z1=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var k9t=y(C(),1),K1=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var O9t=y(C(),1),J1=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var z9t=y(C(),1),j1=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var J9t=y(C(),1),q1=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function Je(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??en.LINEAR,this._magnificationFilter=e.magnificationFilter??pi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,_Ze(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Je._uniformList[this.type])||(Je._uniformList[this.type]=Object.keys(this._uniforms))}Je._uniformList={};Je.fromType=function(e,t){let n=new Je({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Je.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i-1)return!0;return!1}function VZe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&RZe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var jne={mat2:Qi,mat3:$,mat4:X},GZe=/\.ktx2$/i;function ZZe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Je.DefaultImageId;t=r;let c=n._textures[e],d,u;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let p=new sn({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Wt({context:i,source:r,sampler:p}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Wt&&r!==c){n._texturePaths[e]=void 0;let p=n._textures[e];l(p)&&p!==n._defaultTexture&&p.destroy(),n._textures[e]=r,d=`${e}Dimensions`,o.hasOwnProperty(d)&&(u=o[d],u.x=r._width,u.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,d=`${e}Dimensions`,o.hasOwnProperty(d)&&(u=o[d],u.x=c._width,u.y=c._height)),a)return;let h=r instanceof Ve;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let p=h?r:Ve.createIfNeeded(r),g;GZe.test(p.url)?g=Kl(p.url):g=p.fetchImage(),Promise.resolve(g).then(function(f){n._loadedImages.push({id:e,image:f})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function BZe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof Pr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Je.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[Ve.createIfNeeded(i.positiveX).fetchImage(),Ve.createIfNeeded(i.negativeX).fetchImage(),Ve.createIfNeeded(i.positiveY).fetchImage(),Ve.createIfNeeded(i.negativeY).fetchImage(),Ve.createIfNeeded(i.positiveZ).fetchImage(),Ve.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function wZe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&qne(e,n)}function qne(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=XZe(o),s;if(r==="channels")s=$1(e,t,o,!1);else{if(r==="sampler2D"){let d=`${t}Dimensions`;FZe(e,d)>0&&(i[d]={type:"ivec3",x:1,y:1},qne(e,d))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let d=`uniform ${r} ${t};`;e.shaderSource=d+e.shaderSource}let c=`${t}_${e._count++}`;if(s=$1(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(ZZe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(BZe(t));else if(r.indexOf("mat")!==-1){let d=new jne[r];e._uniforms[c]=function(){return jne[r].fromColumnMajorArray(e.uniforms[t],d)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function XZe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof Ve||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Je.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function WZe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Je({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=Lt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;$1(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=$1(e,i,a)}}function $1(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,d,u){return d||u?c:(o+=1,n)}),o}function FZe(e,t,n){return $1(e,t,t,n)}Je._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Je.DefaultImageId="czm_defaultImage";Je.DefaultCubeMapId="czm_defaultCubeMap";Je.ColorType="Color";Je._materialCache.addMaterial(Je.ColorType,{fabric:{type:Je.ColorType,uniforms:{color:new U(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Je.ImageType="Image";Je._materialCache.addMaterial(Je.ImageType,{fabric:{type:Je.ImageType,uniforms:{image:Je.DefaultImageId,repeat:new D(1,1),color:new U(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Je.DiffuseMapType="DiffuseMap";Je._materialCache.addMaterial(Je.DiffuseMapType,{fabric:{type:Je.DiffuseMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",repeat:new D(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Je.AlphaMapType="AlphaMap";Je._materialCache.addMaterial(Je.AlphaMapType,{fabric:{type:Je.AlphaMapType,uniforms:{image:Je.DefaultImageId,channel:"a",repeat:new D(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Je.SpecularMapType="SpecularMap";Je._materialCache.addMaterial(Je.SpecularMapType,{fabric:{type:Je.SpecularMapType,uniforms:{image:Je.DefaultImageId,channel:"r",repeat:new D(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Je.EmissionMapType="EmissionMap";Je._materialCache.addMaterial(Je.EmissionMapType,{fabric:{type:Je.EmissionMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",repeat:new D(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Je.BumpMapType="BumpMap";Je._materialCache.addMaterial(Je.BumpMapType,{fabric:{type:Je.BumpMapType,uniforms:{image:Je.DefaultImageId,channel:"r",strength:.8,repeat:new D(1,1)},source:W1},translucent:!1});Je.NormalMapType="NormalMap";Je._materialCache.addMaterial(Je.NormalMapType,{fabric:{type:Je.NormalMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",strength:.8,repeat:new D(1,1)},source:U1},translucent:!1});Je.GridType="Grid";Je._materialCache.addMaterial(Je.GridType,{fabric:{type:Je.GridType,uniforms:{color:new U(0,1,0,1),cellAlpha:.1,lineCount:new D(8,8),lineThickness:new D(1,1),lineOffset:new D(0,0)},source:Q1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Je.StripeType="Stripe";Je._materialCache.addMaterial(Je.StripeType,{fabric:{type:Je.StripeType,uniforms:{horizontal:!0,evenColor:new U(1,1,1,.5),oddColor:new U(0,0,1,.5),offset:0,repeat:5},source:J1},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Je.CheckerboardType="Checkerboard";Je._materialCache.addMaterial(Je.CheckerboardType,{fabric:{type:Je.CheckerboardType,uniforms:{lightColor:new U(1,1,1,.5),darkColor:new U(0,0,0,.5),repeat:new D(5,5)},source:F1},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Je.DotType="Dot";Je._materialCache.addMaterial(Je.DotType,{fabric:{type:Je.DotType,uniforms:{lightColor:new U(1,1,0,.75),darkColor:new U(0,1,1,.75),repeat:new D(5,5)},source:P1},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Je.WaterType="Water";Je._materialCache.addMaterial(Je.WaterType,{fabric:{type:Je.WaterType,uniforms:{baseWaterColor:new U(.2,.3,.6,1),blendColor:new U(0,1,.699,1),specularMap:Je.DefaultImageId,normalMap:Je.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:q1},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Je.RimLightingType="RimLighting";Je._materialCache.addMaterial(Je.RimLightingType,{fabric:{type:Je.RimLightingType,uniforms:{color:new U(1,0,0,.7),rimColor:new U(1,1,1,.4),width:.3},source:z1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Je.FadeType="Fade";Je._materialCache.addMaterial(Je.FadeType,{fabric:{type:Je.FadeType,uniforms:{fadeInColor:new U(1,0,0,1),fadeOutColor:new U(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new D(.5,.5)},source:D1},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Je.PolylineArrowType="PolylineArrow";Je._materialCache.addMaterial(Je.PolylineArrowType,{fabric:{type:Je.PolylineArrowType,uniforms:{color:new U(1,1,1,1)},source:k1},translucent:!0});Je.PolylineDashType="PolylineDash";Je._materialCache.addMaterial(Je.PolylineDashType,{fabric:{type:Je.PolylineDashType,uniforms:{color:new U(1,0,1,1),gapColor:new U(0,0,0,0),dashLength:16,dashPattern:255},source:Y1},translucent:!0});Je.PolylineGlowType="PolylineGlow";Je._materialCache.addMaterial(Je.PolylineGlowType,{fabric:{type:Je.PolylineGlowType,uniforms:{color:new U(0,.5,1,1),glowPower:.25,taperPower:1},source:O1},translucent:!0});Je.PolylineOutlineType="PolylineOutline";Je._materialCache.addMaterial(Je.PolylineOutlineType,{fabric:{type:Je.PolylineOutlineType,uniforms:{color:new U(1,1,1,1),outlineColor:new U(1,0,0,1),outlineWidth:1},source:H1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Je.ElevationContourType="ElevationContour";Je._materialCache.addMaterial(Je.ElevationContourType,{fabric:{type:Je.ElevationContourType,uniforms:{spacing:100,color:new U(1,0,0,1),width:1},source:v1},translucent:!1});Je.ElevationRampType="ElevationRamp";Je._materialCache.addMaterial(Je.ElevationRampType,{fabric:{type:Je.ElevationRampType,uniforms:{image:Je.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:N1},translucent:!1});Je.SlopeRampMaterialType="SlopeRamp";Je._materialCache.addMaterial(Je.SlopeRampMaterialType,{fabric:{type:Je.SlopeRampMaterialType,uniforms:{image:Je.DefaultImageId},source:K1},translucent:!1});Je.AspectRampMaterialType="AspectRamp";Je._materialCache.addMaterial(Je.AspectRampMaterialType,{fabric:{type:Je.AspectRampMaterialType,uniforms:{image:Je.DefaultImageId},source:X1},translucent:!1});Je.ElevationBandType="ElevationBand";Je._materialCache.addMaterial(Je.ElevationBandType,{fabric:{type:Je.ElevationBandType,uniforms:{heights:Je.DefaultImageId,colors:Je.DefaultImageId},source:M1},translucent:!0});Je.WaterMaskType="WaterMask";Je._materialCache.addMaterial(Je.WaterMaskType,{fabric:{type:Je.WaterMaskType,source:j1,uniforms:{waterColor:new U(1,1,1,1),landColor:new U(0,0,0,0)}},translucent:!1});var so=Je;function eC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??eC.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(eC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});eC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;eC.prototype.isTranslucent=go.prototype.isTranslucent;eC.prototype.getRenderState=go.prototype.getRenderState;eC.MaterialSupport={BASIC:Object.freeze({vertexFormat:we.POSITION_AND_NORMAL,vertexShaderSource:y1,fragmentShaderSource:b1}),TEXTURED:Object.freeze({vertexFormat:we.POSITION_NORMAL_AND_ST,vertexShaderSource:x1,fragmentShaderSource:C1}),ALL:Object.freeze({vertexFormat:we.ALL,vertexShaderSource:g1,fragmentShaderSource:A1})};var Io=eC;var uQt=y(C(),1);var JDt=y(C(),1),eR=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var qDt=y(C(),1),tR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var eQt=y(C(),1),tC=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var nQt=y(C(),1),nR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function eA(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?nR:tR,r=i?tC:eR,s=i?eA.FLAT_VERTEX_FORMAT:eA.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(eA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});eA.VERTEX_FORMAT=we.POSITION_AND_NORMAL;eA.FLAT_VERTEX_FORMAT=we.POSITION_ONLY;eA.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;eA.prototype.isTranslucent=go.prototype.isTranslucent;eA.prototype.getRenderState=go.prototype.getRenderState;var yn=eA;var yQt=y(C(),1);function J_(e){this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(J_.prototype,{isConstant:{get:function(){return z.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color")});J_.prototype.getType=function(e){return"Color"};var PZe=new j;J_.prototype.getValue=function(e,t){return l(e)||(e=j.now(PZe)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,U.WHITE,t.color),t};J_.prototype.equals=function(e){return this===e||e instanceof J_&&z.equals(this._color,e._color)};var qt=J_;var O8t=y(C(),1);var T8t=y(C(),1);var NQt=y(C(),1);var RQt=y(C(),1);function xb(e){e=e??Y.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??ie.default,this._rectangle=e.rectangle??le.MAX_VALUE,this._projection=new Di(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(xb.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});xb.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<=o&&(d=o-1);let u=(i.north-e.latitude)/a|0;return u>=r&&(u=r-1),l(n)?(n.x=d,n.y=u,n):new D(d,u)};var ao=xb;var $ne=new m,eie=new m,tie=new ge,aH=new m,MZe=new m,nie=new ue,vZe=new ao,iR=[new ge,new ge,new ge,new ge],oR=new D,As={};As.initialize=function(){let e=As._initPromise;return l(e)||(e=Ve.fetchJson(hn("Assets/approximateTerrainHeights.json")).then(function(t){As._terrainHeights=t}),As._initPromise=e),e};As.getMinimumMaximumHeights=function(e,t){t=t??ie.default;let n=iie(e),i=As._defaultMinTerrainHeight,o=As._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=As._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(le.northeast(e,tie),$ne),t.cartographicToCartesian(le.southwest(e,tie),eie),m.midpoint(eie,$ne,aH);let a=t.scaleToGeodeticSurface(aH,MZe);if(l(a)){let c=m.distance(aH,a);i=Math.min(i,-c)}else i=As._defaultMinTerrainHeight}return i=Math.max(As._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};As.getBoundingSphere=function(e,t){t=t??ie.default;let n=iie(e),i=As._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=As._terrainHeights[r];l(s)&&(i=s[1])}let o=ue.fromRectangle3D(e,t,0);return ue.fromRectangle3D(e,t,i,nie),ue.union(o,nie,o)};function iie(e){ge.fromRadians(e.east,e.north,0,iR[0]),ge.fromRadians(e.west,e.north,0,iR[1]),ge.fromRadians(e.east,e.south,0,iR[2]),ge.fromRadians(e.west,e.south,0,iR[3]);let t=0,n=0,i=0,o=0,r=As._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let d=iR[c];if(vZe.positionToTileXY(d,s,oR),c===0)i=oR.x,o=oR.y;else if(i!==oR.x||o!==oR.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}As._terrainHeightsMaxLevel=6;As._defaultMaxTerrainHeight=9e3;As._defaultMinTerrainHeight=-1e5;As._terrainHeights=void 0;As._initPromise=void 0;Object.defineProperties(As,{initialized:{get:function(){return l(As._terrainHeights)}}});var Si=As;var C5t=y(C(),1);var o5t=y(C(),1);var YQt=y(C(),1);function al(e,t,n){this.minimum=m.clone(e??m.ZERO),this.maximum=m.clone(t??m.ZERO),l(n)?n=m.clone(n):n=m.midpoint(this.minimum,this.maximum,new m),this.center=n}al.fromCorners=function(e,t,n){return l(n)||(n=new al),n.minimum=m.clone(e,n.minimum),n.maximum=m.clone(t,n.maximum),n.center=m.midpoint(e,t,n.center),n};al.fromPoints=function(e,t){if(l(t)||(t=new al),!l(e)||e.length===0)return t.minimum=m.clone(m.ZERO,t.minimum),t.maximum=m.clone(m.ZERO,t.maximum),t.center=m.clone(m.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h0?on.INSIDE:r+o<0?on.OUTSIDE:on.INTERSECTING};al.prototype.clone=function(e){return al.clone(this,e)};al.prototype.intersectPlane=function(e){return al.intersectPlane(this,e)};al.prototype.equals=function(e){return al.equals(this,e)};var Ib=al;var cH=new ce;function wf(e,t){t=t??ie.default,e=t.scaleToGeodeticSurface(e);let n=Dt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=m.fromCartesian4(X.getColumn(n,0,cH)),this._yAxis=m.fromCartesian4(X.getColumn(n,1,cH));let i=m.fromCartesian4(X.getColumn(n,2,cH));this._plane=An.fromPointNormal(e,i)}Object.defineProperties(wf.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var NZe=new Ib;wf.fromPoints=function(e,t){let n=Ib.fromPoints(e,NZe);return new wf(n.center,t)};var oie=new En,_D=new m;wf.prototype.projectPointOntoPlane=function(e,t){let n=oie;n.origin=e,m.normalize(e,n.direction);let i=fi.rayPlane(n,this._plane,_D);if(l(i)||(m.negate(n.direction,n.direction),i=fi.rayPlane(n,this._plane,_D)),l(i)){let o=m.subtract(i,this._origin,i),r=m.dot(this._xAxis,o),s=m.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new D(r,s)}};wf.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o0?0:B.latitude,T=ge.fromRadians(P,e.north,n,qZe),L=ge.fromRadians(e.west,e.north,n,$Ze),V=ge.fromRadians(e.west,A,n,eBe),W=ge.fromRadians(e.west,e.south,n,tBe),M=ge.fromRadians(P,e.south,n,nBe),Q=i.cartographicToCartesian(T,iBe),N=i.cartographicToCartesian(L,aie),k=i.cartographicToCartesian(V,oBe),v=i.cartographicToCartesian(W,cie),O=i.cartographicToCartesian(M,rBe),H=F.projectPointToNearestOnPlane(Q,sBe),ee=F.projectPointToNearestOnPlane(N,aBe),K=F.projectPointToNearestOnPlane(k,cBe),te=F.projectPointToNearestOnPlane(v,lBe),q=F.projectPointToNearestOnPlane(O,dBe);return r=Math.min(ee.x,K.x,te.x),s=-r,c=Math.max(ee.y,H.y),a=Math.min(te.y,q.y),L.height=W.height=t,N=i.cartographicToCartesian(L,aie),v=i.cartographicToCartesian(W,cie),d=Math.min(An.getPointDistance(h,N),An.getPointDistance(h,v)),u=n,rie(F.origin,F.xAxis,F.yAxis,F.zAxis,r,s,a,c,d,u,o)}let p=e.south>0,g=e.north<0,f=p?e.south:g?e.north:0,b=le.center(e,sie).longitude,x=m.fromRadians(b,f,n,i,uBe);x.z=0;let _=Math.abs(x.x)=c?on.INSIDE:on.INTERSECTING};var uie=new m,mie=new m,hie=new m,CBe=new m,lie=new m,xBe=new m;$i.distanceSquaredTo=function(e,t){let n=m.subtract(t,e.center,die),i=e.halfAxes,o=$.getColumn(i,0,uie),r=$.getColumn(i,1,mie),s=$.getColumn(i,2,hie),a=m.magnitude(o),c=m.magnitude(r),d=m.magnitude(s),u=!0,h=!0,p=!0;a>0?m.divideByScalar(o,a,o):u=!1,c>0?m.divideByScalar(r,c,r):h=!1,d>0?m.divideByScalar(s,d,s):p=!1;let g=!u+!h+!p,f,b,x;if(g===1){let S=o;f=r,b=s,h?p||(S=s,b=o):(S=r,f=o),x=m.cross(f,b,lie),S===o?o=x:S===r?r=x:S===s&&(s=x)}else if(g===2){f=o,h?f=r:p&&(f=s);let S=m.UNIT_Y;S.equalsEpsilon(f,Z.EPSILON3)&&(S=m.UNIT_X),b=m.cross(f,S,CBe),m.normalize(b,b),x=m.cross(f,b,lie),m.normalize(x,x),f===o?(r=b,s=x):f===r?(s=b,o=x):f===s&&(o=b,r=x)}else g===3&&(o=m.UNIT_X,r=m.UNIT_Y,s=m.UNIT_Z);let I=xBe;I.x=m.dot(n,o),I.y=m.dot(n,r),I.z=m.dot(n,s);let _=0,E;return I.x<-a?(E=I.x+a,_+=E*E):I.x>a&&(E=I.x-a,_+=E*E),I.y<-c?(E=I.y+c,_+=E*E):I.y>c&&(E=I.y-c,_+=E*E),I.z<-d?(E=I.z+d,_+=E*E):I.z>d&&(E=I.z-d,_+=E*E),_};var IBe=new m,_Be=new m;$i.computePlaneDistances=function(e,t,n,i){l(i)||(i=new oc);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=$.getColumn(a,0,uie),d=$.getColumn(a,1,mie),u=$.getColumn(a,2,hie),h=m.add(c,d,IBe);m.add(h,u,h),m.add(h,s,h);let p=m.subtract(h,t,_Be),g=m.dot(n,p);return o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.add(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.subtract(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.subtract(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.add(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.add(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.subtract(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.subtract(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var EBe=new m,TBe=new m,SBe=new m;$i.computeCorners=function(e,t){l(t)||(t=[new m,new m,new m,new m,new m,new m,new m,new m]);let n=e.center,i=e.halfAxes,o=$.getColumn(i,0,EBe),r=$.getColumn(i,1,TBe),s=$.getColumn(i,2,SBe);return m.clone(n,t[0]),m.subtract(t[0],o,t[0]),m.subtract(t[0],r,t[0]),m.subtract(t[0],s,t[0]),m.clone(n,t[1]),m.subtract(t[1],o,t[1]),m.subtract(t[1],r,t[1]),m.add(t[1],s,t[1]),m.clone(n,t[2]),m.subtract(t[2],o,t[2]),m.add(t[2],r,t[2]),m.subtract(t[2],s,t[2]),m.clone(n,t[3]),m.subtract(t[3],o,t[3]),m.add(t[3],r,t[3]),m.add(t[3],s,t[3]),m.clone(n,t[4]),m.add(t[4],o,t[4]),m.subtract(t[4],r,t[4]),m.subtract(t[4],s,t[4]),m.clone(n,t[5]),m.add(t[5],o,t[5]),m.subtract(t[5],r,t[5]),m.add(t[5],s,t[5]),m.clone(n,t[6]),m.add(t[6],o,t[6]),m.add(t[6],r,t[6]),m.subtract(t[6],s,t[6]),m.clone(n,t[7]),m.add(t[7],o,t[7]),m.add(t[7],r,t[7]),m.add(t[7],s,t[7]),t};var LBe=new $;$i.computeTransformation=function(e,t){l(t)||(t=new X);let n=e.center,i=$.multiplyByUniformScale(e.halfAxes,2,LBe);return X.fromRotationTranslation(i,n,t)};var RBe=new ue;$i.isOccluded=function(e,t){let n=ue.fromOrientedBoundingBox(e,RBe);return!t.isBoundingSphereVisible(n)};$i.prototype.intersectPlane=function(e){return $i.intersectPlane(this,e)};$i.prototype.distanceSquaredTo=function(e){return $i.distanceSquaredTo(this,e)};$i.prototype.computePlaneDistances=function(e,t,n){return $i.computePlaneDistances(this,e,t,n)};$i.prototype.computeCorners=function(e){return $i.computeCorners(this,e)};$i.prototype.computeTransformation=function(e){return $i.computeTransformation(this,e)};$i.prototype.isOccluded=function(e){return $i.isOccluded(this,e)};$i.equals=function(e,t){return e===t||l(e)&&l(t)&&m.equals(e.center,t.center)&&$.equals(e.halfAxes,t.halfAxes)};$i.prototype.clone=function(e){return $i.clone(this,e)};$i.prototype.equals=function(e){return $i.equals(this,e)};var vn=$i;var T5t=y(C(),1);var ED={};ED.getHeight=function(e,t,n){return(e-n)*t+n};var VBe=new ge;ED.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,VBe);if(!l(r))return m.clone(e,o);let s=ED.getHeight(r.height,n,i);return m.fromRadians(r.longitude,r.latitude,s,t,o)};var Mr=ED;var a8t=y(C(),1);var G5t=y(C(),1);var vr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function rR(e){e=e??Y.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??We.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Vc(e,t){return(e._flags&t)===t}function _b(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(rR.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Vc(this,vr.CULL)},set:function(e){Vc(this,vr.CULL)!==e&&(_b(this,vr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Vc(this,vr.OCCLUDE)},set:function(e){Vc(this,vr.OCCLUDE)!==e&&(_b(this,vr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Vc(this,vr.CAST_SHADOWS)},set:function(e){Vc(this,vr.CAST_SHADOWS)!==e&&(_b(this,vr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Vc(this,vr.RECEIVE_SHADOWS)},set:function(e){Vc(this,vr.RECEIVE_SHADOWS)!==e&&(_b(this,vr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Vc(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Vc(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(_b(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Vc(this,vr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Vc(this,vr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(_b(this,vr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Vc(this,vr.PICK_ONLY)},set:function(e){Vc(this,vr.PICK_ONLY)!==e&&(_b(this,vr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Vc(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Vc(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(_b(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});rR.shallowClone=function(e,t){if(l(e))return l(t)||(t=new rR),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};rR.prototype.execute=function(e,t){e.draw(this,t)};var ot=rR;var B5t=y(C(),1),GBe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Ge=Object.freeze(GBe);var Y5t=y(C(),1);var W5t=y(C(),1);var TD={CLOCKWISE:ne.CW,COUNTER_CLOCKWISE:ne.CCW};TD.validate=function(e){return e===TD.CLOCKWISE||e===TD.COUNTER_CLOCKWISE};var ws=Object.freeze(TD);var P5t=y(C(),1);function fie(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i0&&console.log(`${Ff}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${Ff}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${Ff}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let d,u=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${Ff}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),d=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${Ff}Vertex shader compile log: ${c}`),console.error(`${Ff} Vertex shader source: +${n}`),d=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${Ff}Fragment shader compile log: ${c}`),console.error(`${Ff} Fragment shader source: +${i}`),d=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new de(d);function h(p,g){if(!l(u))return;let f=u.getTranslatedShaderSource(p);if(f===""){console.error(`${Ff}${g} shader translation failed.`);return}console.error(`${Ff}Translated ${g} shaderSource: +${f}`)}}function YBe(e,t,n){let i={};for(let o=0;o=0){if(u=n[d.slice(0,f)],!l(u))continue;h=u._locations,h.length<=1&&(p=u.value,g=e.getUniformLocation(t,d),g!==null&&(h.push(g),p.push(e.getUniform(t,g))))}else{h=[];for(let b=0;b abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var G3t=y(C(),1),WV=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var B3t=y(C(),1),FV=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var X3t=y(C(),1),PV=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var F3t=y(C(),1),MV=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var M3t=y(C(),1),vV=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var N3t=y(C(),1),NV=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var Q3t=y(C(),1),DV=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var k3t=y(C(),1),QV=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var O3t=y(C(),1),UV=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var z3t=y(C(),1),kV=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var J3t=y(C(),1),YV=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} true if the time interval is empty; otherwise, false. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var q3t=y(C(),1),OV=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} true if the time interval is empty; otherwise, false. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var eOt=y(C(),1),HV=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var nOt=y(C(),1),zV=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var oOt=y(C(),1),KV=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var sOt=y(C(),1),JV=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var cOt=y(C(),1),jV=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var dOt=y(C(),1),qV=`/** + * Computes the size of a pixel in meters at a distance from the eye. + *

+ * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + *

+ * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + *

+ * Use this version when scaling by pixel ratio. + *

+ * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var mOt=y(C(),1),$V=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of near = 0 and far = 1. + *

+ * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + *

+ * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var fOt=y(C(),1),eG=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var AOt=y(C(),1),tG=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var bOt=y(C(),1),nG=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var COt=y(C(),1),iG=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var IOt=y(C(),1),oG=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + *

+ * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + *

+ * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var EOt=y(C(),1),rG=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var SOt=y(C(),1),sG=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var ROt=y(C(),1),aG=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var GOt=y(C(),1),cG=`/** + * Computes the point along a ray at the given time. time can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var BOt=y(C(),1),lG=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var XOt=y(C(),1),dG=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var FOt=y(C(),1),uG=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var MOt=y(C(),1),mG=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var NOt=y(C(),1),hG=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var QOt=y(C(),1),fG=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var kOt=y(C(),1),pG=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var OOt=y(C(),1),AG=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var zOt=y(C(),1),gG=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var JOt=y(C(),1),bG=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function sign except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var qOt=y(C(),1),yG=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + *

+ * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + *

+ * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var eHt=y(C(),1),CG=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var nHt=y(C(),1),xG=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var oHt=y(C(),1),IG=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var sHt=y(C(),1),_G=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var cHt=y(C(),1),EG=`/** + * Translates a position (or any vec3) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate high and low bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + *

+ * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + *

+ * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var dHt=y(C(),1),TG=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var mHt=y(C(),1),SG=`/** + * Returns the transpose of the matrix. The input matrix can be + * a mat2, mat3, or mat4. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var fHt=y(C(),1),LG=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var AHt=y(C(),1),RG=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var bHt=y(C(),1),VG=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var CHt=y(C(),1),GG=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + *

+ * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + *

+ * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var IHt=y(C(),1),ZG=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var EHt=y(C(),1),BG=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + *

+ * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + *

+ * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var SHt=y(C(),1),wG=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of czm_viewportTransformation. The transformation from + * normalized device coordinates to clip coordinates is done using fragmentCoordinate.w, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var RHt=y(C(),1),XG=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var GHt=y(C(),1),WG=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + *

+ * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + *

+ * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + *

+ * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + *

+ * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var BHt=y(C(),1),FG=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var iC={czm_degreesPerRadian:cR,czm_depthRange:lR,czm_epsilon1:dR,czm_epsilon2:uR,czm_epsilon3:mR,czm_epsilon4:hR,czm_epsilon5:fR,czm_epsilon6:pR,czm_epsilon7:AR,czm_infinity:gR,czm_oneOverPi:bR,czm_oneOverTwoPi:yR,czm_passCesium3DTile:CR,czm_passCesium3DTileClassification:xR,czm_passCesium3DTileClassificationIgnoreShow:IR,czm_passClassification:_R,czm_passCompute:ER,czm_passEnvironment:TR,czm_passGaussianSplats:SR,czm_passGlobe:LR,czm_passOpaque:RR,czm_passOverlay:VR,czm_passTerrainClassification:GR,czm_passTranslucent:ZR,czm_passVoxels:BR,czm_pi:wR,czm_piOverFour:XR,czm_piOverSix:WR,czm_piOverThree:FR,czm_piOverTwo:PR,czm_radiansPerDegree:MR,czm_sceneMode2D:vR,czm_sceneMode3D:NR,czm_sceneModeColumbusView:DR,czm_sceneModeMorphing:QR,czm_solarRadius:UR,czm_threePiOver2:kR,czm_twoPi:YR,czm_webMercatorMaxLatitude:OR,czm_depthRangeStruct:HR,czm_material:zR,czm_materialInput:KR,czm_modelMaterial:JR,czm_modelVertexOutput:jR,czm_ray:qR,czm_raySegment:$R,czm_shadowParameters:eV,czm_HSBToRGB:tV,czm_HSLToRGB:nV,czm_RGBToHSB:iV,czm_RGBToHSL:oV,czm_RGBToXYZ:rV,czm_XYZToRGB:sV,czm_acesTonemapping:aV,czm_alphaWeight:cV,czm_antialias:lV,czm_applyHSBShift:dV,czm_approximateSphericalCoordinates:uV,czm_approximateTanh:mV,czm_backFacing:hV,czm_branchFreeTernary:fV,czm_cascadeColor:pV,czm_cascadeDistance:AV,czm_cascadeMatrix:gV,czm_cascadeWeights:bV,czm_clipPolygons:yV,czm_columbusViewMorph:CV,czm_computeAtmosphereColor:xV,czm_computeGroundAtmosphereScattering:IV,czm_computePosition:_V,czm_computeScattering:EV,czm_cosineAndSine:TV,czm_decompressTextureCoordinates:SV,czm_depthClamp:LV,czm_eastNorthUpToEyeCoordinates:RV,czm_ellipsoidContainsPoint:VV,czm_ellipsoidTextureCoordinates:GV,czm_equalsEpsilon:ZV,czm_eyeOffset:BV,czm_eyeToWindowCoordinates:wV,czm_fastApproximateAtan:XV,czm_fog:WV,czm_gammaCorrect:FV,czm_geodeticSurfaceNormal:PV,czm_getDefaultMaterial:MV,czm_getDynamicAtmosphereLightDirection:vV,czm_getLambertDiffuse:NV,czm_getSpecular:DV,czm_getWaterNoise:QV,czm_hue:UV,czm_inverseGamma:kV,czm_isEmpty:YV,czm_isFull:OV,czm_latitudeToWebMercatorFraction:HV,czm_lineDistance:zV,czm_linearToSrgb:KV,czm_luminance:JV,czm_maximumComponent:jV,czm_metersPerPixel:qV,czm_modelToWindowCoordinates:$V,czm_multiplyWithColorBalance:eG,czm_nearFarScalar:tG,czm_octDecode:nG,czm_packDepth:iG,czm_pbrLighting:oG,czm_pbrNeutralTonemapping:rG,czm_phong:sG,czm_planeDistance:aG,czm_pointAlongRay:cG,czm_rayEllipsoidIntersectionInterval:lG,czm_raySphereIntersectionInterval:dG,czm_readDepth:uG,czm_readNonPerspective:mG,czm_reverseLogDepth:hG,czm_round:fG,czm_saturation:pG,czm_shadowDepthCompare:AG,czm_shadowVisibility:gG,czm_signNotZero:bG,czm_sphericalHarmonics:yG,czm_srgbToLinear:CG,czm_tangentToEyeSpaceMatrix:xG,czm_textureCube:IG,czm_transformPlane:_G,czm_translateRelativeToEye:EG,czm_translucentPhong:TG,czm_transpose:SG,czm_unpackClippingExtents:LG,czm_unpackDepth:RG,czm_unpackFloat:VG,czm_unpackUint:GG,czm_valueTransform:ZG,czm_vertexLogDepth:BG,czm_windowToEyeCoordinates:wG,czm_writeDepthClamp:XG,czm_writeLogDepth:WG,czm_writeNonPerspective:FG};var uJt=y(C(),1);function KBe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var PG=KBe;function $ie(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function noe(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var IJt=y(C(),1),Eb=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var EJt=y(C(),1),roe={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};roe.NUMBER_OF_CLASSIFICATION_TYPES=3;var $n=Object.freeze(roe);var LJt=y(C(),1);var twe={NEVER:ne.NEVER,LESS:ne.LESS,EQUAL:ne.EQUAL,LESS_OR_EQUAL:ne.LEQUAL,GREATER:ne.GREATER,NOT_EQUAL:ne.NOTEQUAL,GREATER_OR_EQUAL:ne.GEQUAL,ALWAYS:ne.ALWAYS},Fa=Object.freeze(twe);var ojt=y(C(),1);var VJt=y(C(),1);function nwe(e,t){let n=[],i=e.length,o=0;for(;oJl.MaximumLatitude?e=Jl.MaximumLatitude:e<-Jl.MaximumLatitude&&(e=-Jl.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};Jl.MaximumLatitude=Jl.mercatorAngleToGeodeticLatitude(Math.PI);Jl.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=Jl.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new m(i,o,r)};Jl.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=Jl.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new ge(i,o,r)};var Ui=Jl;function Awe(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r=0){let d=i[a];o=d.offset+d.count,s=d.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let d=0;dr&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:p}),o+=p}}function ywe(e,t){let n=[];return mH(e,"geometry",t,n),mH(e,"westHemisphereGeometry",t,n),mH(e,"eastHemisphereGeometry",t,n),n}var oA={};oA.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=bwe(e),t.length>0&&(n=Yn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=ywe(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),d=new Array(o);for(let u=0;u0&&(n.set(c.indices,s),s+=f)}return t.push(n.buffer),{stringTable:i,packedData:n}};oA.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s0){let R=x.length/I;for(S=Me.createTypedArray(R,b),i=0;i= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function moe(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",d=`in ${a} ${c};`,u="",h="";if(i){u+=`vec2 st; +`;let f=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${f}); +`}n&&o&&r?(u+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(u+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(u+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(u+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let p=t;p=p.replace(/in\s+vec3\s+normal;/g,""),p=p.replace(/in\s+vec2\s+st;/g,""),p=p.replace(/in\s+vec3\s+tangent;/g,""),p=p.replace(/in\s+vec3\s+bitangent;/g,""),p=Oe.replaceMain(p,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[d,u,p,g].join(` +`)}function Xwe(e){let t=Oe.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function Wwe(e){let t=Oe.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function hoe(e,t){let n=e.vertexAttributes}function Fwe(e,t){return function(){return e[t]}}var hH=Math.max(Ht.hardwareConcurrency-1,1),VD,Pwe=new hi("combineGeometry");function Mwe(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===Nr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],d=[];for(o=0;o0){let b=new Float64Array(h);for(f=[b.buffer],r=0;r0?(e._recomputeBoundingSpheres=!0,e._state=Nr.COMBINED):QG(e,t,Nr.FAILED,void 0)}).catch(function(h){QG(e,t,Nr.FAILED,h)})}}function vwe(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a0?(e._recomputeBoundingSpheres=!0,e._state=Nr.COMBINED):QG(e,t,Nr.FAILED,void 0)}function Nwe(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i0||ue.intersectPlane(b,An.ORIGIN_ZX_PLANE)!==on.INTERSECTING?c.push(b):(d.push(b),u.push(b))}let h=c[0],p=u[0],g=d[0];for(i=1;i0){if(Kt.maximumVertexTextureImageUnits===0)throw new de("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==Nr.COMPLETE&&this._state!==Nr.COMBINED&&(this.asynchronous?Mwe(this,e):vwe(this,e)),this._state===Nr.COMBINED&&(Dwe(this,e),poe(this,e),Uwe(this,e)),!this.show||this._state!==Nr.COMPLETE)return;this._batchTableOffsetsUpdated||poe(this,e),this._recomputeBoundingSpheres&&Nwe(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let d=n.closed&&c;o&&(this._createRenderStatesFunction??kwe)(this,t,n,d),r&&(this._createShaderProgramFunction??Ywe)(this,e,n),(o||r)&&(this._createCommandsFunction??Owe)(this,n,i,c,d,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??Hwe)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,d)};var zwe=new ue,Kwe=new ue;function _oe(e,t,n){if(n===pn.TOP){let i=ue.clone(e,zwe),o=ue.clone(e,Kwe);o.center=m.add(o.center,t,o.center),e=ue.union(i,o,e)}else n===pn.ALL&&(e.center=m.add(e.center,t,e.center));return e}function Jwe(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=J.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function jwe(e,t,n,i,o){return function(r){let s=yoe(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var qwe=new m;function $we(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&_oe(i,m.fromArray(r.get(),0,qwe),e._offsetInstanceExtend[n]),l(o)&&(i=ue.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function eXe(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}Dr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let d=0;d 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function Hu(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new pH;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new pH;if(o.requiresTextureCoordinates=e,n instanceof yn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}Hu.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof yn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof yn||(o=t.material.shaderSource),new Oe({defines:i,sources:[o,j_]})};Hu.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new Oe({defines:n,sources:[j_],pickColorQualifier:"in"})};Hu.prototype.createVertexShader=function(e,t,n,i){return Zoe(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};Hu.prototype.createPickVertexShader=function(e,t,n,i){return Zoe(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var Eoe=new m,Toe=new ge,Soe={high:0,low:0};function Zoe(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let d=Toe;d.longitude=Z.PI,d.latitude=0,d.height=0;let u=s.project(d,Eoe),h=ni.encode(u.x,Soe);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let p=Toe;p.longitude=-Z.PI,p.latitude=0,p.height=0;let g=s.project(p,Eoe);h=ni.encode(g.x,Soe),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof yn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new Oe({defines:c,sources:[o]})}function pH(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(pH.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function Loe(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/D.distance(t,e)}var nXe=[new D,new D,new D,new D];function Boe(e,t){let n=nXe,i=D.unpack(t,0,n[0]),o=D.unpack(t,2,n[1]),r=D.unpack(t,4,n[2]);e.uMaxVmax=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/Loe(i,o,r),a=1/Loe(i,r,o);e.uvMinAndExtents=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var woe=new ge,Xoe=new m,iXe=new m,oXe=new m,GD={high:0,low:0};function Woe(e,t,n){let i=woe;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,Xoe);i.latitude=e.north;let r=t.project(i,iXe);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,oXe),a=[0,0,0,0],c=[0,0,0,0],d=ni.encode(o.x,GD);a[0]=d.high,c[0]=d.low,d=ni.encode(o.y,GD),a[1]=d.high,c[1]=d.low,d=ni.encode(r.y,GD),a[2]=d.high,c[2]=d.low,d=ni.encode(s.x,GD),a[3]=d.high,c[3]=d.low,n.planes2D_HIGH=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var rXe=new X,sXe=new X,Roe=new m,aXe=new ge,cXe=[new ge,new ge,new ge,new ge,new ge,new ge,new ge,new ge];function lXe(e,t,n,i,o,r){let s=le.center(e,aXe);s.height=n;let a=ge.toCartesian(s,t,Roe),c=Dt.eastNorthUpToFixedFrame(a,t,rXe),d=X.inverse(c,sXe),u=e.west,h=e.east,p=e.north,g=e.south,f=cXe;f[0].latitude=g,f[0].longitude=u,f[1].latitude=p,f[1].longitude=u,f[2].latitude=p,f[2].longitude=h,f[3].latitude=g,f[3].longitude=h;let b=(u+h)*.5,x=(p+g)*.5;f[4].latitude=g,f[4].longitude=b,f[5].latitude=p,f[5].longitude=b,f[6].latitude=x,f[6].longitude=u,f[7].latitude=x,f[7].longitude=h;let I=Number.POSITIVE_INFINITY,_=Number.NEGATIVE_INFINITY,E=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY;for(let w=0;w<8;w++){f[w].height=n;let F=ge.toCartesian(f[w],t,Roe);X.multiplyByPoint(d,F,F),F.z=0,I=Math.min(I,F.x),_=Math.max(_,F.x),E=Math.min(E,F.y),S=Math.max(S,F.y)}let R=i;R.x=I,R.y=E,R.z=0,X.multiplyByPoint(c,R,R);let G=o;G.x=_,G.y=E,G.z=0,X.multiplyByPoint(c,G,G),m.subtract(G,R,o);let B=r;B.x=I,B.y=S,B.z=0,X.multiplyByPoint(c,B,B),m.subtract(B,R,r)}var dXe=new m,uXe=new m,mXe=new ni;Hu.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=Xoe,s=dXe,a=uXe;lXe(e,n,o??0,r,s,a);let c={};Boe(c,t);let d=ni.fromCartesian(r,mXe);return c.southWest_HIGH=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(d.high,[0,0,0])}),c.southWest_LOW=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(d.low,[0,0,0])}),c.eastward=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(s,[0,0,0])}),c.northward=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(a,[0,0,0])}),Woe(e,i,c),c};var hXe=new m;function Voe(e,t,n,i){let o=woe;o.latitude=e,o.longitude=t,o.height=0;let r=ge.toCartesian(o,n,hXe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=Z.fastApproximateAtan2(s,r.z),c=Z.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var Goe=new D;Hu.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=Voe(e.south,e.west,n,Goe),r=o.x,s=o.y,a=Voe(e.north,e.east,n,Goe),c=a.x,d=a.y,u=0;s>d&&(u=Z.PI-s,s=-Z.PI,d+=u),r-=Z.EPSILON5,s-=Z.EPSILON5,c+=Z.EPSILON5,d+=Z.EPSILON5;let h=1/(d-s),p=1/(c-r),g={sphericalExtents:new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,p,h]}),longitudeRotation:new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:1,normalize:!1,value:[u]})};return Boe(g,t),Woe(e,i,g),g};Hu.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};Hu.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function fXe(e){return Math.max(e.width,e.height)>Hu.MAX_WIDTH_FOR_PLANAR_EXTENTS}Hu.shouldUseSphericalCoordinates=function(e){return fXe(e)};Hu.MAX_WIDTH_FOR_PLANAR_EXTENTS=Z.toRadians(1);var Pd=Hu;var Wjt=y(C(),1);var Rjt=y(C(),1);var pXe={NEVER:ne.NEVER,LESS:ne.LESS,EQUAL:ne.EQUAL,LESS_OR_EQUAL:ne.LEQUAL,GREATER:ne.GREATER,NOT_EQUAL:ne.NOTEQUAL,GREATER_OR_EQUAL:ne.GEQUAL,ALWAYS:ne.ALWAYS},ei=Object.freeze(pXe);var Zjt=y(C(),1);var AXe={ZERO:ne.ZERO,KEEP:ne.KEEP,REPLACE:ne.REPLACE,INCREMENT:ne.INCR,DECREMENT:ne.DECR,INVERT:ne.INVERT,INCREMENT_WRAP:ne.INCR_WRAP,DECREMENT_WRAP:ne.DECR_WRAP},Ct=Object.freeze(AXe);var ZD={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};ZD.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:ei.ALWAYS,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.REPLACE},backFunction:ei.ALWAYS,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.REPLACE},reference:ZD.CESIUM_3D_TILE_MASK,mask:ZD.CESIUM_3D_TILE_MASK}};var jt=Object.freeze(ZD);function sC(e){e=e??Y.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??$n.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(sC.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});sC.isSupported=function(e){return e.context.stencilBuffer};function q_(e,t){let n=t?ei.EQUAL:ei.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:Ct.KEEP,zFail:Ct.DECREMENT_WRAP,zPass:Ct.KEEP},backFunction:n,backOperation:{fail:Ct.KEEP,zFail:Ct.INCREMENT_WRAP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},depthMask:!1}}function gH(e){return{stencilTest:{enabled:e,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND}}var gXe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function bXe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Qe.fromCache(q_(o,!1)),e._rsStencilDepthPass3DTiles=Qe.fromCache(q_(o,!0)),e._rsColorPass=Qe.fromCache(gH(o,!1)),e._rsPickPass=Qe.fromCache(gXe)}function yXe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=Oe.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function CXe(e,t){let n=t.context,i=e._primitive,o=MG;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=Nn._appendDistanceDisplayConditionToShader(i,o),o=Nn._modifyShaderPosition(e,o,t.scene3DOnly),o=Nn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=yXe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new Oe({defines:[a],sources:[o]}),d=new Oe({sources:[Eb]}),u=e._primitive._attributeLocations,h=new Pd(s,r,e.appearance);if(e._spStencil=ln.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u}),e._primitive.allowPicking){let f=Oe.createPickVertexShaderSource(o);f=Nn._appendShowToShader(i,f),f=Nn._updatePickColorAttribute(f);let b=h.createPickFragmentShader(!1),x=h.createPickVertexShader([a],f,!1,t.mapProjection);if(e._spPick=ln.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:x,fragmentShaderSource:b,attributeLocations:u}),s){let I=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(I)){let _=h.createPickFragmentShader(!0),E=h.createPickVertexShader([a],f,!0,t.mapProjection);I=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:E,fragmentShaderSource:_,attributeLocations:u})}e._spPick2D=I}}else e._spPick=ln.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u});o=Nn._appendShowToShader(i,o),c=new Oe({defines:[a],sources:[o]}),e._sp=ln.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u});let p=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=ln.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:p,attributeLocations:u}),s){let f=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(f)){let b=h.createFragmentShader(!0),x=h.createVertexShader([a],o,!0,t.mapProjection);f=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:x,fragmentShaderSource:b,attributeLocations:u})}e._spColor2D=f}}function xXe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),d=e._needs2DShader;for(o=0;o0&&(c=o[0].attributes,p=Pd.hasAttributesForSphericalExtents(c),g=Pd.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};sC.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};sC.prototype.isDestroyed=function(){return!1};sC.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,me(this)};var $_=sC;var TXe={u_globeMinimumAltitude:function(){return 55e3}};function jl(e){e=e??Y.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};jl.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};jl.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};jl.prototype.isDestroyed=function(){return!1};jl.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};jl._supportsMaterials=function(e){return e.depthTexture};jl.supportsMaterials=function(e){return jl._supportsMaterials(e.frameState.context)};var cl=jl;var B8t=y(C(),1);function eE(){Ae.throwInstantiationError()}Object.defineProperties(eE.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError}});eE.prototype.getType=Ae.throwInstantiationError;eE.prototype.getValue=Ae.throwInstantiationError;eE.prototype.equals=Ae.throwInstantiationError;var XXe=new j;eE.getValue=function(e,t,n){let i;return l(e)||(e=j.now(XXe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=so.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==so.ColorType)&&(n=so.fromType(so.ColorType)),U.clone(U.WHITE,n.uniforms.color),n)};var dr=eE;function aC(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}aC.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!z.getValueOrDefault(t.show,n,!0)};aC.prototype._setOptions=Ae.throwInstantiationError;aC.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let d=t.fillMaterialProperty,u=d instanceof qt,h,p=t._getIsClosed(c);if(u)h=new yn({closed:p,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=dr.getValue(e,d,this._material);this._material=g,h=new Io({material:g,translucent:g.isTranslucent(),closed:p})}if(n)c.vertexFormat=yn.VERTEX_FORMAT,this._primitive=o.add(new cl({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),z.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);u&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new Nn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let d=this._geometryUpdater.createOutlineGeometryInstance(e),u=z.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new Nn({geometryInstances:d,appearance:new yn({flat:!0,translucent:d.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(u)}}),asynchronous:!1,shadows:a}))}};aC.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ue.clone(o.boundingSphere,e),At.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ue.clone(o.boundingSphere,e),At.DONE):l(n)&&!n.ready||l(i)&&!i.ready?At.PENDING:At.FAILED};aC.prototype.isDestroyed=function(){return!1};aC.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),me(this)};var yi=aC;var fnn=y(C(),1);var K8t=y(C(),1);var Doe={};function UG(e,t){l(Doe[e])||(Doe[e]=!0,console.warn(t??e))}UG.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";UG.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";UG.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";UG.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var xt=UG;var qtn=y(C(),1);var j8t=y(C(),1),WXe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},rA=Object.freeze(WXe);var eqt=y(C(),1);var Q7t=y(C(),1);var $8t=y(C(),1),FXe={NONE:0,GEODESIC:1,RHUMB:2},dn=Object.freeze(FXe);var i7t=y(C(),1);var Qoe=Z.EPSILON10;function PXe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,d,u=0,h=-1;for(s=1;sZ.EPSILON12);let T=P*(t*t-n*n)/(n*n),L=1+T*(4096+T*(T*(320-175*T)-768))/16384,V=T*(256+T*(T*(74-47*T)-128))/1024,W=A*A,M=V*F*(A+V*(w*(2*W-1)-V*A*(4*F*F-3)*(4*W-3)/6)/4),Q=n*L*(B-M),N=Math.atan2(g*G,x-_*R),k=Math.atan2(h*G,x*R-_);e._distance=Q,e._startHeading=N,e._endHeading=k,e._uSquared=T}var DXe=new m,CH=new m;function koe(e,t,n,i){let o=m.normalize(i.cartographicToCartesian(t,CH),DXe),r=m.normalize(i.cartographicToCartesian(n,CH),CH);NXe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=ge.clone(t,e._start),e._end=ge.clone(n,e._end),e._start.height=0,e._end.height=0,MXe(e)}function kG(e,t,n){let i=n??ie.default;this._ellipsoid=i,this._start=new ge,this._end=new ge,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&koe(this,e,t,i)}Object.defineProperties(kG.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});kG.prototype.setEndPoints=function(e,t){koe(this,e,t,this._ellipsoid)};kG.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};kG.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),d=Math.sin(6*i),u=Math.sin(8*i),h=i*i,p=i*h,g=n.u8Over256,f=n.u2Over4,b=n.u6Over64,x=n.u4Over16,I=2*p*g*o/3+i*(1-f+7*x/4-15*b/4+579*g/64-(x-15*b/4+187*g/16)*o-(5*b/4-115*g/16)*r-29*g*s/16)+(f/2-x+71*b/32-85*g/16)*a+(5*x/16-5*b/4+383*g/96)*c-h*((b-11*g/2)*a+5*g*c/2)+(29*b/96-29*g/16)*d+539*g*u/1536,_=Math.asin(Math.sin(I)*n.cosineAlpha),E=Math.atan(n.a/n.b*Math.tan(_));I=I-n.sigma;let S=Math.cos(2*n.sigma+I),R=Math.sin(I),G=Math.cos(I),B=n.cosineU*G,w=n.sineU*R,P=Math.atan2(R*n.sineHeading,B-w*n.cosineHeading)-Uoe(n.f,n.sineAlpha,n.cosineSquaredAlpha,I,R,G,S);return l(t)?(t.longitude=this._start.longitude+P,t.latitude=E,t.height=0,t):new ge(this._start.longitude+P,E,0)};var sA=kG;var g7t=y(C(),1);function IH(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,d=n,u=Math.sin(2*d),h=Math.sin(4*d),p=Math.sin(6*d),g=Math.sin(8*d),f=Math.sin(10*d),b=Math.sin(12*d);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*d-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*u+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*p+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*f+1001*c/8388608*b)}function QXe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,d=c*c,u=d*c,h=u*c,p=h*c,g=p*c,f=Math.sin(2*i),b=Math.cos(2*i),x=Math.sin(4*i),I=Math.cos(4*i),_=Math.sin(6*i),E=Math.cos(6*i),S=Math.sin(8*i),R=Math.cos(8*i),G=Math.sin(10*i),B=Math.cos(10*i),w=Math.sin(12*i);return i+i*c/4+7*i*d/64+15*i*u/256+579*i*h/16384+1515*i*p/65536+16837*i*g/1048576+(3*i*d/16+45*i*u/256-i*(32*o-561)*h/4096-i*(232*o-1677)*p/16384+i*(399985-90560*o+512*s)*g/5242880)*b+(21*i*u/256+483*i*h/4096-i*(224*o-1969)*p/16384-i*(33152*o-112599)*g/1048576)*I+(151*i*h/4096+4681*i*p/65536+1479*i*g/16384-453*r*g/32768)*E+(1097*i*p/65536+42783*i*g/1048576)*R+8011*i*g/1048576*B+(3*c/8+3*d/16+213*u/2048-3*o*u/64+255*h/4096-33*o*h/512+20861*p/524288-33*o*p/512+s*p/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*f+(21*d/256+21*u/256+533*h/8192-21*o*h/512+197*p/4096-315*o*p/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*x+(151*u/6144+151*h/4096+5019*p/131072-453*o*p/16384+26965*g/786432-8607*o*g/131072)*_+(1097*h/131072+1097*p/65536+225797*g/10485760-1097*o*g/65536)*S+(8011*p/2621440+8011*g/1048576)*G+293393*g/251658240*w}function tE(e,t){if(e===0)return Math.log(Math.tan(.5*(Z.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(Z.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function UXe(e,t,n,i,o){let r=tE(e._ellipticity,n),s=tE(e._ellipticity,o);return Math.atan2(Z.negativePiToPi(i-t),s-r)}function kXe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,d=0;if(Z.equalsEpsilon(Math.abs(a),Z.PI_OVER_TWO,Z.EPSILON8))if(t===n)d=t*Math.cos(o)*Z.negativePiToPi(c);else{let u=Math.sin(o);d=t*Math.cos(o)*Z.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*u*u)}else{let u=IH(e._ellipticity,t,o);d=(IH(e._ellipticity,t,s)-u)/Math.cos(a)}return Math.abs(d)}var YXe=new m,xH=new m;function Yoe(e,t,n,i){let o=m.normalize(i.cartographicToCartesian(t,xH),YXe),r=m.normalize(i.cartographicToCartesian(n,xH),xH),s=i.maximumRadius,a=i.minimumRadius,c=s*s,d=a*a;e._ellipticitySquared=(c-d)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=ge.clone(t,e._start),e._start.height=0,e._end=ge.clone(n,e._end),e._end.height=0,e._heading=UXe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=kXe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function Ooe(e,t,n,i,o,r){if(n===0)return ge.clone(e,r);let s=o*o,a,c,d;if(Math.abs(Z.PI_OVER_TWO-Math.abs(t))>Z.EPSILON8){let u=IH(o,i,e.latitude),h=n*Math.cos(t),p=u+h;if(c=QXe(p,o,i),Math.abs(t)0?a=Z.negativePiToPi(e.longitude+d):a=Z.negativePiToPi(e.longitude-d)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new ge(a,c,0)}function aA(e,t,n){let i=n??ie.default;this._ellipsoid=i,this._start=new ge,this._end=new ge,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Yoe(this,e,t,i)}Object.defineProperties(aA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});aA.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??ie.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,d=a*a,u=Math.sqrt((c-d)/c);t=Z.negativePiToPi(t);let h=Ooe(e,t,n,r.maximumRadius,u);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new aA(e,h,r):(o.setEndPoints(e,h),o)};aA.prototype.setEndPoints=function(e,t){Yoe(this,e,t,this._ellipsoid)};aA.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};aA.prototype.interpolateUsingSurfaceDistance=function(e,t){return Ooe(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};aA.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=Z.negativePiToPi(e),Z.equalsEpsilon(Math.abs(e),Math.PI,Z.EPSILON14)&&(e=Z.sign(r.longitude)*Math.PI),l(t)||(t=new ge),Math.abs(Z.PI_OVER_TWO-o)<=Z.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(Z.equalsEpsilon(Math.abs(Z.PI_OVER_TWO-o),Z.PI_OVER_TWO,Z.EPSILON8))return Z.equalsEpsilon(e,r.longitude,Z.EPSILON12)?void 0:(t.longitude=e,t.latitude=Z.PI_OVER_TWO*Z.sign(Z.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(Z.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),d=(1+a)/(1-a),u=r.latitude,h;do{h=u;let p=n*Math.sin(h),g=(1+p)/(1-p);u=2*Math.atan(c*Math.pow(g/d,n/2))-Z.PI_OVER_TWO}while(!Z.equalsEpsilon(u,h,Z.EPSILON12));return t.longitude=e,t.latitude=u,t.height=0,t};aA.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(Z.equalsEpsilon(Math.abs(i),Z.PI_OVER_TWO,Z.EPSILON8))return;let r=tE(n,o.latitude),s=tE(n,e),a=Math.tan(i)*(s-r),c=Z.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new ge(c,e,0)};var cc=aA;var GH=[Di,Ui],OXe=GH.length,mre=Math.cos(Z.toRadians(30)),Hoe=Math.cos(Z.toRadians(150)),hre=0,fre=1e3;function Sb(e){e=e??Y.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??dn.GEODESIC,this._ellipsoid=ie.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Sb.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+ie.packedLength+1+1}}});Sb.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;imre||rZ.PI_OVER_TWO&&(a=!0,s=m.subtract(r,n,tre),d=c.cartesianToCartographic(s,ere)),d.height=0;let u=e.project(d,o);return o=m.subtract(u,i,o),o.z=0,o=m.normalize(o,o),a&&m.negate(o,o),o}var m2e=new m,nre=new m;function ire(e,t,n,i,o,r){let s=m.subtract(t,e,m2e);m.normalize(s,s);let a=n-hre,c=m.multiplyByScalar(s,a,nre);m.add(e,c,o);let d=i-fre;c=m.multiplyByScalar(s,d,nre),m.add(t,c,r)}var h2e=new m;function WD(e,t){let n=An.getPointDistance(FD,e),i=An.getPointDistance(FD,t),o=h2e;Z.equalsEpsilon(n,0,Z.EPSILON2)?(o=cA(t,e,o),m.multiplyByScalar(o,Z.EPSILON2,o),m.add(e,o,e)):Z.equalsEpsilon(i,0,Z.EPSILON2)&&(o=cA(e,t,o),m.multiplyByScalar(o,Z.EPSILON2,o),m.add(t,o,t))}function f2e(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(Z.equalsEpsilon(n,Z.PI,Z.EPSILON11)){let o=Z.sign(t.longitude);return e.longitude=o*(n-Z.EPSILON11),1}else if(Z.equalsEpsilon(i,Z.PI,Z.EPSILON11)){let o=Z.sign(e.longitude);return t.longitude=o*(i-Z.EPSILON11),2}return 0}var Are=new ge,gre=new ge,ore=new m,SH=new m,rre=new m,sre=new m,p2e=new m,are=new m,A2e=[Are,gre],g2e=new le,b2e=new m,y2e=new m,C2e=new m,x2e=new m,I2e=new m,_2e=new m,LH=new m,RH=new m,E2e=new m,T2e=new m,S2e=new m,cre=new m,L2e=new m,R2e=new m,V2e=new ni,G2e=new ni,lre=new m,Z2e=new m,dre=new m,B2e=[new ue,new ue],bre=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],ure=bre.length;function w2e(e,t,n,i,o,r,s){let a,c,d=t._ellipsoid,u=n.length/3-1,h=u*8,p=h*4,g=u*36,f=h>65535?new Uint32Array(g):new Uint16Array(g),b=new Float64Array(h*3),x=new Float32Array(p),I=new Float32Array(p),_=new Float32Array(p),E=new Float32Array(p),S=new Float32Array(p),R,G,B,w;s&&(R=new Float32Array(p),G=new Float32Array(p),B=new Float32Array(p),w=new Float32Array(h*2));let F=r.length/2,P=0,A=Are;A.height=0;let T=gre;T.height=0;let L=ore,V=SH;if(s)for(c=0,a=1;amre?(nn=YG(t,A,Ue,je,LH),rt=YG(t,T,te,it,RH)):Ti===1?(rt=YG(t,T,te,it,RH),nn.x=0,nn.y=Z.sign(A.longitude-Math.abs(T.longitude)),nn.z=0):(nn=YG(t,A,Ue,je,LH),rt.x=0,rt.y=Z.sign(A.longitude-T.longitude),rt.z=0)}let rn=m.distance(De,K),Jt=ni.fromCartesian(Le,V2e),Xt=m.subtract(ee,Le,E2e),Li=m.normalize(Xt,cre),bi=m.subtract(De,Le,T2e);bi=m.normalize(bi,bi);let vt=m.cross(Li,bi,cre);vt=m.normalize(vt,vt);let Rt=m.cross(bi,Ue,L2e);Rt=m.normalize(Rt,Rt);let si=m.subtract(K,ee,S2e);si=m.normalize(si,si);let _t=m.cross(te,si,R2e);_t=m.normalize(_t,_t);let Fo=rn/M,Uo=q/M,Va=0,Cr,wr,ve,ut=0,qe=0;if(s){Va=m.distance(je,it),Cr=ni.fromCartesian(je,G2e),wr=m.subtract(it,je,lre),ve=m.normalize(wr,Z2e);let Ti=ve.x;ve.x=ve.y,ve.y=-Ti,ut=Va/P,qe=pe/P}for(Q=0;Q<8;Q++){let Ti=O+Q*4,Rs=k+Q*2,Jo=Ti+3,Ga=Q<4?1:-1,po=Q===2||Q===3||Q===6||Q===7?1:-1;m.pack(Jt.high,x,Ti),x[Jo]=Xt.x,m.pack(Jt.low,I,Ti),I[Jo]=Xt.y,m.pack(Rt,_,Ti),_[Jo]=Xt.z,m.pack(_t,E,Ti),E[Jo]=Fo*Ga,m.pack(vt,S,Ti);let jo=Uo*po;jo===0&&po<0&&(jo=9),S[Jo]=jo,s&&(R[Ti]=Cr.high.x,R[Ti+1]=Cr.high.y,R[Ti+2]=Cr.low.x,R[Ti+3]=Cr.low.y,B[Ti]=-nn.y,B[Ti+1]=nn.x,B[Ti+2]=rt.y,B[Ti+3]=-rt.x,G[Ti]=wr.x,G[Ti+1]=wr.y,G[Ti+2]=ve.x,G[Ti+3]=ve.y,w[Rs]=ut*Ga,jo=qe*po,jo===0&&po<0&&(jo=9),w[Rs+1]=jo)}let nt=C2e,yt=x2e,$t=b2e,Sn=y2e,fo=le.fromCartographicArray(A2e,g2e),uo=Si.getMinimumMaximumHeights(fo,d),ra=uo.minimumTerrainHeight,sa=uo.maximumTerrainHeight;ye+=Math.abs(ra),ye+=Math.abs(sa),ire(Le,De,ra,sa,nt,$t),ire(ee,K,ra,sa,yt,Sn);let Hn=m.multiplyByScalar(vt,Z.EPSILON5,dre);m.add(nt,Hn,nt),m.add(yt,Hn,yt),m.add($t,Hn,$t),m.add(Sn,Hn,Sn),WD(nt,yt),WD($t,Sn),m.pack(nt,b,v),m.pack(yt,b,v+3),m.pack(Sn,b,v+6),m.pack($t,b,v+9),Hn=m.multiplyByScalar(vt,-2*Z.EPSILON5,dre),m.add(nt,Hn,nt),m.add(yt,Hn,yt),m.add($t,Hn,$t),m.add(Sn,Hn,Sn),WD(nt,yt),WD($t,Sn),m.pack(nt,b,v+12),m.pack(yt,b,v+15),m.pack(Sn,b,v+18),m.pack($t,b,v+21),N+=2,c+=3,k+=16,v+=24,O+=32,q+=rn,pe+=Va}c=0;let he=0;for(a=0;a halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var O7t=y(C(),1),HG=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var z7t=y(C(),1),zG=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var J7t=y(C(),1),KG=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var l6t=y(C(),1);var q7t=y(C(),1),JG=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var e6t=y(C(),1),Md=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var ZH=`${Md} +${JG}`,X2e=tC;Ht.isInternetExplorer()||(ZH=`#define CLIP_POLYLINE +${ZH}`);function lC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=lC.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??ZH,this._fragmentShaderSource=e.fragmentShaderSource??X2e,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(lC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});lC.VERTEX_FORMAT=we.POSITION_ONLY;lC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;lC.prototype.isTranslucent=go.prototype.isTranslucent;lC.prototype.getRenderState=go.prototype.getRenderState;var bs=lC;var E6t=y(C(),1);var u6t=y(C(),1),jG=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var h6t=y(C(),1),dC=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var BH=`${Md} +${jG}`,W2e=dC;Ht.isInternetExplorer()||(BH=`#define CLIP_POLYLINE +${BH}`);function uC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=uC.VERTEX_FORMAT;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??BH,this._fragmentShaderSource=e.fragmentShaderSource??W2e,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(uC.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});uC.VERTEX_FORMAT=we.POSITION_AND_ST;uC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;uC.prototype.isTranslucent=go.prototype.isTranslucent;uC.prototype.getRenderState=go.prototype.getRenderState;var Pa=uC;function lA(e){e=e??Y.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new Pa),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??$n.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=yre(!1),this._renderState3DTiles=yre(!0),this._renderStateMorph=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},depthTest:{enabled:!0},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(lA.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});lA.initializeTerrainHeights=function(){return Si.initialize()};function F2e(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(KG);s=Nn._appendShowToShader(o,s),s=Nn._appendDistanceDisplayConditionToShader(o,s),s=Nn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(zG);a=Nn._appendShowToShader(o,a),a=Nn._appendDistanceDisplayConditionToShader(o,a),a=Nn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(OG),d=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],u="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&d.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&d.push("WIDTH_VARYING")):u="PER_INSTANCE_COLOR",d.push(u);let p=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",u]:[u],g=new Oe({defines:d,sources:[s]}),f=new Oe({defines:p,sources:[h,c]});e._sp=ln.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:f,attributeLocations:r});let b=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(b)){let I=new Oe({defines:d.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});b=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:I,fragmentShaderSource:f,attributeLocations:r})}e._sp2D=b;let x=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(x)){let I=new Oe({defines:d.concat([`MAX_TERRAIN_HEIGHT ${Si._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()(HG);let _=new Oe({defines:p,sources:[h,c]});x=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:I,fragmentShaderSource:_,attributeLocations:r})}e._spMorph=x}function yre(e){return Qe.fromCache({cull:{enabled:!0},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.EQUAL,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})}function P2e(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let d=t instanceof bs?{}:n._uniforms,u=s._batchTable.getUniformMapCallback()(d);for(let h=0;h{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};lA.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};lA.isSupported=function(e){return e.frameState.context.depthTexture};lA.prototype.isDestroyed=function(){return!1};lA.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,me(this)};var ch=lA;var Eqt=y(C(),1);var gqt=y(C(),1);var dqt=y(C(),1);var v2e=new D(1,1),N2e=!1,D2e=U.WHITE;function nE(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(nE.prototype,{isConstant:{get:function(){return z.isConstant(this._image)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:fe("image"),repeat:fe("repeat"),color:fe("color"),transparent:fe("transparent")});nE.prototype.getType=function(e){return"Image"};var Q2e=new j;nE.prototype.getValue=function(e,t){return l(e)||(e=j.now(Q2e)),l(t)||(t={}),t.image=z.getValueOrUndefined(this._image,e),t.repeat=z.getValueOrClonedDefault(this._repeat,e,v2e,t.repeat),t.color=z.getValueOrClonedDefault(this._color,e,D2e,t.color),z.getValueOrDefault(this._transparent,e,N2e)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};nE.prototype.equals=function(e){return this===e||e instanceof nE&&z.equals(this._image,e._image)&&z.equals(this._repeat,e._repeat)&&z.equals(this._color,e._color)&&z.equals(this._transparent,e._transparent)};var Lb=nE;function U2e(e){if(e instanceof U)return new qt(e);if(typeof e=="string"||e instanceof Ve||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new Lb;return t.image=e,t}}function k2e(e,t){return fe(e,t,U2e)}var Oo=k2e;function qG(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(qG.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),dimensions:fe("dimensions"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});qG.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new qG(this)};qG.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var mC=qG;var Qqt=y(C(),1);var Sqt=y(C(),1),Y2e={FIXED:0,INERTIAL:1},eo=Object.freeze(Y2e);var Xqt=y(C(),1);function iE(){Ae.throwInstantiationError()}Object.defineProperties(iE.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError},referenceFrame:{get:Ae.throwInstantiationError}});iE.prototype.getValue=Ae.throwInstantiationError;iE.prototype.getValueInReferenceFrame=Ae.throwInstantiationError;iE.prototype.equals=Ae.throwInstantiationError;var xre=new $;iE.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new m),n===i)return m.clone(t,o);let r=Dt.computeIcrfToCentralBodyFixedMatrix(e,xre);if(n===eo.INERTIAL)return $.multiplyByVector(r,t,o);if(n===eo.FIXED)return $.multiplyByVector($.transpose(r,xre),t,o)};var lh=iE;function hC(e,t){this._definitionChanged=new Ce,this._value=m.clone(e),this._referenceFrame=t??eo.FIXED}Object.defineProperties(hC.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===eo.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var O2e=new j;hC.prototype.getValue=function(e,t){return l(e)||(e=j.now(O2e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};hC.prototype.setValue=function(e,t){let n=!1;m.equals(this._value,e)||(n=!0,this._value=m.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};hC.prototype.getValueInReferenceFrame=function(e,t,n){return lh.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};hC.prototype.equals=function(e){return this===e||e instanceof hC&&m.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var dl=hC;var Kqt=y(C(),1);function $G(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties($G.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),positions:fe("positions"),width:fe("width"),height:fe("height"),heightReference:fe("heightReference"),extrudedHeight:fe("extrudedHeight"),extrudedHeightReference:fe("extrudedHeightReference"),cornerType:fe("cornerType"),granularity:fe("granularity"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition"),classificationType:fe("classificationType"),zIndex:fe("zIndex")});$G.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new $G(this)};$G.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var fC=$G;var qqt=y(C(),1);function H2e(e){return e}function z2e(e,t){return fe(e,t,H2e)}var ul=z2e;var r$t=y(C(),1);function eZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(eZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),length:fe("length"),topRadius:fe("topRadius"),bottomRadius:fe("bottomRadius"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),numberOfVerticalLines:fe("numberOfVerticalLines"),slices:fe("slices"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});eZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new eZ(this)};eZ.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pC=eZ;var m$t=y(C(),1);function tZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(tZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),semiMajorAxis:fe("semiMajorAxis"),semiMinorAxis:fe("semiMinorAxis"),height:fe("height"),heightReference:fe("heightReference"),extrudedHeight:fe("extrudedHeight"),extrudedHeightReference:fe("extrudedHeightReference"),rotation:fe("rotation"),stRotation:fe("stRotation"),granularity:fe("granularity"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),numberOfVerticalLines:fe("numberOfVerticalLines"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition"),classificationType:fe("classificationType"),zIndex:fe("zIndex")});tZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new tZ(this)};tZ.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var AC=tZ;var y$t=y(C(),1);function nZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(nZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),radii:fe("radii"),innerRadii:fe("innerRadii"),minimumClock:fe("minimumClock"),maximumClock:fe("maximumClock"),minimumCone:fe("minimumCone"),maximumCone:fe("maximumCone"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),stackPartitions:fe("stackPartitions"),slicePartitions:fe("slicePartitions"),subdivisions:fe("subdivisions"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});nZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new nZ(this)};nZ.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var gC=nZ;var T$t=y(C(),1);function iZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(iZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),text:fe("text"),font:fe("font"),style:fe("style"),scale:fe("scale"),showBackground:fe("showBackground"),backgroundColor:fe("backgroundColor"),backgroundPadding:fe("backgroundPadding"),pixelOffset:fe("pixelOffset"),eyeOffset:fe("eyeOffset"),horizontalOrigin:fe("horizontalOrigin"),verticalOrigin:fe("verticalOrigin"),heightReference:fe("heightReference"),fillColor:fe("fillColor"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),translucencyByDistance:fe("translucencyByDistance"),pixelOffsetScaleByDistance:fe("pixelOffsetScaleByDistance"),scaleByDistance:fe("scaleByDistance"),distanceDisplayCondition:fe("distanceDisplayCondition"),disableDepthTestDistance:fe("disableDepthTestDistance")});iZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new iZ(this)};iZ.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var dh=iZ;var ten=y(C(),1);var v$t=y(C(),1);var G$t=y(C(),1);var K2e=new m(1,1,1),J2e=m.ZERO,j2e=Pe.IDENTITY;function Ire(e,t,n){this.translation=m.clone(e??J2e),this.rotation=Pe.clone(t??j2e),this.scale=m.clone(n??K2e)}Ire.prototype.equals=function(e){return this===e||l(e)&&m.equals(this.translation,e.translation)&&Pe.equals(this.rotation,e.rotation)&&m.equals(this.scale,e.scale)};var Rb=Ire;var wH=new Rb;function oZ(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(oZ.prototype,{isConstant:{get:function(){return z.isConstant(this._translation)&&z.isConstant(this._rotation)&&z.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:fe("translation"),rotation:fe("rotation"),scale:fe("scale")});var q2e=new j;oZ.prototype.getValue=function(e,t){return l(e)||(e=j.now(q2e)),l(t)||(t=new Rb),t.translation=z.getValueOrClonedDefault(this._translation,e,wH.translation,t.translation),t.rotation=z.getValueOrClonedDefault(this._rotation,e,wH.rotation,t.rotation),t.scale=z.getValueOrClonedDefault(this._scale,e,wH.scale,t.scale),t};oZ.prototype.equals=function(e){return this===e||e instanceof oZ&&z.equals(this._translation,e._translation)&&z.equals(this._rotation,e._rotation)&&z.equals(this._scale,e._scale)};var bC=oZ;var H$t=y(C(),1);function dA(e,t){this._propertyNames=[],this._definitionChanged=new Ce,l(e)&&this.merge(e,t)}Object.defineProperties(dA.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var yWe=new j;rE.prototype.getValue=function(e,t){l(e)||(e=j.now(yWe));let n=z.getValueOrDefault(this._heightReference,e,et.NONE),i=z.getValueOrDefault(this._extrudedHeightReference,e,et.NONE);if(n===et.NONE&&!D_(i))return this._position=m.clone(m.ZERO,this._position),m.clone(m.ZERO,t);if(this._positionProperty.isConstant)return m.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,Lre);if(!l(r)||m.equals(r,m.ZERO)||!l(o.globe))return m.clone(m.ZERO,t);if(m.equalsEpsilon(this._position,r,Z.EPSILON10))return m.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=m.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return m.multiplyByScalar(s,this._terrainHeight,t)};rE.prototype.isDestroyed=function(){return!1};rE.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),me(this)};var IC=rE;function CWe(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new hh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new IC(this._scene,s,r)}}var fA=CWe;var Rre=m.ZERO,Vre=new m,xWe=new m,Gre=new U;function IWe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function vd(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new IWe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(vd.prototype=Object.create(Ci.prototype),vd.prototype.constructor=vd);Object.defineProperties(vd.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});vd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Gre)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Rre,Vre))),new wt({id:t,geometry:sc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};vd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Gre),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Rre,Vre))),new wt({id:t,geometry:nh.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};vd.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};vd.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};vd.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.dimensions.isConstant||!z.isConstant(t.outlineWidth)};vd.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};vd.prototype._onEntityPropertyChanged=fA;vd.DynamicGeometryUpdater=sE;function sE(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(sE.prototype=Object.create(yi.prototype),sE.prototype.constructor=sE);sE.prototype._isHidden=function(e,t,n){let i=z.getValueOrUndefined(e.position,n,xWe),o=this._options.dimensions;return!l(i)||!l(o)||yi.prototype._isHidden.call(this,e,t,n)};sE.prototype._setOptions=function(e,t,n){let i=z.getValueOrDefault(t.heightReference,n,et.NONE),o=this._options;o.dimensions=z.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==et.NONE?pn.ALL:void 0};var AZ=vd;var min=y(C(),1);function _C(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??eo.FIXED,this._definitionChanged=new Ce,this.setCallback(e,t)}Object.defineProperties(_C.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _We=new j;_C.prototype.getValue=function(e,t){return l(e)||(e=j.now(_We)),this.getValueInReferenceFrame(e,eo.FIXED,t)};_C.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};_C.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return lh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};_C.prototype.equals=function(e){return this===e||e instanceof _C&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var gZ=_C;var O6n=y(C(),1);var W6n=y(C(),1);var bin=y(C(),1);var fin=y(C(),1);/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:Nre,setPrototypeOf:Zre,isFrozen:EWe,getPrototypeOf:TWe,getOwnPropertyDescriptor:SWe}=Object,{freeze:pl,seal:Ku,create:Dre}=Object,{apply:DH,construct:QH}=typeof Reflect<"u"&&Reflect;pl||(pl=function(t){return t});Ku||(Ku=function(t){return t});DH||(DH=function(t,n,i){return t.apply(n,i)});QH||(QH=function(t,n){return new t(...n)});var PD=Al(Array.prototype.forEach),LWe=Al(Array.prototype.lastIndexOf),Bre=Al(Array.prototype.pop),bZ=Al(Array.prototype.push),RWe=Al(Array.prototype.splice),vD=Al(String.prototype.toLowerCase),FH=Al(String.prototype.toString),wre=Al(String.prototype.match),yZ=Al(String.prototype.replace),VWe=Al(String.prototype.indexOf),GWe=Al(String.prototype.trim),fh=Al(Object.prototype.hasOwnProperty),fl=Al(RegExp.prototype.test),CZ=ZWe(TypeError);function Al(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o2&&arguments[2]!==void 0?arguments[2]:vD;Zre&&Zre(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(EWe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function BWe(e){for(let t=0;t/gm),PWe=Ku(/\$\{[\w\W]*/gm),MWe=Ku(/^data-[\-\w.\u00B7-\uFFFF]+$/),vWe=Ku(/^aria-[\-\w]+$/),Qre=Ku(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),NWe=Ku(/^(?:\w+script|data):/i),DWe=Ku(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ure=Ku(/^html$/i),QWe=Ku(/^[a-z][.\w]*(-[.\w]+)+$/i),Mre=Object.freeze({__proto__:null,ARIA_ATTR:vWe,ATTR_WHITESPACE:DWe,CUSTOM_ELEMENT:QWe,DATA_ATTR:MWe,DOCTYPE_NAME:Ure,ERB_EXPR:FWe,IS_ALLOWED_URI:Qre,IS_SCRIPT_OR_DATA:NWe,MUSTACHE_EXPR:WWe,TMPLIT_EXPR:PWe}),IZ={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},UWe=function(){return typeof window>"u"?null:window},kWe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},vre=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function kre(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:UWe(),t=mn=>kre(mn);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==IZ.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:d,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:p,trustedTypes:g}=e,f=c.prototype,b=xZ(f,"cloneNode"),x=xZ(f,"remove"),I=xZ(f,"nextSibling"),_=xZ(f,"childNodes"),E=xZ(f,"parentNode");if(typeof s=="function"){let mn=n.createElement("template");mn.content&&mn.content.ownerDocument&&(n=mn.content.ownerDocument)}let S,R="",{implementation:G,createNodeIterator:B,createDocumentFragment:w,getElementsByTagName:F}=n,{importNode:P}=i,A=vre();t.isSupported=typeof Nre=="function"&&typeof E=="function"&&G&&G.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:T,ERB_EXPR:L,TMPLIT_EXPR:V,DATA_ATTR:W,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:Q,ATTR_WHITESPACE:N,CUSTOM_ELEMENT:k}=Mre,{IS_ALLOWED_URI:v}=Mre,O=null,H=ki({},[...Xre,...PH,...MH,...vH,...Wre]),ee=null,K=ki({},[...Fre,...NH,...Pre,...MD]),te=Object.seal(Dre(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),q=null,pe=null,ye=!0,he=!0,xe=!1,Te=!0,Be=!1,Le=!0,De=!1,Ue=!1,je=!1,it=!1,nn=!1,rt=!1,rn=!0,Jt=!1,Xt="user-content-",Li=!0,bi=!1,vt={},Rt=null,si=ki({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),_t=null,Fo=ki({},["audio","video","img","source","image","track"]),Uo=null,Va=ki({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",wr="http://www.w3.org/2000/svg",ve="http://www.w3.org/1999/xhtml",ut=ve,qe=!1,nt=null,yt=ki({},[Cr,wr,ve],FH),$t=ki({},["mi","mo","mn","ms","mtext"]),Sn=ki({},["annotation-xml"]),fo=ki({},["title","style","font","a","script"]),uo=null,ra=["application/xhtml+xml","text/html"],sa="text/html",Hn=null,Ti=null,Rs=n.createElement("form"),Jo=function(Re){return Re instanceof RegExp||Re instanceof Function},Ga=function(){let Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Ti&&Ti===Re)){if((!Re||typeof Re!="object")&&(Re={}),Re=pA(Re),uo=ra.indexOf(Re.PARSER_MEDIA_TYPE)===-1?sa:Re.PARSER_MEDIA_TYPE,Hn=uo==="application/xhtml+xml"?FH:vD,O=fh(Re,"ALLOWED_TAGS")?ki({},Re.ALLOWED_TAGS,Hn):H,ee=fh(Re,"ALLOWED_ATTR")?ki({},Re.ALLOWED_ATTR,Hn):K,nt=fh(Re,"ALLOWED_NAMESPACES")?ki({},Re.ALLOWED_NAMESPACES,FH):yt,Uo=fh(Re,"ADD_URI_SAFE_ATTR")?ki(pA(Va),Re.ADD_URI_SAFE_ATTR,Hn):Va,_t=fh(Re,"ADD_DATA_URI_TAGS")?ki(pA(Fo),Re.ADD_DATA_URI_TAGS,Hn):Fo,Rt=fh(Re,"FORBID_CONTENTS")?ki({},Re.FORBID_CONTENTS,Hn):si,q=fh(Re,"FORBID_TAGS")?ki({},Re.FORBID_TAGS,Hn):pA({}),pe=fh(Re,"FORBID_ATTR")?ki({},Re.FORBID_ATTR,Hn):pA({}),vt=fh(Re,"USE_PROFILES")?Re.USE_PROFILES:!1,ye=Re.ALLOW_ARIA_ATTR!==!1,he=Re.ALLOW_DATA_ATTR!==!1,xe=Re.ALLOW_UNKNOWN_PROTOCOLS||!1,Te=Re.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Be=Re.SAFE_FOR_TEMPLATES||!1,Le=Re.SAFE_FOR_XML!==!1,De=Re.WHOLE_DOCUMENT||!1,it=Re.RETURN_DOM||!1,nn=Re.RETURN_DOM_FRAGMENT||!1,rt=Re.RETURN_TRUSTED_TYPE||!1,je=Re.FORCE_BODY||!1,rn=Re.SANITIZE_DOM!==!1,Jt=Re.SANITIZE_NAMED_PROPS||!1,Li=Re.KEEP_CONTENT!==!1,bi=Re.IN_PLACE||!1,v=Re.ALLOWED_URI_REGEXP||Qre,ut=Re.NAMESPACE||ve,$t=Re.MATHML_TEXT_INTEGRATION_POINTS||$t,Sn=Re.HTML_INTEGRATION_POINTS||Sn,te=Re.CUSTOM_ELEMENT_HANDLING||{},Re.CUSTOM_ELEMENT_HANDLING&&Jo(Re.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(te.tagNameCheck=Re.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Re.CUSTOM_ELEMENT_HANDLING&&Jo(Re.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(te.attributeNameCheck=Re.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Re.CUSTOM_ELEMENT_HANDLING&&typeof Re.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(te.allowCustomizedBuiltInElements=Re.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Be&&(he=!1),nn&&(it=!0),vt&&(O=ki({},Wre),ee=[],vt.html===!0&&(ki(O,Xre),ki(ee,Fre)),vt.svg===!0&&(ki(O,PH),ki(ee,NH),ki(ee,MD)),vt.svgFilters===!0&&(ki(O,MH),ki(ee,NH),ki(ee,MD)),vt.mathMl===!0&&(ki(O,vH),ki(ee,Pre),ki(ee,MD))),Re.ADD_TAGS&&(O===H&&(O=pA(O)),ki(O,Re.ADD_TAGS,Hn)),Re.ADD_ATTR&&(ee===K&&(ee=pA(ee)),ki(ee,Re.ADD_ATTR,Hn)),Re.ADD_URI_SAFE_ATTR&&ki(Uo,Re.ADD_URI_SAFE_ATTR,Hn),Re.FORBID_CONTENTS&&(Rt===si&&(Rt=pA(Rt)),ki(Rt,Re.FORBID_CONTENTS,Hn)),Li&&(O["#text"]=!0),De&&ki(O,["html","head","body"]),O.table&&(ki(O,["tbody"]),delete q.tbody),Re.TRUSTED_TYPES_POLICY){if(typeof Re.TRUSTED_TYPES_POLICY.createHTML!="function")throw CZ('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Re.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw CZ('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');S=Re.TRUSTED_TYPES_POLICY,R=S.createHTML("")}else S===void 0&&(S=kWe(g,o)),S!==null&&typeof R=="string"&&(R=S.createHTML(""));pl&&pl(Re),Ti=Re}},po=ki({},[...PH,...MH,...wWe]),jo=ki({},[...vH,...XWe]),Wu=function(Re){let Vt=E(Re);(!Vt||!Vt.tagName)&&(Vt={namespaceURI:ut,tagName:"template"});let Cn=vD(Re.tagName),rr=vD(Vt.tagName);return nt[Re.namespaceURI]?Re.namespaceURI===wr?Vt.namespaceURI===ve?Cn==="svg":Vt.namespaceURI===Cr?Cn==="svg"&&(rr==="annotation-xml"||$t[rr]):!!po[Cn]:Re.namespaceURI===Cr?Vt.namespaceURI===ve?Cn==="math":Vt.namespaceURI===wr?Cn==="math"&&Sn[rr]:!!jo[Cn]:Re.namespaceURI===ve?Vt.namespaceURI===wr&&!Sn[rr]||Vt.namespaceURI===Cr&&!$t[rr]?!1:!jo[Cn]&&(fo[Cn]||!po[Cn]):!!(uo==="application/xhtml+xml"&&nt[Re.namespaceURI]):!1},xr=function(Re){bZ(t.removed,{element:Re});try{E(Re).removeChild(Re)}catch{x(Re)}},Vs=function(Re,Vt){try{bZ(t.removed,{attribute:Vt.getAttributeNode(Re),from:Vt})}catch{bZ(t.removed,{attribute:null,from:Vt})}if(Vt.removeAttribute(Re),Re==="is")if(it||nn)try{xr(Vt)}catch{}else try{Vt.setAttribute(Re,"")}catch{}},ks=function(Re){let Vt=null,Cn=null;if(je)Re=""+Re;else{let Gs=wre(Re,/^[\r\n\t ]+/);Cn=Gs&&Gs[0]}uo==="application/xhtml+xml"&&ut===ve&&(Re=''+Re+"");let rr=S?S.createHTML(Re):Re;if(ut===ve)try{Vt=new p().parseFromString(rr,uo)}catch{}if(!Vt||!Vt.documentElement){Vt=G.createDocument(ut,"template",null);try{Vt.documentElement.innerHTML=qe?R:rr}catch{}}let Za=Vt.body||Vt.documentElement;return Re&&Cn&&Za.insertBefore(n.createTextNode(Cn),Za.childNodes[0]||null),ut===ve?F.call(Vt,De?"html":"body")[0]:De?Vt.documentElement:Za},Jm=function(Re){return B.call(Re.ownerDocument||Re,Re,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT|d.SHOW_PROCESSING_INSTRUCTION|d.SHOW_CDATA_SECTION,null)},fs=function(Re){return Re instanceof h&&(typeof Re.nodeName!="string"||typeof Re.textContent!="string"||typeof Re.removeChild!="function"||!(Re.attributes instanceof u)||typeof Re.removeAttribute!="function"||typeof Re.setAttribute!="function"||typeof Re.namespaceURI!="string"||typeof Re.insertBefore!="function"||typeof Re.hasChildNodes!="function")},tc=function(Re){return typeof a=="function"&&Re instanceof a};function nc(mn,Re,Vt){PD(mn,Cn=>{Cn.call(t,Re,Vt,Ti)})}let Xr=function(Re){let Vt=null;if(nc(A.beforeSanitizeElements,Re,null),fs(Re))return xr(Re),!0;let Cn=Hn(Re.nodeName);if(nc(A.uponSanitizeElement,Re,{tagName:Cn,allowedTags:O}),Le&&Re.hasChildNodes()&&!tc(Re.firstElementChild)&&fl(/<[/\w!]/g,Re.innerHTML)&&fl(/<[/\w!]/g,Re.textContent)||Re.nodeType===IZ.progressingInstruction||Le&&Re.nodeType===IZ.comment&&fl(/<[/\w]/g,Re.data))return xr(Re),!0;if(!O[Cn]||q[Cn]){if(!q[Cn]&&Yl(Cn)&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Cn)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Cn)))return!1;if(Li&&!Rt[Cn]){let rr=E(Re)||Re.parentNode,Za=_(Re)||Re.childNodes;if(Za&&rr){let Gs=Za.length;for(let Ic=Gs-1;Ic>=0;--Ic){let jm=b(Za[Ic],!0);jm.__removalCount=(Re.__removalCount||0)+1,rr.insertBefore(jm,I(Re))}}}return xr(Re),!0}return Re instanceof c&&!Wu(Re)||(Cn==="noscript"||Cn==="noembed"||Cn==="noframes")&&fl(/<\/no(script|embed|frames)/i,Re.innerHTML)?(xr(Re),!0):(Be&&Re.nodeType===IZ.text&&(Vt=Re.textContent,PD([T,L,V],rr=>{Vt=yZ(Vt,rr," ")}),Re.textContent!==Vt&&(bZ(t.removed,{element:Re.cloneNode()}),Re.textContent=Vt)),nc(A.afterSanitizeElements,Re,null),!1)},kl=function(Re,Vt,Cn){if(rn&&(Vt==="id"||Vt==="name")&&(Cn in n||Cn in Rs))return!1;if(!(he&&!pe[Vt]&&fl(W,Vt))){if(!(ye&&fl(M,Vt))){if(!ee[Vt]||pe[Vt]){if(!(Yl(Re)&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Re)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Re))&&(te.attributeNameCheck instanceof RegExp&&fl(te.attributeNameCheck,Vt)||te.attributeNameCheck instanceof Function&&te.attributeNameCheck(Vt))||Vt==="is"&&te.allowCustomizedBuiltInElements&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Cn)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Cn))))return!1}else if(!Uo[Vt]){if(!fl(v,yZ(Cn,N,""))){if(!((Vt==="src"||Vt==="xlink:href"||Vt==="href")&&Re!=="script"&&VWe(Cn,"data:")===0&&_t[Re])){if(!(xe&&!fl(Q,yZ(Cn,N,"")))){if(Cn)return!1}}}}}}return!0},Yl=function(Re){return Re!=="annotation-xml"&&wre(Re,k)},aa=function(Re){nc(A.beforeSanitizeAttributes,Re,null);let{attributes:Vt}=Re;if(!Vt||fs(Re))return;let Cn={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ee,forceKeepAttr:void 0},rr=Vt.length;for(;rr--;){let Za=Vt[rr],{name:Gs,namespaceURI:Ic,value:jm}=Za,Dp=Hn(Gs),zL=jm,Ba=Gs==="value"?zL:GWe(zL);if(Cn.attrName=Dp,Cn.attrValue=Ba,Cn.keepAttr=!0,Cn.forceKeepAttr=void 0,nc(A.uponSanitizeAttribute,Re,Cn),Ba=Cn.attrValue,Jt&&(Dp==="id"||Dp==="name")&&(Vs(Gs,Re),Ba=Xt+Ba),Le&&fl(/((--!?|])>)|<\/(style|title)/i,Ba)){Vs(Gs,Re);continue}if(Cn.forceKeepAttr)continue;if(!Cn.keepAttr){Vs(Gs,Re);continue}if(!Te&&fl(/\/>/i,Ba)){Vs(Gs,Re);continue}Be&&PD([T,L,V],I9=>{Ba=yZ(Ba,I9," ")});let x9=Hn(Re.nodeName);if(!kl(x9,Dp,Ba)){Vs(Gs,Re);continue}if(S&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!Ic)switch(g.getAttributeType(x9,Dp)){case"TrustedHTML":{Ba=S.createHTML(Ba);break}case"TrustedScriptURL":{Ba=S.createScriptURL(Ba);break}}if(Ba!==zL)try{Ic?Re.setAttributeNS(Ic,Gs,Ba):Re.setAttribute(Gs,Ba),fs(Re)?xr(Re):Bre(t.removed)}catch{Vs(Gs,Re)}}nc(A.afterSanitizeAttributes,Re,null)},Zo=function mn(Re){let Vt=null,Cn=Jm(Re);for(nc(A.beforeSanitizeShadowDOM,Re,null);Vt=Cn.nextNode();)nc(A.uponSanitizeShadowNode,Vt,null),Xr(Vt),aa(Vt),Vt.content instanceof r&&mn(Vt.content);nc(A.afterSanitizeShadowDOM,Re,null)};return t.sanitize=function(mn){let Re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Vt=null,Cn=null,rr=null,Za=null;if(qe=!mn,qe&&(mn=""),typeof mn!="string"&&!tc(mn))if(typeof mn.toString=="function"){if(mn=mn.toString(),typeof mn!="string")throw CZ("dirty is not a string, aborting")}else throw CZ("toString is not a function");if(!t.isSupported)return mn;if(Ue||Ga(Re),t.removed=[],typeof mn=="string"&&(bi=!1),bi){if(mn.nodeName){let jm=Hn(mn.nodeName);if(!O[jm]||q[jm])throw CZ("root node is forbidden and cannot be sanitized in-place")}}else if(mn instanceof a)Vt=ks(""),Cn=Vt.ownerDocument.importNode(mn,!0),Cn.nodeType===IZ.element&&Cn.nodeName==="BODY"||Cn.nodeName==="HTML"?Vt=Cn:Vt.appendChild(Cn);else{if(!it&&!Be&&!De&&mn.indexOf("<")===-1)return S&&rt?S.createHTML(mn):mn;if(Vt=ks(mn),!Vt)return it?null:rt?R:""}Vt&&je&&xr(Vt.firstChild);let Gs=Jm(bi?mn:Vt);for(;rr=Gs.nextNode();)Xr(rr),aa(rr),rr.content instanceof r&&Zo(rr.content);if(bi)return mn;if(it){if(nn)for(Za=w.call(Vt.ownerDocument);Vt.firstChild;)Za.appendChild(Vt.firstChild);else Za=Vt;return(ee.shadowroot||ee.shadowrootmode)&&(Za=P.call(i,Za,!0)),Za}let Ic=De?Vt.outerHTML:Vt.innerHTML;return De&&O["!doctype"]&&Vt.ownerDocument&&Vt.ownerDocument.doctype&&Vt.ownerDocument.doctype.name&&fl(Ure,Vt.ownerDocument.doctype.name)&&(Ic=" +`+Ic),Be&&PD([T,L,V],jm=>{Ic=yZ(Ic,jm," ")}),S&&rt?S.createHTML(Ic):Ic},t.setConfig=function(){let mn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ga(mn),Ue=!0},t.clearConfig=function(){Ti=null,Ue=!1},t.isValidAttribute=function(mn,Re,Vt){Ti||Ga({});let Cn=Hn(mn),rr=Hn(Re);return kl(Cn,rr,Vt)},t.addHook=function(mn,Re){typeof Re=="function"&&bZ(A[mn],Re)},t.removeHook=function(mn,Re){if(Re!==void 0){let Vt=LWe(A[mn],Re);return Vt===-1?void 0:RWe(A[mn],Vt,1)[0]}return Bre(A[mn])},t.removeHooks=function(mn){A[mn]=[]},t.removeAllHooks=function(){A=vre()},t}var Yre=kre();var YWe=0,UH={};function Pf(e,t){let n,i=e;l(UH[i])?n=UH[i]:(n=YWe++,UH[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(Pf.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Yre.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i{u[h]=void 0});for(let h=r;h0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function HWe(e,t){if(ph.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new ph(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}_Z.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;D.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=D.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(HWe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};_Z.prototype.isDestroyed=function(){return!1};_Z.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),me(this)};var TC=_Z;var qin=y(C(),1),OH=y(Bd(),1);var kin=y(C(),1);var YH,Ore="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",ND={};ND.defaultAccessToken=Ore;ND.defaultServer=new Ve({url:"https://api.cesium.com/"});ND.getDefaultTokenCredit=function(e){if(e===Ore){if(!l(YH)){let t=` This application is using Cesium's default ion access token. Please assign Cesium.Ion.defaultAccessToken with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at
https://cesium.com.`;YH=new Gt(t,!0)}return YH}};var Ah=ND;function gl(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:zWe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new de("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");Ve.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new OH.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(gl.prototype=Object.create(Ve.prototype),gl.prototype.constructor=gl);gl.fromAssetId=function(e,t){let n=gl._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new gl(i,n)})};Object.defineProperties(gl.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=gl.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});gl.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Gt.getIonCredit),i=Ah.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Gt.clone(i)),n};gl.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new gl(t._ionEndpoint,t._ionEndpointResource)),e=Ve.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};gl.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return Ve.prototype.fetchImage.call(this,e)};gl.prototype._makeRequest=function(e){return this._isExternal||new OH.default(this.url).authority()!==this._ionEndpointDomain?Ve.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),Ve.prototype._makeRequest.call(this,e))};gl._createEndpointResource=function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.server??Ah.defaultServer,i=t.accessToken??Ah.defaultAccessToken;n=Ve.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function zWe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var Nd=gl;var eon=y(C(),1);function Mf(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Mf.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(et.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Mf.prototype.get=function(e){return this._array[e]};Mf.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Mf.prototype.peek=function(){return this._array[this._length-1]};Mf.prototype.push=function(e){let t=this.length++;this._array[t]=e};Mf.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Mf.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Mf.prototype.resize=function(e){this.length=e};Mf.prototype.trim=function(e){e=e??this._length,this._array.length=e};var bl=Mf;var oon=y(C(),1);function DD(e){e=e??Y.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}DD.ALL=Object.freeze(new DD({color:new U(0,0,0,0),depth:1,stencil:0}));DD.prototype.execute=function(e,t){e.clear(this,t)};var xi=DD;var con=y(C(),1);var AA={X:0,Y:1,Z:2};AA.Y_UP_TO_Z_UP=X.fromRotationTranslation($.fromArray([1,0,0,0,0,1,0,-1,0]));AA.Z_UP_TO_Y_UP=X.fromRotationTranslation($.fromArray([1,0,0,0,0,-1,0,1,0]));AA.X_UP_TO_Z_UP=X.fromRotationTranslation($.fromArray([0,0,1,0,1,0,-1,0,0]));AA.Z_UP_TO_X_UP=X.fromRotationTranslation($.fromArray([0,0,-1,0,1,0,1,0,0]));AA.X_UP_TO_Y_UP=X.fromRotationTranslation($.fromArray([0,1,0,-1,0,0,0,0,1]));AA.Y_UP_TO_X_UP=X.fromRotationTranslation($.fromArray([0,-1,0,1,0,0,0,0,1]));AA.fromName=function(e){return AA[e]};var ho=Object.freeze(AA);var Njn=y(C(),1);var pon=y(C(),1);function Ju(e){this.planes=e??[]}var EZ=[new m,new m,new m];m.clone(m.UNIT_X,EZ[0]);m.clone(m.UNIT_Y,EZ[1]);m.clone(m.UNIT_Z,EZ[2]);var Vb=new m,KWe=new m,Hre=new An(new m(1,0,0),0);Ju.fromBoundingSphere=function(e,t){l(t)||(t=new Ju);let n=EZ.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a>10)+55296,(r&1023)+56320))}return t};function TZ(e,t,n){return t<=e&&e<=n}function $We(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c0){let o=Math.min(t,Kt.maximumTextureSize),r=Math.ceil(t/Kt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,d=c*.5;n=new D(o,r),i=new ce(s,a,c,d)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(Bc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Bc.DEFAULT_COLOR_VALUE=U.WHITE;Bc.DEFAULT_SHOW_VALUE=!0;function Jre(e){let t=e._textureDimensions;return t.x*t.y*4}function jre(e){if(!l(e._batchValues)){let t=Jre(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function qre(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}Bc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=qre(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=jre(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};Bc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n0){let i=e._pickIds,o=Jre(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c0;){if(t=u.pop(),c[t]===d)continue;c[t]=d;let h=n(e,t);if(l(h))return h;let p=o[t],g=s[t];for(let f=0;f0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${SFe(i)}${s}`}};function ese(e,t){return e=Oe.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function LFe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let d=o;d0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function RFe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===ed.HIGHLIGHT)return 0;if(n===ed.REPLACE)return 1;if(n===ed.MIX)return Z.clamp(i,Z.EPSILON4,1)}Wo.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return Lt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return RFe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};Wo.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Bb={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Wo.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=VFe(this);for(let d=t;d>>jt.SKIP_LOD_BIT_SHIFT}function PFe(e){let t=ke(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=bn.ALPHA_BLEND,t.stencilTest=jt.setCesium3DTileBit(),t.stencilMask=jt.CESIUM_3D_TILE_MASK,Qe.fromCache(t)}function MFe(e){let t=ke(e,!0);return t.stencilTest=jt.setCesium3DTileBit(),t.stencilMask=jt.CESIUM_3D_TILE_MASK,Qe.fromCache(t)}Wo.prototype.update=function(e,t){this._batchTexture.update(e,t)};Wo.prototype.isDestroyed=function(){return!1};Wo.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),me(this)};var bA=Wo;var pan=y(C(),1);var rsn=y(C(),1);function vFe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var Nf=vFe;var ian=y(C(),1);var asn=y(C(),1),aE=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;var usn=y(C(),1);function qu(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(qu.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new U),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});qu.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};qu.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};qu.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};qu.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let d=e.tileset.metadata;if(l(d)){if(d.hasPropertyBySemantic(n))return d.getPropertyBySemantic(n);if(d.hasProperty(n))return d.getProperty(n)}};qu.prototype.getPropertyInherited=function(e){return qu.getPropertyInherited(this._content,this._batchId,e)};qu.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};qu.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};qu.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};qu.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var ma=qu;var Lsn=y(C(),1);var fsn=y(C(),1),JH=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},jH=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},td=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.lengthr.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&u(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+d),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});td.max_unop_len=td.getMaxKeyLen(td.unary_ops);td.max_binop_len=td.getMaxKeyLen(td.binary_ops);var wb=e=>new td(e).parse(),DFe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(td).filter(e=>!DFe.includes(e)&&wb[e]===void 0).forEach(e=>{wb[e]=td[e]});wb.Jsep=td;var QFe="ConditionalExpression",UFe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:QFe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};wb.plugins.register(UFe);var Asn=y(C(),1),kFe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},Et=Object.freeze(kFe);function bh(e,t){this._expression=e,e=iPe(e,t),e=rPe(oPe(e)),wb.addBinaryOp("=~",0),wb.addBinaryOp("!~",0);let n;try{n=wb(e)}catch(i){throw new de(i)}this._runtimeAst=Pi(this,n)}Object.defineProperties(bh.prototype,{expression:{get:function(){return this._expression}}});var Un={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new D],cartesian3Array:[new m],cartesian4Array:[new ce],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new D),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new m),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new ce),this.cartesian4Array[this.cartesian4Index++]}};bh.prototype.evaluate=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return t instanceof U&&n instanceof ce?U.fromCartesian4(n,t):n instanceof D||n instanceof m||n instanceof ce?n.clone(t):n};bh.prototype.evaluateColor=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return U.fromCartesian4(n,t)};bh.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};bh.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};bh.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var YFe=["!","-","+"],ise=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],VZ=/\${(.*?)}/g,OFe=/\\/g,HFe="@#%",zFe=/@#%/g,kD=new U,YD={abs:ha(Math.abs),sqrt:ha(Math.sqrt),cos:ha(Math.cos),sin:ha(Math.sin),tan:ha(Math.tan),acos:ha(Math.acos),asin:ha(Math.asin),atan:ha(Math.atan),radians:ha(Z.toRadians),degrees:ha(Z.toDegrees),sign:ha(Z.sign),floor:ha(Math.floor),ceil:ha(Math.ceil),round:ha(Math.round),exp:ha(Math.exp),exp2:ha(JFe),log:ha(Math.log),log2:ha(jFe),fract:ha(KFe),length:qFe,normalize:$Fe},OD={atan2:QD(Math.atan2,!1),pow:QD(Math.pow,!1),min:QD(Math.min,!0),max:QD(Math.max,!0),distance:ePe,dot:tPe,cross:nPe},ez={clamp:ose(Z.clamp,!0),mix:ose(Z.lerp,!0)};function KFe(e){return e-Math.floor(e)}function JFe(e){return Math.pow(2,e)}function jFe(e){return Z.log2(e)}function ha(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof D)return D.fromElements(e(n.x),e(n.y),Un.getCartesian2());if(n instanceof m)return m.fromElements(e(n.x),e(n.y),e(n.z),Un.getCartesian3());if(n instanceof ce)return ce.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Un.getCartesian4());throw new de(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function QD(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof D)return D.fromElements(e(i.x,o),e(i.y,o),Un.getCartesian2());if(i instanceof m)return m.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Un.getCartesian3());if(i instanceof ce)return ce.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof D&&o instanceof D)return D.fromElements(e(i.x,o.x),e(i.y,o.y),Un.getCartesian2());if(i instanceof m&&o instanceof m)return m.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Un.getCartesian3());if(i instanceof ce&&o instanceof ce)return ce.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Un.getCartesian4());throw new de(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function ose(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof D&&o instanceof D)return D.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Un.getCartesian2());if(i instanceof m&&o instanceof m)return m.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Un.getCartesian3());if(i instanceof ce&&o instanceof ce)return ce.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof D&&o instanceof D&&r instanceof D)return D.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Un.getCartesian2());if(i instanceof m&&o instanceof m&&r instanceof m)return m.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Un.getCartesian3());if(i instanceof ce&&o instanceof ce&&r instanceof ce)return ce.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Un.getCartesian4());throw new de(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function qFe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof D)return D.magnitude(t);if(t instanceof m)return m.magnitude(t);if(t instanceof ce)return ce.magnitude(t);throw new de(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function $Fe(e,t){if(typeof t=="number")return 1;if(t instanceof D)return D.normalize(t,Un.getCartesian2());if(t instanceof m)return m.normalize(t,Un.getCartesian3());if(t instanceof ce)return ce.normalize(t,Un.getCartesian4());throw new de(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function ePe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof D&&n instanceof D)return D.distance(t,n);if(t instanceof m&&n instanceof m)return m.distance(t,n);if(t instanceof ce&&n instanceof ce)return ce.distance(t,n);throw new de(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function tPe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof D&&n instanceof D)return D.dot(t,n);if(t instanceof m&&n instanceof m)return m.dot(t,n);if(t instanceof ce&&n instanceof ce)return ce.dot(t,n);throw new de(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function nPe(e,t,n){if(t instanceof m&&n instanceof m)return m.cross(t,n,Un.getCartesian3());throw new de(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Zt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,pPe(this)}function iPe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function oPe(e){return e.replace(OFe,HFe)}function $H(e){return e.replace(zFe,"\\")}function rPe(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o=0&&r=0?new Zt(Et.VARIABLE_IN_STRING,e.value):new Zt(Et.LITERAL_STRING,$H(e.value))}function aPe(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new de(`${o} is not a function.`);return i===0?o==="test"?new Zt(Et.LITERAL_BOOLEAN,!1):new Zt(Et.LITERAL_NULL,null):(s=Pi(e,c),a=Pi(e,n[0]),new Zt(Et.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Pi(e,c),new Zt(Et.FUNCTION_CALL,o,r);throw new de(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Zt(Et.LITERAL_COLOR,o);if(r=Pi(e,n[0]),l(n[1])){let c=Pi(e,n[1]);return new Zt(Et.LITERAL_COLOR,o,[r,c])}return new Zt(Et.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new de(`${o} requires three arguments.`);return r=[Pi(e,n[0]),Pi(e,n[1]),Pi(e,n[2])],new Zt(Et.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new de(`${o} requires four arguments.`);return r=[Pi(e,n[0]),Pi(e,n[1]),Pi(e,n[2]),Pi(e,n[3])],new Zt(Et.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c1)throw new de(`${o} requires exactly one argument.`);return r=Pi(e,n[0]),new Zt(Et.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new de(`${o} does not take any argument.`);return new Zt(Et.UNARY,o)}else if(l(YD[o])){if(i!==1)throw new de(`${o} requires exactly one argument.`);return r=Pi(e,n[0]),new Zt(Et.UNARY,o,r)}else if(l(OD[o])){if(i!==2)throw new de(`${o} requires exactly two arguments.`);return s=Pi(e,n[0]),a=Pi(e,n[1]),new Zt(Et.BINARY,o,s,a)}else if(l(ez[o])){if(i!==3)throw new de(`${o} requires exactly three arguments.`);s=Pi(e,n[0]),a=Pi(e,n[1]);let c=Pi(e,n[2]);return new Zt(Et.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Zt(Et.LITERAL_BOOLEAN,!1):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="Number")return i===0?new Zt(Et.LITERAL_NUMBER,0):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="String")return i===0?new Zt(Et.LITERAL_STRING,""):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="regExp")return cPe(e,t)}}throw new de(`Unexpected function call "${o}".`)}function cPe(e,t){let n=t.arguments;if(n.length===0)return new Zt(Et.LITERAL_REGEX,new RegExp);let i=Pi(e,n[0]),o;if(n.length>1){let r=Pi(e,n[1]);if(qH(i)&&qH(r)){try{o=new RegExp($H(String(i._value)),r._value)}catch(s){throw new de(s)}return new Zt(Et.LITERAL_REGEX,o)}return new Zt(Et.REGEX,i,r)}if(qH(i)){try{o=new RegExp($H(String(i._value)))}catch(r){throw new de(r)}return new Zt(Et.LITERAL_REGEX,o)}return new Zt(Et.REGEX,i)}function lPe(e){if(hPe(e.name)){let t=fPe(e.name);return t.substr(0,8)==="tiles3d_"?new Zt(Et.BUILTIN_VARIABLE,t):new Zt(Et.VARIABLE,t)}else{if(e.name==="NaN")return new Zt(Et.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Zt(Et.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Zt(Et.LITERAL_UNDEFINED,void 0)}throw new de(`${e.name} is not defined.`)}function dPe(e){let t=e.property.name;if(t==="PI")return new Zt(Et.LITERAL_NUMBER,Math.PI);if(t==="E")return new Zt(Et.LITERAL_NUMBER,Math.E)}function uPe(e){if(e.property.name==="POSITIVE_INFINITY")return new Zt(Et.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function mPe(e,t){if(t.object.name==="Math")return dPe(t);if(t.object.name==="Number")return uPe(t);let n,i=Pi(e,t.object);return t.computed?(n=Pi(e,t.property),new Zt(Et.MEMBER,"brackets",i,n)):(n=new Zt(Et.LITERAL_STRING,t.property.name),new Zt(Et.MEMBER,"dot",i,n))}function qH(e){return e._type>=Et.LITERAL_NULL}function hPe(e){return e.substr(0,4)==="czm_"}function fPe(e){return e.substr(4)}function Pi(e,t){let n,i,o,r;if(t.type==="Literal")n=sPe(t);else if(t.type==="CallExpression")n=aPe(e,t);else if(t.type==="Identifier")n=lPe(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Pi(e,t.argument);if(YFe.indexOf(i)>-1)n=new Zt(Et.UNARY,i,s);else throw new de(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Pi(e,t.left),r=Pi(e,t.right),ise.indexOf(i)>-1)n=new Zt(Et.BINARY,i,o,r);else throw new de(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Pi(e,t.left),r=Pi(e,t.right),ise.indexOf(i)>-1&&(n=new Zt(Et.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Pi(e,t.test);o=Pi(e,t.consequent),r=Pi(e,t.alternate),n=new Zt(Et.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=mPe(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(OD[e._value])&&(e.evaluate=bPe(e._value)):e._type===Et.TERNARY?e.evaluate=yPe(e._value):e._type===Et.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===Et.ARRAY?e.evaluate=e._evaluateArray:e._type===Et.VARIABLE?e.evaluate=e._evaluateVariable:e._type===Et.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===Et.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===Et.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===Et.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===Et.REGEX?e.evaluate=e._evaluateRegExp:e._type===Et.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=APe):e.evaluate=e._evaluateLiteral}function APe(e){return l(e)?e.content.tileset.timeSinceLoad:0}function gPe(e){let t=YD[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function bPe(e){let t=OD[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function yPe(e){let t=ez[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function HD(e,t){if(l(e))return e.getPropertyInherited(t)}Zt.prototype._evaluateLiteral=function(){return this._value};Zt.prototype._evaluateLiteralColor=function(e){let t=kD,n=this._left;if(this._value==="color")l(n)?n.length>1?(U.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):U.fromCssColorString(n[0].evaluate(e),t):U.fromBytes(255,255,255,255,t);else if(this._value==="rgb")U.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;U.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?U.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&U.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return ce.fromColor(t,Un.getCartesian4())};Zt.prototype._evaluateLiteralVector=function(e){let t=Un.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a1)throw new de(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new de(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return D.fromArray(t,0,Un.getCartesian2());if(n==="vec3")return m.fromArray(t,0,Un.getCartesian3());if(n==="vec4")return ce.fromArray(t,0,Un.getCartesian4())};Zt.prototype._evaluateLiteralString=function(){return this._value};Zt.prototype._evaluateVariableString=function(e){let t=this._value,n=VZ.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=HD(e,o);l(r)||(r=""),t=t.replace(i,r),VZ.lastIndex+=r.length-i.length,n=VZ.exec(t)}return t};Zt.prototype._evaluateVariable=function(e){return HD(e,this._value)};function RC(e){return e._value==="feature"}Zt.prototype._evaluateMemberDot=function(e){if(RC(this._left))return HD(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof D||t instanceof m||t instanceof ce){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Zt.prototype._evaluateMemberBrackets=function(e){if(RC(this._left))return HD(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof D||t instanceof m||t instanceof ce){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Zt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Zt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new de(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Zt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new de(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new de(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Zt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new de(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new de(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Zt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.add(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.add(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.add(t,n,Un.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new de(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.subtract(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.subtract(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.subtract(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new de(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.multiplyComponents(t,n,Un.getCartesian2());if(n instanceof D&&typeof t=="number")return D.multiplyByScalar(n,t,Un.getCartesian2());if(t instanceof D&&typeof n=="number")return D.multiplyByScalar(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.multiplyComponents(t,n,Un.getCartesian3());if(n instanceof m&&typeof t=="number")return m.multiplyByScalar(n,t,Un.getCartesian3());if(t instanceof m&&typeof n=="number")return m.multiplyByScalar(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.multiplyComponents(t,n,Un.getCartesian4());if(n instanceof ce&&typeof t=="number")return ce.multiplyByScalar(n,t,Un.getCartesian4());if(t instanceof ce&&typeof n=="number")return ce.multiplyByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new de(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.divideComponents(t,n,Un.getCartesian2());if(t instanceof D&&typeof n=="number")return D.divideByScalar(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.divideComponents(t,n,Un.getCartesian3());if(t instanceof m&&typeof n=="number")return m.divideByScalar(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.divideComponents(t,n,Un.getCartesian4());if(t instanceof ce&&typeof n=="number")return ce.divideByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new de(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.fromElements(t.x%n.x,t.y%n.y,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new de(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof D&&t instanceof D||n instanceof m&&t instanceof m||n instanceof ce&&t instanceof ce?t.equals(n):t===n};Zt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof D&&t instanceof D||n instanceof m&&t instanceof m||n instanceof ce&&t instanceof ce?!t.equals(n):t!==n};Zt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new de(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Zt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Zt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Zt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Zt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Zt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Zt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Zt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Zt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Zt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new de(o)}return i};Zt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new de(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Zt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new de(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new de(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new de(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Zt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof D||t instanceof m||t instanceof ce)return String(t);throw new de(`Unexpected function call "${this._value}".`)};function rse(e){let t=e._left,n=t.length;for(let a=0;a1){let p=d[0],g=d[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${p}, ${g})`}}else return"vec4(1.0)";return`vec4(${d[0]}, 1.0)`}else{if(c==="rgb")return i=sse(this),l(i)?UD(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, 1.0)`;if(c==="rgba")return d[3]!=="1.0"&&(t.translucent=!0),i=sse(this),l(i)?UD(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, ${d[3]})`;if(c==="hsl")return i=rse(this),l(i)?UD(i):`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), 1.0)`;if(c==="hsla")return i=rse(this),l(i)?(i.alpha!==1&&(t.translucent=!0),UD(i)):(d[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), ${d[3]})`)}break;case Et.LITERAL_VECTOR:u=o.length,h=`${c}(`;for(let p=0;p0;){let u=t.pop();if(U.equals(u.color,a.color))d=tz(n,s,d,i,o,u.batchIds,r),a.batchIds=a.batchIds.concat(u.batchIds),a.count=d-a.offset;else{let h=d;d=tz(n,s,d,i,o,u.batchIds,r),u.offset=h,u.count=d-h,c.push(u),a=u}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function nz(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let d=0;d0;){let h=t.pop();if(U.equals(h.color,r.color))d=nz(a,c,d,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=d-r.offset;else{let p=d;d=nz(a,c,d,n,i,h.batchIds,o),h.offset=p,h.count=d-p,s.push(h),r=h}}let u=e._va;e._va=e._vaSwap,e._vaSwap=u,e._batchedIndices=s}function GPe(e,t){return t.color.toRgba()-e.color.toRgba()}function ZPe(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s=b&&s{e.isDestroyed()||(e._error=f)}):void 0}}function HPe(e){l(e._primitive)||(e._primitive=new GC({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}Qd.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};Qd.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};Qd.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};Qd.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};Qd.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=OPe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};Qd.prototype.isDestroyed=function(){return!1};Qd.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var CA=Qd;function Df(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,JPe(this,i,o)}Object.defineProperties(Df.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function zPe(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function KPe(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,d=e.ELLIPSOIDS_LENGTH??0,u=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let f=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,f,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let f=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,f,c)}if(d>0&&l(e.ELLIPSOID_BATCH_IDS)){let f=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,f,d)}if(u>0&&l(e.SPHERE_BATCH_IDS)){let f=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,f,u)}let h=l(n)||l(i)||l(o)||l(r),p=a>0&&!l(n)||c>0&&!l(i)||d>0&&!l(o)||u>0&&!l(r);if(h&&p)throw new de("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let f=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s0)for(i=new Uint16Array(c),s=0;s0)for(o=new Uint16Array(d),s=0;s0)for(r=new Uint16Array(u),s=0;s0&&(g=mr(i,n,d),n+=d,u>0&&(f=new Uint8Array(t,n,u),f=new Uint8Array(f)));let b=h.BOXES_LENGTH??0,x=h.CYLINDERS_LENGTH??0,I=h.ELLIPSOIDS_LENGTH??0,_=h.SPHERES_LENGTH??0,E=b+x+I+_,S=new bA(e,E,g,f,zPe(e));if(e._batchTable=S,E===0)return;let R=e.tile.computedTransform,G;l(h.RTC_CENTER)&&(G=m.unpack(h.RTC_CENTER),X.multiplyByPoint(R,G,G));let B=KPe(h,p);if(b>0||x>0||I>0||_>0){let w,F,P,A;if(b>0){let T=p.byteOffset+h.BOXES.byteOffset;w=new Float32Array(p.buffer,T,CA.packedBoxLength*b)}if(x>0){let T=p.byteOffset+h.CYLINDERS.byteOffset;F=new Float32Array(p.buffer,T,CA.packedCylinderLength*x)}if(I>0){let T=p.byteOffset+h.ELLIPSOIDS.byteOffset;P=new Float32Array(p.buffer,T,CA.packedEllipsoidLength*I)}if(_>0){let T=p.byteOffset+h.SPHERES.byteOffset;A=new Float32Array(p.buffer,T,CA.packedSphereLength*_)}return e._geometries=new CA({boxes:w,boxBatchIds:B.boxes,cylinders:F,cylinderBatchIds:B.cylinders,ellipsoids:P,ellipsoidBatchIds:B.ellipsoids,spheres:A,sphereBatchIds:B.spheres,center:G,modelMatrix:R,batchTable:S,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function mse(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}Df.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Df.prototype.getFeature=function(e){return mse(this),this._features[e]};Df.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};Df.prototype.applyStyle=function(e){mse(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};Df.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};Df.prototype.pick=function(e,t,n){};Df.prototype.isDestroyed=function(){return!1};Df.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};var GZ=Df;var fAn=y(C(),1);var Lan=y(C(),1);var iz={};iz.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),hse(i,o,r,s);return c};iz.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s>>0,oz=2*BC+1,Wb=4,Ase=[],gse=[],$Pe=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],Fb=1,lE=2,zD=[Fb,0,0,Fb|lE];function ys(e){if(!Ht.supportsBigInt())throw new de("S2 required BigInt support");this._cellId=e,this._level=ys.getLevel(e)}ys.fromToken=function(e){return new ys(ys.getIdFromToken(e))};ys.isValidId=function(e){return!(e<=0||e>>BigInt(oz)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};ys.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?ys.isValidId(ys.getIdFromToken(e)):!1};ys.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};ys.getTokenFromId=function(e){let t=Math.floor(lMe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};ys.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return BC-(t>>1)};ys.prototype.getChild=function(e){let t=Cse(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new ys(n)};ys.prototype.getParent=function(){let e=Cse(this._cellId)<>1&1;return yse(i[0],o[0][r^n&1],o[1][r])}function nMe(e,t){let n=bse(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,d=(o<<1)+c,u=(r<<1)+c;return[i,d,u]}function bse(e){Ase.length===0&&sMe();let t=Number(e>>BigInt(oz)),n=t&Fb,i=(1<=0;s--){let c=(1<<2*(s===7?BC-7*Wb:Wb))-1;n+=Number(e>>BigInt(s*2*Wb+1)&BigInt(c))<<2,n=gse[n];let d=s*Wb;o+=n>>Wb+2<>2&i)<=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function fse(e){return 1/qPe*e}function oMe(e,t){let n=[[],[]],i=rMe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=KD(pse(r)),n[o][1]=KD(pse(s))}return n}function rMe(e){return 1<>>0}function pse(e){return 1/jPe*e}function Pb(e,t,n,i,o,r){if(e===Wb){let s=(t<>1),n+(s[0]&1),i,o,r^zD[0]),Pb(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^zD[1]),Pb(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^zD[2]),Pb(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^zD[3])}}function sMe(){Pb(0,0,0,0,0,0),Pb(0,0,0,Fb,0,Fb),Pb(0,0,0,lE,0,lE),Pb(0,0,0,Fb|lE,0,Fb|lE)}function Cse(e){return e&~e+BigInt(1)}function aMe(e){return BigInt(1)<>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(rz.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});rz.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var dE=rz;var kan=y(C(),1);function IA(e){e=e??Y.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(IA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});IA.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};IA.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};IA.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};IA.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};IA.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};IA.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};IA.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var uE=IA;var Oan=y(C(),1);var JD={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};JD.getBranchingFactor=function(e){switch(e){case JD.OCTREE:return 8;case JD.QUADTREE:return 4}};var Cs=Object.freeze(JD);var ncn=y(C(),1);var jan=y(C(),1);function Ma(){}Object.defineProperties(Ma.prototype,{class:{get:function(){Ae.throwInstantiationError()}}});Ma.prototype.hasProperty=function(e){Ae.throwInstantiationError()};Ma.prototype.hasPropertyBySemantic=function(e){Ae.throwInstantiationError()};Ma.prototype.getPropertyIds=function(e){Ae.throwInstantiationError()};Ma.prototype.getProperty=function(e){Ae.throwInstantiationError()};Ma.prototype.setProperty=function(e,t){Ae.throwInstantiationError()};Ma.prototype.getPropertyBySemantic=function(e){Ae.throwInstantiationError()};Ma.prototype.setPropertyBySemantic=function(e,t){Ae.throwInstantiationError()};Ma.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};Ma.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};Ma.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};Ma.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ke(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};Ma.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};Ma.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return Ma.getProperty(o.id,t,n)};Ma.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?Ma.setProperty(r.id,t,n,i):!1};var Kn=Ma;function _A(e){e=e??Y.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(_A.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});_A.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};_A.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};_A.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};_A.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};_A.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};_A.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};_A.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var ZZ=_A;var zcn=y(C(),1);var Dcn=y(C(),1);var acn=y(C(),1);var Yt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Yt.getMinimum=function(e){switch(e){case Yt.INT8:return-128;case Yt.UINT8:return 0;case Yt.INT16:return-32768;case Yt.UINT16:return 0;case Yt.INT32:return-2147483648;case Yt.UINT32:return 0;case Yt.INT64:return Ht.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Yt.UINT64:return Ht.supportsBigInt()?BigInt(0):0;case Yt.FLOAT32:return-34028234663852886e22;case Yt.FLOAT64:return-Number.MAX_VALUE}};Yt.getMaximum=function(e){switch(e){case Yt.INT8:return 127;case Yt.UINT8:return 255;case Yt.INT16:return 32767;case Yt.UINT16:return 65535;case Yt.INT32:return 2147483647;case Yt.UINT32:return 4294967295;case Yt.INT64:return Ht.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Yt.UINT64:return Ht.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Yt.FLOAT32:return 34028234663852886e22;case Yt.FLOAT64:return Number.MAX_VALUE}};Yt.isIntegerType=function(e){switch(e){case Yt.INT8:case Yt.UINT8:case Yt.INT16:case Yt.UINT16:case Yt.INT32:case Yt.UINT32:case Yt.INT64:case Yt.UINT64:return!0;default:return!1}};Yt.isUnsignedIntegerType=function(e){switch(e){case Yt.UINT8:case Yt.UINT16:case Yt.UINT32:case Yt.UINT64:return!0;default:return!1}};Yt.isVectorCompatible=function(e){switch(e){case Yt.INT8:case Yt.UINT8:case Yt.INT16:case Yt.UINT16:case Yt.INT32:case Yt.UINT32:case Yt.FLOAT32:case Yt.FLOAT64:return!0;default:return!1}};Yt.normalize=function(e,t){return Math.max(Number(e)/Number(Yt.getMaximum(t)),-1)};Yt.unnormalize=function(e,t){let n=Yt.getMaximum(t),i=Yt.isUnsignedIntegerType(t)?0:-n;return e=Z.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Yt.INT64||t===Yt.UINT64)&&Ht.supportsBigInt()&&(e=BigInt(e)),e>n?n:e1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};dc.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!Ese(e,t))return e};function Ese(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};dc.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=bt.getMathType(this._type),i=this._isArray,o=bt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};dc.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?fMe(this,e):Tse(this,e)};function fMe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i1?xse(e,t,n):void 0}if(eUt.getMaximum(t))return xse(e,t,n)}function _se(e,t){return`value ${e} of type ${t} must be finite`}function sz(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function TMe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function LMe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<96?x-97:x>64?x-39:x+4}for(var I=0,b=0;b=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/f,f*4)},encodeVertexBuffer:function(g,f,b){r(b>0&&b<=256),r(b%4==0);var x=n.exports.meshopt_encodeVertexBufferBound(f,b);return d(n.exports.meshopt_encodeVertexBuffer,x,g,f,b)},encodeIndexBuffer:function(g,f,b){r(b==2||b==4),r(f%3==0);var x=h(g,b),I=n.exports.meshopt_encodeIndexBufferBound(f,u(x)+1);return d(n.exports.meshopt_encodeIndexBuffer,I,x,f,4)},encodeIndexSequence:function(g,f,b){r(b==2||b==4);var x=h(g,b),I=n.exports.meshopt_encodeIndexSequenceBound(f,u(x)+1);return d(n.exports.meshopt_encodeIndexSequence,I,x,f,4)},encodeGltfBuffer:function(g,f,b,x){var I={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(I[x]),I[x](g,f,b)},encodeFilterOct:function(g,f,b,x){return r(b==4||b==8),r(x>=1&&x<=16),p(n.exports.meshopt_encodeFilterOct,g,f,b,x,16)},encodeFilterQuat:function(g,f,b,x){return r(b==8),r(x>=4&&x<=16),p(n.exports.meshopt_encodeFilterQuat,g,f,b,x,16)},encodeFilterExp:function(g,f,b,x,I){r(b>0&&b%4==0),r(x>=1&&x<=24);var _={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return p(n.exports.meshopt_encodeFilterExp,g,f,b,x,b,I?_[I]:1)}}}();var hln=y(C()),Gse=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(I){r=I.instance,r.exports.__wasm_call_ctors()});function a(I){for(var _=new Uint8Array(I.length),E=0;E96?S-97:S>64?S-39:S+4}for(var R=0,E=0;E0?b(I,_,E,u[S],d[R]):s.then(function(){var G=new Uint8Array(I*_);return c(r,r.exports[u[S]],G,I,_,E,r.exports[d[R]]),G})}}}();var Aln=y(C()),fln=function(){var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(f){n=f.instance,n.exports.__wasm_call_ctors()});function o(f){for(var b=new Uint8Array(f.length),x=0;x96?I-97:I>64?I-39:I+4}for(var _=0,x=0;x=3),r(I>=0&&I<=f.length),r(I%3==0),r(_>=0);for(var S=0,R=0;R<(E?E.length:0);++R)r(E[R]in g),S|=g[E[R]];var G=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f),B=d(n.exports.meshopt_simplify,G,f.length,b,b.length/x,x*4,I,_,S);return B[0]=f instanceof Uint32Array?B[0]:new f.constructor(B[0]),B},simplifyWithAttributes:function(f,b,x,I,_,E,S,R,G,B){r(f instanceof Uint32Array||f instanceof Int32Array||f instanceof Uint16Array||f instanceof Int16Array),r(f.length%3==0),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3),r(I instanceof Float32Array),r(I.length%_==0),r(_>=0),r(S==null||S instanceof Uint8Array),r(S==null||S.length==b.length/x),r(R>=0&&R<=f.length),r(R%3==0),r(G>=0),r(Array.isArray(E)),r(_>=E.length),r(E.length<=32);for(var w=0;w=0);for(var F=0,w=0;w<(B?B.length:0);++w)r(B[w]in g),F|=g[B[w]];var P=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f),A=u(n.exports.meshopt_simplifyWithAttributes,P,f.length,b,b.length/x,x*4,I,_*4,new Float32Array(E),S?new Uint8Array(S):null,R,G,F);return A[0]=f instanceof Uint32Array?A[0]:new f.constructor(A[0]),A},getScale:function(f,b){return r(f instanceof Float32Array),r(f.length%b==0),r(b>=3),h(n.exports.meshopt_simplifyScale,f,f.length/b,b*4)},simplifyPoints:function(f,b,x,I,_,E){return r(f instanceof Float32Array),r(f.length%b==0),r(b>=3),r(x>=0&&x<=f.length/b),I?(r(I instanceof Float32Array),r(I.length%_==0),r(_>=3),r(f.length/b==I.length/_),p(n.exports.meshopt_simplifyPoints,f,f.length/b,b*4,I,_*4,E,x)):p(n.exports.meshopt_simplifyPoints,f,f.length/b,b*4,void 0,0,0,x)}}}();var yln=y(C()),gln=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(f){n=f.instance,n.exports.__wasm_call_ctors()});function o(f){for(var b=new Uint8Array(f.length),x=0;x96?I-97:I>64?I-39:I+4}for(var _=0,x=0;x=3),r(I<=256||I>0),r(_<=512),r(_%4==0),E=E||0;var S=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f);return u(S,b,b.length/x,x*4,I,_,E)},computeClusterBounds:function(f,b,x){r(f.length%3==0),r(f.length/3<=512),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3);var I=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f);return g(I,b,b.length/x,x*4)},computeMeshletBounds:function(f,b,x){return r(f.meshletCount!=0),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3),p(f,b,b.length/x,x*4)},extractMeshlet:function(f,b){return r(b>=0&&b{$r._error=t}),$r._decoderTaskProcessor=e}return $r._decoderTaskProcessor};$r.decodePointCloud=function(e){let t=$r._getDecoderTaskProcessor();if(l($r._error))throw $r._error;if($r._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};$r.decodeBufferView=function(e){let t=$r._getDecoderTaskProcessor();if(l($r._error))throw $r._error;if($r._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var TA=$r;var Qln=y(C(),1);var On={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function NMe(e){switch(e){case On.POSITION:return"positionMC";case On.NORMAL:return"normalMC";case On.TANGENT:return"tangentMC";case On.TEXCOORD:return"texCoord";case On.COLOR:return"color";case On.JOINTS:return"joints";case On.WEIGHTS:return"weights";case On.FEATURE_ID:return"featureId";case On.SCALE:return"scale";case On.ROTATION:return"rotation"}}On.hasSetIndex=function(e){switch(e){case On.POSITION:case On.NORMAL:case On.TANGENT:return!1;case On.TEXCOORD:case On.COLOR:case On.JOINTS:case On.WEIGHTS:case On.FEATURE_ID:case On.SCALE:case On.ROTATION:return!0}};On.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return On.POSITION;case"NORMAL":return On.NORMAL;case"TANGENT":return On.TANGENT;case"TEXCOORD":return On.TEXCOORD;case"COLOR":return On.COLOR;case"JOINTS":return On.JOINTS;case"WEIGHTS":return On.WEIGHTS;case"_FEATURE_ID":return On.FEATURE_ID;case"_SCALE":return On.SCALE;case"_ROTATION":return On.ROTATION}};On.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return On.POSITION;case"RGBA":case"RGB":case"RGB565":return On.COLOR;case"NORMAL":case"NORMAL_OCT16P":return On.NORMAL;case"BATCH_ID":return On.FEATURE_ID}};On.getGlslType=function(e){switch(e){case On.POSITION:case On.NORMAL:case On.TANGENT:return"vec3";case On.TEXCOORD:return"vec2";case On.COLOR:return"vec4";case On.JOINTS:return"ivec4";case On.WEIGHTS:return"vec4";case On.FEATURE_ID:return"int";case On.SCALE:return"vec3";case On.ROTATION:return"vec4";case On.OPACITY:return"float"}};On.getVariableName=function(e,t){let n=NMe(e);return l(t)&&(n+=`_${t}`),n};var lt=Object.freeze(On);function vb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=ft.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(vb.prototype=Object.create(Yi.prototype),vb.prototype.constructor=vb);Object.defineProperties(vb.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function DMe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=ft.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Zse(e,n)}}vb.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=ft.LOADING,this._promise=DMe(this),this._promise)};function Zse(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load Draco",t)}async function QMe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=ft.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var WC={};WC[lt.POSITION]="POSITION";WC[lt.NORMAL]="NORMAL";WC[lt.COLOR]="COLOR";WC[lt.TEXCOORD]="TEX_COORD";function UMe(e){for(let t in WC)if(WC.hasOwnProperty(t)&&e.startsWith(t))return WC[t]}vb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.PROCESSING||(l(this._dracoError)&&Zse(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let p=UMe(h);l(p)&&i.accessors[n.attributes[h]].componentType===J.FLOAT&&(c.includes(p)||c.push(p))}let d={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},u=TA.decodeBufferView(d);if(!l(u))return!1;this._decodePromise=QMe(this,u)};vb.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var hE=vb;var ddn=y(C(),1);var tdn=y(C(),1);function kMe(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return Ve.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(Ve.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new Ve({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var FC=kMe;function SA(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,d=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=d,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=ft.UNLOADED,this._promise=void 0}l(Object.create)&&(SA.prototype=Object.create(Yi.prototype),SA.prototype.constructor=SA);Object.defineProperties(SA.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});SA.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=YMe(this),this._promise):(this._promise=OMe(this),this._promise)};function Bse(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function YMe(e){e._state=ft.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await zMe(i);if(e.isDestroyed())return;let r=Bse(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=ft.READY,e}catch(n){return e.isDestroyed()?void 0:wse(e,n,"Failed to load embedded image")}}async function OMe(e){e._state=ft.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await JMe(i);if(e.isDestroyed())return;let r=Bse(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=ft.READY,e}catch(o){return e.isDestroyed()?void 0:wse(e,o,`Failed to load image: ${n}`)}}function wse(e,t,n){return e.unload(),e._state=ft.FAILED,Promise.reject(e.getError(n,t))}function HMe(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new de("Image format is not recognized")}async function zMe(e){let t=HMe(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return Kl(n)}return SA._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var KMe=/(^data:image\/ktx2)|(\.ktx2$)/i;function JMe(e){let t=e.getUrlComponent(!1,!0);return KMe.test(t)?Kl(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}SA.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};SA._loadImageFromTypedArray=FC;var fE=SA;var Edn=y(C(),1);var mdn=y(C(),1),jMe={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},uc=Object.freeze(jMe);function Nb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,d=e.asynchronous??!0,u=e.loadBuffer??!1,h=e.loadTypedArray??!1,p=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=p,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=d,this._loadBuffer=u,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=ft.UNLOADED,this._promise=void 0}l(Object.create)&&(Nb.prototype=Object.create(Yi.prototype),Nb.prototype.constructor=Nb);Object.defineProperties(Nb.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var qMe=new lz;Nb.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=$Me(this),this._promise):(this._promise=eve(this),this._promise)};async function $Me(e){e._state=ft.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=ft.LOADED,e)}catch(n){if(e.isDestroyed())return;cz(e,n)}}async function eve(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=ft.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=tve(e,a),e._state=ft.PROCESSING,e}catch(s){if(e.isDestroyed())return;cz(e,s)}}function tve(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Me.getSizeInBytes(s),c=t.buffer,d=t.byteOffset+o.byteOffset;if(d%a!==0){let h=r*a,p=new Uint8Array(c,d,h);c=new Uint8Array(p).buffer,d=0,_r("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let u;return s===Me.UNSIGNED_BYTE?u=new Uint8Array(c,d,r):s===Me.UNSIGNED_SHORT?u=new Uint16Array(c,d,r):s===Me.UNSIGNED_INT&&(u=new Uint32Array(c,d,r)),u}function cz(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load index buffer",t)}function lz(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}lz.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};lz.prototype.execute=function(){this.buffer=Xse(this.typedArray,this.indexDatatype,this.context)};function Xse(e,t,n){let i=It.createIndexBuffer({typedArray:e,context:n,usage:Ne.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}Nb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.LOADED&&this._state!==ft.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=J.fromTypedArray(t),this._indexDatatype=n)}catch(o){cz(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=qMe;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,uc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=Xse(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=ft.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Nb.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var pE=Nb;var Shn=y(C(),1);var Hdn=y(C(),1);var Sdn=y(C(),1);function nve(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var Os=nve;var wdn=y(C(),1);var Vdn=y(C(),1);function ive(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Er=ive;function an(){}an.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};an.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i0)return i.byteStride}return J.getSizeInBytes(t.componentType)*Ud(t.type)}var nd=rve;function sve(e){Xe.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Xe.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){if(i.mode=i.mode??ne.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=Os(e.materials,o)}})}),Xe.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=nd(e,i),r.target=ne.ARRAY_BUFFER}}),Xe.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ne.ELEMENT_ARRAY_BUFFER}}),Xe.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,d=l(o.values)?o.values:{};o.values=d,d.ambient=l(d.ambient)?d.ambient:[0,0,0,1],d.emission=l(d.emission)?d.emission:[0,0,0,1],d.transparency=d.transparency??1,c!=="CONSTANT"&&(d.diffuse=l(d.diffuse)?d.diffuse:[0,0,0,1],c!=="LAMBERT"&&(d.specular=l(d.specular)?d.specular:[0,0,0,1],d.shininess=d.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Xe.materialValue(n,function(c){l(c.index)&&PC(c)}),PC(n.emissiveTexture),PC(n.normalTexture),PC(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,PC(s.baseColorTexture),PC(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,PC(a.specularGlossinessTexture))}),Xe.animation(e,function(n){Xe.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=ave(e);return Xe.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Xe.sampler(e,function(n){n.wrapS=n.wrapS??ne.REPEAT,n.wrapT=n.wrapT??ne.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function ave(e){let t={};return Xe.animation(e,function(n){Xe.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function PC(e){l(e)&&(e.texCoord=e.texCoord??0)}var XZ=sve;var jdn=y(C(),1);function cve(e){return Xe.shader(e,function(t){qD(t)}),Xe.buffer(e,function(t){qD(t)}),Xe.image(e,function(t){qD(t)}),qD(e),e}function qD(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var Db=cve;var mun=y(C(),1);var oun=y(C(),1);var eun=y(C(),1);function lve(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var WZ=lve;function dve(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),WZ(e,t),n.length===0&&delete e.extensionsUsed}}var MC=dve;var uve=4;function mve(e){if(gh(e)!=="glTF")throw new de("File is not valid binary glTF");let n=Wse(e,0,5),i=n[1];if(i!==1&&i!==2)throw new de("Binary glTF version is not 1 or 2");return i===1?hve(e,n):fve(e,n)}function Wse(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r0){let h=u.binary_glTF??u.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=d,delete h.uri)}return MC(c,"KHR_binary_glTF"),c}function fve(e,t){let n=t[2],i=12,o,r;for(;i0){let a=s[0];a.extras._pipeline.source=r}}return o}var FZ=mve;var Aun=y(C(),1);function pve(e){return Xe.shader(e,function(t){$D(t)}),Xe.buffer(e,function(t){$D(t)}),Xe.image(e,function(t){$D(t)}),$D(e),e}function $D(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var PZ=pve;var zmn=y(C(),1);var Cun=y(C(),1);function Ave(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),Os(n,t,!0)}var tm=Ave;var Gun=y(C(),1);var _un=y(C(),1);function gve(e){switch(e){case J.BYTE:return function(t,n,i,o,r){for(let s=0;s-1:!1}var xve=[ne.ZERO,ne.ONE,ne.SRC_COLOR,ne.ONE_MINUS_SRC_COLOR,ne.SRC_ALPHA,ne.ONE_MINUS_SRC_ALPHA,ne.DST_ALPHA,ne.ONE_MINUS_DST_ALPHA,ne.DST_COLOR,ne.ONE_MINUS_DST_COLOR];function Ive(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(xve.indexOf(e[n])===-1)return t;return e}function _ve(e){let t={},n={},i=e.techniques;return l(i)&&(Xe.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(Fse(s,ne.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??yve,blendFactors:Ive(c.blendFuncSeparate,Cve)})}Fse(s,ne.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),tm(e,"KHR_blend")),Xe.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Xe.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var MZ=_ve;var zun=y(C(),1);var Dun=y(C(),1);function Eve(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),Os(n,t,!0),tm(e,t)}var vZ=Eve;function Tve(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Xe.technique(e,function(a,c){let d={name:a.name,program:void 0,attributes:{},uniforms:{}},u;if(Xe.techniqueAttribute(a,function(h,p){u=a.parameters[h],d.attributes[p]={semantic:u.semantic}}),Xe.techniqueUniform(a,function(h,p){u=a.parameters[h],d.uniforms[p]={count:u.count,node:u.node,type:u.type,semantic:u.semantic,value:u.value},l(n[c])||(n[c]={}),n[c][h]=p}),l(o[a.program]))d.program=o[a.program];else{let h=e.programs[a.program],p={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];p.fragmentShader=Os(r.shaders,g,!0);let f=e.shaders[h.vertexShader];p.vertexShader=Os(r.shaders,f,!0),d.program=Os(r.programs,p),o[a.program]=d.program}i[c]=Os(r.techniques,d)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,tm(e,"KHR_techniques_webgl"),vZ(e,"KHR_techniques_webgl"))}return Xe.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Xe.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let d=n[r.technique][c];l(d)&&(s.values[d]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var NZ=Tve;var rmn=y(C(),1);var $un=y(C(),1);function Sve(e,t){Bo.typeOf.object("material",e),Bo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,d=t(c.index,c);if(l(d))return d}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,d=t(c.index,c);if(l(d))return d}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:d}=s;if(l(c)){let u=t(c.index,c);if(l(u))return u}if(l(d)){let u=t(d.index,d);if(l(u))return u}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:d,emission:u,specular:h}=a.values;if(l(c)&&l(c.index)){let p=t(c.index,c);if(l(p))return p}if(l(d)&&l(d.index)){let p=t(d.index,d);if(l(p))return p}if(l(u)&&l(u.index)){let p=t(u.index,u);if(l(p))return p}if(l(h)&&l(h.index)){let p=t(h.index,h);if(l(p))return p}}}let o=Xe.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var AE=Sve;var Pse=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function Lve(e,t){return t=t??Pse,Pse.forEach(function(n){t.indexOf(n)>-1&&Vve(e,n)}),e}var Rve={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function Vve(e,t){let n=Rve[t],i=e[n];if(l(i)){let o=0,r=kf[t](e),s=i.length;for(let a=0;at&&o.attributes[c]--}),Xe.meshPrimitiveTarget(o,function(a){Xe.meshPrimitiveTargetAttribute(a,function(c,d){c>t&&a[d]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Xe.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Xe.animation(e,function(i){Xe.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};Uf.buffer=function(e,t){e.buffers.splice(t,1),Xe.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};Uf.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Xe.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Xe.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Xe.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Er(e,"KHR_draco_mesh_compression")&&Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Er(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let d=a[c];l(d.bufferView)&&d.bufferView>t&&d.bufferView--,l(d.arrayOffsetBufferView)&&d.arrayOffsetBufferView>t&&d.arrayOffsetBufferView--,l(d.stringOffsetBufferView)&&d.stringOffsetBufferView>t&&d.stringOffsetBufferView--}}}}if(Er(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;st&&u.values--,l(u.arrayOffsets)&&u.arrayOffsets>t&&u.arrayOffsets--,l(u.stringOffsets)&&u.stringOffsets>t&&u.stringOffsets--}}}}};Uf.image=function(e,t){e.images.splice(t,1),Xe.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};Uf.mesh=function(e,t){e.meshes.splice(t,1),Xe.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};Uf.node=function(e,t){e.nodes.splice(t,1),Xe.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Xe.animation(e,function(i){Xe.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Xe.technique(e,function(i){Xe.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Xe.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Xe.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};Uf.material=function(e,t){e.materials.splice(t,1),Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};Uf.sampler=function(e,t){e.samplers.splice(t,1),Xe.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};Uf.texture=function(e,t){if(e.textures.splice(t,1),Xe.material(e,function(i){AE(i,function(o,r){r.index>t&&--r.index})}),Er(e,"EXT_feature_metadata")){Xe.mesh(e,function(r){Xe.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let d=a.EXT_feature_metadata.featureIdTextures;if(l(d)){let u=d.length;for(let h=0;ht&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c].texture;u.index>t&&--u.index}}}}if(Er(e,"EXT_mesh_features")&&Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let d=0;dt&&--u.texture.index}}}})}),Er(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;st&&--u.index}}}}};function kf(){}kf.accessor=function(e){let t={};return Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){Xe.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Xe.meshPrimitiveTarget(i,function(r){Xe.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Xe.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Xe.animation(e,function(n){Xe.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Er(e,"EXT_mesh_gpu_instancing")&&Xe.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Er(e,"CESIUM_primitive_outline")&&Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};kf.buffer=function(e){let t={};return Xe.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};kf.bufferView=function(e){let t={};if(Xe.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Xe.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Xe.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Er(e,"KHR_draco_mesh_compression")&&Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Er(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Er(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r0&&(t[n.mesh]=!0)}}),t};function Mse(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Mse(e,o,n)}).length===0}kf.node=function(e){let t={};return Xe.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Xe.skinJoint(n,function(i){t[i]=!0})}),Xe.animation(e,function(n){Xe.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Xe.technique(e,function(n){Xe.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Xe.node(e,function(n,i){Mse(e,i,t)||(t[i]=!0)}),t};kf.material=function(e){let t={};return Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};kf.texture=function(e){let t={};if(Xe.material(e,function(n){AE(n,function(i){t[i]=!0})}),Er(e,"EXT_feature_metadata")){Xe.mesh(e,function(o){Xe.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let d=c.length;for(let u=0;u0)for(s.mesh=n.meshes[c[0]],t=1;t0&&l(s.skin)){let u=e.skins[s.skin];u.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Xe.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],d=a.length;for(t=0;t=0&&(a=r.substring(0,s),c=r.substring(s));let d,u=qve[a];l(u)?(d=u+c,t[r]=d):l(jve[a])||(d=`_${r}`,t[r]=d)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Xe.technique(e,function(n){Xe.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function eNe(e){Xe.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function mz(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:nd(e,t)}function tNe(e){Xe.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Xe.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=mz(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function nNe(e){let t,n,i,o=e.bufferViews,r={};Xe.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Xe.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(p,g){return p.byteOffset-g.byteOffset});let d=0,u=0,h=c.length;for(t=0;t=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Xe.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),Qse(n)&&Use(e,i))}}),delete e.nodes[t]}function oNe(e){return Xe.node(e,function(t,n){Qse(t)&&Use(e,n)}),e}function rNe(e){Xe.animation(e,function(t){Xe.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=vC(e,i);i.min=o.min,i.max=o.max}})})}function sNe(e){Xe.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=vC(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function aNe(e){e.asset=e.asset??{},e.asset.version="2.0",Dse(e),Dve(e),oNe(e),Qve(e),Uve(e),Yve(e),Hve(e),tNe(e),nNe(e),iNe(e),rNe(e),sNe(e),zve(e),Kve(e),Jve(e),$ve(e),kZ(e),eNe(e),MZ(e),NZ(e),kve(e)}var cNe=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],lNe=["u_diffuse","u_diffuse_mat"];function hz(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function fz(e){return l(e.index)}function pz(e){return Array.isArray(e)&&e.length===4}function kse(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function dNe(e,t){t=t??{};let n=t.baseColorTextureNames??cNe,i=t.baseColorFactorNames??lNe;Xe.material(e,function(o){Xe.materialValue(o,function(r,s){n.indexOf(s)!==-1&&fz(r)?(hz(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&pz(r)&&(hz(o),o.pbrMetallicRoughness.baseColorFactor=kse(r))})}),NC(e,"KHR_techniques_webgl"),NC(e,"KHR_blend")}function uz(e,t){l(t)&&(pz(t)?e.pbrMetallicRoughness.baseColorFactor=kse(t):fz(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function Nse(e,t){l(t)&&(pz(t)?e.emissiveFactor=t.slice(0,3):fz(t)&&(e.emissiveTexture=t))}function uNe(e){Xe.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,d=n.transparent;hz(t),n.technique==="CONSTANT"?(tm(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},uz(t,s),uz(t,o)):(uz(t,r),Nse(t,o),Nse(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(d)&&(t.alphaMode=d?"BLEND":"OPAQUE")}),NC(e,"KHR_materials_common")}var YZ=Wve;var ahn=y(C(),1);function wc(){}wc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new de(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};wc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:X.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:m.ZERO,l(e.rotation)?e.rotation:Pe.IDENTITY,l(e.scale)?e.scale:m.ONE)};wc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;ro9e);var a=se(Jse.url)}var c="./this.program",d=Jse.url,u;if(s){var h=a("fs");d.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(d)),u=se=>(se=x(se)?new URL(se):se,h.readFileSync(se)),1{var oe=new XMLHttpRequest;return oe.open("GET",se,!1),oe.responseType="arraybuffer",oe.send(null),new Uint8Array(oe.response)})}var p=console.log.bind(console),g=console.error.bind(console),f,b=!1,x=se=>se.startsWith("file://"),I,_,E,S,R,G,B,w,F,P,A,T,L,V=!1;function W(){var se=E.buffer;S=new Int8Array(se),G=new Int16Array(se),i.HEAPU8=R=new Uint8Array(se),B=new Uint16Array(se),w=new Int32Array(se),F=new Uint32Array(se),i.HEAPF32=P=new Float32Array(se),A=new Float64Array(se),T=new BigInt64Array(se),L=new BigUint64Array(se)}var M=0,Q=null;function N(se){var oe;throw(oe=i.onAbort)==null||oe.call(i,se),se="Aborted("+se+")",g(se),b=!0,se=new WebAssembly.RuntimeError(se+". Build with -sASSERTIONS for more info."),_?.(se),se}var k;async function v(se){if(!ArrayBuffer.isView(se))if(se==k&&f)se=new Uint8Array(f);else if(u)se=u(se);else throw"both async and sync fetching of the wasm failed";return se}async function O(se){var oe=k;try{var _e=await v(oe);return await WebAssembly.instantiate(_e,se)}catch(Se){g(`failed to asynchronously prepare wasm: ${Se}`),N(Se)}}async function H(se){return O(se)}var ee=se=>{for(;0{var se=i.preRun.shift();te.push(se)},pe=se=>{if(s)return se=Buffer.from(se,"base64"),new Uint8Array(se.buffer,se.byteOffset,se.length);for(var oe,_e,Se=0,He=0,gt=se.length,mt=new Uint8Array((3*gt>>2)-(se[gt-2]=="=")-(se[gt-1]=="="));Se>4,mt[He+1]=oe<<4|_e>>2,mt[He+2]=_e<<6|Qp[se.charCodeAt(Se+3)];return mt},ye={},he=se=>{for(;se.length;){var oe=se.pop();se.pop()(oe)}};function xe(se){return this.N(F[se>>2])}var Te={},Be={},Le={},De=class extends Error{constructor(se){super(se),this.name="InternalError"}},Ue=(se,oe,_e)=>{function Se(Tt){if(Tt=_e(Tt),Tt.length!==se.length)throw new De("Mismatched type converter count");for(var Bn=0;BnLe[Tt]=oe);var He=Array(oe.length),gt=[],mt=0;oe.forEach((Tt,Bn)=>{Be.hasOwnProperty(Tt)?He[Bn]=Be[Tt]:(gt.push(Tt),Te.hasOwnProperty(Tt)||(Te[Tt]=[]),Te[Tt].push(()=>{He[Bn]=Be[Tt],++mt,mt===gt.length&&Se(He)}))}),gt.length===0&&Se(He)},je=se=>{for(var oe="";;){var _e=R[se++];if(!_e)return oe;oe+=String.fromCharCode(_e)}},it=class extends Error{constructor(se){super(se),this.name="BindingError"}},nn=se=>{throw new it(se)};function rt(se,oe,_e={}){var Se=oe.name;if(!se)throw new it(`type "${Se}" must have a positive integer typeid pointer`);if(Be.hasOwnProperty(se)){if(_e.wa)return;throw new it(`Cannot register type '${Se}' twice`)}Be[se]=oe,delete Le[se],Te.hasOwnProperty(se)&&(oe=Te[se],delete Te[se],oe.forEach(He=>He()))}function rn(se,oe,_e={}){return rt(se,oe,_e)}var Jt=(se,oe,_e)=>{switch(oe){case 1:return _e?Se=>S[Se]:Se=>R[Se];case 2:return _e?Se=>G[Se>>1]:Se=>B[Se>>1];case 4:return _e?Se=>w[Se>>2]:Se=>F[Se>>2];case 8:return _e?Se=>T[Se>>3]:Se=>L[Se>>3];default:throw new TypeError(`invalid integer width (${oe}): ${se}`)}},Xt=se=>{throw new it(se.L.P.M.name+" instance already deleted")},Li=!1,bi=()=>{},vt=se=>typeof FinalizationRegistry>"u"?(vt=oe=>oe,se):(Li=new FinalizationRegistry(oe=>{oe=oe.L,--oe.count.value,oe.count.value===0&&(oe.S?oe.W.Y(oe.S):oe.P.M.Y(oe.O))}),vt=oe=>{var _e=oe.L;return _e.S&&Li.register(oe,{L:_e},oe),oe},bi=oe=>{Li.unregister(oe)},vt(se));function Rt(){}var si=(se,oe)=>Object.defineProperty(oe,"name",{value:se}),_t={},Fo=(se,oe,_e)=>{if(se[oe].R===void 0){var Se=se[oe];se[oe]=function(...He){if(!se[oe].R.hasOwnProperty(He.length))throw new it(`Function '${_e}' called with an invalid number of arguments (${He.length}) - expects one of (${se[oe].R})!`);return se[oe].R[He.length].apply(this,He)},se[oe].R=[],se[oe].R[Se.aa]=Se}},Uo=(se,oe,_e)=>{if(i.hasOwnProperty(se)){if(_e===void 0||i[se].R!==void 0&&i[se].R[_e]!==void 0)throw new it(`Cannot register public name '${se}' twice`);if(Fo(i,se,se),i[se].R.hasOwnProperty(_e))throw new it(`Cannot register multiple overloads of a function with the same number of arguments (${_e})!`);i[se].R[_e]=oe}else i[se]=oe,i[se].aa=_e},Va=se=>{se=se.replace(/[^a-zA-Z0-9_]/g,"$");var oe=se.charCodeAt(0);return 48<=oe&&57>=oe?`_${se}`:se};function Cr(se,oe,_e,Se,He,gt,mt,Tt){this.name=se,this.constructor=oe,this.$=_e,this.Y=Se,this.U=He,this.ra=gt,this.ea=mt,this.pa=Tt,this.ya=[]}var wr=(se,oe,_e)=>{for(;oe!==_e;){if(!oe.ea)throw new it(`Expected null or instance of ${_e.name}, got an instance of ${oe.name}`);se=oe.ea(se),oe=oe.U}return se},ve=se=>{if(se===null)return"null";var oe=typeof se;return oe==="object"||oe==="array"||oe==="function"?se.toString():""+se};function ut(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);return 0}if(!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);return wr(oe.L.O,oe.L.P.M,this.M)}function qe(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);if(this.ga){var _e=this.ia();return se!==null&&se.push(this.Y,_e),_e}return 0}if(!oe||!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&oe.L.P.fa)throw new it(`Cannot convert argument of type ${oe.L.W?oe.L.W.name:oe.L.P.name} to parameter type ${this.name}`);if(_e=wr(oe.L.O,oe.L.P.M,this.M),this.ga){if(oe.L.S===void 0)throw new it("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(oe.L.W===this)_e=oe.L.S;else throw new it(`Cannot convert argument of type ${oe.L.W?oe.L.W.name:oe.L.P.name} to parameter type ${this.name}`);break;case 1:_e=oe.L.S;break;case 2:if(oe.L.W===this)_e=oe.L.S;else{var Se=oe.clone();_e=this.za(_e,fs(()=>Se.delete())),se!==null&&se.push(this.Y,_e)}break;default:throw new it("Unsupporting sharing policy")}}return _e}function nt(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);return 0}if(!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);if(oe.L.P.fa)throw new it(`Cannot convert argument of type ${oe.L.P.name} to parameter type ${this.name}`);return wr(oe.L.O,oe.L.P.M,this.M)}var yt=(se,oe,_e)=>oe===_e?se:_e.U===void 0?null:(se=yt(se,oe,_e.U),se===null?null:_e.pa(se)),$t={},Sn=(se,oe)=>{if(oe===void 0)throw new it("ptr should not be undefined");for(;se.U;)oe=se.ea(oe),se=se.U;return $t[oe]},fo=(se,oe)=>{if(!oe.P||!oe.O)throw new De("makeClassHandle requires ptr and ptrType");if(!!oe.W!=!!oe.S)throw new De("Both smartPtrType and smartPtr must be specified");return oe.count={value:1},vt(Object.create(se,{L:{value:oe,writable:!0}}))};function uo(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn,fn){this.name=se,this.M=oe,this.ha=_e,this.fa=Se,this.ga=He,this.xa=gt,this.Da=mt,this.na=Tt,this.ia=Bn,this.za=zn,this.Y=fn,He||oe.U!==void 0?this.T=qe:(this.T=Se?ut:nt,this.V=null)}var ra=(se,oe,_e)=>{if(!i.hasOwnProperty(se))throw new De("Replacing nonexistent public symbol");i[se].R!==void 0&&_e!==void 0?i[se].R[_e]=oe:(i[se]=oe,i[se].aa=_e)},sa,Hn=(se,oe)=>{se=je(se);var _e=sa.get(oe);if(typeof _e!="function")throw new it(`unknown function pointer with signature ${se}: ${oe}`);return _e};class Ti extends Error{}var Rs=se=>{se=Zee(se);var oe=je(se);return lb(se),oe},Jo=(se,oe)=>{function _e(gt){He[gt]||Be[gt]||(Le[gt]?Le[gt].forEach(_e):(Se.push(gt),He[gt]=!0))}var Se=[],He={};throw oe.forEach(_e),new Ti(`${se}: `+Se.map(Rs).join([", "]))},Ga=(se,oe)=>{for(var _e=[],Se=0;Se>2]);return _e};function po(se){for(var oe=1;oemt)throw new it("argTypes array size mismatch! Must at least get return value and 'this' types!");var Tt=oe[1]!==null&&_e!==null,Bn=po(oe);_e=!oe[0].ma;var zn=oe[0],fn=oe[1];for(Se=[se,nn,Se,He,he,zn.N.bind(zn),fn?.T.bind(fn)],He=2;He{se=se.trim();let oe=se.indexOf("(");return oe===-1?se:se.slice(0,oe)},xr=[],Vs=[0,1,,1,null,1,!0,1,!1,1],ks=se=>{9{if(!se)throw new it(`Cannot use deleted val. handle = ${se}`);return Vs[se]},fs=se=>{switch(se){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let oe=xr.pop()||Vs.length;return Vs[oe]=se,Vs[oe+1]=1,oe}},tc={name:"emscripten::val",N:se=>{var oe=Jm(se);return ks(se),oe},T:(se,oe)=>fs(oe),X:xe,V:null},nc=(se,oe,_e)=>{switch(oe){case 1:return _e?function(Se){return this.N(S[Se])}:function(Se){return this.N(R[Se])};case 2:return _e?function(Se){return this.N(G[Se>>1])}:function(Se){return this.N(B[Se>>1])};case 4:return _e?function(Se){return this.N(w[Se>>2])}:function(Se){return this.N(F[Se>>2])};default:throw new TypeError(`invalid integer width (${oe}): ${se}`)}},Xr=(se,oe)=>{var _e=Be[se];if(_e===void 0)throw se=`${oe} has unknown type ${Rs(se)}`,new it(se);return _e},kl=(se,oe)=>{switch(oe){case 4:return function(_e){return this.N(P[_e>>2])};case 8:return function(_e){return this.N(A[_e>>3])};default:throw new TypeError(`invalid float width (${oe}): ${se}`)}},Yl=Object.assign({optional:!0},tc),aa=(se,oe,_e)=>{var Se=R;if(!(0<_e))return 0;var He=oe;_e=oe+_e-1;for(var gt=0;gt=mt){if(oe>=_e)break;Se[oe++]=mt}else if(2047>=mt){if(oe+1>=_e)break;Se[oe++]=192|mt>>6,Se[oe++]=128|mt&63}else if(65535>=mt){if(oe+2>=_e)break;Se[oe++]=224|mt>>12,Se[oe++]=128|mt>>6&63,Se[oe++]=128|mt&63}else{if(oe+3>=_e)break;Se[oe++]=240|mt>>18,Se[oe++]=128|mt>>12&63,Se[oe++]=128|mt>>6&63,Se[oe++]=128|mt&63,gt++}}return Se[oe]=0,oe-He},Zo=se=>{for(var oe=0,_e=0;_e=Se?oe++:2047>=Se?oe+=2:55296<=Se&&57343>=Se?(oe+=4,++_e):oe+=3}return oe},mn=new TextDecoder,Re=(se,oe,_e,Se)=>{if(_e=oe+_e,Se)return _e;for(;se[oe]&&!(oe>=_e);)++oe;return oe},Vt=new TextDecoder("utf-16le"),Cn=(se,oe,_e)=>(se>>=1,Vt.decode(B.subarray(se,Re(B,se,oe/2,_e)))),rr=(se,oe,_e)=>{if(_e??(_e=2147483647),2>_e)return 0;_e-=2;var Se=oe;_e=_e<2*se.length?_e/2:se.length;for(var He=0;He<_e;++He)G[oe>>1]=se.charCodeAt(He),oe+=2;return G[oe>>1]=0,oe-Se},Za=se=>2*se.length,Gs=(se,oe,_e)=>{var Se="";se>>=2;for(var He=0;!(He>=oe/4);He++){var gt=F[se+He];if(!gt&&!_e)break;Se+=String.fromCodePoint(gt)}return Se},Ic=(se,oe,_e)=>{if(_e??(_e=2147483647),4>_e)return 0;var Se=oe;_e=Se+_e-4;for(var He=0;He>2]=gt,oe+=4,oe+4>_e)break}return w[oe>>2]=0,oe-Se},jm=se=>{for(var oe=0,_e=0;_e{var oe=Dp.length;return Dp.push(se),oe},Ba=(se,oe)=>{for(var _e=Array(se),Se=0;Se>2],`parameter ${Se}`);return _e},x9=(se,oe,_e)=>{var Se=[];return se=se(Se,_e),Se.length&&(F[oe>>2]=fs(Se)),se},I9={},kSe=se=>{var oe=I9[se];return oe===void 0?je(se):oe},S3={},Gee=()=>{if(!L3){var se={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},oe;for(oe in S3)S3[oe]===void 0?delete se[oe]:se[oe]=S3[oe];var _e=[];for(oe in se)_e.push(`${oe}=${se[oe]}`);L3=_e}return L3},L3,YSe=[null,[],[]],Qp=new Uint8Array(123),cb=25;0<=cb;--cb)Qp[48+cb]=52+cb,Qp[65+cb]=cb,Qp[97+cb]=26+cb;Qp[43]=62,Qp[47]=63,(()=>{let se=Rt.prototype;Object.assign(se,{isAliasOf:function(_e){if(!(this instanceof Rt&&_e instanceof Rt))return!1;var Se=this.L.P.M,He=this.L.O;_e.L=_e.L;var gt=_e.L.P.M;for(_e=_e.L.O;Se.U;)He=Se.ea(He),Se=Se.U;for(;gt.U;)_e=gt.ea(_e),gt=gt.U;return Se===gt&&He===_e},clone:function(){if(this.L.O||Xt(this),this.L.da)return this.L.count.value+=1,this;var _e=vt,Se=Object,He=Se.create,gt=Object.getPrototypeOf(this),mt=this.L;return _e=_e(He.call(Se,gt,{L:{value:{count:mt.count,ba:mt.ba,da:mt.da,O:mt.O,P:mt.P,S:mt.S,W:mt.W}}})),_e.L.count.value+=1,_e.L.ba=!1,_e},delete(){if(this.L.O||Xt(this),this.L.ba&&!this.L.da)throw new it("Object already scheduled for deletion");bi(this);var _e=this.L;--_e.count.value,_e.count.value===0&&(_e.S?_e.W.Y(_e.S):_e.P.M.Y(_e.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||Xt(this),this.L.ba&&!this.L.da)throw new it("Object already scheduled for deletion");return this.L.ba=!0,this}});let oe=Symbol.dispose;oe&&(se[oe]=se.delete)})(),Object.assign(uo.prototype,{sa(se){return this.na&&(se=this.na(se)),se},ka(se){var oe;(oe=this.Y)==null||oe.call(this,se)},X:xe,N:function(se){function oe(){return this.ga?fo(this.M.$,{P:this.xa,O:_e,W:this,S:se}):fo(this.M.$,{P:this,O:se})}var _e=this.sa(se);if(!_e)return this.ka(se),null;var Se=Sn(this.M,_e);if(Se!==void 0)return Se.L.count.value===0?(Se.L.O=_e,Se.L.S=se,Se.clone()):(Se=Se.clone(),this.ka(se),Se);if(Se=this.M.ra(_e),Se=_t[Se],!Se)return oe.call(this);Se=this.fa?Se.oa:Se.pointerType;var He=yt(_e,this.M,Se.M);return He===null?oe.call(this):this.ga?fo(Se.M.$,{P:Se,O:He,W:this,S:se}):fo(Se.M.$,{P:Se,O:He})}}),i.print&&(p=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(f=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var Zee,R3,lb,OSe={x:()=>N(""),q:se=>{var oe=ye[se];delete ye[se];var _e=oe.ia,Se=oe.Y,He=oe.la,gt=He.map(mt=>mt.va).concat(He.map(mt=>mt.Ba));Ue([se],gt,mt=>{var Tt={};return He.forEach((Bn,zn)=>{var fn=mt[zn],ps=Bn.ta,Gd=Bn.ua,nl=mt[zn+He.length],il=Bn.Aa,Fu=Bn.Ca;Tt[Bn.qa]={read:Up=>fn.N(ps(Gd,Up)),write:(Up,KL)=>{var Zd=[];il(Fu,Up,nl.T(Zd,KL)),he(Zd)},optional:mt[zn].optional}}),[{name:oe.name,N:Bn=>{var zn={},fn;for(fn in Tt)zn[fn]=Tt[fn].read(Bn);return Se(Bn),zn},T:(Bn,zn)=>{for(var fn in Tt)if(!(fn in zn||Tt[fn].optional))throw new TypeError(`Missing field: "${fn}"`);var ps=_e();for(fn in Tt)Tt[fn].write(ps,zn[fn]);return Bn!==null&&Bn.push(Se,ps),ps},X:xe,V:Se}]})},n:(se,oe,_e,Se,He)=>{oe=je(oe),Se=Se===0n;let gt=mt=>mt;if(Se){let mt=8*_e;gt=Tt=>BigInt.asUintN(mt,Tt),He=gt(He)}rn(se,{name:oe,N:gt,T:(mt,Tt)=>(typeof Tt=="number"&&(Tt=BigInt(Tt)),Tt),X:Jt(oe,_e,!Se),V:null})},B:(se,oe,_e,Se)=>{oe=je(oe),rn(se,{name:oe,N:function(He){return!!He},T:function(He,gt){return gt?_e:Se},X:function(He){return this.N(R[He])},V:null})},j:(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn,fn,ps,Gd)=>{fn=je(fn),gt=Hn(He,gt),Tt&&(Tt=Hn(mt,Tt)),zn&&(zn=Hn(Bn,zn)),Gd=Hn(ps,Gd);var nl=Va(fn);Uo(nl,function(){Jo(`Cannot construct ${fn} due to unbound types`,[Se])}),Ue([se,oe,_e],Se?[Se]:[],il=>{if(il=il[0],Se)var Fu=il.M,Up=Fu.$;else Up=Rt.prototype;il=si(fn,function(...G3){if(Object.getPrototypeOf(this)!==KL)throw new it(`Use 'new' to construct ${fn}`);if(Zd.Z===void 0)throw new it(`${fn} has no accessible constructor`);var Bee=Zd.Z[G3.length];if(Bee===void 0)throw new it(`Tried to invoke ctor of ${fn} with invalid number of parameters (${G3.length}) - expected (${Object.keys(Zd.Z).toString()}) parameters instead!`);return Bee.apply(this,G3)});var KL=Object.create(Up,{constructor:{value:il}});il.prototype=KL;var Zd=new Cr(fn,il,KL,Gd,Fu,gt,Tt,zn);if(Zd.U){var JL;(JL=Zd.U).ja??(JL.ja=[]),Zd.U.ja.push(Zd)}return Fu=new uo(fn,Zd,!0,!1,!1),JL=new uo(fn+"*",Zd,!1,!1,!1),Up=new uo(fn+" const*",Zd,!1,!0,!1),_t[se]={pointerType:JL,oa:Up},ra(nl,il),[Fu,JL,Up]})},g:(se,oe,_e,Se,He,gt)=>{var mt=Ga(oe,_e);He=Hn(Se,He),Ue([],[se],Tt=>{Tt=Tt[0];var Bn=`constructor ${Tt.name}`;if(Tt.M.Z===void 0&&(Tt.M.Z=[]),Tt.M.Z[oe-1]!==void 0)throw new it(`Cannot register multiple constructors with identical number of parameters (${oe-1}) for class '${Tt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Tt.M.Z[oe-1]=()=>{Jo(`Cannot construct ${Tt.name} due to unbound types`,mt)},Ue([],mt,zn=>(zn.splice(1,0,null),Tt.M.Z[oe-1]=jo(Bn,zn,null,He,gt),[])),[]})},b:(se,oe,_e,Se,He,gt,mt,Tt,Bn)=>{var zn=Ga(_e,Se);oe=je(oe),oe=Wu(oe),gt=Hn(He,gt),Ue([],[se],fn=>{function ps(){Jo(`Cannot call ${Gd} due to unbound types`,zn)}fn=fn[0];var Gd=`${fn.name}.${oe}`;oe.startsWith("@@")&&(oe=Symbol[oe.substring(2)]),Tt&&fn.M.ya.push(oe);var nl=fn.M.$,il=nl[oe];return il===void 0||il.R===void 0&&il.className!==fn.name&&il.aa===_e-2?(ps.aa=_e-2,ps.className=fn.name,nl[oe]=ps):(Fo(nl,oe,Gd),nl[oe].R[_e-2]=ps),Ue([],zn,Fu=>(Fu=jo(Gd,Fu,fn,gt,mt,Bn),nl[oe].R===void 0?(Fu.aa=_e-2,nl[oe]=Fu):nl[oe].R[_e-2]=Fu,[])),[]})},z:se=>rn(se,tc),r:(se,oe,_e,Se)=>{function He(){}oe=je(oe),He.values={},rn(se,{name:oe,constructor:He,N:function(gt){return this.constructor.values[gt]},T:(gt,mt)=>mt.value,X:nc(oe,_e,Se),V:null}),Uo(oe,He)},d:(se,oe,_e)=>{var Se=Xr(se,"enum");oe=je(oe),se=Se.constructor,Se=Object.create(Se.constructor.prototype,{value:{value:_e},constructor:{value:si(`${Se.name}_${oe}`,function(){})}}),se.values[_e]=Se,se[oe]=Se},m:(se,oe,_e)=>{oe=je(oe),rn(se,{name:oe,N:Se=>Se,T:(Se,He)=>He,X:kl(oe,_e),V:null})},l:(se,oe,_e,Se,He,gt,mt)=>{var Tt=Ga(oe,_e);se=je(se),se=Wu(se),He=Hn(Se,He),Uo(se,function(){Jo(`Cannot call ${se} due to unbound types`,Tt)},oe-1),Ue([],Tt,Bn=>(Bn=[Bn[0],null].concat(Bn.slice(1)),ra(se,jo(se,Bn,null,He,gt,mt),oe-1),[]))},c:(se,oe,_e,Se,He)=>{oe=je(oe);let gt=Tt=>Tt;if(Se===0){var mt=32-8*_e;gt=Tt=>Tt<>>mt,He=gt(He)}rn(se,{name:oe,N:gt,T:(Tt,Bn)=>Bn,X:Jt(oe,_e,Se!==0),V:null})},a:(se,oe,_e)=>{function Se(gt){return new He(S.buffer,F[gt+4>>2],F[gt>>2])}var He=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][oe];_e=je(_e),rn(se,{name:_e,N:Se,X:Se},{wa:!0})},h:se=>{rn(se,Yl)},A:(se,oe)=>{oe=je(oe),rn(se,{name:oe,N(_e){var Se=(Se=_e+4)?mn.decode(R.subarray(Se,Re(R,Se,F[_e>>2],!0))):"";return lb(_e),Se},T(_e,Se){Se instanceof ArrayBuffer&&(Se=new Uint8Array(Se));var He=typeof Se=="string";if(!(He||ArrayBuffer.isView(Se)&&Se.BYTES_PER_ELEMENT==1))throw new it("Cannot pass non-string to std::string");var gt=He?Zo(Se):Se.length,mt=R3(4+gt+1),Tt=mt+4;return F[mt>>2]=gt,He?aa(Se,Tt,gt+1):R.set(Se,Tt),_e!==null&&_e.push(lb,mt),mt},X:xe,V(_e){lb(_e)}})},f:(se,oe,_e)=>{if(_e=je(_e),oe===2)var Se=Cn,He=rr,gt=Za;else Se=Gs,He=Ic,gt=jm;rn(se,{name:_e,N:mt=>{var Tt=Se(mt+4,F[mt>>2]*oe,!0);return lb(mt),Tt},T:(mt,Tt)=>{if(typeof Tt!="string")throw new it(`Cannot pass non-string to C++ string type ${_e}`);var Bn=gt(Tt),zn=R3(4+Bn+oe);return F[zn>>2]=Bn/oe,He(Tt,zn+4,Bn+oe),mt!==null&&mt.push(lb,zn),zn},X:xe,V(mt){lb(mt)}})},i:(se,oe,_e,Se,He,gt)=>{ye[se]={name:je(oe),ia:Hn(_e,Se),Y:Hn(He,gt),la:[]}},e:(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn)=>{ye[se].la.push({qa:je(oe),va:_e,ta:Hn(Se,He),ua:gt,Ba:mt,Aa:Hn(Tt,Bn),Ca:zn})},C:(se,oe)=>{oe=je(oe),rn(se,{ma:!0,name:oe,N:()=>{},T:()=>{}})},p:(se,oe,_e)=>{var[Se,...He]=Ba(se,oe);oe=Se.T.bind(Se);var gt=He.map(Bn=>Bn.X.bind(Bn));se--;var mt={toValue:Jm};switch(se=gt.map((Bn,zn)=>{var fn=`argFromPtr${zn}`;return mt[fn]=Bn,`${fn}(args${zn?"+"+8*zn:""})`}),_e){case 0:var Tt="toValue(handle)";break;case 2:Tt="new (toValue(handle))";break;case 3:Tt="";break;case 1:mt.getStringOrSymbol=kSe,Tt="toValue(handle)[getStringOrSymbol(methodName)]"}return Tt+=`(${se})`,Se.ma||(mt.toReturnWire=oe,mt.emval_returnValue=x9,Tt=`return emval_returnValue(toReturnWire, destructorsRef, ${Tt})`),Tt=`return function (handle, methodName, destructorsRef, args) { + ${Tt} + }`,_e=new Function(Object.keys(mt),Tt)(...Object.values(mt)),Tt=`methodCaller<(${He.map(Bn=>Bn.name)}) => ${Se.name}>`,zL(si(Tt,_e))},E:ks,o:(se,oe,_e,Se,He)=>Dp[se](oe,_e,Se,He),D:se=>{var oe=Jm(se);he(oe),ks(se)},s:(se,oe,_e,Se)=>{var He=new Date().getFullYear(),gt=new Date(He,0,1).getTimezoneOffset();He=new Date(He,6,1).getTimezoneOffset(),F[se>>2]=60*Math.max(gt,He),w[oe>>2]=+(gt!=He),oe=mt=>{var Tt=Math.abs(mt);return`UTC${0<=mt?"-":"+"}${String(Math.floor(Tt/60)).padStart(2,"0")}${String(Tt%60).padStart(2,"0")}`},se=oe(gt),oe=oe(He),He{var oe=R.length;if(se>>>=0,2147483648=_e;_e*=2){var Se=oe*(1+.2/_e);Se=Math.min(Se,se+100663296);e:{Se=(Math.min(2147483648,65536*Math.ceil(Math.max(se,Se)/65536))-E.buffer.byteLength+65535)/65536|0;try{E.grow(Se),W();var He=1;break e}catch{}He=void 0}if(He)return!0}return!1},t:(se,oe)=>{var _e=0,Se=0,He;for(He of Gee()){var gt=oe+_e;F[se+Se>>2]=gt,_e+=aa(He,gt,1/0)+1,Se+=4}return 0},u:(se,oe)=>{var _e=Gee();F[se>>2]=_e.length,se=0;for(var Se of _e)se+=Zo(Se)+1;return F[oe>>2]=se,0},v:()=>52,w:function(){return 70},k:(se,oe,_e,Se)=>{for(var He=0,gt=0;gt<_e;gt++){var mt=F[oe>>2],Tt=F[oe+4>>2];oe+=8;for(var Bn=0;Bn>2]=He,0}},S_=await async function(){var se;function oe(Se){var He;return S_=Se.exports,E=S_.F,W(),sa=S_.H,Se=S_,Zee=Se.I,i._malloc=R3=Se.J,i._free=lb=Se.K,M--,(He=i.monitorRunDependencies)==null||He.call(i,M),M==0&&Q&&(Se=Q,Q=null,Se()),S_}M++,(se=i.monitorRunDependencies)==null||se.call(i,M);var _e={a:OSe};return i.instantiateWasm?new Promise(Se=>{i.instantiateWasm(_e,(He,gt)=>{Se(oe(He))})}):(k??(k=pe("AGFzbQEAAAAB2QM5YAF/AX9gAn9/AGABfwBgA39/fwF/YAJ/fwF/YAN/f38AYAZ/f39/f38Bf2AFf39/f38Bf2AEf39/fwBgBH9/f38Bf2AGf39/f39/AGAFf39/f38AYAAAYAh/f39/f39/fwF/YAd/f39/f39/AX9gAAF/YAV/fn5+fgBgCn9/f39/f39/f38AYAd/f39/f39/AGAFf39/f34Bf2AIf39/f39/f38AYAR/fn5/AGADf35/AX5gBX9/fn9/AGACf34AYAp/f39/f39/f39/AX9gDH9/f39/f39/f39/fwF/YAN/f38BfmAGf39/f35/AX9gD39/f39/f39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAGf3x/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/f398AX9gDX9/f39/f39/f39/f38AYAV/f39+fgBgBX9/f39/AXxgBH9+f38Bf2ACf3wAYAR+fn5+AX9gAn5/AX9gBH9/f34BfmACfn4BfGABfwF8YAN/f38BfGADf39/AX1gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2ACfH8BfGAEf39/fQF/YAR/f399AGADf399AAK7AR8BYQFhAAUBYQFiABEBYQFjAAsBYQFkAAUBYQFlABEBYQFmAAUBYQFnAAoBYQFoAAEBYQFpAAoBYQFqACQBYQFrAAkBYQFsABQBYQFtAAUBYQFuACUBYQFvACYBYQFwAAMBYQFxAAIBYQFyAAgBYQFzAAgBYQF0AAQBYQF1AAQBYQF2AAABYQF3ACcBYQF4AAwBYQF5AAABYQF6AAIBYQFBAAEBYQFCAAgBYQFDAAEBYQFEAAIBYQFFAAIDjQWLBQAAAQQAAAIAAQABAQQEAg8QAgAEBQACAwAAAAIDAQwAABAEBQgVCwAAAAAQBAAFAAEBAwQAAAQBAQEAAAwBAQADAwACBBgFBQcHAwAAKA0NCAEDAQABAAQAAAgEAQEAAAwGBAQBAQYDKQUAFQMMAAQBAAEBBQQEBwMZABkAAQABAAQBBAABACoBAAEHAQAFBAUBAAgDBAIECwEUAgIBAAACCQABBAAACQEJAwcIBA4EDgQJCQQAAQABAAACAQQAAgADAgAGAQoFCAQFAQwAAAMBBAAABAsEAgACAxoLAAMaCwgCGwArAQAJEAAEAgIDAgAABBgBACwEAQUtAQIMAAgCBBwGHAYACQkBBAwIAwECFAUFBQAEBAIABQACBQ8FAwUFAAIAAAcNDQcNDQUABw0EAAQCAgIBAAIBAQIAAwMdEQMBHREAAAADCwEeAQAABQEeAQEBCgsKCgsKCg8AAxICEgcJBxIJBwkHCRIDBgMILgwvHwkGCR8JAQUbCQAABwQCAAQEAzAxMggQEBUzNAEAAAAAAAMEAAEFAQUBAAACAQgCBAAAAgICBAAMAgQDCAAOBzUAAQMAAAkDCAU2Azc4CgoKCwsLAwgICAMCDwIAAgACAAIAAgUAAgACAAIAAgACBAACAAIAAgACAAUBAQEBAQEAAAIEAgAHAAcNDQIHBwMJAwQDBAIHAwkDBAMEAgkJCQMCAg8DCgoGIQUGIQUODgEADg4DDg4NBQYGBgYGBQ0GBgYGBgciIxMHEwcHAAciBCMTBxMJBwcGBgYGBgYGBgYGBgYGBgAGBgYIAQYDCAcDCAcDAwICAAIACAIXBAQAAAACAgAAAgACAAMAAAMIFwMCABYBIBYDDAQHAXABgAOAAwUHAQGCAoCAAgYIAX8BQfD+BQsHGwYBRgIAAUcAqQUBSAEAAUkA1gMBSgA0AUsALQm/BQEAQQEL/wKQA/sE9wTmBOEE3gT/AvsC/ATPBGvJBMUEwgT/AvsCwQS+BNcDuwS2BLUErgTPAssClQSLBIEE9gPsAzDPAssCpQLfA94DoALdA9wDpQLbA9oDoALZA9gDnALVA9QDRqgFpwWmBaUFlAKiBZMCoQWgBZ8FRkaeBZ0FnAXIA5sFyAOQAsYDmgWZBY8CwQOYBZcF2AGOApYFlAWVBZMF/AGMBY0FiwWQBY8FjgWxAYwCigWJBYgFhwWJAoYFhQWEBS3hAdICiQSHBIUEgwSABP4D/AP6A/gD9QPzA/ED7wPtA9YCtASzBNACpgSlBKQEowSiBNECoQSgBJ8E2wKdBJwEmwSaBJkERpgElwTEApYEkwSSBJEEjwSNBMMClASSBZEFkASOBIwEiQEwMLIEsQSwBK8ErQSsBKsEqgTRAqkEqASnBDDOAs4CqgHiAeIBngTiATDKAskCqgFGRsgCvgEwygLJAqoBRkbIAr4BMMcCxgKqAUZGxQK+ATDHAsYCqgFGRsUCvgGJATCDBYIFgQWJATCABf8E/gQw/QT6BPkE+ASUA5QD9gT1BPQE8wTyBDDxBPAE7wTuBIwDjAPtBOwE6wTqBOkEMOgE5wTlBOQE4wTiBOAE3wQw3QTcBNsE2gTZBNgE1wTWBIkBMPwC1QTUBNME0gTRBNAEigSGBIIE9APwA/0D+QOJATD8As4EzQTMBMsEygTIBIgEhAT/A/ID7gP7A/cD7QHCAscE7QHCAsYEMMUBxQFXV1fyAkZ0dDDFAcUBV1dX8gJGdHQwxAHEAVdXV/ECRnR0MMQBxAFXV1fxAkZ0dDDEBMMEMMAEvwQwvQS8BDC6BLkEMNwCuASTAjDcArcEkwKJAesD6wGjBaQFiQEw4QHhAawCMKwCMOoD4APjA+kDMOED5APoAzDiA+UD5wMw5gMMASoKwLAIiwUTACAAEEcEQCAAKAIEDwsgABBeCxoBAX8gABBHBEAgACgCACAAEH4aEIsCCyAAC4sBAQN/IAAQHyICIAFJBEAjAEEQayIEJAAgASACayICBEAgAiAAECgiAyAAEB8iAWtLBEAgACADIAIgA2sgAWogASABEPQBCyABIAAQIyIDaiACQQAQsgIgACABIAJqIgAQgwEgBEEAOgAPIAAgA2ogBEEPahBdCyAEQRBqJAAPCyAAIAAQIyABEMACCwkAIAAQIyABagsRACAAEEcEQCAAKAIADwsgAAsSACAAQgA3AgAgAEEANgIIIAALFgAgACgCACIAQaDxAUcEQCAAEL8BCwuLAgIDfwJ+AkAgACkDcCIEUEUgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQyQMNACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADCwwAIAAgAUEcahDVAgsZAQF/QQohASAAEEcEfyAAEH5BAWsFQQoLC3kBA38CQCABELcCIQIgABDxASEDIAAQHyEEIAIgA00EQCAAECMiAyABIAIQZSMAQRBrIgEkACAAEB8aIAAgAhCDASABQQA2AgwgAyACQQJ0aiABQQxqEFYgAUEQaiQADAELIAAgAyACIANrIARBACAEIAIgARCvAgsLDgAgACABIAEQqAEQsQILEAAgABCyAyABELIDc0EBcwsQACAAELMDIAEQswNzQQFzC4EMAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0Gc6gEoAgBJDQEgACAEaiEAAkACQAJAQaDqASgCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAygCGCEHIAEgA0cEQCADKAIIIgIgATYCDCABIAI2AggMBAsgAygCFCICBH8gA0EUagUgAygCECICRQ0DIANBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBlOoBIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdCICKAK87AEgA0YEQCACQbzsAWogATYCACABDQFBkOoBQZDqASgCAEF+IAR3cTYCAAwCCwJAIAMgBygCEEYEQCAHIAE2AhAMAQsgByABNgIUCyABRQ0BCyABIAc2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgBU8NACAFKAIEIgRBAXFFDQACQAJAAkACQCAEQQJxRQRAQaTqASgCACAFRgRAQaTqASADNgIAQZjqAUGY6gEoAgAgAGoiADYCACADIABBAXI2AgQgA0Gg6gEoAgBHDQZBlOoBQQA2AgBBoOoBQQA2AgAPC0Gg6gEoAgAiByAFRgRAQaDqASADNgIAQZTqAUGU6gEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnQiAigCvOwBIAVGBEAgAkG87AFqIAE2AgAgAQ0BQZDqAUGQ6gEoAgBBfiAEd3E2AgAMAgsCQCAFIAgoAhBGBEAgCCABNgIQDAELIAggATYCFAsgAUUNAQsgASAINgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIAMgB0cNAEGU6gEgADYCAA8LIABB/wFNBEAgAEF4cUG06gFqIQICf0GM6gEoAgAiBEEBIABBA3Z0IgBxRQRAQYzqASAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QbzsAWohBAJ/AkACf0GQ6gEoAgAiBkEBIAF0IgJxRQRAQZDqASACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBBrOoBQazqASgCAEEBayIAQX8gABs2AgALC+kCAQZ/QZzxAS0AAARAQZjxASgCAA8LIwBBIGsiAiQAAkACQANAIAJBCGoiBCAAQQJ0IgNqAn9BASAAdEH/////B3EiBUEBckUEQCADKAIADAELIABBjBZBxh8gBRsQogMLIgM2AgAgA0F/Rg0BIABBAWoiAEEGRw0AC0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkGU6gEoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEG06gFqIgIgACgCvOoBIgAoAggiBUYEQEGM6gEgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQbTqAWohAUGg6gEoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEGM6gEgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBBoOoBIAc2AgBBlOoBIAU2AgAMCwtBkOoBKAIAIgtFDQEgC2hBAnQoArzsASICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQZDqASgCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdCgCvOwBIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0KAK87AEhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBlOoBKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkGU6gEoAgAiBU0EQEGg6gEoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQZTqASABNgIAQaDqASACNgIAIABBCGohAAwJCyAGQZjqASgCACICSQRAQZjqASACIAZrIgE2AgBBpOoBQaTqASgCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QeTtASgCAARAQeztASgCAAwBC0Hw7QFCfzcCAEHo7QFCgKCAgICABDcCAEHk7QEgCkEMakFwcUHYqtWqBXM2AgBB+O0BQQA2AgBByO0BQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBxO0BKAIAIgUEQEG87QEoAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBByO0BLQAAQQRxRQRAAkACQAJAAkBBpOoBKAIAIgUEQEHM7QEhAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEKUBIgJBf0YNAyABIQRB6O0BKAIAIgBBAWsiBSACcQRAIAEgAmsgAiAFakEAIABrcWohBAsgBCAGTQ0DQcTtASgCACIABEBBvO0BKAIAIgUgBGoiByAFTSAAIAdJcg0ECyAEEKUBIgAgAkcNAQwFCyAEIAJrIAdxIgQQpQEiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtB7O0BKAIAIgIgAyAEa2pBACACa3EiAhClAUF/Rg0BIAIgBGohBCAAIQIMAwsgAkF/Rw0CC0HI7QFByO0BKAIAQQRyNgIACyABEKUBIgJBf0ZBABClASIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0G87QFBvO0BKAIAIARqIgA2AgBBwO0BKAIAIABJBEBBwO0BIAA2AgALAkBBpOoBKAIAIgMEQEHM7QEhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQZzqASgCACIAQQAgACACTRtFBEBBnOoBIAI2AgALQQAhAEHQ7QEgBDYCAEHM7QEgAjYCAEGs6gFBfzYCAEGw6gFB5O0BKAIANgIAQdjtAUEANgIAA0AgAEEDdCIBIAFBtOoBaiIFNgK86gEgASAFNgLA6gEgAEEBaiIAQSBHDQALQZjqASAEQShrIgBBeCACa0EHcSIBayIFNgIAQaTqASABIAJqIgE2AgAgASAFQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQaTqASADQXggA2tBB3EiAGoiATYCAEGY6gFBmOoBKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQajqAUH07QEoAgA2AgAMAwtBACEADAYLQQAhAAwEC0Gc6gEoAgAgAksEQEGc6gEgAjYCAAsgAiAEaiEFQcztASEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBzO0BIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQZjqASAEQShrIgBBeCACa0EHcSIBayIHNgIAQaTqASABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQdTtASkCADcCECABQcztASkCADcCCEHU7QEgAUEIajYCAEHQ7QEgBDYCAEHM7QEgAjYCAEHY7QFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBtOoBaiEAAn9BjOoBKAIAIgFBASACQQN2dCICcUUEQEGM6gEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QbzsAWohAQJAAkBBkOoBKAIAIgVBASAAdCIEcUUEQEGQ6gEgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQZjqASgCACIAIAZNDQBBmOoBIAAgBmsiATYCAEGk6gFBpOoBKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0GI6gFBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBpOoBKAIAIARGBEBBpOoBIAM2AgBBmOoBQZjqASgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0Gg6gEoAgAgBEYEQEGg6gEgAzYCAEGU6gFBlOoBKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEGM6gFBjOoBKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdCIBKAK87AEgBEYEQCABQbzsAWogAjYCACACDQFBkOoBQZDqASgCAEF+IAB3cTYCAAwCCwJAIAQgBigCEEYEQCAGIAI2AhAMAQsgBiACNgIUCyACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H/AU0EQCAHQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgB0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H///8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QbzsAWohAAJAAkBBkOoBKAIAIgFBASACdCIFcUUEQEGQ6gEgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdCICKAK87AEgBUYEQCACQbzsAWogADYCACAADQFBkOoBIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgA0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QbzsAWohAQJAAkAgB0EBIAB0IgJxRQRAQZDqASACIAdyNgIAIAEgBDYCACAEIAE2AhgMAQsgA0EZIABBAXZrQQAgAEEfRxt0IQAgASgCACEBA0AgASICKAIEQXhxIANGDQIgAEEddiEBIABBAXQhACACIAFBBHFqIgcoAhAiAQ0ACyAHIAQ2AhAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgBUEIaiEADAELAkAgCUUNAAJAIAIoAhwiAUECdCIFKAK87AEgAkYEQCAFQbzsAWogADYCACAADQFBkOoBIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQbTqAWohAEGg6gEoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEGM6gEgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0Gg6gEgBTYCAEGU6gEgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsIACAAQQAQPAsVACAAIAE2AgAgACACKAIANgIEIAALCgAgACgCABC9AwsLACAAKAIAEMMDwAsXACAAEEcEQCAAKAIAIAAQfhCpAQsgAAs7AQJ/IwBBEGsiASQAIAEgADYCDCABKAIMIgAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0LIAFBEGokAAstACACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAAoAgQgASgCBBDQAUULIQEBfyAAKAIAIQIgACABNgIAIAIEQCACIAAoAgQRAgALCwYAEMoDAAsNACAAKAIAELwDGiAACw0AIAAoAgAQnQIaIAALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxEAIAAgASAAKAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUNAQsLIAAgAzcDACAAIAQ3AwggBkHwAGokAAsRACAAIAEgACgCACgCLBEEAAsIACAAQYABSQsRACACBEAgACABIAL8CgAACwsJACAAECMQ9wELhAECAn8BfiMAQRBrIgMkACAAAn4gAUUEQEIADAELIAMgASABQR91IgJzIAJrIgKtQgAgAmciAkHRAGoQRCADKQMIQoCAgICAgMAAhUGegAEgAmutQjCGfEKAgICAgICAgIB/QgAgAUEASBuEIQQgAykDAAs3AwAgACAENwMIIANBEGokAAsNACAAIAFB/wBxOgALC6oMAQh/An9BACABRQ0AGiAAQX9zIQMgAkEXTwRAAkAgAUEDcUUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFrIgBFIAFBAWoiBEEDcUVyRQRAIAEtAAEgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBAmsiAEUgAUECaiIEQQNxRXJFBEAgAS0AAiADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEDayIARSABQQNqIgRBA3FFckUEQCABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyABQQRqIQEgAkEEayECDAMLIAAhAiAEIQEMAgsgACECIAQhAQwBCyAAIQIgBCEBCyACQRRuIghBbGwhCgJAIAhBAWsiCUUEQEEAIQQMAQsgASEAQQAhBANAIAAoAhAgB3MiB0EWdkH8B3EoAtBTIAdBDnZB/AdxKALQSyAHQQZ2QfwHcSgC0EMgB0H/AXFBAnQoAtA7c3NzIQcgACgCDCAGcyIGQRZ2QfwHcSgC0FMgBkEOdkH8B3EoAtBLIAZBBnZB/AdxKALQQyAGQf8BcUECdCgC0Dtzc3MhBiAAKAIIIARzIgRBFnZB/AdxKALQUyAEQQ52QfwHcSgC0EsgBEEGdkH8B3EoAtBDIARB/wFxQQJ0KALQO3NzcyEEIAAoAgQgBXMiBUEWdkH8B3EoAtBTIAVBDnZB/AdxKALQSyAFQQZ2QfwHcSgC0EMgBUH/AXFBAnQoAtA7c3NzIQUgACgCACADcyIDQRZ2QfwHcSgC0FMgA0EOdkH8B3EoAtBLIANBBnZB/AdxKALQQyADQf8BcUECdCgC0Dtzc3MhAyAAQRRqIQAgCUEBayIJDQALIAEgCEEUbGpBFGshAQsgAiAKaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACADcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgBXNzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBB/wFxQQJ0KALQMyAEc3MgAEEIdnMiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEH/AXFBAnQoAtAzIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyEDIAFBFGohAQsgAkEHSwRAA0AgAS0AACADc0H/AXFBAnQoAtAzIANBCHZzIgBBCHYgAS0AASAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAIgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQADIABzQf8BcUECdCgC0DNzIgBBCHYgAS0ABCAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAUgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQAGIABzQf8BcUECdCgC0DNzIgBBCHYgAS0AByAAc0H/AXFBAnQoAtAzcyEDIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFGDQAgAS0AASADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkECRg0AIAEtAAIgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBA0YNACABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQRGDQAgAS0ABCADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEFRg0AIAEtAAUgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBBkYNACABLQAGIANzQf8BcUECdCgC0DMgA0EIdnMhAwsgA0F/cwsL5QMBBX8jAEEQayIDJAAgAyAAKAIAIgRBCGsoAgAiAjYCDCADIAAgAmo2AgQgAyAEQQRrKAIANgIIIAMoAggiBCABQQAQOyECIAMoAgQhBQJAIAIEQCADKAIMIQAjAEFAaiIBJAAgAUFAayQAQQAgBSAAGyECDAELIwBBQGoiAiQAIAAgBU4EQCACQgA3AhwgAkIANwIkIAJCADcCLCACQgA3AhQgAkEANgIQIAIgATYCDCACIAQ2AgQgAkEANgI8IAJCgYCAgICAgIABNwI0IAIgADYCCCAEIAJBBGogBSAFQQFBACAEKAIAKAIUEQoAIABBACACKAIcGyEGCyACQUBrJAAgBiICDQAjAEFAaiICJAAgAkEANgIQIAJBlNYBNgIMIAIgADYCCCACIAE2AgRBACEAIAJBFGpBAEEn/AsAIAJBADYCPCACQQE6ADsgBCACQQRqIAVBAUEAIAQoAgAoAhgRCwACQAJAAkAgAigCKA4CAAECCyACKAIYQQAgAigCJEEBRhtBACACKAIgQQFGG0EAIAIoAixBAUYbIQAMAQsgAigCHEEBRwRAIAIoAiwNASACKAIgQQFHDQEgAigCJEEBRw0BCyACKAIUIQALIAJBQGskACAAIQILIANBEGokACACCzwBAn9BASAAIABBAU0bIQEDQAJAIAEQNCIADQBB5P4BKAIAIgJFDQAgAhEMAAwBCwsgAEUEQBDrAQsgAAsUAQF/QQQQUyIBIAAoAgA2AgAgAQsLACAAIAE2AgAgAAsMACAAIAEoAgA2AgALBwAgABAkGgsRACAAIAEgASgCACgCFBEBAAsPACAAIAAoAgAoAhARAAALBwAgABAfRQsJAEGFEBCuAgALEAAgACABQYCAgIB4cjYCCAsMACAAIAEtAAA6AAALCwAgAC0AC0H/AHELEwAgACABIAIgACgCACgCDBEDAAsiAQF/IAIQTAR/IAAoAgggAkECdGooAgAgAXFBAEcFQQALC+wBAQN/IABFBEBB0N4BKAIABEBB0N4BKAIAEGEhAQtBgOABKAIABEBBgOABKAIAEGEgAXIhAQtBwOABKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEGEgAXIhAQsgACgCOCIADQALCyABDwsgACgCTEEASCECAkACQCAAKAIUIAAoAhxGDQAgAEEAQQAgACgCJBEDABogACgCFA0AQX8hAQwBCyAAKAIEIgEgACgCCCIDRwRAIAAgASADa6xBASAAKAIoERYAGgtBACEBIABBADYCHCAAQgA3AxAgAEIANwIEIAINAAsgAQsSACAAKAIAIgAEQCAAEJwDGgsLEQAgACABKAIAEJwDNgIAIAALQQEBfyAAIAE3A3AgACAAKAIsIAAoAgQiAmusNwN4IAAgAVAgASAAKAIIIgAgAmusWXIEfyAABSACIAGnags2AmgLHgACQCACRQ0AIAJBAnQiAkUNACAAIAEgAvwKAAALCxYAIAAgASgCADYCACAAIAIoAgA2AgQLtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahArDQAaQQQgA0HAACAAEDciBhBfRQ0AGiADIAYQlAEhAQNAAkAgABA+GiABQTBrIQEgACAFQQxqECsgBEECSHINACADQcAAIAAQNyIGEF9FDQMgBEEBayEEIAMgBhCUASABQQpsaiEBDAELCyAAIAVBDGoQK0UNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahAsDQAaQQQgA0HAACAAEDgiBhBgRQ0AGiADIAYQlQEhAQNAAkAgABA/GiABQTBrIQEgACAFQQxqECwgBEECSHINACADQcAAIAAQOCIGEGBFDQMgBEEBayEEIAMgBhCVASABQQpsaiEBDAELCyAAIAVBDGoQLEUNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELYwAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgAkEwRyABIABrQQJIcg0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACy4AAkAgACgCBEHKAHEiAARAIABBwABGBEBBCA8LIABBCEcNAUEQDwtBAA8LQQoLEAAgACgCBCAAKAIAa0ECdQvOAQIEfgJ/IwBBEGsiBiQAIAG9IgVC/////////weDIQIgAAJ+IAVCNIhC/w+DIgNQRQRAIANC/w9SBEAgAkIEiCEEIANCgPgAfCEDIAJCPIYMAgsgAkIEiCEEQv//ASEDIAJCPIYMAQsgAlAEQEIAIQNCAAwBCyAGIAJCACACeaciB0ExahBEIAYpAwhCgICAgICAwACFIQRBjPgAIAdrrSEDIAYpAwALNwMAIAAgBUKAgICAgICAgIB/gyADQjCGhCAEhDcDCCAGQRBqJAALsgMBA38jAEEQayIIJAAgCCACNgIIIAggATYCDCAIQQRqIgEgAxAnIAEQSCEJIAEQJSAEQQA2AgBBACEBAkADQCAGIAdGIAFyDQECQCAIQQxqIAhBCGoQKw0AAkAgCSAGKAIAEJQBQSVGBEAgBkEEaiAHRg0CQQAhAgJ/AkAgCSAGKAIEEJQBIgFBxQBGDQBBBCEKIAFB/wFxQTBGDQAgAQwBCyAGQQhqIAdGDQNBCCEKIAEhAiAJIAYoAggQlAELIQEgCCAAIAgoAgwgCCgCCCADIAQgBSABIAIgACgCACgCJBENADYCDCAGIApqQQRqIQYMAQsgCUEBIAYoAgAQXwRAA0AgByAGQQRqIgZHBEAgCUEBIAYoAgAQXw0BCwsDQCAIQQxqIgEgCEEIahArDQIgCUEBIAEQNxBfRQ0CIAEQPhoMAAsACyAJIAhBDGoiARA3EEEgCSAGKAIAEEFGBEAgBkEEaiEGIAEQPhoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECsEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQAC7QDAQN/IwBBEGsiCCQAIAggAjYCCCAIIAE2AgwgCEEEaiIBIAMQJyABEEkhCSABECUgBEEANgIAQQAhAQJAA0AgBiAHRiABcg0BAkAgCEEMaiAIQQhqECwNAAJAIAkgBiwAABCVAUElRgRAIAZBAWogB0YNAkEAIQICfwJAIAkgBiwAARCVASIBQcUARg0AQQEhCiABQf8BcUEwRg0AIAEMAQsgBkECaiAHRg0DQQIhCiABIQIgCSAGLAACEJUBCyEBIAggACAIKAIMIAgoAgggAyAEIAUgASACIAAoAgAoAiQRDQA2AgwgBiAKakEBaiEGDAELIAlBASAGLAAAEGAEQANAIAcgBkEBaiIGRwRAIAlBASAGLAAAEGANAQsLA0AgCEEMaiIBIAhBCGoQLA0CIAlBASABEDgQYEUNAiABED8aDAALAAsgCSAIQQxqIgEQOBDOASAJIAYsAAAQzgFGBEAgBkEBaiEGIAEQPxoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECwEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQACxYAIAAgASACIAMgACgCACgCMBEJABoLPAAgACwAC0EASARAIAAoAggaIAAoAgAQLQsgACABKQIANwIAIAAgASgCCDYCCCABQQA6AAsgAUEAOgAACxMAIAIEQCAAIAEgAvwKAAALIAALKwEBfyMAQRBrIgIkACACIAE2AgxBwN0BIAAgAUEAQQAQ0QMaIAJBEGokAAsjAQF/IwBBEGsiASQAIAEgADYCDCABQQxqEOwBIAFBEGokAAsMACAAQYKGgCA2AAALEQAgABAjIAAQH0ECdGoQ9wELDQAgACgCACABKAIARgsOACAAECMgABAfahD3AQsPACAAIAAoAgAoAgwRAAALFgAgACABIAIgAyAAKAIAKAIgEQkAGgtEAQF/IAAoAgAhAiABEDEhACACQQhqIgEQayAASwR/IAEgABCCASgCAEEARwVBAAtFBEAQPQALIAJBCGogABCCASgCAAsRACAAIAEgASgCACgCHBEBAAsRACAAIAEgASgCACgCGBEBAAsQACAAQSBGIABBCWtBBUlyCw4AIAAoAghB/////wdxC9cBAQF/AkBBjN4BKAIAIgBBAE4EQCAARQ0BQZThASgCACAAQf////8DcUcNAQsCQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADwtBwN0BEN4BDwtBjN4BQYzeASgCACIAQf////8DIAAbNgIAAkACQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADAELQcDdARDeAQtBjN4BKAIAGkGM3gFBADYCAAvDAQEEfyMAQRBrIgckAAJAIABFDQAgBCgCDCEJIAIgAWsiBkEASgRAIAAgASAGIAAoAgAoAjARAwAgBkcNAQsgAyABayIBIAlIBEAgB0EEaiIGIAkgAWsiASAFELACIAAgBygCBCAGIAcsAA9BAEgbIAEgACgCACgCMBEDACEFIAYQIBogASAFRw0BCyADIAJrIgFBAEoEQCAAIAIgASAAKAIAKAIwEQMAIAFHDQELIARBADYCDCAAIQgLIAdBEGokACAIC14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARBEGokAAsEACAAC1ABAX4CQCADQcAAcQRAIAIgA0FAaq2IIQFCACECDAELIANFDQAgAkHAACADa62GIAEgA60iBIiEIQEgAiAEiCECCyAAIAE3AwAgACACNwMIC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLCQBB+gsQrgIACxQBAX9BCBBTIgEgACkCADcDACABCwoAIAAgASAAa2oLGQEBfyABEMECIQIgACABNgIEIAAgAjYCAAskACAAQQJPBH8gAEECakF+cSIAIABBAWsiACAAQQJGGwVBAQsLlgEBA38CQCABELcCIQIjAEEQayIDJAAgAkH3////A00EQAJAIAIQvQEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQZSADQQA2AgQgBCACQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACwsRACAAIAEgASgCACgCLBEBAAvHAQEGfyMAQRBrIgQkACAAEPIBKAIAIQUCfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDQQQgAxshAyABKAIAIQYgACgCACEHIAVB5ABGBH9BAAUgACgCAAsgAxDcASIIBEAgBUHkAEcEQCAAEKwBGgsgBEHjADYCBCAAIARBCGogCCAEQQRqEDYiBRDrAiAFEDUgASAAKAIAIAYgB2tqNgIAIAIgACgCACADQXxxajYCACAEQRBqJAAPCxA9AAsTACAAIAFBACAAKAIAKAI0EQMACxMAIAAgAUEAIAAoAgAoAiQRAwALQgEBfyMAQRBrIgUkACAFIAI2AgwgBSAENgIIIAVBBGogBUEMahBjIAAgASADIAUoAggQ0QEhABBiIAVBEGokACAAC0EBAX8jAEEQayIDJAAgAyACNgIMQaAgIAFB7CBBzSxBHCADQQxqIgEQVEHsIEHRLEEdIAEQVBAEIANBEGokACAAC+oCAQJ/IwBBEGsiCiQAIAogADYCDAJAAkACQCADKAIAIgsgAkcNACAJKAJgIABGBH9BKwUgACAJKAJkRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUHoAGogCkEMahD5ASAJa0ECdSIFQRdKDQECQAJAAkAgAUEIaw4DAAIAAQsgASAFSg0BDAMLIAFBEEcgBUEWSHINACADKAIAIgEgAkYgASACa0ECSnINAiABQQFrLQAAQTBHDQJBACEAIARBADYCACADIAFBAWo2AgAgASAFLQDQnwE6AAAMAgsgAyADKAIAIgBBAWo2AgAgACAFQdCfAWotAAA6AAAgBCAEKAIAQQFqNgIAQQAhAAwBC0EAIQAgBEEANgIACyAKQRBqJAAgAAsKACAAQZjzARB6C+wCAQN/IwBBEGsiCiQAIAogADoADwJAAkACQCADKAIAIgsgAkcNACAAQf8BcSIMIAktABhGBH9BKwUgDCAJLQAZRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUEaaiAKQQ9qEP0BIAlrIgVBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAVKDQEMAwsgAUEQRyAFQRZIcg0AIAMoAgAiASACRiABIAJrQQJKcg0CIAFBAWstAABBMEcNAkEAIQAgBEEANgIAIAMgAUEBajYCACABIAUtANCfAToAAAwCCyADIAMoAgAiAEEBajYCACAAIAVB0J8Bai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokACAACwoAIABBkPMBEHoLZgIBfwF+IwBBEGsiAiQAIAACfiABRQRAQgAMAQsgAiABrUIAQfAAIAFnIgFBH3NrEEQgAikDCEKAgICAgIDAAIVBnoABIAFrrUIwhnwhAyACKQMACzcDACAAIAM3AwggAkEQaiQACxQAIABB3wBxIAAgAEHhAGtBGkkbCywBAX8Cf0EBENYBBEAgAUEBELQCDAELIAEQUwshAiAAIAE2AgQgACACNgIACyQAIABBC08EfyAAQQhqQXhxIgAgAEEBayIAIABBC0YbBUEKCwskAQJ/IwBBEGsiAiQAIAAgARDTASEDIAJBEGokACABIAAgAxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsTAEEEENYBBEAgABAtDwsgABAtCwsAIAQgAjYCAEEDC3wBAn8jAEEQayICJAAgABBHBEAgACgCACAAEH4QqQELIAEQHxogARBHIQMgACABKAIINgIIIAAgASkCADcCACABQQAQUCACQQA2AgwgASACQQxqEFYCQCADIAAgAUYiAXJFDQALIAAQRyABckUEQCAAEF4aCyACQRBqJAALEAEBfyAAKAIAIABBADYCAAs3AQJ/IwBBEGsiAyQAIANBDGoiBCABECcgAiAEEJkBIgEQWTYCACAAIAEQWCAEECUgA0EQaiQACzUBAn8jAEEQayICJAAgAkEMaiIDIAAQJyADEEhB0J8BQeqfASABEG8gAxAlIAJBEGokACABCzcBAn8jAEEQayIDJAAgA0EMaiIEIAEQJyACIAQQmwEiARBZOgAAIAAgARBYIAQQJSADQRBqJAALkwEBA38CQCABEKgBIQIjAEEQayIDJAAgAkH3////B00EQAJAIAIQ1AEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQTSADQQA6AAcgAiAEaiADQQdqEF0gA0EQaiQADAELEFsACwtGAQF/IABB+PsAKAIAIgE2AgAgACABQQxrKAIAakGY/AAoAgA2AgAgAEGc/AAoAgA2AgggAEEMahD8ARogAEFAaxDaASAACxcAIAAgAzYCECAAIAI2AgwgACABNgIIC7kHAQV/An8gAEH//wNxIQMgAEEQdiEEIAJBAUYEQCADIAEtAABqIgBB8f8DayAAIABB8P8DSxsiACAEaiIBQRB0IgJBgIA8aiACIAFB8P8DSxsgAHIMAQsgAQR/AkACQAJAAkAgAkEQTwRAAkAgAkGvK0sEQANAQdsCIQUgASEAA0AgAyAALQAAaiIDIARqIAMgAC0AAWoiA2ogAyAALQACaiIDaiADIAAtAANqIgNqIAMgAC0ABGoiA2ogAyAALQAFaiIDaiADIAAtAAZqIgNqIAMgAC0AB2oiA2ogAyAALQAIaiIDaiADIAAtAAlqIgNqIAMgAC0ACmoiA2ogAyAALQALaiIDaiADIAAtAAxqIgNqIAMgAC0ADWoiA2ogAyAALQAOaiIDaiADIAAtAA9qIgNqIQQgAEEQaiEAIAVBAWsiBQ0ACyAEQfH/A3AhBCADQfH/A3AhAyABQbAraiEBIAJBsCtrIgJBrytLDQALIAJFDQYgAkEQSQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgBqIAAgAS0ACGoiAGogACABLQAJaiIAaiAAIAEtAApqIgBqIAAgAS0AC2oiAGogACABLQAMaiIAaiAAIAEtAA1qIgBqIAAgAS0ADmoiAGogACABLQAPaiIDaiEEIAFBEGohASACQRBrIgJBD0sNAAsgAkUNBAsgAkEDcSIHDQEgAiEADAILAkAgAkUNAAJAIAJBA3EiB0UEQCACIQAMAQsgAiEAIAEhBQNAIABBAWshACADIAUtAABqIgMgBGohBCAFQQFqIgEhBSAGQQFqIgYgB0cNAAsLIAJBBEkNAANAIAMgAS0AAGoiAiABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgAiAEampqaiEEIAFBBGohASAAQQRrIgANAAsLIARB8f8DcEEQdCADQfH/A2sgAyADQfD/A0sbcgwFCyACIQAgASEFA0AgAEEBayEAIAMgBS0AAGoiAyAEaiEEIAVBAWoiASEFIAZBAWoiBiAHRw0ACwsgAkEESQ0AA0AgAyABLQAAaiICIAEtAAFqIgUgAS0AAmoiBiABLQADaiIDIAYgBSACIARqampqIQQgAUEEaiEBIABBBGsiAA0ACwsgBEHx/wNwIQQgA0Hx/wNwIQMLIARBEHQgA3IFQQELCws6AQF/IAFBAEgEQBCMAQALQf////8HIAAoAgggACgCAGsiAEEBdCICIAEgASACSRsgAEH/////A08bCxwBAX8gACgCBCIBQQlPBEAgARAeIABBADYCBAsLPgEBfyABQYCAgIAETwRAEIwBAAtB/////wMgACgCCCAAKAIAayIAQQF1IgIgASABIAJJGyAAQfz///8HTxsLSQECfyAAKAIEIgZBCHUhBSAGQQFxBEAgAigCACAFEOgBIQULIAAoAgAiACABIAIgBWogA0ECIAZBAnEbIAQgACgCACgCGBELAAuqAQEDfyMAQRBrIgIkACACIAE6AA8CQAJAAn8gABBHIgRFBEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkACfwJAIAFFBEAgAw0BQQAPC0F+IAJFDQEaAkAgAwRAIAIhBAwBCyABLQAAIgPAIgRBAE4EQCAABEAgACADNgIACyAEQQBHDwtB3OEBKAIAKAIARQRAQQEgAEUNAxogACAEQf+/A3E2AgBBAQ8LIANBwgFrIgNBMksNASADQQJ0KAKQgQEhAyACQQFrIgRFDQMgAUEBaiEBCyABLQAAIgZBA3YiB0EQayADQRp1IAdqckEHSw0AA0AgBEEBayEEIAZB/wFxQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiASwAACIGQUBIDQALCyAFQQA2AgBBiOoBQRk2AgBBfwsPCyAFIAM2AgBBfgsNACAAKAIAIAEoAgBJCwcAIABBC0kLJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBA9AAsLBwAgAEEISwscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwwAIABBDGoQ2gEgAAsIACAAKAIQRQsIACAAEIkCGgusCwEHfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBAnFFDQEgACgCACICIAFqIQECQAJAAkAgACACayIAQaDqASgCAEcEQCAAKAIMIQMgAkH/AU0EQCADIAAoAggiBEcNAkGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAAoAhghBiAAIANHBEAgACgCCCICIAM2AgwgAyACNgIIDAQLIAAoAhQiBAR/IABBFGoFIAAoAhAiBEUNAyAAQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQZTqASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAwCC0EAIQMLIAZFDQACQCAAKAIcIgJBAnQiBCgCvOwBIABGBEAgBEG87AFqIAM2AgAgAw0BQZDqAUGQ6gEoAgBBfiACd3E2AgAMAgsCQCAAIAYoAhBGBEAgBiADNgIQDAELIAYgAzYCFAsgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGk6gEoAgAgBUYEQEGk6gEgADYCAEGY6gFBmOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBoOoBKAIARw0GQZTqAUEANgIAQaDqAUEANgIADwtBoOoBKAIAIgggBUYEQEGg6gEgADYCAEGU6gFBlOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAJBeHEgAWohASAFKAIMIQMgAkH/AU0EQCAFKAIIIgQgA0YEQEGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAQgAzYCDCADIAQ2AggMBAsgBSgCGCEGIAMgBUcEQCAFKAIIIgIgAzYCDCADIAI2AggMAwsgBSgCFCIEBH8gBUEUagUgBSgCECIERQ0CIAVBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACEDCyAGRQ0AAkAgBSgCHCICQQJ0IgQoArzsASAFRgRAIARBvOwBaiADNgIAIAMNAUGQ6gFBkOoBKAIAQX4gAndxNgIADAILAkAgBSAGKAIQRgRAIAYgAzYCEAwBCyAGIAM2AhQLIANFDQELIAMgBjYCGCAFKAIQIgIEQCADIAI2AhAgAiADNgIYCyAFKAIUIgJFDQAgAyACNgIUIAIgAzYCGAsgACABQQFyNgIEIAAgAWogATYCACAAIAhHDQBBlOoBIAE2AgAPCyABQf8BTQRAIAFBeHFBtOoBaiECAn9BjOoBKAIAIgNBASABQQN2dCIBcUUEQEGM6gEgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG87AFqIQICQAJAQZDqASgCACIEQQEgA3QiB3FFBEBBkOoBIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiBygCECICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC40IAQt/IABFBEAgARA0DwsgAUFATwRAQYjqAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBCgCBCIJQXhxIQgCQCAJQQNxRQRAIAZBgAJJDQEgBkEEaiAITQRAIAQhAiAIIAZrQeztASgCAEEBdE0NAgtBAAwCCyAEIAhqIQcCQCAGIAhNBEAgCCAGayIDQRBJDQEgBCAGIAlBAXFyQQJyNgIEIAQgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ2wEMAQtBpOoBKAIAIAdGBEBBmOoBKAIAIAhqIgggBk0NAiAEIAYgCUEBcXJBAnI2AgQgBCAGaiIDIAggBmsiAkEBcjYCBEGY6gEgAjYCAEGk6gEgAzYCAAwBC0Gg6gEoAgAgB0YEQEGU6gEoAgAgCGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBCAGIAlBAXFyQQJyNgIEIAQgBmoiCCACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAlBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECQQAhCAtBoOoBIAg2AgBBlOoBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAIaiILIAZJDQEgCyAGayEMIAcoAgwhBQJAIANB/wFNBEAgBygCCCICIAVGBEBBjOoBQYzqASgCAEF+IANBA3Z3cTYCAAwCCyACIAU2AgwgBSACNgIIDAELIAcoAhghCgJAIAUgB0cEQCAHKAIIIgIgBTYCDCAFIAI2AggMAQsCQCAHKAIUIgIEfyAHQRRqBSAHKAIQIgJFDQEgB0EQagshCANAIAghAyACIgVBFGohCCACKAIUIgINACAFQRBqIQggBSgCECICDQALIANBADYCAAwBC0EAIQULIApFDQACQCAHKAIcIgNBAnQiAigCvOwBIAdGBEAgAkG87AFqIAU2AgAgBQ0BQZDqAUGQ6gEoAgBBfiADd3E2AgAMAgsCQCAHIAooAhBGBEAgCiAFNgIQDAELIAogBTYCFAsgBUUNAQsgBSAKNgIYIAcoAhAiAgRAIAUgAjYCECACIAU2AhgLIAcoAhQiAkUNACAFIAI2AhQgAiAFNgIYCyAMQQ9NBEAgBCAJQQFxIAtyQQJyNgIEIAQgC2oiAiACKAIEQQFyNgIEDAELIAQgBiAJQQFxckECcjYCBCAEIAZqIgMgDEEDcjYCBCAEIAtqIgIgAigCBEEBcjYCBCADIAwQ2wELIAQhAgsgAgsiAgRAIAJBCGoPCyABEDQiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxBxGiAAEC0gBAsWACAARQRAQQAPC0GI6gEgADYCAEF/C30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEN8BDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAwBBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC+IBAQJ/IAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB/wFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0BBgIKECCAAKAIAIANzIgRrIARyQYCBgoR4cUGAgYKEeEcNAiAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACwIACwQAQQELoBABFn8jAEFAaiIGQgA3AzAgBkIANwM4IAZCADcDICAGQgA3AygCQAJAAn8CQAJ/IAIEQCACQQRPBEAgAUEGaiEIIAFBBGohDSABQQJqIQsgAkF8cSEMA0AgBkEgaiIPIAEgCkEBdCIJai8BAEEBdGoiESARLwEAQQFqOwEAIAkgC2ovAQBBAXQgD2oiESARLwEAQQFqOwEAIAkgDWovAQBBAXQgD2oiESARLwEAQQFqOwEAIAggCWovAQBBAXQgD2oiCSAJLwEAQQFqOwEAIApBBGohCiAOQQRqIg4gDEcNAAsLIAJBA3EiCQRAA0AgBkEgaiABIApBAXRqLwEAQQF0aiIIIAgvAQBBAWo7AQAgCkEBaiEKIAdBAWoiByAJRw0ACwsgBCgCACIKIAYvAT4iEEUNARpBDyELDAILIAQoAgALIQpBACEQIAYvATwEQEEOIQsMAQsgBi8BOgRAQQ0hCwwBCyAGLwE4BEBBDCELDAELIAYvATYEQEELIQsMAQsgBi8BNARAQQohCwwBCyAGLwEyBEBBCSELDAELIAYvATAEQEEIIQsMAQsgBi8BLgRAQQchCwwBCyAGLwEsBEBBBiELDAELIAYvASoEQEEFIQsMAQsgBi8BKARAQQQhCwwBCyAGLwEmBEBBAyELDAELIAYvASQEQEECIQsMAQsgBi8BIkUEQCADIAMoAgAiAEEEajYCACAAQcACNgEAIAMgAygCACIAQQRqNgIAIABBwAI2AQBBASEMDAMLIApBAEchCUEBIQtBASEKQQAMAQsgCiALIAogC0kbIQlBASEKAkADQCAGQSBqIApBAXRqLwEADQEgCkEBaiIKIAtHDQALIAshCgtBAQshD0F/IQcgBi8BIiIIQQJLDQFBBCAIQQF0a0H+/wNxIAYvASQiDWsiDkEASA0BIA5BAXQgBi8BJiIOayIMQQBIDQEgDEEBdCAGLwEoIgxrIhFBAEgNASARQQF0IAYvASoiEWsiGEEASA0BIBhBAXQgBi8BLCIYayISQQBIDQEgEkEBdCAGLwEuIhJrIhNBAEgNASATQQF0IAYvATAiE2siFEEASA0BIBRBAXQgBi8BMiIUayIVQQBIDQEgFUEBdCAGLwE0IhVrIhdBAEgNASAXQQF0IAYvATYiF2siFkEASA0BIBZBAXQgBi8BOCIWayIZQQBIDQEgGUEBdCAGLwE6IhlrIhpBAEgNASAaQQF0IAYvATwiGmsiG0EASA0BIBtBAXQiGyAQSSAQIBtHQQAgAEUgD3Ibcg0BIAkgCkshEEEAIQcgBkEAOwECIAYgCDsBBCAGIAggDWoiCDsBBiAGIAggDmoiCDsBCCAGIAggDGoiCDsBCiAGIAggEWoiCDsBDCAGIAggGGoiCDsBDiAGIAggEmoiCDsBECAGIAggE2oiCDsBEiAGIAggFGoiCDsBFCAGIAggFWoiCDsBFiAGIAggF2oiCDsBGCAGIAggFmoiCDsBGiAGIAggGWoiCDsBHCAGIAggGmo7AR4CQCACRQ0AIAJBAUcEQCACQX5xIQhBACEOA0AgASAHQQF0ai8BACINBEAgBiANQQF0aiINIA0vAQAiDUEBajsBACAFIA1BAXRqIAc7AQALIAEgB0EBciINQQF0ai8BACIMBEAgBiAMQQF0aiIMIAwvAQAiDEEBajsBACAFIAxBAXRqIA07AQALIAdBAmohByAOQQJqIg4gCEcNAAsLIAJBAXFFDQAgASAHQQF0ai8BACICRQ0AIAYgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAHOwEACyAJIAogEBshDEEUIRJBACEXIAUiCCERQQAhEwJAAkACQCAADgICAAELQQEhByAMQQlLDQNBgQIhEkHA7QAhEUGA7QAhCEEBIRMMAQsgAEECRiEXQQAhEkHA7gAhEUGA7gAhCCAAQQJHBEAMAQtBASEHIAxBCUsNAgtBASAMdCIUQQFrIRkgAygCACEVQQAhAiAMIQlBACEAQQAhEEF/IQ0DQEEBIAl0IRgCQANAAn9BACASIAUgAkEBdGovAQAiCUEBaksNABogCSASSQRAQQAhCUHgAAwBCyAIIAkgEmtBAXQiB2ovAQAhCSAHIBFqLQAACyEOQX8gCiAAayIPdCEaIBUgECAAdkECdGohGyAYIQcDQCAbIAcgGmoiB0ECdGoiFiAJOwECIBYgDzoAASAWIA46AAAgBw0AC0EBIApBAWt0IQ4DQCAOIgdBAXYhDiAHIBBxDQALIAZBIGogCkEBdGoiCSAJLwEAQQFrIgk7AQAgB0EBayAQcSAHakEAIAcbIRAgAkEBaiECIAlB//8DcUUEQCAKIAtGDQIgASAFIAJBAXRqLwEAQQF0ai8BACEKCyAKIAxNDQAgECAZcSIOIA1GDQALQQEgCiAAIAwgABsiAGsiCXQhDyAKIAtJBEAgAEEBaiEWIAsgAGshDSAKIQcCQANAIA8gBkEgaiAHQQF0ai8BAGsiB0EATA0BIAdBAXQhDyAJIBZqIQcgCUEBaiEJIAcgC0kNAAsgDSEJC0EBIAl0IQ8LQQEhByATIA8gFGoiFEHUBktxIBcgFEHQBEtxcg0DIAMoAgAiDSAOQQJ0aiIHIAw6AAEgByAJOgAAIAcgFSAYQQJ0aiIVIA1rQQJ2OwECIA4hDQwBCwsgEARAIBUgEEECdGoiAEEAOwECIAAgDzoAASAAQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDDYCAEEAIQcLIAcLqgEBA38gASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggPCyABKAIAIQQgASgCBCECIwBBEGsiAyQAAkACQAJAIAIQ1AEEQCAAIgEgAhBQDAELIAJB9////wdLDQEgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQTSADQRBqJAAMAQsQWwALC0sBAn8gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBhDoASEGCyAAKAIAIgAgASACIAMgBmogBEECIAdBAnEbIAUgACgCACgCFBEKAAsgAAJAIAEgACgCBEcNACAAKAIcQQFGDQAgACACNgIcCwuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsKACAAIAFqKAIAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLrQEBA38jAEEQayICJAAgAiABNgIMAkACQAJ/IAAQRyIERQRAQQEhASAAEF4MAQsgABB+QQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDoAiAAECMaDAELIAAQIxogBA0AIAAiASADQQFqEFAMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAJBDGoQViACQQA2AgggAEEEaiACQQhqEFYgAkEQaiQACwUAED0ACycBAX8gACgCACEBIwBBEGsiACQAIAAgATYCDCAAKAIMIABBEGokAAsXACAAKAIIEC5HBEAgACgCCBCgAwsgAAs0AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQYyAAIAEQlgIhABBiIANBEGokACAAC40BAQN/IAEoAgQgACgCACICIAAoAgQiA2tqIQQgAyACayIDBEAgBCACIAP8CgAACyABIAQ2AgQgACAAKAIAIgI2AgQgACABKAIENgIAIAEgAjYCBCAAKAIEIQIgACABKAIINgIEIAEgAjYCCCAAKAIIIQIgACABKAIMNgIIIAEgAjYCDCABIAEoAgQ2AgALMwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFBAnRqNgIMIAIoAgwgAkEQaiQACxkBAX9BASEBIAAQRwR/IAAQfkEBawVBAQsLBwAgAEEEagswAQF/IwBBEGsiAiQAIAIgACgCADYCDCACIAIoAgwgAWo2AgwgAigCDCACQRBqJAAL9wEBBX8jAEEQayIGJAAgBkEMaiIIIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wcgAWsgAk8EQCAAECMhByAFQQRqIgkgAUHz////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAkgBUEMahCgASgCABCfAUEBagVB9////wcLEJ4BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQTQsgAyAERwRAIAIgBGogBCAHaiADIARrEE0LIAFBCkcEQCAHEIsCCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCBC7ASAGQRBqJAALCgAgASAAa0ECdQsPACAAIAAoAgBBBGo2AgALIAEBfyMAQRBrIgEkACABQQxqIAAQVSgCACABQRBqJAALDwAgACAAKAIAQQFqNgIAC1kBAn8jAEEQayIDJAAgAigCACEEIAACfyABIABrQQJ1IgIEQANAIAAgBCAAKAIARg0CGiAAQQRqIQAgAkEBayICDQALC0EACyIAIAEgABsQjgEgA0EQaiQAC/gDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtB8ABqIAxBDGoQ+QEgC2siAEECdSIGQRtKDQEgBkHQnwFqLAAAIQUCQAJAIABBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLAAAEJ0BIAIsAAAQnQFHDQYLIAQgAUEBajYCACABIAU6AAAMAwsgAkHQADoAAAwBCyAFEJ0BIgAgAiwAAEcNACACIAAQsQM6AAAgAS0AAEEBRw0AIAFBADoAACAHEB9FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAZBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALUAECfyMAQRBrIgYkACAGQQxqIgUgARAnIAUQSEHQnwFB7J8BIAIQbyADIAUQmQEiARB4NgIAIAQgARBZNgIAIAAgARBYIAUQJSAGQRBqJAALGAAgAEGQ9wA2AgAgAEEgahAgGiAAEJQCCy8BAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDgASIAIAEgABsQjgEgA0EQaiQAC/ADAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtBHGogDEEPahD9ASALayIFQRtKDQEgBUHQnwFqLAAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQEF/IQAgAUEBaywAABCdASACLAAAEJ0BRw0GCyAEIAFBAWo2AgAgASAGOgAADAMLIAJB0AA6AAAMAQsgBhCdASIAIAIsAABHDQAgAiAAELEDOgAAIAEtAABBAUcNACABQQA6AAAgBxAfRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhACAFQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC1ABAn8jAEEQayIGJAAgBkEMaiIFIAEQJyAFEElB0J8BQeyfASACEHkgAyAFEJsBIgEQeDoAACAEIAEQWToAACAAIAEQWCAFECUgBkEQaiQAC34CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQZCAEIAUgA0EBEKgDIAQpAwghBiAEKQMAIQcgAgRAIAIgBCgCiAEgASAEKAIUIAQoAjxramo2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAsJACAAQQQQqAILDQAgACABIAJCfxCEAgucAQEDf0E1IQECQCAAKAIcIgIgACgCGCIDQQZqQQdwa0EHakEHbiADIAJrIgJB8QJqQQdwQQNJaiIDQTVHBEAgAyIBDQFBNCEBAkACQCACQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEJ0DRQ0CC0E1DwsCQAJAIAJB8wJqQQdwQQNrDgIAAgELIAAoAhQQnQMNAQtBASEBCyABC5sEAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0GI6gFBHDYCAEIAIQMMAgsgACEEAkADQCAFwBB9RQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgZBK2sOAwABAAELQX9BACAGQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkACQCAELQAAIgZBMGsiBUH/AXFBCkkNACAGQeEAa0H/AXFBGU0EQCAGQdcAayEFDAELIAZBwQBrQf8BcUEZSw0BIAZBN2shBQsgCiAFQf8BcUwNACAIIAxCACALQgAQQEEBIQYCQCAIKQMIQgBSDQAgCyAMfiINIAWtQv8BgyIOQn+FVg0AIA0gDnwhC0EBIQkgAiEGCyAEQQFqIQQgBiECDAELCyABBEAgASAEIAAgCRs2AgALAkACQCACBEBBiOoBQcQANgIAIAdBACADQgGDIgxQGyEHIAMhCwwBCyADIAtWDQEgA0IBgyEMCyAMpyAHckUEQEGI6gFBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGI6gFBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuIAQEDfyABKAIEIAAoAgQgACgCACIEayICayEDIAIEQCADIAQgAvwKAAALIAEgAzYCBCAAIAAoAgAiAjYCBCAAIAEoAgQ2AgAgASACNgIEIAAoAgQhAiAAIAEoAgg2AgQgASACNgIIIAAoAgghAiAAIAEoAgw2AgggASACNgIMIAEgASgCBDYCAAuaAwEIfwJAIAAiAUEDcQRAA0AgAS0AACICRSACQT1Gcg0CIAFBAWoiAUEDcQ0ACwsCQAJAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhHDQADQEGAgoQIIANBvfr06QNzIgJrIAJyQYCBgoR4cUGAgYKEeEcNASABKAIEIQMgAUEEaiICIQEgA0GAgoQIIANrckGAgYKEeHFBgIGChHhGDQALDAELIAEhAgsDQCACIgEtAAAiA0UNASABQQFqIQIgA0E9Rw0ACwsgACABRgRAQQAPCwJAIAAgASAAayIDai0AAA0AQYDuASgCACIERQ0AIAQoAgAiAUUNAANAAkACfyAAIQJBACADIgZFDQAaIAAtAAAiBQR/AkADQCAFIAEtAAAiB0cgB0VyDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQUgAkEBaiECIAUNAAtBACEFCyAFBUEACyABLQAAawtFBEAgBCgCACADaiIBLQAAQT1GDQELIAQoAgQhASAEQQRqIQQgAQ0BDAILCyABQQFqIQgLIAgLSgEBfyAAIAM2AhAgAEEANgIMIAEEQCABELMCIQQLIAAgBDYCACAAIAQgAkECdGoiAjYCCCAAIAQgAUECdGo2AgwgACACNgIEIAALRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQSiAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALcgECfyAAQYj+ADYCACAAKAIcBEAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAQRxqECUgACgCIBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0GI6gFBGTYCAEF/BUEBCw8LIAAgAToAAEEBCzABAX8jAEEQayICJAAgAiABKAIANgIAIAAgAhByEH9BoPEAKAIAEGEaIAJBEGokAAsRACACBEAgACABwCAC/AsACwupAQEBfEQAAAAAAADwPyEBAkAgAEGACE4EQEQAAAAAAADgfyEBIABB/w9JBEAgAEH/B2shAAwCC0QAAAAAAADwfyEBQf0XIAAgAEH9F08bQf4PayEADAELIABBgXhKDQBEAAAAAAAAYAMhASAAQbhwSwRAIABByQdqIQAMAQtEAAAAAAAAAAAhAUHwaCAAIABB8GhNG0GSD2ohAAsgASAAQf8Haq1CNIa/ogtEAQF/IwBBEGsiAiQAIAAoAgAhACACIAE2AgggAiAANgIEIAJB/BQ2AgBByAsgAhByEH9BoPEAKAIAEGEaIAJBEGokAAt4AQN/AkAgAEUNACAAKAIgRQ0AIAAoAiQiAkUNACAAKAIcIgFFDQAgASgCACAARw0AIAEoAgRBtP4Aa0EfSw0AIAEoAjgiAwRAIAAoAiggAyACEQEAIAAoAiQhAiAAKAIcIQELIAAoAiggASACEQEAIABBADYCHAsL6QMAQZTZAUGFExAcQazZAUGUDkEBQQAQG0G42QFB8QxBAUGAf0H/ABACQdDZAUHqDEEBQYB/Qf8AEAJBxNkBQegMQQFBAEH/ARACQdzZAUGjCUECQYCAfkH//wEQAkHo2QFBmglBAkEAQf//AxACQfTZAUGyCUEEQYCAgIB4Qf////8HEAJBgNoBQakJQQRBAEF/EAJBjNoBQfMPQQRBgICAgHhB/////wcQAkGY2gFB6g9BBEEAQX8QAkGk2gFB4A9BCEKAgICAgICAgIB/Qv///////////wAQDUGw2gFB1w9BCEIAQn8QDUG82gFBogpBBBAMQcjaAUGMEUEIEAxBmC1BkhAQGkHgLUEEQfgPEAVBqC5BAkGeEBAFQfQuQQRBrRAQBUHMJhAZQcAvQQBB9RkQAEHoL0EAQboaEABBkDBBAUGTGhAAQbgwQQJBwhYQAEHgMEEDQeEWEABBiDFBBEGJFxAAQbAxQQVBphcQAEHYMUEEQd8aEABBgDJBBUH9GhAAQegvQQBBjBgQAEGQMEEBQesXEABBuDBBAkHOGBAAQeAwQQNBrBgQAEGIMUEEQdQZEABBsDFBBUGyGRAAQagyQQhBkRkQAEHQMkEJQe8YEABB+DJBBkHMFxAAQaAzQQdBpBsQAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEBajYCDCABLQAAC2ABBH8gASAAKAIEIgYgA2siB2ohBCAGIQUDQCACIARNBEAgACAFNgIEIAdFIAMgBkZyRQRAIAYgB2sgASAH/AoAAAsFIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEDAELCwsQACAAKAIAIgAEQCAAEB0LCzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAAC6ABAQR/IwBBgAJrIgAkACAAIAQ3A/gBIABCJTcD8AEgAEHwAWoiB0EBckGZDiAFIAIoAgQQywEgAEHQAWoiBiAGEC4gByAAQfgBahCJAyAGaiIIIAIQaSEJIABBBGoiByACECcgBiAJIAggAEEQaiIGIABBDGogAEEIaiAHEIADIAcQJSABIAYgACgCDCAAKAIIIAIgAxCFASAAQYACaiQAC6IBAQN/IwBBkAFrIgAkACAAIAQ2AowBIABCJTcDgAEgAEGAAWoiBkEBckGgDiAFIAIoAgQQywEgAEHzAGoiBCAEQQ0QLiAGIABBjAFqEMoBIARqIgcgAhBpIQggAEEEaiIGIAIQJyAEIAggByAAQRBqIgQgAEEMaiAAQQhqIAYQgAMgBhAlIAEgBCAAKAIMIAAoAgggAiADEIUBIABBkAFqJAALnQEBBH8jAEHwAGsiACQAIAAgBDcDaCAAQiU3A2AgAEHgAGoiB0EBckGZDiAFIAIoAgQQywEgAEFAayIGIAYQLiAHIABB6ABqEIkDIAZqIgggAhBpIQkgAEEEaiIHIAIQJyAGIAkgCCAAQRBqIgYgAEEMaiAAQQhqIAcQigMgBxAlIAEgBiAAKAIMIAAoAgggAiADEIABIABB8ABqJAALngEBA38jAEHQAGsiACQAIAAgBDYCTCAAQiU3A0AgAEFAayIGQQFyQaAOIAUgAigCBBDLASAAQTNqIgQgBEENEC4gBiAAQcwAahDKASAEaiIHIAIQaSEIIABBBGoiBiACECcgBCAIIAcgAEEQaiIEIABBDGogAEEIaiAGEIoDIAYQJSABIAQgACgCDCAAKAIIIAIgAxCAASAAQdAAaiQACwcAIAARDwALQgADQCABIAJHBEAgAQJ/IAEsAAAQTARAIAMoAgAgASwAAEECdGooAgAMAQsgAS0AAAs6AAAgAUEBaiEBDAELCyABCz0AA0AgASACRwRAIAEiACAAKAIAEEwEfyADKAIAIAAoAgBBAnRqBSAACygCADYCACAAQQRqIQEMAQsLIAELPwECfyAAKAIEIQMgACgCCCECA0AgAiADRwRAIAAgAiABayICNgIIDAELCyAAKAIAIgIEQCAAKAIMGiACEC0LC0wBAX8CQCABRQ0AIAFBiNgBEFIiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQO0UNACAAKAIQIAEoAhBBABA7IQILIAILCwBBnBFBABCtAgALgQEBA38gACgCBCIEQQFxIQUCfyABLQA3QQFGBEAgBEEIdSIGIAVFDQEaIAIoAgAgBhDoAQwBCyAEQQh1IAVFDQAaIAEgACgCACgCBDYCOCAAKAIEIQRBACECQQALIQUgACgCACIAIAEgAiAFaiADQQIgBEECcRsgACgCACgCHBEIAAsKACAAIAFBABA7C/gBAQF/IwBBEGsiAiQAIAIgATYCDEGQ1gEoAgAiAiAAIAEQzQMaIAAQqAEgAGpBAWstAABBCkcEQAJAAkAgAigCTCIAQQBOBEAgAEUNAUGU4QEoAgAgAEH/////A3FHDQELAkAgAigCUEEKRg0AIAIoAhQiACACKAIQRg0AIAIgAEEBajYCFCAAQQo6AAAMAgsgAhDeAQwBCyACQcwAaiIBIgAgACgCACIAQf////8DIAAbNgIAAkACQCACKAJQQQpGDQAgAigCFCIAIAIoAhBGDQAgAiAAQQFqNgIUIABBCjoAAAwBCyACEN4BCyABEKwBGgsLEMoDAAsdAQF/IwBBEGsiASQAIAEgADYCAEG9HiABEK0CAAu5AgEDfyMAQSBrIggkAEH3////AyIJIAFBf3NqIAJPBEAgABAjIQogAUHz////AUkEQCAIIAFBAXQ2AhwgCCABIAJqNgIQIAhBEGogCEEcahCgASgCABCQAUEBaiEJCyAIQRxqIAhBGGogABBVKAIAELwBIAhBEGogCRCPASAIKAIQIQIgCCgCFBogBARAIAIgCiAEEGULIAYEQCAEQQJ0IAJqIAcgBhBlCyADIAQgBWoiCWshByADIAlHBEAgBEECdCIDIAJqIAZBAnRqIAMgCmogBUECdGogBxBlCyABQQFqIgFBAkcEQCAKIAEQqQELIAAgAjYCACAAIAgoAhQQXCAAIAQgBmogB2oiADYCBCAIQQA2AgwgAiAAQQJ0aiAIQQxqEFYgCEEcahC7ASAIQSBqJAAPCxBbAAuJAQECfyMAQRBrIgMkACABQff///8HTQRAAkAgARDUAQRAIAAgARBQIAAhBAwBCyADQQhqIAEQnwFBAWoQngEgAygCDBogACADKAIIIgQ2AgAgACADKAIMEFwgACABNgIECyAEIAEgAhCyAiADQQA6AAcgASAEaiADQQdqEF0gA0EQaiQADwsQWwALRAECfyAAECghAyAAEB8hBCACIANNBEAgABAjIgMgASACEE0gACADIAIQwAIPCyAAIAMgAiADayAEQQAgBCACIAEQuQELPQEBfyMAQRBrIgMkACADIAI6AA8DQCABBEAgACADLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAsZACAAQYCAgIAETwRAEKoCAAsgAEECdBBTC5IFAQh/QQQgASABQQRNGyEDQQEgACAAQQFNGyEHA0ACQCAHIAMgB2pBAWtBACADa3EiACAAIAdJGyEEQQAhASMAQRBrIggkAAJAIANBA3ENACAEIANwDQACfwJAQTACfyADQQhGBEAgBBA0DAELQRwhASADQQNxIANBBElyDQEgA0ECdiIAIABBAWtxDQFBMEFAIANrIARJDQIaAn9BECEBAkBBEEEQIAMgA0EQTRsiACAAQRBNGyICIAJBAWtxRQRAIAIhAAwBCwNAIAEiAEEBdCEBIAAgAkkNAAsLQUAgAGsgBE0EQEGI6gFBMDYCAEEADAELQQBBECAEQQtqQXhxIARBC0kbIgUgAGpBDGoQNCICRQ0AGiACQQhrIQECQCAAQQFrIAJxRQRAIAEhAAwBCyACQQRrIgkoAgAiBEF4cSAAIAJqQQFrQQAgAGtxQQhrIgIgAEEAIAIgAWtBD00baiIAIAFrIgZrIQIgBEEDcUUEQCABKAIAIQEgACACNgIEIAAgASAGajYCAAwBCyAAIAIgACgCBEEBcXJBAnI2AgQgACACaiICIAIoAgRBAXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAAa0ECSA0CIAAtAAFBwAFxQYABRw0CQQIMAQsgAUFvTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhAQJAAkAgBUHtAUcEQCAFQeABRw0BIAFBYHFBoH9GDQIMBQsgAUGgf04NBAwBCyABQb9/Sg0DC0HAAXFBgAFHDQJBAwwBCyADIABrQQRIIAFBdEtyDQEgAC0AAyEGIAAtAAIhCCAALAABIQECQAJAAkACQCAFQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NBAwCCyABQZB/Tg0DDAELIAFBv39KDQILIAhBwAFxQYABRyAGQcABcUGAAUdyIAZBP3EgCEEGdEHAH3EgBUESdEGAgPAAcSABQT9xQQx0cnJyQf//wwBLcg0BQQQLIQEgB0EBaiEHIAAgAWohAAwBCwsgACACawu4BAEEfyMAQRBrIgAkAAJ/IAAgAjYCDCAAIAU2AggCQAJAA0AgAiADTyAFIAZPckUEQCACLAAAIghB/wFxIQECfyAIQQBOBEAgAUH//8MASw0FQQEMAQsgCEFCSQ0EIAhBX00EQEEBIAMgAmtBAkgNBhpBAiEIIAItAAEiCUHAAXFBgAFHDQQgCUE/cSABQQZ0QcAPcXIhAUECDAELIAhBb00EQEEBIQggAyACayIKQQJIDQQgAiwAASEJAkACQCABQe0BRwRAIAFB4AFHDQEgCUFgcUGgf0YNAgwICyAJQaB/SA0BDAcLIAlBv39KDQYLIApBAkYNBCACLQACIghBwAFxQYABRw0FIAhBP3EgAUEMdEGA4ANxIAlBP3FBBnRyciEBQQMMAQsgCEF0Sw0EQQEhCCADIAJrIgpBAkgNAyACLAABIQkCQAJAAkACQCABQfABaw4FAAICAgECCyAJQfAAakH/AXFBME8NBwwCCyAJQZB/Tg0GDAELIAlBv39KDQULIApBAkYNAyACLQACIgtBwAFxQYABRw0EIApBA0YNAyACLQADIgpBwAFxQYABRw0EQQIhCCAKQT9xIAtBBnRBwB9xIAFBEnRBgIDwAHEgCUE/cUEMdHJyciIBQf//wwBLDQNBBAshCCAFIAE2AgAgACACIAhqIgI2AgwgACAFQQRqIgU2AggMAQsLIAIgA0khCAsgCAwBC0ECCyAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokAAv1AwAjAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkADQAJAIAIgA08EQEEAIQUMAQtBAiEFIAIoAgAiAUH//8MASyABQYBwcUGAsANGcg0AAkAgAUH/AE0EQEEBIQUgBiAAKAIIIgJrQQBMDQIgACACQQFqNgIIIAIgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0EIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBiAAKAIIIgJrIQUgAUH//wNNBEAgBUEDSA0EIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyAFQQRIDQMgACACQQFqNgIIIAIgAUESdkHwAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQx2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEEEaiICNgIMDAELCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC5IDAQR/IAIhAANAAkAgBCAGTSAAIANPcg0AAn8gAEEBaiAALQAAIgHAQQBODQAaIAFBwgFJDQEgAUHfAU0EQCADIABrQQJIDQIgAC0AAUHAAXFBgAFHDQIgAEECagwBCyABQe8BTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhBQJAAkAgAUHtAUcEQCABQeABRw0BIAVBYHFBoH9GDQIMBQsgBUGgf04NBAwBCyAFQb9/Sg0DC0HAAXFBgAFHDQIgAEEDagwBCyADIABrQQRIIAFB9AFLciAEIAZrQQJJcg0BIAAtAAMhByAALQACIQggACwAASEFAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUGQf04NAwwBCyAFQb9/Sg0CCyAIQcABcUGAAUcgB0HAAXFBgAFHciAHQT9xIAhBBnRBwB9xIAFBEnRBgIDwAHEgBUE/cUEMdHJyckH//8MAS3INASAGQQFqIQYgAEEEagshACAGQQFqIQYMAQsLIAAgAmsLgQUBBX8jAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkACQANAIAIgA08gBSAGT3JFBEBBAiEJIAACfyACLQAAIgHAQQBOBEAgBSABOwEAQQEMAQsgAUHCAUkNBCABQd8BTQRAQQEgAyACa0ECSA0GGiACLQABIghBwAFxQYABRw0EIAUgCEE/cSABQQZ0QcAPcXI7AQBBAgwBCyABQe8BTQRAQQEhCSADIAJrIgpBAkgNBCACLAABIQgCQAJAIAFB7QFHBEAgAUHgAUcNASAIQWBxQaB/Rw0IDAILIAhBoH9ODQcMAQsgCEG/f0oNBgsgCkECRg0EIAItAAIiCUHAAXFBgAFHDQUgBSAJQT9xIAhBP3FBBnQgAUEMdHJyOwEAQQMMAQsgAUH0AUsNBEEBIQkgAyACayIKQQJIDQMgAi0AASILwCEIAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgCEHwAGpB/wFxQTBPDQcMAgsgCEGQf04NBgwBCyAIQb9/Sg0FCyAKQQJGDQMgAi0AAiIIQcABcUGAAUcNBCAKQQNGDQMgAi0AAyIKQcABcUGAAUcNBCAGIAVrQQNIDQNBAiEJIApBP3EiCiAIQQZ0IgxBwB9xIAtBDHRBgOAPcSABQQdxIgFBEnRycnJB///DAEsNAyAFIAogDEHAB3FyQYC4A3I7AQIgBSAIQQR2QQNxIAtBAnQiCUHAAXEgAUEIdHIgCUE8cXJyQcD/AGpBgLADcjsBACAFQQJqIQVBBAsgAmoiAjYCDCAAIAVBAmoiBTYCCAwBCwsgAiADSSEJCyAJDAELQQILIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC8sFAQJ/IwBBEGsiACQAAn8gACACNgIMIAAgBTYCCAJAAkADQCACIANPBEBBACEFDAILQQIhBQJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBCAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQUgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNBSAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/twNNBEBBASEFIAMgAmtBA0gNBCACLwECIghBgPgDcUGAuANHDQIgBiAAKAIIIglrQQRIDQQgCEH/B3EgAUEKdEGA+ANxIAFBwAdxIgVBCnRyckH//z9LDQIgACACQQJqNgIMIAAgCUEBajYCCCAJIAVBBnZBAWoiAkECdkHwAXI6AAAgACAAKAIIIgVBAWo2AgggBSACQQR0QTBxIAFBAnZBD3FyQYABcjoAACAAIAAoAggiAkEBajYCCCACIAhBBnZBD3EgAUEEdEEwcXJBgAFyOgAAIAAgACgCCCIBQQFqNgIIIAEgCEE/cUGAAXI6AAAMAQsgAUGAwANJDQMgBiAAKAIIIgJrQQNIDQQgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2Qb8BcToAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBAmoiAjYCDAwBCwtBAgwCCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQACw8AIAEgACgCAGogAjYCAAs8AQJ/IwBBEGsiASQAIAEgADYCDCABQQhqIAFBDGoQY0EEQQFB3OEBKAIAKAIAGyECEGIgAUEQaiQAIAILOAEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiAFQQxqEGMgACABIAIgAxDSASEAEGIgBUEQaiQAIAALEgAgBCACNgIAIAcgBTYCAEEDCw0AIAEgACgCAGooAgALKwEBfyAAQdyhATYCAAJAIAAoAggiAUUNACAALQAMQQFxRQ0AIAEQLQsgAAsEACABCycBAX8gACgCACgCACgCAEHM8gFBzPIBKAIAQQFqIgA2AgAgADYCBAu0CgEHf0HI8gEtAABFBEAjAEEQayIFJABBwPIBLQAARQRAIwBBEGsiBiQAIAZBATYCDEGg8QEgBigCDBAyIgFByKEBNgIAIwBBEGsiAyQAIAFBCGoiAkEANgIIIAJCADcCACACQQA6AIQBIANBCGogAhBVKAIAGiADQQA6AA8jAEEQayIEJAAQvAJBHkkEQBCMAQALIARBCGogAkEMakEeELsCIAIgBCgCCCIHNgIEIAIgBzYCACACIAcgBCgCDEECdGo2AgggBEEQaiQAIAJBHhDZAiADQQE6AA8gA0EQaiQAIAFBkAFqQYwWELABIAIQ2gJBrPwBQQEQMkHotQE2AgAgAUGs/AFB+O8BEDEQM0G0/AFBARAyQYi2ATYCACABQbT8AUGA8AEQMRAzQbz8AUEBEDIiAkEAOgAMIAJBADYCCCACQdyhATYCACACQZCiATYCCCABQbz8AUHY8gEQMRAzQcz8AUEBEDJByK0BNgIAIAFBzPwBQdDyARAxEDNB1PwBQQEQMkHgrgE2AgAgAUHU/AFB4PIBEDEQM0Hc/AFBARAyIgJBmKoBNgIAIAIQLjYCCCABQdz8AUHo8gEQMRAzQej8AUEBEDJB9K8BNgIAIAFB6PwBQfDyARAxEDNB8PwBQQEQMkHcsQE2AgAgAUHw/AFBgPMBEDEQM0H4/AFBARAyQeiwATYCACABQfj8AUH48gEQMRAzQYD9AUEBEDJB0LIBNgIAIAFBgP0BQYjzARAxEDNBiP0BQQEQMiICQa7YADsBCCACQciqATYCACACQQxqECQaIAFBiP0BQZDzARAxEDNBoP0BQQEQMiICQq6AgIDABTcCCCACQfCqATYCACACQRBqECQaIAFBoP0BQZjzARAxEDNBvP0BQQEQMkGotgE2AgAgAUG8/QFBiPABEDEQM0HE/QFBARAyQaC4ATYCACABQcT9AUGQ8AEQMRAzQcz9AUEBEDJB9LkBNgIAIAFBzP0BQZjwARAxEDNB1P0BQQEQMkHguwE2AgAgAUHU/QFBoPABEDEQM0Hc/QFBARAyQcTDATYCACABQdz9AUHI8AEQMRAzQeT9AUEBEDJB2MQBNgIAIAFB5P0BQdDwARAxEDNB7P0BQQEQMkHMxQE2AgAgAUHs/QFB2PABEDEQM0H0/QFBARAyQcDGATYCACABQfT9AUHg8AEQMRAzQfz9AUEBEDJBtMcBNgIAIAFB/P0BQejwARAxEDNBhP4BQQEQMkHcyAE2AgAgAUGE/gFB8PABEDEQM0GM/gFBARAyQYTKATYCACABQYz+AUH48AEQMRAzQZT+AUEBEDJBrMsBNgIAIAFBlP4BQYDxARAxEDNBnP4BQQEQMiICQZjVATYCCCACQai9ATYCACACQdi9ATYCCCABQZz+AUGo8AEQMRAzQaj+AUEBEDIiAkG81QE2AgggAkG0vwE2AgAgAkHkvwE2AgggAUGo/gFBsPABEDEQM0G0/gFBARAyIgJBCGoQtgIgAkGkwQE2AgAgAUG0/gFBuPABEDEQM0HA/gFBARAyIgJBCGoQtgIgAkHEwgE2AgAgAUHA/gFBwPABEDEQM0HM/gFBARAyQdTMATYCACABQcz+AUGI8QEQMRAzQdT+AUEBEDJBzM0BNgIAIAFB1P4BQZDxARAxEDMgBkEQaiQAIAVBoPEBNgIIQbzyASAFKAIIEFUaQcDyAUEBOgAACyAFQRBqJABBxPIBQbzyARDVAkHI8gFBAToAAAsgAEHE8gEoAgAiADYCACAAENQCCxEAIABBoPEBRwRAIAAQ1wILCxMAIAAgASgCACIANgIAIAAQ1AILlwEBA38gAEHIoQE2AgAgAEEIaiEBA0AgARBrIAJLBEAgASACEIIBKAIABEAgASACEIIBKAIAEL8BCyACQQFqIQIMAQsLIABBkAFqECAaIwBBEGsiAiQAIAJBDGogARBVIgEoAgAiAygCAARAIAMQ2gIgASgCABogASgCACIBQQxqIAEoAgAgARC5AhC4AgsgAkEQaiQAIAALDwAgACAAKAIEQQFqNgIECyYBAX8gACgCBCECA0AgASACRwRAIAJBBGshAgwBCwsgACABNgIEC3UBAn8jAEEQayIDJAAgA0EEaiICIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIiASgCBCEAIAIoAgghAgNAIAAgAkYEQCABKAIAIAEoAgQ2AgQgA0EQaiQABSAAELoCIAEgAEEEaiIANgIEDAELCwsRACAAEGsaIAAgACgCABDYAgsgACAAQZiqATYCACAAKAIIEC5HBEAgACgCCBCgAwsgAAsEAEF/C+EBAQR/IwBBEGsiBSQAIwBBIGsiAyQAIANBGGogACABEL0CIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgRBAnUQZSABIAIgBGo2AgggA0EQaiABQQxqIAFBCGoQZiABQRBqJAAgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAgBCAAEOwBa0ECdRDwASEAIAFBEGokACADIAA2AgwgAyACIAMoAhQQjgE2AgggBUEIaiADQQxqIANBCGoQZiADQSBqJAAgBSgCDCAFQRBqJAAL9gUBCn8jAEEQayITJAAgAiAANgIAQQRBACAHGyEVIANBgARxIRYDQCAUQQRGBEAgDRAfQQFLBEAgEyANEE42AgwgAiATQQxqQQEQ8AEgDRB1IAIoAgAQ3QI2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsgE0EQaiQABQJAAkACQAJAAkACQCAIIBRqLQAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgEEshByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsgDRBaDQIgDUEAEMwBKAIAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAILIAwQWiAWRXINASACIAwQTiAMEHUgAigCABDdAjYCAAwBCyACKAIAIAQgFWoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAEF9FDQAgB0EEaiEHDAELCyAOQQBKBEAgAigCACEPIA4hEANAIBBFIAQgB09yRQRAIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCyAQBH8gBkEwEEsFQQALIREgAigCACEPA0AgEEEASgRAIAIgD0EEaiISNgIAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIAIoAgAiD0EEajYCACAPIAk2AgALAkAgBCAHRgRAIAZBMBBLIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAELIAsQWgR/QX8FIAtBABAiLAAACyESQQAhEEEAIREDQCAEIAdGDQECQCAQIBJHBEAgECEPDAELIAIgAigCACIPQQRqNgIAIA8gCjYCAEEAIQ8gCxAfIBFBAWoiEU0EQCAQIRIMAQsgCyARECItAABB/wBGBEBBfyESDAELIAsgERAiLAAAIRILIAdBBGsiBygCACEQIAIgAigCACIYQQRqNgIAIBggEDYCACAPQQFqIRAMAAsACyACKAIAEMcBCyAUQQFqIRQMAQsLC70BAQF/IwBBEGsiCiQAAn8gAARAIAIQ5gIMAQsgAhDlAgshAAJAIAEEQCAKQQRqIgEgABCSASADIAooAgQ2AAAgASAAEMIBDAELIApBBGoiASAAEOECIAMgCigCBDYAACABIAAQewsgCCABEKsBIAEQORogBCAAEHg2AgAgBSAAEFk2AgAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARCrASABEDkaIAkgABDBATYCACAKQRBqJAAL2wEBBH8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQvQIgAygCGCEEIAMoAhwhBiMAQRBrIgEkACABIAY2AgwgAiAEIAYgBGsiBBBNIAEgAiAEajYCCCADQRBqIAFBDGogAUEIahBmIAFBEGokACADKAIQIQQjAEEQayIBJAAgASAANgIMIAFBDGoiACAEIAAQ7AFrEPMBIQAgAUEQaiQAIAMgADYCDCADIAIgAygCFBCOATYCCCAFQQhqIANBDGogA0EIahBmIANBIGokACAFKAIMIAVBEGokAAsRACAAIAEgASgCACgCKBEBAAvLBQEKfyMAQRBrIhQkACACIAA2AgAgA0GABHEhFgNAIBVBBEYEQCANEB9BAUsEQCAUIA0QTjYCDCACIBRBDGpBARDzASANEHcgAigCABDgAjYCAAsgA0GwAXEiA0EQRwRAIAEgA0EgRgR/IAIoAgAFIAALNgIACyAUQRBqJAAFAkACQAJAAkACQAJAIAggFWotAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwDCyANEFoNAiANQQAQIi0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMEFogFkVyDQEgAiAMEE4gDBB3IAIoAgAQ4AI2AgAMAQsgAigCACAEIAdqIgQhEQNAAkAgBSARTQ0AIAZBwAAgESwAABBgRQ0AIBFBAWohEQwBCwsgDiIPQQBKBEADQCAPRSAEIBFPckUEQCAPQQFrIQ8gEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAADAELCyAPBH8gBkEwEEEFQQALIRIDQCACIAIoAgAiEEEBajYCACAPQQBKBEAgECASOgAAIA9BAWshDwwBCwsgECAJOgAACwJAIAQgEUYEQCAGQTAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBCyALEFoEf0F/BSALQQAQIiwAAAshEEEAIQ9BACETA0AgBCARRg0BAkAgDyAQRwRAIA8hEgwBCyACIAIoAgAiEEEBajYCACAQIAo6AABBACESIAsQHyATQQFqIhNNBEAgDyEQDAELIAsgExAiLQAAQf8ARgRAQX8hEAwBCyALIBMQIiwAACEQCyARQQFrIhEtAAAhDyACIAIoAgAiGEEBajYCACAYIA86AAAgEkEBaiEPDAALAAsgAigCABCEAQsgFUEBaiEVDAELCwu7AQEBfyMAQRBrIgokAAJ/IAAEQCACEO0CDAELIAIQ7AILIQACQCABBEAgCkEEaiIBIAAQkgEgAyAKKAIENgAAIAEgABDCAQwBCyAKQQRqIgEgABDhAiADIAooAgQ2AAAgASAAEHsLIAggARBwIAEQIBogBCAAEHg6AAAgBSAAEFk6AAAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARBwIAEQIBogCSAAEMEBNgIAIApBEGokAAsIACAAKAIARQsKACAAQdjwARB6CwoAIABB4PABEHoLFwAgAiAAIAEgAGsiAEECdRBlIAAgAmoLgwIBBX8jAEEQayIGJAAgBkEMaiIJIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wMgAWsgAk8EQCAAECMhByAFQQRqIgggAUHz////AUkEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAggBUEMahCgASgCABCQAUEBagVB9////wMLEI8BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQZQsgAyAERwRAIARBAnQiCCACaiAHIAhqIAMgBGsQZQsgAUEBaiIBQQJHBEAgByABEKkBCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCRC7ASAGQRBqJAALHwEBfyABKAIAELwDIQIgACABKAIANgIEIAAgAjYCAAuyDgEKfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahArBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQeQANgJIIAsgC0HoAGogC0HwAGogC0HIAGoiARA2Ig8oAgAiCjYCZCALIApBkANqNgJgIAEQJCERIAtBPGoQJCEMIAtBMGoQJCEOIAtBJGoQJCENIAtBGGoQJCEQIwBBEGsiASQAAkAgAgRAIAFBBGoiCiADEOYCIgIQkgEMAQsgAUEEaiIKIAMQ5QIiAhCSAQsgCyABKAIENgBcIAogAhDCASANIAoQqwEgChA5GiAKIAIQeyAOIAoQqwEgChA5GiALIAIQeDYCWCALIAIQWTYCVCAKIAIQWCARIAoQcCAKECAaIAogAhB8IAwgChCrASAKEDkaIAsgAhDBATYCFCABQRBqJAAgCSAIKAIANgIAIARBgARxIRJBACEDQQAhAQNAIAEhAgJAAkACQAJAIANBBEYNACAAIAtBjARqECsNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAEDcQXwRAIAtBDGogABDpAiAQIAsoAgwQ6gEMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahArDQYgB0EBIAAQNxBfRQ0GIAtBDGogABDpAiAQIAsoAgwQ6gEMAAsACwJAIA4QH0UNACAAEDcgDhAjKAIARw0AIAAQPhogBkEAOgAAIA4gAiAOEB9BAUsbIQEMBgsCQCANEB9FDQAgABA3IA0QIygCAEcNACAAED4aIAZBAToAACANIAIgDRAfQQFLGyEBDAYLAkAgDhAfRQ0AIA0QH0UNACAFIAUoAgBBBHI2AgBBACEADAQLIA4QH0UEQCANEB9FDQULIAYgDRAfRToAAAwECyASIAIgA0ECSXJyRQRAQQAhASADQQJGIAstAF9BAEdxRQ0FCyALIAwQTjYCCCALQQxqIAtBCGoQwwEhAQJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQdTYCCCABIAtBCGoQdg0AIAdBASABKAIAKAIAEF9FDQAgARD2AQwBCwsgCyAMEE42AgggASgCACALQQhqIgQoAgBrQQJ1IgogEBAfTQRAIAsgEBB1NgIIIARBACAKaxDwASAQEHUhCiAMEE4hEyMAQRBrIhQkABBzIQQgChBzIQogBCATEHMgCiAEa0F8cRCLAUUgFEEQaiQADQELIAsgDBBONgIEIAEgC0EIaiALQQRqEMMBKAIANgIACyALIAEoAgA2AggDQAJAIAsgDBB1NgIEIAtBCGoiASALQQRqEHYNACAAIAtBjARqECsNACAAEDcgASgCACgCAEcNACAAED4aIAEQ9gEMAQsLIBJFDQMgCyAMEHU2AgQgC0EIaiALQQRqEHYNAyAFIAUoAgBBBHI2AgBBACEADAILA0ACQCAAIAtBjARqECsNAAJ/IAdBwAAgABA3IgEQXwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQkwEgCSgCACEECyAJIARBBGo2AgAgBCABNgIAIApBAWoMAQsgERAfRSAKRXINASABIAsoAlRHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED4aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIUQQBMDQACQCAAIAtBjARqECtFBEAgABA3IAsoAlhGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAED4aIAsoAhRBAEwNAQJAIAAgC0GMBGoQK0UEQCAHQcAAIAAQNxBfDQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQkwELIAAQNyEBIAkgCSgCACIEQQRqNgIAIAQgATYCACALIAsoAhRBAWs2AhQMAAsACyACIQEgCCgCACAJKAIARw0DIAUgBSgCAEEEcjYCAEEAIQAMAQsCQCACRQ0AQQEhCgNAIAIQHyAKTQ0BAkAgACALQYwEahArRQRAIAAQNyACIAoQzAEoAgBGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABA+GiAKQQFqIQoMAAsAC0EBIQAgDygCACALKAJkRg0AQQAhACALQQA2AgwgESAPKAIAIAsoAmQgC0EMahBDIAsoAgwEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDkaIA0QORogDhA5GiAMEDkaIBEQIBogDxA1DAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAACxgAIAAgARCsARA8IAAgARDyASgCADYCBAsKACAAQcjwARB6CwoAIABB0PABEHoLxwEBBn8jAEEQayIEJAAgABDyASgCACEFQQECfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDIANBAU0bIQMgASgCACEGIAAoAgAhByAFQeQARgR/QQAFIAAoAgALIAMQ3AEiCARAIAVB5ABHBEAgABCsARoLIARB4wA2AgQgACAEQQhqIAggBEEEahA2IgUQ6wIgBRA1IAEgACgCACAGIAdrajYCACACIAMgACgCAGo2AgAgBEEQaiQADwsQPQALIAEBfyABKAIAEJ0CwCECIAAgASgCADYCBCAAIAI6AAALxA4BCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQLARAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HkADYCTCALIAtB6ABqIAtB8ABqIAtBzABqIgEQNiIPKAIAIgo2AmQgCyAKQZADajYCYCABECQhESALQUBrECQhDCALQTRqECQhDiALQShqECQhDSALQRxqECQhECMAQRBrIgEkAAJAIAIEQCABQQRqIgogAxDtAiICEJIBDAELIAFBBGoiCiADEOwCIgIQkgELIAsgASgCBDYAXCAKIAIQwgEgDSAKEHAgChAgGiAKIAIQeyAOIAoQcCAKECAaIAsgAhB4OgBbIAsgAhBZOgBaIAogAhBYIBEgChBwIAoQIBogCiACEHwgDCAKEHAgChAgGiALIAIQwQE2AhggAUEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahAsDQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLQAADgUBAAQDBQkLIANBA0YNByAHQQEgABA4EGAEQCALQRBqIAAQ7wIgECALLAAQELgBDAILIAUgBSgCAEEEcjYCAEEAIQAMBgsgA0EDRg0GCwNAIAAgC0GMBGoQLA0GIAdBASAAEDgQYEUNBiALQRBqIAAQ7wIgECALLAAQELgBDAALAAsCQCAOEB9FDQAgABA4Qf8BcSAOQQAQIi0AAEcNACAAED8aIAZBADoAACAOIAIgDhAfQQFLGyEBDAYLAkAgDRAfRQ0AIAAQOEH/AXEgDUEAECItAABHDQAgABA/GiAGQQE6AAAgDSACIA0QH0EBSxshAQwGCwJAIA4QH0UNACANEB9FDQAgBSAFKAIAQQRyNgIAQQAhAAwECyAOEB9FBEAgDRAfRQ0FCyAGIA0QH0U6AAAMBAsgEiACIANBAklyckUEQEEAIQEgA0ECRiALLQBfQQBHcUUNBQsgCyAMEE42AgwgC0EQaiALQQxqEMMBIQECQCADRQ0AIAMgC2otAFtBAUsNAANAAkAgCyAMEHc2AgwgASALQQxqEHYNACAHQQEgASgCACwAABBgRQ0AIAEQ+AEMAQsLIAsgDBBONgIMIAEoAgAgC0EMaiIEKAIAayIKIBAQH00EQCALIBAQdzYCDCAEQQAgCmsQ8wEgEBB3IQogDBBOIRMjAEEQayIUJAAQcyEEIAoQcyEKIAQgExBzIAogBGsQiwFFIBRBEGokAA0BCyALIAwQTjYCCCABIAtBDGogC0EIahDDASgCADYCAAsgCyABKAIANgIMA0ACQCALIAwQdzYCCCALQQxqIgEgC0EIahB2DQAgACALQYwEahAsDQAgABA4Qf8BcSABKAIALQAARw0AIAAQPxogARD4AQwBCwsgEkUNAyALIAwQdzYCCCALQQxqIAtBCGoQdg0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQLA0AAn8gB0HAACAAEDgiARBgBEAgCSgCACIEIAsoAogERgRAIAggCSALQYgEahDuAiAJKAIAIQQLIAkgBEEBajYCACAEIAE6AAAgCkEBagwBCyAREB9FIApFcg0BIAstAFogAUH/AXFHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED8aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqECxFBEAgABA4Qf8BcSALLQBbRg0BCyAFIAUoAgBBBHI2AgBBACEADAMLA0AgABA/GiALKAIYQQBMDQECQCAAIAtBjARqECxFBEAgB0HAACAAEDgQYA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEO4CCyAAEDghASAJIAkoAgAiBEEBajYCACAEIAE6AAAgCyALKAIYQQFrNgIYDAALAAsgAiEBIAgoAgAgCSgCAEcNAyAFIAUoAgBBBHI2AgBBACEADAELAkAgAkUNAEEBIQoDQCACEB8gCk0NAQJAIAAgC0GMBGoQLEUEQCAAEDhB/wFxIAIgChAiLQAARg0BCyAFIAUoAgBBBHI2AgBBACEADAMLIAAQPxogCkEBaiEKDAALAAtBASEAIA8oAgAgCygCZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACyAAC7IFAQp/IwBBEGsiCyQAIAYQSCEKIAtBBGogBhCZASIOEFggBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCiAGwBBLIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAYtAABBMEcNACAGLQABQSByQfgARw0AIApBMBBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAogBiwAARBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAZBAmoiCCEGA0AgAiAGTQ0CIAYsAAAQLhoQsANFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAABAuGhCvA0UNASAGQQFqIQYMAAsACwJAIAtBBGoQWgRAIAogCCAGIAUoAgAQbyAFIAUoAgAgBiAIa0ECdGo2AgAMAQsgCCAGEIQBIA4QWSEPIAghBwNAIAYgB00EQCADIAggAGtBAnRqIAUoAgAQxwEFAkAgC0EEaiIMIA0QIiwAAEEATA0AIAkgDCANECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSAPNgIAIA0gDSAMEB9BAWtJaiENQQAhCQsgCiAHLAAAEEshDCAFIAUoAgAiEEEEajYCACAQIAw2AgAgB0EBaiEHIAlBAWohCQwBCwsLAkACQANAIAIgBk0NASAGQQFqIQcgBiwAACIGQS5HBEAgCiAGEEshBiAFIAUoAgAiCEEEajYCACAIIAY2AgAgByEGDAELCyAOEHghBiAFIAUoAgAiCEEEaiIJNgIAIAggBjYCAAwBCyAFKAIAIQkgBiEHCyAKIAcgAiAJEG8gBSAFKAIAIAIgB2tBAnRqIgU2AgAgBCAFIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALDwAgAARAIAAQOgsgABAtC90DAQh/IwBBEGsiCyQAIAYQSCEKIAtBBGoiByAGEJkBIgYQWAJAIAcQWgRAIAogACACIAMQbyAFIAMgAiAAa0ECdGoiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEshByAFIAUoAgAiCEEEajYCACAIIAc2AgAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAKIAcsAAEQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtBAnRqIAUoAgAQxwEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSANNgIAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEshDCAFIAUoAgAiDkEEajYCACAOIAw2AgAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALRwIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgACABIAIgBRDAASAFQSBqJAALOwIBfwF+IwBBEGsiBCQAIAMpAwAhBSAEIAMpAwg3AwggBCAFNwMAIABBHiABIAIgBBCWASAEQRBqJAALSQIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBIGokAAuiBQEKfyMAQRBrIgokACAGEEkhCSAKQQRqIAYQmwEiDhBYIAUgAzYCAAJAAkAgACIILQAAIgZBK2sOAwABAAELIAkgBsAQQSEGIAUgBSgCACIHQQFqNgIAIAcgBjoAACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACAJQTAQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAJIAYsAAEQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAGQQJqIgghBgNAIAIgBk0NAiAGLAAAEC4aELADRQ0CIAZBAWohBgwACwALA0AgAiAGTQ0BIAYsAAAQLhoQrwNFDQEgBkEBaiEGDAALAAsCQCAKQQRqEFoEQCAJIAggBiAFKAIAEHkgBSAFKAIAIAYgCGtqNgIADAELIAggBhCEASAOEFkhDyAIIQcDQCAGIAdNBEAgAyAIIABraiAFKAIAEIQBBQJAIApBBGoiDCANECIsAABBAEwNACALIAwgDRAiLAAARw0AIAUgBSgCACILQQFqNgIAIAsgDzoAACANIA0gDBAfQQFrSWohDUEAIQsLIAkgBywAABBBIQwgBSAFKAIAIhBBAWo2AgAgECAMOgAAIAdBAWohByALQQFqIQsMAQsLCwNAAkACQCACIAZNBEAgBiEHDAELIAZBAWohByAGLAAAIgZBLkcNASAOEHghBiAFIAUoAgAiCEEBajYCACAIIAY6AAALIAkgByACIAUoAgAQeSAFIAUoAgAgAiAHa2oiBTYCACAEIAUgAyABIABraiABIAJGGzYCACAKQQRqECAaIApBEGokAA8LIAkgBhBBIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAAIAchBgwACwALKQEBfyMAQRBrIgQkACAEIAMrAwA5AwAgACABIAIgBBDAASAEQRBqJAALNwEBfyMAQRBrIgUkACADKAIAIQMgBSAEKwMAOQMIIAUgAzYCACAAIAEgAiAFEMABIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAysDADkDACAAQR4gASACIAQQlgEgBEEQaiQACzkBAX8jAEEQayIFJAAgAygCACEDIAUgBCsDADkDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAykDADcDACAAQRggASACIAQQlgEgBEEQaiQAC9QDAQh/IwBBEGsiCyQAIAYQSSEKIAtBBGoiByAGEJsBIgYQWAJAIAcQWgRAIAogACACIAMQeSAFIAMgAiAAa2oiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEEhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAKIAcsAAEQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtqIAUoAgAQhAEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBAWo2AgAgCSANOgAAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEEhDCAFIAUoAgAiDkEBajYCACAOIAw6AAAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa2ogASACRhs2AgAgC0EEahAgGiALQRBqJAALQwEBfyMAQRBrIgMkACADIAI2AgxBoCAgAUH02QFBuyxBGCADQQxqIgEQVEH02QFBvyxBGSABEFQQBCADQRBqJAAgAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAtbAQF/IwBBEGsiAyQAIAMgAigCADYCACMAQRBrIgIkACACIAE2AgwgAiADNgIIIAJBBGogAkEMahBjIABB1w0gAigCCBCkAyEAEGIgAkEQaiQAIANBEGokACAAC9kCAgR+Bn8jAEEgayIIJAACQAJAAkAgASACRwRAQYjqASgCACENQYjqAUEANgIAIwBBEGsiCSQAEC4aIwBBEGsiCiQAIwBBEGsiCyQAIwBBEGsiDCQAIAwgASAIQRxqQQIQgAIgDCkDACEEIAsgDCkDCDcDCCALIAQ3AwAgDEEQaiQAIAspAwAhBCAKIAspAwg3AwggCiAENwMAIAtBEGokACAKKQMAIQQgCSAKKQMINwMIIAkgBDcDACAKQRBqJAAgCSkDACEEIAggCSkDCDcDECAIIAQ3AwggCUEQaiQAIAgpAxAhBCAIKQMIIQVBiOoBKAIAIgFFDQEgCCgCHCACRw0CIAUhBiAEIQcgAUHEAEcNAwwCCyADQQQ2AgAMAgtBiOoBIA02AgAgCCgCHCACRg0BCyADQQQ2AgAgBiEFIAchBAsgACAFNwMAIAAgBDcDCCAIQSBqJAALwAECA38BfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBARCAAiAEKQMAIAQpAwgQlQIhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtEAAAAAAAAAAAhBgsgAkEENgIACyADQRBqJAAgBgubCgEEfyMAQRBrIgIkAEGACEEEQZAgQd4gQQRBAkEAQQAQC0HtC0ECQeQgQZghQQVBA0EAQQAQCyMAQSBrIgEkAEGY4AEtAABFBEBBmOABQQE6AABBnCFBvNoBEAcLQewgQYwlQcQlQQBB+iVBBkH9JUEAQf0lQQBB1xtB/yVBBxAJQewgQQFBhCZBiCZBIkEIEAYgAUEANgIcIAFBCTYCGCABIAEpAhg3AxAjAEEQayIAJAAgACABKQIQNwIIQewgQYoPQQNBjCZBmCZBIyAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQQo2AhggASABKQIYNwMIIwBBEGsiACQAIAAgASkCCDcCCEHsIEHKEEEEQaAmQbAmQSQgAEEIahCNAUEAQQBBABABIABBEGokACABQQA2AhwgAUELNgIYIAEgASkCGDcDACMAQRBrIgAkACAAIAEpAgA3AghB7CBB4BBBAkG4JkHAJkElIABBCGoQjQFBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEEMNgIMQewgQZoKQQNB6CZB9CZBJiAAQQxqEFRBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEENNgIMQewgQZYKQQRBgCdBkCdBJyAAQQxqEFRBAEEAQQAQASAAQRBqJAAgAUEgaiQAIwBBIGsiASQAQaTgAS0AAEUEQEGk4AFBAToAAEGYJ0HE2QEQBwtBpCpB0CpBiCtBAEG+K0EOQf0lQQBB/SVBAEG0FUHBK0EPEAlBpCpBAUHEK0HIK0EoQRAQBiABQQA2AhwgAUERNgIYIAEgASkCGDcDECMAQRBrIgAkACAAIAEpAhA3AghBpCpBig9BA0HMK0HYK0EpIABBCGoQjQFBAEEAQQAQASAAQRBqJAAgAUEANgIcIAFBEjYCGCABIAEpAhg3AwgjAEEQayIAJAAgACABKQIINwIIQaQqQcoQQQRB4CtB8CtBKiAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQRM2AhggASABKQIYNwMAIwBBEGsiACQAIAAgASkCADcCCEGkKkHgEEECQfgrQYAsQSsgAEEIahCNAUEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRQ2AgxBpCpBmgpBA0GMLEGYLEEsIABBDGoQVEEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRU2AgxBpCpBlgpBBEGgLEGwLEEtIABBDGoQVEEAQQBBABABIABBEGokACABQSBqJABBoCBBhhJBtixBFkG4LEEXEAggAkEPakHGCkEAEIsDQZMRQQQQiwMjAEEQayIBJAAgAUEINgIMQaAgQZ8TQazZAUHELEEaIAFBDGoiAxBUQazZAUHILEEbIAMQVBAEIAFBEGokAEHlCkEMEJcBQboLQRgQlwFB7wpBJBCXAUHBC0EwEJcBQdAKQTwQlwFBtg9ByAAQlwEaQaAgEBBB2CxB/w1BBEEBEBFB2CxBgBZBABADQdgsQZoWQQEQA0HYLEGWFkECEANB2CxBkhZBAxADQdgsQY4WQQQQA0HYLEH8FUEFEANB2CxB+BVBBhADQdgsQfAVQQcQA0HYLEHsFUEIEANBwCBB1wpB+SxBHkH7LEEfEAgjAEEQayIBJAAgAUEANgIMQcAgQe4NQdgsQf4sQSAgAUEMaiIAEFRB2CxBgi1BISAAEFQQBCABQRBqJABBwCAQECACQRBqJAALvAECA38BfSMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBABCAAiAEKQMAIAQpAwgQpgMhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtDAAAAACEGCyACQQQ2AgALIANBEGokACAGC8MBAgN/AX4jAEEQayIEJAACfgJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBAwFC0GI6gEgBjYCACAEKAIMIAFGDQQLCwsgAkEENgIAQgAMAgsgAkEENgIAQn8MAQtCACAHfSAHIAVBLUYbCyAEQRBqJAAL1AECA38BfiMAQRBrIgQkAAJ/AkACQAJAIAAgAUcEQAJAAkAgAC0AACIFQS1HDQAgAEEBaiIAIAFHDQAMAQtBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAEQQxqIAMQggIhBwJAQYjqASgCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAtBiOoBIAY2AgAgBCgCDCABRg0DCwsLIAJBBDYCAEEADAMLIAdC/////w9YDQELIAJBBDYCAEF/DAELQQAgB6ciAGsgACAFQS1GGwsgBEEQaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAvZAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBQwEC0GI6gEgBjYCACAEKAIMIAFGDQMLCwsgAkEENgIAQQAMAwsgB0L//wNYDQELIAJBBDYCAEH//wMMAQtBACAHpyIAayAAIAVBLUYbCyAEQRBqJABB//8DcQu3AQIBfgJ/IwBBEGsiBSQAAkACQCAAIAFHBEBBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAFQQxqIAMQmgMhBAJAQYjqASgCACIABEAgBSgCDCABRw0BIABBxABGDQMMBAtBiOoBIAY2AgAgBSgCDCABRg0DCwsgAkEENgIAQgAhBAwBCyACQQQ2AgAgBEIAVQRAQv///////////wAhBAwBC0KAgICAgICAgIB/IQQLIAVBEGokACAEC8ABAgJ/AX4jAEEQayIEJAACfwJAAkAgACABRwRAQYjqASgCACEFQYjqAUEANgIAEC4aIAAgBEEMaiADEJoDIQYCQEGI6gEoAgAiAARAIAQoAgwgAUcNASAAQcQARg0EDAMLQYjqASAFNgIAIAQoAgwgAUYNAgsLIAJBBDYCAEEADAILIAZCgICAgHhTIAZC/////wdVcg0AIAanDAELIAJBBDYCAEH/////ByAGQgBVDQAaQYCAgIB4CyAEQRBqJAALMwEBfyABIAAoAgQiAWohAgNAIAEgAkYEQCAAIAI2AgQFIAFBADoAACABQQFqIQEMAQsLC5EBAQN/AkAgASACEPUBIQQjAEEQayIDJAAgBEH3////A00EQAJAIAQQvQEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJABQQFqEI8BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQ5wIgA0EANgIEIANBBGoQViADQRBqJAAMAQsQWwALCxYAIAAgASACQoCAgICAgICAgH8QhAILhwgBBX8gASgCACEEAkACQAJAAkACQAJAAkACfwJAAkACQAJAIANFDQAgAygCACIFRQ0AIABFBEAgAiEDDAMLIANBADYCACACIQMMAQsCQEHc4QEoAgAoAgBFBEAgAEUNASACRQ0MIAIhBQNAIAQsAAAiAwRAIAAgA0H/vwNxNgIAIABBBGohACAEQQFqIQQgBUEBayIFDQEMDgsLIABBADYCACABQQA2AgAgAiAFaw8LIAIhAyAARQ0DDAULIAQQqAEPC0EBIQYMAwtBAAwBC0EBCyEGA0AgBkUEQCAELQAAQQN2IgZBEGsgBUEadSAGanJBB0sNAwJ/IARBAWoiBiAFQYCAgBBxRQ0AGiAGLAAAQUBOBEAgBEEBayEEDAcLIARBAmoiBiAFQYCAIHFFDQAaIAYsAABBQE4EQCAEQQFrIQQMBwsgBEEDagshBCADQQFrIQNBASEGDAELA0ACQCAEQQNxIAQsAAAiBUEATHINACAEKAIAIgVBgYKECGsgBXJBgIGChHhxDQADQCADQQRrIQMgBCgCBCEFIARBBGohBCAFIAVBgYKECGtyQYCBgoR4cUUNAAsLIAXAQQBKBEAgA0EBayEDIARBAWohBAwBCwsgBUH/AXFBwgFrIgZBMksNAyAEQQFqIQQgBkECdCgCkIEBIQVBACEGDAALAAsDQCAGRQRAIANFDQcDQAJAIAQtAAAiBsAiBUEATA0AIARBA3EgA0EFSXJFBEACQANAIAQoAgAiBUGBgoQIayAFckGAgYKEeHENASAAIAVB/wFxNgIAIAAgBC0AATYCBCAAIAQtAAI2AgggACAELQADNgIMIABBEGohACAEQQRqIQQgA0EEayIDQQRLDQALIAQtAAAhBQsgBUH/AXEhBiAFwEEATA0BCyAAIAY2AgAgAEEEaiEAIARBAWohBCADQQFrIgMNAQwJCwsgBkHCAWsiBkEySw0DIARBAWohBCAGQQJ0KAKQgQEhBUEBIQYMAQsgBC0AACIGQQN2IgdBEGsgByAFQRp1anJBB0sNAQJAAkACfyAEQQFqIgcgBkGAAWsgBUEGdHIiBkEATg0AGiAHLQAAQYABayIHQT9LDQEgByAGQQZ0IghyIQYgBEECaiIHIAhBAE4NABogBy0AAEGAAWsiB0E/Sw0BIAcgBkEGdHIhBiAEQQNqCyEEIAAgBjYCACADQQFrIQMgAEEEaiEADAELQYjqAUEZNgIAIARBAWshBAwFC0EAIQYMAAsACyAEQQFrIQQgBQ0BIAQtAAAhBQsgBUH/AXENACAABEAgAEEANgIAIAFBADYCAAsgAiADaw8LQYjqAUEZNgIAIABFDQELIAEgBDYCAAtBfw8LIAEgBDYCACACCzEBAX9B3OEBKAIAIQEgAARAQdzhAUHk4AEgACAAQX9GGzYCAAtBfyABIAFB5OABRhsLOAAgAEHQD2sgACAAQZPx//8HShsiAEEDcQRAQQAPCyAAQewOaiIAQeQAbwRAQQEPCyAAQZADb0ULlxMCD38EfiMAQYABayIIJAAgAQRAAn8DQAJAAn8CQAJAAkAgAi0AACIGQSVHBEAgBg0BIAoMBwtBACEFQQEhCQJAIAItAAEiB0Etaw4EAgMDAgALIAdB3wBGDQEgBw0CCyAAIApqIAY6AAAgCkEBagwCCyAHIQUgAi0AAiEHQQIhCQtBACEOAkACfyACIAlqIAciEkErRmoiCSwAAEEwa0EJTQRAIAkgCEEMakEKQv////8PEIQCpyECIAgoAgwMAQsgCCAJNgIMQQAhAiAJCyIHLQAAIgZBwwBrIgtBFktBASALdEGZgIACcUVyDQAgAiIODQAgByAJRyEOCyAGQc8ARiAGQcUARnIEfyAHLQABIQYgB0EBagUgBwshAiAIQRBqIQcgBSEJQQAhBSMAQdAAayILJABB5QghDUEwIRBBqIAIIQwCQCAIAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAbAIgZBJWsOViEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0BAwQnLQcICQotLS0NLS0tLRASFBYYFxweIC0tLS0tLQACJgYFLQgCLQstLQwOLQ8tJRETFS0ZGx0fLQsgAygCGCIFQQZNDSIMKgsgAygCGCIFQQZLDSkgBUGHgAhqDCILIAMoAhAiBUELSw0oIAVBjoAIagwhCyADKAIQIgVBC0sNJyAFQZqACGoMIAsgAzQCFELsDnxC5AB/IRQMIwtB3wAhEAsgAzQCDCEUDCELQa8TIQ0MHwsgAzQCFCIVQuwOfCEUAkAgAygCHCIFQQJMBEAgFCAVQusOfCADEIMCQQFGGyEUDAELIAVB6QJJDQAgFULtDnwgFCADEIMCQQFGGyEUCyAGQecARg0ZDCALIAM0AgghFAweC0ECIQUgAygCCCIGRQRAQgwhFAwgCyAGrCIUQgx9IBQgBkEMShshFAwfCyADKAIcQQFqrCEUQQMhBQweCyADKAIQQQFqrCEUDBsLIAM0AgQhFAwaCyAIQQE2AnxBwx8hBQweC0GngAhBpoAIIAMoAghBC0obDBQLQdQVIQ0MFgtBACEMQQAhESMAQRBrIg8kACADNAIUIRQCfiADKAIQIg1BDE8EQCANIA1BDG0iBkEMbGsiBUEMaiAFIAVBAEgbIQ0gBiAFQR91aqwgFHwhFAsgD0EMaiEGIBRCAn1CiAFYBEAgFKciDEHEAGtBAnUhBQJAIAYCfyAMQQNxRQRAIAVBAWshBSAGRQ0CQQEMAQsgBkUNAUEACzYCAAsgDEGA54QPbCAFQYCjBWxqQYDWr+MHaqwMAQsgFELkAH0iFCAUQpADfyIWQpADfn0iFUI/h6cgFqdqIRMCQAJAAkAgFaciBUGQA2ogBSAVQgBTGyIFBH8CfyAFQcgBTgRAIAVBrAJPBEBBAyEMIAVBrAJrDAILQQIhDCAFQcgBawwBCyAFQeQAayAFIAVB4wBKIgwbCyIFDQFBAAVBAQshBSAGDQEMAgsgBUECdiERIAVBA3FFIQUgBkUNAQsgBiAFNgIACyAUQoDnhA9+IBEgDEEYbCATQeEAbGpqIAVrrEKAowV+fEKAqrrDA3wLIRQgDUECdEGwnAFqKAIAIgVBgKMFaiAFIA8oAgwbIAUgDUEBShshBSADKAIMIQYgAzQCCCEVIAM0AgQhFiADNAIAIA9BEGokACAUIAWsfCAGQQFrrEKAowV+fCAVQpAcfnwgFkI8fnx8IAM0AiR9DAgLIAM0AgAhFAwVCyAIQQE2AnxBxR8hBQwZC0HBFSENDBILIAMoAhgiBUEHIAUbrAwECyADKAIcIAMoAhhrQQdqQQdurSEUDBELIAMoAhwgAygCGEEGakEHcGtBB2pBB26tIRQMEAsgAxCDAq0hFAwPCyADNAIYCyEUQQEhBQwPC0GpgAghDAwKC0GqgAghDAwJCyADNAIUQuwOfELkAIEiFCAUQj+HIhSFIBR9IRQMCgsgAzQCFCIVQuwOfCEUIBVCpD9TDQogCyAUNwMwIAggB0H4EiALQTBqEIYBNgJ8IAchBQwOCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDgsgCyADKAIkIgVBkBxtIgZB5ABsIAUgBkGQHGxrwUE8bcFqNgJAIAggB0H+EiALQUBrEIYBNgJ8IAchBQwNCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDQsgAygCKEG07wEtAABBAXFFBEBBiO8BQYzvAUHA7wFB4O8BEBJBlO8BQeDvATYCAEGQ7wFBwO8BNgIAQbTvAUEBOgAACwwLCyAIQQE2AnxBux4hBQwLCyAUQuQAgSEUDAULIAVBgIAIcgsgBBCfAwwHC0GrgAghDAsgDCAEEJ8DIQ0LIAggB0HkACANIAMgBBCeAyIFNgJ8IAdBACAFGyEFDAULQQIhBQwBC0EEIQULAkAgCSAQIAkbIgZB3wBHBEAgBkEtRw0BIAsgFDcDECAIIAdB+RIgC0EQahCGATYCfCAHIQUMBAsgCyAUNwMoIAsgBTYCICAIIAdB8hIgC0EgahCGATYCfCAHIQUMAwsgCyAUNwMIIAsgBTYCACAIIAdB6xIgCxCGATYCfCAHIQUMAgtB7RsLIgUQqAE2AnwLIAtB0ABqJAAgBUUNAQJAIA5FBEAgCCgCfCEJDAELAn8CQAJAIAUtAAAiBkEraw4DAQABAAsgCCgCfAwBCyAFLQABIQYgBUEBaiEFIAgoAnxBAWsLIQkCQCAGQf8BcUEwRw0AA0AgBSwAASIHQTBrQQlLDQEgBUEBaiEFIAlBAWshCSAHQTBGDQALCyAIIAk2AnxBACEGA0AgBiIHQQFqIQYgBSAHaiwAAEEwa0EKSQ0ACyAOIAkgCSAOSRshBgJAIAAgCmogAygCFEGUcUgEf0EtBSASQStHDQEgBiAJayAHakEDQQUgCCgCDC0AAEHDAEYbSQ0BQSsLOgAAIAZBAWshBiAKQQFqIQoLIAYgCU0gASAKTXINAANAIAAgCmpBMDoAACAKQQFqIQogBkEBayIGIAlNDQEgASAKSw0ACwsgCCAJIAEgCmsiByAHIAlLGyIHNgJ8IAAgCmogBSAHEHEaIAgoAnwgCmoLIQogAkEBaiECIAEgCksNAQsLIAFBAWsgCiABIApGGyEKQQALIQYgACAKakEAOgAACyAIQYABaiQAIAYLugEBAn8gAEEORgRAQdEbQeEVIAEoAgAbDwsgAEH//wNxIgJB//8DRyAAQRB1IgNBBUpyRQRAIAEgA0ECdGooAgAiAEEIakGMFiAAGw8LQcYfIQACQAJ/AkACQAJAIANBAWsOBQABBAQCBAsgAkEBSw0DQeCcAQwCCyACQTFLDQJB8JwBDAELIAJBA0sNAUGwnwELIQAgAkUEQCAADwsDQCAALQAAIABBAWohAA0AIAJBAWsiAg0ACwsgAAsOACAAEKEDBEAgABAtCwsnACAAQQBHIABBmIMBR3EgAEGwgwFHcSAAQYzuAUdxIABBpO4BR3EL5AIBA38CQCABLQAADQBB2hUQhgIiAQRAIAEtAAANAQsgAEEMbEHQgwFqEIYCIgEEQCABLQAADQELQecVEIYCIgEEQCABLQAADQELQc8bIQELAkADQCABIAJqLQAAIgRFIARBL0ZyRQRAQRchBCACQQFqIgJBF0cNAQwCCwsgAiEEC0HPGyEDAkACQAJAAkACQCABLQAAIgJBLkYNACABIARqLQAADQAgASEDIAJBwwBHDQELIAMtAAFFDQELIANBzxsQ0AFFDQAgA0GuFRDQAQ0BCyAARQRAQfSCASECIAMtAAFBLkYNAgtBAA8LQYjuASgCACICBEADQCADIAJBCGoQ0AFFDQIgAigCICICDQALC0EkEDQiAgRAIAJB9IIBKQIANwIAIAJBCGoiASADIAQQcRogASAEakEAOgAAIAJBiO4BKAIANgIgQYjuASACNgIACyACQfSCASAAIAJyGyECCyACCyUBAX8jAEEQayICJAAgAiABNgIMIABBxhAgARCkAyACQRBqJAALwR4CD38FfiMAQZABayIDJAAgA0EAQZAB/AsAIANBfzYCTCADIAA2AiwgA0HhADYCICADIAA2AlQgASEEIAIhDyMAQbACayIFJAAgAygCTBoCQAJAIAMoAgRFBEAgAxDJAxogAygCBEUNAQsgBC0AACIBRQ0BAkACQANAAkACQCABQf8BcSIAEH0EQANAIAQiAUEBaiEEIAEtAAEQfQ0ACyADQgAQZANAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCxB9DQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFHx8IRQMAQsCfwJAAkAgAEElRgRAIAQtAAEiAEEqRg0BIABBJUcNAgsgA0IAEGQCQCAELQAAQSVGBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiARB9DQALIARBAWohBAwBCyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEBDAELIAMQJiEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgAUEATiANcg0KDAkLIAMoAgQgAygCLGusIAMpA3ggFHx8IRQgBCEBDAMLQQAhByAEQQJqDAELAkAgAEEwayIAQQlLDQAgBC0AAkEkRw0AIwBBEGsiASAPNgIMIAEgDyAAQQJ0akEEayAPIABBAUsbIgBBBGo2AgggACgCACEHIARBA2oMAQsgDygCACEHIA9BBGohDyAEQQFqCyEBQQAhC0EAIQIgAS0AACIEQTBrQf8BcUEJTQRAA0AgAkEKbCAEQf8BcWpBMGshAiABLQABIQQgAUEBaiEBIARBMGtB/wFxQQpJDQALCyAEQf8BcUHtAEcEfyABBUEAIQkgB0EARyELIAEtAAEhBEEAIQogAUEBagsiBkEBaiEBQQMhAAJAAkACQAJAAkACQCAEQf8BcUHBAGsOOgQJBAkEBAQJCQkJAwkJCQkJCQQJCQkJBAkJBAkJCQkJBAkEBAQEBAAEBQkBCQQEBAkJBAIECQkECQIJCyAGQQJqIAEgBi0AAUHoAEYiABshAUF+QX8gABshAAwECyAGQQJqIAEgBi0AAUHsAEYiABshAUEDQQEgABshAAwDC0EBIQAMAgtBAiEADAELQQAhACAGIQELQQEgACABLQAAIgBBL3FBA0YiBBshEAJAIABBIHIgACAEGyIMQdsARg0AAkAgDEHuAEcEQCAMQeMARw0BQQEgAiACQQFMGyECDAILIAcgECAUEKUDDAILIANCABBkA0ACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLEH0NAAsgAygCBCEEIAMpA3BCAFkEQCADIARBAWsiBDYCBAsgBCADKAIsa6wgAykDeCAUfHwhFAsgAyACrCISEGQCQCADKAIEIgAgAygCaEcEQCADIABBAWo2AgQMAQsgAxAmQQBIDQQLIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLQRAhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAMQdgAaw4hBgsLAgsLCwsLAQsCBAEBAQsFCwsLCwsDBgsLAgsECwsGAAsgDEHBAGsiAEEGS0EBIAB0QfEAcUVyDQoLIAVBCGogAyAQQQAQqAMgAykDeEIAIAMoAgQgAygCLGusfVENDiAHRQ0JIAUpAxAhEiAFKQMIIRMgEA4DBQYHCQsgDEEQckHzAEYEQCAFQSBqQX9BgQIQmAIgBUEAOgAgIAxB8wBHDQggBUEAOgBBIAVBADoALiAFQQA2ASoMCAsgBUEgaiABLQABIgBB3gBGIgRBgQIQmAIgBUEAOgAgIAFBAmogAUEBaiAEGyEGAn8CQAJAIAFBAkEBIAQbai0AACIBQS1HBEAgAUHdAEYNASAAQd4ARyEIIAYMAwsgBSAAQd4ARyIIOgBODAELIAUgAEHeAEciCDoAfgsgBkEBagshAQNAAkAgAS0AACIAQS1HBEAgAEUNDyAAQd0ARg0KDAELQS0hACABLQABIgZFIAZB3QBGcg0AIAFBAWohDgJAIAYgAUEBay0AACIETQRAIAYhAAwBCwNAIARBAWoiBCAFQSBqaiAIOgAAIAQgDi0AACIASQ0ACwsgDiEBCyAAIAVBIGpqIAg6AAEgAUEBaiEBDAALAAtBCCEEDAILQQohBAwBC0EAIQQLQgAhEkEAIQJBACEGQQAhDiMAQRBrIggkAAJAIARBAUcgBEEkTXFFBEBBiOoBQRw2AgAMAQsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiABB9DQALAkACQCAAQStrDgMAAQABC0F/QQAgAEEtRhshDiADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEADAELIAMQJiEACwJAAkACQAJAIARBAEcgBEEQR3EgAEEwR3JFBEACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBX3FB2ABGBEBBECEEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAABBEEkNAyADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZAwGCyAEDQFBCCEEDAILIARBCiAEGyIEIABBgf8Aai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZEGI6gFBHDYCAAwECyAEQQpHDQAgAEEwayICQQlNBEBBACEAA0AgAEEKbCACaiIAQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQJgtBMGsiAkEJTXENAAsgAK0hEgsgAkEJSw0CIBJCCn4hEyACrSEVA0ACQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEEwayICQQlNIBMgFXwiEkKas+bMmbPmzBlUcUUEQCACQQlNDQEMBQsgEkIKfiITIAKtIhVCf4VYDQELC0EKIQQMAQsgBCAEQQFrcQRAIABBgf8Aai0AACIGIARJBEADQCAGIAIgBGxqIgJBx+PxOEkCfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBgf8Aai0AACIGIARJcQ0ACyACrSESCyAEIAZNDQEgBK0hEwNAIBIgE34iFSAGrUL/AYMiFkJ/hVYNAiAVIBZ8IRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgZNDQIgCCATQgAgEkIAEEAgCCkDCFANAAsMAQsgBEEXbEEFdkEHcSwAgYEBIREgAEGB/wBqLQAAIgIgBEkEQANAIAIgBiARdCIAciEGIABBgICAwABJAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAAAiAiAESXENAAsgBq0hEgsgAiAETw0AQn8gEa0iE4giFSASVA0AA0AgAq1C/wGDIBIgE4aEIRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgJNDQEgEiAVWA0ACwsgBCAAQYH/AGotAABNDQADQCAEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmC0GB/wBqLQAASw0AC0GI6gFBxAA2AgBBACEOQn8hEgsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgDkEBckUgEkJ/UXEEQEGI6gFBxAA2AgBCfiESDAELIBIgDqwiE4UgE30hEgsgCEEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQkgB0UgDEHwAEdyRQRAIAcgEj4CAAwFCyAHIBAgEhClAwwECyAHIBMgEhCmAzgCAAwDCyAHIBMgEhCVAjkDAAwCCyAHIBM3AwAgByASNwMIDAELQR8gAkEBaiAMQeMARyIGGyEIAn8gEEEBRgRAIAchAiALBEAgCEECdBA0IgJFDQULIAVCADcCqAJBACEEAkACQANAIAIhAANAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxAmCyICIAVqLQAhRQ0CIAUgAjoAGyAFQRxqIAVBG2pBASAFQagCahDSASICQX5GDQAgAkF/RgRAQQAhCQwECyAABEAgACAEQQJ0aiAFKAIcNgIAIARBAWohBAsgC0UgBCAIR3INAAsgACAIQQF0QQFyIghBAnQQ3AEiAg0AC0EAIQkgACEKQQEhCwwIC0EAIQkgACAFQagCagR/IAUoAqgCBUEAC0UNAhoLIAAhCgwGCyALBEBBACEEIAgQNCICRQ0EA0AgAiEAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADECYLIgIgBWotACFFBEAgACEJQQAMBAsgACAEaiACOgAAIARBAWoiBCAIRw0ACyAAIAhBAXRBAXIiCBDcASICDQALQQAhCiAAIQlBASELDAYLQQAhBCAHBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiACAFai0AIQRAIAQgB2ogADoAACAEQQFqIQQMAQUgByIAIQlBAAwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsgBWotACENAAtBACEAQQAhCUEACyEKIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhNQIAYgEiATUXJFcg0FIAsEQCAHIAA2AgALIAxB4wBGDQAgCgRAIAogBEECdGpBADYCAAsgCUUEQEEAIQkMAQsgBCAJakEAOgAACyADKAIEIAMoAixrrCADKQN4IBR8fCEUIA0gB0EAR2ohDQsgAUEBaiEEIAEtAAEiAQ0BDAULC0EBIQtBACEJQQAhCgsgDUF/IA0bIQ0LIAtFDQEgCRAtIAoQLQwBC0F/IQ0LIAVBsAJqJAAgA0GQAWokACANC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsL2QMCBX8CfiMAQSBrIgQkACABQv///////z+DIQcCQCABQjCIQv//AYMiCKciA0GB/wBrQf0BTQRAIAdCGYinIQICQCAAUCABQv///w+DIgdCgICACFQgB0KAgIAIURtFBEAgAkEBaiECDAELIAAgB0KAgIAIhYRCAFINACACQQFxIAJqIQILQQAgAiACQf///wNLIgUbIQJBgYF/QYCBfyAFGyADaiEDDAELIAAgB4RQIAhC//8BUnJFBEAgB0IZiKdBgICAAnIhAkH/ASEDDAELIANB/oABSwRAQf8BIQMMAQtBgP8AQYH/ACAIUCIFGyIGIANrIgJB8ABKBEBBACECQQAhAwwBCyAEQRBqIAAgByAHQoCAgICAgMAAhCAFGyIHQYABIAJrEEQgBCAAIAcgAhCKASAEKQMIIgBCGYinIQICQCAEKQMAIAMgBkcgBCkDECAEKQMYhEIAUnGthCIHUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAcgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIAJBgICABHMgAiACQf///wNLIgMbIQILIARBIGokACABQiCIp0GAgICAeHEgA0EXdHIgAnK+C4kEAgN/AX4CQAJAAn8CQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyICQStrDgMAAQABCyACQS1GIAFFAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABAmCyIDQTprIgFBdUtyDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAkE6ayEBIAIhA0EACyEEIAFBdkkNAAJAIANBMGtBCk8NAEEAIQIDQCADIAJBCmxqAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyEDQTBrIQIgAkHMmbPmAEggA0EwayIBQQlNcQ0ACyACrCEFIAFBCk8NAANAIAOtIAVCCn58IQUCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLIgNBMGsiAUEJTSAFQjB9IgVCro+F18fC66MBU3ENAAsgAUEKTw0AA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAV9IAUgBBshBQwBC0KAgICAgICAgIB/IQUgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQuJMgMRfwd+AXwjAEEwayIMJAACQAJAIAJBAksNACACQQJ0IgIoAux+IREgAigC4H4hEANAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICEH0NAAtBASEIAkACQCACQStrDgMAAQABC0F/QQEgAkEtRhshCCABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQJiECCwJAAkAgAkFfcUHJAEYEQANAIAZBB0YNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLACKCCAGQQFqIQYgAkEgckYNAAsLIAZBA0cEQCAGQQhGIgcNASADRSAGQQRJcg0CIAcNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRSAGQQRJcg0AIBVCAFMhAgNAIAJFBEAgASABKAIEQQFrNgIECyAGQQFrIgZBA0sNAAsLQgAhFSMAQRBrIgckACAIskMAAIB/lLwiA0H///8DcSEIAn8gA0EXdiICQf8BcSIBBEAgAUH/AUcEQCAIrUIZhiEVIAJB/wFxQYD/AGoMAgsgCK1CGYYhFUH//wEMAQtBACAIRQ0AGiAHIAitQgAgCGciAUHRAGoQRCAHKQMIQoCAgICAgMAAhSEVIAcpAwAhFkGJ/wAgAWsLIQEgDCAWNwMAIAwgAa1CMIYgA0Efdq1CP4aEIBWENwMIIAdBEGokACAMKQMIIRUgDCkDACEWDAILAkACQAJAAkACQAJAIAYNAEEAIQYgAkFfcUHOAEcNAANAIAZBAkYNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLADnDSAGQQFqIQYgAkEgckYNAAsLIAYOBAMBAQABCwJAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmC0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRUgASkDcEIAUw0GIAEgASgCBEEBazYCBAwGCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICQTBrQQpJIAJBwQBrQRpJciACQd8ARnJFIAJB4QBrQRpPcUUEQCAGQQFqIQYMAQsLQoCAgICAgOD//wAhFSACQSlGDQUgASkDcCIWQgBZBEAgASABKAIEQQFrNgIECwJAIAMEQCAGDQEMBQtBiOoBQRw2AgBCACEWDAILA0AgFkIAWQRAIAEgASgCBEEBazYCBAsgBkEBayIGDQALDAMLIAEpA3BCAFkEQCABIAEoAgRBAWs2AgQLQYjqAUEcNgIACyABQgAQZAwCCwJAIAJBMEcNAAJ/IAEoAgQiByABKAJoRwRAIAEgB0EBajYCBCAHLQAADAELIAEQJgtBX3FB2ABGBEAjAEGwA2siBSQAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyECAkACfwNAIAJBMEcEQAJAIAJBLkcNBCABKAIEIgIgASgCaEYNACABIAJBAWo2AgQgAi0AAAwDCwUgASgCBCICIAEoAmhHBH9BASEPIAEgAkEBajYCBCACLQAABUEBIQ8gARAmCyECDAELCyABECYLIgJBMEcEQEEBIQsMAQsDQCAYQgF9IRgCfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABECYLIgJBMEYNAAtBASELQQEhDwtCgICAgICAwP8/IRYDQAJAIAIhBgJAAkAgAkEwayINQQpJDQAgAkEuRyIHIAJBIHIiBkHhAGtBBUtxDQIgBw0AIAsNAkEBIQsgFSEYDAELIAZB1wBrIA0gAkE5ShshAgJAIBVCB1cEQCACIAlBBHRqIQkMAQsgFUIcWARAIAVBMGogAhBPIAVBIGogGiAWQgBCgICAgICAwP0/EC8gBUEQaiAFKQMwIAUpAzggBSkDICIaIAUpAygiFhAvIAUgBSkDECAFKQMYIBcgGRBKIAUpAwghGSAFKQMAIRcMAQsgAkUgCnINACAFQdAAaiAaIBZCAEKAgICAgICA/z8QLyAFQUBrIAUpA1AgBSkDWCAXIBkQSkEBIQogBSkDSCEZIAUpA0AhFwsgFUIBfCEVQQEhDwsgASgCBCICIAEoAmhHBH8gASACQQFqNgIEIAItAAAFIAEQJgshAgwBCwsCfiAPRQRAAkACQCABKQNwQgBZBEAgASABKAIEIgJBAWs2AgQgA0UNASABIAJBAms2AgQgC0UNAiABIAJBA2s2AgQMAgsgAw0BCyABQgAQZAsgBUHgAGpEAAAAAAAAAAAgCLemEGwgBSkDYCEXIAUpA2gMAQsgFUIHVwRAIBUhFgNAIAlBBHQhCSAWQgF8IhZCCFINAAsLAkACQAJAIAJBX3FB0ABGBEAgASADEKcDIhZCgICAgICAgICAf1INAyADBEAgASkDcEIAWQ0CDAMLQgAhFyABQgAQZEIADAQLQgAhFiABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEWCyAJRQRAIAVB8ABqRAAAAAAAAAAAIAi3phBsIAUpA3AhFyAFKQN4DAELIBggFSALG0IChiAWfEIgfSIVQQAgEWutVQRAQYjqAUHEADYCACAFQaABaiAIEE8gBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEC8gBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AEC8gBSkDgAEhFyAFKQOIAQwBCyARQeIBa6wgFVcEQCAJQQBOBEADQCAFQaADaiAXIBlCAEKAgICAgIDA/79/EEogFyAZQoCAgICAgID/PxCtAyEBIAVBkANqIBcgGSAFKQOgAyAXIAFBAE4iAhsgBSkDqAMgGSACGxBKIAIgCUEBdCIBciEJIBVCAX0hFSAFKQOYAyEZIAUpA5ADIRcgAUEATg0ACwsCfiAVQSAgEWutfCIWpyIBQQAgAUEAShsgECAWIBCtUxsiAUHxAE8EQCAFQYADaiAIEE8gBSkDiAMhFiAFKQOAAyEaQgAMAQsgBUHgAmpBkAEgAWsQmQIQbCAFQdACaiAIEE8gBSkD0AIhGiAFQfACaiAFKQPgAiAFKQPoAiAFKQPYAiIWEKwDIAUpA/gCIRsgBSkD8AILIRggBUHAAmogCSAJQQFxRSAXIBlCAEIAEIcBQQBHIAFBIElxcSIBchCcASAFQbACaiAaIBYgBSkDwAIgBSkDyAIQLyAFQZACaiAFKQOwAiAFKQO4AiAYIBsQSiAFQaACaiAaIBZCACAXIAEbQgAgGSABGxAvIAVBgAJqIAUpA6ACIAUpA6gCIAUpA5ACIAUpA5gCEEogBUHwAWogBSkDgAIgBSkDiAIgGCAbEIgCIAUpA/ABIhggBSkD+AEiFkIAQgAQhwFFBEBBiOoBQcQANgIACyAFQeABaiAYIBYgFacQqwMgBSkD4AEhFyAFKQPoAQwBC0GI6gFBxAA2AgAgBUHQAWogCBBPIAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQLyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAEC8gBSkDsAEhFyAFKQO4AQshFSAMIBc3AxAgDCAVNwMYIAVBsANqJAAgDCkDGCEVIAwpAxAhFgwECyABKQNwQgBTDQAgASABKAIEQQFrNgIECyABIQYgAiEHIAghDSADIQhBACEDIwBBkMYAayIEJABBACARayIPIBBrIRQCQAJ/A0ACQCAHQTBHBEAgB0EuRw0EIAYoAgQiASAGKAJoRg0BIAYgAUEBajYCBCABLQAADAMLIAYoAgQiASAGKAJoRwRAIAYgAUEBajYCBCABLQAAIQcFIAYQJiEHC0EBIQMMAQsLIAYQJgsiB0EwRgRAA0AgFUIBfSEVAn8gBigCBCIBIAYoAmhHBEAgBiABQQFqNgIEIAEtAAAMAQsgBhAmCyIHQTBGDQALQQEhAwtBASELCyAEQQA2ApAGAn4CQAJAAkACQCAHQS5GIgEgB0EwayICQQlNcgRAA0ACQCABQQFxBEAgC0UEQCAWIRVBASELDAILIANFIQEMBAsgFkIBfCEWIAlB/A9MBEAgDiAWpyAHQTBGGyEOIARBkAZqIAlBAnRqIgEgCgR/IAcgASgCAEEKbGpBMGsFIAILNgIAQQEhA0EAIApBAWoiASABQQlGIgEbIQogASAJaiEJDAELIAdBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhDgsCfyAGKAIEIgEgBigCaEcEQCAGIAFBAWo2AgQgAS0AAAwBCyAGECYLIgdBLkYiASAHQTBrIgJBCklyDQALCyAVIBYgCxshFSADRSAHQV9xQcUAR3JFBEACQCAGIAgQpwMiF0KAgICAgICAgIB/Ug0AIAhFDQRCACEXIAYpA3BCAFMNACAGIAYoAgRBAWs2AgQLIBUgF3whFQwECyADRSEBIAdBAEgNAQsgBikDcEIAUw0AIAYgBigCBEEBazYCBAsgAUUNAUGI6gFBHDYCAAsgBkIAEGRCACEVQgAMAQsgBCgCkAYiAUUEQCAERAAAAAAAAAAAIA23phBsIAQpAwghFSAEKQMADAELIBUgFlIgFkIJVXIgEEEeTUEAIAEgEHYbckUEQCAEQTBqIA0QTyAEQSBqIAEQnAEgBEEQaiAEKQMwIAQpAzggBCkDICAEKQMoEC8gBCkDGCEVIAQpAxAMAQsgD0EBdq0gFVMEQEGI6gFBxAA2AgAgBEHgAGogDRBPIARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQLyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQLyAEKQNIIRUgBCkDQAwBCyARQeIBa6wgFVUEQEGI6gFBxAA2AgAgBEGQAWogDRBPIARBgAFqIAQpA5ABIAQpA5gBQgBCgICAgICAwAAQLyAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAEC8gBCkDeCEVIAQpA3AMAQsgCgRAIApBCEwEQCAEQZAGaiAJQQJ0aiIBKAIAIQYDQCAGQQpsIQYgCkEBaiIKQQlHDQALIAEgBjYCAAsgCUEBaiEJCwJAIA5BCU4gFUIRVXIgFaciCiAOSHINACAVQglRBEAgBEHAAWogDRBPIARBsAFqIAQoApAGEJwBIARBoAFqIAQpA8ABIAQpA8gBIAQpA7ABIAQpA7gBEC8gBCkDqAEhFSAEKQOgAQwCCyAVQghXBEAgBEGQAmogDRBPIARBgAJqIAQoApAGEJwBIARB8AFqIAQpA5ACIAQpA5gCIAQpA4ACIAQpA4gCEC8gBEHgAWpBCCAKa0ECdCgCwH4QTyAEQdABaiAEKQPwASAEKQP4ASAEKQPgASAEKQPoARCqAyAEKQPYASEVIAQpA9ABDAILIBAgCkF9bGpBG2oiAkEeTEEAIAQoApAGIgEgAnYbDQAgBEHgAmogDRBPIARB0AJqIAEQnAEgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQLyAEQbACaiAKQQJ0QZj+AGooAgAQTyAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhAvIAQpA6gCIRUgBCkDoAIMAQsDQCAEQZAGaiAJIgFBAWsiCUECdGooAgBFDQALQQAhDgJAIApBCW8iAkUEQEEAIQIMAQsgAkEJaiACIBVCAFMbIRICQCABRQRAQQAhAkEAIQEMAQtBgJTr3ANBACASa0ECdEHg/gBqKAIAIgVtIQtBACEHQQAhBkEAIQIDQCAEQZAGaiIPIAZBAnRqIgMgByADKAIAIgkgBW4iCGoiAzYCACACQQFqQf8PcSACIANFIAIgBkZxIgMbIQIgCkEJayAKIAMbIQogCyAJIAUgCGxrbCEHIAZBAWoiBiABRw0ACyAHRQ0AIAFBAnQgD2ogBzYCACABQQFqIQELIAogEmtBCWohCgsDQCAEQZAGaiACQQJ0aiEPIApBJEghBgJAA0AgBkUEQCAKQSRHDQIgDygCAEHR6fkETw0CCyABQf8PaiEJQQAhAwNAIAEhCCADrSAEQZAGaiAJQf8PcSILQQJ0aiIBNQIAQh2GfCIVQoGU69wDVAR/QQAFIBUgFUKAlOvcA4AiFkKAlOvcA359IRUgFqcLIQMgASAVPgIAIAggCCALIAggFVAbIAIgC0YbIAsgCEEBa0H/D3EiB0cbIQEgC0EBayEJIAIgC0cNAAsgDkEdayEOIAghASADRQ0ACyACQQFrQf8PcSICIAFGBEAgBEGQBmoiCCABQf4PakH/D3FBAnRqIgEgASgCACAHQQJ0IAhqKAIAcjYCACAHIQELIApBCWohCiAEQZAGaiACQQJ0aiADNgIADAELCwJAA0AgAUEBakH/D3EhCCAEQZAGaiABQQFrQf8PcUECdGohEgNAQQlBASAKQS1KGyETAkADQCACIQNBACEGAkADQAJAIAMgBmpB/w9xIgIgAUYNACAEQZAGaiACQQJ0aigCACIHIAZBAnQoArB+IgJJDQAgAiAHSQ0CIAZBAWoiBkEERw0BCwsgCkEkRw0AQgAhFUEAIQZCACEWA0AgASADIAZqQf8PcSICRgRAIAFBAWpB/w9xIgFBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAJBAnRqKAIAEJwBIARB8AVqIBUgFkIAQoCAgIDlmreOwAAQLyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBKIAQpA+gFIRYgBCkD4AUhFSAGQQFqIgZBBEcNAAsgBEHQBWogDRBPIARBwAVqIBUgFiAEKQPQBSAEKQPYBRAvQgAhFSAEKQPIBSEWIAQpA8AFIRcgDkHxAGoiByARayIJQQAgCUEAShsgECAJIBBIIggbIgZB8ABNDQIMBQsgDiATaiEOIAEhAiABIANGDQALQYCU69wDIBN2IQVBfyATdEF/cyELQQAhBiADIQIDQCAEQZAGaiIPIANBAnRqIgcgBiAHKAIAIgkgE3ZqIgc2AgAgAkEBakH/D3EgAiAHRSACIANGcSIHGyECIApBCWsgCiAHGyEKIAkgC3EgBWwhBiADQQFqQf8PcSIDIAFHDQALIAZFDQEgAiAIRwRAIAFBAnQgD2ogBjYCACAIIQEMAwsgEiASKAIAQQFyNgIADAELCwsgBEGQBWpB4QEgBmsQmQIQbCAEQbAFaiAEKQOQBSAEKQOYBSAWEKwDIAQpA7gFIRogBCkDsAUhGSAEQYAFakHxACAGaxCZAhBsIARBoAVqIBcgFiAEKQOABSAEKQOIBRCpAyAEQfAEaiAXIBYgBCkDoAUiFSAEKQOoBSIYEIgCIARB4ARqIBkgGiAEKQPwBCAEKQP4BBBKIAQpA+gEIRYgBCkD4AQhFwsCQCADQQRqQf8PcSICIAFGDQACQCAEQZAGaiACQQJ0aigCACICQf/Jte4BTQRAIAJFIANBBWpB/w9xIAFGcQ0BIARB8ANqIA23RAAAAAAAANA/ohBsIARB4ANqIBUgGCAEKQPwAyAEKQP4AxBKIAQpA+gDIRggBCkD4AMhFQwBCyACQYDKte4BRwRAIARB0ARqIA23RAAAAAAAAOg/ohBsIARBwARqIBUgGCAEKQPQBCAEKQPYBBBKIAQpA8gEIRggBCkDwAQhFQwBCyANtyEcIAEgA0EFakH/D3FGBEAgBEGQBGogHEQAAAAAAADgP6IQbCAEQYAEaiAVIBggBCkDkAQgBCkDmAQQSiAEKQOIBCEYIAQpA4AEIRUMAQsgBEGwBGogHEQAAAAAAADoP6IQbCAEQaAEaiAVIBggBCkDsAQgBCkDuAQQSiAEKQOoBCEYIAQpA6AEIRULIAZB7wBLDQAgBEHQA2ogFSAYQgBCgICAgICAwP8/EKkDIAQpA9ADIAQpA9gDQgBCABCHAQ0AIARBwANqIBUgGEIAQoCAgICAgMD/PxBKIAQpA8gDIRggBCkDwAMhFQsgBEGwA2ogFyAWIBUgGBBKIARBoANqIAQpA7ADIAQpA7gDIBkgGhCIAiAEKQOoAyEWIAQpA6ADIRcCQCAUQQJrIAdB/////wdxTg0AIAQgFkL///////////8AgzcDmAMgBCAXNwOQAyAEQYADaiAXIBZCAEKAgICAgICA/z8QLyAEKQOQAyAEKQOYA0KAgICAgICAuMAAEK0DIQIgBCkDiAMgFiACQQBOIgEbIRYgBCkDgAMgFyABGyEXIAggBiAJRyACQQBIcnEgFSAYQgBCABCHAUEAR3FFIBQgASAOaiIOQe4Aak5xDQBBiOoBQcQANgIACyAEQfACaiAXIBYgDhCrAyAEKQP4AiEVIAQpA/ACCyEWIAwgFTcDKCAMIBY3AyAgBEGQxgBqJAAgDCkDKCEVIAwpAyAhFgwCC0IAIRYMAQtCACEVCyAAIBY3AwAgACAVNwMIIAxBMGokAAvDBgIEfwN+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEIcBRQ0AAn8gBEL///////8/gyEKAn8gBEIwiKdB//8BcSIHQf//AUcEQEEEIAcNARpBAkEDIAMgCoRQGwwCCyADIAqEUAsLRQ0AIAJCMIinIghB//8BcSIGQf//AUcNAQsgBUEQaiABIAIgAyAEEC8gBSAFKQMQIgIgBSkDGCIBIAIgARCqAyAFKQMIIQIgBSkDACEEDAELIAEgAkL///////////8AgyIKIAMgBEL///////////8AgyIJEIcBQQBMBEAgASAKIAMgCRCHAQRAIAEhBAwCCyAFQfAAaiABIAJCAEIAEC8gBSkDeCECIAUpA3AhBAwBCyAEQjCIp0H//wFxIQcgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQLyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEC8gBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQsgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogC30gAyAEVq19IglCAFkEQCAJIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEC8gBSkDKCECIAUpAyAhBAwFCyAJQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiALfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQLyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ggBkEBayEGIARCAYYhBCAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAws0AQF/IAFBgICAgARPBEAQjAEACyAAIAEQswIiAjYCBCAAIAI2AgAgACACIAFBAnRqNgIICwoAIABBMGtBCkkLFwAgAEEwa0EKSSAAQSByQeEAa0EGSXILEwAgAEEgciAAIABBwQBrQRpJGwspAQF/IAAoAgAiAQRAIAEQvQNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQspAQF/IAAoAgAiAQRAIAEQwwNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQsUACACIAAgASAAayIAEE0gACACagskAQJ/IwBBEGsiAiQAIAEgABDTASEDIAJBEGokACABIAAgAxsLDAAgAEEAIABBf0cbCywBAX8gAUEASARAEIwBAAsgACABEFMiAjYCBCAAIAI2AgAgACABIAJqNgIIC5EBAQN/AkAgASACEIoCIQQjAEEQayIDJAAgBEH3////B00EQAJAIAQQ1AEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQtAMgA0EAOgAHIANBB2oQXSADQRBqJAAMAQsQWwALCw8AIAAgACgCGCABajYCGAsXACAAIAI2AhwgACABNgIUIAAgATYCGAtUAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABIAIoAgAoAjQRBAAMAQsgAiADQQRqNgIYIAMgATYCACABC0F/Rw0AIABBADYCAAsLMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBBGo2AgwgASgCAAsnAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEoAgALLgEBfyMAQRBrIgEkACABIAA2AgBB6gsgARByEH9BoPEAKAIAEGEaIAFBEGokAAskAQF/AkAgACgCACICRQ0AIAIgARDCA0F/Rw0AIABBADYCAAsLPQEBfyADBEAgACADELcDIAAoAgQhAyACIAFrIgRFIAEgAkZyRQRAIAMgASAE/AoAAAsgACADIARqNgIECwsJACAAEI8CEC0LPQEBfyAAKAIYIgIgACgCHEYEQCAAIAEQowEgACgCACgCNBEEAA8LIAAgAkEBajYCGCACIAE6AAAgARCjAQsqAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEsAAAQowELDwAgACAAKAIAKAIYEQAAC6wCAQJ/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABIAA2AgwgAUEAOgAIIAAgACgCAEEMaygCAGoQ2QEEQCAAIAAoAgBBDGsoAgBqKAJIIgIEQCACEMUDCyABQQE6AAgLAkAgAS0ACEUNACAAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgACAAKAIAQQxrKAIAakEBENUBCwJAIAEoAgwiACAAKAIAQQxrKAIAaigCGEUNACABKAIMIgAgACgCAEEMaygCAGoQ2QFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIEQYDAAHFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgASgCDCIAIAAoAgBBDGsoAgBqQQEQ1QELCyABQRBqJAALCQAgABCQAhAtCy0AIABByABqEDogAEE8ahA6IABBMGoQOiAAQSRqEDogAEEYahA6IABBDGoQOgsEAEF/C3wBAn8gACAAKAJIIgFBAWsgAXI2AkggACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRAwAaCyAAQQA2AhwgAEIANwMQIAAoAgAiAUEEcQRAIAAgAUEgcjYCAEF/DwsgACAAKAIsIAAoAjBqIgI2AgggACACNgIEIAFBG3RBH3ULBQAQFwALLQAgAEHMAGoQOiAAQUBrEDogAEE0ahA6IABBKGoQOiAAQRxqEDogAEEQahA6CxIAIABFBEBBAA8LIAAgARCWAgsPACAAIAEgAkE0QTUQ0QMLvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEBAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALbwEFfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH/////B3NLGyEECyAAIANBAWoiBTYCACADLAABIAQhAiAFIQNBMGsiAUEKSQ0ACyACC/oSAhN/An4jAEFAaiIIJAAgCCABNgI8IAhBKWohFyAIQSdqIRggCEEoaiERAkACQAJAAkADQEEAIQcDQCABIQ0gByAOQf////8Hc0oNAiAHIA5qIQ4CQAJAAkACQCABIgctAAAiCwRAA0ACQAJAIAtB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQsDQCALLQABQSVHBEAgCyEBDAILIAdBAWohByALLQACIAtBAmoiASELQSVGDQALCyAHIA1rIgcgDkH/////B3MiGUoNCSAABEAgACANIAcQQgsgBw0HIAggATYCPCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AjxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AjwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ/AkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AjxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AjwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQTxqEM8DIg9BAEgNCiAIKAI8IQELQQAhB0F/IQkCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACQTBrIgpBCUsNACABLQADQSRHDQAgAUEEaiEBAn8gAEUEQCAEIApBAnRqQQo2AgBBAAwBCyADIApBA3RqKAIACwwBCyASDQYgAUECaiEBQQAgAEUNABogAiACKAIAIgpBBGo2AgAgCigCAAshCSAIIAE2AjwgCUEATgwBCyAIIAFBAWo2AjwgCEE8ahDPAyEJIAgoAjwhAUEBCyEUA0AgByEVQRwhCiABIhMsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAVQTpsakHv8ABqLQAAIgdBAWtB/wFxQQhJDQALIAggATYCPAJAIAdBG0cEQCAHRQ0MIBBBAE4EQCAARQRAIAQgEEECdGogBzYCAAwMCyAIIAMgEEEDdGopAwA3AzAMAgsgAEUNCCAIQTBqIAcgAiAGEM4DDAELIBBBAE4NC0EAIQcgAEUNCAsgAC0AAEEgcQ0LIAxB//97cSILIAwgDEGAwABxGyEMQQAhEEHuCCEWIBEhCgJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgEy0AACIHwCITQVNxIBMgB0EPcUEDRhsgEyAVGyIHQdgAaw4hBBYWFhYWFhYWEBYJBhAQEBYGFhYWFgIFAxYWChYBFhYEAAsCQCAHQcEAaw4HEBYLFhAQEAALIAdB0wBGDQsMFQsgCCkDMCEbQe4IDAULQQAhBwJAAkACQAJAAkACQAJAIBUOCAABAgMEHAUGHAsgCCgCMCAONgIADBsLIAgoAjAgDjYCAAwaCyAIKAIwIA6sNwMADBkLIAgoAjAgDjsBAAwYCyAIKAIwIA46AAAMFwsgCCgCMCAONgIADBYLIAgoAjAgDqw3AwAMFQtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDMCIbIhpQRQRAA0AgAUEBayIBIBqnQQ9xLQCAdSALcjoAACAaQg9WIBpCBIghGg0ACwsgASENIAxBCHFFIBtQcg0DIAdBBHZB7ghqIRZBAiEQDAMLIBEhASAIKQMwIhsiGlBFBEADQCABQQFrIgEgGqdBB3FBMHI6AAAgGkIHViAaQgOIIRoNAAsLIAEhDSAMQQhxRQ0CIAkgFyABayIBIAEgCUgbIQkMAgsgCCkDMCIbQgBTBEAgCEIAIBt9Ihs3AzBBASEQQe4IDAELIAxBgBBxBEBBASEQQe8IDAELQfAIQe4IIAxBAXEiEBsLIRYgGyAREKYBIQ0LIBQgCUEASHENESAMQf//e3EgDCAUGyEMIBtCAFIgCXJFBEAgESENQQAhCQwOCyAJIBtQIBEgDWtqIgEgASAJSBshCQwNCyAILQAwIQcMCwsgCCgCMCIBQZUcIAEbIg1BAEH/////ByAJIAlB/////wdPGyIHEOABIgEgDWsgByABGyIBIA1qIQogCUEATgRAIAshDCABIQkMDAsgCyEMIAEhCSAKLQAADQ8MCwsgCCkDMCIaUEUNAUEAIQcMCQsgCQRAIAgoAjAMAgtBACEHIABBICAPQQAgDBBFDAILIAhBADYCDCAIIBo+AgggCCAIQQhqIgc2AjBBfyEJIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEMwDIg1BAEgNDyANIAkgB2tLDQAgC0EEaiELIAcgDWoiByAJSQ0BCwtBPSEKIAdBAEgNDCAAQSAgDyAHIAwQRSAHRQRAQQAhBwwBC0EAIQogCCgCMCELA0AgCygCACINRQ0BIAhBBGoiCSANEMwDIg0gCmoiCiAHSw0BIAAgCSANEEIgC0EEaiELIAcgCksNAAsLIABBICAPIAcgDEGAwABzEEUgDyAHIAcgD0gbIQcMCAsgFCAJQQBIcQ0JQT0hCiAAIAgrAzAgDyAJIAwgByAFESAAIgdBAE4NBwwKCyAHLQABIQsgB0EBaiEHDAALAAsgAA0JIBJFDQNBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhDOA0EBIQ4gB0EBaiIHQQpHDQEMCwsLIAdBCk8EQEEBIQ4MCgsDQCAEIAdBAnRqKAIADQFBASEOIAdBAWoiB0EKRw0ACwwJC0EcIQoMBgsgCCAHOgAnQQEhCSAYIQ0gCyEMCyAJIAogDWsiCyAJIAtKGyIBIBBB/////wdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBlLDQQgAEEgIAcgCSAMEEUgACAWIBAQQiAAQTAgByAJIAxBgIAEcxBFIABBMCABIAtBABBFIAAgDSALEEIgAEEgIAcgCSAMQYDAAHMQRSAIKAI8IQEMAQsLC0EAIQ4MAwtBPSEKC0GI6gEgCjYCAAtBfyEOCyAIQUBrJAAgDgvCAgEEfyMAQdABayIFJAAgBSACNgLMASAFQaABaiICQQBBKPwLACAFIAUoAswBNgLIAQJAQQAgASAFQcgBaiAFQdAAaiACIAMgBBDQA0EASARAQX8hBAwBCyAAKAJMQQBIIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F/IAAQ3wENARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ0AMLIQIgBgRAIABBAEEAIAAoAiQRAwAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF/IAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEDQALIAVB0AFqJAAgBAt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDSAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCz4BAX8jAEEQayIBJAAgASAANgIMAn8gAEEETwRAQZ0fIAFBDGoQlwJBAAwBCyAAQQJ0KAKILQsgAUEQaiQACwYAIAEQLQsJACABIAJsEDQLJQECfyAAKAIEIgAQqAFBAWoiARA0IgIEfyACIAAgARBxBUEACwsNACAAKAIEIAAoAgBrCzABAX8jAEEQayIEJAAgACgCACEAIAQgAzoADyABIAIgBEEPaiAAEQMAIARBEGokAAuNAgIBfwF8IwBBEGsiAyQAIANBDmogASACIAAoAgARBQAgAyADLwAOOwEMIwBBEGsiASQAAkAgAy0ADUEBRgRAIwBBEGsiAiQAQazgAS0AAEEBcUUEQEECQYQsQQMQDyEAQazgAUEBOgAAQajgASAANgIACyACIAMtAAw2AgggAkEANgIEQajgASgCAEEAQQAgAkEEaiACQQhqEA4hBCACIAIoAgQ2AgAgAUEIaiIAIAT8AzYCBCAAQfzgATYCACACEJ8CIAJBEGokACAAKAIEIQIgAEEANgIEIAAQtQEMAQsgAUEANgIMIAFB/OABNgIIIAFBCGoQtQFBAiECCyABQRBqJAAgA0EQaiQAIAILVAECfyMAQRBrIgQkACABIAAoAgQiBUEBdWohASAAKAIAIQAgBUEBcQRAIAEoAgAgAGooAgAhAAsgBCADOgAPIAEgAiAEQQ9qIAARBQAgBEEQaiQAC1IBAn8jAEEQayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIARBAXEEQCABKAIAIABqKAIAIQALIAMgAjoADyABIANBD2ogABEBACADQRBqJAALMAEBfyMAQRBrIgQkACAAKAIAIQAgBCADOAIMIAEgAiAEQQxqIAARAwAgBEEQaiQAC40CAgF/AXwjAEEQayIDJAAgA0EIaiABIAIgACgCABEFACADIAMpAgg3AwAjAEEQayIBJAACQCADLQAEQQFGBEAjAEEQayICJABBoOABLQAAQQFxRQRAQQJBxCZBAxAPIQBBoOABQQE6AABBnOABIAA2AgALIAIgAyoCADgCCCACQQA2AgRBnOABKAIAQQBBACACQQRqIAJBCGoQDiEEIAIgAigCBDYCACABQQhqIgAgBPwDNgIEIABB/OABNgIAIAIQnwIgAkEQaiQAIAAoAgQhAiAAQQA2AgQgABC1AQwBCyABQQA2AgwgAUH84AE2AgggAUEIahC1AUECIQILIAFBEGokACADQRBqJAAgAgtUAQJ/IwBBEGsiBCQAIAEgACgCBCIFQQF1aiEBIAAoAgAhACAFQQFxBEAgASgCACAAaigCACEACyAEIAM4AgwgASACIARBDGogABEFACAEQRBqJAALUgECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACOAIMIAEgA0EMaiAAEQEAIANBEGokAAsbACAAIAEoAgggBRA7BEAgASACIAMgBBDnAQsLOAAgACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRCgALkgIBBn8gACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyABLQA1IAAoAgwhBiABQQA6ADUgAS0ANCABQQA6ADQgAEEQaiIJIAEgAiADIAQgBRDlASABLQA0IgpyIQggAS0ANSILciEHAkAgBkECSQ0AIAkgBkEDdGohCSAAQRhqIQYDQCABLQA2DQECQCAKQQFxBEAgASgCGEEBRg0DIAAtAAhBAnENAQwDCyALQQFxRQ0AIAAtAAhBAXFFDQILIAFBADsBNCAGIAEgAiADIAQgBRDlASABLQA1IgsgB3JBAXEhByABLQA0IgogCHJBAXEhCCAGQQhqIgYgCUkNAAsLIAEgB0EBcToANSABIAhBAXE6ADQLkgEAIAAgASgCCCAEEDsEQCABIAIgAxDmAQ8LAkAgACABKAIAIAQQO0UNAAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC/YBACAAIAEoAgggBBA7BEAgASACIAMQ5gEPCwJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQgACgCACgCFBEKACABLQA1QQFGBEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBELAAsLrwQBA38gACABKAIIIAQQOwRAIAEgAiADEOYBDwsCQAJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAyABQQE2AiAPCyABIAM2AiAgASgCLEEERg0BIABBEGoiBSAAKAIMQQN0aiEHQQAhAwNAAkACQCABAn8CQCAFIAdPDQAgAUEAOwE0IAUgASACIAJBASAEEOUBIAEtADYNACABLQA1QQFHDQMgAS0ANEEBRgRAIAEoAhhBAUYNA0EBIQNBASEGIAAtAAhBAnFFDQMMBAtBASEDIAAtAAhBAXENA0EDDAELQQNBBCADGws2AiwgBg0FDAQLIAFBAzYCLAwECyAFQQhqIQUMAAsACyAAKAIMIQUgAEEQaiIGIAEgAiADIAQQtwEgBUECSQ0BIAYgBUEDdGohBiAAQRhqIQUCQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAyAFIAEgAiADIAQQtwEgBUEIaiIFIAZJDQALDAILIABBAXFFBEADQCABLQA2DQMgASgCJEEBRg0DIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAwDCwALA0AgAS0ANg0CIAEoAiRBAUYEQCABKAIYQQFGDQMLIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAsMAQsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsLjgUBBH8jAEFAaiIEJAACQCABQaDZAUEAEDsEQCACQQA2AgBBASEFDAELAkAgACABIAAtAAhBGHEEf0EBBSABRQ0BIAFB9NYBEFIiA0UNASADLQAIQRhxQQBHCxA7IQYLIAYEQEEBIQUgAigCACIARQ0BIAIgACgCADYCAAwBCwJAIAFFDQAgAUGk1wEQUiIGRQ0BIAIoAgAiAQRAIAIgASgCADYCAAsgBigCCCIDIAAoAggiAUF/c3FBB3EgA0F/cyABcUHgAHFyDQFBASEFIAAoAgwgBigCDEEAEDsNASAAKAIMQZTZAUEAEDsEQCAGKAIMIgBFDQIgAEHU1wEQUkUhBQwCCyAAKAIMIgNFDQBBACEFIANBpNcBEFIiAQRAIAAtAAhBAXFFDQICfyAGKAIMIQBBACECAkADQEEAIABFDQIaIABBpNcBEFIiA0UNASADKAIIIAEoAghBf3NxDQFBASABKAIMIAMoAgxBABA7DQIaIAEtAAhBAXFFDQEgASgCDCIARQ0BIABBpNcBEFIiAQRAIAMoAgwhAAwBCwsgAEGI2AEQUiIARQ0AIAAgAygCDBCpAiECCyACCyEFDAILIANBiNgBEFIiAQRAIAAtAAhBAXFFDQIgASAGKAIMEKkCIQUMAgsgA0HE1gEQUiIBRQ0BIAYoAgwiAEUNASAAQcTWARBSIgBFDQEgAigCACEDIARBCGpBAEE4/AsAIAQgA0EARzoAOyAEQX82AhAgBCABNgIMIAQgADYCBCAEQQE2AjQgACAEQQRqIANBASAAKAIAKAIcEQgAIAQoAhwiAEEBRgRAIAIgBCgCFEEAIAMbNgIACyAAQQFGIQUMAQtBACEFCyAEQUBrJAAgBQtvAQJ/IAAgASgCCEEAEDsEQCABIAIgAxDpAQ8LIAAoAgwhBCAAQRBqIgUgASACIAMQqwICQCAEQQJJDQAgBSAEQQN0aiEEIABBGGohAANAIAAgASACIAMQqwIgAS0ANg0BIABBCGoiACAESQ0ACwsLMgAgACABKAIIQQAQOwRAIAEgAiADEOkBDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRCAALGQAgACABKAIIQQAQOwRAIAEgAiADEOkBCwvIAQECfyMAQdAAayIDJAACQAJ/QQEgACABQQAQOw0AGkEAIAFFDQAaQQAgAUHE1gEQUiIBRQ0AGiACKAIAIgRFDQEgA0EYakEAQTj8CwAgA0EBOgBLIANBfzYCICADIAA2AhwgAyABNgIUIANBATYCRCABIANBFGogBEEBIAEoAgAoAhwRCAAgAygCLCIAQQFGBEAgAiADKAIkNgIACyAAQQFGCyADQdAAaiQADwsgA0GeFjYCCCADQecDNgIEIANBig02AgAQPQALAwAACxEBAX9BBBBTIgBBADYCACAACwkAQaD0ARA5GgslAEGs9AEtAABFBEBBoPQBQdisARCRAUGs9AFBAToAAAtBoPQBCwkAQZD0ARAgGgskAEGc9AEtAABFBEBBkPQBQc4NELABQZz0AUEBOgAAC0GQ9AELCQBBgPQBEDkaCyUAQYz0AS0AAEUEQEGA9AFBhKwBEJEBQYz0AUEBOgAAC0GA9AELCQBB8PMBECAaCyQAQfzzAS0AAEUEQEHw8wFBmRUQsAFB/PMBQQE6AAALQfDzAQsJAEHg8wEQORoLqQIBBH8gAiABIAAoAgBqIgBHBEACQCACKAIEIgQgAigCACIBa0ECdSIGIAAoAgggACgCACICa0ECdU0EQCAGIAAoAgQiAyACayIFQQJ1SwRAIAIgA0cEQCAFBEAgAiABIAX8CgAACyAAKAIEIQMLIAQgASAFaiIBayICRSABIARGckUEQCADIAEgAvwKAAALIAAgAiADajYCBAwCCyAEIAFrIgNFIAEgBEZyRQRAIAIgASAD/AoAAAsgACACIANqNgIEDAELIAAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0gAEEANgIIIABCADcCAAsgACAAIAYQtgEQrgMgACgCBCECIAQgAWsiA0UgASAERnJFBEAgAiABIAP8CgAACyAAIAIgA2o2AgQLCwslAEHs8wEtAABFBEBB4PMBQeCrARCRAUHs8wFBAToAAAtB4PMBCwkAQeTeARAgGgsaAEHd8wEtAABFBEBB3fMBQQE6AAALQeTeAQsJAEHQ8wEQORoLJQBB3PMBLQAARQRAQdDzAUG8qwEQkQFB3PMBQQE6AAALQdDzAQsJAEHY3gEQIBoLGgBBzfMBLQAARQRAQc3zAUEBOgAAC0HY3gELGwBBqPwBIQADQCAAQQxrEDkiAEGQ/AFHDQALC1QAQczzAS0AAARAQcjzASgCAA8LQaj8AS0AAEUEQEGo/AFBAToAAAtBkPwBQfjUARApQZz8AUGE1QEQKUHM8wFBAToAAEHI8wFBkPwBNgIAQZD8AQsbAEGI/AEhAANAIABBDGsQICIAQfD7AUcNAAsLFQAgASAAKAIAaiEAQQwQUyAAEIEBC1IAQcTzAS0AAARAQcDzASgCAA8LQYj8AS0AAEUEQEGI/AFBAToAAAtB8PsBQdEVECpB/PsBQc4VECpBxPMBQQE6AABBwPMBQfD7ATYCAEHw+wELGwBB4PsBIQADQCAAQQxrEDkiAEHA+QFHDQALC7ACAEG88wEtAAAEQEG48wEoAgAPC0Hg+wEtAABFBEBB4PsBQQE6AAALQcD5AUHw0AEQKUHM+QFBkNEBEClB2PkBQbTRARApQeT5AUHM0QEQKUHw+QFB5NEBEClB/PkBQfTRARApQYj6AUGI0gEQKUGU+gFBnNIBEClBoPoBQbjSARApQaz6AUHg0gEQKUG4+gFBgNMBEClBxPoBQaTTARApQdD6AUHI0wEQKUHc+gFB2NMBEClB6PoBQejTARApQfT6AUH40wEQKUGA+wFB5NEBEClBjPsBQYjUARApQZj7AUGY1AEQKUGk+wFBqNQBEClBsPsBQbjUARApQbz7AUHI1AEQKUHI+wFB2NQBEClB1PsBQejUARApQbzzAUEBOgAAQbjzAUHA+QE2AgBBwPkBCxsAQbD5ASEAA0AgAEEMaxAgIgBBkPcBRw0ACwuYAgBBtPMBLQAABEBBsPMBKAIADwtBsPkBLQAARQRAQbD5AUEBOgAAC0GQ9wFBmwgQKkGc9wFBkggQKkGo9wFBzQ8QKkG09wFBnA4QKkHA9wFB4QgQKkHM9wFBhxEQKkHY9wFBowgQKkHk9wFBkwkQKkHw9wFB1QwQKkH89wFBxAwQKkGI+AFBzAwQKkGU+AFB3wwQKkGg+AFB6g0QKkGs+AFBlRUQKkG4+AFBhg0QKkHE+AFB9gsQKkHQ+AFB4QgQKkHc+AFB3g0QKkHo+AFBkA4QKkH0+AFB0w8QKkGA+QFByg0QKkGM+QFBngoQKkGY+QFBiwkQKkGk+QFB+BQQKkG08wFBAToAAEGw8wFBkPcBNgIAQZD3AQsbAEGI9wEhAANAIABBDGsQOSIAQeD1AUcNAAsLzAEAQazzAS0AAARAQajzASgCAA8LQYj3AS0AAEUEQEGI9wFBAToAAAtB4PUBQZzOARApQez1AUG4zgEQKUH49QFB1M4BEClBhPYBQfTOARApQZD2AUGczwEQKUGc9gFBwM8BEClBqPYBQdzPARApQbT2AUGA0AEQKUHA9gFBkNABEClBzPYBQaDQARApQdj2AUGw0AEQKUHk9gFBwNABEClB8PYBQdDQARApQfz2AUHg0AEQKUGs8wFBAToAAEGo8wFB4PUBNgIAQeD1AQsbAEHY9QEhAANAIABBDGsQICIAQbD0AUcNAAsLvgEAQaTzAS0AAARAQaDzASgCAA8LQdj1AS0AAEUEQEHY9QFBAToAAAtBsPQBQcwIECpBvPQBQdMIECpByPQBQbEIECpB1PQBQbkIECpB4PQBQagIECpB7PQBQdoIECpB+PQBQcMIECpBhPUBQdoNECpBkPUBQeINECpBnPUBQeoQECpBqPUBQasTECpBtPUBQY8JECpBwPUBQbIPECpBzPUBQcIKECpBpPMBQQE6AABBoPMBQbD0ATYCAEGw9AELDwAgASAAKAIAaiACOgAACwsAIABBpKsBEJEBCwoAIABB7hAQsAELCwAgAEGQqwEQkQELCgAgAEHlEBCwAQsMACAAIAFBEGoQ5AELDAAgACABQQxqEOQBCwcAIAAsAAkLBwAgACwACAsJACAAEMMCEC0LDQAgASAAKAIAai0AAAsJACAAEMQCEC0LFQAgACgCCCIARQRAQQEPCyAAEMwCC44BAQZ/A0ACQCACIANGIAQgCE1yDQBBASEGIAAoAgghByMAQRBrIgUkACAFIAc2AgwgBUEIaiAFQQxqEGNBACACIAMgAmsgAUH07wEgARsQ0gEhChBiIAVBEGokAAJAAkAgCiIFQQJqDgMCAgEACyAFIQYLIAhBAWohCCAGIAlqIQkgAiAGaiECDAELCyAJC0YBAn8gACgCCCECIwBBEGsiASQAIAEgAjYCDCABQQhqIAFBDGoQYxBiIAFBEGokACAAKAIIIgBFBEBBAQ8LIAAQzAJBAUYLiQEBAn8jAEEQayIGJAAgBCACNgIAAn9BAiAGQQxqIgVBACAAKAIIEO4BIgBBAWpBAkkNABpBASAAQQFrIgIgAyAEKAIAa0sNABoDfyACBH8gBS0AACEAIAQgBCgCACIBQQFqNgIAIAEgADoAACACQQFrIQIgBUEBaiEFDAEFQQALCwsgBkEQaiQAC7kGAQ1/IwBBEGsiESQAIAIhCANAAkAgAyAIRgRAIAMhCAwBCyAILQAARQ0AIAhBAWohCAwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YgBSAGRnINACARIAEpAgA3AwggACgCCCEJIwBBEGsiECQAIBAgCTYCDCAQQQhqIBBBDGoQYyAIIAJrIQ5BACELIwBBkAhrIgwkACAMIAQoAgAiCTYCDCAFIAxBEGogBRshDwJAAkACQCAJRSAGIAVrQQJ1QYACIAUbIg1FckUEQANAIA5BgwFLIA5BAnYiCiANT3JFBEAgCSEKDAQLIA8gDEEMaiAKIA0gCiANSRsgARCbAyESIAwoAgwhCiASQX9GBEBBACENQX8hCwwDCyANIBJBACAPIAxBEGpHGyIUayENIA8gFEECdGohDyAJIA5qIAprQQAgChshDiALIBJqIQsgCkUNAiAKIQkgDQ0ADAILAAsgCSEKCyAKRQ0BCyANRSAORXINACALIQkDQAJAAkAgDyAKIA4gARDSASILQQJqQQJNBEACQAJAIAtBAWoOAgYAAQsgDEEANgIMDAILIAFBADYCAAwBCyAMIAwoAgwgC2oiCjYCDCAJQQFqIQkgDUEBayINDQELIAkhCwwCCyAPQQRqIQ8gDiALayEOIAkhCyAODQALCyAFBEAgBCAMKAIMNgIACyAMQZAIaiQAEGIgEEEQaiQAAkACQAJAAkAgCyIJQX9GBEADQCAHIAU2AgAgAiAEKAIARg0GQQEhBgJAAkACQCAFIAIgCCACayARQQhqIAAoAggQzQIiAUECag4DBwACAQsgBCACNgIADAQLIAEhBgsgAiAGaiECIAcoAgBBBGohBQwACwALIAcgBygCACAJQQJ0aiIFNgIAIAUgBkYNAyAEKAIAIQIgAyAIRg0GIAUgAkEBIAEgACgCCBDNAkUNAQtBAgwECyAHIAcoAgBBBGoiBTYCACAEIAQoAgBBAWoiAjYCACACIQgDQCADIAhGDQUgCC0AAEUNBiAIQQFqIQgMAAsACyAEIAI2AgBBAQwCCyAEKAIAIQILIAIgA0cLIBFBEGokAA8LIAMhCAwACwALpgUBDH8jAEEQayIPJAAgAiEIA0ACQCADIAhGBEAgAyEIDAELIAgoAgBFDQAgCEEEaiEIDAELCyAHIAU2AgAgBCACNgIAAkADQAJAAkAgAiADRiAFIAZGcgR/IAIFIA8gASkCADcDCEEBIRAgBSEJIAYgBWshCyAAKAIIIQpBACENIwBBEGsiDiQAIA4gCjYCDCAOQQhqIA5BDGoQYyMAQRBrIhEkAAJAIAQoAgAiCkUgCCACa0ECdSISRXINACALQQAgBRshCwNAIBFBDGogCSALQQRJGyAKKAIAEJYCIgxBf0YEQEF/IQ0MAgsgCQR/IAtBA00EQCALIAxJDQMgCSARQQxqIAwQcRoLIAsgDGshCyAJIAxqBUEACyEJIAooAgBFBEBBACEKDAILIAwgDWohDSAKQQRqIQogEkEBayISDQALCyAJBEAgBCAKNgIACyARQRBqJAAQYiAOQRBqJAACQAJAAkACQCANIglBAWoOAgAIAQsgByAFNgIAA0AgAiAEKAIARg0CIAUgAigCACAAKAIIEO4BIgFBf0YNAiAHIAcoAgAgAWoiBTYCACACQQRqIQIMAAsACyAHIAcoAgAgCWoiBTYCACAFIAZGDQEgAyAIRgRAIAQoAgAhAiADIQgMBgsgD0EEaiICQQAgACgCCBDuASIIQX9GDQQgBiAHKAIAayAISQ0GA0AgCARAIAItAAAhBSAHIAcoAgAiCUEBajYCACAJIAU6AAAgCEEBayEIIAJBAWohAgwBCwsgBCAEKAIAQQRqIgI2AgAgAiEIA0AgAyAIRgRAIAMhCAwFCyAIKAIARQ0EIAhBBGohCAwACwALIAQgAjYCAAwDCyAEKAIACyADRyEQDAMLIAcoAgAhBQwBCwtBAiEQCyAPQRBqJAAgEAsJACAAENsCEC0LMwAjAEEQayIAJAAgACAENgIMIAAgAyACazYCCCAAQQxqIABBCGoQtQMoAgAgAEEQaiQACzsAA0AgASACRkUEQCADIQAgBCABLAAAEEwEfyABLQAABSAACzoAACAEQQFqIQQgAUEBaiEBDAELCyABCwsAIAEgAiABEEwbCyoAA0AgASACRkUEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpgILHQAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABC8ALDwAgACABIAJBmIQBEKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2IQgCQAJ/IAUQHyAAKAKoA0oEQCAFEB8hCSAAKAKoAyENIAcQHyAJIA1rQQF0aiAGEB9qIAAoAqgDakEBagwBCyAHEB8gBhAfaiAAKAKoA2pBAmoLIglB5QBJDQAgCCAJQQJ0EDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH0ECdGogCiALIABB2ANqIAAoAtQDIAAoAtADIAwgBiAHIAAoAqgDEN4CIAEgAiAAKAIEIAAoAgAgAyAEEIUBIAgQNSAHEDkaIAYQORogDBAgGiAAQdwDahAlIABB4ANqJAALvgQBC38jAEGgCGsiACQAIAAgBjcDmAggACAFNwOQCCAAIAU3AwAgACAGNwMIIAAgAEGgB2oiBzYCnAcgB0HAECAAEIYBIQcgAEHjADYCgAQgAEH4A2pBACAAQYAEaiIJEDYhDiAAQeMANgKABCAAQfADakEAIAkQNiEKAkAgB0HkAE8EQCAAQZwHahAuQcAQIABBkAhqEMgBIgdBf0YNASAOIAAoApwHEDwgCiAHQQJ0EDQQPCAKEOQCDQEgCigCACEJCyAAQewDaiIIIAMQJyAIEEgiESAAKAKcByIIIAcgCGogCRBvIAdBAEoEQCAAKAKcBy0AAEEtRiEPCyACIA8gAEHsA2ogAEHoA2ogAEHkA2ogAEHgA2ogAEHUA2oQJCIQIABByANqECQiCCAAQbwDahAkIgsgAEG4A2oQ3wIgAEHjADYCICAAQRhqQQAgAEEgaiICEDYhDAJ/IAAoArgDIg0gB0gEQCALEB8gByANa0EBdGogCBAfaiAAKAK4A2pBAWoMAQsgCxAfIAgQH2ogACgCuANqQQJqCyINQeUATwRAIAwgDUECdBA0EDwgDCgCACICRQ0BCyACIABBFGogAEEQaiADKAIEIAkgCSAHQQJ0aiARIA8gAEHoA2ogACgC5AMgACgC4AMgECAIIAsgACgCuAMQ3gIgASACIAAoAhQgACgCECADIAQQhQEgDBA1IAsQORogCBA5GiAQECAaIABB7ANqECUgChA1IA4QNSAAQaAIaiQADwsQPQALMwECfyABKAIEIAEoAgAiAWsgAksEQEEBIQQgASACai0AACEDCyAAIAQ6AAEgACADOgAAC/wCAQh/IwBBsAFrIgAkACAAQawBaiIGIAMQJyAGEEkhCiAFEB8EQCAFQQAQIi0AACAKQS0QQUH/AXFGIQsLIAIgCyAAQawBaiAAQagBaiAAQacBaiAAQaYBaiAAQZgBahAkIgwgAEGMAWoQJCIGIABBgAFqECQiByAAQfwAahDjAiAAQeMANgIQIABBCGpBACAAQRBqIgIQNiEIAkACfyAFEB8gACgCfEoEQCAFEB8hCSAAKAJ8IQ0gBxAfIAkgDWtBAXRqIAYQH2ogACgCfGpBAWoMAQsgBxAfIAYQH2ogACgCfGpBAmoLIglB5QBJDQAgCCAJEDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH2ogCiALIABBqAFqIAAsAKcBIAAsAKYBIAwgBiAHIAAoAnwQ4gIgASACIAAoAgQgACgCACADIAQQgAEgCBA1IAcQIBogBhAgGiAMECAaIABBrAFqECUgAEGwAWokAAu1BAELfyMAQcADayIAJAAgACAGNwO4AyAAIAU3A7ADIAAgBTcDACAAIAY3AwggACAAQcACaiIHNgK8AiAHQcAQIAAQhgEhByAAQeMANgLQASAAQcgBakEAIABB0AFqIgkQNiEOIABB4wA2AtABIABBwAFqQQAgCRA2IQoCQCAHQeQATwRAIABBvAJqEC5BwBAgAEGwA2oQyAEiB0F/Rg0BIA4gACgCvAIQPCAKIAcQNBA8IAoQ5AINASAKKAIAIQkLIABBvAFqIgggAxAnIAgQSSIRIAAoArwCIgggByAIaiAJEHkgB0EASgRAIAAoArwCLQAAQS1GIQ8LIAIgDyAAQbwBaiAAQbgBaiAAQbcBaiAAQbYBaiAAQagBahAkIhAgAEGcAWoQJCIIIABBkAFqECQiCyAAQYwBahDjAiAAQeMANgIgIABBGGpBACAAQSBqIgIQNiEMAn8gACgCjAEiDSAHSARAIAsQHyAHIA1rQQF0aiAIEB9qIAAoAowBakEBagwBCyALEB8gCBAfaiAAKAKMAWpBAmoLIg1B5QBPBEAgDCANEDQQPCAMKAIAIgJFDQELIAIgAEEUaiAAQRBqIAMoAgQgCSAHIAlqIBEgDyAAQbgBaiAALAC3ASAALAC2ASAQIAggCyAAKAKMARDiAiABIAIgACgCFCAAKAIQIAMgBBCAASAMEDUgCxAgGiAIECAaIBAQIBogAEG8AWoQJSAKEDUgDhA1IABBwANqJAAPCxA9AAvtAQEDfyAAKAIEIAAoAgAiBGsiAyABSQRAIwBBIGsiBCQAAkAgASADayIDIAAoAgggACgCBCIBa00EQCADIAAoAgQiAWohAwNAIAEgA0YEQCAAIAM2AgQFIAEgAi0AADoAACABQQFqIQEMAQsLDAELIAMgBEEMaiAAIAEgA2ogACgCAGsQtAEgACgCBCAAKAIAayAAEMYBIgUoAggiAWohAwNAIAEgA0cEQCABIAItAAA6AAAgAUEBaiEBDAELCyAFIAM2AgggACAFEO8BIAUQugELIARBIGokAA8LIAEgA0kEQCAAIAEgBGo2AgQLC4EFAQR/IwBBwANrIgAkACAAIAI2ArgDIAAgATYCvAMgAEHkADYCFCAAQRhqIABBIGogAEEUaiIIEDYhCiAAQRBqIgEgBBAnIAEQSCEHIABBADoADyAAQbwDaiACIAMgASAEKAIEIAUgAEEPaiAHIAogCCAAQbADahDqAgRAIwBBEGsiASQAIAYQHxoCQCAGEEcEQCAGKAIAIAFBADYCDCABQQxqEFYgBkEANgIEDAELIAFBADYCCCAGIAFBCGoQViAGQQAQUAsgAUEQaiQAIAAtAA9BAUYEQCAGIAdBLRBLEOoBCyAHQTAQSyEBIAooAgAhAiAAKAIUIgNBBGshBANAAkAgAiAETw0AIAIoAgAgAUcNACACQQRqIQIMAQsLIwBBEGsiBCQAIAYQHyEBIAYQ8QEhBwJAIAIgAxD1ASIIRQ0AIAYQIyAGECMgBhAfQQJ0akEEaiACEL4CRQRAIAggByABa0sEQCAGIAcgASAHayAIaiABIAEQ6AILIAIgAyAGECMgAUECdGoQ5wIgBEEANgIEIARBBGoQViAGIAEgCGoQgwEMAQsgBEEEaiIBIAIgAxCZAyABECMhCCABEB8hAiMAQRBrIgckAAJAIAIgBhDxASIJIAYQHyIDa00EQCACRQ0BIAYQIyIJIANBAnRqIAggAhBlIAYgAiADaiICEIMBIAdBADYCDCAJIAJBAnRqIAdBDGoQVgwBCyAGIAkgAiAJayADaiADIANBACACIAgQrwILIAdBEGokACABEDkaCyAEQRBqJAALIABBvANqIABBuANqECsEQCAFIAUoAgBBAnI2AgALIAAoArwDIABBEGoQJSAKEDUgAEHAA2okAAvRAwEDfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABB5AA2AhAgAEHIAWogAEHQAWogAEEQaiIBEDYhByAAQcABaiIIIAQQJyAIEEghCSAAQQA6AL8BAkAgAEHsBGogAiADIAggBCgCBCAFIABBvwFqIAkgByAAQcQBaiAAQeAEahDqAkUNACAAQcsbKAAANgC3ASAAQcQbKQAANwOwASAJIABBsAFqIABBugFqIABBgAFqEG8gAEHjADYCECAAQQhqQQAgARA2IQMgASEEAkAgACgCxAEgBygCAGsiAUGJA04EQCADIAFBAnVBAmoQNBA8IAMoAgBFDQEgAygCACEECyAALQC/AUEBRgRAIARBLToAACAEQQFqIQQLIAcoAgAhAgNAIAAoAsQBIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGogABCjA0EBRw0AIAMQNQwECwUgBCAAQbABaiAAQYABaiIBIAFBKGogAhD5ASABa0ECdWotAAA6AAAgBEEBaiEEIAJBBGohAgwBCwsQPQALED0ACyAAQewEaiAAQegEahArBEAgBSAFKAIAQQJyNgIACyAAKALsBCAAQcABahAlIAcQNSAAQfAEaiQAC5ABAQJ/IAACfyAAKAIEIgIgACgCCEkEQCACIAEtAAA6AAAgAkEBagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0EBahC0ASAAKAIEIAAoAgBrIAAQxgEiAigCCCABLQAAOgAAIAIgAigCCEEBajYCCCAAIAIQ7wEgACgCBCACELoBIANBIGokAAs2AgQLBQBBpCoL0AQBA38jAEGQAWsiACQAIAAgAjYCiAEgACABNgKMASAAQeQANgIUIABBGGogAEEgaiAAQRRqIgcQNiEJIABBEGoiCCAEECcgCBBJIQEgAEEAOgAPIABBjAFqIAIgAyAIIAQoAgQgBSAAQQ9qIAEgCSAHIABBhAFqEPACBEACQCAGLAALQQBIBEAgBigCAEEAOgAAIAZBADYCBAwBCyAGQQA6AAsgBkEAOgAACyAALQAPQQFGBEAgBiABQS0QQRC4AQsgAUEwEEEgCSgCACECIAAoAhQiBEEBayEDQf8BcSEBA0ACQCACIANPDQAgAi0AACABRw0AIAJBAWohAgwBCwsjAEEQayIBJAAgBhAfIQMgBhAoIQgCQCACIAQQigIiB0UNACAGECMgBhAjIAYQH2pBAWogAhC+AkUEQCAHIAggA2tLBEAgBiAIIAMgCGsgB2ogAyADEPQBCyACIAQgBhAjIANqELQDIAFBADoADyABQQ9qEF0gBiADIAdqEIMBDAELIAEgAiAEELgDIAEQIyEIIAEQHyECIwBBEGsiBCQAAkAgAiAGECgiByAGEB8iA2tNBEAgAkUNASAGECMiByADaiAIIAIQTSAGIAIgA2oiAhCDASAEQQA6AA8gAiAHaiAEQQ9qEF0MAQsgBiAHIAIgB2sgA2ogAyADQQAgAiAIELkBCyAEQRBqJAAgARAgGgsgAUEQaiQACyAAQYwBaiAAQYgBahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMASAAQRBqECUgCRA1IABBkAFqJAALxwMBA38jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQeQANgIQIABBmAFqIABBoAFqIABBEGoiARA2IQcgAEGQAWoiCCAEECcgCBBJIQkgAEEAOgCPAQJAIABBjAJqIAIgAyAIIAQoAgQgBSAAQY8BaiAJIAcgAEGUAWogAEGEAmoQ8AJFDQAgAEHLGygAADYAhwEgAEHEGykAADcDgAEgCSAAQYABaiAAQYoBaiAAQfYAahB5IABB4wA2AhAgAEEIakEAIAEQNiEDIAEhBAJAIAAoApQBIAcoAgBrIgFB4wBOBEAgAyABQQJqEDQQPCADKAIARQ0BIAMoAgAhBAsgAC0AjwFBAUYEQCAEQS06AAAgBEEBaiEECyAHKAIAIQIDQCAAKAKUASACTQRAAkAgBEEAOgAAIAAgBjYCACAAQRBqIAAQowNBAUcNACADEDUMBAsFIAQgAEH2AGoiASABQQpqIAIQ/QEgAGsgAGotAAo6AAAgBEEBaiEEIAJBAWohAgwBCwsQPQALED0ACyAAQYwCaiAAQYgCahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMAiAAQZABahAlIAcQNSAAQZACaiQACxcAIAAoAgAgAUECdGogAioCADgCAEEBC5EDAQJ/IwBBoANrIgckACAHIAdBoANqIgM2AgwjAEGQAWsiAiQAIAIgAkGEAWo2AhwgAEEIaiACQSBqIgggAkEcaiAEIAUgBhD0AiACQgA3AxAgAiAINgIMIAdBEGoiBSAHKAIMEPUBIQQgACgCCCEGIwBBEGsiACQAIAAgBjYCDCAAQQhqIABBDGoQYyAFIAJBDGogBCACQRBqEJsDIQQQYiAAQRBqJAAgBEF/RgRAED0ACyAHIAUgBEECdGo2AgwgAkGQAWokACAHKAIMIQIjAEEQayIGJAAjAEEgayIAJAAgAEEYaiAFIAIQvwIgAEEQaiAAKAIYIQIgACgCHCEIIwBBEGsiBCQAIAQgAjYCCCAEIAE2AgwDQCACIAhHBEAgBEEMaiACKAIAELsDIAQgAkEEaiICNgIIDAELCyAEQQhqIARBDGoQZiAEQRBqJAAgACAFIAAoAhAQjgE2AgwgACAAKAIUNgIIIAZBCGogAEEMaiAAQQhqEGYgAEEgaiQAIAYoAgwgBkEQaiQAIAMkAAuAAgECfyMAQYABayICJAAgAiACQfQAajYCDCAAQQhqIAJBEGoiAyACQQxqIAQgBSAGEPQCIAIoAgwhBCMAQRBrIgYkACMAQSBrIgAkACAAQRhqIAMgBBC/AiAAQRBqIAAoAhghBCAAKAIcIQgjAEEQayIFJAAgBSAENgIIIAUgATYCDANAIAQgCEcEQCAFQQxqIAQsAAAQvwMgBSAEQQFqIgQ2AggMAQsLIAVBCGogBUEMahBmIAVBEGokACAAIAMgACgCEBCOATYCDCAAIAAoAhQ2AgggBkEIaiAAQQxqIABBCGoQZiAAQSBqJAAgBigCDCAGQRBqJAAgAkGAAWokAAvdDAEBfyMAQTBrIgckACAHIAE2AiwgBEEANgIAIAcgAxAnIAcQSCEIIAcQJQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQcEAaw45AAEXBBcFFwYHFxcXChcXFxcODxAXFxcTFRcXFxcXFxcAAQIDAxcXARcIFxcJCxcMFw0XCxcXERIUFgsgACAFQRhqIAdBLGogAiAEIAgQ9wIMGAsgACAFQRBqIAdBLGogAiAEIAgQ9gIMFwsgAEEIaiAAKAIIKAIMEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwWCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBAWtBHktyRQRAIAUgADYCDAwBCyAEIAFBBHI2AgALDBULIAdBqKABKQMANwMYIAdBoKABKQMANwMQIAdBmKABKQMANwMIIAdBkKABKQMANwMAIAcgACABIAIgAyAEIAUgByAHQSBqEG02AiwMFAsgB0HIoAEpAwA3AxggB0HAoAEpAwA3AxAgB0G4oAEpAwA3AwggB0GwoAEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwTCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EsaiACIAQgCEEDEGchAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EsaiACIAQgCEECEGchAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EsaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECsNACAIQQEgABA3EF9FDQAgABA+GgwBCwsgACABQQxqECsEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQSxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDNASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0HQoAFBLPwKAAAgByAAIAEgAiADIAQgBSAHIAdBLGoQbTYCLAwLCyAHQZChASgCADYCECAHQYihASkDADcDCCAHQYChASkDADcDACAHIAAgASACIAMgBCAFIAcgB0EUahBtNgIsDAoLIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0G4oQEpAwA3AxggB0GwoQEpAwA3AxAgB0GooQEpAwA3AwggB0GgoQEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwICyAHQSxqIAIgBCAIQQEQZyEAAkAgBCgCACIBQQRxIABBBkpyRQRAIAUgADYCGAwBCyAEIAFBBHI2AgALDAcLIAAgASACIAMgBCAFIAAoAgAoAhQRBgAMBwsgAEEIaiAAKAIIKAIYEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwFCyAFQRRqIAdBLGogAiAEIAgQ9QIMBAsgB0EsaiACIAQgCEEEEGchACAELQAAQQRxRQRAIAUgAEHsDms2AhQLDAMLIAZBJUYNAQsgBCAEKAIAQQRyNgIADAELIwBBEGsiACQAIAAgAjYCDAJAIAQCf0EGIAdBLGoiASAAQQxqIgIQKw0AGkEEIAggARA3EJQBQSVHDQAaIAEQPiACECtFDQFBAgsgBCgCAHI2AgALIABBEGokAAsgBygCLAsgB0EwaiQACz0AIAACfyABKAIEIAEoAgAiAWtBAnUgAksEQCAAIAEgAkECdGoqAgA4AgBBAQwBCyAAQQA6AABBAAs6AAQLSAECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEghASAHECUgBUEUaiAGQQxqIAIgBCABEPUCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEQaiAGQQxqIAIgBCABEPYCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEYaiAGQQxqIAIgBCABEPcCIAYoAgwgBkEQaiQACzAAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAECMgABAjIAAQH0ECdGoQbQtYAQF/IwBBIGsiBiQAIAZBuKEBKQMANwMYIAZBsKEBKQMANwMQIAZBqKEBKQMANwMIIAZBoKEBKQMANwMAIAAgASACIAMgBCAFIAYgBkEgaiIBEG0gASQAC4ICAQN/IAAoAgQgACgCACIEa0ECdSIDIAFJBEAjAEEgayIEJAACQCABIANrIgMgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASADQQJ0aiEDA0AgASADRgRAIAAgAzYCBAUgASACKgIAOAIAIAFBBGohAQwBCwsMAQsgBEEMaiAAIAEgACgCAGtBAnUgA2oQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgUoAggiASADQQJ0aiEDA0AgASADRwRAIAEgAioCADgCACABQQRqIQEMAQsLIAUgAzYCCCAAIAUQhQIgBRCBAgsgBEEgaiQADwsgASADSQRAIAAgBCABQQJ0ajYCBAsL9wsBAX8jAEEQayIHJAAgByABNgIMIARBADYCACAHIAMQJyAHEEkhCCAHECUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQABFwQXBRcGBxcXFwoXFxcXDg8QFxcXExUXFxcXFxcXAAECAwMXFwEXCBcXCQsXDBcNFwsXFxESFBYLIAAgBUEYaiAHQQxqIAIgBCAIEPoCDBgLIAAgBUEQaiAHQQxqIAIgBCAIEPkCDBcLIABBCGogACgCCCgCDBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMFgsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrQR5LckUEQCAFIAA2AgwMAQsgBCABQQRyNgIACwwVCyAHQqXavanC7MuS+QA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwUCyAHQqWytanSrcuS5AA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwTCyAHQQxqIAIgBCAIQQIQaCEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EMaiACIAQgCEEDEGghAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EMaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECwNACAIQQEgABA4EGBFDQAgABA/GgwBCwsgACABQQxqECwEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQQxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDPASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0H4nwEoAAA2AAcgB0HxnwEpAAA3AwAgByAAIAEgAiADIAQgBSAHIAdBC2oQbjYCDAwLCyAHQYCgAS0AADoABCAHQfyfASgAADYCACAHIAAgASACIAMgBCAFIAcgB0EFahBuNgIMDAoLIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0KlkOmp0snOktMANwMAIAcgACABIAIgAyAEIAUgByAHQQhqEG42AgwMCAsgB0EMaiACIAQgCEEBEGghAAJAIAQoAgAiAUEEcSAAQQZKckUEQCAFIAA2AhgMAQsgBCABQQRyNgIACwwHCyAAIAEgAiADIAQgBSAAKAIAKAIUEQYADAcLIABBCGogACgCCCgCGBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMBQsgBUEUaiAHQQxqIAIgBCAIEPgCDAQLIAdBDGogAiAEIAhBBBBoIQAgBC0AAEEEcUUEQCAFIABB7A5rNgIUCwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgwCQCAEAn9BBiAHQQxqIgEgAEEMaiICECwNABpBBCAIIAEQOBCVAUElRw0AGiABED8gAhAsRQ0BQQILIAQoAgByNgIACyAAQRBqJAALIAcoAgwLIAdBEGokAAtIAQJ/IwBBEGsiBiQAIAYgATYCDCAGQQhqIgcgAxAnIAcQSSEBIAcQJSAFQRRqIAZBDGogAiAEIAEQ+AIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRBqIAZBDGogAiAEIAEQ+QIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRhqIAZBDGogAiAEIAEQ+gIgBigCDCAGQRBqJAALLQAgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIUEQAAIgAQIyAAECMgABAfahBuCzsBAX8jAEEQayIGJAAgBkKlkOmp0snOktMANwMIIAAgASACIAMgBCAFIAZBCGogBkEQaiIBEG4gASQAC4MBAQR/IwBBwAFrIgAkACAAIAQ2ArwBIABBoAFqIgUgBSAFQRQQLkHXDSAAQbwBahDKASIHaiIEIAIQaSEGIAAgAhAnIAAQSCAAECUgBSAEIAAQbyABIAAgACAHQQJ0aiIBIAAgBiAFa0ECdGogBCAGRhsgASACIAMQhQEgAEHAAWokAAvRAwEHfwJ/IwBB0AJrIgYkACAGIAU3A8gCIAYgBDcDwAIgBkIlNwO4AiAGQbgCaiIHQQFyQd8VIAIoAgQQyQEhCCAGIAZBkAJqIgk2AowCEC4hAAJ/IAgEQCAGIAIoAgg2AiAgCSAAIAcgBkEgaiAGQcACahCDAwwBCyAGQZACaiAAIAZBuAJqIAZBwAJqEIIDCyEAIAZB4wA2AiAgBkGEAmpBACAGQSBqIgoQNiEJIAZBkAJqIQcCQCAAQR5OBEAQLiEAAn8gCARAIAYgAigCCDYCICAGQYwCaiAAIAZBuAJqIAogBkHAAmoQgQMMAQsgBkGMAmogACAGQbgCaiAGQcACahDIAQsiAEF/Rg0BIAkgBigCjAIQPCAGKAKMAiEHCyAHIAAgB2oiCyACEGkhDCAGQeMANgIgIAZBGGpBACAGQSBqIgcQNiEIAkAgBigCjAIiCiAGQZACakYEQCAHIQAMAQsgAEEDdBA0IgBFDQEgCCAAEDwgBigCjAIhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEP4CIAcQJSABIAAgBigCFCAGKAIQIAIgAxCFASAIEDUgCRA1IAZB0AJqJAAMAQsQPQALC8kDAQd/An8jAEHAAmsiBSQAIAUgBDkDuAIgBUIlNwOwAiAFQbACaiIGQQFyQcYfIAIoAgQQyQEhByAFIAVBkAJqIgg2AowCEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQbgCahCIAwwBCyAFQZACaiAAIAVBsAJqIAVBuAJqEIcDCyEAIAVB4wA2AiAgBUGEAmpBACAFQSBqIgkQNiEIIAVBkAJqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQYwCaiAAIAVBsAJqIAkgBUG4AmoQhgMMAQsgBUGMAmogACAFQbACaiAFQbgCahCFAwsiAEF/Rg0BIAggBSgCjAIQPCAFKAKMAiEGCyAGIAAgBmoiCiACEGkhCyAFQeMANgIgIAVBGGpBACAFQSBqIgYQNiEHAkAgBSgCjAIiCSAFQZACakYEQCAGIQAMAQsgAEEDdBA0IgBFDQEgByAAEDwgBSgCjAIhCQsgBUEMaiIGIAIQJyAJIAsgCiAAIAVBFGogBUEQaiAGEP4CIAYQJSABIAAgBSgCFCAFKAIQIAIgAxCFASAHEDUgCBA1IAVBwAJqJAAMAQsQPQALCxEAIAAgASACIAMgBEEAEKECCxEAIAAgASACIAMgBEEAEKICCxEAIAAgASACIAMgBEEBEKECCxEAIAAgASACIAMgBEEBEKICC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmQEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdTYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAEDkaBSAFQRxqIAVBDGoiACgCACgCABC7AyAAEPYBDAELCwsgBUEgaiQAIAILBQBB7CALewEEfyMAQdAAayIAJAAgACAENgJMIABBMGoiBSAFIAVBFBAuQdcNIABBzABqEMoBIgdqIgQgAhBpIQYgACACECcgABBJIAAQJSAFIAQgABB5IAEgACAAIAdqIgEgACAGIAVraiAEIAZGGyABIAIgAxCAASAAQdAAaiQAC8wDAQd/An8jAEGwAWsiBiQAIAYgBTcDqAEgBiAENwOgASAGQiU3A5gBIAZBmAFqIgdBAXJB3xUgAigCBBDJASEIIAYgBkHwAGoiCTYCbBAuIQACfyAIBEAgBiACKAIINgIgIAkgACAHIAZBIGogBkGgAWoQgwMMAQsgBkHwAGogACAGQZgBaiAGQaABahCCAwshACAGQeMANgIgIAZB5ABqQQAgBkEgaiIKEDYhCSAGQfAAaiEHAkAgAEEeTgRAEC4hAAJ/IAgEQCAGIAIoAgg2AiAgBkHsAGogACAGQZgBaiAKIAZBoAFqEIEDDAELIAZB7ABqIAAgBkGYAWogBkGgAWoQyAELIgBBf0YNASAJIAYoAmwQPCAGKAJsIQcLIAcgACAHaiILIAIQaSEMIAZB4wA2AiAgBkEYakEAIAZBIGoiBxA2IQgCQCAGKAJsIgogBkHwAGpGBEAgByEADAELIABBAXQQNCIARQ0BIAggABA8IAYoAmwhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEIQDIAcQJSABIAAgBigCFCAGKAIQIAIgAxCAASAIEDUgCRA1IAZBsAFqJAAMAQsQPQALCwkAIAEgABEAAAvEAwEHfwJ/IwBBoAFrIgUkACAFIAQ5A5gBIAVCJTcDkAEgBUGQAWoiBkEBckHGHyACKAIEEMkBIQcgBSAFQfAAaiIINgJsEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQZgBahCIAwwBCyAFQfAAaiAAIAVBkAFqIAVBmAFqEIcDCyEAIAVB4wA2AiAgBUHkAGpBACAFQSBqIgkQNiEIIAVB8ABqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQewAaiAAIAVBkAFqIAkgBUGYAWoQhgMMAQsgBUHsAGogACAFQZABaiAFQZgBahCFAwsiAEF/Rg0BIAggBSgCbBA8IAUoAmwhBgsgBiAAIAZqIgogAhBpIQsgBUHjADYCICAFQRhqQQAgBUEgaiIGEDYhBwJAIAUoAmwiCSAFQfAAakYEQCAGIQAMAQsgAEEBdBA0IgBFDQEgByAAEDwgBSgCbCEJCyAFQQxqIgYgAhAnIAkgCyAKIAAgBUEUaiAFQRBqIAYQhAMgBhAlIAEgACAFKAIUIAUoAhAgAiADEIABIAcQNSAIEDUgBUGgAWokAAwBCxA9AAsLEQAgACABIAIgAyAEQQAQowILEQAgACABIAIgAyAEQQAQpAILEQAgACABIAIgAyAEQQEQowILoQEBAn8jAEHgAGsiBSQAIAVBDGoiBCABIAIgAygCACAAEQgAQdQAEFMiACAEKQIANwIAIAAgBC0ACDoACCAAQQxqIARBDGoQgQEaIABBGGogBEEYahCBARogAEEkaiAEQSRqEIEBGiAAQTBqIARBMGoQgQEaIABBPGogBEE8ahCBARogAEHIAGogBEHIAGoQgQEaIAQQxwMgBUHgAGokACAACxEAIAAgASACIAMgBEEBEKQCC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmwEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdzYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAECAaBSAFQRxqIAVBDGoiACgCACwAABC/AyAAEPgBDAELCwsgBUEgaiQAIAIL5gIBAX8jAEHAAmsiACQAIAAgAjYCuAIgACABNgK8AiAAQcQBahAkIQYgAEEQaiICIAMQJyACEEhB0J8BQeqfASAAQdABahBvIAIQJSAAQbgBahAkIgMgAxAoECEgACADQQAQIiIBNgK0ASAAIAI2AgwgAEEANgIIA0ACQCAAQbwCaiAAQbgCahArDQAgACgCtAEgAxAfIAFqRgRAIAMQHyECIAMgAxAfQQF0ECEgAyADECgQISAAIAIgA0EAECIiAWo2ArQBCyAAQbwCaiICEDdBECABIABBtAFqIABBCGpBACAGIABBEGogAEEMaiAAQdABahCYAQ0AIAIQPhoMAQsLIAMgACgCtAEgAWsQISADECMQLiAAIAU2AgQgAEEEahCNA0EBRwRAIARBBDYCAAsgAEG8AmogAEG4AmoQKwRAIAQgBCgCAEECcjYCAAsgACgCvAIgAxAgGiAGECAaIABBwAJqJAAL4QQCA38BfgJ/IwBB8AJrIgAkACAAIAI2AugCIAAgATYC7AIgAEHcAWogAyAAQfABaiAAQewBaiAAQegBahD7ASAAQdABahAkIgEgARAoECEgACABQQAQIiICNgLMASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWQQAhAwNAAkACQAJAIABB7AJqIABB6AJqECsNACAAKALMASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCzAELIABB7AJqEDcgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQ+gENACADDQFBACEDIAAoAswBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQdwBahAfRQ0AIAAtABdBAXFFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEI4DIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEEMgAEHsAmogAEHoAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC7AIgARAgGiAAQdwBahAgGiAAQfACaiQADAMLQQEhAwsgAEHsAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCXAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBIIQEgBhAlIAYgAxAnIAYQmQEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzQEgBkY6AAAgBigCHCEBA0AgA0EMaxA5IgMgBkcNAAsLIAZBIGokACABC+YCAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAEHEAWoQJCEGIABBEGoiAiADECcgAhBJQdCfAUHqnwEgAEHQAWoQeSACECUgAEG4AWoQJCIDIAMQKBAhIAAgA0EAECIiATYCtAEgACACNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAMQHyABakYEQCADEB8hAiADIAMQH0EBdBAhIAMgAxAoECEgACACIANBABAiIgFqNgK0AQsgAEH8AWoiAhA4QRAgASAAQbQBaiAAQQhqQQAgBiAAQRBqIABBDGogAEHQAWoQmgENACACED8aDAELCyADIAAoArQBIAFrECEgAxAjEC4gACAFNgIEIABBBGoQjQNBAUcEQCAEQQQ2AgALIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAMQIBogBhAgGiAAQYACaiQAC+EEAgN/AX4CfyMAQZACayIAJAAgACACNgKIAiAAIAE2AowCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQ/wEgAEHEAWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCwAEgACAAQSBqNgIcIABBADYCGCAAQQE6ABcgAEHFADoAFkEAIQMDQAJAAkACQCAAQYwCaiAAQYgCahAsDQAgACgCwAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2AsABCyAAQYwCahA4IABBF2ogAEEWaiACIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEP4BDQAgAw0BQQAhAyAAKALAASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHQAWoQH0UNACAALQAXQQFxRQ0AIAAoAhwiAyAAQSBqa0GfAUoNACAAIANBBGo2AhwgAyAAKAIYNgIACyAAIAIgACgCwAEgBBCOAyAAKQMAIQkgBSAAKQMINwMIIAUgCTcDACAAQdABaiAAQSBqIAAoAhwgBBBDIABBjAJqIABBiAJqECwEQCAEIAQoAgBBAnI2AgALIAAoAowCIAEQIBogAEHQAWoQIBogAEGQAmokAAwDC0EBIQMLIABBjAJqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCPAzkDACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCRAzgCACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJIDNwMAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQACwcAIAAoAgALiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJUDOwEAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAuLAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQaiEGIABBxAFqIAMgAEH3AWoQrwEgAEG4AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAEQHyACakYEQCABEB8hAyABIAEQH0EBdBAhIAEgARAoECEgACADIAFBABAiIgJqNgK0AQsgAEH8AWoiAxA4IAYgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakHQnwEQmgENACADED8aDAELCwJAIABBxAFqEB9FDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEIAYQlwM2AgAgAEHEAWogAEEQaiAAKAIMIAQQQyAAQfwBaiAAQfgBahAsBEAgBCAEKAIAQQJyNgIACyAAKAL8ASABECAaIABBxAFqECAaIABBgAJqJAALmIwBAy5/BX0CfCMAQRBrIhkkACAZIAM2AgwgGUEANgIIIBlCADcCACAZIAEgASACaiICIAIgAWsQwAMjAEHgAGsiIiQAICJBCGohDSAZKAIEIBkoAgAiAWshAiMAQcABayITJAAgE0EANgKgASATQgA3A5gBIBNBADYCsAEgE0IANwKoASATQbQBaiIaQQA2AgggGkIANwIAIBpBgMAAELcDIBpBgMAAEJgDIBNBDGpBAEEw/AsAIBMgAjYCCCATIAE2AgQCQAJ/IBNBBGohAgJ/QXpB5RstAABBMUcNABpBfiACRQ0BGiACQQA2AhggAigCICIBRQRAIAJBADYCKCACQS82AiBBLyEBCyACKAIkRQRAIAJBMDYCJAtBfCACKAIoQQFB0DcgAREDACIDRQ0BGiACIAM2AhwgA0EANgI4IAMgAjYCACADQbT+ADYCBEF+IQQCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiDARAIAEoAihBD0cNAQsgAUEPNgIoIAFBBjYCDAwBCyACKAIoIAwgBREBACABQQA2AjggAigCICABQQ82AiggAUEGNgIMRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEEIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQgA3AjwgAUEANgIkIAFBgIACNgIYIAFCgICAgHA3AhAgAUK0/gA3AgQgAUKBgICAcDcCxDcgASABQbQKaiIFNgJwIAEgBTYCVCABIAU2AlALQQAgBEUNABogAigCKCADIAIoAiQRAQAgAkEANgIcIAQLC0UEQCATQQA2AqwBAkADQCATIBooAgAiATYCECATIBooAgQgAWs2AhRBACEMIwBBEGsiFyQAQX4hHAJAIBNBBGoiCkUNACAKKAIgRQ0AIAooAiRFDQAgCigCHCIGRQ0AIAYoAgAgCkcNACAGKAIEIgVBtP4Aa0EfSw0AIAooAgwiEEUNACAKKAIAIgFFBEAgCigCBA0BCyAFQb/+AEYEQCAGQcD+ADYCBEHA/gAhBQsgBkHcAGohKiAGQfQFaiEgIAZB2ABqISMgBkHwAGohISAGQbQKaiEfIAZB9ABqIRYgBigCQCEDIAYoAjwhByAKKAIEIiQhBCAKKAIQIg8hFQJAAkACQAJAAkADQEF9IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBtP4Aaw4fBwYKDRA5Ojs8BRUWFhcYGQQcAiUmASgAKh0eA0BCQ0QLIAYoAkwhCAwoCyAGKAJMIQgMJQsgBigCbCEIDCELIAYoAgwhBQw5CyADQQ5PDRYgBEUNPCADQQhqIQIgAUEBaiEFIARBAWshCCABLQAAIAN0IAdqIQcgA0EFTQ0VIAUhASAIIQQgAiEDDBYLIANBIE8NDiAERQ07IAFBAWohAiAEQQFrIQUgAS0AACADdCAHaiEHIANBF00NDSACIQEgBSEEDA4LIANBEE8NAiAERQ06IANBCGohAiABQQFqIQUgBEEBayEIIAEtAAAgA3QgB2ohByADQQdNDQEgBSEBIAghBCACIQMMAgsgBigCDCIJRQ0XAkAgA0EQTw0AIARFDTogA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAFIQEgCCEEIAIhAwwBCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgw8CyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAlBAnFFIAdBn5YCR3JFBEAgBigCKEUEQCAGQQ82AigLQQAhByAGQQBBAEEAEFEiAjYCHCAXQZ+WAjsADCACIBdBDGpBAhBRIQIgBkG1/gA2AgQgBiACNgIcQQAhAyAGKAIEIQUMNwsgBigCJCICBEAgAkF/NgIwCyAHQQh0QYD+A3EgB0EIdmpBH3BFIAlBAXFxRQRAIApBxw42AhggBkHR/gA2AgQgBigCBCEFDDcLIAdBD3FBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw3CyAHQQR2IgJBD3EiCEEIaiEFIAhBB00gBigCKCIJBH8gCQUgBiAFNgIoIAULIAVPcUUEQCADQQRrIQMgCkHREDYCGCAGQdH+ADYCBCACIQcgBigCBCEFDDcLQQAhAyAGQQA2AhQgBkGAAiAIdDYCGCAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBvf4AQb/+ACAHQYDAAHEbNgIEQQAhByAGKAIEIQUMNgsgCEUEQCAFIQFBACEEIAIhAyAMIQIMOgsgA0EQciEDIARBAmshBCABLQABIAJ0IAdqIQcgAUECaiEBCyAGIAc2AhQgB0H/AXFBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAHQYDAA3EEQCAKQesJNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAGKAIkIgIEQCACIAdBCHZBAXE2AgALAkAgB0GABHFFDQAgBi0ADEEEcUUNACAXQQg6AAwgFyAHQQh2OgANIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG2/gA2AgRBACEDQQAhBwwBCyADQR9LDQELIARFDTUgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EXSwRAIAIhASAFIQQMAQsgA0EIaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDDcLIAFBAmohAiAEQQJrIQUgAS0AASAIdCAHaiEHIANBD0sEQCACIQEgBSEEDAELIANBEGohCCAFRQRAIAIhAUEAIQQgCCEDIAwhAgw3CyABQQNqIQIgBEEDayEFIAEtAAIgCHQgB2ohByADQQdLBEAgAiEBIAUhBAwBCyADQRhqIQMgBUUEQCACIQEMNgsgBEEEayEEIAEtAAMgA3QgB2ohByABQQRqIQELIAYoAiQiAgRAIAIgBzYCBAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHNgAMIAYgBigCHCAXQQxqQQQQUTYCHAsgBkG3/gA2AgRBACEDQQAhBwwBCyADQQ9LDQELIARFDTIgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EHSwRAIAIhASAFIQQMAQsgA0EIaiEDIAVFBEAgAiEBDDMLIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGKAIkIgIEQCACIAdBCHY2AgwgAiAHQf8BcTYCCAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHOwAMIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG4/gA2AgRBACEFQQAhA0EAIQcgBigCFCICQYAIcQ0BDCcLIAYoAhQiAkGACHFFBEAgAyEFDCcLIAchBSADQQ9LDQELIARFBEBBACEEIAUhByAMIQIMMQsgAUEBaiEIIARBAWshCSABLQAAIAN0IAVqIQcgA0EHSwRAIAghASAJIQQMAQsgA0EIaiEDIAlFBEAgCCEBDDALIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGIAc2AkQgBigCJCIDBEAgAyAHNgIUC0EAIQMCQCACQYAEcUUNACAGLQAMQQRxRQ0AIBcgBzsADCAGIAYoAhwgF0EMakECEFE2AhwLQQAhBwwlCyADQQhqIQggBUUEQCACIQFBACEEIAghAyAMIQIMLwsgAUECaiECIARBAmshBSABLQABIAh0IAdqIQcgA0EPSwRAIAIhASAFIQQMAQsgA0EQaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDC8LIAFBA2ohAiAEQQNrIQUgAS0AAiAIdCAHaiEHIANBB0sEQCACIQEgBSEEDAELIANBGGohAyAFRQRAIAIhAQwuCyAEQQRrIQQgAS0AAyADdCAHaiEHIAFBBGohAQsgBiAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciICNgIcIAogAjYCMCAGQb7+ADYCBEEAIQdBACEDCyAGKAIQRQRAIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8QQIhHAwvCyAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBv/4ANgIECwJ/AkAgBigCCEUEQCADIANBAksNAhogBA0BDC0LIAZBzv4ANgIEIAcgA0EHcXYhByADQXhxIQMgBigCBCEFDCkLIARBAWshBCABLQAAIAN0IAdqIQcgAUEBaiEBIANBCHILIAYgB0EBcTYCCEHB/gAhBQJAAkACQAJAAkAgB0EBdkEDcUEBaw4DAAECAwsgBkGA3AA2AlAgBkKJgICA0AA3AlggBkGA7AA2AlQgBkHH/gA2AgQMAwtBxP4AIQUMAQsgCkH0EDYCGEHR/gAhBQsgBiAFNgIEC0EDayEDIAdBA3YhByAGKAIEIQUMJwsgByADQQdxdiEHAn8gA0F4cSIFIANBH0sNABogBEUEQEEAIQQgBSEDIAwhAgwsCyAFQQhqIQggAUEBaiECIARBAWshCSABLQAAIAV0IAdqIQcgA0EXSwRAIAIhASAJIQQgCAwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwsCyAFQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAIhASALIQQgCQwBCyALRQRAIAIhAUEAIQQgCSEDIAwhAgwsCyAFQRhqIQUgAUEDaiECIARBA2shCCABLQACIAl0IAdqIQcgA0EHSwRAIAIhASAIIQQgBQwBCyAIRQRAIAIhAUEAIQQgBSEDIAwhAgwsCyAEQQRrIQQgAS0AAyAFdCAHaiEHIAFBBGohAUEgCyEDIAdB//8DcSICIAdBf3NBEHZHBEAgCkGdCzYCGCAGQdH+ADYCBCAGKAIEIQUMJwsgBkHC/gA2AgQgBiACNgJEQQAhB0EAIQMLIAZBw/4ANgIECyAGKAJEIgIEQCACIAQgAiAESRsiAiAPIAIgD0kbIgJFBEAgDCECDCoLIAIEQCAQIAEgAvwKAAALIAYgBigCRCACazYCRCACIBBqIRAgDyACayEPIAEgAmohASAEIAJrIQQgBigCBCEFDCULIAZBv/4ANgIEIAYoAgQhBQwkCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgwoCyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAYgB0EfcSICQYECajYCZCAGIAdBBXZBH3EiBUEBajYCaCAGIAdBCnZBD3FBBGoiCTYCYCADQQ5rIQMgB0EOdiEHIAVBHkkgAkEdTXFFBEAgCkH5CjYCGCAGQdH+ADYCBCAGKAIEIQUMIwsgBkHF/gA2AgRBACEFIAZBADYCbAwGCyAGKAJsIgUgBigCYCIJSQ0FDAYLIA9FDQ0gECAGKAJEOgAAIAZByP4ANgIEIA9BAWshDyAQQQFqIRAgBigCBCEFDCALIAYoAgwiBUUEQEEAIQUMAwsCQCADQR9LBEAgASEIDAELIARFDSMgA0EIaiECIAFBAWohCCAEQQFrIQkgAS0AACADdCAHaiEHIANBF0sEQCAJIQQgAiEDDAELIAlFBEAgCCEBQQAhBCACIQMgDCECDCULIANBEGohCSABQQJqIQggBEECayELIAEtAAEgAnQgB2ohByADQQ9LBEAgCyEEIAkhAwwBCyALRQRAIAghAUEAIQQgCSEDIAwhAgwlCyADQRhqIQIgAUEDaiEIIARBA2shCyABLQACIAl0IAdqIQcgA0EHSwRAIAshBCACIQMMAQsgC0UEQCAIIQFBACEEIAIhAyAMIQIMJQsgA0EgciEDIAFBBGohCCAEQQRrIQQgAS0AAyACdCAHaiEHCyAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBUEEcSICRSAPIBVGcgR/IAIFIBAgAWshAiAGKAIcIQUgBgJ/IAYoAhQEQCAFIAIgARBRDAELIAUgAiABELMBCyIBNgIcIAogATYCMCAGKAIMIgVBBHELRQ0BIAYoAhwgByAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciAGKAIUG0YNASAKQfUONgIYIAZB0f4ANgIEIAghASAPIRUgBigCBCEFDB8LIAZBwP4ANgIEDBULIAghAUEAIQdBACEDIA8hFQsgBkHP/gA2AgQMGwsDQCADQQJNBEAgBEUNICAEQQFrIQQgAS0AACADdCAHaiEHIANBCHIhAyABQQFqIQELIAYgBUEBaiICNgJsIBYgBUEBdC8B0FtBAXRqIAdBB3E7AQAgA0EDayEDIAdBA3YhByACIgUgCUcNAAsgCSEFCyAFQRJNBEBBACEIIAUiAkEDcSIMQQNHBEADQCAWIAJBAXQvAdBbQQF0akEAOwEAIAJBAWohAiAMIAhBAWoiCHNBA0cNAAsLIAVBD00EQANAIBYgAkEBdCIFLwHQW0EBdGpBADsBACAWIAVB0tsAai8BAEEBdGpBADsBACAWIAVB1NsAai8BAEEBdGpBADsBACAWIAVB1tsAai8BAEEBdGpBADsBACACQQRqIgJBE0cNAAsLIAZBEzYCbAsgBkEHNgJYIAYgHzYCUCAGIB82AnBBACEIQQAgFkETICEgIyAgEOMBIgwEQCAKQdIJNgIYIAZB0f4ANgIEIAYoAgQhBQwbCyAGQcb+ADYCBCAGQQA2AmxBACEMCyAGKAJkIh0gBigCaGoiGCAISwRAQX8gBigCWHRBf3MhGyAGKAJQIRQDQCADIQ4gBCEFIAEhAgJAAkACQAJAAkACQCAUIAcgG3EiEkECdGotAAEiCyADTQRAIAMhCQwBCwNAIAVFDQIgAi0AACAOdCELIAJBAWohAiAFQQFrIQUgDkEIaiIJIQ4gCSAUIAcgC2oiByAbcSISQQJ0ai0AASILSQ0ACwsgFCASQQJ0ai8BAiIDQQ9NBEAgBiAIQQFqIgE2AmwgFiAIQQF0aiADOwEAIAkgC2shAyAHIAt2IQcgASEIDAULAn8CfwJAAkACQCADQRBrDgIAAQILIAtBAmoiASAJSwRAA0AgBUUNHiAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2shAyAHIAt2IQkgCEUEQCAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgCSEHIAYoAgQhBQwlCyADQQJrIQMgCUECdiEHIAlBA3FBA2ohCyAIQQF0IBZqQQJrLwEADAMLIAtBA2oiASAJSwRAA0AgBUUNHSAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBA2shAyAHIAt2IgFBA3YhByABQQdxQQNqDAELIAtBB2oiASAJSwRAA0AgBUUNHCAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBB2shAyAHIAt2IgFBB3YhByABQf8AcUELagshC0EACyEEIAggC2ogGEsNAkEAIQkgC0EDcSIORQ0BIAshAQNAIBYgCEEBdGogBDsBACAIQQFqIQggAUEBayEBIAlBAWoiCSAORw0ACwwDCyABIARqIQEgAyAEQQN0aiEDDCILIAshAQwBCyAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgBigCBCEFDB0LIAtBBE8EQANAIBYgCEEBdGoiCSAEOwEAIAkgBDsBAiAJIAQ7AQQgCSAEOwEGIAhBBGohCCABQQRrIgENAAsLIAYgCDYCbAsgAiEBIAUhBCAIIBhJDQALCyAGLwH0BEUEQCAKQaIONgIYIAZB0f4ANgIEIAYoAgQhBQwaCyAGQQk2AlggBiAfNgJQIAYgHzYCcEEBIBYgHSAhICMgIBDjASIMBEAgCkG2CTYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkEGNgJcIAYgBigCcDYCVEECIBYgBigCZEEBdGogBigCaCAhICogIBDjASIMBEAgCkGECjYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkHH/gA2AgRBACEMCyAGQcj+ADYCBAsgBEEGSSAPQYICSXJFBEAgCiAPNgIQIAogEDYCDCAKIAQ2AgQgCiABNgIAIAYgAzYCQCAGIAc2AjwgCigCHCIQKAI0IgtBB3EhJSALIBVqISsgCyAQKAIsIixqIS0gCigCDCIBIAooAhAiAmoiHUGBAmshJiABIAIgFWtqIS4gCigCACIIIAooAgRqQQVrISdBfyAQKAJcdEF/cyEvQX8gECgCWHRBf3MhMCAQKAJUISggECgCUCEpIBAoAkAhBSAQKAI8IQ4gECgCOCEHIBAoAjAhMQNAIAVBDk0EfyAILQAAIAV0IA5qIAgtAAEgBUEIanRqIQ4gCEECaiEIIAVBEHIFIAULICkgDiAwcUECdGoiAi0AASIDayEFIA4gA3YhDgJAAkACQAJAAkAgEAJ/IAoCfwJAA0AgAi0AACIDRQRAIAEgAi0AAjoAACABQQFqIQEMCAsgA0EQcQRAIAIvAQIhDwJ/IANBD3EiAkUEQCAIIQMgDgwBCwJ/IAIgBU0EQCAFIQQgCAwBCyAFQQhqIQQgCC0AACAFdCAOaiEOIAhBAWoLIQMgBCACayEFIA5BfyACdEF/c3EgD2ohDyAOIAJ2CyEEIAVBDk0EQCADLQAAIAV0IARqIAMtAAEgBUEIanRqIQQgBUEQciEFIANBAmohAwsgBSAoIAQgL3FBAnRqIgItAAEiCGshBSAEIAh2IQ4gAi0AACIEQRBxDQIDQCAEQcAAcUUEQCAFICggAi8BAkECdGogDkF/IAR0QX9zcUECdGoiAi0AASIEayEFIA4gBHYhDiACLQAAIgRBEHFFDQEMBAsLIAMhCEHwEQwDCyADQcAAcUUEQCAFICkgAi8BAkECdGogDkF/IAN0QX9zcUECdGoiAi0AASIDayEFIA4gA3YhDgwBCwtBv/4AIANBIHENAhpB1BEMAQsgAi8BAiEUAn8gBEEPcSICIAVNBEAgBSEEIAMMAQsgAy0AACAFdCAOaiEOIANBAWogAiAFQQhqIgRNDQAaIAMtAAEgBHQgDmohDiAFQRBqIQQgA0ECagshCCAOQX8gAnRBf3NxIRggBCACayEFIA4gAnYhDiAUIBhqIhsgASAuayICTQ0DIBsgAmsiCSAxTQ0CIBAoAsQ3RQ0CQZQPCzYCGEHR/gALNgIEDAQLAkACQCALRQRAIAcgLCAJa2ohBCAJIA9PBEAgASECDAMLQQAhEiABIQIgCSIDQQdxIh4EQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCASQQFqIhIgHkcNAAsLIBUgGCAdaiAUamsgAWpBeEsNAQNAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsMAQsgCSALSwRAIAcgLSAJa2ohBCAJIAtrIgkgD08EQCABIQIMAwtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgKyAYIB1qIBRqayABakF4TQRAA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgCyAPIAlrIg9PBEAgByEEDAMLQQAhASALIQMgByEEICUEQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCABQQFqIgEgJUcNAAsLIAtBCE8EQANAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsLIAIgG2shBCAPIAtrIQ8MAgsgByALIAlraiEEIAkgD08EQCABIQIMAgtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgFSAYIB1qIBRqayABakF4Sw0AA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgAiAbayEEIA8gCWshDwsCQCAPQQNJDQAgD0EDayIBQQNuIgNBA3FBA0cEQCADQQFqQQNxIQlBACEDA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgD0EDayEPIAJBA2ohAiAEQQNqIQQgA0EBaiIDIAlHDQALCyABQQlJDQADQCACIAQtAAA6AAAgAiAELQABOgABIAIgBC0AAjoAAiACIAQtAAM6AAMgAiAELQAEOgAEIAIgBC0ABToABSACIAQtAAY6AAYgAiAELQAHOgAHIAIgBC0ACDoACCACIAQtAAk6AAkgAiAELQAKOgAKIAIgBC0ACzoACyACQQxqIQIgBEEMaiEEIA9BDGsiD0ECSw0ACwsgD0UEQCACIQEMAwsgAiAELQAAOgAAIA9BAkYNASACQQFqIQEMAgsgASAbayEDA0AgASICIAMiBC0AADoAACACIAMtAAE6AAEgAiADLQACOgACIAJBA2ohASADQQNqIQMgD0EDayIPQQJLDQALIA9FDQEgAiADLQAAOgADIA9BAkcEQCACQQRqIQEMAgsgAiAELQAEOgAEIAJBBWohAQwBCyACIAQtAAE6AAEgAkECaiEBCyAIICdPDQAgASAmSQ0BCwsgCiABNgIMIAogCCAFQQN2ayICNgIAIAogJiABa0GBAmo2AhAgCiAnIAJrQQVqNgIEIBAgBUEHcSIBNgJAIBAgDkF/IAF0QX9zcTYCPCAGKAJAIQMgBigCPCEHIAooAgQhBCAKKAIAIQEgCigCECEPIAooAgwhECAGKAIEQb/+AEcNDyAGQX82Asg3IAYoAgQhBQwYCyAGQQA2Asg3IAMhCCAEIQUgASECAkAgBigCUCIUIAdBfyAGKAJYdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNDSACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyAOIQMgCy8BAiESAkAgCy0AACILQQFrQf8BcUEOSwRAQQAhAyACIQEgBSEEDAELIAUhBCACIQECQCAJIgggAyAUIBJBAnRqIhQgB0F/IAMgC2p0QX9zIhhxIAN2QQJ0aiISLQABIg5qTwRAIAghCwwBCwNAIARFDQ0gAS0AACAIdCEOIAFBAWohASAEQQFrIQQgCEEIaiILIQggAyAUIAcgDmoiByAYcSADdkECdGoiEi0AASIOaiALSw0ACwsgCyADayEJIAcgA3YhByASLQAAIQsgEi8BAiESCyAGIBJB//8DcTYCRCAGIAMgDmo2Asg3IAkgDmshAyAHIA52IQcgC0H/AXEiAkUEQCAGQc3+ADYCBCAGKAIEIQUMGAsgAkEgcQRAIAZBv/4ANgIEIAZBfzYCyDcgBigCBCEFDBgLIAJBwABxBEAgCkHUETYCGCAGQdH+ADYCBCAGKAIEIQUMGAsgBkHJ/gA2AgQgBiACQQ9xIgg2AkwLIAEhCyAEIQkCQCAIRQRAIAYoAkQhAgwBCyADIQUgASECIAMgCEkEQANAIARFDQsgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCRCAHQX8gCHRBf3NxaiICNgJEIAUgCGshAyAHIAh2IQcLIAZByv4ANgIEIAYgAjYCzDcLIAMhCCAEIQUgASECAkAgBigCVCIUIAdBfyAGKAJcdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNCCACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyALLwECIRIgBgJ/IAstAAAiCEEQTwRAIAIhASAFIQQgDiELIAYoAsg3DAELIAUhBCACIQECQCAJIgMgDiAUIBJBAnRqIhQgB0F/IAggDmp0QX9zIhhxIA52QQJ0aiISLQABIgtqTwRAIAMhCAwBCwNAIARFDQggAS0AACADdCELIAFBAWohASAEQQFrIQQgA0EIaiIIIQMgDiAUIAcgC2oiByAYcSAOdkECdGoiEi0AASILaiAISw0ACwsgCCAOayEJIAcgDnYhByASLQAAIQggEi8BAiESIAYoAsg3IA5qCyALajYCyDcgCSALayEDIAcgC3YhByAIQcAAcQRAIApB8BE2AhggBkHR/gA2AgQgBigCBCEFDBYLIAZBy/4ANgIEIAYgCEEPcSIINgJMIAYgEkH//wNxNgJICyABIQsgBCEJIAgEQCADIQUgASECIAMgCEkEQANAIARFDQYgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCSCAHQX8gCHRBf3NxajYCSCAHIAh2IQcgBSAIayEDCyAGQcz+ADYCBAsgDw0BC0EAIQ8gDCECDBYLAn8gBigCSCICIBUgD2siBUsEQAJAIAIgBWsiAiAGKAIwTQ0AIAYoAsQ3RQ0AIApBlA82AhggBkHR/gA2AgQgBigCBCEFDBQLAn8gBigCNCIFIAJJBEAgBigCOCAGKAIsIAIgBWsiAmtqDAELIAYoAjggBSACa2oLIQUgAiAGKAJEIgggAiAISRsMAQsgECACayEFIAYoAkQiCAshAiAGIAggAiAPIAIgD0kbIglrNgJEIAlBAWshC0EAIQggCUEHcSIORQ0GIAkhAgNAIBAgBS0AADoAACACQQFrIQIgEEEBaiEQIAVBAWohBSAIQQFqIgggDkcNAAsMBwsgCSALaiEBIAMgCUEDdGohAwwTCyACIAVqIQEgCSAFQQN0aiEDDBILIAEgBGohASADIARBA3RqIQMMEQsgCSALaiEBIAMgCUEDdGohAwwQCyACIAVqIQEgCSAFQQN0aiEDDA8LIAEgBGohASADIARBA3RqIQMMDgsgCSECCyALQQdPBEADQCAQIAUtAAA6AAAgECAFLQABOgABIBAgBS0AAjoAAiAQIAUtAAM6AAMgECAFLQAEOgAEIBAgBS0ABToABSAQIAUtAAY6AAYgECAFLQAHOgAHIBBBCGohECAFQQhqIQUgAkEIayICDQALCyAPIAlrIQ8gBigCRA0AIAZByP4ANgIEIAYoAgQhBQwJCyAGKAIEIQUMCAtBACEEIAIhASAJIQMgDCECDAsLIAYoAiQiAgRAIAJBADYCEAsgBSEDCyAGQbn+ADYCBAsCQCAGKAIUIghBgAhxRQ0AIAYoAkQiBSAEIAQgBUsbIgIEQAJAIAYoAiQiCUUNACAJKAIQIg5FDQAgCSgCGCILIAkoAhQgBWsiBU0NACALIAVrIAIgAiAFaiALSxsiCARAIAUgDmogASAI/AoAAAsgBigCFCEICwJAIAhBgARxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgAhBRNgIcCyAGIAYoAkQgAmsiBTYCRCAEIAJrIQQgASACaiEBCyAFRQ0AIAwhAgwJCyAGQbr+ADYCBCAGQQA2AkQLAkAgBi0AFUEIcQRAQQAhBSAERQ0IA0AgASAFai0AACECAkAgBigCJCIIRQ0AIAgoAhwiC0UNACAGKAJEIgkgCCgCIE8NACAGIAlBAWo2AkQgCSALaiACOgAACyACQQAgBCAFQQFqIgVLGw0ACwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACAGIAYoAhwgASAFEFE2AhwLIAEgBWohASAEIAVrIQQgAkUNASAMIQIMCQsgBigCJCICRQ0AIAJBADYCHAsgBkG7/gA2AgQgBkEANgJECwJAIAYtABVBEHEEQEEAIQUgBEUNBwNAIAEgBWotAAAhAgJAIAYoAiQiCEUNACAIKAIkIgtFDQAgBigCRCIJIAgoAihPDQAgBiAJQQFqNgJEIAkgC2ogAjoAAAsgAkEAIAQgBUEBaiIFSxsNAAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgBRBRNgIcCyABIAVqIQEgBCAFayEEIAJFDQEgDCECDAgLIAYoAiQiAkUNACACQQA2AiQLIAZBvP4ANgIECyAGKAIUIglBgARxBEACQCADQQ9LBEAgASEFDAELIARFDQYgA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAIIQQgAiEDDAELIAhFBEAgBSEBQQAhBCACIQMgDCECDAgLIANBEHIhAyABQQJqIQUgBEECayEEIAEtAAEgAnQgB2ohBwsCQCAGLQAMQQRxRQ0AIAcgBi8BHEYNACAKQbkPNgIYIAZB0f4ANgIEIAUhASAGKAIEIQUMAwtBACEHQQAhAyAFIQELIAYoAiQiAgRAIAJBATYCMCACIAlBCXZBAXE2AiwLIAZBAEEAQQAQUSICNgIcIAogAjYCMCAGQb/+ADYCBCAGKAIEIQUMAQsgBUUNASAGKAIURQ0BAkAgA0EfSwRAIAEhAgwBCyAERQ0EIANBCGohCCABQQFqIQIgBEEBayEJIAEtAAAgA3QgB2ohByADQRdLBEAgCSEEIAghAwwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwGCyADQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAshBCAJIQMMAQsgC0UEQCACIQFBACEEIAkhAyAMIQIMBgsgA0EYaiEIIAFBA2ohAiAEQQNrIQsgAS0AAiAJdCAHaiEHIANBB0sEQCALIQQgCCEDDAELIAtFBEAgAiEBQQAhBCAIIQMgDCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAEQQBMDQIgASADIAIgAyAFahCeAiAERQ0CIAMgCSAE/AoAAAwCCyABIAMgAiADIAVqEJ4CIAVFDQEgAyAJIAX8CgAADAELIAUgCEEMaiABIAUgASgCAGsgAmoQtAEgAyABKAIAayABEMYBIgIoAggiBGohBQNAIAQgBUcEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAwBCwsgAiAFNgIIIAIoAgQaIAEoAgQgA2siBARAIAIoAgggAyAE/AoAAAsgAiACKAIIIAEoAgQgA2tqNgIIIAEgAzYCBCACKAIEIAEoAgAiBCADa2ohBSADIARrIgMEQCAFIAQgA/wKAAALIAIgBTYCBCABIAEoAgAiAzYCBCABIAIoAgQ2AgAgAiADNgIEIAEoAgQhAyABIAIoAgg2AgQgAiADNgIIIAEoAgghAyABIAIoAgw2AgggAiADNgIMIAIgAigCBDYCACACELoBCyAIQSBqJAAgHEEBRw0ACyAKEJsCIBoQOiATQZgBaiIDIBMoAqgBIgIgEygCrAEgAmsQsQIgARA6IApBADYCXCAKQfD7ADYCQCAKQcj7ADYCACAKQdz7ADYCCCAKQYD8ACgCACIBNgIAIAogAUEMaygCAGpBhPwAKAIANgIAIApBADYCBCAKIAooAgBBDGsoAgBqIgJBADYCFCACIApBDGoiATYCGCACQQA2AgwgAkKCoICA4AA3AgQgAiABRTYCECACQSBqQQBBKPwLACACQRxqENMCIAJBADoAUCACQoCAgIBwNwJIIApBiPwAKAIAIgI2AgggAkEMaygCACAKQQhqakGM/AAoAgA2AgAgCkH8+wAoAgAiAjYCACAKIAJBDGsoAgBqQZD8ACgCADYCACAKQZT8ACgCADYCCCAKQcj7ADYCACAKQdz7ADYCCCAKQfD7ADYCQCABQZj1ADYCACABQQRqENMCIAFCADcCGCABQgA3AhAgAUIANwIIIAFCADcCICABQZD3ADYCACABQRg2AjAgAUIANwIoAkAgAyABQSBqIgJGDQAgAhBHRQRAIAMQR0UEQCACEF4aIAIQXiADEF5JBEAgAxBeGiACEF4aCyACIAMpAgA3AgAgAiADKAIINgIIIAIQXhoMAgsgAxAjIQUgAxAfIQMjAEEQayIEJAAgAhBeIQwCQCADQQpNBEAgAiADEFAgAiAFIAMQTSAEQQA6AA8gAiADaiAEQQ9qEF0MAQsgAkEKIANBCmsgDEEAIAwgAyAFELkBCyAEQRBqJAAMAQsgAxAjIQwgAxAfIQMjAEEQayIEJAAgAhB+IQUgAigCBCEIAkAgAyAFSQRAIAIoAgAhBSACIAM2AgQgBSAMIAMQTSAEQQA6AA8gAyAFaiAEQQ9qEF0MAQsgAiAFQQFrIAMgBWtBAWogCEEAIAggAyAMELkBCyAEQRBqJAALIAFBADYCLCABKAIgIAFBIGoiAyABLAArIgJBAEgiBBshCSABKAIkIAIgBBshCCABKAIwIgRBCHEEQCABIAk2AgwgASAJNgIIIAEgCCAJaiIFNgIQIAEgBTYCLAsCQCAEQRBxRQ0AIAEgCCAJajYCLCADQQogASgCKEH/////B3FBAWsgAkEAThsQISABIAk2AhggASAJNgIUIAEgCSABKAIkIAEsACsiAiACQQBIG2o2AhwgAS0AMEEDcUUNAANAIAhBAEgEQCABIAlB/////wdqIgk2AhggCEH/////B2shCAwBCwsgCEUNACABIAggCWo2AhgLIwBBwAFrIgEkACABQgA3ArgBIAFCzo7NgjU3ArABIAogAUGwAWpBEBCIAQJAAkAgCiAKKAIAQQxrKAIAai0AEEEFcUUEQCABKAKwAUHOjs2CBUYNAQtBshIQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArQBQQRrQXxNBEBBthQgAUG0AWoQlwIgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArgBIgJBga3iBE8EQEG4EyABQbgBahCXAiANQgA3AAUgDUIANwIAIA1BAToADSANQRBqQQBByAD8CwAMAQsgAS0AvAEiA0EETwRAIAEgAzYCAEH0EyABEHIQf0Gg8QAoAgAQYRogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAMQ0wMhDCABKAK0ASEEIAFBAToAZSABQegAaiIFQQBByAD8CwAgASACNgJYIAEgAS0AvAE2AlwgASABLQC9ATYCYCABIAEtAL4BQQFxOgBkIAUgAkEDbCIDQQJBAyAEQQFGG2wQpwEgAUH0AGoiCCADEKcBIAEgBEECSyIEOgBlIAFBgAFqIglBBEEDIAQbIAJsEKcBIAFBjAFqIgQgAhCnASABQZgBaiIHIAMQpwEgAUGkAWoiCyADIAxsEKcBIAogASgCaCABQcwAaiAFEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCjAEgAUFAayAEEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCmAEgAUE0aiAHEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCdCABQShqIAgQogEiAigCBCACKAIAaxCIASACEDogCiABKAKAASABQRxqIAkQogEiAigCBCACKAIAaxCIASACEDogCiABKAKkASABQRBqIAsQogEiAigCBCACKAIAaxCIASACEDoCQCAKIAooAgBBDGsoAgBqLQAQQQVxBEBBkQwQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIA0gAUHYAGoiAikCADcCACANIAIpAQY3AQYgDUEQaiACQRBqEKEBIA1BHGogAkEcahChASANQShqIAJBKGoQoQEgDUE0aiACQTRqEKEBIA1BQGsgAkFAaxChASANQcwAaiACQcwAahChAQsgAUHYAGoQywMLIAFBwAFqJAAgChCxARoMAgsgE0EEahCbAgsgGhA6IBNBqAFqEDogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsACyATQZgBahAgGiATQcABaiQAIwBBkAFrIgIkACANKAIAIQQgDSgCBBDTAyEBAkACQAJAIA0oAhQgDSgCEGsiBSAEQQNsIgNBAkEDIAUgDSgCACIMQQZsIghGG2xHBEAgAkH2HTYCOCACQfgANgI0IAJB/BQ2AjBByAsgAkEwahByEH9BoPEAKAIAEGEaDAELIAMgDSgCICANKAIca0cEQCACQfkANgI8IAJBPGpBxhwQmgIMAQsgDSgCLCANKAIoa0EEQQMgDS0ADSIJQQFxGyAEbEcEQCACQZ4dNgIoIAJB+gA2AiQgAkH8FDYCIEHICyACQSBqEHIQf0Gg8QAoAgAQYRoMAQsgBCANKAI4IA0oAjRrRwRAIAJB7xs2AhggAkH7ADYCFCACQfwUNgIQQcgLIAJBEGoQchB/QaDxACgCABBhGgwBCyADIA0oAkQgDSgCQGtHBEAgAkH8ADYCPCACQTxqQZwcEJoCDAELIA0oAlAgDSgCTGsiByABIANsRg0BIAJB8Bw2AgggAkH9ADYCBCACQfwUNgIAQcgLIAIQchB/QaDxACgCABBhGgsgAEIANwIAIABBADoACCAAQQxqQQBByAD8CwAMAQsgAEEMaiIBQQBByAD8CwAgACAMNgIAIAAgDSgCBDYCBCAAIA0tAAw6AAggASADEKQBIABBGGogAxCkASAAQSRqIARBAnQQpAEgAEEwaiAEEKQBIABBPGogAxCkASAAQcgAaiAHEKQBAkAgBSAIRgRAIAEoAgAhDCANKAIQIQgDQCADIBFGDQIgDCARQQJ0agJ9QwAAgD9DAACAvyAIIBFBAXRqLwEAIgHBQQBOGyEzIAFB/wdxIQUCQCABQQp2QR9xIgFBH0cEQCABDQEgM0MAAIA4lCAFs5RDAACAOpQMAgtDAADAfyAzQwAAgH+UIAUbDAELQwAAgD8hMgJAIAFBD2siAUGAAU4EQEMAAAB/ITIgAUH/AUkEQCABQf8AayEBDAILQwAAgH8hMkH9AiABIAFB/QJPG0H+AWshAQwBCyABQYF/Sg0AQwAAgAwhMiABQZt+SwRAIAFB5gBqIQEMAQtDAAAAACEyQbZ9IAEgAUG2fU0bQcwBaiEBCyAFs0MAAIA6lEMAAIA/kiAzIDIgAUEXdEGAgID8A2q+lJSUCzgCACARQQFqIREMAAsACyANKAIQIgVBAmohDCAFQQFqIQhEAAAAAAAA8D9BASANKAIIdLejtiEyIAEoAgAhBwNAIAMgEUYNASAHIBFBAnRqIDIgCCARQQNsIgFqLQAAQQh0IAEgBWotAAByIAEgDGosAAAiAUH/AXFBEHRyQYCAgHhBACABQQBIG3KylDgCACARQQFqIREMAAsACyAAKAIYIQEgDSgCHCEFQQAhEQNAIAMgEUYEQCACQdQAaiEIQQAhESAJQQFxIQcDfyAEIBFGBH8gACgCMCEFIA0oAjQhDEEABQJAIAcEQCAAKAIkIA0oAighBSACQoCAgPyDgIDAPzcCTCACQoCAgPyDgIDAPzcCRCACQoCAgPyDgIDAPzcCPCAIQcgfQTz8CgAAIBFBBHRqIQwgAkE8aiELQwAAAAAhMiAFIBFBAnRqIgEvAAAgAS0AAkEQdHIgAS0AAyIBQRh0ciEFIAFBBnYhCUEDIQEDfyABQQBIBH8gDCAJQQJ0akMAAIA/IDKTkTgCACALQQxqIQVBAAUgASAJRwRAIAwgAUECdGogBUH/A3GzQ/MENT+UQwCA/0OVIjOMIDMgBUGABHEbIjM4AgAgMyAzlCAykiEyIAVBCnYhBQsgAUEBayEBDAELCyEBA0AgAUEDRwRAIAwgAUECdCIJaiILIAUgCWoqAgAgCyoCAJQ4AgAgAUEBaiEBDAELCwwBCyAAKAIkIA0oAiggAkKAgID8g4CAwD83AkwgAkKAgID8g4CAwD83AkQgAkKAgID8g4CAwD83AjwgCEHIH0E8/AoAACMAQRBrIgEkACARQQNsaiIFLQACIQkgBS0AASELIAEgBS0AALNDgYAAPJRDAACAv5IgAioCSJQ4AgQgASALs0OBgAA8lEMAAIC/kiACKgJMlDgCCCABIAmzQ4GAADyUQwAAgL+SIAIqAlCUOAIMIBFBBHRqIgUgASkCBDcCACAFIAEoAgw2AgggBUMAAIA/IAEqAgwgASoCDJQgASoCBCABKgIElCABKgIIIAEqAgiUkpKTIjJDAAAAACAyQwAAAABeG5E4AgwgAUEQaiQACyARQQFqIREMAQsLIREDQCAEIBFHBEAgBSARQQJ0agJ9QwAAAAAgDCARai0AALNDAAB/Q5UiMkMAAIA/IDKTlSIyvCIBQYCAgPwDRg0AGgJAIAFBgICA/AdrQf///4d4TQRAIAFBAXQiCEUEQCMAQRBrIgFDAACAvzgCDCABKgIMQwAAAACVDAMLIAFBgICA/AdGDQEgCEGAgIB4SSABQQBOcUUEQCAyIDKTIjIgMpUMAwsgMkMAAABLlLxBgICA3ABrIQELQYjxACsDACABIAFBgIDM+QNrIgFBgICAfHFrvrsgAUEPdkHwAXEiCCsDgG+iRAAAAAAAAPC/oCI3IDeiIjiiQZDxACsDACA3okGY8QArAwCgoCA4oiABQRd1t0GA8QArAwCiIAgrA4hvoCA3oKC2ITILIDILOAIAIBFBAWohEQwBCwsgACgCPCEBIA0oAkAhBEEAIREDQCADIBFGBEAgDSgCUCANKAJMIgFrIQQgACgCSCEFQQAhAwNAIAMgBEYEQCAZKAIMIQwjAEHgAGsiBCQAIwBBEGsiBSQAQQEhAQJ/QQEhA0EBIAxBAEwNABogDEEBa0EDcyIMQX9zQQFxIQEgDEEEcUUhAyAMQQJxRQshDCAFIAM6AA8gBSAMOgAOIAUgAToADSAFLQAOIQEgBS0ADyEDIAUtAA0hDCAEQYCAgPwDNgJAIARBgICA/AM2AjggBEMAAIA/QwAAgL8gDBsiMzgCXCAEQwAAgD9DAACAvyADGyIyOAJYIAQgMzgCVCAEIDI4AlAgBEMAAIA/QwAAgL8gARsiNDgCTCAEIDQ4AkQgBCAzOAIsIAQgMjgCKCAEIDQ4AiQgBCAyOAIUIAQgNDgCECAEIDM4AgwgBCAzIDKUIjU4AjwgBCA0IDKUIjY4AjQgBCAzIDSUIjM4AjAgBCAzOAIgIAQgNTgCHCAEIDY4AhggBCAzIDKUOAJIIAVBEGokACAAKAIMIgFBCGohDCABQQRqIQggACgCECABa0ECdSEJQQAhAwNAIAMgCU8EQCAAKAIkIgFBCGohDCABQQRqIQggACgCKCABa0ECdSEJQQAhAwNAIAMgCU8EQAJAIAAoAkgiBUEIaiEJIAVBBGohByAAKAJMIAVrQQJ1QQNuIgsgACgCAG4hDCAEQSRqIQ5BACEAQQAhAQNAQQAhAyABIAtPDQEDQCADIAxPBEAgASAMaiEBDAIFIAUgAEECdCIIaiIPIA4gA0ECdGoqAgAiMiAPKgIAlDgCACAHIAhqIg8gMiAPKgIAlDgCACAIIAlqIgggMiAIKgIAlDgCACAAQQNqIQAgA0EBaiEDDAELAAsACwALBSABIANBAnQiBWoiByAEKgIYIAcqAgCUOAIAIAUgCGoiByAEKgIcIAcqAgCUOAIAIAUgDGoiBSAEKgIgIAUqAgCUOAIAIANBBGohAwwBCwsgBEHgAGokAAUgASADQQJ0IgVqIgcgBCoCDCAHKgIAlDgCACAFIAhqIgcgBCoCECAHKgIAlDgCACAFIAxqIgUgBCoCFCAFKgIAlDgCACADQQNqIQMMAQsLBSAFIANBAnRqIAEgA2otAACzQwAAAMOSQwAAADyUOAIAIANBAWohAwwBCwsFIAEgEUECdGogBCARai0AALNDAAB/Q5VDAAAAv5JDmpkZPpU4AgAgEUEBaiERDAELCwUgASARQQJ0aiAFIBFqLQAAs0MAAIA9lEMAACDBkjgCACARQQFqIREMAQsLCyACQZABaiQAIA0QywMgIkHgAGokACAZEDogGUEQaiQAC5UBAQN/IAACfyAAKAIEIgIgACgCCEkEQCACIAEqAgA4AgAgAkEEagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0ECdUEBahC2ASAAKAIEIAAoAgBrQQJ1IAAQhwIiAigCCCIEIAEqAgA4AgAgAiAEQQRqNgIIIAAgAhCFAiAAKAIEIAIQgQIgA0EgaiQACzYCBAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBJIQEgBhAlIAYgAxAnIAYQmwEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzwEgBkY6AAAgBigCHCEBA0AgA0EMaxAgIgMgBkcNAAsLIAZBIGokACABC0ABAX9BACEAA38gASACRgR/IAAFIAEoAgAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBBGohAQwBCwsLCwAgACACIAMQmQMLVAECfwJAA0AgAyAERwRAQX8hACABIAJGDQIgASgCACIFIAMoAgAiBkgNAiAFIAZKBEBBAQ8FIANBBGohAyABQQRqIQEMAgsACwsgASACRyEACyAAC0ABAX9BACEAA38gASACRgR/IAAFIAEsAAAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBAWohAQwBCwsLCwAgACACIAMQuAMLXgEDfyABIAQgA2tqIQUCQANAIAMgBEcEQEF/IQAgASACRg0CIAEsAAAiBiADLAAAIgdIDQIgBiAHSgRAQQEPBSADQQFqIQMgAUEBaiEBDAILAAsLIAIgBUchAAsgAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEHEaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEHEaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC1QBAn8gASAAKAJUIgEgAUEAIAJBgAJqIgMQ4AEiBCABayADIAQbIgMgAiACIANLGyICEHEaIAAgASADaiIDNgJUIAAgAzYCCCAAIAEgAmo2AgQgAgsJACAAEIkCEC0LEwAgACAAKAIAQQxrKAIAahCMAgsTACAAIAAoAgBBDGsoAgBqELEBCwoAIABBCGsQjAILCgAgAEEIaxCxAQsaACAAIAEgAikDCEEAIAMgASgCACgCEBEXAAsJACAAEPwBEC0LlAICAX8DfiABKAIYIAEoAixLBEAgASABKAIYNgIsC0J/IQgCQCAEQRhxIgVFIANBAUYgBUEYRnFyDQAgASgCLCIFBEAgBSABQSBqECNrrCEGCwJAAkACQCADDgMCAAEDCyAEQQhxBEAgASgCDCABKAIIa6whBwwCCyABKAIYIAEoAhRrrCEHDAELIAYhBwsgAiAHfCICQgBTIAIgBlVyDQAgBEEIcSEDAkAgAlANACADBEAgASgCDEUNAgsgBEEQcUUNACABKAIYRQ0BCyADBEAgASABKAIIIAEoAgggAqdqIAEoAiwQsgELIARBEHEEQCABIAEoAhQgASgCHBC6AyABIAKnELkDCyACIQgLIAAgCBCSAgv8AQEJfyMAQRBrIgMkAAJ/IAFBf0cEQCAAKAIMIQQgACgCCCEFIAAoAhggACgCHEYEQEF/IAAtADBBEHFFDQIaIAAoAhghBiAAKAIUIQcgACgCLCEIIAAoAhQhCSAAQSBqIgJBABC4ASACIAIQKBAhIAAgAhAjIgogAhAfIApqELoDIAAgBiAHaxC5AyAAIAAoAhQgCCAJa2o2AiwLIAMgACgCGEEBajYCDCAAIANBDGogAEEsahCgASgCADYCLCAALQAwQQhxBEAgACAAQSBqECMiAiACIAQgBWtqIAAoAiwQsgELIAAgAcAQwgMMAQsgARC2AwsgA0EQaiQAC5YBACAAKAIYIAAoAixLBEAgACAAKAIYNgIsCwJAIAAoAgggACgCDE8NACABQX9GBEAgACAAKAIIIAAoAgxBAWsgACgCLBCyASABELYDDwsgAC0AMEEQcUUEQCAAKAIMQQFrLQAAIAFB/wFxRw0BCyAAIAAoAgggACgCDEEBayAAKAIsELIBIAAoAgwgAcA6AAAgAQ8LQX8LZQAgACgCGCAAKAIsSwRAIAAgACgCGDYCLAsCQCAALQAwQQhxRQ0AIAAoAhAgACgCLEkEQCAAIAAoAgggACgCDCAAKAIsELIBCyAAKAIMIAAoAhBPDQAgACgCDCwAABCjAQ8LQX8LBwAgACgCDAsHACAAKAIICxMAIAAgACgCAEEMaygCAGoQjgILCgAgAEEIaxCOAgsTACAAIAAoAgBBDGsoAgBqENgBCwoAIABBCGsQ2AELEwAgACAAKAIAQQxrKAIAahDBAwsTACAAIAAoAgBBDGsoAgBqEI8CCxMAIAAgACgCAEEMaygCAGoQxgMLEwAgACAAKAIAQQxrKAIAahCQAguuAQEEfyMAQRBrIgUkAANAAkAgAiAETA0AIAAoAhgiAyAAKAIcIgZPBEAgACABLAAAEKMBIAAoAgAoAjQRBABBf0YNASAEQQFqIQQgAUEBaiEBBSAFIAYgA2s2AgwgBSACIARrNgIIIAVBDGogBUEIahCRAiEDIAAoAhggASADKAIAIgMQTSAAIAMgACgCGGo2AhggAyAEaiEEIAEgA2ohAQsMAQsLIAVBEGokACAECy8AIAAgACgCACgCJBEAAEF/RgRAQX8PCyAAIAAoAgwiAEEBajYCDCAALAAAEKMBCwQAQX8LvQEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJAIAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIARBDGogBEEIaiAEQQRqEJECEJECIQMgASAAKAIMIAMoAgAiAxBNIAAgACgCDCADajYCDAwBCyAAIAAoAgAoAigRAAAiA0F/Rg0BIAEgA8A6AABBASEDCyABIANqIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsJACAAQn8QkgILCQAgAEJ/EJICCwQAIAALDAAgABCUAhogABAtCwwAIAAoAjwQFRDdAQs7AQF/IAAoAjwjAEEQayIAJAAgASACQf8BcSAAQQhqEBYQ3QEhAiAAKQMIIQEgAEEQaiQAQn8gASACGwspACABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAgASkDCBCVAjkDAAu5FwMSfwF8A34jAEGwBGsiCyQAIAtBADYCLAJAIAG9IhlCAFMEQEEBIRBB+AghFCABmiIBvSEZDAELIARBgBBxBEBBASEQQfsIIRQMAQtB/ghB+QggBEEBcSIQGyEUIBBFIRcLAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBBBA2oiBiAEQf//e3EQRSAAIBQgEBBCIABB5g1ByhUgBUEgcSIDG0G8EEH0FSADGyABIAFiG0EDEEIgAEEgIAIgBiAEQYDAAHMQRSACIAYgAiAGShshDQwBCyALQRBqIRECQAJAAkAgASALQSxqENIDIgEgAaAiAUQAAAAAAAAAAGIEQCALIAsoAiwiBkEBazYCLCAFQSByIhVB4QBHDQEMAwsgBUEgciIVQeEARg0CIAsoAiwhDAwBCyALIAZBHWsiDDYCLCABRAAAAAAAALBBoiEBC0EGIAMgA0EASBshCiALQTBqQaACQQAgDEEAThtqIg4hBwNAIAcgAfwDIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAxBAEwEQCAMIQkgByEGIA4hCAwBCyAOIQggDCEJA0BBHSAJIAlBHU8bIQMCQCAHQQRrIgYgCEkNACADrSEbQgAhGQNAIAYgBjUCACAbhiAZfCIaIBpCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGkKAlOvcA1QNACAIQQRrIgggGT4CAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyALIAsoAiwgA2siCTYCLCAGIQcgCUEASg0ACwsgCUEASARAIApBGWpBCW5BAWohEiAVQeYARiETA0BBCUEAIAlrIgMgA0EJTxshDQJAIAYgCE0EQEEAQQQgCCgCABshBwwBC0GAlOvcAyANdiEWQX8gDXRBf3MhD0EAIQkgCCEHA0AgByAHKAIAIgMgDXYgCWo2AgAgAyAPcSAWbCEJIAdBBGoiByAGSQ0AC0EAQQQgCCgCABshByAJRQ0AIAYgCTYCACAGQQRqIQYLIAsgCygCLCANaiIJNgIsIA4gByAIaiIIIBMbIgMgEkECdGogBiAGIANrQQJ1IBJKGyEGIAlBAEgNAAsLQQAhCQJAIAYgCE0NACAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgCiAJQQAgFUHmAEcbayAVQecARiAKQQBHcWsiAyAGIA5rQQJ1QQlsQQlrSARAIAtBMGpBhGBBpGIgDEEASBtqIANBgMgAaiIMQQltIgNBAnRqIQ1BCiEHIAwgA0EJbGsiA0EHTARAA0AgB0EKbCEHIANBAWoiA0EIRw0ACwsCQCANKAIAIgwgDCAHbiISIAdsayIPRSANQQRqIgMgBkZxDQACQCASQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCANT3INASANQQRrLQAAQQFxRQ0BC0QBAAAAAABAQyEBC0QAAAAAAADgP0QAAAAAAADwP0QAAAAAAAD4PyADIAZGG0QAAAAAAAD4PyAPIAdBAXYiA0YbIAMgD0sbIRgCQCAXDQAgFC0AAEEtRw0AIBiaIRggAZohAQsgDSAMIA9rIgM2AgAgASAYoCABYQ0AIA0gAyAHaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgCCANQQRrIg1LBEAgCEEEayIIQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgDUEEaiIDIAYgAyAGSRshBgsDQCAGIgwgCE0iB0UEQCAGQQRrIgYoAgBFDQELCwJAIBVB5wBHBEAgBEEIcSETDAELIAlBf3NBfyAKQQEgChsiBiAJSiAJQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiEw0AQXchBgJAIAcNACAMQQRrKAIAIg9FDQBBCiEDQQAhBiAPQQpwDQADQCAGIgdBAWohBiAPIANBCmwiA3BFDQALIAdBf3MhBgsgDCAOa0ECdUEJbCEDIAVBX3FBxgBGBEBBACETIAogAyAGakEJayIDQQAgA0EAShsiAyADIApKGyEKDAELQQAhEyAKIAMgCWogBmpBCWsiA0EAIANBAEobIgMgAyAKShshCgtBfyENIApB/f///wdB/v///wcgCiATciIPG0oNASAKIA9BAEdqQQFqIRYCQCAFQV9xIgdBxgBGBEAgCSAWQf////8Hc0oNAyAJQQAgCUEAShshBgwBCyARIAkgCUEfdSIDcyADa60gERCmASIGa0EBTARAA0AgBkEBayIGQTA6AAAgESAGa0ECSA0ACwsgBkECayISIAU6AAAgBkEBa0EtQSsgCUEASBs6AAAgESASayIGIBZB/////wdzSg0CCyAGIBZqIgMgEEH/////B3NKDQEgAEEgIAIgAyAQaiIJIAQQRSAAIBQgEBBCIABBMCACIAkgBEGAgARzEEUCQAJAAkAgB0HGAEYEQCALQRBqQQlyIQUgDiAIIAggDksbIgMhCANAIAg1AgAgBRCmASEGAkAgAyAIRwRAIAYgC0EQak0NAQNAIAZBAWsiBkEwOgAAIAYgC0EQaksNAAsMAQsgBSAGRw0AIAZBAWsiBkEwOgAACyAAIAYgBSAGaxBCIAhBBGoiCCAOTQ0ACyAPBEAgAEHrG0EBEEILIApBAEwgCCAMT3INAQNAIAg1AgAgBRCmASIGIAtBEGpLBEADQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALCyAAIAZBCSAKIApBCU4bEEIgCkEJayEGIAhBBGoiCCAMTw0DIApBCUogBiEKDQALDAILAkAgCkEASA0AIAwgCEEEaiAIIAxJGyEDIAtBEGpBCXIhDCAIIQcDQCAMIAc1AgAgDBCmASIGRgRAIAZBAWsiBkEwOgAACwJAIAcgCEcEQCAGIAtBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALDAELIAAgBkEBEEIgBkEBaiEGIAogE3JFDQAgAEHrG0EBEEILIAAgBiAMIAZrIgUgCiAFIApIGxBCIAogBWshCiAHQQRqIgcgA08NASAKQQBODQALCyAAQTAgCkESakESQQAQRSAAIBIgESASaxBCDAILIAohBgsgAEEwIAZBCWpBCUEAEEULIABBICACIAkgBEGAwABzEEUgAiAJIAIgCUobIQ0MAQsgFCAFQRp0QR91QQlxaiEJAkAgA0ELSw0AQQwgA2shBkQAAAAAAAAwQCEYA0AgGEQAAAAAAAAwQKIhGCAGQQFrIgYNAAsgCS0AAEEtRgRAIBggAZogGKGgmiEBDAELIAEgGKAgGKEhAQsgESALKAIsIgcgB0EfdSIGcyAGa60gERCmASIGRgRAIAZBAWsiBkEwOgAAIAsoAiwhBwsgEEECciEKIAVBIHEhDCAGQQJrIg4gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxRSADQQBMcSEIIAtBEGohBwNAIAciBSAB/AIiBkGA9QBqLQAAIAxyOgAAIAEgBrehRAAAAAAAADBAoiIBRAAAAAAAAAAAYSAIcSAHQQFqIgcgC0EQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hDSADQf3///8HIAogESAOayIIaiIGa0oNACAAQSAgAiAGIANBAmogByALQRBqIgVrIgcgB0ECayADSBsgByADGyIDaiIGIAQQRSAAIAkgChBCIABBMCACIAYgBEGAgARzEEUgACAFIAcQQiAAQTAgAyAHa0EAQQAQRSAAIA4gCBBCIABBICACIAYgBEGAwABzEEUgAiAGIAIgBkobIQ0LIAtBsARqJAAgDQsEAEIAC9YCAQd/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahAKEN0BBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABQQhBACAGIAEoAgQiCEsiCRtqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQChDdAUUNAAsLIAVBf0cNAQsgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCECACDAELIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgB0ECRg0AGiACIAQoAgRrCyADQSBqJAALiQIBA38jAEEQayIAJAACQCAAQQxqIABBCGoQFA0AQYDuASAAKAIMQQJ0QQRqEDQiATYCACABRQ0AIAAoAggQNCIBBEBBgO4BKAIAIgIgACgCDEECdGpBADYCACACIAEQE0UNAQtBgO4BQQA2AgALIABBEGokAEGU4AFBADYCAEGQ4AFBATYCABCQA0GU4AFBsOABKAIANgIAQbDgAUGQ4AE2AgBBtOABQS42AgBBuOABQQA2AgAQnAJBuOABQbDgASgCADYCAEGw4AFBtOABNgIAQdzhAUHk4AE2AgBBtOEBQYCABDYCAEGw4QFB8P4FNgIAQZThAUEqNgIAQbjhAUG43QEoAgA2AgALC8jAASoAQYAIC4QYbG9hZF9zcHoAaW5maW5pdHkARmVicnVhcnkASmFudWFyeQBKdWx5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAACobQAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQBB1DMLoSiWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBgNwAC6IVYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAAywBNAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAC+8/h57GH2P96qjID3e9W/PYivSu1x9T/bbcCn8L7Sv7AQ8PA5lfQ/ZzpRf64e0L+FA7iwlcnzP+kkgqbYMcu/pWSIDBkN8z9Yd8AKT1fGv6COC3siXvI/AIGcxyuqwb8/NBpKSrvxP14OjM52Trq/uuWK8Fgj8T/MHGFaPJexv6cAmUE/lfA/HgzhOPRSor8AAAAAAADwPwAAAAAAAAAArEea/Yxg7j+EWfJdqqWqP6BqAh+zpOw/tC42qlNevD/m/GpXNiDrPwjbIHflJsU/LaqhY9HC6T9wRyINhsLLP+1BeAPmhug/4X6gyIsF0T9iSFP13GfnPwnutlcwBNQ/7zn6/kIu5j80g7hIow7Qv2oL4AtbV9U/I0EK8v7/37/AbgBBsPEAC0EZAAsAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkACgoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBgfIACyEOAAAAAAAAAAAZAAsNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQbvyAAsBDABBx/IACxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQfXyAAsBEABBgfMACxUPAAAABA8AAAAACRAAAAAAABAAABAAQa/zAAsBEgBBu/MACx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQfLzAAsOGgAAABoaGgAAAAAAAAkAQaP0AAsBFABBr/QACxUXAAAAABcAAAAACRQAAAAAABQAABQAQd30AAsBFgBB6fQAC5oOFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAAAAAAA8AAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAAgAAAAAAAAAPDwAAEQAAABFAAAA+P////j///88PAAARgAAAEcAAADcOgAA8DoAAAQAAAAAAAAAhDwAAEgAAABJAAAA/P////z///+EPAAASgAAAEsAAAAMOwAAIDsAAAwAAAAAAAAAHD0AAEwAAABNAAAABAAAAPj///8cPQAATgAAAE8AAAD0////9P///xw9AABQAAAAUQAAADw7AADYPAAA7DwAAAA9AAAUPQAAZDsAAFA7AAAAAAAAbD0AAFIAAABTAAAAOAAAADkAAABUAAAAVQAAADwAAAA9AAAAPgAAAFYAAABAAAAAVwAAAEIAAABYAAAA0G0AANQ7AAAQPwAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAACobQAACDwAAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAAAsbgAAVDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAsbgAAnDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAMAAAAAAAAADw8AABEAAAARQAAAPT////0////PDwAAEYAAABHAAAABAAAAAAAAACEPAAASAAAAEkAAAD8/////P///4Q8AABKAAAASwAAACxuAAA8PQAAAwAAAAIAAAA8PAAAAgAAAIQ8AAACCAAATlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAN4SBJUAAAAA////////////////YEEAABQAAABDLlVURi04AEGwgwELAnRBAEHQgwELSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTACBEAEGkiAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AEGgkAELAjBKAEG0lAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEG0nAELLYDeKACAyE0AAKd2AAA0ngCAEscAgJ/uAAB+FwGAXEABgOlnAQDIkAEAVbgBLgBB8JwBC9ICU3VuAE1vbgBUdWUAV2VkAFRodQBGcmkAU2F0AFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAEphbnVhcnkARmVicnVhcnkATWFyY2gAQXByaWwATWF5AEp1bmUASnVseQBBdWd1c3QAU2VwdGVtYmVyAE9jdG9iZXIATm92ZW1iZXIARGVjZW1iZXIAQU0AUE0AJWEgJWIgJWUgJVQgJVkAJW0vJWQvJXkAJUg6JU06JVMAJUk6JU06JVMgJXAAAAAlbS8lZC8leQAwMTIzNDU2Nzg5ACVhICViICVlICVUICVZACVIOiVNOiVTAAAAAABeW3lZXQBeW25OXQB5ZXMAbm8AQdCfAQsxMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRnhYKy1wUGlJbk4AJUk6JU06JVMgJXAlSDolTQBBkKABC4EBJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAEGgoQELZSUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAAAAAAABaAAB0AAAAdQAAAHYAAAAAAAAAZFoAAHcAAAB4AAAAdgAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAEGQogEL/QMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABABBlKoBC+0CvFkAAIEAAACCAAAAdgAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAAAAAAAAmFoAAIoAAACLAAAAdgAAAIwAAACNAAAAjgAAAI8AAACQAAAAAAAAALxaAACRAAAAkgAAAHYAAACTAAAAlAAAAJUAAACWAAAAlwAAAHQAAAByAAAAdQAAAGUAAAAAAAAAZgAAAGEAAABsAAAAcwAAAGUAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAQYytAQv9J5xWAACYAAAAmQAAAHYAAADQbQAAqFYAAOxqAABOU3QzX18yNmxvY2FsZTVmYWNldEUAAAAAAAAABFcAAJgAAACaAAAAdgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAACxuAAAkVwAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUl3RUUAAACobQAAQFcAAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAAAAAAAAAACIVwAAmAAAAKcAAAB2AAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAACxuAACoVwAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAAAAqG0AANRXAABOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAAAAAAAAHFgAAJgAAACvAAAAdgAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYAAAAsbgAAPFgAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUAAAAAAACQWAAAmAAAALcAAAB2AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAACxuAACwWAAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUAAAAAAARZAACYAAAAvwAAAHYAAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAALG4AACRZAAAAAAAAAgAAAJxWAAACAAAAzFcAAAIAAABOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAAAAAAAAeFkAAJgAAADHAAAAdgAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAAAsbgAAmFkAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFACxuAADcWQAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAAAA0G0AAAxaAACcVgAATlN0M19fMjZsb2NhbGU1X19pbXBFAAAA0G0AADBaAACcVgAATlN0M19fMjdjb2xsYXRlSWNFRQDQbQAAUFoAAJxWAABOU3QzX18yN2NvbGxhdGVJd0VFACxuAACEWgAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUljRUUAAADQbQAApFoAAJxWAABOU3QzX18yOG51bXB1bmN0SWNFRQAAAADQbQAAyFoAAJxWAABOU3QzX18yOG51bXB1bmN0SXdFRQAAAAAAAAAAJFoAAM8AAADQAAAAdgAAANEAAADSAAAA0wAAAAAAAABEWgAA1AAAANUAAAB2AAAA1gAAANcAAADYAAAAAAAAAGBbAACYAAAA2QAAAHYAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAACxuAACAWwAAAAAAAAIAAACcVgAAAgAAAMRbAAAAAAAATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAsbgAA3FsAAAAAAAABAAAA9FsAAAAAAABOU3QzX18yOV9fbnVtX2dldEljRUUAAACobQAA/FsAAE5TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQAAAAAAAAAAWFwAAJgAAADlAAAAdgAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAALG4AAHhcAAAAAAAAAgAAAJxWAAACAAAAvFwAAAAAAABOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFACxuAADUXAAAAAAAAAEAAAD0WwAAAAAAAE5TdDNfXzI5X19udW1fZ2V0SXdFRQAAAAAAAAAgXQAAmAAAAPEAAAB2AAAA8gAAAPMAAAD0AAAA9QAAAPYAAAD3AAAA+AAAAPkAAAAsbgAAQF0AAAAAAAACAAAAnFYAAAIAAACEXQAAAAAAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUALG4AAJxdAAAAAAAAAQAAALRdAAAAAAAATlN0M19fMjlfX251bV9wdXRJY0VFAAAAqG0AALxdAABOU3QzX18yMTRfX251bV9wdXRfYmFzZUUAAAAAAAAAAAxeAACYAAAA+gAAAHYAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAACxuAAAsXgAAAAAAAAIAAACcVgAAAgAAAHBeAAAAAAAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAsbgAAiF4AAAAAAAABAAAAtF0AAAAAAABOU3QzX18yOV9fbnVtX3B1dEl3RUUAAAAAAAAA9F4AAAMBAAAEAQAAdgAAAAUBAAAGAQAABwEAAAgBAAAJAQAACgEAAAsBAAD4////9F4AAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAAsbgAAHF8AAAAAAAADAAAAnFYAAAIAAABkXwAAAgAAAIBfAAAACAAATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUAAAAAqG0AAGxfAABOU3QzX18yOXRpbWVfYmFzZUUAAKhtAACIXwAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFAAAAAAAAAABgAAATAQAAFAEAAHYAAAAVAQAAFgEAABcBAAAYAQAAGQEAABoBAAAbAQAA+P///wBgAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAALG4AAChgAAAAAAAAAwAAAJxWAAACAAAAZF8AAAIAAABwYAAAAAgAAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAAAAAKhtAAB4YAAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFAAAAAAAAALRgAAAjAQAAJAEAAHYAAAAlAQAALG4AANRgAAAAAAAAAgAAAJxWAAACAAAAHGEAAAAIAABOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAACobQAAJGEAAE5TdDNfXzIxMF9fdGltZV9wdXRFAAAAAAAAAABUYQAAJgEAACcBAAB2AAAAKAEAACxuAAB0YQAAAAAAAAIAAACcVgAAAgAAABxhAAAACAAATlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUAAAAAAAAAAPRhAACYAAAAKQEAAHYAAAAqAQAAKwEAACwBAAAtAQAALgEAAC8BAAAwAQAAMQEAADIBAAAsbgAAFGIAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQCobQAAOGIAAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAAAAAAAAAACIYgAAmAAAADMBAAB2AAAANAEAADUBAAA2AQAANwEAADgBAAA5AQAAOgEAADsBAAA8AQAALG4AAKhiAAAAAAAAAgAAAJxWAAACAAAAMGIAAAIAAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUAAAAAAPxiAACYAAAAPQEAAHYAAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAAAsbgAAHGMAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQAAAAAAcGMAAJgAAABHAQAAdgAAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAACxuAACQYwAAAAAAAAIAAACcVgAAAgAAADBiAAACAAAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAAAAAADIYwAAmAAAAFEBAAB2AAAAUgEAAFMBAAAsbgAA6GMAAAAAAAACAAAAnFYAAAIAAAAwZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAAA4ZAAATlN0M19fMjExX19tb25leV9nZXRJY0VFAAAAAAAAAABwZAAAmAAAAFQBAAB2AAAAVQEAAFYBAAAsbgAAkGQAAAAAAAACAAAAnFYAAAIAAADYZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAADgZAAATlN0M19fMjExX19tb25leV9nZXRJd0VFAAAAAAAAAAAYZQAAmAAAAFcBAAB2AAAAWAEAAFkBAAAsbgAAOGUAAAAAAAACAAAAnFYAAAIAAACAZQAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAACIZQAATlN0M19fMjExX19tb25leV9wdXRJY0VFAAAAAAAAAADAZQAAmAAAAFoBAAB2AAAAWwEAAFwBAAAsbgAA4GUAAAAAAAACAAAAnFYAAAIAAAAoZgAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAAAwZgAATlN0M19fMjExX19tb25leV9wdXRJd0VFAAAAAAAAAABsZgAAmAAAAF0BAAB2AAAAXgEAAF8BAABgAQAALG4AAIxmAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSWNFRQAAAACobQAArGYAAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAAAAAADkZgAAmAAAAGEBAAB2AAAAYgEAAGMBAABkAQAALG4AAARnAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSXdFRQAAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEGU1QELnAiAXwAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAAAAAAABwYAAAHAEAAB0BAAAeAQAAHwEAACABAAAhAQAAIgEAAAAAAADsagAAZQEAAGYBAABnAQAAqG0AAPRqAABOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUAAAAAcG8AANBtAAAgawAAnG4AAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAANBtAABQawAAFGsAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAANBtAACAawAAFGsAAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQAAANBtAACwawAAdGsAAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FANBtAADgawAAFGsAAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQAAAADQbQAAFGwAAHRrAABOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAAAAAAAYGwAAGoBAABrAQAAbAEAAG0BAABuAQAA0G0AAGxsAAAUawAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAExsAACcbAAAdgAAAExsAACobAAARG4AAExsAAC0bAAAYgAAAExsAADAbAAAYwAAAExsAADMbAAAaAAAAExsAADYbAAAYQAAAExsAADkbAAAcwAAAExsAADwbAAAdAAAAExsAAD8bAAAaQAAAExsAAAIbQAAagAAAExsAAAUbQAAbAAAAExsAAAgbQAAbQAAAExsAAAsbQAAeAAAAExsAAA4bQAAeQAAAExsAABEbQAAZgAAAExsAABQbQAAZAAAAAAAAABwbQAAagEAAG8BAABsAQAAbQEAAHABAADQbQAAfG0AABRrAABOMTBfX2N4eGFiaXYxMTZfX2VudW1fdHlwZV9pbmZvRQAAAAAAAAAARGsAAGoBAABxAQAAbAEAAG0BAAByAQAAcwEAAHQBAAB1AQAAAAAAAPBtAABqAQAAdgEAAGwBAABtAQAAcgEAAHcBAAB4AQAAeQEAANBtAAD8bQAARGsAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAATG4AAGoBAAB6AQAAbAEAAG0BAAByAQAAewEAAHwBAAB9AQAA0G0AAFhuAABEawAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAACkawAAagEAAH4BAABsAQAAbQEAAH8BAACobQAApG4AAFN0OXR5cGVfaW5mbwBBud0BCwggAAAAAAAABQBBzN0BCwExAEHk3QELDjIAAAAzAAAACHEAAAAEAEH83QELAQEAQYzeAQsF/////woAQdDeAQshwG4AAHB/AQAlbS8lZC8leQAAAAglSDolTTolUwAAAAgFAEH83gELAmgBAEGU3wELCjIAAABpAQAAZH8AQazfAQsBAgBBvN8BCwj//////////wBBgOABCwJwbw==")),oe((await H(_e)).instance))}();function V3(){function se(){var oe;if(i.calledRun=!0,!b){if(V=!0,S_.G(),I?.(i),(oe=i.onRuntimeInitialized)==null||oe.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var _e=i.postRun.shift();K.push(_e)}ee(K)}}if(0{setTimeout(()=>i.setStatus(""),1),se()},1)):se()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0{I=se,_=oe}),n}var CE=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},e9e=e=>1/(1+Math.exp(-e)),t9e=e=>t=>t*e+.5,n9e=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:CE(e,t.positions),scales:CE(e,t.scales,Math.exp),rotations:CE(e,t.rotations),alphas:CE(e,t.alphas,e9e),colors:CE(e,t.colors,t9e(i)),sh:CE(e,t.sh)}},i9e=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},jse=async(e,t)=>{var n;let i=await $Ne(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=n9e(i,a,t);return i9e(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var o9e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function Hb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=ft.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(Hb.prototype=Object.create(Yi.prototype),Hb.prototype.constructor=Hb);Object.defineProperties(Hb.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function r9e(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=ft.PROCESSING,e)}catch(n){if(e.isDestroyed())return;qse(e,n)}}Hb.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=ft.LOADING,this._promise=r9e(this),this._promise)};function qse(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load SPZ",t)}async function s9e(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=ft.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}Hb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.PROCESSING||(l(this._spzError)&&qse(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=jse(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=s9e(this,t)};Hb.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var KZ=Hb;var cpn=y(C(),1);var tpn=y(C(),1);var Mfn=y(C(),1);function JZ(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ke(e.extras,!0),this._extensions=ke(e.extensions,!0)}JZ.fromJson=function(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=Qf.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new JZ({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(JZ.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});JZ.BATCH_TABLE_CLASS_NAME="_batchTable";var Ch=JZ;var zfn=y(C(),1);var Qfn=y(C(),1);function oQ(e){e=e??Y.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ke(e.extras,!0),this._extensions=ke(e.extensions,!0)}oQ.fromJson=function(e){return new oQ({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(oQ.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var jZ=oQ;function rQ(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a>t};va.fromSubtreeJson=async function(e,t,n,i,o){let r=new va(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=u9e(n);let a=s.json;r._subtreeJson=a;let c;if(Ii(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let _=a.tileMetadata;c=a.propertyTables[_]}let d=[];if(l(a.contentMetadata)){let _=a.contentMetadata.length;for(let E=0;E<_;E++){let S=a.contentMetadata[E];d.push(a.propertyTables[S])}}let u,h=i.metadataSchema,p=a.subtreeMetadata;if(l(p)){let _=p.class,E=h.classes[_];u=new ZZ({subtreeMetadata:p,class:E})}r._metadata=u,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=d;let g={constant:0};a.contentAvailabilityHeaders=[],Ii(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let f=m9e(a.buffers),b=h9e(a.bufferViews,f);f9e(a,b),l(c)&&nae(c,b);for(let _=0;_0;u=u||h;for(let p=0;p>BigInt(61)),d=c%2===0?cE.encode2D(i,o,r):cE.encode2D(i,r,o),u=xA.fromFacePositionLevel(c,BigInt(d),i),h,p;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,p=n<4?g:a.maximumHeight}else h=a.minimumHeight,p=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:xA.getTokenFromId(u._cellId),minimumHeight:h,maximumHeight:p}}}}var w9e=new m,X9e=new m,Iz=new m,W9e=new $;function cae(e,t,n,i,o){if(t===0)return e;let r=m.unpack(e,0,X9e),s=$.unpack(e,3,W9e),a=Math.pow(2,-t),c=-1+(2*n+1)*a,d=-1+(2*i+1)*a,u=0,h=m.fromElements(a,a,1,w9e);l(o)&&(u=-1+(2*o+1)*a,h.z=a);let p=m.fromElements(c,d,u,Iz);p=$.multiplyByVector(s,p,Iz),p=m.add(p,r,Iz);let g=$.clone(s);g=$.multiplyByScale(g,h,g);let f=new Array(12);return m.pack(p,f),$.pack(g,f,3),f}var F9e=new le;function lae(e,t,n,i,o){if(t===0)return e.slice();let r=le.unpack(e,0,F9e),s=e[4],a=e[5],c=Math.pow(2,-t),d=c*r.width,u=Z.negativePiToPi(r.west+n*d),h=Z.negativePiToPi(u+d),p=c*r.height,g=Z.negativePiToPi(r.south+i*p),f=Z.negativePiToPi(g+p),b=s,x=a;if(l(o)){let I=c*(a-s);b+=o*I,x=b+I}return[u,g,h,f,b,x]}function P9e(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=sae(i,o,n,!1,t),s=rae(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},d=dae(e,i.baseResource,c,t);return d.implicitTileset=i,d.implicitCoordinates=o,d}function dae(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}xl.prototype.hasProperty=function(e,t){return!1};xl.prototype.getFeature=function(e){};xl.prototype.applyDebugSettings=function(e,t){};xl.prototype.applyStyle=function(e){};xl.prototype.update=function(e,t){};xl.prototype.pick=function(e,t,n){};xl.prototype.isDestroyed=function(){return!1};xl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),me(this)};xl._deriveBoundingBox=cae;xl._deriveBoundingRegion=lae;xl._deriveBoundingVolumeS2=aae;var EE=xl;var CQn=y(C(),1);var AAn=y(C(),1),M9e={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},od=Object.freeze(M9e);var dQn=y(C(),1);var NAn=y(C(),1);var CAn=y(C(),1);function TE(e,t){this._distance=t,this._normal=new uae(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(TE.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!m.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),m.clone(e,this._normal._cartesian3)}}});TE.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new TE(e.normal,e.distance),t};TE.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new TE(e.normal,e.distance)};function uae(e,t){this._clippingPlane=t,this._cartesian3=m.clone(e)}Object.defineProperties(uae.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var OC=TE;function Xc(e){e=e??Y.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.edgeColor=U.clone(e.edgeColor??U.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new Ce,this.planeRemoved=new Ce,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?Aae:gae,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o0&&(r=on.OUTSIDE);for(let s=0;s80*n){a=e[0],c=e[1];let u=a,h=c;for(let p=n;pu&&(u=g),f>h&&(h=f)}d=Math.max(u-a,h-c),d=d!==0?32767/d:0}return iB(r,s,n,a,c,d,0),s}function xae(e,t,n,i,o){let r;if(o===oDe(e,t,n,i)>0)for(let s=t;s=t;s-=i)r=Cae(s/i|0,e[s],e[s+1],r);return r&&SE(r,r.next)&&(rB(r),r=r.next),r}function HC(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(SE(n,n.next)||es(n.prev,n,n.next)===0)){if(rB(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function iB(e,t,n,i,o,r,s){if(!e)return;!s&&r&&q9e(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,d=e.next;if(r?k9e(e,i,o,r):U9e(e)){t.push(c.i,e.i,d.i),rB(e),e=d.next,a=d.next;continue}if(e=d,e===a){s?s===1?(e=Y9e(HC(e),t),iB(e,t,n,i,o,r,2)):s===2&&O9e(e,t,n,i,o,r):iB(HC(e),t,n,i,o,r,1);break}}}function U9e(e){let t=e.prev,n=e,i=e.next;if(es(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,d=i.y,u=Math.min(o,r,s),h=Math.min(a,c,d),p=Math.max(o,r,s),g=Math.max(a,c,d),f=i.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=h&&f.y<=g&&nB(o,a,r,c,s,d,f.x,f.y)&&es(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function k9e(e,t,n,i){let o=e.prev,r=e,s=e.next;if(es(o,r,s)>=0)return!1;let a=o.x,c=r.x,d=s.x,u=o.y,h=r.y,p=s.y,g=Math.min(a,c,d),f=Math.min(u,h,p),b=Math.max(a,c,d),x=Math.max(u,h,p),I=Ez(g,f,t,n,i),_=Ez(b,x,t,n,i),E=e.prevZ,S=e.nextZ;for(;E&&E.z>=I&&S&&S.z<=_;){if(E.x>=g&&E.x<=b&&E.y>=f&&E.y<=x&&E!==o&&E!==s&&nB(a,u,c,h,d,p,E.x,E.y)&&es(E.prev,E,E.next)>=0||(E=E.prevZ,S.x>=g&&S.x<=b&&S.y>=f&&S.y<=x&&S!==o&&S!==s&&nB(a,u,c,h,d,p,S.x,S.y)&&es(S.prev,S,S.next)>=0))return!1;S=S.nextZ}for(;E&&E.z>=I;){if(E.x>=g&&E.x<=b&&E.y>=f&&E.y<=x&&E!==o&&E!==s&&nB(a,u,c,h,d,p,E.x,E.y)&&es(E.prev,E,E.next)>=0)return!1;E=E.prevZ}for(;S&&S.z<=_;){if(S.x>=g&&S.x<=b&&S.y>=f&&S.y<=x&&S!==o&&S!==s&&nB(a,u,c,h,d,p,S.x,S.y)&&es(S.prev,S,S.next)>=0)return!1;S=S.nextZ}return!0}function Y9e(e,t){let n=e;do{let i=n.prev,o=n.next.next;!SE(i,o)&&_ae(i,n,n.next,o)&&oB(i,o)&&oB(o,i)&&(t.push(i.i,n.i,o.i),rB(n),rB(n.next),n=e=o),n=n.next}while(n!==e);return HC(n)}function O9e(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&tDe(s,a)){let c=Eae(s,a);s=HC(s,s.next),c=HC(c,c.next),iB(s,t,n,i,o,r,0),iB(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function H9e(e,t,n,i){let o=[];for(let r=0,s=t.length;r=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x=n.x&&n.x>=c&&i!==n.x&&Iae(os.x||n.x===s.x&&j9e(s,n)))&&(s=n,u=h)}n=n.next}while(n!==a);return s}function j9e(e,t){return es(e.prev,e,t.prev)<0&&es(t.next,e,e.next)<0}function q9e(e,t,n,i){let o=e;do o.z===0&&(o.z=Ez(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,$9e(o)}function $9e(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let d=0;d0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function Ez(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function eDe(e){let t=e,n=e;do(t.x=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function nB(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&Iae(e,t,n,i,o,r,s,a)}function tDe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!nDe(e,t)&&(oB(e,t)&&oB(t,e)&&iDe(e,t)&&(es(e.prev,e,t.prev)||es(e,t.prev,t))||SE(e,t)&&es(e.prev,e,e.next)>0&&es(t.prev,t,t.next)>0)}function es(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function SE(e,t){return e.x===t.x&&e.y===t.y}function _ae(e,t,n,i){let o=lQ(es(e,t,n)),r=lQ(es(e,t,i)),s=lQ(es(n,i,e)),a=lQ(es(n,i,t));return!!(o!==r&&s!==a||o===0&&cQ(e,n,t)||r===0&&cQ(e,i,t)||s===0&&cQ(n,e,i)||a===0&&cQ(n,t,i))}function cQ(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function lQ(e){return e>0?1:e<0?-1:0}function nDe(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&_ae(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function oB(e,t){return es(e.prev,e,e.next)<0?es(e,t,e.next)>=0&&es(e,e.prev,t)>=0:es(e,t,e.prev)<0||es(e,e.next,t)<0}function iDe(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function Eae(e,t){let n=Tz(e.i,e.x,e.y),i=Tz(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Cae(e,t,n,i){let o=Tz(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function rB(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Tz(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function oDe(e,t,n,i){let o=0;for(let r=t,s=n-i;r0?ws.COUNTER_CLOCKWISE:ws.CLOCKWISE};zb.triangulate=function(e,t){let n=D.packArray(e);return Sz(n,t,2)};var Rae=new m,Vae=new m,Gae=new m,Tae=new m,Sae=new m,Lae=new m,RA=new m,Zae=new D,Bae=new D,wae=new D,LE=new D;zb.computeSubdivision=function(e,t,n,i,o){o=o??Z.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,d=new Array(c*3),u=new Array(c*2),h=0,p=0;for(a=0;a0;){let E=s.pop(),S=s.pop(),R=s.pop(),G=m.fromArray(d,R*3,Rae),B=m.fromArray(d,S*3,Vae),w=m.fromArray(d,E*3,Gae),F,P,A;r&&(F=D.fromArray(u,R*2,Zae),P=D.fromArray(u,S*2,Bae),A=D.fromArray(u,E*2,wae));let T=m.multiplyByScalar(m.normalize(G,Tae),b,Tae),L=m.multiplyByScalar(m.normalize(B,Sae),b,Sae),V=m.multiplyByScalar(m.normalize(w,Lae),b,Lae),W=m.magnitudeSquared(m.subtract(T,L,RA)),M=m.magnitudeSquared(m.subtract(L,V,RA)),Q=m.magnitudeSquared(m.subtract(V,T,RA)),N=Math.max(W,M,Q),k,v,O;N>I?W===N?(k=`${Math.min(R,S)} ${Math.max(R,S)}`,a=f[k],l(a)||(v=m.add(G,B,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(F,P,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(R,a,E),s.push(a,S,E)):M===N?(k=`${Math.min(S,E)} ${Math.max(S,E)}`,a=f[k],l(a)||(v=m.add(B,w,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(P,A,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(S,a,R),s.push(a,E,R)):Q===N&&(k=`${Math.min(E,R)} ${Math.max(E,R)}`,a=f[k],l(a)||(v=m.add(w,G,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(A,F,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(E,a,S),s.push(a,R,S)):(g.push(R),g.push(S),g.push(E))}let _={attributes:{position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})},indices:g,primitiveType:We.TRIANGLES};return r&&(_.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),new pt(_)};var aDe=new ge,cDe=new ge,lDe=new ge,Lz=new ge;zb.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??Z.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,d=new Array(c*3),u=new Array(c*2),h=0,p=0;for(a=0;a0;){let R=s.pop(),G=s.pop(),B=s.pop(),w=m.fromArray(d,B*3,Rae),F=m.fromArray(d,G*3,Vae),P=m.fromArray(d,R*3,Gae),A,T,L;r&&(A=D.fromArray(u,B*2,Zae),T=D.fromArray(u,G*2,Bae),L=D.fromArray(u,R*2,wae));let V=e.cartesianToCartographic(w,aDe),W=e.cartesianToCartographic(F,cDe),M=e.cartesianToCartographic(P,lDe);I.setEndPoints(V,W);let Q=I.surfaceDistance;_.setEndPoints(W,M);let N=_.surfaceDistance;E.setEndPoints(M,V);let k=E.surfaceDistance,v=Math.max(Q,N,k),O,H,ee,K,te;v>x?Q===v?(O=`${Math.min(B,G)} ${Math.max(B,G)}`,a=f[O],l(a)||(H=I.interpolateUsingFraction(.5,Lz),ee=(V.height+W.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(A,T,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(B,a,R),s.push(a,G,R)):N===v?(O=`${Math.min(G,R)} ${Math.max(G,R)}`,a=f[O],l(a)||(H=_.interpolateUsingFraction(.5,Lz),ee=(W.height+M.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(T,L,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(G,a,B),s.push(a,R,B)):k===v&&(O=`${Math.min(R,B)} ${Math.max(R,B)}`,a=f[O],l(a)||(H=E.interpolateUsingFraction(.5,Lz),ee=(M.height+V.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(L,A,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(R,a,G),s.push(a,B,G)):(g.push(B),g.push(G),g.push(R))}let S={attributes:{position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})},indices:g,primitiveType:We.TRIANGLES};return r&&(S.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),new pt(S)};zb.scaleToGeodeticHeight=function(e,t,n,i){n=n??ie.default;let o=rDe,r=sDe;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};Kb.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};Kb.prototype.contains=function(e){return this._array.indexOf(e)!==-1};Kb.prototype.clear=function(){this._array.length=this._offset=this._length=0};Kb.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var Jb=Kb;var hr={};hr.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let d=0;d0?new Array(o):void 0;for(let a=0;aZ.PI){let c=s;s=a,a=c}if(!(r.longitudea))return n.cartographicToCartesian(r)}function yDe(e,t,n,i){if(i===dn.RHUMB)return bDe(e,t,n);let o=fi.lineSegmentPlane(e,t,An.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var CDe=new ge;function xDe(e,t,n){let i=[],o,r,s,a,c,d=0;for(;dt.cartesianToCartographic(h,CDe).longitude;if(s===0)i.push({position:d,type:s,visited:!1,next:a,theta:u(o)});else if(a!==0){if(c=yDe(o,r,t,n),++d,!l(c))continue;e.splice(d,0,c),i.push({position:d,type:s,visited:!1,next:a,theta:u(c)})}++d}return i}function Pae(e,t,n,i,o,r,s){let a=[],c=r,d=h=>p=>p.position===h,u=[];do{let h=n[c];a.push(h);let p=i.findIndex(d(c)),g=i[p];if(!l(g)){++c;continue}let{visited:f,type:b,next:x}=g;if(g.visited=!0,b===0){if(x===0){let S=i[p-(s?1:-1)];if(S?.position===c+1)S.visited=!0;else{++c;continue}}if(!f&&s&&x>0||r===c&&!s&&x<0){++c;continue}}if(!(s?b>=0:b<=0)){++c;continue}f||u.push(c);let _=p+(s?1:-1),E=i[_];if(!l(E)){++c;continue}c=E.position}while(c=0&&c!==r&&a.lengthd.theta-u.theta);let c=s[0].z>=0;o=Pae(i,o,s,a,1,0,c)}return i};hr.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new Jb;c.enqueue(e);let d=l(r);for(;c.length!==0;){let u=c.dequeue(),h=u.positions,p=u.holes,g,f;if(i)for(f=h.length,g=0;g1){for(let B of G)c.enqueue(new lc(B,p));continue}}let _=h.slice(),E=l(p)?p.length:0,S=[],R;for(g=0;gMath.PI&&(e-=Z.TWO_PI),e}}});var RE=new ge,RDe=new m;ts.prototype.getLatitude=function(e){l(e)||(e=ie.default),RE.latitude=this.conformalLatitude,RE.longitude=this.longitude,RE.height=0;let t=this.ellipsoid.cartographicToCartesian(RE,RDe);return e.cartesianToCartographic(t,RE),RE.latitude};var VDe=new En,GDe=new m,ZDe=new m;ts.fromCartesian=function(e,t){let n=Z.signNotZero(e.z),i=ts.NORTH_POLE_TANGENT_PLANE,o=ts.SOUTH_POLE;n<0&&(i=ts.SOUTH_POLE_TANGENT_PLANE,o=ts.NORTH_POLE);let r=VDe;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=m.subtract(r.origin,o,GDe),m.normalize(r.direction,r.direction);let s=fi.rayPlane(r,i.plane,ZDe),a=m.subtract(s,o,s),c=m.dot(i.xAxis,a),d=n*m.dot(i.yAxis,a);return l(t)?(t.position=new D(c,d),t.tangentPlane=i,t):new ts(new D(c,d),i)};ts.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i=0?s:s+Z.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),d=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==dn.RHUMB){let p=D.subtract(t.position,e.position,KDe),g=D.dot(t.position,p)/D.dot(p,p);if(g>0&&g<1){let f=D.add(t.position,D.multiplyByScalar(p,-g,p),JDe),b=Wc.clone(t,jDe);b.position=f;let x=b.getLatitude(n);r.south=Math.min(r.south,x),r.north=Math.max(r.north,x),Math.abs(c)>Math.abs(x)&&(d=x)}}let u=t.x*e.y-e.x*t.y,h=Math.sign(u);h!==0&&(h*=D.angleBetween(t.position,e.position)),d>=0&&(o.northAngle+=h),d<=0&&(o.southAngle+=h)}var Uae=new Wc,qDe=new Wc,im={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};om.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new le),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,im.northAngle=0,im.southAngle=0,im.westOverIdl=Number.POSITIVE_INFINITY,im.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=Wc.fromCartesian(e[0],qDe);for(let s=1;sim.eastOverIdl-im.westOverIdl&&(i.west=im.westOverIdl,i.east=im.eastOverIdl,i.east>Z.PI&&(i.east=i.east-Z.TWO_PI),i.west>Z.PI&&(i.west=i.west-Z.TWO_PI)),Z.equalsEpsilon(Math.abs(im.northAngle),Z.TWO_PI,Z.EPSILON10)&&(i.north=Z.PI_OVER_TWO,i.east=Z.PI,i.west=-Z.PI),Z.equalsEpsilon(Math.abs(im.southAngle),Z.TWO_PI,Z.EPSILON10)&&(i.south=-Z.PI_OVER_TWO,i.east=Z.PI,i.west=-Z.PI),i};var $De=new Wc;function eQe(e,t,n){return e.height>=Z.PI||e.width>=Z.PI?Wc.fromCartesian(t[0],$De).tangentPlane:gs.fromPoints(t,n)}var kae=new ge;function tQe(e,t,n){return(i,o)=>{if(e.height>=Z.PI||e.width>=Z.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s=Z.PI||e.width>=Z.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,kae);return l(r)||(r=new D),r.x=s.longitude/Z.PI,r.y=s.latitude/Z.PI_OVER_TWO,r}return Wc.fromCartesian(o,r)};let i=gs.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function iQe(e,t,n,i){return(o,r)=>!i&&(e.height>=Z.PI_OVER_TWO||e.width>=2*Z.PI_OVER_THREE)?ti.splitPolygonsOnEquator(o,t,n,r):o}function oQe(e,t,n,i){if(t.height>=Z.PI||t.width>=Z.PI)return Ke.fromRectangle(t,void 0,vae);let o=e,r=gs.fromPoints(o,n);return ti.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,vae)}om.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,d=e._arcType,u=e._textureCoordinates,h=l(u),p=r.positions;if(p.length<3)return;let g=e.rectangle,f=ti.polygonsFromHierarchy(r,h,tQe(g,p,n),!s,n,iQe(g,n,d,s)),b=f.hierarchy,x=f.polygons,I=function(V){return V},_=h?ti.polygonsFromHierarchy(u,!0,I,!1,n).polygons:void 0;if(b.length===0)return;let E=b[0].outerRing,S=oQe(E,g,n,o),R=[],G=e._height,B=e._extrudedHeight,w=e._perPositionHeightExtrude||!Z.equalsEpsilon(G,B,0,Z.EPSILON2),F={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:eQe(g,E,n).plane.normal,projectTo2d:nQe(g,E,n),boundingRectangle:S,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:d},P;if(w)for(F.extrude=!0,F.top=a,F.bottom=c,F.shadowVolume=e._shadowVolume,F.offsetAttribute=e._offsetAttribute,P=0;P 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function xs(e){e=e??Y.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new Ce,this.polygonRemoved=new Ce,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;iGE.equals(t,e))};xs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>GE.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var aQe=new le;function cQe(e){let t=[],n=[],i=e.length;for(let r=0;rle.union(e[x].computeSphericalExtents(aQe),b,b),a),t[p]=void 0,n[p]=void 0,c=Math.max(a.height*2.5,.001),d=Math.max(a.width*2.5,.001),u=le.clone(a,u),u.south-=c,u.west-=d,u.north+=c,u.east+=d,u.south=Math.max(u.south,-Math.PI),u.west=Math.max(u.west,-Math.PI),u.north=Math.min(u.north,Math.PI),u.east=Math.min(u.east,Math.PI),p=-1}}t.push(u),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}xs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;ns+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s{e._signedDistanceComputeCommand=void 0}})}var Hae=new le,uQe=new le;xs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=on.OUTSIDE;this.inverse&&(o=on.INSIDE);for(let r=0;r= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var d0n=y(C(),1),cB=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var m0n=y(C(),1),lB=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var f0n=y(C(),1),dB=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var A0n=y(C(),1),uB=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function Ai(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??Y.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(Kt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new j;let n=Math.pow(2,t-1);this._textureDimensions=new D(n,n),this._radiiAndDynamicAtmosphereColor=new m,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??Ai.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(Ai.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){m.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=m.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});Ai._maximumComputeCommandCount=8;Ai._activeComputeCommandCount=0;Ai._nextFrameCommandQueue=[];Ai._queueCommand=(e,t)=>{if(Ai._activeComputeCommandCount>=Ai._maximumComputeCommandCount){Ai._nextFrameCommandQueue.push(e);return}t.commandList.push(e),Ai._activeComputeCommandCount++};Ai._updateCommandQueue=e=>{if(Ai._maximumComputeCommandCount=Math.log2(Kt.maximumCubeMapSize),Ai._nextFrameCommandQueue.length>0&&Ai._activeComputeCommandCounts,u_enuToFixedFrame:()=>c,u_faceDirection:()=>Pr.getDirection(h,Kae),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>d,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,gQe)},owner:e});f.postExecute=()=>{if(e.isDestroyed()||f.canceled){Ai._activeComputeCommandCount--;return}let b=e._radianceMapComputeCommands;b[g]=void 0;let x=new jr({context:n,colorTextures:[e._radianceMapTextures[g]]});x._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),x._unBind(),x.destroy(),Ai._activeComputeCommandCount--,b.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[u]=f,Ai._queueCommand(f,t),u++}e._radianceCommandsDirty=!1}}function yQe(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,d=(h,p,g,f,b)=>()=>{if(e.isDestroyed()||h.canceled){Ai._activeComputeCommandCount--;return}let x=e._convolutionComputeCommands;x[p]=void 0,n.copyFace(t,g,f,b),c++,Ai._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[p]=void 0;let I=e._specularMapTextures.length;c>=I&&(e._irradianceCommandDirty=!0,n.sampler=new sn({minificationFilter:en.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},u=0;for(let h=1;hh/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>Pr.getDirection(p,Kae)}});x.postExecute=d(x,u,g,p,h),e._convolutionComputeCommands[u]=x,Ai._queueCommand(x,t),++u}r/=2,s/=2}}var Jae=new D(3,3);function CQe(e,t){let n=t.context,i=Jae,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Wt({context:n,width:i.x,height:i.y,pixelDatatype:Ye.FLOAT,pixelFormat:tt.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new Oe({sources:[cB]}),e._irradianceMapFS=r);let s=new Il({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){Ai._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,Ai._activeComputeCommandCount--},e._irradianceComputeCommand=s,Ai._queueCommand(s,t),e._irradianceTextureDirty=!0}function xQe(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new jr({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Jae,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=m.unpack(r,s*4),m.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}Ai.prototype.update=function(e){let t=e.mode;if(!Ai.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===re.MORPHING){this._shouldRegenerateShaders=!1;return}Ai._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=fQe(this,e)||i===GA.SUNLIGHT&&!j.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=j.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(bQe(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(yQe(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(CQe(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){xQe(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};Ai.prototype.isDestroyed=function(){return!1};Ai.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t4?(xt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==bt.SCALAR?(xt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==Ut.UINT8?(xt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:bt.isVectorType(t)||t===bt.SCALAR?n!==Ut.UINT8?(xt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(xt(`Property texture property ${e.id} has an unsupported type`),!1)};var EQe=[void 0,"float","vec2","vec3","vec4"],TQe=[void 0,"int","ivec2","ivec3","ivec4"];fB.prototype.getGlslType=function(){let e=this._classProperty,t=bt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?EQe[t]:TQe[t]};fB.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function SQe(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var pB=fB;function Zz(e){e=e??Y.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new pB({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(Zz.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Zz.prototype.getProperty=function(e){return this._properties[e]};var wA=Zz;var wyn=y(C(),1);var Ryn=y(C(),1);function qae(e){e=e??Y.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(qae.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var AB=qae;function Bz(e){e=e??Y.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new AB({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Bz.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Bz.prototype.getProperty=function(e){return this._properties[e]};var jC=Bz;var Pyn=y(C(),1);function gB(e){e=e??Y.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(gB.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n=r;)I=o[I-r];o.push(I),s[b]=x}x>kQe&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):x>YQe&&t instanceof Uint8Array&&(t=new Uint16Array(t)),b===c?(c=x,t[a]=x):b===d?(d=x,t[a+1]=x):(u=x,t[a+2]=x),b=ece(i,c,d,u,p,g,f)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function ece(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,d=0,u=wz(e,t,a,c,d);if(u===0)return t;let h=0,p=o?1:0,g=r?1:0,f=wz(e,n,h,p,g);if(f===0)return n;let b=s?1:0,x=0,I=r?1:0,_=wz(e,i,b,x,I);if(_===0)return i;let E=u&f&_,S,R,G;if(E&1)S=0,R=1,G=2;else if(E&2)S=0,G=1,R=2;else if(E&4)R=0,S=1,G=2;else if(E&8)R=0,G=1,S=2;else if(E&16)G=0,S=1,R=2;else if(E&32)G=0,R=1,S=2;else{let P=Xz(u),A=Xz(f),T=Xz(_);return P>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}fQ.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a1;)i>>=1,r.push(tce(i));let s=new Wt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:tt.LUMINANCE,sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function tce(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function nce(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Ho.FAILED;let o=this._processError;this._processError=void 0,AQ(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Ho.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Ho.FAILED,AQ(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Ho.FAILED,AQ(this,o)}return this._incrementallyLoadTextures?n:n&&i};function B5e(e,t,n,i,o,r,s,a,c){let d=e.gltfJson,h=d.accessors[t].bufferView;return Mi.getVertexBufferLoader({gltf:d,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function w5e(e,t,n,i,o,r,s){return Mi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function X5e(e,t){let n=Mi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function Ace(e,t,n){let i=t.byteOffset,o=nd(e,t),r=t.count,s=Ud(t.type),a=t.componentType,c=J.getSizeInBytes(a),d=c*s,u=r*s;if(o===d)return n=new Uint8Array(n),J.createArrayBufferView(a,n.buffer,n.byteOffset+i,u);let h=J.createTypedArray(a,u),p=new DataView(n.buffer),g=new Array(s),f=LA(t.componentType);i=n.byteOffset+i;for(let b=0;b{let a=1/0,c=-1/0,d=1/0,u=-1/0,h=1/0,p=-1/0;for(let g=0;g{l(o)&&l(o.attributes)&&l(o.attributes[p])?O5e(I,_,s,a):l(r)?H5e(I,_,s,a):z5e(d,u,I,_,s,a)},I}function yce(e,t,n,i,o,r,s,a,c){let d=n.modelSemantic,u=d===lt.POSITION,h=d===lt.FEATURE_ID,p=u&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=u&&e._enablePick&&!c.context.webgl2,f=e._loadForClassification&&h,b=e._loadAttributesAsTypedArray,x=!b,I=b||p||g||f,S=bce(e,t,n,i,o,r,a?!1:x,a?!0:I,c),R=new $C.AttributeLoadPlan(S);return R.loadBuffer=x,R.loadTypedArray=I,R}function K5e(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=Pz(e,Is,i),d=c.modelSemantic,u=d===Is.TRANSLATION||d===Is.ROTATION||d===Is.SCALE,h=d===Is.TRANSLATION,p=e._loadAttributesAsTypedArray||s&&u||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,f=!p,b=e._loadAttributesFor2D&&!o.scene3DOnly;return bce(e,t,c,void 0,void 0,void 0,f,p||h&&(!a||b||g),o)}function J5e(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let d=new a5e;d.count=a.count;let u=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,p=e._loadForClassification&&o,f=!u,b=u||h||p,_=w5e(e,t,n,i,r?!1:f,r?!0:b,s),E=e._geometryLoaders.length;e._geometryLoaders.push(_);let S=_.load();e._loaderPromises.push(S),e._geometryCallbacks[E]=()=>{d.indexDatatype=_.indexDatatype,d.buffer=_.buffer,d.typedArray=_.typedArray};let R=new $C.IndicesLoadPlan(d);return R.loadBuffer=f,R.loadTypedArray=b,R}function El(e,t,n,i){let o=e.gltfJson,r=id.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Mi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=id.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let d=s.load().catch(u=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw u;e._textureState=Ho.FAILED,e._textureErrors.push(u)}});return e._texturesPromises.push(d),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function j5e(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new E5e;return l(i)&&(c.diffuseTexture=El(e,i,n)),l(o)&&(c.specularGlossinessTexture=El(e,o,n)),c.diffuseFactor=Yd(ce,r),c.specularFactor=Yd(m,s),c.glossinessFactor=a,c}function q5e(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new _5e;return l(i)&&(c.baseColorTexture=El(e,i,n)),l(o)&&(c.metallicRoughnessTexture=El(e,o,n)),c.baseColorFactor=Yd(ce,r),c.metallicFactor=s,c.roughnessFactor=a,c}function $5e(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new T5e;return l(o)&&(a.specularTexture=El(e,o,n)),l(s)&&(a.specularColorTexture=El(e,s,n)),a.specularFactor=i,a.specularColorFactor=Yd(m,r),a}function eUe(e,t,n){let{anisotropyStrength:i=Wz.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=Wz.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new Wz;return l(r)&&(s.anisotropyTexture=El(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function tUe(e,t,n){let{clearcoatFactor:i=Fz.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=Fz.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new Fz;return l(o)&&(c.clearcoatTexture=El(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=El(e,s,n)),l(a)&&(c.clearcoatNormalTexture=El(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function nUe(e,t,n){let i=new S5e,o=t.extensions??Y.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,d=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=j5e(e,r,n):(l(d)&&(i.metallicRoughness=q5e(e,d,n)),l(s)&&!i.unlit&&(i.specular=$5e(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=eUe(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=tUe(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=El(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=El(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=El(e,t.occlusionTexture,n)),i.emissiveFactor=Yd(m,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Cce(e,t){let n=new hce;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function xce(e,t,n,i){let o=new hce,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=gce(r.attribute),o.positionalLabel=i,o}function Ice(e,t){let n=new pce;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function _ce(e,t,n,i){let o=new pce,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function iUe(e,t,n,i){let o=new fce;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=El(e,r,n,sn.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function oUe(e,t,n,i,o,r){let s=new fce,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=El(e,c,i,sn.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function rUe(e,t,n,i,o){let r=new c5e,s=void 0,a=void 0,c=void 0,d=!1;for(let u in t){if(!t.hasOwnProperty(u))continue;let h=t[u],p=Pz(e,lt,u),g=yce(e,h,p,s,a,c,d,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function sUe(e,t,n,i){let o=new l5e,r=new $C(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=nUe(e,e.gltfJson.materials[s],i));let a=t.extensions??Y.EMPTY_OBJECT,c=!1,d=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(d)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=aUe(e,d,r));let u=a.KHR_spz_gaussian_splats_compression;l(u)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,p=a.KHR_draco_mesh_compression,g=!1,f=t.attributes;if(l(f))for(let G in f){if(!f.hasOwnProperty(G))continue;let B=f[G],w=Pz(e,lt,G),F=w.modelSemantic;if(h&&!Y5e(F))continue;F===lt.FEATURE_ID&&(g=!0);let P=yce(e,B,w,t,p,u,n,c,i);r.attributePlans.push(P),o.attributes.push(P.attribute)}let b=t.targets;if(l(b)&&!h)for(let G=0;Gn[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=gQ(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(X.IDENTITY);return i}function bUe(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=gUe(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};XE.prototype.isDestroyed=function(){return!1};XE.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),me(this)};var ZB=XE;var _In=y(C(),1);var AIn=y(C(),1);var rd={RGBA4:ne.RGBA4,RGBA8:ne.RGBA8,RGBA16F:ne.RGBA16F,RGBA32F:ne.RGBA32F,RGB5_A1:ne.RGB5_A1,RGB565:ne.RGB565,DEPTH_COMPONENT16:ne.DEPTH_COMPONENT16,STENCIL_INDEX8:ne.STENCIL_INDEX8,DEPTH_STENCIL:ne.DEPTH_STENCIL,DEPTH24_STENCIL8:ne.DEPTH24_STENCIL8,validate:function(e){return e===rd.RGBA4||e===rd.RGBA8||e===rd.RGBA16F||e===rd.RGBA32F||e===rd.RGB5_A1||e===rd.RGB565||e===rd.DEPTH_COMPONENT16||e===rd.STENCIL_INDEX8||e===rd.DEPTH_STENCIL||e===rd.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ne.FLOAT?rd.RGBA32F:e===ne.HALF_FLOAT_OES?rd.RGBA16F:rd.RGBA8}},Tl=Object.freeze(rd);function BB(e){e=e??Y.EMPTY_OBJECT;let t=e.context,n=t._gl,i=Kt.maximumRenderbufferSize,o=e.format??Tl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(BB.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});BB.prototype._getRenderbuffer=function(){return this._renderbuffer};BB.prototype.isDestroyed=function(){return!1};BB.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),me(this)};var Hd=BB;function Hs(e){e=e??Y.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Hs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Hs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Hs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??Ye.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??tt.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s1){let a=Tl.getColorFormat(o);this._colorRenderbuffers[s]=new Hd({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Wt({context:e,width:t,height:n,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Wt({context:e,width:t,height:n,pixelFormat:tt.DEPTH_COMPONENT,pixelDatatype:Ye.UNSIGNED_INT,sampler:sn.NEAREST}):this._depthRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new ZB({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new jr({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Hs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};Hs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Hs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};Hs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Hs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Hs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Hs.prototype.getDepthTexture=function(){return this._depthTexture};Hs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Hs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Hs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Hs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Hs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Hs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Hs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Hs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Hs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n=s.clientWidth)d=!0;else{if(E.x>s.clientWidth*.5){a.width=E.x,c.frustum.right=p.x-I,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,vz),a.x+=E.x,c.position.x=-c.position.x;let S=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-S,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,Nz)}else{a.x+=E.x,a.width-=E.x,c.frustum.left=-p.x-I,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,vz),a.x=a.x-a.width,c.position.x=-c.position.x;let S=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-S,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,Nz)}m.clone(g,c.position),c.frustum=f.clone(),i=D.clone(vz,i),(i.x<0||i.x>s.clientWidth)&&(i.x=Nz.x)}}if(o.mode!==re.SCENE2D||d){if(vc=XB(r,n,c,vc),vc.z<0&&!(c.frustum instanceof gn)&&!(c.frustum instanceof qr))return;i=mc.clipToGLWindowCoordinates(a,vc,i)}return i.y=s.clientHeight-i.y,i};mc.worldToDrawingBufferCoordinates=function(e,t,n){if(n=mc.worldToWindowCoordinates(e,t,n),!!l(n))return mc.transformWindowToDrawingBuffer(e,n,n)};var WA=new m,HUe=new ge;mc.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===re.SCENE3D)return m.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,HUe);if(!l(r))return;if(o.project(r,WA),i===re.COLUMBUS_VIEW)return m.fromElements(WA.z,WA.x,WA.y,n);if(i===re.SCENE2D)return m.fromElements(0,WA.x,WA.y,n);let s=e.morphTime;return m.fromElements(Z.lerp(WA.z,t.x,s),Z.lerp(WA.x,t.y,s),Z.lerp(WA.y,t.z,s),n)};var Vce=new m,Gce=new m,Zce=new X;mc.clipToGLWindowCoordinates=function(e,t,n){return m.divideByScalar(t,t.w,Vce),X.computeViewportTransformation(e,0,1,Zce),X.multiplyByPoint(Zce,Vce,Gce),D.fromCartesian3(Gce,n)};mc.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return D.fromElements(t.x*o,t.y*r,n)};var zUe=new ce,Bce=new ce;mc.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,f=Math.pow(2,g)-1;n=c*(1-a/(f+a))/(c-a)}let d=e.view.passState.viewport,u=ce.clone(ce.UNIT_W,zUe);u.x=(t.x-d.x)/d.width*2-1,u.y=(t.y-d.y)/d.height*2-1,u.z=n*2-1,u.w=1;let h,p=e.camera.frustum;if(l(p.fovy)){h=X.multiplyByVector(r.inverseViewProjection,u,Bce);let g=1/h.w;m.multiplyByScalar(h,g,h)}else{let g=p.offCenterFrustum;l(g)&&(p=g),h=Bce,h.x=(u.x*(p.right-p.left)+p.left+p.right)*.5,h.y=(u.y*(p.top-p.bottom)+p.bottom+p.top)*.5,h.z=(u.z*(a-c)-a-c)*.5,h.w=1,h=X.multiplyByVector(r.inverseView,h,h)}return m.fromCartesian4(h,i)};var to=mc;var cEn=y(C(),1);var x_n=y(C(),1);var FE={};FE._deprecationWarning=_r;var FA=Uint32Array.BYTES_PER_ELEMENT;FE.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=FA;let r=o.getUint32(t,!0);if(r!==1)throw new de(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=FA;let s=o.getUint32(t,!0);t+=FA;let a=o.getUint32(t,!0);t+=FA;let c=o.getUint32(t,!0);t+=FA;let d=o.getUint32(t,!0);t+=FA;let u=o.getUint32(t,!0);t+=FA;let h;d>=570425344?(t-=FA*2,h=a,d=c,u=0,a=0,c=0,FE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):u>=570425344&&(t-=FA,h=d,d=a,u=c,a=0,c=0,FE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let p;a===0?p={BATCH_LENGTH:h??0}:(p=mr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let f,b;d>0&&(f=mr(i,t,d),t+=d,u>0&&(b=new Uint8Array(e,t,u),b=new Uint8Array(b),t+=u));let x=n+s-t;if(x===0)throw new de("glTF byte length must be greater than 0.");let I;return t%4===0?I=new Uint8Array(e,t,x):(FE._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),I=new Uint8Array(i.subarray(t,t+x))),{batchLength:h,featureTableJson:p,featureTableBinary:g,batchTableJson:f,batchTableBinary:b,gltf:I}};var WB=FE;var T_n=y(C(),1);function FB(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function wce(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=J.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function KUe(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=J.createTypedArray(n,i),o[t]=r),r}FB.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??J.UNSIGNED_INT,n=n??1,wce(this,e,t,n,1,i.byteOffset)):i};FB.prototype.hasProperty=function(e){return l(this.json[e])};FB.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=J.fromName(i.componentType)),wce(this,e,t,n,this.featuresLength,i.byteOffset)):KUe(this,e,t,i)};FB.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a0&&(f=mr(i,t,d),t+=d,u>0&&(b=new Uint8Array(e,t,u),b=new Uint8Array(b),t+=u));let x=n+s-t;if(x===0)throw new de("glTF byte length must be greater than 0.");let I;return t%4===0?I=new Uint8Array(e,t,x):(yQ._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),I=new Uint8Array(i.subarray(t,t+x))),{gltfFormat:h,featureTableJson:p,featureTableBinary:g,batchTableJson:f,batchTableBinary:b,gltf:I}};var NB=yQ;var MA={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},CQ=Tn.Attribute,Ake=Tn.FeatureIdAttribute,vce=Tn.Instances;function vA(e){e=e??Y.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??ho.Y,d=e.forwardAxis??ho.X,u=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,p=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=d,this._loadAttributesAsTypedArray=u,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=p,this._enablePick=g,this._state=MA.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=X.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(vA.prototype=Object.create(Yi.prototype),vA.prototype.constructor=vA);Object.defineProperties(vA.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});vA.prototype.load=function(){if(l(this._promise))return this._promise;let e=NB.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Sh(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new de("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(c)&&(this._transform=X.fromTranslation(m.fromArray(c))),this._batchTable={json:i,binary:o};let d={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=$l(e.gltf);h=h.replace(/[\s\0]+$/,"");let p=this._baseResource.getDerivedResource({url:h});d.gltfResource=p,d.baseResource=p}else d.gltfResource=this._i3dmResource,d.typedArray=e.gltf;let u=new Od(d);return this._gltfLoader=u,this._state=MA.LOADING,this._promise=u.load().then(()=>{if(!this.isDestroyed())return this._state=MA.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw gke(this,h)}),this._promise};function gke(e,t){return e.unload(),e._state=MA.FAILED,e.getError("Failed to load i3dm",t)}vA.prototype.process=function(e){if(this._state===MA.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===MA.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=X.multiplyTransformation(this._transform,i.transform,i.transform),Cke(this,i,e),bke(this,i),this._components=i,this._arrayBuffer=void 0,this._state=MA.READY,!0};function bke(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=PA({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new _l({name:Ch.BATCH_TABLE_CLASS_NAME,count:i});o=new fa({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var xQ=new m,Uz=new Array(4),yke=new X;function Cke(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",J.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,d=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),u=Ike(o,r),h;c&&(h=new Float32Array(4*r));let p;d&&(p=new Float32Array(3*r));let g=new Float32Array(r),f=m.unpackArray(u),b=new m,x=new m,I=new m,_=new m,E=new $,S=new Pe,R=new Array(4),G=new m,B=new Array(3),w=new X;if(!l(s)||m.equals(m.unpack(s),m.ZERO)){let N=ue.fromPoints(f);for(i=0;i0&&(N.instances=Q?xke(F):F,Q=!0)}}function xke(e){let t=new vce;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o=n[t]){if(t+1=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o=n[o]&&e=0&&!(e>=n[o]&&en&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};PE.prototype.clampTime=function(e){let t=this.times;return Z.clamp(e,t[0],t[t.length-1])};var yo=PE;function ME(e){this._value=e,this._valueType=yo.getPointType(e)}Object.defineProperties(ME.prototype,{value:{get:function(){return this._value}}});ME.prototype.findTimeInterval=function(e){};ME.prototype.wrapTime=function(e){return 0};ME.prototype.clampTime=function(e){return 0};ME.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var QB=ME;var QTn=y(C(),1);var VTn=y(C(),1);function vE(e){e=e??Y.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=yo.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(vE.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});vE.prototype.findTimeInterval=yo.prototype.findTimeInterval;vE.prototype.wrapTime=yo.prototype.wrapTime;vE.prototype.clampTime=yo.prototype.clampTime;vE.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new m),m.lerp(n[o],n[o+1],r,t))};var i0=vE;var BTn=y(C(),1);var Nce={};Nce.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a=0;--a)s[a]=m.subtract(r[a],m.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var NE=Nce;var Dce=[],Qce=[],Uce=[],kce=[];function Lke(e,t,n){let i=Dce,o=Uce,r=Qce,s=kce;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new m),m.clone(t,c),a=1;a0&&e.afterRender.push(a._raiseStartEvent)),a.loop===od.REPEAT)g=g-Math.floor(g);else if(a.loop===od.MIRRORED_REPEAT){let I=Math.floor(g),_=g-I;g=I%2===1?1-_:_}a.reverse&&(g=1-g);let x=g*d*a.multiplier;x=Z.clamp(x,a.localStartTime,a.localStopTime),a.animate(x),a.update.numberOfListeners>0&&(a._updateEventTime=x,e.afterRender.push(a._raiseUpdateEvent)),i=!0,b||(a._state=Lh.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&IQ.push(a))}}n=IQ.length;for(let s=0;sZ.EPSILON3}};var ew=Hce;var _Ln=y(C(),1);var pLn=y(C(),1),tw=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var zce={name:"ImageBasedLightingPipelineStage"},Nke=new D;zce.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,be.FRAGMENT),r.addUniform("vec2","model_iblFactor",be.FRAGMENT),ph.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",be.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,be.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,be.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,be.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",be.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,be.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,be.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,be.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",be.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",be.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,be.FRAGMENT)),r.addFragmentLines(tw);let c={model_iblFactor:function(){return D.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,Nke)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=Lt(c,e.uniformMap)};var nw=zce;var PLn=y(C(),1);var ZLn=y(C(),1);var Dke=Z.EPSILON16;function zz(e){e=e??Y.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(zz.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=Z.clamp(e,this.minimumValue,this.maximumValue),Z.equalsEpsilon(this._currentValue,e,Dke)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var Qke=new m,Hz=new $;zz.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=Qke,o;switch(t){case Pc.XROTATE:o=$.fromRotationX(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.YROTATE:o=$.fromRotationY(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.ZROTATE:o=$.fromRotationZ(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=X.multiplyByTranslation(e,i,e);break;case Pc.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=X.multiplyByTranslation(e,i,e);break;case Pc.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=X.multiplyByTranslation(e,i,e);break;case Pc.XSCALE:i.x=n,i.y=1,i.z=1,e=X.multiplyByScale(e,i,e);break;case Pc.YSCALE:i.x=1,i.y=n,i.z=1,e=X.multiplyByScale(e,i,e);break;case Pc.ZSCALE:i.x=1,i.y=1,i.z=n,e=X.multiplyByScale(e,i,e);break;case Pc.UNIFORMSCALE:e=X.multiplyByUniformScale(e,n,e);break;default:break}return e};var iw=zz;function _Q(e){e=e??Y.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Uke(this)}Object.defineProperties(_Q.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Uke(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Kce={name:"ModelClippingPlanesPipelineStage"},Oke=new D;Kce.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,be.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,be.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,be.FRAGMENT),Ws.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,be.FRAGMENT);let s=Ws.getTextureResolution(i,o,Oke);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,be.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,be.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",be.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",be.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",be.FRAGMENT),r.addFragmentLines(sw);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=U.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=Lt(a,e.uniformMap)};var aw=Kce;var m1n=y(C(),1);var o1n=y(C(),1),cw=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var s1n=y(C(),1),lw=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Jce={name:"ModelClippingPolygonsPipelineStage"};Jce.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,be.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,be.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,be.BOTH),o.addUniform("sampler2D","model_clippingDistance",be.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",be.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(cw),o.addFragmentLines(lw);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=Lt(r,e.uniformMap)};var dw=Jce;var p1n=y(C(),1);function jce(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(jce.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var uw=jce;var lRn=y(C(),1);var k1n=y(C(),1);var g1n=y(C(),1),mw=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var y1n=y(C(),1),hw=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var x1n=y(C(),1),fw=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var EQ=new X,Hke=new X,zke=new X,$ce={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:ole,_transformsToTypedArray:Jz};$ce.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(mw);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,d=n.mode!==re.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,u=s._enablePick&&!n.context.webgl2,h=[];lYe(e,n,i,h,d,u),mYe(e,n,i,h);let p={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,be.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",be.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",be.VERTEX),p.u_instance_modifiedModelView=function(){let g=X.multiplyTransformation(s.modelMatrix,a.components.transform,EQ);return d?X.multiplyTransformation(n.context.uniformState.view3D,g,EQ):(n.mode!==re.SCENE3D&&(g=Dt.basisTo2D(n.mapProjection,g,EQ)),X.multiplyTransformation(n.context.uniformState.view,g,EQ))},p.u_instance_nodeTransform=function(){return X.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,Hke)},r.addVertexLines(fw)):r.addVertexLines(hw),d){r.addDefine("USE_2D_INSTANCING",void 0,be.VERTEX),r.addUniform("mat4","u_modelView2D",be.VERTEX);let g=n.context,f=X.fromTranslation(c.instancingReferencePoint2D,new X);p.u_modelView2D=function(){return X.multiplyTransformation(g.uniformState.view,f,zke)}}e.uniformMap=Lt(p,e.uniformMap),e.instanceCount=o,ci(e.attributes,h)};var pw=new X,Kke=new m;function Jke(e,t,n,i,o){let r=X.multiplyTransformation(t,e,pw);return r=X.multiplyTransformation(r,n,pw),o=Dt.basisTo2D(i.mapProjection,r,o),o}function jke(e,t,n,i,o){let r=X.fromTranslation(e,pw),s=X.multiplyTransformation(t,r,pw);s=X.multiplyTransformation(s,n,pw);let a=X.getTranslation(s,Kke);return o=to.computeActualEllipsoidPosition(i,a,o),o}function ele(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=X.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=X.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=X.clone(o.computedModelMatrix,t),t=X.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=X.clone(X.IDENTITY,n))}var tle=new X,nle=new X,qke=new X,$ke=new m;function eYe(e,t,n,i){let o=tle,r=nle;ele(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let d=0;d=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:kt.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var Aw=$ce;var K1n=y(C(),1);var qz={};qz.name="ModelMatrixUpdateStage";qz.update=function(e,t,n){let i=n.mode!==re.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;rle(e,t,o,e.transformToRoot),e._transformDirty=!1}};function hYe(e,t,n){e.modelMatrix=X.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Mt.getCullFace(e.modelMatrix,e.primitiveType)}function rle(e,t,n,i){let o;i=X.multiplyTransformation(i,e.transform,new X),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=Lt(o,e.uniformMap)};var xw=dle;var TRn=y(C(),1);var ule={name:"ClassificationPipelineStage"};ule.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,be.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||pYe(t,o)};function pYe(e,t){let n=Mt.getAttributeBySemantic(e,lt.POSITION);if(!l(n))throw new de("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Mt.getAttributeBySemantic(e,lt.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let d=[],u=[0],h=r?i[0]:0,p=c[h],g=0;for(let b=1;bTYe(i,t,n)):[]}function TYe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Mt,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),d=new Array(c.length);for(let u=0;uLYe(n,t)):[]}function LYe(e,t){let{sanitizeGlslIdentifier:n}=Mt,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;au),n.addStructField(vi.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,f=g;if(l(h)&&!$.equals(h,$.IDENTITY)){let E=`${p}Transform`;n.addUniform("mat3",E,be.FRAGMENT),i[E]=function(){return h},f=`vec2(${E} * vec3(${g}, 1.0))`}let b=`texture(${p}, ${f}).${c}`,x=s.unpackInShader(b),I=yle({valueExpression:x,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:be.FRAGMENT,property:s}),_=`metadata.${o} = ${I};`;n.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,[_])}function Ale(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=ble(vi.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(vi.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,s),be.includesVertexShader(r)&&(e.addStructField(vi.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function gle(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===bt.ENUM)return;let s=vi.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=ble(s,n,a,r),d=`${r}MetadataStatistics`;e.addStructField(vi.STRUCT_ID_METADATA_STATISTICS_FS,d,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,c),be.includesVertexShader(t.shaderDestination)&&(e.addStructField(vi.STRUCT_ID_METADATA_STATISTICS_VS,d,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function ble(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function yle(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:d}=e;s.addUniform(c,o,d),s.addUniform(c,r,d);let{offset:u,scale:h}=n;return a[o]=()=>u,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var rm=vi;var IVn=y(C(),1),FYe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},c0=Object.freeze(FYe);var Na={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:xt};Na.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===c0.TRANSLUCENT?r.pass=Ge.TRANSLUCENT:c===c0.OPAQUE&&(r.pass=void 0);let d=kYe(s,t);if(!d.customShaderEnabled)return;if(zYe(i,s,d),d.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,be.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,be.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,be.FRAGMENT);let p=DA.getDefineName(s.mode);i.addDefine(p,void 0,be.FRAGMENT)}let u=s.uniforms;for(let p in u)if(u.hasOwnProperty(p)){let g=u[p];i.addUniform(g.type,p)}let h=s.varyings;for(let p in h)if(h.hasOwnProperty(p)){let g=h[p];i.addVarying(g,p)}e.uniformMap=Lt(e.uniformMap,s.uniformMap)};function PYe(e){let t={};for(let n=0;n1?(g=e.attributeIndex,e.attributeIndex+=h):p&&!a?g=0:g=e.attributeIndex++,t3e(e,u,g,h,r,s)}d3e(i,t.attributes),t.primitiveType===We.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(Fw),i.addFragmentLines(Ww)};function t3e(e,t,n,i,o,r){let s=e.shaderBuilder,a=Mt.getAttributeInfo(t),c=o&&!r;i>1?o3e(e,t,n,i):i3e(e,t,n,c),s3e(s,a,c),r3e(s,a),l(t.semantic)&&n3e(s,t),a3e(s,a,o),c3e(s,a,c),l3e(s,a)}function n3e(e,t){let{semantic:n,setIndex:i}=t;switch(n){case lt.NORMAL:e.addDefine("HAS_NORMALS");break;case lt.TANGENT:e.addDefine("HAS_TANGENTS");break;case lt.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case lt.TEXCOORD:case lt.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function i3e(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===lt.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let d=r===lt.POSITION,u=d?0:n,h=kt.getNumberOfComponents(a),p={index:u,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(p),!d||!i)return;let g=e.runtimePrimitive.positionBuffer2D,f={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:J.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(f)}function o3e(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,d=kt.getNumberOfComponents(s)/i,u=J.getSizeInBytes(a),h=d*u,p=t.byteStride;for(let g=0;g=o&&(f=o-1);let b=g/d|0;return b>=r&&(b=r-1),l(n)?(n.x=f,n.y=b,n):new D(f,b)};var _s=d0;var VGn=y(C(),1);var eK,Sle="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",zE={};zE.defaultAccessToken=Sle;zE.defaultWorldImageryServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});zE.defaultWorldHillshadeServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});zE.defaultWorldOceanServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});zE.getDefaultTokenCredit=function(e){if(e===Sle){if(!l(eK)){let t=' This application is using a default ArcGIS access token. Please assign Cesium.ArcGisMapService.defaultAccessToken with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at https://developers.arcgis.com/.';eK=new Gt(t,!0)}return eK}};var zd=zE;var WGn=y(C(),1);function tK(e){e=e??Y.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=Ve.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=$m(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,d=e.pixelsToCheck;for(let u=0,h=d.length;a&&u0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}tK.prototype.isReady=function(){return this._isReady};tK.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=$m(e),o=e.width;for(let r=0,s=t.length;r1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};nK.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=``:i+=``)}return i+="
${o}${t(r)}
${o}${r}
",i}this.description=t(e)};var Vh=nK;var kGn=y(C(),1);function KE(){Ae.throwInstantiationError()}Object.defineProperties(KE.prototype,{rectangle:{get:Ae.throwInstantiationError},tileWidth:{get:Ae.throwInstantiationError},tileHeight:{get:Ae.throwInstantiationError},maximumLevel:{get:Ae.throwInstantiationError},minimumLevel:{get:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},tileDiscardPolicy:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError},credit:{get:Ae.throwInstantiationError},proxy:{get:Ae.throwInstantiationError},hasAlphaChannel:{get:Ae.throwInstantiationError}});KE.prototype.getTileCredits=function(e,t,n){Ae.throwInstantiationError()};KE.prototype.requestImage=function(e,t,n,i){Ae.throwInstantiationError()};KE.prototype.pickFeatures=function(e,t,n,i,o){Ae.throwInstantiationError()};var u3e=/\.ktx2$/i;KE.loadImage=function(e,t){let n=Ve.createIfNeeded(t);return u3e.test(n.url)?Kl(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Sl=KE;var OGn=y(C(),1),m3e={SATELLITE:1,OCEANS:2,HILLSHADE:3},Gh=Object.freeze(m3e);function Lle(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new ao({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Gt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}Lle.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new vw({missingImageUrl:Rle(e,0,0,this.maximumLevel).url,pixelsToCheck:[new D(0,0),new D(200,20),new D(20,200),new D(80,110),new D(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function h3e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new _s({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new ao({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new de(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Ui,o=e.fullExtent,r=i.unproject(new m(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new m(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new le(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=le.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new de(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Gt(e.copyrightText)]:t.credit=new Gt(e.copyrightText))}function f3e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new de(n)}async function p3e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();h3e(i,t)}catch(i){f3e(e,i)}}function zf(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new ao({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new Ce}zf.fromBasemapType=async function(e,t){t=t??Y.EMPTY_OBJECT;let n,i,o;switch(e){case Gh.SATELLITE:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldImageryServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;case Gh.OCEANS:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldOceanServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;case Gh.HILLSHADE:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldHillshadeServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;default:}return zf.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function Rle(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Di?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(zf.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});zf.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new zf(t);i._resource=n;let o=new Lle(t);return(t.usePreCachedTilesIfAvailable??!0)&&await p3e(n,o),o.build(i),i};zf.prototype.getTileCredits=function(e,t,n){return this._tileCredits};zf.prototype.requestImage=function(e,t,n,i){return Sl.loadImage(this,Rle(this,e,t,n,i))};zf.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Di)s=Z.toDegrees(i),a=Z.toDegrees(o),c="4326";else{let p=this._tilingScheme.projection.project(new ge(i,o,0));s=p.x,a=p.y,c="3857"}let d="visible";l(this._layers)&&(d+=`:${this._layers}`);let u={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:d};return this._resource.getDerivedResource({url:"identify",queryParameters:u}).fetchJson().then(function(p){let g=[],f=p.results;if(!l(f))return g;for(let b=0;b0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${Kf(i)}`),c};TQ.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var vo=TQ;var _Zn=y(C(),1),g3e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},JE=Object.freeze(g3e);var SZn=y(C(),1);function Nw(e){}Nw.prototype.isReady=function(){return!0};Nw.prototype.shouldDiscardImage=function(e){return Nw.EMPTY_IMAGE===e};var SQ;Object.defineProperties(Nw,{EMPTY_IMAGE:{get:function(){return l(SQ)||(SQ=new Image,SQ.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),SQ}}});var jE=Nw;function Vle(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}Vle.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;no.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function y3e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new de(i)}async function C3e(e,t,n){let i=e.url,o=zs._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),zs._metadataCache[i]=o);try{let r=await o;return b3e(r,t)}catch(r){y3e(e,r,n)}}function zs(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??JE.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new jE),this._proxy=e.proxy,this._credit=new Gt(``),this._tilingScheme=new _s({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new Ce}Object.defineProperties(zs.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});zs.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??JE.AERIAL,o=Ve.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new zs(t);a._resource=o;let c=new Vle(t);return await C3e(s,c),c.build(a),a};var x3e=new le;zs.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,x3e);return E3e(this._attributionList,n,i)};zs.prototype.requestImage=function(e,t,n,i){let o=Sl.loadImage(this,I3e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?jE.EMPTY_IMAGE:Promise.reject(r)})};zs.prototype.pickFeatures=function(e,t,n,i,o){};zs.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<=0;--o){let r=1<=h.zoomMin&&t<=h.zoomMax){let p=le.intersection(n,h.bbox,_3e);l(p)&&(c=!0)}}c&&i.push(s.credit)}return i}zs._metadataCache={};var Dw=zs;var yBn=y(C(),1);var oBn=y(C(),1);var Gle=/{[^}]+}/g,Zle={x:R3e,y:G3e,z:w3e,s:X3e,reverseX:V3e,reverseY:Z3e,reverseZ:B3e,westDegrees:W3e,southDegrees:F3e,eastDegrees:P3e,northDegrees:M3e,westProjected:v3e,southProjected:N3e,eastProjected:D3e,northProjected:Q3e,width:U3e,height:k3e},T3e=Lt(Zle,{i:Y3e,j:O3e,reverseI:H3e,reverseJ:z3e,longitudeDegrees:J3e,latitudeDegrees:j3e,longitudeProjected:q3e,latitudeProjected:$3e,format:tOe});function Qw(e){e=e??Y.EMPTY_OBJECT,this._errorEvent=new Ce;let t=Ve.createIfNeeded(e.url),n=Ve.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new _s({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=le.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Gt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=Lt(Zle,r),a=Lt(T3e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(Qw.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});Qw.prototype.getTileCredits=function(e,t,n){};Qw.prototype.requestImage=function(e,t,n,i){return Sl.loadImage(this,S3e(this,e,t,n,i))};Qw.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(d,u){return d.callback(u)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let d=s._getFeatureInfoFormats[r],u=L3e(s,e,t,n,i,o,d.format);return++r,d.type==="json"?u.fetchJson().then(d.callback).catch(c):d.type==="xml"?u.fetchXML().then(d.callback).catch(c):d.type==="text"||d.type==="html"?u.fetchText().then(d.callback).catch(c):u.fetch({responseType:d.format}).then(a.bind(void 0,d)).catch(c)}return c()};var LQ=!1,Kd=new le,RQ=!1,Uw=new le;function S3e(e,t,n,i,o){LQ=!1,RQ=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},d=s.match(Gle);return l(d)&&d.forEach(function(u){let h=u.substring(1,u.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var iK=!1,$E=new D,oK=!1;function L3e(e,t,n,i,o,r,s){LQ=!1,RQ=!1,iK=!1,oK=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),d=e._pickFeaturesTags,u={},h=c.match(Gle);return l(h)&&h.forEach(function(p){let g=p.substring(1,p.length-1);l(d[g])&&(u[g]=d[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:u})}function eT(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function R3e(e,t,n,i){return eT(e,"{x}",t)}function V3e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return eT(e,"{reverseX}",o)}function G3e(e,t,n,i){return eT(e,"{y}",n)}function Z3e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return eT(e,"{reverseY}",o)}function B3e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&it.rectangle.east&&(e.east=t.rectangle.east),e.southt.rectangle.north&&(e.north=t.rectangle.north),e}function wle(e,t,n){let i=e.positionToTileXY(le.southwest(t),n),o=e.positionToTileXY(le.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}sm._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,d,u,h,p=[],g=e.childNodes[0].childNodes;for(let w=0;w`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new Ce}Object.defineProperties(ad.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});ad.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=Ve.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new Xle(n);s.channel=t,await oOe(r,s);let a=new ad(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};ad.prototype.getTileCredits=function(e,t,n){};ad.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Sl.loadImage(this,o)};ad.prototype.pickFeatures=function(e,t,n,i,o){};ad._logoUrl=void 0;Object.defineProperties(ad,{logoUrl:{get:function(){return l(ad._logoUrl)||(ad._logoUrl=hn("Assets/Images/google_earth_credit.png")),ad._logoUrl},set:function(e){ad._logoUrl=e}}});var kw=ad;var vBn=y(C(),1);var rOe=/\/$/,Wle=new Gt('© Mapbox © OpenStreetMap Improve this map');function tT(e){e=e??Y.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ve.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();rOe.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Gt(s))):s=Wle,this._resource=i,this._imageryProvider=new hc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(tT.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});tT.prototype.getTileCredits=function(e,t,n){};tT.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};tT.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};tT._defaultCredit=Wle;var Yw=tT;var jBn=y(C(),1);function ix(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??le.MAX_VALUE,n=new ao({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new Ce;let i=e.credit;typeof i=="string"&&(i=new Gt(i)),this._credit=i;let o=Ve.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(ix.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function sOe(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=vo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return sK(e,n,r);throw l(n)&&(n._hasError=!0),new de(o)}async function sK(e,t,n){try{return await Sl.loadImage(null,e)}catch(i){return sOe(e,i,t,n)}}ix.fromUrl=async function(e,t){let n=Ve.createIfNeeded(e),i=await sK(n);t=t??Y.EMPTY_OBJECT;let o=new ix({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};ix.prototype.getTileCredits=function(e,t,n){};ix.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await sK(this._resource,this);return this._image=o,vo.reportSuccess(this._errorEvent),o}return this._image};ix.prototype.pickFeatures=function(e,t,n,i,o){};var Ow=ix;var xwn=y(C(),1);var iwn=y(C(),1);function aOe(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=cOe:e==="xml"?n=mOe:(e==="html"||e==="text")&&(n=Fle)),this.callback=n}function cOe(e){let t=[],n=e.features;for(let i=0;i0)for(let r=0;r\s*<\/body>/im,yOe=//im,COe=/([\s\S]*)<\/title>/im;function Fle(e){if(bOe.test(e)||yOe.test(e))return;let t,n=COe.exec(e);n&&n.length>1&&(t=n[1]);let i=new Vh;return i.name=t,i.description=e,i.data=e,[i]}var ox=aOe;var dwn=y(C(),1);function Hw(e){e=e??Y.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(Hw.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});Hw.prototype.getFromCache=function(e,t,n,i){let o=Ple(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};Hw.prototype.checkApproachingInterval=function(e,t,n,i){let o=Ple(e,t,n),r=this._tilesRequestedForInterval,s=Mle(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!vle(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};Hw.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=Mle(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=vle(this,c,r),a||s.push(c)}}};function Ple(e,t,n){return`${e}-${t}-${n}`}function xOe(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function Mle(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=j.secondsDifference(c.stop,i),++a):(s=j.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function vle(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=xOe(s),c=new sr({throttle:!1,throttleByServer:!0,type:Zs.IMAGERY,priorityFunction:t.priorityFunction}),d=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(d)?(r[s]={promise:d,request:c},!0):!1}var rx=Hw;var IOe=[3034,3035,3042,3043,3044],_Oe=[4471,4559];function Zh(e){if(e=e??Y.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new Ae("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=Ve.createIfNeeded(e.url),n=Ve.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Zh.DefaultParameters,!0),n.setQueryParameters(Zh.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(Nle(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(Nle(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new rx({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,d,u){return Dle(i,s,a,c,d,u)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof Ui?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!_Oe.includes(a)||IOe.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof Ui?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new hc({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new ao({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Zh.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function Dle(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function EOe(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Zh.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Zh.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Zh.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Dle(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Zh.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return EOe(this,e,t,n,i,o,s)};Zh.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Zh.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Zh.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new ox("json","application/json")),Object.freeze(new ox("xml","text/xml")),Object.freeze(new ox("text","text/html"))]);function Nle(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var zw=Zh;var wwn=y(C(),1);var TOe=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function Kw(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=Ve.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(TOe),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new _s({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new rx({clock:e.clock,times:e.times,requestImageFunction:function(h,p,g,f,b){return Qle(s,h,p,g,f,b)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(le.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(le.northeast(this._rectangle),this._minimumLevel),d=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new Ce;let u=e.credit;this._credit=typeof u=="string"?new Gt(u):u,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function Qle(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,d=e._dimensions,u=l(r)?r.data:void 0,h,p;if(!e._useKvp)p={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(p),l(d)&&h.setTemplateValues(d),l(u)&&h.setTemplateValues(u);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(d)&&(g=Lt(g,d)),l(u)&&(g=Lt(g,u)),p={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(p)}return Sl.loadImage(e,h)}Object.defineProperties(Kw.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});Kw.prototype.getTileCredits=function(e,t,n){};Kw.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Qle(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Kw.prototype.pickFeatures=function(e,t,n,i,o){};var Jw=Kw;var SOe={ARCGIS_MAPSERVER:QA.fromUrl,BING:async(e,t)=>Dw.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,kw.fromUrl(e,n,t)},MAPBOX:(e,t)=>new Yw({url:e,...t}),SINGLE_TILE:Ow.fromUrl,TMS:u0.fromUrl,URL_TEMPLATE:(e,t)=>new hc({url:e,...t}),WMS:(e,t)=>new zw({url:e,...t}),WMTS:(e,t)=>new Jw({url:e,...t})};function Jf(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new Ce}Object.defineProperties(Jf.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Jf.fromAssetId=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Nd._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Jf._endpointCache[i];l(o)||(o=n.fetchJson(),Jf._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new de(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await u0.fromUrl(new Nd(r,n));else{let d=SOe[a];if(!l(d))throw new de(`Unrecognized Cesium ion imagery type: ${a}`);let u={...r.options},h=u.url;delete u.url,s=await d(h,u)}let c=new Jf(t);return s.errorEvent.addEventListener(function(d){d.provider=c,c._errorEvent.raiseEvent(d)}),c._tileCredits=Nd.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Jf.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Jf.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Jf.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Jf._endpointCache={};var UA=Jf;var jwn=y(C(),1),LOe={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},kA=Object.freeze(LOe);function ROe(e){e=e??Y.EMPTY_OBJECT;let t=e.style??kA.AERIAL;return UA.fromAssetId(t)}var YA=ROe;var cXn=y(C(),1);function Ll(){Ae.throwInstantiationError()}Object.defineProperties(Ll.prototype,{errorEvent:{get:Ae.throwInstantiationError},credit:{get:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},hasWaterMask:{get:Ae.throwInstantiationError},hasVertexNormals:{get:Ae.throwInstantiationError},availability:{get:Ae.throwInstantiationError}});var Ule=[];Ll.getRegularGridIndices=function(e,t){let n=Ule[e];l(n)||(Ule[e]=n=[]);let i=n[t];return l(i)||(e*t<Z.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),Hle(e,t,i,0)),i};var kle=[];Ll.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=kle[e];l(n)||(kle[e]=n=[]);let i=n[t];if(!l(i)){let o=Ll.getRegularGridIndices(e,t),r=Ole(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,d=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:d}}return i};var Yle=[];Ll.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=Yle[e];l(n)||(Yle[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,d=r+a,u=Ole(e,t),h=u.westIndicesSouthToNorth,p=u.southIndicesEastToWest,g=u.eastIndicesNorthToSouth,f=u.northIndicesWestToEast,b=Me.createTypedArray(c,d);Hle(e,t,b,0),Ll.addSkirtIndices(h,p,g,f,o,b,r),i=n[t]={indices:b,westIndicesSouthToNorth:h,southIndicesEastToWest:p,eastIndicesNorthToSouth:g,northIndicesWestToEast:f,indexCountWithoutSkirts:r}}return i};Ll.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=wQ(e,a,r,s),a+=e.length,s=wQ(t,a,r,s),a+=t.length,s=wQ(n,a,r,s),a+=n.length,wQ(i,a,r,s)};function Ole(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function Hle(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,d=c+1,u=a+1;n[i++]=a,n[i++]=c,n[i++]=u,n[i++]=u,n[i++]=c,n[i++]=d,++o}++o}}function wQ(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}Ll.heightmapTerrainQuality=.25;Ll.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*Ll.heightmapTerrainQuality/(t*n)};Ll.prototype.requestTileGeometry=Ae.throwInstantiationError;Ll.prototype.getLevelMaximumGeometricError=Ae.throwInstantiationError;Ll.prototype.getTileDataAvailable=Ae.throwInstantiationError;Ll.prototype.loadTileDataAvailability=Ae.throwInstantiationError;var Es=Ll;var dXn=y(C(),1),jw=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var mXn=y(C(),1),qw=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var yXn=y(C(),1);var fXn=y(C(),1),VOe={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},Jn=Object.freeze(VOe);function nT(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=Jn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}nT.createPlaceholder=function(e){let t=new nT(e,0,0,0);return t.addReference(),t.state=Jn.PLACEHOLDER,t};nT.prototype.addReference=function(){++this.referenceCount};nT.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),me(this),0):this.referenceCount};nT.prototype.processStateMachine=function(e,t,n){this.state===Jn.UNLOADED&&!n&&(this.state=Jn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===Jn.RECEIVED&&(this.state=Jn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===Jn.READY&&t&&!this.texture;(this.state===Jn.TEXTURE_LOADED||i)&&(this.state=Jn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var iT=nT;var _Xn=y(C(),1);function lK(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}lK.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};lK.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===Jn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==Jn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==Jn.FAILED&&r.state!==Jn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===Jn.FAILED||i.state===Jn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var oT=lK;function Wi(e,t){this._imageryProvider=e,this._readyEvent=new Ce,this._errorEvent=new Ce,t=t??Y.EMPTY_OBJECT,e=e??Y.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Wi.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Wi.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Wi.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Wi.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Wi.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Wi.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Wi.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Wi.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??le.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new oT(iT.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Wi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Wi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Wi.DEFAULT_BRIGHTNESS=1;Wi.DEFAULT_CONTRAST=1;Wi.DEFAULT_HUE=0;Wi.DEFAULT_SATURATION=1;Wi.DEFAULT_GAMMA=1;Wi.DEFAULT_SPLIT=Ir.NONE;Wi.DEFAULT_MINIFICATION_FILTER=en.LINEAR;Wi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;Wi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Wi.fromProviderAsync=function(e,t){let n=new Wi(void 0,t);return XOe(n,Promise.resolve(e)),n};Wi.fromWorldImagery=function(e){return e=e??Y.EMPTY_OBJECT,Wi.fromProviderAsync(YA({style:e.style}),e)};Wi.prototype.isBaseLayer=function(){return this._isBaseLayer};Wi.prototype.isDestroyed=function(){return!1};Wi.prototype.destroy=function(){return me(this)};var Jle=new le,zle=new le,dK=new le,jle=new le;Wi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return le.intersection(e.rectangle,t)};Wi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Ui&&e.rectangle.north<Ui.MaximumLatitude&&e.rectangle.south>-Ui.MaximumLatitude,s=le.intersection(o.rectangle,this._rectangle,Jle),a=le.intersection(e.rectangle,s,zle);if(!l(a)){if(!this.isBaseLayer())return!1;let L=s,V=e.rectangle;a=zle,V.south>=L.north?a.north=a.south=L.north:V.north<=L.south?a.north=a.south=L.south:(a.south=Math.max(V.south,L.south),a.north=Math.min(V.north,L.north)),V.west>=L.east?a.west=a.east=L.east:V.east<=L.west?a.west=a.east=L.west:(a.west=Math.max(V.west,L.west),a.east=Math.min(V.east,L.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let u=1*t.getLevelMaximumGeometricError(e.level),h=BOe(this,u,c);h=Math.max(0,h);let p=o.maximumLevel;if(h>p&&(h=p),l(o.minimumLevel)){let L=o.minimumLevel;h<L&&(h=L)}let g=o.tilingScheme,f=g.positionToTileXY(le.northwest(a),h),b=g.positionToTileXY(le.southeast(a),h),x=e.rectangle.width/512,I=e.rectangle.height/512,_=g.tileXYToRectangle(f.x,f.y,h);Math.abs(_.south-e.rectangle.north)<I&&f.y<b.y&&++f.y,Math.abs(_.east-e.rectangle.west)<x&&f.x<b.x&&++f.x;let E=g.tileXYToRectangle(b.x,b.y,h);Math.abs(E.north-e.rectangle.south)<I&&b.y>f.y&&--b.y,Math.abs(E.west-e.rectangle.east)<x&&b.x>f.x&&--b.x;let S=le.clone(e.rectangle,jle),R=g.tileXYToRectangle(f.x,f.y,h),G=le.intersection(R,s,dK),B;r?(g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(R,R),g.rectangleToNativeRectangle(G,G),g.rectangleToNativeRectangle(s,s),B=g.tileXYToNativeRectangle.bind(g),x=S.width/512,I=S.height/512):B=g.tileXYToRectangle.bind(g);let w,F=0,P=1,A;!this.isBaseLayer()&&Math.abs(G.west-S.west)>=x&&(F=Math.min(1,(G.west-S.west)/S.width)),!this.isBaseLayer()&&Math.abs(G.north-S.north)>=I&&(P=Math.max(0,(G.north-S.south)/S.height));let T=P;for(let L=f.x;L<=b.x;L++)if(w=F,R=B(L,f.y,h),G=le.simpleIntersection(R,s,dK),!!l(G)){F=Math.min(1,(G.east-S.west)/S.width),L===b.x&&(this.isBaseLayer()||Math.abs(G.east-S.east)<x)&&(F=1),P=T;for(let V=f.y;V<=b.y;V++){if(A=P,R=B(L,V,h),G=le.simpleIntersection(R,s,dK),!l(G))continue;P=Math.max(0,(G.south-S.south)/S.height),V===b.y&&(this.isBaseLayer()||Math.abs(G.south-S.south)<I)&&(P=0);let W=new ce(w,P,F,A),M=this.getImageryFromCache(L,V,h);i.imagery.splice(n,0,new oT(M,W,r)),++n}}return!0};Wi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Jle),i=c.rectangleToNativeRectangle(i,jle)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new ce(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Wi.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=Jn.RECEIVED,e.request=void 0,vo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===mi.CANCELLED){e.state=Jn.UNLOADED,e.request=void 0;return}e.state=Jn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=vo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new sr({throttle:!1,throttleByServer:!0,type:Zs.IMAGERY});e.request=s,e.state=Jn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=Jn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Wi.prototype._createTextureWebGL=function(e,t){let n=new sn({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Wt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Wt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?tt.RGBA:tt.RGB,sampler:n})};Wi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=Jn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=Jn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Ui?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=Jn.TEXTURE_LOADED};function Kle(e,t,n){return`${e}:${t}:${n}`}Wi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===en.LINEAR&&i===pi.LINEAR&&!tt.isCompressedFormat(t.pixelFormat)&&Z.isPowerOfTwo(t.width)&&Z.isPowerOfTwo(t.height)){n=en.LINEAR_MIPMAP_LINEAR;let r=Kt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Kle(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let d=c[a];l(d)||(d=c[a]=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Yu.NICEST),t.sampler=d}else{let r=Kle(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Wi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Di)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Il({persists:!0,owner:this,preExecute:function(c){ZOe(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=Jn.READY,t.releaseReference()},canceled:function(){t.state=Jn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=Jn.READY};Wi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Wi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Wi.prototype.getImageryFromCache=function(e,t,n,i){let o=qle(e,t,n),r=this._imageryCache[o];return l(r)||(r=new iT(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Wi.prototype.removeImageryFromCache=function(e){let t=qle(e.x,e.y,e.level);delete this._imageryCache[t]};function qle(e,t,n){return JSON.stringify([e,t,n])}var XQ={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new D,texture:void 0},GOe=Ht.supportsTypedArrays()?new Float32Array(128):void 0;function ZOe(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let x=new Float32Array(256),I=0;for(let G=0;G<64;++G){let B=G/63;x[I++]=0,x[I++]=B,x[I++]=1,x[I++]=B}let _={position:0,webMercatorT:1},E=Es.getRegularGridIndices(2,64),S=It.createIndexBuffer({context:t,typedArray:E,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});o.vertexArray=new ui({context:t,attributes:[{index:_.position,vertexBuffer:It.createVertexBuffer({context:t,typedArray:x,usage:Ne.STATIC_DRAW}),componentsPerAttribute:2},{index:_.webMercatorT,vertexBuffer:It.createVertexBuffer({context:t,sizeInBytes:512,usage:Ne.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:S});let R=new Oe({sources:[qw]});o.shaderProgram=ln.fromCache({context:t,vertexShaderSource:R,fragmentShaderSource:jw,attributeLocations:_}),o.sampler=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;XQ.textureDimensions.x=r,XQ.textureDimensions.y=s,XQ.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let u=1/(.5*Math.log((1+a)/(1-a))-c),h=new Wt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});Z.isPowerOfTwo(r)&&Z.isPowerOfTwo(s)&&h.generateMipmap(Yu.NICEST);let p=i.south,g=i.north,f=GOe,b=0;for(let x=0;x<64;++x){let I=x/63,_=Z.lerp(p,g,I);a=Math.sin(_);let S=(.5*Math.log((1+a)/(1-a))-c)*u;f[b++]=S,f[b++]=S}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(f),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=XQ,e.vertexArray=o.vertexArray}function BOe(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Di?1:Math.cos(n),a=o.rectangle,d=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,u=Math.log(d)/Math.log(2);return Math.round(u)|0}function wOe(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function XOe(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){wOe(e._errorEvent,i)}}var is=Wi;var u2n=y(C(),1),uK=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},$w=uK;var rWn=y(C(),1);var b2n=y(C(),1);var h2n=y(C(),1),mK=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},rT=mK;var WOe=new le,$le=new le,FOe=new le,POe=new le,MOe=new le,vOe=new le,hK=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=le.intersection(o.rectangle,n.rectangle,WOe),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),d=POe;a.rectangleToNativeRectangle(t,d);let u=MOe;a.rectangleToNativeRectangle(s,u);let h=(g,f,b)=>{let x=a.tileXYToRectangle(g,f,b),I=le.intersection(x,s,FOe);if(!l(I))return;let _=vOe;return a.rectangleToNativeRectangle(I,_),_};return e._computeImageryCoverages(n,c,r,d,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(le.northwest(r),o),a=i.positionToTileXY(le.southeast(r),o),c=new rT;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let d=t.width/512,u=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<u&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<d&&c.minX<c.maxX&&++c.minX;let f=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(f.north-t.south)<u&&c.maxY>c.minY&&--c.maxY,Math.abs(f.west-t.east)<d&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new le),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=le.intersection(t,n,$le);return l(i)?i:e._clampRectangle(t,n,$le)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let d=n.minY;d<=n.maxY;d++){let u=r(a,d,i);if(!l(u))continue;let h=e._localizeToCartesianRectangle(u,o,void 0),p=t.getImageryFromCache(a,d,i),g=new e(a,d,i,h,p);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new rT);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},sT=hK;var k2n=y(C(),1);var Z2n=y(C(),1);var fK=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=Mn.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=kt.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,d=t.byteOffset,u=t.byteStride,h=J.getSizeInBytes(s),p=o*h;if(!l(u)||u===p){let E=J.createTypedArray(s,r);return c.getBufferData(E,d),E}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let f=J.createTypedArray(s,r),b=u??p,x=new DataView(g.buffer,g.byteOffset,g.byteLength),I=new Array(o),_=e.createComponentsReader(s);for(let E=0;E<i;++E){let S=d+E*b;_(x,S,o,I);for(let R=0;R<o;++R)f[E*o+R]=I[R]}return f}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===kt.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===kt.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===kt.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===kt.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new Ae(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new m;for(let s=0;s<n;s++)m.unpack(t,s*3,r),Mn.octDecodeInRange(r,i,r),m.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new D;for(let a=0;a<n;a++)D.unpack(t,a*2,s),D.multiplyComponents(s,i,s),D.add(s,o,s),D.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new m;for(let a=0;a<n;a++)m.unpack(t,a*3,s),m.multiplyComponents(s,i,s),m.add(s,o,s),m.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new ce;for(let a=0;a<n;a++)ce.unpack(t,a*4,s),ce.multiplyComponents(s,i,s),ce.add(s,o,s),ce.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=J.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let d=0;d<s;++d)a[d]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case J.BYTE:return function(n,i){return n.getInt8(i)};case J.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case J.SHORT:return function(n,i){return n.getInt16(i,!0)};case J.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case J.INT:return function(n,i){return n.getInt32(i,!0)};case J.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case J.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case J.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new Ae(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new m,r=t.length/3;for(let s=0;s<r;s++)m.unpack(t,s*3,o),X.multiplyByPoint(n,o,o),m.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===We.TRIANGLES)return i;if(n===We.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===We.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new Ae(`The primitiveType must be TRIANGLES (${We.TRIANGLES}, TRIANGLE_STRIP (${We.TRIANGLE_STRIP}, or TRIANGLE_FAN (${We.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Me.UNSIGNED_BYTE:return new Uint8Array(n);case Me.UNSIGNED_SHORT:return new Uint16Array(n);case Me.UNSIGNED_INT:return new Uint32Array(n)}throw new Ae(`The indexDatatype must be UNSIGNED_BYTE (${Me.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Me.UNSIGNED_SHORT}, or UNSIGNED_INT (${Me.UNSIGNED_INT}, but is ${t}`)}},eX=fK;var pK=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Ke;Ke.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=eX.readAttributeAsTypedArray(t),r=t.type,s=kt.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new m,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new le);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new m;return e.map(t,r=>(X.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new ge;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new m;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new D,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,d=(a.y-n.y)*r,u=Math.min(Math.max(c,0),1),h=Math.min(Math.max(d,0),1);return i.x=u,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:lt.TEXCOORD,setIndex:0,componentDatatype:J.FLOAT,type:kt.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new D(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},sx=pK;var O2n=y(C(),1);var AK=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},tX=AK;var gK=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new X,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new Ae("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new Ae("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=It.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Ne.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!X.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),d=c.length;for(let u=0;u<d;u++){let h=c[u],p=sx.createCartographicPositions(o,s,h),g=sx.computeCartographicBoundingRectangle(p),f=new tX(p,r,g,h);a.push(f)}return X.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=sx.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return sT.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let d=Math.log2(s*c/a);return sT._clampImageryLevel(i,d)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let d=0;d<c;d++){let h=a[d].imagery;h.state===Jn.READY||h.state===Jn.FAILED||h.state===Jn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new Ae("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new Ae(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new Ae("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),me(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new X);let o=t.sceneGraph;return X.clone(X.IDENTITY,i),X.multiply(i,t.modelMatrix,i),X.multiply(i,o.components.transform,i),X.multiply(i,o.axisCorrectionMatrix,i),X.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Mt.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new Ae("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},ax=gK;var aWn=y(C(),1),bK=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},nX=bK;var NOe=!1,DOe=new le,QOe=new le,yK=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=ax._extractProjections(s),c=[...new Set(a)],d=e._computeIndexMapping(a,c),u=e._createImageryInputs(s,r,d);if(u.length===0)return;u.length>10&&(xt("imagery-texture-units",`Warning: Draped imagery requires ${u.length} texture units, truncating`),u.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let p=0;p<s.length;p++)h.push(s.get(p));e._processImageryInputs(h,t,u,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=kt.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,d=e._createImageryUniforms(i);e._setImageryUniforms(c,d)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,be.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new $w;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==is.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==is.DEFAULT_CONTRAST,n.hue|=o.hue!==is.DEFAULT_HUE,n.saturation|=o.saturation!==is.DEFAULT_SATURATION,n.gamma|=o.gamma!==is.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,be.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),NOe&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",be.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,d=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=d,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let u=i.imageryTextureColorToAlpha[o];if(l(u)||(u=new ce,i.imageryTextureColorToAlpha[o]=u),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let p=s.colorToAlpha;u.x=p.red,u.y=p.green,u.z=p.blue,u.w=s.colorToAlphaThreshold}else u.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],d=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,u=n.coveragesForImageryLayer(s);for(let h=0;h<u.length;h++){let p=u[h],g=e._createImageryInput(s,p,d,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===Jn.FAILED||r.state===Jn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===Jn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,d=new ce(c.minX,c.minY,c.maxX,c.maxY);return new nX(t,s,a,d,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,DOe),s=o.rectangleToNativeRectangle(i,QOe);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,d=t.width*i,u=t.height*o;return new ce(a,c,d,u)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},iX=yK;var GWn=y(C(),1);var IWn=y(C(),1),oX=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var EWn=y(C(),1),UOe={UNLIT:0,PBR:1},jf=Object.freeze(UOe);var ede={name:"LightingPipelineStage"};ede.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,be.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",be.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===jf.PBR?o.addDefine("LIGHTING_PBR",void 0,be.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,be.FRAGMENT),o.addFragmentLines(oX)};var rX=ede;var OWn=y(C(),1);var BWn=y(C(),1),sX=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:kOe,MetallicRoughness:CK,SpecularGlossiness:xK,Specular:tde,Clearcoat:nde}=Tn,ide={name:"MaterialPipelineStage",_processTexture:cd,_processTextureTransform:ode};ide.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:d,defaultNormalTexture:u,defaultEmissiveTexture:h}=n.context;OOe(i,r,s,d,u,h,c),l(i.specularGlossiness)?HOe(i.specularGlossiness,r,s,d,c):(l(i.specular)&&Mt.supportedExtensions.KHR_materials_specular&&zOe(i.specular,r,s,d,c),l(i.anisotropy)&&Mt.supportedExtensions.KHR_materials_anisotropy&&JOe(i.anisotropy,r,s,d,c),l(i.clearcoat)&&Mt.supportedExtensions.KHR_materials_clearcoat&&jOe(i.clearcoat,r,s,d,c),qOe(i.metallicRoughness,r,s,d,c));let p=Mt.getAttributeBySemantic(t,lt.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,f=e.lightingOptions;i.unlit||!p||a||g?f.lightingModel=jf.UNLIT:f.lightingModel=jf.PBR;let b=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=b;let x=e.alphaOptions;i.alphaMode===Yf.BLEND?x.pass=Ge.TRANSLUCENT:i.alphaMode===Yf.MASK&&(x.alphaCutoff=i.alphaCutoff),s.addFragmentLines(sX),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,be.BOTH)};function ode(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,be.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,be.FRAGMENT),t[s]=function(){return n.transform}}function YOe(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,be.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,be.FRAGMENT),t[s]=function(){return n.scale}}function cd(e,t,n,i,o,r){e.addUniform("sampler2D",i,be.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,be.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,d=`TEXCOORD_${o}`;e.addDefine(d,c,be.FRAGMENT);let u=n.transform;l(u)&&!$.equals(u,$.IDENTITY)&&ode(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&YOe(e,t,n,i,o)}function OOe(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:d,occlusionTexture:u}=e;l(a)&&!m.equals(a,kOe.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",be.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,be.FRAGMENT),l(c)&&!s&&cd(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(d)&&!s&&cd(n,t,d,"u_normalTexture","NORMAL",o),l(u)&&!s&&cd(n,t,u,"u_occlusionTexture","OCCLUSION",i)}function HOe(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:d}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,be.FRAGMENT),l(r)&&!o&&cd(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!ce.equals(s,xK.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",be.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,be.FRAGMENT)),l(a)&&!o&&cd(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!m.equals(c,xK.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",be.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,be.FRAGMENT)),l(d)&&d!==xK.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",be.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,be.FRAGMENT))}function zOe(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,be.FRAGMENT),l(r)&&!o&&cd(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==tde.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",be.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,be.FRAGMENT)),l(a)&&!o&&cd(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!m.equals(c,tde.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",be.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,be.FRAGMENT))}var KOe=new m;function JOe(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,be.FRAGMENT),l(a)&&!o&&cd(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),d=Math.sin(s);n.addUniform("vec3","u_anisotropy",be.FRAGMENT),t.u_anisotropy=function(){return m.fromElements(c,d,r,KOe)}}function jOe(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:d}=e;n.addDefine("USE_CLEARCOAT",void 0,be.FRAGMENT),l(r)&&r!==nde.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",be.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,be.FRAGMENT)),l(s)&&!o&&cd(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==nde.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",be.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,be.FRAGMENT)),l(c)&&!o&&cd(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(d)&&!o&&cd(n,t,d,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function qOe(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,be.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&cd(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!ce.equals(s,CK.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",be.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,be.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&cd(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==CK.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",be.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,be.FRAGMENT));let d=e.roughnessFactor;l(d)&&d!==CK.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",be.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,be.FRAGMENT))}var aX=ide;var KWn=y(C(),1);var Rl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};Rl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(Rl.METADATA_PICKING_VALUE_TYPE,"float",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_STRING,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",be.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",be.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${Rl.METADATA_PICKING_VALUE_TYPE} value = ${Rl.METADATA_PICKING_VALUE_TYPE}(${Rl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${Rl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${Rl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${Rl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${Rl.METADATA_PICKING_VALUE_COMPONENT_W};`],be.FRAGMENT)};var Jd=Rl;var rFn=y(C(),1);var jWn=y(C(),1),cX=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var fc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};fc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,be.VERTEX),oHe(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,d=c.length;for(let u=0;u<d;u++){let h=c[u],p=h.semantic;p!==lt.POSITION&&p!==lt.NORMAL&&p!==lt.TANGENT||(eHe(e,h,e.attributeIndex,a),e.attributeIndex++)}}rHe(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,be.VERTEX),n.addVertexLines(cX);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=Lt(s,e.uniformMap)};var $Oe={attributeString:void 0,functionId:void 0};function eHe(e,t,n,i){let o=e.shaderBuilder;tHe(e,t,n);let r=nHe(t,$Oe);iHe(o,r,i)}function tHe(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:kt.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function nHe(e,t){switch(e.semantic){case lt.POSITION:t.attributeString="Position",t.functionId=fc.FUNCTION_ID_GET_MORPHED_POSITION;break;case lt.NORMAL:t.attributeString="Normal",t.functionId=fc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case lt.TANGENT:t.attributeString="Tangent",t.functionId=fc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function iHe(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function oHe(e){e.addFunction(fc.FUNCTION_ID_GET_MORPHED_POSITION,fc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(fc.FUNCTION_ID_GET_MORPHED_NORMAL,fc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(fc.FUNCTION_ID_GET_MORPHED_TANGENT,fc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function rHe(e){e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var lX=fc;var pFn=y(C(),1);var rde={name:"PickingPipelineStage"};rde.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)sHe(e,t,a,i);else if(l(a))aHe(e,i);else{let c=sde(e),d=i.createPickId(c);s._pipelineResources.push(d),s._pickIds.push(d),r.addUniform("vec4","czm_pickColor",be.FRAGMENT);let u=e.uniformMap;u.czm_pickColor=function(){return d.color},e.pickId="czm_pickColor"}};function sde(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(Tr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function sHe(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Mt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Mt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",be.FRAGMENT);let u=c.batchTexture;e.uniformMap.model_pickTexture=function(){return u.pickTexture??u.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function aHe(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let p=sde(e,h),g=t.createPickId(p);s.push(g),i[h]=g;let f=g.color;o[h*4+0]=U.floatToByte(f.red),o[h*4+1]=U.floatToByte(f.green),o[h*4+2]=U.floatToByte(f.blue),o[h*4+3]=U.floatToByte(f.alpha)}r._pickIds=i;let a=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let d={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(d);let u=e.shaderBuilder;u.addDefine("USE_PICKING",void 0,be.BOTH),u.addAttribute("vec4","a_pickColor"),u.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var dX=rde;var PFn=y(C(),1);var gFn=y(C(),1),cHe={ADD:0,REPLACE:1},tr=Object.freeze(cHe);var yFn=y(C(),1),uX=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var lHe=new ce,cde={name:"PointCloudStylingPipelineStage"};cde.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,d=!l(a)&&c;if(l(r)&&!d){let b=hHe(a),x=fHe(r,b);pHe(i,x);let _=AHe(x).indexOf("normalMC")>=0,E=Mt.getAttributeBySemantic(t,lt.NORMAL);if(_&&!E)throw new de("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,be.VERTEX),x.styleTranslucent&&(e.alphaOptions.pass=Ge.TRANSLUCENT)}let u=o.pointCloudShading;u.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,be.VERTEX),u.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,be.VERTEX);let h,p,g;Tr.is3DTiles(o.type)&&(p=!0,h=o.content,g=h.tile.refine===tr.ADD),i.addUniform("vec4","model_pointCloudParameters",be.VERTEX),i.addVertexLines(uX);let f=e.uniformMap;f.model_pointCloudParameters=function(){let b=lHe,x=1;p&&(x=g?5:h.tileset.memoryAdjustedScreenSpaceError),b.x=u.maximumAttenuation??x,b.x*=n.pixelRatio;let I=dHe(e,t,u,h);b.y=I*u.geometricErrorScale;let _=n.context,E=n.camera.frustum,S;return n.mode===re.SCENE2D||E instanceof gn?S=Number.POSITIVE_INFINITY:S=_.drawingBufferHeight/n.camera.frustum.sseDenominator,b.z=S,p&&(b.w=h.tileset.timeSinceLoad),b}};var ade=new m;function dHe(e,t,n,i){if(l(i)){let u=i.tile.geometricError;if(u>0)return u}if(l(n.baseResolution))return n.baseResolution;let o=Mt.getAttributeBySemantic(t,lt.POSITION),r=o.count,s=e.runtimeNode.transform,a=m.subtract(o.max,o.min,ade);a=X.multiplyByPointAsVector(s,a,ade);let c=a.x*a.y*a.z;return Z.cbrt(c/r)}var uHe={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},mHe={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function hHe(e){let t=ke(mHe);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var IK="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function fHe(e,t){let n=uHe,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${IK})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${IK})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${IK})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function pHe(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,be.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,be.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,be.VERTEX),e.addVertexLines(o))}function _K(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function AHe(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&_K(t,o),l(n)&&_K(n,o),l(i)&&_K(i,o),o}var mX=cde;var zFn=y(C(),1);var vFn=y(C(),1),hX=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var DFn=y(C(),1),fX=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var lde={name:"PrimitiveOutlinePipelineStage"};lde.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,be.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:kt.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",be.FRAGMENT);let a=qC.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",be.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",be.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(hX),i.addFragmentLines(fX)};var pX=lde;var ePn=y(C(),1);var dde={name:"PrimitiveStatisticsPipelineStage",_countGeometry:ude,_count2DPositions:mde,_countMorphTargetAttributes:hde,_countMaterialTextures:fde,_countFeatureIdTextures:pde,_countBinaryMetadata:Ade};dde.process=function(e,t,n){let i=e.model,o=i.statistics;ude(o,t),mde(o,e.runtimePrimitive),hde(o,t),fde(o,t.material),pde(o,t.featureIds),Ade(o,i)};function ude(e,t){let n=l(t.indices)?t.indices.count:Mt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===We.POINTS?e.pointsLength+=n:We.isTriangles(i)&&(e.trianglesLength+=gHe(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let d=o[c];if(l(d.buffer)){let u=l(d.typedArray);e.addBuffer(d.buffer,u)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function gHe(e,t){switch(e){case We.TRIANGLES:return t/3;case We.TRIANGLE_STRIP:case We.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function mde(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function hde(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let d=s[c];l(d.buffer)&&e.addBuffer(d.buffer,i)}}}function fde(e,t){let n=bHe(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function bHe(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function pde(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof Tn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function Ade(e,t){let n=t.structuralMetadata;l(n)&&(yHe(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function yHe(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let d=s[a].textureReader;l(d.texture)&&e.addTexture(d.texture)}}}var AX=dde;var pPn=y(C(),1);var CHe=new X,xHe=new X,gde={name:"SceneMode2DPipelineStage"};gde.process=function(e,t,n){let i=Mt.getAttributeBySemantic(t,lt.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=X.multiplyTransformation(s,a,CHe),d=EHe(e,c,n),u=e.runtimePrimitive;u.boundingSphere2D=d;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let b=LHe(i,c,d,n);u.positionBuffer2D=b,r._modelResources.push(b),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,be.VERTEX),o.addUniform("mat4","u_modelView2D",be.VERTEX);let p=X.fromTranslation(d.center,new X),g=n.context,f={u_modelView2D:function(){return X.multiplyTransformation(g.uniformState.view,p,xHe)}};e.uniformMap=Lt(f,e.uniformMap)};var IHe=new m,_He=new m;function EHe(e,t,n){let i=X.multiplyByPoint(t,e.positionMin,IHe),o=to.computeActualEllipsoidPosition(n,i,i),r=X.multiplyByPoint(t,e.positionMax,_He),s=to.computeActualEllipsoidPosition(n,r,r);return ue.fromCornerPoints(o,s,new ue)}var bde=new m;function THe(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=m.fromArray(e,s,bde),c=m.multiplyComponents(a,r,a),d=m.add(c,o,c);i[s]=d.x,i[s+1]=d.y,i[s+2]=d.z}return i}function SHe(e,t,n,i){let o;l(e.quantization)?o=THe(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let d=m.fromArray(o,c,bde);if(isNaN(d.x)||isNaN(d.y)||isNaN(d.z))continue;let u=X.multiplyByPoint(t,d,d),h=to.computeActualEllipsoidPosition(i,u,u),p=m.subtract(h,n,h);o[c]=p.x,o[c+1]=p.y,o[c+2]=p.z}return o}function LHe(e,t,n,i){let o=ke(i);o.mode=re.COLUMBUS_VIEW;let r=n.center,s=SHe(e,t,r,o),a=It.createVertexBuffer({context:i.context,typedArray:s,usage:Ne.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var gX=gde;var _Pn=y(C(),1);var gPn=y(C(),1),bX=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var cx={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};cx.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,be.VERTEX),VHe(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,be.VERTEX),n.addVertexLines(bX);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=Lt(r,e.uniformMap)};function RHe(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===lt.JOINTS||r.semantic===lt.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function VHe(e,t){e.addFunction(cx.FUNCTION_ID_GET_SKINNING_MATRIX,cx.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,be.VERTEX),e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=RHe(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],d=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,[d])}e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var yX=cx;var GPn=y(C(),1);var TPn=y(C(),1),CX=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var yde={name:"VerticalExaggerationPipelineStage"},GHe=new D;yde.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(CX),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,be.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",be.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return D.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,GHe)}};var xX=yde;var OPn=y(C(),1);var WPn=y(C(),1);var EK={};function ZHe(e){let t=Me.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function BHe(e,t){let n=t.length,i=Me.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function wHe(e){let t=e-2,n=2+t*4,i=Me.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function XHe(e,t){let i=t.length-2,o=2+i*4,r=Me.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],d=t[a+1],u=t[a+2];r[s++]=d,r[s++]=u,r[s++]=u,r[s++]=c}return r}function WHe(e){let t=e-2,n=2+t*4,i=Me.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function FHe(e,t){let i=t.length-2,o=2+i*4,r=Me.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let d=t[c+1],u=t[c+2];r[s++]=d,r[s++]=u,r[s++]=u,r[s++]=a}return r}EK.createWireframeIndices=function(e,t,n){let i=l(n);if(e===We.TRIANGLES)return i?BHe(t,n):ZHe(t);if(e===We.TRIANGLE_STRIP)return i?XHe(t,n):wHe(t);if(e===We.TRIANGLE_FAN)return i?FHe(t,n):WHe(t)};EK.getWireframeIndicesCount=function(e,t){return e===We.TRIANGLES?t*2:e===We.TRIANGLE_STRIP||e===We.TRIANGLE_FAN?2+(t-2)*4:t};var aT=EK;var Cde={name:"WireframePipelineStage"};Cde.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,be.FRAGMENT);let o=e.model,r=PHe(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=We.LINES,e.count=aT.getWireframeIndicesCount(a,c)};function PHe(e,t,n){let o=Mt.getAttributeBySemantic(e,lt.POSITION).count,r=n.context.webgl2,s;if(l(t)){let u=t.buffer,h=t.count;l(u)&&r?(s=u.sizeInBytes===h?new Uint8Array(h):Me.createTypedArray(o,h),u.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=aT.createWireframeIndices(a,o,s),d=Me.fromSizeInBytes(c.BYTES_PER_ELEMENT);return It.createIndexBuffer({context:n.context,typedArray:c,usage:Ne.STATIC_DRAW,indexDatatype:d})}var IX=Cde;function xde(e){e=e??Y.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}xde.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,d=e.mode!==re.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,u=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,p=l(i.skin),g=l(o.imageryLayers),f=l(r),x=!(f&&l(r.fragmentShaderText))||r.mode!==DA.REPLACE_MATERIAL,I=Mt.hasQuantizedAttributes(n.attributes),_=o.debugWireframe&&We.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),E=o.pointCloudShading,S=l(E)&&E.attenuation,R=l(E)&&E.backFaceCulling,G=n.primitiveType===We.POINTS&&(l(s)||S||R),B=o._enableShowOutline&&l(n.outlineCoordinates),w=MHe(o,i,n),F=l(o.classificationType);d&&t.push(gX),t.push(Mw),_&&t.push(IX),F&&t.push(Iw),h&&t.push(lX),p&&t.push(yX),G&&t.push(mX),I&&t.push(Xw),g&&(B?xt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(iX)),x&&t.push(aX),t.push(a0),t.push(rm),t.push(Jd),w.hasPropertyTable&&(t.push(l0),t.push(xw),t.push(Tw)),u&&t.push(xX),f&&t.push(Bw),t.push(rX),o.allowPicking&&t.push(dX),B&&t.push(pX),t.push(Cw),t.push(AX)};function MHe(e,t,n){let i;return l(t.instances)&&(i=Mt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Mt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var _X=xde;var RMn=y(C(),1);function TK(e){e=e??Y.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],vHe(this)}Object.defineProperties(TK.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function vHe(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let d=i[c].index,u=r[d];s.push(u);let h=n[c],p=Ide(u,h,new X);a.push(p)}}function Ide(e,t,n){let i=X.multiplyTransformation(e.transformToRoot,e.transform,n);return n=X.multiplyTransformation(i,t,n),n}TK.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Ide(i,o,e[n])}};var EX=TK;var JMn=y(C(),1);var GMn=y(C(),1);function NHe(){this.pass=void 0,this.alphaCutoff=void 0}var lx=NHe;var kMn=y(C(),1);var BMn=y(C(),1);function SK(e){this.name=e,this.fields=[]}SK.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};SK.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var TX=SK;var XMn=y(C(),1);function LK(e){this.signature=e,this.body=[]}LK.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};LK.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var SX=LK;function Vl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(Vl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});Vl.prototype.addDefine=function(e,t,n){n=n??be.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),be.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),be.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};Vl.prototype.addStruct=function(e,t,n){this._structs[e]=new TX(t),be.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),be.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};Vl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};Vl.prototype.addFunction=function(e,t,n){this._functions[e]=new SX(t),be.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),be.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};Vl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};Vl.prototype.addUniform=function(e,t,n){n=n??be.BOTH;let i=`uniform ${e} ${t};`;be.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),be.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};Vl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};Vl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=QHe(e),i};Vl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};Vl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?ci(t,e):t.push(e)};Vl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?ci(t,e):t.push(e)};Vl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=DHe(this),i=UHe(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new Oe({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new Oe({defines:this._fragmentShaderParts.defineLines,sources:[s]});return ln.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};Vl.prototype.clone=function(){return ke(this,!0)};function DHe(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),ci(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),ci(n,a);return{vertexLines:t,fragmentLines:n}}function QHe(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function UHe(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),ci(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),ci(n,a);return{vertexLines:t,fragmentLines:n}}var OA=Vl;function kHe(e){this.shaderBuilder=new OA,this.model=e,this.uniformMap={},this.alphaOptions=new lx,this.renderStateOptions=Qe.getState(Qe.fromCache({depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var LX=kHe;var avn=y(C(),1);var qMn=y(C(),1),RX=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var evn=y(C(),1),VX=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var WQ={name:"ModelSilhouettePipelineStage"};WQ.silhouettesLength=0;WQ.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++WQ.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,be.BOTH),i.addVertexLines(VX),i.addFragmentLines(RX),i.addUniform("vec4","model_silhouetteColor",be.FRAGMENT),i.addUniform("float","model_silhouetteSize",be.VERTEX),i.addUniform("bool","model_silhouettePass",be.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=Lt(o,e.uniformMap),e.hasSilhouette=!0};var GX=WQ;var fvn=y(C(),1);var lvn=y(C(),1),ZX=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var FQ={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};FQ.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,be.FRAGMENT),i.addFragmentLines(ZX);let o={};i.addUniform("float",FQ.SPLIT_DIRECTION_UNIFORM_NAME,be.FRAGMENT),o[FQ.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=Lt(o,e.uniformMap)};var BX=FQ;var gvn=y(C(),1);function YHe(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ke(e.uniformMap),this.alphaOptions=ke(e.alphaOptions),this.renderStateOptions=ke(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var wX=YHe;var Vvn=y(C(),1);var xvn=y(C(),1);function OHe(e){e=e??Y.EMPTY_OBJECT,this.lightingModel=e.lightingModel??jf.UNLIT}var XX=OHe;function HHe(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ke(e.uniformMap),this.alphaOptions=ke(e.alphaOptions),this.renderStateOptions=ke(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Mt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Mt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=m.clone(i.min,new m),this.positionMax=m.clone(i.max,new m),this.boundingSphere=ue.fromCornerPoints(this.positionMin,this.positionMax,new ue),this.lightingOptions=new XX,this.pickId=void 0}var WX=HHe;var ZNn=y(C(),1);var kvn=y(C(),1);function VK(e){e=e??Y.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==$n.CESIUM_3D_TILE,this._classifies3DTiles=o!==$n.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],jHe(this)}function zHe(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:Ct.KEEP,zFail:Ct.DECREMENT_WRAP,zPass:Ct.KEEP},backFunction:e,backOperation:{fail:Ct.KEEP,zFail:Ct.INCREMENT_WRAP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},depthMask:!1}}var KHe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND},JHe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},Tde=[];function jHe(e){let t=e._command,n=Tde;if(e._useDebugWireframe){t.pass=Ge.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=FX(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Ge.TERRAIN_CLASSIFICATION,s=RK(t,r),a=_de(t,r);n.length=0,n.push(s,a),e._commandListTerrain=FX(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=Ede(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Ge.CESIUM_3D_TILE_CLASSIFICATION,s=RK(t,r),a=_de(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=FX(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=Ede(e,n,e._commandList3DTilesPicking))}}function FX(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let d=o[c],u=r[c];for(let h=0;h<a;h++){let p=t[h],g=ot.shallowClone(p);g.count=d,g.offset=u,n.push(g)}}return n}function RK(e,t){let n=ot.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Ge.TERRAIN_CLASSIFICATION?ei.ALWAYS:ei.EQUAL,o=zHe(i);return n.renderState=Qe.fromCache(o),n}function _de(e,t){let n=ot.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Qe.fromCache(KHe),n}var qHe=[];function Ede(e,t,n){let i=Qe.fromCache(JHe),o=t[0],r=t[1],s=ot.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=ot.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=qHe;return c.length=0,c.push(s,a),FX(e,c,n)}Object.defineProperties(VK.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=ue.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});VK.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){ci(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&ci(t,this._commandListTerrain),this._classifies3DTiles&&ci(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Ge.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=RK(this._command,o),s=Tde;s.length=0,s.push(r),this._commandListIgnoreShow=FX(this,s,this._commandListIgnoreShow)}ci(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&ci(t,this._commandListTerrainPicking),this._classifies3DTiles&&ci(t,this._commandList3DTilesPicking)),t};var PX=VK;var uNn=y(C(),1);function PQ(e){e=e??Y.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Ge.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,d=!r&&!c,u=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=X.clone(t.modelMatrix),this._boundingVolume=ue.clone(t.boundingVolume),this._modelMatrix2D=new X,this._boundingVolume2D=new ue,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=d,this._needsSkipLevelOfDetailCommands=u,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,$He(this)}function HA(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}HA.clone=function(e){return new HA({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function $He(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new HA({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new HA({command:sze(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new HA({command:mze(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new HA({command:hze(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new HA({command:aze(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new HA({command:cze(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(PQ.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=ue.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,tze(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,nze(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,ize(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,oze(this))}}});function eze(e,t){let n=e._modelMatrix;e._modelMatrix2D=X.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=Z.sign(n[13])*2*Z.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=ue.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function tze(e){let t=e.shadows,n=Gn.castShadows(t),i=Gn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function nze(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ke(r.renderState,!0);s.cull.enabled=t,r.renderState=Qe.fromCache(s)}}}function ize(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ke(r.renderState,!0);s.cull.face=t,r.renderState=Qe.fromCache(s)}}}function oze(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}PQ.prototype.pushCommands=function(e,t){let n=Sde(this,e);n&&!this._has2DCommands&&(rze(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(eze(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Rh.ALL_OPAQUE&&lT(t,this._translucentCommand,n),i===Rh.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||lT(o._backfaceCommands,this._skipLodBackfaceCommand,n),lze(this,r,n),lT(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){lT(t,this._silhouetteModelCommand,n);return}return lT(t,this._originalCommand,n),t}};PQ.prototype.pushSilhouetteCommands=function(e,t){let n=Sde(this,e);return lT(t,this._silhouetteColorCommand,n),t};function lT(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function Sde(e,t){if(t.mode!==re.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*Z.PI;return o<s&&r>s||o<-s&&r>-s}function cT(e,t){if(!l(t))return;let n=HA.clone(t),i=ot.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function rze(e){cT(e,e._originalCommand),cT(e,e._translucentCommand),cT(e,e._skipLodBackfaceCommand),cT(e,e._skipLodStencilCommand),cT(e,e._silhouetteModelCommand),cT(e,e._silhouetteColorCommand)}function sze(e){let t=ot.shallowClone(e);t.pass=Ge.TRANSLUCENT;let n=ke(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=bn.ALPHA_BLEND,t.renderState=Qe.fromCache(n),t}function aze(e,t){let n=t._silhouetteId%255,i=ot.shallowClone(e),o=ke(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ne.ALWAYS,backFunction:ne.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.REPLACE},backOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Qe.fromCache(o),i}function cze(e,t){let n=t._silhouetteId%255,i=ot.shallowClone(e),o=ke(e.renderState,!0);o.cull.enabled=!1,(e.pass===Ge.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Ge.TRANSLUCENT,o.depthMask=!1,o.blending=bn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ne.NOTEQUAL,backFunction:ne.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.KEEP},backOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.KEEP}};let s=ke(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Qe.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function lze(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=dze(o);if(r!==s){let a=uze(r),c=ke(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Qe.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function dze(e){return(e.renderState.stencilTest.reference&jt.SKIP_LOD_MASK)>>>jt.SKIP_LOD_BIT_SHIFT}function uze(e){return jt.CESIUM_3D_TILE_MASK|e<<jt.SKIP_LOD_BIT_SHIFT}function mze(e){let t=ot.shallowClone(e),n=ke(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Xi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ke(t.uniformMap),o=new D(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Qe.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function hze(e){let t=ot.shallowClone(e),n=ke(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=jt.SKIP_LOD_MASK,i.reference=jt.CESIUM_3D_TILE_MASK,i.frontFunction=ei.GREATER_OR_EQUAL,i.frontOperation.zPass=Ct.REPLACE,i.backFunction=ei.GREATER_OR_EQUAL,i.backOperation.zPass=Ct.REPLACE,n.stencilMask=jt.CESIUM_3D_TILE_MASK|jt.SKIP_LOD_MASK,t.renderState=Qe.fromCache(n),t}var MX=PQ;var hNn=y(C(),1),vX=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var pNn=y(C(),1),NX=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function Lde(){}Lde.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=fze(e,n,t),o=pze(e,i,t),r=e.model;return l(r.classificationType)?new PX({primitiveRenderResources:e,command:o}):new MX({primitiveRenderResources:e,command:o})};function fze(e,t,n){t.addVertexLines(vX),t.addFragmentLines(NX);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function pze(e,t,n){let i=Aze(e),o=new ui({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===re.SCENE3D,d,u;if(!c&&!n.scene3DOnly&&r._projectTo2D)d=X.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new X),u=e.runtimePrimitive.boundingSphere2D;else{let I=c?a._computedModelMatrix:a._computedModelMatrix2D;d=X.multiplyTransformation(I,e.runtimeNode.computedTransform,new X),u=ue.transform(e.boundingSphere,d)}let h=ke(Qe.fromCache(e.renderStateOptions),!0);h.cull.face=Mt.getCullFace(d,e.primitiveType),h=Qe.fromCache(h);let p=l(r.classificationType),g=p?!1:Gn.castShadows(r.shadows),f=p?!1:Gn.receiveShadows(r.shadows),b=p?void 0:e.pickId;return new ot({boundingVolume:u,modelMatrix:d,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:b,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:f})}function Aze(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var DX=Lde;function Nc(e){e=e??Y.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=X.clone(X.IDENTITY),this._computedModelMatrix2D=X.clone(X.IDENTITY),this._axisCorrectionMatrix=Mt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new X),this._runtimeArticulations={},gze(this)}Object.defineProperties(Nc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function gze(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;Rde(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let _=0;_<s;_++){let E=r[_],S=new ow({articulation:E,sceneGraph:e}),R=S.name;a[R]=S}let c=t.nodes,d=c.length;e._runtimeNodes=new Array(d);let h=n.nodes.length,p=X.IDENTITY;for(let _=0;_<h;_++){let E=n.nodes[_],S=Vde(e,E,p);e._rootNodes.push(S)}let g=t.skins,f=e._runtimeSkins,b=g.length;for(let _=0;_<b;_++){let E=g[_];f.push(new EX({skin:E,sceneGraph:e}))}let x=e._skinnedNodes,I=x.length;for(let _=0;_<I;_++){let E=x[_],S=e._runtimeNodes[E],G=c[E].skin.index;S._runtimeSkin=f[G],S.updateJointMatrices()}e.applyArticulations()}function Rde(e,t){let n=e._components,i=e._model;e._computedModelMatrix=X.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=X.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=X.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var bze=new m;function yze(e,t){let n=e._computedModelMatrix,i=X.getTranslation(n,bze);if(!m.equals(i,m.ZERO))e._computedModelMatrix2D=Dt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=Dt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=X.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=ue.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function Vde(e,t,n){let i=[],o=Mt.getNodeTransform(t),r=t.children.length;for(let u=0;u<r;u++){let h=t.children[u],p=X.multiplyTransformation(n,o,new X),g=Vde(e,h,p);i.push(g)}let s=new yw({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let u=0;u<a;u++)s.runtimePrimitives.push(new _X({primitive:t.primitives[u],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let d=t.name;if(l(d)){let u=e._model,h=new uw(u,s);u._nodesByName[d]=h}return c}var Cze=new m,xze=new m,Ize=new m,_ze=new m;Nc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};Nc.prototype.buildRenderResources=function(e){let t=this._model,n=new LX(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new wX(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let d=r.runtimePrimitives[c];d.configurePipeline(e);let u=d.pipelineStages,h=new WX(a,d);a.primitiveRenderResources[c]=h;for(let p=0;p<u.length;p++)u[p].process(h,d.primitive,e)}}return n};Nc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Cze),i=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,xze);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let d=r.runtimePrimitives[c],u=s.primitiveRenderResources[c];d.boundingSphere=ue.clone(u.boundingSphere,new ue);let h=X.multiplyByPoint(a,u.positionMin,Ize),p=X.multiplyByPoint(a,u.positionMax,_ze);m.minimumByComponent(n,h,n),m.maximumByComponent(i,p,i)}}this._boundingSphere=ue.fromCornerPoints(n,i,new ue),this._boundingSphere=ue.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=ue.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=ue.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};Nc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=DX.buildModelDrawCommand(a,t);s.drawCommand=c}}};Nc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push(s0),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push(nw),n.isClippingEnabled()&&t.push(aw),n.isClippingPolygonsEnabled()&&t.push(dw),n.hasSilhouette(e)&&t.push(GX),l(n.splitDirection)&&n.splitDirection!==Ir.NONE&&t.push(BX),Tr.is3DTiles(n.type)&&t.push(jB),i&&t.push(ew))};Nc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==re.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};Nc.prototype.updateModelMatrix=function(e,t){Rde(this,e),t.mode!==re.SCENE3D&&yze(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};Nc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function Gde(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let d=t.getChild(c);Gde(e,d,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let d=s[c];i(d,o)}}function MQ(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];Gde(e,c,t,n,i)}}var Eze={backFaceCulling:void 0};Nc.prototype.updateBackFaceCulling=function(e){let t=Eze;t.backFaceCulling=e,MQ(this,!1,Tze,t)};function Tze(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var Sze={shadowMode:void 0};Nc.prototype.updateShadows=function(e){let t=Sze;t.shadowMode=e,MQ(this,!1,Lze,t)};function Lze(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var Rze={debugShowBoundingVolume:void 0};Nc.prototype.updateShowBoundingVolume=function(e){let t=Rze;t.debugShowBoundingVolume=e,MQ(this,!1,Vze,t)};function Vze(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var Zde=[],Gze={frameState:void 0,hasSilhouette:void 0};Nc.prototype.pushDrawCommands=function(e){let t=Zde;t.length=0;let n=Gze;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,MQ(this,!0,Zze,n),ci(e.commandList,t)};function Zze(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=Zde,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}Nc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};Nc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var QX=Nc;var d9n=y(C(),1);function m0(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new Bt}Object.defineProperties(m0.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});m0.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};m0.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};m0.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};m0.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};m0.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};m0.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var UX=m0;var O9n=y(C(),1);var Wde=y(T9(),1);var I9n=y(C(),1);var Bde={},dx=Uint32Array.BYTES_PER_ELEMENT;Bde.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=dx;let o=i.getUint32(t,!0);if(o!==1)throw new de(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=dx,t+=dx;let r=i.getUint32(t,!0);if(r===0)throw new de("Feature table must have a byte length greater than zero");t+=dx;let s=i.getUint32(t,!0);t+=dx;let a=i.getUint32(t,!0);t+=dx;let c=i.getUint32(t,!0);t+=dx;let d=mr(n,t,r);t+=r;let u=new Uint8Array(e,t,s);t+=s;let h,p;a>0&&(h=mr(n,t,a),t+=a,c>0&&(p=new Uint8Array(e,t,c),t+=c));let g=new Sh(d,u),f=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=f,!l(f))throw new de("Feature table global property: POINTS_LENGTH must be defined");let b=g.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(b)&&(b=m.unpack(b));let x=Bze(g,h);if(x.rtcCenter=b,x.pointsLength=f,!x.hasPositions){let I=wze(g);x.positions=I,x.hasPositions=x.hasPositions||l(I)}if(!x.hasPositions)throw new de("Either POSITION or POSITION_QUANTIZED must be defined.");if(!x.hasNormals){let I=Wze(g);x.normals=I,x.hasNormals=x.hasNormals||l(I)}if(!x.hasColors){let I=Xze(g);x.colors=I,x.hasColors=x.hasColors||l(I),x.hasConstantColor=l(x.constantColor),x.isTranslucent=l(I)&&I.isTranslucent}if(!x.hasBatchIds){let I=Fze(g);x.batchIds=I,x.hasBatchIds=x.hasBatchIds||l(I)}if(x.hasBatchIds){let I=g.getGlobalProperty("BATCH_LENGTH");if(!l(I))throw new de("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");x.batchLength=I}return l(p)&&(p=new Uint8Array(p),x.batchTableJson=h,x.batchTableBinary=p),x};function Bze(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,d,u,h,p;if(l(s)){o=s.properties;let f=s.byteOffset,b=s.byteLength;if(!l(o)||!l(f)||!l(b))throw new de("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(f,f+b),c=l(o.POSITION),d=l(o.RGB)||l(o.RGBA),u=l(o.NORMAL),h=l(o.BATCH_ID),p=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:Lt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:d,isTranslucent:p,hasNormals:u,hasBatchIds:h}}function wze(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",J.FLOAT,3),{name:lt.POSITION,semantic:lt.POSITION,typedArray:n,isQuantized:!1,componentDatatype:J.FLOAT,type:kt.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",J.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",J.FLOAT,3);if(!l(i))throw new de("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",J.FLOAT,3);if(!l(r))throw new de("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:lt.POSITION,semantic:lt.POSITION,typedArray:n,isQuantized:!0,componentDatatype:J.FLOAT,type:kt.VEC3,quantizedRange:o,quantizedVolumeOffset:m.unpack(r),quantizedVolumeScale:m.unpack(i),quantizedComponentDatatype:J.UNSIGNED_SHORT,quantizedType:kt.VEC3}}}function Xze(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",J.UNSIGNED_BYTE,4),{name:lt.COLOR,semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",J.UNSIGNED_BYTE,3),{name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",J.UNSIGNED_SHORT,1),{name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.FLOAT,type:kt.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",J.UNSIGNED_BYTE,4),o=i[3],r=U.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:lt.COLOR,semantic:lt.COLOR,setIndex:0,constantColor:r,componentDatatype:J.FLOAT,type:kt.VEC4,isQuantized:!1,isTranslucent:s}}}function Wze(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",J.FLOAT,3),{name:lt.NORMAL,semantic:lt.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:J.FLOAT,type:kt.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",J.UNSIGNED_BYTE,2),{name:lt.NORMAL,semantic:lt.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:kt.VEC2,quantizedComponentDatatype:J.UNSIGNED_BYTE,componentDatatype:J.FLOAT,type:kt.VEC3}}function Fze(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",J.UNSIGNED_SHORT,1);return{name:lt.FEATURE_ID,semantic:lt.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:J.fromTypedArray(n),type:kt.SCALAR}}}var ux=Bde;var Pze=Tn.Components,Mze=Tn.Scene,vze=Tn.Node,Nze=Tn.Primitive,Dze=Tn.Attribute,wde=Tn.Quantization,Qze=Tn.FeatureIdAttribute,Uze=Tn.Material,kze=Tn.MetallicRoughness;function h0(e){e=e??Y.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=ft.UNLOADED,this._buffers=[],this._components=void 0,this._transform=X.IDENTITY}l(Object.create)&&(h0.prototype=Object.create(Yi.prototype),h0.prototype.constructor=h0);Object.defineProperties(h0.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});h0.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=ux.parse(this._arrayBuffer,this._byteOffset),this._state=ft.PROCESSING,this._promise=Promise.resolve(this)};h0.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===ft.READY)return!0;if(this._state===ft.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=Yze(this,e.context)}return!1};function Yze(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=TA.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&Oze(e,i,r),iKe(e,t),e._state=ft.READY,e}).catch(function(r){e.unload(),e._state=ft.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function Oze(e,t,n){e._state=ft.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:lt.POSITION,typedArray:n.POSITION.array,componentDatatype:J.FLOAT,type:kt.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,d=m.fromElements(c,c,c),u=m.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=u,o.quantizedVolumeScale=d,o.quantizedComponentDatatype=h<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT,o.quantizedType=kt.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:lt.NORMAL,typedArray:n.NORMAL.array,componentDatatype:J.FLOAT,type:kt.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=J.UNSIGNED_BYTE,o.quantizedType=kt.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:lt.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:J.fromTypedArray(a),type:kt.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let d=c.data;r[a]={byteOffset:d.byteOffset,type:Hze(d.componentsPerAttribute),componentType:zze(d.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function Hze(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function zze(e){switch(e){case ne.BYTE:return"BYTE";case ne.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ne.SHORT:return"SHORT";case ne.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ne.INT:return"INT";case ne.UNSIGNED_INT:return"UNSIGNED_INT";case ne.DOUBLE:return"DOUBLE";case ne.FLOAT:return"FLOAT"}}function kX(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new wde,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new wde;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=m.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=m.divideByScalar(c,a,new m),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new Dze;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Mn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=U.pack(t.constantColor,a)}else{let a=It.createVertexBuffer({typedArray:i,context:n,usage:Ne.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===lt.POSITION&&s&&(r.typedArray=i),r}var Xde,vQ;function Kze(e){if(!l(vQ)){Xde=new Wde.default(0),vQ=new Array(e);for(let t=0;t<e;++t)vQ[t]=Xde.random()}return vQ}var Jze=new m,jze=new m,qze=new m;function $ze(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=Kze(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=m.fromElements(s,s,s,Jze),d=m.fromElements(a,a,a,jze),u,h,p;if(e.isQuantized)c=m.ZERO,d=e.quantizedVolumeScale;else for(u=0;u<o;++u)h=Math.floor(r[u]*i),p=m.unpack(t,h*3,qze),m.minimumByComponent(c,p,c),m.maximumByComponent(d,p,d);e.min=m.clone(c),e.max=m.clone(d)}var eKe={name:lt.COLOR,semantic:lt.COLOR,setIndex:0,constantColor:U.DARKGRAY,componentDatatype:J.FLOAT,type:kt.VEC4,isQuantized:!1,isTranslucent:!1};function tKe(e,t,n){let i=[],o,r=t.positions;return l(r)&&($ze(r),o=kX(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=kX(e,t.normals,n),i.push(o)),l(t.colors)?(o=kX(e,t.colors,n),i.push(o)):(o=kX(e,eKe,n),i.push(o)),l(t.batchIds)&&(o=kX(e,t.batchIds,n),i.push(o)),i}function nKe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?PA({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new fa({schema:{},propertyTables:[]})}function iKe(e,t){let n=e._parsedContent,i=new kze;i.metallicFactor=0,i.roughnessFactor=.9;let o=new Uze;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=Yf.BLEND);let s=!l(n.normals);o.unlit=s;let a=new Nze;if(a.attributes=tKe(e,n,t),a.primitiveType=We.POINTS,a.material=o,l(n.batchIds)){let g=new Qze;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new vze;c.index=0,c.primitives=[a];let d=new Mze;d.nodes=[c],d.upAxis=ho.Z,d.forwardAxis=ho.X;let u=new Pze;u.scene=d,u.nodes=[c];let h=[];u.structuralMetadata=nKe(n,h),h.length>0&&oKe(e,a,h,t),l(n.rtcCenter)&&(u.transform=X.multiplyByTranslation(u.transform,n.rtcCenter,u.transform));let p=n.positions;l(p)&&p.isQuantized&&(u.transform=X.multiplyByTranslation(u.transform,p.quantizedVolumeOffset,u.transform)),e._components=u,e._parsedContent=void 0,e._arrayBuffer=void 0}function oKe(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=It.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Ne.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}h0.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var YX=h0;var uDn=y(C(),1);var rKe=new m,sKe=new m,aKe=new m,cKe=new X,lKe=new X,dKe=new X,uKe=new ge,mKe=new ue;function dT(e,t,n,i,o,r,s){if(!e._ready||n.mode===re.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,d=c._runtimeNodes;for(let u=0;u<d.length;u++){let h=d[u],p=h.node,g=X.clone(h.computedTransform,cKe),f=X.clone(c.computedModelMatrix,lKe),b=p.instances;l(b)&&b.transformInWorldSpace&&(f=X.multiplyTransformation(e.modelMatrix,c.components.transform,f),g=X.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let x=X.multiplyTransformation(f,g,dKe);n.mode!==re.SCENE3D&&(x=Dt.basisTo2D(n.mapProjection,x,x));let I=[];if(l(b)){let E=b.attributes[0].count,S=b.attributes[0].componentDatatype,R=12,G=h.transformsTypedArray;if(!l(G)){let B=h.instancingTransformsBuffer;l(B)&&n.context.webgl2&&(G=J.createTypedArray(S,E*R),B.getBufferData(G))}if(l(G))for(let B=0;B<E;B++){let w=B*R,F=new X(G[w],G[w+1],G[w+2],G[w+3],G[w+4],G[w+5],G[w+6],G[w+7],G[w+8],G[w+9],G[w+10],G[w+11],0,0,0,1);b.transformInWorldSpace?(X.multiplyTransformation(F,g,F),X.multiplyTransformation(f,F,F)):X.multiplyTransformation(F,x,F),I.push(F)}}I.length===0&&I.push(x);let _=h.runtimePrimitives.length;for(let E=0;E<_;E++){let S=h.runtimePrimitives[E],R=S.primitive;if(l(S.boundingSphere)&&!l(b)){let H=ue.transform(S.boundingSphere,x,mKe),ee=fi.raySphere(t,H);if(!l(ee))continue}let G=Mt.getAttributeBySemantic(R,lt.POSITION),B=G.byteOffset,w=G.byteStride,F=G.count;if(!l(R.indices))continue;let P=R.indices.typedArray;if(!l(P)){let H=R.indices.buffer,ee=R.indices.count,K=R.indices.indexDatatype;l(H)&&n.context.webgl2&&(K===Me.UNSIGNED_BYTE?P=new Uint8Array(ee):K===Me.UNSIGNED_SHORT?P=new Uint16Array(ee):K===Me.UNSIGNED_INT&&(P=new Uint32Array(ee)),H.getBufferData(P))}let A=G.typedArray,T=G.componentDatatype,L=G.type,V=G.quantization;l(V)&&(T=G.quantization.componentDatatype,L=G.quantization.type);let W=kt.getNumberOfComponents(L),M=J.getSizeInBytes(T),Q=!l(A)&&l(w)&&w!==W*M,N=W,k=0;Q&&(N=w/M,k=B/M);let v=F*N;if(!l(A)){let H=G.buffer;l(H)&&n.context.webgl2&&(A=J.createTypedArray(T,v),H.getBufferData(A,Q?0:B,0,v)),V&&G.normalized&&(A=Mn.dequantize(A,T,L,F))}if(!l(P)||!l(A))return;r=r??ie.default,i=i??1,o=o??0;let O=P.length;for(let H=0;H<O;H+=3){let ee=P[H],K=P[H+1],te=P[H+2];for(let q of I){let pe=GK(A,ee,k,N,V,q,i,o,r,rKe),ye=GK(A,K,k,N,V,q,i,o,r,sKe),he=GK(A,te,k,N,V,q,i,o,r,aKe),xe=fi.rayTriangleParametric(t,pe,ye,he,e.backFaceCulling??!0);l(xe)&&xe<a&&xe>=0&&(a=xe)}}}}if(a!==Number.MAX_VALUE){if(s=En.getPoint(t,a,s),n.mode!==re.SCENE3D){m.fromElements(s.y,s.z,s.x,s);let u=n.mapProjection,h=u.ellipsoid,p=u.unproject(s,uKe);h.cartographicToCartesian(p,s)}return s}}function GK(e,t,n,i,o,r,s,a,c,d){let u=n+t*i;if(d.x=e[u],d.y=e[u+1],d.z=e[u+2],l(o))if(o.octEncoded){if(d=Mn.octDecodeInRange(d,o.normalizationRange,d),o.octEncodedZXY){let h=d.x;d.x=d.z,d.z=d.y,d.y=h}}else d=m.multiplyComponents(d,o.quantizedVolumeStepSize,d),d=m.add(d,o.quantizedVolumeOffset,d);return d=X.multiplyByPoint(r,d,d),s!==1&&Mr.getPosition(d,c,s,a,d),d}var CDn=y(C(),1);var hDn=y(C(),1),ZK=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},OX=ZK;var BK=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,d=new ax(t,a,c);c.primitive.modelPrimitiveImagery=d,i.push(d)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new Ae("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new OX(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),me(this)}},HX=BK;function _o(e){e=e??Y.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??Tr.GLTF,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=$.clone($.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new HB(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=U.clone(e.color),this._colorBlendMode=e.colorBlendMode??Fc.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??U.RED;this._silhouetteColor=U.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Ge.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new ue,this._initialRadius=void 0,this._heightReference=e.heightReference??et.NONE,this._heightDirty=this._heightReference!==et.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new Hf(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Ws.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=X.clone(X.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?Ih.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new HX(this),this._lightColor=m.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new TC,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new ZA(e.environmentMapOptions);ZA.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Gn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Tr.GLTF&&xt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let d=e.credit;typeof d=="string"&&(d=new Gt(d)),this._credits=[],this._credit=d,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??Ir.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??U.BLACK,this._classificationType=e.classificationType,this._statistics=new UX,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new Ce,this._readyEvent=new Ce,this._texturesReadyEvent=new Ce,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function wK(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function hKe(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new JB({model:e,propertyTable:s});n.push(a)}return n}function fKe(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Mt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],d=Mt.getFeatureIdsByLabel(c.featureIds,n);if(l(d))return d.propertyTableId}if(t._featureTables.length===1)return 0}function FK(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(_o.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){FK(e,this._color)&&this.resetDrawCommands(),this._color=U.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!U.equals(e,this._silhouetteColor)){let t=FK(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=U.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return Mde(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Tr.GLTF&&xt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Ws.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(Ih.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=m.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(ZA.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});_o.prototype.getNode=function(e){return this._nodesByName[e]};_o.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};_o.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};_o.prototype.getExtension=function(e){return this._loader.components.extensions[e]};_o.prototype.makeStyleDirty=function(){this._styleDirty=!0};_o.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var pKe=new X,AKe=new $,gKe=new X;_o.prototype.update=function(e){let t=!1;try{t=bKe(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")wK(this,i);else{let o=Mt.getError("model",this._resource,i);wK(this,o)}}if(yKe(this,e),CKe(this,e),xKe(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Mt.getError("model",this._resource,new de("Failed to load model."));wK(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&hKe(this,o);let r=new QX({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===re.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(IKe(this),_Ke(this),EKe(this,e),TKe(this),SKe(this,e),LKe(this,e),RKe(this,e),VKe(this,e),GKe(this,e),ZKe(this,e),BKe(this,e),this._defaultTexture=e.context.defaultTexture,wKe(this,e),XKe(this,e),WKe(this),FKe(this,e),NKe(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),MKe(this),DKe(this,e),QKe(this),UKe(this,e)}};function bKe(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function yKe(e,t){l(e._customShader)&&e._customShader.update(t)}function CKe(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function xKe(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function IKe(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=fKe(t,e),e._styleDirty=!0,e.resetDrawCommands())}function _Ke(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function EKe(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&Pde(e)}function Pde(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Rh.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function TKe(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function SKe(e,t){e._silhouetteDirty&&(vde(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function LKe(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function RKe(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function VKe(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function GKe(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function ZKe(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function BKe(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function wKe(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function XKe(e,t){X.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=X.clone(e.modelMatrix,e._modelMatrix))}var f0=new m,XK=new ge;function WKe(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===et.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??ie.default,i=e.modelMatrix;f0.x=i[12],f0.y=i[13],f0.z=i[14];let o=n.cartesianToCartographic(f0);l(e._clampedModelMatrix)||(e._clampedModelMatrix=X.clone(i,new X)),e._removeUpdateHeightCallback=t.updateHeight(o,Fde(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=Fde(e,n,o);ge.clone(o,XK),XK.height=r,s(XK)}e._heightDirty=!1,e._updateModelMatrix=!0}function FKe(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;Mde(e,n),PKe(e,n,t)}function Mde(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=m.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=ue.transform(e._boundingSphere,t,e._boundingSphere)}function PKe(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);X.getTranslation(t,f0),e._sceneMode!==re.SCENE3D&&to.computeActualEllipsoidPosition(n,f0,f0);let s=e._boundingSphere.radius,a=kKe(f0,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function MKe(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var vKe=new $(1,0,0,0,0,1,0,-1,0);function NKe(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=AKe,s=pKe;if(s=X.multiply(o.uniformState.view3D,i,s),r=X.getRotation(s,r),r=$.transpose(r,r),e._iblReferenceFrameMatrix=$.multiply(vKe,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=gKe;a=X.multiply(o.uniformState.view3D,i,a),a=X.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=X.inverseTranspose(a,e._clippingPlanesMatrix)}}function DKe(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function QKe(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Gt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Gt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Gt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function UKe(e,t){let n=OKe(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(HKe(e,t),e._sceneGraph.pushDrawCommands(t))}var WK=new ue;function kKe(e,t,n){return WK.center=e,WK.radius=t,n.camera.getPixelSize(WK,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var NQ=new m;function Fde(e,t,n){return function(i){D_(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,NQ);let o=e._clampedModelMatrix;X.clone(e.modelMatrix,o),o[12]=NQ.x,o[13]=NQ.y,o[14]=NQ.z,e._heightDirty=!0}}var YKe=new m;function OKe(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===re.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=X.getTranslation(e.modelMatrix,YKe);to.computeActualEllipsoidPosition(t,s,s),r=m.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function HKe(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}_o.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};_o.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function vde(e){return e.context.stencilBuffer}_o.prototype.hasSilhouette=function(e){return vde(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};_o.prototype.hasSkipLevelOfDetail=function(e){if(!Tr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};_o.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};_o.prototype.pick=function(e,t,n,i,o){return dT(this,e,t,n,i,o)};_o.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};_o.prototype.isDestroyed=function(){return!1};_o.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,me(this)};_o.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};_o.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};_o.fromGltfAsync=async function(e){e=e??Y.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=Ve.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=Ve.createIfNeeded(t);let r=new Od(n),a=l(e.content)?Tr.TILE_GLTF:Tr.GLTF,c=n.gltfResource,d=zX(r,a,e);d.resource=c,d.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Mt.getError("model",c,g)}let u=e.gltfCallback;l(u)&&u(r.gltfJson);let h=new _o(d),p=h._resource.credits;if(l(p)){let g=p.length;for(let f=0;f<g;f++)h._resourceCredits.push(Gt.clone(p[f]))}return h};_o.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new MB(t);try{await n.load();let i=zX(n,Tr.TILE_B3DM,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new YX(t);try{await n.load();let i=zX(n,Tr.TILE_PNTS,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new DB(t);try{await n.load();let i=zX(n,Tr.TILE_I3DM,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new vB(t),i=zX(n,Tr.TILE_GEOJSON,e);return new _o(i)};var zKe=new U;_o.prototype.applyColorAndShow=function(e){let t=U.clone(this._color,zKe),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):U.clone(U.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,FK(t,this._color)&&this.resetDrawCommands()};_o.prototype.applyStyle=function(e){let t=this.type===Tr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),Pde(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function zX(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Bh=_o;function os(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(os.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});os.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};os.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};os.prototype.getExtension=function(e){return this._model.getExtension(e)};os.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};os.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};os.prototype.applyDebugSettings=function(e,t){t=e?t:U.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};os.prototype.applyStyle=function(e){this._model.style=e};os.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:od.REPEAT}),this._ready=!0)};os.prototype.isDestroyed=function(){return!1};os.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),me(this)};os.fromGltf=async function(e,t,n,i){let o=new os(e,t,n),s=KX(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Bh.fromGltfAsync(s);return o._model=c,o};os.fromB3dm=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let d=await Bh.fromB3dm(a);return r._model=d,r};os.fromI3dm=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Bh.fromI3dm(a);return r._model=c,r};os.fromPnts=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Bh.fromPnts(a);return r._model=c,r};os.fromGeoJson=async function(e,t,n,i){let o=new os(e,t,n),s=KX(e,t,o,{geoJson:i,resource:n}),a=await Bh.fromGeoJson(s);return o._model=a,o};os.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,ie.WGS84,n)};function KX(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Ge.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return Lt(i,o)}var jd=os;var _Qn=y(C(),1);function am(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(am.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});am.fromJson=function(e,t,n,i){let o=new am(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};am.prototype.hasProperty=function(e,t){return!1};am.prototype.getFeature=function(e){};am.prototype.applyDebugSettings=function(e,t){};am.prototype.applyStyle=function(e){};am.prototype.update=function(e,t){};am.prototype.pick=function(e,t,n){};am.prototype.isDestroyed=function(){return!1};am.prototype.destroy=function(){return me(this)};var JX=am;var HOn=y(C(),1);var JYn=y(C(),1);var gUn=y(C(),1);var BQn=y(C(),1);function Aa(e,t,n,i){let o=Aa._verifyAttributes(t);n=n??0;let r=[],s={},a,c,d=o.length;for(let h=0;h<d;++h){let p=o[h];if(p.vertexBuffer){r.push(p);continue}c=p.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(p)}function u(h,p){return J.getSizeInBytes(p.componentDatatype)-J.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(u);let h=Aa._vertexSizeInBytes(a),p=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:p,needsCommit:!1,arrayBuffer:void 0,arrayViews:Aa._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}Aa._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??J.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Ne.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};Aa._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*J.getSizeInBytes(a.componentDatatype)}let i=n>0?J.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};Aa._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/J.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*J.getSizeInBytes(a)}return n};Aa.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];Aa._resize(o,this._size),Aa._appendWriters(this.writers,o)}PK(this)};Aa._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=J.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var KKe=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];Aa._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=KKe[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};Aa.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=JKe(this,i)||t;if(t||!l(this.va)){PK(this);let s=this.va=[],a=Z.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let d=0;d<c;++d){let u=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=d*(i.vertexSizeInBytes*a);Aa._appendAttributes(u,i,h,this._instanced)}u=u.concat(this._precreated),s.push({va:new ui({context:this._context,attributes:u,indexBuffer:e}),indicesCount:1.5*(d!==c-1?a:this._size%a)})}}};function JKe(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=It.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}Aa._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};Aa.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)jKe(n[i],e,t)};function jKe(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}Aa.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function PK(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}Aa.prototype.isDestroyed=function(){return!1};Aa.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return PK(this),me(this)};var zA=Aa;var XQn=y(C(),1),jX=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var FQn=y(C(),1),qX=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var u5n=y(C(),1);var QQn=y(C(),1);var MQn=y(C(),1),qKe=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),Ts=qKe;function KA(e){this._billboardCollection=e,this._id=void 0,this._loadState=Ts.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(KA.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===Ts.LOADED}},hasImage:{get:function(){return this._loadState!==Ts.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});KA.prototype.unload=async function(){this._loadState!==Ts.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=Ts.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};KA.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===Ts.LOADING||t.loadState===Ts.LOADED){KA.clone(o,this);return}l(o)||(o=new KA(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=Ts.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=Ts.ERROR,o._loadError=c,this._id!==e)return;this._loadState=Ts.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=Ts.FAILED,o._index=-1,this._id!==e)return;this._loadState=Ts.FAILED,this._index=-1;return}o._index=r,o._loadState=Ts.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=Ts.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};KA.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=Ts.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=Ts.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=Ts.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=Ts.LOADED,this.dirty=!0};KA.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};KA.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var JA=KA;function Zi(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=zt.clone(o)),l(r)&&(r=Qt.clone(r)),this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),this._actualPosition=m.clone(this._position),this._pixelOffset=D.clone(e.pixelOffset??D.ZERO),this._translate=new D(0,0),this._eyeOffset=m.clone(e.eyeOffset??m.ZERO),this._heightReference=e.heightReference??et.NONE,this._verticalOrigin=e.verticalOrigin??kn.CENTER,this._horizontalOrigin=e.horizontalOrigin??wi.CENTER,this._scale=e.scale??1,this._color=U.clone(e.color??U.WHITE),this._rotation=e.rotation??0,this._alignedAxis=m.clone(e.alignedAxis??m.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new JA(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=qn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=re.SCENE3D,this._clusterShow=!0,this._outlineColor=U.clone(e.outlineColor??U.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??Ir.NONE}var Nde=Zi.SHOW_INDEX=0,QQ=Zi.POSITION_INDEX=1,Yde=Zi.PIXEL_OFFSET_INDEX=2,$Ke=Zi.EYE_OFFSET_INDEX=3,eJe=Zi.HORIZONTAL_ORIGIN_INDEX=4,tJe=Zi.VERTICAL_ORIGIN_INDEX=5,nJe=Zi.SCALE_INDEX=6,Dde=Zi.IMAGE_INDEX_INDEX=7,Qde=Zi.COLOR_INDEX=8,iJe=Zi.ROTATION_INDEX=9,oJe=Zi.ALIGNED_AXIS_INDEX=10,rJe=Zi.SCALE_BY_DISTANCE_INDEX=11,sJe=Zi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,aJe=Zi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,cJe=Zi.DISTANCE_DISPLAY_CONDITION=14,lJe=Zi.DISABLE_DEPTH_DISTANCE=15;Zi.TEXTURE_COORDINATE_BOUNDS=16;var Ude=Zi.SDF_INDEX=17,dJe=Zi.SPLIT_DIRECTION_INDEX=18;Zi.NUMBER_OF_PROPERTIES=19;function fr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(Zi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,fr(this,Nde))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),m.clone(e,this._actualPosition),this._updateClamping(),fr(this,QQ))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),fr(this,QQ))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;D.equals(t,e)||(D.clone(e,t),fr(this,Yde))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;zt.equals(t,e)||(this._scaleByDistance=zt.clone(e,t),fr(this,rJe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;zt.equals(t,e)||(this._translucencyByDistance=zt.clone(e,t),fr(this,sJe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;zt.equals(t,e)||(this._pixelOffsetScaleByDistance=zt.clone(e,t),fr(this,aJe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;m.equals(t,e)||(m.clone(e,t),fr(this,$Ke))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,fr(this,eJe))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,fr(this,tJe))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,fr(this,nJe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),fr(this,Qde))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,fr(this,iJe))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;m.equals(t,e)||(m.clone(e,t),fr(this,oJe))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,fr(this,Dde))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,fr(this,Dde))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,fr(this,Qde))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),fr(this,cJe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,fr(this,lJe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof Ve?t=e._url:l(e.src)?t=e.src:t=qn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=m.clone(e,this._actualClampedPosition),fr(this,QQ)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,fr(this,Nde))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),fr(this,Ude))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,fr(this,Ude))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,fr(this,dJe))}}});Zi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Zi.prototype._updateClamping=function(){Zi._updateClamping(this._billboardCollection,this)};var UQ=new ge;Zi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??ie.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===et.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===et.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(d){let u=i.cartographicToCartesian(d,t._clampedPosition);D_(t._heightReference)&&(t._mode===re.SCENE3D?(d.height+=s.height,i.cartographicToCartesian(d,u)):u.x+=s.height),t._clampedPosition=u}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),ge.clone(s,UQ);let c=n.getHeight(s,t._heightReference);l(c)&&(UQ.height=c),a(UQ)};Zi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};Zi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};Zi.prototype.setImageTexture=function(e){JA.clone(e,this._imageTexture)};Zi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};Zi.prototype._setTranslate=function(e){let t=this._translate;D.equals(t,e)||(D.clone(e,t),fr(this,Yde))};Zi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};Zi.prototype._setActualPosition=function(e){l(this._clampedPosition)||m.clone(e,this._actualPosition),fr(this,QQ)};var kde=new ce;Zi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===re.SCENE3D?t:(X.multiplyByPoint(i,t,kde),to.computeActualEllipsoidPosition(n,kde))};var Ode=new m;Zi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=X.multiplyByPoint(e,t,Ode),a=to.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return D.add(a,i,a),a};var DQ=new D(0,0);Zi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new D),D.clone(this._pixelOffset,DQ),D.add(DQ,this._translate,DQ);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==re.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,UQ);o=a.cartographicToCartesian(c,Ode),i=X.IDENTITY}return Zi._computeScreenSpacePosition(i,o,this._eyeOffset,DQ,e,t)};Zi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===wi.RIGHT?s-=i:e.horizontalOrigin===wi.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?a-=o:e.verticalOrigin===kn.CENTER&&(a-=o*.5),l(n)||(n=new Ke),n.x=s,n.y=a,n.width=i,n.height=o,n};Zi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&m.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&U.equals(this._color,e._color)&&D.equals(this._pixelOffset,e._pixelOffset)&&D.equals(this._translate,e._translate)&&m.equals(this._eyeOffset,e._eyeOffset)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&zt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Zi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var Eo=Zi;var h5n=y(C(),1),uJe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},No=Object.freeze(uJe);var p5n=y(C(),1),mJe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},ga=Object.freeze(mJe);var X5n=y(C(),1);var y5n=y(C(),1);function $X({x:e,y:t,width:n,height:i}){this.rectangle=new Ke(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function MK({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new $X({x:n,y:n,width:e-2*n,height:t-2*n})}MK.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};MK.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new $X({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new $X({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new $X({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new $X({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var uT=MK;var Hde=16;function ld(e){e=e??Y.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new D(Hde,Hde);this._pixelFormat=e.pixelFormat??tt.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=qn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(ld.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});ld.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Ke),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,d=i.y,u=this._subRegions.get(e);if(l(u)){let h=this._rectangles[u];c+=h.x,d+=h.y}return t.x=c/o,t.y=d/r,t.width=s/o,t.height=a/r,t};ld.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Wt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,d=this._texture,u=new jr({context:e,colorTextures:[d],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),u._bind();let h=this.rectangles,p=this._subRegions;for(let g=0;g<h.length;++g){let f=i[g],b=h[g];if(!l(f)||!l(b)||l(p.get(g)))continue;let{x,y:I,width:_,height:E}=f;a.copyTexSubImage2D(c,0,x,I,b.x,b.y,_,E)}return a.bindTexture(c,null),s._initialized=!0,u._unBind(),u.destroy(),s};ld.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,d=i.map((_,E)=>new zde({index:E,image:_})).filter((_,E)=>l(_.image)&&!l(c.get(E))),u=0,h=0,p=0;for(let _=t;_<o.length;++_){let{width:E,height:S}=o[_].image;u=Math.max(u,E),h=Math.max(h,S),p+=E*S,d.push(o[_])}s=Math.max(u,s),a=Math.max(h,a),e.webgl2||(s=Z.nextPowerOfTwo(s),a=Z.nextPowerOfTwo(a));let g=p,f=1;for(;g/s/a>=1;)f*=2,s>a?a*=f:s*=f;d.sort(({image:_},{image:E})=>E.height*E.width-_.height*_.width);let b=new Array(this._nextIndex);for(let _ of this._subRegions.keys())l(c.get(_))&&(b[_]=i[_]);let x,I=!1;for(;!I;){x=new uT({height:a,width:s,borderPadding:n});let _;for(_=0;_<d.length;++_){let{index:E,image:S}=d[_];if(!l(S))continue;let R=x.pack(E,S);if(!l(R)){s>a?a*=2:s*=2;break}b[E]=R.rectangle}I=_===d.length}this._texturePacker=x,this._texture=this._copyFromTexture(e,s,a,b),r.destroy(),this._rectangles=b,this._guid=qn()};ld.prototype.getImageIndex=function(e){return this._indexById.get(e)};ld.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function zde({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}ld.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new zde({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};ld.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};ld.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Wt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new uT({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function hJe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof Ve)&&(e=Ve.createIfNeeded(e).fetchImage()),e}ld.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await hJe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};ld.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new de(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};ld.prototype.isDestroyed=function(){return!1};ld.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),me(this)};var mx=ld;var fJe=Eo.SHOW_INDEX,e2=Eo.POSITION_INDEX,Kde=Eo.PIXEL_OFFSET_INDEX,Jde=Eo.EYE_OFFSET_INDEX,pJe=Eo.HORIZONTAL_ORIGIN_INDEX,AJe=Eo.VERTICAL_ORIGIN_INDEX,gJe=Eo.SCALE_INDEX,hx=Eo.IMAGE_INDEX_INDEX,jde=Eo.COLOR_INDEX,bJe=Eo.ROTATION_INDEX,yJe=Eo.ALIGNED_AXIS_INDEX,qde=Eo.SCALE_BY_DISTANCE_INDEX,$de=Eo.TRANSLUCENCY_BY_DISTANCE_INDEX,eue=Eo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,tue=Eo.DISTANCE_DISPLAY_CONDITION,CJe=Eo.DISABLE_DEPTH_DISTANCE,xJe=Eo.TEXTURE_COORDINATE_BOUNDS,nue=Eo.SDF_INDEX,iue=Eo.SPLIT_DIRECTION_INDEX,YK=Eo.NUMBER_OF_PROPERTIES,To,IJe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},_Je={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function lm(e){e=e??Y.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new mx),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(YK),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new ue,this._baseVolumeWC=new ue,this._baseVolume2D=new ue,this._boundingVolume=new ue,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=re.SCENE3D,this._buffersUsage=[Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW],this._highlightColor=U.clone(U.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(lm.prototype,{length:{get:function(){return OK(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function oue(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}lm.prototype.add=function(e){let t=new Eo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};lm.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};lm.prototype.removeAll=function(){oue(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function OK(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}lm.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};lm.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};lm.prototype.get=function(e){return OK(this),this._billboards[e]};var vK;function EJe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=It.createIndexBuffer({context:e,typedArray:o,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function TJe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=It.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function SJe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=It.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Ne.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}lm.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<YK;++i){let o=n[i]===0?Ne.STATIC_DRAW:Ne.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function LJe(e,t,n,i,o,r){let s=[{index:To.positionHighAndScale,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[e2]},{index:To.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[e2]},{index:To.compressedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[Kde]},{index:To.compressedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[$de]},{index:To.compressedAttribute2,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[jde]},{index:To.eyeOffset,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[Jde]},{index:To.scaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[qde]},{index:To.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[eue]},{index:To.compressedAttribute3,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[tue]},{index:To.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[xJe]},{index:To.splitDirection,componentsPerAttribute:1,componentDatatype:J.FLOAT,usage:n[iue]}];i&&s.push({index:To.direction,componentsPerAttribute:2,componentDatatype:J.FLOAT,vertexBuffer:SJe(e)}),l(o)&&s.push({index:To.a_batchId,componentsPerAttribute:1,componentDatatype:J.FLOAT,bufferUsage:Ne.STATIC_DRAW}),r&&s.push({index:To.sdf,componentsPerAttribute:2,componentDatatype:J.FLOAT,usage:n[nue]});let a=i?t:4*t;return new zA(e,s,a,i)}var NK=new ni;function rue(e,t,n,i){let o,r=n[To.positionHighAndScale],s=n[To.positionLowAndRotation],a=i._getActualPosition();e._mode===re.SCENE3D&&(ue.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ni.fromCartesian(a,NK);let c=i.scale,d=i.rotation;d!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let u=NK.high,h=NK.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c),s(o,h.x,h.y,h.z,d)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c),r(o+1,u.x,u.y,u.z,c),r(o+2,u.x,u.y,u.z,c),r(o+3,u.x,u.y,u.z,c),s(o+0,h.x,h.y,h.z,d),s(o+1,h.x,h.y,h.z,d),s(o+2,h.x,h.y,h.z,d),s(o+3,h.x,h.y,h.z,d))}var dd=new D,cm=32768,mT=65536,DK=4096,qf=256,RJe=128,VJe=32,GJe=8,sue=4,ZJe=1/256,aue=0,cue=2,lue=3,due=1,HK=new Ke;function uue(e,t,n,i){let o,r=n[To.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,d=i._translate,u=d.x,h=d.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+u),Math.abs(-c+h));let p=i.horizontalOrigin,g=i._verticalOrigin,f=i.show&&i.clusterShow;i.color.alpha===0&&(f=!1),g===kn.BASELINE&&(g=kn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&p===wi.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===kn.CENTER;let b=0,x=0,I=0,_=0;if(i.ready){let W=i.computeTextureCoordinates(HK);b=W.x,x=W.y,I=W.width,_=W.height}let E=b+I,S=x+_,R=Math.floor(Z.clamp(a,-cm,cm)+cm)*RJe;R+=(p+1)*VJe,R+=(g+1)*GJe,R+=(f?1:0)*sue;let G=Math.floor(Z.clamp(c,-cm,cm)+cm)*qf,B=Math.floor(Z.clamp(u,-cm,cm)+cm)*qf,w=(Z.clamp(h,-cm,cm)+cm)*ZJe,F=Math.floor(w),P=Math.floor((w-F)*qf);G+=F,B+=P,dd.x=b,dd.y=x;let A=Mn.compressTextureCoordinates(dd);dd.x=E;let T=Mn.compressTextureCoordinates(dd);dd.y=S;let L=Mn.compressTextureCoordinates(dd);dd.x=b;let V=Mn.compressTextureCoordinates(dd);e._instanced?(o=i._index,r(o,R,G,B,A)):(o=i._index*4,r(o+0,R+aue,G,B,A),r(o+1,R+cue,G,B,T),r(o+2,R+lue,G,B,L),r(o+3,R+due,G,B,V))}function mue(e,t,n,i){let o,r=n[To.compressedAttribute1],s=i.alignedAxis;m.equals(s,m.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,d=1,u=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,d=h.far,u=h.farValue,(c!==1||u!==1)&&(e._shaderTranslucencyByDistance=!0));let p=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,p);let g=Z.clamp(p,0,mT),f=0;Math.abs(m.magnitudeSquared(s)-1)<Z.EPSILON6&&(f=Mn.octEncodeFloat(s)),c=Z.clamp(c,0,1),c=c===1?255:c*255|0,g=g*qf+c,u=Z.clamp(u,0,1),u=u===1?255:u*255|0,f=f*qf+u,e._instanced?(o=i._index,r(o,g,f,a,d)):(o=i._index*4,r(o+0,g,f,a,d),r(o+1,g,f,a,d),r(o+2,g,f,a,d),r(o+3,g,f,a,d))}function UK(e,t,n,i){let o,r=n[To.compressedAttribute2],s=i.color,a=l(e._batchTable)?U.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,d=Math.abs(m.magnitudeSquared(i.alignedAxis)-1)<Z.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let u=i.height??0;e._maxSize=Math.max(e._maxSize,u);let h=i._labelHorizontalOrigin??-2;h+=2;let p=u*sue+h,g=U.floatToByte(s.red),f=U.floatToByte(s.green),b=U.floatToByte(s.blue),x=g*mT+f*qf+b;g=U.floatToByte(a.red),f=U.floatToByte(a.green),b=U.floatToByte(a.blue);let I=g*mT+f*qf+b,_=U.floatToByte(s.alpha)*mT+U.floatToByte(a.alpha)*qf;_+=c*2+d,e._instanced?(o=i._index,r(o,x,I,_,p)):(o=i._index*4,r(o+0,x,I,_,p),r(o+1,x,I,_,p),r(o+2,x,I,_,p),r(o+3,x,I,_,p))}function kK(e,t,n,i){let o,r=n[To.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==et.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if(dd.x=0,dd.y=0,i.ready){let d=i.computeTextureCoordinates(HK);dd.x=d.width,dd.y=d.height}let c=Mn.compressTextureCoordinates(dd);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function hue(e,t,n,i){let o,r=n[To.scaleByDistance],s=0,a=1,c=1,d=1,u=i.scaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,d)):(o=i._index*4,r(o+0,s,a,c,d),r(o+1,s,a,c,d),r(o+2,s,a,c,d),r(o+3,s,a,c,d))}function fue(e,t,n,i){let o,r=n[To.pixelOffsetScaleByDistance],s=0,a=1,c=1,d=1,u=i.pixelOffsetScaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,d)):(o=i._index*4,r(o+0,s,a,c,d),r(o+1,s,a,c,d),r(o+2,s,a,c,d),r(o+3,s,a,c,d))}function pue(e,t,n,i){let o,r=n[To.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let d=i.disableDepthTestDistance,u=Du(i.heightReference)&&t.context.depthTexture;l(d)||(d=u?5e3:0),d*=d,(u||d>0)&&(e._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1));let h,p;l(i._labelDimensions)?(p=i._labelDimensions.x,h=i._labelDimensions.y):(p=i.width??0,h=i.height??0);let g=Math.floor(Z.clamp(p,0,DK)),f=Math.floor(Z.clamp(h,0,DK)),b=g*DK+f;e._instanced?(o=i._index,r(o,s,a,d,b)):(o=i._index*4,r(o+0,s,a,d,b),r(o+1,s,a,d,b),r(o+2,s,a,d,b),r(o+3,s,a,d,b))}function Aue(e,t,n,i){if(Du(i.heightReference)){let p=e._scene,g=t.context,f=t.globeTranslucencyState.translucent,b=l(p.globe)&&p.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!f&&b}let o,r=n[To.textureCoordinateBoundsOrLabelTranslate];if(Kt.maximumVertexTextureImageUnits>0){let p=0,g=0;l(i._labelTranslate)&&(p=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,p,g,0,0)):(o=i._index*4,r(o+0,p,g,0,0),r(o+1,p,g,0,0),r(o+2,p,g,0,0),r(o+3,p,g,0,0));return}let s=0,a=0,c=0,d=0;if(i.ready){let p=i.computeTextureCoordinates(HK);s=p.x,a=p.y,c=p.width,d=p.height}let u=s+c,h=a+d;e._instanced?(o=i._index,r(o,s,a,u,h)):(o=i._index*4,r(o+0,s,a,u,h),r(o+1,s,a,u,h),r(o+2,s,a,u,h),r(o+3,s,a,u,h))}function BJe(e,t,n,i){if(!l(e._batchTable))return;let o=n[To.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function gue(e,t,n,i){if(!e._sdf)return;let o,r=n[To.sdf],s=i.outlineColor,a=i.outlineWidth,c=U.floatToByte(s.red),d=U.floatToByte(s.green),u=U.floatToByte(s.blue),h=c*mT+d*qf+u,p=a/ga.RADIUS,g=U.floatToByte(s.alpha)*mT+U.floatToByte(p)*qf;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+aue,g),r(o+1,h+cue,g),r(o+2,h+lue,g),r(o+3,h+due,g))}function bue(e,t,n,i){let o=n[To.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function wJe(e,t,n,i){rue(e,t,n,i),uue(e,t,n,i),mue(e,t,n,i),UK(e,t,n,i),kK(e,t,n,i),hue(e,t,n,i),fue(e,t,n,i),pue(e,t,n,i),Aue(e,t,n,i),BJe(e,t,n,i),gue(e,t,n,i),bue(e,t,n,i)}function QK(e,t,n,i,o,r){let s;i.mode===re.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let d=t[c],u=d.position,h=Eo._computeActualPosition(d,u,i,o);l(h)&&(d._setActualPosition(h),r?a.push(h):ue.expand(s,h,s))}r&&ue.fromPoints(a,s)}function XJe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==re.SCENE3D&&!X.equals(r,e.modelMatrix)?(e._mode=n,X.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===re.SCENE3D||n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&QK(e,i,i.length,t,r,!0)):n===re.MORPHING?QK(e,i,i.length,t,r,!0):(n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&QK(e,o,e._billboardsToUpdateIndex,t,r,!1)}function WJe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function FJe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Ge.OVERLAY,i}var PJe=[];lm.prototype.update=function(e){if(OK(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,To=this._instanced?_Je:IJe,vK=this._instanced?TJe:EJe;let n=this._billboards,i=n.length,o=!0;for(let w=0;w<i;++w){let F=n[w];l(F.loadError)&&(console.error(`Error loading image for billboard: ${F.loadError}`),F.image=void 0),F.textureDirty&&this._updateBillboard(F,hx),F.show&&(o=o&&F.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;XJe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,d=r.guid,u=this._createVertexArray||this._textureAtlasGUID!==d;this._textureAtlasGUID=d;let h,p=e.passes,g=p.pick;if(u||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let w=0;w<YK;++w)c[w]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=LJe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let w=0;w<i;++w){let F=this._billboards[w];F._dirty=!1,F.textureDirty=!1,wJe(this,e,h,F)}this._vaf.commit(vK(t))}this._billboardsToUpdateIndex=0}else if(a>0){let w=PJe;w.length=0,(c[e2]||c[bJe]||c[gJe])&&w.push(rue),(c[hx]||c[Kde]||c[pJe]||c[AJe]||c[fJe])&&(w.push(uue),this._instanced&&w.push(kK)),(c[hx]||c[yJe]||c[$de])&&(w.push(mue),w.push(UK)),(c[hx]||c[jde])&&w.push(UK),(c[hx]||c[Jde])&&w.push(kK),c[qde]&&w.push(hue),c[eue]&&w.push(fue),(c[tue]||c[CJe]||c[hx]||c[e2])&&w.push(pue),(c[hx]||c[e2])&&w.push(Aue),c[nue]&&w.push(gue),c[iue]&&w.push(bue);let F=w.length;if(h=this._vaf.writers,a/i>.1){for(let P=0;P<a;++P){let A=s[P];A._dirty=!1,A.textureDirty=!1;for(let T=0;T<F;++T)w[T](this,e,h,A)}this._vaf.commit(vK(t))}else{for(let P=0;P<a;++P){let A=s[P];A._dirty=!1,A.textureDirty=!1;for(let T=0;T<F;++T)w[T](this,e,h,A);this._instanced?this._vaf.subCommit(A._index,1):this._vaf.subCommit(A._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ue.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let f,b=X.IDENTITY;e.mode===re.SCENE3D?(b=this.modelMatrix,f=ue.clone(this._baseVolumeWC,this._boundingVolume)):f=ue.clone(this._baseVolume2D,this._boundingVolume),WJe(this,e,f);let x=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,x){this._blendOption===No.OPAQUE||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Qe.fromCache({depthTest:{enabled:!0,func:ne.LESS},depthMask:!0}):this._rsOpaque=void 0;let w=this._blendOption===No.TRANSLUCENT;this._blendOption===No.TRANSLUCENT||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Qe.fromCache({depthTest:{enabled:!0,func:w?ne.LEQUAL:ne.LESS},depthMask:w,blending:bn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let I,_,E,S,R,G=Kt.maximumVertexTextureImageUnits>0;if(x||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){I=qX,_=jX,R=[],l(this._batchTable)&&(R.push("VECTOR_TILE"),I=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(I),_=this._batchTable.getFragmentShaderCallback(!1,void 0)(_)),E=new Oe({defines:R,sources:[I]}),this._instanced&&E.defines.push("INSTANCED"),this._shaderRotation&&E.defines.push("ROTATION"),this._shaderAlignedAxis&&E.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&E.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&E.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&E.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&E.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&E.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(G?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK"));let w=1-ga.CUTOFF;this._sdf&&E.defines.push("SDF");let F=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===No.OPAQUE_AND_TRANSLUCENT&&(S=new Oe({defines:["OPAQUE",F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To}),S=new Oe({defines:["TRANSLUCENT",F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._blendOption===No.OPAQUE&&(S=new Oe({defines:[F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._blendOption===No.TRANSLUCENT&&(S=new Oe({defines:[F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let B=e.commandList;if(p.render||p.pick){let w=this._colorCommands,F=this._blendOption===No.OPAQUE,P=this._blendOption===No.OPAQUE_AND_TRANSLUCENT,A=this._vaf.va,T=A.length,L=this._uniforms,V;l(this._batchTable)?(L=this._batchTable.getUniformMapCallback()(L),V=this._batchTable.getPickId()):V="v_pickColor",w.length=T;let W=P?T*2:T;for(let M=0;M<W;++M){let Q=w[M];l(Q)||(Q=w[M]=new ot);let N=F||P&&M%2===0;Q.pass=N||!P?Ge.OPAQUE:Ge.TRANSLUCENT,Q.owner=this;let k=P?Math.floor(M/2):M;Q.boundingVolume=f,Q.modelMatrix=b,Q.count=A[k].indicesCount,Q.shaderProgram=N?this._sp:this._spTranslucent,Q.uniformMap=L,Q.vertexArray=A[k].va,Q.renderState=N?this._rsOpaque:this._rsTranslucent,Q.debugShowBoundingVolume=this.debugShowBoundingVolume,Q.pickId=V,this._instanced&&(Q.count=6,Q.instanceCount=i),B.push(Q)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=FJe(this,e.context)),B.push(this.debugCommand))}this._allBillboardsReady=o};lm.prototype.isDestroyed=function(){return!1};lm.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),oue(this._billboards),me(this)};var qd=lm;var SUn=y(C(),1);var yUn=y(C(),1);function MJe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var fx=MJe;function Da(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),hT(this)}var vJe=new ge;Object.defineProperties(Da.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=U.clone(e,this._color),hT(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,hT(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=U.clone(e,this._pointOutlineColor),hT(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,hT(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,vJe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=U.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&hT(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Da.defaultColor=U.WHITE;Da.defaultPointOutlineColor=U.BLACK;Da.defaultPointOutlineWidth=0;Da.defaultPointSize=8;function hT(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Da.defaultColor,i=e._pointOutlineColor??Da.defaultPointOutlineColor,o=e._pointOutlineWidth??Da.defaultPointOutlineWidth,r=e._pointSize??Da.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,d=e._billboardSize;if(U.equals(n,s)&&U.equals(i,a)&&o===c&&r===d)return;e._billboardColor=U.clone(n,e._billboardColor),e._billboardOutlineColor=U.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let u=n.alpha,h=n.toCssColorString(),p=i.toCssColorString(),g=JSON.stringify([h,r,p,o]);t.setImage(g,fx(u,h,p,o,r))}Da.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Da.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Da.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Da.prototype.getPropertyInherited=function(e){return ma.getPropertyInherited(this._content,this._batchId,e)};Da.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Da.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Da.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Da.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var jA=Da;var ykn=y(C(),1);var ZUn=y(C(),1);function NJe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),d=100,u=r.width+d|0,h=3*a,p=h/2;c.width=u,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,d/2,p)),o&&(g.fillStyle="black",g.fillText(t,d/2,p));let f=g.getImageData(0,0,u,h).data,b=f.length,x=u*4,I,_,E,S;for(I=0;I<b;++I)if(f[I]!==255){E=I/x|0;break}for(I=b-1;I>=0;--I)if(f[I]!==255){S=I/x|0;break}let R=-1;for(I=0;I<u&&R===-1;++I)for(_=0;_<h;++_){let G=I*4+_*x;if(f[G]!==255||f[G+1]!==255||f[G+2]!==255||f[G+3]!==255){R=I;break}}return{width:r.width,height:S-E,ascent:p-E,descent:S-p,minx:R-d/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var px;function DJe(e,t){if(e==="")return;t=t??Y.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??U.TRANSPARENT,a=t.padding??0,c=a*2,d=document.createElement("canvas");d.width=1,d.height=1,d.style.font=n;let u=d.getContext("2d",{willReadFrequently:!0});l(px)||(l(u.imageSmoothingEnabled)?px="imageSmoothingEnabled":l(u.mozImageSmoothingEnabled)?px="mozImageSmoothingEnabled":l(u.webkitImageSmoothingEnabled)?px="webkitImageSmoothingEnabled":l(u.msImageSmoothingEnabled)&&(px="msImageSmoothingEnabled")),u.font=n,u.lineJoin="round",u.lineWidth=r,u[px]=!1,d.style.visibility="hidden",document.body.appendChild(d);let h=NJe(u,e,n,i,o);d.dimensions=h,document.body.removeChild(d),d.style.visibility="";let p=-h.minx,g=Math.ceil(h.width)+p+c,f=h.height+c,b=f-h.ascent+a,x=f-b+c;if(d.width=g,d.height=f,u.font=n,u.lineJoin="round",u.lineWidth=r,u[px]=!1,s!==U.TRANSPARENT&&(u.fillStyle=s.toCssColorString(),u.fillRect(0,0,d.width,d.height)),i){let I=t.strokeColor??U.BLACK;u.strokeStyle=I.toCssColorString(),u.strokeText(e,p+a,x)}if(o){let I=t.fillColor??U.WHITE;u.fillStyle=I.toCssColorString(),u.fillText(e,p+a,x)}return d}var Ax=DJe;var Gue=y(Iue(),1);var jUn=y(C(),1);var WUn=y(C(),1),UJe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},nr=Object.freeze(UJe);var _ue={},Eue=0,kJe=256,YJe=new U(.165,.165,.165,.8),OJe=new D(7,5),Fs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function gx(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function n2(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function i2(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function Sue(e){let t=_ue[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(i2(n,"line-height"));isNaN(i)&&(i=void 0),t={family:i2(n,"font-family"),size:i2(n,"font-size").replace("px",""),style:i2(n,"font-style"),weight:i2(n,"font-weight"),lineHeight:i},document.body.removeChild(n),Eue<kJe&&(_ue[e._font]=t,Eue++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function wh(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=zt.clone(o)),l(r)&&(r=Qt.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=U.clone(e.fillColor??U.WHITE),this._outlineColor=U.clone(e.outlineColor??U.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=U.clone(e.backgroundColor??YJe),this._backgroundPadding=D.clone(e.backgroundPadding??OJe),this._style=e.style??nr.FILL,this._verticalOrigin=e.verticalOrigin??kn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??wi.LEFT,this._pixelOffset=D.clone(e.pixelOffset??D.ZERO),this._eyeOffset=m.clone(e.eyeOffset??m.ZERO),this._position=m.clone(e.position??m.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??et.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,Sue(this),this._updateClamping()}Object.defineProperties(wh.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!m.equals(t,e)){m.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),n2(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=wh.filterUnsupportedCharacters(e);this._renderedText=wh.enableRightToLeftDetection?qJe(t):t,gx(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,gx(this),Sue(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;U.equals(t,e)||(U.clone(e,t),gx(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),gx(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,gx(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,gx(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!U.equals(t,e)){U.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;D.equals(t,e)||(D.clone(e,t),n2(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,gx(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!D.equals(t,e)){D.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!zt.equals(t,e)){this._translucencyByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!zt.equals(t,e)){this._pixelOffsetScaleByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!zt.equals(t,e)){this._scaleByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!m.equals(t,e)){m.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,n2(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),n2(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),n2(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Qt.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=m.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});wh.prototype._updateClamping=function(){Eo._updateClamping(this._labelCollection,this)};wh.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new D);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return Eo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};wh.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?o-=s:e.verticalOrigin===kn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let d=0,u=0,h=e._glyphs,p=h.length;for(let g=0;g<p;++g){let f=h[g],b=f.billboard;if(!l(b))continue;let x=t.x+b._translate.x,I=t.y-b._translate.y,_=f.dimensions.width*a,E=f.dimensions.height*a;e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?I-=E:e.verticalOrigin===kn.CENTER&&(I-=E*.5),e._verticalOrigin===kn.TOP?I+=ga.PADDING*a:(e._verticalOrigin===kn.BOTTOM||e._verticalOrigin===kn.BASELINE)&&(I-=ga.PADDING*a),i=Math.min(i,x),o=Math.min(o,I),d=Math.max(d,x+_),u=Math.max(u,I+E)}r=d-i,s=u-o}return l(n)||(n=new Ke),n.x=i,n.y=o,n.width=r,n.height=s,n};wh.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};wh.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&m.equals(this._position,e._position)&&U.equals(this._fillColor,e._fillColor)&&U.equals(this._outlineColor,e._outlineColor)&&U.equals(this._backgroundColor,e._backgroundColor)&&D.equals(this._backgroundPadding,e._backgroundPadding)&&D.equals(this._pixelOffset,e._pixelOffset)&&m.equals(this._eyeOffset,e._eyeOffset)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&zt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};wh.prototype.isDestroyed=function(){return!1};wh.enableRightToLeftDetection=!1;function HJe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=Fs.LTR,a="",c=e.length;for(let d=0;d<c;++d){let u=e.charAt(d);t.test(u)?a=Fs.RTL:n.test(u)?a=Fs.LTR:i.test(u)?a=Fs.BRACKETS:a=Fs.WEAK,d===0&&(s=a),s===a&&a!==Fs.BRACKETS?r+=u:(r!==""&&o.push({Type:s,Word:r}),s=a,r=u)}return o.push({Type:a,Word:r}),o}function zJe(e){return e.split("").reverse().join("")}function o2(e,t,n){return e.slice(0,t)+n+e.slice(t)}function KJe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var JJe="\u05D0-\u05EA",jJe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",Tue=new RegExp(`[${JJe}${jJe}]`);function qJe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=Tue.test(o.charAt(0)),s=HJe(o,Tue),a=0,c="";for(let d=0;d<s.length;++d){let u=s[d],h=u.Type===Fs.BRACKETS?KJe(u.Word):zJe(u.Word);r?u.Type===Fs.RTL?(c=h+c,a=0):u.Type===Fs.LTR?(c=o2(c,a,u.Word),a+=u.Word.length):(u.Type===Fs.WEAK||u.Type===Fs.BRACKETS)&&(u.Type===Fs.WEAK&&s[d-1].Type===Fs.BRACKETS?c=h+c:s[d-1].Type===Fs.RTL?(c=h+c,a=0):s.length>d+1?s[d+1].Type===Fs.RTL?(c=h+c,a=0):(c=o2(c,a,u.Word),a+=u.Word.length):c=o2(c,0,h)):u.Type===Fs.RTL?c=o2(c,a,h):u.Type===Fs.LTR?(c+=u.Word,a=c.length):(u.Type===Fs.WEAK||u.Type===Fs.BRACKETS)&&(d>0&&s[d-1].Type===Fs.RTL?s.length>d+1?s[d+1].Type===Fs.RTL?c=o2(c,a,h):(c+=u.Word,a=c.length):c+=u.Word:(c+=u.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var p0=wh;var Zue=y(Lue(),1);function e4e(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var t4e=1.2,Rue="ID_WHITE_PIXEL",zK=new D(4,4),n4e=new Ke(1,1,1,1);function i4e(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=zK.x,o.height=zK.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(Rue,o),n.addImageSubRegion(Rue,n4e)}let i=e.add({collection:t});return i.setImageTexture(n),i}var qA={};function o4e(e,t,n,i,o,r){return qA.font=t,qA.fillColor=n,qA.strokeColor=i,qA.strokeWidth=o,qA.padding=ga.PADDING,qA.fill=r===nr.FILL||r===nr.FILL_AND_OUTLINE,qA.stroke=r===nr.OUTLINE||r===nr.FILL_AND_OUTLINE,qA.backgroundColor=U.BLACK,Ax(e,qA)}function KK(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var r4e=new Zue.default,s4e=/\s/;function a4e(e,t){let n=t._renderedText,i=r4e.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/ga.FONT_SIZE,o<s)for(let g=o;g<s;++g)KK(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,d=e._backgroundBillboardCollection;a?(l(c)||(c=i4e(d,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=wi.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(d.remove(c),t._backgroundBillboard=c=void 0);let u=e._glyphBillboardCollection,h=u.billboardTextureCache,p=e._textDimensionsCache;for(let g=0;g<o;++g){let f=i[g],b=t._verticalOrigin,x=JSON.stringify([f,t._fontFamily,t._fontStyle,t._fontWeight,+b]),I=p[x],_=h.get(x);if(!l(_)||!l(I)){_=new JA(u),h.set(x,_);let G=`${t._fontStyle} ${t._fontWeight} ${ga.FONT_SIZE}px ${t._fontFamily}`,B=o4e(f,G,U.WHITE,U.WHITE,0,nr.FILL);if(I=B.dimensions,p[x]=I,B.width>0&&B.height>0&&!s4e.test(f)){let w=(0,Gue.default)(B,{cutoff:ga.CUTOFF,radius:ga.RADIUS}),F=B.getContext("2d"),P=B.width,A=B.height,T=F.getImageData(0,0,P,A);for(let L=0;L<P;L++)for(let V=0;V<A;V++){let W=V*P+L,M=w[W]*255,Q=W*4;T.data[Q+0]=M,T.data[Q+1]=M,T.data[Q+2]=M,T.data[Q+3]=M}F.putImageData(T,0,0),_.loadImage(x,B)}}let E=r[g];if(l(E)||(E=new e4e,E.dimensions=I,E.billboardTexture=_,r[g]=E),E.billboardTexture.id!==x&&(E.billboardTexture=_,E.dimensions=I),!_.hasImage){KK(e,E);continue}let S=E.billboard,R=e._spareBillboards;l(S)||(R.length>0?S=R.pop():(S=u.add({collection:e}),S._labelDimensions=new D,S._labelTranslate=new D),E.billboard=S),S.setImageTexture(_),S.show=t._show,S.position=t._position,S.eyeOffset=t._eyeOffset,S.pixelOffset=t._pixelOffset,S.horizontalOrigin=wi.LEFT,S.verticalOrigin=t._verticalOrigin,S.heightReference=t._heightReference,S.scale=t.totalScale,S.pickPrimitive=t,S.id=t._id,S.translucencyByDistance=t._translucencyByDistance,S.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,S.scaleByDistance=t._scaleByDistance,S.distanceDisplayCondition=t._distanceDisplayCondition,S.disableDepthTestDistance=t._disableDepthTestDistance,S._batchIndex=t._batchIndex,S.outlineColor=t.outlineColor,t.style===nr.FILL_AND_OUTLINE?(S.color=t._fillColor,S.outlineWidth=t.outlineWidth):t.style===nr.FILL?(S.color=t._fillColor,S.outlineWidth=0):t.style===nr.OUTLINE&&(S.color=U.TRANSPARENT,S.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function Vue(e,t,n){return t===wi.CENTER?-e/2:t===wi.RIGHT?-(e+n.x):n.x}var Sr=new D,c4e=new D;function l4e(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,d=t.length,u=e._backgroundBillboard,h=D.clone(l(u)?e._backgroundPadding:D.ZERO,c4e);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let F=0;F<d;++F){if(n.charAt(F)===` +`){r.push(i),++c,i=0;continue}let A=t[F].dimensions;l(A)&&(a=Math.max(a,A.height-A.descent),s=Math.max(s,A.descent),i+=A.width-A.minx,F<d-1&&(i+=t[F+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let p=a+s,g=e.totalScale,f=e._horizontalOrigin,b=e._verticalOrigin,x=0,I=r[x],_=Vue(I,f,h),E=(l(e._lineHeight)?e._lineHeight:t4e*e._fontSize)/e._relativeSize,S=E*(c-1),R=o,G=p+S;l(u)&&(R+=h.x*2,G+=h.y*2,u._labelHorizontalOrigin=f),Sr.x=_*g,Sr.y=0;let B=!0,w=0;for(let F=0;F<d;++F){if(n.charAt(F)===` +`){++x,w+=E,I=r[x],_=Vue(I,f,h),Sr.x=_*g,B=!0;continue}let P=t[F],A=P.dimensions;if(l(A)&&(b===kn.TOP?(Sr.y=A.height-a-h.y,Sr.y+=ga.PADDING):b===kn.CENTER?Sr.y=(S+A.height-a)/2:b===kn.BASELINE?(Sr.y=S,Sr.y-=ga.PADDING):(Sr.y=S+s+h.y,Sr.y-=ga.PADDING),Sr.y=(Sr.y-A.descent-w)*g,B&&(Sr.x-=ga.PADDING*g,B=!1),l(P.billboard)&&(P.billboard._setTranslate(Sr),P.billboard._labelDimensions.x=R,P.billboard._labelDimensions.y=G,P.billboard._labelHorizontalOrigin=f),F<d-1)){let T=t[F+1];Sr.x+=(A.width-A.minx+T.dimensions.minx)*g}}if(l(u)&&n.split(` +`).join("").length>0&&(f===wi.CENTER?_=-o/2-h.x:f===wi.RIGHT?_=-(o+h.x*2):_=0,Sr.x=_*g,b===kn.TOP?Sr.y=p-a-s:b===kn.CENTER?Sr.y=(p-a)/2-s:b===kn.BASELINE?Sr.y=-h.y-s:Sr.y=0,Sr.y=Sr.y*g,u.width=R,u.height=G,u._setTranslate(Sr),u._labelTranslate=D.clone(Sr,u._labelTranslate)),Du(e.heightReference))for(let F=0;F<d;++F){let A=t[F].billboard;l(A)&&(A._labelTranslate=D.clone(Sr,A._labelTranslate))}}function Bue(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)KK(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),me(t)}function $f(e){e=e??Y.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new qd({scene:this._scene,textureAtlas:new mx({initialSize:zK})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new JA(t),this._glyphBillboardCollection=new qd({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=U.clone(U.WHITE),this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT}Object.defineProperties($f.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});$f.prototype.add=function(e){let t=new p0(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};$f.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),Bue(this,e),!0}return!1};$f.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)Bue(this,e[t]);e.length=0};$f.prototype.contains=function(e){return l(e)&&e._labelCollection===this};$f.prototype.get=function(e){return this._labels[e]};$f.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(a4e(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(l4e(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?No.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};$f.prototype.isDestroyed=function(){return!1};$f.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),me(this)};var ep=$f;var GYn=y(C(),1);var xkn=y(C(),1),r2=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var Ykn=y(C(),1);var wkn=y(C(),1);var Gl={};Gl.numberOfPoints=function(e,t,n){let i=m.distance(e,t);return Math.ceil(i/n)};Gl.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var d4e=new ge;Gl.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,d4e).height}return i};var u4e=new X,m4e=new m,wue=new m,h4e=new An(m.UNIT_X,0),Xue=new m,f4e=new An(m.UNIT_X,0),p4e=new m,A4e=new m,jK=[];function Fue(e,t,n){let i=jK;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var OQ=new ge,YQ=new ge,A0=new m,qK=new m,g4e=new m,JK=new sA,s2=new cc;function b4e(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,qK),d=i.scaleToGeodeticSurface(t,g4e),u=Gl.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,OQ),p=i.cartesianToCartographic(d,YQ),g=Fue(u,o,r);JK.setEndPoints(h,p);let f=JK.surfaceDistance/u,b=a;h.height=o;let x=i.cartographicToCartesian(h,A0);m.pack(x,s,b),b+=3;for(let I=1;I<u;I++){let _=JK.interpolateUsingSurfaceDistance(I*f,YQ);_.height=g[I],x=i.cartographicToCartesian(_,A0),m.pack(x,s,b),b+=3}return b}function y4e(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,OQ),d=i.cartesianToCartographic(t,YQ),u=Gl.numberOfPointsRhumbLine(c,d,n);c.height=0,d.height=0;let h=Fue(u,o,r);s2.ellipsoid.equals(i)||(s2=new cc(void 0,void 0,i)),s2.setEndPoints(c,d);let p=s2.surfaceDistance/u,g=a;c.height=o;let f=i.cartographicToCartesian(c,A0);m.pack(f,s,g),g+=3;for(let b=1;b<u;b++){let x=s2.interpolateUsingSurfaceDistance(b*p,YQ);x.height=h[b],f=i.cartographicToCartesian(x,A0),m.pack(f,s,g),g+=3}return g}Gl.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??X.IDENTITY;let o=X.inverseTransformation(t,u4e),r=X.multiplyByPoint(o,m.ZERO,m4e),s=m.normalize(X.multiplyByPointAsVector(o,m.UNIT_Y,wue),wue),a=An.fromPointNormal(r,s,h4e),c=m.normalize(X.multiplyByPointAsVector(o,m.UNIT_X,Xue),Xue),d=An.fromPointNormal(r,c,f4e),u=1;n.push(m.clone(e[0]));let h=n[0],p=e.length;for(let g=1;g<p;++g){let f=e[g];if(An.getPointDistance(d,h)<0||An.getPointDistance(d,f)<0){let b=fi.lineSegmentPlane(h,f,a,p4e);if(l(b)){let x=m.multiplyByScalar(s,5e-9,A4e);An.getPointDistance(a,h)<0&&m.negate(x,x),n.push(m.add(b,x,new m)),i.push(u+1),m.negate(x,x),n.push(m.add(b,x,new m)),u=1}}n.push(m.clone(e[g])),u++,h=f}i.push(u)}return{positions:n,lengths:i}};Gl.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??ie.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let b=i.scaleToGeodeticSurface(t[0],qK);if(o=r?o[0]:o,o!==0){let x=i.geodeticSurfaceNormal(b,A0);m.multiplyByScalar(x,o,x),m.add(b,x,b)}return[b.x,b.y,b.z]}let s=e.minDistance;if(!l(s)){let b=e.granularity??Z.RADIANS_PER_DEGREE;s=Z.chordLength(b,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=Gl.numberOfPoints(t[c],t[c+1],s);let d=(a+1)*3,u=new Array(d),h=0;for(c=0;c<n-1;c++){let b=t[c],x=t[c+1],I=r?o[c]:o,_=r?o[c+1]:o;h=b4e(b,x,s,i,I,_,u,h)}jK.length=0;let p=t[n-1],g=i.cartesianToCartographic(p,OQ);g.height=r?o[n-1]:o;let f=i.cartographicToCartesian(g,A0);return m.pack(f,u,d-3),u};var Wue=new ge,C4e=new ge;Gl.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??ie.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let I=i.scaleToGeodeticSurface(t[0],qK);if(o=r?o[0]:o,o!==0){let _=i.geodeticSurfaceNormal(I,A0);m.multiplyByScalar(_,o,_),m.add(I,_,I)}return[I.x,I.y,I.z]}let s=e.granularity??Z.RADIANS_PER_DEGREE,a=0,c,d=i.cartesianToCartographic(t[0],Wue),u;for(c=0;c<n-1;c++)u=i.cartesianToCartographic(t[c+1],C4e),a+=Gl.numberOfPointsRhumbLine(d,u,s),d=ge.clone(u,Wue);let h=(a+1)*3,p=new Array(h),g=0;for(c=0;c<n-1;c++){let I=t[c],_=t[c+1],E=r?o[c]:o,S=r?o[c+1]:o;g=y4e(I,_,s,i,E,S,p,g)}jK.length=0;let f=t[n-1],b=i.cartesianToCartographic(f,OQ);b.height=r?o[n-1]:o;let x=i.cartographicToCartesian(b,A0);return m.pack(x,p,h-3),p};Gl.generateCartesianArc=function(e){let t=Gl.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=m.unpack(t,o*3);return i};Gl.generateCartesianRhumbArc=function(e){let t=Gl.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=m.unpack(t,o*3);return i};var Oi=Gl;function $d(e,t){e=e??Y.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=so.fromType(so.ColorType,{color:new U(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=Xo(n,m.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(m.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=X.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Oi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(Mue),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=ue.fromPoints(this._actualPositions),this._boundingVolumeWC=ue.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new ue}var Pue=$d.POSITION_INDEX=0,x4e=$d.SHOW_INDEX=1,I4e=$d.WIDTH_INDEX=2,_4e=$d.MATERIAL_INDEX=3,a2=$d.POSITION_SIZE_INDEX=4,E4e=$d.DISTANCE_DISPLAY_CONDITION=5,Mue=$d.NUMBER_OF_PROPERTIES=6;function $A(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties($d.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,$A(this,x4e))}},positions:{get:function(){return this._positions},set:function(e){let t=Xo(e,m.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(m.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&$A(this,a2),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=ue.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=ue.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),$A(this,Pue),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,$A(this,_4e))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,$A(this,I4e))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!m.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(m.clone(t[0]))):t.length>2&&m.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,$A(this,a2)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),$A(this,E4e))}}});$d.prototype.update=function(){let e=X.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Pue]>0||this._propertiesChanged[a2]>0;if((!X.equals(e,this._modelMatrix)||i)&&(this._segments=Oi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=ue.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=X.clone(e,this._modelMatrix),this._segments.positions.length!==t)$A(this,a2);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){$A(this,a2);break}}};$d.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};$d.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<Mue-1;++t)e[t]=0};$d.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var dm=$d;var T4e=dm.SHOW_INDEX,S4e=dm.WIDTH_INDEX,eJ=dm.POSITION_INDEX,L4e=dm.MATERIAL_INDEX,vue=dm.POSITION_SIZE_INDEX,R4e=dm.DISTANCE_DISPLAY_CONDITION,Oue=dm.NUMBER_OF_PROPERTIES,ud={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function Xh(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Oue),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Ne.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=U.clone(U.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(Xh.prototype,{length:{get:function(){return tJ(this),this._polylines.length}}});Xh.prototype.add=function(e){let t=new dm(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};Xh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};Xh.prototype.removeAll=function(){nJ(this),jue(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};Xh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};Xh.prototype.get=function(e){return tJ(this),this._polylines[e]};function V4e(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:J.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:J.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:J.FLOAT,componentsPerAttribute:2}];e._batchTable=new oC(t,n,e._polylines.length)}var Hue=new ni,zue=new ce,Kue=new D;Xh.prototype.update=function(e){if(tJ(this),this._polylines.length===0||!this.show)return;W4e(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(Kt.maximumVertexTextureImageUnits===0)throw new de("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");V4e(this,t),this._createBatchTable=!1}if(this._createVertexArray||Z4e(this))Que(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==re.SCENE3D){let d=c.length;for(let u=0;u<d;++u)i=c[u],i.update()}if(o[vue]||o[L4e])Que(this,t,n);else{let d=c.length,u=this._polylineBuckets;for(let h=0;h<d;++h){i=c[h],o=i._propertiesChanged;let p=i._bucket,g=0;for(let f in u)if(u.hasOwnProperty(f)){if(u[f]===p){o[eJ]&&p.writeUpdate(g,i,this._positionBuffer,n);break}g+=u[f].lengthOfPositions}if((o[T4e]||o[S4e])&&this._batchTable.setBatchedAttribute(i._index,0,new D(i._width,i._show)),this._batchTable.attributes.length>2){if(o[eJ]||o[vue]){let f=e.mode===re.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,b=ni.fromCartesian(f.center,Hue),x=ce.fromElements(b.low.x,b.low.y,b.low.z,f.radius,zue);this._batchTable.setBatchedAttribute(i._index,2,b.high),this._batchTable.setBatchedAttribute(i._index,3,x)}if(o[R4e]){let f=Kue;f.x=0,f.y=Number.MAX_VALUE;let b=i.distanceDisplayCondition;l(b)&&(f.x=b.near,f.y=b.far),this._batchTable.setBatchedAttribute(i._index,4,f)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Oue;++c)o[c]=0;let r=X.IDENTITY;e.mode===re.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Qe.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Qe.fromCache({blending:bn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;G4e(this,e,c,r)}};var c2=new ue,Nue=new ue;function G4e(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,d=e._vertexArrays,u=e.debugShowBoundingVolume,p=e._batchTable.getUniformMapCallback(),g=d.length;for(let f=0;f<g;++f){let b=d[f],x=b.buckets,I=x.length;for(let _=0;_<I;++_){let E=x[_],S=E.offset,R=E.bucket.shaderProgram,G=E.bucket.polylines,B=G.length,w,F,P=0,A,T;for(let L=0;L<B;++L){let V=G[L],W=w4e(V._material);if(W!==w){if(l(w)&&P>0){let k=F.isTranslucent();a>=s?(A=new ot({owner:e}),n.push(A)):A=n[a],++a,T=Lt(p(F._uniforms),e._uniformMap),A.boundingVolume=ue.clone(c2,A.boundingVolume),A.modelMatrix=i,A.shaderProgram=R,A.vertexArray=b.va,A.renderState=k?e._translucentRS:e._opaqueRS,A.pass=k?Ge.TRANSLUCENT:Ge.OPAQUE,A.debugShowBoundingVolume=u,A.pickId="v_pickColor",A.uniformMap=T,A.count=P,A.offset=S,S+=P,P=0,c=!0,r.push(A)}F=V._material,F.update(o),w=W}let M=V._locatorBuckets,Q=M.length;for(let k=0;k<Q;++k){let v=M[k];v.locator===E&&(P+=v.count)}let N;t.mode===re.SCENE3D?N=V._boundingVolumeWC:t.mode===re.COLUMBUS_VIEW?N=V._boundingVolume2D:t.mode===re.SCENE2D?l(V._boundingVolume2D)&&(N=ue.clone(V._boundingVolume2D,Nue),N.center.x=0):l(V._boundingVolumeWC)&&l(V._boundingVolume2D)&&(N=ue.union(V._boundingVolumeWC,V._boundingVolume2D,Nue)),c?(c=!1,ue.clone(N,c2)):ue.union(N,c2,c2)}l(w)&&P>0&&(a>=s?(A=new ot({owner:e}),n.push(A)):A=n[a],++a,T=Lt(p(F._uniforms),e._uniformMap),A.boundingVolume=ue.clone(c2,A.boundingVolume),A.modelMatrix=i,A.shaderProgram=R,A.vertexArray=b.va,A.renderState=F.isTranslucent()?e._translucentRS:e._opaqueRS,A.pass=F.isTranslucent()?Ge.TRANSLUCENT:Ge.OPAQUE,A.debugShowBoundingVolume=u,A.pickId="v_pickColor",A.uniformMap=T,A.count=P,A.offset=S,c=!0,r.push(A)),w=void 0}}n.length=a}Xh.prototype.isDestroyed=function(){return!1};Xh.prototype.destroy=function(){return Jue(this),nJ(this),jue(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};function Z4e(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[eJ]?(i.bufferUsage!==Ne.STREAM_DRAW&&(t=!0,i.bufferUsage=Ne.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Ne.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Ne.STATIC_DRAW):i.frameCount--),t}var Due=[0,0,0];function Que(e,t,n){e._createVertexArray=!1,nJ(e),Jue(e),X4e(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,d=[[]],u=0,h=e._polylineBuckets,p,g;for(p in h)h.hasOwnProperty(p)&&(g=h[p],g.updateShader(t,r,s),u+=g.lengthOfPositions);if(u>0){let f=e._mode,b=new Float32Array(6*u*3),x=new Float32Array(u*4),I,_=0,E=0,S=0;for(p in h)if(h.hasOwnProperty(p)){g=h[p],g.write(b,x,_,E,S,r,t,n),f===re.MORPHING&&(l(I)||(I=new Float32Array(6*u*3)),g.writeForMorph(I,_));let T=g.lengthOfPositions;_+=6*T*3,E+=T*4,S+=T*4,c=g.updateIndices(i,a,d,c)}let R=e._positionBufferUsage.bufferUsage,G=Ne.STATIC_DRAW;e._positionBuffer=It.createVertexBuffer({context:t,typedArray:b,usage:R});let B;l(I)&&(B=It.createVertexBuffer({context:t,typedArray:I,usage:R})),e._texCoordExpandAndBatchIndexBuffer=It.createVertexBuffer({context:t,typedArray:x,usage:G});let w=3*Float32Array.BYTES_PER_ELEMENT,F=4*Float32Array.BYTES_PER_ELEMENT,P=0,A=i.length;for(let T=0;T<A;++T)if(o=i[T],o.length>0){let L=new Uint16Array(o),V=It.createIndexBuffer({context:t,typedArray:L,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});P+=a[T];let W=6*(T*(w*Z.SIXTY_FOUR_KILOBYTES)-P*w),M=w+W,Q=w+M,N=w+Q,k=w+N,v=w+k,O=T*(F*Z.SIXTY_FOUR_KILOBYTES)-P*F,H=[{index:ud.position3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:W,strideInBytes:6*w},{index:ud.position3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:M,strideInBytes:6*w},{index:ud.position2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:W,strideInBytes:6*w},{index:ud.position2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:M,strideInBytes:6*w},{index:ud.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:Q,strideInBytes:6*w},{index:ud.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:N,strideInBytes:6*w},{index:ud.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:Q,strideInBytes:6*w},{index:ud.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:N,strideInBytes:6*w},{index:ud.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:k,strideInBytes:6*w},{index:ud.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:v,strideInBytes:6*w},{index:ud.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:k,strideInBytes:6*w},{index:ud.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:v,strideInBytes:6*w},{index:ud.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:J.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:O}],ee,K,te,q;f===re.SCENE3D?(K=e._positionBuffer,ee="vertexBuffer",te=Due,q="value"):f===re.SCENE2D||f===re.COLUMBUS_VIEW?(K=Due,ee="value",te=e._positionBuffer,q="vertexBuffer"):(K=B,ee="vertexBuffer",te=e._positionBuffer,q="vertexBuffer"),H[0][ee]=K,H[1][ee]=K,H[2][q]=te,H[3][q]=te,H[4][ee]=K,H[5][ee]=K,H[6][q]=te,H[7][q]=te,H[8][ee]=K,H[9][ee]=K,H[10][q]=te,H[11][q]=te;let pe=new ui({context:t,attributes:H,indexBuffer:V});e._vertexArrays.push({va:pe,buckets:d[T]})}}}function B4e(e,t){return t instanceof Wt?t.id:t}var HQ=[];function w4e(e){let t=so._uniformList[e.type],n=t.length;HQ.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];HQ[i]=r,HQ[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(HQ,B4e)}`}function X4e(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,d=i[c.type];l(d)||(d=i[c.type]=new tp(c,t,n)),d.addPolyline(a)}}}function W4e(e,t){let n=t.mode;(e._mode!==n||!X.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=X.clone(e.modelMatrix),e._createVertexArray=!0)}function tJ(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function nJ(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Jue(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}Xh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function jue(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function $K(e,t,n){this.count=e,this.offset=t,this.bucket=n}function tp(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}tp.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};tp.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),Ht.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new Oe({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,dC]}),r=t.getVertexShaderCallback()(r2),s=new Oe({defines:i,sources:[Md,r]});this.shaderProgram=ln.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:ud})};function que(e){return m.dot(m.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(An.ORIGIN_ZX_PLANE)===on.INTERSECTING}tp.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===re.SCENE3D||!que(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var Ks=new m,um=new m,mm=new m,zQ=new m,F4e=new ce,P4e=new D;tp.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,d=a.ellipsoid.maximumRadius*Z.PI,u=this.polylines,h=u.length;for(let p=0;p<h;++p){let g=u[p],f=g.width,b=g.show&&f>0,x=g._index,I=this.getSegments(g,a),_=I.positions,E=I.lengths,S=_.length,R=g.getPickId(s).color,G=0,B=0,w;for(let Q=0;Q<S;++Q){Q===0?g._loop?w=_[S-2]:(w=zQ,m.subtract(_[0],_[1],w),m.add(_[0],w,w)):w=_[Q-1],m.clone(w,um),m.clone(_[Q],Ks),Q===S-1?g._loop?w=_[1]:(w=zQ,m.subtract(_[S-1],_[S-2],w),m.add(_[S-1],w,w)):w=_[Q+1],m.clone(w,mm);let N=E[G];Q===B+N&&(B+=N,++G);let k=Q-B===0,v=Q===B+E[G]-1;c===re.SCENE2D&&(um.z=0,Ks.z=0,mm.z=0),(c===re.SCENE2D||c===re.MORPHING)&&(k||v)&&d-Math.abs(Ks.x)<1&&((Ks.x<0&&um.x>0||Ks.x>0&&um.x<0)&&m.clone(Ks,um),(Ks.x<0&&mm.x>0||Ks.x>0&&mm.x<0)&&m.clone(Ks,mm));let O=k?2:0,H=v?2:4;for(let ee=O;ee<H;++ee){ni.writeElements(Ks,e,n),ni.writeElements(um,e,n+6),ni.writeElements(mm,e,n+12);let K=ee-2<0?-1:1;t[o]=Q/(S-1),t[o+1]=2*(ee%2)-1,t[o+2]=K,t[o+3]=x,n+=18,o+=4}}let F=F4e;F.x=U.floatToByte(R.red),F.y=U.floatToByte(R.green),F.z=U.floatToByte(R.blue),F.w=U.floatToByte(R.alpha);let P=P4e;P.x=f,P.y=b?1:0;let A=c===re.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,T=ni.fromCartesian(A.center,Hue),L=T.high,V=ce.fromElements(T.low.x,T.low.y,T.low.z,A.radius,zue),W=Kue;W.x=0,W.y=Number.MAX_VALUE;let M=g.distanceDisplayCondition;l(M)&&(W.x=M.near,W.y=M.far),r.setBatchedAttribute(x,0,P),r.setBatchedAttribute(x,1,F),r.attributes.length>2&&(r.setBatchedAttribute(x,2,L),r.setBatchedAttribute(x,3,V),r.setBatchedAttribute(x,4,W))}};var M4e=new m,v4e=new m,N4e=new m,Uue=new m;tp.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,d=a.length,u=0,h=0;for(let p=0;p<d;++p){let g;p===0?s._loop?g=a[d-2]:(g=Uue,m.subtract(a[0],a[1],g),m.add(a[0],g,g)):g=a[p-1],g=X.multiplyByPoint(n,g,v4e);let f=X.multiplyByPoint(n,a[p],M4e),b;p===d-1?s._loop?b=a[1]:(b=Uue,m.subtract(a[d-1],a[d-2],b),m.add(a[d-1],b,b)):b=a[p+1],b=X.multiplyByPoint(n,b,N4e);let x=c[u];p===h+x&&(h+=x,++u);let I=p-h===0,_=p===h+c[u]-1,E=I?2:0,S=_?2:4;for(let R=E;R<S;++R)ni.writeElements(f,e,t),ni.writeElements(g,e,t+6),ni.writeElements(b,e,t+12),t+=18}}};var D4e=new Array(1);tp.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new $K(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let d=this.polylines,u=d.length;for(let h=0;h<u;++h){let p=d[h];p._locatorBuckets=[];let g;if(this.mode===re.SCENE3D){g=D4e;let b=p._actualPositions.length;if(b>0)g[0]=b;else continue}else g=p._segments.lengths;let f=g.length;if(f>0){let b=0;for(let x=0;x<f;++x){let I=g[x]-1;for(let _=0;_<I;++_)c+4>Z.SIXTY_FOUR_KILOBYTES&&(p._locatorBuckets.push({locator:r,count:b}),b=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new $K(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),b+=6,s+=6,i+=6,c+=4}p._locatorBuckets.push({locator:r,count:b}),c+4>Z.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new $K(0,0,this),n[++o]=[r])}p._clean()}return r.count=s,i};tp.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var fT={positions:void 0,lengths:void 0},kue=new Array(1),Q4e=new m,U4e=new ge;tp.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===re.SCENE3D)return kue[0]=n.length,fT.positions=n,fT.lengths=kue,fT;que(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=Q4e;for(let d=0;d<s;++d)a=n[d],c=X.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,U4e)));if(o.length>0){e._boundingVolume2D=ue.fromPoints(o,e._boundingVolume2D);let d=e._boundingVolume2D.center;e._boundingVolume2D.center=new m(d.z,d.x,d.y)}return fT.positions=o,fT.lengths=e._segments.lengths,fT};var Yue;tp.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*Z.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Yue,c=6*s*3;!l(a)||a.length<c?a=Yue=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let d=this.getSegments(t,i),u=d.positions,h=d.lengths,p=0,g=0,f=0,b;s=u.length;for(let x=0;x<s;++x){x===0?t._loop?b=u[s-2]:(b=zQ,m.subtract(u[0],u[1],b),m.add(u[0],b,b)):b=u[x-1],m.clone(b,um),m.clone(u[x],Ks),x===s-1?t._loop?b=u[1]:(b=zQ,m.subtract(u[s-1],u[s-2],b),m.add(u[s-1],b,b)):b=u[x+1],m.clone(b,mm);let I=h[g];x===f+I&&(f+=I,++g);let _=x-f===0,E=x===f+h[g]-1;o===re.SCENE2D&&(um.z=0,Ks.z=0,mm.z=0),(o===re.SCENE2D||o===re.MORPHING)&&(_||E)&&r-Math.abs(Ks.x)<1&&((Ks.x<0&&um.x>0||Ks.x>0&&um.x<0)&&m.clone(Ks,um),(Ks.x<0&&mm.x>0||Ks.x>0&&mm.x<0)&&m.clone(Ks,mm));let S=_?2:0,R=E?2:4;for(let G=S;G<R;++G)ni.writeElements(Ks,a,p),ni.writeElements(um,a,p+6),ni.writeElements(mm,a,p+12),p+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Wh=Xh;function g0(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new qd({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new ep({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Wh,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(g0.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function k4e(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+le.packedLength+ie.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,le.pack(n,s,a),a+=le.packedLength,ie.pack(t,s,a),s}var Y4e=new hi("createVectorTilePoints",5),O4e=new m;function H4e(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=k4e(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=Y4e.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,d=e._labelCollection,u=e._polylineCollection;n=e._positions;let h=e._batchIds,p=n.length/3,g=e._heightReference??et.NONE;for(let f=0;f<p;++f){let b=h[f],x=m.unpack(n,f*3,O4e),I=c.add();I.position=x,I._batchIndex=b,I.heightReference=g;let _=d.add();_.text=" ",_.position=x,_._batchIndex=b,_.heightReference=g;let E=u.add();E.positions=[m.clone(x),m.clone(x)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}g0.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],d=n.get(a),u=i.get(a),h=o.get(a);t[c]=new jA(e,c,d,u,h)}};g0.prototype.applyDebugSettings=function(e,t){e?(U.clone(t,this._billboardCollection._highlightColor),U.clone(t,this._labelCollection._highlightColor),U.clone(t,this._polylineCollection._highlightColor)):(U.clone(U.WHITE,this._billboardCollection._highlightColor),U.clone(U.WHITE,this._labelCollection._highlightColor),U.clone(U.WHITE,this._polylineCollection._highlightColor))};function z4e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=jA.defaultPointSize,s.color=jA.defaultColor,s.pointOutlineColor=jA.defaultPointOutlineColor,s.pointOutlineWidth=jA.defaultPointOutlineWidth,s.labelColor=U.WHITE,s.labelOutlineColor=U.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=nr.FILL,s.labelText=void 0,s.backgroundColor=new U(.165,.165,.165,.8),s.backgroundPadding=new D(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=U.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=wi.CENTER,s.verticalOrigin=kn.CENTER,s.labelHorizontalOrigin=wi.RIGHT,s.labelVerticalOrigin=kn.BASELINE}}var K4e=new U,J4e=new U,j4e=new U,q4e=new U,$4e=new U,eje=new U,l2=new zt,d2=new zt,iJ=new Qt;g0.prototype.applyStyle=function(e,t){if(!l(e)){z4e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,K4e)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,J4e)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,j4e)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,q4e)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,$4e)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(l2.near=a.x,l2.nearValue=a.y,l2.far=a.z,l2.farValue=a.w,s.scaleByDistance=l2):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(d2.near=a.x,d2.nearValue=a.y,d2.far=a.z,d2.farValue=a.w,s.translucencyByDistance=d2):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(iJ.near=a.x,iJ.far=a.y,s.distanceDisplayCondition=iJ):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,eje)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};g0.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=H4e(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};g0.prototype.isDestroyed=function(){return!1};g0.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),me(this)};var u2=g0;var d3n=y(C(),1);function eg(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??m.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=$n.BOTH}Object.defineProperties(eg.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function tje(e){let t=new Float64Array(3+m.packedLength+ie.packedLength+le.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,le.pack(e._rectangle,t,n),t}function nje(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=vn.unpack(t,n),n+=vn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=U.unpack(t,n);n+=U.packedLength;let d=t[n++],u=t[n++],h=t[n++],p=new Array(h);for(let g=0;g<h;++g)p[g]=t[n++];s[a]=new Nf({color:c,offset:d,count:u,batchIds:p})}}var ije=new hi("createVectorTilePolygons",5),oje=new U;function rje(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(le.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,f=s.length;for(let b=0;b<f;++b){let x=g.getColor(b,oje);s[b]=x.toRgba()}a=e._packedBuffer=tje(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],d={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},u=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(u)&&l(h)&&(u=u.slice(),h=h.slice(),c.push(u.buffer,h.buffer),d.minimumHeights=u,d.maximumHeights=h);let p=ije.scheduleTask(d,c);if(l(p))return p.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let f=new Float64Array(g.packedBuffer),b=f[0];nje(e,f),e._indices=Me.getSizeInBytes(b)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),sje(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function sje(e){l(e._primitive)||(e._primitive=new GC({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}eg.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};eg.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};eg.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};eg.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};eg.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=rje(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};eg.prototype.isDestroyed=function(){return!1};eg.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var m2=eg;var P3n=y(C(),1);var m3n=y(C(),1),h2=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function Fh(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=U.clone(U.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Fh.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function aje(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+le.packedLength+ie.packedLength+m.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,le.pack(t,a,c),c+=le.packedLength,ie.pack(o,a,c),c+=ie.packedLength,m.pack(r,a,c),a}var cje=new hi("createVectorTilePolylines",5),pT={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function lje(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=aje(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},d=cje.scheduleTask(c,a);if(l(d))return d.then(function(u){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(u.decodedPositions),e._decodedPositionOffsets=new Uint32Array(u.decodedPositionOffsets)),e._currentPositions=new Float32Array(u.currentPositions),e._previousPositions=new Float32Array(u.previousPositions),e._nextPositions=new Float32Array(u.nextPositions),e._expandAndWidth=new Float32Array(u.expandAndWidth),e._vertexBatchIds=new Uint16Array(u.batchIds);let h=u.indexDatatype;e._indices=h===Me.UNSIGNED_SHORT?new Uint16Array(u.indices):new Uint32Array(u.indices),dje(e,t),e._ready=!0}).catch(u=>{e.isDestroyed()||(e._error=u)})}function dje(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let d=It.createVertexBuffer({context:t,typedArray:i,usage:Ne.STATIC_DRAW}),u=It.createVertexBuffer({context:t,typedArray:n,usage:Ne.STATIC_DRAW}),h=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW}),p=It.createVertexBuffer({context:t,typedArray:r,usage:Ne.STATIC_DRAW}),g=It.createVertexBuffer({context:t,typedArray:s,usage:Ne.STATIC_DRAW}),f=It.createIndexBuffer({context:t,typedArray:a,usage:Ne.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Me.UNSIGNED_SHORT:Me.UNSIGNED_INT}),b=[{index:pT.previousPosition,vertexBuffer:d,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.currentPosition,vertexBuffer:u,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.nextPosition,vertexBuffer:h,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.expandAndWidth,vertexBuffer:p,componentDatatype:J.FLOAT,componentsPerAttribute:2},{index:pT.a_batchId,vertexBuffer:g,componentDatatype:J.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new ui({context:t,attributes:b,indexBuffer:f}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var f2=new X,$ue=new m;function uje(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return X.clone(n,f2),X.multiplyByPoint(f2,e._center,$ue),X.setTranslation(f2,$ue,f2),f2},u_highlightColor:function(){return e._highlightColor}})}function mje(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Qe.fromCache({blending:bn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var hje=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function fje(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(h2),o=n.getFragmentShaderCallback(!1,void 0,!1)(hje),r=new Oe({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Md,i]}),s=new Oe({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:pT})}function pje(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new ot({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Ge.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}Fh.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,d=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let u=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],p=o[r+1]-h;for(s=0;s<p;++s){let g=(h+s)*3;u[d++]=i[g],u[d++]=i[g+1],u[d++]=i[g+2]}}return u};Fh.prototype.getPositions=function(e){return Fh.getPolylinePositions(this,e)};Fh.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ma(e,r)}};Fh.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Aje(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=U.WHITE}}var gje=new U,bje=U.WHITE,yje=!0;Fh.prototype.applyStyle=function(e,t){if(!l(e)){Aje(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,gje):bje,s.show=l(e.show)?e.show.evaluate(s):yje}};Fh.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=lje(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}uje(this,t),fje(this,t),mje(this);let n=e.passes;(n.render||n.pick)&&pje(this,e)};Fh.prototype.isDestroyed=function(){return!1};Fh.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),me(this)};var bx=Fh;var IOn=y(C(),1);var v3n=y(C(),1),p2=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var D3n=y(C(),1),A2=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function tg(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new D(Si._defaultMinTerrainHeight,Si._defaultMaxTerrainHeight),this._boundingVolume=vn.fromRectangle(e.rectangle,Si._defaultMinTerrainHeight,Si._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=U.clone(U.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(tg.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function Cje(e,t,n){let i=Si.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;vn.fromRectangle(c,o,r,n,a)}function xje(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+le.packedLength+ie.packedLength+m.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,le.pack(t,a,c),c+=le.packedLength,ie.pack(o,a,c),c+=ie.packedLength,m.pack(r,a,c),a}var Ije=new hi("createVectorTileClampedPolylines"),b0={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function _je(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=xje(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},d=Ije.scheduleTask(c,a);if(l(d))return d.then(function(u){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(u.decodedPositions),e._decodedPositionOffsets=new Uint32Array(u.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(u.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(u.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(u.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(u.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(u.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(u.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(u.vertexBatchIds);let h=u.indexDatatype;e._indices=h===Me.UNSIGNED_SHORT?new Uint16Array(u.indices):new Uint32Array(u.indices),Eje(e,t),e._ready=!0}).catch(u=>{e.isDestroyed()||(e._error=u)})}function Eje(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,d=e._indices,u=n.byteLength+i.byteLength;u+=o.byteLength+r.byteLength,u+=s.byteLength+a.byteLength,u+=c.byteLength+d.byteLength,e._trianglesLength=d.length/3,e._geometryByteLength=u;let h=It.createVertexBuffer({context:t,typedArray:n,usage:Ne.STATIC_DRAW}),p=It.createVertexBuffer({context:t,typedArray:i,usage:Ne.STATIC_DRAW}),g=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW}),f=It.createVertexBuffer({context:t,typedArray:r,usage:Ne.STATIC_DRAW}),b=It.createVertexBuffer({context:t,typedArray:s,usage:Ne.STATIC_DRAW}),x=It.createVertexBuffer({context:t,typedArray:a,usage:Ne.STATIC_DRAW}),I=It.createVertexBuffer({context:t,typedArray:c,usage:Ne.STATIC_DRAW}),_=It.createIndexBuffer({context:t,typedArray:d,usage:Ne.STATIC_DRAW,indexDatatype:d.BYTES_PER_ELEMENT===2?Me.UNSIGNED_SHORT:Me.UNSIGNED_INT}),E=[{index:b0.startEllipsoidNormal,vertexBuffer:h,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:b0.endEllipsoidNormal,vertexBuffer:p,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:b0.startPositionAndHeight,vertexBuffer:g,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.endPositionAndHeight,vertexBuffer:f,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.startFaceNormalAndVertexCorner,vertexBuffer:b,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.endFaceNormalAndHalfWidth,vertexBuffer:x,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.a_batchId,vertexBuffer:I,componentDatatype:J.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new ui({context:t,attributes:E,indexBuffer:_}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var g2=new X,eme=new m;function Tje(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return X.clone(n,g2),X.multiplyByPoint(g2,e._center,eme),X.setTranslation(g2,eme,g2),g2},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function tme(e){return Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.EQUAL,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})}function Sje(e){l(e._rs)||(e._rs=tme(!1),e._rs3DTiles=tme(!0))}function Lje(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(p2),o=n.getFragmentShaderCallback(!1,void 0,!0)(A2),r=new Oe({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Md,i]}),s=new Oe({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:b0})}function Rje(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new ot({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Ge.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=ot.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Ge.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===$n.TERRAIN||i===$n.BOTH)&&t.commandList.push(n),(i===$n.CESIUM_3D_TILE||i===$n.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}tg.prototype.getPositions=function(e){return bx.getPolylinePositions(this,e)};tg.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ma(e,r)}};tg.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Vje(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=U.WHITE}}var Gje=new U,Zje=U.WHITE,Bje=!0;tg.prototype.applyStyle=function(e,t){if(!l(e)){Vje(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,Gje):Zje,s.show=l(e.show)?e.show.evaluate(s):Bje}};function wje(e){return Si.initialize().then(function(){Cje(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}tg.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=wje(this).then(_je(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}Tje(this,t),Lje(this,t),Sje(this);let n=e.passes;(n.render||n.pick)&&Rje(this,e)};tg.prototype.isDestroyed=function(){return!1};tg.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),me(this)};var b2=tg;var ROn=y(C(),1);var oJ=32767,Xje=new ge,Wje=new m;function Fje(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Mn.zigZagDeltaDecode(s,a,c);let d=new Float64Array(e.length);for(let u=0;u<r;++u){let h=s[u],p=a[u],g=c[u],f=Z.lerp(t.west,t.east,h/oJ),b=Z.lerp(t.south,t.north,p/oJ),x=Z.lerp(n,i,g/oJ),I=ge.fromRadians(f,b,x,Xje),_=o.cartographicToCartesian(I,Wje);m.pack(_,d,u*3)}return d}var y2=Fje;function Mh(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,Dje(this,i,o)}Object.defineProperties(Mh.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function Pje(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function Mje(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let p=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,p,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let p=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,p,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let p=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,p,c)}let d=l(n)||l(i)||l(o),u=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(d&&u)throw new de("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let p=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=p++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=p++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=p++}return{polygons:n,polylines:i,points:o}}var Ph=Uint32Array.BYTES_PER_ELEMENT;function vje(e){return new bx(e)}function Nje(e){return new b2(e)}function Dje(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=Ph;let r=o.getUint32(n,!0);if(r!==1)throw new de(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=Ph;let s=o.getUint32(n,!0);if(n+=Ph,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=Ph,a===0)throw new de("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=Ph;let d=o.getUint32(n,!0);n+=Ph;let u=o.getUint32(n,!0);n+=Ph;let h=o.getUint32(n,!0);n+=Ph;let p=o.getUint32(n,!0);n+=Ph;let g=o.getUint32(n,!0);n+=Ph;let f=o.getUint32(n,!0);n+=Ph;let b=mr(i,n,a);n+=a;let x=new Uint8Array(t,n,c);n+=c;let I,_;d>0&&(I=mr(i,n,d),n+=d,u>0&&(_=new Uint8Array(t,n,u),_=new Uint8Array(_),n+=u));let E=b.POLYGONS_LENGTH??0,S=b.POLYLINES_LENGTH??0,R=b.POINTS_LENGTH??0,G=E+S+R,B=new bA(e,G,I,_,Pje(e));if(e._batchTable=B,G===0)return;let w=new Sh(b,x),F=w.getGlobalProperty("REGION");if(!l(F))throw new de("Feature table global property: REGION must be defined");let P=le.unpack(F),A=F[4],T=F[5],L=e._tile.computedTransform,V=w.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(V)?(V=m.unpack(V),X.multiplyByPoint(L,V,V)):(V=le.center(P),V.height=Z.lerp(A,T,.5),V=ie.WGS84.cartographicToCartesian(V));let W=Mje(b,x);if(n+=(4-n%4)%4,E>0){w.featuresLength=E;let Q=w.getPropertyArray("POLYGON_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYGON_COUNT",J.UNSIGNED_INT,1);if(!l(Q))throw new de("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let N=w.getPropertyArray("POLYGON_INDEX_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYGON_INDEX_COUNT",J.UNSIGNED_INT,1);if(!l(N))throw new de("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let k=Q.reduce(function(te,q){return te+q*2},0),v=N.reduce(function(te,q){return te+q},0),O=new Uint32Array(t,n,v);n+=h;let H=new Uint16Array(t,n,k);n+=p;let ee,K;l(b.POLYGON_MINIMUM_HEIGHTS)&&l(b.POLYGON_MAXIMUM_HEIGHTS)&&(ee=w.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",J.FLOAT,1),K=w.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",J.FLOAT,1)),e._polygons=new m2({positions:H,counts:Q,indexCounts:N,indices:O,minimumHeight:A,maximumHeight:T,polygonMinimumHeights:ee,polygonMaximumHeights:K,center:V,rectangle:P,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:B,batchIds:W.polygons,modelMatrix:L})}let M=e._tileset;if(S>0){w.featuresLength=S;let Q=w.getPropertyArray("POLYLINE_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYLINE_COUNT",J.UNSIGNED_INT,1);if(!l(Q))throw new de("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let N=w.getPropertyArray("POLYLINE_WIDTHS",J.UNSIGNED_SHORT,1);if(!l(N)){N=new Uint16Array(S);for(let ee=0;ee<S;++ee)N[ee]=2}let k=Q.reduce(function(ee,K){return ee+K*3},0),v=new Uint16Array(t,n,k);n+=g;let O=M.examineVectorLinesFunction;if(l(O)){let ee=y2(new Uint16Array(v),P,A,T,ie.WGS84);Qje(ee,Q,W.polylines,B,e.url,O)}let H=vje;l(M.classificationType)&&(H=Nje),e._polylines=H({positions:v,widths:N,counts:Q,batchIds:W.polylines,minimumHeight:A,maximumHeight:T,center:V,rectangle:P,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:B,classificationType:M.classificationType,keepDecodedPositions:M.vectorKeepDecodedPositions})}if(R>0){let Q=new Uint16Array(t,n,R*3);n+=f,e._points=new u2({positions:Q,batchIds:W.points,minimumHeight:A,maximumHeight:T,rectangle:P,batchTable:B,heightReference:M.heightReference,scene:M.scene})}}function rJ(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}Mh.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Mh.prototype.getFeature=function(e){return l(this._features)||rJ(this),this._features[e]};Mh.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};Mh.prototype.applyStyle=function(e){l(this._features)||rJ(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};Mh.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||rJ(this),this._batchTable.update(e,t),this._ready=!0)};Mh.prototype.pick=function(e,t,n){};Mh.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};Mh.prototype.isDestroyed=function(){return!1};Mh.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};function Qje(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let d=t[c]*3,u=e.slice(a,a+d);a+=d,r(u,n[c],o,i)}}var C2=Mh;var czn=y(C(),1);var jHn=y(C(),1);var $On=y(C(),1);function Qa(){}Qa._maxSortingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Qa._sorterTaskProcessor=void 0;Qa._taskProcessorReady=!1;Qa._error=void 0;Qa._getSorterTaskProcessor=function(){if(!l(Qa._sorterTaskProcessor)){let e=new hi("gaussianSplatSorter",Qa._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Qa._taskProcessorReady=!0:Qa._error=new de("Gaussian splat sorter could not be initialized.")}).catch(t=>{Qa._error=t}),Qa._sorterTaskProcessor=e}return Qa._sorterTaskProcessor};Qa.radixSortIndexes=function(e){let t=Qa._getSorterTaskProcessor();if(l(Qa._error))throw Qa._error;if(Qa._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var AT=Qa;var rHn=y(C(),1);function Ua(){}Ua._maxSortingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Ua._textureTaskProcessor=void 0;Ua._taskProcessorReady=!1;Ua._error=void 0;Ua._getTextureTaskProcessor=function(){if(!l(Ua._textureTaskProcessor)){let e=new hi("gaussianSplatTextureGenerator",Ua._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ua._taskProcessorReady=!0:Ua._error=new de("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ua._error=t}),Ua._textureTaskProcessor=e}return Ua._textureTaskProcessor};Ua.generateFromAttributes=function(e){let t=Ua._getTextureTaskProcessor();if(l(Ua._error))throw Ua._error;if(!Ua._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var x2=Ua;var mHn=y(C(),1);function Uje(e){let t=new OA;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Qe.getState(Qe.fromCache({depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL}})),this.alphaOptions=new lx,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,be.FRAGMENT)}var I2=Uje;var fHn=y(C(),1),_2=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var AHn=y(C(),1),E2=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var T2=new X,ime=new X,yx=new X,md={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function nme(e,t){return new Wt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:tt.RGBA_INTEGER,pixelDatatype:Ye.UNSIGNED_INT,flipY:!1,sampler:sn.NEAREST})}function eu(e){e=e??Y.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new X,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=Ir.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Mt.getAxisCorrectionMatrix(ho.Y,ho.X,new X),this._isDestroyed=!1,this._sorterState=md.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(eu.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});eu.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};eu.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),me(this)};eu.prototype.isDestroyed=function(){return this._isDestroyed};eu.prototype.onTileLoad=function(e){this._dirty=!0};eu.prototype.onTileVisible=function(e){};eu.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=X.multiplyTransformation(t,i._axisCorrectionMatrix,T2);X.multiplyTransformation(o,e.content.worldTransform,o);let r=X.multiply(e.tileset.modelMatrix,X.fromArray(e.tileset.root.transform),ime),s=X.inverse(r,yx),a=X.multiplyTransformation(s,o,T2),c=e.content._originalPositions,d=e.content._originalRotations,u=e.content._originalScales,h=Mt.getAttributeBySemantic(n,lt.POSITION).typedArray,p=Mt.getAttributeBySemantic(n,lt.ROTATION).typedArray,g=Mt.getAttributeBySemantic(n,lt.SCALE).typedArray,f=new m,b=new Pe,x=new m;for(let I=0;I<c.length/3;++I)f.x=c[I*3],f.y=c[I*3+1],f.z=c[I*3+2],b.x=d[I*4],b.y=d[I*4+1],b.z=d[I*4+2],b.w=d[I*4+3],x.x=u[I*3],x.y=u[I*3+1],x.z=u[I*3+2],X.fromTranslationQuaternionRotationScale(f,b,x,yx),X.multiplyTransformation(a,yx,yx),X.getTranslation(yx,f),X.getRotation(yx,b),X.getScale(yx,x),h[I*3]=f.x,h[I*3+1]=f.y,h[I*3+2]=f.z,p[I*4]=b.x,p[I*4+1]=b.y,p[I*4+2]=b.z,p[I*4+3]=b.w,g[I*3]=x.x,g[I*3+1]=x.y,g[I*3+2]=x.z};eu.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=x2.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=nme(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=nme(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};eu.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new I2(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=bn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Ge.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",be.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",be.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=We.TRIANGLE_STRIP,o.addVertexLines(_2),o.addFragmentLines(E2);let a=o.buildShaderProgram(t.context),c=ke(Qe.fromCache(i.renderStateOptions),!0);c.cull.face=Mt.getCullFace(n.modelMatrix,We.TRIANGLE_STRIP),c=Qe.fromCache(c);let d={screenQuadPosition:0,splatIndex:2},u=new Tn.Attribute;if(u.name="_SPLAT_INDEXES",u.typedArray=e._indexes,u.componentDatatype=J.UNSIGNED_INT,u.type=kt.SCALAR,u.normalized=!1,u.count=i.instanceCount,u.constant=0,u.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new pt({attributes:{screenQuadPosition:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...u,variableName:"splatIndex"}},primitiveType:We.TRIANGLE_STRIP});e._vertexArray=ui.fromGeometry({context:t.context,geometry:g,attributeLocations:d,bufferUsage:Ne.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=X.multiply(n.modelMatrix,X.fromArray(n.root.transform),ime),p=new ot({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Ge.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:We.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=p};eu.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===md.IDLE){if(!this._dirty&&X.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let d of n){let u=d.content.splatPrimitive,h=s(u);l(a)||(a=J.createTypedArray(r,i*kt.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.POSITION)),this._scales=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.SCALE)),this._rotations=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.ROTATION)),this._colors=o(J.UNSIGNED_BYTE,r=>Mt.getAttributeBySemantic(r,lt.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||eu.generateSplatTexture(this,e);return}if(X.clone(e.camera.viewMatrix,this._prevViewMatrix),X.multiply(e.camera.viewMatrix,this._rootTransform,T2),l(this._sorterPromise)||(this._sorterPromise=AT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(T2),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=md.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=md.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=md.SORTED})}else if(this._sorterState===md.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=AT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(T2),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=md.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=md.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=md.SORTED}),this._sorterState=md.SORTING}else{if(this._sorterState===md.SORTING)return;if(this._sorterState===md.SORTED)eu.buildGSplatDrawCommand(this,e),this._sorterState=md.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===md.ERROR)throw this._sorterError}this._dirty=!1}};var gT=eu;function hm(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new gT({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(hm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});hm.fromGltf=async function(e,t,n,i){let o=n,r=Ve.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:ho.Y,forwardAxis:ho.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=Ve.createIfNeeded(i);let a=new Od(s);try{await a.load()}catch(c){throw a.destroy(),new de(`Failed to load glTF: ${c.message}`)}return new hm(a,e,t,n)};hm.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(gT.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.POSITION).typedArray),this._originalRotations=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.ROTATION).typedArray),this._originalScales=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};hm.prototype.hasProperty=function(e,t){return!1};hm.prototype.getFeature=function(e){};hm.prototype.applyDebugSettings=function(e,t){};hm.prototype.applyStyle=function(e){};hm.prototype.pick=function(e,t,n){};hm.prototype.isDestroyed=function(){return this.isDestroyed};hm.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),me(this)};var bT=hm;var ome={b3dm:function(e,t,n,i,o){return jd.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return jd.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return jd.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return LZ.fromTileType(e,t,n,i,o,ome)},externalTileset:function(e,t,n,i){return JX.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new GZ(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new C2(e,t,n,i,o)},subt:function(e,t,n,i,o){return EE.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return EE.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new de("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),d=!1;return e.isGltfExtensionRequired instanceof Function&&(d=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),d?bT.fromGltf(e,t,n,c):jd.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?bT.fromGltf(e,t,n,i):jd.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return jd.fromGeoJson(e,t,n,i)}},Cx=ome;var Czn=y(C(),1),kje={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},ir=Object.freeze(kje);var Izn=y(C(),1),vh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};vh.isBinaryFormat=function(e){switch(e){case vh.BATCHED_3D_MODEL:case vh.INSTANCED_3D_MODEL:case vh.COMPOSITE:case vh.POINT_CLOUD:case vh.VECTOR:case vh.GEOMETRY:case vh.IMPLICIT_SUBTREE:case vh.VOXEL_BINARY:case vh.GLTF_BINARY:return!0;default:return!1}};var Js=Object.freeze(vh);var Ezn=y(C(),1),Yje={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},fm=Object.freeze(Yje);var Szn=y(C(),1),ba={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},ng=new Array(ba.NUMBER_OF_PASSES);ng[ba.RENDER]=Object.freeze({pass:ba.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});ng[ba.PICK]=Object.freeze({pass:ba.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ng[ba.SHADOW]=Object.freeze({pass:ba.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});ng[ba.PRELOAD]=Object.freeze({pass:ba.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.PRELOAD_FLIGHT]=Object.freeze({pass:ba.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:ba.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.MOST_DETAILED_PRELOAD]=Object.freeze({pass:ba.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.MOST_DETAILED_PICK]=Object.freeze({pass:ba.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ba.getPassOptions=function(e){return ng[e]};var zo=Object.freeze(ba);var Vzn=y(C(),1);function np(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(np.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});np.prototype.hasProperty=function(e,t){return!1};np.prototype.getFeature=function(e){};np.prototype.applyDebugSettings=function(e,t){};np.prototype.applyStyle=function(e){};np.prototype.update=function(e,t){};np.prototype.pick=function(e,t,n){};np.prototype.isDestroyed=function(){return!1};np.prototype.destroy=function(){return me(this)};var yT=np;var Nzn=y(C(),1);var wzn=y(C(),1);function ig(e){e=e??Y.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(ig.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ig.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};ig.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};ig.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};ig.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};ig.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};ig.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};ig.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var S2=ig;function sJ(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){sJ._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??Y.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new S2({content:n,class:o})}}sJ._oneTimeWarning=xt;var xx=sJ;var kzn=y(C(),1);function Oje(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var Ix=Oje;var tKn=y(C(),1);var zzn=y(C(),1);function og(e){e=e??Y.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(og.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});og.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};og.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};og.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};og.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};og.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};og.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};og.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var L2=og;function aJ(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){aJ._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??Y.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new L2({tile:n,class:o})}}aJ._oneTimeWarning=xt;var R2=aJ;var _Kn=y(C(),1);var cKn=y(C(),1);function Hje(e){let t=new Uint8Array(e),n=gh(t);if(n==="glTF"&&(n="glb"),Js.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=zje(t);if(l(i.root))return{contentType:Js.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:Js.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:Js.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:Js.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:Js.VOXEL_JSON,jsonPayload:i};throw new de("Invalid tile content.")}function zje(e){let t;try{t=mr(e)}catch{throw new de("Invalid tile content.")}return t}var rg=Hje;function pm(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Sc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(pm.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function cJ(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function rme(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}pm.prototype.requestInnerContents=function(){if(!Kje(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;cJ(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=Jje(this,n,t,this._tile._contentState);return jje(this)};function Kje(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Sc.serverHasOpenSlots(n,t[n]))return!1;return Sc.heapHasOpenSlots(e.length)}function Jje(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new sr({throttle:!0,throttleByServer:!0,type:Zs.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let d=o.fetchArrayBuffer();if(l(d))return d.then(function(u){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===mi.CANCELLED){rme(e,i);return}return cJ(e,-1),u}}).catch(function(u){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===mi.CANCELLED){rme(e,i);return}cJ(e,-1),sme(e,t,u)}})}async function jje(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>qje(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function qje(e,t,n){if(l(t))try{let i=rg(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===Js.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===Js.GEOMETRY||i.contentType===Js.VECTOR;let a,c=Cx[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let d=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,p=s.implicitCoordinates;a.metadata=h.getContentMetadataView(p,n)}else s.hasImplicitContent||(a.metadata=xx(o,d));let u=Ix(o,d);return l(u)&&(a.group=new SC({metadata:u})),a}catch(i){sme(e,n,i)}}function sme(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}pm.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};pm.prototype.hasProperty=function(e,t){return!1};pm.prototype.getFeature=function(e){};pm.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};pm.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};pm.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};pm.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let d=m.distance(e.origin,c);d<o&&(i=c,o=d)}if(l(i))return n};pm.prototype.isDestroyed=function(){return!1};pm.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return me(this)};var V2=pm;var gJn=y(C(),1);var qKn=y(C(),1);var wKn=y(C(),1);var ame=Math.cos,cme=Math.sin,$je=Math.sqrt,lJ={};lJ.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,d=e.boundingRectangle,u=c.latitude-e.granYCos*i+o*e.granXSin,h=ame(u),p=cme(u),g=a.z*p,f=c.longitude+i*e.granYSin+o*e.granXCos,b=h*ame(f),x=h*cme(f),I=a.x*b,_=a.y*x,E=$je(I*b+_*x+g*p);if(r.x=I/E,r.y=_/E,r.z=g/E,n){let S=e.stNwCorner;l(S)?(u=S.latitude-e.stGranYCos*i+o*e.stGranXSin,f=S.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(f-e.stWest)*e.lonScalar,s.y=(u-e.stSouth)*e.latScalar):(s.x=(f-d.west)*e.lonScalar,s.y=(u-d.south)*e.latScalar)}};var e8e=new Qi,Am=new m,t8e=new ge,KQ=new m,G2=new Di;function lme(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,d=n*a,u=Math.sin(t),h=i*u,p=n*u;G2._ellipsoid=ie.default,Am=G2.project(e,Am),Am=m.subtract(Am,KQ,Am);let g=Qi.fromRotation(t,e8e);Am=Qi.multiplyByVector(g,Am,Am),Am=m.add(Am,KQ,Am),e=G2.unproject(Am,e),r-=1,s-=1;let f=e.latitude,b=f+r*p,x=f-c*s,I=f-c*s+r*p,_=Math.max(f,b,x,I),E=Math.min(f,b,x,I),S=e.longitude,R=S+r*d,G=S+s*h,B=S+s*h+r*d,w=Math.max(S,R,G,B),F=Math.min(S,R,G,B);return{north:_,south:E,east:w,west:F,granYCos:c,granYSin:h,granXCos:d,granXSin:p,nwCorner:e}}lJ.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,d=e.north,u=e.south,h=!1,p=!1;d===Z.PI_OVER_TWO&&(h=!0),u===-Z.PI_OVER_TWO&&(p=!0);let g,f=d-u;c>a?g=Z.TWO_PI-c+a:g=a-c;let b=Math.ceil(g/t)+1,x=Math.ceil(f/t)+1,I=g/(b-1),_=f/(x-1),E=le.northwest(e,r),S=le.center(e,t8e);(n!==0||i!==0)&&(S.longitude<E.longitude&&(S.longitude+=Z.TWO_PI),G2._ellipsoid=ie.default,KQ=G2.project(S,KQ));let R=_,G=I,B=0,w=0,F=le.clone(e,o),P={granYCos:R,granYSin:B,granXCos:G,granXSin:w,nwCorner:E,boundingRectangle:F,width:b,height:x,northCap:h,southCap:p};if(n!==0){let A=lme(E,n,I,_,S,b,x);d=A.north,u=A.south,a=A.east,c=A.west,P.granYCos=A.granYCos,P.granYSin=A.granYSin,P.granXCos=A.granXCos,P.granXSin=A.granXSin,F.north=d,F.south=u,F.east=a,F.west=c}if(i!==0){n=n-i;let A=le.northwest(F,s),T=lme(A,n,I,_,S,b,x);P.stGranYCos=T.granYCos,P.stGranXCos=T.granXCos,P.stGranYSin=T.granYSin,P.stGranXSin=T.granXSin,P.stNwCorner=A,P.stWest=T.west,P.stSouth=T.south}return P};var js=lJ;var n8e=new ue,i8e=new ue,o8e=new m,r8e=new le;function dme(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,d=0,u=4;r&&(c-=1,a-=1,d+=1,u-=2),s&&(c-=1,a-=1,d+=1,u-=2),d+=c*o+2*a-u;let h=new Float64Array(d*3),p=0,g=0,f,b=o8e;if(r)js.computePosition(t,n,!1,g,0,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;else for(f=0;f<o;f++)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;for(f=o-1,g=1;g<i;g++)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;if(g=i-1,!s)for(f=o-2;f>=0;f--)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;for(f=0,g=i-2;g>0;g--)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;let x=h.length/3*2,I=Me.createTypedArray(h.length/3,x),_=0;for(let S=0;S<h.length/3-1;S++)I[_++]=S,I[_++]=S+1;I[_++]=h.length/3-1,I[_++]=0;let E=new pt({attributes:new xn,primitiveType:We.LINES});return E.attributes.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h}),E.indices=I,E}function s8e(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=dme(e,t),s=t.height,a=t.width,c=_i.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),d=c.length,u=new Float64Array(d*2);u.set(c);let h=_i.scaleToGeodeticHeight(r.attributes.position.values,i,o);u.set(h,d),r.attributes.position.values=u;let p=t.northCap,g=t.southCap,f=4;p&&(f-=1),g&&(f-=1);let b=(u.length/3+f)*2,x=Me.createTypedArray(u.length/3,b);d=u.length/6;let I=0;for(let E=0;E<d-1;E++)x[I++]=E,x[I++]=E+1,x[I++]=E+d,x[I++]=E+d+1;x[I++]=d-1,x[I++]=0,x[I++]=d+d-1,x[I++]=d,x[I++]=0,x[I++]=d;let _;if(p)_=s-1;else{let E=a-1;x[I++]=E,x[I++]=E+d,_=a+s-2}if(x[I++]=_,x[I++]=_+d,!g){let E=a+_-1;x[I++]=E,x[I]=E+d}return r.indices=x,r}function xT(e){e=e??Y.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??Z.RADIANS_PER_DEGREE,i=e.ellipsoid??ie.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=le.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}xT.packedLength=le.packedLength+ie.packedLength+5;xT.pack=function(e,t,n){return n=n??0,le.pack(e._rectangle,t,n),n+=le.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var ume=new le,mme=ie.clone(ie.UNIT_SPHERE),CT={rectangle:ume,ellipsoid:mme,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};xT.unpack=function(e,t,n){t=t??0;let i=le.unpack(e,t,ume);t+=le.packedLength;let o=ie.unpack(e,t,mme);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t];return l(n)?(n._rectangle=le.clone(i,n._rectangle),n._ellipsoid=ie.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=d===-1?void 0:d,n):(CT.granularity=r,CT.height=s,CT.rotation=a,CT.extrudedHeight=c,CT.offsetAttribute=d===-1?void 0:d,new xT(CT))};var a8e=new ge;xT.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=js.computeOptions(t,e._granularity,e._rotation,0,r8e,a8e),o,r;if(Z.equalsEpsilon(t.north,t.south,Z.EPSILON10)||Z.equalsEpsilon(t.east,t.west,Z.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!Z.equalsEpsilon(s,a,0,Z.EPSILON2),d;if(c){if(o=s8e(e,i),l(e._offsetAttribute)){let p=o.attributes.position.values.length/3,g=new Uint8Array(p);e._offsetAttribute===pn.TOP?g=g.fill(1,0,p/2):(d=e._offsetAttribute===pn.NONE?0:1,g=g.fill(d)),o.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let u=ue.fromRectangle3D(t,n,s,i8e),h=ue.fromRectangle3D(t,n,a,n8e);r=ue.union(u,h)}else{if(o=dme(e,i),o.attributes.position.values=_i.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let u=o.attributes.position.values.length;d=e._offsetAttribute===pn.NONE?0:1;let h=new Uint8Array(u/3).fill(d);o.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=ue.fromRectangle3D(t,n,s)}return new pt({attributes:o.attributes,indices:o.indices,primitiveType:We.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var _x=xT;function _T(e){this.rectangle=le.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new m,this.northeastCornerCartesian=new m,this.westNormal=new m,this.southNormal=new m,this.eastNormal=new m,this.northNormal=new m;let t=e.ellipsoid??ie.WGS84;m8e(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(_T.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});_T.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=vn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=ue.fromOrientedBoundingBox(this._orientedBoundingBox)};var hme=new m,JQ=new m,fme=new m,c8e=new m,l8e=new m,d8e=new m,u8e=new m,gm=new ge,pme=new An(m.UNIT_X,0),IT=new En;function m8e(e,t,n){n.cartographicToCartesian(le.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(le.northeast(t),e.northeastCornerCartesian),gm.longitude=t.west,gm.latitude=(t.south+t.north)*.5,gm.height=0;let i=n.cartographicToCartesian(gm,d8e),o=m.cross(i,m.UNIT_Z,c8e);m.normalize(o,e.westNormal),gm.longitude=t.east;let r=n.cartographicToCartesian(gm,u8e),s=m.cross(m.UNIT_Z,r,hme);m.normalize(s,e.eastNormal);let a=m.subtract(i,r,hme);m.magnitude(a)===0&&(a=m.clone(o,a));let c=m.normalize(a,l8e),d=t.south,u;if(d>0){gm.longitude=(t.west+t.east)*.5,gm.latitude=d;let b=n.cartographicToCartesian(gm,IT.origin);m.clone(c,IT.direction);let x=An.fromPointNormal(e.southwestCornerCartesian,e.westNormal,pme);fi.rayPlane(IT,x,e.southwestCornerCartesian),u=n.geodeticSurfaceNormal(b,JQ)}else u=n.geodeticSurfaceNormalCartographic(le.southeast(t),JQ);let h=m.cross(u,a,fme);m.normalize(h,e.southNormal);let p=t.north,g;if(p<0){gm.longitude=(t.west+t.east)*.5,gm.latitude=p;let b=n.cartographicToCartesian(gm,IT.origin);m.negate(c,IT.direction);let x=An.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,pme);fi.rayPlane(IT,x,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(b,JQ)}else g=n.geodeticSurfaceNormalCartographic(le.northwest(t),JQ);let f=m.cross(a,g,fme);m.normalize(f,e.northNormal)}var h8e=new m,f8e=new m,p8e=new m(0,-1,0),A8e=new m(0,0,-1),Ame=new m;function g8e(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!le.contains(e.rectangle,o)){let d=e.southwestCornerCartesian,u=e.northeastCornerCartesian,h=e.westNormal,p=e.southNormal,g=e.eastNormal,f=e.northNormal;t.mode!==re.SCENE3D&&(d=t.mapProjection.project(le.southwest(e.rectangle),h8e),d.z=d.y,d.y=d.x,d.x=0,u=t.mapProjection.project(le.northeast(e.rectangle),f8e),u.z=u.y,u.y=u.x,u.x=0,h=p8e,g=m.UNIT_Y,p=A8e,f=m.UNIT_Z);let b=m.subtract(i,d,Ame),x=m.dot(b,h),I=m.dot(b,p),_=m.subtract(i,u,Ame),E=m.dot(_,g),S=m.dot(_,f);x>0?r+=x*x:E>0&&(r+=E*E),I>0?r+=I*I:S>0&&(r+=S*S)}let s,a,c;if(t.mode===re.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let d=s-c;r+=d*d}else if(s<a){let d=a-s;r+=d*d}return Math.sqrt(r)}_T.prototype.distanceToCamera=function(e){let t=g8e(this,e);if(e.mode===re.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};_T.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};_T.prototype.createDebugVolume=function(e){let t=new X.clone(X.IDENTITY),n=new _x({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new wt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var tu=_T;var i4n=y(C(),1);var NJn=y(C(),1);var _Jn=y(C(),1);var Z2={},b8e=new m,gme=new m,bme=new m,yme=new m,Cme=new vn;Z2.validOutline=function(e){let n=vn.fromPoints(e,Cme).halfAxes,i=$.getColumn(n,0,gme),o=$.getColumn(n,1,bme),r=$.getColumn(n,2,yme),s=m.magnitude(i),a=m.magnitude(o),c=m.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};Z2.computeProjectTo2DArguments=function(e,t,n,i){let o=vn.fromPoints(e,Cme),r=o.halfAxes,s=$.getColumn(r,0,gme),a=$.getColumn(r,1,bme),c=$.getColumn(r,2,yme),d=m.magnitude(s),u=m.magnitude(a),h=m.magnitude(c),p=Math.min(d,u,h);if(d===0&&(u===0||h===0)||u===0&&h===0)return!1;let g,f;return(p===u||p===h)&&(g=s),p===d?g=a:p===h&&(f=a),(p===d||p===u)&&(f=c),m.normalize(g,n),m.normalize(f,i),m.clone(o.center,t),!0};function xme(e,t,n,i,o){let r=m.subtract(e,t,b8e),s=m.dot(n,r),a=m.dot(i,r);return D.fromElements(s,a,o)}Z2.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=xme(i[r],e,t,n);return o}};Z2.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return xme(i,e,t,n,o)}};var sg=Z2;function y8e(e){let t=e.length,n=new Float64Array(t*3),i=Me.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:n})});return new pt({attributes:s,indices:i,primitiveType:We.LINES})}function Ex(e){e=e??Y.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=ti.computeHierarchyPackedLength(t,m)+1}Ex.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new Ex(t)};Ex.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),t[n]=e.packedLength,t};var C8e={polygonHierarchy:{}};Ex.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new Ex(C8e)),n._polygonHierarchy=i,n.packedLength=o,n};Ex.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=Xo(n,m.equalsEpsilon,!0),n.length<3||!sg.validOutline(n))return;let o=ti.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let d=new wt({geometry:y8e(o[c])});r.push(d)}let s=Yn.combineInstances(r)[0],a=ue.fromPoints(t.positions);return new pt({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var bm=Ex;var jQ=new ge;function B2(e){let t=xA.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??ie.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=V8e(t,n,i,o);this._boundingPlanes=r;let s=w8e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=gJ(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=m.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=gJ(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=gJ(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();jQ=o.cartesianToCartographic(c,jQ),jQ.height=(i+n)/2,this.center=o.cartographicToCartesian(jQ,c),this._boundingSphere=ue.fromPoints(s)}var x8e=new m,I8e=new ge,_8e=new m,E8e=new ge,T8e=new m,S8e=new m,L8e=new m,R8e=new m;function V8e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,x8e),a=i.cartesianToCartographic(r,I8e);a.height=n;let c=i.cartographicToCartesian(a,_8e),d=An.fromPointNormal(c,s);o[0]=d;let u=0,h,p=[],g,f;for(h=0;h<4;h++){g=e.getVertex(h),p[h]=g,f=i.cartesianToCartographic(g,E8e),f.height=t;let x=An.getPointDistance(d,i.cartographicToCartesian(f,T8e));x<u&&(u=x)}let b=An.clone(d);for(b.normal=m.negate(b.normal,b.normal),b.distance=b.distance*-1+u,o[1]=b,h=0;h<4;h++){g=p[h];let x=p[(h+1)%4],I=i.geodeticSurfaceNormal(g,S8e),_=m.subtract(x,g,R8e),E=m.cross(_,I,L8e);E=m.normalize(E,E),o[2+h]=An.fromPointNormal(g,E)}return o}var Tx=new m,Sx=new m,Lx=new m,dJ=new m,uJ=new m,mJ=new m,G8e=new m,Z8e=new m,B8e=new m,hJ=new m,fJ=new m,pJ=new m,y0=new m,ip=new $;function Ime(e,t,n){Tx=e.normal,Sx=t.normal,Lx=n.normal,dJ=m.multiplyByScalar(e.normal,-e.distance,dJ),uJ=m.multiplyByScalar(t.normal,-t.distance,uJ),mJ=m.multiplyByScalar(n.normal,-n.distance,mJ),hJ=m.multiplyByScalar(m.cross(Sx,Lx,G8e),m.dot(dJ,Tx),hJ),fJ=m.multiplyByScalar(m.cross(Lx,Tx,Z8e),m.dot(uJ,Sx),fJ),pJ=m.multiplyByScalar(m.cross(Tx,Sx,B8e),m.dot(mJ,Lx),pJ),ip[0]=Tx.x,ip[1]=Sx.x,ip[2]=Lx.x,ip[3]=Tx.y,ip[4]=Sx.y,ip[5]=Lx.y,ip[6]=Tx.z,ip[7]=Sx.z,ip[8]=Lx.z;let i=$.determinant(ip);return y0=m.add(hJ,fJ,y0),y0=m.add(y0,pJ,y0),new m(y0.x/i,y0.y/i,y0.z/i)}function w8e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Ime(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Ime(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var AJ=new m,ET=new m;function gJ(e,t){let n=[];for(let i=0;i<4;i++)AJ=m.subtract(t[(i+1)%4],t[i],AJ),ET=m.cross(e.normal,AJ,ET),ET=m.normalize(ET,ET),n[i]=m.clone(ET);return n}Object.defineProperties(B2.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var bJ=new m;B2.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;An.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):An.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,An.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=yJ(An.projectPointOntoPlane(c,t,bJ),i[0],c,o),m.distance(a,t);if(n.length===2){if(n[0]===0){let p=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=_me(t,p[0],p[1]),m.distance(a,t)}let u=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=yJ(An.projectPointOntoPlane(c,t,bJ),i[r],c,this._edgeNormals[n[r]]),h=m.distanceSquared(a,t),h<u&&(u=h);return Math.sqrt(u)}else if(n.length>3)return a=yJ(An.projectPointOntoPlane(this._boundingPlanes[1],t,bJ),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),m.distance(a,t);let d=n[1]===2&&n[2]===5?0:1;return n[0]===0?m.distance(t,this._vertices[(n[1]-2+d)%4]):m.distance(t,this._vertices[4+(n[1]-2+d)%4])};var X8e=new m,W8e=new m;function _me(e,t,n){let i=m.subtract(n,t,X8e),o=m.subtract(e,t,W8e),r=m.dot(i,o);if(r<=0)return t;let s=m.dot(i,i);return r>=s?n:(r=r/s,new m((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var F8e=new An(m.UNIT_X,0);function yJ(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let d=An.fromPointNormal(t[c],i[c],F8e);An.getPointDistance(d,e)<0||(a=_me(e,t[c],t[(c+1)%4]),r=m.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}B2.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)m.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?on.INSIDE:n===this._vertices.length?on.OUTSIDE:on.INTERSECTING};B2.prototype.createDebugVolume=function(e){let t=new X.clone(X.IDENTITY),n=new bm({polygonHierarchy:{positions:this._planeVertices[0]}}),i=bm.createGeometry(n),o=new wt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}}),r=new bm({polygonHierarchy:{positions:this._planeVertices[1]}}),s=bm.createGeometry(r),a=new wt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}}),c=[];for(let d=0;d<4;d++){let u=new bm({polygonHierarchy:{positions:this._planeVertices[2+d]}}),h=bm.createGeometry(u);c[d]=new wt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}})}return new Nn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var w2=B2;var X4n=y(C(),1);var _4n=y(C(),1);var b4n=y(C(),1);var P8e=new m(1,1,1),qQ=Math.cos,$Q=Math.sin;function TT(e){e=e??Y.EMPTY_OBJECT;let t=e.radii??P8e,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??Z.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??Z.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),d=Math.round(e.subdivisions??128);this._radii=m.clone(t),this._innerRadii=m.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=d,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}TT.packedLength=2*m.packedLength+8;TT.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),n+=m.packedLength,m.pack(e._innerRadii,t,n),n+=m.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var Eme=new m,Tme=new m,ag={radii:Eme,innerRadii:Tme,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};TT.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,Eme);t+=m.packedLength;let o=m.unpack(e,t,Tme);t+=m.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=m.clone(i,n._radii),n._innerRadii=m.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=d,n._slicePartitions=u,n._subdivisions=h,n._offsetAttribute=p===-1?void 0:p,n):(ag.minimumClock=r,ag.maximumClock=s,ag.minimumCone=a,ag.maximumCone=c,ag.stackPartitions=d,ag.slicePartitions=u,ag.subdivisions=h,ag.offsetAttribute=p===-1?void 0:p,new TT(ag))};TT.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=ie.fromCartesian3(t),d=e._slicePartitions+1,u=e._stackPartitions+1;d=Math.round(d*Math.abs(o-i)/Z.TWO_PI),u=Math.round(u*Math.abs(s-r)/Z.PI),d<2&&(d=2),u<2&&(u=2);let h=0,p=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,f=!1,b=!1;g&&(p=2,r>0&&(f=!0,h+=d),s<Math.PI&&(b=!0,h+=d));let x=a*p*(u+d),I=new Float64Array(x*3),_=2*(x+h-(d+u)*p),E=Me.createTypedArray(x,_),S,R,G,B,w=0,F=new Array(u),P=new Array(u);for(S=0;S<u;S++)B=r+S*(s-r)/(u-1),F[S]=$Q(B),P[S]=qQ(B);let A=new Array(a),T=new Array(a);for(S=0;S<a;S++)G=i+S*(o-i)/(a-1),A[S]=$Q(G),T[S]=qQ(G);for(S=0;S<u;S++)for(R=0;R<a;R++)I[w++]=t.x*F[S]*T[R],I[w++]=t.y*F[S]*A[R],I[w++]=t.z*P[S];if(g)for(S=0;S<u;S++)for(R=0;R<a;R++)I[w++]=n.x*F[S]*T[R],I[w++]=n.y*F[S]*A[R],I[w++]=n.z*P[S];for(F.length=a,P.length=a,S=0;S<a;S++)B=r+S*(s-r)/(a-1),F[S]=$Q(B),P[S]=qQ(B);for(A.length=d,T.length=d,S=0;S<d;S++)G=i+S*(o-i)/(d-1),A[S]=$Q(G),T[S]=qQ(G);for(S=0;S<a;S++)for(R=0;R<d;R++)I[w++]=t.x*F[S]*T[R],I[w++]=t.y*F[S]*A[R],I[w++]=t.z*P[S];if(g)for(S=0;S<a;S++)for(R=0;R<d;R++)I[w++]=n.x*F[S]*T[R],I[w++]=n.y*F[S]*A[R],I[w++]=n.z*P[S];for(w=0,S=0;S<u*p;S++){let W=S*a;for(R=0;R<a-1;R++)E[w++]=W+R,E[w++]=W+R+1}let L=u*a*p;for(S=0;S<d;S++)for(R=0;R<a-1;R++)E[w++]=L+S+R*d,E[w++]=L+S+(R+1)*d;if(g)for(L=u*a*p+d*a,S=0;S<d;S++)for(R=0;R<a-1;R++)E[w++]=L+S+R*d,E[w++]=L+S+(R+1)*d;if(g){let W=u*a*p,M=W+a*d;if(f)for(S=0;S<d;S++)E[w++]=W+S,E[w++]=M+S;if(b)for(W+=a*d-d,M+=a*d-d,S=0;S<d;S++)E[w++]=W+S,E[w++]=M+S}let V=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:I})});if(l(e._offsetAttribute)){let W=I.length,M=e._offsetAttribute===pn.NONE?0:1,Q=new Uint8Array(W/3).fill(M);V.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:Q})}return new pt({attributes:V,indices:E,primitiveType:We.LINES,boundingSphere:ue.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var nu=TT;function ST(e){let t=e.radius??1,i={radii:new m(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new nu(i),this._workerName="createSphereOutlineGeometry"}ST.packedLength=nu.packedLength;ST.pack=function(e,t,n){return nu.pack(e._ellipsoidGeometry,t,n)};var M8e=new nu,Rx={radius:void 0,radii:new m,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};ST.unpack=function(e,t,n){let i=nu.unpack(e,t,M8e);return Rx.stackPartitions=i._stackPartitions,Rx.slicePartitions=i._slicePartitions,Rx.subdivisions=i._subdivisions,l(n)?(m.clone(i._radii,Rx.radii),n._ellipsoidGeometry=new nu(Rx),n):(Rx.radius=i._radii.x,new ST(Rx))};ST.createGeometry=function(e){return nu.createGeometry(e._ellipsoidGeometry)};var cg=ST;function LT(e,t){t===0&&(t=Z.EPSILON7),this._boundingSphere=new ue(e,t)}Object.defineProperties(LT.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});LT.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,m.distance(t.center,e.camera.positionWC)-t.radius)};LT.prototype.intersectPlane=function(e){return ue.intersectPlane(this._boundingSphere,e)};LT.prototype.update=function(e,t){m.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};LT.prototype.createDebugVolume=function(e){let t=new cg({radius:this.radius}),n=X.fromTranslation(this.center,new X.clone(X.IDENTITY)),i=new wt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var lg=LT;var H4n=y(C(),1);var v8e=new m,N8e=new m,D8e=new m,Q8e=new m;function Vx(e,t,n){n=m.cross(e,t,n);let i=m.magnitude(n);return m.multiplyByScalar(n,Z.EPSILON7/i,n)}function CJ(e,t){let n=m.normalize(e,Q8e),i=m.equalsEpsilon(n,m.UNIT_X,Z.EPSILON6)?m.UNIT_Y:m.UNIT_X;return Vx(e,i,t)}function Sme(e){let t=$.getColumn(e,0,v8e),n=$.getColumn(e,1,N8e),i=$.getColumn(e,2,D8e),o=m.equals(t,m.ZERO),r=m.equals(n,m.ZERO),s=m.equals(i,m.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=Z.EPSILON7,e[4]=Z.EPSILON7,e[8]=Z.EPSILON7,e):(o&&!r&&!s?t=Vx(n,i,t):!o&&r&&!s?n=Vx(t,i,n):!o&&!r&&s?i=Vx(n,t,i):o?r?s||(t=CJ(i,t),n=Vx(i,t,n)):(t=CJ(n,t),i=Vx(n,t,i)):(n=CJ(t,n),i=Vx(n,t,i)),$.setColumn(e,0,t,e),$.setColumn(e,1,n,e),$.setColumn(e,2,i,e),e)}function RT(e,t){t=Sme(t),this._orientedBoundingBox=new vn(e,t),this._boundingSphere=ue.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(RT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});RT.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};RT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};RT.prototype.update=function(e,t){m.clone(e,this._orientedBoundingBox.center),t=Sme(t),$.clone(t,this._orientedBoundingBox.halfAxes),ue.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};RT.prototype.createDebugVolume=function(e){let t=new nh({minimum:new m(-1,-1,-1),maximum:new m(1,1,1)}),n=X.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new wt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var hd=RT;function pr(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ii(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?X.unpack(n.transform):X.clone(X.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=X.multiply(a,this.transform,new X),d=l(i)?i._initialTransform:X.IDENTITY;this._initialTransform=X.multiply(d,this.transform,new X),this.computedTransform=c,this.metadata=R2(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let u;l(s)&&l(s.boundingVolume)&&(u=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=u,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,pr._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let p;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&pr._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),p=n.refine.toUpperCase()==="REPLACE"?tr.REPLACE:tr.ADD):l(i)?p=i.refine:p=tr.REPLACE,this.refine=p,this.children=[],this.parent=i;let g,f=!1,b,x,I;if(t=Ve.createIfNeeded(t),r)b=ir.UNLOADED,x=t.clone();else if(l(s)){let R=s.uri;l(s.url)&&(pr._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),R=s.url),R===""?(pr._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new yT(e,this),f=!0,b=ir.READY):(b=ir.UNLOADED,x=t.getDerivedResource({url:R}),I=Sc.getServerKey(x.getUrlComponent()))}else g=new yT(e,this),f=!0,b=ir.READY;this._content=g,this._contentResource=x,this._contentState=b,this._expiredContent=void 0,this._serverKey=I,this.hasEmptyContent=f,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!f,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let _=n.expire,E,S;l(_)&&(E=_.duration,l(_.date)&&(S=j.fromIso8601(_.date))),this.expireDuration=E,this.expireDate=S,this.lastStyleTime=0,this._optimChildrenWithinParent=fm.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=U.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new j,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}pr._deprecationWarning=_r;Object.defineProperties(pr.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new U),U.clone(this._color)},set:function(e){this._color=U.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===ir.READY}},contentUnloaded:{get:function(){return this._contentState===ir.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===ir.EXPIRED}},contentFailed:{get:function(){return this._contentState===ir.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var C0=new m;function U8e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=m.multiplyByScalar(s.directionWC,e._centerZDepth,C0),c=m.add(s.positionWC,a,C0),d=m.subtract(c,r,C0);if(m.magnitude(d)>o){let S=m.normalize(d,C0),R=m.multiplyByScalar(S,o,C0),G=m.add(r,R,C0),B=m.subtract(G,s.positionWC,C0),w=m.normalize(B,C0);e._foveatedFactor=1-Math.abs(m.dot(s.directionWC,w))}else e._foveatedFactor=0;let p=e.refine===tr.REPLACE,g=n.isSkippingLevelOfDetail;if(p&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&p&&g||n._pass===zo.PRELOAD_FLIGHT||n._pass===zo.PRELOAD)return!1;let f=1-Math.cos(s.frustum.fov*.5),b=n.foveatedConeSize*f;if(e._foveatedFactor<=b)return!1;let x=f-b,I=Z.clamp((e._foveatedFactor-b)/x,0,1),_=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,I),E=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-_<=E}var Zme=new j;pr.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,d=a.frustum,u=c.drawingBufferWidth,h=c.drawingBufferHeight*o,p;if(e.mode===re.SCENE2D||d instanceof gn){let g=d.offCenterFrustum;l(g)&&(d=g);let f=Math.max(d.top-d.bottom,d.right-d.left)/Math.max(u,h);p=s/f}else{let g=Math.max(this._distanceToCamera,Z.EPSILON7),f=d.sseDenominator;if(p=s*h/(g*f),i.dynamicScreenSpaceError){let b=i._dynamicScreenSpaceErrorComputedDensity,x=i.dynamicScreenSpaceErrorFactor,I=Z.fog(g,b)*x;p-=I}}return p/=e.pixelRatio,p};function k8e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function Y8e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}pr.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:Xs.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==Xs.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=Y8e(n,this),this._priorityProgressiveResolution=k8e(n,this),this.priorityDeferred=U8e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};pr.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=j.now(Zme);j.lessThan(this.expireDate,e)&&(this._contentState=ir.EXPIRED,this._expiredContent=this._content)}};function O8e(e){if(!l(e.expireDuration))return;let t=j.now(Zme);j.addSeconds(t,e.expireDuration,t),l(e.expireDate)?j.lessThan(e.expireDate,t)&&j.clone(t,e.expireDate):e.expireDate=j.clone(t)}function H8e(e){return function(){return e._priority}}pr.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?z8e(this):J8e(this)};function z8e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ii(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new V2(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=ir.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=ir.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=ir.FAILED,o})}async function K8e(e,t,n,i,o){let r=e._contentState;e._contentState=ir.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===mi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=ir.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===mi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await j8e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=ir.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=ir.FAILED,a}}function J8e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new sr({throttle:!0,throttleByServer:!0,type:Zs.TILES3D,priorityFunction:H8e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return K8e(e,o,i,n,r)}async function j8e(e,t){let n=rg(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===Js.GEOMETRY||n.contentType===Js.VECTOR,(n.contentType===Js.IMPLICIT_SUBTREE||n.contentType===Js.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===Js.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=Cx[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,d=e.implicitCoordinates;o.metadata=c.getContentMetadataView(d,0)}else e.hasImplicitContent||(o.metadata=xx(i,s));let a=Ix(i,s);return l(a)&&(o.group=new SC({metadata:a})),o}pr.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};pr.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=ir.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var Bme=new ue;function IJ(e,t){if(t.mode!==re.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=ue.projectTo2D(n,t.mapProjection,Bme);e._boundingVolume2D=new lg(i.center,i.radius)}return t.mode!==re.SCENE3D?e._boundingVolume2D:e._boundingVolume}function q8e(e,t){if(t.mode!==re.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=ue.projectTo2D(n,t.mapProjection,Bme);e._contentBoundingVolume2D=new lg(i.center,i.radius)}return t.mode!==re.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}pr.prototype.visibility=function(e,t){let n=e.cullingVolume,i=IJ(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==on.INSIDE,a===on.OUTSIDE)return Xs.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==on.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};pr.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return on.INSIDE;if(this._visibilityPlaneMask===Xs.MASK_INSIDE)return on.INSIDE;let t=e.cullingVolume,n=q8e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==on.INSIDE,s===on.OUTSIDE)return on.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==on.OUTSIDE,s===on.INSIDE)return on.OUTSIDE}return t.computeVisibility(n)};pr.prototype.distanceToTile=function(e){return IJ(this,e).distanceToCamera(e)};var $8e=new m;pr.prototype.distanceToTileCenter=function(e){let n=IJ(this,e).boundingVolume,i=m.subtract(n.center,e.camera.positionWC,$8e);return m.dot(e.camera.directionWC,i)};pr.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var wme=new $,Xme=new m,e7e=new $,_J=new m,Wme=new le,Fme=new vn,xJ=new X;function t7e(e,t,n){let i=m.fromElements(e[0],e[1],e[2],_J),o=$.fromArray(e,3,e7e);i=X.multiplyByPoint(t,i,i);let r=X.getMatrix3(t,wme);return o=$.multiply(r,o,o),l(n)?(n.update(i,o),n):new hd(i,o)}function Lme(e,t,n,i){let o=le.unpack(e,0,Wme),r=e[4],s=e[5],a=vn.fromRectangle(o,r,s,ie.WGS84,Fme),c=a.center,d=a.halfAxes;t=X.multiplyTransformation(t,X.inverseTransformation(n,xJ),xJ),c=X.multiplyByPoint(t,c,c);let u=X.getMatrix3(t,wme);return d=$.multiply(u,d,d),l(i)&&i instanceof hd?(i.update(c,d),i):new hd(c,d)}function n7e(e,t,n,i){if(!X.equalsEpsilon(t,n,Z.EPSILON8))return i instanceof hd?Lme(e,t,n,i):Lme(e,t,n,void 0);let o=le.unpack(e,0,Wme);return i instanceof tu?(i.rectangle=le.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(ie.WGS84),i):new tu({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function i7e(e,t,n){let i=m.fromElements(e[0],e[1],e[2],_J),o=e[3];i=X.multiplyByPoint(t,i,i);let r=X.getScale(t,Xme),s=m.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new lg(i,o)}pr.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=YC.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new de("boundingVolume must be defined");if(Ii(e,"3DTILES_bounding_volume_S2"))return new w2(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=t7e(r,t,n);return this._verticalExaggeration!==1&&Rme(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=n7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof hd?Rme(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Mr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Mr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(ie.WGS84))),c}if(l(a)){let c=i7e(a,t,n);if(this._verticalExaggeration!==1){let d=Mr.getPosition(c.center,ie.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,_J),u=c.radius*this._verticalExaggeration;c.update(d,u)}return c}throw new de("boundingVolume must contain a sphere, region, or box")};var o7e=m.unpackArray(new Array(24).fill(0));function Rme(e,t,n){let i=e.boundingVolume.computeCorners(o7e).map(r=>Mr.getPosition(r,ie.WGS84,t,n,r)),o=vn.fromPoints(i,Fme);e.update(o.center,o.halfAxes)}pr.prototype.updateTransform=function(e,t){e=e??X.IDENTITY;let n=X.multiplyTransformation(e,this.transform,xJ),i=!X.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&X.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};pr.prototype.updateGeometricErrorScale=function(){let e=X.getScale(this.computedTransform,Xme),t=m.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function r7e(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=U.WHITE:c=U.DARKGRAY:c=U.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let d=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");d.color=tn.toValue(c,d.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(U.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(U.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=U.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function s7e(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=ir.FAILED,o}}function a7e(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function c7e(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}pr.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;a7e(this,e),c7e(this,e),r7e(this,e,t,n),s7e(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Ge.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var Vme=[];pr.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(O8e(this),this._selectedFrame=0,this.lastStyleTime=0,j.now(this._loadTimestamp),this._contentState=ir.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=Vme;try{this._content.update(e,t)}catch(i){throw this._contentState=ir.FAILED,i}Vme.length=0,t.commandList=n};function Gme(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function e5(e,t,n){return Math.max(Z.normalize(e,t,n)-Z.EPSILON7,0)}pr.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,d=o,u=c+d,h=r,p=Math.pow(10,u),g=u+h,f=r,b=Math.pow(10,g),x=g+f,I=Math.pow(10,x),_=e5(this._depth,n.depth,i.depth);_=t?1-_:_;let S=!e.isSkippingLevelOfDetail&&this.refine===tr.REPLACE?e5(this._priorityHolder._distanceToCamera,n.distance,i.distance):e5(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),R=Gme(S,a,s),G=this._priorityProgressiveResolution?0:p,B=e5(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),w=Gme(B,d,c),F=this.priorityDeferred?b:0,P=e._pass===zo.PRELOAD_FLIGHT?0:I;this._priority=_+R+G+w+F+P};pr.prototype.isDestroyed=function(){return!1};pr.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),me(this)};var ym=pr;var n8n=y(C(),1);var Yjn=y(C(),1);function dg(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(dg.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});dg.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};dg.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};dg.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};dg.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};dg.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};dg.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};dg.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var VT=dg;var Jjn=y(C(),1);function ug(e){e=e??Y.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(ug.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ug.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};ug.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};ug.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};ug.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};ug.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};ug.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};ug.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var X2=ug;function Pme(e){e=e??Y.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new X2({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let d=0;d<c;d++){let u=a[d];s.push(new VT({group:u,class:n.classes[u.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let d=0;d<c;d++){let u=r[d];if(a.hasOwnProperty(u)){let h=a[u];s.push(new VT({id:u,group:a[u],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Pme.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var Gx=Pme;var c8n=y(C(),1);var Mme={},l7e=new m;Mme.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof hd||i instanceof tu){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=fm.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof hd||a instanceof tu)){e._optimChildrenWithinParent=fm.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,d=m.subtract(c.center,o.center,l7e),u=m.magnitude(d);m.divideByScalar(d,u,d);let h=Math.abs(o.halfAxes[0]*d.x)+Math.abs(o.halfAxes[1]*d.y)+Math.abs(o.halfAxes[2]*d.z)+Math.abs(o.halfAxes[3]*d.x)+Math.abs(o.halfAxes[4]*d.y)+Math.abs(o.halfAxes[5]*d.z)+Math.abs(o.halfAxes[6]*d.x)+Math.abs(o.halfAxes[7]*d.y)+Math.abs(o.halfAxes[8]*d.z),p=Math.abs(c.halfAxes[0]*d.x)+Math.abs(c.halfAxes[1]*d.y)+Math.abs(c.halfAxes[2]*d.z)+Math.abs(c.halfAxes[3]*d.x)+Math.abs(c.halfAxes[4]*d.y)+Math.abs(c.halfAxes[5]*d.z)+Math.abs(c.halfAxes[6]*d.x)+Math.abs(c.halfAxes[7]*d.y)+Math.abs(c.halfAxes[8]*d.z);if(h<=p+u){e._optimChildrenWithinParent=fm.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===fm.USE_OPTIMIZATION};var W2=Mme;var p8n=y(C(),1);var u8n=y(C(),1);function F2(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(F2.prototype,{length:{get:function(){return this._length}}});function d7e(e,t,n){this.item=e,this.previous=t,this.next=n}F2.prototype.add=function(e){let t=new d7e(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function vme(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}F2.prototype.remove=function(e){l(e)&&(vme(this,e),--this._length)};F2.prototype.splice=function(e,t){if(e===t)return;vme(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var P2=F2;function Zx(){this._list=new P2,this._sentinel=this._list.add(),this._trimTiles=!1}Zx.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};Zx.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};Zx.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};Zx.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};Zx.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};Zx.prototype.trim=function(){this._trimTiles=!0};var M2=Zx;var x8n=y(C(),1);function t5(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function TJ(e,t){let n;return t==="_loadTimestamp"?n=j.toDate(e).getTime():n=e,n}t5.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=TJ(e,n),this._referenceMaximum[n]=TJ(t,n)};function u7e(e,t){let n=e.tilePropertyName;if(l(n)){let i=TJ(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var EJ=[new U(.1,.1,.1,1),new U(.153,.278,.878,1),new U(.827,.231,.49,1),new U(.827,.188,.22,1),new U(1,.592,.259,1),new U(1,.843,0,1)];t5.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=u7e(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+Z.EPSILON7,c=Z.clamp(i-o,0,s)/s,d=EJ.length-1,u=c*d,h=Math.floor(u),p=Math.ceil(u),g=u-h,f=EJ[h],b=EJ[p],x=U.clone(U.WHITE);x.red=Z.lerp(f.red,b.red,g),x.green=Z.lerp(f.green,b.green,g),x.blue=Z.lerp(f.blue,b.blue,g),e._debugColor=x};t5.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var v2=t5;var T8n=y(C(),1);function GT(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}GT.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};GT.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};GT.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof jd))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};GT.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof jd))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};GT.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Nh=GT;var R8n=y(C(),1);function N2(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(N2.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});N2.prototype.makeDirty=function(){this._styleDirty=!0};N2.prototype.resetDirty=function(){this._styleDirty=!1};N2.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var D2=N2;var F8n=y(C(),1);function m7e(e,t,n){let i=Ii(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ii(o,"3DTILES_bounding_volume_S2")&&!Ii(o,"3DTILES_bounding_volume_cylinder"))throw new de("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new Ve({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=h7e(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ke(a,!0));let c=new Ve({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=f7e(t),this.subdivisionScheme=Cs[i.subdivisionScheme],this.branchingFactor=Cs.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function h7e(e){if(Ii(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function f7e(e){let t=ke(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var Bx=m7e;var k8n=y(C(),1);var v8n=y(C(),1);var Q2={};function Nme(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function SJ(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function Dme(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function LJ(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}Q2.encode2D=function(e,t){return(Nme(e)|Nme(t)<<1)>>>0};Q2.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=Dme(e),t[1]=Dme(e>>1),t};Q2.encode3D=function(e,t,n){return SJ(e)|SJ(t)<<1|SJ(n)<<2};Q2.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=LJ(e),t[1]=LJ(e>>1),t[2]=LJ(e>>2),t};var x0=Q2;function or(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Cs.OCTREE&&(this.z=e.z)}Object.defineProperties(or.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Cs.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Cs.OCTREE?x0.encode3D(this.x,this.y,this.z):x0.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Cs.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});or.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Cs.OCTREE){let o=(this.z<<e.level)+e.z;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Cs.OCTREE){let r=Math.floor(this.z/t);return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};or.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Cs.OCTREE){let r=e.z%n;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};or.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Cs.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};or.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};or.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Cs.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};or.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Cs.OCTREE?this.z===e.z:!0)};or.prototype.isImplicitTilesetRoot=function(){return this.level===0};or.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};or.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};or.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Cs.OCTREE&&(e.z=this.z),e};var Qme=[0,0,0];or.fromMortonIndex=function(e,t,n,i){let o;return e===Cs.OCTREE?(o=x0.decode3D(i,Qme),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=x0.decode2D(i,Qme),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};or.fromTileIndex=function(e,t,n){let i,o,r;return e===Cs.OCTREE?(i=Math.floor(Z.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(Z.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),or.fromMortonIndex(e,t,i,r)};var wx=or;var i7n=y(C(),1);var j8n=y(C(),1);function mg(){}mg.selectTiles=function(e,t){Ae.throwInstantiationError()};mg.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};mg.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};mg.selectTile=function(e,t){if(e.contentVisibility(t)===on.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};mg.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};mg.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};mg.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!p7e(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function p7e(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}mg.updateTile=function(e,t){Ume(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,b7e(e),e._shouldSelect=!1,e._finalResolution=!0};function Ume(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];Ume(r,t),e._visible=r._visible;return}if(A7e(e,t)){e._visible=!1;return}let i=e.refine===tr.REPLACE,o=e._optimChildrenWithinParent===fm.USE_OPTIMIZATION;if(i&&o&&n&&!g7e(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function A7e(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==tr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function g7e(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function b7e(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var ya=mg;function kme(){}var U2={stack:new bl,stackMaximumLength:0};kme.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=ya,s=U2.stack;for(s.push(i);s.length>0;){U2.stackMaximumLength=Math.max(U2.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===tr.ADD,d=a.refine===tr.REPLACE,u=y7e(a);u&&C7e(a,s,t),(c||d&&!u)&&(x7e(e,a),o(a,t),I7e(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return U2.stack.trim(U2.stackMaximumLength),n};function y7e(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function C7e(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function x7e(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function I7e(e,t){e.contentAvailable&&e.contentVisibility(t)!==on.OUTSIDE&&e.tileset._selectedTiles.push(e)}var k2=kme;var l7n=y(C(),1);function Yme(){}var Y2={stack:new bl,stackMaximumLength:0},O2={stack:new bl,stackMaximumLength:0};Yme.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(ya.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;E7e(n,t),Y2.stack.trim(Y2.stackMaximumLength),O2.stack.trim(O2.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function RJ(e,t){e.contentAvailable&&ya.selectTile(e,t)}function _7e(e,t,n){let i=e.refine===tr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=ya;for(let f=0;f<r.length;++f)s(r[f],n);r.sort(ya.sortChildrenByDistanceToCamera);let d=i&&e.hasRenderableContent,u=!0,h=!1,p=-1,g=Number.MAX_VALUE;for(let f=0;f<r.length;++f){let b=r[f];if(b.isVisible?(t.push(b),b._foveatedFactor<g&&(p=f,g=b._foveatedFactor),h=!0):(d||o.loadSiblings)&&(b._foveatedFactor<g&&(p=f,g=b._foveatedFactor),a(b,n),c(b,n)),d){let x;b._inRequestVolume?b.hasRenderableContent?x=b.contentAvailable:x=T7e(b,n):x=!1,u=u&&x}}if(h||(u=!1),p!==-1&&i){let f=r[p];f._wasMinPriorityChild=!0;let b=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;b._foveatedFactor=Math.min(f._foveatedFactor,b._foveatedFactor),b._distanceToCamera=Math.min(f._distanceToCamera,b._distanceToCamera);for(let x=0;x<r.length;++x)r[x]._priorityHolder=b}return u}function E7e(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=ya,a=Y2.stack;for(a.push(e);a.length>0;){Y2.stackMaximumLength=Math.max(Y2.stackMaximumLength,a.length);let c=a.pop(),d=c.parent,u=!l(d)||d._refines;c._refines=i(c)?_7e(c,a,t)&&u:!1;let h=!c._refines&&u;c.hasRenderableContent?c.refine===tr.ADD?(RJ(c,t),o(c,t)):c.refine===tr.REPLACE&&(o(c,t),h&&RJ(c,t)):(n._emptyTiles.push(c),o(c,t),h&&RJ(c,t)),r(c,t),s(c,t)}}function T7e(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=ya,s=!0,a=O2.stack;for(a.push(e);a.length>0;){O2.stackMaximumLength=Math.max(O2.stackMaximumLength,a.length);let c=a.pop(),d=c.children,u=d.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let p=0;p<u;++p){let g=d[p];a.push(g)}}return e.hasEmptyContent||s}var H2=Yme;var p7n=y(C(),1);function Ome(){}var z2={stack:new bl,stackMaximumLength:0},K2={stack:new bl,stackMaximumLength:0},hg={stack:new bl,stackMaximumLength:0,ancestorStack:new bl,ancestorStackMaximumLength:0},S7e=2;Ome.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(ya.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;B7e(n,t),w7e(n,t),z2.stack.trim(z2.stackMaximumLength),K2.stack.trim(K2.stackMaximumLength),hg.stack.trim(hg.stackMaximumLength),hg.ancestorStack.trim(hg.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function L7e(e,t){let{updateTile:n,touchTile:i,selectTile:o}=ya,r=K2.stack;for(r.push(e);r.length>0;){K2.stackMaximumLength=Math.max(K2.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let d=a[c];d.isVisible&&(d.contentAvailable?(n(d,t),i(d,t),o(d,t)):d._depth-e._depth<S7e&&r.push(d))}}}function n5(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:L7e(e,t)}function R7e(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function V7e(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function G7e(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=ya;for(let d=0;d<o.length;++d)r(o[d],n);o.sort(ya.sortChildrenByDistanceToCamera);let c=!1;for(let d=0;d<o.length;++d){let u=o[d];u.isVisible?(t.push(u),c=!0):i.loadSiblings&&(s(u,n),a(u,n))}return c}function Z7e(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function B7e(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=ya,c=z2.stack;for(c.push(e);c.length>0;){z2.stackMaximumLength=Math.max(z2.stackMaximumLength,c.length);let d=c.pop();R7e(d,t);let u=d.parent,h=!l(u)||u._refines;d._refines=o(d)?G7e(d,c,t)&&h:!1;let p=!d._refines&&h;d.hasRenderableContent?d.refine===tr.ADD?(n5(d,t),r(d,t)):d.refine===tr.REPLACE&&(Z7e(d,i)?(r(d,t),p&&n5(d,t)):p?(n5(d,t),r(d,t)):V7e(n,d)&&r(d,t)):(n._emptyTiles.push(d),r(d,t),p&&n5(d,t)),s(d,t),a(d,t)}}function w7e(e,t){let{selectTile:n,canTraverse:i}=ya,{stack:o,ancestorStack:r}=hg,s;for(o.push(e);o.length>0||r.length>0;){if(hg.stackMaximumLength=Math.max(hg.stackMaximumLength,o.length),hg.ancestorStackMaximumLength=Math.max(hg.ancestorStackMaximumLength,r.length),r.length>0){let d=r.peek();if(d._stackLength===o.length){r.pop(),d!==s&&(d._finalResolution=!1),n(d,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===tr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let d=a.children;for(let u=0;u<d.length;++u){let h=d[u];h.isVisible&&o.push(h)}}}}var J2=Ome;var _7n=y(C(),1);function qs(){this._layers=[],this.layerAdded=new Ce,this.layerRemoved=new Ce,this.layerMoved=new Ce,this.layerShownOrHidden=new Ce}Object.defineProperties(qs.prototype,{length:{get:function(){return this._layers.length}}});qs.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};qs.prototype.addImageryProvider=function(e,t){let n=new is(e);return this.add(n,t),n};qs.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};qs.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};qs.prototype.contains=function(e){return this.indexOf(e)!==-1};qs.prototype.indexOf=function(e){return this._layers.indexOf(e)};qs.prototype.get=function(e){return this._layers[e]};function i5(e,t){return e.indexOf(t)}function Hme(e,t,n){let i=e._layers;if(t=Z.clamp(t,0,i.length-1),n=Z.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}qs.prototype.raise=function(e){let t=i5(this._layers,e);Hme(this,t,t+1)};qs.prototype.lower=function(e){let t=i5(this._layers,e);Hme(this,t,t-1)};qs.prototype.raiseToTop=function(e){let t=i5(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};qs.prototype.lowerToBottom=function(e){let t=i5(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var X7e=new le;function zme(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];le.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],d=c.readyImagery;if(!l(d)||!d.imageryLayer.ready)continue;let u=d.imageryLayer.imageryProvider;if(n&&!l(u.pickFeatures)||!le.contains(d.rectangle,t))continue;let h=X7e,p=1/1024;h.west=Z.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-p),h.east=Z.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+p),h.south=Z.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-p),h.north=Z.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+p),le.contains(h,t)&&i(d)}}qs.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(zme(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};qs.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(zme(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let d=s[c],u=r[c];if(l(d)&&d.length>0)for(let h=0;h<d.length;++h){let p=d[h];p.imageryLayer=u,l(p.position)||(p.position=i),a.push(p)}}return a})};qs.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};qs.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};qs.prototype.isDestroyed=function(){return!1};qs.prototype.destroy=function(){return this.removeAll(!0),me(this)};qs.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var Xx=qs;function Ko(e){e=e??Y.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new M2,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new bl,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new D2,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?X.clone(e.modelMatrix):X.clone(X.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Nh,this._statisticsLast=new Nh,this._statisticsPerPass=new Array(zo.NUMBER_OF_PASSES);for(let o=0;o<zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Nh;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new v2(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=Z.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??ie.WGS84,this._initialClippingPlanesOriginMatrix=X.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new Xx(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??Z.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Gn.ENABLED,this.show=e.show??!0,this.colorBlendMode=ed.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new Hf(e.pointCloudShading),this._pointCloudEyeDomeLighting=new XA,this.loadProgress=new Ce,this.allTilesLoaded=new Ce,this.initialTilesLoaded=new Ce,this.tileLoad=new Ce,this.tileUnload=new Ce,this.tileFailed=new Ce,this.tileVisible=new Ce,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Ws.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&Ih.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new TC,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new ZA(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??U.BLACK,this.splitDirection=e.splitDirection??Ir.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&xt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ko.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){Ih.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return _r("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(X.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):X.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,nhe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ko.fromIonAssetId=async function(e,t){let n=await Nd.fromAssetId(e);return Ko.fromUrl(n,t)};Ko.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ko.loadJson(n),r=await W7e(n,o),s=new Ko(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,nhe(s);let c=l(o.asset.gltfUpAxis)?ho.fromName(o.asset.gltfUpAxis):ho.Y,d=t.modelUpAxis??c,u=t.modelForwardAxis??ho.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=d,s._modelForwardAxis=u,s._root=s.loadTileset(n,o);let p=s._root.createBoundingVolume(o.root.boundingVolume,X.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(p);return l(g)&&g.height>Si._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=Dt.eastNorthUpToFixedFrame(p)),s._clippingPlanesOriginMatrix=X.clone(s._initialClippingPlanesOriginMatrix),s};Ko.loadJson=function(e){return Ve.createIfNeeded(e).fetchJson()};Ko.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ko.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new de("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new de("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ko.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Kme(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===tr.ADD;let d=c._header.children;if(l(d))for(let u=0;u<d.length;++u){let h=d[u],p=Kme(this,e,h,c);c.children.push(p),p._depth=c._depth+1,a.push(p)}this._cullWithChildrenBounds&&W2.checkChildrenWithinParent(c)}return s};function Kme(e,t,n,i){if(!(l(n.implicitTiling)||Ii(n,"3DTILES_implicit_tiling")))return new ym(e,t,n,i);let r=e.schema,s=new Bx(t,n,r),a=new wx({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,u=ke(n,!0);u.contents=[{uri:c}],delete u.content,delete u.extensions;let h=new ym(e,t,u,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function W7e(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Mi.getSchemaLoader({resource:e});else if(l(n.schema))i=Mi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new Gx({schema:i.schema,metadataJson:n});return Mi.unload(i),o}var Jme=new m,F7e=new ge,P7e=new X,M7e=new m,v7e=new m,N7e=new m,D7e=new m;function Q7e(e,t){let n,i,o,r,s,a=t.camera,c=e._root,d=c.contentBoundingVolume;if(d instanceof tu)n=m.normalize(a.positionWC,Jme),i=a.directionWC,o=a.positionCartographic.height,r=d.minimumHeight,s=d.maximumHeight;else{let b=X.inverseTransformation(c.computedTransform,P7e),x=t.mapProjection.ellipsoid,I=d.boundingVolume,_=X.multiplyByPoint(b,I.center,M7e);if(m.magnitude(_)>x.minimumRadius){let E=ge.fromCartesian(_,x,F7e);n=m.normalize(a.positionWC,Jme),i=a.directionWC,o=a.positionCartographic.height,r=0,s=E.height*2}else{let E=X.multiplyByPoint(b,a.positionWC,v7e);if(n=m.UNIT_Z,i=X.multiplyByPointAsVector(b,a.directionWC,N7e),i=m.normalize(i,i),o=E.z,d instanceof hd){let S=$.getColumn(I.halfAxes,2,D7e),R=m.magnitude(S);r=_.z-R,s=_.z+R}else if(d instanceof lg){let S=I.radius;r=_.z-S,s=_.z+S}}}let u=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*u,p=s,g=Z.clamp((o-h)/(p-h),0,1),f=1-Math.abs(m.dot(i,n));f=f*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*f}function U7e(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{$me(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?i6e(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function qme(e,t){return e._priority-t._priority}Ko.prototype.postPassesUpdate=function(e){l(this._root)&&(k7e(this,e),r6e(this,e),this._cache.unloadTiles(this,the),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ko.prototype.prePassesUpdate=function(e){if(!l(this._root))return;j7e(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=j.clone(e.time)),this._timeSinceLoad=Math.max(j.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&Q7e(this,e),e.newFrame&&this._cache.reset()};function k7e(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==ir.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function Y7e(e){let t=e._requestedTiles;t.sort(qme);for(let n=0;n<t.length;++n)U7e(e,t[n])}function $me(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function O7e(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==ir.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var H7e=new ge,z7e=new ge,K7e=new m;function J7e(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=ge.clone(r.positionCartographic,H7e),c=ge.fromCartesian(o.center,s,z7e);l(c)&&(a.height=c.height);let d=ge.toCartesian(a,s,K7e);m.distance(d,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function j7e(e,t){O7e(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let d=n[c];try{d.process(e,t),d.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(d))}catch(u){--r.numberOfTilesProcessing,$me(u,e,d)}}e.totalMemoryUsageInBytes<i?$7e(e):a&&n.length>0&&q7e(e)}function q7e(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(qme)}function $7e(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var o5=new m,e6e={maximumFractionDigits:3};function jme(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,e6e):Math.round(t).toLocaleString()}function VJ(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=m.clone(i,o5);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=m.normalize(i,o5);r=m.multiplyByScalar(r,.75*n,o5),o=m.add(r,i,o5)}return o}function GJ(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${jme(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${jme(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function t6e(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:VJ(e.debugPickedTile),a=GJ(e.debugPickedTile,e,s);a.pixelOffset=new D(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];GJ(a,e,VJ(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&GJ(a,e,VJ(a))}}e._tileDebugLabels.update(t)}function n6e(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new xi({stencil:0,pass:Ge.CESIUM_3D_TILE,renderState:Qe.fromCache({stencilMask:jt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:d}=e,u=n.isRender,h=i.length;for(let f=0;f<s.length;++f){let b=s[f];u&&d.raiseEvent(b),J7e(e,b,t),b.update(e,t,n),c.incrementSelectionCounts(b.content),++c.selected}let p=e._emptyTiles;for(let f=0;f<p.length;++f)p[f].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let f=e._backfaceCommands.values,b=f.length;i.length+=b;for(let x=g-1;x>=0;--x)i[h+b+x]=i[h+x];for(let x=0;x<b;++x)i[h+x]=f[x]}g=i.length-r,c.numberOfCommands=g,u&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new ep),t6e(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var ehe=[];function i6e(e,t){let n=t,i=ehe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&(o6e(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function the(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function o6e(e,t){e._cache.unloadTile(e,t,the),t.destroy()}Ko.prototype.trimLoadedTiles=function(){this._cache.trim()};function r6e(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Nh.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function s6e(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function a6e(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!X.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=X.clone(e.modelMatrix,e._previousModelMatrix)))}function c6e(e,t,n,i){if(t.mode===re.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,s6e(e),a6e(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&Y7e(e),n6e(e,t,i),Nh.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function nhe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Gt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Gt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ko.prototype.getTraversal=function(e){let{pass:t}=e;return t===zo.MOST_DETAILED_PRELOAD||t===zo.MOST_DETAILED_PICK?k2:this.isSkippingLevelOfDetail?J2:H2};Ko.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ko.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=zo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,d=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let p=this._environmentMapManager;l(this._root)&&(p.position=this.boundingSphere.center),p.update(e)}let u=this._clippingPolygons;l(u)&&u.enabled&&u.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=c6e(this,e,h,s)),a&&(c.length=d),e.commandList=i,e.camera=o,e.cullingVolume=r};Ko.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ko.prototype.isDestroyed=function(){return!1};Ko.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=ehe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,me(this)};Ko.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ko.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ko.supportedExtensions[e[t]])throw new de(`Unsupported 3D Tiles Extension: ${e[t]}`)};var l6e=new En,d6e=new m,u6e=new ge;Ko.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=ie.WGS84);let i=l6e,o=n.cartographicToCartesian(e,i.direction);m.normalize(i.direction,i.direction),i.direction=m.normalize(o,i.direction),i.direction=m.negate(o,i.direction),i.origin=m.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,d6e);if(l(r))return n.cartesianToCartographic(r,u6e)?.height};Ko.prototype.updateHeight=function(e,t,n){n=n??ie.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var m6e=new oc,h6e=new m;Ko.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let d=i[c],u=fi.raySphere(e,d.contentBoundingVolume.boundingSphere,m6e);!l(u)||!l(d.content)||r.push(d)}let s=r.length;r.sort((c,d)=>{let u=ue.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=ue.distanceSquaredTo(d.contentBoundingVolume.boundingSphere,e.origin);return u-h});let a;for(let c=0;c<s;++c){let u=r[c].content.pick(e,t,h6e);if(l(u))return a=m.clone(u,n),a}};Ko.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ko.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var Ps=Ko;var f6e=new X;function I0(e,t){t.collectionChanged.addEventListener(I0.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new Bt,this._onCollectionChanged(t,t.values,[],[])}I0.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,d=n[s.id],u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;u&&(h=s.computeModelMatrix(e,f6e),c=Ve.createIfNeeded(z.getValueOrUndefined(a._uri,e)));let p=l(d)?d.tilesetPrimitive:void 0;if(!u){l(p)&&(p.show=!1);continue}(!l(d)||c.url!==d.url)&&(l(p)&&i.removeAndDestroy(p),delete n[s.id],p6e(c,n,s,i)),l(p)&&(p.show=!0,l(h)&&(p.modelMatrix=h),p.maximumScreenSpaceError=z.getValueOrDefault(a.maximumScreenSpaceError,e,p.maximumScreenSpaceError))}return!0};I0.prototype.isDestroyed=function(){return!1};I0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(I0.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)ZJ(this,e[i],t,n);return me(this)};I0.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return At.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(ue.clone(i.boundingSphere,t),At.DONE):At.FAILED:At.PENDING};I0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(ZJ(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],ZJ(this,r,a,c),s.remove(r.id)};function ZJ(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function p6e(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await Ps.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var j2=I0;var nqn=y(C(),1);var A6e=U.WHITE,g6e=U.BLACK,b6e=new D(2,2);function ZT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(ZT.prototype,{isConstant:{get:function(){return z.isConstant(this._evenColor)&&z.isConstant(this._oddColor)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:fe("evenColor"),oddColor:fe("oddColor"),repeat:fe("repeat")});ZT.prototype.getType=function(e){return"Checkerboard"};var y6e=new j;ZT.prototype.getValue=function(e,t){return l(e)||(e=j.now(y6e)),l(t)||(t={}),t.lightColor=z.getValueOrClonedDefault(this._evenColor,e,A6e,t.lightColor),t.darkColor=z.getValueOrClonedDefault(this._oddColor,e,g6e,t.darkColor),t.repeat=z.getValueOrDefault(this._repeat,e,b6e),t};ZT.prototype.equals=function(e){return this===e||e instanceof ZT&&z.equals(this._evenColor,e._evenColor)&&z.equals(this._oddColor,e._oddColor)&&z.equals(this._repeat,e._repeat)};var BT=ZT;var Cqn=y(C(),1);var hqn=y(C(),1);var ihe={id:void 0};function q2(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Dc(e){this._owner=e,this._entities=new Bt,this._addedEntities=new Bt,this._removedEntities=new Bt,this._changedEntities=new Bt,this._suspendCount=0,this._collectionChanged=new Ce,this._id=qn(),this._show=!0,this._firing=!1,this._refire=!1}Dc.prototype.suspendEvents=function(){this._suspendCount++};Dc.prototype.resumeEvents=function(){this._suspendCount--,q2(this)};Object.defineProperties(Dc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Dc.prototype.computeAvailability=function(){let e=ze.MAXIMUM_VALUE,t=ze.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;j.lessThan(a,e)&&!a.equals(ze.MINIMUM_VALUE)&&(e=a),j.greaterThan(c,t)&&!c.equals(ze.MAXIMUM_VALUE)&&(t=c)}}return ze.MAXIMUM_VALUE.equals(e)&&(e=ze.MINIMUM_VALUE),ze.MINIMUM_VALUE.equals(t)&&(t=ze.MAXIMUM_VALUE),new wn({start:e,stop:t})};Dc.prototype.add=function(e){e instanceof ur||(e=new ur(e));let t=e.id,n=this._entities;if(n.contains(t))throw new Ae(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Dc.prototype._onEntityDefinitionChanged,this),q2(this),e};Dc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Dc.prototype.contains=function(e){return this._entities.get(e.id)===e};Dc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Dc.prototype._onEntityDefinitionChanged,this),q2(this),!0):!1};Dc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Dc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),q2(this)};Dc.prototype.getById=function(e){return this._entities.get(e)};Dc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(ihe.id=e,t=new ur(ihe),this.add(t)),t};Dc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),q2(this)};var Ca=Dc;var r5={id:void 0},wT=new Array(2);function BJ(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function ohe(e,t,n,i){wT[0]=n,wT[1]=i.id,t[JSON.stringify(wT)]=i.definitionChanged.addEventListener(rs.prototype._onDefinitionChanged,e)}function rhe(e,t,n,i){wT[0]=n,wT[1]=i.id;let o=JSON.stringify(wT);t[o](),t[o]=void 0}function _0(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,d,u=e._composite,h=new Ca(e),p=e._eventHash,g;for(r=0;r<o;r++)for(d=i[r],d.collectionChanged.removeEventListener(rs.prototype._onCollectionChanged,e),a=d.values,g=d.id,c=a.length-1;c>-1;c--)s=a[c],rhe(e,p,g,s);for(r=n-1;r>=0;r--)for(d=t[r],d.collectionChanged.addEventListener(rs.prototype._onCollectionChanged,e),a=d.values,g=d.id,c=a.length-1;c>-1;c--){s=a[c],ohe(e,p,g,s);let b=h.getById(s.id);l(b)||(b=u.getById(s.id),l(b)?BJ(b):(r5.id=s.id,b=new ur(r5)),h.add(b)),b.merge(s)}e._collectionsCopy=t.slice(0),u.suspendEvents(),u.removeAll();let f=h.values;for(r=0;r<f.length;r++)u.add(f[r]);u.resumeEvents()}function rs(e,t){this._owner=t,this._composite=new Ca(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=qn(),this._eventHash={},_0(this),this._shouldRecomposite=!1}Object.defineProperties(rs.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});rs.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),_0(this)};rs.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),_0(this),!0):!1};rs.prototype.removeAllCollections=function(){this._collections.length=0,_0(this)};rs.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};rs.prototype.contains=function(e){return this._composite.contains(e)};rs.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};rs.prototype.getCollection=function(e){return this._collections[e]};rs.prototype.getCollectionsLength=function(){return this._collections.length};function s5(e,t){return e.indexOf(t)}function she(e,t,n){let i=e._collections;if(t=Z.clamp(t,0,i.length-1),n=Z.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,_0(e)}rs.prototype.raiseCollection=function(e){let t=s5(this._collections,e);she(this,t,t+1)};rs.prototype.lowerCollection=function(e){let t=s5(this._collections,e);she(this,t,t-1)};rs.prototype.raiseCollectionToTop=function(e){let t=s5(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),_0(this))};rs.prototype.lowerCollectionToBottom=function(e){let t=s5(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),_0(this))};rs.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};rs.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(_0(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};rs.prototype.computeAvailability=function(){return this._composite.computeAvailability()};rs.prototype.getById=function(e){return this._composite.getById(e)};rs.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,d,u=n.length,h=this._eventHash,p=e.id;for(s=0;s<u;s++){let f=n[s];rhe(this,h,p,f);let b=f.id;for(a=o-1;a>=0;a--)c=i[a].getById(b),l(c)&&(l(d)||(d=r.getById(b),BJ(d)),d.merge(c));l(d)||r.removeById(b),d=void 0}let g=t.length;for(s=0;s<g;s++){let f=t[s];ohe(this,h,p,f);let b=f.id;for(a=o-1;a>=0;a--)c=i[a].getById(b),l(c)&&(l(d)||(d=r.getById(b),l(d)?BJ(d):(r5.id=b,d=new ur(r5),r.add(d))),d.merge(c));d=void 0}r.resumeEvents()};rs.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),d=c[t],u=!l(d),h=!0;for(let p=s-1;p>=0;p--){let g=o[p].getById(e.id);if(l(g)){let f=g[t];if(l(f)){if(h)if(h=!1,l(f.merge)&&l(f.clone))d=f.clone(d);else{d=f;break}d.merge(f)}}}u&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=d};var wJ=rs;var zqn=y(C(),1);var Dqn=y(C(),1);var Iqn=y(C(),1);function XJ(){this._removalFunctions=[]}XJ.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};XJ.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Lr=XJ;var wqn=y(C(),1);function PJ(e,t){return j.compare(e.start,t.start)}function ss(e){if(this._intervals=[],this._changedEvent=new Ce,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(ss.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});ss.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof ss))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!wn.equals(n[r],i[r],t))return!1;return!0};ss.prototype.get=function(e){return this._intervals[e]};ss.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};ss.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};ss.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};ss.prototype.contains=function(e){return this.indexOf(e)>=0};var WJ=new wn;ss.prototype.indexOf=function(e){let t=this._intervals;WJ.start=e,WJ.stop=e;let n=Yo(t,WJ,PJ);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&wn.contains(t[n-1],e)?n-1:~n)};ss.prototype.findInterval=function(e){e=e??Y.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};ss.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||j.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=Yo(n,e,PJ);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=j.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(j.greaterThan(e.stop,n[i-1].stop)?e=new wn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new wn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=j.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new wn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new wn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=j.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new wn({start:e.start,stop:j.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:j.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new wn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};ss.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=Yo(t,e,PJ);n<0&&(n=~n);let i=!1;for(n>0&&(j.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(j.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new wn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new wn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new wn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&j.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new wn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new wn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(j.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new wn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};ss.prototype.intersect=function(e,t,n){let i=new ss,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],d=a[r];if(j.lessThan(c.stop,d.start))++o;else if(j.lessThan(d.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,d.data)||!l(t)&&d.data===c.data){let u=wn.intersect(c,d,new wn,n);u.isEmpty||i.addInterval(u,t)}j.lessThan(c.stop,d.stop)||c.stop.equals(d.stop)&&!c.isStopIncluded&&d.isStopIncluded?++o:++r}}return i};ss.fromJulianDateArray=function(e,t){l(t)||(t=new ss);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,d,u=0;a&&(++u,d=new wn({start:ze.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d));for(let h=0;h<i-1;++h){let p=n[h],g=n[h+1];d=new wn({start:p,stop:g,isStartIncluded:t.length===u?r:!0,isStopIncluded:h===i-2?s:!1}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d),p=g}return c&&(d=new wn({start:n[i-1],stop:ze.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d)),t};var Qc=new Yp,$2=[0,31,28,31,30,31,30,31,31,30,31,30,31];function FJ(e,t,n){l(n)||(n=new j),j.toGregorianDate(e,Qc);let i=Qc.millisecond+t.millisecond,o=Qc.second+t.second,r=Qc.minute+t.minute,s=Qc.hour+t.hour,a=Qc.day+t.day,c=Qc.month+t.month,d=Qc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),$2[2]=qm(d)?29:28;a>$2[c]||c>=13;)a>$2[c]&&(a-=$2[c],++c),c>=13&&(--c,d+=Math.floor(c/12),c=c%12,++c),$2[2]=qm(d)?29:28;return Qc.millisecond=i,Qc.second=o,Qc.minute=r,Qc.hour=s,Qc.day=a,Qc.month=c,Qc.year=d,j.fromGregorianDate(Qc,n)}var C6e=new j,x6e=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function ahe(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(x6e);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),j.toGregorianDate(j.fromIso8601(e,C6e),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var eW=new Yp;ss.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=j.fromIso8601(n[0]),o=j.fromIso8601(n[1]),r=[];if(!ahe(n[2],eW))r.push(i,o);else{let s=j.clone(i);for(r.push(s);j.compare(s,o)<0;)s=FJ(s,eW),j.compare(o,s)<=0&&j.clone(o,s),r.push(s)}return ss.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ss.fromIso8601DateArray=function(e,t){return ss.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return j.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ss.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let d=0;d<c;++d)(ahe(i[d],eW)||d===0)&&(o&&l(a)?s=FJ(a,eW):s=FJ(n,eW),r.push(s),a=s);return ss.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var as=ss;function I6e(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function Wx(){this._eventHelper=new Lr,this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Wx.prototype._intervalsChanged,this)}Object.defineProperties(Wx.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var _6e=new j;Wx.prototype.getValue=function(e,t){l(e)||(e=j.now(_6e));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};Wx.prototype.equals=function(e){return this===e||e instanceof Wx&&this._intervals.equals(e._intervals,z.equals)};Wx.prototype._intervalsChanged=function(){I6e(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var Uc=Wx;function E0(){this._definitionChanged=new Ce,this._composite=new Uc,this._composite.definitionChanged.addEventListener(E0.prototype._raiseDefinitionChanged,this)}Object.defineProperties(E0.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});E0.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var E6e=new j;E0.prototype.getValue=function(e,t){l(e)||(e=j.now(E6e));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};E0.prototype.equals=function(e){return this===e||e instanceof E0&&this._composite.equals(e._composite,z.equals)};E0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var XT=E0;var n$n=y(C(),1);function T0(e){this._referenceFrame=e??eo.FIXED,this._definitionChanged=new Ce,this._composite=new Uc,this._composite.definitionChanged.addEventListener(T0.prototype._raiseDefinitionChanged,this)}Object.defineProperties(T0.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var T6e=new j;T0.prototype.getValue=function(e,t){return l(e)||(e=j.now(T6e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};T0.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};T0.prototype.equals=function(e){return this===e||e instanceof T0&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,z.equals)};T0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var ka=T0;var jei=y(C(),1);var j$n=y(C(),1);var o$n=y(C(),1),S6e={ROUNDED:0,MITERED:1,BEVELED:2},Hi=Object.freeze(S6e);var V$n=y(C(),1);var y$n=y(C(),1);var Ya=[new m,new m],L6e=new m,R6e=new m,V6e=new m,G6e=new m,Z6e=new m,B6e=new m,w6e=new m,X6e=new m,W6e=new m,WT=new m,a5=new m,tW={},MJ=new ge;function F6e(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];MJ=t.cartesianToCartographic(o,MJ),n[i]=MJ.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function vJ(e,t,n,i){let o=e[0],r=e[1],s=m.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),d;if(t===n){for(d=0;d<a;d++)c[d]=t;return c.push(n),c}let h=(n-t)/a;for(d=1;d<a;d++){let p=t+d*h;c[d]=p}return c[0]=t,c.push(n),c}var c5=new m,l5=new m;function P6e(e,t,n,i){let o=new gs(n,i),r=o.projectPointOntoPlane(m.add(n,e,c5),c5),s=o.projectPointOntoPlane(m.add(n,t,l5),l5),a=D.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var M6e=new m(-1,0,0),Fx=new X,v6e=new X,NJ=new $,N6e=$.IDENTITY.clone(),D6e=new m,Q6e=new ce,che=new m;function fg(e,t,n,i,o,r,s,a){let c=D6e,d=Q6e;Fx=Dt.eastNorthUpToFixedFrame(e,o,Fx),c=X.multiplyByPointAsVector(Fx,M6e,c),c=m.normalize(c,c);let u=P6e(c,t,e,o);NJ=$.fromRotationZ(u,NJ),che.z=r,Fx=X.multiplyTransformation(Fx,X.fromRotationTranslation(NJ,che,v6e),Fx);let h=N6e;h[0]=s;for(let p=0;p<a;p++)for(let g=0;g<n.length;g+=3)d=m.fromArray(n,g,d),d=$.multiplyByVector(h,d,d),d=X.multiplyByPoint(Fx,d,d),i.push(d.x,d.y,d.z);return i}var U6e=new m;function DJ(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=m.fromArray(e,a,U6e);i=fg(c,t,n,i,o,r[a/3],s,1)}return i}function k6e(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let d=a.x-r,u=a.y-s;i[o++]=d,i[o++]=0,i[o++]=u,i[o++]=d,i[o++]=0,i[o++]=u}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function lhe(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var dhe=new Pe,uhe=new m,mhe=new $;function hhe(e,t,n,i,o,r,s,a,c,d){let u=m.angleBetween(m.subtract(t,e,WT),m.subtract(n,e,a5)),h=i===Hi.BEVELED?0:Math.ceil(u/Z.toRadians(5)),p;o?p=$.fromQuaternion(Pe.fromAxisAngle(m.negate(e,WT),u/(h+1),dhe),mhe):p=$.fromQuaternion(Pe.fromAxisAngle(e,u/(h+1),dhe),mhe);let g,f;if(t=m.clone(t,uhe),h>0){let b=d?2:1;for(let x=0;x<h;x++)t=$.multiplyByVector(p,t,t),g=m.subtract(t,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(t,a5),s=fg(f,g,a,s,r,c,1,b)}else g=m.subtract(t,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(t,a5),s=fg(f,g,a,s,r,c,1,1),n=m.clone(n,uhe),g=m.subtract(n,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(n,a5),s=fg(f,g,a,s,r,c,1,1);return s}tW.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];D.equals(r,s)||n.push(s)}return n};tW.angleIsGreaterThanPi=function(e,t,n,i){let o=new gs(n,i),r=o.projectPointOntoPlane(m.add(n,e,c5),c5),s=o.projectPointOntoPlane(m.add(n,t,l5),l5);return s.x*r.y-s.y*r.x>=0};var Y6e=new m,O6e=new m;tW.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=F6e(e,r),a=i._granularity,c=i._cornerType,d=o?k6e(t,n):lhe(t,n),u=o?lhe(t,n):void 0,h=n.height/2,p=n.width/2,g=e.length,f=[],b=o?[]:void 0,x=L6e,I=R6e,_=V6e,E=G6e,S=Z6e,R=B6e,G=w6e,B=X6e,w=W6e,F=e[0],P=e[1];E=r.geodeticSurfaceNormal(F,E),x=m.subtract(P,F,x),x=m.normalize(x,x),B=m.cross(E,x,B),B=m.normalize(B,B);let A=s[0],T=s[1];o&&(b=fg(F,B,u,b,r,A+h,1,1)),w=m.clone(F,w),F=P,I=m.negate(x,I);let L,V;for(let Q=1;Q<g-1;Q++){let N=o?2:1;if(P=e[Q+1],F.equals(P)){xt("Positions are too close and are considered equivalent with rounding error.");continue}x=m.subtract(P,F,x),x=m.normalize(x,x),E=r.geodeticSurfaceNormal(F,E);let k=m.multiplyByScalar(E,m.dot(x,E),Y6e);m.subtract(x,k,k),m.normalize(k,k);let v=m.multiplyByScalar(E,m.dot(I,E),O6e);if(m.subtract(I,v,v),m.normalize(v,v),!Z.equalsEpsilon(Math.abs(m.dot(k,v)),1,Z.EPSILON7)){_=m.add(x,I,_),_=m.normalize(_,_),_=m.cross(_,E,_),_=m.cross(E,_,_),_=m.normalize(_,_);let H=1/Math.max(.25,m.magnitude(m.cross(_,I,WT))),ee=tW.angleIsGreaterThanPi(x,I,F,r);ee?(S=m.add(F,m.multiplyByScalar(_,H*p,_),S),R=m.add(S,m.multiplyByScalar(B,p,R),R),Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(R,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),B=m.cross(E,x,B),B=m.normalize(B,B),G=m.add(S,m.multiplyByScalar(B,p,G),G),c===Hi.ROUNDED||c===Hi.BEVELED?hhe(S,R,G,c,ee,r,f,d,T+h,o):(_=m.negate(_,_),f=fg(F,_,d,f,r,T+h,H,N)),w=m.clone(G,w)):(S=m.add(F,m.multiplyByScalar(_,H*p,_),S),R=m.add(S,m.multiplyByScalar(B,-p,R),R),Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(R,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),B=m.cross(E,x,B),B=m.normalize(B,B),G=m.add(S,m.multiplyByScalar(B,-p,G),G),c===Hi.ROUNDED||c===Hi.BEVELED?hhe(S,R,G,c,ee,r,f,d,T+h,o):f=fg(F,_,d,f,r,T+h,H,N),w=m.clone(G,w)),I=m.negate(x,I)}else f=fg(w,B,d,f,r,A+h,1,1),w=F;A=T,T=s[Q+1],F=P}Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(F,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),o&&(b=fg(F,B,u,b,r,T+h,1,1)),g=f.length;let W=o?g+b.length:g,M=new Float64Array(W);return M.set(f),o&&M.set(b,g),M};var Dh=tW;var UJ={},FT=new m,bhe=new m,H6e=new m,fhe=new m,Zl=[new m,new m],yhe=new m,Che=new m,xhe=new m,z6e=new m,K6e=new m,J6e=new m,j6e=new m,q6e=new m,$6e=new m,eqe=new m,phe=new Pe,Ahe=new $;function d5(e,t,n,i,o){let r=m.angleBetween(m.subtract(t,e,FT),m.subtract(n,e,bhe)),s=i===Hi.BEVELED?1:Math.ceil(r/Z.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let d;o?d=$.fromQuaternion(Pe.fromAxisAngle(m.negate(e,FT),r/s,phe),Ahe):d=$.fromQuaternion(Pe.fromAxisAngle(e,r/s,phe),Ahe);let u=0;t=m.clone(t,FT);for(let h=0;h<s;h++)t=$.multiplyByVector(d,t,t),c[u++]=t.x,c[u++]=t.y,c[u++]=t.z;return c}function tqe(e){let t=yhe,n=Che,i=xhe,o=e[1];n=m.fromArray(e[1],o.length-3,n),i=m.fromArray(e[0],0,i),t=m.midpoint(n,i,t);let r=d5(t,n,i,Hi.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=m.fromArray(a,a.length-3,n),i=m.fromArray(o,0,i),t=m.midpoint(n,i,t);let c=d5(t,n,i,Hi.ROUNDED,!1);return[r,c]}function ghe(e,t,n,i){let o=FT;return i?o=m.add(e,t,o):(t=m.negate(t,t),o=m.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function QJ(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=m.multiplyByScalar(t,n,FT),a=m.negate(s,bhe),c=0,d=e.length-1;for(let u=0;u<e.length;u+=3){let h=m.fromArray(e,u,H6e),p=m.add(h,a,fhe);o[c++]=p.x,o[c++]=p.y,o[c++]=p.z;let g=m.add(h,s,fhe);r[d--]=g.z,r[d--]=g.y,r[d--]=g.x}return i.push(o,r),i}UJ.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var nqe=new m,iqe=new m;UJ.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=yhe,c=Che,d=xhe,u=z6e,h=K6e,p=J6e,g=j6e,f=q6e,b=$6e,x=eqe,I=[],_=s?[]:void 0,E=s?[]:void 0,S=n[0],R=n[1];c=m.normalize(m.subtract(R,S,c),c),a=i.geodeticSurfaceNormal(S,a),u=m.normalize(m.cross(a,c,u),u),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),g=m.clone(S,g),S=R,d=m.negate(c,d);let G,B=[],w,F=n.length;for(w=1;w<F-1;w++){a=i.geodeticSurfaceNormal(S,a),R=n[w+1],c=m.normalize(m.subtract(R,S,c),c);let A=m.multiplyByScalar(a,m.dot(c,a),nqe);m.subtract(c,A,A),m.normalize(A,A);let T=m.multiplyByScalar(a,m.dot(d,a),iqe);if(m.subtract(d,T,T),m.normalize(T,T),!Z.equalsEpsilon(Math.abs(m.dot(A,T)),1,Z.EPSILON7)){h=m.normalize(m.add(c,d,h),h),h=m.cross(h,a,h),h=m.cross(a,h,h),h=m.normalize(h,h);let V=o/Math.max(.25,m.magnitude(m.cross(h,d,FT))),W=Dh.angleIsGreaterThanPi(c,d,S,i);h=m.multiplyByScalar(h,V,h),W?(f=m.add(S,h,f),x=m.add(f,m.multiplyByScalar(u,o,x),x),b=m.add(f,m.multiplyByScalar(u,o*2,b),b),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(x,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),p=m.clone(b,p),u=m.normalize(m.cross(a,c,u),u),b=m.add(f,m.multiplyByScalar(u,o*2,b),b),g=m.add(f,m.multiplyByScalar(u,o,g),g),r===Hi.ROUNDED||r===Hi.BEVELED?B.push({leftPositions:d5(f,p,b,r,W)}):B.push({leftPositions:ghe(S,m.negate(h,h),b,W)})):(b=m.add(S,h,b),x=m.add(b,m.negate(m.multiplyByScalar(u,o,x),x),x),f=m.add(b,m.negate(m.multiplyByScalar(u,o*2,f),f),f),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(x,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),p=m.clone(f,p),u=m.normalize(m.cross(a,c,u),u),f=m.add(b,m.negate(m.multiplyByScalar(u,o*2,f),f),f),g=m.add(b,m.negate(m.multiplyByScalar(u,o,g),g),g),r===Hi.ROUNDED||r===Hi.BEVELED?B.push({rightPositions:d5(b,p,f,r,W)}):B.push({rightPositions:ghe(S,h,f,W)})),d=m.negate(c,d)}S=R}a=i.geodeticSurfaceNormal(S,a),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(S,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z));let P;return r===Hi.ROUNDED&&(P=tqe(I)),{positions:I,corners:B,lefts:_,normals:E,endPositions:P}};var io=UJ;var Ehe=new m,The=new m,u5=new m,m5=new m,oqe=new m,She=new m,S0=new m,PT=new m;function Lhe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Qh(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,d=m.normalize(m.cross(n,t,S0),S0);r.normal&&io.addAttribute(s,t,i,o),r.tangent&&io.addAttribute(a,d,i,o),r.bitangent&&io.addAttribute(c,n,i,o)}function Rhe(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new xn,d,u=0,h=0,p,g=0,f;for(p=0;p<i.length;p+=2)f=i[p].length-3,u+=f,g+=f*2,h+=i[p+1].length-3;for(u+=3,h+=3,p=0;p<o.length;p++){d=o[p];let q=o[p].leftPositions;l(q)?(f=q.length,u+=f,g+=f):(f=o[p].rightPositions.length,h+=f,g+=f)}let b=l(r),x;b&&(x=r[0].length-3,u+=x,h+=x,x/=3,g+=x*6);let I=u+h,_=new Float64Array(I),E=t.normal?new Float32Array(I):void 0,S=t.tangent?new Float32Array(I):void 0,R=t.bitangent?new Float32Array(I):void 0,G={normals:E,tangents:S,bitangents:R},B=0,w=I-1,F,P,A,T,L=Ehe,V=The,W,M,Q=x/2,N=Me.createTypedArray(I/3,g),k=0;if(b){M=u5,W=m5;let q=r[0];for(L=m.fromArray(a,0,L),V=m.fromArray(s,0,V),p=0;p<Q;p++)M=m.fromArray(q,(Q-1-p)*3,M),W=m.fromArray(q,(Q+p)*3,W),io.addAttribute(_,W,B),io.addAttribute(_,M,void 0,w),Qh(G,L,V,B,w,t),P=B/3,T=P+1,F=(w-2)/3,A=F-1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3}let v=0,O=0,H=i[v++],ee=i[v++];_.set(H,B),_.set(ee,w-ee.length+1),V=m.fromArray(s,O,V);let K,te;for(f=ee.length-3,p=0;p<f;p+=3)K=n.geodeticSurfaceNormal(m.fromArray(H,p,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f-p,PT),PT),L=m.normalize(m.add(K,te,L),L),Qh(G,L,V,B,w,t),P=B/3,T=P+1,F=(w-2)/3,A=F-1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3;for(K=n.geodeticSurfaceNormal(m.fromArray(H,f,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f,PT),PT),L=m.normalize(m.add(K,te,L),L),O+=3,p=0;p<o.length;p++){let q;d=o[p];let pe=d.leftPositions,ye=d.rightPositions,he,xe,Te=She,Be=u5,Le=m5;if(L=m.fromArray(a,O,L),l(pe)){for(Qh(G,L,V,void 0,w,t),w-=3,he=T,xe=A,q=0;q<pe.length/3;q++)Te=m.fromArray(pe,q*3,Te),N[k++]=he,N[k++]=xe-q-1,N[k++]=xe-q,io.addAttribute(_,Te,void 0,w),Be=m.fromArray(_,(xe-q-1)*3,Be),Le=m.fromArray(_,he*3,Le),V=m.normalize(m.subtract(Be,Le,V),V),Qh(G,L,V,void 0,w,t),w-=3;Te=m.fromArray(_,he*3,Te),Be=m.subtract(m.fromArray(_,xe*3,Be),Te,Be),Le=m.subtract(m.fromArray(_,(xe-q)*3,Le),Te,Le),V=m.normalize(m.add(Be,Le,V),V),Qh(G,L,V,B,void 0,t),B+=3}else{for(Qh(G,L,V,B,void 0,t),B+=3,he=A,xe=T,q=0;q<ye.length/3;q++)Te=m.fromArray(ye,q*3,Te),N[k++]=he,N[k++]=xe+q,N[k++]=xe+q+1,io.addAttribute(_,Te,B),Be=m.fromArray(_,he*3,Be),Le=m.fromArray(_,(xe+q)*3,Le),V=m.normalize(m.subtract(Be,Le,V),V),Qh(G,L,V,B,void 0,t),B+=3;Te=m.fromArray(_,he*3,Te),Be=m.subtract(m.fromArray(_,(xe+q)*3,Be),Te,Be),Le=m.subtract(m.fromArray(_,xe*3,Le),Te,Le),V=m.normalize(m.negate(m.add(Le,Be,V),V),V),Qh(G,L,V,void 0,w,t),w-=3}for(H=i[v++],ee=i[v++],H.splice(0,3),ee.splice(ee.length-3,3),_.set(H,B),_.set(ee,w-ee.length+1),f=ee.length-3,O+=3,V=m.fromArray(s,O,V),q=0;q<ee.length;q+=3)K=n.geodeticSurfaceNormal(m.fromArray(H,q,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f-q,PT),PT),L=m.normalize(m.add(K,te,L),L),Qh(G,L,V,B,w,t),T=B/3,P=T-1,A=(w-2)/3,F=A+1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3;B-=3,w+=3}if(L=m.fromArray(a,a.length-3,L),Qh(G,L,V,B,w,t),b){B+=3,w-=3,M=u5,W=m5;let q=r[1];for(p=0;p<Q;p++)M=m.fromArray(q,(x-p-1)*3,M),W=m.fromArray(q,p*3,W),io.addAttribute(_,M,void 0,w),io.addAttribute(_,W,B),Qh(G,L,V,B,w,t),T=B/3,P=T-1,A=(w-2)/3,F=A+1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3}if(c.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:_}),t.st){let q=new Float32Array(I/3*2),pe,ye,he=0;if(b){u/=3,h/=3;let xe=Math.PI/(x+1);ye=1/(u-x+1),pe=1/(h-x+1);let Te,Be=x/2;for(p=Be+1;p<x+1;p++)Te=Z.PI_OVER_TWO+xe*p,q[he++]=pe*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=1;p<h-x+1;p++)q[he++]=p*pe,q[he++]=0;for(p=x;p>Be;p--)Te=Z.PI_OVER_TWO-p*xe,q[he++]=1-pe*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=Be;p>0;p--)Te=Z.PI_OVER_TWO-xe*p,q[he++]=1-ye*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=u-x;p>0;p--)q[he++]=p*ye,q[he++]=1;for(p=1;p<Be+1;p++)Te=Z.PI_OVER_TWO+xe*p,q[he++]=ye*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te))}else{for(u/=3,h/=3,ye=1/(u-1),pe=1/(h-1),p=0;p<h;p++)q[he++]=p*pe,q[he++]=0;for(p=u;p>0;p--)q[he++]=(p-1)*ye,q[he++]=1}c.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:q})}return t.normal&&(c.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.normals})),t.tangent&&(c.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.tangents})),t.bitangent&&(c.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.bitangents})),{attributes:c,indices:N}}function rqe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,d;if(t.normal||t.bitangent||t.tangent){let u=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,p=t.bitangent?new Float32Array(s*6):void 0,g=Ehe,f=The,b=u5,x=m5,I=oqe,_=She,E=c;for(d=0;d<s;d+=3){let S=E+c;g=m.fromArray(n,d,g),f=m.fromArray(n,d+s,f),b=m.fromArray(n,(d+3)%s,b),f=m.subtract(f,g,f),b=m.subtract(b,g,b),x=m.normalize(m.cross(f,b,x),x),t.normal&&(io.addAttribute(u,x,S),io.addAttribute(u,x,S+3),io.addAttribute(u,x,E),io.addAttribute(u,x,E+3)),(t.tangent||t.bitangent)&&(_=m.fromArray(i,d,_),t.bitangent&&(io.addAttribute(p,_,S),io.addAttribute(p,_,S+3),io.addAttribute(p,_,E),io.addAttribute(p,_,E+3)),t.tangent&&(I=m.normalize(m.cross(_,x,I),I),io.addAttribute(h,I,S),io.addAttribute(h,I,S+3),io.addAttribute(h,I,E),io.addAttribute(h,I,E+3))),E+=6}if(t.normal){for(u.set(i),d=0;d<s;d+=3)u[d+s]=-i[d],u[d+s+1]=-i[d+1],u[d+s+2]=-i[d+2];e.normal.values=u}else e.normal=void 0;if(t.bitangent?(p.set(o),p.set(o,s),e.bitangent.values=p):e.bitangent=void 0,t.tangent){let S=e.tangent.values;h.set(S),h.set(S,s),e.tangent.values=h}}if(t.st){let u=e.st.values,h=new Float32Array(a*6);h.set(u),h.set(u,a);let p=a*2;for(let g=0;g<2;g++){for(h[p++]=u[0],h[p++]=u[1],d=2;d<a;d+=2){let f=u[d],b=u[d+1];h[p++]=f,h[p++]=b,h[p++]=f,h[p++]=b}h[p++]=u[0],h[p++]=u[1]}e.st.values=h}return e}function kJ(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function sqe(e,t){let n=new we({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=io.computePositions(e),r=Rhe(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,d=r.indices,u=c.position.values,h=u.length,p=new Float64Array(h*6),g=new Float64Array(h);g.set(u);let f=new Float64Array(h*4);u=_i.scaleToGeodeticHeight(u,s,i),f=kJ(u,0,f),g=_i.scaleToGeodeticHeight(g,a,i),f=kJ(g,h*2,f),p.set(u),p.set(g,h),p.set(f,h*2),c.position.values=p,c=rqe(c,t);let b,x=h/3;if(e.shadowVolume){let F=c.normal.values;h=F.length;let P=new Float32Array(h*6);for(b=0;b<h;b++)F[b]=-F[b];P.set(F,h),P=kJ(F,h*4,P),c.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:P}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let F=new Uint8Array(x*6);if(e.offsetAttribute===pn.TOP)F=F.fill(1,0,x).fill(1,x*2,x*4);else{let P=e.offsetAttribute===pn.NONE?0:1;F=F.fill(P)}c.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:F})}let I=d.length,_=x+x,E=Me.createTypedArray(p.length/3,I*2+_*3);E.set(d);let S=I;for(b=0;b<I;b+=3){let F=d[b],P=d[b+1],A=d[b+2];E[S++]=A+x,E[S++]=P+x,E[S++]=F+x}let R,G,B,w;for(b=0;b<_;b+=2)R=b+_,G=R+_,B=R+1,w=G+1,E[S++]=R,E[S++]=G,E[S++]=B,E[S++]=B,E[S++]=G,E[S++]=w;return{attributes:c,indices:E}}var Ihe=new m,nW=new m,xm=new ge;function _he(e,t,n,i,o,r){let s=m.subtract(t,e,Ihe);m.normalize(s,s);let a=n.geodeticSurfaceNormal(e,nW),c=m.cross(s,a,Ihe);m.multiplyByScalar(c,i,c);let d=o.latitude,u=o.longitude,h=r.latitude,p=r.longitude;m.add(e,c,nW),n.cartesianToCartographic(nW,xm);let g=xm.latitude,f=xm.longitude;d=Math.min(d,g),u=Math.min(u,f),h=Math.max(h,g),p=Math.max(p,f),m.subtract(e,c,nW),n.cartesianToCartographic(nW,xm),g=xm.latitude,f=xm.longitude,d=Math.min(d,g),u=Math.min(u,f),h=Math.max(h,g),p=Math.max(p,f),o.latitude=d,o.longitude=u,r.latitude=h,r.longitude=p}var Cm=new m,iW=new m,fd=new ge,pd=new ge;function Vhe(e,t,n,i,o){e=Lhe(e,t);let r=Xo(e,m.equalsEpsilon),s=r.length;if(s<2||n<=0)return new le;let a=n*.5;fd.latitude=Number.POSITIVE_INFINITY,fd.longitude=Number.POSITIVE_INFINITY,pd.latitude=Number.NEGATIVE_INFINITY,pd.longitude=Number.NEGATIVE_INFINITY;let c,d;if(i===Hi.ROUNDED){let p=r[0];m.subtract(p,r[1],Cm),m.normalize(Cm,Cm),m.multiplyByScalar(Cm,a,Cm),m.add(p,Cm,iW),t.cartesianToCartographic(iW,xm),c=xm.latitude,d=xm.longitude,fd.latitude=Math.min(fd.latitude,c),fd.longitude=Math.min(fd.longitude,d),pd.latitude=Math.max(pd.latitude,c),pd.longitude=Math.max(pd.longitude,d)}for(let p=0;p<s-1;++p)_he(r[p],r[p+1],t,a,fd,pd);let u=r[s-1];m.subtract(u,r[s-2],Cm),m.normalize(Cm,Cm),m.multiplyByScalar(Cm,a,Cm),m.add(u,Cm,iW),_he(u,iW,t,a,fd,pd),i===Hi.ROUNDED&&(t.cartesianToCartographic(iW,xm),c=xm.latitude,d=xm.longitude,fd.latitude=Math.min(fd.latitude,c),fd.longitude=Math.min(fd.longitude,d),pd.latitude=Math.max(pd.latitude,c),pd.longitude=Math.max(pd.longitude,d));let h=l(o)?o:new le;return h.north=pd.latitude,h.south=fd.latitude,h.east=pd.longitude,h.west=fd.longitude,h}function Ag(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*m.packedLength+ie.packedLength+we.packedLength+7}Ag.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=m.packedLength)m.pack(i[r],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var Ghe=ie.clone(ie.UNIT_SPHERE),Zhe=new we,pg={positions:void 0,ellipsoid:Ghe,vertexFormat:Zhe,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Ag.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let f=0;f<i;++f,t+=m.packedLength)o[f]=m.unpack(e,t);let r=ie.unpack(e,t,Ghe);t+=ie.packedLength;let s=we.unpack(e,t,Zhe);t+=we.packedLength;let a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=ie.clone(r,n._ellipsoid),n._vertexFormat=we.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=d,n._cornerType=u,n._granularity=h,n._shadowVolume=p,n._offsetAttribute=g===-1?void 0:g,n):(pg.positions=o,pg.width=a,pg.height=c,pg.extrudedHeight=d,pg.cornerType=u,pg.granularity=h,pg.shadowVolume=p,pg.offsetAttribute=g===-1?void 0:g,new Ag(pg))};Ag.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??ie.default,r=e.cornerType??Hi.ROUNDED;return Vhe(n,o,i,r,t)};Ag.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=Lhe(t,i);let o=Xo(t,m.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!Z.equalsEpsilon(r,s,0,Z.EPSILON2),c=e._vertexFormat,d={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},u;if(a)d.height=r,d.extrudedHeight=s,d.shadowVolume=e._shadowVolume,d.offsetAttribute=e._offsetAttribute,u=sqe(d,c);else{let g=io.computePositions(d);if(u=Rhe(g,c,i),u.attributes.position.values=_i.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let f=e._offsetAttribute===pn.NONE?0:1,b=u.attributes.position.values.length,x=new Uint8Array(b/3).fill(f);u.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}}let h=u.attributes,p=ue.fromVertices(h.position.values,void 0,3);return c.position||(u.attributes.position.values=void 0),new pt({attributes:h,indices:u.indices,primitiveType:We.TRIANGLES,boundingSphere:p,offsetAttribute:e._offsetAttribute})};Ag.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Ag({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Ag.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Vhe(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var Px=Ag;var Aei=y(C(),1);var Bhe=new m,whe=new m,aqe=new m;function cqe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Xhe(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new xn,a,c=0,d=0,u,h=0,p;for(u=0;u<i.length;u+=2)p=i[u].length-3,c+=p,h+=p/3*4,d+=i[u+1].length-3;for(c+=3,d+=3,u=0;u<o.length;u++){a=o[u];let W=o[u].leftPositions;l(W)?(p=W.length,c+=p,h+=p/3*2):(p=o[u].rightPositions.length,d+=p,h+=p/3*2)}let g=l(r),f;g&&(f=r[0].length-3,c+=f,d+=f,f/=3,h+=f*4);let b=c+d,x=new Float64Array(b),I=0,_=b-1,E,S,R,G,B,w,F=f/2,P=Me.createTypedArray(b/3,h+4),A=0;if(P[A++]=I/3,P[A++]=(_-2)/3,g){n.push(I/3),w=Bhe,B=whe;let W=r[0];for(u=0;u<F;u++)w=m.fromArray(W,(F-1-u)*3,w),B=m.fromArray(W,(F+u)*3,B),io.addAttribute(x,B,I),io.addAttribute(x,w,void 0,_),S=I/3,G=S+1,E=(_-2)/3,R=E-1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3}let T=0,L=i[T++],V=i[T++];for(x.set(L,I),x.set(V,_-V.length+1),p=V.length-3,n.push(I/3,(_-2)/3),u=0;u<p;u+=3)S=I/3,G=S+1,E=(_-2)/3,R=E-1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;for(u=0;u<o.length;u++){let W;a=o[u];let M=a.leftPositions,Q=a.rightPositions,N,k=aqe;if(l(M)){for(_-=3,N=R,n.push(G),W=0;W<M.length/3;W++)k=m.fromArray(M,W*3,k),P[A++]=N-W-1,P[A++]=N-W,io.addAttribute(x,k,void 0,_),_-=3;n.push(N-Math.floor(M.length/6)),t===Hi.BEVELED&&n.push((_-2)/3+1),I+=3}else{for(I+=3,N=G,n.push(R),W=0;W<Q.length/3;W++)k=m.fromArray(Q,W*3,k),P[A++]=N+W,P[A++]=N+W+1,io.addAttribute(x,k,I),I+=3;n.push(N+Math.floor(Q.length/6)),t===Hi.BEVELED&&n.push(I/3-1),_-=3}for(L=i[T++],V=i[T++],L.splice(0,3),V.splice(V.length-3,3),x.set(L,I),x.set(V,_-V.length+1),p=V.length-3,W=0;W<V.length;W+=3)G=I/3,S=G-1,R=(_-2)/3,E=R+1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;I-=3,_+=3,n.push(I/3,(_-2)/3)}if(g){I+=3,_-=3,w=Bhe,B=whe;let W=r[1];for(u=0;u<F;u++)w=m.fromArray(W,(f-u-1)*3,w),B=m.fromArray(W,u*3,B),io.addAttribute(x,w,void 0,_),io.addAttribute(x,B,I),G=I/3,S=G-1,R=(_-2)/3,E=R+1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;n.push(I/3)}else n.push(I/3,(_-2)/3);return P[A++]=I/3,P[A++]=(_-2)/3,s.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x}),{attributes:s,indices:P,wallIndices:n}}function lqe(e){let t=e.ellipsoid,n=io.computePositions(e),i=Xhe(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,d=a.position.values,u=d.length,h=new Float64Array(u);h.set(d);let p=new Float64Array(u*2);if(d=_i.scaleToGeodeticHeight(d,r,t),h=_i.scaleToGeodeticHeight(h,s,t),p.set(d),p.set(h,u),a.position.values=p,u/=3,l(e.offsetAttribute)){let E=new Uint8Array(u*2);if(e.offsetAttribute===pn.TOP)E=E.fill(1,0,u);else{let S=e.offsetAttribute===pn.NONE?0:1;E=E.fill(S)}a.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}let g,f=c.length,b=Me.createTypedArray(p.length/3,(f+o.length)*2);b.set(c);let x=f;for(g=0;g<f;g+=2){let E=c[g],S=c[g+1];b[x++]=E+u,b[x++]=S+u}let I,_;for(g=0;g<o.length;g++)I=o[g],_=I+u,b[x++]=I,b[x++]=_;return{attributes:a,indices:b}}function oW(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*m.packedLength+ie.packedLength+6}oW.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=m.packedLength)m.pack(i[r],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var Whe=ie.clone(ie.UNIT_SPHERE),L0={positions:void 0,ellipsoid:Whe,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};oW.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let p=0;p<i;++p,t+=m.packedLength)o[p]=m.unpack(e,t);let r=ie.unpack(e,t,Whe);t+=ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=ie.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=d,n._granularity=u,n._offsetAttribute=h===-1?void 0:h,n):(L0.positions=o,L0.width=s,L0.height=a,L0.extrudedHeight=c,L0.cornerType=d,L0.granularity=u,L0.offsetAttribute=h===-1?void 0:h,new oW(L0))};oW.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=cqe(t,i);let o=Xo(t,m.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!Z.equalsEpsilon(r,s,0,Z.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},d;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,d=lqe(c);else{let p=io.computePositions(c);if(d=Xhe(p,c.cornerType),d.attributes.position.values=_i.scaleToGeodeticHeight(d.attributes.position.values,r,i),l(e._offsetAttribute)){let g=d.attributes.position.values.length,f=e._offsetAttribute===pn.NONE?0:1,b=new Uint8Array(g/3).fill(f);d.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}}let u=d.attributes,h=ue.fromVertices(u.position.values,void 0,3);return new pt({attributes:u,indices:d.indices,primitiveType:We.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var rW=oW;var Rei=y(C(),1);var dqe=new di(0);function Bl(e){Ci.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(Bl.prototype=Object.create(Ci.prototype),Bl.prototype.constructor=Bl);Object.defineProperties(Bl.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Bl.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&cl.isSupported(this._scene)};Bl.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};Bl.prototype._computeCenter=Ae.throwInstantiationError;Bl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&xt(xt.geometryZIndex),this._zIndex=o.zIndex??dqe,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new hh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new IC(this._scene,a,r,s)}};Bl.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),Ci.prototype.destroy.call(this)};Bl.getGeometryHeight=function(e,t){if(!l(e)){t!==et.NONE&&xt(xt.geometryHeightReference);return}return Du(t)?0:e};Bl.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==et.NONE&&xt(xt.geometryExtrudedHeightReference);return}return Du(t)?Bl.CLAMP_TO_GROUND:e};Bl.CLAMP_TO_GROUND="clamp";Bl.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=et.NONE),(!l(n)||!l(i))&&(i=et.NONE);let o=0;if(t!==et.NONE&&o++,i===et.RELATIVE_TO_GROUND&&o++,o===2)return pn.ALL;if(o===1)return pn.TOP};var ii=Bl;var Fhe=new U,Phe=m.ZERO,Mhe=new m,vhe=new le;function uqe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function Uh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new uqe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(Uh.prototype=Object.create(ii.prototype),Uh.prototype.constructor=Uh);Uh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Fhe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Phe,Mhe))),new wt({id:t,geometry:new Px(this._options),attributes:i})};Uh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Fhe),o={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Phe,Mhe))),new wt({id:t,geometry:new rW(this._options),attributes:o})};Uh.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return m.clone(n[Math.floor(n.length/2)],t)};Uh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||Ci.prototype._isHidden.call(this,e,t)};Uh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.width)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.cornerType)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};Uh.prototype._setStaticOptions=function(e,t){let n=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),o=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(ze.MINIMUM_VALUE),s.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.cornerType=z.getValueOrUndefined(t.cornerType,ze.MINIMUM_VALUE),s.offsetAttribute=ii.computeGeometryOffsetAttribute(n,i,o,r),s.height=ii.getGeometryHeight(n,i),o=ii.getGeometryExtrudedHeight(o,r),o===ii.CLAMP_TO_GROUND&&(o=Si.getMinimumMaximumHeights(Px.computeRectangle(s,vhe)).minimumTerrainHeight),s.extrudedHeight=o};Uh.DynamicGeometryUpdater=MT;function MT(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(MT.prototype=Object.create(yi.prototype),MT.prototype.constructor=MT);MT.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||yi.prototype._isHidden.call(this,e,t,n)};MT.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.positions=z.getValueOrUndefined(t.positions,n),i.width=z.getValueOrUndefined(t.width,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.cornerType=z.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Px.computeRectangle(i,vhe)).minimumTerrainHeight),i.extrudedHeight=s};var sW=Uh;var Tni=y(C(),1);var eti=y(C(),1);function h5(){Ae.throwInstantiationError()}Object.defineProperties(h5.prototype,{name:{get:Ae.throwInstantiationError},clock:{get:Ae.throwInstantiationError},entities:{get:Ae.throwInstantiationError},isLoading:{get:Ae.throwInstantiationError},changedEvent:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError},loadingEvent:{get:Ae.throwInstantiationError},show:{get:Ae.throwInstantiationError},clustering:{get:Ae.throwInstantiationError}});h5.prototype.update=function(e){Ae.throwInstantiationError()};h5.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var cs=h5;var yni=y(C(),1);var ati=y(C(),1);function op(e,t){this._ellipsoid=e,this._cameraPosition=new m,this._cameraPositionInScaledSpace=new m,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(op.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=m.magnitudeSquared(n)-1;m.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var Nhe=new m;op.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,Nhe);return OJ(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};op.prototype.isScaledSpacePointVisible=function(e){return OJ(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var mqe=new m;op.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=mqe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),OJ(e,o,i)};op.prototype.computeHorizonCullingPoint=function(e,t,n){return Uhe(this._ellipsoid,e,t,n)};var Dhe=ie.clone(ie.UNIT_SPHERE);op.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=Qhe(this._ellipsoid,n,Dhe);return Uhe(o,e,t,i)};op.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return khe(this._ellipsoid,e,t,n,i,o)};op.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=Qhe(this._ellipsoid,o,Dhe);return khe(s,e,t,n,i,r)};var hqe=[];op.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=le.subsample(e,t,0,hqe),o=ue.fromPoints(i);if(!(m.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var fqe=new m;function Qhe(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=m.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,fqe);e=ie.fromCartesian3(i,n)}return e}function Uhe(e,t,n,i){l(i)||(i=new m);let o=Hhe(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],d=Yhe(e,c,o);if(d<0)return;r=Math.max(r,d)}return Ohe(o,r,i)}var f5=new m;function khe(e,t,n,i,o,r){l(r)||(r=new m),i=i??3,o=o??m.ZERO;let s=Hhe(e,t),a=0;for(let c=0,d=n.length;c<d;c+=i){f5.x=n[c]+o.x,f5.y=n[c+1]+o.y,f5.z=n[c+2]+o.z;let u=Yhe(e,f5,s);if(u<0)return;a=Math.max(a,u)}return Ohe(s,a,r)}function OJ(e,t,n){let i=t,o=n,r=m.subtract(e,i,Nhe),s=-m.dot(r,i);return!(o<0?s>0:s>o&&s*s/m.magnitudeSquared(r)>o)}var pqe=new m,Aqe=new m;function Yhe(e,t,n){let i=e.transformPositionToScaledSpace(t,pqe),o=m.magnitudeSquared(i),r=Math.sqrt(o),s=m.divideByScalar(i,r,Aqe);o=Math.max(1,o),r=Math.max(1,r);let a=m.dot(s,n),c=m.magnitude(m.cross(s,n,s)),d=1/r,u=Math.sqrt(o-1)*d;return 1/(a*d-c*u)}function Ohe(e,t,n){if(!(t<=0||t===1/0||t!==t))return m.multiplyByScalar(e,t,n)}var YJ=new m;function Hhe(e,t){return m.equals(t,m.ZERO)?t:(e.transformPositionToScaledSpace(t,YJ),m.normalize(YJ,YJ))}var gg=op;var Iti=y(C(),1);function Ur(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=Qt.clone(o)),this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),this._actualPosition=m.clone(this._position),this._color=U.clone(e.color??U.WHITE),this._outlineColor=U.clone(e.outlineColor??U.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??Ir.NONE}var zhe=Ur.SHOW_INDEX=0,jhe=Ur.POSITION_INDEX=1,gqe=Ur.COLOR_INDEX=2,bqe=Ur.OUTLINE_COLOR_INDEX=3,yqe=Ur.OUTLINE_WIDTH_INDEX=4,Cqe=Ur.PIXEL_SIZE_INDEX=5,xqe=Ur.SCALE_BY_DISTANCE_INDEX=6,Iqe=Ur.TRANSLUCENCY_BY_DISTANCE_INDEX=7,_qe=Ur.DISTANCE_DISPLAY_CONDITION_INDEX=8,Eqe=Ur.DISABLE_DEPTH_DISTANCE_INDEX=9,Tqe=Ur.SPLIT_DIRECTION_INDEX=10;Ur.NUMBER_OF_PROPERTIES=11;function iu(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Ur.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,iu(this,zhe))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),m.clone(e,this._actualPosition),iu(this,jhe))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;zt.equals(t,e)||(this._scaleByDistance=zt.clone(e,t),iu(this,xqe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;zt.equals(t,e)||(this._translucencyByDistance=zt.clone(e,t),iu(this,Iqe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,iu(this,Cqe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),iu(this,gqe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),iu(this,bqe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,iu(this,yqe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),iu(this,_qe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,iu(this,Eqe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,iu(this,zhe))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,iu(this,Tqe))}}});Ur.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Ur.prototype._getActualPosition=function(){return this._actualPosition};Ur.prototype._setActualPosition=function(e){m.clone(e,this._actualPosition),iu(this,jhe)};var Khe=new ce;Ur._computeActualPosition=function(e,t,n){return t.mode===re.SCENE3D?e:(X.multiplyByPoint(n,e,Khe),to.computeActualEllipsoidPosition(t,Khe))};var Jhe=new ce;Ur._computeScreenSpacePosition=function(e,t,n,i){let o=X.multiplyByVector(e,ce.fromElements(t.x,t.y,t.z,1,Jhe),Jhe);return to.worldToWindowCoordinates(n,o,i)};Ur.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new D);let i=n.modelMatrix,o=Ur._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Ur.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Ke),n.x=r,n.y=s,n.width=a,n.height=c,n};Ur.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&m.equals(this._position,e._position)&&U.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&U.equals(this._outlineColor,e._outlineColor)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Ur.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var $s=Ur;var $ti=y(C(),1);var Eti=y(C(),1),R0=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var Sti=y(C(),1),aW=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var Sqe=$s.SHOW_INDEX,KJ=$s.POSITION_INDEX,qhe=$s.COLOR_INDEX,Lqe=$s.OUTLINE_COLOR_INDEX,Rqe=$s.OUTLINE_WIDTH_INDEX,Vqe=$s.PIXEL_SIZE_INDEX,$he=$s.SCALE_BY_DISTANCE_INDEX,efe=$s.TRANSLUCENCY_BY_DISTANCE_INDEX,tfe=$s.DISTANCE_DISPLAY_CONDITION_INDEX,Gqe=$s.DISABLE_DEPTH_DISTANCE_INDEX,Zqe=$s.SPLIT_DIRECTION_INDEX,JJ=$s.NUMBER_OF_PROPERTIES,kc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function Im(e){e=e??Y.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(JJ),this._maxPixelSize=1,this._baseVolume=new ue,this._baseVolumeWC=new ue,this._baseVolume2D=new ue,this._boundingVolume=new ue,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=re.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(Im.prototype,{length:{get:function(){return jJ(this),this._pointPrimitives.length}}});function nfe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Im.prototype.add=function(e){let t=new $s(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};Im.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Im.prototype.removeAll=function(){nfe(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function jJ(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}Im.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};Im.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};Im.prototype.get=function(e){return jJ(this),this._pointPrimitives[e]};Im.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<JJ;++i){let o=n[i]===0?Ne.STATIC_DRAW:Ne.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function Bqe(e,t,n){return new zA(e,[{index:kc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[KJ]},{index:kc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[KJ]},{index:kc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[qhe]},{index:kc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[efe]},{index:kc.scaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[$he]},{index:kc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[tfe]}],t)}var HJ=new ni;function ife(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===re.SCENE3D&&(ue.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ni.fromCartesian(r,HJ);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[kc.positionHighAndSize],d=HJ.high;c(o,d.x,d.y,d.z,s);let u=n[kc.positionLowAndOutline],h=HJ.low;u(o,h.x,h.y,h.z,a)}var p5=65536,cW=256;function ofe(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=U.floatToByte(r.red),d=U.floatToByte(r.green),u=U.floatToByte(r.blue),h=c*p5+d*cW+u;c=U.floatToByte(a.red),d=U.floatToByte(a.green),u=U.floatToByte(a.blue);let p=c*p5+d*cW+u;c=U.floatToByte(s.red),d=U.floatToByte(s.green),u=U.floatToByte(s.blue);let g=c*p5+d*cW+u,f=U.floatToByte(r.alpha)*p5+U.floatToByte(a.alpha)*cW+U.floatToByte(s.alpha),b=n[kc.compressedAttribute0];b(o,h,p,g,f)}function rfe(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,d=i.translucencyByDistance;l(d)&&(r=d.near,s=d.nearValue,a=d.far,c=d.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let u=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(u=!1),s=Z.clamp(s,0,1),s=s===1?255:s*255|0;let h=(u?1:0)*cW+s;c=Z.clamp(c,0,1),c=c===1?255:c*255|0;let p=c,g=n[kc.compressedAttribute1];g(o,h,p,r,a)}function sfe(e,t,n,i){let o=i._index,r=n[kc.scaleByDistance],s=0,a=1,c=1,d=1,u=i.scaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,d)}function afe(e,t,n,i){let o=i._index,r=n[kc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let d=i.disableDepthTestDistance;d*=d,d>0&&(e._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1));let u=0,h=i.splitDirection;l(h)&&(u=h),r(o,s,a,d,u)}function wqe(e,t,n,i){ife(e,t,n,i),ofe(e,t,n,i),rfe(e,t,n,i),sfe(e,t,n,i),afe(e,t,n,i)}function zJ(e,t,n,i,o,r){let s;i.mode===re.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let d=t[c],u=d.position,h=$s._computeActualPosition(u,i,o);l(h)&&(d._setActualPosition(h),r?a.push(h):ue.expand(s,h,s))}r&&ue.fromPoints(a,s)}function Xqe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==re.SCENE3D&&!X.equals(r,e.modelMatrix)?(e._mode=n,X.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===re.SCENE3D||n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&zJ(e,i,i.length,t,r,!0)):n===re.MORPHING?zJ(e,i,i.length,t,r,!0):(n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&zJ(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function Wqe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var Fqe=[];Im.prototype.update=function(e){if(jJ(this),!this.show)return;this._maxTotalPointSize=Kt.maximumAliasedPointSize,Xqe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,d=e.passes,u=d.pick;if(s||!u&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let R=0;R<JJ;++R)r[R]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=Bqe(c,n,this._buffersUsage),a=this._vaf.writers;for(let R=0;R<n;++R){let G=this._pointPrimitives[R];G._dirty=!1,wqe(this,c,a,G)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let R=Fqe;R.length=0,(r[KJ]||r[Rqe]||r[Vqe])&&R.push(ife),(r[qhe]||r[Lqe])&&R.push(ofe),(r[Sqe]||r[efe])&&R.push(rfe),r[$he]&&R.push(sfe),(r[tfe]||r[Gqe]||r[Zqe])&&R.push(afe);let G=R.length;if(a=this._vaf.writers,o/n>.1){for(let B=0;B<o;++B){let w=i[B];w._dirty=!1;for(let F=0;F<G;++F)R[F](this,c,a,w)}this._vaf.commit()}else{for(let B=0;B<o;++B){let w=i[B];w._dirty=!1;for(let F=0;F<G;++F)R[F](this,c,a,w);this._vaf.subCommit(w._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ue.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,p=X.IDENTITY;e.mode===re.SCENE3D?(p=this.modelMatrix,h=ue.clone(this._baseVolumeWC,this._boundingVolume)):h=ue.clone(this._baseVolume2D,this._boundingVolume),Wqe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===No.OPAQUE||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Qe.fromCache({depthTest:{enabled:!0,func:ne.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===No.TRANSLUCENT||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Qe.fromCache({depthTest:{enabled:!0,func:ne.LEQUAL},depthMask:!1,blending:bn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let f,b;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(f=new Oe({sources:[aW]}),this._shaderScaleByDistance&&f.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&f.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&f.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&f.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===No.OPAQUE_AND_TRANSLUCENT&&(b=new Oe({defines:["OPAQUE"],sources:[R0]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc}),b=new Oe({defines:["TRANSLUCENT"],sources:[R0]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._blendOption===No.OPAQUE&&(b=new Oe({sources:[R0]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._blendOption===No.TRANSLUCENT&&(b=new Oe({sources:[R0]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let x,I,_,E,S=e.commandList;if(d.render||u){let R=this._colorCommands,G=this._blendOption===No.OPAQUE,B=this._blendOption===No.OPAQUE_AND_TRANSLUCENT;x=this._vaf.va,I=x.length,R.length=I;let w=B?I*2:I;for(E=0;E<w;++E){let F=G||B&&E%2===0;_=R[E],l(_)||(_=R[E]=new ot),_.primitiveType=We.POINTS,_.pass=F||!B?Ge.OPAQUE:Ge.TRANSLUCENT,_.owner=this;let P=B?Math.floor(E/2):E;_.boundingVolume=h,_.modelMatrix=p,_.shaderProgram=F?this._sp:this._spTranslucent,_.uniformMap=this._uniforms,_.vertexArray=x[P].va,_.renderState=F?this._rsOpaque:this._rsTranslucent,_.debugShowBoundingVolume=this.debugShowBoundingVolume,_.pickId="v_pickColor",S.push(_)}}};Im.prototype.isDestroyed=function(){return!1};Im.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),nfe(this._pointPrimitives),me(this)};var vT=Im;var tni=y(C(),1),cfe=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],qJ=1,lW=8,uW=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==qJ)throw new Error(`Got v${o} data when expected v${qJ}.`);let r=cfe[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=cfe.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,lW,t),this.coords=new this.ArrayType(this.data,lW+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(lW+s+a+c),this.ids=new this.IndexArrayType(this.data,lW,t),this.coords=new this.ArrayType(this.data,lW+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(qJ<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return e4(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],d=[];for(;c.length;){let u=c.pop()||0,h=c.pop()||0,p=c.pop()||0;if(h-p<=a){for(let x=p;x<=h;x++){let I=s[2*x],_=s[2*x+1];I>=t&&I<=i&&_>=n&&_<=o&&d.push(r[x])}continue}let g=p+h>>1,f=s[2*g],b=s[2*g+1];f>=t&&f<=i&&b>=n&&b<=o&&d.push(r[g]),(u===0?t<=f:n<=b)&&(c.push(p),c.push(g-1),c.push(1-u)),(u===0?i>=f:o>=b)&&(c.push(g+1),c.push(h),c.push(1-u))}return d}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],d=i*i;for(;a.length;){let u=a.pop()||0,h=a.pop()||0,p=a.pop()||0;if(h-p<=s){for(let x=p;x<=h;x++)lfe(r[2*x],r[2*x+1],t,n)<=d&&c.push(o[x]);continue}let g=p+h>>1,f=r[2*g],b=r[2*g+1];lfe(f,b,t,n)<=d&&c.push(o[g]),(u===0?t-i<=f:n-i<=b)&&(a.push(p),a.push(g-1),a.push(1-u)),(u===0?t+i>=f:n+i>=b)&&(a.push(g+1),a.push(h),a.push(1-u))}return c}};function e4(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;dfe(e,t,s,i,o,r),e4(e,t,n,i,s-1,1-r),e4(e,t,n,s+1,o,1-r)}function dfe(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let d=o-i+1,u=n-i+1,h=Math.log(d),p=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*p*(d-p)/d)*(u-d/2<0?-1:1),f=Math.max(i,Math.floor(n-u*p/d+g)),b=Math.min(o,Math.floor(n+(d-u)*p/d+g));dfe(e,t,n,f,b,r)}let s=t[2*n+r],a=i,c=o;for(dW(e,t,i,n),t[2*o+r]>s&&dW(e,t,i,o);a<c;){for(dW(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?dW(e,t,i,c):(c++,dW(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function dW(e,t,n,i){$J(e,n,i),$J(t,2*n,2*i),$J(t,2*n+1,2*i+1)}function $J(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function lfe(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function kh(e){e=e??Y.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new Ce,this.show=e.show??!0}function ufe(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var Pqe=new Ke;function mfe(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=p0.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=Eo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=$s.getScreenSpaceBoundingBox(e,t,o)),ufe(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&ffe(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=p0.getScreenSpaceBoundingBox(s,t,Pqe);ufe(a,n),o=Ke.union(o,a,o)}return o}function Mqe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&ffe(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function hfe(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function ffe(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function t4(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===re.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),d=o._clusterBillboards&&l(a.id._billboard),u=o._clusterPoints&&l(a.id._point);if(c&&(u||d))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var vqe=new Ke,Nqe=new Ke,Dqe=new Ke;function Qqe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new ep({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new qd({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new vT;let d=e._pixelRange,u=e._minimumClusterSize,h=e._previousClusters,p=[],g=e._previousHeight,f=n.camera.positionCartographic.height,b=n.ellipsoid,x=n.camera.positionWC,I=new gg(b,x),_=[];e._clusterLabels&&t4(i,_,n,I,e),e._clusterBillboards&&t4(o,_,n,I,e),e._clusterPoints&&t4(r,_,n,I,e);let E,S,R,G,B,w,F,P,A,T,L,V;if(_.length>0){let W=new uW(_.length,64,Uint32Array);for(let M=0;M<_.length;++M)W.add(_[M].coord.x,_[M].coord.y);if(W.finish(),f<g)for(R=h.length,E=0;E<R;++E){let M=h[E];if(!I.isPointVisible(M.position))continue;let Q=Eo._computeScreenSpacePosition(X.IDENTITY,M.position,m.ZERO,D.ZERO,n);if(!l(Q))continue;let N=1-f/g,k=M.width=M.width*N,v=M.height=M.height*N;k=Math.max(k,M.minimumWidth),v=Math.max(v,M.minimumHeight);let O=Q.x-k*.5,H=Q.y-v*.5,ee=Q.x+k,K=Q.y+v;for(B=W.range(O,H,ee,K),w=B.length,T=0,A=[],S=0;S<w;++S)F=B[S],P=_[F],P.clustered||(++T,L=P.collection,V=P.index,A.push(L.get(V).id));if(T>=u)for(hfe(M.position,T,A,e),p.push(M),S=0;S<w;++S)_[B[S]].clustered=!0}for(R=_.length,E=0;E<R;++E){let M=_[E];if(M.clustered)continue;M.clustered=!0,L=M.collection,V=M.index;let Q=L.get(V);G=mfe(Q,M.coord,d,e,vqe);let N=Ke.clone(G,Nqe);B=W.range(G.x,G.y,G.x+G.width,G.y+G.height),w=B.length;let k=m.clone(Q.position);for(T=1,A=[Q.id],S=0;S<w;++S)if(F=B[S],P=_[F],!P.clustered){let v=P.collection.get(P.index),O=mfe(v,P.coord,d,e,Dqe);m.add(v.position,k,k),Ke.union(N,O,N),++T,A.push(v.id)}if(T>=u){let v=m.multiplyByScalar(k,1/T,k);for(hfe(v,T,A,e),p.push({position:v,width:N.width,height:N.height,minimumWidth:G.width,minimumHeight:G.height}),S=0;S<w;++S)_[B[S]].clustered=!0}else Mqe(Q,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=p,e._previousHeight=f}}kh.prototype._initialize=function(e){this._scene=e;let t=Qqe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(kh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function i4(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,d=this[n];d.length>0?(a=d.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let u=this;return Promise.resolve().then(function(){u._clusterDirty=!0}),c}}function o4(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}kh.prototype.getLabel=i4("_labelCollection",ep,"_unusedLabelIndices","labelIndex");kh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,o4(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};kh.prototype.getBillboard=i4("_billboardCollection",qd,"_unusedBillboardIndices","billboardIndex");kh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,o4(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};kh.prototype.getPoint=i4("_pointCollection",vT,"_unusedPointIndices","pointIndex");kh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,o4(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function n4(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function Uqe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,n4(e._labelCollection),n4(e._billboardCollection),n4(e._pointCollection))}kh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,Uqe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};kh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var ou=kh;function r4(e){this._name=e,this._clock=void 0,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._entityCollection=new Ca(this),this._entityCluster=new ou}Object.defineProperties(r4.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){cs.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});r4.prototype.update=function(e){return!0};var mW=r4;var Rii=y(C(),1);var Yni=y(C(),1);var Rni=y(C(),1);var pfe={};pfe.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,d=new Float64Array(c*3),u,h=0,p=0,g=o?a*3:0,f=o?(a+i)*3:i*3;for(u=0;u<i;u++){let b=u/i*Z.TWO_PI,x=Math.cos(b),I=Math.sin(b),_=x*n,E=I*n,S=x*t,R=I*t;d[p+g]=_,d[p+g+1]=E,d[p+g+2]=s,d[p+f]=S,d[p+f+1]=R,d[p+f+2]=r,p+=3,o&&(d[h++]=_,d[h++]=E,d[h++]=s,d[h++]=S,d[h++]=R,d[h++]=r)}return d};var Mx=pfe;var s4=new D,kqe=new m,Yqe=new m,Oqe=new m,Hqe=new m;function bg(e){e=e??Y.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??we.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=we.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}bg.packedLength=we.packedLength+5;bg.pack=function(e,t,n){return n=n??0,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var Afe=new we,NT={vertexFormat:Afe,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};bg.unpack=function(e,t,n){t=t??0;let i=we.unpack(e,t,Afe);t+=we.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=we.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(NT.length=o,NT.topRadius=r,NT.bottomRadius=s,NT.slices=a,NT.offsetAttribute=c===-1?void 0:c,new bg(NT))};bg.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,d=Mx.computePositions(t,n,i,r,!0),u=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,p=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,f,b=o.normal||o.tangent||o.bitangent;if(b){let B=o.tangent||o.bitangent,w=0,F=0,P=0,A=Math.atan2(i-n,t),T=kqe;T.z=Math.sin(A);let L=Math.cos(A),V=Oqe,W=Yqe;for(f=0;f<r;f++){let M=f/r*Z.TWO_PI,Q=L*Math.cos(M),N=L*Math.sin(M);b&&(T.x=Q,T.y=N,B&&(V=m.normalize(m.cross(m.UNIT_Z,T,V),V)),o.normal&&(h[w++]=T.x,h[w++]=T.y,h[w++]=T.z,h[w++]=T.x,h[w++]=T.y,h[w++]=T.z),o.tangent&&(p[F++]=V.x,p[F++]=V.y,p[F++]=V.z,p[F++]=V.x,p[F++]=V.y,p[F++]=V.z),o.bitangent&&(W=m.normalize(m.cross(T,V,W),W),g[P++]=W.x,g[P++]=W.y,g[P++]=W.z,g[P++]=W.x,g[P++]=W.y,g[P++]=W.z))}for(f=0;f<r;f++)o.normal&&(h[w++]=0,h[w++]=0,h[w++]=-1),o.tangent&&(p[F++]=1,p[F++]=0,p[F++]=0),o.bitangent&&(g[P++]=0,g[P++]=-1,g[P++]=0);for(f=0;f<r;f++)o.normal&&(h[w++]=0,h[w++]=0,h[w++]=1),o.tangent&&(p[F++]=1,p[F++]=0,p[F++]=0),o.bitangent&&(g[P++]=0,g[P++]=1,g[P++]=0)}let x=12*r-12,I=Me.createTypedArray(c,x),_=0,E=0;for(f=0;f<r-1;f++)I[_++]=E,I[_++]=E+2,I[_++]=E+3,I[_++]=E,I[_++]=E+3,I[_++]=E+1,E+=2;for(I[_++]=s-2,I[_++]=0,I[_++]=1,I[_++]=s-2,I[_++]=1,I[_++]=s-1,f=1;f<r-1;f++)I[_++]=s+f+1,I[_++]=s+f,I[_++]=s;for(f=1;f<r-1;f++)I[_++]=a,I[_++]=a+f,I[_++]=a+f+1;let S=0;if(o.st){let B=Math.max(n,i);for(f=0;f<c;f++){let w=m.fromArray(d,f*3,Hqe);u[S++]=(w.x+B)/(2*B),u[S++]=(w.y+B)/(2*B)}}let R=new xn;o.position&&(R.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})),o.normal&&(R.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(R.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),o.bitangent&&(R.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(R.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),s4.x=t*.5,s4.y=Math.max(i,n);let G=new ue(m.ZERO,D.magnitude(s4));if(l(e._offsetAttribute)){t=d.length;let B=e._offsetAttribute===pn.NONE?0:1,w=new Uint8Array(t/3).fill(B);R.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:w})}return new pt({attributes:R,indices:I,primitiveType:We.TRIANGLES,boundingSphere:G,offsetAttribute:e._offsetAttribute})};var a4;bg.getUnitCylinder=function(){return l(a4)||(a4=bg.createGeometry(new bg({topRadius:1,bottomRadius:1,length:1,vertexFormat:we.POSITION_ONLY}))),a4};var hW=bg;var sii=y(C(),1);var c4=new D;function DT(e){e=e??Y.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}DT.packedLength=6;DT.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var vx={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};DT.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(vx.length=i,vx.topRadius=o,vx.bottomRadius=r,vx.slices=s,vx.numberOfVerticalLines=a,vx.offsetAttribute=c===-1?void 0:c,new DT(vx))};DT.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=Mx.computePositions(t,n,i,o,!1),c=o*2,d;if(r>0){let b=Math.min(r,o);d=Math.round(o/b),c+=b}let u=Me.createTypedArray(s,c*2),h=0,p;for(p=0;p<o-1;p++)u[h++]=p,u[h++]=p+1,u[h++]=p+o,u[h++]=p+1+o;if(u[h++]=o-1,u[h++]=0,u[h++]=o+o-1,u[h++]=o,r>0)for(p=0;p<o;p+=d)u[h++]=p,u[h++]=p+o;let g=new xn;g.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:a}),c4.x=t*.5,c4.y=Math.max(i,n);let f=new ue(m.ZERO,D.magnitude(c4));if(l(e._offsetAttribute)){t=a.length;let b=e._offsetAttribute===pn.NONE?0:1,x=new Uint8Array(t/3).fill(b);g.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}return new pt({attributes:g,indices:u,primitiveType:We.LINES,boundingSphere:f,offsetAttribute:e._offsetAttribute})};var fW=DT;var gfe=m.ZERO,bfe=new m,zqe=new m,yfe=new U;function Kqe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function ru(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Kqe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(ru.prototype=Object.create(Ci.prototype),ru.prototype.constructor=ru);Object.defineProperties(ru.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});ru.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,yfe)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,gfe,bfe))),new wt({id:t,geometry:new hW(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};ru.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,yfe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,gfe,bfe))),new wt({id:t,geometry:new fW(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};ru.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};ru.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||Ci.prototype._isHidden.call(this,e,t)};ru.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!z.isConstant(t.slices)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.numberOfVerticalLines)};ru.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(ze.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(ze.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(ze.MINIMUM_VALUE),i.slices=z.getValueOrUndefined(t.slices,ze.MINIMUM_VALUE),i.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};ru.prototype._onEntityPropertyChanged=fA;ru.DynamicGeometryUpdater=QT;function QT(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(QT.prototype=Object.create(yi.prototype),QT.prototype.constructor=QT);QT.prototype._isHidden=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(e.position,n,zqe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||yi.prototype._isHidden.call(this,e,t,n)};QT.prototype._setOptions=function(e,t,n){let i=z.getValueOrDefault(t.heightReference,n,et.NONE),o=this._options;o.length=z.getValueOrUndefined(t.length,n),o.topRadius=z.getValueOrUndefined(t.topRadius,n),o.bottomRadius=z.getValueOrUndefined(t.bottomRadius,n),o.slices=z.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==et.NONE?pn.ALL:void 0};var pW=ru;var Rci=y(C(),1);var Gii=y(C(),1),Jqe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},ls=Object.freeze(Jqe);var Bii=y(C(),1),jqe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},Ro=Object.freeze(jqe);var Xii=y(C(),1),qqe={NONE:0,HOLD:1,EXTRAPOLATE:2},su=Object.freeze(qqe);var Fii=y(C(),1),Cfe=y(Bd(),1);function $qe(e){let t=new Cfe.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var yg=$qe;var Nii=y(C(),1);var e$e=Z.factorial;function l4(e,t,n,i,o,r){let s=0,a,c,d;if(i>0){for(c=0;c<o;c++){for(a=!1,d=0;d<r.length&&!a;d++)c===r[d]&&(a=!0);a||(r.push(c),s+=l4(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,d=0;d<r.length&&!a;d++)c===r[d]&&(a=!0);a||(s*=e-n[t[c]])}return s}var A5={type:"Hermite"};A5.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};A5.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,d,u,h=t.length,p=new Array(i);for(r=0;r<i;r++){o[r]=0;let x=new Array(h);for(p[r]=x,s=0;s<h;s++)x[s]=[]}let g=h,f=new Array(g);for(r=0;r<g;r++)f[r]=r;let b=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)u=f[s]*i+c,p[c][0].push(n[u]);for(r=1;r<g;r++){let x=!1;for(s=0;s<g-r;s++){let I=t[f[s]],_=t[f[s+r]],E;_-I<=0?(u=f[s]*i+i*r+c,E=n[u],p[c][r].push(E/e$e(r))):(E=p[c][r-1][s+1]-p[c][r-1][s],p[c][r].push(E/(_-I))),x=x||E!==0}x||(b=r-1)}}for(a=0,d=0;a<=d;a++)for(r=a;r<=b;r++){let x=l4(e,f,t,a,r,[]);for(c=0;c<i;c++){let I=p[c][r][0];o[c+a*i]+=I*x}}return o};var t$e=[];A5.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let I=0;I<a;I++)s[I]=0;let c=t.length,d=new Array(c*(o+1)),u;for(u=0;u<c;u++)for(let I=0;I<o+1;I++)d[u*(o+1)+I]=u;let h=d.length,p=t$e,g=n$e(p,d,t,n,i,o),f=[],b=h*(h+1)/2,x=Math.min(g,r);for(let I=0;I<=x;I++)for(u=I;u<=g;u++){f.length=0;let _=l4(e,d,t,I,u,f),E=Math.floor(u*(1-u)/2)+h*u;for(let S=0;S<i;S++){let R=Math.floor(S*b),G=p[R+E];s[S+I*i]+=G*_}}return s};function n$e(e,t,n,i,o,r){let s,a,c=-1,d=t.length,u=d*(d+1)/2;for(let h=0;h<o;h++){let p=Math.floor(h*u);for(s=0;s<d;s++)a=t[s]*o*(r+1)+h,e[p+s]=i[a];for(let g=1;g<d;g++){let f=0,b=Math.floor(g*(1-g)/2)+d*g,x=!1;for(s=0;s<d-g;s++){let I=n[t[s]],_=n[t[s+g]],E,S;if(_-I<=0)a=t[s]*o*(r+1)+o*g+h,E=i[a],S=E/Z.factorial(g),e[p+b+f]=S,f++;else{let R=Math.floor((g-1)*(2-g)/2)+d*(g-1);E=e[p+R+s+1]-e[p+R+s],S=E/(_-I),e[p+b+f]=S,f++}x=x||E!==0}x&&(c=Math.max(c,g))}}return c}var AW=A5;var Uii=y(C(),1);var d4={type:"Lagrange"};d4.getRequiredDataPoints=function(e){return Math.max(e+1,2)};d4.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let d=t[r]-t[s];c*=(e-t[s])/d}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var gW=d4;var Oii=y(C(),1);var u4={type:"Linear"};u4.getRequiredDataPoints=function(e){return 2};u4.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],d=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+d*s-c*a)/(d-c);return o};var Nx=u4;var Kii=y(C(),1);function Yc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Yc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Yc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Yc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Yc(e.clock,e.cone,e.magnitude)};Yc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Yc(e.clock,e.cone,1)};Yc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Yc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Yc.prototype.equals=function(e){return Yc.equals(this,e)};Yc.prototype.clone=function(e){return Yc.clone(this,e)};Yc.prototype.equalsEpsilon=function(e,t){return Yc.equalsEpsilon(this,e,t)};Yc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var bW=Yc;var _W=y(Bd(),1);var hoi=y(C(),1);var soi=y(C(),1);var jii=y(C(),1),m4;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?m4=function(){return performance.now()}:m4=function(){return Date.now()};var Fi=m4;function h4(e){e=e??Y.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=j.clone(t):l(n)?t=j.clone(n):l(i)?t=j.addDays(i,-1,new j):t=j.now(),l(n)?n=j.clone(n):n=j.clone(t),l(i)?i=j.clone(i):i=j.addDays(n,1,new j),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??ls.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new Ce,this.onStop=new Ce,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Fi(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??Ro.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(h4.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){j.equals(this._currentTime,e)||(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===Ro.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=j.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});h4.prototype.tick=function(){let e=Fi(),t=j.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===Ro.SYSTEM_CLOCK)t=j.now(t);else{let i=this._multiplier;if(n===Ro.TICK_DEPENDENT)t=j.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=j.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===ls.CLAMPED)j.lessThan(t,r)?t=j.clone(r,t):j.greaterThan(t,s)&&(t=j.clone(s,t),this.onStop.raiseEvent(this));else if(o===ls.LOOP_STOP)for(j.lessThan(t,r)&&(t=j.clone(r,t));j.greaterThan(t,s);)t=j.addSeconds(r,j.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Yh=h4;function Dx(){this._definitionChanged=new Ce,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(Dx.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:ul("startTime"),stopTime:ul("stopTime"),currentTime:ul("currentTime"),clockRange:ul("clockRange"),clockStep:ul("clockStep"),multiplier:ul("multiplier")});Dx.prototype.clone=function(e){return l(e)||(e=new Dx),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};Dx.prototype.equals=function(e){return this===e||l(e)&&j.equals(this.startTime,e.startTime)&&j.equals(this.stopTime,e.stopTime)&&j.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};Dx.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};Dx.prototype.getValue=function(e){return l(e)||(e=new Yh),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Oh=Dx;var _oi=y(C(),1);var i$e=U.WHITE,o$e=.1,r$e=new D(8,8),s$e=new D(0,0),a$e=new D(1,1);function UT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(UT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._cellAlpha)&&z.isConstant(this._lineCount)&&z.isConstant(this._lineThickness)&&z.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),cellAlpha:fe("cellAlpha"),lineCount:fe("lineCount"),lineThickness:fe("lineThickness"),lineOffset:fe("lineOffset")});UT.prototype.getType=function(e){return"Grid"};var c$e=new j;UT.prototype.getValue=function(e,t){return l(e)||(e=j.now(c$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,i$e,t.color),t.cellAlpha=z.getValueOrDefault(this._cellAlpha,e,o$e),t.lineCount=z.getValueOrClonedDefault(this._lineCount,e,r$e,t.lineCount),t.lineThickness=z.getValueOrClonedDefault(this._lineThickness,e,a$e,t.lineThickness),t.lineOffset=z.getValueOrClonedDefault(this._lineOffset,e,s$e,t.lineOffset),t};UT.prototype.equals=function(e){return this===e||e instanceof UT&&z.equals(this._color,e._color)&&z.equals(this._cellAlpha,e._cellAlpha)&&z.equals(this._lineCount,e._lineCount)&&z.equals(this._lineThickness,e._lineThickness)&&z.equals(this._lineOffset,e._lineOffset)};var kT=UT;var Zoi=y(C(),1);function YT(e){this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(YT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color")});YT.prototype.getType=function(e){return"PolylineArrow"};var l$e=new j;YT.prototype.getValue=function(e,t){return l(e)||(e=j.now(l$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,U.WHITE,t.color),t};YT.prototype.equals=function(e){return this===e||e instanceof YT&&z.equals(this._color,e._color)};var OT=YT;var Noi=y(C(),1);var d$e=U.WHITE,u$e=U.TRANSPARENT,m$e=16,h$e=255;function HT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(HT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._gapColor)&&z.isConstant(this._dashLength)&&z.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),gapColor:fe("gapColor"),dashLength:fe("dashLength"),dashPattern:fe("dashPattern")});HT.prototype.getType=function(e){return"PolylineDash"};var f$e=new j;HT.prototype.getValue=function(e,t){return l(e)||(e=j.now(f$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,d$e,t.color),t.gapColor=z.getValueOrClonedDefault(this._gapColor,e,u$e,t.gapColor),t.dashLength=z.getValueOrDefault(this._dashLength,e,m$e,t.dashLength),t.dashPattern=z.getValueOrDefault(this._dashPattern,e,h$e,t.dashPattern),t};HT.prototype.equals=function(e){return this===e||e instanceof HT&&z.equals(this._color,e._color)&&z.equals(this._gapColor,e._gapColor)&&z.equals(this._dashLength,e._dashLength)&&z.equals(this._dashPattern,e._dashPattern)};var zT=HT;var Koi=y(C(),1);var p$e=U.WHITE,A$e=.25,g$e=1;function KT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(KT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),glowPower:fe("glowPower"),taperPower:fe("taperPower")});KT.prototype.getType=function(e){return"PolylineGlow"};var b$e=new j;KT.prototype.getValue=function(e,t){return l(e)||(e=j.now(b$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,p$e,t.color),t.glowPower=z.getValueOrDefault(this._glowPower,e,A$e,t.glowPower),t.taperPower=z.getValueOrDefault(this._taperPower,e,g$e,t.taperPower),t};KT.prototype.equals=function(e){return this===e||e instanceof KT&&z.equals(this._color,e._color)&&z.equals(this._glowPower,e._glowPower)&&z.equals(this._taperPower,e._taperPower)};var JT=KT;var ori=y(C(),1);var y$e=U.WHITE,C$e=U.BLACK,x$e=1;function jT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(jT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._outlineColor)&&z.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth")});jT.prototype.getType=function(e){return"PolylineOutline"};var I$e=new j;jT.prototype.getValue=function(e,t){return l(e)||(e=j.now(I$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,y$e,t.color),t.outlineColor=z.getValueOrClonedDefault(this._outlineColor,e,C$e,t.outlineColor),t.outlineWidth=z.getValueOrDefault(this._outlineWidth,e,x$e),t};jT.prototype.equals=function(e){return this===e||e instanceof jT&&z.equals(this._color,e._color)&&z.equals(this._outlineColor,e._outlineColor)&&z.equals(this._outlineWidth,e._outlineWidth)};var V0=jT;var mri=y(C(),1);function Cg(e,t){this._value=void 0,this._definitionChanged=new Ce,this._eventHelper=new Lr,this._referenceFrame=t??eo.FIXED,this.setValue(e)}Object.defineProperties(Cg.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!z.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _$e=new j;Cg.prototype.getValue=function(e,t){return l(e)||(e=j.now(_$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Cg.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};Cg.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Cg.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Cg.prototype.equals=function(e){return this===e||e instanceof Cg&&this._referenceFrame===e._referenceFrame&&z.arrayEquals(this._value,e._value)};Cg.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var xg=Cg;var yri=y(C(),1);function G0(e){this._value=void 0,this._definitionChanged=new Ce,this._eventHelper=new Lr,this.setValue(e)}Object.defineProperties(G0.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!z.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var E$e=new j;G0.prototype.getValue=function(e,t){l(e)||(e=j.now(E$e));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};G0.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,G0.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};G0.prototype.equals=function(e){return this===e||e instanceof G0&&z.arrayEquals(this._value,e._value)};G0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var qT=G0;var Tri=y(C(),1);function Qx(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(au.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function au(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new Ce,e.collectionChanged.addEventListener(au.prototype._onCollectionChanged,this)}Object.defineProperties(au.prototype,{isConstant:{get:function(){return z.isConstant(Qx(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=Qx(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return Qx(this)}}});au.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new au(e,n,i)};var T$e=new j;au.prototype.getValue=function(e,t){let n=Qx(this);return l(e)||(e=j.now(T$e)),l(n)?n.getValue(e,t):void 0};au.prototype.getValueInReferenceFrame=function(e,t,n){let i=Qx(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};au.prototype.getType=function(e){let t=Qx(this);return l(t)?t.getType(e):void 0};au.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};au.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};au.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(au.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=Qx(this),l(i)&&this._definitionChanged.raiseEvent(this))};var Ig=au;var Vri=y(C(),1);var S$e={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-Z.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+Z.TWO_PI:o}},_m=S$e;var Hri=y(C(),1);var Pri=y(C(),1);var xfe={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function Ife(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function _fe(e,t){return e instanceof j?e:typeof e=="string"?j.fromIso8601(e):j.addSeconds(t,e,new j)}var f4=[],p4=[];function g5(e,t,n,i,o){let r=0,s,a,c,d,u,h;for(;r<i.length;){u=_fe(i[r],e),c=Yo(t,u,j.compare);let p=0,g=0;if(c<0){for(c=~c,d=c*o,a=void 0,h=t[c];r<i.length&&(u=_fe(i[r],e),!(l(a)&&j.compare(a,u)>=0||l(h)&&j.compare(u,h)>=0));){for(f4[p++]=u,r=r+1,s=0;s<o;s++)p4[g++]=i[r],r=r+1;a=u}p>0&&(p4.length=g,Ife(n,d,p4),f4.length=p,Ife(t,c,f4))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function Em(e,t){let n=e;n===Number&&(n=xfe);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let d=t[c];d===Number&&(d=xfe);let u=d.packedLength;i+=u,o+=d.packedInterpolationLength??u,s[c]=d}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=Nx,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new Ce,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=su.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=su.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(Em.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var L$e=new j;Em.prototype.getValue=function(e,t){l(e)||(e=j.now(L$e));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=Yo(n,e,j.compare);if(a<0){if(a=~a,a===0){let S=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===su.NONE||o!==0&&j.secondsDifference(S,e)>o)return;if(this._backwardExtrapolationType===su.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let S=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===su.NONE||o!==0&&j.secondsDifference(e,S)>o)return;if(this._forwardExtrapolationType===su.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,d=this._yTable,u=this._interpolationAlgorithm,h=this._packedInterpolationLength,p=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let S=Math.min(u.getRequiredDataPoints(this._interpolationDegree,p),i);S!==this._numberOfPoints&&(this._numberOfPoints=S,c.length=S,d.length=S*h)}let g=this._numberOfPoints-1;if(g<1)return;let f=0,b=i-1;if(b-f+1>=g+1){let S=a-(g/2|0)-1;S<f&&(S=f);let R=S+g;R>b&&(R=b,S=R-g,S<f&&(S=f)),f=S,b=R}let I=b-f+1;for(let S=0;S<I;++S)c[S]=j.secondsDifference(n[f+S],n[b]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,f,b,d);else{let S=0,R=this._packedLength,G=f*R,B=(b+1)*R;for(;G<B;)d[S]=s[G],G++,S++}let _=j.secondsDifference(e,n[b]),E;if(p===0||!l(u.interpolate))E=u.interpolateOrderZero(_,c,d,h,this._interpolationResult);else{let S=Math.floor(h/(p+1));E=u.interpolate(_,c,d,S,p,p,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(E,s,f,b,t):r.unpack(E,0,t)}return r.unpack(s,a*this._packedLength,t)};Em.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};Em.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}g5(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let d=n[c],u=i.length;for(let h=0;h<u;h++)i[h].pack(d[h],a,a.length)}g5(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};Em.prototype.addSamplesPackedArray=function(e,t){g5(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.removeSample=function(e){let t=Yo(this._times,e,j.compare);return t<0?!1:(Efe(this,t,1),!0)};function Efe(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}Em.prototype.removeSamples=function(e){let t=this._times,n=Yo(t,e.start,j.compare);n<0?n=~n:e.isStartIncluded||++n;let i=Yo(t,e.stop,j.compare);i<0?i=~i:e.isStopIncluded&&++i,Efe(this,n,i-n)};Em.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!j.equals(a[r],c[r]))return!1;let d=this._values,u=e._values;for(s=d.length,r=0;r<s;r++)if(d[r]!==u[r])return!1;return!0};Em._mergeNewSamples=g5;var cu=Em;function Tm(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=m}this._numberOfDerivatives=t,this._property=new cu(m,n),this._definitionChanged=new Ce,this._referenceFrame=e??eo.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(Tm.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var R$e=new j;Tm.prototype.getValue=function(e,t){return l(e)||(e=j.now(R$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Tm.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return lh.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};Tm.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};Tm.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};Tm.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};Tm.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};Tm.prototype.removeSample=function(e){return this._property.removeSample(e)};Tm.prototype.removeSamples=function(e){this._property.removeSamples(e)};Tm.prototype.equals=function(e){return this===e||e instanceof Tm&&z.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var Oa=Tm;var rsi=y(C(),1);var Kri=y(C(),1),V$e={HORIZONTAL:0,VERTICAL:1},Hh=Object.freeze(V$e);var G$e=Hh.HORIZONTAL,Z$e=U.WHITE,B$e=U.BLACK,w$e=0,X$e=1;function $T(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties($T.prototype,{isConstant:{get:function(){return z.isConstant(this._orientation)&&z.isConstant(this._evenColor)&&z.isConstant(this._oddColor)&&z.isConstant(this._offset)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:fe("orientation"),evenColor:fe("evenColor"),oddColor:fe("oddColor"),offset:fe("offset"),repeat:fe("repeat")});$T.prototype.getType=function(e){return"Stripe"};var W$e=new j;$T.prototype.getValue=function(e,t){return l(e)||(e=j.now(W$e)),l(t)||(t={}),t.horizontal=z.getValueOrDefault(this._orientation,e,G$e)===Hh.HORIZONTAL,t.evenColor=z.getValueOrClonedDefault(this._evenColor,e,Z$e,t.evenColor),t.oddColor=z.getValueOrClonedDefault(this._oddColor,e,B$e,t.oddColor),t.offset=z.getValueOrDefault(this._offset,e,w$e),t.repeat=z.getValueOrDefault(this._repeat,e,X$e),t};$T.prototype.equals=function(e){return this===e||e instanceof $T&&z.equals(this._orientation,e._orientation)&&z.equals(this._evenColor,e._evenColor)&&z.equals(this._oddColor,e._oddColor)&&z.equals(this._offset,e._offset)&&z.equals(this._repeat,e._repeat)};var eS=$T;var fsi=y(C(),1);function Z0(e){this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Z0.prototype._intervalsChanged,this),this._referenceFrame=e??eo.FIXED}Object.defineProperties(Z0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var F$e=new j;Z0.prototype.getValue=function(e,t){return l(e)||(e=j.now(F$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Z0.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return lh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};Z0.prototype.equals=function(e){return this===e||e instanceof Z0&&this._intervals.equals(e._intervals,z.equals)&&this._referenceFrame===e._referenceFrame};Z0.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var _g=Z0;var xsi=y(C(),1);function Ux(){this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Ux.prototype._intervalsChanged,this)}Object.defineProperties(Ux.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var P$e=new j;Ux.prototype.getValue=function(e,t){l(e)||(e=j.now(P$e));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};Ux.prototype.equals=function(e){return this===e||e instanceof Ux&&this._intervals.equals(e._intervals,z.equals)};Ux.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var Eg=Ux;var Nsi=y(C(),1);var Rsi=y(C(),1);function tS(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new Ce,this._normalize=t??!0,this.position=e}Object.defineProperties(tS.prototype,{isConstant:{get:function(){return z.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var M$e=new m,Tfe=new m,Sfe=new j,v$e=new j,A4=1/60;tS.prototype.getValue=function(e,t){return this._getValue(e,t)};tS.prototype._getValue=function(e,t,n){l(e)||(e=j.now(v$e)),l(t)||(t=new m);let i=this._position;if(z.isConstant(i))return this._normalize?void 0:m.clone(m.ZERO,t);let o=i.getValue(e,M$e),r=i.getValue(j.addSeconds(e,A4,Sfe),Tfe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(j.addSeconds(e,-A4,Sfe),Tfe),!l(o)))return;if(m.equals(o,r))return this._normalize?void 0:m.clone(m.ZERO,t);l(n)&&o.clone(n);let s=m.subtract(r,o,t);return this._normalize?m.normalize(s,t):m.divideByScalar(s,A4,t)};tS.prototype.equals=function(e){return this===e||e instanceof tS&&z.equals(this._position,e._position)};var Tg=tS;function yW(e,t){this._velocityVectorProperty=new Tg(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new Ce,this.ellipsoid=t??ie.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(yW.prototype,{isConstant:{get:function(){return z.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var Lfe=new m,N$e=new m,Rfe=new $,D$e=new j;yW.prototype.getValue=function(e,t){l(e)||(e=j.now(D$e));let n=this._velocityVectorProperty._getValue(e,N$e,Lfe);if(l(n))return Dt.rotationMatrixFromPositionVelocity(Lfe,n,this._ellipsoid,Rfe),Pe.fromRotationMatrix(Rfe,t)};yW.prototype.equals=function(e){return this===e||e instanceof yW&&z.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var CW=yW;var Usi=y(C(),1);var Sg={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};Sg.validate=function(e){return e===Sg.COMPLETE||e===Sg.BELOW_ELLIPSOID_HORIZON||e===Sg.ABOVE_ELLIPSOID_HORIZON};Sg.toString=function(e){switch(e){case Sg.COMPLETE:return"COMPLETE";case Sg.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case Sg.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new Ae("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var nS=Sg;function B0(){}B0.packedLength=m.packedLength;B0.unpack=m.unpack;B0.pack=m.pack;var g4;function xW(e,t){return t[0]==="#"&&(t=g4+t),Ig.fromString(e,t)}function Vfe(e,t,n){if(l(n.reference))return xW(t,n.reference);if(l(n.velocityReference)){let i=xW(t,n.velocityReference);switch(e){case m:case B0:return new Tg(i,e===B0);case Pe:return new CW(i)}}throw new de(`${JSON.stringify(n)} is not valid CZML.`)}function Q$e(e,t){return new hh(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var oo=new m,wl=new bW,Oc=new ge,kx=new wn,b5=new Pe;function U$e(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===U.packedLength)return[U.byteToFloat(n[0]),U.byteToFloat(n[1]),U.byteToFloat(n[2]),U.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=U.byteToFloat(n[o+1]),t[o+2]=U.byteToFloat(n[o+2]),t[o+3]=U.byteToFloat(n[o+3]),t[o+4]=U.byteToFloat(n[o+4]);return t}function Gfe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):Ve.createIfNeeded(n)}function k$e(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===le.packedLength)return[Z.toRadians(n[0]),Z.toRadians(n[1]),Z.toRadians(n[2]),Z.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=Z.toRadians(n[o+1]),t[o+2]=Z.toRadians(n[o+2]),t[o+3]=Z.toRadians(n[o+3]),t[o+4]=Z.toRadians(n[o+4]);return t}function Y$e(e){let t=e.length;if(wl.magnitude=1,t===2)return wl.clock=e[0],wl.cone=e[1],m.fromSpherical(wl,oo),[oo.x,oo.y,oo.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],wl.clock=e[i+1],wl.cone=e[i+2],m.fromSpherical(wl,oo),n[o+1]=oo.x,n[o+2]=oo.y,n[o+3]=oo.z;return n}function O$e(e){let t=e.length;if(t===3)return wl.clock=e[0],wl.cone=e[1],wl.magnitude=e[2],m.fromSpherical(wl,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],wl.clock=e[i+1],wl.cone=e[i+2],wl.magnitude=e[i+3],m.fromSpherical(wl,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function H$e(e){let t=e.length;if(t===3)return Oc.longitude=e[0],Oc.latitude=e[1],Oc.height=e[2],ie.default.cartographicToCartesian(Oc,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=e[i+1],Oc.latitude=e[i+2],Oc.height=e[i+3],ie.default.cartographicToCartesian(Oc,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function z$e(e){let t=e.length;if(t===3)return Oc.longitude=Z.toRadians(e[0]),Oc.latitude=Z.toRadians(e[1]),Oc.height=e[2],ie.default.cartographicToCartesian(Oc,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=Z.toRadians(e[i+1]),Oc.latitude=Z.toRadians(e[i+2]),Oc.height=e[i+3],ie.default.cartographicToCartesian(Oc,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function b4(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return Y$e(o);let r=e.spherical;if(l(r))return O$e(r);let s=e.cartographicRadians;if(l(s))return H$e(s);let a=e.cartographicDegrees;if(l(a))return z$e(a);throw new de(`${JSON.stringify(e)} is not a valid CZML interval.`)}function Zfe(e,t){m.unpack(e,t,oo),m.normalize(oo,oo),m.pack(oo,e,t)}function K$e(e){let t=b4(e);if(t.length===3)return Zfe(t,0),t;for(let n=1;n<t.length;n+=4)Zfe(t,n);return t}function Bfe(e,t){Pe.unpack(e,t,b5),Pe.normalize(b5,b5),Pe.pack(b5,e,t)}function J$e(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return Bfe(t,0),t;for(let n=1;n<t.length;n+=5)Bfe(t,n)}return t}function wfe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Ke:e.hasOwnProperty("cartesian2")?D:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?m:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?B0:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?U:e.hasOwnProperty("arcType")?dn:e.hasOwnProperty("classificationType")?$n:e.hasOwnProperty("colorBlendMode")?Fc:e.hasOwnProperty("cornerType")?Hi:e.hasOwnProperty("heightReference")?et:e.hasOwnProperty("horizontalOrigin")?wi:e.hasOwnProperty("date")?j:e.hasOwnProperty("labelStyle")?nr:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?zt:e.hasOwnProperty("distanceDisplayCondition")?Qt:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Pe:e.hasOwnProperty("shadowMode")?Gn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Hh:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?le:e.hasOwnProperty("uri")?_W.default:e.hasOwnProperty("verticalOrigin")?kn:Object}function j$e(e,t,n){switch(e){case dn:return dn[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Ke:return t.boundingRectangle;case D:return t.cartesian2;case m:return b4(t);case B0:return K$e(t);case U:return U$e(t);case $n:return $n[t.classificationType??t];case Fc:return Fc[t.colorBlendMode??t];case Hi:return Hi[t.cornerType??t];case et:return et[t.heightReference??t];case wi:return wi[t.horizontalOrigin??t];case Image:return Gfe(t,n);case j:return j.fromIso8601(t.date??t);case nr:return nr[t.labelStyle??t];case Number:return t.number??t;case zt:return t.nearFarScalar;case Qt:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Pe:return J$e(t);case _m:return t.number??t;case nS:return nS[t.portionToDisplay??t];case Gn:return Gn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Hh:return Hh[t.stripeOrientation??t];case le:return k$e(t);case _W.default:return Gfe(t,n);case kn:return kn[t.verticalOrigin??t];default:throw new de(`Unknown CzmlDataSource interval type: ${e}`)}}var q$e={HERMITE:AW,LAGRANGE:gW,LINEAR:Nx};function y5(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:q$e[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=su[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=su[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var Xfe={iso8601:void 0};function Rr(e){if(l(e))return Xfe.iso8601=e,wn.fromIso8601(Xfe)}function y4(e){let t=ze.MAXIMUM_INTERVAL.clone();return t.data=e,t}function Wfe(e){let t=new Uc;return t.intervals.addInterval(y4(e)),t}function Ffe(e){let t=new ka(e.referenceFrame);return t.intervals.addInterval(y4(e)),t}function C5(e,t,n,i,o,r,s){let a=Rr(i.interval);l(o)&&(l(a)?a=wn.intersect(a,o,kx):a=o);let c,d,u,h=!l(i.reference)&&!l(i.velocityReference),p=l(a)&&!a.equals(ze.MAXIMUM_INTERVAL);if(i.delete===!0){if(!p){t[n]=void 0;return}return Hfe(t[n],a)}let g=!1;if(h){if(d=j$e(e,i,r),!l(d))return;c=e.packedLength??1,u=d.length??1,g=!l(i.array)&&typeof d!="string"&&u>c&&e!==Object}let f=typeof e.unpack=="function"&&e!==_m;if(!g&&!p){h?t[n]=new di(f?e.unpack(d,0):d):t[n]=Vfe(e,s,i);return}let b=t[n],x,I=i.epoch;if(l(I)&&(x=j.fromIso8601(I)),g&&!p){b instanceof cu||(t[n]=b=new cu(e)),b.addSamplesPackedArray(d,x),y5(i,b);return}let _;if(!g&&p){a=a.clone(),h?a.data=f?e.unpack(d,0):d:a.data=Vfe(e,s,i),l(b)||(t[n]=b=h?new Eg:new Uc),h&&b instanceof Eg?b.intervals.addInterval(a):b instanceof Uc?(h&&(a.data=new di(a.data)),b.intervals.addInterval(a)):(t[n]=b=Wfe(b),h&&(a.data=new di(a.data)),b.intervals.addInterval(a));return}l(b)||(t[n]=b=new Uc),b instanceof Uc||(t[n]=b=Wfe(b));let E=b.intervals;_=E.findInterval(a),(!l(_)||!(_.data instanceof cu))&&(_=a.clone(),_.data=new cu(e),E.addInterval(_)),_.data.addSamplesPackedArray(d,x),y5(i,_.data)}function Hfe(e,t){if(e instanceof cu){e.removeSamples(t);return}else if(e instanceof Eg){e.intervals.removeInterval(t);return}else if(e instanceof Uc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=wn.intersect(n.get(i),t,kx);o.isEmpty||Hfe(o.data,t)}n.removeInterval(t);return}}function Ie(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)C5(e,t,n,i[a],o,r,s);else C5(e,t,n,i,o,r,s)}function Pfe(e,t,n,i,o,r){let s=Rr(n.interval);l(i)&&(l(s)?s=wn.intersect(s,i,kx):s=i);let a=l(n.cartesianVelocity)?1:0,c=m.packedLength*(a+1),d,u,h=!l(n.reference),p=l(s)&&!s.equals(ze.MAXIMUM_INTERVAL);if(n.delete===!0){if(!p){e[t]=void 0;return}return zfe(e[t],s)}let g,f=!1;if(h&&(l(n.referenceFrame)&&(g=eo[n.referenceFrame]),g=g??eo.FIXED,d=b4(n),u=d.length??1,f=u>c),!f&&!p){h?e[t]=new dl(m.unpack(d),g):e[t]=xW(r,n.reference);return}let b=e[t],x,I=n.epoch;if(l(I)&&(x=j.fromIso8601(I)),f&&!p){(!(b instanceof Oa)||l(g)&&b.referenceFrame!==g)&&(e[t]=b=new Oa(g,a)),b.addSamplesPackedArray(d,x),y5(n,b);return}let _;if(!f&&p){s=s.clone(),h?s.data=m.unpack(d):s.data=xW(r,n.reference),l(b)||(h?b=new _g(g):b=new ka(g),e[t]=b),h&&b instanceof _g&&l(g)&&b.referenceFrame===g?b.intervals.addInterval(s):b instanceof ka?(h&&(s.data=new dl(s.data,g)),b.intervals.addInterval(s)):(e[t]=b=Ffe(b),h&&(s.data=new dl(s.data,g)),b.intervals.addInterval(s));return}l(b)?b instanceof ka||(e[t]=b=Ffe(b)):e[t]=b=new ka(g);let E=b.intervals;_=E.findInterval(s),(!l(_)||!(_.data instanceof Oa)||l(g)&&_.data.referenceFrame!==g)&&(_=s.clone(),_.data=new Oa(g,a),E.addInterval(_)),_.data.addSamplesPackedArray(d,x),y5(n,_.data)}function zfe(e,t){if(e instanceof Oa){e.removeSamples(t);return}else if(e instanceof _g){e.intervals.removeInterval(t);return}else if(e instanceof ka){let n=e.intervals;for(let i=0;i<n.length;++i){let o=wn.intersect(n.get(i),t,kx);o.isEmpty||zfe(o.data,t)}n.removeInterval(t);return}}function Kfe(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)Pfe(e,t,n[s],i,o,r);else Pfe(e,t,n,i,o,r)}function Mfe(e,t,n,i){l(n.references)?x5(e,t,n.references,n.interval,i,qT,Uc):(l(n.cartesian2)?n.array=D.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=D.unpackArray(n.cartesian)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i))}function vfe(e,t,n,i,o,r){let s=Rr(n.interval);l(i)&&(l(s)?s=wn.intersect(s,i,kx):s=i);let a=e[t],c,d;if(l(s)){a instanceof XT||(a=new XT,e[t]=a);let h=a.intervals;d=h.findInterval({start:s.start,stop:s.stop}),l(d)?c=d.data:(d=s.clone(),h.addInterval(d))}else c=a;let u;l(n.solidColor)?(c instanceof qt||(c=new qt),u=n.solidColor,Ie(U,c,"color",u.color,void 0,void 0,r)):l(n.grid)?(c instanceof kT||(c=new kT),u=n.grid,Ie(U,c,"color",u.color,void 0,o,r),Ie(Number,c,"cellAlpha",u.cellAlpha,void 0,o,r),Ie(D,c,"lineCount",u.lineCount,void 0,o,r),Ie(D,c,"lineThickness",u.lineThickness,void 0,o,r),Ie(D,c,"lineOffset",u.lineOffset,void 0,o,r)):l(n.image)?(c instanceof Lb||(c=new Lb),u=n.image,Ie(Image,c,"image",u.image,void 0,o,r),Ie(D,c,"repeat",u.repeat,void 0,o,r),Ie(U,c,"color",u.color,void 0,o,r),Ie(Boolean,c,"transparent",u.transparent,void 0,o,r)):l(n.stripe)?(c instanceof eS||(c=new eS),u=n.stripe,Ie(Hh,c,"orientation",u.orientation,void 0,o,r),Ie(U,c,"evenColor",u.evenColor,void 0,o,r),Ie(U,c,"oddColor",u.oddColor,void 0,o,r),Ie(Number,c,"offset",u.offset,void 0,o,r),Ie(Number,c,"repeat",u.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof V0||(c=new V0),u=n.polylineOutline,Ie(U,c,"color",u.color,void 0,o,r),Ie(U,c,"outlineColor",u.outlineColor,void 0,o,r),Ie(Number,c,"outlineWidth",u.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof JT||(c=new JT),u=n.polylineGlow,Ie(U,c,"color",u.color,void 0,o,r),Ie(Number,c,"glowPower",u.glowPower,void 0,o,r),Ie(Number,c,"taperPower",u.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof OT||(c=new OT),u=n.polylineArrow,Ie(U,c,"color",u.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof zT||(c=new zT),u=n.polylineDash,Ie(U,c,"color",u.color,void 0,void 0,r),Ie(U,c,"gapColor",u.gapColor,void 0,void 0,r),Ie(Number,c,"dashLength",u.dashLength,void 0,o,r),Ie(Number,c,"dashPattern",u.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof BT||(c=new BT),u=n.checkerboard,Ie(U,c,"evenColor",u.evenColor,void 0,o,r),Ie(U,c,"oddColor",u.oddColor,void 0,o,r),Ie(D,c,"repeat",u.repeat,void 0,o,r)),l(d)?d.data=c:e[t]=c}function lu(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)vfe(e,t,n[s],i,o,r);else vfe(e,t,n,i,o,r)}function $$e(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function eet(e,t,n,i){let o=t.description;l(o)&&Ie(String,e,"description",o,void 0,i,n)}function tet(e,t,n,i){let o=t.position;l(o)&&Kfe(e,"position",o,void 0,i,n)}function net(e,t,n,i){let o=t.viewFrom;l(o)&&Ie(m,e,"viewFrom",o,void 0,i,n)}function iet(e,t,n,i){let o=t.orientation;l(o)&&Ie(Pe,e,"orientation",o,void 0,i,n)}function oet(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new ml);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)C5(wfe(s[a]),e.properties,r,s[a],void 0,i,n);else C5(wfe(s),e.properties,r,s,void 0,i,n)}}}function x5(e,t,n,i,o,r,s){let a=n.map(function(c){return xW(o,c)});if(l(i)){i=Rr(i);let c=e[t];if(!(c instanceof s)){let d=new s;d.intervals.addInterval(y4(c)),e[t]=c=d}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function Nfe(e,t,n,i){let o=n.references;l(o)?x5(e,t,o,n.interval,i,qT,Uc):Ie(Array,e,t,n,void 0,void 0,i)}function Dfe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Nfe(e,t,n[o],i);else Nfe(e,t,n,i)}function Qfe(e,t,n,i){let o=n.references;l(o)?x5(e,t,o,n.interval,i,xg,ka):(l(n.cartesian)?n.array=m.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=m.fromRadiansArrayHeights(n.cartographicRadians,ie.default):l(n.cartographicDegrees)&&(n.array=m.fromDegreesArrayHeights(n.cartographicDegrees,ie.default)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i))}function EW(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Qfe(e,t,n[o],i);else Qfe(e,t,n,i)}function ret(e){return m.unpackArray(e)}function set(e){return m.fromRadiansArrayHeights(e,ie.default)}function aet(e){return m.fromDegreesArrayHeights(e,ie.default)}function Ufe(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return x5(a,"positions",s,n.interval,i,xg,ka),a.positions});e[t]=new xg(r)}else l(n.cartesian)?n.array=n.cartesian.map(ret):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(set):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(aet)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i)}function cet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Ufe(e,t,n[o],i);else Ufe(e,t,n,i)}function det(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Mfe(e,t,n[o],i);else Mfe(e,t,n,i)}function uet(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new as),r.addInterval(Rr(o[s]));else r=new as,r.addInterval(Rr(o));e.availability=r}function met(e,t,n,i,o){l(t)&&Ie(B0,e,"alignedAxis",t,n,i,o)}function het(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=Rr(o.interval),s=e.billboard;l(s)||(e.billboard=s=new _c),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Image,s,"image",o.image,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(D,s,"pixelOffset",o.pixelOffset,r,i,n),Ie(m,s,"eyeOffset",o.eyeOffset,r,i,n),Ie(wi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ie(kn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),met(s,o.alignedAxis,r,i,n),Ie(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(zt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ie(Ke,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function fet(e,t,n,i){let o=t.box;if(!l(o))return;let r=Rr(o.interval),s=e.box;l(s)||(e.box=s=new mC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(m,s,"dimensions",o.dimensions,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function pet(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=Rr(o.interval),s=e.corridor;l(s)||(e.corridor=s=new fC),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(Hi,s,"cornerType",o.cornerType,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Aet(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=Rr(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new pC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"length",o.length,r,i,n),Ie(Number,s,"topRadius",o.topRadius,r,i,n),Ie(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ie(Number,s,"slices",o.slices,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function get(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new de("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new de("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function bet(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=Rr(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new AC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ie(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function yet(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=Rr(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new gC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(m,s,"radii",o.radii,r,i,n),Ie(m,s,"innerRadii",o.innerRadii,r,i,n),Ie(Number,s,"minimumClock",o.minimumClock,r,i,n),Ie(Number,s,"maximumClock",o.maximumClock,r,i,n),Ie(Number,s,"minimumCone",o.minimumCone,r,i,n),Ie(Number,s,"maximumCone",o.maximumCone,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ie(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ie(Number,s,"subdivisions",o.subdivisions,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Cet(e,t,n,i){let o=t.label;if(!l(o))return;let r=Rr(o.interval),s=e.label;l(s)||(e.label=s=new dh),Ie(Boolean,s,"show",o.show,r,i,n),Ie(String,s,"text",o.text,r,i,n),Ie(String,s,"font",o.font,r,i,n),Ie(nr,s,"style",o.style,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(Boolean,s,"showBackground",o.showBackground,r,i,n),Ie(U,s,"backgroundColor",o.backgroundColor,r,i,n),Ie(D,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ie(D,s,"pixelOffset",o.pixelOffset,r,i,n),Ie(m,s,"eyeOffset",o.eyeOffset,r,i,n),Ie(wi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ie(kn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"fillColor",o.fillColor,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(zt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function xet(e,t,n,i){let o=t.model;if(!l(o))return;let r=Rr(o.interval),s=e.model;l(s)||(e.model=s=new uA),Ie(Boolean,s,"show",o.show,r,i,n),Ie(_W.default,s,"uri",o.gltf,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ie(Number,s,"maximumScale",o.maximumScale,r,i,n),Ie(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ie(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ie(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ie(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(Fc,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ie(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,d=o.nodeTransformations;if(l(d))if(Array.isArray(d))for(a=0,c=d.length;a<c;++a)kfe(s,d[a],r,i,n);else kfe(s,d,r,i,n);let u=o.articulations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)Yfe(s,u[a],r,i,n);else Yfe(s,u,r,i,n)}function kfe(e,t,n,i,o){let r=Rr(t.interval);l(n)&&(l(r)?r=wn.intersect(r,n,kx):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,d=a.length;c<d;++c){let u=a[c];if(u==="interval")continue;let h=t[u];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new ml),s.hasProperty(u)||s.addProperty(u);let p=s[u];l(p)||(s[u]=p=new bC),Ie(m,p,"translation",h.translation,r,i,o),Ie(Pe,p,"rotation",h.rotation,r,i,o),Ie(m,p,"scale",h.scale,r,i,o)}}function Yfe(e,t,n,i,o){let r=Rr(t.interval);l(n)&&(l(r)?r=wn.intersect(r,n,kx):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,d=a.length;c<d;++c){let u=a[c];if(u==="interval")continue;let h=t[u];l(h)&&(l(s)||(e.articulations=s=new ml),s.hasProperty(u)||s.addProperty(u),Ie(Number,s,u,h,r,i,o))}}function Iet(e,t,n,i){let o=t.path;if(!l(o))return;let r=Rr(o.interval),s=e.path;l(s)||(e.path=s=new mA),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"leadTime",o.leadTime,r,i,n),Ie(Number,s,"trailTime",o.trailTime,r,i,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"resolution",o.resolution,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function _et(e,t,n,i){let o=t.point;if(!l(o))return;let r=Rr(o.interval),s=e.point;l(s)||(e.point=s=new CC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"pixelSize",o.pixelSize,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function IW(e){this.polygon=e,this._definitionChanged=new Ce}Object.defineProperties(IW.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});IW.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new lc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new lc(n,i)};IW.prototype.equals=function(e){return this===e||e instanceof IW&&z.equals(this.polygon._positions,e.polygon._positions)&&z.equals(this.polygon._holes,e.polygon._holes)};function Eet(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=Rr(o.interval),s=e.polygon;l(s)||(e.polygon=s=new uh),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"_positions",o.positions,n),cet(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new IW(s)),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ie(Boolean,s,"closeTop",o.closeTop,r,i,n),Ie(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ie(dn,s,"arcType",o.arcType,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Tet(e){return e?dn.GEODESIC:dn.NONE}function Let(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=Rr(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new Zc),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),lu(s,"material",o.material,r,i,n),lu(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ie(dn,s,"arcType",o.arcType,r,i,n),Ie(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ie(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=Q$e(a.followSurface,Tet)}}function Ret(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=Rr(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new xC),EW(s,"positions",o.positions,n),det(s,"shape",o.shape,n),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Hi,s,"cornerType",o.cornerType,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Vet(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=Rr(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new mh),Ie(Boolean,s,"show",o.show,r,i,n),Ie(le,s,"coordinates",o.coordinates,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Get(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=Rr(o.interval),s=e.tileset;l(s)||(e.tileset=s=new yC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(_W.default,s,"uri",o.uri,r,i,n),Ie(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Zet(e,t,n,i){let o=t.wall;if(!l(o))return;let r=Rr(o.interval),s=e.wall;l(s)||(e.wall=s=new hA),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Dfe(s,"minimumHeights",o.minimumHeights,n),Dfe(s,"maximumHeights",o.maximumHeights,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Ofe(e,t,n,i,o){let r=e.id;if(l(r)||(r=qn()),g4=r,!l(o._version)&&r!=="document")throw new de("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")get(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}g4=void 0}function Bet(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(ze.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=j.secondsDifference(s,r),c=Math.round(a/120);return t=new Oh,t.startTime=j.clone(r),t.stopTime=j.clone(s),t.clockRange=ls.LOOP_STOP,t.multiplier=c,t.currentTime=j.clone(r),t.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Oh,t.startTime=ze.MINIMUM_VALUE.clone(),t.stopTime=ze.MAXIMUM_VALUE.clone(),t.currentTime=ze.MINIMUM_VALUE.clone(),t.clockRange=ls.LOOP_STOP,t.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=Rr(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=j.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=ls[n.range]??ls.LOOP_STOP),l(n.step)&&(t.clockStep=Ro[n.step]??Ro.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function Jfe(e,t,n,i){n=n??Y.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Gt(s)),e._credit=s,typeof t=="string"||t instanceof Ve){t=Ve.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let d=c.length;for(let u=0;u<d;u++)a.push(c[u])}}return r=Ve.createIfNeeded(r),cs.setLoading(e,!0),Promise.resolve(o).then(function(a){return wet(e,a,r,i)}).catch(function(a){return cs.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function wet(e,t,n,i){cs.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new jfe,o.removeAll()),Ms._processCzml(t,o,n,void 0,e);let r=Bet(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=yg(n.getUrlComponent()),r=!0),cs.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function jfe(){this.name=void 0,this.clock=void 0}function Ms(e){this._name=e,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._clock=void 0,this._documentPacket=new jfe,this._version=void 0,this._entityCollection=new Ca(this),this._entityCluster=new ou,this._credit=void 0,this._resourceCredits=[]}Ms.load=function(e,t){return new Ms().load(e,t)};Object.defineProperties(Ms.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Ms.updaters=[het,fet,pet,Aet,bet,yet,Cet,xet,$$e,eet,Iet,_et,Eet,Let,Ret,oet,Vet,tet,Get,net,Zet,iet,uet];Ms.registerUpdater=function(e){Ms.updaters.includes(e)||Ms.updaters.push(e)};Ms.unregisterUpdater=function(e){if(Ms.updaters.includes(e)){let t=Ms.updaters.indexOf(e);Ms.updaters.splice(t,1)}};Ms.prototype.process=function(e,t){return Jfe(this,e,t,!1)};Ms.prototype.load=function(e,t){return Jfe(this,e,t,!0)};Ms.prototype.update=function(e){return!0};Ms.processPacketData=Ie;Ms.processPositionPacketData=Kfe;Ms.processMaterialPacketData=lu;Ms._processCzml=function(e,t,n,i,o){if(i=i??Ms.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)Ofe(e[r],t,i,n,o);else Ofe(e,t,i,n,o)};var TW=Ms;var wci=y(C(),1);function Xl(){this._dataSources=[],this._dataSourceAdded=new Ce,this._dataSourceRemoved=new Ce,this._dataSourceMoved=new Ce}Object.defineProperties(Xl.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});Xl.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};Xl.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};Xl.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};Xl.prototype.contains=function(e){return this.indexOf(e)!==-1};Xl.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};Xl.prototype.get=function(e){return this._dataSources[e]};Xl.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function I5(e,t){return e.indexOf(t)}function qfe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=Z.clamp(t,0,o),n=Z.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}Xl.prototype.raise=function(e){let t=I5(this._dataSources,e);qfe(this,t,t+1)};Xl.prototype.lower=function(e){let t=I5(this._dataSources,e);qfe(this,t,t-1)};Xl.prototype.raiseToTop=function(e){let t=I5(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};Xl.prototype.lowerToBottom=function(e){let t=I5(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};Xl.prototype.isDestroyed=function(){return!1};Xl.prototype.destroy=function(){return this.removeAll(!0),me(this)};var SW=Xl;var qCi=y(C(),1);var Yci=y(C(),1);var Nci=y(C(),1);function Ha(e){e=e??Y.EMPTY_OBJECT,this._primitives=[],this._guid=qn(),this._primitiveAdded=new Ce,this._primitiveRemoved=new Ce,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Ha.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Ha.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Ha.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Ha.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Ha.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Ha.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function _5(e,t){return e._primitives.indexOf(t)}Ha.prototype.raise=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Ha.prototype.raiseToTop=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Ha.prototype.lower=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Ha.prototype.lowerToBottom=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Ha.prototype.get=function(e){return this._primitives[e]};Ha.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Ha.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Ha.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Ha.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Ha.prototype.isDestroyed=function(){return!1};Ha.prototype.destroy=function(){return this.removeAll(),me(this)};var Wl=Ha;function rp(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(rp.prototype,{length:{get:function(){return this._length}}});rp.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new Wl({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};rp.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};rp.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};rp.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};rp.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};rp.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};rp.prototype.isDestroyed=function(){return!1};rp.prototype.destroy=function(){return this.removeAll(),me(this)};var LW=rp;var Vbi=y(C(),1);var Jci=y(C(),1);function iS(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new Bt}iS.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};iS.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};iS.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};iS.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};iS.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):At.FAILED};var Yx=iS;var WAi=y(C(),1);var mdi=y(C(),1);var Lli=y(C(),1);var nli=y(C(),1);var x4={},E5=new m,$fe=new m,epe=new Pe,tpe=new $;function oS(e,t,n,i,o,r,s,a,c,d){let u=e+t;m.multiplyByScalar(i,Math.cos(u),E5),m.multiplyByScalar(n,Math.sin(u),$fe),m.add(E5,$fe,E5);let h=Math.cos(e);h=h*h;let p=Math.sin(e);p=p*p;let f=r/Math.sqrt(s*h+o*p)/a;return Pe.fromAxisAngle(E5,f,epe),$.fromQuaternion(epe,tpe),$.multiplyByVector(tpe,c,d),m.normalize(d,d),m.multiplyByScalar(d,a,d),d}var npe=new m,ipe=new m,C4=new m,Xet=new m;x4.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,d=n?c:0;for(let u=0;u<c;u+=3){let h=u+1,p=u+2,g=m.fromArray(e,u,npe);i.scaleToGeodeticSurface(g,g);let f=m.clone(g,ipe),b=i.geodeticSurfaceNormal(g,Xet),x=m.multiplyByScalar(b,o,C4);m.add(g,x,g),n&&(m.multiplyByScalar(b,r,x),m.add(f,x,f),a[u+d]=f.x,a[h+d]=f.y,a[p+d]=f.z),a[u]=g.x,a[h]=g.y,a[p]=g.z}return a};var Wet=new m,Fet=new m,Pet=new m;x4.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,d=o*o,u=o*i,h=m.magnitude(s),p=m.normalize(s,Wet),g=m.cross(m.UNIT_Z,s,Fet);g=m.normalize(g,g);let f=m.cross(p,g,Pet),b=1+Math.ceil(Z.PI_OVER_TWO/a),x=Z.PI_OVER_TWO/(b-1),I=Z.PI_OVER_TWO-b*x;I<0&&(b-=Math.ceil(Math.abs(I)/x));let _=2*(b*(b+2)),E=t?new Array(_*3):void 0,S=0,R=npe,G=ipe,B=b*4*3,w=B-1,F=0,P=n?new Array(B):void 0,A,T,L,V,W;for(I=Z.PI_OVER_TWO,R=oS(I,r,f,g,c,u,d,h,p,R),t&&(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z),n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x),I=Z.PI_OVER_TWO-x,A=1;A<b+1;++A){if(R=oS(I,r,f,g,c,u,d,h,p,R),G=oS(Math.PI-I,r,f,g,c,u,d,h,p,G),t){for(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,L=2*A+2,T=1;T<L-1;++T)V=T/(L-1),W=m.lerp(R,G,V,C4),E[S++]=W.x,E[S++]=W.y,E[S++]=W.z;E[S++]=G.x,E[S++]=G.y,E[S++]=G.z}n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,P[F++]=G.x,P[F++]=G.y,P[F++]=G.z),I=Z.PI_OVER_TWO-(A+1)*x}for(A=b;A>1;--A){if(I=Z.PI_OVER_TWO-(A-1)*x,R=oS(-I,r,f,g,c,u,d,h,p,R),G=oS(I+Math.PI,r,f,g,c,u,d,h,p,G),t){for(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,L=2*(A-1)+2,T=1;T<L-1;++T)V=T/(L-1),W=m.lerp(R,G,V,C4),E[S++]=W.x,E[S++]=W.y,E[S++]=W.z;E[S++]=G.x,E[S++]=G.y,E[S++]=G.z}n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,P[F++]=G.x,P[F++]=G.y,P[F++]=G.z)}I=Z.PI_OVER_TWO,R=oS(-I,r,f,g,c,u,d,h,p,R);let M={};return t&&(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,M.positions=E,M.numPts=b),n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,M.outerPositions=P),M};var Ad=x4;var rS=new m,I4=new m,_4=new m,ope=new m,ea=new D,rpe=new $,Met=new $,E4=new Pe,spe=new m,ape=new m,cpe=new m,L5=new ge,lpe=new m,dpe=new D,upe=new D;function mpe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,d=n?e.length/3*2:e.length/3,u=t.shadowVolume,h=i.st?new Float32Array(d*2):void 0,p=i.normal?new Float32Array(d*3):void 0,g=i.tangent?new Float32Array(d*3):void 0,f=i.bitangent?new Float32Array(d*3):void 0,b=u?new Float32Array(d*3):void 0,x=0,I=spe,_=ape,E=cpe,S=new Di(a),R=S.project(a.cartesianToCartographic(o,L5),lpe),G=a.scaleToGeodeticSurface(o,rS);a.geodeticSurfaceNormal(G,G);let B=rpe,w=Met;if(c!==0){let W=Pe.fromAxisAngle(G,c,E4);B=$.fromQuaternion(W,B),W=Pe.fromAxisAngle(G,-c,E4),w=$.fromQuaternion(W,w)}else B=$.clone($.IDENTITY,B),w=$.clone($.IDENTITY,w);let F=D.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,dpe),P=D.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,upe),A=e.length,T=n?A:0,L=T/3*2;for(let W=0;W<A;W+=3){let M=W+1,Q=W+2,N=m.fromArray(e,W,rS);if(i.st){let k=$.multiplyByVector(B,N,I4),v=S.project(a.cartesianToCartographic(k,L5),_4);m.subtract(v,R,v),ea.x=(v.x+r)/(2*r),ea.y=(v.y+s)/(2*s),F.x=Math.min(ea.x,F.x),F.y=Math.min(ea.y,F.y),P.x=Math.max(ea.x,P.x),P.y=Math.max(ea.y,P.y),n&&(h[x+L]=ea.x,h[x+1+L]=ea.y),h[x++]=ea.x,h[x++]=ea.y}(i.normal||i.tangent||i.bitangent||u)&&(I=a.geodeticSurfaceNormal(N,I),u&&(b[W+T]=-I.x,b[M+T]=-I.y,b[Q+T]=-I.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(_=m.normalize(m.cross(m.UNIT_Z,I,_),_),$.multiplyByVector(w,_,_)),i.normal&&(p[W]=I.x,p[M]=I.y,p[Q]=I.z,n&&(p[W+T]=-I.x,p[M+T]=-I.y,p[Q+T]=-I.z)),i.tangent&&(g[W]=_.x,g[M]=_.y,g[Q]=_.z,n&&(g[W+T]=-_.x,g[M+T]=-_.y,g[Q+T]=-_.z)),i.bitangent&&(E=m.normalize(m.cross(I,_,E),E),f[W]=E.x,f[M]=E.y,f[Q]=E.z,n&&(f[W+T]=E.x,f[M+T]=E.y,f[Q+T]=E.z))))}if(i.st){A=h.length;for(let W=0;W<A;W+=2)h[W]=(h[W]-F.x)/(P.x-F.x),h[W+1]=(h[W+1]-F.y)/(P.y-F.y)}let V=new xn;if(i.position){let W=Ad.raisePositionsToHeight(e,t,n);V.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:W})}if(i.st&&(V.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(V.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),i.tangent&&(V.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(V.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),u&&(V.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),n&&l(t.offsetAttribute)){let W=new Uint8Array(d);if(t.offsetAttribute===pn.TOP)W=W.fill(1,0,d/2);else{let M=t.offsetAttribute===pn.NONE?0:1;W=W.fill(M)}V.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:W})}return V}function hpe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var Ox=new m;function vet(e){let t=e.center;Ox=m.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,Ox),e.height,Ox),Ox=m.add(t,Ox,Ox);let n=new ue(Ox,e.semiMajorAxis),i=Ad.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=mpe(o,e,!1),a=hpe(r);return a=Me.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Net(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,d=t.stRotation,u=e.length/3*2,h=new Float64Array(u*3),p=n.st?new Float32Array(u*2):void 0,g=n.normal?new Float32Array(u*3):void 0,f=n.tangent?new Float32Array(u*3):void 0,b=n.bitangent?new Float32Array(u*3):void 0,x=t.shadowVolume,I=x?new Float32Array(u*3):void 0,_=0,E=spe,S=ape,R=cpe,G=new Di(s),B=G.project(s.cartesianToCartographic(i,L5),lpe),w=s.scaleToGeodeticSurface(i,rS);s.geodeticSurfaceNormal(w,w);let F=Pe.fromAxisAngle(w,d,E4),P=$.fromQuaternion(F,rpe),A=D.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,dpe),T=D.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,upe),L=e.length,V=L/3*2;for(let M=0;M<L;M+=3){let Q=M+1,N=M+2,k=m.fromArray(e,M,rS),v;if(n.st){let H=$.multiplyByVector(P,k,I4),ee=G.project(s.cartesianToCartographic(H,L5),_4);m.subtract(ee,B,ee),ea.x=(ee.x+o)/(2*o),ea.y=(ee.y+r)/(2*r),A.x=Math.min(ea.x,A.x),A.y=Math.min(ea.y,A.y),T.x=Math.max(ea.x,T.x),T.y=Math.max(ea.y,T.y),p[_+V]=ea.x,p[_+1+V]=ea.y,p[_++]=ea.x,p[_++]=ea.y}k=s.scaleToGeodeticSurface(k,k),v=m.clone(k,I4),E=s.geodeticSurfaceNormal(k,E),x&&(I[M+L]=-E.x,I[Q+L]=-E.y,I[N+L]=-E.z);let O=m.multiplyByScalar(E,a,ope);if(k=m.add(k,O,k),O=m.multiplyByScalar(E,c,O),v=m.add(v,O,v),n.position&&(h[M+L]=v.x,h[Q+L]=v.y,h[N+L]=v.z,h[M]=k.x,h[Q]=k.y,h[N]=k.z),n.normal||n.tangent||n.bitangent){R=m.clone(E,R);let H=m.fromArray(e,(M+3)%L,ope);m.subtract(H,k,H);let ee=m.subtract(v,k,_4);E=m.normalize(m.cross(ee,H,E),E),n.normal&&(g[M]=E.x,g[Q]=E.y,g[N]=E.z,g[M+L]=E.x,g[Q+L]=E.y,g[N+L]=E.z),n.tangent&&(S=m.normalize(m.cross(R,E,S),S),f[M]=S.x,f[Q]=S.y,f[N]=S.z,f[M+L]=S.x,f[M+1+L]=S.y,f[M+2+L]=S.z),n.bitangent&&(b[M]=R.x,b[Q]=R.y,b[N]=R.z,b[M+L]=R.x,b[Q+L]=R.y,b[N+L]=R.z)}}if(n.st){L=p.length;for(let M=0;M<L;M+=2)p[M]=(p[M]-A.x)/(T.x-A.x),p[M+1]=(p[M+1]-A.y)/(T.y-A.y)}let W=new xn;if(n.position&&(W.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(W.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:p})),n.normal&&(W.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(W.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),n.bitangent&&(W.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),x&&(W.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:I})),l(t.offsetAttribute)){let M=new Uint8Array(u);if(t.offsetAttribute===pn.TOP)M=M.fill(1,0,u/2);else{let Q=t.offsetAttribute===pn.NONE?0:1;M=M.fill(Q)}W.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}return W}function Det(e){let t=e.length/3,n=Me.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var T5=new ue,S5=new ue;function Qet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,rS),e.height,rS);T5.center=m.add(t,o,T5.center),T5.radius=i,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),S5.center=m.add(t,o,S5.center),S5.radius=i;let r=Ad.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,d=ue.union(T5,S5),u=mpe(s,e,!0),h=hpe(a),p=h.length;h.length=p*2;let g=s.length/3;for(let S=0;S<p;S+=3)h[S+p]=h[S+2]+g,h[S+1+p]=h[S+1]+g,h[S+2+p]=h[S]+g;let f=Me.createTypedArray(g*2/3,h),b=new pt({attributes:u,indices:f,primitiveType:We.TRIANGLES}),x=Net(c,e);h=Det(c);let I=Me.createTypedArray(c.length*2/3,h),_=new pt({attributes:x,indices:I,primitiveType:We.TRIANGLES}),E=Yn.combineInstances([new wt({geometry:b}),new wt({geometry:_})]);return{boundingSphere:d,attributes:E[0].attributes,indices:E[0].indices}}function fpe(e,t,n,i,o,r,s){let c=Ad.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,d=c.length/3,u=new Array(d);for(let p=0;p<d;++p)u[p]=m.fromArray(c,p*3);let h=le.fromCartesianArray(u,r,s);return h.width>Z.PI&&(h.north=h.north>0?Z.PI_OVER_TWO-Z.EPSILON7:h.north,h.south=h.south<0?Z.EPSILON7-Z.PI_OVER_TWO:h.south,h.east=Z.PI,h.west=-Z.PI),h}function ap(e){e=e??Y.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??ie.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.vertexFormat??we.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=m.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ie.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=we.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}ap.packedLength=m.packedLength+ie.packedLength+we.packedLength+9;ap.pack=function(e,t,n){return n=n??0,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var ppe=new m,Ape=new ie,gpe=new we,sp={center:ppe,ellipsoid:Ape,vertexFormat:gpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};ap.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,ppe);t+=m.packedLength;let o=ie.unpack(e,t,Ape);t+=ie.packedLength;let r=we.unpack(e,t,gpe);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t++],g=e[t++]===1,f=e[t];return l(n)?(n._center=m.clone(i,n._center),n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=d,n._height=u,n._granularity=h,n._extrudedHeight=p,n._shadowVolume=g,n._offsetAttribute=f===-1?void 0:f,n):(sp.height=u,sp.extrudedHeight=p,sp.granularity=h,sp.stRotation=d,sp.rotation=c,sp.semiMajorAxis=s,sp.semiMinorAxis=a,sp.shadowVolume=g,sp.offsetAttribute=f===-1?void 0:f,new ap(sp))};ap.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??ie.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??Z.RADIANS_PER_DEGREE,a=e.rotation??0;return fpe(n,o,r,a,s,i,t)};ap.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!Z.equalsEpsilon(t,n,0,Z.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Qet(o);else if(r=vet(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===pn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new pt({attributes:r.attributes,indices:r.indices,primitiveType:We.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};ap.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new ap({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};function Uet(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Ad.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=m.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return pt._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(ap.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=fpe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Uet(this)),this._textureCoordinateRotationPoints}}});var Fl=ap;var Uli=y(C(),1);var bpe=new m,Hx=new m;function ket(e){let t=e.center;Hx=m.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,Hx),e.height,Hx),Hx=m.add(t,Hx,Hx);let n=new ue(Hx,e.semiMajorAxis),i=Ad.computeEllipsePositions(e,!1,!0).outerPositions,o=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:Ad.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Me.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var R5=new ue,V5=new ue;function Yet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,bpe),e.height,bpe);R5.center=m.add(t,o,R5.center),R5.radius=i,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),V5.center=m.add(t,o,V5.center),V5.radius=i;let r=Ad.computeEllipsePositions(e,!1,!0).outerPositions,s=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:Ad.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=ue.union(R5,V5),c=r.length/3;if(l(e.offsetAttribute)){let f=new Uint8Array(c);if(e.offsetAttribute===pn.TOP)f=f.fill(1,0,c/2);else{let b=e.offsetAttribute===pn.NONE?0:1;f=f.fill(b)}s.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}let d=e.numberOfVerticalLines??16;d=Z.clamp(d,0,c/2);let u=Me.createTypedArray(c,c*2+d*2);c/=2;let h=0,p;for(p=0;p<c;++p)u[h++]=p,u[h++]=(p+1)%c,u[h++]=p+c,u[h++]=(p+1)%c+c;let g;if(d>0){let f=Math.min(d,c);g=Math.round(c/f);let b=Math.min(g*d,c);for(p=0;p<b;p+=g)u[h++]=p,u[h++]=p+c}return{boundingSphere:a,attributes:s,indices:u}}function sS(e){e=e??Y.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??ie.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=m.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ie.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}sS.packedLength=m.packedLength+ie.packedLength+8;sS.pack=function(e,t,n){return n=n??0,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var ype=new m,Cpe=new ie,Lg={center:ype,ellipsoid:Cpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};sS.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,ype);t+=m.packedLength;let o=ie.unpack(e,t,Cpe);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._center=m.clone(i,n._center),n._ellipsoid=ie.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=d,n._extrudedHeight=u,n._numberOfVerticalLines=h,n._offsetAttribute=p===-1?void 0:p,n):(Lg.height=c,Lg.extrudedHeight=u,Lg.granularity=d,Lg.rotation=a,Lg.semiMajorAxis=r,Lg.semiMinorAxis=s,Lg.numberOfVerticalLines=h,Lg.offsetAttribute=p===-1?void 0:p,new sS(Lg))};sS.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!Z.equalsEpsilon(t,n,0,Z.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=Yet(o);else if(r=ket(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===pn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new pt({attributes:r.attributes,indices:r.indices,primitiveType:We.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var du=sS;var xpe=new U,Ipe=m.ZERO,_pe=new m,Epe=new le;function Oet(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function zh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new Oet(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(zh.prototype=Object.create(ii.prototype),zh.prototype.constructor=zh);zh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,xpe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ipe,_pe))),new wt({id:t,geometry:new Fl(this._options),attributes:i})};zh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,xpe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ipe,_pe))),new wt({id:t,geometry:new du(this._options),attributes:r})};zh.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};zh.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||Ci.prototype._isHidden.call(this,e,t)};zh.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!z.isConstant(t.rotation)||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.numberOfVerticalLines)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};zh.prototype._setStaticOptions=function(e,t){let n=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),o=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(ze.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(ze.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(ze.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=z.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),s.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),s.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),s.offsetAttribute=ii.computeGeometryOffsetAttribute(n,i,o,r),s.height=ii.getGeometryHeight(n,i),o=ii.getGeometryExtrudedHeight(o,r),o===ii.CLAMP_TO_GROUND&&(o=Si.getMinimumMaximumHeights(Fl.computeRectangle(s,Epe)).minimumTerrainHeight),s.extrudedHeight=o};zh.DynamicGeometryUpdater=aS;function aS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(aS.prototype=Object.create(yi.prototype),aS.prototype.constructor=aS);aS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t,n)};aS.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.center=z.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=z.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=z.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=z.getValueOrUndefined(t.rotation,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Fl.computeRectangle(i,Epe)).minimumTerrainHeight),i.extrudedHeight=s};var RW=zh;var nui=y(C(),1);var Vdi=y(C(),1);var Het=new m,zet=new m,Ket=new m,Jet=new m,jet=new m,qet=new m(1,1,1),Tpe=Math.cos,Spe=Math.sin;function Rg(e){e=e??Y.EMPTY_OBJECT;let t=e.radii??qet,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??Z.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??Z.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),d=e.vertexFormat??we.DEFAULT;this._radii=m.clone(t),this._innerRadii=m.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=we.clone(d),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Rg.packedLength=2*m.packedLength+we.packedLength+7;Rg.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),n+=m.packedLength,m.pack(e._innerRadii,t,n),n+=m.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var Lpe=new m,Rpe=new m,Vpe=new we,w0={radii:Lpe,innerRadii:Rpe,vertexFormat:Vpe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Rg.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,Lpe);t+=m.packedLength;let o=m.unpack(e,t,Rpe);t+=m.packedLength;let r=we.unpack(e,t,Vpe);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=m.clone(i,n._radii),n._innerRadii=m.clone(o,n._innerRadii),n._vertexFormat=we.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=d,n._stackPartitions=u,n._slicePartitions=h,n._offsetAttribute=p===-1?void 0:p,n):(w0.minimumClock=s,w0.maximumClock=a,w0.minimumCone=c,w0.maximumCone=d,w0.stackPartitions=u,w0.slicePartitions=h,w0.offsetAttribute=p===-1?void 0:p,new Rg(w0))};Rg.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,d=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/Z.TWO_PI),d=Math.round(d*Math.abs(s-r)/Z.PI),c<2&&(c=2),d<2&&(d=2);let u,h,p=0,g=[r],f=[i];for(u=0;u<d;u++)g.push(r+u*(s-r)/(d-1));for(g.push(s),h=0;h<c;h++)f.push(i+h*(o-i)/(c-1));f.push(o);let b=g.length,x=f.length,I=0,_=1,E=n.x!==t.x||n.y!==t.y||n.z!==t.z,S=!1,R=!1,G=!1;E&&(_=2,r>0&&(S=!0,I+=c-1),s<Math.PI&&(R=!0,I+=c-1),(o-i)%Z.TWO_PI?(G=!0,I+=(d-1)*2+1):I+=1);let B=x*b*_,w=new Float64Array(B*3),F=new Array(B).fill(!1),P=new Array(B).fill(!1),A=c*d*_,T=6*(A+I+1-(c+d)*_),L=Me.createTypedArray(A,T),V=a.normal?new Float32Array(B*3):void 0,W=a.tangent?new Float32Array(B*3):void 0,M=a.bitangent?new Float32Array(B*3):void 0,Q=a.st?new Float32Array(B*2):void 0,N=new Array(b),k=new Array(b);for(u=0;u<b;u++)N[u]=Spe(g[u]),k[u]=Tpe(g[u]);let v=new Array(x),O=new Array(x);for(h=0;h<x;h++)O[h]=Tpe(f[h]),v[h]=Spe(f[h]);for(u=0;u<b;u++)for(h=0;h<x;h++)w[p++]=t.x*N[u]*O[h],w[p++]=t.y*N[u]*v[h],w[p++]=t.z*k[u];let H=B/2;if(E)for(u=0;u<b;u++)for(h=0;h<x;h++)w[p++]=n.x*N[u]*O[h],w[p++]=n.y*N[u]*v[h],w[p++]=n.z*k[u],F[H]=!0,u>0&&u!==b-1&&h!==0&&h!==x-1&&(P[H]=!0),H++;p=0;let ee,K;for(u=1;u<b-2;u++)for(ee=u*x,K=(u+1)*x,h=1;h<x-2;h++)L[p++]=K+h,L[p++]=K+h+1,L[p++]=ee+h+1,L[p++]=K+h,L[p++]=ee+h+1,L[p++]=ee+h;if(E){let je=b*x;for(u=1;u<b-2;u++)for(ee=je+u*x,K=je+(u+1)*x,h=1;h<x-2;h++)L[p++]=K+h,L[p++]=ee+h,L[p++]=ee+h+1,L[p++]=K+h,L[p++]=ee+h+1,L[p++]=K+h+1}let te,q;if(E){if(S)for(q=b*x,u=1;u<x-2;u++)L[p++]=u,L[p++]=u+1,L[p++]=q+u+1,L[p++]=u,L[p++]=q+u+1,L[p++]=q+u;if(R)for(te=b*x-x,q=b*x*_-x,u=1;u<x-2;u++)L[p++]=te+u+1,L[p++]=te+u,L[p++]=q+u,L[p++]=te+u+1,L[p++]=q+u,L[p++]=q+u+1}if(G){for(u=1;u<b-2;u++)q=x*b+x*u,te=x*u,L[p++]=q,L[p++]=te+x,L[p++]=te,L[p++]=q,L[p++]=q+x,L[p++]=te+x;for(u=1;u<b-2;u++)q=x*b+x*(u+1)-1,te=x*(u+1)-1,L[p++]=te+x,L[p++]=q,L[p++]=te,L[p++]=te+x,L[p++]=q+x,L[p++]=q}let pe=new xn;a.position&&(pe.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:w}));let ye=0,he=0,xe=0,Te=0,Be=B/2,Le,De=ie.fromCartesian3(t),Ue=ie.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(u=0;u<B;u++){Le=F[u]?Ue:De;let je=m.fromArray(w,u*3,Het),it=Le.geodeticSurfaceNormal(je,zet);if(P[u]&&m.negate(it,it),a.st){let nn=D.negate(it,jet);Q[ye++]=Math.atan2(nn.y,nn.x)/Z.TWO_PI+.5,Q[ye++]=Math.asin(it.z)/Math.PI+.5}if(a.normal&&(V[he++]=it.x,V[he++]=it.y,V[he++]=it.z),a.tangent||a.bitangent){let nn=Ket,rt=0,rn;if(F[u]&&(rt=Be),!S&&u>=rt&&u<rt+x*2?rn=m.UNIT_X:rn=m.UNIT_Z,m.cross(rn,it,nn),m.normalize(nn,nn),a.tangent&&(W[xe++]=nn.x,W[xe++]=nn.y,W[xe++]=nn.z),a.bitangent){let Jt=m.cross(it,nn,Jet);m.normalize(Jt,Jt),M[Te++]=Jt.x,M[Te++]=Jt.y,M[Te++]=Jt.z}}}a.st&&(pe.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:Q})),a.normal&&(pe.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:V})),a.tangent&&(pe.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:W})),a.bitangent&&(pe.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:M}))}if(l(e._offsetAttribute)){let je=w.length,it=e._offsetAttribute===pn.NONE?0:1,nn=new Uint8Array(je/3).fill(it);pe.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:nn})}return new pt({attributes:pe,indices:L,primitiveType:We.TRIANGLES,boundingSphere:ue.fromEllipsoid(De),offsetAttribute:e._offsetAttribute})};var T4;Rg.getUnitEllipsoid=function(){return l(T4)||(T4=Rg.createGeometry(new Rg({radii:new m(1,1,1),vertexFormat:we.POSITION_ONLY}))),T4};var xa=Rg;var $et=new qt(U.WHITE),S4=m.ZERO,L4=new m,ett=new m,ttt=new m,R4=new U,ntt=new m(1,1,1);function itt(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function uu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new itt(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(uu.prototype=Object.create(Ci.prototype),uu.prototype.constructor=uu);Object.defineProperties(uu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});uu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new Vn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=jn.fromDistanceDisplayCondition(a),d={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let u;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(u=this._materialProperty.color.getValue(e,R4)),l(u)||(u=U.WHITE),r=tn.fromColor(u),d.color=r}return l(this._options.offsetAttribute)&&(d.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,S4,L4))),new wt({id:i,geometry:new xa(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:d})};uu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,R4),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new Vn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(r),distanceDisplayCondition:jn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,S4,L4))),new wt({id:i,geometry:new nu(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};uu.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};uu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||Ci.prototype._isHidden.call(this,e,t)};uu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.radii.isConstant||!z.isConstant(t.innerRadii)||!z.isConstant(t.stackPartitions)||!z.isConstant(t.slicePartitions)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.minimumClock)||!z.isConstant(t.maximumClock)||!z.isConstant(t.minimumCone)||!z.isConstant(t.maximumCone)||!z.isConstant(t.subdivisions)};uu.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(ze.MINIMUM_VALUE,i.radii),i.innerRadii=z.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=z.getValueOrUndefined(t.minimumClock,ze.MINIMUM_VALUE),i.maximumClock=z.getValueOrUndefined(t.maximumClock,ze.MINIMUM_VALUE),i.minimumCone=z.getValueOrUndefined(t.minimumCone,ze.MINIMUM_VALUE),i.maximumCone=z.getValueOrUndefined(t.maximumCone,ze.MINIMUM_VALUE),i.stackPartitions=z.getValueOrUndefined(t.stackPartitions,ze.MINIMUM_VALUE),i.slicePartitions=z.getValueOrUndefined(t.slicePartitions,ze.MINIMUM_VALUE),i.subdivisions=z.getValueOrUndefined(t.subdivisions,ze.MINIMUM_VALUE),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};uu.prototype._onEntityPropertyChanged=fA;uu.DynamicGeometryUpdater=VW;function VW(e,t,n){yi.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new X,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new m,this._material={}}l(Object.create)&&(VW.prototype=Object.create(yi.prototype),VW.prototype.constructor=VW);VW.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!z.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=z.getValueOrUndefined(n.radii,e,ett),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=z.getValueOrDefault(n.fill,e,!0),s=z.getValueOrDefault(n.outline,e,!1),a=z.getValueOrClonedDefault(n.outlineColor,e,U.BLACK,R4),c=dr.getValue(e,n.material??$et,this._material),d=z.getValueOrUndefined(n.innerRadii,e,ttt),u=z.getValueOrUndefined(n.minimumClock,e),h=z.getValueOrUndefined(n.maximumClock,e),p=z.getValueOrUndefined(n.minimumCone,e),g=z.getValueOrUndefined(n.maximumCone,e),f=z.getValueOrUndefined(n.stackPartitions,e),b=z.getValueOrUndefined(n.slicePartitions,e),x=z.getValueOrUndefined(n.subdivisions,e),I=z.getValueOrDefault(n.outlineWidth,e,1),_=z.getValueOrDefault(n.heightReference,e,et.NONE),E=_!==et.NONE?pn.ALL:void 0,S=this._scene.mode,R=S===re.SCENE3D&&_===et.NONE,G=this._options,B=this._geometryUpdater.shadowsProperty.getValue(e),F=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),P=z.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,S4,L4);if(!R||this._lastSceneMode!==S||!l(this._primitive)||G.stackPartitions!==f||G.slicePartitions!==b||l(d)&&!m.equals(G.innerRadii!==d)||G.minimumClock!==u||G.maximumClock!==h||G.minimumCone!==p||G.maximumCone!==g||G.subdivisions!==x||this._lastOutlineWidth!==I||G.offsetAttribute!==E){let T=this._primitives;T.removeAndDestroy(this._primitive),T.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=S,this._lastOutlineWidth=I,G.stackPartitions=f,G.slicePartitions=b,G.subdivisions=x,G.offsetAttribute=E,G.radii=m.clone(R?ntt:i,G.radii),l(d)?R?G.innerRadii=m.fromElements(d.x/i.x,d.y/i.y,d.z/i.z,G.innerRadii):G.innerRadii=m.clone(d,G.innerRadii):G.innerRadii=void 0,G.minimumClock=u,G.maximumClock=h,G.minimumCone=p,G.maximumCone=g;let L=new Io({material:c,translucent:c.isTranslucent(),closed:!0});G.vertexFormat=L.vertexFormat;let V=this._geometryUpdater.createFillGeometryInstance(e,R,this._modelMatrix);this._primitive=T.add(new Nn({geometryInstances:V,appearance:L,asynchronous:!1,shadows:B}));let W=this._geometryUpdater.createOutlineGeometryInstance(e,R,this._modelMatrix);this._outlinePrimitive=T.add(new Nn({geometryInstances:W,appearance:new yn({flat:!0,translucent:W.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(I)}}),asynchronous:!1,shadows:B})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=U.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=F,this._lastOffset=m.clone(P,this._lastOffset)}else if(this._primitive.ready){let T=this._primitive,L=this._outlinePrimitive;T.show=!0,L.show=!0,T.appearance.material=c;let V=this._attributes;l(V)||(V=T.getGeometryInstanceAttributes(t),this._attributes=V),r!==this._lastShow&&(V.show=Vn.toValue(r,V.show),this._lastShow=r);let W=this._outlineAttributes;l(W)||(W=L.getGeometryInstanceAttributes(t),this._outlineAttributes=W),s!==this._lastOutlineShow&&(W.show=Vn.toValue(s,W.show),this._lastOutlineShow=s),U.equals(a,this._lastOutlineColor)||(W.color=tn.toValue(a,W.color),U.clone(a,this._lastOutlineColor)),Qt.equals(F,this._lastDistanceDisplayCondition)||(V.distanceDisplayCondition=jn.toValue(F,V.distanceDisplayCondition),W.distanceDisplayCondition=jn.toValue(F,W.distanceDisplayCondition),Qt.clone(F,this._lastDistanceDisplayCondition)),m.equals(P,this._lastOffset)||(V.offset=mo.toValue(P,V.offset),W.offset=mo.toValue(P,V.offset),m.clone(P,this._lastOffset))}R&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=X.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var GW=uu;var Yui=y(C(),1);var fui=y(C(),1);function cS(e){e=e??Y.EMPTY_OBJECT;let t=e.vertexFormat??we.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}cS.packedLength=we.packedLength;cS.pack=function(e,t,n){return n=n??0,we.pack(e._vertexFormat,t,n),t};var Gpe=new we,ott={vertexFormat:Gpe};cS.unpack=function(e,t,n){t=t??0;let i=we.unpack(e,t,Gpe);return l(n)?(n._vertexFormat=we.clone(i,n._vertexFormat),n):new cS(ott)};var G5=new m(-.5,-.5,0),Z5=new m(.5,.5,0);cS.createGeometry=function(e){let t=e._vertexFormat,n=new xn,i,o;if(t.position){if(o=new Float64Array(12),o[0]=G5.x,o[1]=G5.y,o[2]=0,o[3]=Z5.x,o[4]=G5.y,o[5]=0,o[6]=Z5.x,o[7]=Z5.y,o[8]=0,o[9]=G5.x,o[10]=Z5.y,o[11]=0,n.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new pt({attributes:n,indices:i,primitiveType:We.TRIANGLES,boundingSphere:new ue(m.ZERO,Math.sqrt(2))})};var ZW=cS;var Eui=y(C(),1);function lS(){this._workerName="createPlaneOutlineGeometry"}lS.packedLength=0;lS.pack=function(e,t){return t};lS.unpack=function(e,t,n){return l(n)?n:new lS};var X0=new m(-.5,-.5,0),B5=new m(.5,.5,0);lS.createGeometry=function(){let e=new xn,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=X0.x,n[1]=X0.y,n[2]=X0.z,n[3]=B5.x,n[4]=X0.y,n[5]=X0.z,n[6]=B5.x,n[7]=B5.y,n[8]=X0.z,n[9]=X0.x,n[10]=B5.y,n[11]=X0.z,e.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new pt({attributes:e,indices:t,primitiveType:We.LINES,boundingSphere:new ue(m.ZERO,Math.sqrt(2))})};var BW=lS;var rtt=new m,Zpe=new U;function stt(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function Sm(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new stt(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(Sm.prototype=Object.create(Ci.prototype),Sm.prototype.constructor=Sm);Sm.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,Zpe)),l(g)||(g=U.WHITE),o=tn.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,d=this._options,u=t.computeModelMatrix(e),h=z.getValueOrDefault(c.plane,e,d.plane),p=z.getValueOrUndefined(c.dimensions,e,d.dimensions);return d.plane=h,d.dimensions=p,u=V4(h,p,u,u),new wt({id:t,geometry:new ZW(this._options),modelMatrix:u,attributes:i})};Sm.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Zpe),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=z.getValueOrDefault(r.plane,e,s.plane),d=z.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=d,a=V4(c,d,a,a),new wt({id:t,geometry:new BW,modelMatrix:a,attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};Sm.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};Sm.prototype._getIsClosed=function(e){return!1};Sm.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!z.isConstant(t.outlineWidth)};Sm.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=this._options;i.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(ze.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions)};Sm.DynamicGeometryUpdater=dS;function dS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(dS.prototype=Object.create(yi.prototype),dS.prototype.constructor=dS);dS.prototype._isHidden=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(e.position,n,rtt);return!l(o)||!l(i.plane)||!l(i.dimensions)||yi.prototype._isHidden.call(this,e,t,n)};dS.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=z.getValueOrDefault(t.plane,n,i.plane),i.dimensions=z.getValueOrUndefined(t.dimensions,n,i.dimensions)};var att=new m,ctt=new m,ltt=new m,dtt=new m,utt=new $,mtt=new $,htt=new X;function V4(e,t,n,i){let o=e.normal,r=e.distance,s=m.multiplyByScalar(o,-r,ltt),a=m.clone(m.UNIT_Z,ctt);Z.equalsEpsilon(Math.abs(m.dot(a,o)),1,Z.EPSILON8)&&(a=m.clone(m.UNIT_Y,a));let c=m.cross(a,o,att);a=m.cross(o,c,a),m.normalize(c,c),m.normalize(a,a);let d=utt;$.setColumn(d,0,c,d),$.setColumn(d,1,a,d),$.setColumn(d,2,o,d);let u=m.fromElements(t.x,t.y,1,dtt),h=$.multiplyByScale(d,u,mtt),p=X.fromRotationTranslation(h,s,htt);return X.multiplyTransformation(n,p,i)}Sm.createPrimitiveMatrix=V4;var wW=Sm;var hhi=y(C(),1);var Ami=y(C(),1);var ftt=new m,ptt=new Ke,Att=new D,gtt=new D,btt=new m,ytt=new m,Ctt=new m,XW=new m,xtt=new m,Itt=new m,Bpe=new Pe,_tt=new $,Ett=new $,Ttt=new m;function Stt(e,t,n,i,o,r,s,a,c){let d=e.positions,u=_i.triangulate(e.positions2D,e.holes);u.length<3&&(u=[0,1,2]);let h=Me.createTypedArray(d.length,u.length);h.set(u);let p=_tt;if(i!==0){let A=Pe.fromAxisAngle(s,i,Bpe);if(p=$.fromQuaternion(A,p),t.tangent||t.bitangent){A=Pe.fromAxisAngle(s,-i,Bpe);let T=$.fromQuaternion(A,Ett);a=m.normalize($.multiplyByVector(T,a,a),a),t.bitangent&&(c=m.normalize(m.cross(s,a,c),c))}}else p=$.clone($.IDENTITY,p);let g=gtt;t.st&&(g.x=n.x,g.y=n.y);let f=d.length,b=f*3,x=new Float64Array(b),I=t.normal?new Float32Array(b):void 0,_=t.tangent?new Float32Array(b):void 0,E=t.bitangent?new Float32Array(b):void 0,S=t.st?new Float32Array(f*2):void 0,R=0,G=0,B=0,w=0,F=0;for(let A=0;A<f;A++){let T=d[A];if(x[R++]=T.x,x[R++]=T.y,x[R++]=T.z,t.st)if(l(o)&&o.positions.length===f)S[F++]=o.positions[A].x,S[F++]=o.positions[A].y;else{let L=$.multiplyByVector(p,T,ftt),V=r(L,Att);D.subtract(V,g,V);let W=Z.clamp(V.x/n.width,0,1),M=Z.clamp(V.y/n.height,0,1);S[F++]=W,S[F++]=M}t.normal&&(I[G++]=s.x,I[G++]=s.y,I[G++]=s.z),t.tangent&&(_[w++]=a.x,_[w++]=a.y,_[w++]=a.z),t.bitangent&&(E[B++]=c.x,E[B++]=c.y,E[B++]=c.z)}let P=new xn;return t.position&&(P.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x})),t.normal&&(P.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:I})),t.tangent&&(P.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:_})),t.bitangent&&(P.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:E})),t.st&&(P.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:S})),new pt({attributes:P,indices:h,primitiveType:We.TRIANGLES})}function zx(e){e=e??Y.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??we.DEFAULT;this._vertexFormat=we.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=ti.computeHierarchyPackedLength(t,m)+we.packedLength+ie.packedLength+(l(n)?ti.computeHierarchyPackedLength(n,D):1)+2}zx.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new zx(t)};zx.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=ti.packPolygonHierarchy(e._textureCoordinates,t,n,D):t[n++]=-1,t[n++]=e.packedLength,t};var Ltt=ie.clone(ie.UNIT_SPHERE),Rtt=new we,Vtt={polygonHierarchy:{}};zx.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=ie.unpack(e,t,Ltt);t+=ie.packedLength;let r=we.unpack(e,t,Rtt);t+=we.packedLength;let s=e[t++],a=e[t]===-1?void 0:ti.unpackPolygonHierarchy(e,t,D);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new zx(Vtt)),n._polygonHierarchy=i,n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};zx.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=Xo(s,m.equalsEpsilon,!0),s.length<3)return;let a=btt,c=ytt,d=Ctt,u=xtt,h=Itt;if(!sg.computeProjectTo2DArguments(s,XW,u,h))return;if(a=m.cross(u,h,a),a=m.normalize(a,a),!m.equalsEpsilon(XW,m.ZERO,Z.EPSILON6)){let F=e._ellipsoid.geodeticSurfaceNormal(XW,Ttt);m.dot(a,F)<0&&(a=m.negate(a,a),u=m.negate(u,u))}let g=sg.createProjectPointsTo2DFunction(XW,u,h),f=sg.createProjectPointTo2DFunction(XW,u,h);t.tangent&&(c=m.clone(u,c)),t.bitangent&&(d=m.clone(h,d));let b=ti.polygonsFromHierarchy(n,r,g,!1),x=b.hierarchy,I=b.polygons,_=function(F){return F},E=r?ti.polygonsFromHierarchy(o,!0,_,!1).polygons:void 0;if(x.length===0)return;s=x[0].outerRing;let S=ue.fromPoints(s),R=ti.computeBoundingRectangle(a,f,s,i,ptt),G=[];for(let F=0;F<I.length;F++){let P=new wt({geometry:Stt(I[F],t,R,i,r?E[F]:void 0,f,a,c,d)});G.push(P)}let B=Yn.combineInstances(G)[0];B.attributes.position.values=new Float64Array(B.attributes.position.values),B.indices=Me.createTypedArray(B.attributes.position.values.length/3,B.indices);let w=B.attributes;return t.position||delete w.position,new pt({attributes:w,indices:B.indices,primitiveType:B.primitiveType,boundingSphere:S})};var WW=zx;var Mmi=y(C(),1);var wpe=[],w5=[];function Gtt(e,t,n,i,o){let s=gs.fromPoints(t,e).projectPointsOntoPlane(t,wpe);_i.computeWindingOrder2D(s)===ws.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,d,u=t.length,h=0;if(i)for(c=new Float64Array(u*2*3),d=0;d<u;d++){let f=t[d],b=t[(d+1)%u];c[h++]=f.x,c[h++]=f.y,c[h++]=f.z,c[h++]=b.x,c[h++]=b.y,c[h++]=b.z}else{let f=0;if(o===dn.GEODESIC)for(d=0;d<u;d++)f+=ti.subdivideLineCount(t[d],t[(d+1)%u],n);else if(o===dn.RHUMB)for(d=0;d<u;d++)f+=ti.subdivideRhumbLineCount(e,t[d],t[(d+1)%u],n);for(c=new Float64Array(f*3),d=0;d<u;d++){let b;o===dn.GEODESIC?b=ti.subdivideLine(t[d],t[(d+1)%u],n,w5):o===dn.RHUMB&&(b=ti.subdivideRhumbLine(e,t[d],t[(d+1)%u],n,w5));let x=b.length;for(let I=0;I<x;++I)c[h++]=b[I]}}u=c.length/3;let p=u*2,g=Me.createTypedArray(u,p);for(h=0,d=0;d<u-1;d++)g[h++]=d,g[h++]=d+1;return g[h++]=u-1,g[h++]=0,new wt({geometry:new pt({attributes:new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:We.LINES})})}function Ztt(e,t,n,i,o){let s=gs.fromPoints(t,e).projectPointsOntoPlane(t,wpe);_i.computeWindingOrder2D(s)===ws.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,d,u=t.length,h=new Array(u),p=0;if(i)for(c=new Float64Array(u*2*3*2),d=0;d<u;++d){h[d]=p/3;let x=t[d],I=t[(d+1)%u];c[p++]=x.x,c[p++]=x.y,c[p++]=x.z,c[p++]=I.x,c[p++]=I.y,c[p++]=I.z}else{let x=0;if(o===dn.GEODESIC)for(d=0;d<u;d++)x+=ti.subdivideLineCount(t[d],t[(d+1)%u],n);else if(o===dn.RHUMB)for(d=0;d<u;d++)x+=ti.subdivideRhumbLineCount(e,t[d],t[(d+1)%u],n);for(c=new Float64Array(x*3*2),d=0;d<u;++d){h[d]=p/3;let I;o===dn.GEODESIC?I=ti.subdivideLine(t[d],t[(d+1)%u],n,w5):o===dn.RHUMB&&(I=ti.subdivideRhumbLine(e,t[d],t[(d+1)%u],n,w5));let _=I.length;for(let E=0;E<_;++E)c[p++]=I[E]}}u=c.length/6;let g=h.length,f=(u*2+g)*2,b=Me.createTypedArray(u+g,f);for(p=0,d=0;d<u;++d)b[p++]=d,b[p++]=(d+1)%u,b[p++]=d+u,b[p++]=(d+1)%u+u;for(d=0;d<g;d++){let x=h[d];b[p++]=x,b[p++]=x+u}return new wt({geometry:new pt({attributes:new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})}),indices:b,primitiveType:We.LINES})})}function Kx(e){let t=e.polygonHierarchy,n=e.ellipsoid??ie.default,i=e.granularity??Z.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??dn.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let d=Math.max(a,c);c=Math.min(a,c),a=d}this._ellipsoid=ie.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=ti.computeHierarchyPackedLength(t,m)+ie.packedLength+8}Kx.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var Btt=ie.clone(ie.UNIT_SPHERE),wtt={polygonHierarchy:{}};Kx.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=ie.unpack(e,t,Btt);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,d=e[t++]===1,u=e[t++],h=e[t++],p=e[t];return l(n)||(n=new Kx(wtt)),n._polygonHierarchy=i,n._ellipsoid=ie.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=d,n._perPositionHeightExtrude=c,n._arcType=u,n._offsetAttribute=h===-1?void 0:h,n.packedLength=p,n};Kx.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new Kx(t)};Kx.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=ti.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],d=Z.chordLength(n,t.maximumRadius),u=e._height,h=e._extrudedHeight,p=e._perPositionHeightExtrude||!Z.equalsEpsilon(u,h,0,Z.EPSILON2),g,f;if(p)for(f=0;f<s.length;f++){if(a=Ztt(t,s[f],d,o,r),a.geometry=ti.scaleToGeodeticHeightExtruded(a.geometry,u,h,t,o),l(e._offsetAttribute)){let I=a.geometry.attributes.position.values.length/3,_=new Uint8Array(I);e._offsetAttribute===pn.TOP?_=_.fill(1,0,I/2):(g=e._offsetAttribute===pn.NONE?0:1,_=_.fill(g)),a.geometry.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}c.push(a)}else for(f=0;f<s.length;f++){if(a=Gtt(t,s[f],d,o,r),a.geometry.attributes.position.values=_i.scaleToGeodeticHeight(a.geometry.attributes.position.values,u,t,!o),l(e._offsetAttribute)){let I=a.geometry.attributes.position.values.length;g=e._offsetAttribute===pn.NONE?0:1;let _=new Uint8Array(I/3).fill(g);a.geometry.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}c.push(a)}let b=Yn.combineInstances(c)[0],x=ue.fromVertices(b.attributes.position.values);return new pt({attributes:b.attributes,indices:b.indices,primitiveType:b.primitiveType,boundingSphere:x,offsetAttribute:e._offsetAttribute})};var FW=Kx;var Xpe="Entity polygons cannot have both height and perPositionHeight. height will be ignored",Wpe="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",Fpe=new U,Ppe=m.ZERO,Mpe=new m,vpe=new le,Xtt=[],Wtt=new D;function Ftt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function mu(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new Ftt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(mu.prototype=Object.create(ii.prototype),mu.prototype.constructor=mu);mu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,Fpe)),l(s)||(s=U.WHITE),o.color=tn.fromColor(s)}l(i.offsetAttribute)&&(o.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Mpe)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new WW(i):r=new VA(i),new wt({id:t,geometry:r,attributes:o})};mu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Fpe),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(o),distanceDisplayCondition:jn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Mpe)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new bm(i):a=new FW(i),new wt({id:t,geometry:a,attributes:s})};mu.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=gs.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Xtt),a=s.length,c=0,d=a-1,u=new D;for(let p=0;p<a;d=p++){let g=s[p],f=s[d],b=g.x*f.y-f.x*g.y,x=D.add(g,f,Wtt);x=D.multiplyByScalar(x,b,x),u=D.add(u,x,u),c+=b}let h=1/(c*3);return u=D.multiplyByScalar(u,h,u),r.projectPointOntoEllipsoid(u,t)};mu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||Ci.prototype._isHidden.call(this,e,t)};mu.prototype._isOnTerrain=function(e,t){let n=ii.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(ze.MINIMUM_VALUE):!0);return n&&!o};mu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.textureCoordinates)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.perPositionHeight)||!z.isConstant(t.closeTop)||!z.isConstant(t.closeBottom)||!z.isConstant(t.zIndex)||!z.isConstant(t.arcType)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};mu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=this._options;i.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(ze.MINIMUM_VALUE),r=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),s=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),a=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),c=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE),d=z.getValueOrDefault(t.perPositionHeight,ze.MINIMUM_VALUE,!1);r=ii.getGeometryHeight(r,s);let u;if(d?(l(r)&&(r=void 0,xt(Xpe)),s!==et.NONE&&d&&(r=void 0,xt(Wpe))):(l(a)&&!l(r)&&(r=0),u=ii.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),i.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),i.perPositionHeight=d,i.closeTop=z.getValueOrDefault(t.closeTop,ze.MINIMUM_VALUE,!0),i.closeBottom=z.getValueOrDefault(t.closeBottom,ze.MINIMUM_VALUE,!0),i.offsetAttribute=u,i.height=r,i.arcType=z.getValueOrDefault(t.arcType,ze.MINIMUM_VALUE,dn.GEODESIC),i.textureCoordinates=z.getValueOrUndefined(t.textureCoordinates,ze.MINIMUM_VALUE),a=ii.getGeometryExtrudedHeight(a,c),a===ii.CLAMP_TO_GROUND){let h=VA.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,vpe);a=Si.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};mu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};mu.DynamicGeometryUpdater=uS;function uS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(uS.prototype=Object.create(yi.prototype),uS.prototype.constructor=uS);uS.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||yi.prototype._isHidden.call(this,e,t,n)};uS.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=z.getValueOrUndefined(t.hierarchy,n);let o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE),a=z.getValueOrUndefined(t.extrudedHeight,n),c=z.getValueOrUndefined(t.perPositionHeight,n);o=ii.getGeometryHeight(o,s);let d;if(c?(l(o)&&(o=void 0,xt(Xpe)),r!==et.NONE&&c&&(o=void 0,xt(Wpe))):(l(a)&&!l(o)&&(o=0),d=ii.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=z.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=z.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=z.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=z.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=d,i.height=o,i.arcType=z.getValueOrDefault(t.arcType,n,dn.GEODESIC),a=ii.getGeometryExtrudedHeight(a,s),a===ii.CLAMP_TO_GROUND){let u=VA.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,vpe);a=Si.getMinimumMaximumHeights(u).minimumTerrainHeight}i.extrudedHeight=a};var PW=mu;var xfi=y(C(),1);var Phi=y(C(),1);function Ptt(e,t,n,i){let o=new xn;i.position&&(o.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=_i.triangulate(t),d=(a-1)*r*6+c.length*2,u=Me.createTypedArray(s,d),h,p,g,f,b,x,I=r*2,_=0;for(h=0;h<a-1;h++){for(p=0;p<r-1;p++)g=p*2+h*r*2,x=g+I,f=g+1,b=f+I,u[_++]=f,u[_++]=g,u[_++]=b,u[_++]=b,u[_++]=g,u[_++]=x;g=r*2-2+h*r*2,f=g+1,b=f+I,x=g+I,u[_++]=f,u[_++]=g,u[_++]=b,u[_++]=b,u[_++]=g,u[_++]=x}if(i.st||i.tangent||i.bitangent){let R=new Float32Array(s*2),G=1/(a-1),B=1/n.height,w=n.height/2,F,P,A=0;for(h=0;h<a;h++){for(F=h*G,P=B*(t[0].y+w),R[A++]=F,R[A++]=P,p=1;p<r;p++)P=B*(t[p].y+w),R[A++]=F,R[A++]=P,R[A++]=F,R[A++]=P;P=B*(t[0].y+w),R[A++]=F,R[A++]=P}for(p=0;p<r;p++)F=0,P=B*(t[p].y+w),R[A++]=F,R[A++]=P;for(p=0;p<r;p++)F=(a-1)*G,P=B*(t[p].y+w),R[A++]=F,R[A++]=P;o.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:new Float32Array(R)})}let E=s-r*2;for(h=0;h<c.length;h+=3){let R=c[h]+E,G=c[h+1]+E,B=c[h+2]+E;u[_++]=R,u[_++]=G,u[_++]=B,u[_++]=B+r,u[_++]=G+r,u[_++]=R+r}let S=new pt({attributes:o,indices:u,boundingSphere:ue.fromVertices(e),primitiveType:We.TRIANGLES});if(i.normal&&(S=Yn.computeNormal(S)),i.tangent||i.bitangent){try{S=Yn.computeTangentAndBitangent(S)}catch{xt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(S.attributes.tangent=void 0),i.bitangent||(S.attributes.bitangent=void 0),i.st||(S.attributes.st=void 0)}return S}function vW(e){e=e??Y.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._cornerType=e.cornerType??Hi.ROUNDED,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*m.packedLength;i+=1+n.length*D.packedLength,this.packedLength=i+ie.packedLength+we.packedLength+2}vW.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=D.packedLength)D.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Npe=ie.clone(ie.UNIT_SPHERE),Dpe=new we,MW={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Npe,vertexFormat:Dpe,cornerType:void 0,granularity:void 0};vW.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=D.packedLength)s[i]=D.unpack(e,t);let a=ie.unpack(e,t,Npe);t+=ie.packedLength;let c=we.unpack(e,t,Dpe);t+=we.packedLength;let d=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._vertexFormat=we.clone(c,n._vertexFormat),n._cornerType=d,n._granularity=u,n):(MW.polylinePositions=r,MW.shapePositions=s,MW.cornerType=d,MW.granularity=u,new vW(MW))};var Mtt=new Ke;vW.createGeometry=function(e){let t=e._positions,n=Xo(t,m.equalsEpsilon),i=e._shape;if(i=Dh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;_i.computeWindingOrder2D(i)===ws.CLOCKWISE&&i.reverse();let o=Ke.fromPoints(i,Mtt),r=Dh.computePositions(n,i,o,e,!0);return Ptt(r,i,o,e._vertexFormat)};var NW=vW;var ofi=y(C(),1);function vtt(e,t){let n=new xn;n.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Me.createTypedArray(o,2*i*(s+1)),c,d,u=0;c=0;let h=c*i;for(d=0;d<i-1;d++)a[u++]=d+h,a[u++]=d+h+1;for(a[u++]=i-1+h,a[u++]=h,c=s-1,h=c*i,d=0;d<i-1;d++)a[u++]=d+h,a[u++]=d+h+1;for(a[u++]=i-1+h,a[u++]=h,c=0;c<s-1;c++){let g=i*c,f=g+i;for(d=0;d<i;d++)a[u++]=d+g,a[u++]=d+f}return new pt({attributes:n,indices:Me.createTypedArray(o,a),boundingSphere:ue.fromVertices(e),primitiveType:We.LINES})}function QW(e){e=e??Y.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*m.packedLength;i+=1+n.length*D.packedLength,this.packedLength=i+ie.packedLength+2}QW.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=D.packedLength)D.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Qpe=ie.clone(ie.UNIT_SPHERE),DW={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Qpe,height:void 0,cornerType:void 0,granularity:void 0};QW.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=D.packedLength)s[i]=D.unpack(e,t);let a=ie.unpack(e,t,Qpe);t+=ie.packedLength;let c=e[t++],d=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=d,n):(DW.polylinePositions=r,DW.shapePositions=s,DW.cornerType=c,DW.granularity=d,new QW(DW))};var Ntt=new Ke;QW.createGeometry=function(e){let t=e._positions,n=Xo(t,m.equalsEpsilon),i=e._shape;if(i=Dh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;_i.computeWindingOrder2D(i)===ws.CLOCKWISE&&i.reverse();let o=Ke.fromPoints(i,Ntt),r=Dh.computePositions(n,i,o,e,!1);return vtt(r,i)};var UW=QW;var Upe=new U;function Dtt(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function cp(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Dtt(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(cp.prototype=Object.create(Ci.prototype),cp.prototype.constructor=cp);cp.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Upe)),l(c)||(c=U.WHITE),o=tn.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new wt({id:t,geometry:new NW(this._options),attributes:i})};cp.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Upe),o=this._distanceDisplayConditionProperty.getValue(e);return new wt({id:t,geometry:new UW(this._options),attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};cp.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||Ci.prototype._isHidden.call(this,e,t)};cp.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!z.isConstant(t.granularity)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.cornerType)};cp.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof qt;o.vertexFormat=r?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(ze.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(ze.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(ze.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(ze.MINIMUM_VALUE):void 0};cp.DynamicGeometryUpdater=mS;function mS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(mS.prototype=Object.create(yi.prototype),mS.prototype.constructor=mS);mS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||yi.prototype._isHidden.call(this,e,t,n)};mS.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=z.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=z.getValueOrUndefined(t.shape,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.cornerType=z.getValueOrUndefined(t.cornerType,n)};var kW=cp;var bpi=y(C(),1);var Hfi=y(C(),1);var G4=new m,Ope=new m,Hpe=new m,zpe=new m,Kpe=new le,Qtt=new D,Utt=new ue,ktt=new ue;function Jpe(e,t){let n=new pt({attributes:new xn,primitiveType:We.TRIANGLES});return n.attributes.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function Ytt(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,d=zpe,u=Hpe,h=Ope;if(t.normal||t.tangent||t.bitangent)for(let p=0;p<o;p+=3){let g=m.fromArray(e,p,G4),f=c+1,b=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(m.cross(m.UNIT_Z,h,u),$.multiplyByVector(i,u,u),m.normalize(u,u),t.bitangent&&m.normalize(m.cross(h,u,d),d)),t.normal&&(r[c]=h.x,r[f]=h.y,r[b]=h.z),t.tangent&&(s[c]=u.x,s[f]=u.y,s[b]=u.z),t.bitangent&&(a[c]=d.x,a[f]=d.y,a[b]=d.z),c+=3}return Jpe(t,{positions:e,normals:r,tangents:s,bitangents:a})}var Z4=new m,jpe=new m;function Ott(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,d=0,u=!0,h=zpe,p=Hpe,g=Ope;if(t.normal||t.tangent||t.bitangent)for(let f=0;f<i;f+=6){let b=m.fromArray(e,f,G4),x=m.fromArray(e,(f+6)%i,Z4);if(u){let I=m.fromArray(e,(f+3)%i,jpe);m.subtract(x,b,x),m.subtract(I,b,I),g=m.normalize(m.cross(I,x,g),g),u=!1}m.equalsEpsilon(x,b,Z.EPSILON10)&&(u=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(b,h),t.tangent&&(p=m.normalize(m.cross(h,g,p),p))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=p.x,r[c++]=p.y,r[c++]=p.z,r[c++]=p.x,r[c++]=p.y,r[c++]=p.z),t.bitangent&&(s[d++]=h.x,s[d++]=h.y,s[d++]=h.z,s[d++]=h.x,s[d++]=h.y,s[d++]=h.z)}return Jpe(t,{positions:e,normals:o,tangents:r,bitangents:s})}function qpe(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,d=o,u=o,h=0;s&&(c=1,u-=1,h+=1),a&&(d-=1,u-=1,h+=1),h+=r*u;let p=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,f=0,b=0,x=G4,I=Qtt,_=Number.MAX_VALUE,E=Number.MAX_VALUE,S=-Number.MAX_VALUE,R=-Number.MAX_VALUE;for(let T=c;T<d;++T)for(let L=0;L<r;++L)js.computePosition(t,i,n.st,T,L,x,I),p[f++]=x.x,p[f++]=x.y,p[f++]=x.z,n.st&&(g[b++]=I.x,g[b++]=I.y,_=Math.min(_,I.x),E=Math.min(E,I.y),S=Math.max(S,I.x),R=Math.max(R,I.y));if(s&&(js.computePosition(t,i,n.st,0,0,x,I),p[f++]=x.x,p[f++]=x.y,p[f++]=x.z,n.st&&(g[b++]=I.x,g[b++]=I.y,_=I.x,E=I.y,S=I.x,R=I.y)),a&&(js.computePosition(t,i,n.st,o-1,0,x,I),p[f++]=x.x,p[f++]=x.y,p[f]=x.z,n.st&&(g[b++]=I.x,g[b]=I.y,_=Math.min(_,I.x),E=Math.min(E,I.y),S=Math.max(S,I.x),R=Math.max(R,I.y))),n.st&&(_<0||E<0||S>1||R>1))for(let T=0;T<g.length;T+=2)g[T]=(g[T]-_)/(S-_),g[T+1]=(g[T+1]-E)/(R-E);let G=Ytt(p,n,i,t.tangentRotationMatrix),B=6*(r-1)*(u-1);s&&(B+=3*(r-1)),a&&(B+=3*(r-1));let w=Me.createTypedArray(h,B),F=0,P=0,A;for(A=0;A<u-1;++A){for(let T=0;T<r-1;++T){let L=F,V=L+r,W=V+1,M=L+1;w[P++]=L,w[P++]=V,w[P++]=M,w[P++]=M,w[P++]=V,w[P++]=W,++F}++F}if(s||a){let T=h-1,L=h-1;s&&a&&(T=h-2);let V,W;if(F=0,s)for(A=0;A<r-1;A++)V=F,W=V+1,w[P++]=T,w[P++]=V,w[P++]=W,++F;if(a)for(F=(u-1)*r,A=0;A<r-1;A++)V=F,W=V+1,w[P++]=V,w[P++]=L,w[P++]=W,++F}return G.indices=w,n.st&&(G.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:g})),G}function hS(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function fS(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var B4=new we;function Htt(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,d=t.width,u;if(n){let rt=we.clone(o,B4);rt.normal=!0,e._vertexFormat=rt}let h=qpe(e,t);n&&(e._vertexFormat=o);let p=_i.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);p=new Float64Array(p);let g=p.length,f=g*2,b=new Float64Array(f);b.set(p);let x=_i.scaleToGeodeticHeight(h.attributes.position.values,r,a);b.set(x,g),h.attributes.position.values=b;let I=o.normal?new Float32Array(f):void 0,_=o.tangent?new Float32Array(f):void 0,E=o.bitangent?new Float32Array(f):void 0,S=o.st?new Float32Array(f/3*2):void 0,R,G;if(o.normal){for(G=h.attributes.normal.values,I.set(G),u=0;u<g;u++)G[u]=-G[u];I.set(G,g),h.attributes.normal.values=I}if(n){G=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let rt=new Float32Array(f);for(u=0;u<g;u++)G[u]=-G[u];rt.set(G,g),h.attributes.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:rt})}let B,w=l(i);if(w){let rt=g/3*2,rn=new Uint8Array(rt);i===pn.TOP?rn=rn.fill(1,0,rt/2):(B=i===pn.NONE?0:1,rn=rn.fill(B)),h.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:rn})}if(o.tangent){let rt=h.attributes.tangent.values;for(_.set(rt),u=0;u<g;u++)rt[u]=-rt[u];_.set(rt,g),h.attributes.tangent.values=_}if(o.bitangent){let rt=h.attributes.bitangent.values;E.set(rt),E.set(rt,g),h.attributes.bitangent.values=E}o.st&&(R=h.attributes.st.values,S.set(R),S.set(R,g/3*2),h.attributes.st.values=S);let F=h.indices,P=F.length,A=g/3,T=Me.createTypedArray(f/3,P*2);for(T.set(F),u=0;u<P;u+=3)T[u+P]=F[u+2]+A,T[u+1+P]=F[u+1]+A,T[u+2+P]=F[u]+A;h.indices=T;let L=t.northCap,V=t.southCap,W=c,M=2,Q=0,N=4,k=4;L&&(M-=1,W-=1,Q+=1,N-=2,k-=1),V&&(M-=1,W-=1,Q+=1,N-=2,k-=1),Q+=M*d+2*W-N;let v=(Q+k)*2,O=new Float64Array(v*3),H=n?new Float32Array(v*3):void 0,ee=w?new Uint8Array(v):void 0,K=o.st?new Float32Array(v*2):void 0,te=i===pn.TOP;w&&!te&&(B=i===pn.ALL?1:0,ee=ee.fill(B));let q=0,pe=0,ye=0,he=0,xe=d*W,Te;for(u=0;u<xe;u+=d)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);if(V){let rt=L?xe+1:xe;for(Te=rt*3,u=0;u<2;u++)O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,rt*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1)}else for(u=xe-d;u<xe;u++)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);for(u=xe-1;u>0;u-=d)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);if(L){let rt=xe;for(Te=rt*3,u=0;u<2;u++)O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,rt*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1)}else for(u=d-1;u>=0;u--)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);let Be=Ott(O,o,a);o.st&&(Be.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:K})),n&&(Be.attributes.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:H})),w&&(Be.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:ee}));let Le=Me.createTypedArray(v,Q*6),De,Ue,je,it;g=O.length/3;let nn=0;for(u=0;u<g-1;u+=2){De=u,it=(De+2)%g;let rt=m.fromArray(O,De*3,Z4),rn=m.fromArray(O,it*3,jpe);m.equalsEpsilon(rt,rn,Z.EPSILON10)||(Ue=(De+1)%g,je=(Ue+2)%g,Le[nn++]=De,Le[nn++]=Ue,Le[nn++]=it,Le[nn++]=it,Le[nn++]=Ue,Le[nn++]=je)}return Be.indices=Le,Be=Yn.combineInstances([new wt({geometry:h}),new wt({geometry:Be})]),Be[0]}var ztt=[new m,new m,new m,new m],$pe=new ge,Ktt=new ge;function w4(e,t,n,i,o){if(n===0)return le.clone(e,o);let r=js.computeOptions(e,t,n,0,Kpe,$pe),s=r.height,a=r.width,c=ztt;return js.computePosition(r,i,!1,0,0,c[0]),js.computePosition(r,i,!1,0,a-1,c[1]),js.computePosition(r,i,!1,s-1,0,c[2]),js.computePosition(r,i,!1,s-1,a-1,c[3]),le.fromCartesianArray(c,i,o)}function lp(e){e=e??Y.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=le.clone(t),this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}lp.packedLength=le.packedLength+ie.packedLength+we.packedLength+7;lp.pack=function(e,t,n){return n=n??0,le.pack(e._rectangle,t,n),n+=le.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var eAe=new le,tAe=ie.clone(ie.UNIT_SPHERE),W0={rectangle:eAe,ellipsoid:tAe,vertexFormat:B4,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};lp.unpack=function(e,t,n){t=t??0;let i=le.unpack(e,t,eAe);t+=le.packedLength;let o=ie.unpack(e,t,tAe);t+=ie.packedLength;let r=we.unpack(e,t,B4);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++]===1,p=e[t];return l(n)?(n._rectangle=le.clone(i,n._rectangle),n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=d,n._extrudedHeight=u,n._shadowVolume=h,n._offsetAttribute=p===-1?void 0:p,n):(W0.granularity=s,W0.height=a,W0.rotation=c,W0.stRotation=d,W0.extrudedHeight=u,W0.shadowVolume=h,W0.offsetAttribute=p===-1?void 0:p,new lp(W0))};lp.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??Z.RADIANS_PER_DEGREE,o=e.ellipsoid??ie.default,r=e.rotation??0;return w4(n,i,r,o,t)};var Jtt=new $,kpe=new Pe,jtt=new ge;lp.createGeometry=function(e){if(Z.equalsEpsilon(e._rectangle.north,e._rectangle.south,Z.EPSILON10)||Z.equalsEpsilon(e._rectangle.east,e._rectangle.west,Z.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=js.computeOptions(t,e._granularity,i,o,Kpe,$pe,Ktt),a=Jtt;if(o!==0||i!==0){let g=le.center(t,jtt),f=n.geodeticSurfaceNormalCartographic(g,Z4);Pe.fromAxisAngle(f,-o,kpe),$.fromQuaternion(kpe,a)}else $.clone($.IDENTITY,a);let c=e._surfaceHeight,d=e._extrudedHeight,u=!Z.equalsEpsilon(c,d,0,Z.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,p;if(t=e._rectangle,u){h=Htt(e,s);let g=ue.fromRectangle3D(t,n,c,ktt),f=ue.fromRectangle3D(t,n,d,Utt);p=ue.union(g,f)}else{if(h=qpe(e,s),h.attributes.position.values=_i.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,f=e._offsetAttribute===pn.NONE?0:1,b=new Uint8Array(g/3).fill(f);h.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}p=ue.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new pt({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:p,offsetAttribute:e._offsetAttribute})};lp.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new lp({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};var Ype=new le,qtt=[new D,new D,new D],$tt=new Qi,ent=new ge;function tnt(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=le.clone(e._rectangle,Ype),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=w4(t,n,o,i,Ype),s=qtt;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Qi.fromRotation(e._stRotation,$tt),d=le.center(a,ent);for(let f=0;f<3;++f){let b=s[f];b.x-=d.longitude,b.y-=d.latitude,Qi.multiplyByVector(c,b,b),b.x+=d.longitude,b.y+=d.latitude,b.x=(b.x-a.west)/a.width,b.y=(b.y-a.south)/a.height}let u=s[0],h=s[1],p=s[2],g=new Array(6);return D.pack(u,g),D.pack(h,g,2),D.pack(p,g,4),g}Object.defineProperties(lp.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=w4(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=tnt(this)),this._textureCoordinateRotationPoints}}});var Jx=lp;var nAe=new U,iAe=m.ZERO,oAe=new m,rAe=new le,nnt=new le,int=new ge;function ont(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function Kh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new ont(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(Kh.prototype=Object.create(ii.prototype),Kh.prototype.constructor=Kh);Kh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,nAe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,iAe,oAe))),new wt({id:t,geometry:new Jx(this._options),attributes:i})};Kh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,nAe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,iAe,oAe))),new wt({id:t,geometry:new _x(this._options),attributes:r})};Kh.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.rectangle.coordinates,e,nnt);if(!l(n))return;let i=le.center(n,int);return ge.toCartesian(i,ie.default,t)};Kh.prototype._isHidden=function(e,t){return!l(t.coordinates)||Ci.prototype._isHidden.call(this,e,t)};Kh.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.rotation)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};Kh.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),o=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),r=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),s=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(ze.MINIMUM_VALUE,a.rectangle),a.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),a.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),a.rotation=z.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),a.offsetAttribute=ii.computeGeometryOffsetAttribute(i,o,r,s),a.height=ii.getGeometryHeight(i,o),r=ii.getGeometryExtrudedHeight(r,s),r===ii.CLAMP_TO_GROUND&&(r=Si.getMinimumMaximumHeights(Jx.computeRectangle(a,rAe)).minimumTerrainHeight),a.extrudedHeight=r};Kh.DynamicGeometryUpdater=pS;function pS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(pS.prototype=Object.create(yi.prototype),pS.prototype.constructor=pS);pS.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||yi.prototype._isHidden.call(this,e,t,n)};pS.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=z.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.rotation=z.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Jx.computeRectangle(i,rAe)).minimumTerrainHeight),i.extrudedHeight=s};var YW=Kh;var CAi=y(C(),1);var Qpi=y(C(),1);var Spi=y(C(),1);var sAe={};function rnt(e,t){return Z.equalsEpsilon(e.latitude,t.latitude,Z.EPSILON10)&&Z.equalsEpsilon(e.longitude,t.longitude,Z.EPSILON10)}var snt=new ge,ant=new ge;function cnt(e,t,n,i){t=Xo(t,m.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),d=new Array(o),u=t[0];a[0]=u;let h=e.cartesianToCartographic(u,snt);s&&(h.height=n[0]),c[0]=h.height,r?d[0]=i[0]:d[0]=0;let p=c[0],g=d[0],f=p===g,b=1;for(let x=1;x<o;++x){let I=t[x],_=e.cartesianToCartographic(I,ant);s&&(_.height=n[x]),f=f&&_.height===0,rnt(h,_)?h.height<_.height&&(c[b-1]=_.height):(a[b]=I,c[b]=_.height,r?d[b]=i[x]:d[b]=0,f=f&&c[b]===d[b],ge.clone(_,h),++b)}if(!(f||b<2))return a.length=b,c.length=b,d.length=b,{positions:a,topHeights:c,bottomHeights:d}}var lnt=new Array(2),dnt=new Array(2),unt={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};sAe.computePositions=function(e,t,n,i,o,r){let s=cnt(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,d,u,h=Z.chordLength(o,e.maximumRadius),p=unt;if(p.minDistance=h,p.ellipsoid=e,r){let g=0,f;for(f=0;f<a-1;f++)g+=Oi.numberOfPoints(t[f],t[f+1],h)+1;d=new Float64Array(g*3),u=new Float64Array(g*3);let b=lnt,x=dnt;p.positions=b,p.height=x;let I=0;for(f=0;f<a-1;f++){b[0]=t[f],b[1]=t[f+1],x[0]=n[f],x[1]=n[f+1];let _=Oi.generateArc(p);d.set(_,I),x[0]=i[f],x[1]=i[f+1],u.set(Oi.generateArc(p),I),I+=_.length}}else p.positions=t,p.height=n,d=new Float64Array(Oi.generateArc(p)),p.height=i,u=new Float64Array(Oi.generateArc(p));return{bottomPositions:u,topPositions:d,numCorners:c}};var jx=sAe;var X4=new m,X5=new m,mnt=new m,aAe=new m,hnt=new m,fnt=new m,pnt=new m;function qx(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??we.DEFAULT,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.ellipsoid??ie.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=we.clone(o),this._granularity=r,this._ellipsoid=ie.clone(s),this._workerName="createWallGeometry";let a=1+t.length*m.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+ie.packedLength+we.packedLength+1}qx.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n]=e._granularity,t};var cAe=ie.clone(ie.UNIT_SPHERE),lAe=new we,OW={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:cAe,vertexFormat:lAe,granularity:void 0};qx.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ie.unpack(e,t,cAe);t+=ie.packedLength;let d=we.unpack(e,t,lAe);t+=we.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ie.clone(c,n._ellipsoid),n._vertexFormat=we.clone(d,n._vertexFormat),n._granularity=u,n):(OW.positions=r,OW.minimumHeights=s,OW.maximumHeights=a,OW.granularity=u,new qx(OW))};qx.fromConstantHeights=function(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let d=t.length;n=s?new Array(d):void 0,i=a?new Array(d):void 0;for(let u=0;u<d;++u)s&&(n[u]=o),a&&(i[u]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new qx(c)};qx.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=jx.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,d=a.topPositions,u=a.numCorners,h=d.length,p=h*2,g=o.position?new Float64Array(p):void 0,f=o.normal?new Float32Array(p):void 0,b=o.tangent?new Float32Array(p):void 0,x=o.bitangent?new Float32Array(p):void 0,I=o.st?new Float32Array(p/3*2):void 0,_=0,E=0,S=0,R=0,G=0,B=pnt,w=fnt,F=hnt,P=!0;h/=3;let A,T=0,L=1/(h-u-1);for(A=0;A<h;++A){let N=A*3,k=m.fromArray(d,N,X4),v=m.fromArray(c,N,X5);if(o.position&&(g[_++]=v.x,g[_++]=v.y,g[_++]=v.z,g[_++]=k.x,g[_++]=k.y,g[_++]=k.z),o.st&&(I[G++]=T,I[G++]=0,I[G++]=T,I[G++]=1),o.normal||o.tangent||o.bitangent){let O=m.clone(m.ZERO,aAe),H=m.subtract(k,s.geodeticSurfaceNormal(k,X5),X5);if(A+1<h&&(O=m.fromArray(d,N+3,aAe)),P){let ee=m.subtract(O,k,mnt),K=m.subtract(H,k,X4);B=m.normalize(m.cross(K,ee,B),B),P=!1}m.equalsEpsilon(k,O,Z.EPSILON10)?P=!0:(T+=L,o.tangent&&(w=m.normalize(m.subtract(O,k,w),w)),o.bitangent&&(F=m.normalize(m.cross(B,w,F),F))),o.normal&&(f[E++]=B.x,f[E++]=B.y,f[E++]=B.z,f[E++]=B.x,f[E++]=B.y,f[E++]=B.z),o.tangent&&(b[R++]=w.x,b[R++]=w.y,b[R++]=w.z,b[R++]=w.x,b[R++]=w.y,b[R++]=w.z),o.bitangent&&(x[S++]=F.x,x[S++]=F.y,x[S++]=F.z,x[S++]=F.x,x[S++]=F.y,x[S++]=F.z)}}let V=new xn;o.position&&(V.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(V.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),o.tangent&&(V.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),o.bitangent&&(V.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:x})),o.st&&(V.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:I}));let W=p/3;p-=6*(u+1);let M=Me.createTypedArray(W,p),Q=0;for(A=0;A<W-2;A+=2){let N=A,k=A+2,v=m.fromArray(g,N*3,X4),O=m.fromArray(g,k*3,X5);if(m.equalsEpsilon(v,O,Z.EPSILON10))continue;let H=A+1,ee=A+3;M[Q++]=H,M[Q++]=N,M[Q++]=ee,M[Q++]=ee,M[Q++]=N,M[Q++]=k}return new pt({attributes:V,indices:M,primitiveType:We.TRIANGLES,boundingSphere:new ue.fromVertices(g)})};var HW=qx;var iAi=y(C(),1);var dAe=new m,uAe=new m;function $x(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??Z.RADIANS_PER_DEGREE,r=e.ellipsoid??ie.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=ie.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*m.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+ie.packedLength+1}$x.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n]=e._granularity,t};var mAe=ie.clone(ie.UNIT_SPHERE),zW={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:mAe,granularity:void 0};$x.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ie.unpack(e,t,mAe);t+=ie.packedLength;let d=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ie.clone(c,n._ellipsoid),n._granularity=d,n):(zW.positions=r,zW.minimumHeights=s,zW.maximumHeights=a,zW.granularity=d,new $x(zW))};$x.fromConstantHeights=function(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let d=t.length;n=s?new Array(d):void 0,i=a?new Array(d):void 0;for(let u=0;u<d;++u)s&&(n[u]=o),a&&(i[u]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new $x(c)};$x.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=jx.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,d=c.length,u=d*2,h=new Float64Array(u),p=0;d/=3;let g;for(g=0;g<d;++g){let _=g*3,E=m.fromArray(c,_,dAe),S=m.fromArray(a,_,uAe);h[p++]=S.x,h[p++]=S.y,h[p++]=S.z,h[p++]=E.x,h[p++]=E.y,h[p++]=E.z}let f=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h})}),b=u/3;u=2*b-4+b;let x=Me.createTypedArray(b,u),I=0;for(g=0;g<b-2;g+=2){let _=g,E=g+2,S=m.fromArray(h,_*3,dAe),R=m.fromArray(h,E*3,uAe);if(m.equalsEpsilon(S,R,Z.EPSILON10))continue;let G=g+1,B=g+3;x[I++]=G,x[I++]=_,x[I++]=G,x[I++]=B,x[I++]=_,x[I++]=E}return x[I++]=b-2,x[I++]=b-1,new pt({attributes:f,indices:x,primitiveType:We.LINES,boundingSphere:new ue.fromVertices(h)})};var KW=$x;var hAe=new U;function Ant(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function Jh(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Ant(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(Jh.prototype=Object.create(Ci.prototype),Jh.prototype.constructor=Jh);Jh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,hAe)),l(c)||(c=U.WHITE),o=tn.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new wt({id:t,geometry:new HW(this._options),attributes:i})};Jh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,hAe),o=this._distanceDisplayConditionProperty.getValue(e);return new wt({id:t,geometry:new KW(this._options),attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};Jh.prototype._isHidden=function(e,t){return!l(t.positions)||Ci.prototype._isHidden.call(this,e,t)};Jh.prototype._getIsClosed=function(e){return!1};Jh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!z.isConstant(t.minimumHeights)||!z.isConstant(t.maximumHeights)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.granularity)};Jh.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof qt,s=this._options;s.vertexFormat=r?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(ze.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(ze.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(ze.MINIMUM_VALUE):void 0};Jh.DynamicGeometryUpdater=AS;function AS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(AS.prototype=Object.create(yi.prototype),AS.prototype.constructor=AS);AS.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||yi.prototype._isHidden.call(this,e,t,n)};AS.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=z.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=z.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=z.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=z.getValueOrUndefined(t.granularity,n)};var JW=Jh;var eI=[AZ,pW,sW,RW,GW,wW,PW,kW,YW,JW];function tI(e,t){this.entity=e,this.scene=t;let n=new Array(eI.length),i=new Ce,o=new Lr;for(let r=0;r<n.length;r++){let s=new eI[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(tI.prototype._onEntityPropertyChanged,this)}tI.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};tI.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};tI.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),me(this)};tI.registerUpdater=function(e){eI.includes(e)||eI.push(e)};tI.unregisterUpdater=function(e){if(eI.includes(e)){let t=eI.indexOf(e);eI.splice(t,1)}};var nI=tI;var jAi=y(C(),1);var fAe=new U,gnt=new Qt,bnt=new Qt,ynt=m.ZERO,Cnt=new m;function jh(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(jh.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}jh.prototype.onMaterialChanged=function(){this.invalidated=!0};jh.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};jh.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty)||!z.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};jh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};jh.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Nn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof qt)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.fillMaterialProperty.isConstant||c){let x=d.fillMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,fAe);U.equals(h._lastColor,I)||(h._lastColor=U.clone(I,h._lastColor),h.color=tn.toValue(I,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=d))}if(l(this.depthFailAppearanceType)&&d.depthFailMaterialProperty instanceof qt&&(!d.depthFailMaterialProperty.isConstant||c)){let x=d.depthFailMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,fAe);U.equals(h._lastDepthFailColor,I)||(h._lastDepthFailColor=U.clone(I,h._lastDepthFailColor),h.depthFailColor=tn.toValue(I,h.depthFailColor))}let p=d.entity.isShowing&&(d.hasConstantFill||d.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,bnt,gnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=d.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,ynt,Cnt);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};jh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};jh.prototype.contains=function(e){return this.updaters.contains(e.id)};jh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};jh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function gS(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}gS.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new jh(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function pAe(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}gS.prototype.remove=function(e){pAe(this._solidItems,e)||pAe(this._translucentItems,e)};function AAe(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let d=a[r];s.remove(d),e.add(n,d),i=!0}}return i}function W5(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let d=0;d<c;d++)e.add(n,a[d]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}gS.prototype.update=function(e){let t=W5(this,this._solidItems,e,!0);t=W5(this,this._translucentItems,e,t)&&t;let n=AAe(this,this._solidItems,e),i=AAe(this,this._translucentItems,e);return(n||i)&&(t=W5(this,this._solidItems,e,t)&&t,t=W5(this,this._translucentItems,e,t)&&t),t};function gAe(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return At.FAILED}gS.prototype.getBoundingSphere=function(e,t){let n=gAe(this._solidItems,e,t);return n===At.FAILED?gAe(this._translucentItems,e,t):n};function bAe(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}gS.prototype.removeAllPrimitives=function(){bAe(this._solidItems),bAe(this._translucentItems)};var Lm=gS;var hgi=y(C(),1);var xnt=new Qt,Int=new Qt,_nt=m.ZERO,Ent=new m;function qh(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(qh.prototype.onMaterialChanged,this),this.subscriptions=new Bt,this.showsUpdated=new Bt}qh.prototype.onMaterialChanged=function(){this.invalidated=!0};qh.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};qh.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty)||!z.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};qh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Tnt=new U;qh.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=dr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Nn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof qt)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof qt&&!c.depthFailMaterialProperty.isConstant){let x=c.depthFailMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,Tnt);U.equals(h._lastDepthFailColor,I)||(h._lastDepthFailColor=U.clone(I,h._lastDepthFailColor),h.depthFailColor=tn.toValue(I,h.depthFailColor))}let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,Int,xnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=c.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,_nt,Ent);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};qh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};qh.prototype.contains=function(e){return this.updaters.contains(e.id)};qh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};qh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function bS(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}bS.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new qh(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};bS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};bS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};bS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};bS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var Rm=bS;var Xgi=y(C(),1);var xgi=y(C(),1);var bgi=y(C(),1);var pgi=y(C(),1);function F5(e,t,n=0,i=e.length-1,o=Snt){for(;i>n;){if(i-n>600){let c=i-n+1,d=t-n+1,u=Math.log(c),h=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*h*(c-h)/c)*(d-c/2<0?-1:1),g=Math.max(n,Math.floor(t-d*h/c+p)),f=Math.min(i,Math.floor(t+(c-d)*h/c+p));F5(e,t,g,f,o)}let r=e[t],s=n,a=i;for(jW(e,n,t),o(e[i],r)>0&&jW(e,n,i);s<a;){for(jW(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?jW(e,n,a):(a++,jW(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function jW(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Snt(e,t){return e<t?-1:e>t?1:0}var eF=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!M5(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;M5(t,c)&&(n.leaf?i.push(a):F4(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!M5(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(M5(t,s)){if(n.leaf||F4(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=CS([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,d;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),d=!0),i.leaf){let u=Lnt(t,i.children,n);if(u!==-1)return i.children.splice(u,1),r.push(i),this._condense(r),this}!d&&!i.leaf&&F4(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],d=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=CS(t.slice(n,i+1)),yS(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=CS([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),d=c*Math.ceil(Math.sqrt(s));yAe(t,n,i,d,this.compareMinX);for(let u=n;u<=i;u+=d){let h=Math.min(u+d-1,i);yAe(t,u,h,c,this.compareMinY);for(let p=u;p<=h;p+=c){let g=Math.min(p+c-1,h);a.children.push(this._build(t,p,g,o-1))}}return yS(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let d=n.children[c],u=W4(d),h=Gnt(t,d)-u;h<s?(s=h,r=u<r?u:r,a=d):h===s&&u<r&&(r=u,a=d)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),$W(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=CS(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,yS(i,this.toBBox),yS(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=CS([t,n]),this.data.height=t.height+1,this.data.leaf=!1,yS(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=qW(t,0,a,this.toBBox),d=qW(t,a,i,this.toBBox),u=Znt(c,d),h=W4(c)+W4(d);u<r?(r=u,o=a,s=h<s?h:s):u===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:Rnt,r=t.leaf?this.compareMinY:Vnt,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=qW(t,0,n,r),a=qW(t,i-n,i,r),c=P5(s)+P5(a);for(let d=n;d<i-n;d++){let u=t.children[d];$W(s,t.leaf?r(u):u),c+=P5(s)}for(let d=i-n-1;d>=n;d--){let u=t.children[d];$W(a,t.leaf?r(u):u),c+=P5(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)$W(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():yS(t[n],this.toBBox)}};function Lnt(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function yS(e,t){qW(e,0,e.children.length,t,e)}function qW(e,t,n,i,o){o||(o=CS(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];$W(o,e.leaf?i(s):s)}return o}function $W(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function Rnt(e,t){return e.minX-t.minX}function Vnt(e,t){return e.minY-t.minY}function W4(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function P5(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Gnt(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Znt(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function F4(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function M5(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function CS(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function yAe(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;F5(e,s,t,n,o),r.push(t,s,s,n)}}function v5(){this._tree=new eF}function iI(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}iI.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};v5.prototype.insert=function(e,t){let n=iI.fromRectangleAndId(e,t,new iI);this._tree.insert(n)};function Bnt(e,t){return e.id===t.id}var wnt=new iI;v5.prototype.remove=function(e,t){let n=iI.fromRectangleAndId(e,t,wnt);this._tree.remove(n,Bnt)};var Xnt=new iI;v5.prototype.collides=function(e){let t=iI.fromRectangleAndId("",e,Xnt);return this._tree.collides(t)};var oI=v5;var Wnt=new U,Fnt=new Qt,Pnt=new Qt;function Vg(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new oI}Vg.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Vg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Vg.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Vg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new cl({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.fillMaterialProperty.isConstant||c){let b=d.fillMaterialProperty.color,x=z.getValueOrDefault(b,e,U.WHITE,Wnt);U.equals(h._lastColor,x)||(h._lastColor=U.clone(x,h._lastColor),h.color=tn.toValue(x,h.color))}let p=d.entity.isShowing&&(d.hasConstantFill||d.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,Pnt,Fnt);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Vg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Vg.prototype.contains=function(e){return this.updaters.contains(e.id)};Vg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),At.DONE):At.FAILED};Vg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function xS(e,t){this._batches=[],this._primitives=e,this._classificationType=t}xS.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=z.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Vg(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};xS.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};xS.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let d=0;d<c;d++){n=a[d],s.remove(n);let u=this.add(e,n);s.isDirty=!0,u.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};xS.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};xS.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var IS=xS;var zgi=y(C(),1);var Mnt=new Qt,vnt=new Qt;function dp(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new oI}dp.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};dp.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof qt&&t instanceof qt?!0:l(t)&&t.equals(n)};dp.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};dp.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};dp.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=dr.getValue(e,this.materialProperty,this.material),n=new cl({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h));let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,vnt,Mnt);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};dp.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};dp.prototype.contains=function(e){return this.updaters.contains(e.id)};dp.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};dp.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function _S(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}_S.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=Pd.shouldUseSphericalCoordinates(o.geometry.rectangle),s=z.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let d=n[c];if(d.isMaterial(t)&&d.usingSphericalTextureCoordinates===r&&d.zIndex===s&&!d.overlapping(o.geometry.rectangle)){d.add(e,t,o);return}}let a=new dp(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};_S.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};_S.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};_S.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};_S.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var tF=_S;var lbi=y(C(),1);var Nnt=new U,Dnt=new Qt,Qnt=new Qt,Unt=m.ZERO,knt=new m;function Gg(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.itemsToRemove=[],this.subscriptions=new Bt,this.showsUpdated=new Bt}Gg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty)||!z.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Gg.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Gg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Nn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new yn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.outlineColorProperty.isConstant||c){let x=d.outlineColorProperty,I=z.getValueOrDefault(x,e,U.WHITE,Nnt);U.equals(h._lastColor,I)||(h._lastColor=U.clone(I,h._lastColor),h.color=tn.toValue(I,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=d))}let p=d.entity.isShowing&&(d.hasConstantOutline||d.isOutlineVisible(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,Qnt,Dnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=d.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,Unt,knt);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Gg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Gg.prototype.contains=function(e){return this.updaters.contains(e.id)};Gg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};Gg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function ES(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new Bt,this._translucentBatches=new Bt}ES.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Gg(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Gg(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};ES.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};ES.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,d,u=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],u=o.update(e),d=o.itemsToRemove;let p=d.length;if(p>0)for(h=!0,t=0;t<p;t++)i=d[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],u=o.update(e),d=o.itemsToRemove;let p=d.length;if(p>0)for(h=!0,t=0;t<p;t++)i=d[t],o.remove(i),this.add(e,i)}}while(h);return u};ES.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return At.FAILED};ES.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var TS=ES;var Ynt=[];function gd(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new Bt,this._removedObjects=new Bt,this._changedObjects=new Bt;let o=Gn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=ur.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new TS(n,e,s,!1),this._outlineBatches[o+s]=new TS(n,e,s,!0),this._closedColorBatches[s]=new Lm(n,yn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new Lm(n,yn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new Rm(n,Io,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new Rm(n,Io,void 0,!0,s,!1),this._openColorBatches[s]=new Lm(n,yn,void 0,!1,s,!0),this._openColorBatches[o+s]=new Lm(n,yn,void 0,!1,s,!1),this._openMaterialBatches[s]=new Rm(n,Io,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new Rm(n,Io,void 0,!1,s,!1);let a=$n.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),d=[];if(r)for(s=0;s<a;++s)d.push(new tF(i,s,Io)),c[s]=new IS(i,s);else for(s=0;s<a;++s)c[s]=new IS(i,s);this._groundColorBatches=c,this._groundMaterialBatches=d,this._dynamicBatch=new Yx(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new Bt,this._updaterSets=new Bt,this._entityCollection=t,t.collectionChanged.addEventListener(gd.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,Ynt)}gd.registerUpdater=function(e){nI.registerUpdater(e)};gd.unregisterUpdater=function(e){nI.unregisterUpdater(e)};gd.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,d,u,h=this;for(a=s.length-1;a>-1;a--)c=s[a],d=c.id,u=this._updaterSets.get(d),u.entity===c?u.forEach(function(b){h._removeUpdater(b),h._insertUpdaterIntoBatch(e,b)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],d=c.id,u=this._updaterSets.get(d),u.forEach(this._removeUpdater.bind(this)),u.destroy(),this._updaterSets.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(a=n.length-1;a>-1;a--)c=n[a],d=c.id,u=new nI(c,this._scene),this._updaterSets.set(d,u),u.forEach(function(b){h._insertUpdaterIntoBatch(e,b)}),this._subscriptions.set(d,u.geometryChanged.addEventListener(gd._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let p=!0,g=this._batches,f=g.length;for(a=0;a<f;a++)p=g[a].update(e)&&p;return p};var Ont=[],Hnt=new ue;gd.prototype.getBoundingSphere=function(e,t){let n=Ont,i=Hnt,o=0,r=At.DONE,s=this._batches,a=s.length,c=e.id,d=this._updaterSets.get(c).updaters;for(let u=0;u<d.length;u++){let h=d[u];for(let p=0;p<a;p++){if(r=s[p].getBoundingSphere(h,i),r===At.PENDING)return At.PENDING;r===At.DONE&&(n[o]=ue.clone(i,n[o]),o++)}}return o===0?At.FAILED:(n.length=o,ue.fromBoundingSpheres(n,t),At.DONE)};gd.prototype.isDestroyed=function(){return!1};gd.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(gd.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),me(this)};gd.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};gd.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Gn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof qt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof qt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof qt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};gd._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};gd.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var nF=gd;var Ybi=y(C(),1);var znt=1,Knt="30px sans-serif",Jnt=nr.FILL,jnt=U.WHITE,qnt=U.BLACK,$nt=1,eit=!1,tit=new U(.165,.165,.165,.8),nit=new D(7,5),iit=D.ZERO,oit=m.ZERO,rit=et.NONE,sit=wi.CENTER,ait=kn.CENTER,cit=new m,lit=new U,dit=new U,uit=new U,mit=new D,hit=new m,fit=new D,pit=new zt,Ait=new zt,git=new zt,bit=new Qt;function CAe(e){this.entity=e,this.label=void 0,this.index=void 0}function F0(e,t){t.collectionChanged.addEventListener(F0.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}F0.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,d=r.label,u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;if(u&&(h=z.getValueOrUndefined(s._position,e,cit),c=z.getValueOrUndefined(a._text,e),u=l(h)&&l(c)),!u){P4(r,s,n);continue}z.isConstant(s._position)||(n._clusterDirty=!0);let p=!1,g=z.getValueOrDefault(a._heightReference,e,rit);l(d)||(d=n.getLabel(s),d.id=s,r.label=d,p=m.equals(d.position,h)&&d.heightReference===g),d.show=!0,d.position=h,d.text=c,d.scale=z.getValueOrDefault(a._scale,e,znt),d.font=z.getValueOrDefault(a._font,e,Knt),d.style=z.getValueOrDefault(a._style,e,Jnt),d.fillColor=z.getValueOrDefault(a._fillColor,e,jnt,lit),d.outlineColor=z.getValueOrDefault(a._outlineColor,e,qnt,dit),d.outlineWidth=z.getValueOrDefault(a._outlineWidth,e,$nt),d.showBackground=z.getValueOrDefault(a._showBackground,e,eit),d.backgroundColor=z.getValueOrDefault(a._backgroundColor,e,tit,uit),d.backgroundPadding=z.getValueOrDefault(a._backgroundPadding,e,nit,mit),d.pixelOffset=z.getValueOrDefault(a._pixelOffset,e,iit,fit),d.eyeOffset=z.getValueOrDefault(a._eyeOffset,e,oit,hit),d.heightReference=g,d.horizontalOrigin=z.getValueOrDefault(a._horizontalOrigin,e,sit),d.verticalOrigin=z.getValueOrDefault(a._verticalOrigin,e,ait),d.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,pit),d.pixelOffsetScaleByDistance=z.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,Ait),d.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,git),d.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,bit),d.disableDepthTestDistance=z.getValueOrUndefined(a._disableDepthTestDistance,e),p&&d._updateClamping()}return!0};F0.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return At.FAILED;let i=n.label;return t.center=m.clone(i._clampedPosition??i.position,t.center),t.radius=0,At.DONE};F0.prototype.isDestroyed=function(){return!1};F0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(F0.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return me(this)};F0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new CAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new CAe(r)):(P4(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],P4(s.get(r.id),r,a),s.remove(r.id)};function P4(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var iF=F0;var u0i=y(C(),1);var yit=1,Cit=!0,xit=0,Iit=!0,_it=!0,Eit=Gn.ENABLED,Tit=et.NONE,Sit=U.RED,Lit=0,Rit=U.WHITE,Vit=Fc.HIGHLIGHT,Git=.5,Zit=new D(1,1),xAe={maximumPositionEpsilon:Number.POSITIVE_INFINITY},Bit=new X,wit=new X,IAe=new U,_Ae=new Array(4),Xit=new m;function P0(e,t){t.collectionChanged.addEventListener(P0.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new Bt,this._onCollectionChanged(t,t.values,[],[])}async function Wit(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Bh.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}P0.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,d=n[s.id],u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;if(u&&(h=s.computeModelMatrix(e,Bit),c=Ve.createIfNeeded(z.getValueOrUndefined(a._uri,e)),u=l(h)&&l(c)),!u){l(d)&&d.modelPrimitive&&(d.modelPrimitive.show=!1);continue}if(!l(d)||c.url!==d.url){l(d?.modelPrimitive)&&(i.removeAndDestroy(d.modelPrimitive),delete n[s.id]),d={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...xAe}},n[s.id]=d;let f=z.getValueOrDefault(a._incrementallyLoadTextures,e,Iit),b=z.getValueOrDefault(a._environmentMapOptions,e,xAe,d.environmentMapOptionsScratch);Wit(this,s,c,f,b)}let p=d.modelPrimitive;if(!l(p))continue;p.show=!0,p.scale=z.getValueOrDefault(a._scale,e,yit),p.enableVerticalExaggeration=z.getValueOrDefault(a._enableVerticalExaggeration,e,Cit),p.minimumPixelSize=z.getValueOrDefault(a._minimumPixelSize,e,xit),p.maximumScale=z.getValueOrUndefined(a._maximumScale,e),p.modelMatrix=X.clone(h,p.modelMatrix),p.shadows=z.getValueOrDefault(a._shadows,e,Eit),p.heightReference=z.getValueOrDefault(a._heightReference,e,Tit),p.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e),p.silhouetteColor=z.getValueOrDefault(a._silhouetteColor,e,Sit,IAe),p.silhouetteSize=z.getValueOrDefault(a._silhouetteSize,e,Lit),p.color=z.getValueOrDefault(a._color,e,Rit,IAe),p.colorBlendMode=z.getValueOrDefault(a._colorBlendMode,e,Vit),p.colorBlendAmount=z.getValueOrDefault(a._colorBlendAmount,e,Git),p.clippingPlanes=z.getValueOrUndefined(a._clippingPlanes,e),p.clampAnimations=z.getValueOrDefault(a._clampAnimations,e,_it),p.imageBasedLighting.imageBasedLightingFactor=z.getValueOrDefault(a._imageBasedLightingFactor,e,Zit);let g=z.getValueOrUndefined(a._lightColor,e);if(l(g)&&(U.pack(g,_Ae,0),g=m.unpack(_Ae,0,Xit)),p.lightColor=g,p.customShader=z.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,p.ready){let f=z.getValueOrDefault(a._runAnimations,e,!0);d.animationsRunning!==f&&(f?p.activeAnimations.addAll({loop:od.REPEAT}):p.activeAnimations.removeAll(),d.animationsRunning=f);let b=z.getValueOrUndefined(a._nodeTransformations,e,d.nodeTransformationsScratch);if(l(b)){let _=Object.keys(b);for(let E=0,S=_.length;E<S;++E){let R=_[E],G=b[R];if(!l(G))continue;let B=p.getNode(R);if(!l(B))continue;let w=X.fromTranslationRotationScale(G,wit);B.matrix=X.multiply(B.originalMatrix,w,w)}}let x=!1,I=z.getValueOrUndefined(a._articulations,e,d.articulationsScratch);if(l(I)){let _=Object.keys(I);for(let E=0,S=_.length;E<S;++E){let R=_[E],G=I[R];l(G)&&(x=!0,p.setArticulationStage(R,G))}}x&&p.applyArticulations()}}return!0};P0.prototype.isDestroyed=function(){return!1};P0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(P0.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)M4(this,e[i],t,n);return me(this)};var N5=new m,Fit=new ge;P0.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return At.FAILED;if(n.loadFailed)return At.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return At.PENDING;if(!i.ready||!n.modelUpdated)return At.PENDING;let o=this._scene,r=o.ellipsoid??ie.default;if(i.heightReference!==et.NONE){let a=i.modelMatrix;N5.x=a[12],N5.y=a[13],N5.z=a[14];let c=r.cartesianToCartographic(N5,Fit),d=o.getHeight(c,i.heightReference);return l(d)&&(Du(i.heightReference)?c.height=d:c.height+=d),ue.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),At.DONE}return ue.clone(i.boundingSphere,t),At.DONE};P0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(Pit(r,a),s.set(r.id,r)):(M4(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],M4(this,r,a,c),s.remove(r.id)};function M4(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function Pit(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var oF=P0;var Q0i=y(C(),1);var y0i=y(C(),1);function M0(e){this._definitionChanged=new Ce,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(M0.prototype,{isConstant:{get:function(){return z.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:eo.FIXED}}});var Mit=new j;M0.prototype.getValue=function(e,t){return l(e)||(e=j.now(Mit)),this.getValueInReferenceFrame(e,eo.FIXED,t)};M0.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};M0.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?ie.default.scaleToGeodeticSurface(n,n):void 0};M0.prototype.equals=function(e){return this===e||e instanceof M0&&this._value===e._value};M0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var up=M0;var vit=60,Nit=1,TAe=new wn,v4=new wn,N4=new wn;function EAe(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Dit(e,t,n,i,o,r,s,a,c){let d=a,u;u=e.getValueInReferenceFrame(t,r,c[d]),l(u)&&(c[d++]=u);let h=!l(o)||j.lessThanOrEquals(o,t)||j.greaterThanOrEquals(o,n),p=0,g=i.length,f=i[p],b=n,x=!1,I,_,E;for(;p<g;){if(!h&&j.greaterThanOrEquals(f,o)&&(u=e.getValueInReferenceFrame(o,r,c[d]),l(u)&&(c[d++]=u),h=!0),j.greaterThan(f,t)&&j.lessThan(f,b)&&!f.equals(o)&&(u=e.getValueInReferenceFrame(f,r,c[d]),l(u)&&(c[d++]=u)),p<g-1){if(s>0&&!x){let S=i[p+1],R=j.secondsDifference(S,f);x=R>s,x&&(I=Math.ceil(R/s),_=0,E=R/Math.max(I,2),I=Math.max(I-1,1))}if(x&&_<I){f=j.addSeconds(f,E,new j),_++;continue}}x=!1,p++,f=i[p]}return u=e.getValueInReferenceFrame(n,r,c[d]),l(u)&&(c[d++]=u),d}function Qit(e,t,n,i,o,r,s,a){let c,d=0,u=s,h=t,p=!l(i)||j.lessThanOrEquals(i,t)||j.greaterThanOrEquals(i,n);for(;j.lessThan(h,n);)!p&&j.greaterThanOrEquals(h,i)&&(p=!0,c=e.getValueInReferenceFrame(i,o,a[u]),l(c)&&(a[u]=c,u++)),c=e.getValueInReferenceFrame(h,o,a[u]),l(c)&&(a[u]=c,u++),d++,h=j.addSeconds(t,r*d,new j);return c=e.getValueInReferenceFrame(n,o,a[u]),l(c)&&(a[u]=c,u++),u}function Uit(e,t,n,i,o,r,s,a){let c,d=0,u=s,h=t,p=Math.max(r,60),g=!l(i)||j.lessThanOrEquals(i,t)||j.greaterThanOrEquals(i,n);for(;j.lessThan(h,n);)!g&&j.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[u]),l(c)&&(a[u]=c,u++)),c=e.getValueInReferenceFrame(h,o,a[u]),l(c)&&(a[u]=c,u++),d++,h=j.addSeconds(t,p*d,new j);return c=e.getValueInReferenceFrame(n,o,a[u]),l(c)&&(a[u]=c,u++),u}function kit(e,t,n,i,o,r,s,a){N4.start=t,N4.stop=n;let c=s,d=e.intervals;for(let u=0;u<d.length;u++){let h=d.get(u);if(!wn.intersect(h,N4,TAe).isEmpty){let p=h.start;h.isStartIncluded||(h.isStopIncluded?p=h.stop:p=j.addSeconds(h.start,j.secondsDifference(h.stop,h.start)/2,new j));let g=e.getValueInReferenceFrame(p,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function Yit(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function Oit(e,t,n,i,o,r,s,a){v4.start=t,v4.stop=n;let c=s,d=e.intervals;for(let u=0;u<d.length;u++){let h=d.get(u);if(!wn.intersect(h,v4,TAe).isEmpty){let p=h.start,g=h.stop,f=t;j.greaterThan(p,f)&&(f=p);let b=n;j.lessThan(g,b)&&(b=g),c=SAe(h.data,f,b,i,o,r,c,a)}}return c}function SAe(e,t,n,i,o,r,s,a){for(;e instanceof Ig;)e=e.resolvedProperty;if(e instanceof Oa){let c=e._property._times;s=Dit(e,t,n,c,i,o,r,s,a)}else e instanceof gZ?s=Qit(e,t,n,i,o,r,s,a):e instanceof ka?s=Oit(e,t,n,i,o,r,s,a):e instanceof _g?s=kit(e,t,n,i,o,r,s,a):e instanceof dl||e instanceof up&&z.isConstant(e)?s=Yit(e,t,n,i,o,r,s,a):s=Uit(e,t,n,i,o,r,s,a);return s}function LAe(e,t,n,i,o,r,s){l(s)||(s=[]);let a=SAe(e,t,n,i,o,r,0,s);return s.length=a,s}var Hit=new $;function rF(e,t){this._unusedIndexes=[],this._polylineCollection=new Wh,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}rF.prototype.update=function(e){if(this._referenceFrame===eo.INERTIAL){let t=Dt.computeIcrfToCentralBodyFixedMatrix(e,Hit);X.fromRotationTranslation(t,m.ZERO,this._polylineCollection.modelMatrix)}};rF.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,d=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(d){let h=z.getValueOrUndefined(i._leadTime,e),p=z.getValueOrUndefined(i._trailTime,e),g=n._availability,f=l(g),b=l(h),x=l(p);if(d=f||b&&x,d){if(x&&(r=j.addSeconds(e,-p,new j)),b&&(s=j.addSeconds(e,h,new j)),f){let I=g.start,_=g.stop;(!x||j.greaterThan(I,r))&&(r=I),(!b||j.lessThan(_,s))&&(s=_)}d=j.lessThan(r,s)}}if(!d){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let u=z.getValueOrDefault(i._resolution,e,vit);c.show=!0,c.positions=LAe(o,r,s,e,this._referenceFrame,u,c.positions.slice()),c.material=dr.getValue(e,i._material,c.material),c.width=z.getValueOrDefault(i._width,e,Nit),c.distanceDisplayCondition=z.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};rF.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};rF.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),me(this)};function v0(e,t){t.collectionChanged.addEventListener(v0.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}v0.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,d=eo.FIXED;this._scene.mode===re.SCENE3D&&(d=a.referenceFrame);let u=this._updaters[d];if(c===u&&l(u)){u.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(u)||(u=new rF(this._scene,d),u.update(e),this._updaters[d]=u),r.updater=u,l(u)&&u.updateObject(e,r)}return!0};v0.prototype.isDestroyed=function(){return!1};v0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(v0.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return me(this)};v0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new EAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new EAe(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};v0._subSample=LAe;var sF=v0;var nyi=y(C(),1);var RAe=U.WHITE,VAe=U.BLACK,GAe=0,ZAe=1,BAe=0,wAe=Ir.NONE,XAe=new U,zit=new m,WAe=new U,FAe=new zt,PAe=new zt,MAe=new Qt;function vAe(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function N0(e,t){t.collectionChanged.addEventListener(N0.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}N0.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,d=r.billboard,u=z.getValueOrDefault(a._heightReference,e,et.NONE),h=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),p;if(h&&(p=z.getValueOrUndefined(s._position,e,zit),h=l(p)),!h){aF(r,s,n);continue}z.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,f=!1;if(u!==et.NONE&&!l(d)?(l(c)&&(aF(r,s,n),c=void 0),d=n.getBillboard(s),d.id=s,d.image=void 0,r.billboard=d,g=!0,f=m.equals(d.position,p)&&d.heightReference===u):u===et.NONE&&!l(c)&&(l(d)&&(aF(r,s,n),d=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=p,c.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,FAe),c.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,PAe),c.color=z.getValueOrDefault(a._color,e,RAe,XAe),c.outlineColor=z.getValueOrDefault(a._outlineColor,e,VAe,WAe),c.outlineWidth=z.getValueOrDefault(a._outlineWidth,e,GAe),c.pixelSize=z.getValueOrDefault(a._pixelSize,e,ZAe),c.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,MAe),c.disableDepthTestDistance=z.getValueOrDefault(a._disableDepthTestDistance,e,BAe),c.splitDirection=z.getValueOrDefault(a._splitDirection,e,wAe);else if(l(d)){d.show=!0,d.position=p,d.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,FAe),d.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,PAe),d.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,MAe),d.disableDepthTestDistance=z.getValueOrDefault(a._disableDepthTestDistance,e,BAe),d.splitDirection=z.getValueOrDefault(a._splitDirection,e,wAe),d.heightReference=u;let b=z.getValueOrDefault(a._color,e,RAe,XAe),x=z.getValueOrDefault(a._outlineColor,e,VAe,WAe),I=Math.round(z.getValueOrDefault(a._outlineWidth,e,GAe)),_=Math.max(1,Math.round(z.getValueOrDefault(a._pixelSize,e,ZAe)));if(I>0?(d.scale=1,g=g||I!==r.outlineWidth||_!==r.pixelSize||!U.equals(b,r.color)||!U.equals(x,r.outlineColor)):(d.scale=_/50,_=50,g=g||I!==r.outlineWidth||!U.equals(b,r.color)||!U.equals(x,r.outlineColor)),g){r.color=U.clone(b,r.color),r.outlineColor=U.clone(x,r.outlineColor),r.pixelSize=_,r.outlineWidth=I;let E=b.alpha,S=b.toCssColorString(),R=x.toCssColorString(),G=JSON.stringify([S,_,R,I]);d.setImage(G,fx(E,S,R,I,_))}f&&d._updateClamping()}}return!0};N0.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return At.FAILED;if(l(n.pointPrimitive))t.center=m.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return At.PENDING;t.center=m.clone(i._clampedPosition,t.center)}return t.radius=0,At.DONE};N0.prototype.isDestroyed=function(){return!1};N0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(N0.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return me(this)};N0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new vAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new vAe(r)):(aF(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],aF(s.get(r.id),r,a),s.remove(r.id)};function aF(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var cF=N0;var ZCi=y(C(),1);var qyi=y(C(),1);var Iyi=y(C(),1);var kAe=[];function Kit(e,t,n,i,o){let r=kAe;r.length=o;let s,a=n.red,c=n.green,d=n.blue,u=n.alpha,h=i.red,p=i.green,g=i.blue,f=i.alpha;if(U.equals(n,i)){for(s=0;s<o;s++)r[s]=U.clone(n);return r}let b=(h-a)/o,x=(p-c)/o,I=(g-d)/o,_=(f-u)/o;for(s=0;s<o;s++)r[s]=new U(a+s*b,c+s*x,d+s*I,u+s*_);return r}function lF(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._arcType=e.arcType??dn.GEODESIC,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._workerName="createPolylineGeometry";let r=1+t.length*m.packedLength;r+=l(n)?1+n.length*U.packedLength:1,this.packedLength=r+ie.packedLength+we.packedLength+4}lF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var YAe=ie.clone(ie.UNIT_SPHERE),OAe=new we,rI={positions:void 0,colors:void 0,ellipsoid:YAe,vertexFormat:OAe,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};lF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ie.unpack(e,t,YAe);t+=ie.packedLength;let c=we.unpack(e,t,OAe);t+=we.packedLength;let d=e[t++],u=e[t++]===1,h=e[t++],p=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._vertexFormat=we.clone(c,n._vertexFormat),n._width=d,n._colorsPerVertex=u,n._arcType=h,n._granularity=p,n):(rI.positions=r,rI.colors=s,rI.width=d,rI.colorsPerVertex=u,rI.arcType=h,rI.granularity=p,new lF(rI))};var NAe=new m,DAe=new m,QAe=new m,UAe=new m;lF.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,d,u,h=[],p=Xo(e._positions,m.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let W=0,M=h[0];i=i.filter(function(Q,N){let k=!1;return o?k=N===M||N===0&&M===1:k=N+1===M,k?(W++,M=h[W],!1):!0})}let g=p.length;if(g<2||t<=0)return;if(r===dn.GEODESIC||r===dn.RHUMB){let W,M;r===dn.GEODESIC?(W=Z.chordLength(s,a.maximumRadius),M=Oi.numberOfPoints):(W=s,M=Oi.numberOfPointsRhumbLine);let Q=Oi.extractHeights(p,a);if(l(i)){let N=1;for(c=0;c<g-1;++c)N+=M(p[c],p[c+1],W);let k=new Array(N),v=0;for(c=0;c<g-1;++c){let O=p[c],H=p[c+1],ee=i[c],K=M(O,H,W);if(o&&c<N){let te=i[c+1],q=Kit(O,H,ee,te,K),pe=q.length;for(d=0;d<pe;++d)k[v++]=q[d]}else for(d=0;d<K;++d)k[v++]=U.clone(ee)}k[v]=U.clone(i[i.length-1]),i=k,kAe.length=0}r===dn.GEODESIC?p=Oi.generateCartesianArc({positions:p,minDistance:W,ellipsoid:a,height:Q}):p=Oi.generateCartesianRhumbArc({positions:p,granularity:W,ellipsoid:a,height:Q})}g=p.length;let f=g*4-4,b=new Float64Array(f*3),x=new Float64Array(f*3),I=new Float64Array(f*3),_=new Float32Array(f*2),E=n.st?new Float32Array(f*2):void 0,S=l(i)?new Uint8Array(f*4):void 0,R=0,G=0,B=0,w=0,F;for(d=0;d<g;++d){d===0?(F=NAe,m.subtract(p[0],p[1],F),m.add(p[0],F,F)):F=p[d-1],m.clone(F,QAe),m.clone(p[d],DAe),d===g-1?(F=NAe,m.subtract(p[g-1],p[g-2],F),m.add(p[g-1],F,F)):F=p[d+1],m.clone(F,UAe);let W,M;l(S)&&(d!==0&&!o?W=i[d-1]:W=i[d],d!==g-1&&(M=i[d]));let Q=d===0?2:0,N=d===g-1?2:4;for(u=Q;u<N;++u){m.pack(DAe,b,R),m.pack(QAe,x,R),m.pack(UAe,I,R),R+=3;let k=u-2<0?-1:1;if(_[G++]=2*(u%2)-1,_[G++]=k*t,n.st&&(E[B++]=d/(g-1),E[B++]=Math.max(_[G-2],0)),l(S)){let v=u<2?W:M;S[w++]=U.floatToByte(v.red),S[w++]=U.floatToByte(v.green),S[w++]=U.floatToByte(v.blue),S[w++]=U.floatToByte(v.alpha)}}}let P=new xn;P.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:b}),P.prevPosition=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x}),P.nextPosition=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:I}),P.expandAndWidth=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:_}),n.st&&(P.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:E})),l(S)&&(P.color=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,values:S,normalize:!0}));let A=Me.createTypedArray(f,g*6-6),T=0,L=0,V=g-1;for(d=0;d<V;++d)A[L++]=T,A[L++]=T+2,A[L++]=T+1,A[L++]=T+1,A[L++]=T+2,A[L++]=T+3,T+=4;return new pt({attributes:P,indices:A,primitiveType:We.TRIANGLES,boundingSphere:ue.fromPoints(p),geometryType:Qu.POLYLINES})};var Zg=lF;var Jit=new di(0),D5={},HAe=new U,jit=new qt(U.WHITE),qit=new di(!0),$it=new di(Gn.DISABLED),eot=new di(new Qt),tot=new di($n.BOTH);function not(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function iot(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function $h(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener($h.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new Ce,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new not,this._groundGeometryOptions=new iot,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=ur.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties($h.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&z.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});$h.prototype.isOutlineVisible=function(e){return!1};$h.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};$h.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof qt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,HAe)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)),this.clampToGround?new wt({id:t,geometry:new cC(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof qt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,HAe)),l(a)||(a=U.WHITE),s.depthFailColor=tn.fromColor(a)),new wt({id:t,geometry:new Zg(this._geometryOptions),attributes:s}))};$h.prototype.createOutlineGeometryInstance=function(e){};$h.prototype.isDestroyed=function(){return!1};$h.prototype.destroy=function(){this._entitySubscription(),me(this)};$h.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(ze.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??jit,d=c instanceof qt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??qit,this._shadowsProperty=o.shadows??$it,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??eot,this._classificationTypeProperty=o.classificationType??tot,this._fillEnabled=!0,this._zIndex=a??Jit;let u=o.width,h=o.arcType,p=o.clampToGround,g=o.granularity;if(!r.isConstant||!z.isConstant(u)||!z.isConstant(h)||!z.isConstant(g)||!z.isConstant(p)||!z.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let f=this._geometryOptions,b=r.getValue(ze.MINIMUM_VALUE,f.positions);if(!l(b)||b.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let x;d&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof qt)?x=bs.VERTEX_FORMAT:x=Pa.VERTEX_FORMAT,f.vertexFormat=x,f.positions=b,f.width=l(u)?u.getValue(ze.MINIMUM_VALUE):void 0,f.arcType=l(h)?h.getValue(ze.MINIMUM_VALUE):void 0,f.granularity=l(g)?g.getValue(ze.MINIMUM_VALUE):void 0;let I=this._groundGeometryOptions;I.positions=b,I.width=f.width,I.arcType=f.arcType,I.granularity=f.granularity,this._clampToGround=l(p)?p.getValue(ze.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&xt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};$h.prototype.createDynamicUpdater=function(e,t){return new dF(e,t,this)};var SS={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function dF(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function zAe(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=D5[n];!l(i)||i.isDestroyed()?(i=new Wh,D5[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}dF.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=z.getValueOrUndefined(o,e,this._positions);t._clampToGround=z.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=z.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=z.getValueOrDefault(i._arcType,e,dn.GEODESIC),t._groundGeometryOptions.granularity=z.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!z.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,p;if(h instanceof qt)p=new bs;else{let g=dr.getValue(e,h,this._material);p=new Pa({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new ch({geometryInstances:t.createFillGeometryInstance(e),appearance:p,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),z.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=zAe(this);if(!n.isShowing||!n.isAvailable(e)||!z.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=dn.GEODESIC;c=z.getValueOrDefault(i._arcType,e,c);let d=t._scene.globe,u=t._scene.ellipsoid;c!==dn.NONE&&l(d)&&(SS.ellipsoid=u,SS.positions=r,SS.granularity=z.getValueOrUndefined(i._granularity,e),SS.height=Oi.extractHeights(r,u),c===dn.GEODESIC?r=Oi.generateCartesianArc(SS):r=Oi.generateCartesianRhumbArc(SS)),a.show=!0,a.positions=r.slice(),a.material=dr.getValue(e,t.fillMaterialProperty,a.material),a.width=z.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=z.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};dF.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return ue.clone(n.boundingSphere,e),At.DONE}return l(t)&&!t.ready?At.PENDING:At.DONE}else{let t=zAe(this);if(t.show&&t.positions.length>0)return ue.fromPoints(t.positions,e),At.DONE}return At.FAILED};dF.prototype.isDestroyed=function(){return!1};dF.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=D5[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete D5[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),me(this)};var uF=$h;var fCi=y(C(),1);var oot=new U,rot=new Qt,sot=new Qt;function ef(e,t,n,i,o){let r;n instanceof qt?r=bs:r=Pa,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(ef.prototype.onMaterialChanged,this),this.subscriptions=new Bt,this.showsUpdated=new Bt,this.zIndex=i,this._asynchronous=o}ef.prototype.onMaterialChanged=function(){this.invalidated=!0};ef.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof qt&&t instanceof qt?!0:l(t)&&t.equals(n)};ef.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};ef.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};ef.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new ch({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===Pa&&(this.material=dr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===Pa&&(this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!c.fillMaterialProperty.isConstant){let b=c.fillMaterialProperty.color,x=z.getValueOrDefault(b,e,U.WHITE,oot);U.equals(h._lastColor,x)||(h._lastColor=U.clone(x,h._lastColor),h.color=tn.toValue(x,h.color))}let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,sot,rot);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};ef.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};ef.prototype.contains=function(e){return this.updaters.contains(e.id)};ef.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};ef.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function LS(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}LS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=z.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new ef(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};LS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};LS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};LS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};LS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var mF=LS;var aot=[];function KAe(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function JAe(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof qt?1:2);let r;l(i)&&(r=i+o*Gn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof qt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function mp(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new Bt,this._removedObjects=new Bt,this._changedObjects=new Bt;let o,r=Gn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new Lm(n,bs,void 0,!1,o),this._materialBatches[o]=new Rm(n,Pa,void 0,!1,o),this._colorBatches[o+r]=new Lm(n,bs,bs,!1,o),this._materialBatches[o+r]=new Rm(n,Pa,bs,!1,o),this._colorBatches[o+r*2]=new Lm(n,bs,Pa,!1,o),this._materialBatches[o+r*2]=new Rm(n,Pa,Pa,!1,o);this._dynamicBatch=new Yx(n,i);let s=$n.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new mF(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new Bt,this._updaters=new Bt,this._entityCollection=t,t.collectionChanged.addEventListener(mp.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,aot)}mp.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,d,u;for(a=s.length-1;a>-1;a--)c=s[a],d=c.id,u=this._updaters.get(d),u.entity===c?(KAe(this,u),JAe(this,e,u)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],d=c.id,u=this._updaters.get(d),KAe(this,u),u.destroy(),this._updaters.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(a=n.length-1;a>-1;a--)c=n[a],d=c.id,u=new uF(c,this._scene),this._updaters.set(d,u),JAe(this,e,u),this._subscriptions.set(d,u.geometryChanged.addEventListener(mp._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,p=this._batches,g=p.length;for(a=0;a<g;a++)h=p[a].update(e)&&h;return h};var cot=[],lot=new ue;mp.prototype.getBoundingSphere=function(e,t){let n=cot,i=lot,o=0,r=At.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let d=0;d<a;d++){if(r=s[d].getBoundingSphere(c,i),r===At.PENDING)return At.PENDING;r===At.DONE&&(n[o]=ue.clone(i,n[o]),o++)}return o===0?At.FAILED:(n.length=o,ue.fromBoundingSpheres(n,t),At.DONE)};mp.prototype.isDestroyed=function(){return!1};mp.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(mp.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),me(this)};mp._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};mp.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var hF=mp;function bd(e){cl.initializeTerrainHeights(),ch.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Lr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??bd.defaultVisualizersCallback;let i=!1,o=new Wl,r=new Wl;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let d=0,u=n.length;d<u;d++)this._onDataSourceAdded(n,n.get(d));let s=new mW;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let d=this,u=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),d._removeDefaultDataSourceListener=void 0,d._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(u),c=n.dataSourceAdded.addEventListener(u)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var RS=[];bd.registerVisualizer=function(e){RS.includes(e)||RS.push(e)};bd.unregisterVisualizer=function(e){if(RS.includes(e)){let t=RS.indexOf(e);RS.splice(t,1)}};bd.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new h1(t,i),new nF(e,i,n._primitives,n._groundPrimitives),new iF(t,i),new oF(e,i),new j2(e,i),new cF(t,i),new sF(e,i),new hF(e,i,n._primitives,n._groundPrimitives),...RS.map(o=>new o(e,i))]};Object.defineProperties(bd.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});bd.prototype.isDestroyed=function(){return!1};bd.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),me(this)};bd.prototype.update=function(e){if(!Si.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};bd.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var dot=[],uot=new ue;bd.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return At.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let p=this._dataSourceCollection;for(o=p.length,i=0;i<o;i++){let g=p.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return At.FAILED;let s=dot,a=uot,c=0,d=At.DONE,u=r._visualizers,h=u.length;for(i=0;i<h;i++){let p=u[i];if(l(p.getBoundingSphere)){if(d=u[i].getBoundingSphere(e,a),!t&&d===At.PENDING)return At.PENDING;d===At.DONE&&(s[c]=ue.clone(a,s[c]),c++)}}return c===0?At.FAILED:(s.length=c,ue.fromBoundingSpheres(s,n),At.DONE)};bd.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new Wl),s=o.add(new LW);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};bd.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let d=0;d<c;d++)a[d].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};bd.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var fF=bd;var Axi=y(C(),1);var txi=y(C(),1);function D4(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}D4.clone=function(e,t){if(l(e))return l(t)||(t=new D4),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Vm=D4;var jAe=new $,qAe=new $,$Ae=new $,mot=new X,Q5=new m,ege=new m,Q4=new m,U4=new m,tge=new m,nge=new m,hot=new Pe,fot=new m,pot=new $,VS=new j,Aot=1.25;function got(e,t,n,i,o,r,s,a,c,d){let u=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let p=!1,g=!1,f,b,x;if(u===re.SCENE3D){j.addSeconds(c,.001,VS);let B=o.getValue(VS,Q5);if(l(B)||(j.addSeconds(c,-.001,VS),B=o.getValue(VS,Q5),g=!0),l(B)){let w=Dt.computeFixedToIcrfMatrix(c,jAe),F=Dt.computeFixedToIcrfMatrix(VS,qAe),P;!l(w)||!l(F)?(P=Dt.computeTemeToPseudoFixedMatrix(c,$Ae),w=$.transpose(P,jAe),F=Dt.computeTemeToPseudoFixedMatrix(VS,qAe),$.transpose(F,F)):P=$.transpose(w,$Ae);let A=$.multiplyByVector(w,h,tge),T=$.multiplyByVector(F,B,nge);m.subtract(A,T,U4);let L=m.magnitude(U4)*1e3,V=Z.GRAVITATIONALPARAMETER,W=-V/(L*L-2*V/m.magnitude(A));W<0||W>Aot*d.maximumRadius?(f=ege,m.normalize(h,f),m.negate(f,f),x=m.clone(m.UNIT_Z,Q4),b=m.cross(x,f,Q5),m.magnitude(b)>Z.EPSILON7&&(m.normalize(f,f),m.normalize(b,b),x=m.cross(f,b,Q4),m.normalize(x,x),p=!0)):m.equalsEpsilon(h,B,Z.EPSILON7)||(x=ege,m.normalize(A,x),m.normalize(T,T),b=m.cross(x,T,Q4),g&&(b=m.multiplyByScalar(b,-1,b)),m.equalsEpsilon(b,m.ZERO,Z.EPSILON7)||(f=m.cross(b,x,Q5),$.multiplyByVector(P,f,f),$.multiplyByVector(P,b,b),$.multiplyByVector(P,x,x),m.normalize(f,f),m.normalize(b,b),m.normalize(x,x),p=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let I,_,E;i&&(I=m.clone(t.position,U4),_=m.clone(t.direction,tge),E=m.clone(t.up,nge));let S=mot,R;l(s)&&(R=s.getValue(c,hot));let G=r.getValue(c,fot);if(a===rA.INERTIAL&&l(R))X.fromTranslationQuaternionRotationScale(h,R,m.ONE,S);else if(a===rA.VELOCITY&&l(G)){let B=Dt.rotationMatrixFromPositionVelocity(h,G,d,pot);X.fromRotationTranslation(B,h,S)}else a===rA.ENU||!p?Dt.eastNorthUpToFixedFrame(h,d,S):(S[0]=f.x,S[1]=f.y,S[2]=f.z,S[3]=0,S[4]=b.x,S[5]=b.y,S[6]=b.z,S[7]=0,S[8]=x.x,S[9]=x.y,S[10]=x.z,S[11]=0,S[12]=h.x,S[13]=h.y,S[14]=h.z,S[15]=0);t._setTransform(S),i&&(m.clone(I,t.position),m.clone(_,t.direction),m.clone(E,t.up),m.cross(_,E,t.right))}if(n){let p=u===re.SCENE2D||m.equals(e._offset3D,m.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,p)}}function pF(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??ie.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new m,this._defaultOffset3D=void 0,this._velocityProperty=new Tg(e.position,!0),this._offset3D=new m}Object.defineProperties(pF,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=m.clone(e,new m)}}});pF.defaultOffset3D=new m(-14e3,3500,3500);var U5=new Vm,bot=new m;pF.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===re.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,d=r.orientation,u=r!==this._lastEntity,h=o!==this._mode,p=n.camera,g=u||h,f=!0;if(u){let b=r.viewFrom,x=l(b);if(!x&&l(t)){U5.pitch=-Z.PI_OVER_FOUR,U5.range=0;let I=a.getValue(e,bot);if(l(I)){let _=2-1/Math.max(1,m.magnitude(I)/i.maximumRadius);U5.pitch*=_}p.viewBoundingSphere(t,U5),this.boundingSphere=t,g=!1,f=!1}else(!x||!l(b.getValue(e,this._offset3D)))&&m.clone(pF._defaultOffset3D,this._offset3D)}else!h&&this._mode!==re.SCENE2D&&m.clone(p.position,this._offset3D);this._lastEntity=r,this._mode=o,got(this,p,g,f,a,c,d,s,e,i)};var AF=pF;var zIi=y(C(),1);var _xi=y(C(),1);function bF(){this._cache={}}bF.prototype.fromColor=function(e,t){return k5(void 0,void 0,e,t,this._cache)};bF.prototype.fromUrl=function(e,t,n){return k5(e,void 0,t,n,this._cache)};bF.prototype.fromMakiIconId=function(e,t,n){return k5(hn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};bF.prototype.fromText=function(e,t,n){return k5(void 0,e,t,n,this._cache)};var yot=new U;function Cot(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,yot).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function ige(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=U.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=U.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var gF=new Array(4);function k5(e,t,n,i,o){gF[0]=e,gF[1]=t,gF[2]=n,gF[3]=i;let r=JSON.stringify(gF),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Cot(c,n,i),l(e)){let u=Ve.createIfNeeded(e).fetchImage().then(function(h){return ige(c,h,i),o[r]=a,a});return o[r]=u,u}else if(l(t)){let d=Ax(t,{font:`bold ${i}px sans-serif`});ige(c,d,i)}return o[r]=a,a}var Bg=bF;var hIi=y(C());var Zxi=y(C());var Rxi=y(C());var Txi=y(C());function k4(e){return e}function Y5(e){if(e==null)return k4;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var d=2,u=a.length,h=new Array(u);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;d<u;)h[d]=a[d],++d;return h}}var Pxi=y(C());var wxi=y(C());function oge(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Y4(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return rge(e,n)})}:rge(e,t)}function rge(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=O4(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function O4(e,t){var n=Y5(e.transform),i=e.arcs;function o(u,h){h.length&&h.pop();for(var p=i[u<0?~u:u],g=0,f=p.length;g<f;++g)h.push(n(p[g],g));u<0&&oge(h,f)}function r(u){return n(u)}function s(u){for(var h=[],p=0,g=u.length;p<g;++p)o(u[p],h);return h.length<2&&h.push(h[0]),h}function a(u){for(var h=s(u);h.length<4;)h.push(h[0]);return h}function c(u){return u.map(a)}function d(u){var h=u.type,p;switch(h){case"GeometryCollection":return{type:h,geometries:u.geometries.map(d)};case"Point":p=r(u.coordinates);break;case"MultiPoint":p=u.coordinates.map(r);break;case"LineString":p=s(u.arcs);break;case"MultiLineString":p=u.arcs.map(s);break;case"Polygon":p=c(u.arcs);break;case"MultiPolygon":p=u.arcs.map(c);break;default:return null}return{type:h,coordinates:p}}return d(t)}var Uxi=y(C());var vxi=y(C());var Hxi=y(C());var $xi=y(C());var Kxi=y(C());var sIi=y(C());var nIi=y(C());function O5(e){return m.fromDegrees(e[0],e[1],e[2])}var H4={"urn:ogc:def:crs:OGC:1.3:CRS84":O5,"EPSG:4326":O5,"urn:ogc:def:crs:EPSG::4326":O5},sge={},age={},z4=48,K4,J4=U.ROYALBLUE,j4=U.YELLOW,q4=2,$4=U.fromBytes(255,255,0,100),ej=!1,Tot={small:24,medium:48,large:64},Sot=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function cge(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Sot.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${cge(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Lot(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function Rot(e,t){return new hh(Lot(cge,e,t),!0)}function H5(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=qn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let d=Number.MAX_VALUE;for(let u in r)if(r.hasOwnProperty(u)&&r[u]){let h=u.toLowerCase();if(d>1&&h==="title"){d=1,s=u;break}else d>2&&h==="name"?(d=2,s=u):d>3&&/title/i.test(u)?(d=3,s=u):d>4&&/name/i.test(u)&&(d=4,s=u)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new di(c):n(r,s))}return o}function tj(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var lge={Feature:uge,FeatureCollection:Vot,GeometryCollection:mge,LineString:gge,MultiLineString:bge,MultiPoint:pge,MultiPolygon:xge,Point:fge,Polygon:Cge,Topology:Ige},dge={GeometryCollection:mge,LineString:gge,MultiLineString:bge,MultiPoint:pge,MultiPolygon:xge,Point:fge,Polygon:Cge,Topology:Ige};function uge(e,t,n,i,o){if(t.geometry===null){H5(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new de("feature.geometry is required.");let r=t.geometry.type,s=dge[r];if(!l(s))throw new de(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function Vot(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)uge(e,r[s],void 0,i,o)}function mge(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],d=c.type,u=dge[d];if(!l(u))throw new de(`Unknown geometry type: ${d}`);u(e,t,c,i,o)}}function hge(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=U.fromCssColorString(g)),a=Tot[c["marker-size"]]??a;let f=c["marker-symbol"];l(f)&&(r=f)}let d;l(r)?r.length===1?d=e._pinBuilder.fromText(r.toUpperCase(),s,a):d=e._pinBuilder.fromMakiIconId(r,s,a):d=e._pinBuilder.fromColor(s,a);let u=new _c;u.verticalOrigin=new di(kn.BOTTOM),i.length===2&&o.clampToGround&&(u.heightReference=et.CLAMP_TO_GROUND);let h=H5(t,e._entityCollection,o.describe);h.billboard=u,h.position=new dl(n(i));let p=Promise.resolve(d).then(function(g){u.image=new di(g)}).catch(function(){u.image=new di(e._pinBuilder.fromColor(s,a))});e._promises.push(p)}function fge(e,t,n,i,o){hge(e,t,i,n.coordinates,o)}function pge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)hge(e,t,i,r[s],o)}function Age(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let u=a["stroke-width"];l(u)&&(s=new di(u));let h,p=a.stroke;l(p)&&(h=U.fromCssColorString(p));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new qt(h))}let c=H5(t,e._entityCollection,o.describe),d=new Zc;c.polyline=d,d.clampToGround=o.clampToGround,d.material=r,d.width=s,d.positions=new di(tj(i,n)),d.arcType=dn.RHUMB}function gge(e,t,n,i,o){Age(e,t,i,n.coordinates,o)}function bge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)Age(e,t,i,r[s],o)}function yge(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new di(g));let f,b=c.stroke;l(b)&&(f=U.fromCssColorString(b));let x=c["stroke-opacity"];l(x)&&x!==1&&(l(f)||(f=r.getValue().clone()),f.alpha=x),l(f)&&(r=new di(f));let I,_=c.fill,E=s.color.getValue();l(_)&&(I=U.fromCssColorString(_),I.alpha=E.alpha),x=c["fill-opacity"],l(x)&&x!==E.alpha&&(l(I)||(I=E.clone()),I.alpha=x),l(I)&&(s=new qt(I))}let d=new uh;d.outline=new di(!0),d.outlineColor=r,d.outlineWidth=a,d.material=s,d.arcType=dn.RHUMB;let u=[];for(let g=1,f=i.length;g<f;g++)u.push(new lc(tj(i[g],n)));let h=i[0];d.hierarchy=new di(new lc(tj(h,n),u)),h[0].length>2?d.perPositionHeight=new di(!0):o.clampToGround||(d.height=0);let p=H5(t,e._entityCollection,o.describe);p.polygon=d}function Cge(e,t,n,i,o){yge(e,t,i,n.coordinates,o)}function xge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)yge(e,t,i,r[s],o)}function Ige(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Y4(n,n.objects[r]),a=lge[s.type];a(e,s,s,i,o)}}function D0(e){this._name=e,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._entityCollection=new Ca(this),this._promises=[],this._pinBuilder=new Bg,this._entityCluster=new ou,this._credit=void 0,this._resourceCredits=[]}D0.load=function(e,t){return new D0().load(e,t)};Object.defineProperties(D0,{markerSize:{get:function(){return z4},set:function(e){z4=e}},markerSymbol:{get:function(){return K4},set:function(e){K4=e}},markerColor:{get:function(){return J4},set:function(e){J4=e}},stroke:{get:function(){return j4},set:function(e){j4=e}},strokeWidth:{get:function(){return q4},set:function(e){q4=e}},fill:{get:function(){return $4},set:function(e){$4=e}},clampToGround:{get:function(){return ej},set:function(e){ej=e}},crsNames:{get:function(){return H4}},crsLinkHrefs:{get:function(){return sge}},crsLinkTypes:{get:function(){return age}}});Object.defineProperties(D0.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});D0.prototype.load=function(e,t){return _ge(this,e,t,!0)};D0.prototype.process=function(e,t){return _ge(this,e,t,!1)};function _ge(e,t,n,i){cs.setLoading(e,!0),n=n??Y.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Gt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof Ve){t=Ve.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let d=c.length;for(let u=0;u<d;u++)a.push(c[u])}}return n={describe:n.describe??Rot,markerSize:n.markerSize??z4,markerSymbol:n.markerSymbol??K4,markerColor:n.markerColor??J4,strokeWidthProperty:new di(n.strokeWidth??q4),strokeMaterialProperty:new qt(n.stroke??j4),fillMaterialProperty:new qt(n.fill??$4),clampToGround:n.clampToGround??ej},Promise.resolve(r).then(function(a){return Got(e,a,n,s,i)}).catch(function(a){throw cs.setLoading(e,!1),e._error.raiseEvent(e,a),a})}D0.prototype.update=function(e){return!0};function Got(e,t,n,i,o){let r;l(i)&&(r=yg(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=lge[t.type];if(!l(s))throw new de(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?O5:null;if(l(a)){if(!l(a.properties))throw new de("crs.properties is undefined.");let d=a.properties;if(a.type==="name"){if(c=H4[d.name],!l(c))throw new de(`Unknown crs name: ${d.name}`)}else if(a.type==="link"){let u=sge[d.href];if(l(u)||(u=age[d.type]),!l(u))throw new de(`Unable to resolve crs link: ${JSON.stringify(d)}`);c=u(d)}else if(a.type==="EPSG"){if(c=H4[`EPSG:${d.code}`],!l(c))throw new de(`Unknown crs EPSG code: ${d.code}`)}else throw new de(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(d){return o&&e._entityCollection.removeAll(),d!==null&&s(e,t,t,d,n),Promise.all(e._promises).then(function(){return e._promises.length=0,cs.setLoading(e,!1),e})})}var Q0=D0;var vTi=y(C(),1);var $Ei=y(C());var PEi=y(C());var JIi=y(C(),1),nj=function(e,t){return nj=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},nj(e,t)};function hp(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");nj(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var vs=function(){return vs=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},vs.apply(this,arguments)};function Ege(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function Tge(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var qIi=y(C()),Sge="4.1.5";var e_i=y(C()),Lge=Object.prototype.hasOwnProperty;function hu(e){return typeof e=="boolean"}function Rge(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function U0(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function tf(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var A_i=y(C());var i_i=y(C());var z5=/\s+/,K5=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(z5):[],o=t.split(z5),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(z5):[],o=t.split(z5),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)Lge.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();var r_i=y(C());function Gge(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=Zot(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=Vge(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=Vge(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):ij(c,r,n).substr(0,r+i);var d="";if(s.path&&(d+="/"+s.path),s.query&&(d+="?"+s.query),d)if((c+d).length>=r){if((c+d).length==t)return(c+d).substr(0,t);var u=r-c.length;return(c+ij(d,u,n)).substr(0,r+i)}else c+=d;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var p=r-c.length;return(c+ij(h,p,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var f="";return r>0&&(f=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+f).substr(0,r+i)}function Zot(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function Vge(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function ij(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}var a_i=y(C());function Zge(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}var d_i=y(C());function Bge(e,t,n){return Rge(e,t,n)}var wge=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new K5({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?Gge(t,i):o==="middle"?Zge(t,i):Bge(t,i)},e}();var xEi=y(C());var Z_i=y(C());var b_i=y(C()),fp=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();var S_i=y(C());var C_i=y(C());function Xge(e){return e>=0&&e<=31||e==127}function wg(e){return e>=65&&e<=90||e>=97&&e<=122}function Ns(e){return e>=48&&e<=57}function J5(e){return e==34||e==39}function k0(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function nf(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function Wge(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function Fge(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function j5(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function Pge(e){return e<91?e==40:e==91||e==123}function oj(e){return e<93?e==41:e==93||e==125}var I_i=y(C()),Mge=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/;var rj=/https?:\/\//i,vge=new RegExp("^"+rj.source,"i"),Bot=/^(javascript|vbscript):/i,wot=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Xot=/^(?:\/\/)?([^/#?:]+)/,GS=wg;function sj(e){return wg(e)||Ns(e)||e===43||e===45||e===46}var Xg=nf;function q5(e){return e===95||Xg(e)}function aj(e){return nf(e)||Fge(e)||j5(e)}function $5(e){return e===47||e===63||e===35}function cj(e){return Mge.test(e.toLowerCase())}function Nge(e){if(Bot.test(e))return!1;var t=e.match(wot);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function Dge(e){var t=e.match(Xot);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!cj(o)}var Wot=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Fot=/[:/?#]/;function Qge(e){var t=e.split(Fot,1)[0];return Wot.test(t)}var Pot=/^(https?:\/\/)?(?:www\.)?/i,Mot=/^\/\//,Uge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Dot(n)),this.stripPrefix.scheme&&(n=vot(n)),this.stripPrefix.www&&(n=Not(n)),this.stripTrailingSlash&&(n=Qot(n)),this.decodePercentEncoding&&(n=Uot(n)),n},t}(fp);function vot(e){return e.replace(vge,"")}function Not(e){return e.includes("www.")?e.replace(Pot,"$1"):e}function Dot(e){return e.replace(Mot,"")}function Qot(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Uot(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}var W_i=y(C());var kge=/^mailto:/i,lj=nf;function eU(e){return lj(e)||Wge(e)}function Yge(e){var t=e.split(".").pop();return cj(t)}var v_i=y(C());var Oge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(fp);var Q_i=y(C());function dj(e){return e===95||nf(e)}function Hge(e){return e.length<=140}var zge=["twitter","facebook","instagram","tiktok","youtube"];var H_i=y(C());var Kge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:tf(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(fp);var J_i=y(C());var kot={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function uj(e){return e===45||e===46||e===95||wg(e)||Ns(e)}function Jge(e,t){var n=kot[t];return n.test(e)}var jge=["twitter","instagram","soundcloud","tiktok","youtube"];var tEi=y(C());var qge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:tf(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(fp);var iEi=y(C()),Yot=/[-. ()]/,Oot=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,Hot=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,zot=new RegExp("^".concat(Oot.source,"|").concat(Hot.source,"$"));function mj(e){return e===45||e===46||e===32}function tU(e){return e===44||e===59}function $ge(e){var t=e.charAt(0)==="+"||Yot.test(e);return t&&zot.test(e)}var aEi=y(C());var ebe=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(fp);var Kot=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),nbe(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),nbe(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function ibe(e,t){for(var n=new Kot(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)nU(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:trt(n,s,o);break;case 12:nrt(n,s,o);break;case 0:Jot(n,s,o);break;case 1:jot(n,s,o);break;case 2:qot(n,s,o);break;case 3:$ot(n,s,o);break;case 4:ert(n,s,i,o);break;case 5:irt(n,s,o);break;case 6:ort(n,s,i,o);break;case 7:rrt(n,s,i,o);break;case 13:srt(n,s,o);break;case 14:art(n,s,o);break;case 8:crt(n,s,o);break;case 9:lrt(n,s,o);break;case 10:drt(n,s,o);break;case 15:urt(n,s,i,o);break;case 16:mrt(n,s,i,o);break;case 17:hrt(n,s,i,o);break;case 18:frt(n,s,i,o);break;case 19:prt(n,s,i,o);break;case 20:Art(n,s,o);break;case 21:grt(n,s,o);break;case 22:sI(n,s,o);break;case 23:brt(n,s,o);break;case 24:yrt(n,s,o);break;case 25:Crt(n,s,o);break;case 26:xrt(n,s,o);break;case 27:Irt(n,s,o);break;case 28:_rt(n,s,o);break;case 29:Ert(n,s,o);break;case 30:Trt(n,s,o);break;case 31:Srt(n,s,o);break;case 32:Rrt(n,s,i,o);break;case 33:Vrt(n,s,o);break;case 34:Grt(n,s,o);break;case 35:Zrt(n,s,o);break;case 36:Brt(n,s,i,o);break;case 37:Lrt(n,s,i,o);break;case 38:wrt(n,s,i,o);break;case 39:Xrt(n,s,i,o);break;case 40:Wrt(n,s,o);break;case 41:Frt(n,s,o);break;default:tf(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&GS(o)){var a=n.text.charCodeAt(n.charIdx-1);GS(a)||n.addMachine(iU(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(d){return ds(n,d)});return n.matches}function nU(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(Drt(i,28));else if(n===64)e.addMachine(Qrt(i,30));else if(n===47)e.addMachine(fj(i,11));else if(n===43)e.addMachine(hj(i,37));else if(n===40)e.addMachine(hj(i,32));else{if(Ns(n)&&(e.addMachine(hj(i,38)),e.addMachine(vrt(i,13))),lj(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(Nrt(i,o))}GS(n)&&e.addMachine(iU(i,0)),nf(n)&&e.addMachine(fj(i,5))}}function Jot(e,t,n){n===58?t.state=2:n===45?t.state=1:sj(n)||e.removeMachine(t)}function jot(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(fj(i,11))):sj(n)?t.state=0:e.removeMachine(t))}function qot(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):Xg(n)?(t.state=5,GS(n)&&e.addMachine(iU(i,0))):e.removeMachine(t)}function $ot(e,t,n){n===47?t.state=4:aj(n)?(t.state=10,t.acceptStateReached=!0):ds(e,t)}function ert(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):Xg(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function trt(e,t,n){n===47?t.state=12:e.removeMachine(t)}function nrt(e,t,n){Xg(n)?t.state=5:e.removeMachine(t)}function irt(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:$5(n)?t.state=10:q5(n)||ds(e,t)}function ort(e,t,n,i){i===45||(i===46?ds(e,t):Xg(i)?t.state=5:ds(e,t))}function rrt(e,t,n,i){i===46?ds(e,t):Xg(i)?(t.state=5,t.acceptStateReached=!0):ds(e,t)}function srt(e,t,n){n===46?t.state=14:n===58?t.state=8:Ns(n)||($5(n)?t.state=10:nf(n)?e.removeMachine(t):ds(e,t))}function art(e,t,n){Ns(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ds(e,t)}function crt(e,t,n){Ns(n)?t.state=9:ds(e,t)}function lrt(e,t,n){Ns(n)||($5(n)?t.state=10:ds(e,t))}function drt(e,t,n){aj(n)||ds(e,t)}function urt(e,t,n,i){n.toLowerCase()==="a"?t.state=16:sI(e,t,i)}function mrt(e,t,n,i){n.toLowerCase()==="i"?t.state=17:sI(e,t,i)}function hrt(e,t,n,i){n.toLowerCase()==="l"?t.state=18:sI(e,t,i)}function frt(e,t,n,i){n.toLowerCase()==="t"?t.state=19:sI(e,t,i)}function prt(e,t,n,i){n.toLowerCase()==="o"?t.state=20:sI(e,t,i)}function Art(e,t,n){n===58?t.state=21:sI(e,t,n)}function grt(e,t,n){eU(n)?t.state=22:e.removeMachine(t)}function sI(e,t,n){n===46?t.state=23:n===64?t.state=24:eU(n)?t.state=22:e.removeMachine(t)}function brt(e,t,n){n===46||n===64?e.removeMachine(t):eU(n)?t.state=22:e.removeMachine(t)}function yrt(e,t,n){Xg(n)?t.state=25:e.removeMachine(t)}function Crt(e,t,n){n===46?t.state=27:n===45?t.state=26:q5(n)||ds(e,t)}function xrt(e,t,n){n===45||n===46?ds(e,t):q5(n)?t.state=25:ds(e,t)}function Irt(e,t,n){n===46||n===45?ds(e,t):Xg(n)?(t.state=25,t.acceptStateReached=!0):ds(e,t)}function _rt(e,t,n){dj(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function Ert(e,t,n){dj(n)||ds(e,t)}function Trt(e,t,n){uj(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Srt(e,t,n){uj(n)||(nf(n)?e.removeMachine(t):ds(e,t))}function Lrt(e,t,n,i){Ns(i)?t.state=38:(e.removeMachine(t),nU(e,n,i))}function Rrt(e,t,n,i){Ns(i)?t.state=33:e.removeMachine(t),nU(e,n,i)}function Vrt(e,t,n){Ns(n)?t.state=34:e.removeMachine(t)}function Grt(e,t,n){Ns(n)?t.state=35:e.removeMachine(t)}function Zrt(e,t,n){n===41?t.state=36:e.removeMachine(t)}function Brt(e,t,n,i){Ns(i)?t.state=38:mj(i)?t.state=39:e.removeMachine(t)}function wrt(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,tU(i)?t.state=40:i===35?t.state=41:Ns(i)||(i===40?t.state=32:mj(i)?t.state=39:(ds(e,t),GS(i)&&e.addMachine(iU(o,0))))}function Xrt(e,t,n,i){Ns(i)?t.state=38:i===40?t.state=32:(ds(e,t),nU(e,n,i))}function Wrt(e,t,n){tU(n)||(n===35?t.state=41:Ns(n)?t.state=38:ds(e,t))}function Frt(e,t,n){tU(n)?t.state=40:Ns(n)?e.removeMachine(t):ds(e,t)}function ds(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,d=e.hashtagServiceName,u=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,p=i.slice(t.startIdx,o);switch(p=Mrt(p),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var f=rj.exec(p);if(f&&(h=h+f.index,p=p.slice(f.index)),!Nge(p))return;break}case 1:{if(!Dge(p))return;break}case 2:{if(!Qge(p))return;break}default:tf(t)}n.push(new Uge({tagBuilder:r,matchedText:p,offset:h,urlMatchType:Prt(t.matchType),url:p,protocolRelativeMatch:p.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{Yge(p)&&n.push(new Oge({tagBuilder:r,matchedText:p,offset:h,email:p.replace(kge,"")}));break}case 2:{Hge(p)&&n.push(new Kge({tagBuilder:r,matchedText:p,offset:h,serviceName:d,hashtag:p.slice(1)}));break}case 3:{Jge(p,u)&&n.push(new qge({tagBuilder:r,matchedText:p,offset:h,serviceName:u,mention:p.slice(1)}));break}case 4:{if(p=p.replace(/ +$/g,""),$ge(p)){var b=p.replace(/[^0-9,;#]/g,"");n.push(new ebe({tagBuilder:r,matchedText:p,offset:h,number:b,plusSign:p.charAt(0)==="+"}))}break}default:tf(t)}}}function Prt(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:tf(e)}}var tbe={")":"(","}":"{","]":"["};function Mrt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);Pge(o)?t[i]++:oj(o)&&t[tbe[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if(oj(o)){var s=tbe[i];if(t[s]<0)t[s]++,r--;else break}else if(j5(o))r--;else break}return e.slice(0,r+1)}function iU(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function fj(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function vrt(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function Nrt(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function Drt(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function Qrt(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function hj(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function nbe(e){return e.type===0&&e.matchType===0}var SEi=y(C());var pp=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),Aj=new pp,Urt=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=Aj,this.html=t,this.callbacks=n}return e}();function obe(e,t){for(var n=new Urt(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:krt(n,o);break;case 1:Yrt(n,o,r);break;case 2:Hrt(n,o,r);break;case 3:Ort(n,o,r);break;case 4:zrt(n,o,r);break;case 5:Krt(n,o,r);break;case 6:Jrt(n,o,r);break;case 7:jrt(n,o,r);break;case 8:qrt(n,o);break;case 9:$rt(n,o);break;case 10:est(n,o,r);break;case 11:tst(n,o,r);break;case 12:nst(n,o);break;case 13:ist(n);break;case 14:ost(n,o);break;case 15:rst(n,o);break;case 16:sst(n,o);break;case 17:ast(n,o);break;case 18:cst(n,o);break;case 19:lst(n,o);break;case 20:dst(n,o);break;default:tf(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&ust(n)}function krt(e,t){t==="<"&&Ap(e)}function Yrt(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new pp(vs(vs({},e.currentTag),{isClosing:!0}))):t==="<"?Ap(e):wg(n)?(e.state=3,e.currentTag=new pp(vs(vs({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=Aj)}function Ort(e,t,n){k0(n)?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),e.state=4):t==="<"?Ap(e):t==="/"?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),e.state=12):t===">"?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),gp(e)):!wg(n)&&!Ns(n)&&t!==":"&&Gm(e)}function Hrt(e,t,n){t===">"?Gm(e):wg(n)?e.state=3:Gm(e)}function zrt(e,t,n){k0(n)||(t==="/"?e.state=12:t===">"?gp(e):t==="<"?Ap(e):t==="="||J5(n)||Xge(n)?Gm(e):e.state=5)}function Krt(e,t,n){k0(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?gp(e):t==="<"?Ap(e):J5(n)&&Gm(e)}function Jrt(e,t,n){k0(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?gp(e):t==="<"?Ap(e):J5(n)?Gm(e):e.state=5)}function jrt(e,t,n){k0(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?Gm(e):t==="<"?Ap(e):e.state=10)}function qrt(e,t){t==='"'&&(e.state=11)}function $rt(e,t){t==="'"&&(e.state=11)}function est(e,t,n){k0(n)?e.state=4:t===">"?gp(e):t==="<"&&Ap(e)}function tst(e,t,n){k0(n)?e.state=4:t==="/"?e.state=12:t===">"?gp(e):t==="<"?Ap(e):(e.state=4,mst(e))}function nst(e,t){t===">"?(e.currentTag=new pp(vs(vs({},e.currentTag),{isClosing:!0})),gp(e)):Gm(e)}function ist(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new pp(vs(vs({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new pp(vs(vs({},e.currentTag),{type:"doctype"})),e.state=20):Gm(e)}function ost(e,t){t==="-"?e.state=15:t===">"?Gm(e):e.state=16}function rst(e,t){t==="-"?e.state=18:t===">"?Gm(e):e.state=16}function sst(e,t){t==="-"&&(e.state=17)}function ast(e,t){t==="-"?e.state=18:e.state=16}function cst(e,t){t===">"?gp(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function lst(e,t){t==="-"?e.state=17:t===">"?gp(e):e.state=16}function dst(e,t){t===">"?gp(e):t==="<"&&Ap(e)}function Gm(e){e.state=0,e.currentTag=Aj}function Ap(e){e.state=1,e.currentTag=new pp({idx:e.charIdx})}function gp(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),Gm(e),e.currentDataIdx=e.charIdx+1}function ust(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function pj(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function mst(e){e.charIdx--}var hst=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=fst(t.urls),this.email=hu(t.email)?t.email:this.email,this.phone=hu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=hu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=pst(t.stripPrefix),this.stripTrailingSlash=hu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=hu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&jge.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&zge.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=Ast(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return obe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,d=s.split(c),u=a;d.forEach(function(h,p){if(p%2===0){var g=n.parseText(h,u);r.push.apply(r,Tge([],Ege(g),!1))}u+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(gst);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||U0(t,function(n){return n.getType()==="hashtag"}),this.email||U0(t,function(n){return n.getType()==="email"}),this.phone||U0(t,function(n){return n.getType()==="phone"}),this.mention||U0(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=ibe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof K5)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new wge({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=Sge,e}(),rbe=hst;function fst(e){return e==null&&(e=!0),hu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:hu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:hu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:hu(e.ipV4Matches)?e.ipV4Matches:!0}}function pst(e){return e==null&&(e=!0),hu(e)?{scheme:e,www:e}:{scheme:hu(e.scheme)?e.scheme:!0,www:hu(e.www)?e.www:!0}}function Ast(e){return typeof e=="number"?{length:e,location:"end"}:vs({length:Number.POSITIVE_INFINITY,location:"end"},e)}function gst(e,t){return e.getOffset()-t.getOffset()}var NEi=y(C());var MEi=y(C());var KEi=y(C());var oU=rbe;var fbe;typeof DOMParser<"u"&&(fbe=new DOMParser);var bst=new oU({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),rU=32,sbe=2414016,abe=1,cbe=16093e3,lbe=.1,yst=[null,void 0,"http://www.topografix.com/GPX/1/1"],Do={gpx:yst};function Cst(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function gj(e,t){let n=xF(e,"id");return n=l(n)?n:qn(),t.getOrCreateEntity(n)}function bj(e){let t=dbe(e,"lon"),n=dbe(e,"lat"),i=yF(e,"ele",Do.gpx);return m.fromDegrees(t,n,i)}function dbe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function xF(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Y0(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function yj(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function yF(e,t,n){let i=Y0(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function yd(e,t,n){let i=Y0(e,t,n);if(l(i))return i.textContent.trim()}function pbe(e){let t=new _c;return t.width=rU,t.height=rU,t.scaleByDistance=new zt(sbe,abe,cbe,lbe),t.pixelOffsetScaleByDistance=new zt(sbe,abe,cbe,lbe),t.verticalOrigin=new di(kn.BOTTOM),t.image=e,t}function xst(){let e=new dh;return e.translucencyByDistance=new zt(3e6,1,5e6,0),e.pixelOffset=new D(17,0),e.horizontalOrigin=wi.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function Abe(e){let t=new Zc;return t.width=4,t.material=new V0,t.material.color=l(e)?e:U.RED,t.material.outlineWidth=2,t.material.outlineColor=U.BLACK,t}var ube={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},CF;typeof document<"u"&&(CF=document.createElement("div"));function Cj(e,t){let n,i="",o=Object.keys(ube),r=o.length;for(n=0;n<r;n++){let u=o[n],h=ube[u];h.value=yd(e,h.tag,Do.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=bst.link(i),CF.innerHTML=i;let s=CF.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=U.WHITE,c=U.BLACK,d='<div class="cesium-infoBox-description-lighter" style="';return d+="overflow:auto;",d+="word-wrap:break-word;",d+=`background-color:${a.toCssColorString()};`,d+=`color:${c.toCssColorString()};`,d+='">',d+=`${CF.innerHTML}</div>`,CF.innerHTML="",d}function gbe(e,t,n,i){let o=bj(t),r=gj(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",U.RED,rU);r.billboard=pbe(s);let a=yd(t,"name",Do.gpx);r.name=a,r.label=xst(),r.label.text=a,r.description=Cj(t,r),i.clampToGround&&(r.billboard.heightReference=et.CLAMP_TO_GROUND,r.label.heightReference=et.CLAMP_TO_GROUND)}function Ist(e,t,n,i){let o=gj(t,n);o.description=Cj(t,o);let r=yj(t,"rtept",Do.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)gbe(e,r[a],n,i),s[a]=bj(r[a]);o.polyline=Abe(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function _st(e,t,n,i){let o=gj(t,n);o.description=Cj(t,o);let r=yj(t,"trkseg",Do.gpx),s=[],a=[],c,d=!0,u=new Oa;for(let h=0;h<r.length;h++)c=Est(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),u.addSamples(a,s),d=d&&!0):d=!1;if(d){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",U.RED,rU);o.billboard=pbe(h),o.position=u,i.clampToGround&&(o.billboard.heightReference=et.CLAMP_TO_GROUND),o.availability=new as,o.availability.addInterval(new wn({start:a[0],stop:a[a.length-1]}))}o.polyline=Abe(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function Est(e){let t={positions:[],times:[]},n=yj(e,"trkpt",Do.gpx),i;for(let o=0;o<n.length;o++){let r=bj(n[o]);t.positions.push(r),i=yd(n[o],"time",Do.gpx),l(i)&&t.times.push(j.fromIso8601(i))}return t}function Tst(e){let t=Y0(e,"metadata",Do.gpx);if(l(t)){let n={name:yd(t,"name",Do.gpx),desc:yd(t,"desc",Do.gpx),author:Sst(t),copyright:Rst(t),link:bbe(t),time:yd(t,"time",Do.gpx),keywords:yd(t,"keywords",Do.gpx),bounds:Vst(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Sst(e){let t=Y0(e,"author",Do.gpx);if(l(t)){let n={name:yd(t,"name",Do.gpx),email:Lst(t),link:bbe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Lst(e){let t=Y0(e,"email",Do.gpx);if(l(t)){let n=yd(t,"id",Do.gpx),i=yd(t,"domain",Do.gpx);return`${n}@${i}`}}function bbe(e){let t=Y0(e,"link",Do.gpx);if(l(t)){let n={href:xF(t,"href"),text:yd(t,"text",Do.gpx),mimeType:yd(t,"type",Do.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function Rst(e){let t=Y0(e,"copyright",Do.gpx);if(l(t)){let n={author:xF(t,"author"),year:yd(t,"year",Do.gpx),license:yd(t,"license",Do.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function Vst(e){let t=Y0(e,"bounds",Do.gpx);if(l(t)){let n={minLat:yF(t,"minlat",Do.gpx),maxLat:yF(t,"maxlat",Do.gpx),minLon:yF(t,"minlon",Do.gpx),maxLon:yF(t,"maxlon",Do.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var mbe={wpt:gbe,rte:Ist,trk:_st};function Gst(e,t,n,i){let o=Object.keys(mbe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=mbe[a],d=t.childNodes,u=d.length;for(let h=0;h<u;h++){let p=d[h];p.localName===a&&Do.gpx.indexOf(p.namespaceURI)!==-1&&c(e,p,n,i)}}}function hbe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=xF(o,"version"),s=xF(o,"creator"),a,c=Tst(o);l(c)&&(a=c.name),o.localName==="gpx"?Gst(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let d,u=i.computeAvailability(),h=u.start,p=u.stop,g=j.equals(h,ze.MINIMUM_VALUE),f=j.equals(p,ze.MAXIMUM_VALUE);if(!g||!f){let x;g&&(x=new Date,x.setHours(0,0,0,0),h=j.fromDate(x)),f&&(x=new Date,x.setHours(24,0,0,0),p=j.fromDate(x)),d=new Oh,d.startTime=h,d.stopTime=p,d.currentTime=j.clone(h),d.clockRange=ls.LOOP_STOP,d.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,d.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(p,h)/60,1),31556900))}let b=!1;return e._name!==a&&(e._name=a,b=!0),e._creator!==s&&(e._creator=s,b=!0),Zst(e._metadata,c)&&(e._metadata=c,b=!0),e._version!==r&&(e._version=r,b=!0),d!==e._clock&&(b=!0,e._clock=d),b&&e._changed.raiseEvent(e),cs.setLoading(e,!1),e}function Zst(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function Bst(e,t,n,i){i=i??Y.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof Ve){n=Ve.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Cst(r).then(function(s){let a,c;try{a=fbe.parseFromString(s,"application/xml")}catch(d){c=d.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let d=l(c)?c:a.documentElement.firstChild.nodeValue;throw d||(d=a.body.innerText),new de(d)}return hbe(e,a,i)}):hbe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function ZS(){this._changed=new Ce,this._error=new Ce,this._loading=new Ce,this._clock=void 0,this._entityCollection=new Ca(this),this._entityCluster=new ou,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new Bg}ZS.load=function(e,t){return new ZS().load(e,t)};Object.defineProperties(ZS.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});ZS.prototype.update=function(e){return!0};ZS.prototype.load=function(e,t){if(!l(e))throw new Ae("data is required.");t=t??Y.EMPTY_OBJECT,cs.setLoading(this,!0);let n=this._name,i=this;return Bst(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=j.equals(s,ze.MINIMUM_VALUE),d=j.equals(a,ze.MAXIMUM_VALUE);if(!c||!d){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=j.fromDate(h)),d&&(h=new Date,h.setHours(24,0,0,0),a=j.fromDate(h)),o=new Oh,o.startTime=s,o.stopTime=a,o.currentTime=j.clone(s),o.clockRange=ls.LOOP_STOP,o.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(a,s)/60,1),31556900))}let u=!1;return o!==i._clock&&(i._clock=o,u=!0),n!==i._name&&(u=!0),u&&i._changed.raiseEvent(i),cs.setLoading(i,!1),i}).catch(function(o){return cs.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var IF=ZS;var DTi=y(C(),1);function wst(e,t){this.position=e,this.headingPitchRoll=t}var _F=wst;var SRi=y(C(),1);var qF=y(Bd(),1);var WLi=y(C(),1);var UTi=y(C(),1);function mU(e){return hU(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function hU(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?hU(n):n),[])}var ybe=[0,1,2,3].concat(...mU([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Vr(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,d=e.stat_desc.max_length,u,h,p,g,f,b,x=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,u=o.heap_max+1;u<573;u++)h=o.heap[u],g=r[r[h*2+1]*2+1]+1,g>d&&(g=d,x++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,f=0,h>=c&&(f=a[h-c]),b=r[h*2],o.opt_len+=b*(g+f),s&&(o.static_len+=b*(s[h*2+1]+f)));if(x!==0){do{for(g=d-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[d]--,x-=2}while(x>0);for(g=d;g!==0;g--)for(h=o.bl_count[g];h!==0;)p=o.heap[--u],!(p>e.max_code)&&(r[p*2+1]!=g&&(o.opt_len+=(g-r[p*2+1])*r[p*2],r[p*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,d,u,h;for(d=1;d<=15;d++)a[d]=c=c+s[d-1]<<1;for(u=0;u<=r;u++)h=o[u*2+1],h!==0&&(o[u*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,d,u=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=u=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=u<2?++u:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=u,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),d=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=d,r[h*2]=r[c*2]+r[d*2],o.depth[h]=Math.max(o.depth[c],o.depth[d])+1,r[c*2+1]=r[d*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Vr._length_code=[0,1,2,3,4,5,6,7].concat(...mU([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Vr.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Vr.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Vr.d_code=function(e){return e<256?ybe[e]:ybe[256+(e>>>7)]};Vr.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Vr.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Vr.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Vr.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function pc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var Xst=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],Wst=mU([[144,8],[112,9],[24,7],[8,8]]);pc.static_ltree=hU(Xst.map((e,t)=>[e,Wst[t]]));var Fst=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],Pst=mU([[30,5]]);pc.static_dtree=hU(Fst.map((e,t)=>[e,Pst[t]]));pc.static_l_desc=new pc(pc.static_ltree,Vr.extra_lbits,257,286,15);pc.static_d_desc=new pc(pc.static_dtree,Vr.extra_dbits,0,30,15);pc.static_bl_desc=new pc(null,Vr.extra_blbits,0,19,7);var Mst=9,vst=8;function bp(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var xbe=0,dU=1,aI=2,of=[new bp(0,0,0,0,xbe),new bp(4,4,8,4,dU),new bp(4,5,16,8,dU),new bp(4,6,32,32,dU),new bp(4,4,16,16,aI),new bp(8,16,32,32,aI),new bp(8,16,128,128,aI),new bp(8,32,128,256,aI),new bp(32,128,258,1024,aI),new bp(32,258,258,4096,aI)],sU=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Zm=0,aU=1,EF=2,cU=3,Nst=32,xj=42,lU=113,TF=666,Ij=8,Dst=0,_j=1,Qst=2,kr=3,uU=258,fu=uU+kr+1;function Cbe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function Ust(){let e=this,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b,x,I,_,E,S,R,G,B,w,F,P,A,T,L,V,W,M,Q,N=new Vr,k=new Vr,v=new Vr;e.depth=[];let O,H,ee,K,te,q;e.bl_count=[],e.heap=[],W=[],M=[],Q=[];function pe(){d=2*r,h[g-1]=0;for(let ve=0;ve<g-1;ve++)h[ve]=0;P=of[A].max_lazy,L=of[A].good_length,V=of[A].nice_length,F=of[A].max_chain,R=0,I=0,B=0,_=w=kr-1,S=0,p=0}function ye(){let ve;for(ve=0;ve<286;ve++)W[ve*2]=0;for(ve=0;ve<30;ve++)M[ve*2]=0;for(ve=0;ve<19;ve++)Q[ve*2]=0;W[256*2]=1,e.opt_len=e.static_len=0,H=ee=0}function he(){N.dyn_tree=W,N.stat_desc=pc.static_l_desc,k.dyn_tree=M,k.stat_desc=pc.static_d_desc,v.dyn_tree=Q,v.stat_desc=pc.static_bl_desc,te=0,q=0,K=8,ye()}e.pqdownheap=function(ve,ut){let qe=e.heap,nt=qe[ut],yt=ut<<1;for(;yt<=e.heap_len&&(yt<e.heap_len&&Cbe(ve,qe[yt+1],qe[yt],e.depth)&&yt++,!Cbe(ve,nt,qe[yt],e.depth));)qe[ut]=qe[yt],ut=yt,yt<<=1;qe[ut]=nt};function xe(ve,ut){let qe=-1,nt,yt=ve[1],$t=0,Sn=7,fo=4;yt===0&&(Sn=138,fo=3),ve[(ut+1)*2+1]=65535;for(let uo=0;uo<=ut;uo++)nt=yt,yt=ve[(uo+1)*2+1],!(++$t<Sn&&nt==yt)&&($t<fo?Q[nt*2]+=$t:nt!==0?(nt!=qe&&Q[nt*2]++,Q[32]++):$t<=10?Q[34]++:Q[36]++,$t=0,qe=nt,yt===0?(Sn=138,fo=3):nt==yt?(Sn=6,fo=3):(Sn=7,fo=4))}function Te(){let ve;for(xe(W,N.max_code),xe(M,k.max_code),v.build_tree(e),ve=18;ve>=3&&Q[Vr.bl_order[ve]*2+1]===0;ve--);return e.opt_len+=3*(ve+1)+5+5+4,ve}function Be(ve){e.pending_buf[e.pending++]=ve}function Le(ve){Be(ve&255),Be(ve>>>8&255)}function De(ve){Be(ve>>8&255),Be(ve&255&255)}function Ue(ve,ut){let qe,nt=ut;q>16-nt?(qe=ve,te|=qe<<q&65535,Le(te),te=qe>>>16-q,q+=nt-16):(te|=ve<<q&65535,q+=nt)}function je(ve,ut){let qe=ve*2;Ue(ut[qe]&65535,ut[qe+1]&65535)}function it(ve,ut){let qe,nt=-1,yt,$t=ve[1],Sn=0,fo=7,uo=4;for($t===0&&(fo=138,uo=3),qe=0;qe<=ut;qe++)if(yt=$t,$t=ve[(qe+1)*2+1],!(++Sn<fo&&yt==$t)){if(Sn<uo)do je(yt,Q);while(--Sn!==0);else yt!==0?(yt!=nt&&(je(yt,Q),Sn--),je(16,Q),Ue(Sn-3,2)):Sn<=10?(je(17,Q),Ue(Sn-3,3)):(je(18,Q),Ue(Sn-11,7));Sn=0,nt=yt,$t===0?(fo=138,uo=3):yt==$t?(fo=6,uo=3):(fo=7,uo=4)}}function nn(ve,ut,qe){let nt;for(Ue(ve-257,5),Ue(ut-1,5),Ue(qe-4,4),nt=0;nt<qe;nt++)Ue(Q[Vr.bl_order[nt]*2+1],3);it(W,ve-1),it(M,ut-1)}function rt(){q==16?(Le(te),te=0,q=0):q>=8&&(Be(te&255),te>>>=8,q-=8)}function rn(){Ue(_j<<1,3),je(256,pc.static_ltree),rt(),1+K+10-q<9&&(Ue(_j<<1,3),je(256,pc.static_ltree),rt()),K=7}function Jt(ve,ut){let qe,nt,yt;if(e.dist_buf[H]=ve,e.lc_buf[H]=ut&255,H++,ve===0?W[ut*2]++:(ee++,ve--,W[(Vr._length_code[ut]+256+1)*2]++,M[Vr.d_code(ve)*2]++),(H&8191)===0&&A>2){for(qe=H*8,nt=R-I,yt=0;yt<30;yt++)qe+=M[yt*2]*(5+Vr.extra_dbits[yt]);if(qe>>>=3,ee<Math.floor(H/2)&&qe<Math.floor(nt/2))return!0}return H==O-1}function Xt(ve,ut){let qe,nt,yt=0,$t,Sn;if(H!==0)do qe=e.dist_buf[yt],nt=e.lc_buf[yt],yt++,qe===0?je(nt,ve):($t=Vr._length_code[nt],je($t+256+1,ve),Sn=Vr.extra_lbits[$t],Sn!==0&&(nt-=Vr.base_length[$t],Ue(nt,Sn)),qe--,$t=Vr.d_code(qe),je($t,ut),Sn=Vr.extra_dbits[$t],Sn!==0&&(qe-=Vr.base_dist[$t],Ue(qe,Sn)));while(yt<H);je(256,ve),K=ve[256*2+1]}function Li(){q>8?Le(te):q>0&&Be(te&255),te=0,q=0}function bi(ve,ut,qe){Li(),K=8,qe&&(Le(ut),Le(~ut)),e.pending_buf.set(c.subarray(ve,ve+ut),e.pending),e.pending+=ut}function vt(ve,ut,qe){Ue((Dst<<1)+(qe?1:0),3),bi(ve,ut,!0)}function Rt(ve,ut,qe){let nt,yt,$t=0;A>0?(N.build_tree(e),k.build_tree(e),$t=Te(),nt=e.opt_len+3+7>>>3,yt=e.static_len+3+7>>>3,yt<=nt&&(nt=yt)):nt=yt=ut+5,ut+4<=nt&&ve!=-1?vt(ve,ut,qe):yt==nt?(Ue((_j<<1)+(qe?1:0),3),Xt(pc.static_ltree,pc.static_dtree)):(Ue((Qst<<1)+(qe?1:0),3),nn(N.max_code+1,k.max_code+1,$t+1),Xt(W,M)),ye(),qe&&Li()}function si(ve){Rt(I>=0?I:-1,R-I,ve),I=R,t.flush_pending()}function _t(){let ve,ut,qe,nt;do{if(nt=d-B-R,nt===0&&R===0&&B===0)nt=r;else if(nt==-1)nt--;else if(R>=r+r-fu){c.set(c.subarray(r,r+r),0),G-=r,R-=r,I-=r,ve=g,qe=ve;do ut=h[--qe]&65535,h[qe]=ut>=r?ut-r:0;while(--ve!==0);ve=r,qe=ve;do ut=u[--qe]&65535,u[qe]=ut>=r?ut-r:0;while(--ve!==0);nt+=r}if(t.avail_in===0)return;ve=t.read_buf(c,R+B,nt),B+=ve,B>=kr&&(p=c[R]&255,p=(p<<x^c[R+1]&255)&b)}while(B<fu&&t.avail_in!==0)}function Fo(ve){let ut=65535,qe;for(ut>i-5&&(ut=i-5);;){if(B<=1){if(_t(),B===0&&ve==0)return Zm;if(B===0)break}if(R+=B,B=0,qe=I+ut,(R===0||R>=qe)&&(B=R-qe,R=qe,si(!1),t.avail_out===0)||R-I>=r-fu&&(si(!1),t.avail_out===0))return Zm}return si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function Uo(ve){let ut=F,qe=R,nt,yt,$t=w,Sn=R>r-fu?R-(r-fu):0,fo=V,uo=a,ra=R+uU,sa=c[qe+$t-1],Hn=c[qe+$t];w>=L&&(ut>>=2),fo>B&&(fo=B);do if(nt=ve,!(c[nt+$t]!=Hn||c[nt+$t-1]!=sa||c[nt]!=c[qe]||c[++nt]!=c[qe+1])){qe+=2,nt++;do;while(c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&qe<ra);if(yt=uU-(ra-qe),qe=ra-uU,yt>$t){if(G=ve,$t=yt,yt>=fo)break;sa=c[qe+$t-1],Hn=c[qe+$t]}}while((ve=u[ve&uo]&65535)>Sn&&--ut!==0);return $t<=B?$t:B}function Va(ve){let ut=0,qe;for(;;){if(B<fu){if(_t(),B<fu&&ve==0)return Zm;if(B===0)break}if(B>=kr&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R),ut!==0&&(R-ut&65535)<=r-fu&&T!=2&&(_=Uo(ut)),_>=kr)if(qe=Jt(R-G,_-kr),B-=_,_<=P&&B>=kr){_--;do R++,p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R;while(--_!==0);R++}else R+=_,_=0,p=c[R]&255,p=(p<<x^c[R+1]&255)&b;else qe=Jt(0,c[R]&255),B--,R++;if(qe&&(si(!1),t.avail_out===0))return Zm}return si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function Cr(ve){let ut=0,qe,nt;for(;;){if(B<fu){if(_t(),B<fu&&ve==0)return Zm;if(B===0)break}if(B>=kr&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R),w=_,E=G,_=kr-1,ut!==0&&w<P&&(R-ut&65535)<=r-fu&&(T!=2&&(_=Uo(ut)),_<=5&&(T==1||_==kr&&R-G>4096)&&(_=kr-1)),w>=kr&&_<=w){nt=R+B-kr,qe=Jt(R-1-E,w-kr),B-=w-1,w-=2;do++R<=nt&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R);while(--w!==0);if(S=0,_=kr-1,R++,qe&&(si(!1),t.avail_out===0))return Zm}else if(S!==0){if(qe=Jt(0,c[R-1]&255),qe&&si(!1),R++,B--,t.avail_out===0)return Zm}else S=1,R++,B--}return S!==0&&(qe=Jt(0,c[R-1]&255),S=0),si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function wr(ve){return ve.total_in=ve.total_out=0,ve.msg=null,e.pending=0,e.pending_out=0,n=lU,o=0,he(),pe(),0}e.deflateInit=function(ve,ut,qe,nt,yt,$t){return nt||(nt=Ij),yt||(yt=vst),$t||($t=0),ve.msg=null,ut==-1&&(ut=6),yt<1||yt>Mst||nt!=Ij||qe<9||qe>15||ut<0||ut>9||$t<0||$t>2?-2:(ve.dstate=e,s=qe,r=1<<s,a=r-1,f=yt+7,g=1<<f,b=g-1,x=Math.floor((f+kr-1)/kr),c=new Uint8Array(r*2),u=[],h=[],O=1<<yt+6,e.pending_buf=new Uint8Array(O*4),i=O*4,e.dist_buf=new Uint16Array(O),e.lc_buf=new Uint8Array(O),A=ut,T=$t,wr(ve))},e.deflateEnd=function(){return n!=xj&&n!=lU&&n!=TF?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,u=null,c=null,e.dstate=null,n==lU?-3:0)},e.deflateParams=function(ve,ut,qe){let nt=0;return ut==-1&&(ut=6),ut<0||ut>9||qe<0||qe>2?-2:(of[A].func!=of[ut].func&&ve.total_in!==0&&(nt=ve.deflate(1)),A!=ut&&(A=ut,P=of[A].max_lazy,L=of[A].good_length,V=of[A].nice_length,F=of[A].max_chain),T=qe,nt)},e.deflateSetDictionary=function(ve,ut,qe){let nt=qe,yt,$t=0;if(!ut||n!=xj)return-2;if(nt<kr)return 0;for(nt>r-fu&&(nt=r-fu,$t=qe-nt),c.set(ut.subarray($t,$t+nt),0),R=nt,I=nt,p=c[0]&255,p=(p<<x^c[1]&255)&b,yt=0;yt<=nt-kr;yt++)p=(p<<x^c[yt+(kr-1)]&255)&b,u[yt&a]=h[p],h[p]=yt;return 0},e.deflate=function(ve,ut){let qe,nt,yt,$t,Sn;if(ut>4||ut<0)return-2;if(!ve.next_out||!ve.next_in&&ve.avail_in!==0||n==TF&&ut!=4)return ve.msg=sU[4],-2;if(ve.avail_out===0)return ve.msg=sU[7],-5;if(t=ve,$t=o,o=ut,n==xj&&(nt=Ij+(s-8<<4)<<8,yt=(A-1&255)>>1,yt>3&&(yt=3),nt|=yt<<6,R!==0&&(nt|=Nst),nt+=31-nt%31,n=lU,De(nt)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&&ut<=$t&&ut!=4)return t.msg=sU[7],-5;if(n==TF&&t.avail_in!==0)return ve.msg=sU[7],-5;if(t.avail_in!==0||B!==0||ut!=0&&n!=TF){switch(Sn=-1,of[A].func){case xbe:Sn=Fo(ut);break;case dU:Sn=Va(ut);break;case aI:Sn=Cr(ut);break;default:}if((Sn==EF||Sn==cU)&&(n=TF),Sn==Zm||Sn==EF)return t.avail_out===0&&(o=-1),0;if(Sn==aU){if(ut==1)rn();else if(vt(0,0,!1),ut==3)for(qe=0;qe<g;qe++)h[qe]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return ut!=4?0:1}}function Ibe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}Ibe.prototype={deflateInit(e,t){let n=this;return n.dstate=new Ust,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function _be(e){let t=this,n=new Ibe,i=kst(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let d,u,h=0,p=0,g=0,f=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,d=n.deflate(o),d!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?f.push(new Uint8Array(r)):f.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return f.length>1?(u=new Uint8Array(g),f.forEach(function(b){u.set(b,p),p+=b.length})):u=f[0]?new Uint8Array(f[0]):new Uint8Array,u}},t.flush=function(){let a,c,d=0,u=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),u+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(u),h.forEach(function(p){c.set(p,d),d+=p.length}),c}}function kst(e){return e+5*(Math.floor(e/16383)+1)}var YTi=y(C(),1);var pu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Ube=1440,Yst=0,Ost=4,Hst=9,zst=5,Kst=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Jst=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],jst=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],qst=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],$st=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],eat=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],O0=15;function Lj(){let e=this,t,n,i,o,r,s;function a(d,u,h,p,g,f,b,x,I,_,E){let S,R,G,B,w,F,P,A,T,L,V,W,M,Q,N;L=0,w=h;do i[d[u+L]]++,L++,w--;while(w!==0);if(i[0]==h)return b[0]=-1,x[0]=0,0;for(A=x[0],F=1;F<=O0&&i[F]===0;F++);for(P=F,A<F&&(A=F),w=O0;w!==0&&i[w]===0;w--);for(G=w,A>w&&(A=w),x[0]=A,Q=1<<F;F<w;F++,Q<<=1)if((Q-=i[F])<0)return-3;if((Q-=i[w])<0)return-3;for(i[w]+=Q,s[1]=F=0,L=1,M=2;--w!==0;)s[M]=F+=i[L],M++,L++;w=0,L=0;do(F=d[u+L])!==0&&(E[s[F]++]=w),L++;while(++w<h);for(h=s[G],s[0]=w=0,L=0,B=-1,W=-A,r[0]=0,V=0,N=0;P<=G;P++)for(S=i[P];S--!==0;){for(;P>W+A;){if(B++,W+=A,N=G-W,N=N>A?A:N,(R=1<<(F=P-W))>S+1&&(R-=S+1,M=P,F<N))for(;++F<N&&!((R<<=1)<=i[++M]);)R-=i[M];if(N=1<<F,_[0]+N>Ube)return-3;r[B]=V=_[0],_[0]+=N,B!==0?(s[B]=w,o[0]=F,o[1]=A,F=w>>>W-A,o[2]=V-r[B-1]-F,I.set(o,(r[B-1]+F)*3)):b[0]=V}for(o[1]=P-W,L>=h?o[0]=192:E[L]<p?(o[0]=E[L]<256?0:96,o[2]=E[L++]):(o[0]=f[E[L]-p]+16+64,o[2]=g[E[L++]-p]),R=1<<P-W,F=w>>>W;F<N;F+=R)I.set(o,(V+F)*3);for(F=1<<P-1;(w&F)!==0;F>>>=1)w^=F;for(w^=F,T=(1<<W)-1;(w&T)!=s[B];)B--,W-=A,T=(1<<W)-1}return Q!==0&&G!=1?-5:0}function c(d){let u;for(t||(t=[],n=[],i=new Int32Array(O0+1),o=[],r=new Int32Array(O0),s=new Int32Array(O0+1)),n.length<d&&(n=[]),u=0;u<d;u++)n[u]=0;for(u=0;u<O0+1;u++)i[u]=0;for(u=0;u<3;u++)o[u]=0;r.set(i.subarray(0,O0),0),s.set(i.subarray(0,O0+1),0)}e.inflate_trees_bits=function(d,u,h,p,g){let f;return c(19),t[0]=0,f=a(d,0,19,19,null,null,h,u,p,t,n),f==-3?g.msg="oversubscribed dynamic bit lengths tree":(f==-5||u[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",f=-3),f},e.inflate_trees_dynamic=function(d,u,h,p,g,f,b,x,I){let _;return c(288),t[0]=0,_=a(h,0,d,257,jst,qst,f,p,x,t,n),_!=0||p[0]===0?(_==-3?I.msg="oversubscribed literal/length tree":_!=-4&&(I.msg="incomplete literal/length tree",_=-3),_):(c(288),_=a(h,d,u,0,$st,eat,b,g,x,t,n),_!=0||g[0]===0&&d>257?(_==-3?I.msg="oversubscribed distance tree":_==-5?(I.msg="incomplete distance tree",_=-3):_!=-4&&(I.msg="empty distance tree with lengths",_=-3),_):0)}}Lj.inflate_trees_fixed=function(e,t,n,i){return e[0]=Hst,t[0]=zst,n[0]=Kst,i[0]=Jst,0};var fU=0,Ebe=1,Tbe=2,Sbe=3,Lbe=4,Rbe=5,Vbe=6,Ej=7,Gbe=8,pU=9;function tat(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,d=0,u=0,h,p=0,g,f=0;function b(x,I,_,E,S,R,G,B){let w,F,P,A,T,L,V,W,M,Q,N,k,v,O,H,ee;V=B.next_in_index,W=B.avail_in,T=G.bitb,L=G.bitk,M=G.write,Q=M<G.read?G.read-M-1:G.end-M,N=pu[x],k=pu[I];do{for(;L<20;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;if(w=T&N,F=_,P=E,ee=(P+w)*3,(A=F[ee])===0){T>>=F[ee+1],L-=F[ee+1],G.win[M++]=F[ee+2],Q--;continue}do{if(T>>=F[ee+1],L-=F[ee+1],(A&16)!==0){for(A&=15,v=F[ee+2]+(T&pu[A]),T>>=A,L-=A;L<15;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;w=T&k,F=S,P=R,ee=(P+w)*3,A=F[ee];do if(T>>=F[ee+1],L-=F[ee+1],(A&16)!==0){for(A&=15;L<A;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;if(O=F[ee+2]+(T&pu[A]),T>>=A,L-=A,Q-=v,M>=O)H=M-O,M-H>0&&2>M-H?(G.win[M++]=G.win[H++],G.win[M++]=G.win[H++],v-=2):(G.win.set(G.win.subarray(H,H+2),M),M+=2,H+=2,v-=2);else{H=M-O;do H+=G.end;while(H<0);if(A=G.end-H,v>A){if(v-=A,M-H>0&&A>M-H)do G.win[M++]=G.win[H++];while(--A!==0);else G.win.set(G.win.subarray(H,H+A),M),M+=A,H+=A,A=0;H=0}}if(M-H>0&&v>M-H)do G.win[M++]=G.win[H++];while(--v!==0);else G.win.set(G.win.subarray(H,H+v),M),M+=v,H+=v,v=0;break}else if((A&64)===0)w+=F[ee+2],w+=T&pu[A],ee=(P+w)*3,A=F[ee];else return B.msg="invalid distance code",v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,-3;while(!0);break}if((A&64)===0){if(w+=F[ee+2],w+=T&pu[A],ee=(P+w)*3,(A=F[ee])===0){T>>=F[ee+1],L-=F[ee+1],G.win[M++]=F[ee+2],Q--;break}}else return(A&32)!==0?(v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,1):(B.msg="invalid literal/length code",v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,-3)}while(!0)}while(Q>=258&&W>=10);return v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,0}e.init=function(x,I,_,E,S,R){t=fU,d=x,u=I,h=_,p=E,g=S,f=R,i=null},e.proc=function(x,I,_){let E,S,R,G=0,B=0,w=0,F,P,A,T;for(w=I.next_in_index,F=I.avail_in,G=x.bitb,B=x.bitk,P=x.write,A=P<x.read?x.read-P-1:x.end-P;;)switch(t){case fU:if(A>=258&&F>=10&&(x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,_=b(d,u,h,p,g,f,x,I),w=I.next_in_index,F=I.avail_in,G=x.bitb,B=x.bitk,P=x.write,A=P<x.read?x.read-P-1:x.end-P,_!=0)){t=_==1?Ej:pU;break}r=d,i=h,o=p,t=Ebe;case Ebe:for(E=r;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}if(S=(o+(G&pu[E]))*3,G>>>=i[S+1],B-=i[S+1],R=i[S],R===0){s=i[S+2],t=Vbe;break}if((R&16)!==0){a=R&15,n=i[S+2],t=Tbe;break}if((R&64)===0){r=R,o=S/3+i[S+2];break}if((R&32)!==0){t=Ej;break}return t=pU,I.msg="invalid literal/length code",_=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case Tbe:for(E=a;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}n+=G&pu[E],G>>=E,B-=E,r=u,i=g,o=f,t=Sbe;case Sbe:for(E=r;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}if(S=(o+(G&pu[E]))*3,G>>=i[S+1],B-=i[S+1],R=i[S],(R&16)!==0){a=R&15,c=i[S+2],t=Lbe;break}if((R&64)===0){r=R,o=S/3+i[S+2];break}return t=pU,I.msg="invalid distance code",_=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case Lbe:for(E=a;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}c+=G&pu[E],G>>=E,B-=E,t=Rbe;case Rbe:for(T=P-c;T<0;)T+=x.end;for(;n!==0;){if(A===0&&(P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0&&(x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0)))return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);x.win[P++]=x.win[T++],A--,T==x.end&&(T=0),n--}t=fU;break;case Vbe:if(A===0&&(P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0&&(x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0)))return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);_=0,x.win[P++]=s,A--,t=fU;break;case Ej:if(B>7&&(B-=8,F++,w--),x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,x.read!=x.write)return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);t=Gbe;case Gbe:return _=1,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case pU:return _=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);default:return _=-2,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_)}},e.free=function(){}}var Zbe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],BS=0,Tj=1,Bbe=2,wbe=3,Xbe=4,Wbe=5,AU=6,gU=7,Fbe=8,cI=9;function nat(e,t){let n=this,i=BS,o=0,r=0,s=0,a,c=[0],d=[0],u=new tat,h=0,p=new Int32Array(Ube*3),g=0,f=new Lj;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(b,x){x&&(x[0]=g),i==AU&&u.free(b),i=BS,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(b,x){let I,_,E;return _=b.next_out_index,E=n.read,I=(E<=n.write?n.write:n.end)-E,I>b.avail_out&&(I=b.avail_out),I!==0&&x==-5&&(x=0),b.avail_out-=I,b.total_out+=I,b.next_out.set(n.win.subarray(E,E+I),_),_+=I,E+=I,E==n.end&&(E=0,n.write==n.end&&(n.write=0),I=n.write-E,I>b.avail_out&&(I=b.avail_out),I!==0&&x==-5&&(x=0),b.avail_out-=I,b.total_out+=I,b.next_out.set(n.win.subarray(E,E+I),_),_+=I,E+=I),b.next_out_index=_,n.read=E,x},n.proc=function(b,x){let I,_,E,S,R,G,B,w;for(S=b.next_in_index,R=b.avail_in,_=n.bitb,E=n.bitk,G=n.write,B=G<n.read?n.read-G-1:n.end-G;;){let F,P,A,T,L,V,W,M;switch(i){case BS:for(;E<3;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}switch(I=_&7,h=I&1,I>>>1){case 0:_>>>=3,E-=3,I=E&7,_>>>=I,E-=I,i=Tj;break;case 1:F=[],P=[],A=[[]],T=[[]],Lj.inflate_trees_fixed(F,P,A,T),u.init(F[0],P[0],A[0],0,T[0],0),_>>>=3,E-=3,i=AU;break;case 2:_>>>=3,E-=3,i=wbe;break;case 3:return _>>>=3,E-=3,i=cI,b.msg="invalid block type",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x)}break;case Tj:for(;E<32;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if((~_>>>16&65535)!=(_&65535))return i=cI,b.msg="invalid stored block lengths",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);o=_&65535,_=E=0,i=o!==0?Bbe:h!==0?gU:BS;break;case Bbe:if(R===0||B===0&&(G==n.end&&n.read!==0&&(G=0,B=G<n.read?n.read-G-1:n.end-G),B===0&&(n.write=G,x=n.inflate_flush(b,x),G=n.write,B=G<n.read?n.read-G-1:n.end-G,G==n.end&&n.read!==0&&(G=0,B=G<n.read?n.read-G-1:n.end-G),B===0)))return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);if(x=0,I=o,I>R&&(I=R),I>B&&(I=B),n.win.set(b.read_buf(S,I),G),S+=I,R-=I,G+=I,B-=I,(o-=I)!==0)break;i=h!==0?gU:BS;break;case wbe:for(;E<14;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(r=I=_&16383,(I&31)>29||(I>>5&31)>29)return i=cI,b.msg="too many length or distance symbols",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);if(I=258+(I&31)+(I>>5&31),!a||a.length<I)a=[];else for(w=0;w<I;w++)a[w]=0;_>>>=14,E-=14,s=0,i=Xbe;case Xbe:for(;s<4+(r>>>10);){for(;E<3;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}a[Zbe[s++]]=_&7,_>>>=3,E-=3}for(;s<19;)a[Zbe[s++]]=0;if(c[0]=7,I=f.inflate_trees_bits(a,c,d,p,b),I!=0)return x=I,x==-3&&(a=null,i=cI),n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);s=0,i=Wbe;case Wbe:for(;I=r,!(s>=258+(I&31)+(I>>5&31));){let Q,N;for(I=c[0];E<I;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(I=p[(d[0]+(_&pu[I]))*3+1],N=p[(d[0]+(_&pu[I]))*3+2],N<16)_>>>=I,E-=I,a[s++]=N;else{for(w=N==18?7:N-14,Q=N==18?11:3;E<I+w;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(_>>>=I,E-=I,Q+=_&pu[w],_>>>=w,E-=w,w=s,I=r,w+Q>258+(I&31)+(I>>5&31)||N==16&&w<1)return a=null,i=cI,b.msg="invalid bit length repeat",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);N=N==16?a[w-1]:0;do a[w++]=N;while(--Q!==0);s=w}}if(d[0]=-1,L=[],V=[],W=[],M=[],L[0]=9,V[0]=6,I=r,I=f.inflate_trees_dynamic(257+(I&31),1+(I>>5&31),a,L,V,W,M,p,b),I!=0)return I==-3&&(a=null,i=cI),x=I,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);u.init(L[0],V[0],p,W[0],p,M[0]),i=AU;case AU:if(n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,(x=u.proc(n,b,x))!=1)return n.inflate_flush(b,x);if(x=0,u.free(b),S=b.next_in_index,R=b.avail_in,_=n.bitb,E=n.bitk,G=n.write,B=G<n.read?n.read-G-1:n.end-G,h===0){i=BS;break}i=gU;case gU:if(n.write=G,x=n.inflate_flush(b,x),G=n.write,B=G<n.read?n.read-G-1:n.end-G,n.read!=n.write)return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);i=Fbe;case Fbe:return x=1,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);case cI:return x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);default:return x=-2,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x)}}},n.free=function(b){n.reset(b,null),n.win=null,p=null},n.set_dictionary=function(b,x,I){n.win.set(b.subarray(x,x+I),0),n.read=n.write=I},n.sync_point=function(){return i==Tj?1:0}}var iat=32,oat=8,rat=0,Pbe=1,Mbe=2,vbe=3,Nbe=4,Dbe=5,Sj=6,SF=7,Qbe=12,H0=13,sat=[0,0,255,255];function aat(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=SF,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new nat(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Ost?-5:0,o=-5;;)switch(s.mode){case rat:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=oat){s.mode=H0,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=H0,n.msg="invalid win size",s.marker=5;break}s.mode=Pbe;case Pbe:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=H0,n.msg="incorrect header check",s.marker=5;break}if((r&iat)===0){s.mode=SF;break}s.mode=Mbe;case Mbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=vbe;case vbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=Nbe;case Nbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Dbe;case Dbe:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=Sj,2);case Sj:return s.mode=H0,n.msg="need dictionary",s.marker=0,-2;case SF:if(o=s.blocks.proc(n,o),o==-3){s.mode=H0,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Qbe;case Qbe:return n.avail_in=0,1;case H0:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=Sj)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=SF,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=H0&&(c.mode=H0,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==sat[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=SF,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function kbe(){}kbe.prototype={inflateInit(e){let t=this;return t.istate=new aat,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function Ybe(e){let t=this,n=new kbe,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Yst,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let d=[],u,h,p=0,g=0,f=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),u=n.inflate(o),s&&u===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(u!==0&&u!==1)throw new Error("inflating: "+n.msg);if((s||u===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?d.push(new Uint8Array(r)):d.push(r.subarray(0,n.next_out_index))),f+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=p&&(c(n.next_in_index),p=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return d.length>1?(h=new Uint8Array(f),d.forEach(function(b){h.set(b,g),g+=b.length})):h=d[0]?new Uint8Array(d[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var eSi=y(C(),1);var HTi=y(C(),1);var Rj=new Date(2107,11,31),Vj=new Date(1980,0,1),ri=void 0,Au="undefined",Wg="function";var KTi=y(C(),1);var LF=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var cat=64,Obe=2;try{typeof navigator!=Au&&navigator.hardwareConcurrency&&(Obe=navigator.hardwareConcurrency)}catch{}var lat={chunkSize:512*1024,maxWorkers:Obe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ri,CompressionStreamNative:typeof CompressionStream!=Au&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=Au&&DecompressionStream},K0=Object.assign({},lat);function RF(){return K0}function bU(e){return Math.max(e.chunkSize,cat)}function wS(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:d,DecompressionStream:u,workerScripts:h}=e;if(z0("baseURL",t),z0("chunkSize",n),z0("maxWorkers",i),z0("terminateWorkerTimeout",o),z0("useCompressionStream",r),z0("useWebWorkers",s),a&&(K0.CompressionStream=new LF(a)),c&&(K0.DecompressionStream=new LF(c)),z0("CompressionStream",d),z0("DecompressionStream",u),h!==ri){let{deflate:p,inflate:g}=h;if((p||g)&&(K0.workerScripts||(K0.workerScripts={})),p){if(!Array.isArray(p))throw new Error("workerScripts.deflate must be an array");K0.workerScripts.deflate=p}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");K0.workerScripts.inflate=g}}}function z0(e,t){t!==ri&&(K0[e]=t)}var nSi=y(C(),1);var zSi=y(C(),1);var vSi=y(C(),1);var FSi=y(C(),1);var aSi=y(C(),1);var oSi=y(C(),1),Hbe=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;Hbe[e]=t}var Fg=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^Hbe[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var VF=class extends TransformStream{constructor(){let t,n=new Fg;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};var SSi=y(C(),1);var dSi=y(C(),1);function XS(e){if(typeof TextEncoder==Au){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var mSi=y(C(),1),Pl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=Pl.getPartial(n);return i===32?e.concat(t):Pl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+Pl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=Pl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=Pl.getPartial(o);return i.push(Pl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},GF={bytes:{fromBits(e){let n=Pl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(Pl.partial(8*(n&3),i)),t}}},zbe={};zbe.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=GF.utf8String.toBits(e));let n=t._buffer=Pl.concat(t._buffer,e),i=t._length,o=t._length=i+Pl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=Pl.concat(t,[Pl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let d=0;d<16;d++)i[d]=e[d];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let d=0;d<=79;d++){d>=16&&(i[d]=t._S(1,i[d-3]^i[d-8]^i[d-14]^i[d-16]));let u=t._S(5,o)+t._f(d,r,s,a)+c+i[d]+t._key[Math.floor(d/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=u}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var Gj={};Gj.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let d=s[r-1];(r%o===0||o===8&&r%o===4)&&(d=n[d>>>24]<<24^n[d>>16&255]<<16^n[d>>8&255]<<8^n[d&255],r%o===0&&(d=d<<8^d>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^d}for(let d=0;r;d++,r--){let u=s[d&3?r:r-4];r<=4||d<4?a[d]=u:a[d]=i[0][n[u>>>24]]^i[1][n[u>>16&255]]^i[2][n[u>>8&255]]^i[3][n[u&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,d;for(let u=0;u<256;u++)r[(o[u]=u<<1^(u>>7)*283)^u]=u;for(let u=s=0;!n[u];u^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[u]=h,i[h]=u,d=o[c=o[a=o[u]]];let p=d*16843009^c*65537^a*257^u*16843008,g=o[h]*257^h*16843008;for(let f=0;f<4;f++)e[f][u]=g=g<<24^g>>>8,t[f][h]=p=p<<24^p>>>8}for(let u=0;u<5;u++)e[u]=e[u].slice(0),t[u]=t[u].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],d=r[3],u=r[4],h=e[0]^n[0],p=e[t?3:1]^n[1],g=e[2]^n[2],f=e[t?1:3]^n[3],b=4,x,I,_;for(let E=0;E<i;E++)x=s[h>>>24]^a[p>>16&255]^c[g>>8&255]^d[f&255]^n[b],I=s[p>>>24]^a[g>>16&255]^c[f>>8&255]^d[h&255]^n[b+1],_=s[g>>>24]^a[f>>16&255]^c[h>>8&255]^d[p&255]^n[b+2],f=s[f>>>24]^a[h>>16&255]^c[p>>8&255]^d[g&255]^n[b+3],b+=4,h=x,p=I,g=_;for(let E=0;E<4;E++)o[t?3&-E:E]=u[h>>>24]<<24^u[p>>16&255]<<16^u[g>>8&255]<<8^u[f&255]^n[b++],x=h,h=p,p=g,g=f,f=x;return o}};var Kbe={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},Zj={};Zj.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=Pl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Pl.clamp(t,o)}};var J0={importKey(e){return new J0.hmacSha1(GF.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,d,u=new ArrayBuffer(o),h=new DataView(u),p=0,g=Pl;for(t=GF.bytes.toBits(t),d=1;p<(o||1);d++){for(r=s=e.encrypt(g.concat(t,[d])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;p<(o||1)&&a<r.length;a++)h.setInt32(p,r[a]),p+=4}return u.slice(0,i/8)}};J0.hmacSha1=class{constructor(e){let t=this,n=t._hash=zbe.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var CSi=y(C(),1);var dat=typeof crypto!=Au&&typeof crypto.getRandomValues==Wg,j0="Invalid password",lI="Invalid signature",Pg="zipjs-abort-check-password";function yU(e){return dat?crypto.getRandomValues(e):Kbe.getRandomValues(e)}var WS=16,uat="raw",qbe={name:"PBKDF2"},mat={name:"HMAC"},hat="SHA-1",fat=Object.assign({hash:mat},qbe),Bj=Object.assign({iterations:1e3,hash:{name:hat}},qbe),pat=["deriveBits"],BF=[8,12,16],ZF=[16,24,32],q0=10,Aat=[0,0,0,0],IU=typeof crypto!=Au,WF=IU&&crypto.subtle,$be=IU&&typeof WF!=Au,yp=GF.bytes,gat=Gj.aes,bat=Zj.ctrGladman,yat=J0.hmacSha1,Jbe=IU&&$be&&typeof WF.importKey==Wg,jbe=IU&&$be&&typeof WF.deriveBits==Wg,CU=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:n0e(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:d,strength:u,resolveReady:h,ready:p}=c;d?(await Cat(c,u,d,Bm(s,0,BF[u]+2)),s=Bm(s,BF[u]+2),r?a.error(new Error(Pg)):h()):await p;let g=new Uint8Array(s.length-q0-(s.length-q0)%WS);a.enqueue(e0e(c,s,g,0,q0,!0))},async flush(s){let{signed:a,ctr:c,hmac:d,pending:u,ready:h}=this;if(d&&c){await h;let p=Bm(u,0,u.length-q0),g=Bm(u,u.length-q0),f=new Uint8Array;if(p.length){let b=XF(yp,p);d.update(b);let x=c.update(b);f=wF(yp,x)}if(a){let b=Bm(wF(yp,d.digest()),0,q0);for(let x=0;x<q0;x++)if(b[x]!=g[x])throw new Error(lI)}s.enqueue(f)}}})}},xU=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:n0e(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:d,resolveReady:u,ready:h}=a,p=new Uint8Array;c?(p=await xat(a,d,c),u()):await h;let g=new Uint8Array(p.length+r.length-r.length%WS);g.set(p,0),s.enqueue(e0e(a,r,g,p.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:d}=this;if(a&&s){await d;let u=new Uint8Array;if(c.length){let h=s.update(XF(yp,c));a.update(h),u=wF(yp,h)}o.signature=wF(yp,a.digest()).slice(0,q0),r.enqueue(wj(u,o.signature))}}}),o=this}};function e0e(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,d=t.length-o;c.length&&(t=wj(c,t),n=Eat(n,d-d%WS));let u;for(u=0;u<=d-WS;u+=WS){let h=XF(yp,Bm(t,u,u+WS));r&&a.update(h);let p=s.update(h);r||a.update(p),n.set(wF(yp,p),u+i)}return e.pending=Bm(t,u),n}async function Cat(e,t,n,i){let o=await t0e(e,t,n,Bm(i,0,BF[t])),r=Bm(i,BF[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(j0)}async function xat(e,t,n){let i=yU(new Uint8Array(BF[t])),o=await t0e(e,t,n,i);return wj(i,o)}async function t0e(e,t,n,i){e.password=null;let o=await Iat(uat,n,fat,!1,pat),r=await _at(Object.assign({salt:i},Bj),o,8*(ZF[t]*2+2)),s=new Uint8Array(r),a=XF(yp,Bm(s,0,ZF[t])),c=XF(yp,Bm(s,ZF[t],ZF[t]*2)),d=Bm(s,ZF[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:d},ctr:new bat(new gat(a),Array.from(Aat)),hmac:new yat(c)}),d}async function Iat(e,t,n,i,o){if(Jbe)try{return await WF.importKey(e,t,n,i,o)}catch{return Jbe=!1,J0.importKey(t)}else return J0.importKey(t)}async function _at(e,t,n){if(jbe)try{return await WF.deriveBits(e,t,n)}catch{return jbe=!1,J0.pbkdf2(t,e.salt,Bj.iterations,n)}else return J0.pbkdf2(t,e.salt,Bj.iterations,n)}function n0e(e,t){return t===ri?XS(e):t}function wj(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Eat(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function Bm(e,t,n){return e.subarray(t,n)}function wF(e,t){return e.fromBits(t)}function XF(e,t){return e.toBits(t)}var GSi=y(C(),1);var FS=12,_U=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),s0e(this,t)},transform(o,r){let s=this;if(s.password){let a=i0e(s,o.subarray(0,FS));if(s.password=null,a[FS-1]!=s.passwordVerification)throw new Error(j0);o=o.subarray(FS)}i?r.error(new Error(Pg)):r.enqueue(i0e(s,o))}})}},EU=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),s0e(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=yU(new Uint8Array(FS));c[FS-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(o0e(r,c),0),a=FS}else s=new Uint8Array(i.length),a=0;s.set(o0e(r,i),a),o.enqueue(s)}})}};function i0e(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=a0e(e)^t[i],Xj(e,n[i]);return n}function o0e(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=a0e(e)^t[i],Xj(e,t[i]);return n}function s0e(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Fg(n[0]),crcKey2:new Fg(n[2])});for(let i=0;i<t.length;i++)Xj(e,t.charCodeAt(i))}function Xj(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=r0e(Math.imul(r0e(i+c0e(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function a0e(e){let t=e.keys[2]|2;return c0e(Math.imul(t,t^1)>>>8)}function c0e(e){return e&255}function r0e(e){return e&4294967295}var FF="Invalid uncompressed size",Tat="deflate-raw",TU=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:d,level:u}=t,h=this,p,g,f=super.readable;(!s||c)&&d&&(p=new VF,f=$0(f,p)),r&&(f=d0e(f,a,{level:u,chunkSize:n},o,i)),s&&(c?f=$0(f,new EU(t)):(g=new xU(t),f=$0(f,g))),l0e(h,f,()=>{let b;s&&!c&&(b=g.signature),(!s||c)&&d&&(b=new DataView(p.value.buffer).getUint32(0)),h.signature=b})}},SU=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:d,useCompressionStream:u}=t,h,p,g=super.readable;s&&(r?g=$0(g,new _U(t)):(p=new CU(t),g=$0(g,p))),d&&(g=d0e(g,u,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new VF,g=$0(g,h)),l0e(this,g,()=>{if((!s||r)&&a){let f=new DataView(h.value.buffer);if(c!=f.getUint32(0,!1))throw new Error(lI)}})}};function l0e(e,t,n){t=$0(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function d0e(e,t,n,i,o){let r=t&&i?i:o;return $0(e,new r(Tat,n))}function $0(e,t){return e.pipeThrough(t)}var u0e="message",m0e="start",h0e="pull",Wj="data",f0e="ack",Fj="close",VU="deflate",GU="inflate";var LU=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(VU)?r=TU:o.startsWith(GU)&&(r=SU),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,d=new TransformStream({transform(h,p){h&&h.length&&(s+=h.length,p.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),u=new TransformStream({transform(h,p){if(h&&h.length&&(p.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(FF)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(d).pipeThrough(a).pipeThrough(u)}})}},RU=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var USi=y(C(),1);var g0e=typeof Worker!=Au;var PS=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:d},u){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new RU(r.chunkSize)).pipeThrough(new Mj(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:d,transferStreams:c,terminate(){return new Promise(p=>{let{worker:g,busy:f}=t;g?(f?t.resolveTerminated=p:(g.terminate(),p()),t.interface=null):p()})},onTaskFinished(){let{resolveTerminated:p}=t;p&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),p()),t.busy=!1,u(t)}}),(a&&g0e?Sat:b0e)(t,r)}},Mj=class extends TransformStream{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await Pj(t,i)},async transform(s,a){r+=s.length,n&&await Pj(n,r,i),a.enqueue(s)},async flush(){o&&await Pj(o,r)}})}};async function Pj(e,...t){try{await e(...t)}catch{}}function b0e(e,t){return{run:()=>Lat(e,t)}}function Sat(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Gat(e.scripts[0],n,e)}catch{return g0e=!1,b0e(e,t)}Object.assign(e,{worker:o,interface:{run:()=>Rat(e,{chunkSize:i})}})}return e.interface}async function Lat({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new LU(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function Rat(e,t){let n,i,o=new Promise((p,g)=>{n=p,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:d}=Vat(e.writable),u=ZU({type:m0e,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);u||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return u||await c.getWriter().close(),await d,h}function Vat(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var p0e=!0,A0e=!0;function Gat(e,t,n){let i={type:"module"},o,r;typeof e==Wg&&(e=e());try{o=new URL(e,t)}catch{o=e}if(p0e)try{r=new Worker(o)}catch{p0e=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(u0e,s=>Zat(s,n)),r}function ZU(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&A0e?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{A0e=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Zat({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(s){let{message:g,stack:f,code:b,name:x,outputSize:I}=s,_=new Error(g);Object.assign(_,{stack:f,code:b,name:x,outputSize:I}),p(_)}else{if(n==h0e){let{value:g,done:f}=await a.read();ZU({type:Wj,value:g,done:f,messageId:o},t)}n==Wj&&(await c.ready,await c.write(new Uint8Array(i)),ZU({type:f0e,messageId:o},t)),n==Fj&&p(null,r)}}catch(g){ZU({type:Fj,messageId:o},t),p(g)}function p(g,f){g?u(g):d(f),c&&c.releaseLock(),h()}}var dI=[],vj=[];var y0e=0;async function BU(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:d,encrypted:u}=n,{workerScripts:h,maxWorkers:p}=i;t.transferStreams=o||o===ri;let g=!c&&!d&&!u&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ri&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ri&&i.useCompressionStream,(await f()).run();async function f(){let x=dI.find(I=>!I.busy);if(x)return C0e(x),new PS(x,e,t,b);if(dI.length<p){let I={indexWorker:y0e};return y0e++,dI.push(I),new PS(I,e,t,b)}else return new Promise(I=>vj.push({resolve:I,stream:e,workerOptions:t}))}function b(x){if(vj.length){let[{resolve:I,stream:_,workerOptions:E}]=vj.splice(0,1);I(new PS(x,_,E,b))}else x.worker?(C0e(x),Bat(x,t)):dI=dI.filter(I=>I!=x)}}function Bat(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{dI=dI.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function C0e(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var qSi=y(C(),1);var wat="Writer iterator completed too soon",Xat="Writer not initialized",Wat="text/plain";var Fat="Content-Type";var Pat=64*1024,Qj="writable",MS=class{constructor(){this.size=0}init(){this.initialized=!0}},wU=class extends MS{get readable(){let t=this,{chunkSize:n=Pat}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,d=s===ri?n:Math.min(n,s-c),u=await za(t,r+c,d,a);o.enqueue(u),c+n>s||s===ri&&!u.length&&d?o.close():this.chunkOffset+=n}});return i}},Nj=class extends MS{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(Xat);return t.writeUint8Array(i)}});Object.defineProperty(t,Qj,{get(){return n}})}writeUint8Array(){}};var XU=class extends Nj{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},Mg=class extends wU{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},PF=class extends MS{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Fat,t]),Object.defineProperty(n,Qj,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},WU=class extends Mg{constructor(t){super(new Blob([t],{type:Wat}))}},FU=class extends PF{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var Dj=class extends wU{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let d=r[a];if(d){let u=d.size;if(c+n<=u)s=await za(d,c,n);else{let h=u-c;s=new Uint8Array(n);let p=await za(d,c,h);s.set(p,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),p.length+g.length<n&&(s=s.subarray(0,p.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},PU=class extends MS{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(u){let{availableSize:h}=i;if(s)u.length>=h?(await c(u.subarray(0,h)),await d(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(u.subarray(h))):await c(u);else{let{value:p,done:g}=await t.next();if(g&&!p)throw new Error(wat);o=p,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await xp(o),r=p.writable,s=r.getWriter(),await this.write(u)}},async close(){await s.ready,await d()}});Object.defineProperty(i,Qj,{get(){return a}});async function c(u){let h=u.length;h&&(await s.ready,await s.write(u),o.size+=h,i.size+=h,i.availableSize-=h)}async function d(){await s.close()}}},uI=class{constructor(t){return Array.isArray(t)&&(t=new Dj(t)),t instanceof ReadableStream&&(t={readable:t}),t}},vS=class{constructor(t){return t.writable===ri&&typeof t.next==Wg&&(t=new PU(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ri&&(t.size=0),t instanceof PU||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function xp(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function za(e,t,n,i){return e.readUint8Array(t,n,i)}var gLi=y(C(),1);var iLi=y(C(),1);var eLi=y(C(),1),x0e="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Mat=x0e.length==256;function I0e(e){if(Mat){let t="";for(let n=0;n<e.length;n++)t+=x0e[e[n]];return t}else return new TextDecoder().decode(e)}function MF(e,t){return t&&t.trim().toLowerCase()=="cp437"?I0e(e):new TextDecoder(t).decode(e)}var rLi=y(C(),1),Uj="filename",kj="rawFilename",vF="comment",Yj="rawComment",NF="uncompressedSize",Oj="compressedSize",Hj="offset",MU="diskNumberStart",NS="lastModDate",vU="rawLastModDate",DF="lastAccessDate",_0e="rawLastAccessDate",QF="creationDate",E0e="rawCreationDate",zj="internalFileAttribute",Kj="internalFileAttributes",Jj="externalFileAttribute",jj="externalFileAttributes",qj="msDosCompatible",NU="zip64",$j="encrypted",e8="version",t8="versionMadeBy",n8="zipCrypto",UF="directory",i8="executable",o8="compressionMethod",r8="signature",s8="extraField",vat=[Uj,kj,Oj,NF,NS,vU,vF,Yj,DF,QF,Hj,MU,MU,zj,Kj,Jj,jj,qj,NU,$j,e8,t8,n8,UF,i8,o8,r8,s8,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],ey=class{constructor(t){vat.forEach(n=>this[n]=t[n])}};var aLi=y(C(),1),T0e="filenameEncoding",S0e="commentEncoding",L0e="decodeText",R0e="extractPrependedData",V0e="extractAppendedData",DU="password",QU="rawPassword",UU="passThrough",kU="signal",G0e="checkPasswordOnly",Z0e="checkOverlappingEntryOnly",B0e="checkOverlappingEntry",w0e="checkSignature",YU="useWebWorkers",OU="useCompressionStream",X0e="transferStreams",HU="preventClose",W0e="encryptionStrength",F0e="extendedTimestamp",P0e="keepOrder",M0e="level",v0e="bufferedWrite",N0e="dataDescriptorSignature",D0e="useUnicodeFileNames",Q0e="dataDescriptor",a8="supportZip64SplitFile",U0e="encodeText",c8="offset",l8="usdz";var d8="File format is not recognized",kat="End of central directory not found",Yat="End of Zip64 central directory locator not found",Oat="Central directory header not found",Hat="Local file header not found",zat="Zip64 extra field not found",Kat="File contains encrypted entry",Jat="Encryption method not supported",k0e="Compression method not supported",Y0e="Split zip file",jat="Overlapping entry found",O0e="utf-8",H0e="cp437",qat=[[NF,4294967295],[Oj,4294967295],[Hj,4294967295],[MU,65535]],$at={65535:{getValue:Gr,bytes:4},4294967295:{getValue:QS,bytes:8}},kS=class{constructor(t,n={}){Object.assign(this,{reader:new uI(t),options:n,config:RF(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await xp(i),(i.size===ri||!i.readUint8Array)&&(i=new Mg(await new Response(i.readable).blob()),await xp(i)),i.size<22)throw new Error(d8);i.chunkSize=bU(o);let r=await rct(i,101010256,i.size,22,65535*16);if(!r){let P=await za(i,0,4),A=Yr(P);throw Gr(A)==134695760?new Error(Y0e):new Error(kat)}let s=Yr(r),a=Gr(s,12),c=Gr(s,16),d=r.offset,u=Ka(s,20),h=d+22+u,p=Ka(s,4),g=i.lastDiskNumber||0,f=Ka(s,6),b=Ka(s,8),x=0,I=0;if(c==4294967295||a==4294967295||b==65535||f==65535){let P=await za(i,r.offset-20,20),A=Yr(P);if(Gr(A,0)==117853008){c=QS(A,8);let T=await za(i,c,56,-1),L=Yr(T),V=r.offset-20-56;if(Gr(L,0)!=101075792&&c!=V){let W=c;c=V,c>W&&(x=c-W),T=await za(i,c,56,-1),L=Yr(T)}if(Gr(L,0)!=101075792)throw new Error(Yat);p==65535&&(p=Gr(L,16)),f==65535&&(f=Gr(L,20)),b==65535&&(b=QS(L,32)),a==4294967295&&(a=QS(L,40)),c-=a}}if(c>=i.size&&(x=i.size-c-a-22,c=i.size-a-22),g!=p)throw new Error(Y0e);if(c<0)throw new Error(d8);let _=0,E=await za(i,c,a,f),S=Yr(E);if(a){let P=r.offset-a;if(Gr(S,_)!=33639248&&c!=P){let A=c;c=P,c>A&&(x+=c-A),E=await za(i,c,a,f),S=Yr(E)}}let R=r.offset-c-(i.lastDiskOffset||0);if(a!=R&&R>=0&&(a=R,E=await za(i,c,a,f),S=Yr(E)),c<0||c>=i.size)throw new Error(d8);let G=Ac(n,t,T0e),B=Ac(n,t,S0e);for(let P=0;P<b;P++){let A=new m8(i,o,n.options);if(Gr(S,_)!=33639248)throw new Error(Oat);K0e(A,S,_+6);let T=!!A.bitFlag.languageEncodingFlag,L=_+46,V=L+A.filenameLength,W=V+A.extraFieldLength,M=Ka(S,_+4),Q=M>>8==0,N=M>>8==3,k=E.subarray(L,V),v=Ka(S,_+32),O=W+v,H=E.subarray(W,O),ee=T,K=T,te=Gr(S,_+38),q=Q&&(DS(S,_+38)&16)==16||N&&(te>>16&61440)==16384||k.length&&k[k.length-1]=="/".charCodeAt(0),pe=N&&(te>>16&73)!=0,ye=Gr(S,_+42)+x;Object.assign(A,{versionMadeBy:M,msDosCompatible:Q,compressedSize:0,uncompressedSize:0,commentLength:v,directory:q,offset:ye,diskNumberStart:Ka(S,_+34),internalFileAttributes:Ka(S,_+36),externalFileAttributes:te,rawFilename:k,filenameUTF8:ee,commentUTF8:K,rawExtraField:E.subarray(V,W),executable:pe}),A.internalFileAttribute=A.internalFileAttributes,A.externalFileAttribute=A.externalFileAttributes;let he=Ac(n,t,L0e)||MF,xe=ee?O0e:G||H0e,Te=K?O0e:B||H0e,Be=he(k,xe);Be===ri&&(Be=MF(k,xe));let Le=he(H,Te);Le===ri&&(Le=MF(H,Te)),Object.assign(A,{rawComment:H,filename:Be,comment:Le,directory:q||Be.endsWith("/")}),I=Math.max(ye,I),J0e(A,A,S,_+6),A.zipCrypto=A.encrypted&&!A.extraFieldAES;let De=new ey(A);De.getData=(je,it)=>A.getData(je,De,n.readRanges,it),De.arrayBuffer=async je=>{let it=new TransformStream,[nn]=await Promise.all([new Response(it.readable).arrayBuffer(),A.getData(it,De,n.readRanges,je)]);return nn},_=O;let{onprogress:Ue}=t;if(Ue)try{await Ue(P+1,b,new ey(A))}catch{}yield De}let w=Ac(n,t,R0e),F=Ac(n,t,V0e);return w&&(n.prependedData=I>0?await za(i,0,I):new Uint8Array),n.comment=u?await za(i,d+22,u):new Uint8Array,F&&(n.appendedData=h<i.size?await za(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var m8=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:d,extraFieldZip64:u,compressionMethod:h,config:p,bitFlag:g,signature:f,rawLastModDate:b,uncompressedSize:x,compressedSize:I}=r,{dataDescriptor:_}=g,E=n.localDirectory={},S=await za(s,a,30,c),R=Yr(S),G=Ac(r,o,DU),B=Ac(r,o,QU),w=Ac(r,o,UU);if(G=G&&G.length&&G,B=B&&B.length&&B,d&&d.originalCompressionMethod!=99)throw new Error(k0e);if(h!=0&&h!=8&&!w)throw new Error(k0e);if(Gr(R,0)!=67324752)throw new Error(Hat);K0e(E,R,4);let{extraFieldLength:F,filenameLength:P,lastAccessDate:A,creationDate:T}=E;E.rawExtraField=F?await za(s,a+30+P,F,c):new Uint8Array,J0e(r,E,R,4,!0),Object.assign(n,{lastAccessDate:A,creationDate:T});let L=r.encrypted&&E.encrypted&&!w,V=L&&!d;if(w||(n.zipCrypto=V),L){if(!V&&d.strength===ri)throw new Error(Jat);if(!G&&!B)throw new Error(Kat)}let W=a+30+P+F,M=I,Q=s.readable;Object.assign(Q,{diskNumberStart:c,offset:W,size:M});let N=Ac(r,o,kU),k=Ac(r,o,G0e),v=Ac(r,o,B0e),O=Ac(r,o,Z0e);O&&(v=!0);let{onstart:H,onprogress:ee,onend:K}=o,te={options:{codecType:GU,password:G,rawPassword:B,zipCrypto:V,encryptionStrength:d&&d.strength,signed:Ac(r,o,w0e)&&!w,passwordVerification:V&&(_?b>>>8&255:f>>>24&255),outputSize:x,signature:f,compressed:h!=0&&!w,encrypted:r.encrypted&&!w,useWebWorkers:Ac(r,o,YU),useCompressionStream:Ac(r,o,OU),transferStreams:Ac(r,o,X0e),checkPasswordOnly:k},config:p,streamOptions:{signal:N,size:M,onstart:H,onprogress:ee,onend:K}};v&&await oct({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:f,compressedSize:I,uncompressedSize:x,dataOffset:W,dataDescriptor:_||E.bitFlag.dataDescriptor,extraFieldZip64:u||E.extraFieldZip64,readRanges:i});let q;try{if(!O){k&&(t=new WritableStream),t=new vS(t),await xp(t,w?I:x),{writable:q}=t;let{outputSize:pe}=await BU({readable:Q,writable:q},te);if(t.size+=pe,pe!=(w?I:x))throw new Error(FF)}}catch(pe){if(pe.outputSize!==ri&&(t.size+=pe.outputSize),!k||pe.message!=Pg)throw pe}finally{!Ac(r,o,HU)&&q&&!q.locked&&await q.getWriter().close()}return k||O?ri:t.getData?t.getData():q}};function K0e(e,t,n){let i=e.rawBitFlag=Ka(t,n+2),o=(i&1)==1,r=Gr(t,n+6);Object.assign(e,{encrypted:o,version:Ka(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:sct(r),filenameLength:Ka(t,n+22),extraFieldLength:Ka(t,n+24)})}function J0e(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Yr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let I=Ka(a,c),_=Ka(a,c+2);s.set(I,{type:I,data:r.slice(c+4,c+4+_)}),c+=4+_}}catch{}let d=Ka(n,i+4);Object.assign(t,{signature:Gr(n,i+10),compressedSize:Gr(n,i+14),uncompressedSize:Gr(n,i+18)});let u=s.get(1);u&&(ect(u,t),t.extraFieldZip64=u);let h=s.get(28789);h&&(z0e(h,Uj,kj,t,e),t.extraFieldUnicodePath=h);let p=s.get(25461);p&&(z0e(p,vF,Yj,t,e),t.extraFieldUnicodeComment=p);let g=s.get(39169);g?(tct(g,t,d),t.extraFieldAES=g):t.compressionMethod=d;let f=s.get(10);f&&(nct(f,t),t.extraFieldNTFS=f);let b=s.get(21589);b&&(ict(b,t,o),t.extraFieldExtendedTimestamp=b);let x=s.get(6534);x&&(t.extraFieldUSDZ=x)}function ect(e,t){t.zip64=!0;let n=Yr(e.data),i=qat.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=$at[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(zat)}}function z0e(e,t,n,i,o){let r=Yr(e.data),s=new Fg;s.append(o[n]);let a=Yr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=Gr(r,1);Object.assign(e,{version:DS(r,0),[t]:MF(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==Gr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function tct(e,t,n){let i=Yr(e.data),o=DS(i,4);Object.assign(e,{vendorVersion:DS(i,0),vendorId:DS(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ka(i,5)}),t.compressionMethod=e.compressionMethod}function nct(e,t){let n=Yr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ka(n,i),s=Ka(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Yr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let d=u8(s),u=u8(a),h=u8(c),p={lastModDate:d,lastAccessDate:u,creationDate:h};Object.assign(e,p),Object.assign(t,p)}}catch{}}function ict(e,t,n){let i=Yr(e.data),o=DS(i,0),r=[],s=[];n?((o&1)==1&&(r.push(NS),s.push(vU)),(o&2)==2&&(r.push(DF),s.push(_0e)),(o&4)==4&&(r.push(QF),s.push(E0e))):e.data.length>=5&&(r.push(NS),s.push(vU));let a=1;r.forEach((c,d)=>{if(e.data.length>=a+4){let u=Gr(i,a);t[c]=e[c]=new Date(u*1e3);let h=s[d];e[h]=u}a+=4})}async function oct({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:d,readRanges:u}){let h=0;if(i)for(let f=0;f<i;f++){let b=e.readers[f];h+=b.size}let p=0;if(c&&(d?p=20:p=12),p){let f=await za(e,a+r,p+4,i);if(Gr(Yr(f),0)==134695760){let x=Gr(Yr(f),4),I,_;d?(I=QS(Yr(f),8),_=QS(Yr(f),16)):(I=Gr(Yr(f),8),_=Gr(Yr(f),12)),(t.encrypted&&!t.zipCrypto||x==o)&&I==r&&_==s&&(p+=4)}}let g={start:h+n,end:h+a+r+p,fileEntry:t};for(let f of u)if(f.fileEntry!=t&&g.start>=f.start&&g.start<f.end){let b=new Error(jat);throw b.overlappingEntry=f.fileEntry,b}u.push(g)}async function rct(e,t,n,i,o){let r=new Uint8Array(4),s=Yr(r);act(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(d){let u=n-d,h=await za(e,u,d);for(let p=h.length-i;p>=0;p--)if(h[p]==r[0]&&h[p+1]==r[1]&&h[p+2]==r[2]&&h[p+3]==r[3])return{offset:u+p,buffer:h.slice(p,p+i).buffer}}}function Ac(e,t,n){return t[n]===ri?e.options[n]:t[n]}function sct(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function u8(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function DS(e,t){return e.getUint8(t)}function Ka(e,t){return e.getUint16(t,!0)}function Gr(e,t){return e.getUint32(t,!0)}function QS(e,t){return Number(e.getBigUint64(t,!0))}function act(e,t,n){e.setUint32(t,n,!0)}function Yr(e){return new DataView(e.buffer)}var LLi=y(C(),1);var fct="File already exists",pct="Zip file comment exceeds 64KB",Act="File entry comment exceeds 64KB",gct="File entry name exceeds 64KB",$0e="Version exceeds 65535",bct="The strength must equal 1, 2, or 3",yct="Extra field type exceeds 65535",Cct="Extra field data exceeds 64KB",B8="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",xct="Undefined uncompressed size",Ict="Zip file not empty",eye=new Uint8Array([7,0,2,0,65,69,3,0,0]),V8=0,tye=[],ok=class{constructor(t,n={}){t=new vS(t);let i=t.availableSize!==ri&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ri&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:RF(),files:new Map,filenames:new Set,offset:n[c8]===ri?t.size||t.writable.size||0:n[c8],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(Ict);t=new uI(t);let n=new kS(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:d,rawFilename:u,bitFlag:h,encrypted:p,uncompressedSize:g,compressedSize:f,diskOffset:b,diskNumber:x,zip64:I}=o,{rawExtraFieldZip64:_,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:R,rawExtraField:G}=o,{level:B,languageEncodingFlag:w,dataDescriptor:F}=h;_=_||new Uint8Array,E=E||new Uint8Array,S=S||new Uint8Array,R=R||new Uint8Array,G=G||new Uint8Array;let P=Ki(_,E,S,R,G),A=I&&g>4294967295,T=I&&f>4294967295,{headerArray:L,headerView:V}=oye({version:r,bitFlag:rye(B,w,F,p,s),compressionMethod:s,uncompressedSize:g,compressedSize:f,lastModDate:a,rawFilename:u,zip64CompressedSize:T,zip64UncompressedSize:A,extraFieldLength:P});return Object.assign(o,{zip64UncompressedSize:A,zip64CompressedSize:T,zip64Offset:I&&this.offset-b>4294967295,zip64DiskNumberStart:I&&x>65535,rawExtraFieldZip64:_,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:R,rawExtraField:G,extendedTimestamp:S.length>0||R.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(d?4:0),headerArray:L,headerView:V}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;V8<s.maxWorkers?V8++:await new Promise(c=>tye.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(fct);return o.filenames.add(t),a=_ct(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=tye.shift();c?c():V8--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ri){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Zct(this,t,n),co(i,n,HU)||await s.getWriter().close(),r.getData?r.getData():s}};async function _ct(e,t,n,i){t=t.trim();let o=co(e,i,qj),r=co(e,i,t8,o?20:768),s=co(e,i,i8);if(r>65535)throw new Error($0e);let a=co(e,i,jj,0);a===0&&(a=co(e,i,Jj,0)),!i[UF]&&t.endsWith("/")&&(i[UF]=!0),co(e,i,UF)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let d=co(e,i,U0e,XS),u=d(t);if(u===ri&&(u=XS(t)),Ki(u)>65535)throw new Error(gct);let h=i[vF]||"",p=d(h);if(p===ri&&(p=XS(h)),Ki(p)>65535)throw new Error(Act);let g=co(e,i,e8,20);if(g>65535)throw new Error($0e);let f=co(e,i,NS,new Date),b=co(e,i,DF),x=co(e,i,QF),I=co(e,i,Kj,0);I===0&&(I=co(e,i,zj,0));let _=co(e,i,UU),E,S;_||(E=co(e,i,DU),S=co(e,i,QU));let R=co(e,i,W0e,3),G=co(e,i,n8),B=co(e,i,F0e,!0),w=co(e,i,P0e,!0),F=co(e,i,M0e),P=co(e,i,YU),A=co(e,i,v0e),T=co(e,i,N0e,!1),L=co(e,i,kU),V=co(e,i,D0e,!0),W=co(e,i,OU),M=co(e,i,o8),Q=co(e,i,Q0e);A&&Q===ri&&(Q=!1),(Q===ri||G)&&(Q=!0);let N=co(e,i,NU);if(!G&&(E!==ri||S!==ri)&&!(R>=1&&R<=3))throw new Error(bct);let k=new Uint8Array,v=i[s8];if(v){let nn=0,rt=0;v.forEach(rn=>nn+=4+Ki(rn)),k=new Uint8Array(nn),v.forEach((rn,Jt)=>{if(Jt>65535)throw new Error(yct);if(Ki(rn)>65535)throw new Error(Cct);Ds(k,new Uint16Array([Jt]),rt),Ds(k,new Uint16Array([Ki(rn)]),rt+2),Ds(k,rn,rt+4),rt+=4+Ki(rn)})}let O=0,H=0,ee=0;if(_&&(ee=i[NF],ee===ri))throw new Error(xct);let K=N===!0;n&&(n=new uI(n),await xp(n),_?(i.uncompressedSize=ee,O=iye(ee)):n.size===ri?(Q=!0,(N||N===ri)&&(N=!0,ee=O=4294967296)):(i.uncompressedSize=ee=n.size,O=iye(ee)));let{diskOffset:te,diskNumber:q,maxSize:pe}=e.writer,ye=K||ee>4294967295,he=K||O>4294967295,xe=K||e.offset+e.pendingEntriesSize-te>4294967295,Be=co(e,i,a8,!0)&&K||q+Math.ceil(e.pendingEntriesSize/pe)>65535;if(xe||ye||he||Be){if(N===!1||!w)throw new Error(B8);N=!0}N=N||!1;let Le=co(e,i,$j);i=Object.assign({},i,{rawFilename:u,rawComment:p,version:g,versionMadeBy:r,lastModDate:f,lastAccessDate:b,creationDate:x,rawExtraField:k,zip64:N,zip64UncompressedSize:ye,zip64CompressedSize:he,zip64Offset:xe,zip64DiskNumberStart:Be,password:E,rawPassword:S,level:!W&&e.config.CompressionStream===ri&&e.config.CompressionStreamNative===ri?0:F,useWebWorkers:P,encryptionStrength:R,extendedTimestamp:B,zipCrypto:G,bufferedWrite:A,keepOrder:w,useUnicodeFileNames:V,dataDescriptor:Q,dataDescriptorSignature:T,signal:L,msDosCompatible:o,internalFileAttribute:I,internalFileAttributes:I,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:W,passThrough:_,encrypted:!!(E&&Ki(E)||S&&Ki(S))||_&&Le,signature:i[r8],compressionMethod:M,uncompressedSize:ee,offset:e.offset-te,diskNumberStart:q});let De=Sct(i),Ue=Rct(i),je=Ki(De.localHeaderArray,Ue.dataDescriptorArray);H=je+O,e.options[l8]&&(H+=H+64),e.pendingEntriesSize+=H;let it;try{it=await Ect(e,t,n,{headerInfo:De,dataDescriptorInfo:Ue,metadataSize:je},i)}finally{e.pendingEntriesSize-=H}return Object.assign(it,{name:t,comment:h,extraField:v}),new ey(it)}async function Ect(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:d}=o,{headerInfo:u}=i,h=e.options[l8],p=Array.from(r.values()).pop(),g={},f,b,x,I,_,E,S;r.set(t,g);try{let w;a&&(w=p&&p.lock,R()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(E=new TransformStream,E.size=0,f=!0,e.bufferedWrites++,await xp(s)):(E=s,await G()),await xp(E);let{writable:F,diskOffset:P}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let W=new Uint8Array(4),M=gc(W);zi(M,0,134695760),await vg(s,W),e.offset+=4}h&&Lct(i,e.offset-P);let{localHeaderView:A,localHeaderArray:T}=u;f||(await w,await B(F));let{diskNumber:L}=s;_=!0,g.diskNumberStart=L,f?S=new Response(E.readable).blob():await vg(E,T),g=await Tct(n,E,g,i,e.config,o);let{zip64:V}=g;if(_=!1,r.set(t,g),g.filename=t,f){let[W]=await Promise.all([S,E.writable.getWriter().close(),w]);await G(),I=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,V&&nye(g),Gct(g,A,o),await B(F),await vg(s,T),await W.stream().pipeTo(F,{preventClose:!0,preventAbort:!0,signal:d}),s.size+=E.size,I=!1}else g.offset=e.offset-P,V&&nye(g);if(g.offset>4294967295&&!V)throw new Error(B8);return e.offset+=g.size,g}catch(w){if(f&&I||!f&&_){if(e.hasCorruptedEntries=!0,w)try{w.corruptedEntry=!0}catch{}f?e.offset+=E.size:e.offset=E.size}throw r.delete(t),w}finally{f&&e.bufferedWrites--,x&&x(),b&&b()}function R(){g.lock=new Promise(w=>x=w)}async function G(){e.writerLocked=!0;let{lockWriter:w}=e;e.lockWriter=new Promise(F=>b=()=>{e.writerLocked=!1,F()}),await w}async function B(w){Ki(u.localHeaderArray)>s.availableSize&&(s.availableSize=0,await vg(w,new Uint8Array))}}async function Tct(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:d}=o,{headerArray:u,headerView:h,lastModDate:p,rawLastModDate:g,encrypted:f,compressed:b,version:x,compressionMethod:I,rawExtraFieldZip64:_,localExtraFieldZip64Length:E,rawExtraFieldExtendedTimestamp:S,extraFieldExtendedTimestampFlag:R,rawExtraFieldNTFS:G,rawExtraFieldAES:B}=a,{dataDescriptorArray:w}=c,{rawFilename:F,lastAccessDate:P,creationDate:A,password:T,rawPassword:L,level:V,zip64:W,zip64UncompressedSize:M,zip64CompressedSize:Q,zip64Offset:N,zip64DiskNumberStart:k,zipCrypto:v,dataDescriptor:O,directory:H,executable:ee,versionMadeBy:K,rawComment:te,rawExtraField:q,useWebWorkers:pe,onstart:ye,onprogress:he,onend:xe,signal:Te,encryptionStrength:Be,extendedTimestamp:Le,msDosCompatible:De,internalFileAttributes:Ue,externalFileAttributes:je,useCompressionStream:it,passThrough:nn}=s,rt={lock:i,versionMadeBy:K,zip64:W,directory:!!H,executable:!!ee,filenameUTF8:!0,rawFilename:F,commentUTF8:!0,rawComment:te,rawExtraFieldZip64:_,localExtraFieldZip64Length:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:G,rawExtraFieldAES:B,rawExtraField:q,extendedTimestamp:Le,msDosCompatible:De,internalFileAttributes:Ue,externalFileAttributes:je,diskNumberStart:n},{signature:rn,uncompressedSize:Jt}=s,Xt=0;nn||(Jt=0);let{writable:Li}=t;if(e){e.chunkSize=bU(r);let bi=e.readable,vt=e.size,Rt={options:{codecType:VU,level:V,rawPassword:L,password:T,encryptionStrength:Be,zipCrypto:f&&v,passwordVerification:f&&v&&g>>8&255,signed:!nn,compressed:b&&!nn,encrypted:f&&!nn,useWebWorkers:pe,useCompressionStream:it,transferStreams:!1},config:r,streamOptions:{signal:Te,size:vt,onstart:ye,onprogress:he,onend:xe}};try{let si=await BU({readable:bi,writable:Li},Rt);Xt=si.outputSize,t.size+=Xt,nn||(Jt=si.inputSize,rn=si.signature)}catch(si){throw si.outputSize!==ri&&(t.size+=si.outputSize),si}}return Vct({signature:rn,compressedSize:Xt,uncompressedSize:Jt,headerInfo:a,dataDescriptorInfo:c},s),O&&await vg(t,w),Object.assign(rt,{uncompressedSize:Jt,compressedSize:Xt,lastModDate:p,rawLastModDate:g,creationDate:A,lastAccessDate:P,encrypted:f,zipCrypto:v,size:d+Xt,compressionMethod:I,version:x,headerArray:u,headerView:h,signature:rn,extraFieldExtendedTimestampFlag:R,zip64UncompressedSize:M,zip64CompressedSize:Q,zip64Offset:N,zip64DiskNumberStart:k}),rt}function Sct(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:d,directory:u,rawExtraField:h,encryptionStrength:p,extendedTimestamp:g,passThrough:f,encrypted:b,zip64UncompressedSize:x,zip64CompressedSize:I,zip64Offset:_,zip64DiskNumberStart:E,uncompressedSize:S,offset:R,diskNumberStart:G}=e,{version:B,compressionMethod:w}=e,F=!u&&(r>0||r===ri&&w!==0),P,A=f||!F,T=s&&(e.bufferedWrite||!x&&!I||A);if(s){let te=4;x&&(te+=8),I&&(te+=8),_&&(te+=8),E&&(te+=4),P=new Uint8Array(te);let q=gc(P);if(Co(q,0,1),Co(q,2,Ki(P)-4),T){let pe=gc(P),ye=4;x&&(ta(pe,ye,BigInt(S)),ye+=8),I&&A&&(ta(pe,ye,BigInt(S)),ye+=8),_&&(ta(pe,ye,BigInt(R)),ye+=8),E&&(zi(pe,ye,G),ye+=4)}}else P=new Uint8Array;let L;if(b&&!a){L=new Uint8Array(Ki(eye)+2);let te=gc(L);Co(te,0,39169),Ds(L,eye,2),Z8(te,8,p)}else L=new Uint8Array;let V,W,M;if(g){W=new Uint8Array(9+(i?4:0)+(o?4:0));let te=gc(W);Co(te,0,21589),Co(te,2,Ki(W)-4),M=1+(i?2:0)+(o?4:0),Z8(te,4,M);let q=5;zi(te,q,Math.floor(n.getTime()/1e3)),q+=4,i&&(zi(te,q,Math.floor(i.getTime()/1e3)),q+=4),o&&zi(te,q,Math.floor(o.getTime()/1e3));try{V=new Uint8Array(36);let pe=gc(V),ye=G8(n);Co(pe,0,10),Co(pe,2,32),Co(pe,8,1),Co(pe,10,24),ta(pe,12,ye),ta(pe,20,G8(i)||ye),ta(pe,28,G8(o)||ye)}catch{V=new Uint8Array}}else V=W=new Uint8Array;w===ri&&(w=F?8:0),s&&(B=B>45?B:45),b&&!a&&(B=B>51?B:51,L[9]=w,w=99);let Q=T?Ki(P):0,N=Q+Ki(L,W,V,h),{headerArray:k,headerView:v,rawLastModDate:O}=oye({version:B,bitFlag:rye(r,c,d,b,w),compressionMethod:w,uncompressedSize:S,lastModDate:n<Vj?Vj:n>Rj?Rj:n,rawFilename:t,zip64CompressedSize:I,zip64UncompressedSize:x,extraFieldLength:N}),H=30,ee=new Uint8Array(H+Ki(t)+N),K=gc(ee);return zi(K,0,67324752),Ds(ee,k,4),Ds(ee,t,H),H+=Ki(t),T&&Ds(ee,P,H),H+=Q,Ds(ee,L,H),H+=Ki(L),Ds(ee,W,H),H+=Ki(W),Ds(ee,V,H),H+=Ki(V),Ds(ee,h,H),d&&(zi(K,18,0),zi(K,22,0)),{localHeaderArray:ee,localHeaderView:K,headerArray:k,headerView:v,lastModDate:n,rawLastModDate:O,encrypted:b,compressed:F,version:B,compressionMethod:w,extraFieldExtendedTimestampFlag:M,rawExtraFieldZip64:P,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:W,rawExtraFieldNTFS:V,rawExtraFieldAES:L,extraFieldLength:N}}function Lct(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=gc(i),s=64-(t+Ki(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=gc(a);Co(c,0,6534),Co(c,2,s-2);let d=i;n.localHeaderArray=i=new Uint8Array(Ki(d)+s),Ds(i,d),Ds(i,a,Ki(d)),r=gc(i),Co(r,28,o+s),e.metadataSize+=s}function Rct({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=gc(i),n&&(r=4,zi(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function Vct({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:d}=i,{dataDescriptorView:u,dataDescriptorOffset:h}=o;(!d||s)&&e!==ri&&(zi(c,10,e),a&&zi(u,h,e)),r?a&&(ta(u,h+4,BigInt(t)),ta(u,h+12,BigInt(n))):(zi(c,14,t),zi(c,18,n),a&&(zi(u,h+4,t),zi(u,h+8,n)))}function Gct({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:d,zip64CompressedSize:u,zip64Offset:h,zip64DiskNumberStart:p},g,{dataDescriptor:f}){if(f||(t||zi(g,14,o),n||(zi(g,18,r),zi(g,22,s))),n&&i){let b=30+Ki(e)+4;d&&(ta(g,b,BigInt(s)),b+=8),u&&(ta(g,b,BigInt(r)),b+=8),h&&(ta(g,b,BigInt(a)),b+=8),p&&zi(g,b,c)}}function nye({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let d=gc(c),u=4;o&&(ta(d,u,BigInt(t)),u+=8),r&&(ta(d,u,BigInt(e)),u+=8),s&&(ta(d,u,BigInt(n)),u+=8),a&&zi(d,u,i)}async function Zct(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,d=e.offset-r,u=i.size;for(let[,S]of i){let{rawFilename:R,rawExtraFieldZip64:G,rawExtraFieldAES:B,rawComment:w,rawExtraFieldNTFS:F,rawExtraField:P,extendedTimestamp:A,extraFieldExtendedTimestampFlag:T,lastModDate:L}=S,V;if(A){V=new Uint8Array(9);let W=gc(V);Co(W,0,21589),Co(W,2,5),Z8(W,4,T),zi(W,5,Math.floor(L.getTime()/1e3))}else V=new Uint8Array;S.rawExtraFieldExtendedTimestamp=V,c+=46+Ki(R,w,G,B,F,V,P)}let h=new Uint8Array(c),p=gc(h);await xp(o);let g=0;for(let[S,R]of Array.from(i.values()).entries()){let{offset:G,rawFilename:B,rawExtraFieldZip64:w,rawExtraFieldAES:F,rawExtraFieldExtendedTimestamp:P,rawExtraFieldNTFS:A,rawExtraField:T,rawComment:L,versionMadeBy:V,headerArray:W,headerView:M,zip64:Q,zip64UncompressedSize:N,zip64CompressedSize:k,zip64DiskNumberStart:v,zip64Offset:O,internalFileAttributes:H,externalFileAttributes:ee,diskNumberStart:K,uncompressedSize:te,compressedSize:q}=R,pe=Ki(w,F,P,A,T);zi(p,a,33639248),Co(p,a+4,V),N||zi(M,18,te),k||zi(M,14,q),Ds(h,W,a+6);let ye=a+30;if(Co(p,ye,pe),ye+=2,Co(p,ye,Ki(L)),ye+=2,Co(p,ye,Q&&v?65535:K),ye+=2,Co(p,ye,H),ye+=2,ee&&zi(p,ye,ee),ye+=4,zi(p,ye,Q&&O?4294967295:G),ye+=4,Ds(h,B,ye),ye+=Ki(B),Ds(h,w,ye),ye+=Ki(w),Ds(h,F,ye),ye+=Ki(F),Ds(h,P,ye),ye+=Ki(P),Ds(h,A,ye),ye+=Ki(A),Ds(h,T,ye),ye+=Ki(T),Ds(h,L,ye),a-g>o.availableSize&&(o.availableSize=0,await vg(o,h.slice(g,a)),g=a),a=ye,n.onprogress)try{await n.onprogress(S+1,i.size,new ey(R))}catch{}}await vg(o,g?h.slice(g):h);let f=o.diskNumber,{availableSize:b}=o;b<22&&f++;let x=co(e,n,NU);if(d>4294967295||c>4294967295||u>65535||f>65535){if(x===!1)throw new Error(B8);x=!0}let I=new Uint8Array(x?98:22),_=gc(I);a=0,x&&(zi(_,0,101075792),ta(_,4,BigInt(44)),Co(_,12,45),Co(_,14,45),zi(_,16,f),zi(_,20,s),ta(_,24,BigInt(u)),ta(_,32,BigInt(u)),ta(_,40,BigInt(c)),ta(_,48,BigInt(d)),zi(_,56,117853008),ta(_,64,BigInt(d)+BigInt(c)),zi(_,72,f+1),co(e,n,a8,!0)&&(f=65535,s=65535),u=65535,d=4294967295,c=4294967295,a+=76),zi(_,a,101010256),Co(_,a+4,f),Co(_,a+6,s),Co(_,a+8,u),Co(_,a+10,u),zi(_,a+12,c),zi(_,a+16,d);let E=Ki(t);if(E)if(E<=65535)Co(_,a+20,E);else throw new Error(pct);await vg(o,I),E&&await vg(o,t)}async function vg(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=Ki(t),await i.write(t)}finally{i.releaseLock()}}function G8(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function co(e,t,n,i){let o=t[n]===ri?e.options[n]:t[n];return o===ri?i:o}function iye(e){return e+5*(Math.floor(e/16383)+1)}function Z8(e,t,n){e.setUint8(t,n)}function Co(e,t,n){e.setUint16(t,n,!0)}function zi(e,t,n){e.setUint32(t,n,!0)}function ta(e,t,n){e.setBigUint64(t,n,!0)}function Ds(e,t,n){e.set(t,n)}function gc(e){return new DataView(e.buffer)}function Ki(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function oye({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:d}){let u=new Uint8Array(26),h=gc(u);Co(h,0,e),Co(h,2,t),Co(h,4,n);let p=new Uint32Array(1),g=gc(p);Co(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),Co(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let f=p[0];return zi(h,6,f),(a||o!==ri)&&zi(h,14,a?4294967295:o),(c||i!==ri)&&zi(h,18,c?4294967295:i),Co(h,22,Ki(s)),Co(h,24,d),{headerArray:u,headerView:h,rawLastModDate:f}}function rye(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}wS({Deflate:_be,Inflate:Ybe});var NLi=y(C(),1);function Bct(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Dn=Bct;var QLi=y(C(),1);function wct(e,t){this.position=e,this.headingPitchRange=t}var HF=wct;var OLi=y(C(),1);function rk(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new Ce,this.tourEnd=new Ce,this.entryStart=new Ce,this.entryEnd=new Ce,this._activeEntries=[]}rk.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};rk.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;cye.call(this,e,t,function(i){n.playlistIndex=0,i||aye(n._activeEntries),n.tourEnd.raiseEvent(i)})};rk.prototype.stop=function(){aye(this._activeEntries)};function aye(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function cye(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=Xct.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function Xct(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,cye.call(this,e,t,n)}}var zF=rk;var l1i=y(C(),1);var i1i=y(C(),1);var e1i=y(C(),1),Ji=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Ji.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Ji.Bounce.In(e*2)*.5:Ji.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),KF=function(){return performance.now()},Wct=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=KF()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),YS={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=YS.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=YS.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=YS.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=YS.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},lye=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),w8=new Wct,dye=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Ji.Linear.None,this._interpolationFunction=YS.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=lye.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=w8,w8.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=KF()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),d=c?"array":typeof a,u=!c&&Array.isArray(i[s]);if(!(d==="undefined"||d==="function")){if(u){var h=i[s];if(h.length===0)continue;for(var p=[a],g=0,f=h.length;g<f;g+=1){var b=this._handleRelativeValue(a,h[g]);if(isNaN(b)){u=!1,console.warn("Found invalid interpolation list. Skipping.");break}p.push(b)}u&&(i[s]=p)}if((d==="object"||c)&&a&&!u){n[s]=c?[]:{};var x=a;for(var I in x)n[s][I]=x[I];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var _={};for(var I in h)_[I]=h[I];i[s]=h=_}this._setupProperties(x,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),u?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=KF()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=KF()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Ji.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=YS.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=KF()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,d=function(){if(i._duration===0||s>c)return 1;var b=Math.trunc(s/a),x=s-b*a,I=Math.min(x/i._duration,1);return I===0&&s===i._duration?1:I},u=d(),h=this._easingFunction(u);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,u),this._duration===0||s>=this._duration)if(this._repeat>0){var p=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=p);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*p,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,f=this._chainedTweens.length;g<f;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),d=Array.isArray(a),u=!c&&d;u?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var HLi=lye.nextId,Ip=w8,zLi=Ip.getAll.bind(Ip),KLi=Ip.removeAll.bind(Ip),JLi=Ip.add.bind(Ip),jLi=Ip.remove.bind(Ip),qLi=Ip.update.bind(Ip);var Fct={LINEAR_NONE:Ji.Linear.None,QUADRATIC_IN:Ji.Quadratic.In,QUADRATIC_OUT:Ji.Quadratic.Out,QUADRATIC_IN_OUT:Ji.Quadratic.InOut,CUBIC_IN:Ji.Cubic.In,CUBIC_OUT:Ji.Cubic.Out,CUBIC_IN_OUT:Ji.Cubic.InOut,QUARTIC_IN:Ji.Quartic.In,QUARTIC_OUT:Ji.Quartic.Out,QUARTIC_IN_OUT:Ji.Quartic.InOut,QUINTIC_IN:Ji.Quintic.In,QUINTIC_OUT:Ji.Quintic.Out,QUINTIC_IN_OUT:Ji.Quintic.InOut,SINUSOIDAL_IN:Ji.Sinusoidal.In,SINUSOIDAL_OUT:Ji.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Ji.Sinusoidal.InOut,EXPONENTIAL_IN:Ji.Exponential.In,EXPONENTIAL_OUT:Ji.Exponential.Out,EXPONENTIAL_IN_OUT:Ji.Exponential.InOut,CIRCULAR_IN:Ji.Circular.In,CIRCULAR_OUT:Ji.Circular.Out,CIRCULAR_IN_OUT:Ji.Circular.InOut,ELASTIC_IN:Ji.Elastic.In,ELASTIC_OUT:Ji.Elastic.Out,ELASTIC_IN_OUT:Ji.Elastic.InOut,BACK_IN:Ji.Back.In,BACK_OUT:Ji.Back.Out,BACK_IN_OUT:Ji.Back.InOut,BOUNCE_IN:Ji.Bounce.In,BOUNCE_OUT:Ji.Bounce.Out,BOUNCE_IN_OUT:Ji.Bounce.InOut},ms=Object.freeze(Fct);function sk(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}sk.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new ue(this.view.position);t.flyToBoundingSphere(o,i)}};sk.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};sk.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ms.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=Lt(t,e)),t};var JF=sk;var m1i=y(C(),1);function X8(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}X8.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};X8.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var jF=X8;var Cye={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=Fy(t),Cye[t]}},D8;typeof DOMParser<"u"&&(D8=new DOMParser);var Pct=new oU({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),ny=32,uye=2414016,mye=1,hye=16093e3,fye=.1,pye=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],Aye=["http://www.google.com/kml/ext/2.2"],Mct=["http://www.w3.org/2005/Atom"],Fe={kml:pye,gx:Aye,atom:Mct,kmlgx:pye.concat(Aye)},Q8={Document:Gye,Folder:ilt,Placemark:olt,NetworkLink:hlt,GroundOverlay:dlt,PhotoOverlay:wye,ScreenOverlay:llt,Tour:slt};function _p(e){this._dataSource=e,this._deferred=Ol(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(_p.prototype,{dataSource:{get:function(){return this._dataSource}}});_p.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};_p.prototype.addPromise=function(e){this._promises.push(e)};_p.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};_p.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=yu._getTimestamp()),this._process(e)};_p.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=yu._getTimestamp(),e._process(!0)},0)};_p.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};_p.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};_p.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=Q8[i.localName];if(l(o)&&(Fe.kml.indexOf(i.namespaceURI)!==-1||Fe.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||yu._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function vct(e){let t=e.slice(0,Math.min(4,e.size)),n=Ol(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function Nct(e){let t=Ol(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function xye(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function Iye(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function Dct(e,t){return Promise.resolve(e.getData(new FU)).then(function(n){n=xye(n),n=Iye(n),t.kml=D8.parseFromString(n,"application/xml")})}function W8(e,t){let n=Cye.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new XU(n))).then(function(i){t[e.filename]=i})}function gu(e,t,n,i){let o=i.keys,r=new qF.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],d=c.getAttribute(n);if(l(d)){let h=new qF.default(d).absoluteTo(r).toString(),p=o.indexOf(h);if(p!==-1){let g=o[p];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function bu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=U8(a,i);l(c)&&s.setAttribute(n,c.url)}}function _ye(e,t,n){let i=na(e,"id");i=l(i)&&i.length!==0?i:qn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=qn(),l(n)&&(i=n+i)),o=t.add(new ur({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new glt),o}function $F(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function dk(e,t){if(!l(e))return m.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return m.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,m.fromDegrees(i,o,r,t)}function ak(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=dk(n[s],t);return o}function iy(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function na(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function ji(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function gye(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function rf(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function gi(e,t,n){let i=ji(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function Qn(e,t,n){let i=ji(e,t,n);if(l(i))return i.textContent.trim()}function sf(e,t,n){let i=ji(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function U8(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new Ve({url:o});else{let r=new qF.default(t.getUrlComponent()),s=new qF.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new Ve({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var Cd={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function v8(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(Cd.maximumRed=r,Cd.red=void 0):(Cd.maximumRed=void 0,Cd.red=0),o>0?(Cd.maximumGreen=o,Cd.green=void 0):(Cd.maximumGreen=void 0,Cd.green=0),i>0?(Cd.maximumBlue=i,Cd.blue=void 0):(Cd.maximumBlue=void 0,Cd.blue=0),Cd.alpha=n,U.fromRandom(Cd)):new U(r,o,i,n)}function fI(e,t,n){let i=Qn(e,t,n);if(l(i))return v8(i,Qn(e,"colorMode",n)==="random")}function Qct(e){let t=ji(e,"TimeStamp",Fe.kmlgx),n=Qn(t,"when",Fe.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=j.fromIso8601(n),o=new as;return o.addInterval(new wn({start:i,stop:ze.MAXIMUM_VALUE})),o}function Uct(e){let t=ji(e,"TimeSpan",Fe.kmlgx);if(!l(t))return;let n,i=ji(t,"begin",Fe.kmlgx),o=l(i)?j.fromIso8601(i.textContent):void 0,r=ji(t,"end",Fe.kmlgx),s=l(r)?j.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(j.lessThan(s,o)){let a=o;o=s,s=a}n=new as,n.addInterval(new wn({start:o,stop:s}))}else l(o)?(n=new as,n.addInterval(new wn({start:o,stop:ze.MAXIMUM_VALUE}))):l(s)&&(n=new as,n.addInterval(new wn({start:ze.MINIMUM_VALUE,stop:s})));return n}function Eye(){let e=new _c;return e.width=ny,e.height=ny,e.scaleByDistance=new zt(uye,mye,hye,fye),e.pixelOffsetScaleByDistance=new zt(uye,mye,hye,fye),e}function k8(){let e=new uh;return e.outline=!0,e.outlineColor=U.WHITE,e}function Tye(){let e=new dh;return e.translucencyByDistance=new zt(3e6,1,5e6,0),e.pixelOffset=new D(17,0),e.horizontalOrigin=wi.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function Y8(e,t,n,i,o){let r=Qn(e,"href",Fe.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=gi(e,"x",Fe.gx)??0,d=gi(e,"y",Fe.gx)??0;c=Math.min(c/32,7),d=7-Math.min(d/32,7);let u=8*d+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${u}.png`}let s=U8(r,n,i);if(o){let a=Qn(e,"refreshMode",Fe.kml),c=Qn(e,"viewRefreshMode",Fe.kml);a==="onInterval"||a==="onExpire"?xt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&xt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let d=Qn(e,"viewBoundScale",Fe.kml)??1,u=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=Qn(e,"viewFormat",Fe.kml)??u,p=Qn(e,"httpQuery",Fe.kml);l(h)&&s.setQueryParameters(wd(lk(h))),l(p)&&s.setQueryParameters(wd(lk(p)));let g=t._ellipsoid;return H8(s,t.camera,t.canvas,d,t._lastCameraView.bbox,g),s}return s}function kct(e,t,n,i,o){let r=gi(t,"scale",Fe.kml),s=gi(t,"heading",Fe.kml),a=fI(t,"color",Fe.kml),c=ji(t,"Icon",Fe.kml),d=Y8(c,e,i,o,!1);l(c)&&!l(d)&&(d=!1);let u=gi(c,"x",Fe.gx),h=gi(c,"y",Fe.gx),p=gi(c,"w",Fe.gx),g=gi(c,"h",Fe.gx),f=ji(t,"hotSpot",Fe.kml),b=iy(f,"x"),x=iy(f,"y"),I=na(f,"xunits"),_=na(f,"yunits"),E=n.billboard;l(E)||(E=Eye(),n.billboard=E),E.image=d,E.scale=r,E.color=a,(l(u)||l(h)||l(p)||l(g))&&(E.imageSubRegion=new Ke(u,h,p,g)),l(s)&&s!==0&&(E.rotation=Z.toRadians(-s),E.alignedAxis=m.UNIT_Z),r=r??1;let S,R;l(b)&&(I==="pixels"?S=-b*r:I==="insetPixels"?S=(b-ny)*r:I==="fraction"&&(S=-b*ny*r),S+=ny*.5*r),l(x)&&(_==="pixels"?R=x*r:_==="insetPixels"?R=(-x+ny)*r:_==="fraction"&&(R=x*ny*r),R-=ny*.5*r),(l(S)||l(R))&&(E.pixelOffset=new D(S,R))}function ck(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")kct(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=Tye(),n.label=c),c.scale=gi(a,"scale",Fe.kml)??c.scale,c.fillColor=fI(a,"color",Fe.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new Zc,n.polyline=c),c.width=gi(a,"width",Fe.kml),c.material=fI(a,"color",Fe.kml),l(fI(a,"outerColor",Fe.gx))&&xt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(gi(a,"outerWidth",Fe.gx))&&xt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(gi(a,"physicalWidth",Fe.gx))&&xt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(sf(a,"labelVisibility",Fe.gx))&&xt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=k8(),n.polygon=c),c.material=fI(a,"color",Fe.kml)??c.material,c.fill=sf(a,"fill",Fe.kml)??c.fill,c.outline=sf(a,"outline",Fe.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=v8(Qn(a,"bgColor",Fe.kml))??U.WHITE,d=v8(Qn(a,"textColor",Fe.kml))??U.BLACK,u=Qn(a,"text",Fe.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:d,text:u}}else if(a.localName==="ListStyle"){let c=Qn(a,"listItemType",Fe.kml);(c==="radioFolder"||c==="checkOffOnly")&&xt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Yct(e,t,n,i,o){let r=new ur,s,a=-1,c=t.childNodes,d=c.length;for(let h=0;h<d;h++){let p=c[h];(p.localName==="Style"||p.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")ck(e,h,r,i,o);else{let p=rf(h,"Pair",Fe.kml);for(let g=0;g<p.length;g++){let f=p[g],b=Qn(f,"key",Fe.kml);if(b==="normal"){let x=Qn(f,"styleUrl",Fe.kml);if(l(x))s=n.getById(x),l(s)||(s=n.getById(`#${x}`)),l(s)&&r.merge(s);else{let I=ji(f,"Style",Fe.kml);ck(e,I,r,i,o)}}else xt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}let u=Qn(t,"styleUrl",Fe.kml);if(l(u)){let h=u;if(u[0]!=="#"&&u.indexOf("#")!==-1){let p=u.split("#"),g=p[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${p[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Oct(e,t,n){return t.fetchXML().then(function(i){return Sye(e,i,n,t,!0)})}function Sye(e,t,n,i,o,r){let s,a,c,d,u=gye(t,"Style",Fe.kml);if(l(u)){let b=u.length;for(s=0;s<b;s++)d=u[s],a=na(d,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new ur({id:a}),n.add(c),ck(e,d,c,i,r)))}let h=gye(t,"StyleMap",Fe.kml);if(l(h)){let b=h.length;for(s=0;s<b;s++){let x=h[s];if(a=na(x,"id"),l(a)){let I=rf(x,"Pair",Fe.kml);for(let _=0;_<I.length;_++){let E=I[_],S=Qn(E,"key",Fe.kml);if(S==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let R=Qn(E,"styleUrl",Fe.kml);if(l(R)){R[0]!=="#"&&(R=`#${R}`),o&&l(i)&&(R=i.getUrlComponent()+R);let G=n.getById(R);l(G)&&c.merge(G)}else d=ji(E,"Style",Fe.kml),ck(e,d,c,i,r)}}else xt(`kml-styleMap-${S}`,`KML - Unsupported StyleMap key: ${S}`)}}}}let p=[],g=t.getElementsByTagName("styleUrl"),f=g.length;for(s=0;s<f;s++){let b=g[s].textContent;if(b[0]!=="#"){let x=b.split("#");if(x.length===2){let I=x[0],_=i.getDerivedResource({url:I});p.push(Oct(e,_,n))}}}return p}function O8(e,t,n){let i=new Ig(e,t.id,["position"]),o=new up(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new Zc,t.polyline.positions=new xg([i,o])}function Lye(e,t){return!l(e)&&!l(t)||e==="clampToGround"?et.CLAMP_TO_GROUND:e==="relativeToGround"?et.RELATIVE_TO_GROUND:e==="absolute"?et.NONE:t==="clampToSeaFloor"?(xt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),et.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(xt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),et.RELATIVE_TO_GROUND):(l(e)?xt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):xt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),et.CLAMP_TO_GROUND)}function Hct(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new up(e))}function zct(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function uk(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():Tye(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():Eye(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(U.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new D(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function Rye(e,t){let n=e.path;l(n)||(n=new mA,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Kct(e,t,n,i,o){let r=Qn(n,"coordinates",Fe.kml),s=Qn(n,"altitudeMode",Fe.kml),a=Qn(n,"altitudeMode",Fe.gx),c=sf(n,"extrude",Fe.kml),d=e._ellipsoid,u=dk(r,d);return i.position=u,uk(e,i,o,Lye(s,a)),c&&$F(s,a)&&O8(t,i,o),!0}function bye(e,t,n,i,o){let r=ji(n,"coordinates",Fe.kml),s=Qn(n,"altitudeMode",Fe.kml),a=Qn(n,"altitudeMode",Fe.gx),c=sf(n,"extrude",Fe.kml),d=sf(n,"tessellate",Fe.kml),u=$F(s,a),h=gi(n,"drawOrder",Fe.gx),p=e._ellipsoid,g=ak(r,p),f=o.polyline;if(u&&c){let b=new hA;i.wall=b,b.positions=g;let x=o.polygon;l(x)&&(b.fill=x.fill,b.material=x.material),b.outline=!0,l(f)?(b.outlineColor=l(f.material)?f.material.color:U.WHITE,b.outlineWidth=f.width):l(x)&&(b.outlineColor=l(x.material)?x.material.color:U.WHITE)}else if(e._clampToGround&&!u&&d){let b=new Zc;b.clampToGround=!0,i.polyline=b,b.positions=g,l(f)?(b.material=l(f.material)?f.material.color.getValue(ze.MINIMUM_VALUE):U.WHITE,b.width=f.width??1):(b.material=U.WHITE,b.width=1),b.zIndex=h}else l(h)&&xt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!d&&xt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),f=l(f)?f.clone():new Zc,i.polyline=f,f.positions=zct(g,s,a,p),(!d||u)&&(f.arcType=dn.NONE);return!0}function Jct(e,t,n,i,o){let r=ji(n,"outerBoundaryIs",Fe.kml),s=ji(r,"LinearRing",Fe.kml),a=ji(s,"coordinates",Fe.kml),c=e._ellipsoid,d=ak(a,c),u=sf(n,"extrude",Fe.kml),h=Qn(n,"altitudeMode",Fe.kml),p=Qn(n,"altitudeMode",Fe.gx),g=$F(h,p),f=l(o.polygon)?o.polygon.clone():k8(),b=o.polyline;if(l(b)&&(f.outlineColor=l(b.material)?b.material.color:U.WHITE,f.outlineWidth=b.width),i.polygon=f,g?(f.perPositionHeight=!0,f.extrudedHeight=u?0:void 0):e._clampToGround||(f.height=0),l(d)){let x=new lc(d),I=rf(n,"innerBoundaryIs",Fe.kml);for(let _=0;_<I.length;_++){s=rf(I[_],"LinearRing",Fe.kml);for(let E=0;E<s.length;E++)a=ji(s[E],"coordinates",Fe.kml),d=ak(a,c),l(d)&&x.holes.push(new lc(d))}f.hierarchy=x}return!0}function jct(e,t,n,i,o){let r=Qn(n,"altitudeMode",Fe.kml),s=Qn(n,"altitudeMode",Fe.gx),a=rf(n,"coord",Fe.gx),c=rf(n,"angles",Fe.gx),d=rf(n,"when",Fe.kml),u=sf(n,"extrude",Fe.kml),h=$F(r,s),p=e._ellipsoid;c.length>0&&xt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,d.length),f=[],b=[];for(let I=0;I<g;I++){let _=dk(a[I].textContent,p);f.push(_),b.push(j.fromIso8601(d[I].textContent))}let x=new Oa;return x.addSamples(b,f),i.position=x,uk(e,i,o,Lye(r,s)),Rye(i,o),i.availability=new as,d.length>0&&i.availability.addInterval(new wn({start:b[0],stop:b[b.length-1]})),h&&u&&O8(t,i,o),!0}function yye(e,t,n,i,o,r,s,a,c){let d=e[0],u=e[e.length-1],h=new Oa;h.addSamples(e,t),n.intervals.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c,data:Hct(h,s,a)})),i.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c,data:r}))}function qct(e,t,n,i,o){let r=sf(n,"interpolate",Fe.gx),s=rf(n,"Track",Fe.gx),a,c,d,u=!1,h=new Eg,p=new as,g=new ka,f=e._ellipsoid;for(let b=0,x=s.length;b<x;b++){let I=s[b],_=rf(I,"when",Fe.kml),E=rf(I,"coord",Fe.gx),S=Qn(I,"altitudeMode",Fe.kml),R=Qn(I,"altitudeMode",Fe.gx),G=$F(S,R),B=sf(I,"extrude",Fe.kml),w=Math.min(E.length,_.length),F=[];a=[];for(let P=0;P<w;P++){let A=dk(E[P].textContent,f);F.push(A),a.push(j.fromIso8601(_[P].textContent))}r&&(l(c)&&yye([c,a[0]],[d,F[0]],g,p,h,!1,"absolute",void 0,!1),c=a[w-1],d=F[F.length-1]),yye(a,F,g,p,h,G&&B,S,R,!0),u=u||G&&B}return i.availability=p,i.position=g,uk(e,i,o),Rye(i,o),u&&(O8(t,i,o),i.polyline.show=h),!0}var Vye={Point:Kct,LineString:bye,LinearRing:bye,Polygon:Jct,Track:jct,MultiTrack:qct,MultiGeometry:$ct,Model:elt};function $ct(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,d=s.length;c<d;c++){let u=s.item(c),h=Vye[u.localName];if(l(h)){let p=_ye(u,t,r);p.parent=i,p.name=i.name,p.availability=i.availability,p.description=i.description,p.kml=i.kml,h(e,t,u,p,o)&&(a=!0)}}return a}function elt(e,t,n,i,o){return xt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function tlt(e,t){let n=ji(e,"ExtendedData",Fe.kml);if(!l(n))return;l(ji(n,"SchemaData",Fe.kml))&&xt("kml-schemaData","KML - SchemaData is unsupported"),l(na(n,"xmlns:prefix"))&&xt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=rf(n,"Data",Fe.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=na(a,"name");l(c)&&(i[c]={displayName:Qn(a,"displayName",Fe.kml),value:Qn(a,"value",Fe.kml)})}}t.kml.extendedData=i}var Vo;typeof document<"u"&&(Vo=document.createElement("div"));function nlt(e,t,n,i,o){let r,s,a,c=t.kml,d=c.extendedData,u=Qn(e,"description",Fe.kml),h=t.balloonStyle??n.balloonStyle,p=U.WHITE,g=U.BLACK,f=u;l(h)&&(p=h.bgColor??U.WHITE,g=h.textColor??U.BLACK,f=h.text??u);let b;if(l(f)){if(f=f.replace("$[name]",t.name??""),f=f.replace("$[description]",u??""),f=f.replace("$[address]",c.address??""),f=f.replace("$[Snippet]",c.snippet??""),f=f.replace("$[id]",t.id),f=f.replace("$[geDirections]",""),l(d)){let _=f.match(/\$\[.+?\]/g);if(_!==null)for(r=0;r<_.length;r++){let E=_[r],S=E.substr(2,E.length-3),R=/\/displayName$/.test(S);S=S.replace(/\/displayName$/,""),b=d[S],l(b)&&(b=R?b.displayName:b.value),l(b)&&(f=f.replace(E,b??""))}}}else if(l(d)&&(a=Object.keys(d),a.length>0)){for(f='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],b=d[s],f+=`<tr><th>${b.displayName??s}</th><td>${b.value??""}</td></tr>`;f+="</tbody></table>"}if(!l(f))return;f=Pct.link(f),Vo.innerHTML=f;let x=Vo.querySelectorAll("a");for(r=0;r<x.length;r++)x[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(gu(Vo,"a","href",i),gu(Vo,"link","href",i),gu(Vo,"area","href",i),gu(Vo,"img","src",i),gu(Vo,"iframe","src",i),gu(Vo,"video","src",i),gu(Vo,"audio","src",i),gu(Vo,"source","src",i),gu(Vo,"track","src",i),gu(Vo,"input","src",i),gu(Vo,"embed","src",i),gu(Vo,"script","src",i),gu(Vo,"video","poster",i)),bu(Vo,"a","href",o),bu(Vo,"link","href",o),bu(Vo,"area","href",o),bu(Vo,"img","src",o),bu(Vo,"iframe","src",o),bu(Vo,"video","src",o),bu(Vo,"audio","src",o),bu(Vo,"source","src",o),bu(Vo,"track","src",o),bu(Vo,"input","src",o),bu(Vo,"embed","src",o),bu(Vo,"script","src",o),bu(Vo,"video","poster",o);let I='<div class="cesium-infoBox-description-lighter" style="';I+="overflow:auto;",I+="word-wrap:break-word;",I+=`background-color:${p.toCssColorString()};`,I+=`color:${g.toCssColorString()};`,I+='">',I+=`${Vo.innerHTML}</div>`,Vo.innerHTML="",t.description=I}function mk(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=_ye(t,i,n.context),c=a.kml,d=Yct(e,t,n.styleCollection,r,s),u=Qn(t,"name",Fe.kml);a.name=u,a.parent=o;let h=Uct(t);l(h)||(h=Qct(t)),a.availability=h,K8(a);function p(E){return E?E.show&&p(E.parent):!0}let g=sf(t,"visibility",Fe.kml);a.show=p(o)&&(g??!0);let f=ji(t,"author",Fe.atom),b=c.author;b.name=Qn(f,"name",Fe.atom),b.uri=Qn(f,"uri",Fe.atom),b.email=Qn(f,"email",Fe.atom);let x=ji(t,"link",Fe.atom),I=c.link;I.href=na(x,"href"),I.hreflang=na(x,"hreflang"),I.rel=na(x,"rel"),I.type=na(x,"type"),I.title=na(x,"title"),I.length=na(x,"length"),c.address=Qn(t,"address",Fe.kml),c.phoneNumber=Qn(t,"phoneNumber",Fe.kml),c.snippet=Qn(t,"Snippet",Fe.kml),tlt(t,a),nlt(t,a,d,s,r);let _=e._ellipsoid;return Bye(t,a,_),Zye(t,a,_),l(ji(t,"Region",Fe.kml))&&xt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:d}}function Gye(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function ilt(e,t,n,i){let o=mk(e,t,n),r=ke(n);r.parentEntity=o.entity,Gye(e,t,r,i)}function olt(e,t,n,i){let o=mk(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let d=0,u=c.length;d<u&&!a;d++){let h=c.item(d),p=Vye[h.localName];l(p)&&(p(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),uk(e,r,s))}var rlt={FlyTo:clt,Wait:alt,SoundCue:F8,AnimatedUpdate:F8,TourControl:F8};function slt(e,t,n,i){let o=Qn(t,"name",Fe.kml),r=na(t,"id"),s=new zF(o,r),a=ji(t,"Playlist",Fe.gx);if(a){let c=e._ellipsoid,d=a.childNodes;for(let u=0;u<d.length;u++){let h=d[u];if(h.localName){let p=rlt[h.localName];p?p(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function F8(e,t){xt(`KML Tour unsupported node ${t.localName}`)}function alt(e,t){let n=gi(t,"duration",Fe.gx);e.addPlaylistEntry(new jF(n))}function clt(e,t,n){let i=gi(t,"duration",Fe.gx),o=Qn(t,"flyToMode",Fe.gx),r={kml:{}};Bye(t,r,n),Zye(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new JF(i,o,s);e.addPlaylistEntry(a)}function Zye(e,t,n){let i=ji(e,"Camera",Fe.kml);if(l(i)){let o=gi(i,"longitude",Fe.kml)??0,r=gi(i,"latitude",Fe.kml)??0,s=gi(i,"altitude",Fe.kml)??0,a=gi(i,"heading",Fe.kml)??0,c=gi(i,"tilt",Fe.kml)??0,d=gi(i,"roll",Fe.kml)??0,u=m.fromDegrees(o,r,s,n),h=ic.fromDegrees(a,c-90,d);t.kml.camera=new _F(u,h)}}function Bye(e,t,n){let i=ji(e,"LookAt",Fe.kml);if(l(i)){let o=gi(i,"longitude",Fe.kml)??0,r=gi(i,"latitude",Fe.kml)??0,s=gi(i,"altitude",Fe.kml)??0,a=gi(i,"heading",Fe.kml),c=gi(i,"tilt",Fe.kml),d=gi(i,"range",Fe.kml)??0;c=Z.toRadians(c??0),a=Z.toRadians(a??0);let u=new Vm(a,c-Z.PI_OVER_TWO,d),h=m.fromDegrees(o,r,s,n);t.kml.lookAt=new HF(h,u)}}function llt(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=ji(t,"Icon",Fe.kml),c=Y8(a,e,r,s,!1);if(!l(c))return;let d=document.createElement("img");e._screenOverlays.push(d),d.src=c.url,d.onload=function(){let u=["position: absolute"],h=ji(t,"screenXY",Fe.kml),p=ji(t,"overlayXY",Fe.kml),g=ji(t,"size",Fe.kml),f,b,x,I,_,E;l(g)&&(f=iy(g,"x"),b=iy(g,"y"),x=na(g,"xunits"),I=na(g,"yunits"),l(f)&&f!==-1&&f!==0&&(x==="fraction"?_=`width: ${Math.floor(f*100)}%`:x==="pixels"&&(_=`width: ${f}px`),u.push(_)),l(b)&&b!==-1&&b!==0&&(I==="fraction"?E=`height: ${Math.floor(b*100)}%`:I==="pixels"&&(E=`height: ${b}px`),u.push(E))),d.style=u.join(";");let S=0,R=d.height;l(p)&&(f=iy(p,"x"),b=iy(p,"y"),x=na(p,"xunits"),I=na(p,"yunits"),l(f)&&(x==="fraction"?S=f*d.width:(x==="pixels"||x==="insetPixels")&&(S=f)),l(b)&&(I==="fraction"?R=b*d.height:(I==="pixels"||I==="insetPixels")&&(R=b))),l(h)&&(f=iy(h,"x"),b=iy(h,"y"),x=na(h,"xunits"),I=na(h,"yunits"),l(f)&&(x==="fraction"?_=`left: calc(${Math.floor(f*100)}% - ${S}px)`:x==="pixels"?_=`left: ${f-S}px`:x==="insetPixels"&&(_=`right: ${f-S}px`),u.push(_)),l(b)&&(I==="fraction"?E=`bottom: calc(${Math.floor(b*100)}% - ${R}px)`:I==="pixels"?E=`bottom: ${b-R}px`:I==="insetPixels"&&(E=`top: ${b-R}px`),u.push(E))),d.style=u.join(";")},o.appendChild(d)}function dlt(e,t,n,i){let r=mk(e,t,n).entity,s,a=!1,c=e._ellipsoid,d=ak(ji(t,"LatLonQuad",Fe.gx),c),u=gi(t,"drawOrder",Fe.kml);if(l(d))s=k8(),s.hierarchy=new lc(d),s.zIndex=u,r.polygon=s,a=!0;else{s=new mh,s.zIndex=u,r.rectangle=s;let f=ji(t,"LatLonBox",Fe.kml);if(l(f)){let b=gi(f,"west",Fe.kml),x=gi(f,"south",Fe.kml),I=gi(f,"east",Fe.kml),_=gi(f,"north",Fe.kml);l(b)&&(b=Z.negativePiToPi(Z.toRadians(b))),l(x)&&(x=Z.clampToLatitudeRange(Z.toRadians(x))),l(I)&&(I=Z.negativePiToPi(Z.toRadians(I))),l(_)&&(_=Z.clampToLatitudeRange(Z.toRadians(_))),s.coordinates=new le(b,x,I,_);let E=gi(f,"rotation",Fe.kml);if(l(E)){let S=Z.toRadians(E);s.rotation=S,s.stRotation=S}}}let h=ji(t,"Icon",Fe.kml),p=Y8(h,e,n.sourceResource,n.uriResolver,!0);if(l(p)){a&&xt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let f=gi(h,"x",Fe.gx),b=gi(h,"y",Fe.gx),x=gi(h,"w",Fe.gx),I=gi(h,"h",Fe.gx);(l(f)||l(b)||l(x)||l(I))&&xt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=p,s.material.color=fI(t,"color",Fe.kml),s.material.transparent=!0}else s.material=fI(t,"color",Fe.kml);let g=Qn(t,"altitudeMode",Fe.kml);l(g)?g==="absolute"?(s.height=gi(t,"altitude",Fe.kml),s.zIndex=void 0):g!=="clampToGround"&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=Qn(t,"altitudeMode",Fe.gx),g==="relativeToSeaFloor"?(xt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=gi(t,"altitude",Fe.kml),s.zIndex=void 0):g==="clampToSeaFloor"?xt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function wye(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),xt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var oy={INTERVAL:0,EXPIRE:1,STOP:2};function lk(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var ult=new le,OS=new ge,P8=new D,mlt=new m;function H8(e,t,n,i,o,r){function s(d){return d<-Z.PI_OVER_TWO?-Z.PI_OVER_TWO:d>Z.PI_OVER_TWO?Z.PI_OVER_TWO:d}function a(d){return d>Z.PI?d-Z.TWO_PI:d<-Z.PI?d+Z.TWO_PI:d}let c=vy(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==re.MORPHING){let d,u;if(o=o??ult,l(n)&&(P8.x=n.clientWidth*.5,P8.y=n.clientHeight*.5,d=t.pickEllipsoid(P8,r,mlt)),l(d)?u=r.cartesianToCartographic(d,OS):(u=le.center(o,OS),d=r.cartographicToCartesian(u)),l(i)&&!Z.equalsEpsilon(i,1,Z.EPSILON9)){let I=o.width*i*.5,_=o.height*i*.5;o=new le(a(u.longitude-I),s(u.latitude-_),a(u.longitude+I),s(u.latitude+_))}c=c.replace("[bboxWest]",Z.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",Z.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",Z.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",Z.toDegrees(o.north).toString());let h=Z.toDegrees(u.longitude).toString(),p=Z.toDegrees(u.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",p),c=c.replace("[lookatTilt]",Z.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",Z.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",m.distance(t.positionWC,d)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",p),c=c.replace("[lookatTerrainAlt]",u.height.toString()),r.cartesianToCartographic(t.positionWC,OS),c=c.replace("[cameraLon]",Z.toDegrees(OS.longitude).toString()),c=c.replace("[cameraLat]",Z.toDegrees(OS.latitude).toString()),c=c.replace("[cameraAlt]",Z.toDegrees(OS.height).toString());let g=t.frustum,f=g.aspectRatio,b="",x="";if(l(f)){let I=Z.toDegrees(g.fov);f>1?(b=I,x=I/f):(x=I,b=I*f)}c=c.replace("[horizFov]",b.toString()),c=c.replace("[vertFov]",x.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(wd(c))}function hlt(e,t,n,i){let r=mk(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=ji(t,"Link",Fe.kml);if(l(c)||(c=ji(t,"Url",Fe.kml)),l(c)){let d=Qn(c,"href",Fe.kml),u,h;if(l(d)){let p=d;if(d=U8(d,s,n.uriResolver),/^data:/.test(d.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(p=s.getDerivedResource({url:p}));else{if(p=d.clone(),u=Qn(c,"viewRefreshMode",Fe.kml),u==="onRegion"){xt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=Qn(c,"viewBoundScale",Fe.kml)??1;let x=u==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",I=Qn(c,"viewFormat",Fe.kml)??x,_=Qn(c,"httpQuery",Fe.kml);l(I)&&d.setQueryParameters(wd(lk(I))),l(_)&&d.setQueryParameters(wd(lk(_)));let E=e._ellipsoid;H8(d,e.camera,e.canvas,h,e._lastCameraView.bbox,E)}let g={sourceUri:p,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},f=new Ca,b=z8(e,f,d,g).then(function(x){let I=e._entityCollection,_=f.values;I.suspendEvents();for(let R=0;R<_.length;R++){let G=_[R];l(G.parent)||(G.parent=r,K8(G)),I.add(G)}I.resumeEvents();let E=Qn(c,"refreshMode",Fe.kml),S=gi(c,"refreshInterval",Fe.kml)??0;if(E==="onInterval"&&S>0||E==="onExpire"||u==="onStop"){let R=ji(x,"NetworkLinkControl",Fe.kml),G=l(R),B=j.now(),w={id:qn(),href:d,cookie:{},lastUpdated:B,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:B},F=0;if(G&&(w.cookie=wd(Qn(R,"cookie",Fe.kml)??""),F=gi(R,"minRefreshPeriod",Fe.kml)??0),E==="onInterval")G&&(S=Math.max(F,S)),w.refreshMode=oy.INTERVAL,w.time=S;else if(E==="onExpire"){let P;if(G&&(P=Qn(R,"expires",Fe.kml)),l(P))try{let A=j.fromIso8601(P),T=j.secondsDifference(A,B);T>0&&T<F&&j.addSeconds(B,F,A),w.refreshMode=oy.EXPIRE,w.time=A}catch{xt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else xt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(w.refreshMode=oy.STOP,w.time=gi(c,"viewRefreshTime",Fe.kml)??0):xt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(w.refreshMode)&&e._networkLinks.set(w.id,w)}}).catch(function(x){xt(`An error occured during loading ${d.url}`),e._error.raiseEvent(e,x)});i.addPromise(b)}}}function flt(e,t,n,i){let o=Q8[t.localName];return l(o)?o(e,t,n,i):wye(e,t,n,i)}function N8(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:ji(a,"Document",Fe.kml),d=Qn(c,"name",Fe.kml);l(d)||(d=yg(i.getUrlComponent())),l(e._name)||(e._name=d);let u=new yu._DeferredLoading(e),h=new Ca(e);return Promise.all(Sye(e,n,h,i,!1,o)).then(function(){let p=n.documentElement;if(p.localName==="kml"){let f=p.childNodes;for(let b=0;b<f.length;b++){let x=f[b];if(l(Q8[x.localName])){p=x;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),flt(e,p,g,u),t.resumeEvents(),u.wait().then(function(){return n.documentElement})})}function plt(e,t,n,i,o){let r=hn("ThirdParty/Workers/z-worker-pako.js");wS({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new kS(new Mg(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],d={},u;for(let h=0;h<a.length;h++){let p=a[h];p.directory||(/\.kml$/i.test(p.filename)&&(!l(u)||!/\//i.test(p.filename))?(l(u)&&c.push(W8(u,d)),u=p):c.push(W8(p,d)))}return l(u)&&c.push(Dct(u,d)),Promise.all(c).then(function(){if(s.close(),!l(d.kml))throw new de("KMZ file does not contain a KML document.");return d.keys=Object.keys(d),N8(e,t,d.kml,i,d,o)})})}function z8(e,t,n,i){i=i??Y.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof Ve){n=Ve.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let d=e._resourceCredits,u=n.credits;if(l(u)){let h=u.length;for(let p=0;p<h;p++)d.push(u[p])}}else o=o??Ve.DEFAULT.clone();return o=Ve.createIfNeeded(o),l(a)&&(a=Dn(a)),Promise.resolve(c).then(function(d){return d instanceof Blob?vct(d).then(function(u){return u?plt(e,t,d,o,a):Nct(d).then(function(h){h=xye(h),h=Iye(h);let p,g;try{p=D8.parseFromString(h,"application/xml")}catch(f){g=f.toString()}if(l(g)||p.body||p.documentElement.tagName==="parsererror"){let f=l(g)?g:p.documentElement.firstChild.nodeValue;throw f||(f=p.body.innerText),new de(f)}return N8(e,t,p,o,r,a,s)})}):N8(e,t,d,o,r,a,s)}).catch(function(d){return e._error.raiseEvent(e,d),console.log(d),Promise.reject(d)})}function yu(e){e=e??Y.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new Ce,this._error=new Ce,this._loading=new Ce,this._refresh=new Ce,this._unsupportedNode=new Ce,this._clock=void 0,this._entityCollection=new Ca(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new Bg,this._networkLinks=new Bt,this._entityCluster=new ou,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?m.clone(t.positionWC):void 0,direction:l(t)?m.clone(t.directionWC):void 0,up:l(t)?m.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():le.clone(le.MAX_VALUE)},this._ellipsoid=e.ellipsoid??ie.default;let i=e.credit;typeof i=="string"&&(i=new Gt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}yu.load=function(e,t){return t=t??Y.EMPTY_OBJECT,new yu(t).load(e,t)};Object.defineProperties(yu.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});yu.prototype.load=function(e,t){t=t??Y.EMPTY_OBJECT,cs.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return z8(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=j.equals(s,ze.MINIMUM_VALUE),d=j.equals(a,ze.MAXIMUM_VALUE);if(!c||!d){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=j.fromDate(h)),d&&(h=new Date,h.setHours(24,0,0,0),a=j.fromDate(h)),o=new Oh,o.startTime=s,o.stopTime=a,o.currentTime=j.clone(s),o.clockRange=ls.LOOP_STOP,o.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(a,s)/60,1),31556900))}let u=!1;return o!==i._clock&&(i._clock=o,u=!0),n!==i._name&&(u=!0),u&&i._changed.raiseEvent(i),cs.setLoading(i,!1),i}).catch(function(o){return cs.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};yu.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function K8(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function Alt(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=ji(r,"NetworkLinkControl",Fe.kml),c=l(a),d=0;if(c){if(l(ji(a,"Update",Fe.kml))){xt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=wd(Qn(a,"cookie",Fe.kml)??""),d=gi(a,"minRefreshPeriod",Fe.kml)??0}let u=j.now(),h=t.refreshMode;if(h===oy.INTERVAL)l(a)&&(t.time=Math.max(d,t.time));else if(h===oy.EXPIRE){let B;if(l(a)&&(B=Qn(a,"expires",Fe.kml)),l(B))try{let w=j.fromIso8601(B),F=j.secondsDifference(w,u);F>0&&F<d&&j.addSeconds(u,d,w),t.time=w}catch{xt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else xt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let p=t.entity,g=e._entityCollection,f=n.values;function b(B){g.remove(B);let w=B._children,F=w.length;for(let P=0;P<F;++P)b(w[P])}g.suspendEvents();let x=g.values.slice(),I;for(I=0;I<x.length;++I){let B=x[I];B.parent===p&&(B.parent=void 0,b(B))}for(g.resumeEvents(),g.suspendEvents(),I=0;I<f.length;I++){let B=f[I];l(B.parent)||(B.parent=p,K8(B)),g.add(B)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=u;let _=g.computeAvailability(),E=_.start,S=_.stop,R=j.equals(E,ze.MINIMUM_VALUE),G=j.equals(S,ze.MAXIMUM_VALUE);if(!R||!G){let B=e._clock;(B.startTime!==E||B.stopTime!==S)&&(B.startTime=E,B.stopTime=S,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var M8=new Bt;yu.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=j.now(),i=this;M8.removeAll();function o(u){let h=u._children,p=h.length;for(let g=0;g<p;++g){let f=h[g];M8.set(f.id,f),o(f)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,Z.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,Z.EPSILON7)&&a.upWC.equalsEpsilon(s.up,Z.EPSILON7))&&(s.position=m.clone(a.positionWC),s.direction=m.clone(a.directionWC),s.up=m.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new Bt,d=!1;return t.values.forEach(function(u){let h=u.entity;if(!M8.contains(h.id)){if(!u.updating){let p=!1;if(u.refreshMode===oy.INTERVAL?j.secondsDifference(n,u.lastUpdated)>u.time&&(p=!0):u.refreshMode===oy.EXPIRE?j.greaterThan(n,u.time)&&(p=!0):u.refreshMode===oy.STOP&&(r&&(u.needsUpdate=!0,u.cameraUpdateTime=n),u.needsUpdate&&j.secondsDifference(n,u.cameraUpdateTime)>=u.time&&(p=!0)),p){o(h),u.updating=!0;let g=new Ca,f=u.href.clone();f.setQueryParameters(u.cookie);let b=i._ellipsoid??ie.default;H8(f,i.camera,i.canvas,u.viewBoundScale,s.bbox,b),z8(i,g,f,{context:h.id}).then(Alt(i,u,g,c,f)).catch(function(x){let I=`NetworkLink ${u.href} refresh failed: ${x}`;console.log(I),i._error.raiseEvent(i,I)}),d=!0}}c.set(u.id,u)}}),d&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function glt(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}yu._DeferredLoading=_p;yu._getTimestamp=Fi;var pI=yu;var VRi=y(C(),1);function eP(){Ae.throwInstantiationError()}eP.prototype.update=Ae.throwInstantiationError;eP.prototype.getBoundingSphere=Ae.throwInstantiationError;eP.prototype.isDestroyed=Ae.throwInstantiationError;eP.prototype.destroy=Ae.throwInstantiationError;var J8=eP;var rVi=y(C(),1);var j8=32,blt="http://www.opengis.net/kml/2.2",cf="http://www.google.com/kml/ext/2.2",ylt="http://www.w3.org/2000/xmlns/";function hk(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Clt=/^data:image\/([^,;]+)/;hk.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof Ve){if(e=Ve.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Clt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function xlt(e,t){return function(n){e._files[t]=n}}hk.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new de("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(xlt(this,r))}return o};Object.defineProperties(hk.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function fk(e){this._time=e}fk.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};fk.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return gI(n)};fk.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function q8(){this._ids={},this._styles={},this._count=0}q8.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};q8.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function Fye(){this._ids={}}Fye.prototype.get=function(e){if(!l(e))return this.get(qn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function $8(e){e=e??Y.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=$8._createState(e),o=t.values.filter(function(d){return!l(d.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(ylt,"xmlns:gx",cf);let a=r.createElement("Document");s.appendChild(a),Mye(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let u=new XMLSerializer().serializeToString(i.kmlDoc);return n?Ilt(u,c.files):{kml:u,externalFiles:c.files}})}function Ilt(e,t){let n=hn("ThirdParty/Workers/z-worker-pako.js");wS({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new PF,o=new ok(i);return o.add("doc.kml",new WU(e)).then(function(){let r=Object.keys(t);return Pye(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function Pye(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new Mg(n[o])).then(function(){return Pye(e,t,n,i+1)})}$8._createState=function(e){let t=e.entities,n=new q8,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===ze.MINIMUM_VALUE?r.stop===ze.MAXIMUM_VALUE?r=new wn:j.addSeconds(r.stop,-10*s,r.start):r.stop===ze.MAXIMUM_VALUE&&j.addSeconds(r.start,10*s,r.stop);let a=new hk(e.modelCallback);return{kmlDoc:document.implementation.createDocument(blt,"kml"),ellipsoid:e.ellipsoid??ie.default,idManager:new Fye,styleCache:n,externalFileHandler:a,time:o,valueGetter:new fk(o),sampleDuration:s,defaultAvailability:new as([r])}};function Mye(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,d,u;for(let h=0;h<a;++h){let p=n[h];c=[],d=[],u=[],_lt(e,p,d,u),Elt(e,p.polyline,d,u),Wye(e,p.rectangle,d,u,c),Wye(e,p.polygon,d,u,c),Rlt(e,p,p.model,d,u);let g,f=p.availability;l(f)&&(g=i.createElement("TimeSpan"),j.equals(f.start,ze.MINIMUM_VALUE)||g.appendChild(In(i,"begin",j.toIso8601(f.start))),j.equals(f.stop,ze.MAXIMUM_VALUE)||g.appendChild(In(i,"end",j.toIso8601(f.stop))));for(let I=0;I<c.length;++I){let _=c[I];_.setAttribute("id",s.get(p.id)),_.appendChild(In(i,"name",p.name)),_.appendChild(In(i,"visibility",p.show)),_.appendChild(In(i,"description",p.description)),l(g)&&_.appendChild(g),t.appendChild(_)}let b=d.length;if(b>0){let I=i.createElement("Placemark");I.setAttribute("id",s.get(p.id));let _=p.name,E=p.label;if(l(E)){let R=i.createElement("LabelStyle"),G=r.get(E.text);_=l(G)&&G.length>0?G:_;let B=r.getColor(E.fillColor);l(B)&&(R.appendChild(In(i,"color",B)),R.appendChild(In(i,"colorMode","normal")));let w=r.get(E.scale);l(w)&&R.appendChild(In(i,"scale",w)),u.push(R)}I.appendChild(In(i,"name",_)),I.appendChild(In(i,"visibility",p.show)),I.appendChild(In(i,"description",p.description)),l(g)&&I.appendChild(g),t.appendChild(I);let S=u.length;if(S>0){let R=i.createElement("Style");for(let G=0;G<S;++G)R.appendChild(u[G]);I.appendChild(In(i,"styleUrl",o.get(R)))}if(d.length===1)I.appendChild(d[0]);else if(d.length>1){let R=i.createElement("MultiGeometry");for(let G=0;G<b;++G)R.appendChild(d[G]);I.appendChild(R)}}let x=p._children;if(x.length>0){let I=i.createElement("Folder");I.setAttribute("id",s.get(p.id)),I.appendChild(In(i,"name",p.name)),I.appendChild(In(i,"visibility",p.show)),I.appendChild(In(i,"description",p.description)),t.appendChild(I),Mye(e,I,x)}}}var xd=new m,Ml=new ge,af=new j;function _lt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){vye(e,t,a,n,i);return}s.get(c,void 0,xd);let d=In(o,"coordinates",AI(xd,r)),u=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(bI(e,a.heightReference)),u.appendChild(h),u.appendChild(d),n.push(u);let p=a instanceof _c?Dye(e,a):Nye(e,a);i.push(p)}function vye(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,d=t.position,u=!0;d instanceof ka?(c=d.intervals,u=!1):c=t.availability??e.defaultAvailability;let h=n instanceof uA,p,g,f,b=[];for(p=0;p<c.length;++p){let I=c.get(p),_=u?d:I.data,E=r.createElement("altitudeMode");_ instanceof up?(_=_._value,E.appendChild(bI(e,et.CLAMP_TO_GROUND))):l(n)?E.appendChild(bI(e,n.heightReference)):E.appendChild(bI(e,et.NONE));let S=[],R=[];if(_.isConstant){a.get(_,void 0,xd);let B=In(r,"coordinates",AI(xd,s));S.push(j.toIso8601(I.start)),R.push(B),S.push(j.toIso8601(I.stop)),R.push(B)}else if(_ instanceof Oa)for(f=_._property._times,g=0;g<f.length;++g)S.push(j.toIso8601(f[g])),_.getValueInReferenceFrame(f[g],eo.FIXED,xd),R.push(AI(xd,s));else if(_ instanceof cu){f=_._times;let B=_._values;for(g=0;g<f.length;++g)S.push(j.toIso8601(f[g])),m.fromArray(B,g*3,xd),R.push(AI(xd,s))}else{let B=e.sampleDuration;I.start.clone(af),I.isStartIncluded||j.addSeconds(af,B,af);let w=I.stop;for(;j.lessThan(af,w);)_.getValue(af,xd),S.push(j.toIso8601(af)),R.push(AI(xd,s)),j.addSeconds(af,B,af);I.isStopIncluded&&j.equals(af,w)&&(_.getValue(af,xd),S.push(j.toIso8601(af)),R.push(AI(xd,s)))}let G=r.createElementNS(cf,"Track");G.appendChild(E);for(let B=0;B<S.length;++B){let w=In(r,"when",S[B]),F=In(r,"coord",R[B],cf);G.appendChild(w),G.appendChild(F)}h&&G.appendChild(Qye(e,n)),b.push(G)}if(b.length===1)i.push(b[0]);else if(b.length>1){let I=r.createElementNS(cf,"MultiTrack");for(p=0;p<b.length;++p)I.appendChild(b[p]);i.push(I)}if(l(n)&&!h){let I=n instanceof _c?Dye(e,n):Nye(e,n);o.push(I)}let x=t.path;if(l(x)){let I=a.get(x.width),_=x.material;if(l(_)||l(I)){let E=r.createElement("LineStyle");l(I)&&E.appendChild(In(r,"width",I)),e7(e,_,E),o.push(E)}}}function Nye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(In(n,"color",r)),o.appendChild(In(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(In(n,"scale",s/j8)),o}function Dye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let p=n.createElement("Icon");p.appendChild(In(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(p.appendChild(In(n,"x",g.x,cf)),p.appendChild(In(n,"y",g.y,cf)),p.appendChild(In(n,"w",g.width,cf)),p.appendChild(In(n,"h",g.height,cf))),r.appendChild(p)}let a=i.getColor(t.color);l(a)&&(r.appendChild(In(n,"color",a)),r.appendChild(In(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(In(n,"scale",c));let d=i.get(t.pixelOffset);if(l(d)){c=c??1,D.divideByScalar(d,c,d);let p=i.get(t.width,j8),g=i.get(t.height,j8),f=i.get(t.horizontalOrigin,wi.CENTER);f===wi.CENTER?d.x-=p*.5:f===wi.RIGHT&&(d.x-=p);let b=i.get(t.verticalOrigin,kn.CENTER);b===kn.TOP?d.y+=g:b===kn.CENTER&&(d.y+=g*.5);let x=n.createElement("hotSpot");x.setAttribute("x",-d.x),x.setAttribute("y",d.y),x.setAttribute("xunits","pixels"),x.setAttribute("yunits","pixels"),r.appendChild(x)}let u=i.get(t.rotation),h=i.get(t.alignedAxis);return l(u)&&m.equals(m.UNIT_Z,h)&&(u=Z.toDegrees(-u),u===0&&(u=360),r.appendChild(In(n,"heading",u))),r}function Elt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),d=s.get(t.clampToGround,!1),u;d?(a.appendChild(In(o,"tessellate",!0)),u=o.createTextNode("clampToGround")):u=o.createTextNode("absolute"),c.appendChild(u),a.appendChild(c);let h=t.positions,p=s.get(h),g=In(o,"coordinates",AI(p,r));a.appendChild(g);let f=s.get(t.zIndex);d&&l(f)&&a.appendChild(In(o,"drawOrder",f,cf)),n.push(a);let b=o.createElement("LineStyle"),x=s.get(t.width);l(x)&&b.appendChild(In(o,"width",x)),e7(e,t.material,b),i.push(b)}function Tlt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],d=[le.northeast,le.southeast,le.southwest,le.northwest];for(let g=0;g<4;++g)d[g](a,Ml),c.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${r}`);let u=In(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),p=i.createElement("LinearRing");return p.appendChild(u),h.appendChild(p),[h]}function Xye(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let u=0;u<a;++u)ge.fromCartesian(t[u],r,Ml),s.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${i?Ml.height:n}`);let c=In(o,"coordinates",s.join(" ")),d=o.createElement("LinearRing");return d.appendChild(c),d}function Slt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,d=o.get(c),u=Array.isArray(d)?d:d.positions,h=i.createElement("outerBoundaryIs");h.appendChild(Xye(e,u,r,s)),a.push(h);let p=d.holes;if(l(p)){let g=p.length;for(let f=0;f<g;++f){let b=i.createElement("innerBoundaryIs");b.appendChild(Xye(e,p[f].positions,r,s)),a.push(b)}}return a}function Wye(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof mh;if(a&&s.getMaterialType(t.material)==="Image"){Llt(e,t,o);return}let c=r.createElement("Polygon"),d=s.get(t.extrudedHeight,0);d>0&&c.appendChild(In(r,"extrude",!0));let u=a?Tlt(e,t,d):Slt(e,t,d),h=u.length;for(let x=0;x<h;++x)c.appendChild(u[x]);let p=r.createElement("altitudeMode");p.appendChild(bI(e,t.heightReference)),c.appendChild(p),n.push(c);let g=r.createElement("PolyStyle"),f=s.get(t.fill,!1);f&&g.appendChild(In(r,"fill",f)),e7(e,t.material,g);let b=s.get(t.outline,!1);if(b){g.appendChild(In(r,"outline",b));let x=r.createElement("LineStyle"),I=s.get(t.outlineWidth,1);x.appendChild(In(r,"width",I));let _=s.getColor(t.outlineColor,U.BLACK);x.appendChild(In(r,"color",_)),x.appendChild(In(r,"colorMode","normal")),i.push(x)}i.push(g)}function Llt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(bI(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(In(i,"altitude",c));let d=o.get(t.coordinates),u=i.createElement("LatLonBox");u.appendChild(In(i,"north",Z.toDegrees(d.north))),u.appendChild(In(i,"south",Z.toDegrees(d.south))),u.appendChild(In(i,"east",Z.toDegrees(d.east))),u.appendChild(In(i,"west",Z.toDegrees(d.west))),s.appendChild(u);let h=o.get(t.material),p=r.texture(h.image),g=i.createElement("Icon");g.appendChild(In(i,"href",p)),s.appendChild(g);let f=h.color;l(f)&&s.appendChild(In(i,"color",gI(h.color))),n.push(s)}function Qye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let d=n.createElement("scale");d.appendChild(In(n,"x",s)),d.appendChild(In(n,"y",s)),d.appendChild(In(n,"z",s)),r.appendChild(d)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(In(n,"href",c)),r.appendChild(a),r}function Rlt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){vye(e,t,n,i,o);return}let d=Qye(e,n),u=r.createElement("altitudeMode");u.appendChild(bI(e,n.heightReference)),d.appendChild(u),a.get(c,void 0,xd),ge.fromCartesian(xd,s,Ml);let h=r.createElement("Location");h.appendChild(In(r,"longitude",Z.toDegrees(Ml.longitude))),h.appendChild(In(r,"latitude",Z.toDegrees(Ml.latitude))),h.appendChild(In(r,"altitude",Ml.height)),d.appendChild(h),i.push(d)}function e7(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,d;switch(a){case"Image":s=gI(U.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=gI(r.color);break;case"PolylineOutline":s=gI(r.color),c=gI(r.outlineColor),d=r.outlineWidth,n.appendChild(In(i,"outerColor",c,cf)),n.appendChild(In(i,"outerWidth",d,cf));break;case"Stripe":s=gI(r.oddColor);break}l(s)&&(n.appendChild(In(i,"color",s)),n.appendChild(In(i,"colorMode","normal")))}function bI(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,et.NONE),r;switch(o){case et.NONE:r=n.createTextNode("absolute");break;case et.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case et.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function AI(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)ge.fromCartesian(e[o],t,Ml),i.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${Ml.height}`);return i.join(" ")}function In(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function gI(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var t7=$8;var CVi=y(C(),1);var aVi=y(C(),1),yI=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function pk(e){this._context=e}var tP,Vlt=new ot({primitiveType:We.TRIANGLES}),Glt=new xi({color:new U(0,0,0,0)});function Zlt(e,t){return new jr({context:e,colorTextures:[t],destroyAttachments:!1})}function Blt(e,t){return ln.fromCache({context:e,vertexShaderSource:yI,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function wlt(e,t){return(!l(tP)||tP.viewport.width!==e||tP.viewport.height!==t)&&(tP=Qe.fromCache({viewport:new Ke(0,0,e,t)})),tP}pk.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:Blt(o,e.fragmentShaderSource),a=Zlt(o,t),c=wlt(n,i),d=e.uniformMap,u=Glt;u.framebuffer=a,u.renderState=c,u.execute(o);let h=Vlt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=d,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};pk.prototype.isDestroyed=function(){return!1};pk.prototype.destroy=function(){return me(this)};var nP=pk;var DGi=y(C(),1);var IVi=y(C(),1);function Xlt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var Hc=Xlt;var RVi=y(C(),1);function lf(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(lf.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});lf.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function Wlt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}lf.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new Oe({sources:[t]})),typeof n=="string"&&(n=new Oe({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?Wlt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let d=this._context,u=t.createCombinedVertexShader(d),h=n.createCombinedFragmentShader(d),p=new ln({gl:d._gl,logShaderCompilation:d.logShaderCompilation,debugShaders:d.debugShaders,vertexShaderSource:t,vertexShaderText:u,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:p,keyword:a,derivedKeywords:[],count:0},p._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};lf.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){n7(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};lf.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};lf.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new Oe({sources:[r]})),typeof s=="string"&&(s=new Oe({sources:[s]}));let c=this._context,d=r.createCombinedVertexShader(c),u=s.createCombinedFragmentShader(c),h=new ln({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:d,fragmentShaderSource:s,fragmentShaderText:u,attributeLocations:a}),p={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=p,this._shaders[o]=p,h};function n7(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];n7(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}lf.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n7(this,n),--this._numberOfShaders}this._shadersToRelease={}};lf.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};lf.prototype.isDestroyed=function(){return!1};lf.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return me(this)};var iP=lf;var BVi=y(C(),1);function CI(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(CI.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});CI.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};CI.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};CI.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};CI.prototype.isDestroyed=function(){return!1};CI.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return me(this)};var oP=CI;var dGi=y(C(),1);var DVi=y(C(),1);var i7={};function Flt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Plt=32.184,Mlt=2451545;function aCe(e,t){t=j.addSeconds(e,Plt,t);let n=j.totalDays(t)-Mlt;return t=j.addSeconds(t,Flt(n),t),t}var Ak=new j(2451545,0,oi.TAI),vlt=1e3,wm=Z.RADIANS_PER_DEGREE,Cu=Z.RADIANS_PER_ARCSECOND,bc=14959787e4,Uye=new $;function cCe(e,t,n,i,o,r,s){n<0&&(n=-n,o+=Z.PI);let a=e*(1-t),c=i-o,d=o,u=Dlt(r-i,t),h=Nlt(t,0);Olt(c,n,d,Uye);let p=a*(1+t),g=Math.cos(u),f=Math.sin(u),b=1+t*g,x=p/b;return l(s)?(s.x=x*g,s.y=x*f,s.z=0):s=new m(x*g,x*f,0),$.multiplyByVector(Uye,s,s)}function Nlt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function Dlt(e,t){let n=klt(e,t);return Ylt(n,t)}var Qlt=50,Ult=Z.EPSILON8;function klt(e,t){let n=Math.floor(e/Z.TWO_PI);e-=n*Z.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<Qlt&&Math.abs(o-i)>Ult;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*Z.TWO_PI,o}function Ylt(e,t){let n=Math.floor(e/Z.TWO_PI);e-=n*Z.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=Z.zeroToTwoPi(r),e<0&&(r-=Z.TWO_PI),r+=n*Z.TWO_PI,r}function Olt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),d=Math.sin(n);return l(i)?(i[0]=c*o-d*r*s,i[1]=d*o+c*r*s,i[2]=r*a,i[3]=-c*r-d*o*s,i[4]=-d*r+c*o*s,i[5]=o*a,i[6]=d*a,i[7]=-c*a,i[8]=s):i=new $(c*o-d*r*s,-c*r-d*o*s,d*a,d*o+c*r*s,-d*r+c*o*s,-c*a,r*a,o*a,s),i}var Hlt=1.0000010178*bc,zlt=100.46645683*wm,Klt=129597742283429e-5*Cu,kye=16002,Yye=21863,Oye=32004,Hye=10931,zye=14529,Kye=16368,Jye=15318,jye=32794,Jlt=64*1e-7*bc,jlt=-152*1e-7*bc,qlt=62*1e-7*bc,$lt=-8*1e-7*bc,edt=32*1e-7*bc,tdt=-41*1e-7*bc,ndt=19*1e-7*bc,idt=-11*1e-7*bc,odt=-150*1e-7*bc,rdt=-46*1e-7*bc,sdt=68*1e-7*bc,adt=54*1e-7*bc,cdt=14*1e-7*bc,ldt=24*1e-7*bc,ddt=-28*1e-7*bc,udt=22*1e-7*bc,qye=10,$ye=16002,eCe=21863,tCe=10931,nCe=1473,iCe=32004,oCe=4387,rCe=73,mdt=-325*1e-7,hdt=-322*1e-7,fdt=-79*1e-7,pdt=232*1e-7,Adt=-52*1e-7,gdt=97*1e-7,bdt=55*1e-7,ydt=-41*1e-7,Cdt=-105*1e-7,xdt=-137*1e-7,Idt=258*1e-7,_dt=35*1e-7,Edt=-116*1e-7,Tdt=-88*1e-7,Sdt=-112*1e-7,Ldt=-80*1e-7,HS=new j(0,0,oi.TAI);function Rdt(e,t){aCe(e,HS);let i=(HS.dayNumber-Ak.dayNumber+(HS.secondsOfDay-Ak.secondsOfDay)/ai.SECONDS_PER_DAY)/(ai.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=Hlt+Jlt*Math.cos(kye*o)+odt*Math.sin(kye*o)+jlt*Math.cos(Yye*o)+rdt*Math.sin(Yye*o)+qlt*Math.cos(Oye*o)+sdt*Math.sin(Oye*o)+$lt*Math.cos(Hye*o)+adt*Math.sin(Hye*o)+edt*Math.cos(zye*o)+cdt*Math.sin(zye*o)+tdt*Math.cos(Kye*o)+ldt*Math.sin(Kye*o)+ndt*Math.cos(Jye*o)+ddt*Math.sin(Jye*o)+idt*Math.cos(jye*o)+udt*Math.sin(jye*o),s=zlt+Klt*i+mdt*Math.cos(qye*o)+Cdt*Math.sin(qye*o)+hdt*Math.cos($ye*o)+xdt*Math.sin($ye*o)+fdt*Math.cos(eCe*o)+Idt*Math.sin(eCe*o)+pdt*Math.cos(tCe*o)+_dt*Math.sin(tCe*o)+Adt*Math.cos(nCe*o)+Edt*Math.sin(nCe*o)+gdt*Math.cos(iCe*o)+Tdt*Math.sin(iCe*o)+bdt*Math.cos(oCe*o)+Sdt*Math.sin(oCe*o)+ydt*Math.cos(rCe*o)+Ldt*Math.sin(rCe*o),a=.0167086342-.0004203654*i,c=102.93734808*wm+11612.3529*Cu*i,d=469.97289*Cu*i,u=174.87317577*wm-8679.27034*Cu*i;return cCe(r,a,d,c,u,s,t)}function lCe(e,t){aCe(e,HS);let i=(HS.dayNumber-Ak.dayNumber+(HS.secondsOfDay-Ak.secondsOfDay)/ai.SECONDS_PER_DAY)/ai.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,d=5.15668983*wm,u=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*wm,p=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*wm,f=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,b=218.31664563*wm,x=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,I=297.85019547*wm+Cu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),_=93.27209062*wm+Cu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),E=134.96340251*wm+Cu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),S=357.52910918*wm+Cu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),R=310.17137918*wm-Cu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),G=2*I,B=4*I,w=6*I,F=2*E,P=3*E,A=4*E,T=2*_;a+=3400.4*Math.cos(G)-635.6*Math.cos(G-E)-235.6*Math.cos(E)+218.1*Math.cos(G-S)+181*Math.cos(G+E),c+=.014216*Math.cos(G-E)+.008551*Math.cos(G-F)-.001383*Math.cos(E)+.001356*Math.cos(G+E)-.001147*Math.cos(B-P)-914e-6*Math.cos(B-F)+869e-6*Math.cos(G-S-E)-627e-6*Math.cos(G)-394e-6*Math.cos(B-A)+282e-6*Math.cos(G-S-F)-279e-6*Math.cos(I-E)-236e-6*Math.cos(F)+231e-6*Math.cos(B)+229e-6*Math.cos(w-A)-201e-6*Math.cos(F-T),u+=486.26*Math.cos(G-T)-40.13*Math.cos(G)+37.51*Math.cos(T)+25.73*Math.cos(F-T)+19.97*Math.cos(G-S-T),p+=-55609*Math.sin(G-E)-34711*Math.sin(G-F)-9792*Math.sin(E)+9385*Math.sin(B-P)+7505*Math.sin(B-F)+5318*Math.sin(G+E)+3484*Math.sin(B-A)-3417*Math.sin(G-S-E)-2530*Math.sin(w-A)-2376*Math.sin(G)-2075*Math.sin(G-P)-1883*Math.sin(F)-1736*Math.sin(w-5*E)+1626*Math.sin(S)-1370*Math.sin(w-P),f+=-5392*Math.sin(G-T)-540*Math.sin(S)-441*Math.sin(G)+423*Math.sin(T)-288*Math.sin(F-T),x+=-3332.9*Math.sin(G)+1197.4*Math.sin(G-E)-662.5*Math.sin(S)+396.3*Math.sin(E)-218*Math.sin(G-S);let L=2*R,V=3*R;u+=46.997*Math.cos(R)*i-.614*Math.cos(G-T+R)*i+.614*Math.cos(G-T-R)*i-.0297*Math.cos(L)*o-.0335*Math.cos(R)*o+.0012*Math.cos(G-T+L)*o-16e-5*Math.cos(R)*r+4e-5*Math.cos(V)*r+4e-5*Math.cos(L)*r;let W=2.116*Math.sin(R)*i-.111*Math.sin(G-T-R)*i-.0015*Math.sin(R)*o;p+=W,x+=W,f+=-520.77*Math.sin(R)*i+13.66*Math.sin(G-T+R)*i+1.12*Math.sin(G-R)*i-1.06*Math.sin(T-R)*i+.66*Math.sin(L)*o+.371*Math.sin(R)*o-.035*Math.sin(G-T+L)*o-.015*Math.sin(G-T+R)*o+.0014*Math.sin(R)*r-.0011*Math.sin(V)*r-9e-4*Math.sin(L)*r,a*=vlt;let M=d+u*Cu,Q=h+p*Cu,N=b+x*Cu,k=g+f*Cu;return cCe(a,c,M,Q,k,N,t)}var sCe=.012300034,Vdt=sCe/(sCe+1)*-1;function Gdt(e,t){return t=lCe(e,t),m.multiplyByScalar(t,Vdt,t)}var dCe=new $(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),rP=new m;i7.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=j.now()),l(t)||(t=new m),rP=Rdt(e,rP),t=m.negate(rP,t),Gdt(e,rP),m.subtract(t,rP,t),$.multiplyByVector(dCe,t,t),t};i7.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=j.now()),t=lCe(e,t),$.multiplyByVector(dCe,t,t),t};var ry=i7;var YVi=y(C(),1);function Zdt(e){e=e??Y.EMPTY_OBJECT,this.color=U.clone(e.color??U.WHITE),this.intensity=e.intensity??2}var Ng=Zdt;function zS(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Ke,this._viewportCartesian4=new ce,this._viewportDirty=!1,this._viewportOrthographicMatrix=X.clone(X.IDENTITY),this._viewportTransformation=X.clone(X.IDENTITY),this._model=X.clone(X.IDENTITY),this._view=X.clone(X.IDENTITY),this._inverseView=X.clone(X.IDENTITY),this._projection=X.clone(X.IDENTITY),this._infiniteProjection=X.clone(X.IDENTITY),this._entireFrustum=new D,this._currentFrustum=new D,this._frustumPlanes=new ce,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=$.clone(X.IDENTITY),this._view3DDirty=!0,this._view3D=new X,this._inverseView3DDirty=!0,this._inverseView3D=new X,this._inverseModelDirty=!0,this._inverseModel=new X,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new $,this._viewRotation=new $,this._inverseViewRotation=new $,this._viewRotation3D=new $,this._inverseViewRotation3D=new $,this._inverseProjectionDirty=!0,this._inverseProjection=new X,this._modelViewDirty=!0,this._modelView=new X,this._modelView3DDirty=!0,this._modelView3D=new X,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new X,this._inverseModelViewDirty=!0,this._inverseModelView=new X,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new X,this._viewProjectionDirty=!0,this._viewProjection=new X,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new X,this._modelViewProjectionDirty=!0,this._modelViewProjection=new X,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new X,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new X,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new X,this._normalDirty=!0,this._normal=new $,this._normal3DDirty=!0,this._normal3D=new $,this._inverseNormalDirty=!0,this._inverseNormal=new $,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new $,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ni,this._cameraPosition=new m,this._sunPositionWC=new m,this._sunPositionColumbusView=new m,this._sunDirectionWC=new m,this._sunDirectionEC=new m,this._moonDirectionEC=new m,this._lightDirectionWC=new m,this._lightDirectionEC=new m,this._lightColor=new m,this._lightColorHdr=new m,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new m,this._cameraRight=new m,this._cameraUp=new m,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new D,this._eyeEllipsoidNormalEC=new m,this._eyeEllipsoidCurvature=new D,this._modelToEnu=new X,this._enuToModel=new X,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new U,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new m,this._atmosphereRayleighScaleHeight=new m,this._atmosphereMieCoefficient=new m,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(zS.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Ke.equals(e,this._viewport)){Ke.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return mCe(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return mCe(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){X.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,X.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,X.getMatrix3(this.inverseModel,e),$.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return r7(this),this._view3D}},viewRotation:{get:function(){return r7(this),this._viewRotation}},viewRotation3D:{get:function(){return r7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return pCe(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return pCe(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return Qdt(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return Udt(this),this._modelView}},modelView3D:{get:function(){return kdt(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Jdt(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Ydt(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Odt(this),this._inverseModelView3D}},viewProjection:{get:function(){return Hdt(this),this._viewProjection}},inverseViewProjection:{get:function(){return zdt(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Kdt(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return jdt(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return qdt(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return $dt(this),this._modelViewInfiniteProjection}},normal:{get:function(){return eut(this),this._normal}},normal3D:{get:function(){return tut(this),this._normal3D}},inverseNormal:{get:function(){return nut(this),this._inverseNormal}},inverseNormal3D:{get:function(){return iut(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return fCe(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return fCe(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??ie.default}}});function Bdt(e,t){X.clone(t,e._view),X.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function wdt(e,t){X.clone(t,e._inverseView),X.getMatrix3(t,e._inverseViewRotation)}function Xdt(e,t){X.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function Wdt(e,t){X.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var uCe=new m,Fdt=new X;function Pdt(e,t){m.clone(t.positionWC,e._cameraPosition),m.clone(t.directionWC,e._cameraDirection),m.clone(t.rightWC,e._cameraRight),m.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=m.fromRadians(o.longitude,o.latitude,0,n,uCe)):(e._eyeHeight=-n.maximumRadius,m.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=m.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,uCe)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=$.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=Dt.eastNorthUpToFixedFrame(i,n,Fdt);e._enuToModel=X.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=X.inverseTransformation(e._enuToModel,e._modelToEnu),Z.equalsEpsilon(n._radii.x,n._radii.y,Z.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var o7=new $,Mdt=new ge;function vdt(e,t){Dt.computeIcrfToCentralBodyFixedMatrix(t.time,o7);let n=ry.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);$.multiplyByVector(o7,n,n),m.normalize(n,e._sunDirectionWC),n=$.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),m.normalize(n,n),n=ry.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),$.multiplyByVector(o7,n,n),$.multiplyByVector(e.viewRotation3D,n,n),m.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Mdt);i.project(r,e._sunPositionColumbusView)}zS.prototype.updateCamera=function(e){Bdt(this,e.viewMatrix),wdt(this,e.inverseViewMatrix),Pdt(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==re.SCENE2D&&e.frustum instanceof gn};zS.prototype.updateFrustum=function(e){Xdt(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&Wdt(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=Z.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};zS.prototype.updatePass=function(e){this._pass=e};var Ndt=[],Ddt=new Ng;zS.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===re.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),vdt(this,e);let n=e.light??Ddt;n instanceof Ng?(this._lightDirectionWC=m.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=m.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=m.normalize(m.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=$.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=m.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=m.multiplyByScalar(o,n.intensity,o);let r=m.maximumComponent(o);r>1?m.divideByScalar(o,r,this._lightColor):m.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??Ndt,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=m.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=m.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=m.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=Dt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let d=t.frustum.fov,u=this._viewport,h;l(d)?u.height>u.width?h=Math.tan(.5*d)*2/u.height:h=Math.tan(.5*d)*2/u.width:h=1/Math.max(u.width,u.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,U.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function mCe(e){if(e._viewportDirty){let t=e._viewport;X.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),X.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function Qdt(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==re.SCENE2D&&e._mode!==re.MORPHING&&!e._orthographicIn3D?X.inverse(e._projection,e._inverseProjection):X.clone(X.ZERO,e._inverseProjection))}function Udt(e){e._modelViewDirty&&(e._modelViewDirty=!1,X.multiplyTransformation(e._view,e._model,e._modelView))}function kdt(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,X.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Ydt(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,X.inverse(e.modelView,e._inverseModelView))}function Odt(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,X.inverse(e.modelView3D,e._inverseModelView3D))}function Hdt(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,X.multiply(e._projection,e._view,e._viewProjection))}function zdt(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,X.inverse(e.viewProjection,e._inverseViewProjection))}function Kdt(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,X.multiply(e._projection,e.modelView,e._modelViewProjection))}function Jdt(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function jdt(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,X.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function qdt(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,X.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function $dt(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,X.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function eut(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;X.getMatrix3(e.inverseModelView,t),$.transpose(t,t)}}function tut(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;X.getMatrix3(e.inverseModelView3D,t),$.transpose(t,t)}}function nut(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;X.getMatrix3(e.modelView,t),$.transpose(t,t)}}function iut(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;X.getMatrix3(e.modelView3D,t),$.transpose(t,t)}}var hCe=new m;function fCe(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,X.multiplyByPoint(e.inverseModel,e._cameraPosition,hCe),ni.fromCartesian(hCe,e._encodedCameraPositionMC))}var out=new m,rut=new m,sut=new m,aut=new m,cut=new ge,lut=new m,dut=new X;function uut(e,t,n,i,o,r,s,a){let c=out;c.x=e.y,c.y=e.z,c.z=e.x;let d=rut;d.x=n.y,d.y=n.z,d.z=n.x;let u=sut;u.x=i.y,u.y=i.z,u.z=i.x;let h=aut;h.x=t.y,h.y=t.z,h.z=t.x,r===re.SCENE2D&&(c.z=o*.5);let p=s.unproject(c,cut);p.longitude=Z.clamp(p.longitude,-Math.PI,Math.PI),p.latitude=Z.clamp(p.latitude,-Z.PI_OVER_TWO,Z.PI_OVER_TWO);let g=s.ellipsoid,f=g.cartographicToCartesian(p,lut),b=Dt.eastNorthUpToFixedFrame(f,g,dut);return X.multiplyByPointAsVector(b,d,d),X.multiplyByPointAsVector(b,u,u),X.multiplyByPointAsVector(b,h,h),l(a)||(a=new X),a[0]=d.x,a[1]=u.x,a[2]=-h.x,a[3]=0,a[4]=d.y,a[5]=u.y,a[6]=-h.y,a[7]=0,a[8]=d.z,a[9]=u.z,a[10]=-h.z,a[11]=0,a[12]=-m.dot(d,f),a[13]=-m.dot(u,f),a[14]=m.dot(h,f),a[15]=1,a}function r7(e){e._view3DDirty&&(e._mode===re.SCENE3D?X.clone(e._view,e._view3D):uut(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),X.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function pCe(e){e._inverseView3DDirty&&(X.inverseTransformation(e.view3D,e._inverseView3D),X.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var sP=zS;function xu(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):mut(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=qn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new iP(this),this._textureCache=new oP;let d=s;this._stencilBits=d.getParameter(d.STENCIL_BITS),Kt._maximumCombinedTextureImageUnits=d.getParameter(d.MAX_COMBINED_TEXTURE_IMAGE_UNITS),Kt._maximumCubeMapSize=d.getParameter(d.MAX_CUBE_MAP_TEXTURE_SIZE),Kt._maximumFragmentUniformVectors=d.getParameter(d.MAX_FRAGMENT_UNIFORM_VECTORS),Kt._maximumTextureImageUnits=d.getParameter(d.MAX_TEXTURE_IMAGE_UNITS),Kt._maximumRenderbufferSize=d.getParameter(d.MAX_RENDERBUFFER_SIZE),Kt._maximumTextureSize=d.getParameter(d.MAX_TEXTURE_SIZE),Kt._maximumVaryingVectors=d.getParameter(d.MAX_VARYING_VECTORS),Kt._maximumVertexAttributes=d.getParameter(d.MAX_VERTEX_ATTRIBS),Kt._maximumVertexTextureImageUnits=d.getParameter(d.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Kt._maximumVertexUniformVectors=d.getParameter(d.MAX_VERTEX_UNIFORM_VECTORS),Kt._maximumSamples=this._webgl2?d.getParameter(d.MAX_SAMPLES):0;let u=d.getParameter(d.ALIASED_LINE_WIDTH_RANGE);Kt._minimumAliasedLineWidth=u[0],Kt._maximumAliasedLineWidth=u[1];let h=d.getParameter(d.ALIASED_POINT_SIZE_RANGE);Kt._minimumAliasedPointSize=h[0],Kt._maximumAliasedPointSize=h[1];let p=d.getParameter(d.MAX_VIEWPORT_DIMS);Kt._maximumViewportWidth=p[0],Kt._maximumViewportHeight=p[1];let g=d.getShaderPrecisionFormat(d.FRAGMENT_SHADER,d.HIGH_FLOAT);Kt._highpFloatSupported=g.precision!==0;let f=d.getShaderPrecisionFormat(d.FRAGMENT_SHADER,d.HIGH_INT);Kt._highpIntSupported=f.rangeMax!==0,this._antialias=d.getContextAttributes().antialias,this._standardDerivatives=!!Hr(d,["OES_standard_derivatives"]),this._blendMinmax=!!Hr(d,["EXT_blend_minmax"]),this._elementIndexUint=!!Hr(d,["OES_element_index_uint"]),this._depthTexture=!!Hr(d,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Hr(d,["EXT_frag_depth"]),this._debugShaders=Hr(d,["WEBGL_debug_shaders"]),this._textureFloat=!!Hr(d,["OES_texture_float"]),this._textureHalfFloat=!!Hr(d,["OES_texture_half_float"]),this._textureFloatLinear=!!Hr(d,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Hr(d,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Hr(d,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Hr(d,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Hr(d,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Hr(d,["EXT_color_buffer_half_float"]),this._s3tc=!!Hr(d,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Hr(d,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Hr(d,["WEBGL_compressed_texture_astc"]),this._etc=!!Hr(d,["WEBG_compressed_texture_etc"]),this._etc1=!!Hr(d,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Hr(d,["EXT_texture_compression_bptc"]),Kl.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let b=r?Hr(d,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=b,Kt._maximumTextureFilterAnisotropy=l(b)?d.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let x,I,_,E,S,R,G,B,w,F;if(c){let L=this;x=function(){return L._gl.createVertexArray()},I=function(V){L._gl.bindVertexArray(V)},_=function(V){L._gl.deleteVertexArray(V)},E=function(V,W,M,Q,N){d.drawElementsInstanced(V,W,M,Q,N)},S=function(V,W,M,Q){d.drawArraysInstanced(V,W,M,Q)},R=function(V,W){d.vertexAttribDivisor(V,W)},G=function(V){d.drawBuffers(V)}}else B=Hr(d,["OES_vertex_array_object"]),l(B)&&(x=function(){return B.createVertexArrayOES()},I=function(L){B.bindVertexArrayOES(L)},_=function(L){B.deleteVertexArrayOES(L)}),w=Hr(d,["ANGLE_instanced_arrays"]),l(w)&&(E=function(L,V,W,M,Q){w.drawElementsInstancedANGLE(L,V,W,M,Q)},S=function(L,V,W,M){w.drawArraysInstancedANGLE(L,V,W,M)},R=function(L,V){w.vertexAttribDivisorANGLE(L,V)}),F=Hr(d,["WEBGL_draw_buffers"]),l(F)&&(G=function(L){F.drawBuffersWEBGL(L)});this.glCreateVertexArray=x,this.glBindVertexArray=I,this.glDeleteVertexArray=_,this.glDrawElementsInstanced=E,this.glDrawArraysInstanced=S,this.glVertexAttribDivisor=R,this.glDrawBuffers=G,this._vertexArrayObject=!!B,this._instancedArrays=!!w,this._drawBuffers=!!F,Kt._maximumDrawBuffers=this.drawBuffers?d.getParameter(ne.MAX_DRAW_BUFFERS):1,Kt._maximumColorAttachments=this.drawBuffers?d.getParameter(ne.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new U(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let P=new sP,A=new Hc(this),T=Qe.fromCache();this._defaultPassState=A,this._defaultRenderState=T,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=P,this._currentRenderState=T,this._currentPassState=A,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let L=0;L<Kt._maximumVertexAttributes;L++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Qe.apply(d,T,A)}function mut(e,t,n){if(typeof WebGLRenderingContext>"u")throw new de("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new de("The browser supports WebGL, but initialization failed.");return r}function hut(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function fut(e,t,n,i){let o=`${hut(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function put(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new de(fut(e,t,n,i))}function Aut(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function gut(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,Aut(e,o,t))}return i}function Hr(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var but={};Object.defineProperties(xu.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=gut(this._originalGLContext,e?put:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Wt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Wt({context:this,pixelFormat:tt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Wt({context:this,pixelFormat:tt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new Pr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return but}}});function ACe(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Qe.partialApply(e._gl,o,t,r,n,i)}var s7;typeof WebGLRenderingContext<"u"&&(s7=[ne.BACK]);function a7(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=s7;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var yut=new xi;xu.prototype.clear=function(e,t){e=e??yut,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(U.equals(this._clearColor,o)||(U.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;ACe(this,a,t,!0);let c=e.framebuffer??t.framebuffer;a7(this,c),n.clear(i)};function Cut(e,t,n,i,o){a7(e,t),ACe(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function xut(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??X.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let d=r.indexBuffer;l(d)?(s=s*d.bytesPerIndex,l(a)?a=Math.min(a,d.numberOfIndices):a=d.numberOfIndices,c===0?e._gl.drawElements(o,a,d.indexDatatype,s):e.glDrawElementsInstanced(o,a,d.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}xu.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Cut(this,o,t,n,r),xut(this,e,n,i)};xu.prototype.beginFrame=function(){};xu.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=s7;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};xu.prototype.readPixels=function(e){let t=this._gl;e=e??Y.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=Ye.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=tt.createTypedArray(tt.RGBA,a,o,r);return a7(this,s),t.readPixels(n,i,o,r,tt.RGBA,Ye.toWebGLConstant(a,this),c),c};var gCe={position:0,textureCoordinates:1};xu.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new pt({attributes:{position:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:We.TRIANGLES});e=ui.fromGeometry({context:this,geometry:t,attributeLocations:gCe,bufferUsage:Ne.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};xu.prototype.createViewportQuadCommand=function(e,t){return t=t??Y.EMPTY_OBJECT,new ot({vertexArray:this.getViewportQuadVertexArray(),primitiveType:We.TRIANGLES,renderState:t.renderState,shaderProgram:ln.fromCache({context:this,vertexShaderSource:yI,fragmentShaderSource:e,attributeLocations:gCe}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};xu.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function c7(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(c7.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});c7.prototype.destroy=function(){delete this._pickObjects[this.key]};xu.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new de("Out of unique Pick IDs.");return this._pickObjects[t]=e,new c7(this._pickObjects,t,U.fromRgba(t))};xu.prototype.isDestroyed=function(){return!1};xu.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),me(this)};var xI=xu;var OGi=y(C(),1);function gk(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new xI(this._canvas,ke(e?.contextOptions)),this._canvases=[]}gk.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,d=this.drawingBufferWidth;c.width<d&&(c.width=d);let u=this.drawingBufferHeight;c.height<u&&(c.height=u)},s=function(){let c=this.drawingBufferWidth,d=this.drawingBufferHeight,u=n._context.canvas.height-d;t.drawImage(n._context.canvas,0,u,c,d,0,0,c,d),n._context.endFrame()};return new Proxy(this._context,{get(c,d,u){if(d==="isDestroyed")return function(){return i};switch(d){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,d,u)}}})};gk.prototype.destroy=function(){this._context.destroy(),me(this)};gk.prototype.isDestroyed=function(){return!1};var aP=gk;var sZi=y(C(),1);function II(e){e=e??Y.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=tt.RGBA,pixelDatatype:o=Ye.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new sn}=e;if(!t.webgl2)throw new Ae("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:d,depth:u}=e;l(n)&&(l(c)||(c=n.width),l(d)||(d=n.height),l(u)||(u=n.depth));let h=e.preMultiplyAlpha||i===tt.RGB||i===tt.LUMINANCE,p=tt.toInternalFormat(i,o,t),g=tt.isCompressedFormat(p),f=t._gl,b=tt.texture3DSizeInBytes(i,o,c,d,u);if(this._id=e.id??qn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=f.TEXTURE_3D,this._texture=f.createTexture(),this._internalFormat=p,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=d,this._depth=u,this._dimensions=new m(c,d,u),this._hasMipmap=!1,this._sizeInBytes=b,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,bCe(this,a),f.activeTexture(f.TEXTURE0),f.bindTexture(this._textureTarget,this._texture),l(n)){if(s?f.pixelStorei(f.UNPACK_COLORSPACE_CONVERSION_WEBGL,f.NONE):f.pixelStorei(f.UNPACK_COLORSPACE_CONVERSION_WEBGL,f.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new Ae("For Texture3D, options.source.arrayBufferView must be defined");Iut(this,n),this._initialized=!0}else _ut(this);f.bindTexture(this._textureTarget,null)}function Iut(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:d,pixelDatatype:u,flipY:h}=e,p=tt.alignmentInBytes(d,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,p),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let f=1;if(t.mipLevels&&t.mipLevels.length&&(f=t.mipLevels.length+1),i.texStorage3D(o,f,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,d,Ye.toWebGLConstant(u,n),g),f>1){let b=s,x=a,I=c;for(let _=0;_<t.mipLevels.length;++_)b=l7(b),x=l7(x),I=l7(I),i.texSubImage3D(o,_+1,0,0,0,b,x,I,d,Ye.toWebGLConstant(u,n),t.mipLevels[_])}}function l7(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function _ut(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,Ye.toWebGLConstant(e._pixelDatatype,t),null)}II.create=function(e){return new II(e)};Object.defineProperties(II.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){bCe(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function bCe(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[en.NEAREST_MIPMAP_NEAREST,en.NEAREST_MIPMAP_LINEAR,en.LINEAR_MIPMAP_NEAREST,en.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ye.FLOAT&&!r.textureFloatLinear||a===Ye.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?en.NEAREST_MIPMAP_NEAREST:en.NEAREST,i=pi.NEAREST),tt.isDepthFormat(s)&&(n=en.NEAREST,i=pi.NEAREST);let c=r._gl,d=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(d,e._texture),c.texParameteri(d,c.TEXTURE_MIN_FILTER,n),c.texParameteri(d,c.TEXTURE_MAG_FILTER,i),c.texParameteri(d,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(d,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(d,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(d,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(d,null)}II.prototype.generateMipmap=function(e){e=e??Yu.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};II.prototype.isDestroyed=function(){return!1};II.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),me(this)};var d7=II;var dZi=y(C(),1);function Eut(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[Ve.createIfNeeded(t.positiveX).fetchImage(i),Ve.createIfNeeded(t.negativeX).fetchImage(i),Ve.createIfNeeded(t.positiveY).fetchImage(i),Ve.createIfNeeded(t.negativeY).fetchImage(i),Ve.createIfNeeded(t.positiveZ).fetchImage(i),Ve.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new Pr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var cP=Eut;var mZi=y(C(),1),KS=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var fZi=y(C(),1),lP=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var AZi=y(C(),1),dP=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var bZi=y(C(),1),uP=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var CZi=y(C(),1),mP=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var IZi=y(C(),1),hP=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var EZi=y(C(),1),fP=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var SZi=y(C(),1),pP=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var RZi=y(C(),1),AP=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var GZi=y(C(),1),gP=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var BZi=y(C(),1),JS=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var XZi=y(C(),1),jS=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;var FZi=y(C(),1);/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var bP=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var MZi=y(C(),1),yP=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var NZi=y(C(),1),CP=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var QZi=y(C(),1),qS=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var kZi=y(C(),1),$S=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var OZi=y(C(),1),xP=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var zZi=y(C(),1),IP=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var JZi=y(C(),1),_P=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var qZi=y(C(),1),EP=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var eBi=y(C(),1),TP=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var nBi=y(C(),1),SP=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var oBi=y(C(),1),LP=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var sBi=y(C(),1),RP=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;var mqi=y(C(),1);var CBi=y(C(),1);var fBi=y(C(),1);var lBi=y(C(),1);async function Tut(e,t,n,i){return l(i)||(i=!1),Rut(e,t,n,i)}function Sut(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(CCe(i)):r=o.then(CCe(i)).catch(Vut(i)),e.shift(),t.push(r),!0}function Lut(e){return new Promise(function(t){setTimeout(t,e)})}function u7(e,t,n){return e.length?Sut(e,t,n)?u7(e,t,n):Lut(100).then(()=>u7(e,t,n)):Promise.resolve()}function Rut(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let d=o.positionToTileXY(n[r],t);if(!l(d))continue;let u=d.toString();if(!a.hasOwnProperty(u)){let h={x:d.x,y:d.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[u]=h,s.push(h)}a[u].positions.push(n[r])}let c=[];return u7(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function yCe(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function CCe(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!yCe(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];yCe(s,i,n)}}):Promise.resolve()}}function Vut(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var VP=Tut;var m7=new D;async function xCe(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let d=t[c],u=r.computeMaximumLevelAtPosition(d);if(o[c]=u,u===0){e.tilingScheme.positionToTileXY(d,1,m7);let p=e.loadTileDataAvailability(m7.x,m7.y,1);l(p)&&s.push(p)}let h=i[u];l(h)||(i[u]=h=[]),h.push(d)}await Promise.all(s),await Promise.all(i.map(function(c,d){if(l(c))return VP(e,d,c,n)}));let a=[];for(let c=0;c<t.length;++c){let d=t[c];r.computeMaximumLevelAtPosition(d)!==o[c]&&a.push(d)}return a.length>0&&await xCe(e,a,n),t}var _I=xCe;async function h7(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===re.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===re.SCENE2D)return r;let c=[le.center(e),le.southeast(e),le.southwest(e),le.northeast(e),le.northwest(e)],d=await h7._sampleTerrainMostDetailed(n,c),u=!1,h=d.reduce(function(g,f){return l(f.height)?(u=!0,Math.max(f.height,g)):g},-Number.MAX_VALUE),p=r;return u&&(p.height+=h),p}h7._sampleTerrainMostDetailed=_I;var EI=h7;var cFi=y(C(),1);var Rwi=y(C(),1);var ywi=y(C(),1);var IBi=y(C(),1),Gut={NONE:0,LERC:1},Xm=Object.freeze(Gut);var jBi=y(C(),1);var WBi=y(C(),1);var EBi=y(C(),1),Zut={NONE:0,BITS12:1},Ia=Object.freeze(Zut);var TI=new m,But=new m,Wm=new D,bk=new X,wut=new X,Xut=Math.pow(2,12);function zc(e,t,n,i,o,r,s,a,c,d){let u=Ia.NONE,h,p;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,f=t.maximum,b=m.subtract(f,g,But),x=i-n;Math.max(m.maximumComponent(b),x)<Xut-1?u=Ia.BITS12:u=Ia.NONE,h=X.inverseTransformation(o,new X);let _=m.negate(g,TI);X.multiply(X.fromTranslation(_,bk),h,h);let E=TI;E.x=1/b.x,E.y=1/b.y,E.z=1/b.z,X.multiply(X.fromScale(E,bk),h,h),p=X.clone(o),X.setTranslation(p,m.ZERO,p),o=X.clone(o,new X);let S=X.fromTranslation(g,bk),R=X.fromScale(b,wut),G=X.multiply(S,R,bk);X.multiply(o,G,o),X.multiply(p,G,p)}this.quantization=u,this.minimumHeight=n,this.maximumHeight=i,this.center=m.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=p,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=d??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}zc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,d=i.y;if(this.quantization===Ia.BITS12){n=X.multiplyByPoint(this.toScaledENU,n,TI),n.x=Z.clamp(n.x,0,1),n.y=Z.clamp(n.y,0,1),n.z=Z.clamp(n.z,0,1);let u=this.maximumHeight-this.minimumHeight,h=Z.clamp((o-this.minimumHeight)/u,0,1);D.fromElements(n.x,n.y,Wm);let p=Mn.compressTextureCoordinates(Wm);D.fromElements(n.z,h,Wm);let g=Mn.compressTextureCoordinates(Wm);D.fromElements(c,d,Wm);let f=Mn.compressTextureCoordinates(Wm);if(e[t++]=p,e[t++]=g,e[t++]=f,this.hasWebMercatorT){D.fromElements(s,0,Wm);let b=Mn.compressTextureCoordinates(Wm);e[t++]=b}}else m.subtract(n,this.center,TI),e[t++]=TI.x,e[t++]=TI.y,e[t++]=TI.z,e[t++]=o,e[t++]=c,e[t++]=d,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Mn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var Wut=new m,ICe=new m;zc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let u=0;u<i;u++){let h=s*i+u,p=s*r+u;t[p]=e[h]}let a=this.decodePosition(t,s,Wut),c=n.geodeticSurfaceNormal(a,ICe),d=s*r+this._offsetGeodeticSurfaceNormal;t[d]=c.x,t[d+1]=c.y,t[d+2]=c.z}};zc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};zc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new m),t*=this.stride,this.quantization===Ia.BITS12){let i=Mn.decompressTextureCoordinates(e[t],Wm);n.x=i.x,n.y=i.y;let o=Mn.decompressTextureCoordinates(e[t+1],Wm);return n.z=o.x,X.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],m.add(n,this.center,n)};zc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,ICe),a=this.decodeHeight(e,t),c=Mr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};zc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new D),t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+2],n):D.fromElements(e[t+4],e[t+5],n)};zc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+1],Wm).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};zc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+3],Wm).x:e[t+6]};zc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return D.fromElements(o,r,n)};zc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};zc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case Ia.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var yk={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},Ck={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};zc.prototype.getAttributes=function(e){let t=J.FLOAT,n=J.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===Ia.NONE){s(yk.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(yk.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(yk.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(Ck.compressed0,a?4:3),c&&s(Ck.compressed1,1),this.hasGeodeticSurfaceNormals&&s(Ck.geodeticSurfaceNormal,3)}return r};zc.prototype.getAttributeLocations=function(){return this.quantization===Ia.NONE?yk:Ck};zc.clone=function(e,t){if(l(e))return l(t)||(t=new zc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=m.clone(e.center),t.toScaledENU=X.clone(e.toScaledENU),t.fromScaledENU=X.clone(e.fromScaledENU),t.matrix=X.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Kc=zc;var Ep={};Ep.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var f7=new m,Fut=new X,Put=new m,Mut=new m;Ep.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=Z.PI_OVER_TWO,a=Z.toRadians,c=e.heightmap,d=e.width,u=e.height,h=e.skirtHeight,p=h>0,g=e.isGeographic??!0,f=e.ellipsoid??ie.default,b=1/f.maximumRadius,x=le.clone(e.nativeRectangle),I=le.clone(e.rectangle),_,E,S,R;l(I)?(_=I.west,E=I.south,S=I.east,R=I.north):g?(_=a(x.west),E=a(x.south),S=a(x.east),R=a(x.north)):(_=x.west*b,E=s-2*o(r(-x.south*b)),S=x.east*b,R=s-2*o(r(-x.north*b)));let G=e.relativeToCenter,B=l(G);G=B?G:m.ZERO;let w=e.includeWebMercatorT??!1,F=e.exaggeration??1,P=e.exaggerationRelativeHeight??0,T=F!==1,L=e.structure??Ep.DEFAULT_STRUCTURE,V=L.heightScale??Ep.DEFAULT_STRUCTURE.heightScale,W=L.heightOffset??Ep.DEFAULT_STRUCTURE.heightOffset,M=L.elementsPerHeight??Ep.DEFAULT_STRUCTURE.elementsPerHeight,Q=L.stride??Ep.DEFAULT_STRUCTURE.stride,N=L.elementMultiplier??Ep.DEFAULT_STRUCTURE.elementMultiplier,k=L.isBigEndian??Ep.DEFAULT_STRUCTURE.isBigEndian,v=le.computeWidth(x),O=le.computeHeight(x),H=v/(d-1),ee=O/(u-1);g||(v*=b,O*=b);let K=f.radiiSquared,te=K.x,q=K.y,pe=K.z,ye=65536,he=-65536,xe=Dt.eastNorthUpToFixedFrame(G,f),Te=X.inverseTransformation(xe,Fut),Be,Le;w&&(Be=Ui.geodeticLatitudeToMercatorAngle(E),Le=1/(Ui.geodeticLatitudeToMercatorAngle(R)-Be));let De=Put;De.x=Number.POSITIVE_INFINITY,De.y=Number.POSITIVE_INFINITY,De.z=Number.POSITIVE_INFINITY;let Ue=Mut;Ue.x=Number.NEGATIVE_INFINITY,Ue.y=Number.NEGATIVE_INFINITY,Ue.z=Number.NEGATIVE_INFINITY;let je=Number.POSITIVE_INFINITY,it=d*u,nn=h>0?d*2+u*2:0,rt=it+nn,rn=new Array(rt),Jt=new Array(rt),Xt=new Array(rt),Li=w?new Array(rt):[],bi=T?new Array(rt):[],vt=0,Rt=u,si=0,_t=d;p&&(--vt,++Rt,--si,++_t);let Fo=1e-5;for(let nt=vt;nt<Rt;++nt){let yt=nt;yt<0&&(yt=0),yt>=u&&(yt=u-1);let $t=x.north-ee*yt;g?$t=a($t):$t=s-2*o(r(-$t*b));let Sn=($t-E)/(R-E);Sn=Z.clamp(Sn,0,1);let fo=nt===vt,uo=nt===Rt-1;h>0&&(fo?$t+=Fo*O:uo&&($t-=Fo*O));let ra=t($t),sa=n($t),Hn=pe*sa,Ti;w&&(Ti=(Ui.geodeticLatitudeToMercatorAngle($t)-Be)*Le);for(let Rs=si;Rs<_t;++Rs){let Jo=Rs;Jo<0&&(Jo=0),Jo>=d&&(Jo=d-1);let Ga=yt*(d*Q)+Jo*Q,po;if(M===1)po=c[Ga];else{po=0;let Zo;if(k)for(Zo=0;Zo<M;++Zo)po=po*N+c[Ga+Zo];else for(Zo=M-1;Zo>=0;--Zo)po=po*N+c[Ga+Zo]}po=po*V+W,he=Math.max(he,po),ye=Math.min(ye,po);let jo=x.west+H*Jo;g?jo=a(jo):jo=jo*b;let Wu=(jo-_)/(S-_);Wu=Z.clamp(Wu,0,1);let xr=yt*d+Jo;if(h>0){let Zo=Rs===si,mn=Rs===_t-1,Re=fo||uo||Zo||mn;if((fo||uo)&&(Zo||mn))continue;Re&&(po-=h,Zo?(xr=it+(u-yt-1),jo-=Fo*v):uo?xr=it+u+(d-Jo-1):mn?(xr=it+u+d+yt,jo+=Fo*v):fo&&(xr=it+u+d+u+Jo))}let Vs=ra*t(jo),ks=ra*n(jo),Jm=te*Vs,fs=q*ks,nc=1/i(Jm*Vs+fs*ks+Hn*sa),Xr=Jm*nc,kl=fs*nc,Yl=Hn*nc,aa=new m;aa.x=Xr+Vs*po,aa.y=kl+ks*po,aa.z=Yl+sa*po,X.multiplyByPoint(Te,aa,f7),m.minimumByComponent(f7,De,De),m.maximumByComponent(f7,Ue,Ue),je=Math.min(je,po),rn[xr]=aa,Xt[xr]=new D(Wu,Sn),Jt[xr]=po,w&&(Li[xr]=Ti),T&&(bi[xr]=f.geodeticSurfaceNormal(aa))}}let Uo=ue.fromPoints(rn),Va;l(I)&&(Va=vn.fromRectangle(I,ye,he,f));let Cr;B&&(Cr=new gg(f).computeHorizonCullingPointPossiblyUnderEllipsoid(G,rn,ye));let wr=new Ib(De,Ue,G),ve=new Kc(G,wr,je,he,xe,!1,w,T,F,P),ut=new Float32Array(rt*ve.stride),qe=0;for(let nt=0;nt<rt;++nt)qe=ve.encode(ut,qe,rn[nt],Xt[nt],Jt[nt],void 0,Li[nt],bi[nt]);return{vertices:ut,maximumHeight:he,minimumHeight:ye,encoding:ve,boundingSphere3D:Uo,orientedBoundingBox:Va,occludeePointInScaledSpace:Cr}};var eL=Ep;var ewi=y(C(),1);function sy(){Ae.throwInstantiationError()}Object.defineProperties(sy.prototype,{credits:{get:Ae.throwInstantiationError},waterMask:{get:Ae.throwInstantiationError}});sy.prototype.interpolateHeight=Ae.throwInstantiationError;sy.prototype.isChildAvailable=Ae.throwInstantiationError;sy.prototype.createMesh=Ae.throwInstantiationError;sy.prototype.upsample=Ae.throwInstantiationError;sy.prototype.wasCreatedByUpsampling=Ae.throwInstantiationError;sy.maximumAsynchronousTasks=5;var df=sy;var nwi=y(C(),1);function vut(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){this.center=e,this.vertices=t,this.stride=d??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=u,this.encoding=h,this.westIndicesSouthToNorth=p,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=f,this.northIndicesWestToEast=b}var Fm=vut;function Dg(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??Xm.NONE;let t=eL.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===Xm.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Dg.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var _Ce="createVerticesFromHeightmap",Nut=new hi(_Ce),Dut=new hi(_Ce,df.maximumAsynchronousTasks);Dg.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,d=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(le.center(u)),p=this._structure,f=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(f*4,1e3);let x=(a?Dut:Nut).scheduleTask({heightmap:this._buffer,structure:p,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:d,rectangle:u,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Di,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(x))return;let I=this;return Promise.resolve(x).then(function(_){let E;I._skirtHeight>0?E=Es.getRegularGridAndSkirtIndicesAndEdgeIndices(_.gridWidth,_.gridHeight):E=Es.getRegularGridIndicesAndEdgeIndices(_.gridWidth,_.gridHeight);let S=_.gridWidth*_.gridHeight;return I._mesh=new Fm(h,new Float32Array(_.vertices),E.indices,E.indexCountWithoutSkirts,S,_.minimumHeight,_.maximumHeight,ue.clone(_.boundingSphere3D),m.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,vn.clone(_.orientedBoundingBox),Kc.clone(_.encoding),E.westIndicesSouthToNorth,E.southIndicesEastToWest,E.eastIndicesNorthToSouth,E.northIndicesWestToEast),I._buffer=void 0,I._mesh})};Dg.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),d=t.tileXYToRectangle(n,i,o),u=a.cartographicToCartesian(le.center(d)),h=this._structure,g=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let f=eL.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:d,relativeToCenter:u,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Di,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let b;this._skirtHeight>0?b=Es.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):b=Es.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let x=f.gridWidth*f.gridHeight;return this._mesh=new Fm(u,f.vertices,b.indices,b.indexCountWithoutSkirts,x,f.minimumHeight,f.maximumHeight,f.boundingSphere3D,f.occludeePointInScaledSpace,f.encoding.stride,f.orientedBoundingBox,f.encoding,b.westIndicesSouthToNorth,b.southIndicesEastToWest,b.eastIndicesNorthToSouth,b.northIndicesWestToEast),this._mesh};Dg.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,d=r.isBigEndian,u=r.heightOffset,h=r.heightScale,p=l(this._mesh),g=this._encoding===Xm.LERC;if(!p&&g)return;let b;if(p){let x=this._mesh.vertices,I=this._mesh.encoding;b=ECe(x,I,u,h,e,i,o,t,n)}else b=Qut(this._buffer,a,c,s,d,e,i,o,t,n),b=b*h+u;return b};Dg.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,d=this._height,u=this._structure,h=u.stride,p=new this._bufferType(c*d*h),g=a.vertices,f=a.encoding,b=e.tileXYToRectangle(t,n,i),x=e.tileXYToRectangle(o,r,s),I=u.heightOffset,_=u.heightScale,E=u.elementsPerHeight,S=u.elementMultiplier,R=u.isBigEndian,G=Math.pow(S,E-1);for(let B=0;B<d;++B){let w=Z.lerp(x.north,x.south,B/(d-1));for(let F=0;F<c;++F){let P=Z.lerp(x.west,x.east,F/(c-1)),A=ECe(g,f,I,_,b,c,d,P,w);A=A<u.lowestEncodedHeight?u.lowestEncodedHeight:A,A=A>u.highestEncodedHeight?u.highestEncodedHeight:A,Uut(p,E,S,G,h,R,B*c+F,A)}}return Promise.resolve(new Dg({buffer:p,width:c,height:d,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Dg.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Dg.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function Qut(e,t,n,i,o,r,s,a,c,d){let u=(c-r.west)*(s-1)/(r.east-r.west),h=(d-r.south)*(a-1)/(r.north-r.south),p=u|0,g=p+1;g>=s&&(g=s-1,p=s-2);let f=h|0,b=f+1;b>=a&&(b=a-1,f=a-2);let x=u-p,I=h-f;f=a-1-f,b=a-1-b;let _=xk(e,t,n,i,o,f*s+p),E=xk(e,t,n,i,o,f*s+g),S=xk(e,t,n,i,o,b*s+p),R=xk(e,t,n,i,o,b*s+g);return TCe(x,I,_,E,S,R)}function ECe(e,t,n,i,o,r,s,a,c){let d=(a-o.west)*(r-1)/(o.east-o.west),u=(c-o.south)*(s-1)/(o.north-o.south),h=d|0,p=h+1;p>=r&&(p=r-1,h=r-2);let g=u|0,f=g+1;f>=s&&(f=s-1,g=s-2);let b=d-h,x=u-g;g=s-1-g,f=s-1-f;let I=(t.decodeHeight(e,g*r+h)-n)/i,_=(t.decodeHeight(e,g*r+p)-n)/i,E=(t.decodeHeight(e,f*r+h)-n)/i,S=(t.decodeHeight(e,f*r+p)-n)/i;return TCe(b,x,I,_,E,S)}function TCe(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function xk(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function Uut(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var yc=Dg;function tL(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new ao({ellipsoid:e.ellipsoid??ie.default})),this._levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new Ce}Object.defineProperties(tL.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});tL.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new yc({buffer:new Uint8Array(256),width:16,height:16}))};tL.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};tL.prototype.getTileDataAvailable=function(e,t,n){};tL.prototype.loadTileDataAvailability=function(e,t,n){};var Tp=tL;var Nwi=y(C(),1);var Bwi=y(C(),1);var kut=new D;function Yut(e,t){let n=e.unionClippingRegions,i=e.length,o=Ws.useFloatTexture(t),r=Ws.getTextureResolution(e,t,kut),s=r.x,a=r.y,c=o?zut(s,a):Kut(s,a);return c+=` +`,c+=n?Out(i):Hut(i),c}function Out(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function Hut(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function zut(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Kut(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var Qg=Yut;function Jut(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function p7(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function jut(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case re.SCENE3D:o=t;break;case re.SCENE2D:case re.COLUMBUS_VIEW:o=n;break;case re.MORPHING:o=i;break}return o}function qut(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function $ut(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function emt(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}p7.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,d=e.applyAlpha,u=e.applyDayNightAlpha,h=e.applySplit,p=e.hasWaterMask,g=e.showReflectiveOcean,f=e.showOceanWaves,b=e.enableLighting,x=e.dynamicAtmosphereLighting,I=e.dynamicAtmosphereLightingFromSun,_=e.showGroundAtmosphere,E=e.perFragmentGroundAtmosphere,S=e.hasVertexNormals,R=e.useWebMercatorProjection,G=e.enableFog,B=e.enableClippingPlanes,w=e.clippingPlanes,F=e.enableClippingPolygons,P=e.clippingPolygons,A=e.clippedByBoundaries,T=e.hasImageryLayerCutout,L=e.colorCorrect,V=e.highlightFillTile,W=e.colorToAlpha,M=e.hasGeodeticSurfaceNormals,Q=e.hasExaggeration,N=e.showUndergroundColor,k=e.translucent,v=0,O="",ee=n.renderedMesh.encoding;ee.quantization===Ia.BITS12&&(v=1,O="QUANTIZATION_BITS12");let te=0,q="";A&&(te=1,q="TILE_LIMIT_RECTANGLE");let pe=0,ye="";T&&(pe=1,ye="APPLY_IMAGERY_CUTOUT");let he=t.mode,xe=he|o<<2|r<<3|s<<4|a<<5|c<<6|d<<7|p<<8|g<<9|f<<10|b<<11|x<<12|I<<13|_<<14|E<<15|S<<16|R<<17|G<<18|v<<19|h<<20|B<<21|F<<22|te<<23|pe<<24|L<<25|V<<26|W<<27|M<<28|Q<<29|N<<30|k<<31|u<<32,Te=0;l(w)&&w.length>0&&(Te=B?w.clippingPlanesState:0);let Be=0;l(P)&&P.length>0&&(Be=F?P.clippingPolygonsState:0);let Le=n.surfaceShader;if(l(Le)&&Le.numberOfDayTextures===i&&Le.flags===xe&&Le.material===this.material&&Le.clippingShaderState===Te&&Le.clippingPolygonShaderState===Be)return Le.shaderProgram;let De=this._shadersByTexturesFlags[i];if(l(De)||(De=this._shadersByTexturesFlags[i]=[]),Le=De[xe],!l(Le)||Le.material!==this.material||Le.clippingShaderState!==Te||Le.clippingPolygonShaderState!==Be){let Ue=this.baseVertexShaderSource.clone(),je=this.baseFragmentShaderSource.clone();Te!==0&&je.sources.unshift(Qg(w,t.context)),Be!==0&&(je.sources.unshift(qut(t.context)),Ue.sources.unshift($ut(t.context))),Ue.defines.push(O),je.defines.push(`TEXTURE_UNITS ${i}`,q,ye),o&&je.defines.push("APPLY_BRIGHTNESS"),r&&je.defines.push("APPLY_CONTRAST"),s&&je.defines.push("APPLY_HUE"),a&&je.defines.push("APPLY_SATURATION"),c&&je.defines.push("APPLY_GAMMA"),d&&je.defines.push("APPLY_ALPHA"),u&&je.defines.push("APPLY_DAY_NIGHT_ALPHA"),p&&je.defines.push("HAS_WATER_MASK"),g&&(je.defines.push("SHOW_REFLECTIVE_OCEAN"),Ue.defines.push("SHOW_REFLECTIVE_OCEAN")),f&&je.defines.push("SHOW_OCEAN_WAVES"),W&&je.defines.push("APPLY_COLOR_TO_ALPHA"),N&&(Ue.defines.push("UNDERGROUND_COLOR"),je.defines.push("UNDERGROUND_COLOR")),k&&(Ue.defines.push("TRANSLUCENT"),je.defines.push("TRANSLUCENT")),b&&(S?(Ue.defines.push("ENABLE_VERTEX_LIGHTING"),je.defines.push("ENABLE_VERTEX_LIGHTING")):(Ue.defines.push("ENABLE_DAYNIGHT_SHADING"),je.defines.push("ENABLE_DAYNIGHT_SHADING"))),x&&(Ue.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),je.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),I&&(Ue.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),je.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),_&&(Ue.defines.push("GROUND_ATMOSPHERE"),je.defines.push("GROUND_ATMOSPHERE"),E&&(Ue.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),je.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ue.defines.push("INCLUDE_WEB_MERCATOR_Y"),je.defines.push("INCLUDE_WEB_MERCATOR_Y"),G&&(Ue.defines.push("FOG"),je.defines.push("FOG")),h&&je.defines.push("APPLY_SPLIT"),B&&je.defines.push("ENABLE_CLIPPING_PLANES"),F&&(je.defines.push("ENABLE_CLIPPING_POLYGONS"),Ue.defines.push("ENABLE_CLIPPING_POLYGONS"),P.inverse&&je.defines.push("CLIPPING_INVERSE"),je.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${P.extentsCount}`),Ue.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${P.extentsCount}`)),L&&je.defines.push("COLOR_CORRECT"),V&&je.defines.push("HIGHLIGHT_FILL_TILE"),M&&Ue.defines.push("GEODETIC_SURFACE_NORMALS"),Q&&Ue.defines.push("EXAGGERATION");let it=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;T&&(it+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let rt=0;rt<i;++rt)T?it+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${rt}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:it+=` color = sampleAndBlend( +`,it+=` color, + u_dayTextures[${rt}], + u_dayTextureUseWebMercatorT[${rt}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${rt}], + u_dayTextureTranslationAndScale[${rt}], + ${d?`u_dayTextureAlpha[${rt}]`:"1.0"}, + ${u?`u_dayTextureNightAlpha[${rt}]`:"1.0"}, + ${u?`u_dayTextureDayAlpha[${rt}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${rt}]`:"0.0"}, + ${r?`u_dayTextureContrast[${rt}]`:"0.0"}, + ${s?`u_dayTextureHue[${rt}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${rt}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${rt}]`:"0.0"}, + ${h?`u_dayTextureSplit[${rt}]`:"0.0"}, + ${W?`u_colorsToAlpha[${rt}]`:"vec4(0.0)"}, + nightBlend); +`,T&&(it+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);it+=` return color; + }`,je.sources.push(it),Ue.sources.push(jut(he)),Ue.sources.push(emt(R));let nn=ln.fromCache({context:t.context,vertexShaderSource:Ue,fragmentShaderSource:je,attributeLocations:ee.getAttributeLocations()});Le=De[xe]=new Jut(i,xe,this.material,nn,Te,Be)}return n.surfaceShader=Le,Le.shaderProgram};p7.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return me(this)};var GP=p7;var H2i=y(C(),1);var Qwi=y(C(),1),tmt={NONE:-1,PARTIAL:0,FULL:1},Zr=Object.freeze(tmt);var xXi=y(C(),1);var kwi=y(C(),1),nmt={START:0,LOADING:1,DONE:2,FAILED:3},_a=Object.freeze(nmt);var Owi=y(C(),1),imt={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},So=Object.freeze(imt);function Ar(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new ce(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new m,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=So.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new ue,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(Ar.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===So.RECEIVING||e===So.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==Jn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var omt=new ge;function A7(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==re.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,omt);s=n.project(c,r),s=m.fromElements(s.z,s.x,s.y,r)}return s}var rmt=new m,smt=new m,amt=new m;Ar.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,d=a.length,u=Number.MAX_VALUE;for(let h=0;h<d;h+=3){let p=a[h],g=a[h+1],f=a[h+2],b=A7(c,t,n,s,p,rmt),x=A7(c,t,n,s,g,smt),I=A7(c,t,n,s,f,amt),_=fi.rayTriangleParametric(e,b,x,I,i);l(_)&&_<u&&_>=0&&(u=_)}return u!==Number.MAX_VALUE?En.getPoint(e,u,o):void 0};Ar.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=So.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};Ar.prototype.freeVertexArray=function(){Ar._freeVertexArray(this.vertexArray),this.vertexArray=void 0,Ar._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};Ar.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new Ar),e.state===_a.START&&(cmt(e,t,n),e.state=_a.LOADING)};Ar.processStateMachine=function(e,t,n,i,o,r,s){Ar.initialize(e,n,i);let a=e.data;if(e.state===_a.LOADING&&lmt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let d=a.terrainState===So.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let u=a.processImagery(e,n,t);if(d&&u){let h=e._loadedCallbacks,p={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(p[g]=h[g]));e._loadedCallbacks=p,e.state=_a.DONE}c&&(e.renderable=!0)};Ar.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,d,u;for(d=0,u=c.length;d<u;++d){let h=c[d];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===Jn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(d,1),g._createTileImagerySkeletons(e,t,d),--d,u=c.length;continue}else r=!1}let p=h.processStateMachine(e,n,i);a=a&&p,s=s||p||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===Jn.FAILED||h.loadingImagery.state===Jn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function SCe(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Kc.clone(s);c.hasGeodeticSurfaceNormals=t,c=Kc.clone(c);let d=c.stride,u=new Float32Array(a*d);t?s.addGeodeticSurfaceNormals(r,u,n):s.removeGeodeticSurfaceNormals(r,u),o.vertices=u,o.stride=d,o!==e.mesh?(Ar._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=Ar._createVertexArrayForMesh(i.context,o)):(Ar._freeVertexArray(e.vertexArray),e.vertexArray=Ar._createVertexArrayForMesh(i.context,o)),Ar._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}Ar.prototype.addGeodeticSurfaceNormals=function(e,t){SCe(this,!0,e,t)};Ar.prototype.removeGeodeticSurfaceNormals=function(e){SCe(this,!1,void 0,e)};Ar.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,d=c.exaggeration!==r,u=c.exaggerationRelativeHeight!==s;if(d||u){if(d)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,p=h.length;for(let g=0;g<p;g++){let f=h[g];f.level=-1}}}};function cmt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=So.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function lmt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===So.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||Ar.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===So.FAILED&&dmt(s,e,t,n,e.x,e.y,e.level),s.terrainState===So.UNLOADED&&umt(s,n,e.x,e.y,e.level),s.terrainState===So.RECEIVED&&hmt(s,t,n,e.x,e.y,e.level),s.terrainState===So.TRANSFORMED&&(fmt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=So.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)Amt(t.context,s);else{let d=s._findAncestorTileWithTerrainData(e);l(d)&&l(d.data.waterMaskTexture)&&(s.waterMaskTexture=d.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,d,s.waterMaskTranslationAndScale))}}function dmt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=_a.FAILED;return}let c=a.data.terrainData,d=a.x,u=a.y,h=a.level;if(!l(c))return;let p=c.upsample(i.tilingScheme,d,u,h,o,r,s);l(p)&&(e.terrainState=So.RECEIVING,Promise.resolve(p).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=So.RECEIVED)}).catch(function(){e.terrainState=So.FAILED}))}function umt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=So.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=So.RECEIVED,e.request=void 0}function s(c){if(e.request.state===mi.CANCELLED){e.terrainData=void 0,e.terrainState=So.UNLOADED,e.request=void 0;return}e.terrainState=So.FAILED,e.request=void 0;let d=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=vo.reportError(t._requestError,t,t.errorEvent,d,n,i,o),t._requestError.retry&&a()}function a(){let c=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});e.request=c;let d=t.requestTileGeometry(n,i,o,c);l(d)?(e.terrainState=So.RECEIVING,Promise.resolve(d).then(function(u){r(u)}).catch(function(u){s(u)})):(e.terrainState=So.UNLOADED,e.request=void 0)}a()}var mmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function hmt(e,t,n,i,o,r){let s=n.tilingScheme,a=mmt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let d=e.terrainData.createMesh(a);l(d)&&(e.terrainState=So.TRANSFORMING,Promise.resolve(d).then(function(u){e.mesh=u,e.terrainState=So.TRANSFORMED}).catch(function(){e.terrainState=So.FAILED}))}Ar._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=It.createVertexBuffer({context:e,typedArray:n,usage:Ne.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=It.createIndexBuffer({context:e,typedArray:a,usage:Ne.STATIC_DRAW,indexDatatype:Me.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new ui({context:e,attributes:o,indexBuffer:s})};Ar._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function fmt(e,t,n,i,o,r,s){e.vertexArray=Ar._createVertexArrayForMesh(t,e.mesh),e.terrainState=So.READY,e.fill=e.fill&&e.fill.destroy(s)}function pmt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Wt.create({context:e,pixelFormat:tt.LUMINANCE,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function Amt(e,t){let n=t.terrainData.waterMask,i=pmt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Wt.create({context:e,pixelFormat:tt.LUMINANCE,pixelDatatype:Ye.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,ce.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}Ar.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};Ar.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Pm=Ar;var HXi=y(C(),1);var _Xi=y(C(),1),gmt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Rn=gmt;var TXi=y(C(),1),LCe={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=LCe.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},li=LCe;function iL(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new ce}iL.prototype.update=function(e,t,n){this.changedThisFrame&&(XCe(e,t,this.tile,n),this.changedThisFrame=!1)};iL.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};iL.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Pm._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var bmt=new Jb;iL.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=bmt;a.clear();for(let d=0;d<t.length;++d){let u=t[d];l(u.data.vertexArray)&&a.enqueue(t[d])}let c=a.dequeue();for(;c!==void 0;){let d=c.findTileToWest(r),u=c.findTileToSouth(r),h=c.findTileToEast(r),p=c.findTileToNorth(r);ia(e,n,c,d,s,Rn.EAST,!1,a,i),ia(e,n,c,u,s,Rn.NORTH,!1,a,i),ia(e,n,c,h,s,Rn.WEST,!1,a,i),ia(e,n,c,p,s,Rn.SOUTH,!1,a,i);let g=d.findTileToNorth(r),f=d.findTileToSouth(r),b=h.findTileToNorth(r),x=h.findTileToSouth(r);ia(e,n,c,g,s,Rn.SOUTHEAST,!1,a,i),ia(e,n,c,b,s,Rn.SOUTHWEST,!1,a,i),ia(e,n,c,f,s,Rn.NORTHEAST,!1,a,i),ia(e,n,c,x,s,Rn.NORTHWEST,!1,a,i),c=a.dequeue()}};function ia(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let d=i;for(;d&&(d._lastSelectionResultFrame!==o||li.wasKicked(d._lastSelectionResult)||li.originalResult(d._lastSelectionResult)===li.CULLED);){if(s)return;let u=d.parent;if(r>=Rn.NORTHWEST&&u!==void 0)switch(r){case Rn.NORTHWEST:d=d===u.northwestChild?u:void 0;break;case Rn.NORTHEAST:d=d===u.northeastChild?u:void 0;break;case Rn.SOUTHWEST:d=d===u.southwestChild?u:void 0;break;case Rn.SOUTHEAST:d=d===u.southeastChild?u:void 0;break}else d=u}if(d!==void 0){if(d._lastSelectionResult===li.RENDERED){if(l(d.data.vertexArray))return;ymt(e,t,n,d,r,o,a,c);return}if(li.originalResult(i._lastSelectionResult)!==li.CULLED)switch(r){case Rn.WEST:ia(e,t,n,i.northwestChild,o,r,!0,a,c),ia(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Rn.EAST:ia(e,t,n,i.southeastChild,o,r,!0,a,c),ia(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Rn.SOUTH:ia(e,t,n,i.southwestChild,o,r,!0,a,c),ia(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Rn.NORTH:ia(e,t,n,i.northeastChild,o,r,!0,a,c),ia(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Rn.NORTHWEST:ia(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Rn.NORTHEAST:ia(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Rn.SOUTHWEST:ia(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Rn.SOUTHEAST:ia(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new Ae("Invalid edge")}}}function ymt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new iL(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Cmt(e,t,n,i,o,a)}function Cmt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(XCe(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let d,u;switch(o){case Rn.WEST:d=s.westMeshes,u=s.westTiles;break;case Rn.SOUTH:d=s.southMeshes,u=s.southTiles;break;case Rn.EAST:d=s.eastMeshes,u=s.eastTiles;break;case Rn.NORTH:d=s.northMeshes,u=s.northTiles;break;case Rn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Rn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Rn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Rn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||d[0]!==a||d.length!==1,d[0]=a,u[0]=n,d.length=1,u.length=1;return}let h,p,g,f,b=n.rectangle,x,I=i.rectangle;switch(o){case Rn.WEST:for(x=(I.north-I.south)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.greaterThan(b.north,f.south,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.greaterThanOrEquals(b.south,f.north,x));++p);break;case Rn.SOUTH:for(x=(I.east-I.west)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.lessThan(b.west,f.east,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.lessThanOrEquals(b.east,f.west,x));++p);break;case Rn.EAST:for(x=(I.north-I.south)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.lessThan(b.south,f.north,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.lessThanOrEquals(b.north,f.south,x));++p);break;case Rn.NORTH:for(x=(I.east-I.west)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.greaterThan(b.east,f.west,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.greaterThanOrEquals(b.west,f.east,x));++p);break}p-h===1?(s.changedThisFrame=s.changedThisFrame||d[h]!==a,d[h]=a,u[h]=n):(s.changedThisFrame=!0,d.splice(h,p-h,a),u.splice(h,p-h,n))}var SI=new ge,xmt=new ge,nL=new m,C7=new m,g7=new D,b7=new D,Iu=new D;function Rk(){this.height=0,this.encodedNormal=new D}function Ik(e,t,n,i,o,r,s,a,c){if(l(o))return o;let d;if(l(r)&&l(s))d=(r.height+s.height)*.5;else if(l(r))d=r.height;else if(l(s))d=s.height;else if(l(a))d=a.height;else{let h=e.tile.data.tileBoundingRegion,p=0,g=0;l(h)&&(p=h.minimumHeight,g=h.maximumHeight),d=(p+g)*.5}return WCe(e,t,n,i,d,c),c}var Imt={minimumHeight:0,maximumHeight:0},_mt=new m,RCe=new Rk,VCe=new Rk,GCe=new Rk,ZCe=new Rk,Emt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,Tmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function XCe(e,t,n,i){Pm.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,d=a!==1,u=n.tilingScheme.ellipsoid,h=Ek(r,u,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,GCe),p=Ek(r,u,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,RCe),g=Ek(r,u,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,VCe),f=Ek(r,u,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,ZCe);h=Ik(r,u,0,1,h,p,f,g,GCe),p=Ik(r,u,0,0,p,h,g,f,RCe),g=Ik(r,u,1,1,g,p,f,h,VCe),f=Ik(r,u,1,1,f,g,h,p,ZCe);let b=p.height,x=g.height,I=h.height,_=f.height,E=Math.min(b,x,I,_),S=Math.max(b,x,I,_),R=(E+S)*.5,G,B,w=e.getLevelMaximumGeometricError(n.level),F=u.maximumRadius-w,P=Math.acos(F/u.maximumRadius)*4;if(P*=1.5,s.width>P&&S-E<=w){let L=new yc({width:9,height:9,buffer:Emt,structure:{heightOffset:S}}),V=Tmt;V.tilingScheme=n.tilingScheme,V.x=n.x,V.y=n.y,V.level=n.level,V.exaggeration=a,V.exaggerationRelativeHeight=c,r.mesh=L._createMeshSync(V)}else{let L=d,V=le.center(s,xmt);V.height=R;let W=u.cartographicToCartesian(V,_mt),M=new Kc(W,void 0,void 0,void 0,void 0,!0,!0,L,a,c),Q=5,N;for(N=r.westMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].eastIndicesNorthToSouth.length;for(N=r.southMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].northIndicesWestToEast.length;for(N=r.eastMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].westIndicesSouthToNorth.length;for(N=r.northMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].southIndicesEastToWest.length;let k=Imt;k.minimumHeight=E,k.maximumHeight=S;let v=M.stride,O=new Float32Array(Q*v),H=0,ee=H;H=_k(u,s,M,O,H,0,1,h.height,h.encodedNormal,1,k),H=Sk(r,u,M,O,H,r.westTiles,r.westMeshes,Rn.EAST,k);let K=H;H=_k(u,s,M,O,H,0,0,p.height,p.encodedNormal,0,k),H=Sk(r,u,M,O,H,r.southTiles,r.southMeshes,Rn.NORTH,k);let te=H;H=_k(u,s,M,O,H,1,0,g.height,g.encodedNormal,0,k),H=Sk(r,u,M,O,H,r.eastTiles,r.eastMeshes,Rn.WEST,k);let q=H;H=_k(u,s,M,O,H,1,1,f.height,f.encodedNormal,1,k),H=Sk(r,u,M,O,H,r.northTiles,r.northMeshes,Rn.SOUTH,k),E=k.minimumHeight,S=k.maximumHeight;let pe=vn.fromRectangle(s,E,S,n.tilingScheme.ellipsoid),ye=Ui.geodeticLatitudeToMercatorAngle(s.south),he=1/(Ui.geodeticLatitudeToMercatorAngle(s.north)-ye),xe=(Ui.geodeticLatitudeToMercatorAngle(V.latitude)-ye)*he,Te=u.geodeticSurfaceNormalCartographic(SI,C7),Be=Mn.octEncode(Te,g7),Le=H;M.encode(O,H*v,pe.center,D.fromElements(.5,.5,Iu),R,Be,xe,Te),++H;let De=H,Ue=De<256?1:2,je=(De-1)*3,it=je*Ue,nn=(O.length-De*v)*Float32Array.BYTES_PER_ELEMENT,rt;if(nn>=it){let vt=De*v*Float32Array.BYTES_PER_ELEMENT;rt=De<256?new Uint8Array(O.buffer,vt,je):new Uint16Array(O.buffer,vt,je)}else rt=De<256?new Uint8Array(je):new Uint16Array(je);O=new Float32Array(O.buffer,0,De*v);let rn=0;for(G=0;G<De-2;++G)rt[rn++]=Le,rt[rn++]=G,rt[rn++]=G+1;rt[rn++]=Le,rt[rn++]=G,rt[rn++]=0;let Jt=[];for(G=K;G>=ee;--G)Jt.push(G);let Xt=[];for(G=te;G>=K;--G)Xt.push(G);let Li=[];for(G=q;G>=te;--G)Li.push(G);let bi=[];for(bi.push(0),G=Le-1;G>=q;--G)bi.push(G);r.mesh=new Fm(M.center,O,rt,je,De,E,S,ue.fromOrientedBoundingBox(pe),Bmt(e,pe.center,s,E,S),M.stride,pe,M,Jt,Xt,Li,bi)}let A=t.context;r._destroyVertexArray(i),r.vertexArray=Pm._createVertexArrayForMesh(A,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let T=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let L=o._findAncestorTileWithTerrainData(n);l(L)&&l(L.data.waterMaskTexture)&&(r.waterMaskTexture=L.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,L,r.waterMaskTranslationAndScale))}l(T)&&(--T.referenceCount,T.referenceCount===0&&T.destroy())}function _k(e,t,n,i,o,r,s,a,c,d,u){let h=SI;h.longitude=Z.lerp(t.west,t.east,r),h.latitude=Z.lerp(t.south,t.north,s),h.height=a;let p=e.cartographicToCartesian(h,nL),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(p,C7));let f=b7;return f.x=r,f.y=s,n.encode(i,o*n.stride,p,f,a,c,d,g),u.minimumHeight=Math.min(u.minimumHeight,a),u.maximumHeight=Math.max(u.maximumHeight,a),o+1}var Lk=new le;function ZP(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=le.clone(e.rectangle,Lk),o.west-=Z.TWO_PI,o.east-=Z.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=le.clone(e.rectangle,Lk),o.west+=Z.TWO_PI,o.east+=Z.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,d=o.north-o.south,u=(r.south-o.south)/d,h=(r.north-o.south)/d,p=(n.x-a)/(c-a),g=(n.y-u)/(h-u);return Math.abs(p)<Math.EPSILON5?p=0:Math.abs(p-1)<Math.EPSILON5&&(p=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=p,i.y=g,i}var Smt=new D;function y7(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var Lmt=new D,Rmt=new m;function Vmt(e,t,n,i,o,r,s,a,c,d){let u=i.encoding,h=i.vertices,p=ZP(t,n,u.decodeTextureCoordinates(h,o,Iu),Iu),g=ZP(t,n,u.decodeTextureCoordinates(h,r,b7),b7),f;c?f=(s-p.x)/(g.x-p.x):f=(a-p.y)/(g.y-p.y);let b=u.decodeHeight(h,o),x=u.decodeHeight(h,r),I=n.rectangle;SI.longitude=Z.lerp(I.west,I.east,s),SI.latitude=Z.lerp(I.south,I.north,a),d.height=SI.height=Z.lerp(b,x,f);let _;if(u.hasVertexNormals){let E=u.getOctEncodedNormal(h,o,Smt),S=u.getOctEncodedNormal(h,r,Lmt),R=Mn.octDecode(E.x,E.y,nL),G=Mn.octDecode(S.x,S.y,Rmt);_=m.lerp(R,G,f,nL),m.normalize(_,_),Mn.octEncode(_,d.encodedNormal)}else _=e.geodeticSurfaceNormalCartographic(SI,nL),Mn.octEncode(_,d.encodedNormal)}function WCe(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(SI,nL);Mn.octEncode(s,r.encodedNormal)}function Ek(e,t,n,i,o,r,s,a,c,d,u){if(wCe(e,t,a,s,!1,n,i,u)||wCe(e,t,d,c,!0,n,i,u))return u;let p;if(x7(o,r))return n===0?i===0?p=r.eastIndicesNorthToSouth[0]:p=r.southIndicesEastToWest[0]:i===0?p=r.northIndicesWestToEast[0]:p=r.westIndicesSouthToNorth[0],y7(r,p,n,i,u),u;let g;if(n===0?i===0?g=Tk(e.westMeshes,e.westTiles,Rn.EAST,e.southMeshes,e.southTiles,Rn.NORTH,n,i):g=Tk(e.northMeshes,e.northTiles,Rn.SOUTH,e.westMeshes,e.westTiles,Rn.EAST,n,i):i===0?g=Tk(e.southMeshes,e.southTiles,Rn.NORTH,e.eastMeshes,e.eastTiles,Rn.WEST,n,i):g=Tk(e.eastMeshes,e.eastTiles,Rn.WEST,e.northMeshes,e.northTiles,Rn.SOUTH,n,i),l(g))return WCe(e,t,n,i,g,u),u}function Tk(e,t,n,i,o,r,s,a){let c=BCe(e,t,!1,n,s,a),d=BCe(i,o,!0,r,s,a);return l(c)&&l(d)?(c+d)*.5:l(c)?c:d}function Sk(e,t,n,i,o,r,s,a,c){for(let d=0;d<r.length;++d)o=Gmt(e,t,n,i,o,r[d],s[d],a,c);return o}function Gmt(e,t,n,i,o,r,s,a,c){let d=r.rectangle;a===Rn.EAST&&e.tile.x===0?(d=le.clone(r.rectangle,Lk),d.west-=Z.TWO_PI,d.east-=Z.TWO_PI):a===Rn.WEST&&r.x===0&&(d=le.clone(r.rectangle,Lk),d.west+=Z.TWO_PI,d.east+=Z.TWO_PI);let u=e.tile.rectangle,h,p;o>0&&(n.decodeTextureCoordinates(i,o-1,Iu),h=Iu.x,p=Iu.y);let g,f;switch(a){case Rn.WEST:g=s.westIndicesSouthToNorth,f=!1;break;case Rn.NORTH:g=s.northIndicesWestToEast,f=!0;break;case Rn.EAST:g=s.eastIndicesNorthToSouth,f=!1;break;case Rn.SOUTH:g=s.southIndicesEastToWest,f=!0;break}let b=r,x=e.tile,I=s.encoding,_=s.vertices,E=n.stride,S,R;I.hasWebMercatorT&&(S=Ui.geodeticLatitudeToMercatorAngle(u.south),R=1/(Ui.geodeticLatitudeToMercatorAngle(u.north)-S));for(let G=0;G<g.length;++G){let B=g[G],w=I.decodeTextureCoordinates(_,B,Iu);ZP(b,x,w,w);let F=w.x,P=w.y,A=f?F:P;if(A<0||A>1||Math.abs(F-h)<Z.EPSILON5&&Math.abs(P-p)<Z.EPSILON5)continue;let T=Math.abs(F)<Z.EPSILON5||Math.abs(F-1)<Z.EPSILON5,L=Math.abs(P)<Z.EPSILON5||Math.abs(P-1)<Z.EPSILON5;if(T&&L)continue;let V=I.decodePosition(_,B,nL),W=I.decodeHeight(_,B),M;I.hasVertexNormals?M=I.getOctEncodedNormal(_,B,g7):(M=g7,M.x=0,M.y=0);let Q=P;if(I.hasWebMercatorT){let k=Z.lerp(u.south,u.north,P);Q=(Ui.geodeticLatitudeToMercatorAngle(k)-S)*R}let N;n.hasGeodeticSurfaceNormals&&(N=t.geodeticSurfaceNormal(V,C7)),n.encode(i,o*E,V,w,W,M,Q,N),c.minimumHeight=Math.min(c.minimumHeight,W),c.maximumHeight=Math.max(c.maximumHeight,W),++o}return o}function BCe(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let d=s;d!==a;d+=c){let u=e[d],h=t[d];if(!x7(h,u))continue;let p;switch(i){case Rn.WEST:p=u.westIndicesSouthToNorth;break;case Rn.SOUTH:p=u.southIndicesEastToWest;break;case Rn.EAST:p=u.eastIndicesNorthToSouth;break;case Rn.NORTH:p=u.northIndicesWestToEast;break}let g=p[n?0:p.length-1];if(l(g))return u.encoding.decodeHeight(u.vertices,g)}}function x7(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function wCe(e,t,n,i,o,r,s,a){let c,d,u,h,p,g=i[o?0:n.length-1],f=n[o?0:n.length-1];if(x7(g,f)&&(r===0?s===0?(c=o?f.northIndicesWestToEast:f.eastIndicesNorthToSouth,d=o,u=o):(c=o?f.eastIndicesNorthToSouth:f.southIndicesEastToWest,d=!o,u=!1):s===0?(c=o?f.westIndicesSouthToNorth:f.northIndicesWestToEast,d=!o,u=!0):(c=o?f.southIndicesEastToWest:f.westIndicesSouthToNorth,d=o,u=!o),c.length>0)){h=o?0:c.length-1,p=c[h],f.encoding.decodeTextureCoordinates(f.vertices,p,Iu);let b=ZP(g,e.tile,Iu,Iu);if(b.x===r&&b.y===s)return y7(f,p,r,s,a),!0;if(h=Yo(c,d?r:s,function(x,I){f.encoding.decodeTextureCoordinates(f.vertices,x,Iu);let _=ZP(g,e.tile,Iu,Iu);return u?d?_.x-r:_.y-s:d?r-_.x:s-_.y}),h<0){if(h=~h,h>0&&h<c.length)return Vmt(t,g,e.tile,f,c[h-1],c[h],r,s,d,a),!0}else return y7(f,c[h],r,s,a),!0}return!1}var Zmt=[new m,new m,new m,new m];function Bmt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Zmt;return m.fromRadians(n.west,n.south,o,a,c[0]),m.fromRadians(n.east,n.south,o,a,c[1]),m.fromRadians(n.west,n.north,o,a,c[2]),m.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var oL=iL;function gr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Gn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new Ce,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(gr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(gr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(gr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(gr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new Ce,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new U(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=le.clone(le.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(gr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=ce.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){Ih.setOwner(e,this,"_clippingPolygons")}}});function wmt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}gr.prototype.update=function(e){this._imageryLayers._update()};function Xmt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}gr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(wmt)})),Xmt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Pm._freeVertexArray(t[i]);t.length=0};gr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};gr.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Fa.LESS}}),this._blendRenderState=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},blending:bn.ALPHA_BLEND});let s=ke(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Qe.fromCache(s),s=ke(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Qe.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&oL.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let d=0,u=c.length;d<u;++d){let h=c[d],p=h.data.tileBoundingRegion;oht(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,p.minimumHeight)}}};function NCe(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}gr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)NCe(t[n],e)};gr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};gr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};gr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===li.CULLED_BUT_NEEDED,o=n.terrainState),Pm.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Zr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Pm.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var Wmt=new ue,DCe=new le,Fmt=new le,Pmt=new ge;function Gk(e,t){if(t.west<t.east)return t;let n=le.clone(t,Fmt);return le.center(e,Pmt).longitude>0?n.east=Z.PI:n.west=-Z.PI,n}function QCe(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!le.equals(e.cartographicLimitRectangle,le.MAX_VALUE))}gr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=QCe(this,t);if(t.fog.enabled&&!o&&Z.fog(i,t.fog.density)>=1)return Zr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Zr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let d=Gk(e.rectangle,this.cartographicLimitRectangle),u=le.simpleIntersection(d,e.rectangle,DCe);if(!l(u))return Zr.NONE;if(le.equals(u,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==re.SCENE3D&&(c=Wmt,ue.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),m.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===re.MORPHING&&l(r.renderedMesh)&&(c=ue.union(s.boundingSphere,c,c))),!l(c))return Zr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let x=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=x!==on.INSIDE,x===on.OUTSIDE)return Zr.NONE}let p=this._clippingPolygons;if(l(p)&&p.enabled){let x=p.computeIntersectionWithBoundingVolume(s);e.isClipped=x!==on.OUTSIDE}let g,f=a.computeVisibility(c);if(f===on.OUTSIDE?g=Zr.NONE:f===on.INTERSECTING?g=Zr.PARTIAL:f===on.INSIDE&&(g=Zr.FULL),g===Zr.NONE)return g;let b=t.mode===re.SCENE3D&&t.camera.frustum instanceof gn;if(t.mode===re.SCENE3D&&!b&&l(n)&&!o){let x=r.occludeePointInScaledSpace;return!l(x)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(x,s.minimumHeight)?g:Zr.NONE}return g};gr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Mmt=[],vmt=[];gr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Mmt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===So.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],p=h.loadingImagery,g=!l(p)||p.state===Jn.FAILED||p.state===Jn.INVALID,f=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[f]=g&&i[f]}let d=this.quadtree._lastSelectionFrameNumber,u=vmt;for(u.length=0,u.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);u.length>0;){let h=u.pop(),p=h._lastSelectionResultFrame===d?h._lastSelectionResult:li.NONE;if(p===li.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===So.READY)return!1;let f=h.data.imagery;for(a=0,c=f.length;a<c;++a){let b=f[a],x=b.loadingImagery,I=!l(x)||x.state===Jn.FAILED||x.state===Jn.INVALID,_=(b.loadingImagery||b.readyImagery).imageryLayer._layerIndex;if(I&&!i[_])return!1}}else p===li.REFINED&&u.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Nmt=new m;gr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=m.subtract(i.center,o,Nmt),a=m.magnitude(s);return a<Z.EPSILON5?0:(m.divideByScalar(s,a,s),(1-m.dot(s,r))*e._distance)};var FCe=new X,Vk=new X,Dmt=new ce,Qmt=new ce,Umt=new ce,kmt=new m,PCe=new m,Ymt=new m,Omt=new m;gr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let d=i[a];l(d.readyImagery)&&d.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var Hmt=[new m,new m,new m,new m];function MCe(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Hmt;return m.fromRadians(n.west,n.south,o,a,c[0]),m.fromRadians(n.east,n.south,o,a,c[1]),m.fromRadians(n.west,n.north,o,a,c[2]),m.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}gr.prototype.computeDistanceToTile=function(e,t){zmt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,d=Math.abs(c-r),u=Math.abs(c-s);d>u?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function zmt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Pm);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new tu({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,d=e,u=i.mesh,h=i.terrainData;if(u!==void 0&&u.minimumHeight!==void 0&&u.maximumHeight!==void 0)r.minimumHeight=u.minimumHeight,r.maximumHeight=u.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let p=e.parent;for(;p!==void 0;){let g=p.data;if(g!==void 0){let f=g.mesh,b=g.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0){r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight;break}else if(b!==void 0&&b._minimumHeight!==void 0&&b._maximumHeight!==void 0){r.minimumHeight=b._minimumHeight,r.maximumHeight=b._maximumHeight;break}}p=p.parent}d=p}if(d!==void 0){let p=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(p!==1&&(c=!1,r.minimumHeight=Mr.getHeight(r.minimumHeight,p,g),r.maximumHeight=Mr.getHeight(r.maximumHeight,p,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=vn.clone(u.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=ue.clone(u.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=m.clone(u.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=MCe(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let b=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||b)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=MCe(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=d,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}gr.prototype.isDestroyed=function(){return!1};gr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),me(this)};function Kmt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,d;for(d=0;d<c;++d)if(o=a[d],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=d;break}if(s!==-1){let u=s+e;if(o=a[u],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,u);for(d=s;d<u;++d)a[d].freeResources();a.splice(s,e)}return!0}}gr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,d=c.length,u=-1,h=0;for(a=0;a<d;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)u===-1&&(u=a),++h;else if(u!==-1)break}if(u===-1)return;let p=u+h;e._createTileImagerySkeletons(s,n,p)&&(s._loadedCallbacks[e._layerIndex]=Kmt(h,e,n),s.state=_a.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=_a.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==li.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};gr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],d=c.loadingImagery;if(l(d)||(d=c.readyImagery),d.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};gr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};gr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Jmt=new X,jmt=new X;function vCe(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=X.multiplyByPoint(i,this.properties.rtc,PCe);return X.setTranslation(i,o,FCe),FCe},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=X.multiplyByPoint(i,this.properties.rtc,PCe);return X.setTranslation(i,r,Vk),X.multiply(o,Vk,Vk),Vk},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?X.multiply(e.context.uniformState.view,i.modelMatrix,Jmt):X.IDENTITY;return X.inverseTranspose(o,jmt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new ce(0,0,.5,1),fillHighlightColor:new U(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new D(65e5,9e6),nightFadeDistance:new D(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new m(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new m(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new m,center3D:void 0,rtc:new m,modifiedModelView:new X,tileRectangle:new ce,verticalExaggerationAndRelativeHeight:new D(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new D,southMercatorYAndOneOverHeight:new D,waterMask:void 0,waterMaskTranslationAndScale:new ce,minMaxHeight:new D,scaleAndBias:new X,clippingPlanesEdgeColor:U.clone(U.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new ce,frontFaceAlphaByDistance:new ce,backFaceAlphaByDistance:new ce,localizedTranslucencyRectangle:new ce,undergroundColor:U.clone(U.TRANSPARENT),undergroundColorAlphaByDistance:new ce,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?Lt(n,t.materialUniformMap):n}function qmt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=$mt(e,r,o),i.wireframeVertexArray.mesh=o}}function $mt(e,t,n){let o={indices:n.indices,primitiveType:We.TRIANGLES};Yn.toWireframe(o);let r=o.indices,s=It.createIndexBuffer({context:e,typedArray:r,usage:Ne.STATIC_DRAW,indexDatatype:Me.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new ui({context:e,attributes:t._attributes,indexBuffer:s})}var UCe,kCe,Zk;(function(){let e=new wt({geometry:nh.fromDimensions({dimensions:new m(2,2,2)})}),t=new wt({geometry:new cg({radius:1})}),n=new X,i,o;function r(s){return new Nn({geometryInstances:s,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})}UCe=function(s,a){return s===i||(Zk(),i=s,n=X.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=tn.fromColor(a),o=r(e)),o},kCe=function(s,a){return s===i||(Zk(),i=s,n=X.fromTranslation(s.center,n),n=X.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=tn.fromColor(a),o=r(t)),o},Zk=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var eht=new ce(0,0,0,0),tht={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},nht=U.TRANSPARENT,iht=new zt;function oht(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new oL(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let vt=r.credits;for(let Rt=0,si=vt.length;Rt<si;++Rt)o.addCreditToNextFrame(vt[Rt])}let s=Kt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let d=n.cameraUnderground,u=n.globeTranslucencyState,h=u.translucent,p=u.frontFaceAlphaByDistance,g=u.backFaceAlphaByDistance,f=u.rectangle,b=e.undergroundColor??nht,x=e.undergroundColorAlphaByDistance??iht,I=QCe(e,n)&&n.mode===re.SCENE3D&&b.alpha>0&&(x.nearValue>0||x.farValue>0),_=e.lambertDiffuseMultiplier,E=e.vertexShadowDarkness,S=e.hasWaterMask&&l(a),R=S&&e.showWaterEffect,G=e.oceanNormalMap,B=R&&l(G),w=e.terrainProvider,F=l(w)&&e.terrainProvider.hasVertexNormals,P=n.fog.enabled&&n.fog.renderable&&!d,A=e.showGroundAtmosphere&&n.mode===re.SCENE3D,T=Gn.castShadows(e.shadows)&&!h,L=Gn.receiveShadows(e.shadows)&&!h,V=e.hueShift,W=e.saturationShift,M=e.brightnessShift,Q=!(Z.equalsEpsilon(V,0,Z.EPSILON7)&&Z.equalsEpsilon(W,0,Z.EPSILON7)&&Z.equalsEpsilon(M,0,Z.EPSILON7)),N=!1;if(A){let vt=m.magnitude(n.camera.positionWC),Rt=e.nightFadeOutDistance;N=vt>Rt}S&&--s,B&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=u.numberOfTextureUniforms;let k=i.renderedMesh,v=k.center,O=k.encoding,H=i.tileBoundingRegion,ee=n.verticalExaggeration,K=n.verticalExaggerationRelativeHeight,te=ee!==1,q=O.hasGeodeticSurfaceNormals,pe=Dmt,ye=0,he=0,xe=0,Te=0,Be=!1;if(n.mode!==re.SCENE3D){let vt=n.mapProjection,Rt=vt.project(le.southwest(t.rectangle),Ymt),si=vt.project(le.northeast(t.rectangle),Omt);if(pe.x=Rt.x,pe.y=Rt.y,pe.z=si.x,pe.w=si.y,n.mode!==re.MORPHING&&(v=kmt,v.x=0,v.y=(pe.z+pe.x)*.5,v.z=(pe.w+pe.y)*.5,pe.x-=v.y,pe.y-=v.z,pe.z-=v.y,pe.w-=v.z),n.mode===re.SCENE2D&&O.quantization===Ia.BITS12){let _t=1/(Math.pow(2,12)-1)*.5,Fo=(pe.z-pe.x)*_t,Uo=(pe.w-pe.y)*_t;pe.x-=Fo,pe.y-=Uo,pe.z+=Fo,pe.w+=Uo}vt instanceof Ui&&(ye=t.rectangle.south,he=t.rectangle.north,xe=Ui.geodeticLatitudeToMercatorAngle(ye),Te=1/(Ui.geodeticLatitudeToMercatorAngle(he)-xe),Be=!0)}let Le=tht;Le.frameState=n,Le.surfaceTile=i,Le.hasWaterMask=S,Le.showReflectiveOcean=R,Le.showOceanWaves=B,Le.enableLighting=e.enableLighting,Le.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Le.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Le.showGroundAtmosphere=A,Le.atmosphereLightIntensity=e.atmosphereLightIntensity,Le.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Le.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Le.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Le.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Le.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Le.perFragmentGroundAtmosphere=N,Le.hasVertexNormals=F,Le.useWebMercatorProjection=Be,Le.clippedByBoundaries=i.clippedByBoundaries,Le.hasGeodeticSurfaceNormals=q,Le.hasExaggeration=te;let De=i.imagery,Ue=0,je=De.length,it=e.showSkirts&&!d&&!h,nn=e.backFaceCulling&&!d&&!h,rt=nn?e._renderState:e._disableCullingRenderState,rn=nn?e._blendRenderState:e._disableCullingBlendRenderState,Jt=rt,Xt=e._firstPassInitialColor,Li=n.context;if(l(e._debug.boundingSphereTile)||Zk(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let vt=e._drawCommands.length;for(let Rt=0;Rt<vt;++Rt)e._uniformMaps[Rt]=vCe(n,e)}do{let vt=0,Rt,si;if(e._drawCommands.length<=e._usedDrawCommands?(Rt=new ot,Rt.owner=t,Rt.cull=!1,Rt.boundingVolume=new ue,Rt.orientedBoundingBox=void 0,si=vCe(n,e),e._drawCommands.push(Rt),e._uniformMaps.push(si)):(Rt=e._drawCommands[e._usedDrawCommands],si=e._uniformMaps[e._usedDrawCommands]),Rt.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let fs=H.boundingVolume,tc=H.boundingSphere;l(fs)?UCe(fs,U.RED).update(n):l(tc)&&kCe(tc,U.RED).update(n)}let _t=si.properties;ce.clone(Xt,_t.initialColor),_t.oceanNormalMap=G,_t.lightingFadeDistance.x=e.lightingFadeOutDistance,_t.lightingFadeDistance.y=e.lightingFadeInDistance,_t.nightFadeDistance.x=e.nightFadeOutDistance,_t.nightFadeDistance.y=e.nightFadeInDistance,_t.atmosphereLightIntensity=e.atmosphereLightIntensity,_t.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,_t.atmosphereMieCoefficient=e.atmosphereMieCoefficient,_t.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,_t.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,_t.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,_t.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Fo=d?g:p,Uo=d?p:g;l(Fo)&&(ce.fromElements(Fo.near,Fo.nearValue,Fo.far,Fo.farValue,_t.frontFaceAlphaByDistance),ce.fromElements(Uo.near,Uo.nearValue,Uo.far,Uo.farValue,_t.backFaceAlphaByDistance)),ce.fromElements(x.near,x.nearValue,x.far,x.farValue,_t.undergroundColorAlphaByDistance),U.clone(b,_t.undergroundColor),_t.lambertDiffuseMultiplier=_,_t.vertexShadowDarkness=E;let Va=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;Va&&U.clone(e.fillHighlightColor,_t.fillHighlightColor),_t.verticalExaggerationAndRelativeHeight.x=ee,_t.verticalExaggerationAndRelativeHeight.y=K,_t.center3D=k.center,m.clone(v,_t.rtc),ce.clone(pe,_t.tileRectangle),_t.southAndNorthLatitude.x=ye,_t.southAndNorthLatitude.y=he,_t.southMercatorYAndOneOverHeight.x=xe,_t.southMercatorYAndOneOverHeight.y=Te;let Cr=Qmt,wr=Gk(t.rectangle,e.cartographicLimitRectangle),ve=Umt,ut=Gk(t.rectangle,f);m.fromElements(V,W,M,_t.hsbShift);let qe=t.rectangle,nt=1/qe.width,yt=1/qe.height;Cr.x=(wr.west-qe.west)*nt,Cr.y=(wr.south-qe.south)*yt,Cr.z=(wr.east-qe.west)*nt,Cr.w=(wr.north-qe.south)*yt,ce.clone(Cr,_t.localizedCartographicLimitRectangle),ve.x=(ut.west-qe.west)*nt,ve.y=(ut.south-qe.south)*yt,ve.z=(ut.east-qe.west)*nt,ve.w=(ut.north-qe.south)*yt,ce.clone(ve,_t.localizedTranslucencyRectangle);let $t=P&&Z.fog(t._distance,n.fog.density)>Z.EPSILON3;Q=Q&&($t||A);let Sn=!1,fo=!1,uo=!1,ra=!1,sa=!1,Hn=!1,Ti=!1,Rs=!1,Jo=!1,Ga=!1;for(;vt<s&&Ue<je;){let fs=De[Ue],tc=fs.readyImagery;if(++Ue,!l(tc)||tc.imageryLayer.alpha===0)continue;let nc=fs.useWebMercatorT?tc.textureWebMercator:tc.texture,Xr=tc.imageryLayer;l(fs.textureTranslationAndScale)||(fs.textureTranslationAndScale=Xr._calculateTextureTranslationAndScale(t,fs)),_t.dayTextures[vt]=nc,_t.dayTextureTranslationAndScale[vt]=fs.textureTranslationAndScale,_t.dayTextureTexCoordsRectangle[vt]=fs.textureCoordinateRectangle,_t.dayTextureUseWebMercatorT[vt]=fs.useWebMercatorT,_t.dayTextureAlpha[vt]=Xr.alpha,Hn=Hn||_t.dayTextureAlpha[vt]!==1,_t.dayTextureNightAlpha[vt]=Xr.nightAlpha,Ti=Ti||_t.dayTextureNightAlpha[vt]!==1,_t.dayTextureDayAlpha[vt]=Xr.dayAlpha,Ti=Ti||_t.dayTextureDayAlpha[vt]!==1,_t.dayTextureBrightness[vt]=Xr.brightness,Sn=Sn||_t.dayTextureBrightness[vt]!==is.DEFAULT_BRIGHTNESS,_t.dayTextureContrast[vt]=Xr.contrast,fo=fo||_t.dayTextureContrast[vt]!==is.DEFAULT_CONTRAST,_t.dayTextureHue[vt]=Xr.hue,uo=uo||_t.dayTextureHue[vt]!==is.DEFAULT_HUE,_t.dayTextureSaturation[vt]=Xr.saturation,ra=ra||_t.dayTextureSaturation[vt]!==is.DEFAULT_SATURATION,_t.dayTextureOneOverGamma[vt]=1/Xr.gamma,sa=sa||_t.dayTextureOneOverGamma[vt]!==1/is.DEFAULT_GAMMA,_t.dayTextureSplit[vt]=Xr.splitDirection,Rs=Rs||_t.dayTextureSplit[vt]!==0;let kl=_t.dayTextureCutoutRectangles[vt];if(l(kl)||(kl=_t.dayTextureCutoutRectangles[vt]=new ce),ce.clone(ce.ZERO,kl),l(Xr.cutoutRectangle)){let Zo=Gk(qe,Xr.cutoutRectangle),mn=le.simpleIntersection(Zo,qe,DCe);Jo=l(mn)||Jo,kl.x=(Zo.west-qe.west)*nt,kl.y=(Zo.south-qe.south)*yt,kl.z=(Zo.east-qe.west)*nt,kl.w=(Zo.north-qe.south)*yt}let Yl=_t.colorsToAlpha[vt];l(Yl)||(Yl=_t.colorsToAlpha[vt]=new ce);let aa=l(Xr.colorToAlpha)&&Xr.colorToAlphaThreshold>0;if(Ga=Ga||aa,aa){let Zo=Xr.colorToAlpha;Yl.x=Zo.red,Yl.y=Zo.green,Yl.z=Zo.blue,Yl.w=Xr.colorToAlphaThreshold}else Yl.w=-1;if(l(tc.credits)){let Zo=tc.credits;for(let mn=0,Re=Zo.length;mn<Re;++mn)o.addCreditToNextFrame(Zo[mn])}++vt}_t.dayTextures.length=vt,_t.waterMask=a,ce.clone(c,_t.waterMaskTranslationAndScale),_t.minMaxHeight.x=O.minimumHeight,_t.minMaxHeight.y=O.maximumHeight,X.clone(O.matrix,_t.scaleAndBias);let po=e._clippingPlanes,jo=l(po)&&po.enabled&&t.isClipped;jo&&(_t.clippingPlanesEdgeColor=U.clone(po.edgeColor,_t.clippingPlanesEdgeColor),_t.clippingPlanesEdgeWidth=po.edgeWidth);let Wu=e._clippingPolygons,xr=l(Wu)&&Wu.enabled&&t.isClipped;Le.numberOfDayTextures=vt,Le.applyBrightness=Sn,Le.applyContrast=fo,Le.applyHue=uo,Le.applySaturation=ra,Le.applyGamma=sa,Le.applyAlpha=Hn,Le.applyDayNightAlpha=Ti,Le.applySplit=Rs,Le.enableFog=$t,Le.enableClippingPlanes=jo,Le.clippingPlanes=po,Le.enableClippingPolygons=xr,Le.clippingPolygons=Wu,Le.hasImageryLayerCutout=Jo,Le.colorCorrect=Q,Le.highlightFillTile=Va,Le.colorToAlpha=Ga,Le.showUndergroundColor=I,Le.translucent=h;let Vs=i.renderedMesh.indices.length;it||(Vs=i.renderedMesh.indexCountWithoutSkirts),Rt.shaderProgram=e._surfaceShaderSet.getShaderProgram(Le),Rt.castShadows=T,Rt.receiveShadows=L,Rt.renderState=Jt,Rt.primitiveType=We.TRIANGLES,Rt.vertexArray=i.vertexArray||i.fill.vertexArray,Rt.count=Vs,Rt.uniformMap=si,Rt.pass=Ge.GLOBE,e._debug.wireframe&&(qmt(Li,e,t),l(i.wireframeVertexArray)&&(Rt.vertexArray=i.wireframeVertexArray,Rt.primitiveType=We.LINES,Rt.count=Vs*2));let ks=Rt.boundingVolume,Jm=Rt.orientedBoundingBox;n.mode!==re.SCENE3D?(ue.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,H.minimumHeight,H.maximumHeight,ks),m.fromElements(ks.center.z,ks.center.x,ks.center.y,ks.center),n.mode===re.MORPHING&&(ks=ue.union(H.boundingSphere,ks,ks))):(Rt.boundingVolume=ue.clone(H.boundingSphere,ks),Rt.orientedBoundingBox=vn.clone(H.boundingVolume,Jm)),Rt.dirty=!0,h&&u.updateDerivedCommands(Rt,n),NCe(Rt,n),Jt=rn,Xt=eht}while(Ue<je)}var BP=gr;var q2i=y(C(),1);function YCe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=le.clone(le.MAX_VALUE)}Object.defineProperties(YCe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=zt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=zt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=le.clone(le.MAX_VALUE)),le.clone(e,this._rectangle)}}});var wP=YCe;var ZWi=y(C(),1);var nWi=y(C(),1);function OCe(e){this._ellipsoid=new gg(e.ellipsoid,m.ZERO)}Object.defineProperties(OCe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var XP=OCe;var cWi=y(C(),1);var I7=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},rht=1e3;function Ea(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=li.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new I7(rht),this.state=_a.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}Ea.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new Ea({tilingScheme:e,x:s,y:r,level:0});return i};var sht=256;function aht(e,t,n,i){let o=n.width/sht*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}Ea.prototype._getCacheKey=function(e,t){return aht(e.longitude,e.latitude,this._rectangle,t)};Ea.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};Ea.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};Ea.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};Ea.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],le.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],le.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(Ea.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<_a.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});Ea.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};Ea.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};Ea.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};Ea.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};Ea.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};Ea.prototype.freeResources=function(){this.clearPositionCache(),this.state=_a.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),Bk(this._southwestChild),this._southwestChild=void 0,Bk(this._southeastChild),this._southeastChild=void 0,Bk(this._northwestChild),this._northwestChild=void 0,Bk(this._northeastChild),this._northeastChild=void 0};function Bk(e){l(e)&&e.freeResources()}var WP=Ea;var uWi=y(C(),1);function wk(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}wk.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};wk.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),HCe(this,t)),t=i}};function HCe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}wk.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&HCe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var FP=wk;function Mm(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new FP,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new XP({ellipsoid:n}),this._tileLoadProgressEvent=new Ce,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(Mm.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});Mm.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function cht(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,KCe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}Mm.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==_a.START&&e(t),t=t.replacementNext};Mm.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};Mm.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};Mm.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function KCe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}Mm.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(cht(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),KCe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};Mm.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),mht(this,e),Iht(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function lht(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=Ce.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}Mm.prototype.endFrame=function(e){!e.passes.render||e.mode===re.MORPHING||(bht(this,e),xht(this,e),lht(this,e))};Mm.prototype.isDestroyed=function(){return!1};Mm.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var MP,zCe=new ge;function dht(e,t){let n=le.center(e.rectangle,zCe),i=n.longitude-MP.longitude,o=n.latitude-MP.latitude;n=le.center(t.rectangle,zCe);let r=n.longitude-MP.longitude,s=n.latitude-MP.latitude;return i*i+o*o-(r*r+s*s)}var uht=new m,PP=[];function mht(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let b=r.tilingScheme;if(l(b)){let x=r.tilingScheme;e._levelZeroTiles=WP.createLevelZeroTiles(x);let I=e._levelZeroTiles.length;if(PP.length<I)for(PP=new Array(I),o=0;o<I;++o)PP[o]===void 0&&(PP[o]=new vP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;MP=t.camera.positionCartographic,a.sort(dht);let d=e._addHeightCallbacks,u=e._removeHeightCallbacks,h=t.frameNumber,p;if(d.length>0||u.length>0){for(o=0,p=a.length;o<p;++o)s=a[o],s._updateCustomData(h,d,u);d.length=0,u.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let f=X.getTranslation(g.transform,uht);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(f,e._cameraReferenceFrameOriginCartographic),o=0,p=a.length;o<p;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?Cc(e,s,r,t,c,!1,PP[o]):(Ug(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Ug(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function vP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function JCe(){this.southwest=new vP,this.southeast=new vP,this.northwest=new vP,this.northeast=new vP}JCe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var E7=new Array(31);for(let e=0;e<E7.length;++e)E7[e]=new JCe;function hht(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=Aht(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,d=n.northwestChild,u=n.northeastChild,h=e._lastSelectionFrameNumber,p=n._lastSelectionResultFrame===h?n._lastSelectionResult:li.NONE,g=e.tileProvider;if(s||i){let f=li.originalResult(p)===li.RENDERED,b=li.originalResult(p)===li.CULLED||p===li.NONE,x=n.state===_a.DONE,I=f||b||x;if(I||l(g.canRenderWithoutLosingDetail)&&(I=g.canRenderWithoutLosingDetail(n)),I){s&&Ug(e,e._tileLoadQueueMedium,n,t),Xk(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Ug(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&d.upsampledFromParent&&u.upsampledFromParent){Xk(e,n),Ug(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(d),e._tileReplacementQueue.markTileRendered(u),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.REFINED;let b=e._tilesToRender.length,x=e._tileLoadQueueLow.length,I=e._tileLoadQueueMedium.length,_=e._tileLoadQueueHigh.length,E=e._tileToUpdateHeights.length;if(fht(e,a,c,d,u,t,i,o),b!==e._tilesToRender.length){let S=o.allAreRenderable,R=o.anyWereRenderedLastFrame,G=o.notYetRenderableCount,B=!1;if(!S&&!R){let w=e._tilesToRender;for(let P=b;P<w.length;++P){let A=w[P];for(;A!==void 0&&A._lastSelectionResult!==li.KICKED&&A!==n;)A._lastSelectionResult=li.kick(A._lastSelectionResult),A=A.parent}e._tilesToRender.length=b,e._tileToUpdateHeights.length=E,Xk(e,n),n._lastSelectionResult=li.RENDERED;let F=p===li.RENDERED;!F&&G>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=x,e._tileLoadQueueMedium.length=I,e._tileLoadQueueHigh.length=_,Ug(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,B=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=F,F||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!B&&Ug(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,Xk(e,n),Ug(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function fht(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,d=e._tileProvider,u=e._occluders,h=E7[t.level],p=h.southwest,g=h.southeast,f=h.northwest,b=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(Cc(e,t,d,r,u,s,p),Cc(e,n,d,r,u,s,g),Cc(e,i,d,r,u,s,f),Cc(e,o,d,r,u,s,b)):(Cc(e,i,d,r,u,s,f),Cc(e,t,d,r,u,s,p),Cc(e,o,d,r,u,s,b),Cc(e,n,d,r,u,s,g)):c.latitude<t.rectangle.north?(Cc(e,n,d,r,u,s,g),Cc(e,t,d,r,u,s,p),Cc(e,o,d,r,u,s,b),Cc(e,i,d,r,u,s,f)):(Cc(e,o,d,r,u,s,b),Cc(e,i,d,r,u,s,f),Cc(e,n,d,r,u,s,g),Cc(e,t,d,r,u,s,p)),h.combine(a)}function pht(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&le.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&le.contains(n,e._cameraReferenceFrameOriginCartographic)}function Cc(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Zr.NONE)return hht(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,pht(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Ug(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:li.NONE;c!==li.CULLED_BUT_NEEDED&&c!==li.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=li.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Ug(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=li.CULLED):t._lastSelectionResult=li.CULLED;t._lastSelectionResultFrame=i.frameNumber}function Aht(e,t,n){if(t.mode===re.SCENE2D||t.camera.frustum instanceof gn||t.camera.frustum instanceof qr)return ght(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=Z.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function ght(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,d=e._tileProvider.getLevelMaximumGeometricError(n.level),u=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=d/u;return t.fog.enabled&&t.mode!==re.SCENE2D&&(h-=Z.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function Xk(e,t){e._tilesToRender.push(t)}function bht(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Fi()+e._loadQueueTimeSlice,s=e._tileProvider,a=_7(e,t,s,r,n,!1);a=_7(e,t,s,r,i,a),_7(e,t,s,r,o,a)}function yht(e,t){return e._loadPriority-t._loadPriority}function _7(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(yht);for(let s=0,a=o.length;s<a&&(Fi()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var rL=new En,Wk=new ge,ay=new m,Cht=[];function xht(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=Cht;n.length=0;let i=e._tileToUpdateHeights,o=Fi(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,d=e.tileProvider.tilingScheme.ellipsoid,u;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let b=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:li.NONE;(b===li.RENDERED||b===li.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let p=h.customData,g=p.length,f=!1;for(u=e._lastTileIndex;u<g;++u){let b=p[u],x=h.data.terrainData,I=l(x)&&x.wasCreatedByUpsampling();if(h.level>b.level&&!I){let _,E=h.getPositionCacheEntry(b.positionCartographic,e.maximumScreenSpaceError);if(l(E))_=E;else{if(l(b.positionOnEllipsoidSurface)||(b.positionOnEllipsoidSurface=m.fromRadians(b.positionCartographic.longitude,b.positionCartographic.latitude,0,d)),a===re.SCENE3D){let S=d.geodeticSurfaceNormal(b.positionOnEllipsoidSurface,rL.direction),R=d.getSurfaceNormalIntersectionWithZAxis(b.positionOnEllipsoidSurface,11500,rL.origin);if(!l(R)){let G=0;l(h.data.tileBoundingRegion)&&(G=h.data.tileBoundingRegion.minimumHeight);let B=Math.min(G,-11500),w=m.multiplyByScalar(S,Math.abs(B)+1,ay);m.subtract(b.positionOnEllipsoidSurface,w,rL.origin)}}else ge.clone(b.positionCartographic,Wk),Wk.height=-11500,c.project(Wk,ay),m.fromElements(ay.z,ay.x,ay.y,ay),m.clone(ay,rL.origin),m.clone(m.UNIT_X,rL.direction);_=h.data.pick(rL,a,c,!1,ay),l(_)&&h.setPositionCacheEntry(b.positionCartographic,e.maximumScreenSpaceError,_)}if(l(_)){if(l(b.callback)){let S=d.cartesianToCartographic(_,Wk);b.callback(S)}b.level=h.level}}if(Fi()>=s){f=!0;break}}if(f){e._lastTileIndex=u;break}else e._lastTileIndex=0,i.shift()}for(u=0;u<n.length;u++)i.push(n[u])}function Iht(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var NP=Mm;function uf(e){e=e??ie.default;let t=new Tp({ellipsoid:e}),n=new Xx;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new GP,this._material=void 0,this._surface=new NP({tileProvider:new BP({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new Ce,this._undergroundColor=U.clone(U.BLACK),this._undergroundColorAlphaByDistance=new zt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new wP,S7(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new Ve({url:hn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=ie.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new m(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new m(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=Z.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=Z.PI*e.minimumRadius,this.nightFadeOutDistance=Z.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*Z.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Gn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(uf.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=le.clone(le.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&S7(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,S7(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=U.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=zt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function S7(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[_h,qS];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(yP),e._surfaceShaderSet.baseVertexShaderSource=new Oe({sources:[_h,qS,CP],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new Oe({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function _ht(e){return function(t,n){let i=ue.distanceSquaredTo(t.pickBoundingSphere,e),o=ue.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var Eht=[],Tht={start:0,stop:0};uf.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=Eht;s.length=0;let a=this._surface._tilesToRender,c=a.length,d,u;for(u=0;u<c;++u){d=a[u];let p=d.data;if(!l(p))continue;let g=p.pickBoundingSphere;if(o!==re.SCENE3D)p.pickBoundingSphere=g=ue.fromRectangleWithHeights2D(d.rectangle,r,p.tileBoundingRegion.minimumHeight,p.tileBoundingRegion.maximumHeight,g),m.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(p.renderedMesh))ue.clone(p.tileBoundingRegion.boundingSphere,g);else continue;let f=fi.raySphere(e,g,Tht);l(f)&&s.push(p)}s.sort(_ht(e.origin));let h;for(c=s.length,u=0;u<c&&(h=s[u].pick(e,t.mode,t.mapProjection,n,i),!l(h));++u);return h};var Sht=new ge;uf.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==re.SCENE3D){n=m.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,Sht);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var Lht=new m,jCe=new m,Rht=new ge,Vht=new En;function T7(e,t){return l(e)&&le.contains(e.rectangle,t)?e:void 0}uf.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!le.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=T7(n._southwestChild,e)||T7(n._southeastChild,e)||T7(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=m.fromRadians(e.longitude,e.latitude,0,a,Lht),d=Vht,u=a.geodeticSurfaceNormal(c,d.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,d.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let f=Math.min(g??0,-11500),b=m.multiplyByScalar(u,Math.abs(f)+1,jCe);m.subtract(c,b,d.origin)}let p=n.data.pick(d,void 0,s,!1,jCe);if(l(p))return a.cartesianToCartographic(p,Rht).height};uf.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};uf.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let d=this;a.fetchImage().then(function(u){c===d._oceanNormalMapResource.url&&(d._oceanNormalMap=d._oceanNormalMap&&d._oceanNormalMap.destroy(),d._oceanNormalMap=new Wt({context:e.context,source:u}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===re.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};uf.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};uf.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};uf.prototype.isDestroyed=function(){return!1};uf.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),me(this)};var DP=uf;var uPi=y(C(),1);var SFi=y(C(),1);var gFi=y(C(),1);var dFi=y(C(),1);function Ght(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var QP=Ght;var uxe={},Zht=32.184,Bht=2451545,qCe=-.0529921,$Ce=-.1059842,exe=13.0120009,txe=13.3407154,nxe=.9856003,ixe=26.4057084,oxe=13.064993,rxe=.3287146,sxe=1.7484877,axe=-.1589763,cxe=.0036096,lxe=.1643573,dxe=12.9590088,L7=new j;uxe.ComputeMoon=function(e,t){l(e)||(e=j.now()),L7=j.addSeconds(e,Zht,L7);let n=j.totalDays(L7)-Bht,i=n/ai.DAYS_PER_JULIAN_CENTURY,o=(125.045+qCe*n)*Z.RADIANS_PER_DEGREE,r=(250.089+$Ce*n)*Z.RADIANS_PER_DEGREE,s=(260.008+exe*n)*Z.RADIANS_PER_DEGREE,a=(176.625+txe*n)*Z.RADIANS_PER_DEGREE,c=(357.529+nxe*n)*Z.RADIANS_PER_DEGREE,d=(311.589+ixe*n)*Z.RADIANS_PER_DEGREE,u=(134.963+oxe*n)*Z.RADIANS_PER_DEGREE,h=(276.617+rxe*n)*Z.RADIANS_PER_DEGREE,p=(34.226+sxe*n)*Z.RADIANS_PER_DEGREE,g=(15.134+axe*n)*Z.RADIANS_PER_DEGREE,f=(119.743+cxe*n)*Z.RADIANS_PER_DEGREE,b=(239.961+lxe*n)*Z.RADIANS_PER_DEGREE,x=(25.053+dxe*n)*Z.RADIANS_PER_DEGREE,I=Math.sin(o),_=Math.sin(r),E=Math.sin(s),S=Math.sin(a),R=Math.sin(c),G=Math.sin(d),B=Math.sin(u),w=Math.sin(h),F=Math.sin(p),P=Math.sin(g),A=Math.sin(f),T=Math.sin(b),L=Math.sin(x),V=Math.cos(o),W=Math.cos(r),M=Math.cos(s),Q=Math.cos(a),N=Math.cos(c),k=Math.cos(d),v=Math.cos(u),O=Math.cos(h),H=Math.cos(p),ee=Math.cos(g),K=Math.cos(f),te=Math.cos(b),q=Math.cos(x),pe=(269.9949+.0031*i-3.8787*I-.1204*_+.07*E-.0172*S+.0072*G-.0052*P+.0043*L)*Z.RADIANS_PER_DEGREE,ye=(66.5392+.013*i+1.5419*V+.0239*W-.0278*M+.0068*Q-.0029*k+9e-4*v+8e-4*ee-9e-4*q)*Z.RADIANS_PER_DEGREE,he=(38.3213+13.17635815*n-14e-13*n*n+3.561*I+.1208*_-.0642*E+.0158*S+.0252*R-.0066*G-.0047*B-.0046*w+.0028*F+.0052*P+.004*A+.0019*T-.0044*L)*Z.RADIANS_PER_DEGREE,xe=(13.17635815-14e-13*(2*n)+3.561*V*qCe+.1208*W*$Ce-.0642*M*exe+.0158*Q*txe+.0252*N*nxe-.0066*k*ixe-.0047*v*oxe-.0046*O*rxe+.0028*H*sxe+.0052*ee*axe+.004*K*cxe+.0019*te*lxe-.0044*q*dxe)/86400*Z.RADIANS_PER_DEGREE;return l(t)||(t=new QP),t.rightAscension=pe,t.declination=ye,t.rotation=he,t.rotationRate=xe,t};var UP=uxe;function mxe(e){(!l(e)||typeof e!="function")&&(e=UP.ComputeMoon),this._computeFunction=e}var wht=new m,Xht=new m,Wht=new m;function Fht(e,t,n){let i=wht;i.x=Math.cos(e+Z.PI_OVER_TWO),i.y=Math.sin(e+Z.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=Wht;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=m.cross(r,i,Xht);return l(n)||(n=new $),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var Pht=new $,Mht=new Pe;mxe.prototype.evaluate=function(e,t){l(e)||(e=j.now());let n=this._computeFunction(e),i=Fht(n.rightAscension,n.declination,t),o=Z.zeroToTwoPi(n.rotation),r=Pe.fromAxisAngle(m.UNIT_Z,o,Mht),s=$.fromQuaternion(Pe.conjugate(r,r),Pht);return $.multiply(s,i,i)};var kP=mxe;var JFi=y(C(),1);var R7={position:0};function Fk(e){e=e??Y.EMPTY_OBJECT,this.center=m.clone(e.center??m.ZERO),this._center=new m,this.radii=m.clone(e.radii),this._radii=new m,this._oneOverEllipsoidRadiiSquared=new m,this._boundingSphere=new ue,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=new X,this._computedModelMatrix=new X,this.show=e.show??!0,this.material=e.material??so.fromType(so.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new ot({owner:e._owner??this}),this._pickCommand=new ot({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function vht(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:we.POSITION_ONLY}));return t=ui.fromGeometry({context:e,geometry:n,attributeLocations:R7,bufferUsage:Ne.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}Fk.prototype.update=function(e){if(!this.show||e.mode!==re.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?bn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=vht(t));let o=!1,r=this.radii;if(!m.equals(this._radii,r)){m.clone(r,this._radii);let b=this._oneOverEllipsoidRadiiSquared;b.x=1/(r.x*r.x),b.y=1/(r.y*r.y),b.z=1/(r.z*r.z),o=!0}(!X.equals(this.modelMatrix,this._modelMatrix)||!m.equals(this.center,this._center))&&(X.clone(this.modelMatrix,this._modelMatrix),m.clone(this.center,this._center),X.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(m.clone(m.ZERO,this._boundingSphere.center),this._boundingSphere.radius=m.maximumComponent(r),ue.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,d=this._useLogDepth!==c;this._useLogDepth=c;let u=this._colorCommand,h,p;(s||a||i||d)&&(h=new Oe({sources:[jS]}),p=new Oe({sources:[this.material.shaderSource,JS]}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:R7}),u.vertexArray=this._va,u.renderState=this._rs,u.shaderProgram=this._sp,u.uniformMap=Lt(this._uniforms,this.material._uniforms),u.executeInClosestFrustum=n);let g=e.commandList,f=e.passes;if(f.render&&(u.boundingVolume=this._boundingSphere,u.debugShowBoundingVolume=this.debugShowBoundingVolume,u.modelMatrix=this._computedModelMatrix,u.pass=n?Ge.TRANSLUCENT:Ge.OPAQUE,g.push(u)),f.pick){let b=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||d)&&(h=new Oe({sources:[jS]}),p=new Oe({sources:[this.material.shaderSource,JS],pickColorQualifier:"uniform"}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._pickSP=ln.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:R7}),b.vertexArray=this._va,b.renderState=this._rs,b.shaderProgram=this._pickSP,b.uniformMap=Lt(Lt(this._uniforms,this._pickUniforms),this.material._uniforms),b.executeInClosestFrustum=n),b.boundingVolume=this._boundingSphere,b.modelMatrix=this._computedModelMatrix,b.pass=n?Ge.TRANSLUCENT:Ge.OPAQUE,g.push(b)}};Fk.prototype.isDestroyed=function(){return!1};Fk.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),me(this)};var YP=Fk;function OP(e){e=e??Y.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=hn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??ie.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new YP({radii:this.ellipsoid.radii,material:so.fromType(so.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new kP}Object.defineProperties(OP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Pk=new $,Nht=new $,Dht=new m,Mk=[];OP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(Dt.computeIcrfToFixedMatrix(n,Pk))||Dt.computeTemeToPseudoFixedMatrix(n,Pk);let i=this._axes.evaluate(n,Nht);$.transpose(i,i),$.multiply(Pk,i,i);let o=ry.computeMoonPositionInEarthInertialFrame(n,Dht);$.multiplyByVector(Pk,o,o),X.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=Mk,Mk.length=0,t.update(e),e.commandList=r,Mk.length===1?Mk[0]:void 0};OP.prototype.isDestroyed=function(){return!1};OP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),me(this)};var HP=OP;var i8i=y(C(),1);var hPi=y(C(),1);var V7=[],G7=[];function Qht(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=V7,d=G7,u,h;for(u=0;u<s;++u)c[u]=e[i+u];for(h=0;h<a;++h)d[h]=e[o+h+1];u=0,h=0;for(let p=i;p<=r;++p){let g=c[u],f=d[h];u<s&&(h>=a||t(g,f,n)<=0)?(e[p]=g,++u):h<a&&(e[p]=f,++h)}}function Z7(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);Z7(e,t,n,i,r),Z7(e,t,n,r+1,o),Qht(e,t,n,i,r,o)}function Uht(e,t,n){let i=e.length,o=Math.ceil(i*.5);V7.length=o,G7.length=o,Z7(e,t,n,0,i-1),V7.length=0,G7.length=0}var Sp=Uht;var IPi=y(C(),1);function Jc(e,t){this._occluderPosition=m.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var vk=new m;Object.defineProperties(Jc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=m.clone(e,this._cameraPosition);let t=m.subtract(this._occluderPosition,e,vk),n=m.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=m.multiplyByScalar(t,n,vk);let a=o*o*n;s=m.add(e,m.multiplyByScalar(r,a,vk),vk)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});Jc.fromBoundingSphere=function(e,t,n){return l(n)?(m.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new Jc(e,t)};var fxe=new m;Jc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=m.subtract(e,this._occluderPosition,fxe),n=this._occluderRadius;if(n=m.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=m.subtract(e,this._cameraPosition,t),n*n>m.magnitudeSquared(t)}return!1};var kht=new m;Jc.prototype.isBoundingSphereVisible=function(e){let t=m.clone(e.center,kht),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=m.subtract(t,this._occluderPosition,fxe),o=this._occluderRadius-n;if(o=m.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=m.subtract(t,this._cameraPosition,i),o*o+n*n>m.magnitudeSquared(i)):!1;if(o>0){i=m.subtract(t,this._cameraPosition,i);let r=m.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Yht=new m;Jc.prototype.computeVisibility=function(e){let t=m.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Zr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=m.subtract(t,this._occluderPosition,Yht),o=this._occluderRadius-n,r=m.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=m.subtract(t,this._cameraPosition,i);let s=m.magnitudeSquared(i);return o*o+n*n<s?Zr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Zr.FULL:Zr.PARTIAL):(i=m.subtract(t,this._horizonPlanePosition,i),m.dot(i,this._horizonPlaneNormal)>-n?Zr.PARTIAL:Zr.FULL))}}return Zr.NONE};var Nk=new m;Jc.computeOccludeePoint=function(e,t,n){let i=m.clone(t),o=m.clone(e.center),r=e.radius,s=n.length,a=m.normalize(m.subtract(i,o,Nk),Nk),c=-m.dot(a,o),d=Jc._anyRotationVector(o,a,c),u=Jc._horizonToPlaneNormalDotProduct(e,a,c,d,n[0]);if(!u)return;let h;for(let g=1;g<s;++g){if(h=Jc._horizonToPlaneNormalDotProduct(e,a,c,d,n[g]),!h)return;h<u&&(u=h)}if(u<.0017453283658983088)return;let p=r/u;return m.add(o,m.multiplyByScalar(a,p,Nk),Nk)};var Oht=[];Jc.computeOccludeePointFromRectangle=function(e,t){t=t??ie.default;let n=le.subsample(e,t,0,Oht),i=ue.fromPoints(n),o=m.ZERO;if(!m.equals(o,i.center))return Jc.computeOccludeePoint(new ue(o,t.minimumRadius),i.center,n)};var Hht=new m;Jc._anyRotationVector=function(e,t,n){let i=m.abs(t,Hht),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new m,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=m.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=m.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=m.UNIT_Z);let a=(m.dot(t,i)+n)/-m.dot(t,s);return m.normalize(m.subtract(m.add(i,m.multiplyByScalar(s,a,r),i),e,i),i)};var zht=new m;Jc._rotationVector=function(e,t,n,i,o){let r=m.subtract(i,e,zht);if(r=m.normalize(r,r),m.dot(t,r)<.9999999847691291){let s=m.cross(t,r,r);if(m.magnitude(s)>Z.EPSILON13)return m.normalize(s,new m)}return o};var B7=new m,Kht=new m,Dk=new m,hxe=new m;Jc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=m.clone(o,B7),s=m.clone(e.center,Kht),a=e.radius,c=m.subtract(s,r,Dk),d=m.magnitudeSquared(c),u=a*a;if(d<u)return!1;let h=d-u,p=Math.sqrt(h),f=1/Math.sqrt(d),x=p*f*p;c=m.normalize(c,c);let I=m.add(r,m.multiplyByScalar(c,x,hxe),hxe),_=Math.sqrt(h-x*x),E=this._rotationVector(s,t,n,r,i),S=m.fromElements(E.x*E.x*c.x+(E.x*E.y-E.z)*c.y+(E.x*E.z+E.y)*c.z,(E.x*E.y+E.z)*c.x+E.y*E.y*c.y+(E.y*E.z-E.x)*c.z,(E.x*E.z-E.y)*c.x+(E.y*E.z+E.x)*c.y+E.z*E.z*c.z,B7);S=m.normalize(S,S);let R=m.multiplyByScalar(S,_,B7);E=m.normalize(m.subtract(m.add(I,R,Dk),s,Dk),Dk);let G=m.dot(t,E);E=m.normalize(m.subtract(m.subtract(I,R,E),s,E),E);let B=m.dot(t,E);return G<B?G:B};var zP=Jc;var PPi=y(C(),1);var ZPi=y(C(),1);function Lp(e){e=e??Y.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Xs,this._perspectiveMatrix=new X,this._infinitePerspective=new X}function w7(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=X.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=X.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(Lp.prototype,{projectionMatrix:{get:function(){return w7(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return w7(this),this._infinitePerspective}}});var Jht=new m,jht=new m,qht=new m,$ht=new m;Lp.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,d=this.far,u=m.cross(t,n,Jht),h=jht;m.multiplyByScalar(t,c,h),m.add(e,h,h);let p=qht;m.multiplyByScalar(t,d,p),m.add(e,p,p);let g=$ht;m.multiplyByScalar(u,a,g),m.add(h,g,g),m.subtract(g,e,g),m.normalize(g,g),m.cross(g,n,g),m.normalize(g,g);let f=i[0];return l(f)||(f=i[0]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(u,s,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(n,g,g),m.normalize(g,g),f=i[1],l(f)||(f=i[1]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(n,r,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(u,g,g),m.normalize(g,g),f=i[2],l(f)||(f=i[2]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(n,o,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(g,u,g),m.normalize(g,g),f=i[3],l(f)||(f=i[3]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),f=i[4],l(f)||(f=i[4]=new ce),f.x=t.x,f.y=t.y,f.z=t.z,f.w=-m.dot(t,h),m.negate(t,g),f=i[5],l(f)||(f=i[5]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,p),this._cullingVolume};Lp.prototype.getPixelDimensions=function(e,t,n,i,o){w7(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};Lp.prototype.clone=function(e){return l(e)||(e=new Lp),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};Lp.prototype.equals=function(e){return l(e)&&e instanceof Lp&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};Lp.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof Lp&&Z.equalsEpsilon(this.right,e.right,t,n)&&Z.equalsEpsilon(this.left,e.left,t,n)&&Z.equalsEpsilon(this.top,e.top,t,n)&&Z.equalsEpsilon(this.bottom,e.bottom,t,n)&&Z.equalsEpsilon(this.near,e.near,t,n)&&Z.equalsEpsilon(this.far,e.far,t,n)};var vl=Lp;function Id(e){e=e??Y.EMPTY_OBJECT,this._offCenterFrustum=new vl,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}Id.packedLength=6;Id.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};Id.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Id),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function mf(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(Id.prototype,{projectionMatrix:{get:function(){return mf(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return mf(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return mf(this),this._fovy}},sseDenominator:{get:function(){return mf(this),this._sseDenominator}},offCenterFrustum:{get:function(){return mf(this),this._offCenterFrustum}}});Id.prototype.computeCullingVolume=function(e,t,n){return mf(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Id.prototype.getPixelDimensions=function(e,t,n,i,o){return mf(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Id.prototype.clone=function(e){return l(e)||(e=new Id),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Id.prototype.equals=function(e){return!l(e)||!(e instanceof Id)?!1:(mf(this),mf(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Id.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Id)?!1:(mf(this),mf(e),Z.equalsEpsilon(this.fov,e.fov,t,n)&&Z.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Ni=Id;var KPi=y(C(),1);function KP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(KP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function eft(e,t,n){let i=t.createViewportQuadCommand(lP,{framebuffer:n,renderState:Qe.fromCache({viewport:new Ke(0,0,256,256)})});e._drawCommand=i}KP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Wt({context:t,width:256,height:256,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST});this._colorTexture=n;let i=new jr({context:t,colorTextures:[n],destroyAttachments:!1});eft(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};KP.prototype.isDestroyed=function(){return!1};KP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),me(this)};var JP=KP;var vMi=y(C(),1);var aMi=y(C(),1);var bxe={};function tft(e,t,n){let i,o,r;if(e instanceof Ni){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof vl)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var nft=new m,pxe=new m;function yxe(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(d){let u=n(d);if(d<=.5){let p=(u-o)/a;return Z.lerp(e,-Z.PI_OVER_TWO,p)}let h=(u-r)/c;return Z.lerp(-Z.PI_OVER_TWO,t,1-h)}}return function(o){return Z.lerp(e,t,o)}}function W7(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,d=e.up,u=e.right,h=e.frustum,p=m.subtract(a,c,nft),g=m.magnitude(m.multiplyByScalar(d,m.dot(p,d),pxe)),f=m.magnitude(m.multiplyByScalar(u,m.dot(p,u),pxe));r=Math.min(tft(h,g,f)*.2,1e9)}if(s<r){let d=-Math.pow((r-n)*1e6,.125),u=Math.pow((r-i)*1e6,1/8);return function(h){let p=h*(u-d)+d;return-Math.pow(p,8)/1e6+r}}return function(a){return Z.lerp(n,i,a)}}function jP(e,t){return Z.equalsEpsilon(e,Z.TWO_PI,Z.EPSILON11)&&(e=0),t>e+Math.PI?e+=Z.TWO_PI:t<e-Math.PI&&(e-=Z.TWO_PI),e}var Cxe=new m;function ift(e,t,n,i,o,r,s,a){let c=e.camera,d=m.clone(c.position,Cxe),u=c.pitch,h=jP(c.heading,i),p=jP(c.roll,r),g=W7(c,n,d.z,n.z,s),f=yxe(u,o,g,a);function b(x){let I=x.time/t;c.setView({orientation:{heading:Z.lerp(h,i,I),pitch:f(I),roll:Z.lerp(p,r,I)}}),D.lerp(d,n,I,c.position),c.position.z=g(I)}return b}function oft(e,t){e.longitude<t.longitude?e.longitude+=Z.TWO_PI:t.longitude+=Z.TWO_PI}function rft(e,t){let n=e.longitude-t.longitude;n<-Z.PI?e.longitude+=Z.TWO_PI:n>Z.PI&&(t.longitude+=Z.TWO_PI)}var sft=new ge,aft=new ge;function cft(e,t,n,i,o,r,s,a,c,d){let u=e.camera,p=e.mapProjection.ellipsoid,g=ge.clone(u.positionCartographic,sft),f=u.pitch,b=jP(u.heading,i),x=jP(u.roll,r),I=p.cartesianToCartographic(n,aft);g.longitude=Z.zeroToTwoPi(g.longitude),I.longitude=Z.zeroToTwoPi(I.longitude);let _=!1;if(l(a)){let G=Z.zeroToTwoPi(a),B=Math.min(g.longitude,I.longitude),w=Math.max(g.longitude,I.longitude),F=G>=B&&G<=w;if(l(c)){let P=Math.abs(g.longitude-I.longitude),A=Z.TWO_PI-P;(F?P:A)<(F?A:P)*c&&!F&&(_=!0)}else F||(_=!0)}_?oft(g,I):rft(g,I);let E=W7(u,n,g.height,I.height,s),S=yxe(f,o,E,d);function R(){let G=g.longitude,B=I.longitude,w=g.latitude,F=I.latitude;return function(A){let T=A.time/t,L=m.fromRadians(Z.lerp(G,B,T),Z.lerp(w,F,T),E(T),p);u.setView({destination:L,orientation:{heading:Z.lerp(b,i,T),pitch:S(T),roll:Z.lerp(x,r,T)}})}}return R()}function lft(e,t,n,i,o,r,s){let a=e.camera,c=m.clone(a.position,Cxe),d=jP(a.heading,i),u=a.frustum.right-a.frustum.left,h=W7(a,n,u,n.z,s);function p(g){let f=g.time/t;a.setView({orientation:{heading:Z.lerp(d,i,f)}}),D.lerp(c,n,f,a.position);let b=h(f),x=a.frustum,I=x.top/x.right,_=(b-(x.right-x.left))*.5;x.right+=_,x.left-=_,x.top=I*x.right,x.bottom=-x.top}return p}var Axe=new ge,dft=new m;function X7(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function gxe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}bxe.createTween=function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===re.MORPHING)return X7();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,d=t.flyOverLongitudeWeight,u=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==re.SCENE3D&&(s.cartesianToCartographic(n,Axe),n=r.project(Axe,dft));let p=e.camera,g=t.endTransform;l(g)&&p._setTransform(g);let f=t.duration;l(f)||(f=Math.ceil(m.distance(p.position,n)/1e6)+2,f=Math.min(f,3));let b=t.heading??0,x=t.pitch??-Z.PI_OVER_TWO,I=t.roll??0,_=e.screenSpaceCameraController;_.enableInputs=!1;let E=gxe(_,t.complete),S=gxe(_,t.cancel),R=p.frustum,G=e.mode===re.SCENE2D;if(G=G&&D.equalsEpsilon(p.position,n,Z.EPSILON6),G=G&&Z.equalsEpsilon(Math.max(R.right-R.left,R.top-R.bottom),n.z,Z.EPSILON6),G=G||e.mode!==re.SCENE2D&&m.equalsEpsilon(n,p.position,Z.EPSILON10),G=G&&Z.equalsEpsilon(Z.negativePiToPi(b),Z.negativePiToPi(p.heading),Z.EPSILON10)&&Z.equalsEpsilon(Z.negativePiToPi(x),Z.negativePiToPi(p.pitch),Z.EPSILON10)&&Z.equalsEpsilon(Z.negativePiToPi(I),Z.negativePiToPi(p.roll),Z.EPSILON10),G)return X7(E,S);let B=new Array(4);if(B[re.SCENE2D]=lft,B[re.SCENE3D]=cft,B[re.COLUMBUS_VIEW]=ift,f<=0)return X7(function(){B[i](e,1,n,b,x,I,a,c,d,u)({time:1}),typeof E=="function"&&E()},S);let w=B[i](e,f,n,b,x,I,a,c,d,u);if(!l(h)){let F=p.positionCartographic.height,P=i===re.SCENE3D?s.cartesianToCartographic(n).height:n.z;F>P&&F>11500?h=ms.CUBIC_OUT:h=ms.QUINTIC_IN_OUT}return{duration:f,easingFunction:h,startObject:{time:0},stopObject:{time:f},update:w,complete:E,cancel:S}};var qP=bxe;var lMi=y(C(),1),uft={ROTATE:0,INFINITE_SCROLL:1},_d=Object.freeze(uft);function un(e){this._scene=e,this._transform=X.clone(X.IDENTITY),this._invTransform=X.clone(X.IDENTITY),this._actualTransform=X.clone(X.IDENTITY),this._actualInvTransform=X.clone(X.IDENTITY),this._transformChanged=!1,this.position=new m,this._position=new m,this._positionWC=new m,this._positionCartographic=new ge,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new m,this._direction=new m,this._directionWC=new m,this.up=new m,this._up=new m,this._upWC=new m,this.right=new m,this._right=new m,this._rightWC=new m,this.frustum=new Ni,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=Z.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new Ce,this._moveEnd=new Ce,this._changed=new Ce,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new X,this._invViewMatrix=new X,Rxe(this),this._mode=re.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new ge(Math.PI,Z.PI_OVER_TWO)),this._max2Dfrustum=void 0,Nxe(this,un.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=m.magnitude(this.position);n+=n*un.DEFAULT_VIEW_FACTOR,m.normalize(this.position,this.position),m.multiplyByScalar(this.position,n,this.position)}un.TRANSFORM_2D=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);un.TRANSFORM_2D_INVERSE=X.inverseTransformation(un.TRANSFORM_2D,new X);un.DEFAULT_VIEW_RECTANGLE=le.fromDegrees(-95,-20,-70,90);un.DEFAULT_VIEW_FACTOR=.5;un.DEFAULT_OFFSET=new Vm(0,-Z.PI_OVER_FOUR,0);function Rxe(e){X.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),X.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),X.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function mft(e){if(!l(e._oldPositionWC))e._oldPositionWC=m.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=m.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=m.magnitude(t),e._oldPositionWC=m.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Fi()):e.timeSinceMoved=Math.max(Fi()-e._lastMovedTimestamp,0)/1e3}}un.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==re.SCENE2D};un.prototype._updateCameraChanged=function(){let e=this;if(mft(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%Z.TWO_PI;i=i>Z.PI?Z.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%Z.TWO_PI;s=s>Z.PI?Z.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===re.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=m.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let p=e.position,g=e._changedPosition,f=e.frustum,b=e._changedFrustum,x=p.x+f.left,I=p.x+f.right,_=g.x+b.left,E=g.x+b.right,S=p.y+f.bottom,R=p.y+f.top,G=g.y+b.bottom,B=g.y+b.top,w=Math.max(x,_),F=Math.min(I,E),P=Math.max(S,G),A=Math.min(R,B),T;if(w>=F||P>=R)T=1;else{let L=b;x<_&&I>E&&S<G&&R>B&&(L=f),T=1-(F-w)*(A-P)/((L.right-L.left)*(L.top-L.bottom))}T>t&&(e._changed.raiseEvent(T),e._changedPosition=m.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=m.clone(e.positionWC,e._changedPosition),e._changedDirection=m.clone(e.directionWC,e._changedDirection);return}let c=Z.acosClamped(m.dot(e.directionWC,e._changedDirection)),d;l(e.frustum.fovy)?d=c/(e.frustum.fovy*.5):d=c;let h=m.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(d>t||h>t)&&(e._changed.raiseEvent(Math.max(d,h)),e._changedPosition=m.clone(e.positionWC,e._changedPosition),e._changedDirection=m.clone(e.directionWC,e._changedDirection))};function hft(e){Dt.basisTo2D(e._projection,e._transform,e._actualTransform)}var fft=new ge,pft=new m,Qk=new m,Aft=new ce,gft=new ce,bft=new ce,yft=new ce,Cft=new ce;function xft(e){let t=e._projection,n=t.ellipsoid,i=X.getColumn(e._transform,3,Aft),o=n.cartesianToCartographic(i,fft),r=t.project(o,pft),s=gft;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=ce.clone(ce.UNIT_X,Cft),c=ce.add(X.getColumn(e._transform,0,Qk),i,Qk);n.cartesianToCartographic(c,o),t.project(o,r);let d=bft;d.x=r.z,d.y=r.x,d.z=r.y,d.w=0,m.subtract(d,s,d),d.x=0;let u=yft;if(m.magnitudeSquared(d)>Z.EPSILON10)m.cross(a,d,u);else{let h=ce.add(X.getColumn(e._transform,1,Qk),i,Qk);n.cartesianToCartographic(h,o),t.project(o,r),u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,m.subtract(u,s,u),u.x=0,m.magnitudeSquared(u)<Z.EPSILON10&&(ce.clone(ce.UNIT_Y,d),ce.clone(ce.UNIT_Z,u))}m.cross(u,a,d),m.normalize(d,d),m.cross(a,d,u),m.normalize(u,u),X.setColumn(e._actualTransform,0,d,e._actualTransform),X.setColumn(e._actualTransform,1,u,e._actualTransform),X.setColumn(e._actualTransform,2,a,e._actualTransform),X.setColumn(e._actualTransform,3,s,e._actualTransform)}var F7=new m;function qc(e){let t=e._mode,n=!1,i=0;t===re.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!m.equals(o,e.position)||n;r&&(o=m.clone(e.position,e._position));let s=e._direction,a=!m.equals(s,e.direction);a&&(m.normalize(e.direction,e.direction),s=m.clone(e.direction,e._direction));let c=e._up,d=!m.equals(c,e.up);d&&(m.normalize(e.up,e.up),c=m.clone(e.up,e._up));let u=e._right,h=!m.equals(u,e.right);h&&(m.normalize(e.right,e.right),u=m.clone(e.right,e._right));let p=e._transformChanged||e._modeChanged;e._transformChanged=!1,p&&(X.inverseTransformation(e._transform,e._invTransform),e._mode===re.COLUMBUS_VIEW||e._mode===re.SCENE2D?X.equals(X.IDENTITY,e._transform)?X.clone(un.TRANSFORM_2D,e._actualTransform):e._mode===re.COLUMBUS_VIEW?hft(e):xft(e):X.clone(e._transform,e._actualTransform),X.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||p)if(e._positionWC=X.multiplyByPoint(g,o,e._positionWC),t===re.SCENE3D||t===re.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let f=F7;f.x=e._positionWC.y,f.y=e._positionWC.z,f.z=e._positionWC.x,t===re.SCENE2D&&(f.z=i),e._projection.unproject(f,e._positionCartographic)}if(a||d||h){let f=m.dot(s,m.cross(c,u,F7));if(Math.abs(1-f)>Z.EPSILON2){let b=1/m.magnitudeSquared(c),x=m.dot(c,s)*b,I=m.multiplyByScalar(s,x,F7);c=m.normalize(m.subtract(c,I,e._up),e._up),m.clone(c,e.up),u=m.cross(s,c,e._right),m.clone(u,e.right)}}(a||p)&&(e._directionWC=X.multiplyByPointAsVector(g,s,e._directionWC),m.normalize(e._directionWC,e._directionWC)),(d||p)&&(e._upWC=X.multiplyByPointAsVector(g,c,e._upWC),m.normalize(e._upWC,e._upWC)),(h||p)&&(e._rightWC=X.multiplyByPointAsVector(g,u,e._rightWC),m.normalize(e._rightWC,e._rightWC)),(r||a||d||h||p)&&Rxe(e)}function Vxe(e,t){let n;return Z.equalsEpsilon(Math.abs(e.z),1,Z.EPSILON3)?n=Math.atan2(t.y,t.x)-Z.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-Z.PI_OVER_TWO,Z.TWO_PI-Z.zeroToTwoPi(n)}function Gxe(e){return Z.PI_OVER_TWO-Z.acosClamped(e.z)}function Zxe(e,t,n){let i=0;return Z.equalsEpsilon(Math.abs(e.z),1,Z.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=Z.zeroToTwoPi(i+Z.TWO_PI)),i}var Yk=new X,Ok=new X;Object.defineProperties(un.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return qc(this),this._invTransform}},viewMatrix:{get:function(){return qc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return qc(this),this._invViewMatrix}},positionCartographic:{get:function(){return qc(this),this._positionCartographic}},positionWC:{get:function(){return qc(this),this._positionWC}},directionWC:{get:function(){return qc(this),this._directionWC}},upWC:{get:function(){return qc(this),this._upWC}},rightWC:{get:function(){return qc(this),this._rightWC}},heading:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Vxe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Gxe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Zxe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});un.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==re.MORPHING,t=this._mode===re.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===re.SCENE2D&&Wxe(this,this.position)};var Ift=new m,_ft=new m,Eft=new m;un.prototype._setTransform=function(e){let t=m.clone(this.positionWC,Ift),n=m.clone(this.upWC,_ft),i=m.clone(this.directionWC,Eft);X.clone(e,this._transform),this._transformChanged=!0,qc(this);let o=this._actualInvTransform;X.multiplyByPoint(o,t,this.position),X.multiplyByPointAsVector(o,i,this.direction),X.multiplyByPointAsVector(o,n,this.up),m.cross(this.direction,this.up,this.right),qc(this)};var Tft=new D,Sft=new En,Lft=new m,Rft=new m;function Bxe(e){if(!X.equals(X.IDENTITY,e.transform))return m.magnitude(e.position);let t=e._scene,n=t.globe,i=Tft;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,Sft);o=n.pickWorldCoordinates(a,t,!0,Lft)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,Rft));let s;if(l(o)||l(r)){let a=l(r)?m.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?m.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}un.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof gn&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=Bxe(this)))};var Hk=new m,D7=new X,Vft=new X,Q7=new Pe,U7=new $,wxe=new ge;function Gft(e,t,n){let i=X.clone(e.transform,D7),o=Dt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,Vft);e._setTransform(o),m.clone(m.ZERO,e.position),n.heading=n.heading-Z.PI_OVER_TWO;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,0,e.direction),$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function Zft(e,t,n,i){let o=X.clone(e.transform,D7);if(e._setTransform(X.IDENTITY),!m.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,wxe);t=a.project(c,Hk)}m.clone(t,e.position)}n.heading=n.heading-Z.PI_OVER_TWO;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,0,e.direction),$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function Bft(e,t,n,i){let o=X.clone(e.transform,D7);if(e._setTransform(X.IDENTITY),!m.equals(t,e.positionWC)){if(i){let c=e._projection,d=c.ellipsoid.cartesianToCartographic(t,wxe);t=c.project(d,Hk)}D.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===_d.ROTATE){n.heading=n.heading-Z.PI_OVER_TWO,n.pitch=-Z.PI_OVER_TWO,n.roll=0;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right)}e._setTransform(o)}var wft=new m,Xft=new m,Wft=new m;function Xxe(e,t,n,i){let o=m.clone(n.direction,wft),r=m.clone(n.up,Xft);if(e._scene.mode===re.SCENE3D){let a=e._projection.ellipsoid,c=Dt.eastNorthUpToFixedFrame(t,a,Yk),d=X.inverseTransformation(c,Ok);X.multiplyByPointAsVector(d,o,o),X.multiplyByPointAsVector(d,r,r)}let s=m.cross(o,r,Wft);return i.heading=Vxe(o,r),i.pitch=Gxe(o),i.roll=Zxe(o,r,s),i}var N7={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},sL=new ic;un.prototype.setView=function(e){e=e??Y.EMPTY_OBJECT;let t=e.orientation??Y.EMPTY_OBJECT,n=this._mode;if(n===re.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??m.clone(this.positionWC,Hk);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,Hk),i=!1),l(t.direction)&&(t=Xxe(this,o,t,N7.orientation)),sL.heading=t.heading??0,sL.pitch=t.pitch??-Z.PI_OVER_TWO,sL.roll=t.roll??0,n===re.SCENE3D?Gft(this,o,sL):n===re.SCENE2D?Bft(this,o,sL,i):Zft(this,o,sL,i)};var Fft=new m;un.prototype.flyHome=function(e){let t=this._mode;if(t===re.MORPHING&&this._scene.completeMorph(),t===re.SCENE2D)this.flyTo({destination:un.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:X.IDENTITY});else if(t===re.SCENE3D){let n=this.getRectangleCameraCoordinates(un.DEFAULT_VIEW_RECTANGLE),i=m.magnitude(n);i+=i*un.DEFAULT_VIEW_FACTOR,m.normalize(n,n),m.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:X.IDENTITY})}else if(t===re.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new m(0,-1,1);i=m.multiplyByScalar(m.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(m.normalize(i,Fft).z),roll:0},endTransform:X.IDENTITY,convert:!1})}};un.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new ce),qc(this),X.multiplyByVector(this._actualInvTransform,e,t)};un.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPoint(this._actualInvTransform,e,t)};un.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPointAsVector(this._actualInvTransform,e,t)};un.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new ce),qc(this),X.multiplyByVector(this._actualTransform,e,t)};un.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPoint(this._actualTransform,e,t)};un.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPointAsVector(this._actualTransform,e,t)};function Wxe(e,t){let n=e._scene.mapMode2D===_d.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var xxe=new m;un.prototype.move=function(e,t){let n=this.position;m.multiplyByScalar(e,t,xxe),m.add(n,xxe,n),this._mode===re.SCENE2D&&Wxe(this,n),this._adjustOrthographicFrustum(!0)};un.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===re.SCENE2D?zk(this,e):this.move(this.direction,e)};un.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===re.SCENE2D?zk(this,-e):this.move(this.direction,-e)};un.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};un.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};un.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};un.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};un.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.up,-e)};un.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.up,e)};un.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.right,-e)};un.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.right,e)};var Pft=new Pe,Mft=new $;un.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Pe.fromAxisAngle(e,-n,Pft),o=$.fromQuaternion(i,Mft),r=this.direction,s=this.up,a=this.right;$.multiplyByVector(o,r,r),$.multiplyByVector(o,s,s),$.multiplyByVector(o,a,a)};un.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};un.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var vft=new Pe,Nft=new $;un.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Pe.fromAxisAngle(e,-n,vft),o=$.fromQuaternion(i,Nft);$.multiplyByVector(o,this.position,this.position),$.multiplyByVector(o,this.direction,this.direction),$.multiplyByVector(o,this.up,this.up),m.cross(this.direction,this.up,this.right),m.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};un.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,Fxe(this,e)};un.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,Fxe(this,-e)};var Dft=new m,Qft=new m,Uft=new m,Ixe=new m;function Fxe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!m.equalsEpsilon(e.position,m.ZERO,Z.EPSILON2)){let i=m.normalize(n,Dft),o=m.equalsEpsilon(i,e.constrainedAxis,Z.EPSILON2),r=m.equalsEpsilon(i,m.negate(e.constrainedAxis,Ixe),Z.EPSILON2);if(!o&&!r){let s=m.normalize(e.constrainedAxis,Qft),a=m.dot(i,s),c=Z.acosClamped(a);t>0&&t>c&&(t=c-Z.EPSILON4),a=m.dot(i,m.negate(s,Ixe)),c=Z.acosClamped(a),t<0&&-t>c&&(t=-c+Z.EPSILON4);let d=m.cross(s,i,Uft);e.rotate(d,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}un.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,Pxe(this,-e)};un.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,Pxe(this,e)};function Pxe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function zk(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===_d.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===_d.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function Mxe(e,t){e.move(e.direction,t)}un.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===re.SCENE2D?zk(this,e):Mxe(this,e)};un.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===re.SCENE2D?zk(this,-e):Mxe(this,-e)};un.prototype.getMagnitude=function(){if(this._mode===re.SCENE3D)return m.magnitude(this.position);if(this._mode===re.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===re.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var kft=new X;un.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??ie.default,o=Dt.eastNorthUpToFixedFrame(e,i,kft);this.lookAtTransform(o,t)};var Yft=new m,Oft=new Pe,Hft=new Pe,zft=new $;function vxe(e,t,n){t=Z.clamp(t,-Z.PI_OVER_TWO,Z.PI_OVER_TWO),e=Z.zeroToTwoPi(e)-Z.PI_OVER_TWO;let i=Pe.fromAxisAngle(m.UNIT_Y,-t,Oft),o=Pe.fromAxisAngle(m.UNIT_Z,-e,Hft),r=Pe.multiply(o,i,o),s=$.fromQuaternion(r,zft),a=m.clone(m.UNIT_X,Yft);return $.multiplyByVector(s,a,a),m.negate(a,a),m.multiplyByScalar(a,n,a),a}un.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=vxe(t.heading,t.pitch,t.range):n=t,this._mode===re.SCENE2D){D.clone(D.ZERO,this.position),m.negate(n,this.up),this.up.z=0,m.magnitudeSquared(this.up)<Z.EPSILON10&&m.clone(m.UNIT_Y,this.up),m.normalize(this.up,this.up),this._setTransform(X.IDENTITY),m.negate(m.UNIT_Z,this.direction),m.cross(this.direction,this.up,this.right),m.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=m.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}m.clone(n,this.position),m.negate(this.position,this.direction),m.normalize(this.direction,this.direction),m.cross(this.direction,m.UNIT_Z,this.right),m.magnitudeSquared(this.right)<Z.EPSILON10&&m.clone(m.UNIT_X,this.right),m.normalize(this.right,this.right),m.cross(this.right,this.direction,this.up),m.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var $P=new ge,Kft=new ge,Jft=new m,jft=new m,qft=new m,$ft=new m,ept=new m,tpt=new m,npt=new m,P7=new m,ipt={direction:new m,right:new m,up:new m},_xe;function jc(e,t,n,i){return Math.abs(m.dot(t,n))/i-m.dot(e,n)}function Nxe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:ipt,{north:s,south:a,west:c}=t,{east:d}=t;c>d&&(d+=Z.TWO_PI);let u=(c+d)*.5,h;if(a<-Z.PI_OVER_TWO+Z.RADIANS_PER_DEGREE&&s>Z.PI_OVER_TWO-Z.RADIANS_PER_DEGREE)h=0;else{let F=$P;F.longitude=u,F.latitude=s,F.height=0;let P=Kft;P.longitude=u,P.latitude=a,P.height=0;let A=_xe;(!l(A)||A.ellipsoid!==o)&&(_xe=A=new sA(void 0,void 0,o)),A.setEndPoints(F,P),h=A.interpolateUsingFraction(.5,$P).latitude}let p=$P;p.longitude=u,p.latitude=h,p.height=0;let g=o.cartographicToCartesian(p,npt),f=$P;f.longitude=d,f.latitude=s;let b=o.cartographicToCartesian(f,Jft);f.longitude=c;let x=o.cartographicToCartesian(f,qft);f.longitude=u;let I=o.cartographicToCartesian(f,ept);f.latitude=a;let _=o.cartographicToCartesian(f,tpt);f.longitude=d;let E=o.cartographicToCartesian(f,$ft);f.longitude=c;let S=o.cartographicToCartesian(f,jft);m.subtract(x,g,x),m.subtract(E,g,E),m.subtract(b,g,b),m.subtract(S,g,S),m.subtract(I,g,I),m.subtract(_,g,_);let R=o.geodeticSurfaceNormal(g,r.direction);m.negate(R,R);let G=m.cross(R,m.UNIT_Z,r.right);m.normalize(G,G);let B=m.cross(G,R,r.up),w;if(e.frustum instanceof gn){let F=Math.max(m.distance(b,x),m.distance(E,S)),P=Math.max(m.distance(b,E),m.distance(x,S)),A,T,L=e.frustum._offCenterFrustum,V=L.right/L.top,W=P*V;F>W?(A=F,T=A/V):(T=P,A=W),w=Math.max(A,T)}else{let F=Math.tan(e.frustum.fovy*.5),P=e.frustum.aspectRatio*F;if(w=Math.max(jc(R,B,x,F),jc(R,B,E,F),jc(R,B,b,F),jc(R,B,S,F),jc(R,B,I,F),jc(R,B,_,F),jc(R,G,x,P),jc(R,G,E,P),jc(R,G,b,P),jc(R,G,S,P),jc(R,G,I,P),jc(R,G,_,P)),a<0&&s>0){let A=$P;A.longitude=c,A.latitude=0,A.height=0;let T=o.cartographicToCartesian(A,P7);m.subtract(T,g,T),w=Math.max(w,jc(R,B,T,F),jc(R,G,T,P)),A.longitude=d,T=o.cartographicToCartesian(A,P7),m.subtract(T,g,T),w=Math.max(w,jc(R,B,T,F),jc(R,G,T,P))}}return m.add(g,m.multiplyByScalar(R,-w,P7),n)}var opt=new ge,rpt=new m,spt=new m;function apt(e,t,n){let i=e._projection;t.west>t.east&&(t=le.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=opt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,rpt);X.multiplyByPoint(o,a,a),X.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,spt);if(X.multiplyByPoint(o,c,c),X.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let d=Math.tan(e.frustum.fovy*.5),u=e.frustum.aspectRatio*d;n.z=Math.max((a.x-c.x)/u,(a.y-c.y)/d)*.5}else{let d=a.x-c.x,u=a.y-c.y;n.z=Math.max(d,u)}return n}var cpt=new ge,lpt=new m,dpt=new m;function upt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===_d.INFINITE_SCROLL?o+=Z.TWO_PI:(t=le.MAX_VALUE,o=t.east));let r=cpt;r.longitude=o,r.latitude=t.north;let s=i.project(r,lpt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,dpt),c=Math.abs(s.x-a.x)*.5,d=Math.abs(s.y-a.y)*.5,u,h,p=e.frustum.right/e.frustum.top,g=d*p;return c>g?(u=c,h=u/p):(h=d,u=g),d=Math.max(2*u,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=d,n=i.project(r,n),n}un.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new m),n===re.SCENE3D)return Nxe(this,e,t);if(n===re.COLUMBUS_VIEW)return apt(this,e,t);if(n===re.SCENE2D)return upt(this,e,t)};var mpt=new En;function hpt(e,t,n,i){n=n??ie.default;let o=e.getPickRay(t,mpt),r=fi.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return En.getPoint(o,s,i)}var fpt=new En;function ppt(e,t,n,i){let r=e.getPickRay(t,fpt).origin;r=m.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-Z.PI_OVER_TWO||s.latitude>Z.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var Apt=new En;function gpt(e,t,n,i){let o=e.getPickRay(t,Apt),r=-o.origin.x/o.direction.x;En.getPoint(o,r,i);let s=n.unproject(new m(i.y,i.z,0));if(!(s.latitude<-Z.PI_OVER_TWO||s.latitude>Z.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}un.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new m),t=t??ie.default,this._mode===re.SCENE3D)n=hpt(this,e,t,n);else if(this._mode===re.SCENE2D)n=ppt(this,e,this._projection,n);else if(this._mode===re.COLUMBUS_VIEW)n=gpt(this,e,this._projection,n);else return;return n}};var bpt=new m,ypt=new m,Cpt=new m;function xpt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,d=2/o*t.x-1,u=2/r*(r-t.y)-1,h=e.positionWC;m.clone(h,n.origin);let p=m.multiplyByScalar(e.directionWC,c,bpt);m.add(h,p,p);let g=m.multiplyByScalar(e.rightWC,d*c*a,ypt),f=m.multiplyByScalar(e.upWC,u*c*s,Cpt),b=m.add(p,g,n.direction);return m.add(b,f,b),m.subtract(b,h,b),m.normalize(b,b),n}var Uk=new m;function Ipt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let d=2/r*(r-t.y)-1;d*=(s.top-s.bottom)*.5;let u=n.origin;return m.clone(e.positionWC,u),m.multiplyByScalar(e.rightWC,c,Uk),m.add(Uk,u,u),m.multiplyByScalar(e.upWC,d,Uk),m.add(Uk,u,u),m.clone(e.directionWC,n.direction),n}un.prototype.getPickRay=function(e,t){l(t)||(t=new En);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?xpt(this,e,t):Ipt(this,e,t)};var _pt=new m,Ept=new m;un.prototype.distanceToBoundingSphere=function(e){let t=m.subtract(this.positionWC,e.center,_pt),n=m.multiplyByScalar(this.directionWC,m.dot(t,this.directionWC),Ept);return Math.max(0,m.magnitude(n)-e.radius)};var Tpt=new D;un.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,Tpt);return Math.max(o.x,o.y)};function Spt(e,t,n,i,o,r){let s=m.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let d=m.lerp(t,s,c.time,new m);e.worldToCameraCoordinatesPoint(d,e.position)}return{easingFunction:ms.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var Lpt=new m,Exe=new m,Rpt=new m,Vpt=new m;function Gpt(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(m.UNIT_X,Lpt),r=-m.dot(o,n)/m.dot(o,i),s=m.add(n,m.multiplyByScalar(i,r,Exe),Exe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,Rpt);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,d=m.magnitude(m.subtract(n,s,Vpt)),u=c*d,h=a*d,p=e._maxCoord.x,g=e._maxCoord.y,f=Math.max(u-p,p),b=Math.max(h-g,g);if(n.z<-f||n.z>f||n.y<-b||n.y>b){let x=s.y<-f||s.y>f,I=s.z<-b||s.z>b;if(x||I)return Spt(e,n,s,f,b,t)}}un.prototype.createCorrectPositionTween=function(e){if(this._mode===re.COLUMBUS_VIEW)return Gpt(this,e)};var Zpt=new m,Ta={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};un.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};un.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=Ta.destination,e.orientation.heading=Ta.heading,e.orientation.pitch=Ta.pitch,e.orientation.roll=Ta.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};un.prototype.flyTo=function(e){e=e??Y.EMPTY_OBJECT;let t=e.destination;if(this._mode===re.MORPHING)return;this.cancelFlight();let i=t instanceof le;i&&(t=this.getRectangleCameraCoordinates(t,Zpt));let o=e.orientation??Y.EMPTY_OBJECT;if(l(o.direction)&&(o=Xxe(this,t,o,N7.orientation)),l(e.duration)&&e.duration<=0){let u=N7;u.destination=e.destination,u.orientation.heading=o.heading,u.orientation.pitch=o.pitch,u.orientation.roll=o.roll,u.convert=e.convert,u.endTransform=e.endTransform,this.setView(u),typeof e.complete=="function"&&e.complete();return}let r=this,s;Ta.destination=t,Ta.heading=o.heading,Ta.pitch=o.pitch,Ta.roll=o.roll,Ta.duration=e.duration,Ta.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},Ta.cancel=e.cancel,Ta.endTransform=e.endTransform,Ta.convert=i?!1:e.convert,Ta.maximumHeight=e.maximumHeight,Ta.pitchAdjustHeight=e.pitchAdjustHeight,Ta.flyOverLongitude=e.flyOverLongitude,Ta.flyOverLongitudeWeight=e.flyOverLongitudeWeight,Ta.easingFunction=e.easingFunction;let a=this._scene,c=qP.createTween(a,Ta);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let d=this._scene.preloadFlightCamera;this._mode!==re.SCENE2D&&(l(d)||(d=un.clone(this)),d.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=d.frustum.computeCullingVolume(d.positionWC,d.directionWC,d.upWC))};function Bpt(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function wpt(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var Xpt=100;function Dxe(e,t,n){n=Vm.clone(l(n)?n:un.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=Xpt:e.frustum instanceof gn||e._mode===re.SCENE2D?n.range=wpt(e,s):n.range=Bpt(e,s),n.range=Z.clamp(n.range,i,o)}return n}un.prototype.viewBoundingSphere=function(e,t){t=Dxe(this,e,t),this.lookAt(e.center,t)};var Wpt=new X,Fpt=new m,Ppt=new m,Mpt=new m,vpt=new m,Npt=new ce,Dpt=new Pe,Qpt=new $;un.prototype.flyToBoundingSphere=function(e,t){t=t??Y.EMPTY_OBJECT;let n=this._mode===re.SCENE2D||this._mode===re.COLUMBUS_VIEW;this._setTransform(X.IDENTITY);let i=Dxe(this,e,t.offset),o;n?o=m.multiplyByScalar(m.UNIT_Z,i.range,Fpt):o=vxe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??ie.default,a=Dt.eastNorthUpToFixedFrame(e.center,s,Wpt);X.multiplyByPoint(a,o,o);let c,d;if(!n){if(c=m.subtract(e.center,o,Ppt),m.normalize(c,c),d=X.multiplyByPointAsVector(a,m.UNIT_Z,Mpt),1-Math.abs(m.dot(c,d))<Z.EPSILON6){let h=Pe.fromAxisAngle(c,i.heading,Dpt),p=$.fromQuaternion(h,Qpt);m.fromCartesian4(X.getColumn(a,1,Npt),d),$.multiplyByVector(p,d,d)}let u=m.cross(c,d,vpt);m.cross(u,c,d),m.normalize(d,d)}this.flyTo({destination:o,orientation:{direction:c,up:d},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var Txe=new m,Sxe=new m,M7=new m,Lxe=new m,eM=[new m,new m,new m,new m];function Upt(e,t){let n=t.radii,i=e.positionWC,o=m.multiplyComponents(t.oneOverRadii,i,Txe),r=m.magnitude(o),s=m.normalize(o,Sxe),a,c;m.equalsEpsilon(s,m.UNIT_Z,Z.EPSILON10)?(a=new m(0,1,0),c=new m(0,0,1)):(a=m.normalize(m.cross(m.UNIT_Z,s,M7),M7),c=m.normalize(m.cross(s,a,Lxe),Lxe));let d=Math.sqrt(m.magnitudeSquared(o)-1),u=m.multiplyByScalar(s,1/r,Txe),h=d/r,p=m.multiplyByScalar(a,h,Sxe),g=m.multiplyByScalar(c,h,M7),f=m.add(u,g,eM[0]);m.subtract(f,p,f),m.multiplyComponents(n,f,f);let b=m.subtract(u,g,eM[1]);m.subtract(b,p,b),m.multiplyComponents(n,b,b);let x=m.subtract(u,g,eM[2]);m.add(x,p,x),m.multiplyComponents(n,x,x);let I=m.add(u,g,eM[3]);return m.add(I,p,I),m.multiplyComponents(n,I,I),eM}var v7=new D,kpt=new m,cy=[new ge,new ge,new ge,new ge];function kk(e,t,n,i,o,r){v7.x=e,v7.y=t;let s=i.pickEllipsoid(v7,o,kpt);return l(s)?(cy[n]=o.cartesianToCartographic(s,cy[n]),1):(cy[n]=o.cartesianToCartographic(r[n],cy[n]),0)}un.prototype.computeViewRectangle=function(e,t){e=e??ie.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new ue(m.ZERO,e.maximumRadius);if(n.computeVisibility(i)===on.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,d=Upt(this,e);if(c+=kk(0,0,0,this,e,d),c+=kk(0,a,1,this,e,d),c+=kk(s,a,2,this,e,d),c+=kk(s,0,3,this,e,d),c<2)return le.MAX_VALUE;t=le.fromCartographicArray(cy,t);let u=0,h=cy[3].longitude;for(let p=0;p<4;++p){let g=cy[p].longitude,f=Math.abs(g-h);f>Z.PI?u+=Z.TWO_PI-f:u+=f,h=g}return Z.equalsEpsilon(Math.abs(u),Z.TWO_PI,Z.EPSILON9)&&(t.west=-Z.PI,t.east=Z.PI,cy[0].latitude>=0?t.north=Z.PI_OVER_TWO:t.south=-Z.PI_OVER_TWO),t};un.prototype.switchToPerspectiveFrustum=function(){if(this._mode===re.SCENE2D||this.frustum instanceof Ni)return;let e=this._scene;this.frustum=new Ni,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=Z.toRadians(60)};un.prototype.switchToOrthographicFrustum=function(){if(this._mode===re.SCENE2D||this.frustum instanceof gn)return;let e=Bxe(this),t=this._scene;this.frustum=new gn,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};un.clone=function(e,t){return l(t)||(t=new un(e._scene)),m.clone(e.position,t.position),m.clone(e.direction,t.direction),m.clone(e.up,t.up),m.clone(e.right,t.right),X.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var xo=un;var DMi=y(C(),1);function Ypt(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var vm=Ypt;var zMi=y(C(),1);var Oxe=y(Bd(),1),Qxe=576,Opt=100,tM="#ffffff",Kk="#48b";function Hxe(e,t){this.credit=e,this.count=t??1}function Hpt(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Gt.equals(o,t))return!0}return!1}function zpt(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Gt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var zxe="cesium-credit-delimiter";function Uxe(e){let t=document.createElement("span");return t.textContent=e,t.className=zxe,t}function kxe(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function Yxe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let d=r-1;if(o.length<=d)e.appendChild(Uxe(n));else{let u=o[d];u.className!==zxe&&e.replaceChild(Uxe(n),u)}}let c=a.element;if(o.length<=r)e.appendChild(kxe(c,i));else{let d=o[r];d._creditId!==a._id&&e.replaceChild(kxe(c,i),d)}}}for(++r;r<o.length;)e.removeChild(o[r])}function Kpt(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<Qxe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=Qxe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function Jpt(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${tM}; + position: relative; + min-height: ${Opt}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${tM}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${Kk}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${tM}; +} +.cesium-credit-lightbox-close:hover { + color: ${Kk}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${tM}; +} +.cesium-credit-expand-link:hover { + color: ${Kk}; +} + +.cesium-credit-text { + color: ${tM}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${Kk} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function Br(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(f){r.contains(f.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let d=document.createElement("ul");r.appendChild(d);let u=document.createElement("div");u.className="cesium-credit-logoContainer",u.style.display="inline",e.appendChild(u);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let p=document.createElement("a");p.className="cesium-credit-expand-link",p.onclick=this.showLightbox.bind(this),p.textContent="Data attribution",e.appendChild(p),Jpt(e);let g=Gt.clone(Br.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=u,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=d,this._lightbox=o,this._hideLightbox=s,this._expandLink=p,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new Bt,lightboxCredits:new Bt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function Kxe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new Hxe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}Br.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Gt.clone(Jxe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,Kxe(this,t,e)};Br.prototype.addStaticCredit=function(e){let t=this._staticCredits;Hpt(t,e)||t.push(e)};Br.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};Br.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};Br.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};Br.prototype.update=function(){this._expanded&&Kpt(this)};Br.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Gt.equals(Br.cesiumCredit,this._cesiumCredit)||Kxe(this,s,r,Number.MAX_VALUE)}Gt.equals(Br.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Gt.clone(Br.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};Br.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;Yxe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",Yxe(this._creditList,t,void 0,"li"),zpt(this)};Br.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),me(this)};Br.prototype.isDestroyed=function(){return!1};Br._cesiumCredit=void 0;Br._cesiumCreditInitialized=!1;var Jk;function Jxe(){if(!l(Jk)){let e=hn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new Oxe.default(e).path()),Jk=new Gt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return Br._cesiumCreditInitialized||(Br._cesiumCredit=Jk,Br._cesiumCreditInitialized=!0),Jk}Object.defineProperties(Br,{cesiumCredit:{get:function(){return Jxe(),Br._cesiumCredit},set:function(e){Br._cesiumCredit=e,Br._cesiumCreditInitialized=!0}}});Br.CreditDisplayElement=Hxe;var nM=Br;var kvi=y(C(),1);var uvi=y(C(),1);var jk=0,jpt=1;function LI(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??we.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof Ni?(s=jk,a=Ni.packedLength):t instanceof gn&&(s=jpt,a=gn.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=m.clone(i),this._orientation=Pe.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+m.packedLength+Pe.packedLength+we.packedLength}LI.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===jk?(Ni.pack(o,t,n),n+=Ni.packedLength):(gn.pack(o,t,n),n+=gn.packedLength),m.pack(e._origin,t,n),n+=m.packedLength,Pe.pack(e._orientation,t,n),n+=Pe.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n]=e._drawNearPlane?1:0,t};var qpt=new Ni,$pt=new gn,eAt=new Pe,tAt=new m,nAt=new we;LI.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===jk?(o=Ni.unpack(e,t,qpt),t+=Ni.packedLength):(o=gn.unpack(e,t,$pt),t+=gn.packedLength);let r=m.unpack(e,t,tAt);t+=m.packedLength;let s=Pe.unpack(e,t,eAt);t+=Pe.packedLength;let a=we.unpack(e,t,nAt);t+=we.packedLength;let c=e[t]===1;if(!l(n))return new LI({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let d=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(d),n._frustumType=i,n._origin=m.clone(r,n._origin),n._orientation=Pe.clone(s,n._orientation),n._vertexFormat=we.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function aL(e,t,n,i,o,r,s,a){let c=e/3*2;for(let d=0;d<4;++d)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var iAt=new $,oAt=new X,k7=new X,jxe=new m,qxe=new m,$xe=new m,rAt=new m,sAt=new m,aAt=new m,ly=new Array(3),iM=new Array(4);iM[0]=new ce(-1,-1,1,1);iM[1]=new ce(1,-1,1,1);iM[2]=new ce(1,1,1,1);iM[3]=new ce(-1,1,1,1);var eIe=new Array(4);for(let e=0;e<4;++e)eIe[e]=new ce;LI._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=$.fromQuaternion(t,iAt),d=r??jxe,u=s??qxe,h=a??$xe;d=$.getColumn(c,0,d),u=$.getColumn(c,1,u),h=$.getColumn(c,2,h),m.normalize(d,d),m.normalize(u,u),m.normalize(h,h),m.negate(d,d);let p=X.computeView(e,h,u,d,oAt),g,f,b=i.projectionMatrix;if(n===jk){let x=X.multiply(b,p,k7);f=X.inverse(x,k7)}else g=X.inverseTransformation(p,k7);l(f)?(ly[0]=i.near,ly[1]=i.far):(ly[0]=0,ly[1]=i.near,ly[2]=i.far);for(let x=0;x<2;++x)for(let I=0;I<4;++I){let _=ce.clone(iM[I],eIe[I]);if(l(f)){_=X.multiplyByVector(f,_,_);let E=1/_.w;m.multiplyByScalar(_,E,_),m.subtract(_,e,_),m.normalize(_,_);let S=m.dot(h,_);m.multiplyByScalar(_,ly[x]/S,_),m.add(_,e,_)}else{let E=i.offCenterFrustum;l(E)&&(i=E);let S=ly[x],R=ly[x+1];_.x=(_.x*(i.right-i.left)+i.left+i.right)*.5,_.y=(_.y*(i.top-i.bottom)+i.bottom+i.top)*.5,_.z=(_.z*(S-R)-S-R)*.5,_.w=1,X.multiplyByVector(g,_,_)}o[12*x+I*3]=_.x,o[12*x+I*3+1]=_.y,o[12*x+I*3+2]=_.z}};LI.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);LI._computeNearFarPlanes(i,o,t,n,c);let d=24;c[d]=c[12],c[d+1]=c[13],c[d+2]=c[14],c[d+3]=c[0],c[d+4]=c[1],c[d+5]=c[2],c[d+6]=c[9],c[d+7]=c[10],c[d+8]=c[11],c[d+9]=c[21],c[d+10]=c[22],c[d+11]=c[23],d+=12,c[d]=c[15],c[d+1]=c[16],c[d+2]=c[17],c[d+3]=c[3],c[d+4]=c[4],c[d+5]=c[5],c[d+6]=c[0],c[d+7]=c[1],c[d+8]=c[2],c[d+9]=c[12],c[d+10]=c[13],c[d+11]=c[14],d+=12,c[d]=c[3],c[d+1]=c[4],c[d+2]=c[5],c[d+3]=c[15],c[d+4]=c[16],c[d+5]=c[17],c[d+6]=c[18],c[d+7]=c[19],c[d+8]=c[20],c[d+9]=c[6],c[d+10]=c[7],c[d+11]=c[8],d+=12,c[d]=c[6],c[d+1]=c[7],c[d+2]=c[8],c[d+3]=c[18],c[d+4]=c[19],c[d+5]=c[20],c[d+6]=c[21],c[d+7]=c[22],c[d+8]=c[23],c[d+9]=c[9],c[d+10]=c[10],c[d+11]=c[11],r||(c=c.subarray(12));let u=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let p=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,f=l(s.bitangent)?new Float32Array(12*a):void 0,b=l(s.st)?new Float32Array(8*a):void 0,x=jxe,I=qxe,_=$xe,E=m.negate(x,rAt),S=m.negate(I,sAt),R=m.negate(_,aAt);d=0,r&&(aL(d,p,g,f,b,R,x,I),d+=12),aL(d,p,g,f,b,_,E,I),d+=12,aL(d,p,g,f,b,E,R,I),d+=12,aL(d,p,g,f,b,S,R,E),d+=12,aL(d,p,g,f,b,x,_,I),d+=12,aL(d,p,g,f,b,I,_,E),l(p)&&(u.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),l(g)&&(u.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),l(f)&&(u.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),l(b)&&(u.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:b}))}let h=new Uint16Array(6*a);for(let p=0;p<a;++p){let g=p*6,f=p*4;h[g]=f,h[g+1]=f+1,h[g+2]=f+2,h[g+3]=f,h[g+4]=f+2,h[g+5]=f+3}return new pt({attributes:u,indices:h,primitiveType:We.TRIANGLES,boundingSphere:ue.fromVertices(c)})};var RI=LI;var Tvi=y(C(),1);var Y7=0,cAt=1;function oM(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof Ni?(r=Y7,s=Ni.packedLength):t instanceof gn&&(r=cAt,s=gn.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=m.clone(i),this._orientation=Pe.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+m.packedLength+Pe.packedLength}oM.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===Y7?(Ni.pack(o,t,n),n+=Ni.packedLength):(gn.pack(o,t,n),n+=gn.packedLength),m.pack(e._origin,t,n),n+=m.packedLength,Pe.pack(e._orientation,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var lAt=new Ni,dAt=new gn,uAt=new Pe,mAt=new m;oM.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===Y7?(o=Ni.unpack(e,t,lAt),t+=Ni.packedLength):(o=gn.unpack(e,t,dAt),t+=gn.packedLength);let r=m.unpack(e,t,mAt);t+=m.packedLength;let s=Pe.unpack(e,t,uAt);t+=Pe.packedLength;let a=e[t]===1;if(!l(n))return new oM({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=m.clone(r,n._origin),n._orientation=Pe.clone(s,n._orientation),n._drawNearPlane=a,n};oM.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);RI._computeNearFarPlanes(i,o,t,n,s);let a=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:s})}),c,d,u=r?2:1,h=new Uint16Array(8*(u+1)),p=r?0:1;for(;p<2;++p)c=r?p*8:0,d=p*4,h[c]=d,h[c+1]=d+1,h[c+2]=d+1,h[c+3]=d+2,h[c+4]=d+2,h[c+5]=d+3,h[c+6]=d+3,h[c+7]=d;for(p=0;p<2;++p)c=(u+p)*8,d=p*4,h[c]=d,h[c+1]=d+4,h[c+2]=d+1,h[c+3]=d+5,h[c+4]=d+2,h[c+5]=d+6,h[c+6]=d+3,h[c+7]=d+7;return new pt({attributes:a,indices:h,primitiveType:We.LINES,boundingSphere:ue.fromVertices(s)})};var rM=oM;function qk(e){e=e??Y.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??U.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var hAt=new m,fAt=new $,pAt=new Pe,AAt=new Ni,gAt=new vl,bAt=new gn,yAt=new qr,CAt=new U,xAt=[1,1e5];qk.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Ni?a=AAt:s instanceof vl?a=gAt:s instanceof gn?a=bAt:a=yAt,a=s.clone(a);let c,d=this._frustumSplits;!l(d)||d.length<=1?(d=xAt,d[0]=this._camera.frustum.near,d[1]=this._camera.frustum.far,c=1):c=d.length-1;let u=r.positionWC,h=r.directionWC,p=r.upWC,g=r.rightWC;g=m.negate(g,hAt);let f=fAt;$.setColumn(f,0,g,f),$.setColumn(f,1,p,f),$.setColumn(f,2,h,f);let b=Pe.fromRotationMatrix(f,pAt);for(t.length=n.length=c,i=0;i<c;++i)a.near=d[i],a.far=d[i+1],t[i]=new Nn({geometryInstances:new wt({geometry:new RI({origin:u,orientation:b,frustum:a,_drawNearPlane:i===0}),attributes:{color:tn.fromColor(U.fromAlpha(this._color,.1,CAt))},id:this.id,pickPrimitive:this}),appearance:new yn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Nn({geometryInstances:new wt({geometry:new rM({origin:u,orientation:b,frustum:a,_drawNearPlane:i===0}),attributes:{color:tn.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};qk.prototype.isDestroyed=function(){return!1};qk.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return me(this)};var Rp=qk;var mNi=y(C(),1);function aM(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var sM=Ht.supportsTypedArrays()?new Float32Array(12):[],tIe=new m,nIe=new m,O7=new m,iIe=new m,$k=new m;function IAt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof gn)o=m.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,p=m.multiplyComponents(e.oneOverRadii,h,tIe),g=m.normalize(p,nIe),f=m.normalize(m.cross(m.UNIT_Z,p,O7),O7),b=m.normalize(m.cross(g,f,iIe),iIe),x=m.magnitude(p),I=Math.sqrt(x*x-1);o=m.multiplyByScalar(g,1/x,tIe);let _=I/x;r=m.multiplyByScalar(f,_,nIe),s=m.multiplyByScalar(b,_,O7)}let a=m.add(o,s,$k);m.subtract(a,r,a),m.multiplyComponents(n,a,a),m.pack(a,sM,0);let c=m.subtract(o,s,$k);m.subtract(c,r,c),m.multiplyComponents(n,c,c),m.pack(c,sM,3);let d=m.add(o,s,$k);m.add(d,r,d),m.multiplyComponents(n,d,d),m.pack(d,sM,6);let u=m.subtract(o,s,$k);return m.add(u,r,u),m.multiplyComponents(n,u,u),m.pack(u,sM,9),sM}aM.prototype.update=function(e){if(this._mode=e.mode,e.mode!==re.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new ie(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new ot({renderState:this._rs,boundingVolume:new ue(m.ZERO,i.maximumRadius),pass:Ge.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new Oe({sources:[gP]}),a=new Oe({sources:[AP]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=IAt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new pt({attributes:{position:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:We.TRIANGLES});this._va=ui.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Ne.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};aM.prototype.execute=function(e,t){this._mode===re.SCENE3D&&this._command.execute(e,t)};aM.prototype.isDestroyed=function(){return!1};aM.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var cM=aM;var xNi=y(C(),1);function lL(){}var _At=/\bgl_FragDepth\b/,EAt=/\bdiscard\b/;function TAt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(_At.test(r[a])||EAt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new Oe({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new Oe({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function SAt(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Qe.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Qe.fromCache(o);return n[t.id]=r,r}lL.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=ot.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=TAt(n,t.shaderProgram),i.depthOnlyCommand.renderState=SAt(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var LAt=/\s+czm_writeLogDepth\(/,RAt=/\s+czm_vertexLogDepth\(/;function VAt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let u=0;u<c.length;++u)if(RAt.test(c[u])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=Oe.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let u=0;u<c.length;++u)LAt.test(c[u])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let d="";if(!a){for(let u=0;u<c.length;u++)c[u]=Oe.replaceMain(c[u],"czm_log_depth_main");d=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(d),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}lL.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=ot.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=VAt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function GAt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",d=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,u=r.length,h=new Array(u+1);for(let g=0;g<u;++g)h[g]=Oe.replaceMain(r[g],"czm_non_pick_main");h[u]=d;let p=new Oe({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:p,attributeLocations:o})}function oIe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Qe.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Qe.fromCache(o);return n[t.id]=r,r}lL.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=ot.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=GAt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=oIe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function cL(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function rIe(e){return e.isArray?e.arrayLength:bt.getComponentCount(e.type)}function ZAt(e){let t=rIe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function sIe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function aIe(e,t){let n=Ut.getMaximum(t);return`(${e}) / float(${n})`}function BAt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=sIe(n,i,o)}return e.normalized||(n=aIe(n,e.componentType)),n}function wAt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=sIe(o,r,s)}return e.normalized||(o=aIe(o,e.componentType)),o}function XAt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,d=n.classProperty,u=ZAt(d),h=["0.0","0.0","0.0","0.0"],p=rIe(d);if(p===1)h[0]=BAt(d,c);else{let x=["x","y","z","w"];for(let I=0;I<p;I++)h[I]=wAt(d,c,x[I])}let g=t.fragmentShaderSource.defines.slice();g.push(Jd.METADATA_PICKING_ENABLED),cL(g,Jd.METADATA_PICKING_VALUE_TYPE,u),cL(g,Jd.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let f=new Oe({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:f,attributeLocations:t._attributeLocations})}lL.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=ot.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=XAt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=oIe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function WAt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}lL.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=ot.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=WAt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var Vp=lL;var RNi=y(C(),1);function eY(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=Z.toRadians(o),t._beta=Z.toRadians(i.beta),t._gamma=Z.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var FAt=new Pe,cIe=new Pe,PAt=new $;function MAt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Pe.fromAxisAngle(o,n,cIe),c=Pe.fromAxisAngle(r,i,FAt),d=Pe.multiply(c,a,c),u=Pe.fromAxisAngle(s,t,cIe);Pe.multiply(u,d,d);let h=$.fromQuaternion(d,PAt);$.multiplyByVector(h,r,r),$.multiplyByVector(h,s,s),$.multiplyByVector(h,o,o)}eY.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;MAt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};eY.prototype.isDestroyed=function(){return!1};eY.prototype.destroy=function(){return this._removeListener(),me(this)};var lM=eY;var XNi=y(C(),1);function H7(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(H7.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var vAt=new m;H7.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==re.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,Z.EPSILON4),-Math.max(this._heightFalloff,0)),s=m.normalize(n.positionWC,vAt),a=Math.abs(m.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var dM=H7;var PNi=y(C(),1);function NAt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=re.SCENE3D,this.morphTime=re.getMorphTime(re.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var uM=NAt;var JNi=y(C(),1);var Ja={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},VI=Ja.DERIVED_COMMANDS_MAXIMUM_LENGTH,bIe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function GI(){this._frontFaceAlphaByDistance=new zt(0,1,0,1),this._backFaceAlphaByDistance=new zt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=le.clone(le.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(VI),this._derivedBlendCommandTypes=new Array(VI),this._derivedPickCommandTypes=new Array(VI),this._derivedCommandTypesToUpdate=new Array(VI),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(GI.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});GI.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=lIe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=lIe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=dIe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=dIe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=kAt(this,e,t),this._sunVisibleThroughGlobe=DAt(this,e),this._environmentVisible=QAt(this,e),this._useDepthPlane=UAt(this,e),this._numberOfTextureUniforms=YAt(this),this._rectangle=le.clone(t.translucency.rectangle,this._rectangle),OAt(this,e)};function lIe(e,t,n,i){return e?l(n)?(zt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function dIe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function DAt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function QAt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function UAt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function kAt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==re.SCENE2D&&t.context.depthTexture}function YAt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function OAt(e,t){e._derivedCommandsLength=z7(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=z7(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=z7(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<VI;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=agt())}function z7(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,d=e._requiresManualDepthTest,u=i?Ja.PICK_FRONT_FACE:d?Ja.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ja.TRANSLUCENT_FRONT_FACE,h=i?Ja.PICK_BACK_FACE:d?Ja.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ja.TRANSLUCENT_BACK_FACE;return t.mode===re.SCENE2D?(o[r++]=Ja.DEPTH_ONLY_FRONT_FACE,o[r++]=u,r):(a?(n||(o[r++]=Ja.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=u,o[r++]=h):(o[r++]=h,o[r++]=u)):c?(n||(o[r++]=Ja.DEPTH_ONLY_BACK_FACE),o[r++]=Ja.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ja.DEPTH_ONLY_FRONT_FACE),o[r++]=Ja.OPAQUE_BACK_FACE,o[r++]=u),r)}function Nm(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function uIe(e,t){return e.indexOf(t)>-1}function HAt(e,t){Nm(e.defines,"TRANSLUCENT"),Nm(t.defines,"TRANSLUCENT")}function zAt(e,t){Nm(e.defines,"GROUND_ATMOSPHERE"),Nm(t.defines,"GROUND_ATMOSPHERE"),Nm(e.defines,"FOG"),Nm(t.defines,"FOG"),Nm(e.defines,"TRANSLUCENT"),Nm(t.defines,"TRANSLUCENT")}function K7(e,t){if(uIe(t.defines,"TILE_LIMIT_RECTANGLE")||uIe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function J7(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=Oe.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function yIe(e,t){J7(e,t),Nm(e.defines,"GROUND_ATMOSPHERE"),Nm(t.defines,"GROUND_ATMOSPHERE"),Nm(e.defines,"FOG"),Nm(t.defines,"FOG")}function KAt(e,t){J7(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function JAt(e,t){yIe(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function mIe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function jAt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),d=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],d.defines=l(d.defines)?d.defines.slice(0):[],o(c,d),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:a})}return s}function qAt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0}function $At(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0}function egt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function tgt(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function ngt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function hIe(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=bn.ALPHA_BLEND}function fIe(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=bn.ALPHA_BLEND}function igt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function ogt(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function rgt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Qe.getState(e);i(s),r=Qe.fromCache(s),o[e.id]=r}return r}function dL(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function sgt(e,t,n,i,o){return l(o)?!i&&l(n)?n:Lt(t,o(e),!1):t}function hf(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function agt(){return[new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:HAt,getRenderStateFunction:qAt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:zAt,getRenderStateFunction:$At,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:egt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:tgt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:ngt,getUniformMapFunction:void 0}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:J7,getRenderStateFunction:hIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:yIe,getRenderStateFunction:fIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:KAt,getRenderStateFunction:hIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:JAt,getRenderStateFunction:fIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:mIe,getRenderStateFunction:igt,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:mIe,getRenderStateFunction:ogt,getUniformMapFunction:dL})]}var pIe=new Array(VI),AIe=new Array(VI);GI.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)AIe[o]=this._derivedCommandPacks[n[o]],pIe[o]=bIe[n[o]];cgt(this,e,i,n,pIe,AIe,t)}};function cgt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let d=s.frameNumber,u=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,p=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,f=a.shaderProgramId!==t.shaderProgram.id,b=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=d),f&&(a.shaderProgramDirtyFrame=d),b&&(a.renderStateDirtyFrame=d),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let x=0;x<n;++x){let I=r[x],_=i[x],E=o[x],S=a[E],R,G,B;l(S)?(R=S.uniformMap,G=S.shaderProgram,B=S.renderState):(R=void 0,G=void 0,B=void 0),S=ot.shallowClone(t,S),a[E]=S;let w=S.derivedCommands.uniformMapDirtyFrame??0,F=S.derivedCommands.shaderProgramDirtyFrame??0,P=S.derivedCommands.renderStateDirtyFrame??0,A=g||w<u,T=f||F<h,L=b||P<p;A&&(S.derivedCommands.uniformMapDirtyFrame=d),T&&(S.derivedCommands.shaderProgramDirtyFrame=d),L&&(S.derivedCommands.renderStateDirtyFrame=d),S.derivedCommands.type=_,S.pass=I.pass,S.pickOnly=I.pickOnly,S.uniformMap=sgt(e,t.uniformMap,R,A,I.getUniformMapFunction),S.shaderProgram=jAt(s.context,t.shaderProgram,G,T,I.getShaderProgramFunction,E),S.renderState=rgt(t.renderState,B,L,I.getRenderStateFunction,I.renderStateCache)}}}GI.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=bIe[o[a]];n.commandList.push(s[c])}};function CIe(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function gIe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var lgt=[Ja.OPAQUE_FRONT_FACE,Ja.OPAQUE_BACK_FACE],dgt=[Ja.DEPTH_ONLY_FRONT_FACE,Ja.DEPTH_ONLY_BACK_FACE,Ja.DEPTH_ONLY_FRONT_AND_BACK_FACE];GI.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Ge.GLOBE],a=e.indices[Ge.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),CIe(s,a,t,i,o,lgt))};GI.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Ge.GLOBE],c=e.indices[Ge.GLOBE],d=e.commands[Ge.TERRAIN_CLASSIFICATION],u=e.indices[Ge.TERRAIN_CLASSIFICATION];if(c===0||u===0)return;let h=this._frontFaceTranslucent,p=this._backFaceTranslucent;if((!h||!p)&&gIe(d,u,t,i,o),!h&&!p)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,f=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,CIe(a,c,t,i,o,dgt),r.depthTexture){let b=n.packDepth(r,o);s.globeDepthTexture=b}gIe(d,u,t,i,o),s.globeDepthTexture=g,o.framebuffer=f};var mM=GI;var g9i=y(C(),1);var qNi=y(C(),1),Ed=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function Gp(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new Gi({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new Gi({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new xi({color:new U(0,0,0,0),owner:this}),this._clearCommand=new xi({color:new U(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(Gp.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});Gp.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var ugt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:0,mask:jt.CLASSIFICATION_MASK},blending:bn.ALPHA_BLEND},mgt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:0,mask:jt.CLASSIFICATION_MASK},blending:bn.ALPHA_BLEND},hgt={depthMask:!0,depthTest:{enabled:!0},stencilTest:jt.setCesium3DTileBit(),stencilMask:jt.CESIUM_3D_TILE_MASK,blending:bn.ALPHA_BLEND},fgt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,pgt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;Gp.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Wt({context:e,width:s,height:a,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Hd({context:e,width:s,height:a,format:Tl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let d,u;l(this._previousFramebuffer)?(d=n.getDepthStencilTexture(),u=n.getDepthStencilRenderbuffer()):(d=this._depthStencilTexture,u=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(d),l(u)&&this._fbo.setDepthStencilRenderbuffer(u),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(d),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Qe.fromCache(ugt),this._rsClassified=Qe.fromCache(mgt),this._rsDefault=Qe.fromCache(hgt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let d=l(this._previousFramebuffer)?pgt:fgt,u=new Oe({defines:["UNCLASSIFIED"],sources:[d]}),h=new Oe({sources:[d]});this._unclassifiedCommand=e.createViewportQuadCommand(u,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(Ed,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};Gp.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};Gp.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};Gp.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};Gp.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};Gp.prototype.isDestroyed=function(){return!1};Gp.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),me(this)};var uL=Gp;var I9i=y(C(),1);function tY(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(tY.prototype,{total:{get:function(){return this._total}}});function dy(e){let t=new Array(uc.NUMBER_OF_JOB_TYPES);t[uc.TEXTURE]=new tY(l(e)?e[uc.TEXTURE]:10),t[uc.PROGRAM]=new tY(l(e)?e[uc.PROGRAM]:10),t[uc.BUFFER]=new tY(l(e)?e[uc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}dy.getTimestamp=Fi;Object.defineProperties(dy.prototype,{totalBudget:{get:function(){return this._totalBudget}}});dy.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};dy.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};dy.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,d;for(d=0;d<c&&(r=n[d],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++d);if(d===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=dy.getTimestamp();e.execute();let a=dy.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var hM=dy;var R9i=y(C(),1);function nY(e){e=e??Y.EMPTY_OBJECT;let t=Dn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Fi(),this._lastMsSampleTime=Fi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(nY.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});nY.prototype.update=function(e){let t=Fi(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};nY.prototype.destroy=function(){return me(this)};var kg=nY;var RUi=y(C(),1);var D9i=y(C(),1);var ja={};ja.decodeRawMetadataValue=function(e,t,n){switch(e){case Ut.INT8:return t.getInt8(n);case Ut.UINT8:return t.getUint8(n);case Ut.INT16:return t.getInt16(n,!0);case Ut.UINT16:return t.getUint16(n,!0);case Ut.INT32:return t.getInt32(n,!0);case Ut.UINT32:return t.getUint32(n,!0);case Ut.INT64:return t.getBigInt64(n,!0);case Ut.UINT64:return t.getBigUint64(n,!0);case Ut.FLOAT32:return t.getFloat32(n,!0);case Ut.FLOAT64:return t.getFloat64(n,!0)}throw new de(`Invalid component type: ${e}`)};ja.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=ja.decodeRawMetadataValue(i,t,n);return e.normalized?Ut.normalize(o,i):o};ja.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=Ut.getSizeInBytes(i),r=e.type,s=bt.getComponentCount(r),a=o*s;if(s>1){let u=Array(s);for(let h=0;h<s;h++){let p=n*a+h*o,g=ja.decodeRawMetadataValueComponent(e,t,p);u[h]=g}return u}let c=n*a;return ja.decodeRawMetadataValueComponent(e,t,c)};ja.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=ja.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return ja.decodeRawMetadataValueElement(e,n,0)};ja.convertToObjectType=function(e,t){if(!l(t)||e===bt.SCALAR||e===bt.STRING||e===bt.BOOLEAN||e===bt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case bt.VEC2:return D.unpack(n,0,new D);case bt.VEC3:return m.unpack(n,0,new m);case bt.VEC4:return ce.unpack(n,0,new ce);case bt.MAT2:return Qi.unpack(n,0,new Qi);case bt.MAT3:return $.unpack(n,0,new $);case bt.MAT4:return X.unpack(n,0,new X)}throw new de(`Invalid metadata object type: ${e}`)};ja.convertFromObjectType=function(e,t){if(!l(t)||e===bt.SCALAR||e===bt.STRING||e===bt.BOOLEAN||e===bt.ENUM)return t;switch(e){case bt.VEC2:return D.pack(t,Array(2));case bt.VEC3:return m.pack(t,Array(3));case bt.VEC4:return ce.pack(t,Array(4));case bt.MAT2:return Qi.pack(t,Array(4));case bt.MAT3:return $.pack(t,Array(9));case bt.MAT4:return X.pack(t,Array(16))}throw new de(`Invalid metadata object type: ${e}`)};ja.decodeMetadataValues=function(e,t,n){let i=ja.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=ja.convertFromObjectType(e.type,t.offset),s=ja.convertFromObjectType(e.type,t.scale);i=Qf.valueTransformInPlace(i,r,s,Ut.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],d=ja.convertToObjectType(e.type,c);s[a]=d}return s}return ja.convertToObjectType(e.type,i)};var fM=Object.freeze(ja);var z9i=y(C(),1);function ZI(){this._framebuffer=new Gi,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(ZI.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Agt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function ggt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Qe.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}ZI.prototype.update=function(e,t){Agt(this,e,t),ggt(this,e,t)};var bgt=new ce,ygt=new ce(1,1/255,1/65025,1/16581375);ZI.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=ce.unpack(i,0,bgt);return ce.divideByScalar(o,255,o),ce.dot(o,ygt)};ZI.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};ZI.prototype.isDestroyed=function(){return!1};ZI.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),me(this)};var pM=ZI;var nUi=y(C(),1);var j9i=y(C(),1);function Cgt(e,t){this.near=e??0,this.far=t??0;let n=Ge.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var AM=Cgt;var pDi=y(C(),1);var $9i=y(C(),1),uy=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function Zp(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new Gi,this._tempCopyDepthFramebuffer=new Gi,this._updateDepthFramebuffer=new Gi({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Ke,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(Zp.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function xIe(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Ke.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Ke.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ke.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Ke.equals(r,e._rs.viewport)||a)&&(e._rs=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:bn.ALPHA_BLEND}),e._rsUpdate=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new xi({color:new U(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}Zp.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),xIe(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};Zp.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};Zp.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};Zp.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),xIe(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};Zp.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};Zp.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(U.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};Zp.prototype.isDestroyed=function(){return!1};Zp.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),me(this)};var gM=Zp;var SDi=y(C(),1);function BI(){this._framebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new Gi,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Ke,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(BI.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function xgt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function Igt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function _gt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Ke.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Ke.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ke.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Ke.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new xi({color:new U(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}BI.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;Igt(this,n,o,r,e),_gt(this,n,o,r,i),this._useHdr=e};BI.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};BI.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};BI.prototype.isDestroyed=function(){return!1};BI.prototype.destroy=function(){return xgt(this),me(this)};var bM=BI;var YDi=y(C(),1);function Yg(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new Gi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new Gi({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new Gi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new Gi({createColorAttachments:!1}),this._opaqueClearCommand=new xi({color:new U(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new xi({color:new U(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new xi({color:new U(0,0,0,0),owner:this}),this._alphaClearCommand=new xi({color:new U(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Ke,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function IIe(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function j7(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function _Ie(e){IIe(e),j7(e)}function Egt(e,t,n,i){IIe(e),e._accumulationTexture=new Wt({context:t,width:n,height:i,pixelFormat:tt.RGBA,pixelDatatype:Ye.FLOAT}),e._revealageTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.FLOAT,width:n,height:i,flipY:!1})}function Tgt(e,t){j7(e);let n=ne.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(j7(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,d=e._adjustAlphaFBO.status===n;(!s||!a||!c||!d)&&(_Ie(e),e._translucentMultipassSupport=!1,i=!1)}return i}Yg.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,d=this._numSamples!==o;if((c||d)&&(this._numSamples=o,Egt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||d)&&!Tgt(this,e))return;this._useHDR=i;let u=this,h,p;l(this._compositeCommand)||(h=new Oe({sources:[pP]}),this._translucentMRTSupport&&h.defines.push("MRT"),p={u_opaque:function(){return u._opaqueTexture},u_accumulation:function(){return u._accumulationTexture},u_revealage:function(){return u._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new Oe({defines:["MRT"],sources:[KS]}),p={u_bgColor:function(){return u._translucentMRTClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})):this._translucentMultipassSupport&&(h=new Oe({sources:[KS]}),p={u_bgColor:function(){return u._translucentMultipassClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}),p={u_bgColor:function(){return u._alphaClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Ke.equals(this._viewport,t.viewport),f=g!==this._useScissorTest;this._useScissorTest=g,Ke.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Ke.clone(t.viewport,this._scissorRectangle),f=!0),(!l(this._rs)||!Ke.equals(this._viewport,this._rs.viewport)||f)&&(this._rs=Qe.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var Sgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ONE,functionDestinationRgb:Po.ONE,functionSourceAlpha:Po.ZERO,functionDestinationAlpha:Po.ONE_MINUS_SOURCE_ALPHA},Lgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ONE,functionDestinationRgb:Po.ONE,functionSourceAlpha:Po.ONE,functionDestinationAlpha:Po.ONE},Rgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ZERO,functionDestinationRgb:Po.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Po.ZERO,functionDestinationAlpha:Po.ONE_MINUS_SOURCE_ALPHA};function q7(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Qe.getState(i);r.depthMask=!1,r.blending=t,o=Qe.fromCache(r),n[i.id]=o}return o}function Vgt(e,t,n){return q7(t,Sgt,e._translucentRenderStateCache,n)}function Ggt(e,t,n){return q7(t,Lgt,e._translucentRenderStateCache,n)}function Zgt(e,t,n){return q7(t,Rgt,e._alphaRenderStateCache,n)}var Bgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,wgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,Xgt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function $7(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(u){return Oe.replaceMain(u,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],d="";for(let u=0;u<c.length;u++){let h=c[u];d=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${d}`}return a.sources.push(d),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function Wgt(e,t){return $7(e,t,"translucentMRT",Bgt)}function Fgt(e,t){return $7(e,t,"translucentMultipass",wgt)}function Pgt(e,t){return $7(e,t,"alphaMultipass",Xgt)}Yg.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=ot.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Wgt(t,e.shaderProgram),n.translucentCommand.renderState=Vgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=ot.shallowClone(e,n.translucentCommand),n.alphaCommand=ot.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Fgt(t,e.shaderProgram),n.translucentCommand.renderState=Ggt(this,t,e.renderState),n.alphaCommand.shaderProgram=Pgt(t,e.shaderProgram),n.alphaCommand.renderState=Zgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function Mgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:d}=a,u=t._hdr,h=i.framebuffer,p=d.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.translucentCommand:b.derivedCommands.oit.translucentCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.translucentCommand:f.derivedCommands.oit.translucentCommand;n(b,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.alphaCommand:b.derivedCommands.oit.alphaCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.alphaCommand:f.derivedCommands.oit.alphaCommand;n(b,t,i,g)}i.framebuffer=h}function vgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:d}=a,u=t._hdr,h=i.framebuffer,p=d.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.translucentCommand:b.derivedCommands.oit.translucentCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.translucentCommand:f.derivedCommands.oit.translucentCommand;n(b,t,i,g)}i.framebuffer=h}Yg.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){vgt(this,e,t,n,i,o);return}Mgt(this,e,t,n,i,o)};Yg.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Yg.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,U.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Yg.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Yg.prototype.isDestroyed=function(){return!1};Yg.prototype.destroy=function(){return _Ie(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),me(this)};var yM=Yg;var jDi=y(C(),1);function CM(){this._framebuffer=new Gi({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(CM.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Ngt(e){e._framebuffer.destroy()}function Dgt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new Hc(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Ke},o.viewport=new Ke,e._passState=o}CM.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Dgt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};CM.prototype.isDestroyed=function(){return!1};CM.prototype.destroy=function(){return Ngt(this),me(this)};var xM=CM;var rQi=y(C(),1);function mL(e){let t=new Hc(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Ke},t.viewport=new Ke,this._context=e,this._fb=new Gi({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}mL.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Ke.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var IM=new U;mL.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),d=0,u=0,h=0,p=-1;for(let g=0;g<s;++g){if(-a<=d&&d<=a&&-c<=u&&u<=c){let f=4*((c-u)*t+d+a);IM.red=U.byteToFloat(o[f]),IM.green=U.byteToFloat(o[f+1]),IM.blue=U.byteToFloat(o[f+2]),IM.alpha=U.byteToFloat(o[f+3]);let b=i.getObjectByPickColor(IM);if(l(b))return b}if(d===u||d<0&&-d===u||d>0&&d===1-u){let f=h;h=-p,p=f}d+=h,u+=p}};mL.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};mL.prototype.isDestroyed=function(){return!1};mL.prototype.destroy=function(){return this._fb.destroy(),me(this)};var _M=mL;var mQi=y(C(),1);function Og(){this._numSamples=1,this._colorFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new U(0,0,0,0),this._clearCommand=new xi({color:new U(0,0,0,0),depth:1,owner:this})}function Qgt(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Og.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Og.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Og.prototype.clear=function(e,t,n){U.clone(n,this._clearCommand.color),U.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Og.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Og.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Og.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Og.prototype.isDestroyed=function(){return!1};Og.prototype.destroy=function(){return Qgt(this),me(this)};var wI=Og;var l5i=y(C(),1);var AQi=y(C(),1);function XI(){}XI.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};XI.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=Oe.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let d=0;d<a;++d)o[d]=Oe.replaceMain(o[d],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new Oe({defines:i,sources:o})};XI.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=Oe.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let u=0;u<c;++u)r[u]=Oe.replaceMain(r[u],"czm_shadow_cast_main");let d="";return t&&(a||(d+=`in vec3 v_positionEC; +`),d+=`uniform vec4 shadowMap_lightPositionEC; +`),i?d+=`void main() +{ +`:d+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?d+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?d+=` out_FragColor = vec4(1.0); +`:d+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,d+=`} +`,r.push(d),new Oe({defines:o,sources:r})};XI.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,d=e.debugCascadeColors,u=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${d}${u}${t}${n}${i}`};XI.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new Oe({defines:i,sources:o})};XI.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=Oe.findNormalVarying(e),s=!i&&l(r)||i&&o,a=Oe.findPositionVarying(e),c=l(a),d=t._usesDepthTexture,u=t._polygonOffsetSupported,h=t._isPointLight,p=t._isSpotLight,g=t._numberOfCascades>1,f=t.debugCascadeColors,b=t.softShadows,x=h?t._pointBias:i?t._terrainBias:t._primitiveBias,I=e.defines.slice(0),_=e.sources.slice(0),E=_.length;for(let G=0;G<E;++G)_[G]=Oe.replaceMain(_[G],"czm_shadow_receive_main");h?I.push("USE_CUBE_MAP_SHADOW"):d&&I.push("USE_SHADOW_DEPTH_TEXTURE"),b&&!h&&I.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?I.push("ENABLE_VERTEX_LIGHTING"):I.push("ENABLE_DAYNIGHT_SHADING")),n&&x.normalShading&&s&&(I.push("USE_NORMAL_SHADING"),x.normalShadingSmooth>0&&I.push("USE_NORMAL_SHADING_SMOOTH"));let S="";h?S+=`uniform samplerCube shadowMap_textureCube; +`:S+=`uniform sampler2D shadowMap_texture; +`;let R;return c?R=` return vec4(${a}, 1.0); +`:R=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,S+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${R}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${x.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,S+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,S+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?S+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:u||(S+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?S+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:p?S+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?S+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${f?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:S+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,S+=` out_FragColor.rgb *= visibility; +} +`,_.push(S),new Oe({defines:I,sources:_})};var Bp=XI;function wp(e){e=e??Y.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(Ht.isInternetExplorer()||Ht.isEdge()||(Ht.isChrome()||Ht.isFirefox())&&Ht.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new X,this._shadowMapTexture=void 0,this._lightDirectionEC=new m,this._lightPositionEC=new ce,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new iY,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new ue,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new D,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new qr:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new ce,new ce],this._cascadeMatrices=[new X,new X,new X,new X],this._cascadeDistances=new ce;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new Ugt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,t6(this),this._clearCommand=new xi({depth:1,color:new U}),this._clearPassState=new Hc(t),this._size=e.size??2048,this.size=this._size}wp.MAXIMUM_DISTANCE=2e4;function Ugt(e){this.camera=new iY,this.passState=new Hc(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function e6(e,t){return Qe.fromCache({cull:{enabled:!0,face:Xi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function t6(e){let t=!e._usesDepthTexture;e._primitiveRenderState=e6(t,e._primitiveBias),e._terrainRenderState=e6(t,e._terrainBias),e._pointRenderState=e6(t,e._pointBias)}wp.prototype.debugCreateRenderStates=function(){t6(this)};Object.defineProperties(wp.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Kgt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function n6(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function kgt(e,t){let n=new Hd({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Tl.DEPTH_COMPONENT16}),i=new Wt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST}),o=new jr({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Ygt(e,t){let n=new Wt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST}),i=new jr({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function Ogt(e,t){let n=new Hd({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Tl.DEPTH_COMPONENT16}),i=new Pr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new jr({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function SIe(e,t){e._isPointLight?Ogt(e,t):e._usesDepthTexture?Ygt(e,t):kgt(e,t)}function Hgt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ne.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,t6(e),n6(e),SIe(e,t))}function zgt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(n6(e),SIe(e,t),Hgt(e,t),LIe(e,t))}function LIe(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Kgt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=Kt.maximumCubeMapSize>=t?t:Kt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Ke(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=Kt.maximumTextureSize>=t?t:Kt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Ke(0,0,t,t)):i===4&&(t=Kt.maximumTextureSize>=t*2?t:Kt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Ke(0,0,t,t),n[1].passState.viewport=new Ke(t,0,t,t),n[2].passState.viewport=new Ke(0,t,t,t),n[3].passState.viewport=new Ke(t,t,t,t));e._clearPassState.viewport=new Ke(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,d=a.y/o.y,u=a.width/o.x,h=a.height/o.y;s.textureOffsets=new X(u,0,0,c,0,h,0,d,0,0,1,0,0,0,0,1)}}var Jgt=new Ke;function jgt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Ge.OVERLAY,i}function qgt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Jgt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=jgt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Ke.equals(a.renderState.viewport,s))&&(a.renderState=Qe.fromCache({viewport:Ke.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var Xp=new Array(8);Xp[0]=new ce(-1,-1,-1,1);Xp[1]=new ce(1,-1,-1,1);Xp[2]=new ce(1,1,-1,1);Xp[3]=new ce(-1,1,-1,1);Xp[4]=new ce(-1,-1,1,1);Xp[5]=new ce(1,-1,1,1);Xp[6]=new ce(1,1,1,1);Xp[7]=new ce(-1,1,1,1);var my=new X,i6=new Array(8);for(let e=0;e<8;++e)i6[e]=new ce;function $gt(e,t){let n=new wt({geometry:new nh({minimum:new m(-.5,-.5,-.5),maximum:new m(.5,.5,.5)}),attributes:{color:tn.fromColor(t)}}),i=new wt({geometry:new cg({radius:.5}),attributes:{color:tn.fromColor(t)}});return new Nn({geometryInstances:[n,i],appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var ebt=[U.RED,U.GREEN,U.BLUE,U.MAGENTA],tbt=new m;function nbt(e,t){qgt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new Rp({camera:e._sceneCamera,color:U.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new Rp({camera:e._shadowMapCamera,color:U.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new Rp({camera:e._passes[i].camera,color:ebt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Pe.IDENTITY,r=e._pointLightRadius*2,s=m.fromElements(r,r,r,tbt),a=X.fromTranslationQuaternionRotationScale(i,o,s,my);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=$gt(a,U.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new Rp({camera:e._shadowMapCamera,color:U.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function iY(){this.viewMatrix=new X,this.inverseViewMatrix=new X,this.frustum=void 0,this.positionCartographic=new ge,this.positionWC=new m,this.directionWC=m.clone(m.UNIT_Z),this.upWC=m.clone(m.UNIT_Y),this.rightWC=m.clone(m.UNIT_X),this.viewProjectionMatrix=new X}iY.prototype.clone=function(e){X.clone(e.viewMatrix,this.viewMatrix),X.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),ge.clone(e.positionCartographic,this.positionCartographic),m.clone(e.positionWC,this.positionWC),m.clone(e.directionWC,this.directionWC),m.clone(e.upWC,this.upWC),m.clone(e.rightWC,this.rightWC)};var ibt=new X(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);iY.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return X.multiply(t,e,this.viewProjectionMatrix),X.multiply(ibt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var obt=new Array(5),rbt=new Ni,sbt=new Array(4),RIe=new m,VIe=new m;function abt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,d=r/o,u=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,u=.9);let p=sbt,g=obt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let P=(a+1)/s,A=o*Math.pow(d,P),T=o+c*P,L=Z.lerp(T,A,u);g[a+1]=L,p[a]=L-g[a]}if(h){for(a=0;a<s;++a)p[a]=Math.min(p[a],e._maximumCascadeDistances[a]);let P=g[0];for(a=0;a<s-1;++a)P+=p[a],g[a+1]=P}ce.unpack(g,0,e._cascadeSplits[0]),ce.unpack(g,1,e._cascadeSplits[1]),ce.unpack(p,0,e._cascadeDistances);let f=n.frustum,b=f.left,x=f.right,I=f.bottom,_=f.top,E=f.near,S=f.far,R=n.positionWC,G=n.directionWC,B=n.upWC,w=i.frustum.clone(rbt),F=n.getViewProjection();for(a=0;a<s;++a){w.near=g[a],w.far=g[a+1];let P=X.multiply(w.projectionMatrix,i.viewMatrix,my),A=X.inverse(P,my),T=X.multiply(F,A,my),L=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,RIe),V=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,VIe);for(let k=0;k<8;++k){let v=ce.clone(Xp[k],i6[k]);X.multiplyByVector(T,v,v),m.divideByScalar(v,v.w,v),m.minimumByComponent(v,L,L),m.maximumByComponent(v,V,V)}L.x=Math.max(L.x,0),L.y=Math.max(L.y,0),L.z=0,V.x=Math.min(V.x,1),V.y=Math.min(V.y,1),V.z=Math.min(V.z,1);let W=e._passes[a],M=W.camera;M.clone(n);let Q=M.frustum;Q.left=b+L.x*(x-b),Q.right=b+V.x*(x-b),Q.bottom=I+L.y*(_-I),Q.top=I+V.y*(_-I),Q.near=E+L.z*(S-E),Q.far=E+V.z*(S-E),W.cullingVolume=M.frustum.computeCullingVolume(R,G,B);let N=e._cascadeMatrices[a];X.multiply(M.getViewProjection(),i.inverseViewMatrix,N),X.multiply(W.textureOffsets,N,N)}}var cbt=new X,lbt=new m,dbt=new m,EIe=new m;function ubt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=X.multiply(i.frustum.projectionMatrix,i.viewMatrix,my),r=X.inverse(o,my),s=n.directionWC,a=i.directionWC;m.equalsEpsilon(s,a,Z.EPSILON10)&&(a=i.upWC);let c=m.cross(s,a,lbt);a=m.cross(c,s,dbt),m.normalize(a,a),m.normalize(c,c);let d=m.fromElements(0,0,0,EIe),u=X.computeView(d,s,a,c,cbt),h=X.multiply(u,r,my),p=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,RIe),g=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,VIe);for(let S=0;S<8;++S){let R=ce.clone(Xp[S],i6[S]);X.multiplyByVector(h,R,R),m.divideByScalar(R,R.w,R),m.minimumByComponent(R,p,p),m.maximumByComponent(R,g,g)}g.z+=1e3,p.z-=10;let f=EIe;f.x=-(.5*(p.x+g.x)),f.y=-(.5*(p.y+g.y)),f.z=-g.z;let b=X.fromTranslation(f,my);u=X.multiply(b,u,u);let x=.5*(g.x-p.x),I=.5*(g.y-p.y),_=g.z-p.z,E=n.frustum;E.left=-x,E.right=x,E.bottom=-I,E.top=I,E.near=.01,E.far=_,X.clone(u,n.viewMatrix),X.inverse(u,n.inverseViewMatrix),X.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),m.clone(s,n.directionWC),m.clone(a,n.upWC),m.clone(c,n.rightWC)}var mbt=[new m(-1,0,0),new m(0,-1,0),new m(0,0,-1),new m(1,0,0),new m(0,1,0),new m(0,0,1)],hbt=[new m(0,-1,0),new m(0,0,-1),new m(0,-1,0),new m(0,-1,0),new m(0,0,1),new m(0,-1,0)],fbt=[new m(0,0,1),new m(1,0,0),new m(-1,0,0),new m(0,0,-1),new m(1,0,0),new m(1,0,0)];function pbt(e,t){let n=new Ni;n.fov=Z.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=mbt[i],o.upWC=hbt[i],o.rightWC=fbt[i],X.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),X.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var Abt=new m,gbt=new m,GIe=new ue,TIe=GIe.center;function bbt(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=GIe;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,Abt),s=m.negate(i.directionWC,gbt),a=m.dot(r,s);if(e.fadingEnabled){let c=Z.clamp(a/.1,0,1);e._darkness=Z.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===on.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ue.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=m.add(i.positionWC,m.multiplyByScalar(i.directionWC,r,TIe),TIe);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===on.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ue.clone(o,e._boundingSphere)}}function ybt(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?m.clone(i.directionWC,r.directionWC):e._isPointLight?m.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;X.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),m.normalize(s,s),m.negate(s,s),X.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=xo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,bbt(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}wp.prototype.update=function(e){if(ybt(this,e),this._needsUpdate)if(zgt(this,e.context),this._isPointLight&&pbt(this,e),this._cascadesEnabled&&(ubt(this,e),this._numberOfCascades>1&&abt(this,e)),this._isPointLight)this._shadowMapCullingVolume=Xs.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;X.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&nbt(this,e)};wp.prototype.updatePass=function(e,t){LIe(this,e,t)};var Cbt=new D;function ZIe(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=Cbt;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,ce.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return ce.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new ce,combinedUniforms2:new ce};return Lt(t,o,!1)}function xbt(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=ot.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let d=n.shaderProgram,u=n.pass===Ge.GLOBE,h=n.pass!==Ge.TRANSLUCENT,p=e._isPointLight,g=e._usesDepthTexture,f=Bp.getShadowCastShaderKeyword(p,u,g,h);if(s=i.shaderCache.getDerivedShaderProgram(d,f),!l(s)){let x=d.vertexShaderSource,I=d.fragmentShaderSource,_=Bp.createShadowCastVertexShader(x,p,u),E=Bp.createShadowCastFragmentShader(I,p,g,h);s=i.shaderCache.createDerivedShaderProgram(d,f,{vertexShaderSource:_,fragmentShaderSource:E,attributeLocations:d._attributeLocations})}a=e._primitiveRenderState,p?a=e._pointRenderState:u&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ke(a,!1),a.cull=ke(a.cull,!1),a.cull.enabled=!1,a=Qe.fromCache(a)),c=ZIe(e,n.uniformMap,u)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}wp.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,d=t.pass===Ge.GLOBE,u=!1;if(d&&(u=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,p;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,p=o.receiveCommand.uniformMap),o.receiveCommand=ot.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,f=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||f||n||g){let b=Bp.getShadowReceiveShaderKeyword(e[0],t.castShadows,d,u);if(h=i.shaderCache.getDerivedShaderProgram(s,b),!l(h)){let x=Bp.createShadowReceiveVertexShader(a,d,u),I=Bp.createShadowReceiveFragmentShader(c,e[0],t.castShadows,d,u);h=i.shaderCache.createDerivedShaderProgram(s,b,{vertexShaderSource:x,fragmentShaderSource:I,attributeLocations:s._attributeLocations})}p=ZIe(e[0],t.uniformMap,d)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=p,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};wp.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=xbt(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};wp.prototype.isDestroyed=function(){return!1};wp.prototype.destroy=function(){n6(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return me(this)};var Hg=wp;var B5i=y(C(),1);var u5i=y(C(),1),WI=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var Ibt=!1;function hy(e){this._drawClassificationFBO=new Gi({createDepthAttachments:!1}),this._accumulationFBO=new Gi({createDepthAttachments:!1}),this._packFBO=new Gi,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new xi({color:new U(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new xi({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Ke,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(hy.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function BIe(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function wIe(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function _bt(e,t,n,i){BIe(e),e._translucentDepthStencilTexture=new Wt({context:t,width:n,height:i,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST})}function Ebt(e,t,n,i){wIe(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function Tbt(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(_bt(e,t,o,r),Ebt(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new Oe({sources:[fP]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._textureToComposite}},Ibt&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let u=e._compositeCommand,h=u.shaderProgram,p=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new Oe({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=ot.shallowClone(u);g.shaderProgram=p,u.derivedCommands.pick=g}l(e._copyCommand)||(s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Ke.equals(e._viewport,n.viewport),d=c!==e._useScissorTest;e._useScissorTest=c,Ke.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Ke.clone(n.viewport,e._scissorRectangle),d=!0),(!l(e._rsDepth)||!Ke.equals(e._viewport,e._rsDepth.viewport)||d)&&(e._rsDepth=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Ke.equals(e._viewport,e._rsAccumulate.viewport)||d)&&(e._rsAccumulate=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:ei.EQUAL,reference:jt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Ke.equals(e._viewport,e._rsComp.viewport)||d)&&(e._rsComp=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:bn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}hy.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let d=i[c];if(d=r?d.derivedCommands.logDepth.command:d,d.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){Tbt(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let d=i[c];if(d=r?d.derivedCommands.logDepth.command:d,!d.depthForTranslucentClassification)continue;let u=d.derivedCommands.depth.depthOnlyCommand;t(u,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};hy.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Ge.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Ge.CESIUM_3D_TILE_CLASSIFICATION],d=i.indices[Ge.CESIUM_3D_TILE_CLASSIFICATION];for(let u=0;u<d;++u)t(c[u],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};hy.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),Sbt(this,e,t)};function Sbt(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}hy.prototype.isSupported=function(){return this._supported};hy.prototype.isDestroyed=function(){return!1};hy.prototype.destroy=function(){return BIe(this),wIe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),me(this)};var EM=hy;function Lbt(){this.command=void 0,this.near=void 0,this.far=void 0}function oY(e,t,n){let i=e.context,o;i.depthTexture&&(o=new gM);let r;e._useOIT&&i.depthTexture&&(r=new yM(i));let s=new Hc(i);s.viewport=Ke.clone(n),this.camera=t,this._cameraClone=xo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new _M(i),this.pickDepthFramebuffer=new xM,this.sceneFramebuffer=new wI,this.globeDepth=o,this.globeTranslucencyFramebuffer=new bM,this.oit=r,this.translucentTileClassification=new EM(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var o6=new m,r6=new m;function Rbt(e,t,n){let i=Math.max(m.maximumComponent(m.abs(e.position,o6)),m.maximumComponent(m.abs(t.position,r6))),o=1/Math.max(1,i);return m.multiplyByScalar(e.position,o,o6),m.multiplyByScalar(t.position,o,r6),m.equalsEpsilon(o6,r6,n)&&m.equalsEpsilon(e.direction,t.direction,n)&&m.equalsEpsilon(e.up,t.up,n)&&m.equalsEpsilon(e.right,t.right,n)&&X.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}oY.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return Rbt(t,n,Z.EPSILON15)?(this._cameraStartFired&&Fi()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Fi(),xo.clone(t,n),!0)};function Vbt(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===re.SCENE2D,d=t.nearToFarDistance2D;i*=1+Z.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let u;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),u=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):u=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=u;for(let p=0;p<u;++p){let g,f;c?(g=Math.min(i-d,n+p*d),f=Math.min(i,g+d)):(g=Math.max(n,Math.pow(a,p)*n),f=Math.min(i,a*g));let b=h[p];l(b)?(b.near=g,b.far=f):b=h[p]=new AM(g,f)}}function Gbt(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let d=i.pass,u=c.indices[d]++;if(c.commands[d][u]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,d=a.commandsInFrustums;d[c]=l(d[c])?d[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var XIe=new Xs,Zbt=new oc;oY.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,d=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let u=this.frustumCommandsList;for(let F=0;F<u.length;++F)for(let P=0;P<Ge.NUMBER_OF_PASSES;++P)u[F].indices[P]=0;c.length=0,d.length=0;let h=this._commandExtents,p=h.length,g=0,f=+Number.MAX_VALUE,b=-Number.MAX_VALUE,{shadowsEnabled:x}=o,I=+Number.MAX_VALUE,_=-Number.MAX_VALUE,E=Number.MAX_VALUE,S=t.mode===re.SCENE3D?t.occluder:void 0,{cullingVolume:R}=t,G=XIe.planes;for(let F=0;F<5;++F)G[F]=R.planes[F];R=XIe;for(let F=0;F<i.length;++F){let P=i[F],{pass:A,boundingVolume:T}=P;if(A===Ge.COMPUTE)c.push(P);else if(A===Ge.OVERLAY)d.push(P);else{let L,V;if(l(T)){if(!e.isVisible(R,P,S))continue;let M=T.computePlaneDistances(r,s,Zbt);if(L=M.start,V=M.stop,f=Math.min(f,L),b=Math.max(b,V),x&&P.receiveShadows&&L<Hg.MAXIMUM_DISTANCE&&!(A===Ge.GLOBE&&L<-100&&V>100)){let Q=V-L;A!==Ge.GLOBE&&L<100&&(E=Math.min(E,Q)),I=Math.min(I,L),_=Math.max(_,V)}}else P instanceof xi?(L=a.near,V=a.far):(L=a.near,V=a.far,f=Math.min(f,L),b=Math.max(b,V));let W=h[g];l(W)||(W=h[g]=new Lbt),W.command=P,W.near=L,W.far=V,g++}}x&&(I=Math.min(Math.max(I,a.near),a.far),_=Math.max(Math.min(_,a.far),I),o.nearPlane=I,o.farPlane=_,o.closestObjectSize=E),Vbt(this,e,f,b);for(let F=0;F<g;F++)Gbt(this,e,h[F]);if(g<p)for(let F=g;F<p;F++){let P=h[F];if(!l(P.command))break;P.command=void 0}let B=u.length,{frustumSplits:w}=t;w.length=B+1;for(let F=0;F<B;++F)w[F]=u[F].near,F===B-1&&(w[F+1]=u[F].far)};oY.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var FI=oY;var FIe=.1,Bbt=new vm({pass:zo.MOST_DETAILED_PRELOAD}),wbt=new vm({pass:zo.MOST_DETAILED_PICK}),TM=new vm({pass:zo.PICK});function Sa(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Ke(0,0,1,1),n=new xo(e);n.frustum=new gn({width:FIe,aspectRatio:1,near:.1}),this._pickOffscreenView=new FI(e,n,t)}Sa.prototype.update=function(){this._pickPositionCacheDirty=!0};Sa.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new pM,n[t]=i),i};var Xbt=new qr,Wbt=new m,rY=new m,Fbt=new D,Pbt=new X;function Mbt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let d=2*(o.height-t.y-o.y)/o.height-1;d*=(s.top-s.bottom)*.5;let u=X.clone(r.transform,Pbt);r._setTransform(X.IDENTITY);let h=m.clone(r.position,Wbt);m.multiplyByScalar(r.right,c,rY),m.add(rY,h,h),m.multiplyByScalar(r.up,d,rY),m.add(rY,h,h),r._setTransform(u),e.mode===re.SCENE2D&&m.fromElements(h.z,h.x,h.y,h);let p=s.getPixelDimensions(o.width,o.height,1,1,Fbt),g=Xbt;return g.right=p.x*.5,g.left=-g.right,g.top=p.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var vbt=new vl,Nbt=new D;function Dbt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),d=s.aspectRatio*c,u=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,p=u*a*d,g=h*a*c,f=s.getPixelDimensions(o.width,o.height,1,1,Nbt),b=f.x*n*.5,x=f.y*i*.5,I=vbt;return I.top=g+x,I.bottom=g-x,I.right=p+b,I.left=p-b,I.near=a,I.far=s.far,I.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function sY(e,t,n,i,o){let r=e.camera.frustum;return r instanceof gn||r instanceof qr?Mbt(e,t,n,i,o):Dbt(e,t,n,i,o)}var aY=new Ke(0,0,3,3),cY=new D,SM=new U(0,0,0,0);function s6(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}Sa.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Ke.clone(a,d.viewport);let u=to.transformWindowToDrawingBuffer(e,t,cY),h=s6(o.drawingBufferHeight,u,n,i,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=sY(e,u,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=TM,o.uniformState.update(r),e.updateEnvironment(),d=c.begin(h,a),e.updateAndExecuteCommands(d,SM),e.resolveFramebuffers(d);let p=c.end(h);return o.endFrame(),p};Sa.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Ke.clone(a,d.viewport);let u=to.transformWindowToDrawingBuffer(e,t,cY),h=s6(o.drawingBufferHeight,u,n,i,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=sY(e,u,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=TM,o.uniformState.update(r),e.updateEnvironment(),d=c.begin(h,a),e.updateAndExecuteCommands(d,SM),e.resolveFramebuffers(d);let p=c.readCenterPixel(h);return o.endFrame(),p};Sa.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Ke.clone(s,c.viewport);let d=to.transformWindowToDrawingBuffer(e,t,cY),u=s6(i.drawingBufferHeight,d,1,1,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=sY(e,d,u.width,u.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=TM,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(u,s),e.updateAndExecuteCommands(c,SM);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let p=a.readCenterPixel(u);return i.endFrame(),o.pickingMetadata=!1,fM.decodeMetadataValues(n.classProperty,n.metadataProperty,p)};function Qbt(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Ke.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=sY(e,t,1,1,s),o.tilesetPassState=TM,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,SM),e.resolveFramebuffers(c),i.endFrame()}var Ubt=new Ni,kbt=new vl,Ybt=new gn,Obt=new qr;Sa.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return m.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let d=to.transformWindowToDrawingBuffer(e,t,cY);e.pickTranslucentDepth?Qbt(e,d):(e.updateFrameState(),c.update(r),e.updateEnvironment()),d.y=e.drawingBufferHeight-d.y;let u;l(s.frustum.fov)?u=s.frustum.clone(Ubt):l(s.frustum.infiniteProjectionMatrix)?u=s.frustum.clone(kbt):l(s.frustum.width)?u=s.frustum.clone(Ybt):u=s.frustum.clone(Obt);let{frustumCommandsList:h}=a,p=h.length;for(let g=0;g<p;++g){let b=this.getPickDepth(e,g).getDepth(o,d.x,d.y);if(l(b)&&b>0&&b<1){let x=h[g],I;return e.mode===re.SCENE2D?(I=s.position.z,s.position.z=I-x.near+1,u.far=Math.max(1,x.far-x.near),u.near=1,c.update(r),c.updateFrustum(u)):(u.near=x.near*(g!==0?e.opaqueFrustumNearOffset:1),u.far=x.far,c.updateFrustum(u)),n=to.drawingBufferToWorldCoordinates(e,d,b,n),e.mode===re.SCENE2D&&(s.position.z=I,c.update(r)),this._pickPositionCache[i]=m.clone(n),n}}this._pickPositionCache[i]=void 0};var Hbt=new ge;Sa.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==re.SCENE3D){m.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,Hbt);o.cartographicToCartesian(r,n)}return n};function PIe(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let d=c.object,u=c.position,h=c.exclude;if(l(u)&&!l(d)){o.push(c);break}if(!l(d)||!l(d.primitive)||!h&&(o.push(c),0>=--e))break;let p=d.primitive,g=!1;typeof p.getGeometryInstanceAttributes=="function"&&l(d.id)&&(i=p.getGeometryInstanceAttributes(d.id),l(i)&&l(i.show)&&(g=!0,i.show=Vn.toValue(!1,i.show),s.push(i))),d instanceof ma&&(g=!0,d.show=!1,a.push(d)),g||(p.show=!1,r.push(p)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=Vn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}Sa.prototype.drillPick=function(e,t,n,i,o){let r=this;return PIe(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var WIe=new m,zbt=new m;function Kbt(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function MIe(e,t,n,i){let o=t.direction,r=m.mostOrthogonalAxis(o,WIe),s=m.cross(o,r,WIe),a=m.cross(o,s,zbt);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??FIe,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function Jbt(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=MIe(e,o,r,a),d=Bbt;d.camera=a,d.cullingVolume=c;let u=!0,h=s.length;for(let p=0;p<h;++p){let g=s[p];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,d),u=u&&d.ready)}return u&&n._completePick(),u}Sa.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)Jbt(this,e,t[n])&&t.splice(n--,1)};function vIe(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof Wl&&vIe(o,t,n))}}function lY(e,t,n,i,o,r){let s=[];if(vIe(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new Kbt(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function jbt(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function qbt(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,d=a.uniformState,u=e._pickOffscreenView;t.view=u,MIe(e,n,o,u.camera);let h=Ke.clone(u.viewport,aY),p=u.pickFramebuffer.begin(h,u.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=wbt:c.tilesetPassState=TM,d.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(p,SM),t.resolveFramebuffers(p);let g,f=u.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:b}=u,x=b.length;for(let I=0;I<x;++I){let E=e.getPickDepth(t,I).getDepth(a,0,0);if(l(E)&&E>0&&E<1){let S=b[I],R=S.near*(I!==0?t.opaqueFrustumNearOffset:1),G=S.far,B=R+E*(G-R);g=En.getPoint(n,B);break}}}if(t.view=t.defaultView,a.endFrame(),l(f)||l(g))return{object:f,position:g,exclude:!l(g)&&r||jbt(f,i)}}function NIe(e,t,n,i,o,r,s,a){return PIe(i,function(){return qbt(e,t,n,o,r,s,a)})}function hL(e,t,n,i,o,r,s){let a=NIe(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function DIe(e,t,n,i,o,r,s,a){return NIe(e,t,n,i,o,r,s,a)}function dY(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}Sa.prototype.pickFromRay=function(e,t,n,i){return hL(this,e,t,n,i,!1,!1)};Sa.prototype.drillPickFromRay=function(e,t,n,i,o){return DIe(this,e,t,n,i,o,!1,!1)};Sa.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=En.clone(t),n=l(n)?n.slice():n,dY(e,lY(o,e,t,n,i,function(){return hL(o,e,t,n,i,!1,!0)}))};Sa.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=En.clone(t),i=l(i)?i.slice():i,dY(e,lY(r,e,t,i,o,function(){return DIe(r,e,t,n,i,o,!1,!0)}))};var $bt=new m,e0t=new m,t0t=new En,QIe=new ge;function a6(e,t){let n=e.ellipsoid,i=Si._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,e0t),r=ge.toCartesian(t,n,$bt),s=t0t;s.origin=r,s.direction=o;let a=new En;return En.getPoint(s,i,a.origin),m.negate(o,a.direction),a}function UIe(e,t){let n=e.ellipsoid,i=ge.fromCartesian(t,n,QIe);return a6(e,i)}function kIe(e,t){let n=e.ellipsoid;return ge.fromCartesian(t,n,QIe).height}function n0t(e,t,n,i,o){let r=a6(t,n);return lY(e,t,r,i,o,function(){let s=hL(e,t,r,i,o,!0,!0);if(l(s))return kIe(t,s.position)})}function i0t(e,t,n,i,o,r){let s=UIe(t,n);return lY(e,t,s,i,o,function(){let a=hL(e,t,s,i,o,!0,!0);if(l(a))return m.clone(a.position,r)})}Sa.prototype.sampleHeight=function(e,t,n,i){let o=a6(e,t),r=hL(this,e,o,n,i,!0,!1);if(l(r))return kIe(e,r.position)};Sa.prototype.clampToHeight=function(e,t,n,i,o){let r=UIe(e,t),s=hL(this,e,r,n,i,!0,!1);if(l(s))return m.clone(s.position,o)};Sa.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=n0t(this,e,t[s],n,i);return dY(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};Sa.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=i0t(this,e,t[s],n,i,t[s]);return dY(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};Sa.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var LM=Sa;var $Yi=y(C(),1);var LYi=y(C(),1);var GUi=y(C(),1),RM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var BUi=y(C(),1),VM=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var XUi=y(C(),1),GM=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var FUi=y(C(),1),ZM=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var MUi=y(C(),1),BM=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var NUi=y(C(),1),wM=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var QUi=y(C(),1),XM=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var kUi=y(C(),1),WM=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var OUi=y(C(),1),FM=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var zUi=y(C(),1),PM=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var JUi=y(C(),1),MM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var qUi=y(C(),1),vM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var eki=y(C(),1),NM=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var nki=y(C(),1),fy=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var oki=y(C(),1),DM=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var ski=y(C(),1),QM=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var cki=y(C(),1),UM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var dki=y(C(),1),kM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var mki=y(C(),1),YM=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;var xki=y(C(),1);function PI(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new Gi,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new D,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(PI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function YIe(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function o0t(e,t){YIe(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new Gi,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function OIe(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function r0t(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function s0t(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function a0t(e,t){OIe(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(s0t(r,i),{framebuffer:n[r].framebuffer,uniformMap:r0t(e,r)});e._commands=o}PI.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new xi({color:new U(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};PI.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,o0t(this,e),a0t(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};PI.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};PI.prototype.isDestroyed=function(){return!1};PI.prototype.destroy=function(){return YIe(this),OIe(this),me(this)};var OM=PI;var kki=y(C(),1);var _ki=y(C(),1),c0t={NEAREST:0,LINEAR:1},_u=c0t;function MI(e){e=e??Y.EMPTY_OBJECT;let{name:t=qn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=_u.NEAREST,pixelFormat:a=tt.RGBA,pixelDatatype:c=Ye.UNSIGNED_BYTE,clearColor:d=U.BLACK,scissorRectangle:u}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=d,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new Hc;h.scissorTest={enabled:!0,rectangle:l(u)?Ke.clone(u):new Ke},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(MI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var l0t=/uniform\s+sampler2D\s+depthTexture/g;MI.prototype._isSupported=function(e){return!l0t.test(this._fragmentShader)||e.depthTexture};function d0t(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Wt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Wt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function u0t(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function m0t(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function h0t(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=u0t(e,r),n[r]=d0t(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Wt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=m0t(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=Lt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function f0t(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function p0t(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=f0t(n,o)}let i=new Oe({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function A0t(e){let t=e._sampleMode,n,i;t===_u.LINEAR?(n=en.LINEAR,i=pi.LINEAR):(n=en.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function g0t(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function b0t(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function y0t(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:d}=i[a];e._actualUniforms[c]=new Wt({context:t,source:d})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],d=r[c],u=e._textureCache.getStageByName(d);if(l(u))e._actualUniforms[c]=b0t(e,d);else if(typeof d=="string"){let h=new Ve({url:d});s.push(h.fetchImage().then(g0t(e,c)))}else e._texturesToCreate.push({name:c,source:d})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function HIe(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Wt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function C0t(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function x0t(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:sn.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,d=c.length;for(let u=0;u<d;++u){let h=c[u].color;r[o]=U.floatToByte(h.red),r[o+1]=U.floatToByte(h.green),r[o+2]=U.floatToByte(h.blue),r[o+3]=U.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=U.floatToByte(c.red),r[o+1]=U.floatToByte(c.green),r[o+2]=U.floatToByte(c.blue),r[o+3]=U.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:sn.NEAREST})}MI.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&HIe(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=C0t(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,x0t(this,e),h0t(this),y0t(this,e),p0t(this,e),A0t(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Qe.fromCache({viewport:new Ke(0,0,i.width,i.height)}))),this._command.renderState=o};MI.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,sn.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};MI.prototype.isDestroyed=function(){return!1};MI.prototype.destroy=function(){return HIe(this),me(this)};var Lo=MI;var Jki=y(C(),1);function vI(e){e=e??Y.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=qn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(vI.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});vI.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};vI.prototype.get=function(e){return this._stages[e]};function I0t(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}vI.prototype.update=function(e,t){this._selectedDirty=I0t(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};vI.prototype.isDestroyed=function(){return!1};vI.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return me(this)};var Td=vI;var zr={};function c6(e){let o=`#define USE_STEP_SIZE +${fy}`,r=new Lo({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:_u.LINEAR}),s=new Lo({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:_u.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let d=r.uniforms,u=s.uniforms;d.delta=u.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let d=r.uniforms,u=s.uniforms;d.sigma=u.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let d=r.uniforms,u=s.uniforms;d.stepSize=u.stepSize=c}}}),new Td({name:e,stages:[r,s],uniforms:a})}zr.createBlurStage=function(){return c6("czm_blur")};zr.createDepthOfFieldStage=function(){let e=c6("czm_depth_of_field_blur"),t=new Lo({name:"czm_depth_of_field_composite",fragmentShader:WM,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new Td({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};zr.createEdgeDetectionStage=function(){let e=qn();return new Lo({name:`czm_edge_detection_${e}`,fragmentShader:PM,uniforms:{length:.25,color:U.clone(U.BLACK)}})};zr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function _0t(e){if(!l(e))return zr.createEdgeDetectionStage();let t=new Td({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new Lo({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new Td({name:"czm_edge_detection_composite",stages:[t,s]})}zr.createSilhouetteStage=function(e){let t=_0t(e),n=new Lo({name:"czm_silhouette_color_edges",fragmentShader:YM,uniforms:{silhouetteTexture:t.name}});return new Td({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};zr.isSilhouetteSupported=function(e){return e.context.depthTexture};zr.createBloomStage=function(){let e=new Lo({name:"czm_bloom_contrast_bias",fragmentShader:XM,uniforms:{contrast:128,brightness:-.3}}),t=c6("czm_bloom_blur"),n=new Td({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new Lo({name:"czm_bloom_generate_composite",fragmentShader:BM,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new Td({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};zr.createAmbientOcclusionStage=function(){let e=new Lo({name:"czm_ambient_occlusion_generate",fragmentShader:VM,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new Lo({name:"czm_ambient_occlusion_composite",fragmentShader:GM,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new Td({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var E0t=`#define FXAA_QUALITY_PRESET 39 +${bP} +${NM}`;zr.createFXAAStage=function(){return new Lo({name:"czm_FXAA",fragmentShader:E0t,sampleMode:_u.LINEAR})};zr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=RM,new Lo({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=MM,new Lo({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=vM,new Lo({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=kM,new Lo({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=QM,new Lo({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:U.WHITE,autoExposure:void 0,exposure:1}})};zr.createAutoExposureStage=function(){return new OM};zr.createBlackAndWhiteStage=function(){return new Lo({name:"czm_black_and_white",fragmentShader:ZM,uniforms:{gradations:5}})};zr.createBrightnessStage=function(){return new Lo({name:"czm_brightness",fragmentShader:wM,uniforms:{brightness:.5}})};zr.createNightVisionStage=function(){return new Lo({name:"czm_night_vision",fragmentShader:UM})};zr.createDepthViewStage=function(){return new Lo({name:"czm_depth_view",fragmentShader:FM})};zr.createLensFlareStage=function(){return new Lo({name:"czm_lens_flare",fragmentShader:DM,uniforms:{dirtTexture:hn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:hn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:ie.WGS84.maximumRadius}})};var Eu=zr;var WYi=y(C(),1);function zg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function zM(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function l6(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[zM(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let d=0;d<c;++d){let u=s[a[d]];if(typeof u=="string"){let h=e.getStageByName(u);l(h)&&(r[zM(h)]=!0)}}}return i.name}function HM(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let p=i.get(h);l(p.length)?a=HM(e,t,n,p,o):a=l6(e,t,n,p,o),s&&(o=a)}let d,u;if(s)for(d=1;d<c;++d)u=zM(i.get(d)),l(n[u])||(n[u]={}),n[u][r]=!0;else for(d=1;d<c;++d){u=zM(i.get(d));let h=n[u];for(let p=0;p<d;++p)h[zM(i.get(p))]=!0}return a}function T0t(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=HM(e,t,n,i,void 0);a=HM(e,t,n,o,a),a=l6(e,t,n,r,a),a=HM(e,t,n,e,a),l6(e,t,n,s,a)}else HM(e,t,n,e,void 0);return n}function S0t(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,d=o._clearColor,u,h,p=e._framebuffers,g=p.length;for(u=0;u<g;++u){if(h=p[u],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!U.equals(d,h.clearColor))continue;let f=h.stages,b=f.length,x=!1;for(let I=0;I<b;++I)if(n[f[I]]){x=!0;break}if(!x)break}return l(h)&&u<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:d,stages:[t],buffer:new Gi({pixelFormat:a,pixelDatatype:c}),clear:void 0},p.push(h),h)}function L0t(e,t){let n=T0t(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=S0t(e,i,n[i]))}function d6(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function R0t(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,d=Math.ceil(n*c),u=Math.ceil(i*c),h=Math.min(d,u);a.forcePowerOfTwo&&(Z.isPowerOfTwo(h)||(h=Z.nextPowerOfTwo(h)),d=h,u=h),a.buffer.update(t,d,u),a.clear=new xi({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}zg.prototype.updateDependencies=function(){this._updateDependencies=!0};zg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(d6(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&L0t(this,e);let c=e.drawingBufferWidth,d=e.drawingBufferHeight,u=this._width!==c||this._height!==d;!n&&!u||(this._width=c,this._height=d,this._updateDependencies=!1,d6(this),R0t(this,e))};zg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};zg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};zg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};zg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};zg.prototype.isDestroyed=function(){return!1};zg.prototype.destroy=function(){return d6(this),me(this)};var NI=zg;var PYi=y(C(),1),V0t={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var Kg=Object.freeze(V0t);var u6=[];function Nl(){let e=Eu.createFXAAStage(),t=Eu.createAmbientOcclusionStage(),n=Eu.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Eu.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=Kg.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new NI(this),r={},s=u6;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let d=c.length;if(l(d))for(let u=0;u<d;++u)s.push(c.get(u))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(Nl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return m6(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case Kg.REINHARD:n=Eu.createReinhardTonemappingStage(t);break;case Kg.MODIFIED_REINHARD:n=Eu.createModifiedReinhardTonemappingStage(t);break;case Kg.FILMIC:n=Eu.createFilmicTonemappingStage(t);break;case Kg.PBR_NEUTRAL:n=Eu.createPbrNeutralTonemappingStage(t);break;default:n=Eu.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function m6(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}Nl.prototype.add=function(e){let t=this._stageNames,n=u6;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};Nl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=u6;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};Nl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};Nl.prototype.get=function(e){return m6(this),this._stages[e]};Nl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};Nl.prototype.getStageByName=function(e){return this._stageNames[e]};Nl.prototype.update=function(e,t,n){m6(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let I=0;I<r.length;++I){let _=r[I];_.ready&&_.enabled&&_._isSupported(e)&&(o[s++]=_)}o.length=s;let a=s!==i.length;if(!a){for(let I=0;I<s;++I)if(o[I]!==i[I]){a=!0;break}}let c=this._ao,d=this._bloom,u=this._autoExposure,h=this._tonemapping,p=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),f=d.enabled&&d._isSupported(e),b=h.enabled&&h._isSupported(e),x=p.enabled&&p._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||f!==this._bloomEnabled||b!==this._tonemappingEnabled||x!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=f,this._tonemappingEnabled=b,this._fxaaEnabled=x,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let _=new Uint8Array(196608);for(let E=0;E<196608;E+=3)_[E]=Math.floor(Math.random()*255);this._randomTexture=new Wt({context:e,pixelFormat:tt.RGB,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:_,width:256,height:256},sampler:new sn({wrapS:Ln.REPEAT,wrapT:Ln.REPEAT,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),p.update(e,t),c.update(e,t),d.update(e,t),h.update(e,t),this._autoExposureEnabled&&u.update(e,t);for(let I=0;I<r.length;++I)r[I].update(e,t);s=0;for(let I=0;I<r.length;++I){let _=r[I];_.ready&&_.enabled&&_._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};Nl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function DI(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}Nl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return DI(t)};function Wp(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){Wp(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)Wp(e.get(r),t,DI(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)Wp(e.get(r),t,n,i,o)}Nl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,d=this._autoExposure,u=this._tonemapping,h=a.enabled&&a._isSupported(e),p=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,f=u.enabled&&u._isSupported(e),b=s.enabled&&s._isSupported(e);if(!b&&!h&&!p&&!f&&r===0)return;let x=t;h&&a.ready&&(Wp(a,e,x,n,i),x=DI(a)),p&&c.ready&&(Wp(c,e,x,n,i),x=DI(c)),g&&d.ready&&Wp(d,e,x,n,i),f&&u.ready&&(Wp(u,e,x,n,i),x=DI(u));let I=x;if(r>0){Wp(o[0],e,x,n,i);for(let _=1;_<r;++_)Wp(o[_],e,DI(o[_-1]),n,i);I=DI(o[r-1])}b&&s.ready&&Wp(s,e,I,n,i)};Nl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};Nl.prototype.isDestroyed=function(){return!1};Nl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),me(this)};var KM=Nl;var Z3i=y(C(),1);var h3i=y(C(),1);var t3i=y(C(),1),G0t={SHIFT:0,CTRL:1,ALT:2},La=Object.freeze(G0t);var i3i=y(C(),1),Z0t={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},Zn=Object.freeze(Z0t);function py(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function b6(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function QI(e){if(e.shiftKey)return La.SHIFT;if(e.ctrlKey)return La.CTRL;if(e.altKey)return La.ALT}var hs={LEFT:0,MIDDLE:1,RIGHT:2};function Tu(e,t,n,i){function o(r){i(e,r)}Ht.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function B0t(e){let t=e._element,n=l(t.disableRootEvents)?t:document;Ht.supportsPointerEvents()?(Tu(e,"pointerdown",t,M0t),Tu(e,"pointerup",t,i_e),Tu(e,"pointermove",t,v0t),Tu(e,"pointercancel",t,i_e)):(Tu(e,"mousedown",t,o_e),Tu(e,"mouseup",n,r_e),Tu(e,"mousemove",n,s_e),Tu(e,"touchstart",t,F0t),Tu(e,"touchend",n,qIe),Tu(e,"touchmove",n,P0t),Tu(e,"touchcancel",n,qIe)),Tu(e,"dblclick",t,X0t);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",Tu(e,i,t,W0t)}function w0t(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var zIe={position:new D};function y6(e){e._lastSeenTouchEvent=Fi()}function C6(e){return Fi()-e._lastSeenTouchEvent>ff.mouseEmulationIgnoreMilliseconds}function g6(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function o_e(e,t){if(!C6(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===hs.LEFT)i=Zn.LEFT_DOWN;else if(n===hs.MIDDLE)i=Zn.MIDDLE_DOWN;else if(n===hs.RIGHT)i=Zn.RIGHT_DOWN;else return;let o=py(e,t,e._primaryPosition);D.clone(o,e._primaryStartPosition),D.clone(o,e._primaryPreviousPosition);let r=QI(t),s=e.getInputAction(i,r);l(s)&&(D.clone(o,zIe.position),s(zIe),t.preventDefault())}var KIe={position:new D},JIe={position:new D};function h6(e,t,n,i){let o=QI(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=py(e,i,e._primaryPosition);if(l(r)&&(D.clone(a,KIe.position),r(KIe)),l(s)){let c=e._primaryStartPosition;g6(c,a,e._clickPixelTolerance)&&(D.clone(a,JIe.position),s(JIe))}}}function r_e(e,t){if(!C6(e))return;let n=t.button;n!==hs.LEFT&&n!==hs.MIDDLE&&n!==hs.RIGHT||(e._buttonDown[hs.LEFT]&&(h6(e,Zn.LEFT_UP,Zn.LEFT_CLICK,t),e._buttonDown[hs.LEFT]=!1),e._buttonDown[hs.MIDDLE]&&(h6(e,Zn.MIDDLE_UP,Zn.MIDDLE_CLICK,t),e._buttonDown[hs.MIDDLE]=!1),e._buttonDown[hs.RIGHT]&&(h6(e,Zn.RIGHT_UP,Zn.RIGHT_CLICK,t),e._buttonDown[hs.RIGHT]=!1))}var f6={startPosition:new D,endPosition:new D};function s_e(e,t){if(!C6(e))return;let n=QI(t),i=py(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(Zn.MOUSE_MOVE,n);l(r)&&(D.clone(o,f6.startPosition),D.clone(i,f6.endPosition),r(f6)),D.clone(i,o),(e._buttonDown[hs.LEFT]||e._buttonDown[hs.MIDDLE]||e._buttonDown[hs.RIGHT])&&t.preventDefault()}var jIe={position:new D};function X0t(e,t){let n=t.button,i;if(n===hs.LEFT)i=Zn.LEFT_DOUBLE_CLICK;else return;let o=QI(t),r=e.getInputAction(i,o);l(r)&&(py(e,t,jIe.position),r(jIe))}function W0t(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=QI(t),o=e.getInputAction(Zn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function F0t(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,py(e,r,new D));uY(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,D.clone(a.get(s)))}function qIe(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);uY(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var $Ie={position:new D},p6={position1:new D,position2:new D},e_e={position:new D},t_e={position:new D},n_e={position:new D};function uY(e,t){let n=QI(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[hs.LEFT]){if(e._buttonDown[hs.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(Zn.LEFT_UP,n),l(r)&&(D.clone(e._primaryPosition,e_e.position),r(e_e)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(Zn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,d=e._previousPositions.values[0];g6(c,d,e._clickPixelTolerance)&&(D.clone(e._primaryPosition,t_e.position),s(t_e))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(Zn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];D.clone(c,e._primaryPosition),D.clone(c,e._primaryStartPosition),D.clone(c,e._primaryPreviousPosition),e._buttonDown[hs.LEFT]=!0,r=e.getInputAction(Zn.LEFT_DOWN,n),l(r)&&(D.clone(c,$Ie.position),r($Ie)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(Zn.RIGHT_CLICK,n),l(s))){let d=e._primaryStartPosition,u=e._previousPositions.values[0];g6(d,u,e._holdPixelTolerance)&&(D.clone(e._primaryPosition,n_e.position),s(n_e))}},ff.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(Zn.PINCH_START,n),l(r)&&(D.clone(i.values[0],p6.position1),D.clone(i.values[1],p6.position2),r(p6),t.preventDefault()))}function P0t(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let d=a.get(s);l(d)&&py(e,r,d)}a_e(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,D.clone(a.get(s),c.get(s))}var A6={startPosition:new D,endPosition:new D},JM={distance:{startPosition:new D,endPosition:new D},angleAndHeight:{startPosition:new D,endPosition:new D}};function a_e(e,t){let n=QI(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[hs.LEFT]){let a=i.values[0];D.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(Zn.MOUSE_MOVE,n),l(s)&&(D.clone(c,A6.startPosition),D.clone(a,A6.endPosition),s(A6)),D.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(Zn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],d=o.values[0],u=o.values[1],h=c.x-a.x,p=c.y-a.y,g=Math.sqrt(h*h+p*p)*.25,f=u.x-d.x,b=u.y-d.y,x=Math.sqrt(f*f+b*b)*.25,I=(c.y+a.y)*.125,_=(u.y+d.y)*.125,E=Math.atan2(p,h),S=Math.atan2(b,f);D.fromElements(0,x,JM.distance.startPosition),D.fromElements(0,g,JM.distance.endPosition),D.fromElements(S,_,JM.angleAndHeight.startPosition),D.fromElements(E,I,JM.angleAndHeight.endPosition),s(JM)}}function M0t(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,py(e,t,new D)),uY(e,t),e._previousPositions.set(i,D.clone(n.get(i)))}else o_e(e,t)}function i_e(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),uY(e,t),e._previousPositions.remove(i)}else r_e(e,t)}function v0t(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;py(e,t,o),a_e(e,t);let r=e._previousPositions;D.clone(n.get(i),r.get(i))}else s_e(e,t)}function ff(e){this._inputEvents={},this._buttonDown={[hs.LEFT]:!1,[hs.MIDDLE]:!1,[hs.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-ff.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new D,this._primaryPosition=new D,this._primaryPreviousPosition=new D,this._positions=new Bt,this._previousPositions=new Bt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,B0t(this)}ff.prototype.setInputAction=function(e,t,n){let i=b6(t,n);this._inputEvents[i]=e};ff.prototype.getInputAction=function(e,t){let n=b6(e,t);return this._inputEvents[n]};ff.prototype.removeInputAction=function(e,t){let n=b6(e,t);delete this._inputEvents[n]};ff.prototype.isDestroyed=function(){return!1};ff.prototype.destroy=function(){return w0t(this),me(this)};ff.mouseEmulationIgnoreMilliseconds=800;ff.touchHoldDelayMilliseconds=1500;var Su=ff;function UI(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}UI.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};UI.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof gn,!(this._previousMode===re.SCENE2D||this._previousMode===re.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,re.SCENE2D,!0),n._mode=re.MORPHING,n.camera._setTransform(X.IDENTITY),this._previousMode===re.COLUMBUS_VIEW?byt(this,e):Tyt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var N0t=new m,D0t=new m,Q0t=new m,U0t=new m,k0t=new m,Y0t=new m,O0t=new m,H0t=new ge,z0t=new X,K0t=new Ni,J0t=new gn,j0t={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};UI.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===re.COLUMBUS_VIEW||this._previousMode===re.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,re.COLUMBUS_VIEW,!0),n.camera._setTransform(X.IDENTITY);let i=N0t,o=D0t,r=Q0t;if(e>0)i.x=0,i.y=-1,i.z=1,i=m.multiplyByScalar(m.normalize(i,i),5*t.maximumRadius,i),m.negate(m.normalize(i,o),o),m.cross(m.UNIT_X,o,r);else{let d=n.camera;if(this._previousMode===re.SCENE2D)m.clone(d.position,i),i.z=d.frustum.right-d.frustum.left,m.negate(m.UNIT_Z,o),m.clone(m.UNIT_Y,r);else{m.clone(d.positionWC,i),m.clone(d.directionWC,o),m.clone(d.upWC,r);let u=t.scaleToGeodeticSurface(i,O0t),h=Dt.eastNorthUpToFixedFrame(u,t,z0t);X.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,H0t),i),X.multiplyByPointAsVector(h,o,o),X.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=J0t,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=K0t,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=Z.toRadians(60));let a=j0t;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=Lyt(a);jM(this,c),this._previousMode===re.SCENE2D?Syt(this,e,a,c):(a.position2D=X.multiplyByPoint(xo.TRANSFORM_2D,i,U0t),a.direction2D=X.multiplyByPointAsVector(xo.TRANSFORM_2D,o,k0t),a.up2D=X.multiplyByPointAsVector(xo.TRANSFORM_2D,r,Y0t),n._mode=re.MORPHING,b_e(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var _6={position:new m,direction:new m,up:new m,frustum:void 0},l_e=new Ni;UI.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===re.SCENE3D||this._previousMode===re.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,re.SCENE3D,!0),n._mode=re.MORPHING,n.camera._setTransform(X.IDENTITY),this._previousMode===re.SCENE2D)cyt(this,e,t);else{let i;e>0?(i=_6,m.fromDegrees(0,0,5*t.maximumRadius,t,i.position),m.negate(i.position,i.direction),m.normalize(i.direction,i.direction),m.clone(m.UNIT_Z,i.up)):i=d_e(this,t);let o,r=n.camera;r.frustum instanceof gn?o=r.frustum.clone():(o=l_e,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=Z.toRadians(60)),i.frustum=o;let s=C_e(i);jM(this,s),I6(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};UI.prototype.isDestroyed=function(){return!1};UI.prototype.destroy=function(){return mY(this),me(this)};function jM(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Su(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,Zn.LEFT_DOWN),e._morphHandler.setInputAction(n,Zn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,Zn.RIGHT_DOWN),e._morphHandler.setInputAction(n,Zn.WHEEL)}}function mY(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var q0t=new ge,$0t=new m,eyt=new X;function d_e(e,t){let n=e._scene,i=n.camera,o=_6,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,q0t);t.cartographicToCartesian(c,r);let d=t.scaleToGeodeticSurface(r,$0t),u=Dt.eastNorthUpToFixedFrame(d,t,eyt);return X.multiplyByPointAsVector(u,i.direction,s),X.multiplyByPointAsVector(u,i.up,a),o}var tyt=new m,nyt=new m,iyt=new m,oyt=new m,ryt=new m,syt=new m;function I6(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=m.clone(r.position,tyt),a=m.clone(r.direction,nyt),c=m.clone(r.up,iyt),d=X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,n.position,oyt),u=X.multiplyByPointAsVector(xo.TRANSFORM_2D_INVERSE,n.direction,ryt),h=X.multiplyByPointAsVector(xo.TRANSFORM_2D_INVERSE,n.up,syt);function p(f){Dm(s,d,f.time,r.position),Dm(a,u,f.time,r.direction),Dm(c,h,f.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){y_e(e,o,0,1,t,i)}});e._currentTweens.push(g)}var ayt=new gn,u_e=new m,m_e=new m,h_e=new m,E6=new m,f_e=new m,p_e=new m;function cyt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=_6,m.fromDegrees(0,0,5*n.maximumRadius,n,r.position),m.negate(r.position,r.direction),m.normalize(r.direction,r.direction),m.clone(m.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=d_e(e,n));let s;e._morphToOrthographic?(s=ayt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=l_e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=Z.toRadians(60)),r.frustum=s;let a=C_e(r);jM(e,a);let c;e._morphToOrthographic?c=function(){I6(e,t,r,a)}:c=function(){g_e(e,t,r,function(){I6(e,t,r,a)})},t>0?(i._mode=re.SCENE2D,o.flyTo({duration:t,destination:m.fromDegrees(0,0,5*n.maximumRadius,n,E6),complete:function(){i._mode=re.MORPHING,c()}})):c()}function Dm(e,t,n,i){return m.lerp(e,t,n,i)}function A_e(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof gn)return;let a=s.frustum.fov,c=Z.RADIANS_PER_DEGREE*.5,d=n.position.z*Math.tan(a*.5);s.frustum.far=d/Math.tan(c*.5)+1e7;function u(p){s.frustum.fov=Z.lerp(a,c,p.time);let g=d/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var lyt=new m,dyt=new m,uyt=new m,x6=new m,myt=new m,hyt=new m,fyt=new qr,pyt=new En,Ayt=new m,gyt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function byt(e,t){t*=.5;let n=e._scene,i=n.camera,o=m.clone(i.position,lyt),r=m.clone(i.direction,dyt),s=m.clone(i.up,uyt),a=m.negate(m.UNIT_Z,myt),c=m.clone(m.UNIT_Y,hyt),d=x6;if(t>0)m.clone(m.ZERO,x6),d.z=5*n.ellipsoid.maximumRadius;else{m.clone(o,x6);let x=pyt;X.multiplyByPoint(xo.TRANSFORM_2D,o,x.origin),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r,x.direction);let I=n.globe;if(l(I)){let _=I.pickWorldCoordinates(x,n,!0,Ayt);l(_)&&(X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,_,d),d.z+=m.distance(o,d))}}let u=fyt;u.right=d.z*.5,u.left=-u.right,u.top=u.right*(n.drawingBufferHeight/n.drawingBufferWidth),u.bottom=-u.top;let h=gyt;h.position=d,h.direction=a,h.up=c,h.frustum=u;let p=x_e(h);jM(e,p);function g(x){Dm(o,d,x.time,i.position),Dm(r,a,x.time,i.direction),Dm(s,c,x.time,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function f(x,I){x.position.z=I}let b=n.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){A_e(e,t,h,f,p)}});e._currentTweens.push(b)}var c_e=new ge,yyt={position:new m,direction:new m,up:new m,position2D:new m,direction2D:new m,up2D:new m,frustum:new qr},Cyt={position:new m,direction:new m,up:new m,frustum:void 0},xyt=new m,Iyt=new En,_yt=new X,Eyt=new m;function Tyt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=yyt;if(t>0)m.clone(m.ZERO,r.position),r.position.z=5*n.maximumRadius,m.negate(m.UNIT_Z,r.direction),m.clone(m.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,c_e),i.mapProjection.project(c_e,r.position),m.negate(m.UNIT_Z,r.direction),m.clone(m.UNIT_Y,r.up);let h=Iyt;m.clone(r.position2D,h.origin);let p=m.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,Eyt),f=Dt.eastNorthUpToFixedFrame(g,n,_yt);X.inverseTransformation(f,f),X.multiplyByPointAsVector(f,p,p),X.multiplyByPointAsVector(xo.TRANSFORM_2D,p,p);let b=i.globe;if(l(b)){let x=b.pickWorldCoordinates(h,i,!0,xyt);if(l(x)){let I=m.distance(r.position2D,x);x.x+=I,m.clone(x,r.position2D)}}}function s(h,p){h.position.x=p}X.multiplyByPoint(xo.TRANSFORM_2D,r.position,r.position2D),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r.direction,r.direction2D),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=Cyt;X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,r.position2D,c.position),m.clone(r.direction,c.direction),m.clone(r.up,c.up),c.frustum=a;let d=x_e(c);jM(e,d);function u(){A_e(e,t,r,s,d)}b_e(e,t,r,u)}function g_e(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=Z.RADIANS_PER_DEGREE*.5,d=s*Math.tan(a*.5);r.frustum.far=d/Math.tan(c*.5)+1e7,r.frustum.fov=c;function u(p){r.frustum.fov=Z.lerp(c,a,p.time),r.position.z=d/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){i(e)}});e._currentTweens.push(h)}function Syt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=m.clone(n.position,E6),a=m.clone(n.direction,f_e),c=m.clone(n.up,p_e);o._mode=re.MORPHING;function d(){r.frustum=n.frustum.clone();let u=m.clone(r.position,u_e),h=m.clone(r.direction,m_e),p=m.clone(r.up,h_e);u.z=s.z;function g(b){Dm(u,s,b.time,r.position),Dm(h,a,b.time,r.direction),Dm(p,c,b.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right)}let f=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(f)}e._morphToOrthographic?d():g_e(e,0,n,d)}function b_e(e,t,n,i){let o=e._scene,r=o.camera,s=m.clone(r.position,u_e),a=m.clone(r.direction,m_e),c=m.clone(r.up,h_e),d=m.clone(n.position2D,E6),u=m.clone(n.direction2D,f_e),h=m.clone(n.up2D,p_e);function p(f){Dm(s,d,f.time,r.position),Dm(a,u,f.time,r.direction),Dm(c,h,f.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){y_e(e,o,1,0,t,i)}});e._currentTweens.push(g)}function y_e(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ms.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function C_e(e){return function(t){let n=t._scene;n._mode=re.SCENE3D,n.morphTime=re.getMorphTime(re.SCENE3D),mY(t);let i=n.camera;(t._previousMode!==re.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,m.clone(e.position,i.position),m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.SCENE3D,r)}}function x_e(e){return function(t){let n=t._scene;n._mode=re.SCENE2D,n.morphTime=re.getMorphTime(re.SCENE2D),mY(t);let i=n.camera;m.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.SCENE2D,o)}}function Lyt(e){return function(t){let n=t._scene;n._mode=re.COLUMBUS_VIEW,n.morphTime=re.getMorphTime(re.COLUMBUS_VIEW),mY(t);let i=n.camera;(t._previousModeMode!==re.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,m.clone(e.position,i.position),m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.COLUMBUS_VIEW,r)}}var qM=UI;var TOi=y(C(),1);var U3i=y(C(),1);var w3i=y(C(),1),Ryt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},qi=Object.freeze(Ryt);function Ra(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function Vyt(e,t){D.clone(e.distance.startPosition,t.distance.startPosition),D.clone(e.distance.endPosition,t.distance.endPosition),D.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),D.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function I_e(e,t,n){let i=Ra(qi.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new D;let d=e._movement[i];l(d)||(d=e._movement[i]={}),d.distance={startPosition:new D,endPosition:new D},d.angleAndHeight={startPosition:new D,endPosition:new D},d.prevAngle=0,e._eventHandler.setInputAction(function(u){e._buttonsDown++,r[i]=!0,a[i]=new Date,D.lerp(u.position1,u.position2,.5,s[i])},Zn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},Zn.PINCH_END,t),e._eventHandler.setInputAction(function(u){if(r[i]){o[i]?(Vyt(u,d),o[i]=!1,d.prevAngle=d.angleAndHeight.startPosition.x):(D.clone(u.distance.endPosition,d.distance.endPosition),D.clone(u.angleAndHeight.endPosition,d.angleAndHeight.endPosition));let h=d.angleAndHeight.endPosition.x,p=d.prevAngle,g=Math.PI*2;for(;h>=p+Math.PI;)h-=g;for(;h<p-Math.PI;)h+=g;d.angleAndHeight.endPosition.x=-h*n.clientWidth/12,d.angleAndHeight.startPosition.x=-p*n.clientWidth/12}},Zn.PINCH_MOVE,t)}function __e(e,t){let n=Ra(qi.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new D,endPosition:new D,valid:!1}),s.startPosition=new D,D.clone(D.ZERO,s.startPosition),s.endPosition=new D,e._eventHandler.setInputAction(function(c){let d=7.5*Z.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=d,D.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},Zn.WHEEL,t)}function fL(e,t,n){let i=Ra(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new D;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new D,endPosition:new D,valid:!1});let c,d;n===qi.LEFT_DRAG?(c=Zn.LEFT_DOWN,d=Zn.LEFT_UP):n===qi.RIGHT_DRAG?(c=Zn.RIGHT_DOWN,d=Zn.RIGHT_UP):n===qi.MIDDLE_DRAG&&(c=Zn.MIDDLE_DOWN,d=Zn.MIDDLE_UP),e._eventHandler.setInputAction(function(u){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,D.clone(u.position,r[i])},c,t),e._eventHandler.setInputAction(function(){T6(Ra(n,void 0),e);for(let u of Object.values(La)){let h=Ra(n,u);T6(h,e)}},d,t)}function T6(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function E_e(e,t){D.clone(e.startPosition,t.startPosition),D.clone(e.endPosition,t.endPosition)}function Gyt(e,t,n){let i=n._isDown,o=!1,r=Ra(e,t);for(let[c,d]of Object.entries(i))c.startsWith(e)&&d&&c!==r&&(o=!0,T6(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new D,endPosition:new D,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function T_e(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in qi)if(qi.hasOwnProperty(s)){let a=qi[s];if(l(a)){let c=Ra(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new D,endPosition:new D,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new D,endPosition:new D})}}e._eventHandler.setInputAction(function(s){for(let a in qi)if(qi.hasOwnProperty(a)){let c=qi[a];if(l(c)){let d=Ra(c,t);Gyt(c,t,e),r[d]&&(n[d]?(E_e(i[d],o[d]),o[d].valid=!0,E_e(s,i[d]),n[d]=!1):D.clone(s.endPosition,i[d].endPosition))}}D.clone(s.endPosition,e._currentMousePosition)},Zn.MOUSE_MOVE,t)}function Qm(e){this._eventHandler=new Su(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new D,__e(this,void 0),I_e(this,void 0,e),fL(this,void 0,qi.LEFT_DRAG),fL(this,void 0,qi.RIGHT_DRAG),fL(this,void 0,qi.MIDDLE_DRAG),T_e(this,void 0);for(let t in La)if(La.hasOwnProperty(t)){let n=La[t];l(n)&&(__e(this,n),I_e(this,n,e),fL(this,n,qi.LEFT_DRAG),fL(this,n,qi.RIGHT_DRAG),fL(this,n,qi.MIDDLE_DRAG),T_e(this,n))}}Object.defineProperties(Qm.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[Ra(qi.WHEEL)]||!this._update[Ra(qi.WHEEL,La.SHIFT)]||!this._update[Ra(qi.WHEEL,La.CTRL)]||!this._update[Ra(qi.WHEEL,La.ALT)];return this._buttonsDown>0||e}}});Qm.prototype.isMoving=function(e,t){let n=Ra(e,t);return!this._update[n]};Qm.prototype.getMovement=function(e,t){let n=Ra(e,t);return this._movement[n]};Qm.prototype.getLastMovement=function(e,t){let n=Ra(e,t),i=this._lastMovement[n];if(i.valid)return i};Qm.prototype.isButtonDown=function(e,t){let n=Ra(e,t);return this._isDown[n]};Qm.prototype.getStartMousePosition=function(e,t){if(e===qi.WHEEL)return this._currentMousePosition;let n=Ra(e,t);return this._eventStartPosition[n]};Qm.prototype.getButtonPressTime=function(e,t){let n=Ra(e,t);return this._pressTime[n]};Qm.prototype.getButtonReleaseTime=function(e,t){let n=Ra(e,t);return this._releaseTime[n]};Qm.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),me(this)};var $M=Qm;var q3i=y(C(),1);function hY(e,t,n,i,o,r,s,a,c,d){this._tweens=e,this._tweenjs=t,this._startObject=ke(n),this._stopObject=ke(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=d,this.needsStart=!0}Object.defineProperties(hY.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});hY.prototype.cancelTween=function(){this._tweens.remove(this)};function pf(){this._tweens=[]}Object.defineProperties(pf.prototype,{length:{get:function(){return this._tweens.length}}});pf.prototype.add=function(e){if(e=e??Y.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new hY(this);let t=e.duration/ai.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ai.SECONDS_PER_MILLISECOND,o=e.easingFunction??ms.LINEAR_NONE,r=e.startObject,s=new dye(r);s.to(ke(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new hY(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};pf.prototype.addProperty=function(e){e=e??Y.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};pf.prototype.addAlpha=function(e){e=e??Y.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};pf.prototype.addOffsetIncrement=function(e){e=e??Y.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};pf.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};pf.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};pf.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};pf.prototype.get=function(e){return this._tweens[e]};pf.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ai.SECONDS_PER_MILLISECOND:Fi();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var kI=pf;function tv(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=qi.LEFT_DRAG,this.zoomEventTypes=[qi.RIGHT_DRAG,qi.WHEEL,qi.PINCH],this.rotateEventTypes=qi.LEFT_DRAG,this.tiltEventTypes=[qi.MIDDLE_DRAG,qi.PINCH,{eventType:qi.LEFT_DRAG,modifier:La.CTRL},{eventType:qi.RIGHT_DRAG,modifier:La.CTRL}],this.lookEventTypes={eventType:qi.LEFT_DRAG,modifier:La.SHIFT};let t=e.ellipsoid??ie.default;this.minimumPickingTerrainHeight=ie.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=ie.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=ie.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=ie.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new $M(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new kI,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new D(-1,-1),this._tiltCenter=new m,this._rotateMousePosition=new D(-1,-1),this._rotateStartPosition=new m,this._strafeStartPosition=new m,this._strafeMousePosition=new D,this._strafeEndMousePosition=new D,this._zoomMouseStart=new D(-1,-1),this._zoomWorldPosition=new m,this._useZoomWorldPosition=!1,this._panLastMousePosition=new D,this._panLastWorldPosition=new m,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new ge(Math.PI,Z.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function Zyt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function Byt(e){return D.equalsEpsilon(e.startPosition,e.endPosition,Z.EPSILON14)}var wyt=.4;function Xyt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new D,endPosition:new D,motion:new D,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),d=e.getButtonReleaseTime(t,n),u=c&&d&&(d.getTime()-c.getTime())/1e3,p=d&&(new Date().getTime()-d.getTime())/1e3;if(c&&d&&u<wyt){let g=Zyt(p,i),f=e.getLastMovement(t,n);if(!l(f)||Byt(f)||!a.inertiaEnabled||(a.motion.x=(f.endPosition.x-f.startPosition.x)*.5,a.motion.y=(f.endPosition.y-f.startPosition.y)*.5,a.startPosition=D.clone(f.startPosition,a.startPosition),a.endPosition=D.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=D.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||D.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let b=e.getStartMousePosition(t,n);o(r,b,a)}}}function Wyt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var S_e=[];function Dl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(S_e[0]=n,n=S_e);let a=n.length;for(let c=0;c<a;++c){let d=n[c],u=l(d.eventType)?d.eventType:d,h=d.modifier,p=s.isMoving(u,h)&&s.getMovement(u,h),g=s.getStartMousePosition(u,h);e.enableInputs&&t&&(p?(i(e,g,p),Wyt(e,r)):o<1&&Xyt(s,u,h,o,i,e,r))}}var fY=new En,Fyt=new m,Pyt=new D,Myt=new m,vyt=new D,Nyt=new m,Dyt=new m,Qyt=new m,Uyt=new m,M_e=new m,kyt=new m,Yyt=new m,Oyt=new m,Hyt=new m,zyt=new m,Kyt=new m,Jyt=new m,jyt=new m,qyt=new m,$yt=new m,YI=new m,L_e=new m,R_e=new m,S6={orientation:new ic};function X6(e,t,n,i,o,r){let s=1;l(r)&&(s=Z.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,d=a>0?e.minimumZoomDistance*s:0,u=e.maximumZoomDistance,h=o-d,p=i*h;p=Z.clamp(p,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let f=p*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(f>0&&Math.abs(o-d)<1||f<0&&Math.abs(o-u)<1)return;o-f<d?f=o-d-1:o-f>u&&(f=o-u)}let b=e._scene,x=b.camera,I=b.mode,_=S6.orientation;_.heading=x.heading,_.pitch=x.pitch,_.roll=x.roll;let E=n.inertiaEnabled??D.equals(t,e._zoomMouseStart),S=e._zoomingOnVector,R=e._rotatingZoom,G;if(E||(e._zoomMouseStart=D.clone(t,e._zoomMouseStart),l(e._globe)&&I===re.SCENE2D?(G=x.getPickRay(t,fY).origin,G=m.fromElements(G.y,G.z,G.x)):l(e._globe)&&(G=Jg(e,t,Fyt)),l(G)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=m.clone(G,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,S=e._zoomingOnVector=!1,R=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){x.zoomIn(f);return}let B=I===re.COLUMBUS_VIEW;if(x.positionCartographic.height<2e6&&(R=!0),!E||R){if(I===re.SCENE2D){let w=e._zoomWorldPosition,F=x.position;if(!m.equals(w,F)&&x.positionCartographic.height<e._maxCoord.x*2){let P=x.position.x,A=m.subtract(w,F,Myt);m.normalize(A,A);let T=m.distance(w,F)*f/(x.getMagnitude()*.5);x.move(A,T*.5),(x.position.x<0&&P>0||x.position.x>0&&P<0)&&(G=x.getPickRay(t,fY).origin,G=m.fromElements(G.y,G.z,G.x),e._zoomWorldPosition=m.clone(G,e._zoomWorldPosition))}}else if(I===re.SCENE3D){let w=m.normalize(x.position,M_e);if(e._cameraUnderground||e._zoomingUnderground||x.positionCartographic.height<3e3&&Math.abs(m.dot(x.direction,w))<.6)B=!0;else{let F=b.canvas,P=vyt;P.x=F.clientWidth/2,P.y=F.clientHeight/2;let A=Jg(e,P,Nyt);if(!l(A))B=!0;else if(x.positionCartographic.height<1e6)if(m.dot(x.direction,w)>=-.5)B=!0;else{let T=Yyt;m.clone(x.position,T);let L=e._zoomWorldPosition,V=kyt;if(V=m.normalize(L,V),m.dot(V,w)<0)return;let W=$yt,M=zyt;m.clone(x.direction,M),m.add(T,m.multiplyByScalar(M,1e3,YI),W);let Q=Kyt,N=Jyt;m.subtract(L,T,Q),m.normalize(Q,N);let k=m.dot(w,N);if(k>=0){e._zoomMouseStart.x=-1;return}let v=Math.acos(-k),O=m.magnitude(T),H=m.magnitude(L),ee=O-f,K=m.magnitude(Q),te=Math.asin(Z.clamp(K/H*Math.sin(v),-1,1)),q=Math.asin(Z.clamp(ee/H*Math.sin(v),-1,1)),pe=te-q+v,ye=Oyt;m.normalize(T,ye);let he=Hyt;he=m.cross(N,ye,he),he=m.normalize(he,he),m.normalize(m.cross(ye,he,YI),M),m.multiplyByScalar(m.normalize(W,YI),m.magnitude(W)-f,W),m.normalize(T,T),m.multiplyByScalar(T,ee,T);let xe=jyt;m.multiplyByScalar(m.add(m.multiplyByScalar(ye,Math.cos(pe)-1,L_e),m.multiplyByScalar(M,Math.sin(pe),R_e),YI),ee,xe),m.add(T,xe,T),m.normalize(W,ye),m.normalize(m.cross(ye,he,YI),M);let Te=qyt;m.multiplyByScalar(m.add(m.multiplyByScalar(ye,Math.cos(pe)-1,L_e),m.multiplyByScalar(M,Math.sin(pe),R_e),YI),m.magnitude(W),Te),m.add(W,Te,W),m.clone(T,x.position),m.normalize(m.subtract(W,T,YI),x.direction),m.clone(x.direction,x.direction),m.cross(x.direction,x.up,x.right),m.cross(x.right,x.direction,x.up),x.setView(S6);return}else{let T=m.normalize(A,Dyt),L=m.normalize(e._zoomWorldPosition,Qyt),V=m.dot(L,T);if(V>0&&V<1){let W=Z.acosClamped(V),M=m.cross(L,T,Uyt),Q=Math.abs(W)>Z.toRadians(20)?x.positionCartographic.height*.75:x.positionCartographic.height-f,N=f/Q;x.rotate(M,W*N)}}}}e._rotatingZoom=!B}if(!E&&B||S){let w,F=to.worldToWindowCoordinates(b,e._zoomWorldPosition,Pyt);I!==re.COLUMBUS_VIEW&&D.equals(t,e._zoomMouseStart)&&l(F)?w=x.getPickRay(F,fY):w=x.getPickRay(t,fY);let P=w.direction;(I===re.COLUMBUS_VIEW||I===re.SCENE2D)&&m.fromElements(P.y,P.z,P.x,P),x.move(P,f),e._zoomingOnVector=!0}else x.zoomIn(f);e._cameraUnderground||x.setView(S6)}var eCt=new En,tCt=new En,nCt=new m;function iCt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,eCt).origin,s=o.getPickRay(n.endPosition,tCt).origin;r=m.fromElements(r.y,r.z,r.x,r),s=m.fromElements(s.y,s.z,s.x,s);let a=m.subtract(r,s,nCt),c=m.magnitude(a);c>0&&(m.normalize(a,a),o.move(a,c))}function V_e(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;X6(e,t,n,e.zoomFactor,o.getMagnitude())}var oCt=new D,rCt=new D;function G_e(e,t,n){if(l(n.angleAndHeight)){sCt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=oCt;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=D.normalize(c,c);let d=rCt;d.x=2/s*n.endPosition.x-1,d.y=2/a*(a-n.endPosition.y)-1,d=D.normalize(d,d);let u=Z.acosClamped(c.x);c.y<0&&(u=Z.TWO_PI-u);let h=Z.acosClamped(d.x);d.y<0&&(h=Z.TWO_PI-h);let p=h-u;o.twistRight(p)}function sCt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function aCt(e){let t=e._scene.mapMode2D===_d.ROTATE;X.equals(X.IDENTITY,e._scene.camera.transform)?(Dl(e,e.enableTranslate,e.translateEventTypes,iCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,V_e,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Dl(e,e.enableRotate,e.tiltEventTypes,G_e,e.inertiaSpin,"_lastInertiaTiltMovement")):(Dl(e,e.enableZoom,e.zoomEventTypes,V_e,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Dl(e,e.enableRotate,e.translateEventTypes,G_e,e.inertiaSpin,"_lastInertiaSpinMovement"))}var v_e=new En,cCt=new m,lCt=new m;function Jg(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,cCt)),!l(o))return m.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,v_e),d=o.pickWorldCoordinates(c,i,a,lCt),u=l(s)?m.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(d)?m.distance(d,r.positionWC):Number.POSITIVE_INFINITY;return u<h?m.clone(s,n):m.clone(d,n)}var dCt=new ge;function xY(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===re.SCENE3D){let c=t.cartesianToCartographic(i.position,dCt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var uCt=new m;function N_e(e,t){let n=t.origin,i=t.direction,o=xY(e),r=m.normalize(n,uCt),s=Math.abs(m.dot(r,i));return s=Math.max(s,.5)*2,o*s}function D_e(e,t,n,i){let o=m.distance(t.origin,n),r=xY(e),s=Z.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),En.getPoint(t,o,i)}function Q_e(e,t,n,i){let o;return l(n)?(o=m.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=xY(e))):o=xY(e),En.getPoint(t,o,i)}var mCt=new D;function U_e(e,t){let n=t.endPosition,i=D.subtract(t.endPosition,t.startPosition,mCt),o=e._strafeEndMousePosition;D.add(o,i,o),t.endPosition=o,W6(e,t,e._strafeStartPosition),t.endPosition=n}var Z_e=new En,hCt=new En,L6=new m,fCt=new m,pCt=new m,ACt=new m,gCt=new An(m.UNIT_X,0),bCt=new D,yCt=new D;function CCt(e,t,n){if(m.equals(t,e._translateMousePosition)||(e._looking=!1),m.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){Ru(e,t,n);return}if(e._strafing){U_e(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=D.clone(n.startPosition,bCt),a=D.clone(n.endPosition,yCt),c=o.getPickRay(s,Z_e),d=m.clone(m.ZERO,ACt),u=m.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=Jg(e,s,L6),l(h)&&(d.x=h.x)),r||d.x>o.position.z&&l(h)){let E=h;r&&(E=Q_e(e,c,h,L6)),D.clone(t,e._strafeMousePosition),D.clone(t,e._strafeEndMousePosition),m.clone(E,e._strafeStartPosition),e._strafing=!0,W6(e,n,e._strafeStartPosition);return}let p=An.fromPointNormal(d,u,gCt);c=o.getPickRay(s,Z_e);let g=fi.rayPlane(c,p,L6),f=o.getPickRay(a,hCt),b=fi.rayPlane(f,p,fCt);if(!l(g)||!l(b)){e._looking=!0,Ru(e,t,n),D.clone(t,e._translateMousePosition);return}let x=m.subtract(g,b,pCt),I=x.x;x.x=x.y,x.y=x.z,x.z=I;let _=m.magnitude(x);_>Z.EPSILON6&&(m.normalize(x,x),o.move(x,_))}var k_e=new D,gY=new En,bY=new m,xCt=new m,Y_e=new X,ICt=new X,_Ct=new m,ECt=new An(m.UNIT_X,0),R6=new m,Z6=new ge,O_e=new X,TCt=new Pe,SCt=new $,yY=new m;function LCt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),D.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){Ru(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,RCt(e,t,n)):VCt(e,t,n)}function RCt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=k_e;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,gY),c=m.UNIT_X,d=a.origin,u=a.direction,h,p=m.dot(c,u);if(Math.abs(p)>Z.EPSILON6&&(h=-m.dot(c,d)/p),!l(h)||h<=0){e._looking=!0,Ru(e,t,n),D.clone(t,e._tiltCenterMousePosition);return}let g=m.multiplyByScalar(u,h,bY);m.add(d,g,g);let f=i.mapProjection,b=f.ellipsoid;m.fromElements(g.y,g.z,g.x,g);let x=f.unproject(g,Z6);b.cartographicToCartesian(x,g);let I=Dt.eastNorthUpToFixedFrame(g,b,Y_e),_=e._globe,E=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=X.clone(o.transform,O_e);o._setTransform(I),Lu(e,t,n,m.UNIT_Z),o._setTransform(S),e._globe=_,e._ellipsoid=E;let R=E.maximumRadius;e._rotateFactor=1/R,e._rotateRateRangeAdjustment=R}function VCt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=m.UNIT_X;if(D.equals(t,e._tiltCenterMousePosition))s=m.clone(e._tiltCenter,bY);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=Jg(e,t,bY)),!l(s)){a=o.getPickRay(t,gY);let A=a.origin,T=a.direction,L,V=m.dot(c,T);if(Math.abs(V)>Z.EPSILON6&&(L=-m.dot(c,A)/V),!l(L)||L<=0){e._looking=!0,Ru(e,t,n),D.clone(t,e._tiltCenterMousePosition);return}s=m.multiplyByScalar(T,L,bY),m.add(A,s,s)}r&&(l(a)||(a=o.getPickRay(t,gY)),D_e(e,a,s,s)),D.clone(t,e._tiltCenterMousePosition),m.clone(s,e._tiltCenter)}let d=i.canvas,u=k_e;u.x=d.clientWidth/2,u.y=e._tiltCenterMousePosition.y,a=o.getPickRay(u,gY);let h=m.clone(m.ZERO,_Ct);h.x=s.x;let p=An.fromPointNormal(h,c,ECt),g=fi.rayPlane(a,p,xCt),f=o._projection,b=f.ellipsoid;m.fromElements(s.y,s.z,s.x,s);let x=f.unproject(s,Z6);b.cartographicToCartesian(x,s);let I=Dt.eastNorthUpToFixedFrame(s,b,Y_e),_;l(g)?(m.fromElements(g.y,g.z,g.x,g),x=f.unproject(g,Z6),b.cartographicToCartesian(x,g),_=Dt.eastNorthUpToFixedFrame(g,b,ICt)):_=I;let E=e._globe,S=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let R=m.UNIT_Z,G=X.clone(o.transform,O_e);o._setTransform(I);let B=m.cross(m.UNIT_Z,m.normalize(o.position,R6),R6),w=m.dot(o.right,B);if(Lu(e,t,n,R,!1,!0),o._setTransform(_),w<0){let A=n.startPosition.y-n.endPosition.y;(r&&A<0||!r&&A>0)&&(R=void 0);let T=o.constrainedAxis;o.constrainedAxis=void 0,Lu(e,t,n,R,!0,!1),o.constrainedAxis=T}else Lu(e,t,n,R,!0,!1);if(l(o.constrainedAxis)){let A=m.cross(o.direction,o.constrainedAxis,yY);m.equalsEpsilon(A,m.ZERO,Z.EPSILON6)||(m.dot(A,o.right)<0&&m.negate(A,A),m.cross(A,o.direction,o.up),m.cross(o.direction,o.up,o.right),m.normalize(o.up,o.up),m.normalize(o.right,o.right))}o._setTransform(G),e._globe=E,e._ellipsoid=S;let F=S.maximumRadius;e._rotateFactor=1/F,e._rotateRateRangeAdjustment=F;let P=m.clone(o.positionWC,R6);if(e.enableCollisionDetection&&M6(e,!0),!m.equals(o.positionWC,P)){o._setTransform(_),o.worldToCameraCoordinatesPoint(P,P);let A=m.magnitudeSquared(P);m.magnitudeSquared(o.position)>A&&(m.normalize(o.position,o.position),m.multiplyByScalar(o.position,Math.sqrt(A),o.position));let T=m.angleBetween(P,o.position),L=m.cross(P,o.position,P);m.normalize(L,L);let V=Pe.fromAxisAngle(L,T,TCt),W=$.fromQuaternion(V,SCt);$.multiplyByVector(W,o.direction,o.direction),$.multiplyByVector(W,o.up,o.up),m.cross(o.direction,o.up,o.right),m.cross(o.right,o.direction,o.up),o._setTransform(G)}}var H_e=new D,z_e=new En,K_e=new m;function GCt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=H_e,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,z_e),d=c.origin,u=c.direction,h=o.position.z,p;h<e._minimumPickingTerrainHeight&&(p=Jg(e,a,K_e));let g;if(l(p)&&(g=m.distance(d,p)),s){let f=N_e(e,c,h);l(g)?g=Math.min(g,f):g=f}if(!l(g)){let f=m.UNIT_X;g=-m.dot(f,d)/m.dot(f,u)}X6(e,t,n,e.zoomFactor,g)}function ZCt(e){let n=e._scene.camera;if(!X.equals(X.IDENTITY,n.transform))Dl(e,e.enableRotate,e.rotateEventTypes,Lu,e.inertiaSpin,"_lastInertiaSpinMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,j_e,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),Dl(e,e.enableTilt,e.tiltEventTypes,LCt,e.inertiaSpin,"_lastInertiaTiltMovement"),Dl(e,e.enableTranslate,e.translateEventTypes,CCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,GCt,e.inertiaZoom,"_lastInertiaZoomMovement"),Dl(e,e.enableLook,e.lookEventTypes,Ru),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var BCt=new En,wCt=new An(m.UNIT_X,0),XCt=new m,WCt=new m;function W6(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,BCt),s=m.clone(o.direction,WCt);i.mode===re.COLUMBUS_VIEW&&m.fromElements(s.z,s.x,s.y,s);let a=An.fromPointNormal(n,s,wCt),c=fi.rayPlane(r,a,XCt);l(c)&&(s=m.subtract(n,c,s),i.mode===re.COLUMBUS_VIEW&&m.fromElements(s.y,s.z,s.x,s),m.add(o.position,s,o.position))}var B_e=new m,J_e=new ge,B6=new m,w6=new ie,FCt=new m,PCt=new m,MCt=new m;function vCt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!X.equals(o.transform,X.IDENTITY)){Lu(e,t,n);return}let a,c,d=s.geodeticSurfaceNormal(o.position,FCt);if(D.equals(t,e._rotateMousePosition)){if(e._looking)Ru(e,t,n,d);else if(e._rotating)Lu(e,t,n);else if(e._strafing)U_e(e,n);else{if(m.magnitude(o.position)<m.magnitude(e._rotateStartPosition))return;a=m.magnitude(e._rotateStartPosition),c=B6,c.x=c.y=c.z=a,s=ie.fromCartesian3(c,w6),G6(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let u=s.cartesianToCartographic(o.positionWC,J_e).height,h=e._globe;if(l(h)&&u<e._minimumPickingTerrainHeight){let p=Jg(e,n.startPosition,MCt);if(l(p)){let g=!1,f=o.getPickRay(n.startPosition,v_e);if(r)g=!0,Q_e(e,f,p,p);else{let b=s.geodeticSurfaceNormal(p,PCt);Math.abs(m.dot(f.direction,b))<.05?g=!0:g=m.magnitude(o.position)<m.magnitude(p)}g?(D.clone(t,e._strafeEndMousePosition),m.clone(p,e._strafeStartPosition),e._strafing=!0,W6(e,n,e._strafeStartPosition)):(a=m.magnitude(p),c=B6,c.x=c.y=c.z=a,s=ie.fromCartesian3(c,w6),G6(e,t,n,s),m.clone(p,e._rotateStartPosition))}else e._looking=!0,Ru(e,t,n,d)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,B_e))?(G6(e,t,n,e._ellipsoid),m.clone(B_e,e._rotateStartPosition)):u>e._minimumTrackBallHeight?(e._rotating=!0,Lu(e,t,n)):(e._looking=!0,Ru(e,t,n,d));D.clone(t,e._rotateMousePosition)}function Lu(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,d=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let u=m.magnitude(a.position),h=e._rotateFactor*(u-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let p=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;p=Math.min(p,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let f=h*p*Math.PI*2,b=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let x=e.maximumTiltAngle,I=m.dot(a.direction,i),_=Math.PI-Math.acos(I)+b;_>x&&(b-=_-x)}o||a.rotateRight(f),r||a.rotateUp(b),a.constrainedAxis=d}var V6=ce.clone(ce.UNIT_W),w_e=ce.clone(ce.UNIT_W),pY=new m,pL=new m,AY=new m,X_e=new m,NCt=new D,DCt=new D,QCt=new D,UCt=new D,kCt=new En;function G6(e,t,n,i){let o=e._scene,r=o.camera,s=D.clone(n.startPosition,NCt),a=D.clone(n.endPosition,DCt),c=i.cartesianToCartographic(r.positionWC,J_e).height,d,u;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(d=m.clone(e._panLastWorldPosition,V6),!l(e._globe)&&!D.equalsEpsilon(s,e._panLastMousePosition)&&(d=Jg(e,s,V6)),!l(e._globe)&&l(d))){let h=m.subtract(d,r.positionWC,pL),p=m.multiplyByScalar(r.directionWC,m.dot(r.directionWC,h),pL),g=m.magnitude(p),f=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,UCt),b=D.subtract(a,s,QCt),x=m.multiplyByScalar(r.rightWC,b.x*f.x,pL),I=m.normalize(r.positionWC,M_e),_=r.getPickRay(a,kCt).direction,E=m.subtract(_,m.projectVector(_,r.rightWC,AY),AY),S=m.angleBetween(E,r.directionWC),R=1;l(r.frustum.fov)&&(R=Math.max(Math.tan(S),.1));let G=Math.abs(m.dot(r.directionWC,I)),B=-b.y*f.y*2/Math.sqrt(R)*(1-G),w=m.multiplyByScalar(_,B,AY);G=Math.abs(m.dot(r.upWC,I));let F=m.multiplyByScalar(r.upWC,-b.y*(1-G)*f.y,X_e);u=m.add(d,x,w_e),u=m.add(u,w,u),u=m.add(u,F,u),m.clone(u,e._panLastWorldPosition),D.clone(a,e._panLastMousePosition)}if((!l(d)||!l(u))&&(d=r.pickEllipsoid(s,i,V6),u=r.pickEllipsoid(a,i,w_e)),!l(d)||!l(u)){e._rotating=!0,Lu(e,t,n);return}if(d=r.worldToCameraCoordinates(d,d),u=r.worldToCameraCoordinates(u,u),l(r.constrainedAxis)){let h=r.constrainedAxis,p=m.mostOrthogonalAxis(h,pY);m.cross(p,h,p),m.normalize(p,p);let g=m.cross(h,p,pL),f=m.magnitude(d),b=m.dot(h,d),x=Math.acos(b/f),I=m.multiplyByScalar(h,b,AY);m.subtract(d,I,I),m.normalize(I,I);let _=m.magnitude(u),E=m.dot(h,u),S=Math.acos(E/_),R=m.multiplyByScalar(h,E,X_e);m.subtract(u,R,R),m.normalize(R,R);let G=Math.acos(m.dot(I,p));m.dot(I,g)<0&&(G=Z.TWO_PI-G);let B=Math.acos(m.dot(R,p));m.dot(R,g)<0&&(B=Z.TWO_PI-B);let w=G-B,F;m.equalsEpsilon(h,r.position,Z.EPSILON2)?F=r.right:F=m.cross(h,r.position,pY);let P=m.cross(h,F,pY),A=m.dot(P,m.subtract(d,h,pL)),T=m.dot(P,m.subtract(u,h,pL)),L;A>0&&T>0?L=S-x:A>0&&T<=0?m.dot(r.position,h)>0?L=-x-S:L=x+S:L=x-S,r.rotateRight(w),r.rotateUp(L)}else{m.normalize(d,d),m.normalize(u,u);let h=m.dot(d,u),p=m.cross(d,u,pY);if(h<1&&!m.equalsEpsilon(p,m.ZERO,Z.EPSILON14)){let g=Math.acos(h);r.rotate(p,g)}}}var YCt=new m,OCt=new ge,W_e=0;function j_e(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,d;c?d=t:(d=H_e,d.x=a.clientWidth/2,d.y=a.clientHeight/2);let u=s.getPickRay(d,z_e),h,p=o.cartesianToCartographic(s.position,OCt).height,g=Math.abs(W_e)<e.minimumPickingTerrainDistanceWithInertia;(i?g:p<e._minimumPickingTerrainHeight)&&(h=Jg(e,d,K_e));let b;if(l(h)&&(b=m.distance(u.origin,h),W_e=b),c){let I=N_e(e,u,p);l(b)?b=Math.min(b,I):b=I}l(b)||(b=p);let x=m.normalize(s.position,YCt);X6(e,t,n,e.zoomFactor,b,m.dot(x,s.direction))}var q_e=new D,CY=new En,ev=new m,HCt=new m,$_e=new X,zCt=new X,eEe=new X,KCt=new Pe,JCt=new $,F6=new ge,P6=new m;function jCt(e,t,n){let o=e._scene.camera;if(!X.equals(o.transform,X.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),D.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,P6);Ru(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,F6);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,$Ct(e,t,n)):ext(e,t,n)}var qCt=new ge;function $Ct(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,qCt).height;if(a-s-1<Z.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,d=q_e;d.x=c.clientWidth/2,d.y=c.clientHeight/2;let u=r.getPickRay(d,CY),h,p=fi.rayEllipsoid(u,i);if(l(p))h=En.getPoint(u,p.start,ev);else if(a>e._minimumTrackBallHeight){let _=fi.grazingAltitudeLocation(u,i);if(!l(_))return;let E=i.cartesianToCartographic(_,F6);E.height=0,h=i.cartographicToCartesian(E,ev)}else{e._looking=!0;let _=e._ellipsoid.geodeticSurfaceNormal(r.position,P6);Ru(e,t,n,_),D.clone(t,e._tiltCenterMousePosition);return}let g=Dt.eastNorthUpToFixedFrame(h,i,$_e),f=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let x=X.clone(r.transform,eEe);r._setTransform(g),Lu(e,t,n,m.UNIT_Z),r._setTransform(x),e._globe=f,e._ellipsoid=b;let I=b.maximumRadius;e._rotateFactor=1/I,e._rotateRateRangeAdjustment=I}function ext(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,d;if(D.equals(t,e._tiltCenterMousePosition))a=m.clone(e._tiltCenter,ev);else{if(a=Jg(e,t,ev),!l(a)){if(c=r.getPickRay(t,CY),d=fi.rayEllipsoid(c,i),!l(d)){if(i.cartesianToCartographic(r.position,F6).height<=e._minimumTrackBallHeight){e._looking=!0;let T=e._ellipsoid.geodeticSurfaceNormal(r.position,P6);Ru(e,t,n,T),D.clone(t,e._tiltCenterMousePosition)}return}a=En.getPoint(c,d.start,ev)}s&&(l(c)||(c=r.getPickRay(t,CY)),D_e(e,c,a,a)),D.clone(t,e._tiltCenterMousePosition),m.clone(a,e._tiltCenter)}let u=o.canvas,h=q_e;h.x=u.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,CY);let p=m.magnitude(a),g=m.fromElements(p,p,p,B6),f=ie.fromCartesian3(g,w6);if(d=fi.rayEllipsoid(c,f),!l(d))return;let b=m.magnitude(c.origin)>p?d.start:d.stop,x=En.getPoint(c,b,HCt),I=Dt.eastNorthUpToFixedFrame(a,i,$_e),_=Dt.eastNorthUpToFixedFrame(x,f,zCt),E=e._globe,S=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let R=m.UNIT_Z,G=X.clone(r.transform,eEe);r._setTransform(_);let B=m.cross(x,r.positionWC,yY);if(m.dot(r.rightWC,B)<0){let A=n.startPosition.y-n.endPosition.y;(s&&A<0||!s&&A>0)&&(R=void 0);let T=r.constrainedAxis;r.constrainedAxis=void 0,Lu(e,t,n,R,!0,!1),r.constrainedAxis=T}else Lu(e,t,n,R,!0,!1);if(r._setTransform(I),Lu(e,t,n,R,!1,!0),l(r.constrainedAxis)){let A=m.cross(r.direction,r.constrainedAxis,yY);m.equalsEpsilon(A,m.ZERO,Z.EPSILON6)||(m.dot(A,r.right)<0&&m.negate(A,A),m.cross(A,r.direction,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.up,r.up),m.normalize(r.right,r.right))}r._setTransform(G),e._globe=E,e._ellipsoid=S;let F=S.maximumRadius;e._rotateFactor=1/F,e._rotateRateRangeAdjustment=F;let P=m.clone(r.positionWC,yY);if(e.enableCollisionDetection&&M6(e,!0),!m.equals(r.positionWC,P)){r._setTransform(_),r.worldToCameraCoordinatesPoint(P,P);let A=m.magnitudeSquared(P);m.magnitudeSquared(r.position)>A&&(m.normalize(r.position,r.position),m.multiplyByScalar(r.position,Math.sqrt(A),r.position));let T=m.angleBetween(P,r.position),L=m.cross(P,r.position,P);m.normalize(L,L);let V=Pe.fromAxisAngle(L,T,KCt),W=$.fromQuaternion(V,JCt);$.multiplyByVector(W,r.direction,r.direction),$.multiplyByVector(W,r.up,r.up),m.cross(r.direction,r.up,r.right),m.cross(r.right,r.direction,r.up),r._setTransform(G)}}var txt=new D,nxt=new D,F_e=new En,P_e=new En,ixt=new m,oxt=new m;function Ru(e,t,n,i){let r=e._scene.camera,s=txt;s.x=n.startPosition.x,s.y=0;let a=nxt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,F_e),d=r.getPickRay(a,P_e),u=0,h,p;r.frustum instanceof gn?(h=c.origin,p=d.origin,m.add(r.direction,h,h),m.add(r.direction,p,p),m.subtract(h,r.position,h),m.subtract(p,r.position,p),m.normalize(h,h),m.normalize(p,p)):(h=c.direction,p=d.direction);let g=m.dot(h,p);g<1&&(u=Math.acos(g)),u=n.startPosition.x>n.endPosition.x?-u:u;let f=e._horizontalRotationAxis;if(l(i)?r.look(i,-u):l(f)?r.look(f,-u):r.lookLeft(u),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,F_e),d=r.getPickRay(a,P_e),u=0,r.frustum instanceof gn?(h=c.origin,p=d.origin,m.add(r.direction,h,h),m.add(r.direction,p,p),m.subtract(h,r.position,h),m.subtract(p,r.position,p),m.normalize(h,h),m.normalize(p,p)):(h=c.direction,p=d.direction),g=m.dot(h,p),g<1&&(u=Math.acos(g)),u=n.startPosition.y>n.endPosition.y?-u:u,i=i??f,l(i)){let b=r.direction,x=m.negate(i,ixt),I=m.equalsEpsilon(b,i,Z.EPSILON2),_=m.equalsEpsilon(b,x,Z.EPSILON2);if(!I&&!_){g=m.dot(b,i);let E=Z.acosClamped(g);u>0&&u>E&&(u=E-Z.EPSILON4),g=m.dot(b,x),E=Z.acosClamped(g),u<0&&-u>E&&(u=-E+Z.EPSILON4);let S=m.cross(i,b,oxt);r.look(S,u)}else(I&&u<0||_&&u>0)&&r.look(r.right,-u)}else r.lookUp(u)}function rxt(e){Dl(e,e.enableRotate,e.rotateEventTypes,vCt,e.inertiaSpin,"_lastInertiaSpinMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,j_e,e.inertiaZoom,"_lastInertiaZoomMovement"),Dl(e,e.enableTilt,e.tiltEventTypes,jCt,e.inertiaSpin,"_lastInertiaTiltMovement"),Dl(e,e.enableLook,e.lookEventTypes,Ru)}var sxt=new X,axt=new ge;function M6(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===re.SCENE2D||i===re.MORPHING)return;let o=n.camera,r=n.ellipsoid??ie.WGS84,s=n.mapProjection,a,c;X.equals(o.transform,X.IDENTITY)||(a=X.clone(o.transform,sxt),c=m.magnitude(o.position),o._setTransform(X.IDENTITY));let d=axt;i===re.SCENE3D?r.cartesianToCartographic(o.position,d):s.unproject(o.position,d);let u=!1;if(d.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let p=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,f=g/e._lastGlobeHeight;d.height<p&&(t||Math.abs(f)<=.1)&&(d.height=p,i===re.SCENE3D?r.cartographicToCartesian(d,o.position):s.project(d,o.position),u=!0),t||Math.abs(f)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),u&&(m.normalize(o.position,o.position),m.negate(o.position,o.direction),m.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),m.normalize(o.direction,o.direction),m.cross(o.direction,o.up,o.right),m.cross(o.right,o.direction,o.up)))}tv.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===re.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var cxt=new m,lxt=new m;tv.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;X.equals(t.transform,X.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??ie.default):(this._globe=void 0,this._ellipsoid=ie.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Mr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Mr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Mr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=m.clone(t.positionWC,cxt),c=m.clone(t.directionWC,lxt);if(i===re.SCENE2D?aCt(this):i===re.COLUMBUS_VIEW?(this._horizontalRotationAxis=m.UNIT_Z,ZCt(this)):i===re.SCENE3D&&(this._horizontalRotationAxis=void 0,rxt(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let d=!m.equals(a,t.positionWC)||!m.equals(c,t.directionWC);M6(this,d)}this._aggregator.reset()};tv.prototype.isDestroyed=function(){return!1};tv.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),me(this)};var nv=tv;var zOi=y(C(),1);var LOi=y(C(),1),iv=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var VOi=y(C(),1),ov=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function jg(){this._sceneFramebuffer=new wI;let e=.125,t=new Array(6);t[0]=new Lo({fragmentShader:Ed,textureScale:e,forcePowerOfTwo:!0,sampleMode:_u.LINEAR});let n=t[1]=new Lo({fragmentShader:ov,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new D,t[2]=new Lo({fragmentShader:fy,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new Lo({fragmentShader:fy,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new Lo({fragmentShader:Ed,sampleMode:_u.LINEAR}),this._uCenter=new D,this._uRadius=void 0,t[5]=new Lo({fragmentShader:iv,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new Td({stages:t});let o=new NI(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}jg.prototype.get=function(e){return this._stages.get(e)};jg.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var dxt=new ce,tEe=new D,uxt=new D,nEe=new X;function mxt(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=X.computeViewportTransformation(n,0,1,nEe),d=X.multiplyByPoint(r,o,dxt),u=Dt.pointToGLWindowCoordinates(s,c,o,tEe);d.x+=Z.SOLAR_RADIUS;let h=Dt.pointToGLWindowCoordinates(a,c,d,d),p=D.magnitude(D.subtract(h,u,h))*30*2,g=uxt;g.x=p,g.y=p,e._uCenter=D.clone(u,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let f=t.drawingBufferWidth,b=t.drawingBufferHeight,x=e._stages,I=x.get(0),_=I.outputTexture.width,E=I.outputTexture.height,S=new Ke;S.width=_,S.height=E,c=X.computeViewportTransformation(S,0,1,nEe),u=Dt.pointToGLWindowCoordinates(s,c,o,tEe),g.x*=_/f,g.y*=E/b;let R=I.scissorRectangle;R.x=Math.max(u.x-g.x*.5,0),R.y=Math.max(u.y-g.y*.5,0),R.width=Math.min(g.x,f),R.height=Math.min(g.y,b);for(let G=1;G<4;++G)Ke.clone(R,x.get(G).scissorRectangle)}jg.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};jg.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),mxt(this,t,n),o};jg.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};jg.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};jg.prototype.isDestroyed=function(){return!1};jg.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),me(this)};var rv=jg;var tHi=y(C(),1);function iEe(){this._cachedShowFrustumsShaders={}}function hxt(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function fxt(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(u){u=Oe.replaceMain(u,"czm_Debug_main");let h=/out_FragData_(\d+)/g,p;for(;(p=h.exec(u))!==null;)r.indexOf(p[1])===-1&&r.push(p[1]);return u});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let d=hxt(i);return ln.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:d})}var sv=new U;function pxt(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=U.fromRandom()),t._debugColor):U.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(sv.red=t.debugOverlappingFrustums&1?1:0,sv.green=t.debugOverlappingFrustums&2?1:0,sv.blue=t.debugOverlappingFrustums&4?1:0,sv.alpha=1,sv):U.WHITE}),n}var Axt=new ot;iEe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=fxt(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=ot.shallowClone(t,Axt);r.shaderProgram=o,r.uniformMap=pxt(e,t),r.execute(e.context,n)};var av=iEe;var aHi=y(C(),1);function OI(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new vn}OI.fromKeyframeNode=function(e,t,n,i){let o=new OI(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=gxt(e,s,n),o._orientedBoundingBox=yxt(e,r,n,o._orientedBoundingBox),o};function gxt(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],d=bt.getComponentCount(o[a]),u=r[a].slice(n*d,(n+1)*d);s[c]=u}return s}var oEe=new m,bxt=new m;function yxt(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),d=a-c*o.x,u=m.fromElements(d,c,s,oEe),h=m.divideComponents(m.subtract(u,e._paddingBefore,oEe),e.dimensions,bxt);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(OI.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});OI.prototype.hasProperty=function(e){return l(this._metadata[e])};OI.prototype.getNames=function(){return Object.keys(this._metadata)};OI.prototype.getProperty=function(e){return this._metadata[e]};var cv=OI;var C4i=y(C(),1);var Vzi=y(C(),1);var uzi=y(C(),1);var lHi=y(C(),1),lv=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var uHi=y(C(),1),dv=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var hHi=y(C(),1),uv=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var pHi=y(C(),1),mv=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var gHi=y(C(),1),hv=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var yHi=y(C(),1),fv=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var xHi=y(C(),1),AL=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var _Hi=y(C(),1),pv=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var THi=y(C(),1),Av=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var LHi=y(C(),1),gv=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var VHi=y(C(),1),HI=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var ZHi=y(C(),1),bv=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var wHi=y(C(),1),yv=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var WHi=y(C(),1),Cv=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var PHi=y(C(),1),xv=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var vHi=y(C(),1),Iv=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var DHi=y(C(),1),Cxt={Z_UP:0,Y_UP:1},Um=Object.freeze(Cxt);function xxt(e){let t=new OA;this.shaderBuilder=t;let n=e._customShader,i=Lt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let p in o)if(o.hasOwnProperty(p)){let g=o[p];t.addUniform(g.type,p,be.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",be.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([uv]),e.provider.metadataOrder===Um.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,be.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,be.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,be.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,be.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",xv,lv,mv,Iv]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,be.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,be.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,be.FRAGMENT),t.addFragmentLines([fv])),t.addFragmentLines([hv]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,be.FRAGMENT),a==="BOX"?t.addFragmentLines([bv,pv,HI]):a==="CYLINDER"?t.addFragmentLines([yv,AL,Av,HI]):a==="ELLIPSOID"&&t.addFragmentLines([Cv,AL,gv,HI]),t.addFragmentLines([dv]);let c=e._shape,d=c.shaderDefines;for(let p in d)if(d.hasOwnProperty(p)){let g=d[p];l(g)&&(g=g===!0?void 0:g,t.addDefine(p,g,be.FRAGMENT))}let u=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",u,be.FRAGMENT),s===1?u+=1:r.unionClippingRegions?u+=2:u+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",u,be.FRAGMENT),u+=1),t.addDefine("INTERSECTION_COUNT",u,be.FRAGMENT),(!m.equals(e.paddingBefore,m.ZERO)||!m.equals(e.paddingAfter,m.ZERO))&&t.addDefine("PADDING",void 0,be.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,be.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,be.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,be.FRAGMENT)}var _v=xxt;var Azi=y(C(),1);function Ixt(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,d=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,be.FRAGMENT),d&&n.addDefine("STATISTICS",void 0,be.FRAGMENT);for(let A=0;A<c;A++){let T=i[A],L=IY(o[A]),V=`PropertyStatistics_${T}`,W=`PropertyStatistics_${T}`;n.addStruct(V,W,be.FRAGMENT),n.addStructField(V,L,"min"),n.addStructField(V,L,"max")}let u="MetadataStatistics",h="MetadataStatistics",p="metadataStatistics";n.addStruct(u,h,be.FRAGMENT);for(let A=0;A<c;A++){let T=i[A],L=`PropertyStatistics_${T}`,V=T;n.addStructField(u,L,V)}let g="Metadata",f="Metadata",b="metadata";n.addStruct(g,f,be.FRAGMENT);for(let A=0;A<c;A++){let T=IY(o[A]);n.addStructField(g,T,i[A])}let x="Attributes",I="Attributes",_="attributes";n.addStruct(x,I,be.FRAGMENT),n.addStructField(x,"vec3","positionEC"),n.addStructField(x,"vec3","normalEC");let E="Voxel",S="Voxel",R="voxel";n.addStruct(E,S,be.FRAGMENT),n.addStructField(E,"vec3","viewDirUv"),n.addStructField(E,"float","travelDistance"),n.addStructField(E,"int","stepCount"),n.addStructField(E,"int","tileIndex"),n.addStructField(E,"int","sampleIndex"),n.addStructField(E,"float","distanceToDepthBuffer");let G="FragmentInput";n.addStruct(G,"FragmentInput",be.FRAGMENT),n.addStructField(G,h,p),n.addStructField(G,f,b),n.addStructField(G,I,_),n.addStructField(G,S,R);let w="Properties",F="Properties",P="properties";n.addStruct(w,F,be.FRAGMENT);for(let A=0;A<c;A++){let T=IY(o[A]);n.addStructField(w,T,i[A])}{let A="clearProperties";n.addFunction(A,`${F} clearProperties()`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=IY(o[T],r[T]);n.addFunctionLines(A,[`${P}.${i[T]} = ${L}(0.0);`])}n.addFunctionLines(A,[`return ${P};`])}{let A="sumProperties";n.addFunction(A,`${F} sumProperties(${F} propertiesA, ${F} propertiesB)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${P}.${L} = propertiesA.${L} + propertiesB.${L};`])}n.addFunctionLines(A,[`return ${P};`])}{let A="scaleProperties";n.addFunction(A,`${F} scaleProperties(${F} ${P}, float scale)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} scaledProperties = ${P};`]);for(let T=0;T<c;T++)n.addFunctionLines(A,[`scaledProperties.${i[T]} *= scale;`]);n.addFunctionLines(A,["return scaledProperties;"])}{let A="mixProperties";n.addFunction(A,`${F} mixProperties(${F} propertiesA, ${F} propertiesB, float mixFactor)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${P}.${L} = mix(propertiesA.${L}, propertiesB.${L}, mixFactor);`])}n.addFunctionLines(A,[`return ${P};`])}{let A="copyPropertiesToMetadata";n.addFunction(A,`void copyPropertiesToMetadata(in ${F} ${P}, inout ${f} ${b})`,be.FRAGMENT);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${b}.${L} = ${P}.${L};`])}}if(d){let A="setStatistics";n.addFunction(A,`void setStatistics(inout ${h} ${p})`,be.FRAGMENT);for(let T=0;T<c;T++){let L=i[T],V=o[T],W=bt.getComponentCount(V);for(let M=0;M<W;M++){let Q=Ext(V,M),N=s[T][M],k=a[T][M];!l(N)||!l(k)||n.addFunctionLines(A,[`${p}.${L}.min${Q} = ${rEe(N)};`,`${p}.${L}.max${Q} = ${rEe(k)};`])}}}{let A="getPropertiesFromMegatextureAtUv";n.addFunction(A,`${F} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=o[T],V=r[T],W=_xt(L,V);n.addFunctionLines(A,[`properties.${i[T]} = texture(u_megatextureTextures[${T}], texcoord)${W};`])}n.addFunctionLines(A,[`return ${P};`])}}function IY(e){if(e===bt.SCALAR)return"float";if(e===bt.VEC2)return"vec2";if(e===bt.VEC3)return"vec3";if(e===bt.VEC4)return"vec4"}function _xt(e){if(e===bt.SCALAR)return".r";if(e===bt.VEC2)return".ra";if(e===bt.VEC3)return".rgb";if(e===bt.VEC4)return""}function rEe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function Ext(e,t){return e===bt.SCALAR?"":`[${t}]`}var Ev=Ixt;function Txt(e,t){let n=new _v(e);Ev(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let I="getClippingPlane",_=Qg(o,t),E=0,S=_.indexOf(")")+1,R=_.indexOf("{",S)+1,G=_.indexOf("}",R),B=_.slice(E,S),w=_.slice(R,G);i.addFunction(I,B,be.FRAGMENT),i.addFunctionLines(I,[w])}let s=i.clone();s.addDefine("PICKING",void 0,be.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,be.FRAGMENT);let c=i.buildShaderProgram(t),d=s.buildShaderProgram(t),u=a.buildShaderProgram(t),h=Qe.fromCache({cull:{enabled:!0,face:Xi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND}),p=t.getViewportQuadVertexArray(),g=e._depthTest,f=new ot({vertexArray:p,primitiveType:We.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Ge.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),b=ot.shallowClone(f,new ot);b.shaderProgram=d,b.pickOnly=!0;let x=ot.shallowClone(f,new ot);if(x.shaderProgram=u,x.pickOnly=!0,l(e._drawCommand)){let I=e._drawCommand;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}if(l(e._drawCommandPick)){let I=e._drawCommandPick;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let I=e._drawCommandPickVoxel;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}e._drawCommand=f,e._drawCommandPick=b,e._drawCommandPickVoxel=x}var Tv=Txt;var eKi=y(C(),1);var Zzi=y(C(),1),Sxt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},gL=Object.freeze(Sxt);var kzi=y(C(),1);var wzi=y(C(),1);function Lxt(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var Sv=Lxt;function bL(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}bL.prototype.getTexture=function(e){return this._textures[e]};function Rxt(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}bL.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):Rxt(this,e,t)};function Vxt(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?_Y(o,r,n):Gxt(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function _Y(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?aEe(e,n):new Wt({context:n,source:t,sampler:o});return sEe(o)&&r.generateMipmap(),r}function Gxt(e,t,n){let{typedArray:i,sampler:o}=e,r=sEe(o),s=o.wrapS===Ln.REPEAT||o.wrapS===Ln.MIRRORED_REPEAT||o.wrapT===Ln.REPEAT||o.wrapT===Ln.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,d=[a,c].every(Z.isPowerOfTwo);if((r||s)&&!d)if(l(i)){if(e.pixelDatatype===Ye.UNSIGNED_BYTE){let h=Sv(i,a,c),p=kb(h);return _Y({sampler:o},p,n)}}else{let h=kb(t);return _Y(e,h,n)}else return _Y(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),aEe(e,n)}function sEe(e){return[en.NEAREST_MIPMAP_NEAREST,en.NEAREST_MIPMAP_LINEAR,en.LINEAR_MIPMAP_NEAREST,en.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function aEe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Wt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}bL.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];Vxt(this,o,t)}n.length=0};bL.prototype.isDestroyed=function(){return!1};bL.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return me(this)};var Lv=bL;function Rv(e){e=e??Y.EMPTY_OBJECT,this.mode=e.mode??DA.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??Y.EMPTY_OBJECT,this.varyings=e.varyings??Y.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??c0.INHERIT,this._textureManager=new Lv,this._defaultTexture=void 0,this.uniformMap=Zxt(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},Xxt(this),Wxt(this)}function Zxt(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===gL.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=Bxt(e,i)):n[i]=wxt(e,i)}return n}function Bxt(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function wxt(e,t){return function(){return e.uniforms[t].value}}function zI(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function Xxt(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,zI(r,t,o),o=e.usedVariablesVertex.featureIdSet,zI(r,n,o),o=e.usedVariablesVertex.metadataSet,zI(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,zI(s,t,o),o=e.usedVariablesFragment.featureIdSet,zI(s,n,o),o=e.usedVariablesFragment.metadataSet,zI(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;zI(s,a,c)}}function cEe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function $c(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${cEe(t)} is not available in the ${i} shader. Did you mean ${cEe(n)} instead?`;throw new Ae(o)}}function Wxt(e){let t=e.usedVariablesVertex.attributeSet;$c(t,"position","positionMC","vertex"),$c(t,"normal","normalMC","vertex"),$c(t,"tangent","tangentMC","vertex"),$c(t,"bitangent","bitangentMC","vertex"),$c(t,"positionWC","positionMC","vertex"),$c(t,"positionEC","positionMC","vertex"),$c(t,"normalEC","normalMC","vertex"),$c(t,"tangentEC","tangentMC","vertex"),$c(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;$c(n,"position","positionEC","fragment"),$c(n,"normal","normalEC","fragment"),$c(n,"tangent","tangentEC","fragment"),$c(n,"bitangent","bitangentEC","fragment"),$c(n,"normalMC","normalEC","fragment"),$c(n,"tangentMC","tangentEC","fragment"),$c(n,"bitangentMC","bitangentEC","fragment")}Rv.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===gL.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};Rv.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};Rv.prototype.isDestroyed=function(){return!1};Rv.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),me(this)};var KI=Rv;var cKi=y(C(),1);function qg(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(qg.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});qg.fromMetadataArray=function(e){return new qg({metadata:e})};qg.fromGltf=async function(e){let t=new Od({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new qg({loader:t})};qg.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=Fxt(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function Fxt(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(u=>u.class.id===i),{properties:c}=a,d=new Array(o.length);for(let u=0;u<e.length;u++){let h=c[o[u]].attribute,p=e.find(x=>x.name===h);if(!l(p))continue;let g=Ut.toComponentDatatype(s[u]),f=bt.getComponentCount(r[u]),b=p.count*f;d[u]=J.createArrayBufferView(g,p.typedArray.buffer,p.typedArray.byteOffset+p.byteOffset,b)}return d}qg.prototype.isDestroyed=function(){return!1};qg.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),me(this)};var JI=qg;var QKi=y(C(),1);var AKi=y(C(),1);function Fp(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._minBounds=Fp.DefaultMinBounds.clone(),this._maxBounds=Fp.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new m,renderMaxBounds:new m,boxUvToShapeUvScale:new m,boxUvToShapeUvTranslate:new m},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var Pxt=new m,v6=new m,Mxt=new $,vxt=new m,Nxt=new m,Dxt=new m,Qxt=new m,lEe=X.fromRotationTranslation($.fromUniformScale(.5,new $),new m(.5,.5,.5),new X);Fp.prototype.update=function(e,t,n,i,o){i=i??t.clone(vxt),o=o??n.clone(Nxt),t=m.clone(t,this._minBounds),n=m.clone(n,this._maxBounds);let r=m.clamp(t,i,o,Dxt),s=m.clamp(n,i,o,Qxt),a=X.getScale(e,v6);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=X.clone(e,this.shapeTransform),this.orientedBoundingBox=D6(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:d}=this;for(let g in d)d.hasOwnProperty(g)&&(d[g]=void 0);let u=0;d.BOX_INTERSECTION_INDEX=u,u+=1,c.renderMinBounds=X.multiplyByPoint(lEe,r,c.renderMinBounds),c.renderMaxBounds=X.multiplyByPoint(lEe,s,c.renderMaxBounds),d.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,p=n;return c.boxUvToShapeUvScale=m.fromElements(2/(h.x===p.x?1:p.x-h.x),2/(h.y===p.y?1:p.y-h.y),2/(h.z===p.z?1:p.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=m.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=u,!0};var EY=new m,N6=new m;Fp.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=m.fromElements(Z.lerp(r.x,s.x,a*t),Z.lerp(r.y,s.y,a*n),Z.lerp(r.z,s.z,a*i),EY),d=m.fromElements(Z.lerp(r.x,s.x,a*(t+1)),Z.lerp(r.y,s.y,a*(n+1)),Z.lerp(r.z,s.z,a*(i+1)),N6);return D6(c,d,this.shapeTransform,o)};var dEe=new m;Fp.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,dEe),s=m.multiplyByScalar(r,o,dEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,EY),o,EY),c=m.add(a,s,N6),d=this._minBounds,u=this._maxBounds,h=m.fromElements(Z.lerp(d.x,u.x,a.x),Z.lerp(d.y,u.y,a.y),Z.lerp(d.z,u.z,a.z),EY),p=m.fromElements(Z.lerp(d.x,u.x,c.x),Z.lerp(d.y,u.y,c.y),Z.lerp(d.z,u.z,c.z),N6);return D6(h,p,this.shapeTransform,i)};Fp.DefaultMinBounds=Object.freeze(new m(-1,-1,-1));Fp.DefaultMaxBounds=Object.freeze(new m(1,1,1));function D6(e,t,n,i){let o=Fp.DefaultMinBounds,r=Fp.DefaultMaxBounds;if(m.equals(e,o)&&m.equals(t,r))i.center=X.getTranslation(n,i.center),i.halfAxes=X.getMatrix3(n,i.halfAxes);else{let a=X.getScale(n,v6),c=m.midpoint(e,t,Pxt);i.center=X.multiplyByPoint(n,c,i.center),a=m.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),v6);let d=X.getRotation(n,Mxt);i.halfAxes=$.setScale(d,a,i.halfAxes)}return i}var jI=Fp;var SKi=y(C(),1);function $g(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._minBounds=$g.DefaultMinBounds.clone(),this._maxBounds=$g.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new D,cylinderRenderAngleMinMax:new D,cylinderRenderHeightMinMax:new D,cylinderUvToShapeUvRadius:new D,cylinderUvToShapeUvAngle:new D,cylinderUvToShapeUvHeight:new D,cylinderShapeUvAngleMinMax:new D,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var hEe=new m,Uxt=new m,kxt=new m,Yxt=new m,Oxt=new m;$g.prototype.update=function(e,t,n,i,o){i=i??t.clone(Uxt),o=o??n.clone(kxt),t=m.clone(t,this._minBounds),n=m.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=$g,a=s.y-r.y,c=.5*a,d=Z.EPSILON10,u=Z.EPSILON3,h=Z.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=Z.negativePiToPi(t.y),n.y=Z.negativePiToPi(n.y),i.y=Z.negativePiToPi(i.y),o.y=Z.negativePiToPi(o.y);let p=m.maximumByComponent(t,i,Yxt),g=m.minimumByComponent(n,o,Oxt),f=X.getScale(e,hEe);if(g.x===0||p.x>g.x||p.z>g.z||Z.equalsEpsilon(f.x,0,void 0,d)||Z.equalsEpsilon(f.y,0,void 0,d)||Z.equalsEpsilon(f.z,0,void 0,d))return!1;this.shapeTransform=X.clone(e,this.shapeTransform),this.orientedBoundingBox=k6(p,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let b=t.x===r.x&&n.x===s.x,x=n.y<t.y,I=n.y-t.y+x*a,_=I>c+h&&I<a-h,E=I<c-h,S=I>=c-h&&I<=c+h,R=_||E||S,G=Z.equalsEpsilon(t.y,r.y,void 0,u),B=Z.equalsEpsilon(n.y,s.y,void 0,u),w=t.z===r.z&&n.z===s.z,F=p.x===r.x,P=g.y<p.y,A=g.y-p.y+P*a,T=A>=c-h&&A<a-h,L=A>h&&A<c-h,V=A<=h,W=T||L||V,{shaderUniforms:M,shaderDefines:Q}=this;for(let k in Q)Q.hasOwnProperty(k)&&(Q[k]=void 0);let N=0;if(Q.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=N,N+=1,F||(Q.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,Q.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=N,N+=1),M.cylinderRenderRadiusMinMax=D.fromElements(p.x,g.x,M.cylinderRenderRadiusMinMax),p.x===g.x&&(Q.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!b){Q.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let k=n.x-t.x,v=0,O=1;k!==0&&(v=1/k,O=-t.x/k),M.cylinderUvToShapeUvRadius=D.fromElements(v,O,M.cylinderUvToShapeUvRadius)}if(!w){Q.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let k=n.z-t.z,v=0,O=1;k!==0&&(v=2/k,O=-(t.z+1)/k),M.cylinderUvToShapeUvHeight=D.fromElements(v,O,M.cylinderUvToShapeUvHeight)}if(M.cylinderRenderHeightMinMax=D.fromElements(p.z,g.z,M.cylinderRenderHeightMinMax),x&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),W&&(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,Q.CYLINDER_INTERSECTION_INDEX_ANGLE=N,T?(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,N+=1):L?(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,N+=2):V&&(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,N+=2),M.cylinderRenderAngleMinMax=D.fromElements(p.y,g.y,M.cylinderRenderAngleMinMax)),R){Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,G&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),B&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let k=(t.y-r.y)/a,v=(n.y-r.y)/a,O=1-I/a;if(M.cylinderShapeUvAngleMinMax=D.fromElements(k,v,M.cylinderShapeUvAngleMinMax),M.cylinderShapeUvAngleRangeZeroMid=(v+.5*O)%1,I<=h)M.cylinderUvToShapeUvAngle=D.fromElements(0,1,M.cylinderUvToShapeUvAngle);else{let H=a/I,ee=-(t.y-r.y)/I;M.cylinderUvToShapeUvAngle=D.fromElements(H,ee,M.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=N,!0};var TY=new m,U6=new m;$g.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=m.fromElements(Z.lerp(r.x,s.x,t*a),Z.lerp(r.y,s.y,n*a),Z.lerp(r.z,s.z,i*a),TY),d=m.fromElements(Z.lerp(r.x,s.x,(t+1)*a),Z.lerp(r.y,s.y,(n+1)*a),Z.lerp(r.z,s.z,(i+1)*a),U6);return k6(c,d,this.shapeTransform,o)};var uEe=new m;$g.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,uEe),s=m.multiplyByScalar(r,o,uEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,TY),o,TY),c=m.add(a,s,U6),d=this._minBounds,u=this._maxBounds,h=m.fromElements(Z.lerp(d.x,u.x,a.x),Z.lerp(d.y,u.y,a.y),Z.lerp(d.z,u.z,a.z),TY),p=m.fromElements(Z.lerp(d.x,u.x,c.x),Z.lerp(d.y,u.y,c.y),Z.lerp(d.z,u.z,c.z),U6);return k6(h,p,this.shapeTransform,i)};$g.DefaultMinBounds=Object.freeze(new m(0,-Z.PI,-1));$g.DefaultMaxBounds=Object.freeze(new m(1,+Z.PI,1));var Hxt=5,zxt=new Array(Hxt),Kxt=new m,Jxt=new $,jxt=new X,qxt=new X,$xt=new X,Q6=new X,eIt=new m,tIt=new m,nIt=new m,fEe=new Array(8);for(let e=0;e<8;e++)fEe[e]=new m;function mEe(e,t,n){return Math.abs(ce.dot(e,t))<n}function iIt(e){let t=X.getColumn(e,0,eIt),n=X.getColumn(e,1,tIt),i=X.getColumn(e,2,nIt),o=Z.EPSILON4;return mEe(t,n,o)&&mEe(n,i,o)}function oIt(e,t){let n=fEe;m.fromElements(-.5,-.5,-.5,n[0]),m.fromElements(-.5,-.5,.5,n[1]),m.fromElements(-.5,.5,-.5,n[2]),m.fromElements(-.5,.5,.5,n[3]),m.fromElements(.5,-.5,-.5,n[4]),m.fromElements(.5,-.5,.5,n[5]),m.fromElements(.5,.5,-.5,n[6]),m.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)X.multiplyByPoint(e,n[i],n[i]);return vn.fromPoints(n,t)}function k6(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+Z.TWO_PI:t.y,c=e.z,d=t.z,u=a-s,h=s+u*.5,p=zxt,g=0;p[g++]=s,p[g++]=a,p[g++]=h,u>Z.PI&&(p[g++]=h-Z.PI_OVER_TWO,p[g++]=h+Z.PI_OVER_TWO);let f=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY,I=Number.NEGATIVE_INFINITY;for(let M=0;M<g;++M){let Q=p[M]-h,N=Math.cos(Q),k=Math.sin(Q),v=N*o,O=k*o,H=N*r,ee=k*r;f=Math.min(f,v,H),b=Math.min(b,O,ee),x=Math.max(x,v,H),I=Math.max(I,O,ee)}let _=x-f,E=I-b,S=d-c,R=(f+x)*.5,G=(b+I)*.5,B=(c+d)*.5,w=m.fromElements(R,G,B,Kxt),F=$.fromRotationZ(h,Jxt),P=m.fromElements(_,E,S,hEe),A=X.fromScale(P,$xt),T=X.fromRotation(F,qxt),L=X.fromTranslation(w,jxt),V=X.multiplyTransformation(T,X.multiplyTransformation(L,A,Q6),Q6),W=X.multiplyTransformation(n,V,Q6);return iIt(W)?vn.fromTransformation(W,i):oIt(W,i)}var qI=$g;var PKi=y(C(),1);function eb(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._rectangle=new le,this._minimumHeight=eb.DefaultMinBounds.z,this._maximumHeight=eb.DefaultMaxBounds.z,this._ellipsoid=new ie,this._translation=new m,this._rotation=new $,this.shaderUniforms={ellipsoidRadiiUv:new m,eccentricitySquared:0,evoluteScale:new D,ellipsoidInverseRadiiSquaredUv:new m,ellipsoidRenderLongitudeMinMax:new D,ellipsoidShapeUvLongitudeMinMaxMid:new m,ellipsoidUvToShapeUvLongitude:new D,ellipsoidUvToShapeUvLatitude:new D,ellipsoidRenderLatitudeSinMinMax:new D,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new D},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var rIt=new m,sIt=new m,aIt=new m,cIt=new m,lIt=new m,dIt=new m,uIt=new m,mIt=new m,hIt=new $,pEe=new m,AEe=new m,fIt=new le;eb.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=eb;i=i??r,o=o??s;let a=Z.EPSILON10,c=Z.EPSILON3,d=Z.EPSILON10,u=Z.EPSILON10,h=Z.EPSILON3,p=X.getScale(e,mIt),g=m.clone(r,rIt);g.z=-m.minimumComponent(p);let f=m.clamp(t,g,s,sIt),b=m.clamp(n,g,s,aIt),x=m.clamp(i,g,s,cIt),I=m.clamp(o,g,s,lIt),_=m.maximumByComponent(f,x,dIt),E=m.minimumByComponent(b,I,uIt),S=m.add(p,m.fromElements(b.z,b.z,b.z,pEe),pEe),R=m.maximumComponent(S),G=m.add(p,m.fromElements(E.z,E.z,E.z,AEe),AEe);if(_.y>E.y||_.y===s.y||E.y===r.y||_.z>E.z||Z.equalsEpsilon(G,m.ZERO,void 0,a))return!1;this._rectangle=le.fromRadians(f.x,f.y,b.x,b.y),this._translation=X.getTranslation(e,this._translation),this._rotation=X.getRotation(e,this._rotation),this._ellipsoid=ie.fromCartesian3(p,this._ellipsoid),this._minimumHeight=f.z,this._maximumHeight=b.z;let B=le.fromRadians(_.x,_.y,E.x,E.y,fIt);this.orientedBoundingBox=Y6(B,_.z,E.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=X.fromRotationTranslation($.setScale(this._rotation,S,hIt),this._translation,this.shapeTransform),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let w=s.x-r.x,F=.5*w,P=E.x<_.x,A=E.x-_.x+P*w,T=A<=d,L=A>=F-d&&A<w-d,V=A>d&&A<F-d,W=T||L||V,M=b.x<f.x,Q=b.x-f.x+M*w,N=Q>F+d&&Q<w-d,k=Q>=F-d&&Q<=F+d,v=Q<F-d,O=N||k||v,H=E.y<-h,ee=E.y>=-h&&E.y<=+h,K=E.y>+h&&E.y<s.y-u,te=H||ee||K,q=_.y>r.y+u&&_.y<-h,pe=_.y>=-h&&_.y<=+h,ye=_.y>+h,he=q||pe||ye,xe=te||he,Te=b.y-f.y,Be=b.y<-h,Le=b.y>=-h&&b.y<=+h,De=b.y>+h&&b.y<s.y-u,Ue=Be||Le||De,je=f.y>r.y+u&&f.y<-h,it=f.y>=-h&&f.y<=+h,nn=f.y>+h,rn=Ue||(je||it||nn),{shaderUniforms:Jt,shaderDefines:Xt}=this;for(let _t in Xt)Xt.hasOwnProperty(_t)&&(Xt[_t]=void 0);Jt.ellipsoidRadiiUv=m.divideByScalar(S,R,Jt.ellipsoidRadiiUv);let{x:Li,z:bi}=Jt.ellipsoidRadiiUv,vt=bi/Li;Jt.eccentricitySquared=1-vt*vt,Jt.evoluteScale=D.fromElements((Li*Li-bi*bi)/Li,(bi*bi-Li*Li)/bi,Jt.evoluteScale),Jt.ellipsoidInverseRadiiSquaredUv=m.divideComponents(m.ONE,m.multiplyComponents(Jt.ellipsoidRadiiUv,Jt.ellipsoidRadiiUv,Jt.ellipsoidInverseRadiiSquaredUv),Jt.ellipsoidInverseRadiiSquaredUv);let Rt=0;Xt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Rt,Rt+=1,Xt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Rt,Rt+=1,Jt.clipMinMaxHeight=D.fromElements((_.z-b.z)/R,(E.z-b.z)/R,Jt.clipMinMaxHeight);let si=(b.z-f.z)/R;if(Jt.ellipsoidInverseHeightDifferenceUv=1/si,f.z===b.z&&(Jt.ellipsoidInverseHeightDifferenceUv=0),W&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Rt,L?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Rt+=1):V?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Rt+=2):T&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Rt+=2),Jt.ellipsoidRenderLongitudeMinMax=D.fromElements(_.x,E.x,Jt.ellipsoidRenderLongitudeMinMax)),O)if(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,b.x<f.x&&(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),Q<=d)Jt.ellipsoidUvToShapeUvLongitude=D.fromElements(0,1,Jt.ellipsoidUvToShapeUvLongitude);else{let Fo=w/Q,Uo=-(f.x-r.x)/Q;Jt.ellipsoidUvToShapeUvLongitude=D.fromElements(Fo,Uo,Jt.ellipsoidUvToShapeUvLongitude)}if(W){let _t=Z.equalsEpsilon(_.x,r.x,void 0,c),Fo=Z.equalsEpsilon(E.x,s.x,void 0,c);_t&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Fo&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Uo=(f.x-r.x)/w,Va=(b.x-r.x)/w,Cr=(E.x-r.x)/w,wr=1-A/w,ve=(Cr+.5*wr)%1;Jt.ellipsoidShapeUvLongitudeMinMaxMid=m.fromElements(Uo,Va,ve,Jt.ellipsoidShapeUvLongitudeMinMaxMid)}if(xe&&(he&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Rt,q?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Rt+=1):pe?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Rt+=1):ye&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Rt+=2)),te&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Rt,H?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Rt+=2):ee?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Rt+=1):K&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Rt+=1)),Jt.ellipsoidRenderLatitudeSinMinMax=D.fromElements(Math.sin(_.y),Math.sin(E.y),Jt.ellipsoidRenderLatitudeSinMinMax)),rn)if(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,Te<u)Jt.ellipsoidUvToShapeUvLatitude=D.fromElements(0,1,Jt.ellipsoidUvToShapeUvLatitude);else{let Fo=(s.y-r.y)/Te,Uo=(r.y-f.y)/Te;Jt.ellipsoidUvToShapeUvLatitude=D.fromElements(Fo,Uo,Jt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Rt,!0};var yEe=new le;eb.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,d=(n+1)*r,u=i*r,h=(i+1)*r,p=le.subsection(this._rectangle,s,c,a,d,yEe),g=Z.lerp(this._minimumHeight,this._maximumHeight,u),f=Z.lerp(this._minimumHeight,this._maximumHeight,h);return Y6(p,g,f,this._ellipsoid,this._translation,this._rotation,o)};var gEe=new m,bEe=new m,pIt=new m;eb.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,gEe),s=m.multiplyByScalar(r,o,gEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,bEe),o,bEe),c=m.add(a,s,pIt),d=le.subsection(this._rectangle,a.x,a.y,c.x,c.y,yEe),u=Z.lerp(this._minimumHeight,this._maximumHeight,a.z),h=Z.lerp(this._minimumHeight,this._maximumHeight,c.z);return Y6(d,u,h,this._ellipsoid,this._translation,this._rotation,i)};function Y6(e,t,n,i,o,r,s){return s=vn.fromRectangle(e,t,n,i,s),s.center=m.add(s.center,o,s.center),s.halfAxes=$.multiply(s.halfAxes,r,s.halfAxes),s}eb.DefaultMinBounds=Object.freeze(new m(-Z.PI,-Z.PI_OVER_TWO,-ie.WGS84.minimumRadius));eb.DefaultMaxBounds=Object.freeze(new m(Z.PI,Z.PI_OVER_TWO,10*ie.WGS84.maximumRadius));var $I=eb;var Vu={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};Vu.getMinBounds=function(e){switch(e){case Vu.BOX:return jI.DefaultMinBounds;case Vu.ELLIPSOID:return $I.DefaultMinBounds;case Vu.CYLINDER:return qI.DefaultMinBounds}};Vu.getMaxBounds=function(e){switch(e){case Vu.BOX:return jI.DefaultMaxBounds;case Vu.ELLIPSOID:return $I.DefaultMaxBounds;case Vu.CYLINDER:return qI.DefaultMaxBounds}};Vu.getShapeConstructor=function(e){switch(e){case Vu.BOX:return jI;case Vu.ELLIPSOID:return $I;case Vu.CYLINDER:return qI}};var qa=Object.freeze(Vu);var kJi=y(C(),1);var OKi=y(C(),1);function Af(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Af.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Af.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Af({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Af.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Af.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)CEe(this,t)};Af.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,CEe(this,i),t};Af.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],xEe(this,0)),this._array[e-1]=void 0,t};Af.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=O6(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&xEe(this,n)}return this._array[e-1]=void 0,t};Af.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Af.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[O6(this,1,2)?1:2]};function SY(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function Vv(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function O6(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function CEe(e,t){if(t===0)return;let n=Math.floor(Z.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=Vv(e,t,i);for(o!==n&&(SY(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(Vv(e,t,r)!==o)break;SY(e,t,r),t=r}}function xEe(e,t){let n=e._length,i=Math.floor(Z.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){Vv(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let d=0;d<c;d++){let u=a+d;Vv(e,u,r)===i&&(r=u)}}if(Vv(e,r,t)===i&&(SY(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);O6(e,r,a)===i&&SY(e,r,a)}t=r}}var e_=Af;var zKi=y(C(),1),H6=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function Gv(e,t){this.spatialNode=e,this.keyframe=t,this.state=H6.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}Gv.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=H6.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};Gv.priorityComparator=function(e,t){return e.priority-t.priority};Gv.searchComparator=function(e,t){return e.keyframe-t.keyframe};Gv.LoadState=H6;var Go=Gv;var hJi=y(C(),1);function Ay(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===Ut.UNSIGNED_SHORT&&(i=Ut.FLOAT32),i===Ut.FLOAT32&&!e.floatingPointTexture)throw new de("Floating point texture not supported");let s=AIt(i),a=gIt(n,e.webgl2),c=Ut.getSizeInBytes(i),d=bIt(o,n,c),u=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/u),p=u*t.x,g=h*t.y,f=Math.floor(d/p),b=Math.floor(d/g);if(f===0||b===0)throw new de("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*d**2,this.voxelCountPerTile=m.clone(t,new m),this.maximumTileCount=f*b,this.regionCountPerMegatexture=new D(f,b),this.voxelCountPerRegion=new D(p,g),this.sliceCountPerRegion=new D(u,h),this.voxelSizeUv=new D(1/d,1/d),this.sliceSizeUv=new D(t.x/d,t.y/d),this.regionSizeUv=new D(p/d,g/d),this.texture=new Wt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:d,height:d,sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})});let x=Ut.toComponentDatatype(i);this.tileVoxelDataTemp=J.createTypedArray(x,p*g*n),this.nodes=new Array(this.maximumTileCount);for(let I=0;I<this.maximumTileCount;I++)this.nodes[I]=new yIt(I);for(let I=0;I<this.maximumTileCount;I++){let _=this.nodes[I];_.previousNode=I>0?this.nodes[I-1]:void 0,_.nextNode=I<this.maximumTileCount-1?this.nodes[I+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function AIt(e){if(e===Ut.FLOAT32||e===Ut.FLOAT64)return Ye.FLOAT;if(e===Ut.UINT8)return Ye.UNSIGNED_BYTE}function gIt(e,t){if(e===1)return t?tt.RED:tt.LUMINANCE;if(e===2)return t?tt.RG:tt.LUMINANCE_ALPHA;if(e===3)return tt.RGB;if(e===4)return tt.RGBA}function bIt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(Kt.maximumTextureSize,Z.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function yIt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}Ay.prototype.add=function(e){if(this.isFull())throw new Ae("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};Ay.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new Ae("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};Ay.prototype.isFull=function(){return this.emptyList===void 0};Ay.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===Ut.UNSIGNED_SHORT&&(i=Ut.FLOAT32);let o=Ut.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,d=a*t.y,u=Z.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let p=Math.floor(u/c),g=Math.floor(u/d);if(p*g>=e)break;u*=2}return u*u*n*o};Ay.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let f=g%r.x*o.x,b=Math.floor(g/r.x)*o.y;for(let x=0;x<o.y;x++){let I=CIt(o,x,g),_=(b+x)*s.x+f;for(let E=0;E<o.x;E++){let S=I+E,R=_+E;for(let G=0;G<a;G++)i[R*a+G]=n[S*a+G]}}}let d=e%c.x*s.x,u=Math.floor(e/c.x)*s.y,p={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:d,yOffset:u};this.texture.copyFrom(p)};function CIt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}Ay.prototype.isDestroyed=function(){return!1};Ay.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),me(this)};var yL=Ay;var _Ji=y(C(),1);function km(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=m.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new vn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var xIt=new m;km.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=$.getScale(this.orientedBoundingBox.halfAxes,xIt),n=2*m.maximumComponent(t);this.approximateVoxelSize=n/m.minimumComponent(this.dimensions)};km.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,d=r+1,u=a+1,h=t+1,p=[[h,r,s,a],[h,d,s,a],[h,r,c,a],[h,d,c,a],[h,r,s,u],[h,d,s,u],[h,r,c,u],[h,d,c,u]];this.children=p.map(([g,f,b,x])=>new km(g,f,b,x,this,e,this.dimensions))};km.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};km.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,Z.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var IEe={keyframe:0};function Zv(e,t){return IEe.keyframe=e,Yo(t,IEe,Go.searchComparator)}km.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let p=IIt(i,h),g=h[p],f=o===i||i<g.keyframe?p:Math.min(p+1,h.length-1),b=h[f],x=i-g.keyframe,I=_Ee(n-t.level,x);I<a&&(a=I,r=g);let _=b.keyframe-o,E=_Ee(n-t.level,_);if(E<c&&(c=E,s=b),x===0&&_===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let d=r.keyframe,u=s.keyframe;this.renderableKeyframeNodeLerp=d===u?0:Z.clamp((e-d)/(u-d),0,1)};function IIt(e,t){let n=Zv(e,t);return n<0?Z.clamp(~n-1,0,t.length-1):n}function _Ee(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}km.prototype.isVisited=function(e){return this.visitedFrameNumber===e};km.prototype.createKeyframeNode=function(e){let t=Zv(e,this.keyframeNodes);if(t<0){t=~t;let n=new Go(this,e);this.keyframeNodes.splice(t,0,n)}};km.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=Zv(n,this.keyframeNodes);if(i<0)throw new Ae("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=Zv(n,this.renderableKeyframeNodes);if(o<0)throw new Ae("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};km.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new Ae("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=Zv(e.keyframe,i);if(o>=0)throw new Ae("Keyframe already renderable");o=~o,i.splice(o,0,e)};km.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var Bv=km;function gy(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:d,metadataOrder:u}=o,h=m.add(r,s,new m);if(m.add(h,a,h),u===Um.Y_UP){let E=h.y;h.y=h.z,h.z=E}!l(i)&&l(o.maximumTileCount)&&(i=WIt(o.maximumTileCount,h,c,d)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let E=0;E<c.length;E++){let S=c[E],R=bt.getComponentCount(S),G=d[E];this.megatextures[E]=new yL(t,h,R,G,i),this.textureMemoryByteLength+=this.megatextures[E].textureMemoryByteLength}let p=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new Bv(0,0,0,0,void 0,g,r),this._priorityQueue=new e_({maximumLength:p,comparator:Go.priorityComparator}),this._highPriorityKeyframeNodes=new Array(p),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(p),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let f=this._binaryTreeKeyframeWeighting;f[0]=0,f[n-1]=0,z6(f,1,n-2,0);let b=9,x=2048,I=Math.floor(x/b),_=Math.ceil(p/I);this.internalNodeTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,flipY:!1,width:x,height:_,sampler:new sn({minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=I,this.internalNodeTexelSizeUv=new D(1/x,1/_),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new D}gy.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function z6(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,z6(e,t,o-1,i+1),z6(e,o+1,n,i+1)}gy.simultaneousRequestCountMaximum=50;gy.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,d=c>0,u=a>1,h=(d?2:1)*(u?2:1);this._sampleCount=h;let p=h>=2;if(p&&!l(this.leafNodeTexture)){let E=Math.floor(512),S=Math.ceil(s/E);this.leafNodeTexture=new Wt({context:r,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,flipY:!1,width:1024,height:S,sampler:new sn({minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=D.fromElements(1/1024,1/S,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=E}else!p&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=Z.clamp(t,0,a-1),n&&EEe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Fi();TIt(this,e),SIt(this,e);let f=Fi();ZIt(this,h,c);let b=Fi(),x=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||x){let I=f-g,_=b-f,E=b-g;GIt(this,e,I,_,E)}};gy.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};gy.prototype.isDestroyed=function(){return!1};gy.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),me(this)};function EEe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];EEe(e,i)}}function _It(e,t){if(e._simultaneousRequestCount>=gy.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(u){e._simultaneousRequestCount--,t.content=u,t.state=l(u)?Go.LoadState.PROCESSING:Go.LoadState.UNAVAILABLE}function a(u){e._simultaneousRequestCount--,t.state=Go.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},d=i.requestData(c);l(d)&&(e._simultaneousRequestCount++,t.state=Go.LoadState.RECEIVING,d.then(s).catch(a))}function EIt(e){return e/(1+e)}function TIt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),TEe(e.rootNode,Xs.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function SIt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(LIt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let d=0;d<s;d++){let u=r[d];if(!(u.state===Go.LoadState.LOADED||u.spatialNode===void 0)&&(u.state===Go.LoadState.UNLOADED&&_It(e,u),u.state===Go.LoadState.PROCESSING)){let{content:h}=u;if(h.update(e._primitive,t),!h.ready)continue;if(!RIt(h.metadata,e)){u.content=void 0,u.state=Go.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let p=0;if(n.isFull()){p=i-1-a,a++;let g=o[p];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else p=i+c,c++;u.spatialNode.addKeyframeNodeToMegatextures(u,e.megatextures),u.state=Go.LoadState.LOADED,o[p]=u,e._primitive.tileLoad.raiseEvent()}}}function LIt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function RIt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:d}=r,u=a*c*d,h=e[o],p=u*s;if(h.length!==p)return!1}return!0}function TEe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:d}=o,h=r.drawingBufferHeight/s/d.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===Xs.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let p=n._primitive,g=p._shape,f=p.screenSpaceError,b=n._priorityQueue,x=n._keyframeCount,I=Z.clamp(Math.floor(n._keyframeLocation),0,x-2),_=I+1;if(x===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==x)for(let B=0;B<x;B++)e.createKeyframeNode(B);let{screenSpaceError:E,keyframeNodes:S}=e,R=EIt(E),G=!1;for(let B=0;B<S.length;B++){let w=S[B];w.priority=10*R+VIt(I,w.keyframe,_,n),w.state!==Go.LoadState.UNAVAILABLE&&w.state!==Go.LoadState.FAILED&&w.priority!==-Number.MAX_VALUE&&b.insert(w),w.state===Go.LoadState.LOADED&&(G=!0)}if(E<f||!G){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let B=0;B<8;B++){let w=e.children[B];TEe(w,t,n,i)}}function VIt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return Z.lerp(a,s,.15+.85*s)}function GIt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Go.LoadState).length,c=new Array(a),d=new Array(a),u=0;for(let G=0;G<a;G++){let B=new Array(r).fill(0);c[G]=B,d[G]=0}function h(G){let B=G.keyframeNodes;for(let w=0;w<B.length;w++){let F=B[w],P=F.keyframe,A=F.state;c[A][P]+=1,d[A]+=1,u++}if(l(G.children))for(let w=0;w<8;w++){let F=G.children[w];h(F)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=d[Go.LoadState.LOADED],e._primitive.statistics.visited=u;let p=d[Go.LoadState.RECEIVING],g=d[Go.LoadState.PROCESSING],f=p!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(f&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(p,g),!0}),e._primitive.statistics.numberOfPendingRequests=p,e._primitive.statistics.numberOfTilesProcessing=g,f&&(p===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let x=`KEYFRAMES: ${c[Go.LoadState.LOADED]}`,I=`UNLOADED: ${d[Go.LoadState.UNLOADED]} | RECEIVING: ${d[Go.LoadState.RECEIVING]} | PROCESSING: ${d[Go.LoadState.PROCESSING]} | LOADED: ${d[Go.LoadState.LOADED]} | FAILED: ${d[Go.LoadState.FAILED]} | UNAVAILABLE: ${d[Go.LoadState.UNAVAILABLE]} | TOTAL: ${u}`,_=Math.round(n*100)/100,E=Math.round(i*100)/100,S=Math.round(o*100)/100,R=`LOAD: ${_} | OCT: ${E} | ALL: ${S}`;console.log(`${x} || ${I} || ${R}`)}var LY={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function ZIt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,d=[],u=[];function h(g,f,b,x,I){let _=!1;if(l(g.children))for(let E=0;E<8;E++){let S=g.children[E];S.computeSurroundingRenderableKeyframeNodes(o),S.isRenderable(r)&&(_=!0)}if(_){d[I]=LY.INTERNAL<<16|f,d[b]=x,a++,x=f,I=x*9+1;for(let E=0;E<8;E++){let S=g.children[E];f=a,b=f*9+0,h(S,f,b,x,I+E)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let E=c*5,S=g.renderableKeyframeNodePrevious,R=g.level-S.spatialNode.level,G=S.spatialNode.parent,B=l(G)?G.renderableKeyframeNodePrevious:S,w=BIt(g,i,n),F=R,P=1,A=S.megatextureIndex,T=B.megatextureIndex;u[E+0]=w,u[E+1]=F,u[E+2]=P,u[E+3]=A,u[E+4]=T,d[I]=LY.LEAF<<16|c}else{let E=g.renderableKeyframeNodePrevious,R=g.level-E.spatialNode.level===0?LY.LEAF:LY.PACKED_LEAF_FROM_PARENT;d[I]=R<<16|E.megatextureIndex}c++}}let p=e.rootNode;p.computeSurroundingRenderableKeyframeNodes(o),p.isRenderable(r)&&h(p,0,0,0,0),wIt(d,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&XIt(u,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function BIt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return Z.clamp(s,0,1)}function wIt(e,t,n,i){let o=tt.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let p=e[h],g=h*o;for(let f=0;f<o;f++)c[g+f]=p>>>f*8&255}let u={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(u)}function XIt(e,t,n,i){let o=tt.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),d=new Uint8Array(a*c*o);for(let p=0;p<s;p++){let g=e[p*r+0],f=e[p*r+1],b=e[p*r+2],x=e[p*r+3],I=e[p*r+4],_=Z.clamp(Math.floor(65536*g),0,65535);d[p*8+0]=_>>>0&255,d[p*8+1]=_>>>8&255,d[p*8+2]=f&255,d[p*8+3]=b&255,d[p*8+4]=x>>>0&255,d[p*8+5]=x>>>8&255,d[p*8+6]=I>>>0&255,d[p*8+7]=I>>>8&255}let h={source:{arrayBufferView:d,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function WIt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],d=bt.getComponentCount(a);o+=yL.getApproximateTextureMemoryByteLength(e,t,d,c)}return o}var wv=gy;function Pp(e){e=e??Y.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??Pp.DefaultProvider,this._traversal=void 0,this._statistics=new Nh,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new m,this._inputDimensions=new m,this._paddingBefore=new m,this._paddingAfter=new m,this._minBounds=new m,this._minBoundsOld=new m,this._maxBounds=new m,this._maxBoundsOld=new m,this._exaggeratedMinBounds=new m,this._exaggeratedMinBoundsOld=new m,this._exaggeratedMaxBounds=new m,this._exaggeratedMaxBoundsOld=new m,this._minClippingBounds=new m,this._minClippingBoundsOld=new m,this._maxClippingBounds=new m,this._maxClippingBoundsOld=new m,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._exaggeratedModelMatrix=X.clone(this._modelMatrix),this._compoundModelMatrix=new X,this._compoundModelMatrixOld=new X,this._customShader=e.customShader??Pp.DefaultCustomShader,this._customShaderCompilationEvent=new Ce,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new X,this._transformDirectionWorldToUv=new $,this._transformPositionUvToWorld=new X,this._transformDirectionWorldToLocal=new $,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Wh,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new D,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new D,megatextureTextures:[],megatextureSliceDimensions:new D,megatextureTileDimensions:new D,megatextureVoxelSizeUv:new D,megatextureSliceSizeUv:new D,megatextureTileSizeUv:new D,dimensions:new m,inputDimensions:new m,paddingBefore:new m,paddingAfter:new m,transformPositionViewToUv:new X,transformPositionUvToView:new X,transformDirectionViewToLocal:new $,cameraPositionUv:new m,cameraDirectionUv:new m,ndcSpaceAxisAlignedBoundingBox:new ce,clippingPlanesTexture:void 0,clippingPlanesMatrix:new X,stepSize:0,pickColor:new U},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new Ce,this.tileVisible=new Ce,this.tileFailed=new Ce,this.tileUnload=new Ce,this.loadProgress=new Ce,this.allTilesLoaded=new Ce,this.initialTilesLoaded=new Ce;let i=this._provider;FIt(this,i)}function FIt(e,t){let{shape:n,minBounds:i=qa.getMinBounds(n),maxBounds:o=qa.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=m.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=m.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=X.clone(e._modelMatrix,e._exaggeratedModelMatrix),LEe(e,t);let r=qa.getShapeConstructor(n);e._shape=new r,e._shapeVisible=REe(e,e._shape,t)}Object.defineProperties(Pp.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=Z.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=m.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=m.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=m.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=m.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=Pp.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var PIt=new ce,MIt=new ce,vIt=new X,NIt=new X,DIt=new X,QIt=X.fromRotationTranslation($.fromUniformScale(.5,new $),new m(.5,.5,.5),new X),UIt=X.fromRotationTranslation($.fromUniformScale(2,new $),new m(-1,-1,-1),new X);Pp.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){KIt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}HIt(this,e);let i=LEe(this,t),o=this._shape;if(i&&(this._shapeVisible=REe(this,o,t),jIt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=qIt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&s_t(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),$It(this,e)&&(this._shaderDirty=!0);let d=s.leafNodeTexture,u=this._uniforms;l(d)&&(u.octreeLeafNodeTexture=s.leafNodeTexture,u.octreeLeafNodeTexelSizeUv=D.clone(s.leafNodeTexelSizeUv,u.octreeLeafNodeTexelSizeUv),u.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(Tv(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,p=o.orientedBoundingBox,g=n_t(p,h,MIt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;u.ndcSpaceAxisAlignedBoundingBox=ce.clone(g,u.ndcSpaceAxisAlignedBoundingBox);let b=n.uniformState.inverseView;u.transformPositionViewToUv=X.multiplyTransformation(this._transformPositionWorldToUv,b,u.transformPositionViewToUv);let x=n.uniformState.view;u.transformPositionUvToView=X.multiplyTransformation(x,this._transformPositionUvToWorld,u.transformPositionUvToView);let I=n.uniformState.inverseViewRotation;u.transformDirectionViewToLocal=$.multiply(this._transformDirectionWorldToLocal,I,u.transformDirectionViewToLocal),u.cameraPositionUv=X.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,u.cameraPositionUv),u.cameraDirectionUv=$.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,u.cameraDirectionUv),u.cameraDirectionUv=m.normalize(u.cameraDirectionUv,u.cameraDirectionUv),u.stepSize=this._stepSizeMultiplier;let _=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;_.boundingVolume=o.boundingSphere,e.commandList.push(_)};var kIt=new m,K6=new m,YIt=new ge,OIt=new m;function HIt(e,t){if(e._exaggeratedMinBounds=m.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=m.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===qa.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=m.fromElements(1,1,t.verticalExaggeration,kIt);e._exaggeratedModelMatrix=X.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=X.multiplyByTranslation(e._exaggeratedModelMatrix,zIt(e,t),e._exaggeratedModelMatrix)}}function zIt(e,t){let{shapeTransform:n=X.IDENTITY,globalTransform:i=X.IDENTITY}=e._provider,o=X.getTranslation(n,K6),r=X.multiplyByPoint(e._modelMatrix,o,K6),s=X.multiplyByPoint(i,r,K6),c=ie.WGS84.cartesianToCartographic(s,YIt),d=0;l(c)&&(d=c.height);let u=Mr.getHeight(d,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return m.fromElements(0,0,(u-d)/t.verticalExaggeration,OIt)}function KIt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=U.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ke(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let d=`u_${c}`;s[d]=function(){return r[c]}}if(e._dimensions=m.clone(t.dimensions,e._dimensions),i.dimensions=m.clone(e._dimensions,i.dimensions),e._paddingBefore=m.clone(t.paddingBefore??m.ZERO,e._paddingBefore),i.paddingBefore=m.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=m.clone(t.paddingAfter??m.ZERO,e._paddingAfter),i.paddingAfter=m.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=m.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=m.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===Um.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=m.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new wv(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,JIt(e._traversal,i)}function LEe(e,t){let n=t.shapeTransform??X.IDENTITY,i=t.globalTransform??X.IDENTITY;return X.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),X.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),t_(e,"_compoundModelMatrix","_compoundModelMatrixOld")+t_(e,"_minBounds","_minBoundsOld")+t_(e,"_maxBounds","_maxBoundsOld")+t_(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+t_(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+t_(e,"_minClippingBounds","_minClippingBoundsOld")+t_(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function t_(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function REe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=X.inverse(o,vIt);return e._transformPositionWorldToUv=X.multiplyTransformation(QIt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=X.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=X.multiplyTransformation(o,UIt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=X.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function JIt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=D.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=D.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=D.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=D.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=D.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=D.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function jIt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ke(n,!0)),i}function qIt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=j.secondsDifference(i.stop,i.start),a=j.secondsDifference(n,i.start)/r;return o+a}function $It(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=X.transpose(X.multiplyTransformation(X.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}Pp.prototype.isDestroyed=function(){return!1};Pp.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),me(this)};var SEe=new Array(new ce(-1,-1,-1,1),new ce(1,-1,-1,1),new ce(-1,1,-1,1),new ce(1,1,-1,1),new ce(-1,-1,1,1),new ce(1,-1,1,1),new ce(-1,1,1,1),new ce(1,1,1,1)),e_t=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),t_t=new Array(new ce,new ce,new ce,new ce,new ce,new ce,new ce,new ce);function n_t(e,t,n){let i=X.fromRotationTranslation(e.halfAxes,e.center,NIt),o=X.multiply(t,i,DIt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,d,u=t_t,h=SEe.length;for(d=0;d<h;d++)X.multiplyByVector(o,SEe[d],u[d]);for(d=0;d<h;d++){let p=u[d];if(p.z>=-p.w){let g=p.x/p.w,f=p.y/p.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,f),c=Math.max(c,f)}else for(let g=0;g<3;g++){let f=e_t[d*3+g],b=u[f];if(b.z>=-b.w){let x=p.z+p.w,I=b.z+b.w,_=x/(x-I),E=ce.lerp(p,b,_,PIt),S=E.x/E.w,R=E.y/E.w;r=Math.min(r,S),s=Math.max(s,S),a=Math.min(a,R),c=Math.max(c,R)}}}return r=Z.clamp(r,-1,1),a=Z.clamp(a,-1,1),s=Z.clamp(s,-1,1),c=Z.clamp(c,-1,1),n=ce.fromElements(r,a,s,c,n),n}var J6=3e7,i_t=new m(J6,0,0),o_t=new m(0,J6,0),r_t=new m(0,0,J6);function s_t(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,d,u,h){i.add({positions:[c,d],width:h,material:so.fromType("Color",{color:u})})}function r(c,d,u){let h=c.computeCorners();o(h[0],h[1],d,u),o(h[2],h[3],d,u),o(h[4],h[5],d,u),o(h[6],h[7],d,u),o(h[0],h[2],d,u),o(h[4],h[6],d,u),o(h[1],h[3],d,u),o(h[5],h[7],d,u),o(h[0],h[4],d,u),o(h[2],h[6],d,u),o(h[1],h[5],d,u),o(h[3],h[7],d,u)}function s(c){if(!n.isRenderable(c))return;let d=c.level,h=Math.max(1,5/Math.pow(2,d)),g=[U.RED,U.LIME,U.BLUE][d%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let f=0;f<8;f++)s(c.children[f])}r(e._shape.orientedBoundingBox,U.WHITE,5),s(n.rootNode);let a=10;o(m.ZERO,i_t,U.RED,a),o(m.ZERO,o_t,U.LIME,a),o(m.ZERO,r_t,U.BLUE,a),i.update(t)}Pp.DefaultCustomShader=new KI({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function VEe(){this.ready=!0,this.shape=qa.BOX,this.dimensions=new m(1,1,1),this.names=["data"],this.types=[bt.SCALAR],this.componentTypes=[Ut.FLOAT32],this.maximumTileCount=1}VEe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new JI({metadata:[new Float32Array(1)]});return Promise.resolve(n)};Pp.DefaultProvider=new VEe;var by=Pp;var _4i=y(C(),1);function a_t(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var Xv=a_t;var T4i=y(C(),1);function c_t(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var Wv=c_t;var R4i=y(C(),1);function l_t(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var Fv=l_t;var VY=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function Ei(e){e=e??Y.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof aP;if(o)this._context=e.contextOptions.createSceneContext(t);else{let d=ke(e.contextOptions);this._context=new xI(t,d)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=qn(),this._jobScheduler=new hM,this._frameState=new uM(r,new nM(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new nP(r),this._ellipsoid=e.ellipsoid??ie.default,this._globe=void 0,this._globeTranslucencyState=new mM,this._primitives=new Wl({countReferences:o}),this._groundPrimitives=new Wl({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=Ei.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new kI,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new cM(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new xi({color:new U,stencil:0,owner:this}),this._depthClearCommand=new xi({depth:1,owner:this}),this._stencilClearCommand=new xi({stencil:0}),this._classificationStencilClearCommand=new xi({stencil:0,renderState:Qe.fromCache({stencilMask:jt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new qM(this),this._preUpdate=new Ce,this._postUpdate=new Ce,this._renderError=new Ce,this._preRender=new Ce,this._postRender=new Ce,this._minimumDisableDepthTestDistance=0,this._debugInspector=new av,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new Ce,this.morphComplete=new Ce,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=U.clone(U.BLACK),this._mode=re.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Di(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new JC,this.fog=new dM,this.fog.enabled=ie.WGS84.equals(this._ellipsoid),ie.WGS84.equals(this._ellipsoid)||(xo.DEFAULT_VIEW_RECTANGLE=le.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new xo(this),this.shadowMap=new Hg({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=U.clone(U.WHITE),this._actualInvertClassificationColor=U.clone(this._invertClassificationColor),this._invertClassification=new uL,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new KM,this._brdfLutGenerator=new JP,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new nv(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??_d.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Sc.requestCompletedEvent.addEventListener(VY(this)),this._removeTaskProcessorListenerCallback=hi.taskCompletedEvent.addEventListener(VY(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Ke(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new xo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new xo(this),this.preloadFlightCullingVolume=void 0,this._picking=new LM(this),this._defaultView=new FI(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new Ng,WEe(this,0,j.now()),this.updateFrameState(),this.initializeFrame()}Ei.defaultLogDepthBuffer=!0;function d_t(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(VY(e))),n.push(t.terrainProviderChanged.addEventListener(VY(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(Ei.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Kt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Kt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return ph.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,d_t(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===re.SCENE2D?this.morphTo2D(0):e===re.SCENE3D?this.morphTo3D(0):e===re.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new xo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new lM(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,Kt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});Ei.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function u_t(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function GEe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=Vp.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=Vp.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=Vp.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=Vp.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Hg.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Ge.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}Ei.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,d=l(t.logDepth),u=l(t.hdr),h=l(t.originalCommand),p=o&&!d,g=c&&!u,f=(!o||!c)&&!h,b=n.pickingMetadata&&u_t(e,n);if(e.dirty=e.dirty||p||g||f||b,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:x,shadowMaps:I}=i;x&&e.castShadows&&(t.shadows=Hg.createCastDerivedCommand(I,e,s,r,t.shadows)),(d||p)&&(t.logDepth=Vp.createLogDepthCommand(e,r,t.logDepth),GEe(this,t.logDepth.command,s)),(h||f)&&GEe(this,e,s)};var m_t=new vm({pass:zo.RENDER}),j6=new vm({pass:zo.PRELOAD}),q6=new vm({pass:zo.PRELOAD_FLIGHT}),h_t=new vm({pass:zo.REQUEST_RENDER_MODE_DEFER_CHECK}),ZEe=new ue,$6;function f_t(e){if(!(e._mode!==re.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return ZEe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,$6=zP.fromBoundingSphere(ZEe,e.camera.positionWC,$6),$6}Ei.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function WEe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=j.clone(n,i.time)}Ei.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=f_t(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof gn||this.camera.frustum instanceof qr),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=U.clone(this.invertClassificationColor,this._actualInvertClassificationColor),uL.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};Ei.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===on.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var RY=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);RY=X.inverseTransformation(RY,RY);function p_t(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=m.clone(s.center);if(o.mode!==re.SCENE3D){a=X.multiplyByPoint(RY,a,a);let f=o.mapProjection,b=f.unproject(a);a=f.ellipsoid.cartographicToCartesian(b)}let c,d,{radius:u}=s;l(u)?(c=xa.createGeometry(new xa({radii:new m(u,u,u),vertexFormat:yn.FLAT_VERTEX_FORMAT})),d=X.fromTranslation(a)):(c=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:yn.FLAT_VERTEX_FORMAT})),d=X.fromRotationTranslation(s.halfAxes,a,new X)),t._debugVolume=new Nn({geometryInstances:new wt({geometry:Yn.toWireframe(c),modelMatrix:d,attributes:{color:new tn(1,0,0,1)}}),appearance:new yn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,p=o.commandList=[];t._debugVolume.update(o),e=p[0],o.useLogDepth&&(e=Vp.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function gf(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof xi){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&p_t(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function BEe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function FEe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var A_t=new m;function wEe(e,t){let n=m.subtract(e,t,A_t),i=Math.max(0,m.magnitude(n));return i*i}function g_t(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return wEe(o.center,n)-wEe(i.center,n)}function b_t(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+Z.EPSILON12}function y_t(e,t,n,i,o){Sp(i,FEe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function C_t(e,t,n,i,o){Sp(i,b_t,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function x_t(e,t,n){e.context.uniformState.updatePass(Ge.VOXELS);let i=n.commands[Ge.VOXELS];i.length=n.indices[Ge.VOXELS],Sp(i,FEe,e.camera.positionWC);for(let o=0;o<i.length;++o)gf(i[o],e,t)}function I_t(e,t,n){e.context.uniformState.updatePass(Ge.GAUSSIAN_SPLATS);let i=n.commands[Ge.GAUSSIAN_SPLATS];i.length=n.indices[Ge.GAUSSIAN_SPLATS],Sp(i,g_t,e.camera.positionWC);for(let o=0;o<i.length;++o)gf(i[o],e,t)}var __t=new Ni,E_t=new vl,T_t=new gn,S_t=new qr;function L_t(e){let{frustum:t}=e;return l(t.fov)?t.clone(__t):l(t.infiniteProjectionMatrix)?t.clone(E_t):l(t.width)?t.clone(T_t):t.clone(S_t)}function R_t(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?y_t:C_t}function V_t(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let d=R_t(e);o.uniformState.updatePass(Ge.TRANSLUCENT);let u=n.commands[Ge.TRANSLUCENT];u.length=n.indices[Ge.TRANSLUCENT],d(e,gf,t,u,c)}function G_t(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Ge.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Ge.TRANSLUCENT];i.executeTranslucentCommands(e,gf,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,gf,t,n)}function tq(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=L_t(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||Z_t(e,t);let{clearGlobeDepth:d,renderTranslucentDepthForPick:u,useDepthPlane:h,useGlobeDepthFramebuffer:p,useInvertClassification:g,usePostProcessSelected:f}=e._environmentState,{globeDepth:b,globeTranslucencyFramebuffer:x,sceneFramebuffer:I,frustumCommandsList:_}=e._view,E=_.length,S=e._globeTranslucencyState,R=e._depthClearCommand,G=e._stencilClearCommand,B=e._classificationStencilClearCommand,w=e._depthPlane,F=n.position.z;function P(T,L){r.updatePass(L);let V=T.commands[L],W=T.indices[L];for(let M=0;M<W;++M)gf(V[M],e,t);return W}function A(T,L){r.updatePass(L);let V=T.commands[L],W=T.indices[L];for(let M=0;M<W;++M)BEe(V[M],e,t)}for(let T=0;T<E;++T){let L=E-T-1,V=_[L];e.mode===re.SCENE2D?(n.position.z=F-V.near+1,s.far=Math.max(1,V.far-V.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=L!==0?V.near*e.opaqueFrustumNearOffset:V.near,s.far=V.far,r.updateFrustum(s)),R.execute(i,t),i.stencilBuffer&&G.execute(i,t),S.translucent?(r.updatePass(Ge.GLOBE),S.executeGlobeCommands(V,gf,x,e,t)):P(V,Ge.GLOBE),p&&b.executeCopyDepth(i,t),u||(S.translucent?(r.updatePass(Ge.TERRAIN_CLASSIFICATION),S.executeGlobeClassificationCommands(V,gf,x,e,t)):P(V,Ge.TERRAIN_CLASSIFICATION)),d&&(R.execute(i,t),h&&w.execute(i,t));let W;if(!g||c||u)W=P(V,Ge.CESIUM_3D_TILE),W>0&&(p&&(b.prepareColorTextures(i,d),b.executeUpdateDepth(i,t,b.depthStencilTexture)),u||(W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let Q=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,W=P(V,Ge.CESIUM_3D_TILE),p&&(e._invertClassification.prepareTextures(i),b.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=Q,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),W>0&&i.stencilBuffer&&B.execute(i,t),W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION)}if(W>0&&i.stencilBuffer&&G.execute(i,t),x_t(e,t,V),P(V,Ge.OPAQUE),I_t(e,t,V),L!==0&&e.mode!==re.SCENE2D&&(s.near=V.near,r.updateFrustum(s)),V_t(e,t,V),G_t(e,t,V),i.depthTexture&&e.useDepthPicking&&(p||u)){let Q=e._picking.getPickDepth(e,L);Q.update(i,b.depthStencilTexture),Q.executeCopyDepth(i,t)}if(c||!f)continue;let M=t.framebuffer;t.framebuffer=I.getIdFramebuffer(),s.near=L!==0?V.near*e.opaqueFrustumNearOffset:V.near,s.far=V.far,r.updateFrustum(s),S.translucent?(r.updatePass(Ge.GLOBE),S.executeGlobeCommands(V,BEe,x,e,t)):A(V,Ge.GLOBE),d&&(R.framebuffer=t.framebuffer,R.execute(i,t),R.framebuffer=void 0),d&&h&&w.execute(i,t),A(V,Ge.CESIUM_3D_TILE),A(V,Ge.OPAQUE),A(V,Ge.TRANSLUCENT),t.framebuffer=M}}function Z_t(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Ge.ENVIRONMENT),l(i.skyBoxCommand)&&gf(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&gf(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function PEe(e){e.context.uniformState.updatePass(Ge.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function B_t(e,t){e.context.uniformState.updatePass(Ge.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function w_t(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Ge.GLOBE,Ge.CESIUM_3D_TILE,Ge.OPAQUE,Ge.TRANSLUCENT];for(let c=0;c<t.length;++c){let d=t[c];if(e.updateDerivedCommands(d),!(!d.castShadows||a.indexOf(d.pass)<0||!e.isVisible(i,d)))if(o)for(let u=0;u<s;++u)r[u].commandList.push(d);else if(s===1)r[0].commandList.push(d);else{let u=!1;for(let h=s-1;h>=0;--h){let p=r[h].cullingVolume;if(e.isVisible(p,d))r[h].commandList.push(d),u=!0;else if(u)break}}}}function MEe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:d}=c;for(let u=0;u<d.length;++u)d[u].commandList.length=0;w_t(e,n,c);for(let u=0;u<d.length;++u){let h=c.passes[u],{camera:p,commandList:g}=h;s.updateCamera(p),c.updatePass(r,u);for(let f=0;f<g.length;++f){let b=g[f];s.updatePass(b.pass);let x=b.derivedCommands.shadows.castCommands[a];gf(x,e,h.passState)}}}}var X_t=new m;Ei.prototype.updateAndExecuteCommands=function(e,t){H_t(this,e,t),this._environmentState.useWebVR?W_t(this,e,t):this._frameState.mode!==re.SCENE2D||this._mapMode2D===_d.ROTATE?yy(!0,this,e):k_t(this,e)};function W_t(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;vEe(e),n.createPotentiallyVisibleSet(e),PEe(e),r||MEe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=xo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,d=c*(e.focalLength??5),u=e.eyeSeparation??d/30,h=m.multiplyByScalar(a.right,u*.5,X_t);i.frustum.aspectRatio=s.width/s.height;let p=.5*u*c/d;m.add(a.position,h,i.position),i.frustum.xOffset=p,tq(e,t),s.x=s.width,m.subtract(a.position,h,i.position),i.frustum.xOffset=-p,tq(e,t),xo.clone(a,i)}var F_t=new ge(Math.PI,Z.PI_OVER_TWO),P_t=new m,M_t=new m,v_t=new X,N_t=new X,D_t=new m,Q_t=new m,U_t=new Ke;function k_t(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Ke.clone(r,U_t);t.viewport=s;let a=F_t,c=P_t;e.mapProjection.project(a,c);let u=m.clone(i.position,M_t),h=X.clone(i.transform,N_t),p=i.frustum.clone();i._setTransform(X.IDENTITY);let g=X.computeViewportTransformation(s,0,1,v_t),f=i.frustum.projectionMatrix,b=i.positionWC.y,x=m.fromElements(Z.sign(b)*c.x-b,0,-i.positionWC.x,D_t),I=Dt.pointToGLWindowCoordinates(f,g,x,Q_t);I.x=Math.floor(I.x);let _=s.x,E=s.width;if(b===0||I.x<=_||I.x>=_+E)yy(!0,e,t);else if(Math.abs(_+E*.5-I.x)<1)s.width=I.x-s.x,i.position.x*=Z.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=I.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t);else if(I.x>_+E*.5){s.width=I.x-_;let S=i.frustum.right;i.frustum.right=c.x-b,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=I.x,s.width=_+E-I.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=S-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t)}else{s.x=I.x,s.width=_+E-I.x;let S=i.frustum.left;i.frustum.left=-c.x-b,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=_,s.width=I.x-_,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=S-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t)}i._setTransform(h),m.clone(u,i.position),i.frustum=p.clone(),t.viewport=r}function yy(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),vEe(t),i.createPotentiallyVisibleSet(t),e&&(PEe(t),o||MEe(t)),tq(t,n)}var XEe=new Xs;Ei.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==re.SCENE2D&&t.camera.frustum instanceof gn||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(GA.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let I=r.dynamicLighting;s.setDynamicLighting(I),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let x=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(x)?x.drawCommand:void 0,n.sunComputeCommand=l(x)?x.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let d=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===re.SCENE2D);(n.useDepthPlane=d&&this.mode===re.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==re.SCENE2D&&!o;let h=e.mode===re.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,p=e.cullingVolume,g=XEe.planes;for(let x=0;x<5;++x)g[x]=p.planes[x];p=XEe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(p,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(p,n.moonCommand,h);let f=this.specularEnvironmentMaps,b=this._specularEnvironmentCubeMap;l(f)&&b?.url!==f?(b=b&&b.destroy(),this._specularEnvironmentCubeMap=new ph(f)):!l(f)&&l(b)&&(b.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Y_t(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new Rp({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function O_t(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===re.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function vEe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Y_t(e),O_t(e),e._globe&&e._globe.render(t)}function H_t(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let d=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!d?e._sunPostProcess=new rv:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let u=e._clearColorCommand;U.clone(n,u.color),u.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let p=s.oit,g=r.useOIT=!c&&l(p)&&p.isSupported();g&&(p.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),p.clear(i,t,n),r.useOIT=p.isSupported());let f=e.postProcessStages,b=r.usePostProcess=!c&&(e._hdr||f.length>0||f.ambientOcclusion.enabled||f.fxaa.enabled||f.bloom.enabled);if(r.usePostProcessSelected=!1,b&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),f.update(i,o.useLogDepth,e._hdr),f.clear(i),b=r.usePostProcess=f.ready,r.usePostProcessSelected=b&&f.hasSelected),r.isSunVisible&&e.sunBloom&&!d?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:b&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&u.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let I;if(o.invertClassificationColor.alpha===1&&h&&(I=s.globeDepth.framebuffer),l(I)||i.depthTexture){if(e._invertClassification.previousFramebuffer=I,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let _=e._invertClassification.unclassifiedCommand,E=_.derivedCommands;E.oit=p.createDerivedCommands(_,i,E.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}Ei.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:d}=n,u=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,p=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:d,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=u);let f=this.postProcessStages,b=g.getColorTexture(0),x=p.getColorTexture(0),I=(u??h).getDepthStencilTexture();f.execute(t,b,I,x),f.copy(t,d)}!s&&!c&&a&&(e.framebuffer=d,o.executeCopyColor(t,e))};function z_t(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function K_t(e){if(e.mode===re.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function NEe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof Wl){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=NEe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}Ei.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===et.CLAMP_TO_TERRAIN||t===et.RELATIVE_TO_TERRAIN,i=t===et.CLAMP_TO_3D_TILE||t===et.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=NEe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var eq=new ge;Ei.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{ge.clone(e,eq);let f;l(g)&&(f=g.height),l(f)||(f=this.getHeight(e,n)),l(f)&&(eq.height=f,t(eq))},r=n===et.CLAMP_TO_TERRAIN||n===et.RELATIVE_TO_TERRAIN,s=n===et.CLAMP_TO_3D_TILE||n===et.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},d=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let f=g.updateHeight(e,o,i);c[g.id]=f};if(!r){let g=this.primitives.length;for(let f=0;f<g;++f){let b=this.primitives.get(f);d(b)}}let u=this.primitives.primitiveAdded.addEventListener(d),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},u(),h()}};function J_t(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===re.SCENE2D||n===re.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}Ei.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=K_t(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=J_t(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function j_t(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new kg({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function q_t(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function $_t(e){e.primitives.postPassesUpdate(e._frameState),Sc.update()}var eEt=new U;function tEt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=m_t;let r=e.backgroundColor??U.BLACK;e._hdr&&(r=U.clone(r,eEt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof Ng?m.negate(i.sunDirectionWC,e._shadowMapCamera.direction):m.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Ke.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,B_t(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function n_(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function nEt(e){return e._picking.updateMostDetailedRayPicks(e)}Ei.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=j.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===re.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(j.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=j.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=Z.incrementWrap(t.frameNumber,15e6,1);WEe(this,o,e),t.newFrame=!0}n_(this,q_t),this.primitives.show&&(n_(this,nEt),n_(this,iEt),n_(this,oEt),i||n_(this,rEt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),n_(this,tEt)),j_t(this,i),n_(this,$_t),z_t(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};Ei.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};Ei.prototype.requestRender=function(){this._renderRequested=!0};Ei.prototype.clampLineWidth=function(e){return Math.max(Kt.minimumAliasedLineWidth,Math.min(e,Kt.maximumAliasedLineWidth))};Ei.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};Ei.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof by))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return cv.fromKeyframeNode(o,s,c,a)};Ei.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=Xv(s,t,n,i);if(!l(a))return;let c=Fv(r,n,i);if(!l(c))return;let d=new Wv(t,n,i,a,c);return this._picking.pickMetadata(this,e,d)};Ei.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};Ei.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};Ei.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};Ei.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function iEt(e){let t=e._frameState;j6.camera=t.camera,j6.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,j6)}function oEt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;q6.camera=e.preloadFlightCamera,q6.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,q6)}function rEt(e){e.primitives.updateForPass(e._frameState,h_t)}Ei.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};Ei.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};Ei.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};Ei.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};Ei.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};Ei.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};Ei.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};Ei.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};Ei.prototype.cartesianToCanvasCoordinates=function(e,t){return to.worldToWindowCoordinates(this,e,t)};Ei.prototype.completeMorph=function(){this._transitioner.completeMorph()};Ei.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};Ei.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};Ei.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function sEt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}Ei.prototype.setTerrain=function(e){return sEt(this,e),e};Ei.prototype.isDestroyed=function(){return!1};Ei.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),me(this)};var Pv=Ei;var R8i=y(C(),1);function CL(e){e=e??ie.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=m.multiplyByScalar(e.radii,t,new m);this._scaleMatrix=X.fromScale(n),this._modelMatrix=new X,this._command=new ot({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new m(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new m(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new m;let i=new m;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(CL.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});CL.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var nq=new X;CL.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==re.SCENE3D&&n!==re.MORPHING||!e.passes.render)return;let i=X.fromRotationTranslation(e.context.uniformState.inverseViewRotation,m.ZERO,nq),o=X.multiplyTransformation(i,ho.Y_UP_TO_Z_UP,nq),r=X.multiply(this._scaleMatrix,o,nq);X.clone(r,this._modelMatrix);let s=e.context,a=aEt(this),c=e.globeTranslucencyState.translucent,d=this.perFragmentAtmosphere||c||!l(t)||!t.show,u=this._command;if(!l(u.vertexArray)){let p=xa.createGeometry(new xa({radii:new m(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:we.POSITION_ONLY}));u.vertexArray=ui.fromGeometry({context:s,geometry:p,attributeLocations:Yn.createAttributeLocations(p),bufferUsage:Ne.STATIC_DRAW}),u.renderState=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},blending:bn.ALPHA_BLEND,depthMask:!1})}let h=a|d<<2|c<<3;if(h!==this._flags){this._flags=h;let p=[];a&&p.push("COLOR_CORRECT"),d&&p.push("PER_FRAGMENT_ATMOSPHERE"),c&&p.push("GLOBE_TRANSLUCENT");let g=new Oe({defines:p,sources:[_h,$S,IP]}),f=new Oe({defines:p,sources:[_h,$S,xP]});this._spSkyAtmosphere=ln.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:f}),u.shaderProgram=this._spSkyAtmosphere}return u};function aEt(e){return!(Z.equalsEpsilon(e.hueShift,0,Z.EPSILON7)&&Z.equalsEpsilon(e.saturationShift,0,Z.EPSILON7)&&Z.equalsEpsilon(e.brightnessShift,0,Z.EPSILON7))}CL.prototype.isDestroyed=function(){return!1};CL.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),me(this)};var Mv=CL;var J8i=y(C(),1);function IL(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new ot({modelMatrix:X.clone(X.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}IL.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==re.SCENE3D&&i!==re.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?cP(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new Pr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:we.POSITION_ONLY})),c=this._attributeLocations=Yn.createAttributeLocations(a);s.vertexArray=ui.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Ne.STATIC_DRAW}),s.renderState=Qe.fromCache({blending:bn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new Oe({defines:[t?"HDR":""],sources:[_P]});s.shaderProgram=ln.fromCache({context:r,vertexShaderSource:EP,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};IL.prototype.isDestroyed=function(){return!1};IL.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),me(this)};function xL(e){return hn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}IL.createEarthSkyBox=function(){return new IL({sources:{positiveX:xL("px"),negativeX:xL("mx"),positiveY:xL("py"),negativeY:xL("my"),positiveZ:xL("pz"),negativeZ:xL("mz")}})};var vv=IL;var T7i=y(C(),1);function Dv(){this.show=!0,this._drawCommand=new ot({primitiveType:We.TRIANGLES,boundingVolume:new ue,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new ue,this._boundingVolume2D=new ue,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(Dv.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var cEt=new D,lEt=new D,dEt=new ce,Nv=new ce;Dv.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===re.SCENE2D||i===re.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let S=Math.max(r,s);S=Math.pow(2,Math.ceil(Math.log(S)/Math.log(2))-2),S=Math.max(1,S);let R=n?o.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._texture=new Wt({context:o,width:S,height:S,pixelFormat:tt.RGBA,pixelDatatype:R}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let G=this,B={u_radiusTS:function(){return G._radiusTS}};this._commands.computeCommand=new Il({fragmentShaderSource:SP,outputTexture:this._texture,uniformMap:B,persists:!1,owner:this,postExecute:function(){G._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let S={direction:0},R=new Uint8Array(8);R[0]=0,R[1]=0,R[2]=255,R[3]=0,R[4]=255,R[5]=255,R[6]=0,R[7]=255;let G=It.createVertexBuffer({context:o,typedArray:R,usage:Ne.STATIC_DRAW}),B=[{index:S.direction,vertexBuffer:G,componentsPerAttribute:2,normalize:!0,componentDatatype:J.UNSIGNED_BYTE}],w=It.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});a.vertexArray=new ui({context:o,attributes:B,indexBuffer:w}),a.shaderProgram=ln.fromCache({context:o,vertexShaderSource:LP,fragmentShaderSource:TP,attributeLocations:S}),a.renderState=Qe.fromCache({blending:bn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,d=o.uniformState.sunPositionColumbusView,u=this._boundingVolume,h=this._boundingVolume2D;m.clone(c,u.center),h.center.x=d.z,h.center.y=d.x,h.center.z=d.y,u.radius=Z.SOLAR_RADIUS+Z.SOLAR_RADIUS*this._glowLengthTS,h.radius=u.radius,i===re.SCENE3D?ue.clone(u,a.boundingVolume):i===re.COLUMBUS_VIEW&&ue.clone(h,a.boundingVolume);let p=to.computeActualEllipsoidPosition(e,c,Nv),g=m.magnitude(m.subtract(p,e.camera.position,Nv)),f=o.uniformState.projection,b=dEt;b.x=0,b.y=0,b.z=-g,b.w=1;let x=X.multiplyByVector(f,b,Nv),I=to.clipToGLWindowCoordinates(t.viewport,x,cEt);b.x=Z.SOLAR_RADIUS;let _=X.multiplyByVector(f,b,Nv),E=to.clipToGLWindowCoordinates(t.viewport,_,lEt);return this._size=D.magnitude(D.subtract(E,I,Nv)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};Dv.prototype.isDestroyed=function(){return!1};Dv.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),me(this)};var Qv=Dv;var G6i=y(C(),1);var m6i=y(C(),1);var UEe=y(T9(),1);var L7i=y(C(),1);function uEt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var Uv=uEt;var G7i=y(C(),1);var mEt={modifyFragmentShader:function(t){return t=Oe.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},_L=mEt;var i_={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function kv(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=U.clone(U.DARKGRAY),this._highlightColor=U.clone(U.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=i_.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Ge.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=X.clone(X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.time=0,this.shadows=Gn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??Ir.NONE,this._splittingEnabled=!1,this._error=void 0,hEt(this,e)}Object.defineProperties(kv.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return U.clone(this._highlightColor)},set:function(e){this._highlightColor=U.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=ue.clone(e,this._boundingSphere)}}});function hEt(e,t){let n=ux.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=bA.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=i_.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=U.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var fEt=new m,pEt=new m,AEt=new m,DEe,GY;function gEt(e){if(!l(GY)){DEe=new UEe.default(0),GY=new Array(e);for(let t=0;t<e;++t)GY[t]=DEe.random()}return GY}function bEt(e){let n=e.length/3,i=Math.min(n,20),o=gEt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=m.fromElements(r,r,r,fEt),c=m.fromElements(s,s,s,pEt);for(let u=0;u<i;++u){let h=Math.floor(o[u]*n),p=m.unpack(e,h*3,AEt);m.minimumByComponent(a,p,a),m.maximumByComponent(c,p,c)}let d=ue.fromCornerPoints(a,c);return d.radius+=Z.EPSILON2,d}function QEe(e,t){let n=J.fromTypedArray(e);return n===J.INT||n===J.UNSIGNED_INT||n===J.DOUBLE?(xt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var yEt=new ce,CEt=new ce,xEt=new U,kEe=0,ZY=1,aq=2,YEe=3,IEt=4,iq=new X,_Et=new X;function EEt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,d=i.styleableProperties,u=l(d),h=e._isQuantized,p=e._isQuantizedDraco,g=e._isOctEncoded16P,f=e._isOctEncodedDraco,b=e._quantizedRange,x=e._octEncodedRange,I=e._isRGB565,_=e._isTranslucent,E=e._hasColors,S=e._hasNormals,R=e._hasBatchIds,G,B,w=[],F={};if(e._styleableShaderAttributes=F,u){let N=IEt;for(let k in d)if(d.hasOwnProperty(k)){let v=d[k],O=QEe(v.typedArray,k);G=v.componentCount,B=J.fromTypedArray(O);let H=It.createVertexBuffer({context:n,typedArray:O,usage:Ne.STATIC_DRAW});e._geometryByteLength+=H.sizeInBytes;let ee={index:N,vertexBuffer:H,componentsPerAttribute:G,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0};w.push(ee),F[k]={location:N,componentCount:G},++N}}let P=It.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Ne.STATIC_DRAW});e._geometryByteLength+=P.sizeInBytes;let A;E&&(A=It.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=A.sizeInBytes);let T;S&&(T=It.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let L;R&&(c.typedArray=QEe(c.typedArray,"batchIds"),L=It.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=L.sizeInBytes);let V=[];if(h?B=J.UNSIGNED_SHORT:p?B=b<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT:B=J.FLOAT,V.push({index:kEe,vertexBuffer:P,componentsPerAttribute:3,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||p?e._boundingSphere=ue.fromCornerPoints(m.ZERO,e._quantizedVolumeScale):e._boundingSphere=bEt(r.typedArray)),E)if(I)V.push({index:ZY,vertexBuffer:A,componentsPerAttribute:1,componentDatatype:J.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let N=_?4:3;V.push({index:ZY,vertexBuffer:A,componentsPerAttribute:N,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}S&&(g?(G=2,B=J.UNSIGNED_BYTE):f?(G=2,B=x<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT):(G=3,B=J.FLOAT),V.push({index:aq,vertexBuffer:T,componentsPerAttribute:G,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0})),R&&V.push({index:YEe,vertexBuffer:L,componentsPerAttribute:1,componentDatatype:J.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),u&&(V=V.concat(w));let W=new ui({context:n,attributes:V}),M={depthTest:{enabled:!0}},Q={depthTest:{enabled:!0},depthMask:!1,blending:bn.ALPHA_BLEND};e._opaquePass===Ge.CESIUM_3D_TILE&&(M.stencilTest=jt.setCesium3DTileBit(),M.stencilMask=jt.CESIUM_3D_TILE_MASK,Q.stencilTest=jt.setCesium3DTileBit(),Q.stencilMask=jt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Qe.fromCache(M),e._translucentRenderState=Qe.fromCache(Q),e._drawCommand=new ot({boundingVolume:new ue,cull:e._cull,modelMatrix:new X,primitiveType:We.POINTS,vertexArray:W,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:_?e._translucentRenderState:e._opaqueRenderState,pass:_?Ge.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function TEt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=yEt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,d;t.mode===re.SCENE2D||c instanceof gn?d=Number.POSITIVE_INFINITY:d=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=d}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return U.TRANSPARENT;let c=U.clone(a.edgeColor,xEt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return X.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;X.multiply(n.uniformState.view3D,c,iq);let d=X.multiply(iq,a.modelMatrix,iq);return X.inverseTranspose(d,_Et)}};_L.addUniforms(e,s),(i||o||r)&&(s=Lt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=CEt;if(l(e._quantizedVolumeScale)){let c=m.clone(e._quantizedVolumeScale,a);m.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function oq(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function rq(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function sq(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var SEt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function LEt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,d=e._isQuantizedDraco,u=e._isOctEncoded16P,h=e._isOctEncodedDraco,p=e._isRGB565,g=e._isTranslucent,f=e._hasColors,b=e._hasNormals,x=e._hasBatchIds,I=e._backFaceCulling,_=e._normalShading,E=e._drawCommand.vertexArray,S=e.clippingPlanes,R=e._attenuation,G,B,w,F=g,P=ke(SEt),A={},T=e._styleableShaderAttributes;for(o in T)T.hasOwnProperty(o)&&(r=T[o],P[o]=`czm_3dtiles_property_${r.location}`,A[r.location]=r);if(a){let he={translucent:!1},xe="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";G=n.getColorShaderFunction(`getColorFromStyle${xe}`,P,he),B=n.getShowShaderFunction(`getShowFromStyle${xe}`,P,he),w=n.getPointSizeShaderFunction(`getPointSizeFromStyle${xe}`,P,he),l(G)&&he.translucent&&(F=!0)}e._styleTranslucent=F;let L=l(G),V=l(B),W=l(w),M=e.isClipped,Q=[],N=[];L&&(oq(G,Q),rq(G,N)),V&&(oq(B,Q),rq(B,N)),W&&(oq(w,Q),rq(w,N));let k=N.indexOf("COLOR")>=0,v=N.indexOf("NORMAL")>=0;if(v&&!b)throw new de("Style references the NORMAL semantic but the point cloud does not have normals");for(o in T)if(T.hasOwnProperty(o)){r=T[o];let he=Q.indexOf(r.location)>=0,xe=sq(E,r.location);xe.enabled=he}let O=f&&(!L||k);if(f){let he=sq(E,ZY);he.enabled=O}let H=b&&(_||I||v);if(b){let he=sq(E,aq);he.enabled=H}let ee={a_position:kEe};O&&(ee.a_color=ZY),H&&(ee.a_normal=aq),x&&(ee.a_batchId=YEe);let K="",te=Q.length;for(i=0;i<te;++i){let he=Q[i];r=A[he];let xe=r.componentCount,Te=`czm_3dtiles_property_${he}`,Be;xe===1?Be="float":Be=`vec${xe}`,K+=`in ${Be} ${Te}; +`,ee[Te]=r.location}TEt(e,t);let q=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;q+=`float u_pointSize; +float tiles3d_tileset_time; +`,R&&(q+=`float u_geometricError; +float u_depthMultiplier; +`),q+=K,O&&(g?q+=`in vec4 a_color; +`:p?q+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:q+=`in vec3 a_color; +`),H&&(u||h?q+=`in vec2 a_normal; +`:q+=`in vec3 a_normal; +`),x&&(q+=`in float a_batchId; +`),(c||d||h)&&(q+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),L&&(q+=G),V&&(q+=B),W&&(q+=w),q+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,R&&(q+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),O?g?q+=` vec4 color = a_color; +`:p?q+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:q+=` vec4 color = vec4(a_color, 1.0); +`:q+=` vec4 color = u_constantColor; +`,c||d?q+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:q+=` vec3 position = a_position; +`,q+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,H?(u?q+=` vec3 normal = czm_octDecode(a_normal); +`:h?q+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:q+=` vec3 normal = a_normal; +`,q+=` vec3 normalEC = czm_normal * normal; +`):q+=` vec3 normal = vec3(1.0); +`,L&&(q+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),V&&(q+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),W?q+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:R?q+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:q+=` gl_PointSize = u_pointSize; +`,q+=` color = color * u_highlightColor; +`,H&&_&&(q+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),q+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,H&&I&&(q+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),V&&(q+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),q+=`} +`;let pe=`in vec4 v_color; +`;M&&(pe+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,pe+=` +`,pe+=Qg(S,s),pe+=` +`),pe+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,M&&(pe+=Uv("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),pe+=`} +`,e.splitDirection!==Ir.NONE&&(pe=_L.modifyFragmentShader(pe)),l(e._vertexShaderLoaded)&&(q=e._vertexShaderLoaded(q)),l(e._fragmentShaderLoaded)&&(pe=e._fragmentShaderLoaded(pe));let ye=e._drawCommand;l(ye.shaderProgram)&&ye.shaderProgram.destroy(),ye.shaderProgram=ln.fromCache({context:s,vertexShaderSource:q,fragmentShaderSource:pe,attributeLocations:ee});try{ye.shaderProgram._bind()}catch{throw new de("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function REt(e,t){if(e._decodingState===i_.READY)return!1;if(e._decodingState===i_.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=TA.decodePointCloud(i,t);l(o)&&(e._decodingState=i_.DECODING,o.then(function(r){e._decodingState=i_.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,d=l(r.NORMAL)?r.NORMAL.array:void 0,u=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),p=l(d)&&l(r.NORMAL.data.quantization);if(h){let x=r.POSITION.data.quantization,I=x.range;e._quantizedVolumeScale=m.fromElements(I,I,I),e._quantizedVolumeOffset=m.unpack(x.minValues),e._quantizedRange=(1<<x.quantizationBits)-1,e._isQuantizedDraco=!0}p&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,f=i.batchTableProperties;for(let x in f)if(f.hasOwnProperty(x)){let I=r[x];l(g)||(g={}),g[x]={typedArray:I.array,componentCount:I.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let b=c??a;l(b)&&(n.colors={typedArray:b}),l(d)&&(n.normals={typedArray:d}),l(u)&&(n.batchIds={typedArray:u}),n.styleableProperties=g}).catch(function(r){e._decodingState=i_.FAILED,e._error=r}))}return!0}var VEt=new ce,GEt=new m;kv.prototype.update=function(e){let t=e.context;if(l(this._error)){let d=this._error;throw this._error=void 0,d}if(REt(this,t))return;let i=!1,o=!X.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(EEt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){X.clone(this.modelMatrix,this._modelMatrix);let d=this._drawCommand.modelMatrix;if(X.clone(this._modelMatrix,d),l(this._rtcCenter)&&X.multiplyByTranslation(d,this._rtcCenter,d),l(this._quantizedVolumeOffset)&&X.multiplyByTranslation(d,this._quantizedVolumeOffset,d),e.mode!==re.SCENE3D){let h=e.mapProjection,p=X.getColumn(d,3,VEt);ce.equals(p,ce.UNIT_W)||Dt.basisTo2D(h,d,d)}let u=this._drawCommand.boundingVolume;if(ue.clone(this._boundingSphere,u),this._cull){let h=u.center;X.multiplyByPoint(d,h,h);let p=X.getScale(d,GEt);u.radius*=m.maximumComponent(p)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==Ir.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&LEt(this,e,this._style),this._drawCommand.castShadows=Gn.castShadows(this.shadows),this._drawCommand.receiveShadows=Gn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Ge.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};kv.prototype.isDestroyed=function(){return!1};kv.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),me(this)};var Yv=kv;function r_(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.shadows=e.shadows??Gn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new Hf(e.shading),this.style=e.style,this.frameFailed=new Ce,this.frameChanged=new Ce,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new XA,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(r_.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function ZEt(e){return`uniform vec4 czm_pickColor; +${e}`}function BEt(e){return function(t){return Lt(t,{czm_pickColor:function(){return e._pickId.color}})}}function wEt(){return"czm_pickColor"}r_.prototype.makeStyleDirty=function(){this._styleDirty=!0};r_.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var XEt=new j;function lq(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function o_(e,t){return e._intervals.indexOf(t.start)}function WEt(e,t){let n=e._intervals,i=e._clock,o=lq(e);if(o===0)return;let r=e._getAverageLoadTime(),s=j.addSeconds(i.currentTime,r*o,XEt),a=n.indexOf(s),c=o_(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function FEt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function PEt(e,t,n){let i=lq(e),o=o_(e,t),r=o_(e,n);return i>=0?o>=r:o<=r}function HEe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function MEt(e,t,n){let i=o_(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?X.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Fi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,Ve.fetchArrayBuffer({url:c}).then(function(d){r.pointCloud=new Yv({arrayBuffer:d,cull:!0,fragmentShaderLoaded:ZEt,uniformMapLoaded:BEt(e),pickIdLoaded:wEt})}).catch(HEe(e,c))}return r}function vEt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function NEt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(zEe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Fi()-t.timestamp)/1e3;vEt(e,a)}}t.touchedFrameNumber=i.frameNumber}var DEt=new X;function QEt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?Z.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function UEt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var kEt=new Hf;function zEe(e,t,n,i){let o=e.shading??kEt,r=t.pointCloud,s=t.transform??X.IDENTITY;r.modelMatrix=X.multiplyTransformation(e.modelMatrix,s,DEt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=QEt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=UEt(e);try{r.update(i)}catch(a){HEe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function cq(e,t,n,i){let o=MEt(e,t,i);NEt(e,o,n,i)}function YEt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function KEe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function OEt(e,t){let n=o_(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function OEe(e,t,n,i,o){return l(n)?n.ready?!0:(cq(e,t,i,o),n.ready):!1}function HEt(e,t,n,i,o){let r,s,a,c=e._intervals,d=e._frames,u=o_(e,n),h=o_(e,t);if(u>=h){for(r=u;r>=h;--r)if(s=c.get(r),a=d[r],OEe(e,s,a,i,o))return s}else for(r=u;r<=h;++r)if(s=c.get(r),a=d[r],OEe(e,s,a,i,o))return s;return t}function zEt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var EL={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};r_.prototype.update=function(e){if(e.mode===re.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=j.clone(e.time));let t=Math.max(j.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&zEt(this,o,s),EL.timeSinceLoad=t,EL.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,d=e.commandList,u=d.length,h=this._previousInterval,p=this._nextInterval,g=FEt(this);if(!l(g))return;let f=!1,b=lq(this),x=b===0;b!==this._clockMultiplier&&(f=!0,this._clockMultiplier=b),(!l(h)||x)&&(h=g),(!l(p)||f||PEt(this,g,p))&&(p=WEt(this,g)),h=HEt(this,h,g,EL,e);let I=OEt(this,h);l(I)||(cq(this,h,EL,e),I=this._lastRenderedFrame),l(I)&&zEe(this,I,EL,e),l(p)&&cq(this,p,EL,e);let _=this;l(I)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(I)&&I!==this._lastRenderedFrame&&_.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return _.frameChanged.raiseEvent(_),!0}),this._previousInterval=h,this._nextInterval=p,this._lastRenderedFrame=I;let E=this._totalMemoryUsageInBytes,S=this.maximumMemoryUsage*1024*1024;E>S&&KEe(this,YEt(e));let G=d.length-u;l(a)&&a.attenuation&&a.eyeDomeLighting&&G>0&&c.update(e,u,a,this.boundingSphere)};r_.prototype.isDestroyed=function(){return!1};r_.prototype.destroy=function(){return KEe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),me(this)};var TL=r_;function qEe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function KEt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function $Ee(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function eTe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=$Ee(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function tTe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Qo(e,t){e=Dn(e),t=t??Y.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=Ht.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=Ht.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Dn(t.creditContainer):n;c.appendChild(a);let d=l(t.creditViewport)?Dn(t.creditViewport):n,u=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=d,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=u,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new Ce,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Yh,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),eTe(this);try{let p=t.ellipsoid??ie.default,g=new Pv({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:d,ellipsoid:p,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=m.UNIT_Z,$Ee(this),tTe(this);let f=t.globe;l(f)||(f=new DP(p)),f!==!1&&(g.globe=f,g.globe.shadows=t.terrainShadows??Gn.RECEIVE_ONLY);let b=t.skyBox;!l(b)&&ie.WGS84.equals(p)&&(b=vv.createEarthSkyBox()),b!==!1&&(g.skyBox=b,g.sun=new Qv,ie.WGS84.equals(p)&&(g.moon=new HP));let x=t.skyAtmosphere;!l(x)&&ie.WGS84.equals(p)&&(x=new Mv(p),x.show=t.globe!==!1&&f.show),x!==!1&&(g.skyAtmosphere=x);let I=t.baseLayer;t.globe!==!1&&I!==!1&&(l(I)||(I=is.fromWorldImagery()),g.imageryLayers.add(I)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Su(i),l(t.sceneMode)&&(t.sceneMode===re.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===re.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let _=this;this._onRenderError=function(w,F){_._useDefaultRenderLoop=!1,_._renderLoopRunning=!1,_._showRenderLoopErrors&&_.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,F)},g.renderError.addEventListener(this._onRenderError);let E=t.dataSources,S=!1;l(E)||(E=new SW,S=!0);let R=new fF({scene:g,dataSourceCollection:E}),G=new Lr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=E,this._destroyDataSourceCollection=S,this._dataSourceDisplay=R,this._eventHelper=G,this._canAnimateUpdateCallback=this._updateCanAnimate,G.add(this._clock.onTick,Qo.prototype._onTick,this),G.add(g.morphStart,Qo.prototype._clearTrackedObject,this),G.add(E.dataSourceAdded,Qo.prototype._onDataSourceAdded,this),G.add(E.dataSourceRemoved,Qo.prototype._onDataSourceRemoved,this),G.add(g.postRender,Qo.prototype._postRender,this);let B=E.length;for(let w=0;w<B;w++)this._dataSourceAdded(E,E.get(w));this._dataSourceAdded(void 0,R.defaultDataSource),G.add(E.dataSourceAdded,Qo.prototype._dataSourceAdded,this),G.add(E.dataSourceRemoved,Qo.prototype._dataSourceRemoved,this)}catch(p){throw u&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',p),p}}Object.defineProperties(Qo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&KEt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,dq(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===re.COLUMBUS_VIEW||n===re.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===re.COLUMBUS_VIEW||n===re.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(X.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,qEe(this.clock,e))}}});Qo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let d=l(t),u=l(n);if(d||u){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),u){let f=Kf(n);d||(typeof n=="string"&&(n=new Error(n)),t=Kf({name:n.name,message:n.message}),f=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${f}`);let b=document.createElement("div");b.className="cesium-widget-errorPanel-message-details collapsed";let x=document.createElement("span");x.className="cesium-widget-errorPanel-more-details",x.appendChild(document.createTextNode("See more...")),b.appendChild(x),b.onclick=function(I){b.removeChild(x),b.appendChild(document.createTextNode(f)),b.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",b.onclick=void 0},a.appendChild(b)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let p=document.createElement("button");p.setAttribute("type","button"),p.className="cesium-button",p.appendChild(document.createTextNode("OK")),p.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(p),i.appendChild(o)};Qo.prototype.isDestroyed=function(){return!1};Qo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),me(this)};Qo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,eTe(this),tTe(this),this._scene.requestRender())};Qo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Qo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Qo.prototype._onEntityCollectionChanged,this)};Qo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Qo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Qo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var JEt=new ue;Qo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??JEt)===At.DONE&&i.update(t)}};Qo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Qo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Qo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&qEe(this.clock,e)};Qo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Qo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Qo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Qo.prototype.zoomTo=function(e,t){return nTe(this,e,{offset:t},!1)};Qo.prototype.flyTo=function(e,t){return nTe(this,e,t,!0)};function nTe(e,t,n,i){dq(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof is){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return EI(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof Ps||r instanceof TL||r instanceof by){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function Ov(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function dq(e){let t=e._zoomPromise;l(t)&&(Ov(e),e._completeZoom(!1))}Qo.prototype._postRender=function(){jEt(this),qEt(this)};var JEe=new ue;function jEt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===re.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(u){l(o.offset)||(o.offset=new Vm(0,-.5,u.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(X.IDENTITY),e._completeZoom(!0)),Ov(e)}if(t instanceof TL){if(l(t.boundingSphere)){s(t.boundingSphere);return}let u=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),u()});return}if(t instanceof Ps||t instanceof by){s(t.boundingSphere);return}if(t instanceof ge){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),Ov(e);return}let a=t,c=[];for(let u=0,h=a.length;u<h;u++){let p=e._dataSourceDisplay.getBoundingSphere(a[u],!1,JEe);if(p===At.PENDING)return;p!==At.FAILED&&c.push(ue.clone(JEe))}if(c.length===0){dq(e);return}e.trackedEntity=void 0;let d=ue.fromBoundingSpheres(c);e._zoomIsFlight?(Ov(e),i.flyToBoundingSphere(d,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(d,o.offset),i.lookAtTransform(X.IDENTITY),Ov(e),e._completeZoom(!0))}var jEe=new ue;function qEt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=z.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,jEe);if(r===At.PENDING)return;let s=o.mode;(s===re.COLUMBUS_VIEW||s===re.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===re.COLUMBUS_VIEW||s===re.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==At.FAILED?jEe:void 0;e._entityView=new AF(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var Hv=Qo;var vqi=y(C(),1);var bqi=y(C(),1);function RL(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var s_=new le;function $Et(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}RL.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let p=n;p<=o;++p)for(let g=t;g<=i;++g)$Et(e,g,p,s)||s.push(new SL(r,void 0,0,g,p));r.tileXYToRectangle(t,n,e,s_);let a=s_.west,c=s_.north;r.tileXYToRectangle(i,o,e,s_);let d=s_.east,u=s_.south,h=new oTt(e,a,u,d,c);for(let p=0;p<s.length;++p){let g=s[p];uq(g.extent,h)&&rTt(this._maximumLevel,g,h)}};RL.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(LL(i.extent,e)){t=i;break}}return l(t)?zv(void 0,t,e):-1};var eTt=[],tTt=[],nTt=new le,iTt=new le;RL.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=eTt;t.length=0,e.east<e.west?(t.push(le.fromRadians(-Math.PI,e.south,e.east,e.north,nTt)),t.push(le.fromRadians(e.west,e.south,Math.PI,e.north,iTt))):t.push(e);let n=tTt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)Kv(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var iTe=new ge;RL.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,s_);return le.center(i,iTe),this.computeMaximumLevelAtPosition(iTe)>=e};RL.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function SL(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(SL.prototype,{nw:{get:function(){return this._nw||(this._nw=new SL(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new SL(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new SL(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new SL(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function oTt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function uq(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function rTt(e,t,n){for(;t.level<e;)if(BY(t.nw.extent,n))t=t.nw;else if(BY(t.ne.extent,n))t=t.ne;else if(BY(t.sw.extent,n))t=t.sw;else if(BY(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=Yo(t.rectangles,n.level,sTt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function sTt(e,t){return e.level-t}function BY(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function LL(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function zv(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&LL(t._nw.extent,n),s=t._ne&&LL(t._ne.extent,n),a=t._sw&&LL(t._sw.extent,n),c=t._se&&LL(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,zv(t,t._nw,n))),s&&(i=Math.max(i,zv(t,t._ne,n))),a&&(i=Math.max(i,zv(t,t._sw,n))),c&&(i=Math.max(i,zv(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];LL(a,n)&&(i=a.level)}t=t.parent}return i}function Kv(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||uq(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=aTt(e[s.level],s)}Kv(e,t._nw,n),Kv(e,t._ne,n),Kv(e,t._sw,n),Kv(e,t._se,n)}function aTt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];uq(o,t)?(o.west<t.west&&n.push(new le(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new le(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new le(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new le(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var bf=RL;var cTt=15;function oTe(e){this.ellipsoid=e.ellipsoid??ie.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}oTe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function lTt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Gt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=le.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new ao(s);else if(o===3857){let d=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>d&&(t.extent.xmax=d),t.extent.ymax>d&&(t.extent.ymax=d),t.extent.xmin<-d&&(t.extent.xmin=-d),t.extent.ymin<-d&&(t.extent.ymin=-d),s.rectangleSouthwestInMeters=new D(r.xmin,r.ymin),s.rectangleNortheastInMeters=new D(r.xmax,r.ymax),e.tilingScheme=new _s(s)}else throw new de("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new de("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?Xm.LERC:Xm.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new bf(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new bf(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function dTt(e,t,n){try{let i=await t.fetchJson();lTt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function Cy(e){e=e??Y.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new Ce}Object.defineProperties(Cy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});Cy.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT,e=await Promise.resolve(e);let n=Ve.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new oTe(t);await dTt(o,i);let r=new Cy(t);return o.build(r),r._resource=n,r};Cy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(mq(this,n+1,e*2,t*2))){let h=rTe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let d=this,u=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new yc({buffer:h[0],width:d._width,height:d._height,childTileMask:r?u.computeChildMaskForTile(n,e,t):cTt,structure:d._terrainDataStructure,encoding:d._encoding})}).catch(async function(h){if(l(a)&&a.state===mi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=mi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function mq(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}Cy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Cy.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=mq(this,n,e,t);if(l(i))return i;rTe(this,n,e,t)};Cy.prototype.loadTileDataAvailability=function(e,t,n){};function uTt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},d=new D(e.x+1,e.y+1),u=!1,h=!1;for(;!(u&&h);){let p=d.x,g=h?d.y+1:d.y;if(!u){for(let f=e.y;f<g;++f)if(i[f*t+d.x]!==s){u=!0;break}u?(a.push(new D(d.x,e.y)),--d.x,--p,c.endX=d.x):d.x===o?(c.endX=d.x,u=!0):++d.x}if(!h){let f=d.y*t;for(let b=e.x;b<=p;++b)if(i[f+b]!==s){h=!0;break}h?(a.push(new D(e.x,d.y)),--d.y,c.endY=d.y):d.y===r?(c.endY=d.y,h=!0):++d.y}}return{endingIndices:a,range:c,value:s}}function mTt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new D(0,0)];for(;a.length>0;){let c=a.pop(),d=uTt(c,n,i,o);if(d.value===1){let h=d.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let u=d.endingIndices;u.length>0&&(a=a.concat(u))}return r}function rTe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let d=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:d}).fetchJson();return l(h)?(h=h.then(function(p){let g=mTt(o,r,s,s,p.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let f=e._tilesAvailable;for(let b=0;b<g.length;++b){let x=g[b];f.addAvailableTileRange(t,x.startX,x.startY,x.endX,x.endY)}return mq(e,t,n,i)}),c[a]={promise:h,request:d},h=h.finally(function(p){return delete c[a],p}),{promise:h,request:d}):{}}var hq=Cy;var Oqi=y(C(),1);var sTe="https://dev.virtualearth.net/REST/v1/Locations";function fq(e){e=e??Y.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new Ve({url:sTe,queryParameters:n}),this._credit=new Gt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(fq.prototype,{url:{get:function(){return sTe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});fq.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],d=r[3];return{displayName:o.name,destination:le.fromDegrees(a,s,d,c)}})})};var pq=fq;var Kqi=y(C(),1);function Aq(){}Object.defineProperties(Aq.prototype,{credit:{get:function(){}}});Aq.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:m.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var gq=Aq;var o$i=y(C(),1);var hTt=new ce,aTe=new m,VL=new m;function fTt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new m);let d=(a-i)*o;return m.lerp(r,s,d,c)}}return function(i,o){l(o)||(o=new m);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=hTt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,d,u,h,p;return r===0?(c=t[0],d=t[1],u=e.firstTangent,h=m.subtract(t[2],c,aTe),m.multiplyByScalar(h,.5,h),p=X.multiplyByVector(o0.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],d=t[r+1],h=e.lastTangent,u=m.subtract(d,t[r-1],aTe),m.multiplyByScalar(u,.5,u),p=X.multiplyByVector(o0.hermiteCoefficientMatrix,a,a)):(c=t[r-1],d=t[r],u=t[r+1],h=t[r+2],p=X.multiplyByVector(xy.catmullRomCoefficientMatrix,a,a)),o=m.multiplyByScalar(c,p.x,o),m.multiplyByScalar(d,p.y,VL),m.add(o,VL,o),m.multiplyByScalar(u,p.z,VL),m.add(o,VL,o),m.multiplyByScalar(h,p.w,VL),m.add(o,VL,o)}}var pTt=new m,ATt=new m;function xy(e){e=e??Y.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=pTt,m.multiplyByScalar(t[1],2,i),m.subtract(i,t[2],i),m.subtract(i,t[0],i),m.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=ATt,m.multiplyByScalar(t[r-1],2,o),m.subtract(t[r],o,o),m.add(o,t[r-2],o),m.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=m.clone(i),this._lastTangent=m.clone(o),this._evaluateFunction=fTt(this),this._lastTimeIndex=0}Object.defineProperties(xy.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});xy.catmullRomCoefficientMatrix=new X(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);xy.prototype.findTimeInterval=yo.prototype.findTimeInterval;xy.prototype.wrapTime=yo.prototype.wrapTime;xy.prototype.clampTime=yo.prototype.clampTime;xy.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var bq=xy;var K$i=y(C(),1);var E$i=y(C(),1);var l$i=y(C(),1);var wY={};wY.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let d=s+a+c,u,h,p,g,f,b;return d===1?s?(u=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),u!==1&&(r.push(-1),r.push(0),r.push(1),r.push(u))):a?(p=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),p!==1&&(r.push(-1),r.push(1),r.push(2),r.push(p))):c&&(f=(e-o)/(n-o),b=(e-o)/(i-o),r.push(0),r.push(1),b!==1&&(r.push(-1),r.push(2),r.push(1),r.push(b)),f!==1&&(r.push(-1),r.push(2),r.push(0),r.push(f))):d===2?!s&&n!==e?(g=(e-i)/(n-i),f=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(f)):!a&&i!==e?(b=(e-o)/(i-o),u=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(b),r.push(-1),r.push(0),r.push(1),r.push(u)):!c&&o!==e&&(h=(e-n)/(o-n),p=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(p)):d!==3&&(r.push(0),r.push(1),r.push(2)),r};wY.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let d=n-s,u=s-o,h=r-a,p=i-a,g=1/(h*d+u*p),f=t-a,b=e-s,x=(h*b+u*f)*g,I=(-p*b+d*f)*g,_=1-x-I;return l(c)?(c.x=x,c.y=I,c.z=_,c):new m(x,I,_)};wY.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let d=(s-o)*(t-r)-(a-r)*(e-o),u=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let p=d/h,g=u/h;if(p>=0&&p<=1&&g>=0&&g<=1)return l(c)||(c=new D),c.x=e+p*(n-e),c.y=t+p*(i-t),c};var tb=wY;function Iy(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=WY(e.westIndices,o,t),this._southIndices=WY(e.southIndices,r,t),this._eastIndices=WY(e.eastIndices,o,t),this._northIndices=WY(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(Iy.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var XY=[];function WY(e,t,n){XY.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)XY[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(XY.sort(t),Me.createTypedArray(n,XY)):e}var cTe="createVerticesFromQuantizedTerrainMesh",gTt=new hi(cTe),bTt=new hi(cTe,df.maximumAsynchronousTasks);Iy.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,d=t.tileXYToRectangle(n,i,o),h=(a?bTt:gTt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:d,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let p=this;return Promise.resolve(h).then(function(g){let f=p._quantizedVertices.length/3,b=f+p._westIndices.length+p._southIndices.length+p._eastIndices.length+p._northIndices.length,x=Me.createTypedArray(b,g.indices),I=new Float32Array(g.vertices),_=g.center,E=g.minimumHeight,S=g.maximumHeight,R=p._boundingSphere,G=p._orientedBoundingBox,B=m.clone(g.occludeePointInScaledSpace)??p._horizonOcclusionPoint,w=g.vertexStride,F=Kc.clone(g.encoding);return p._mesh=new Fm(_,I,x,g.indexCountWithoutSkirts,f,E,S,R,B,w,G,F,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),p._quantizedVertices=void 0,p._encodedNormals=void 0,p._indices=void 0,p._uValues=void 0,p._vValues=void 0,p._heightValues=void 0,p._westIndices=void 0,p._southIndices=void 0,p._eastIndices=void 0,p._northIndices=void 0,p._mesh})};var yTt=new hi("upsampleQuantizedTerrainMesh",df.maximumAsynchronousTasks);Iy.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,d=n*2===r,u=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=yTt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:d,childRectangle:h,ellipsoid:u});if(!l(p))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let f=c?g*.5:this._westSkirtHeight,b=d?g*.5:this._southSkirtHeight,x=c?this._eastSkirtHeight:g*.5,I=d?this._northSkirtHeight:g*.5,_=this._credits;return Promise.resolve(p).then(function(E){let S=new Uint16Array(E.vertices),R=Me.createTypedArray(S.length/3,E.indices),G;return l(E.encodedNormals)&&(G=new Uint8Array(E.encodedNormals)),new Iy({quantizedVertices:S,indices:R,encodedNormals:G,minimumHeight:E.minimumHeight,maximumHeight:E.maximumHeight,boundingSphere:ue.clone(E.boundingSphere),orientedBoundingBox:vn.clone(E.orientedBoundingBox),horizonOcclusionPoint:m.clone(E.horizonOcclusionPoint),westIndices:E.westIndices,southIndices:E.southIndices,eastIndices:E.eastIndices,northIndices:E.northIndices,westSkirtHeight:f,southSkirtHeight:b,eastSkirtHeight:x,northSkirtHeight:I,childTileMask:0,credits:_,createdByUpsampling:!0})})};var yq=32767,lTe=new m;Iy.prototype.interpolateHeight=function(e,t,n){let i=Z.clamp((t-e.west)/e.width,0,1);i*=yq;let o=Z.clamp((n-e.south)/e.height,0,1);return o*=yq,l(this._mesh)?_Tt(this,i,o):ETt(this,i,o)};function dTe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),d=Math.max(n,o,s),u=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=d&&t>=u&&t<=h}var CTt=new D,xTt=new D,ITt=new D;function _Tt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,d,CTt),g=r.decodeTextureCoordinates(o,u,xTt),f=r.decodeTextureCoordinates(o,h,ITt);if(dTe(t,n,p.x,p.y,g.x,g.y,f.x,f.y)){let b=tb.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,f.x,f.y,lTe);if(b.x>=-1e-15&&b.y>=-1e-15&&b.z>=-1e-15){let x=r.decodeHeight(o,d),I=r.decodeHeight(o,u),_=r.decodeHeight(o,h);return b.x*x+b.y*I+b.z*_}}}}function ETt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=i[d],g=i[u],f=i[h],b=o[d],x=o[u],I=o[h];if(dTe(t,n,p,b,g,x,f,I)){let _=tb.computeBarycentricCoordinates(t,n,p,b,g,x,f,I,lTe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let E=_.x*r[d]+_.y*r[u]+_.z*r[h];return Z.lerp(e._minimumHeight,e._maximumHeight,E/yq)}}}}Iy.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Iy.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var a_=Iy;function TTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function mTe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??ie.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}mTe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function hTe(e,t,n){if(!t.format){let b="The tile format is not specified in the layer.json file.";throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}if(!t.tiles||t.tiles.length===0){let b="The layer.json file does not specify any tile URL templates.";throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let b=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let c=t.tiles,d=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,d),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new _s({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let b=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}if(e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let b=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let u;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,p=t.available,g;if(l(p)&&!l(h)){g=new bf(e.tilingScheme,p.length);for(let b=0;b<p.length;++b){let x=p[b],I=e.tilingScheme.getNumberOfYTilesAtLevel(b);l(e.overallAvailability[b])||(e.overallAvailability[b]=[]);for(let _=0;_<x.length;++_){let E=x[_],S=I-E.endY-1,R=I-E.startY-1;e.overallAvailability[b].push([E.startX,S,E.endX,R]),g.addAvailableTileRange(b,E.startX,S,E.endX,R)}}}else l(h)&&(u=new bf(e.tilingScheme,d),g=new bf(e.tilingScheme,d),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new TTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:u,littleEndianExtensionSize:s}));let f=t.parentUrl;return l(f)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:f}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await Iq(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function STt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return Iq(e,n);throw new de(i)}async function LTt(e,t,n){await hTe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new bf(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Gt(e.attribution);e.tileCredits.push(o)}return!0}async function Iq(e,t){try{let n=await e.layerJsonResource.fetchJson();return LTt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await hTe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):STt(e,n,t)}}function yf(e){e=e??Y.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new Ce;let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var Cq={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function uTe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function RTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new yc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function VTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,d=c+1,u=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*d,g=Uint16Array.BYTES_PER_ELEMENT*3,f=3,b=Uint16Array.BYTES_PER_ELEMENT,x=b*f,I=new DataView(t),_=new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0));a+=u;let E=I.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=I.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let R=new ue(new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0)),I.getFloat64(a+u,!0));a+=h;let G=new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0));a+=u;let B=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let w=new Uint16Array(t,a,B*3);a+=B*g,B>64*1024&&(b=Uint32Array.BYTES_PER_ELEMENT,x=b*f);let F=w.subarray(0,B),P=w.subarray(B,2*B),A=w.subarray(B*2,3*B);Mn.zigZagDeltaDecode(F,P,A),a%b!==0&&(a+=b-a%b);let T=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let L=Me.createTypedArrayFromArrayBuffer(B,t,a,T*f);a+=T*x;let V=0,W=L.length;for(let he=0;he<W;++he){let xe=L[he];L[he]=V-xe,xe===0&&++V}let M=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Q=Me.createTypedArrayFromArrayBuffer(B,t,a,M);a+=M*b;let N=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let k=Me.createTypedArrayFromArrayBuffer(B,t,a,N);a+=N*b;let v=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let O=Me.createTypedArrayFromArrayBuffer(B,t,a,v);a+=v*b;let H=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let ee=Me.createTypedArrayFromArrayBuffer(B,t,a,H);a+=H*b;let K,te;for(;a<I.byteLength;){let he=I.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let xe=I.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,he===Cq.OCT_VERTEX_NORMALS&&e._requestVertexNormals)K=new Uint8Array(t,a,B*2);else if(he===Cq.WATER_MASK&&e._requestWaterMask)te=new Uint8Array(t,a,xe);else if(he===Cq.METADATA&&e._requestMetadata){let Te=I.getUint32(a,!0);if(Te>0){let Le=mr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,Te).available;if(l(Le))for(let De=0;De<Le.length;++De){let Ue=n+De+1,je=Le[De],it=e._tilingScheme.getNumberOfYTilesAtLevel(Ue);for(let nn=0;nn<je.length;++nn){let rt=je[nn],rn=it-rt.endY-1,Jt=it-rt.startY-1;e.availability.addAvailableTileRange(Ue,rt.startX,rn,rt.endX,Jt),r.availability.addAvailableTileRange(Ue,rt.startX,rn,rt.endX,Jt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=xe}let q=e.getLevelMaximumGeometricError(n)*5,pe=e._tilingScheme.tileXYToRectangle(i,o,n),ye=vn.fromRectangle(pe,E,S,e._tilingScheme.ellipsoid);return new a_({center:_,minimumHeight:E,maximumHeight:S,boundingSphere:R,orientedBoundingBox:ye,horizonOcclusionPoint:G,quantizedVertices:w,encodedNormals:K,indices:L,westIndices:Q,southIndices:k,eastIndices:O,northIndices:ee,westSkirtHeight:q,southSkirtHeight:q,eastSkirtHeight:q,northSkirtHeight:q,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:te,credits:e._tileCredits})}yf.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let d=0;d<s;++d){let u=o[d];if(!l(u.availability)||u.availability.isTileAvailable(n,e,t)){r=u;break}let h=_q(this,e,t,n,u,d===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(d=>{setTimeout(()=>{let u=this.requestTileGeometry(e,t,n,i);d(u)},0)})):fTe(this,e,t,n,r,i)};function fTe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new de("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let d,u,h=s[(t+a+i)%s.length],p=o.resource;l(p._ionEndpoint)&&!l(p._ionEndpoint.externalType)?(c.length!==0&&(u={extensions:c.join("-")}),d=uTe(void 0)):d=uTe(c);let g=p.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:u,headers:d,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(f){return l(f)?l(e._heightmapStructure)?RTt(e,f,i,t,n):VTt(e,f,i,t,n,o):Promise.reject(new de("Mesh buffer doesn't exist."))})}Object.defineProperties(yf.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});yf.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};yf.fromIonAssetId=async function(e,t){let n=await Nd.fromAssetId(e);return yf.fromUrl(n,t)};yf.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT,e=await Promise.resolve(e);let n=Ve.createIfNeeded(e);n.appendForwardSlash();let i=new mTe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await Iq(i);let o=new yf(t);return i.build(o),o};yf.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(_q(this,e,t,n,i[r],r===0).result)return;return!1};yf.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=_q(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function xq(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function _q(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,d=o.availability,u=xq(o,t,n,i);for(;l(u);){if(d.isTileAvailable(u.level,u.x,u.y)&&!c.isTileAvailable(u.level,u.x,u.y)){let h;if(!r&&(s=`${u.level}-${u.x}-${u.y}`,h=o.availabilityPromiseCache[s],!l(h))){let p=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});h=fTe(e,u.x,u.y,u.level,o,p),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}u=xq(o,u.x,u.y,u.level)}return{result:!1}}yf._getAvailabilityTile=xq;var c_=yf;var ieo=y(C(),1);function nb(e){e=e??Y.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new Fl(n),this._workerName="createCircleGeometry"}nb.packedLength=Fl.packedLength;nb.pack=function(e,t,n){return Fl.pack(e._ellipseGeometry,t,n)};var pTe=new Fl({center:new m,semiMajorAxis:1,semiMinorAxis:1}),xc={center:new m,radius:void 0,ellipsoid:ie.clone(ie.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new we,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};nb.unpack=function(e,t,n){let i=Fl.unpack(e,t,pTe);return xc.center=m.clone(i._center,xc.center),xc.ellipsoid=ie.clone(i._ellipsoid,xc.ellipsoid),xc.ellipsoid=ie.clone(i._ellipsoid,pTe._ellipsoid),xc.height=i._height,xc.extrudedHeight=i._extrudedHeight,xc.granularity=i._granularity,xc.vertexFormat=we.clone(i._vertexFormat,xc.vertexFormat),xc.stRotation=i._stRotation,xc.shadowVolume=i._shadowVolume,l(n)?(xc.semiMajorAxis=i._semiMajorAxis,xc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Fl(xc),n):(xc.radius=i._semiMajorAxis,new nb(xc))};nb.createGeometry=function(e){return Fl.createGeometry(e._ellipseGeometry)};nb.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new nb({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(nb.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var Eq=nb;var deo=y(C(),1);function GL(e){e=e??Y.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new du(n),this._workerName="createCircleOutlineGeometry"}GL.packedLength=du.packedLength;GL.pack=function(e,t,n){return du.pack(e._ellipseGeometry,t,n)};var GTt=new du({center:new m,semiMajorAxis:1,semiMinorAxis:1}),Gu={center:new m,radius:void 0,ellipsoid:ie.clone(ie.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};GL.unpack=function(e,t,n){let i=du.unpack(e,t,GTt);return Gu.center=m.clone(i._center,Gu.center),Gu.ellipsoid=ie.clone(i._ellipsoid,Gu.ellipsoid),Gu.height=i._height,Gu.extrudedHeight=i._extrudedHeight,Gu.granularity=i._granularity,Gu.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(Gu.semiMajorAxis=i._semiMajorAxis,Gu.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new du(Gu),n):(Gu.radius=i._semiMajorAxis,new GL(Gu))};GL.createGeometry=function(e){return du.createGeometry(e._ellipseGeometry)};var Tq=GL;var Ceo=y(C(),1);function ZL(e){e=e??Y.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new ao({ellipsoid:e.ellipsoid??ie.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new Ce;let n=e.credit;typeof n=="string"&&(n=new Gt(n)),this._credit=n}Object.defineProperties(ZL.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});ZL.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new yc({buffer:c,width:r,height:s})})};ZL.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};ZL.prototype.getTileDataAvailable=function(e,t,n){};ZL.prototype.loadTileDataAvailability=function(e,t,n){};var Sq=ZL;var Ieo=y(C(),1);function ATe(e){this.proxy=e}ATe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var Lq=ATe;var Eeo=y(C(),1),ZTt={SEARCH:0,AUTOCOMPLETE:1},_y=Object.freeze(ZTt);var Veo=y(C(),1);function FY(){Ae.throwInstantiationError()}Object.defineProperties(FY.prototype,{credit:{get:Ae.throwInstantiationError}});FY.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Gt.getIonCredit)};FY.prototype.geocode=Ae.throwInstantiationError;var BL=FY;var Beo=y(C(),1);function gTe(){Ae.throwInstantiationError()}gTe.createGeometry=function(e){Ae.throwInstantiationError()};var Rq=gTe;var qeo=y(C(),1),PTt=y(Vq(),1);var veo=y(C(),1);var Weo=y(C(),1);function BTt(e,t){return(e&t)!==0}var el=BTt;var wTt=[1,2,4,8],bTe=15,XTt=16,WTt=64,FTt=128;function Mp(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}Mp.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new Mp(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};Mp.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};Mp.prototype.hasSubtree=function(){return el(this._bits,XTt)};Mp.prototype.hasImagery=function(){return el(this._bits,WTt)};Mp.prototype.hasTerrain=function(){return el(this._bits,FTt)};Mp.prototype.hasChildren=function(){return el(this._bits,bTe)};Mp.prototype.hasChild=function(e){return el(this._bits,wTt[e])};Mp.prototype.getChildBitmask=function(){return this._bits&bTe};var Jv=Mp;function MTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var vTt=MTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function Zu(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=Z.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(Zu.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});Zu.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof Ve)&&(t=e.url);let n=Ve.createIfNeeded(t);n.appendForwardSlash();let i=new Zu;i._resource=n;try{await NTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${CTe(i,"",1).url}: ${o}`;throw new de(r)}return i};Zu.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;el(t,r)?el(e,r)&&(s|=1):(s|=2,el(e,r)||(s|=1)),i+=s}return i};Zu.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];el(s,2)?el(s,1)||(t|=r):(n|=r,el(s,1)&&(t|=r))}return{x:t,y:n,level:i}};Zu.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var yTe=new hi("decodeGoogleEarthEnterprisePacket");Zu.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=CTe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return yTe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(d){let u,h=-1;if(e!==""){h=e.length+1;let f=d[e];u=r[e],u._bits|=f._bits,delete d[e]}let p=Object.keys(d);p.sort(function(f,b){return f.length-b.length});let g=p.length;for(let f=0;f<g;++f){let b=p[f];if(d[b]!==null){let I=Jv.clone(d[b]),_=b.length;if(_===h)I.setParent(u);else if(_>1){let E=r[b.substring(0,b.length-1)];I.setParent(E)}r[b]=I}else r[b]=null}})})};Zu.prototype.populateSubtree=function(e,t,n,i){let o=Zu.tileXYToQuadKey(e,t,n);return Bq(this,o,i)};function Bq(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Bq(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new de(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Bq(e,t,s)}).finally(function(){delete a[o]})}Zu.prototype.getTileInformation=function(e,t,n){let i=Zu.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};Zu.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function CTe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var Gq,Zq;function NTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(Zq)){let n=hn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;Zq=My(n).then(function(){Gq=window.cesiumGoogleEarthDbRootParser(PTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return Zq.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=Gq.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return yTe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=Gq.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],d=c.copyrightString;l(d)&&(o[c.providerId]=new Gt(d.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=vTt})}var ib=Zu;var pto=y(C(),1);function l_(e){e=e??Y.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(l_.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var _Te="createVerticesFromGoogleEarthEnterpriseBuffer",DTt=new hi(_Te),QTt=new hi(_Te,df.maximumAsynchronousTasks),xTe=new le,wq=new le;l_.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,xTe),t.tileXYToRectangle(n,i,o,wq);let d=c.cartographicToCartesian(le.center(wq)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?QTt:DTt).scheduleTask({buffer:this._buffer,nativeRectangle:xTe,rectangle:wq,relativeToCenter:d,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let f=this;return g.then(function(b){return f._mesh=new Fm(d,new Float32Array(b.vertices),new Uint16Array(b.indices),b.indexCountWithoutSkirts,b.vertexCountWithoutSkirts,b.minimumHeight,b.maximumHeight,ue.clone(b.boundingSphere3D),m.clone(b.occludeePointInScaledSpace),b.numberOfAttributes,vn.clone(b.orientedBoundingBox),Kc.clone(b.encoding),b.westIndicesSouthToNorth,b.southIndicesEastToWest,b.eastIndicesNorthToSouth,b.northIndicesWestToEast),f._minimumHeight=b.minimumHeight,f._maximumHeight=b.maximumHeight,f._buffer=void 0,f._mesh})};l_.prototype.interpolateHeight=function(e,t,n){let i=Z.clamp((t-e.west)/e.width,0,1),o=Z.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?HTt(this,i,o):JTt(this,i,o,e)};var UTt=new hi("upsampleQuantizedTerrainMesh",df.maximumAsynchronousTasks);l_.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,d=n*2===r,u=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=UTt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:d,childRectangle:h,ellipsoid:u});if(!l(p))return;let g=this;return p.then(function(f){let b=new Uint16Array(f.vertices),x=Me.createTypedArray(b.length/3,f.indices),I=g._skirtHeight;return new a_({quantizedVertices:b,indices:x,minimumHeight:f.minimumHeight,maximumHeight:f.maximumHeight,boundingSphere:ue.clone(f.boundingSphere),orientedBoundingBox:vn.clone(f.orientedBoundingBox),horizonOcclusionPoint:m.clone(f.horizonOcclusionPoint),westIndices:f.westIndices,southIndices:f.southIndices,eastIndices:f.eastIndices,northIndices:f.northIndices,westSkirtHeight:I,southSkirtHeight:I,eastSkirtHeight:I,northSkirtHeight:I,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};l_.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};l_.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var kTt=new D,YTt=new D,OTt=new D,ETe=new m;function HTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,d,kTt),g=r.decodeTextureCoordinates(o,u,YTt),f=r.decodeTextureCoordinates(o,h,OTt),b=tb.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,f.x,f.y,ETe);if(b.x>=-1e-15&&b.y>=-1e-15&&b.z>=-1e-15){let x=r.decodeHeight(o,d),I=r.decodeHeight(o,u),_=r.decodeHeight(o,h);return b.x*x+b.y*I+b.z*_}}}var zTt=Uint16Array.BYTES_PER_ELEMENT,ITe=Uint32Array.BYTES_PER_ELEMENT,Xq=Int32Array.BYTES_PER_ELEMENT,KTt=Float32Array.BYTES_PER_ELEMENT,Wq=Float64Array.BYTES_PER_ELEMENT;function JTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),d=0;for(let R=0;R<r;++R)d+=c.getUint32(d,!0),d+=ITe;d+=ITe,d+=2*Wq;let u=Z.toRadians(c.getFloat64(d,!0)*180);d+=Wq;let h=Z.toRadians(c.getFloat64(d,!0)*180);d+=Wq;let p=i.width/u/2,g=i.height/h/2,f=c.getInt32(d,!0);d+=Xq;let b=c.getInt32(d,!0)*3;d+=Xq,d+=Xq;let x=new Array(f),I=new Array(f),_=new Array(f),E;for(E=0;E<f;++E)x[E]=s+c.getUint8(d++)*p,I[E]=a+c.getUint8(d++)*g,_[E]=c.getFloat32(d,!0)*6371010,d+=KTt;let S=new Array(b);for(E=0;E<b;++E)S[E]=c.getUint16(d,!0),d+=zTt;for(E=0;E<b;E+=3){let R=S[E],G=S[E+1],B=S[E+2],w=x[R],F=x[G],P=x[B],A=I[R],T=I[G],L=I[B],V=tb.computeBarycentricCoordinates(t,n,w,A,F,T,P,L,ETe);if(V.x>=-1e-15&&V.y>=-1e-15&&V.z>=-1e-15)return V.x*_[R]+V.y*_[G]+V.z*_[B]}}var wL=l_;var wto=y(C(),1);var Ym={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},PY=new j;function MY(){this._terrainCache={},this._lastTidy=j.now()}MY.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:j.now()}};MY.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};MY.prototype.tidy=function(){if(j.now(PY),j.secondsDifference(PY,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];j.secondsDifference(PY,r.timestamp)>10&&delete e[o]}j.clone(PY,this._lastTidy)}};function Ey(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new le(-Z.PI,-Z.PI,Z.PI,Z.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new MY,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new Ce}Object.defineProperties(Ey.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Ey.fromMetadata=function(e,t){if(!e.terrainPresent)throw new de(`The server ${e.url} doesn't have terrain`);let n=new Ey(t);return n._metadata=e,n};var jTt=new hi("decodeGoogleEarthEnterprisePacket");function TTe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===Ym.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}Ey.prototype.requestTileGeometry=function(e,t,n,i){let o=ib.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new de("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=Ym.UNKNOWN);let d=r.get(o);if(l(d)){let I=s.providers[a.terrainProvider];return Promise.resolve(new wL({buffer:d,childTileMask:TTe(o,a,s),credits:l(I)?[I]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===Ym.NONE)return Promise.reject(new de("Terrain tile doesn't exist"))}else return Promise.resolve(new yc({buffer:new Uint8Array(256),width:16,height:16}));let u,h=o,p=-1;switch(c){case Ym.SELF:p=a.terrainVersion;break;case Ym.PARENT:h=h.substring(0,h.length-1),u=s.getTileInformationFromQuadKey(h),p=u.terrainVersion;break;case Ym.UNKNOWN:a.hasTerrain()?p=a.terrainVersion:(h=h.substring(0,h.length-1),u=s.getTileInformationFromQuadKey(h),l(u)&&u.hasTerrain()&&(p=u.terrainVersion));break}if(p<0)return Promise.reject(new de("Terrain tile doesn't exist"));let g=this._terrainPromises,f=this._terrainRequests,b,x;if(l(g[h]))b=g[h],x=f[h];else{x=i;let I=qTt(this,h,p,x).fetchArrayBuffer();if(!l(I))return;b=I.then(function(_){return l(_)?jTt.scheduleTask({buffer:_,type:"Terrain",key:s.key},[_]).then(function(E){let S=s.getTileInformationFromQuadKey(h);S.terrainState=Ym.SELF,r.add(h,E[0]);let R=S.terrainProvider,G=E.length-1;for(let B=0;B<G;++B){let w=h+B.toString(),F=s.getTileInformationFromQuadKey(w);l(F)&&(r.add(w,E[B+1]),F.terrainState=Ym.PARENT,F.terrainProvider===0&&(F.terrainProvider=R))}}):Promise.reject(new de("Failed to load terrain."))}),g[h]=b,f[h]=x,b=b.finally(function(){delete g[h],delete f[h]})}return b.then(function(){let I=r.get(o);if(l(I)){let _=s.providers[a.terrainProvider];return new wL({buffer:I,childTileMask:TTe(o,a,s),credits:l(_)?[_]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new de("Failed to load terrain."))}).catch(function(I){return x.state===mi.CANCELLED?(i.state=x.state,Promise.reject(I)):(a.terrainState=Ym.NONE,Promise.reject(I))})};Ey.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Ey.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=ib.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===Ym.NONE)return!1;if((!l(s)||s===Ym.UNKNOWN)&&(r.terrainState=Ym.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};Ey.prototype.loadTileDataAvailability=function(e,t,n){};function qTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var Fq=Ey;var Nto=y(C(),1);var $Tt="https://maps.googleapis.com/maps/api/geocode/json",STe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function Pq(e){e=e??Y.EMPTY_OBJECT;let t=e.key;this._resource=new Ve({url:$Tt,queryParameters:{key:t}}),this._credit=new Gt(STe,!0)}Object.defineProperties(Pq.prototype,{credit:{get:function(){return this._credit}}});Pq.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new de(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:le.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:STe,collapsible:!1}}})};var Mq=Pq;var kto=y(C(),1);var vY={};vY.defaultApiKey=void 0;vY.mapTilesApiEndpoint=new Ve({url:"https://tile.googleapis.com/v1/"});vY.getDefaultCredit=function(){return new Gt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var d_=vY;var Kto=y(C(),1);var Qs={};Qs.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Qs.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Qs.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Qs.defaultAccessToken=void 0;Qs.defaultShareKey=void 0;Qs._getAuthorizationHeader=function(){return l(Qs.defaultShareKey)?`Basic ${Qs.defaultShareKey}`:`Bearer ${Qs.defaultAccessToken}`};Qs.apiEndpoint=new Ve({url:"https://api.bentley.com"});Qs.getExports=async function(e,t){let n=new Ve({url:`${Qs.apiEndpoint}mesh-export`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Qs.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new de("Not allowed, forbidden");if(i.statusCode===422)throw new de(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${i.statusCode}`)}};Qs.getRealityDataMetadata=async function(e,t){let n=new Ve({url:`${Qs.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new de("Not allowed, forbidden");if(i.statusCode===404)throw new de(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new de(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${i.statusCode}`)}};Qs.getRealityDataURL=async function(e,t,n){let i=new Ve({url:`${Qs.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new de("Not allowed, forbidden");if(o.statusCode===404)throw new de(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new de(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${o.statusCode}`)}};var oa=Qs;var qto=y(C(),1);var jv={};jv.type=void 0;jv.getRequiredDataPoints=Ae.throwInstantiationError;jv.interpolateOrderZero=Ae.throwInstantiationError;jv.interpolate=Ae.throwInstantiationError;var vq=jv;var eno=y(C(),1),eSt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},ob=Object.freeze(eSt);var gno=y(C(),1);var ano=y(C(),1);function Nq(e){this._url=Ve.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(Nq.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});Nq.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===_y.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=le.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=m.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var qv=Nq;function tSt(e){if(!Object.values(ob).some(t=>t===e))throw new Ae(`Invalid geocodeProviderType: "${e}"`)}var LTe=Object.freeze({[ob.GOOGLE]:"google",[ob.BING]:"bing",[ob.DEFAULT]:void 0});function nSt(e){return LTe[e]}function iSt(e){return Object.entries(LTe).find(t=>t[1]===e)[0]}function Dq(e){e=e??Y.EMPTY_OBJECT;let t=e.geocodeProviderType??ob.DEFAULT,n=e.accessToken??Ah.defaultAccessToken,i=Ve.createIfNeeded(e.server??Ah.defaultServer);i.appendForwardSlash();let o=Ah.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Gt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new qv(r),this.geocodeProviderType=t}Object.defineProperties(Dq.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return iSt(this._pelias.url.queryParameters.geocoder)},set:function(e){tSt(e);let t={...this._pelias.url.queryParameters,geocoder:nSt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});Dq.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var u_=Dq;var Cno=y(C(),1);function NY(){Ae.throwInstantiationError()}Object.defineProperties(NY.prototype,{ellipsoid:{get:Ae.throwInstantiationError}});NY.prototype.project=Ae.throwInstantiationError;NY.prototype.unproject=Ae.throwInstantiationError;var Qq=NY;var Tno=y(C(),1);function XL(e){e=e??Y.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(XL.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});XL.prototype.findTimeInterval=yo.prototype.findTimeInterval;XL.prototype.wrapTime=yo.prototype.wrapTime;XL.prototype.clampTime=yo.prototype.clampTime;XL.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var Uq=XL;var wno=y(C(),1);function kq(e,t,n){e=Ve.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Gt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(kq.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});kq.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:Lt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=le.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=m.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var Yq=kq;var Fno=y(C(),1);var oSt={packedLength:void 0,pack:Ae.throwInstantiationError,unpack:Ae.throwInstantiationError},Oq=oSt;var vno=y(C(),1);var rSt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:Ae.throwInstantiationError,unpackInterpolationResult:Ae.throwInstantiationError},Hq=rSt;var Qno=y(C(),1);function RTe(){Ae.throwInstantiationError()}RTe.prototype.getURL=Ae.throwInstantiationError;var zq=RTe;var rio=y(C(),1);function sSt(e,t,n,i,o,r,s){let a=Oi.numberOfPoints(e,t,o),c,d=n.red,u=n.green,h=n.blue,p=n.alpha,g=i.red,f=i.green,b=i.blue,x=i.alpha;if(U.equals(n,i)){for(c=0;c<a;c++)r[s++]=U.floatToByte(d),r[s++]=U.floatToByte(u),r[s++]=U.floatToByte(h),r[s++]=U.floatToByte(p);return s}let I=(g-d)/a,_=(f-u)/a,E=(b-h)/a,S=(x-p)/a,R=s;for(c=0;c<a;c++)r[R++]=U.floatToByte(d+c*I),r[R++]=U.floatToByte(u+c*_),r[R++]=U.floatToByte(h+c*E),r[R++]=U.floatToByte(p+c*S);return R}function $v(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??dn.GEODESIC,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??ie.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*m.packedLength;o+=l(n)?1+n.length*U.packedLength:1,this.packedLength=o+ie.packedLength+3}$v.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};$v.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ie.unpack(e,t);t+=ie.packedLength;let c=e[t++]===1,d=e[t++],u=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=d,n._granularity=u,n):new $v({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:d,granularity:u})};var DY=new Array(2),QY=new Array(2),aSt={positions:DY,height:QY,ellipsoid:void 0,minDistance:void 0,granularity:void 0};$v.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=Z.chordLength(r,s.maximumRadius),c=l(n)&&!i,d,u=t.length,h,p,g,f,b=0;if(o===dn.GEODESIC||o===dn.RHUMB){let S,R,G;o===dn.GEODESIC?(S=Z.chordLength(r,s.maximumRadius),R=Oi.numberOfPoints,G=Oi.generateArc):(S=r,R=Oi.numberOfPointsRhumbLine,G=Oi.generateRhumbArc);let B=Oi.extractHeights(t,s),w=aSt;if(o===dn.GEODESIC?w.minDistance=a:w.granularity=r,w.ellipsoid=s,c){let F=0;for(d=0;d<u-1;d++)F+=R(t[d],t[d+1],S)+1;h=new Float64Array(F*3),g=new Uint8Array(F*4),w.positions=DY,w.height=QY;let P=0;for(d=0;d<u-1;++d){DY[0]=t[d],DY[1]=t[d+1],QY[0]=B[d],QY[1]=B[d+1];let A=G(w);if(l(n)){let T=A.length/3;f=n[d];for(let L=0;L<T;++L)g[P++]=U.floatToByte(f.red),g[P++]=U.floatToByte(f.green),g[P++]=U.floatToByte(f.blue),g[P++]=U.floatToByte(f.alpha)}h.set(A,b),b+=A.length}}else if(w.positions=t,w.height=B,h=new Float64Array(G(w)),l(n)){for(g=new Uint8Array(h.length/3*4),d=0;d<u-1;++d){let P=t[d],A=t[d+1],T=n[d],L=n[d+1];b=sSt(P,A,T,L,a,g,b)}let F=n[u-1];g[b++]=U.floatToByte(F.red),g[b++]=U.floatToByte(F.green),g[b++]=U.floatToByte(F.blue),g[b++]=U.floatToByte(F.alpha)}}else{p=c?u*2-2:u,h=new Float64Array(p*3),g=l(n)?new Uint8Array(p*4):void 0;let S=0,R=0;for(d=0;d<u;++d){let G=t[d];if(c&&d>0&&(m.pack(G,h,S),S+=3,f=n[d-1],g[R++]=U.floatToByte(f.red),g[R++]=U.floatToByte(f.green),g[R++]=U.floatToByte(f.blue),g[R++]=U.floatToByte(f.alpha)),c&&d===u-1)break;m.pack(G,h,S),S+=3,l(n)&&(f=n[d],g[R++]=U.floatToByte(f.red),g[R++]=U.floatToByte(f.green),g[R++]=U.floatToByte(f.blue),g[R++]=U.floatToByte(f.alpha))}}let x=new xn;x.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(x.color=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),p=h.length/3;let I=(p-1)*2,_=Me.createTypedArray(p,I),E=0;for(d=0;d<p-1;++d)_[E++]=d,_[E++]=d+1;return new pt({attributes:x,indices:_,primitiveType:We.LINES,boundingSphere:ue.fromPoints(t)})};var Kq=$v;var uio=y(C(),1);function WL(e){let t=e.radius??1,i={radii:new m(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new xa(i),this._workerName="createSphereGeometry"}WL.packedLength=xa.packedLength;WL.pack=function(e,t,n){return xa.pack(e._ellipsoidGeometry,t,n)};var cSt=new xa,Ty={radius:void 0,radii:new m,vertexFormat:new we,stackPartitions:void 0,slicePartitions:void 0};WL.unpack=function(e,t,n){let i=xa.unpack(e,t,cSt);return Ty.vertexFormat=we.clone(i._vertexFormat,Ty.vertexFormat),Ty.stackPartitions=i._stackPartitions,Ty.slicePartitions=i._slicePartitions,l(n)?(m.clone(i._radii,Ty.radii),n._ellipsoidGeometry=new xa(Ty),n):(Ty.radius=i._radii.x,new WL(Ty))};WL.createGeometry=function(e){return xa.createGeometry(e._ellipsoidGeometry)};var Jq=WL;var fio=y(C(),1);function Sy(e){}Object.defineProperties(Sy.prototype,{ellipsoid:{get:Ae.throwInstantiationError},rectangle:{get:Ae.throwInstantiationError},projection:{get:Ae.throwInstantiationError}});Sy.prototype.getNumberOfXTilesAtLevel=Ae.throwInstantiationError;Sy.prototype.getNumberOfYTilesAtLevel=Ae.throwInstantiationError;Sy.prototype.rectangleToNativeRectangle=Ae.throwInstantiationError;Sy.prototype.tileXYToNativeRectangle=Ae.throwInstantiationError;Sy.prototype.tileXYToRectangle=Ae.throwInstantiationError;Sy.prototype.positionToTileXY=Ae.throwInstantiationError;var jq=Sy;var Gio=y(C(),1);function lSt(e,t){this.rectangle=e,this.maxLevel=t}function VTe(e){this.ellipsoid=e.ellipsoid??ie.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}VTe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function dSt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new ao({ellipsoid:e.ellipsoid});else throw new de(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=Z.toRadians(parseFloat(s.getAttribute("minx"))),c=Z.toRadians(parseFloat(s.getAttribute("miny"))),d=Z.toRadians(parseFloat(s.getAttribute("maxx"))),u=Z.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new lSt(new le(a,c,d,u),h))}}function uSt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new de(i)}async function mSt(e,t,n){try{let i=await t.fetchXML();dSt(e,i)}catch(i){uSt(t,i,n)}}function Ly(e){e=e??Y.EMPTY_OBJECT,this._errorEvent=new Ce,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(Ly.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Ly.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=new VTe(t),i=Ve.createIfNeeded(e);await mSt(n,i);let o=new Ly(t);return n.build(o),o._resource=i,o};Ly.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new yc({buffer:$m(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:hSt(a,e,t,n),structure:a._terrainDataStructure})})};Ly.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var GTe=new le;function hSt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let d=r[c];if(d.maxLevel<=i)continue;let u=d.rectangle,h=le.intersection(u,s,GTe);l(h)&&(UY(o,u,t*2,n*2,i+1)&&(a|=4),UY(o,u,t*2+1,n*2,i+1)&&(a|=8),UY(o,u,t*2,n*2+1,i+1)&&(a|=1),UY(o,u,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function UY(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(le.intersection(r,t,GTe))}Ly.prototype.getTileDataAvailable=function(e,t,n){};Ly.prototype.loadTileDataAvailability=function(e,t,n){};var qq=Ly;var Pio=y(C(),1);function m_(e){e=e??Y.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??ze.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(m_.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(m_.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=fSt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});m_.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,me(this)};m_.prototype.isDestroyed=function(){return!1};m_.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};m_.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??ze.MINIMUM_VALUE,s=j.secondsDifference(o,r),a=t.duration,c,d=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let u=i?this.tolerance??1:.001;Math.abs(c-d)>u&&(this._seeking=!0,t.currentTime=c)};function fSt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var $q=m_;var vio=y(C(),1),pSt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},e$=Object.freeze(pSt);var Uio=y(C(),1);function ASt(e){return e=e??Y.EMPTY_OBJECT,c_.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var eN=ASt;var zio=y(C(),1);function gSt(e){return e=e??Y.EMPTY_OBJECT,c_.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:ie.WGS84})}var h_=gSt;var jio=y(C(),1);var bSt=1953029805,ySt=2917034100;function t$(e,t){if(t$.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new de("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===bSt||o===ySt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,d=n,u,h=8;for(;s<c;)for(h=(h+8)%24,u=h;s<c&&u<d;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(u,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(u+4,!0),!0),s+=8,u+=24;if(s<a)for(u>=d&&(h=(h+8)%24,u=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(u)),s++,u++}t$.passThroughDataForTesting=!1;var tN=t$;var too=y(C(),1);function ZTe(e,t){return _r("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(ZTe,"EMPTY_OBJECT",{get:function(){return _r("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),Y.EMPTY_OBJECT}});var n$=ZTe;var soo=y(C(),1);var CSt=new m;function xSt(e,t,n,i){let o=Hy(e,t,n,i,CSt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var i$=xSt;var coo=y(C(),1);function ISt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var f_=ISt;var uoo=y(C(),1);function _St(e){switch(e){case ne.FLOAT:return"float";case ne.FLOAT_VEC2:return"vec2";case ne.FLOAT_VEC3:return"vec3";case ne.FLOAT_VEC4:return"vec4";case ne.FLOAT_MAT2:return"mat2";case ne.FLOAT_MAT3:return"mat3";case ne.FLOAT_MAT4:return"mat4";case ne.SAMPLER_2D:return"sampler2D";case ne.BOOL:return"bool"}}var o$=_St;var hoo=y(C(),1);function ESt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var nN=ESt;var goo=y(C(),1);var TSt=new m(1,1,1);function r$(e){e=e??TSt,this._dimensions=m.clone(e)}Object.defineProperties(r$.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){m.clone(e,this._dimensions)}}});var SSt=new m;r$.prototype.emit=function(e){let t=this._dimensions,n=m.multiplyByScalar(t,.5,SSt),i=Z.randomBetween(-n.x,n.x),o=Z.randomBetween(-n.y,n.y),r=Z.randomBetween(-n.z,n.z);e.position=m.fromElements(i,o,r,e.position),e.velocity=m.normalize(e.position,e.velocity)};var s$=r$;var Coo=y(C(),1);function vp(){this.featurePropertiesDirty=!1}Object.defineProperties(vp.prototype,{featuresLength:{get:function(){Ae.throwInstantiationError()}},pointsLength:{get:function(){Ae.throwInstantiationError()}},trianglesLength:{get:function(){Ae.throwInstantiationError()}},geometryByteLength:{get:function(){Ae.throwInstantiationError()}},texturesByteLength:{get:function(){Ae.throwInstantiationError()}},batchTableByteLength:{get:function(){Ae.throwInstantiationError()}},innerContents:{get:function(){Ae.throwInstantiationError()}},ready:{get:function(){Ae.throwInstantiationError()}},tileset:{get:function(){Ae.throwInstantiationError()}},tile:{get:function(){Ae.throwInstantiationError()}},url:{get:function(){Ae.throwInstantiationError()}},batchTable:{get:function(){Ae.throwInstantiationError()}},metadata:{get:function(){Ae.throwInstantiationError()},set:function(e){Ae.throwInstantiationError()}},group:{get:function(){Ae.throwInstantiationError()},set:function(e){Ae.throwInstantiationError()}}});vp.prototype.hasProperty=function(e,t){Ae.throwInstantiationError()};vp.prototype.getFeature=function(e){Ae.throwInstantiationError()};vp.prototype.applyDebugSettings=function(e,t){Ae.throwInstantiationError()};vp.prototype.applyStyle=function(e){Ae.throwInstantiationError()};vp.prototype.update=function(e,t){Ae.throwInstantiationError()};vp.prototype.pick=function(e,t,n){Ae.throwInstantiationError()};vp.prototype.isDestroyed=function(){Ae.throwInstantiationError()};vp.prototype.destroy=function(){Ae.throwInstantiationError()};var a$=vp;var Woo=y(C(),1);var Soo=y(C(),1);function FL(e,t){this._conditionsExpression=ke(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,RSt(this,t)}Object.defineProperties(FL.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function LSt(e,t){this.condition=e,this.expression=t}function RSt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new LSt(new $u(a,t),new $u(c,t)))}e._runtimeConditions=n}FL.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};FL.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};FL.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],d=c.condition.getShaderExpression(t,n),u=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${d}) + { + return ${u}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};FL.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];ci(e,o.condition.getVariables()),ci(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var iN=FL;function Ry(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,VSt(this,e)}function VSt(e,t){t=ke(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??Y.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new $u(o[r],i))}e._meta=n,e._ready=!0}function br(e,t){let n=(e._style??Y.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new $u(String(t));if(typeof t=="string")return new $u(t,n);if(l(t.conditions))return new iN(t,n)}else return;return t}function yr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ke(e.conditionsExpression,!0)}else return;return e}Object.defineProperties(Ry.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=br(this,e),this._style.show=yr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=br(this,e),this._style.color=yr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=br(this,e),this._style.pointSize=yr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=br(this,e),this._style.pointOutlineColor=yr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=br(this,e),this._style.pointOutlineWidth=yr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=br(this,e),this._style.labelColor=yr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=br(this,e),this._style.labelOutlineColor=yr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=br(this,e),this._style.labelOutlineWidth=yr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=br(this,e),this._style.font=yr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=br(this,e),this._style.labelStyle=yr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=br(this,e),this._style.labelText=yr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=br(this,e),this._style.backgroundColor=yr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=br(this,e),this._style.backgroundPadding=yr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=br(this,e),this._style.backgroundEnabled=yr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=br(this,e),this._style.scaleByDistance=yr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=br(this,e),this._style.translucencyByDistance=yr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=br(this,e),this._style.distanceDisplayCondition=yr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=br(this,e),this._style.heightOffset=yr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=br(this,e),this._style.anchorLineEnabled=yr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=br(this,e),this._style.anchorLineColor=yr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=br(this,e),this._style.image=yr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=br(this,e),this._style.disableDepthTestDistance=yr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=br(this,e),this._style.horizontalOrigin=yr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=br(this,e),this._style.verticalOrigin=yr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=br(this,e),this._style.labelHorizontalOrigin=yr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=br(this,e),this._style.labelVerticalOrigin=yr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});Ry.fromUrl=function(e){return Ve.createIfNeeded(e).fetchJson(e).then(function(n){return new Ry(n)})};Ry.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};Ry.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};Ry.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};Ry.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&ci(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&ci(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&ci(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var p_=Ry;var uro=y(C(),1);var voo=y(C(),1);function oN(e){e=e??Y.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new e_({comparator:oN.comparator})}oN.prototype.addSubtree=function(e){let t=new GSt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};oN.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};oN.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function GSt(e,t){this.subtree=e,this.stamp=t}var rN=oN;function sN(e){e=e??Y.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=m.ZERO.clone(),paddingAfter:c=m.ZERO.clone(),globalTransform:d=X.IDENTITY.clone(),shapeTransform:u=X.IDENTITY.clone(),minBounds:h,maxBounds:p,minimumValues:g,maximumValues:f,maximumTileCount:b}=e;this._shapeTransform=u,this._globalTransform=d,this._shape=r,this._minBounds=h,this._maxBounds=p,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===qa.ELLIPSOID?Um.Z_UP:Um.Y_UP,this._minimumValues=g,this._maximumValues=f,this._maximumTileCount=b,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new rN}Object.defineProperties(sN.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});sN.fromUrl=async function(e){let t=Ve.createIfNeeded(e),n=await t.fetchJson();BSt(n);let i=vSt(n,t);await i.load();let{root:o}=n,r=Ii(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new Gx({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,d=NSt(s,c);Object.assign(d,wSt(o)),l(o.transform)?d.globalTransform=X.unpack(o.transform):d.globalTransform=X.clone(X.IDENTITY),d.dimensions=m.unpack(a.dimensions),d.maximumTileCount=ZSt(s),l(a.padding)&&(d.paddingBefore=m.unpack(a.padding.before),d.paddingAfter=m.unpack(a.padding.after));let u=new sN(d),h=new Bx(t,o,i.schema);return u._implicitTileset=h,u._availableLevels=h.availableLevels,Mi.unload(i),u};function ZSt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(kC.TILESET_TILE_COUNT)}function BSt(e){let t=e.root;if(!l(t.content))throw new de("Root must have content");if(!Ii(t.content,"3DTILES_content_voxels"))throw new de("Root tile content must have 3DTILES_content_voxels extension");if(!Ii(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new de("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ii(e,"3DTILES_metadata"))throw new de("Tileset must have a metadata schema")}function wSt(e){let t=e.boundingVolume;if(l(t.box))return PSt(t.box);if(l(t.region))return XSt(t.region);if(Ii(t,"3DTILES_bounding_volume_cylinder"))return MSt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new de("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function XSt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=X.fromScale(ie.WGS84.radii),c=new m(t,n,r),d=new m(i,o,s);return{shape:qa.ELLIPSOID,minBounds:c,maxBounds:d,shapeTransform:a}}var WSt=new m,FSt=new $;function PSt(e){let t=vn.unpack(e),n=$.getScale(t.halfAxes,WSt),i=$.getRotation(t.halfAxes,FSt);return{shape:qa.BOX,minBounds:m.negate(n,new m),maxBounds:m.clone(n),shapeTransform:X.fromRotationTranslation(i,t.center)}}function MSt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-Z.PI,maxAngle:r=Z.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],d=.5*i+s[2],u=X.fromTranslationQuaternionRotationScale(m.unpack(s),Pe.unpack(a),m.ONE);return{shape:qa.CYLINDER,minBounds:m.fromElements(t,o,c),maxBounds:m.fromElements(n,r,d),shapeTransform:u}}function vSt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Mi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Mi.getSchemaLoader({schema:i})}function NSt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,f])=>{let{type:b,componentType:x}=f,I=o?.properties[g].min,_=o?.properties[g].max,E=bt.getComponentCount(b),S=BTe(I,E),R=BTe(_,E);return{id:g,type:b,componentType:x,minValue:S,maxValue:R}}),a=s.map(g=>g.id),c=s.map(g=>g.type),d=s.map(g=>g.componentType),u=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),p=u.some(l);return{className:t,names:a,types:c,componentTypes:d,minimumValues:p?u:void 0,maximumValues:p?h:void 0}}function BTe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function DSt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=rg(a);return o=await UC.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}sN.prototype.requestData=async function(e){e=e??Y.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new wx({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,d=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await DSt(this,d);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:f,baseResource:b}=s,x=f[0].getDerivedResource({templateValues:a.getTemplateValues()}),I=b.getDerivedResource({url:x.url});return JI.fromGltf(I)};var c$=sN;var pro=y(C(),1);function l$(e){e=e??1,this._radius=e??1}Object.defineProperties(l$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});l$.prototype.emit=function(e){let t=Z.randomBetween(0,Z.TWO_PI),n=Z.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=m.fromElements(i,o,r,e.position),e.velocity=m.clone(m.UNIT_Z,e.velocity)};var aN=l$;var rso=y(C(),1);var gro=y(C(),1),d$={CUMULUS:0};d$.validate=function(e){return e===d$.CUMULUS};var PL=Object.freeze(d$);var Ero=y(C(),1);function Cf(e,t){if(e=e??Y.EMPTY_OBJECT,this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=m.clone(e.maximumSize),this._scale=new D(this._maximumSize.x,this._maximumSize.y);else{this._scale=D.clone(e.scale??new D(20,12));let n=new m(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=m.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=U.clone(e.color??U.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var QSt=Cf.SHOW_INDEX=0,USt=Cf.POSITION_INDEX=1,kSt=Cf.SCALE_INDEX=2,YSt=Cf.MAXIMUM_SIZE_INDEX=3,OSt=Cf.SLICE_INDEX=4,HSt=Cf.BRIGHTNESS_INDEX=5,zSt=Cf.COLOR_INDEX=6;Cf.NUMBER_OF_PROPERTIES=7;function A_(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Cf.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,A_(this,QSt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),A_(this,USt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;D.equals(t,e)||(D.clone(e,t),A_(this,kSt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;m.equals(t,e)||(m.clone(e,t),A_(this,YSt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),A_(this,zSt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,A_(this,OSt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,A_(this,HSt))}}});Cf.prototype._destroy=function(){this._cloudCollection=void 0};var Bu=Cf;var wu,kY=new m,KSt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},JSt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},jSt=Bu.SHOW_INDEX,qSt=Bu.POSITION_INDEX,$St=Bu.SCALE_INDEX,eLt=Bu.MAXIMUM_SIZE_INDEX,tLt=Bu.SLICE_INDEX,nLt=Bu.BRIGHTNESS_INDEX,iLt=Bu.NUMBER_OF_PROPERTIES,oLt=Bu.COLOR_INDEX;function xf(e){e=e??Y.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(iLt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=m.clone(e.noiseOffset??m.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:wTe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function wTe(e){return function(){return kY.x=e._textureSliceWidth,kY.y=e._noiseTextureRows,kY.z=1/e._noiseTextureRows,kY}}Object.defineProperties(xf.prototype,{length:{get:function(){return m$(this),this._clouds.length}}});function XTe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}xf.prototype.add=function(e){e=e??Y.EMPTY_OBJECT;let t=e.cloudType??PL.CUMULUS,n;return t===PL.CUMULUS&&(n=new Bu(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};xf.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};xf.prototype.removeAll=function(){XTe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function m$(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}xf.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};xf.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};xf.prototype.get=function(e){return m$(this),this._clouds[e]};var rLt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),sLt=new Uint16Array([0,1,2,0,2,3]);function aLt(e){let t=It.createVertexBuffer({context:e,typedArray:rLt,usage:Ne.STATIC_DRAW}),n=It.createIndexBuffer({context:e,typedArray:sLt,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:J.FLOAT}];return new ui({context:e,attributes:i,indexBuffer:n})}var h$;function cLt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=It.createIndexBuffer({context:e,typedArray:o,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function lLt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=It.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function dLt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=It.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Ne.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function uLt(e,t,n){let i=[{index:wu.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.packedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.packedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.color,componentsPerAttribute:4,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,usage:Ne.STATIC_DRAW}];n&&i.push({index:wu.direction,componentsPerAttribute:2,componentDatatype:J.FLOAT,vertexBuffer:dLt(e)});let o=n?t:4*t;return new zA(e,i,o,n)}var u$=new ni;function WTe(e,t,n,i){let o,r=n[wu.positionHighAndScaleX],s=n[wu.positionLowAndScaleY],a=i.position;ni.fromCartesian(a,u$);let c=i.scale,d=u$.high,u=u$.low;e._instanced?(o=i._index,r(o,d.x,d.y,d.z,c.x),s(o,u.x,u.y,u.z,c.y)):(o=i._index*4,r(o+0,d.x,d.y,d.z,c.x),r(o+1,d.x,d.y,d.z,c.x),r(o+2,d.x,d.y,d.z,c.x),r(o+3,d.x,d.y,d.z,c.x),s(o+0,u.x,u.y,u.z,c.y),s(o+1,u.x,u.y,u.z,c.y),s(o+2,u.x,u.y,u.z,c.y),s(o+3,u.x,u.y,u.z,c.y))}function FTe(e,t,n,i){let o,r=n[wu.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function PTe(e,t,n,i){let o,r=n[wu.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function MTe(e,t,n,i){let o,r=n[wu.color],s=i.color,a=U.floatToByte(s.red),c=U.floatToByte(s.green),d=U.floatToByte(s.blue),u=U.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,d,u)):(o=i._index*4,r(o+0,a,c,d,u),r(o+1,a,c,d,u),r(o+2,a,c,d,u),r(o+3,a,c,d,u))}function mLt(e,t,n,i){WTe(e,t,n,i),FTe(e,t,n,i),PTe(e,t,n,i),MTe(e,t,n,i)}function hLt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=aLt(a),o._spNoise=ln.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,d=o.noiseOffset;o._noiseTexture=new Wt({context:a,width:r*r/s,height:r*s,pixelDatatype:Ye.UNSIGNED_BYTE,pixelFormat:tt.RGBA,sampler:new sn({wrapS:Ln.REPEAT,wrapT:Ln.REPEAT,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})});let u=new Il({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:wTe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return d}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(u),o._loading=!0}function fLt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=uLt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];mLt(e,t,s,c)}n._vaf.commit(h$(i))}}var pLt=[];function ALt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,d=pLt;d.length=0,(c[qSt]||c[$St])&&d.push(WTe),(c[jSt]||c[nLt])&&d.push(FTe),(c[eLt]||c[tLt])&&d.push(PTe),c[oLt]&&d.push(MTe);let u=d.length,h=i._vaf.writers,p,g,f;if(a/r>.1){for(p=0;p<a;++p)for(g=s[p],g._dirty=!1,f=0;f<u;++f)d[f](e,t,h,g);i._vaf.commit(h$(n))}else{for(p=0;p<a;++p){for(g=s[p],g._dirty=!1,f=0;f<u;++f)d[f](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function gLt(e,t,n,i){let o=t.context,r=e,s=new Oe({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new Oe({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=ln.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:wu}),r._rs=Qe.fromCache({depthTest:{enabled:!0,func:ne.LESS},depthMask:!1,blending:bn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function bLt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let d=0;d<c;d++){let u=s[d];l(u)||(u=s[d]=new ot),u.pass=Ge.TRANSLUCENT,u.owner=e,u.uniformMap=o,u.count=a[d].indicesCount,u.vertexArray=a[d].va,u.shaderProgram=n._sp,u.renderState=n._rs,n._instanced&&(u.count=6,u.instanceCount=n._clouds.length),r.push(u)}}}xf.prototype.update=function(e){if(m$(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&hLt(this,e,hP,mP),this._instanced=e.context.instancedArrays,wu=this._instanced?JSt:KSt,h$=this._instanced?lLt:cLt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?fLt(this,e):r>0&&ALt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&gLt(this,e,uP,dP),bLt(this,e))};xf.prototype.isDestroyed=function(){return!1};xf.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),XTe(this._clouds),me(this)};var f$=xf;var lso=y(C(),1);var yLt=Z.toRadians(30);function p$(e){this._angle=e??yLt}Object.defineProperties(p$.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});p$.prototype.emit=function(e){let t=Math.tan(this._angle),n=Z.randomBetween(0,Z.TWO_PI),i=Z.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=m.fromElements(o,r,s,e.velocity),m.normalize(e.velocity,e.velocity),e.position=m.clone(m.ZERO,e.position)};var A$=p$;var fso=y(C(),1);function cN(e){e=e??Y.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=go.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(cN.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});cN.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;cN.prototype.isTranslucent=go.prototype.isTranslucent;cN.prototype.getRenderState=go.prototype.getRenderState;var g$=cN;var Lso=y(C(),1);function YY(e){e=e??Y.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=new X,this.id=e.id,this._id=void 0,this._primitive=void 0}YY.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!X.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=X.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_X],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.RED,U.RED],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this}),n=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_Y],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.GREEN,U.GREEN],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this}),i=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_Z],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.BLUE,U.BLUE],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this});this._primitive=new Nn({geometryInstances:[t,n,i],appearance:new bs,asynchronous:!1})}this._primitive.update(e)}};YY.prototype.isDestroyed=function(){return!1};YY.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var lN=YY;var Zso=y(C(),1);function CLt(e){this.direction=m.clone(e.direction),this.color=U.clone(e.color??U.WHITE),this.intensity=e.intensity??1}var b$=CLt;var kso=y(C(),1);var wso=y(C(),1),dN=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var Wso=y(C(),1),uN=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function g_(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??uN,this._fragmentShaderSource=e.fragmentShaderSource??dN,this._renderState=go.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(g_.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return g_.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});g_.VERTEX_FORMAT=we.POSITION_AND_ST;g_.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;g_.prototype.isTranslucent=go.prototype.isTranslucent;g_.prototype.getRenderState=go.prototype.getRenderState;var y$=g_;var jso=y(C(),1);function Sd(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??Sd.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??Sd.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??Sd.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??Sd.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??Sd.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new Ce,this._nominalFrameRate=new Ce,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){xLt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){ILt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}Sd.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};Sd.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new Sd({scene:e})),e._frameRateMonitor};Object.defineProperties(Sd.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});Sd.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};Sd.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};Sd.prototype.isDestroyed=function(){return!1};Sd.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),me(this)};function xLt(e,t){if(e._pauseCount>0)return;let n=Fi();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ai.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ai.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ai.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function ILt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var mN=Sd;var uao=y(C(),1);var vTe=y(Vq(),1);function C$(){this._image=new Image}C$.prototype.isReady=function(){return!0};C$.prototype.shouldDiscardImage=function(e){return e===this._image};function b_(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new le(-Z.PI,-Z.PI,Z.PI,Z.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new C$),this._errorEvent=new Ce}Object.defineProperties(b_.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});b_.fromMetadata=function(e,t){if(!e.imageryPresent)throw new de(`The server ${e.url} doesn't have imagery`);let n=new b_(t);return n._metadata=e,n};b_.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};b_.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=ib.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let d=new sr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,d);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=_Lt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(d){tN(r.key,d);let u=new Uint8Array(d),h,p=r.protoImagery;if((!l(p)||!p)&&(h=ELt(u)),!l(h)&&(!l(p)||p)){let g=TLt(u);h=g.imageType,u=g.imageData}return!l(h)||!l(u)?o:FC({uint8Array:u,format:h,flipY:!0})})};b_.prototype.pickFeatures=function(e,t,n,i,o){};function _Lt(e,t,n,i,o,r){let s=ib.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function ELt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function TLt(e){let t=vTe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new de("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var x$=b_;var bao=y(C(),1);var SLt=new U(1,1,1,.4),LLt=new U(0,1,0,.05),RLt=new U(0,.5,0,.2);function y_(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ao({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??SLt,this._glowColor=e.glowColor??LLt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??RLt,this._errorEvent=new Ce,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(y_.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});y_.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};y_.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};y_.prototype.getTileCredits=function(e,t,n){};y_.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};y_.prototype.pickFeatures=function(e,t,n,i,o){};var I$=y_;var jco=y(C(),1);var _co=y(C(),1);var sco=y(C(),1);var Rao=y(C(),1);function If(){}If._maxDecodingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);If._decodeTaskProcessor=new hi("decodeI3S",If._maxDecodingConcurrency);If._promise=void 0;async function VLt(){if(await If._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return If._decodeTaskProcessor;throw new de("I3S decoder could not be initialized.")}If.decode=async function(e,t,n,i,o){return l(If._promise)||(If._promise=VLt()),If._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,d=0,u=0;l(s.obb)?(c=s.obb.center[0],d=s.obb.center[1],u=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],d=s.mbs[1],u=s.mbs[2]);let h=$.fromRotationX(-Z.PI_OVER_TWO),p=new $;$.multiply(h,a,p);let g=ge.fromDegrees(c,d,u),f=ie.WGS84.cartographicToCartesian(g),b={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:ie.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:f,parentRotation:p,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(b)})};var hN=If;var Bao=y(C(),1);function _$(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(_$.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});_$.prototype.load=async function(){return this._data=await _f.loadJson(this._resource),this._data};var fN=_$;var Fao=y(C(),1);function rb(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(rb.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function OY(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function GLt(e){return e==="String"?1:OY(e)}async function ZLt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}rb.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=ZLt(this).catch(function(e){console.error(e)}),this._loadPromise)};rb.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};rb.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};rb.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let d=0;d<a;++d){let u=this._parseValue(e,r.valueType,t);u.value.charCodeAt(0)!==0&&(c+=u.value),t=u.offset}this._values[o].push(c)}}}};rb.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=OY(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=OY(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};rb.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=GLt(i.valueType)}if(e.byteLength<t)throw new de(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};rb.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new de(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=OY(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new de(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new de(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new de(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var pN=rb;var Uao=y(C(),1);function AN(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(AN.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});AN.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var BLt=new m,wLt=new m,XLt=new m,WLt=new m,FLt=new m;function E$(e,t,n,i){let o=m.subtract(i,n,BLt),r=m.cross(o,m.subtract(e,n,wLt),WLt),s=m.cross(o,m.subtract(t,n,XLt),FLt);return m.dot(r,s)>=0}var PLt=new m,MLt=new m,vLt=new m,NLt=new m,DLt=new m,QLt=new m,ULt=new m,kLt=new m,YLt=new m,OLt=new m;AN.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new m(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,$.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,d=this._customAttributes.positions,u=this._customAttributes.indices,h;l(u)?h=u.length:h=d.length/3;for(let p=0;p<h;p++){let g,f,b;l(u)?(g=u[p],f=u[p+1],b=u[p+2]):(g=p*3,f=p*3+1,b=p*3+2);let x=m.fromElements(d[g*3],d[g*3+1],d[g*3+2],PLt),I=m.fromElements(d[f*3],d[f*3+1],d[f*3+2],MLt),_=new m(d[b*3],d[b*3+1],d[b*3+2],vLt);if(!E$(i,x,I,_)||!E$(i,I,x,_)||!E$(i,_,x,I))continue;let E=m.subtract(I,x,NLt),S=m.subtract(_,x,DLt),R=m.cross(E,S,QLt);if(m.magnitude(R)===0)continue;let G=m.normalize(R,ULt),B=m.subtract(i,x,kLt),w=Math.abs(m.dot(B,G));if(w<o){o=w,r=p;let F=m.magnitudeSquared(m.subtract(i,x,B)),P=m.magnitudeSquared(m.subtract(i,I,YLt)),A=m.magnitudeSquared(m.subtract(i,_,OLt));F<P&&F<A?(a=g,c=x,s=F):P<A?(a=f,c=I,s=P):(a=b,c=_,s=A)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:m.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function NTe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(f_(e[i])):t.push(e[i]);return t}AN.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},d=!1,u,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let E=this._parent._data.mesh.material.definition;if(E>=0&&E<this._layer._data.materialDefinitions.length){if(u=this._layer._data.materialDefinitions[E],c=u,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){d=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let S="0";if(l(this._layer._data.textureSetDefinitions))for(let R=0;R<this._layer._data.textureSetDefinitions.length;R++){let G=this._layer._data.textureSetDefinitions[R];for(let B=0;B<G.formats.length;B++){let w=G.formats[B];if(w.format==="jpg"){S=w.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${S}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=NTe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=NTe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(d=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let p=[],g=[],f=[];d&&(p=[{sampler:0,source:0}],g=[{uri:h}],f=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let b=[],x=n.length;for(let _=0;_<x;_++){let E=n[_].primitives,S=E.length;for(let R=0;R<S;R++){let G=E[R];if(l(G.material)){for(;G.material>=b.length;){let w=ke(c,!0);b.push(w)}let B=b[G.material];l(G.extra)&&G.extra.isTransparent?l(B.alphaMode)||(B.alphaMode="BLEND"):B.alphaMode==="BLEND"&&(B.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:b,textures:p,images:g,samplers:f,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var ML=AN;function tl(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(tl.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});tl.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new ym(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await _f.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function DTe(e,t){let n=new pN(e,t);return e._fields[t.name]=n,n.load()}tl.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(DTe(this,i))}return Promise.all(t)};tl.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return DTe(this,o)}return Promise.resolve()};tl.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};tl.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};tl.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new tl(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};tl.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new ML(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new ML(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};tl.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new fN(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};tl.prototype._clearGeometryData=function(){this._geometryData=[]};tl.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=ge.fromDegrees(e.center[0],e.center[1],e.center[2]):n=ge.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let I=0;I<this._dataProvider._geoidDataList.length;I++){let _=this._dataProvider._geoidDataList[I],E=_.projection.project(n);if(E.x>_.nativeExtent.west&&E.x<_.nativeExtent.east&&E.y>_.nativeExtent.south&&E.y<_.nativeExtent.north){n.height+=JLt(E.x,E.y,_);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=ie.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=ie.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let I=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/I}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let I=this._data.lodThreshold;s=r/I}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let I=0;I<this._data.lodSelection.length;I++)this._data.lodSelection[I].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[I].maxError);s===1/0&&(s=1e5);let a=s*16,c=new ic(0,0,0),d=Dt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(d=new Pe(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let u=$.fromQuaternion(d),h=$.inverse(u,new $),p=new X(u[0],u[1],u[2],0,u[3],u[4],u[5],0,u[6],u[7],u[8],0,o.x,o.y,o.z,1),g=X.inverse(p,new X),f=X.clone(p);l(this._parent._globalTransform)&&X.multiply(p,this._parent._inverseGlobalTransform,f),this._globalTransform=p,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let b=[];for(let I=0;I<this._children.length;I++)b.push(this._children[I]._create3DTileDefinition());return{children:b,refine:"REPLACE",boundingVolume:i,transform:[f[0],f[4],f[8],f[12],f[1],f[5],f[9],f[13],f[2],f[6],f[10],f[14],f[3],f[7],f[11],f[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};tl.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};tl.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await hN.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function HLt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function zLt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function QTe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await HLt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!zLt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}tl.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=QTe(this,t);e.push(n)}return Promise.all(e)};ym.prototype._hookedRequestContent=ym.prototype.requestContent;ym.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new Ve({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{QTe(e._i3sNode,n)})),e._isLoading=!1,t})}};function KLt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function HY(e,t,n,i){let o=e+t*n;return i[o]}function JLt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,d=a<n.height?a+1:a;a=n.height-1-a,d=n.height-1-d;let u=HY(s,a,n.width,n.buffer),h=HY(c,a,n.width,n.buffer),p=HY(s,d,n.width,n.buffer),g=HY(c,d,n.width,n.buffer),f=KLt(o,r,u,h,p,g);return f=f*n.scale+n.offset,f}Object.defineProperties(ym.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var vL=tl;var uco=y(C(),1);function zY(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(zY.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function T$(e,t){let n=[];for(let i=0;i<e.length;i++){let o=U.byteToFloat(e[i]);i<3?n.push(f_(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function NL(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=T$(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=T$(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=T$(a.color,a.transparency)))}break}}return n}function jLt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=NL(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let d=a[c],u=n;for(let h=0;h<d.length;h++){let p=d[h];h===d.length-1?u[p]=s:(l(u[p])||(u[p]={}),u=u[p])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=NL(o.symbol,t)}return n}}function qLt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(NL(r.symbol,t)))}return i.symbols.push(void 0),i}}zY.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=NL(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=NL(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=jLt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=NL(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=qLt(i,n))}};function UTe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?UTe(s,t,n,i):s}}function $Lt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function e1t(e,t,n){let i=t[n],o=$Lt(e.ranges,i);return e.symbols[o]}zY.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>UTe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>e1t(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var gN=zY;function Ld(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new Ve({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(Ld.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});Ld.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new de(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new gN(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};Ld.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let d=0;d<c.length;d++)s.push(c[d])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};Ld.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};Ld.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new vL(this,t,!0)}else this._rootNode=new vL(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};Ld.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};Ld._fetchJson=function(e){return e.fetchJson()};Ld.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=Ld._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};Ld.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=le.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=le.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};Ld.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ke(e):{},e.outlineColor=U.fromCartesian4(ce.fromArray(o))),this._tileset=await Ps.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};Ld.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};Ld.prototype.filterByAttributes=function(e){this._filters=l(e)?ke(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var C_=Ld;var Rco=y(C(),1);function KY(e,t){this._dataProvider=e,this._resource=new Ve({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(KY.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});KY.prototype.load=async function(){return this._data=await _f.loadJson(this._resource),this._data};KY.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var bN=KY;var Xco=y(C(),1);function yN(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(yN.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});yN._fromData=async function(e,t,n,i){let o=new yN(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let d=yN._fromData(e,t,r[c],o);s.push(d)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let d=a[c];o._sublayers.push(d),o._i3sLayers.push(...d._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new Ve({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await _f.loadJson(o._resource),c=new C_(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var CN=yN;var OTe=y(kTe(),1);function Us(e){e=e??Y.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??Y.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Us.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Us.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return me(this)};Us.prototype.isDestroyed=function(){return!1};Us.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Us.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Us.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Us.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function t1t(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function YTe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=t1t(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=CN._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new bN(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=le.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new C_(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Us.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Us.loadJson(n),o=new Us(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=YTe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await YTe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Us._fetchJson=function(e){return e.fetchJson()};Us.loadJson=async function(e){let t=await Us._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new de(t.error)}return t};Us.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new de(`Failed to load binary: ${e.url}`);return t};Us.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var n1t=new D;function i1t(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=ge.fromRadians(t.west,t.north),a=ge.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),d=n.positionToTileXY(a,r);for(let h=c.x;h<=d.x;h++)for(let p=c.y;p<=d.y;p++){let g=D.fromElements(h,p,n1t),f=g.toString();if(!o.hasOwnProperty(f)){let b={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[f]=b,i.push(b)}}let u=[];for(let h=0;h<i.length;++h){let p=i[h],g=p.terrainProvider.requestTileGeometry(p.x,p.y,p.level);u.push(g)}return Promise.all(u).then(function(h){let p=[];for(let g=0;g<h.length;g++){let f={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},b=h[g],x="Geographic";n._projection instanceof Ui&&(x="WebMercator");let I={projectionType:x,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(f.x,f.y,f.level),height:b._height,width:b._width,scale:b._structure.heightScale,offset:b._structure.heightOffset};if(b._encoding===Xm.LERC){let _=OTe.default.decode(b._buffer);I.buffer=_.pixels[0]}else I.buffer=b._buffer;p.push(I)}return p})}async function o1t(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await i1t(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Us.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=o1t(this),this._geoidDataPromise)};Us.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?le.union(e,n,e):e=le.clone(n)}this._extent=e};Us.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Us.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Us.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var _f=Us;var alo=y(C(),1);var xN={};xN.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await oa.getExports(n,i);if(r.length>0&&r.every(u=>u.status===oa.ExportStatus.Invalid))throw new de(`All exports for this iModel are Invalid: ${n}`);let s=r.find(u=>u.status===oa.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),d=new Ve({url:c});return Ps.fromUrl(d,o)};xN.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await oa.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![oa.RealityDataType.Cesium3DTiles,oa.RealityDataType.PNTS,oa.RealityDataType.RealityMesh3DTiles,oa.RealityDataType.Terrain3DTiles].includes(o))throw new de(`Reality data type is not a mesh type: ${o}`);let a=await oa.getRealityDataURL(n,i,r);return Ps.fromUrl(a,{maximumScreenSpaceError:4})};xN.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await oa.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![oa.RealityDataType.KML,oa.RealityDataType.GeoJSON].includes(o))throw new de(`Reality data type is not a data source type: ${o}`);let a=await oa.getRealityDataURL(n,i,r);return o===oa.RealityDataType.GeoJSON?Q0.load(a):pI.load(a)};xN.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${oa.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new Ve({url:s,headers:{Authorization:oa._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return Q0.load(a)};var S$=xN;var dlo=y(C(),1);function HTe(){}Object.defineProperties(HTe.prototype,{color:{get:Ae.throwInstantiationError},intensity:{get:Ae.throwInstantiationError}});var L$=HTe;var glo=y(C(),1);var r1t=/\/$/,zTe=new Gt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function DL(e){e=e??Y.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ve.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();r1t.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Gt(c))):c=zTe,this._resource=i,this._imageryProvider=new hc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(DL.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});DL.prototype.getTileCredits=function(e,t,n){};DL.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};DL.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};DL._defaultCredit=zTe;var R$=DL;var ylo=y(C(),1);function V$(e){}V$.prototype.isReady=function(){return!0};V$.prototype.shouldDiscardImage=function(e){return!1};var G$=V$;var Rlo=y(C(),1);var s1t=new Gt("MapQuest, Open Street Map and contributors, CC-BY-SA");function jY(e){e=e??Y.EMPTY_OBJECT;let t=Ve.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new _s({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(le.southwest(a),r),d=n.positionToTileXY(le.northeast(a),r),u=(Math.abs(d.x-c.x)+1)*(Math.abs(d.y-c.y)+1),h=e.credit??s1t;typeof h=="string"&&(h=new Gt(h)),hc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(jY.prototype=Object.create(hc.prototype),jY.prototype.constructor=jY);var sb=jY;var Wlo=y(C(),1);var a1t=new D(1,1);function Z$(e){e=e??Y.EMPTY_OBJECT,this.mass=e.mass??1,this.position=m.clone(e.position??m.ZERO),this.velocity=m.clone(e.velocity??m.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=U.clone(e.startColor??U.WHITE),this.endColor=U.clone(e.endColor??U.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=D.clone(e.imageSize??a1t),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(Z$.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var KTe=new m;Z$.prototype.update=function(e,t){return m.multiplyByScalar(this.velocity,e,KTe),m.add(this.position,KTe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var QL=Z$;var Mlo=y(C(),1);function JTe(e){e=e??Y.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(JTe.prototype,{complete:{get:function(){return this._complete}}});var B$=JTe;var Dlo=y(C(),1);function jTe(e){}jTe.prototype.emit=function(e){Ae.throwInstantiationError()};var w$=jTe;var ndo=y(C(),1);var qTe=new D(1,1);function IN(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new aN(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._emitterModelMatrix=X.clone(e.emitterModelMatrix??X.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new X,this._startColor=U.clone(e.color??e.startColor??U.WHITE),this._endColor=U.clone(e.color??e.endColor??U.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=D.clone(e.imageSize??e.minimumImageSize??qTe),this._maximumImageSize=D.clone(e.imageSize??e.maximumImageSize??qTe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new Ce,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(IN.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!X.equals(this._modelMatrix,e),X.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!X.equals(this._emitterModelMatrix,e),X.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){U.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){U.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function c1t(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let p=0;p<h;++p)i+=o[p].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,d=e._particlePool,u=Math.max(a-c.length-d.length,0);for(let h=0;h<u;++h){let p=new QL;p._billboard=r.add({image:s,show:!1}),d.push(p)}e._particleEstimate=a}function l1t(e){let t=e._particlePool.pop();return l(t)||(t=new QL),t}function d1t(e,t){e._particlePool.push(t)}function u1t(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let d=n[c];i.remove(d._billboard)}n.length=a}function m1t(e){l(e._billboard)&&(e._billboard.show=!1)}function $Te(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=Z.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=Z.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=Z.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=Z.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new U(i,o,r,s),n.scale=Z.lerp(t.startScale,t.endScale,t.normalizedAge)}function h1t(e,t){t.startColor=U.clone(e._startColor,t.startColor),t.endColor=U.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=Z.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=Z.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=Z.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=Z.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=Z.randomBetween(e._minimumSpeed,e._maximumSpeed);m.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function f1t(e,t){if(e._isComplete)return 0;t=Z.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=Z.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var qY=new m;IN.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new qd),this._updateParticlePool&&(c1t(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=j.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?$Te(this,s):(m1t(s),d1t(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=f1t(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=X.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let d=this._combinedMatrix;for(r=0;r<c;r++)s=l1t(this),this._emitter.emit(s),m.add(s.position,s.velocity,qY),X.multiplyByPoint(d,qY,qY),s.position=X.multiplyByPoint(d,s.position,s.position),m.subtract(qY,s.position,s.velocity),m.normalize(s.velocity,s.velocity),h1t(this,s),$Te(this,s)}if(this._billboardCollection.update(e),this._previousTime=j.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=Z.mod(this._currentTime,this._lifetime),this.bursts){let d=this.bursts.length;for(r=0;r<d;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&u1t(this)};IN.prototype.isDestroyed=function(){return!1};IN.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),me(this)};var X$=IN;var rdo=y(C(),1);function Xu(){Ae.throwInstantiationError()}Xu.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(Xu.prototype,{quadtree:{get:Ae.throwInstantiationError,set:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError}});Xu.prototype.update=Ae.throwInstantiationError;Xu.prototype.beginUpdate=Ae.throwInstantiationError;Xu.prototype.endUpdate=Ae.throwInstantiationError;Xu.prototype.getLevelMaximumGeometricError=Ae.throwInstantiationError;Xu.prototype.loadTile=Ae.throwInstantiationError;Xu.prototype.computeTileVisibility=Ae.throwInstantiationError;Xu.prototype.showTileThisFrame=Ae.throwInstantiationError;Xu.prototype.computeDistanceToTile=Ae.throwInstantiationError;Xu.prototype.isDestroyed=Ae.throwInstantiationError;Xu.prototype.destroy=Ae.throwInstantiationError;var W$=Xu;var ldo=y(C(),1);function F$(e){e=e??1,this._radius=e??1}Object.defineProperties(F$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});F$.prototype.emit=function(e){let t=Z.randomBetween(0,Z.TWO_PI),n=Z.randomBetween(0,Z.PI),i=Z.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=m.fromElements(o,r,s,e.position),e.velocity=m.normalize(e.position,e.velocity)};var P$=F$;var mdo=y(C(),1);function _N(){}_N.prototype.evaluate=function(e,t){Ae.throwInstantiationError()};_N.prototype.evaluateColor=function(e,t){Ae.throwInstantiationError()};_N.prototype.getShaderFunction=function(e,t,n,i){Ae.throwInstantiationError()};_N.prototype.getVariables=function(){Ae.throwInstantiationError()};var M$=_N;var gdo=y(C(),1);function UL(e){this._ready=!1,this._provider=void 0,this._errorEvent=new Ce,this._readyEvent=new Ce,A1t(this,e)}Object.defineProperties(UL.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});UL.fromWorldTerrain=function(e){return new UL(h_(e))};UL.fromWorldBathymetry=function(e){return new UL(eN(e))};function p1t(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function A1t(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){p1t(e._errorEvent,i)}}var EN=UL;var Cdo=y(C(),1);function kL(){}kL.prototype.boundingVolume=void 0;kL.prototype.boundingSphere=void 0;kL.prototype.distanceToCamera=function(e){Ae.throwInstantiationError()};kL.prototype.intersectPlane=function(e){Ae.throwInstantiationError()};kL.prototype.createDebugVolume=function(e){Ae.throwInstantiationError()};var v$=kL;var Ldo=y(C(),1);function TN(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ao({ellipsoid:e.ellipsoid}),this._color=e.color??U.YELLOW,this._errorEvent=new Ce,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(TN.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});TN.prototype.getTileCredits=function(e,t,n){};TN.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};TN.prototype.pickFeatures=function(e,t,n,i,o){};var SN=TN;var Gdo=y(C(),1);function N$(e){Ae.throwInstantiationError()}N$.prototype.isReady=Ae.throwInstantiationError;N$.prototype.shouldDiscardImage=Ae.throwInstantiationError;var D$=N$;var Bdo=y(C(),1),g1t={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},Q$=Object.freeze(g1t);var kdo=y(C(),1);function $Y(e,t){this.show=!0,l(e)||(e=new Ke),this.rectangle=Ke.clone(e),l(t)||(t=so.fromType(so.ColorType,{color:new U(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}$Y.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Ke.equals(t.viewport,this.rectangle))&&(this._rs=Qe.fromCache({blending:bn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new Oe({sources:[this._material.shaderSource,RP]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Ge.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};$Y.prototype.isDestroyed=function(){return!1};$Y.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),me(this)};var U$=$Y;var Hdo=y(C(),1);function k$(){Ae.throwInstantiationError()}Object.defineProperties(k$.prototype,{globalTransform:{get:Ae.throwInstantiationError},shapeTransform:{get:Ae.throwInstantiationError},shape:{get:Ae.throwInstantiationError},minBounds:{get:Ae.throwInstantiationError},maxBounds:{get:Ae.throwInstantiationError},dimensions:{get:Ae.throwInstantiationError},paddingBefore:{get:Ae.throwInstantiationError},paddingAfter:{get:Ae.throwInstantiationError},names:{get:Ae.throwInstantiationError},types:{get:Ae.throwInstantiationError},componentTypes:{get:Ae.throwInstantiationError},minimumValues:{get:Ae.throwInstantiationError},maximumValues:{get:Ae.throwInstantiationError},maximumTileCount:{get:Ae.throwInstantiationError},availableLevels:{get:Ae.throwInstantiationError},keyframeCount:{get:Ae.throwInstantiationError},timeIntervalCollection:{get:Ae.throwInstantiationError}});k$.prototype.requestData=function(e){Ae.throwInstantiationError()};var Y$=k$;var Jdo=y(C(),1);function x_(){Ae.throwInstantiationError()}Object.defineProperties(x_.prototype,{orientedBoundingBox:{get:Ae.throwInstantiationError},boundingSphere:{get:Ae.throwInstantiationError},boundTransform:{get:Ae.throwInstantiationError},shapeTransform:{get:Ae.throwInstantiationError},shaderUniforms:{get:Ae.throwInstantiationError},shaderDefines:{get:Ae.throwInstantiationError},shaderMaximumIntersectionsLength:{get:Ae.throwInstantiationError}});x_.prototype.update=Ae.throwInstantiationError;x_.prototype.computeOrientedBoundingBoxForTile=Ae.throwInstantiationError;x_.prototype.computeOrientedBoundingBoxForSample=Ae.throwInstantiationError;x_.DefaultMinBounds=Ae.throwInstantiationError;x_.DefaultMaxBounds=Ae.throwInstantiationError;var O$=x_;var muo=y(C(),1);var b1t=new U,y1t=new U,C1t=new U,x1t=new U,eSe=new ce,LN=new Uint8Array(4);function tSe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return U.lerp(t.color,n.color,o,i)}function e3(e,t){return{height:e,color:U.clone(t)}}function nSe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?U.equals(t.color,i[n-1].color):!1,a=r?U.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?U.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function I1t(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],f=Z.clamp(g.height,Rd._minimumHeight,Rd._maximumHeight),b=U.clone(g.color,b1t);b.red*=b.alpha,b.green*=b.alpha,b.blue*=b.alpha,c.push(e3(f,b))}let d=!0,u=!0;for(n=0;n<a-1;n++){let g=c[n+0],f=c[n+1];d=d&&g.height<=f.height,u=u&&g.height>=f.height}u?c=c.reverse():d||Sp(c,function(g,f){return Z.sign(g.height-f.height)});let h=r.extendDownwards??!1,p=r.extendUpwards??!1;c.length===1&&!h&&!p&&(h=!0,p=!0),h&&c.splice(0,0,e3(Rd._minimumHeight,c[0].color)),p&&c.splice(c.length,0,e3(Rd._maximumHeight,c[c.length-1].color)),c=nSe(c),i.push(c)}return i}function _1t(e){let t=I1t(e),n=[],i=[],o;function r(d,u){n.push(e3(d,u))}function s(d,u,h){let p=U.multiplyByScalar(h,1-u.alpha,x1t);p=U.add(p,u,p),r(d,p)}let a=t.length;for(o=0;o<a;o++){let d=t[o],u=0,h=0;i=n,n=[];let p=d.length,g=i.length;for(;u<p||h<g;){let f=u<p?d[u]:void 0,b=u>0?d[u-1]:void 0,x=u<p-1?d[u+1]:void 0,I=h<g?i[h]:void 0,_=h>0?i[h-1]:void 0,E=h<g-1?i[h+1]:void 0;if(l(f)&&l(I)&&f.height===I.height){let S=l(E)&&I.height===E.height,R=!l(_),G=!l(E),B=l(x)&&f.height===x.height,w=!l(b),F=!l(x);S?B?(s(f.height,f.color,I.color),s(f.height,x.color,E.color)):w?(r(f.height,I.color),s(f.height,f.color,E.color)):F?(s(f.height,f.color,I.color),r(f.height,E.color)):(s(f.height,f.color,I.color),s(f.height,f.color,E.color)):R?B?(r(f.height,f.color),s(f.height,x.color,I.color)):F?(r(f.height,f.color),r(f.height,I.color)):(w||r(f.height,f.color),s(f.height,f.color,I.color)):G?B?(s(f.height,f.color,I.color),r(f.height,x.color)):w?(r(f.height,I.color),r(f.height,f.color)):F?s(f.height,f.color,I.color):(s(f.height,f.color,I.color),r(f.height,f.color)):B?(s(f.height,f.color,I.color),s(f.height,x.color,I.color)):w?(r(f.height,I.color),s(f.height,f.color,I.color)):F?(s(f.height,f.color,I.color),r(f.height,I.color)):s(f.height,f.color,I.color),u+=B?2:1,h+=S?2:1}else if(l(f)&&l(I)&&l(_)&&f.height<I.height){let S=tSe(f.height,_,I,C1t);l(b)?l(x)?s(f.height,f.color,S):(s(f.height,f.color,S),r(f.height,S)):(r(f.height,S),s(f.height,f.color,S)),u++}else if(l(I)&&l(f)&&l(b)&&I.height<f.height){let S=tSe(I.height,b,f,y1t);l(_)?l(E)?s(I.height,S,I.color):(s(I.height,S,I.color),r(I.height,S)):(r(I.height,S),s(I.height,S,I.color)),h++}else l(f)&&(!l(I)||f.height<I.height)?(l(I)&&!l(_)&&!l(x)?(r(f.height,f.color),r(f.height,Rd._emptyColor),r(I.height,Rd._emptyColor)):(!l(I)&&l(_)&&!l(b)&&(r(_.height,Rd._emptyColor),r(f.height,Rd._emptyColor)),r(f.height,f.color)),u++):l(I)&&(!l(f)||I.height<f.height)&&(r(I.height,I.color),h++)}}return nSe(n)}function Rd(e){let{scene:t,layers:n}=e??Y.EMPTY_OBJECT,{context:i}=t,o=_1t(n),r=o.length,s,a,c;if(!Rd._useFloatTexture(i)){a=Ye.UNSIGNED_BYTE,c=tt.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)ce.packFloat(o[g].height,eSe),ce.pack(eSe,s,g*4)}else{a=Ye.FLOAT,c=i.webgl2?tt.RED:tt.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let u=Wt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(LN),h[g*4+0]=LN[0],h[g*4+1]=LN[1],h[g*4+2]=LN[2],h[g*4+3]=LN[3];let p=Wt.create({context:i,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})});return so.fromType("ElevationBand",{heights:u,colors:p})}Rd._useFloatTexture=function(e){return e.floatingPointTexture};Rd._maximumHeight=5906376425472;Rd._minimumHeight=-5906376425472;Rd._emptyColor=new U(0,0,0,0);var H$=Rd;var xuo=y(C(),1);async function E1t(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??Y.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||xt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??d_.defaultApiKey;if(!l(n))return T1t(t);let i,o=d_.getDefaultCredit();l(o)&&(i=[o]);let r=new Ve({url:`${d_.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return Ps.fromUrl(r,t)}var iSe={};async function T1t(e){let i=iSe[2275207];l(i)||(i=Nd.fromAssetId(2275207),iSe[2275207]=i);let o=await i;return Ps.fromUrl(o,e)}var z$=E1t;var Ruo=y(C(),1);async function S1t(e){let t=await Ps.fromIonAssetId(96188,e);e=e??Y.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??U.WHITE).toCssColorString();n=new p_({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var K$=S1t;var Muo=y(C(),1);function L1t(e){e=e??Y.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=X.clone(e.modelMatrix??X.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new tn(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new tn(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new tn(0,0,1,1)},modelMatrix:o})),t.length>0)return new Nn({asynchronous:!1,geometryInstances:t,appearance:new yn({flat:!0,translucent:!1})})}var J$=L1t;var Nuo=y(C(),1),j$=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;var zuo=y(C(),1);function R1t(e){e=e??Y.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??tt.RGBA,this.pixelDatatype=e.pixelDatatype??Ye.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=Ve.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Ln.REPEAT:Ln.CLAMP_TO_EDGE;this.sampler=new sn({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var q$=R1t;var Juo=y(C(),1),V1t={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},$$=Object.freeze(V1t);var quo=y(C(),1),G1t={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},eee=Object.freeze(G1t);var tmo=y(C(),1);function Z1t(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${Kf(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var tee=Z1t;globalThis.CESIUM_VERSION="1.132";var cPo=y(C(),1);var vBo=y(C(),1);var WBo=y(C(),1);var SBo=y(C(),1),RN;typeof ko<"u"&&(RN=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(A,T){return A===null||typeof A in b?A===T:!1}function d(A,T){var L;return function(){L||(L=f.a.setTimeout(function(){L=e,A()},T))}}function u(A,T){var L;return function(){clearTimeout(L),L=f.a.setTimeout(A,T)}}function h(A,T){T&&T!=="change"?T==="beforeChange"?this.pc(A):this.gb(A,T):this.qc(A)}function p(A,T){T!==null&&T.s&&T.s()}function g(A,T){var L=this.qd,V=L[S];V.ra||(this.Qb&&this.mb[T]?(L.uc(T,A,this.mb[T]),this.mb[T]=null,--this.Qb):V.I[T]||L.uc(T,A,V.J?{da:A}:L.$c(A)),A.Ja&&A.gd())}var f=typeof s<"u"?s:{};f.b=function(A,T){for(var L=A.split("."),V=f,W=0;W<L.length-1;W++)V=V[L[W]];V[L[L.length-1]]=T},f.L=function(A,T,L){A[T]=L},f.version="3.5.1",f.b("version",f.version),f.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},f.a=function(){function A(K,te){for(var q in K)W.call(K,q)&&te(q,K[q])}function T(K,te){if(te)for(var q in te)W.call(te,q)&&(K[q]=te[q]);return K}function L(K,te){return K.__proto__=te,K}function V(K,te,q,pe){var ye=K[te].match(H)||[];f.a.D(q.match(H),function(he){f.a.Na(ye,he,pe)}),K[te]=ye.join(" ")}var W=Object.prototype.hasOwnProperty,M={__proto__:[]}instanceof Array,Q=typeof Symbol=="function",N={},k={};N[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],N.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),A(N,function(K,te){if(te.length)for(var q=0,pe=te.length;q<pe;q++)k[te[q]]=K});var v={propertychange:!0},O=n&&function(){for(var K=3,te=n.createElement("div"),q=te.getElementsByTagName("i");te.innerHTML="<!--[if gt IE "+ ++K+"]><i></i><![endif]-->",q[0];);return 4<K?K:e}(),H=/\S+/g,ee;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(K,te,q){for(var pe=0,ye=K.length;pe<ye;pe++)te.call(q,K[pe],pe,K)},A:typeof Array.prototype.indexOf=="function"?function(K,te){return Array.prototype.indexOf.call(K,te)}:function(K,te){for(var q=0,pe=K.length;q<pe;q++)if(K[q]===te)return q;return-1},Lb:function(K,te,q){for(var pe=0,ye=K.length;pe<ye;pe++)if(te.call(q,K[pe],pe,K))return K[pe];return e},Pa:function(K,te){var q=f.a.A(K,te);0<q?K.splice(q,1):q===0&&K.shift()},wc:function(K){var te=[];return K&&f.a.D(K,function(q){0>f.a.A(te,q)&&te.push(q)}),te},Mb:function(K,te,q){var pe=[];if(K)for(var ye=0,he=K.length;ye<he;ye++)pe.push(te.call(q,K[ye],ye));return pe},jb:function(K,te,q){var pe=[];if(K)for(var ye=0,he=K.length;ye<he;ye++)te.call(q,K[ye],ye)&&pe.push(K[ye]);return pe},Nb:function(K,te){if(te instanceof Array)K.push.apply(K,te);else for(var q=0,pe=te.length;q<pe;q++)K.push(te[q]);return K},Na:function(K,te,q){var pe=f.a.A(f.a.bc(K),te);0>pe?q&&K.push(te):q||K.splice(pe,1)},Ba:M,extend:T,setPrototypeOf:L,Ab:M?L:T,P:A,Ga:function(K,te,q){if(!K)return K;var pe={},ye;for(ye in K)W.call(K,ye)&&(pe[ye]=te.call(q,K[ye],ye,K));return pe},Tb:function(K){for(;K.firstChild;)f.removeNode(K.firstChild)},Yb:function(K){K=f.a.la(K);for(var te=(K[0]&&K[0].ownerDocument||n).createElement("div"),q=0,pe=K.length;q<pe;q++)te.appendChild(f.oa(K[q]));return te},Ca:function(K,te){for(var q=0,pe=K.length,ye=[];q<pe;q++){var he=K[q].cloneNode(!0);ye.push(te?f.oa(he):he)}return ye},va:function(K,te){if(f.a.Tb(K),te)for(var q=0,pe=te.length;q<pe;q++)K.appendChild(te[q])},Xc:function(K,te){var q=K.nodeType?[K]:K;if(0<q.length){for(var pe=q[0],ye=pe.parentNode,he=0,xe=te.length;he<xe;he++)ye.insertBefore(te[he],pe);for(he=0,xe=q.length;he<xe;he++)f.removeNode(q[he])}},Ua:function(K,te){if(K.length){for(te=te.nodeType===8&&te.parentNode||te;K.length&&K[0].parentNode!==te;)K.splice(0,1);for(;1<K.length&&K[K.length-1].parentNode!==te;)K.length--;if(1<K.length){var q=K[0],pe=K[K.length-1];for(K.length=0;q!==pe;)K.push(q),q=q.nextSibling;K.push(pe)}}return K},Zc:function(K,te){7>O?K.setAttribute("selected",te):K.selected=te},Db:function(K){return K===null||K===e?"":K.trim?K.trim():K.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(K,te){return K=K||"",te.length>K.length?!1:K.substring(0,te.length)===te},vd:function(K,te){if(K===te)return!0;if(K.nodeType===11)return!1;if(te.contains)return te.contains(K.nodeType!==1?K.parentNode:K);if(te.compareDocumentPosition)return(te.compareDocumentPosition(K)&16)==16;for(;K&&K!=te;)K=K.parentNode;return!!K},Sb:function(K){return f.a.vd(K,K.ownerDocument.documentElement)},kd:function(K){return!!f.a.Lb(K,f.a.Sb)},R:function(K){return K&&K.tagName&&K.tagName.toLowerCase()},Ac:function(K){return f.onError?function(){try{return K.apply(this,arguments)}catch(te){throw f.onError&&f.onError(te),te}}:K},setTimeout:function(K,te){return setTimeout(f.a.Ac(K),te)},Gc:function(K){setTimeout(function(){throw f.onError&&f.onError(K),K},0)},B:function(K,te,q){var pe=f.a.Ac(q);if(q=v[te],f.options.useOnlyNativeEvents||q||!o)if(q||typeof K.addEventListener!="function")if(typeof K.attachEvent<"u"){var ye=function(xe){pe.call(K,xe)},he="on"+te;K.attachEvent(he,ye),f.a.K.za(K,function(){K.detachEvent(he,ye)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else K.addEventListener(te,pe,!1);else ee||(ee=typeof o(K).on=="function"?"on":"bind"),o(K)[ee](te,pe)},Fb:function(K,te){if(!K||!K.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var q;if(f.a.R(K)==="input"&&K.type&&te.toLowerCase()=="click"?(q=K.type,q=q=="checkbox"||q=="radio"):q=!1,f.options.useOnlyNativeEvents||!o||q)if(typeof n.createEvent=="function")if(typeof K.dispatchEvent=="function")q=n.createEvent(k[te]||"HTMLEvents"),q.initEvent(te,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,K),K.dispatchEvent(q);else throw Error("The supplied element doesn't support dispatchEvent");else if(q&&K.click)K.click();else if(typeof K.fireEvent<"u")K.fireEvent("on"+te);else throw Error("Browser doesn't support triggering events");else o(K).trigger(te)},f:function(K){return f.O(K)?K():K},bc:function(K){return f.O(K)?K.v():K},Eb:function(K,te,q){var pe;te&&(typeof K.classList=="object"?(pe=K.classList[q?"add":"remove"],f.a.D(te.match(H),function(ye){pe.call(K.classList,ye)})):typeof K.className.baseVal=="string"?V(K.className,"baseVal",te,q):V(K,"className",te,q))},Bb:function(K,te){var q=f.a.f(te);(q===null||q===e)&&(q="");var pe=f.h.firstChild(K);!pe||pe.nodeType!=3||f.h.nextSibling(pe)?f.h.va(K,[K.ownerDocument.createTextNode(q)]):pe.data=q,f.a.Ad(K)},Yc:function(K,te){if(K.name=te,7>=O)try{var q=K.name.replace(/[&<>'"]/g,function(pe){return"&#"+pe.charCodeAt(0)+";"});K.mergeAttributes(n.createElement("<input name='"+q+"'/>"),!1)}catch{}},Ad:function(K){9<=O&&(K=K.nodeType==1?K:K.parentNode,K.style&&(K.style.zoom=K.style.zoom))},wd:function(K){if(O){var te=K.style.width;K.style.width=0,K.style.width=te}},Pd:function(K,te){K=f.a.f(K),te=f.a.f(te);for(var q=[],pe=K;pe<=te;pe++)q.push(pe);return q},la:function(K){for(var te=[],q=0,pe=K.length;q<pe;q++)te.push(K[q]);return te},Da:function(K){return Q?Symbol(K):K},Zd:O===6,$d:O===7,W:O,Lc:function(K,te){for(var q=f.a.la(K.getElementsByTagName("input")).concat(f.a.la(K.getElementsByTagName("textarea"))),pe=typeof te=="string"?function(xe){return xe.name===te}:function(xe){return te.test(xe.name)},ye=[],he=q.length-1;0<=he;he--)pe(q[he])&&ye.push(q[he]);return ye},Nd:function(K){return typeof K=="string"&&(K=f.a.Db(K))?r&&r.parse?r.parse(K):new Function("return "+K)():null},hc:function(K,te,q){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(f.a.f(K),te,q)},Od:function(K,te,q){q=q||{};var pe=q.params||{},ye=q.includeFields||this.Jc,he=K;if(typeof K=="object"&&f.a.R(K)==="form")for(var he=K.action,xe=ye.length-1;0<=xe;xe--)for(var Te=f.a.Lc(K,ye[xe]),Be=Te.length-1;0<=Be;Be--)pe[Te[Be].name]=Te[Be].value;te=f.a.f(te);var Le=n.createElement("form");Le.style.display="none",Le.action=he,Le.method="post";for(var De in te)K=n.createElement("input"),K.type="hidden",K.name=De,K.value=f.a.hc(f.a.f(te[De])),Le.appendChild(K);A(pe,function(Ue,je){var it=n.createElement("input");it.type="hidden",it.name=Ue,it.value=je,Le.appendChild(it)}),n.body.appendChild(Le),q.submitter?q.submitter(Le):Le.submit(),setTimeout(function(){Le.parentNode.removeChild(Le)},0)}}}(),f.b("utils",f.a),f.b("utils.arrayForEach",f.a.D),f.b("utils.arrayFirst",f.a.Lb),f.b("utils.arrayFilter",f.a.jb),f.b("utils.arrayGetDistinctValues",f.a.wc),f.b("utils.arrayIndexOf",f.a.A),f.b("utils.arrayMap",f.a.Mb),f.b("utils.arrayPushAll",f.a.Nb),f.b("utils.arrayRemoveItem",f.a.Pa),f.b("utils.cloneNodes",f.a.Ca),f.b("utils.createSymbolOrString",f.a.Da),f.b("utils.extend",f.a.extend),f.b("utils.fieldsIncludedWithJsonPost",f.a.Jc),f.b("utils.getFormFields",f.a.Lc),f.b("utils.objectMap",f.a.Ga),f.b("utils.peekObservable",f.a.bc),f.b("utils.postJson",f.a.Od),f.b("utils.parseJson",f.a.Nd),f.b("utils.registerEventHandler",f.a.B),f.b("utils.stringifyJson",f.a.hc),f.b("utils.range",f.a.Pd),f.b("utils.toggleDomNodeCssClass",f.a.Eb),f.b("utils.triggerEvent",f.a.Fb),f.b("utils.unwrapObservable",f.a.f),f.b("utils.objectForEach",f.a.P),f.b("utils.addOrRemoveItem",f.a.Na),f.b("utils.setTextContent",f.a.Bb),f.b("unwrap",f.a.f),Function.prototype.bind||(Function.prototype.bind=function(A){var T=this;if(arguments.length===1)return function(){return T.apply(A,arguments)};var L=Array.prototype.slice.call(arguments,1);return function(){var V=L.slice(0);return V.push.apply(V,arguments),T.apply(A,V)}}),f.a.g=new function(){var A=0,T="__ko__"+new Date().getTime(),L={},V,W;return f.a.W?(V=function(M,Q){var N=M[T];if(!N||N==="null"||!L[N]){if(!Q)return e;N=M[T]="ko"+A++,L[N]={}}return L[N]},W=function(M){var Q=M[T];return Q?(delete L[Q],M[T]=null,!0):!1}):(V=function(M,Q){var N=M[T];return!N&&Q&&(N=M[T]={}),N},W=function(M){return M[T]?(delete M[T],!0):!1}),{get:function(M,Q){var N=V(M,!1);return N&&N[Q]},set:function(M,Q,N){(M=V(M,N!==e))&&(M[Q]=N)},Ub:function(M,Q,N){return M=V(M,!0),M[Q]||(M[Q]=N)},clear:W,Z:function(){return A+++T}}},f.b("utils.domData",f.a.g),f.b("utils.domData.clear",f.a.g.clear),f.a.K=new function(){function A(Q,N){var k=f.a.g.get(Q,V);return k===e&&N&&(k=[],f.a.g.set(Q,V,k)),k}function T(Q){var N=A(Q,!1);if(N)for(var N=N.slice(0),k=0;k<N.length;k++)N[k](Q);f.a.g.clear(Q),f.a.K.cleanExternalData(Q),M[Q.nodeType]&&L(Q.childNodes,!0)}function L(Q,N){for(var k=[],v,O=0;O<Q.length;O++)if((!N||Q[O].nodeType===8)&&(T(k[k.length]=v=Q[O]),Q[O]!==v))for(;O--&&f.a.A(k,Q[O])==-1;);}var V=f.a.g.Z(),W={1:!0,8:!0,9:!0},M={1:!0,9:!0};return{za:function(Q,N){if(typeof N!="function")throw Error("Callback must be a function");A(Q,!0).push(N)},yb:function(Q,N){var k=A(Q,!1);k&&(f.a.Pa(k,N),k.length==0&&f.a.g.set(Q,V,e))},oa:function(Q){return f.u.G(function(){W[Q.nodeType]&&(T(Q),M[Q.nodeType]&&L(Q.getElementsByTagName("*")))}),Q},removeNode:function(Q){f.oa(Q),Q.parentNode&&Q.parentNode.removeChild(Q)},cleanExternalData:function(Q){o&&typeof o.cleanData=="function"&&o.cleanData([Q])}}},f.oa=f.a.K.oa,f.removeNode=f.a.K.removeNode,f.b("cleanNode",f.oa),f.b("removeNode",f.removeNode),f.b("utils.domNodeDisposal",f.a.K),f.b("utils.domNodeDisposal.addDisposeCallback",f.a.K.za),f.b("utils.domNodeDisposal.removeDisposeCallback",f.a.K.yb),function(){var A=[0,"",""],T=[1,"<table>","</table>"],L=[3,"<table><tbody><tr>","</tr></tbody></table>"],V=[1,"<select multiple='multiple'>","</select>"],W={thead:T,tbody:T,tfoot:T,tr:[2,"<table><tbody>","</tbody></table>"],td:L,th:L,option:V,optgroup:V},M=8>=f.a.W;f.a.ua=function(Q,N){var k;if(o){if(o.parseHTML)k=o.parseHTML(Q,N)||[];else if((k=o.clean([Q],N))&&k[0]){for(var v=k[0];v.parentNode&&v.parentNode.nodeType!==11;)v=v.parentNode;v.parentNode&&v.parentNode.removeChild(v)}}else{(k=N)||(k=n);var v=k.parentWindow||k.defaultView||t,O=f.a.Db(Q).toLowerCase(),H=k.createElement("div"),ee;for(ee=(O=O.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&W[O[1]]||A,O=ee[0],ee="ignored<div>"+ee[1]+Q+ee[2]+"</div>",typeof v.innerShiv=="function"?H.appendChild(v.innerShiv(ee)):(M&&k.body.appendChild(H),H.innerHTML=ee,M&&H.parentNode.removeChild(H));O--;)H=H.lastChild;k=f.a.la(H.lastChild.childNodes)}return k},f.a.Md=function(Q,N){var k=f.a.ua(Q,N);return k.length&&k[0].parentElement||f.a.Yb(k)},f.a.fc=function(Q,N){if(f.a.Tb(Q),N=f.a.f(N),N!==null&&N!==e)if(typeof N!="string"&&(N=N.toString()),o)o(Q).html(N);else for(var k=f.a.ua(N,Q.ownerDocument),v=0;v<k.length;v++)Q.appendChild(k[v])}}(),f.b("utils.parseHtmlFragment",f.a.ua),f.b("utils.setHtml",f.a.fc),f.aa=function(){function A(L,V){if(L){if(L.nodeType==8){var W=f.aa.Uc(L.nodeValue);W!=null&&V.push({ud:L,Kd:W})}else if(L.nodeType==1)for(var W=0,M=L.childNodes,Q=M.length;W<Q;W++)A(M[W],V)}}var T={};return{Xb:function(L){if(typeof L!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var V=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return T[V]=L,"<!--[ko_memo:"+V+"]-->"},bd:function(L,V){var W=T[L];if(W===e)throw Error("Couldn't find any memo with ID "+L+". Perhaps it's already been unmemoized.");try{return W.apply(null,V||[]),!0}finally{delete T[L]}},cd:function(L,V){var W=[];A(L,W);for(var M=0,Q=W.length;M<Q;M++){var N=W[M].ud,k=[N];V&&f.a.Nb(k,V),f.aa.bd(W[M].Kd,k),N.nodeValue="",N.parentNode&&N.parentNode.removeChild(N)}},Uc:function(L){return(L=L.match(/^\[ko_memo\:(.*?)\]$/))?L[1]:null}}}(),f.b("memoization",f.aa),f.b("memoization.memoize",f.aa.Xb),f.b("memoization.unmemoize",f.aa.bd),f.b("memoization.parseMemoText",f.aa.Uc),f.b("memoization.unmemoizeDomNodeAndDescendants",f.aa.cd),f.na=function(){function A(){if(W){for(var N=W,k=0,v;Q<W;)if(v=V[Q++]){if(Q>N){if(5e3<=++k){Q=W,f.a.Gc(Error("'Too much recursion' after processing "+k+" task groups."));break}N=W}try{v()}catch(O){f.a.Gc(O)}}}}function T(){A(),Q=W=V.length=0}var L,V=[],W=0,M=1,Q=0;return t.MutationObserver?L=function(N){var k=n.createElement("div");return new MutationObserver(N).observe(k,{attributes:!0}),function(){k.classList.toggle("foo")}}(T):L=n&&"onreadystatechange"in n.createElement("script")?function(N){var k=n.createElement("script");k.onreadystatechange=function(){k.onreadystatechange=null,n.documentElement.removeChild(k),k=null,N()},n.documentElement.appendChild(k)}:function(N){setTimeout(N,0)},{scheduler:L,zb:function(N){return W||f.na.scheduler(T),V[W++]=N,M++},cancel:function(N){N=N-(M-W),N>=Q&&N<W&&(V[N]=null)},resetForTesting:function(){var N=W-Q;return Q=W=V.length=0,N},Sd:A}}(),f.b("tasks",f.na),f.b("tasks.schedule",f.na.zb),f.b("tasks.runEarly",f.na.Sd),f.Ta={throttle:function(A,T){A.throttleEvaluation=T;var L=null;return f.$({read:A,write:function(V){clearTimeout(L),L=f.a.setTimeout(function(){A(V)},T)}})},rateLimit:function(A,T){var L,V,W;typeof T=="number"?L=T:(L=T.timeout,V=T.method),A.Hb=!1,W=typeof V=="function"?V:V=="notifyWhenChangesStop"?u:d,A.ub(function(M){return W(M,L,T)})},deferred:function(A,T){if(T!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");A.Hb||(A.Hb=!0,A.ub(function(L){var V,W=!1;return function(){if(!W){f.na.cancel(V),V=f.na.zb(L);try{W=!0,A.notifySubscribers(e,"dirty")}finally{W=!1}}}}))},notify:function(A,T){A.equalityComparer=T=="always"?null:c}};var b={undefined:1,boolean:1,number:1,string:1};f.b("extenders",f.Ta),f.ic=function(A,T,L){this.da=A,this.lc=T,this.mc=L,this.Ib=!1,this.fb=this.Jb=null,f.L(this,"dispose",this.s),f.L(this,"disposeWhenNodeIsRemoved",this.l)},f.ic.prototype.s=function(){this.Ib||(this.fb&&f.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},f.ic.prototype.l=function(A){this.Jb=A,f.a.K.za(A,this.fb=this.s.bind(this))},f.T=function(){f.a.Ab(this,x),x.qb(this)};var x={qb:function(A){A.U={change:[]},A.sc=1},subscribe:function(A,T,L){var V=this;L=L||"change";var W=new f.ic(V,T?A.bind(T):A,function(){f.a.Pa(V.U[L],W),V.hb&&V.hb(L)});return V.Qa&&V.Qa(L),V.U[L]||(V.U[L]=[]),V.U[L].push(W),W},notifySubscribers:function(A,T){if(T=T||"change",T==="change"&&this.Gb(),this.Wa(T)){var L=T==="change"&&this.ed||this.U[T].slice(0);try{f.u.xc();for(var V=0,W;W=L[V];++V)W.Ib||W.lc(A)}finally{f.u.end()}}},ob:function(){return this.sc},Dd:function(A){return this.ob()!==A},Gb:function(){++this.sc},ub:function(A){var T=this,L=f.O(T),V,W,M,Q,N;T.gb||(T.gb=T.notifySubscribers,T.notifySubscribers=h);var k=A(function(){T.Ja=!1,L&&Q===T&&(Q=T.nc?T.nc():T());var v=W||N&&T.sb(M,Q);N=W=V=!1,v&&T.gb(M=Q)});T.qc=function(v,O){O&&T.Ja||(N=!O),T.ed=T.U.change.slice(0),T.Ja=V=!0,Q=v,k()},T.pc=function(v){V||(M=v,T.gb(v,"beforeChange"))},T.rc=function(){N=!0},T.gd=function(){T.sb(M,T.v(!0))&&(W=!0)}},Wa:function(A){return this.U[A]&&this.U[A].length},Bd:function(A){if(A)return this.U[A]&&this.U[A].length||0;var T=0;return f.a.P(this.U,function(L,V){L!=="dirty"&&(T+=V.length)}),T},sb:function(A,T){return!this.equalityComparer||!this.equalityComparer(A,T)},toString:function(){return"[object Object]"},extend:function(A){var T=this;return A&&f.a.P(A,function(L,V){var W=f.Ta[L];typeof W=="function"&&(T=W(T,V)||T)}),T}};f.L(x,"init",x.qb),f.L(x,"subscribe",x.subscribe),f.L(x,"extend",x.extend),f.L(x,"getSubscriptionsCount",x.Bd),f.a.Ba&&f.a.setPrototypeOf(x,Function.prototype),f.T.fn=x,f.Qc=function(A){return A!=null&&typeof A.subscribe=="function"&&typeof A.notifySubscribers=="function"},f.b("subscribable",f.T),f.b("isSubscribable",f.Qc),f.S=f.u=function(){function A(M){L.push(V),V=M}function T(){V=L.pop()}var L=[],V,W=0;return{xc:A,end:T,cc:function(M){if(V){if(!f.Qc(M))throw Error("Only subscribable things can act as dependencies");V.od.call(V.pd,M,M.fd||(M.fd=++W))}},G:function(M,Q,N){try{return A(),M.apply(Q,N||[])}finally{T()}},qa:function(){if(V)return V.o.qa()},Va:function(){if(V)return V.o.Va()},Ya:function(){if(V)return V.Ya},o:function(){if(V)return V.o}}}(),f.b("computedContext",f.S),f.b("computedContext.getDependenciesCount",f.S.qa),f.b("computedContext.getDependencies",f.S.Va),f.b("computedContext.isInitial",f.S.Ya),f.b("computedContext.registerDependency",f.S.cc),f.b("ignoreDependencies",f.Yd=f.u.G);var I=f.a.Da("_latestValue");f.ta=function(A){function T(){return 0<arguments.length?(T.sb(T[I],arguments[0])&&(T.ya(),T[I]=arguments[0],T.xa()),this):(f.u.cc(T),T[I])}return T[I]=A,f.a.Ba||f.a.extend(T,f.T.fn),f.T.fn.qb(T),f.a.Ab(T,_),f.options.deferUpdates&&f.Ta.deferred(T,!0),T};var _={equalityComparer:c,v:function(){return this[I]},xa:function(){this.notifySubscribers(this[I],"spectate"),this.notifySubscribers(this[I])},ya:function(){this.notifySubscribers(this[I],"beforeChange")}};f.a.Ba&&f.a.setPrototypeOf(_,f.T.fn);var E=f.ta.Ma="__ko_proto__";_[E]=f.ta,f.O=function(A){if((A=typeof A=="function"&&A[E])&&A!==_[E]&&A!==f.o.fn[E])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!A},f.Za=function(A){return typeof A=="function"&&(A[E]===_[E]||A[E]===f.o.fn[E]&&A.Nc)},f.b("observable",f.ta),f.b("isObservable",f.O),f.b("isWriteableObservable",f.Za),f.b("isWritableObservable",f.Za),f.b("observable.fn",_),f.L(_,"peek",_.v),f.L(_,"valueHasMutated",_.xa),f.L(_,"valueWillMutate",_.ya),f.Ha=function(A){if(A=A||[],typeof A!="object"||!("length"in A))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return A=f.ta(A),f.a.Ab(A,f.Ha.fn),A.extend({trackArrayChanges:!0})},f.Ha.fn={remove:function(A){for(var T=this.v(),L=[],V=typeof A!="function"||f.O(A)?function(Q){return Q===A}:A,W=0;W<T.length;W++){var M=T[W];if(V(M)){if(L.length===0&&this.ya(),T[W]!==M)throw Error("Array modified during remove; cannot remove item");L.push(M),T.splice(W,1),W--}}return L.length&&this.xa(),L},removeAll:function(A){if(A===e){var T=this.v(),L=T.slice(0);return this.ya(),T.splice(0,T.length),this.xa(),L}return A?this.remove(function(V){return 0<=f.a.A(A,V)}):[]},destroy:function(A){var T=this.v(),L=typeof A!="function"||f.O(A)?function(M){return M===A}:A;this.ya();for(var V=T.length-1;0<=V;V--){var W=T[V];L(W)&&(W._destroy=!0)}this.xa()},destroyAll:function(A){return A===e?this.destroy(function(){return!0}):A?this.destroy(function(T){return 0<=f.a.A(A,T)}):[]},indexOf:function(A){var T=this();return f.a.A(T,A)},replace:function(A,T){var L=this.indexOf(A);0<=L&&(this.ya(),this.v()[L]=T,this.xa())},sorted:function(A){var T=this().slice(0);return A?T.sort(A):T.sort()},reversed:function(){return this().slice(0).reverse()}},f.a.Ba&&f.a.setPrototypeOf(f.Ha.fn,f.ta.fn),f.a.D("pop push reverse shift sort splice unshift".split(" "),function(A){f.Ha.fn[A]=function(){var T=this.v();this.ya(),this.zc(T,A,arguments);var L=T[A].apply(T,arguments);return this.xa(),L===T?this:L}}),f.a.D(["slice"],function(A){f.Ha.fn[A]=function(){var T=this();return T[A].apply(T,arguments)}}),f.Pc=function(A){return f.O(A)&&typeof A.remove=="function"&&typeof A.push=="function"},f.b("observableArray",f.Ha),f.b("isObservableArray",f.Pc),f.Ta.trackArrayChanges=function(A,T){function L(){function H(){if(N){var ee=[].concat(A.v()||[]),K;A.Wa("arrayChange")&&((!W||1<N)&&(W=f.a.Pb(k,ee,A.Ob)),K=W),k=ee,W=null,N=0,K&&K.length&&A.notifySubscribers(K,"arrayChange")}}V?H():(V=!0,Q=A.subscribe(function(){++N},null,"spectate"),k=[].concat(A.v()||[]),W=null,M=A.subscribe(H))}if(A.Ob={},T&&typeof T=="object"&&f.a.extend(A.Ob,T),A.Ob.sparse=!0,!A.zc){var V=!1,W=null,M,Q,N=0,k,v=A.Qa,O=A.hb;A.Qa=function(H){v&&v.call(A,H),H==="arrayChange"&&L()},A.hb=function(H){O&&O.call(A,H),H!=="arrayChange"||A.Wa("arrayChange")||(M&&M.s(),Q&&Q.s(),Q=M=null,V=!1,k=e)},A.zc=function(H,ee,K){function te(Le,De,Ue){return q[q.length]={status:Le,value:De,index:Ue}}if(V&&!N){var q=[],pe=H.length,ye=K.length,he=0;switch(ee){case"push":he=pe;case"unshift":for(ee=0;ee<ye;ee++)te("added",K[ee],he+ee);break;case"pop":he=pe-1;case"shift":pe&&te("deleted",H[he],he);break;case"splice":ee=Math.min(Math.max(0,0>K[0]?pe+K[0]:K[0]),pe);for(var pe=ye===1?pe:Math.min(ee+(K[1]||0),pe),ye=ee+ye-2,he=Math.max(pe,ye),xe=[],Te=[],Be=2;ee<he;++ee,++Be)ee<pe&&Te.push(te("deleted",H[ee],ee)),ee<ye&&xe.push(te("added",K[Be],ee));f.a.Kc(Te,xe);break;default:return}W=q}}}};var S=f.a.Da("_state");f.o=f.$=function(A,T,L){function V(){if(0<arguments.length){if(typeof W=="function")W.apply(M.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return M.ra||f.u.cc(V),(M.ka||M.J&&V.Xa())&&V.ha(),M.X}if(typeof A=="object"?L=A:(L=L||{},A&&(L.read=A)),typeof L.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var W=L.write,M={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:L.read,nb:T||L.owner,l:L.disposeWhenNodeIsRemoved||L.l||null,Sa:L.disposeWhen||L.Sa,Rb:null,I:{},V:0,Ic:null};return V[S]=M,V.Nc=typeof W=="function",f.a.Ba||f.a.extend(V,f.T.fn),f.T.fn.qb(V),f.a.Ab(V,R),L.pure?(M.wb=!0,M.J=!0,f.a.extend(V,G)):L.deferEvaluation&&f.a.extend(V,B),f.options.deferUpdates&&f.Ta.deferred(V,!0),M.l&&(M.jc=!0,M.l.nodeType||(M.l=null)),M.J||L.deferEvaluation||V.ha(),M.l&&V.ja()&&f.a.K.za(M.l,M.Rb=function(){V.s()}),V};var R={equalityComparer:c,qa:function(){return this[S].V},Va:function(){var A=[];return f.a.P(this[S].I,function(T,L){A[L.Ka]=L.da}),A},Vb:function(A){if(!this[S].V)return!1;var T=this.Va();return f.a.A(T,A)!==-1?!0:!!f.a.Lb(T,function(L){return L.Vb&&L.Vb(A)})},uc:function(A,T,L){if(this[S].wb&&T===this)throw Error("A 'pure' computed must not be called recursively");this[S].I[A]=L,L.Ka=this[S].V++,L.La=T.ob()},Xa:function(){var A,T,L=this[S].I;for(A in L)if(Object.prototype.hasOwnProperty.call(L,A)&&(T=L[A],this.Ia&&T.da.Ja||T.da.Dd(T.La)))return!0},Jd:function(){this.Ia&&!this[S].rb&&this.Ia(!1)},ja:function(){var A=this[S];return A.ka||0<A.V},Rd:function(){this.Ja?this[S].ka&&(this[S].sa=!0):this.Hc()},$c:function(A){if(A.Hb){var T=A.subscribe(this.Jd,this,"dirty"),L=A.subscribe(this.Rd,this);return{da:A,s:function(){T.s(),L.s()}}}return A.subscribe(this.Hc,this)},Hc:function(){var A=this,T=A.throttleEvaluation;T&&0<=T?(clearTimeout(this[S].Ic),this[S].Ic=f.a.setTimeout(function(){A.ha(!0)},T)):A.Ia?A.Ia(!0):A.ha(!0)},ha:function(A){var T=this[S],L=T.Sa,V=!1;if(!T.rb&&!T.ra){if(T.l&&!f.a.Sb(T.l)||L&&L()){if(!T.jc){this.s();return}}else T.jc=!1;T.rb=!0;try{V=this.zd(A)}finally{T.rb=!1}return V}},zd:function(A){var T=this[S],V=!1,L=T.wb?e:!T.V,V={qd:this,mb:T.I,Qb:T.V};f.u.xc({pd:V,od:g,o:this,Ya:L}),T.I={},T.V=0;var W=this.yd(T,V);return T.V?V=this.sb(T.X,W):(this.s(),V=!0),V&&(T.J?this.Gb():this.notifySubscribers(T.X,"beforeChange"),T.X=W,this.notifySubscribers(T.X,"spectate"),!T.J&&A&&this.notifySubscribers(T.X),this.rc&&this.rc()),L&&this.notifySubscribers(T.X,"awake"),V},yd:function(A,T){try{var L=A.Wc;return A.nb?L.call(A.nb):L()}finally{f.u.end(),T.Qb&&!A.J&&f.a.P(T.mb,p),A.sa=A.ka=!1}},v:function(A){var T=this[S];return(T.ka&&(A||!T.V)||T.J&&this.Xa())&&this.ha(),T.X},ub:function(A){f.T.fn.ub.call(this,A),this.nc=function(){return this[S].J||(this[S].sa?this.ha():this[S].ka=!1),this[S].X},this.Ia=function(T){this.pc(this[S].X),this[S].ka=!0,T&&(this[S].sa=!0),this.qc(this,!T)}},s:function(){var A=this[S];!A.J&&A.I&&f.a.P(A.I,function(T,L){L.s&&L.s()}),A.l&&A.Rb&&f.a.K.yb(A.l,A.Rb),A.I=e,A.V=0,A.ra=!0,A.sa=!1,A.ka=!1,A.J=!1,A.l=e,A.Sa=e,A.Wc=e,this.Nc||(A.nb=e)}},G={Qa:function(A){var T=this,L=T[S];if(!L.ra&&L.J&&A=="change"){if(L.J=!1,L.sa||T.Xa())L.I=null,L.V=0,T.ha()&&T.Gb();else{var V=[];f.a.P(L.I,function(W,M){V[M.Ka]=W}),f.a.D(V,function(W,M){var Q=L.I[W],N=T.$c(Q.da);N.Ka=M,N.La=Q.La,L.I[W]=N}),T.Xa()&&T.ha()&&T.Gb()}L.ra||T.notifySubscribers(L.X,"awake")}},hb:function(A){var T=this[S];T.ra||A!="change"||this.Wa("change")||(f.a.P(T.I,function(L,V){V.s&&(T.I[L]={da:V.da,Ka:V.Ka,La:V.La},V.s())}),T.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var A=this[S];return A.J&&(A.sa||this.Xa())&&this.ha(),f.T.fn.ob.call(this)}},B={Qa:function(A){A!="change"&&A!="beforeChange"||this.v()}};f.a.Ba&&f.a.setPrototypeOf(R,f.T.fn);var w=f.ta.Ma;R[w]=f.o,f.Oc=function(A){return typeof A=="function"&&A[w]===R[w]},f.Fd=function(A){return f.Oc(A)&&A[S]&&A[S].wb},f.b("computed",f.o),f.b("dependentObservable",f.o),f.b("isComputed",f.Oc),f.b("isPureComputed",f.Fd),f.b("computed.fn",R),f.L(R,"peek",R.v),f.L(R,"dispose",R.s),f.L(R,"isActive",R.ja),f.L(R,"getDependenciesCount",R.qa),f.L(R,"getDependencies",R.Va),f.xb=function(A,T){return typeof A=="function"?f.o(A,T,{pure:!0}):(A=f.a.extend({},A),A.pure=!0,f.o(A,T))},f.b("pureComputed",f.xb),function(){function A(V,W,M){if(M=M||new L,V=W(V),typeof V!="object"||V===null||V===e||V instanceof RegExp||V instanceof Date||V instanceof String||V instanceof Number||V instanceof Boolean)return V;var Q=V instanceof Array?[]:{};return M.save(V,Q),T(V,function(N){var k=W(V[N]);switch(typeof k){case"boolean":case"number":case"string":case"function":Q[N]=k;break;case"object":case"undefined":var v=M.get(k);Q[N]=v!==e?v:A(k,W,M)}}),Q}function T(V,W){if(V instanceof Array){for(var M=0;M<V.length;M++)W(M);typeof V.toJSON=="function"&&W("toJSON")}else for(M in V)W(M)}function L(){this.keys=[],this.values=[]}f.ad=function(V){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return A(V,function(W){for(var M=0;f.O(W)&&10>M;M++)W=W();return W})},f.toJSON=function(V,W,M){return V=f.ad(V),f.a.hc(V,W,M)},L.prototype={constructor:L,save:function(V,W){var M=f.a.A(this.keys,V);0<=M?this.values[M]=W:(this.keys.push(V),this.values.push(W))},get:function(V){return V=f.a.A(this.keys,V),0<=V?this.values[V]:e}}}(),f.b("toJS",f.ad),f.b("toJSON",f.toJSON),f.Wd=function(A,T,L){function V(W){var M=f.xb(A,L).extend({ma:"always"}),Q=M.subscribe(function(N){N&&(Q.s(),W(N))});return M.notifySubscribers(M.v()),Q}return typeof Promise!="function"||T?V(T.bind(L)):new Promise(V)},f.b("when",f.Wd),function(){f.w={M:function(A){switch(f.a.R(A)){case"option":return A.__ko__hasDomDataOptionValue__===!0?f.a.g.get(A,f.c.options.$b):7>=f.a.W?A.getAttributeNode("value")&&A.getAttributeNode("value").specified?A.value:A.text:A.value;case"select":return 0<=A.selectedIndex?f.w.M(A.options[A.selectedIndex]):e;default:return A.value}},cb:function(A,T,L){switch(f.a.R(A)){case"option":typeof T=="string"?(f.a.g.set(A,f.c.options.$b,e),"__ko__hasDomDataOptionValue__"in A&&delete A.__ko__hasDomDataOptionValue__,A.value=T):(f.a.g.set(A,f.c.options.$b,T),A.__ko__hasDomDataOptionValue__=!0,A.value=typeof T=="number"?T:"");break;case"select":(T===""||T===null)&&(T=e);for(var V=-1,W=0,M=A.options.length,Q;W<M;++W)if(Q=f.w.M(A.options[W]),Q==T||Q===""&&T===e){V=W;break}(L||0<=V||T===e&&1<A.size)&&(A.selectedIndex=V,f.a.W===6&&f.a.setTimeout(function(){A.selectedIndex=V},0));break;default:(T===null||T===e)&&(T=""),A.value=T}}}}(),f.b("selectExtensions",f.w),f.b("selectExtensions.readValue",f.w.M),f.b("selectExtensions.writeValue",f.w.cb),f.m=function(){function A(N){N=f.a.Db(N),N.charCodeAt(0)===123&&(N=N.slice(1,-1)),N+=` +,`;var k=[],v=N.match(V),O,H=[],ee=0;if(1<v.length){for(var K=0,te;te=v[K];++K){var q=te.charCodeAt(0);if(q===44){if(0>=ee){k.push(O&&H.length?{key:O,value:H.join("")}:{unknown:O||H.join("")}),O=ee=0,H=[];continue}}else if(q===58){if(!ee&&!O&&H.length===1){O=H.pop();continue}}else{if(q===47&&1<te.length&&(te.charCodeAt(1)===47||te.charCodeAt(1)===42))continue;q===47&&K&&1<te.length?(q=v[K-1].match(W))&&!M[q[0]]&&(N=N.substr(N.indexOf(te)+1),v=N.match(V),K=-1,te="/"):q===40||q===123||q===91?++ee:q===41||q===125||q===93?--ee:O||H.length||q!==34&&q!==39||(te=te.slice(1,-1))}H.push(te)}if(0<ee)throw Error("Unbalanced parentheses, braces, or brackets")}return k}var T=["true","false","null","undefined"],L=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,V=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),W=/[\])"'A-Za-z0-9_$]+$/,M={in:1,return:1,typeof:1},Q={};return{Ra:[],wa:Q,ac:A,vb:function(N,k){function v(q,pe){var ye;if(!K){var he=f.getBindingHandler(q);if(he&&he.preprocess&&!(pe=he.preprocess(pe,q,v)))return;(he=Q[q])&&(ye=pe,0<=f.a.A(T,ye)?ye=!1:(he=ye.match(L),ye=he===null?!1:he[1]?"Object("+he[1]+")"+he[2]:ye),he=ye),he&&H.push("'"+(typeof Q[q]=="string"?Q[q]:q)+"':function(_z){"+ye+"=_z}")}ee&&(pe="function(){return "+pe+" }"),O.push("'"+q+"':"+pe)}k=k||{};var O=[],H=[],ee=k.valueAccessors,K=k.bindingParams,te=typeof N=="string"?A(N):N;return f.a.D(te,function(q){v(q.key||q.unknown,q.value)}),H.length&&v("_ko_property_writers","{"+H.join(",")+" }"),O.join(",")},Id:function(N,k){for(var v=0;v<N.length;v++)if(N[v].key==k)return!0;return!1},eb:function(N,k,v,O,H){N&&f.O(N)?!f.Za(N)||H&&N.v()===O||N(O):(N=k.get("_ko_property_writers"))&&N[v]&&N[v](O)}}}(),f.b("expressionRewriting",f.m),f.b("expressionRewriting.bindingRewriteValidators",f.m.Ra),f.b("expressionRewriting.parseObjectLiteral",f.m.ac),f.b("expressionRewriting.preProcessBindings",f.m.vb),f.b("expressionRewriting._twoWayBindings",f.m.wa),f.b("jsonExpressionRewriting",f.m),f.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",f.m.vb),function(){function A(v){return v.nodeType==8&&M.test(W?v.text:v.nodeValue)}function T(v){return v.nodeType==8&&Q.test(W?v.text:v.nodeValue)}function L(v,O){for(var H=v,ee=1,K=[];H=H.nextSibling;){if(T(H)&&(f.a.g.set(H,k,!0),ee--,ee===0))return K;K.push(H),A(H)&&ee++}if(!O)throw Error("Cannot find closing comment tag to match: "+v.nodeValue);return null}function V(v,O){var H=L(v,O);return H?0<H.length?H[H.length-1].nextSibling:v.nextSibling:null}var W=n&&n.createComment("test").text==="<!--test-->",M=W?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,Q=W?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,N={ul:!0,ol:!0},k="__ko_matchedEndComment__";f.h={ea:{},childNodes:function(v){return A(v)?L(v):v.childNodes},Ea:function(v){if(A(v)){v=f.h.childNodes(v);for(var O=0,H=v.length;O<H;O++)f.removeNode(v[O])}else f.a.Tb(v)},va:function(v,O){if(A(v)){f.h.Ea(v);for(var H=v.nextSibling,ee=0,K=O.length;ee<K;ee++)H.parentNode.insertBefore(O[ee],H)}else f.a.va(v,O)},Vc:function(v,O){var H;A(v)?(H=v.nextSibling,v=v.parentNode):H=v.firstChild,H?O!==H&&v.insertBefore(O,H):v.appendChild(O)},Wb:function(v,O,H){H?(H=H.nextSibling,A(v)&&(v=v.parentNode),H?O!==H&&v.insertBefore(O,H):v.appendChild(O)):f.h.Vc(v,O)},firstChild:function(v){if(A(v))return!v.nextSibling||T(v.nextSibling)?null:v.nextSibling;if(v.firstChild&&T(v.firstChild))throw Error("Found invalid end comment, as the first child of "+v);return v.firstChild},nextSibling:function(v){if(A(v)&&(v=V(v)),v.nextSibling&&T(v.nextSibling)){var O=v.nextSibling;if(T(O)&&!f.a.g.get(O,k))throw Error("Found end comment without a matching opening comment, as child of "+v);return null}return v.nextSibling},Cd:A,Vd:function(v){return(v=(W?v.text:v.nodeValue).match(M))?v[1]:null},Sc:function(v){if(N[f.a.R(v)]){var O=v.firstChild;if(O)do if(O.nodeType===1){var H;H=O.firstChild;var ee=null;if(H)do if(ee)ee.push(H);else if(A(H)){var K=V(H,!0);K?H=K:ee=[H]}else T(H)&&(ee=[H]);while(H=H.nextSibling);if(H=ee)for(ee=O.nextSibling,K=0;K<H.length;K++)ee?v.insertBefore(H[K],ee):v.appendChild(H[K])}while(O=O.nextSibling)}}}}(),f.b("virtualElements",f.h),f.b("virtualElements.allowedBindings",f.h.ea),f.b("virtualElements.emptyNode",f.h.Ea),f.b("virtualElements.insertAfter",f.h.Wb),f.b("virtualElements.prepend",f.h.Vc),f.b("virtualElements.setDomNodeChildren",f.h.va),function(){f.ga=function(){this.nd={}},f.a.extend(f.ga.prototype,{nodeHasBindings:function(A){switch(A.nodeType){case 1:return A.getAttribute("data-bind")!=null||f.j.getComponentNameForNode(A);case 8:return f.h.Cd(A);default:return!1}},getBindings:function(A,T){var L=this.getBindingsString(A,T),L=L?this.parseBindingsString(L,T,A):null;return f.j.tc(L,A,T,!1)},getBindingAccessors:function(A,T){var L=this.getBindingsString(A,T),L=L?this.parseBindingsString(L,T,A,{valueAccessors:!0}):null;return f.j.tc(L,A,T,!0)},getBindingsString:function(A){switch(A.nodeType){case 1:return A.getAttribute("data-bind");case 8:return f.h.Vd(A);default:return null}},parseBindingsString:function(A,T,L,V){try{var W=this.nd,M=A+(V&&V.valueAccessors||""),Q;if(!(Q=W[M])){var N,k="with($context){with($data||{}){return{"+f.m.vb(A,V)+"}}}";N=new Function("$context","$element",k),Q=W[M]=N}return Q(T,L)}catch(v){throw v.message=`Unable to parse bindings. +Bindings value: `+A+` +Message: `+v.message,v}}}),f.ga.instance=new f.ga}(),f.b("bindingProvider",f.ga),function(){function A(he){var xe=(he=f.a.g.get(he,ye))&&he.N;xe&&(he.N=null,xe.Tc())}function T(he,xe,Te){this.node=he,this.yc=xe,this.kb=[],this.H=!1,xe.N||f.a.K.za(he,A),Te&&Te.N&&(Te.N.kb.push(he),this.Kb=Te)}function L(he){return function(){return he}}function V(he){return he()}function W(he){return f.a.Ga(f.u.G(he),function(xe,Te){return function(){return he()[Te]}})}function M(he,xe,Te){return typeof he=="function"?W(he.bind(null,xe,Te)):f.a.Ga(he,L)}function Q(he,xe){return W(this.getBindings.bind(this,he,xe))}function N(he,xe){var Te=f.h.firstChild(xe);if(Te){var Be,Le=f.ga.instance,De=Le.preprocessNode;if(De){for(;Be=Te;)Te=f.h.nextSibling(Be),De.call(Le,Be);Te=f.h.firstChild(xe)}for(;Be=Te;)Te=f.h.nextSibling(Be),k(he,Be)}f.i.ma(xe,f.i.H)}function k(he,xe){var Te=he,Be=xe.nodeType===1;Be&&f.h.Sc(xe),(Be||f.ga.instance.nodeHasBindings(xe))&&(Te=O(xe,null,he).bindingContextForDescendants),Te&&!q[f.a.R(xe)]&&N(Te,xe)}function v(he){var xe=[],Te={},Be=[];return f.a.P(he,function Le(De){if(!Te[De]){var Ue=f.getBindingHandler(De);Ue&&(Ue.after&&(Be.push(De),f.a.D(Ue.after,function(je){if(he[je]){if(f.a.A(Be,je)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+Be.join(", "));Le(je)}}),Be.length--),xe.push({key:De,Mc:Ue})),Te[De]=!0}}),xe}function O(he,xe,Te){var Be=f.a.g.Ub(he,ye,{}),Le=Be.hd;if(!xe){if(Le)throw Error("You cannot apply bindings multiple times to the same element.");Be.hd=!0}Le||(Be.context=Te),Be.Zb||(Be.Zb={});var De;if(xe&&typeof xe!="function")De=xe;else{var Ue=f.ga.instance,je=Ue.getBindingAccessors||Q,it=f.$(function(){return(De=xe?xe(Te,he):je.call(Ue,he,Te))&&(Te[ee]&&Te[ee](),Te[te]&&Te[te]()),De},null,{l:he});De&&it.ja()||(it=null)}var nn=Te,rt;if(De){var rn=function(){return f.a.Ga(it?it():De,V)},Jt=it?function(Xt){return function(){return V(it()[Xt])}}:function(Xt){return De[Xt]};rn.get=function(Xt){return De[Xt]&&V(Jt(Xt))},rn.has=function(Xt){return Xt in De},f.i.H in De&&f.i.subscribe(he,f.i.H,function(){var Xt=(0,De[f.i.H])();if(Xt){var Li=f.h.childNodes(he);Li.length&&Xt(Li,f.Ec(Li[0]))}}),f.i.pa in De&&(nn=f.i.Cb(he,Te),f.i.subscribe(he,f.i.pa,function(){var Xt=(0,De[f.i.pa])();Xt&&f.h.firstChild(he)&&Xt(he)})),Be=v(De),f.a.D(Be,function(Xt){var Li=Xt.Mc.init,bi=Xt.Mc.update,vt=Xt.key;if(he.nodeType===8&&!f.h.ea[vt])throw Error("The binding '"+vt+"' cannot be used with virtual elements");try{typeof Li=="function"&&f.u.G(function(){var Rt=Li(he,Jt(vt),rn,nn.$data,nn);if(Rt&&Rt.controlsDescendantBindings){if(rt!==e)throw Error("Multiple bindings ("+rt+" and "+vt+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");rt=vt}}),typeof bi=="function"&&f.$(function(){bi(he,Jt(vt),rn,nn.$data,nn)},null,{l:he})}catch(Rt){throw Rt.message='Unable to process binding "'+vt+": "+De[vt]+`" +Message: `+Rt.message,Rt}})}return Be=rt===e,{shouldBindDescendants:Be,bindingContextForDescendants:Be&&nn}}function H(he,xe){return he&&he instanceof f.fa?he:new f.fa(he,e,e,xe)}var ee=f.a.Da("_subscribable"),K=f.a.Da("_ancestorBindingInfo"),te=f.a.Da("_dataDependency");f.c={};var q={script:!0,textarea:!0,template:!0};f.getBindingHandler=function(he){return f.c[he]};var pe={};f.fa=function(he,xe,Te,Be,Le){function De(){var Jt=nn?it():it,Xt=f.a.f(Jt);return xe?(f.a.extend(Ue,xe),K in xe&&(Ue[K]=xe[K])):(Ue.$parents=[],Ue.$root=Xt,Ue.ko=f),Ue[ee]=rt,je?Xt=Ue.$data:(Ue.$rawData=Jt,Ue.$data=Xt),Te&&(Ue[Te]=Xt),Be&&Be(Ue,xe,Xt),xe&&xe[ee]&&!f.S.o().Vb(xe[ee])&&xe[ee](),rn&&(Ue[te]=rn),Ue.$data}var Ue=this,je=he===pe,it=je?e:he,nn=typeof it=="function"&&!f.O(it),rt,rn=Le&&Le.dataDependency;Le&&Le.exportDependencies?De():(rt=f.xb(De),rt.v(),rt.ja()?rt.equalityComparer=null:Ue[ee]=e)},f.fa.prototype.createChildContext=function(he,xe,Te,Be){if(!Be&&xe&&typeof xe=="object"&&(Be=xe,xe=Be.as,Te=Be.extend),xe&&Be&&Be.noChildContext){var Le=typeof he=="function"&&!f.O(he);return new f.fa(pe,this,null,function(De){Te&&Te(De),De[xe]=Le?he():he},Be)}return new f.fa(he,this,xe,function(De,Ue){De.$parentContext=Ue,De.$parent=Ue.$data,De.$parents=(Ue.$parents||[]).slice(0),De.$parents.unshift(De.$parent),Te&&Te(De)},Be)},f.fa.prototype.extend=function(he,xe){return new f.fa(pe,this,null,function(Te){f.a.extend(Te,typeof he=="function"?he(Te):he)},xe)};var ye=f.a.g.Z();T.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},T.prototype.sd=function(he){f.a.Pa(this.kb,he),!this.kb.length&&this.H&&this.Cc()},T.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,f.a.K.yb(this.node,A),f.i.ma(this.node,f.i.pa),this.Tc())},f.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(he,xe,Te,Be,Le){var De=f.a.g.Ub(he,ye,{});return De.Fa||(De.Fa=new f.T),Le&&Le.notifyImmediately&&De.Zb[xe]&&f.u.G(Te,Be,[he]),De.Fa.subscribe(Te,Be,xe)},ma:function(he,xe){var Te=f.a.g.get(he,ye);if(Te&&(Te.Zb[xe]=!0,Te.Fa&&Te.Fa.notifySubscribers(he,xe),xe==f.i.H)){if(Te.N)Te.N.Cc();else if(Te.N===e&&Te.Fa&&Te.Fa.Wa(f.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(he,xe){var Te=f.a.g.Ub(he,ye,{});return Te.N||(Te.N=new T(he,Te,xe[K])),xe[K]==Te?xe:xe.extend(function(Be){Be[K]=Te})}},f.Td=function(he){return(he=f.a.g.get(he,ye))&&he.context},f.ib=function(he,xe,Te){return he.nodeType===1&&f.h.Sc(he),O(he,xe,H(Te))},f.ld=function(he,xe,Te){return Te=H(Te),f.ib(he,M(xe,Te,he),Te)},f.Oa=function(he,xe){xe.nodeType!==1&&xe.nodeType!==8||N(H(he),xe)},f.vc=function(he,xe,Te){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(xe=n.body,!xe)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!xe||xe.nodeType!==1&&xe.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");k(H(he,Te),xe)},f.Dc=function(he){return!he||he.nodeType!==1&&he.nodeType!==8?e:f.Td(he)},f.Ec=function(he){return(he=f.Dc(he))?he.$data:e},f.b("bindingHandlers",f.c),f.b("bindingEvent",f.i),f.b("bindingEvent.subscribe",f.i.subscribe),f.b("bindingEvent.startPossiblyAsyncContentBinding",f.i.Cb),f.b("applyBindings",f.vc),f.b("applyBindingsToDescendants",f.Oa),f.b("applyBindingAccessorsToNode",f.ib),f.b("applyBindingsToNode",f.ld),f.b("contextFor",f.Dc),f.b("dataFor",f.Ec)}(),function(A){function T(Q,N){var k=Object.prototype.hasOwnProperty.call(W,Q)?W[Q]:A,v;k?k.subscribe(N):(k=W[Q]=new f.T,k.subscribe(N),L(Q,function(O,H){var ee=!(!H||!H.synchronous);M[Q]={definition:O,Gd:ee},delete W[Q],v||ee?k.notifySubscribers(O):f.na.zb(function(){k.notifySubscribers(O)})}),v=!0)}function L(Q,N){V("getConfig",[Q],function(k){k?V("loadComponent",[Q,k],function(v){N(v,k)}):N(null,null)})}function V(Q,N,k,v){v||(v=f.j.loaders.slice(0));var O=v.shift();if(O){var H=O[Q];if(H){var ee=!1;if(H.apply(O,N.concat(function(K){ee?k(null):K!==null?k(K):V(Q,N,k,v)}))!==A&&(ee=!0,!O.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else V(Q,N,k,v)}else k(null)}var W={},M={};f.j={get:function(Q,N){var k=Object.prototype.hasOwnProperty.call(M,Q)?M[Q]:A;k?k.Gd?f.u.G(function(){N(k.definition)}):f.na.zb(function(){N(k.definition)}):T(Q,N)},Bc:function(Q){delete M[Q]},oc:V},f.j.loaders=[],f.b("components",f.j),f.b("components.get",f.j.get),f.b("components.clearCachedDefinition",f.j.Bc)}(),function(){function A(k,v,O,H){function ee(){--te===0&&H(K)}var K={},te=2,q=O.template;O=O.viewModel,q?W(v,q,function(pe){f.j.oc("loadTemplate",[k,pe],function(ye){K.template=ye,ee()})}):ee(),O?W(v,O,function(pe){f.j.oc("loadViewModel",[k,pe],function(ye){K[N]=ye,ee()})}):ee()}function T(k,v,O){if(typeof v=="function")O(function(ee){return new v(ee)});else if(typeof v[N]=="function")O(v[N]);else if("instance"in v){var H=v.instance;O(function(){return H})}else"viewModel"in v?T(k,v.viewModel,O):k("Unknown viewModel value: "+v)}function L(k){switch(f.a.R(k)){case"script":return f.a.ua(k.text);case"textarea":return f.a.ua(k.value);case"template":if(V(k.content))return f.a.Ca(k.content.childNodes)}return f.a.Ca(k.childNodes)}function V(k){return t.DocumentFragment?k instanceof DocumentFragment:k&&k.nodeType===11}function W(k,v,O){typeof v.require=="string"?a||t.require?(a||t.require)([v.require],function(H){H&&typeof H=="object"&&H.Xd&&H.default&&(H=H.default),O(H)}):k("Uses require, but no AMD loader is present"):O(v)}function M(k){return function(v){throw Error("Component '"+k+"': "+v)}}var Q={};f.j.register=function(k,v){if(!v)throw Error("Invalid configuration for "+k);if(f.j.tb(k))throw Error("Component "+k+" is already registered");Q[k]=v},f.j.tb=function(k){return Object.prototype.hasOwnProperty.call(Q,k)},f.j.unregister=function(k){delete Q[k],f.j.Bc(k)},f.j.Fc={getConfig:function(k,v){v(f.j.tb(k)?Q[k]:null)},loadComponent:function(k,v,O){var H=M(k);W(H,v,function(ee){A(k,H,ee,O)})},loadTemplate:function(k,v,O){if(k=M(k),typeof v=="string")O(f.a.ua(v));else if(v instanceof Array)O(v);else if(V(v))O(f.a.la(v.childNodes));else if(v.element)if(v=v.element,t.HTMLElement?v instanceof HTMLElement:v&&v.tagName&&v.nodeType===1)O(L(v));else if(typeof v=="string"){var H=n.getElementById(v);H?O(L(H)):k("Cannot find element with ID "+v)}else k("Unknown element type: "+v);else k("Unknown template value: "+v)},loadViewModel:function(k,v,O){T(M(k),v,O)}};var N="createViewModel";f.b("components.register",f.j.register),f.b("components.isRegistered",f.j.tb),f.b("components.unregister",f.j.unregister),f.b("components.defaultLoader",f.j.Fc),f.j.loaders.push(f.j.Fc),f.j.dd=Q}(),function(){function A(L,V){var W=L.getAttribute("params");if(W){var W=T.parseBindingsString(W,V,L,{valueAccessors:!0,bindingParams:!0}),W=f.a.Ga(W,function(N){return f.o(N,null,{l:L})}),M=f.a.Ga(W,function(N){var k=N.v();return N.ja()?f.o({read:function(){return f.a.f(N())},write:f.Za(k)&&function(v){N()(v)},l:L}):k});return Object.prototype.hasOwnProperty.call(M,"$raw")||(M.$raw=W),M}return{$raw:{}}}f.j.getComponentNameForNode=function(L){var V=f.a.R(L);if(f.j.tb(V)&&(V.indexOf("-")!=-1||""+L=="[object HTMLUnknownElement]"||8>=f.a.W&&L.tagName===V))return V},f.j.tc=function(L,V,W,M){if(V.nodeType===1){var Q=f.j.getComponentNameForNode(V);if(Q){if(L=L||{},L.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var N={name:Q,params:A(V,W)};L.component=M?function(){return N}:N}}return L};var T=new f.ga;9>f.a.W&&(f.j.register=function(L){return function(V){return L.apply(this,arguments)}}(f.j.register),n.createDocumentFragment=function(L){return function(){var V=L(),W=f.j.dd,M;for(M in W);return V}}(n.createDocumentFragment))}(),function(){function A(V,W,M){if(W=W.template,!W)throw Error("Component '"+V+"' has no template");V=f.a.Ca(W),f.h.va(M,V)}function T(V,W,M){var Q=V.createViewModel;return Q?Q.call(V,W,M):W}var L=0;f.c.component={init:function(V,W,M,Q,N){function k(){var K=v&&v.dispose;typeof K=="function"&&K.call(v),H&&H.s(),O=v=H=null}var v,O,H,ee=f.a.la(f.h.childNodes(V));return f.h.Ea(V),f.a.K.za(V,k),f.o(function(){var K=f.a.f(W()),te,q;if(typeof K=="string"?te=K:(te=f.a.f(K.name),q=f.a.f(K.params)),!te)throw Error("No component name specified");var pe=f.i.Cb(V,N),ye=O=++L;f.j.get(te,function(he){if(O===ye){if(k(),!he)throw Error("Unknown component '"+te+"'");A(te,he,V);var xe=T(he,q,{element:V,templateNodes:ee});he=pe.createChildContext(xe,{extend:function(Te){Te.$component=xe,Te.$componentTemplateNodes=ee}}),xe&&xe.koDescendantsComplete&&(H=f.i.subscribe(V,f.i.pa,xe.koDescendantsComplete,xe)),v=xe,f.Oa(he,V)}})},null,{l:V}),{controlsDescendantBindings:!0}}},f.h.ea.component=!0}();var F={class:"className",for:"htmlFor"};f.c.attr={update:function(A,T){var L=f.a.f(T())||{};f.a.P(L,function(V,W){W=f.a.f(W);var M=V.indexOf(":"),M="lookupNamespaceURI"in A&&0<M&&A.lookupNamespaceURI(V.substr(0,M)),Q=W===!1||W===null||W===e;Q?M?A.removeAttributeNS(M,V):A.removeAttribute(V):W=W.toString(),8>=f.a.W&&V in F?(V=F[V],Q?A.removeAttribute(V):A[V]=W):Q||(M?A.setAttributeNS(M,V,W):A.setAttribute(V,W)),V==="name"&&f.a.Yc(A,Q?"":W)})}},function(){f.c.checked={after:["value","attr"],init:function(A,T,L){function V(){var K=A.checked,te=M();if(!f.S.Ya()&&(K||!N&&!f.S.qa())){var q=f.u.G(T);if(v){var pe=O?q.v():q,ye=ee;ee=te,ye!==te?K&&(f.a.Na(pe,te,!0),f.a.Na(pe,ye,!1)):f.a.Na(pe,te,K),O&&f.Za(q)&&q(pe)}else Q&&(te===e?te=K:K||(te=e)),f.m.eb(q,L,"checked",te,!0)}}function W(){var K=f.a.f(T()),te=M();v?(A.checked=0<=f.a.A(K,te),ee=te):A.checked=Q&&te===e?!!K:M()===K}var M=f.xb(function(){if(L.has("checkedValue"))return f.a.f(L.get("checkedValue"));if(H)return L.has("value")?f.a.f(L.get("value")):A.value}),Q=A.type=="checkbox",N=A.type=="radio";if(Q||N){var k=T(),v=Q&&f.a.f(k)instanceof Array,O=!(v&&k.push&&k.splice),H=N||v,ee=v?M():e;N&&!A.name&&f.c.uniqueName.init(A,function(){return!0}),f.o(V,null,{l:A}),f.a.B(A,"click",V),f.o(W,null,{l:A}),k=e}}},f.m.wa.checked=!0,f.c.checkedValue={update:function(A,T){A.value=f.a.f(T())}}}(),f.c.class={update:function(A,T){var L=f.a.Db(f.a.f(T()));f.a.Eb(A,A.__ko__cssValue,!1),A.__ko__cssValue=L,f.a.Eb(A,L,!0)}},f.c.css={update:function(A,T){var L=f.a.f(T());L!==null&&typeof L=="object"?f.a.P(L,function(V,W){W=f.a.f(W),f.a.Eb(A,V,W)}):f.c.class.update(A,T)}},f.c.enable={update:function(A,T){var L=f.a.f(T());L&&A.disabled?A.removeAttribute("disabled"):L||A.disabled||(A.disabled=!0)}},f.c.disable={update:function(A,T){f.c.enable.update(A,function(){return!f.a.f(T())})}},f.c.event={init:function(A,T,L,V,W){var M=T()||{};f.a.P(M,function(Q){typeof Q=="string"&&f.a.B(A,Q,function(N){var k,v=T()[Q];if(v){try{var O=f.a.la(arguments);V=W.$data,O.unshift(V),k=v.apply(V,O)}finally{k!==!0&&(N.preventDefault?N.preventDefault():N.returnValue=!1)}L.get(Q+"Bubble")===!1&&(N.cancelBubble=!0,N.stopPropagation&&N.stopPropagation())}})})}},f.c.foreach={Rc:function(A){return function(){var T=A(),L=f.a.bc(T);return!L||typeof L.length=="number"?{foreach:T,templateEngine:f.ba.Ma}:(f.a.f(T),{foreach:L.data,as:L.as,noChildContext:L.noChildContext,includeDestroyed:L.includeDestroyed,afterAdd:L.afterAdd,beforeRemove:L.beforeRemove,afterRender:L.afterRender,beforeMove:L.beforeMove,afterMove:L.afterMove,templateEngine:f.ba.Ma})}},init:function(A,T){return f.c.template.init(A,f.c.foreach.Rc(T))},update:function(A,T,L,V,W){return f.c.template.update(A,f.c.foreach.Rc(T),L,V,W)}},f.m.Ra.foreach=!1,f.h.ea.foreach=!0,f.c.hasfocus={init:function(A,T,L){function V(Q){A.__ko_hasfocusUpdating=!0;var N=A.ownerDocument;if("activeElement"in N){var k;try{k=N.activeElement}catch{k=N.body}Q=k===A}N=T(),f.m.eb(N,L,"hasfocus",Q,!0),A.__ko_hasfocusLastValue=Q,A.__ko_hasfocusUpdating=!1}var W=V.bind(null,!0),M=V.bind(null,!1);f.a.B(A,"focus",W),f.a.B(A,"focusin",W),f.a.B(A,"blur",M),f.a.B(A,"focusout",M),A.__ko_hasfocusLastValue=!1},update:function(A,T){var L=!!f.a.f(T());A.__ko_hasfocusUpdating||A.__ko_hasfocusLastValue===L||(L?A.focus():A.blur(),!L&&A.__ko_hasfocusLastValue&&A.ownerDocument.body.focus(),f.u.G(f.a.Fb,null,[A,L?"focusin":"focusout"]))}},f.m.wa.hasfocus=!0,f.c.hasFocus=f.c.hasfocus,f.m.wa.hasFocus="hasfocus",f.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(A,T){f.a.fc(A,T())}},function(){function A(T,L,V){f.c[T]={init:function(W,M,Q,N,k){var v,O,H={},ee,K,te;if(L){N=Q.get("as");var q=Q.get("noChildContext");te=!(N&&q),H={as:N,noChildContext:q,exportDependencies:te}}return K=(ee=Q.get("completeOn")=="render")||Q.has(f.i.pa),f.o(function(){var pe=f.a.f(M()),ye=!V!=!pe,he=!O,xe;(te||ye!==v)&&(K&&(k=f.i.Cb(W,k)),ye&&((!L||te)&&(H.dataDependency=f.S.o()),xe=L?k.createChildContext(typeof pe=="function"?pe:M,H):f.S.qa()?k.extend(null,H):k),he&&f.S.qa()&&(O=f.a.Ca(f.h.childNodes(W),!0)),ye?(he||f.h.va(W,f.a.Ca(O)),f.Oa(xe,W)):(f.h.Ea(W),ee||f.i.ma(W,f.i.H)),v=ye)},null,{l:W}),{controlsDescendantBindings:!0}}},f.m.Ra[T]=!1,f.h.ea[T]=!0}A("if"),A("ifnot",!1,!0),A("with",!0)}(),f.c.let={init:function(A,T,L,V,W){return T=W.extend(T),f.Oa(T,A),{controlsDescendantBindings:!0}}},f.h.ea.let=!0;var P={};f.c.options={init:function(A){if(f.a.R(A)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<A.length;)A.remove(0);return{controlsDescendantBindings:!0}},update:function(A,T,L){function V(){return f.a.jb(A.options,function(q){return q.selected})}function W(q,pe,ye){var he=typeof pe;return he=="function"?pe(q):he=="string"?q[pe]:ye}function M(q,pe){if(K&&v)f.i.ma(A,f.i.H);else if(ee.length){var ye=0<=f.a.A(ee,f.w.M(pe[0]));f.a.Zc(pe[0],ye),K&&!ye&&f.u.G(f.a.Fb,null,[A,"change"])}}var Q=A.multiple,N=A.length!=0&&Q?A.scrollTop:null,k=f.a.f(T()),v=L.get("valueAllowUnset")&&L.has("value"),O=L.get("optionsIncludeDestroyed");T={};var H,ee=[];v||(Q?ee=f.a.Mb(V(),f.w.M):0<=A.selectedIndex&&ee.push(f.w.M(A.options[A.selectedIndex]))),k&&(typeof k.length>"u"&&(k=[k]),H=f.a.jb(k,function(q){return O||q===e||q===null||!f.a.f(q._destroy)}),L.has("optionsCaption")&&(k=f.a.f(L.get("optionsCaption")),k!==null&&k!==e&&H.unshift(P)));var K=!1;if(T.beforeRemove=function(q){A.removeChild(q)},k=M,L.has("optionsAfterRender")&&typeof L.get("optionsAfterRender")=="function"&&(k=function(q,pe){M(0,pe),f.u.G(L.get("optionsAfterRender"),null,[pe[0],q!==P?q:e])}),f.a.ec(A,H,function(q,pe,ye){return ye.length&&(ee=!v&&ye[0].selected?[f.w.M(ye[0])]:[],K=!0),pe=A.ownerDocument.createElement("option"),q===P?(f.a.Bb(pe,L.get("optionsCaption")),f.w.cb(pe,e)):(ye=W(q,L.get("optionsValue"),q),f.w.cb(pe,f.a.f(ye)),q=W(q,L.get("optionsText"),ye),f.a.Bb(pe,q)),[pe]},T,k),!v){var te;Q?te=ee.length&&V().length<ee.length:te=ee.length&&0<=A.selectedIndex?f.w.M(A.options[A.selectedIndex])!==ee[0]:ee.length||0<=A.selectedIndex,te&&f.u.G(f.a.Fb,null,[A,"change"])}(v||f.S.Ya())&&f.i.ma(A,f.i.H),f.a.wd(A),N&&20<Math.abs(N-A.scrollTop)&&(A.scrollTop=N)}},f.c.options.$b=f.a.g.Z(),f.c.selectedOptions={init:function(A,T,L){function V(){var Q=T(),N=[];f.a.D(A.getElementsByTagName("option"),function(k){k.selected&&N.push(f.w.M(k))}),f.m.eb(Q,L,"selectedOptions",N)}function W(){var Q=f.a.f(T()),N=A.scrollTop;Q&&typeof Q.length=="number"&&f.a.D(A.getElementsByTagName("option"),function(k){var v=0<=f.a.A(Q,f.w.M(k));k.selected!=v&&f.a.Zc(k,v)}),A.scrollTop=N}if(f.a.R(A)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var M;f.i.subscribe(A,f.i.H,function(){M?V():(f.a.B(A,"change",V),M=f.o(W,null,{l:A}))},null,{notifyImmediately:!0})},update:function(){}},f.m.wa.selectedOptions=!0,f.c.style={update:function(A,T){var L=f.a.f(T()||{});f.a.P(L,function(V,W){if(W=f.a.f(W),(W===null||W===e||W===!1)&&(W=""),o)o(A).css(V,W);else if(/^--/.test(V))A.style.setProperty(V,W);else{V=V.replace(/-(\w)/g,function(Q,N){return N.toUpperCase()});var M=A.style[V];A.style[V]=W,W===M||A.style[V]!=M||isNaN(W)||(A.style[V]=W+"px")}})}},f.c.submit={init:function(A,T,L,V,W){if(typeof T()!="function")throw Error("The value for a submit binding must be a function");f.a.B(A,"submit",function(M){var Q,N=T();try{Q=N.call(W.$data,A)}finally{Q!==!0&&(M.preventDefault?M.preventDefault():M.returnValue=!1)}})}},f.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(A,T){f.a.Bb(A,T())}},f.h.ea.text=!0,function(){if(t&&t.navigator){var A=function(H){if(H)return parseFloat(H[1])},T=t.navigator.userAgent,L,V,W,M,Q;(L=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(Q=A(T.match(/Edge\/([^ ]+)$/)))||A(T.match(/Chrome\/([^ ]+)/))||(V=A(T.match(/Version\/([^ ]+) Safari/)))||(W=A(T.match(/Firefox\/([^ ]+)/)))||(M=f.a.W||A(T.match(/MSIE ([^ ]+)/)))||(M=A(T.match(/rv:([^ )]+)/)))}if(8<=M&&10>M)var N=f.a.g.Z(),k=f.a.g.Z(),v=function(H){var ee=this.activeElement;(ee=ee&&f.a.g.get(ee,k))&&ee(H)},O=function(H,ee){var K=H.ownerDocument;f.a.g.get(K,N)||(f.a.g.set(K,N,!0),f.a.B(K,"selectionchange",v)),f.a.g.set(H,k,ee)};f.c.textInput={init:function(H,ee,K){function te(De,Ue){f.a.B(H,De,Ue)}function q(){var De=f.a.f(ee());(De===null||De===e)&&(De=""),Te!==e&&De===Te?f.a.setTimeout(q,4):H.value!==De&&(Le=!0,H.value=De,Le=!1,he=H.value)}function pe(){xe||(Te=H.value,xe=f.a.setTimeout(ye,4))}function ye(){clearTimeout(xe),Te=xe=e;var De=H.value;he!==De&&(he=De,f.m.eb(ee(),K,"textInput",De))}var he=H.value,xe,Te,Be=f.a.W==9?pe:ye,Le=!1;M&&te("keypress",ye),11>M&&te("propertychange",function(De){Le||De.propertyName!=="value"||Be(De)}),M==8&&(te("keyup",ye),te("keydown",ye)),O&&(O(H,Be),te("dragend",pe)),(!M||9<=M)&&te("input",Be),5>V&&f.a.R(H)==="textarea"?(te("keydown",pe),te("paste",pe),te("cut",pe)):11>L?te("keydown",pe):4>W?(te("DOMAutoComplete",ye),te("dragdrop",ye),te("drop",ye)):Q&&H.type==="number"&&te("keydown",pe),te("change",ye),te("blur",ye),f.o(q,null,{l:H})}},f.m.wa.textInput=!0,f.c.textinput={preprocess:function(H,ee,K){K("textInput",H)}}}(),f.c.uniqueName={init:function(A,T){if(T()){var L="ko_unique_"+ ++f.c.uniqueName.rd;f.a.Yc(A,L)}}},f.c.uniqueName.rd=0,f.c.using={init:function(A,T,L,V,W){var M;return L.has("as")&&(M={as:L.get("as"),noChildContext:L.get("noChildContext")}),T=W.createChildContext(T,M),f.Oa(T,A),{controlsDescendantBindings:!0}}},f.h.ea.using=!0,f.c.value={init:function(A,T,L){var V=f.a.R(A),W=V=="input";if(!W||A.type!="checkbox"&&A.type!="radio"){var M=[],Q=L.get("valueUpdate"),N=!1,k=null;Q&&(typeof Q=="string"?M=[Q]:M=f.a.wc(Q),f.a.Pa(M,"change"));var v=function(){k=null,N=!1;var ee=T(),K=f.w.M(A);f.m.eb(ee,L,"value",K)};!f.a.W||!W||A.type!="text"||A.autocomplete=="off"||A.form&&A.form.autocomplete=="off"||f.a.A(M,"propertychange")!=-1||(f.a.B(A,"propertychange",function(){N=!0}),f.a.B(A,"focus",function(){N=!1}),f.a.B(A,"blur",function(){N&&v()})),f.a.D(M,function(ee){var K=v;f.a.Ud(ee,"after")&&(K=function(){k=f.w.M(A),f.a.setTimeout(v,0)},ee=ee.substring(5)),f.a.B(A,ee,K)});var O;if(O=W&&A.type=="file"?function(){var ee=f.a.f(T());ee===null||ee===e||ee===""?A.value="":f.u.G(v)}:function(){var ee=f.a.f(T()),K=f.w.M(A);k!==null&&ee===k?f.a.setTimeout(O,0):(ee!==K||K===e)&&(V==="select"?(K=L.get("valueAllowUnset"),f.w.cb(A,ee,K),K||ee===f.w.M(A)||f.u.G(v)):f.w.cb(A,ee))},V==="select"){var H;f.i.subscribe(A,f.i.H,function(){H?L.get("valueAllowUnset")?O():v():(f.a.B(A,"change",v),H=f.o(O,null,{l:A}))},null,{notifyImmediately:!0})}else f.a.B(A,"change",v),f.o(O,null,{l:A})}else f.ib(A,{checkedValue:T})},update:function(){}},f.m.wa.value=!0,f.c.visible={update:function(A,T){var L=f.a.f(T()),V=A.style.display!="none";L&&!V?A.style.display="":!L&&V&&(A.style.display="none")}},f.c.hidden={update:function(A,T){f.c.visible.update(A,function(){return!f.a.f(T())})}},function(A){f.c[A]={init:function(T,L,V,W,M){return f.c.event.init.call(this,T,function(){var Q={};return Q[A]=L(),Q},V,W,M)}}}("click"),f.ca=function(){},f.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},f.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},f.ca.prototype.makeTemplateSource=function(A,T){if(typeof A=="string"){T=T||n;var L=T.getElementById(A);if(!L)throw Error("Cannot find template with ID "+A);return new f.C.F(L)}if(A.nodeType==1||A.nodeType==8)return new f.C.ia(A);throw Error("Unknown template type: "+A)},f.ca.prototype.renderTemplate=function(A,T,L,V){return A=this.makeTemplateSource(A,V),this.renderTemplateSource(A,T,L,V)},f.ca.prototype.isTemplateRewritten=function(A,T){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(A,T).data("isRewritten")},f.ca.prototype.rewriteTemplate=function(A,T,L){A=this.makeTemplateSource(A,L),T=T(A.text()),A.text(T),A.data("isRewritten",!0)},f.b("templateEngine",f.ca),f.kc=function(){function A(V,W,M,Q){V=f.m.ac(V);for(var N=f.m.Ra,k=0;k<V.length;k++){var v=V[k].key;if(Object.prototype.hasOwnProperty.call(N,v)){var O=N[v];if(typeof O=="function"){if(v=O(V[k].value))throw Error(v)}else if(!O)throw Error("This template engine does not support the '"+v+"' binding within its templates")}}return M="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+f.m.vb(V,{valueAccessors:!0})+" } })()},'"+M.toLowerCase()+"')",Q.createJavaScriptEvaluatorBlock(M)+W}var T=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,L=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(V,W,M){W.isTemplateRewritten(V,M)||W.rewriteTemplate(V,function(Q){return f.kc.Ld(Q,W)},M)},Ld:function(V,W){return V.replace(T,function(M,Q,N,k,v){return A(v,Q,N,W)}).replace(L,function(M,Q){return A(Q,"<!-- ko -->","#comment",W)})},md:function(V,W){return f.aa.Xb(function(M,Q){var N=M.nextSibling;N&&N.nodeName.toLowerCase()===W&&f.ib(N,V,Q)})}}}(),f.b("__tr_ambtns",f.kc.md),function(){f.C={},f.C.F=function(L){if(this.F=L){var V=f.a.R(L);this.ab=V==="script"?1:V==="textarea"?2:V=="template"&&L.content&&L.content.nodeType===11?3:4}},f.C.F.prototype.text=function(){var L=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[L];var V=arguments[0];L==="innerHTML"?f.a.fc(this.F,V):this.F[L]=V};var A=f.a.g.Z()+"_";f.C.F.prototype.data=function(L){if(arguments.length===1)return f.a.g.get(this.F,A+L);f.a.g.set(this.F,A+L,arguments[1])};var T=f.a.g.Z();f.C.F.prototype.nodes=function(){var L=this.F;if(arguments.length==0){var V=f.a.g.get(L,T)||{},W=V.lb||(this.ab===3?L.content:this.ab===4?L:e);if(!W||V.jd){var M=this.text();M&&M!==V.bb&&(W=f.a.Md(M,L.ownerDocument),f.a.g.set(L,T,{lb:W,bb:M,jd:!0}))}return W}V=arguments[0],this.ab!==e&&this.text(""),f.a.g.set(L,T,{lb:V})},f.C.ia=function(L){this.F=L},f.C.ia.prototype=new f.C.F,f.C.ia.prototype.constructor=f.C.ia,f.C.ia.prototype.text=function(){if(arguments.length==0){var L=f.a.g.get(this.F,T)||{};return L.bb===e&&L.lb&&(L.bb=L.lb.innerHTML),L.bb}f.a.g.set(this.F,T,{bb:arguments[0]})},f.b("templateSources",f.C),f.b("templateSources.domElement",f.C.F),f.b("templateSources.anonymousTemplate",f.C.ia)}(),function(){function A(k,v,O){var H;for(v=f.h.nextSibling(v);k&&(H=k)!==v;)k=f.h.nextSibling(H),O(H,k)}function T(k,v){if(k.length){var O=k[0],H=k[k.length-1],ee=O.parentNode,K=f.ga.instance,te=K.preprocessNode;if(te){if(A(O,H,function(q,pe){var ye=q.previousSibling,he=te.call(K,q);he&&(q===O&&(O=he[0]||pe),q===H&&(H=he[he.length-1]||ye))}),k.length=0,!O)return;O===H?k.push(O):(k.push(O,H),f.a.Ua(k,ee))}A(O,H,function(q){q.nodeType!==1&&q.nodeType!==8||f.vc(v,q)}),A(O,H,function(q){q.nodeType!==1&&q.nodeType!==8||f.aa.cd(q,[v])}),f.a.Ua(k,ee)}}function L(k){return k.nodeType?k:0<k.length?k[0]:null}function V(k,v,O,H,ee){ee=ee||{};var K=(k&&L(k)||O||{}).ownerDocument,te=ee.templateEngine||M;if(f.kc.xd(O,te,K),O=te.renderTemplate(O,H,ee,K),typeof O.length!="number"||0<O.length&&typeof O[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(K=!1,v){case"replaceChildren":f.h.va(k,O),K=!0;break;case"replaceNode":f.a.Xc(k,O),K=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+v)}return K&&(T(O,H),ee.afterRender&&f.u.G(ee.afterRender,null,[O,H[ee.as||"$data"]]),v=="replaceChildren"&&f.i.ma(k,f.i.H)),O}function W(k,v,O){return f.O(k)?k():typeof k=="function"?k(v,O):k}var M;f.gc=function(k){if(k!=e&&!(k instanceof f.ca))throw Error("templateEngine must inherit from ko.templateEngine");M=k},f.dc=function(k,v,O,H,ee){if(O=O||{},(O.templateEngine||M)==e)throw Error("Set a template engine before calling renderTemplate");if(ee=ee||"replaceChildren",H){var K=L(H);return f.$(function(){var q=v&&v instanceof f.fa?v:new f.fa(v,null,null,null,{exportDependencies:!0}),te=W(k,q.$data,q),q=V(H,ee,te,q,O);ee=="replaceNode"&&(H=q,K=L(H))},null,{Sa:function(){return!K||!f.a.Sb(K)},l:K&&ee=="replaceNode"?K.parentNode:K})}return f.aa.Xb(function(te){f.dc(k,v,O,te,"replaceNode")})},f.Qd=function(k,v,O,H,ee){function K(Te,Be){f.u.G(f.a.ec,null,[H,Te,q,O,te,Be]),f.i.ma(H,f.i.H)}function te(Te,Be){T(Be,pe),O.afterRender&&O.afterRender(Be,Te),pe=null}function q(Te,Be){pe=ee.createChildContext(Te,{as:ye,noChildContext:O.noChildContext,extend:function(De){De.$index=Be,ye&&(De[ye+"Index"]=Be)}});var Le=W(k,Te,pe);return V(H,"ignoreTargetNode",Le,pe,O)}var pe,ye=O.as,he=O.includeDestroyed===!1||f.options.foreachHidesDestroyed&&!O.includeDestroyed;if(he||O.beforeRemove||!f.Pc(v))return f.$(function(){var Te=f.a.f(v)||[];typeof Te.length>"u"&&(Te=[Te]),he&&(Te=f.a.jb(Te,function(Be){return Be===e||Be===null||!f.a.f(Be._destroy)})),K(Te)},null,{l:H});K(v.v());var xe=v.subscribe(function(Te){K(v(),Te)},null,"arrayChange");return xe.l(H),xe};var Q=f.a.g.Z(),N=f.a.g.Z();f.c.template={init:function(k,v){var O=f.a.f(v());if(typeof O=="string"||"name"in O)f.h.Ea(k);else if("nodes"in O){if(O=O.nodes||[],f.O(O))throw Error('The "nodes" option must be a plain, non-observable array.');var H=O[0]&&O[0].parentNode;H&&f.a.g.get(H,N)||(H=f.a.Yb(O),f.a.g.set(H,N,!0)),new f.C.ia(k).nodes(H)}else if(O=f.h.childNodes(k),0<O.length)H=f.a.Yb(O),new f.C.ia(k).nodes(H);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(k,v,O,H,ee){var K=v();v=f.a.f(K),O=!0,H=null,typeof v=="string"?v={}:(K="name"in v?v.name:k,"if"in v&&(O=f.a.f(v.if)),O&&"ifnot"in v&&(O=!f.a.f(v.ifnot)),O&&!K&&(O=!1)),"foreach"in v?H=f.Qd(K,O&&v.foreach||[],v,k,ee):O?(O=ee,"data"in v&&(O=ee.createChildContext(v.data,{as:v.as,noChildContext:v.noChildContext,exportDependencies:!0})),H=f.dc(K,O,v,k)):f.h.Ea(k),ee=H,(v=f.a.g.get(k,Q))&&typeof v.s=="function"&&v.s(),f.a.g.set(k,Q,!ee||ee.ja&&!ee.ja()?e:ee)}},f.m.Ra.template=function(k){return k=f.m.ac(k),k.length==1&&k[0].unknown||f.m.Id(k,"name")?null:"This template engine does not support anonymous templates nested within its templates"},f.h.ea.template=!0}(),f.b("setTemplateEngine",f.gc),f.b("renderTemplate",f.dc),f.a.Kc=function(A,T,L){if(A.length&&T.length){var V,W,M,Q,N;for(V=W=0;(!L||V<L)&&(Q=A[W]);++W){for(M=0;N=T[M];++M)if(Q.value===N.value){Q.moved=N.index,N.moved=Q.index,T.splice(M,1),V=M=0;break}V+=M}}},f.a.Pb=function(){function A(T,L,V,W,M){var Q=Math.min,N=Math.max,k=[],v,O=T.length,H,ee=L.length,K=ee-O||1,te=O+ee+1,q,pe,ye;for(v=0;v<=O;v++)for(pe=q,k.push(q=[]),ye=Q(ee,v+K),H=N(0,v-1);H<=ye;H++)q[H]=H?v?T[v-1]===L[H-1]?pe[H-1]:Q(pe[H]||te,q[H-1]||te)+1:H+1:v+1;for(Q=[],N=[],K=[],v=O,H=ee;v||H;)ee=k[v][H]-1,H&&ee===k[v][H-1]?N.push(Q[Q.length]={status:V,value:L[--H],index:H}):v&&ee===k[v-1][H]?K.push(Q[Q.length]={status:W,value:T[--v],index:v}):(--H,--v,M.sparse||Q.push({status:"retained",value:L[H]}));return f.a.Kc(K,N,!M.dontLimitMoves&&10*O),Q.reverse()}return function(T,L,V){return V=typeof V=="boolean"?{dontLimitMoves:V}:V||{},T=T||[],L=L||[],T.length<L.length?A(T,L,"added","deleted",V):A(L,T,"deleted","added",V)}}(),f.b("utils.compareArrays",f.a.Pb),function(){function A(V,W,M,Q,N){var k=[],v=f.$(function(){var O=W(M,N,f.a.Ua(k,V))||[];0<k.length&&(f.a.Xc(k,O),Q&&f.u.G(Q,null,[M,O,N])),k.length=0,f.a.Nb(k,O)},null,{l:V,Sa:function(){return!f.a.kd(k)}});return{Y:k,$:v.ja()?v:e}}var T=f.a.g.Z(),L=f.a.g.Z();f.a.ec=function(V,W,M,Q,N,k){function v(Xt){Le={Aa:Xt,pb:f.ta(pe++)},te.push(Le),K||Be.push(Le)}function O(Xt){Le=ee[Xt],pe!==Le.pb.v()&&Te.push(Le),Le.pb(pe++),f.a.Ua(Le.Y,V),te.push(Le)}function H(Xt,Li){if(Xt)for(var bi=0,vt=Li.length;bi<vt;bi++)f.a.D(Li[bi].Y,function(Rt){Xt(Rt,bi,Li[bi].Aa)})}W=W||[],typeof W.length>"u"&&(W=[W]),Q=Q||{};var ee=f.a.g.get(V,T),K=!ee,te=[],q=0,pe=0,ye=[],he=[],xe=[],Te=[],Be=[],Le,De=0;if(K)f.a.D(W,v);else{if(!k||ee&&ee._countWaitingForRemove){var Ue=f.a.Mb(ee,function(Xt){return Xt.Aa});k=f.a.Pb(Ue,W,{dontLimitMoves:Q.dontLimitMoves,sparse:!0})}for(var Ue=0,je,it,nn;je=k[Ue];Ue++)switch(it=je.moved,nn=je.index,je.status){case"deleted":for(;q<nn;)O(q++);it===e&&(Le=ee[q],Le.$&&(Le.$.s(),Le.$=e),f.a.Ua(Le.Y,V).length&&(Q.beforeRemove&&(te.push(Le),De++,Le.Aa===L?Le=null:xe.push(Le)),Le&&ye.push.apply(ye,Le.Y))),q++;break;case"added":for(;pe<nn;)O(q++);it!==e?(he.push(te.length),O(it)):v(je.value)}for(;pe<W.length;)O(q++);te._countWaitingForRemove=De}f.a.g.set(V,T,te),H(Q.beforeMove,Te),f.a.D(ye,Q.beforeRemove?f.oa:f.removeNode);var rt,rn,Jt;try{Jt=V.ownerDocument.activeElement}catch{}if(he.length)for(;(Ue=he.shift())!=e;){for(Le=te[Ue],rt=e;Ue;)if((rn=te[--Ue].Y)&&rn.length){rt=rn[rn.length-1];break}for(W=0;q=Le.Y[W];rt=q,W++)f.h.Wb(V,q,rt)}for(Ue=0;Le=te[Ue];Ue++){for(Le.Y||f.a.extend(Le,A(V,M,Le.Aa,N,Le.pb)),W=0;q=Le.Y[W];rt=q,W++)f.h.Wb(V,q,rt);!Le.Ed&&N&&(N(Le.Aa,Le.Y,Le.pb),Le.Ed=!0,rt=Le.Y[Le.Y.length-1])}for(Jt&&V.ownerDocument.activeElement!=Jt&&Jt.focus(),H(Q.beforeRemove,xe),Ue=0;Ue<xe.length;++Ue)xe[Ue].Aa=L;H(Q.afterMove,Te),H(Q.afterAdd,Be)}}(),f.b("utils.setDomNodeChildrenFromArrayMapping",f.a.ec),f.ba=function(){this.allowTemplateRewriting=!1},f.ba.prototype=new f.ca,f.ba.prototype.constructor=f.ba,f.ba.prototype.renderTemplateSource=function(A,T,L,V){return(T=!(9>f.a.W)&&A.nodes?A.nodes():null)?f.a.la(T.cloneNode(!0).childNodes):(A=A.text(),f.a.ua(A,V))},f.ba.Ma=new f.ba,f.gc(f.ba.Ma),f.b("nativeTemplateEngine",f.ba),function(){f.$a=function(){var T=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(L,V,W,M){if(M=M||n,W=W||{},2>T)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var Q=L.data("precompiled");return Q||(Q=L.text()||"",Q=o.template(null,"{{ko_with $item.koBindingContext}}"+Q+"{{/ko_with}}"),L.data("precompiled",Q)),L=[V.$data],V=o.extend({koBindingContext:V},W.templateOptions),V=o.tmpl(Q,L,V),V.appendTo(M.createElement("div")),o.fragments={},V},this.createJavaScriptEvaluatorBlock=function(L){return"{{ko_code ((function() { return "+L+" })()) }}"},this.addTemplate=function(L,V){n.write("<script type='text/html' id='"+L+"'>"+V+"<\/script>")},0<T&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},f.$a.prototype=new f.ca,f.$a.prototype.constructor=f.$a;var A=new f.$a;0<A.Hd&&f.gc(A),f.b("jqueryTmplTemplateEngine",f.$a)}()})})()})()})();var B1t=ko;typeof window<"u"?(ko=window.ko,typeof RN<"u"?window.ko=RN:delete window.ko):(ko=global.ko,typeof RN<"u"?global.ko=RN:delete global.ko);var I_=B1t;var RBo=y(C(),1);/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var nee="__knockoutObservables",iee="__knockoutSubscribable";function oSe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=rSe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===nee||o===iee)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&X1t(n,a)}}),e}function rSe(e,t){var n=e[nee];return!n&&t&&(n={},Object.defineProperty(e,nee,{value:n})),n}function w1t(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),oSe.call(i,e,[t]),e}function X1t(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=W1t(e,t,i))})}function W1t(e,t,n){var i=F1t(e,n);return i.subscribe(t)}function F1t(e,t){var n=t[iee];if(!n){n=new e.subscribable,Object.defineProperty(t,iee,{value:n});var i={};P1t(t,n,i),M1t(e,t,n,i)}return n}function P1t(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function M1t(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function sSe(e,t){if(!e)return null;var n=rSe(e,!1);return n&&n[t]||null}function v1t(e,t){var n=sSe(e,t);n&&n.valueHasMutated()}function N1t(e){e.track=oSe,e.getObservable=sSe,e.valueHasMutated=v1t,e.defineProperty=w1t}var VN={attachToKo:N1t};var GBo=y(C(),1),aSe="http://www.w3.org/2000/svg",cSe="cesium-svgPath-svg",D1t={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(aSe,"svg:svg");i.setAttribute("class",cSe);let o=document.createElementNS(aSe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${cSe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},GN=D1t;VN.attachToKo(I_);GN.register(I_);var Ee=I_;function ZN(e){l(e)||(e=new Yh),this._clock=e,this._eventHelper=new Lr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=Ee.observable(j.now()),this.systemTime.equalityComparer=j.equals,this.startTime=Ee.observable(e.startTime),this.startTime.equalityComparer=j.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=Ee.observable(e.stopTime),this.stopTime.equalityComparer=j.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=Ee.observable(e.currentTime),this.currentTime.equalityComparer=j.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=Ee.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=Ee.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=Ee.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=Ee.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=Ee.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),Ee.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(ZN.prototype,{clock:{get:function(){return this._clock}}});ZN.prototype.synchronize=function(){let e=this._clock;this.systemTime=j.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};ZN.prototype.isDestroyed=function(){return!1};ZN.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var BN=ZN;var QBo=y(C(),1);function Q1t(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,Ae.throwInstantiationError()}var oee=Q1t;var OBo=y(C(),1);var YL={};YL.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};YL.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};YL.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let d=document.createElement("div");return d.className="cesium-cesiumInspector-slider",d.appendChild(document.createTextNode(e)),d.appendChild(s),d.appendChild(c),d};YL.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};YL.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var Vd=YL;var qBo=y(C(),1);function lSe(e,t){this._command=e,t=t??Y.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",Ee.track(this,["toggled","tooltip"])}Object.defineProperties(lSe.prototype,{command:{get:function(){return this._command}}});var Vy=lSe;var owo=y(C(),1);function U1t(e,t){t=t??!0;let n=new Ce,i=new Ce;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,Ee.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Xn=U1t;var awo=y(C(),1);function k1t(e,t,n,i,o){return n.call(i,e[t]),Ee.getObservable(e,t).subscribe(n,i,o)}var $a=k1t;var mwo=y(C(),1);var __="http://www.w3.org/2000/svg",mSe="http://www.w3.org/1999/xlink",t3,wN=U.fromCssColorString("rgba(247,250,255,0.384)"),n3=U.fromCssColorString("rgba(143,191,255,0.216)"),ree=U.fromCssColorString("rgba(153,197,255,0.098)"),i3=U.fromCssColorString("rgba(255,255,255,0.086)"),Y1t=U.fromCssColorString("rgba(255,255,255,0.267)"),O1t=U.fromCssColorString("rgba(255,255,255,0)"),dSe=U.fromCssColorString("rgba(66,67,68,0.3)"),uSe=U.fromCssColorString("rgba(0,0,0,0.5)");function Gy(e){return U.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var XN={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function Ef(e){let t=document.createElementNS(__,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(Ef(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(mSe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function see(e,t,n){let i=document.createElementNS(__,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(__,"tspan");return o.textContent=n,i.appendChild(o),i}function H1t(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var o3=new U;function Ss(e,t){let n=t.alpha,i=1-n;return o3.red=e.red*i+t.red*n,o3.green=e.green*i+t.green*n,o3.blue=e.blue*i+t.blue*n,o3.toCssColorString()}function aee(e,t,n){let i=XN[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ef(o)}function z1t(e,t,n){let i=XN[n],o=XN.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ef(r)}function K1t(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&t3!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,d;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,d=t.touches[0].clientY):(c=t.clientX,d=t.clientY),!i&&(c>a.right||c<a.left||d<a.top||d>a.bottom))return;let u=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,p=d-r-a.top,g=Math.atan2(p,h)*180/Math.PI+90;g>180&&(g-=360);let f=n.shuttleRingAngle;i||c<u.right&&c>u.left&&d>u.top&&d<u.bottom?(t3=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<f?n.slower():g>f&&n.faster(),t.preventDefault()}else e===t3&&(t3=void 0),n.shuttleRingDragging=!1}function ab(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[$a(t,"toggled",this.setToggled,this),$a(t,"tooltip",this.setTooltip,this),$a(t.command,"canExecute",this.setEnabled,this)]}ab.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();me(this)};ab.prototype.isDestroyed=function(){return!1};ab.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};ab.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};ab.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function OL(e,t){e=Dn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(__,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mSe);let s=document.createElementNS(__,"g");this._topG=s,this._realtimeSVG=new ab(z1t(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new ab(aee(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new ab(aee(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new ab(aee(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(__,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=Ef({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let d=XN.animation_pathSwooshFX,u=XN.animation_pathPointer,h=Ef({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:d.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:d.d},{tagName:d.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:d.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=Ef({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:u.tagName,d:u.d});let p=Ef({tagName:"g",transform:"translate(100,100)"});this._knobOuter=Ef({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,f=Ef({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=see(0,-24,""),this._knobTime=see(0,-7,""),this._knobStatus=see(0,-41,"");let b=Ef({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),x=document.createElementNS(__,"g");x.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(x),s.appendChild(p),s.appendChild(a),x.appendChild(c),x.appendChild(h),x.appendChild(this._shuttleRingPointer),p.appendChild(this._knobOuter),p.appendChild(f),p.appendChild(this._knobDate),p.appendChild(this._knobTime),p.appendChild(this._knobStatus),p.appendChild(b),r.appendChild(s),e.appendChild(r);let I=this;function _(B){K1t(I,B)}this._mouseCallback=_,c.addEventListener("mousedown",_,!0),c.addEventListener("touchstart",_,!0),h.addEventListener("mousedown",_,!0),h.addEventListener("touchstart",_,!0),n.addEventListener("mousemove",_,!0),n.addEventListener("touchmove",_,!0),n.addEventListener("mouseup",_,!0),n.addEventListener("touchend",_,!0),n.addEventListener("touchcancel",_,!0),this._shuttleRingPointer.addEventListener("mousedown",_,!0),this._shuttleRingPointer.addEventListener("touchstart",_,!0),this._knobOuter.addEventListener("mousedown",_,!0),this._knobOuter.addEventListener("touchstart",_,!0);let E=this._knobTime.childNodes[0],S=this._knobDate.childNodes[0],R=this._knobStatus.childNodes[0],G;this._subscriptions=[$a(t.pauseViewModel,"toggled",function(B){G!==B&&(G=B,G?I._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):I._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),$a(t,"shuttleRingAngle",function(B){H1t(I._shuttleRingPointer,I._knobOuter,B)}),$a(t,"dateLabel",function(B){S.textContent!==B&&(S.textContent=B)}),$a(t,"timeLabel",function(B){E.textContent!==B&&(E.textContent=B)}),$a(t,"multiplierLabel",function(B){R.textContent!==B&&(R.textContent=B)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(OL.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});OL.prototype.isDestroyed=function(){return!1};OL.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return me(this)};OL.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};OL.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let u=this;u._observer=new MutationObserver(function(){e.body.contains(u._container)&&(u._observer.disconnect(),u._observer=void 0,u.applyThemeChanges())}),u._observer.observe(e,{childList:!0,subtree:!0});return}let t=Gy(this._themeNormal),n=Gy(this._themeHover),i=Gy(this._themeSelect),o=Gy(this._themeDisabled),r=Gy(this._themeKnob),s=Gy(this._themePointer),a=Gy(this._themeSwoosh),c=Gy(this._themeSwooshHover),d=Ef({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(t,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(t,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(t,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(t,i3)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(n,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(n,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(n,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(n,i3)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(i,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(i,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(i,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(i,i3)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(o,Y1t)},{tagName:"stop",offset:"75%","stop-color":Ss(o,O1t)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Ss(s,uSe)},{tagName:"stop",offset:"100%","stop-color":Ss(s,uSe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Ss(r,wN)},{tagName:"stop",offset:"60%","stop-color":Ss(r,dSe)},{tagName:"stop",offset:"85%","stop-color":Ss(r,n3)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Ss(r,dSe)},{tagName:"stop",offset:"60%","stop-color":Ss(r,wN)},{tagName:"stop",offset:"85%","stop-color":Ss(r,i3)}]}]});l(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d};var WN=OL;var Cwo=y(C(),1);var J1t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Zy=15,HL=105;function hSe(e,t){return e-t}function cee(e,t){let n=Yo(t,e,hSe);return n<0?~n:n}function j1t(e,t){if(Math.abs(e)<=Zy)return e/Zy;let n=Zy,i=HL,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function q1t(e,t,n){if(n.clockStep===Ro.SYSTEM_CLOCK)return Zy;if(Math.abs(e)<=1)return e*Zy;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=Zy,r=HL,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Om(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Om.defaultDateFormatter,this._timeFormatter=Om.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Ee.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Om.defaultTicks),this.timeLabel=void 0,Ee.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,Ee.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,Ee.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===Ro.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Ee.defineProperty(this,"shuttleRingAngle",{get:function(){return q1t(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,HL),-HL);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===HL){c.multiplier=s>0?a[a.length-1]:a[0];return}let d=j1t(s,a);if(t.snapToTicks)d=a[cee(d,a)];else if(d!==0){let u=Math.abs(d);if(u>100){let h=u.toFixed(0).length-2,p=Math.pow(10,h);d=Math.round(d/p)*p|0}else u>Zy?d=Math.round(d):u>1?d=+d.toFixed(1):u>0&&(d=+d.toFixed(2))}c.multiplier=d}}),this._canAnimate=void 0,Ee.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===ls.UNBOUNDED)return!0;let c=s.multiplier,d=s.currentTime,u=s.startTime,h=!1;if(a===ls.LOOP_STOP)h=j.greaterThan(d,u)||d.equals(u)&&c>0;else{let p=s.stopTime;h=j.greaterThan(d,u)&&j.lessThan(d,p)||d.equals(u)&&c>0||d.equals(p)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Ee.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===ls.UNBOUNDED)return!0;let c=s.systemTime;return j.greaterThanOrEquals(c,s.startTime)&&j.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,Ee.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Xn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new Vy(n,{toggled:Ee.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Xn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new Vy(i,{toggled:Ee.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Xn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new Vy(o,{toggled:Ee.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==Ro.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Xn(function(){t._clockViewModel.clockStep=Ro.SYSTEM_CLOCK},Ee.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new Vy(r,{toggled:Ee.computed(function(){return e.clockStep===Ro.SYSTEM_CLOCK}),tooltip:Ee.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Xn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,d=cee(c,a)-1;d>=0&&(s.multiplier=a[d])}),this._faster=Xn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,d=cee(c,a)+1;d<a.length&&(s.multiplier=a[d])})}Om.defaultDateFormatter=function(e,t){let n=j.toGregorianDate(e);return`${J1t[n.month-1]} ${n.day} ${n.year}`};Om.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Om.defaultTimeFormatter=function(e,t){let n=j.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Om.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Om.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(hSe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);ci(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Om.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Om._maxShuttleRingAngle=HL;Om._realtimeShuttleRingAngle=Zy;var FN=Om;var wwo=y(C(),1);var Swo=y(C(),1);function fSe(e){e=e??Y.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??Y.EMPTY_ARRAY,i=e.terrainProviderViewModels??Y.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Ee.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Ee.getObservable(this,"imageryProviderViewModels"),r=Ee.pureComputed(function(){let h=o(),p={},g;for(g=0;g<h.length;g++){let x=h[g],I=x.category;l(p[I])?p[I].push(x):p[I]=[x]}let f=Object.keys(p),b=[];for(g=0;g<f.length;g++){let x=f[g];b.push({name:x,providers:p[x]})}return b});this._imageryProviders=r;let s=Ee.getObservable(this,"terrainProviderViewModels"),a=Ee.pureComputed(function(){let h=s(),p={},g;for(g=0;g<h.length;g++){let x=h[g],I=x.category;l(p[I])?p[I].push(x):p[I]=[x]}let f=Object.keys(p),b=[];for(g=0;g<f.length;g++){let x=f[g];b.push({name:x,providers:p[x]})}return b});this._terrainProviders=a,this.buttonTooltip=void 0,Ee.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,p=this.selectedTerrain,g=l(h)?h.name:void 0,f=l(p)?p.name:void 0;return l(g)&&l(f)?`${g} +${f}`:l(g)?g:f}),this.buttonImageUrl=void 0,Ee.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=Ee.observable();this._currentImageryLayers=[],Ee.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let p,g=this._currentImageryLayers,f=g.length,b=this._globe.imageryLayers,x=!1;for(p=0;p<f;p++){let I=b.length;for(let _=0;_<I;_++){let E=b.get(_);if(E===g[p]){b.remove(E),x=!0;break}}}if(l(h)){let I=h.creationCommand();if(Array.isArray(I)){let _=I.length;for(this._currentImageryLayers=[],p=_-1;p>=0;p--){let E=is.fromProviderAsync(I[p]);b.add(E,0),this._currentImageryLayers.push(E)}}else{this._currentImageryLayers=[];let _=is.fromProviderAsync(I);if(_.name=h.name,x)b.add(_,0);else{let E=b.get(0);l(E)&&b.remove(E),b.add(_,0)}this._currentImageryLayers.push(_)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let d=Ee.observable();Ee.defineProperty(this,"selectedTerrain",{get:function(){return d()},set:function(h){if(d()===h){this.dropDownVisible=!1;return}let p;if(l(h)&&(p=h.creationCommand()),l(p)&&!l(p.then))this._globe.depthTestAgainstTerrain=!(p instanceof Tp),this._globe.terrainProvider=p;else if(l(p)){let g=!1,f=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,f()}),x=new EN(p).readyEvent.addEventListener(I=>{g||(this._globe.depthTestAgainstTerrain=!(I instanceof Tp),this._globe.terrainProvider=I,x())})}d(h),this.dropDownVisible=!1}});let u=this;this._toggleDropDown=Xn(function(){u.dropDownVisible=!u.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(fSe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var PN=fSe;function r3(e,t){e=Dn(e);let n=new PN(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let d=document.createElement("div");d.className="cesium-baseLayerPicker-categoryTitle",d.setAttribute("data-bind","text: name"),c.appendChild(d);let u=document.createElement("div");u.className="cesium-baseLayerPicker-choices",u.setAttribute("data-bind","foreach: providers"),c.appendChild(u);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),u.appendChild(h);let p=document.createElement("img");p.className="cesium-baseLayerPicker-itemIcon",p.setAttribute("data-bind","attr: { src: iconUrl }"),p.setAttribute("draggable","false"),h.appendChild(p);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let f=document.createElement("div");f.className="cesium-baseLayerPicker-sectionTitle",f.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),f.innerHTML="Terrain",r.appendChild(f);let b=document.createElement("div");b.className="cesium-baseLayerPicker-section",b.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(b);let x=document.createElement("div");x.className="cesium-baseLayerPicker-category",b.appendChild(x);let I=document.createElement("div");I.className="cesium-baseLayerPicker-categoryTitle",I.setAttribute("data-bind","text: name"),x.appendChild(I);let _=document.createElement("div");_.className="cesium-baseLayerPicker-choices",_.setAttribute("data-bind","foreach: providers"),x.appendChild(_);let E=document.createElement("div");E.className="cesium-baseLayerPicker-item",E.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),_.appendChild(E);let S=document.createElement("img");S.className="cesium-baseLayerPicker-itemIcon",S.setAttribute("data-bind","attr: { src: iconUrl }"),S.setAttribute("draggable","false"),E.appendChild(S);let R=document.createElement("div");R.className="cesium-baseLayerPicker-itemLabel",R.setAttribute("data-bind","text: name"),E.appendChild(R),Ee.applyBindings(n,i),Ee.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(G){i.contains(G.target)||r.contains(G.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(r3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});r3.prototype.isDestroyed=function(){return!1};r3.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._element),Ee.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),me(this)};var MN=r3;var vwo=y(C(),1);function pSe(e){let t=e.creationFunction;l(t.canExecute)||(t=Xn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",Ee.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(pSe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Ls=pSe;var Uwo=y(C(),1);function $1t(){let e=[],t=devicePixelRatio>=2;return e.push(new Ls({name:"Bing Maps Aerial",iconUrl:hn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.AERIAL})}})),e.push(new Ls({name:"Bing Maps Aerial with Labels",iconUrl:hn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.AERIAL_WITH_LABELS})}})),e.push(new Ls({name:"Bing Maps Roads",iconUrl:hn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.ROAD})}})),e.push(new Ls({name:"ArcGIS World Imagery",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Ls({name:"ArcGIS World Hillshade",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Ls({name:"Esri World Ocean",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.OCEANS,{enablePickFeatures:!1})}})),e.push(new Ls({name:"Open\xADStreet\xADMap",iconUrl:hn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new sb({url:"https://tile.openstreetmap.org/"})}})),e.push(new Ls({name:"Stadia x Stamen Watercolor",iconUrl:hn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia x Stamen Toner",iconUrl:hn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia Alidade Smooth",iconUrl:hn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia Alidade Smooth Dark",iconUrl:hn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Sentinel-2",iconUrl:hn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3954)}})),e.push(new Ls({name:"Blue Marble",iconUrl:hn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3845)}})),e.push(new Ls({name:"Earth at night",iconUrl:hn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3812)}})),e.push(new Ls({name:"Natural Earth\xA0II",iconUrl:hn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return u0.fromUrl(hn("Assets/Textures/NaturalEarthII"))}})),e}var vN=$1t;var Hwo=y(C(),1);function eRt(){let e=[];return e.push(new Ls({name:"WGS84 Ellipsoid",iconUrl:hn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new Tp({ellipsoid:ie.WGS84})}})),e.push(new Ls({name:"Cesium World Terrain",iconUrl:hn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return h_({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var NN=eRt;var rXo=y(C(),1);var qwo=y(C(),1);function tRt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof Ps&&(e.tileset=n.primitive),e.pickActive=!1}}function gSe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof Ps&&(e.tileset=i.primitive)},Zn.MOUSE_MOVE):(e._eventHandler.removeInputAction(Zn.MOUSE_MOVE),e.picking=e.picking)}var nRt={maximumFractionDigits:3};function DN(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,nRt):Math.round(t).toLocaleString()}function QN(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[zo.PICK]:e._statisticsPerPass[zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${DN(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${DN(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${DN(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function bSe(){let e=Mi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${DN(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${DN(e.texturesByteLength)}</li> + </ul> + `}var iRt=[{text:"Highlight",value:ed.HIGHLIGHT},{text:"Replace",value:ed.REPLACE},{text:"Mix",value:ed.MIX}],ASe=new U(1,1,0,.4),oRt=new U,s3=new U;function ec(e,t){let n=this,i=e.canvas;this._eventHandler=new Su(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new kg({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Ee.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Ee.observable({}),this.properties=[],Ee.defineProperty(this,"properties",function(){let v=[],O=n._properties();for(let H in O)O.hasOwnProperty(H)&&v.push(H);return v});let o=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(v){o(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=v)}}),this.dynamicScreenSpaceError=!1;let r=Ee.observable();Ee.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(v){r(v),l(n._tileset)&&(n._tileset.colorBlendMode=v,n._scene.requestRender())}}),this.colorBlendMode=ed.HIGHLIGHT;let s=Ee.observable(),a=Ee.observable();Ee.defineProperty(this,"picking",{get:function(){return a()},set:function(v){a(v),v?n._eventHandler.setInputAction(function(O){let H=e.pick(O.endPosition);if(H instanceof ma?(n.feature=H,n.tile=H.content.tile):l(H)&&l(H.content)?(n.feature=void 0,n.tile=H.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(H)&&l(H.content)){let ee;e.pickPositionSupported&&(ee=e.pickPosition(O.endPosition),l(ee)&&(n._tileset.debugPickPosition=ee)),n._tileset.debugPickedTile=H.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},Zn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(Zn.MOUSE_MOVE))}}),this.picking=!0;let c=Ee.observable();Ee.defineProperty(this,"colorize",{get:function(){return c()},set:function(v){c(v),l(n._tileset)&&(n._tileset.debugColorizeTiles=v,n._scene.requestRender())}}),this.colorize=!1;let d=Ee.observable();Ee.defineProperty(this,"wireframe",{get:function(){return d()},set:function(v){d(v),l(n._tileset)&&(n._tileset.debugWireframe=v,n._scene.requestRender())}}),this.wireframe=!1;let u=Ee.observable();Ee.defineProperty(this,"showBoundingVolumes",{get:function(){return u()},set:function(v){u(v),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=v,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Ee.observable();Ee.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(v){h(v),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=v,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let p=Ee.observable();Ee.defineProperty(this,"showRequestVolumes",{get:function(){return p()},set:function(v){p(v),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=v,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=Ee.observable();Ee.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(v){g(v),l(n._tileset)&&(n._tileset.debugFreezeFrame=v,n._scene.debugShowFrustumPlanes=v,n._scene.requestRender())}}),this.freezeFrame=!1,Ee.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(v){s(v),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=v,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let f=Ee.observable();Ee.defineProperty(this,"showGeometricError",{get:function(){return f()},set:function(v){f(v),l(n._tileset)&&(n._tileset.debugShowGeometricError=v,n._scene.requestRender())}}),this.showGeometricError=!1;let b=Ee.observable();Ee.defineProperty(this,"showRenderingStatistics",{get:function(){return b()},set:function(v){b(v),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=v,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let x=Ee.observable();Ee.defineProperty(this,"showMemoryUsage",{get:function(){return x()},set:function(v){x(v),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=v,n._scene.requestRender())}}),this.showMemoryUsage=!1;let I=Ee.observable();Ee.defineProperty(this,"showUrl",{get:function(){return I()},set:function(v){I(v),l(n._tileset)&&(n._tileset.debugShowUrl=v,n._scene.requestRender())}}),this.showUrl=!1;let _=Ee.observable();Ee.defineProperty(this,"maximumScreenSpaceError",{get:function(){return _()},set:function(v){v=Number(v),isNaN(v)||(_(v),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=v))}}),this.maximumScreenSpaceError=16;let E=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return E()},set:function(v){v=Number(v),isNaN(v)||(E(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=v))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Ee.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(E(),1/6)},set:function(v){let O=Math.pow(v,6);E(O),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=O)}});let S=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return S()},set:function(v){v=Number(v),isNaN(v)||(S(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=v))}}),this.dynamicScreenSpaceErrorFactor=24;let R=tRt(this),G=Ee.observable();Ee.defineProperty(this,"pickActive",{get:function(){return G()},set:function(v){G(v),v?n._eventHandler.setInputAction(R,Zn.LEFT_CLICK):n._eventHandler.removeInputAction(Zn.LEFT_CLICK)}});let B=Ee.observable();Ee.defineProperty(this,"pointCloudShading",{get:function(){return B()},set:function(v){B(v),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=v)}}),this.pointCloudShading=!1;let w=Ee.observable();Ee.defineProperty(this,"geometricErrorScale",{get:function(){return w()},set:function(v){v=Number(v),isNaN(v)||(w(v),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=v))}}),this.geometricErrorScale=1;let F=Ee.observable();Ee.defineProperty(this,"maximumAttenuation",{get:function(){return F()},set:function(v){v=Number(v),isNaN(v)||(F(v),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=v===0?void 0:v))}}),this.maximumAttenuation=0;let P=Ee.observable();Ee.defineProperty(this,"baseResolution",{get:function(){return P()},set:function(v){v=Number(v),isNaN(v)||(P(v),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=v===0?void 0:v))}}),this.baseResolution=0;let A=Ee.observable();Ee.defineProperty(this,"eyeDomeLighting",{get:function(){return A()},set:function(v){A(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=v)}}),this.eyeDomeLighting=!1;let T=Ee.observable();Ee.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return T()},set:function(v){v=Number(v),isNaN(v)||(T(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=v))}}),this.eyeDomeLightingStrength=1;let L=Ee.observable();Ee.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return L()},set:function(v){v=Number(v),isNaN(v)||(L(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=v))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let V=Ee.observable();Ee.defineProperty(this,"skipLevelOfDetail",{get:function(){return V()},set:function(v){V(v),l(n._tileset)&&(n._tileset.skipLevelOfDetail=v)}}),this.skipLevelOfDetail=!0;let W=Ee.observable();Ee.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return W()},set:function(v){v=Number(v),isNaN(v)||(W(v),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=v))}}),this.skipScreenSpaceErrorFactor=16;let M=Ee.observable();Ee.defineProperty(this,"baseScreenSpaceError",{get:function(){return M()},set:function(v){v=Number(v),isNaN(v)||(M(v),l(n._tileset)&&(n._tileset.baseScreenSpaceError=v))}}),this.baseScreenSpaceError=1024;let Q=Ee.observable();Ee.defineProperty(this,"skipLevels",{get:function(){return Q()},set:function(v){v=Number(v),isNaN(v)||(Q(v),l(n._tileset)&&(n._tileset.skipLevels=v))}}),this.skipLevels=1;let N=Ee.observable();Ee.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return N()},set:function(v){N(v),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=v)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let k=Ee.observable();Ee.defineProperty(this,"loadSiblings",{get:function(){return k()},set:function(v){k(v),l(n._tileset)&&(n._tileset.loadSiblings=v)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||gSe(this,!0)}Object.defineProperties(ec.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return iRt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=QN(e,!1),this._pickStatisticsText=QN(e,!0),this._resourceCacheStatisticsText=bSe(),gSe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,oRt):U.WHITE:t.color=s3,this._scene.requestRender()),l(e)&&(U.clone(e.color,s3),e.color=ASe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!lee(t.content)&&(t.color=s3,this._scene.requestRender()),l(e)&&!lee(e.content)&&(U.clone(e.color,s3),e.color=ASe,this._scene.requestRender()),this._tile=e}}});function lee(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!lee(t[i]))return!1;return!0}return!1}ec.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};ec.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};ec.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};ec.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};ec.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};ec.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};ec.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};ec.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};ec.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};ec.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};ec.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new p_(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};ec.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,d;if(t.shiftKey)for(d=0;d<c;++d)a[d][0]===" "&&(a[d][1]===" "?(a[d]=a[d].substr(2),r-=2):(a[d]=a[d].substr(1),r-=1));else for(d=0;d<c;++d)a[d]=` ${a[d]}`,r+=2;let u=a.join(` +`);n.value=n.value.slice(0,i)+u+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};ec.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=QN(e,!1),this._pickStatisticsText=QN(e,!0),this._resourceCacheStatisticsText=bSe())};ec.prototype.isDestroyed=function(){return!1};ec.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){Ee.getObservable(e,t).dispose()}),me(this)};ec.getStatistics=QN;var UN=ec;function a3(e,t){e=Dn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new UN(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=Vd.createSection,c=Vd.createCheckbox,d=Vd.createRangeInput,u=Vd.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),p=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),f=a(s,"Logging","loggingVisible","toggleLogging"),b=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),x=a(s,"Style","styleVisible","toggleStyle"),I=a(s,"Optimization","optimizationVisible","toggleOptimization"),_=document.createElement("div");_.className="field-group";let E=document.createElement("label");E.className="field-label",E.appendChild(document.createTextNode("Properties: "));let S=document.createElement("div");S.setAttribute("data-bind","text: properties"),_.appendChild(E),_.appendChild(S),h.appendChild(_),h.appendChild(u("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(u("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),p.appendChild(c("Colorize","colorize"));let R=p.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),G=document.createElement("p");G.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),G.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),G.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",R.appendChild(G),p.appendChild(c("Bounding Volumes","showBoundingVolumes")),p.appendChild(c("Content Volumes","showContentBoundingVolumes")),p.appendChild(c("Request Volumes","showRequestVolumes")),p.appendChild(c("Point Cloud Shading","pointCloudShading"));let B=document.createElement("div");B.setAttribute("data-bind","visible: pointCloudShading"),B.appendChild(d("Geometric Error Scale","geometricErrorScale",0,2,.01)),B.appendChild(d("Maximum Attenuation","maximumAttenuation",0,32,1)),B.appendChild(d("Base Resolution","baseResolution",0,1,.01)),B.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),p.appendChild(B);let w=document.createElement("div");w.setAttribute("data-bind","visible: eyeDomeLighting"),w.appendChild(d("EDL Strength","eyeDomeLightingStrength",0,2,.1)),w.appendChild(d("EDL Radius","eyeDomeLightingRadius",0,4,.1)),B.appendChild(w),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let F=document.createElement("div");F.appendChild(d("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(F);let P=document.createElement("div");P.setAttribute("data-bind","visible: dynamicScreenSpaceError"),P.appendChild(d("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),P.appendChild(d("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(P),f.appendChild(c("Performance","performance")),f.appendChild(i),f.appendChild(c("Statistics","showStatistics"));let A=document.createElement("div");A.className="cesium-3dTilesInspector-statistics",A.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),f.appendChild(A),f.appendChild(c("Pick Statistics","showPickStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),f.appendChild(T),f.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let L=document.createElement("div");L.className="cesium-3dTilesInspector-statistics",L.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),f.appendChild(L);let V=document.createElement("div");x.appendChild(V),V.appendChild(document.createTextNode("Color Blend Mode: "));let W=document.createElement("select");W.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),V.appendChild(W);let M=document.createElement("textarea");M.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),V.className="cesium-cesiumInspector-styleEditor",V.appendChild(M);let Q=u("Compile (Ctrl+Enter)","compileStyle");V.appendChild(Q);let N=document.createElement("div");N.className="cesium-cesiumInspector-error",N.setAttribute("data-bind","text: editorError"),V.appendChild(N),b.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),b.appendChild(c("Geometric Error","showGeometricError")),b.appendChild(c("Rendering Statistics","showRenderingStatistics")),b.appendChild(c("Memory Usage (MB)","showMemoryUsage")),b.appendChild(c("Url","showUrl")),I.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let k=document.createElement("div");k.appendChild(d("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),I.appendChild(k);let v=document.createElement("div");v.appendChild(d("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),I.appendChild(v);let O=document.createElement("div");O.appendChild(d("Min. levels to skip","skipLevels",0,10,1)),I.appendChild(O),I.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),I.appendChild(c("Load siblings of visible tiles","loadSiblings")),Ee.applyBindings(o,n)}Object.defineProperties(a3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});a3.prototype.isDestroyed=function(){return!1};a3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};var kN=a3;var yXo=y(C(),1);var uXo=y(C(),1);function rRt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function dee(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var sRt=new En,aRt=new m;function YN(e,t){let n=this,i=e.canvas,o=new Su(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Ee.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Xn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Xn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Xn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Xn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Ee.getObservable(this,"frustums").subscribe(function(d){n._scene.debugShowFrustums=d,n._scene.requestRender()}),this._frustumPlanesSubscription=Ee.getObservable(this,"frustumPlanes").subscribe(function(d){n._scene.debugShowFrustumPlanes=d,n._scene.requestRender()}),this._performanceSubscription=Ee.getObservable(this,"performance").subscribe(function(d){d?n._performanceDisplay=new kg({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Xn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Ee.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Xn(function(){if(n.primitiveReferenceFrame){let d=n._primitive.modelMatrix;n._modelMatrixPrimitive=new lN({modelMatrix:d}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Ee.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Xn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(d){return l(n._modelMatrixPrimitive)&&d.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?d.owner===n._primitive||d.owner===n._primitive._billboardCollection||d.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Ee.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Ee.getObservable(this,"wireframe").subscribe(function(d){r._surface.tileProvider._debug.wireframe=d,n._scene.requestRender()}),this._depthFrustumSubscription=Ee.getObservable(this,"depthFrustum").subscribe(function(d){n._scene.debugShowDepthFrustum=d,n._scene.requestRender()}),this._incrementDepthFrustum=Xn(function(){let d=n.depthFrustum+1;return n.depthFrustum=dee(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Xn(function(){let d=n.depthFrustum-1;return n.depthFrustum=dee(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Ee.getObservable(this,"suspendUpdates").subscribe(function(d){r._surface._debug.suspendLodUpdate=d,d||(n.filterTile=!1)});let s;this._showTileCoordinates=Xn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new SN({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Ee.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Ee.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Xn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Xn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Ee.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(d){let u=n._scene.pick({x:d.position.x,y:d.position.y});l(u)&&(n.primitive=l(u.collection)?u.collection:u.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Xn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Ee.getObservable(this,"pickPrimitiveActive").subscribe(function(d){d?o.setInputAction(a,Zn.LEFT_CLICK):o.removeInputAction(Zn.LEFT_CLICK)});function c(d){let u,h=r.ellipsoid,p=n._scene.camera.getPickRay(d.position,sRt),g=r.pick(p,n._scene,aRt);if(l(g)){let f=h.cartesianToCartographic(g),b=r._surface.tileProvider._tilesToRenderByTextureCount;for(let x=0;!u&&x<b.length;++x){let I=b[x];if(l(I))for(let _=0;!u&&_<I.length;++_){let E=I[_];le.contains(E.rectangle,f)&&(u=E)}}}n.tile=u,n.pickTileActive=!1}this._pickTile=Xn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Ee.getObservable(this,"pickTileActive").subscribe(function(d){d?o.setInputAction(c,Zn.LEFT_CLICK):o.removeInputAction(Zn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(YN.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});YN.prototype._update=function(){this.frustums&&(this.frustumStatisticText=rRt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=dee(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};YN.prototype.isDestroyed=function(){return!1};YN.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),me(this)};var ON=YN;function c3(e,t){e=Dn(e);let n=document.createElement("div"),i=new ON(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=Vd.createSection,c=Vd.createCheckbox,d=a(s,"General","generalVisible","toggleGeneral"),u=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),u.appendChild(h),d.appendChild(u),d.appendChild(c("Show Frustum Planes","frustumPlanes")),d.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",d.appendChild(n);let p=document.createElement("div");p.className="cesium-cesiumInspector-shaderCache",p.setAttribute("data-bind","html: shaderCacheText"),d.appendChild(p);let g=document.createElement("div");d.appendChild(g);let f=document.createElement("span");f.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(f);let b=document.createElement("span");b.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(b);let x=document.createElement("input");x.type="button",x.value="-",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(x);let I=document.createElement("input");I.type="button",I.value="+",I.className="cesium-cesiumInspector-pickButton",I.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(I);let _=a(s,"Primitives","primitivesVisible","togglePrimitives"),E=document.createElement("div");E.className="cesium-cesiumInspector-pickSection",_.appendChild(E);let S=document.createElement("input");S.type="button",S.value="Pick a primitive",S.className="cesium-cesiumInspector-pickButton",S.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let R=document.createElement("div");R.className="cesium-cesiumInspector-center",R.appendChild(S),E.appendChild(R),E.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),E.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),E.appendChild(this._primitiveOnly);let G=a(s,"Terrain","terrainVisible","toggleTerrain"),B=document.createElement("div");B.className="cesium-cesiumInspector-pickSection",G.appendChild(B);let w=document.createElement("input");w.type="button",w.value="Pick a tile",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),R=document.createElement("div"),R.appendChild(w),R.className="cesium-cesiumInspector-center",B.appendChild(R);let F=document.createElement("div");B.appendChild(F);let P=document.createElement("input");P.type="button",P.value="Parent",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind","click: selectParent");let A=document.createElement("input");A.type="button",A.value="NW",A.className="cesium-cesiumInspector-pickButton",A.setAttribute("data-bind","click: selectNW");let T=document.createElement("input");T.type="button",T.value="NE",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectNE");let L=document.createElement("input");L.type="button",L.value="SW",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectSW");let V=document.createElement("input");V.type="button",V.value="SE",V.className="cesium-cesiumInspector-pickButton",V.setAttribute("data-bind","click: selectSE");let W=document.createElement("div");W.className="cesium-cesiumInspector-tileText",F.className="cesium-cesiumInspector-frustumStatistics",F.appendChild(W),F.setAttribute("data-bind","visible: hasPickedTile"),W.setAttribute("data-bind","html: tileText");let M=document.createElement("div");M.className="cesium-cesiumInspector-relativeText",M.textContent="Select relative:",F.appendChild(M);let Q=document.createElement("table"),N=document.createElement("tr"),k=document.createElement("tr"),v=document.createElement("td");v.appendChild(P);let O=document.createElement("td");O.appendChild(A);let H=document.createElement("td");H.appendChild(T),N.appendChild(v),N.appendChild(O),N.appendChild(H);let ee=document.createElement("td"),K=document.createElement("td");K.appendChild(L);let te=document.createElement("td");te.appendChild(V),k.appendChild(ee),k.appendChild(K),k.appendChild(te),Q.appendChild(N),Q.appendChild(k),F.appendChild(Q),B.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),B.appendChild(c("Show only selected","filterTile","hasPickedTile")),G.appendChild(c("Wireframe","wireframe")),G.appendChild(c("Suspend LOD update","suspendUpdates")),G.appendChild(c("Show tile coordinates","tileCoordinates")),Ee.applyBindings(i,this._element)}Object.defineProperties(c3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});c3.prototype.isDestroyed=function(){return!1};c3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};var HN=c3;var BXo=y(C(),1);var TXo=y(C(),1);function l3(e,t){l(t)||(t=document.body),t=Dn(t);let n=this,i=Ee.observable(Wr.fullscreen),o=Ee.observable(Wr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,Ee.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Ee.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Wr.enabled)}}),this.tooltip=void 0,Ee.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Xn(function(){Wr.fullscreen?Wr.exitFullscreen():Wr.requestFullscreen(n._fullscreenElement)},Ee.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=Dn(e)??r.body,this._callback=function(){i(Wr.fullscreen)},r.addEventListener(Wr.changeEventName,this._callback)}Object.defineProperties(l3.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});l3.prototype.isDestroyed=function(){return!1};l3.prototype.destroy=function(){document.removeEventListener(Wr.changeEventName,this._callback),me(this)};var zN=l3;var cRt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",lRt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function d3(e,t){e=Dn(e);let n=new zN(t,e);n._exitFullScreenPath=lRt,n._enterFullScreenPath=cRt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),Ee.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(d3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});d3.prototype.isDestroyed=function(){return!1};d3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var KN=d3;var YXo=y(C(),1);var MXo=y(C(),1);var ySe=1e3;function Hm(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new u_({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new Ce,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=xSe,this._handleArrowUp=CSe;let t=this;this._suggestionsVisible=Ee.pureComputed(function(){let o=Ee.getObservable(t,"_suggestions")().length>0,r=Ee.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Xn(function(i){if(i=i??_y.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)pRt(t);else return hRt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?CSe(t):r?xSe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;ESe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??Hm.flyToDestination,this._focusTextbox=!1,Ee.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Ee.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){Hm._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,Ee.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Ee.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Ee.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(Hm.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});Hm.prototype.destroy=function(){this._suggestionSubscription.dispose()};function CSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],Hm._adjustSuggestionsScroll(e,n)}function xSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],Hm._adjustSuggestionsScroll(e,i)}function dRt(e,t){let n=l(t)?t.availability:void 0;return l(n)?_I(t,[e]).then(function(i){return e=i[0],e.height+=ySe,e}):(e.height+=ySe,Promise.resolve(e))}function uRt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof le?Z.equalsEpsilon(t.south,t.north,Z.EPSILON7)&&Z.equalsEpsilon(t.east,t.west,Z.EPSILON7)?t=le.center(t):a=EI(t,n):t=i.cartesianToCartographic(t),l(a)||(a=dRt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:X.IDENTITY})})}async function mRt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function hRt(e,t,n){let i=e._searchText;if(_Se(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await mRt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,mee(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=ISe(e,BL.getCreditsFromResult(s[0]));l(a)||uee(e,t[o].credit);return}e._searchText=`${i} (not found)`}function uee(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function ISe(e,t){return l(t)&&t.forEach(n=>uee(e,n)),t}function mee(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function fRt(e,t){let n=Dn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function pRt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function _Se(e){return/^\s*$/.test(e)}function ESe(e){Ee.getObservable(e,"_suggestions").removeAll()}async function ARt(e){if(!e.autoComplete)return;let t=e._searchText;if(ESe(e),mee(e),!_Se(t))for(let n of e._geocoderServices){let i=await n.geocode(t,_y.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=BL.getCreditsFromResult(r);o=o&&!l(s),ISe(e,s)}),o&&uee(e,n.credit)}if(e._suggestions.length>=5)return}}Hm.flyToDestination=uRt;Hm._updateSearchSuggestions=ARt;Hm._adjustSuggestionsScroll=fRt;Hm.prototype.isDestroyed=function(){return!1};Hm.prototype.destroy=function(){return mee(this),me(this)};var JN=Hm;var gRt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",bRt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function u3(e){let t=Dn(e.container),n=new JN(e);n._startSearchPath=gRt,n._stopSearchPath=bRt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),Ee.applyBindings(n,i),Ee.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(d){let u=d.target;typeof d.composedPath=="function"&&(u=d.composedPath()[0]),t.contains(u)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(d){n._focusTextbox=!0,n.showSuggestions()},Ht.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(u3.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});u3.prototype.isDestroyed=function(){return!1};u3.prototype.destroy=function(){let e=this._container;return Ht.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Ee.cleanNode(this._form),Ee.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),me(this)};var jN=u3;var n2o=y(C(),1);var KXo=y(C(),1);function TSe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Xn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Ee.track(this,["tooltip"])}Object.defineProperties(TSe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var qN=TSe;function m3(e,t,n){e=Dn(e);let i=new qN(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),Ee.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(m3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});m3.prototype.isDestroyed=function(){return!1};m3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var $N=m3;var m2o=y(C(),1);var s2o=y(C(),1);function yRt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function LSe(e,t){Ee.track(e);for(let n=0;n<e.sublayers.length;n++)LSe(e.sublayers[n],t)}function h3(e){return e.modelName==="FullModel"}function RSe(e){return e.modelName==="Overview"}function VSe(e){return RSe(e)||h3(e)}function SSe(e,t){if(VSe(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:Ee.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function CRt(e,t){if(VSe(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");h3(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function xRt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function IRt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Ee.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Ee.observable(!0),index:-1}],currentLayer:Ee.observable(),expandClickHandler:yRt,setOptionDisable:function(i,o){Ee.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){CRt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){LSe(n[i],this.viewModel);let o=SSe(n[i],this.viewModel);l(o)&&(RSe(o)||!l(this.viewModel.defaultLayer)&&h3(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=SSe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=h3(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return xRt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var e9=IRt;function _Rt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new e9(t);Ee.track(o),Ee.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var hee=_Rt;var _2o=y(C(),1);var A2o=y(C(),1);var ERt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",TRt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function fee(){this._cameraClicked=new Ce,this._closeClicked=new Ce,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Ee.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Ee.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?TRt:ERt}}),Ee.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}fee.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(fee.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var t9=fee;function f3(e){e=Dn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new t9;Ee.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,d=c.createElement("link");d.href=hn("Widgets/InfoBox/InfoBoxDescription.css"),d.rel="stylesheet",d.type="text/css";let u=c.createElement("div");u.className="cesium-infoBox-description",c.head.appendChild(d),c.body.appendChild(u),a._descriptionSubscription=$a(s,"description",function(h){r.style.height="5px",u.innerHTML=h;let p=null,g=u.firstElementChild;if(g!==null&&u.childNodes.length===1){let b=window.getComputedStyle(g);if(b!==null){let x=b["background-color"],I=U.fromCssColorString(x);l(I)&&I.alpha!==0&&(p=b["background-color"])}}t.style["background-color"]=p;let f=u.getBoundingClientRect().height;r.style.height=`${f}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(f3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});f3.prototype.isDestroyed=function(){return!1};f3.prototype.destroy=function(){let e=this._container;return Ee.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),me(this)};var n9=f3;var X2o=y(C(),1);var L2o=y(C(),1);function GSe(){this.showInstructions=!1;let e=this;this._command=Xn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Xn(function(){e._touch=!1}),this._showTouch=Xn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Ee.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(GSe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var i9=GSe;function p3(e){let t=Dn(e.container),n=new i9,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=hn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let d=document.createElement("button");d.type="button",d.className="cesium-navigation-button cesium-navigation-button-right",d.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let u=document.createElement("img");u.src=hn("Widgets/Images/NavigationHelp/Touch.svg"),u.className="cesium-navigation-button-icon",u.style.width="25px",u.style.height="25px",d.appendChild(u),d.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(d);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let p=document.createElement("div");p.className="cesium-touch-navigation-help cesium-navigation-help-instructions",p.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),p.innerHTML=` <table> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(p),Ee.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(p3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});p3.prototype.isDestroyed=function(){return!1};p3.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var o9=p3;var z2o=y(C(),1);var D2o=y(C(),1);function pee(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Ee.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Xn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=mN.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(pee.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});pee.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),me(this)};var r9=pee;function A3(e){let t=Dn(e.container),n=new r9(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),Ee.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(A3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});A3.prototype.isDestroyed=function(){return!1};A3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var s9=A3;var aWo=y(C(),1);var eWo=y(C(),1);function g3(e){this._scene=e,this._orthographic=e.camera.frustum instanceof gn,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,Ee.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;Ee.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Xn(function(){t.sceneMode===re.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Lr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===re.SCENE2D||t._scene.camera.frustum instanceof gn}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Xn(function(){t.sceneMode!==re.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Xn(function(){t.sceneMode!==re.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=re}Object.defineProperties(g3.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});g3.prototype.isDestroyed=function(){return!1};g3.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var a9=g3;var SRt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",LRt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function b3(e,t){e=Dn(e);let n=new a9(t);n._perspectivePath=SRt,n._orthographicPath=LRt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Ee.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(b3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});b3.prototype.isDestroyed=function(){return!1};b3.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var c9=b3;var xWo=y(C(),1);var fWo=y(C(),1);function y3(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Lr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Ee.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Ee.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===re.SCENE2D?n.tooltip2D:o===re.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Xn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Xn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Xn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Xn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=re}Object.defineProperties(y3.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});y3.prototype.isDestroyed=function(){return!1};y3.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var l9=y3;var RRt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",VRt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",GRt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function C3(e,t,n){e=Dn(e);let i=new l9(t,n);i._globePath=RRt,i._flatMapPath=VRt,i._columbusViewPath=GRt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),Ee.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(d){o.contains(d.target)||(i.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(C3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});C3.prototype.isDestroyed=function(){return!1};C3.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var d9=C3;var wWo=y(C(),1);var SWo=y(C(),1);var ZRt=new D,x3="-1000px";function u9(e,t,n){this._scene=e,this._screenPositionX=x3,this._screenPositionY=x3,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,Ee.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Ee.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),Ee.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return to.worldToWindowCoordinates(e,i,o)}}u9.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,ZRt);if(!l(e))this._screenPositionX=x3,this._screenPositionY=x3;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};u9.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};u9.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};Object.defineProperties(u9.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var m9=u9;function I3(e,t){e=Dn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new m9(t,this._element,this._container);this._viewModel=c,Ee.applyBindings(this._viewModel,this._element)}Object.defineProperties(I3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I3.prototype.isDestroyed=function(){return!1};I3.prototype.destroy=function(){let e=this._container;return Ee.cleanNode(this._element),e.removeChild(this._element),me(this)};var h9=I3;var YWo=y(C(),1);var FWo=y(C(),1);function E_(e,t,n){this._color=e,this._height=t,this._base=n??0}E_.prototype.getHeight=function(){return this._height};E_.prototype.getBase=function(){return this._base};E_.prototype.getStartTime=function(){return this._start};E_.prototype.getStopTime=function(){return this._stop};E_.prototype.setRange=function(e,t){this._start=e,this._stop=t};E_.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=j.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=j.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var f9=E_;var vWo=y(C(),1);function ZSe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new U(.5,.5,.5,1),this.backgroundColor=i||new U(0,0,0,0)}ZSe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=j.addSeconds(t.startJulian,t.duration,new j);if(j.lessThan(n,o)&&j.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(j.lessThanOrEquals(n,r)&&j.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let d=j.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new j);!l(a)&&j.greaterThanOrEquals(d,n)?a=s:!l(c)&&j.greaterThanOrEquals(d,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var p9=ZSe;var Aee=1e12,zm={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},Ql={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},By=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],BRt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ul(e,t){e=Dn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=zm.none,this._touchMode=Ql.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=wRt(this),this._onMouseUp=XRt(this),this._onMouseMove=WRt(this),this._onMouseWheel=FRt(this),this._onTouchStart=PRt(this),this._onTouchMove=vRt(this),this._onTouchEnd=MRt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}Ul.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};Ul.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};Ul.prototype.isDestroyed=function(){return!1};Ul.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),me(this)};Ul.prototype.addHighlightRange=function(e,t,n){let i=new f9(e,t,n);return this._highlightRanges.push(i),this.resize(),i};Ul.prototype.addTrack=function(e,t,n,i){let o=new p9(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};Ul.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=j.secondsDifference(t,e),this._clock&&this._clock.clockRange!==ls.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=j.secondsDifference(o,i),s=j.secondsDifference(i,this._startJulian),a=j.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=j.addSeconds(this._endJulian,s,new j),this._startJulian=i,this._timeBarSecondsSpan=j.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=j.addSeconds(this._startJulian,a,new j),this._endJulian=o,this._timeBarSecondsSpan=j.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};Ul.prototype.zoomFrom=function(e){let t=j.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(j.addSeconds(this._startJulian,t-t*e,new j),j.addSeconds(this._endJulian,n*e-n,new j))};function gee(e){return e<10?`0${e.toString()}`:e.toString()}Ul.prototype.makeLabel=function(e){let t=j.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${BRt[t.month-1]} ${t.day} ${t.year} ${gee(t.hour)}:${gee(t.minute)}:${gee(t.second)}${i}`};Ul.prototype.smallestTicInPixels=7;Ul.prototype._makeTics=function(){let e=this._timeBarEle,t=j.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,d=1e-10,u=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=j.addSeconds(this._startJulian,a,new j)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=j.addSeconds(this._startJulian,c,new j));let p=this._timeBarEle.clientWidth;p<10&&(p=10);let g=this._startJulian,f=Math.min(h/p*1e-5,.4),b,x=j.toGregorianDate(g);h>31536e4?b=j.fromDate(new Date(Date.UTC(Math.floor(x.year/100)*100,0))):h>31536e3?b=j.fromDate(new Date(Date.UTC(Math.floor(x.year/10)*10,0))):h>86400?b=j.fromDate(new Date(Date.UTC(x.year,0))):b=j.fromDate(new Date(Date.UTC(x.year,x.month,x.day)));let I=j.secondsDifference(this._startJulian,j.addSeconds(b,f,new j)),_=I+h;this._epochJulian=b;function E(v){return Math.floor(I/v)*v}function S(v,O){return Math.ceil(v/O+.5)*O}function R(v){return(v-I)/h}function G(v,O){return v-O*Math.round(v/O)}this._rulerEle.innerHTML=this.makeLabel(j.addSeconds(this._endJulian,-a,new j));let B=this._rulerEle.offsetWidth+20;B<30&&(B=180);let w=u;u-=d;let F={startTime:I,startJulian:g,epochJulian:b,duration:h,timeBarWidth:p,getAlpha:R};this._highlightRanges.forEach(function(v){s+=v.render(F)});let P=0,A=0,T=0,L=B/p;L>1&&(L=1),L*=this._timeBarSecondsSpan;let V=-1,W=-1,M=By.length,Q;for(Q=0;Q<M;++Q){let v=By[Q];if(++V,P=v,v>L&&v>u)break;W<0&&p*(v/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(W=V)}if(V>0){for(;V>0;)if(--V,Math.abs(G(P,By[V]))<1e-5){By[V]>=u&&(A=By[V]);break}if(W>=0)for(;W<V;){if(Math.abs(G(A,By[W]))<1e-5&&By[W]>=u){T=By[W];break}++W}}u=w,u>d&&T<1e-5&&Math.abs(u-P)>d&&(T=u,u<=P+d&&(A=0));let N=-999999,k;if(p*(T/this._timeBarSecondsSpan)>=3)for(o=E(T);o<=_;o=S(o,T))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(p*R(o)).toString()}px;"></span>`;if(p*(A/this._timeBarSecondsSpan)>=3)for(o=E(A);o<=_;o=S(o,A))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(p*R(o)).toString()}px;"></span>`;if(p*(P/this._timeBarSecondsSpan)>=2){this._mainTicSpan=P,_+=P,o=E(P);let v=j.computeTaiMinusUtc(b);for(;o<=_;){let O=j.addSeconds(g,o-I,new j);if(P>2.1){let te=j.computeTaiMinusUtc(O);Math.abs(te-v)>.1&&(o+=te-v,O=j.addSeconds(g,o-I,new j))}let H=Math.round(p*R(o)),ee=this.makeLabel(O);this._rulerEle.innerHTML=ee,k=this._rulerEle.offsetWidth,k<10&&(k=B);let K=H-(k/2-1);K>N?(N=K+k+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${H.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${K.toString()}px;">${ee}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${H.toString()}px;"></span>`,o=S(o,P)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),F.y=0,this._trackList.forEach(function(v){v.render(r._context,F),F.y+=v.height})};Ul.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=j.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(j.addSeconds(this._startJulian,this._timelineDrag,new j),j.addSeconds(this._endJulian,this._timelineDrag,new j)))};Ul.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=j.addSeconds(this._startJulian,t,new j),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function wRt(e){return function(t){e._mouseMode!==zm.touchOnly&&(t.button===0?(e._mouseMode=zm.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=zm.zoom:e._mouseMode=zm.slide)),t.preventDefault()}}function XRt(e){return function(t){e._mouseMode=zm.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function WRt(e){return function(t){let n;if(e._mouseMode===zm.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===zm.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(j.addSeconds(e._startJulian,i,new j),j.addSeconds(e._endJulian,i,new j))}}else e._mouseMode===zm.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function FRt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;Aee=Math.max(Math.min(Math.abs(n),Aee),1),n/=Aee,e.zoomFrom(Math.pow(1.05,-n))}}function PRt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=zm.touchOnly,n===1?(i=j.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=Ql.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=Ql.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=Ql.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=Ql.ignore}}function MRt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===Ql.singleTap?(e._touchMode=Ql.scrub,e._onTouchMove(t)):e._touchMode===Ql.scrub&&e._onTouchMove(t),e._mouseMode=zm.touchOnly,n!==1?e._touchMode=n>0?Ql.ignore:Ql.none:e._touchMode===Ql.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function vRt(e){return function(t){let n,i,o,r,s,a,c=1,d=e._topDiv.getBoundingClientRect().left;e._touchMode===Ql.singleTap&&(e._touchMode=Ql.slideZoom),e._mouseMode=zm.touchOnly,e._touchMode===Ql.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-d,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===Ql.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-d,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-d,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=j.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new j)):(n=e._touchState.centerX-r,a=j.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new j)),e.zoomTo(a,j.addSeconds(a,e._timeBarSecondsSpan*c,new j)),e._touchState.centerX=r,e._touchState.spanX=s))}}Ul.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var A9=Ul;var cFo=y(C(),1);var tFo=y(C(),1);var FSe=y(WSe(),1);function QRt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function PSe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function URt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(PSe(),e._locked=!1),e._noSleep.disable(),Wr.exitFullscreen(),n(!1)):(Wr.fullscreen||Wr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=QRt("landscape")),t.useWebVR=!0,n(!0)))}function _3(e,t){let n=this,i=Ee.observable(Wr.enabled),o=Ee.observable(!1);this.isVRMode=void 0,Ee.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Ee.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Wr.enabled)}}),this.tooltip=void 0,Ee.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=Ee.observable(!1);this._isOrthographic=void 0,Ee.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Lr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof gn)}),this._locked=!1,this._noSleep=new FSe.default,this._command=Xn(function(){URt(n,e,o,r)},Ee.getObservable(this,"isVREnabled")),this._vrElement=Dn(t)??document.body,this._callback=function(){!Wr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(PSe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Wr.changeEventName,this._callback)}Object.defineProperties(_3.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});_3.prototype.isDestroyed=function(){return!1};_3.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Wr.changeEventName,this._callback),me(this)};var g9=_3;var kRt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",YRt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function E3(e,t,n){e=Dn(e);let i=new g9(t,n);i._exitVRPath=YRt,i._enterVRPath=kRt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),Ee.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(E3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});E3.prototype.isDestroyed=function(){return!1};E3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var b9=E3;var VFo=y(C(),1);var MSe=new ue;function DSe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function ORt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function HRt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function vSe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof ur)return i;if(n instanceof ma)return new ur({name:HRt(n),description:ORt(n),feature:n})}if(l(e.scene.globe))return JRt(e,t.position)}var zRt=new j;function xee(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;j.equals(i,o)&&(o=j.addSeconds(i,Z.EPSILON2,zRt)),e.updateFromClock(),e.zoomTo(i,o)}}}var KRt=new m;function JRt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new ur({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=NSe();return}let a=s[0],c=new ur({id:a.name,description:a.description});if(l(a.position)){let d=e.scene.ellipsoid.cartographicToCartesian(a.position,KRt);c.position=new dl(d)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=NSe())}),r}function NSe(){return new ur({id:"None",description:"No features found."})}function jRt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,d=e._fullscreenButton,u=e._infoBox,h=e._selectionIndicator,p=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=p),l(i)&&(i.container.style.visibility=p),l(o)&&(o.container.style.visibility=p),l(r)&&(r.container.style.visibility=p),l(s)&&(s.container.style.visibility=p),l(a)&&(a.container.style.visibility=p),l(c)&&(c.container.style.visibility=p),l(d)&&d.viewModel.isFullscreenEnabled&&(d.container.style.visibility=p),l(u)&&(u.container.style.visibility=p),l(h)&&(h.container.style.visibility=p),e._container){let g=t||!l(d)?0:d.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function lo(e,t){e=Dn(e),t=t??Y.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,d,u=!1;l(t.clockViewModel)?(d=t.clockViewModel,c=d.clock):(c=new Yh,d=new BN(c),u=!0);let h=new Hv(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),p=h.scene,g=new Lr;g.add(c.onTick,lo.prototype._onTick,this);let f;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let O=document.createElement("div");O.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(O),f=new h9(O,p)}let b;if(!l(t.infoBox)||t.infoBox!==!1){let O=document.createElement("div");O.className="cesium-viewer-infoBoxContainer",o.appendChild(O),b=new n9(O);let H=b.viewModel;g.add(H.cameraClicked,lo.prototype._onInfoBoxCameraClicked,this),g.add(H.closeClicked,lo.prototype._onInfoBoxClockClicked,this)}let x=document.createElement("div");x.className="cesium-viewer-toolbar",o.appendChild(x);let I;if(!l(t.geocoder)||t.geocoder!==!1){let O=document.createElement("div");O.className="cesium-viewer-geocoderContainer",x.appendChild(O);let H;typeof t.geocoder=="string"?H=[new u_({scene:p,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(H=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),I=new jN({container:O,geocoderServices:H,scene:p}),g.add(I.viewModel.search.beforeExecute,lo.prototype._clearObjects,this)}let _;(!l(t.homeButton)||t.homeButton!==!1)&&(_=new $N(x,p),l(I)&&g.add(_.viewModel.command.afterExecute,function(){let O=I.viewModel;O.searchText="",O.isSearchInProgress&&O.search()}),g.add(_.viewModel.command.beforeExecute,lo.prototype._clearTrackedObject,this));let E;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(E=new d9(x,p));let S;t.projectionPicker&&(S=new c9(x,p));let R,G;if(n){let O=t.imageryProviderViewModels??vN(),H=t.terrainProviderViewModels??NN();R=new MN(x,{globe:p.globe,imageryProviderViewModels:O,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:H,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),G=x.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(R.viewModel.selectedImagery=void 0),p.imageryLayers.removeAll(),p.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(R.viewModel.selectedTerrain=void 0),p.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(p.globe.depthTestAgainstTerrain=!0),p.setTerrain(t.terrain));let B;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let O=!0;try{if(l(window.localStorage)){let H=window.localStorage.getItem("cesium-hasSeenNavHelp");l(H)&&H?O=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}B=new o9({container:x,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??O})}let w;if(!l(t.animation)||t.animation!==!1){let O=document.createElement("div");O.className="cesium-viewer-animationContainer",o.appendChild(O),w=new WN(O,new FN(d))}let F;if(!l(t.timeline)||t.timeline!==!1){let O=document.createElement("div");O.className="cesium-viewer-timelineContainer",o.appendChild(O),F=new A9(O,c),F.addEventListener("settime",DSe,!1),F.zoomTo(c.startTime,c.stopTime)}let P,A,T;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(T=document.createElement("div"),T.className="cesium-viewer-fullscreenContainer",o.appendChild(T),P=new KN(T,t.fullscreenElement),A=$a(P.viewModel,"isFullscreenEnabled",function(O){T.style.display=O?"block":"none",l(F)&&(F.container.style.right=`${T.clientWidth}px`,F.resize())}));let L,V,W;if(t.vrButton){let O=document.createElement("div");O.className="cesium-viewer-vrContainer",o.appendChild(O),L=new b9(O,p,t.fullScreenElement),V=$a(L.viewModel,"isVREnabled",function(H){O.style.display=H?"block":"none",l(P)&&(O.style.right=`${T.clientWidth}px`),l(F)&&(F.container.style.right=`${O.clientWidth}px`,F.resize())}),W=$a(L.viewModel,"isVRMode",function(H){jRt(i,H)})}this._baseLayerPickerDropDown=G,this._fullscreenSubscription=A,this._vrSubscription=V,this._vrModeSubscription=W,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=f,this._infoBox=b,this._clockViewModel=d,this._destroyClockViewModel=u,this._toolbar=x,this._homeButton=_,this._sceneModePicker=E,this._projectionPicker=S,this._baseLayerPicker=R,this._navigationHelpButton=B,this._animation=w,this._timeline=F,this._fullscreenButton=P,this._vrButton=L,this._geocoder=I,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(b)||l(f),this._selectedEntity=void 0,this._selectedEntityChanged=new Ce;let M=this._cesiumWidget.dataSources,Q=this._cesiumWidget.dataSourceDisplay;g.add(M.dataSourceAdded,lo.prototype._onDataSourceAdded,this),g.add(M.dataSourceRemoved,lo.prototype._onDataSourceRemoved,this),g.add(p.postUpdate,lo.prototype.resize,this);let N=M.length;for(let O=0;O<N;O++)this._dataSourceAdded(M,M.get(O));this._dataSourceAdded(void 0,Q.defaultDataSource),g.add(M.dataSourceAdded,lo.prototype._dataSourceAdded,this),g.add(M.dataSourceRemoved,lo.prototype._dataSourceRemoved,this);function k(O){let H=vSe(i,O);l(H)?z.getValueOrUndefined(H.position,i.clock.currentTime)?i.trackedEntity=H:i.zoomTo(H):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function v(O){i.selectedEntity=vSe(i,O)}h.screenSpaceEventHandler.setInputAction(v,Zn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(k,Zn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(lo.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,xee(this._timeline,e))}}});lo.prototype.extend=function(e,t){e(this,t)};lo.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let f=this._geocoder.searchSuggestionsContainer;f.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,d,u=0,h=5,p=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let f=this._lastWidth;d=this._animation.container,n>900?(u=169,f<=900&&(d.style.width="169px",d.style.height="112px",this._animation.resize())):n>=600?(u=136,(f<600||f>900)&&(d.style.width="136px",d.style.height="90px",this._animation.resize())):(u=106,(f>600||f===0)&&(d.style.width="106px",d.style.height="70px",this._animation.resize())),h=u+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let f=this._fullscreenButton,b=this._vrButton,x=c.container,I=x.style;p=x.clientHeight+3,I.left=`${u}px`;let _=0;l(f)&&(_+=f.container.clientWidth),l(b)&&(_+=b.container.clientWidth),I.right=`${_}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${p}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};lo.prototype.forceResize=function(){this._lastWidth=0,this.resize()};lo.prototype.render=function(){this._cesiumWidget.render()};lo.prototype.isDestroyed=function(){return!1};lo.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(Zn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(Zn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",DSe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),me(this)};lo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(lo.prototype._onEntityCollectionChanged,this)};lo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(lo.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};lo.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};lo.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,MSe)!==At.FAILED?n=MSe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=m.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=z.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};lo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};lo.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};lo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};lo.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};lo.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};lo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&xee(this.timeline,e)};lo.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&xee(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,lo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};lo.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};lo.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};lo.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var Iee=lo;var BFo=y(C(),1);function qRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new kN(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var _ee=qRt;var WFo=y(C(),1);function $Rt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new HN(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var Eee=$Rt;var vFo=y(C(),1);function eVt(e,t){t=t??Y.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new Ce,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=Dn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(u){QSe(s,d),s=u,Tee(s,d)}},dropEnabled:{get:function(){return n},set:function(u){u!==n&&(u?Tee(s,d):QSe(s,d),n=u)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(u){r=u}},flyToOnDrop:{get:function(){return i},set:function(u){i=u}},proxy:{get:function(){return c},set:function(u){c=u}},clampToGround:{get:function(){return a},set:function(u){a=u}}});function d(u){T_(u),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=u.dataTransfer.files,p=h.length;for(let g=0;g<p;g++){let f=h[g],b=new FileReader;b.onload=tVt(e,f,c,a),b.onerror=nVt(e,f),b.readAsText(f)}}Tee(s,d),e.destroy=nN(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=d}function T_(e){e.stopPropagation(),e.preventDefault()}function QSe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",T_,!1),n.removeEventListener("dragover",T_,!1),n.removeEventListener("dragexit",T_,!1))}function Tee(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",T_,!1),e.addEventListener("dragover",T_,!1),e.addEventListener("dragexit",T_,!1)}function tVt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=TW.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=Q0.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=pI.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=IF.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function nVt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var See=eVt;var YFo=y(C(),1);function iVt(e,t){t=t??Y.EMPTY_OBJECT;let n=new s9({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var Lee=iVt;var sPo=y(C(),1);var iPo=y(C(),1);var JFo=y(C(),1);function USe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function Km(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(u){t._voxelPrimitive[r]=u});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let d=Ee.observable();return Ee.defineProperty(t,r,{get:function(){return d()},set:function(u){typeof s=="number"&&typeof u=="string"&&(u=Number(u),isNaN(u)&&(u=s)),typeof s=="boolean"&&typeof u=="number"&&(u=u===1),d(u),l(a)&&l(t._voxelPrimitive)&&(a(u),e.requestRender())}}),t[r]=s,d}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=USe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===qa.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===qa.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===qa.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-Z.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:Z.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationX=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationY=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationZ=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleX=X.getScale(t._voxelPrimitive.modelMatrix,new m).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleY=X.getScale(t._voxelPrimitive.modelMatrix,new m).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleZ=X.getScale(t._voxelPrimitive.modelMatrix,new m).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}})}var oVt=new m,rVt=new m,sVt=new ic,aVt=new $;function Np(e){let t=m.fromElements(e.translationX,e.translationY,e.translationZ,oVt),n=m.fromElements(e.scaleX,e.scaleY,e.scaleZ,rVt),i=sVt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=$.fromHeadingPitchRoll(i,aVt),r=$.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=X.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(Km.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=USe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,Np(t)}}});Km.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Km.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Km.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Km.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Km.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Km.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Km.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new KI({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Km.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,d;if(t.shiftKey)for(d=0;d<c;++d)a[d][0]===" "&&(a[d][1]===" "?(a[d]=a[d].substr(2),r-=2):(a[d]=a[d].substr(1),r-=1));else for(d=0;d<c;++d)a[d]=` ${a[d]}`,r+=2;let u=a.join(` +`);n.value=n.value.slice(0,i)+u+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};Km.prototype.isDestroyed=function(){return!1};Km.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){Ee.getObservable(e,t).dispose()}),me(this)};var y9=Km;function T3(e,t){e=Dn(e);let n=document.createElement("div"),i=new y9(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:d}=Vd,u=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),p=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");u.appendChild(a("Depth Test","depthTest")),u.appendChild(a("Show","show")),u.appendChild(a("Disable Update","disableUpdate")),u.appendChild(a("Debug Draw","debugDraw")),u.appendChild(a("Jitter","jitter")),u.appendChild(a("Nearest Sampling","nearestSampling")),u.appendChild(c("Screen Space Error","screenSpaceError",0,128)),u.appendChild(c("Step Size","stepSize",0,2));let f=10,b=10,x=Z.PI;h.appendChild(c("Translation X","translationX",-f,+f)),h.appendChild(c("Translation Y","translationY",-f,+f)),h.appendChild(c("Translation Z","translationZ",-f,+f)),h.appendChild(c("Scale X","scaleX",0,+b)),h.appendChild(c("Scale Y","scaleY",0,+b)),h.appendChild(c("Scale Z","scaleZ",0,+b)),h.appendChild(c("Heading","angleX",-x,+x)),h.appendChild(c("Pitch","angleY",-x,+x)),h.appendChild(c("Roll","angleZ",-x,+x)),Ree("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",p),Ree("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",p),Ree("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",p);let I=document.createElement("div");g.appendChild(I);let _=document.createElement("textarea");_.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),I.className="cesium-cesiumInspector-styleEditor",I.appendChild(_);let E=d("Compile (Ctrl+Enter)","compileShader");I.appendChild(E);let S=document.createElement("label");S.style.display="block",S.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),I.appendChild(S),Ee.applyBindings(i,n)}Object.defineProperties(T3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});T3.prototype.isDestroyed=function(){return!1};T3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};function Ree(e,t,n,i,o,r,s,a,c,d,u,h,p,g){let f=Vd.createRangeInputWithDynamicMinMax,b=g.appendChild(document.createElement("div"));b.setAttribute("data-bind",`if: ${p}`),b.appendChild(f(e,s)),b.appendChild(f(t,a)),b.appendChild(f(n,c)),b.appendChild(f(i,d)),b.appendChild(f(o,u)),b.appendChild(f(r,h))}var C9=T3;function cVt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new C9(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var Vee=cVt;globalThis.CESIUM_VERSION="1.132";var lVt="1.132";return $Se(dVt);})(); diff --git a/public/Cesium/ThirdParty/Workers/package.json b/public/Cesium/ThirdParty/Workers/package.json new file mode 100644 index 000000000..0292b9956 --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/package.json @@ -0,0 +1 @@ +{"type":"commonjs"} \ No newline at end of file diff --git a/public/Cesium/ThirdParty/Workers/pako_deflate.min.js b/public/Cesium/ThirdParty/Workers/pako_deflate.min.js new file mode 100644 index 000000000..71416d2af --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/pako_deflate.min.js @@ -0,0 +1 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */(function(v,z){typeof exports=="object"&&typeof module<"u"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):z((v=typeof globalThis<"u"?globalThis:v||self).pako={})})(this,function(v){"use strict";function z(e){let s=e.length;for(;--s>=0;)e[s]=0}const oe=256,Ae=286,H=30,M=15,de=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),ae=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),ra=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ee=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Z=new Array(576);z(Z);const P=new Array(60);z(P);const j=new Array(512);z(j);const K=new Array(256);z(K);const ue=new Array(29);z(ue);const se=new Array(H);function fe(e,s,a,r,n){this.static_tree=e,this.extra_bits=s,this.extra_base=a,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}let Ze,Ue,Re;function ce(e,s){this.dyn_tree=e,this.max_code=0,this.stat_desc=s}z(se);const Se=e=>e<256?j[e]:j[256+(e>>>7)],Y=(e,s)=>{e.pending_buf[e.pending++]=255&s,e.pending_buf[e.pending++]=s>>>8&255},p=(e,s,a)=>{e.bi_valid>16-a?(e.bi_buf|=s<<e.bi_valid&65535,Y(e,e.bi_buf),e.bi_buf=s>>16-e.bi_valid,e.bi_valid+=a-16):(e.bi_buf|=s<<e.bi_valid&65535,e.bi_valid+=a)},k=(e,s,a)=>{p(e,a[2*s],a[2*s+1])},Te=(e,s)=>{let a=0;do a|=1&e,e>>>=1,a<<=1;while(--s>0);return a>>>1},Le=(e,s,a)=>{const r=new Array(16);let n,i,_=0;for(n=1;n<=M;n++)_=_+a[n-1]<<1,r[n]=_;for(i=0;i<=s;i++){let t=e[2*i+1];t!==0&&(e[2*i]=Te(r[t]++,t))}},Fe=e=>{let s;for(s=0;s<Ae;s++)e.dyn_ltree[2*s]=0;for(s=0;s<H;s++)e.dyn_dtree[2*s]=0;for(s=0;s<19;s++)e.bl_tree[2*s]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Oe=e=>{e.bi_valid>8?Y(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},De=(e,s,a,r)=>{const n=2*s,i=2*a;return e[n]<e[i]||e[n]===e[i]&&r[s]<=r[a]},pe=(e,s,a)=>{const r=e.heap[a];let n=a<<1;for(;n<=e.heap_len&&(n<e.heap_len&&De(s,e.heap[n+1],e.heap[n],e.depth)&&n++,!De(s,r,e.heap[n],e.depth));)e.heap[a]=e.heap[n],a=n,n<<=1;e.heap[a]=r},Ne=(e,s,a)=>{let r,n,i,_,t=0;if(e.sym_next!==0)do r=255&e.pending_buf[e.sym_buf+t++],r+=(255&e.pending_buf[e.sym_buf+t++])<<8,n=e.pending_buf[e.sym_buf+t++],r===0?k(e,n,s):(i=K[n],k(e,i+oe+1,s),_=de[i],_!==0&&(n-=ue[i],p(e,n,_)),r--,i=Se(r),k(e,i,a),_=ae[i],_!==0&&(r-=se[i],p(e,r,_)));while(t<e.sym_next);k(e,256,s)},ge=(e,s)=>{const a=s.dyn_tree,r=s.stat_desc.static_tree,n=s.stat_desc.has_stree,i=s.stat_desc.elems;let _,t,h,l=-1;for(e.heap_len=0,e.heap_max=573,_=0;_<i;_++)a[2*_]!==0?(e.heap[++e.heap_len]=l=_,e.depth[_]=0):a[2*_+1]=0;for(;e.heap_len<2;)h=e.heap[++e.heap_len]=l<2?++l:0,a[2*h]=1,e.depth[h]=0,e.opt_len--,n&&(e.static_len-=r[2*h+1]);for(s.max_code=l,_=e.heap_len>>1;_>=1;_--)pe(e,a,_);h=i;do _=e.heap[1],e.heap[1]=e.heap[e.heap_len--],pe(e,a,1),t=e.heap[1],e.heap[--e.heap_max]=_,e.heap[--e.heap_max]=t,a[2*h]=a[2*_]+a[2*t],e.depth[h]=(e.depth[_]>=e.depth[t]?e.depth[_]:e.depth[t])+1,a[2*_+1]=a[2*t+1]=h,e.heap[1]=h++,pe(e,a,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((u,d)=>{const m=d.dyn_tree,V=d.max_code,_e=d.stat_desc.static_tree,Na=d.stat_desc.has_stree,Ia=d.stat_desc.extra_bits,na=d.stat_desc.extra_base,$=d.stat_desc.max_length;let ee,y,B,f,le,xe,he=0;for(f=0;f<=M;f++)u.bl_count[f]=0;for(m[2*u.heap[u.heap_max]+1]=0,ee=u.heap_max+1;ee<573;ee++)y=u.heap[ee],f=m[2*m[2*y+1]+1]+1,f>$&&(f=$,he++),m[2*y+1]=f,y>V||(u.bl_count[f]++,le=0,y>=na&&(le=Ia[y-na]),xe=m[2*y],u.opt_len+=xe*(f+le),Na&&(u.static_len+=xe*(_e[2*y+1]+le)));if(he!==0){do{for(f=$-1;u.bl_count[f]===0;)f--;u.bl_count[f]--,u.bl_count[f+1]+=2,u.bl_count[$]--,he-=2}while(he>0);for(f=$;f!==0;f--)for(y=u.bl_count[f];y!==0;)B=u.heap[--ee],B>V||(m[2*B+1]!==f&&(u.opt_len+=(f-m[2*B+1])*m[2*B],m[2*B+1]=f),y--)}})(e,s),Le(a,l,e.bl_count)},Ie=(e,s,a)=>{let r,n,i=-1,_=s[1],t=0,h=7,l=4;for(_===0&&(h=138,l=3),s[2*(a+1)+1]=65535,r=0;r<=a;r++)n=_,_=s[2*(r+1)+1],++t<h&&n===_||(t<l?e.bl_tree[2*n]+=t:n!==0?(n!==i&&e.bl_tree[2*n]++,e.bl_tree[32]++):t<=10?e.bl_tree[34]++:e.bl_tree[36]++,t=0,i=n,_===0?(h=138,l=3):n===_?(h=6,l=3):(h=7,l=4))},Ce=(e,s,a)=>{let r,n,i=-1,_=s[1],t=0,h=7,l=4;for(_===0&&(h=138,l=3),r=0;r<=a;r++)if(n=_,_=s[2*(r+1)+1],!(++t<h&&n===_)){if(t<l)do k(e,n,e.bl_tree);while(--t!=0);else n!==0?(n!==i&&(k(e,n,e.bl_tree),t--),k(e,16,e.bl_tree),p(e,t-3,2)):t<=10?(k(e,17,e.bl_tree),p(e,t-3,3)):(k(e,18,e.bl_tree),p(e,t-11,7));t=0,i=n,_===0?(h=138,l=3):n===_?(h=6,l=3):(h=7,l=4)}};let Be=!1;const He=(e,s,a,r)=>{p(e,0+(r?1:0),3),Oe(e),Y(e,a),Y(e,~a),a&&e.pending_buf.set(e.window.subarray(s,s+a),e.pending),e.pending+=a};var ia=(e,s,a,r)=>{let n,i,_=0;e.level>0?(e.strm.data_type===2&&(e.strm.data_type=(t=>{let h,l=4093624447;for(h=0;h<=31;h++,l>>>=1)if(1&l&&t.dyn_ltree[2*h]!==0)return 0;if(t.dyn_ltree[18]!==0||t.dyn_ltree[20]!==0||t.dyn_ltree[26]!==0)return 1;for(h=32;h<oe;h++)if(t.dyn_ltree[2*h]!==0)return 1;return 0})(e)),ge(e,e.l_desc),ge(e,e.d_desc),_=(t=>{let h;for(Ie(t,t.dyn_ltree,t.l_desc.max_code),Ie(t,t.dyn_dtree,t.d_desc.max_code),ge(t,t.bl_desc),h=18;h>=3&&t.bl_tree[2*Ee[h]+1]===0;h--);return t.opt_len+=3*(h+1)+5+5+4,h})(e),n=e.opt_len+3+7>>>3,i=e.static_len+3+7>>>3,i<=n&&(n=i)):n=i=a+5,a+4<=n&&s!==-1?He(e,s,a,r):e.strategy===4||i===n?(p(e,2+(r?1:0),3),Ne(e,Z,P)):(p(e,4+(r?1:0),3),((t,h,l,u)=>{let d;for(p(t,h-257,5),p(t,l-1,5),p(t,u-4,4),d=0;d<u;d++)p(t,t.bl_tree[2*Ee[d]+1],3);Ce(t,t.dyn_ltree,h-1),Ce(t,t.dyn_dtree,l-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,_+1),Ne(e,e.dyn_ltree,e.dyn_dtree)),Fe(e),r&&Oe(e)},ta={_tr_init:e=>{Be||((()=>{let s,a,r,n,i;const _=new Array(16);for(r=0,n=0;n<28;n++)for(ue[n]=r,s=0;s<1<<de[n];s++)K[r++]=n;for(K[r-1]=n,i=0,n=0;n<16;n++)for(se[n]=i,s=0;s<1<<ae[n];s++)j[i++]=n;for(i>>=7;n<H;n++)for(se[n]=i<<7,s=0;s<1<<ae[n]-7;s++)j[256+i++]=n;for(a=0;a<=M;a++)_[a]=0;for(s=0;s<=143;)Z[2*s+1]=8,s++,_[8]++;for(;s<=255;)Z[2*s+1]=9,s++,_[9]++;for(;s<=279;)Z[2*s+1]=7,s++,_[7]++;for(;s<=287;)Z[2*s+1]=8,s++,_[8]++;for(Le(Z,287,_),s=0;s<H;s++)P[2*s+1]=5,P[2*s]=Te(s,5);Ze=new fe(Z,de,257,Ae,M),Ue=new fe(P,ae,0,H,M),Re=new fe(new Array(0),ra,0,19,7)})(),Be=!0),e.l_desc=new ce(e.dyn_ltree,Ze),e.d_desc=new ce(e.dyn_dtree,Ue),e.bl_desc=new ce(e.bl_tree,Re),e.bi_buf=0,e.bi_valid=0,Fe(e)},_tr_stored_block:He,_tr_flush_block:ia,_tr_tally:(e,s,a)=>(e.pending_buf[e.sym_buf+e.sym_next++]=s,e.pending_buf[e.sym_buf+e.sym_next++]=s>>8,e.pending_buf[e.sym_buf+e.sym_next++]=a,s===0?e.dyn_ltree[2*a]++:(e.matches++,s--,e.dyn_ltree[2*(K[a]+oe+1)]++,e.dyn_dtree[2*Se(s)]++),e.sym_next===e.sym_end),_tr_align:e=>{p(e,2,3),k(e,256,Z),(s=>{s.bi_valid===16?(Y(s,s.bi_buf),s.bi_buf=0,s.bi_valid=0):s.bi_valid>=8&&(s.pending_buf[s.pending++]=255&s.bi_buf,s.bi_buf>>=8,s.bi_valid-=8)})(e)}},Me=(e,s,a,r)=>{let n=65535&e|0,i=e>>>16&65535|0,_=0;for(;a!==0;){_=a>2e3?2e3:a,a-=_;do n=n+s[r++]|0,i=i+n|0;while(--_);n%=65521,i%=65521}return n|i<<16|0};const _a=new Uint32Array((()=>{let e,s=[];for(var a=0;a<256;a++){e=a;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;s[a]=e}return s})());var U=(e,s,a,r)=>{const n=_a,i=r+a;e^=-1;for(let _=r;_<i;_++)e=e>>>8^n[255&(e^s[_])];return-1^e},ne={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},we={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:la,_tr_stored_block:me,_tr_flush_block:ha,_tr_tally:R,_tr_align:oa}=ta,{Z_NO_FLUSH:S,Z_PARTIAL_FLUSH:da,Z_FULL_FLUSH:ua,Z_FINISH:b,Z_BLOCK:Pe,Z_OK:c,Z_STREAM_END:je,Z_STREAM_ERROR:x,Z_DATA_ERROR:fa,Z_BUF_ERROR:be,Z_DEFAULT_COMPRESSION:ca,Z_FILTERED:pa,Z_HUFFMAN_ONLY:re,Z_RLE:ga,Z_FIXED:wa,Z_DEFAULT_STRATEGY:ma,Z_UNKNOWN:ba,Z_DEFLATED:ie}=we,F=258,A=262,N=42,O=113,G=666,D=(e,s)=>(e.msg=ne[s],s),Ke=e=>2*e-(e>4?9:0),T=e=>{let s=e.length;for(;--s>=0;)e[s]=0},ya=e=>{let s,a,r,n=e.w_size;s=e.hash_size,r=s;do a=e.head[--r],e.head[r]=a>=n?a-n:0;while(--s);s=n,r=s;do a=e.prev[--r],e.prev[r]=a>=n?a-n:0;while(--s)};let L=(e,s,a)=>(s<<e.hash_shift^a)&e.hash_mask;const g=e=>{const s=e.state;let a=s.pending;a>e.avail_out&&(a=e.avail_out),a!==0&&(e.output.set(s.pending_buf.subarray(s.pending_out,s.pending_out+a),e.next_out),e.next_out+=a,s.pending_out+=a,e.total_out+=a,e.avail_out-=a,s.pending-=a,s.pending===0&&(s.pending_out=0))},w=(e,s)=>{ha(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,s),e.block_start=e.strstart,g(e.strm)},o=(e,s)=>{e.pending_buf[e.pending++]=s},X=(e,s)=>{e.pending_buf[e.pending++]=s>>>8&255,e.pending_buf[e.pending++]=255&s},ye=(e,s,a,r)=>{let n=e.avail_in;return n>r&&(n=r),n===0?0:(e.avail_in-=n,s.set(e.input.subarray(e.next_in,e.next_in+n),a),e.state.wrap===1?e.adler=Me(e.adler,s,n,a):e.state.wrap===2&&(e.adler=U(e.adler,s,n,a)),e.next_in+=n,e.total_in+=n,n)},Ye=(e,s)=>{let a,r,n=e.max_chain_length,i=e.strstart,_=e.prev_length,t=e.nice_match;const h=e.strstart>e.w_size-A?e.strstart-(e.w_size-A):0,l=e.window,u=e.w_mask,d=e.prev,m=e.strstart+F;let V=l[i+_-1],_e=l[i+_];e.prev_length>=e.good_match&&(n>>=2),t>e.lookahead&&(t=e.lookahead);do if(a=s,l[a+_]===_e&&l[a+_-1]===V&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do;while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&i<m);if(r=F-(m-i),i=m-F,r>_){if(e.match_start=s,_=r,r>=t)break;V=l[i+_-1],_e=l[i+_]}}while((s=d[s&u])>h&&--n!=0);return _<=e.lookahead?_:e.lookahead},I=e=>{const s=e.w_size;let a,r,n;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=s+(s-A)&&(e.window.set(e.window.subarray(s,s+s-r),0),e.match_start-=s,e.strstart-=s,e.block_start-=s,e.insert>e.strstart&&(e.insert=e.strstart),ya(e),r+=s),e.strm.avail_in===0)break;if(a=ye(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=a,e.lookahead+e.insert>=3)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=L(e,e.ins_h,e.window[n+1]);e.insert&&(e.ins_h=L(e,e.ins_h,e.window[n+3-1]),e.prev[n&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=n,n++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<A&&e.strm.avail_in!==0)},Ge=(e,s)=>{let a,r,n,i=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,_=0,t=e.strm.avail_in;do{if(a=65535,n=e.bi_valid+42>>3,e.strm.avail_out<n||(n=e.strm.avail_out-n,r=e.strstart-e.block_start,a>r+e.strm.avail_in&&(a=r+e.strm.avail_in),a>n&&(a=n),a<i&&(a===0&&s!==b||s===S||a!==r+e.strm.avail_in)))break;_=s===b&&a===r+e.strm.avail_in?1:0,me(e,0,0,_),e.pending_buf[e.pending-4]=a,e.pending_buf[e.pending-3]=a>>8,e.pending_buf[e.pending-2]=~a,e.pending_buf[e.pending-1]=~a>>8,g(e.strm),r&&(r>a&&(r=a),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,a-=r),a&&(ye(e.strm,e.strm.output,e.strm.next_out,a),e.strm.next_out+=a,e.strm.avail_out-=a,e.strm.total_out+=a)}while(_===0);return t-=e.strm.avail_in,t&&(t>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=t&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-t,e.strm.next_in),e.strstart),e.strstart+=t,e.insert+=t>e.w_size-e.insert?e.w_size-e.insert:t),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),_?4:s!==S&&s!==b&&e.strm.avail_in===0&&e.strstart===e.block_start?2:(n=e.window_size-e.strstart,e.strm.avail_in>n&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,n+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),n>e.strm.avail_in&&(n=e.strm.avail_in),n&&(ye(e.strm,e.window,e.strstart,n),e.strstart+=n,e.insert+=n>e.w_size-e.insert?e.w_size-e.insert:n),e.high_water<e.strstart&&(e.high_water=e.strstart),n=e.bi_valid+42>>3,n=e.pending_buf_size-n>65535?65535:e.pending_buf_size-n,i=n>e.w_size?e.w_size:n,r=e.strstart-e.block_start,(r>=i||(r||s===b)&&s!==S&&e.strm.avail_in===0&&r<=n)&&(a=r>n?n:r,_=s===b&&e.strm.avail_in===0&&a===r?1:0,me(e,e.block_start,a,_),e.block_start+=a,g(e.strm)),_?3:1)},ve=(e,s)=>{let a,r;for(;;){if(e.lookahead<A){if(I(e),e.lookahead<A&&s===S)return 1;if(e.lookahead===0)break}if(a=0,e.lookahead>=3&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),a!==0&&e.strstart-a<=e.w_size-A&&(e.match_length=Ye(e,a)),e.match_length>=3)if(r=R(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!=0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=L(e,e.ins_h,e.window[e.strstart+1]);else r=R(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(w(e,!1),e.strm.avail_out===0))return 1}return e.insert=e.strstart<2?e.strstart:2,s===b?(w(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(w(e,!1),e.strm.avail_out===0)?1:2},C=(e,s)=>{let a,r,n;for(;;){if(e.lookahead<A){if(I(e),e.lookahead<A&&s===S)return 1;if(e.lookahead===0)break}if(a=0,e.lookahead>=3&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,a!==0&&e.prev_length<e.max_lazy_match&&e.strstart-a<=e.w_size-A&&(e.match_length=Ye(e,a),e.match_length<=5&&(e.strategy===pa||e.match_length===3&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=R(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!=0);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(w(e,!1),e.strm.avail_out===0))return 1}else if(e.match_available){if(r=R(e,0,e.window[e.strstart-1]),r&&w(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=R(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,s===b?(w(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(w(e,!1),e.strm.avail_out===0)?1:2};function E(e,s,a,r,n){this.good_length=e,this.max_lazy=s,this.nice_length=a,this.max_chain=r,this.func=n}const W=[new E(0,0,0,0,Ge),new E(4,4,8,4,ve),new E(4,5,16,8,ve),new E(4,6,32,32,ve),new E(4,4,16,16,C),new E(8,16,32,32,C),new E(8,16,128,128,C),new E(8,32,128,256,C),new E(32,128,258,1024,C),new E(32,258,258,4096,C)];function va(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ie,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),T(this.dyn_ltree),T(this.dyn_dtree),T(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),T(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),T(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const q=e=>{if(!e)return 1;const s=e.state;return!s||s.strm!==e||s.status!==N&&s.status!==57&&s.status!==69&&s.status!==73&&s.status!==91&&s.status!==103&&s.status!==O&&s.status!==G?1:0},Xe=e=>{if(q(e))return D(e,x);e.total_in=e.total_out=0,e.data_type=ba;const s=e.state;return s.pending=0,s.pending_out=0,s.wrap<0&&(s.wrap=-s.wrap),s.status=s.wrap===2?57:s.wrap?N:O,e.adler=s.wrap===2?0:1,s.last_flush=-2,la(s),c},We=e=>{const s=Xe(e);var a;return s===c&&((a=e.state).window_size=2*a.w_size,T(a.head),a.max_lazy_match=W[a.level].max_lazy,a.good_match=W[a.level].good_length,a.nice_match=W[a.level].nice_length,a.max_chain_length=W[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),s},qe=(e,s,a,r,n,i)=>{if(!e)return x;let _=1;if(s===ca&&(s=6),r<0?(_=0,r=-r):r>15&&(_=2,r-=16),n<1||n>9||a!==ie||r<8||r>15||s<0||s>9||i<0||i>wa||r===8&&_!==1)return D(e,x);r===8&&(r=9);const t=new va;return e.state=t,t.strm=e,t.status=N,t.wrap=_,t.gzhead=null,t.w_bits=r,t.w_size=1<<t.w_bits,t.w_mask=t.w_size-1,t.hash_bits=n+7,t.hash_size=1<<t.hash_bits,t.hash_mask=t.hash_size-1,t.hash_shift=~~((t.hash_bits+3-1)/3),t.window=new Uint8Array(2*t.w_size),t.head=new Uint16Array(t.hash_size),t.prev=new Uint16Array(t.w_size),t.lit_bufsize=1<<n+6,t.pending_buf_size=4*t.lit_bufsize,t.pending_buf=new Uint8Array(t.pending_buf_size),t.sym_buf=t.lit_bufsize,t.sym_end=3*(t.lit_bufsize-1),t.level=s,t.strategy=i,t.method=a,We(e)};var J={deflateInit:(e,s)=>qe(e,s,ie,15,8,ma),deflateInit2:qe,deflateReset:We,deflateResetKeep:Xe,deflateSetHeader:(e,s)=>q(e)||e.state.wrap!==2?x:(e.state.gzhead=s,c),deflate:(e,s)=>{if(q(e)||s>Pe||s<0)return e?D(e,x):x;const a=e.state;if(!e.output||e.avail_in!==0&&!e.input||a.status===G&&s!==b)return D(e,e.avail_out===0?be:x);const r=a.last_flush;if(a.last_flush=s,a.pending!==0){if(g(e),e.avail_out===0)return a.last_flush=-1,c}else if(e.avail_in===0&&Ke(s)<=Ke(r)&&s!==b)return D(e,be);if(a.status===G&&e.avail_in!==0)return D(e,be);if(a.status===N&&a.wrap===0&&(a.status=O),a.status===N){let n=ie+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=re||a.level<2?0:a.level<6?1:a.level===6?2:3,n|=i<<6,a.strstart!==0&&(n|=32),n+=31-n%31,X(a,n),a.strstart!==0&&(X(a,e.adler>>>16),X(a,65535&e.adler)),e.adler=1,a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(a.status===57){if(e.adler=0,o(a,31),o(a,139),o(a,8),a.gzhead)o(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),o(a,255&a.gzhead.time),o(a,a.gzhead.time>>8&255),o(a,a.gzhead.time>>16&255),o(a,a.gzhead.time>>24&255),o(a,a.level===9?2:a.strategy>=re||a.level<2?4:0),o(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(o(a,255&a.gzhead.extra.length),o(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=U(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(o(a,0),o(a,0),o(a,0),o(a,0),o(a,0),o(a,a.level===9?2:a.strategy>=re||a.level<2?4:0),o(a,3),a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(a.status===69){if(a.gzhead.extra){let n=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let t=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+t),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>n&&(e.adler=U(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex+=t,g(e),a.pending!==0)return a.last_flush=-1,c;n=0,i-=t}let _=new Uint8Array(a.gzhead.extra);a.pending_buf.set(_.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>n&&(e.adler=U(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex=0}a.status=73}if(a.status===73){if(a.gzhead.name){let n,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),g(e),a.pending!==0)return a.last_flush=-1,c;i=0}n=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,o(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(a.status===91){if(a.gzhead.comment){let n,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),g(e),a.pending!==0)return a.last_flush=-1,c;i=0}n=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,o(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(a.status===103){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(g(e),a.pending!==0))return a.last_flush=-1,c;o(a,255&e.adler),o(a,e.adler>>8&255),e.adler=0}if(a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(e.avail_in!==0||a.lookahead!==0||s!==S&&a.status!==G){let n=a.level===0?Ge(a,s):a.strategy===re?((i,_)=>{let t;for(;;){if(i.lookahead===0&&(I(i),i.lookahead===0)){if(_===S)return 1;break}if(i.match_length=0,t=R(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,t&&(w(i,!1),i.strm.avail_out===0))return 1}return i.insert=0,_===b?(w(i,!0),i.strm.avail_out===0?3:4):i.sym_next&&(w(i,!1),i.strm.avail_out===0)?1:2})(a,s):a.strategy===ga?((i,_)=>{let t,h,l,u;const d=i.window;for(;;){if(i.lookahead<=F){if(I(i),i.lookahead<=F&&_===S)return 1;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead>=3&&i.strstart>0&&(l=i.strstart-1,h=d[l],h===d[++l]&&h===d[++l]&&h===d[++l])){u=i.strstart+F;do;while(h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&l<u);i.match_length=F-(u-l),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=3?(t=R(i,1,i.match_length-3),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(t=R(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),t&&(w(i,!1),i.strm.avail_out===0))return 1}return i.insert=0,_===b?(w(i,!0),i.strm.avail_out===0?3:4):i.sym_next&&(w(i,!1),i.strm.avail_out===0)?1:2})(a,s):W[a.level].func(a,s);if(n!==3&&n!==4||(a.status=G),n===1||n===3)return e.avail_out===0&&(a.last_flush=-1),c;if(n===2&&(s===da?oa(a):s!==Pe&&(me(a,0,0,!1),s===ua&&(T(a.head),a.lookahead===0&&(a.strstart=0,a.block_start=0,a.insert=0))),g(e),e.avail_out===0))return a.last_flush=-1,c}return s!==b?c:a.wrap<=0?je:(a.wrap===2?(o(a,255&e.adler),o(a,e.adler>>8&255),o(a,e.adler>>16&255),o(a,e.adler>>24&255),o(a,255&e.total_in),o(a,e.total_in>>8&255),o(a,e.total_in>>16&255),o(a,e.total_in>>24&255)):(X(a,e.adler>>>16),X(a,65535&e.adler)),g(e),a.wrap>0&&(a.wrap=-a.wrap),a.pending!==0?c:je)},deflateEnd:e=>{if(q(e))return x;const s=e.state.status;return e.state=null,s===O?D(e,fa):c},deflateSetDictionary:(e,s)=>{let a=s.length;if(q(e))return x;const r=e.state,n=r.wrap;if(n===2||n===1&&r.status!==N||r.lookahead)return x;if(n===1&&(e.adler=Me(e.adler,s,a,0)),r.wrap=0,a>=r.w_size){n===0&&(T(r.head),r.strstart=0,r.block_start=0,r.insert=0);let h=new Uint8Array(r.w_size);h.set(s.subarray(a-r.w_size,a),0),s=h,a=r.w_size}const i=e.avail_in,_=e.next_in,t=e.input;for(e.avail_in=a,e.next_in=0,e.input=s,I(r);r.lookahead>=3;){let h=r.strstart,l=r.lookahead-2;do r.ins_h=L(r,r.ins_h,r.window[h+3-1]),r.prev[h&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=h,h++;while(--l);r.strstart=h,r.lookahead=2,I(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=_,e.input=t,e.avail_in=i,r.wrap=n,c},deflateInfo:"pako deflate (from Nodeca project)"};const za=(e,s)=>Object.prototype.hasOwnProperty.call(e,s);var ka=function(e){const s=Array.prototype.slice.call(arguments,1);for(;s.length;){const a=s.shift();if(a){if(typeof a!="object")throw new TypeError(a+"must be non-object");for(const r in a)za(a,r)&&(e[r]=a[r])}}return e},xa=e=>{let s=0;for(let r=0,n=e.length;r<n;r++)s+=e[r].length;const a=new Uint8Array(s);for(let r=0,n=0,i=e.length;r<i;r++){let _=e[r];a.set(_,n),n+=_.length}return a};let Aa=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Aa=!1}const ze=new Uint8Array(256);for(let e=0;e<256;e++)ze[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ze[254]=ze[254]=1;var Je=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let s,a,r,n,i,_=e.length,t=0;for(n=0;n<_;n++)a=e.charCodeAt(n),(64512&a)==55296&&n+1<_&&(r=e.charCodeAt(n+1),(64512&r)==56320&&(a=65536+(a-55296<<10)+(r-56320),n++)),t+=a<128?1:a<2048?2:a<65536?3:4;for(s=new Uint8Array(t),i=0,n=0;i<t;n++)a=e.charCodeAt(n),(64512&a)==55296&&n+1<_&&(r=e.charCodeAt(n+1),(64512&r)==56320&&(a=65536+(a-55296<<10)+(r-56320),n++)),a<128?s[i++]=a:a<2048?(s[i++]=192|a>>>6,s[i++]=128|63&a):a<65536?(s[i++]=224|a>>>12,s[i++]=128|a>>>6&63,s[i++]=128|63&a):(s[i++]=240|a>>>18,s[i++]=128|a>>>12&63,s[i++]=128|a>>>6&63,s[i++]=128|63&a);return s},Ea=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Za,Z_SYNC_FLUSH:Ua,Z_FULL_FLUSH:Ra,Z_FINISH:Sa,Z_OK:te,Z_STREAM_END:Ta,Z_DEFAULT_COMPRESSION:La,Z_DEFAULT_STRATEGY:Fa,Z_DEFLATED:Oa}=we;function Q(e){this.options=ka({level:La,method:Oa,chunkSize:16384,windowBits:15,memLevel:8,strategy:Fa},e||{});let s=this.options;s.raw&&s.windowBits>0?s.windowBits=-s.windowBits:s.gzip&&s.windowBits>0&&s.windowBits<16&&(s.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ea,this.strm.avail_out=0;let a=J.deflateInit2(this.strm,s.level,s.method,s.windowBits,s.memLevel,s.strategy);if(a!==te)throw new Error(ne[a]);if(s.header&&J.deflateSetHeader(this.strm,s.header),s.dictionary){let r;if(r=typeof s.dictionary=="string"?Je(s.dictionary):Qe.call(s.dictionary)==="[object ArrayBuffer]"?new Uint8Array(s.dictionary):s.dictionary,a=J.deflateSetDictionary(this.strm,r),a!==te)throw new Error(ne[a]);this._dict_set=!0}}function ke(e,s){const a=new Q(s);if(a.push(e,!0),a.err)throw a.msg||ne[a.err];return a.result}Q.prototype.push=function(e,s){const a=this.strm,r=this.options.chunkSize;let n,i;if(this.ended)return!1;for(i=s===~~s?s:s===!0?Sa:Za,typeof e=="string"?a.input=Je(e):Qe.call(e)==="[object ArrayBuffer]"?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;;)if(a.avail_out===0&&(a.output=new Uint8Array(r),a.next_out=0,a.avail_out=r),(i===Ua||i===Ra)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=J.deflate(a,i),n===Ta)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=J.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===te;if(a.avail_out!==0){if(i>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(a.avail_in===0)break}else this.onData(a.output)}return!0},Q.prototype.onData=function(e){this.chunks.push(e)},Q.prototype.onEnd=function(e){e===te&&(this.result=xa(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ve=Q,$e=ke,ea=function(e,s){return(s=s||{}).raw=!0,ke(e,s)},aa=function(e,s){return(s=s||{}).gzip=!0,ke(e,s)},sa=we,Da={Deflate:Ve,deflate:$e,deflateRaw:ea,gzip:aa,constants:sa};v.Deflate=Ve,v.constants=sa,v.default=Da,v.deflate=$e,v.deflateRaw=ea,v.gzip=aa,Object.defineProperty(v,"__esModule",{value:!0})}); diff --git a/public/Cesium/ThirdParty/Workers/pako_inflate.min.js b/public/Cesium/ThirdParty/Workers/pako_inflate.min.js new file mode 100644 index 000000000..af61e548d --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/pako_inflate.min.js @@ -0,0 +1 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */(function(O,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):I((O=typeof globalThis<"u"?globalThis:O||self).pako={})})(this,function(O){"use strict";var I=(e,i,t,o)=>{let s=65535&e|0,r=e>>>16&65535|0,h=0;for(;t!==0;){h=t>2e3?2e3:t,t-=h;do s=s+i[o++]|0,r=r+s|0;while(--h);s%=65521,r%=65521}return s|r<<16|0};const Zt=new Uint32Array((()=>{let e,i=[];for(var t=0;t<256;t++){e=t;for(var o=0;o<8;o++)e=1&e?3988292384^e>>>1:e>>>1;i[t]=e}return i})());var U=(e,i,t,o)=>{const s=Zt,r=o+t;e^=-1;for(let h=o;h<r;h++)e=e>>>8^s[255&(e^i[h])];return-1^e};const j=16209;var St=function(e,i){let t,o,s,r,h,l,p,n,a,A,w,d,Z,v,u,y,k,f,g,E,c,x,m,b;const _=e.state;t=e.next_in,m=e.input,o=t+(e.avail_in-5),s=e.next_out,b=e.output,r=s-(i-e.avail_out),h=s+(e.avail_out-257),l=_.dmax,p=_.wsize,n=_.whave,a=_.wnext,A=_.window,w=_.hold,d=_.bits,Z=_.lencode,v=_.distcode,u=(1<<_.lenbits)-1,y=(1<<_.distbits)-1;t:do{d<15&&(w+=m[t++]<<d,d+=8,w+=m[t++]<<d,d+=8),k=Z[w&u];e:for(;;){if(f=k>>>24,w>>>=f,d-=f,f=k>>>16&255,f===0)b[s++]=65535&k;else{if(!(16&f)){if((64&f)==0){k=Z[(65535&k)+(w&(1<<f)-1)];continue e}if(32&f){_.mode=16191;break t}e.msg="invalid literal/length code",_.mode=j;break t}g=65535&k,f&=15,f&&(d<f&&(w+=m[t++]<<d,d+=8),g+=w&(1<<f)-1,w>>>=f,d-=f),d<15&&(w+=m[t++]<<d,d+=8,w+=m[t++]<<d,d+=8),k=v[w&y];i:for(;;){if(f=k>>>24,w>>>=f,d-=f,f=k>>>16&255,!(16&f)){if((64&f)==0){k=v[(65535&k)+(w&(1<<f)-1)];continue i}e.msg="invalid distance code",_.mode=j;break t}if(E=65535&k,f&=15,d<f&&(w+=m[t++]<<d,d+=8,d<f&&(w+=m[t++]<<d,d+=8)),E+=w&(1<<f)-1,E>l){e.msg="invalid distance too far back",_.mode=j;break t}if(w>>>=f,d-=f,f=s-r,E>f){if(f=E-f,f>n&&_.sane){e.msg="invalid distance too far back",_.mode=j;break t}if(c=0,x=A,a===0){if(c+=p-f,f<g){g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}}else if(a<f){if(c+=p+a-f,f-=a,f<g){g-=f;do b[s++]=A[c++];while(--f);if(c=0,a<g){f=a,g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}}}else if(c+=a-f,f<g){g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}for(;g>2;)b[s++]=x[c++],b[s++]=x[c++],b[s++]=x[c++],g-=3;g&&(b[s++]=x[c++],g>1&&(b[s++]=x[c++]))}else{c=s-E;do b[s++]=b[c++],b[s++]=b[c++],b[s++]=b[c++],g-=3;while(g>2);g&&(b[s++]=b[c++],g>1&&(b[s++]=b[c++]))}break}}break}}while(t<o&&s<h);g=d>>3,t-=g,d-=g<<3,w&=(1<<d)-1,e.next_in=t,e.next_out=s,e.avail_in=t<o?o-t+5:5-(t-o),e.avail_out=s<h?h-s+257:257-(s-h),_.hold=w,_.bits=d};const K=15,Tt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Ot=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Ut=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Dt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var z=(e,i,t,o,s,r,h,l)=>{const p=l.bits;let n,a,A,w,d,Z,v=0,u=0,y=0,k=0,f=0,g=0,E=0,c=0,x=0,m=0,b=null;const _=new Uint16Array(16),S=new Uint16Array(16);let H,q,J,Q=null;for(v=0;v<=K;v++)_[v]=0;for(u=0;u<o;u++)_[i[t+u]]++;for(f=p,k=K;k>=1&&_[k]===0;k--);if(f>k&&(f=k),k===0)return s[r++]=20971520,s[r++]=20971520,l.bits=1,0;for(y=1;y<k&&_[y]===0;y++);for(f<y&&(f=y),c=1,v=1;v<=K;v++)if(c<<=1,c-=_[v],c<0)return-1;if(c>0&&(e===0||k!==1))return-1;for(S[1]=0,v=1;v<K;v++)S[v+1]=S[v]+_[v];for(u=0;u<o;u++)i[t+u]!==0&&(h[S[i[t+u]]++]=u);if(e===0?(b=Q=h,Z=20):e===1?(b=Tt,Q=Ot,Z=257):(b=Ut,Q=Dt,Z=0),m=0,u=0,v=y,d=r,g=f,E=0,A=-1,x=1<<f,w=x-1,e===1&&x>852||e===2&&x>592)return 1;for(;;){H=v-E,h[u]+1<Z?(q=0,J=h[u]):h[u]>=Z?(q=Q[h[u]-Z],J=b[h[u]-Z]):(q=96,J=0),n=1<<v-E,a=1<<g,y=a;do a-=n,s[d+(m>>E)+a]=H<<24|q<<16|J|0;while(a!==0);for(n=1<<v-1;m&n;)n>>=1;if(n!==0?(m&=n-1,m+=n):m=0,u++,--_[v]==0){if(v===k)break;v=i[t+h[u]]}if(v>f&&(m&w)!==A){for(E===0&&(E=f),d+=y,g=v-E,c=1<<g;g+E<k&&(c-=_[g+E],!(c<=0));)g++,c<<=1;if(x+=1<<g,e===1&&x>852||e===2&&x>592)return 1;A=m&w,s[A]=f<<24|g<<16|d-r|0}}return m!==0&&(s[d+m]=v-E<<24|64<<16|0),l.bits=f,0},V={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Z_FINISH:lt,Z_BLOCK:Bt,Z_TREES:P,Z_OK:C,Z_STREAM_END:It,Z_NEED_DICT:Ct,Z_STREAM_ERROR:T,Z_DATA_ERROR:dt,Z_MEM_ERROR:ft,Z_BUF_ERROR:Nt,Z_DEFLATED:ht}=V,Y=16180,G=16190,D=16191,$=16192,tt=16194,X=16199,W=16200,et=16206,R=16209,ct=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function zt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const N=e=>{if(!e)return 1;const i=e.state;return!i||i.strm!==e||i.mode<Y||i.mode>16211?1:0},ut=e=>{if(N(e))return T;const i=e.state;return e.total_in=e.total_out=i.total=0,e.msg="",i.wrap&&(e.adler=1&i.wrap),i.mode=Y,i.last=0,i.havedict=0,i.flags=-1,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(852),i.distcode=i.distdyn=new Int32Array(592),i.sane=1,i.back=-1,C},wt=e=>{if(N(e))return T;const i=e.state;return i.wsize=0,i.whave=0,i.wnext=0,ut(e)},bt=(e,i)=>{let t;if(N(e))return T;const o=e.state;return i<0?(t=0,i=-i):(t=5+(i>>4),i<48&&(i&=15)),i&&(i<8||i>15)?T:(o.window!==null&&o.wbits!==i&&(o.window=null),o.wrap=t,o.wbits=i,wt(e))},mt=(e,i)=>{if(!e)return T;const t=new zt;e.state=t,t.strm=e,t.window=null,t.mode=Y;const o=bt(e,i);return o!==C&&(e.state=null),o};let it,nt,kt=!0;const Ft=e=>{if(kt){it=new Int32Array(512),nt=new Int32Array(32);let i=0;for(;i<144;)e.lens[i++]=8;for(;i<256;)e.lens[i++]=9;for(;i<280;)e.lens[i++]=7;for(;i<288;)e.lens[i++]=8;for(z(1,e.lens,0,288,it,0,e.work,{bits:9}),i=0;i<32;)e.lens[i++]=5;z(2,e.lens,0,32,nt,0,e.work,{bits:5}),kt=!1}e.lencode=it,e.lenbits=9,e.distcode=nt,e.distbits=5},_t=(e,i,t,o)=>{let s;const r=e.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),o>=r.wsize?(r.window.set(i.subarray(t-r.wsize,t),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>o&&(s=o),r.window.set(i.subarray(t-o,t-o+s),r.wnext),(o-=s)?(r.window.set(i.subarray(t-o,t),0),r.wnext=o,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var B={inflateReset:wt,inflateReset2:bt,inflateResetKeep:ut,inflateInit:e=>mt(e,15),inflateInit2:mt,inflate:(e,i)=>{let t,o,s,r,h,l,p,n,a,A,w,d,Z,v,u,y,k,f,g,E,c,x,m=0;const b=new Uint8Array(4);let _,S;const H=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(N(e)||!e.output||!e.input&&e.avail_in!==0)return T;t=e.state,t.mode===D&&(t.mode=$),h=e.next_out,s=e.output,p=e.avail_out,r=e.next_in,o=e.input,l=e.avail_in,n=t.hold,a=t.bits,A=l,w=p,x=C;t:for(;;)switch(t.mode){case Y:if(t.wrap===0){t.mode=$;break}for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(2&t.wrap&&n===35615){t.wbits===0&&(t.wbits=15),t.check=0,b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0),n=0,a=0,t.mode=16181;break}if(t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&n)<<8)+(n>>8))%31){e.msg="incorrect header check",t.mode=R;break}if((15&n)!==ht){e.msg="unknown compression method",t.mode=R;break}if(n>>>=4,a-=4,c=8+(15&n),t.wbits===0&&(t.wbits=c),c>15||c>t.wbits){e.msg="invalid window size",t.mode=R;break}t.dmax=1<<t.wbits,t.flags=0,e.adler=t.check=1,t.mode=512&n?16189:D,n=0,a=0;break;case 16181:for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(t.flags=n,(255&t.flags)!==ht){e.msg="unknown compression method",t.mode=R;break}if(57344&t.flags){e.msg="unknown header flags set",t.mode=R;break}t.head&&(t.head.text=n>>8&1),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0,t.mode=16182;case 16182:for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.head&&(t.head.time=n),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,b[2]=n>>>16&255,b[3]=n>>>24&255,t.check=U(t.check,b,4,0)),n=0,a=0,t.mode=16183;case 16183:for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.head&&(t.head.xflags=255&n,t.head.os=n>>8),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0,t.mode=16184;case 16184:if(1024&t.flags){for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.length=n,t.head&&(t.head.extra_len=n),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0}else t.head&&(t.head.extra=null);t.mode=16185;case 16185:if(1024&t.flags&&(d=t.length,d>l&&(d=l),d&&(t.head&&(c=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(o.subarray(r,r+d),c)),512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,t.length-=d),t.length))break t;t.length=0,t.mode=16186;case 16186:if(2048&t.flags){if(l===0)break t;d=0;do c=o[r+d++],t.head&&c&&t.length<65536&&(t.head.name+=String.fromCharCode(c));while(c&&d<l);if(512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,c)break t}else t.head&&(t.head.name=null);t.length=0,t.mode=16187;case 16187:if(4096&t.flags){if(l===0)break t;d=0;do c=o[r+d++],t.head&&c&&t.length<65536&&(t.head.comment+=String.fromCharCode(c));while(c&&d<l);if(512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,c)break t}else t.head&&(t.head.comment=null);t.mode=16188;case 16188:if(512&t.flags){for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(4&t.wrap&&n!==(65535&t.check)){e.msg="header crc mismatch",t.mode=R;break}n=0,a=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=D;break;case 16189:for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}e.adler=t.check=ct(n),n=0,a=0,t.mode=G;case G:if(t.havedict===0)return e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,Ct;e.adler=t.check=1,t.mode=D;case D:if(i===Bt||i===P)break t;case $:if(t.last){n>>>=7&a,a-=7&a,t.mode=et;break}for(;a<3;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}switch(t.last=1&n,n>>>=1,a-=1,3&n){case 0:t.mode=16193;break;case 1:if(Ft(t),t.mode=X,i===P){n>>>=2,a-=2;break t}break;case 2:t.mode=16196;break;case 3:e.msg="invalid block type",t.mode=R}n>>>=2,a-=2;break;case 16193:for(n>>>=7&a,a-=7&a;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if((65535&n)!=(n>>>16^65535)){e.msg="invalid stored block lengths",t.mode=R;break}if(t.length=65535&n,n=0,a=0,t.mode=tt,i===P)break t;case tt:t.mode=16195;case 16195:if(d=t.length,d){if(d>l&&(d=l),d>p&&(d=p),d===0)break t;s.set(o.subarray(r,r+d),h),l-=d,r+=d,p-=d,h+=d,t.length-=d;break}t.mode=D;break;case 16196:for(;a<14;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(t.nlen=257+(31&n),n>>>=5,a-=5,t.ndist=1+(31&n),n>>>=5,a-=5,t.ncode=4+(15&n),n>>>=4,a-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=R;break}t.have=0,t.mode=16197;case 16197:for(;t.have<t.ncode;){for(;a<3;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.lens[H[t.have++]]=7&n,n>>>=3,a-=3}for(;t.have<19;)t.lens[H[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,_={bits:t.lenbits},x=z(0,t.lens,0,19,t.lencode,0,t.work,_),t.lenbits=_.bits,x){e.msg="invalid code lengths set",t.mode=R;break}t.have=0,t.mode=16198;case 16198:for(;t.have<t.nlen+t.ndist;){for(;m=t.lencode[n&(1<<t.lenbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(k<16)n>>>=u,a-=u,t.lens[t.have++]=k;else{if(k===16){for(S=u+2;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(n>>>=u,a-=u,t.have===0){e.msg="invalid bit length repeat",t.mode=R;break}c=t.lens[t.have-1],d=3+(3&n),n>>>=2,a-=2}else if(k===17){for(S=u+3;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=u,a-=u,c=0,d=3+(7&n),n>>>=3,a-=3}else{for(S=u+7;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=u,a-=u,c=0,d=11+(127&n),n>>>=7,a-=7}if(t.have+d>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=R;break}for(;d--;)t.lens[t.have++]=c}}if(t.mode===R)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=R;break}if(t.lenbits=9,_={bits:t.lenbits},x=z(1,t.lens,0,t.nlen,t.lencode,0,t.work,_),t.lenbits=_.bits,x){e.msg="invalid literal/lengths set",t.mode=R;break}if(t.distbits=6,t.distcode=t.distdyn,_={bits:t.distbits},x=z(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,_),t.distbits=_.bits,x){e.msg="invalid distances set",t.mode=R;break}if(t.mode=X,i===P)break t;case X:t.mode=W;case W:if(l>=6&&p>=258){e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,St(e,w),h=e.next_out,s=e.output,p=e.avail_out,r=e.next_in,o=e.input,l=e.avail_in,n=t.hold,a=t.bits,t.mode===D&&(t.back=-1);break}for(t.back=0;m=t.lencode[n&(1<<t.lenbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(y&&(240&y)==0){for(f=u,g=y,E=k;m=t.lencode[E+((n&(1<<f+g)-1)>>f)],u=m>>>24,y=m>>>16&255,k=65535&m,!(f+u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=f,a-=f,t.back+=f}if(n>>>=u,a-=u,t.back+=u,t.length=k,y===0){t.mode=16205;break}if(32&y){t.back=-1,t.mode=D;break}if(64&y){e.msg="invalid literal/length code",t.mode=R;break}t.extra=15&y,t.mode=16201;case 16201:if(t.extra){for(S=t.extra;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.length+=n&(1<<t.extra)-1,n>>>=t.extra,a-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=16202;case 16202:for(;m=t.distcode[n&(1<<t.distbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if((240&y)==0){for(f=u,g=y,E=k;m=t.distcode[E+((n&(1<<f+g)-1)>>f)],u=m>>>24,y=m>>>16&255,k=65535&m,!(f+u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=f,a-=f,t.back+=f}if(n>>>=u,a-=u,t.back+=u,64&y){e.msg="invalid distance code",t.mode=R;break}t.offset=k,t.extra=15&y,t.mode=16203;case 16203:if(t.extra){for(S=t.extra;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.offset+=n&(1<<t.extra)-1,n>>>=t.extra,a-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=R;break}t.mode=16204;case 16204:if(p===0)break t;if(d=w-p,t.offset>d){if(d=t.offset-d,d>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=R;break}d>t.wnext?(d-=t.wnext,Z=t.wsize-d):Z=t.wnext-d,d>t.length&&(d=t.length),v=t.window}else v=s,Z=h-t.offset,d=t.length;d>p&&(d=p),p-=d,t.length-=d;do s[h++]=v[Z++];while(--d);t.length===0&&(t.mode=W);break;case 16205:if(p===0)break t;s[h++]=t.length,p--,t.mode=W;break;case et:if(t.wrap){for(;a<32;){if(l===0)break t;l--,n|=o[r++]<<a,a+=8}if(w-=p,e.total_out+=w,t.total+=w,4&t.wrap&&w&&(e.adler=t.check=t.flags?U(t.check,s,w,h-w):I(t.check,s,w,h-w)),w=p,4&t.wrap&&(t.flags?n:ct(n))!==t.check){e.msg="incorrect data check",t.mode=R;break}n=0,a=0}t.mode=16207;case 16207:if(t.wrap&&t.flags){for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(4&t.wrap&&n!==(4294967295&t.total)){e.msg="incorrect length check",t.mode=R;break}n=0,a=0}t.mode=16208;case 16208:x=It;break t;case R:x=dt;break t;case 16210:return ft;default:return T}return e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,(t.wsize||w!==e.avail_out&&t.mode<R&&(t.mode<et||i!==lt))&&_t(e,e.output,e.next_out,w-e.avail_out),A-=e.avail_in,w-=e.avail_out,e.total_in+=A,e.total_out+=w,t.total+=w,4&t.wrap&&w&&(e.adler=t.check=t.flags?U(t.check,s,w,e.next_out-w):I(t.check,s,w,e.next_out-w)),e.data_type=t.bits+(t.last?64:0)+(t.mode===D?128:0)+(t.mode===X||t.mode===tt?256:0),(A===0&&w===0||i===lt)&&x===C&&(x=Nt),x},inflateEnd:e=>{if(N(e))return T;let i=e.state;return i.window&&(i.window=null),e.state=null,C},inflateGetHeader:(e,i)=>{if(N(e))return T;const t=e.state;return(2&t.wrap)==0?T:(t.head=i,i.done=!1,C)},inflateSetDictionary:(e,i)=>{const t=i.length;let o,s,r;return N(e)?T:(o=e.state,o.wrap!==0&&o.mode!==G?T:o.mode===G&&(s=1,s=I(s,i,t,0),s!==o.check)?dt:(r=_t(e,i,t,t),r?(o.mode=16210,ft):(o.havedict=1,C)))},inflateInfo:"pako inflate (from Nodeca project)"};const Lt=(e,i)=>Object.prototype.hasOwnProperty.call(e,i);var Mt=function(e){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const t=i.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const o in t)Lt(t,o)&&(e[o]=t[o])}}return e},Ht=e=>{let i=0;for(let o=0,s=e.length;o<s;o++)i+=e[o].length;const t=new Uint8Array(i);for(let o=0,s=0,r=e.length;o<r;o++){let h=e[o];t.set(h,s),s+=h.length}return t};let gt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{gt=!1}const F=new Uint8Array(256);for(let e=0;e<256;e++)F[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;F[254]=F[254]=1;var jt=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let i,t,o,s,r,h=e.length,l=0;for(s=0;s<h;s++)t=e.charCodeAt(s),(64512&t)==55296&&s+1<h&&(o=e.charCodeAt(s+1),(64512&o)==56320&&(t=65536+(t-55296<<10)+(o-56320),s++)),l+=t<128?1:t<2048?2:t<65536?3:4;for(i=new Uint8Array(l),r=0,s=0;r<l;s++)t=e.charCodeAt(s),(64512&t)==55296&&s+1<h&&(o=e.charCodeAt(s+1),(64512&o)==56320&&(t=65536+(t-55296<<10)+(o-56320),s++)),t<128?i[r++]=t:t<2048?(i[r++]=192|t>>>6,i[r++]=128|63&t):t<65536?(i[r++]=224|t>>>12,i[r++]=128|t>>>6&63,i[r++]=128|63&t):(i[r++]=240|t>>>18,i[r++]=128|t>>>12&63,i[r++]=128|t>>>6&63,i[r++]=128|63&t);return i},Kt=(e,i)=>{const t=i||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,i));let o,s;const r=new Array(2*t);for(s=0,o=0;o<t;){let h=e[o++];if(h<128){r[s++]=h;continue}let l=F[h];if(l>4)r[s++]=65533,o+=l-1;else{for(h&=l===2?31:l===3?15:7;l>1&&o<t;)h=h<<6|63&e[o++],l--;l>1?r[s++]=65533:h<65536?r[s++]=h:(h-=65536,r[s++]=55296|h>>10&1023,r[s++]=56320|1023&h)}}return((h,l)=>{if(l<65534&&h.subarray&>)return String.fromCharCode.apply(null,h.length===l?h:h.subarray(0,l));let p="";for(let n=0;n<l;n++)p+=String.fromCharCode(h[n]);return p})(r,s)},Pt=(e,i)=>{(i=i||e.length)>e.length&&(i=e.length);let t=i-1;for(;t>=0&&(192&e[t])==128;)t--;return t<0||t===0?i:t+F[e[t]]>i?t:i},at={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Yt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},Gt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const pt=Object.prototype.toString,{Z_NO_FLUSH:Xt,Z_FINISH:Wt,Z_OK:L,Z_STREAM_END:rt,Z_NEED_DICT:ot,Z_STREAM_ERROR:qt,Z_DATA_ERROR:vt,Z_MEM_ERROR:Jt}=V;function M(e){this.options=Mt({chunkSize:65536,windowBits:15,to:""},e||{});const i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),!(i.windowBits>=0&&i.windowBits<16)||e&&e.windowBits||(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(15&i.windowBits)==0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let t=B.inflateInit2(this.strm,i.windowBits);if(t!==L)throw new Error(at[t]);if(this.header=new Gt,B.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=jt(i.dictionary):pt.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(t=B.inflateSetDictionary(this.strm,i.dictionary),t!==L)))throw new Error(at[t])}function st(e,i){const t=new M(i);if(t.push(e),t.err)throw t.msg||at[t.err];return t.result}M.prototype.push=function(e,i){const t=this.strm,o=this.options.chunkSize,s=this.options.dictionary;let r,h,l;if(this.ended)return!1;for(h=i===~~i?i:i===!0?Wt:Xt,pt.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(o),t.next_out=0,t.avail_out=o),r=B.inflate(t,h),r===ot&&s&&(r=B.inflateSetDictionary(t,s),r===L?r=B.inflate(t,h):r===vt&&(r=ot));t.avail_in>0&&r===rt&&t.state.wrap>0&&e[t.next_in]!==0;)B.inflateReset(t),r=B.inflate(t,h);switch(r){case qt:case vt:case ot:case Jt:return this.onEnd(r),this.ended=!0,!1}if(l=t.avail_out,t.next_out&&(t.avail_out===0||r===rt))if(this.options.to==="string"){let p=Pt(t.output,t.next_out),n=t.next_out-p,a=Kt(t.output,p);t.next_out=n,t.avail_out=o-n,n&&t.output.set(t.output.subarray(p,p+n),0),this.onData(a)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(r!==L||l!==0){if(r===rt)return r=B.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(t.avail_in===0)break}}return!0},M.prototype.onData=function(e){this.chunks.push(e)},M.prototype.onEnd=function(e){e===L&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ht(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var xt=M,yt=st,Et=function(e,i){return(i=i||{}).raw=!0,st(e,i)},Rt=st,At=V,Qt={Inflate:xt,inflate:yt,inflateRaw:Et,ungzip:Rt,constants:At};O.Inflate=xt,O.constants=At,O.default=Qt,O.inflate=yt,O.inflateRaw=Et,O.ungzip=Rt,Object.defineProperty(O,"__esModule",{value:!0})}); diff --git a/public/Cesium/ThirdParty/Workers/z-worker-pako.js b/public/Cesium/ThirdParty/Workers/z-worker-pako.js new file mode 100644 index 000000000..86ab5a8c7 --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/z-worker-pako.js @@ -0,0 +1 @@ +(function(){"use strict";const{Array:te,Object:m,Number:ne,Math:I,Error:S,Uint8Array:w,Uint16Array:et,Uint32Array:se,Int32Array:tt,Map:re,DataView:W,Promise:M,TextEncoder:ae,crypto:B,postMessage:K,TransformStream:v,ReadableStream:Ke,WritableStream:Te,CompressionStream:nt,DecompressionStream:st}=self,j=void 0,N="undefined",O="function";class oe{constructor(e){return class extends v{constructor(n,s){const r=new e(s);super({transform(a,o){o.enqueue(r.append(a))},flush(a){const o=r.flush();o&&a.enqueue(o)}})}}}}const ie=[];for(let t=0;256>t;t++){let e=t;for(let n=0;8>n;n++)1&e?e=e>>>1^3988292384:e>>>=1;ie[t]=e}class G{constructor(e){this.crc=e||-1}append(e){let n=0|this.crc;for(let s=0,r=0|e.length;r>s;s++)n=n>>>8^ie[255&(n^e[s])];this.crc=n}get(){return~this.crc}}class ce extends v{constructor(){let e;const n=new G;super({transform(s,r){n.append(s),r.enqueue(s)},flush(){const s=new w(4);new W(s.buffer).setUint32(0,n.get()),e.value=s}}),e=this}}const _={concat(t,e){if(t.length===0||e.length===0)return t.concat(e);const n=t[t.length-1],s=_.getPartial(n);return s===32?t.concat(e):_._shiftRight(e,s,0|n,t.slice(0,t.length-1))},bitLength(t){const e=t.length;if(e===0)return 0;const n=t[e-1];return 32*(e-1)+_.getPartial(n)},clamp(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,I.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=_.partial(e,t[n-1]&2147483648>>e-1,1)),t},partial:(t,e,n)=>t===32?e:(n?0|e:e<<32-t)+1099511627776*t,getPartial:t=>I.round(t/1099511627776)||32,_shiftRight(t,e,n,s){for(s===void 0&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(e===0)return s.concat(t);for(let o=0;o<t.length;o++)s.push(n|t[o]>>>e),n=t[o]<<32-e;const r=t.length?t[t.length-1]:0,a=_.getPartial(r);return s.push(_.partial(e+a&31,e+a>32?n:s.pop(),1)),s}},L={bytes:{fromBits(t){const e=_.bitLength(t)/8,n=new w(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(_.partial(8*(3&n),s)),e}}},Ve=class{constructor(t){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],t?(e._h=t._h.slice(0),e._buffer=t._buffer.slice(0),e._length=t._length):e.reset()}reset(){const t=this;return t._h=t._init.slice(0),t._buffer=[],t._length=0,t}update(t){const e=this;typeof t=="string"&&(t=L.utf8String.toBits(t));const n=e._buffer=_.concat(e._buffer,t),s=e._length,r=e._length=s+_.bitLength(t);if(r>9007199254740991)throw new S("Cannot hash more than 2^53 - 1 bits");const a=new se(n);let o=0;for(let l=e.blockSize+s-(e.blockSize+s&e.blockSize-1);r>=l;l+=e.blockSize)e._block(a.subarray(16*o,16*(o+1))),o+=1;return n.splice(0,16*o),e}finalize(){const t=this;let e=t._buffer;const n=t._h;e=_.concat(e,[_.partial(1,1)]);for(let s=e.length+2;15&s;s++)e.push(0);for(e.push(I.floor(t._length/4294967296)),e.push(0|t._length);e.length;)t._block(e.splice(0,16));return t.reset(),n}_f(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}_S(t,e){return e<<t|e>>>32-t}_block(t){const e=this,n=e._h,s=te(80);for(let c=0;16>c;c++)s[c]=t[c];let r=n[0],a=n[1],o=n[2],l=n[3],h=n[4];for(let c=0;79>=c;c++){16>c||(s[c]=e._S(1,s[c-3]^s[c-8]^s[c-14]^s[c-16]));const i=e._S(5,r)+e._f(c,a,o,l)+h+s[c]+e._key[I.floor(c/20)]|0;h=l,l=o,o=e._S(30,a),a=r,r=i}n[0]=n[0]+r|0,n[1]=n[1]+a|0,n[2]=n[2]+o|0,n[3]=n[3]+l|0,n[4]=n[4]+h|0}},xe={getRandomValues(t){const e=new se(t.buffer),n=s=>{let r=987654321;const a=4294967295;return()=>(r=36969*(65535&r)+(r>>16)&a,(((r<<16)+(s=18e3*(65535&s)+(s>>16)&a)&a)/4294967296+.5)*(I.random()>.5?1:-1))};for(let s,r=0;r<t.length;r+=4){const a=n(4294967296*(s||I.random()));s=987654071*a(),e[r/4]=4294967296*a()|0}return t}},H={importKey:t=>new H.hmacSha1(L.bytes.toBits(t)),pbkdf2(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new S("invalid params to pbkdf2");const r=1+(s>>5)<<2;let a,o,l,h,c;const i=new ArrayBuffer(r),u=new W(i);let p=0;const f=_;for(e=L.bytes.toBits(e),c=1;(r||1)>p;c++){for(a=o=t.encrypt(f.concat(e,[c])),l=1;n>l;l++)for(o=t.encrypt(o),h=0;h<o.length;h++)a[h]^=o[h];for(l=0;(r||1)>p&&l<a.length;l++)u.setInt32(p,a[l]),p+=4}return i.slice(0,s/8)},hmacSha1:class{constructor(t){const e=this,n=e._hash=Ve,s=[[],[]];e._baseHash=[new n,new n];const r=e._baseHash[0].blockSize/32;t.length>r&&(t=new n().update(t).finalize());for(let a=0;r>a;a++)s[0][a]=909522486^t[a],s[1][a]=1549556828^t[a];e._baseHash[0].update(s[0]),e._baseHash[1].update(s[1]),e._resultHash=new n(e._baseHash[0])}reset(){const t=this;t._resultHash=new t._hash(t._baseHash[0]),t._updated=!1}update(t){this._updated=!0,this._resultHash.update(t)}digest(){const t=this,e=t._resultHash.finalize(),n=new t._hash(t._baseHash[1]).update(e).finalize();return t.reset(),n}encrypt(t){if(this._updated)throw new S("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},Ee=typeof B!=N&&typeof B.getRandomValues==O,le="Invalid password",ue="Invalid signature",he="zipjs-abort-check-password";function pe(t){return Ee?B.getRandomValues(t):xe.getRandomValues(t)}const P=16,fe={name:"PBKDF2"},Ue=m.assign({hash:{name:"HMAC"}},fe),X=m.assign({iterations:1e3,hash:{name:"SHA-1"}},fe),We=["deriveBits"],T=[8,12,16],V=[16,24,32],A=10,Me=[0,0,0,0],F=typeof B!=N,x=F&&B.subtle,de=F&&typeof x!=N,z=L.bytes,Ne=class{constructor(t){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const n=e._tables[0][4],s=e._tables[1],r=t.length;let a,o,l,h=1;if(r!==4&&r!==6&&r!==8)throw new S("invalid aes key size");for(e._key=[o=t.slice(0),l=[]],a=r;4*r+28>a;a++){let c=o[a-1];(a%r===0||r===8&&a%r===4)&&(c=n[c>>>24]<<24^n[c>>16&255]<<16^n[c>>8&255]<<8^n[255&c],a%r===0&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7))),o[a]=o[a-r]^c}for(let c=0;a;c++,a--){const i=o[3&c?a:a-4];l[c]=4>=a||4>c?i:s[0][n[i>>>24]]^s[1][n[i>>16&255]]^s[2][n[i>>8&255]]^s[3][n[255&i]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){const t=this._tables[0],e=this._tables[1],n=t[4],s=e[4],r=[],a=[];let o,l,h,c;for(let i=0;256>i;i++)a[(r[i]=i<<1^283*(i>>7))^i]=i;for(let i=o=0;!n[i];i^=l||1,o=a[o]||1){let u=o^o<<1^o<<2^o<<3^o<<4;u=u>>8^255&u^99,n[i]=u,s[u]=i,c=r[h=r[l=r[i]]];let p=16843009*c^65537*h^257*l^16843008*i,f=257*r[u]^16843008*u;for(let d=0;4>d;d++)t[d][i]=f=f<<24^f>>>8,e[d][u]=p=p<<24^p>>>8}for(let i=0;5>i;i++)t[i]=t[i].slice(0),e[i]=e[i].slice(0)}_crypt(t,e){if(t.length!==4)throw new S("invalid aes block size");const n=this._key[e],s=n.length/4-2,r=[0,0,0,0],a=this._tables[e],o=a[0],l=a[1],h=a[2],c=a[3],i=a[4];let u,p,f,d=t[0]^n[0],g=t[e?3:1]^n[1],y=t[2]^n[2],b=t[e?1:3]^n[3],C=4;for(let D=0;s>D;D++)u=o[d>>>24]^l[g>>16&255]^h[y>>8&255]^c[255&b]^n[C],p=o[g>>>24]^l[y>>16&255]^h[b>>8&255]^c[255&d]^n[C+1],f=o[y>>>24]^l[b>>16&255]^h[d>>8&255]^c[255&g]^n[C+2],b=o[b>>>24]^l[d>>16&255]^h[g>>8&255]^c[255&y]^n[C+3],C+=4,d=u,g=p,y=f;for(let D=0;4>D;D++)r[e?3&-D:D]=i[d>>>24]<<24^i[g>>16&255]<<16^i[y>>8&255]<<8^i[255&b]^n[C++],u=d,d=g,g=y,y=b,b=u;return r}},Oe=class{constructor(t,e){this._prf=t,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(t){return this.calculate(this._prf,t,this._iv)}incWord(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;e===255?(e=0,n===255?(n=0,s===255?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}incCounter(t){(t[0]=this.incWord(t[0]))===0&&(t[1]=this.incWord(t[1]))}calculate(t,e,n){let s;if(!(s=e.length))return[];const r=_.bitLength(e);for(let a=0;s>a;a+=4){this.incCounter(n);const o=t.encrypt(n);e[a]^=o[0],e[a+1]^=o[1],e[a+2]^=o[2],e[a+3]^=o[3]}return _.clamp(e,r)}},Le=H.hmacSha1;let ge=F&&de&&typeof x.importKey==O,we=F&&de&&typeof x.deriveBits==O;class Fe extends v{constructor({password:e,rawPassword:n,signed:s,encryptionStrength:r,checkPasswordOnly:a}){super({start(){m.assign(this,{ready:new M(o=>this.resolveReady=o),password:_e(e,n),signed:s,strength:r-1,pending:new w})},async transform(o,l){const h=this,{password:c,strength:i,resolveReady:u,ready:p}=h;c?(await(async(d,g,y,b)=>{const C=await me(d,g,y,k(b,0,T[g])),D=k(b,T[g]);if(C[0]!=D[0]||C[1]!=D[1])throw new S(le)})(h,i,c,k(o,0,T[i]+2)),o=k(o,T[i]+2),a?l.error(new S(he)):u()):await p;const f=new w(o.length-A-(o.length-A)%P);l.enqueue(ye(h,o,f,0,A,!0))},async flush(o){const{signed:l,ctr:h,hmac:c,pending:i,ready:u}=this;if(c&&h){await u;const p=k(i,0,i.length-A),f=k(i,i.length-A);let d=new w;if(p.length){const g=U(z,p);c.update(g);const y=h.update(g);d=E(z,y)}if(l){const g=k(E(z,c.digest()),0,A);for(let y=0;A>y;y++)if(g[y]!=f[y])throw new S(ue)}o.enqueue(d)}}})}}class je extends v{constructor({password:e,rawPassword:n,encryptionStrength:s}){let r;super({start(){m.assign(this,{ready:new M(a=>this.resolveReady=a),password:_e(e,n),strength:s-1,pending:new w})},async transform(a,o){const l=this,{password:h,strength:c,resolveReady:i,ready:u}=l;let p=new w;h?(p=await(async(d,g,y)=>{const b=pe(new w(T[g]));return J(b,await me(d,g,y,b))})(l,c,h),i()):await u;const f=new w(p.length+a.length-a.length%P);f.set(p,0),o.enqueue(ye(l,a,f,p.length,0))},async flush(a){const{ctr:o,hmac:l,pending:h,ready:c}=this;if(l&&o){await c;let i=new w;if(h.length){const u=o.update(U(z,h));l.update(u),i=E(z,u)}r.signature=E(z,l.digest()).slice(0,A),a.enqueue(J(i,r.signature))}}}),r=this}}function ye(t,e,n,s,r,a){const{ctr:o,hmac:l,pending:h}=t,c=e.length-r;let i;for(h.length&&(e=J(h,e),n=((u,p)=>{if(p&&p>u.length){const f=u;(u=new w(p)).set(f,0)}return u})(n,c-c%P)),i=0;c-P>=i;i+=P){const u=U(z,k(e,i,i+P));a&&l.update(u);const p=o.update(u);a||l.update(p),n.set(E(z,p),i+s)}return t.pending=k(e,i),n}async function me(t,e,n,s){t.password=null;const r=await(async(i,u,p,f,d)=>{if(!ge)return H.importKey(u);try{return await x.importKey("raw",u,p,!1,d)}catch{return ge=!1,H.importKey(u)}})(0,n,Ue,0,We),a=await(async(i,u,p)=>{if(!we)return H.pbkdf2(u,i.salt,X.iterations,p);try{return await x.deriveBits(i,u,p)}catch{return we=!1,H.pbkdf2(u,i.salt,X.iterations,p)}})(m.assign({salt:s},X),r,8*(2*V[e]+2)),o=new w(a),l=U(z,k(o,0,V[e])),h=U(z,k(o,V[e],2*V[e])),c=k(o,2*V[e]);return m.assign(t,{keys:{key:l,authentication:h,passwordVerification:c},ctr:new Oe(new Ne(l),te.from(Me)),hmac:new Le(h)}),c}function _e(t,e){return e===j?(n=>{if(typeof ae==N){const s=new w((n=unescape(encodeURIComponent(n))).length);for(let r=0;r<s.length;r++)s[r]=n.charCodeAt(r);return s}return new ae().encode(n)})(t):e}function J(t,e){let n=t;return t.length+e.length&&(n=new w(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function k(t,e,n){return t.subarray(e,n)}function E(t,e){return t.fromBits(e)}function U(t,e){return t.toBits(e)}class Ge extends v{constructor({password:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){m.assign(this,{password:e,passwordVerification:n}),ve(this,e)},transform(r,a){const o=this;if(o.password){const l=be(o,r.subarray(0,12));if(o.password=null,l[11]!=o.passwordVerification)throw new S(le);r=r.subarray(12)}s?a.error(new S(he)):a.enqueue(be(o,r))}})}}class Xe extends v{constructor({password:e,passwordVerification:n}){super({start(){m.assign(this,{password:e,passwordVerification:n}),ve(this,e)},transform(s,r){const a=this;let o,l;if(a.password){a.password=null;const h=pe(new w(12));h[11]=a.passwordVerification,o=new w(s.length+h.length),o.set(Se(a,h),0),l=12}else o=new w(s.length),l=0;o.set(Se(a,s),l),r.enqueue(o)}})}}function be(t,e){const n=new w(e.length);for(let s=0;s<e.length;s++)n[s]=ke(t)^e[s],Q(t,n[s]);return n}function Se(t,e){const n=new w(e.length);for(let s=0;s<e.length;s++)n[s]=ke(t)^e[s],Q(t,e[s]);return n}function ve(t,e){const n=[305419896,591751049,878082192];m.assign(t,{keys:n,crcKey0:new G(n[0]),crcKey2:new G(n[2])});for(let s=0;s<e.length;s++)Q(t,e.charCodeAt(s))}function Q(t,e){let[n,s,r]=t.keys;t.crcKey0.append([e]),n=~t.crcKey0.get(),s=De(I.imul(De(s+ze(n)),134775813)+1),t.crcKey2.append([s>>>24]),r=~t.crcKey2.get(),t.keys=[n,s,r]}function ke(t){const e=2|t.keys[2];return ze(I.imul(e,1^e)>>>8)}function ze(t){return 255&t}function De(t){return 4294967295&t}class Je extends v{constructor(e,{chunkSize:n,CompressionStream:s,CompressionStreamNative:r}){super({});const{compressed:a,encrypted:o,useCompressionStream:l,zipCrypto:h,signed:c,level:i}=e,u=this;let p,f,d=super.readable;o&&!h||!c||(p=new ce,d=q(d,p)),a&&(d=Ie(d,l,{level:i,chunkSize:n},r,s)),o&&(h?d=q(d,new Xe(e)):(f=new je(e),d=q(d,f))),Ce(u,d,()=>{let g;o&&!h&&(g=f.signature),o&&!h||!c||(g=new W(p.value.buffer).getUint32(0)),u.signature=g})}}class Qe extends v{constructor(e,{chunkSize:n,DecompressionStream:s,DecompressionStreamNative:r}){super({});const{zipCrypto:a,encrypted:o,signed:l,signature:h,compressed:c,useCompressionStream:i}=e;let u,p,f=super.readable;o&&(a?f=q(f,new Ge(e)):(p=new Fe(e),f=q(f,p))),c&&(f=Ie(f,i,{chunkSize:n},r,s)),o&&!a||!l||(u=new ce,f=q(f,u)),Ce(this,f,()=>{if((!o||a)&&l){const d=new W(u.value.buffer);if(h!=d.getUint32(0,!1))throw new S(ue)}})}}function Ce(t,e,n){e=q(e,new v({flush:n})),m.defineProperty(t,"readable",{get:()=>e})}function Ie(t,e,n,s,r){return q(t,new(e&&s?s:r)("deflate-raw",n))}function q(t,e){return t.pipeThrough(e)}const Ae="data",qe="close";class Ye extends v{constructor(e,n){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=Je:r.startsWith("inflate")&&(a=Qe),s.outputSize=0;let o=0;const l=new a(e,n),h=super.readable,c=new v({transform(u,p){u&&u.length&&(o+=u.length,p.enqueue(u))},flush(){m.assign(s,{inputSize:o})}}),i=new v({transform(u,p){if(u&&u.length&&(p.enqueue(u),s.outputSize+=u.length,e.outputSize&&s.outputSize>e.outputSize))throw new S("Invalid uncompressed size")},flush(){const{signature:u}=l;m.assign(s,{signature:u,inputSize:o})}});m.defineProperty(s,"readable",{get:()=>h.pipeThrough(c).pipeThrough(l).pipeThrough(i)})}}class Ze extends v{constructor(e){let n;super({transform:function s(r,a){if(n){const o=new w(n.length+r.length);o.set(n),o.set(r,n.length),r=o,n=null}r.length>e?(a.enqueue(r.slice(0,e)),s(r.slice(e),a)):n=r},flush(s){n&&n.length&&s.enqueue(n)}})}}const Y=new re,Z=new re;let $,R=0,Re=!0;async function $e(t){try{const{options:e,scripts:n,config:s}=t;if(n&&n.length)try{Re?importScripts.apply(j,n):await He(n)}catch{Re=!1,await He(n)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new oe(self.Deflate)),self.Inflate&&(s.DecompressionStream=new oe(self.Inflate));const r={highWaterMark:1},a=t.readable||new Ke({async pull(p){const f=new M(y=>Y.set(R,y));ee({type:"pull",messageId:R}),R=(R+1)%ne.MAX_SAFE_INTEGER;const{value:d,done:g}=await f;p.enqueue(d),g&&p.close()}},r),o=t.writable||new Te({async write(p){let f;const d=new M(g=>f=g);Z.set(R,f),ee({type:Ae,value:p,messageId:R}),R=(R+1)%ne.MAX_SAFE_INTEGER,await d}},r),l=new Ye(e,s);$=new AbortController;const{signal:h}=$;await a.pipeThrough(l).pipeThrough(new Ze(s.chunkSize)).pipeTo(o,{signal:h,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:c,inputSize:i,outputSize:u}=l;ee({type:qe,result:{signature:c,inputSize:i,outputSize:u}})}catch(e){e.outputSize=0,Pe(e)}}async function He(t){for(const e of t)await import(e)}function ee(t){let{value:e}=t;if(e)if(e.length)try{e=new w(e),t.value=e.buffer,K(t,[t.value])}catch{K(t)}else K(t);else K(t)}function Pe(t=new S("Unknown error")){const{message:e,stack:n,code:s,name:r,outputSize:a}=t;K({error:{message:e,stack:n,code:s,name:r,outputSize:a}})}function Be(t,e,n){return class{constructor(r){const a=this;var o,l;o=r,l="level",(typeof m.hasOwn===O?m.hasOwn(o,l):o.hasOwnProperty(l))&&r.level===j&&delete r.level,a.codec=new t(m.assign({},e,r)),n(a.codec,h=>{if(a.pendingData){const c=a.pendingData;a.pendingData=new w(c.length+h.length);const{pendingData:i}=a;i.set(c,0),i.set(h,c.length)}else a.pendingData=new w(h)})}append(r){return this.codec.push(r),s(this)}flush(){return this.codec.push(new w,!0),s(this)}};function s(r){if(r.pendingData){const a=r.pendingData;return r.pendingData=null,a}return new w}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if(e=="start"&&$e(t),e==Ae){const a=Y.get(n);Y.delete(n),a({value:new w(s),done:r})}if(e=="ack"){const a=Z.get(n);Z.delete(n),a()}e==qe&&$.abort()}catch(a){Pe(a)}}),self.initCodec=()=>{const{Deflate:t,Inflate:e}=((n,s={},r)=>({Deflate:Be(n.Deflate,s.deflate,r),Inflate:Be(n.Inflate,s.inflate,r)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},(n,s)=>n.onData=s);self.Deflate=t,self.Inflate=e}})(); diff --git a/public/Cesium/ThirdParty/basis_transcoder.wasm b/public/Cesium/ThirdParty/basis_transcoder.wasm new file mode 100644 index 000000000..71328587d Binary files /dev/null and b/public/Cesium/ThirdParty/basis_transcoder.wasm differ diff --git a/public/Cesium/ThirdParty/draco_decoder.wasm b/public/Cesium/ThirdParty/draco_decoder.wasm new file mode 100644 index 000000000..4138f5590 Binary files /dev/null and b/public/Cesium/ThirdParty/draco_decoder.wasm differ diff --git a/public/Cesium/ThirdParty/google-earth-dbroot-parser.js b/public/Cesium/ThirdParty/google-earth-dbroot-parser.js new file mode 100644 index 000000000..648bf66db --- /dev/null +++ b/public/Cesium/ThirdParty/google-earth-dbroot-parser.js @@ -0,0 +1 @@ +(()=>{window.cesiumGoogleEarthDbRootParser=function(d){"use strict";var f=d.Reader,u=d.util,n=d.roots.default||(d.roots.default={});return n.keyhole=function(){var b={};return b.dbroot=function(){var c={};return c.StringEntryProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.stringId=0,i.prototype.stringValue="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StringEntryProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.stringId=r.fixed32();break}case 2:{o.stringValue=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("stringId"))throw u.ProtocolError("missing required 'stringId'",{instance:o});if(!o.hasOwnProperty("stringValue"))throw u.ProtocolError("missing required 'stringValue'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.stringId)?u.isString(r.stringValue)?null:"stringValue: string expected":"stringId: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StringEntryProto)return r;var t=new n.keyhole.dbroot.StringEntryProto;return r.stringId!=null&&(t.stringId=r.stringId>>>0),r.stringValue!=null&&(t.stringValue=String(r.stringValue)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.stringId=0,e.stringValue=""),r.stringId!=null&&r.hasOwnProperty("stringId")&&(e.stringId=r.stringId),r.stringValue!=null&&r.hasOwnProperty("stringValue")&&(e.stringValue=r.stringValue),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StringEntryProto"},i}(),c.StringIdOrValueProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.stringId=0,i.prototype.value="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StringIdOrValueProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.stringId=r.fixed32();break}case 2:{o.value=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.stringId!=null&&r.hasOwnProperty("stringId")&&!u.isInteger(r.stringId)?"stringId: integer expected":r.value!=null&&r.hasOwnProperty("value")&&!u.isString(r.value)?"value: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StringIdOrValueProto)return r;var t=new n.keyhole.dbroot.StringIdOrValueProto;return r.stringId!=null&&(t.stringId=r.stringId>>>0),r.value!=null&&(t.value=String(r.value)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.stringId=0,e.value=""),r.stringId!=null&&r.hasOwnProperty("stringId")&&(e.stringId=r.stringId),r.value!=null&&r.hasOwnProperty("value")&&(e.value=r.value),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StringIdOrValueProto"},i}(),c.PlanetModelProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.radius=6378.137,i.prototype.flattening=.00335281066474748,i.prototype.elevationBias=0,i.prototype.negativeAltitudeExponentBias=0,i.prototype.compressedNegativeAltitudeThreshold=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PlanetModelProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.radius=r.double();break}case 2:{o.flattening=r.double();break}case 4:{o.elevationBias=r.double();break}case 5:{o.negativeAltitudeExponentBias=r.int32();break}case 6:{o.compressedNegativeAltitudeThreshold=r.double();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.radius!=null&&r.hasOwnProperty("radius")&&typeof r.radius!="number"?"radius: number expected":r.flattening!=null&&r.hasOwnProperty("flattening")&&typeof r.flattening!="number"?"flattening: number expected":r.elevationBias!=null&&r.hasOwnProperty("elevationBias")&&typeof r.elevationBias!="number"?"elevationBias: number expected":r.negativeAltitudeExponentBias!=null&&r.hasOwnProperty("negativeAltitudeExponentBias")&&!u.isInteger(r.negativeAltitudeExponentBias)?"negativeAltitudeExponentBias: integer expected":r.compressedNegativeAltitudeThreshold!=null&&r.hasOwnProperty("compressedNegativeAltitudeThreshold")&&typeof r.compressedNegativeAltitudeThreshold!="number"?"compressedNegativeAltitudeThreshold: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PlanetModelProto)return r;var t=new n.keyhole.dbroot.PlanetModelProto;return r.radius!=null&&(t.radius=Number(r.radius)),r.flattening!=null&&(t.flattening=Number(r.flattening)),r.elevationBias!=null&&(t.elevationBias=Number(r.elevationBias)),r.negativeAltitudeExponentBias!=null&&(t.negativeAltitudeExponentBias=r.negativeAltitudeExponentBias|0),r.compressedNegativeAltitudeThreshold!=null&&(t.compressedNegativeAltitudeThreshold=Number(r.compressedNegativeAltitudeThreshold)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.radius=6378.137,e.flattening=.00335281066474748,e.elevationBias=0,e.negativeAltitudeExponentBias=0,e.compressedNegativeAltitudeThreshold=0),r.radius!=null&&r.hasOwnProperty("radius")&&(e.radius=t.json&&!isFinite(r.radius)?String(r.radius):r.radius),r.flattening!=null&&r.hasOwnProperty("flattening")&&(e.flattening=t.json&&!isFinite(r.flattening)?String(r.flattening):r.flattening),r.elevationBias!=null&&r.hasOwnProperty("elevationBias")&&(e.elevationBias=t.json&&!isFinite(r.elevationBias)?String(r.elevationBias):r.elevationBias),r.negativeAltitudeExponentBias!=null&&r.hasOwnProperty("negativeAltitudeExponentBias")&&(e.negativeAltitudeExponentBias=r.negativeAltitudeExponentBias),r.compressedNegativeAltitudeThreshold!=null&&r.hasOwnProperty("compressedNegativeAltitudeThreshold")&&(e.compressedNegativeAltitudeThreshold=t.json&&!isFinite(r.compressedNegativeAltitudeThreshold)?String(r.compressedNegativeAltitudeThreshold):r.compressedNegativeAltitudeThreshold),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PlanetModelProto"},i}(),c.ProviderInfoProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.providerId=0,i.prototype.copyrightString=null,i.prototype.verticalPixelOffset=-1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ProviderInfoProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.providerId=r.int32();break}case 2:{o.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.verticalPixelOffset=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("providerId"))throw u.ProtocolError("missing required 'providerId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isInteger(r.providerId))return"providerId: integer expected";if(r.copyrightString!=null&&r.hasOwnProperty("copyrightString")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.copyrightString);if(t)return"copyrightString."+t}return r.verticalPixelOffset!=null&&r.hasOwnProperty("verticalPixelOffset")&&!u.isInteger(r.verticalPixelOffset)?"verticalPixelOffset: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ProviderInfoProto)return r;var t=new n.keyhole.dbroot.ProviderInfoProto;if(r.providerId!=null&&(t.providerId=r.providerId|0),r.copyrightString!=null){if(typeof r.copyrightString!="object")throw TypeError(".keyhole.dbroot.ProviderInfoProto.copyrightString: object expected");t.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.copyrightString)}return r.verticalPixelOffset!=null&&(t.verticalPixelOffset=r.verticalPixelOffset|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.providerId=0,e.copyrightString=null,e.verticalPixelOffset=-1),r.providerId!=null&&r.hasOwnProperty("providerId")&&(e.providerId=r.providerId),r.copyrightString!=null&&r.hasOwnProperty("copyrightString")&&(e.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.copyrightString,t)),r.verticalPixelOffset!=null&&r.hasOwnProperty("verticalPixelOffset")&&(e.verticalPixelOffset=r.verticalPixelOffset),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ProviderInfoProto"},i}(),c.PopUpProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isBalloonStyle=!1,i.prototype.text=null,i.prototype.backgroundColorAbgr=4294967295,i.prototype.textColorAbgr=4278190080,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PopUpProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isBalloonStyle=r.bool();break}case 2:{o.text=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.backgroundColorAbgr=r.fixed32();break}case 4:{o.textColorAbgr=r.fixed32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.isBalloonStyle!=null&&r.hasOwnProperty("isBalloonStyle")&&typeof r.isBalloonStyle!="boolean")return"isBalloonStyle: boolean expected";if(r.text!=null&&r.hasOwnProperty("text")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.text);if(t)return"text."+t}return r.backgroundColorAbgr!=null&&r.hasOwnProperty("backgroundColorAbgr")&&!u.isInteger(r.backgroundColorAbgr)?"backgroundColorAbgr: integer expected":r.textColorAbgr!=null&&r.hasOwnProperty("textColorAbgr")&&!u.isInteger(r.textColorAbgr)?"textColorAbgr: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PopUpProto)return r;var t=new n.keyhole.dbroot.PopUpProto;if(r.isBalloonStyle!=null&&(t.isBalloonStyle=!!r.isBalloonStyle),r.text!=null){if(typeof r.text!="object")throw TypeError(".keyhole.dbroot.PopUpProto.text: object expected");t.text=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.text)}return r.backgroundColorAbgr!=null&&(t.backgroundColorAbgr=r.backgroundColorAbgr>>>0),r.textColorAbgr!=null&&(t.textColorAbgr=r.textColorAbgr>>>0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isBalloonStyle=!1,e.text=null,e.backgroundColorAbgr=4294967295,e.textColorAbgr=4278190080),r.isBalloonStyle!=null&&r.hasOwnProperty("isBalloonStyle")&&(e.isBalloonStyle=r.isBalloonStyle),r.text!=null&&r.hasOwnProperty("text")&&(e.text=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.text,t)),r.backgroundColorAbgr!=null&&r.hasOwnProperty("backgroundColorAbgr")&&(e.backgroundColorAbgr=r.backgroundColorAbgr),r.textColorAbgr!=null&&r.hasOwnProperty("textColorAbgr")&&(e.textColorAbgr=r.textColorAbgr),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PopUpProto"},i}(),c.StyleAttributeProto=function(){function i(l){if(this.drawFlag=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.styleId="",i.prototype.providerId=0,i.prototype.polyColorAbgr=4294967295,i.prototype.lineColorAbgr=4294967295,i.prototype.lineWidth=1,i.prototype.labelColorAbgr=4294967295,i.prototype.labelScale=1,i.prototype.placemarkIconColorAbgr=4294967295,i.prototype.placemarkIconScale=1,i.prototype.placemarkIconPath=null,i.prototype.placemarkIconX=0,i.prototype.placemarkIconY=0,i.prototype.placemarkIconWidth=32,i.prototype.placemarkIconHeight=32,i.prototype.popUp=null,i.prototype.drawFlag=u.emptyArray,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StyleAttributeProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.styleId=r.string();break}case 3:{o.providerId=r.int32();break}case 4:{o.polyColorAbgr=r.fixed32();break}case 5:{o.lineColorAbgr=r.fixed32();break}case 6:{o.lineWidth=r.float();break}case 7:{o.labelColorAbgr=r.fixed32();break}case 8:{o.labelScale=r.float();break}case 9:{o.placemarkIconColorAbgr=r.fixed32();break}case 10:{o.placemarkIconScale=r.float();break}case 11:{o.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 12:{o.placemarkIconX=r.int32();break}case 13:{o.placemarkIconY=r.int32();break}case 14:{o.placemarkIconWidth=r.int32();break}case 15:{o.placemarkIconHeight=r.int32();break}case 16:{o.popUp=n.keyhole.dbroot.PopUpProto.decode(r,r.uint32());break}case 17:{o.drawFlag&&o.drawFlag.length||(o.drawFlag=[]),o.drawFlag.push(n.keyhole.dbroot.DrawFlagProto.decode(r,r.uint32()));break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("styleId"))throw u.ProtocolError("missing required 'styleId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.styleId))return"styleId: string expected";if(r.providerId!=null&&r.hasOwnProperty("providerId")&&!u.isInteger(r.providerId))return"providerId: integer expected";if(r.polyColorAbgr!=null&&r.hasOwnProperty("polyColorAbgr")&&!u.isInteger(r.polyColorAbgr))return"polyColorAbgr: integer expected";if(r.lineColorAbgr!=null&&r.hasOwnProperty("lineColorAbgr")&&!u.isInteger(r.lineColorAbgr))return"lineColorAbgr: integer expected";if(r.lineWidth!=null&&r.hasOwnProperty("lineWidth")&&typeof r.lineWidth!="number")return"lineWidth: number expected";if(r.labelColorAbgr!=null&&r.hasOwnProperty("labelColorAbgr")&&!u.isInteger(r.labelColorAbgr))return"labelColorAbgr: integer expected";if(r.labelScale!=null&&r.hasOwnProperty("labelScale")&&typeof r.labelScale!="number")return"labelScale: number expected";if(r.placemarkIconColorAbgr!=null&&r.hasOwnProperty("placemarkIconColorAbgr")&&!u.isInteger(r.placemarkIconColorAbgr))return"placemarkIconColorAbgr: integer expected";if(r.placemarkIconScale!=null&&r.hasOwnProperty("placemarkIconScale")&&typeof r.placemarkIconScale!="number")return"placemarkIconScale: number expected";if(r.placemarkIconPath!=null&&r.hasOwnProperty("placemarkIconPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.placemarkIconPath);if(t)return"placemarkIconPath."+t}if(r.placemarkIconX!=null&&r.hasOwnProperty("placemarkIconX")&&!u.isInteger(r.placemarkIconX))return"placemarkIconX: integer expected";if(r.placemarkIconY!=null&&r.hasOwnProperty("placemarkIconY")&&!u.isInteger(r.placemarkIconY))return"placemarkIconY: integer expected";if(r.placemarkIconWidth!=null&&r.hasOwnProperty("placemarkIconWidth")&&!u.isInteger(r.placemarkIconWidth))return"placemarkIconWidth: integer expected";if(r.placemarkIconHeight!=null&&r.hasOwnProperty("placemarkIconHeight")&&!u.isInteger(r.placemarkIconHeight))return"placemarkIconHeight: integer expected";if(r.popUp!=null&&r.hasOwnProperty("popUp")){var t=n.keyhole.dbroot.PopUpProto.verify(r.popUp);if(t)return"popUp."+t}if(r.drawFlag!=null&&r.hasOwnProperty("drawFlag")){if(!Array.isArray(r.drawFlag))return"drawFlag: array expected";for(var e=0;e<r.drawFlag.length;++e){var t=n.keyhole.dbroot.DrawFlagProto.verify(r.drawFlag[e]);if(t)return"drawFlag."+t}}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StyleAttributeProto)return r;var t=new n.keyhole.dbroot.StyleAttributeProto;if(r.styleId!=null&&(t.styleId=String(r.styleId)),r.providerId!=null&&(t.providerId=r.providerId|0),r.polyColorAbgr!=null&&(t.polyColorAbgr=r.polyColorAbgr>>>0),r.lineColorAbgr!=null&&(t.lineColorAbgr=r.lineColorAbgr>>>0),r.lineWidth!=null&&(t.lineWidth=Number(r.lineWidth)),r.labelColorAbgr!=null&&(t.labelColorAbgr=r.labelColorAbgr>>>0),r.labelScale!=null&&(t.labelScale=Number(r.labelScale)),r.placemarkIconColorAbgr!=null&&(t.placemarkIconColorAbgr=r.placemarkIconColorAbgr>>>0),r.placemarkIconScale!=null&&(t.placemarkIconScale=Number(r.placemarkIconScale)),r.placemarkIconPath!=null){if(typeof r.placemarkIconPath!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.placemarkIconPath: object expected");t.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.placemarkIconPath)}if(r.placemarkIconX!=null&&(t.placemarkIconX=r.placemarkIconX|0),r.placemarkIconY!=null&&(t.placemarkIconY=r.placemarkIconY|0),r.placemarkIconWidth!=null&&(t.placemarkIconWidth=r.placemarkIconWidth|0),r.placemarkIconHeight!=null&&(t.placemarkIconHeight=r.placemarkIconHeight|0),r.popUp!=null){if(typeof r.popUp!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.popUp: object expected");t.popUp=n.keyhole.dbroot.PopUpProto.fromObject(r.popUp)}if(r.drawFlag){if(!Array.isArray(r.drawFlag))throw TypeError(".keyhole.dbroot.StyleAttributeProto.drawFlag: array expected");t.drawFlag=[];for(var e=0;e<r.drawFlag.length;++e){if(typeof r.drawFlag[e]!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.drawFlag: object expected");t.drawFlag[e]=n.keyhole.dbroot.DrawFlagProto.fromObject(r.drawFlag[e])}}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.drawFlag=[]),t.defaults&&(e.styleId="",e.providerId=0,e.polyColorAbgr=4294967295,e.lineColorAbgr=4294967295,e.lineWidth=1,e.labelColorAbgr=4294967295,e.labelScale=1,e.placemarkIconColorAbgr=4294967295,e.placemarkIconScale=1,e.placemarkIconPath=null,e.placemarkIconX=0,e.placemarkIconY=0,e.placemarkIconWidth=32,e.placemarkIconHeight=32,e.popUp=null),r.styleId!=null&&r.hasOwnProperty("styleId")&&(e.styleId=r.styleId),r.providerId!=null&&r.hasOwnProperty("providerId")&&(e.providerId=r.providerId),r.polyColorAbgr!=null&&r.hasOwnProperty("polyColorAbgr")&&(e.polyColorAbgr=r.polyColorAbgr),r.lineColorAbgr!=null&&r.hasOwnProperty("lineColorAbgr")&&(e.lineColorAbgr=r.lineColorAbgr),r.lineWidth!=null&&r.hasOwnProperty("lineWidth")&&(e.lineWidth=t.json&&!isFinite(r.lineWidth)?String(r.lineWidth):r.lineWidth),r.labelColorAbgr!=null&&r.hasOwnProperty("labelColorAbgr")&&(e.labelColorAbgr=r.labelColorAbgr),r.labelScale!=null&&r.hasOwnProperty("labelScale")&&(e.labelScale=t.json&&!isFinite(r.labelScale)?String(r.labelScale):r.labelScale),r.placemarkIconColorAbgr!=null&&r.hasOwnProperty("placemarkIconColorAbgr")&&(e.placemarkIconColorAbgr=r.placemarkIconColorAbgr),r.placemarkIconScale!=null&&r.hasOwnProperty("placemarkIconScale")&&(e.placemarkIconScale=t.json&&!isFinite(r.placemarkIconScale)?String(r.placemarkIconScale):r.placemarkIconScale),r.placemarkIconPath!=null&&r.hasOwnProperty("placemarkIconPath")&&(e.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.placemarkIconPath,t)),r.placemarkIconX!=null&&r.hasOwnProperty("placemarkIconX")&&(e.placemarkIconX=r.placemarkIconX),r.placemarkIconY!=null&&r.hasOwnProperty("placemarkIconY")&&(e.placemarkIconY=r.placemarkIconY),r.placemarkIconWidth!=null&&r.hasOwnProperty("placemarkIconWidth")&&(e.placemarkIconWidth=r.placemarkIconWidth),r.placemarkIconHeight!=null&&r.hasOwnProperty("placemarkIconHeight")&&(e.placemarkIconHeight=r.placemarkIconHeight),r.popUp!=null&&r.hasOwnProperty("popUp")&&(e.popUp=n.keyhole.dbroot.PopUpProto.toObject(r.popUp,t)),r.drawFlag&&r.drawFlag.length){e.drawFlag=[];for(var o=0;o<r.drawFlag.length;++o)e.drawFlag[o]=n.keyhole.dbroot.DrawFlagProto.toObject(r.drawFlag[o],t)}return e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StyleAttributeProto"},i}(),c.StyleMapProto=function(){function i(l){if(this.channelId=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.styleMapId=0,i.prototype.channelId=u.emptyArray,i.prototype.normalStyleAttribute=0,i.prototype.highlightStyleAttribute=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StyleMapProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.styleMapId=r.int32();break}case 2:{if(o.channelId&&o.channelId.length||(o.channelId=[]),(a&7)===2)for(var p=r.uint32()+r.pos;r.pos<p;)o.channelId.push(r.int32());else o.channelId.push(r.int32());break}case 3:{o.normalStyleAttribute=r.int32();break}case 4:{o.highlightStyleAttribute=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("styleMapId"))throw u.ProtocolError("missing required 'styleMapId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isInteger(r.styleMapId))return"styleMapId: integer expected";if(r.channelId!=null&&r.hasOwnProperty("channelId")){if(!Array.isArray(r.channelId))return"channelId: array expected";for(var t=0;t<r.channelId.length;++t)if(!u.isInteger(r.channelId[t]))return"channelId: integer[] expected"}return r.normalStyleAttribute!=null&&r.hasOwnProperty("normalStyleAttribute")&&!u.isInteger(r.normalStyleAttribute)?"normalStyleAttribute: integer expected":r.highlightStyleAttribute!=null&&r.hasOwnProperty("highlightStyleAttribute")&&!u.isInteger(r.highlightStyleAttribute)?"highlightStyleAttribute: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StyleMapProto)return r;var t=new n.keyhole.dbroot.StyleMapProto;if(r.styleMapId!=null&&(t.styleMapId=r.styleMapId|0),r.channelId){if(!Array.isArray(r.channelId))throw TypeError(".keyhole.dbroot.StyleMapProto.channelId: array expected");t.channelId=[];for(var e=0;e<r.channelId.length;++e)t.channelId[e]=r.channelId[e]|0}return r.normalStyleAttribute!=null&&(t.normalStyleAttribute=r.normalStyleAttribute|0),r.highlightStyleAttribute!=null&&(t.highlightStyleAttribute=r.highlightStyleAttribute|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.channelId=[]),t.defaults&&(e.styleMapId=0,e.normalStyleAttribute=0,e.highlightStyleAttribute=0),r.styleMapId!=null&&r.hasOwnProperty("styleMapId")&&(e.styleMapId=r.styleMapId),r.channelId&&r.channelId.length){e.channelId=[];for(var o=0;o<r.channelId.length;++o)e.channelId[o]=r.channelId[o]}return r.normalStyleAttribute!=null&&r.hasOwnProperty("normalStyleAttribute")&&(e.normalStyleAttribute=r.normalStyleAttribute),r.highlightStyleAttribute!=null&&r.hasOwnProperty("highlightStyleAttribute")&&(e.highlightStyleAttribute=r.highlightStyleAttribute),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StyleMapProto"},i}(),c.ZoomRangeProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.minZoom=0,i.prototype.maxZoom=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ZoomRangeProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.minZoom=r.int32();break}case 2:{o.maxZoom=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("minZoom"))throw u.ProtocolError("missing required 'minZoom'",{instance:o});if(!o.hasOwnProperty("maxZoom"))throw u.ProtocolError("missing required 'maxZoom'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.minZoom)?u.isInteger(r.maxZoom)?null:"maxZoom: integer expected":"minZoom: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ZoomRangeProto)return r;var t=new n.keyhole.dbroot.ZoomRangeProto;return r.minZoom!=null&&(t.minZoom=r.minZoom|0),r.maxZoom!=null&&(t.maxZoom=r.maxZoom|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.minZoom=0,e.maxZoom=0),r.minZoom!=null&&r.hasOwnProperty("minZoom")&&(e.minZoom=r.minZoom),r.maxZoom!=null&&r.hasOwnProperty("maxZoom")&&(e.maxZoom=r.maxZoom),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ZoomRangeProto"},i}(),c.DrawFlagProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.drawFlagType=1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DrawFlagProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.drawFlagType=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("drawFlagType"))throw u.ProtocolError("missing required 'drawFlagType'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";switch(r.drawFlagType){default:return"drawFlagType: enum value expected";case 1:case 2:case 3:case 4:case 5:break}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DrawFlagProto)return r;var t=new n.keyhole.dbroot.DrawFlagProto;switch(r.drawFlagType){case"TYPE_FILL_ONLY":case 1:t.drawFlagType=1;break;case"TYPE_OUTLINE_ONLY":case 2:t.drawFlagType=2;break;case"TYPE_FILL_AND_OUTLINE":case 3:t.drawFlagType=3;break;case"TYPE_ANTIALIASING":case 4:t.drawFlagType=4;break;case"TYPE_CENTER_LABEL":case 5:t.drawFlagType=5;break}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.drawFlagType=t.enums===String?"TYPE_FILL_ONLY":1),r.drawFlagType!=null&&r.hasOwnProperty("drawFlagType")&&(e.drawFlagType=t.enums===String?n.keyhole.dbroot.DrawFlagProto.DrawFlagType[r.drawFlagType]:r.drawFlagType),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DrawFlagProto"},i.DrawFlagType=function(){var l={},r=Object.create(l);return r[l[1]="TYPE_FILL_ONLY"]=1,r[l[2]="TYPE_OUTLINE_ONLY"]=2,r[l[3]="TYPE_FILL_AND_OUTLINE"]=3,r[l[4]="TYPE_ANTIALIASING"]=4,r[l[5]="TYPE_CENTER_LABEL"]=5,r}(),i}(),c.LayerProto=function(){function i(l){if(this.zoomRange=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.zoomRange=u.emptyArray,i.prototype.preserveTextLevel=30,i.prototype.lodBeginTransition=!1,i.prototype.lodEndTransition=!1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LayerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.zoomRange&&o.zoomRange.length||(o.zoomRange=[]),o.zoomRange.push(n.keyhole.dbroot.ZoomRangeProto.decode(r,r.uint32()));break}case 2:{o.preserveTextLevel=r.int32();break}case 4:{o.lodBeginTransition=r.bool();break}case 5:{o.lodEndTransition=r.bool();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.zoomRange!=null&&r.hasOwnProperty("zoomRange")){if(!Array.isArray(r.zoomRange))return"zoomRange: array expected";for(var t=0;t<r.zoomRange.length;++t){var e=n.keyhole.dbroot.ZoomRangeProto.verify(r.zoomRange[t]);if(e)return"zoomRange."+e}}return r.preserveTextLevel!=null&&r.hasOwnProperty("preserveTextLevel")&&!u.isInteger(r.preserveTextLevel)?"preserveTextLevel: integer expected":r.lodBeginTransition!=null&&r.hasOwnProperty("lodBeginTransition")&&typeof r.lodBeginTransition!="boolean"?"lodBeginTransition: boolean expected":r.lodEndTransition!=null&&r.hasOwnProperty("lodEndTransition")&&typeof r.lodEndTransition!="boolean"?"lodEndTransition: boolean expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LayerProto)return r;var t=new n.keyhole.dbroot.LayerProto;if(r.zoomRange){if(!Array.isArray(r.zoomRange))throw TypeError(".keyhole.dbroot.LayerProto.zoomRange: array expected");t.zoomRange=[];for(var e=0;e<r.zoomRange.length;++e){if(typeof r.zoomRange[e]!="object")throw TypeError(".keyhole.dbroot.LayerProto.zoomRange: object expected");t.zoomRange[e]=n.keyhole.dbroot.ZoomRangeProto.fromObject(r.zoomRange[e])}}return r.preserveTextLevel!=null&&(t.preserveTextLevel=r.preserveTextLevel|0),r.lodBeginTransition!=null&&(t.lodBeginTransition=!!r.lodBeginTransition),r.lodEndTransition!=null&&(t.lodEndTransition=!!r.lodEndTransition),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.zoomRange=[]),t.defaults&&(e.preserveTextLevel=30,e.lodBeginTransition=!1,e.lodEndTransition=!1),r.zoomRange&&r.zoomRange.length){e.zoomRange=[];for(var o=0;o<r.zoomRange.length;++o)e.zoomRange[o]=n.keyhole.dbroot.ZoomRangeProto.toObject(r.zoomRange[o],t)}return r.preserveTextLevel!=null&&r.hasOwnProperty("preserveTextLevel")&&(e.preserveTextLevel=r.preserveTextLevel),r.lodBeginTransition!=null&&r.hasOwnProperty("lodBeginTransition")&&(e.lodBeginTransition=r.lodBeginTransition),r.lodEndTransition!=null&&r.hasOwnProperty("lodEndTransition")&&(e.lodEndTransition=r.lodEndTransition),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LayerProto"},i}(),c.FolderProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isExpandable=!0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.FolderProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isExpandable=r.bool();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.isExpandable!=null&&r.hasOwnProperty("isExpandable")&&typeof r.isExpandable!="boolean"?"isExpandable: boolean expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.FolderProto)return r;var t=new n.keyhole.dbroot.FolderProto;return r.isExpandable!=null&&(t.isExpandable=!!r.isExpandable),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isExpandable=!0),r.isExpandable!=null&&r.hasOwnProperty("isExpandable")&&(e.isExpandable=r.isExpandable),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.FolderProto"},i}(),c.RequirementProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.requiredVram="",i.prototype.requiredClientVer="",i.prototype.probability="",i.prototype.requiredUserAgent="",i.prototype.requiredClientCapabilities="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.RequirementProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 3:{o.requiredVram=r.string();break}case 4:{o.requiredClientVer=r.string();break}case 5:{o.probability=r.string();break}case 6:{o.requiredUserAgent=r.string();break}case 7:{o.requiredClientCapabilities=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.requiredVram!=null&&r.hasOwnProperty("requiredVram")&&!u.isString(r.requiredVram)?"requiredVram: string expected":r.requiredClientVer!=null&&r.hasOwnProperty("requiredClientVer")&&!u.isString(r.requiredClientVer)?"requiredClientVer: string expected":r.probability!=null&&r.hasOwnProperty("probability")&&!u.isString(r.probability)?"probability: string expected":r.requiredUserAgent!=null&&r.hasOwnProperty("requiredUserAgent")&&!u.isString(r.requiredUserAgent)?"requiredUserAgent: string expected":r.requiredClientCapabilities!=null&&r.hasOwnProperty("requiredClientCapabilities")&&!u.isString(r.requiredClientCapabilities)?"requiredClientCapabilities: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.RequirementProto)return r;var t=new n.keyhole.dbroot.RequirementProto;return r.requiredVram!=null&&(t.requiredVram=String(r.requiredVram)),r.requiredClientVer!=null&&(t.requiredClientVer=String(r.requiredClientVer)),r.probability!=null&&(t.probability=String(r.probability)),r.requiredUserAgent!=null&&(t.requiredUserAgent=String(r.requiredUserAgent)),r.requiredClientCapabilities!=null&&(t.requiredClientCapabilities=String(r.requiredClientCapabilities)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.requiredVram="",e.requiredClientVer="",e.probability="",e.requiredUserAgent="",e.requiredClientCapabilities=""),r.requiredVram!=null&&r.hasOwnProperty("requiredVram")&&(e.requiredVram=r.requiredVram),r.requiredClientVer!=null&&r.hasOwnProperty("requiredClientVer")&&(e.requiredClientVer=r.requiredClientVer),r.probability!=null&&r.hasOwnProperty("probability")&&(e.probability=r.probability),r.requiredUserAgent!=null&&r.hasOwnProperty("requiredUserAgent")&&(e.requiredUserAgent=r.requiredUserAgent),r.requiredClientCapabilities!=null&&r.hasOwnProperty("requiredClientCapabilities")&&(e.requiredClientCapabilities=r.requiredClientCapabilities),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.RequirementProto"},i}(),c.LookAtProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.longitude=0,i.prototype.latitude=0,i.prototype.range=0,i.prototype.tilt=0,i.prototype.heading=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LookAtProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.longitude=r.float();break}case 2:{o.latitude=r.float();break}case 3:{o.range=r.float();break}case 4:{o.tilt=r.float();break}case 5:{o.heading=r.float();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("longitude"))throw u.ProtocolError("missing required 'longitude'",{instance:o});if(!o.hasOwnProperty("latitude"))throw u.ProtocolError("missing required 'latitude'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":typeof r.longitude!="number"?"longitude: number expected":typeof r.latitude!="number"?"latitude: number expected":r.range!=null&&r.hasOwnProperty("range")&&typeof r.range!="number"?"range: number expected":r.tilt!=null&&r.hasOwnProperty("tilt")&&typeof r.tilt!="number"?"tilt: number expected":r.heading!=null&&r.hasOwnProperty("heading")&&typeof r.heading!="number"?"heading: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LookAtProto)return r;var t=new n.keyhole.dbroot.LookAtProto;return r.longitude!=null&&(t.longitude=Number(r.longitude)),r.latitude!=null&&(t.latitude=Number(r.latitude)),r.range!=null&&(t.range=Number(r.range)),r.tilt!=null&&(t.tilt=Number(r.tilt)),r.heading!=null&&(t.heading=Number(r.heading)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.longitude=0,e.latitude=0,e.range=0,e.tilt=0,e.heading=0),r.longitude!=null&&r.hasOwnProperty("longitude")&&(e.longitude=t.json&&!isFinite(r.longitude)?String(r.longitude):r.longitude),r.latitude!=null&&r.hasOwnProperty("latitude")&&(e.latitude=t.json&&!isFinite(r.latitude)?String(r.latitude):r.latitude),r.range!=null&&r.hasOwnProperty("range")&&(e.range=t.json&&!isFinite(r.range)?String(r.range):r.range),r.tilt!=null&&r.hasOwnProperty("tilt")&&(e.tilt=t.json&&!isFinite(r.tilt)?String(r.tilt):r.tilt),r.heading!=null&&r.hasOwnProperty("heading")&&(e.heading=t.json&&!isFinite(r.heading)?String(r.heading):r.heading),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LookAtProto"},i}(),c.NestedFeatureProto=function(){function i(l){if(this.children=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.featureType=1,i.prototype.kmlUrl=null,i.prototype.databaseUrl="",i.prototype.layer=null,i.prototype.folder=null,i.prototype.requirement=null,i.prototype.channelId=0,i.prototype.displayName=null,i.prototype.isVisible=!0,i.prototype.isEnabled=!0,i.prototype.isChecked=!1,i.prototype.layerMenuIconPath="icons/773_l.png",i.prototype.description=null,i.prototype.lookAt=null,i.prototype.assetUuid="",i.prototype.isSaveLocked=!0,i.prototype.children=u.emptyArray,i.prototype.clientConfigScriptName="",i.prototype.dioramaDataChannelBase=-1,i.prototype.replicaDataChannelBase=-1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.NestedFeatureProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.featureType=r.int32();break}case 2:{o.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 21:{o.databaseUrl=r.string();break}case 3:{o.layer=n.keyhole.dbroot.LayerProto.decode(r,r.uint32());break}case 4:{o.folder=n.keyhole.dbroot.FolderProto.decode(r,r.uint32());break}case 5:{o.requirement=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}case 6:{o.channelId=r.int32();break}case 7:{o.displayName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 8:{o.isVisible=r.bool();break}case 9:{o.isEnabled=r.bool();break}case 10:{o.isChecked=r.bool();break}case 11:{o.layerMenuIconPath=r.string();break}case 12:{o.description=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 13:{o.lookAt=n.keyhole.dbroot.LookAtProto.decode(r,r.uint32());break}case 15:{o.assetUuid=r.string();break}case 16:{o.isSaveLocked=r.bool();break}case 17:{o.children&&o.children.length||(o.children=[]),o.children.push(n.keyhole.dbroot.NestedFeatureProto.decode(r,r.uint32()));break}case 18:{o.clientConfigScriptName=r.string();break}case 19:{o.dioramaDataChannelBase=r.int32();break}case 20:{o.replicaDataChannelBase=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("channelId"))throw u.ProtocolError("missing required 'channelId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.featureType!=null&&r.hasOwnProperty("featureType"))switch(r.featureType){default:return"featureType: enum value expected";case 1:case 2:case 3:case 4:break}if(r.kmlUrl!=null&&r.hasOwnProperty("kmlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.kmlUrl);if(t)return"kmlUrl."+t}if(r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&!u.isString(r.databaseUrl))return"databaseUrl: string expected";if(r.layer!=null&&r.hasOwnProperty("layer")){var t=n.keyhole.dbroot.LayerProto.verify(r.layer);if(t)return"layer."+t}if(r.folder!=null&&r.hasOwnProperty("folder")){var t=n.keyhole.dbroot.FolderProto.verify(r.folder);if(t)return"folder."+t}if(r.requirement!=null&&r.hasOwnProperty("requirement")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirement);if(t)return"requirement."+t}if(!u.isInteger(r.channelId))return"channelId: integer expected";if(r.displayName!=null&&r.hasOwnProperty("displayName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.displayName);if(t)return"displayName."+t}if(r.isVisible!=null&&r.hasOwnProperty("isVisible")&&typeof r.isVisible!="boolean")return"isVisible: boolean expected";if(r.isEnabled!=null&&r.hasOwnProperty("isEnabled")&&typeof r.isEnabled!="boolean")return"isEnabled: boolean expected";if(r.isChecked!=null&&r.hasOwnProperty("isChecked")&&typeof r.isChecked!="boolean")return"isChecked: boolean expected";if(r.layerMenuIconPath!=null&&r.hasOwnProperty("layerMenuIconPath")&&!u.isString(r.layerMenuIconPath))return"layerMenuIconPath: string expected";if(r.description!=null&&r.hasOwnProperty("description")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.description);if(t)return"description."+t}if(r.lookAt!=null&&r.hasOwnProperty("lookAt")){var t=n.keyhole.dbroot.LookAtProto.verify(r.lookAt);if(t)return"lookAt."+t}if(r.assetUuid!=null&&r.hasOwnProperty("assetUuid")&&!u.isString(r.assetUuid))return"assetUuid: string expected";if(r.isSaveLocked!=null&&r.hasOwnProperty("isSaveLocked")&&typeof r.isSaveLocked!="boolean")return"isSaveLocked: boolean expected";if(r.children!=null&&r.hasOwnProperty("children")){if(!Array.isArray(r.children))return"children: array expected";for(var e=0;e<r.children.length;++e){var t=n.keyhole.dbroot.NestedFeatureProto.verify(r.children[e]);if(t)return"children."+t}}return r.clientConfigScriptName!=null&&r.hasOwnProperty("clientConfigScriptName")&&!u.isString(r.clientConfigScriptName)?"clientConfigScriptName: string expected":r.dioramaDataChannelBase!=null&&r.hasOwnProperty("dioramaDataChannelBase")&&!u.isInteger(r.dioramaDataChannelBase)?"dioramaDataChannelBase: integer expected":r.replicaDataChannelBase!=null&&r.hasOwnProperty("replicaDataChannelBase")&&!u.isInteger(r.replicaDataChannelBase)?"replicaDataChannelBase: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.NestedFeatureProto)return r;var t=new n.keyhole.dbroot.NestedFeatureProto;switch(r.featureType){case"TYPE_POINT_Z":case 1:t.featureType=1;break;case"TYPE_POLYGON_Z":case 2:t.featureType=2;break;case"TYPE_LINE_Z":case 3:t.featureType=3;break;case"TYPE_TERRAIN":case 4:t.featureType=4;break}if(r.kmlUrl!=null){if(typeof r.kmlUrl!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.kmlUrl: object expected");t.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.kmlUrl)}if(r.databaseUrl!=null&&(t.databaseUrl=String(r.databaseUrl)),r.layer!=null){if(typeof r.layer!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.layer: object expected");t.layer=n.keyhole.dbroot.LayerProto.fromObject(r.layer)}if(r.folder!=null){if(typeof r.folder!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.folder: object expected");t.folder=n.keyhole.dbroot.FolderProto.fromObject(r.folder)}if(r.requirement!=null){if(typeof r.requirement!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.requirement: object expected");t.requirement=n.keyhole.dbroot.RequirementProto.fromObject(r.requirement)}if(r.channelId!=null&&(t.channelId=r.channelId|0),r.displayName!=null){if(typeof r.displayName!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.displayName: object expected");t.displayName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.displayName)}if(r.isVisible!=null&&(t.isVisible=!!r.isVisible),r.isEnabled!=null&&(t.isEnabled=!!r.isEnabled),r.isChecked!=null&&(t.isChecked=!!r.isChecked),r.layerMenuIconPath!=null&&(t.layerMenuIconPath=String(r.layerMenuIconPath)),r.description!=null){if(typeof r.description!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.description: object expected");t.description=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.description)}if(r.lookAt!=null){if(typeof r.lookAt!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.lookAt: object expected");t.lookAt=n.keyhole.dbroot.LookAtProto.fromObject(r.lookAt)}if(r.assetUuid!=null&&(t.assetUuid=String(r.assetUuid)),r.isSaveLocked!=null&&(t.isSaveLocked=!!r.isSaveLocked),r.children){if(!Array.isArray(r.children))throw TypeError(".keyhole.dbroot.NestedFeatureProto.children: array expected");t.children=[];for(var e=0;e<r.children.length;++e){if(typeof r.children[e]!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.children: object expected");t.children[e]=n.keyhole.dbroot.NestedFeatureProto.fromObject(r.children[e])}}return r.clientConfigScriptName!=null&&(t.clientConfigScriptName=String(r.clientConfigScriptName)),r.dioramaDataChannelBase!=null&&(t.dioramaDataChannelBase=r.dioramaDataChannelBase|0),r.replicaDataChannelBase!=null&&(t.replicaDataChannelBase=r.replicaDataChannelBase|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.children=[]),t.defaults&&(e.featureType=t.enums===String?"TYPE_POINT_Z":1,e.kmlUrl=null,e.layer=null,e.folder=null,e.requirement=null,e.channelId=0,e.displayName=null,e.isVisible=!0,e.isEnabled=!0,e.isChecked=!1,e.layerMenuIconPath="icons/773_l.png",e.description=null,e.lookAt=null,e.assetUuid="",e.isSaveLocked=!0,e.clientConfigScriptName="",e.dioramaDataChannelBase=-1,e.replicaDataChannelBase=-1,e.databaseUrl=""),r.featureType!=null&&r.hasOwnProperty("featureType")&&(e.featureType=t.enums===String?n.keyhole.dbroot.NestedFeatureProto.FeatureType[r.featureType]:r.featureType),r.kmlUrl!=null&&r.hasOwnProperty("kmlUrl")&&(e.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.kmlUrl,t)),r.layer!=null&&r.hasOwnProperty("layer")&&(e.layer=n.keyhole.dbroot.LayerProto.toObject(r.layer,t)),r.folder!=null&&r.hasOwnProperty("folder")&&(e.folder=n.keyhole.dbroot.FolderProto.toObject(r.folder,t)),r.requirement!=null&&r.hasOwnProperty("requirement")&&(e.requirement=n.keyhole.dbroot.RequirementProto.toObject(r.requirement,t)),r.channelId!=null&&r.hasOwnProperty("channelId")&&(e.channelId=r.channelId),r.displayName!=null&&r.hasOwnProperty("displayName")&&(e.displayName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.displayName,t)),r.isVisible!=null&&r.hasOwnProperty("isVisible")&&(e.isVisible=r.isVisible),r.isEnabled!=null&&r.hasOwnProperty("isEnabled")&&(e.isEnabled=r.isEnabled),r.isChecked!=null&&r.hasOwnProperty("isChecked")&&(e.isChecked=r.isChecked),r.layerMenuIconPath!=null&&r.hasOwnProperty("layerMenuIconPath")&&(e.layerMenuIconPath=r.layerMenuIconPath),r.description!=null&&r.hasOwnProperty("description")&&(e.description=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.description,t)),r.lookAt!=null&&r.hasOwnProperty("lookAt")&&(e.lookAt=n.keyhole.dbroot.LookAtProto.toObject(r.lookAt,t)),r.assetUuid!=null&&r.hasOwnProperty("assetUuid")&&(e.assetUuid=r.assetUuid),r.isSaveLocked!=null&&r.hasOwnProperty("isSaveLocked")&&(e.isSaveLocked=r.isSaveLocked),r.children&&r.children.length){e.children=[];for(var o=0;o<r.children.length;++o)e.children[o]=n.keyhole.dbroot.NestedFeatureProto.toObject(r.children[o],t)}return r.clientConfigScriptName!=null&&r.hasOwnProperty("clientConfigScriptName")&&(e.clientConfigScriptName=r.clientConfigScriptName),r.dioramaDataChannelBase!=null&&r.hasOwnProperty("dioramaDataChannelBase")&&(e.dioramaDataChannelBase=r.dioramaDataChannelBase),r.replicaDataChannelBase!=null&&r.hasOwnProperty("replicaDataChannelBase")&&(e.replicaDataChannelBase=r.replicaDataChannelBase),r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&(e.databaseUrl=r.databaseUrl),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.NestedFeatureProto"},i.FeatureType=function(){var l={},r=Object.create(l);return r[l[1]="TYPE_POINT_Z"]=1,r[l[2]="TYPE_POLYGON_Z"]=2,r[l[3]="TYPE_LINE_Z"]=3,r[l[4]="TYPE_TERRAIN"]=4,r}(),i}(),c.MfeDomainFeaturesProto=function(){function i(l){if(this.supportedFeatures=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.countryCode="",i.prototype.domainName="",i.prototype.supportedFeatures=u.emptyArray,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.MfeDomainFeaturesProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.countryCode=r.string();break}case 2:{o.domainName=r.string();break}case 3:{if(o.supportedFeatures&&o.supportedFeatures.length||(o.supportedFeatures=[]),(a&7)===2)for(var p=r.uint32()+r.pos;r.pos<p;)o.supportedFeatures.push(r.int32());else o.supportedFeatures.push(r.int32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("countryCode"))throw u.ProtocolError("missing required 'countryCode'",{instance:o});if(!o.hasOwnProperty("domainName"))throw u.ProtocolError("missing required 'domainName'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.countryCode))return"countryCode: string expected";if(!u.isString(r.domainName))return"domainName: string expected";if(r.supportedFeatures!=null&&r.hasOwnProperty("supportedFeatures")){if(!Array.isArray(r.supportedFeatures))return"supportedFeatures: array expected";for(var t=0;t<r.supportedFeatures.length;++t)switch(r.supportedFeatures[t]){default:return"supportedFeatures: enum value[] expected";case 0:case 1:case 2:break}}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.MfeDomainFeaturesProto)return r;var t=new n.keyhole.dbroot.MfeDomainFeaturesProto;if(r.countryCode!=null&&(t.countryCode=String(r.countryCode)),r.domainName!=null&&(t.domainName=String(r.domainName)),r.supportedFeatures){if(!Array.isArray(r.supportedFeatures))throw TypeError(".keyhole.dbroot.MfeDomainFeaturesProto.supportedFeatures: array expected");t.supportedFeatures=[];for(var e=0;e<r.supportedFeatures.length;++e)switch(r.supportedFeatures[e]){default:case"GEOCODING":case 0:t.supportedFeatures[e]=0;break;case"LOCAL_SEARCH":case 1:t.supportedFeatures[e]=1;break;case"DRIVING_DIRECTIONS":case 2:t.supportedFeatures[e]=2;break}}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.supportedFeatures=[]),t.defaults&&(e.countryCode="",e.domainName=""),r.countryCode!=null&&r.hasOwnProperty("countryCode")&&(e.countryCode=r.countryCode),r.domainName!=null&&r.hasOwnProperty("domainName")&&(e.domainName=r.domainName),r.supportedFeatures&&r.supportedFeatures.length){e.supportedFeatures=[];for(var o=0;o<r.supportedFeatures.length;++o)e.supportedFeatures[o]=t.enums===String?n.keyhole.dbroot.MfeDomainFeaturesProto.SupportedFeature[r.supportedFeatures[o]]:r.supportedFeatures[o]}return e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.MfeDomainFeaturesProto"},i.SupportedFeature=function(){var l={},r=Object.create(l);return r[l[0]="GEOCODING"]=0,r[l[1]="LOCAL_SEARCH"]=1,r[l[2]="DRIVING_DIRECTIONS"]=2,r}(),i}(),c.ClientOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.disableDiskCache=!1,i.prototype.disableEmbeddedBrowserVista=!1,i.prototype.drawAtmosphere=!0,i.prototype.drawStars=!0,i.prototype.shaderFilePrefix="",i.prototype.useProtobufQuadtreePackets=!1,i.prototype.useExtendedCopyrightIds=!0,i.prototype.precipitationsOptions=null,i.prototype.captureOptions=null,i.prototype.show_2dMapsIcon=!0,i.prototype.disableInternalBrowser=!1,i.prototype.internalBrowserBlacklist="",i.prototype.internalBrowserOriginWhitelist="*",i.prototype.polarTileMergingLevel=0,i.prototype.jsBridgeRequestWhitelist="http://*.google.com/*",i.prototype.mapsOptions=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ClientOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.disableDiskCache=r.bool();break}case 2:{o.disableEmbeddedBrowserVista=r.bool();break}case 3:{o.drawAtmosphere=r.bool();break}case 4:{o.drawStars=r.bool();break}case 5:{o.shaderFilePrefix=r.string();break}case 6:{o.useProtobufQuadtreePackets=r.bool();break}case 7:{o.useExtendedCopyrightIds=r.bool();break}case 8:{o.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.decode(r,r.uint32());break}case 9:{o.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.decode(r,r.uint32());break}case 10:{o.show_2dMapsIcon=r.bool();break}case 11:{o.disableInternalBrowser=r.bool();break}case 12:{o.internalBrowserBlacklist=r.string();break}case 13:{o.internalBrowserOriginWhitelist=r.string();break}case 14:{o.polarTileMergingLevel=r.int32();break}case 15:{o.jsBridgeRequestWhitelist=r.string();break}case 16:{o.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.disableDiskCache!=null&&r.hasOwnProperty("disableDiskCache")&&typeof r.disableDiskCache!="boolean")return"disableDiskCache: boolean expected";if(r.disableEmbeddedBrowserVista!=null&&r.hasOwnProperty("disableEmbeddedBrowserVista")&&typeof r.disableEmbeddedBrowserVista!="boolean")return"disableEmbeddedBrowserVista: boolean expected";if(r.drawAtmosphere!=null&&r.hasOwnProperty("drawAtmosphere")&&typeof r.drawAtmosphere!="boolean")return"drawAtmosphere: boolean expected";if(r.drawStars!=null&&r.hasOwnProperty("drawStars")&&typeof r.drawStars!="boolean")return"drawStars: boolean expected";if(r.shaderFilePrefix!=null&&r.hasOwnProperty("shaderFilePrefix")&&!u.isString(r.shaderFilePrefix))return"shaderFilePrefix: string expected";if(r.useProtobufQuadtreePackets!=null&&r.hasOwnProperty("useProtobufQuadtreePackets")&&typeof r.useProtobufQuadtreePackets!="boolean")return"useProtobufQuadtreePackets: boolean expected";if(r.useExtendedCopyrightIds!=null&&r.hasOwnProperty("useExtendedCopyrightIds")&&typeof r.useExtendedCopyrightIds!="boolean")return"useExtendedCopyrightIds: boolean expected";if(r.precipitationsOptions!=null&&r.hasOwnProperty("precipitationsOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.verify(r.precipitationsOptions);if(t)return"precipitationsOptions."+t}if(r.captureOptions!=null&&r.hasOwnProperty("captureOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.verify(r.captureOptions);if(t)return"captureOptions."+t}if(r.show_2dMapsIcon!=null&&r.hasOwnProperty("show_2dMapsIcon")&&typeof r.show_2dMapsIcon!="boolean")return"show_2dMapsIcon: boolean expected";if(r.disableInternalBrowser!=null&&r.hasOwnProperty("disableInternalBrowser")&&typeof r.disableInternalBrowser!="boolean")return"disableInternalBrowser: boolean expected";if(r.internalBrowserBlacklist!=null&&r.hasOwnProperty("internalBrowserBlacklist")&&!u.isString(r.internalBrowserBlacklist))return"internalBrowserBlacklist: string expected";if(r.internalBrowserOriginWhitelist!=null&&r.hasOwnProperty("internalBrowserOriginWhitelist")&&!u.isString(r.internalBrowserOriginWhitelist))return"internalBrowserOriginWhitelist: string expected";if(r.polarTileMergingLevel!=null&&r.hasOwnProperty("polarTileMergingLevel")&&!u.isInteger(r.polarTileMergingLevel))return"polarTileMergingLevel: integer expected";if(r.jsBridgeRequestWhitelist!=null&&r.hasOwnProperty("jsBridgeRequestWhitelist")&&!u.isString(r.jsBridgeRequestWhitelist))return"jsBridgeRequestWhitelist: string expected";if(r.mapsOptions!=null&&r.hasOwnProperty("mapsOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.verify(r.mapsOptions);if(t)return"mapsOptions."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ClientOptionsProto)return r;var t=new n.keyhole.dbroot.ClientOptionsProto;if(r.disableDiskCache!=null&&(t.disableDiskCache=!!r.disableDiskCache),r.disableEmbeddedBrowserVista!=null&&(t.disableEmbeddedBrowserVista=!!r.disableEmbeddedBrowserVista),r.drawAtmosphere!=null&&(t.drawAtmosphere=!!r.drawAtmosphere),r.drawStars!=null&&(t.drawStars=!!r.drawStars),r.shaderFilePrefix!=null&&(t.shaderFilePrefix=String(r.shaderFilePrefix)),r.useProtobufQuadtreePackets!=null&&(t.useProtobufQuadtreePackets=!!r.useProtobufQuadtreePackets),r.useExtendedCopyrightIds!=null&&(t.useExtendedCopyrightIds=!!r.useExtendedCopyrightIds),r.precipitationsOptions!=null){if(typeof r.precipitationsOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.precipitationsOptions: object expected");t.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.fromObject(r.precipitationsOptions)}if(r.captureOptions!=null){if(typeof r.captureOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.captureOptions: object expected");t.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.fromObject(r.captureOptions)}if(r.show_2dMapsIcon!=null&&(t.show_2dMapsIcon=!!r.show_2dMapsIcon),r.disableInternalBrowser!=null&&(t.disableInternalBrowser=!!r.disableInternalBrowser),r.internalBrowserBlacklist!=null&&(t.internalBrowserBlacklist=String(r.internalBrowserBlacklist)),r.internalBrowserOriginWhitelist!=null&&(t.internalBrowserOriginWhitelist=String(r.internalBrowserOriginWhitelist)),r.polarTileMergingLevel!=null&&(t.polarTileMergingLevel=r.polarTileMergingLevel|0),r.jsBridgeRequestWhitelist!=null&&(t.jsBridgeRequestWhitelist=String(r.jsBridgeRequestWhitelist)),r.mapsOptions!=null){if(typeof r.mapsOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.mapsOptions: object expected");t.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.fromObject(r.mapsOptions)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.disableDiskCache=!1,e.disableEmbeddedBrowserVista=!1,e.drawAtmosphere=!0,e.drawStars=!0,e.shaderFilePrefix="",e.useProtobufQuadtreePackets=!1,e.useExtendedCopyrightIds=!0,e.precipitationsOptions=null,e.captureOptions=null,e.show_2dMapsIcon=!0,e.disableInternalBrowser=!1,e.internalBrowserBlacklist="",e.internalBrowserOriginWhitelist="*",e.polarTileMergingLevel=0,e.jsBridgeRequestWhitelist="http://*.google.com/*",e.mapsOptions=null),r.disableDiskCache!=null&&r.hasOwnProperty("disableDiskCache")&&(e.disableDiskCache=r.disableDiskCache),r.disableEmbeddedBrowserVista!=null&&r.hasOwnProperty("disableEmbeddedBrowserVista")&&(e.disableEmbeddedBrowserVista=r.disableEmbeddedBrowserVista),r.drawAtmosphere!=null&&r.hasOwnProperty("drawAtmosphere")&&(e.drawAtmosphere=r.drawAtmosphere),r.drawStars!=null&&r.hasOwnProperty("drawStars")&&(e.drawStars=r.drawStars),r.shaderFilePrefix!=null&&r.hasOwnProperty("shaderFilePrefix")&&(e.shaderFilePrefix=r.shaderFilePrefix),r.useProtobufQuadtreePackets!=null&&r.hasOwnProperty("useProtobufQuadtreePackets")&&(e.useProtobufQuadtreePackets=r.useProtobufQuadtreePackets),r.useExtendedCopyrightIds!=null&&r.hasOwnProperty("useExtendedCopyrightIds")&&(e.useExtendedCopyrightIds=r.useExtendedCopyrightIds),r.precipitationsOptions!=null&&r.hasOwnProperty("precipitationsOptions")&&(e.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.toObject(r.precipitationsOptions,t)),r.captureOptions!=null&&r.hasOwnProperty("captureOptions")&&(e.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.toObject(r.captureOptions,t)),r.show_2dMapsIcon!=null&&r.hasOwnProperty("show_2dMapsIcon")&&(e.show_2dMapsIcon=r.show_2dMapsIcon),r.disableInternalBrowser!=null&&r.hasOwnProperty("disableInternalBrowser")&&(e.disableInternalBrowser=r.disableInternalBrowser),r.internalBrowserBlacklist!=null&&r.hasOwnProperty("internalBrowserBlacklist")&&(e.internalBrowserBlacklist=r.internalBrowserBlacklist),r.internalBrowserOriginWhitelist!=null&&r.hasOwnProperty("internalBrowserOriginWhitelist")&&(e.internalBrowserOriginWhitelist=r.internalBrowserOriginWhitelist),r.polarTileMergingLevel!=null&&r.hasOwnProperty("polarTileMergingLevel")&&(e.polarTileMergingLevel=r.polarTileMergingLevel),r.jsBridgeRequestWhitelist!=null&&r.hasOwnProperty("jsBridgeRequestWhitelist")&&(e.jsBridgeRequestWhitelist=r.jsBridgeRequestWhitelist),r.mapsOptions!=null&&r.hasOwnProperty("mapsOptions")&&(e.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.toObject(r.mapsOptions,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ClientOptionsProto"},i.PrecipitationsOptions=function(){function l(r){if(this.weatherMapping=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.imageUrl="",l.prototype.imageExpireTime=900,l.prototype.maxColorDistance=20,l.prototype.imageLevel=5,l.prototype.weatherMapping=u.emptyArray,l.prototype.cloudsLayerUrl="",l.prototype.animationDecelerationDelay=20,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.imageUrl=t.string();break}case 2:{a.imageExpireTime=t.int32();break}case 3:{a.maxColorDistance=t.int32();break}case 4:{a.imageLevel=t.int32();break}case 5:{a.weatherMapping&&a.weatherMapping.length||(a.weatherMapping=[]),a.weatherMapping.push(n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.decode(t,t.uint32()));break}case 6:{a.cloudsLayerUrl=t.string();break}case 7:{a.animationDecelerationDelay=t.float();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.imageUrl!=null&&t.hasOwnProperty("imageUrl")&&!u.isString(t.imageUrl))return"imageUrl: string expected";if(t.imageExpireTime!=null&&t.hasOwnProperty("imageExpireTime")&&!u.isInteger(t.imageExpireTime))return"imageExpireTime: integer expected";if(t.maxColorDistance!=null&&t.hasOwnProperty("maxColorDistance")&&!u.isInteger(t.maxColorDistance))return"maxColorDistance: integer expected";if(t.imageLevel!=null&&t.hasOwnProperty("imageLevel")&&!u.isInteger(t.imageLevel))return"imageLevel: integer expected";if(t.weatherMapping!=null&&t.hasOwnProperty("weatherMapping")){if(!Array.isArray(t.weatherMapping))return"weatherMapping: array expected";for(var e=0;e<t.weatherMapping.length;++e){var o=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.verify(t.weatherMapping[e]);if(o)return"weatherMapping."+o}}return t.cloudsLayerUrl!=null&&t.hasOwnProperty("cloudsLayerUrl")&&!u.isString(t.cloudsLayerUrl)?"cloudsLayerUrl: string expected":t.animationDecelerationDelay!=null&&t.hasOwnProperty("animationDecelerationDelay")&&typeof t.animationDecelerationDelay!="number"?"animationDecelerationDelay: number expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions;if(t.imageUrl!=null&&(e.imageUrl=String(t.imageUrl)),t.imageExpireTime!=null&&(e.imageExpireTime=t.imageExpireTime|0),t.maxColorDistance!=null&&(e.maxColorDistance=t.maxColorDistance|0),t.imageLevel!=null&&(e.imageLevel=t.imageLevel|0),t.weatherMapping){if(!Array.isArray(t.weatherMapping))throw TypeError(".keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.weatherMapping: array expected");e.weatherMapping=[];for(var o=0;o<t.weatherMapping.length;++o){if(typeof t.weatherMapping[o]!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.weatherMapping: object expected");e.weatherMapping[o]=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.fromObject(t.weatherMapping[o])}}return t.cloudsLayerUrl!=null&&(e.cloudsLayerUrl=String(t.cloudsLayerUrl)),t.animationDecelerationDelay!=null&&(e.animationDecelerationDelay=Number(t.animationDecelerationDelay)),e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.weatherMapping=[]),e.defaults&&(o.imageUrl="",o.imageExpireTime=900,o.maxColorDistance=20,o.imageLevel=5,o.cloudsLayerUrl="",o.animationDecelerationDelay=20),t.imageUrl!=null&&t.hasOwnProperty("imageUrl")&&(o.imageUrl=t.imageUrl),t.imageExpireTime!=null&&t.hasOwnProperty("imageExpireTime")&&(o.imageExpireTime=t.imageExpireTime),t.maxColorDistance!=null&&t.hasOwnProperty("maxColorDistance")&&(o.maxColorDistance=t.maxColorDistance),t.imageLevel!=null&&t.hasOwnProperty("imageLevel")&&(o.imageLevel=t.imageLevel),t.weatherMapping&&t.weatherMapping.length){o.weatherMapping=[];for(var a=0;a<t.weatherMapping.length;++a)o.weatherMapping[a]=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.toObject(t.weatherMapping[a],e)}return t.cloudsLayerUrl!=null&&t.hasOwnProperty("cloudsLayerUrl")&&(o.cloudsLayerUrl=t.cloudsLayerUrl),t.animationDecelerationDelay!=null&&t.hasOwnProperty("animationDecelerationDelay")&&(o.animationDecelerationDelay=e.json&&!isFinite(t.animationDecelerationDelay)?String(t.animationDecelerationDelay):t.animationDecelerationDelay),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions"},l.WeatherMapping=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.colorAbgr=0,r.prototype.weatherType=0,r.prototype.elongation=1,r.prototype.opacity=0,r.prototype.fogDensity=0,r.prototype.speed0=0,r.prototype.speed1=0,r.prototype.speed2=0,r.prototype.speed3=0,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.colorAbgr=e.uint32();break}case 2:{p.weatherType=e.int32();break}case 3:{p.elongation=e.float();break}case 4:{p.opacity=e.float();break}case 5:{p.fogDensity=e.float();break}case 6:{p.speed0=e.float();break}case 7:{p.speed1=e.float();break}case 8:{p.speed2=e.float();break}case 9:{p.speed3=e.float();break}default:e.skipType(y&7);break}}if(!p.hasOwnProperty("colorAbgr"))throw u.ProtocolError("missing required 'colorAbgr'",{instance:p});if(!p.hasOwnProperty("weatherType"))throw u.ProtocolError("missing required 'weatherType'",{instance:p});return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(!u.isInteger(e.colorAbgr))return"colorAbgr: integer expected";switch(e.weatherType){default:return"weatherType: enum value expected";case 0:case 1:case 2:break}return e.elongation!=null&&e.hasOwnProperty("elongation")&&typeof e.elongation!="number"?"elongation: number expected":e.opacity!=null&&e.hasOwnProperty("opacity")&&typeof e.opacity!="number"?"opacity: number expected":e.fogDensity!=null&&e.hasOwnProperty("fogDensity")&&typeof e.fogDensity!="number"?"fogDensity: number expected":e.speed0!=null&&e.hasOwnProperty("speed0")&&typeof e.speed0!="number"?"speed0: number expected":e.speed1!=null&&e.hasOwnProperty("speed1")&&typeof e.speed1!="number"?"speed1: number expected":e.speed2!=null&&e.hasOwnProperty("speed2")&&typeof e.speed2!="number"?"speed2: number expected":e.speed3!=null&&e.hasOwnProperty("speed3")&&typeof e.speed3!="number"?"speed3: number expected":null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping)return e;var o=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping;switch(e.colorAbgr!=null&&(o.colorAbgr=e.colorAbgr>>>0),e.weatherType){case"NO_PRECIPITATION":case 0:o.weatherType=0;break;case"RAIN":case 1:o.weatherType=1;break;case"SNOW":case 2:o.weatherType=2;break}return e.elongation!=null&&(o.elongation=Number(e.elongation)),e.opacity!=null&&(o.opacity=Number(e.opacity)),e.fogDensity!=null&&(o.fogDensity=Number(e.fogDensity)),e.speed0!=null&&(o.speed0=Number(e.speed0)),e.speed1!=null&&(o.speed1=Number(e.speed1)),e.speed2!=null&&(o.speed2=Number(e.speed2)),e.speed3!=null&&(o.speed3=Number(e.speed3)),o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.colorAbgr=0,a.weatherType=o.enums===String?"NO_PRECIPITATION":0,a.elongation=1,a.opacity=0,a.fogDensity=0,a.speed0=0,a.speed1=0,a.speed2=0,a.speed3=0),e.colorAbgr!=null&&e.hasOwnProperty("colorAbgr")&&(a.colorAbgr=e.colorAbgr),e.weatherType!=null&&e.hasOwnProperty("weatherType")&&(a.weatherType=o.enums===String?n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.WeatherType[e.weatherType]:e.weatherType),e.elongation!=null&&e.hasOwnProperty("elongation")&&(a.elongation=o.json&&!isFinite(e.elongation)?String(e.elongation):e.elongation),e.opacity!=null&&e.hasOwnProperty("opacity")&&(a.opacity=o.json&&!isFinite(e.opacity)?String(e.opacity):e.opacity),e.fogDensity!=null&&e.hasOwnProperty("fogDensity")&&(a.fogDensity=o.json&&!isFinite(e.fogDensity)?String(e.fogDensity):e.fogDensity),e.speed0!=null&&e.hasOwnProperty("speed0")&&(a.speed0=o.json&&!isFinite(e.speed0)?String(e.speed0):e.speed0),e.speed1!=null&&e.hasOwnProperty("speed1")&&(a.speed1=o.json&&!isFinite(e.speed1)?String(e.speed1):e.speed1),e.speed2!=null&&e.hasOwnProperty("speed2")&&(a.speed2=o.json&&!isFinite(e.speed2)?String(e.speed2):e.speed2),e.speed3!=null&&e.hasOwnProperty("speed3")&&(a.speed3=o.json&&!isFinite(e.speed3)?String(e.speed3):e.speed3),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping"},r.WeatherType=function(){var t={},e=Object.create(t);return e[t[0]="NO_PRECIPITATION"]=0,e[t[1]="RAIN"]=1,e[t[2]="SNOW"]=2,e}(),r}(),l}(),i.CaptureOptions=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.allowSaveAsImage=!0,l.prototype.maxFreeCaptureRes=2400,l.prototype.maxPremiumCaptureRes=4800,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.CaptureOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.allowSaveAsImage=t.bool();break}case 2:{a.maxFreeCaptureRes=t.int32();break}case 3:{a.maxPremiumCaptureRes=t.int32();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.allowSaveAsImage!=null&&t.hasOwnProperty("allowSaveAsImage")&&typeof t.allowSaveAsImage!="boolean"?"allowSaveAsImage: boolean expected":t.maxFreeCaptureRes!=null&&t.hasOwnProperty("maxFreeCaptureRes")&&!u.isInteger(t.maxFreeCaptureRes)?"maxFreeCaptureRes: integer expected":t.maxPremiumCaptureRes!=null&&t.hasOwnProperty("maxPremiumCaptureRes")&&!u.isInteger(t.maxPremiumCaptureRes)?"maxPremiumCaptureRes: integer expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.CaptureOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.CaptureOptions;return t.allowSaveAsImage!=null&&(e.allowSaveAsImage=!!t.allowSaveAsImage),t.maxFreeCaptureRes!=null&&(e.maxFreeCaptureRes=t.maxFreeCaptureRes|0),t.maxPremiumCaptureRes!=null&&(e.maxPremiumCaptureRes=t.maxPremiumCaptureRes|0),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.allowSaveAsImage=!0,o.maxFreeCaptureRes=2400,o.maxPremiumCaptureRes=4800),t.allowSaveAsImage!=null&&t.hasOwnProperty("allowSaveAsImage")&&(o.allowSaveAsImage=t.allowSaveAsImage),t.maxFreeCaptureRes!=null&&t.hasOwnProperty("maxFreeCaptureRes")&&(o.maxFreeCaptureRes=t.maxFreeCaptureRes),t.maxPremiumCaptureRes!=null&&t.hasOwnProperty("maxPremiumCaptureRes")&&(o.maxPremiumCaptureRes=t.maxPremiumCaptureRes),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.CaptureOptions"},l}(),i.MapsOptions=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.enableMaps=!1,l.prototype.docsAutoDownloadEnabled=!1,l.prototype.docsAutoDownloadInterval=0,l.prototype.docsAutoUploadEnabled=!1,l.prototype.docsAutoUploadDelay=0,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.MapsOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.enableMaps=t.bool();break}case 2:{a.docsAutoDownloadEnabled=t.bool();break}case 3:{a.docsAutoDownloadInterval=t.int32();break}case 4:{a.docsAutoUploadEnabled=t.bool();break}case 5:{a.docsAutoUploadDelay=t.int32();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.enableMaps!=null&&t.hasOwnProperty("enableMaps")&&typeof t.enableMaps!="boolean"?"enableMaps: boolean expected":t.docsAutoDownloadEnabled!=null&&t.hasOwnProperty("docsAutoDownloadEnabled")&&typeof t.docsAutoDownloadEnabled!="boolean"?"docsAutoDownloadEnabled: boolean expected":t.docsAutoDownloadInterval!=null&&t.hasOwnProperty("docsAutoDownloadInterval")&&!u.isInteger(t.docsAutoDownloadInterval)?"docsAutoDownloadInterval: integer expected":t.docsAutoUploadEnabled!=null&&t.hasOwnProperty("docsAutoUploadEnabled")&&typeof t.docsAutoUploadEnabled!="boolean"?"docsAutoUploadEnabled: boolean expected":t.docsAutoUploadDelay!=null&&t.hasOwnProperty("docsAutoUploadDelay")&&!u.isInteger(t.docsAutoUploadDelay)?"docsAutoUploadDelay: integer expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.MapsOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.MapsOptions;return t.enableMaps!=null&&(e.enableMaps=!!t.enableMaps),t.docsAutoDownloadEnabled!=null&&(e.docsAutoDownloadEnabled=!!t.docsAutoDownloadEnabled),t.docsAutoDownloadInterval!=null&&(e.docsAutoDownloadInterval=t.docsAutoDownloadInterval|0),t.docsAutoUploadEnabled!=null&&(e.docsAutoUploadEnabled=!!t.docsAutoUploadEnabled),t.docsAutoUploadDelay!=null&&(e.docsAutoUploadDelay=t.docsAutoUploadDelay|0),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.enableMaps=!1,o.docsAutoDownloadEnabled=!1,o.docsAutoDownloadInterval=0,o.docsAutoUploadEnabled=!1,o.docsAutoUploadDelay=0),t.enableMaps!=null&&t.hasOwnProperty("enableMaps")&&(o.enableMaps=t.enableMaps),t.docsAutoDownloadEnabled!=null&&t.hasOwnProperty("docsAutoDownloadEnabled")&&(o.docsAutoDownloadEnabled=t.docsAutoDownloadEnabled),t.docsAutoDownloadInterval!=null&&t.hasOwnProperty("docsAutoDownloadInterval")&&(o.docsAutoDownloadInterval=t.docsAutoDownloadInterval),t.docsAutoUploadEnabled!=null&&t.hasOwnProperty("docsAutoUploadEnabled")&&(o.docsAutoUploadEnabled=t.docsAutoUploadEnabled),t.docsAutoUploadDelay!=null&&t.hasOwnProperty("docsAutoUploadDelay")&&(o.docsAutoUploadDelay=t.docsAutoUploadDelay),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.MapsOptions"},l}(),i}(),c.FetchingOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.maxRequestsPerQuery=1,i.prototype.forceMaxRequestsPerQuery=!1,i.prototype.sortBatches=!1,i.prototype.maxDrawable=2,i.prototype.maxImagery=2,i.prototype.maxTerrain=5,i.prototype.maxQuadtree=5,i.prototype.maxDioramaMetadata=1,i.prototype.maxDioramaData=0,i.prototype.maxConsumerFetchRatio=1,i.prototype.maxProEcFetchRatio=0,i.prototype.safeOverallQps=0,i.prototype.safeImageryQps=0,i.prototype.domainsForHttps="google.com gstatic.com",i.prototype.hostsForHttp="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.FetchingOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.maxRequestsPerQuery=r.int32();break}case 12:{o.forceMaxRequestsPerQuery=r.bool();break}case 13:{o.sortBatches=r.bool();break}case 2:{o.maxDrawable=r.int32();break}case 3:{o.maxImagery=r.int32();break}case 4:{o.maxTerrain=r.int32();break}case 5:{o.maxQuadtree=r.int32();break}case 6:{o.maxDioramaMetadata=r.int32();break}case 7:{o.maxDioramaData=r.int32();break}case 8:{o.maxConsumerFetchRatio=r.float();break}case 9:{o.maxProEcFetchRatio=r.float();break}case 10:{o.safeOverallQps=r.float();break}case 11:{o.safeImageryQps=r.float();break}case 14:{o.domainsForHttps=r.string();break}case 15:{o.hostsForHttp=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.maxRequestsPerQuery!=null&&r.hasOwnProperty("maxRequestsPerQuery")&&!u.isInteger(r.maxRequestsPerQuery)?"maxRequestsPerQuery: integer expected":r.forceMaxRequestsPerQuery!=null&&r.hasOwnProperty("forceMaxRequestsPerQuery")&&typeof r.forceMaxRequestsPerQuery!="boolean"?"forceMaxRequestsPerQuery: boolean expected":r.sortBatches!=null&&r.hasOwnProperty("sortBatches")&&typeof r.sortBatches!="boolean"?"sortBatches: boolean expected":r.maxDrawable!=null&&r.hasOwnProperty("maxDrawable")&&!u.isInteger(r.maxDrawable)?"maxDrawable: integer expected":r.maxImagery!=null&&r.hasOwnProperty("maxImagery")&&!u.isInteger(r.maxImagery)?"maxImagery: integer expected":r.maxTerrain!=null&&r.hasOwnProperty("maxTerrain")&&!u.isInteger(r.maxTerrain)?"maxTerrain: integer expected":r.maxQuadtree!=null&&r.hasOwnProperty("maxQuadtree")&&!u.isInteger(r.maxQuadtree)?"maxQuadtree: integer expected":r.maxDioramaMetadata!=null&&r.hasOwnProperty("maxDioramaMetadata")&&!u.isInteger(r.maxDioramaMetadata)?"maxDioramaMetadata: integer expected":r.maxDioramaData!=null&&r.hasOwnProperty("maxDioramaData")&&!u.isInteger(r.maxDioramaData)?"maxDioramaData: integer expected":r.maxConsumerFetchRatio!=null&&r.hasOwnProperty("maxConsumerFetchRatio")&&typeof r.maxConsumerFetchRatio!="number"?"maxConsumerFetchRatio: number expected":r.maxProEcFetchRatio!=null&&r.hasOwnProperty("maxProEcFetchRatio")&&typeof r.maxProEcFetchRatio!="number"?"maxProEcFetchRatio: number expected":r.safeOverallQps!=null&&r.hasOwnProperty("safeOverallQps")&&typeof r.safeOverallQps!="number"?"safeOverallQps: number expected":r.safeImageryQps!=null&&r.hasOwnProperty("safeImageryQps")&&typeof r.safeImageryQps!="number"?"safeImageryQps: number expected":r.domainsForHttps!=null&&r.hasOwnProperty("domainsForHttps")&&!u.isString(r.domainsForHttps)?"domainsForHttps: string expected":r.hostsForHttp!=null&&r.hasOwnProperty("hostsForHttp")&&!u.isString(r.hostsForHttp)?"hostsForHttp: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.FetchingOptionsProto)return r;var t=new n.keyhole.dbroot.FetchingOptionsProto;return r.maxRequestsPerQuery!=null&&(t.maxRequestsPerQuery=r.maxRequestsPerQuery|0),r.forceMaxRequestsPerQuery!=null&&(t.forceMaxRequestsPerQuery=!!r.forceMaxRequestsPerQuery),r.sortBatches!=null&&(t.sortBatches=!!r.sortBatches),r.maxDrawable!=null&&(t.maxDrawable=r.maxDrawable|0),r.maxImagery!=null&&(t.maxImagery=r.maxImagery|0),r.maxTerrain!=null&&(t.maxTerrain=r.maxTerrain|0),r.maxQuadtree!=null&&(t.maxQuadtree=r.maxQuadtree|0),r.maxDioramaMetadata!=null&&(t.maxDioramaMetadata=r.maxDioramaMetadata|0),r.maxDioramaData!=null&&(t.maxDioramaData=r.maxDioramaData|0),r.maxConsumerFetchRatio!=null&&(t.maxConsumerFetchRatio=Number(r.maxConsumerFetchRatio)),r.maxProEcFetchRatio!=null&&(t.maxProEcFetchRatio=Number(r.maxProEcFetchRatio)),r.safeOverallQps!=null&&(t.safeOverallQps=Number(r.safeOverallQps)),r.safeImageryQps!=null&&(t.safeImageryQps=Number(r.safeImageryQps)),r.domainsForHttps!=null&&(t.domainsForHttps=String(r.domainsForHttps)),r.hostsForHttp!=null&&(t.hostsForHttp=String(r.hostsForHttp)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.maxRequestsPerQuery=1,e.maxDrawable=2,e.maxImagery=2,e.maxTerrain=5,e.maxQuadtree=5,e.maxDioramaMetadata=1,e.maxDioramaData=0,e.maxConsumerFetchRatio=1,e.maxProEcFetchRatio=0,e.safeOverallQps=0,e.safeImageryQps=0,e.forceMaxRequestsPerQuery=!1,e.sortBatches=!1,e.domainsForHttps="google.com gstatic.com",e.hostsForHttp=""),r.maxRequestsPerQuery!=null&&r.hasOwnProperty("maxRequestsPerQuery")&&(e.maxRequestsPerQuery=r.maxRequestsPerQuery),r.maxDrawable!=null&&r.hasOwnProperty("maxDrawable")&&(e.maxDrawable=r.maxDrawable),r.maxImagery!=null&&r.hasOwnProperty("maxImagery")&&(e.maxImagery=r.maxImagery),r.maxTerrain!=null&&r.hasOwnProperty("maxTerrain")&&(e.maxTerrain=r.maxTerrain),r.maxQuadtree!=null&&r.hasOwnProperty("maxQuadtree")&&(e.maxQuadtree=r.maxQuadtree),r.maxDioramaMetadata!=null&&r.hasOwnProperty("maxDioramaMetadata")&&(e.maxDioramaMetadata=r.maxDioramaMetadata),r.maxDioramaData!=null&&r.hasOwnProperty("maxDioramaData")&&(e.maxDioramaData=r.maxDioramaData),r.maxConsumerFetchRatio!=null&&r.hasOwnProperty("maxConsumerFetchRatio")&&(e.maxConsumerFetchRatio=t.json&&!isFinite(r.maxConsumerFetchRatio)?String(r.maxConsumerFetchRatio):r.maxConsumerFetchRatio),r.maxProEcFetchRatio!=null&&r.hasOwnProperty("maxProEcFetchRatio")&&(e.maxProEcFetchRatio=t.json&&!isFinite(r.maxProEcFetchRatio)?String(r.maxProEcFetchRatio):r.maxProEcFetchRatio),r.safeOverallQps!=null&&r.hasOwnProperty("safeOverallQps")&&(e.safeOverallQps=t.json&&!isFinite(r.safeOverallQps)?String(r.safeOverallQps):r.safeOverallQps),r.safeImageryQps!=null&&r.hasOwnProperty("safeImageryQps")&&(e.safeImageryQps=t.json&&!isFinite(r.safeImageryQps)?String(r.safeImageryQps):r.safeImageryQps),r.forceMaxRequestsPerQuery!=null&&r.hasOwnProperty("forceMaxRequestsPerQuery")&&(e.forceMaxRequestsPerQuery=r.forceMaxRequestsPerQuery),r.sortBatches!=null&&r.hasOwnProperty("sortBatches")&&(e.sortBatches=r.sortBatches),r.domainsForHttps!=null&&r.hasOwnProperty("domainsForHttps")&&(e.domainsForHttps=r.domainsForHttps),r.hostsForHttp!=null&&r.hasOwnProperty("hostsForHttp")&&(e.hostsForHttp=r.hostsForHttp),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.FetchingOptionsProto"},i}(),c.TimeMachineOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.serverUrl="",i.prototype.isTimemachine=!1,i.prototype.dwellTimeMs=500,i.prototype.discoverabilityAltitudeMeters=15e3,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.TimeMachineOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.serverUrl=r.string();break}case 2:{o.isTimemachine=r.bool();break}case 3:{o.dwellTimeMs=r.int32();break}case 4:{o.discoverabilityAltitudeMeters=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.serverUrl!=null&&r.hasOwnProperty("serverUrl")&&!u.isString(r.serverUrl)?"serverUrl: string expected":r.isTimemachine!=null&&r.hasOwnProperty("isTimemachine")&&typeof r.isTimemachine!="boolean"?"isTimemachine: boolean expected":r.dwellTimeMs!=null&&r.hasOwnProperty("dwellTimeMs")&&!u.isInteger(r.dwellTimeMs)?"dwellTimeMs: integer expected":r.discoverabilityAltitudeMeters!=null&&r.hasOwnProperty("discoverabilityAltitudeMeters")&&!u.isInteger(r.discoverabilityAltitudeMeters)?"discoverabilityAltitudeMeters: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.TimeMachineOptionsProto)return r;var t=new n.keyhole.dbroot.TimeMachineOptionsProto;return r.serverUrl!=null&&(t.serverUrl=String(r.serverUrl)),r.isTimemachine!=null&&(t.isTimemachine=!!r.isTimemachine),r.dwellTimeMs!=null&&(t.dwellTimeMs=r.dwellTimeMs|0),r.discoverabilityAltitudeMeters!=null&&(t.discoverabilityAltitudeMeters=r.discoverabilityAltitudeMeters|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.serverUrl="",e.isTimemachine=!1,e.dwellTimeMs=500,e.discoverabilityAltitudeMeters=15e3),r.serverUrl!=null&&r.hasOwnProperty("serverUrl")&&(e.serverUrl=r.serverUrl),r.isTimemachine!=null&&r.hasOwnProperty("isTimemachine")&&(e.isTimemachine=r.isTimemachine),r.dwellTimeMs!=null&&r.hasOwnProperty("dwellTimeMs")&&(e.dwellTimeMs=r.dwellTimeMs),r.discoverabilityAltitudeMeters!=null&&r.hasOwnProperty("discoverabilityAltitudeMeters")&&(e.discoverabilityAltitudeMeters=r.discoverabilityAltitudeMeters),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.TimeMachineOptionsProto"},i}(),c.AutopiaOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.metadataServerUrl="http://cbk0.google.com/cbk",i.prototype.depthmapServerUrl="http://cbk0.google.com/cbk",i.prototype.coverageOverlayUrl="",i.prototype.maxImageryQps=0,i.prototype.maxMetadataDepthmapQps=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.AutopiaOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.metadataServerUrl=r.string();break}case 2:{o.depthmapServerUrl=r.string();break}case 3:{o.coverageOverlayUrl=r.string();break}case 4:{o.maxImageryQps=r.float();break}case 5:{o.maxMetadataDepthmapQps=r.float();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.metadataServerUrl!=null&&r.hasOwnProperty("metadataServerUrl")&&!u.isString(r.metadataServerUrl)?"metadataServerUrl: string expected":r.depthmapServerUrl!=null&&r.hasOwnProperty("depthmapServerUrl")&&!u.isString(r.depthmapServerUrl)?"depthmapServerUrl: string expected":r.coverageOverlayUrl!=null&&r.hasOwnProperty("coverageOverlayUrl")&&!u.isString(r.coverageOverlayUrl)?"coverageOverlayUrl: string expected":r.maxImageryQps!=null&&r.hasOwnProperty("maxImageryQps")&&typeof r.maxImageryQps!="number"?"maxImageryQps: number expected":r.maxMetadataDepthmapQps!=null&&r.hasOwnProperty("maxMetadataDepthmapQps")&&typeof r.maxMetadataDepthmapQps!="number"?"maxMetadataDepthmapQps: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.AutopiaOptionsProto)return r;var t=new n.keyhole.dbroot.AutopiaOptionsProto;return r.metadataServerUrl!=null&&(t.metadataServerUrl=String(r.metadataServerUrl)),r.depthmapServerUrl!=null&&(t.depthmapServerUrl=String(r.depthmapServerUrl)),r.coverageOverlayUrl!=null&&(t.coverageOverlayUrl=String(r.coverageOverlayUrl)),r.maxImageryQps!=null&&(t.maxImageryQps=Number(r.maxImageryQps)),r.maxMetadataDepthmapQps!=null&&(t.maxMetadataDepthmapQps=Number(r.maxMetadataDepthmapQps)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.metadataServerUrl="http://cbk0.google.com/cbk",e.depthmapServerUrl="http://cbk0.google.com/cbk",e.coverageOverlayUrl="",e.maxImageryQps=0,e.maxMetadataDepthmapQps=0),r.metadataServerUrl!=null&&r.hasOwnProperty("metadataServerUrl")&&(e.metadataServerUrl=r.metadataServerUrl),r.depthmapServerUrl!=null&&r.hasOwnProperty("depthmapServerUrl")&&(e.depthmapServerUrl=r.depthmapServerUrl),r.coverageOverlayUrl!=null&&r.hasOwnProperty("coverageOverlayUrl")&&(e.coverageOverlayUrl=r.coverageOverlayUrl),r.maxImageryQps!=null&&r.hasOwnProperty("maxImageryQps")&&(e.maxImageryQps=t.json&&!isFinite(r.maxImageryQps)?String(r.maxImageryQps):r.maxImageryQps),r.maxMetadataDepthmapQps!=null&&r.hasOwnProperty("maxMetadataDepthmapQps")&&(e.maxMetadataDepthmapQps=t.json&&!isFinite(r.maxMetadataDepthmapQps)?String(r.maxMetadataDepthmapQps):r.maxMetadataDepthmapQps),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.AutopiaOptionsProto"},i}(),c.CSIOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.samplingPercentage=0,i.prototype.experimentId="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.CSIOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.samplingPercentage=r.int32();break}case 2:{o.experimentId=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.samplingPercentage!=null&&r.hasOwnProperty("samplingPercentage")&&!u.isInteger(r.samplingPercentage)?"samplingPercentage: integer expected":r.experimentId!=null&&r.hasOwnProperty("experimentId")&&!u.isString(r.experimentId)?"experimentId: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.CSIOptionsProto)return r;var t=new n.keyhole.dbroot.CSIOptionsProto;return r.samplingPercentage!=null&&(t.samplingPercentage=r.samplingPercentage|0),r.experimentId!=null&&(t.experimentId=String(r.experimentId)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.samplingPercentage=0,e.experimentId=""),r.samplingPercentage!=null&&r.hasOwnProperty("samplingPercentage")&&(e.samplingPercentage=r.samplingPercentage),r.experimentId!=null&&r.hasOwnProperty("experimentId")&&(e.experimentId=r.experimentId),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.CSIOptionsProto"},i}(),c.SearchTabProto=function(){function i(l){if(this.inputBox=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isVisible=!1,i.prototype.tabLabel=null,i.prototype.baseUrl="",i.prototype.viewportPrefix="",i.prototype.inputBox=u.emptyArray,i.prototype.requirement=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.SearchTabProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isVisible=r.bool();break}case 2:{o.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.baseUrl=r.string();break}case 4:{o.viewportPrefix=r.string();break}case 5:{o.inputBox&&o.inputBox.length||(o.inputBox=[]),o.inputBox.push(n.keyhole.dbroot.SearchTabProto.InputBoxInfo.decode(r,r.uint32()));break}case 6:{o.requirement=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("isVisible"))throw u.ProtocolError("missing required 'isVisible'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(typeof r.isVisible!="boolean")return"isVisible: boolean expected";if(r.tabLabel!=null&&r.hasOwnProperty("tabLabel")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.tabLabel);if(t)return"tabLabel."+t}if(r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&!u.isString(r.baseUrl))return"baseUrl: string expected";if(r.viewportPrefix!=null&&r.hasOwnProperty("viewportPrefix")&&!u.isString(r.viewportPrefix))return"viewportPrefix: string expected";if(r.inputBox!=null&&r.hasOwnProperty("inputBox")){if(!Array.isArray(r.inputBox))return"inputBox: array expected";for(var e=0;e<r.inputBox.length;++e){var t=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.verify(r.inputBox[e]);if(t)return"inputBox."+t}}if(r.requirement!=null&&r.hasOwnProperty("requirement")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirement);if(t)return"requirement."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.SearchTabProto)return r;var t=new n.keyhole.dbroot.SearchTabProto;if(r.isVisible!=null&&(t.isVisible=!!r.isVisible),r.tabLabel!=null){if(typeof r.tabLabel!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.tabLabel: object expected");t.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.tabLabel)}if(r.baseUrl!=null&&(t.baseUrl=String(r.baseUrl)),r.viewportPrefix!=null&&(t.viewportPrefix=String(r.viewportPrefix)),r.inputBox){if(!Array.isArray(r.inputBox))throw TypeError(".keyhole.dbroot.SearchTabProto.inputBox: array expected");t.inputBox=[];for(var e=0;e<r.inputBox.length;++e){if(typeof r.inputBox[e]!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.inputBox: object expected");t.inputBox[e]=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.fromObject(r.inputBox[e])}}if(r.requirement!=null){if(typeof r.requirement!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.requirement: object expected");t.requirement=n.keyhole.dbroot.RequirementProto.fromObject(r.requirement)}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.inputBox=[]),t.defaults&&(e.isVisible=!1,e.tabLabel=null,e.baseUrl="",e.viewportPrefix="",e.requirement=null),r.isVisible!=null&&r.hasOwnProperty("isVisible")&&(e.isVisible=r.isVisible),r.tabLabel!=null&&r.hasOwnProperty("tabLabel")&&(e.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.tabLabel,t)),r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&(e.baseUrl=r.baseUrl),r.viewportPrefix!=null&&r.hasOwnProperty("viewportPrefix")&&(e.viewportPrefix=r.viewportPrefix),r.inputBox&&r.inputBox.length){e.inputBox=[];for(var o=0;o<r.inputBox.length;++o)e.inputBox[o]=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.toObject(r.inputBox[o],t)}return r.requirement!=null&&r.hasOwnProperty("requirement")&&(e.requirement=n.keyhole.dbroot.RequirementProto.toObject(r.requirement,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.SearchTabProto"},i.InputBoxInfo=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.label=null,l.prototype.queryVerb="",l.prototype.queryPrepend="",l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.SearchTabProto.InputBoxInfo;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.label=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 2:{a.queryVerb=t.string();break}case 3:{a.queryPrepend=t.string();break}default:t.skipType(p&7);break}}if(!a.hasOwnProperty("label"))throw u.ProtocolError("missing required 'label'",{instance:a});if(!a.hasOwnProperty("queryVerb"))throw u.ProtocolError("missing required 'queryVerb'",{instance:a});return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";{var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.label);if(e)return"label."+e}return u.isString(t.queryVerb)?t.queryPrepend!=null&&t.hasOwnProperty("queryPrepend")&&!u.isString(t.queryPrepend)?"queryPrepend: string expected":null:"queryVerb: string expected"},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.SearchTabProto.InputBoxInfo)return t;var e=new n.keyhole.dbroot.SearchTabProto.InputBoxInfo;if(t.label!=null){if(typeof t.label!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.InputBoxInfo.label: object expected");e.label=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.label)}return t.queryVerb!=null&&(e.queryVerb=String(t.queryVerb)),t.queryPrepend!=null&&(e.queryPrepend=String(t.queryPrepend)),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.label=null,o.queryVerb="",o.queryPrepend=""),t.label!=null&&t.hasOwnProperty("label")&&(o.label=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.label,e)),t.queryVerb!=null&&t.hasOwnProperty("queryVerb")&&(o.queryVerb=t.queryVerb),t.queryPrepend!=null&&t.hasOwnProperty("queryPrepend")&&(o.queryPrepend=t.queryPrepend),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.SearchTabProto.InputBoxInfo"},l}(),i}(),c.CobrandProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.logoUrl="",i.prototype.xCoord=null,i.prototype.yCoord=null,i.prototype.tiePoint=6,i.prototype.screenSize=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.CobrandProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.logoUrl=r.string();break}case 2:{o.xCoord=n.keyhole.dbroot.CobrandProto.Coord.decode(r,r.uint32());break}case 3:{o.yCoord=n.keyhole.dbroot.CobrandProto.Coord.decode(r,r.uint32());break}case 4:{o.tiePoint=r.int32();break}case 5:{o.screenSize=r.double();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("logoUrl"))throw u.ProtocolError("missing required 'logoUrl'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.logoUrl))return"logoUrl: string expected";if(r.xCoord!=null&&r.hasOwnProperty("xCoord")){var t=n.keyhole.dbroot.CobrandProto.Coord.verify(r.xCoord);if(t)return"xCoord."+t}if(r.yCoord!=null&&r.hasOwnProperty("yCoord")){var t=n.keyhole.dbroot.CobrandProto.Coord.verify(r.yCoord);if(t)return"yCoord."+t}if(r.tiePoint!=null&&r.hasOwnProperty("tiePoint"))switch(r.tiePoint){default:return"tiePoint: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break}return r.screenSize!=null&&r.hasOwnProperty("screenSize")&&typeof r.screenSize!="number"?"screenSize: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.CobrandProto)return r;var t=new n.keyhole.dbroot.CobrandProto;if(r.logoUrl!=null&&(t.logoUrl=String(r.logoUrl)),r.xCoord!=null){if(typeof r.xCoord!="object")throw TypeError(".keyhole.dbroot.CobrandProto.xCoord: object expected");t.xCoord=n.keyhole.dbroot.CobrandProto.Coord.fromObject(r.xCoord)}if(r.yCoord!=null){if(typeof r.yCoord!="object")throw TypeError(".keyhole.dbroot.CobrandProto.yCoord: object expected");t.yCoord=n.keyhole.dbroot.CobrandProto.Coord.fromObject(r.yCoord)}switch(r.tiePoint){case"TOP_LEFT":case 0:t.tiePoint=0;break;case"TOP_CENTER":case 1:t.tiePoint=1;break;case"TOP_RIGHT":case 2:t.tiePoint=2;break;case"MID_LEFT":case 3:t.tiePoint=3;break;case"MID_CENTER":case 4:t.tiePoint=4;break;case"MID_RIGHT":case 5:t.tiePoint=5;break;case"BOTTOM_LEFT":case 6:t.tiePoint=6;break;case"BOTTOM_CENTER":case 7:t.tiePoint=7;break;case"BOTTOM_RIGHT":case 8:t.tiePoint=8;break}return r.screenSize!=null&&(t.screenSize=Number(r.screenSize)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.logoUrl="",e.xCoord=null,e.yCoord=null,e.tiePoint=t.enums===String?"BOTTOM_LEFT":6,e.screenSize=0),r.logoUrl!=null&&r.hasOwnProperty("logoUrl")&&(e.logoUrl=r.logoUrl),r.xCoord!=null&&r.hasOwnProperty("xCoord")&&(e.xCoord=n.keyhole.dbroot.CobrandProto.Coord.toObject(r.xCoord,t)),r.yCoord!=null&&r.hasOwnProperty("yCoord")&&(e.yCoord=n.keyhole.dbroot.CobrandProto.Coord.toObject(r.yCoord,t)),r.tiePoint!=null&&r.hasOwnProperty("tiePoint")&&(e.tiePoint=t.enums===String?n.keyhole.dbroot.CobrandProto.TiePoint[r.tiePoint]:r.tiePoint),r.screenSize!=null&&r.hasOwnProperty("screenSize")&&(e.screenSize=t.json&&!isFinite(r.screenSize)?String(r.screenSize):r.screenSize),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.CobrandProto"},i.Coord=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.value=0,l.prototype.isRelative=!1,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.CobrandProto.Coord;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.value=t.double();break}case 2:{a.isRelative=t.bool();break}default:t.skipType(p&7);break}}if(!a.hasOwnProperty("value"))throw u.ProtocolError("missing required 'value'",{instance:a});return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":typeof t.value!="number"?"value: number expected":t.isRelative!=null&&t.hasOwnProperty("isRelative")&&typeof t.isRelative!="boolean"?"isRelative: boolean expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.CobrandProto.Coord)return t;var e=new n.keyhole.dbroot.CobrandProto.Coord;return t.value!=null&&(e.value=Number(t.value)),t.isRelative!=null&&(e.isRelative=!!t.isRelative),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.value=0,o.isRelative=!1),t.value!=null&&t.hasOwnProperty("value")&&(o.value=e.json&&!isFinite(t.value)?String(t.value):t.value),t.isRelative!=null&&t.hasOwnProperty("isRelative")&&(o.isRelative=t.isRelative),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.CobrandProto.Coord"},l}(),i.TiePoint=function(){var l={},r=Object.create(l);return r[l[0]="TOP_LEFT"]=0,r[l[1]="TOP_CENTER"]=1,r[l[2]="TOP_RIGHT"]=2,r[l[3]="MID_LEFT"]=3,r[l[4]="MID_CENTER"]=4,r[l[5]="MID_RIGHT"]=5,r[l[6]="BOTTOM_LEFT"]=6,r[l[7]="BOTTOM_CENTER"]=7,r[l[8]="BOTTOM_RIGHT"]=8,r}(),i}(),c.DatabaseDescriptionProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.databaseName=null,i.prototype.databaseUrl="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DatabaseDescriptionProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.databaseName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.databaseUrl=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("databaseUrl"))throw u.ProtocolError("missing required 'databaseUrl'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.databaseName!=null&&r.hasOwnProperty("databaseName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.databaseName);if(t)return"databaseName."+t}return u.isString(r.databaseUrl)?null:"databaseUrl: string expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DatabaseDescriptionProto)return r;var t=new n.keyhole.dbroot.DatabaseDescriptionProto;if(r.databaseName!=null){if(typeof r.databaseName!="object")throw TypeError(".keyhole.dbroot.DatabaseDescriptionProto.databaseName: object expected");t.databaseName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.databaseName)}return r.databaseUrl!=null&&(t.databaseUrl=String(r.databaseUrl)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.databaseName=null,e.databaseUrl=""),r.databaseName!=null&&r.hasOwnProperty("databaseName")&&(e.databaseName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.databaseName,t)),r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&(e.databaseUrl=r.databaseUrl),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DatabaseDescriptionProto"},i}(),c.ConfigScriptProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.scriptName="",i.prototype.scriptData="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ConfigScriptProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.scriptName=r.string();break}case 2:{o.scriptData=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("scriptName"))throw u.ProtocolError("missing required 'scriptName'",{instance:o});if(!o.hasOwnProperty("scriptData"))throw u.ProtocolError("missing required 'scriptData'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isString(r.scriptName)?u.isString(r.scriptData)?null:"scriptData: string expected":"scriptName: string expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ConfigScriptProto)return r;var t=new n.keyhole.dbroot.ConfigScriptProto;return r.scriptName!=null&&(t.scriptName=String(r.scriptName)),r.scriptData!=null&&(t.scriptData=String(r.scriptData)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.scriptName="",e.scriptData=""),r.scriptName!=null&&r.hasOwnProperty("scriptName")&&(e.scriptName=r.scriptName),r.scriptData!=null&&r.hasOwnProperty("scriptData")&&(e.scriptData=r.scriptData),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ConfigScriptProto"},i}(),c.SwoopParamsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.startDistInMeters=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.SwoopParamsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.startDistInMeters=r.double();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.startDistInMeters!=null&&r.hasOwnProperty("startDistInMeters")&&typeof r.startDistInMeters!="number"?"startDistInMeters: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.SwoopParamsProto)return r;var t=new n.keyhole.dbroot.SwoopParamsProto;return r.startDistInMeters!=null&&(t.startDistInMeters=Number(r.startDistInMeters)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.startDistInMeters=0),r.startDistInMeters!=null&&r.hasOwnProperty("startDistInMeters")&&(e.startDistInMeters=t.json&&!isFinite(r.startDistInMeters)?String(r.startDistInMeters):r.startDistInMeters),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.SwoopParamsProto"},i}(),c.PostingServerProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.name=null,i.prototype.baseUrl=null,i.prototype.postWizardPath=null,i.prototype.fileSubmitPath=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PostingServerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.name=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 4:{o.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.name!=null&&r.hasOwnProperty("name")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.name);if(t)return"name."+t}if(r.baseUrl!=null&&r.hasOwnProperty("baseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.baseUrl);if(t)return"baseUrl."+t}if(r.postWizardPath!=null&&r.hasOwnProperty("postWizardPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.postWizardPath);if(t)return"postWizardPath."+t}if(r.fileSubmitPath!=null&&r.hasOwnProperty("fileSubmitPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.fileSubmitPath);if(t)return"fileSubmitPath."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PostingServerProto)return r;var t=new n.keyhole.dbroot.PostingServerProto;if(r.name!=null){if(typeof r.name!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.name: object expected");t.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.name)}if(r.baseUrl!=null){if(typeof r.baseUrl!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.baseUrl: object expected");t.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.baseUrl)}if(r.postWizardPath!=null){if(typeof r.postWizardPath!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.postWizardPath: object expected");t.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.postWizardPath)}if(r.fileSubmitPath!=null){if(typeof r.fileSubmitPath!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.fileSubmitPath: object expected");t.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.fileSubmitPath)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.name=null,e.baseUrl=null,e.postWizardPath=null,e.fileSubmitPath=null),r.name!=null&&r.hasOwnProperty("name")&&(e.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.name,t)),r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&(e.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.baseUrl,t)),r.postWizardPath!=null&&r.hasOwnProperty("postWizardPath")&&(e.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.postWizardPath,t)),r.fileSubmitPath!=null&&r.hasOwnProperty("fileSubmitPath")&&(e.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.fileSubmitPath,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PostingServerProto"},i}(),c.PlanetaryDatabaseProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url=null,i.prototype.name=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PlanetaryDatabaseProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.url=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.name=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("url"))throw u.ProtocolError("missing required 'url'",{instance:o});if(!o.hasOwnProperty("name"))throw u.ProtocolError("missing required 'name'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";{var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.url);if(t)return"url."+t}{var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.name);if(t)return"name."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PlanetaryDatabaseProto)return r;var t=new n.keyhole.dbroot.PlanetaryDatabaseProto;if(r.url!=null){if(typeof r.url!="object")throw TypeError(".keyhole.dbroot.PlanetaryDatabaseProto.url: object expected");t.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.url)}if(r.name!=null){if(typeof r.name!="object")throw TypeError(".keyhole.dbroot.PlanetaryDatabaseProto.name: object expected");t.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.name)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.url=null,e.name=null),r.url!=null&&r.hasOwnProperty("url")&&(e.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.url,t)),r.name!=null&&r.hasOwnProperty("name")&&(e.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.name,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PlanetaryDatabaseProto"},i}(),c.LogServerProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url=null,i.prototype.enable=!1,i.prototype.throttlingFactor=1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LogServerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.url=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.enable=r.bool();break}case 3:{o.throttlingFactor=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.url!=null&&r.hasOwnProperty("url")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.url);if(t)return"url."+t}return r.enable!=null&&r.hasOwnProperty("enable")&&typeof r.enable!="boolean"?"enable: boolean expected":r.throttlingFactor!=null&&r.hasOwnProperty("throttlingFactor")&&!u.isInteger(r.throttlingFactor)?"throttlingFactor: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LogServerProto)return r;var t=new n.keyhole.dbroot.LogServerProto;if(r.url!=null){if(typeof r.url!="object")throw TypeError(".keyhole.dbroot.LogServerProto.url: object expected");t.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.url)}return r.enable!=null&&(t.enable=!!r.enable),r.throttlingFactor!=null&&(t.throttlingFactor=r.throttlingFactor|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.url=null,e.enable=!1,e.throttlingFactor=1),r.url!=null&&r.hasOwnProperty("url")&&(e.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.url,t)),r.enable!=null&&r.hasOwnProperty("enable")&&(e.enable=r.enable),r.throttlingFactor!=null&&r.hasOwnProperty("throttlingFactor")&&(e.throttlingFactor=r.throttlingFactor),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LogServerProto"},i}(),c.EndSnippetProto=function(){function i(l){if(this.mfeDomains=[],this.searchTab=[],this.cobrandInfo=[],this.validDatabase=[],this.configScript=[],this.planetaryDatabase=[],this.filmstripConfig=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.model=null,i.prototype.authServerUrl=null,i.prototype.disableAuthentication=!1,i.prototype.mfeDomains=u.emptyArray,i.prototype.mfeLangParam="hl=$5Bhl5D",i.prototype.adsUrlPatterns="",i.prototype.reverseGeocoderUrl=null,i.prototype.reverseGeocoderProtocolVersion=3,i.prototype.skyDatabaseIsAvailable=!0,i.prototype.skyDatabaseUrl=null,i.prototype.defaultWebPageIntlUrl=null,i.prototype.numStartUpTips=17,i.prototype.startUpTipsUrl=null,i.prototype.numProStartUpTips=0,i.prototype.proStartUpTipsUrl=null,i.prototype.startupTipsIntlUrl=null,i.prototype.userGuideIntlUrl=null,i.prototype.supportCenterIntlUrl=null,i.prototype.businessListingIntlUrl=null,i.prototype.supportAnswerIntlUrl=null,i.prototype.supportTopicIntlUrl=null,i.prototype.supportRequestIntlUrl=null,i.prototype.earthIntlUrl=null,i.prototype.addContentUrl=null,i.prototype.sketchupNotInstalledUrl=null,i.prototype.sketchupErrorUrl=null,i.prototype.freeLicenseUrl=null,i.prototype.proLicenseUrl=null,i.prototype.tutorialUrl=null,i.prototype.keyboardShortcutsUrl=null,i.prototype.releaseNotesUrl=null,i.prototype.hideUserData=!1,i.prototype.useGeLogo=!0,i.prototype.dioramaDescriptionUrlBase=null,i.prototype.dioramaDefaultColor=4291281607,i.prototype.dioramaBlacklistUrl=null,i.prototype.clientOptions=null,i.prototype.fetchingOptions=null,i.prototype.timeMachineOptions=null,i.prototype.csiOptions=null,i.prototype.searchTab=u.emptyArray,i.prototype.cobrandInfo=u.emptyArray,i.prototype.validDatabase=u.emptyArray,i.prototype.configScript=u.emptyArray,i.prototype.deauthServerUrl=null,i.prototype.swoopParameters=null,i.prototype.bbsServerInfo=null,i.prototype.dataErrorServerInfo=null,i.prototype.planetaryDatabase=u.emptyArray,i.prototype.logServer=null,i.prototype.autopiaOptions=null,i.prototype.searchConfig=null,i.prototype.searchInfo=null,i.prototype.elevationServiceBaseUrl="http://maps.google.com/maps/api/elevation/",i.prototype.elevationProfileQueryDelay=500,i.prototype.proUpgradeUrl=null,i.prototype.earthCommunityUrl=null,i.prototype.googleMapsUrl=null,i.prototype.sharingUrl=null,i.prototype.privacyPolicyUrl=null,i.prototype.doGplusUserCheck=!1,i.prototype.rocktreeDataProto=null,i.prototype.filmstripConfig=u.emptyArray,i.prototype.showSigninButton=!1,i.prototype.proMeasureUpsellUrl=null,i.prototype.proPrintUpsellUrl=null,i.prototype.starDataProto=null,i.prototype.feedbackUrl=null,i.prototype.oauth2LoginUrl=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.EndSnippetProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.model=n.keyhole.dbroot.PlanetModelProto.decode(r,r.uint32());break}case 2:{o.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.disableAuthentication=r.bool();break}case 4:{o.mfeDomains&&o.mfeDomains.length||(o.mfeDomains=[]),o.mfeDomains.push(n.keyhole.dbroot.MfeDomainFeaturesProto.decode(r,r.uint32()));break}case 5:{o.mfeLangParam=r.string();break}case 6:{o.adsUrlPatterns=r.string();break}case 7:{o.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 8:{o.reverseGeocoderProtocolVersion=r.int32();break}case 9:{o.skyDatabaseIsAvailable=r.bool();break}case 10:{o.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 11:{o.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 12:{o.numStartUpTips=r.int32();break}case 13:{o.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 51:{o.numProStartUpTips=r.int32();break}case 52:{o.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 64:{o.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 14:{o.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 15:{o.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 16:{o.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 17:{o.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 18:{o.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 19:{o.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 20:{o.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 21:{o.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 22:{o.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 23:{o.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 24:{o.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 25:{o.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 48:{o.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 49:{o.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 50:{o.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 26:{o.hideUserData=r.bool();break}case 27:{o.useGeLogo=r.bool();break}case 28:{o.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 29:{o.dioramaDefaultColor=r.uint32();break}case 53:{o.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 30:{o.clientOptions=n.keyhole.dbroot.ClientOptionsProto.decode(r,r.uint32());break}case 31:{o.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.decode(r,r.uint32());break}case 32:{o.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.decode(r,r.uint32());break}case 33:{o.csiOptions=n.keyhole.dbroot.CSIOptionsProto.decode(r,r.uint32());break}case 34:{o.searchTab&&o.searchTab.length||(o.searchTab=[]),o.searchTab.push(n.keyhole.dbroot.SearchTabProto.decode(r,r.uint32()));break}case 35:{o.cobrandInfo&&o.cobrandInfo.length||(o.cobrandInfo=[]),o.cobrandInfo.push(n.keyhole.dbroot.CobrandProto.decode(r,r.uint32()));break}case 36:{o.validDatabase&&o.validDatabase.length||(o.validDatabase=[]),o.validDatabase.push(n.keyhole.dbroot.DatabaseDescriptionProto.decode(r,r.uint32()));break}case 37:{o.configScript&&o.configScript.length||(o.configScript=[]),o.configScript.push(n.keyhole.dbroot.ConfigScriptProto.decode(r,r.uint32()));break}case 38:{o.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 39:{o.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.decode(r,r.uint32());break}case 40:{o.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.decode(r,r.uint32());break}case 41:{o.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.decode(r,r.uint32());break}case 42:{o.planetaryDatabase&&o.planetaryDatabase.length||(o.planetaryDatabase=[]),o.planetaryDatabase.push(n.keyhole.dbroot.PlanetaryDatabaseProto.decode(r,r.uint32()));break}case 43:{o.logServer=n.keyhole.dbroot.LogServerProto.decode(r,r.uint32());break}case 44:{o.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.decode(r,r.uint32());break}case 54:{o.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.decode(r,r.uint32());break}case 45:{o.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.decode(r,r.uint32());break}case 46:{o.elevationServiceBaseUrl=r.string();break}case 47:{o.elevationProfileQueryDelay=r.int32();break}case 55:{o.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 56:{o.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 57:{o.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 58:{o.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 59:{o.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 60:{o.doGplusUserCheck=r.bool();break}case 61:{o.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.decode(r,r.uint32());break}case 62:{o.filmstripConfig&&o.filmstripConfig.length||(o.filmstripConfig=[]),o.filmstripConfig.push(n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.decode(r,r.uint32()));break}case 63:{o.showSigninButton=r.bool();break}case 65:{o.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 66:{o.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 67:{o.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.decode(r,r.uint32());break}case 68:{o.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 69:{o.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.model!=null&&r.hasOwnProperty("model")){var t=n.keyhole.dbroot.PlanetModelProto.verify(r.model);if(t)return"model."+t}if(r.authServerUrl!=null&&r.hasOwnProperty("authServerUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.authServerUrl);if(t)return"authServerUrl."+t}if(r.disableAuthentication!=null&&r.hasOwnProperty("disableAuthentication")&&typeof r.disableAuthentication!="boolean")return"disableAuthentication: boolean expected";if(r.mfeDomains!=null&&r.hasOwnProperty("mfeDomains")){if(!Array.isArray(r.mfeDomains))return"mfeDomains: array expected";for(var e=0;e<r.mfeDomains.length;++e){var t=n.keyhole.dbroot.MfeDomainFeaturesProto.verify(r.mfeDomains[e]);if(t)return"mfeDomains."+t}}if(r.mfeLangParam!=null&&r.hasOwnProperty("mfeLangParam")&&!u.isString(r.mfeLangParam))return"mfeLangParam: string expected";if(r.adsUrlPatterns!=null&&r.hasOwnProperty("adsUrlPatterns")&&!u.isString(r.adsUrlPatterns))return"adsUrlPatterns: string expected";if(r.reverseGeocoderUrl!=null&&r.hasOwnProperty("reverseGeocoderUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.reverseGeocoderUrl);if(t)return"reverseGeocoderUrl."+t}if(r.reverseGeocoderProtocolVersion!=null&&r.hasOwnProperty("reverseGeocoderProtocolVersion")&&!u.isInteger(r.reverseGeocoderProtocolVersion))return"reverseGeocoderProtocolVersion: integer expected";if(r.skyDatabaseIsAvailable!=null&&r.hasOwnProperty("skyDatabaseIsAvailable")&&typeof r.skyDatabaseIsAvailable!="boolean")return"skyDatabaseIsAvailable: boolean expected";if(r.skyDatabaseUrl!=null&&r.hasOwnProperty("skyDatabaseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.skyDatabaseUrl);if(t)return"skyDatabaseUrl."+t}if(r.defaultWebPageIntlUrl!=null&&r.hasOwnProperty("defaultWebPageIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.defaultWebPageIntlUrl);if(t)return"defaultWebPageIntlUrl."+t}if(r.numStartUpTips!=null&&r.hasOwnProperty("numStartUpTips")&&!u.isInteger(r.numStartUpTips))return"numStartUpTips: integer expected";if(r.startUpTipsUrl!=null&&r.hasOwnProperty("startUpTipsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.startUpTipsUrl);if(t)return"startUpTipsUrl."+t}if(r.numProStartUpTips!=null&&r.hasOwnProperty("numProStartUpTips")&&!u.isInteger(r.numProStartUpTips))return"numProStartUpTips: integer expected";if(r.proStartUpTipsUrl!=null&&r.hasOwnProperty("proStartUpTipsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proStartUpTipsUrl);if(t)return"proStartUpTipsUrl."+t}if(r.startupTipsIntlUrl!=null&&r.hasOwnProperty("startupTipsIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.startupTipsIntlUrl);if(t)return"startupTipsIntlUrl."+t}if(r.userGuideIntlUrl!=null&&r.hasOwnProperty("userGuideIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.userGuideIntlUrl);if(t)return"userGuideIntlUrl."+t}if(r.supportCenterIntlUrl!=null&&r.hasOwnProperty("supportCenterIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportCenterIntlUrl);if(t)return"supportCenterIntlUrl."+t}if(r.businessListingIntlUrl!=null&&r.hasOwnProperty("businessListingIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.businessListingIntlUrl);if(t)return"businessListingIntlUrl."+t}if(r.supportAnswerIntlUrl!=null&&r.hasOwnProperty("supportAnswerIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportAnswerIntlUrl);if(t)return"supportAnswerIntlUrl."+t}if(r.supportTopicIntlUrl!=null&&r.hasOwnProperty("supportTopicIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportTopicIntlUrl);if(t)return"supportTopicIntlUrl."+t}if(r.supportRequestIntlUrl!=null&&r.hasOwnProperty("supportRequestIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportRequestIntlUrl);if(t)return"supportRequestIntlUrl."+t}if(r.earthIntlUrl!=null&&r.hasOwnProperty("earthIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.earthIntlUrl);if(t)return"earthIntlUrl."+t}if(r.addContentUrl!=null&&r.hasOwnProperty("addContentUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.addContentUrl);if(t)return"addContentUrl."+t}if(r.sketchupNotInstalledUrl!=null&&r.hasOwnProperty("sketchupNotInstalledUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sketchupNotInstalledUrl);if(t)return"sketchupNotInstalledUrl."+t}if(r.sketchupErrorUrl!=null&&r.hasOwnProperty("sketchupErrorUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sketchupErrorUrl);if(t)return"sketchupErrorUrl."+t}if(r.freeLicenseUrl!=null&&r.hasOwnProperty("freeLicenseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.freeLicenseUrl);if(t)return"freeLicenseUrl."+t}if(r.proLicenseUrl!=null&&r.hasOwnProperty("proLicenseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proLicenseUrl);if(t)return"proLicenseUrl."+t}if(r.tutorialUrl!=null&&r.hasOwnProperty("tutorialUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.tutorialUrl);if(t)return"tutorialUrl."+t}if(r.keyboardShortcutsUrl!=null&&r.hasOwnProperty("keyboardShortcutsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.keyboardShortcutsUrl);if(t)return"keyboardShortcutsUrl."+t}if(r.releaseNotesUrl!=null&&r.hasOwnProperty("releaseNotesUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.releaseNotesUrl);if(t)return"releaseNotesUrl."+t}if(r.hideUserData!=null&&r.hasOwnProperty("hideUserData")&&typeof r.hideUserData!="boolean")return"hideUserData: boolean expected";if(r.useGeLogo!=null&&r.hasOwnProperty("useGeLogo")&&typeof r.useGeLogo!="boolean")return"useGeLogo: boolean expected";if(r.dioramaDescriptionUrlBase!=null&&r.hasOwnProperty("dioramaDescriptionUrlBase")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.dioramaDescriptionUrlBase);if(t)return"dioramaDescriptionUrlBase."+t}if(r.dioramaDefaultColor!=null&&r.hasOwnProperty("dioramaDefaultColor")&&!u.isInteger(r.dioramaDefaultColor))return"dioramaDefaultColor: integer expected";if(r.dioramaBlacklistUrl!=null&&r.hasOwnProperty("dioramaBlacklistUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.dioramaBlacklistUrl);if(t)return"dioramaBlacklistUrl."+t}if(r.clientOptions!=null&&r.hasOwnProperty("clientOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.verify(r.clientOptions);if(t)return"clientOptions."+t}if(r.fetchingOptions!=null&&r.hasOwnProperty("fetchingOptions")){var t=n.keyhole.dbroot.FetchingOptionsProto.verify(r.fetchingOptions);if(t)return"fetchingOptions."+t}if(r.timeMachineOptions!=null&&r.hasOwnProperty("timeMachineOptions")){var t=n.keyhole.dbroot.TimeMachineOptionsProto.verify(r.timeMachineOptions);if(t)return"timeMachineOptions."+t}if(r.csiOptions!=null&&r.hasOwnProperty("csiOptions")){var t=n.keyhole.dbroot.CSIOptionsProto.verify(r.csiOptions);if(t)return"csiOptions."+t}if(r.searchTab!=null&&r.hasOwnProperty("searchTab")){if(!Array.isArray(r.searchTab))return"searchTab: array expected";for(var e=0;e<r.searchTab.length;++e){var t=n.keyhole.dbroot.SearchTabProto.verify(r.searchTab[e]);if(t)return"searchTab."+t}}if(r.cobrandInfo!=null&&r.hasOwnProperty("cobrandInfo")){if(!Array.isArray(r.cobrandInfo))return"cobrandInfo: array expected";for(var e=0;e<r.cobrandInfo.length;++e){var t=n.keyhole.dbroot.CobrandProto.verify(r.cobrandInfo[e]);if(t)return"cobrandInfo."+t}}if(r.validDatabase!=null&&r.hasOwnProperty("validDatabase")){if(!Array.isArray(r.validDatabase))return"validDatabase: array expected";for(var e=0;e<r.validDatabase.length;++e){var t=n.keyhole.dbroot.DatabaseDescriptionProto.verify(r.validDatabase[e]);if(t)return"validDatabase."+t}}if(r.configScript!=null&&r.hasOwnProperty("configScript")){if(!Array.isArray(r.configScript))return"configScript: array expected";for(var e=0;e<r.configScript.length;++e){var t=n.keyhole.dbroot.ConfigScriptProto.verify(r.configScript[e]);if(t)return"configScript."+t}}if(r.deauthServerUrl!=null&&r.hasOwnProperty("deauthServerUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.deauthServerUrl);if(t)return"deauthServerUrl."+t}if(r.swoopParameters!=null&&r.hasOwnProperty("swoopParameters")){var t=n.keyhole.dbroot.SwoopParamsProto.verify(r.swoopParameters);if(t)return"swoopParameters."+t}if(r.bbsServerInfo!=null&&r.hasOwnProperty("bbsServerInfo")){var t=n.keyhole.dbroot.PostingServerProto.verify(r.bbsServerInfo);if(t)return"bbsServerInfo."+t}if(r.dataErrorServerInfo!=null&&r.hasOwnProperty("dataErrorServerInfo")){var t=n.keyhole.dbroot.PostingServerProto.verify(r.dataErrorServerInfo);if(t)return"dataErrorServerInfo."+t}if(r.planetaryDatabase!=null&&r.hasOwnProperty("planetaryDatabase")){if(!Array.isArray(r.planetaryDatabase))return"planetaryDatabase: array expected";for(var e=0;e<r.planetaryDatabase.length;++e){var t=n.keyhole.dbroot.PlanetaryDatabaseProto.verify(r.planetaryDatabase[e]);if(t)return"planetaryDatabase."+t}}if(r.logServer!=null&&r.hasOwnProperty("logServer")){var t=n.keyhole.dbroot.LogServerProto.verify(r.logServer);if(t)return"logServer."+t}if(r.autopiaOptions!=null&&r.hasOwnProperty("autopiaOptions")){var t=n.keyhole.dbroot.AutopiaOptionsProto.verify(r.autopiaOptions);if(t)return"autopiaOptions."+t}if(r.searchConfig!=null&&r.hasOwnProperty("searchConfig")){var t=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.verify(r.searchConfig);if(t)return"searchConfig."+t}if(r.searchInfo!=null&&r.hasOwnProperty("searchInfo")){var t=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.verify(r.searchInfo);if(t)return"searchInfo."+t}if(r.elevationServiceBaseUrl!=null&&r.hasOwnProperty("elevationServiceBaseUrl")&&!u.isString(r.elevationServiceBaseUrl))return"elevationServiceBaseUrl: string expected";if(r.elevationProfileQueryDelay!=null&&r.hasOwnProperty("elevationProfileQueryDelay")&&!u.isInteger(r.elevationProfileQueryDelay))return"elevationProfileQueryDelay: integer expected";if(r.proUpgradeUrl!=null&&r.hasOwnProperty("proUpgradeUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proUpgradeUrl);if(t)return"proUpgradeUrl."+t}if(r.earthCommunityUrl!=null&&r.hasOwnProperty("earthCommunityUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.earthCommunityUrl);if(t)return"earthCommunityUrl."+t}if(r.googleMapsUrl!=null&&r.hasOwnProperty("googleMapsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.googleMapsUrl);if(t)return"googleMapsUrl."+t}if(r.sharingUrl!=null&&r.hasOwnProperty("sharingUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sharingUrl);if(t)return"sharingUrl."+t}if(r.privacyPolicyUrl!=null&&r.hasOwnProperty("privacyPolicyUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.privacyPolicyUrl);if(t)return"privacyPolicyUrl."+t}if(r.doGplusUserCheck!=null&&r.hasOwnProperty("doGplusUserCheck")&&typeof r.doGplusUserCheck!="boolean")return"doGplusUserCheck: boolean expected";if(r.rocktreeDataProto!=null&&r.hasOwnProperty("rocktreeDataProto")){var t=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.verify(r.rocktreeDataProto);if(t)return"rocktreeDataProto."+t}if(r.filmstripConfig!=null&&r.hasOwnProperty("filmstripConfig")){if(!Array.isArray(r.filmstripConfig))return"filmstripConfig: array expected";for(var e=0;e<r.filmstripConfig.length;++e){var t=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.verify(r.filmstripConfig[e]);if(t)return"filmstripConfig."+t}}if(r.showSigninButton!=null&&r.hasOwnProperty("showSigninButton")&&typeof r.showSigninButton!="boolean")return"showSigninButton: boolean expected";if(r.proMeasureUpsellUrl!=null&&r.hasOwnProperty("proMeasureUpsellUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proMeasureUpsellUrl);if(t)return"proMeasureUpsellUrl."+t}if(r.proPrintUpsellUrl!=null&&r.hasOwnProperty("proPrintUpsellUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proPrintUpsellUrl);if(t)return"proPrintUpsellUrl."+t}if(r.starDataProto!=null&&r.hasOwnProperty("starDataProto")){var t=n.keyhole.dbroot.EndSnippetProto.StarDataProto.verify(r.starDataProto);if(t)return"starDataProto."+t}if(r.feedbackUrl!=null&&r.hasOwnProperty("feedbackUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.feedbackUrl);if(t)return"feedbackUrl."+t}if(r.oauth2LoginUrl!=null&&r.hasOwnProperty("oauth2LoginUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.oauth2LoginUrl);if(t)return"oauth2LoginUrl."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.EndSnippetProto)return r;var t=new n.keyhole.dbroot.EndSnippetProto;if(r.model!=null){if(typeof r.model!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.model: object expected");t.model=n.keyhole.dbroot.PlanetModelProto.fromObject(r.model)}if(r.authServerUrl!=null){if(typeof r.authServerUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.authServerUrl: object expected");t.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.authServerUrl)}if(r.disableAuthentication!=null&&(t.disableAuthentication=!!r.disableAuthentication),r.mfeDomains){if(!Array.isArray(r.mfeDomains))throw TypeError(".keyhole.dbroot.EndSnippetProto.mfeDomains: array expected");t.mfeDomains=[];for(var e=0;e<r.mfeDomains.length;++e){if(typeof r.mfeDomains[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.mfeDomains: object expected");t.mfeDomains[e]=n.keyhole.dbroot.MfeDomainFeaturesProto.fromObject(r.mfeDomains[e])}}if(r.mfeLangParam!=null&&(t.mfeLangParam=String(r.mfeLangParam)),r.adsUrlPatterns!=null&&(t.adsUrlPatterns=String(r.adsUrlPatterns)),r.reverseGeocoderUrl!=null){if(typeof r.reverseGeocoderUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.reverseGeocoderUrl: object expected");t.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.reverseGeocoderUrl)}if(r.reverseGeocoderProtocolVersion!=null&&(t.reverseGeocoderProtocolVersion=r.reverseGeocoderProtocolVersion|0),r.skyDatabaseIsAvailable!=null&&(t.skyDatabaseIsAvailable=!!r.skyDatabaseIsAvailable),r.skyDatabaseUrl!=null){if(typeof r.skyDatabaseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.skyDatabaseUrl: object expected");t.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.skyDatabaseUrl)}if(r.defaultWebPageIntlUrl!=null){if(typeof r.defaultWebPageIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.defaultWebPageIntlUrl: object expected");t.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.defaultWebPageIntlUrl)}if(r.numStartUpTips!=null&&(t.numStartUpTips=r.numStartUpTips|0),r.startUpTipsUrl!=null){if(typeof r.startUpTipsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.startUpTipsUrl: object expected");t.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.startUpTipsUrl)}if(r.numProStartUpTips!=null&&(t.numProStartUpTips=r.numProStartUpTips|0),r.proStartUpTipsUrl!=null){if(typeof r.proStartUpTipsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proStartUpTipsUrl: object expected");t.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proStartUpTipsUrl)}if(r.startupTipsIntlUrl!=null){if(typeof r.startupTipsIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.startupTipsIntlUrl: object expected");t.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.startupTipsIntlUrl)}if(r.userGuideIntlUrl!=null){if(typeof r.userGuideIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.userGuideIntlUrl: object expected");t.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.userGuideIntlUrl)}if(r.supportCenterIntlUrl!=null){if(typeof r.supportCenterIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportCenterIntlUrl: object expected");t.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportCenterIntlUrl)}if(r.businessListingIntlUrl!=null){if(typeof r.businessListingIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.businessListingIntlUrl: object expected");t.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.businessListingIntlUrl)}if(r.supportAnswerIntlUrl!=null){if(typeof r.supportAnswerIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportAnswerIntlUrl: object expected");t.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportAnswerIntlUrl)}if(r.supportTopicIntlUrl!=null){if(typeof r.supportTopicIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportTopicIntlUrl: object expected");t.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportTopicIntlUrl)}if(r.supportRequestIntlUrl!=null){if(typeof r.supportRequestIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportRequestIntlUrl: object expected");t.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportRequestIntlUrl)}if(r.earthIntlUrl!=null){if(typeof r.earthIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.earthIntlUrl: object expected");t.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.earthIntlUrl)}if(r.addContentUrl!=null){if(typeof r.addContentUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.addContentUrl: object expected");t.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.addContentUrl)}if(r.sketchupNotInstalledUrl!=null){if(typeof r.sketchupNotInstalledUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sketchupNotInstalledUrl: object expected");t.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sketchupNotInstalledUrl)}if(r.sketchupErrorUrl!=null){if(typeof r.sketchupErrorUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sketchupErrorUrl: object expected");t.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sketchupErrorUrl)}if(r.freeLicenseUrl!=null){if(typeof r.freeLicenseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.freeLicenseUrl: object expected");t.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.freeLicenseUrl)}if(r.proLicenseUrl!=null){if(typeof r.proLicenseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proLicenseUrl: object expected");t.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proLicenseUrl)}if(r.tutorialUrl!=null){if(typeof r.tutorialUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.tutorialUrl: object expected");t.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.tutorialUrl)}if(r.keyboardShortcutsUrl!=null){if(typeof r.keyboardShortcutsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.keyboardShortcutsUrl: object expected");t.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.keyboardShortcutsUrl)}if(r.releaseNotesUrl!=null){if(typeof r.releaseNotesUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.releaseNotesUrl: object expected");t.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.releaseNotesUrl)}if(r.hideUserData!=null&&(t.hideUserData=!!r.hideUserData),r.useGeLogo!=null&&(t.useGeLogo=!!r.useGeLogo),r.dioramaDescriptionUrlBase!=null){if(typeof r.dioramaDescriptionUrlBase!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dioramaDescriptionUrlBase: object expected");t.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.dioramaDescriptionUrlBase)}if(r.dioramaDefaultColor!=null&&(t.dioramaDefaultColor=r.dioramaDefaultColor>>>0),r.dioramaBlacklistUrl!=null){if(typeof r.dioramaBlacklistUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dioramaBlacklistUrl: object expected");t.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.dioramaBlacklistUrl)}if(r.clientOptions!=null){if(typeof r.clientOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.clientOptions: object expected");t.clientOptions=n.keyhole.dbroot.ClientOptionsProto.fromObject(r.clientOptions)}if(r.fetchingOptions!=null){if(typeof r.fetchingOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.fetchingOptions: object expected");t.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.fromObject(r.fetchingOptions)}if(r.timeMachineOptions!=null){if(typeof r.timeMachineOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.timeMachineOptions: object expected");t.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.fromObject(r.timeMachineOptions)}if(r.csiOptions!=null){if(typeof r.csiOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.csiOptions: object expected");t.csiOptions=n.keyhole.dbroot.CSIOptionsProto.fromObject(r.csiOptions)}if(r.searchTab){if(!Array.isArray(r.searchTab))throw TypeError(".keyhole.dbroot.EndSnippetProto.searchTab: array expected");t.searchTab=[];for(var e=0;e<r.searchTab.length;++e){if(typeof r.searchTab[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchTab: object expected");t.searchTab[e]=n.keyhole.dbroot.SearchTabProto.fromObject(r.searchTab[e])}}if(r.cobrandInfo){if(!Array.isArray(r.cobrandInfo))throw TypeError(".keyhole.dbroot.EndSnippetProto.cobrandInfo: array expected");t.cobrandInfo=[];for(var e=0;e<r.cobrandInfo.length;++e){if(typeof r.cobrandInfo[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.cobrandInfo: object expected");t.cobrandInfo[e]=n.keyhole.dbroot.CobrandProto.fromObject(r.cobrandInfo[e])}}if(r.validDatabase){if(!Array.isArray(r.validDatabase))throw TypeError(".keyhole.dbroot.EndSnippetProto.validDatabase: array expected");t.validDatabase=[];for(var e=0;e<r.validDatabase.length;++e){if(typeof r.validDatabase[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.validDatabase: object expected");t.validDatabase[e]=n.keyhole.dbroot.DatabaseDescriptionProto.fromObject(r.validDatabase[e])}}if(r.configScript){if(!Array.isArray(r.configScript))throw TypeError(".keyhole.dbroot.EndSnippetProto.configScript: array expected");t.configScript=[];for(var e=0;e<r.configScript.length;++e){if(typeof r.configScript[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.configScript: object expected");t.configScript[e]=n.keyhole.dbroot.ConfigScriptProto.fromObject(r.configScript[e])}}if(r.deauthServerUrl!=null){if(typeof r.deauthServerUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.deauthServerUrl: object expected");t.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.deauthServerUrl)}if(r.swoopParameters!=null){if(typeof r.swoopParameters!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.swoopParameters: object expected");t.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.fromObject(r.swoopParameters)}if(r.bbsServerInfo!=null){if(typeof r.bbsServerInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.bbsServerInfo: object expected");t.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.fromObject(r.bbsServerInfo)}if(r.dataErrorServerInfo!=null){if(typeof r.dataErrorServerInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dataErrorServerInfo: object expected");t.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.fromObject(r.dataErrorServerInfo)}if(r.planetaryDatabase){if(!Array.isArray(r.planetaryDatabase))throw TypeError(".keyhole.dbroot.EndSnippetProto.planetaryDatabase: array expected");t.planetaryDatabase=[];for(var e=0;e<r.planetaryDatabase.length;++e){if(typeof r.planetaryDatabase[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.planetaryDatabase: object expected");t.planetaryDatabase[e]=n.keyhole.dbroot.PlanetaryDatabaseProto.fromObject(r.planetaryDatabase[e])}}if(r.logServer!=null){if(typeof r.logServer!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.logServer: object expected");t.logServer=n.keyhole.dbroot.LogServerProto.fromObject(r.logServer)}if(r.autopiaOptions!=null){if(typeof r.autopiaOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.autopiaOptions: object expected");t.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.fromObject(r.autopiaOptions)}if(r.searchConfig!=null){if(typeof r.searchConfig!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchConfig: object expected");t.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.fromObject(r.searchConfig)}if(r.searchInfo!=null){if(typeof r.searchInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchInfo: object expected");t.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.fromObject(r.searchInfo)}if(r.elevationServiceBaseUrl!=null&&(t.elevationServiceBaseUrl=String(r.elevationServiceBaseUrl)),r.elevationProfileQueryDelay!=null&&(t.elevationProfileQueryDelay=r.elevationProfileQueryDelay|0),r.proUpgradeUrl!=null){if(typeof r.proUpgradeUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proUpgradeUrl: object expected");t.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proUpgradeUrl)}if(r.earthCommunityUrl!=null){if(typeof r.earthCommunityUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.earthCommunityUrl: object expected");t.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.earthCommunityUrl)}if(r.googleMapsUrl!=null){if(typeof r.googleMapsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.googleMapsUrl: object expected");t.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.googleMapsUrl)}if(r.sharingUrl!=null){if(typeof r.sharingUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sharingUrl: object expected");t.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sharingUrl)}if(r.privacyPolicyUrl!=null){if(typeof r.privacyPolicyUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.privacyPolicyUrl: object expected");t.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.privacyPolicyUrl)}if(r.doGplusUserCheck!=null&&(t.doGplusUserCheck=!!r.doGplusUserCheck),r.rocktreeDataProto!=null){if(typeof r.rocktreeDataProto!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.rocktreeDataProto: object expected");t.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.fromObject(r.rocktreeDataProto)}if(r.filmstripConfig){if(!Array.isArray(r.filmstripConfig))throw TypeError(".keyhole.dbroot.EndSnippetProto.filmstripConfig: array expected");t.filmstripConfig=[];for(var e=0;e<r.filmstripConfig.length;++e){if(typeof r.filmstripConfig[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.filmstripConfig: object expected");t.filmstripConfig[e]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.fromObject(r.filmstripConfig[e])}}if(r.showSigninButton!=null&&(t.showSigninButton=!!r.showSigninButton),r.proMeasureUpsellUrl!=null){if(typeof r.proMeasureUpsellUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proMeasureUpsellUrl: object expected");t.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proMeasureUpsellUrl)}if(r.proPrintUpsellUrl!=null){if(typeof r.proPrintUpsellUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proPrintUpsellUrl: object expected");t.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proPrintUpsellUrl)}if(r.starDataProto!=null){if(typeof r.starDataProto!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.starDataProto: object expected");t.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.fromObject(r.starDataProto)}if(r.feedbackUrl!=null){if(typeof r.feedbackUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.feedbackUrl: object expected");t.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.feedbackUrl)}if(r.oauth2LoginUrl!=null){if(typeof r.oauth2LoginUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.oauth2LoginUrl: object expected");t.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.oauth2LoginUrl)}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.mfeDomains=[],e.searchTab=[],e.cobrandInfo=[],e.validDatabase=[],e.configScript=[],e.planetaryDatabase=[],e.filmstripConfig=[]),t.defaults&&(e.model=null,e.authServerUrl=null,e.disableAuthentication=!1,e.mfeLangParam="hl=$5Bhl5D",e.adsUrlPatterns="",e.reverseGeocoderUrl=null,e.reverseGeocoderProtocolVersion=3,e.skyDatabaseIsAvailable=!0,e.skyDatabaseUrl=null,e.defaultWebPageIntlUrl=null,e.numStartUpTips=17,e.startUpTipsUrl=null,e.userGuideIntlUrl=null,e.supportCenterIntlUrl=null,e.businessListingIntlUrl=null,e.supportAnswerIntlUrl=null,e.supportTopicIntlUrl=null,e.supportRequestIntlUrl=null,e.earthIntlUrl=null,e.addContentUrl=null,e.sketchupNotInstalledUrl=null,e.sketchupErrorUrl=null,e.freeLicenseUrl=null,e.proLicenseUrl=null,e.hideUserData=!1,e.useGeLogo=!0,e.dioramaDescriptionUrlBase=null,e.dioramaDefaultColor=4291281607,e.clientOptions=null,e.fetchingOptions=null,e.timeMachineOptions=null,e.csiOptions=null,e.deauthServerUrl=null,e.swoopParameters=null,e.bbsServerInfo=null,e.dataErrorServerInfo=null,e.logServer=null,e.autopiaOptions=null,e.searchInfo=null,e.elevationServiceBaseUrl="http://maps.google.com/maps/api/elevation/",e.elevationProfileQueryDelay=500,e.tutorialUrl=null,e.keyboardShortcutsUrl=null,e.releaseNotesUrl=null,e.numProStartUpTips=0,e.proStartUpTipsUrl=null,e.dioramaBlacklistUrl=null,e.searchConfig=null,e.proUpgradeUrl=null,e.earthCommunityUrl=null,e.googleMapsUrl=null,e.sharingUrl=null,e.privacyPolicyUrl=null,e.doGplusUserCheck=!1,e.rocktreeDataProto=null,e.showSigninButton=!1,e.startupTipsIntlUrl=null,e.proMeasureUpsellUrl=null,e.proPrintUpsellUrl=null,e.starDataProto=null,e.feedbackUrl=null,e.oauth2LoginUrl=null),r.model!=null&&r.hasOwnProperty("model")&&(e.model=n.keyhole.dbroot.PlanetModelProto.toObject(r.model,t)),r.authServerUrl!=null&&r.hasOwnProperty("authServerUrl")&&(e.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.authServerUrl,t)),r.disableAuthentication!=null&&r.hasOwnProperty("disableAuthentication")&&(e.disableAuthentication=r.disableAuthentication),r.mfeDomains&&r.mfeDomains.length){e.mfeDomains=[];for(var o=0;o<r.mfeDomains.length;++o)e.mfeDomains[o]=n.keyhole.dbroot.MfeDomainFeaturesProto.toObject(r.mfeDomains[o],t)}if(r.mfeLangParam!=null&&r.hasOwnProperty("mfeLangParam")&&(e.mfeLangParam=r.mfeLangParam),r.adsUrlPatterns!=null&&r.hasOwnProperty("adsUrlPatterns")&&(e.adsUrlPatterns=r.adsUrlPatterns),r.reverseGeocoderUrl!=null&&r.hasOwnProperty("reverseGeocoderUrl")&&(e.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.reverseGeocoderUrl,t)),r.reverseGeocoderProtocolVersion!=null&&r.hasOwnProperty("reverseGeocoderProtocolVersion")&&(e.reverseGeocoderProtocolVersion=r.reverseGeocoderProtocolVersion),r.skyDatabaseIsAvailable!=null&&r.hasOwnProperty("skyDatabaseIsAvailable")&&(e.skyDatabaseIsAvailable=r.skyDatabaseIsAvailable),r.skyDatabaseUrl!=null&&r.hasOwnProperty("skyDatabaseUrl")&&(e.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.skyDatabaseUrl,t)),r.defaultWebPageIntlUrl!=null&&r.hasOwnProperty("defaultWebPageIntlUrl")&&(e.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.defaultWebPageIntlUrl,t)),r.numStartUpTips!=null&&r.hasOwnProperty("numStartUpTips")&&(e.numStartUpTips=r.numStartUpTips),r.startUpTipsUrl!=null&&r.hasOwnProperty("startUpTipsUrl")&&(e.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.startUpTipsUrl,t)),r.userGuideIntlUrl!=null&&r.hasOwnProperty("userGuideIntlUrl")&&(e.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.userGuideIntlUrl,t)),r.supportCenterIntlUrl!=null&&r.hasOwnProperty("supportCenterIntlUrl")&&(e.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportCenterIntlUrl,t)),r.businessListingIntlUrl!=null&&r.hasOwnProperty("businessListingIntlUrl")&&(e.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.businessListingIntlUrl,t)),r.supportAnswerIntlUrl!=null&&r.hasOwnProperty("supportAnswerIntlUrl")&&(e.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportAnswerIntlUrl,t)),r.supportTopicIntlUrl!=null&&r.hasOwnProperty("supportTopicIntlUrl")&&(e.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportTopicIntlUrl,t)),r.supportRequestIntlUrl!=null&&r.hasOwnProperty("supportRequestIntlUrl")&&(e.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportRequestIntlUrl,t)),r.earthIntlUrl!=null&&r.hasOwnProperty("earthIntlUrl")&&(e.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.earthIntlUrl,t)),r.addContentUrl!=null&&r.hasOwnProperty("addContentUrl")&&(e.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.addContentUrl,t)),r.sketchupNotInstalledUrl!=null&&r.hasOwnProperty("sketchupNotInstalledUrl")&&(e.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sketchupNotInstalledUrl,t)),r.sketchupErrorUrl!=null&&r.hasOwnProperty("sketchupErrorUrl")&&(e.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sketchupErrorUrl,t)),r.freeLicenseUrl!=null&&r.hasOwnProperty("freeLicenseUrl")&&(e.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.freeLicenseUrl,t)),r.proLicenseUrl!=null&&r.hasOwnProperty("proLicenseUrl")&&(e.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proLicenseUrl,t)),r.hideUserData!=null&&r.hasOwnProperty("hideUserData")&&(e.hideUserData=r.hideUserData),r.useGeLogo!=null&&r.hasOwnProperty("useGeLogo")&&(e.useGeLogo=r.useGeLogo),r.dioramaDescriptionUrlBase!=null&&r.hasOwnProperty("dioramaDescriptionUrlBase")&&(e.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.dioramaDescriptionUrlBase,t)),r.dioramaDefaultColor!=null&&r.hasOwnProperty("dioramaDefaultColor")&&(e.dioramaDefaultColor=r.dioramaDefaultColor),r.clientOptions!=null&&r.hasOwnProperty("clientOptions")&&(e.clientOptions=n.keyhole.dbroot.ClientOptionsProto.toObject(r.clientOptions,t)),r.fetchingOptions!=null&&r.hasOwnProperty("fetchingOptions")&&(e.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.toObject(r.fetchingOptions,t)),r.timeMachineOptions!=null&&r.hasOwnProperty("timeMachineOptions")&&(e.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.toObject(r.timeMachineOptions,t)),r.csiOptions!=null&&r.hasOwnProperty("csiOptions")&&(e.csiOptions=n.keyhole.dbroot.CSIOptionsProto.toObject(r.csiOptions,t)),r.searchTab&&r.searchTab.length){e.searchTab=[];for(var o=0;o<r.searchTab.length;++o)e.searchTab[o]=n.keyhole.dbroot.SearchTabProto.toObject(r.searchTab[o],t)}if(r.cobrandInfo&&r.cobrandInfo.length){e.cobrandInfo=[];for(var o=0;o<r.cobrandInfo.length;++o)e.cobrandInfo[o]=n.keyhole.dbroot.CobrandProto.toObject(r.cobrandInfo[o],t)}if(r.validDatabase&&r.validDatabase.length){e.validDatabase=[];for(var o=0;o<r.validDatabase.length;++o)e.validDatabase[o]=n.keyhole.dbroot.DatabaseDescriptionProto.toObject(r.validDatabase[o],t)}if(r.configScript&&r.configScript.length){e.configScript=[];for(var o=0;o<r.configScript.length;++o)e.configScript[o]=n.keyhole.dbroot.ConfigScriptProto.toObject(r.configScript[o],t)}if(r.deauthServerUrl!=null&&r.hasOwnProperty("deauthServerUrl")&&(e.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.deauthServerUrl,t)),r.swoopParameters!=null&&r.hasOwnProperty("swoopParameters")&&(e.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.toObject(r.swoopParameters,t)),r.bbsServerInfo!=null&&r.hasOwnProperty("bbsServerInfo")&&(e.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.toObject(r.bbsServerInfo,t)),r.dataErrorServerInfo!=null&&r.hasOwnProperty("dataErrorServerInfo")&&(e.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.toObject(r.dataErrorServerInfo,t)),r.planetaryDatabase&&r.planetaryDatabase.length){e.planetaryDatabase=[];for(var o=0;o<r.planetaryDatabase.length;++o)e.planetaryDatabase[o]=n.keyhole.dbroot.PlanetaryDatabaseProto.toObject(r.planetaryDatabase[o],t)}if(r.logServer!=null&&r.hasOwnProperty("logServer")&&(e.logServer=n.keyhole.dbroot.LogServerProto.toObject(r.logServer,t)),r.autopiaOptions!=null&&r.hasOwnProperty("autopiaOptions")&&(e.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.toObject(r.autopiaOptions,t)),r.searchInfo!=null&&r.hasOwnProperty("searchInfo")&&(e.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.toObject(r.searchInfo,t)),r.elevationServiceBaseUrl!=null&&r.hasOwnProperty("elevationServiceBaseUrl")&&(e.elevationServiceBaseUrl=r.elevationServiceBaseUrl),r.elevationProfileQueryDelay!=null&&r.hasOwnProperty("elevationProfileQueryDelay")&&(e.elevationProfileQueryDelay=r.elevationProfileQueryDelay),r.tutorialUrl!=null&&r.hasOwnProperty("tutorialUrl")&&(e.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.tutorialUrl,t)),r.keyboardShortcutsUrl!=null&&r.hasOwnProperty("keyboardShortcutsUrl")&&(e.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.keyboardShortcutsUrl,t)),r.releaseNotesUrl!=null&&r.hasOwnProperty("releaseNotesUrl")&&(e.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.releaseNotesUrl,t)),r.numProStartUpTips!=null&&r.hasOwnProperty("numProStartUpTips")&&(e.numProStartUpTips=r.numProStartUpTips),r.proStartUpTipsUrl!=null&&r.hasOwnProperty("proStartUpTipsUrl")&&(e.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proStartUpTipsUrl,t)),r.dioramaBlacklistUrl!=null&&r.hasOwnProperty("dioramaBlacklistUrl")&&(e.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.dioramaBlacklistUrl,t)),r.searchConfig!=null&&r.hasOwnProperty("searchConfig")&&(e.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.toObject(r.searchConfig,t)),r.proUpgradeUrl!=null&&r.hasOwnProperty("proUpgradeUrl")&&(e.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proUpgradeUrl,t)),r.earthCommunityUrl!=null&&r.hasOwnProperty("earthCommunityUrl")&&(e.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.earthCommunityUrl,t)),r.googleMapsUrl!=null&&r.hasOwnProperty("googleMapsUrl")&&(e.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.googleMapsUrl,t)),r.sharingUrl!=null&&r.hasOwnProperty("sharingUrl")&&(e.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sharingUrl,t)),r.privacyPolicyUrl!=null&&r.hasOwnProperty("privacyPolicyUrl")&&(e.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.privacyPolicyUrl,t)),r.doGplusUserCheck!=null&&r.hasOwnProperty("doGplusUserCheck")&&(e.doGplusUserCheck=r.doGplusUserCheck),r.rocktreeDataProto!=null&&r.hasOwnProperty("rocktreeDataProto")&&(e.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.toObject(r.rocktreeDataProto,t)),r.filmstripConfig&&r.filmstripConfig.length){e.filmstripConfig=[];for(var o=0;o<r.filmstripConfig.length;++o)e.filmstripConfig[o]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.toObject(r.filmstripConfig[o],t)}return r.showSigninButton!=null&&r.hasOwnProperty("showSigninButton")&&(e.showSigninButton=r.showSigninButton),r.startupTipsIntlUrl!=null&&r.hasOwnProperty("startupTipsIntlUrl")&&(e.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.startupTipsIntlUrl,t)),r.proMeasureUpsellUrl!=null&&r.hasOwnProperty("proMeasureUpsellUrl")&&(e.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proMeasureUpsellUrl,t)),r.proPrintUpsellUrl!=null&&r.hasOwnProperty("proPrintUpsellUrl")&&(e.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proPrintUpsellUrl,t)),r.starDataProto!=null&&r.hasOwnProperty("starDataProto")&&(e.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.toObject(r.starDataProto,t)),r.feedbackUrl!=null&&r.hasOwnProperty("feedbackUrl")&&(e.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.feedbackUrl,t)),r.oauth2LoginUrl!=null&&r.hasOwnProperty("oauth2LoginUrl")&&(e.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.oauth2LoginUrl,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.EndSnippetProto"},i.SearchConfigProto=function(){function l(r){if(this.searchServer=[],this.oneboxService=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.searchServer=u.emptyArray,l.prototype.oneboxService=u.emptyArray,l.prototype.kmlSearchUrl=null,l.prototype.kmlRenderUrl=null,l.prototype.searchHistoryUrl=null,l.prototype.errorPageUrl=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.searchServer&&a.searchServer.length||(a.searchServer=[]),a.searchServer.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.decode(t,t.uint32()));break}case 2:{a.oneboxService&&a.oneboxService.length||(a.oneboxService=[]),a.oneboxService.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.decode(t,t.uint32()));break}case 3:{a.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 4:{a.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 6:{a.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 5:{a.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.searchServer!=null&&t.hasOwnProperty("searchServer")){if(!Array.isArray(t.searchServer))return"searchServer: array expected";for(var e=0;e<t.searchServer.length;++e){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.verify(t.searchServer[e]);if(o)return"searchServer."+o}}if(t.oneboxService!=null&&t.hasOwnProperty("oneboxService")){if(!Array.isArray(t.oneboxService))return"oneboxService: array expected";for(var e=0;e<t.oneboxService.length;++e){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.verify(t.oneboxService[e]);if(o)return"oneboxService."+o}}if(t.kmlSearchUrl!=null&&t.hasOwnProperty("kmlSearchUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlSearchUrl);if(o)return"kmlSearchUrl."+o}if(t.kmlRenderUrl!=null&&t.hasOwnProperty("kmlRenderUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlRenderUrl);if(o)return"kmlRenderUrl."+o}if(t.searchHistoryUrl!=null&&t.hasOwnProperty("searchHistoryUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.searchHistoryUrl);if(o)return"searchHistoryUrl."+o}if(t.errorPageUrl!=null&&t.hasOwnProperty("errorPageUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.errorPageUrl);if(o)return"errorPageUrl."+o}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto;if(t.searchServer){if(!Array.isArray(t.searchServer))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchServer: array expected");e.searchServer=[];for(var o=0;o<t.searchServer.length;++o){if(typeof t.searchServer[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchServer: object expected");e.searchServer[o]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.fromObject(t.searchServer[o])}}if(t.oneboxService){if(!Array.isArray(t.oneboxService))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.oneboxService: array expected");e.oneboxService=[];for(var o=0;o<t.oneboxService.length;++o){if(typeof t.oneboxService[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.oneboxService: object expected");e.oneboxService[o]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.fromObject(t.oneboxService[o])}}if(t.kmlSearchUrl!=null){if(typeof t.kmlSearchUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.kmlSearchUrl: object expected");e.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlSearchUrl)}if(t.kmlRenderUrl!=null){if(typeof t.kmlRenderUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.kmlRenderUrl: object expected");e.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlRenderUrl)}if(t.searchHistoryUrl!=null){if(typeof t.searchHistoryUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchHistoryUrl: object expected");e.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.searchHistoryUrl)}if(t.errorPageUrl!=null){if(typeof t.errorPageUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.errorPageUrl: object expected");e.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.errorPageUrl)}return e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.searchServer=[],o.oneboxService=[]),e.defaults&&(o.kmlSearchUrl=null,o.kmlRenderUrl=null,o.errorPageUrl=null,o.searchHistoryUrl=null),t.searchServer&&t.searchServer.length){o.searchServer=[];for(var a=0;a<t.searchServer.length;++a)o.searchServer[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.toObject(t.searchServer[a],e)}if(t.oneboxService&&t.oneboxService.length){o.oneboxService=[];for(var a=0;a<t.oneboxService.length;++a)o.oneboxService[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.toObject(t.oneboxService[a],e)}return t.kmlSearchUrl!=null&&t.hasOwnProperty("kmlSearchUrl")&&(o.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlSearchUrl,e)),t.kmlRenderUrl!=null&&t.hasOwnProperty("kmlRenderUrl")&&(o.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlRenderUrl,e)),t.errorPageUrl!=null&&t.hasOwnProperty("errorPageUrl")&&(o.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.errorPageUrl,e)),t.searchHistoryUrl!=null&&t.hasOwnProperty("searchHistoryUrl")&&(o.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.searchHistoryUrl,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto"},l.SearchServer=function(){function r(t){if(this.suggestion=[],this.searchlet=[],t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.name=null,r.prototype.url=null,r.prototype.type=0,r.prototype.htmlTransformUrl=null,r.prototype.kmlTransformUrl=null,r.prototype.supplementalUi=null,r.prototype.suggestion=u.emptyArray,r.prototype.searchlet=u.emptyArray,r.prototype.requirements=null,r.prototype.suggestServer=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.name=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 2:{p.url=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 3:{p.type=e.int32();break}case 4:{p.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 5:{p.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 6:{p.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.decode(e,e.uint32());break}case 9:{p.suggestion&&p.suggestion.length||(p.suggestion=[]),p.suggestion.push(n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32()));break}case 7:{p.searchlet&&p.searchlet.length||(p.searchlet=[]),p.searchlet.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.decode(e,e.uint32()));break}case 8:{p.requirements=n.keyhole.dbroot.RequirementProto.decode(e,e.uint32());break}case 10:{p.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.name!=null&&e.hasOwnProperty("name")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.name);if(o)return"name."+o}if(e.url!=null&&e.hasOwnProperty("url")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.url);if(o)return"url."+o}if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:break}if(e.htmlTransformUrl!=null&&e.hasOwnProperty("htmlTransformUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.htmlTransformUrl);if(o)return"htmlTransformUrl."+o}if(e.kmlTransformUrl!=null&&e.hasOwnProperty("kmlTransformUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.kmlTransformUrl);if(o)return"kmlTransformUrl."+o}if(e.supplementalUi!=null&&e.hasOwnProperty("supplementalUi")){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.verify(e.supplementalUi);if(o)return"supplementalUi."+o}if(e.suggestion!=null&&e.hasOwnProperty("suggestion")){if(!Array.isArray(e.suggestion))return"suggestion: array expected";for(var a=0;a<e.suggestion.length;++a){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.suggestion[a]);if(o)return"suggestion."+o}}if(e.searchlet!=null&&e.hasOwnProperty("searchlet")){if(!Array.isArray(e.searchlet))return"searchlet: array expected";for(var a=0;a<e.searchlet.length;++a){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.verify(e.searchlet[a]);if(o)return"searchlet."+o}}if(e.requirements!=null&&e.hasOwnProperty("requirements")){var o=n.keyhole.dbroot.RequirementProto.verify(e.requirements);if(o)return"requirements."+o}if(e.suggestServer!=null&&e.hasOwnProperty("suggestServer")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.suggestServer);if(o)return"suggestServer."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer)return e;var o=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer;if(e.name!=null){if(typeof e.name!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.name: object expected");o.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.name)}if(e.url!=null){if(typeof e.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.url: object expected");o.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.url)}switch(e.type){case"RESULT_TYPE_KML":case 0:o.type=0;break;case"RESULT_TYPE_XML":case 1:o.type=1;break}if(e.htmlTransformUrl!=null){if(typeof e.htmlTransformUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.htmlTransformUrl: object expected");o.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.htmlTransformUrl)}if(e.kmlTransformUrl!=null){if(typeof e.kmlTransformUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.kmlTransformUrl: object expected");o.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.kmlTransformUrl)}if(e.supplementalUi!=null){if(typeof e.supplementalUi!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.supplementalUi: object expected");o.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.fromObject(e.supplementalUi)}if(e.suggestion){if(!Array.isArray(e.suggestion))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestion: array expected");o.suggestion=[];for(var a=0;a<e.suggestion.length;++a){if(typeof e.suggestion[a]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestion: object expected");o.suggestion[a]=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.suggestion[a])}}if(e.searchlet){if(!Array.isArray(e.searchlet))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.searchlet: array expected");o.searchlet=[];for(var a=0;a<e.searchlet.length;++a){if(typeof e.searchlet[a]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.searchlet: object expected");o.searchlet[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.fromObject(e.searchlet[a])}}if(e.requirements!=null){if(typeof e.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.requirements: object expected");o.requirements=n.keyhole.dbroot.RequirementProto.fromObject(e.requirements)}if(e.suggestServer!=null){if(typeof e.suggestServer!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestServer: object expected");o.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.suggestServer)}return o},r.toObject=function(e,o){o||(o={});var a={};if((o.arrays||o.defaults)&&(a.searchlet=[],a.suggestion=[]),o.defaults&&(a.name=null,a.url=null,a.type=o.enums===String?"RESULT_TYPE_KML":0,a.htmlTransformUrl=null,a.kmlTransformUrl=null,a.supplementalUi=null,a.requirements=null,a.suggestServer=null),e.name!=null&&e.hasOwnProperty("name")&&(a.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.name,o)),e.url!=null&&e.hasOwnProperty("url")&&(a.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.url,o)),e.type!=null&&e.hasOwnProperty("type")&&(a.type=o.enums===String?n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.ResultType[e.type]:e.type),e.htmlTransformUrl!=null&&e.hasOwnProperty("htmlTransformUrl")&&(a.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.htmlTransformUrl,o)),e.kmlTransformUrl!=null&&e.hasOwnProperty("kmlTransformUrl")&&(a.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.kmlTransformUrl,o)),e.supplementalUi!=null&&e.hasOwnProperty("supplementalUi")&&(a.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.toObject(e.supplementalUi,o)),e.searchlet&&e.searchlet.length){a.searchlet=[];for(var p=0;p<e.searchlet.length;++p)a.searchlet[p]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.toObject(e.searchlet[p],o)}if(e.requirements!=null&&e.hasOwnProperty("requirements")&&(a.requirements=n.keyhole.dbroot.RequirementProto.toObject(e.requirements,o)),e.suggestion&&e.suggestion.length){a.suggestion=[];for(var p=0;p<e.suggestion.length;++p)a.suggestion[p]=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.suggestion[p],o)}return e.suggestServer!=null&&e.hasOwnProperty("suggestServer")&&(a.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.suggestServer,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer"},r.ResultType=function(){var t={},e=Object.create(t);return e[t[0]="RESULT_TYPE_KML"]=0,e[t[1]="RESULT_TYPE_XML"]=1,e}(),r.SupplementalUi=function(){function t(e){if(e)for(var o=Object.keys(e),a=0;a<o.length;++a)e[o[a]]!=null&&(this[o[a]]=e[o[a]])}return t.prototype.url=null,t.prototype.label=null,t.prototype.height=160,t.decode=function(o,a){o instanceof f||(o=f.create(o));for(var p=a===void 0?o.len:o.pos+a,y=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi;o.pos<p;){var h=o.uint32();switch(h>>>3){case 1:{y.url=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 2:{y.label=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 3:{y.height=o.int32();break}default:o.skipType(h&7);break}}return y},t.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.url!=null&&o.hasOwnProperty("url")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.url);if(a)return"url."+a}if(o.label!=null&&o.hasOwnProperty("label")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.label);if(a)return"label."+a}return o.height!=null&&o.hasOwnProperty("height")&&!u.isInteger(o.height)?"height: integer expected":null},t.fromObject=function(o){if(o instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi)return o;var a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi;if(o.url!=null){if(typeof o.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.url: object expected");a.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.url)}if(o.label!=null){if(typeof o.label!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.label: object expected");a.label=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.label)}return o.height!=null&&(a.height=o.height|0),a},t.toObject=function(o,a){a||(a={});var p={};return a.defaults&&(p.url=null,p.label=null,p.height=160),o.url!=null&&o.hasOwnProperty("url")&&(p.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.url,a)),o.label!=null&&o.hasOwnProperty("label")&&(p.label=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.label,a)),o.height!=null&&o.hasOwnProperty("height")&&(p.height=o.height),p},t.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},t.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi"},t}(),r.SearchletProto=function(){function t(e){if(e)for(var o=Object.keys(e),a=0;a<o.length;++a)e[o[a]]!=null&&(this[o[a]]=e[o[a]])}return t.prototype.url=null,t.prototype.name=null,t.prototype.requirements=null,t.decode=function(o,a){o instanceof f||(o=f.create(o));for(var p=a===void 0?o.len:o.pos+a,y=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto;o.pos<p;){var h=o.uint32();switch(h>>>3){case 1:{y.url=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 2:{y.name=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 3:{y.requirements=n.keyhole.dbroot.RequirementProto.decode(o,o.uint32());break}default:o.skipType(h&7);break}}return y},t.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.url!=null&&o.hasOwnProperty("url")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.url);if(a)return"url."+a}if(o.name!=null&&o.hasOwnProperty("name")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.name);if(a)return"name."+a}if(o.requirements!=null&&o.hasOwnProperty("requirements")){var a=n.keyhole.dbroot.RequirementProto.verify(o.requirements);if(a)return"requirements."+a}return null},t.fromObject=function(o){if(o instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto)return o;var a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto;if(o.url!=null){if(typeof o.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.url: object expected");a.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.url)}if(o.name!=null){if(typeof o.name!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.name: object expected");a.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.name)}if(o.requirements!=null){if(typeof o.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.requirements: object expected");a.requirements=n.keyhole.dbroot.RequirementProto.fromObject(o.requirements)}return a},t.toObject=function(o,a){a||(a={});var p={};return a.defaults&&(p.url=null,p.name=null,p.requirements=null),o.url!=null&&o.hasOwnProperty("url")&&(p.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.url,a)),o.name!=null&&o.hasOwnProperty("name")&&(p.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.name,a)),o.requirements!=null&&o.hasOwnProperty("requirements")&&(p.requirements=n.keyhole.dbroot.RequirementProto.toObject(o.requirements,a)),p},t.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},t.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto"},t}(),r}(),l.OneboxServiceProto=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.serviceUrl=null,r.prototype.requirements=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 2:{p.requirements=n.keyhole.dbroot.RequirementProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.serviceUrl!=null&&e.hasOwnProperty("serviceUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.serviceUrl);if(o)return"serviceUrl."+o}if(e.requirements!=null&&e.hasOwnProperty("requirements")){var o=n.keyhole.dbroot.RequirementProto.verify(e.requirements);if(o)return"requirements."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto)return e;var o=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto;if(e.serviceUrl!=null){if(typeof e.serviceUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.serviceUrl: object expected");o.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.serviceUrl)}if(e.requirements!=null){if(typeof e.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.requirements: object expected");o.requirements=n.keyhole.dbroot.RequirementProto.fromObject(e.requirements)}return o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.serviceUrl=null,a.requirements=null),e.serviceUrl!=null&&e.hasOwnProperty("serviceUrl")&&(a.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.serviceUrl,o)),e.requirements!=null&&e.hasOwnProperty("requirements")&&(a.requirements=n.keyhole.dbroot.RequirementProto.toObject(e.requirements,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto"},r}(),l}(),i.SearchInfoProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.defaultUrl="http://maps.google.com/maps",l.prototype.geocodeParam="q",l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.SearchInfoProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.defaultUrl=t.string();break}case 2:{a.geocodeParam=t.string();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.defaultUrl!=null&&t.hasOwnProperty("defaultUrl")&&!u.isString(t.defaultUrl)?"defaultUrl: string expected":t.geocodeParam!=null&&t.hasOwnProperty("geocodeParam")&&!u.isString(t.geocodeParam)?"geocodeParam: string expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.SearchInfoProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.SearchInfoProto;return t.defaultUrl!=null&&(e.defaultUrl=String(t.defaultUrl)),t.geocodeParam!=null&&(e.geocodeParam=String(t.geocodeParam)),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.defaultUrl="http://maps.google.com/maps",o.geocodeParam="q"),t.defaultUrl!=null&&t.hasOwnProperty("defaultUrl")&&(o.defaultUrl=t.defaultUrl),t.geocodeParam!=null&&t.hasOwnProperty("geocodeParam")&&(o.geocodeParam=t.geocodeParam),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.SearchInfoProto"},l}(),i.RockTreeDataProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.url=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.url=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.url!=null&&t.hasOwnProperty("url")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.url);if(e)return"url."+e}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto;if(t.url!=null){if(typeof t.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.RockTreeDataProto.url: object expected");e.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.url)}return e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.url=null),t.url!=null&&t.hasOwnProperty("url")&&(o.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.url,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.RockTreeDataProto"},l}(),i.FilmstripConfigProto=function(){function l(r){if(this.imageryType=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.requirements=null,l.prototype.alleycatUrlTemplate=null,l.prototype.fallbackAlleycatUrlTemplate=null,l.prototype.metadataUrlTemplate=null,l.prototype.thumbnailUrlTemplate=null,l.prototype.kmlUrlTemplate=null,l.prototype.featuredToursUrl=null,l.prototype.enableViewportFallback=!1,l.prototype.viewportFallbackDistance=0,l.prototype.imageryType=u.emptyArray,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.requirements=n.keyhole.dbroot.RequirementProto.decode(t,t.uint32());break}case 2:{a.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 9:{a.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 3:{a.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 4:{a.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 5:{a.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 6:{a.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 7:{a.enableViewportFallback=t.bool();break}case 8:{a.viewportFallbackDistance=t.uint32();break}case 10:{a.imageryType&&a.imageryType.length||(a.imageryType=[]),a.imageryType.push(n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.decode(t,t.uint32()));break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.requirements!=null&&t.hasOwnProperty("requirements")){var e=n.keyhole.dbroot.RequirementProto.verify(t.requirements);if(e)return"requirements."+e}if(t.alleycatUrlTemplate!=null&&t.hasOwnProperty("alleycatUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.alleycatUrlTemplate);if(e)return"alleycatUrlTemplate."+e}if(t.fallbackAlleycatUrlTemplate!=null&&t.hasOwnProperty("fallbackAlleycatUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.fallbackAlleycatUrlTemplate);if(e)return"fallbackAlleycatUrlTemplate."+e}if(t.metadataUrlTemplate!=null&&t.hasOwnProperty("metadataUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.metadataUrlTemplate);if(e)return"metadataUrlTemplate."+e}if(t.thumbnailUrlTemplate!=null&&t.hasOwnProperty("thumbnailUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.thumbnailUrlTemplate);if(e)return"thumbnailUrlTemplate."+e}if(t.kmlUrlTemplate!=null&&t.hasOwnProperty("kmlUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlUrlTemplate);if(e)return"kmlUrlTemplate."+e}if(t.featuredToursUrl!=null&&t.hasOwnProperty("featuredToursUrl")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.featuredToursUrl);if(e)return"featuredToursUrl."+e}if(t.enableViewportFallback!=null&&t.hasOwnProperty("enableViewportFallback")&&typeof t.enableViewportFallback!="boolean")return"enableViewportFallback: boolean expected";if(t.viewportFallbackDistance!=null&&t.hasOwnProperty("viewportFallbackDistance")&&!u.isInteger(t.viewportFallbackDistance))return"viewportFallbackDistance: integer expected";if(t.imageryType!=null&&t.hasOwnProperty("imageryType")){if(!Array.isArray(t.imageryType))return"imageryType: array expected";for(var o=0;o<t.imageryType.length;++o){var e=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.verify(t.imageryType[o]);if(e)return"imageryType."+e}}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto;if(t.requirements!=null){if(typeof t.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.requirements: object expected");e.requirements=n.keyhole.dbroot.RequirementProto.fromObject(t.requirements)}if(t.alleycatUrlTemplate!=null){if(typeof t.alleycatUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.alleycatUrlTemplate: object expected");e.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.alleycatUrlTemplate)}if(t.fallbackAlleycatUrlTemplate!=null){if(typeof t.fallbackAlleycatUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.fallbackAlleycatUrlTemplate: object expected");e.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.fallbackAlleycatUrlTemplate)}if(t.metadataUrlTemplate!=null){if(typeof t.metadataUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.metadataUrlTemplate: object expected");e.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.metadataUrlTemplate)}if(t.thumbnailUrlTemplate!=null){if(typeof t.thumbnailUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.thumbnailUrlTemplate: object expected");e.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.thumbnailUrlTemplate)}if(t.kmlUrlTemplate!=null){if(typeof t.kmlUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.kmlUrlTemplate: object expected");e.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlUrlTemplate)}if(t.featuredToursUrl!=null){if(typeof t.featuredToursUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.featuredToursUrl: object expected");e.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.featuredToursUrl)}if(t.enableViewportFallback!=null&&(e.enableViewportFallback=!!t.enableViewportFallback),t.viewportFallbackDistance!=null&&(e.viewportFallbackDistance=t.viewportFallbackDistance>>>0),t.imageryType){if(!Array.isArray(t.imageryType))throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.imageryType: array expected");e.imageryType=[];for(var o=0;o<t.imageryType.length;++o){if(typeof t.imageryType[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.imageryType: object expected");e.imageryType[o]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.fromObject(t.imageryType[o])}}return e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.imageryType=[]),e.defaults&&(o.requirements=null,o.alleycatUrlTemplate=null,o.metadataUrlTemplate=null,o.thumbnailUrlTemplate=null,o.kmlUrlTemplate=null,o.featuredToursUrl=null,o.enableViewportFallback=!1,o.viewportFallbackDistance=0,o.fallbackAlleycatUrlTemplate=null),t.requirements!=null&&t.hasOwnProperty("requirements")&&(o.requirements=n.keyhole.dbroot.RequirementProto.toObject(t.requirements,e)),t.alleycatUrlTemplate!=null&&t.hasOwnProperty("alleycatUrlTemplate")&&(o.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.alleycatUrlTemplate,e)),t.metadataUrlTemplate!=null&&t.hasOwnProperty("metadataUrlTemplate")&&(o.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.metadataUrlTemplate,e)),t.thumbnailUrlTemplate!=null&&t.hasOwnProperty("thumbnailUrlTemplate")&&(o.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.thumbnailUrlTemplate,e)),t.kmlUrlTemplate!=null&&t.hasOwnProperty("kmlUrlTemplate")&&(o.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlUrlTemplate,e)),t.featuredToursUrl!=null&&t.hasOwnProperty("featuredToursUrl")&&(o.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.featuredToursUrl,e)),t.enableViewportFallback!=null&&t.hasOwnProperty("enableViewportFallback")&&(o.enableViewportFallback=t.enableViewportFallback),t.viewportFallbackDistance!=null&&t.hasOwnProperty("viewportFallbackDistance")&&(o.viewportFallbackDistance=t.viewportFallbackDistance),t.fallbackAlleycatUrlTemplate!=null&&t.hasOwnProperty("fallbackAlleycatUrlTemplate")&&(o.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.fallbackAlleycatUrlTemplate,e)),t.imageryType&&t.imageryType.length){o.imageryType=[];for(var a=0;a<t.imageryType.length;++a)o.imageryType[a]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.toObject(t.imageryType[a],e)}return o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.FilmstripConfigProto"},l.AlleycatImageryTypeProto=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.imageryTypeId=0,r.prototype.imageryTypeLabel="",r.prototype.metadataUrlTemplate=null,r.prototype.thumbnailUrlTemplate=null,r.prototype.kmlUrlTemplate=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.imageryTypeId=e.int32();break}case 2:{p.imageryTypeLabel=e.string();break}case 3:{p.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 4:{p.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 5:{p.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.imageryTypeId!=null&&e.hasOwnProperty("imageryTypeId")&&!u.isInteger(e.imageryTypeId))return"imageryTypeId: integer expected";if(e.imageryTypeLabel!=null&&e.hasOwnProperty("imageryTypeLabel")&&!u.isString(e.imageryTypeLabel))return"imageryTypeLabel: string expected";if(e.metadataUrlTemplate!=null&&e.hasOwnProperty("metadataUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.metadataUrlTemplate);if(o)return"metadataUrlTemplate."+o}if(e.thumbnailUrlTemplate!=null&&e.hasOwnProperty("thumbnailUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.thumbnailUrlTemplate);if(o)return"thumbnailUrlTemplate."+o}if(e.kmlUrlTemplate!=null&&e.hasOwnProperty("kmlUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.kmlUrlTemplate);if(o)return"kmlUrlTemplate."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto)return e;var o=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto;if(e.imageryTypeId!=null&&(o.imageryTypeId=e.imageryTypeId|0),e.imageryTypeLabel!=null&&(o.imageryTypeLabel=String(e.imageryTypeLabel)),e.metadataUrlTemplate!=null){if(typeof e.metadataUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.metadataUrlTemplate: object expected");o.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.metadataUrlTemplate)}if(e.thumbnailUrlTemplate!=null){if(typeof e.thumbnailUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.thumbnailUrlTemplate: object expected");o.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.thumbnailUrlTemplate)}if(e.kmlUrlTemplate!=null){if(typeof e.kmlUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.kmlUrlTemplate: object expected");o.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.kmlUrlTemplate)}return o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.imageryTypeId=0,a.imageryTypeLabel="",a.metadataUrlTemplate=null,a.thumbnailUrlTemplate=null,a.kmlUrlTemplate=null),e.imageryTypeId!=null&&e.hasOwnProperty("imageryTypeId")&&(a.imageryTypeId=e.imageryTypeId),e.imageryTypeLabel!=null&&e.hasOwnProperty("imageryTypeLabel")&&(a.imageryTypeLabel=e.imageryTypeLabel),e.metadataUrlTemplate!=null&&e.hasOwnProperty("metadataUrlTemplate")&&(a.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.metadataUrlTemplate,o)),e.thumbnailUrlTemplate!=null&&e.hasOwnProperty("thumbnailUrlTemplate")&&(a.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.thumbnailUrlTemplate,o)),e.kmlUrlTemplate!=null&&e.hasOwnProperty("kmlUrlTemplate")&&(a.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.kmlUrlTemplate,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto"},r}(),l}(),i.StarDataProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.url=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.StarDataProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.url=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.url!=null&&t.hasOwnProperty("url")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.url);if(e)return"url."+e}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.StarDataProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.StarDataProto;if(t.url!=null){if(typeof t.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.StarDataProto.url: object expected");e.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.url)}return e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.url=null),t.url!=null&&t.hasOwnProperty("url")&&(o.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.url,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.StarDataProto"},l}(),i}(),c.DbRootRefProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url="",i.prototype.isCritical=!1,i.prototype.requirements=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DbRootRefProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 2:{o.url=r.string();break}case 1:{o.isCritical=r.bool();break}case 3:{o.requirements=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("url"))throw u.ProtocolError("missing required 'url'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.url))return"url: string expected";if(r.isCritical!=null&&r.hasOwnProperty("isCritical")&&typeof r.isCritical!="boolean")return"isCritical: boolean expected";if(r.requirements!=null&&r.hasOwnProperty("requirements")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirements);if(t)return"requirements."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DbRootRefProto)return r;var t=new n.keyhole.dbroot.DbRootRefProto;if(r.url!=null&&(t.url=String(r.url)),r.isCritical!=null&&(t.isCritical=!!r.isCritical),r.requirements!=null){if(typeof r.requirements!="object")throw TypeError(".keyhole.dbroot.DbRootRefProto.requirements: object expected");t.requirements=n.keyhole.dbroot.RequirementProto.fromObject(r.requirements)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isCritical=!1,e.url="",e.requirements=null),r.isCritical!=null&&r.hasOwnProperty("isCritical")&&(e.isCritical=r.isCritical),r.url!=null&&r.hasOwnProperty("url")&&(e.url=r.url),r.requirements!=null&&r.hasOwnProperty("requirements")&&(e.requirements=n.keyhole.dbroot.RequirementProto.toObject(r.requirements,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DbRootRefProto"},i}(),c.DatabaseVersionProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.quadtreeVersion=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DatabaseVersionProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.quadtreeVersion=r.uint32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("quadtreeVersion"))throw u.ProtocolError("missing required 'quadtreeVersion'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.quadtreeVersion)?null:"quadtreeVersion: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DatabaseVersionProto)return r;var t=new n.keyhole.dbroot.DatabaseVersionProto;return r.quadtreeVersion!=null&&(t.quadtreeVersion=r.quadtreeVersion>>>0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.quadtreeVersion=0),r.quadtreeVersion!=null&&r.hasOwnProperty("quadtreeVersion")&&(e.quadtreeVersion=r.quadtreeVersion),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DatabaseVersionProto"},i}(),c.DbRootProto=function(){function i(l){if(this.providerInfo=[],this.nestedFeature=[],this.styleAttribute=[],this.styleMap=[],this.translationEntry=[],this.dbrootReference=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.databaseName=null,i.prototype.imageryPresent=!0,i.prototype.protoImagery=!1,i.prototype.terrainPresent=!1,i.prototype.providerInfo=u.emptyArray,i.prototype.nestedFeature=u.emptyArray,i.prototype.styleAttribute=u.emptyArray,i.prototype.styleMap=u.emptyArray,i.prototype.endSnippet=null,i.prototype.translationEntry=u.emptyArray,i.prototype.language="en",i.prototype.version=5,i.prototype.dbrootReference=u.emptyArray,i.prototype.databaseVersion=null,i.prototype.refreshTimeout=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DbRootProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 15:{o.databaseName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 1:{o.imageryPresent=r.bool();break}case 14:{o.protoImagery=r.bool();break}case 2:{o.terrainPresent=r.bool();break}case 3:{o.providerInfo&&o.providerInfo.length||(o.providerInfo=[]),o.providerInfo.push(n.keyhole.dbroot.ProviderInfoProto.decode(r,r.uint32()));break}case 4:{o.nestedFeature&&o.nestedFeature.length||(o.nestedFeature=[]),o.nestedFeature.push(n.keyhole.dbroot.NestedFeatureProto.decode(r,r.uint32()));break}case 5:{o.styleAttribute&&o.styleAttribute.length||(o.styleAttribute=[]),o.styleAttribute.push(n.keyhole.dbroot.StyleAttributeProto.decode(r,r.uint32()));break}case 6:{o.styleMap&&o.styleMap.length||(o.styleMap=[]),o.styleMap.push(n.keyhole.dbroot.StyleMapProto.decode(r,r.uint32()));break}case 7:{o.endSnippet=n.keyhole.dbroot.EndSnippetProto.decode(r,r.uint32());break}case 8:{o.translationEntry&&o.translationEntry.length||(o.translationEntry=[]),o.translationEntry.push(n.keyhole.dbroot.StringEntryProto.decode(r,r.uint32()));break}case 9:{o.language=r.string();break}case 10:{o.version=r.int32();break}case 11:{o.dbrootReference&&o.dbrootReference.length||(o.dbrootReference=[]),o.dbrootReference.push(n.keyhole.dbroot.DbRootRefProto.decode(r,r.uint32()));break}case 13:{o.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.decode(r,r.uint32());break}case 16:{o.refreshTimeout=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.databaseName!=null&&r.hasOwnProperty("databaseName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.databaseName);if(t)return"databaseName."+t}if(r.imageryPresent!=null&&r.hasOwnProperty("imageryPresent")&&typeof r.imageryPresent!="boolean")return"imageryPresent: boolean expected";if(r.protoImagery!=null&&r.hasOwnProperty("protoImagery")&&typeof r.protoImagery!="boolean")return"protoImagery: boolean expected";if(r.terrainPresent!=null&&r.hasOwnProperty("terrainPresent")&&typeof r.terrainPresent!="boolean")return"terrainPresent: boolean expected";if(r.providerInfo!=null&&r.hasOwnProperty("providerInfo")){if(!Array.isArray(r.providerInfo))return"providerInfo: array expected";for(var e=0;e<r.providerInfo.length;++e){var t=n.keyhole.dbroot.ProviderInfoProto.verify(r.providerInfo[e]);if(t)return"providerInfo."+t}}if(r.nestedFeature!=null&&r.hasOwnProperty("nestedFeature")){if(!Array.isArray(r.nestedFeature))return"nestedFeature: array expected";for(var e=0;e<r.nestedFeature.length;++e){var t=n.keyhole.dbroot.NestedFeatureProto.verify(r.nestedFeature[e]);if(t)return"nestedFeature."+t}}if(r.styleAttribute!=null&&r.hasOwnProperty("styleAttribute")){if(!Array.isArray(r.styleAttribute))return"styleAttribute: array expected";for(var e=0;e<r.styleAttribute.length;++e){var t=n.keyhole.dbroot.StyleAttributeProto.verify(r.styleAttribute[e]);if(t)return"styleAttribute."+t}}if(r.styleMap!=null&&r.hasOwnProperty("styleMap")){if(!Array.isArray(r.styleMap))return"styleMap: array expected";for(var e=0;e<r.styleMap.length;++e){var t=n.keyhole.dbroot.StyleMapProto.verify(r.styleMap[e]);if(t)return"styleMap."+t}}if(r.endSnippet!=null&&r.hasOwnProperty("endSnippet")){var t=n.keyhole.dbroot.EndSnippetProto.verify(r.endSnippet);if(t)return"endSnippet."+t}if(r.translationEntry!=null&&r.hasOwnProperty("translationEntry")){if(!Array.isArray(r.translationEntry))return"translationEntry: array expected";for(var e=0;e<r.translationEntry.length;++e){var t=n.keyhole.dbroot.StringEntryProto.verify(r.translationEntry[e]);if(t)return"translationEntry."+t}}if(r.language!=null&&r.hasOwnProperty("language")&&!u.isString(r.language))return"language: string expected";if(r.version!=null&&r.hasOwnProperty("version")&&!u.isInteger(r.version))return"version: integer expected";if(r.dbrootReference!=null&&r.hasOwnProperty("dbrootReference")){if(!Array.isArray(r.dbrootReference))return"dbrootReference: array expected";for(var e=0;e<r.dbrootReference.length;++e){var t=n.keyhole.dbroot.DbRootRefProto.verify(r.dbrootReference[e]);if(t)return"dbrootReference."+t}}if(r.databaseVersion!=null&&r.hasOwnProperty("databaseVersion")){var t=n.keyhole.dbroot.DatabaseVersionProto.verify(r.databaseVersion);if(t)return"databaseVersion."+t}return r.refreshTimeout!=null&&r.hasOwnProperty("refreshTimeout")&&!u.isInteger(r.refreshTimeout)?"refreshTimeout: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DbRootProto)return r;var t=new n.keyhole.dbroot.DbRootProto;if(r.databaseName!=null){if(typeof r.databaseName!="object")throw TypeError(".keyhole.dbroot.DbRootProto.databaseName: object expected");t.databaseName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.databaseName)}if(r.imageryPresent!=null&&(t.imageryPresent=!!r.imageryPresent),r.protoImagery!=null&&(t.protoImagery=!!r.protoImagery),r.terrainPresent!=null&&(t.terrainPresent=!!r.terrainPresent),r.providerInfo){if(!Array.isArray(r.providerInfo))throw TypeError(".keyhole.dbroot.DbRootProto.providerInfo: array expected");t.providerInfo=[];for(var e=0;e<r.providerInfo.length;++e){if(typeof r.providerInfo[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.providerInfo: object expected");t.providerInfo[e]=n.keyhole.dbroot.ProviderInfoProto.fromObject(r.providerInfo[e])}}if(r.nestedFeature){if(!Array.isArray(r.nestedFeature))throw TypeError(".keyhole.dbroot.DbRootProto.nestedFeature: array expected");t.nestedFeature=[];for(var e=0;e<r.nestedFeature.length;++e){if(typeof r.nestedFeature[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.nestedFeature: object expected");t.nestedFeature[e]=n.keyhole.dbroot.NestedFeatureProto.fromObject(r.nestedFeature[e])}}if(r.styleAttribute){if(!Array.isArray(r.styleAttribute))throw TypeError(".keyhole.dbroot.DbRootProto.styleAttribute: array expected");t.styleAttribute=[];for(var e=0;e<r.styleAttribute.length;++e){if(typeof r.styleAttribute[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.styleAttribute: object expected");t.styleAttribute[e]=n.keyhole.dbroot.StyleAttributeProto.fromObject(r.styleAttribute[e])}}if(r.styleMap){if(!Array.isArray(r.styleMap))throw TypeError(".keyhole.dbroot.DbRootProto.styleMap: array expected");t.styleMap=[];for(var e=0;e<r.styleMap.length;++e){if(typeof r.styleMap[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.styleMap: object expected");t.styleMap[e]=n.keyhole.dbroot.StyleMapProto.fromObject(r.styleMap[e])}}if(r.endSnippet!=null){if(typeof r.endSnippet!="object")throw TypeError(".keyhole.dbroot.DbRootProto.endSnippet: object expected");t.endSnippet=n.keyhole.dbroot.EndSnippetProto.fromObject(r.endSnippet)}if(r.translationEntry){if(!Array.isArray(r.translationEntry))throw TypeError(".keyhole.dbroot.DbRootProto.translationEntry: array expected");t.translationEntry=[];for(var e=0;e<r.translationEntry.length;++e){if(typeof r.translationEntry[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.translationEntry: object expected");t.translationEntry[e]=n.keyhole.dbroot.StringEntryProto.fromObject(r.translationEntry[e])}}if(r.language!=null&&(t.language=String(r.language)),r.version!=null&&(t.version=r.version|0),r.dbrootReference){if(!Array.isArray(r.dbrootReference))throw TypeError(".keyhole.dbroot.DbRootProto.dbrootReference: array expected");t.dbrootReference=[];for(var e=0;e<r.dbrootReference.length;++e){if(typeof r.dbrootReference[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.dbrootReference: object expected");t.dbrootReference[e]=n.keyhole.dbroot.DbRootRefProto.fromObject(r.dbrootReference[e])}}if(r.databaseVersion!=null){if(typeof r.databaseVersion!="object")throw TypeError(".keyhole.dbroot.DbRootProto.databaseVersion: object expected");t.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.fromObject(r.databaseVersion)}return r.refreshTimeout!=null&&(t.refreshTimeout=r.refreshTimeout|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.providerInfo=[],e.nestedFeature=[],e.styleAttribute=[],e.styleMap=[],e.translationEntry=[],e.dbrootReference=[]),t.defaults&&(e.imageryPresent=!0,e.terrainPresent=!1,e.endSnippet=null,e.language="en",e.version=5,e.databaseVersion=null,e.protoImagery=!1,e.databaseName=null,e.refreshTimeout=0),r.imageryPresent!=null&&r.hasOwnProperty("imageryPresent")&&(e.imageryPresent=r.imageryPresent),r.terrainPresent!=null&&r.hasOwnProperty("terrainPresent")&&(e.terrainPresent=r.terrainPresent),r.providerInfo&&r.providerInfo.length){e.providerInfo=[];for(var o=0;o<r.providerInfo.length;++o)e.providerInfo[o]=n.keyhole.dbroot.ProviderInfoProto.toObject(r.providerInfo[o],t)}if(r.nestedFeature&&r.nestedFeature.length){e.nestedFeature=[];for(var o=0;o<r.nestedFeature.length;++o)e.nestedFeature[o]=n.keyhole.dbroot.NestedFeatureProto.toObject(r.nestedFeature[o],t)}if(r.styleAttribute&&r.styleAttribute.length){e.styleAttribute=[];for(var o=0;o<r.styleAttribute.length;++o)e.styleAttribute[o]=n.keyhole.dbroot.StyleAttributeProto.toObject(r.styleAttribute[o],t)}if(r.styleMap&&r.styleMap.length){e.styleMap=[];for(var o=0;o<r.styleMap.length;++o)e.styleMap[o]=n.keyhole.dbroot.StyleMapProto.toObject(r.styleMap[o],t)}if(r.endSnippet!=null&&r.hasOwnProperty("endSnippet")&&(e.endSnippet=n.keyhole.dbroot.EndSnippetProto.toObject(r.endSnippet,t)),r.translationEntry&&r.translationEntry.length){e.translationEntry=[];for(var o=0;o<r.translationEntry.length;++o)e.translationEntry[o]=n.keyhole.dbroot.StringEntryProto.toObject(r.translationEntry[o],t)}if(r.language!=null&&r.hasOwnProperty("language")&&(e.language=r.language),r.version!=null&&r.hasOwnProperty("version")&&(e.version=r.version),r.dbrootReference&&r.dbrootReference.length){e.dbrootReference=[];for(var o=0;o<r.dbrootReference.length;++o)e.dbrootReference[o]=n.keyhole.dbroot.DbRootRefProto.toObject(r.dbrootReference[o],t)}return r.databaseVersion!=null&&r.hasOwnProperty("databaseVersion")&&(e.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.toObject(r.databaseVersion,t)),r.protoImagery!=null&&r.hasOwnProperty("protoImagery")&&(e.protoImagery=r.protoImagery),r.databaseName!=null&&r.hasOwnProperty("databaseName")&&(e.databaseName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.databaseName,t)),r.refreshTimeout!=null&&r.hasOwnProperty("refreshTimeout")&&(e.refreshTimeout=r.refreshTimeout),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DbRootProto"},i}(),c.EncryptedDbRootProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.encryptionType=0,i.prototype.encryptionData=u.newBuffer([]),i.prototype.dbrootData=u.newBuffer([]),i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.EncryptedDbRootProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.encryptionType=r.int32();break}case 2:{o.encryptionData=r.bytes();break}case 3:{o.dbrootData=r.bytes();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.encryptionType!=null&&r.hasOwnProperty("encryptionType"))switch(r.encryptionType){default:return"encryptionType: enum value expected";case 0:break}return r.encryptionData!=null&&r.hasOwnProperty("encryptionData")&&!(r.encryptionData&&typeof r.encryptionData.length=="number"||u.isString(r.encryptionData))?"encryptionData: buffer expected":r.dbrootData!=null&&r.hasOwnProperty("dbrootData")&&!(r.dbrootData&&typeof r.dbrootData.length=="number"||u.isString(r.dbrootData))?"dbrootData: buffer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.EncryptedDbRootProto)return r;var t=new n.keyhole.dbroot.EncryptedDbRootProto;switch(r.encryptionType){case"ENCRYPTION_XOR":case 0:t.encryptionType=0;break}return r.encryptionData!=null&&(typeof r.encryptionData=="string"?u.base64.decode(r.encryptionData,t.encryptionData=u.newBuffer(u.base64.length(r.encryptionData)),0):r.encryptionData.length>=0&&(t.encryptionData=r.encryptionData)),r.dbrootData!=null&&(typeof r.dbrootData=="string"?u.base64.decode(r.dbrootData,t.dbrootData=u.newBuffer(u.base64.length(r.dbrootData)),0):r.dbrootData.length>=0&&(t.dbrootData=r.dbrootData)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.encryptionType=t.enums===String?"ENCRYPTION_XOR":0,t.bytes===String?e.encryptionData="":(e.encryptionData=[],t.bytes!==Array&&(e.encryptionData=u.newBuffer(e.encryptionData))),t.bytes===String?e.dbrootData="":(e.dbrootData=[],t.bytes!==Array&&(e.dbrootData=u.newBuffer(e.dbrootData)))),r.encryptionType!=null&&r.hasOwnProperty("encryptionType")&&(e.encryptionType=t.enums===String?n.keyhole.dbroot.EncryptedDbRootProto.EncryptionType[r.encryptionType]:r.encryptionType),r.encryptionData!=null&&r.hasOwnProperty("encryptionData")&&(e.encryptionData=t.bytes===String?u.base64.encode(r.encryptionData,0,r.encryptionData.length):t.bytes===Array?Array.prototype.slice.call(r.encryptionData):r.encryptionData),r.dbrootData!=null&&r.hasOwnProperty("dbrootData")&&(e.dbrootData=t.bytes===String?u.base64.encode(r.dbrootData,0,r.dbrootData.length):t.bytes===Array?Array.prototype.slice.call(r.dbrootData):r.dbrootData),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.EncryptedDbRootProto"},i.EncryptionType=function(){var l={},r=Object.create(l);return r[l[0]="ENCRYPTION_XOR"]=0,r}(),i}(),c}(),b}(),n.keyhole.dbroot};})(); diff --git a/public/Cesium/ThirdParty/wasm_splats_bg.wasm b/public/Cesium/ThirdParty/wasm_splats_bg.wasm new file mode 100644 index 000000000..9e46cc4cd Binary files /dev/null and b/public/Cesium/ThirdParty/wasm_splats_bg.wasm differ diff --git a/public/Cesium/Widgets/Animation/Animation.css b/public/Cesium/Widgets/Animation/Animation.css new file mode 100644 index 000000000..0f18c52e2 --- /dev/null +++ b/public/Cesium/Widgets/Animation/Animation.css @@ -0,0 +1,127 @@ +/* packages/widgets/Source/Animation/Animation.css */ +.cesium-animation-theme { + visibility: hidden; + display: block; + position: absolute; + z-index: -100; +} +.cesium-animation-themeNormal { + color: #222; +} +.cesium-animation-themeHover { + color: #4488b0; +} +.cesium-animation-themeSelect { + color: #242; +} +.cesium-animation-themeDisabled { + color: #333; +} +.cesium-animation-themeKnob { + color: #222; +} +.cesium-animation-themePointer { + color: #2e2; +} +.cesium-animation-themeSwoosh { + color: #8ac; +} +.cesium-animation-themeSwooshHover { + color: #aef; +} +.cesium-animation-svgText { + fill: #edffff; + font-family: Sans-Serif; + font-size: 15px; + text-anchor: middle; +} +.cesium-animation-blank { + fill: #000; + fill-opacity: 0.01; + stroke: none; +} +.cesium-animation-rectButton { + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-rectButton .cesium-animation-buttonGlow { + fill: #fff; + stroke: none; + display: none; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonGlow { + display: block; +} +.cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #edffff; +} +.cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #aef; +} +.cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-animation-buttonDisabled { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #555; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonGlow { + display: none; +} +.cesium-animation-buttonToggled .cesium-animation-buttonGlow { + display: block; + fill: #2e2; +} +.cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-shuttleRingG { + cursor: pointer; +} +.cesium-animation-shuttleRingPointer { + cursor: pointer; +} +.cesium-animation-shuttleRingPausePointer { + cursor: pointer; +} +.cesium-animation-shuttleRingBack { + fill: #181818; + fill-opacity: 0.8; + stroke: #333; + stroke-width: 1.2; +} +.cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; + stroke-width: 3; + stroke-opacity: 0.2; + stroke-linecap: round; +} +.cesium-animation-knobOuter { + cursor: pointer; + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-knobInner { + cursor: pointer; +} diff --git a/public/Cesium/Widgets/Animation/lighter.css b/public/Cesium/Widgets/Animation/lighter.css new file mode 100644 index 000000000..466ddb603 --- /dev/null +++ b/public/Cesium/Widgets/Animation/lighter.css @@ -0,0 +1,70 @@ +/* packages/widgets/Source/Animation/lighter.css */ +.cesium-lighter .cesium-animation-themeNormal { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeHover { + color: #abd6ff; +} +.cesium-lighter .cesium-animation-themeSelect { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeDisabled { + color: #efefef; +} +.cesium-lighter .cesium-animation-themeKnob { + color: #e1e2e3; +} +.cesium-lighter .cesium-animation-themePointer { + color: #fa5; +} +.cesium-lighter .cesium-animation-themeSwoosh { + color: #ace; +} +.cesium-lighter .cesium-animation-themeSwooshHover { + color: #bdf; +} +.cesium-lighter .cesium-animation-svgText { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow { + fill: #ffaa2a; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #d3d3d3; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-lighter .cesium-animation-shuttleRingBack { + fill: #fafafa; + fill-opacity: 1; + stroke: #aeaeae; + stroke-width: 1.2; +} +.cesium-lighter .cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; +} +.cesium-lighter .cesium-animation-knobOuter { + stroke: #a5a5a5; +} diff --git a/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css b/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css new file mode 100644 index 000000000..ac37d16e0 --- /dev/null +++ b/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css @@ -0,0 +1,108 @@ +/* packages/widgets/Source/BaseLayerPicker/BaseLayerPicker.css */ +.cesium-baseLayerPicker-selected { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} +.cesium-baseLayerPicker-dropDown { + display: block; + position: absolute; + box-sizing: content-box; + top: auto; + right: 0; + width: 320px; + max-height: 500px; + margin-top: 5px; + background-color: rgba(38, 38, 38, 0.75); + border: 1px solid #444; + padding: 6px; + overflow: auto; + border-radius: 10px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + transform: translate(0, -20%); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-baseLayerPicker-dropDown-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-baseLayerPicker-sectionTitle { + display: block; + font-family: sans-serif; + font-size: 16pt; + text-align: left; + color: #edffff; + margin-bottom: 4px; +} +.cesium-baseLayerPicker-choices { + margin-bottom: 5px; +} +.cesium-baseLayerPicker-categoryTitle { + color: #edffff; + font-size: 11pt; +} +.cesium-baseLayerPicker-choices { + display: block; + border: 1px solid #888; + border-radius: 5px; + padding: 5px 0; +} +.cesium-baseLayerPicker-item { + display: inline-block; + vertical-align: top; + margin: 2px 5px; + width: 64px; + text-align: center; + cursor: pointer; +} +.cesium-baseLayerPicker-itemLabel { + display: block; + font-family: sans-serif; + font-size: 8pt; + text-align: center; + vertical-align: middle; + color: #edffff; + cursor: pointer; + word-wrap: break-word; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, +.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel { + text-decoration: underline; +} +.cesium-baseLayerPicker-itemIcon { + display: inline-block; + position: relative; + width: inherit; + height: auto; + background-size: 100% 100%; + border: solid 1px #444; + border-radius: 9px; + color: #edffff; + margin: 0; + padding: 0; + cursor: pointer; + box-sizing: border-box; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #fff; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(189, 236, 248); +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(189, 236, 248); +} diff --git a/public/Cesium/Widgets/BaseLayerPicker/lighter.css b/public/Cesium/Widgets/BaseLayerPicker/lighter.css new file mode 100644 index 000000000..d43cd3d96 --- /dev/null +++ b/public/Cesium/Widgets/BaseLayerPicker/lighter.css @@ -0,0 +1,22 @@ +/* packages/widgets/Source/BaseLayerPicker/lighter.css */ +.cesium-lighter .cesium-baseLayerPicker-itemIcon { + border-color: #759dc0; +} +.cesium-lighter .cesium-baseLayerPicker-dropDown { + background-color: rgba(240, 240, 240, 0.75); +} +.cesium-lighter .cesium-baseLayerPicker-sectionTitle { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-itemLabel { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #000; +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(0, 61, 168); +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(0, 61, 168); +} diff --git a/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css b/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css new file mode 100644 index 000000000..5b6295b40 --- /dev/null +++ b/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css @@ -0,0 +1,102 @@ +/* packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.css */ +ul.cesium-cesiumInspector-statistics { + margin: 0; + padding-top: 3px; + padding-bottom: 3px; +} +ul.cesium-cesiumInspector-statistics + ul.cesium-cesiumInspector-statistics { + border-top: 1px solid #aaa; +} +.cesium-cesiumInspector-slider { + margin-top: 5px; +} +.cesium-cesiumInspector-slider input[type=number] { + text-align: left; + background-color: #222; + outline: none; + border: 1px solid #444; + color: #edffff; + width: 100px; + border-radius: 3px; + padding: 1px; + margin-left: 10px; + cursor: auto; +} +.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button, +.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.cesium-cesiumInspector-slider input[type=range] { + margin-left: 5px; + vertical-align: middle; +} +.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor { + display: none; +} +.cesium-cesiumInspector-styleEditor { + padding: 10px; + border-radius: 5px; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; +} +.cesium-cesiumInspector-styleEditor textarea { + width: 100%; + height: 300px; + background: transparent; + color: #edffff; + border: none; + padding: 0; + white-space: pre; + overflow-wrap: normal; + overflow-x: auto; +} +.cesium-3DTilesInspector { + width: 300px; + pointer-events: all; +} +.cesium-3DTilesInspector-statistics { + font-size: 11px; +} +.cesium-3DTilesInspector-disabledElementsInfo { + margin: 5px 0 0 0; + padding: 0 0 0 20px; + color: #eed202; +} +.cesium-3DTilesInspector div, +.cesium-3DTilesInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-cesiumInspector-error { + color: #ff9e9e; + overflow: auto; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} +input.cesium-cesiumInspector-url { + overflow: hidden; + white-space: nowrap; + overflow-x: scroll; + background-color: transparent; + color: white; + outline: none; + border: none; + height: 1em; + width: 100%; +} +.cesium-cesiumInspector .field-group { + display: table; +} +.cesium-cesiumInspector .field-group > label { + display: table-cell; + font-weight: bold; +} +.cesium-cesiumInspector .field-group > .field { + display: table-cell; + width: 100%; +} diff --git a/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css b/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css new file mode 100644 index 000000000..aeb7700e9 --- /dev/null +++ b/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css @@ -0,0 +1,113 @@ +/* packages/widgets/Source/CesiumInspector/CesiumInspector.css */ +.cesium-cesiumInspector { + border-radius: 5px; + transition: width ease-in-out 0.25s; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; + color: #edffff; + display: inline-block; + position: relative; + padding: 4px 12px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; +} +.cesium-cesiumInspector-button { + text-align: center; + font-size: 11pt; +} +.cesium-cesiumInspector-visible .cesium-cesiumInspector-button { + border-bottom: 1px solid #aaa; + padding-bottom: 3px; +} +.cesium-cesiumInspector input:enabled, +.cesium-cesiumInspector-button { + cursor: pointer; +} +.cesium-cesiumInspector-visible { + width: 185px; + height: auto; +} +.cesium-cesiumInspector-hidden { + width: 122px; + height: 17px; +} +.cesium-cesiumInspector-sectionContent { + max-height: 600px; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent { + max-height: 0; + padding: 0 !important; + overflow: hidden; +} +.cesium-cesiumInspector-dropDown { + margin: 5px 0; + font-family: sans-serif; + font-size: 10pt; + width: 185px; +} +.cesium-cesiumInspector-frustumStatistics { + padding-left: 10px; + padding: 5px; + background-color: rgba(80, 80, 80, 0.75); +} +.cesium-cesiumInspector-pickButton { + background-color: rgba(0, 0, 0, 0.3); + border: 1px solid #444; + color: #edffff; + border-radius: 5px; + padding: 3px 7px; + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + margin: 0 auto; +} +.cesium-cesiumInspector-pickButton:focus { + outline: none; +} +.cesium-cesiumInspector-pickButton:active, +.cesium-cesiumInspector-pickButtonHighlight { + color: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-cesiumInspector-center { + text-align: center; +} +.cesium-cesiumInspector-sectionHeader { + font-weight: bold; + font-size: 10pt; + margin: 0; + cursor: pointer; +} +.cesium-cesiumInspector-pickSection { + border: 1px solid #aaa; + border-radius: 5px; + padding: 3px; + margin-bottom: 5px; +} +.cesium-cesiumInspector-sectionContent { + margin-bottom: 10px; + transition: max-height 0.25s; +} +.cesium-cesiumInspector-tileText { + padding-bottom: 10px; + border-bottom: 1px solid #aaa; +} +.cesium-cesiumInspector-relativeText { + padding-top: 10px; +} +.cesium-cesiumInspector-sectionHeader::before { + margin-right: 5px; + content: "-"; + width: 1ch; + display: inline-block; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before { + content: "+"; +} diff --git a/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css b/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css new file mode 100644 index 000000000..0763b6496 --- /dev/null +++ b/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css @@ -0,0 +1,119 @@ +.cesium-widget { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.cesium-widget, +.cesium-widget canvas { + width: 100%; + height: 100%; + touch-action: none; +} + +.cesium-widget-credits { + display: block; + position: absolute; + bottom: 0; + left: 0; + color: #fff; + font-size: 10px; + text-shadow: 0px 0px 2px #000000; + padding-right: 5px; +} + +.cesium-widget-errorPanel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + text-align: center; + background: rgba(0, 0, 0, 0.7); + z-index: 99999; +} + +.cesium-widget-errorPanel:before { + display: inline-block; + vertical-align: middle; + height: 100%; + content: ""; +} + +.cesium-widget-errorPanel-content { + width: 75%; + max-width: 500px; + display: inline-block; + text-align: left; + vertical-align: middle; + border: 1px solid #510c00; + border-radius: 7px; + background-color: #f0d9d5; + font-size: 14px; + color: #510c00; +} + +.cesium-widget-errorPanel-content.expanded { + max-width: 75%; +} + +.cesium-widget-errorPanel-header { + font-size: 18px; + font-family: "Open Sans", Verdana, Geneva, sans-serif; + background: #d69d93; + border-bottom: 2px solid #510c00; + padding-bottom: 10px; + border-radius: 3px 3px 0 0; + padding: 15px; +} + +.cesium-widget-errorPanel-scroll { + overflow: auto; + font-family: "Open Sans", Verdana, Geneva, sans-serif; + white-space: pre-wrap; + padding: 0 15px; + margin: 10px 0 20px 0; +} + +.cesium-widget-errorPanel-buttonPanel { + padding: 0 15px; + margin: 10px 0 20px 0; + text-align: right; +} + +.cesium-widget-errorPanel-buttonPanel button { + border-color: #510c00; + background: #d69d93; + color: #202020; + margin: 0; +} +.cesium-widget-errorPanel-buttonPanel button:focus { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:hover { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:active { + border-color: #510c00; + background: #b17b72; + color: #510c00; +} + +.cesium-widget-errorPanel-more-details { + text-decoration: underline; + cursor: pointer; +} + +.cesium-widget-errorPanel-more-details:hover { + color: #2b0700; +} diff --git a/public/Cesium/Widgets/CesiumWidget/lighter.css b/public/Cesium/Widgets/CesiumWidget/lighter.css new file mode 100644 index 000000000..899e024cb --- /dev/null +++ b/public/Cesium/Widgets/CesiumWidget/lighter.css @@ -0,0 +1,14 @@ +.cesium-lighter .cesium-widget-errorPanel { + background: rgba(255, 255, 255, 0.7); +} + +.cesium-lighter .cesium-widget-errorPanel-content { + border: 1px solid #526f82; + border-radius: 7px; + background-color: white; + color: black; +} + +.cesium-lighter .cesium-widget-errorPanel-header { + color: #b87d00; +} diff --git a/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css b/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css new file mode 100644 index 000000000..fdb0a411a --- /dev/null +++ b/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css @@ -0,0 +1,8 @@ +/* packages/widgets/Source/FullscreenButton/FullscreenButton.css */ +.cesium-button.cesium-fullscreenButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} diff --git a/public/Cesium/Widgets/Geocoder/Geocoder.css b/public/Cesium/Widgets/Geocoder/Geocoder.css new file mode 100644 index 000000000..a0b478fc4 --- /dev/null +++ b/public/Cesium/Widgets/Geocoder/Geocoder.css @@ -0,0 +1,70 @@ +/* packages/widgets/Source/Geocoder/Geocoder.css */ +.cesium-viewer-geocoderContainer .cesium-geocoder-input { + border: solid 1px #444; + background-color: rgba(40, 40, 40, 0.7); + color: white; + display: inline-block; + vertical-align: middle; + width: 0; + height: 32px; + margin: 0; + padding: 0 32px 0 0; + border-radius: 0; + box-sizing: border-box; + transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; + -webkit-appearance: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus { + border-color: #ea4; + background-color: rgba(15, 15, 15, 0.9); + box-shadow: none; + outline: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, +.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide { + padding-left: 4px; + width: 250px; +} +.cesium-viewer-geocoderContainer .search-results { + position: absolute; + background-color: #000; + color: #eee; + overflow-y: auto; + opacity: 0.8; + width: 100%; +} +.cesium-viewer-geocoderContainer .search-results ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.cesium-viewer-geocoderContainer .search-results ul li { + font-size: 14px; + padding: 3px 10px; +} +.cesium-viewer-geocoderContainer .search-results ul li:hover { + cursor: pointer; +} +.cesium-viewer-geocoderContainer .search-results ul li.active { + background: #48b; +} +.cesium-geocoder-searchButton { + background-color: #303336; + display: inline-block; + position: absolute; + cursor: pointer; + width: 32px; + top: 1px; + right: 1px; + height: 30px; + vertical-align: middle; + fill: #edffff; +} +.cesium-geocoder-searchButton:hover { + background-color: #48b; +} diff --git a/public/Cesium/Widgets/Geocoder/lighter.css b/public/Cesium/Widgets/Geocoder/lighter.css new file mode 100644 index 000000000..b15c18924 --- /dev/null +++ b/public/Cesium/Widgets/Geocoder/lighter.css @@ -0,0 +1,17 @@ +/* packages/widgets/Source/Geocoder/lighter.css */ +.cesium-lighter .cesium-geocoder-input { + border: solid 1px #759dc0; + background-color: rgba(240, 240, 240, 0.9); + color: black; +} +.cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-lighter .cesium-geocoder-searchButton { + background-color: #e2f0ff; + fill: #111; +} +.cesium-lighter .cesium-geocoder-searchButton:hover { + background-color: #a6d2ff; +} diff --git a/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css b/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css new file mode 100644 index 000000000..49b623064 --- /dev/null +++ b/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css @@ -0,0 +1,27 @@ +/* packages/widgets/Source/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css */ +.cesium-viewer-i3s-explorer ul { + list-style-type: none; +} +.cesium-viewer-i3s-explorer .layersList { + padding: 0; +} +.cesium-viewer-i3s-explorer input { + margin: 0 3px 0 0; +} +.cesium-viewer-i3s-explorer .expandItem { + cursor: pointer; + user-select: none; + width: 20px; +} +.cesium-viewer-i3s-explorer .nested, +.cesium-viewer-i3s-explorer #bsl-wrapper { + display: none; +} +.cesium-viewer-i3s-explorer .active { + display: block; +} +.cesium-viewer-i3s-explorer .li-wrapper { + display: flex; + flex-direction: row; + align-content: center; +} diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png new file mode 100644 index 000000000..bd5976d24 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png new file mode 100644 index 000000000..46ffe9c6f Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png new file mode 100644 index 000000000..286f3a057 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png b/public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png new file mode 100644 index 000000000..a78a154b1 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png b/public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png new file mode 100644 index 000000000..4cafd40f9 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png b/public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png new file mode 100644 index 000000000..282d6ada8 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png b/public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png new file mode 100644 index 000000000..b8b5b7b1a Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png b/public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png new file mode 100644 index 000000000..45e0fc7b8 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png b/public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png new file mode 100644 index 000000000..f2eba4106 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png new file mode 100644 index 000000000..30ee6dbd5 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png new file mode 100644 index 000000000..6eef1fc3a Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png new file mode 100644 index 000000000..e6bc35513 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png b/public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png new file mode 100644 index 000000000..50271c79a Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png b/public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png new file mode 100644 index 000000000..84acdb809 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png b/public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png new file mode 100644 index 000000000..775fb38ce Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png new file mode 100644 index 000000000..0520e17c7 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png new file mode 100644 index 000000000..1546494ca Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png b/public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png new file mode 100644 index 000000000..af894096c Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png differ diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png b/public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png new file mode 100644 index 000000000..552130eb5 Binary files /dev/null and b/public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png differ diff --git a/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg b/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg new file mode 100644 index 000000000..7fae028c0 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="29.6875" + height="40.625095" + viewBox="0 0 29.6875 40.625095" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Mouse.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="747" + inkscape:window-height="596" + id="namedview17" + showgrid="false" + inkscape:zoom="1.84375" + inkscape:cx="-37.919388" + inkscape:cy="92.305679" + inkscape:window-x="266" + inkscape:window-y="72" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" + inkscape:snap-center="false" + inkscape:snap-page="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3" + transform="translate(-17.15625,-19.531154)"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + d="M 31.9335,20.041 C 24.639,20.034 17.653,20.318 17.653,44.617 c 0,10.951 8.799,15.032 14.347,15.032 5.545,0 14.347,-4.081 14.347,-15.032 0,-24.27 -7.119,-24.569 -14.4135,-24.576 z m 0.7515,1.358 c 5.643,0.012 10.927,0.236 12.063,16.153 -3.86,1.805 -7.916,2.765 -12.063,2.86 l 0,-2.966 c 0.845,-0.162 1.481,-0.909 1.481,-1.782 l 0,-8.956 c 0,-0.876 -0.637,-1.621 -1.481,-1.784 z m -1.027,4.855 0.685,0 c 0.249,0 0.453,0.205 0.453,0.454 l 0,8.956 c 0,0.249 -0.204,0.449 -0.453,0.449 l -0.685,0 c -0.249,0 -0.452,-0.2 -0.452,-0.449 l 0,-8.956 c 0,-0.249 0.203,-0.454 0.452,-0.454 z m -0.345,-4.855 0,3.525 c -0.845,0.163 -1.479,0.91 -1.479,1.784 l 0,8.956 c 0,0.873 0.634,1.62 1.479,1.782 l 0,2.966 C 25.002,40.264 20.408,38.16 19.25,37.573 20.381,21.633 25.668,21.411 31.313,21.399 z M 32,58.274 c -5.016,0 -12.976,-3.707 -12.976,-13.658 0,-1.983 0.045,-3.853 0.134,-5.563 2.003,0.929 6.696,2.74 12.868,2.74 4.394,0 8.704,-0.934 12.813,-2.771 0.089,1.718 0.135,3.6 0.135,5.595 0,9.95 -7.958,13.657 -12.974,13.657 z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssscccccssccsssssssssccssccccsscscss" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644;stroke-opacity:1" + d="M 11.584306,20.532528 C 9.1265112,20.247533 6.2927846,19.555647 4.1047676,18.706316 c -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.5226316 4.304477,-8.0618496 9.1542404,-8.0618496 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.5275241 -0.422157,5.7217066 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg new file mode 100644 index 000000000..0c49c15fb --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseLeft.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="104" + inkscape:window-y="136" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#66CCFF;stroke:#66CCFF;stroke-width:0.27118643999999997" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg new file mode 100644 index 000000000..9dd533d58 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseMiddle.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /><path + style="fill:#ffd800;stroke:#ffd800;stroke-width:0.33870965" + d="m 31.356243,35.809264 c -0.164314,-0.103856 -0.298753,-2.215682 -0.298753,-4.692945 0,-3.956026 0.08644,-4.52508 0.710296,-4.676395 0.390663,-0.09475 0.87474,-0.06834 1.075729,0.0587 0.200991,0.127038 0.312719,2.28036 0.248288,4.785159 -0.09927,3.859122 -0.217853,4.566401 -0.776977,4.634247 -0.362909,0.04404 -0.79427,-0.0049 -0.958583,-0.108765 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg new file mode 100644 index 000000000..2662ad18d --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseRight.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="32" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#65FD00;stroke:#65FD00;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg b/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg new file mode 100644 index 000000000..e682b3019 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="128.25087" + viewBox="0 0 76.664283 128.25086" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Touch.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.07794217" + inkscape:cy="94.239301" + inkscape:window-x="1529" + inkscape:window-y="186" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-5.1661327)"> + + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +</g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg new file mode 100644 index 000000000..f0509e855 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="133.41701" + viewBox="0 0 76.664283 133.417" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchDrag.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.077942171" + inkscape:cy="94.239298" + inkscape:window-x="161" + inkscape:window-y="225" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="M 18.653,0 C 12.359,0 7.258,5.102 7.258,11.395 c 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 30.048,5.102 24.946,0 18.653,0 z m 0,20.43 c -4.989,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.047,-9.035 9.036,-9.035 4.989,0 9.035,4.046 9.035,9.035 0,4.99 -4.045,9.036 -9.035,9.036 z" + id="path3430" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +<path + d="m 65.247258,98.823749 c -0.681067,0.71969 -7.149935,7.376421 -7.149935,7.376421 0,0 -0.86404,0.92222 -0.86404,-0.29705 0.0013,-1.22468 0.0013,-3.17039 0.0013,-3.17039 0,0 -0.498094,0.003 -1.261753,0.002 -2.35324,0.002 -6.936466,0.002 -8.692502,0.002 0,0 -0.07751,-0.007 -0.162642,-0.0472 0,0.0378 0,0.0972 0,0.13232 0.01652,0.0891 0.0013,0.16068 0,0.16608 0,0.0149 0,0.0419 0,0.0554 0,0 0.01779,0.077 0,0.17013 0,2.02673 0,6.49066 0,8.99672 0.0013,0.90332 0,1.49203 0,1.49203 0,0 2.283354,0.002 3.229986,0 0.942821,0 0.07751,0.87225 0.07751,0.87225 l -7.121981,7.36157 c 0,0 -0.470139,0.5833 -0.963151,0.0607 -0.677255,-0.72374 -6.941548,-7.59515 -6.941548,-7.59515 0,0 -0.867853,-0.91952 0.280812,-0.91952 1.151207,0.002 2.983481,0.002 2.983481,0.002 0,0 -0.0026,-0.52929 -0.0013,-1.34079 -0.0013,-2.50067 -0.0013,-7.37102 -0.0013,-9.23572 l 0,-0.004 c 0,-0.0567 0,-0.14582 0,-0.21333 -0.08259,0.0392 -0.15883,0.0459 -0.15883,0.0459 -1.756036,0 -6.339262,0 -8.696314,-0.002 -0.759847,0.002 -1.260482,0 -1.260482,0 0,0 0.0026,1.94706 0.0026,3.17039 -0.0013,1.21793 -0.864041,0.29975 -0.864041,0.29975 0,0 -6.467597,-6.655381 -7.147393,-7.377761 -0.493012,-0.52525 0.05464,-1.02484 0.05464,-1.02484 l 6.927571,-7.566801 c 0,0 0.82338,-0.92357 0.82211,0.08236 0.0026,1.004586 0.0026,3.432334 0.0026,3.432334 0,0 0.552732,-0.0014 1.402796,-0.0041 2.439643,0.0041 6.872933,0.0027 8.678524,0.0014 0,0 0.116899,-0.03106 0.23634,0.027 0,-4.084505 0,-8.204115 0.0013,-9.436893 -0.0013,-0.807449 0,-1.339448 0,-1.339448 0,0 -1.832274,0.0027 -2.983481,0.0027 -1.146124,-0.0014 -0.280813,-0.918169 -0.280813,-0.918169 0,0 6.261752,-6.872771 6.942819,-7.596505 0.494283,-0.522547 0.964422,0.05806 0.964422,0.05806 l 7.12071,7.361561 c 0,0 0.869123,0.874963 -0.07624,0.872261 -0.945362,0.0027 -3.229987,0.0027 -3.229987,0.0027 0,0 0.0013,0.587358 0.0038,1.492025 -0.0013,1.284087 -0.0026,5.419901 -0.0026,9.503056 0.120712,-0.06211 0.240153,-0.02835 0.240153,-0.02835 1.804319,0 6.237609,0 8.675982,0 0.851334,-0.0014 1.404066,0 1.404066,0 0,0 0.0013,-2.426399 0,-3.430985 0,-1.003235 0.820838,-0.08236 0.820838,-0.08236 l 6.927572,7.566803 c 0,0.001 0.546378,0.50094 0.05845,1.02484 z" + id="path3238" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccsscccccccccccccccccccccccccccccccc" + style="fill:#66ccff;fill-opacity:1" /></g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg new file mode 100644 index 000000000..fe968ff45 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="99.001816" + height="101.57817" + viewBox="0 0 99.001814 101.57817" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchRotate.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="1.9873603" + inkscape:cx="11.856691" + inkscape:cy="15.112094" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 48.832974,0 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 C 59.42425,4.862311 54.682106,0 48.832974,0 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 27.154761,39.321738 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="M 93.394891,94.930552 91.5074,101.57817 52.728925,101.21032 c 8.08e-4,-8.5e-4 2.829619,-2.585988 -2.124439,-7.016318 0,0 -10.822746,-5.22596 -18.506953,-18.0968 0,0 -6.310236,-6.742109 -6.091889,-9.206596 -0.583067,-4.408398 -1.209805,-6.954724 -1.715239,-8.534999 -1.063849,-4.039774 -1.553525,-2.844172 -1.553525,-7.228104 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.595085,22.156743 -5.191814,37.665865 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 36.857901,10.534807 -5.731265,12.511815 c 0,0 -0.666487,1.516584 -1.19043,0.316343 -0.52908,-1.19559 -1.800413,-4.092683 -1.800413,-4.092683 0,0 -0.774356,0.279126 -1.962218,0.711771 -3.412049,1.225827 -9.61846,3.462323 -12.145716,4.370646 0,0 -0.609983,0.412873 -1.019633,-0.532666 -0.419926,-0.944375 -3.7806092,-8.602891 -4.0798222,-9.279772 -0.294076,-0.674552 0.288938,-0.867615 0.288938,-0.867615 2.4553422,-0.886224 8.8659382,-3.19599 12.1688342,-4.381112 1.05816,-0.382636 1.763171,-0.631523 1.763171,-0.631523 0,0 -1.02734,-2.324887 -1.664289,-3.782156 -0.636951,-1.454944 1.049169,-0.79202 1.049169,-0.79202 0,0 12.534822,4.676522 13.866509,5.195231 0.963131,0.382636 0.457165,1.253741 0.457165,1.253741 z" + id="path9" + style="fill:#d800d8;fill-opacity:1" + inkscape:connector-curvature="0" /><g + id="g2997" + transform="matrix(0,-1,1,0,-0.01316643,45.882166)" + inkscape:transform-center-x="-4.9812271" + inkscape:transform-center-y="-4.2696251"><path + id="path2999" + d="M 6.6614176,0.14173229 19.48819,5.5984253 c 0,0 1.559055,0.6377953 0.354331,1.1338583 -1.240158,0.5314961 -4.181103,1.7716536 -4.181103,1.7716536 0,0 0.283465,0.7440945 0.744095,1.9133858 1.27559,3.259843 3.57874,9.248032 4.535433,11.692914 0,0 0.425197,0.566929 -0.566929,0.992126 -0.956693,0.389764 -8.751969,3.685039 -9.460631,4.003937 -0.673228,0.283464 -0.885827,-0.283465 -0.885827,-0.283465 C 9.1062996,24.448819 6.6968507,18.283465 5.4921262,15.094489 5.0669294,14.066929 4.8188979,13.393701 4.8188979,13.393701 c 0,0 -2.3740159,0.992126 -3.86220494,1.629921 -1.48818905,0.637796 -0.81496067,-0.992126 -0.81496067,-0.992126 0,0 4.71259861,-12.1535432 5.24409471,-13.42913378 0.3897638,-0.95669294 1.2755906,-0.46062993 1.2755906,-0.46062993 z" + style="fill:#d800d8;fill-opacity:1;fill-rule:nonzero;stroke:none" + inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg new file mode 100644 index 000000000..e1206c5d6 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.663582" + height="140.44" + viewBox="0 0 76.663581 140.44" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchTilt.svg"><metadata + id="metadata3364"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3362" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="766" + inkscape:window-height="480" + id="namedview3360" + showgrid="false" + inkscape:zoom="1.6804329" + inkscape:cx="6.1930652" + inkscape:cy="74.717535" + inkscape:window-x="343" + inkscape:window-y="203" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3322" + style="fill:#ffffff" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 12.622,5.815 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 0,-6.293 -5.102,-11.395 -11.395,-11.395 z m 0,20.431 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3324" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 43.793,0 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 55.188,5.102 50.086,0 43.793,0 z m 0,20.43 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3326" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,87.918 C 77.464,73.913 62.146,72.6 62.146,72.6 57.769,59.907 47.556,66.472 47.556,66.472 c 0,0 2.262,-49.025 1.395,-54.713 -0.51,-3.331 -6.383,-10.562 -9.998,-1.684 -2.137,6.166 -5.59,60.75 -9.465,56.874 C 24.984,62.447 20.611,18.817 19.414,18.626 18.438,14.09 9.011,5.294 7.511,21.794 c 3,39.5 3.865,47.304 3.865,47.304 C 9.187,74.35 5.31,87.481 5.31,87.481 c -8.316,9.191 -4.377,15.756 -4.377,15.756 7.002,12.255 21.385,28.449 21.385,28.449 6.127,5.252 2.625,8.316 2.625,8.316 l 42.455,0.438 2.334,-7.879 c 9.628,-18.382 6.419,-44.643 6.419,-44.643 z" + id="path3328" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccc" + style="fill:#ffffff" /> +</g> +<g + id="g3330" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3332" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3334" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3336" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3338" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3340" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3342" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3344" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3346" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3348" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3350" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3352" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3354" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3356" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3358" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<path + inkscape:connector-curvature="0" + d="m 52.342987,124.78465 -8.980622,9.44613 c 0,0 -0.592129,0.74692 -1.214412,0.0786 -0.853927,-0.92772 -8.753091,-9.74549 -8.753091,-9.74549 0,0 -1.096535,-1.17966 0.352262,-1.17818 1.454279,10e-4 3.762485,10e-4 3.762485,10e-4 0,0 -0.0027,-0.67875 -0.0014,-1.72058 -0.0014,-3.20848 -0.0014,-9.4565 -0.0027,-11.8499 0,0 -0.01233,-0.56315 0.655179,-0.56019 0.672999,0 8.298029,0 9.238308,-0.003 0.937537,0.003 0.774428,0.66985 0.774428,0.66985 0,2.45861 0,8.50359 -0.0027,11.82767 0.0041,1.16039 0.0027,1.91472 0.0027,1.91472 0,0 2.879775,0.003 4.070886,0 1.192483,-10e-4 0.09869,1.11889 0.09869,1.11889 z m -0.09869,-37.828986 c -1.191111,0.003 -4.073627,0.003 -4.073627,0.003 0,0 0.0027,0.752845 0.0041,1.914716 -0.0041,3.327041 -0.0041,9.370556 -0.0014,11.83064 0,0 0.16174,0.66393 -0.774427,0.66096 -0.943021,0.006 -8.563939,0.003 -9.235567,0.004 -0.670257,-0.003 -0.65655,-0.56167 -0.65655,-0.56167 -0.0014,-2.393393 -0.0014,-8.642902 0.0014,-11.855831 -0.0014,-1.034421 0,-1.717613 0,-1.717613 0,0 -2.312318,0.003 -3.762486,0.0044 -1.444685,-0.003 -0.355003,-1.178173 -0.355003,-1.178173 0,0 7.896422,-8.81777 8.755832,-9.745488 0.622284,-0.671338 1.215783,0.07558 1.215783,0.07558 l 8.979252,9.444648 c 0,0 1.096534,1.121857 -0.09732,1.120375 z" + id="path3432" + sodipodi:nodetypes="ccccsccccccccccccccccccccccccc" + style="fill:#ffd800;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg new file mode 100644 index 000000000..74e55d7cb --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="95.087433" + height="118.43173" + viewBox="0 0 95.087431 118.43173" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchZoom.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="2.8132167" + inkscape:cx="10.565593" + inkscape:cy="72.192791" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + d="m 0.0436199,84.941029 c 0,0 -0.2799964,-1.323641 0.578786,-0.720397 0.8621957,0.601498 2.9536375,2.059778 2.9536375,2.059778 0,0 0.3431801,-0.517567 0.8707286,-1.316651 1.521209,-2.28009 4.281925,-6.427623 5.405325,-8.116707 0,0 0.187721,-0.53855 0.863902,-0.06295 0.682926,0.472104 6.206065,4.329377 6.692655,4.668591 0.483157,0.340966 0.220227,0.718649 0.220227,0.718649 -1.094368,1.641877 -3.948985,5.929292 -5.418977,8.132449 -0.469526,0.711655 -0.783654,1.178514 -0.783654,1.178514 0,0 1.678274,1.168023 2.728271,1.900661 1.043172,0.732637 -0.28341,0.987925 -0.28341,0.987925 0,0 -9.7470195,2.05628 -10.7936043,2.25911 -0.756328,0.145111 -0.8468168,-0.666198 -0.8468168,-0.666198 z" + id="path3376-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 44.918594,16.853557 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 -9.23e-4,-5.997359 -4.743067,-10.85967 -10.592199,-10.85967 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 23.240381,56.175295 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="m 89.480511,111.78411 -1.887491,6.64762 -38.778475,-0.36785 c 8.08e-4,-8.5e-4 2.829619,-2.58599 -2.124439,-7.01632 0,0 -10.822746,-5.22596 -18.506953,-18.096801 0,0 -6.310236,-6.742109 -6.091889,-9.206596 C 21.508197,79.335765 20.881459,76.789439 20.376025,75.209164 19.312176,71.16939 18.8225,72.364992 18.8225,67.98106 c 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.59509,22.156743 -5.191814,37.665866 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 49.854025,14.903508 c 0.696314,0.466948 6.359531,4.268019 6.858144,4.604015 0.491619,0.334273 0.748797,-0.05343 0.748797,-0.05343 1.121449,-1.617954 4.044902,-5.844621 5.545997,-8.013953 0.488115,-0.703007 0.803031,-1.164787 0.803031,-1.164787 0,0 1.714536,1.152726 2.792243,1.876411 1.07596,0.721961 0.813533,-0.620302 0.813533,-0.620302 0,0 -1.732034,-9.8989818 -1.933227,-10.95349441 -0.150463,-0.7615853 -0.939496,-0.5513731 -0.939496,-0.5513731 L 53.458049,1.9374693 c 0,0 -1.336636,0.2136595 -0.454876,0.8046693 0.88876,0.5927325 3.02493,2.0297666 3.02493,2.0297666 0,0 -0.355152,0.5083037 -0.895757,1.2940169 -1.558825,2.2468717 -4.387811,6.3339699 -5.538999,7.9984459 -0.0018,0.0017 -0.433883,0.370456 0.260678,0.83914 z" + id="path3376-7-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png b/public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png new file mode 100644 index 000000000..16343ec24 Binary files /dev/null and b/public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png differ diff --git a/public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png b/public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png new file mode 100644 index 000000000..a36259bbe Binary files /dev/null and b/public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png differ diff --git a/public/Cesium/Widgets/Images/TimelineIcons.png b/public/Cesium/Widgets/Images/TimelineIcons.png new file mode 100644 index 000000000..e3a04556a Binary files /dev/null and b/public/Cesium/Widgets/Images/TimelineIcons.png differ diff --git a/public/Cesium/Widgets/Images/info-loading.gif b/public/Cesium/Widgets/Images/info-loading.gif new file mode 100644 index 000000000..8df10dd51 Binary files /dev/null and b/public/Cesium/Widgets/Images/info-loading.gif differ diff --git a/public/Cesium/Widgets/InfoBox/InfoBox.css b/public/Cesium/Widgets/InfoBox/InfoBox.css new file mode 100644 index 000000000..42a7b2201 --- /dev/null +++ b/public/Cesium/Widgets/InfoBox/InfoBox.css @@ -0,0 +1,92 @@ +/* packages/widgets/Source/InfoBox/InfoBox.css */ +.cesium-infoBox { + display: block; + position: absolute; + top: 50px; + right: 0; + width: 40%; + max-width: 480px; + background: rgba(38, 38, 38, 0.95); + color: #edffff; + border: 1px solid #444; + border-right: none; + border-top-left-radius: 7px; + border-bottom-left-radius: 7px; + box-shadow: 0 0 10px 1px #000; + transform: translate(100%, 0); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-infoBox-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-infoBox-title { + display: block; + height: 20px; + padding: 5px 30px 5px 25px; + background: rgba(84, 84, 84, 1); + border-top-left-radius: 7px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + box-sizing: content-box; +} +.cesium-infoBox-bodyless .cesium-infoBox-title { + border-bottom-left-radius: 7px; +} +button.cesium-infoBox-camera { + display: block; + position: absolute; + top: 4px; + left: 4px; + width: 22px; + height: 22px; + background: transparent; + border-color: transparent; + border-radius: 3px; + padding: 0 5px; + margin: 0; +} +button.cesium-infoBox-close { + display: block; + position: absolute; + top: 5px; + right: 5px; + height: 20px; + background: transparent; + border: none; + border-radius: 2px; + font-weight: bold; + font-size: 16px; + padding: 0 5px; + margin: 0; + color: #edffff; +} +button.cesium-infoBox-close:focus { + background: rgba(238, 136, 0, 0.44); + outline: none; +} +button.cesium-infoBox-close:hover { + background: #888; + color: #000; +} +button.cesium-infoBox-close:active { + background: #a00; + color: #000; +} +.cesium-infoBox-bodyless .cesium-infoBox-iframe { + display: none; +} +.cesium-infoBox-iframe { + border: none; + width: 100%; + width: calc(100% - 2px); +} diff --git a/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css b/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css new file mode 100644 index 000000000..04ee3dbc0 --- /dev/null +++ b/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css @@ -0,0 +1,178 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} + +/* packages/widgets/Source/InfoBox/InfoBoxDescription.css */ +body { + margin: 0; + padding: 0; +} +.cesium-infoBox-description { + font-family: sans-serif; + font-size: 13px; + padding: 4px 10px; + margin-right: 4px; + color: #edffff; +} +.cesium-infoBox-description a:link, +.cesium-infoBox-description a:visited, +.cesium-infoBox-description a:hover, +.cesium-infoBox-description a:active { + color: #edffff; +} +.cesium-infoBox-description table { + color: #edffff; +} +.cesium-infoBox-defaultTable { + width: 100%; + color: #edffff; +} +.cesium-infoBox-defaultTable tr:nth-child(odd) { + background-color: rgba(84, 84, 84, 0.8); +} +.cesium-infoBox-defaultTable tr:nth-child(even) { + background-color: rgba(84, 84, 84, 0.25); +} +.cesium-infoBox-defaultTable th { + font-weight: normal; + padding: 3px; + vertical-align: middle; + text-align: center; +} +.cesium-infoBox-defaultTable td { + padding: 3px; + vertical-align: middle; + text-align: left; +} +.cesium-infoBox-description-lighter { + color: #000000; +} +.cesium-infoBox-description-lighter a:link, +.cesium-infoBox-description-lighter a:visited, +.cesium-infoBox-description-lighter a:hover, +.cesium-infoBox-description-lighter a:active { + color: #000000; +} +.cesium-infoBox-description-lighter table { + color: #000000; +} +.cesium-infoBox-defaultTable-lighter { + width: 100%; + color: #000000; +} +.cesium-infoBox-defaultTable-lighter tr:nth-child(odd) { + background-color: rgba(179, 179, 179, 0.8); +} +.cesium-infoBox-defaultTable-lighter tr:nth-child(even) { + background-color: rgba(179, 179, 179, 0.25); +} +.cesium-infoBox-loadingContainer { + margin: 5px; + text-align: center; +} +.cesium-infoBox-loading { + display: inline-block; + background-image: url(data:text/plain;base64,R0lGODlhEAALAPQAAAAAAOLTlyAdFSgmGxEQC9zOk+LTl7mse25nSYyDXTw4KMO2gqCVa2dgRIl/Wzg1JsCzgN7PlJySaBUTDiEfFggIBbCkdR4cFAoJB0A7KlNONy4rHg4NCQAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA); + width: 16px; + height: 11px; +} diff --git a/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css b/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css new file mode 100644 index 000000000..60f7a5bf1 --- /dev/null +++ b/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css @@ -0,0 +1,93 @@ +/* packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.css */ +.cesium-navigationHelpButton-wrapper { + position: relative; + display: inline-block; +} +.cesium-navigation-help { + visibility: hidden; + position: absolute; + top: 38px; + right: 2px; + width: 250px; + border-radius: 10px; + transform: scale(0.01); + transform-origin: 234px -10px; + transition: visibility 0s 0.25s, transform 0.25s ease-in; +} +.cesium-navigation-help-visible { + visibility: visible; + transform: scale(1); + transition: transform 0.25s ease-out; +} +.cesium-navigation-help-instructions { + border: 1px solid #444; + background-color: rgba(38, 38, 38, 0.75); + padding-bottom: 5px; + border-radius: 0 0 10px 10px; +} +.cesium-click-navigation-help { + display: none; +} +.cesium-touch-navigation-help { + display: none; + padding-top: 5px; +} +.cesium-click-navigation-help-visible { + display: block; +} +.cesium-touch-navigation-help-visible { + display: block; +} +.cesium-navigation-help-pan { + color: #66ccff; + font-weight: bold; +} +.cesium-navigation-help-zoom { + color: #65fd00; + font-weight: bold; +} +.cesium-navigation-help-rotate { + color: #ffd800; + font-weight: bold; +} +.cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-navigation-help-details { + color: #ffffff; +} +.cesium-navigation-button { + color: #fff; + background-color: transparent; + border-bottom: none; + border-top: 1px solid #444; + border-right: 1px solid #444; + margin: 0; + width: 50%; + cursor: pointer; +} +.cesium-navigation-button-icon { + vertical-align: middle; + padding: 5px 1px; +} +.cesium-navigation-button:focus { + outline: none; +} +.cesium-navigation-button-left { + border-radius: 10px 0 0 0; + border-left: 1px solid #444; +} +.cesium-navigation-button-right { + border-radius: 0 10px 0 0; + border-left: none; +} +.cesium-navigation-button-selected { + background-color: rgba(38, 38, 38, 0.75); +} +.cesium-navigation-button-unselected { + background-color: rgba(0, 0, 0, 0.75); +} +.cesium-navigation-button-unselected:hover { + background-color: rgba(76, 76, 76, 0.75); +} diff --git a/public/Cesium/Widgets/NavigationHelpButton/lighter.css b/public/Cesium/Widgets/NavigationHelpButton/lighter.css new file mode 100644 index 000000000..7cf654b32 --- /dev/null +++ b/public/Cesium/Widgets/NavigationHelpButton/lighter.css @@ -0,0 +1,38 @@ +/* packages/widgets/Source/NavigationHelpButton/lighter.css */ +.cesium-lighter .cesium-navigation-help-instructions { + border: 1px solid #759dc0; + background-color: rgba(255, 255, 255, 0.9); +} +.cesium-lighter .cesium-navigation-help-pan { + color: #66ccee; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-zoom { + color: #65ec00; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-rotate { + color: #eec722; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-details { + color: #222222; +} +.cesium-lighter .cesium-navigation-button { + color: #222222; + border-top: 1px solid #759dc0; + border-right: 1px solid #759dc0; +} +.cesium-lighter .cesium-navigation-button-selected { + background-color: rgba(196, 225, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected { + background-color: rgba(226, 240, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected:hover { + background-color: rgba(166, 210, 255, 0.9); +} diff --git a/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css b/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css new file mode 100644 index 000000000..f8f770ad9 --- /dev/null +++ b/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css @@ -0,0 +1,15 @@ +/* packages/widgets/Source/PerformanceWatchdog/PerformanceWatchdog.css */ +.cesium-performance-watchdog-message-area { + position: relative; + background-color: yellow; + color: black; + padding: 10px; +} +.cesium-performance-watchdog-message { + margin-right: 30px; +} +.cesium-performance-watchdog-message-dismiss { + position: absolute; + right: 0; + margin: 0 10px 0 0; +} diff --git a/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css b/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css new file mode 100644 index 000000000..57b6f6fd4 --- /dev/null +++ b/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css @@ -0,0 +1,38 @@ +/* packages/widgets/Source/ProjectionPicker/ProjectionPicker.css */ +span.cesium-projectionPicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-projectionPicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-projectionPicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-none { + display: none; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective, +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic { + margin: 0 0 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic { + left: 100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective { + left: -100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} diff --git a/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css b/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css new file mode 100644 index 000000000..51e4c67f7 --- /dev/null +++ b/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css @@ -0,0 +1,56 @@ +/* packages/widgets/Source/SceneModePicker/SceneModePicker.css */ +span.cesium-sceneModePicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-sceneModePicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-sceneModePicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none { + display: none; +} +.cesium-sceneModePicker-slide-svg { + transition: left 2s; + top: 0; + left: 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D { + margin: 0 0 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView { + left: 200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D { + left: -200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} diff --git a/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css b/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css new file mode 100644 index 000000000..148ff4a87 --- /dev/null +++ b/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css @@ -0,0 +1,20 @@ +/* packages/widgets/Source/SelectionIndicator/SelectionIndicator.css */ +.cesium-selection-wrapper { + position: absolute; + width: 160px; + height: 160px; + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.2s, opacity 0.2s ease-in; +} +.cesium-selection-wrapper-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out; +} +.cesium-selection-wrapper svg { + fill: #2e2; + stroke: #000; + stroke-width: 1.1px; +} diff --git a/public/Cesium/Widgets/Timeline/Timeline.css b/public/Cesium/Widgets/Timeline/Timeline.css new file mode 100644 index 000000000..adb8b99e2 --- /dev/null +++ b/public/Cesium/Widgets/Timeline/Timeline.css @@ -0,0 +1,103 @@ +/* packages/widgets/Source/Timeline/Timeline.css */ +.cesium-timeline-main { + position: relative; + left: 0; + bottom: 0; + overflow: hidden; + border: solid 1px #888; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-timeline-trackContainer { + width: 100%; + overflow: auto; + border-top: solid 1px #888; + position: relative; + top: 0; + left: 0; +} +.cesium-timeline-tracks { + position: absolute; + top: 0; + left: 0; + width: 100%; +} +.cesium-timeline-needle { + position: absolute; + left: 0; + top: 1.7em; + bottom: 0; + width: 1px; + background: #f00; +} +.cesium-timeline-bar { + position: relative; + left: 0; + top: 0; + overflow: hidden; + cursor: pointer; + width: 100%; + height: 1.7em; + background: + linear-gradient( + to bottom, + rgba(116, 117, 119, 0.8) 0%, + rgba(58, 68, 82, 0.8) 11%, + rgba(46, 50, 56, 0.8) 46%, + rgba(53, 53, 53, 0.8) 81%, + rgba(53, 53, 53, 0.8) 100%); +} +.cesium-timeline-ruler { + visibility: hidden; + white-space: nowrap; + font-size: 80%; + z-index: -200; +} +.cesium-timeline-highlight { + position: absolute; + bottom: 0; + left: 0; + background: #08f; +} +.cesium-timeline-ticLabel { + position: absolute; + top: 0; + left: 0; + white-space: nowrap; + font-size: 80%; + color: #eee; +} +.cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #eee; +} +.cesium-timeline-ticSub { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 33%; + background: #aaa; +} +.cesium-timeline-ticTiny { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 25%; + background: #888; +} +.cesium-timeline-icon16 { + display: block; + position: absolute; + width: 16px; + height: 16px; + background-image: url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==); + background-repeat: no-repeat; +} diff --git a/public/Cesium/Widgets/Timeline/lighter.css b/public/Cesium/Widgets/Timeline/lighter.css new file mode 100644 index 000000000..f2acaa211 --- /dev/null +++ b/public/Cesium/Widgets/Timeline/lighter.css @@ -0,0 +1,23 @@ +/* packages/widgets/Source/Timeline/lighter.css */ +.cesium-lighter .cesium-timeline-bar { + background: + linear-gradient( + to bottom, + #eeeeee 0%, + #ffffff 50%, + #fafafa 100%); +} +.cesium-lighter .cesium-timeline-ticLabel { + color: #000; +} +.cesium-lighter .cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #000; +} +.cesium-lighter .cesium-timeline-ticSub { + background: #444; +} diff --git a/public/Cesium/Widgets/VRButton/VRButton.css b/public/Cesium/Widgets/VRButton/VRButton.css new file mode 100644 index 000000000..1005bd4a0 --- /dev/null +++ b/public/Cesium/Widgets/VRButton/VRButton.css @@ -0,0 +1,8 @@ +/* packages/widgets/Source/VRButton/VRButton.css */ +.cesium-button.cesium-vrButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} diff --git a/public/Cesium/Widgets/Viewer/Viewer.css b/public/Cesium/Widgets/Viewer/Viewer.css new file mode 100644 index 000000000..5884a8697 --- /dev/null +++ b/public/Cesium/Widgets/Viewer/Viewer.css @@ -0,0 +1,107 @@ +/* packages/widgets/Source/Viewer/Viewer.css */ +.cesium-viewer { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-viewer-cesiumWidgetContainer { + width: 100%; + height: 100%; +} +.cesium-viewer-bottom { + display: block; + position: absolute; + bottom: 0; + left: 0; + padding-right: 5px; +} +.cesium-viewer .cesium-widget-credits { + display: inline; + position: static; + bottom: auto; + left: auto; + padding-right: 0; + color: #ffffff; + font-size: 10px; + text-shadow: 0 0 2px #000000; +} +.cesium-viewer-timelineContainer { + position: absolute; + bottom: 0; + left: 169px; + right: 29px; + height: 27px; + padding: 0; + margin: 0; + overflow: hidden; + font-size: 14px; +} +.cesium-viewer-animationContainer { + position: absolute; + bottom: 0; + left: 0; + padding: 0; + width: 169px; + height: 112px; +} +.cesium-viewer-fullscreenContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-vrContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-toolbar { + display: block; + position: absolute; + top: 5px; + right: 5px; +} +.cesium-viewer-cesiumInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; +} +.cesium-viewer-geocoderContainer { + position: relative; + display: inline-block; + margin: 0 3px; +} +.cesium-viewer-cesium3DTilesInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} +.cesium-viewer-voxelInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} diff --git a/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css b/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css new file mode 100644 index 000000000..a0a31024b --- /dev/null +++ b/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css @@ -0,0 +1,16 @@ +/* packages/widgets/Source/VoxelInspector/VoxelInspector.css */ +.cesium-VoxelInspector { + width: 300px; + pointer-events: all; +} +.cesium-VoxelInspector div, +.cesium-VoxelInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-VoxelInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} diff --git a/public/Cesium/Widgets/lighter.css b/public/Cesium/Widgets/lighter.css new file mode 100644 index 000000000..c6cc48d45 --- /dev/null +++ b/public/Cesium/Widgets/lighter.css @@ -0,0 +1,237 @@ +/* packages/widgets/Source/lighterShared.css */ +.cesium-lighter .cesium-button { + color: #111; + fill: #111; + background: #e2f0ff; + border: 1px solid #759dc0; +} +.cesium-lighter .cesium-button:focus { + color: #000; + fill: #000; + border-color: #ea4; +} +.cesium-lighter .cesium-button:hover { + color: #000; + fill: #000; + background: #a6d2ff; + border-color: #aef; + box-shadow: 0 0 8px #777; +} +.cesium-lighter .cesium-button:active { + color: #fff; + fill: #fff; + background: #48b; + border-color: #ea0; +} +.cesium-lighter .cesium-button:disabled, +.cesium-lighter .cesium-button-disabled, +.cesium-lighter .cesium-button-disabled:focus, +.cesium-lighter .cesium-button-disabled:hover, +.cesium-lighter .cesium-button-disabled:active { + background: #ccc; + border-color: #999; + color: #999; + fill: #999; + box-shadow: none; +} +.cesium-lighter .cesium-performanceDisplay { + background-color: #e2f0ff; + border-color: #759dc0; +} +.cesium-lighter .cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-lighter .cesium-performanceDisplay-ms { + color: #ea4; +} + +/* packages/widgets/Source/Animation/lighter.css */ +.cesium-lighter .cesium-animation-themeNormal { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeHover { + color: #abd6ff; +} +.cesium-lighter .cesium-animation-themeSelect { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeDisabled { + color: #efefef; +} +.cesium-lighter .cesium-animation-themeKnob { + color: #e1e2e3; +} +.cesium-lighter .cesium-animation-themePointer { + color: #fa5; +} +.cesium-lighter .cesium-animation-themeSwoosh { + color: #ace; +} +.cesium-lighter .cesium-animation-themeSwooshHover { + color: #bdf; +} +.cesium-lighter .cesium-animation-svgText { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow { + fill: #ffaa2a; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #d3d3d3; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-lighter .cesium-animation-shuttleRingBack { + fill: #fafafa; + fill-opacity: 1; + stroke: #aeaeae; + stroke-width: 1.2; +} +.cesium-lighter .cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; +} +.cesium-lighter .cesium-animation-knobOuter { + stroke: #a5a5a5; +} + +/* packages/widgets/Source/BaseLayerPicker/lighter.css */ +.cesium-lighter .cesium-baseLayerPicker-itemIcon { + border-color: #759dc0; +} +.cesium-lighter .cesium-baseLayerPicker-dropDown { + background-color: rgba(240, 240, 240, 0.75); +} +.cesium-lighter .cesium-baseLayerPicker-sectionTitle { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-itemLabel { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #000; +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(0, 61, 168); +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(0, 61, 168); +} + +/* packages/engine/Source/Widget/lighter.css */ +.cesium-lighter .cesium-widget-errorPanel { + background: rgba(255, 255, 255, 0.7); +} +.cesium-lighter .cesium-widget-errorPanel-content { + border: 1px solid #526f82; + border-radius: 7px; + background-color: white; + color: black; +} +.cesium-lighter .cesium-widget-errorPanel-header { + color: #b87d00; +} + +/* packages/widgets/Source/Geocoder/lighter.css */ +.cesium-lighter .cesium-geocoder-input { + border: solid 1px #759dc0; + background-color: rgba(240, 240, 240, 0.9); + color: black; +} +.cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-lighter .cesium-geocoder-searchButton { + background-color: #e2f0ff; + fill: #111; +} +.cesium-lighter .cesium-geocoder-searchButton:hover { + background-color: #a6d2ff; +} + +/* packages/widgets/Source/Timeline/lighter.css */ +.cesium-lighter .cesium-timeline-bar { + background: + linear-gradient( + to bottom, + #eeeeee 0%, + #ffffff 50%, + #fafafa 100%); +} +.cesium-lighter .cesium-timeline-ticLabel { + color: #000; +} +.cesium-lighter .cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #000; +} +.cesium-lighter .cesium-timeline-ticSub { + background: #444; +} + +/* packages/widgets/Source/NavigationHelpButton/lighter.css */ +.cesium-lighter .cesium-navigation-help-instructions { + border: 1px solid #759dc0; + background-color: rgba(255, 255, 255, 0.9); +} +.cesium-lighter .cesium-navigation-help-pan { + color: #66ccee; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-zoom { + color: #65ec00; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-rotate { + color: #eec722; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-details { + color: #222222; +} +.cesium-lighter .cesium-navigation-button { + color: #222222; + border-top: 1px solid #759dc0; + border-right: 1px solid #759dc0; +} +.cesium-lighter .cesium-navigation-button-selected { + background-color: rgba(196, 225, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected { + background-color: rgba(226, 240, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected:hover { + background-color: rgba(166, 210, 255, 0.9); +} + +/* packages/widgets/Source/lighter.css */ diff --git a/public/Cesium/Widgets/lighterShared.css b/public/Cesium/Widgets/lighterShared.css new file mode 100644 index 000000000..7d3b4ddd3 --- /dev/null +++ b/public/Cesium/Widgets/lighterShared.css @@ -0,0 +1,46 @@ +/* packages/widgets/Source/lighterShared.css */ +.cesium-lighter .cesium-button { + color: #111; + fill: #111; + background: #e2f0ff; + border: 1px solid #759dc0; +} +.cesium-lighter .cesium-button:focus { + color: #000; + fill: #000; + border-color: #ea4; +} +.cesium-lighter .cesium-button:hover { + color: #000; + fill: #000; + background: #a6d2ff; + border-color: #aef; + box-shadow: 0 0 8px #777; +} +.cesium-lighter .cesium-button:active { + color: #fff; + fill: #fff; + background: #48b; + border-color: #ea0; +} +.cesium-lighter .cesium-button:disabled, +.cesium-lighter .cesium-button-disabled, +.cesium-lighter .cesium-button-disabled:focus, +.cesium-lighter .cesium-button-disabled:hover, +.cesium-lighter .cesium-button-disabled:active { + background: #ccc; + border-color: #999; + color: #999; + fill: #999; + box-shadow: none; +} +.cesium-lighter .cesium-performanceDisplay { + background-color: #e2f0ff; + border-color: #759dc0; +} +.cesium-lighter .cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-lighter .cesium-performanceDisplay-ms { + color: #ea4; +} diff --git a/public/Cesium/Widgets/shared.css b/public/Cesium/Widgets/shared.css new file mode 100644 index 000000000..2c9b949e9 --- /dev/null +++ b/public/Cesium/Widgets/shared.css @@ -0,0 +1,103 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} diff --git a/public/Cesium/Widgets/widgets.css b/public/Cesium/Widgets/widgets.css new file mode 100644 index 000000000..df675d599 --- /dev/null +++ b/public/Cesium/Widgets/widgets.css @@ -0,0 +1,1342 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} + +/* packages/widgets/Source/Animation/Animation.css */ +.cesium-animation-theme { + visibility: hidden; + display: block; + position: absolute; + z-index: -100; +} +.cesium-animation-themeNormal { + color: #222; +} +.cesium-animation-themeHover { + color: #4488b0; +} +.cesium-animation-themeSelect { + color: #242; +} +.cesium-animation-themeDisabled { + color: #333; +} +.cesium-animation-themeKnob { + color: #222; +} +.cesium-animation-themePointer { + color: #2e2; +} +.cesium-animation-themeSwoosh { + color: #8ac; +} +.cesium-animation-themeSwooshHover { + color: #aef; +} +.cesium-animation-svgText { + fill: #edffff; + font-family: Sans-Serif; + font-size: 15px; + text-anchor: middle; +} +.cesium-animation-blank { + fill: #000; + fill-opacity: 0.01; + stroke: none; +} +.cesium-animation-rectButton { + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-rectButton .cesium-animation-buttonGlow { + fill: #fff; + stroke: none; + display: none; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonGlow { + display: block; +} +.cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #edffff; +} +.cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #aef; +} +.cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-animation-buttonDisabled { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #555; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonGlow { + display: none; +} +.cesium-animation-buttonToggled .cesium-animation-buttonGlow { + display: block; + fill: #2e2; +} +.cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-shuttleRingG { + cursor: pointer; +} +.cesium-animation-shuttleRingPointer { + cursor: pointer; +} +.cesium-animation-shuttleRingPausePointer { + cursor: pointer; +} +.cesium-animation-shuttleRingBack { + fill: #181818; + fill-opacity: 0.8; + stroke: #333; + stroke-width: 1.2; +} +.cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; + stroke-width: 3; + stroke-opacity: 0.2; + stroke-linecap: round; +} +.cesium-animation-knobOuter { + cursor: pointer; + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-knobInner { + cursor: pointer; +} + +/* packages/widgets/Source/BaseLayerPicker/BaseLayerPicker.css */ +.cesium-baseLayerPicker-selected { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} +.cesium-baseLayerPicker-dropDown { + display: block; + position: absolute; + box-sizing: content-box; + top: auto; + right: 0; + width: 320px; + max-height: 500px; + margin-top: 5px; + background-color: rgba(38, 38, 38, 0.75); + border: 1px solid #444; + padding: 6px; + overflow: auto; + border-radius: 10px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + transform: translate(0, -20%); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-baseLayerPicker-dropDown-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-baseLayerPicker-sectionTitle { + display: block; + font-family: sans-serif; + font-size: 16pt; + text-align: left; + color: #edffff; + margin-bottom: 4px; +} +.cesium-baseLayerPicker-choices { + margin-bottom: 5px; +} +.cesium-baseLayerPicker-categoryTitle { + color: #edffff; + font-size: 11pt; +} +.cesium-baseLayerPicker-choices { + display: block; + border: 1px solid #888; + border-radius: 5px; + padding: 5px 0; +} +.cesium-baseLayerPicker-item { + display: inline-block; + vertical-align: top; + margin: 2px 5px; + width: 64px; + text-align: center; + cursor: pointer; +} +.cesium-baseLayerPicker-itemLabel { + display: block; + font-family: sans-serif; + font-size: 8pt; + text-align: center; + vertical-align: middle; + color: #edffff; + cursor: pointer; + word-wrap: break-word; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, +.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel { + text-decoration: underline; +} +.cesium-baseLayerPicker-itemIcon { + display: inline-block; + position: relative; + width: inherit; + height: auto; + background-size: 100% 100%; + border: solid 1px #444; + border-radius: 9px; + color: #edffff; + margin: 0; + padding: 0; + cursor: pointer; + box-sizing: border-box; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #fff; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(189, 236, 248); +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(189, 236, 248); +} + +/* packages/engine/Source/Widget/CesiumWidget.css */ +.cesium-widget { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-widget, +.cesium-widget canvas { + width: 100%; + height: 100%; + touch-action: none; +} +.cesium-widget-credits { + display: block; + position: absolute; + bottom: 0; + left: 0; + color: #fff; + font-size: 10px; + text-shadow: 0px 0px 2px #000000; + padding-right: 5px; +} +.cesium-widget-errorPanel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + text-align: center; + background: rgba(0, 0, 0, 0.7); + z-index: 99999; +} +.cesium-widget-errorPanel:before { + display: inline-block; + vertical-align: middle; + height: 100%; + content: ""; +} +.cesium-widget-errorPanel-content { + width: 75%; + max-width: 500px; + display: inline-block; + text-align: left; + vertical-align: middle; + border: 1px solid #510c00; + border-radius: 7px; + background-color: #f0d9d5; + font-size: 14px; + color: #510c00; +} +.cesium-widget-errorPanel-content.expanded { + max-width: 75%; +} +.cesium-widget-errorPanel-header { + font-size: 18px; + font-family: + "Open Sans", + Verdana, + Geneva, + sans-serif; + background: #d69d93; + border-bottom: 2px solid #510c00; + padding-bottom: 10px; + border-radius: 3px 3px 0 0; + padding: 15px; +} +.cesium-widget-errorPanel-scroll { + overflow: auto; + font-family: + "Open Sans", + Verdana, + Geneva, + sans-serif; + white-space: pre-wrap; + padding: 0 15px; + margin: 10px 0 20px 0; +} +.cesium-widget-errorPanel-buttonPanel { + padding: 0 15px; + margin: 10px 0 20px 0; + text-align: right; +} +.cesium-widget-errorPanel-buttonPanel button { + border-color: #510c00; + background: #d69d93; + color: #202020; + margin: 0; +} +.cesium-widget-errorPanel-buttonPanel button:focus { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:hover { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:active { + border-color: #510c00; + background: #b17b72; + color: #510c00; +} +.cesium-widget-errorPanel-more-details { + text-decoration: underline; + cursor: pointer; +} +.cesium-widget-errorPanel-more-details:hover { + color: #2b0700; +} + +/* packages/widgets/Source/CesiumInspector/CesiumInspector.css */ +.cesium-cesiumInspector { + border-radius: 5px; + transition: width ease-in-out 0.25s; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; + color: #edffff; + display: inline-block; + position: relative; + padding: 4px 12px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; +} +.cesium-cesiumInspector-button { + text-align: center; + font-size: 11pt; +} +.cesium-cesiumInspector-visible .cesium-cesiumInspector-button { + border-bottom: 1px solid #aaa; + padding-bottom: 3px; +} +.cesium-cesiumInspector input:enabled, +.cesium-cesiumInspector-button { + cursor: pointer; +} +.cesium-cesiumInspector-visible { + width: 185px; + height: auto; +} +.cesium-cesiumInspector-hidden { + width: 122px; + height: 17px; +} +.cesium-cesiumInspector-sectionContent { + max-height: 600px; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent { + max-height: 0; + padding: 0 !important; + overflow: hidden; +} +.cesium-cesiumInspector-dropDown { + margin: 5px 0; + font-family: sans-serif; + font-size: 10pt; + width: 185px; +} +.cesium-cesiumInspector-frustumStatistics { + padding-left: 10px; + padding: 5px; + background-color: rgba(80, 80, 80, 0.75); +} +.cesium-cesiumInspector-pickButton { + background-color: rgba(0, 0, 0, 0.3); + border: 1px solid #444; + color: #edffff; + border-radius: 5px; + padding: 3px 7px; + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + margin: 0 auto; +} +.cesium-cesiumInspector-pickButton:focus { + outline: none; +} +.cesium-cesiumInspector-pickButton:active, +.cesium-cesiumInspector-pickButtonHighlight { + color: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-cesiumInspector-center { + text-align: center; +} +.cesium-cesiumInspector-sectionHeader { + font-weight: bold; + font-size: 10pt; + margin: 0; + cursor: pointer; +} +.cesium-cesiumInspector-pickSection { + border: 1px solid #aaa; + border-radius: 5px; + padding: 3px; + margin-bottom: 5px; +} +.cesium-cesiumInspector-sectionContent { + margin-bottom: 10px; + transition: max-height 0.25s; +} +.cesium-cesiumInspector-tileText { + padding-bottom: 10px; + border-bottom: 1px solid #aaa; +} +.cesium-cesiumInspector-relativeText { + padding-top: 10px; +} +.cesium-cesiumInspector-sectionHeader::before { + margin-right: 5px; + content: "-"; + width: 1ch; + display: inline-block; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before { + content: "+"; +} + +/* packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.css */ +ul.cesium-cesiumInspector-statistics { + margin: 0; + padding-top: 3px; + padding-bottom: 3px; +} +ul.cesium-cesiumInspector-statistics + ul.cesium-cesiumInspector-statistics { + border-top: 1px solid #aaa; +} +.cesium-cesiumInspector-slider { + margin-top: 5px; +} +.cesium-cesiumInspector-slider input[type=number] { + text-align: left; + background-color: #222; + outline: none; + border: 1px solid #444; + color: #edffff; + width: 100px; + border-radius: 3px; + padding: 1px; + margin-left: 10px; + cursor: auto; +} +.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button, +.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.cesium-cesiumInspector-slider input[type=range] { + margin-left: 5px; + vertical-align: middle; +} +.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor { + display: none; +} +.cesium-cesiumInspector-styleEditor { + padding: 10px; + border-radius: 5px; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; +} +.cesium-cesiumInspector-styleEditor textarea { + width: 100%; + height: 300px; + background: transparent; + color: #edffff; + border: none; + padding: 0; + white-space: pre; + overflow-wrap: normal; + overflow-x: auto; +} +.cesium-3DTilesInspector { + width: 300px; + pointer-events: all; +} +.cesium-3DTilesInspector-statistics { + font-size: 11px; +} +.cesium-3DTilesInspector-disabledElementsInfo { + margin: 5px 0 0 0; + padding: 0 0 0 20px; + color: #eed202; +} +.cesium-3DTilesInspector div, +.cesium-3DTilesInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-cesiumInspector-error { + color: #ff9e9e; + overflow: auto; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} +input.cesium-cesiumInspector-url { + overflow: hidden; + white-space: nowrap; + overflow-x: scroll; + background-color: transparent; + color: white; + outline: none; + border: none; + height: 1em; + width: 100%; +} +.cesium-cesiumInspector .field-group { + display: table; +} +.cesium-cesiumInspector .field-group > label { + display: table-cell; + font-weight: bold; +} +.cesium-cesiumInspector .field-group > .field { + display: table-cell; + width: 100%; +} + +/* packages/widgets/Source/VoxelInspector/VoxelInspector.css */ +.cesium-VoxelInspector { + width: 300px; + pointer-events: all; +} +.cesium-VoxelInspector div, +.cesium-VoxelInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-VoxelInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} + +/* packages/widgets/Source/FullscreenButton/FullscreenButton.css */ +.cesium-button.cesium-fullscreenButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} + +/* packages/widgets/Source/VRButton/VRButton.css */ +.cesium-button.cesium-vrButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} + +/* packages/widgets/Source/Geocoder/Geocoder.css */ +.cesium-viewer-geocoderContainer .cesium-geocoder-input { + border: solid 1px #444; + background-color: rgba(40, 40, 40, 0.7); + color: white; + display: inline-block; + vertical-align: middle; + width: 0; + height: 32px; + margin: 0; + padding: 0 32px 0 0; + border-radius: 0; + box-sizing: border-box; + transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; + -webkit-appearance: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus { + border-color: #ea4; + background-color: rgba(15, 15, 15, 0.9); + box-shadow: none; + outline: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, +.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide { + padding-left: 4px; + width: 250px; +} +.cesium-viewer-geocoderContainer .search-results { + position: absolute; + background-color: #000; + color: #eee; + overflow-y: auto; + opacity: 0.8; + width: 100%; +} +.cesium-viewer-geocoderContainer .search-results ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.cesium-viewer-geocoderContainer .search-results ul li { + font-size: 14px; + padding: 3px 10px; +} +.cesium-viewer-geocoderContainer .search-results ul li:hover { + cursor: pointer; +} +.cesium-viewer-geocoderContainer .search-results ul li.active { + background: #48b; +} +.cesium-geocoder-searchButton { + background-color: #303336; + display: inline-block; + position: absolute; + cursor: pointer; + width: 32px; + top: 1px; + right: 1px; + height: 30px; + vertical-align: middle; + fill: #edffff; +} +.cesium-geocoder-searchButton:hover { + background-color: #48b; +} + +/* packages/widgets/Source/InfoBox/InfoBox.css */ +.cesium-infoBox { + display: block; + position: absolute; + top: 50px; + right: 0; + width: 40%; + max-width: 480px; + background: rgba(38, 38, 38, 0.95); + color: #edffff; + border: 1px solid #444; + border-right: none; + border-top-left-radius: 7px; + border-bottom-left-radius: 7px; + box-shadow: 0 0 10px 1px #000; + transform: translate(100%, 0); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-infoBox-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-infoBox-title { + display: block; + height: 20px; + padding: 5px 30px 5px 25px; + background: rgba(84, 84, 84, 1); + border-top-left-radius: 7px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + box-sizing: content-box; +} +.cesium-infoBox-bodyless .cesium-infoBox-title { + border-bottom-left-radius: 7px; +} +button.cesium-infoBox-camera { + display: block; + position: absolute; + top: 4px; + left: 4px; + width: 22px; + height: 22px; + background: transparent; + border-color: transparent; + border-radius: 3px; + padding: 0 5px; + margin: 0; +} +button.cesium-infoBox-close { + display: block; + position: absolute; + top: 5px; + right: 5px; + height: 20px; + background: transparent; + border: none; + border-radius: 2px; + font-weight: bold; + font-size: 16px; + padding: 0 5px; + margin: 0; + color: #edffff; +} +button.cesium-infoBox-close:focus { + background: rgba(238, 136, 0, 0.44); + outline: none; +} +button.cesium-infoBox-close:hover { + background: #888; + color: #000; +} +button.cesium-infoBox-close:active { + background: #a00; + color: #000; +} +.cesium-infoBox-bodyless .cesium-infoBox-iframe { + display: none; +} +.cesium-infoBox-iframe { + border: none; + width: 100%; + width: calc(100% - 2px); +} + +/* packages/widgets/Source/SceneModePicker/SceneModePicker.css */ +span.cesium-sceneModePicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-sceneModePicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-sceneModePicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none { + display: none; +} +.cesium-sceneModePicker-slide-svg { + transition: left 2s; + top: 0; + left: 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D { + margin: 0 0 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView { + left: 200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D { + left: -200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} + +/* packages/widgets/Source/ProjectionPicker/ProjectionPicker.css */ +span.cesium-projectionPicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-projectionPicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-projectionPicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-none { + display: none; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective, +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic { + margin: 0 0 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic { + left: 100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective { + left: -100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} + +/* packages/widgets/Source/PerformanceWatchdog/PerformanceWatchdog.css */ +.cesium-performance-watchdog-message-area { + position: relative; + background-color: yellow; + color: black; + padding: 10px; +} +.cesium-performance-watchdog-message { + margin-right: 30px; +} +.cesium-performance-watchdog-message-dismiss { + position: absolute; + right: 0; + margin: 0 10px 0 0; +} + +/* packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.css */ +.cesium-navigationHelpButton-wrapper { + position: relative; + display: inline-block; +} +.cesium-navigation-help { + visibility: hidden; + position: absolute; + top: 38px; + right: 2px; + width: 250px; + border-radius: 10px; + transform: scale(0.01); + transform-origin: 234px -10px; + transition: visibility 0s 0.25s, transform 0.25s ease-in; +} +.cesium-navigation-help-visible { + visibility: visible; + transform: scale(1); + transition: transform 0.25s ease-out; +} +.cesium-navigation-help-instructions { + border: 1px solid #444; + background-color: rgba(38, 38, 38, 0.75); + padding-bottom: 5px; + border-radius: 0 0 10px 10px; +} +.cesium-click-navigation-help { + display: none; +} +.cesium-touch-navigation-help { + display: none; + padding-top: 5px; +} +.cesium-click-navigation-help-visible { + display: block; +} +.cesium-touch-navigation-help-visible { + display: block; +} +.cesium-navigation-help-pan { + color: #66ccff; + font-weight: bold; +} +.cesium-navigation-help-zoom { + color: #65fd00; + font-weight: bold; +} +.cesium-navigation-help-rotate { + color: #ffd800; + font-weight: bold; +} +.cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-navigation-help-details { + color: #ffffff; +} +.cesium-navigation-button { + color: #fff; + background-color: transparent; + border-bottom: none; + border-top: 1px solid #444; + border-right: 1px solid #444; + margin: 0; + width: 50%; + cursor: pointer; +} +.cesium-navigation-button-icon { + vertical-align: middle; + padding: 5px 1px; +} +.cesium-navigation-button:focus { + outline: none; +} +.cesium-navigation-button-left { + border-radius: 10px 0 0 0; + border-left: 1px solid #444; +} +.cesium-navigation-button-right { + border-radius: 0 10px 0 0; + border-left: none; +} +.cesium-navigation-button-selected { + background-color: rgba(38, 38, 38, 0.75); +} +.cesium-navigation-button-unselected { + background-color: rgba(0, 0, 0, 0.75); +} +.cesium-navigation-button-unselected:hover { + background-color: rgba(76, 76, 76, 0.75); +} + +/* packages/widgets/Source/SelectionIndicator/SelectionIndicator.css */ +.cesium-selection-wrapper { + position: absolute; + width: 160px; + height: 160px; + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.2s, opacity 0.2s ease-in; +} +.cesium-selection-wrapper-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out; +} +.cesium-selection-wrapper svg { + fill: #2e2; + stroke: #000; + stroke-width: 1.1px; +} + +/* packages/widgets/Source/Timeline/Timeline.css */ +.cesium-timeline-main { + position: relative; + left: 0; + bottom: 0; + overflow: hidden; + border: solid 1px #888; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-timeline-trackContainer { + width: 100%; + overflow: auto; + border-top: solid 1px #888; + position: relative; + top: 0; + left: 0; +} +.cesium-timeline-tracks { + position: absolute; + top: 0; + left: 0; + width: 100%; +} +.cesium-timeline-needle { + position: absolute; + left: 0; + top: 1.7em; + bottom: 0; + width: 1px; + background: #f00; +} +.cesium-timeline-bar { + position: relative; + left: 0; + top: 0; + overflow: hidden; + cursor: pointer; + width: 100%; + height: 1.7em; + background: + linear-gradient( + to bottom, + rgba(116, 117, 119, 0.8) 0%, + rgba(58, 68, 82, 0.8) 11%, + rgba(46, 50, 56, 0.8) 46%, + rgba(53, 53, 53, 0.8) 81%, + rgba(53, 53, 53, 0.8) 100%); +} +.cesium-timeline-ruler { + visibility: hidden; + white-space: nowrap; + font-size: 80%; + z-index: -200; +} +.cesium-timeline-highlight { + position: absolute; + bottom: 0; + left: 0; + background: #08f; +} +.cesium-timeline-ticLabel { + position: absolute; + top: 0; + left: 0; + white-space: nowrap; + font-size: 80%; + color: #eee; +} +.cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #eee; +} +.cesium-timeline-ticSub { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 33%; + background: #aaa; +} +.cesium-timeline-ticTiny { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 25%; + background: #888; +} +.cesium-timeline-icon16 { + display: block; + position: absolute; + width: 16px; + height: 16px; + background-image: url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==); + background-repeat: no-repeat; +} + +/* packages/widgets/Source/Viewer/Viewer.css */ +.cesium-viewer { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-viewer-cesiumWidgetContainer { + width: 100%; + height: 100%; +} +.cesium-viewer-bottom { + display: block; + position: absolute; + bottom: 0; + left: 0; + padding-right: 5px; +} +.cesium-viewer .cesium-widget-credits { + display: inline; + position: static; + bottom: auto; + left: auto; + padding-right: 0; + color: #ffffff; + font-size: 10px; + text-shadow: 0 0 2px #000000; +} +.cesium-viewer-timelineContainer { + position: absolute; + bottom: 0; + left: 169px; + right: 29px; + height: 27px; + padding: 0; + margin: 0; + overflow: hidden; + font-size: 14px; +} +.cesium-viewer-animationContainer { + position: absolute; + bottom: 0; + left: 0; + padding: 0; + width: 169px; + height: 112px; +} +.cesium-viewer-fullscreenContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-vrContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-toolbar { + display: block; + position: absolute; + top: 5px; + right: 5px; +} +.cesium-viewer-cesiumInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; +} +.cesium-viewer-geocoderContainer { + position: relative; + display: inline-block; + margin: 0 3px; +} +.cesium-viewer-cesium3DTilesInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} +.cesium-viewer-voxelInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} + +/* packages/widgets/Source/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css */ +.cesium-viewer-i3s-explorer ul { + list-style-type: none; +} +.cesium-viewer-i3s-explorer .layersList { + padding: 0; +} +.cesium-viewer-i3s-explorer input { + margin: 0 3px 0 0; +} +.cesium-viewer-i3s-explorer .expandItem { + cursor: pointer; + user-select: none; + width: 20px; +} +.cesium-viewer-i3s-explorer .nested, +.cesium-viewer-i3s-explorer #bsl-wrapper { + display: none; +} +.cesium-viewer-i3s-explorer .active { + display: block; +} +.cesium-viewer-i3s-explorer .li-wrapper { + display: flex; + flex-direction: row; + align-content: center; +} + +/* packages/widgets/Source/widgets.css */ diff --git a/public/Cesium/Workers/chunk-35SHYARM.js b/public/Cesium/Workers/chunk-35SHYARM.js new file mode 100644 index 000000000..2f1a929ac --- /dev/null +++ b/public/Cesium/Workers/chunk-35SHYARM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as fn,c as Tn}from"./chunk-VTAIKJXX.js";var Dn=Tn((nt,bt)=>{var _=_||{};_.scope={};_.arrayIteratorImpl=function(p){var c=0;return function(){return c<p.length?{done:!1,value:p[c++]}:{done:!0}}};_.arrayIterator=function(p){return{next:_.arrayIteratorImpl(p)}};_.makeIterator=function(p){var c=typeof Symbol<"u"&&Symbol.iterator&&p[Symbol.iterator];return c?c.call(p):_.arrayIterator(p)};_.ASSUME_ES5=!1;_.ASSUME_NO_NATIVE_MAP=!1;_.ASSUME_NO_NATIVE_SET=!1;_.SIMPLE_FROUND_POLYFILL=!1;_.ISOLATE_POLYFILLS=!1;_.FORCE_POLYFILL_PROMISE=!1;_.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;_.getGlobal=function(p){p=[typeof globalThis=="object"&&globalThis,p,typeof window=="object"&&window,typeof self=="object"&&self,typeof global=="object"&&global];for(var c=0;c<p.length;++c){var s=p[c];if(s&&s.Math==Math)return s}throw Error("Cannot find global object")};_.global=_.getGlobal(nt);_.defineProperty=_.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(p,c,s){return p==Array.prototype||p==Object.prototype||(p[c]=s.value),p};_.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";_.TRUST_ES6_POLYFILLS=!_.ISOLATE_POLYFILLS||_.IS_SYMBOL_NATIVE;_.polyfills={};_.propertyToPolyfillSymbol={};_.POLYFILL_PREFIX="$jscp$";_.polyfill=function(p,c,s,y){c&&(_.ISOLATE_POLYFILLS?_.polyfillIsolated(p,c,s,y):_.polyfillUnisolated(p,c,s,y))};_.polyfillUnisolated=function(p,c,s,y){for(s=_.global,p=p.split("."),y=0;y<p.length-1;y++){var a=p[y];if(!(a in s))return;s=s[a]}p=p[p.length-1],y=s[p],c=c(y),c!=y&&c!=null&&_.defineProperty(s,p,{configurable:!0,writable:!0,value:c})};_.polyfillIsolated=function(p,c,s,y){var a=p.split(".");p=a.length===1,y=a[0],y=!p&&y in _.polyfills?_.polyfills:_.global;for(var g=0;g<a.length-1;g++){var i=a[g];if(!(i in y))return;y=y[i]}a=a[a.length-1],s=_.IS_SYMBOL_NATIVE&&s==="es6"?y[a]:null,c=c(s),c!=null&&(p?_.defineProperty(_.polyfills,a,{configurable:!0,writable:!0,value:c}):c!==s&&(_.propertyToPolyfillSymbol[a]===void 0&&(s=1e9*Math.random()>>>0,_.propertyToPolyfillSymbol[a]=_.IS_SYMBOL_NATIVE?_.global.Symbol(a):_.POLYFILL_PREFIX+s+"$"+a),_.defineProperty(y,_.propertyToPolyfillSymbol[a],{configurable:!0,writable:!0,value:c})))};_.polyfill("Promise",function(p){function c(){this.batch_=null}function s(i){return i instanceof a?i:new a(function(l,h){l(i)})}if(p&&(!(_.FORCE_POLYFILL_PROMISE||_.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof _.global.PromiseRejectionEvent>"u")||!_.global.Promise||_.global.Promise.toString().indexOf("[native code]")===-1))return p;c.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var l=this;this.asyncExecuteFunction(function(){l.executeBatch_()})}this.batch_.push(i)};var y=_.global.setTimeout;c.prototype.asyncExecuteFunction=function(i){y(i,0)},c.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var l=0;l<i.length;++l){var h=i[l];i[l]=null;try{h()}catch(I){this.asyncThrow_(I)}}}this.batch_=null},c.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var a=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var l=this.createResolveAndReject_();try{i(l.resolve,l.reject)}catch(h){l.reject(h)}};a.prototype.createResolveAndReject_=function(){function i(I){return function(C){h||(h=!0,I.call(l,C))}}var l=this,h=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},a.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof a)this.settleSameAsPromise_(i);else{t:switch(typeof i){case"object":var l=i!=null;break t;case"function":l=!0;break t;default:l=!1}l?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},a.prototype.resolveToNonPromiseObj_=function(i){var l=void 0;try{l=i.then}catch(h){this.reject_(h);return}typeof l=="function"?this.settleSameAsThenable_(l,i):this.fulfill_(i)},a.prototype.reject_=function(i){this.settle_(2,i)},a.prototype.fulfill_=function(i){this.settle_(1,i)},a.prototype.settle_=function(i,l){if(this.state_!=0)throw Error("Cannot settle("+i+", "+l+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=l,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},a.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;y(function(){if(i.notifyUnhandledRejection_()){var l=_.global.console;typeof l<"u"&&l.error(i.result_)}},1)},a.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=_.global.CustomEvent,l=_.global.Event,h=_.global.dispatchEvent;return typeof h>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof l=="function"?i=new l("unhandledrejection",{cancelable:!0}):(i=_.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,h(i))},a.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)g.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var g=new c;return a.prototype.settleSameAsPromise_=function(i){var l=this.createResolveAndReject_();i.callWhenSettled_(l.resolve,l.reject)},a.prototype.settleSameAsThenable_=function(i,l){var h=this.createResolveAndReject_();try{i.call(l,h.resolve,h.reject)}catch(I){h.reject(I)}},a.prototype.then=function(i,l){function h(f,T){return typeof f=="function"?function(G){try{I(f(G))}catch(V){C(V)}}:T}var I,C,K=new a(function(f,T){I=f,C=T});return this.callWhenSettled_(h(i,I),h(l,C)),K},a.prototype.catch=function(i){return this.then(void 0,i)},a.prototype.callWhenSettled_=function(i,l){function h(){switch(I.state_){case 1:i(I.result_);break;case 2:l(I.result_);break;default:throw Error("Unexpected state: "+I.state_)}}var I=this;this.onSettledCallbacks_==null?g.asyncExecute(h):this.onSettledCallbacks_.push(h),this.isRejectionHandled_=!0},a.resolve=s,a.reject=function(i){return new a(function(l,h){h(i)})},a.race=function(i){return new a(function(l,h){for(var I=_.makeIterator(i),C=I.next();!C.done;C=I.next())s(C.value).callWhenSettled_(l,h)})},a.all=function(i){var l=_.makeIterator(i),h=l.next();return h.done?s([]):new a(function(I,C){function K(G){return function(V){f[G]=V,T--,T==0&&I(f)}}var f=[],T=0;do f.push(void 0),T++,s(h.value).callWhenSettled_(K(f.length-1),C),h=l.next();while(!h.done)})},a},"es6","es3");_.owns=function(p,c){return Object.prototype.hasOwnProperty.call(p,c)};_.assign=_.TRUST_ES6_POLYFILLS&&typeof Object.assign=="function"?Object.assign:function(p,c){for(var s=1;s<arguments.length;s++){var y=arguments[s];if(y)for(var a in y)_.owns(y,a)&&(p[a]=y[a])}return p};_.polyfill("Object.assign",function(p){return p||_.assign},"es6","es3");_.checkStringArgs=function(p,c,s){if(p==null)throw new TypeError("The 'this' value for String.prototype."+s+" must not be null or undefined");if(c instanceof RegExp)throw new TypeError("First argument to String.prototype."+s+" must not be a regular expression");return p+""};_.polyfill("String.prototype.startsWith",function(p){return p||function(c,s){var y=_.checkStringArgs(this,c,"startsWith");c+="";var a=y.length,g=c.length;s=Math.max(0,Math.min(s|0,y.length));for(var i=0;i<g&&s<a;)if(y[s++]!=c[i++])return!1;return i>=g}},"es6","es3");_.polyfill("Array.prototype.copyWithin",function(p){function c(s){return s=Number(s),s===1/0||s===-1/0?s:s|0}return p||function(s,y,a){var g=this.length;if(s=c(s),y=c(y),a=a===void 0?g:c(a),s=0>s?Math.max(g+s,0):Math.min(s,g),y=0>y?Math.max(g+y,0):Math.min(y,g),a=0>a?Math.max(g+a,0):Math.min(a,g),s<y)for(;y<a;)y in this?this[s++]=this[y++]:(delete this[s++],y++);else for(a=Math.min(a,g+y-s),s+=a-y;a>y;)--a in this?this[--s]=this[a]:delete this[--s];return this}},"es6","es3");_.typedArrayCopyWithin=function(p){return p||Array.prototype.copyWithin};_.polyfill("Int8Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint8Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint8ClampedArray.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Int16Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint16Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Int32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Float32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Float64Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");var dt=function(){var p=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(p=p||__filename),function(c){function s(e){return t.locateFile?t.locateFile(e,Q):Q+e}function y(e,r,n){var o=r+n;for(n=r;e[n]&&!(n>=o);)++n;if(16<n-r&&e.buffer&&Ot)return Ot.decode(e.subarray(r,n));for(o="";r<n;){var m=e[r++];if(m&128){var b=e[r++]&63;if((m&224)==192)o+=String.fromCharCode((m&31)<<6|b);else{var X=e[r++]&63;m=(m&240)==224?(m&15)<<12|b<<6|X:(m&7)<<18|b<<12|X<<6|e[r++]&63,65536>m?o+=String.fromCharCode(m):(m-=65536,o+=String.fromCharCode(55296|m>>10,56320|m&1023))}}else o+=String.fromCharCode(m)}return o}function a(e,r){return e?y(tt,e,r):""}function g(){var e=_t.buffer;t.HEAP8=q=new Int8Array(e),t.HEAP16=new Int16Array(e),t.HEAP32=et=new Int32Array(e),t.HEAPU8=tt=new Uint8Array(e),t.HEAPU16=new Uint16Array(e),t.HEAPU32=x=new Uint32Array(e),t.HEAPF32=new Float32Array(e),t.HEAPF64=new Float64Array(e)}function i(e){throw t.onAbort&&t.onAbort(e),e="Aborted("+e+")",J(e),Gt=!0,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),ot(e),e}function l(e){try{if(e==z&&Z)return new Uint8Array(Z);if(ut)return ut(e);throw"both async and sync fetching of the wasm failed"}catch(r){i(r)}}function h(){if(!Z&&(It||$)){if(typeof fetch=="function"&&!z.startsWith("file://"))return fetch(z,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+z+"'";return e.arrayBuffer()}).catch(function(){return l(z)});if(st)return new Promise(function(e,r){st(z,function(n){e(new Uint8Array(n))},r)})}return Promise.resolve().then(function(){return l(z)})}function I(e){for(;0<e.length;)e.shift()(t)}function C(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){x[this.ptr+4>>2]=r},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(r){x[this.ptr+8>>2]=r},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_refcount=function(r){et[this.ptr>>2]=r},this.set_caught=function(r){q[this.ptr+12>>0]=r?1:0},this.get_caught=function(){return q[this.ptr+12>>0]!=0},this.set_rethrown=function(r){q[this.ptr+13>>0]=r?1:0},this.get_rethrown=function(){return q[this.ptr+13>>0]!=0},this.init=function(r,n){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){et[this.ptr>>2]+=1},this.release_ref=function(){var r=et[this.ptr>>2];return et[this.ptr>>2]=r-1,r===1},this.set_adjusted_ptr=function(r){x[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ln(this.get_type()))return x[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}function K(){function e(){if(!it&&(it=!0,t.calledRun=!0,!Gt)){if(Rt=!0,I(ct),ht(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Pt.unshift(t.postRun.shift());I(Pt)}}if(!(0<k)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)jt.unshift(t.preRun.shift());I(jt),0<k||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),e()},1)):e())}}function f(){}function T(e){return(e||f).__cache__}function G(e,r){var n=T(r),o=n[e];return o||(o=Object.create((r||f).prototype),o.ptr=e,n[e]=o)}function V(e){if(typeof e=="string"){for(var r=0,n=0;n<e.length;++n){var o=e.charCodeAt(n);127>=o?r++:2047>=o?r+=2:55296<=o&&57343>=o?(r+=4,++n):r+=3}if(r=Array(r+1),n=0,o=r.length,0<o){o=n+o-1;for(var m=0;m<e.length;++m){var b=e.charCodeAt(m);if(55296<=b&&57343>=b){var X=e.charCodeAt(++m);b=65536+((b&1023)<<10)|X&1023}if(127>=b){if(n>=o)break;r[n++]=b}else{if(2047>=b){if(n+1>=o)break;r[n++]=192|b>>6}else{if(65535>=b){if(n+2>=o)break;r[n++]=224|b>>12}else{if(n+3>=o)break;r[n++]=240|b>>18,r[n++]=128|b>>12&63}r[n++]=128|b>>6&63}r[n++]=128|b&63}}r[n]=0}return e=d.alloc(r,q),d.copy(r,q,e),e}return e}function at(e){if(typeof e=="object"){var r=d.alloc(e,q);return d.copy(e,q,r),r}return e}function H(){throw"cannot construct a VoidPtr, no constructor in IDL"}function B(){this.ptr=Mt(),T(B)[this.ptr]=this}function w(){this.ptr=Ft(),T(w)[this.ptr]=this}function Y(){this.ptr=wt(),T(Y)[this.ptr]=this}function A(){this.ptr=Vt(),T(A)[this.ptr]=this}function E(){this.ptr=Jt(),T(E)[this.ptr]=this}function j(){this.ptr=ne(),T(j)[this.ptr]=this}function P(){this.ptr=ae(),T(P)[this.ptr]=this}function O(){this.ptr=ce(),T(O)[this.ptr]=this}function W(){this.ptr=de(),T(W)[this.ptr]=this}function v(){throw"cannot construct a Status, no constructor in IDL"}function R(){this.ptr=Ie(),T(R)[this.ptr]=this}function S(){this.ptr=Ge(),T(S)[this.ptr]=this}function M(){this.ptr=Re(),T(M)[this.ptr]=this}function N(){this.ptr=Ue(),T(N)[this.ptr]=this}function U(){this.ptr=we(),T(U)[this.ptr]=this}function F(){this.ptr=We(),T(F)[this.ptr]=this}function L(){this.ptr=He(),T(L)[this.ptr]=this}function D(){this.ptr=Ke(),T(D)[this.ptr]=this}function u(){this.ptr=_r(),T(u)[this.ptr]=this}c=c===void 0?{}:c;var t=typeof c<"u"?c:{},ht,ot;t.ready=new Promise(function(e,r){ht=e,ot=r});var At=!1,Tt=!1;t.onRuntimeInitialized=function(){At=!0,Tt&&typeof t.onModuleLoaded=="function"&&t.onModuleLoaded(t)},t.onModuleParsed=function(){Tt=!0,At&&typeof t.onModuleLoaded=="function"&&t.onModuleLoaded(t)},t.isVersionSupported=function(e){return typeof e!="string"?!1:(e=e.split("."),2>e.length||3<e.length?!1:e[0]==1&&0<=e[1]&&5>=e[1]?!0:!(e[0]!=0||10<e[1]))};var Dt=Object.assign({},t),It=typeof window=="object",$=typeof importScripts=="function",gt=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",Q="";if(gt){var vt=fn("fs"),pt=fn("path");Q=$?pt.dirname(Q)+"/":__dirname+"/";var Et=function(e,r){return e=e.startsWith("file://")?new URL(e):pt.normalize(e),vt.readFileSync(e,r?void 0:"utf8")},ut=function(e){return e=Et(e,!0),e.buffer||(e=new Uint8Array(e)),e},st=function(e,r,n){e=e.startsWith("file://")?new URL(e):pt.normalize(e),vt.readFile(e,function(o,m){o?n(o):r(m.buffer)})};1<process.argv.length&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),t.inspect=function(){return"[Emscripten Module object]"}}else(It||$)&&($?Q=self.location.href:typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),p&&(Q=p),Q=Q.indexOf("blob:")!==0?Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):"",Et=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},$&&(ut=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),st=function(e,r,n){var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=function(){o.status==200||o.status==0&&o.response?r(o.response):n()},o.onerror=n,o.send(null)});var dn=t.print||console.log.bind(console),J=t.printErr||console.warn.bind(console);Object.assign(t,Dt),Dt=null;var Z;t.wasmBinary&&(Z=t.wasmBinary),typeof WebAssembly!="object"&&i("no native wasm support detected");var _t,Gt=!1,Ot=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,q,tt,et,x,jt=[],ct=[],Pt=[],Rt=!1,k=0,yt=null,rt=null,z="draco_decoder.wasm";z.startsWith("data:application/octet-stream;base64,")||(z=s(z));var bn=0,hn=[null,[],[]],An={b:function(e,r,n){throw new C(e).init(r,n),bn++,e},a:function(){i("")},g:function(e,r,n){tt.copyWithin(e,r,r+n)},e:function(e){var r=tt.length;if(e>>>=0,2147483648<e)return!1;for(var n=1;4>=n;n*=2){var o=r*(1+.2/n);o=Math.min(o,e+100663296);var m=Math;o=Math.max(e,o),m=m.min.call(m,2147483648,o+(65536-o%65536)%65536);t:{o=_t.buffer;try{_t.grow(m-o.byteLength+65535>>>16),g();var b=1;break t}catch{}b=void 0}if(b)return!0}return!1},f:function(e){return 52},d:function(e,r,n,o,m){return 70},c:function(e,r,n,o){for(var m=0,b=0;b<n;b++){var X=x[r>>2],mn=x[r+4>>2];r+=8;for(var lt=0;lt<mn;lt++){var mt=tt[X+lt],ft=hn[e];mt===0||mt===10?((e===1?dn:J)(y(ft,0)),ft.length=0):ft.push(mt)}m+=mn}return x[o>>2]=m,0}};(function(){function e(m,b){t.asm=m.exports,_t=t.asm.h,g(),ct.unshift(t.asm.i),k--,t.monitorRunDependencies&&t.monitorRunDependencies(k),k==0&&(yt!==null&&(clearInterval(yt),yt=null),rt&&(m=rt,rt=null,m()))}function r(m){e(m.instance)}function n(m){return h().then(function(b){return WebAssembly.instantiate(b,o)}).then(function(b){return b}).then(m,function(b){J("failed to asynchronously prepare wasm: "+b),i(b)})}var o={a:An};if(k++,t.monitorRunDependencies&&t.monitorRunDependencies(k),t.instantiateWasm)try{return t.instantiateWasm(o,e)}catch(m){J("Module.instantiateWasm callback failed with error: "+m),ot(m)}return function(){return Z||typeof WebAssembly.instantiateStreaming!="function"||z.startsWith("data:application/octet-stream;base64,")||z.startsWith("file://")||gt||typeof fetch!="function"?n(r):fetch(z,{credentials:"same-origin"}).then(function(m){return WebAssembly.instantiateStreaming(m,o).then(r,function(b){return J("wasm streaming compile failed: "+b),J("falling back to ArrayBuffer instantiation"),n(r)})})}().catch(ot),{}})();var St=t._emscripten_bind_VoidPtr___destroy___0=function(){return(St=t._emscripten_bind_VoidPtr___destroy___0=t.asm.k).apply(null,arguments)},Mt=t._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return(Mt=t._emscripten_bind_DecoderBuffer_DecoderBuffer_0=t.asm.l).apply(null,arguments)},Nt=t._emscripten_bind_DecoderBuffer_Init_2=function(){return(Nt=t._emscripten_bind_DecoderBuffer_Init_2=t.asm.m).apply(null,arguments)},Ut=t._emscripten_bind_DecoderBuffer___destroy___0=function(){return(Ut=t._emscripten_bind_DecoderBuffer___destroy___0=t.asm.n).apply(null,arguments)},Ft=t._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Ft=t._emscripten_bind_AttributeTransformData_AttributeTransformData_0=t.asm.o).apply(null,arguments)},Lt=t._emscripten_bind_AttributeTransformData_transform_type_0=function(){return(Lt=t._emscripten_bind_AttributeTransformData_transform_type_0=t.asm.p).apply(null,arguments)},Ct=t._emscripten_bind_AttributeTransformData___destroy___0=function(){return(Ct=t._emscripten_bind_AttributeTransformData___destroy___0=t.asm.q).apply(null,arguments)},wt=t._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(wt=t._emscripten_bind_GeometryAttribute_GeometryAttribute_0=t.asm.r).apply(null,arguments)},zt=t._emscripten_bind_GeometryAttribute___destroy___0=function(){return(zt=t._emscripten_bind_GeometryAttribute___destroy___0=t.asm.s).apply(null,arguments)},Vt=t._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Vt=t._emscripten_bind_PointAttribute_PointAttribute_0=t.asm.t).apply(null,arguments)},Bt=t._emscripten_bind_PointAttribute_size_0=function(){return(Bt=t._emscripten_bind_PointAttribute_size_0=t.asm.u).apply(null,arguments)},Wt=t._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return(Wt=t._emscripten_bind_PointAttribute_GetAttributeTransformData_0=t.asm.v).apply(null,arguments)},Qt=t._emscripten_bind_PointAttribute_attribute_type_0=function(){return(Qt=t._emscripten_bind_PointAttribute_attribute_type_0=t.asm.w).apply(null,arguments)},xt=t._emscripten_bind_PointAttribute_data_type_0=function(){return(xt=t._emscripten_bind_PointAttribute_data_type_0=t.asm.x).apply(null,arguments)},Yt=t._emscripten_bind_PointAttribute_num_components_0=function(){return(Yt=t._emscripten_bind_PointAttribute_num_components_0=t.asm.y).apply(null,arguments)},Ht=t._emscripten_bind_PointAttribute_normalized_0=function(){return(Ht=t._emscripten_bind_PointAttribute_normalized_0=t.asm.z).apply(null,arguments)},qt=t._emscripten_bind_PointAttribute_byte_stride_0=function(){return(qt=t._emscripten_bind_PointAttribute_byte_stride_0=t.asm.A).apply(null,arguments)},kt=t._emscripten_bind_PointAttribute_byte_offset_0=function(){return(kt=t._emscripten_bind_PointAttribute_byte_offset_0=t.asm.B).apply(null,arguments)},Xt=t._emscripten_bind_PointAttribute_unique_id_0=function(){return(Xt=t._emscripten_bind_PointAttribute_unique_id_0=t.asm.C).apply(null,arguments)},Kt=t._emscripten_bind_PointAttribute___destroy___0=function(){return(Kt=t._emscripten_bind_PointAttribute___destroy___0=t.asm.D).apply(null,arguments)},Jt=t._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Jt=t._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=t.asm.E).apply(null,arguments)},$t=t._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return($t=t._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=t.asm.F).apply(null,arguments)},Zt=t._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return(Zt=t._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=t.asm.G).apply(null,arguments)},te=t._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(te=t._emscripten_bind_AttributeQuantizationTransform_min_value_1=t.asm.H).apply(null,arguments)},ee=t._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(ee=t._emscripten_bind_AttributeQuantizationTransform_range_0=t.asm.I).apply(null,arguments)},re=t._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return(re=t._emscripten_bind_AttributeQuantizationTransform___destroy___0=t.asm.J).apply(null,arguments)},ne=t._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(ne=t._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=t.asm.K).apply(null,arguments)},oe=t._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(oe=t._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=t.asm.L).apply(null,arguments)},_e=t._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(_e=t._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=t.asm.M).apply(null,arguments)},ie=t._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(ie=t._emscripten_bind_AttributeOctahedronTransform___destroy___0=t.asm.N).apply(null,arguments)},ae=t._emscripten_bind_PointCloud_PointCloud_0=function(){return(ae=t._emscripten_bind_PointCloud_PointCloud_0=t.asm.O).apply(null,arguments)},pe=t._emscripten_bind_PointCloud_num_attributes_0=function(){return(pe=t._emscripten_bind_PointCloud_num_attributes_0=t.asm.P).apply(null,arguments)},ue=t._emscripten_bind_PointCloud_num_points_0=function(){return(ue=t._emscripten_bind_PointCloud_num_points_0=t.asm.Q).apply(null,arguments)},se=t._emscripten_bind_PointCloud___destroy___0=function(){return(se=t._emscripten_bind_PointCloud___destroy___0=t.asm.R).apply(null,arguments)},ce=t._emscripten_bind_Mesh_Mesh_0=function(){return(ce=t._emscripten_bind_Mesh_Mesh_0=t.asm.S).apply(null,arguments)},ye=t._emscripten_bind_Mesh_num_faces_0=function(){return(ye=t._emscripten_bind_Mesh_num_faces_0=t.asm.T).apply(null,arguments)},le=t._emscripten_bind_Mesh_num_attributes_0=function(){return(le=t._emscripten_bind_Mesh_num_attributes_0=t.asm.U).apply(null,arguments)},me=t._emscripten_bind_Mesh_num_points_0=function(){return(me=t._emscripten_bind_Mesh_num_points_0=t.asm.V).apply(null,arguments)},fe=t._emscripten_bind_Mesh___destroy___0=function(){return(fe=t._emscripten_bind_Mesh___destroy___0=t.asm.W).apply(null,arguments)},de=t._emscripten_bind_Metadata_Metadata_0=function(){return(de=t._emscripten_bind_Metadata_Metadata_0=t.asm.X).apply(null,arguments)},be=t._emscripten_bind_Metadata___destroy___0=function(){return(be=t._emscripten_bind_Metadata___destroy___0=t.asm.Y).apply(null,arguments)},he=t._emscripten_bind_Status_code_0=function(){return(he=t._emscripten_bind_Status_code_0=t.asm.Z).apply(null,arguments)},Ae=t._emscripten_bind_Status_ok_0=function(){return(Ae=t._emscripten_bind_Status_ok_0=t.asm._).apply(null,arguments)},Te=t._emscripten_bind_Status_error_msg_0=function(){return(Te=t._emscripten_bind_Status_error_msg_0=t.asm.$).apply(null,arguments)},De=t._emscripten_bind_Status___destroy___0=function(){return(De=t._emscripten_bind_Status___destroy___0=t.asm.aa).apply(null,arguments)},Ie=t._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ie=t._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=t.asm.ba).apply(null,arguments)},ge=t._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(ge=t._emscripten_bind_DracoFloat32Array_GetValue_1=t.asm.ca).apply(null,arguments)},ve=t._emscripten_bind_DracoFloat32Array_size_0=function(){return(ve=t._emscripten_bind_DracoFloat32Array_size_0=t.asm.da).apply(null,arguments)},Ee=t._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Ee=t._emscripten_bind_DracoFloat32Array___destroy___0=t.asm.ea).apply(null,arguments)},Ge=t._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return(Ge=t._emscripten_bind_DracoInt8Array_DracoInt8Array_0=t.asm.fa).apply(null,arguments)},Oe=t._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Oe=t._emscripten_bind_DracoInt8Array_GetValue_1=t.asm.ga).apply(null,arguments)},je=t._emscripten_bind_DracoInt8Array_size_0=function(){return(je=t._emscripten_bind_DracoInt8Array_size_0=t.asm.ha).apply(null,arguments)},Pe=t._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Pe=t._emscripten_bind_DracoInt8Array___destroy___0=t.asm.ia).apply(null,arguments)},Re=t._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Re=t._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=t.asm.ja).apply(null,arguments)},Se=t._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Se=t._emscripten_bind_DracoUInt8Array_GetValue_1=t.asm.ka).apply(null,arguments)},Me=t._emscripten_bind_DracoUInt8Array_size_0=function(){return(Me=t._emscripten_bind_DracoUInt8Array_size_0=t.asm.la).apply(null,arguments)},Ne=t._emscripten_bind_DracoUInt8Array___destroy___0=function(){return(Ne=t._emscripten_bind_DracoUInt8Array___destroy___0=t.asm.ma).apply(null,arguments)},Ue=t._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(Ue=t._emscripten_bind_DracoInt16Array_DracoInt16Array_0=t.asm.na).apply(null,arguments)},Fe=t._emscripten_bind_DracoInt16Array_GetValue_1=function(){return(Fe=t._emscripten_bind_DracoInt16Array_GetValue_1=t.asm.oa).apply(null,arguments)},Le=t._emscripten_bind_DracoInt16Array_size_0=function(){return(Le=t._emscripten_bind_DracoInt16Array_size_0=t.asm.pa).apply(null,arguments)},Ce=t._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Ce=t._emscripten_bind_DracoInt16Array___destroy___0=t.asm.qa).apply(null,arguments)},we=t._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(we=t._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=t.asm.ra).apply(null,arguments)},ze=t._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(ze=t._emscripten_bind_DracoUInt16Array_GetValue_1=t.asm.sa).apply(null,arguments)},Ve=t._emscripten_bind_DracoUInt16Array_size_0=function(){return(Ve=t._emscripten_bind_DracoUInt16Array_size_0=t.asm.ta).apply(null,arguments)},Be=t._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Be=t._emscripten_bind_DracoUInt16Array___destroy___0=t.asm.ua).apply(null,arguments)},We=t._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return(We=t._emscripten_bind_DracoInt32Array_DracoInt32Array_0=t.asm.va).apply(null,arguments)},Qe=t._emscripten_bind_DracoInt32Array_GetValue_1=function(){return(Qe=t._emscripten_bind_DracoInt32Array_GetValue_1=t.asm.wa).apply(null,arguments)},xe=t._emscripten_bind_DracoInt32Array_size_0=function(){return(xe=t._emscripten_bind_DracoInt32Array_size_0=t.asm.xa).apply(null,arguments)},Ye=t._emscripten_bind_DracoInt32Array___destroy___0=function(){return(Ye=t._emscripten_bind_DracoInt32Array___destroy___0=t.asm.ya).apply(null,arguments)},He=t._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(He=t._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=t.asm.za).apply(null,arguments)},qe=t._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(qe=t._emscripten_bind_DracoUInt32Array_GetValue_1=t.asm.Aa).apply(null,arguments)},ke=t._emscripten_bind_DracoUInt32Array_size_0=function(){return(ke=t._emscripten_bind_DracoUInt32Array_size_0=t.asm.Ba).apply(null,arguments)},Xe=t._emscripten_bind_DracoUInt32Array___destroy___0=function(){return(Xe=t._emscripten_bind_DracoUInt32Array___destroy___0=t.asm.Ca).apply(null,arguments)},Ke=t._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return(Ke=t._emscripten_bind_MetadataQuerier_MetadataQuerier_0=t.asm.Da).apply(null,arguments)},Je=t._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(Je=t._emscripten_bind_MetadataQuerier_HasEntry_2=t.asm.Ea).apply(null,arguments)},$e=t._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return($e=t._emscripten_bind_MetadataQuerier_GetIntEntry_2=t.asm.Fa).apply(null,arguments)},Ze=t._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(Ze=t._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=t.asm.Ga).apply(null,arguments)},tr=t._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(tr=t._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=t.asm.Ha).apply(null,arguments)},er=t._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(er=t._emscripten_bind_MetadataQuerier_GetStringEntry_2=t.asm.Ia).apply(null,arguments)},rr=t._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(rr=t._emscripten_bind_MetadataQuerier_NumEntries_1=t.asm.Ja).apply(null,arguments)},nr=t._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(nr=t._emscripten_bind_MetadataQuerier_GetEntryName_2=t.asm.Ka).apply(null,arguments)},or=t._emscripten_bind_MetadataQuerier___destroy___0=function(){return(or=t._emscripten_bind_MetadataQuerier___destroy___0=t.asm.La).apply(null,arguments)},_r=t._emscripten_bind_Decoder_Decoder_0=function(){return(_r=t._emscripten_bind_Decoder_Decoder_0=t.asm.Ma).apply(null,arguments)},ir=t._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(ir=t._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=t.asm.Na).apply(null,arguments)},ar=t._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(ar=t._emscripten_bind_Decoder_DecodeArrayToMesh_3=t.asm.Oa).apply(null,arguments)},pr=t._emscripten_bind_Decoder_GetAttributeId_2=function(){return(pr=t._emscripten_bind_Decoder_GetAttributeId_2=t.asm.Pa).apply(null,arguments)},ur=t._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(ur=t._emscripten_bind_Decoder_GetAttributeIdByName_2=t.asm.Qa).apply(null,arguments)},sr=t._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(sr=t._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=t.asm.Ra).apply(null,arguments)},cr=t._emscripten_bind_Decoder_GetAttribute_2=function(){return(cr=t._emscripten_bind_Decoder_GetAttribute_2=t.asm.Sa).apply(null,arguments)},yr=t._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(yr=t._emscripten_bind_Decoder_GetAttributeByUniqueId_2=t.asm.Ta).apply(null,arguments)},lr=t._emscripten_bind_Decoder_GetMetadata_1=function(){return(lr=t._emscripten_bind_Decoder_GetMetadata_1=t.asm.Ua).apply(null,arguments)},mr=t._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(mr=t._emscripten_bind_Decoder_GetAttributeMetadata_2=t.asm.Va).apply(null,arguments)},fr=t._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return(fr=t._emscripten_bind_Decoder_GetFaceFromMesh_3=t.asm.Wa).apply(null,arguments)},dr=t._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return(dr=t._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=t.asm.Xa).apply(null,arguments)},br=t._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(br=t._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=t.asm.Ya).apply(null,arguments)},hr=t._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(hr=t._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=t.asm.Za).apply(null,arguments)},Ar=t._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(Ar=t._emscripten_bind_Decoder_GetAttributeFloat_3=t.asm._a).apply(null,arguments)},Tr=t._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(Tr=t._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=t.asm.$a).apply(null,arguments)},Dr=t._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(Dr=t._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=t.asm.ab).apply(null,arguments)},Ir=t._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(Ir=t._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=t.asm.bb).apply(null,arguments)},gr=t._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(gr=t._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=t.asm.cb).apply(null,arguments)},vr=t._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(vr=t._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=t.asm.db).apply(null,arguments)},Er=t._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return(Er=t._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=t.asm.eb).apply(null,arguments)},Gr=t._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Gr=t._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=t.asm.fb).apply(null,arguments)},Or=t._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Or=t._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=t.asm.gb).apply(null,arguments)},jr=t._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return(jr=t._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=t.asm.hb).apply(null,arguments)},Pr=t._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Pr=t._emscripten_bind_Decoder_SkipAttributeTransform_1=t.asm.ib).apply(null,arguments)},Rr=t._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Rr=t._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=t.asm.jb).apply(null,arguments)},Sr=t._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return(Sr=t._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=t.asm.kb).apply(null,arguments)},Mr=t._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Mr=t._emscripten_bind_Decoder_DecodeBufferToMesh_2=t.asm.lb).apply(null,arguments)},Nr=t._emscripten_bind_Decoder___destroy___0=function(){return(Nr=t._emscripten_bind_Decoder___destroy___0=t.asm.mb).apply(null,arguments)},Ur=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return(Ur=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=t.asm.nb).apply(null,arguments)},Fr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Fr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=t.asm.ob).apply(null,arguments)},Lr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Lr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=t.asm.pb).apply(null,arguments)},Cr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return(Cr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=t.asm.qb).apply(null,arguments)},wr=t._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(wr=t._emscripten_enum_draco_GeometryAttribute_Type_INVALID=t.asm.rb).apply(null,arguments)},zr=t._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(zr=t._emscripten_enum_draco_GeometryAttribute_Type_POSITION=t.asm.sb).apply(null,arguments)},Vr=t._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return(Vr=t._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=t.asm.tb).apply(null,arguments)},Br=t._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Br=t._emscripten_enum_draco_GeometryAttribute_Type_COLOR=t.asm.ub).apply(null,arguments)},Wr=t._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Wr=t._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=t.asm.vb).apply(null,arguments)},Qr=t._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return(Qr=t._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=t.asm.wb).apply(null,arguments)},xr=t._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(xr=t._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=t.asm.xb).apply(null,arguments)},Yr=t._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return(Yr=t._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=t.asm.yb).apply(null,arguments)},Hr=t._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return(Hr=t._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=t.asm.zb).apply(null,arguments)},qr=t._emscripten_enum_draco_DataType_DT_INVALID=function(){return(qr=t._emscripten_enum_draco_DataType_DT_INVALID=t.asm.Ab).apply(null,arguments)},kr=t._emscripten_enum_draco_DataType_DT_INT8=function(){return(kr=t._emscripten_enum_draco_DataType_DT_INT8=t.asm.Bb).apply(null,arguments)},Xr=t._emscripten_enum_draco_DataType_DT_UINT8=function(){return(Xr=t._emscripten_enum_draco_DataType_DT_UINT8=t.asm.Cb).apply(null,arguments)},Kr=t._emscripten_enum_draco_DataType_DT_INT16=function(){return(Kr=t._emscripten_enum_draco_DataType_DT_INT16=t.asm.Db).apply(null,arguments)},Jr=t._emscripten_enum_draco_DataType_DT_UINT16=function(){return(Jr=t._emscripten_enum_draco_DataType_DT_UINT16=t.asm.Eb).apply(null,arguments)},$r=t._emscripten_enum_draco_DataType_DT_INT32=function(){return($r=t._emscripten_enum_draco_DataType_DT_INT32=t.asm.Fb).apply(null,arguments)},Zr=t._emscripten_enum_draco_DataType_DT_UINT32=function(){return(Zr=t._emscripten_enum_draco_DataType_DT_UINT32=t.asm.Gb).apply(null,arguments)},tn=t._emscripten_enum_draco_DataType_DT_INT64=function(){return(tn=t._emscripten_enum_draco_DataType_DT_INT64=t.asm.Hb).apply(null,arguments)},en=t._emscripten_enum_draco_DataType_DT_UINT64=function(){return(en=t._emscripten_enum_draco_DataType_DT_UINT64=t.asm.Ib).apply(null,arguments)},rn=t._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return(rn=t._emscripten_enum_draco_DataType_DT_FLOAT32=t.asm.Jb).apply(null,arguments)},nn=t._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(nn=t._emscripten_enum_draco_DataType_DT_FLOAT64=t.asm.Kb).apply(null,arguments)},on=t._emscripten_enum_draco_DataType_DT_BOOL=function(){return(on=t._emscripten_enum_draco_DataType_DT_BOOL=t.asm.Lb).apply(null,arguments)},_n=t._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(_n=t._emscripten_enum_draco_DataType_DT_TYPES_COUNT=t.asm.Mb).apply(null,arguments)},an=t._emscripten_enum_draco_StatusCode_OK=function(){return(an=t._emscripten_enum_draco_StatusCode_OK=t.asm.Nb).apply(null,arguments)},pn=t._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(pn=t._emscripten_enum_draco_StatusCode_DRACO_ERROR=t.asm.Ob).apply(null,arguments)},un=t._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(un=t._emscripten_enum_draco_StatusCode_IO_ERROR=t.asm.Pb).apply(null,arguments)},sn=t._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return(sn=t._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=t.asm.Qb).apply(null,arguments)},cn=t._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(cn=t._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=t.asm.Rb).apply(null,arguments)},yn=t._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(yn=t._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=t.asm.Sb).apply(null,arguments)};t._malloc=function(){return(t._malloc=t.asm.Tb).apply(null,arguments)},t._free=function(){return(t._free=t.asm.Ub).apply(null,arguments)};var ln=function(){return(ln=t.asm.Vb).apply(null,arguments)};t.___start_em_js=15856,t.___stop_em_js=15954;var it;if(rt=function e(){it||K(),it||(rt=e)},t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();K(),f.prototype=Object.create(f.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},t.WrapperObject=f,t.getCache=T,t.wrapPointer=G,t.castObject=function(e,r){return G(e.ptr,r)},t.NULL=G(0),t.destroy=function(e){if(!e.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";e.__destroy__(),delete T(e.__class__)[e.ptr]},t.compare=function(e,r){return e.ptr===r.ptr},t.getPointer=function(e){return e.ptr},t.getClass=function(e){return e.__class__};var d={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(d.needed){for(var e=0;e<d.temps.length;e++)t._free(d.temps[e]);d.temps.length=0,t._free(d.buffer),d.buffer=0,d.size+=d.needed,d.needed=0}d.buffer||(d.size+=128,d.buffer=t._malloc(d.size),d.buffer||i(void 0)),d.pos=0},alloc:function(e,r){return d.buffer||i(void 0),e=e.length*r.BYTES_PER_ELEMENT,e=e+7&-8,d.pos+e>=d.size?(0<e||i(void 0),d.needed+=e,r=t._malloc(e),d.temps.push(r)):(r=d.buffer+d.pos,d.pos+=e),r},copy:function(e,r,n){switch(n>>>=0,r.BYTES_PER_ELEMENT){case 2:n>>>=1;break;case 4:n>>>=2;break;case 8:n>>>=3}for(var o=0;o<e.length;o++)r[n+o]=e[o]}};return H.prototype=Object.create(f.prototype),H.prototype.constructor=H,H.prototype.__class__=H,H.__cache__={},t.VoidPtr=H,H.prototype.__destroy__=H.prototype.__destroy__=function(){St(this.ptr)},B.prototype=Object.create(f.prototype),B.prototype.constructor=B,B.prototype.__class__=B,B.__cache__={},t.DecoderBuffer=B,B.prototype.Init=B.prototype.Init=function(e,r){var n=this.ptr;d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),Nt(n,e,r)},B.prototype.__destroy__=B.prototype.__destroy__=function(){Ut(this.ptr)},w.prototype=Object.create(f.prototype),w.prototype.constructor=w,w.prototype.__class__=w,w.__cache__={},t.AttributeTransformData=w,w.prototype.transform_type=w.prototype.transform_type=function(){return Lt(this.ptr)},w.prototype.__destroy__=w.prototype.__destroy__=function(){Ct(this.ptr)},Y.prototype=Object.create(f.prototype),Y.prototype.constructor=Y,Y.prototype.__class__=Y,Y.__cache__={},t.GeometryAttribute=Y,Y.prototype.__destroy__=Y.prototype.__destroy__=function(){zt(this.ptr)},A.prototype=Object.create(f.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},t.PointAttribute=A,A.prototype.size=A.prototype.size=function(){return Bt(this.ptr)},A.prototype.GetAttributeTransformData=A.prototype.GetAttributeTransformData=function(){return G(Wt(this.ptr),w)},A.prototype.attribute_type=A.prototype.attribute_type=function(){return Qt(this.ptr)},A.prototype.data_type=A.prototype.data_type=function(){return xt(this.ptr)},A.prototype.num_components=A.prototype.num_components=function(){return Yt(this.ptr)},A.prototype.normalized=A.prototype.normalized=function(){return!!Ht(this.ptr)},A.prototype.byte_stride=A.prototype.byte_stride=function(){return qt(this.ptr)},A.prototype.byte_offset=A.prototype.byte_offset=function(){return kt(this.ptr)},A.prototype.unique_id=A.prototype.unique_id=function(){return Xt(this.ptr)},A.prototype.__destroy__=A.prototype.__destroy__=function(){Kt(this.ptr)},E.prototype=Object.create(f.prototype),E.prototype.constructor=E,E.prototype.__class__=E,E.__cache__={},t.AttributeQuantizationTransform=E,E.prototype.InitFromAttribute=E.prototype.InitFromAttribute=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),!!$t(r,e)},E.prototype.quantization_bits=E.prototype.quantization_bits=function(){return Zt(this.ptr)},E.prototype.min_value=E.prototype.min_value=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),te(r,e)},E.prototype.range=E.prototype.range=function(){return ee(this.ptr)},E.prototype.__destroy__=E.prototype.__destroy__=function(){re(this.ptr)},j.prototype=Object.create(f.prototype),j.prototype.constructor=j,j.prototype.__class__=j,j.__cache__={},t.AttributeOctahedronTransform=j,j.prototype.InitFromAttribute=j.prototype.InitFromAttribute=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),!!oe(r,e)},j.prototype.quantization_bits=j.prototype.quantization_bits=function(){return _e(this.ptr)},j.prototype.__destroy__=j.prototype.__destroy__=function(){ie(this.ptr)},P.prototype=Object.create(f.prototype),P.prototype.constructor=P,P.prototype.__class__=P,P.__cache__={},t.PointCloud=P,P.prototype.num_attributes=P.prototype.num_attributes=function(){return pe(this.ptr)},P.prototype.num_points=P.prototype.num_points=function(){return ue(this.ptr)},P.prototype.__destroy__=P.prototype.__destroy__=function(){se(this.ptr)},O.prototype=Object.create(f.prototype),O.prototype.constructor=O,O.prototype.__class__=O,O.__cache__={},t.Mesh=O,O.prototype.num_faces=O.prototype.num_faces=function(){return ye(this.ptr)},O.prototype.num_attributes=O.prototype.num_attributes=function(){return le(this.ptr)},O.prototype.num_points=O.prototype.num_points=function(){return me(this.ptr)},O.prototype.__destroy__=O.prototype.__destroy__=function(){fe(this.ptr)},W.prototype=Object.create(f.prototype),W.prototype.constructor=W,W.prototype.__class__=W,W.__cache__={},t.Metadata=W,W.prototype.__destroy__=W.prototype.__destroy__=function(){be(this.ptr)},v.prototype=Object.create(f.prototype),v.prototype.constructor=v,v.prototype.__class__=v,v.__cache__={},t.Status=v,v.prototype.code=v.prototype.code=function(){return he(this.ptr)},v.prototype.ok=v.prototype.ok=function(){return!!Ae(this.ptr)},v.prototype.error_msg=v.prototype.error_msg=function(){return a(Te(this.ptr))},v.prototype.__destroy__=v.prototype.__destroy__=function(){De(this.ptr)},R.prototype=Object.create(f.prototype),R.prototype.constructor=R,R.prototype.__class__=R,R.__cache__={},t.DracoFloat32Array=R,R.prototype.GetValue=R.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),ge(r,e)},R.prototype.size=R.prototype.size=function(){return ve(this.ptr)},R.prototype.__destroy__=R.prototype.__destroy__=function(){Ee(this.ptr)},S.prototype=Object.create(f.prototype),S.prototype.constructor=S,S.prototype.__class__=S,S.__cache__={},t.DracoInt8Array=S,S.prototype.GetValue=S.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Oe(r,e)},S.prototype.size=S.prototype.size=function(){return je(this.ptr)},S.prototype.__destroy__=S.prototype.__destroy__=function(){Pe(this.ptr)},M.prototype=Object.create(f.prototype),M.prototype.constructor=M,M.prototype.__class__=M,M.__cache__={},t.DracoUInt8Array=M,M.prototype.GetValue=M.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Se(r,e)},M.prototype.size=M.prototype.size=function(){return Me(this.ptr)},M.prototype.__destroy__=M.prototype.__destroy__=function(){Ne(this.ptr)},N.prototype=Object.create(f.prototype),N.prototype.constructor=N,N.prototype.__class__=N,N.__cache__={},t.DracoInt16Array=N,N.prototype.GetValue=N.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Fe(r,e)},N.prototype.size=N.prototype.size=function(){return Le(this.ptr)},N.prototype.__destroy__=N.prototype.__destroy__=function(){Ce(this.ptr)},U.prototype=Object.create(f.prototype),U.prototype.constructor=U,U.prototype.__class__=U,U.__cache__={},t.DracoUInt16Array=U,U.prototype.GetValue=U.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),ze(r,e)},U.prototype.size=U.prototype.size=function(){return Ve(this.ptr)},U.prototype.__destroy__=U.prototype.__destroy__=function(){Be(this.ptr)},F.prototype=Object.create(f.prototype),F.prototype.constructor=F,F.prototype.__class__=F,F.__cache__={},t.DracoInt32Array=F,F.prototype.GetValue=F.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Qe(r,e)},F.prototype.size=F.prototype.size=function(){return xe(this.ptr)},F.prototype.__destroy__=F.prototype.__destroy__=function(){Ye(this.ptr)},L.prototype=Object.create(f.prototype),L.prototype.constructor=L,L.prototype.__class__=L,L.__cache__={},t.DracoUInt32Array=L,L.prototype.GetValue=L.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),qe(r,e)},L.prototype.size=L.prototype.size=function(){return ke(this.ptr)},L.prototype.__destroy__=L.prototype.__destroy__=function(){Xe(this.ptr)},D.prototype=Object.create(f.prototype),D.prototype.constructor=D,D.prototype.__class__=D,D.__cache__={},t.MetadataQuerier=D,D.prototype.HasEntry=D.prototype.HasEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),!!Je(n,e,r)},D.prototype.GetIntEntry=D.prototype.GetIntEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),$e(n,e,r)},D.prototype.GetIntEntryArray=D.prototype.GetIntEntryArray=function(e,r,n){var o=this.ptr;d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),n&&typeof n=="object"&&(n=n.ptr),Ze(o,e,r,n)},D.prototype.GetDoubleEntry=D.prototype.GetDoubleEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),tr(n,e,r)},D.prototype.GetStringEntry=D.prototype.GetStringEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),a(er(n,e,r))},D.prototype.NumEntries=D.prototype.NumEntries=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),rr(r,e)},D.prototype.GetEntryName=D.prototype.GetEntryName=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),a(nr(n,e,r))},D.prototype.__destroy__=D.prototype.__destroy__=function(){or(this.ptr)},u.prototype=Object.create(f.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},t.Decoder=u,u.prototype.DecodeArrayToPointCloud=u.prototype.DecodeArrayToPointCloud=function(e,r,n){var o=this.ptr;return d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),G(ir(o,e,r,n),v)},u.prototype.DecodeArrayToMesh=u.prototype.DecodeArrayToMesh=function(e,r,n){var o=this.ptr;return d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),G(ar(o,e,r,n),v)},u.prototype.GetAttributeId=u.prototype.GetAttributeId=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),pr(n,e,r)},u.prototype.GetAttributeIdByName=u.prototype.GetAttributeIdByName=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),ur(n,e,r)},u.prototype.GetAttributeIdByMetadataEntry=u.prototype.GetAttributeIdByMetadataEntry=function(e,r,n){var o=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),n=n&&typeof n=="object"?n.ptr:V(n),sr(o,e,r,n)},u.prototype.GetAttribute=u.prototype.GetAttribute=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(cr(n,e,r),A)},u.prototype.GetAttributeByUniqueId=u.prototype.GetAttributeByUniqueId=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(yr(n,e,r),A)},u.prototype.GetMetadata=u.prototype.GetMetadata=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),G(lr(r,e),W)},u.prototype.GetAttributeMetadata=u.prototype.GetAttributeMetadata=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(mr(n,e,r),W)},u.prototype.GetFaceFromMesh=u.prototype.GetFaceFromMesh=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!fr(o,e,r,n)},u.prototype.GetTriangleStripsFromMesh=u.prototype.GetTriangleStripsFromMesh=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),dr(n,e,r)},u.prototype.GetTrianglesUInt16Array=u.prototype.GetTrianglesUInt16Array=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!br(o,e,r,n)},u.prototype.GetTrianglesUInt32Array=u.prototype.GetTrianglesUInt32Array=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!hr(o,e,r,n)},u.prototype.GetAttributeFloat=u.prototype.GetAttributeFloat=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Ar(o,e,r,n)},u.prototype.GetAttributeFloatForAllPoints=u.prototype.GetAttributeFloatForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Tr(o,e,r,n)},u.prototype.GetAttributeIntForAllPoints=u.prototype.GetAttributeIntForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Dr(o,e,r,n)},u.prototype.GetAttributeInt8ForAllPoints=u.prototype.GetAttributeInt8ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Ir(o,e,r,n)},u.prototype.GetAttributeUInt8ForAllPoints=u.prototype.GetAttributeUInt8ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!gr(o,e,r,n)},u.prototype.GetAttributeInt16ForAllPoints=u.prototype.GetAttributeInt16ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!vr(o,e,r,n)},u.prototype.GetAttributeUInt16ForAllPoints=u.prototype.GetAttributeUInt16ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Er(o,e,r,n)},u.prototype.GetAttributeInt32ForAllPoints=u.prototype.GetAttributeInt32ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Gr(o,e,r,n)},u.prototype.GetAttributeUInt32ForAllPoints=u.prototype.GetAttributeUInt32ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Or(o,e,r,n)},u.prototype.GetAttributeDataArrayForAllPoints=u.prototype.GetAttributeDataArrayForAllPoints=function(e,r,n,o,m){var b=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),o&&typeof o=="object"&&(o=o.ptr),m&&typeof m=="object"&&(m=m.ptr),!!jr(b,e,r,n,o,m)},u.prototype.SkipAttributeTransform=u.prototype.SkipAttributeTransform=function(e){var r=this.ptr;e&&typeof e=="object"&&(e=e.ptr),Pr(r,e)},u.prototype.GetEncodedGeometryType_Deprecated=u.prototype.GetEncodedGeometryType_Deprecated=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Rr(r,e)},u.prototype.DecodeBufferToPointCloud=u.prototype.DecodeBufferToPointCloud=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(Sr(n,e,r),v)},u.prototype.DecodeBufferToMesh=u.prototype.DecodeBufferToMesh=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(Mr(n,e,r),v)},u.prototype.__destroy__=u.prototype.__destroy__=function(){Nr(this.ptr)},function(){function e(){t.ATTRIBUTE_INVALID_TRANSFORM=Ur(),t.ATTRIBUTE_NO_TRANSFORM=Fr(),t.ATTRIBUTE_QUANTIZATION_TRANSFORM=Lr(),t.ATTRIBUTE_OCTAHEDRON_TRANSFORM=Cr(),t.INVALID=wr(),t.POSITION=zr(),t.NORMAL=Vr(),t.COLOR=Br(),t.TEX_COORD=Wr(),t.GENERIC=Qr(),t.INVALID_GEOMETRY_TYPE=xr(),t.POINT_CLOUD=Yr(),t.TRIANGULAR_MESH=Hr(),t.DT_INVALID=qr(),t.DT_INT8=kr(),t.DT_UINT8=Xr(),t.DT_INT16=Kr(),t.DT_UINT16=Jr(),t.DT_INT32=$r(),t.DT_UINT32=Zr(),t.DT_INT64=tn(),t.DT_UINT64=en(),t.DT_FLOAT32=rn(),t.DT_FLOAT64=nn(),t.DT_BOOL=on(),t.DT_TYPES_COUNT=_n(),t.OK=an(),t.DRACO_ERROR=pn(),t.IO_ERROR=un(),t.INVALID_PARAMETER=sn(),t.UNSUPPORTED_VERSION=cn(),t.UNKNOWN_VERSION=yn()}Rt?e():ct.unshift(e)}(),typeof t.onModuleParsed=="function"&&t.onModuleParsed(),t.Decoder.prototype.GetEncodedGeometryType=function(e){if(e.__class__&&e.__class__===t.DecoderBuffer)return t.Decoder.prototype.GetEncodedGeometryType_Deprecated(e);if(8>e.byteLength)return t.INVALID_GEOMETRY_TYPE;switch(e[7]){case 0:return t.POINT_CLOUD;case 1:return t.TRIANGULAR_MESH;default:return t.INVALID_GEOMETRY_TYPE}},c.ready}}();typeof nt=="object"&&typeof bt=="object"?bt.exports=dt:typeof define=="function"&&define.amd?define([],function(){return dt}):typeof nt=="object"&&(nt.DracoDecoderModule=dt)});export{Dn as a}; diff --git a/public/Cesium/Workers/chunk-37F5JSTI.js b/public/Cesium/Workers/chunk-37F5JSTI.js new file mode 100644 index 000000000..71f80b03c --- /dev/null +++ b/public/Cesium/Workers/chunk-37F5JSTI.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as wt}from"./chunk-GBYLG25F.js";import{a as C}from"./chunk-CYCB63OH.js";import{a as kt}from"./chunk-OFUUQVMR.js";import{a as Ct}from"./chunk-A56XVLQR.js";import{b as dt,c as _t,d as N}from"./chunk-RCV6KWXS.js";import{d as ht}from"./chunk-4IW2T6GF.js";import{a as M}from"./chunk-AU7IKHOH.js";import{a as s,c as lt,d as it,f as pt}from"./chunk-64RSHJUE.js";import{a as E}from"./chunk-3SSKC3VN.js";import{a as g}from"./chunk-LEYMRMBK.js";import{e as v}from"./chunk-VTAIKJXX.js";var yt=new s,vt=new s,Et=new s,Mt=new s,Nt=new s,Rt=new s(1,1,1),Pt=Math.cos,At=Math.sin;function x(n){n=n??pt.EMPTY_OBJECT;let m=n.radii??Rt,i=n.innerRadii??m,w=n.minimumClock??0,O=n.maximumClock??E.TWO_PI,P=n.minimumCone??0,A=n.maximumCone??E.PI,a=Math.round(n.stackPartitions??64),u=Math.round(n.slicePartitions??64),p=n.vertexFormat??C.DEFAULT;if(u<3)throw new g("options.slicePartitions cannot be less than three.");if(a<3)throw new g("options.stackPartitions cannot be less than three.");this._radii=s.clone(m),this._innerRadii=s.clone(i),this._minimumClock=w,this._maximumClock=O,this._minimumCone=P,this._maximumCone=A,this._stackPartitions=a,this._slicePartitions=u,this._vertexFormat=C.clone(p),this._offsetAttribute=n.offsetAttribute,this._workerName="createEllipsoidGeometry"}x.packedLength=2*s.packedLength+C.packedLength+7;x.pack=function(n,m,i){if(!v(n))throw new g("value is required");if(!v(m))throw new g("array is required");return i=i??0,s.pack(n._radii,m,i),i+=s.packedLength,s.pack(n._innerRadii,m,i),i+=s.packedLength,C.pack(n._vertexFormat,m,i),i+=C.packedLength,m[i++]=n._minimumClock,m[i++]=n._maximumClock,m[i++]=n._minimumCone,m[i++]=n._maximumCone,m[i++]=n._stackPartitions,m[i++]=n._slicePartitions,m[i]=n._offsetAttribute??-1,m};var bt=new s,xt=new s,Ot=new C,L={radii:bt,innerRadii:xt,vertexFormat:Ot,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};x.unpack=function(n,m,i){if(!v(n))throw new g("array is required");m=m??0;let w=s.unpack(n,m,bt);m+=s.packedLength;let O=s.unpack(n,m,xt);m+=s.packedLength;let P=C.unpack(n,m,Ot);m+=C.packedLength;let A=n[m++],a=n[m++],u=n[m++],p=n[m++],t=n[m++],o=n[m++],e=n[m];return v(i)?(i._radii=s.clone(w,i._radii),i._innerRadii=s.clone(O,i._innerRadii),i._vertexFormat=C.clone(P,i._vertexFormat),i._minimumClock=A,i._maximumClock=a,i._minimumCone=u,i._maximumCone=p,i._stackPartitions=t,i._slicePartitions=o,i._offsetAttribute=e===-1?void 0:e,i):(L.minimumClock=A,L.maximumClock=a,L.minimumCone=u,L.maximumCone=p,L.stackPartitions=t,L.slicePartitions=o,L.offsetAttribute=e===-1?void 0:e,new x(L))};x.createGeometry=function(n){let m=n._radii;if(m.x<=0||m.y<=0||m.z<=0)return;let i=n._innerRadii;if(i.x<=0||i.y<=0||i.z<=0)return;let w=n._minimumClock,O=n._maximumClock,P=n._minimumCone,A=n._maximumCone,a=n._vertexFormat,u=n._slicePartitions+1,p=n._stackPartitions+1;u=Math.round(u*Math.abs(O-w)/E.TWO_PI),p=Math.round(p*Math.abs(A-P)/E.PI),u<2&&(u=2),p<2&&(p=2);let t,o,e=0,z=[P],D=[w];for(t=0;t<p;t++)z.push(P+t*(A-P)/(p-1));for(z.push(A),o=0;o<u;o++)D.push(w+o*(O-w)/(u-1));D.push(O);let f=z.length,c=D.length,S=0,U=1,q=i.x!==m.x||i.y!==m.y||i.z!==m.z,H=!1,mt=!1,rt=!1;q&&(U=2,P>0&&(H=!0,S+=u-1),A<Math.PI&&(mt=!0,S+=u-1),(O-w)%E.TWO_PI?(rt=!0,S+=(p-1)*2+1):S+=1);let k=c*f*U,b=new Float64Array(k*3),J=new Array(k).fill(!1),ct=new Array(k).fill(!1),st=u*p*U,Tt=6*(st+S+1-(u+p)*U),r=kt.createTypedArray(st,Tt),V=a.normal?new Float32Array(k*3):void 0,Y=a.tangent?new Float32Array(k*3):void 0,j=a.bitangent?new Float32Array(k*3):void 0,X=a.st?new Float32Array(k*2):void 0,B=new Array(f),Z=new Array(f);for(t=0;t<f;t++)B[t]=At(z[t]),Z[t]=Pt(z[t]);let G=new Array(c),K=new Array(c);for(o=0;o<c;o++)K[o]=Pt(D[o]),G[o]=At(D[o]);for(t=0;t<f;t++)for(o=0;o<c;o++)b[e++]=m.x*B[t]*K[o],b[e++]=m.y*B[t]*G[o],b[e++]=m.z*Z[t];let Q=k/2;if(q)for(t=0;t<f;t++)for(o=0;o<c;o++)b[e++]=i.x*B[t]*K[o],b[e++]=i.y*B[t]*G[o],b[e++]=i.z*Z[t],J[Q]=!0,t>0&&t!==f-1&&o!==0&&o!==c-1&&(ct[Q]=!0),Q++;e=0;let T,F;for(t=1;t<f-2;t++)for(T=t*c,F=(t+1)*c,o=1;o<c-2;o++)r[e++]=F+o,r[e++]=F+o+1,r[e++]=T+o+1,r[e++]=F+o,r[e++]=T+o+1,r[e++]=T+o;if(q){let R=f*c;for(t=1;t<f-2;t++)for(T=R+t*c,F=R+(t+1)*c,o=1;o<c-2;o++)r[e++]=F+o,r[e++]=T+o,r[e++]=T+o+1,r[e++]=F+o,r[e++]=T+o+1,r[e++]=F+o+1}let h,l;if(q){if(H)for(l=f*c,t=1;t<c-2;t++)r[e++]=t,r[e++]=t+1,r[e++]=l+t+1,r[e++]=t,r[e++]=l+t+1,r[e++]=l+t;if(mt)for(h=f*c-c,l=f*c*U-c,t=1;t<c-2;t++)r[e++]=h+t+1,r[e++]=h+t,r[e++]=l+t,r[e++]=h+t+1,r[e++]=l+t,r[e++]=l+t+1}if(rt){for(t=1;t<f-2;t++)l=c*f+c*t,h=c*t,r[e++]=l,r[e++]=h+c,r[e++]=h,r[e++]=l,r[e++]=l+c,r[e++]=h+c;for(t=1;t<f-2;t++)l=c*f+c*(t+1)-1,h=c*(t+1)-1,r[e++]=h+c,r[e++]=l,r[e++]=h,r[e++]=h+c,r[e++]=l+c,r[e++]=l}let y=new Ct;a.position&&(y.position=new N({componentDatatype:M.DOUBLE,componentsPerAttribute:3,values:b}));let at=0,$=0,I=0,tt=0,Ft=k/2,ft,ut=it.fromCartesian3(m),Lt=it.fromCartesian3(i);if(a.st||a.normal||a.tangent||a.bitangent){for(t=0;t<k;t++){ft=J[t]?Lt:ut;let R=s.fromArray(b,t*3,yt),_=ft.geodeticSurfaceNormal(R,vt);if(ct[t]&&s.negate(_,_),a.st){let d=lt.negate(_,Nt);X[at++]=Math.atan2(d.y,d.x)/E.TWO_PI+.5,X[at++]=Math.asin(_.z)/Math.PI+.5}if(a.normal&&(V[$++]=_.x,V[$++]=_.y,V[$++]=_.z),a.tangent||a.bitangent){let d=Et,nt=0,et;if(J[t]&&(nt=Ft),!H&&t>=nt&&t<nt+c*2?et=s.UNIT_X:et=s.UNIT_Z,s.cross(et,_,d),s.normalize(d,d),a.tangent&&(Y[I++]=d.x,Y[I++]=d.y,Y[I++]=d.z),a.bitangent){let W=s.cross(_,d,Mt);s.normalize(W,W),j[tt++]=W.x,j[tt++]=W.y,j[tt++]=W.z}}}a.st&&(y.st=new N({componentDatatype:M.FLOAT,componentsPerAttribute:2,values:X})),a.normal&&(y.normal=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:V})),a.tangent&&(y.tangent=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:Y})),a.bitangent&&(y.bitangent=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:j}))}if(v(n._offsetAttribute)){let R=b.length,_=n._offsetAttribute===wt.NONE?0:1,d=new Uint8Array(R/3).fill(_);y.applyOffset=new N({componentDatatype:M.UNSIGNED_BYTE,componentsPerAttribute:1,values:d})}return new _t({attributes:y,indices:r,primitiveType:dt.TRIANGLES,boundingSphere:ht.fromEllipsoid(ut),offsetAttribute:n._offsetAttribute})};var ot;x.getUnitEllipsoid=function(){return v(ot)||(ot=x.createGeometry(new x({radii:new s(1,1,1),vertexFormat:C.POSITION_ONLY}))),ot};var Kt=x;export{Kt as a}; diff --git a/public/Cesium/Workers/chunk-3SSKC3VN.js b/public/Cesium/Workers/chunk-3SSKC3VN.js new file mode 100644 index 000000000..b4780c541 --- /dev/null +++ b/public/Cesium/Workers/chunk-3SSKC3VN.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as n,b as a}from"./chunk-LEYMRMBK.js";import{c as E,d as I,e as o}from"./chunk-VTAIKJXX.js";var d=E((_,m)=>{var f=function(t){t==null&&(t=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,t.constructor==Array?this.init_by_array(t,t.length):this.init_seed(t)};f.prototype.init_seed=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((t&4294901760)>>>16)*1812433253<<16)+(t&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};f.prototype.init_by_array=function(t,i){var e,s,h;for(this.init_seed(19650218),e=1,s=0,h=this.N>i?this.N:i;h;h--){var u=this.mt[e-1]^this.mt[e-1]>>>30;this.mt[e]=(this.mt[e]^(((u&4294901760)>>>16)*1664525<<16)+(u&65535)*1664525)+t[s]+s,this.mt[e]>>>=0,e++,s++,e>=this.N&&(this.mt[0]=this.mt[this.N-1],e=1),s>=i&&(s=0)}for(h=this.N-1;h;h--){var u=this.mt[e-1]^this.mt[e-1]>>>30;this.mt[e]=(this.mt[e]^(((u&4294901760)>>>16)*1566083941<<16)+(u&65535)*1566083941)-e,this.mt[e]>>>=0,e++,e>=this.N&&(this.mt[0]=this.mt[this.N-1],e=1)}this.mt[0]=2147483648};f.prototype.random_int=function(){var t,i=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var e;for(this.mti==this.N+1&&this.init_seed(5489),e=0;e<this.N-this.M;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+this.M]^t>>>1^i[t&1];for(;e<this.N-1;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+(this.M-this.N)]^t>>>1^i[t&1];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^i[t&1],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0};f.prototype.random_int31=function(){return this.random_int()>>>1};f.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};f.prototype.random=function(){return this.random_int()*(1/4294967296)};f.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};f.prototype.random_long=function(){var t=this.random_int()>>>5,i=this.random_int()>>>6;return(t*67108864+i)*(1/9007199254740992)};m.exports=f});var w=I(d(),1);var r={};r.EPSILON1=.1;r.EPSILON2=.01;r.EPSILON3=.001;r.EPSILON4=1e-4;r.EPSILON5=1e-5;r.EPSILON6=1e-6;r.EPSILON7=1e-7;r.EPSILON8=1e-8;r.EPSILON9=1e-9;r.EPSILON10=1e-10;r.EPSILON11=1e-11;r.EPSILON12=1e-12;r.EPSILON13=1e-13;r.EPSILON14=1e-14;r.EPSILON15=1e-15;r.EPSILON16=1e-16;r.EPSILON17=1e-17;r.EPSILON18=1e-18;r.EPSILON19=1e-19;r.EPSILON20=1e-20;r.EPSILON21=1e-21;r.GRAVITATIONALPARAMETER=3986004418e5;r.SOLAR_RADIUS=6955e5;r.LUNAR_RADIUS=1737400;r.SIXTY_FOUR_KILOBYTES=64*1024;r.FOUR_GIGABYTES=4*1024*1024*1024;r.sign=Math.sign??function(i){return i=+i,i===0||i!==i?i:i>0?1:-1};r.signNotZero=function(t){return t<0?-1:1};r.toSNorm=function(t,i){return i=i??255,Math.round((r.clamp(t,-1,1)*.5+.5)*i)};r.fromSNorm=function(t,i){return i=i??255,r.clamp(t,0,i)/i*2-1};r.normalize=function(t,i,e){return e=Math.max(e-i,0),e===0?0:r.clamp((t-i)/e,0,1)};r.sinh=Math.sinh??function(i){return(Math.exp(i)-Math.exp(-i))/2};r.cosh=Math.cosh??function(i){return(Math.exp(i)+Math.exp(-i))/2};r.lerp=function(t,i,e){return(1-e)*t+e*i};r.PI=Math.PI;r.ONE_OVER_PI=1/Math.PI;r.PI_OVER_TWO=Math.PI/2;r.PI_OVER_THREE=Math.PI/3;r.PI_OVER_FOUR=Math.PI/4;r.PI_OVER_SIX=Math.PI/6;r.THREE_PI_OVER_TWO=3*Math.PI/2;r.TWO_PI=2*Math.PI;r.ONE_OVER_TWO_PI=1/(2*Math.PI);r.RADIANS_PER_DEGREE=Math.PI/180;r.DEGREES_PER_RADIAN=180/Math.PI;r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600;r.toRadians=function(t){if(!o(t))throw new n("degrees is required.");return t*r.RADIANS_PER_DEGREE};r.toDegrees=function(t){if(!o(t))throw new n("radians is required.");return t*r.DEGREES_PER_RADIAN};r.convertLongitudeRange=function(t){if(!o(t))throw new n("angle is required.");let i=r.TWO_PI,e=t-Math.floor(t/i)*i;return e<-Math.PI?e+i:e>=Math.PI?e-i:e};r.clampToLatitudeRange=function(t){if(!o(t))throw new n("angle is required.");return r.clamp(t,-1*r.PI_OVER_TWO,r.PI_OVER_TWO)};r.negativePiToPi=function(t){if(!o(t))throw new n("angle is required.");return t>=-r.PI&&t<=r.PI?t:r.zeroToTwoPi(t+r.PI)-r.PI};r.zeroToTwoPi=function(t){if(!o(t))throw new n("angle is required.");if(t>=0&&t<=r.TWO_PI)return t;let i=r.mod(t,r.TWO_PI);return Math.abs(i)<r.EPSILON14&&Math.abs(t)>r.EPSILON14?r.TWO_PI:i};r.mod=function(t,i){if(!o(t))throw new n("m is required.");if(!o(i))throw new n("n is required.");if(i===0)throw new n("divisor cannot be 0.");return r.sign(t)===r.sign(i)&&Math.abs(t)<Math.abs(i)?t:(t%i+i)%i};r.equalsEpsilon=function(t,i,e,s){if(!o(t))throw new n("left is required.");if(!o(i))throw new n("right is required.");e=e??0,s=s??e;let h=Math.abs(t-i);return h<=s||h<=e*Math.max(Math.abs(t),Math.abs(i))};r.lessThan=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i<-e};r.lessThanOrEquals=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i<e};r.greaterThan=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i>e};r.greaterThanOrEquals=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i>-e};var c=[1];r.factorial=function(t){if(typeof t!="number"||t<0)throw new n("A number greater than or equal to 0 is required.");let i=c.length;if(t>=i){let e=c[i-1];for(let s=i;s<=t;s++){let h=e*s;c.push(h),e=h}}return c[t]};r.incrementWrap=function(t,i,e){if(e=e??0,!o(t))throw new n("n is required.");if(i<=e)throw new n("maximumValue must be greater than minimumValue.");return++t,t>i&&(t=e),t};r.isPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>4294967295)throw new n("A number between 0 and (2^32)-1 is required.");return t!==0&&(t&t-1)===0};r.nextPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>2147483648)throw new n("A number between 0 and 2^31 is required.");return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t};r.previousPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>4294967295)throw new n("A number between 0 and (2^32)-1 is required.");return t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t|=t>>32,t=(t>>>0)-(t>>>1),t};r.clamp=function(t,i,e){return a.typeOf.number("value",t),a.typeOf.number("min",i),a.typeOf.number("max",e),t<i?i:t>e?e:t};var P=new w.default;r.setRandomNumberSeed=function(t){if(!o(t))throw new n("seed is required.");P=new w.default(t)};r.nextRandomNumber=function(){return P.random()};r.randomBetween=function(t,i){return r.nextRandomNumber()*(i-t)+t};r.acosClamped=function(t){if(!o(t))throw new n("value is required.");return Math.acos(r.clamp(t,-1,1))};r.asinClamped=function(t){if(!o(t))throw new n("value is required.");return Math.asin(r.clamp(t,-1,1))};r.chordLength=function(t,i){if(!o(t))throw new n("angle is required.");if(!o(i))throw new n("radius is required.");return 2*i*Math.sin(t*.5)};r.logBase=function(t,i){if(!o(t))throw new n("number is required.");if(!o(i))throw new n("base is required.");return Math.log(t)/Math.log(i)};r.cbrt=Math.cbrt??function(i){let e=Math.pow(Math.abs(i),.3333333333333333);return i<0?-e:e};r.log2=Math.log2??function(i){return Math.log(i)*Math.LOG2E};r.fog=function(t,i){let e=t*i;return 1-Math.exp(-(e*e))};r.fastApproximateAtan=function(t){return a.typeOf.number("x",t),t*(-.1784*Math.abs(t)-.0663*t*t+1.0301)};r.fastApproximateAtan2=function(t,i){a.typeOf.number("x",t),a.typeOf.number("y",i);let e,s=Math.abs(t);e=Math.abs(i);let h=Math.max(s,e);e=Math.min(s,e);let u=e/h;if(isNaN(u))throw new n("either x or y must be nonzero");return s=r.fastApproximateAtan(u),s=Math.abs(i)>Math.abs(t)?r.PI_OVER_TWO-s:s,s=t<0?r.PI-s:s,s=i<0?-s:s,s};var M=r;export{M as a}; diff --git a/public/Cesium/Workers/chunk-3W4GT7KQ.js b/public/Cesium/Workers/chunk-3W4GT7KQ.js new file mode 100644 index 000000000..213d7ec6b --- /dev/null +++ b/public/Cesium/Workers/chunk-3W4GT7KQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-3SSKC3VN.js";import{b as g}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var d=C.EPSILON10;function x(e,r,h,n){if(g.defined("equalsEpsilon",r),!f(e))return;h=h??!1;let c=f(n),l=e.length;if(l<2)return e;let i,s=e[0],o,t,p=0,m=-1;for(i=1;i<l;++i)o=e[i],r(s,o,d)?(f(t)||(t=e.slice(0,i),p=i-1,m=0),c&&n.push(i)):(f(t)&&(t.push(o),p=i,c&&(m=n.length)),s=o);return h&&r(e[0],e[l-1],d)&&(c&&(f(t)?n.splice(m,0,p):n.push(l-1)),f(t)?t.length-=1:t=e.slice(0,-1)),f(t)?t:e}var k=x;export{k as a}; diff --git a/public/Cesium/Workers/chunk-4IW2T6GF.js b/public/Cesium/Workers/chunk-4IW2T6GF.js new file mode 100644 index 000000000..a3dd35a1e --- /dev/null +++ b/public/Cesium/Workers/chunk-4IW2T6GF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as Z,h as A}from"./chunk-PSPPBZWI.js";import{a as n,b as v,d as N,e as _}from"./chunk-64RSHJUE.js";import{a as on}from"./chunk-3SSKC3VN.js";import{a as en,b as h}from"./chunk-LEYMRMBK.js";import{e as x}from"./chunk-VTAIKJXX.js";function I(e){this._ellipsoid=e??N.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(I.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});I.prototype.project=function(e,t){let o=this._semimajorAxis,c=e.longitude*o,r=e.latitude*o,d=e.height;return x(t)?(t.x=c,t.y=r,t.z=d,t):new n(c,r,d)};I.prototype.unproject=function(e,t){if(!x(e))throw new en("cartesian is required");let o=this._oneOverSemimajorAxis,c=e.x*o,r=e.y*o,d=e.z;return x(t)?(t.longitude=c,t.latitude=r,t.height=d,t):new v(c,r,d)};var k=I;var sn={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},U=Object.freeze(sn);function mn(e,t){this.start=e??0,this.stop=t??0}var cn=mn;function a(e,t){this.center=n.clone(e??n.ZERO),this.radius=t??0}var X=new n,F=new n,Y=new n,J=new n,K=new n,Q=new n,$=new n,b=new n,L=new n,H=new n,nn=new n,tn=new n,un=4/3*on.PI;a.fromPoints=function(e,t){if(x(t)||(t=new a),!x(e)||e.length===0)return t.center=n.clone(n.ZERO,t.center),t.radius=0,t;let o=n.clone(e[0],$),c=n.clone(o,X),r=n.clone(o,F),d=n.clone(o,Y),f=n.clone(o,J),s=n.clone(o,K),m=n.clone(o,Q),z=e.length,y;for(y=1;y<z;y++){n.clone(e[y],o);let C=o.x,M=o.y,w=o.z;C<c.x&&n.clone(o,c),C>f.x&&n.clone(o,f),M<r.y&&n.clone(o,r),M>s.y&&n.clone(o,s),w<d.z&&n.clone(o,d),w>m.z&&n.clone(o,m)}let u=n.magnitudeSquared(n.subtract(f,c,b)),i=n.magnitudeSquared(n.subtract(s,r,b)),B=n.magnitudeSquared(n.subtract(m,d,b)),T=c,q=f,O=u;i>O&&(O=i,T=r,q=s),B>O&&(O=B,T=d,q=m);let p=L;p.x=(T.x+q.x)*.5,p.y=(T.y+q.y)*.5,p.z=(T.z+q.z)*.5;let S=n.magnitudeSquared(n.subtract(q,p,b)),l=Math.sqrt(S),j=H;j.x=c.x,j.y=r.y,j.z=d.z;let P=nn;P.x=f.x,P.y=s.y,P.z=m.z;let E=n.midpoint(j,P,tn),D=0;for(y=0;y<z;y++){n.clone(e[y],o);let C=n.magnitude(n.subtract(o,E,b));C>D&&(D=C);let M=n.magnitudeSquared(n.subtract(o,p,b));if(M>S){let w=Math.sqrt(M);l=(l+w)*.5,S=l*l;let g=w-l;p.x=(l*p.x+g*o.x)/w,p.y=(l*p.y+g*o.y)/w,p.z=(l*p.z+g*o.z)/w}}return l<D?(n.clone(p,t.center),t.radius=l):(n.clone(E,t.center),t.radius=D),t};var rn=new k,xn=new n,yn=new n,G=new v,V=new v;a.fromRectangle2D=function(e,t,o){return a.fromRectangleWithHeights2D(e,t,0,0,o)};a.fromRectangleWithHeights2D=function(e,t,o,c,r){if(x(r)||(r=new a),!x(e))return r.center=n.clone(n.ZERO,r.center),r.radius=0,r;rn._ellipsoid=N.default,t=t??rn,A.southwest(e,G),G.height=o,A.northeast(e,V),V.height=c;let d=t.project(G,xn),f=t.project(V,yn),s=f.x-d.x,m=f.y-d.y,z=f.z-d.z;r.radius=Math.sqrt(s*s+m*m+z*z)*.5;let y=r.center;return y.x=d.x+s*.5,y.y=d.y+m*.5,y.z=d.z+z*.5,r};var ln=[];a.fromRectangle3D=function(e,t,o,c){if(t=t??N.default,o=o??0,x(c)||(c=new a),!x(e))return c.center=n.clone(n.ZERO,c.center),c.radius=0,c;let r=A.subsample(e,t,o,ln);return a.fromPoints(r,c)};a.fromVertices=function(e,t,o,c){if(x(c)||(c=new a),!x(e)||e.length===0)return c.center=n.clone(n.ZERO,c.center),c.radius=0,c;t=t??n.ZERO,o=o??3,h.typeOf.number.greaterThanOrEquals("stride",o,3);let r=$;r.x=e[0]+t.x,r.y=e[1]+t.y,r.z=e[2]+t.z;let d=n.clone(r,X),f=n.clone(r,F),s=n.clone(r,Y),m=n.clone(r,J),z=n.clone(r,K),y=n.clone(r,Q),u=e.length,i;for(i=0;i<u;i+=o){let w=e[i]+t.x,g=e[i+1]+t.y,R=e[i+2]+t.z;r.x=w,r.y=g,r.z=R,w<d.x&&n.clone(r,d),w>m.x&&n.clone(r,m),g<f.y&&n.clone(r,f),g>z.y&&n.clone(r,z),R<s.z&&n.clone(r,s),R>y.z&&n.clone(r,y)}let B=n.magnitudeSquared(n.subtract(m,d,b)),T=n.magnitudeSquared(n.subtract(z,f,b)),q=n.magnitudeSquared(n.subtract(y,s,b)),O=d,p=m,S=B;T>S&&(S=T,O=f,p=z),q>S&&(S=q,O=s,p=y);let l=L;l.x=(O.x+p.x)*.5,l.y=(O.y+p.y)*.5,l.z=(O.z+p.z)*.5;let j=n.magnitudeSquared(n.subtract(p,l,b)),P=Math.sqrt(j),E=H;E.x=d.x,E.y=f.y,E.z=s.z;let D=nn;D.x=m.x,D.y=z.y,D.z=y.z;let C=n.midpoint(E,D,tn),M=0;for(i=0;i<u;i+=o){r.x=e[i]+t.x,r.y=e[i+1]+t.y,r.z=e[i+2]+t.z;let w=n.magnitude(n.subtract(r,C,b));w>M&&(M=w);let g=n.magnitudeSquared(n.subtract(r,l,b));if(g>j){let R=Math.sqrt(g);P=(P+R)*.5,j=P*P;let W=R-P;l.x=(P*l.x+W*r.x)/R,l.y=(P*l.y+W*r.y)/R,l.z=(P*l.z+W*r.z)/R}}return P<M?(n.clone(l,c.center),c.radius=P):(n.clone(C,c.center),c.radius=M),c};a.fromEncodedCartesianVertices=function(e,t,o){if(x(o)||(o=new a),!x(e)||!x(t)||e.length!==t.length||e.length===0)return o.center=n.clone(n.ZERO,o.center),o.radius=0,o;let c=$;c.x=e[0]+t[0],c.y=e[1]+t[1],c.z=e[2]+t[2];let r=n.clone(c,X),d=n.clone(c,F),f=n.clone(c,Y),s=n.clone(c,J),m=n.clone(c,K),z=n.clone(c,Q),y=e.length,u;for(u=0;u<y;u+=3){let M=e[u]+t[u],w=e[u+1]+t[u+1],g=e[u+2]+t[u+2];c.x=M,c.y=w,c.z=g,M<r.x&&n.clone(c,r),M>s.x&&n.clone(c,s),w<d.y&&n.clone(c,d),w>m.y&&n.clone(c,m),g<f.z&&n.clone(c,f),g>z.z&&n.clone(c,z)}let i=n.magnitudeSquared(n.subtract(s,r,b)),B=n.magnitudeSquared(n.subtract(m,d,b)),T=n.magnitudeSquared(n.subtract(z,f,b)),q=r,O=s,p=i;B>p&&(p=B,q=d,O=m),T>p&&(p=T,q=f,O=z);let S=L;S.x=(q.x+O.x)*.5,S.y=(q.y+O.y)*.5,S.z=(q.z+O.z)*.5;let l=n.magnitudeSquared(n.subtract(O,S,b)),j=Math.sqrt(l),P=H;P.x=r.x,P.y=d.y,P.z=f.z;let E=nn;E.x=s.x,E.y=m.y,E.z=z.z;let D=n.midpoint(P,E,tn),C=0;for(u=0;u<y;u+=3){c.x=e[u]+t[u],c.y=e[u+1]+t[u+1],c.z=e[u+2]+t[u+2];let M=n.magnitude(n.subtract(c,D,b));M>C&&(C=M);let w=n.magnitudeSquared(n.subtract(c,S,b));if(w>l){let g=Math.sqrt(w);j=(j+g)*.5,l=j*j;let R=g-j;S.x=(j*S.x+R*c.x)/g,S.y=(j*S.y+R*c.y)/g,S.z=(j*S.z+R*c.z)/g}}return j<C?(n.clone(S,o.center),o.radius=j):(n.clone(D,o.center),o.radius=C),o};a.fromCornerPoints=function(e,t,o){h.typeOf.object("corner",e),h.typeOf.object("oppositeCorner",t),x(o)||(o=new a);let c=n.midpoint(e,t,o.center);return o.radius=n.distance(c,t),o};a.fromEllipsoid=function(e,t){return h.typeOf.object("ellipsoid",e),x(t)||(t=new a),n.clone(n.ZERO,t.center),t.radius=e.maximumRadius,t};var pn=new n;a.fromBoundingSpheres=function(e,t){if(x(t)||(t=new a),!x(e)||e.length===0)return t.center=n.clone(n.ZERO,t.center),t.radius=0,t;let o=e.length;if(o===1)return a.clone(e[0],t);if(o===2)return a.union(e[0],e[1],t);let c=[],r;for(r=0;r<o;r++)c.push(e[r].center);t=a.fromPoints(c,t);let d=t.center,f=t.radius;for(r=0;r<o;r++){let s=e[r];f=Math.max(f,n.distance(d,s.center,pn)+s.radius)}return t.radius=f,t};var hn=new n,zn=new n,Sn=new n;a.fromOrientedBoundingBox=function(e,t){h.defined("orientedBoundingBox",e),x(t)||(t=new a);let o=e.halfAxes,c=_.getColumn(o,0,hn),r=_.getColumn(o,1,zn),d=_.getColumn(o,2,Sn);return n.add(c,r,c),n.add(c,d,c),t.center=n.clone(e.center,t.center),t.radius=n.magnitude(c),t};var wn=new n,Pn=new n;a.fromTransformation=function(e,t){h.typeOf.object("transformation",e),x(t)||(t=new a);let o=Z.getTranslation(e,wn),c=Z.getScale(e,Pn),r=.5*n.magnitude(c);return t.center=n.clone(o,t.center),t.radius=r,t};a.clone=function(e,t){if(x(e))return x(t)?(t.center=n.clone(e.center,t.center),t.radius=e.radius,t):new a(e.center,e.radius)};a.packedLength=4;a.pack=function(e,t,o){h.typeOf.object("value",e),h.defined("array",t),o=o??0;let c=e.center;return t[o++]=c.x,t[o++]=c.y,t[o++]=c.z,t[o]=e.radius,t};a.unpack=function(e,t,o){h.defined("array",e),t=t??0,x(o)||(o=new a);let c=o.center;return c.x=e[t++],c.y=e[t++],c.z=e[t++],o.radius=e[t],o};var gn=new n,On=new n;a.union=function(e,t,o){h.typeOf.object("left",e),h.typeOf.object("right",t),x(o)||(o=new a);let c=e.center,r=e.radius,d=t.center,f=t.radius,s=n.subtract(d,c,gn),m=n.magnitude(s);if(r>=m+f)return e.clone(o),o;if(f>=m+r)return t.clone(o),o;let z=(r+m+f)*.5,y=n.multiplyByScalar(s,(-r+z)/m,On);return n.add(y,c,y),n.clone(y,o.center),o.radius=z,o};var jn=new n;a.expand=function(e,t,o){h.typeOf.object("sphere",e),h.typeOf.object("point",t),o=a.clone(e,o);let c=n.magnitude(n.subtract(t,o.center,jn));return c>o.radius&&(o.radius=c),o};a.intersectPlane=function(e,t){h.typeOf.object("sphere",e),h.typeOf.object("plane",t);let o=e.center,c=e.radius,r=t.normal,d=n.dot(r,o)+t.distance;return d<-c?U.OUTSIDE:d<c?U.INTERSECTING:U.INSIDE};a.transform=function(e,t,o){return h.typeOf.object("sphere",e),h.typeOf.object("transform",t),x(o)||(o=new a),o.center=Z.multiplyByPoint(t,e.center,o.center),o.radius=Z.getMaximumScale(t)*e.radius,o};var bn=new n;a.distanceSquaredTo=function(e,t){h.typeOf.object("sphere",e),h.typeOf.object("cartesian",t);let o=n.subtract(e.center,t,bn),c=n.magnitude(o)-e.radius;return c<=0?0:c*c};a.transformWithoutScale=function(e,t,o){return h.typeOf.object("sphere",e),h.typeOf.object("transform",t),x(o)||(o=new a),o.center=Z.multiplyByPoint(t,e.center,o.center),o.radius=e.radius,o};var qn=new n;a.computePlaneDistances=function(e,t,o,c){h.typeOf.object("sphere",e),h.typeOf.object("position",t),h.typeOf.object("direction",o),x(c)||(c=new cn);let r=n.subtract(e.center,t,qn),d=n.dot(o,r);return c.start=d-e.radius,c.stop=d+e.radius,c};var an=new n,Mn=new n,Tn=new n,Cn=new n,Rn=new n,En=new v,fn=new Array(8);for(let e=0;e<8;++e)fn[e]=new n;var dn=new k;a.projectTo2D=function(e,t,o){h.typeOf.object("sphere",e),dn._ellipsoid=N.default,t=t??dn;let c=t.ellipsoid,r=e.center,d=e.radius,f;n.equals(r,n.ZERO)?f=n.clone(n.UNIT_X,an):f=c.geodeticSurfaceNormal(r,an);let s=n.cross(n.UNIT_Z,f,Mn);n.normalize(s,s);let m=n.cross(f,s,Tn);n.normalize(m,m),n.multiplyByScalar(f,d,f),n.multiplyByScalar(m,d,m),n.multiplyByScalar(s,d,s);let z=n.negate(m,Rn),y=n.negate(s,Cn),u=fn,i=u[0];n.add(f,m,i),n.add(i,s,i),i=u[1],n.add(f,m,i),n.add(i,y,i),i=u[2],n.add(f,z,i),n.add(i,y,i),i=u[3],n.add(f,z,i),n.add(i,s,i),n.negate(f,f),i=u[4],n.add(f,m,i),n.add(i,s,i),i=u[5],n.add(f,m,i),n.add(i,y,i),i=u[6],n.add(f,z,i),n.add(i,y,i),i=u[7],n.add(f,z,i),n.add(i,s,i);let B=u.length;for(let p=0;p<B;++p){let S=u[p];n.add(r,S,S);let l=c.cartesianToCartographic(S,En);t.project(l,S)}o=a.fromPoints(u,o),r=o.center;let T=r.x,q=r.y,O=r.z;return r.x=O,r.y=T,r.z=q,o};a.isOccluded=function(e,t){return h.typeOf.object("sphere",e),h.typeOf.object("occluder",t),!t.isBoundingSphereVisible(e)};a.equals=function(e,t){return e===t||x(e)&&x(t)&&n.equals(e.center,t.center)&&e.radius===t.radius};a.prototype.intersectPlane=function(e){return a.intersectPlane(this,e)};a.prototype.distanceSquaredTo=function(e){return a.distanceSquaredTo(this,e)};a.prototype.computePlaneDistances=function(e,t,o){return a.computePlaneDistances(this,e,t,o)};a.prototype.isOccluded=function(e){return a.isOccluded(this,e)};a.prototype.equals=function(e){return a.equals(this,e)};a.prototype.clone=function(e){return a.clone(this,e)};a.prototype.volume=function(){let e=this.radius;return un*e*e*e};var Ln=a;export{k as a,U as b,cn as c,Ln as d}; diff --git a/public/Cesium/Workers/chunk-5YEWO3HT.js b/public/Cesium/Workers/chunk-5YEWO3HT.js new file mode 100644 index 000000000..94f5fcec1 --- /dev/null +++ b/public/Cesium/Workers/chunk-5YEWO3HT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z}from"./chunk-4IW2T6GF.js";import{h as I,i as b}from"./chunk-PSPPBZWI.js";import{a as W,b as O,d as L}from"./chunk-64RSHJUE.js";import{a as m}from"./chunk-3SSKC3VN.js";import{a as v}from"./chunk-LEYMRMBK.js";import{e as k}from"./chunk-VTAIKJXX.js";var Z=Math.cos,B=Math.sin,p=Math.sqrt,N={};N.computePosition=function(t,M,g,u,G,h,a){let e=M.radiiSquared,i=t.nwCorner,r=t.boundingRectangle,n=i.latitude-t.granYCos*u+G*t.granXSin,d=Z(n),X=B(n),Y=e.z*X,s=i.longitude+u*t.granYSin+G*t.granXCos,S=d*Z(s),f=d*B(s),w=e.x*S,R=e.y*f,_=p(w*S+R*f+Y*X);if(h.x=w/_,h.y=R/_,h.z=Y/_,g){let o=t.stNwCorner;k(o)?(n=o.latitude-t.stGranYCos*u+G*t.stGranXSin,s=o.longitude+u*t.stGranYSin+G*t.stGranXCos,a.x=(s-t.stWest)*t.lonScalar,a.y=(n-t.stSouth)*t.latScalar):(a.x=(s-r.west)*t.lonScalar,a.y=(n-r.south)*t.latScalar)}};var A=new b,l=new W,F=new O,j=new W,y=new z;function D(t,M,g,u,G,h,a){let e=Math.cos(M),i=u*e,r=g*e,n=Math.sin(M),d=u*n,X=g*n;y._ellipsoid=L.default,l=y.project(t,l),l=W.subtract(l,j,l);let Y=b.fromRotation(M,A);l=b.multiplyByVector(Y,l,l),l=W.add(l,j,l),t=y.unproject(l,t),h-=1,a-=1;let s=t.latitude,S=s+h*X,f=s-i*a,w=s-i*a+h*X,R=Math.max(s,S,f,w),_=Math.min(s,S,f,w),o=t.longitude,E=o+h*r,T=o+a*d,V=o+a*d+h*r,q=Math.max(o,E,T,V),x=Math.min(o,E,T,V);return{north:R,south:_,east:q,west:x,granYCos:i,granYSin:d,granXCos:r,granXSin:X,nwCorner:t}}N.computeOptions=function(t,M,g,u,G,h,a){let e=t.east,i=t.west,r=t.north,n=t.south,d=!1,X=!1;r===m.PI_OVER_TWO&&(d=!0),n===-m.PI_OVER_TWO&&(X=!0);let Y,s=r-n;i>e?Y=m.TWO_PI-i+e:Y=e-i;let S=Math.ceil(Y/M)+1,f=Math.ceil(s/M)+1,w=Y/(S-1),R=s/(f-1),_=I.northwest(t,h),o=I.center(t,F);(g!==0||u!==0)&&(o.longitude<_.longitude&&(o.longitude+=m.TWO_PI),y._ellipsoid=L.default,j=y.project(o,j));let E=R,T=w,V=0,q=0,x=I.clone(t,G),c={granYCos:E,granYSin:V,granXCos:T,granXSin:q,nwCorner:_,boundingRectangle:x,width:S,height:f,northCap:d,southCap:X};if(g!==0){let C=D(_,g,w,R,o,S,f);if(r=C.north,n=C.south,e=C.east,i=C.west,r<-m.PI_OVER_TWO||r>m.PI_OVER_TWO||n<-m.PI_OVER_TWO||n>m.PI_OVER_TWO)throw new v("Rotated rectangle is invalid. It crosses over either the north or south pole.");c.granYCos=C.granYCos,c.granYSin=C.granYSin,c.granXCos=C.granXCos,c.granXSin=C.granXSin,x.north=r,x.south=n,x.east=e,x.west=i}if(u!==0){g=g-u;let C=I.northwest(x,a),P=D(C,g,w,R,o,S,f);c.stGranYCos=P.granYCos,c.stGranXCos=P.granXCos,c.stGranYSin=P.granYSin,c.stGranXSin=P.granXSin,c.stNwCorner=C,c.stWest=P.west,c.stSouth=P.south}return c};var st=N;export{st as a}; diff --git a/public/Cesium/Workers/chunk-64RSHJUE.js b/public/Cesium/Workers/chunk-64RSHJUE.js new file mode 100644 index 000000000..65732a7ee --- /dev/null +++ b/public/Cesium/Workers/chunk-64RSHJUE.js @@ -0,0 +1,28 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as h}from"./chunk-3SSKC3VN.js";import{a as g,b as c}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function f(n,e,o){this.x=n??0,this.y=e??0,this.z=o??0}f.fromSpherical=function(n,e){c.typeOf.object("spherical",n),u(e)||(e=new f);let o=n.clock,t=n.cone,i=n.magnitude??1,p=i*Math.sin(t);return e.x=p*Math.cos(o),e.y=p*Math.sin(o),e.z=i*Math.cos(t),e};f.fromElements=function(n,e,o,t){return u(t)?(t.x=n,t.y=e,t.z=o,t):new f(n,e,o)};f.clone=function(n,e){if(u(n))return u(e)?(e.x=n.x,e.y=n.y,e.z=n.z,e):new f(n.x,n.y,n.z)};f.fromCartesian4=f.clone;f.packedLength=3;f.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n.x,e[o++]=n.y,e[o]=n.z,e};f.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new f),o.x=n[e++],o.y=n[e++],o.z=n[e],o};f.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*3;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 3 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)f.pack(n[i],e,i*3);return e};f.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,3),n.length%3!==0)throw new g("array length must be a multiple of 3.");let o=n.length;u(e)?e.length=o/3:e=new Array(o/3);for(let t=0;t<o;t+=3){let i=t/3;e[i]=f.unpack(n,t,e[i])}return e};f.fromArray=f.unpack;f.maximumComponent=function(n){return c.typeOf.object("cartesian",n),Math.max(n.x,n.y,n.z)};f.minimumComponent=function(n){return c.typeOf.object("cartesian",n),Math.min(n.x,n.y,n.z)};f.minimumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.min(n.x,e.x),o.y=Math.min(n.y,e.y),o.z=Math.min(n.z,e.z),o};f.maximumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.max(n.x,e.x),o.y=Math.max(n.y,e.y),o.z=Math.max(n.z,e.z),o};f.clamp=function(n,e,o,t){c.typeOf.object("value",n),c.typeOf.object("min",e),c.typeOf.object("max",o),c.typeOf.object("result",t);let i=h.clamp(n.x,e.x,o.x),p=h.clamp(n.y,e.y,o.y),d=h.clamp(n.z,e.z,o.z);return t.x=i,t.y=p,t.z=d,t};f.magnitudeSquared=function(n){return c.typeOf.object("cartesian",n),n.x*n.x+n.y*n.y+n.z*n.z};f.magnitude=function(n){return Math.sqrt(f.magnitudeSquared(n))};var X=new f;f.distance=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),f.subtract(n,e,X),f.magnitude(X)};f.distanceSquared=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),f.subtract(n,e,X),f.magnitudeSquared(X)};f.normalize=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=f.magnitude(n);if(e.x=n.x/o,e.y=n.y/o,e.z=n.z/o,isNaN(e.x)||isNaN(e.y)||isNaN(e.z))throw new g("normalized result is not a number");return e};f.dot=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.x+n.y*e.y+n.z*e.z};f.multiplyComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x*e.x,o.y=n.y*e.y,o.z=n.z*e.z,o};f.divideComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x/e.x,o.y=n.y/e.y,o.z=n.z/e.z,o};f.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x+e.x,o.y=n.y+e.y,o.z=n.z+e.z,o};f.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x-e.x,o.y=n.y-e.y,o.z=n.z-e.z,o};f.multiplyByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x*e,o.y=n.y*e,o.z=n.z*e,o};f.divideByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x/e,o.y=n.y/e,o.z=n.z/e,o};f.negate=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=-n.x,e.y=-n.y,e.z=-n.z,e};f.abs=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=Math.abs(n.x),e.y=Math.abs(n.y),e.z=Math.abs(n.z),e};var Tn=new f;f.lerp=function(n,e,o,t){return c.typeOf.object("start",n),c.typeOf.object("end",e),c.typeOf.number("t",o),c.typeOf.object("result",t),f.multiplyByScalar(e,o,Tn),t=f.multiplyByScalar(n,1-o,t),f.add(Tn,t,t)};var Y=new f,dn=new f;f.angleBetween=function(n,e){c.typeOf.object("left",n),c.typeOf.object("right",e),f.normalize(n,Y),f.normalize(e,dn);let o=f.dot(Y,dn),t=f.magnitude(f.cross(Y,dn,Y));return Math.atan2(t,o)};var Yn=new f;f.mostOrthogonalAxis=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=f.normalize(n,Yn);return f.abs(o,o),o.x<=o.y?o.x<=o.z?e=f.clone(f.UNIT_X,e):e=f.clone(f.UNIT_Z,e):o.y<=o.z?e=f.clone(f.UNIT_Y,e):e=f.clone(f.UNIT_Z,e),e};f.projectVector=function(n,e,o){c.defined("a",n),c.defined("b",e),c.defined("result",o);let t=f.dot(n,e)/f.dot(e,e);return f.multiplyByScalar(e,t,o)};f.equals=function(n,e){return n===e||u(n)&&u(e)&&n.x===e.x&&n.y===e.y&&n.z===e.z};f.equalsArray=function(n,e,o){return n.x===e[o]&&n.y===e[o+1]&&n.z===e[o+2]};f.equalsEpsilon=function(n,e,o,t){return n===e||u(n)&&u(e)&&h.equalsEpsilon(n.x,e.x,o,t)&&h.equalsEpsilon(n.y,e.y,o,t)&&h.equalsEpsilon(n.z,e.z,o,t)};f.cross=function(n,e,o){c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o);let t=n.x,i=n.y,p=n.z,d=e.x,m=e.y,s=e.z,b=i*s-p*m,w=p*d-t*s,S=t*m-i*d;return o.x=b,o.y=w,o.z=S,o};f.midpoint=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=(n.x+e.x)*.5,o.y=(n.y+e.y)*.5,o.z=(n.z+e.z)*.5,o};f.fromDegrees=function(n,e,o,t,i){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),n=h.toRadians(n),e=h.toRadians(e),f.fromRadians(n,e,o,t,i)};var T=new f,V=new f;f._ellipsoidRadiiSquared=new f(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);f.fromRadians=function(n,e,o,t,i){c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),o=o??0;let p=u(t)?t.radiiSquared:f._ellipsoidRadiiSquared,d=Math.cos(e);T.x=d*Math.cos(n),T.y=d*Math.sin(n),T.z=Math.sin(e),T=f.normalize(T,T),f.multiplyComponents(p,T,V);let m=Math.sqrt(f.dot(T,V));return V=f.divideByScalar(V,m,V),T=f.multiplyByScalar(T,o,T),u(i)||(i=new f),f.add(V,T,i)};f.fromDegreesArray=function(n,e,o){if(c.defined("coordinates",n),n.length<2||n.length%2!==0)throw new g("the number of coordinates must be a multiple of 2 and at least 2");let t=n.length;u(o)?o.length=t/2:o=new Array(t/2);for(let i=0;i<t;i+=2){let p=n[i],d=n[i+1],m=i/2;o[m]=f.fromDegrees(p,d,0,e,o[m])}return o};f.fromRadiansArray=function(n,e,o){if(c.defined("coordinates",n),n.length<2||n.length%2!==0)throw new g("the number of coordinates must be a multiple of 2 and at least 2");let t=n.length;u(o)?o.length=t/2:o=new Array(t/2);for(let i=0;i<t;i+=2){let p=n[i],d=n[i+1],m=i/2;o[m]=f.fromRadians(p,d,0,e,o[m])}return o};f.fromDegreesArrayHeights=function(n,e,o){if(c.defined("coordinates",n),n.length<3||n.length%3!==0)throw new g("the number of coordinates must be a multiple of 3 and at least 3");let t=n.length;u(o)?o.length=t/3:o=new Array(t/3);for(let i=0;i<t;i+=3){let p=n[i],d=n[i+1],m=n[i+2],s=i/3;o[s]=f.fromDegrees(p,d,m,e,o[s])}return o};f.fromRadiansArrayHeights=function(n,e,o){if(c.defined("coordinates",n),n.length<3||n.length%3!==0)throw new g("the number of coordinates must be a multiple of 3 and at least 3");let t=n.length;u(o)?o.length=t/3:o=new Array(t/3);for(let i=0;i<t;i+=3){let p=n[i],d=n[i+1],m=n[i+2],s=i/3;o[s]=f.fromRadians(p,d,m,e,o[s])}return o};f.ZERO=Object.freeze(new f(0,0,0));f.ONE=Object.freeze(new f(1,1,1));f.UNIT_X=Object.freeze(new f(1,0,0));f.UNIT_Y=Object.freeze(new f(0,1,0));f.UNIT_Z=Object.freeze(new f(0,0,1));f.prototype.clone=function(n){return f.clone(this,n)};f.prototype.equals=function(n){return f.equals(this,n)};f.prototype.equalsEpsilon=function(n,e,o){return f.equalsEpsilon(this,n,e,o)};f.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var y=f;var Xn=new y,Gn=new y;function Hn(n,e,o,t,i){if(!u(n))throw new g("cartesian is required.");if(!u(e))throw new g("oneOverRadii is required.");if(!u(o))throw new g("oneOverRadiiSquared is required.");if(!u(t))throw new g("centerToleranceSquared is required.");let p=n.x,d=n.y,m=n.z,s=e.x,b=e.y,w=e.z,S=p*p*s*s,R=d*d*b*b,M=m*m*w*w,C=S+R+M,_=Math.sqrt(1/C),N=y.multiplyByScalar(n,_,Xn);if(C<t)return isFinite(_)?y.clone(N,i):void 0;let B=o.x,U=o.y,P=o.z,F=Gn;F.x=N.x*B*2,F.y=N.y*U*2,F.z=N.z*P*2;let Z=(1-_)*y.magnitude(n)/(.5*y.magnitude(F)),Mn=0,rn,qn,I,L,W,pn,un,an,En,An,_n;do{Z-=Mn,I=1/(1+Z*B),L=1/(1+Z*U),W=1/(1+Z*P),pn=I*I,un=L*L,an=W*W,En=pn*I,An=un*L,_n=an*W,rn=S*pn+R*un+M*an-1,qn=S*En*B+R*An*U+M*_n*P;let Zn=-2*qn;Mn=rn/Zn}while(Math.abs(rn)>h.EPSILON12);return u(i)?(i.x=p*I,i.y=d*L,i.z=m*W,i):new y(p*I,d*L,m*W)}var G=Hn;function j(n,e,o){this.longitude=n??0,this.latitude=e??0,this.height=o??0}j.fromRadians=function(n,e,o,t){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),o=o??0,u(t)?(t.longitude=n,t.latitude=e,t.height=o,t):new j(n,e,o)};j.fromDegrees=function(n,e,o,t){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),n=h.toRadians(n),e=h.toRadians(e),j.fromRadians(n,e,o,t)};var Qn=new y,Jn=new y,Kn=new y;j._ellipsoidOneOverRadii=new y(1/6378137,1/6378137,1/6356752314245179e-9);j._ellipsoidOneOverRadiiSquared=new y(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));j._ellipsoidCenterToleranceSquared=h.EPSILON1;j.fromCartesian=function(n,e,o){let t=u(e)?e.oneOverRadii:j._ellipsoidOneOverRadii,i=u(e)?e.oneOverRadiiSquared:j._ellipsoidOneOverRadiiSquared,p=u(e)?e._centerToleranceSquared:j._ellipsoidCenterToleranceSquared,d=G(n,t,i,p,Jn);if(!u(d))return;let m=y.multiplyComponents(d,i,Qn);m=y.normalize(m,m);let s=y.subtract(n,d,Kn),b=Math.atan2(m.y,m.x),w=Math.asin(m.z),S=h.sign(y.dot(s,n))*y.magnitude(s);return u(o)?(o.longitude=b,o.latitude=w,o.height=S,o):new j(b,w,S)};j.toCartesian=function(n,e,o){return c.defined("cartographic",n),y.fromRadians(n.longitude,n.latitude,n.height,e,o)};j.clone=function(n,e){if(u(n))return u(e)?(e.longitude=n.longitude,e.latitude=n.latitude,e.height=n.height,e):new j(n.longitude,n.latitude,n.height)};j.equals=function(n,e){return n===e||u(n)&&u(e)&&n.longitude===e.longitude&&n.latitude===e.latitude&&n.height===e.height};j.equalsEpsilon=function(n,e,o){return o=o??0,n===e||u(n)&&u(e)&&Math.abs(n.longitude-e.longitude)<=o&&Math.abs(n.latitude-e.latitude)<=o&&Math.abs(n.height-e.height)<=o};j.ZERO=Object.freeze(new j(0,0,0));j.prototype.clone=function(n){return j.clone(this,n)};j.prototype.equals=function(n){return j.equals(this,n)};j.prototype.equalsEpsilon=function(n,e){return j.equalsEpsilon(this,n,e)};j.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var $=j;function a(n,e){this.x=n??0,this.y=e??0}a.fromElements=function(n,e,o){return u(o)?(o.x=n,o.y=e,o):new a(n,e)};a.clone=function(n,e){if(u(n))return u(e)?(e.x=n.x,e.y=n.y,e):new a(n.x,n.y)};a.fromCartesian3=a.clone;a.fromCartesian4=a.clone;a.packedLength=2;a.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n.x,e[o]=n.y,e};a.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new a),o.x=n[e++],o.y=n[e],o};a.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*2;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 2 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)a.pack(n[i],e,i*2);return e};a.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,2),n.length%2!==0)throw new g("array length must be a multiple of 2.");let o=n.length;u(e)?e.length=o/2:e=new Array(o/2);for(let t=0;t<o;t+=2){let i=t/2;e[i]=a.unpack(n,t,e[i])}return e};a.fromArray=a.unpack;a.maximumComponent=function(n){return c.typeOf.object("cartesian",n),Math.max(n.x,n.y)};a.minimumComponent=function(n){return c.typeOf.object("cartesian",n),Math.min(n.x,n.y)};a.minimumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.min(n.x,e.x),o.y=Math.min(n.y,e.y),o};a.maximumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.max(n.x,e.x),o.y=Math.max(n.y,e.y),o};a.clamp=function(n,e,o,t){c.typeOf.object("value",n),c.typeOf.object("min",e),c.typeOf.object("max",o),c.typeOf.object("result",t);let i=h.clamp(n.x,e.x,o.x),p=h.clamp(n.y,e.y,o.y);return t.x=i,t.y=p,t};a.magnitudeSquared=function(n){return c.typeOf.object("cartesian",n),n.x*n.x+n.y*n.y};a.magnitude=function(n){return Math.sqrt(a.magnitudeSquared(n))};var H=new a;a.distance=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.subtract(n,e,H),a.magnitude(H)};a.distanceSquared=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.subtract(n,e,H),a.magnitudeSquared(H)};a.normalize=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=a.magnitude(n);if(e.x=n.x/o,e.y=n.y/o,isNaN(e.x)||isNaN(e.y))throw new g("normalized result is not a number");return e};a.dot=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.x+n.y*e.y};a.cross=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.y-n.y*e.x};a.multiplyComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x*e.x,o.y=n.y*e.y,o};a.divideComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x/e.x,o.y=n.y/e.y,o};a.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x+e.x,o.y=n.y+e.y,o};a.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x-e.x,o.y=n.y-e.y,o};a.multiplyByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x*e,o.y=n.y*e,o};a.divideByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x/e,o.y=n.y/e,o};a.negate=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=-n.x,e.y=-n.y,e};a.abs=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=Math.abs(n.x),e.y=Math.abs(n.y),e};var ln=new a;a.lerp=function(n,e,o,t){return c.typeOf.object("start",n),c.typeOf.object("end",e),c.typeOf.number("t",o),c.typeOf.object("result",t),a.multiplyByScalar(e,o,ln),t=a.multiplyByScalar(n,1-o,t),a.add(ln,t,t)};var Cn=new a,Nn=new a;a.angleBetween=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.normalize(n,Cn),a.normalize(e,Nn),h.acosClamped(a.dot(Cn,Nn))};var ne=new a;a.mostOrthogonalAxis=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=a.normalize(n,ne);return a.abs(o,o),o.x<=o.y?e=a.clone(a.UNIT_X,e):e=a.clone(a.UNIT_Y,e),e};a.equals=function(n,e){return n===e||u(n)&&u(e)&&n.x===e.x&&n.y===e.y};a.equalsArray=function(n,e,o){return n.x===e[o]&&n.y===e[o+1]};a.equalsEpsilon=function(n,e,o,t){return n===e||u(n)&&u(e)&&h.equalsEpsilon(n.x,e.x,o,t)&&h.equalsEpsilon(n.y,e.y,o,t)};a.ZERO=Object.freeze(new a(0,0));a.ONE=Object.freeze(new a(1,1));a.UNIT_X=Object.freeze(new a(1,0));a.UNIT_Y=Object.freeze(new a(0,1));a.prototype.clone=function(n){return a.clone(this,n)};a.prototype.equals=function(n){return a.equals(this,n)};a.prototype.equalsEpsilon=function(n,e,o){return a.equalsEpsilon(this,n,e,o)};a.prototype.toString=function(){return`(${this.x}, ${this.y})`};var yn=a;function Fn(n,e,o,t){e=e??0,o=o??0,t=t??0,c.typeOf.number.greaterThanOrEquals("x",e,0),c.typeOf.number.greaterThanOrEquals("y",o,0),c.typeOf.number.greaterThanOrEquals("z",t,0),n._radii=new y(e,o,t),n._radiiSquared=new y(e*e,o*o,t*t),n._radiiToTheFourth=new y(e*e*e*e,o*o*o*o,t*t*t*t),n._oneOverRadii=new y(e===0?0:1/e,o===0?0:1/o,t===0?0:1/t),n._oneOverRadiiSquared=new y(e===0?0:1/(e*e),o===0?0:1/(o*o),t===0?0:1/(t*t)),n._minimumRadius=Math.min(e,o,t),n._maximumRadius=Math.max(e,o,t),n._centerToleranceSquared=h.EPSILON1,n._radiiSquared.z!==0&&(n._squaredXOverSquaredZ=n._radiiSquared.x/n._radiiSquared.z)}function O(n,e,o){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Fn(this,n,e,o)}Object.defineProperties(O.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});O.clone=function(n,e){if(!u(n))return;let o=n._radii;return u(e)?(y.clone(o,e._radii),y.clone(n._radiiSquared,e._radiiSquared),y.clone(n._radiiToTheFourth,e._radiiToTheFourth),y.clone(n._oneOverRadii,e._oneOverRadii),y.clone(n._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=n._minimumRadius,e._maximumRadius=n._maximumRadius,e._centerToleranceSquared=n._centerToleranceSquared,e):new O(o.x,o.y,o.z)};O.fromCartesian3=function(n,e){return u(e)||(e=new O),u(n)&&Fn(e,n.x,n.y,n.z),e};O.WGS84=Object.freeze(new O(6378137,6378137,6356752314245179e-9));O.UNIT_SPHERE=Object.freeze(new O(1,1,1));O.MOON=Object.freeze(new O(h.LUNAR_RADIUS,h.LUNAR_RADIUS,h.LUNAR_RADIUS));O._default=O.WGS84;Object.defineProperties(O,{default:{get:function(){return O._default},set:function(n){c.typeOf.object("value",n),O._default=n,y._ellipsoidRadiiSquared=n.radiiSquared,$._ellipsoidOneOverRadii=n.oneOverRadii,$._ellipsoidOneOverRadiiSquared=n.oneOverRadiiSquared,$._ellipsoidCenterToleranceSquared=n._centerToleranceSquared}}});O.prototype.clone=function(n){return O.clone(this,n)};O.packedLength=y.packedLength;O.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,y.pack(n._radii,e,o),e};O.unpack=function(n,e,o){c.defined("array",n),e=e??0;let t=y.unpack(n,e);return O.fromCartesian3(t,o)};O.prototype.geocentricSurfaceNormal=y.normalize;O.prototype.geodeticSurfaceNormalCartographic=function(n,e){c.typeOf.object("cartographic",n);let o=n.longitude,t=n.latitude,i=Math.cos(t),p=i*Math.cos(o),d=i*Math.sin(o),m=Math.sin(t);return u(e)||(e=new y),e.x=p,e.y=d,e.z=m,y.normalize(e,e)};O.prototype.geodeticSurfaceNormal=function(n,e){if(c.typeOf.object("cartesian",n),isNaN(n.x)||isNaN(n.y)||isNaN(n.z))throw new g("cartesian has a NaN component");if(!y.equalsEpsilon(n,y.ZERO,h.EPSILON14))return u(e)||(e=new y),e=y.multiplyComponents(n,this._oneOverRadiiSquared,e),y.normalize(e,e)};var ee=new y,oe=new y;O.prototype.cartographicToCartesian=function(n,e){let o=ee,t=oe;this.geodeticSurfaceNormalCartographic(n,o),y.multiplyComponents(this._radiiSquared,o,t);let i=Math.sqrt(y.dot(o,t));return y.divideByScalar(t,i,t),y.multiplyByScalar(o,n.height,o),u(e)||(e=new y),y.add(t,o,e)};O.prototype.cartographicArrayToCartesianArray=function(n,e){c.defined("cartographics",n);let o=n.length;u(e)?e.length=o:e=new Array(o);for(let t=0;t<o;t++)e[t]=this.cartographicToCartesian(n[t],e[t]);return e};var te=new y,ce=new y,ie=new y;O.prototype.cartesianToCartographic=function(n,e){let o=this.scaleToGeodeticSurface(n,ce);if(!u(o))return;let t=this.geodeticSurfaceNormal(o,te),i=y.subtract(n,o,ie),p=Math.atan2(t.y,t.x),d=Math.asin(t.z),m=h.sign(y.dot(i,n))*y.magnitude(i);return u(e)?(e.longitude=p,e.latitude=d,e.height=m,e):new $(p,d,m)};O.prototype.cartesianArrayToCartographicArray=function(n,e){c.defined("cartesians",n);let o=n.length;u(e)?e.length=o:e=new Array(o);for(let t=0;t<o;++t)e[t]=this.cartesianToCartographic(n[t],e[t]);return e};O.prototype.scaleToGeodeticSurface=function(n,e){return G(n,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,e)};O.prototype.scaleToGeocentricSurface=function(n,e){c.typeOf.object("cartesian",n),u(e)||(e=new y);let o=n.x,t=n.y,i=n.z,p=this._oneOverRadiiSquared,d=1/Math.sqrt(o*o*p.x+t*t*p.y+i*i*p.z);return y.multiplyByScalar(n,d,e)};O.prototype.transformPositionToScaledSpace=function(n,e){return u(e)||(e=new y),y.multiplyComponents(n,this._oneOverRadii,e)};O.prototype.transformPositionFromScaledSpace=function(n,e){return u(e)||(e=new y),y.multiplyComponents(n,this._radii,e)};O.prototype.equals=function(n){return this===n||u(n)&&y.equals(this._radii,n._radii)};O.prototype.toString=function(){return this._radii.toString()};O.prototype.getSurfaceNormalIntersectionWithZAxis=function(n,e,o){if(c.typeOf.object("position",n),!h.equalsEpsilon(this._radii.x,this._radii.y,h.EPSILON15))throw new g("Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)");c.typeOf.number.greaterThan("Ellipsoid.radii.z",this._radii.z,0),e=e??0;let t=this._squaredXOverSquaredZ;if(u(o)||(o=new y),o.x=0,o.y=0,o.z=n.z*(1-t),!(Math.abs(o.z)>=this._radii.z-e))return o};var fe=new y;O.prototype.getLocalCurvature=function(n,e){c.typeOf.object("surfacePosition",n),u(e)||(e=new yn);let o=this.getSurfaceNormalIntersectionWithZAxis(n,0,fe),t=y.distance(n,o),i=this.minimumRadius*t/this.maximumRadius**2,p=t*i**2;return yn.fromElements(1/t,1/p,e)};var re=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],pe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function xn(n,e,o){c.typeOf.number("a",n),c.typeOf.number("b",e),c.typeOf.func("func",o);let t=.5*(e+n),i=.5*(e-n),p=0;for(let d=0;d<5;d++){let m=i*re[d];p+=pe[d]*(o(t+m)+o(t-m))}return p*=i,p}O.prototype.surfaceArea=function(n){c.typeOf.object("rectangle",n);let e=n.west,o=n.east,t=n.south,i=n.north;for(;o<e;)o+=h.TWO_PI;let p=this._radiiSquared,d=p.x,m=p.y,s=p.z,b=d*m;return xn(t,i,function(w){let S=Math.cos(w),R=Math.sin(w);return Math.cos(w)*xn(e,o,function(M){let C=Math.cos(M),_=Math.sin(M);return Math.sqrt(b*R*R+s*(m*C*C+d*_*_)*S*S)})})};var oo=O;function r(n,e,o,t,i,p,d,m,s){this[0]=n??0,this[1]=t??0,this[2]=d??0,this[3]=e??0,this[4]=i??0,this[5]=m??0,this[6]=o??0,this[7]=p??0,this[8]=s??0}r.packedLength=9;r.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n[0],e[o++]=n[1],e[o++]=n[2],e[o++]=n[3],e[o++]=n[4],e[o++]=n[5],e[o++]=n[6],e[o++]=n[7],e[o++]=n[8],e};r.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new r),o[0]=n[e++],o[1]=n[e++],o[2]=n[e++],o[3]=n[e++],o[4]=n[e++],o[5]=n[e++],o[6]=n[e++],o[7]=n[e++],o[8]=n[e++],o};r.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*9;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 9 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)r.pack(n[i],e,i*9);return e};r.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,9),n.length%9!==0)throw new g("array length must be a multiple of 9.");let o=n.length;u(e)?e.length=o/9:e=new Array(o/9);for(let t=0;t<o;t+=9){let i=t/9;e[i]=r.unpack(n,t,e[i])}return e};r.clone=function(n,e){if(u(n))return u(e)?(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e):new r(n[0],n[3],n[6],n[1],n[4],n[7],n[2],n[5],n[8])};r.fromArray=r.unpack;r.fromColumnMajorArray=function(n,e){return c.defined("values",n),r.clone(n,e)};r.fromRowMajorArray=function(n,e){return c.defined("values",n),u(e)?(e[0]=n[0],e[1]=n[3],e[2]=n[6],e[3]=n[1],e[4]=n[4],e[5]=n[7],e[6]=n[2],e[7]=n[5],e[8]=n[8],e):new r(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])};r.fromQuaternion=function(n,e){c.typeOf.object("quaternion",n);let o=n.x*n.x,t=n.x*n.y,i=n.x*n.z,p=n.x*n.w,d=n.y*n.y,m=n.y*n.z,s=n.y*n.w,b=n.z*n.z,w=n.z*n.w,S=n.w*n.w,R=o-d-b+S,M=2*(t-w),C=2*(i+s),_=2*(t+w),N=-o+d-b+S,B=2*(m-p),U=2*(i-s),P=2*(m+p),F=-o-d+b+S;return u(e)?(e[0]=R,e[1]=_,e[2]=U,e[3]=M,e[4]=N,e[5]=P,e[6]=C,e[7]=B,e[8]=F,e):new r(R,M,C,_,N,B,U,P,F)};r.fromHeadingPitchRoll=function(n,e){c.typeOf.object("headingPitchRoll",n);let o=Math.cos(-n.pitch),t=Math.cos(-n.heading),i=Math.cos(n.roll),p=Math.sin(-n.pitch),d=Math.sin(-n.heading),m=Math.sin(n.roll),s=o*t,b=-i*d+m*p*t,w=m*d+i*p*t,S=o*d,R=i*t+m*p*d,M=-m*t+i*p*d,C=-p,_=m*o,N=i*o;return u(e)?(e[0]=s,e[1]=S,e[2]=C,e[3]=b,e[4]=R,e[5]=_,e[6]=w,e[7]=M,e[8]=N,e):new r(s,b,w,S,R,M,C,_,N)};r.fromScale=function(n,e){return c.typeOf.object("scale",n),u(e)?(e[0]=n.x,e[1]=0,e[2]=0,e[3]=0,e[4]=n.y,e[5]=0,e[6]=0,e[7]=0,e[8]=n.z,e):new r(n.x,0,0,0,n.y,0,0,0,n.z)};r.fromUniformScale=function(n,e){return c.typeOf.number("scale",n),u(e)?(e[0]=n,e[1]=0,e[2]=0,e[3]=0,e[4]=n,e[5]=0,e[6]=0,e[7]=0,e[8]=n,e):new r(n,0,0,0,n,0,0,0,n)};r.fromCrossProduct=function(n,e){return c.typeOf.object("vector",n),u(e)?(e[0]=0,e[1]=n.z,e[2]=-n.y,e[3]=-n.z,e[4]=0,e[5]=n.x,e[6]=n.y,e[7]=-n.x,e[8]=0,e):new r(0,-n.z,n.y,n.z,0,-n.x,-n.y,n.x,0)};r.fromRotationX=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=o,e[5]=t,e[6]=0,e[7]=-t,e[8]=o,e):new r(1,0,0,0,o,-t,0,t,o)};r.fromRotationY=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=o,e[1]=0,e[2]=-t,e[3]=0,e[4]=1,e[5]=0,e[6]=t,e[7]=0,e[8]=o,e):new r(o,0,t,0,1,0,-t,0,o)};r.fromRotationZ=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=o,e[1]=t,e[2]=0,e[3]=-t,e[4]=o,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new r(o,-t,0,t,o,0,0,0,1)};r.toArray=function(n,e){return c.typeOf.object("matrix",n),u(e)?(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e):[n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8]]};r.getElementIndex=function(n,e){return c.typeOf.number.greaterThanOrEquals("row",e,0),c.typeOf.number.lessThanOrEquals("row",e,2),c.typeOf.number.greaterThanOrEquals("column",n,0),c.typeOf.number.lessThanOrEquals("column",n,2),n*3+e};r.getColumn=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("result",o);let t=e*3,i=n[t],p=n[t+1],d=n[t+2];return o.x=i,o.y=p,o.z=d,o};r.setColumn=function(n,e,o,t){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("cartesian",o),c.typeOf.object("result",t),t=r.clone(n,t);let i=e*3;return t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z,t};r.getRow=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("result",o);let t=n[e],i=n[e+3],p=n[e+6];return o.x=t,o.y=i,o.z=p,o};r.setRow=function(n,e,o,t){return c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("cartesian",o),c.typeOf.object("result",t),t=r.clone(n,t),t[e]=o.x,t[e+3]=o.y,t[e+6]=o.z,t};var ue=new y;r.setScale=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("scale",e),c.typeOf.object("result",o);let t=r.getScale(n,ue),i=e.x/t.x,p=e.y/t.y,d=e.z/t.z;return o[0]=n[0]*i,o[1]=n[1]*i,o[2]=n[2]*i,o[3]=n[3]*p,o[4]=n[4]*p,o[5]=n[5]*p,o[6]=n[6]*d,o[7]=n[7]*d,o[8]=n[8]*d,o};var ae=new y;r.setUniformScale=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number("scale",e),c.typeOf.object("result",o);let t=r.getScale(n,ae),i=e/t.x,p=e/t.y,d=e/t.z;return o[0]=n[0]*i,o[1]=n[1]*i,o[2]=n[2]*i,o[3]=n[3]*p,o[4]=n[4]*p,o[5]=n[5]*p,o[6]=n[6]*d,o[7]=n[7]*d,o[8]=n[8]*d,o};var mn=new y;r.getScale=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e.x=y.magnitude(y.fromElements(n[0],n[1],n[2],mn)),e.y=y.magnitude(y.fromElements(n[3],n[4],n[5],mn)),e.z=y.magnitude(y.fromElements(n[6],n[7],n[8],mn)),e};var kn=new y;r.getMaximumScale=function(n){return r.getScale(n,kn),y.maximumComponent(kn)};var de=new y;r.setRotation=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("result",o);let t=r.getScale(n,de);return o[0]=e[0]*t.x,o[1]=e[1]*t.x,o[2]=e[2]*t.x,o[3]=e[3]*t.y,o[4]=e[4]*t.y,o[5]=e[5]*t.y,o[6]=e[6]*t.z,o[7]=e[7]*t.z,o[8]=e[8]*t.z,o};var ye=new y;r.getRotation=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=r.getScale(n,ye);return e[0]=n[0]/o.x,e[1]=n[1]/o.x,e[2]=n[2]/o.x,e[3]=n[3]/o.y,e[4]=n[4]/o.y,e[5]=n[5]/o.y,e[6]=n[6]/o.z,e[7]=n[7]/o.z,e[8]=n[8]/o.z,e};r.multiply=function(n,e,o){c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o);let t=n[0]*e[0]+n[3]*e[1]+n[6]*e[2],i=n[1]*e[0]+n[4]*e[1]+n[7]*e[2],p=n[2]*e[0]+n[5]*e[1]+n[8]*e[2],d=n[0]*e[3]+n[3]*e[4]+n[6]*e[5],m=n[1]*e[3]+n[4]*e[4]+n[7]*e[5],s=n[2]*e[3]+n[5]*e[4]+n[8]*e[5],b=n[0]*e[6]+n[3]*e[7]+n[6]*e[8],w=n[1]*e[6]+n[4]*e[7]+n[7]*e[8],S=n[2]*e[6]+n[5]*e[7]+n[8]*e[8];return o[0]=t,o[1]=i,o[2]=p,o[3]=d,o[4]=m,o[5]=s,o[6]=b,o[7]=w,o[8]=S,o};r.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o[0]=n[0]+e[0],o[1]=n[1]+e[1],o[2]=n[2]+e[2],o[3]=n[3]+e[3],o[4]=n[4]+e[4],o[5]=n[5]+e[5],o[6]=n[6]+e[6],o[7]=n[7]+e[7],o[8]=n[8]+e[8],o};r.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],o[3]=n[3]-e[3],o[4]=n[4]-e[4],o[5]=n[5]-e[5],o[6]=n[6]-e[6],o[7]=n[7]-e[7],o[8]=n[8]-e[8],o};r.multiplyByVector=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("cartesian",e),c.typeOf.object("result",o);let t=e.x,i=e.y,p=e.z,d=n[0]*t+n[3]*i+n[6]*p,m=n[1]*t+n[4]*i+n[7]*p,s=n[2]*t+n[5]*i+n[8]*p;return o.x=d,o.y=m,o.z=s,o};r.multiplyByScalar=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o[0]=n[0]*e,o[1]=n[1]*e,o[2]=n[2]*e,o[3]=n[3]*e,o[4]=n[4]*e,o[5]=n[5]*e,o[6]=n[6]*e,o[7]=n[7]*e,o[8]=n[8]*e,o};r.multiplyByScale=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.object("scale",e),c.typeOf.object("result",o),o[0]=n[0]*e.x,o[1]=n[1]*e.x,o[2]=n[2]*e.x,o[3]=n[3]*e.y,o[4]=n[4]*e.y,o[5]=n[5]*e.y,o[6]=n[6]*e.z,o[7]=n[7]*e.z,o[8]=n[8]*e.z,o};r.multiplyByUniformScale=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.number("scale",e),c.typeOf.object("result",o),o[0]=n[0]*e,o[1]=n[1]*e,o[2]=n[2]*e,o[3]=n[3]*e,o[4]=n[4]*e,o[5]=n[5]*e,o[6]=n[6]*e,o[7]=n[7]*e,o[8]=n[8]*e,o};r.negate=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e[0]=-n[0],e[1]=-n[1],e[2]=-n[2],e[3]=-n[3],e[4]=-n[4],e[5]=-n[5],e[6]=-n[6],e[7]=-n[7],e[8]=-n[8],e};r.transpose=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=n[0],t=n[3],i=n[6],p=n[1],d=n[4],m=n[7],s=n[2],b=n[5],w=n[8];return e[0]=o,e[1]=t,e[2]=i,e[3]=p,e[4]=d,e[5]=m,e[6]=s,e[7]=b,e[8]=w,e};function me(n){let e=0;for(let o=0;o<9;++o){let t=n[o];e+=t*t}return Math.sqrt(e)}var sn=[1,0,0],On=[2,2,1];function se(n){let e=0;for(let o=0;o<3;++o){let t=n[r.getElementIndex(On[o],sn[o])];e+=2*t*t}return Math.sqrt(e)}function Oe(n,e){let o=h.EPSILON15,t=0,i=1;for(let b=0;b<3;++b){let w=Math.abs(n[r.getElementIndex(On[b],sn[b])]);w>t&&(i=b,t=w)}let p=1,d=0,m=sn[i],s=On[i];if(Math.abs(n[r.getElementIndex(s,m)])>o){let b=n[r.getElementIndex(s,s)],w=n[r.getElementIndex(m,m)],S=n[r.getElementIndex(s,m)],R=(b-w)/2/S,M;R<0?M=-1/(-R+Math.sqrt(1+R*R)):M=1/(R+Math.sqrt(1+R*R)),p=1/Math.sqrt(1+M*M),d=M*p}return e=r.clone(r.IDENTITY,e),e[r.getElementIndex(m,m)]=e[r.getElementIndex(s,s)]=p,e[r.getElementIndex(s,m)]=d,e[r.getElementIndex(m,s)]=-d,e}var Q=new r,Bn=new r;r.computeEigenDecomposition=function(n,e){c.typeOf.object("matrix",n);let o=h.EPSILON20,t=10,i=0,p=0;u(e)||(e={});let d=e.unitary=r.clone(r.IDENTITY,e.unitary),m=e.diagonal=r.clone(n,e.diagonal),s=o*me(m);for(;p<t&&se(m)>s;)Oe(m,Q),r.transpose(Q,Bn),r.multiply(m,Q,m),r.multiply(Bn,m,m),r.multiply(d,Q,d),++i>2&&(++p,i=0);return e};r.abs=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e[0]=Math.abs(n[0]),e[1]=Math.abs(n[1]),e[2]=Math.abs(n[2]),e[3]=Math.abs(n[3]),e[4]=Math.abs(n[4]),e[5]=Math.abs(n[5]),e[6]=Math.abs(n[6]),e[7]=Math.abs(n[7]),e[8]=Math.abs(n[8]),e};r.determinant=function(n){c.typeOf.object("matrix",n);let e=n[0],o=n[3],t=n[6],i=n[1],p=n[4],d=n[7],m=n[2],s=n[5],b=n[8];return e*(p*b-s*d)+i*(s*t-o*b)+m*(o*d-p*t)};r.inverse=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=n[0],t=n[1],i=n[2],p=n[3],d=n[4],m=n[5],s=n[6],b=n[7],w=n[8],S=r.determinant(n);if(Math.abs(S)<=h.EPSILON15)throw new g("matrix is not invertible");e[0]=d*w-b*m,e[1]=b*i-t*w,e[2]=t*m-d*i,e[3]=s*m-p*w,e[4]=o*w-s*i,e[5]=p*i-o*m,e[6]=p*b-s*d,e[7]=s*t-o*b,e[8]=o*d-p*t;let R=1/S;return r.multiplyByScalar(e,R,e)};var be=new r;r.inverseTranspose=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),r.inverse(r.transpose(n,be),e)};r.equals=function(n,e){return n===e||u(n)&&u(e)&&n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]&&n[3]===e[3]&&n[4]===e[4]&&n[5]===e[5]&&n[6]===e[6]&&n[7]===e[7]&&n[8]===e[8]};r.equalsEpsilon=function(n,e,o){return o=o??0,n===e||u(n)&&u(e)&&Math.abs(n[0]-e[0])<=o&&Math.abs(n[1]-e[1])<=o&&Math.abs(n[2]-e[2])<=o&&Math.abs(n[3]-e[3])<=o&&Math.abs(n[4]-e[4])<=o&&Math.abs(n[5]-e[5])<=o&&Math.abs(n[6]-e[6])<=o&&Math.abs(n[7]-e[7])<=o&&Math.abs(n[8]-e[8])<=o};r.IDENTITY=Object.freeze(new r(1,0,0,0,1,0,0,0,1));r.ZERO=Object.freeze(new r(0,0,0,0,0,0,0,0,0));r.COLUMN0ROW0=0;r.COLUMN0ROW1=1;r.COLUMN0ROW2=2;r.COLUMN1ROW0=3;r.COLUMN1ROW1=4;r.COLUMN1ROW2=5;r.COLUMN2ROW0=6;r.COLUMN2ROW1=7;r.COLUMN2ROW2=8;Object.defineProperties(r.prototype,{length:{get:function(){return r.packedLength}}});r.prototype.clone=function(n){return r.clone(this,n)};r.prototype.equals=function(n){return r.equals(this,n)};r.equalsArray=function(n,e,o){return n[0]===e[o]&&n[1]===e[o+1]&&n[2]===e[o+2]&&n[3]===e[o+3]&&n[4]===e[o+4]&&n[5]===e[o+5]&&n[6]===e[o+6]&&n[7]===e[o+7]&&n[8]===e[o+8]};r.prototype.equalsEpsilon=function(n,e){return r.equalsEpsilon(this,n,e)};r.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var uo=r;var bn={};bn.EMPTY_OBJECT=Object.freeze({});bn.EMPTY_ARRAY=Object.freeze([]);var yo=bn;var x,z={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},A={};Object.defineProperties(A,{element:{get:function(){if(A.supportsFullscreen())return document[z.fullscreenElement]}},changeEventName:{get:function(){if(A.supportsFullscreen())return z.fullscreenchange}},errorEventName:{get:function(){if(A.supportsFullscreen())return z.fullscreenerror}},enabled:{get:function(){if(A.supportsFullscreen())return document[z.fullscreenEnabled]}},fullscreen:{get:function(){if(A.supportsFullscreen())return A.element!==null}}});A.supportsFullscreen=function(){if(u(x))return x;x=!1;let n=document.body;if(typeof n.requestFullscreen=="function")return z.requestFullscreen="requestFullscreen",z.exitFullscreen="exitFullscreen",z.fullscreenEnabled="fullscreenEnabled",z.fullscreenElement="fullscreenElement",z.fullscreenchange="fullscreenchange",z.fullscreenerror="fullscreenerror",x=!0,x;let e=["webkit","moz","o","ms","khtml"],o;for(let t=0,i=e.length;t<i;++t){let p=e[t];o=`${p}RequestFullscreen`,typeof n[o]=="function"?(z.requestFullscreen=o,x=!0):(o=`${p}RequestFullScreen`,typeof n[o]=="function"&&(z.requestFullscreen=o,x=!0)),o=`${p}ExitFullscreen`,typeof document[o]=="function"?z.exitFullscreen=o:(o=`${p}CancelFullScreen`,typeof document[o]=="function"&&(z.exitFullscreen=o)),o=`${p}FullscreenEnabled`,document[o]!==void 0?z.fullscreenEnabled=o:(o=`${p}FullScreenEnabled`,document[o]!==void 0&&(z.fullscreenEnabled=o)),o=`${p}FullscreenElement`,document[o]!==void 0?z.fullscreenElement=o:(o=`${p}FullScreenElement`,document[o]!==void 0&&(z.fullscreenElement=o)),o=`${p}fullscreenchange`,document[`on${o}`]!==void 0&&(p==="ms"&&(o="MSFullscreenChange"),z.fullscreenchange=o),o=`${p}fullscreenerror`,document[`on${o}`]!==void 0&&(p==="ms"&&(o="MSFullscreenError"),z.fullscreenerror=o)}return x};A.requestFullscreen=function(n,e){A.supportsFullscreen()&&n[z.requestFullscreen]({vrDisplay:e})};A.exitFullscreen=function(){A.supportsFullscreen()&&document[z.exitFullscreen]()};A._names=z;var Un=A;var E;typeof navigator<"u"?E=navigator:E={};function k(n){let e=n.split(".");for(let o=0,t=e.length;o<t;++o)e[o]=parseInt(e[o],10);return e}var J,Pn;function zn(){if(!u(J)&&(J=!1,!cn())){let n=/ Chrome\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(J=!0,Pn=k(n[1]))}return J}function he(){return zn()&&Pn}var K,In;function Ln(){if(!u(K)&&(K=!1,!zn()&&!cn()&&/ Safari\/[\.0-9]+/.test(E.userAgent))){let n=/ Version\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(K=!0,In=k(n[1]))}return K}function we(){return Ln()&&In}var nn,gn;function Wn(){if(!u(nn)){nn=!1;let n=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(E.userAgent);n!==null&&(nn=!0,gn=k(n[1]),gn.isNightly=!!n[2])}return nn}function je(){return Wn()&&gn}var D,Sn;function Vn(){if(!u(D)){D=!1;let n;E.appName==="Microsoft Internet Explorer"?(n=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(E.userAgent),n!==null&&(D=!0,Sn=k(n[1]))):E.appName==="Netscape"&&(n=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(E.userAgent),n!==null&&(D=!0,Sn=k(n[1])))}return D}function ge(){return Vn()&&Sn}var en,vn;function cn(){if(!u(en)){en=!1;let n=/ Edg\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(en=!0,vn=k(n[1]))}return en}function Se(){return cn()&&vn}var on,Rn;function fn(){if(!u(on)){on=!1;let n=/Firefox\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(on=!0,Rn=k(n[1]))}return on}var hn;function ze(){return u(hn)||(hn=/Windows/i.test(E.appVersion)),hn}var wn;function Re(){return u(wn)||(wn=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),wn}function Me(){return fn()&&Rn}var jn;function qe(){return u(jn)||(jn=!fn()&&typeof PointerEvent<"u"&&(!u(E.pointerEnabled)||E.pointerEnabled)),jn}var $n,tn;function Dn(){if(!u(tn)){let n=document.createElement("canvas");n.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let e=n.style.imageRendering;tn=u(e)&&e!=="",tn&&($n=e)}return tn}function Ee(){return Dn()?$n:void 0}function q(){if(!q.initialized)throw new g("You must call FeatureDetection.supportsWebP.initialize and wait for the promise to resolve before calling FeatureDetection.supportsWebP");return q._result}q._promise=void 0;q._result=void 0;q.initialize=function(){return u(q._promise)||(q._promise=new Promise(n=>{let e=new Image;e.onload=function(){q._result=e.width>0&&e.height>0,n(q._result)},e.onerror=function(){q._result=!1,n(q._result)},e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),q._promise};Object.defineProperties(q,{initialized:{get:function(){return u(q._result)}}});var v=[];typeof ArrayBuffer<"u"&&(v.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&v.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&v.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&v.push(BigInt64Array),typeof BigUint64Array<"u"&&v.push(BigUint64Array));var l={isChrome:zn,chromeVersion:he,isSafari:Ln,safariVersion:we,isWebkit:Wn,webkitVersion:je,isInternetExplorer:Vn,internetExplorerVersion:ge,isEdge:cn,edgeVersion:Se,isFirefox:fn,firefoxVersion:Me,isWindows:ze,isIPadOrIOS:Re,hardwareConcurrency:E.hardwareConcurrency??3,supportsPointerEvents:qe,supportsImageRenderingPixelated:Dn,supportsWebP:q,imageRenderingValue:Ee,typedArrayTypes:v};l.supportsBasis=function(n){return l.supportsWebAssembly()&&n.context.supportsBasis};l.supportsFullscreen=function(){return Un.supportsFullscreen()};l.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};l.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};l.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};l.supportsBigInt=function(){return typeof BigInt<"u"};l.supportsWebWorkers=function(){return typeof Worker<"u"};l.supportsWebAssembly=function(){return typeof WebAssembly<"u"};l.supportsWebgl2=function(n){return c.defined("scene",n),n.context.webgl2};l.supportsEsmWebWorkers=function(){return!fn()||parseInt(Rn)>=114};var go=l;export{y as a,$ as b,yn as c,oo as d,uo as e,yo as f,go as g}; diff --git a/public/Cesium/Workers/chunk-77IHZJJ3.js b/public/Cesium/Workers/chunk-77IHZJJ3.js new file mode 100644 index 000000000..e910069d8 --- /dev/null +++ b/public/Cesium/Workers/chunk-77IHZJJ3.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as st}from"./chunk-G5AGHVVC.js";import{b as xt,c as ht,d as et}from"./chunk-RCV6KWXS.js";import{a as tt}from"./chunk-AU7IKHOH.js";import{a as h,b as Y,c as g,d as gt}from"./chunk-64RSHJUE.js";import{a as X}from"./chunk-3SSKC3VN.js";import{a as ft}from"./chunk-OSW76XDF.js";import{b as A}from"./chunk-LEYMRMBK.js";import{e as F}from"./chunk-VTAIKJXX.js";var ct={CLOCKWISE:ft.CW,COUNTER_CLOCKWISE:ft.CCW};ct.validate=function(t){return t===ct.CLOCKWISE||t===ct.COUNTER_CLOCKWISE};var at=Object.freeze(ct);function mt(t,n,e=2){let o=n&&n.length,r=o?n[0]*e:t.length,s=wt(t,0,r,e,!0),i=[];if(!s||s.next===s.prev)return i;let c,x,u;if(o&&(s=It(t,n,s,e)),t.length>80*e){c=t[0],x=t[1];let p=c,y=x;for(let b=e;b<r;b+=e){let S=t[b],a=t[b+1];S<c&&(c=S),a<x&&(x=a),S>p&&(p=S),a>y&&(y=a)}u=Math.max(p-c,y-x),u=u!==0?32767/u:0}return rt(s,i,e,c,x,u,0),i}function wt(t,n,e,o,r){let s;if(r===Vt(t,n,e,o)>0)for(let i=n;i<e;i+=o)s=vt(i/o|0,t[i],t[i+1],s);else for(let i=e-o;i>=n;i-=o)s=vt(i/o|0,t[i],t[i+1],s);return s&&K(s,s.next)&&(ot(s),s=s.next),s}function N(t,n){if(!t)return t;n||(n=t);let e=t,o;do if(o=!1,!e.steiner&&(K(e,e.next)||w(e.prev,e,e.next)===0)){if(ot(e),e=n=e.prev,e===e.next)break;o=!0}else e=e.next;while(o||e!==n);return n}function rt(t,n,e,o,r,s,i){if(!t)return;!i&&s&&Nt(t,o,r,s);let c=t;for(;t.prev!==t.next;){let x=t.prev,u=t.next;if(s?Rt(t,o,r,s):Pt(t)){n.push(x.i,t.i,u.i),ot(t),t=u.next,c=u.next;continue}if(t=u,t===c){i?i===1?(t=zt(N(t),n),rt(t,n,e,o,r,s,2)):i===2&&Bt(t,n,e,o,r,s):rt(N(t),n,e,o,r,s,1);break}}}function Pt(t){let n=t.prev,e=t,o=t.next;if(w(n,e,o)>=0)return!1;let r=n.x,s=e.x,i=o.x,c=n.y,x=e.y,u=o.y,p=Math.min(r,s,i),y=Math.min(c,x,u),b=Math.max(r,s,i),S=Math.max(c,x,u),a=o.next;for(;a!==n;){if(a.x>=p&&a.x<=b&&a.y>=y&&a.y<=S&&nt(r,c,s,x,i,u,a.x,a.y)&&w(a.prev,a,a.next)>=0)return!1;a=a.next}return!0}function Rt(t,n,e,o){let r=t.prev,s=t,i=t.next;if(w(r,s,i)>=0)return!1;let c=r.x,x=s.x,u=i.x,p=r.y,y=s.y,b=i.y,S=Math.min(c,x,u),a=Math.min(p,y,b),T=Math.max(c,x,u),L=Math.max(p,y,b),z=pt(S,a,n,e,o),D=pt(T,L,n,e,o),l=t.prevZ,f=t.nextZ;for(;l&&l.z>=z&&f&&f.z<=D;){if(l.x>=S&&l.x<=T&&l.y>=a&&l.y<=L&&l!==r&&l!==i&&nt(c,p,x,y,u,b,l.x,l.y)&&w(l.prev,l,l.next)>=0||(l=l.prevZ,f.x>=S&&f.x<=T&&f.y>=a&&f.y<=L&&f!==r&&f!==i&&nt(c,p,x,y,u,b,f.x,f.y)&&w(f.prev,f,f.next)>=0))return!1;f=f.nextZ}for(;l&&l.z>=z;){if(l.x>=S&&l.x<=T&&l.y>=a&&l.y<=L&&l!==r&&l!==i&&nt(c,p,x,y,u,b,l.x,l.y)&&w(l.prev,l,l.next)>=0)return!1;l=l.prevZ}for(;f&&f.z<=D;){if(f.x>=S&&f.x<=T&&f.y>=a&&f.y<=L&&f!==r&&f!==i&&nt(c,p,x,y,u,b,f.x,f.y)&&w(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function zt(t,n){let e=t;do{let o=e.prev,r=e.next.next;!K(o,r)&&bt(o,e,e.next,r)&&it(o,r)&&it(r,o)&&(n.push(o.i,e.i,r.i),ot(e),ot(e.next),e=t=r),e=e.next}while(e!==t);return N(e)}function Bt(t,n,e,o,r,s){let i=t;do{let c=i.next.next;for(;c!==i.prev;){if(i.i!==c.i&&_t(i,c)){let x=Mt(i,c);i=N(i,i.next),x=N(x,x.next),rt(i,n,e,o,r,s,0),rt(x,n,e,o,r,s,0);return}c=c.next}i=i.next}while(i!==t)}function It(t,n,e,o){let r=[];for(let s=0,i=n.length;s<i;s++){let c=n[s]*o,x=s<i-1?n[s+1]*o:t.length,u=wt(t,c,x,o,!1);u===u.next&&(u.steiner=!0),r.push(Ut(u))}r.sort(Wt);for(let s=0;s<r.length;s++)e=$t(r[s],e);return e}function Wt(t,n){let e=t.x-n.x;if(e===0&&(e=t.y-n.y,e===0)){let o=(t.next.y-t.y)/(t.next.x-t.x),r=(n.next.y-n.y)/(n.next.x-n.x);e=o-r}return e}function $t(t,n){let e=Gt(t,n);if(!e)return n;let o=Mt(e,t);return N(o,o.next),N(e,e.next)}function Gt(t,n){let e=n,o=t.x,r=t.y,s=-1/0,i;if(K(t,e))return e;do{if(K(t,e.next))return e.next;if(r<=e.y&&r>=e.next.y&&e.next.y!==e.y){let y=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(y<=o&&y>s&&(s=y,i=e.x<e.next.x?e:e.next,y===o))return i}e=e.next}while(e!==n);if(!i)return null;let c=i,x=i.x,u=i.y,p=1/0;e=i;do{if(o>=e.x&&e.x>=x&&o!==e.x&&St(r<u?o:s,r,x,u,r<u?s:o,r,e.x,e.y)){let y=Math.abs(r-e.y)/(o-e.x);it(e,t)&&(y<p||y===p&&(e.x>i.x||e.x===i.x&&Ht(i,e)))&&(i=e,p=y)}e=e.next}while(e!==c);return i}function Ht(t,n){return w(t.prev,t,n.prev)<0&&w(n.next,t,t.next)<0}function Nt(t,n,e,o){let r=t;do r.z===0&&(r.z=pt(r.x,r.y,n,e,o)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,kt(r)}function kt(t){let n,e=1;do{let o=t,r;t=null;let s=null;for(n=0;o;){n++;let i=o,c=0;for(let u=0;u<e&&(c++,i=i.nextZ,!!i);u++);let x=e;for(;c>0||x>0&&i;)c!==0&&(x===0||!i||o.z<=i.z)?(r=o,o=o.nextZ,c--):(r=i,i=i.nextZ,x--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;o=i}s.nextZ=null,e*=2}while(n>1);return t}function pt(t,n,e,o,r){return t=(t-e)*r|0,n=(n-o)*r|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,t|n<<1}function Ut(t){let n=t,e=t;do(n.x<e.x||n.x===e.x&&n.y<e.y)&&(e=n),n=n.next;while(n!==t);return e}function St(t,n,e,o,r,s,i,c){return(r-i)*(n-c)>=(t-i)*(s-c)&&(t-i)*(o-c)>=(e-i)*(n-c)&&(e-i)*(s-c)>=(r-i)*(o-c)}function nt(t,n,e,o,r,s,i,c){return!(t===i&&n===c)&&St(t,n,e,o,r,s,i,c)}function _t(t,n){return t.next.i!==n.i&&t.prev.i!==n.i&&!Kt(t,n)&&(it(t,n)&&it(n,t)&&jt(t,n)&&(w(t.prev,t,n.prev)||w(t,n.prev,n))||K(t,n)&&w(t.prev,t,t.next)>0&&w(n.prev,n,n.next)>0)}function w(t,n,e){return(n.y-t.y)*(e.x-n.x)-(n.x-t.x)*(e.y-n.y)}function K(t,n){return t.x===n.x&&t.y===n.y}function bt(t,n,e,o){let r=lt(w(t,n,e)),s=lt(w(t,n,o)),i=lt(w(e,o,t)),c=lt(w(e,o,n));return!!(r!==s&&i!==c||r===0&&ut(t,e,n)||s===0&&ut(t,o,n)||i===0&&ut(e,t,o)||c===0&&ut(e,n,o))}function ut(t,n,e){return n.x<=Math.max(t.x,e.x)&&n.x>=Math.min(t.x,e.x)&&n.y<=Math.max(t.y,e.y)&&n.y>=Math.min(t.y,e.y)}function lt(t){return t>0?1:t<0?-1:0}function Kt(t,n){let e=t;do{if(e.i!==t.i&&e.next.i!==t.i&&e.i!==n.i&&e.next.i!==n.i&&bt(e,e.next,t,n))return!0;e=e.next}while(e!==t);return!1}function it(t,n){return w(t.prev,t,t.next)<0?w(t,n,t.next)>=0&&w(t,t.prev,n)>=0:w(t,n,t.prev)<0||w(t,t.next,n)<0}function jt(t,n){let e=t,o=!1,r=(t.x+n.x)/2,s=(t.y+n.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&r<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(o=!o),e=e.next;while(e!==t);return o}function Mt(t,n){let e=yt(t.i,t.x,t.y),o=yt(n.i,n.x,n.y),r=t.next,s=n.prev;return t.next=n,n.prev=t,e.next=r,r.prev=e,o.next=e,e.prev=o,s.next=o,o.prev=s,o}function vt(t,n,e,o){let r=yt(t,n,e);return o?(r.next=o.next,r.prev=o,o.next.prev=r,o.next=r):(r.prev=r,r.next=r),r}function ot(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function yt(t,n,e){return{i:t,x:n,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Vt(t,n,e,o){let r=0;for(let s=n,i=e-o;s<e;s+=o)r+=(t[i]-t[s])*(t[s+1]+t[i+1]),i=s;return r}var qt=new h,Jt=new h,B={};B.computeArea2D=function(t){A.defined("positions",t),A.typeOf.number.greaterThanOrEquals("positions.length",t.length,3);let n=t.length,e=0;for(let o=n-1,r=0;r<n;o=r++){let s=t[o],i=t[r];e+=s.x*i.y-i.x*s.y}return e*.5};B.computeWindingOrder2D=function(t){return B.computeArea2D(t)>0?at.COUNTER_CLOCKWISE:at.CLOCKWISE};B.triangulate=function(t,n){A.defined("positions",t);let e=g.packArray(t);return mt(e,n,2)};var Tt=new h,Ot=new h,Zt=new h,At=new h,Ct=new h,Et=new h,R=new h,Lt=new g,Ft=new g,Dt=new g,j=new g;B.computeSubdivision=function(t,n,e,o,r){r=r??X.RADIANS_PER_DEGREE;let s=F(o);A.typeOf.object("ellipsoid",t),A.defined("positions",n),A.defined("indices",e),A.typeOf.number.greaterThanOrEquals("indices.length",e.length,3),A.typeOf.number.equals("indices.length % 3","0",e.length%3,0),A.typeOf.number.greaterThan("granularity",r,0);let i=e.slice(0),c,x=n.length,u=new Array(x*3),p=new Array(x*2),y=0,b=0;for(c=0;c<x;c++){let l=n[c];if(u[y++]=l.x,u[y++]=l.y,u[y++]=l.z,s){let f=o[c];p[b++]=f.x,p[b++]=f.y}}let S=[],a={},T=t.maximumRadius,L=X.chordLength(r,T),z=L*L;for(;i.length>0;){let l=i.pop(),f=i.pop(),m=i.pop(),M=h.fromArray(u,m*3,Tt),C=h.fromArray(u,f*3,Ot),V=h.fromArray(u,l*3,Zt),q,J,I;s&&(q=g.fromArray(p,m*2,Lt),J=g.fromArray(p,f*2,Ft),I=g.fromArray(p,l*2,Dt));let k=h.multiplyByScalar(h.normalize(M,At),T,At),U=h.multiplyByScalar(h.normalize(C,Ct),T,Ct),W=h.multiplyByScalar(h.normalize(V,Et),T,Et),$=h.magnitudeSquared(h.subtract(k,U,R)),G=h.magnitudeSquared(h.subtract(U,W,R)),Q=h.magnitudeSquared(h.subtract(W,k,R)),H=Math.max($,G,Q),O,v,d;H>z?$===H?(O=`${Math.min(m,f)} ${Math.max(m,f)}`,c=a[O],F(c)||(v=h.add(M,C,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(q,J,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(m,c,l),i.push(c,f,l)):G===H?(O=`${Math.min(f,l)} ${Math.max(f,l)}`,c=a[O],F(c)||(v=h.add(C,V,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(J,I,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(f,c,m),i.push(c,l,m)):Q===H&&(O=`${Math.min(l,m)} ${Math.max(l,m)}`,c=a[O],F(c)||(v=h.add(V,M,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(I,q,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(l,c,f),i.push(c,m,f)):(S.push(m),S.push(f),S.push(l))}let D={attributes:{position:new et({componentDatatype:tt.DOUBLE,componentsPerAttribute:3,values:u})},indices:S,primitiveType:xt.TRIANGLES};return s&&(D.attributes.st=new et({componentDatatype:tt.FLOAT,componentsPerAttribute:2,values:p})),new ht(D)};var Qt=new Y,Xt=new Y,Yt=new Y,dt=new Y;B.computeRhumbLineSubdivision=function(t,n,e,o,r){r=r??X.RADIANS_PER_DEGREE;let s=F(o);A.typeOf.object("ellipsoid",t),A.defined("positions",n),A.defined("indices",e),A.typeOf.number.greaterThanOrEquals("indices.length",e.length,3),A.typeOf.number.equals("indices.length % 3","0",e.length%3,0),A.typeOf.number.greaterThan("granularity",r,0);let i=e.slice(0),c,x=n.length,u=new Array(x*3),p=new Array(x*2),y=0,b=0;for(c=0;c<x;c++){let m=n[c];if(u[y++]=m.x,u[y++]=m.y,u[y++]=m.z,s){let M=o[c];p[b++]=M.x,p[b++]=M.y}}let S=[],a={},T=t.maximumRadius,L=X.chordLength(r,T),z=new st(void 0,void 0,t),D=new st(void 0,void 0,t),l=new st(void 0,void 0,t);for(;i.length>0;){let m=i.pop(),M=i.pop(),C=i.pop(),V=h.fromArray(u,C*3,Tt),q=h.fromArray(u,M*3,Ot),J=h.fromArray(u,m*3,Zt),I,k,U;s&&(I=g.fromArray(p,C*2,Lt),k=g.fromArray(p,M*2,Ft),U=g.fromArray(p,m*2,Dt));let W=t.cartesianToCartographic(V,Qt),$=t.cartesianToCartographic(q,Xt),G=t.cartesianToCartographic(J,Yt);z.setEndPoints(W,$);let Q=z.surfaceDistance;D.setEndPoints($,G);let H=D.surfaceDistance;l.setEndPoints(G,W);let O=l.surfaceDistance,v=Math.max(Q,H,O),d,P,_,Z,E;v>L?Q===v?(d=`${Math.min(C,M)} ${Math.max(C,M)}`,c=a[d],F(c)||(P=z.interpolateUsingFraction(.5,dt),_=(W.height+$.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(I,k,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(C,c,m),i.push(c,M,m)):H===v?(d=`${Math.min(M,m)} ${Math.max(M,m)}`,c=a[d],F(c)||(P=D.interpolateUsingFraction(.5,dt),_=($.height+G.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(k,U,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(M,c,C),i.push(c,m,C)):O===v&&(d=`${Math.min(m,C)} ${Math.max(m,C)}`,c=a[d],F(c)||(P=l.interpolateUsingFraction(.5,dt),_=(G.height+W.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(U,I,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(m,c,M),i.push(c,C,M)):(S.push(C),S.push(M),S.push(m))}let f={attributes:{position:new et({componentDatatype:tt.DOUBLE,componentsPerAttribute:3,values:u})},indices:S,primitiveType:xt.TRIANGLES};return s&&(f.attributes.st=new et({componentDatatype:tt.FLOAT,componentsPerAttribute:2,values:p})),new ht(f)};B.scaleToGeodeticHeight=function(t,n,e,o){e=e??gt.default;let r=qt,s=Jt;if(n=n??0,o=o??!0,F(t)){let i=t.length;for(let c=0;c<i;c+=3)h.fromArray(t,c,s),o&&(s=e.scaleToGeodeticSurface(s,s)),n!==0&&(r=e.geodeticSurfaceNormal(s,r),h.multiplyByScalar(r,n,r),h.add(s,r,s)),t[c]=s.x,t[c+1]=s.y,t[c+2]=s.z}return t};var de=B;export{at as a,de as b}; diff --git a/public/Cesium/Workers/chunk-7HTKERZY.js b/public/Cesium/Workers/chunk-7HTKERZY.js new file mode 100644 index 000000000..2565101b6 --- /dev/null +++ b/public/Cesium/Workers/chunk-7HTKERZY.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as y}from"./chunk-DEPHB2WM.js";import{d as L}from"./chunk-4IW2T6GF.js";import{b as d,h as W}from"./chunk-PSPPBZWI.js";import{a as A}from"./chunk-AU7IKHOH.js";import{a as s,b as k,c as T,d as b}from"./chunk-64RSHJUE.js";import{a as E}from"./chunk-3SSKC3VN.js";import{a as I,b as z}from"./chunk-LEYMRMBK.js";import{e as h}from"./chunk-VTAIKJXX.js";function x(o,t){z.typeOf.object("ellipsoid",o),this._ellipsoid=o,this._cameraPosition=new s,this._cameraPositionInScaledSpace=new s,this._distanceToLimbInScaledSpaceSquared=0,h(t)&&(this.cameraPosition=t)}Object.defineProperties(x.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(o){let e=this._ellipsoid.transformPositionToScaledSpace(o,this._cameraPositionInScaledSpace),n=s.magnitudeSquared(e)-1;s.clone(o,this._cameraPosition),this._cameraPositionInScaledSpace=e,this._distanceToLimbInScaledSpaceSquared=n}}});var j=new s;x.prototype.isPointVisible=function(o){let e=this._ellipsoid.transformPositionToScaledSpace(o,j);return D(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};x.prototype.isScaledSpacePointVisible=function(o){return D(o,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var it=new s;x.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(o,t){let e=this._ellipsoid,n,i;return h(t)&&t<0&&e.minimumRadius>-t?(i=it,i.x=this._cameraPosition.x/(e.radii.x+t),i.y=this._cameraPosition.y/(e.radii.y+t),i.z=this._cameraPosition.z/(e.radii.z+t),n=i.x*i.x+i.y*i.y+i.z*i.z-1):(i=this._cameraPositionInScaledSpace,n=this._distanceToLimbInScaledSpaceSquared),D(o,i,n)};x.prototype.computeHorizonCullingPoint=function(o,t,e){return Z(this._ellipsoid,o,t,e)};var U=b.clone(b.UNIT_SPHERE);x.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(o,t,e,n){let i=v(this._ellipsoid,e,U);return Z(i,o,t,n)};x.prototype.computeHorizonCullingPointFromVertices=function(o,t,e,n,i){return Q(this._ellipsoid,o,t,e,n,i)};x.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(o,t,e,n,i,c){let a=v(this._ellipsoid,i,U);return Q(a,o,t,e,n,c)};var nt=[];x.prototype.computeHorizonCullingPointFromRectangle=function(o,t,e){z.typeOf.object("rectangle",o);let n=W.subsample(o,t,0,nt),i=L.fromPoints(n);if(!(s.magnitude(i.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(i.center,n,e)};var at=new s;function v(o,t,e){if(h(t)&&t<0&&o.minimumRadius>-t){let n=s.fromElements(o.radii.x+t,o.radii.y+t,o.radii.z+t,at);o=b.fromCartesian3(n,e)}return o}function Z(o,t,e,n){z.typeOf.object("directionToPoint",t),z.defined("positions",e),h(n)||(n=new s);let i=X(o,t),c=0;for(let a=0,r=e.length;a<r;++a){let m=e[a],l=J(o,m,i);if(l<0)return;c=Math.max(c,l)}return K(i,c,n)}var q=new s;function Q(o,t,e,n,i,c){z.typeOf.object("directionToPoint",t),z.defined("vertices",e),z.typeOf.number("stride",n),h(c)||(c=new s),n=n??3,i=i??s.ZERO;let a=X(o,t),r=0;for(let m=0,l=e.length;m<l;m+=n){q.x=e[m]+i.x,q.y=e[m+1]+i.y,q.z=e[m+2]+i.z;let u=J(o,q,a);if(u<0)return;r=Math.max(r,u)}return K(a,r,c)}function D(o,t,e){let n=t,i=e,c=s.subtract(o,n,j),a=-s.dot(c,n);return!(i<0?a>0:a>i&&a*a/s.magnitudeSquared(c)>i)}var st=new s,ct=new s;function J(o,t,e){let n=o.transformPositionToScaledSpace(t,st),i=s.magnitudeSquared(n),c=Math.sqrt(i),a=s.divideByScalar(n,c,ct);i=Math.max(1,i),c=Math.max(1,c);let r=s.dot(a,e),m=s.magnitude(s.cross(a,e,a)),l=1/c,u=Math.sqrt(i-1)*l;return 1/(r*l-m*u)}function K(o,t,e){if(!(t<=0||t===1/0||t!==t))return s.multiplyByScalar(o,t,e)}var R=new s;function X(o,t){return s.equals(t,s.ZERO)?t:(o.transformPositionToScaledSpace(t,R),s.normalize(R,R))}var Tt=x;var M={};M.getHeight=function(o,t,e){if(!Number.isFinite(t))throw new I("scale must be a finite number.");if(!Number.isFinite(e))throw new I("relativeHeight must be a finite number.");return(o-e)*t+e};var rt=new k;M.getPosition=function(o,t,e,n,i){let c=t.cartesianToCartographic(o,rt);if(!h(c))return s.clone(o,i);let a=M.getHeight(c.height,e,n);return s.fromRadians(c.longitude,c.latitude,a,t,i)};var Y=M;var mt={NONE:0,BITS12:1},S=Object.freeze(mt);var _=new s,dt=new s,f=new T,O=new d,ht=new d,lt=Math.pow(2,12);function p(o,t,e,n,i,c,a,r,m,l){let u=S.NONE,g,N;if(h(t)&&h(e)&&h(n)&&h(i)){let C=t.minimum,V=t.maximum,P=s.subtract(V,C,dt),B=n-e;Math.max(s.maximumComponent(P),B)<lt-1?u=S.BITS12:u=S.NONE,g=d.inverseTransformation(i,new d);let tt=s.negate(C,_);d.multiply(d.fromTranslation(tt,O),g,g);let w=_;w.x=1/P.x,w.y=1/P.y,w.z=1/P.z,d.multiply(d.fromScale(w,O),g,g),N=d.clone(i),d.setTranslation(N,s.ZERO,N),i=d.clone(i,new d);let ot=d.fromTranslation(C,O),et=d.fromScale(P,ht),F=d.multiply(ot,et,O);d.multiply(i,F,i),d.multiply(N,F,N)}this.quantization=u,this.minimumHeight=e,this.maximumHeight=n,this.center=s.clone(o),this.toScaledENU=g,this.fromScaledENU=i,this.matrix=N,this.hasVertexNormals=c,this.hasWebMercatorT=a??!1,this.hasGeodeticSurfaceNormals=r??!1,this.exaggeration=m??1,this.exaggerationRelativeHeight=l??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}p.prototype.encode=function(o,t,e,n,i,c,a,r){let m=n.x,l=n.y;if(this.quantization===S.BITS12){e=d.multiplyByPoint(this.toScaledENU,e,_),e.x=E.clamp(e.x,0,1),e.y=E.clamp(e.y,0,1),e.z=E.clamp(e.z,0,1);let u=this.maximumHeight-this.minimumHeight,g=E.clamp((i-this.minimumHeight)/u,0,1);T.fromElements(e.x,e.y,f);let N=y.compressTextureCoordinates(f);T.fromElements(e.z,g,f);let C=y.compressTextureCoordinates(f);T.fromElements(m,l,f);let V=y.compressTextureCoordinates(f);if(o[t++]=N,o[t++]=C,o[t++]=V,this.hasWebMercatorT){T.fromElements(a,0,f);let P=y.compressTextureCoordinates(f);o[t++]=P}}else s.subtract(e,this.center,_),o[t++]=_.x,o[t++]=_.y,o[t++]=_.z,o[t++]=i,o[t++]=m,o[t++]=l,this.hasWebMercatorT&&(o[t++]=a);return this.hasVertexNormals&&(o[t++]=y.octPackFloat(c)),this.hasGeodeticSurfaceNormals&&(o[t++]=r.x,o[t++]=r.y,o[t++]=r.z),t};var pt=new s,$=new s;p.prototype.addGeodeticSurfaceNormals=function(o,t,e){if(this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=o.length/n;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let c=this.stride;for(let a=0;a<i;a++){for(let u=0;u<n;u++){let g=a*n+u,N=a*c+u;t[N]=o[g]}let r=this.decodePosition(t,a,pt),m=e.geodeticSurfaceNormal(r,$),l=a*c+this._offsetGeodeticSurfaceNormal;t[l]=m.x,t[l+1]=m.y,t[l+2]=m.z}};p.prototype.removeGeodeticSurfaceNormals=function(o,t){if(!this.hasGeodeticSurfaceNormals)return;let e=this.stride,n=o.length/e;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let i=this.stride;for(let c=0;c<n;c++)for(let a=0;a<i;a++){let r=c*e+a,m=c*i+a;t[m]=o[r]}};p.prototype.decodePosition=function(o,t,e){if(h(e)||(e=new s),t*=this.stride,this.quantization===S.BITS12){let n=y.decompressTextureCoordinates(o[t],f);e.x=n.x,e.y=n.y;let i=y.decompressTextureCoordinates(o[t+1],f);return e.z=i.x,d.multiplyByPoint(this.fromScaledENU,e,e)}return e.x=o[t],e.y=o[t+1],e.z=o[t+2],s.add(e,this.center,e)};p.prototype.getExaggeratedPosition=function(o,t,e){e=this.decodePosition(o,t,e);let n=this.exaggeration,i=this.exaggerationRelativeHeight;if(n!==1&&this.hasGeodeticSurfaceNormals){let a=this.decodeGeodeticSurfaceNormal(o,t,$),r=this.decodeHeight(o,t),m=Y.getHeight(r,n,i)-r;e.x+=a.x*m,e.y+=a.y*m,e.z+=a.z*m}return e};p.prototype.decodeTextureCoordinates=function(o,t,e){return h(e)||(e=new T),t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+2],e):T.fromElements(o[t+4],o[t+5],e)};p.prototype.decodeHeight=function(o,t){return t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+1],f).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:o[t+3]};p.prototype.decodeWebMercatorT=function(o,t){return t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+3],f).x:o[t+6]};p.prototype.getOctEncodedNormal=function(o,t,e){t=t*this.stride+this._offsetVertexNormal;let n=o[t]/256,i=Math.floor(n),c=(n-i)*256;return T.fromElements(i,c,e)};p.prototype.decodeGeodeticSurfaceNormal=function(o,t,e){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,e.x=o[t],e.y=o[t+1],e.z=o[t+2],e};p.prototype._calculateStrideAndOffsets=function(){let o=0;switch(this.quantization){case S.BITS12:o+=3;break;default:o+=6}this.hasWebMercatorT&&(o+=1),this.hasVertexNormals&&(this._offsetVertexNormal=o,o+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=o,o+=3),this.stride=o};var G={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},H={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};p.prototype.getAttributes=function(o){let t=A.FLOAT,e=A.getSizeInBytes(t),n=this.stride*e,i=0,c=[];function a(r,m){c.push({index:r,vertexBuffer:o,componentDatatype:t,componentsPerAttribute:m,offsetInBytes:i,strideInBytes:n}),i+=m*e}if(this.quantization===S.NONE){a(G.position3DAndHeight,4);let r=2;r+=this.hasWebMercatorT?1:0,r+=this.hasVertexNormals?1:0,a(G.textureCoordAndEncodedNormals,r),this.hasGeodeticSurfaceNormals&&a(G.geodeticSurfaceNormal,3)}else{let r=this.hasWebMercatorT||this.hasVertexNormals,m=this.hasWebMercatorT&&this.hasVertexNormals;a(H.compressed0,r?4:3),m&&a(H.compressed1,1),this.hasGeodeticSurfaceNormals&&a(H.geodeticSurfaceNormal,3)}return c};p.prototype.getAttributeLocations=function(){return this.quantization===S.NONE?G:H};p.clone=function(o,t){if(h(o))return h(t)||(t=new p),t.quantization=o.quantization,t.minimumHeight=o.minimumHeight,t.maximumHeight=o.maximumHeight,t.center=s.clone(o.center),t.toScaledENU=d.clone(o.toScaledENU),t.fromScaledENU=d.clone(o.fromScaledENU),t.matrix=d.clone(o.matrix),t.hasVertexNormals=o.hasVertexNormals,t.hasWebMercatorT=o.hasWebMercatorT,t.hasGeodeticSurfaceNormals=o.hasGeodeticSurfaceNormals,t.exaggeration=o.exaggeration,t.exaggerationRelativeHeight=o.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Dt=p;export{Tt as a,Dt as b}; diff --git a/public/Cesium/Workers/chunk-A56XVLQR.js b/public/Cesium/Workers/chunk-A56XVLQR.js new file mode 100644 index 000000000..cf81e0eda --- /dev/null +++ b/public/Cesium/Workers/chunk-A56XVLQR.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as e}from"./chunk-64RSHJUE.js";function r(t){t=t??e.EMPTY_OBJECT,this.position=t.position,this.normal=t.normal,this.st=t.st,this.bitangent=t.bitangent,this.tangent=t.tangent,this.color=t.color}var n=r;export{n as a}; diff --git a/public/Cesium/Workers/chunk-AJYK4IVJ.js b/public/Cesium/Workers/chunk-AJYK4IVJ.js new file mode 100644 index 000000000..85952b791 --- /dev/null +++ b/public/Cesium/Workers/chunk-AJYK4IVJ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-J6UP6FLE.js";import{a as ct}from"./chunk-VW6VD53G.js";import{a as Z,b as H}from"./chunk-77IHZJJ3.js";import{a as V}from"./chunk-3W4GT7KQ.js";import{a as U}from"./chunk-G5AGHVVC.js";import{b as ot}from"./chunk-DMEY62ID.js";import{a as it}from"./chunk-HTFSEEMT.js";import{a as nt}from"./chunk-OFUUQVMR.js";import{a as et}from"./chunk-A56XVLQR.js";import{b as J,c as X,d as z}from"./chunk-RCV6KWXS.js";import{f as K}from"./chunk-PSPPBZWI.js";import{a as k}from"./chunk-AU7IKHOH.js";import{a as w,b as q,c as M,d as tt,e as F}from"./chunk-64RSHJUE.js";import{a as I}from"./chunk-3SSKC3VN.js";import{e as x}from"./chunk-VTAIKJXX.js";function ft(n,i){this.positions=x(n)?n:[],this.holes=x(i)?i:[]}var st=ft;function S(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(S.prototype,{length:{get:function(){return this._length}}});S.prototype.enqueue=function(n){this._array.push(n),this._length++};S.prototype.dequeue=function(){if(this._length===0)return;let n=this._array,i=this._offset,u=n[i];return n[i]=void 0,i++,i>10&&i*2>n.length&&(this._array=n.slice(i),i=0),this._offset=i,this._length--,u};S.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};S.prototype.contains=function(n){return this._array.indexOf(n)!==-1};S.prototype.clear=function(){this._array.length=this._offset=this._length=0};S.prototype.sort=function(n){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(n)};var $=S;var b={};b.computeHierarchyPackedLength=function(n,i){let u=0,s=[n];for(;s.length>0;){let c=s.pop();if(!x(c))continue;u+=2;let a=c.positions,t=c.holes;if(x(a)&&a.length>0&&(u+=a.length*i.packedLength),x(t)){let o=t.length;for(let e=0;e<o;++e)s.push(t[e])}}return u};b.packPolygonHierarchy=function(n,i,u,s){let c=[n];for(;c.length>0;){let a=c.pop();if(!x(a))continue;let t=a.positions,o=a.holes;if(i[u++]=x(t)?t.length:0,i[u++]=x(o)?o.length:0,x(t)){let e=t.length;for(let r=0;r<e;++r,u+=s.packedLength)s.pack(t[r],i,u)}if(x(o)){let e=o.length;for(let r=0;r<e;++r)c.push(o[r])}}return u};b.unpackPolygonHierarchy=function(n,i,u){let s=n[i++],c=n[i++],a=new Array(s),t=c>0?new Array(c):void 0;for(let o=0;o<s;++o,i+=u.packedLength)a[o]=u.unpack(n,i);for(let o=0;o<c;++o)t[o]=b.unpackPolygonHierarchy(n,i,u),i=t[o].startingIndex,delete t[o].startingIndex;return{positions:a,holes:t,startingIndex:i}};var O=new M;function at(n,i,u,s){return M.subtract(i,n,O),M.multiplyByScalar(O,u/s,O),M.add(n,O,O),[O.x,O.y]}var G=new w;function gt(n,i,u,s){return w.subtract(i,n,G),w.multiplyByScalar(G,u/s,G),w.add(n,G,G),[G.x,G.y,G.z]}b.subdivideLineCount=function(n,i,u){let c=w.distance(n,i)/u,a=Math.max(0,Math.ceil(I.log2(c)));return Math.pow(2,a)};var j=new q,Q=new q,dt=new q,pt=new w,Y=new U;b.subdivideRhumbLineCount=function(n,i,u,s){let c=n.cartesianToCartographic(i,j),a=n.cartesianToCartographic(u,Q),o=new U(c,a,n).surfaceDistance/s,e=Math.max(0,Math.ceil(I.log2(o)));return Math.pow(2,e)};b.subdivideTexcoordLine=function(n,i,u,s,c,a){let t=b.subdivideLineCount(u,s,c),o=M.distance(n,i),e=o/t,r=a;r.length=t*2;let l=0;for(let h=0;h<t;h++){let f=at(n,i,h*e,o);r[l++]=f[0],r[l++]=f[1]}return r};b.subdivideLine=function(n,i,u,s){let c=b.subdivideLineCount(n,i,u),a=w.distance(n,i),t=a/c;x(s)||(s=[]);let o=s;o.length=c*3;let e=0;for(let r=0;r<c;r++){let l=gt(n,i,r*t,a);o[e++]=l[0],o[e++]=l[1],o[e++]=l[2]}return o};b.subdivideTexcoordRhumbLine=function(n,i,u,s,c,a,t){let o=u.cartesianToCartographic(s,j),e=u.cartesianToCartographic(c,Q);Y.setEndPoints(o,e);let r=Y.surfaceDistance/a,l=Math.max(0,Math.ceil(I.log2(r))),h=Math.pow(2,l),f=M.distance(n,i),d=f/h,m=t;m.length=h*2;let p=0;for(let g=0;g<h;g++){let y=at(n,i,g*d,f);m[p++]=y[0],m[p++]=y[1]}return m};b.subdivideRhumbLine=function(n,i,u,s,c){let a=n.cartesianToCartographic(i,j),t=n.cartesianToCartographic(u,Q),o=new U(a,t,n);if(x(c)||(c=[]),o.surfaceDistance<=s)return c.length=3,c[0]=i.x,c[1]=i.y,c[2]=i.z,c;let e=o.surfaceDistance/s,r=Math.max(0,Math.ceil(I.log2(e))),l=Math.pow(2,r),h=o.surfaceDistance/l,f=c;f.length=l*3;let d=0;for(let m=0;m<l;m++){let p=o.interpolateUsingSurfaceDistance(m*h,dt),g=n.cartographicToCartesian(p,pt);f[d++]=g.x,f[d++]=g.y,f[d++]=g.z}return f};var mt=new w,yt=new w,xt=new w,wt=new w;b.scaleToGeodeticHeightExtruded=function(n,i,u,s,c){s=s??tt.default;let a=mt,t=yt,o=xt,e=wt;if(x(n)&&x(n.attributes)&&x(n.attributes.position)){let r=n.attributes.position.values,l=r.length/2;for(let h=0;h<l;h+=3)w.fromArray(r,h,o),s.geodeticSurfaceNormal(o,a),e=s.scaleToGeodeticSurface(o,e),t=w.multiplyByScalar(a,u,t),t=w.add(e,t,t),r[h+l]=t.x,r[h+1+l]=t.y,r[h+2+l]=t.z,c&&(e=w.clone(o,e)),t=w.multiplyByScalar(a,i,t),t=w.add(e,t,t),r[h]=t.x,r[h+1]=t.y,r[h+2]=t.z}return n};b.polygonOutlinesFromHierarchy=function(n,i,u){let s=[],c=new $;c.enqueue(n);let a,t,o;for(;c.length!==0;){let e=c.dequeue(),r=e.positions;if(i)for(o=r.length,a=0;a<o;a++)u.scaleToGeodeticSurface(r[a],r[a]);if(r=V(r,w.equalsEpsilon,!0),r.length<3)continue;let l=e.holes?e.holes.length:0;for(a=0;a<l;a++){let h=e.holes[a],f=h.positions;if(i)for(o=f.length,t=0;t<o;++t)u.scaleToGeodeticSurface(f[t],f[t]);if(f=V(f,w.equalsEpsilon,!0),f.length<3)continue;s.push(f);let d=0;for(x(h.holes)&&(d=h.holes.length),t=0;t<d;t++)c.enqueue(h.holes[t])}s.push(r)}return s};var bt=new q;function Lt(n,i,u){let s=u.cartesianToCartographic(n,j),c=u.cartesianToCartographic(i,Q);if(Math.sign(s.latitude)===Math.sign(c.latitude))return;Y.setEndPoints(s,c);let a=Y.findIntersectionWithLatitude(0,bt);if(!x(a))return;let t=Math.min(s.longitude,c.longitude),o=Math.max(s.longitude,c.longitude);if(Math.abs(o-t)>I.PI){let e=t;t=o,o=e}if(!(a.longitude<t||a.longitude>o))return u.cartographicToCartesian(a)}function Tt(n,i,u,s){if(s===R.RHUMB)return Lt(n,i,u);let c=ot.lineSegmentPlane(n,i,it.ORIGIN_XY_PLANE);if(x(c))return u.scaleToGeodeticSurface(c,c)}var Et=new q;function vt(n,i,u){let s=[],c,a,t,o,e,r=0;for(;r<n.length;){c=n[r],a=n[(r+1)%n.length],t=I.sign(c.z),o=I.sign(a.z);let l=h=>i.cartesianToCartographic(h,Et).longitude;if(t===0)s.push({position:r,type:t,visited:!1,next:o,theta:l(c)});else if(o!==0){if(e=Tt(c,a,i,u),++r,!x(e))continue;n.splice(r,0,e),s.push({position:r,type:t,visited:!1,next:o,theta:l(e)})}++r}return s}function ht(n,i,u,s,c,a,t){let o=[],e=a,r=h=>f=>f.position===h,l=[];do{let h=u[e];o.push(h);let f=s.findIndex(r(e)),d=s[f];if(!x(d)){++e;continue}let{visited:m,type:p,next:g}=d;if(d.visited=!0,p===0){if(g===0){let C=s[f-(t?1:-1)];if(C?.position===e+1)C.visited=!0;else{++e;continue}}if(!m&&t&&g>0||a===e&&!t&&g<0){++e;continue}}if(!(t?p>=0:p<=0)){++e;continue}m||l.push(e);let L=f+(t?1:-1),_=s[L];if(!x(_)){++e;continue}e=_.position}while(e<u.length&&e>=0&&e!==a&&o.length<u.length);n.splice(i,c,o);for(let h of l)i=ht(n,++i,u,s,0,h,!t);return i}b.splitPolygonsOnEquator=function(n,i,u,s){x(s)||(s=[]),s.splice(0,0,...n),s.length=n.length;let c=0;for(;c<s.length;){let a=s[c],t=a.slice();if(a.length<3){s[c]=t,++c;continue}let o=vt(t,i,u);if(t.length===a.length||o.length<=1){s[c]=t,++c;continue}o.sort((r,l)=>r.theta-l.theta);let e=t[0].z>=0;c=ht(s,c,t,o,1,0,e)}return s};b.polygonsFromHierarchy=function(n,i,u,s,c,a){let t=[],o=[],e=new $;e.enqueue(n);let r=x(a);for(;e.length!==0;){let l=e.dequeue(),h=l.positions,f=l.holes,d,m;if(s)for(m=h.length,d=0;d<m;d++)c.scaleToGeodeticSurface(h[d],h[d]);if(i||(h=V(h,w.equalsEpsilon,!0)),h.length<3)continue;let p=u(h);if(!x(p))continue;let g=[],y=H.computeWindingOrder2D(p);if(y===Z.CLOCKWISE&&(p.reverse(),h=h.slice().reverse()),r){r=!1;let P=[h];if(P=a(P,P),P.length>1){for(let v of P)e.enqueue(new st(v,f));continue}}let L=h.slice(),_=x(f)?f.length:0,C=[],T;for(d=0;d<_;d++){let P=f[d],v=P.positions;if(s)for(m=v.length,T=0;T<m;++T)c.scaleToGeodeticSurface(v[T],v[T]);if(i||(v=V(v,w.equalsEpsilon,!0)),v.length<3)continue;let E=u(v);if(!x(E))continue;y=H.computeWindingOrder2D(E),y===Z.CLOCKWISE&&(E.reverse(),v=v.slice().reverse()),C.push(v),g.push(L.length),L=L.concat(v),p=p.concat(E);let D=0;for(x(P.holes)&&(D=P.holes.length),T=0;T<D;T++)e.enqueue(P.holes[T])}t.push({outerRing:h,holes:C}),o.push({positions:L,positions2D:p,holes:g})}return{hierarchy:t,polygons:o}};var Ct=new M,Pt=new w,Dt=new K,It=new F;b.computeBoundingRectangle=function(n,i,u,s,c){let a=K.fromAxisAngle(n,s,Dt),t=F.fromQuaternion(a,It),o=Number.POSITIVE_INFINITY,e=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,h=u.length;for(let f=0;f<h;++f){let d=w.clone(u[f],Pt);F.multiplyByVector(t,d,d);let m=i(d,Ct);x(m)&&(o=Math.min(o,m.x),e=Math.max(e,m.x),r=Math.min(r,m.y),l=Math.max(l,m.y))}return c.x=o,c.y=r,c.width=e-o,c.height=l-r,c};b.createGeometryFromPositions=function(n,i,u,s,c,a,t){let o=H.triangulate(i.positions2D,i.holes);o.length<3&&(o=[0,1,2]);let e=i.positions,r=x(u),l=r?u.positions:void 0;if(c){let h=e.length,f=new Array(h*3),d=0;for(let g=0;g<h;g++){let y=e[g];f[d++]=y.x,f[d++]=y.y,f[d++]=y.z}let m={attributes:{position:new z({componentDatatype:k.DOUBLE,componentsPerAttribute:3,values:f})},indices:o,primitiveType:J.TRIANGLES};r&&(m.attributes.st=new z({componentDatatype:k.FLOAT,componentsPerAttribute:2,values:M.packArray(l)}));let p=new X(m);return a.normal?ct.computeNormal(p):p}if(t===R.GEODESIC)return H.computeSubdivision(n,e,o,l,s);if(t===R.RHUMB)return H.computeRhumbLineSubdivision(n,e,o,l,s)};var rt=[],ut=[],_t=new w,At=new w;b.computeWallGeometry=function(n,i,u,s,c,a){let t,o,e,r,l,h,f,d,m,p=n.length,g=0,y=0,L=x(i),_=L?i.positions:void 0;if(c)for(o=p*3*2,t=new Array(o*2),L&&(m=p*2*2,d=new Array(m*2)),e=0;e<p;e++)r=n[e],l=n[(e+1)%p],t[g]=t[g+o]=r.x,++g,t[g]=t[g+o]=r.y,++g,t[g]=t[g+o]=r.z,++g,t[g]=t[g+o]=l.x,++g,t[g]=t[g+o]=l.y,++g,t[g]=t[g+o]=l.z,++g,L&&(h=_[e],f=_[(e+1)%p],d[y]=d[y+m]=h.x,++y,d[y]=d[y+m]=h.y,++y,d[y]=d[y+m]=f.x,++y,d[y]=d[y+m]=f.y,++y);else{let E=I.chordLength(s,u.maximumRadius),D=0;if(a===R.GEODESIC)for(e=0;e<p;e++)D+=b.subdivideLineCount(n[e],n[(e+1)%p],E);else if(a===R.RHUMB)for(e=0;e<p;e++)D+=b.subdivideRhumbLineCount(u,n[e],n[(e+1)%p],E);for(o=(D+p)*3,t=new Array(o*2),L&&(m=(D+p)*2,d=new Array(m*2)),e=0;e<p;e++){r=n[e],l=n[(e+1)%p];let A,N;L&&(h=_[e],f=_[(e+1)%p]),a===R.GEODESIC?(A=b.subdivideLine(r,l,E,ut),L&&(N=b.subdivideTexcoordLine(h,f,r,l,E,rt))):a===R.RHUMB&&(A=b.subdivideRhumbLine(u,r,l,E,ut),L&&(N=b.subdivideTexcoordRhumbLine(h,f,u,r,l,E,rt)));let lt=A.length;for(let B=0;B<lt;++B,++g)t[g]=A[B],t[g+o]=A[B];if(t[g]=l.x,t[g+o]=l.x,++g,t[g]=l.y,t[g+o]=l.y,++g,t[g]=l.z,t[g+o]=l.z,++g,L){let B=N.length;for(let W=0;W<B;++W,++y)d[y]=N[W],d[y+m]=N[W];d[y]=f.x,d[y+m]=f.x,++y,d[y]=f.y,d[y+m]=f.y,++y}}}p=t.length;let C=nt.createTypedArray(p/3,p-n.length*6),T=0;for(p/=6,e=0;e<p;e++){let E=e,D=E+1,A=E+p,N=A+1;r=w.fromArray(t,E*3,_t),l=w.fromArray(t,D*3,At),!w.equalsEpsilon(r,l,I.EPSILON10,I.EPSILON10)&&(C[T++]=E,C[T++]=A,C[T++]=D,C[T++]=D,C[T++]=A,C[T++]=N)}let P={attributes:new et({position:new z({componentDatatype:k.DOUBLE,componentsPerAttribute:3,values:t})}),indices:C,primitiveType:J.TRIANGLES};return L&&(P.attributes.st=new z({componentDatatype:k.FLOAT,componentsPerAttribute:2,values:d})),new X(P)};var ie=b;export{ie as a}; diff --git a/public/Cesium/Workers/chunk-ARG42DC4.js b/public/Cesium/Workers/chunk-ARG42DC4.js new file mode 100644 index 000000000..e9121f966 --- /dev/null +++ b/public/Cesium/Workers/chunk-ARG42DC4.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as w}from"./chunk-3SSKC3VN.js";var C={};C.computePositions=function(I,f,b,n,e){let m=I*.5,i=-m,s=n+n,P=e?2*s:s,t=new Float64Array(P*3),r,c=0,o=0,p=e?s*3:0,a=e?(s+n)*3:n*3;for(r=0;r<n;r++){let y=r/n*w.TWO_PI,x=Math.cos(y),h=Math.sin(y),u=x*b,M=h*b,O=x*f,d=h*f;t[o+p]=u,t[o+p+1]=M,t[o+p+2]=i,t[o+a]=O,t[o+a+1]=d,t[o+a+2]=m,o+=3,e&&(t[c++]=u,t[c++]=M,t[c++]=i,t[c++]=O,t[c++]=d,t[c++]=m)}return t};var Y=C;export{Y as a}; diff --git a/public/Cesium/Workers/chunk-AU7IKHOH.js b/public/Cesium/Workers/chunk-AU7IKHOH.js new file mode 100644 index 000000000..d7d2446af --- /dev/null +++ b/public/Cesium/Workers/chunk-AU7IKHOH.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as N}from"./chunk-OSW76XDF.js";import{a}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";var r={BYTE:N.BYTE,UNSIGNED_BYTE:N.UNSIGNED_BYTE,SHORT:N.SHORT,UNSIGNED_SHORT:N.UNSIGNED_SHORT,INT:N.INT,UNSIGNED_INT:N.UNSIGNED_INT,FLOAT:N.FLOAT,DOUBLE:N.DOUBLE};r.getSizeInBytes=function(n){if(!T(n))throw new a("value is required.");switch(n){case r.BYTE:return Int8Array.BYTES_PER_ELEMENT;case r.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case r.SHORT:return Int16Array.BYTES_PER_ELEMENT;case r.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case r.INT:return Int32Array.BYTES_PER_ELEMENT;case r.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case r.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case r.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new a("componentDatatype is not a valid value.")}};r.fromTypedArray=function(n){if(n instanceof Int8Array)return r.BYTE;if(n instanceof Uint8Array)return r.UNSIGNED_BYTE;if(n instanceof Int16Array)return r.SHORT;if(n instanceof Uint16Array)return r.UNSIGNED_SHORT;if(n instanceof Int32Array)return r.INT;if(n instanceof Uint32Array)return r.UNSIGNED_INT;if(n instanceof Float32Array)return r.FLOAT;if(n instanceof Float64Array)return r.DOUBLE;throw new a("array must be an Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, or Float64Array.")};r.validate=function(n){return T(n)&&(n===r.BYTE||n===r.UNSIGNED_BYTE||n===r.SHORT||n===r.UNSIGNED_SHORT||n===r.INT||n===r.UNSIGNED_INT||n===r.FLOAT||n===r.DOUBLE)};r.createTypedArray=function(n,e){if(!T(n))throw new a("componentDatatype is required.");if(!T(e))throw new a("valuesOrLength is required.");switch(n){case r.BYTE:return new Int8Array(e);case r.UNSIGNED_BYTE:return new Uint8Array(e);case r.SHORT:return new Int16Array(e);case r.UNSIGNED_SHORT:return new Uint16Array(e);case r.INT:return new Int32Array(e);case r.UNSIGNED_INT:return new Uint32Array(e);case r.FLOAT:return new Float32Array(e);case r.DOUBLE:return new Float64Array(e);default:throw new a("componentDatatype is not a valid value.")}};r.createArrayBufferView=function(n,e,E,t){if(!T(n))throw new a("componentDatatype is required.");if(!T(e))throw new a("buffer is required.");switch(E=E??0,t=t??(e.byteLength-E)/r.getSizeInBytes(n),n){case r.BYTE:return new Int8Array(e,E,t);case r.UNSIGNED_BYTE:return new Uint8Array(e,E,t);case r.SHORT:return new Int16Array(e,E,t);case r.UNSIGNED_SHORT:return new Uint16Array(e,E,t);case r.INT:return new Int32Array(e,E,t);case r.UNSIGNED_INT:return new Uint32Array(e,E,t);case r.FLOAT:return new Float32Array(e,E,t);case r.DOUBLE:return new Float64Array(e,E,t);default:throw new a("componentDatatype is not a valid value.")}};r.fromName=function(n){switch(n){case"BYTE":return r.BYTE;case"UNSIGNED_BYTE":return r.UNSIGNED_BYTE;case"SHORT":return r.SHORT;case"UNSIGNED_SHORT":return r.UNSIGNED_SHORT;case"INT":return r.INT;case"UNSIGNED_INT":return r.UNSIGNED_INT;case"FLOAT":return r.FLOAT;case"DOUBLE":return r.DOUBLE;default:throw new a("name is not a valid value.")}};var A=Object.freeze(r);export{A as a}; diff --git a/public/Cesium/Workers/chunk-B4AA3ARO.js b/public/Cesium/Workers/chunk-B4AA3ARO.js new file mode 100644 index 000000000..1cb659c9a --- /dev/null +++ b/public/Cesium/Workers/chunk-B4AA3ARO.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as _}from"./chunk-XRL4AVS5.js";import{a as te}from"./chunk-TCGIRNHN.js";import{a as ie,b as j,f as Z,g as fe}from"./chunk-PSPPBZWI.js";import{a as e,b as se,c as ee,e as O}from"./chunk-64RSHJUE.js";import{a as Q}from"./chunk-3SSKC3VN.js";import{a as le}from"./chunk-LEYMRMBK.js";import{e as $}from"./chunk-VTAIKJXX.js";var Ee={ROUNDED:0,MITERED:1,BEVELED:2},G=Object.freeze(Ee);var me={};function P(r,n){if(!$(r))throw new le("identifier is required.");$(me[r])||(me[r]=!0,console.warn(n??r))}P.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";P.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";P.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";P.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var ue=P;var w=[new e,new e],Se=new e,Te=new e,Be=new e,Ce=new e,ze=new e,Ae=new e,be=new e,Oe=new e,ve=new e,I=new e,W=new e,R={},re=new se;function De(r,n){let a=new Array(r.length);for(let o=0;o<r.length;o++){let t=r[o];re=n.cartesianToCartographic(t,re),a[o]=re.height,r[o]=n.scaleToGeodeticSurface(t,t)}return a}function ne(r,n,a,o){let t=r[0],c=r[1],f=e.angleBetween(t,c),l=Math.ceil(f/o),m=new Array(l),s;if(n===a){for(s=0;s<l;s++)m[s]=n;return m.push(a),m}let d=(a-n)/l;for(s=1;s<l;s++){let x=n+s*d;m[s]=x}return m[0]=n,m.push(a),m}var X=new e,Y=new e;function je(r,n,a,o){let t=new te(a,o),c=t.projectPointOntoPlane(e.add(a,r,X),X),f=t.projectPointOntoPlane(e.add(a,n,Y),Y),l=ee.angleBetween(c,f);return f.x*c.y-f.y*c.x>=0?-l:l}var He=new e(-1,0,0),H=new j,Me=new j,oe=new O,Ne=O.IDENTITY.clone(),Ve=new e,Fe=new ie,he=new e;function v(r,n,a,o,t,c,f,l){let m=Ve,s=Fe;H=fe.eastNorthUpToFixedFrame(r,t,H),m=j.multiplyByPointAsVector(H,He,m),m=e.normalize(m,m);let S=je(m,n,r,t);oe=O.fromRotationZ(S,oe),he.z=c,H=j.multiplyTransformation(H,j.fromRotationTranslation(oe,he,Me),H);let d=Ne;d[0]=f;for(let x=0;x<l;x++)for(let i=0;i<a.length;i+=3)s=e.fromArray(a,i,s),s=O.multiplyByVector(d,s,s),s=j.multiplyByPoint(H,s,s),o.push(s.x,s.y,s.z);return o}var Ge=new e;function ce(r,n,a,o,t,c,f){for(let l=0;l<r.length;l+=3){let m=e.fromArray(r,l,Ge);o=v(m,n,a,o,t,c[l/3],f,1)}return o}function Ie(r,n){let a=r.length,o=new Array(a*6),t=0,c=n.x+n.width/2,f=n.y+n.height/2,l=r[0];o[t++]=l.x-c,o[t++]=0,o[t++]=l.y-f;for(let m=1;m<a;m++){l=r[m];let s=l.x-c,S=l.y-f;o[t++]=s,o[t++]=0,o[t++]=S,o[t++]=s,o[t++]=0,o[t++]=S}return l=r[0],o[t++]=l.x-c,o[t++]=0,o[t++]=l.y-f,o}function de(r,n){let a=r.length,o=new Array(a*3),t=0,c=n.x+n.width/2,f=n.y+n.height/2;for(let l=0;l<a;l++)o[t++]=r[l].x-c,o[t++]=0,o[t++]=r[l].y-f;return o}var ge=new Z,ye=new e,we=new O;function pe(r,n,a,o,t,c,f,l,m,s){let S=e.angleBetween(e.subtract(n,r,I),e.subtract(a,r,W)),d=o===G.BEVELED?0:Math.ceil(S/Q.toRadians(5)),x;t?x=O.fromQuaternion(Z.fromAxisAngle(e.negate(r,I),S/(d+1),ge),we):x=O.fromQuaternion(Z.fromAxisAngle(r,S/(d+1),ge),we);let i,g;if(n=e.clone(n,ye),d>0){let D=s?2:1;for(let y=0;y<d;y++)n=O.multiplyByVector(x,n,n),i=e.subtract(n,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(n,W),f=v(g,i,l,f,c,m,1,D)}else i=e.subtract(n,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(n,W),f=v(g,i,l,f,c,m,1,1),a=e.clone(a,ye),i=e.subtract(a,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(a,W),f=v(g,i,l,f,c,m,1,1);return f}R.removeDuplicatesFromShape=function(r){let n=r.length,a=[];for(let o=n-1,t=0;t<n;o=t++){let c=r[o],f=r[t];ee.equals(c,f)||a.push(f)}return a};R.angleIsGreaterThanPi=function(r,n,a,o){let t=new te(a,o),c=t.projectPointOntoPlane(e.add(a,r,X),X),f=t.projectPointOntoPlane(e.add(a,n,Y),Y);return f.x*c.y-f.y*c.x>=0};var Le=new e,qe=new e;R.computePositions=function(r,n,a,o,t){let c=o._ellipsoid,f=De(r,c),l=o._granularity,m=o._cornerType,s=t?Ie(n,a):de(n,a),S=t?de(n,a):void 0,d=a.height/2,x=a.width/2,i=r.length,g=[],D=t?[]:void 0,y=Se,b=Te,h=Be,E=Ce,B=ze,C=Ae,z=be,u=Oe,T=ve,p=r[0],M=r[1];E=c.geodeticSurfaceNormal(p,E),y=e.subtract(M,p,y),y=e.normalize(y,y),u=e.cross(E,y,u),u=e.normalize(u,u);let N=f[0],A=f[1];t&&(D=v(p,u,S,D,c,N+d,1,1)),T=e.clone(p,T),p=M,b=e.negate(y,b);let V,F;for(let U=1;U<i-1;U++){let ae=t?2:1;if(M=r[U+1],p.equals(M)){ue("Positions are too close and are considered equivalent with rounding error.");continue}y=e.subtract(M,p,y),y=e.normalize(y,y),E=c.geodeticSurfaceNormal(p,E);let L=e.multiplyByScalar(E,e.dot(y,E),Le);e.subtract(y,L,L),e.normalize(L,L);let q=e.multiplyByScalar(E,e.dot(b,E),qe);if(e.subtract(b,q,q),e.normalize(q,q),!Q.equalsEpsilon(Math.abs(e.dot(L,q)),1,Q.EPSILON7)){h=e.add(y,b,h),h=e.normalize(h,h),h=e.cross(h,E,h),h=e.cross(E,h,h),h=e.normalize(h,h);let k=1/Math.max(.25,e.magnitude(e.cross(h,b,I))),K=R.angleIsGreaterThanPi(y,b,p,c);K?(B=e.add(p,e.multiplyByScalar(h,k*x,h),B),C=e.add(B,e.multiplyByScalar(u,x,C),C),w[0]=e.clone(T,w[0]),w[1]=e.clone(C,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),u=e.cross(E,y,u),u=e.normalize(u,u),z=e.add(B,e.multiplyByScalar(u,x,z),z),m===G.ROUNDED||m===G.BEVELED?pe(B,C,z,m,K,c,g,s,A+d,t):(h=e.negate(h,h),g=v(p,h,s,g,c,A+d,k,ae)),T=e.clone(z,T)):(B=e.add(p,e.multiplyByScalar(h,k*x,h),B),C=e.add(B,e.multiplyByScalar(u,-x,C),C),w[0]=e.clone(T,w[0]),w[1]=e.clone(C,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),u=e.cross(E,y,u),u=e.normalize(u,u),z=e.add(B,e.multiplyByScalar(u,-x,z),z),m===G.ROUNDED||m===G.BEVELED?pe(B,C,z,m,K,c,g,s,A+d,t):g=v(p,h,s,g,c,A+d,k,ae),T=e.clone(z,T)),b=e.negate(y,b)}else g=v(T,u,s,g,c,N+d,1,1),T=p;N=A,A=f[U+1],p=M}w[0]=e.clone(T,w[0]),w[1]=e.clone(p,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),t&&(D=v(p,u,S,D,c,A+d,1,1)),i=g.length;let xe=t?i+D.length:i,J=new Float64Array(xe);return J.set(g),t&&J.set(D,i),J};var ct=R;export{G as a,ue as b,ct as c}; diff --git a/public/Cesium/Workers/chunk-CNCV5UL7.js b/public/Cesium/Workers/chunk-CNCV5UL7.js new file mode 100644 index 000000000..da701c811 --- /dev/null +++ b/public/Cesium/Workers/chunk-CNCV5UL7.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as J}from"./chunk-TCGIRNHN.js";import{a as I}from"./chunk-HTFSEEMT.js";import{b as B,c as G,d as k}from"./chunk-4IW2T6GF.js";import{b as j,h as X}from"./chunk-PSPPBZWI.js";import{a as t,b as S,c as z,d as F,e as d}from"./chunk-64RSHJUE.js";import{a as g}from"./chunk-3SSKC3VN.js";import{a as b,b as W}from"./chunk-LEYMRMBK.js";import{e as p}from"./chunk-VTAIKJXX.js";function w(n,e){this.center=t.clone(n??t.ZERO),this.halfAxes=d.clone(e??d.ZERO)}w.packedLength=t.packedLength+d.packedLength;w.pack=function(n,e,c){return W.typeOf.object("value",n),W.defined("array",e),c=c??0,t.pack(n.center,e,c),d.pack(n.halfAxes,e,c+t.packedLength),e};w.unpack=function(n,e,c){return W.defined("array",n),e=e??0,p(c)||(c=new w),t.unpack(n,e,c.center),d.unpack(n,e+t.packedLength,c.halfAxes),c};var pt=new t,Ct=new t,ut=new t,Pt=new t,xt=new t,yt=new t,At=new d,Nt={unitary:new d,diagonal:new d};w.fromPoints=function(n,e){if(p(e)||(e=new w),!p(n)||n.length===0)return e.halfAxes=d.ZERO,e.center=t.ZERO,e;let c,h=n.length,r=t.clone(n[0],pt);for(c=1;c<h;c++)t.add(r,n[c],r);let o=1/h;t.multiplyByScalar(r,o,r);let i=0,C=0,m=0,l=0,u=0,a=0,s;for(c=0;c<h;c++)s=t.subtract(n[c],r,Ct),i+=s.x*s.x,C+=s.x*s.y,m+=s.x*s.z,l+=s.y*s.y,u+=s.y*s.z,a+=s.z*s.z;i*=o,C*=o,m*=o,l*=o,u*=o,a*=o;let f=At;f[0]=i,f[1]=C,f[2]=m,f[3]=C,f[4]=l,f[5]=u,f[6]=m,f[7]=u,f[8]=a;let A=d.computeEigenDecomposition(f,Nt),M=d.clone(A.unitary,e.halfAxes),x=d.getColumn(M,0,Pt),y=d.getColumn(M,1,xt),N=d.getColumn(M,2,yt),P=-Number.MAX_VALUE,O=-Number.MAX_VALUE,L=-Number.MAX_VALUE,U=Number.MAX_VALUE,R=Number.MAX_VALUE,q=Number.MAX_VALUE;for(c=0;c<h;c++)s=n[c],P=Math.max(t.dot(x,s),P),O=Math.max(t.dot(y,s),O),L=Math.max(t.dot(N,s),L),U=Math.min(t.dot(x,s),U),R=Math.min(t.dot(y,s),R),q=Math.min(t.dot(N,s),q);x=t.multiplyByScalar(x,.5*(U+P),x),y=t.multiplyByScalar(y,.5*(R+O),y),N=t.multiplyByScalar(N,.5*(q+L),N);let T=t.add(x,y,e.center);t.add(T,N,T);let E=ut;return E.x=P-U,E.y=O-R,E.z=L-q,t.multiplyByScalar(E,.5,E),d.multiplyByScale(e.halfAxes,E,e.halfAxes),e};var et=new t,Mt=new t;function K(n,e,c,h,r,o,i,C,m,l,u){if(!p(r)||!p(o)||!p(i)||!p(C)||!p(m)||!p(l))throw new b("all extents (minimum/maximum X/Y/Z) are required.");p(u)||(u=new w);let a=u.halfAxes;d.setColumn(a,0,e,a),d.setColumn(a,1,c,a),d.setColumn(a,2,h,a);let s=et;s.x=(r+o)/2,s.y=(i+C)/2,s.z=(m+l)/2;let f=Mt;f.x=(o-r)/2,f.y=(C-i)/2,f.z=(l-m)/2;let A=u.center;return s=d.multiplyByVector(a,s,s),t.add(n,s,A),d.multiplyByScale(a,f,a),u}var Q=new S,Ot=new t,bt=new S,Tt=new S,St=new S,gt=new S,Et=new S,Rt=new t,$=new t,Wt=new t,H=new t,zt=new t,It=new z,Lt=new z,Ut=new z,qt=new z,jt=new z,Bt=new t,vt=new t,_t=new t,Vt=new t,Dt=new z,Xt=new t,kt=new t,Zt=new t,Yt=new I(t.UNIT_X,0);w.fromRectangle=function(n,e,c,h,r){if(!p(n))throw new b("rectangle is required");if(n.width<0||n.width>g.TWO_PI)throw new b("Rectangle width must be between 0 and 2 * pi");if(n.height<0||n.height>g.PI)throw new b("Rectangle height must be between 0 and pi");if(p(h)&&!g.equalsEpsilon(h.radii.x,h.radii.y,g.EPSILON15))throw new b("Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)");e=e??0,c=c??0,h=h??F.default;let o,i,C,m,l,u,a;if(n.width<=g.PI){let R=X.center(n,Q),q=h.cartographicToCartesian(R,Ot),T=new J(q,h);a=T.plane;let E=R.longitude,rt=n.south<0&&n.north>0?0:R.latitude,ot=S.fromRadians(E,n.north,c,bt),v=S.fromRadians(n.west,n.north,c,Tt),st=S.fromRadians(n.west,rt,c,St),_=S.fromRadians(n.west,n.south,c,gt),it=S.fromRadians(E,n.south,c,Et),ht=h.cartographicToCartesian(ot,Rt),V=h.cartographicToCartesian(v,$),ft=h.cartographicToCartesian(st,Wt),D=h.cartographicToCartesian(_,H),dt=h.cartographicToCartesian(it,zt),wt=T.projectPointToNearestOnPlane(ht,It),Z=T.projectPointToNearestOnPlane(V,Lt),mt=T.projectPointToNearestOnPlane(ft,Ut),Y=T.projectPointToNearestOnPlane(D,qt),lt=T.projectPointToNearestOnPlane(dt,jt);return o=Math.min(Z.x,mt.x,Y.x),i=-o,m=Math.max(Z.y,wt.y),C=Math.min(Y.y,lt.y),v.height=_.height=e,V=h.cartographicToCartesian(v,$),D=h.cartographicToCartesian(_,H),l=Math.min(I.getPointDistance(a,V),I.getPointDistance(a,D)),u=c,K(T.origin,T.xAxis,T.yAxis,T.zAxis,o,i,C,m,l,u,r)}let s=n.south>0,f=n.north<0,A=s?n.south:f?n.north:0,M=X.center(n,Q).longitude,x=t.fromRadians(M,A,c,h,Bt);x.z=0;let N=Math.abs(x.x)<g.EPSILON10&&Math.abs(x.y)<g.EPSILON10?t.UNIT_X:t.normalize(x,vt),P=t.UNIT_Z,O=t.cross(N,P,_t);a=I.fromPointNormal(x,N,Yt);let L=t.fromRadians(M+g.PI_OVER_TWO,A,c,h,Vt);i=t.dot(I.projectPointOntoPlane(a,L,Dt),O),o=-i,m=t.fromRadians(0,n.north,f?e:c,h,Xt).z,C=t.fromRadians(0,n.south,s?e:c,h,kt).z;let U=t.fromRadians(n.east,A,c,h,Zt);return l=I.getPointDistance(a,U),u=0,K(x,O,P,N,o,i,C,m,l,u,r)};w.fromTransformation=function(n,e){return W.typeOf.object("transformation",n),p(e)||(e=new w),e.center=j.getTranslation(n,e.center),e.halfAxes=j.getMatrix3(n,e.halfAxes),e.halfAxes=d.multiplyByScalar(e.halfAxes,.5,e.halfAxes),e};w.clone=function(n,e){if(p(n))return p(e)?(t.clone(n.center,e.center),d.clone(n.halfAxes,e.halfAxes),e):new w(n.center,n.halfAxes)};w.intersectPlane=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("plane is required.");let c=n.center,h=e.normal,r=n.halfAxes,o=h.x,i=h.y,C=h.z,m=Math.abs(o*r[d.COLUMN0ROW0]+i*r[d.COLUMN0ROW1]+C*r[d.COLUMN0ROW2])+Math.abs(o*r[d.COLUMN1ROW0]+i*r[d.COLUMN1ROW1]+C*r[d.COLUMN1ROW2])+Math.abs(o*r[d.COLUMN2ROW0]+i*r[d.COLUMN2ROW1]+C*r[d.COLUMN2ROW2]),l=t.dot(h,c)+e.distance;return l<=-m?B.OUTSIDE:l>=m?B.INSIDE:B.INTERSECTING};var nt=new t,at=new t,ct=new t,Ft=new t,tt=new t,Gt=new t;w.distanceSquaredTo=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("cartesian is required.");let c=t.subtract(e,n.center,et),h=n.halfAxes,r=d.getColumn(h,0,nt),o=d.getColumn(h,1,at),i=d.getColumn(h,2,ct),C=t.magnitude(r),m=t.magnitude(o),l=t.magnitude(i),u=!0,a=!0,s=!0;C>0?t.divideByScalar(r,C,r):u=!1,m>0?t.divideByScalar(o,m,o):a=!1,l>0?t.divideByScalar(i,l,i):s=!1;let f=!u+!a+!s,A,M,x;if(f===1){let O=r;A=o,M=i,a?s||(O=i,M=r):(O=o,A=r),x=t.cross(A,M,tt),O===r?r=x:O===o?o=x:O===i&&(i=x)}else if(f===2){A=r,a?A=o:s&&(A=i);let O=t.UNIT_Y;O.equalsEpsilon(A,g.EPSILON3)&&(O=t.UNIT_X),M=t.cross(A,O,Ft),t.normalize(M,M),x=t.cross(A,M,tt),t.normalize(x,x),A===r?(o=M,i=x):A===o?(i=M,r=x):A===i&&(r=M,o=x)}else f===3&&(r=t.UNIT_X,o=t.UNIT_Y,i=t.UNIT_Z);let y=Gt;y.x=t.dot(c,r),y.y=t.dot(c,o),y.z=t.dot(c,i);let N=0,P;return y.x<-C?(P=y.x+C,N+=P*P):y.x>C&&(P=y.x-C,N+=P*P),y.y<-m?(P=y.y+m,N+=P*P):y.y>m&&(P=y.y-m,N+=P*P),y.z<-l?(P=y.z+l,N+=P*P):y.z>l&&(P=y.z-l,N+=P*P),N};var Jt=new t,Kt=new t;w.computePlaneDistances=function(n,e,c,h){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("position is required.");if(!p(c))throw new b("direction is required.");p(h)||(h=new G);let r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,i=n.center,C=n.halfAxes,m=d.getColumn(C,0,nt),l=d.getColumn(C,1,at),u=d.getColumn(C,2,ct),a=t.add(m,l,Jt);t.add(a,u,a),t.add(a,i,a);let s=t.subtract(a,e,Kt),f=t.dot(c,s);return r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.add(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.subtract(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.subtract(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.add(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.add(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.subtract(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.subtract(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),h.start=r,h.stop=o,h};var Qt=new t,$t=new t,Ht=new t;w.computeCorners=function(n,e){W.typeOf.object("box",n),p(e)||(e=[new t,new t,new t,new t,new t,new t,new t,new t]);let c=n.center,h=n.halfAxes,r=d.getColumn(h,0,Qt),o=d.getColumn(h,1,$t),i=d.getColumn(h,2,Ht);return t.clone(c,e[0]),t.subtract(e[0],r,e[0]),t.subtract(e[0],o,e[0]),t.subtract(e[0],i,e[0]),t.clone(c,e[1]),t.subtract(e[1],r,e[1]),t.subtract(e[1],o,e[1]),t.add(e[1],i,e[1]),t.clone(c,e[2]),t.subtract(e[2],r,e[2]),t.add(e[2],o,e[2]),t.subtract(e[2],i,e[2]),t.clone(c,e[3]),t.subtract(e[3],r,e[3]),t.add(e[3],o,e[3]),t.add(e[3],i,e[3]),t.clone(c,e[4]),t.add(e[4],r,e[4]),t.subtract(e[4],o,e[4]),t.subtract(e[4],i,e[4]),t.clone(c,e[5]),t.add(e[5],r,e[5]),t.subtract(e[5],o,e[5]),t.add(e[5],i,e[5]),t.clone(c,e[6]),t.add(e[6],r,e[6]),t.add(e[6],o,e[6]),t.subtract(e[6],i,e[6]),t.clone(c,e[7]),t.add(e[7],r,e[7]),t.add(e[7],o,e[7]),t.add(e[7],i,e[7]),e};var te=new d;w.computeTransformation=function(n,e){W.typeOf.object("box",n),p(e)||(e=new j);let c=n.center,h=d.multiplyByUniformScale(n.halfAxes,2,te);return j.fromRotationTranslation(h,c,e)};var ee=new k;w.isOccluded=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("occluder is required.");let c=k.fromOrientedBoundingBox(n,ee);return!e.isBoundingSphereVisible(c)};w.prototype.intersectPlane=function(n){return w.intersectPlane(this,n)};w.prototype.distanceSquaredTo=function(n){return w.distanceSquaredTo(this,n)};w.prototype.computePlaneDistances=function(n,e,c){return w.computePlaneDistances(this,n,e,c)};w.prototype.computeCorners=function(n){return w.computeCorners(this,n)};w.prototype.computeTransformation=function(n){return w.computeTransformation(this,n)};w.prototype.isOccluded=function(n){return w.isOccluded(this,n)};w.equals=function(n,e){return n===e||p(n)&&p(e)&&t.equals(n.center,e.center)&&d.equals(n.halfAxes,e.halfAxes)};w.prototype.clone=function(n){return w.clone(this,n)};w.prototype.equals=function(n){return w.equals(this,n)};var Pe=w;export{Pe as a}; diff --git a/public/Cesium/Workers/chunk-CYCB63OH.js b/public/Cesium/Workers/chunk-CYCB63OH.js new file mode 100644 index 000000000..55c2ddff8 --- /dev/null +++ b/public/Cesium/Workers/chunk-CYCB63OH.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as O}from"./chunk-64RSHJUE.js";import{a as f}from"./chunk-LEYMRMBK.js";import{e as t}from"./chunk-VTAIKJXX.js";function n(e){e=e??O.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}n.POSITION_ONLY=Object.freeze(new n({position:!0}));n.POSITION_AND_NORMAL=Object.freeze(new n({position:!0,normal:!0}));n.POSITION_NORMAL_AND_ST=Object.freeze(new n({position:!0,normal:!0,st:!0}));n.POSITION_AND_ST=Object.freeze(new n({position:!0,st:!0}));n.POSITION_AND_COLOR=Object.freeze(new n({position:!0,color:!0}));n.ALL=Object.freeze(new n({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));n.DEFAULT=n.POSITION_NORMAL_AND_ST;n.packedLength=6;n.pack=function(e,o,i){if(!t(e))throw new f("value is required");if(!t(o))throw new f("array is required");return i=i??0,o[i++]=e.position?1:0,o[i++]=e.normal?1:0,o[i++]=e.st?1:0,o[i++]=e.tangent?1:0,o[i++]=e.bitangent?1:0,o[i]=e.color?1:0,o};n.unpack=function(e,o,i){if(!t(e))throw new f("array is required");return o=o??0,t(i)||(i=new n),i.position=e[o++]===1,i.normal=e[o++]===1,i.st=e[o++]===1,i.tangent=e[o++]===1,i.bitangent=e[o++]===1,i.color=e[o]===1,i};n.clone=function(e,o){if(t(e))return t(o)||(o=new n),o.position=e.position,o.normal=e.normal,o.st=e.st,o.tangent=e.tangent,o.bitangent=e.bitangent,o.color=e.color,o};var _=n;export{_ as a}; diff --git a/public/Cesium/Workers/chunk-D6AA5QVT.js b/public/Cesium/Workers/chunk-D6AA5QVT.js new file mode 100644 index 000000000..acaa25bed --- /dev/null +++ b/public/Cesium/Workers/chunk-D6AA5QVT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as r}from"./chunk-PSPPBZWI.js";import{f as m}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-LEYMRMBK.js";import{e as t}from"./chunk-VTAIKJXX.js";function d(e){if(e=e??m.EMPTY_OBJECT,!t(e.geometry))throw new i("options.geometry is required.");this.geometry=e.geometry,this.modelMatrix=r.clone(e.modelMatrix??r.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var a=d;export{a}; diff --git a/public/Cesium/Workers/chunk-D6C66QON.js b/public/Cesium/Workers/chunk-D6C66QON.js new file mode 100644 index 000000000..a43eaf42c --- /dev/null +++ b/public/Cesium/Workers/chunk-D6C66QON.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as F}from"./chunk-GBYLG25F.js";import{a as Z}from"./chunk-OFUUQVMR.js";import{a as X}from"./chunk-A56XVLQR.js";import{b as K,c as Q,d as U}from"./chunk-RCV6KWXS.js";import{d as H}from"./chunk-4IW2T6GF.js";import{a as y}from"./chunk-AU7IKHOH.js";import{a as r,d as J,f as V}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import{a as b}from"./chunk-LEYMRMBK.js";import{e as R}from"./chunk-VTAIKJXX.js";var ii=new r(1,1,1),B=Math.cos,S=Math.sin;function v(t){t=t??V.EMPTY_OBJECT;let o=t.radii??ii,n=t.innerRadii??o,C=t.minimumClock??0,P=t.maximumClock??N.TWO_PI,h=t.minimumCone??0,k=t.maximumCone??N.PI,s=Math.round(t.stackPartitions??10),w=Math.round(t.slicePartitions??8),m=Math.round(t.subdivisions??128);if(s<1)throw new b("options.stackPartitions cannot be less than 1");if(w<0)throw new b("options.slicePartitions cannot be less than 0");if(m<0)throw new b("options.subdivisions must be greater than or equal to zero.");if(R(t.offsetAttribute)&&t.offsetAttribute===F.TOP)throw new b("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._radii=r.clone(o),this._innerRadii=r.clone(n),this._minimumClock=C,this._maximumClock=P,this._minimumCone=h,this._maximumCone=k,this._stackPartitions=s,this._slicePartitions=w,this._subdivisions=m,this._offsetAttribute=t.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}v.packedLength=2*r.packedLength+8;v.pack=function(t,o,n){if(!R(t))throw new b("value is required");if(!R(o))throw new b("array is required");return n=n??0,r.pack(t._radii,o,n),n+=r.packedLength,r.pack(t._innerRadii,o,n),n+=r.packedLength,o[n++]=t._minimumClock,o[n++]=t._maximumClock,o[n++]=t._minimumCone,o[n++]=t._maximumCone,o[n++]=t._stackPartitions,o[n++]=t._slicePartitions,o[n++]=t._subdivisions,o[n]=t._offsetAttribute??-1,o};var $=new r,G=new r,l={radii:$,innerRadii:G,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};v.unpack=function(t,o,n){if(!R(t))throw new b("array is required");o=o??0;let C=r.unpack(t,o,$);o+=r.packedLength;let P=r.unpack(t,o,G);o+=r.packedLength;let h=t[o++],k=t[o++],s=t[o++],w=t[o++],m=t[o++],f=t[o++],T=t[o++],a=t[o];return R(n)?(n._radii=r.clone(C,n._radii),n._innerRadii=r.clone(P,n._innerRadii),n._minimumClock=h,n._maximumClock=k,n._minimumCone=s,n._maximumCone=w,n._stackPartitions=m,n._slicePartitions=f,n._subdivisions=T,n._offsetAttribute=a===-1?void 0:a,n):(l.minimumClock=h,l.maximumClock=k,l.minimumCone=s,l.maximumCone=w,l.stackPartitions=m,l.slicePartitions=f,l.subdivisions=T,l.offsetAttribute=a===-1?void 0:a,new v(l))};v.createGeometry=function(t){let o=t._radii;if(o.x<=0||o.y<=0||o.z<=0)return;let n=t._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let C=t._minimumClock,P=t._maximumClock,h=t._minimumCone,k=t._maximumCone,s=t._subdivisions,w=J.fromCartesian3(o),m=t._slicePartitions+1,f=t._stackPartitions+1;m=Math.round(m*Math.abs(P-C)/N.TWO_PI),f=Math.round(f*Math.abs(k-h)/N.PI),m<2&&(m=2),f<2&&(f=2);let T=0,a=1,x=n.x!==o.x||n.y!==o.y||n.z!==o.z,W=!1,Y=!1;x&&(a=2,h>0&&(W=!0,T+=m),k<Math.PI&&(Y=!0,T+=m));let q=s*a*(f+m),u=new Float64Array(q*3),g=2*(q+T-(m+f)*a),d=Z.createTypedArray(q,g),i,e,E,z,c=0,_=new Array(f),A=new Array(f);for(i=0;i<f;i++)z=h+i*(k-h)/(f-1),_[i]=S(z),A[i]=B(z);let O=new Array(s),M=new Array(s);for(i=0;i<s;i++)E=C+i*(P-C)/(s-1),O[i]=S(E),M[i]=B(E);for(i=0;i<f;i++)for(e=0;e<s;e++)u[c++]=o.x*_[i]*M[e],u[c++]=o.y*_[i]*O[e],u[c++]=o.z*A[i];if(x)for(i=0;i<f;i++)for(e=0;e<s;e++)u[c++]=n.x*_[i]*M[e],u[c++]=n.y*_[i]*O[e],u[c++]=n.z*A[i];for(_.length=s,A.length=s,i=0;i<s;i++)z=h+i*(k-h)/(s-1),_[i]=S(z),A[i]=B(z);for(O.length=m,M.length=m,i=0;i<m;i++)E=C+i*(P-C)/(m-1),O[i]=S(E),M[i]=B(E);for(i=0;i<s;i++)for(e=0;e<m;e++)u[c++]=o.x*_[i]*M[e],u[c++]=o.y*_[i]*O[e],u[c++]=o.z*A[i];if(x)for(i=0;i<s;i++)for(e=0;e<m;e++)u[c++]=n.x*_[i]*M[e],u[c++]=n.y*_[i]*O[e],u[c++]=n.z*A[i];for(c=0,i=0;i<f*a;i++){let p=i*s;for(e=0;e<s-1;e++)d[c++]=p+e,d[c++]=p+e+1}let L=f*s*a;for(i=0;i<m;i++)for(e=0;e<s-1;e++)d[c++]=L+i+e*m,d[c++]=L+i+(e+1)*m;if(x)for(L=f*s*a+m*s,i=0;i<m;i++)for(e=0;e<s-1;e++)d[c++]=L+i+e*m,d[c++]=L+i+(e+1)*m;if(x){let p=f*s*a,D=p+s*m;if(W)for(i=0;i<m;i++)d[c++]=p+i,d[c++]=D+i;if(Y)for(p+=s*m-m,D+=s*m-m,i=0;i<m;i++)d[c++]=p+i,d[c++]=D+i}let j=new X({position:new U({componentDatatype:y.DOUBLE,componentsPerAttribute:3,values:u})});if(R(t._offsetAttribute)){let p=u.length,D=t._offsetAttribute===F.NONE?0:1,I=new Uint8Array(p/3).fill(D);j.applyOffset=new U({componentDatatype:y.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}return new Q({attributes:j,indices:d,primitiveType:K.LINES,boundingSphere:H.fromEllipsoid(w),offsetAttribute:t._offsetAttribute})};var Ci=v;export{Ci as a}; diff --git a/public/Cesium/Workers/chunk-DEPHB2WM.js b/public/Cesium/Workers/chunk-DEPHB2WM.js new file mode 100644 index 000000000..f152d50cd --- /dev/null +++ b/public/Cesium/Workers/chunk-DEPHB2WM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as w,b as z,i as S}from"./chunk-PSPPBZWI.js";import{a as y}from"./chunk-AU7IKHOH.js";import{a as C,c as T,e as x}from"./chunk-64RSHJUE.js";import{a as h}from"./chunk-3SSKC3VN.js";import{a as u,b as a}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";var c={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};c.getMathType=function(e){switch(e){case c.SCALAR:return Number;case c.VEC2:return T;case c.VEC3:return C;case c.VEC4:return w;case c.MAT2:return S;case c.MAT3:return x;case c.MAT4:return z;default:throw new u("attributeType is not a valid value.")}};c.getNumberOfComponents=function(e){switch(e){case c.SCALAR:return 1;case c.VEC2:return 2;case c.VEC3:return 3;case c.VEC4:case c.MAT2:return 4;case c.MAT3:return 9;case c.MAT4:return 16;default:throw new u("attributeType is not a valid value.")}};c.getAttributeLocationCount=function(e){switch(e){case c.SCALAR:case c.VEC2:case c.VEC3:case c.VEC4:return 1;case c.MAT2:return 2;case c.MAT3:return 3;case c.MAT4:return 4;default:throw new u("attributeType is not a valid value.")}};c.getGlslType=function(e){switch(a.typeOf.string("attributeType",e),e){case c.SCALAR:return"float";case c.VEC2:return"vec2";case c.VEC3:return"vec3";case c.VEC4:return"vec4";case c.MAT2:return"mat2";case c.MAT3:return"mat3";case c.MAT4:return"mat4";default:throw new u("attributeType is not a valid value.")}};var N=Object.freeze(c);var V=1/256,D=256,r={};r.octEncodeInRange=function(e,t,n){a.defined("vector",e),a.defined("result",n);let o=C.magnitudeSquared(e);if(Math.abs(o-1)>h.EPSILON6)throw new u("vector must be normalized.");if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,d=n.y;n.x=(1-Math.abs(d))*h.signNotZero(i),n.y=(1-Math.abs(i))*h.signNotZero(d)}return n.x=h.toSNorm(n.x,t),n.y=h.toSNorm(n.y,t),n};r.octEncode=function(e,t){return r.octEncodeInRange(e,255,t)};var A=new T,F=new Uint8Array(1);function E(e){return F[0]=e,F[0]}r.octEncodeToCartesian4=function(e,t){return r.octEncodeInRange(e,65535,A),t.x=E(A.x*V),t.y=E(A.x),t.z=E(A.y*V),t.w=E(A.y),t};r.octDecodeInRange=function(e,t,n,o){if(a.defined("result",o),e<0||e>n||t<0||t>n)throw new u(`x and y must be unsigned normalized integers between 0 and ${n}`);if(o.x=h.fromSNorm(e,n),o.y=h.fromSNorm(t,n),o.z=1-(Math.abs(o.x)+Math.abs(o.y)),o.z<0){let i=o.x;o.x=(1-Math.abs(o.y))*h.signNotZero(i),o.y=(1-Math.abs(i))*h.signNotZero(o.y)}return C.normalize(o,o)};r.octDecode=function(e,t,n){return r.octDecodeInRange(e,t,255,n)};r.octDecodeFromCartesian4=function(e,t){a.typeOf.object("encoded",e),a.typeOf.object("result",t);let n=e.x,o=e.y,i=e.z,d=e.w;if(n<0||n>255||o<0||o>255||i<0||i>255||d<0||d>255)throw new u("x, y, z, and w must be unsigned normalized integers between 0 and 255");let f=n*D+o,s=i*D+d;return r.octDecodeInRange(f,s,65535,t)};r.octPackFloat=function(e){return a.defined("encoded",e),256*e.x+e.y};var l=new T;r.octEncodeFloat=function(e){return r.octEncode(e,l),r.octPackFloat(l)};r.octDecodeFloat=function(e,t){a.defined("value",e);let n=e/256,o=Math.floor(n),i=(n-o)*256;return r.octDecode(o,i,t)};r.octPack=function(e,t,n,o){a.defined("v1",e),a.defined("v2",t),a.defined("v3",n),a.defined("result",o);let i=r.octEncodeFloat(e),d=r.octEncodeFloat(t),f=r.octEncode(n,l);return o.x=65536*f.x+i,o.y=65536*f.y+d,o};r.octUnpack=function(e,t,n,o){a.defined("packed",e),a.defined("v1",t),a.defined("v2",n),a.defined("v3",o);let i=e.x/65536,d=Math.floor(i),f=(i-d)*65536;i=e.y/65536;let s=Math.floor(i),m=(i-s)*65536;r.octDecodeFloat(f,t),r.octDecodeFloat(m,n),r.octDecode(d,s,o)};r.compressTextureCoordinates=function(e){a.defined("textureCoordinates",e);let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};r.decompressTextureCoordinates=function(e,t){a.defined("compressed",e),a.defined("result",t);let n=e/4096,o=Math.floor(n);return t.x=o/4095,t.y=(e-o*4096)/4095,t};function g(e){return e>>1^-(e&1)}r.zigZagDeltaDecode=function(e,t,n){a.defined("uBuffer",e),a.defined("vBuffer",t),a.typeOf.number.equals("uBuffer.length","vBuffer.length",e.length,t.length),b(n)&&a.typeOf.number.equals("uBuffer.length","heightBuffer.length",e.length,n.length);let o=e.length,i=0,d=0,f=0;for(let s=0;s<o;++s)i+=g(e[s]),d+=g(t[s]),e[s]=i,t[s]=d,b(n)&&(f+=g(n[s]),n[s]=f)};r.dequantize=function(e,t,n,o){a.defined("typedArray",e),a.defined("componentDatatype",t),a.defined("type",n),a.defined("count",o);let i=N.getNumberOfComponents(n),d;switch(t){case y.BYTE:d=127;break;case y.UNSIGNED_BYTE:d=255;break;case y.SHORT:d=32767;break;case y.UNSIGNED_SHORT:d=65535;break;case y.INT:d=2147483647;break;case y.UNSIGNED_INT:d=4294967295;break;default:throw new u(`Cannot dequantize component datatype: ${t}`)}let f=new Float32Array(o*i);for(let s=0;s<o;s++)for(let m=0;m<i;m++){let p=s*i+m;f[p]=Math.max(e[p]/d,-1)}return f};r.decodeRGB565=function(e,t){a.defined("typedArray",e);let n=e.length*3;b(t)&&a.typeOf.number.equals("result.length","typedArray.length * 3",t.length,n);let o=e.length;b(t)||(t=new Float32Array(o*3));let i=31,d=63,f=1/31,s=1/63;for(let m=0;m<o;m++){let p=e[m],R=p>>11,I=p>>5&d,O=p&i,M=3*m;t[M]=R*f,t[M+1]=I*s,t[M+2]=O*f}return t};var W=r;export{W as a}; diff --git a/public/Cesium/Workers/chunk-DMEY62ID.js b/public/Cesium/Workers/chunk-DMEY62ID.js new file mode 100644 index 000000000..3b689c5b3 --- /dev/null +++ b/public/Cesium/Workers/chunk-DMEY62ID.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{c as Z}from"./chunk-4IW2T6GF.js";import{a as o,b as at,e as b}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as w,b as tt}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";var et={};et.computeDiscriminant=function(t,e,r){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");return e*e-4*t*r};function ft(t,e,r){let n=t+e;return R.sign(t)!==R.sign(e)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(e)))<r?0:n}et.computeRealRoots=function(t,e,r){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");let n;if(t===0)return e===0?[]:[-r/e];if(e===0){if(r===0)return[0,0];let a=Math.abs(r),f=Math.abs(t);if(a<f&&a/f<R.EPSILON14)return[0,0];if(a>f&&f/a<R.EPSILON14)return[];if(n=-r/t,n<0)return[];let l=Math.sqrt(n);return[-l,l]}else if(r===0)return n=-e/t,n<0?[n,0]:[0,n];let i=e*e,c=4*t*r,s=ft(i,-c,R.EPSILON14);if(s<0)return[];let u=-.5*ft(e,R.sign(e)*Math.sqrt(s),R.EPSILON14);return e>0?[u/t,r/u]:[r/u,u/t]};var T=et;var rt={};rt.computeDiscriminant=function(t,e,r,n){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");let i=t*t,c=e*e,s=r*r,u=n*n;return 18*t*e*r*n+c*s-27*i*u-4*(t*s*r+c*e*n)};function nt(t,e,r,n){let i=t,c=e/3,s=r/3,u=n,a=i*s,f=c*u,l=c*c,m=s*s,p=i*s-l,q=i*u-c*s,d=c*u-m,h=4*p*d-q*q,E,D;if(h<0){let K,k,G;l*f>=a*m?(K=i,k=p,G=-2*c*p+i*q):(K=u,k=d,G=-u*q+2*s*d);let ut=-(G<0?-1:1)*Math.abs(K)*Math.sqrt(-h);D=-G+ut;let X=D/2,j=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),$=D===ut?-j:-k/j;return E=k<=0?j+$:-G/(j*j+$*$+k),l*f>=a*m?[(E-c)/i]:[-u/(E+s)]}let W=p,v=-2*c*p+i*q,L=d,B=-u*q+2*s*d,I=Math.sqrt(h),C=Math.sqrt(3)/2,P=Math.abs(Math.atan2(i*I,-v)/3);E=2*Math.sqrt(-W);let y=Math.cos(P);D=E*y;let S=E*(-y/2-C*Math.sin(P)),M=D+S>2*c?D-c:S-c,N=i,x=M/N;P=Math.abs(Math.atan2(u*I,-B)/3),E=2*Math.sqrt(-L),y=Math.cos(P),D=E*y,S=E*(-y/2-C*Math.sin(P));let _=-u,A=D+S<2*s?D+s:S+s,U=_/A,Rt=N*A,ct=-M*A-N*_,yt=M*_,V=(s*ct-c*yt)/(-c*ct+s*Rt);return x<=V?x<=U?V<=U?[x,V,U]:[x,U,V]:[U,x,V]:x<=U?[V,x,U]:V<=U?[V,U,x]:[U,V,x]}rt.computeRealRoots=function(t,e,r,n){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");let i,c;if(t===0)return T.computeRealRoots(e,r,n);if(e===0){if(r===0){if(n===0)return[0,0,0];c=-n/t;let s=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3);return[s,s,s]}else if(n===0)return i=T.computeRealRoots(t,0,r),i.Length===0?[0]:[i[0],0,i[1]];return nt(t,0,r,n)}else{if(r===0)return n===0?(c=-e/t,c<0?[c,0,0]:[0,0,c]):nt(t,e,0,n);if(n===0)return i=T.computeRealRoots(t,e,r),i.length===0?[0]:i[1]<=0?[i[0],i[1],0]:i[0]>=0?[0,i[0],i[1]]:[i[0],0,i[1]]}return nt(t,e,r,n)};var Y=rt;var ot={};ot.computeDiscriminant=function(t,e,r,n,i){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");if(typeof i!="number")throw new w("e is a required number.");let c=t*t,s=c*t,u=e*e,a=u*e,f=r*r,l=f*r,m=n*n,p=m*n,q=i*i,d=q*i;return u*f*m-4*a*p-4*t*l*m+18*t*e*r*p-27*c*m*m+256*s*d+i*(18*a*r*n-4*u*l+16*t*f*f-80*t*e*f*n-6*t*u*m+144*c*r*m)+q*(144*t*u*r-27*u*u-128*c*f-192*c*e*n)};function z(t,e,r,n){let i=t*t,c=e-3*i/8,s=r-e*t/2+i*t/8,u=n-r*t/4+e*i/16-3*i*i/256,a=Y.computeRealRoots(1,2*c,c*c-4*u,-s*s);if(a.length>0){let f=-t/4,l=a[a.length-1];if(Math.abs(l)<R.EPSILON14){let m=T.computeRealRoots(1,c,u);if(m.length===2){let p=m[0],q=m[1],d;if(p>=0&&q>=0){let h=Math.sqrt(p),E=Math.sqrt(q);return[f-E,f-h,f+h,f+E]}else{if(p>=0&&q<0)return d=Math.sqrt(p),[f-d,f+d];if(p<0&&q>=0)return d=Math.sqrt(q),[f-d,f+d]}}return[]}else if(l>0){let m=Math.sqrt(l),p=(c+l-s/m)/2,q=(c+l+s/m)/2,d=T.computeRealRoots(1,m,p),h=T.computeRealRoots(1,-m,q);return d.length!==0?(d[0]+=f,d[1]+=f,h.length!==0?(h[0]+=f,h[1]+=f,d[1]<=h[0]?[d[0],d[1],h[0],h[1]]:h[1]<=d[0]?[h[0],h[1],d[0],d[1]]:d[0]>=h[0]&&d[1]<=h[1]?[h[0],d[0],d[1],h[1]]:h[0]>=d[0]&&h[1]<=d[1]?[d[0],h[0],h[1],d[1]]:d[0]>h[0]&&d[0]<h[1]?[h[0],d[0],h[1],d[1]]:[d[0],h[0],d[1],h[1]]):d):h.length!==0?(h[0]+=f,h[1]+=f,h):[]}}return[]}function H(t,e,r,n){let i=r*r,c=e*e,s=t*t,u=-2*e,a=r*t+c-4*n,f=s*n-r*e*t+i,l=Y.computeRealRoots(1,u,a,f);if(l.length>0){let m=l[0],p=e-m,q=p*p,d=t/2,h=p/2,E=q-4*n,D=q+4*Math.abs(n),W=s-4*m,v=s+4*Math.abs(m),L,B;if(m<0||E*v<W*D){let N=Math.sqrt(W);L=N/2,B=N===0?0:(t*h-r)/N}else{let N=Math.sqrt(E);L=N===0?0:(t*h-r)/N,B=N/2}let I,C;d===0&&L===0?(I=0,C=0):R.sign(d)===R.sign(L)?(I=d+L,C=m/I):(C=d-L,I=m/C);let P,y;h===0&&B===0?(P=0,y=0):R.sign(h)===R.sign(B)?(P=h+B,y=n/P):(y=h-B,P=n/y);let S=T.computeRealRoots(1,I,P),M=T.computeRealRoots(1,C,y);if(S.length!==0)return M.length!==0?S[1]<=M[0]?[S[0],S[1],M[0],M[1]]:M[1]<=S[0]?[M[0],M[1],S[0],S[1]]:S[0]>=M[0]&&S[1]<=M[1]?[M[0],S[0],S[1],M[1]]:M[0]>=S[0]&&M[1]<=S[1]?[S[0],M[0],M[1],S[1]]:S[0]>M[0]&&S[0]<M[1]?[M[0],S[0],M[1],S[1]]:[S[0],M[0],S[1],M[1]]:S;if(M.length!==0)return M}return[]}ot.computeRealRoots=function(t,e,r,n,i){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");if(typeof i!="number")throw new w("e is a required number.");if(Math.abs(t)<R.EPSILON15)return Y.computeRealRoots(e,r,n,i);let c=e/t,s=r/t,u=n/t,a=i/t,f=c<0?1:0;switch(f+=s<0?f+1:f,f+=u<0?f+1:f,f+=a<0?f+1:f,f){case 0:return z(c,s,u,a);case 1:return H(c,s,u,a);case 2:return H(c,s,u,a);case 3:return z(c,s,u,a);case 4:return z(c,s,u,a);case 5:return H(c,s,u,a);case 6:return z(c,s,u,a);case 7:return z(c,s,u,a);case 8:return H(c,s,u,a);case 9:return z(c,s,u,a);case 10:return z(c,s,u,a);case 11:return H(c,s,u,a);case 12:return z(c,s,u,a);case 13:return z(c,s,u,a);case 14:return z(c,s,u,a);case 15:return z(c,s,u,a);default:return}};var dt=ot;function F(t,e){e=o.clone(e??o.ZERO),o.equals(e,o.ZERO)||o.normalize(e,e),this.origin=o.clone(t??o.ZERO),this.direction=e}F.clone=function(t,e){if(g(t))return g(e)?(e.origin=o.clone(t.origin),e.direction=o.clone(t.direction),e):new F(t.origin,t.direction)};F.getPoint=function(t,e,r){return tt.typeOf.object("ray",t),tt.typeOf.number("t",e),g(r)||(r=new o),r=o.multiplyByScalar(t.direction,e,r),o.add(t.origin,r,r)};var it=F;var O={};O.rayPlane=function(t,e,r){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("plane is required.");g(r)||(r=new o);let n=t.origin,i=t.direction,c=e.normal,s=o.dot(c,i);if(Math.abs(s)<R.EPSILON15)return;let u=(-e.distance-o.dot(c,n))/s;if(!(u<0))return r=o.multiplyByScalar(i,u,r),o.add(n,r,r)};var bt=new o,Ot=new o,St=new o,mt=new o,lt=new o;O.rayTriangleParametric=function(t,e,r,n,i){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("p0 is required.");if(!g(r))throw new w("p1 is required.");if(!g(n))throw new w("p2 is required.");i=i??!1;let c=t.origin,s=t.direction,u=o.subtract(r,e,bt),a=o.subtract(n,e,Ot),f=o.cross(s,a,St),l=o.dot(u,f),m,p,q,d,h;if(i){if(l<R.EPSILON6||(m=o.subtract(c,e,mt),q=o.dot(m,f),q<0||q>l)||(p=o.cross(m,u,lt),d=o.dot(s,p),d<0||q+d>l))return;h=o.dot(a,p)/l}else{if(Math.abs(l)<R.EPSILON6)return;let E=1/l;if(m=o.subtract(c,e,mt),q=o.dot(m,f)*E,q<0||q>1||(p=o.cross(m,u,lt),d=o.dot(s,p)*E,d<0||q+d>1))return;h=o.dot(a,p)*E}return h};O.rayTriangle=function(t,e,r,n,i,c){let s=O.rayTriangleParametric(t,e,r,n,i);if(!(!g(s)||s<0))return g(c)||(c=new o),o.multiplyByScalar(t.direction,s,c),o.add(t.origin,c,c)};var Pt=new it;O.lineSegmentTriangle=function(t,e,r,n,i,c,s){if(!g(t))throw new w("v0 is required.");if(!g(e))throw new w("v1 is required.");if(!g(r))throw new w("p0 is required.");if(!g(n))throw new w("p1 is required.");if(!g(i))throw new w("p2 is required.");let u=Pt;o.clone(t,u.origin),o.subtract(e,t,u.direction),o.normalize(u.direction,u.direction);let a=O.rayTriangleParametric(u,r,n,i,c);if(!(!g(a)||a<0||a>o.distance(t,e)))return g(s)||(s=new o),o.multiplyByScalar(u.direction,a,s),o.add(u.origin,s,s)};function Et(t,e,r,n){let i=e*e-4*t*r;if(i<0)return;if(i>0){let s=1/(2*t),u=Math.sqrt(i),a=(-e+u)*s,f=(-e-u)*s;return a<f?(n.root0=a,n.root1=f):(n.root0=f,n.root1=a),n}let c=-e/(2*t);if(c!==0)return n.root0=n.root1=c,n}var Ct={root0:0,root1:0};function Mt(t,e,r){g(r)||(r=new Z);let n=t.origin,i=t.direction,c=e.center,s=e.radius*e.radius,u=o.subtract(n,c,St),a=o.dot(i,i),f=2*o.dot(i,u),l=o.magnitudeSquared(u)-s,m=Et(a,f,l,Ct);if(g(m))return r.start=m.root0,r.stop=m.root1,r}O.raySphere=function(t,e,r){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("sphere is required.");if(r=Mt(t,e,r),!(!g(r)||r.stop<0))return r.start=Math.max(r.start,0),r};var Nt=new it;O.lineSegmentSphere=function(t,e,r,n){if(!g(t))throw new w("p0 is required.");if(!g(e))throw new w("p1 is required.");if(!g(r))throw new w("sphere is required.");let i=Nt;o.clone(t,i.origin);let c=o.subtract(e,t,i.direction),s=o.magnitude(c);if(o.normalize(c,c),n=Mt(i,r,n),!(!g(n)||n.stop<0||n.start>s))return n.start=Math.max(n.start,0),n.stop=Math.min(n.stop,s),n};var Lt=new o,It=new o;O.rayEllipsoid=function(t,e){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("ellipsoid is required.");let r=e.oneOverRadii,n=o.multiplyComponents(r,t.origin,Lt),i=o.multiplyComponents(r,t.direction,It),c=o.magnitudeSquared(n),s=o.dot(n,i),u,a,f,l,m;if(c>1){if(s>=0)return;let p=s*s;if(u=c-1,a=o.magnitudeSquared(i),f=a*u,p<f)return;if(p>f){l=s*s-f,m=-s+Math.sqrt(l);let d=m/a,h=u/m;return d<h?new Z(d,h):{start:h,stop:d}}let q=Math.sqrt(u/a);return new Z(q,q)}else if(c<1)return u=c-1,a=o.magnitudeSquared(i),f=a*u,l=s*s-f,m=-s+Math.sqrt(l),new Z(0,m/a);if(s<0)return a=o.magnitudeSquared(i),new Z(0,-s/a)};function Q(t,e,r){let n=t+e;return R.sign(t)!==R.sign(e)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(e)))<r?0:n}O.quadraticVectorExpression=function(t,e,r,n,i){let c=n*n,s=i*i,u=(t[b.COLUMN1ROW1]-t[b.COLUMN2ROW2])*s,a=i*(n*Q(t[b.COLUMN1ROW0],t[b.COLUMN0ROW1],R.EPSILON15)+e.y),f=t[b.COLUMN0ROW0]*c+t[b.COLUMN2ROW2]*s+n*e.x+r,l=s*Q(t[b.COLUMN2ROW1],t[b.COLUMN1ROW2],R.EPSILON15),m=i*(n*Q(t[b.COLUMN2ROW0],t[b.COLUMN0ROW2])+e.z),p,q=[];if(m===0&&l===0){if(p=T.computeRealRoots(u,a,f),p.length===0)return q;let P=p[0],y=Math.sqrt(Math.max(1-P*P,0));if(q.push(new o(n,i*P,i*-y)),q.push(new o(n,i*P,i*y)),p.length===2){let S=p[1],M=Math.sqrt(Math.max(1-S*S,0));q.push(new o(n,i*S,i*-M)),q.push(new o(n,i*S,i*M))}return q}let d=m*m,h=l*l,E=u*u,D=m*l,W=E+h,v=2*(a*u+D),L=2*f*u+a*a-h+d,B=2*(f*a-D),I=f*f-d;if(W===0&&v===0&&L===0&&B===0)return q;p=dt.computeRealRoots(W,v,L,B,I);let C=p.length;if(C===0)return q;for(let P=0;P<C;++P){let y=p[P],S=y*y,M=Math.max(1-S,0),N=Math.sqrt(M),x;R.sign(u)===R.sign(f)?x=Q(u*S+f,a*y,R.EPSILON12):R.sign(f)===R.sign(a*y)?x=Q(u*S,a*y+f,R.EPSILON12):x=Q(u*S+a*y,f,R.EPSILON12);let _=Q(l*y,m,R.EPSILON15),A=x*_;A<0?q.push(new o(n,i*y,i*N)):A>0?q.push(new o(n,i*y,i*-N)):N!==0?(q.push(new o(n,i*y,i*-N)),q.push(new o(n,i*y,i*N)),++P):q.push(new o(n,i*y,i*N))}return q};var st=new o,ht=new o,wt=new o,J=new o,Dt=new o,Bt=new b,xt=new b,Tt=new b,zt=new b,Wt=new b,qt=new b,gt=new b,pt=new o,vt=new o,Ut=new at;O.grazingAltitudeLocation=function(t,e){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("ellipsoid is required.");let r=t.origin,n=t.direction;if(!o.equals(r,o.ZERO)){let I=e.geodeticSurfaceNormal(r,st);if(o.dot(n,I)>=0)return r}let i=g(this.rayEllipsoid(t,e)),c=e.transformPositionToScaledSpace(n,st),s=o.normalize(c,c),u=o.mostOrthogonalAxis(c,J),a=o.normalize(o.cross(u,s,ht),ht),f=o.normalize(o.cross(s,a,wt),wt),l=Bt;l[0]=s.x,l[1]=s.y,l[2]=s.z,l[3]=a.x,l[4]=a.y,l[5]=a.z,l[6]=f.x,l[7]=f.y,l[8]=f.z;let m=b.transpose(l,xt),p=b.fromScale(e.radii,Tt),q=b.fromScale(e.oneOverRadii,zt),d=Wt;d[0]=0,d[1]=-n.z,d[2]=n.y,d[3]=n.z,d[4]=0,d[5]=-n.x,d[6]=-n.y,d[7]=n.x,d[8]=0;let h=b.multiply(b.multiply(m,q,qt),d,qt),E=b.multiply(b.multiply(h,p,gt),l,gt),D=b.multiplyByVector(h,r,Dt),W=O.quadraticVectorExpression(E,o.negate(D,st),0,0,1),v,L,B=W.length;if(B>0){let I=o.clone(o.ZERO,vt),C=Number.NEGATIVE_INFINITY;for(let y=0;y<B;++y){v=b.multiplyByVector(p,b.multiplyByVector(l,W[y],pt),pt);let S=o.normalize(o.subtract(v,r,J),J),M=o.dot(S,n);M>C&&(C=M,I=o.clone(v,I))}let P=e.cartesianToCartographic(I,Ut);return C=R.clamp(C,0,1),L=o.magnitude(o.subtract(I,r,J))*Math.sqrt(1-C*C),L=i?-L:L,P.height=L,e.cartographicToCartesian(P,new o)}};var Vt=new o;O.lineSegmentPlane=function(t,e,r,n){if(!g(t))throw new w("endPoint0 is required.");if(!g(e))throw new w("endPoint1 is required.");if(!g(r))throw new w("plane is required.");g(n)||(n=new o);let i=o.subtract(e,t,Vt),c=r.normal,s=o.dot(c,i);if(Math.abs(s)<R.EPSILON6)return;let u=o.dot(c,t),a=-(r.distance+u)/s;if(!(a<0||a>1))return o.multiplyByScalar(i,a,n),o.add(t,n,n),n};O.trianglePlaneIntersection=function(t,e,r,n){if(!g(t)||!g(e)||!g(r)||!g(n))throw new w("p0, p1, p2, and plane are required.");let i=n.normal,c=n.distance,s=o.dot(i,t)+c<0,u=o.dot(i,e)+c<0,a=o.dot(i,r)+c<0,f=0;f+=s?1:0,f+=u?1:0,f+=a?1:0;let l,m;if((f===1||f===2)&&(l=new o,m=new o),f===1){if(s)return O.lineSegmentPlane(t,e,n,l),O.lineSegmentPlane(t,r,n,m),{positions:[t,e,r,l,m],indices:[0,3,4,1,2,4,1,4,3]};if(u)return O.lineSegmentPlane(e,r,n,l),O.lineSegmentPlane(e,t,n,m),{positions:[t,e,r,l,m],indices:[1,3,4,2,0,4,2,4,3]};if(a)return O.lineSegmentPlane(r,t,n,l),O.lineSegmentPlane(r,e,n,m),{positions:[t,e,r,l,m],indices:[2,3,4,0,1,4,0,4,3]}}else if(f===2)if(s)if(u){if(!a)return O.lineSegmentPlane(t,r,n,l),O.lineSegmentPlane(e,r,n,m),{positions:[t,e,r,l,m],indices:[0,1,4,0,4,3,2,3,4]}}else return O.lineSegmentPlane(r,e,n,l),O.lineSegmentPlane(t,e,n,m),{positions:[t,e,r,l,m],indices:[2,0,4,2,4,3,1,3,4]};else return O.lineSegmentPlane(e,t,n,l),O.lineSegmentPlane(r,t,n,m),{positions:[t,e,r,l,m],indices:[1,2,4,1,4,3,0,3,4]}};var me=O;export{it as a,me as b}; diff --git a/public/Cesium/Workers/chunk-DQQ63PYM.js b/public/Cesium/Workers/chunk-DQQ63PYM.js new file mode 100644 index 000000000..423e10edb --- /dev/null +++ b/public/Cesium/Workers/chunk-DQQ63PYM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as u,b as c,d as p}from"./chunk-64RSHJUE.js";import{a as d}from"./chunk-3SSKC3VN.js";import{a as s}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function e(t){this._ellipsoid=t??p.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(e.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});e.mercatorAngleToGeodeticLatitude=function(t){return d.PI_OVER_TWO-2*Math.atan(Math.exp(-t))};e.geodeticLatitudeToMercatorAngle=function(t){t>e.MaximumLatitude?t=e.MaximumLatitude:t<-e.MaximumLatitude&&(t=-e.MaximumLatitude);let i=Math.sin(t);return .5*Math.log((1+i)/(1-i))};e.MaximumLatitude=e.mercatorAngleToGeodeticLatitude(Math.PI);e.prototype.project=function(t,i){let o=this._semimajorAxis,r=t.longitude*o,n=e.geodeticLatitudeToMercatorAngle(t.latitude)*o,m=t.height;return a(i)?(i.x=r,i.y=n,i.z=m,i):new u(r,n,m)};e.prototype.unproject=function(t,i){if(!a(t))throw new s("cartesian is required");let o=this._oneOverSemimajorAxis,r=t.x*o,n=e.mercatorAngleToGeodeticLatitude(t.y*o),m=t.z;return a(i)?(i.longitude=r,i.latitude=n,i.height=m,i):new c(r,n,m)};var A=e;export{A as a}; diff --git a/public/Cesium/Workers/chunk-ED5JPB3S.js b/public/Cesium/Workers/chunk-ED5JPB3S.js new file mode 100644 index 000000000..85f1d79af --- /dev/null +++ b/public/Cesium/Workers/chunk-ED5JPB3S.js @@ -0,0 +1,27 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e}from"./chunk-VTAIKJXX.js";function t(r){this.name="RuntimeError",this.message=r;let o;try{throw new Error}catch(s){o=s.stack}this.stack=o}e(Object.create)&&(t.prototype=Object.create(Error.prototype),t.prototype.constructor=t);t.prototype.toString=function(){let r=`${this.name}: ${this.message}`;return e(this.stack)&&(r+=` +${this.stack.toString()}`),r};var c=t;export{c as a}; diff --git a/public/Cesium/Workers/chunk-EZUYS2JF.js b/public/Cesium/Workers/chunk-EZUYS2JF.js new file mode 100644 index 000000000..a854ce101 --- /dev/null +++ b/public/Cesium/Workers/chunk-EZUYS2JF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as h}from"./chunk-CNCV5UL7.js";import{a as n,c as y,e as a}from"./chunk-64RSHJUE.js";import{b as f}from"./chunk-LEYMRMBK.js";var x={},b=new n,P=new n,B=new n,M=new n,w=new h;x.validOutline=function(i){f.defined("positions",i);let o=h.fromPoints(i,w).halfAxes,e=a.getColumn(o,0,P),r=a.getColumn(o,1,B),t=a.getColumn(o,2,M),u=n.magnitude(e),s=n.magnitude(r),l=n.magnitude(t);return!(u===0&&(s===0||l===0)||s===0&&l===0)};x.computeProjectTo2DArguments=function(i,c,o,e){f.defined("positions",i),f.defined("centerResult",c),f.defined("planeAxis1Result",o),f.defined("planeAxis2Result",e);let r=h.fromPoints(i,w),t=r.halfAxes,u=a.getColumn(t,0,P),s=a.getColumn(t,1,B),l=a.getColumn(t,2,M),A=n.magnitude(u),d=n.magnitude(s),g=n.magnitude(l),m=Math.min(A,d,g);if(A===0&&(d===0||g===0)||d===0&&g===0)return!1;let p,C;return(m===d||m===g)&&(p=u),m===A?p=s:m===g&&(C=s),(m===A||m===d)&&(C=l),n.normalize(p,o),n.normalize(C,e),n.clone(r.center,c),!0};function z(i,c,o,e,r){let t=n.subtract(i,c,b),u=n.dot(o,t),s=n.dot(e,t);return y.fromElements(u,s,r)}x.createProjectPointsTo2DFunction=function(i,c,o){return function(e){let r=new Array(e.length);for(let t=0;t<e.length;t++)r[t]=z(e[t],i,c,o);return r}};x.createProjectPointTo2DFunction=function(i,c,o){return function(e,r){return z(e,i,c,o,r)}};var O=x;export{O as a}; diff --git a/public/Cesium/Workers/chunk-FEVXJ54I.js b/public/Cesium/Workers/chunk-FEVXJ54I.js new file mode 100644 index 000000000..e10deabea --- /dev/null +++ b/public/Cesium/Workers/chunk-FEVXJ54I.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as G}from"./chunk-UP6I5URU.js";import{a as At}from"./chunk-D6AA5QVT.js";import{a as yt}from"./chunk-VW6VD53G.js";import{a as $}from"./chunk-GBYLG25F.js";import{a as v}from"./chunk-CYCB63OH.js";import{a as st}from"./chunk-OFUUQVMR.js";import{a as ht}from"./chunk-A56XVLQR.js";import{b as ct,c as rt,d as F}from"./chunk-RCV6KWXS.js";import{a as lt,d as it}from"./chunk-4IW2T6GF.js";import{f as nt,h as bt}from"./chunk-PSPPBZWI.js";import{a as P}from"./chunk-AU7IKHOH.js";import{a,b as _t,c as Q,d as D,e as C,f as dt}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as ot,b as k}from"./chunk-LEYMRMBK.js";import{e as Z}from"./chunk-VTAIKJXX.js";var tt=new a,pt=new a,xt=new a,wt=new a,w=new Q,Mt=new C,Vt=new C,gt=new nt,Tt=new a,Nt=new a,Et=new a,ft=new _t,Pt=new a,Ft=new Q,St=new Q;function Ot(o,e,t){let n=e.vertexFormat,s=e.center,i=e.semiMajorAxis,r=e.semiMinorAxis,f=e.ellipsoid,h=e.stRotation,N=t?o.length/3*2:o.length/3,g=e.shadowVolume,c=n.st?new Float32Array(N*2):void 0,l=n.normal?new Float32Array(N*3):void 0,A=n.tangent?new Float32Array(N*3):void 0,x=n.bitangent?new Float32Array(N*3):void 0,S=g?new Float32Array(N*3):void 0,z=0,b=Tt,M=Nt,d=Et,_=new lt(f),I=_.project(f.cartesianToCartographic(s,ft),Pt),W=f.scaleToGeodeticSurface(s,tt);f.geodeticSurfaceNormal(W,W);let J=Mt,U=Vt;if(h!==0){let m=nt.fromAxisAngle(W,h,gt);J=C.fromQuaternion(m,J),m=nt.fromAxisAngle(W,-h,gt),U=C.fromQuaternion(m,U)}else J=C.clone(C.IDENTITY,J),U=C.clone(C.IDENTITY,U);let B=Q.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ft),q=Q.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,St),O=o.length,y=t?O:0,p=y/3*2;for(let m=0;m<O;m+=3){let u=m+1,T=m+2,V=a.fromArray(o,m,tt);if(n.st){let E=C.multiplyByVector(J,V,pt),j=_.project(f.cartesianToCartographic(E,ft),xt);a.subtract(j,I,j),w.x=(j.x+i)/(2*i),w.y=(j.y+r)/(2*r),B.x=Math.min(w.x,B.x),B.y=Math.min(w.y,B.y),q.x=Math.max(w.x,q.x),q.y=Math.max(w.y,q.y),t&&(c[z+p]=w.x,c[z+1+p]=w.y),c[z++]=w.x,c[z++]=w.y}(n.normal||n.tangent||n.bitangent||g)&&(b=f.geodeticSurfaceNormal(V,b),g&&(S[m+y]=-b.x,S[u+y]=-b.y,S[T+y]=-b.z),(n.normal||n.tangent||n.bitangent)&&((n.tangent||n.bitangent)&&(M=a.normalize(a.cross(a.UNIT_Z,b,M),M),C.multiplyByVector(U,M,M)),n.normal&&(l[m]=b.x,l[u]=b.y,l[T]=b.z,t&&(l[m+y]=-b.x,l[u+y]=-b.y,l[T+y]=-b.z)),n.tangent&&(A[m]=M.x,A[u]=M.y,A[T]=M.z,t&&(A[m+y]=-M.x,A[u+y]=-M.y,A[T+y]=-M.z)),n.bitangent&&(d=a.normalize(a.cross(b,M,d),d),x[m]=d.x,x[u]=d.y,x[T]=d.z,t&&(x[m+y]=d.x,x[u+y]=d.y,x[T+y]=d.z))))}if(n.st){O=c.length;for(let m=0;m<O;m+=2)c[m]=(c[m]-B.x)/(q.x-B.x),c[m+1]=(c[m+1]-B.y)/(q.y-B.y)}let L=new ht;if(n.position){let m=G.raisePositionsToHeight(o,e,t);L.position=new F({componentDatatype:P.DOUBLE,componentsPerAttribute:3,values:m})}if(n.st&&(L.st=new F({componentDatatype:P.FLOAT,componentsPerAttribute:2,values:c})),n.normal&&(L.normal=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:l})),n.tangent&&(L.tangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:A})),n.bitangent&&(L.bitangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:x})),g&&(L.extrudeDirection=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:S})),t&&Z(e.offsetAttribute)){let m=new Uint8Array(N);if(e.offsetAttribute===$.TOP)m=m.fill(1,0,N/2);else{let u=e.offsetAttribute===$.NONE?0:1;m=m.fill(u)}L.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}return L}function jt(o){let e=new Array(12*(o*(o+1))-6),t=0,n,s,i,r,f;for(n=0,i=1,r=0;r<3;r++)e[t++]=i++,e[t++]=n,e[t++]=i;for(r=2;r<o+1;++r){for(i=r*(r+1)-1,n=(r-1)*r-1,e[t++]=i++,e[t++]=n,e[t++]=i,s=2*r,f=0;f<s-1;++f)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;e[t++]=i++,e[t++]=n,e[t++]=i}for(s=o*2,++i,++n,r=0;r<s-1;++r)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;for(e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n++,e[t++]=n,++n,r=o-1;r>1;--r){for(e[t++]=n++,e[t++]=n,e[t++]=i,s=2*r,f=0;f<s-1;++f)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;e[t++]=n++,e[t++]=n++,e[t++]=i++}for(r=0;r<3;r++)e[t++]=n++,e[t++]=n,e[t++]=i;return e}var K=new a;function Dt(o){let e=o.center;K=a.multiplyByScalar(o.ellipsoid.geodeticSurfaceNormal(e,K),o.height,K),K=a.add(e,K,K);let t=new it(K,o.semiMajorAxis),n=G.computeEllipsePositions(o,!0,!1),s=n.positions,i=n.numPts,r=Ot(s,o,!1),f=jt(i);return f=st.createTypedArray(s.length/3,f),{boundingSphere:t,attributes:r,indices:f}}function vt(o,e){let t=e.vertexFormat,n=e.center,s=e.semiMajorAxis,i=e.semiMinorAxis,r=e.ellipsoid,f=e.height,h=e.extrudedHeight,N=e.stRotation,g=o.length/3*2,c=new Float64Array(g*3),l=t.st?new Float32Array(g*2):void 0,A=t.normal?new Float32Array(g*3):void 0,x=t.tangent?new Float32Array(g*3):void 0,S=t.bitangent?new Float32Array(g*3):void 0,z=e.shadowVolume,b=z?new Float32Array(g*3):void 0,M=0,d=Tt,_=Nt,I=Et,W=new lt(r),J=W.project(r.cartesianToCartographic(n,ft),Pt),U=r.scaleToGeodeticSurface(n,tt);r.geodeticSurfaceNormal(U,U);let B=nt.fromAxisAngle(U,N,gt),q=C.fromQuaternion(B,Mt),O=Q.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ft),y=Q.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,St),p=o.length,L=p/3*2;for(let u=0;u<p;u+=3){let T=u+1,V=u+2,E=a.fromArray(o,u,tt),j;if(t.st){let et=C.multiplyByVector(q,E,pt),X=W.project(r.cartesianToCartographic(et,ft),xt);a.subtract(X,J,X),w.x=(X.x+s)/(2*s),w.y=(X.y+i)/(2*i),O.x=Math.min(w.x,O.x),O.y=Math.min(w.y,O.y),y.x=Math.max(w.x,y.x),y.y=Math.max(w.y,y.y),l[M+L]=w.x,l[M+1+L]=w.y,l[M++]=w.x,l[M++]=w.y}E=r.scaleToGeodeticSurface(E,E),j=a.clone(E,pt),d=r.geodeticSurfaceNormal(E,d),z&&(b[u+p]=-d.x,b[T+p]=-d.y,b[V+p]=-d.z);let at=a.multiplyByScalar(d,f,wt);if(E=a.add(E,at,E),at=a.multiplyByScalar(d,h,at),j=a.add(j,at,j),t.position&&(c[u+p]=j.x,c[T+p]=j.y,c[V+p]=j.z,c[u]=E.x,c[T]=E.y,c[V]=E.z),t.normal||t.tangent||t.bitangent){I=a.clone(d,I);let et=a.fromArray(o,(u+3)%p,wt);a.subtract(et,E,et);let X=a.subtract(j,E,xt);d=a.normalize(a.cross(X,et,d),d),t.normal&&(A[u]=d.x,A[T]=d.y,A[V]=d.z,A[u+p]=d.x,A[T+p]=d.y,A[V+p]=d.z),t.tangent&&(_=a.normalize(a.cross(I,d,_),_),x[u]=_.x,x[T]=_.y,x[V]=_.z,x[u+p]=_.x,x[u+1+p]=_.y,x[u+2+p]=_.z),t.bitangent&&(S[u]=I.x,S[T]=I.y,S[V]=I.z,S[u+p]=I.x,S[T+p]=I.y,S[V+p]=I.z)}}if(t.st){p=l.length;for(let u=0;u<p;u+=2)l[u]=(l[u]-O.x)/(y.x-O.x),l[u+1]=(l[u+1]-O.y)/(y.y-O.y)}let m=new ht;if(t.position&&(m.position=new F({componentDatatype:P.DOUBLE,componentsPerAttribute:3,values:c})),t.st&&(m.st=new F({componentDatatype:P.FLOAT,componentsPerAttribute:2,values:l})),t.normal&&(m.normal=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:A})),t.tangent&&(m.tangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:x})),t.bitangent&&(m.bitangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:S})),z&&(m.extrudeDirection=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:b})),Z(e.offsetAttribute)){let u=new Uint8Array(g);if(e.offsetAttribute===$.TOP)u=u.fill(1,0,g/2);else{let T=e.offsetAttribute===$.NONE?0:1;u=u.fill(T)}m.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:u})}return m}function zt(o){let e=o.length/3,t=st.createTypedArray(e,e*6),n=0;for(let s=0;s<e;s++){let i=s,r=s+e,f=(i+1)%e,h=f+e;t[n++]=i,t[n++]=r,t[n++]=f,t[n++]=f,t[n++]=r,t[n++]=h}return t}var mt=new it,ut=new it;function Bt(o){let e=o.center,t=o.ellipsoid,n=o.semiMajorAxis,s=a.multiplyByScalar(t.geodeticSurfaceNormal(e,tt),o.height,tt);mt.center=a.add(e,s,mt.center),mt.radius=n,s=a.multiplyByScalar(t.geodeticSurfaceNormal(e,s),o.extrudedHeight,s),ut.center=a.add(e,s,ut.center),ut.radius=n;let i=G.computeEllipsePositions(o,!0,!0),r=i.positions,f=i.numPts,h=i.outerPositions,N=it.union(mt,ut),g=Ot(r,o,!0),c=jt(f),l=c.length;c.length=l*2;let A=r.length/3;for(let _=0;_<l;_+=3)c[_+l]=c[_+2]+A,c[_+1+l]=c[_+1]+A,c[_+2+l]=c[_]+A;let x=st.createTypedArray(A*2/3,c),S=new rt({attributes:g,indices:x,primitiveType:ct.TRIANGLES}),z=vt(h,o);c=zt(h);let b=st.createTypedArray(h.length*2/3,c),M=new rt({attributes:z,indices:b,primitiveType:ct.TRIANGLES}),d=yt.combineInstances([new At({geometry:S}),new At({geometry:M})]);return{boundingSphere:N,attributes:d[0].attributes,indices:d[0].indices}}function Ct(o,e,t,n,s,i,r){let h=G.computeEllipsePositions({center:o,semiMajorAxis:e,semiMinorAxis:t,rotation:n,granularity:s},!1,!0).outerPositions,N=h.length/3,g=new Array(N);for(let l=0;l<N;++l)g[l]=a.fromArray(h,l*3);let c=bt.fromCartesianArray(g,i,r);return c.width>R.PI&&(c.north=c.north>0?R.PI_OVER_TWO-R.EPSILON7:c.north,c.south=c.south<0?R.EPSILON7-R.PI_OVER_TWO:c.south,c.east=R.PI,c.west=-R.PI),c}function Y(o){o=o??dt.EMPTY_OBJECT;let e=o.center,t=o.ellipsoid??D.default,n=o.semiMajorAxis,s=o.semiMinorAxis,i=o.granularity??R.RADIANS_PER_DEGREE,r=o.vertexFormat??v.DEFAULT;if(k.defined("options.center",e),k.typeOf.number("options.semiMajorAxis",n),k.typeOf.number("options.semiMinorAxis",s),n<s)throw new ot("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(i<=0)throw new ot("granularity must be greater than zero.");let f=o.height??0,h=o.extrudedHeight??f;this._center=a.clone(e),this._semiMajorAxis=n,this._semiMinorAxis=s,this._ellipsoid=D.clone(t),this._rotation=o.rotation??0,this._stRotation=o.stRotation??0,this._height=Math.max(h,f),this._granularity=i,this._vertexFormat=v.clone(r),this._extrudedHeight=Math.min(h,f),this._shadowVolume=o.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=o.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}Y.packedLength=a.packedLength+D.packedLength+v.packedLength+9;Y.pack=function(o,e,t){return k.defined("value",o),k.defined("array",e),t=t??0,a.pack(o._center,e,t),t+=a.packedLength,D.pack(o._ellipsoid,e,t),t+=D.packedLength,v.pack(o._vertexFormat,e,t),t+=v.packedLength,e[t++]=o._semiMajorAxis,e[t++]=o._semiMinorAxis,e[t++]=o._rotation,e[t++]=o._stRotation,e[t++]=o._height,e[t++]=o._granularity,e[t++]=o._extrudedHeight,e[t++]=o._shadowVolume?1:0,e[t]=o._offsetAttribute??-1,e};var Rt=new a,It=new D,Lt=new v,H={center:Rt,ellipsoid:It,vertexFormat:Lt,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Y.unpack=function(o,e,t){k.defined("array",o),e=e??0;let n=a.unpack(o,e,Rt);e+=a.packedLength;let s=D.unpack(o,e,It);e+=D.packedLength;let i=v.unpack(o,e,Lt);e+=v.packedLength;let r=o[e++],f=o[e++],h=o[e++],N=o[e++],g=o[e++],c=o[e++],l=o[e++],A=o[e++]===1,x=o[e];return Z(t)?(t._center=a.clone(n,t._center),t._ellipsoid=D.clone(s,t._ellipsoid),t._vertexFormat=v.clone(i,t._vertexFormat),t._semiMajorAxis=r,t._semiMinorAxis=f,t._rotation=h,t._stRotation=N,t._height=g,t._granularity=c,t._extrudedHeight=l,t._shadowVolume=A,t._offsetAttribute=x===-1?void 0:x,t):(H.height=g,H.extrudedHeight=l,H.granularity=c,H.stRotation=N,H.rotation=h,H.semiMajorAxis=r,H.semiMinorAxis=f,H.shadowVolume=A,H.offsetAttribute=x===-1?void 0:x,new Y(H))};Y.computeRectangle=function(o,e){o=o??dt.EMPTY_OBJECT;let t=o.center,n=o.ellipsoid??D.default,s=o.semiMajorAxis,i=o.semiMinorAxis,r=o.granularity??R.RADIANS_PER_DEGREE,f=o.rotation??0;if(k.defined("options.center",t),k.typeOf.number("options.semiMajorAxis",s),k.typeOf.number("options.semiMinorAxis",i),s<i)throw new ot("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(r<=0)throw new ot("granularity must be greater than zero.");return Ct(t,s,i,f,r,n,e)};Y.createGeometry=function(o){if(o._semiMajorAxis<=0||o._semiMinorAxis<=0)return;let e=o._height,t=o._extrudedHeight,n=!R.equalsEpsilon(e,t,0,R.EPSILON2);o._center=o._ellipsoid.scaleToGeodeticSurface(o._center,o._center);let s={center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,ellipsoid:o._ellipsoid,rotation:o._rotation,height:e,granularity:o._granularity,vertexFormat:o._vertexFormat,stRotation:o._stRotation},i;if(n)s.extrudedHeight=t,s.shadowVolume=o._shadowVolume,s.offsetAttribute=o._offsetAttribute,i=Bt(s);else if(i=Dt(s),Z(o._offsetAttribute)){let r=i.attributes.position.values.length,f=o._offsetAttribute===$.NONE?0:1,h=new Uint8Array(r/3).fill(f);i.attributes.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new rt({attributes:i.attributes,indices:i.indices,primitiveType:ct.TRIANGLES,boundingSphere:i.boundingSphere,offsetAttribute:o._offsetAttribute})};Y.createShadowVolume=function(o,e,t){let n=o._granularity,s=o._ellipsoid,i=e(n,s),r=t(n,s);return new Y({center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,ellipsoid:s,rotation:o._rotation,stRotation:o._stRotation,granularity:n,extrudedHeight:i,height:r,vertexFormat:v.POSITION_ONLY,shadowVolume:!0})};function kt(o){let e=-o._stRotation;if(e===0)return[0,0,0,1,1,0];let n=G.computeEllipsePositions({center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,rotation:o._rotation,granularity:o._granularity},!1,!0).outerPositions,s=n.length/3,i=new Array(s);for(let h=0;h<s;++h)i[h]=a.fromArray(n,h*3);let r=o._ellipsoid,f=o.rectangle;return rt._textureCoordinateRotationPoints(i,e,r,f)}Object.defineProperties(Y.prototype,{rectangle:{get:function(){return Z(this._rectangle)||(this._rectangle=Ct(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return Z(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=kt(this)),this._textureCoordinateRotationPoints}}});var de=Y;export{de as a}; diff --git a/public/Cesium/Workers/chunk-G5AGHVVC.js b/public/Cesium/Workers/chunk-G5AGHVVC.js new file mode 100644 index 000000000..2f61bfffb --- /dev/null +++ b/public/Cesium/Workers/chunk-G5AGHVVC.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as p,b as P,d as T}from"./chunk-64RSHJUE.js";import{a}from"./chunk-3SSKC3VN.js";import{a as I,b as g}from"./chunk-LEYMRMBK.js";import{e as l}from"./chunk-VTAIKJXX.js";function w(n,i,o){if(n===0)return i*o;let t=n*n,e=t*t,c=e*t,r=c*t,h=r*t,s=h*t,d=o,u=Math.sin(2*d),f=Math.sin(4*d),M=Math.sin(6*d),_=Math.sin(8*d),E=Math.sin(10*d),S=Math.sin(12*d);return i*((1-t/4-3*e/64-5*c/256-175*r/16384-441*h/65536-4851*s/1048576)*d-(3*t/8+3*e/32+45*c/1024+105*r/4096+2205*h/131072+6237*s/524288)*u+(15*e/256+45*c/1024+525*r/16384+1575*h/65536+155925*s/8388608)*f-(35*c/3072+175*r/12288+3675*h/262144+13475*s/1048576)*M+(315*r/131072+2205*h/524288+43659*s/8388608)*_-(693*h/1310720+6237*s/5242880)*E+1001*s/8388608*S)}function H(n,i,o){let t=n/o;if(i===0)return t;let e=t*t,c=e*t,r=c*t,h=i,s=h*h,d=s*s,u=d*s,f=u*s,M=f*s,_=M*s,E=Math.sin(2*t),S=Math.cos(2*t),v=Math.sin(4*t),W=Math.cos(4*t),V=Math.sin(6*t),C=Math.cos(6*t),N=Math.sin(8*t),R=Math.cos(8*t),b=Math.sin(10*t),x=Math.cos(10*t),U=Math.sin(12*t);return t+t*s/4+7*t*d/64+15*t*u/256+579*t*f/16384+1515*t*M/65536+16837*t*_/1048576+(3*t*d/16+45*t*u/256-t*(32*e-561)*f/4096-t*(232*e-1677)*M/16384+t*(399985-90560*e+512*r)*_/5242880)*S+(21*t*u/256+483*t*f/4096-t*(224*e-1969)*M/16384-t*(33152*e-112599)*_/1048576)*W+(151*t*f/4096+4681*t*M/65536+1479*t*_/16384-453*c*_/32768)*C+(1097*t*M/65536+42783*t*_/1048576)*R+8011*t*_/1048576*x+(3*s/8+3*d/16+213*u/2048-3*e*u/64+255*f/4096-33*e*f/512+20861*M/524288-33*e*M/512+r*M/1024+28273*_/1048576-471*e*_/8192+9*r*_/4096)*E+(21*d/256+21*u/256+533*f/8192-21*e*f/512+197*M/4096-315*e*M/4096+584039*_/16777216-12517*e*_/131072+7*r*_/2048)*v+(151*u/6144+151*f/4096+5019*M/131072-453*e*M/16384+26965*_/786432-8607*e*_/131072)*V+(1097*f/131072+1097*M/65536+225797*_/10485760-1097*e*_/65536)*N+(8011*M/2621440+8011*_/1048576)*b+293393*_/251658240*U}function O(n,i){if(n===0)return Math.log(Math.tan(.5*(a.PI_OVER_TWO+i)));let o=n*Math.sin(i);return Math.log(Math.tan(.5*(a.PI_OVER_TWO+i)))-n/2*Math.log((1+o)/(1-o))}function z(n,i,o,t,e){let c=O(n._ellipticity,o),r=O(n._ellipticity,e);return Math.atan2(a.negativePiToPi(t-i),r-c)}function k(n,i,o,t,e,c,r){let h=n._heading,s=c-t,d=0;if(a.equalsEpsilon(Math.abs(h),a.PI_OVER_TWO,a.EPSILON8))if(i===o)d=i*Math.cos(e)*a.negativePiToPi(s);else{let u=Math.sin(e);d=i*Math.cos(e)*a.negativePiToPi(s)/Math.sqrt(1-n._ellipticitySquared*u*u)}else{let u=w(n._ellipticity,i,e);d=(w(n._ellipticity,i,r)-u)/Math.cos(h)}return Math.abs(d)}var A=new p,q=new p;function y(n,i,o,t){let e=p.normalize(t.cartographicToCartesian(i,q),A),c=p.normalize(t.cartographicToCartesian(o,q),q);g.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(p.angleBetween(e,c))-Math.PI),.0125);let r=t.maximumRadius,h=t.minimumRadius,s=r*r,d=h*h;n._ellipticitySquared=(s-d)/s,n._ellipticity=Math.sqrt(n._ellipticitySquared),n._start=P.clone(i,n._start),n._start.height=0,n._end=P.clone(o,n._end),n._end.height=0,n._heading=z(n,i.longitude,i.latitude,o.longitude,o.latitude),n._distance=k(n,t.maximumRadius,t.minimumRadius,i.longitude,i.latitude,o.longitude,o.latitude)}function D(n,i,o,t,e,c){if(o===0)return P.clone(n,c);let r=e*e,h,s,d;if(Math.abs(a.PI_OVER_TWO-Math.abs(i))>a.EPSILON8){let u=w(e,t,n.latitude),f=o*Math.cos(i),M=u+f;if(s=H(M,e,t),Math.abs(i)<a.EPSILON10)h=a.negativePiToPi(n.longitude);else{let _=O(e,n.latitude),E=O(e,s);d=Math.tan(i)*(E-_),h=a.negativePiToPi(n.longitude+d)}}else{s=n.latitude;let u;if(e===0)u=t*Math.cos(n.latitude);else{let f=Math.sin(n.latitude);u=t*Math.cos(n.latitude)/Math.sqrt(1-r*f*f)}d=o/u,i>0?h=a.negativePiToPi(n.longitude+d):h=a.negativePiToPi(n.longitude-d)}return l(c)?(c.longitude=h,c.latitude=s,c.height=0,c):new P(h,s,0)}function m(n,i,o){let t=o??T.default;this._ellipsoid=t,this._start=new P,this._end=new P,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(n)&&l(i)&&y(this,n,i,t)}Object.defineProperties(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return g.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return g.defined("distance",this._distance),this._heading}}});m.fromStartHeadingDistance=function(n,i,o,t,e){g.defined("start",n),g.defined("heading",i),g.defined("distance",o),g.typeOf.number.greaterThan("distance",o,0);let c=t??T.default,r=c.maximumRadius,h=c.minimumRadius,s=r*r,d=h*h,u=Math.sqrt((s-d)/s);i=a.negativePiToPi(i);let f=D(n,i,o,c.maximumRadius,u);return!l(e)||l(t)&&!t.equals(e.ellipsoid)?new m(n,f,c):(e.setEndPoints(n,f),e)};m.prototype.setEndPoints=function(n,i){g.defined("start",n),g.defined("end",i),y(this,n,i,this._ellipsoid)};m.prototype.interpolateUsingFraction=function(n,i){return this.interpolateUsingSurfaceDistance(n*this._distance,i)};m.prototype.interpolateUsingSurfaceDistance=function(n,i){if(g.typeOf.number("distance",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");return D(this._start,this._heading,n,this._ellipsoid.maximumRadius,this._ellipticity,i)};m.prototype.findIntersectionWithLongitude=function(n,i){if(g.typeOf.number("intersectionLongitude",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");let o=this._ellipticity,t=this._heading,e=Math.abs(t),c=this._start;if(n=a.negativePiToPi(n),a.equalsEpsilon(Math.abs(n),Math.PI,a.EPSILON14)&&(n=a.sign(c.longitude)*Math.PI),l(i)||(i=new P),Math.abs(a.PI_OVER_TWO-e)<=a.EPSILON8)return i.longitude=n,i.latitude=c.latitude,i.height=0,i;if(a.equalsEpsilon(Math.abs(a.PI_OVER_TWO-e),a.PI_OVER_TWO,a.EPSILON8))return a.equalsEpsilon(n,c.longitude,a.EPSILON12)?void 0:(i.longitude=n,i.latitude=a.PI_OVER_TWO*a.sign(a.PI_OVER_TWO-t),i.height=0,i);let r=c.latitude,h=o*Math.sin(r),s=Math.tan(.5*(a.PI_OVER_TWO+r))*Math.exp((n-c.longitude)/Math.tan(t)),d=(1+h)/(1-h),u=c.latitude,f;do{f=u;let M=o*Math.sin(f),_=(1+M)/(1-M);u=2*Math.atan(s*Math.pow(_/d,o/2))-a.PI_OVER_TWO}while(!a.equalsEpsilon(u,f,a.EPSILON12));return i.longitude=n,i.latitude=u,i.height=0,i};m.prototype.findIntersectionWithLatitude=function(n,i){if(g.typeOf.number("intersectionLatitude",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");let o=this._ellipticity,t=this._heading,e=this._start;if(a.equalsEpsilon(Math.abs(t),a.PI_OVER_TWO,a.EPSILON8))return;let c=O(o,e.latitude),r=O(o,n),h=Math.tan(t)*(r-c),s=a.negativePiToPi(e.longitude+h);return l(i)?(i.longitude=s,i.latitude=n,i.height=0,i):new P(s,n,0)};var Y=m;export{Y as a}; diff --git a/public/Cesium/Workers/chunk-GBYLG25F.js b/public/Cesium/Workers/chunk-GBYLG25F.js new file mode 100644 index 000000000..83c7a065d --- /dev/null +++ b/public/Cesium/Workers/chunk-GBYLG25F.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var e={NONE:0,TOP:1,ALL:2},t=Object.freeze(e);export{t as a}; diff --git a/public/Cesium/Workers/chunk-GILIDQNQ.js b/public/Cesium/Workers/chunk-GILIDQNQ.js new file mode 100644 index 000000000..6e14ec7b3 --- /dev/null +++ b/public/Cesium/Workers/chunk-GILIDQNQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Q}from"./chunk-ARG42DC4.js";import{a as N}from"./chunk-GBYLG25F.js";import{a as _}from"./chunk-CYCB63OH.js";import{a as K}from"./chunk-OFUUQVMR.js";import{a as H}from"./chunk-A56XVLQR.js";import{b as J,c as W,d as L}from"./chunk-RCV6KWXS.js";import{d as j}from"./chunk-4IW2T6GF.js";import{a as S}from"./chunk-AU7IKHOH.js";import{a as b,c as E,f as Z}from"./chunk-64RSHJUE.js";import{a as Y}from"./chunk-3SSKC3VN.js";import{a as F}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";var k=new E,ot=new b,nt=new b,it=new b,rt=new b;function O(t){t=t??Z.EMPTY_OBJECT;let n=t.length,e=t.topRadius,h=t.bottomRadius,o=t.vertexFormat??_.DEFAULT,s=t.slices??128;if(!g(n))throw new F("options.length must be defined.");if(!g(e))throw new F("options.topRadius must be defined.");if(!g(h))throw new F("options.bottomRadius must be defined.");if(s<3)throw new F("options.slices must be greater than or equal to 3.");if(g(t.offsetAttribute)&&t.offsetAttribute===N.TOP)throw new F("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._length=n,this._topRadius=e,this._bottomRadius=h,this._vertexFormat=_.clone(o),this._slices=s,this._offsetAttribute=t.offsetAttribute,this._workerName="createCylinderGeometry"}O.packedLength=_.packedLength+5;O.pack=function(t,n,e){if(!g(t))throw new F("value is required");if(!g(n))throw new F("array is required");return e=e??0,_.pack(t._vertexFormat,n,e),e+=_.packedLength,n[e++]=t._length,n[e++]=t._topRadius,n[e++]=t._bottomRadius,n[e++]=t._slices,n[e]=t._offsetAttribute??-1,n};var X=new _,D={vertexFormat:X,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};O.unpack=function(t,n,e){if(!g(t))throw new F("array is required");n=n??0;let h=_.unpack(t,n,X);n+=_.packedLength;let o=t[n++],s=t[n++],p=t[n++],P=t[n++],w=t[n];return g(e)?(e._vertexFormat=_.clone(h,e._vertexFormat),e._length=o,e._topRadius=s,e._bottomRadius=p,e._slices=P,e._offsetAttribute=w===-1?void 0:w,e):(D.length=o,D.topRadius=s,D.bottomRadius=p,D.slices=P,D.offsetAttribute=w===-1?void 0:w,new O(D))};O.createGeometry=function(t){let n=t._length,e=t._topRadius,h=t._bottomRadius,o=t._vertexFormat,s=t._slices;if(n<=0||e<0||h<0||e===0&&h===0)return;let p=s+s,P=s+p,w=p+p,C=Q.computePositions(n,e,h,s,!0),z=o.st?new Float32Array(w*2):void 0,c=o.normal?new Float32Array(w*3):void 0,m=o.tangent?new Float32Array(w*3):void 0,u=o.bitangent?new Float32Array(w*3):void 0,i,G=o.normal||o.tangent||o.bitangent;if(G){let T=o.tangent||o.bitangent,f=0,d=0,l=0,q=Math.atan2(h-e,n),A=ot;A.z=Math.sin(q);let B=Math.cos(q),R=it,y=nt;for(i=0;i<s;i++){let V=i/s*Y.TWO_PI,tt=B*Math.cos(V),et=B*Math.sin(V);G&&(A.x=tt,A.y=et,T&&(R=b.normalize(b.cross(b.UNIT_Z,A,R),R)),o.normal&&(c[f++]=A.x,c[f++]=A.y,c[f++]=A.z,c[f++]=A.x,c[f++]=A.y,c[f++]=A.z),o.tangent&&(m[d++]=R.x,m[d++]=R.y,m[d++]=R.z,m[d++]=R.x,m[d++]=R.y,m[d++]=R.z),o.bitangent&&(y=b.normalize(b.cross(A,R,y),y),u[l++]=y.x,u[l++]=y.y,u[l++]=y.z,u[l++]=y.x,u[l++]=y.y,u[l++]=y.z))}for(i=0;i<s;i++)o.normal&&(c[f++]=0,c[f++]=0,c[f++]=-1),o.tangent&&(m[d++]=1,m[d++]=0,m[d++]=0),o.bitangent&&(u[l++]=0,u[l++]=-1,u[l++]=0);for(i=0;i<s;i++)o.normal&&(c[f++]=0,c[f++]=0,c[f++]=1),o.tangent&&(m[d++]=1,m[d++]=0,m[d++]=0),o.bitangent&&(u[l++]=0,u[l++]=1,u[l++]=0)}let $=12*s-12,r=K.createTypedArray(w,$),a=0,x=0;for(i=0;i<s-1;i++)r[a++]=x,r[a++]=x+2,r[a++]=x+3,r[a++]=x,r[a++]=x+3,r[a++]=x+1,x+=2;for(r[a++]=p-2,r[a++]=0,r[a++]=1,r[a++]=p-2,r[a++]=1,r[a++]=p-1,i=1;i<s-1;i++)r[a++]=p+i+1,r[a++]=p+i,r[a++]=p;for(i=1;i<s-1;i++)r[a++]=P,r[a++]=P+i,r[a++]=P+i+1;let U=0;if(o.st){let T=Math.max(e,h);for(i=0;i<w;i++){let f=b.fromArray(C,i*3,rt);z[U++]=(f.x+T)/(2*T),z[U++]=(f.y+T)/(2*T)}}let v=new H;o.position&&(v.position=new L({componentDatatype:S.DOUBLE,componentsPerAttribute:3,values:C})),o.normal&&(v.normal=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:c})),o.tangent&&(v.tangent=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:m})),o.bitangent&&(v.bitangent=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:u})),o.st&&(v.st=new L({componentDatatype:S.FLOAT,componentsPerAttribute:2,values:z})),k.x=n*.5,k.y=Math.max(h,e);let I=new j(b.ZERO,E.magnitude(k));if(g(t._offsetAttribute)){n=C.length;let T=t._offsetAttribute===N.NONE?0:1,f=new Uint8Array(n/3).fill(T);v.applyOffset=new L({componentDatatype:S.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new W({attributes:v,indices:r,primitiveType:J.TRIANGLES,boundingSphere:I,offsetAttribute:t._offsetAttribute})};var M;O.getUnitCylinder=function(){return g(M)||(M=O.createGeometry(new O({topRadius:1,bottomRadius:1,length:1,vertexFormat:_.POSITION_ONLY}))),M};var yt=O;export{yt as a}; diff --git a/public/Cesium/Workers/chunk-HMIYSTF6.js b/public/Cesium/Workers/chunk-HMIYSTF6.js new file mode 100644 index 000000000..708062df7 --- /dev/null +++ b/public/Cesium/Workers/chunk-HMIYSTF6.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as g,g as j}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-3SSKC3VN.js";import{b as n}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";function F(r,o,t){return t<0&&(t+=1),t>1&&(t-=1),t*6<1?r+(o-r)*6*t:t*2<1?o:t*3<2?r+(o-r)*(2/3-t)*6:r}function e(r,o,t,f){this.red=r??1,this.green=o??1,this.blue=t??1,this.alpha=f??1}e.fromCartesian4=function(r,o){return n.typeOf.object("cartesian",r),b(o)?(o.red=r.x,o.green=r.y,o.blue=r.z,o.alpha=r.w,o):new e(r.x,r.y,r.z,r.w)};e.fromBytes=function(r,o,t,f,C){return r=e.byteToFloat(r??255),o=e.byteToFloat(o??255),t=e.byteToFloat(t??255),f=e.byteToFloat(f??255),b(C)?(C.red=r,C.green=o,C.blue=t,C.alpha=f,C):new e(r,o,t,f)};e.fromAlpha=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("alpha",o),b(t)?(t.red=r.red,t.green=r.green,t.blue=r.blue,t.alpha=o,t):new e(r.red,r.green,r.blue,o)};var l,A,E;j.supportsTypedArrays()&&(l=new ArrayBuffer(4),A=new Uint32Array(l),E=new Uint8Array(l));e.fromRgba=function(r,o){return A[0]=r,e.fromBytes(E[0],E[1],E[2],E[3],o)};e.fromHsl=function(r,o,t,f,C){r=(r??0)%1,o=o??0,t=t??0,f=f??1;let m=t,s=t,O=t;if(o!==0){let c;t<.5?c=t*(1+o):c=t+o-t*o;let S=2*t-c;m=F(S,c,r+1/3),s=F(S,c,r),O=F(S,c,r-1/3)}return b(C)?(C.red=m,C.green=s,C.blue=O,C.alpha=f,C):new e(m,s,O,f)};e.fromRandom=function(r,o){r=r??g.EMPTY_OBJECT;let t=r.red;if(!b(t)){let s=r.minimumRed??0,O=r.maximumRed??1;n.typeOf.number.lessThanOrEquals("minimumRed",s,O),t=s+i.nextRandomNumber()*(O-s)}let f=r.green;if(!b(f)){let s=r.minimumGreen??0,O=r.maximumGreen??1;n.typeOf.number.lessThanOrEquals("minimumGreen",s,O),f=s+i.nextRandomNumber()*(O-s)}let C=r.blue;if(!b(C)){let s=r.minimumBlue??0,O=r.maximumBlue??1;n.typeOf.number.lessThanOrEquals("minimumBlue",s,O),C=s+i.nextRandomNumber()*(O-s)}let m=r.alpha;if(!b(m)){let s=r.minimumAlpha??0,O=r.maximumAlpha??1;n.typeOf.number.lessThanOrEquals("minimumAlpha",s,O),m=s+i.nextRandomNumber()*(O-s)}return b(o)?(o.red=t,o.green=f,o.blue=C,o.alpha=m,o):new e(t,f,C,m)};var a=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,z=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,p=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,R=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;e.fromCssColorString=function(r,o){n.typeOf.string("color",r),b(o)||(o=new e),r=r.trim();let t=e[r.toUpperCase()];if(b(t))return e.clone(t,o),o;let f=a.exec(r);return f!==null?(o.red=parseInt(f[1],16)/15,o.green=parseInt(f[2],16)/15,o.blue=parseInt(f[3],16)/15,o.alpha=parseInt(f[4]??"f",16)/15,o):(f=z.exec(r),f!==null?(o.red=parseInt(f[1],16)/255,o.green=parseInt(f[2],16)/255,o.blue=parseInt(f[3],16)/255,o.alpha=parseInt(f[4]??"ff",16)/255,o):(f=p.exec(r),f!==null?(o.red=parseFloat(f[1])/(f[1].substr(-1)==="%"?100:255),o.green=parseFloat(f[2])/(f[2].substr(-1)==="%"?100:255),o.blue=parseFloat(f[3])/(f[3].substr(-1)==="%"?100:255),o.alpha=parseFloat(f[4]??"1.0"),o):(f=R.exec(r),f!==null?e.fromHsl(parseFloat(f[1])/360,parseFloat(f[2])/100,parseFloat(f[3])/100,parseFloat(f[4]??"1.0"),o):(o=void 0,o))))};e.packedLength=4;e.pack=function(r,o,t){return n.typeOf.object("value",r),n.defined("array",o),t=t??0,o[t++]=r.red,o[t++]=r.green,o[t++]=r.blue,o[t]=r.alpha,o};e.unpack=function(r,o,t){return n.defined("array",r),o=o??0,b(t)||(t=new e),t.red=r[o++],t.green=r[o++],t.blue=r[o++],t.alpha=r[o],t};e.byteToFloat=function(r){return r/255};e.floatToByte=function(r){return r===1?255:r*256|0};e.clone=function(r,o){if(b(r))return b(o)?(o.red=r.red,o.green=r.green,o.blue=r.blue,o.alpha=r.alpha,o):new e(r.red,r.green,r.blue,r.alpha)};e.equals=function(r,o){return r===o||b(r)&&b(o)&&r.red===o.red&&r.green===o.green&&r.blue===o.blue&&r.alpha===o.alpha};e.equalsArray=function(r,o,t){return r.red===o[t]&&r.green===o[t+1]&&r.blue===o[t+2]&&r.alpha===o[t+3]};e.prototype.clone=function(r){return e.clone(this,r)};e.prototype.equals=function(r){return e.equals(this,r)};e.prototype.equalsEpsilon=function(r,o){return this===r||b(r)&&Math.abs(this.red-r.red)<=o&&Math.abs(this.green-r.green)<=o&&Math.abs(this.blue-r.blue)<=o&&Math.abs(this.alpha-r.alpha)<=o};e.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};e.prototype.toCssColorString=function(){let r=e.floatToByte(this.red),o=e.floatToByte(this.green),t=e.floatToByte(this.blue);return this.alpha===1?`rgb(${r},${o},${t})`:`rgba(${r},${o},${t},${this.alpha})`};e.prototype.toCssHexString=function(){let r=e.floatToByte(this.red).toString(16);r.length<2&&(r=`0${r}`);let o=e.floatToByte(this.green).toString(16);o.length<2&&(o=`0${o}`);let t=e.floatToByte(this.blue).toString(16);if(t.length<2&&(t=`0${t}`),this.alpha<1){let f=e.floatToByte(this.alpha).toString(16);return f.length<2&&(f=`0${f}`),`#${r}${o}${t}${f}`}return`#${r}${o}${t}`};e.prototype.toBytes=function(r){let o=e.floatToByte(this.red),t=e.floatToByte(this.green),f=e.floatToByte(this.blue),C=e.floatToByte(this.alpha);return b(r)?(r[0]=o,r[1]=t,r[2]=f,r[3]=C,r):[o,t,f,C]};e.prototype.toRgba=function(){return E[0]=e.floatToByte(this.red),E[1]=e.floatToByte(this.green),E[2]=e.floatToByte(this.blue),E[3]=e.floatToByte(this.alpha),A[0]};e.prototype.brighten=function(r,o){return n.typeOf.number("magnitude",r),n.typeOf.number.greaterThanOrEquals("magnitude",r,0),n.typeOf.object("result",o),r=1-r,o.red=1-(1-this.red)*r,o.green=1-(1-this.green)*r,o.blue=1-(1-this.blue)*r,o.alpha=this.alpha,o};e.prototype.darken=function(r,o){return n.typeOf.number("magnitude",r),n.typeOf.number.greaterThanOrEquals("magnitude",r,0),n.typeOf.object("result",o),r=1-r,o.red=this.red*r,o.green=this.green*r,o.blue=this.blue*r,o.alpha=this.alpha,o};e.prototype.withAlpha=function(r,o){return e.fromAlpha(this,r,o)};e.add=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red+o.red,t.green=r.green+o.green,t.blue=r.blue+o.blue,t.alpha=r.alpha+o.alpha,t};e.subtract=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red-o.red,t.green=r.green-o.green,t.blue=r.blue-o.blue,t.alpha=r.alpha-o.alpha,t};e.multiply=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red*o.red,t.green=r.green*o.green,t.blue=r.blue*o.blue,t.alpha=r.alpha*o.alpha,t};e.divide=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red/o.red,t.green=r.green/o.green,t.blue=r.blue/o.blue,t.alpha=r.alpha/o.alpha,t};e.mod=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red%o.red,t.green=r.green%o.green,t.blue=r.blue%o.blue,t.alpha=r.alpha%o.alpha,t};e.lerp=function(r,o,t,f){return n.typeOf.object("start",r),n.typeOf.object("end",o),n.typeOf.number("t",t),n.typeOf.object("result",f),f.red=i.lerp(r.red,o.red,t),f.green=i.lerp(r.green,o.green,t),f.blue=i.lerp(r.blue,o.blue,t),f.alpha=i.lerp(r.alpha,o.alpha,t),f};e.multiplyByScalar=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("scalar",o),n.typeOf.object("result",t),t.red=r.red*o,t.green=r.green*o,t.blue=r.blue*o,t.alpha=r.alpha*o,t};e.divideByScalar=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("scalar",o),n.typeOf.object("result",t),t.red=r.red/o,t.green=r.green/o,t.blue=r.blue/o,t.alpha=r.alpha/o,t};e.ALICEBLUE=Object.freeze(e.fromCssColorString("#F0F8FF"));e.ANTIQUEWHITE=Object.freeze(e.fromCssColorString("#FAEBD7"));e.AQUA=Object.freeze(e.fromCssColorString("#00FFFF"));e.AQUAMARINE=Object.freeze(e.fromCssColorString("#7FFFD4"));e.AZURE=Object.freeze(e.fromCssColorString("#F0FFFF"));e.BEIGE=Object.freeze(e.fromCssColorString("#F5F5DC"));e.BISQUE=Object.freeze(e.fromCssColorString("#FFE4C4"));e.BLACK=Object.freeze(e.fromCssColorString("#000000"));e.BLANCHEDALMOND=Object.freeze(e.fromCssColorString("#FFEBCD"));e.BLUE=Object.freeze(e.fromCssColorString("#0000FF"));e.BLUEVIOLET=Object.freeze(e.fromCssColorString("#8A2BE2"));e.BROWN=Object.freeze(e.fromCssColorString("#A52A2A"));e.BURLYWOOD=Object.freeze(e.fromCssColorString("#DEB887"));e.CADETBLUE=Object.freeze(e.fromCssColorString("#5F9EA0"));e.CHARTREUSE=Object.freeze(e.fromCssColorString("#7FFF00"));e.CHOCOLATE=Object.freeze(e.fromCssColorString("#D2691E"));e.CORAL=Object.freeze(e.fromCssColorString("#FF7F50"));e.CORNFLOWERBLUE=Object.freeze(e.fromCssColorString("#6495ED"));e.CORNSILK=Object.freeze(e.fromCssColorString("#FFF8DC"));e.CRIMSON=Object.freeze(e.fromCssColorString("#DC143C"));e.CYAN=Object.freeze(e.fromCssColorString("#00FFFF"));e.DARKBLUE=Object.freeze(e.fromCssColorString("#00008B"));e.DARKCYAN=Object.freeze(e.fromCssColorString("#008B8B"));e.DARKGOLDENROD=Object.freeze(e.fromCssColorString("#B8860B"));e.DARKGRAY=Object.freeze(e.fromCssColorString("#A9A9A9"));e.DARKGREEN=Object.freeze(e.fromCssColorString("#006400"));e.DARKGREY=e.DARKGRAY;e.DARKKHAKI=Object.freeze(e.fromCssColorString("#BDB76B"));e.DARKMAGENTA=Object.freeze(e.fromCssColorString("#8B008B"));e.DARKOLIVEGREEN=Object.freeze(e.fromCssColorString("#556B2F"));e.DARKORANGE=Object.freeze(e.fromCssColorString("#FF8C00"));e.DARKORCHID=Object.freeze(e.fromCssColorString("#9932CC"));e.DARKRED=Object.freeze(e.fromCssColorString("#8B0000"));e.DARKSALMON=Object.freeze(e.fromCssColorString("#E9967A"));e.DARKSEAGREEN=Object.freeze(e.fromCssColorString("#8FBC8F"));e.DARKSLATEBLUE=Object.freeze(e.fromCssColorString("#483D8B"));e.DARKSLATEGRAY=Object.freeze(e.fromCssColorString("#2F4F4F"));e.DARKSLATEGREY=e.DARKSLATEGRAY;e.DARKTURQUOISE=Object.freeze(e.fromCssColorString("#00CED1"));e.DARKVIOLET=Object.freeze(e.fromCssColorString("#9400D3"));e.DEEPPINK=Object.freeze(e.fromCssColorString("#FF1493"));e.DEEPSKYBLUE=Object.freeze(e.fromCssColorString("#00BFFF"));e.DIMGRAY=Object.freeze(e.fromCssColorString("#696969"));e.DIMGREY=e.DIMGRAY;e.DODGERBLUE=Object.freeze(e.fromCssColorString("#1E90FF"));e.FIREBRICK=Object.freeze(e.fromCssColorString("#B22222"));e.FLORALWHITE=Object.freeze(e.fromCssColorString("#FFFAF0"));e.FORESTGREEN=Object.freeze(e.fromCssColorString("#228B22"));e.FUCHSIA=Object.freeze(e.fromCssColorString("#FF00FF"));e.GAINSBORO=Object.freeze(e.fromCssColorString("#DCDCDC"));e.GHOSTWHITE=Object.freeze(e.fromCssColorString("#F8F8FF"));e.GOLD=Object.freeze(e.fromCssColorString("#FFD700"));e.GOLDENROD=Object.freeze(e.fromCssColorString("#DAA520"));e.GRAY=Object.freeze(e.fromCssColorString("#808080"));e.GREEN=Object.freeze(e.fromCssColorString("#008000"));e.GREENYELLOW=Object.freeze(e.fromCssColorString("#ADFF2F"));e.GREY=e.GRAY;e.HONEYDEW=Object.freeze(e.fromCssColorString("#F0FFF0"));e.HOTPINK=Object.freeze(e.fromCssColorString("#FF69B4"));e.INDIANRED=Object.freeze(e.fromCssColorString("#CD5C5C"));e.INDIGO=Object.freeze(e.fromCssColorString("#4B0082"));e.IVORY=Object.freeze(e.fromCssColorString("#FFFFF0"));e.KHAKI=Object.freeze(e.fromCssColorString("#F0E68C"));e.LAVENDER=Object.freeze(e.fromCssColorString("#E6E6FA"));e.LAVENDAR_BLUSH=Object.freeze(e.fromCssColorString("#FFF0F5"));e.LAWNGREEN=Object.freeze(e.fromCssColorString("#7CFC00"));e.LEMONCHIFFON=Object.freeze(e.fromCssColorString("#FFFACD"));e.LIGHTBLUE=Object.freeze(e.fromCssColorString("#ADD8E6"));e.LIGHTCORAL=Object.freeze(e.fromCssColorString("#F08080"));e.LIGHTCYAN=Object.freeze(e.fromCssColorString("#E0FFFF"));e.LIGHTGOLDENRODYELLOW=Object.freeze(e.fromCssColorString("#FAFAD2"));e.LIGHTGRAY=Object.freeze(e.fromCssColorString("#D3D3D3"));e.LIGHTGREEN=Object.freeze(e.fromCssColorString("#90EE90"));e.LIGHTGREY=e.LIGHTGRAY;e.LIGHTPINK=Object.freeze(e.fromCssColorString("#FFB6C1"));e.LIGHTSEAGREEN=Object.freeze(e.fromCssColorString("#20B2AA"));e.LIGHTSKYBLUE=Object.freeze(e.fromCssColorString("#87CEFA"));e.LIGHTSLATEGRAY=Object.freeze(e.fromCssColorString("#778899"));e.LIGHTSLATEGREY=e.LIGHTSLATEGRAY;e.LIGHTSTEELBLUE=Object.freeze(e.fromCssColorString("#B0C4DE"));e.LIGHTYELLOW=Object.freeze(e.fromCssColorString("#FFFFE0"));e.LIME=Object.freeze(e.fromCssColorString("#00FF00"));e.LIMEGREEN=Object.freeze(e.fromCssColorString("#32CD32"));e.LINEN=Object.freeze(e.fromCssColorString("#FAF0E6"));e.MAGENTA=Object.freeze(e.fromCssColorString("#FF00FF"));e.MAROON=Object.freeze(e.fromCssColorString("#800000"));e.MEDIUMAQUAMARINE=Object.freeze(e.fromCssColorString("#66CDAA"));e.MEDIUMBLUE=Object.freeze(e.fromCssColorString("#0000CD"));e.MEDIUMORCHID=Object.freeze(e.fromCssColorString("#BA55D3"));e.MEDIUMPURPLE=Object.freeze(e.fromCssColorString("#9370DB"));e.MEDIUMSEAGREEN=Object.freeze(e.fromCssColorString("#3CB371"));e.MEDIUMSLATEBLUE=Object.freeze(e.fromCssColorString("#7B68EE"));e.MEDIUMSPRINGGREEN=Object.freeze(e.fromCssColorString("#00FA9A"));e.MEDIUMTURQUOISE=Object.freeze(e.fromCssColorString("#48D1CC"));e.MEDIUMVIOLETRED=Object.freeze(e.fromCssColorString("#C71585"));e.MIDNIGHTBLUE=Object.freeze(e.fromCssColorString("#191970"));e.MINTCREAM=Object.freeze(e.fromCssColorString("#F5FFFA"));e.MISTYROSE=Object.freeze(e.fromCssColorString("#FFE4E1"));e.MOCCASIN=Object.freeze(e.fromCssColorString("#FFE4B5"));e.NAVAJOWHITE=Object.freeze(e.fromCssColorString("#FFDEAD"));e.NAVY=Object.freeze(e.fromCssColorString("#000080"));e.OLDLACE=Object.freeze(e.fromCssColorString("#FDF5E6"));e.OLIVE=Object.freeze(e.fromCssColorString("#808000"));e.OLIVEDRAB=Object.freeze(e.fromCssColorString("#6B8E23"));e.ORANGE=Object.freeze(e.fromCssColorString("#FFA500"));e.ORANGERED=Object.freeze(e.fromCssColorString("#FF4500"));e.ORCHID=Object.freeze(e.fromCssColorString("#DA70D6"));e.PALEGOLDENROD=Object.freeze(e.fromCssColorString("#EEE8AA"));e.PALEGREEN=Object.freeze(e.fromCssColorString("#98FB98"));e.PALETURQUOISE=Object.freeze(e.fromCssColorString("#AFEEEE"));e.PALEVIOLETRED=Object.freeze(e.fromCssColorString("#DB7093"));e.PAPAYAWHIP=Object.freeze(e.fromCssColorString("#FFEFD5"));e.PEACHPUFF=Object.freeze(e.fromCssColorString("#FFDAB9"));e.PERU=Object.freeze(e.fromCssColorString("#CD853F"));e.PINK=Object.freeze(e.fromCssColorString("#FFC0CB"));e.PLUM=Object.freeze(e.fromCssColorString("#DDA0DD"));e.POWDERBLUE=Object.freeze(e.fromCssColorString("#B0E0E6"));e.PURPLE=Object.freeze(e.fromCssColorString("#800080"));e.RED=Object.freeze(e.fromCssColorString("#FF0000"));e.ROSYBROWN=Object.freeze(e.fromCssColorString("#BC8F8F"));e.ROYALBLUE=Object.freeze(e.fromCssColorString("#4169E1"));e.SADDLEBROWN=Object.freeze(e.fromCssColorString("#8B4513"));e.SALMON=Object.freeze(e.fromCssColorString("#FA8072"));e.SANDYBROWN=Object.freeze(e.fromCssColorString("#F4A460"));e.SEAGREEN=Object.freeze(e.fromCssColorString("#2E8B57"));e.SEASHELL=Object.freeze(e.fromCssColorString("#FFF5EE"));e.SIENNA=Object.freeze(e.fromCssColorString("#A0522D"));e.SILVER=Object.freeze(e.fromCssColorString("#C0C0C0"));e.SKYBLUE=Object.freeze(e.fromCssColorString("#87CEEB"));e.SLATEBLUE=Object.freeze(e.fromCssColorString("#6A5ACD"));e.SLATEGRAY=Object.freeze(e.fromCssColorString("#708090"));e.SLATEGREY=e.SLATEGRAY;e.SNOW=Object.freeze(e.fromCssColorString("#FFFAFA"));e.SPRINGGREEN=Object.freeze(e.fromCssColorString("#00FF7F"));e.STEELBLUE=Object.freeze(e.fromCssColorString("#4682B4"));e.TAN=Object.freeze(e.fromCssColorString("#D2B48C"));e.TEAL=Object.freeze(e.fromCssColorString("#008080"));e.THISTLE=Object.freeze(e.fromCssColorString("#D8BFD8"));e.TOMATO=Object.freeze(e.fromCssColorString("#FF6347"));e.TURQUOISE=Object.freeze(e.fromCssColorString("#40E0D0"));e.VIOLET=Object.freeze(e.fromCssColorString("#EE82EE"));e.WHEAT=Object.freeze(e.fromCssColorString("#F5DEB3"));e.WHITE=Object.freeze(e.fromCssColorString("#FFFFFF"));e.WHITESMOKE=Object.freeze(e.fromCssColorString("#F5F5F5"));e.YELLOW=Object.freeze(e.fromCssColorString("#FFFF00"));e.YELLOWGREEN=Object.freeze(e.fromCssColorString("#9ACD32"));e.TRANSPARENT=Object.freeze(new e(0,0,0,0));var h=e;export{h as a}; diff --git a/public/Cesium/Workers/chunk-HTFSEEMT.js b/public/Cesium/Workers/chunk-HTFSEEMT.js new file mode 100644 index 000000000..dae287b9c --- /dev/null +++ b/public/Cesium/Workers/chunk-HTFSEEMT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l,b as d}from"./chunk-PSPPBZWI.js";import{a as t}from"./chunk-64RSHJUE.js";import{a as s}from"./chunk-3SSKC3VN.js";import{a as f,b as r}from"./chunk-LEYMRMBK.js";import{e as m}from"./chunk-VTAIKJXX.js";function o(e,n){if(r.typeOf.object("normal",e),!s.equalsEpsilon(t.magnitude(e),1,s.EPSILON6))throw new f("normal must be normalized.");r.typeOf.number("distance",n),this.normal=t.clone(e),this.distance=n}o.fromPointNormal=function(e,n,a){if(r.typeOf.object("point",e),r.typeOf.object("normal",n),!s.equalsEpsilon(t.magnitude(n),1,s.EPSILON6))throw new f("normal must be normalized.");let c=-t.dot(n,e);return m(a)?(t.clone(n,a.normal),a.distance=c,a):new o(n,c)};var b=new t;o.fromCartesian4=function(e,n){r.typeOf.object("coefficients",e);let a=t.fromCartesian4(e,b),c=e.w;if(!s.equalsEpsilon(t.magnitude(a),1,s.EPSILON6))throw new f("normal must be normalized.");return m(n)?(t.clone(a,n.normal),n.distance=c,n):new o(a,c)};o.getPointDistance=function(e,n){return r.typeOf.object("plane",e),r.typeOf.object("point",n),t.dot(e.normal,n)+e.distance};var y=new t;o.projectPointOntoPlane=function(e,n,a){r.typeOf.object("plane",e),r.typeOf.object("point",n),m(a)||(a=new t);let c=o.getPointDistance(e,n),p=t.multiplyByScalar(e.normal,c,y);return t.subtract(n,p,a)};var w=new d,j=new l,N=new t;o.transform=function(e,n,a){r.typeOf.object("plane",e),r.typeOf.object("transform",n);let c=e.normal,p=e.distance,u=d.inverseTranspose(n,w),i=l.fromElements(c.x,c.y,c.z,p,j);i=d.multiplyByVector(u,i,i);let O=t.fromCartesian4(i,N);return i=l.divideByScalar(i,t.magnitude(O),i),o.fromCartesian4(i,a)};o.clone=function(e,n){return r.typeOf.object("plane",e),m(n)?(t.clone(e.normal,n.normal),n.distance=e.distance,n):new o(e.normal,e.distance)};o.equals=function(e,n){return r.typeOf.object("left",e),r.typeOf.object("right",n),e.distance===n.distance&&t.equals(e.normal,n.normal)};o.ORIGIN_XY_PLANE=Object.freeze(new o(t.UNIT_Z,0));o.ORIGIN_YZ_PLANE=Object.freeze(new o(t.UNIT_X,0));o.ORIGIN_ZX_PLANE=Object.freeze(new o(t.UNIT_Y,0));var T=o;export{T as a}; diff --git a/public/Cesium/Workers/chunk-HWXX4CWK.js b/public/Cesium/Workers/chunk-HWXX4CWK.js new file mode 100644 index 000000000..b0477b626 --- /dev/null +++ b/public/Cesium/Workers/chunk-HWXX4CWK.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as L}from"./chunk-UP6I5URU.js";import{a as S}from"./chunk-GBYLG25F.js";import{a as D}from"./chunk-OFUUQVMR.js";import{a as H}from"./chunk-A56XVLQR.js";import{b as T,c as B,d as x}from"./chunk-RCV6KWXS.js";import{d as E}from"./chunk-4IW2T6GF.js";import{a as O}from"./chunk-AU7IKHOH.js";import{a as c,d,f as V}from"./chunk-64RSHJUE.js";import{a as w}from"./chunk-3SSKC3VN.js";import{a as A}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";var q=new c,g=new c;function U(e){let t=e.center;g=c.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,g),e.height,g),g=c.add(t,g,g);let i=new E(g,e.semiMajorAxis),f=L.computeEllipsePositions(e,!1,!0).outerPositions,o=new H({position:new x({componentDatatype:O.DOUBLE,componentsPerAttribute:3,values:L.raisePositionsToHeight(f,e,!1)})}),r=f.length/3,u=D.createTypedArray(r,r*2),m=0;for(let n=0;n<r;++n)u[m++]=n,u[m++]=(n+1)%r;return{boundingSphere:i,attributes:o,indices:u}}var j=new E,N=new E;function R(e){let t=e.center,i=e.ellipsoid,f=e.semiMajorAxis,o=c.multiplyByScalar(i.geodeticSurfaceNormal(t,q),e.height,q);j.center=c.add(t,o,j.center),j.radius=f,o=c.multiplyByScalar(i.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),N.center=c.add(t,o,N.center),N.radius=f;let r=L.computeEllipsePositions(e,!1,!0).outerPositions,u=new H({position:new x({componentDatatype:O.DOUBLE,componentsPerAttribute:3,values:L.raisePositionsToHeight(r,e,!0)})});r=u.position.values;let m=E.union(j,N),n=r.length/3;if(a(e.offsetAttribute)){let b=new Uint8Array(n);if(e.offsetAttribute===S.TOP)b=b.fill(1,0,n/2);else{let k=e.offsetAttribute===S.NONE?0:1;b=b.fill(k)}u.applyOffset=new x({componentDatatype:O.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}let l=e.numberOfVerticalLines??16;l=w.clamp(l,0,n/2);let h=D.createTypedArray(n,n*2+l*2);n/=2;let p=0,s;for(s=0;s<n;++s)h[p++]=s,h[p++]=(s+1)%n,h[p++]=s+n,h[p++]=(s+1)%n+n;let P;if(l>0){let b=Math.min(l,n);P=Math.round(n/b);let k=Math.min(P*l,n);for(s=0;s<k;s+=P)h[p++]=s,h[p++]=s+n}return{boundingSphere:m,attributes:u,indices:h}}function M(e){e=e??V.EMPTY_OBJECT;let t=e.center,i=e.ellipsoid??d.default,f=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??w.RADIANS_PER_DEGREE;if(!a(t))throw new A("center is required.");if(!a(f))throw new A("semiMajorAxis is required.");if(!a(o))throw new A("semiMinorAxis is required.");if(f<o)throw new A("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(r<=0)throw new A("granularity must be greater than zero.");let u=e.height??0,m=e.extrudedHeight??u;this._center=c.clone(t),this._semiMajorAxis=f,this._semiMinorAxis=o,this._ellipsoid=d.clone(i),this._rotation=e.rotation??0,this._height=Math.max(m,u),this._granularity=r,this._extrudedHeight=Math.min(m,u),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}M.packedLength=c.packedLength+d.packedLength+8;M.pack=function(e,t,i){if(!a(e))throw new A("value is required");if(!a(t))throw new A("array is required");return i=i??0,c.pack(e._center,t,i),i+=c.packedLength,d.pack(e._ellipsoid,t,i),i+=d.packedLength,t[i++]=e._semiMajorAxis,t[i++]=e._semiMinorAxis,t[i++]=e._rotation,t[i++]=e._height,t[i++]=e._granularity,t[i++]=e._extrudedHeight,t[i++]=e._numberOfVerticalLines,t[i]=e._offsetAttribute??-1,t};var y=new c,C=new d,_={center:y,ellipsoid:C,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};M.unpack=function(e,t,i){if(!a(e))throw new A("array is required");t=t??0;let f=c.unpack(e,t,y);t+=c.packedLength;let o=d.unpack(e,t,C);t+=d.packedLength;let r=e[t++],u=e[t++],m=e[t++],n=e[t++],l=e[t++],h=e[t++],p=e[t++],s=e[t];return a(i)?(i._center=c.clone(f,i._center),i._ellipsoid=d.clone(o,i._ellipsoid),i._semiMajorAxis=r,i._semiMinorAxis=u,i._rotation=m,i._height=n,i._granularity=l,i._extrudedHeight=h,i._numberOfVerticalLines=p,i._offsetAttribute=s===-1?void 0:s,i):(_.height=n,_.extrudedHeight=h,_.granularity=l,_.rotation=m,_.semiMajorAxis=r,_.semiMinorAxis=u,_.numberOfVerticalLines=p,_.offsetAttribute=s===-1?void 0:s,new M(_))};M.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,i=e._extrudedHeight,f=!w.equalsEpsilon(t,i,0,w.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(f)o.extrudedHeight=i,o.offsetAttribute=e._offsetAttribute,r=R(o);else if(r=U(o),a(e._offsetAttribute)){let u=r.attributes.position.values.length,m=e._offsetAttribute===S.NONE?0:1,n=new Uint8Array(u/3).fill(m);r.attributes.applyOffset=new x({componentDatatype:O.UNSIGNED_BYTE,componentsPerAttribute:1,values:n})}return new B({attributes:r.attributes,indices:r.indices,primitiveType:T.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var ie=M;export{ie as a}; diff --git a/public/Cesium/Workers/chunk-IYTZ52EY.js b/public/Cesium/Workers/chunk-IYTZ52EY.js new file mode 100644 index 000000000..482fdf5f9 --- /dev/null +++ b/public/Cesium/Workers/chunk-IYTZ52EY.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as N}from"./chunk-CYCB63OH.js";import{a as Q}from"./chunk-HTFSEEMT.js";import{a as ae}from"./chunk-A56XVLQR.js";import{b as oe,c as re,d as J}from"./chunk-RCV6KWXS.js";import{b as E,d as ie}from"./chunk-4IW2T6GF.js";import{a as C,b as F,f as D}from"./chunk-PSPPBZWI.js";import{a as H}from"./chunk-AU7IKHOH.js";import{a as r,e as G,f as A}from"./chunk-64RSHJUE.js";import{a as O}from"./chunk-3SSKC3VN.js";import{a as w,b}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function R(e){this.planes=e??[]}var X=[new r,new r,new r];r.clone(r.UNIT_X,X[0]);r.clone(r.UNIT_Y,X[1]);r.clone(r.UNIT_Z,X[2]);var j=new r,de=new r,fe=new Q(new r(1,0,0),0);R.fromBoundingSphere=function(e,t){if(!a(e))throw new w("boundingSphere is required.");a(t)||(t=new R);let n=X.length,f=t.planes;f.length=2*n;let s=e.center,_=e.radius,p=0;for(let m=0;m<n;++m){let i=X[m],c=f[p],d=f[p+1];a(c)||(c=f[p]=new C),a(d)||(d=f[p+1]=new C),r.multiplyByScalar(i,-_,j),r.add(s,j,j),c.x=i.x,c.y=i.y,c.z=i.z,c.w=-r.dot(i,j),r.multiplyByScalar(i,_,j),r.add(s,j,j),d.x=-i.x,d.y=-i.y,d.z=-i.z,d.w=-r.dot(r.negate(i,de),j),p+=2}return t};R.prototype.computeVisibility=function(e){if(!a(e))throw new w("boundingVolume is required.");let t=this.planes,n=!1;for(let f=0,s=t.length;f<s;++f){let _=e.intersectPlane(Q.fromCartesian4(t[f],fe));if(_===E.OUTSIDE)return E.OUTSIDE;_===E.INTERSECTING&&(n=!0)}return n?E.INTERSECTING:E.INSIDE};R.prototype.computeVisibilityWithPlaneMask=function(e,t){if(!a(e))throw new w("boundingVolume is required.");if(!a(t))throw new w("parentPlaneMask is required.");if(t===R.MASK_OUTSIDE||t===R.MASK_INSIDE)return t;let n=R.MASK_INSIDE,f=this.planes;for(let s=0,_=f.length;s<_;++s){let p=s<31?1<<s:0;if(s<31&&(t&p)===0)continue;let m=e.intersectPlane(Q.fromCartesian4(f[s],fe));if(m===E.OUTSIDE)return R.MASK_OUTSIDE;m===E.INTERSECTING&&(n|=p)}return n};R.MASK_OUTSIDE=4294967295;R.MASK_INSIDE=0;R.MASK_INDETERMINATE=2147483647;var $=R;function M(e){e=e??A.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new $,this._orthographicMatrix=new F}function ce(e){if(!a(e.right)||!a(e.left)||!a(e.top)||!a(e.bottom)||!a(e.near)||!a(e.far))throw new w("right, left, top, bottom, near, or far parameters are not set.");if(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far){if(e.left>e.right)throw new w("right must be greater than left.");if(e.bottom>e.top)throw new w("top must be greater than bottom.");if(e.near<=0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=F.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix)}}Object.defineProperties(M.prototype,{projectionMatrix:{get:function(){return ce(this),this._orthographicMatrix}}});var me=new r,ye=new r,ge=new r,ee=new r;M.prototype.computeCullingVolume=function(e,t,n){if(!a(e))throw new w("position is required.");if(!a(t))throw new w("direction is required.");if(!a(n))throw new w("up is required.");let f=this._cullingVolume.planes,s=this.top,_=this.bottom,p=this.right,m=this.left,i=this.near,c=this.far,d=r.cross(t,n,me);r.normalize(d,d);let y=ye;r.multiplyByScalar(t,i,y),r.add(e,y,y);let l=ge;r.multiplyByScalar(d,m,l),r.add(y,l,l);let o=f[0];return a(o)||(o=f[0]=new C),o.x=d.x,o.y=d.y,o.z=d.z,o.w=-r.dot(d,l),r.multiplyByScalar(d,p,l),r.add(y,l,l),o=f[1],a(o)||(o=f[1]=new C),o.x=-d.x,o.y=-d.y,o.z=-d.z,o.w=-r.dot(r.negate(d,ee),l),r.multiplyByScalar(n,_,l),r.add(y,l,l),o=f[2],a(o)||(o=f[2]=new C),o.x=n.x,o.y=n.y,o.z=n.z,o.w=-r.dot(n,l),r.multiplyByScalar(n,s,l),r.add(y,l,l),o=f[3],a(o)||(o=f[3]=new C),o.x=-n.x,o.y=-n.y,o.z=-n.z,o.w=-r.dot(r.negate(n,ee),l),o=f[4],a(o)||(o=f[4]=new C),o.x=t.x,o.y=t.y,o.z=t.z,o.w=-r.dot(t,y),r.multiplyByScalar(t,c,l),r.add(e,l,l),o=f[5],a(o)||(o=f[5]=new C),o.x=-t.x,o.y=-t.y,o.z=-t.z,o.w=-r.dot(r.negate(t,ee),l),this._cullingVolume};M.prototype.getPixelDimensions=function(e,t,n,f,s){if(ce(this),!a(e)||!a(t))throw new w("Both drawingBufferWidth and drawingBufferHeight are required.");if(e<=0)throw new w("drawingBufferWidth must be greater than zero.");if(t<=0)throw new w("drawingBufferHeight must be greater than zero.");if(!a(n))throw new w("distance is required.");if(!a(f))throw new w("pixelRatio is required.");if(f<=0)throw new w("pixelRatio must be greater than zero.");if(!a(s))throw new w("A result object is required.");let _=this.right-this.left,p=this.top-this.bottom,m=f*_/e,i=f*p/t;return s.x=m,s.y=i,s};M.prototype.clone=function(e){return a(e)||(e=new M),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};M.prototype.equals=function(e){return a(e)&&e instanceof M&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};M.prototype.equalsEpsilon=function(e,t,n){return e===this||a(e)&&e instanceof M&&O.equalsEpsilon(this.right,e.right,t,n)&&O.equalsEpsilon(this.left,e.left,t,n)&&O.equalsEpsilon(this.top,e.top,t,n)&&O.equalsEpsilon(this.bottom,e.bottom,t,n)&&O.equalsEpsilon(this.near,e.near,t,n)&&O.equalsEpsilon(this.far,e.far,t,n)};var he=M;function x(e){e=e??A.EMPTY_OBJECT,this._offCenterFrustum=new he,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}x.packedLength=4;x.pack=function(e,t,n){return b.typeOf.object("value",e),b.defined("array",t),n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};x.unpack=function(e,t,n){return b.defined("array",e),t=t??0,a(n)||(n=new x),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function B(e){if(!a(e.width)||!a(e.aspectRatio)||!a(e.near)||!a(e.far))throw new w("width, aspectRatio, near, or far parameters are not set.");let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){if(e.aspectRatio<0)throw new w("aspectRatio must be positive.");if(e.near<0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(x.prototype,{projectionMatrix:{get:function(){return B(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return B(this),this._offCenterFrustum}}});x.prototype.computeCullingVolume=function(e,t,n){return B(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};x.prototype.getPixelDimensions=function(e,t,n,f,s){return B(this),this._offCenterFrustum.getPixelDimensions(e,t,n,f,s)};x.prototype.clone=function(e){return a(e)||(e=new x),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};x.prototype.equals=function(e){return!a(e)||!(e instanceof x)?!1:(B(this),B(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};x.prototype.equalsEpsilon=function(e,t,n){return!a(e)||!(e instanceof x)?!1:(B(this),B(e),O.equalsEpsilon(this.width,e.width,t,n)&&O.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var V=x;function k(e){e=e??A.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new $,this._perspectiveMatrix=new F,this._infinitePerspective=new F}function te(e){if(!a(e.right)||!a(e.left)||!a(e.top)||!a(e.bottom)||!a(e.near)||!a(e.far))throw new w("right, left, top, bottom, near, or far parameters are not set.");let{top:t,bottom:n,right:f,left:s,near:_,far:p}=e;if(t!==e._top||n!==e._bottom||s!==e._left||f!==e._right||_!==e._near||p!==e._far){if(e.near<=0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._left=s,e._right=f,e._top=t,e._bottom=n,e._near=_,e._far=p,e._perspectiveMatrix=F.computePerspectiveOffCenter(s,f,n,t,_,p,e._perspectiveMatrix),e._infinitePerspective=F.computeInfinitePerspectiveOffCenter(s,f,n,t,_,e._infinitePerspective)}}Object.defineProperties(k.prototype,{projectionMatrix:{get:function(){return te(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return te(this),this._infinitePerspective}}});var Ce=new r,be=new r,Oe=new r,Fe=new r;k.prototype.computeCullingVolume=function(e,t,n){if(!a(e))throw new w("position is required.");if(!a(t))throw new w("direction is required.");if(!a(n))throw new w("up is required.");let f=this._cullingVolume.planes,s=this.top,_=this.bottom,p=this.right,m=this.left,i=this.near,c=this.far,d=r.cross(t,n,Ce),y=be;r.multiplyByScalar(t,i,y),r.add(e,y,y);let l=Oe;r.multiplyByScalar(t,c,l),r.add(e,l,l);let o=Fe;r.multiplyByScalar(d,m,o),r.add(y,o,o),r.subtract(o,e,o),r.normalize(o,o),r.cross(o,n,o),r.normalize(o,o);let h=f[0];return a(h)||(h=f[0]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(d,p,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(n,o,o),r.normalize(o,o),h=f[1],a(h)||(h=f[1]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(n,_,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(d,o,o),r.normalize(o,o),h=f[2],a(h)||(h=f[2]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(n,s,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(o,d,o),r.normalize(o,o),h=f[3],a(h)||(h=f[3]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),h=f[4],a(h)||(h=f[4]=new C),h.x=t.x,h.y=t.y,h.z=t.z,h.w=-r.dot(t,y),r.negate(t,o),h=f[5],a(h)||(h=f[5]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,l),this._cullingVolume};k.prototype.getPixelDimensions=function(e,t,n,f,s){if(te(this),!a(e)||!a(t))throw new w("Both drawingBufferWidth and drawingBufferHeight are required.");if(e<=0)throw new w("drawingBufferWidth must be greater than zero.");if(t<=0)throw new w("drawingBufferHeight must be greater than zero.");if(!a(n))throw new w("distance is required.");if(!a(f))throw new w("pixelRatio is required");if(f<=0)throw new w("pixelRatio must be greater than zero.");if(!a(s))throw new w("A result object is required.");let _=1/this.near,p=this.top*_,m=2*f*n*p/t;p=this.right*_;let i=2*f*n*p/e;return s.x=i,s.y=m,s};k.prototype.clone=function(e){return a(e)||(e=new k),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};k.prototype.equals=function(e){return a(e)&&e instanceof k&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};k.prototype.equalsEpsilon=function(e,t,n){return e===this||a(e)&&e instanceof k&&O.equalsEpsilon(this.right,e.right,t,n)&&O.equalsEpsilon(this.left,e.left,t,n)&&O.equalsEpsilon(this.top,e.top,t,n)&&O.equalsEpsilon(this.bottom,e.bottom,t,n)&&O.equalsEpsilon(this.near,e.near,t,n)&&O.equalsEpsilon(this.far,e.far,t,n)};var se=k;function v(e){e=e??A.EMPTY_OBJECT,this._offCenterFrustum=new se,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}v.packedLength=6;v.pack=function(e,t,n){return b.typeOf.object("value",e),b.defined("array",t),n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};v.unpack=function(e,t,n){return b.defined("array",e),t=t??0,a(n)||(n=new v),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function T(e){if(!a(e.fov)||!a(e.aspectRatio)||!a(e.near)||!a(e.far))throw new w("fov, aspectRatio, near, or far parameters are not set.");if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;if(b.typeOf.number.greaterThanOrEquals("fov",e.fov,0),b.typeOf.number.lessThan("fov",e.fov,Math.PI),b.typeOf.number.greaterThanOrEquals("aspectRatio",e.aspectRatio,0),b.typeOf.number.greaterThanOrEquals("near",e.near,0),e.near>e.far)throw new w("near must be less than far.");e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(v.prototype,{projectionMatrix:{get:function(){return T(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return T(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return T(this),this._fovy}},sseDenominator:{get:function(){return T(this),this._sseDenominator}},offCenterFrustum:{get:function(){return T(this),this._offCenterFrustum}}});v.prototype.computeCullingVolume=function(e,t,n){return T(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};v.prototype.getPixelDimensions=function(e,t,n,f,s){return T(this),this._offCenterFrustum.getPixelDimensions(e,t,n,f,s)};v.prototype.clone=function(e){return a(e)||(e=new v),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};v.prototype.equals=function(e){return!a(e)||!(e instanceof v)?!1:(T(this),T(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};v.prototype.equalsEpsilon=function(e,t,n){return!a(e)||!(e instanceof v)?!1:(T(this),T(e),O.equalsEpsilon(this.fov,e.fov,t,n)&&O.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var L=v;var I=0,Pe=1;function u(e){b.typeOf.object("options",e),b.typeOf.object("options.frustum",e.frustum),b.typeOf.object("options.origin",e.origin),b.typeOf.object("options.orientation",e.orientation);let t=e.frustum,n=e.orientation,f=e.origin,s=e.vertexFormat??N.DEFAULT,_=e._drawNearPlane??!0,p,m;t instanceof L?(p=I,m=L.packedLength):t instanceof V&&(p=Pe,m=V.packedLength),this._frustumType=p,this._frustum=t.clone(),this._origin=r.clone(f),this._orientation=D.clone(n),this._drawNearPlane=_,this._vertexFormat=s,this._workerName="createFrustumGeometry",this.packedLength=2+m+r.packedLength+D.packedLength+N.packedLength}u.pack=function(e,t,n){b.typeOf.object("value",e),b.defined("array",t),n=n??0;let f=e._frustumType,s=e._frustum;return t[n++]=f,f===I?(L.pack(s,t,n),n+=L.packedLength):(V.pack(s,t,n),n+=V.packedLength),r.pack(e._origin,t,n),n+=r.packedLength,D.pack(e._orientation,t,n),n+=D.packedLength,N.pack(e._vertexFormat,t,n),n+=N.packedLength,t[n]=e._drawNearPlane?1:0,t};var ze=new L,xe=new V,ve=new D,Re=new r,Te=new N;u.unpack=function(e,t,n){b.defined("array",e),t=t??0;let f=e[t++],s;f===I?(s=L.unpack(e,t,ze),t+=L.packedLength):(s=V.unpack(e,t,xe),t+=V.packedLength);let _=r.unpack(e,t,Re);t+=r.packedLength;let p=D.unpack(e,t,ve);t+=D.packedLength;let m=N.unpack(e,t,Te);t+=N.packedLength;let i=e[t]===1;if(!a(n))return new u({frustum:s,origin:_,orientation:p,vertexFormat:m,_drawNearPlane:i});let c=f===n._frustumType?n._frustum:void 0;return n._frustum=s.clone(c),n._frustumType=f,n._origin=r.clone(_,n._origin),n._orientation=D.clone(p,n._orientation),n._vertexFormat=N.clone(m,n._vertexFormat),n._drawNearPlane=i,n};function W(e,t,n,f,s,_,p,m){let i=e/3*2;for(let c=0;c<4;++c)a(t)&&(t[e]=_.x,t[e+1]=_.y,t[e+2]=_.z),a(n)&&(n[e]=p.x,n[e+1]=p.y,n[e+2]=p.z),a(f)&&(f[e]=m.x,f[e+1]=m.y,f[e+2]=m.z),e+=3;s[i]=0,s[i+1]=0,s[i+2]=1,s[i+3]=0,s[i+4]=1,s[i+5]=1,s[i+6]=0,s[i+7]=1}var qe=new G,Me=new F,ne=new F,pe=new r,le=new r,we=new r,ke=new r,Se=new r,De=new r,U=new Array(3),Z=new Array(4);Z[0]=new C(-1,-1,1,1);Z[1]=new C(1,-1,1,1);Z[2]=new C(1,1,1,1);Z[3]=new C(-1,1,1,1);var _e=new Array(4);for(let e=0;e<4;++e)_e[e]=new C;u._computeNearFarPlanes=function(e,t,n,f,s,_,p,m){let i=G.fromQuaternion(t,qe),c=_??pe,d=p??le,y=m??we;c=G.getColumn(i,0,c),d=G.getColumn(i,1,d),y=G.getColumn(i,2,y),r.normalize(c,c),r.normalize(d,d),r.normalize(y,y),r.negate(c,c);let l=F.computeView(e,y,d,c,Me),o,h,q=f.projectionMatrix;if(n===I){let P=F.multiply(q,l,ne);h=F.inverse(P,ne)}else o=F.inverseTransformation(l,ne);a(h)?(U[0]=f.near,U[1]=f.far):(U[0]=0,U[1]=f.near,U[2]=f.far);for(let P=0;P<2;++P)for(let z=0;z<4;++z){let g=C.clone(Z[z],_e[z]);if(a(h)){g=F.multiplyByVector(h,g,g);let S=1/g.w;r.multiplyByScalar(g,S,g),r.subtract(g,e,g),r.normalize(g,g);let Y=r.dot(y,g);r.multiplyByScalar(g,U[P]/Y,g),r.add(g,e,g)}else{let S=f.offCenterFrustum;a(S)&&(f=S);let Y=U[P],K=U[P+1];g.x=(g.x*(f.right-f.left)+f.left+f.right)*.5,g.y=(g.y*(f.top-f.bottom)+f.bottom+f.top)*.5,g.z=(g.z*(Y-K)-Y-K)*.5,g.w=1,F.multiplyByVector(o,g,g)}s[12*P+z*3]=g.x,s[12*P+z*3+1]=g.y,s[12*P+z*3+2]=g.z}};u.createGeometry=function(e){let t=e._frustumType,n=e._frustum,f=e._origin,s=e._orientation,_=e._drawNearPlane,p=e._vertexFormat,m=_?6:5,i=new Float64Array(72);u._computeNearFarPlanes(f,s,t,n,i);let c=24;i[c]=i[12],i[c+1]=i[13],i[c+2]=i[14],i[c+3]=i[0],i[c+4]=i[1],i[c+5]=i[2],i[c+6]=i[9],i[c+7]=i[10],i[c+8]=i[11],i[c+9]=i[21],i[c+10]=i[22],i[c+11]=i[23],c+=12,i[c]=i[15],i[c+1]=i[16],i[c+2]=i[17],i[c+3]=i[3],i[c+4]=i[4],i[c+5]=i[5],i[c+6]=i[0],i[c+7]=i[1],i[c+8]=i[2],i[c+9]=i[12],i[c+10]=i[13],i[c+11]=i[14],c+=12,i[c]=i[3],i[c+1]=i[4],i[c+2]=i[5],i[c+3]=i[15],i[c+4]=i[16],i[c+5]=i[17],i[c+6]=i[18],i[c+7]=i[19],i[c+8]=i[20],i[c+9]=i[6],i[c+10]=i[7],i[c+11]=i[8],c+=12,i[c]=i[6],i[c+1]=i[7],i[c+2]=i[8],i[c+3]=i[18],i[c+4]=i[19],i[c+5]=i[20],i[c+6]=i[21],i[c+7]=i[22],i[c+8]=i[23],i[c+9]=i[9],i[c+10]=i[10],i[c+11]=i[11],_||(i=i.subarray(12));let d=new ae({position:new J({componentDatatype:H.DOUBLE,componentsPerAttribute:3,values:i})});if(a(p.normal)||a(p.tangent)||a(p.bitangent)||a(p.st)){let l=a(p.normal)?new Float32Array(12*m):void 0,o=a(p.tangent)?new Float32Array(12*m):void 0,h=a(p.bitangent)?new Float32Array(12*m):void 0,q=a(p.st)?new Float32Array(8*m):void 0,P=pe,z=le,g=we,S=r.negate(P,ke),Y=r.negate(z,Se),K=r.negate(g,De);c=0,_&&(W(c,l,o,h,q,K,P,z),c+=12),W(c,l,o,h,q,g,S,z),c+=12,W(c,l,o,h,q,S,K,z),c+=12,W(c,l,o,h,q,Y,K,S),c+=12,W(c,l,o,h,q,P,g,z),c+=12,W(c,l,o,h,q,z,g,S),a(l)&&(d.normal=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:l})),a(o)&&(d.tangent=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:o})),a(h)&&(d.bitangent=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:h})),a(q)&&(d.st=new J({componentDatatype:H.FLOAT,componentsPerAttribute:2,values:q}))}let y=new Uint16Array(6*m);for(let l=0;l<m;++l){let o=l*6,h=l*4;y[o]=h,y[o+1]=h+1,y[o+2]=h+2,y[o+3]=h,y[o+4]=h+2,y[o+5]=h+3}return new re({attributes:d,indices:y,primitiveType:oe.TRIANGLES,boundingSphere:ie.fromVertices(i)})};var Et=u;export{V as a,L as b,Et as c}; diff --git a/public/Cesium/Workers/chunk-J6UP6FLE.js b/public/Cesium/Workers/chunk-J6UP6FLE.js new file mode 100644 index 000000000..ef7393eea --- /dev/null +++ b/public/Cesium/Workers/chunk-J6UP6FLE.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var e={NONE:0,GEODESIC:1,RHUMB:2},t=Object.freeze(e);export{t as a}; diff --git a/public/Cesium/Workers/chunk-LEYMRMBK.js b/public/Cesium/Workers/chunk-LEYMRMBK.js new file mode 100644 index 000000000..9701ddb10 --- /dev/null +++ b/public/Cesium/Workers/chunk-LEYMRMBK.js @@ -0,0 +1,27 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e as u}from"./chunk-VTAIKJXX.js";function f(t){this.name="DeveloperError",this.message=t;let e;try{throw new Error}catch(o){e=o.stack}this.stack=e}u(Object.create)&&(f.prototype=Object.create(Error.prototype),f.prototype.constructor=f);f.prototype.toString=function(){let t=`${this.name}: ${this.message}`;return u(this.stack)&&(t+=` +${this.stack.toString()}`),t};f.throwInstantiationError=function(){throw new f("This function defines an interface and should not be called directly.")};var r=f;var n={};n.typeOf={};function c(t){return`${t} is required, actual value was undefined`}function a(t,e,o){return`Expected ${o} to be typeof ${e}, actual typeof was ${t}`}n.defined=function(t,e){if(!u(e))throw new r(c(t))};n.typeOf.func=function(t,e){if(typeof e!="function")throw new r(a(typeof e,"function",t))};n.typeOf.string=function(t,e){if(typeof e!="string")throw new r(a(typeof e,"string",t))};n.typeOf.number=function(t,e){if(typeof e!="number")throw new r(a(typeof e,"number",t))};n.typeOf.number.lessThan=function(t,e,o){if(n.typeOf.number(t,e),e>=o)throw new r(`Expected ${t} to be less than ${o}, actual value was ${e}`)};n.typeOf.number.lessThanOrEquals=function(t,e,o){if(n.typeOf.number(t,e),e>o)throw new r(`Expected ${t} to be less than or equal to ${o}, actual value was ${e}`)};n.typeOf.number.greaterThan=function(t,e,o){if(n.typeOf.number(t,e),e<=o)throw new r(`Expected ${t} to be greater than ${o}, actual value was ${e}`)};n.typeOf.number.greaterThanOrEquals=function(t,e,o){if(n.typeOf.number(t,e),e<o)throw new r(`Expected ${t} to be greater than or equal to ${o}, actual value was ${e}`)};n.typeOf.object=function(t,e){if(typeof e!="object")throw new r(a(typeof e,"object",t))};n.typeOf.bool=function(t,e){if(typeof e!="boolean")throw new r(a(typeof e,"boolean",t))};n.typeOf.bigint=function(t,e){if(typeof e!="bigint")throw new r(a(typeof e,"bigint",t))};n.typeOf.number.equals=function(t,e,o,i){if(n.typeOf.number(t,o),n.typeOf.number(e,i),o!==i)throw new r(`${t} must be equal to ${e}, the actual values are ${o} and ${i}`)};var l=n;export{r as a,l as b}; diff --git a/public/Cesium/Workers/chunk-M3MGYQSL.js b/public/Cesium/Workers/chunk-M3MGYQSL.js new file mode 100644 index 000000000..f15c09de2 --- /dev/null +++ b/public/Cesium/Workers/chunk-M3MGYQSL.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var r,u=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&u.decode();var a=null;function h(){return(a===null||a.byteLength===0)&&(a=new Uint8Array(r.memory.buffer)),a}function b(e,t){return e=e>>>0,u.decode(h().subarray(e,e+t))}var o=null;function g(){return(o===null||o.byteLength===0)&&(o=new Uint32Array(r.memory.buffer)),o}function m(e,t){return e=e>>>0,g().subarray(e/4,e/4+t)}var y=0;function x(e,t){let n=t(e.length*4,4)>>>0;return g().set(e,n/4),y=e.length,n}function c(e){let t=r.__wbindgen_export_0.get(e);return r.__externref_table_dealloc(e),t}function U(e,t,n,i,_){let s=r.generate_splat_texture(e,t,n,i,_);if(s[2])throw c(s[1]);return f.__wrap(s[0])}function M(e,t,n){let i=r.radix_sort_gaussians_indexes(e,t,n);if(i[2])throw c(i[1]);return c(i[0])}var w=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>r.__wbg_texturedata_free(e>>>0,1)),f=class e{static __wrap(t){t=t>>>0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,w.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,w.unregister(this),t}free(){let t=this.__destroy_into_raw();r.__wbg_texturedata_free(t,0)}get data(){let t=r.texturedata_data(this.__wbg_ptr);var n=m(t[0],t[1]).slice();return r.__wbindgen_free(t[0],t[1]*4,4),n}get width(){return r.texturedata_width(this.__wbg_ptr)>>>0}get height(){return r.texturedata_height(this.__wbg_ptr)>>>0}static new(t,n,i){let _=x(t,r.__wbindgen_malloc),s=y,p=r.texturedata_new(_,s,n,i);return e.__wrap(p)}};async function A(e,t){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",i);else throw i}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function d(){let e={};return e.wbg={},e.wbg.__wbg_buffer_609cc3eee51ed158=function(t){return t.buffer},e.wbg.__wbg_length_3b4f022188ae8db6=function(t){return t.length},e.wbg.__wbg_length_a446193dc22c12f8=function(t){return t.length},e.wbg.__wbg_new_780abee5c1739fd7=function(t){return new Float32Array(t)},e.wbg.__wbg_new_a12002a7f91c75be=function(t){return new Uint8Array(t)},e.wbg.__wbg_new_e3b321dcfef89fc7=function(t){return new Uint32Array(t)},e.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(t,n,i){return new Uint32Array(t,n>>>0,i>>>0)},e.wbg.__wbg_set_10bad9bee0e9c58b=function(t,n,i){t.set(n,i>>>0)},e.wbg.__wbg_set_65595bdd868b3009=function(t,n,i){t.set(n,i>>>0)},e.wbg.__wbindgen_init_externref_table=function(){let t=r.__wbindgen_export_0,n=t.grow(4);t.set(0,void 0),t.set(n+0,void 0),t.set(n+1,null),t.set(n+2,!0),t.set(n+3,!1)},e.wbg.__wbindgen_memory=function(){return r.memory},e.wbg.__wbindgen_string_new=function(t,n){return b(t,n)},e.wbg.__wbindgen_throw=function(t,n){throw new Error(b(t,n))},e}function l(e,t){return r=e.exports,W.__wbindgen_wasm_module=t,o=null,a=null,r.__wbindgen_start(),r}function O(e){if(r!==void 0)return r;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module:e}=e:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let t=d();e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e));let n=new WebAssembly.Instance(e,t);return l(n,e)}async function W(e){if(r!==void 0)return r;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("wasm_splats_bg.wasm",import.meta.url));let t=d();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:i}=await A(await e,t);return l(n,i)}export{U as a,M as b,O as c}; diff --git a/public/Cesium/Workers/chunk-N4VJKXZS.js b/public/Cesium/Workers/chunk-N4VJKXZS.js new file mode 100644 index 000000000..875930a12 --- /dev/null +++ b/public/Cesium/Workers/chunk-N4VJKXZS.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as d}from"./chunk-4IW2T6GF.js";import{a as i}from"./chunk-64RSHJUE.js";import{b as r}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";function t(m,n,e){this.minimum=i.clone(m??i.ZERO),this.maximum=i.clone(n??i.ZERO),c(e)?e=i.clone(e):e=i.midpoint(this.minimum,this.maximum,new i),this.center=e}t.fromCorners=function(m,n,e){return r.defined("minimum",m),r.defined("maximum",n),c(e)||(e=new t),e.minimum=i.clone(m,e.minimum),e.maximum=i.clone(n,e.maximum),e.center=i.midpoint(m,n,e.center),e};t.fromPoints=function(m,n){if(c(n)||(n=new t),!c(m)||m.length===0)return n.minimum=i.clone(i.ZERO,n.minimum),n.maximum=i.clone(i.ZERO,n.maximum),n.center=i.clone(i.ZERO,n.center),n;let e=m[0].x,a=m[0].y,u=m[0].z,o=m[0].x,y=m[0].y,l=m[0].z,q=m.length;for(let E=1;E<q;E++){let M=m[E],z=M.x,Z=M.y,p=M.z;e=Math.min(z,e),o=Math.max(z,o),a=Math.min(Z,a),y=Math.max(Z,y),u=Math.min(p,u),l=Math.max(p,l)}let f=n.minimum;f.x=e,f.y=a,f.z=u;let x=n.maximum;return x.x=o,x.y=y,x.z=l,n.center=i.midpoint(f,x,n.center),n};t.clone=function(m,n){if(c(m))return c(n)?(n.minimum=i.clone(m.minimum,n.minimum),n.maximum=i.clone(m.maximum,n.maximum),n.center=i.clone(m.center,n.center),n):new t(m.minimum,m.maximum,m.center)};t.equals=function(m,n){return m===n||c(m)&&c(n)&&i.equals(m.center,n.center)&&i.equals(m.minimum,n.minimum)&&i.equals(m.maximum,n.maximum)};var h=new i;t.intersectPlane=function(m,n){r.defined("box",m),r.defined("plane",n),h=i.subtract(m.maximum,m.minimum,h);let e=i.multiplyByScalar(h,.5,h),a=n.normal,u=e.x*Math.abs(a.x)+e.y*Math.abs(a.y)+e.z*Math.abs(a.z),o=i.dot(m.center,a)+n.distance;return o-u>0?d.INSIDE:o+u<0?d.OUTSIDE:d.INTERSECTING};t.prototype.clone=function(m){return t.clone(this,m)};t.prototype.intersectPlane=function(m){return t.intersectPlane(this,m)};t.prototype.equals=function(m){return t.equals(this,m)};var S=t;export{S as a}; diff --git a/public/Cesium/Workers/chunk-NB3ML6JO.js b/public/Cesium/Workers/chunk-NB3ML6JO.js new file mode 100644 index 000000000..550a03086 --- /dev/null +++ b/public/Cesium/Workers/chunk-NB3ML6JO.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-XRL4AVS5.js";import{a as P}from"./chunk-3W4GT7KQ.js";import{a as O,b as L}from"./chunk-64RSHJUE.js";import{a as y}from"./chunk-3SSKC3VN.js";import{e as S}from"./chunk-VTAIKJXX.js";var T={};function b(a,e){return y.equalsEpsilon(a.latitude,e.latitude,y.EPSILON10)&&y.equalsEpsilon(a.longitude,e.longitude,y.EPSILON10)}var q=new L,v=new L;function w(a,e,i,h){e=P(e,O.equalsEpsilon);let p=e.length;if(p<2)return;let E=S(h),u=S(i),l=new Array(p),g=new Array(p),r=new Array(p),d=e[0];l[0]=d;let f=a.cartesianToCartographic(d,q);u&&(f.height=i[0]),g[0]=f.height,E?r[0]=h[0]:r[0]=0;let o=g[0],m=r[0],t=o===m,n=1;for(let c=1;c<p;++c){let A=e[c],s=a.cartesianToCartographic(A,v);u&&(s.height=i[c]),t=t&&s.height===0,b(f,s)?f.height<s.height&&(g[n-1]=s.height):(l[n]=A,g[n]=s.height,E?r[n]=h[c]:r[n]=0,t=t&&g[n]===r[n],L.clone(s,f),++n)}if(!(t||n<2))return l.length=n,g.length=n,r.length=n,{positions:l,topHeights:g,bottomHeights:r}}var D=new Array(2),F=new Array(2),B={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};T.computePositions=function(a,e,i,h,p,E){let u=w(a,e,i,h);if(!S(u))return;e=u.positions,i=u.topHeights,h=u.bottomHeights;let l=e.length,g=l-2,r,d,f=y.chordLength(p,a.maximumRadius),o=B;if(o.minDistance=f,o.ellipsoid=a,E){let m=0,t;for(t=0;t<l-1;t++)m+=C.numberOfPoints(e[t],e[t+1],f)+1;r=new Float64Array(m*3),d=new Float64Array(m*3);let n=D,c=F;o.positions=n,o.height=c;let A=0;for(t=0;t<l-1;t++){n[0]=e[t],n[1]=e[t+1],c[0]=i[t],c[1]=i[t+1];let s=C.generateArc(o);r.set(s,A),c[0]=h[t],c[1]=h[t+1],d.set(C.generateArc(o),A),A+=s.length}}else o.positions=e,o.height=i,r=new Float64Array(C.generateArc(o)),o.height=h,d=new Float64Array(C.generateArc(o));return{bottomPositions:d,topPositions:r,numCorners:g}};var j=T;export{j as a}; diff --git a/public/Cesium/Workers/chunk-OFUUQVMR.js b/public/Cesium/Workers/chunk-OFUUQVMR.js new file mode 100644 index 000000000..d88b7e276 --- /dev/null +++ b/public/Cesium/Workers/chunk-OFUUQVMR.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-3SSKC3VN.js";import{a as N}from"./chunk-OSW76XDF.js";import{a as t}from"./chunk-LEYMRMBK.js";import{e as i}from"./chunk-VTAIKJXX.js";var r={UNSIGNED_BYTE:N.UNSIGNED_BYTE,UNSIGNED_SHORT:N.UNSIGNED_SHORT,UNSIGNED_INT:N.UNSIGNED_INT};r.getSizeInBytes=function(e){switch(e){case r.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case r.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case r.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}throw new t("indexDatatype is required and must be a valid IndexDatatype constant.")};r.fromSizeInBytes=function(e){switch(e){case 2:return r.UNSIGNED_SHORT;case 4:return r.UNSIGNED_INT;case 1:return r.UNSIGNED_BYTE;default:throw new t("Size in bytes cannot be mapped to an IndexDatatype")}};r.validate=function(e){return i(e)&&(e===r.UNSIGNED_BYTE||e===r.UNSIGNED_SHORT||e===r.UNSIGNED_INT)};r.createTypedArray=function(e,n){if(!i(e))throw new t("numberOfVertices is required.");return e>=a.SIXTY_FOUR_KILOBYTES?new Uint32Array(n):new Uint16Array(n)};r.createTypedArrayFromArrayBuffer=function(e,n,E,o){if(!i(e))throw new t("numberOfVertices is required.");if(!i(n))throw new t("sourceArray is required.");if(!i(E))throw new t("byteOffset is required.");return e>=a.SIXTY_FOUR_KILOBYTES?new Uint32Array(n,E,o):new Uint16Array(n,E,o)};r.fromTypedArray=function(e){if(e instanceof Uint8Array)return r.UNSIGNED_BYTE;if(e instanceof Uint16Array)return r.UNSIGNED_SHORT;if(e instanceof Uint32Array)return r.UNSIGNED_INT;throw new t("array must be a Uint8Array, Uint16Array, or Uint32Array.")};var u=Object.freeze(r);export{u as a}; diff --git a/public/Cesium/Workers/chunk-OSW76XDF.js b/public/Cesium/Workers/chunk-OSW76XDF.js new file mode 100644 index 000000000..547bf3e76 --- /dev/null +++ b/public/Cesium/Workers/chunk-OSW76XDF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var E={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},_=Object.freeze(E);export{_ as a}; diff --git a/public/Cesium/Workers/chunk-PSPPBZWI.js b/public/Cesium/Workers/chunk-PSPPBZWI.js new file mode 100644 index 000000000..c4002f625 --- /dev/null +++ b/public/Cesium/Workers/chunk-PSPPBZWI.js @@ -0,0 +1,66 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as g,b as Me,c as be,d as Ie,e as B,f as _e,g as un}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as Se}from"./chunk-ED5JPB3S.js";import{a as A,b as s}from"./chunk-LEYMRMBK.js";import{a as Sn,c as Rn,d as Ze,e as p}from"./chunk-VTAIKJXX.js";var Pt=Rn((en,nn)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var n=typeof en=="object"&&en&&!en.nodeType&&en,t=typeof nn=="object"&&nn&&!nn.nodeType&&nn,o=typeof global=="object"&&global;(o.global===o||o.window===o||o.self===o)&&(e=o);var i,r=2147483647,a=36,u=1,d=26,m=38,l=700,w=72,E=128,T="-",M=/^xn--/,v=/[^\x20-\x7E]/,I=/[\x2E\u3002\uFF0E\uFF61]/g,N={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=a-u,k=Math.floor,x=String.fromCharCode,Q;function W(b){throw new RangeError(N[b])}function K(b,z){for(var D=b.length,Y=[];D--;)Y[D]=z(b[D]);return Y}function oe(b,z){var D=b.split("@"),Y="";D.length>1&&(Y=D[0]+"@",b=D[1]),b=b.replace(I,".");var re=b.split("."),se=K(re,z).join(".");return Y+se}function X(b){for(var z=[],D=0,Y=b.length,re,se;D<Y;)re=b.charCodeAt(D++),re>=55296&&re<=56319&&D<Y?(se=b.charCodeAt(D++),(se&64512)==56320?z.push(((re&1023)<<10)+(se&1023)+65536):(z.push(re),D--)):z.push(re);return z}function te(b){return K(b,function(z){var D="";return z>65535&&(z-=65536,D+=x(z>>>10&1023|55296),z=56320|z&1023),D+=x(z),D}).join("")}function Z(b){return b-48<10?b-22:b-65<26?b-65:b-97<26?b-97:a}function c(b,z){return b+22+75*(b<26)-((z!=0)<<5)}function f(b,z,D){var Y=0;for(b=D?k(b/l):b>>1,b+=k(b/z);b>F*d>>1;Y+=a)b=k(b/F);return k(Y+(F+1)*b/(b+m))}function h(b){var z=[],D=b.length,Y,re=0,se=E,ee=w,fe,he,me,de,pe,V,ge,Te,je;for(fe=b.lastIndexOf(T),fe<0&&(fe=0),he=0;he<fe;++he)b.charCodeAt(he)>=128&&W("not-basic"),z.push(b.charCodeAt(he));for(me=fe>0?fe+1:0;me<D;){for(de=re,pe=1,V=a;me>=D&&W("invalid-input"),ge=Z(b.charCodeAt(me++)),(ge>=a||ge>k((r-re)/pe))&&W("overflow"),re+=ge*pe,Te=V<=ee?u:V>=ee+d?d:V-ee,!(ge<Te);V+=a)je=a-Te,pe>k(r/je)&&W("overflow"),pe*=je;Y=z.length+1,ee=f(re-de,Y,de==0),k(re/Y)>r-se&&W("overflow"),se+=k(re/Y),re%=Y,z.splice(re++,0,se)}return te(z)}function y(b){var z,D,Y,re,se,ee,fe,he,me,de,pe,V=[],ge,Te,je,fn;for(b=X(b),ge=b.length,z=E,D=0,se=w,ee=0;ee<ge;++ee)pe=b[ee],pe<128&&V.push(x(pe));for(Y=re=V.length,re&&V.push(T);Y<ge;){for(fe=r,ee=0;ee<ge;++ee)pe=b[ee],pe>=z&&pe<fe&&(fe=pe);for(Te=Y+1,fe-z>k((r-D)/Te)&&W("overflow"),D+=(fe-z)*Te,z=fe,ee=0;ee<ge;++ee)if(pe=b[ee],pe<z&&++D>r&&W("overflow"),pe==z){for(he=D,me=a;de=me<=se?u:me>=se+d?d:me-se,!(he<de);me+=a)fn=he-de,je=a-de,V.push(x(c(de+fn%je,0))),he=k(fn/je);V.push(x(c(he,0))),se=f(D,Te,Y==re),D=0,++Y}++D,++z}return V.join("")}function O(b){return oe(b,function(z){return M.test(z)?h(z.slice(4).toLowerCase()):z})}function C(b){return oe(b,function(z){return v.test(z)?"xn--"+y(z):z})}if(i={version:"1.3.2",ucs2:{decode:X,encode:te},decode:h,encode:y,toASCII:C,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return i});else if(n&&t)if(nn.exports==n)t.exports=i;else for(Q in i)i.hasOwnProperty(Q)&&(n[Q]=i[Q]);else e.punycode=i})(en)});var zt=Rn((Ut,Mn)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Mn=="object"&&Mn.exports?Mn.exports=n():typeof define=="function"&&define.amd?define(n):e.IPv6=n(e)})(Ut,function(e){"use strict";var n=e&&e.IPv6;function t(i){var r=i.toLowerCase(),a=r.split(":"),u=a.length,d=8;a[0]===""&&a[1]===""&&a[2]===""?(a.shift(),a.shift()):a[0]===""&&a[1]===""?a.shift():a[u-1]===""&&a[u-2]===""&&a.pop(),u=a.length,a[u-1].indexOf(".")!==-1&&(d=7);var m;for(m=0;m<u&&a[m]!=="";m++);if(m<d)for(a.splice(m,1,"0000");a.length<d;)a.splice(m,0,"0000");for(var l,w=0;w<d;w++){l=a[w].split("");for(var E=0;E<3&&(l[0]==="0"&&l.length>1);E++)l.splice(0,1);a[w]=l.join("")}var T=-1,M=0,v=0,I=-1,N=!1;for(w=0;w<d;w++)N?a[w]==="0"?v+=1:(N=!1,v>M&&(T=I,M=v)):a[w]==="0"&&(N=!0,I=w,v=1);v>M&&(T=I,M=v),M>1&&a.splice(T,M,""),u=a.length;var F="";for(a[0]===""&&(F=":"),w=0;w<u&&(F+=a[w],w!==u-1);w++)F+=":";return a[u-1]===""&&(F+=":"),F}function o(){return e.IPv6===this&&(e.IPv6=n),this}return{best:t,noConflict:o}})});var qt=Rn((It,Pn)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Pn=="object"&&Pn.exports?Pn.exports=n():typeof define=="function"&&define.amd?define(n):e.SecondLevelDomains=n(e)})(It,function(e){"use strict";var n=e&&e.SecondLevelDomains,t={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return!1;var r=o.lastIndexOf(".",i-1);if(r<=0||r>=i-1)return!1;var a=t.list[o.slice(i+1)];return a?a.indexOf(" "+o.slice(r+1,i)+" ")>=0:!1},is:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return!1;var r=o.lastIndexOf(".",i-1);if(r>=0)return!1;var a=t.list[o.slice(i+1)];return a?a.indexOf(" "+o.slice(0,i)+" ")>=0:!1},get:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return null;var r=o.lastIndexOf(".",i-1);if(r<=0||r>=i-1)return null;var a=t.list[o.slice(i+1)];return!a||a.indexOf(" "+o.slice(r+1,i)+" ")<0?null:o.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=n),this}};return t})});var Qe=Rn((Dt,Un)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Un=="object"&&Un.exports?Un.exports=n(Pt(),zt(),qt()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],n):e.URI=n(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(Dt,function(e,n,t,o){"use strict";var i=o&&o.URI;function r(c,f){var h=arguments.length>=1,y=arguments.length>=2;if(!(this instanceof r))return h?y?new r(c,f):new r(c):new r;if(c===void 0){if(h)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?c=location.href+"":c=""}if(c===null&&h)throw new TypeError("null is not a valid argument for URI");return this.href(c),f!==void 0?this.absoluteTo(f):this}function a(c){return/^[0-9]+$/.test(c)}r.version="1.19.11";var u=r.prototype,d=Object.prototype.hasOwnProperty;function m(c){return c.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function l(c){return c===void 0?"Undefined":String(Object.prototype.toString.call(c)).slice(8,-1)}function w(c){return l(c)==="Array"}function E(c,f){var h={},y,O;if(l(f)==="RegExp")h=null;else if(w(f))for(y=0,O=f.length;y<O;y++)h[f[y]]=!0;else h[f]=!0;for(y=0,O=c.length;y<O;y++){var C=h&&h[c[y]]!==void 0||!h&&f.test(c[y]);C&&(c.splice(y,1),O--,y--)}return c}function T(c,f){var h,y;if(w(f)){for(h=0,y=f.length;h<y;h++)if(!T(c,f[h]))return!1;return!0}var O=l(f);for(h=0,y=c.length;h<y;h++)if(O==="RegExp"){if(typeof c[h]=="string"&&c[h].match(f))return!0}else if(c[h]===f)return!0;return!1}function M(c,f){if(!w(c)||!w(f)||c.length!==f.length)return!1;c.sort(),f.sort();for(var h=0,y=c.length;h<y;h++)if(c[h]!==f[h])return!1;return!0}function v(c){var f=/^\/+|\/+$/g;return c.replace(f,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(c){if(!(!c||!c.nodeName)){var f=c.nodeName.toLowerCase();if(!(f==="input"&&c.type!=="image"))return r.domAttributes[f]}};function I(c){return escape(c)}function N(c){return encodeURIComponent(c).replace(/[!'()*]/g,I).replace(/\*/g,"%2A")}r.encode=N,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=N,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(c,f){var h=r.encode(c+"");return f===void 0&&(f=r.escapeQuerySpace),f?h.replace(/%20/g,"+"):h},r.decodeQuery=function(c,f){c+="",f===void 0&&(f=r.escapeQuerySpace);try{return r.decode(f?c.replace(/\+/g,"%20"):c)}catch{return c}};var F={encode:"encode",decode:"decode"},k,x=function(c,f){return function(h){try{return r[f](h+"").replace(r.characters[c][f].expression,function(y){return r.characters[c][f].map[y]})}catch{return h}}};for(k in F)r[k+"PathSegment"]=x("pathname",F[k]),r[k+"UrnPathSegment"]=x("urnpath",F[k]);var Q=function(c,f,h){return function(y){var O;h?O=function(D){return r[f](r[h](D))}:O=r[f];for(var C=(y+"").split(c),b=0,z=C.length;b<z;b++)C[b]=O(C[b]);return C.join(c)}};r.decodePath=Q("/","decodePathSegment"),r.decodeUrnPath=Q(":","decodeUrnPathSegment"),r.recodePath=Q("/","encodePathSegment","decode"),r.recodeUrnPath=Q(":","encodeUrnPathSegment","decode"),r.encodeReserved=x("reserved","encode"),r.parse=function(c,f){var h;return f||(f={preventInvalidHostname:r.preventInvalidHostname}),c=c.replace(r.leading_whitespace_expression,""),c=c.replace(r.ascii_tab_whitespace,""),h=c.indexOf("#"),h>-1&&(f.fragment=c.substring(h+1)||null,c=c.substring(0,h)),h=c.indexOf("?"),h>-1&&(f.query=c.substring(h+1)||null,c=c.substring(0,h)),c=c.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),c=c.replace(/^[/\\]{2,}/i,"//"),c.substring(0,2)==="//"?(f.protocol=null,c=c.substring(2),c=r.parseAuthority(c,f)):(h=c.indexOf(":"),h>-1&&(f.protocol=c.substring(0,h)||null,f.protocol&&!f.protocol.match(r.protocol_expression)?f.protocol=void 0:c.substring(h+1,h+3).replace(/\\/g,"/")==="//"?(c=c.substring(h+3),c=r.parseAuthority(c,f)):(c=c.substring(h+1),f.urn=!0))),f.path=c,f},r.parseHost=function(c,f){c||(c=""),c=c.replace(/\\/g,"/");var h=c.indexOf("/"),y,O;if(h===-1&&(h=c.length),c.charAt(0)==="[")y=c.indexOf("]"),f.hostname=c.substring(1,y)||null,f.port=c.substring(y+2,h)||null,f.port==="/"&&(f.port=null);else{var C=c.indexOf(":"),b=c.indexOf("/"),z=c.indexOf(":",C+1);z!==-1&&(b===-1||z<b)?(f.hostname=c.substring(0,h)||null,f.port=null):(O=c.substring(0,h).split(":"),f.hostname=O[0]||null,f.port=O[1]||null)}return f.hostname&&c.substring(h).charAt(0)!=="/"&&(h++,c="/"+c),f.preventInvalidHostname&&r.ensureValidHostname(f.hostname,f.protocol),f.port&&r.ensureValidPort(f.port),c.substring(h)||"/"},r.parseAuthority=function(c,f){return c=r.parseUserinfo(c,f),r.parseHost(c,f)},r.parseUserinfo=function(c,f){var h=c,y=c.indexOf("\\");y!==-1&&(c=c.replace(/\\/g,"/"));var O=c.indexOf("/"),C=c.lastIndexOf("@",O>-1?O:c.length-1),b;return C>-1&&(O===-1||C<O)?(b=c.substring(0,C).split(":"),f.username=b[0]?r.decode(b[0]):null,b.shift(),f.password=b[0]?r.decode(b.join(":")):null,c=h.substring(C+1)):(f.username=null,f.password=null),c},r.parseQuery=function(c,f){if(!c)return{};if(c=c.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!c)return{};for(var h={},y=c.split("&"),O=y.length,C,b,z,D=0;D<O;D++)C=y[D].split("="),b=r.decodeQuery(C.shift(),f),z=C.length?r.decodeQuery(C.join("="),f):null,b!=="__proto__"&&(d.call(h,b)?((typeof h[b]=="string"||h[b]===null)&&(h[b]=[h[b]]),h[b].push(z)):h[b]=z);return h},r.build=function(c){var f="",h=!1;return c.protocol&&(f+=c.protocol+":"),!c.urn&&(f||c.hostname)&&(f+="//",h=!0),f+=r.buildAuthority(c)||"",typeof c.path=="string"&&(c.path.charAt(0)!=="/"&&h&&(f+="/"),f+=c.path),typeof c.query=="string"&&c.query&&(f+="?"+c.query),typeof c.fragment=="string"&&c.fragment&&(f+="#"+c.fragment),f},r.buildHost=function(c){var f="";if(c.hostname)r.ip6_expression.test(c.hostname)?f+="["+c.hostname+"]":f+=c.hostname;else return"";return c.port&&(f+=":"+c.port),f},r.buildAuthority=function(c){return r.buildUserinfo(c)+r.buildHost(c)},r.buildUserinfo=function(c){var f="";return c.username&&(f+=r.encode(c.username)),c.password&&(f+=":"+r.encode(c.password)),f&&(f+="@"),f},r.buildQuery=function(c,f,h){var y="",O,C,b,z;for(C in c)if(C!=="__proto__"&&d.call(c,C))if(w(c[C]))for(O={},b=0,z=c[C].length;b<z;b++)c[C][b]!==void 0&&O[c[C][b]+""]===void 0&&(y+="&"+r.buildQueryParameter(C,c[C][b],h),f!==!0&&(O[c[C][b]+""]=!0));else c[C]!==void 0&&(y+="&"+r.buildQueryParameter(C,c[C],h));return y.substring(1)},r.buildQueryParameter=function(c,f,h){return r.encodeQuery(c,h)+(f!==null?"="+r.encodeQuery(f,h):"")},r.addQuery=function(c,f,h){if(typeof f=="object")for(var y in f)d.call(f,y)&&r.addQuery(c,y,f[y]);else if(typeof f=="string"){if(c[f]===void 0){c[f]=h;return}else typeof c[f]=="string"&&(c[f]=[c[f]]);w(h)||(h=[h]),c[f]=(c[f]||[]).concat(h)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(c,f,h){if(typeof f=="object")for(var y in f)d.call(f,y)&&r.setQuery(c,y,f[y]);else if(typeof f=="string")c[f]=h===void 0?null:h;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(c,f,h){var y,O,C;if(w(f))for(y=0,O=f.length;y<O;y++)c[f[y]]=void 0;else if(l(f)==="RegExp")for(C in c)f.test(C)&&(c[C]=void 0);else if(typeof f=="object")for(C in f)d.call(f,C)&&r.removeQuery(c,C,f[C]);else if(typeof f=="string")h!==void 0?l(h)==="RegExp"?!w(c[f])&&h.test(c[f])?c[f]=void 0:c[f]=E(c[f],h):c[f]===String(h)&&(!w(h)||h.length===1)?c[f]=void 0:w(c[f])&&(c[f]=E(c[f],h)):c[f]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(c,f,h,y){switch(l(f)){case"String":break;case"RegExp":for(var O in c)if(d.call(c,O)&&f.test(O)&&(h===void 0||r.hasQuery(c,O,h)))return!0;return!1;case"Object":for(var C in f)if(d.call(f,C)&&!r.hasQuery(c,C,f[C]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(l(h)){case"Undefined":return f in c;case"Boolean":var b=!!(w(c[f])?c[f].length:c[f]);return h===b;case"Function":return!!h(c[f],f,c);case"Array":if(!w(c[f]))return!1;var z=y?T:M;return z(c[f],h);case"RegExp":return w(c[f])?y?T(c[f],h):!1:!!(c[f]&&c[f].match(h));case"Number":h=String(h);case"String":return w(c[f])?y?T(c[f],h):!1:c[f]===h;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var c=[],f=[],h=0,y=0;y<arguments.length;y++){var O=new r(arguments[y]);c.push(O);for(var C=O.segment(),b=0;b<C.length;b++)typeof C[b]=="string"&&f.push(C[b]),C[b]&&h++}if(!f.length||!h)return new r("");var z=new r("").segment(f);return(c[0].path()===""||c[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(c,f){var h=Math.min(c.length,f.length),y;for(y=0;y<h;y++)if(c.charAt(y)!==f.charAt(y)){y--;break}return y<1?c.charAt(0)===f.charAt(0)&&c.charAt(0)==="/"?"/":"":((c.charAt(y)!=="/"||f.charAt(y)!=="/")&&(y=c.substring(0,y).lastIndexOf("/")),c.substring(0,y+1))},r.withinString=function(c,f,h){h||(h={});var y=h.start||r.findUri.start,O=h.end||r.findUri.end,C=h.trim||r.findUri.trim,b=h.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(y.lastIndex=0;;){var D=y.exec(c);if(!D)break;var Y=D.index;if(h.ignoreHtml){var re=c.slice(Math.max(Y-3,0),Y);if(re&&z.test(re))continue}for(var se=Y+c.slice(Y).search(O),ee=c.slice(Y,se),fe=-1;;){var he=b.exec(ee);if(!he)break;var me=he.index+he[0].length;fe=Math.max(fe,me)}if(fe>-1?ee=ee.slice(0,fe)+ee.slice(fe).replace(C,""):ee=ee.replace(C,""),!(ee.length<=D[0].length)&&!(h.ignore&&h.ignore.test(ee))){se=Y+ee.length;var de=f(ee,Y,se,c);if(de===void 0){y.lastIndex=se;continue}de=String(de),c=c.slice(0,Y)+de+c.slice(se),y.lastIndex=Y+de.length}}return y.lastIndex=0,c},r.ensureValidHostname=function(c,f){var h=!!c,y=!!f,O=!1;if(y&&(O=T(r.hostProtocols,f)),O&&!h)throw new TypeError("Hostname cannot be empty, if protocol is "+f);if(c&&c.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(c).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(c){if(c){var f=Number(c);if(!(a(f)&&f>0&&f<65536))throw new TypeError('Port "'+c+'" is not a valid port')}},r.noConflict=function(c){if(c){var f={URI:this.noConflict()};return o.URITemplate&&typeof o.URITemplate.noConflict=="function"&&(f.URITemplate=o.URITemplate.noConflict()),o.IPv6&&typeof o.IPv6.noConflict=="function"&&(f.IPv6=o.IPv6.noConflict()),o.SecondLevelDomains&&typeof o.SecondLevelDomains.noConflict=="function"&&(f.SecondLevelDomains=o.SecondLevelDomains.noConflict()),f}else o.URI===this&&(o.URI=i);return this},u.build=function(c){return c===!0?this._deferred_build=!0:(c===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},u.clone=function(){return new r(this)},u.valueOf=u.toString=function(){return this.build(!1)._string};function W(c){return function(f,h){return f===void 0?this._parts[c]||"":(this._parts[c]=f||null,this.build(!h),this)}}function K(c,f){return function(h,y){return h===void 0?this._parts[c]||"":(h!==null&&(h=h+"",h.charAt(0)===f&&(h=h.substring(1))),this._parts[c]=h,this.build(!y),this)}}u.protocol=W("protocol"),u.username=W("username"),u.password=W("password"),u.hostname=W("hostname"),u.port=W("port"),u.query=K("query","?"),u.fragment=K("fragment","#"),u.search=function(c,f){var h=this.query(c,f);return typeof h=="string"&&h.length?"?"+h:h},u.hash=function(c,f){var h=this.fragment(c,f);return typeof h=="string"&&h.length?"#"+h:h},u.pathname=function(c,f){if(c===void 0||c===!0){var h=this._parts.path||(this._parts.hostname?"/":"");return c?(this._parts.urn?r.decodeUrnPath:r.decodePath)(h):h}else return this._parts.urn?this._parts.path=c?r.recodeUrnPath(c):"":this._parts.path=c?r.recodePath(c):"/",this.build(!f),this},u.path=u.pathname,u.href=function(c,f){var h;if(c===void 0)return this.toString();this._string="",this._parts=r._parts();var y=c instanceof r,O=typeof c=="object"&&(c.hostname||c.path||c.pathname);if(c.nodeName){var C=r.getDomAttribute(c);c=c[C]||"",O=!1}if(!y&&O&&c.pathname!==void 0&&(c=c.toString()),typeof c=="string"||c instanceof String)this._parts=r.parse(String(c),this._parts);else if(y||O){var b=y?c._parts:c;for(h in b)h!=="query"&&d.call(this._parts,h)&&(this._parts[h]=b[h]);b.query&&this.query(b.query,!1)}else throw new TypeError("invalid input");return this.build(!f),this},u.is=function(c){var f=!1,h=!1,y=!1,O=!1,C=!1,b=!1,z=!1,D=!this._parts.urn;switch(this._parts.hostname&&(D=!1,h=r.ip4_expression.test(this._parts.hostname),y=r.ip6_expression.test(this._parts.hostname),f=h||y,O=!f,C=O&&t&&t.has(this._parts.hostname),b=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),c.toLowerCase()){case"relative":return D;case"absolute":return!D;case"domain":case"name":return O;case"sld":return C;case"ip":return f;case"ip4":case"ipv4":case"inet4":return h;case"ip6":case"ipv6":case"inet6":return y;case"idn":return b;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var oe=u.protocol,X=u.port,te=u.hostname;u.protocol=function(c,f){if(c&&(c=c.replace(/:(\/\/)?$/,""),!c.match(r.protocol_expression)))throw new TypeError('Protocol "'+c+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return oe.call(this,c,f)},u.scheme=u.protocol,u.port=function(c,f){return this._parts.urn?c===void 0?"":this:(c!==void 0&&(c===0&&(c=null),c&&(c+="",c.charAt(0)===":"&&(c=c.substring(1)),r.ensureValidPort(c))),X.call(this,c,f))},u.hostname=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c!==void 0){var h={preventInvalidHostname:this._parts.preventInvalidHostname},y=r.parseHost(c,h);if(y!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');c=h.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(c,this._parts.protocol)}return te.call(this,c,f)},u.origin=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){var h=this.protocol(),y=this.authority();return y?(h?h+"://":"")+this.authority():""}else{var O=r(c);return this.protocol(O.protocol()).authority(O.authority()).build(!f),this}},u.host=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var h=r.parseHost(c,this._parts);if(h!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');return this.build(!f),this},u.authority=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var h=r.parseAuthority(c,this._parts);if(h!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');return this.build(!f),this},u.userinfo=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){var h=r.buildUserinfo(this._parts);return h&&h.substring(0,h.length-1)}else return c[c.length-1]!=="@"&&(c+="@"),r.parseUserinfo(c,this._parts),this.build(!f),this},u.resource=function(c,f){var h;return c===void 0?this.path()+this.search()+this.hash():(h=r.parse(c),this._parts.path=h.path,this._parts.query=h.query,this._parts.fragment=h.fragment,this.build(!f),this)},u.subdomain=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,h)||""}else{var y=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,y),C=new RegExp("^"+m(O));if(c&&c.charAt(c.length-1)!=="."&&(c+="."),c.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return c&&r.ensureValidHostname(c,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(C,c),this.build(!f),this}},u.domain=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c=="boolean"&&(f=c,c=void 0),c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.match(/\./g);if(h&&h.length<2)return this._parts.hostname;var y=this._parts.hostname.length-this.tld(f).length-1;return y=this._parts.hostname.lastIndexOf(".",y-1)+1,this._parts.hostname.substring(y)||""}else{if(!c)throw new TypeError("cannot set domain empty");if(c.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(c,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=c;else{var O=new RegExp(m(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,c)}return this.build(!f),this}},u.tld=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c=="boolean"&&(f=c,c=void 0),c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.lastIndexOf("."),y=this._parts.hostname.substring(h+1);return f!==!0&&t&&t.list[y.toLowerCase()]&&t.get(this._parts.hostname)||y}else{var O;if(c)if(c.match(/[^a-zA-Z0-9-]/))if(t&&t.is(c))O=new RegExp(m(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,c);else throw new TypeError('TLD "'+c+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(m(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,c)}else throw new TypeError("cannot set TLD empty");return this.build(!f),this}},u.directory=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0||c===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var h=this._parts.path.length-this.filename().length-1,y=this._parts.path.substring(0,h)||(this._parts.hostname?"/":"");return c?r.decodePath(y):y}else{var O=this._parts.path.length-this.filename().length,C=this._parts.path.substring(0,O),b=new RegExp("^"+m(C));return this.is("relative")||(c||(c="/"),c.charAt(0)!=="/"&&(c="/"+c)),c&&c.charAt(c.length-1)!=="/"&&(c+="/"),c=r.recodePath(c),this._parts.path=this._parts.path.replace(b,c),this.build(!f),this}},u.filename=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c!="string"){if(!this._parts.path||this._parts.path==="/")return"";var h=this._parts.path.lastIndexOf("/"),y=this._parts.path.substring(h+1);return c?r.decodePathSegment(y):y}else{var O=!1;c.charAt(0)==="/"&&(c=c.substring(1)),c.match(/\.?\//)&&(O=!0);var C=new RegExp(m(this.filename())+"$");return c=r.recodePath(c),this._parts.path=this._parts.path.replace(C,c),O?this.normalizePath(f):this.build(!f),this}},u.suffix=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0||c===!0){if(!this._parts.path||this._parts.path==="/")return"";var h=this.filename(),y=h.lastIndexOf("."),O,C;return y===-1?"":(O=h.substring(y+1),C=/^[a-z0-9%]+$/i.test(O)?O:"",c?r.decodePathSegment(C):C)}else{c.charAt(0)==="."&&(c=c.substring(1));var b=this.suffix(),z;if(b)c?z=new RegExp(m(b)+"$"):z=new RegExp(m("."+b)+"$");else{if(!c)return this;this._parts.path+="."+r.recodePath(c)}return z&&(c=r.recodePath(c),this._parts.path=this._parts.path.replace(z,c)),this.build(!f),this}},u.segment=function(c,f,h){var y=this._parts.urn?":":"/",O=this.path(),C=O.substring(0,1)==="/",b=O.split(y);if(c!==void 0&&typeof c!="number"&&(h=f,f=c,c=void 0),c!==void 0&&typeof c!="number")throw new Error('Bad segment "'+c+'", must be 0-based integer');if(C&&b.shift(),c<0&&(c=Math.max(b.length+c,0)),f===void 0)return c===void 0?b:b[c];if(c===null||b[c]===void 0)if(w(f)){b=[];for(var z=0,D=f.length;z<D;z++)!f[z].length&&(!b.length||!b[b.length-1].length)||(b.length&&!b[b.length-1].length&&b.pop(),b.push(v(f[z])))}else(f||typeof f=="string")&&(f=v(f),b[b.length-1]===""?b[b.length-1]=f:b.push(f));else f?b[c]=v(f):b.splice(c,1);return C&&b.unshift(""),this.path(b.join(y),h)},u.segmentCoded=function(c,f,h){var y,O,C;if(typeof c!="number"&&(h=f,f=c,c=void 0),f===void 0){if(y=this.segment(c,f,h),!w(y))y=y!==void 0?r.decode(y):void 0;else for(O=0,C=y.length;O<C;O++)y[O]=r.decode(y[O]);return y}if(!w(f))f=typeof f=="string"||f instanceof String?r.encode(f):f;else for(O=0,C=f.length;O<C;O++)f[O]=r.encode(f[O]);return this.segment(c,f,h)};var Z=u.query;return u.query=function(c,f){if(c===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof c=="function"){var h=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),y=c.call(this,h);return this._parts.query=r.buildQuery(y||h,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!f),this}else return c!==void 0&&typeof c!="string"?(this._parts.query=r.buildQuery(c,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!f),this):Z.call(this,c,f)},u.setQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof c=="string"||c instanceof String)y[c]=f!==void 0?f:null;else if(typeof c=="object")for(var O in c)d.call(c,O)&&(y[O]=c[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.addQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(y,c,f===void 0?null:f),this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.removeQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(y,c,f),this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.hasQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(y,c,f,h)},u.setSearch=u.setQuery,u.addSearch=u.addQuery,u.removeSearch=u.removeQuery,u.hasSearch=u.hasQuery,u.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},u.normalizeProtocol=function(c){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!c)),this},u.normalizeHostname=function(c){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&n&&(this._parts.hostname=n.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!c)),this},u.normalizePort=function(c){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!c)),this},u.normalizePath=function(c){var f=this._parts.path;if(!f)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!c),this;if(this._parts.path==="/")return this;f=r.recodePath(f);var h,y="",O,C;for(f.charAt(0)!=="/"&&(h=!0,f="/"+f),(f.slice(-3)==="/.."||f.slice(-2)==="/.")&&(f+="/"),f=f.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),h&&(y=f.substring(1).match(/^(\.\.\/)+/)||"",y&&(y=y[0]));O=f.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){f=f.substring(3);continue}C=f.substring(0,O).lastIndexOf("/"),C===-1&&(C=O),f=f.substring(0,C)+f.substring(O+3)}return h&&this.is("relative")&&(f=y+f.substring(1)),this._parts.path=f,this.build(!c),this},u.normalizePathname=u.normalizePath,u.normalizeQuery=function(c){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!c)),this},u.normalizeFragment=function(c){return this._parts.fragment||(this._parts.fragment=null,this.build(!c)),this},u.normalizeSearch=u.normalizeQuery,u.normalizeHash=u.normalizeFragment,u.iso8859=function(){var c=r.encode,f=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=c,r.decode=f}return this},u.unicode=function(){var c=r.encode,f=r.decode;r.encode=N,r.decode=unescape;try{this.normalize()}finally{r.encode=c,r.decode=f}return this},u.readable=function(){var c=this.clone();c.username("").password("").normalize();var f="";if(c._parts.protocol&&(f+=c._parts.protocol+"://"),c._parts.hostname&&(c.is("punycode")&&e?(f+=e.toUnicode(c._parts.hostname),c._parts.port&&(f+=":"+c._parts.port)):f+=c.host()),c._parts.hostname&&c._parts.path&&c._parts.path.charAt(0)!=="/"&&(f+="/"),f+=c.path(!0),c._parts.query){for(var h="",y=0,O=c._parts.query.split("&"),C=O.length;y<C;y++){var b=(O[y]||"").split("=");h+="&"+r.decodeQuery(b[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),b[1]!==void 0&&(h+="="+r.decodeQuery(b[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}f+="?"+h.substring(1)}return f+=r.decodeQuery(c.hash(),!0),f},u.absoluteTo=function(c){var f=this.clone(),h=["protocol","username","password","hostname","port"],y,O,C;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(c instanceof r||(c=new r(c)),f._parts.protocol||(f._parts.protocol=c._parts.protocol,this._parts.hostname))return f;for(O=0;C=h[O];O++)f._parts[C]=c._parts[C];return f._parts.path?(f._parts.path.substring(-2)===".."&&(f._parts.path+="/"),f.path().charAt(0)!=="/"&&(y=c.directory(),y=y||(c.path().indexOf("/")===0?"/":""),f._parts.path=(y?y+"/":"")+f._parts.path,f.normalizePath())):(f._parts.path=c._parts.path,f._parts.query||(f._parts.query=c._parts.query)),f.build(),f},u.relativeTo=function(c){var f=this.clone().normalize(),h,y,O,C,b;if(f._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(c=new r(c).normalize(),h=f._parts,y=c._parts,C=f.path(),b=c.path(),C.charAt(0)!=="/")throw new Error("URI is already relative");if(b.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(h.protocol===y.protocol&&(h.protocol=null),h.username!==y.username||h.password!==y.password||h.protocol!==null||h.username!==null||h.password!==null)return f.build();if(h.hostname===y.hostname&&h.port===y.port)h.hostname=null,h.port=null;else return f.build();if(C===b)return h.path="",f.build();if(O=r.commonPath(C,b),!O)return f.build();var z=y.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return h.path=z+h.path.substring(O.length)||"./",f.build()},u.equals=function(c){var f=this.clone(),h=new r(c),y={},O={},C={},b,z,D;if(f.normalize(),h.normalize(),f.toString()===h.toString())return!0;if(b=f.query(),z=h.query(),f.query(""),h.query(""),f.toString()!==h.toString()||b.length!==z.length)return!1;y=r.parseQuery(b,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(D in y)if(d.call(y,D)){if(w(y[D])){if(!M(y[D],O[D]))return!1}else if(y[D]!==O[D])return!1;C[D]=!0}for(D in O)if(d.call(O,D)&&!C[D])return!1;return!0},u.preventInvalidHostname=function(c){return this._parts.preventInvalidHostname=!!c,this},u.duplicateQueryParameters=function(c){return this._parts.duplicateQueryParameters=!!c,this},u.escapeQuerySpace=function(c){return this._parts.escapeQuerySpace=!!c,this},r})});function j(e,n,t,o){this.x=e??0,this.y=n??0,this.z=t??0,this.w=o??0}j.fromElements=function(e,n,t,o,i){return p(i)?(i.x=e,i.y=n,i.z=t,i.w=o,i):new j(e,n,t,o)};j.fromColor=function(e,n){return s.typeOf.object("color",e),p(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new j(e.red,e.green,e.blue,e.alpha)};j.clone=function(e,n){if(p(e))return p(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new j(e.x,e.y,e.z,e.w)};j.packedLength=4;j.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.x,n[t++]=e.y,n[t++]=e.z,n[t]=e.w,n};j.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new j),t.x=e[n++],t.y=e[n++],t.z=e[n++],t.w=e[n],t};j.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*4;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 4 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)j.pack(e[i],n,i*4);return n};j.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,4),e.length%4!==0)throw new A("array length must be a multiple of 4.");let t=e.length;p(n)?n.length=t/4:n=new Array(t/4);for(let o=0;o<t;o+=4){let i=o/4;n[i]=j.unpack(e,o,n[i])}return n};j.fromArray=j.unpack;j.maximumComponent=function(e){return s.typeOf.object("cartesian",e),Math.max(e.x,e.y,e.z,e.w)};j.minimumComponent=function(e){return s.typeOf.object("cartesian",e),Math.min(e.x,e.y,e.z,e.w)};j.minimumByComponent=function(e,n,t){return s.typeOf.object("first",e),s.typeOf.object("second",n),s.typeOf.object("result",t),t.x=Math.min(e.x,n.x),t.y=Math.min(e.y,n.y),t.z=Math.min(e.z,n.z),t.w=Math.min(e.w,n.w),t};j.maximumByComponent=function(e,n,t){return s.typeOf.object("first",e),s.typeOf.object("second",n),s.typeOf.object("result",t),t.x=Math.max(e.x,n.x),t.y=Math.max(e.y,n.y),t.z=Math.max(e.z,n.z),t.w=Math.max(e.w,n.w),t};j.clamp=function(e,n,t,o){s.typeOf.object("value",e),s.typeOf.object("min",n),s.typeOf.object("max",t),s.typeOf.object("result",o);let i=R.clamp(e.x,n.x,t.x),r=R.clamp(e.y,n.y,t.y),a=R.clamp(e.z,n.z,t.z),u=R.clamp(e.w,n.w,t.w);return o.x=i,o.y=r,o.z=a,o.w=u,o};j.magnitudeSquared=function(e){return s.typeOf.object("cartesian",e),e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};j.magnitude=function(e){return Math.sqrt(j.magnitudeSquared(e))};var En=new j;j.distance=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),j.subtract(e,n,En),j.magnitude(En)};j.distanceSquared=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),j.subtract(e,n,En),j.magnitudeSquared(En)};j.normalize=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=j.magnitude(e);if(n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,isNaN(n.x)||isNaN(n.y)||isNaN(n.z)||isNaN(n.w))throw new A("normalized result is not a number");return n};j.dot=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),e.x*n.x+e.y*n.y+e.z*n.z+e.w*n.w};j.multiplyComponents=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x*n.x,t.y=e.y*n.y,t.z=e.z*n.z,t.w=e.w*n.w,t};j.divideComponents=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x/n.x,t.y=e.y/n.y,t.z=e.z/n.z,t.w=e.w/n.w,t};j.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x+n.x,t.y=e.y+n.y,t.z=e.z+n.z,t.w=e.w+n.w,t};j.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x-n.x,t.y=e.y-n.y,t.z=e.z-n.z,t.w=e.w-n.w,t};j.multiplyByScalar=function(e,n,t){return s.typeOf.object("cartesian",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t.w=e.w*n,t};j.divideByScalar=function(e,n,t){return s.typeOf.object("cartesian",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};j.negate=function(e,n){return s.typeOf.object("cartesian",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=-e.w,n};j.abs=function(e,n){return s.typeOf.object("cartesian",e),s.typeOf.object("result",n),n.x=Math.abs(e.x),n.y=Math.abs(e.y),n.z=Math.abs(e.z),n.w=Math.abs(e.w),n};var Et=new j;j.lerp=function(e,n,t,o){return s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o),j.multiplyByScalar(n,t,Et),o=j.multiplyByScalar(e,1-t,o),j.add(Et,o,o)};var zo=new j;j.mostOrthogonalAxis=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=j.normalize(e,zo);return j.abs(t,t),t.x<=t.y?t.x<=t.z?t.x<=t.w?n=j.clone(j.UNIT_X,n):n=j.clone(j.UNIT_W,n):t.z<=t.w?n=j.clone(j.UNIT_Z,n):n=j.clone(j.UNIT_W,n):t.y<=t.z?t.y<=t.w?n=j.clone(j.UNIT_Y,n):n=j.clone(j.UNIT_W,n):t.z<=t.w?n=j.clone(j.UNIT_Z,n):n=j.clone(j.UNIT_W,n),n};j.equals=function(e,n){return e===n||p(e)&&p(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w};j.equalsArray=function(e,n,t){return e.x===n[t]&&e.y===n[t+1]&&e.z===n[t+2]&&e.w===n[t+3]};j.equalsEpsilon=function(e,n,t,o){return e===n||p(e)&&p(n)&&R.equalsEpsilon(e.x,n.x,t,o)&&R.equalsEpsilon(e.y,n.y,t,o)&&R.equalsEpsilon(e.z,n.z,t,o)&&R.equalsEpsilon(e.w,n.w,t,o)};j.ZERO=Object.freeze(new j(0,0,0,0));j.ONE=Object.freeze(new j(1,1,1,1));j.UNIT_X=Object.freeze(new j(1,0,0,0));j.UNIT_Y=Object.freeze(new j(0,1,0,0));j.UNIT_Z=Object.freeze(new j(0,0,1,0));j.UNIT_W=Object.freeze(new j(0,0,0,1));j.prototype.clone=function(e){return j.clone(this,e)};j.prototype.equals=function(e){return j.equals(this,e)};j.prototype.equalsEpsilon=function(e,n,t){return j.equalsEpsilon(this,e,n,t)};j.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Jn=new Float32Array(1),ye=new Uint8Array(Jn.buffer),Io=new Uint32Array([287454020]),qo=new Uint8Array(Io.buffer),Tt=qo[0]===68;j.packFloat=function(e,n){return s.typeOf.number("value",e),p(n)||(n=new j),Jn[0]=e,Tt?(n.x=ye[0],n.y=ye[1],n.z=ye[2],n.w=ye[3]):(n.x=ye[3],n.y=ye[2],n.z=ye[1],n.w=ye[0]),n};j.unpackFloat=function(e){return s.typeOf.object("packedFloat",e),Tt?(ye[0]=e.x,ye[1]=e.y,ye[2]=e.z,ye[3]=e.w):(ye[0]=e.w,ye[1]=e.z,ye[2]=e.y,ye[3]=e.x),Jn[0]};var qe=j;function _(e,n,t,o,i,r,a,u,d,m,l,w,E,T,M,v){this[0]=e??0,this[1]=i??0,this[2]=d??0,this[3]=E??0,this[4]=n??0,this[5]=r??0,this[6]=m??0,this[7]=T??0,this[8]=t??0,this[9]=a??0,this[10]=l??0,this[11]=M??0,this[12]=o??0,this[13]=u??0,this[14]=w??0,this[15]=v??0}_.packedLength=16;_.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n[t++]=e[3],n[t++]=e[4],n[t++]=e[5],n[t++]=e[6],n[t++]=e[7],n[t++]=e[8],n[t++]=e[9],n[t++]=e[10],n[t++]=e[11],n[t++]=e[12],n[t++]=e[13],n[t++]=e[14],n[t]=e[15],n};_.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new _),t[0]=e[n++],t[1]=e[n++],t[2]=e[n++],t[3]=e[n++],t[4]=e[n++],t[5]=e[n++],t[6]=e[n++],t[7]=e[n++],t[8]=e[n++],t[9]=e[n++],t[10]=e[n++],t[11]=e[n++],t[12]=e[n++],t[13]=e[n++],t[14]=e[n++],t[15]=e[n],t};_.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*16;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 16 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)_.pack(e[i],n,i*16);return n};_.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,16),e.length%16!==0)throw new A("array length must be a multiple of 16.");let t=e.length;p(n)?n.length=t/16:n=new Array(t/16);for(let o=0;o<t;o+=16){let i=o/16;n[i]=_.unpack(e,o,n[i])}return n};_.clone=function(e,n){if(p(e))return p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n):new _(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};_.fromArray=_.unpack;_.fromColumnMajorArray=function(e,n){return s.defined("values",e),_.clone(e,n)};_.fromRowMajorArray=function(e,n){return s.defined("values",e),p(n)?(n[0]=e[0],n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=e[1],n[5]=e[5],n[6]=e[9],n[7]=e[13],n[8]=e[2],n[9]=e[6],n[10]=e[10],n[11]=e[14],n[12]=e[3],n[13]=e[7],n[14]=e[11],n[15]=e[15],n):new _(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};_.fromRotationTranslation=function(e,n,t){return s.typeOf.object("rotation",e),n=n??g.ZERO,p(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=n.x,t[13]=n.y,t[14]=n.z,t[15]=1,t):new _(e[0],e[3],e[6],n.x,e[1],e[4],e[7],n.y,e[2],e[5],e[8],n.z,0,0,0,1)};_.fromTranslationQuaternionRotationScale=function(e,n,t,o){s.typeOf.object("translation",e),s.typeOf.object("rotation",n),s.typeOf.object("scale",t),p(o)||(o=new _);let i=t.x,r=t.y,a=t.z,u=n.x*n.x,d=n.x*n.y,m=n.x*n.z,l=n.x*n.w,w=n.y*n.y,E=n.y*n.z,T=n.y*n.w,M=n.z*n.z,v=n.z*n.w,I=n.w*n.w,N=u-w-M+I,F=2*(d-v),k=2*(m+T),x=2*(d+v),Q=-u+w-M+I,W=2*(E-l),K=2*(m-T),oe=2*(E+l),X=-u-w+M+I;return o[0]=N*i,o[1]=x*i,o[2]=K*i,o[3]=0,o[4]=F*r,o[5]=Q*r,o[6]=oe*r,o[7]=0,o[8]=k*a,o[9]=W*a,o[10]=X*a,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,o};_.fromTranslationRotationScale=function(e,n){return s.typeOf.object("translationRotationScale",e),_.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,n)};_.fromTranslation=function(e,n){return s.typeOf.object("translation",e),_.fromRotationTranslation(B.IDENTITY,e,n)};_.fromScale=function(e,n){return s.typeOf.object("scale",e),p(n)?(n[0]=e.x,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=e.y,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=e.z,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n):new _(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};_.fromUniformScale=function(e,n){return s.typeOf.number("scale",e),p(n)?(n[0]=e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=e,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=e,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n):new _(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};_.fromRotation=function(e,n){return s.typeOf.object("rotation",e),p(n)||(n=new _),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n};var Je=new g,Ge=new g,pn=new g;_.fromCamera=function(e,n){s.typeOf.object("camera",e);let t=e.position,o=e.direction,i=e.up;s.typeOf.object("camera.position",t),s.typeOf.object("camera.direction",o),s.typeOf.object("camera.up",i),g.normalize(o,Je),g.normalize(g.cross(Je,i,Ge),Ge),g.normalize(g.cross(Ge,Je,pn),pn);let r=Ge.x,a=Ge.y,u=Ge.z,d=Je.x,m=Je.y,l=Je.z,w=pn.x,E=pn.y,T=pn.z,M=t.x,v=t.y,I=t.z,N=r*-M+a*-v+u*-I,F=w*-M+E*-v+T*-I,k=d*M+m*v+l*I;return p(n)?(n[0]=r,n[1]=w,n[2]=-d,n[3]=0,n[4]=a,n[5]=E,n[6]=-m,n[7]=0,n[8]=u,n[9]=T,n[10]=-l,n[11]=0,n[12]=N,n[13]=F,n[14]=k,n[15]=1,n):new _(r,a,u,N,w,E,T,F,-d,-m,-l,k,0,0,0,1)};_.computePerspectiveFieldOfView=function(e,n,t,o,i){s.typeOf.number.greaterThan("fovY",e,0),s.typeOf.number.lessThan("fovY",e,Math.PI),s.typeOf.number.greaterThan("near",t,0),s.typeOf.number.greaterThan("far",o,0),s.typeOf.object("result",i);let a=1/Math.tan(e*.5),u=a/n,d=(o+t)/(t-o),m=2*o*t/(t-o);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=a,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=d,i[11]=-1,i[12]=0,i[13]=0,i[14]=m,i[15]=0,i};_.computeOrthographicOffCenter=function(e,n,t,o,i,r,a){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.number("far",r),s.typeOf.object("result",a);let u=1/(n-e),d=1/(o-t),m=1/(r-i),l=-(n+e)*u,w=-(o+t)*d,E=-(r+i)*m;return u*=2,d*=2,m*=-2,a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=l,a[13]=w,a[14]=E,a[15]=1,a};_.computePerspectiveOffCenter=function(e,n,t,o,i,r,a){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.number("far",r),s.typeOf.object("result",a);let u=2*i/(n-e),d=2*i/(o-t),m=(n+e)/(n-e),l=(o+t)/(o-t),w=-(r+i)/(r-i),E=-1,T=-2*r*i/(r-i);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=m,a[9]=l,a[10]=w,a[11]=E,a[12]=0,a[13]=0,a[14]=T,a[15]=0,a};_.computeInfinitePerspectiveOffCenter=function(e,n,t,o,i,r){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.object("result",r);let a=2*i/(n-e),u=2*i/(o-t),d=(n+e)/(n-e),m=(o+t)/(o-t),l=-1,w=-1,E=-2*i;return r[0]=a,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=u,r[6]=0,r[7]=0,r[8]=d,r[9]=m,r[10]=l,r[11]=w,r[12]=0,r[13]=0,r[14]=E,r[15]=0,r};_.computeViewportTransformation=function(e,n,t,o){p(o)||(o=new _),e=e??_e.EMPTY_OBJECT;let i=e.x??0,r=e.y??0,a=e.width??0,u=e.height??0;n=n??0,t=t??1;let d=a*.5,m=u*.5,l=(t-n)*.5,w=d,E=m,T=l,M=i+d,v=r+m,I=n+l,N=1;return o[0]=w,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=E,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=T,o[11]=0,o[12]=M,o[13]=v,o[14]=I,o[15]=N,o};_.computeView=function(e,n,t,o,i){return s.typeOf.object("position",e),s.typeOf.object("direction",n),s.typeOf.object("up",t),s.typeOf.object("right",o),s.typeOf.object("result",i),i[0]=o.x,i[1]=t.x,i[2]=-n.x,i[3]=0,i[4]=o.y,i[5]=t.y,i[6]=-n.y,i[7]=0,i[8]=o.z,i[9]=t.z,i[10]=-n.z,i[11]=0,i[12]=-g.dot(o,e),i[13]=-g.dot(t,e),i[14]=g.dot(n,e),i[15]=1,i};_.toArray=function(e,n){return s.typeOf.object("matrix",e),p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};_.getElementIndex=function(e,n){return s.typeOf.number.greaterThanOrEquals("row",n,0),s.typeOf.number.lessThanOrEquals("row",n,3),s.typeOf.number.greaterThanOrEquals("column",e,0),s.typeOf.number.lessThanOrEquals("column",e,3),e*4+n};_.getColumn=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("result",t);let o=n*4,i=e[o],r=e[o+1],a=e[o+2],u=e[o+3];return t.x=i,t.y=r,t.z=a,t.w=u,t};_.setColumn=function(e,n,t,o){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=_.clone(e,o);let i=n*4;return o[i]=t.x,o[i+1]=t.y,o[i+2]=t.z,o[i+3]=t.w,o};_.getRow=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("result",t);let o=e[n],i=e[n+4],r=e[n+8],a=e[n+12];return t.x=o,t.y=i,t.z=r,t.w=a,t};_.setRow=function(e,n,t,o){return s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=_.clone(e,o),o[n]=t.x,o[n+4]=t.y,o[n+8]=t.z,o[n+12]=t.w,o};_.setTranslation=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.object("translation",n),s.typeOf.object("result",t),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]=n.x,t[13]=n.y,t[14]=n.z,t[15]=e[15],t};var Do=new g;_.setScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=_.getScale(e,Do),i=n.x/o.x,r=n.y/o.y,a=n.z/o.z;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3],t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7],t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var No=new g;_.setUniformScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t);let o=_.getScale(e,No),i=n/o.x,r=n/o.y,a=n/o.z;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3],t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7],t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var Gn=new g;_.getScale=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=g.magnitude(g.fromElements(e[0],e[1],e[2],Gn)),n.y=g.magnitude(g.fromElements(e[4],e[5],e[6],Gn)),n.z=g.magnitude(g.fromElements(e[8],e[9],e[10],Gn)),n};var Ct=new g;_.getMaximumScale=function(e){return _.getScale(e,Ct),g.maximumComponent(Ct)};var ko=new g;_.setRotation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("result",t);let o=_.getScale(e,ko);return t[0]=n[0]*o.x,t[1]=n[1]*o.x,t[2]=n[2]*o.x,t[3]=e[3],t[4]=n[3]*o.y,t[5]=n[4]*o.y,t[6]=n[5]*o.y,t[7]=e[7],t[8]=n[6]*o.z,t[9]=n[7]*o.z,t[10]=n[8]*o.z,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var Fo=new g;_.getRotation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=_.getScale(e,Fo);return n[0]=e[0]/t.x,n[1]=e[1]/t.x,n[2]=e[2]/t.x,n[3]=e[4]/t.y,n[4]=e[5]/t.y,n[5]=e[6]/t.y,n[6]=e[8]/t.z,n[7]=e[9]/t.z,n[8]=e[10]/t.z,n};_.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[3],u=e[4],d=e[5],m=e[6],l=e[7],w=e[8],E=e[9],T=e[10],M=e[11],v=e[12],I=e[13],N=e[14],F=e[15],k=n[0],x=n[1],Q=n[2],W=n[3],K=n[4],oe=n[5],X=n[6],te=n[7],Z=n[8],c=n[9],f=n[10],h=n[11],y=n[12],O=n[13],C=n[14],b=n[15],z=o*k+u*x+w*Q+v*W,D=i*k+d*x+E*Q+I*W,Y=r*k+m*x+T*Q+N*W,re=a*k+l*x+M*Q+F*W,se=o*K+u*oe+w*X+v*te,ee=i*K+d*oe+E*X+I*te,fe=r*K+m*oe+T*X+N*te,he=a*K+l*oe+M*X+F*te,me=o*Z+u*c+w*f+v*h,de=i*Z+d*c+E*f+I*h,pe=r*Z+m*c+T*f+N*h,V=a*Z+l*c+M*f+F*h,ge=o*y+u*O+w*C+v*b,Te=i*y+d*O+E*C+I*b,je=r*y+m*O+T*C+N*b,fn=a*y+l*O+M*C+F*b;return t[0]=z,t[1]=D,t[2]=Y,t[3]=re,t[4]=se,t[5]=ee,t[6]=fe,t[7]=he,t[8]=me,t[9]=de,t[10]=pe,t[11]=V,t[12]=ge,t[13]=Te,t[14]=je,t[15]=fn,t};_.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),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};_.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),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};_.multiplyTransformation=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[4],u=e[5],d=e[6],m=e[8],l=e[9],w=e[10],E=e[12],T=e[13],M=e[14],v=n[0],I=n[1],N=n[2],F=n[4],k=n[5],x=n[6],Q=n[8],W=n[9],K=n[10],oe=n[12],X=n[13],te=n[14],Z=o*v+a*I+m*N,c=i*v+u*I+l*N,f=r*v+d*I+w*N,h=o*F+a*k+m*x,y=i*F+u*k+l*x,O=r*F+d*k+w*x,C=o*Q+a*W+m*K,b=i*Q+u*W+l*K,z=r*Q+d*W+w*K,D=o*oe+a*X+m*te+E,Y=i*oe+u*X+l*te+T,re=r*oe+d*X+w*te+M;return t[0]=Z,t[1]=c,t[2]=f,t[3]=0,t[4]=h,t[5]=y,t[6]=O,t[7]=0,t[8]=C,t[9]=b,t[10]=z,t[11]=0,t[12]=D,t[13]=Y,t[14]=re,t[15]=1,t};_.multiplyByMatrix3=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("rotation",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[4],u=e[5],d=e[6],m=e[8],l=e[9],w=e[10],E=n[0],T=n[1],M=n[2],v=n[3],I=n[4],N=n[5],F=n[6],k=n[7],x=n[8],Q=o*E+a*T+m*M,W=i*E+u*T+l*M,K=r*E+d*T+w*M,oe=o*v+a*I+m*N,X=i*v+u*I+l*N,te=r*v+d*I+w*N,Z=o*F+a*k+m*x,c=i*F+u*k+l*x,f=r*F+d*k+w*x;return t[0]=Q,t[1]=W,t[2]=K,t[3]=0,t[4]=oe,t[5]=X,t[6]=te,t[7]=0,t[8]=Z,t[9]=c,t[10]=f,t[11]=0,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};_.multiplyByTranslation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("translation",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=o*e[0]+i*e[4]+r*e[8]+e[12],u=o*e[1]+i*e[5]+r*e[9]+e[13],d=o*e[2]+i*e[6]+r*e[10]+e[14];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]=a,t[13]=u,t[14]=d,t[15]=e[15],t};_.multiplyByScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z;return o===1&&i===1&&r===1?_.clone(e,t):(t[0]=o*e[0],t[1]=o*e[1],t[2]=o*e[2],t[3]=e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=i*e[6],t[7]=e[7],t[8]=r*e[8],t[9]=r*e[9],t[10]=r*e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t)};_.multiplyByUniformScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3],t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7],t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};_.multiplyByVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=n.w,u=e[0]*o+e[4]*i+e[8]*r+e[12]*a,d=e[1]*o+e[5]*i+e[9]*r+e[13]*a,m=e[2]*o+e[6]*i+e[10]*r+e[14]*a,l=e[3]*o+e[7]*i+e[11]*r+e[15]*a;return t.x=u,t.y=d,t.z=m,t.w=l,t};_.multiplyByPointAsVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=e[0]*o+e[4]*i+e[8]*r,u=e[1]*o+e[5]*i+e[9]*r,d=e[2]*o+e[6]*i+e[10]*r;return t.x=a,t.y=u,t.z=d,t};_.multiplyByPoint=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=e[0]*o+e[4]*i+e[8]*r+e[12],u=e[1]*o+e[5]*i+e[9]*r+e[13],d=e[2]*o+e[6]*i+e[10]*r+e[14];return t.x=a,t.y=u,t.z=d,t};_.multiplyByScalar=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),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};_.negate=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n[3]=-e[3],n[4]=-e[4],n[5]=-e[5],n[6]=-e[6],n[7]=-e[7],n[8]=-e[8],n[9]=-e[9],n[10]=-e[10],n[11]=-e[11],n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=-e[15],n};_.transpose=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[1],o=e[2],i=e[3],r=e[6],a=e[7],u=e[11];return n[0]=e[0],n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=t,n[5]=e[5],n[6]=e[9],n[7]=e[13],n[8]=o,n[9]=r,n[10]=e[10],n[11]=e[14],n[12]=i,n[13]=a,n[14]=u,n[15]=e[15],n};_.abs=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=Math.abs(e[0]),n[1]=Math.abs(e[1]),n[2]=Math.abs(e[2]),n[3]=Math.abs(e[3]),n[4]=Math.abs(e[4]),n[5]=Math.abs(e[5]),n[6]=Math.abs(e[6]),n[7]=Math.abs(e[7]),n[8]=Math.abs(e[8]),n[9]=Math.abs(e[9]),n[10]=Math.abs(e[10]),n[11]=Math.abs(e[11]),n[12]=Math.abs(e[12]),n[13]=Math.abs(e[13]),n[14]=Math.abs(e[14]),n[15]=Math.abs(e[15]),n};_.equals=function(e,n){return e===n||p(e)&&p(n)&&e[12]===n[12]&&e[13]===n[13]&&e[14]===n[14]&&e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]&&e[4]===n[4]&&e[5]===n[5]&&e[6]===n[6]&&e[8]===n[8]&&e[9]===n[9]&&e[10]===n[10]&&e[3]===n[3]&&e[7]===n[7]&&e[11]===n[11]&&e[15]===n[15]};_.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e[0]-n[0])<=t&&Math.abs(e[1]-n[1])<=t&&Math.abs(e[2]-n[2])<=t&&Math.abs(e[3]-n[3])<=t&&Math.abs(e[4]-n[4])<=t&&Math.abs(e[5]-n[5])<=t&&Math.abs(e[6]-n[6])<=t&&Math.abs(e[7]-n[7])<=t&&Math.abs(e[8]-n[8])<=t&&Math.abs(e[9]-n[9])<=t&&Math.abs(e[10]-n[10])<=t&&Math.abs(e[11]-n[11])<=t&&Math.abs(e[12]-n[12])<=t&&Math.abs(e[13]-n[13])<=t&&Math.abs(e[14]-n[14])<=t&&Math.abs(e[15]-n[15])<=t};_.getTranslation=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=e[12],n.y=e[13],n.z=e[14],n};_.getMatrix3=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[4],n[4]=e[5],n[5]=e[6],n[6]=e[8],n[7]=e[9],n[8]=e[10],n};var Lo=new B,xo=new B,Bo=new qe,Qo=new qe(0,0,0,1);_.inverse=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[4],i=e[8],r=e[12],a=e[1],u=e[5],d=e[9],m=e[13],l=e[2],w=e[6],E=e[10],T=e[14],M=e[3],v=e[7],I=e[11],N=e[15],F=E*N,k=T*I,x=w*N,Q=T*v,W=w*I,K=E*v,oe=l*N,X=T*M,te=l*I,Z=E*M,c=l*v,f=w*M,h=F*u+Q*d+W*m-(k*u+x*d+K*m),y=k*a+oe*d+Z*m-(F*a+X*d+te*m),O=x*a+X*u+c*m-(Q*a+oe*u+f*m),C=K*a+te*u+f*d-(W*a+Z*u+c*d),b=k*o+x*i+K*r-(F*o+Q*i+W*r),z=F*t+X*i+te*r-(k*t+oe*i+Z*r),D=Q*t+oe*o+f*r-(x*t+X*o+c*r),Y=W*t+Z*o+c*i-(K*t+te*o+f*i);F=i*m,k=r*d,x=o*m,Q=r*u,W=o*d,K=i*u,oe=t*m,X=r*a,te=t*d,Z=i*a,c=t*u,f=o*a;let re=F*v+Q*I+W*N-(k*v+x*I+K*N),se=k*M+oe*I+Z*N-(F*M+X*I+te*N),ee=x*M+X*v+c*N-(Q*M+oe*v+f*N),fe=K*M+te*v+f*I-(W*M+Z*v+c*I),he=x*E+K*T+k*w-(W*T+F*w+Q*E),me=te*T+F*l+X*E-(oe*E+Z*T+k*l),de=oe*w+f*T+Q*l-(c*T+x*l+X*w),pe=c*E+W*l+Z*w-(te*w+f*E+K*l),V=t*h+o*y+i*O+r*C;if(Math.abs(V)<R.EPSILON21){if(B.equalsEpsilon(_.getMatrix3(e,Lo),xo,R.EPSILON7)&&qe.equals(_.getRow(e,3,Bo),Qo))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;throw new Se("matrix is not invertible because its determinate is zero.")}return V=1/V,n[0]=h*V,n[1]=y*V,n[2]=O*V,n[3]=C*V,n[4]=b*V,n[5]=z*V,n[6]=D*V,n[7]=Y*V,n[8]=re*V,n[9]=se*V,n[10]=ee*V,n[11]=fe*V,n[12]=he*V,n[13]=me*V,n[14]=de*V,n[15]=pe*V,n};_.inverseTransformation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[1],i=e[2],r=e[4],a=e[5],u=e[6],d=e[8],m=e[9],l=e[10],w=e[12],E=e[13],T=e[14],M=-t*w-o*E-i*T,v=-r*w-a*E-u*T,I=-d*w-m*E-l*T;return n[0]=t,n[1]=r,n[2]=d,n[3]=0,n[4]=o,n[5]=a,n[6]=m,n[7]=0,n[8]=i,n[9]=u,n[10]=l,n[11]=0,n[12]=M,n[13]=v,n[14]=I,n[15]=1,n};var Wo=new _;_.inverseTranspose=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),_.inverse(_.transpose(e,Wo),n)};_.IDENTITY=Object.freeze(new _(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));_.ZERO=Object.freeze(new _(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));_.COLUMN0ROW0=0;_.COLUMN0ROW1=1;_.COLUMN0ROW2=2;_.COLUMN0ROW3=3;_.COLUMN1ROW0=4;_.COLUMN1ROW1=5;_.COLUMN1ROW2=6;_.COLUMN1ROW3=7;_.COLUMN2ROW0=8;_.COLUMN2ROW1=9;_.COLUMN2ROW2=10;_.COLUMN2ROW3=11;_.COLUMN3ROW0=12;_.COLUMN3ROW1=13;_.COLUMN3ROW2=14;_.COLUMN3ROW3=15;Object.defineProperties(_.prototype,{length:{get:function(){return _.packedLength}}});_.prototype.clone=function(e){return _.clone(this,e)};_.prototype.equals=function(e){return _.equals(this,e)};_.equalsArray=function(e,n,t){return e[0]===n[t]&&e[1]===n[t+1]&&e[2]===n[t+2]&&e[3]===n[t+3]&&e[4]===n[t+4]&&e[5]===n[t+5]&&e[6]===n[t+6]&&e[7]===n[t+7]&&e[8]===n[t+8]&&e[9]===n[t+9]&&e[10]===n[t+10]&&e[11]===n[t+11]&&e[12]===n[t+12]&&e[13]===n[t+13]&&e[14]===n[t+14]&&e[15]===n[t+15]};_.prototype.equalsEpsilon=function(e,n){return _.equalsEpsilon(this,e,n)};_.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var J=_;function vt(e,n,t){t=t??!1;let o={},i=p(e),r=p(n),a,u,d;if(i)for(a in e)e.hasOwnProperty(a)&&(u=e[a],r&&t&&typeof u=="object"&&n.hasOwnProperty(a)?(d=n[a],typeof d=="object"?o[a]=vt(u,d,t):o[a]=u):o[a]=u);if(r)for(a in n)n.hasOwnProperty(a)&&!o.hasOwnProperty(a)&&(d=n[a],o[a]=d);return o}var De=vt;function Ho(e,n,t){s.defined("array",e),s.defined("itemToFind",n),s.defined("comparator",t);let o=0,i=e.length-1,r,a;for(;o<=i;){if(r=~~((o+i)/2),a=t(e[r],n),a<0){o=r+1;continue}if(a>0){i=r-1;continue}return r}return~(i+1)}var Be=Ho;function $o(e,n,t,o,i){this.xPoleWander=e,this.yPoleWander=n,this.xPoleOffset=t,this.yPoleOffset=o,this.ut1MinusUtc=i}var hn=$o;function Yo(e){if(e===null||isNaN(e))throw new A("year is required and must be a number.");return e%4===0&&e%100!==0||e%400===0}var dn=Yo;var At=[31,28,31,30,31,30,31,31,30,31,30,31];function Vo(e,n,t,o,i,r,a,u){e=e??1,n=n??1,t=t??1,o=o??0,i=i??0,r=r??0,a=a??0,u=u??!1,v(),I(),this.year=e,this.month=n,this.day=t,this.hour=o,this.minute=i,this.second=r,this.millisecond=a,this.isLeapSecond=u;function v(){s.typeOf.number.greaterThanOrEquals("Year",e,1),s.typeOf.number.lessThanOrEquals("Year",e,9999),s.typeOf.number.greaterThanOrEquals("Month",n,1),s.typeOf.number.lessThanOrEquals("Month",n,12),s.typeOf.number.greaterThanOrEquals("Day",t,1),s.typeOf.number.lessThanOrEquals("Day",t,31),s.typeOf.number.greaterThanOrEquals("Hour",o,0),s.typeOf.number.lessThanOrEquals("Hour",o,23),s.typeOf.number.greaterThanOrEquals("Minute",i,0),s.typeOf.number.lessThanOrEquals("Minute",i,59),s.typeOf.bool("IsLeapSecond",u),s.typeOf.number.greaterThanOrEquals("Second",r,0),s.typeOf.number.lessThanOrEquals("Second",r,u?60:59),s.typeOf.number.greaterThanOrEquals("Millisecond",a,0),s.typeOf.number.lessThan("Millisecond",a,1e3)}function I(){let N=n===2&&dn(e)?At[n-1]+1:At[n-1];if(t>N)throw new A("Month and Day represents invalid date")}}var Tn=Vo;function Xo(e,n){this.julianDate=e,this.offset=n}var ne=Xo;var Zo={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ie=Object.freeze(Zo);var Jo={UTC:0,TAI:1},H=Object.freeze(Jo);var Mt=new Tn,Cn=[31,28,31,30,31,30,31,31,30,31,30,31],vn=29;function Kn(e,n){return U.compare(e.julianDate,n.julianDate)}var Ke=new ne;function jn(e){Ke.julianDate=e;let n=U.leapSeconds,t=Be(n,Ke,Kn);t<0&&(t=~t),t>=n.length&&(t=n.length-1);let o=n[t].offset;t>0&&U.secondsDifference(n[t].julianDate,e)>o&&(t--,o=n[t].offset),U.addSeconds(e,o,e)}function jt(e,n){Ke.julianDate=e;let t=U.leapSeconds,o=Be(t,Ke,Kn);if(o<0&&(o=~o),o===0)return U.addSeconds(e,-t[0].offset,n);if(o>=t.length)return U.addSeconds(e,-t[o-1].offset,n);let i=U.secondsDifference(t[o].julianDate,e);if(i===0)return U.addSeconds(e,-t[o].offset,n);if(!(i<=1))return U.addSeconds(e,-t[--o].offset,n)}function Ne(e,n,t){let o=n/ie.SECONDS_PER_DAY|0;return e+=o,n-=ie.SECONDS_PER_DAY*o,n<0&&(e--,n+=ie.SECONDS_PER_DAY),t.dayNumber=e,t.secondsOfDay=n,t}function et(e,n,t,o,i,r,a){let u=(n-14)/12|0,d=e+4800+u,m=(1461*d/4|0)+(367*(n-2-12*u)/12|0)-(3*((d+100)/100|0)/4|0)+t-32075;o=o-12,o<0&&(o+=24);let l=r+(o*ie.SECONDS_PER_HOUR+i*ie.SECONDS_PER_MINUTE+a*ie.SECONDS_PER_MILLISECOND);return l>=43200&&(m-=1),[m,l]}var Go=/^(\d{4})$/,Ko=/^(\d{4})-(\d{2})$/,er=/^(\d{4})-?(\d{3})$/,nr=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,tr=/^(\d{4})-?(\d{2})-?(\d{2})$/,nt=/([Z+\-])?(\d{2})?:?(\d{2})?$/,or=/^(\d{2})(\.\d+)?/.source+nt.source,rr=/^(\d{2}):?(\d{2})(\.\d+)?/.source+nt.source,ir=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+nt.source,Re="Invalid ISO 8601 date.";function U(e,n,t){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,n=n??0,t=t??H.UTC;let o=e|0;n=n+(e-o)*ie.SECONDS_PER_DAY,Ne(o,n,this),t===H.UTC&&jn(this)}U.fromGregorianDate=function(e,n){if(!(e instanceof Tn))throw new A("date must be a valid GregorianDate.");let t=et(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return p(n)?(Ne(t[0],t[1],n),jn(n),n):new U(t[0],t[1],H.UTC)};U.fromDate=function(e,n){if(!(e instanceof Date)||isNaN(e.getTime()))throw new A("date must be a valid JavaScript Date.");let t=et(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return p(n)?(Ne(t[0],t[1],n),jn(n),n):new U(t[0],t[1],H.UTC)};U.fromIso8601=function(e,n){if(typeof e!="string")throw new A(Re);e=e.replace(",",".");let t=e.split("T"),o,i=1,r=1,a=0,u=0,d=0,m=0,l=t[0],w=t[1],E,T;if(!p(l))throw new A(Re);let M;if(t=l.match(tr),t!==null){if(M=l.split("-").length-1,M>0&&M!==2)throw new A(Re);o=+t[1],i=+t[2],r=+t[3]}else if(t=l.match(Ko),t!==null)o=+t[1],i=+t[2];else if(t=l.match(Go),t!==null)o=+t[1];else{let F;if(t=l.match(er),t!==null){if(o=+t[1],F=+t[2],T=dn(o),F<1||T&&F>366||!T&&F>365)throw new A(Re)}else if(t=l.match(nr),t!==null){o=+t[1];let k=+t[2],x=+t[3]||0;if(M=l.split("-").length-1,M>0&&(!p(t[3])&&M!==1||p(t[3])&&M!==2))throw new A(Re);let Q=new Date(Date.UTC(o,0,4));F=k*7+x-Q.getUTCDay()-3}else throw new A(Re);E=new Date(Date.UTC(o,0,1)),E.setUTCDate(F),i=E.getUTCMonth()+1,r=E.getUTCDate()}if(T=dn(o),i<1||i>12||r<1||(i!==2||!T)&&r>Cn[i-1]||T&&i===2&&r>vn)throw new A(Re);let v;if(p(w)){if(t=w.match(ir),t!==null){if(M=w.split(":").length-1,M>0&&M!==2&&M!==3)throw new A(Re);a=+t[1],u=+t[2],d=+t[3],m=+(t[4]||0)*1e3,v=5}else if(t=w.match(rr),t!==null){if(M=w.split(":").length-1,M>2)throw new A(Re);a=+t[1],u=+t[2],d=+(t[3]||0)*60,v=4}else if(t=w.match(or),t!==null)a=+t[1],u=+(t[2]||0)*60,v=3;else throw new A(Re);if(u>=60||d>=61||a>24||a===24&&(u>0||d>0||m>0))throw new A(Re);let F=t[v],k=+t[v+1],x=+(t[v+2]||0);switch(F){case"+":a=a-k,u=u-x;break;case"-":a=a+k,u=u+x;break;case"Z":break;default:u=u+new Date(Date.UTC(o,i-1,r,a,u)).getTimezoneOffset();break}}let I=d===60;for(I&&d--;u>=60;)u-=60,a++;for(;a>=24;)a-=24,r++;for(E=T&&i===2?vn:Cn[i-1];r>E;)r-=E,i++,i>12&&(i-=12,o++),E=T&&i===2?vn:Cn[i-1];for(;u<0;)u+=60,a--;for(;a<0;)a+=24,r--;for(;r<1;)i--,i<1&&(i+=12,o--),E=T&&i===2?vn:Cn[i-1],r+=E;let N=et(o,i,r,a,u,d,m);return p(n)?(Ne(N[0],N[1],n),jn(n)):n=new U(N[0],N[1],H.UTC),I&&U.addSeconds(n,1,n),n};U.now=function(e){return U.fromDate(new Date,e)};var An=new U(0,0,H.TAI);U.toGregorianDate=function(e,n){if(!p(e))throw new A("julianDate is required.");let t=!1,o=jt(e,An);p(o)||(U.addSeconds(e,-1,An),o=jt(An,An),t=!0);let i=o.dayNumber,r=o.secondsOfDay;r>=43200&&(i+=1);let a=i+68569|0,u=4*a/146097|0;a=a-((146097*u+3)/4|0)|0;let d=4e3*(a+1)/1461001|0;a=a-(1461*d/4|0)+31|0;let m=80*a/2447|0,l=a-(2447*m/80|0)|0;a=m/11|0;let w=m+2-12*a|0,E=100*(u-49)+d+a|0,T=r/ie.SECONDS_PER_HOUR|0,M=r-T*ie.SECONDS_PER_HOUR,v=M/ie.SECONDS_PER_MINUTE|0;M=M-v*ie.SECONDS_PER_MINUTE;let I=M|0,N=(M-I)/ie.SECONDS_PER_MILLISECOND;return T+=12,T>23&&(T-=24),t&&(I+=1),p(n)?(n.year=E,n.month=w,n.day=l,n.hour=T,n.minute=v,n.second=I,n.millisecond=N,n.isLeapSecond=t,n):new Tn(E,w,l,T,v,I,N,t)};U.toDate=function(e){if(!p(e))throw new A("julianDate is required.");let n=U.toGregorianDate(e,Mt),t=n.second;return n.isLeapSecond&&(t-=1),new Date(Date.UTC(n.year,n.month-1,n.day,n.hour,n.minute,t,n.millisecond))};U.toIso8601=function(e,n){if(!p(e))throw new A("julianDate is required.");let t=U.toGregorianDate(e,Mt),o=t.year,i=t.month,r=t.day,a=t.hour,u=t.minute,d=t.second,m=t.millisecond;o===1e4&&i===1&&r===1&&a===0&&u===0&&d===0&&m===0&&(o=9999,i=12,r=31,a=24);let l;if(!p(n)&&m!==0){let w=m*.01;return l=w<1e-6?w.toFixed(20).replace(".","").replace(/0+$/,""):w.toString().replace(".",""),`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}.${l}Z`}return!p(n)||n===0?`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}Z`:(l=(m*.01).toFixed(n).replace(".","").slice(0,n),`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}.${l}Z`)};U.clone=function(e,n){if(p(e))return p(n)?(n.dayNumber=e.dayNumber,n.secondsOfDay=e.secondsOfDay,n):new U(e.dayNumber,e.secondsOfDay,H.TAI)};U.compare=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");let t=e.dayNumber-n.dayNumber;return t!==0?t:e.secondsOfDay-n.secondsOfDay};U.equals=function(e,n){return e===n||p(e)&&p(n)&&e.dayNumber===n.dayNumber&&e.secondsOfDay===n.secondsOfDay};U.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(U.secondsDifference(e,n))<=t};U.totalDays=function(e){if(!p(e))throw new A("julianDate is required.");return e.dayNumber+e.secondsOfDay/ie.SECONDS_PER_DAY};U.secondsDifference=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");return(e.dayNumber-n.dayNumber)*ie.SECONDS_PER_DAY+(e.secondsOfDay-n.secondsOfDay)};U.daysDifference=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");let t=e.dayNumber-n.dayNumber,o=(e.secondsOfDay-n.secondsOfDay)/ie.SECONDS_PER_DAY;return t+o};U.computeTaiMinusUtc=function(e){Ke.julianDate=e;let n=U.leapSeconds,t=Be(n,Ke,Kn);return t<0&&(t=~t,--t,t<0&&(t=0)),n[t].offset};U.addSeconds=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("seconds is required.");if(!p(t))throw new A("result is required.");return Ne(e.dayNumber,e.secondsOfDay+n,t)};U.addMinutes=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("minutes is required.");if(!p(t))throw new A("result is required.");let o=e.secondsOfDay+n*ie.SECONDS_PER_MINUTE;return Ne(e.dayNumber,o,t)};U.addHours=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("hours is required.");if(!p(t))throw new A("result is required.");let o=e.secondsOfDay+n*ie.SECONDS_PER_HOUR;return Ne(e.dayNumber,o,t)};U.addDays=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("days is required.");if(!p(t))throw new A("result is required.");let o=e.dayNumber+n;return Ne(o,e.secondsOfDay,t)};U.lessThan=function(e,n){return U.compare(e,n)<0};U.lessThanOrEquals=function(e,n){return U.compare(e,n)<=0};U.greaterThan=function(e,n){return U.compare(e,n)>0};U.greaterThanOrEquals=function(e,n){return U.compare(e,n)>=0};U.prototype.clone=function(e){return U.clone(this,e)};U.prototype.equals=function(e){return U.equals(this,e)};U.prototype.equalsEpsilon=function(e,n){return U.equalsEpsilon(this,e,n)};U.prototype.toString=function(){return U.toIso8601(this)};U.leapSeconds=[new ne(new U(2441317,43210,H.TAI),10),new ne(new U(2441499,43211,H.TAI),11),new ne(new U(2441683,43212,H.TAI),12),new ne(new U(2442048,43213,H.TAI),13),new ne(new U(2442413,43214,H.TAI),14),new ne(new U(2442778,43215,H.TAI),15),new ne(new U(2443144,43216,H.TAI),16),new ne(new U(2443509,43217,H.TAI),17),new ne(new U(2443874,43218,H.TAI),18),new ne(new U(2444239,43219,H.TAI),19),new ne(new U(2444786,43220,H.TAI),20),new ne(new U(2445151,43221,H.TAI),21),new ne(new U(2445516,43222,H.TAI),22),new ne(new U(2446247,43223,H.TAI),23),new ne(new U(2447161,43224,H.TAI),24),new ne(new U(2447892,43225,H.TAI),25),new ne(new U(2448257,43226,H.TAI),26),new ne(new U(2448804,43227,H.TAI),27),new ne(new U(2449169,43228,H.TAI),28),new ne(new U(2449534,43229,H.TAI),29),new ne(new U(2450083,43230,H.TAI),30),new ne(new U(2450630,43231,H.TAI),31),new ne(new U(2451179,43232,H.TAI),32),new ne(new U(2453736,43233,H.TAI),33),new ne(new U(2454832,43234,H.TAI),34),new ne(new U(2456109,43235,H.TAI),35),new ne(new U(2457204,43236,H.TAI),36),new ne(new U(2457754,43237,H.TAI),37)];var ue=U;var co=Ze(Qe(),1);function cr(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var Nt=cr;function kt(e,n){if(e===null||typeof e!="object")return e;n=n??!1;let t=new e.constructor;for(let o in e)if(e.hasOwnProperty(o)){let i=e[o];n&&(i=kt(i,n)),t[o]=i}return t}var tn=kt;function sr(){let e,n,t=new Promise(function(o,i){e=o,n=i});return{resolve:e,reject:n,promise:t}}var We=sr;var Ft=Ze(Qe(),1);function tt(e,n){let t;return typeof document<"u"&&(t=document),tt._implementation(e,n,t)}tt._implementation=function(e,n,t){if(!p(e))throw new A("relative uri is required.");if(!p(n)){if(typeof t>"u")return e;n=t.baseURI??t.location.href}let o=new Ft.default(e);return o.scheme()!==""?o.toString():o.absoluteTo(n).toString()};var mn=tt;var Lt=Ze(Qe(),1);function ar(e,n){if(!p(e))throw new A("uri is required.");let t="",o=e.lastIndexOf("/");return o!==-1&&(t=e.substring(0,o+1)),n&&(e=new Lt.default(e),e.query().length!==0&&(t+=`?${e.query()}`),e.fragment().length!==0&&(t+=`#${e.fragment()}`)),t}var xt=ar;var Bt=Ze(Qe(),1);function fr(e){if(!p(e))throw new A("uri is required.");let n=new Bt.default(e);n.normalize();let t=n.path(),o=t.lastIndexOf("/");return o!==-1&&(t=t.substr(o+1)),o=t.lastIndexOf("."),o===-1?t="":t=t.substr(o+1),t}var Qt=fr;var Wt={};function ur(e,n,t){p(n)||(n=e.width),p(t)||(t=e.height);let o=Wt[n];p(o)||(o={},Wt[n]=o);let i=o[t];if(!p(i)){let r=document.createElement("canvas");r.width=n,r.height=t,i=r.getContext("2d",{willReadFrequently:!0}),i.globalCompositeOperation="copy",o[t]=i}return i.drawImage(e,0,0,n,t),i.getImageData(0,0,n,t).data}var ot=ur;var pr=/^blob:/i;function hr(e){return s.typeOf.string("uri",e),pr.test(e)}var zn=hr;var Ce;function dr(e){p(Ce)||(Ce=document.createElement("a")),Ce.href=window.location.href;let n=Ce.host,t=Ce.protocol;return Ce.href=e,Ce.href=Ce.href,t!==Ce.protocol||n!==Ce.host}var Ht=dr;var mr=/^data:/i;function yr(e){return s.typeOf.string("uri",e),mr.test(e)}var In=yr;function lr(e){let n=document.createElement("script");return n.async=!0,n.src=e,new Promise((t,o)=>{window.crossOriginIsolated&&n.setAttribute("crossorigin","anonymous");let i=document.getElementsByTagName("head")[0];n.onload=function(){n.onload=void 0,i.removeChild(n),t()},n.onerror=function(r){o(r)},i.appendChild(n)})}var $t=lr;function wr(e){if(!p(e))throw new A("obj is required.");let n="";for(let t in e)if(e.hasOwnProperty(t)){let o=e[t],i=`${encodeURIComponent(t)}=`;if(Array.isArray(o))for(let r=0,a=o.length;r<a;++r)n+=`${i+encodeURIComponent(o[r])}&`;else n+=`${i+encodeURIComponent(o)}&`}return n=n.slice(0,-1),n}var Yt=wr;function br(e){if(!p(e))throw new A("queryString is required.");let n={};if(e==="")return n;let t=e.replace(/\+/g,"%20").split(/[&;]/);for(let o=0,i=t.length;o<i;++o){let r=t[o].split("="),a=decodeURIComponent(r[0]),u=r[1];p(u)?u=decodeURIComponent(u):u="";let d=n[a];typeof d=="string"?n[a]=[d,u]:Array.isArray(d)?d.push(u):n[a]=u}return n}var Vt=br;var Or={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},ae=Object.freeze(Or);var gr={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Xt=Object.freeze(gr);function qn(e){e=e??_e.EMPTY_OBJECT;let n=e.throttleByServer??!1,t=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=t,this.throttleByServer=n,this.type=e.type??Xt.OTHER,this.serverKey=e.serverKey,this.state=ae.UNISSUED,this.deferred=void 0,this.cancelled=!1}qn.prototype.cancel=function(){this.cancelled=!0};qn.prototype.clone=function(e){return p(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=ae.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new qn(this)};var Zt=qn;function _r(e){let n={};if(!e)return n;let t=e.split(`\r +`);for(let o=0;o<t.length;++o){let i=t[o],r=i.indexOf(": ");if(r>0){let a=i.substring(0,r),u=i.substring(r+2);n[a]=u}}return n}var Jt=_r;function Gt(e,n,t){this.statusCode=e,this.response=n,this.responseHeaders=t,typeof this.responseHeaders=="string"&&(this.responseHeaders=Jt(this.responseHeaders))}Gt.prototype.toString=function(){let e="Request has failed.";return p(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var yn=Gt;var Dn=Ze(Qe(),1);function ln(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(ln.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});ln.prototype.addEventListener=function(e,n){s.typeOf.func("listener",e),this._listeners.push(e),this._scopes.push(n);let t=this;return function(){t.removeEventListener(e,n)}};ln.prototype.removeEventListener=function(e,n){s.typeOf.func("listener",e);let t=this._listeners,o=this._scopes,i=-1;for(let r=0;r<t.length;r++)if(t[r]===e&&o[r]===n){i=r;break}return i!==-1?(this._insideRaiseEvent?(this._toRemove.push(i),t[i]=void 0,o[i]=void 0):(t.splice(i,1),o.splice(i,1)),!0):!1};function Sr(e,n){return n-e}ln.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,n=this._listeners,t=this._scopes,o=n.length;for(e=0;e<o;e++){let r=n[e];p(r)&&n[e].apply(t[e],arguments)}let i=this._toRemove;if(o=i.length,o>0){for(i.sort(Sr),e=0;e<o;e++){let r=i[e];n.splice(r,1),t.splice(r,1)}i.length=0}this._insideRaiseEvent=!1};var Kt=ln;function He(e){s.typeOf.object("options",e),s.defined("options.comparator",e.comparator),this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(He.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){s.typeOf.number.greaterThanOrEquals("maximumLength",e,0);let n=this._length;if(e<n){let t=this._array;for(let o=e;o<n;++o)t[o]=void 0;this._length=e,t.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function rt(e,n,t){let o=e[n];e[n]=e[t],e[t]=o}He.prototype.reserve=function(e){e=e??this._length,this._array.length=e};He.prototype.heapify=function(e){e=e??0;let n=this._length,t=this._comparator,o=this._array,i=-1,r=!0;for(;r;){let a=2*(e+1),u=a-1;u<n&&t(o[u],o[e])<0?i=u:i=e,a<n&&t(o[a],o[i])<0&&(i=a),i!==e?(rt(o,i,e),e=i):r=!1}};He.prototype.resort=function(){let e=this._length;for(let n=Math.ceil(e/2);n>=0;--n)this.heapify(n)};He.prototype.insert=function(e){s.defined("element",e);let n=this._array,t=this._comparator,o=this._maximumLength,i=this._length++;for(i<n.length?n[i]=e:n.push(e);i!==0;){let a=Math.floor((i-1)/2);if(t(n[i],n[a])<0)rt(n,i,a),i=a;else break}let r;return p(o)&&this._length>o&&(r=n[o],this._length=o),r};He.prototype.pop=function(e){if(e=e??0,this._length===0)return;s.typeOf.number.lessThan("index",e,this._length);let n=this._array,t=n[e];return rt(n,e,--this._length),this.heapify(e),n[this._length]=void 0,t};var eo=He;function Rr(e,n){return e.priority-n.priority}var G={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},on=20,le=new eo({comparator:Rr});le.maximumLength=on;le.reserve(on);var ve=[],Pe={},Er=typeof document<"u"?new Dn.default(document.location.href):new Dn.default,Nn=new Kt;function ce(){}ce.maximumRequests=50;ce.maximumRequestsPerServer=18;ce.requestsByServer={};ce.throttleRequests=!0;ce.debugShowStatistics=!1;ce.requestCompletedEvent=Nn;Object.defineProperties(ce,{statistics:{get:function(){return G}},priorityHeapLength:{get:function(){return on},set:function(e){if(e<on)for(;le.length>e;){let n=le.pop();$e(n)}on=e,le.maximumLength=e,le.reserve(e)}}});function no(e){p(e.priorityFunction)&&(e.priority=e.priorityFunction())}ce.serverHasOpenSlots=function(e,n){n=n??1;let t=ce.requestsByServer[e]??ce.maximumRequestsPerServer;return Pe[e]+n<=t};ce.heapHasOpenSlots=function(e){return le.length+e<=on};function to(e){return e.state===ae.UNISSUED&&(e.state=ae.ISSUED,e.deferred=We()),e.deferred.promise}function Tr(e){return function(n){if(e.state===ae.CANCELLED)return;let t=e.deferred;--G.numberOfActiveRequests,--Pe[e.serverKey],Nn.raiseEvent(),e.state=ae.RECEIVED,e.deferred=void 0,t.resolve(n)}}function Cr(e){return function(n){e.state!==ae.CANCELLED&&(++G.numberOfFailedRequests,--G.numberOfActiveRequests,--Pe[e.serverKey],Nn.raiseEvent(n),e.state=ae.FAILED,e.deferred.reject(n))}}function oo(e){let n=to(e);return e.state=ae.ACTIVE,ve.push(e),++G.numberOfActiveRequests,++G.numberOfActiveRequestsEver,++Pe[e.serverKey],e.requestFunction().then(Tr(e)).catch(Cr(e)),n}function $e(e){let n=e.state===ae.ACTIVE;if(e.state=ae.CANCELLED,++G.numberOfCancelledRequests,p(e.deferred)){let t=e.deferred;e.deferred=void 0,t.reject()}n&&(--G.numberOfActiveRequests,--Pe[e.serverKey],++G.numberOfCancelledActiveRequests),p(e.cancelFunction)&&e.cancelFunction()}ce.update=function(){let e,n,t=0,o=ve.length;for(e=0;e<o;++e){if(n=ve[e],n.cancelled&&$e(n),n.state!==ae.ACTIVE){++t;continue}t>0&&(ve[e-t]=n)}ve.length-=t;let i=le.internalArray,r=le.length;for(e=0;e<r;++e)no(i[e]);le.resort();let a=Math.max(ce.maximumRequests-ve.length,0),u=0;for(;u<a&&le.length>0;){if(n=le.pop(),n.cancelled){$e(n);continue}if(n.throttleByServer&&!ce.serverHasOpenSlots(n.serverKey)){$e(n);continue}oo(n),++u}vr()};ce.getServerKey=function(e){s.typeOf.string("url",e);let n=new Dn.default(e);n.scheme()===""&&(n=n.absoluteTo(Er),n.normalize());let t=n.authority();/:/.test(t)||(t=`${t}:${n.scheme()==="https"?"443":"80"}`);let o=Pe[t];return p(o)||(Pe[t]=0),t};ce.request=function(e){if(s.typeOf.object("request",e),s.typeOf.string("request.url",e.url),s.typeOf.func("request.requestFunction",e.requestFunction),In(e.url)||zn(e.url))return Nn.raiseEvent(),e.state=ae.RECEIVED,e.requestFunction();if(++G.numberOfAttemptedRequests,p(e.serverKey)||(e.serverKey=ce.getServerKey(e.url)),ce.throttleRequests&&e.throttleByServer&&!ce.serverHasOpenSlots(e.serverKey))return;if(!ce.throttleRequests||!e.throttle)return oo(e);if(ve.length>=ce.maximumRequests)return;no(e);let n=le.insert(e);if(p(n)){if(n===e)return;$e(n)}return to(e)};function vr(){ce.debugShowStatistics&&(G.numberOfActiveRequests===0&&G.lastNumberOfActiveRequests>0&&(G.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${G.numberOfAttemptedRequests}`),G.numberOfAttemptedRequests=0),G.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${G.numberOfCancelledRequests}`),G.numberOfCancelledRequests=0),G.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${G.numberOfCancelledActiveRequests}`),G.numberOfCancelledActiveRequests=0),G.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${G.numberOfFailedRequests}`),G.numberOfFailedRequests=0)),G.lastNumberOfActiveRequests=G.numberOfActiveRequests)}ce.clearForSpecs=function(){for(;le.length>0;){let n=le.pop();$e(n)}let e=ve.length;for(let n=0;n<e;++n)$e(ve[n]);ve.length=0,Pe={},G.numberOfAttemptedRequests=0,G.numberOfActiveRequests=0,G.numberOfCancelledRequests=0,G.numberOfCancelledActiveRequests=0,G.numberOfFailedRequests=0,G.numberOfActiveRequestsEver=0,G.lastNumberOfActiveRequests=0};ce.numberOfActiveRequestsByServer=function(e){return Pe[e]};ce.requestHeap=le;var kn=ce;var ro=Ze(Qe(),1);var wn={},rn={};wn.add=function(e,n){if(!p(e))throw new A("host is required.");if(!p(n)||n<=0)throw new A("port is required to be greater than 0.");let t=`${e.toLowerCase()}:${n}`;p(rn[t])||(rn[t]=!0)};wn.remove=function(e,n){if(!p(e))throw new A("host is required.");if(!p(n)||n<=0)throw new A("port is required to be greater than 0.");let t=`${e.toLowerCase()}:${n}`;p(rn[t])&&delete rn[t]};function Ar(e){let n=new ro.default(e);n.normalize();let t=n.authority();if(t.length!==0){if(n.authority(t),t.indexOf("@")!==-1&&(t=t.split("@")[1]),t.indexOf(":")===-1){let o=n.scheme();if(o.length===0&&(o=window.location.protocol,o=o.substring(0,o.length-1)),o==="http")t+=":80";else if(o==="https")t+=":443";else return}return t}}wn.contains=function(e){if(!p(e))throw new A("url is required.");let n=Ar(e);return!!(p(n)&&p(rn[n]))};wn.clear=function(){rn={}};var it=wn;var so=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function P(e){e=e??_e.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),s.typeOf.string("options.url",e.url),this._url=void 0,this._templateValues=Ae(e.templateValues,{}),this._queryParameters=Ae(e.queryParameters,{}),this.headers=Ae(e.headers,{}),this.request=e.request??new Zt,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Ae(e,n){return p(e)?tn(e):n}P.createIfNeeded=function(e){return e instanceof P?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new P({url:e})};var cn;P.supportsImageBitmapOptions=function(){return p(cn)?cn:typeof createImageBitmap!="function"?(cn=Promise.resolve(!1),cn):(cn=P.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(n){let t={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(n,t),createImageBitmap(n)])}).then(function(n){let t=ot(n[0]),o=ot(n[1]);return t[1]!==o[1]}).catch(function(){return!1}),cn)};Object.defineProperties(P,{isBlobSupported:{get:function(){return so}}});Object.defineProperties(P.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return Qt(this._url)}},isDataUri:{get:function(){return In(this._url)}},isBlobUri:{get:function(){return zn(this._url)}},isCrossOriginUrl:{get:function(){return Ht(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});P.prototype.toString=function(){return this.getUrlComponent(!0,!0)};P.prototype.parseUrl=function(e,n,t,o){let i=new co.default(e),r=jr(i.query());this._queryParameters=n?Ln(r,this.queryParameters,t):r,i.search(""),i.fragment(""),p(o)&&i.scheme()===""&&(i=i.absoluteTo(mn(o))),this._url=i.toString()};function jr(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Vt(e)}function Ln(e,n,t){if(!t)return De(e,n);let o=tn(e,!0);for(let i in n)if(n.hasOwnProperty(i)){let r=o[i],a=n[i];p(r)?(Array.isArray(r)||(r=o[i]=[r]),o[i]=r.concat(a)):o[i]=Array.isArray(a)?a.slice():a}return o}P.prototype.getUrlComponent=function(e,n){if(this.isDataUri)return this._url;let t=this._url;e&&(t=`${t}${Mr(this.queryParameters)}`),t=t.replace(/%7B/g,"{").replace(/%7D/g,"}");let o=this._templateValues;return Object.keys(o).length>0&&(t=t.replace(/{(.*?)}/g,function(i,r){let a=o[r];return p(a)?encodeURIComponent(a):i})),n&&p(this.proxy)&&(t=this.proxy.getURL(t)),t};function Mr(e){let n=Object.keys(e);return n.length===0?"":n.length===1&&!p(e[n[0]])?`?${n[0]}`:`?${Yt(e)}`}P.prototype.setQueryParameters=function(e,n){n?this._queryParameters=Ln(this._queryParameters,e,!1):this._queryParameters=Ln(e,this._queryParameters,!1)};P.prototype.appendQueryParameters=function(e){this._queryParameters=Ln(e,this._queryParameters,!0)};P.prototype.setTemplateValues=function(e,n){n?this._templateValues=De(this._templateValues,e):this._templateValues=De(e,this._templateValues)};P.prototype.getDerivedResource=function(e){let n=this.clone();if(n._retryCount=0,p(e.url)){let t=e.preserveQueryParameters??!1;n.parseUrl(e.url,!0,t,this._url)}return p(e.queryParameters)&&(n._queryParameters=De(e.queryParameters,n.queryParameters)),p(e.templateValues)&&(n._templateValues=De(e.templateValues,n.templateValues)),p(e.headers)&&(n.headers=De(e.headers,n.headers)),p(e.proxy)&&(n.proxy=e.proxy),p(e.request)&&(n.request=e.request),p(e.retryCallback)&&(n.retryCallback=e.retryCallback),p(e.retryAttempts)&&(n.retryAttempts=e.retryAttempts),n};P.prototype.retryOnError=function(e){let n=this.retryCallback;if(typeof n!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let t=this;return Promise.resolve(n(this,e)).then(function(o){return++t._retryCount,o})};P.prototype.clone=function(e){return p(e)?(e._url=this._url,e._queryParameters=tn(this._queryParameters),e._templateValues=tn(this._templateValues),e.headers=tn(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new P({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:p(this.credits)?this.credits.slice():void 0})};P.prototype.getBaseUri=function(e){return xt(this.getUrlComponent(e),e)};P.prototype.appendForwardSlash=function(){this._url=Nt(this._url)};P.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};P.fetchArrayBuffer=function(e){return new P(e).fetchArrayBuffer()};P.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};P.fetchBlob=function(e){return new P(e).fetchBlob()};P.prototype.fetchImage=function(e){e=e??_e.EMPTY_OBJECT;let n=e.preferImageBitmap??!1,t=e.preferBlob??!1,o=e.flipY??!1,i=e.skipColorSpaceConversion??!1;if(st(this.request),!so||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!t)return ct({resource:this,flipY:o,skipColorSpaceConversion:i,preferImageBitmap:n});let r=this.fetchBlob();if(!p(r))return;let a,u,d,m;return P.supportsImageBitmapOptions().then(function(l){return a=l,u=a&&n,r}).then(function(l){if(!p(l))return;if(m=l,u)return P.createImageBitmapFromBlob(l,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:i});let w=window.URL.createObjectURL(l);return d=new P({url:w}),ct({resource:d,flipY:o,skipColorSpaceConversion:i,preferImageBitmap:!1})}).then(function(l){if(p(l))return l.blob=m,u||window.URL.revokeObjectURL(d.url),l}).catch(function(l){return p(d)&&window.URL.revokeObjectURL(d.url),l.blob=m,Promise.reject(l)})};function ct(e){let n=e.resource,t=e.flipY,o=e.skipColorSpaceConversion,i=e.preferImageBitmap,r=n.request;r.url=n.url,r.requestFunction=function(){let u=!1;!n.isDataUri&&!n.isBlobUri&&(u=n.isCrossOriginUrl);let d=We();return P._Implementations.createImage(r,u,d,t,o,i),d.promise};let a=kn.request(r);if(p(a))return a.catch(function(u){return r.state!==ae.FAILED?Promise.reject(u):n.retryOnError(u).then(function(d){return d?(r.state=ae.UNISSUED,r.deferred=void 0,ct({resource:n,flipY:t,skipColorSpaceConversion:o,preferImageBitmap:i})):Promise.reject(u)})})}P.fetchImage=function(e){return new P(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};P.prototype.fetchText=function(){return this.fetch({responseType:"text"})};P.fetchText=function(e){return new P(e).fetchText()};P.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(p(e))return e.then(function(n){if(p(n))return JSON.parse(n)})};P.fetchJson=function(e){return new P(e).fetchJson()};P.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};P.fetchXML=function(e){return new P(e).fetchXML()};P.prototype.fetchJsonp=function(e){e=e??"callback",st(this.request);let n;do n=`loadJsonp${R.nextRandomNumber().toString().substring(2,8)}`;while(p(window[n]));return ao(this,e,n)};function ao(e,n,t){let o={};o[n]=t,e.setQueryParameters(o);let i=e.request,r=e.url;i.url=r,i.requestFunction=function(){let u=We();return window[t]=function(d){u.resolve(d);try{delete window[t]}catch{window[t]=void 0}},P._Implementations.loadAndExecuteScript(r,t,u),u.promise};let a=kn.request(i);if(p(a))return a.catch(function(u){return i.state!==ae.FAILED?Promise.reject(u):e.retryOnError(u).then(function(d){return d?(i.state=ae.UNISSUED,i.deferred=void 0,ao(e,n,t)):Promise.reject(u)})})}P.fetchJsonp=function(e){return new P(e).fetchJsonp(e.callbackParameterName)};P.prototype._makeRequest=function(e){let n=this;st(n.request);let t=n.request,o=n.url;t.url=o,t.requestFunction=function(){let r=e.responseType,a=De(e.headers,n.headers),u=e.overrideMimeType,d=e.method,m=e.data,l=We(),w=P._Implementations.loadWithXhr(o,r,d,m,a,l,u);return p(w)&&p(w.abort)&&(t.cancelFunction=function(){w.abort()}),l.promise};let i=kn.request(t);if(p(i))return i.then(function(r){return t.cancelFunction=void 0,r}).catch(function(r){return t.cancelFunction=void 0,t.state!==ae.FAILED?Promise.reject(r):n.retryOnError(r).then(function(a){return a?(t.state=ae.UNISSUED,t.deferred=void 0,n.fetch(e)):Promise.reject(r)})})};function st(e){if(e.state===ae.ISSUED||e.state===ae.ACTIVE)throw new Se("The Resource is already being fetched.");e.state=ae.UNISSUED,e.deferred=void 0}var Pr=/^data:(.*?)(;base64)?,(.*)$/;function Fn(e,n){let t=decodeURIComponent(n);return e?atob(t):t}function io(e,n){let t=Fn(e,n),o=new ArrayBuffer(t.length),i=new Uint8Array(o);for(let r=0;r<t.length;r++)i[r]=t.charCodeAt(r);return o}function Ur(e,n){n=n??"";let t=e[1],o=!!e[2],i=e[3],r,a;switch(n){case"":case"text":return Fn(o,i);case"arraybuffer":return io(o,i);case"blob":return r=io(o,i),new Blob([r],{type:t});case"document":return a=new DOMParser,a.parseFromString(Fn(o,i),t);case"json":return JSON.parse(Fn(o,i));default:throw new A(`Unhandled responseType: ${n}`)}}P.prototype.fetch=function(e){return e=Ae(e,{}),e.method="GET",this._makeRequest(e)};P.fetch=function(e){return new P(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.delete=function(e){return e=Ae(e,{}),e.method="DELETE",this._makeRequest(e)};P.delete=function(e){return new P(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};P.prototype.head=function(e){return e=Ae(e,{}),e.method="HEAD",this._makeRequest(e)};P.head=function(e){return new P(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.options=function(e){return e=Ae(e,{}),e.method="OPTIONS",this._makeRequest(e)};P.options=function(e){return new P(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.post=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="POST",n.data=e,this._makeRequest(n)};P.post=function(e){return new P(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.put=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="PUT",n.data=e,this._makeRequest(n)};P.put=function(e){return new P(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.patch=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="PATCH",n.data=e,this._makeRequest(n)};P.patch=function(e){return new P(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P._Implementations={};P._Implementations.loadImageElement=function(e,n,t){let o=new Image;o.onload=function(){o.naturalWidth===0&&o.naturalHeight===0&&o.width===0&&o.height===0&&(o.width=300,o.height=150),t.resolve(o)},o.onerror=function(i){t.reject(i)},n&&(it.contains(e)?o.crossOrigin="use-credentials":o.crossOrigin=""),o.src=e};P._Implementations.createImage=function(e,n,t,o,i,r){let a=e.url;P.supportsImageBitmapOptions().then(function(u){if(!(u&&r)){P._Implementations.loadImageElement(a,n,t);return}let d="blob",m="GET",l=We(),w=P._Implementations.loadWithXhr(a,d,m,void 0,void 0,l,void 0,void 0,void 0);return p(w)&&p(w.abort)&&(e.cancelFunction=function(){w.abort()}),l.promise.then(function(E){if(!p(E)){t.reject(new Se(`Successfully retrieved ${a} but it contained no content.`));return}return P.createImageBitmapFromBlob(E,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:i})}).then(function(E){t.resolve(E)})}).catch(function(u){t.reject(u)})};P.createImageBitmapFromBlob=function(e,n){return s.defined("options",n),s.typeOf.bool("options.flipY",n.flipY),s.typeOf.bool("options.premultiplyAlpha",n.premultiplyAlpha),s.typeOf.bool("options.skipColorSpaceConversion",n.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:n.flipY?"flipY":"from-image",premultiplyAlpha:n.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:n.skipColorSpaceConversion?"none":"default"})};function zr(e,n,t,o,i,r,a){fetch(e,{method:t,headers:i}).then(async u=>{if(!u.ok){let d={};u.headers.forEach((m,l)=>{d[l]=m}),r.reject(new yn(u.status,u,d));return}switch(n){case"text":r.resolve(u.text());break;case"json":r.resolve(u.json());break;default:r.resolve(new Uint8Array(await u.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new yn)})}var Ir=typeof XMLHttpRequest>"u";P._Implementations.loadWithXhr=function(e,n,t,o,i,r,a){let u=Pr.exec(e);if(u!==null){r.resolve(Ur(u,n));return}if(Ir){zr(e,n,t,o,i,r,a);return}let d=new XMLHttpRequest;if(it.contains(e)&&(d.withCredentials=!0),d.open(t,e,!0),p(a)&&p(d.overrideMimeType)&&d.overrideMimeType(a),p(i))for(let l in i)i.hasOwnProperty(l)&&d.setRequestHeader(l,i[l]);p(n)&&(d.responseType=n);let m=!1;return typeof e=="string"&&(m=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),d.onload=function(){if((d.status<200||d.status>=300)&&!(m&&d.status===0)){r.reject(new yn(d.status,d.response,d.getAllResponseHeaders()));return}let l=d.response,w=d.responseType;if(t==="HEAD"||t==="OPTIONS"){let T=d.getAllResponseHeaders().trim().split(/[\r\n]+/),M={};T.forEach(function(v){let I=v.split(": "),N=I.shift();M[N]=I.join(": ")}),r.resolve(M);return}if(d.status===204)r.resolve(void 0);else if(p(l)&&(!p(n)||w===n))r.resolve(l);else if(n==="json"&&typeof l=="string")try{r.resolve(JSON.parse(l))}catch(E){r.reject(E)}else(w===""||w==="document")&&p(d.responseXML)&&d.responseXML.hasChildNodes()?r.resolve(d.responseXML):(w===""||w==="text")&&p(d.responseText)?r.resolve(d.responseText):r.reject(new Se("Invalid XMLHttpRequest response type."))},d.onerror=function(l){r.reject(new yn)},d.send(o),d};P._Implementations.loadAndExecuteScript=function(e,n,t){return $t(e,n).catch(function(o){t.reject(o)})};P._DefaultImplementations={};P._DefaultImplementations.createImage=P._Implementations.createImage;P._DefaultImplementations.loadWithXhr=P._Implementations.loadWithXhr;P._DefaultImplementations.loadAndExecuteScript=P._Implementations.loadAndExecuteScript;P.DEFAULT=Object.freeze(new P({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var ke=P;function On(e){e=e??_e.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,p(e.data)?fo(this,e.data):fo(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}On.fromUrl=async function(e,n){s.defined("url",e),n=n??_e.EMPTY_OBJECT;let t=ke.createIfNeeded(e),o;try{o=await t.fetchJson()}catch{throw new Se(`An error occurred while retrieving the EOP data from the URL ${t.url}.`)}return new On({addNewLeapSeconds:n.addNewLeapSeconds,data:o})};On.NONE=Object.freeze({compute:function(e,n){return p(n)?(n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0):n=new hn(0,0,0,0,0),n}});On.prototype.compute=function(e,n){if(!p(this._samples))return;if(p(n)||(n=new hn(0,0,0,0,0)),this._samples.length===0)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;let t=this._dates,o=this._lastIndex,i=0,r=0;if(p(o)){let u=t[o],d=t[o+1],m=ue.lessThanOrEquals(u,e),l=!p(d),w=l||ue.greaterThanOrEquals(d,e);if(m&&w)return i=o,!l&&d.equals(e)&&++i,r=i+1,po(this,t,this._samples,e,i,r,n),n}let a=Be(t,e,ue.compare,this._dateColumn);return a>=0?(a<t.length-1&&t[a+1].equals(e)&&++a,i=a,r=a):(r=~a,i=r-1,i<0&&(i=0)),this._lastIndex=i,po(this,t,this._samples,e,i,r,n),n};function qr(e,n){return ue.compare(e.julianDate,n)}function fo(e,n){if(!p(n.columnNames))throw new Se("Error in loaded EOP data: The columnNames property is required.");if(!p(n.samples))throw new Se("Error in loaded EOP data: The samples property is required.");let t=n.columnNames.indexOf("modifiedJulianDateUtc"),o=n.columnNames.indexOf("xPoleWanderRadians"),i=n.columnNames.indexOf("yPoleWanderRadians"),r=n.columnNames.indexOf("ut1MinusUtcSeconds"),a=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),u=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),d=n.columnNames.indexOf("taiMinusUtcSeconds");if(t<0||o<0||i<0||r<0||a<0||u<0||d<0)throw new Se("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let m=e._samples=n.samples,l=e._dates=[];e._dateColumn=t,e._xPoleWanderRadiansColumn=o,e._yPoleWanderRadiansColumn=i,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=a,e._yCelestialPoleOffsetRadiansColumn=u,e._taiMinusUtcSecondsColumn=d,e._columnCount=n.columnNames.length,e._lastIndex=void 0;let w,E=e._addNewLeapSeconds;for(let T=0,M=m.length;T<M;T+=e._columnCount){let v=m[T+t],I=m[T+d],N=v+ie.MODIFIED_JULIAN_DATE_DIFFERENCE,F=new ue(N,I,H.TAI);if(l.push(F),E){if(I!==w&&p(w)){let k=ue.leapSeconds,x=Be(k,F,qr);if(x<0){let Q=new ne(F,I);k.splice(~x,0,Q)}}w=I}}}function uo(e,n,t,o,i){let r=t*o;i.xPoleWander=n[r+e._xPoleWanderRadiansColumn],i.yPoleWander=n[r+e._yPoleWanderRadiansColumn],i.xPoleOffset=n[r+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=n[r+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=n[r+e._ut1MinusUtcSecondsColumn]}function bn(e,n,t){return n+e*(t-n)}function po(e,n,t,o,i,r,a){let u=e._columnCount;if(r>n.length-1)return a.xPoleWander=0,a.yPoleWander=0,a.xPoleOffset=0,a.yPoleOffset=0,a.ut1MinusUtc=0,a;let d=n[i],m=n[r];if(d.equals(m)||o.equals(d))return uo(e,t,i,u,a),a;if(o.equals(m))return uo(e,t,r,u,a),a;let l=ue.secondsDifference(o,d)/ue.secondsDifference(m,d),w=i*u,E=r*u,T=t[w+e._ut1MinusUtcSecondsColumn],M=t[E+e._ut1MinusUtcSecondsColumn],v=M-T;if(v>.5||v<-.5){let I=t[w+e._taiMinusUtcSecondsColumn],N=t[E+e._taiMinusUtcSecondsColumn];I!==N&&(m.equals(o)?T=M:M-=N-I)}return a.xPoleWander=bn(l,t[w+e._xPoleWanderRadiansColumn],t[E+e._xPoleWanderRadiansColumn]),a.yPoleWander=bn(l,t[w+e._yPoleWanderRadiansColumn],t[E+e._yPoleWanderRadiansColumn]),a.xPoleOffset=bn(l,t[w+e._xCelestialPoleOffsetRadiansColumn],t[E+e._xCelestialPoleOffsetRadiansColumn]),a.yPoleOffset=bn(l,t[w+e._yCelestialPoleOffsetRadiansColumn],t[E+e._yCelestialPoleOffsetRadiansColumn]),a.ut1MinusUtc=bn(l,T,M),a}var ho=On;function we(e,n,t){this.heading=e??0,this.pitch=n??0,this.roll=t??0}we.fromQuaternion=function(e,n){if(!p(e))throw new A("quaternion is required");p(n)||(n=new we);let t=2*(e.w*e.y-e.z*e.x),o=1-2*(e.x*e.x+e.y*e.y),i=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),a=2*(e.w*e.z+e.x*e.y);return n.heading=-Math.atan2(a,r),n.roll=Math.atan2(i,o),n.pitch=-R.asinClamped(t),n};we.fromDegrees=function(e,n,t,o){if(!p(e))throw new A("heading is required");if(!p(n))throw new A("pitch is required");if(!p(t))throw new A("roll is required");return p(o)||(o=new we),o.heading=e*R.RADIANS_PER_DEGREE,o.pitch=n*R.RADIANS_PER_DEGREE,o.roll=t*R.RADIANS_PER_DEGREE,o};we.clone=function(e,n){if(p(e))return p(n)?(n.heading=e.heading,n.pitch=e.pitch,n.roll=e.roll,n):new we(e.heading,e.pitch,e.roll)};we.equals=function(e,n){return e===n||p(e)&&p(n)&&e.heading===n.heading&&e.pitch===n.pitch&&e.roll===n.roll};we.equalsEpsilon=function(e,n,t,o){return e===n||p(e)&&p(n)&&R.equalsEpsilon(e.heading,n.heading,t,o)&&R.equalsEpsilon(e.pitch,n.pitch,t,o)&&R.equalsEpsilon(e.roll,n.roll,t,o)};we.prototype.clone=function(e){return we.clone(this,e)};we.prototype.equals=function(e){return we.equals(this,e)};we.prototype.equalsEpsilon=function(e,n,t){return we.equalsEpsilon(this,e,n,t)};we.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var xn=we;var mo=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function Dr(){let e=document.getElementsByTagName("script");for(let n=0,t=e.length;n<t;++n){let o=e[n].getAttribute("src"),i=mo.exec(o);if(i!==null)return i[1]}}var Bn;function yo(e){return typeof document>"u"?e:(p(Bn)||(Bn=document.createElement("a")),Bn.href=e,Bn.href)}var Ye;function lo(){if(p(Ye))return Ye;let e;if(typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:p(import.meta?.url)?e=mn(".",import.meta.url):typeof define=="object"&&p(define.amd)&&!define.amd.toUrlUndefined&&p(Sn.toUrl)?e=mn("..",Ve("Core/buildModuleUrl.js")):e=Dr(),!p(e))throw new A("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return Ye=new ke({url:yo(e)}),Ye.appendForwardSlash(),Ye}function Nr(e){return yo(Sn.toUrl(`../${e}`))}function wo(e){return lo().getDerivedResource({url:e}).url}var Qn;function Ve(e){return p(Qn)||(typeof define=="object"&&p(define.amd)&&!define.amd.toUrlUndefined&&p(Sn.toUrl)?Qn=Nr:Qn=wo),Qn(e)}Ve._cesiumScriptRegex=mo;Ve._buildModuleUrlFromBaseUrl=wo;Ve._clearBaseResource=function(){Ye=void 0};Ve.setBaseUrl=function(e){Ye=ke.DEFAULT.getDerivedResource({url:e})};Ve.getCesiumBaseUrl=lo;var bo=Ve;function kr(e,n,t){this.x=e,this.y=n,this.s=t}var Wn=kr;function ut(e){e=e??_e.EMPTY_OBJECT,this._xysFileUrlTemplate=ke.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new ue(this._sampleZeroJulianEphemerisDate,0,H.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let n=this._interpolationOrder,t=this._denominators=new Array(n+1),o=this._xTable=new Array(n+1),i=Math.pow(this._stepSizeDays,n);for(let r=0;r<=n;++r){t[r]=i,o[r]=r*this._stepSizeDays;for(let a=0;a<=n;++a)a!==r&&(t[r]*=r-a);t[r]=1/t[r]}this._work=new Array(n+1),this._coef=new Array(n+1)}var Fr=new ue(0,0,H.TAI);function at(e,n,t){let o=Fr;return o.dayNumber=n,o.secondsOfDay=t,ue.daysDifference(o,e._sampleZeroDateTT)}ut.prototype.preload=function(e,n,t,o){let i=at(this,e,n),r=at(this,t,o),a=i/this._stepSizeDays-this._interpolationOrder/2|0;a<0&&(a=0);let u=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;u>=this._totalSamples&&(u=this._totalSamples-1);let d=a/this._samplesPerXysFile|0,m=u/this._samplesPerXysFile|0,l=[];for(let w=d;w<=m;++w)l.push(ft(this,w));return Promise.all(l)};ut.prototype.computeXysRadians=function(e,n,t){let o=at(this,e,n);if(o<0)return;let i=o/this._stepSizeDays|0;if(i>=this._totalSamples)return;let r=this._interpolationOrder,a=i-(r/2|0);a<0&&(a=0);let u=a+r;u>=this._totalSamples&&(u=this._totalSamples-1,a=u-r,a<0&&(a=0));let d=!1,m=this._samples;if(p(m[a*3])||(ft(this,a/this._samplesPerXysFile|0),d=!0),p(m[u*3])||(ft(this,u/this._samplesPerXysFile|0),d=!0),d)return;p(t)?(t.x=0,t.y=0,t.s=0):t=new Wn(0,0,0);let l=o-a*this._stepSizeDays,w=this._work,E=this._denominators,T=this._coef,M=this._xTable,v,I;for(v=0;v<=r;++v)w[v]=l-M[v];for(v=0;v<=r;++v){for(T[v]=1,I=0;I<=r;++I)I!==v&&(T[v]*=w[I]);T[v]*=E[v];let N=(a+v)*3;t.x+=T[v]*m[N++],t.y+=T[v]*m[N++],t.s+=T[v]*m[N]}return t};function ft(e,n){if(e._chunkDownloadsInProgress[n])return e._chunkDownloadsInProgress[n];let t,o=e._xysFileUrlTemplate;p(o)?t=o.getDerivedResource({templateValues:{0:n}}):t=new ke({url:bo(`Assets/IAU2006_XYS/IAU2006_XYS_${n}.json`)});let i=t.fetchJson().then(function(r){e._chunkDownloadsInProgress[n]=!1;let a=e._samples,u=r.samples,d=n*e._samplesPerXysFile*3;for(let m=0,l=u.length;m<l;++m)a[d+m]=u[m]});return e._chunkDownloadsInProgress[n]=i,i}var Oo=ut;function S(e,n,t,o){this.x=e??0,this.y=n??0,this.z=t??0,this.w=o??0}var gn=new g;S.fromAxisAngle=function(e,n,t){s.typeOf.object("axis",e),s.typeOf.number("angle",n);let o=n/2,i=Math.sin(o);gn=g.normalize(e,gn);let r=gn.x*i,a=gn.y*i,u=gn.z*i,d=Math.cos(o);return p(t)?(t.x=r,t.y=a,t.z=u,t.w=d,t):new S(r,a,u,d)};var Lr=[1,2,0],xr=new Array(3);S.fromRotationMatrix=function(e,n){s.typeOf.object("matrix",e);let t,o,i,r,a,u=e[B.COLUMN0ROW0],d=e[B.COLUMN1ROW1],m=e[B.COLUMN2ROW2],l=u+d+m;if(l>0)t=Math.sqrt(l+1),a=.5*t,t=.5/t,o=(e[B.COLUMN1ROW2]-e[B.COLUMN2ROW1])*t,i=(e[B.COLUMN2ROW0]-e[B.COLUMN0ROW2])*t,r=(e[B.COLUMN0ROW1]-e[B.COLUMN1ROW0])*t;else{let w=Lr,E=0;d>u&&(E=1),m>u&&m>d&&(E=2);let T=w[E],M=w[T];t=Math.sqrt(e[B.getElementIndex(E,E)]-e[B.getElementIndex(T,T)]-e[B.getElementIndex(M,M)]+1);let v=xr;v[E]=.5*t,t=.5/t,a=(e[B.getElementIndex(M,T)]-e[B.getElementIndex(T,M)])*t,v[T]=(e[B.getElementIndex(T,E)]+e[B.getElementIndex(E,T)])*t,v[M]=(e[B.getElementIndex(M,E)]+e[B.getElementIndex(E,M)])*t,o=-v[0],i=-v[1],r=-v[2]}return p(n)?(n.x=o,n.y=i,n.z=r,n.w=a,n):new S(o,i,r,a)};var go=new S,_o=new S,pt=new S,So=new S;S.fromHeadingPitchRoll=function(e,n){return s.typeOf.object("headingPitchRoll",e),So=S.fromAxisAngle(g.UNIT_X,e.roll,go),pt=S.fromAxisAngle(g.UNIT_Y,-e.pitch,n),n=S.multiply(pt,So,pt),_o=S.fromAxisAngle(g.UNIT_Z,-e.heading,go),S.multiply(_o,n,n)};var Hn=new g,ht=new g,Ee=new S,Ro=new S,$n=new S;S.packedLength=4;S.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.x,n[t++]=e.y,n[t++]=e.z,n[t]=e.w,n};S.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new S),t.x=e[n],t.y=e[n+1],t.z=e[n+2],t.w=e[n+3],t};S.packedInterpolationLength=3;S.convertPackedArrayForInterpolation=function(e,n,t,o){S.unpack(e,t*4,$n),S.conjugate($n,$n);for(let i=0,r=t-n+1;i<r;i++){let a=i*3;S.unpack(e,(n+i)*4,Ee),S.multiply(Ee,$n,Ee),Ee.w<0&&S.negate(Ee,Ee),S.computeAxis(Ee,Hn);let u=S.computeAngle(Ee);p(o)||(o=[]),o[a]=Hn.x*u,o[a+1]=Hn.y*u,o[a+2]=Hn.z*u}};S.unpackInterpolationResult=function(e,n,t,o,i){p(i)||(i=new S),g.fromArray(e,0,ht);let r=g.magnitude(ht);return S.unpack(n,o*4,Ro),r===0?S.clone(S.IDENTITY,Ee):S.fromAxisAngle(ht,r,Ee),S.multiply(Ee,Ro,i)};S.clone=function(e,n){if(p(e))return p(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new S(e.x,e.y,e.z,e.w)};S.conjugate=function(e,n){return s.typeOf.object("quaternion",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=e.w,n};S.magnitudeSquared=function(e){return s.typeOf.object("quaternion",e),e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};S.magnitude=function(e){return Math.sqrt(S.magnitudeSquared(e))};S.normalize=function(e,n){s.typeOf.object("result",n);let t=1/S.magnitude(e),o=e.x*t,i=e.y*t,r=e.z*t,a=e.w*t;return n.x=o,n.y=i,n.z=r,n.w=a,n};S.inverse=function(e,n){s.typeOf.object("result",n);let t=S.magnitudeSquared(e);return n=S.conjugate(e,n),S.multiplyByScalar(n,1/t,n)};S.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x+n.x,t.y=e.y+n.y,t.z=e.z+n.z,t.w=e.w+n.w,t};S.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x-n.x,t.y=e.y-n.y,t.z=e.z-n.z,t.w=e.w-n.w,t};S.negate=function(e,n){return s.typeOf.object("quaternion",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=-e.w,n};S.dot=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),e.x*n.x+e.y*n.y+e.z*n.z+e.w*n.w};S.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e.x,i=e.y,r=e.z,a=e.w,u=n.x,d=n.y,m=n.z,l=n.w,w=a*u+o*l+i*m-r*d,E=a*d-o*m+i*l+r*u,T=a*m+o*d-i*u+r*l,M=a*l-o*u-i*d-r*m;return t.x=w,t.y=E,t.z=T,t.w=M,t};S.multiplyByScalar=function(e,n,t){return s.typeOf.object("quaternion",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t.w=e.w*n,t};S.divideByScalar=function(e,n,t){return s.typeOf.object("quaternion",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};S.computeAxis=function(e,n){s.typeOf.object("quaternion",e),s.typeOf.object("result",n);let t=e.w;if(Math.abs(t-1)<R.EPSILON6||Math.abs(t+1)<R.EPSILON6)return n.x=1,n.y=n.z=0,n;let o=1/Math.sqrt(1-t*t);return n.x=e.x*o,n.y=e.y*o,n.z=e.z*o,n};S.computeAngle=function(e){return s.typeOf.object("quaternion",e),Math.abs(e.w-1)<R.EPSILON6?0:2*Math.acos(e.w)};var dt=new S;S.lerp=function(e,n,t,o){return s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o),dt=S.multiplyByScalar(n,t,dt),o=S.multiplyByScalar(e,1-t,o),S.add(dt,o,o)};var Eo=new S,mt=new S,yt=new S;S.slerp=function(e,n,t,o){s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o);let i=S.dot(e,n),r=n;if(i<0&&(i=-i,r=Eo=S.negate(n,Eo)),1-i<R.EPSILON6)return S.lerp(e,r,t,o);let a=Math.acos(i);return mt=S.multiplyByScalar(e,Math.sin((1-t)*a),mt),yt=S.multiplyByScalar(r,Math.sin(t*a),yt),o=S.add(mt,yt,o),S.multiplyByScalar(o,1/Math.sin(a),o)};S.log=function(e,n){s.typeOf.object("quaternion",e),s.typeOf.object("result",n);let t=R.acosClamped(e.w),o=0;return t!==0&&(o=t/Math.sin(t)),g.multiplyByScalar(e,o,n)};S.exp=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=g.magnitude(e),o=0;return t!==0&&(o=Math.sin(t)/t),n.x=e.x*o,n.y=e.y*o,n.z=e.z*o,n.w=Math.cos(t),n};var Br=new g,Qr=new g,_n=new S,sn=new S;S.computeInnerQuadrangle=function(e,n,t,o){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("q2",t),s.typeOf.object("result",o);let i=S.conjugate(n,_n);S.multiply(i,t,sn);let r=S.log(sn,Br);S.multiply(i,e,sn);let a=S.log(sn,Qr);return g.add(r,a,r),g.multiplyByScalar(r,.25,r),g.negate(r,r),S.exp(r,_n),S.multiply(n,_n,o)};S.squad=function(e,n,t,o,i,r){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("s0",t),s.typeOf.object("s1",o),s.typeOf.number("t",i),s.typeOf.object("result",r);let a=S.slerp(e,n,i,_n),u=S.slerp(t,o,i,sn);return S.slerp(a,u,2*i*(1-i),r)};var Wr=new S,To=1.9011074535173003,Yn=un.supportsTypedArrays()?new Float32Array(8):[],Vn=un.supportsTypedArrays()?new Float32Array(8):[],Ue=un.supportsTypedArrays()?new Float32Array(8):[],ze=un.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let n=e+1,t=2*n+1;Yn[e]=1/(n*t),Vn[e]=n/t}Yn[7]=To/136;Vn[7]=To*8/17;S.fastSlerp=function(e,n,t,o){s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o);let i=S.dot(e,n),r;i>=0?r=1:(r=-1,i=-i);let a=i-1,u=1-t,d=t*t,m=u*u;for(let T=7;T>=0;--T)Ue[T]=(Yn[T]*d-Vn[T])*a,ze[T]=(Yn[T]*m-Vn[T])*a;let l=r*t*(1+Ue[0]*(1+Ue[1]*(1+Ue[2]*(1+Ue[3]*(1+Ue[4]*(1+Ue[5]*(1+Ue[6]*(1+Ue[7])))))))),w=u*(1+ze[0]*(1+ze[1]*(1+ze[2]*(1+ze[3]*(1+ze[4]*(1+ze[5]*(1+ze[6]*(1+ze[7])))))))),E=S.multiplyByScalar(e,w,Wr);return S.multiplyByScalar(n,l,o),S.add(E,o,o)};S.fastSquad=function(e,n,t,o,i,r){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("s0",t),s.typeOf.object("s1",o),s.typeOf.number("t",i),s.typeOf.object("result",r);let a=S.fastSlerp(e,n,i,_n),u=S.fastSlerp(t,o,i,sn);return S.fastSlerp(a,u,2*i*(1-i),r)};S.equals=function(e,n){return e===n||p(e)&&p(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w};S.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t&&Math.abs(e.z-n.z)<=t&&Math.abs(e.w-n.w)<=t};S.ZERO=Object.freeze(new S(0,0,0,0));S.IDENTITY=Object.freeze(new S(0,0,0,1));S.prototype.clone=function(e){return S.clone(this,e)};S.prototype.equals=function(e){return S.equals(this,e)};S.prototype.equalsEpsilon=function(e,n){return S.equalsEpsilon(this,e,n)};S.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Xe=S;var $={},lt={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},an={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},wt={},Oe={east:new g,north:new g,up:new g,west:new g,south:new g,down:new g},Fe=new g,Le=new g,xe=new g;$.localFrameToFixedFrameGenerator=function(e,n){if(!lt.hasOwnProperty(e)||!lt[e].hasOwnProperty(n))throw new A("firstAxis and secondAxis must be east, north, up, west, south or down.");let t=lt[e][n],o,i=e+n;return p(wt[i])?o=wt[i]:(o=function(r,a,u){if(!p(r))throw new A("origin is required.");if(isNaN(r.x)||isNaN(r.y)||isNaN(r.z))throw new A("origin has a NaN component");if(p(u)||(u=new J),g.equalsEpsilon(r,g.ZERO,R.EPSILON14))g.unpack(an[e],0,Fe),g.unpack(an[n],0,Le),g.unpack(an[t],0,xe);else if(R.equalsEpsilon(r.x,0,R.EPSILON14)&&R.equalsEpsilon(r.y,0,R.EPSILON14)){let d=R.sign(r.z);g.unpack(an[e],0,Fe),e!=="east"&&e!=="west"&&g.multiplyByScalar(Fe,d,Fe),g.unpack(an[n],0,Le),n!=="east"&&n!=="west"&&g.multiplyByScalar(Le,d,Le),g.unpack(an[t],0,xe),t!=="east"&&t!=="west"&&g.multiplyByScalar(xe,d,xe)}else{a=a??Ie.default,a.geodeticSurfaceNormal(r,Oe.up);let d=Oe.up,m=Oe.east;m.x=-r.y,m.y=r.x,m.z=0,g.normalize(m,Oe.east),g.cross(d,m,Oe.north),g.multiplyByScalar(Oe.up,-1,Oe.down),g.multiplyByScalar(Oe.east,-1,Oe.west),g.multiplyByScalar(Oe.north,-1,Oe.south),Fe=Oe[e],Le=Oe[n],xe=Oe[t]}return u[0]=Fe.x,u[1]=Fe.y,u[2]=Fe.z,u[3]=0,u[4]=Le.x,u[5]=Le.y,u[6]=Le.z,u[7]=0,u[8]=xe.x,u[9]=xe.y,u[10]=xe.z,u[11]=0,u[12]=r.x,u[13]=r.y,u[14]=r.z,u[15]=1,u},wt[i]=o),o};$.eastNorthUpToFixedFrame=$.localFrameToFixedFrameGenerator("east","north");$.northEastDownToFixedFrame=$.localFrameToFixedFrameGenerator("north","east");$.northUpEastToFixedFrame=$.localFrameToFixedFrameGenerator("north","up");$.northWestUpToFixedFrame=$.localFrameToFixedFrameGenerator("north","west");var Hr=new Xe,$r=new g(1,1,1),Yr=new J;$.headingPitchRollToFixedFrame=function(e,n,t,o,i){s.typeOf.object("HeadingPitchRoll",n),o=o??$.eastNorthUpToFixedFrame;let r=Xe.fromHeadingPitchRoll(n,Hr),a=J.fromTranslationQuaternionRotationScale(g.ZERO,r,$r,Yr);return i=o(e,t,i),J.multiply(i,a,i)};var Vr=new J,Xr=new B;$.headingPitchRollQuaternion=function(e,n,t,o,i){s.typeOf.object("HeadingPitchRoll",n);let r=$.headingPitchRollToFixedFrame(e,n,t,o,Vr),a=J.getMatrix3(r,Xr);return Xe.fromRotationMatrix(a,i)};var Zr=new g(1,1,1),Jr=new g,Co=new J,Gr=new J,Kr=new B,ei=new Xe;$.fixedFrameToHeadingPitchRoll=function(e,n,t,o){s.defined("transform",e),n=n??Ie.default,t=t??$.eastNorthUpToFixedFrame,p(o)||(o=new xn);let i=J.getTranslation(e,Jr);if(g.equals(i,g.ZERO))return o.heading=0,o.pitch=0,o.roll=0,o;let r=J.inverseTransformation(t(i,n,Co),Co),a=J.setScale(e,Zr,Gr);a=J.setTranslation(a,g.ZERO,a),r=J.multiply(r,a,r);let u=Xe.fromRotationMatrix(J.getMatrix3(r,Kr),ei);return u=Xe.normalize(u,u),xn.fromQuaternion(u,o)};var ni=6*3600+2460+50.54841,ti=8640184812866e-6,oi=.093104,ri=-62e-7,ii=11772758384668e-32,ci=72921158553e-15,si=R.TWO_PI/86400,Xn=new ue;$.computeIcrfToCentralBodyFixedMatrix=function(e,n){let t=$.computeIcrfToFixedMatrix(e,n);return p(t)||(t=$.computeTemeToPseudoFixedMatrix(e,n)),t};$.computeTemeToPseudoFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");Xn=ue.addSeconds(e,-ue.computeTaiMinusUtc(e),Xn);let t=Xn.dayNumber,o=Xn.secondsOfDay,i,r=t-2451545;o>=43200?i=(r+.5)/ie.DAYS_PER_JULIAN_CENTURY:i=(r-.5)/ie.DAYS_PER_JULIAN_CENTURY;let u=(ni+i*(ti+i*(oi+i*ri)))*si%R.TWO_PI,d=ci+ii*(t-24515455e-1),m=(o+ie.SECONDS_PER_DAY*.5)%ie.SECONDS_PER_DAY,l=u+d*m,w=Math.cos(l),E=Math.sin(l);return p(n)?(n[0]=w,n[1]=-E,n[2]=0,n[3]=E,n[4]=w,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n):new B(w,E,0,-E,w,0,0,0,1)};$.iau2006XysData=new Oo;$.earthOrientationParameters=ho.NONE;var gt=32.184,ai=2451545;$.preloadIcrfFixed=function(e){let n=e.start.dayNumber,t=e.start.secondsOfDay+gt,o=e.stop.dayNumber,i=e.stop.secondsOfDay+gt;return $.iau2006XysData.preload(n,t,o,i)};$.computeIcrfToFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.computeFixedToIcrfMatrix(e,n);if(p(t))return B.transpose(t,n)};var fi=32.184,ui=2451545,Zn=new xn,pi=new B,hi=new ue;$.computeMoonFixedToIcrfMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=ue.addSeconds(e,fi,hi),o=ue.totalDays(t)-ui,i=R.toRadians(12.112)-R.toRadians(.052992)*o,r=R.toRadians(24.224)-R.toRadians(.105984)*o,a=R.toRadians(227.645)+R.toRadians(13.012)*o,u=R.toRadians(261.105)+R.toRadians(13.340716)*o,d=R.toRadians(358)+R.toRadians(.9856)*o;return Zn.pitch=R.toRadians(180)-R.toRadians(3.878)*Math.sin(i)-R.toRadians(.12)*Math.sin(r)+R.toRadians(.07)*Math.sin(a)-R.toRadians(.017)*Math.sin(u),Zn.roll=R.toRadians(66.53-90)+R.toRadians(1.543)*Math.cos(i)+R.toRadians(.24)*Math.cos(r)-R.toRadians(.028)*Math.cos(a)+R.toRadians(.007)*Math.cos(u),Zn.heading=R.toRadians(244.375-90)+R.toRadians(13.17635831)*o+R.toRadians(3.558)*Math.sin(i)+R.toRadians(.121)*Math.sin(r)-R.toRadians(.064)*Math.sin(a)+R.toRadians(.016)*Math.sin(u)+R.toRadians(.025)*Math.sin(d),B.fromHeadingPitchRoll(Zn,pi)};$.computeIcrfToMoonFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.computeMoonFixedToIcrfMatrix(e,n);if(p(t))return B.transpose(t,n)};var di=new Wn(0,0,0),mi=new hn(0,0,0,0,0,0),bt=new B,Ot=new B;$.computeFixedToIcrfMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.earthOrientationParameters.compute(e,mi);if(!p(t))return;let o=e.dayNumber,i=e.secondsOfDay+gt,r=$.iau2006XysData.computeXysRadians(o,i,di);if(!p(r))return;let a=r.x+t.xPoleOffset,u=r.y+t.yPoleOffset,d=1/(1+Math.sqrt(1-a*a-u*u)),m=bt;m[0]=1-d*a*a,m[3]=-d*a*u,m[6]=a,m[1]=-d*a*u,m[4]=1-d*u*u,m[7]=u,m[2]=-a,m[5]=-u,m[8]=1-d*(a*a+u*u);let l=B.fromRotationZ(-r.s,Ot),w=B.multiply(m,l,bt),E=e.dayNumber,T=e.secondsOfDay-ue.computeTaiMinusUtc(e)+t.ut1MinusUtc,M=E-2451545,v=T/ie.SECONDS_PER_DAY,I=.779057273264+v+.00273781191135448*(M+v);I=I%1*R.TWO_PI;let N=B.fromRotationZ(I,Ot),F=B.multiply(w,N,bt),k=Math.cos(t.xPoleWander),x=Math.cos(t.yPoleWander),Q=Math.sin(t.xPoleWander),W=Math.sin(t.yPoleWander),K=o-ai+i/ie.SECONDS_PER_DAY;K/=36525;let oe=-47e-6*K*R.RADIANS_PER_DEGREE/3600,X=Math.cos(oe),te=Math.sin(oe),Z=Ot;return Z[0]=k*X,Z[1]=k*te,Z[2]=Q,Z[3]=-x*te+W*Q*X,Z[4]=x*X+W*Q*te,Z[5]=-W*k,Z[6]=-W*te-x*Q*X,Z[7]=W*X-x*Q*te,Z[8]=x*k,B.multiply(F,Z,n)};var yi=new qe;$.pointToWindowCoordinates=function(e,n,t,o){return o=$.pointToGLWindowCoordinates(e,n,t,o),o.y=2*n[5]-o.y,o};$.pointToGLWindowCoordinates=function(e,n,t,o){if(!p(e))throw new A("modelViewProjectionMatrix is required.");if(!p(n))throw new A("viewportTransformation is required.");if(!p(t))throw new A("point is required.");p(o)||(o=new be);let i=yi;return J.multiplyByVector(e,qe.fromElements(t.x,t.y,t.z,1,i),i),qe.multiplyByScalar(i,1/i.w,i),J.multiplyByVector(n,i,i),be.fromCartesian4(i,o)};var li=new g,wi=new g,bi=new g;$.rotationMatrixFromPositionVelocity=function(e,n,t,o){if(!p(e))throw new A("position is required.");if(!p(n))throw new A("velocity is required.");let i=(t??Ie.default).geodeticSurfaceNormal(e,li),r=g.cross(n,i,wi);g.equalsEpsilon(r,g.ZERO,R.EPSILON6)&&(r=g.clone(g.UNIT_X,r));let a=g.cross(r,n,bi);return g.normalize(a,a),g.cross(n,a,r),g.negate(r,r),g.normalize(r,r),p(o)||(o=new B),o[0]=n.x,o[1]=n.y,o[2]=n.z,o[3]=r.x,o[4]=r.y,o[5]=r.z,o[6]=a.x,o[7]=a.y,o[8]=a.z,o};var vo=new J(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Ao=new Me,_t=new g,Oi=new g,gi=new B,St=new J,jo=new J;$.basisTo2D=function(e,n,t){if(!p(e))throw new A("projection is required.");if(!p(n))throw new A("matrix is required.");if(!p(t))throw new A("result is required.");let o=J.getTranslation(n,Oi),i=e.ellipsoid,r;if(g.equals(o,g.ZERO))r=g.clone(g.ZERO,_t);else{let l=i.cartesianToCartographic(o,Ao);r=e.project(l,_t),g.fromElements(r.z,r.x,r.y,r)}let a=$.eastNorthUpToFixedFrame(o,i,St),u=J.inverseTransformation(a,jo),d=J.getMatrix3(n,gi),m=J.multiplyByMatrix3(u,d,t);return J.multiply(vo,m,t),J.setTranslation(t,r,t),t};$.ellipsoidTo2DModelMatrix=function(e,n,t){if(!p(e))throw new A("projection is required.");if(!p(n))throw new A("center is required.");if(!p(t))throw new A("result is required.");let o=e.ellipsoid,i=$.eastNorthUpToFixedFrame(n,o,St),r=J.inverseTransformation(i,jo),a=o.cartesianToCartographic(n,Ao),u=e.project(a,_t);g.fromElements(u.z,u.x,u.y,u);let d=J.fromTranslation(u,St);return J.multiply(vo,r,t),J.multiply(d,t,t),t};var Mo=$;function L(e,n,t,o){this.west=e??0,this.south=n??0,this.east=t??0,this.north=o??0}Object.defineProperties(L.prototype,{width:{get:function(){return L.computeWidth(this)}},height:{get:function(){return L.computeHeight(this)}}});L.packedLength=4;L.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.west,n[t++]=e.south,n[t++]=e.east,n[t]=e.north,n};L.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new L),t.west=e[n++],t.south=e[n++],t.east=e[n++],t.north=e[n],t};L.computeWidth=function(e){s.typeOf.object("rectangle",e);let n=e.east,t=e.west;return n<t&&(n+=R.TWO_PI),n-t};L.computeHeight=function(e){return s.typeOf.object("rectangle",e),e.north-e.south};L.fromDegrees=function(e,n,t,o,i){return e=R.toRadians(e??0),n=R.toRadians(n??0),t=R.toRadians(t??0),o=R.toRadians(o??0),p(i)?(i.west=e,i.south=n,i.east=t,i.north=o,i):new L(e,n,t,o)};L.fromRadians=function(e,n,t,o,i){return p(i)?(i.west=e??0,i.south=n??0,i.east=t??0,i.north=o??0,i):new L(e,n,t,o)};L.fromCartographicArray=function(e,n){s.defined("cartographics",e);let t=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=Number.MAX_VALUE,u=-Number.MAX_VALUE;for(let d=0,m=e.length;d<m;d++){let l=e[d];t=Math.min(t,l.longitude),o=Math.max(o,l.longitude),a=Math.min(a,l.latitude),u=Math.max(u,l.latitude);let w=l.longitude>=0?l.longitude:l.longitude+R.TWO_PI;i=Math.min(i,w),r=Math.max(r,w)}return o-t>r-i&&(t=i,o=r,o>R.PI&&(o=o-R.TWO_PI),t>R.PI&&(t=t-R.TWO_PI)),p(n)?(n.west=t,n.south=a,n.east=o,n.north=u,n):new L(t,a,o,u)};L.fromCartesianArray=function(e,n,t){s.defined("cartesians",e),n=n??Ie.default;let o=Number.MAX_VALUE,i=-Number.MAX_VALUE,r=Number.MAX_VALUE,a=-Number.MAX_VALUE,u=Number.MAX_VALUE,d=-Number.MAX_VALUE;for(let m=0,l=e.length;m<l;m++){let w=n.cartesianToCartographic(e[m]);o=Math.min(o,w.longitude),i=Math.max(i,w.longitude),u=Math.min(u,w.latitude),d=Math.max(d,w.latitude);let E=w.longitude>=0?w.longitude:w.longitude+R.TWO_PI;r=Math.min(r,E),a=Math.max(a,E)}return i-o>a-r&&(o=r,i=a,i>R.PI&&(i=i-R.TWO_PI),o>R.PI&&(o=o-R.TWO_PI)),p(t)?(t.west=o,t.south=u,t.east=i,t.north=d,t):new L(o,u,i,d)};var _i=new g,Si=new g,Ri=new g,Ei=new g,Ti=new g,Rt=new Array(5);for(let e=0;e<Rt.length;++e)Rt[e]=new g;L.fromBoundingSphere=function(e,n,t){s.typeOf.object("boundingSphere",e);let o=e.center,i=e.radius;if(p(n)||(n=Ie.default),p(t)||(t=new L),g.equals(o,g.ZERO))return L.clone(L.MAX_VALUE,t),t;let r=Mo.eastNorthUpToFixedFrame(o,n,_i),a=J.multiplyByPointAsVector(r,g.UNIT_X,Si);g.normalize(a,a);let u=J.multiplyByPointAsVector(r,g.UNIT_Y,Ri);g.normalize(u,u),g.multiplyByScalar(u,i,u),g.multiplyByScalar(a,i,a);let d=g.negate(u,Ti),m=g.negate(a,Ei),l=Rt,w=l[0];return g.add(o,u,w),w=l[1],g.add(o,m,w),w=l[2],g.add(o,d,w),w=l[3],g.add(o,a,w),l[4]=o,L.fromCartesianArray(l,n,t)};L.clone=function(e,n){if(p(e))return p(n)?(n.west=e.west,n.south=e.south,n.east=e.east,n.north=e.north,n):new L(e.west,e.south,e.east,e.north)};L.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e.west-n.west)<=t&&Math.abs(e.south-n.south)<=t&&Math.abs(e.east-n.east)<=t&&Math.abs(e.north-n.north)<=t};L.prototype.clone=function(e){return L.clone(this,e)};L.prototype.equals=function(e){return L.equals(this,e)};L.equals=function(e,n){return e===n||p(e)&&p(n)&&e.west===n.west&&e.south===n.south&&e.east===n.east&&e.north===n.north};L.prototype.equalsEpsilon=function(e,n){return L.equalsEpsilon(this,e,n)};L._validate=function(e){s.typeOf.object("rectangle",e);let n=e.north;s.typeOf.number.greaterThanOrEquals("north",n,-R.PI_OVER_TWO),s.typeOf.number.lessThanOrEquals("north",n,R.PI_OVER_TWO);let t=e.south;s.typeOf.number.greaterThanOrEquals("south",t,-R.PI_OVER_TWO),s.typeOf.number.lessThanOrEquals("south",t,R.PI_OVER_TWO);let o=e.west;s.typeOf.number.greaterThanOrEquals("west",o,-Math.PI),s.typeOf.number.lessThanOrEquals("west",o,Math.PI);let i=e.east;s.typeOf.number.greaterThanOrEquals("east",i,-Math.PI),s.typeOf.number.lessThanOrEquals("east",i,Math.PI)};L.southwest=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.west,n.latitude=e.south,n.height=0,n):new Me(e.west,e.south)};L.northwest=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.west,n.latitude=e.north,n.height=0,n):new Me(e.west,e.north)};L.northeast=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.east,n.latitude=e.north,n.height=0,n):new Me(e.east,e.north)};L.southeast=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.east,n.latitude=e.south,n.height=0,n):new Me(e.east,e.south)};L.center=function(e,n){s.typeOf.object("rectangle",e);let t=e.east,o=e.west;t<o&&(t+=R.TWO_PI);let i=R.negativePiToPi((o+t)*.5),r=(e.south+e.north)*.5;return p(n)?(n.longitude=i,n.latitude=r,n.height=0,n):new Me(i,r)};L.intersection=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n);let o=e.east,i=e.west,r=n.east,a=n.west;o<i&&r>0?o+=R.TWO_PI:r<a&&o>0&&(r+=R.TWO_PI),o<i&&a<0?a+=R.TWO_PI:r<a&&i<0&&(i+=R.TWO_PI);let u=R.negativePiToPi(Math.max(i,a)),d=R.negativePiToPi(Math.min(o,r));if((e.west<e.east||n.west<n.east)&&d<=u)return;let m=Math.max(e.south,n.south),l=Math.min(e.north,n.north);if(!(m>=l))return p(t)?(t.west=u,t.south=m,t.east=d,t.north=l,t):new L(u,m,d,l)};L.simpleIntersection=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n);let o=Math.max(e.west,n.west),i=Math.max(e.south,n.south),r=Math.min(e.east,n.east),a=Math.min(e.north,n.north);if(!(i>=a||o>=r))return p(t)?(t.west=o,t.south=i,t.east=r,t.north=a,t):new L(o,i,r,a)};L.union=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n),p(t)||(t=new L);let o=e.east,i=e.west,r=n.east,a=n.west;o<i&&r>0?o+=R.TWO_PI:r<a&&o>0&&(r+=R.TWO_PI),o<i&&a<0?a+=R.TWO_PI:r<a&&i<0&&(i+=R.TWO_PI);let u=R.negativePiToPi(Math.min(i,a)),d=R.negativePiToPi(Math.max(o,r));return t.west=u,t.south=Math.min(e.south,n.south),t.east=d,t.north=Math.max(e.north,n.north),t};L.expand=function(e,n,t){return s.typeOf.object("rectangle",e),s.typeOf.object("cartographic",n),p(t)||(t=new L),t.west=Math.min(e.west,n.longitude),t.south=Math.min(e.south,n.latitude),t.east=Math.max(e.east,n.longitude),t.north=Math.max(e.north,n.latitude),t};L.contains=function(e,n){s.typeOf.object("rectangle",e),s.typeOf.object("cartographic",n);let t=n.longitude,o=n.latitude,i=e.west,r=e.east;return r<i&&(r+=R.TWO_PI,t<0&&(t+=R.TWO_PI)),(t>i||R.equalsEpsilon(t,i,R.EPSILON14))&&(t<r||R.equalsEpsilon(t,r,R.EPSILON14))&&o>=e.south&&o<=e.north};var Ci=new Me;L.subsample=function(e,n,t,o){s.typeOf.object("rectangle",e),n=n??Ie.default,t=t??0,p(o)||(o=[]);let i=0,r=e.north,a=e.south,u=e.east,d=e.west,m=Ci;m.height=t,m.longitude=d,m.latitude=r,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=u,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.latitude=a,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=d,o[i]=n.cartographicToCartesian(m,o[i]),i++,r<0?m.latitude=r:a>0?m.latitude=a:m.latitude=0;for(let l=1;l<8;++l)m.longitude=-Math.PI+l*R.PI_OVER_TWO,L.contains(e,m)&&(o[i]=n.cartographicToCartesian(m,o[i]),i++);return m.latitude===0&&(m.longitude=d,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=u,o[i]=n.cartographicToCartesian(m,o[i]),i++),o.length=i,o};L.subsection=function(e,n,t,o,i,r){if(s.typeOf.object("rectangle",e),s.typeOf.number.greaterThanOrEquals("westLerp",n,0),s.typeOf.number.lessThanOrEquals("westLerp",n,1),s.typeOf.number.greaterThanOrEquals("southLerp",t,0),s.typeOf.number.lessThanOrEquals("southLerp",t,1),s.typeOf.number.greaterThanOrEquals("eastLerp",o,0),s.typeOf.number.lessThanOrEquals("eastLerp",o,1),s.typeOf.number.greaterThanOrEquals("northLerp",i,0),s.typeOf.number.lessThanOrEquals("northLerp",i,1),s.typeOf.number.lessThanOrEquals("westLerp",n,o),s.typeOf.number.lessThanOrEquals("southLerp",t,i),p(r)||(r=new L),e.west<=e.east){let u=e.east-e.west;r.west=e.west+n*u,r.east=e.west+o*u}else{let u=R.TWO_PI+e.east-e.west;r.west=R.negativePiToPi(e.west+n*u),r.east=R.negativePiToPi(e.west+o*u)}let a=e.north-e.south;return r.south=e.south+t*a,r.north=e.south+i*a,n===1&&(r.west=e.east),o===1&&(r.east=e.east),t===1&&(r.south=e.north),i===1&&(r.north=e.north),r};L.MAX_VALUE=Object.freeze(new L(-Math.PI,-R.PI_OVER_TWO,Math.PI,R.PI_OVER_TWO));var nf=L;function q(e,n,t,o){this[0]=e??0,this[1]=t??0,this[2]=n??0,this[3]=o??0}q.packedLength=4;q.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n[t++]=e[3],n};q.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new q),t[0]=e[n++],t[1]=e[n++],t[2]=e[n++],t[3]=e[n++],t};q.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*4;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 4 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)q.pack(e[i],n,i*4);return n};q.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,4),e.length%4!==0)throw new A("array length must be a multiple of 4.");let t=e.length;p(n)?n.length=t/4:n=new Array(t/4);for(let o=0;o<t;o+=4){let i=o/4;n[i]=q.unpack(e,o,n[i])}return n};q.clone=function(e,n){if(p(e))return p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n):new q(e[0],e[2],e[1],e[3])};q.fromArray=q.unpack;q.fromColumnMajorArray=function(e,n){return s.defined("values",e),q.clone(e,n)};q.fromRowMajorArray=function(e,n){return s.defined("values",e),p(n)?(n[0]=e[0],n[1]=e[2],n[2]=e[1],n[3]=e[3],n):new q(e[0],e[1],e[2],e[3])};q.fromScale=function(e,n){return s.typeOf.object("scale",e),p(n)?(n[0]=e.x,n[1]=0,n[2]=0,n[3]=e.y,n):new q(e.x,0,0,e.y)};q.fromUniformScale=function(e,n){return s.typeOf.number("scale",e),p(n)?(n[0]=e,n[1]=0,n[2]=0,n[3]=e,n):new q(e,0,0,e)};q.fromRotation=function(e,n){s.typeOf.number("angle",e);let t=Math.cos(e),o=Math.sin(e);return p(n)?(n[0]=t,n[1]=o,n[2]=-o,n[3]=t,n):new q(t,-o,o,t)};q.toArray=function(e,n){return s.typeOf.object("matrix",e),p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n):[e[0],e[1],e[2],e[3]]};q.getElementIndex=function(e,n){return s.typeOf.number.greaterThanOrEquals("row",n,0),s.typeOf.number.lessThanOrEquals("row",n,1),s.typeOf.number.greaterThanOrEquals("column",e,0),s.typeOf.number.lessThanOrEquals("column",e,1),e*2+n};q.getColumn=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("result",t);let o=n*2,i=e[o],r=e[o+1];return t.x=i,t.y=r,t};q.setColumn=function(e,n,t,o){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=q.clone(e,o);let i=n*2;return o[i]=t.x,o[i+1]=t.y,o};q.getRow=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("result",t);let o=e[n],i=e[n+2];return t.x=o,t.y=i,t};q.setRow=function(e,n,t,o){return s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=q.clone(e,o),o[n]=t.x,o[n+2]=t.y,o};var vi=new be;q.setScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=q.getScale(e,vi),i=n.x/o.x,r=n.y/o.y;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*r,t[3]=e[3]*r,t};var Ai=new be;q.setUniformScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t);let o=q.getScale(e,Ai),i=n/o.x,r=n/o.y;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*r,t[3]=e[3]*r,t};var Po=new be;q.getScale=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=be.magnitude(be.fromElements(e[0],e[1],Po)),n.y=be.magnitude(be.fromElements(e[2],e[3],Po)),n};var Uo=new be;q.getMaximumScale=function(e){return q.getScale(e,Uo),be.maximumComponent(Uo)};var ji=new be;q.setRotation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("result",t);let o=q.getScale(e,ji);return t[0]=n[0]*o.x,t[1]=n[1]*o.x,t[2]=n[2]*o.y,t[3]=n[3]*o.y,t};var Mi=new be;q.getRotation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=q.getScale(e,Mi);return n[0]=e[0]/t.x,n[1]=e[1]/t.x,n[2]=e[2]/t.y,n[3]=e[3]/t.y,n};q.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0]*n[0]+e[2]*n[1],i=e[0]*n[2]+e[2]*n[3],r=e[1]*n[0]+e[3]*n[1],a=e[1]*n[2]+e[3]*n[3];return t[0]=o,t[1]=r,t[2]=i,t[3]=a,t};q.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),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};q.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),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};q.multiplyByVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=e[0]*n.x+e[2]*n.y,i=e[1]*n.x+e[3]*n.y;return t.x=o,t.y=i,t};q.multiplyByScalar=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t};q.multiplyByScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n.x,t[1]=e[1]*n.x,t[2]=e[2]*n.y,t[3]=e[3]*n.y,t};q.multiplyByUniformScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t};q.negate=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n[3]=-e[3],n};q.transpose=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[2],i=e[1],r=e[3];return n[0]=t,n[1]=o,n[2]=i,n[3]=r,n};q.abs=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=Math.abs(e[0]),n[1]=Math.abs(e[1]),n[2]=Math.abs(e[2]),n[3]=Math.abs(e[3]),n};q.equals=function(e,n){return e===n||p(e)&&p(n)&&e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]&&e[3]===n[3]};q.equalsArray=function(e,n,t){return e[0]===n[t]&&e[1]===n[t+1]&&e[2]===n[t+2]&&e[3]===n[t+3]};q.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e[0]-n[0])<=t&&Math.abs(e[1]-n[1])<=t&&Math.abs(e[2]-n[2])<=t&&Math.abs(e[3]-n[3])<=t};q.IDENTITY=Object.freeze(new q(1,0,0,1));q.ZERO=Object.freeze(new q(0,0,0,0));q.COLUMN0ROW0=0;q.COLUMN0ROW1=1;q.COLUMN1ROW0=2;q.COLUMN1ROW1=3;Object.defineProperties(q.prototype,{length:{get:function(){return q.packedLength}}});q.prototype.clone=function(e){return q.clone(this,e)};q.prototype.equals=function(e){return q.equals(this,e)};q.prototype.equalsEpsilon=function(e,n){return q.equalsEpsilon(this,e,n)};q.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var af=q;export{qe as a,J as b,De as c,ke as d,bo as e,Xe as f,Mo as g,nf as h,af as i}; diff --git a/public/Cesium/Workers/chunk-QN3VOORQ.js b/public/Cesium/Workers/chunk-QN3VOORQ.js new file mode 100644 index 000000000..16f2a96e9 --- /dev/null +++ b/public/Cesium/Workers/chunk-QN3VOORQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as b}from"./chunk-GBYLG25F.js";import{a as u}from"./chunk-CYCB63OH.js";import{a as O}from"./chunk-A56XVLQR.js";import{b as w,c as h,d as y}from"./chunk-RCV6KWXS.js";import{d as l}from"./chunk-4IW2T6GF.js";import{a as p}from"./chunk-AU7IKHOH.js";import{a as i,f as A}from"./chunk-64RSHJUE.js";import{a as d,b as c}from"./chunk-LEYMRMBK.js";import{e as x}from"./chunk-VTAIKJXX.js";var D=new i;function f(r){r=r??A.EMPTY_OBJECT;let o=r.minimum,m=r.maximum;if(c.typeOf.object("min",o),c.typeOf.object("max",m),x(r.offsetAttribute)&&r.offsetAttribute===b.TOP)throw new d("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");let a=r.vertexFormat??u.DEFAULT;this._minimum=i.clone(o),this._maximum=i.clone(m),this._vertexFormat=a,this._offsetAttribute=r.offsetAttribute,this._workerName="createBoxGeometry"}f.fromDimensions=function(r){r=r??A.EMPTY_OBJECT;let o=r.dimensions;c.typeOf.object("dimensions",o),c.typeOf.number.greaterThanOrEquals("dimensions.x",o.x,0),c.typeOf.number.greaterThanOrEquals("dimensions.y",o.y,0),c.typeOf.number.greaterThanOrEquals("dimensions.z",o.z,0);let m=i.multiplyByScalar(o,.5,new i);return new f({minimum:i.negate(m,new i),maximum:m,vertexFormat:r.vertexFormat,offsetAttribute:r.offsetAttribute})};f.fromAxisAlignedBoundingBox=function(r){return c.typeOf.object("boundingBox",r),new f({minimum:r.minimum,maximum:r.maximum})};f.packedLength=2*i.packedLength+u.packedLength+1;f.pack=function(r,o,m){return c.typeOf.object("value",r),c.defined("array",o),m=m??0,i.pack(r._minimum,o,m),i.pack(r._maximum,o,m+i.packedLength),u.pack(r._vertexFormat,o,m+2*i.packedLength),o[m+2*i.packedLength+u.packedLength]=r._offsetAttribute??-1,o};var _=new i,g=new i,k=new u,F={minimum:_,maximum:g,vertexFormat:k,offsetAttribute:void 0};f.unpack=function(r,o,m){c.defined("array",r),o=o??0;let a=i.unpack(r,o,_),s=i.unpack(r,o+i.packedLength,g),n=u.unpack(r,o+2*i.packedLength,k),e=r[o+2*i.packedLength+u.packedLength];return x(m)?(m._minimum=i.clone(a,m._minimum),m._maximum=i.clone(s,m._maximum),m._vertexFormat=u.clone(n,m._vertexFormat),m._offsetAttribute=e===-1?void 0:e,m):(F.offsetAttribute=e===-1?void 0:e,new f(F))};f.createGeometry=function(r){let o=r._minimum,m=r._maximum,a=r._vertexFormat;if(i.equals(o,m))return;let s=new O,n,e;if(a.position&&(a.st||a.normal||a.tangent||a.bitangent)){if(a.position&&(e=new Float64Array(72),e[0]=o.x,e[1]=o.y,e[2]=m.z,e[3]=m.x,e[4]=o.y,e[5]=m.z,e[6]=m.x,e[7]=m.y,e[8]=m.z,e[9]=o.x,e[10]=m.y,e[11]=m.z,e[12]=o.x,e[13]=o.y,e[14]=o.z,e[15]=m.x,e[16]=o.y,e[17]=o.z,e[18]=m.x,e[19]=m.y,e[20]=o.z,e[21]=o.x,e[22]=m.y,e[23]=o.z,e[24]=m.x,e[25]=o.y,e[26]=o.z,e[27]=m.x,e[28]=m.y,e[29]=o.z,e[30]=m.x,e[31]=m.y,e[32]=m.z,e[33]=m.x,e[34]=o.y,e[35]=m.z,e[36]=o.x,e[37]=o.y,e[38]=o.z,e[39]=o.x,e[40]=m.y,e[41]=o.z,e[42]=o.x,e[43]=m.y,e[44]=m.z,e[45]=o.x,e[46]=o.y,e[47]=m.z,e[48]=o.x,e[49]=m.y,e[50]=o.z,e[51]=m.x,e[52]=m.y,e[53]=o.z,e[54]=m.x,e[55]=m.y,e[56]=m.z,e[57]=o.x,e[58]=m.y,e[59]=m.z,e[60]=o.x,e[61]=o.y,e[62]=o.z,e[63]=m.x,e[64]=o.y,e[65]=o.z,e[66]=m.x,e[67]=o.y,e[68]=m.z,e[69]=o.x,e[70]=o.y,e[71]=m.z,s.position=new y({componentDatatype:p.DOUBLE,componentsPerAttribute:3,values:e})),a.normal){let t=new Float32Array(72);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=1,t[9]=0,t[10]=0,t[11]=1,t[12]=0,t[13]=0,t[14]=-1,t[15]=0,t[16]=0,t[17]=-1,t[18]=0,t[19]=0,t[20]=-1,t[21]=0,t[22]=0,t[23]=-1,t[24]=1,t[25]=0,t[26]=0,t[27]=1,t[28]=0,t[29]=0,t[30]=1,t[31]=0,t[32]=0,t[33]=1,t[34]=0,t[35]=0,t[36]=-1,t[37]=0,t[38]=0,t[39]=-1,t[40]=0,t[41]=0,t[42]=-1,t[43]=0,t[44]=0,t[45]=-1,t[46]=0,t[47]=0,t[48]=0,t[49]=1,t[50]=0,t[51]=0,t[52]=1,t[53]=0,t[54]=0,t[55]=1,t[56]=0,t[57]=0,t[58]=1,t[59]=0,t[60]=0,t[61]=-1,t[62]=0,t[63]=0,t[64]=-1,t[65]=0,t[66]=0,t[67]=-1,t[68]=0,t[69]=0,t[70]=-1,t[71]=0,s.normal=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}if(a.st){let t=new Float32Array(48);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=1,t[5]=1,t[6]=0,t[7]=1,t[8]=1,t[9]=0,t[10]=0,t[11]=0,t[12]=0,t[13]=1,t[14]=1,t[15]=1,t[16]=0,t[17]=0,t[18]=1,t[19]=0,t[20]=1,t[21]=1,t[22]=0,t[23]=1,t[24]=1,t[25]=0,t[26]=0,t[27]=0,t[28]=0,t[29]=1,t[30]=1,t[31]=1,t[32]=1,t[33]=0,t[34]=0,t[35]=0,t[36]=0,t[37]=1,t[38]=1,t[39]=1,t[40]=0,t[41]=0,t[42]=1,t[43]=0,t[44]=1,t[45]=1,t[46]=0,t[47]=1,s.st=new y({componentDatatype:p.FLOAT,componentsPerAttribute:2,values:t})}if(a.tangent){let t=new Float32Array(72);t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=1,t[7]=0,t[8]=0,t[9]=1,t[10]=0,t[11]=0,t[12]=-1,t[13]=0,t[14]=0,t[15]=-1,t[16]=0,t[17]=0,t[18]=-1,t[19]=0,t[20]=0,t[21]=-1,t[22]=0,t[23]=0,t[24]=0,t[25]=1,t[26]=0,t[27]=0,t[28]=1,t[29]=0,t[30]=0,t[31]=1,t[32]=0,t[33]=0,t[34]=1,t[35]=0,t[36]=0,t[37]=-1,t[38]=0,t[39]=0,t[40]=-1,t[41]=0,t[42]=0,t[43]=-1,t[44]=0,t[45]=0,t[46]=-1,t[47]=0,t[48]=-1,t[49]=0,t[50]=0,t[51]=-1,t[52]=0,t[53]=0,t[54]=-1,t[55]=0,t[56]=0,t[57]=-1,t[58]=0,t[59]=0,t[60]=1,t[61]=0,t[62]=0,t[63]=1,t[64]=0,t[65]=0,t[66]=1,t[67]=0,t[68]=0,t[69]=1,t[70]=0,t[71]=0,s.tangent=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}if(a.bitangent){let t=new Float32Array(72);t[0]=0,t[1]=1,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=1,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=1,t[14]=0,t[15]=0,t[16]=1,t[17]=0,t[18]=0,t[19]=1,t[20]=0,t[21]=0,t[22]=1,t[23]=0,t[24]=0,t[25]=0,t[26]=1,t[27]=0,t[28]=0,t[29]=1,t[30]=0,t[31]=0,t[32]=1,t[33]=0,t[34]=0,t[35]=1,t[36]=0,t[37]=0,t[38]=1,t[39]=0,t[40]=0,t[41]=1,t[42]=0,t[43]=0,t[44]=1,t[45]=0,t[46]=0,t[47]=1,t[48]=0,t[49]=0,t[50]=1,t[51]=0,t[52]=0,t[53]=1,t[54]=0,t[55]=0,t[56]=1,t[57]=0,t[58]=0,t[59]=1,t[60]=0,t[61]=0,t[62]=1,t[63]=0,t[64]=0,t[65]=1,t[66]=0,t[67]=0,t[68]=1,t[69]=0,t[70]=0,t[71]=1,s.bitangent=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}n=new Uint16Array(36),n[0]=0,n[1]=1,n[2]=2,n[3]=0,n[4]=2,n[5]=3,n[6]=6,n[7]=5,n[8]=4,n[9]=7,n[10]=6,n[11]=4,n[12]=8,n[13]=9,n[14]=10,n[15]=8,n[16]=10,n[17]=11,n[18]=14,n[19]=13,n[20]=12,n[21]=15,n[22]=14,n[23]=12,n[24]=18,n[25]=17,n[26]=16,n[27]=19,n[28]=18,n[29]=16,n[30]=20,n[31]=21,n[32]=22,n[33]=20,n[34]=22,n[35]=23}else e=new Float64Array(24),e[0]=o.x,e[1]=o.y,e[2]=o.z,e[3]=m.x,e[4]=o.y,e[5]=o.z,e[6]=m.x,e[7]=m.y,e[8]=o.z,e[9]=o.x,e[10]=m.y,e[11]=o.z,e[12]=o.x,e[13]=o.y,e[14]=m.z,e[15]=m.x,e[16]=o.y,e[17]=m.z,e[18]=m.x,e[19]=m.y,e[20]=m.z,e[21]=o.x,e[22]=m.y,e[23]=m.z,s.position=new y({componentDatatype:p.DOUBLE,componentsPerAttribute:3,values:e}),n=new Uint16Array(36),n[0]=4,n[1]=5,n[2]=6,n[3]=4,n[4]=6,n[5]=7,n[6]=1,n[7]=0,n[8]=3,n[9]=1,n[10]=3,n[11]=2,n[12]=1,n[13]=6,n[14]=5,n[15]=1,n[16]=2,n[17]=6,n[18]=2,n[19]=3,n[20]=7,n[21]=2,n[22]=7,n[23]=6,n[24]=3,n[25]=0,n[26]=4,n[27]=3,n[28]=4,n[29]=7,n[30]=0,n[31]=1,n[32]=5,n[33]=0,n[34]=5,n[35]=4;let v=i.subtract(m,o,D),L=i.magnitude(v)*.5;if(x(r._offsetAttribute)){let t=e.length,T=r._offsetAttribute===b.NONE?0:1,E=new Uint8Array(t/3).fill(T);s.applyOffset=new y({componentDatatype:p.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}return new h({attributes:s,indices:n,primitiveType:w.TRIANGLES,boundingSphere:new l(i.ZERO,L),offsetAttribute:r._offsetAttribute})};var z;f.getUnitBox=function(){return x(z)||(z=f.createGeometry(f.fromDimensions({dimensions:new i(1,1,1),vertexFormat:u.POSITION_ONLY}))),z};var R=f;export{R as a}; diff --git a/public/Cesium/Workers/chunk-QOUAJ6TL.js b/public/Cesium/Workers/chunk-QOUAJ6TL.js new file mode 100644 index 000000000..e66d67fcb --- /dev/null +++ b/public/Cesium/Workers/chunk-QOUAJ6TL.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as c}from"./chunk-64RSHJUE.js";import{b as t}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";function f(){this.high=c.clone(c.ZERO),this.low=c.clone(c.ZERO)}f.encode=function(n,o){t.typeOf.number("value",n),g(o)||(o={high:0,low:0});let h;return n>=0?(h=Math.floor(n/65536)*65536,o.high=h,o.low=n-h):(h=Math.floor(-n/65536)*65536,o.high=-h,o.low=n+h),o};var e={high:0,low:0};f.fromCartesian=function(n,o){t.typeOf.object("cartesian",n),g(o)||(o=new f);let h=o.high,i=o.low;return f.encode(n.x,e),h.x=e.high,i.x=e.low,f.encode(n.y,e),h.y=e.high,i.y=e.low,f.encode(n.z,e),h.z=e.high,i.z=e.low,o};var m=new f;f.writeElements=function(n,o,h){t.defined("cartesianArray",o),t.typeOf.number("index",h),t.typeOf.number.greaterThanOrEquals("index",h,0),f.fromCartesian(n,m);let i=m.high,w=m.low;o[h]=i.x,o[h+1]=i.y,o[h+2]=i.z,o[h+3]=w.x,o[h+4]=w.y,o[h+5]=w.z};var O=f;export{O as a}; diff --git a/public/Cesium/Workers/chunk-RCV6KWXS.js b/public/Cesium/Workers/chunk-RCV6KWXS.js new file mode 100644 index 000000000..588dc2fc5 --- /dev/null +++ b/public/Cesium/Workers/chunk-RCV6KWXS.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as E,f as O,g as R,h as G,i as L}from"./chunk-PSPPBZWI.js";import{a as S,b as N,c as s,e as y,f as A}from"./chunk-64RSHJUE.js";import{a as u}from"./chunk-OSW76XDF.js";import{a as I,b as w}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var U={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},F=Object.freeze(U);var r={POINTS:u.POINTS,LINES:u.LINES,LINE_LOOP:u.LINE_LOOP,LINE_STRIP:u.LINE_STRIP,TRIANGLES:u.TRIANGLES,TRIANGLE_STRIP:u.TRIANGLE_STRIP,TRIANGLE_FAN:u.TRIANGLE_FAN};r.isLines=function(t){return t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP};r.isTriangles=function(t){return t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN};r.validate=function(t){return t===r.POINTS||t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP||t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN};var M=Object.freeze(r);function _(t){t=t??A.EMPTY_OBJECT,w.typeOf.object("options.attributes",t.attributes),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=t.primitiveType??M.TRIANGLES,this.boundingSphere=t.boundingSphere,this.geometryType=t.geometryType??F.NONE,this.boundingSphereCV=t.boundingSphereCV,this.offsetAttribute=t.offsetAttribute}_.computeNumberOfVertices=function(t){w.typeOf.object("geometry",t);let c=-1;for(let a in t.attributes)if(t.attributes.hasOwnProperty(a)&&f(t.attributes[a])&&f(t.attributes[a].values)){let o=t.attributes[a],e=o.values.length/o.componentsPerAttribute;if(c!==e&&c!==-1)throw new I("All attribute lists must have the same number of attributes.");c=e}return c};var W=new N,H=new S,g=new E,Z=[new N,new N,new N],K=[new s,new s,new s],$=[new s,new s,new s],tt=new S,et=new O,rt=new E,nt=new L;_._textureCoordinateRotationPoints=function(t,c,a,o){let e,V=G.center(o,W),D=N.toCartesian(V,a,H),Y=R.eastNorthUpToFixedFrame(D,a,g),C=E.inverse(Y,g),b=K,m=Z;m[0].longitude=o.west,m[0].latitude=o.south,m[1].longitude=o.west,m[1].latitude=o.north,m[2].longitude=o.east,m[2].latitude=o.south;let n=tt;for(e=0;e<3;e++)N.toCartesian(m[e],a,n),n=E.multiplyByPointAsVector(C,n,n),b[e].x=n.x,b[e].y=n.y;let z=O.fromAxisAngle(S.UNIT_Z,-c,et),B=y.fromQuaternion(z,rt),v=t.length,T=Number.POSITIVE_INFINITY,p=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(e=0;e<v;e++)n=E.multiplyByPointAsVector(C,t[e],n),n=y.multiplyByVector(B,n,n),T=Math.min(T,n.x),p=Math.min(p,n.y),x=Math.max(x,n.x),d=Math.max(d,n.y);let j=L.fromRotation(c,nt),i=$;i[0].x=T,i[0].y=p,i[1].x=T,i[1].y=d,i[2].x=x,i[2].y=p;let l=b[0],k=b[2].x-l.x,X=b[1].y-l.y;for(e=0;e<3;e++){let h=i[e];L.multiplyByVector(j,h,h),h.x=(h.x-l.x)/k,h.y=(h.y-l.y)/X}let q=i[0],J=i[1],Q=i[2],P=new Array(6);return s.pack(q,P),s.pack(J,P,2),s.pack(Q,P,4),P};var Lt=_;function ot(t){if(t=t??A.EMPTY_OBJECT,!f(t.componentDatatype))throw new I("options.componentDatatype is required.");if(!f(t.componentsPerAttribute))throw new I("options.componentsPerAttribute is required.");if(t.componentsPerAttribute<1||t.componentsPerAttribute>4)throw new I("options.componentsPerAttribute must be between 1 and 4.");if(!f(t.values))throw new I("options.values is required.");this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=t.normalize??!1,this.values=t.values}var Ot=ot;export{F as a,M as b,Lt as c,Ot as d}; diff --git a/public/Cesium/Workers/chunk-TCGIRNHN.js b/public/Cesium/Workers/chunk-TCGIRNHN.js new file mode 100644 index 000000000..f10ec5f52 --- /dev/null +++ b/public/Cesium/Workers/chunk-TCGIRNHN.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as P}from"./chunk-N4VJKXZS.js";import{a as u,b as d}from"./chunk-DMEY62ID.js";import{a as j}from"./chunk-HTFSEEMT.js";import{a as _,b as h,g as A}from"./chunk-PSPPBZWI.js";import{a as e,c as l,d as g}from"./chunk-64RSHJUE.js";import{a as y,b as p}from"./chunk-LEYMRMBK.js";import{e as r}from"./chunk-VTAIKJXX.js";var x=new _;function s(n,t){if(p.defined("origin",n),t=t??g.default,n=t.scaleToGeodeticSurface(n),!r(n))throw new y("origin must not be at the center of the ellipsoid.");let o=A.eastNorthUpToFixedFrame(n,t);this._ellipsoid=t,this._origin=n,this._xAxis=e.fromCartesian4(h.getColumn(o,0,x)),this._yAxis=e.fromCartesian4(h.getColumn(o,1,x));let i=e.fromCartesian4(h.getColumn(o,2,x));this._plane=j.fromPointNormal(n,i)}Object.defineProperties(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var w=new P;s.fromPoints=function(n,t){p.defined("cartesians",n);let o=P.fromPoints(n,w);return new s(o.center,t)};var O=new u,m=new e;s.prototype.projectPointOntoPlane=function(n,t){p.defined("cartesian",n);let o=O;o.origin=n,e.normalize(n,o.direction);let i=d.rayPlane(o,this._plane,m);if(r(i)||(e.negate(o.direction,o.direction),i=d.rayPlane(o,this._plane,m)),r(i)){let c=e.subtract(i,this._origin,i),a=e.dot(this._xAxis,c),f=e.dot(this._yAxis,c);return r(t)?(t.x=a,t.y=f,t):new l(a,f)}};s.prototype.projectPointsOntoPlane=function(n,t){p.defined("cartesians",n),r(t)||(t=[]);let o=0,i=n.length;for(let c=0;c<i;c++){let a=this.projectPointOntoPlane(n[c],t[o]);r(a)&&(t[o]=a,o++)}return t.length=o,t};s.prototype.projectPointToNearestOnPlane=function(n,t){p.defined("cartesian",n),r(t)||(t=new l);let o=O;o.origin=n,e.clone(this._plane.normal,o.direction);let i=d.rayPlane(o,this._plane,m);r(i)||(e.negate(o.direction,o.direction),i=d.rayPlane(o,this._plane,m));let c=e.subtract(i,this._origin,i),a=e.dot(this._xAxis,c),f=e.dot(this._yAxis,c);return t.x=a,t.y=f,t};s.prototype.projectPointsToNearestOnPlane=function(n,t){p.defined("cartesians",n),r(t)||(t=[]);let o=n.length;t.length=o;for(let i=0;i<o;i++)t[i]=this.projectPointToNearestOnPlane(n[i],t[i]);return t};var C=new e;s.prototype.projectPointOntoEllipsoid=function(n,t){p.defined("cartesian",n),r(t)||(t=new e);let o=this._ellipsoid,i=this._origin,c=this._xAxis,a=this._yAxis,f=C;return e.multiplyByScalar(c,n.x,f),t=e.add(i,f,t),e.multiplyByScalar(a,n.y,f),e.add(t,f,t),o.scaleToGeocentricSurface(t,t),t};s.prototype.projectPointsOntoEllipsoid=function(n,t){p.defined("cartesians",n);let o=n.length;r(t)?t.length=o:t=new Array(o);for(let i=0;i<o;++i)t[i]=this.projectPointOntoEllipsoid(n[i],t[i]);return t};var D=s;export{D as a}; diff --git a/public/Cesium/Workers/chunk-U4IEOH5K.js b/public/Cesium/Workers/chunk-U4IEOH5K.js new file mode 100644 index 000000000..61c5d9eba --- /dev/null +++ b/public/Cesium/Workers/chunk-U4IEOH5K.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as y,b as P,d as B}from"./chunk-64RSHJUE.js";import{a as L}from"./chunk-3SSKC3VN.js";import{b as q}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";function X(n){let a=n._uSquared,t=n._ellipsoid.maximumRadius,e=n._ellipsoid.minimumRadius,f=(t-e)/t,m=Math.cos(n._startHeading),_=Math.sin(n._startHeading),r=(1-f)*Math.tan(n._start.latitude),p=1/Math.sqrt(1+r*r),R=p*r,M=Math.atan2(r,m),l=p*_,U=l*l,i=1-U,A=Math.sqrt(i),c=a/4,o=c*c,h=o*c,S=o*o,u=1+c-3*o/4+5*h/4-175*S/64,C=1-c+15*o/8-35*h/8,d=1-3*c+35*o/4,g=1-5*c,w=u*M-C*Math.sin(2*M)*c/2-d*Math.sin(4*M)*o/16-g*Math.sin(6*M)*h/48-Math.sin(8*M)*5*S/512,s=n._constants;s.a=t,s.b=e,s.f=f,s.cosineHeading=m,s.sineHeading=_,s.tanU=r,s.cosineU=p,s.sineU=R,s.sigma=M,s.sineAlpha=l,s.sineSquaredAlpha=U,s.cosineSquaredAlpha=i,s.cosineAlpha=A,s.u2Over4=c,s.u4Over16=o,s.u6Over64=h,s.u8Over256=S,s.a0=u,s.a1=C,s.a2=d,s.a3=g,s.distanceRatio=w}function Y(n,a){return n*a*(4+n*(4-3*a))/16}function k(n,a,t,e,f,m,_){let r=Y(n,t);return(1-r)*n*a*(e+r*f*(_+r*m*(2*_*_-1)))}function Z(n,a,t,e,f,m,_){let r=(a-t)/a,p=m-e,R=Math.atan((1-r)*Math.tan(f)),M=Math.atan((1-r)*Math.tan(_)),l=Math.cos(R),U=Math.sin(R),i=Math.cos(M),A=Math.sin(M),c=l*i,o=l*A,h=U*A,S=U*i,u=p,C=L.TWO_PI,d=Math.cos(u),g=Math.sin(u),w,s,O,H,b;do{d=Math.cos(u),g=Math.sin(u);let z=o-S*d;O=Math.sqrt(i*i*g*g+z*z),s=h+c*d,w=Math.atan2(O,s);let D;O===0?(D=0,H=1):(D=c*g/O,H=1-D*D),C=u,b=s-2*h/H,isFinite(b)||(b=0),u=p+k(r,D,H,w,O,s,b)}while(Math.abs(u-C)>L.EPSILON12);let v=H*(a*a-t*t)/(t*t),W=1+v*(4096+v*(v*(320-175*v)-768))/16384,I=v*(256+v*(v*(74-47*v)-128))/1024,F=b*b,J=I*O*(b+I*(s*(2*F-1)-I*b*(4*O*O-3)*(4*F-3)/6)/4),K=t*W*(w-J),Q=Math.atan2(i*g,o-S*d),V=Math.atan2(l*g,o*d-S);n._distance=K,n._startHeading=Q,n._endHeading=V,n._uSquared=v}var $=new y,x=new y;function N(n,a,t,e){let f=y.normalize(e.cartographicToCartesian(a,x),$),m=y.normalize(e.cartographicToCartesian(t,x),x);q.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(y.angleBetween(f,m))-Math.PI),.0125),Z(n,e.maximumRadius,e.minimumRadius,a.longitude,a.latitude,t.longitude,t.latitude),n._start=P.clone(a,n._start),n._end=P.clone(t,n._end),n._start.height=0,n._end.height=0,X(n)}function E(n,a,t){let e=t??B.default;this._ellipsoid=e,this._start=new P,this._end=new P,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,T(n)&&T(a)&&N(this,n,a,e)}Object.defineProperties(E.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return q.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return q.defined("distance",this._distance),this._startHeading}},endHeading:{get:function(){return q.defined("distance",this._distance),this._endHeading}}});E.prototype.setEndPoints=function(n,a){q.defined("start",n),q.defined("end",a),N(this,n,a,this._ellipsoid)};E.prototype.interpolateUsingFraction=function(n,a){return this.interpolateUsingSurfaceDistance(this._distance*n,a)};E.prototype.interpolateUsingSurfaceDistance=function(n,a){q.defined("distance",this._distance);let t=this._constants,e=t.distanceRatio+n/t.b,f=Math.cos(2*e),m=Math.cos(4*e),_=Math.cos(6*e),r=Math.sin(2*e),p=Math.sin(4*e),R=Math.sin(6*e),M=Math.sin(8*e),l=e*e,U=e*l,i=t.u8Over256,A=t.u2Over4,c=t.u6Over64,o=t.u4Over16,h=2*U*i*f/3+e*(1-A+7*o/4-15*c/4+579*i/64-(o-15*c/4+187*i/16)*f-(5*c/4-115*i/16)*m-29*i*_/16)+(A/2-o+71*c/32-85*i/16)*r+(5*o/16-5*c/4+383*i/96)*p-l*((c-11*i/2)*r+5*i*p/2)+(29*c/96-29*i/16)*R+539*i*M/1536,S=Math.asin(Math.sin(h)*t.cosineAlpha),u=Math.atan(t.a/t.b*Math.tan(S));h=h-t.sigma;let C=Math.cos(2*t.sigma+h),d=Math.sin(h),g=Math.cos(h),w=t.cosineU*g,s=t.sineU*d,H=Math.atan2(d*t.sineHeading,w-s*t.cosineHeading)-k(t.f,t.sineAlpha,t.cosineSquaredAlpha,h,d,g,C);return T(a)?(a.longitude=this._start.longitude+H,a.latitude=u,a.height=0,a):new P(this._start.longitude+H,u,0)};var et=E;export{et as a}; diff --git a/public/Cesium/Workers/chunk-UP6I5URU.js b/public/Cesium/Workers/chunk-UP6I5URU.js new file mode 100644 index 000000000..1b33e590b --- /dev/null +++ b/public/Cesium/Workers/chunk-UP6I5URU.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as C}from"./chunk-PSPPBZWI.js";import{a as n,e as b}from"./chunk-64RSHJUE.js";import{a as w}from"./chunk-3SSKC3VN.js";var j={},q=new n,L=new n,Q=new C,G=new b;function W(m,O,p,S,g,_,d,f,M,s){let a=m+O;n.multiplyByScalar(S,Math.cos(a),q),n.multiplyByScalar(p,Math.sin(a),L),n.add(q,L,q);let u=Math.cos(m);u=u*u;let l=Math.sin(m);l=l*l;let h=_/Math.sqrt(d*u+g*l)/f;return C.fromAxisAngle(q,h,Q),b.fromQuaternion(Q,G),b.multiplyByVector(G,M,s),n.normalize(s,s),n.multiplyByScalar(s,f,s),s}var U=new n,Z=new n,N=new n,v=new n;j.raisePositionsToHeight=function(m,O,p){let S=O.ellipsoid,g=O.height,_=O.extrudedHeight,d=p?m.length/3*2:m.length/3,f=new Float64Array(d*3),M=m.length,s=p?M:0;for(let a=0;a<M;a+=3){let u=a+1,l=a+2,r=n.fromArray(m,a,U);S.scaleToGeodeticSurface(r,r);let h=n.clone(r,Z),x=S.geodeticSurfaceNormal(r,v),P=n.multiplyByScalar(x,g,N);n.add(r,P,r),p&&(n.multiplyByScalar(x,_,P),n.add(h,P,h),f[a+s]=h.x,f[u+s]=h.y,f[l+s]=h.z),f[a]=r.x,f[u]=r.y,f[l]=r.z}return f};var D=new n,J=new n,K=new n;j.computeEllipsePositions=function(m,O,p){let S=m.semiMinorAxis,g=m.semiMajorAxis,_=m.rotation,d=m.center,f=m.granularity*8,M=S*S,s=g*g,a=g*S,u=n.magnitude(d),l=n.normalize(d,D),r=n.cross(n.UNIT_Z,d,J);r=n.normalize(r,r);let h=n.cross(l,r,K),x=1+Math.ceil(w.PI_OVER_TWO/f),P=w.PI_OVER_TWO/(x-1),y=w.PI_OVER_TWO-x*P;y<0&&(x-=Math.ceil(Math.abs(y)/P));let k=2*(x*(x+2)),e=O?new Array(k*3):void 0,o=0,t=U,i=Z,H=x*4*3,z=H-1,A=0,c=p?new Array(H):void 0,I,T,R,E,V;for(y=w.PI_OVER_TWO,t=W(y,_,h,r,M,a,s,u,l,t),O&&(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z),p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x),y=w.PI_OVER_TWO-P,I=1;I<x+1;++I){if(t=W(y,_,h,r,M,a,s,u,l,t),i=W(Math.PI-y,_,h,r,M,a,s,u,l,i),O){for(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,R=2*I+2,T=1;T<R-1;++T)E=T/(R-1),V=n.lerp(t,i,E,N),e[o++]=V.x,e[o++]=V.y,e[o++]=V.z;e[o++]=i.x,e[o++]=i.y,e[o++]=i.z}p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,c[A++]=i.x,c[A++]=i.y,c[A++]=i.z),y=w.PI_OVER_TWO-(I+1)*P}for(I=x;I>1;--I){if(y=w.PI_OVER_TWO-(I-1)*P,t=W(-y,_,h,r,M,a,s,u,l,t),i=W(y+Math.PI,_,h,r,M,a,s,u,l,i),O){for(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,R=2*(I-1)+2,T=1;T<R-1;++T)E=T/(R-1),V=n.lerp(t,i,E,N),e[o++]=V.x,e[o++]=V.y,e[o++]=V.z;e[o++]=i.x,e[o++]=i.y,e[o++]=i.z}p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,c[A++]=i.x,c[A++]=i.y,c[A++]=i.z)}y=w.PI_OVER_TWO,t=W(-y,_,h,r,M,a,s,u,l,t);let B={};return O&&(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,B.positions=e,B.numPts=x),p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,B.outerPositions=c),B};var tt=j;export{tt as a}; diff --git a/public/Cesium/Workers/chunk-VTAIKJXX.js b/public/Cesium/Workers/chunk-VTAIKJXX.js new file mode 100644 index 000000000..b367d206c --- /dev/null +++ b/public/Cesium/Workers/chunk-VTAIKJXX.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var i=Object.create;var u=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var o=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty;var a=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,d)=>(typeof require<"u"?require:e)[d]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')}),b=n=>e=>{var d=n[e];if(d)return d();throw new Error("Module not found in bundle: "+e)};var g=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var p=(n,e,d,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of l(e))!c.call(n,f)&&f!==d&&u(n,f,{get:()=>e[f],enumerable:!(t=r(e,f))||t.enumerable});return n};var h=(n,e,d)=>(d=n!=null?i(o(n)):{},p(e||!n||!n.__esModule?u(d,"default",{value:n,enumerable:!0}):d,n));function x(n){return n!=null}var k=x;export{a,b,g as c,h as d,k as e}; diff --git a/public/Cesium/Workers/chunk-VTBDSFTG.js b/public/Cesium/Workers/chunk-VTBDSFTG.js new file mode 100644 index 000000000..547880dd5 --- /dev/null +++ b/public/Cesium/Workers/chunk-VTBDSFTG.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as U}from"./chunk-DQQ63PYM.js";import{a as b}from"./chunk-VW6VD53G.js";import{a as E}from"./chunk-OFUUQVMR.js";import{a as z}from"./chunk-A56XVLQR.js";import{c as B,d as D}from"./chunk-RCV6KWXS.js";import{a as V,d as y}from"./chunk-4IW2T6GF.js";import{b as G}from"./chunk-PSPPBZWI.js";import{a as k}from"./chunk-AU7IKHOH.js";import{d as F}from"./chunk-64RSHJUE.js";import{a as M,b as I}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function v(e,n,t){e=e??0,n=n??0,t=t??0,this.value=new Float32Array([e,n,t])}Object.defineProperties(v.prototype,{componentDatatype:{get:function(){return k.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});v.fromCartesian3=function(e){return I.defined("offset",e),new v(e.x,e.y,e.z)};v.toValue=function(e,n){return I.defined("offset",e),a(n)||(n=new Float32Array([e.x,e.y,e.z])),n[0]=e.x,n[1]=e.y,n[2]=e.z,n};var $=v;function J(e,n,t){let i=!t,r=e.length,c;if(!i&&r>1){let o=e[0].modelMatrix;for(c=1;c<r;++c)if(!G.equals(o,e[c].modelMatrix)){i=!0;break}}if(i)for(c=0;c<r;++c)a(e[c].geometry)&&b.transformToWorldCoordinates(e[c]);else G.multiplyTransformation(n,e[0].modelMatrix,n)}function L(e,n){let t=e.attributes,i=t.position,r=i.values.length/i.componentsPerAttribute;t.batchId=new D({componentDatatype:k.FLOAT,componentsPerAttribute:1,values:new Float32Array(r)});let c=t.batchId.values;for(let o=0;o<r;++o)c[o]=n}function K(e){let n=e.length;for(let t=0;t<n;++t){let i=e[t];a(i.geometry)?L(i.geometry,t):a(i.westHemisphereGeometry)&&a(i.eastHemisphereGeometry)&&(L(i.westHemisphereGeometry,t),L(i.eastHemisphereGeometry,t))}}function N(e){let n=e.instances,t=e.projection,i=e.elementIndexUintSupported,r=e.scene3DOnly,c=e.vertexCacheOptimize,o=e.compressVertices,g=e.modelMatrix,s,u,m,p=n.length;for(s=0;s<p;++s)if(a(n[s].geometry)){m=n[s].geometry.primitiveType;break}for(s=1;s<p;++s)if(a(n[s].geometry)&&n[s].geometry.primitiveType!==m)throw new M("All instance geometries must have the same primitiveType.");if(J(n,g,r),!r)for(s=0;s<p;++s)a(n[s].geometry)&&b.splitLongitude(n[s]);if(K(n),c)for(s=0;s<p;++s){let f=n[s];a(f.geometry)?(b.reorderForPostVertexCache(f.geometry),b.reorderForPreVertexCache(f.geometry)):a(f.westHemisphereGeometry)&&a(f.eastHemisphereGeometry)&&(b.reorderForPostVertexCache(f.westHemisphereGeometry),b.reorderForPreVertexCache(f.westHemisphereGeometry),b.reorderForPostVertexCache(f.eastHemisphereGeometry),b.reorderForPreVertexCache(f.eastHemisphereGeometry))}let l=b.combineInstances(n);for(p=l.length,s=0;s<p;++s){u=l[s];let f=u.attributes;if(r)for(let d in f)f.hasOwnProperty(d)&&f[d].componentDatatype===k.DOUBLE&&b.encodeAttribute(u,d,`${d}3DHigh`,`${d}3DLow`);else for(let d in f)if(f.hasOwnProperty(d)&&f[d].componentDatatype===k.DOUBLE){let h=`${d}3D`,x=`${d}2D`;b.projectTo2D(u,d,h,x,t),a(u.boundingSphere)&&d==="position"&&(u.boundingSphereCV=y.fromVertices(u.attributes.position2D.values)),b.encodeAttribute(u,h,`${h}High`,`${h}Low`),b.encodeAttribute(u,x,`${x}High`,`${x}Low`)}o&&b.compressVertices(u)}if(!i){let f=[];for(p=l.length,s=0;s<p;++s)u=l[s],f=f.concat(b.fitToUnsignedShortIndices(u));l=f}return l}function P(e,n,t,i){let r,c,o,g=i.length-1;if(g>=0){let u=i[g];r=u.offset+u.count,o=u.index,c=t[o].indices.length}else r=0,o=0,c=t[o].indices.length;let s=e.length;for(let u=0;u<s;++u){let p=e[u][n];if(!a(p))continue;let l=p.indices.length;r+l>c&&(r=0,c=t[++o].indices.length),i.push({index:o,offset:r,count:l}),r+=l}}function Q(e,n){let t=[];return P(e,"geometry",n,t),P(e,"westHemisphereGeometry",n,t),P(e,"eastHemisphereGeometry",n,t),t}var S={};S.combineGeometry=function(e){let n,t,i=e.instances,r=i.length,c,o,g=!1;r>0&&(n=N(e),n.length>0&&(t=b.createAttributeLocations(n[0]),e.createPickOffsets&&(c=Q(i,n))),a(i[0].attributes)&&a(i[0].attributes.offset)&&(o=new Array(r),g=!0));let s=new Array(r),u=new Array(r);for(let m=0;m<r;++m){let p=i[m],l=p.geometry;a(l)&&(s[m]=l.boundingSphere,u[m]=l.boundingSphereCV,g&&(o[m]=p.geometry.offsetAttribute));let f=p.eastHemisphereGeometry,d=p.westHemisphereGeometry;a(f)&&a(d)&&(a(f.boundingSphere)&&a(d.boundingSphere)&&(s[m]=y.union(f.boundingSphere,d.boundingSphere)),a(f.boundingSphereCV)&&a(d.boundingSphereCV)&&(u[m]=y.union(f.boundingSphereCV,d.boundingSphereCV)))}return{geometries:n,modelMatrix:e.modelMatrix,attributeLocations:t,pickOffsets:c,offsetInstanceExtend:o,boundingSpheres:s,boundingSpheresCV:u}};function X(e,n){let t=e.attributes;for(let i in t)if(t.hasOwnProperty(i)){let r=t[i];a(r)&&a(r.values)&&n.push(r.values.buffer)}a(e.indices)&&n.push(e.indices.buffer)}function Y(e,n){let t=e.length;for(let i=0;i<t;++i)X(e[i],n)}function Z(e){let n=1,t=e.length;for(let i=0;i<t;i++){let r=e[i];if(++n,!a(r))continue;let c=r.attributes;n+=7+2*y.packedLength+(a(r.indices)?r.indices.length:0);for(let o in c)if(c.hasOwnProperty(o)&&a(c[o])){let g=c[o];n+=5+g.values.length}}return n}S.packCreateGeometryResults=function(e,n){let t=new Float64Array(Z(e)),i=[],r={},c=e.length,o=0;t[o++]=c;for(let g=0;g<c;g++){let s=e[g],u=a(s);if(t[o++]=u?1:0,!u)continue;t[o++]=s.primitiveType,t[o++]=s.geometryType,t[o++]=s.offsetAttribute??-1;let m=a(s.boundingSphere)?1:0;t[o++]=m,m&&y.pack(s.boundingSphere,t,o),o+=y.packedLength;let p=a(s.boundingSphereCV)?1:0;t[o++]=p,p&&y.pack(s.boundingSphereCV,t,o),o+=y.packedLength;let l=s.attributes,f=[];for(let h in l)l.hasOwnProperty(h)&&a(l[h])&&(f.push(h),a(r[h])||(r[h]=i.length,i.push(h)));t[o++]=f.length;for(let h=0;h<f.length;h++){let x=f[h],C=l[x];t[o++]=r[x],t[o++]=C.componentDatatype,t[o++]=C.componentsPerAttribute,t[o++]=C.normalize?1:0,t[o++]=C.values.length,t.set(C.values,o),o+=C.values.length}let d=a(s.indices)?s.indices.length:0;t[o++]=d,d>0&&(t.set(s.indices,o),o+=d)}return n.push(t.buffer),{stringTable:i,packedData:t}};S.unpackCreateGeometryResults=function(e){let n=e.stringTable,t=e.packedData,i,r=new Array(t[0]),c=0,o=1;for(;o<t.length;){if(!(t[o++]===1)){r[c++]=void 0;continue}let s=t[o++],u=t[o++],m=t[o++];m===-1&&(m=void 0);let p,l;t[o++]===1&&(p=y.unpack(t,o)),o+=y.packedLength,t[o++]===1&&(l=y.unpack(t,o)),o+=y.packedLength;let h,x,C,T=new z,W=t[o++];for(i=0;i<W;i++){let A=n[t[o++]],H=t[o++];C=t[o++];let q=t[o++]!==0;h=t[o++],x=k.createTypedArray(H,h);for(let O=0;O<h;O++)x[O]=t[o++];T[A]=new D({componentDatatype:H,componentsPerAttribute:C,normalize:q,values:x})}let w;if(h=t[o++],h>0){let A=x.length/C;for(w=E.createTypedArray(A,h),i=0;i<h;i++)w[i]=t[o++]}r[c++]=new B({primitiveType:s,geometryType:u,boundingSphere:p,boundingSphereCV:l,indices:w,attributes:T,offsetAttribute:m})}return r};function _(e,n){let t=e.length,i=new Float64Array(1+t*19),r=0;i[r++]=t;for(let c=0;c<t;c++){let o=e[c];if(G.pack(o.modelMatrix,i,r),r+=G.packedLength,a(o.attributes)&&a(o.attributes.offset)){let g=o.attributes.offset.value;i[r]=g[0],i[r+1]=g[1],i[r+2]=g[2]}r+=3}return n.push(i.buffer),i}function ee(e){let n=e,t=new Array(n[0]),i=0,r=1;for(;r<n.length;){let c=G.unpack(n,r),o;r+=G.packedLength,a(n[r])&&(o={offset:new $(n[r],n[r+1],n[r+2])}),r+=3,t[i++]={modelMatrix:c,attributes:o}}return t}S.packCombineGeometryParameters=function(e,n){let t=e.createGeometryResults,i=t.length;for(let r=0;r<i;r++)n.push(t[r].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:_(e.instances,n),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof V,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};S.unpackCombineGeometryParameters=function(e){let n=ee(e.packedInstances),t=e.createGeometryResults,i=t.length,r=0;for(let g=0;g<i;g++){let s=S.unpackCreateGeometryResults(t[g]),u=s.length;for(let m=0;m<u;m++){let p=s[m],l=n[r];l.geometry=p,++r}}let c=F.clone(e.ellipsoid),o=e.isGeographic?new V(c):new U(c);return{instances:n,ellipsoid:c,projection:o,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:G.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function j(e){let n=e.length,t=1+(y.packedLength+1)*n,i=new Float32Array(t),r=0;i[r++]=n;for(let c=0;c<n;++c){let o=e[c];a(o)?(i[r++]=1,y.pack(e[c],i,r)):i[r++]=0,r+=y.packedLength}return i}function R(e){let n=new Array(e[0]),t=0,i=1;for(;i<e.length;)e[i++]===1&&(n[t]=y.unpack(e,i)),++t,i+=y.packedLength;return n}S.packCombineGeometryResults=function(e,n){a(e.geometries)&&Y(e.geometries,n);let t=j(e.boundingSpheres),i=j(e.boundingSpheresCV);return n.push(t.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:t,boundingSpheresCV:i}};S.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:R(e.boundingSpheres),boundingSpheresCV:R(e.boundingSpheresCV)}};var xe=S;export{xe as a}; diff --git a/public/Cesium/Workers/chunk-VW6VD53G.js b/public/Cesium/Workers/chunk-VW6VD53G.js new file mode 100644 index 000000000..02aa87248 --- /dev/null +++ b/public/Cesium/Workers/chunk-VW6VD53G.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as tt}from"./chunk-DEPHB2WM.js";import{a as jt}from"./chunk-QOUAJ6TL.js";import{b as Lt}from"./chunk-DMEY62ID.js";import{a as Et}from"./chunk-HTFSEEMT.js";import{a as j}from"./chunk-OFUUQVMR.js";import{a as dt,b as D,c as B,d as U}from"./chunk-RCV6KWXS.js";import{a as _t,b as Ut,d as ot}from"./chunk-4IW2T6GF.js";import{a as pt,b as H}from"./chunk-PSPPBZWI.js";import{a as F}from"./chunk-AU7IKHOH.js";import{a as r,b as Mt,c as V,e as gt,f as Ot}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import{a as I,b as ft}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var Yt=new r,Zt=new r,Xt=new r;function pe(t,e,n,s,i){ft.defined("point",t),ft.defined("p0",e),ft.defined("p1",n),ft.defined("p2",s),f(i)||(i=new r);let c,o,a,p,u,d,m,l;if(f(e.z)){if(r.equalsEpsilon(t,e,N.EPSILON14))return r.clone(r.UNIT_X,i);if(r.equalsEpsilon(t,n,N.EPSILON14))return r.clone(r.UNIT_Y,i);if(r.equalsEpsilon(t,s,N.EPSILON14))return r.clone(r.UNIT_Z,i);c=r.subtract(n,e,Yt),o=r.subtract(s,e,Zt),a=r.subtract(t,e,Xt),p=r.dot(c,c),u=r.dot(c,o),d=r.dot(c,a),m=r.dot(o,o),l=r.dot(o,a)}else{if(V.equalsEpsilon(t,e,N.EPSILON14))return r.clone(r.UNIT_X,i);if(V.equalsEpsilon(t,n,N.EPSILON14))return r.clone(r.UNIT_Y,i);if(V.equalsEpsilon(t,s,N.EPSILON14))return r.clone(r.UNIT_Z,i);c=V.subtract(n,e,Yt),o=V.subtract(s,e,Zt),a=V.subtract(t,e,Xt),p=V.dot(c,c),u=V.dot(c,o),d=V.dot(c,a),m=V.dot(o,o),l=V.dot(o,a)}i.y=m*d-u*l,i.z=p*l-u*d;let h=p*m-u*u;if(h!==0)return i.y/=h,i.z/=h,i.x=1-i.y-i.z,i}var Ht=pe;var Nt={};Nt.calculateACMR=function(t){t=t??Ot.EMPTY_OBJECT;let e=t.indices,n=t.maximumIndex,s=t.cacheSize??24;if(!f(e))throw new I("indices is required.");let i=e.length;if(i<3||i%3!==0)throw new I("indices length must be a multiple of three.");if(n<=0)throw new I("maximumIndex must be greater than zero.");if(s<3)throw new I("cacheSize must be greater than two.");if(!f(n)){n=0;let a=0,p=e[a];for(;a<i;)p>n&&(n=p),++a,p=e[a]}let c=[];for(let a=0;a<n+1;a++)c[a]=0;let o=s+1;for(let a=0;a<i;++a)o-c[e[a]]>s&&(c[e[a]]=o,++o);return(o-s+1)/(i/3)};Nt.tipsify=function(t){t=t??Ot.EMPTY_OBJECT;let e=t.indices,n=t.maximumIndex,s=t.cacheSize??24,i;function c(C,z,q,R){for(;z.length>=1;){let G=z[z.length-1];if(z.splice(z.length-1,1),C[G].numLiveTriangles>0)return G}for(;i<R;){if(C[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function o(C,z,q,R,G,M,J){let Y=-1,_,St=-1,Pt=0;for(;Pt<q.length;){let lt=q[Pt];R[lt].numLiveTriangles&&(_=0,G-R[lt].timeStamp+2*R[lt].numLiveTriangles<=z&&(_=G-R[lt].timeStamp),(_>St||St===-1)&&(St=_,Y=lt)),++Pt}return Y===-1?c(R,M,C,J):Y}if(!f(e))throw new I("indices is required.");let a=e.length;if(a<3||a%3!==0)throw new I("indices length must be a multiple of three.");if(n<=0)throw new I("maximumIndex must be greater than zero.");if(s<3)throw new I("cacheSize must be greater than two.");let p=0,u=0,d=e[u],m=a;if(f(n))p=n+1;else{for(;u<m;)d>p&&(p=d),++u,d=e[u];if(p===-1)return 0;++p}let l=[],h;for(h=0;h<p;h++)l[h]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let y=0;for(;u<m;)l[e[u]].vertexTriangles.push(y),++l[e[u]].numLiveTriangles,l[e[u+1]].vertexTriangles.push(y),++l[e[u+1]].numLiveTriangles,l[e[u+2]].vertexTriangles.push(y),++l[e[u+2]].numLiveTriangles,++y,u+=3;let v=0,b=s+1;i=1;let S=[],x=[],w,A,E=0,P=[],O=a/3,L=[];for(h=0;h<O;h++)L[h]=!1;let g,T;for(;v!==-1;){S=[],A=l[v],T=A.vertexTriangles.length;for(let C=0;C<T;++C)if(y=A.vertexTriangles[C],!L[y]){L[y]=!0,u=y+y+y;for(let z=0;z<3;++z)g=e[u],S.push(g),x.push(g),P[E]=g,++E,w=l[g],--w.numLiveTriangles,b-w.timeStamp>s&&(w.timeStamp=b,++b),++u}v=o(e,s,S,l,b,x,p)}return P};var Wt=Nt;var k={};function It(t,e,n,s,i){t[e++]=n,t[e++]=s,t[e++]=s,t[e++]=i,t[e++]=i,t[e]=n}function de(t){let e=t.length,n=e/3*6,s=j.createTypedArray(e,n),i=0;for(let c=0;c<e;c+=3,i+=6)It(s,i,t[c],t[c+1],t[c+2]);return s}function me(t){let e=t.length;if(e>=3){let n=(e-2)*6,s=j.createTypedArray(e,n);It(s,0,t[0],t[1],t[2]);let i=6;for(let c=3;c<e;++c,i+=6)It(s,i,t[c-1],t[c],t[c-2]);return s}return new Uint16Array}function he(t){if(t.length>0){let e=t.length-1,n=(e-1)*6,s=j.createTypedArray(e,n),i=t[0],c=0;for(let o=1;o<e;++o,c+=6)It(s,c,i,t[o],t[o+1]);return s}return new Uint16Array}k.toWireframe=function(t){if(!f(t))throw new I("geometry is required.");let e=t.indices;if(f(e)){switch(t.primitiveType){case D.TRIANGLES:t.indices=de(e);break;case D.TRIANGLE_STRIP:t.indices=me(e);break;case D.TRIANGLE_FAN:t.indices=he(e);break;default:throw new I("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}t.primitiveType=D.LINES}return t};k.createLineSegmentsForVectors=function(t,e,n){if(e=e??"normal",!f(t))throw new I("geometry is required.");if(!f(t.attributes.position))throw new I("geometry.attributes.position is required.");if(!f(t.attributes[e]))throw new I(`geometry.attributes must have an attribute with the same name as the attributeName parameter, ${e}.`);n=n??1e4;let s=t.attributes.position.values,i=t.attributes[e].values,c=s.length,o=new Float64Array(2*c),a=0;for(let d=0;d<c;d+=3)o[a++]=s[d],o[a++]=s[d+1],o[a++]=s[d+2],o[a++]=s[d]+i[d]*n,o[a++]=s[d+1]+i[d+1]*n,o[a++]=s[d+2]+i[d+2]*n;let p,u=t.boundingSphere;return f(u)&&(p=new ot(u.center,u.radius+n)),new B({attributes:{position:new U({componentDatatype:F.DOUBLE,componentsPerAttribute:3,values:o})},primitiveType:D.LINES,boundingSphere:p})};k.createAttributeLocations=function(t){if(!f(t))throw new I("geometry is required.");let e=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=t.attributes,s={},i=0,c,o=e.length;for(c=0;c<o;++c){let a=e[c];f(n[a])&&(s[a]=i++)}for(let a in n)n.hasOwnProperty(a)&&!f(s[a])&&(s[a]=i++);return s};k.reorderForPreVertexCache=function(t){if(!f(t))throw new I("geometry is required.");let e=B.computeNumberOfVertices(t),n=t.indices;if(f(n)){let s=new Int32Array(e);for(let l=0;l<e;l++)s[l]=-1;let i=n,c=i.length,o=j.createTypedArray(e,c),a=0,p=0,u=0,d;for(;a<c;)d=s[i[a]],d!==-1?o[p]=d:(d=i[a],s[d]=u,o[p]=u,++u),++a,++p;t.indices=o;let m=t.attributes;for(let l in m)if(m.hasOwnProperty(l)&&f(m[l])&&f(m[l].values)){let h=m[l],y=h.values,v=0,b=h.componentsPerAttribute,S=F.createTypedArray(h.componentDatatype,u*b);for(;v<e;){let x=s[v];if(x!==-1)for(let w=0;w<b;w++)S[b*x+w]=y[b*v+w];++v}h.values=S}}return t};k.reorderForPostVertexCache=function(t,e){if(!f(t))throw new I("geometry is required.");let n=t.indices;if(t.primitiveType===D.TRIANGLES&&f(n)){let s=n.length,i=0;for(let c=0;c<s;c++)n[c]>i&&(i=n[c]);t.indices=Wt.tipsify({indices:n,maximumIndex:i,cacheSize:e})}return t};function $t(t){let e={};for(let n in t)if(t.hasOwnProperty(n)&&f(t[n])&&f(t[n].values)){let s=t[n];e[n]=new U({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:[]})}return e}function be(t,e,n){for(let s in e)if(e.hasOwnProperty(s)&&f(e[s])&&f(e[s].values)){let i=e[s];for(let c=0;c<i.componentsPerAttribute;++c)t[s].values.push(i.values[n*i.componentsPerAttribute+c])}}k.fitToUnsignedShortIndices=function(t){if(!f(t))throw new I("geometry is required.");if(f(t.indices)&&t.primitiveType!==D.TRIANGLES&&t.primitiveType!==D.LINES&&t.primitiveType!==D.POINTS)throw new I("geometry.primitiveType must equal to PrimitiveType.TRIANGLES, PrimitiveType.LINES, or PrimitiveType.POINTS.");let e=[],n=B.computeNumberOfVertices(t);if(f(t.indices)&&n>=N.SIXTY_FOUR_KILOBYTES){let s=[],i=[],c=0,o=$t(t.attributes),a=t.indices,p=a.length,u;t.primitiveType===D.TRIANGLES?u=3:t.primitiveType===D.LINES?u=2:t.primitiveType===D.POINTS&&(u=1);for(let d=0;d<p;d+=u){for(let m=0;m<u;++m){let l=a[d+m],h=s[l];f(h)||(h=c++,s[l]=h,be(o,t.attributes,l)),i.push(h)}c+u>=N.SIXTY_FOUR_KILOBYTES&&(e.push(new B({attributes:o,indices:i,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV})),s=[],i=[],c=0,o=$t(t.attributes))}i.length!==0&&e.push(new B({attributes:o,indices:i,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV}))}else e.push(t);return e};var Jt=new r,we=new Mt;k.projectTo2D=function(t,e,n,s,i){if(!f(t))throw new I("geometry is required.");if(!f(e))throw new I("attributeName is required.");if(!f(n))throw new I("attributeName3D is required.");if(!f(s))throw new I("attributeName2D is required.");if(!f(t.attributes[e]))throw new I(`geometry must have attribute matching the attributeName argument: ${e}.`);if(t.attributes[e].componentDatatype!==F.DOUBLE)throw new I("The attribute componentDatatype must be ComponentDatatype.DOUBLE.");let c=t.attributes[e];i=f(i)?i:new _t;let o=i.ellipsoid,a=c.values,p=new Float64Array(a.length),u=0;for(let d=0;d<a.length;d+=3){let m=r.fromArray(a,d,Jt),l=o.cartesianToCartographic(m,we);if(!f(l))throw new I(`Could not project point (${m.x}, ${m.y}, ${m.z}) to 2D.`);let h=i.project(l,Jt);p[u++]=h.x,p[u++]=h.y,p[u++]=h.z}return t.attributes[n]=c,t.attributes[s]=new U({componentDatatype:F.DOUBLE,componentsPerAttribute:3,values:p}),delete t.attributes[e],t};var zt={high:0,low:0};k.encodeAttribute=function(t,e,n,s){if(!f(t))throw new I("geometry is required.");if(!f(e))throw new I("attributeName is required.");if(!f(n))throw new I("attributeHighName is required.");if(!f(s))throw new I("attributeLowName is required.");if(!f(t.attributes[e]))throw new I(`geometry must have attribute matching the attributeName argument: ${e}.`);if(t.attributes[e].componentDatatype!==F.DOUBLE)throw new I("The attribute componentDatatype must be ComponentDatatype.DOUBLE.");let i=t.attributes[e],c=i.values,o=c.length,a=new Float32Array(o),p=new Float32Array(o);for(let d=0;d<o;++d)jt.encode(c[d],zt),a[d]=zt.high,p[d]=zt.low;let u=i.componentsPerAttribute;return t.attributes[n]=new U({componentDatatype:F.FLOAT,componentsPerAttribute:u,values:a}),t.attributes[s]=new U({componentDatatype:F.FLOAT,componentsPerAttribute:u,values:p}),delete t.attributes[e],t};var $=new r;function Dt(t,e){if(f(e)){let n=e.values,s=n.length;for(let i=0;i<s;i+=3)r.unpack(n,i,$),H.multiplyByPoint(t,$,$),r.pack($,n,i)}}function qt(t,e){if(f(e)){let n=e.values,s=n.length;for(let i=0;i<s;i+=3)r.unpack(n,i,$),gt.multiplyByVector(t,$,$),$=r.normalize($,$),r.pack($,n,i)}}var wt=new H,vt=new gt;k.transformToWorldCoordinates=function(t){if(!f(t))throw new I("instance is required.");let e=t.modelMatrix;if(H.equals(e,H.IDENTITY))return t;let n=t.geometry.attributes;Dt(e,n.position),Dt(e,n.prevPosition),Dt(e,n.nextPosition),(f(n.normal)||f(n.tangent)||f(n.bitangent))&&(H.inverse(e,wt),H.transpose(wt,wt),H.getMatrix3(wt,vt),qt(vt,n.normal),qt(vt,n.tangent),qt(vt,n.bitangent));let s=t.geometry.boundingSphere;return f(s)&&(t.geometry.boundingSphere=ot.transform(s,e,s)),t.modelMatrix=H.clone(H.IDENTITY),t};function ve(t,e){let n=t.length,s={},i=t[0][e].attributes,c;for(c in i)if(i.hasOwnProperty(c)&&f(i[c])&&f(i[c].values)){let o=i[c],a=o.values.length,p=!0;for(let u=1;u<n;++u){let d=t[u][e].attributes[c];if(!f(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){p=!1;break}a+=d.values.length}p&&(s[c]=new U({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:F.createTypedArray(o.componentDatatype,a)}))}return s}var ye=new r;function Rt(t,e){let n=t.length,s,i,c,o,a=t[0].modelMatrix,p=f(t[0][e].indices),u=t[0][e].primitiveType;for(i=1;i<n;++i){if(!H.equals(t[i].modelMatrix,a))throw new I("All instances must have the same modelMatrix.");if(f(t[i][e].indices)!==p)throw new I("All instance geometries must have an indices or not have one.");if(t[i][e].primitiveType!==u)throw new I("All instance geometries must have the same primitiveType.")}let d=ve(t,e),m,l,h;for(s in d)if(d.hasOwnProperty(s))for(m=d[s].values,o=0,i=0;i<n;++i)for(l=t[i][e].attributes[s].values,h=l.length,c=0;c<h;++c)m[o++]=l[c];let y;if(p){let x=0;for(i=0;i<n;++i)x+=t[i][e].indices.length;let w=B.computeNumberOfVertices(new B({attributes:d,primitiveType:D.POINTS})),A=j.createTypedArray(w,x),E=0,P=0;for(i=0;i<n;++i){let O=t[i][e].indices,L=O.length;for(o=0;o<L;++o)A[E++]=P+O[o];P+=B.computeNumberOfVertices(t[i][e])}y=A}let v=new r,b=0,S;for(i=0;i<n;++i){if(S=t[i][e].boundingSphere,!f(S)){v=void 0;break}r.add(S.center,v,v)}if(f(v))for(r.divideByScalar(v,n,v),i=0;i<n;++i){S=t[i][e].boundingSphere;let x=r.magnitude(r.subtract(S.center,v,ye))+S.radius;x>b&&(b=x)}return new B({attributes:d,indices:y,primitiveType:u,boundingSphere:f(v)?new ot(v,b):void 0})}k.combineInstances=function(t){if(!f(t)||t.length<1)throw new I("instances is required and must have length greater than zero.");let e=[],n=[],s=t.length;for(let c=0;c<s;++c){let o=t[c];f(o.geometry)?e.push(o):f(o.westHemisphereGeometry)&&f(o.eastHemisphereGeometry)&&n.push(o)}let i=[];return e.length>0&&i.push(Rt(e,"geometry")),n.length>0&&(i.push(Rt(n,"westHemisphereGeometry")),i.push(Rt(n,"eastHemisphereGeometry"))),i};var Z=new r,mt=new r,rt=new r,ct=new r;k.computeNormal=function(t){if(!f(t))throw new I("geometry is required.");if(!f(t.attributes.position)||!f(t.attributes.position.values))throw new I("geometry.attributes.position.values is required.");if(!f(t.indices))throw new I("geometry.indices is required.");if(t.indices.length<2||t.indices.length%3!==0)throw new I("geometry.indices length must be greater than 0 and be a multiple of 3.");if(t.primitiveType!==D.TRIANGLES)throw new I("geometry.primitiveType must be PrimitiveType.TRIANGLES.");let e=t.indices,n=t.attributes,s=n.position.values,i=n.position.values.length/3,c=e.length,o=new Array(i),a=new Array(c/3),p=new Array(c),u;for(u=0;u<i;u++)o[u]={indexOffset:0,count:0,currentCount:0};let d=0;for(u=0;u<c;u+=3){let y=e[u],v=e[u+1],b=e[u+2],S=y*3,x=v*3,w=b*3;mt.x=s[S],mt.y=s[S+1],mt.z=s[S+2],rt.x=s[x],rt.y=s[x+1],rt.z=s[x+2],ct.x=s[w],ct.y=s[w+1],ct.z=s[w+2],o[y].count++,o[v].count++,o[b].count++,r.subtract(rt,mt,rt),r.subtract(ct,mt,ct),a[d]=r.cross(rt,ct,new r),d++}let m=0;for(u=0;u<i;u++)o[u].indexOffset+=m,m+=o[u].count;d=0;let l;for(u=0;u<c;u+=3){l=o[e[u]];let y=l.indexOffset+l.currentCount;p[y]=d,l.currentCount++,l=o[e[u+1]],y=l.indexOffset+l.currentCount,p[y]=d,l.currentCount++,l=o[e[u+2]],y=l.indexOffset+l.currentCount,p[y]=d,l.currentCount++,d++}let h=new Float32Array(i*3);for(u=0;u<i;u++){let y=u*3;if(l=o[u],r.clone(r.ZERO,Z),l.count>0){for(d=0;d<l.count;d++)r.add(Z,a[p[l.indexOffset+d]],Z);r.equalsEpsilon(r.ZERO,Z,N.EPSILON10)&&r.clone(a[p[l.indexOffset]],Z)}r.equalsEpsilon(r.ZERO,Z,N.EPSILON10)&&(Z.z=1),r.normalize(Z,Z),h[y]=Z.x,h[y+1]=Z.y,h[y+2]=Z.z}return t.attributes.normal=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:h}),t};var xe=new r,Kt=new r,Te=new r;k.computeTangentAndBitangent=function(t){if(!f(t))throw new I("geometry is required.");let e=t.attributes,n=t.indices;if(!f(e.position)||!f(e.position.values))throw new I("geometry.attributes.position.values is required.");if(!f(e.normal)||!f(e.normal.values))throw new I("geometry.attributes.normal.values is required.");if(!f(e.st)||!f(e.st.values))throw new I("geometry.attributes.st.values is required.");if(!f(n))throw new I("geometry.indices is required.");if(n.length<2||n.length%3!==0)throw new I("geometry.indices length must be greater than 0 and be a multiple of 3.");if(t.primitiveType!==D.TRIANGLES)throw new I("geometry.primitiveType must be PrimitiveType.TRIANGLES.");let s=t.attributes.position.values,i=t.attributes.normal.values,c=t.attributes.st.values,o=t.attributes.position.values.length/3,a=n.length,p=new Array(o*3),u;for(u=0;u<p.length;u++)p[u]=0;let d,m,l;for(u=0;u<a;u+=3){let v=n[u],b=n[u+1],S=n[u+2];d=v*3,m=b*3,l=S*3;let x=v*2,w=b*2,A=S*2,E=s[d],P=s[d+1],O=s[d+2],L=c[x],g=c[x+1],T=c[w+1]-g,C=c[A+1]-g,z=1/((c[w]-L)*C-(c[A]-L)*T),q=(C*(s[m]-E)-T*(s[l]-E))*z,R=(C*(s[m+1]-P)-T*(s[l+1]-P))*z,G=(C*(s[m+2]-O)-T*(s[l+2]-O))*z;p[d]+=q,p[d+1]+=R,p[d+2]+=G,p[m]+=q,p[m+1]+=R,p[m+2]+=G,p[l]+=q,p[l+1]+=R,p[l+2]+=G}let h=new Float32Array(o*3),y=new Float32Array(o*3);for(u=0;u<o;u++){d=u*3,m=d+1,l=d+2;let v=r.fromArray(i,d,xe),b=r.fromArray(p,d,Te),S=r.dot(v,b);r.multiplyByScalar(v,S,Kt),r.normalize(r.subtract(b,Kt,b),b),h[d]=b.x,h[m]=b.y,h[l]=b.z,r.normalize(r.cross(v,b,b),b),y[d]=b.x,y[m]=b.y,y[l]=b.z}return t.attributes.tangent=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:h}),t.attributes.bitangent=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:y}),t};var ht=new V,W=new r,Qt=new r,te=new r,yt=new V;k.compressVertices=function(t){if(!f(t))throw new I("geometry is required.");let e=t.attributes.extrudeDirection,n,s;if(f(e)){let P=e.values;s=P.length/3;let O=new Float32Array(s*2),L=0;for(n=0;n<s;++n){if(r.fromArray(P,n*3,W),r.equals(W,r.ZERO)){L+=2;continue}yt=tt.octEncodeInRange(W,65535,yt),O[L++]=yt.x,O[L++]=yt.y}return t.attributes.compressedAttributes=new U({componentDatatype:F.FLOAT,componentsPerAttribute:2,values:O}),delete t.attributes.extrudeDirection,t}let i=t.attributes.normal,c=t.attributes.st,o=f(i),a=f(c);if(!o&&!a)return t;let p=t.attributes.tangent,u=t.attributes.bitangent,d=f(p),m=f(u),l,h,y,v;o&&(l=i.values),a&&(h=c.values),d&&(y=p.values),m&&(v=u.values),s=(o?l.length:h.length)/(o?3:2);let x=s,w=a&&o?2:1;w+=d||m?1:0,x*=w;let A=new Float32Array(x),E=0;for(n=0;n<s;++n){a&&(V.fromArray(h,n*2,ht),A[E++]=tt.compressTextureCoordinates(ht));let P=n*3;o&&f(y)&&f(v)?(r.fromArray(l,P,W),r.fromArray(y,P,Qt),r.fromArray(v,P,te),tt.octPack(W,Qt,te,ht),A[E++]=ht.x,A[E++]=ht.y):(o&&(r.fromArray(l,P,W),A[E++]=tt.octEncodeFloat(W)),d&&(r.fromArray(y,P,W),A[E++]=tt.octEncodeFloat(W)),m&&(r.fromArray(v,P,W),A[E++]=tt.octEncodeFloat(W)))}return t.attributes.compressedAttributes=new U({componentDatatype:F.FLOAT,componentsPerAttribute:w,values:A}),o&&delete t.attributes.normal,a&&delete t.attributes.st,m&&delete t.attributes.bitangent,d&&delete t.attributes.tangent,t};function Ae(t){if(f(t.indices))return t;let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least three.");if(e%3!==0)throw new I("The number of vertices must be a multiple of three.");let n=j.createTypedArray(e,e);for(let s=0;s<e;++s)n[s]=s;return t.indices=n,t}function Ie(t){let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least three.");let n=j.createTypedArray(e,(e-2)*3);n[0]=1,n[1]=0,n[2]=2;let s=3;for(let i=3;i<e;++i)n[s++]=i-1,n[s++]=0,n[s++]=i;return t.indices=n,t.primitiveType=D.TRIANGLES,t}function Se(t){let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least 3.");let n=j.createTypedArray(e,(e-2)*3);n[0]=0,n[1]=1,n[2]=2,e>3&&(n[3]=0,n[4]=2,n[5]=3);let s=6;for(let i=3;i<e-1;i+=2)n[s++]=i,n[s++]=i-1,n[s++]=i+1,i+2<e&&(n[s++]=i,n[s++]=i+1,n[s++]=i+2);return t.indices=n,t.primitiveType=D.TRIANGLES,t}function Pe(t){if(f(t.indices))return t;let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");if(e%2!==0)throw new I("The number of vertices must be a multiple of 2.");let n=j.createTypedArray(e,e);for(let s=0;s<e;++s)n[s]=s;return t.indices=n,t}function ge(t){let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");let n=j.createTypedArray(e,(e-1)*2);n[0]=0,n[1]=1;let s=2;for(let i=2;i<e;++i)n[s++]=i-1,n[s++]=i;return t.indices=n,t.primitiveType=D.LINES,t}function Oe(t){let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");let n=j.createTypedArray(e,e*2);n[0]=0,n[1]=1;let s=2;for(let i=2;i<e;++i)n[s++]=i-1,n[s++]=i;return n[s++]=e-1,n[s]=0,t.indices=n,t.primitiveType=D.LINES,t}function Le(t){switch(t.primitiveType){case D.TRIANGLE_FAN:return Ie(t);case D.TRIANGLE_STRIP:return Se(t);case D.TRIANGLES:return Ae(t);case D.LINE_STRIP:return ge(t);case D.LINE_LOOP:return Oe(t);case D.LINES:return Pe(t)}return t}function Q(t,e){Math.abs(t.y)<N.EPSILON6&&(e?t.y=-N.EPSILON6:t.y=N.EPSILON6)}function Ee(t,e,n){if(t.y!==0&&e.y!==0&&n.y!==0){Q(t,t.y<0),Q(e,e.y<0),Q(n,n.y<0);return}let s=Math.abs(t.y),i=Math.abs(e.y),c=Math.abs(n.y),o;s>i?s>c?o=N.sign(t.y):o=N.sign(n.y):i>c?o=N.sign(e.y):o=N.sign(n.y);let a=o<0;Q(t,a),Q(e,a),Q(n,a)}var ee=new r;function X(t,e,n,s){r.add(t,r.multiplyByScalar(r.subtract(e,t,ee),t.y/(t.y-e.y),ee),n),r.clone(n,s),Q(n,!0),Q(s,!1)}var et=new r,nt=new r,it=new r,st=new r,Vt={positions:new Array(7),indices:new Array(9)};function Ne(t,e,n){if(t.x>=0||e.x>=0||n.x>=0)return;Ee(t,e,n);let s=t.y<0,i=e.y<0,c=n.y<0,o=0;o+=s?1:0,o+=i?1:0,o+=c?1:0;let a=Vt.indices;o===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,s?(X(t,e,et,it),X(t,n,nt,st),a[0]=0,a[3]=1,a[4]=2,a[6]=1):i?(X(e,n,et,it),X(e,t,nt,st),a[0]=1,a[3]=2,a[4]=0,a[6]=2):c&&(X(n,t,et,it),X(n,e,nt,st),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):o===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,s?i?c||(X(n,t,et,it),X(n,e,nt,st),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(X(e,n,et,it),X(e,t,nt,st),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(X(t,e,et,it),X(t,n,nt,st),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let p=Vt.positions;return p[0]=t,p[1]=e,p[2]=n,p.length=3,(o===1||o===2)&&(p[3]=et,p[4]=nt,p[5]=it,p[6]=st,p.length=7),Vt}function ne(t,e){let n=t.attributes;if(n.position.values.length===0)return;for(let i in n)if(n.hasOwnProperty(i)&&f(n[i])&&f(n[i].values)){let c=n[i];c.values=F.createTypedArray(c.componentDatatype,c.values)}let s=B.computeNumberOfVertices(t);return t.indices=j.createTypedArray(s,t.indices),e&&(t.boundingSphere=ot.fromVertices(n.position.values)),t}function ut(t){let e=t.attributes,n={};for(let s in e)if(e.hasOwnProperty(s)&&f(e[s])&&f(e[s].values)){let i=e[s];n[s]=new U({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return new B({attributes:n,indices:[],primitiveType:t.primitiveType})}function Ft(t,e,n){let s=f(t.geometry.boundingSphere);e=ne(e,s),n=ne(n,s),f(n)&&!f(e)?t.geometry=n:!f(n)&&f(e)?t.geometry=e:(t.westHemisphereGeometry=e,t.eastHemisphereGeometry=n,t.geometry=void 0)}function kt(t,e){let n=new t,s=new t,i=new t;return function(c,o,a,p,u,d,m,l){let h=t.fromArray(u,c*e,n),y=t.fromArray(u,o*e,s),v=t.fromArray(u,a*e,i);t.multiplyByScalar(h,p.x,h),t.multiplyByScalar(y,p.y,y),t.multiplyByScalar(v,p.z,v);let b=t.add(h,y,h);t.add(b,v,b),l&&t.normalize(b,b),t.pack(b,d,m*e)}}var ze=kt(pt,4),At=kt(r,3),ae=kt(V,2),De=function(t,e,n,s,i,c,o){let a=i[t]*s.x,p=i[e]*s.y,u=i[n]*s.z;c[o]=a+p+u>N.EPSILON6?1:0},bt=new r,Gt=new r,Ct=new r,qe=new r;function xt(t,e,n,s,i,c,o,a,p,u,d,m,l,h,y,v){if(!f(c)&&!f(o)&&!f(a)&&!f(p)&&!f(u)&&h===0)return;let b=r.fromArray(i,t*3,bt),S=r.fromArray(i,e*3,Gt),x=r.fromArray(i,n*3,Ct),w=Ht(s,b,S,x,qe);if(f(w)){if(f(c)&&At(t,e,n,w,c,m.normal.values,v,!0),f(u)){let A=r.fromArray(u,t*3,bt),E=r.fromArray(u,e*3,Gt),P=r.fromArray(u,n*3,Ct);r.multiplyByScalar(A,w.x,A),r.multiplyByScalar(E,w.y,E),r.multiplyByScalar(P,w.z,P);let O;!r.equals(A,r.ZERO)||!r.equals(E,r.ZERO)||!r.equals(P,r.ZERO)?(O=r.add(A,E,A),r.add(O,P,O),r.normalize(O,O)):(O=bt,O.x=0,O.y=0,O.z=0),r.pack(O,m.extrudeDirection.values,v*3)}if(f(d)&&De(t,e,n,w,d,m.applyOffset.values,v),f(o)&&At(t,e,n,w,o,m.tangent.values,v,!0),f(a)&&At(t,e,n,w,a,m.bitangent.values,v,!0),f(p)&&ae(t,e,n,w,p,m.st.values,v),h>0)for(let A=0;A<h;A++){let E=l[A];Re(t,e,n,w,v,y[E],m[E])}}}function Re(t,e,n,s,i,c,o){let a=c.componentsPerAttribute,p=c.values,u=o.values;switch(a){case 4:ze(t,e,n,s,p,u,i,!1);break;case 3:At(t,e,n,s,p,u,i,!1);break;case 2:ae(t,e,n,s,p,u,i,!1);break;default:u[i]=p[t]*s.x+p[e]*s.y+p[n]*s.z}}function K(t,e,n,s,i,c){let o=t.position.values.length/3;if(i!==-1){let a=s[i],p=n[a];return p===-1?(n[a]=o,t.position.values.push(c.x,c.y,c.z),e.push(o),o):(e.push(p),p)}return t.position.values.push(c.x,c.y,c.z),e.push(o),o}var Ve={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function ie(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=f(n.normal)?n.normal.values:void 0,c=f(n.bitangent)?n.bitangent.values:void 0,o=f(n.tangent)?n.tangent.values:void 0,a=f(n.st)?n.st.values:void 0,p=f(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=f(n.applyOffset)?n.applyOffset.values:void 0,d=e.indices,m=[];for(let O in n)n.hasOwnProperty(O)&&!Ve[O]&&f(n[O])&&m.push(O);let l=m.length,h=ut(e),y=ut(e),v,b,S,x,w,A=[];A.length=s.length/3;let E=[];for(E.length=s.length/3,w=0;w<A.length;++w)A[w]=-1,E[w]=-1;let P=d.length;for(w=0;w<P;w+=3){let O=d[w],L=d[w+1],g=d[w+2],T=r.fromArray(s,O*3),C=r.fromArray(s,L*3),z=r.fromArray(s,g*3),q=Ne(T,C,z);if(f(q)&&q.positions.length>3){let R=q.positions,G=q.indices,M=G.length;for(let J=0;J<M;++J){let Y=G[J],_=R[Y];_.y<0?(v=y.attributes,b=y.indices,S=A):(v=h.attributes,b=h.indices,S=E),x=K(v,b,S,d,Y<3?w+Y:-1,_),xt(O,L,g,_,s,i,o,c,a,p,u,v,m,l,n,x)}}else f(q)&&(T=q.positions[0],C=q.positions[1],z=q.positions[2]),T.y<0?(v=y.attributes,b=y.indices,S=A):(v=h.attributes,b=h.indices,S=E),x=K(v,b,S,d,w,T),xt(O,L,g,T,s,i,o,c,a,p,u,v,m,l,n,x),x=K(v,b,S,d,w+1,C),xt(O,L,g,C,s,i,o,c,a,p,u,v,m,l,n,x),x=K(v,b,S,d,w+2,z),xt(O,L,g,z,s,i,o,c,a,p,u,v,m,l,n,x)}Ft(t,y,h)}var ue=Et.fromPointNormal(r.ZERO,r.UNIT_Y),Ge=new r,Ce=new r;function at(t,e,n,s,i,c,o){if(!f(o))return;let a=r.fromArray(s,t*3,bt);r.equalsEpsilon(a,n,N.EPSILON10)?c.applyOffset.values[i]=o[t]:c.applyOffset.values[i]=o[e]}function se(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=f(n.applyOffset)?n.applyOffset.values:void 0,c=e.indices,o=ut(e),a=ut(e),p,u=c.length,d=[];d.length=s.length/3;let m=[];for(m.length=s.length/3,p=0;p<d.length;++p)d[p]=-1,m[p]=-1;for(p=0;p<u;p+=2){let l=c[p],h=c[p+1],y=r.fromArray(s,l*3,bt),v=r.fromArray(s,h*3,Gt),b;Math.abs(y.y)<N.EPSILON6&&(y.y<0?y.y=-N.EPSILON6:y.y=N.EPSILON6),Math.abs(v.y)<N.EPSILON6&&(v.y<0?v.y=-N.EPSILON6:v.y=N.EPSILON6);let S=o.attributes,x=o.indices,w=m,A=a.attributes,E=a.indices,P=d,O=Lt.lineSegmentPlane(y,v,ue,Ct);if(f(O)){let L=r.multiplyByScalar(r.UNIT_Y,5*N.EPSILON9,Ge);y.y<0&&(r.negate(L,L),S=a.attributes,x=a.indices,w=d,A=o.attributes,E=o.indices,P=m);let g=r.add(O,L,Ce);b=K(S,x,w,c,p,y),at(l,h,y,s,b,S,i),b=K(S,x,w,c,-1,g),at(l,h,g,s,b,S,i),r.negate(L,L),r.add(O,L,g),b=K(A,E,P,c,-1,g),at(l,h,g,s,b,A,i),b=K(A,E,P,c,p+1,v),at(l,h,v,s,b,A,i)}else{let L,g,T;y.y<0?(L=a.attributes,g=a.indices,T=d):(L=o.attributes,g=o.indices,T=m),b=K(L,g,T,c,p,y),at(l,h,y,s,b,L,i),b=K(L,g,T,c,p+1,v),at(l,h,v,s,b,L,i)}}Ft(t,a,o)}var oe=new V,Be=new V,le=new r,fe=new r,Bt=new r,Fe=new r,ke=new r,Me=new r,re=new pt;function ce(t){let e=t.attributes,n=e.position.values,s=e.prevPosition.values,i=e.nextPosition.values,c=n.length;for(let o=0;o<c;o+=3){let a=r.unpack(n,o,le);if(a.x>0)continue;let p=r.unpack(s,o,fe);(a.y<0&&p.y>0||a.y>0&&p.y<0)&&(o-3>0?(s[o]=n[o-3],s[o+1]=n[o-2],s[o+2]=n[o-1]):r.pack(a,s,o));let u=r.unpack(i,o,Bt);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(o+3<c?(i[o]=n[o+3],i[o+1]=n[o+4],i[o+2]=n[o+5]):r.pack(a,i,o))}}var _e=5*N.EPSILON9,Tt=N.EPSILON6;function Ue(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=n.prevPosition.values,c=n.nextPosition.values,o=n.expandAndWidth.values,a=f(n.st)?n.st.values:void 0,p=f(n.color)?n.color.values:void 0,u=ut(e),d=ut(e),m,l,h,y=!1,v=s.length/3;for(m=0;m<v;m+=4){let b=m,S=m+2,x=r.fromArray(s,b*3,le),w=r.fromArray(s,S*3,fe);if(Math.abs(x.y)<Tt)for(x.y=Tt*(w.y<0?-1:1),s[m*3+1]=x.y,s[(m+1)*3+1]=x.y,l=b*3;l<b*3+12;l+=3)i[l]=s[m*3],i[l+1]=s[m*3+1],i[l+2]=s[m*3+2];if(Math.abs(w.y)<Tt)for(w.y=Tt*(x.y<0?-1:1),s[(m+2)*3+1]=w.y,s[(m+3)*3+1]=w.y,l=b*3;l<b*3+12;l+=3)c[l]=s[(m+2)*3],c[l+1]=s[(m+2)*3+1],c[l+2]=s[(m+2)*3+2];let A=u.attributes,E=u.indices,P=d.attributes,O=d.indices,L=Lt.lineSegmentPlane(x,w,ue,Fe);if(f(L)){y=!0;let g=r.multiplyByScalar(r.UNIT_Y,_e,ke);x.y<0&&(r.negate(g,g),A=d.attributes,E=d.indices,P=u.attributes,O=u.indices);let T=r.add(L,g,Me);A.position.values.push(x.x,x.y,x.z,x.x,x.y,x.z),A.position.values.push(T.x,T.y,T.z),A.position.values.push(T.x,T.y,T.z),A.prevPosition.values.push(i[b*3],i[b*3+1],i[b*3+2]),A.prevPosition.values.push(i[b*3+3],i[b*3+4],i[b*3+5]),A.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),r.negate(g,g),r.add(L,g,T),P.position.values.push(T.x,T.y,T.z),P.position.values.push(T.x,T.y,T.z),P.position.values.push(w.x,w.y,w.z,w.x,w.y,w.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.nextPosition.values.push(w.x,w.y,w.z,w.x,w.y,w.z),P.nextPosition.values.push(c[S*3],c[S*3+1],c[S*3+2]),P.nextPosition.values.push(c[S*3+3],c[S*3+4],c[S*3+5]);let C=V.fromArray(o,b*2,oe),z=Math.abs(C.y);A.expandAndWidth.values.push(-1,z,1,z),A.expandAndWidth.values.push(-1,-z,1,-z),P.expandAndWidth.values.push(-1,z,1,z),P.expandAndWidth.values.push(-1,-z,1,-z);let q=r.magnitudeSquared(r.subtract(L,x,Bt));if(q/=r.magnitudeSquared(r.subtract(w,x,Bt)),f(p)){let R=pt.fromArray(p,b*4,re),G=pt.fromArray(p,S*4,re),M=N.lerp(R.x,G.x,q),J=N.lerp(R.y,G.y,q),Y=N.lerp(R.z,G.z,q),_=N.lerp(R.w,G.w,q);for(l=b*4;l<b*4+8;++l)A.color.values.push(p[l]);for(A.color.values.push(M,J,Y,_),A.color.values.push(M,J,Y,_),P.color.values.push(M,J,Y,_),P.color.values.push(M,J,Y,_),l=S*4;l<S*4+8;++l)P.color.values.push(p[l])}if(f(a)){let R=V.fromArray(a,b*2,oe),G=V.fromArray(a,(m+3)*2,Be),M=N.lerp(R.x,G.x,q);for(l=b*2;l<b*2+4;++l)A.st.values.push(a[l]);for(A.st.values.push(M,R.y),A.st.values.push(M,G.y),P.st.values.push(M,R.y),P.st.values.push(M,G.y),l=S*2;l<S*2+4;++l)P.st.values.push(a[l])}h=A.position.values.length/3-4,E.push(h,h+2,h+1),E.push(h+1,h+2,h+3),h=P.position.values.length/3-4,O.push(h,h+2,h+1),O.push(h+1,h+2,h+3)}else{let g,T;for(x.y<0?(g=d.attributes,T=d.indices):(g=u.attributes,T=u.indices),g.position.values.push(x.x,x.y,x.z),g.position.values.push(x.x,x.y,x.z),g.position.values.push(w.x,w.y,w.z),g.position.values.push(w.x,w.y,w.z),l=m*3;l<m*3+12;++l)g.prevPosition.values.push(i[l]),g.nextPosition.values.push(c[l]);for(l=m*2;l<m*2+8;++l)g.expandAndWidth.values.push(o[l]),f(a)&&g.st.values.push(a[l]);if(f(p))for(l=m*4;l<m*4+16;++l)g.color.values.push(p[l]);h=g.position.values.length/3-4,T.push(h,h+2,h+1),T.push(h+1,h+2,h+3)}}y&&(ce(d),ce(u)),Ft(t,d,u)}k.splitLongitude=function(t){if(!f(t))throw new I("instance is required.");let e=t.geometry,n=e.boundingSphere;if(f(n)&&(n.center.x-n.radius>0||ot.intersectPlane(n,Et.ORIGIN_ZX_PLANE)!==Ut.INTERSECTING))return t;if(e.geometryType!==dt.NONE)switch(e.geometryType){case dt.POLYLINES:Ue(t);break;case dt.TRIANGLES:ie(t);break;case dt.LINES:se(t);break}else Le(e),e.primitiveType===D.TRIANGLES?ie(t):e.primitiveType===D.LINES&&se(t);return t};var Pn=k;export{Pn as a}; diff --git a/public/Cesium/Workers/chunk-WGGIH7QW.js b/public/Cesium/Workers/chunk-WGGIH7QW.js new file mode 100644 index 000000000..e4fea680c --- /dev/null +++ b/public/Cesium/Workers/chunk-WGGIH7QW.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as g,b as d}from"./chunk-4IW2T6GF.js";import{h as x}from"./chunk-PSPPBZWI.js";import{b as p,c as M,d as O}from"./chunk-64RSHJUE.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";function n(i,h,o,t){this.x=i??0,this.y=h??0,this.width=o??0,this.height=t??0}n.packedLength=4;n.pack=function(i,h,o){return m.typeOf.object("value",i),m.defined("array",h),o=o??0,h[o++]=i.x,h[o++]=i.y,h[o++]=i.width,h[o]=i.height,h};n.unpack=function(i,h,o){return m.defined("array",i),h=h??0,f(o)||(o=new n),o.x=i[h++],o.y=i[h++],o.width=i[h++],o.height=i[h],o};n.fromPoints=function(i,h){if(f(h)||(h=new n),!f(i)||i.length===0)return h.x=0,h.y=0,h.width=0,h.height=0,h;let o=i.length,t=i[0].x,c=i[0].y,e=i[0].x,w=i[0].y;for(let y=1;y<o;y++){let R=i[y],b=R.x,j=R.y;t=Math.min(b,t),e=Math.max(b,e),c=Math.min(j,c),w=Math.max(j,w)}return h.x=t,h.y=c,h.width=e-t,h.height=w-c,h};var L=new g,X=new p,Y=new p;n.fromRectangle=function(i,h,o){if(f(o)||(o=new n),!f(i))return o.x=0,o.y=0,o.width=0,o.height=0,o;L._ellipsoid=O.default,h=h??L;let t=h.project(x.southwest(i,X)),c=h.project(x.northeast(i,Y));return M.subtract(c,t,c),o.x=t.x,o.y=t.y,o.width=c.x,o.height=c.y,o};n.clone=function(i,h){if(f(i))return f(h)?(h.x=i.x,h.y=i.y,h.width=i.width,h.height=i.height,h):new n(i.x,i.y,i.width,i.height)};n.union=function(i,h,o){m.typeOf.object("left",i),m.typeOf.object("right",h),f(o)||(o=new n);let t=Math.min(i.x,h.x),c=Math.min(i.y,h.y),e=Math.max(i.x+i.width,h.x+h.width),w=Math.max(i.y+i.height,h.y+h.height);return o.x=t,o.y=c,o.width=e-t,o.height=w-c,o};n.expand=function(i,h,o){m.typeOf.object("rectangle",i),m.typeOf.object("point",h),o=n.clone(i,o);let t=h.x-o.x,c=h.y-o.y;return t>o.width?o.width=t:t<0&&(o.width-=t,o.x=h.x),c>o.height?o.height=c:c<0&&(o.height-=c,o.y=h.y),o};n.intersect=function(i,h){m.typeOf.object("left",i),m.typeOf.object("right",h);let o=i.x,t=i.y,c=h.x,e=h.y;return o>c+h.width||o+i.width<c||t+i.height<e||t>e+h.height?d.OUTSIDE:d.INTERSECTING};n.equals=function(i,h){return i===h||f(i)&&f(h)&&i.x===h.x&&i.y===h.y&&i.width===h.width&&i.height===h.height};n.prototype.clone=function(i){return n.clone(this,i)};n.prototype.intersect=function(i){return n.intersect(this,i)};n.prototype.equals=function(i){return n.equals(this,i)};var S=n;export{S as a}; diff --git a/public/Cesium/Workers/chunk-WWA5PL4H.js b/public/Cesium/Workers/chunk-WWA5PL4H.js new file mode 100644 index 000000000..9abaaf197 --- /dev/null +++ b/public/Cesium/Workers/chunk-WWA5PL4H.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z,c as q}from"./chunk-B4AA3ARO.js";import{a as U}from"./chunk-XRL4AVS5.js";import{f as I}from"./chunk-PSPPBZWI.js";import{a as e,e as C}from"./chunk-64RSHJUE.js";import{a as O}from"./chunk-3SSKC3VN.js";import{e as j}from"./chunk-VTAIKJXX.js";var G={},B=new e,J=new e,_=new e,v=new e,g=[new e,new e],K=new e,W=new e,X=new e,$=new e,ee=new e,te=new e,ne=new e,oe=new e,re=new e,se=new e,F=new I,k=new C;function V(o,s,a,c,r){let d=e.angleBetween(e.subtract(s,o,B),e.subtract(a,o,J)),y=c===z.BEVELED?1:Math.ceil(d/O.toRadians(5))+1,n=y*3,l=new Array(n);l[n-3]=a.x,l[n-2]=a.y,l[n-1]=a.z;let m;r?m=C.fromQuaternion(I.fromAxisAngle(e.negate(o,B),d/y,F),k):m=C.fromQuaternion(I.fromAxisAngle(o,d/y,F),k);let t=0;s=e.clone(s,B);for(let i=0;i<y;i++)s=C.multiplyByVector(m,s,s),l[t++]=s.x,l[t++]=s.y,l[t++]=s.z;return l}function ae(o){let s=K,a=W,c=X,r=o[1];a=e.fromArray(o[1],r.length-3,a),c=e.fromArray(o[0],0,c),s=e.midpoint(a,c,s);let d=V(s,a,c,z.ROUNDED,!1),y=o.length-1,n=o[y-1];r=o[y],a=e.fromArray(n,n.length-3,a),c=e.fromArray(r,0,c),s=e.midpoint(a,c,s);let l=V(s,a,c,z.ROUNDED,!1);return[d,l]}function H(o,s,a,c){let r=B;return c?r=e.add(o,s,r):(s=e.negate(s,s),r=e.add(o,s,r)),[r.x,r.y,r.z,a.x,a.y,a.z]}function T(o,s,a,c){let r=new Array(o.length),d=new Array(o.length),y=e.multiplyByScalar(s,a,B),n=e.negate(y,J),l=0,m=o.length-1;for(let t=0;t<o.length;t+=3){let i=e.fromArray(o,t,_),w=e.add(i,n,v);r[l++]=w.x,r[l++]=w.y,r[l++]=w.z;let f=e.add(i,y,v);d[m--]=f.z,d[m--]=f.y,d[m--]=f.x}return c.push(r,d),c}G.addAttribute=function(o,s,a,c){let r=s.x,d=s.y,y=s.z;j(a)&&(o[a]=r,o[a+1]=d,o[a+2]=y),j(c)&&(o[c]=y,o[c-1]=d,o[c-2]=r)};var le=new e,ce=new e;G.computePositions=function(o){let s=o.granularity,a=o.positions,c=o.ellipsoid,r=o.width/2,d=o.cornerType,y=o.saveAttributes,n=K,l=W,m=X,t=$,i=ee,w=te,f=ne,u=oe,p=re,x=se,E=[],S=y?[]:void 0,D=y?[]:void 0,h=a[0],N=a[1];l=e.normalize(e.subtract(N,h,l),l),n=c.geodeticSurfaceNormal(h,n),t=e.normalize(e.cross(n,l,t),t),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),f=e.clone(h,f),h=N,m=e.negate(l,m);let A,P=[],M,Y=a.length;for(M=1;M<Y-1;M++){n=c.geodeticSurfaceNormal(h,n),N=a[M+1],l=e.normalize(e.subtract(N,h,l),l);let L=e.multiplyByScalar(n,e.dot(l,n),le);e.subtract(l,L,L),e.normalize(L,L);let R=e.multiplyByScalar(n,e.dot(m,n),ce);if(e.subtract(m,R,R),e.normalize(R,R),!O.equalsEpsilon(Math.abs(e.dot(L,R)),1,O.EPSILON7)){i=e.normalize(e.add(l,m,i),i),i=e.cross(i,n,i),i=e.cross(n,i,i),i=e.normalize(i,i);let Z=r/Math.max(.25,e.magnitude(e.cross(i,m,B))),b=q.angleIsGreaterThanPi(l,m,h,c);i=e.multiplyByScalar(i,Z,i),b?(u=e.add(h,i,u),x=e.add(u,e.multiplyByScalar(t,r,x),x),p=e.add(u,e.multiplyByScalar(t,r*2,p),p),g[0]=e.clone(f,g[0]),g[1]=e.clone(x,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),w=e.clone(p,w),t=e.normalize(e.cross(n,l,t),t),p=e.add(u,e.multiplyByScalar(t,r*2,p),p),f=e.add(u,e.multiplyByScalar(t,r,f),f),d===z.ROUNDED||d===z.BEVELED?P.push({leftPositions:V(u,w,p,d,b)}):P.push({leftPositions:H(h,e.negate(i,i),p,b)})):(p=e.add(h,i,p),x=e.add(p,e.negate(e.multiplyByScalar(t,r,x),x),x),u=e.add(p,e.negate(e.multiplyByScalar(t,r*2,u),u),u),g[0]=e.clone(f,g[0]),g[1]=e.clone(x,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),w=e.clone(u,w),t=e.normalize(e.cross(n,l,t),t),u=e.add(p,e.negate(e.multiplyByScalar(t,r*2,u),u),u),f=e.add(p,e.negate(e.multiplyByScalar(t,r,f),f),f),d===z.ROUNDED||d===z.BEVELED?P.push({rightPositions:V(p,w,u,d,b)}):P.push({rightPositions:H(h,i,u,b)})),m=e.negate(l,m)}h=N}n=c.geodeticSurfaceNormal(h,n),g[0]=e.clone(f,g[0]),g[1]=e.clone(h,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z));let Q;return d===z.ROUNDED&&(Q=ae(E)),{positions:E,corners:P,lefts:S,normals:D,endPositions:Q}};var we=G;export{we as a}; diff --git a/public/Cesium/Workers/chunk-WZDE3RYP.js b/public/Cesium/Workers/chunk-WZDE3RYP.js new file mode 100644 index 000000000..7acee6cff --- /dev/null +++ b/public/Cesium/Workers/chunk-WZDE3RYP.js @@ -0,0 +1,28 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e as f}from"./chunk-VTAIKJXX.js";function c(t){let n,a=t.name,e=t.message;f(a)&&f(e)?n=`${a}: ${e}`:n=t.toString();let o=t.stack;return f(o)&&(n+=` +${o}`),n}var i=c;function l(t){async function n({data:e}){let o=[],s={id:e.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=e.baseUrl;try{let r=await t(e.parameters,o);s.result=r}catch(r){r instanceof Error?s.error={name:r.name,message:r.message,stack:r.stack}:s.error=r}e.canTransferArrayBuffer||(o.length=0);try{postMessage(s,o)}catch(r){s.result=void 0,s.error=`postMessage failed with error: ${i(r)} + with responseMessage: ${JSON.stringify(s)}`,postMessage(s)}}function a(e){postMessage({id:e.data?.id,error:`postMessage failed with error: ${JSON.stringify(e)}`})}return self.onmessage=n,self.onmessageerror=a,self}var d=l;export{d as a}; diff --git a/public/Cesium/Workers/chunk-XRL4AVS5.js b/public/Cesium/Workers/chunk-XRL4AVS5.js new file mode 100644 index 000000000..7233314ab --- /dev/null +++ b/public/Cesium/Workers/chunk-XRL4AVS5.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as G}from"./chunk-U4IEOH5K.js";import{a as z}from"./chunk-G5AGHVVC.js";import{b as B}from"./chunk-DMEY62ID.js";import{a as C}from"./chunk-HTFSEEMT.js";import{b as L}from"./chunk-PSPPBZWI.js";import{a,b as D,d as I}from"./chunk-64RSHJUE.js";import{a as S}from"./chunk-3SSKC3VN.js";import{a as x}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";var p={};p.numberOfPoints=function(r,n,o){let e=a.distance(r,n);return Math.ceil(e/o)};p.numberOfPointsRhumbLine=function(r,n,o){let e=Math.pow(r.longitude-n.longitude,2)+Math.pow(r.latitude-n.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(e/(o*o))))};var Z=new D;p.extractHeights=function(r,n){let o=r.length,e=new Array(o);for(let t=0;t<o;t++){let l=r[t];e[t]=n.cartesianToCartographic(l,Z).height}return e};var Y=new L,V=new a,_=new a,F=new C(a.UNIT_X,0),v=new a,j=new C(a.UNIT_X,0),J=new a,K=new a,O=[];function U(r,n,o){let e=O;e.length=r;let t;if(n===o){for(t=0;t<r;t++)e[t]=n;return e}let u=(o-n)/r;for(t=0;t<r;t++){let d=n+t*u;e[t]=d}return e}var N=new D,E=new D,b=new a,k=new a,Q=new a,M=new G,R=new z;function W(r,n,o,e,t,l,u,d){let c=e.scaleToGeodeticSurface(r,k),w=e.scaleToGeodeticSurface(n,Q),h=p.numberOfPoints(r,n,o),f=e.cartesianToCartographic(c,N),y=e.cartesianToCartographic(w,E),g=U(h,t,l);M.setEndPoints(f,y);let P=M.surfaceDistance/h,i=d;f.height=t;let s=e.cartographicToCartesian(f,b);a.pack(s,u,i),i+=3;for(let m=1;m<h;m++){let A=M.interpolateUsingSurfaceDistance(m*P,E);A.height=g[m],s=e.cartographicToCartesian(A,b),a.pack(s,u,i),i+=3}return i}function $(r,n,o,e,t,l,u,d){let c=e.cartesianToCartographic(r,N),w=e.cartesianToCartographic(n,E),h=p.numberOfPointsRhumbLine(c,w,o);c.height=0,w.height=0;let f=U(h,t,l);R.ellipsoid.equals(e)||(R=new z(void 0,void 0,e)),R.setEndPoints(c,w);let y=R.surfaceDistance/h,g=d;c.height=t;let P=e.cartographicToCartesian(c,b);a.pack(P,u,g),g+=3;for(let i=1;i<h;i++){let s=R.interpolateUsingSurfaceDistance(i*y,E);s.height=f[i],P=e.cartographicToCartesian(s,b),a.pack(P,u,g),g+=3}return g}p.wrapLongitude=function(r,n){let o=[],e=[];if(T(r)&&r.length>0){n=n??L.IDENTITY;let t=L.inverseTransformation(n,Y),l=L.multiplyByPoint(t,a.ZERO,V),u=a.normalize(L.multiplyByPointAsVector(t,a.UNIT_Y,_),_),d=C.fromPointNormal(l,u,F),c=a.normalize(L.multiplyByPointAsVector(t,a.UNIT_X,v),v),w=C.fromPointNormal(l,c,j),h=1;o.push(a.clone(r[0]));let f=o[0],y=r.length;for(let g=1;g<y;++g){let P=r[g];if(C.getPointDistance(w,f)<0||C.getPointDistance(w,P)<0){let i=B.lineSegmentPlane(f,P,d,J);if(T(i)){let s=a.multiplyByScalar(u,5e-9,K);C.getPointDistance(d,f)<0&&a.negate(s,s),o.push(a.add(i,s,new a)),e.push(h+1),a.negate(s,s),o.push(a.add(i,s,new a)),h=1}}o.push(a.clone(r[g])),h++,f=P}e.push(h)}return{positions:o,lengths:e}};p.generateArc=function(r){T(r)||(r={});let n=r.positions;if(!T(n))throw new x("options.positions is required.");let o=n.length,e=r.ellipsoid??I.default,t=r.height??0,l=Array.isArray(t);if(o<1)return[];if(o===1){let i=e.scaleToGeodeticSurface(n[0],k);if(t=l?t[0]:t,t!==0){let s=e.geodeticSurfaceNormal(i,b);a.multiplyByScalar(s,t,s),a.add(i,s,i)}return[i.x,i.y,i.z]}let u=r.minDistance;if(!T(u)){let i=r.granularity??S.RADIANS_PER_DEGREE;u=S.chordLength(i,e.maximumRadius)}let d=0,c;for(c=0;c<o-1;c++)d+=p.numberOfPoints(n[c],n[c+1],u);let w=(d+1)*3,h=new Array(w),f=0;for(c=0;c<o-1;c++){let i=n[c],s=n[c+1],m=l?t[c]:t,A=l?t[c+1]:t;f=W(i,s,u,e,m,A,h,f)}O.length=0;let y=n[o-1],g=e.cartesianToCartographic(y,N);g.height=l?t[o-1]:t;let P=e.cartographicToCartesian(g,b);return a.pack(P,h,w-3),h};var H=new D,tt=new D;p.generateRhumbArc=function(r){T(r)||(r={});let n=r.positions;if(!T(n))throw new x("options.positions is required.");let o=n.length,e=r.ellipsoid??I.default,t=r.height??0,l=Array.isArray(t);if(o<1)return[];if(o===1){let m=e.scaleToGeodeticSurface(n[0],k);if(t=l?t[0]:t,t!==0){let A=e.geodeticSurfaceNormal(m,b);a.multiplyByScalar(A,t,A),a.add(m,A,m)}return[m.x,m.y,m.z]}let u=r.granularity??S.RADIANS_PER_DEGREE,d=0,c,w=e.cartesianToCartographic(n[0],H),h;for(c=0;c<o-1;c++)h=e.cartesianToCartographic(n[c+1],tt),d+=p.numberOfPointsRhumbLine(w,h,u),w=D.clone(h,H);let f=(d+1)*3,y=new Array(f),g=0;for(c=0;c<o-1;c++){let m=n[c],A=n[c+1],q=l?t[c]:t,X=l?t[c+1]:t;g=$(m,A,u,e,q,X,y,g)}O.length=0;let P=n[o-1],i=e.cartesianToCartographic(P,N);i.height=l?t[o-1]:t;let s=e.cartographicToCartesian(i,b);return a.pack(s,y,f-3),y};p.generateCartesianArc=function(r){let n=p.generateArc(r),o=n.length/3,e=new Array(o);for(let t=0;t<o;t++)e[t]=a.unpack(n,t*3);return e};p.generateCartesianRhumbArc=function(r){let n=p.generateRhumbArc(r),o=n.length/3,e=new Array(o);for(let t=0;t<o;t++)e[t]=a.unpack(n,t*3);return e};var gt=p;export{gt as a}; diff --git a/public/Cesium/Workers/combineGeometry.js b/public/Cesium/Workers/combineGeometry.js new file mode 100644 index 000000000..717fc7436 --- /dev/null +++ b/public/Cesium/Workers/combineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as e}from"./chunk-VTBDSFTG.js";import{a as r}from"./chunk-WZDE3RYP.js";import"./chunk-DQQ63PYM.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";function n(o,t){let m=e.unpackCombineGeometryParameters(o),i=e.combineGeometry(m);return e.packCombineGeometryResults(i,t)}var c=r(n);export{c as default}; diff --git a/public/Cesium/Workers/createBoxGeometry.js b/public/Cesium/Workers/createBoxGeometry.js new file mode 100644 index 000000000..628916e77 --- /dev/null +++ b/public/Cesium/Workers/createBoxGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-QN3VOORQ.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createBoxOutlineGeometry.js b/public/Cesium/Workers/createBoxOutlineGeometry.js new file mode 100644 index 000000000..0e22cc18b --- /dev/null +++ b/public/Cesium/Workers/createBoxOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as d}from"./chunk-GBYLG25F.js";import{a as l}from"./chunk-A56XVLQR.js";import{b as O,c as h,d as p}from"./chunk-RCV6KWXS.js";import{d as A}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a}from"./chunk-AU7IKHOH.js";import{a as m,f as s}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as b,b as r}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";var g=new m;function f(e){e=e??s.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;if(r.typeOf.object("min",t),r.typeOf.object("max",n),c(e.offsetAttribute)&&e.offsetAttribute===d.TOP)throw new b("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._min=m.clone(t),this._max=m.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}f.fromDimensions=function(e){e=e??s.EMPTY_OBJECT;let t=e.dimensions;r.typeOf.object("dimensions",t),r.typeOf.number.greaterThanOrEquals("dimensions.x",t.x,0),r.typeOf.number.greaterThanOrEquals("dimensions.y",t.y,0),r.typeOf.number.greaterThanOrEquals("dimensions.z",t.z,0);let n=m.multiplyByScalar(t,.5,new m);return new f({minimum:m.negate(n,new m),maximum:n,offsetAttribute:e.offsetAttribute})};f.fromAxisAlignedBoundingBox=function(e){return r.typeOf.object("boundindBox",e),new f({minimum:e.minimum,maximum:e.maximum})};f.packedLength=2*m.packedLength+1;f.pack=function(e,t,n){return r.typeOf.object("value",e),r.defined("array",t),n=n??0,m.pack(e._min,t,n),m.pack(e._max,t,n+m.packedLength),t[n+m.packedLength*2]=e._offsetAttribute??-1,t};var w=new m,x=new m,_={minimum:w,maximum:x,offsetAttribute:void 0};f.unpack=function(e,t,n){r.defined("array",e),t=t??0;let u=m.unpack(e,t,w),o=m.unpack(e,t+m.packedLength,x),i=e[t+m.packedLength*2];return c(n)?(n._min=m.clone(u,n._min),n._max=m.clone(o,n._max),n._offsetAttribute=i===-1?void 0:i,n):(_.offsetAttribute=i===-1?void 0:i,new f(_))};f.createGeometry=function(e){let t=e._min,n=e._max;if(m.equals(t,n))return;let u=new l,o=new Uint16Array(24),i=new Float64Array(24);i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=n.x,i[4]=t.y,i[5]=t.z,i[6]=n.x,i[7]=n.y,i[8]=t.z,i[9]=t.x,i[10]=n.y,i[11]=t.z,i[12]=t.x,i[13]=t.y,i[14]=n.z,i[15]=n.x,i[16]=t.y,i[17]=n.z,i[18]=n.x,i[19]=n.y,i[20]=n.z,i[21]=t.x,i[22]=n.y,i[23]=n.z,u.position=new p({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:i}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let k=m.subtract(n,t,g),E=m.magnitude(k)*.5;if(c(e._offsetAttribute)){let T=i.length,z=e._offsetAttribute===d.NONE?0:1,B=new Uint8Array(T/3).fill(z);u.applyOffset=new p({componentDatatype:a.UNSIGNED_BYTE,componentsPerAttribute:1,values:B})}return new h({attributes:u,indices:o,primitiveType:O.LINES,boundingSphere:new A(m.ZERO,E),offsetAttribute:e._offsetAttribute})};var y=f;function L(e,t){return c(t)&&(e=y.unpack(e,t)),y.createGeometry(e)}var V=L;export{V as default}; diff --git a/public/Cesium/Workers/createCircleGeometry.js b/public/Cesium/Workers/createCircleGeometry.js new file mode 100644 index 000000000..26bc1e060 --- /dev/null +++ b/public/Cesium/Workers/createCircleGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l}from"./chunk-FEVXJ54I.js";import"./chunk-UP6I5URU.js";import"./chunk-D6AA5QVT.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-GBYLG25F.js";import{a as m}from"./chunk-CYCB63OH.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a,d as s,f as _}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as p}from"./chunk-LEYMRMBK.js";import{e as d}from"./chunk-VTAIKJXX.js";function n(e){e=e??_.EMPTY_OBJECT;let r=e.radius;p.typeOf.number("radius",r);let o={center:e.center,semiMajorAxis:r,semiMinorAxis:r,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new l(o),this._workerName="createCircleGeometry"}n.packedLength=l.packedLength;n.pack=function(e,r,o){return p.typeOf.object("value",e),l.pack(e._ellipseGeometry,r,o)};var h=new l({center:new a,semiMajorAxis:1,semiMinorAxis:1}),t={center:new a,radius:void 0,ellipsoid:s.clone(s.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new m,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};n.unpack=function(e,r,o){let i=l.unpack(e,r,h);return t.center=a.clone(i._center,t.center),t.ellipsoid=s.clone(i._ellipsoid,t.ellipsoid),t.ellipsoid=s.clone(i._ellipsoid,h._ellipsoid),t.height=i._height,t.extrudedHeight=i._extrudedHeight,t.granularity=i._granularity,t.vertexFormat=m.clone(i._vertexFormat,t.vertexFormat),t.stRotation=i._stRotation,t.shadowVolume=i._shadowVolume,d(o)?(t.semiMajorAxis=i._semiMajorAxis,t.semiMinorAxis=i._semiMinorAxis,o._ellipseGeometry=new l(t),o):(t.radius=i._semiMajorAxis,new n(t))};n.createGeometry=function(e){return l.createGeometry(e._ellipseGeometry)};n.createShadowVolume=function(e,r,o){let i=e._ellipseGeometry._granularity,u=e._ellipseGeometry._ellipsoid,f=r(i,u),x=o(i,u);return new n({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:u,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:f,height:x,vertexFormat:m.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(n.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var c=n;function g(e,r){return d(r)&&(e=c.unpack(e,r)),e._ellipseGeometry._center=a.clone(e._ellipseGeometry._center),e._ellipseGeometry._ellipsoid=s.clone(e._ellipseGeometry._ellipsoid),c.createGeometry(e)}var V=g;export{V as default}; diff --git a/public/Cesium/Workers/createCircleOutlineGeometry.js b/public/Cesium/Workers/createCircleOutlineGeometry.js new file mode 100644 index 000000000..bcffcbc16 --- /dev/null +++ b/public/Cesium/Workers/createCircleOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as n}from"./chunk-HWXX4CWK.js";import"./chunk-UP6I5URU.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o,d as s,f as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as d}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function m(e){e=e??c.EMPTY_OBJECT;let r=e.radius;d.typeOf.number("radius",r);let l={center:e.center,semiMajorAxis:r,semiMinorAxis:r,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new n(l),this._workerName="createCircleOutlineGeometry"}m.packedLength=n.packedLength;m.pack=function(e,r,l){return d.typeOf.object("value",e),n.pack(e._ellipseGeometry,r,l)};var p=new n({center:new o,semiMajorAxis:1,semiMinorAxis:1}),i={center:new o,radius:void 0,ellipsoid:s.clone(s.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};m.unpack=function(e,r,l){let t=n.unpack(e,r,p);return i.center=o.clone(t._center,i.center),i.ellipsoid=s.clone(t._ellipsoid,i.ellipsoid),i.height=t._height,i.extrudedHeight=t._extrudedHeight,i.granularity=t._granularity,i.numberOfVerticalLines=t._numberOfVerticalLines,a(l)?(i.semiMajorAxis=t._semiMajorAxis,i.semiMinorAxis=t._semiMinorAxis,l._ellipseGeometry=new n(i),l):(i.radius=t._semiMajorAxis,new m(i))};m.createGeometry=function(e){return n.createGeometry(e._ellipseGeometry)};var u=m;function f(e,r){return a(r)&&(e=u.unpack(e,r)),e._ellipseGeometry._center=o.clone(e._ellipseGeometry._center),e._ellipseGeometry._ellipsoid=s.clone(e._ellipseGeometry._ellipsoid),u.createGeometry(e)}var E=f;export{E as default}; diff --git a/public/Cesium/Workers/createCoplanarPolygonGeometry.js b/public/Cesium/Workers/createCoplanarPolygonGeometry.js new file mode 100644 index 000000000..c9d8f5274 --- /dev/null +++ b/public/Cesium/Workers/createCoplanarPolygonGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as et}from"./chunk-WGGIH7QW.js";import{a as Q}from"./chunk-EZUYS2JF.js";import"./chunk-CNCV5UL7.js";import{a as u}from"./chunk-AJYK4IVJ.js";import"./chunk-J6UP6FLE.js";import{a as I}from"./chunk-D6AA5QVT.js";import{a as $}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as f}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as ot}from"./chunk-77IHZJJ3.js";import{a as tt}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as J}from"./chunk-OFUUQVMR.js";import{a as X}from"./chunk-A56XVLQR.js";import{b as W,c as Y,d as z}from"./chunk-RCV6KWXS.js";import{d as K}from"./chunk-4IW2T6GF.js";import{f as q}from"./chunk-PSPPBZWI.js";import{a as B}from"./chunk-AU7IKHOH.js";import{a as i,c as H,d as m,e as g,f as U}from"./chunk-64RSHJUE.js";import{a as V}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as G}from"./chunk-LEYMRMBK.js";import{e as d}from"./chunk-VTAIKJXX.js";var st=new i,at=new et,pt=new H,lt=new H,mt=new i,ft=new i,ut=new i,M=new i,yt=new i,ht=new i,nt=new q,dt=new g,gt=new g,Pt=new i;function wt(e,t,o,a,y,_,r,n,p){let A=e.positions,c=ot.triangulate(e.positions2D,e.holes);c.length<3&&(c=[0,1,2]);let P=J.createTypedArray(A.length,c.length);P.set(c);let E=dt;if(a!==0){let h=q.fromAxisAngle(r,a,nt);if(E=g.fromQuaternion(h,E),t.tangent||t.bitangent){h=q.fromAxisAngle(r,-a,nt);let O=g.fromQuaternion(h,gt);n=i.normalize(g.multiplyByVector(O,n,n),n),t.bitangent&&(p=i.normalize(i.cross(r,n,p),p))}}else E=g.clone(g.IDENTITY,E);let N=lt;t.st&&(N.x=o.x,N.y=o.y);let b=A.length,k=b*3,C=new Float64Array(k),L=t.normal?new Float32Array(k):void 0,D=t.tangent?new Float32Array(k):void 0,F=t.bitangent?new Float32Array(k):void 0,T=t.st?new Float32Array(b*2):void 0,j=0,R=0,l=0,S=0,s=0;for(let h=0;h<b;h++){let O=A[h];if(C[j++]=O.x,C[j++]=O.y,C[j++]=O.z,t.st)if(d(y)&&y.positions.length===b)T[s++]=y.positions[h].x,T[s++]=y.positions[h].y;else{let it=g.multiplyByVector(E,O,st),v=_(it,pt);H.subtract(v,N,v);let rt=V.clamp(v.x/o.width,0,1),ct=V.clamp(v.y/o.height,0,1);T[s++]=rt,T[s++]=ct}t.normal&&(L[R++]=r.x,L[R++]=r.y,L[R++]=r.z),t.tangent&&(D[S++]=n.x,D[S++]=n.y,D[S++]=n.z),t.bitangent&&(F[l++]=p.x,F[l++]=p.y,F[l++]=p.z)}let w=new X;return t.position&&(w.position=new z({componentDatatype:B.DOUBLE,componentsPerAttribute:3,values:C})),t.normal&&(w.normal=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:L})),t.tangent&&(w.tangent=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:D})),t.bitangent&&(w.bitangent=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:F})),t.st&&(w.st=new z({componentDatatype:B.FLOAT,componentsPerAttribute:2,values:T})),new Y({attributes:w,indices:P,primitiveType:W.TRIANGLES})}function x(e){e=e??U.EMPTY_OBJECT;let t=e.polygonHierarchy,o=e.textureCoordinates;G.defined("options.polygonHierarchy",t);let a=e.vertexFormat??f.DEFAULT;this._vertexFormat=f.clone(a),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=m.clone(e.ellipsoid??m.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=o,this.packedLength=u.computeHierarchyPackedLength(t,i)+f.packedLength+m.packedLength+(d(o)?u.computeHierarchyPackedLength(o,H):1)+2}x.fromPositions=function(e){e=e??U.EMPTY_OBJECT,G.defined("options.positions",e.positions);let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new x(t)};x.pack=function(e,t,o){return G.typeOf.object("value",e),G.defined("array",t),o=o??0,o=u.packPolygonHierarchy(e._polygonHierarchy,t,o,i),m.pack(e._ellipsoid,t,o),o+=m.packedLength,f.pack(e._vertexFormat,t,o),o+=f.packedLength,t[o++]=e._stRotation,d(e._textureCoordinates)?o=u.packPolygonHierarchy(e._textureCoordinates,t,o,H):t[o++]=-1,t[o++]=e.packedLength,t};var _t=m.clone(m.UNIT_SPHERE),At=new f,bt={polygonHierarchy:{}};x.unpack=function(e,t,o){G.defined("array",e),t=t??0;let a=u.unpackPolygonHierarchy(e,t,i);t=a.startingIndex,delete a.startingIndex;let y=m.unpack(e,t,_t);t+=m.packedLength;let _=f.unpack(e,t,At);t+=f.packedLength;let r=e[t++],n=e[t]===-1?void 0:u.unpackPolygonHierarchy(e,t,H);d(n)?(t=n.startingIndex,delete n.startingIndex):t++;let p=e[t++];return d(o)||(o=new x(bt)),o._polygonHierarchy=a,o._ellipsoid=m.clone(y,o._ellipsoid),o._vertexFormat=f.clone(_,o._vertexFormat),o._stRotation=r,o._textureCoordinates=n,o.packedLength=p,o};x.createGeometry=function(e){let t=e._vertexFormat,o=e._polygonHierarchy,a=e._stRotation,y=e._textureCoordinates,_=d(y),r=o.positions;if(r=tt(r,i.equalsEpsilon,!0),r.length<3)return;let n=mt,p=ft,A=ut,c=yt,P=ht;if(!Q.computeProjectTo2DArguments(r,M,c,P))return;if(n=i.cross(c,P,n),n=i.normalize(n,n),!i.equalsEpsilon(M,i.ZERO,V.EPSILON6)){let s=e._ellipsoid.geodeticSurfaceNormal(M,Pt);i.dot(n,s)<0&&(n=i.negate(n,n),c=i.negate(c,c))}let N=Q.createProjectPointsTo2DFunction(M,c,P),b=Q.createProjectPointTo2DFunction(M,c,P);t.tangent&&(p=i.clone(c,p)),t.bitangent&&(A=i.clone(P,A));let k=u.polygonsFromHierarchy(o,_,N,!1),C=k.hierarchy,L=k.polygons,D=function(s){return s},F=_?u.polygonsFromHierarchy(y,!0,D,!1).polygons:void 0;if(C.length===0)return;r=C[0].outerRing;let T=K.fromPoints(r),j=u.computeBoundingRectangle(n,b,r,a,at),R=[];for(let s=0;s<L.length;s++){let w=new I({geometry:wt(L[s],t,j,a,_?F[s]:void 0,b,n,p,A)});R.push(w)}let l=$.combineInstances(R)[0];l.attributes.position.values=new Float64Array(l.attributes.position.values),l.indices=J.createTypedArray(l.attributes.position.values.length/3,l.indices);let S=l.attributes;return t.position||delete S.position,new Y({attributes:S,indices:l.indices,primitiveType:l.primitiveType,boundingSphere:T})};var Z=x;function kt(e,t){return d(t)&&(e=Z.unpack(e,t)),Z.createGeometry(e)}var Xt=kt;export{Xt as default}; diff --git a/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js b/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js new file mode 100644 index 000000000..4aca4adfa --- /dev/null +++ b/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as T}from"./chunk-EZUYS2JF.js";import"./chunk-CNCV5UL7.js";import{a as l}from"./chunk-AJYK4IVJ.js";import"./chunk-J6UP6FLE.js";import{a as G}from"./chunk-D6AA5QVT.js";import{a as C}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-77IHZJJ3.js";import{a as L}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as w}from"./chunk-OFUUQVMR.js";import{a as O}from"./chunk-A56XVLQR.js";import{b,c as d,d as k}from"./chunk-RCV6KWXS.js";import{d as P}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as H}from"./chunk-AU7IKHOH.js";import{a as y,d as g,f as u}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";function E(o){let e=o.length,t=new Float64Array(e*3),i=w.createTypedArray(e,e*2),r=0,a=0;for(let n=0;n<e;n++){let p=o[n];t[r++]=p.x,t[r++]=p.y,t[r++]=p.z,i[a++]=n,i[a++]=(n+1)%e}let s=new O({position:new k({componentDatatype:H.DOUBLE,componentsPerAttribute:3,values:t})});return new d({attributes:s,indices:i,primitiveType:b.LINES})}function c(o){o=o??u.EMPTY_OBJECT;let e=o.polygonHierarchy;m.defined("options.polygonHierarchy",e),this._polygonHierarchy=e,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=l.computeHierarchyPackedLength(e,y)+1}c.fromPositions=function(o){o=o??u.EMPTY_OBJECT,m.defined("options.positions",o.positions);let e={polygonHierarchy:{positions:o.positions}};return new c(e)};c.pack=function(o,e,t){return m.typeOf.object("value",o),m.defined("array",e),t=t??0,t=l.packPolygonHierarchy(o._polygonHierarchy,e,t,y),e[t]=o.packedLength,e};var v={polygonHierarchy:{}};c.unpack=function(o,e,t){m.defined("array",o),e=e??0;let i=l.unpackPolygonHierarchy(o,e,y);e=i.startingIndex,delete i.startingIndex;let r=o[e];return f(t)||(t=new c(v)),t._polygonHierarchy=i,t.packedLength=r,t};c.createGeometry=function(o){let e=o._polygonHierarchy,t=e.positions;if(t=L(t,y.equalsEpsilon,!0),t.length<3||!T.validOutline(t))return;let r=l.polygonOutlinesFromHierarchy(e,!1);if(r.length===0)return;let a=[];for(let p=0;p<r.length;p++){let _=new G({geometry:E(r[p])});a.push(_)}let s=C.combineInstances(a)[0],n=P.fromPoints(e.positions);return new d({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:n})};var h=c;function A(o,e){return f(e)&&(o=h.unpack(o,e)),o._ellipsoid=g.clone(o._ellipsoid),h.createGeometry(o)}var Z=A;export{Z as default}; diff --git a/public/Cesium/Workers/createCorridorGeometry.js b/public/Cesium/Workers/createCorridorGeometry.js new file mode 100644 index 000000000..625a5858b --- /dev/null +++ b/public/Cesium/Workers/createCorridorGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as M}from"./chunk-WWA5PL4H.js";import{a as ut}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as bt}from"./chunk-GBYLG25F.js";import{a as J}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as _t}from"./chunk-77IHZJJ3.js";import{a as Pt}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as Nt}from"./chunk-OFUUQVMR.js";import{a as Dt}from"./chunk-A56XVLQR.js";import{b as Mt,c as Ct,d as F}from"./chunk-RCV6KWXS.js";import{d as St}from"./chunk-4IW2T6GF.js";import{h as Et}from"./chunk-PSPPBZWI.js";import{a as v}from"./chunk-AU7IKHOH.js";import{a as o,b as At,d as Y,f as Tt}from"./chunk-64RSHJUE.js";import{a as it}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as ot}from"./chunk-LEYMRMBK.js";import{e as Q}from"./chunk-VTAIKJXX.js";var Rt=new o,kt=new o,yt=new o,wt=new o,jt=new o,Ht=new o,st=new o,dt=new o;function Ut(t,e){for(let i=0;i<t.length;i++)t[i]=e.scaleToGeodeticSurface(t[i],t[i]);return t}function X(t,e,i,l,d,f){let h=t.normals,O=t.tangents,g=t.bitangents,r=o.normalize(o.cross(i,e,st),st);f.normal&&M.addAttribute(h,e,l,d),f.tangent&&M.addAttribute(O,r,l,d),f.bitangent&&M.addAttribute(g,i,l,d)}function Bt(t,e,i){let l=t.positions,d=t.corners,f=t.endPositions,h=t.lefts,O=t.normals,g=new Dt,r,a=0,s=0,n,A=0,u;for(n=0;n<l.length;n+=2)u=l[n].length-3,a+=u,A+=u*2,s+=l[n+1].length-3;for(a+=3,s+=3,n=0;n<d.length;n++){r=d[n];let c=d[n].leftPositions;Q(c)?(u=c.length,a+=u,A+=u):(u=d[n].rightPositions.length,s+=u,A+=u)}let b=Q(f),p;b&&(p=f[0].length-3,a+=p,s+=p,p/=3,A+=p*6);let z=a+s,m=new Float64Array(z),D=e.normal?new Float32Array(z):void 0,V=e.tangent?new Float32Array(z):void 0,rt=e.bitangent?new Float32Array(z):void 0,R={normals:D,tangents:V,bitangents:rt},y=0,E=z-1,S,C,H,q,P=Rt,w=kt,et,nt,pt=p/2,_=Nt.createTypedArray(z/3,A),T=0;if(b){nt=yt,et=wt;let c=f[0];for(P=o.fromArray(O,0,P),w=o.fromArray(h,0,w),n=0;n<pt;n++)nt=o.fromArray(c,(pt-1-n)*3,nt),et=o.fromArray(c,(pt+n)*3,et),M.addAttribute(m,et,y),M.addAttribute(m,nt,void 0,E),X(R,P,w,y,E,e),C=y/3,q=C+1,S=(E-2)/3,H=S-1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3}let mt=0,ft=0,at=l[mt++],j=l[mt++];m.set(at,y),m.set(j,E-j.length+1),w=o.fromArray(h,ft,w);let lt,ct;for(u=j.length-3,n=0;n<u;n+=3)lt=i.geodeticSurfaceNormal(o.fromArray(at,n,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u-n,dt),dt),P=o.normalize(o.add(lt,ct,P),P),X(R,P,w,y,E,e),C=y/3,q=C+1,S=(E-2)/3,H=S-1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3;for(lt=i.geodeticSurfaceNormal(o.fromArray(at,u,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u,dt),dt),P=o.normalize(o.add(lt,ct,P),P),ft+=3,n=0;n<d.length;n++){let c;r=d[n];let Z=r.leftPositions,$=r.rightPositions,L,U,N=Ht,k=yt,B=wt;if(P=o.fromArray(O,ft,P),Q(Z)){for(X(R,P,w,void 0,E,e),E-=3,L=q,U=H,c=0;c<Z.length/3;c++)N=o.fromArray(Z,c*3,N),_[T++]=L,_[T++]=U-c-1,_[T++]=U-c,M.addAttribute(m,N,void 0,E),k=o.fromArray(m,(U-c-1)*3,k),B=o.fromArray(m,L*3,B),w=o.normalize(o.subtract(k,B,w),w),X(R,P,w,void 0,E,e),E-=3;N=o.fromArray(m,L*3,N),k=o.subtract(o.fromArray(m,U*3,k),N,k),B=o.subtract(o.fromArray(m,(U-c)*3,B),N,B),w=o.normalize(o.add(k,B,w),w),X(R,P,w,y,void 0,e),y+=3}else{for(X(R,P,w,y,void 0,e),y+=3,L=H,U=q,c=0;c<$.length/3;c++)N=o.fromArray($,c*3,N),_[T++]=L,_[T++]=U+c,_[T++]=U+c+1,M.addAttribute(m,N,y),k=o.fromArray(m,L*3,k),B=o.fromArray(m,(U+c)*3,B),w=o.normalize(o.subtract(k,B,w),w),X(R,P,w,y,void 0,e),y+=3;N=o.fromArray(m,L*3,N),k=o.subtract(o.fromArray(m,(U+c)*3,k),N,k),B=o.subtract(o.fromArray(m,U*3,B),N,B),w=o.normalize(o.negate(o.add(B,k,w),w),w),X(R,P,w,void 0,E,e),E-=3}for(at=l[mt++],j=l[mt++],at.splice(0,3),j.splice(j.length-3,3),m.set(at,y),m.set(j,E-j.length+1),u=j.length-3,ft+=3,w=o.fromArray(h,ft,w),c=0;c<j.length;c+=3)lt=i.geodeticSurfaceNormal(o.fromArray(at,c,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u-c,dt),dt),P=o.normalize(o.add(lt,ct,P),P),X(R,P,w,y,E,e),q=y/3,C=q-1,H=(E-2)/3,S=H+1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3;y-=3,E+=3}if(P=o.fromArray(O,O.length-3,P),X(R,P,w,y,E,e),b){y+=3,E-=3,nt=yt,et=wt;let c=f[1];for(n=0;n<pt;n++)nt=o.fromArray(c,(p-n-1)*3,nt),et=o.fromArray(c,n*3,et),M.addAttribute(m,nt,void 0,E),M.addAttribute(m,et,y),X(R,P,w,y,E,e),q=y/3,C=q-1,H=(E-2)/3,S=H+1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3}if(g.position=new F({componentDatatype:v.DOUBLE,componentsPerAttribute:3,values:m}),e.st){let c=new Float32Array(z/3*2),Z,$,L=0;if(b){a/=3,s/=3;let U=Math.PI/(p+1);$=1/(a-p+1),Z=1/(s-p+1);let N,k=p/2;for(n=k+1;n<p+1;n++)N=it.PI_OVER_TWO+U*n,c[L++]=Z*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=1;n<s-p+1;n++)c[L++]=n*Z,c[L++]=0;for(n=p;n>k;n--)N=it.PI_OVER_TWO-n*U,c[L++]=1-Z*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=k;n>0;n--)N=it.PI_OVER_TWO-U*n,c[L++]=1-$*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=a-p;n>0;n--)c[L++]=n*$,c[L++]=1;for(n=1;n<k+1;n++)N=it.PI_OVER_TWO+U*n,c[L++]=$*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N))}else{for(a/=3,s/=3,$=1/(a-1),Z=1/(s-1),n=0;n<s;n++)c[L++]=n*Z,c[L++]=0;for(n=a;n>0;n--)c[L++]=(n-1)*$,c[L++]=1}g.st=new F({componentDatatype:v.FLOAT,componentsPerAttribute:2,values:c})}return e.normal&&(g.normal=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.normals})),e.tangent&&(g.tangent=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.tangents})),e.bitangent&&(g.bitangent=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.bitangents})),{attributes:g,indices:_}}function qt(t,e){if(!e.normal&&!e.tangent&&!e.bitangent&&!e.st)return t;let i=t.position.values,l,d;(e.normal||e.bitangent)&&(l=t.normal.values,d=t.bitangent.values);let f=t.position.values.length/18,h=f*3,O=f*2,g=h*2,r;if(e.normal||e.bitangent||e.tangent){let a=e.normal?new Float32Array(h*6):void 0,s=e.tangent?new Float32Array(h*6):void 0,n=e.bitangent?new Float32Array(h*6):void 0,A=Rt,u=kt,b=yt,p=wt,z=jt,m=Ht,D=g;for(r=0;r<h;r+=3){let V=D+g;A=o.fromArray(i,r,A),u=o.fromArray(i,r+h,u),b=o.fromArray(i,(r+3)%h,b),u=o.subtract(u,A,u),b=o.subtract(b,A,b),p=o.normalize(o.cross(u,b,p),p),e.normal&&(M.addAttribute(a,p,V),M.addAttribute(a,p,V+3),M.addAttribute(a,p,D),M.addAttribute(a,p,D+3)),(e.tangent||e.bitangent)&&(m=o.fromArray(l,r,m),e.bitangent&&(M.addAttribute(n,m,V),M.addAttribute(n,m,V+3),M.addAttribute(n,m,D),M.addAttribute(n,m,D+3)),e.tangent&&(z=o.normalize(o.cross(m,p,z),z),M.addAttribute(s,z,V),M.addAttribute(s,z,V+3),M.addAttribute(s,z,D),M.addAttribute(s,z,D+3))),D+=6}if(e.normal){for(a.set(l),r=0;r<h;r+=3)a[r+h]=-l[r],a[r+h+1]=-l[r+1],a[r+h+2]=-l[r+2];t.normal.values=a}else t.normal=void 0;if(e.bitangent?(n.set(d),n.set(d,h),t.bitangent.values=n):t.bitangent=void 0,e.tangent){let V=t.tangent.values;s.set(V),s.set(V,h),t.tangent.values=s}}if(e.st){let a=t.st.values,s=new Float32Array(O*6);s.set(a),s.set(a,O);let n=O*2;for(let A=0;A<2;A++){for(s[n++]=a[0],s[n++]=a[1],r=2;r<O;r+=2){let u=a[r],b=a[r+1];s[n++]=u,s[n++]=b,s[n++]=u,s[n++]=b}s[n++]=a[0],s[n++]=a[1]}t.st.values=s}return t}function Ot(t,e,i){i[e++]=t[0],i[e++]=t[1],i[e++]=t[2];for(let l=3;l<t.length;l+=3){let d=t[l],f=t[l+1],h=t[l+2];i[e++]=d,i[e++]=f,i[e++]=h,i[e++]=d,i[e++]=f,i[e++]=h}return i[e++]=t[0],i[e++]=t[1],i[e++]=t[2],i}function Jt(t,e){let i=new J({position:e.position,normal:e.normal||e.bitangent||t.shadowVolume,tangent:e.tangent,bitangent:e.normal||e.bitangent,st:e.st}),l=t.ellipsoid,d=M.computePositions(t),f=Bt(d,i,l),h=t.height,O=t.extrudedHeight,g=f.attributes,r=f.indices,a=g.position.values,s=a.length,n=new Float64Array(s*6),A=new Float64Array(s);A.set(a);let u=new Float64Array(s*4);a=_t.scaleToGeodeticHeight(a,h,l),u=Ot(a,0,u),A=_t.scaleToGeodeticHeight(A,O,l),u=Ot(A,s*2,u),n.set(a),n.set(A,s),n.set(u,s*2),g.position.values=n,g=qt(g,e);let b,p=s/3;if(t.shadowVolume){let S=g.normal.values;s=S.length;let C=new Float32Array(s*6);for(b=0;b<s;b++)S[b]=-S[b];C.set(S,s),C=Ot(S,s*4,C),g.extrudeDirection=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:C}),e.normal||(g.normal=void 0)}if(Q(t.offsetAttribute)){let S=new Uint8Array(p*6);if(t.offsetAttribute===bt.TOP)S=S.fill(1,0,p).fill(1,p*2,p*4);else{let C=t.offsetAttribute===bt.NONE?0:1;S=S.fill(C)}g.applyOffset=new F({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:1,values:S})}let z=r.length,m=p+p,D=Nt.createTypedArray(n.length/3,z*2+m*3);D.set(r);let V=z;for(b=0;b<z;b+=3){let S=r[b],C=r[b+1],H=r[b+2];D[V++]=H+p,D[V++]=C+p,D[V++]=S+p}let rt,R,y,E;for(b=0;b<m;b+=2)rt=b+m,R=rt+m,y=rt+1,E=R+1,D[V++]=rt,D[V++]=R,D[V++]=y,D[V++]=y,D[V++]=R,D[V++]=E;return{attributes:g,indices:D}}var Vt=new o,ht=new o,K=new At;function zt(t,e,i,l,d,f){let h=o.subtract(e,t,Vt);o.normalize(h,h);let O=i.geodeticSurfaceNormal(t,ht),g=o.cross(h,O,Vt);o.multiplyByScalar(g,l,g);let r=d.latitude,a=d.longitude,s=f.latitude,n=f.longitude;o.add(t,g,ht),i.cartesianToCartographic(ht,K);let A=K.latitude,u=K.longitude;r=Math.min(r,A),a=Math.min(a,u),s=Math.max(s,A),n=Math.max(n,u),o.subtract(t,g,ht),i.cartesianToCartographic(ht,K),A=K.latitude,u=K.longitude,r=Math.min(r,A),a=Math.min(a,u),s=Math.max(s,A),n=Math.max(n,u),d.latitude=r,d.longitude=a,f.latitude=s,f.longitude=n}var G=new o,gt=new o,I=new At,W=new At;function Yt(t,e,i,l,d){t=Ut(t,e);let f=Pt(t,o.equalsEpsilon),h=f.length;if(h<2||i<=0)return new Et;let O=i*.5;I.latitude=Number.POSITIVE_INFINITY,I.longitude=Number.POSITIVE_INFINITY,W.latitude=Number.NEGATIVE_INFINITY,W.longitude=Number.NEGATIVE_INFINITY;let g,r;if(l===ut.ROUNDED){let n=f[0];o.subtract(n,f[1],G),o.normalize(G,G),o.multiplyByScalar(G,O,G),o.add(n,G,gt),e.cartesianToCartographic(gt,K),g=K.latitude,r=K.longitude,I.latitude=Math.min(I.latitude,g),I.longitude=Math.min(I.longitude,r),W.latitude=Math.max(W.latitude,g),W.longitude=Math.max(W.longitude,r)}for(let n=0;n<h-1;++n)zt(f[n],f[n+1],e,O,I,W);let a=f[h-1];o.subtract(a,f[h-2],G),o.normalize(G,G),o.multiplyByScalar(G,O,G),o.add(a,G,gt),zt(a,gt,e,O,I,W),l===ut.ROUNDED&&(e.cartesianToCartographic(gt,K),g=K.latitude,r=K.longitude,I.latitude=Math.min(I.latitude,g),I.longitude=Math.min(I.longitude,r),W.latitude=Math.max(W.latitude,g),W.longitude=Math.max(W.longitude,r));let s=Q(d)?d:new Et;return s.north=W.latitude,s.south=I.latitude,s.east=W.longitude,s.west=I.longitude,s}function tt(t){t=t??Tt.EMPTY_OBJECT;let e=t.positions,i=t.width;ot.defined("options.positions",e),ot.defined("options.width",i);let l=t.height??0,d=t.extrudedHeight??l;this._positions=e,this._ellipsoid=Y.clone(t.ellipsoid??Y.default),this._vertexFormat=J.clone(t.vertexFormat??J.DEFAULT),this._width=i,this._height=Math.max(l,d),this._extrudedHeight=Math.min(l,d),this._cornerType=t.cornerType??ut.ROUNDED,this._granularity=t.granularity??it.RADIANS_PER_DEGREE,this._shadowVolume=t.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=t.offsetAttribute,this._rectangle=void 0,this.packedLength=1+e.length*o.packedLength+Y.packedLength+J.packedLength+7}tt.pack=function(t,e,i){ot.defined("value",t),ot.defined("array",e),i=i??0;let l=t._positions,d=l.length;e[i++]=d;for(let f=0;f<d;++f,i+=o.packedLength)o.pack(l[f],e,i);return Y.pack(t._ellipsoid,e,i),i+=Y.packedLength,J.pack(t._vertexFormat,e,i),i+=J.packedLength,e[i++]=t._width,e[i++]=t._height,e[i++]=t._extrudedHeight,e[i++]=t._cornerType,e[i++]=t._granularity,e[i++]=t._shadowVolume?1:0,e[i]=t._offsetAttribute??-1,e};var It=Y.clone(Y.UNIT_SPHERE),Wt=new J,x={positions:void 0,ellipsoid:It,vertexFormat:Wt,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};tt.unpack=function(t,e,i){ot.defined("array",t),e=e??0;let l=t[e++],d=new Array(l);for(let u=0;u<l;++u,e+=o.packedLength)d[u]=o.unpack(t,e);let f=Y.unpack(t,e,It);e+=Y.packedLength;let h=J.unpack(t,e,Wt);e+=J.packedLength;let O=t[e++],g=t[e++],r=t[e++],a=t[e++],s=t[e++],n=t[e++]===1,A=t[e];return Q(i)?(i._positions=d,i._ellipsoid=Y.clone(f,i._ellipsoid),i._vertexFormat=J.clone(h,i._vertexFormat),i._width=O,i._height=g,i._extrudedHeight=r,i._cornerType=a,i._granularity=s,i._shadowVolume=n,i._offsetAttribute=A===-1?void 0:A,i):(x.positions=d,x.width=O,x.height=g,x.extrudedHeight=r,x.cornerType=a,x.granularity=s,x.shadowVolume=n,x.offsetAttribute=A===-1?void 0:A,new tt(x))};tt.computeRectangle=function(t,e){t=t??Tt.EMPTY_OBJECT;let i=t.positions,l=t.width;ot.defined("options.positions",i),ot.defined("options.width",l);let d=t.ellipsoid??Y.default,f=t.cornerType??ut.ROUNDED;return Yt(i,d,l,f,e)};tt.createGeometry=function(t){let e=t._positions,i=t._width,l=t._ellipsoid;e=Ut(e,l);let d=Pt(e,o.equalsEpsilon);if(d.length<2||i<=0)return;let f=t._height,h=t._extrudedHeight,O=!it.equalsEpsilon(f,h,0,it.EPSILON2),g=t._vertexFormat,r={ellipsoid:l,positions:d,width:i,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!0},a;if(O)r.height=f,r.extrudedHeight=h,r.shadowVolume=t._shadowVolume,r.offsetAttribute=t._offsetAttribute,a=Jt(r,g);else{let A=M.computePositions(r);if(a=Bt(A,g,l),a.attributes.position.values=_t.scaleToGeodeticHeight(a.attributes.position.values,f,l),Q(t._offsetAttribute)){let u=t._offsetAttribute===bt.NONE?0:1,b=a.attributes.position.values.length,p=new Uint8Array(b/3).fill(u);a.attributes.applyOffset=new F({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:1,values:p})}}let s=a.attributes,n=St.fromVertices(s.position.values,void 0,3);return g.position||(a.attributes.position.values=void 0),new Ct({attributes:s,indices:a.indices,primitiveType:Mt.TRIANGLES,boundingSphere:n,offsetAttribute:t._offsetAttribute})};tt.createShadowVolume=function(t,e,i){let l=t._granularity,d=t._ellipsoid,f=e(l,d),h=i(l,d);return new tt({positions:t._positions,width:t._width,cornerType:t._cornerType,ellipsoid:d,granularity:l,extrudedHeight:f,height:h,vertexFormat:J.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(tt.prototype,{rectangle:{get:function(){return Q(this._rectangle)||(this._rectangle=Yt(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var Lt=tt;function Gt(t,e){return Q(e)&&(t=Lt.unpack(t,e)),t._ellipsoid=Y.clone(t._ellipsoid),Lt.createGeometry(t)}var Ae=Gt;export{Ae as default}; diff --git a/public/Cesium/Workers/createCorridorOutlineGeometry.js b/public/Cesium/Workers/createCorridorOutlineGeometry.js new file mode 100644 index 000000000..0212fce1d --- /dev/null +++ b/public/Cesium/Workers/createCorridorOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-WWA5PL4H.js";import{a as Q}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as J}from"./chunk-GBYLG25F.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as K}from"./chunk-77IHZJJ3.js";import{a as it}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as et}from"./chunk-A56XVLQR.js";import{b as I,c as tt,d as z}from"./chunk-RCV6KWXS.js";import{d as x}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as q}from"./chunk-AU7IKHOH.js";import{a as A,d as P,f as $}from"./chunk-64RSHJUE.js";import{a as Y}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as B}from"./chunk-LEYMRMBK.js";import{e as N}from"./chunk-VTAIKJXX.js";var ot=new A,nt=new A,lt=new A;function ft(t,i){for(let e=0;e<t.length;e++)t[e]=i.scaleToGeodeticSurface(t[e],t[e]);return t}function st(t,i){let e=[],r=t.positions,h=t.corners,m=t.endPositions,H=new et,y,u=0,p=0,o,g=0,d;for(o=0;o<r.length;o+=2)d=r[o].length-3,u+=d,g+=d/3*4,p+=r[o+1].length-3;for(u+=3,p+=3,o=0;o<h.length;o++){y=h[o];let c=h[o].leftPositions;N(c)?(d=c.length,u+=d,g+=d/3*2):(d=h[o].rightPositions.length,p+=d,g+=d/3*2)}let _=N(m),w;_&&(w=m[0].length-3,u+=w,p+=w,w/=3,g+=w*4);let T=u+p,b=new Float64Array(T),n=0,s=T-1,a,E,L,k,S,U,j=w/2,l=X.createTypedArray(T/3,g+4),f=0;if(l[f++]=n/3,l[f++]=(s-2)/3,_){e.push(n/3),U=ot,S=nt;let c=m[0];for(o=0;o<j;o++)U=A.fromArray(c,(j-1-o)*3,U),S=A.fromArray(c,(j+o)*3,S),C.addAttribute(b,S,n),C.addAttribute(b,U,void 0,s),E=n/3,k=E+1,a=(s-2)/3,L=a-1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3}let V=0,F=r[V++],D=r[V++];for(b.set(F,n),b.set(D,s-D.length+1),d=D.length-3,e.push(n/3,(s-2)/3),o=0;o<d;o+=3)E=n/3,k=E+1,a=(s-2)/3,L=a-1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;for(o=0;o<h.length;o++){let c;y=h[o];let G=y.leftPositions,W=y.rightPositions,O,R=lt;if(N(G)){for(s-=3,O=L,e.push(k),c=0;c<G.length/3;c++)R=A.fromArray(G,c*3,R),l[f++]=O-c-1,l[f++]=O-c,C.addAttribute(b,R,void 0,s),s-=3;e.push(O-Math.floor(G.length/6)),i===Q.BEVELED&&e.push((s-2)/3+1),n+=3}else{for(n+=3,O=k,e.push(L),c=0;c<W.length/3;c++)R=A.fromArray(W,c*3,R),l[f++]=O+c,l[f++]=O+c+1,C.addAttribute(b,R,n),n+=3;e.push(O+Math.floor(W.length/6)),i===Q.BEVELED&&e.push(n/3-1),s-=3}for(F=r[V++],D=r[V++],F.splice(0,3),D.splice(D.length-3,3),b.set(F,n),b.set(D,s-D.length+1),d=D.length-3,c=0;c<D.length;c+=3)k=n/3,E=k-1,L=(s-2)/3,a=L+1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;n-=3,s+=3,e.push(n/3,(s-2)/3)}if(_){n+=3,s-=3,U=ot,S=nt;let c=m[1];for(o=0;o<j;o++)U=A.fromArray(c,(w-o-1)*3,U),S=A.fromArray(c,o*3,S),C.addAttribute(b,U,void 0,s),C.addAttribute(b,S,n),k=n/3,E=k-1,L=(s-2)/3,a=L+1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;e.push(n/3)}else e.push(n/3,(s-2)/3);return l[f++]=n/3,l[f++]=(s-2)/3,H.position=new z({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:b}),{attributes:H,indices:l,wallIndices:e}}function ct(t){let i=t.ellipsoid,e=C.computePositions(t),r=st(e,t.cornerType),h=r.wallIndices,m=t.height,H=t.extrudedHeight,y=r.attributes,u=r.indices,p=y.position.values,o=p.length,g=new Float64Array(o);g.set(p);let d=new Float64Array(o*2);if(p=K.scaleToGeodeticHeight(p,m,i),g=K.scaleToGeodeticHeight(g,H,i),d.set(p),d.set(g,o),y.position.values=d,o/=3,N(t.offsetAttribute)){let a=new Uint8Array(o*2);if(t.offsetAttribute===J.TOP)a=a.fill(1,0,o);else{let E=t.offsetAttribute===J.NONE?0:1;a=a.fill(E)}y.applyOffset=new z({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:a})}let _,w=u.length,T=X.createTypedArray(d.length/3,(w+h.length)*2);T.set(u);let b=w;for(_=0;_<w;_+=2){let a=u[_],E=u[_+1];T[b++]=a+o,T[b++]=E+o}let n,s;for(_=0;_<h.length;_++)n=h[_],s=n+o,T[b++]=n,T[b++]=s;return{attributes:y,indices:T}}function M(t){t=t??$.EMPTY_OBJECT;let i=t.positions,e=t.width;B.typeOf.object("options.positions",i),B.typeOf.number("options.width",e);let r=t.height??0,h=t.extrudedHeight??r;this._positions=i,this._ellipsoid=P.clone(t.ellipsoid??P.default),this._width=e,this._height=Math.max(r,h),this._extrudedHeight=Math.min(r,h),this._cornerType=t.cornerType??Q.ROUNDED,this._granularity=t.granularity??Y.RADIANS_PER_DEGREE,this._offsetAttribute=t.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+i.length*A.packedLength+P.packedLength+6}M.pack=function(t,i,e){B.typeOf.object("value",t),B.typeOf.object("array",i),e=e??0;let r=t._positions,h=r.length;i[e++]=h;for(let m=0;m<h;++m,e+=A.packedLength)A.pack(r[m],i,e);return P.pack(t._ellipsoid,i,e),e+=P.packedLength,i[e++]=t._width,i[e++]=t._height,i[e++]=t._extrudedHeight,i[e++]=t._cornerType,i[e++]=t._granularity,i[e]=t._offsetAttribute??-1,i};var rt=P.clone(P.UNIT_SPHERE),v={positions:void 0,ellipsoid:rt,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};M.unpack=function(t,i,e){B.typeOf.object("array",t),i=i??0;let r=t[i++],h=new Array(r);for(let d=0;d<r;++d,i+=A.packedLength)h[d]=A.unpack(t,i);let m=P.unpack(t,i,rt);i+=P.packedLength;let H=t[i++],y=t[i++],u=t[i++],p=t[i++],o=t[i++],g=t[i];return N(e)?(e._positions=h,e._ellipsoid=P.clone(m,e._ellipsoid),e._width=H,e._height=y,e._extrudedHeight=u,e._cornerType=p,e._granularity=o,e._offsetAttribute=g===-1?void 0:g,e):(v.positions=h,v.width=H,v.height=y,v.extrudedHeight=u,v.cornerType=p,v.granularity=o,v.offsetAttribute=g===-1?void 0:g,new M(v))};M.createGeometry=function(t){let i=t._positions,e=t._width,r=t._ellipsoid;i=ft(i,r);let h=it(i,A.equalsEpsilon);if(h.length<2||e<=0)return;let m=t._height,H=t._extrudedHeight,y=!Y.equalsEpsilon(m,H,0,Y.EPSILON2),u={ellipsoid:r,positions:h,width:e,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!1},p;if(y)u.height=m,u.extrudedHeight=H,u.offsetAttribute=t._offsetAttribute,p=ct(u);else{let d=C.computePositions(u);if(p=st(d,u.cornerType),p.attributes.position.values=K.scaleToGeodeticHeight(p.attributes.position.values,m,r),N(t._offsetAttribute)){let _=p.attributes.position.values.length,w=t._offsetAttribute===J.NONE?0:1,T=new Uint8Array(_/3).fill(w);p.attributes.applyOffset=new z({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:T})}}let o=p.attributes,g=x.fromVertices(o.position.values,void 0,3);return new tt({attributes:o,indices:p.indices,primitiveType:I.LINES,boundingSphere:g,offsetAttribute:t._offsetAttribute})};var Z=M;function ht(t,i){return N(i)&&(t=Z.unpack(t,i)),t._ellipsoid=P.clone(t._ellipsoid),Z.createGeometry(t)}var Ot=ht;export{Ot as default}; diff --git a/public/Cesium/Workers/createCylinderGeometry.js b/public/Cesium/Workers/createCylinderGeometry.js new file mode 100644 index 000000000..3a7689456 --- /dev/null +++ b/public/Cesium/Workers/createCylinderGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-GILIDQNQ.js";import"./chunk-ARG42DC4.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createCylinderOutlineGeometry.js b/public/Cesium/Workers/createCylinderOutlineGeometry.js new file mode 100644 index 000000000..bded74c7b --- /dev/null +++ b/public/Cesium/Workers/createCylinderOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as M}from"./chunk-ARG42DC4.js";import{a as L}from"./chunk-GBYLG25F.js";import{a as N}from"./chunk-OFUUQVMR.js";import{a as k}from"./chunk-A56XVLQR.js";import{b as D,c as P,d as A}from"./chunk-RCV6KWXS.js";import{d as y}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as R}from"./chunk-AU7IKHOH.js";import{a as T,c as _,f as S}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as E,b as m}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";var V=new _;function d(t){t=t??S.EMPTY_OBJECT;let e=t.length,i=t.topRadius,f=t.bottomRadius,o=t.slices??128,u=Math.max(t.numberOfVerticalLines??16,0);if(m.typeOf.number("options.positions",e),m.typeOf.number("options.topRadius",i),m.typeOf.number("options.bottomRadius",f),m.typeOf.number.greaterThanOrEquals("options.slices",o,3),b(t.offsetAttribute)&&t.offsetAttribute===L.TOP)throw new E("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._length=e,this._topRadius=i,this._bottomRadius=f,this._slices=o,this._numberOfVerticalLines=u,this._offsetAttribute=t.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}d.packedLength=6;d.pack=function(t,e,i){return m.typeOf.object("value",t),m.defined("array",e),i=i??0,e[i++]=t._length,e[i++]=t._topRadius,e[i++]=t._bottomRadius,e[i++]=t._slices,e[i++]=t._numberOfVerticalLines,e[i]=t._offsetAttribute??-1,e};var p={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};d.unpack=function(t,e,i){m.defined("array",t),e=e??0;let f=t[e++],o=t[e++],u=t[e++],l=t[e++],a=t[e++],c=t[e];return b(i)?(i._length=f,i._topRadius=o,i._bottomRadius=u,i._slices=l,i._numberOfVerticalLines=a,i._offsetAttribute=c===-1?void 0:c,i):(p.length=f,p.topRadius=o,p.bottomRadius=u,p.slices=l,p.numberOfVerticalLines=a,p.offsetAttribute=c===-1?void 0:c,new d(p))};d.createGeometry=function(t){let e=t._length,i=t._topRadius,f=t._bottomRadius,o=t._slices,u=t._numberOfVerticalLines;if(e<=0||i<0||f<0||i===0&&f===0)return;let l=o*2,a=M.computePositions(e,i,f,o,!1),c=o*2,C;if(u>0){let h=Math.min(u,o);C=Math.round(o/h),c+=h}let s=N.createTypedArray(l,c*2),r=0,n;for(n=0;n<o-1;n++)s[r++]=n,s[r++]=n+1,s[r++]=n+o,s[r++]=n+1+o;if(s[r++]=o-1,s[r++]=0,s[r++]=o+o-1,s[r++]=o,u>0)for(n=0;n<o;n+=C)s[r++]=n,s[r++]=n+o;let O=new k;O.position=new A({componentDatatype:R.DOUBLE,componentsPerAttribute:3,values:a}),V.x=e*.5,V.y=Math.max(f,i);let g=new y(T.ZERO,_.magnitude(V));if(b(t._offsetAttribute)){e=a.length;let h=t._offsetAttribute===L.NONE?0:1,B=new Uint8Array(e/3).fill(h);O.applyOffset=new A({componentDatatype:R.UNSIGNED_BYTE,componentsPerAttribute:1,values:B})}return new P({attributes:O,indices:s,primitiveType:D.LINES,boundingSphere:g,offsetAttribute:t._offsetAttribute})};var w=d;function G(t,e){return b(e)&&(t=w.unpack(t,e)),w.createGeometry(t)}var et=G;export{et as default}; diff --git a/public/Cesium/Workers/createEllipseGeometry.js b/public/Cesium/Workers/createEllipseGeometry.js new file mode 100644 index 000000000..beb79bfa1 --- /dev/null +++ b/public/Cesium/Workers/createEllipseGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as o}from"./chunk-FEVXJ54I.js";import"./chunk-UP6I5URU.js";import"./chunk-D6AA5QVT.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,d as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as n}from"./chunk-VTAIKJXX.js";function a(r,i){return n(i)&&(r=o.unpack(r,i)),r._center=t.clone(r._center),r._ellipsoid=c.clone(r._ellipsoid),o.createGeometry(r)}var u=a;export{u as default}; diff --git a/public/Cesium/Workers/createEllipseOutlineGeometry.js b/public/Cesium/Workers/createEllipseOutlineGeometry.js new file mode 100644 index 000000000..29403a1b9 --- /dev/null +++ b/public/Cesium/Workers/createEllipseOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as i}from"./chunk-HWXX4CWK.js";import"./chunk-UP6I5URU.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,d as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function a(r,n){return o(n)&&(r=i.unpack(r,n)),r._center=t.clone(r._center),r._ellipsoid=c.clone(r._ellipsoid),i.createGeometry(r)}var p=a;export{p as default}; diff --git a/public/Cesium/Workers/createEllipsoidGeometry.js b/public/Cesium/Workers/createEllipsoidGeometry.js new file mode 100644 index 000000000..d6a0805d9 --- /dev/null +++ b/public/Cesium/Workers/createEllipsoidGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as e}from"./chunk-37F5JSTI.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(r,t){return o(t)&&(r=e.unpack(r,t)),e.createGeometry(r)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createEllipsoidOutlineGeometry.js b/public/Cesium/Workers/createEllipsoidOutlineGeometry.js new file mode 100644 index 000000000..a2b8ccb05 --- /dev/null +++ b/public/Cesium/Workers/createEllipsoidOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as t}from"./chunk-D6C66QON.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as n}from"./chunk-VTAIKJXX.js";function u(r,e){return n(r.buffer,e)&&(r=t.unpack(r,e)),t.createGeometry(r)}var a=u;export{a as default}; diff --git a/public/Cesium/Workers/createFrustumGeometry.js b/public/Cesium/Workers/createFrustumGeometry.js new file mode 100644 index 000000000..0d38696c0 --- /dev/null +++ b/public/Cesium/Workers/createFrustumGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{c as r}from"./chunk-IYTZ52EY.js";import"./chunk-CYCB63OH.js";import"./chunk-HTFSEEMT.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createFrustumOutlineGeometry.js b/public/Cesium/Workers/createFrustumOutlineGeometry.js new file mode 100644 index 000000000..bd3e96f07 --- /dev/null +++ b/public/Cesium/Workers/createFrustumOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k,b as _,c as A}from"./chunk-IYTZ52EY.js";import"./chunk-CYCB63OH.js";import"./chunk-HTFSEEMT.js";import{a as F}from"./chunk-A56XVLQR.js";import{b,c as N,d as g}from"./chunk-RCV6KWXS.js";import{d as y}from"./chunk-4IW2T6GF.js";import{f as s}from"./chunk-PSPPBZWI.js";import{a as T}from"./chunk-AU7IKHOH.js";import{a}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as h}from"./chunk-LEYMRMBK.js";import{e as w}from"./chunk-VTAIKJXX.js";var d=0,j=1;function P(e){h.typeOf.object("options",e),h.typeOf.object("options.frustum",e.frustum),h.typeOf.object("options.origin",e.origin),h.typeOf.object("options.orientation",e.orientation);let t=e.frustum,o=e.orientation,u=e.origin,c=e._drawNearPlane??!0,p,m;t instanceof _?(p=d,m=_.packedLength):t instanceof k&&(p=j,m=k.packedLength),this._frustumType=p,this._frustum=t.clone(),this._origin=a.clone(u),this._orientation=s.clone(o),this._drawNearPlane=c,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+m+a.packedLength+s.packedLength}P.pack=function(e,t,o){h.typeOf.object("value",e),h.defined("array",t),o=o??0;let u=e._frustumType,c=e._frustum;return t[o++]=u,u===d?(_.pack(c,t,o),o+=_.packedLength):(k.pack(c,t,o),o+=k.packedLength),a.pack(e._origin,t,o),o+=a.packedLength,s.pack(e._orientation,t,o),o+=s.packedLength,t[o]=e._drawNearPlane?1:0,t};var C=new _,E=new k,G=new s,R=new a;P.unpack=function(e,t,o){h.defined("array",e),t=t??0;let u=e[t++],c;u===d?(c=_.unpack(e,t,C),t+=_.packedLength):(c=k.unpack(e,t,E),t+=k.packedLength);let p=a.unpack(e,t,R);t+=a.packedLength;let m=s.unpack(e,t,G);t+=s.packedLength;let l=e[t]===1;if(!w(o))return new P({frustum:c,origin:p,orientation:m,_drawNearPlane:l});let n=u===o._frustumType?o._frustum:void 0;return o._frustum=c.clone(n),o._frustumType=u,o._origin=a.clone(p,o._origin),o._orientation=s.clone(m,o._orientation),o._drawNearPlane=l,o};P.createGeometry=function(e){let t=e._frustumType,o=e._frustum,u=e._origin,c=e._orientation,p=e._drawNearPlane,m=new Float64Array(24);A._computeNearFarPlanes(u,c,t,o,m);let l=new F({position:new g({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:m})}),n,i,O=p?2:1,r=new Uint16Array(8*(O+1)),f=p?0:1;for(;f<2;++f)n=p?f*8:0,i=f*4,r[n]=i,r[n+1]=i+1,r[n+2]=i+1,r[n+3]=i+2,r[n+4]=i+2,r[n+5]=i+3,r[n+6]=i+3,r[n+7]=i;for(f=0;f<2;++f)n=(O+f)*8,i=f*4,r[n]=i,r[n+1]=i+4,r[n+2]=i+1,r[n+3]=i+5,r[n+4]=i+2,r[n+5]=i+6,r[n+6]=i+3,r[n+7]=i+7;return new N({attributes:l,indices:r,primitiveType:b.LINES,boundingSphere:y.fromVertices(m)})};var L=P;function S(e,t){return w(t)&&(e=L.unpack(e,t)),L.createGeometry(e)}var $=S;export{$ as default}; diff --git a/public/Cesium/Workers/createGeometry.js b/public/Cesium/Workers/createGeometry.js new file mode 100644 index 000000000..adb924241 --- /dev/null +++ b/public/Cesium/Workers/createGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k}from"./chunk-VTBDSFTG.js";import{a as w}from"./chunk-WZDE3RYP.js";import"./chunk-DQQ63PYM.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as y}from"./chunk-LEYMRMBK.js";import{a,b as p,e as r}from"./chunk-VTAIKJXX.js";var g=p({"./combineGeometry.js":()=>import("./combineGeometry.js"),"./createBoxGeometry.js":()=>import("./createBoxGeometry.js"),"./createBoxOutlineGeometry.js":()=>import("./createBoxOutlineGeometry.js"),"./createCircleGeometry.js":()=>import("./createCircleGeometry.js"),"./createCircleOutlineGeometry.js":()=>import("./createCircleOutlineGeometry.js"),"./createCoplanarPolygonGeometry.js":()=>import("./createCoplanarPolygonGeometry.js"),"./createCoplanarPolygonOutlineGeometry.js":()=>import("./createCoplanarPolygonOutlineGeometry.js"),"./createCorridorGeometry.js":()=>import("./createCorridorGeometry.js"),"./createCorridorOutlineGeometry.js":()=>import("./createCorridorOutlineGeometry.js"),"./createCylinderGeometry.js":()=>import("./createCylinderGeometry.js"),"./createCylinderOutlineGeometry.js":()=>import("./createCylinderOutlineGeometry.js"),"./createEllipseGeometry.js":()=>import("./createEllipseGeometry.js"),"./createEllipseOutlineGeometry.js":()=>import("./createEllipseOutlineGeometry.js"),"./createEllipsoidGeometry.js":()=>import("./createEllipsoidGeometry.js"),"./createEllipsoidOutlineGeometry.js":()=>import("./createEllipsoidOutlineGeometry.js"),"./createFrustumGeometry.js":()=>import("./createFrustumGeometry.js"),"./createFrustumOutlineGeometry.js":()=>import("./createFrustumOutlineGeometry.js"),"./createGeometry.js":()=>import("./createGeometry.js"),"./createGroundPolylineGeometry.js":()=>import("./createGroundPolylineGeometry.js"),"./createPlaneGeometry.js":()=>import("./createPlaneGeometry.js"),"./createPlaneOutlineGeometry.js":()=>import("./createPlaneOutlineGeometry.js"),"./createPolygonGeometry.js":()=>import("./createPolygonGeometry.js"),"./createPolygonOutlineGeometry.js":()=>import("./createPolygonOutlineGeometry.js"),"./createPolylineGeometry.js":()=>import("./createPolylineGeometry.js"),"./createPolylineVolumeGeometry.js":()=>import("./createPolylineVolumeGeometry.js"),"./createPolylineVolumeOutlineGeometry.js":()=>import("./createPolylineVolumeOutlineGeometry.js"),"./createRectangleGeometry.js":()=>import("./createRectangleGeometry.js"),"./createRectangleOutlineGeometry.js":()=>import("./createRectangleOutlineGeometry.js"),"./createSimplePolylineGeometry.js":()=>import("./createSimplePolylineGeometry.js"),"./createSphereGeometry.js":()=>import("./createSphereGeometry.js"),"./createSphereOutlineGeometry.js":()=>import("./createSphereOutlineGeometry.js"),"./createTaskProcessorWorker.js":()=>import("./createTaskProcessorWorker.js"),"./createVectorTileClampedPolylines.js":()=>import("./createVectorTileClampedPolylines.js"),"./createVectorTileGeometries.js":()=>import("./createVectorTileGeometries.js"),"./createVectorTilePoints.js":()=>import("./createVectorTilePoints.js"),"./createVectorTilePolygons.js":()=>import("./createVectorTilePolygons.js"),"./createVectorTilePolylines.js":()=>import("./createVectorTilePolylines.js"),"./createVerticesFromGoogleEarthEnterpriseBuffer.js":()=>import("./createVerticesFromGoogleEarthEnterpriseBuffer.js"),"./createVerticesFromHeightmap.js":()=>import("./createVerticesFromHeightmap.js"),"./createVerticesFromQuantizedTerrainMesh.js":()=>import("./createVerticesFromQuantizedTerrainMesh.js"),"./createWallGeometry.js":()=>import("./createWallGeometry.js"),"./createWallOutlineGeometry.js":()=>import("./createWallOutlineGeometry.js"),"./decodeDraco.js":()=>import("./decodeDraco.js"),"./decodeGoogleEarthEnterprisePacket.js":()=>import("./decodeGoogleEarthEnterprisePacket.js"),"./decodeI3S.js":()=>import("./decodeI3S.js"),"./gaussianSplatSorter.js":()=>import("./gaussianSplatSorter.js"),"./gaussianSplatTextureGenerator.js":()=>import("./gaussianSplatTextureGenerator.js"),"./transcodeKTX2.js":()=>import("./transcodeKTX2.js"),"./transferTypedArrayTest.js":()=>import("./transferTypedArrayTest.js"),"./upsampleQuantizedTerrainMesh.js":()=>import("./upsampleQuantizedTerrainMesh.js")});var c={};async function b(s,t){let e=c[t]??c[s];return r(e)?e:r(t)?(typeof exports=="object"?e=a(t):e=(await import(t)).default,c[t]=e,e):(typeof exports=="object"?e=a(`Workers/${s}`):e=(r(t)?await import(t):await g(`./${s}.js`)).default,c[s]=e,e)}async function h(s,t){let e=s.subTasks,n=e.length,f=new Array(n);for(let o=0;o<n;o++){let i=e[o],m=i.geometry,u=i.moduleName,l=i.modulePath;if(r(u)&&r(l))throw new y("Must only set moduleName or modulePath");r(u)||r(l)?f[o]=b(u,l).then(d=>d(m,i.offset)):f[o]=m}return Promise.all(f).then(function(o){return k.packCreateGeometryResults(o,t)})}var G=w(h);export{G as default}; diff --git a/public/Cesium/Workers/createGroundPolylineGeometry.js b/public/Cesium/Workers/createGroundPolylineGeometry.js new file mode 100644 index 000000000..2b5a17556 --- /dev/null +++ b/public/Cesium/Workers/createGroundPolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as _e}from"./chunk-DQQ63PYM.js";import{a as W}from"./chunk-J6UP6FLE.js";import{a as Ct}from"./chunk-QOUAJ6TL.js";import{a as Oe}from"./chunk-U4IEOH5K.js";import{a as Le}from"./chunk-3W4GT7KQ.js";import{a as te}from"./chunk-G5AGHVVC.js";import{b as Qt}from"./chunk-DMEY62ID.js";import{a as jt}from"./chunk-HTFSEEMT.js";import{c as Ce,d as zt}from"./chunk-RCV6KWXS.js";import{a as Pt,d as U}from"./chunk-4IW2T6GF.js";import{d as xe,e as Ne,f as Kt,h as Y}from"./chunk-PSPPBZWI.js";import{a as Bt}from"./chunk-AU7IKHOH.js";import{a as t,b as u,c as Rt,d as B,e as bt,f as vt}from"./chunk-64RSHJUE.js";import{a as p}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as wt,b as tt}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";function it(e){e=e??vt.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??B.default,this._rectangle=e.rectangle??Y.MAX_VALUE,this._projection=new Pt(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(it.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});it.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};it.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};it.prototype.rectangleToNativeRectangle=function(e,i){tt.defined("rectangle",e);let r=p.toDegrees(e.west),n=p.toDegrees(e.south),o=p.toDegrees(e.east),a=p.toDegrees(e.north);return g(i)?(i.west=r,i.south=n,i.east=o,i.north=a,i):new Y(r,n,o,a)};it.prototype.tileXYToNativeRectangle=function(e,i,r,n){let o=this.tileXYToRectangle(e,i,r,n);return o.west=p.toDegrees(o.west),o.south=p.toDegrees(o.south),o.east=p.toDegrees(o.east),o.north=p.toDegrees(o.north),o};it.prototype.tileXYToRectangle=function(e,i,r,n){let o=this._rectangle,a=this.getNumberOfXTilesAtLevel(r),c=this.getNumberOfYTilesAtLevel(r),l=o.width/a,s=e*l+o.west,d=(e+1)*l+o.west,h=o.height/c,N=o.north-i*h,S=o.north-(i+1)*h;return g(n)||(n=new Y(s,S,d,N)),n.west=s,n.south=S,n.east=d,n.north=N,n};it.prototype.positionToTileXY=function(e,i,r){let n=this._rectangle;if(!Y.contains(n,e))return;let o=this.getNumberOfXTilesAtLevel(i),a=this.getNumberOfYTilesAtLevel(i),c=n.width/o,l=n.height/a,s=e.longitude;n.east<n.west&&(s+=p.TWO_PI);let d=(s-n.west)/c|0;d>=o&&(d=o-1);let h=(n.north-e.latitude)/l|0;return h>=a&&(h=a-1),g(r)?(r.x=d,r.y=h,r):new Rt(d,h)};var De=it;var Ie=new t,He=new t,ke=new u,ee=new t,hn=new t,ye=new U,pn=new De,_t=[new u,new u,new u,new u],Lt=new Rt,w={};w.initialize=function(){let e=w._initPromise;return g(e)||(e=xe.fetchJson(Ne("Assets/approximateTerrainHeights.json")).then(function(i){w._terrainHeights=i}),w._initPromise=e),e};w.getMinimumMaximumHeights=function(e,i){if(tt.defined("rectangle",e),!g(w._terrainHeights))throw new wt("You must call ApproximateTerrainHeights.initialize and wait for the promise to resolve before using this function");i=i??B.default;let r=Ae(e),n=w._defaultMinTerrainHeight,o=w._defaultMaxTerrainHeight;if(g(r)){let a=`${r.level}-${r.x}-${r.y}`,c=w._terrainHeights[a];g(c)&&(n=c[0],o=c[1]),i.cartographicToCartesian(Y.northeast(e,ke),Ie),i.cartographicToCartesian(Y.southwest(e,ke),He),t.midpoint(He,Ie,ee);let l=i.scaleToGeodeticSurface(ee,hn);if(g(l)){let s=t.distance(ee,l);n=Math.min(n,-s)}else n=w._defaultMinTerrainHeight}return n=Math.max(w._defaultMinTerrainHeight,n),{minimumTerrainHeight:n,maximumTerrainHeight:o}};w.getBoundingSphere=function(e,i){if(tt.defined("rectangle",e),!g(w._terrainHeights))throw new wt("You must call ApproximateTerrainHeights.initialize and wait for the promise to resolve before using this function");i=i??B.default;let r=Ae(e),n=w._defaultMaxTerrainHeight;if(g(r)){let a=`${r.level}-${r.x}-${r.y}`,c=w._terrainHeights[a];g(c)&&(n=c[1])}let o=U.fromRectangle3D(e,i,0);return U.fromRectangle3D(e,i,n,ye),U.union(o,ye,o)};function Ae(e){u.fromRadians(e.east,e.north,0,_t[0]),u.fromRadians(e.west,e.north,0,_t[1]),u.fromRadians(e.east,e.south,0,_t[2]),u.fromRadians(e.west,e.south,0,_t[3]);let i=0,r=0,n=0,o=0,a=w._terrainHeightsMaxLevel,c;for(c=0;c<=a;++c){let l=!1;for(let s=0;s<4;++s){let d=_t[s];if(pn.positionToTileXY(d,c,Lt),s===0)n=Lt.x,o=Lt.y;else if(n!==Lt.x||o!==Lt.y){l=!0;break}}if(l)break;i=n,r=o}if(c!==0)return{x:i,y:r,level:c>a?a:c-1}}w._terrainHeightsMaxLevel=6;w._defaultMaxTerrainHeight=9e3;w._defaultMinTerrainHeight=-1e5;w._terrainHeights=void 0;w._initPromise=void 0;Object.defineProperties(w,{initialized:{get:function(){return g(w._terrainHeights)}}});var Ft=w;var le=[Pt,_e],dn=le.length,Ke=Math.cos(p.toRadians(30)),Me=Math.cos(p.toRadians(150)),Qe=0,tn=1e3;function at(e){e=e??vt.EMPTY_OBJECT;let i=e.positions;if(!g(i)||i.length<2)throw new wt("At least two positions are required.");if(g(e.arcType)&&e.arcType!==W.GEODESIC&&e.arcType!==W.RHUMB)throw new wt("Valid options for arcType are ArcType.GEODESIC and ArcType.RHUMB.");this.width=e.width??1,this._positions=i,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??W.GEODESIC,this._ellipsoid=B.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(at.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+B.packedLength+1+1}}});at.setProjectionAndEllipsoid=function(e,i){let r=0;for(let n=0;n<dn;n++)if(i instanceof le[n]){r=n;break}e._projectionIndex=r,e._ellipsoid=i.ellipsoid};var fn=new t,Re=new t,Pe=new t;function se(e,i,r,n,o){let a=R(n,e,0,fn),c=R(n,e,r,Re),l=R(n,i,0,Pe),s=et(c,a,Re),d=et(l,a,Pe);return t.cross(d,s,o),t.normalize(o,o)}var mn=new u,gn=new t,un=new t,wn=new t;function ne(e,i,r,n,o,a,c,l,s,d,h){if(o===0)return;let N;a===W.GEODESIC?N=new Oe(e,i,c):a===W.RHUMB&&(N=new te(e,i,c));let S=N.surfaceDistance;if(S<o)return;let M=se(e,i,n,c,wn),O=Math.ceil(S/o),D=S/O,z=D,G=O-1,f=l.length;for(let j=0;j<G;j++){let b=N.interpolateUsingSurfaceDistance(z,mn),k=R(c,b,r,gn),I=R(c,b,n,un);t.pack(M,l,f),t.pack(k,s,f),t.pack(I,d,f),h.push(b.latitude),h.push(b.longitude),f+=3,z+=D}}var oe=new u;function R(e,i,r,n){return u.clone(i,oe),oe.height=r,u.toCartesian(oe,e,n)}at.pack=function(e,i,r){tt.typeOf.object("value",e),tt.defined("array",i);let n=r??0,o=e._positions,a=o.length;i[n++]=a;for(let c=0;c<a;++c){let l=o[c];t.pack(l,i,n),n+=3}return i[n++]=e.granularity,i[n++]=e.loop?1:0,i[n++]=e.arcType,B.pack(e._ellipsoid,i,n),n+=B.packedLength,i[n++]=e._projectionIndex,i[n++]=e._scene3DOnly?1:0,i};at.unpack=function(e,i,r){tt.defined("array",e);let n=i??0,o=e[n++],a=new Array(o);for(let S=0;S<o;S++)a[S]=t.unpack(e,n),n+=3;let c=e[n++],l=e[n++]===1,s=e[n++],d=B.unpack(e,n);n+=B.packedLength;let h=e[n++],N=e[n++]===1;return g(r)||(r=new at({positions:a})),r._positions=a,r.granularity=c,r.loop=l,r.arcType=s,r._ellipsoid=d,r._projectionIndex=h,r._scene3DOnly=N,r};function et(e,i,r){return t.subtract(e,i,r),t.normalize(r,r),r}function be(e,i,r,n){return n=et(e,i,n),n=t.cross(n,r,n),n=t.normalize(n,n),n=t.cross(r,n,n),n}var Sn=new t,Tn=new t,En=new t,en=new t,xn=0,Nn=-1;function ie(e,i,r,n,o){let a=et(r,i,en),c=be(e,i,a,Sn),l=be(n,i,a,Tn);if(p.equalsEpsilon(t.dot(c,l),Nn,p.EPSILON5))return o=t.cross(a,c,o),o=t.normalize(o,o),o;o=t.add(l,c,o),o=t.normalize(o,o);let s=t.cross(a,o,En);return t.dot(l,s)<xn&&(o=t.negate(o,o)),o}var Gt=jt.fromPointNormal(t.ZERO,t.UNIT_Y),Cn=new t,_n=new t,Ln=new t,On=new t,Dn=new t,Xt=new t,Yt=new u,ve=new u,Be=new u;at.createGeometry=function(e){let i=!e._scene3DOnly,r=e.loop,n=e._ellipsoid,o=e.granularity,a=e.arcType,c=new le[e._projectionIndex](n),l=Qe,s=tn,d,h,N=e._positions,S=N.length;S===2&&(r=!1);let M,O,D,z,G=new te(void 0,void 0,n),f,j,b,k=[N[0]];for(h=0;h<S-1;h++)M=N[h],O=N[h+1],f=Qt.lineSegmentPlane(M,O,Gt,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&(e.arcType===W.GEODESIC?k.push(t.clone(f)):e.arcType===W.RHUMB&&(b=n.cartesianToCartographic(f,Yt).longitude,D=n.cartesianToCartographic(M,Yt),z=n.cartesianToCartographic(O,ve),G.setEndPoints(D,z),j=G.findIntersectionWithLongitude(b,Be),f=n.cartographicToCartesian(j,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&k.push(t.clone(f)))),k.push(O);r&&(M=N[S-1],O=N[0],f=Qt.lineSegmentPlane(M,O,Gt,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&(e.arcType===W.GEODESIC?k.push(t.clone(f)):e.arcType===W.RHUMB&&(b=n.cartesianToCartographic(f,Yt).longitude,D=n.cartesianToCartographic(M,Yt),z=n.cartesianToCartographic(O,ve),G.setEndPoints(D,z),j=G.findIntersectionWithLongitude(b,Be),f=n.cartographicToCartesian(j,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&k.push(t.clone(f)))));let I=k.length,C=new Array(I);for(h=0;h<I;h++){let X=u.fromCartesian(k[h],n);X.height=0,C[h]=X}if(C=Le(C,u.equalsEpsilon),I=C.length,I<2)return;let H=[],P=[],v=[],E=[],x=Cn,L=_n,_=Ln,F=On,y=Dn,m=C[0],Z=C[1],Dt=C[I-1];for(x=R(n,Dt,l,x),F=R(n,Z,l,F),L=R(n,m,l,L),_=R(n,m,s,_),r?y=ie(x,L,_,F,y):y=se(m,Z,s,n,y),t.pack(y,P,0),t.pack(L,v,0),t.pack(_,E,0),H.push(m.latitude),H.push(m.longitude),ne(m,Z,l,s,o,a,n,P,v,E,H),h=1;h<I-1;++h){x=t.clone(L,x),L=t.clone(F,L);let X=C[h];R(n,X,s,_),R(n,C[h+1],l,F),ie(x,L,_,F,y),d=P.length,t.pack(y,P,d),t.pack(L,v,d),t.pack(_,E,d),H.push(X.latitude),H.push(X.longitude),ne(C[h],C[h+1],l,s,o,a,n,P,v,E,H)}let A=C[I-1],St=C[I-2];if(L=R(n,A,l,L),_=R(n,A,s,_),r){let X=C[0];x=R(n,St,l,x),F=R(n,X,l,F),y=ie(x,L,_,F,y)}else y=se(St,A,s,n,y);if(d=P.length,t.pack(y,P,d),t.pack(L,v,d),t.pack(_,E,d),H.push(A.latitude),H.push(A.longitude),r){for(ne(A,m,l,s,o,a,n,P,v,E,H),d=P.length,h=0;h<3;++h)P[d+h]=P[h],v[d+h]=v[h],E[d+h]=E[h];H.push(m.latitude),H.push(m.longitude)}return Qn(r,c,v,E,P,H,i)};var In=new t,Hn=new bt,kn=new Kt;function ze(e,i,r,n){let o=et(r,i,In),a=t.dot(o,e);if(a>Ke||a<Me){let c=et(n,r,en),l=a<Me?p.PI_OVER_TWO:-p.PI_OVER_TWO,s=Kt.fromAxisAngle(c,l,kn),d=bt.fromQuaternion(s,Hn);return bt.multiplyByVector(d,e,e),!0}return!1}var je=new u,yn=new t,Fe=new t;function Ot(e,i,r,n,o){let a=u.toCartesian(i,e._ellipsoid,yn),c=t.add(a,r,Fe),l=!1,s=e._ellipsoid,d=s.cartesianToCartographic(c,je);Math.abs(i.longitude-d.longitude)>p.PI_OVER_TWO&&(l=!0,c=t.subtract(a,r,Fe),d=s.cartesianToCartographic(c,je)),d.height=0;let h=e.project(d,o);return o=t.subtract(h,n,o),o.z=0,o=t.normalize(o,o),l&&t.negate(o,o),o}var An=new t,Xe=new t;function Ye(e,i,r,n,o,a){let c=t.subtract(i,e,An);t.normalize(c,c);let l=r-Qe,s=t.multiplyByScalar(c,l,Xe);t.add(e,s,o);let d=n-tn;s=t.multiplyByScalar(c,d,Xe),t.add(i,s,a)}var Mn=new t;function Ut(e,i){let r=jt.getPointDistance(Gt,e),n=jt.getPointDistance(Gt,i),o=Mn;p.equalsEpsilon(r,0,p.EPSILON2)?(o=et(i,e,o),t.multiplyByScalar(o,p.EPSILON2,o),t.add(e,o,e)):p.equalsEpsilon(n,0,p.EPSILON2)&&(o=et(e,i,o),t.multiplyByScalar(o,p.EPSILON2,o),t.add(i,o,i))}function Rn(e,i){let r=Math.abs(e.longitude),n=Math.abs(i.longitude);if(p.equalsEpsilon(r,p.PI,p.EPSILON11)){let o=p.sign(i.longitude);return e.longitude=o*(r-p.EPSILON11),1}else if(p.equalsEpsilon(n,p.PI,p.EPSILON11)){let o=p.sign(e.longitude);return i.longitude=o*(n-p.EPSILON11),2}return 0}var nn=new u,on=new u,Ue=new t,re=new t,Ge=new t,qe=new t,Pn=new t,We=new t,bn=[nn,on],vn=new Y,Bn=new t,zn=new t,jn=new t,Fn=new t,Xn=new t,Yn=new t,ae=new t,ce=new t,Un=new t,Gn=new t,qn=new t,Ze=new t,Wn=new t,Zn=new t,Vn=new Ct,$n=new Ct,Ve=new t,Jn=new t,$e=new t,Kn=[new U,new U],rn=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],Je=rn.length;function Qn(e,i,r,n,o,a,c){let l,s,d=i._ellipsoid,h=r.length/3-1,N=h*8,S=N*4,M=h*36,O=N>65535?new Uint32Array(M):new Uint16Array(M),D=new Float64Array(N*3),z=new Float32Array(S),G=new Float32Array(S),f=new Float32Array(S),j=new Float32Array(S),b=new Float32Array(S),k,I,C,H;c&&(k=new Float32Array(S),I=new Float32Array(S),C=new Float32Array(S),H=new Float32Array(N*2));let P=a.length/2,v=0,E=nn;E.height=0;let x=on;x.height=0;let L=Ue,_=re;if(c)for(s=0,l=1;l<P;l++)E.latitude=a[s],E.longitude=a[s+1],x.latitude=a[s+2],x.longitude=a[s+3],L=i.project(E,L),_=i.project(x,_),v+=t.distance(L,_),s+=2;let F=n.length/3;_=t.unpack(n,0,_);let y=0;for(s=3,l=1;l<F;l++)L=t.clone(_,L),_=t.unpack(n,s,_),y+=t.distance(L,_),s+=3;let m;s=3;let Z=0,Dt=0,A=0,St=0,X=!1,ct=t.unpack(r,0,qe),st=t.unpack(n,0,re),q=t.unpack(o,0,We);if(e){let lt=t.unpack(r,r.length-6,Ge);ze(q,lt,ct,st)&&(q=t.negate(q,q))}let pe=0,de=0,qt=0;for(l=0;l<h;l++){let lt=t.clone(ct,Ge),Zt=t.clone(st,Ue),ft=t.clone(q,Pn);X&&(ft=t.negate(ft,ft)),ct=t.unpack(r,s,qe),st=t.unpack(n,s,re),q=t.unpack(o,s,We),X=ze(q,lt,ct,st),E.latitude=a[Z],E.longitude=a[Z+1],x.latitude=a[Z+2],x.longitude=a[Z+3];let ht,mt,nt,ot;if(c){let T=Rn(E,x);ht=i.project(E,Xn),mt=i.project(x,Yn);let ut=et(mt,ht,Ve);ut.y=Math.abs(ut.y),nt=ae,ot=ce,T===0||t.dot(ut,t.UNIT_Y)>Ke?(nt=Ot(i,E,ft,ht,ae),ot=Ot(i,x,q,mt,ce)):T===1?(ot=Ot(i,x,q,mt,ce),nt.x=0,nt.y=p.sign(E.longitude-Math.abs(x.longitude)),nt.z=0):(nt=Ot(i,E,ft,ht,ae),ot.x=0,ot.y=p.sign(E.longitude-x.longitude),ot.z=0)}let ge=t.distance(Zt,st),ue=Ct.fromCartesian(lt,Vn),It=t.subtract(ct,lt,Un),an=t.normalize(It,Ze),Et=t.subtract(Zt,lt,Gn);Et=t.normalize(Et,Et);let gt=t.cross(an,Et,Ze);gt=t.normalize(gt,gt);let Ht=t.cross(Et,ft,Wn);Ht=t.normalize(Ht,Ht);let kt=t.subtract(st,ct,qn);kt=t.normalize(kt,kt);let yt=t.cross(q,kt,Zn);yt=t.normalize(yt,yt);let cn=ge/y,sn=pe/y,Vt=0,xt,At,pt,we=0,Se=0;if(c){Vt=t.distance(ht,mt),xt=Ct.fromCartesian(ht,$n),At=t.subtract(mt,ht,Ve),pt=t.normalize(At,Jn);let T=pt.x;pt.x=pt.y,pt.y=-T,we=Vt/v,Se=de/v}for(m=0;m<8;m++){let T=St+m*4,ut=Dt+m*2,Nt=T+3,Ee=m<4?1:-1,Mt=m===2||m===3||m===6||m===7?1:-1;t.pack(ue.high,z,T),z[Nt]=It.x,t.pack(ue.low,G,T),G[Nt]=It.y,t.pack(Ht,f,T),f[Nt]=It.z,t.pack(yt,j,T),j[Nt]=cn*Ee,t.pack(gt,b,T);let dt=sn*Mt;dt===0&&Mt<0&&(dt=9),b[Nt]=dt,c&&(k[T]=xt.high.x,k[T+1]=xt.high.y,k[T+2]=xt.low.x,k[T+3]=xt.low.y,C[T]=-nt.y,C[T+1]=nt.x,C[T+2]=ot.y,C[T+3]=-ot.x,I[T]=At.x,I[T+1]=At.y,I[T+2]=pt.x,I[T+3]=pt.y,H[ut]=we*Ee,dt=Se*Mt,dt===0&&Mt<0&&(dt=9),H[ut+1]=dt)}let V=jn,$=Fn,J=Bn,K=zn,ln=Y.fromCartographicArray(bn,vn),Te=Ft.getMinimumMaximumHeights(ln,d),$t=Te.minimumTerrainHeight,Jt=Te.maximumTerrainHeight;qt+=Math.abs($t),qt+=Math.abs(Jt),Ye(lt,Zt,$t,Jt,V,J),Ye(ct,st,$t,Jt,$,K);let Q=t.multiplyByScalar(gt,p.EPSILON5,$e);t.add(V,Q,V),t.add($,Q,$),t.add(J,Q,J),t.add(K,Q,K),Ut(V,$),Ut(J,K),t.pack(V,D,A),t.pack($,D,A+3),t.pack(K,D,A+6),t.pack(J,D,A+9),Q=t.multiplyByScalar(gt,-2*p.EPSILON5,$e),t.add(V,Q,V),t.add($,Q,$),t.add(J,Q,J),t.add(K,Q,K),Ut(V,$),Ut(J,K),t.pack(V,D,A+12),t.pack($,D,A+15),t.pack(K,D,A+18),t.pack(J,D,A+21),Z+=2,s+=3,Dt+=16,A+=24,St+=32,pe+=ge,de+=Vt}s=0;let fe=0;for(l=0;l<h;l++){for(m=0;m<Je;m++)O[s+m]=rn[m]+fe;fe+=8,s+=Je}let Wt=Kn;U.fromVertices(r,t.ZERO,3,Wt[0]),U.fromVertices(n,t.ZERO,3,Wt[1]);let me=U.fromBoundingSpheres(Wt);me.radius+=qt/(h*2);let Tt={position:new zt({componentDatatype:Bt.DOUBLE,componentsPerAttribute:3,normalize:!1,values:D}),startHiAndForwardOffsetX:rt(z),startLoAndForwardOffsetY:rt(G),startNormalAndForwardOffsetZ:rt(f),endNormalAndTextureCoordinateNormalizationX:rt(j),rightNormalAndTextureCoordinateNormalizationY:rt(b)};return c&&(Tt.startHiLo2D=rt(k),Tt.offsetAndRight2D=rt(I),Tt.startEndNormals2D=rt(C),Tt.texcoordNormalization2D=new zt({componentDatatype:Bt.FLOAT,componentsPerAttribute:2,normalize:!1,values:H})),new Ce({attributes:Tt,indices:O,boundingSphere:me})}function rt(e){return new zt({componentDatatype:Bt.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}at._projectNormal=Ot;var he=at;function to(e,i){return Ft.initialize().then(function(){return g(i)&&(e=he.unpack(e,i)),he.createGeometry(e)})}var Qo=to;export{Qo as default}; diff --git a/public/Cesium/Workers/createPlaneGeometry.js b/public/Cesium/Workers/createPlaneGeometry.js new file mode 100644 index 000000000..637ddf011 --- /dev/null +++ b/public/Cesium/Workers/createPlaneGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as m}from"./chunk-CYCB63OH.js";import{a as b}from"./chunk-A56XVLQR.js";import{b as v,c as x,d as c}from"./chunk-RCV6KWXS.js";import{d as l}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as i}from"./chunk-AU7IKHOH.js";import{a as u,f as A}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as f}from"./chunk-LEYMRMBK.js";import{e as s}from"./chunk-VTAIKJXX.js";function p(r){r=r??A.EMPTY_OBJECT;let e=r.vertexFormat??m.DEFAULT;this._vertexFormat=e,this._workerName="createPlaneGeometry"}p.packedLength=m.packedLength;p.pack=function(r,e,o){return f.typeOf.object("value",r),f.defined("array",e),o=o??0,m.pack(r._vertexFormat,e,o),e};var d=new m,P={vertexFormat:d};p.unpack=function(r,e,o){f.defined("array",r),e=e??0;let a=m.unpack(r,e,d);return s(o)?(o._vertexFormat=m.clone(a,o._vertexFormat),o):new p(P)};var y=new u(-.5,-.5,0),F=new u(.5,.5,0);p.createGeometry=function(r){let e=r._vertexFormat,o=new b,a,n;if(e.position){if(n=new Float64Array(12),n[0]=y.x,n[1]=y.y,n[2]=0,n[3]=F.x,n[4]=y.y,n[5]=0,n[6]=F.x,n[7]=F.y,n[8]=0,n[9]=y.x,n[10]=F.y,n[11]=0,o.position=new c({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:n}),e.normal){let t=new Float32Array(12);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=1,t[9]=0,t[10]=0,t[11]=1,o.normal=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}if(e.st){let t=new Float32Array(8);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=1,t[5]=1,t[6]=0,t[7]=1,o.st=new c({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:t})}if(e.tangent){let t=new Float32Array(12);t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=1,t[7]=0,t[8]=0,t[9]=1,t[10]=0,t[11]=0,o.tangent=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}if(e.bitangent){let t=new Float32Array(12);t[0]=0,t[1]=1,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=1,t[8]=0,t[9]=0,t[10]=1,t[11]=0,o.bitangent=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}a=new Uint16Array(6),a[0]=0,a[1]=1,a[2]=2,a[3]=0,a[4]=2,a[5]=3}return new x({attributes:o,indices:a,primitiveType:v.TRIANGLES,boundingSphere:new l(u.ZERO,Math.sqrt(2))})};var w=p;function h(r,e){return s(e)&&(r=w.unpack(r,e)),w.createGeometry(r)}var N=h;export{N as default}; diff --git a/public/Cesium/Workers/createPlaneOutlineGeometry.js b/public/Cesium/Workers/createPlaneOutlineGeometry.js new file mode 100644 index 000000000..0ef8789a3 --- /dev/null +++ b/public/Cesium/Workers/createPlaneOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l}from"./chunk-A56XVLQR.js";import{b as d,c as y,d as s}from"./chunk-RCV6KWXS.js";import{d as c}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as f}from"./chunk-AU7IKHOH.js";import{a}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as i}from"./chunk-VTAIKJXX.js";function o(){this._workerName="createPlaneOutlineGeometry"}o.packedLength=0;o.pack=function(r,e){return m.defined("value",r),m.defined("array",e),e};o.unpack=function(r,e,t){return m.defined("array",r),i(t)?t:new o};var n=new a(-.5,-.5,0),p=new a(.5,.5,0);o.createGeometry=function(){let r=new l,e=new Uint16Array(8),t=new Float64Array(12);return t[0]=n.x,t[1]=n.y,t[2]=n.z,t[3]=p.x,t[4]=n.y,t[5]=n.z,t[6]=p.x,t[7]=p.y,t[8]=n.z,t[9]=n.x,t[10]=p.y,t[11]=n.z,r.position=new s({componentDatatype:f.DOUBLE,componentsPerAttribute:3,values:t}),e[0]=0,e[1]=1,e[2]=1,e[3]=2,e[4]=2,e[5]=3,e[6]=3,e[7]=0,new y({attributes:r,indices:e,primitiveType:d.LINES,boundingSphere:new c(a.ZERO,Math.sqrt(2))})};var u=o;function w(r,e){return i(e)&&(r=u.unpack(r,e)),u.createGeometry(r)}var D=w;export{D as default}; diff --git a/public/Cesium/Workers/createPolygonGeometry.js b/public/Cesium/Workers/createPolygonGeometry.js new file mode 100644 index 000000000..d9ce2f006 --- /dev/null +++ b/public/Cesium/Workers/createPolygonGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as mt}from"./chunk-WGGIH7QW.js";import{a as L}from"./chunk-AJYK4IVJ.js";import{a as st}from"./chunk-J6UP6FLE.js";import{a as rt}from"./chunk-D6AA5QVT.js";import{a as bt}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as lt}from"./chunk-GBYLG25F.js";import{a as q}from"./chunk-CYCB63OH.js";import{a as Z}from"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as dt,b as ot}from"./chunk-77IHZJJ3.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import{a as wt,b as yt}from"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as ct}from"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import{c as ut,d as $}from"./chunk-RCV6KWXS.js";import{d as Tt}from"./chunk-4IW2T6GF.js";import{f as at,h as _t}from"./chunk-PSPPBZWI.js";import{a as X}from"./chunk-AU7IKHOH.js";import{a as c,b as et,c as O,d as S,e as D,f as Pt}from"./chunk-64RSHJUE.js";import{a as l}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as ft,b as Y}from"./chunk-LEYMRMBK.js";import{e as P}from"./chunk-VTAIKJXX.js";function b(t,e){this.position=t,P(this.position)||(this.position=new O),this.tangentPlane=e,P(this.tangentPlane)||(this.tangentPlane=b.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(b.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let t=O.magnitude(this.position),e=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(l.PI_OVER_TWO-2*Math.atan2(t,e))}},longitude:{get:function(){let t=l.PI_OVER_TWO+Math.atan2(this.y,this.x);return t>Math.PI&&(t-=l.TWO_PI),t}}});var nt=new et,Rt=new c;b.prototype.getLatitude=function(t){P(t)||(t=S.default),nt.latitude=this.conformalLatitude,nt.longitude=this.longitude,nt.height=0;let e=this.ellipsoid.cartographicToCartesian(nt,Rt);return t.cartesianToCartographic(e,nt),nt.latitude};var It=new wt,Lt=new c,Ft=new c;b.fromCartesian=function(t,e){Y.defined("cartesian",t);let o=l.signNotZero(t.z),n=b.NORTH_POLE_TANGENT_PLANE,s=b.SOUTH_POLE;o<0&&(n=b.SOUTH_POLE_TANGENT_PLANE,s=b.NORTH_POLE);let i=It;i.origin=n.ellipsoid.scaleToGeocentricSurface(t,i.origin),i.direction=c.subtract(i.origin,s,Lt),c.normalize(i.direction,i.direction);let r=yt.rayPlane(i,n.plane,Ft),f=c.subtract(r,s,r),d=c.dot(n.xAxis,f),p=o*c.dot(n.yAxis,f);return P(e)?(e.position=new O(d,p),e.tangentPlane=n,e):new b(new O(d,p),n)};b.fromCartesianArray=function(t,e){Y.defined("cartesians",t);let o=t.length;P(e)?e.length=o:e=new Array(o);for(let n=0;n<o;n++)e[n]=b.fromCartesian(t[n],e[n]);return e};b.clone=function(t,e){if(P(t))return P(e)?(e.position=t.position,e.tangentPlane=t.tangentPlane,e):new b(t.position,t.tangentPlane)};b.HALF_UNIT_SPHERE=Object.freeze(new S(.5,.5,.5));b.NORTH_POLE=Object.freeze(new c(0,0,.5));b.SOUTH_POLE=Object.freeze(new c(0,0,-.5));b.NORTH_POLE_TANGENT_PLANE=Object.freeze(new Z(b.NORTH_POLE,b.HALF_UNIT_SPHERE));b.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new Z(b.SOUTH_POLE,b.HALF_UNIT_SPHERE));var z=b;var vt=new et,Ot=new et;function St(t,e,o,n){let i=n.cartesianToCartographic(t,vt).height,r=n.cartesianToCartographic(e,Ot);r.height=i,n.cartographicToCartesian(r,e);let f=n.cartesianToCartographic(o,Ot);f.height=i-100,n.cartographicToCartesian(f,o)}var Et=new mt,Vt=new c,Bt=new c,Mt=new c,jt=new c,kt=new c,zt=new c,ht=new c,Q=new c,it=new c,Dt=new O,Ut=new O,Wt=new c,At=new at,Gt=new D,Yt=new D;function gt(t){let e=t.vertexFormat,o=t.geometry,n=t.shadowVolume,s=o.attributes.position.values,i=P(o.attributes.st)?o.attributes.st.values:void 0,r=s.length,f=t.wall,d=t.top||f,p=t.bottom||f;if(e.st||e.normal||e.tangent||e.bitangent||n){let w=t.boundingRectangle,a=t.rotationAxis,H=t.projectTo2d,x=t.ellipsoid,M=t.stRotation,C=t.perPositionHeight,R=Dt;R.x=w.x,R.y=w.y;let V=e.st?new Float32Array(2*(r/3)):void 0,u;e.normal&&(C&&d&&!f?u=o.attributes.normal.values:u=new Float32Array(r));let E=e.tangent?new Float32Array(r):void 0,A=e.bitangent?new Float32Array(r):void 0,F=n?new Float32Array(r):void 0,T=0,y=0,_=Bt,h=Mt,g=jt,j=!0,G=Gt,K=Yt;if(M!==0){let B=at.fromAxisAngle(a,M,At);G=D.fromQuaternion(B,G),B=at.fromAxisAngle(a,-M,At),K=D.fromQuaternion(B,K)}else G=D.clone(D.IDENTITY,G),K=D.clone(D.IDENTITY,K);let m=0,I=0;d&&p&&(m=r/2,I=r/3,r/=2);for(let B=0;B<r;B+=3){let k=c.fromArray(s,B,Wt);if(e.st&&!P(i)){let N=D.multiplyByVector(G,k,Vt);N=x.scaleToGeodeticSurface(N,N);let v=H([N],Ut)[0];O.subtract(v,R,v);let J=l.clamp(v.x/w.width,0,1),tt=l.clamp(v.y/w.height,0,1);p&&(V[T+I]=J,V[T+1+I]=tt),d&&(V[T]=J,V[T+1]=tt),T+=2}if(e.normal||e.tangent||e.bitangent||n){let N=y+1,v=y+2;if(f){if(B+3<r){let J=c.fromArray(s,B+3,kt);if(j){let tt=c.fromArray(s,B+r,zt);C&&St(k,J,tt,x),c.subtract(J,k,J),c.subtract(tt,k,tt),_=c.normalize(c.cross(tt,J,_),_),j=!1}c.equalsEpsilon(J,k,l.EPSILON10)&&(j=!0)}(e.tangent||e.bitangent)&&(g=x.geodeticSurfaceNormal(k,g),e.tangent&&(h=c.normalize(c.cross(g,_,h),h)))}else _=x.geodeticSurfaceNormal(k,_),(e.tangent||e.bitangent)&&(C&&(ht=c.fromArray(u,y,ht),Q=c.cross(c.UNIT_Z,ht,Q),Q=c.normalize(D.multiplyByVector(K,Q,Q),Q),e.bitangent&&(it=c.normalize(c.cross(ht,Q,it),it))),h=c.cross(c.UNIT_Z,_,h),h=c.normalize(D.multiplyByVector(K,h,h),h),e.bitangent&&(g=c.normalize(c.cross(_,h,g),g)));e.normal&&(t.wall?(u[y+m]=_.x,u[N+m]=_.y,u[v+m]=_.z):p&&(u[y+m]=-_.x,u[N+m]=-_.y,u[v+m]=-_.z),(d&&!C||f)&&(u[y]=_.x,u[N]=_.y,u[v]=_.z)),n&&(f&&(_=x.geodeticSurfaceNormal(k,_)),F[y+m]=-_.x,F[N+m]=-_.y,F[v+m]=-_.z),e.tangent&&(t.wall?(E[y+m]=h.x,E[N+m]=h.y,E[v+m]=h.z):p&&(E[y+m]=-h.x,E[N+m]=-h.y,E[v+m]=-h.z),d&&(C?(E[y]=Q.x,E[N]=Q.y,E[v]=Q.z):(E[y]=h.x,E[N]=h.y,E[v]=h.z))),e.bitangent&&(p&&(A[y+m]=g.x,A[N+m]=g.y,A[v+m]=g.z),d&&(C?(A[y]=it.x,A[N]=it.y,A[v]=it.z):(A[y]=g.x,A[N]=g.y,A[v]=g.z))),y+=3}}e.st&&!P(i)&&(o.attributes.st=new $({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:V})),e.normal&&(o.attributes.normal=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:u})),e.tangent&&(o.attributes.tangent=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:E})),e.bitangent&&(o.attributes.bitangent=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:A})),n&&(o.attributes.extrudeDirection=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:F}))}if(t.extrude&&P(t.offsetAttribute)){let w=s.length/3,a=new Uint8Array(w);if(t.offsetAttribute===lt.TOP)d&&p||f?a=a.fill(1,0,w/2):d&&(a=a.fill(1));else{let H=t.offsetAttribute===lt.NONE?0:1;a=a.fill(H)}o.attributes.applyOffset=new $({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:a})}return o}var Ht=[];function qt(t,e,o,n,s,i,r,f,d,p){let w={walls:[]},a;if(r||f){let u=L.createGeometryFromPositions(t,e,o,n,i,d,p),E=u.attributes.position.values,A=u.indices,F,T;if(r&&f){let y=E.concat(E);F=y.length/3,T=ct.createTypedArray(F,A.length*2),T.set(A);let _=A.length,h=F/2;for(a=0;a<_;a+=3){let g=T[a]+h,j=T[a+1]+h,G=T[a+2]+h;T[a+_]=G,T[a+1+_]=j,T[a+2+_]=g}if(u.attributes.position.values=y,i&&d.normal){let g=u.attributes.normal.values;u.attributes.normal.values=new Float32Array(y.length),u.attributes.normal.values.set(g)}if(d.st&&P(o)){let g=u.attributes.st.values;u.attributes.st.values=new Float32Array(F*2),u.attributes.st.values=g.concat(g)}u.indices=T}else if(f){for(F=E.length/3,T=ct.createTypedArray(F,A.length),a=0;a<A.length;a+=3)T[a]=A[a+2],T[a+1]=A[a+1],T[a+2]=A[a];u.indices=T}w.topAndBottom=new rt({geometry:u})}let H=s.outerRing,x=Z.fromPoints(H,t),M=x.projectPointsOntoPlane(H,Ht),C=ot.computeWindingOrder2D(M);C===dt.CLOCKWISE&&(H=H.slice().reverse());let R=L.computeWallGeometry(H,o,t,n,i,p);w.walls.push(new rt({geometry:R}));let V=s.holes;for(a=0;a<V.length;a++){let u=V[a];M=x.projectPointsOntoPlane(u,Ht),C=ot.computeWindingOrder2D(M),C===dt.COUNTER_CLOCKWISE&&(u=u.slice().reverse()),R=L.computeWallGeometry(u,o,t,n,i,p),w.walls.push(new rt({geometry:R}))}return w}function W(t){if(Y.typeOf.object("options",t),Y.typeOf.object("options.polygonHierarchy",t.polygonHierarchy),P(t.perPositionHeight)&&t.perPositionHeight&&P(t.height))throw new ft("Cannot use both options.perPositionHeight and options.height");if(P(t.arcType)&&t.arcType!==st.GEODESIC&&t.arcType!==st.RHUMB)throw new ft("Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.");let e=t.polygonHierarchy,o=t.vertexFormat??q.DEFAULT,n=t.ellipsoid??S.default,s=t.granularity??l.RADIANS_PER_DEGREE,i=t.stRotation??0,r=t.textureCoordinates,f=t.perPositionHeight??!1,d=f&&P(t.extrudedHeight),p=t.height??0,w=t.extrudedHeight??p;if(!d){let a=Math.max(p,w);w=Math.min(p,w),p=a}this._vertexFormat=q.clone(o),this._ellipsoid=S.clone(n),this._granularity=s,this._stRotation=i,this._height=p,this._extrudedHeight=w,this._closeTop=t.closeTop??!0,this._closeBottom=t.closeBottom??!0,this._polygonHierarchy=e,this._perPositionHeight=f,this._perPositionHeightExtrude=d,this._shadowVolume=t.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=t.offsetAttribute,this._arcType=t.arcType??st.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=r,this.packedLength=L.computeHierarchyPackedLength(e,c)+S.packedLength+q.packedLength+(r?L.computeHierarchyPackedLength(r,O):1)+12}W.fromPositions=function(t){t=t??Pt.EMPTY_OBJECT,Y.defined("options.positions",t.positions);let e={polygonHierarchy:{positions:t.positions},height:t.height,extrudedHeight:t.extrudedHeight,vertexFormat:t.vertexFormat,stRotation:t.stRotation,ellipsoid:t.ellipsoid,granularity:t.granularity,perPositionHeight:t.perPositionHeight,closeTop:t.closeTop,closeBottom:t.closeBottom,offsetAttribute:t.offsetAttribute,arcType:t.arcType,textureCoordinates:t.textureCoordinates};return new W(e)};W.pack=function(t,e,o){return Y.typeOf.object("value",t),Y.defined("array",e),o=o??0,o=L.packPolygonHierarchy(t._polygonHierarchy,e,o,c),S.pack(t._ellipsoid,e,o),o+=S.packedLength,q.pack(t._vertexFormat,e,o),o+=q.packedLength,e[o++]=t._height,e[o++]=t._extrudedHeight,e[o++]=t._granularity,e[o++]=t._stRotation,e[o++]=t._perPositionHeightExtrude?1:0,e[o++]=t._perPositionHeight?1:0,e[o++]=t._closeTop?1:0,e[o++]=t._closeBottom?1:0,e[o++]=t._shadowVolume?1:0,e[o++]=t._offsetAttribute??-1,e[o++]=t._arcType,P(t._textureCoordinates)?o=L.packPolygonHierarchy(t._textureCoordinates,e,o,O):e[o++]=-1,e[o++]=t.packedLength,e};var Qt=S.clone(S.UNIT_SPHERE),Zt=new q,Kt={polygonHierarchy:{}};W.unpack=function(t,e,o){Y.defined("array",t),e=e??0;let n=L.unpackPolygonHierarchy(t,e,c);e=n.startingIndex,delete n.startingIndex;let s=S.unpack(t,e,Qt);e+=S.packedLength;let i=q.unpack(t,e,Zt);e+=q.packedLength;let r=t[e++],f=t[e++],d=t[e++],p=t[e++],w=t[e++]===1,a=t[e++]===1,H=t[e++]===1,x=t[e++]===1,M=t[e++]===1,C=t[e++],R=t[e++],V=t[e]===-1?void 0:L.unpackPolygonHierarchy(t,e,O);P(V)?(e=V.startingIndex,delete V.startingIndex):e++;let u=t[e++];return P(o)||(o=new W(Kt)),o._polygonHierarchy=n,o._ellipsoid=S.clone(s,o._ellipsoid),o._vertexFormat=q.clone(i,o._vertexFormat),o._height=r,o._extrudedHeight=f,o._granularity=d,o._stRotation=p,o._perPositionHeightExtrude=w,o._perPositionHeight=a,o._closeTop=H,o._closeBottom=x,o._shadowVolume=M,o._offsetAttribute=C===-1?void 0:C,o._arcType=R,o._textureCoordinates=V,o.packedLength=u,o};var Jt=new O,Xt=new O,$t=new z;function xt(t,e,o,n,s,i){let r=t.longitude,f=r>=0?r:r+l.TWO_PI;s.westOverIdl=Math.min(s.westOverIdl,f),s.eastOverIdl=Math.max(s.eastOverIdl,f),i.west=Math.min(i.west,r),i.east=Math.max(i.east,r);let d=t.getLatitude(o),p=d;if(i.south=Math.min(i.south,d),i.north=Math.max(i.north,d),n!==st.RHUMB){let H=O.subtract(e.position,t.position,Jt),x=O.dot(e.position,H)/O.dot(H,H);if(x>0&&x<1){let M=O.add(e.position,O.multiplyByScalar(H,-x,H),Xt),C=z.clone(e,$t);C.position=M;let R=C.getLatitude(o);i.south=Math.min(i.south,R),i.north=Math.max(i.north,R),Math.abs(d)>Math.abs(R)&&(p=R)}}let w=e.x*t.y-t.x*e.y,a=Math.sign(w);a!==0&&(a*=O.angleBetween(e.position,t.position)),p>=0&&(s.northAngle+=a),p<=0&&(s.southAngle+=a)}var Ct=new z,te=new z,U={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};W.computeRectangleFromPositions=function(t,e,o,n){if(Y.defined("positions",t),P(n)||(n=new _t),t.length<3)return n;n.west=Number.POSITIVE_INFINITY,n.east=Number.NEGATIVE_INFINITY,n.south=Number.POSITIVE_INFINITY,n.north=Number.NEGATIVE_INFINITY,U.northAngle=0,U.southAngle=0,U.westOverIdl=Number.POSITIVE_INFINITY,U.eastOverIdl=Number.NEGATIVE_INFINITY;let s=t.length,i=z.fromCartesian(t[0],te);for(let r=1;r<s;r++){let f=z.fromCartesian(t[r],Ct);xt(f,i,e,o,U,n),i=z.clone(f,i)}return xt(z.fromCartesian(t[0],Ct),i,e,o,U,n),n.east-n.west>U.eastOverIdl-U.westOverIdl&&(n.west=U.westOverIdl,n.east=U.eastOverIdl,n.east>l.PI&&(n.east=n.east-l.TWO_PI),n.west>l.PI&&(n.west=n.west-l.TWO_PI)),l.equalsEpsilon(Math.abs(U.northAngle),l.TWO_PI,l.EPSILON10)&&(n.north=l.PI_OVER_TWO,n.east=l.PI,n.west=-l.PI),l.equalsEpsilon(Math.abs(U.southAngle),l.TWO_PI,l.EPSILON10)&&(n.south=-l.PI_OVER_TWO,n.east=l.PI,n.west=-l.PI),n};var ee=new z;function oe(t,e,o){return t.height>=l.PI||t.width>=l.PI?z.fromCartesian(e[0],ee).tangentPlane:Z.fromPoints(e,o)}var Nt=new et;function ne(t,e,o){return(n,s)=>{if(t.height>=l.PI||t.width>=l.PI){if(t.south<0&&t.north>0){P(s)||(s=[]);for(let r=0;r<n.length;++r){let f=o.cartesianToCartographic(n[r],Nt);s[r]=new O(f.longitude/l.PI,f.latitude/l.PI_OVER_TWO)}return s.length=n.length,s}return z.fromCartesianArray(n,s)}return Z.fromPoints(e,o).projectPointsOntoPlane(n,s)}}function ie(t,e,o){if(t.height>=l.PI||t.width>=l.PI)return(s,i)=>{if(t.south<0&&t.north>0){let r=o.cartesianToCartographic(s,Nt);return P(i)||(i=new O),i.x=r.longitude/l.PI,i.y=r.latitude/l.PI_OVER_TWO,i}return z.fromCartesian(s,i)};let n=Z.fromPoints(e,o);return(s,i)=>n.projectPointsOntoPlane(s,i)}function re(t,e,o,n){return(s,i)=>!n&&(t.height>=l.PI_OVER_TWO||t.width>=2*l.PI_OVER_THREE)?L.splitPolygonsOnEquator(s,e,o,i):s}function se(t,e,o,n){if(e.height>=l.PI||e.width>=l.PI)return mt.fromRectangle(e,void 0,Et);let s=t,i=Z.fromPoints(s,o);return L.computeBoundingRectangle(i.plane.normal,i.projectPointOntoPlane.bind(i),s,n,Et)}W.createGeometry=function(t){let e=t._vertexFormat,o=t._ellipsoid,n=t._granularity,s=t._stRotation,i=t._polygonHierarchy,r=t._perPositionHeight,f=t._closeTop,d=t._closeBottom,p=t._arcType,w=t._textureCoordinates,a=P(w),H=i.positions;if(H.length<3)return;let x=t.rectangle,M=L.polygonsFromHierarchy(i,a,ne(x,H,o),!r,o,re(x,o,p,r)),C=M.hierarchy,R=M.polygons,V=function(m){return m},u=a?L.polygonsFromHierarchy(w,!0,V,!1,o).polygons:void 0;if(C.length===0)return;let E=C[0].outerRing,A=se(E,x,o,s),F=[],T=t._height,y=t._extrudedHeight,_=t._perPositionHeightExtrude||!l.equalsEpsilon(T,y,0,l.EPSILON2),h={perPositionHeight:r,vertexFormat:e,geometry:void 0,rotationAxis:oe(x,E,o).plane.normal,projectTo2d:ie(x,E,o),boundingRectangle:A,ellipsoid:o,stRotation:s,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:p},g;if(_)for(h.extrude=!0,h.top=f,h.bottom=d,h.shadowVolume=t._shadowVolume,h.offsetAttribute=t._offsetAttribute,g=0;g<R.length;g++){let m=qt(o,R[g],a?u[g]:void 0,n,C[g],r,f,d,e,p),I;f&&d?(I=m.topAndBottom,h.geometry=L.scaleToGeodeticHeightExtruded(I.geometry,T,y,o,r)):f?(I=m.topAndBottom,I.geometry.attributes.position.values=ot.scaleToGeodeticHeight(I.geometry.attributes.position.values,T,o,!r),h.geometry=I.geometry):d&&(I=m.topAndBottom,I.geometry.attributes.position.values=ot.scaleToGeodeticHeight(I.geometry.attributes.position.values,y,o,!0),h.geometry=I.geometry),(f||d)&&(h.wall=!1,I.geometry=gt(h),F.push(I));let B=m.walls;h.wall=!0;for(let k=0;k<B.length;k++){let N=B[k];h.geometry=L.scaleToGeodeticHeightExtruded(N.geometry,T,y,o,r),N.geometry=gt(h),F.push(N)}}else for(g=0;g<R.length;g++){let m=new rt({geometry:L.createGeometryFromPositions(o,R[g],a?u[g]:void 0,n,r,e,p)});if(m.geometry.attributes.position.values=ot.scaleToGeodeticHeight(m.geometry.attributes.position.values,T,o,!r),h.geometry=m.geometry,m.geometry=gt(h),P(t._offsetAttribute)){let I=m.geometry.attributes.position.values.length,B=t._offsetAttribute===lt.NONE?0:1,k=new Uint8Array(I/3).fill(B);m.geometry.attributes.applyOffset=new $({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}F.push(m)}let j=bt.combineInstances(F)[0];j.attributes.position.values=new Float64Array(j.attributes.position.values),j.indices=ct.createTypedArray(j.attributes.position.values.length/3,j.indices);let G=j.attributes,K=Tt.fromVertices(G.position.values);return e.position||delete G.position,new ut({attributes:G,indices:j.indices,primitiveType:j.primitiveType,boundingSphere:K,offsetAttribute:t._offsetAttribute})};W.createShadowVolume=function(t,e,o){let n=t._granularity,s=t._ellipsoid,i=e(n,s),r=o(n,s);return new W({polygonHierarchy:t._polygonHierarchy,ellipsoid:s,stRotation:t._stRotation,granularity:n,perPositionHeight:!1,extrudedHeight:i,height:r,vertexFormat:q.POSITION_ONLY,shadowVolume:!0,arcType:t._arcType})};function ae(t){let e=-t._stRotation;if(e===0)return[0,0,0,1,1,0];let o=t._ellipsoid,n=t._polygonHierarchy.positions,s=t.rectangle;return ut._textureCoordinateRotationPoints(n,e,o,s)}Object.defineProperties(W.prototype,{rectangle:{get:function(){if(!P(this._rectangle)){let t=this._polygonHierarchy.positions;this._rectangle=W.computeRectangleFromPositions(t,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return P(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=ae(this)),this._textureCoordinateRotationPoints}}});var pt=W;function ce(t,e){return P(e)&&(t=pt.unpack(t,e)),t._ellipsoid=S.clone(t._ellipsoid),pt.createGeometry(t)}var Xe=ce;export{Xe as default}; diff --git a/public/Cesium/Workers/createPolygonOutlineGeometry.js b/public/Cesium/Workers/createPolygonOutlineGeometry.js new file mode 100644 index 000000000..1a41d0181 --- /dev/null +++ b/public/Cesium/Workers/createPolygonOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-AJYK4IVJ.js";import{a as P}from"./chunk-J6UP6FLE.js";import{a as F}from"./chunk-D6AA5QVT.js";import{a as V}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as C}from"./chunk-GBYLG25F.js";import{a as M}from"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as W,b as D}from"./chunk-77IHZJJ3.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as G}from"./chunk-OFUUQVMR.js";import{a as B}from"./chunk-A56XVLQR.js";import{b as U,c as S,d as w}from"./chunk-RCV6KWXS.js";import{d as x}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as T}from"./chunk-AU7IKHOH.js";import{a as v,d as y,f as j}from"./chunk-64RSHJUE.js";import{a as L}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as N,b as O}from"./chunk-LEYMRMBK.js";import{e as E}from"./chunk-VTAIKJXX.js";var Y=[],k=[];function K(e,t,r,b,l){let p=M.fromPoints(t,e).projectPointsOntoPlane(t,Y);D.computeWindingOrder2D(p)===W.CLOCKWISE&&(p.reverse(),t=t.slice().reverse());let n,i,o=t.length,c=0;if(b)for(n=new Float64Array(o*2*3),i=0;i<o;i++){let u=t[i],h=t[(i+1)%o];n[c++]=u.x,n[c++]=u.y,n[c++]=u.z,n[c++]=h.x,n[c++]=h.y,n[c++]=h.z}else{let u=0;if(l===P.GEODESIC)for(i=0;i<o;i++)u+=a.subdivideLineCount(t[i],t[(i+1)%o],r);else if(l===P.RHUMB)for(i=0;i<o;i++)u+=a.subdivideRhumbLineCount(e,t[i],t[(i+1)%o],r);for(n=new Float64Array(u*3),i=0;i<o;i++){let h;l===P.GEODESIC?h=a.subdivideLine(t[i],t[(i+1)%o],r,k):l===P.RHUMB&&(h=a.subdivideRhumbLine(e,t[i],t[(i+1)%o],r,k));let g=h.length;for(let d=0;d<g;++d)n[c++]=h[d]}}o=n.length/3;let f=o*2,m=G.createTypedArray(o,f);for(c=0,i=0;i<o-1;i++)m[c++]=i,m[c++]=i+1;return m[c++]=o-1,m[c++]=0,new F({geometry:new S({attributes:new B({position:new w({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:n})}),indices:m,primitiveType:U.LINES})})}function q(e,t,r,b,l){let p=M.fromPoints(t,e).projectPointsOntoPlane(t,Y);D.computeWindingOrder2D(p)===W.CLOCKWISE&&(p.reverse(),t=t.slice().reverse());let n,i,o=t.length,c=new Array(o),f=0;if(b)for(n=new Float64Array(o*2*3*2),i=0;i<o;++i){c[i]=f/3;let g=t[i],d=t[(i+1)%o];n[f++]=g.x,n[f++]=g.y,n[f++]=g.z,n[f++]=d.x,n[f++]=d.y,n[f++]=d.z}else{let g=0;if(l===P.GEODESIC)for(i=0;i<o;i++)g+=a.subdivideLineCount(t[i],t[(i+1)%o],r);else if(l===P.RHUMB)for(i=0;i<o;i++)g+=a.subdivideRhumbLineCount(e,t[i],t[(i+1)%o],r);for(n=new Float64Array(g*3*2),i=0;i<o;++i){c[i]=f/3;let d;l===P.GEODESIC?d=a.subdivideLine(t[i],t[(i+1)%o],r,k):l===P.RHUMB&&(d=a.subdivideRhumbLine(e,t[i],t[(i+1)%o],r,k));let _=d.length;for(let R=0;R<_;++R)n[f++]=d[R]}}o=n.length/6;let m=c.length,u=(o*2+m)*2,h=G.createTypedArray(o+m,u);for(f=0,i=0;i<o;++i)h[f++]=i,h[f++]=(i+1)%o,h[f++]=i+o,h[f++]=(i+1)%o+o;for(i=0;i<m;i++){let g=c[i];h[f++]=g,h[f++]=g+o}return new F({geometry:new S({attributes:new B({position:new w({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:n})}),indices:h,primitiveType:U.LINES})})}function A(e){if(O.typeOf.object("options",e),O.typeOf.object("options.polygonHierarchy",e.polygonHierarchy),e.perPositionHeight&&E(e.height))throw new N("Cannot use both options.perPositionHeight and options.height");if(E(e.arcType)&&e.arcType!==P.GEODESIC&&e.arcType!==P.RHUMB)throw new N("Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.");let t=e.polygonHierarchy,r=e.ellipsoid??y.default,b=e.granularity??L.RADIANS_PER_DEGREE,l=e.perPositionHeight??!1,H=l&&E(e.extrudedHeight),p=e.arcType??P.GEODESIC,s=e.height??0,n=e.extrudedHeight??s;if(!H){let i=Math.max(s,n);n=Math.min(s,n),s=i}this._ellipsoid=y.clone(r),this._granularity=b,this._height=s,this._extrudedHeight=n,this._arcType=p,this._polygonHierarchy=t,this._perPositionHeight=l,this._perPositionHeightExtrude=H,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=a.computeHierarchyPackedLength(t,v)+y.packedLength+8}A.pack=function(e,t,r){return O.typeOf.object("value",e),O.defined("array",t),r=r??0,r=a.packPolygonHierarchy(e._polygonHierarchy,t,r,v),y.pack(e._ellipsoid,t,r),r+=y.packedLength,t[r++]=e._height,t[r++]=e._extrudedHeight,t[r++]=e._granularity,t[r++]=e._perPositionHeightExtrude?1:0,t[r++]=e._perPositionHeight?1:0,t[r++]=e._arcType,t[r++]=e._offsetAttribute??-1,t[r]=e.packedLength,t};var J=y.clone(y.UNIT_SPHERE),Q={polygonHierarchy:{}};A.unpack=function(e,t,r){O.defined("array",e),t=t??0;let b=a.unpackPolygonHierarchy(e,t,v);t=b.startingIndex,delete b.startingIndex;let l=y.unpack(e,t,J);t+=y.packedLength;let H=e[t++],p=e[t++],s=e[t++],n=e[t++]===1,i=e[t++]===1,o=e[t++],c=e[t++],f=e[t];return E(r)||(r=new A(Q)),r._polygonHierarchy=b,r._ellipsoid=y.clone(l,r._ellipsoid),r._height=H,r._extrudedHeight=p,r._granularity=s,r._perPositionHeight=i,r._perPositionHeightExtrude=n,r._arcType=o,r._offsetAttribute=c===-1?void 0:c,r.packedLength=f,r};A.fromPositions=function(e){e=e??j.EMPTY_OBJECT,O.defined("options.positions",e.positions);let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new A(t)};A.createGeometry=function(e){let t=e._ellipsoid,r=e._granularity,b=e._polygonHierarchy,l=e._perPositionHeight,H=e._arcType,p=a.polygonOutlinesFromHierarchy(b,!l,t);if(p.length===0)return;let s,n=[],i=L.chordLength(r,t.maximumRadius),o=e._height,c=e._extrudedHeight,f=e._perPositionHeightExtrude||!L.equalsEpsilon(o,c,0,L.EPSILON2),m,u;if(f)for(u=0;u<p.length;u++){if(s=q(t,p[u],i,l,H),s.geometry=a.scaleToGeodeticHeightExtruded(s.geometry,o,c,t,l),E(e._offsetAttribute)){let d=s.geometry.attributes.position.values.length/3,_=new Uint8Array(d);e._offsetAttribute===C.TOP?_=_.fill(1,0,d/2):(m=e._offsetAttribute===C.NONE?0:1,_=_.fill(m)),s.geometry.attributes.applyOffset=new w({componentDatatype:T.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}n.push(s)}else for(u=0;u<p.length;u++){if(s=K(t,p[u],i,l,H),s.geometry.attributes.position.values=D.scaleToGeodeticHeight(s.geometry.attributes.position.values,o,t,!l),E(e._offsetAttribute)){let d=s.geometry.attributes.position.values.length;m=e._offsetAttribute===C.NONE?0:1;let _=new Uint8Array(d/3).fill(m);s.geometry.attributes.applyOffset=new w({componentDatatype:T.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}n.push(s)}let h=V.combineInstances(n)[0],g=x.fromVertices(h.attributes.position.values);return new S({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:g,offsetAttribute:e._offsetAttribute})};var z=A;function X(e,t){return E(t)&&(e=z.unpack(e,t)),e._ellipsoid=y.clone(e._ellipsoid),z.createGeometry(e)}var Oe=X;export{Oe as default}; diff --git a/public/Cesium/Workers/createPolylineGeometry.js b/public/Cesium/Workers/createPolylineGeometry.js new file mode 100644 index 000000000..8b4724bb2 --- /dev/null +++ b/public/Cesium/Workers/createPolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as m}from"./chunk-HMIYSTF6.js";import{a as R}from"./chunk-J6UP6FLE.js";import{a as N}from"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as g}from"./chunk-CYCB63OH.js";import{a as le}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as se}from"./chunk-OFUUQVMR.js";import{a as ce}from"./chunk-A56XVLQR.js";import{a as ne,b as re,c as ie,d as x}from"./chunk-RCV6KWXS.js";import{d as oe}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as V}from"./chunk-AU7IKHOH.js";import{a as p,d as u,f as te}from"./chunk-64RSHJUE.js";import{a as j}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as F}from"./chunk-LEYMRMBK.js";import{e as h}from"./chunk-VTAIKJXX.js";var me=[];function Ae(e,o,t,n,c){let s=me;s.length=c;let l,k=t.red,a=t.green,r=t.blue,w=t.alpha,E=n.red,i=n.green,f=n.blue,b=n.alpha;if(m.equals(t,n)){for(l=0;l<c;l++)s[l]=m.clone(t);return s}let G=(E-k)/c,z=(i-a)/c,M=(f-r)/c,S=(b-w)/c;for(l=0;l<c;l++)s[l]=new m(k+l*G,a+l*z,r+l*M,w+l*S);return s}function q(e){e=e??te.EMPTY_OBJECT;let o=e.positions,t=e.colors,n=e.width??1,c=e.colorsPerVertex??!1;if(!h(o)||o.length<2)throw new F("At least two positions are required.");if(typeof n!="number")throw new F("width must be a number");if(h(t)&&(c&&t.length<o.length||!c&&t.length<o.length-1))throw new F("colors has an invalid length.");this._positions=o,this._colors=t,this._width=n,this._colorsPerVertex=c,this._vertexFormat=g.clone(e.vertexFormat??g.DEFAULT),this._arcType=e.arcType??R.GEODESIC,this._granularity=e.granularity??j.RADIANS_PER_DEGREE,this._ellipsoid=u.clone(e.ellipsoid??u.default),this._workerName="createPolylineGeometry";let s=1+o.length*p.packedLength;s+=h(t)?1+t.length*m.packedLength:1,this.packedLength=s+u.packedLength+g.packedLength+4}q.pack=function(e,o,t){if(!h(e))throw new F("value is required");if(!h(o))throw new F("array is required");t=t??0;let n,c=e._positions,s=c.length;for(o[t++]=s,n=0;n<s;++n,t+=p.packedLength)p.pack(c[n],o,t);let l=e._colors;for(s=h(l)?l.length:0,o[t++]=s,n=0;n<s;++n,t+=m.packedLength)m.pack(l[n],o,t);return u.pack(e._ellipsoid,o,t),t+=u.packedLength,g.pack(e._vertexFormat,o,t),t+=g.packedLength,o[t++]=e._width,o[t++]=e._colorsPerVertex?1:0,o[t++]=e._arcType,o[t]=e._granularity,o};var de=u.clone(u.UNIT_SPHERE),ue=new g,O={positions:void 0,colors:void 0,ellipsoid:de,vertexFormat:ue,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};q.unpack=function(e,o,t){if(!h(e))throw new F("array is required");o=o??0;let n,c=e[o++],s=new Array(c);for(n=0;n<c;++n,o+=p.packedLength)s[n]=p.unpack(e,o);c=e[o++];let l=c>0?new Array(c):void 0;for(n=0;n<c;++n,o+=m.packedLength)l[n]=m.unpack(e,o);let k=u.unpack(e,o,de);o+=u.packedLength;let a=g.unpack(e,o,ue);o+=g.packedLength;let r=e[o++],w=e[o++]===1,E=e[o++],i=e[o];return h(t)?(t._positions=s,t._colors=l,t._ellipsoid=u.clone(k,t._ellipsoid),t._vertexFormat=g.clone(a,t._vertexFormat),t._width=r,t._colorsPerVertex=w,t._arcType=E,t._granularity=i,t):(O.positions=s,O.colors=l,O.width=r,O.colorsPerVertex=w,O.arcType=E,O.granularity=i,new q(O))};var pe=new p,ae=new p,fe=new p,he=new p;q.createGeometry=function(e){let o=e._width,t=e._vertexFormat,n=e._colors,c=e._colorsPerVertex,s=e._arcType,l=e._granularity,k=e._ellipsoid,a,r,w,E=[],i=le(e._positions,p.equalsEpsilon,!1,E);if(h(n)&&E.length>0){let d=0,P=E[0];n=n.filter(function(U,L){let A=!1;return c?A=L===P||L===0&&P===1:A=L+1===P,A?(d++,P=E[d],!1):!0})}let f=i.length;if(f<2||o<=0)return;if(s===R.GEODESIC||s===R.RHUMB){let d,P;s===R.GEODESIC?(d=j.chordLength(l,k.maximumRadius),P=N.numberOfPoints):(d=l,P=N.numberOfPointsRhumbLine);let U=N.extractHeights(i,k);if(h(n)){let L=1;for(a=0;a<f-1;++a)L+=P(i[a],i[a+1],d);let A=new Array(L),y=0;for(a=0;a<f-1;++a){let X=i[a],Z=i[a+1],$=n[a],I=P(X,Z,d);if(c&&a<L){let _e=n[a+1],ee=Ae(X,Z,$,_e,I),Pe=ee.length;for(r=0;r<Pe;++r)A[y++]=ee[r]}else for(r=0;r<I;++r)A[y++]=m.clone($)}A[y]=m.clone(n[n.length-1]),n=A,me.length=0}s===R.GEODESIC?i=N.generateCartesianArc({positions:i,minDistance:d,ellipsoid:k,height:U}):i=N.generateCartesianRhumbArc({positions:i,granularity:d,ellipsoid:k,height:U})}f=i.length;let b=f*4-4,G=new Float64Array(b*3),z=new Float64Array(b*3),M=new Float64Array(b*3),S=new Float32Array(b*2),Y=t.st?new Float32Array(b*2):void 0,T=h(n)?new Uint8Array(b*4):void 0,H=0,K=0,Q=0,W=0,_;for(r=0;r<f;++r){r===0?(_=pe,p.subtract(i[0],i[1],_),p.add(i[0],_,_)):_=i[r-1],p.clone(_,fe),p.clone(i[r],ae),r===f-1?(_=pe,p.subtract(i[f-1],i[f-2],_),p.add(i[f-1],_,_)):_=i[r+1],p.clone(_,he);let d,P;h(T)&&(r!==0&&!c?d=n[r-1]:d=n[r],r!==f-1&&(P=n[r]));let U=r===0?2:0,L=r===f-1?2:4;for(w=U;w<L;++w){p.pack(ae,G,H),p.pack(fe,z,H),p.pack(he,M,H),H+=3;let A=w-2<0?-1:1;if(S[K++]=2*(w%2)-1,S[K++]=A*o,t.st&&(Y[Q++]=r/(f-1),Y[Q++]=Math.max(S[K-2],0)),h(T)){let y=w<2?d:P;T[W++]=m.floatToByte(y.red),T[W++]=m.floatToByte(y.green),T[W++]=m.floatToByte(y.blue),T[W++]=m.floatToByte(y.alpha)}}}let D=new ce;D.position=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:G}),D.prevPosition=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:z}),D.nextPosition=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:M}),D.expandAndWidth=new x({componentDatatype:V.FLOAT,componentsPerAttribute:2,values:S}),t.st&&(D.st=new x({componentDatatype:V.FLOAT,componentsPerAttribute:2,values:Y})),h(T)&&(D.color=new x({componentDatatype:V.UNSIGNED_BYTE,componentsPerAttribute:4,values:T,normalize:!0}));let v=se.createTypedArray(b,f*6-6),C=0,B=0,we=f-1;for(r=0;r<we;++r)v[B++]=C,v[B++]=C+2,v[B++]=C+1,v[B++]=C+1,v[B++]=C+2,v[B++]=C+3,C+=4;return new ie({attributes:D,indices:v,primitiveType:re.TRIANGLES,boundingSphere:oe.fromPoints(i),geometryType:ne.POLYLINES})};var J=q;function ge(e,o){return h(o)&&(e=J.unpack(e,o)),e._ellipsoid=u.clone(e._ellipsoid),J.createGeometry(e)}var We=ge;export{We as default}; diff --git a/public/Cesium/Workers/createPolylineVolumeGeometry.js b/public/Cesium/Workers/createPolylineVolumeGeometry.js new file mode 100644 index 000000000..2c304a025 --- /dev/null +++ b/public/Cesium/Workers/createPolylineVolumeGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as W}from"./chunk-WGGIH7QW.js";import{a as U}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as x,b as I,c as j}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as g}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as $,b as M}from"./chunk-77IHZJJ3.js";import{a as Z}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as Q}from"./chunk-A56XVLQR.js";import{b as V,c as Y,d as B}from"./chunk-RCV6KWXS.js";import{d as K}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as N}from"./chunk-AU7IKHOH.js";import{a as E,c as D,d as f,f as J}from"./chunk-64RSHJUE.js";import{a as H}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as A}from"./chunk-LEYMRMBK.js";import{e as _}from"./chunk-VTAIKJXX.js";function oe(t,e,n,o){let m=new Q;o.position&&(m.position=new B({componentDatatype:N.DOUBLE,componentsPerAttribute:3,values:t}));let i=e.length,u=t.length/3,w=(u-i*2)/(i*2),L=M.triangulate(e),R=(w-1)*i*6+L.length*2,r=X.createTypedArray(u,R),l,s,d,T,b,F,q=i*2,p=0;for(l=0;l<w-1;l++){for(s=0;s<i-1;s++)d=s*2+l*i*2,F=d+q,T=d+1,b=T+q,r[p++]=T,r[p++]=d,r[p++]=b,r[p++]=b,r[p++]=d,r[p++]=F;d=i*2-2+l*i*2,T=d+1,b=T+q,F=d+q,r[p++]=T,r[p++]=d,r[p++]=b,r[p++]=b,r[p++]=d,r[p++]=F}if(o.st||o.tangent||o.bitangent){let c=new Float32Array(u*2),C=1/(w-1),P=1/n.height,O=n.height/2,y,a,h=0;for(l=0;l<w;l++){for(y=l*C,a=P*(e[0].y+O),c[h++]=y,c[h++]=a,s=1;s<i;s++)a=P*(e[s].y+O),c[h++]=y,c[h++]=a,c[h++]=y,c[h++]=a;a=P*(e[0].y+O),c[h++]=y,c[h++]=a}for(s=0;s<i;s++)y=0,a=P*(e[s].y+O),c[h++]=y,c[h++]=a;for(s=0;s<i;s++)y=(w-1)*C,a=P*(e[s].y+O),c[h++]=y,c[h++]=a;m.st=new B({componentDatatype:N.FLOAT,componentsPerAttribute:2,values:new Float32Array(c)})}let G=u-i*2;for(l=0;l<L.length;l+=3){let c=L[l]+G,C=L[l+1]+G,P=L[l+2]+G;r[p++]=c,r[p++]=C,r[p++]=P,r[p++]=P+i,r[p++]=C+i,r[p++]=c+i}let k=new Y({attributes:m,indices:r,boundingSphere:K.fromVertices(t),primitiveType:V.TRIANGLES});if(o.normal&&(k=U.computeNormal(k)),o.tangent||o.bitangent){try{k=U.computeTangentAndBitangent(k)}catch{I("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}o.tangent||(k.attributes.tangent=void 0),o.bitangent||(k.attributes.bitangent=void 0),o.st||(k.attributes.st=void 0)}return k}function v(t){t=t??J.EMPTY_OBJECT;let e=t.polylinePositions,n=t.shapePositions;if(!_(e))throw new A("options.polylinePositions is required.");if(!_(n))throw new A("options.shapePositions is required.");this._positions=e,this._shape=n,this._ellipsoid=f.clone(t.ellipsoid??f.default),this._cornerType=t.cornerType??x.ROUNDED,this._vertexFormat=g.clone(t.vertexFormat??g.DEFAULT),this._granularity=t.granularity??H.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let o=1+e.length*E.packedLength;o+=1+n.length*D.packedLength,this.packedLength=o+f.packedLength+g.packedLength+2}v.pack=function(t,e,n){if(!_(t))throw new A("value is required");if(!_(e))throw new A("array is required");n=n??0;let o,m=t._positions,i=m.length;for(e[n++]=i,o=0;o<i;++o,n+=E.packedLength)E.pack(m[o],e,n);let u=t._shape;for(i=u.length,e[n++]=i,o=0;o<i;++o,n+=D.packedLength)D.pack(u[o],e,n);return f.pack(t._ellipsoid,e,n),n+=f.packedLength,g.pack(t._vertexFormat,e,n),n+=g.packedLength,e[n++]=t._cornerType,e[n]=t._granularity,e};var ee=f.clone(f.UNIT_SPHERE),te=new g,S={polylinePositions:void 0,shapePositions:void 0,ellipsoid:ee,vertexFormat:te,cornerType:void 0,granularity:void 0};v.unpack=function(t,e,n){if(!_(t))throw new A("array is required");e=e??0;let o,m=t[e++],i=new Array(m);for(o=0;o<m;++o,e+=E.packedLength)i[o]=E.unpack(t,e);m=t[e++];let u=new Array(m);for(o=0;o<m;++o,e+=D.packedLength)u[o]=D.unpack(t,e);let w=f.unpack(t,e,ee);e+=f.packedLength;let L=g.unpack(t,e,te);e+=g.packedLength;let R=t[e++],r=t[e];return _(n)?(n._positions=i,n._shape=u,n._ellipsoid=f.clone(w,n._ellipsoid),n._vertexFormat=g.clone(L,n._vertexFormat),n._cornerType=R,n._granularity=r,n):(S.polylinePositions=i,S.shapePositions=u,S.cornerType=R,S.granularity=r,new v(S))};var ne=new W;v.createGeometry=function(t){let e=t._positions,n=Z(e,E.equalsEpsilon),o=t._shape;if(o=j.removeDuplicatesFromShape(o),n.length<2||o.length<3)return;M.computeWindingOrder2D(o)===$.CLOCKWISE&&o.reverse();let m=W.fromPoints(o,ne),i=j.computePositions(n,o,m,t,!0);return oe(i,o,m,t._vertexFormat)};var z=v;function ie(t,e){return _(e)&&(t=z.unpack(t,e)),t._ellipsoid=f.clone(t._ellipsoid),z.createGeometry(t)}var Re=ie;export{Re as default}; diff --git a/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js b/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js new file mode 100644 index 000000000..fffa4c75b --- /dev/null +++ b/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k}from"./chunk-WGGIH7QW.js";import{a as N,c as w}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as v,b as G}from"./chunk-77IHZJJ3.js";import{a as q}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as g}from"./chunk-OFUUQVMR.js";import{a as O}from"./chunk-A56XVLQR.js";import{b as A,c as R,d as S}from"./chunk-RCV6KWXS.js";import{d as C}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as b}from"./chunk-AU7IKHOH.js";import{a as d,c as y,d as s,f as D}from"./chunk-64RSHJUE.js";import{a as T}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function W(o,i){let t=new O;t.position=new S({componentDatatype:b.DOUBLE,componentsPerAttribute:3,values:o});let e=i.length,r=t.position.values.length/3,f=o.length/3/e,p=g.createTypedArray(r,2*e*(f+1)),m,n,l=0;m=0;let h=m*e;for(n=0;n<e-1;n++)p[l++]=n+h,p[l++]=n+h+1;for(p[l++]=e-1+h,p[l++]=h,m=f-1,h=m*e,n=0;n<e-1;n++)p[l++]=n+h,p[l++]=n+h+1;for(p[l++]=e-1+h,p[l++]=h,m=0;m<f-1;m++){let L=e*m,U=L+e;for(n=0;n<e;n++)p[l++]=n+L,p[l++]=n+U}return new R({attributes:t,indices:g.createTypedArray(r,p),boundingSphere:C.fromVertices(o),primitiveType:A.LINES})}function P(o){o=o??D.EMPTY_OBJECT;let i=o.polylinePositions,t=o.shapePositions;if(!u(i))throw new a("options.polylinePositions is required.");if(!u(t))throw new a("options.shapePositions is required.");this._positions=i,this._shape=t,this._ellipsoid=s.clone(o.ellipsoid??s.default),this._cornerType=o.cornerType??N.ROUNDED,this._granularity=o.granularity??T.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let e=1+i.length*d.packedLength;e+=1+t.length*y.packedLength,this.packedLength=e+s.packedLength+2}P.pack=function(o,i,t){if(!u(o))throw new a("value is required");if(!u(i))throw new a("array is required");t=t??0;let e,r=o._positions,c=r.length;for(i[t++]=c,e=0;e<c;++e,t+=d.packedLength)d.pack(r[e],i,t);let f=o._shape;for(c=f.length,i[t++]=c,e=0;e<c;++e,t+=y.packedLength)y.pack(f[e],i,t);return s.pack(o._ellipsoid,i,t),t+=s.packedLength,i[t++]=o._cornerType,i[t]=o._granularity,i};var B=s.clone(s.UNIT_SPHERE),_={polylinePositions:void 0,shapePositions:void 0,ellipsoid:B,height:void 0,cornerType:void 0,granularity:void 0};P.unpack=function(o,i,t){if(!u(o))throw new a("array is required");i=i??0;let e,r=o[i++],c=new Array(r);for(e=0;e<r;++e,i+=d.packedLength)c[e]=d.unpack(o,i);r=o[i++];let f=new Array(r);for(e=0;e<r;++e,i+=y.packedLength)f[e]=y.unpack(o,i);let p=s.unpack(o,i,B);i+=s.packedLength;let m=o[i++],n=o[i];return u(t)?(t._positions=c,t._shape=f,t._ellipsoid=s.clone(p,t._ellipsoid),t._cornerType=m,t._granularity=n,t):(_.polylinePositions=c,_.shapePositions=f,_.cornerType=m,_.granularity=n,new P(_))};var F=new k;P.createGeometry=function(o){let i=o._positions,t=q(i,d.equalsEpsilon),e=o._shape;if(e=w.removeDuplicatesFromShape(e),t.length<2||e.length<3)return;G.computeWindingOrder2D(e)===v.CLOCKWISE&&e.reverse();let r=k.fromPoints(e,F),c=w.computePositions(t,e,r,o,!1);return W(c,e)};var E=P;function M(o,i){return u(i)&&(o=E.unpack(o,i)),o._ellipsoid=s.clone(o._ellipsoid),E.createGeometry(o)}var he=M;export{he as default}; diff --git a/public/Cesium/Workers/createRectangleGeometry.js b/public/Cesium/Workers/createRectangleGeometry.js new file mode 100644 index 000000000..ff39d2095 --- /dev/null +++ b/public/Cesium/Workers/createRectangleGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as W}from"./chunk-5YEWO3HT.js";import{a as Nt}from"./chunk-D6AA5QVT.js";import{a as zt}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as ft}from"./chunk-GBYLG25F.js";import{a as q}from"./chunk-CYCB63OH.js";import{b as yt}from"./chunk-77IHZJJ3.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as At}from"./chunk-OFUUQVMR.js";import{a as Vt}from"./chunk-A56XVLQR.js";import{b as Mt,c as Pt,d as Y}from"./chunk-RCV6KWXS.js";import{d as at}from"./chunk-4IW2T6GF.js";import{f as Lt,h as E,i as bt}from"./chunk-PSPPBZWI.js";import{a as U}from"./chunk-AU7IKHOH.js";import{a as w,b as mt,c as $,d as D,e as lt,f as St}from"./chunk-64RSHJUE.js";import{a as I}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as Et,b as ct}from"./chunk-LEYMRMBK.js";import{e as K}from"./chunk-VTAIKJXX.js";var Tt=new w,Bt=new w,Ut=new w,Yt=new w,qt=new E,Zt=new $,Kt=new at,$t=new at;function Xt(t,e){let n=new Pt({attributes:new Vt,primitiveType:Mt.TRIANGLES});return n.attributes.position=new Y({componentDatatype:U.DOUBLE,componentsPerAttribute:3,values:e.positions}),t.normal&&(n.attributes.normal=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.normals})),t.tangent&&(n.attributes.tangent=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.tangents})),t.bitangent&&(n.attributes.bitangent=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.bitangents})),n}function Gt(t,e,n,r){let a=t.length,c=e.normal?new Float32Array(a):void 0,l=e.tangent?new Float32Array(a):void 0,u=e.bitangent?new Float32Array(a):void 0,p=0,d=Yt,o=Ut,i=Bt;if(e.normal||e.tangent||e.bitangent)for(let f=0;f<a;f+=3){let s=w.fromArray(t,f,Tt),h=p+1,g=p+2;i=n.geodeticSurfaceNormal(s,i),(e.tangent||e.bitangent)&&(w.cross(w.UNIT_Z,i,o),lt.multiplyByVector(r,o,o),w.normalize(o,o),e.bitangent&&w.normalize(w.cross(i,o,d),d)),e.normal&&(c[p]=i.x,c[h]=i.y,c[g]=i.z),e.tangent&&(l[p]=o.x,l[h]=o.y,l[g]=o.z),e.bitangent&&(u[p]=d.x,u[h]=d.y,u[g]=d.z),p+=3}return Xt(e,{positions:t,normals:c,tangents:l,bitangents:u})}var Ct=new w,jt=new w;function te(t,e,n){let r=t.length,a=e.normal?new Float32Array(r):void 0,c=e.tangent?new Float32Array(r):void 0,l=e.bitangent?new Float32Array(r):void 0,u=0,p=0,d=0,o=!0,i=Yt,f=Ut,s=Bt;if(e.normal||e.tangent||e.bitangent)for(let h=0;h<r;h+=6){let g=w.fromArray(t,h,Tt),A=w.fromArray(t,(h+6)%r,Ct);if(o){let b=w.fromArray(t,(h+3)%r,jt);w.subtract(A,g,A),w.subtract(b,g,b),s=w.normalize(w.cross(b,A,s),s),o=!1}w.equalsEpsilon(A,g,I.EPSILON10)&&(o=!0),(e.tangent||e.bitangent)&&(i=n.geodeticSurfaceNormal(g,i),e.tangent&&(f=w.normalize(w.cross(i,s,f),f))),e.normal&&(a[u++]=s.x,a[u++]=s.y,a[u++]=s.z,a[u++]=s.x,a[u++]=s.y,a[u++]=s.z),e.tangent&&(c[p++]=f.x,c[p++]=f.y,c[p++]=f.z,c[p++]=f.x,c[p++]=f.y,c[p++]=f.z),e.bitangent&&(l[d++]=i.x,l[d++]=i.y,l[d++]=i.z,l[d++]=i.x,l[d++]=i.y,l[d++]=i.z)}return Xt(e,{positions:t,normals:a,tangents:c,bitangents:l})}function It(t,e){let n=t._vertexFormat,r=t._ellipsoid,a=e.height,c=e.width,l=e.northCap,u=e.southCap,p=0,d=a,o=a,i=0;l&&(p=1,o-=1,i+=1),u&&(d-=1,o-=1,i+=1),i+=c*o;let f=n.position?new Float64Array(i*3):void 0,s=n.st?new Float32Array(i*2):void 0,h=0,g=0,A=Tt,b=Zt,V=Number.MAX_VALUE,z=Number.MAX_VALUE,X=-Number.MAX_VALUE,N=-Number.MAX_VALUE;for(let x=p;x<d;++x)for(let O=0;O<c;++O)W.computePosition(e,r,n.st,x,O,A,b),f[h++]=A.x,f[h++]=A.y,f[h++]=A.z,n.st&&(s[g++]=b.x,s[g++]=b.y,V=Math.min(V,b.x),z=Math.min(z,b.y),X=Math.max(X,b.x),N=Math.max(N,b.y));if(l&&(W.computePosition(e,r,n.st,0,0,A,b),f[h++]=A.x,f[h++]=A.y,f[h++]=A.z,n.st&&(s[g++]=b.x,s[g++]=b.y,V=b.x,z=b.y,X=b.x,N=b.y)),u&&(W.computePosition(e,r,n.st,a-1,0,A,b),f[h++]=A.x,f[h++]=A.y,f[h]=A.z,n.st&&(s[g++]=b.x,s[g]=b.y,V=Math.min(V,b.x),z=Math.min(z,b.y),X=Math.max(X,b.x),N=Math.max(N,b.y))),n.st&&(V<0||z<0||X>1||N>1))for(let x=0;x<s.length;x+=2)s[x]=(s[x]-V)/(X-V),s[x+1]=(s[x+1]-z)/(N-z);let m=Gt(f,n,r,e.tangentRotationMatrix),Z=6*(c-1)*(o-1);l&&(Z+=3*(c-1)),u&&(Z+=3*(c-1));let L=At.createTypedArray(i,Z),C=0,P=0,H;for(H=0;H<o-1;++H){for(let x=0;x<c-1;++x){let O=C,k=O+c,j=k+1,st=O+1;L[P++]=O,L[P++]=k,L[P++]=st,L[P++]=st,L[P++]=k,L[P++]=j,++C}++C}if(l||u){let x=i-1,O=i-1;l&&u&&(x=i-2);let k,j;if(C=0,l)for(H=0;H<c-1;H++)k=C,j=k+1,L[P++]=x,L[P++]=k,L[P++]=j,++C;if(u)for(C=(o-1)*c,H=0;H<c-1;H++)k=C,j=k+1,L[P++]=k,L[P++]=O,L[P++]=j,++C}return m.indices=L,n.st&&(m.attributes.st=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:2,values:s})),m}function ut(t,e,n,r,a){return t[e++]=r[n],t[e++]=r[n+1],t[e++]=r[n+2],t[e++]=a[n],t[e++]=a[n+1],t[e]=a[n+2],t}function ht(t,e,n,r){return t[e++]=r[n],t[e++]=r[n+1],t[e++]=r[n],t[e]=r[n+1],t}var Dt=new q;function ee(t,e){let n=t._shadowVolume,r=t._offsetAttribute,a=t._vertexFormat,c=t._extrudedHeight,l=t._surfaceHeight,u=t._ellipsoid,p=e.height,d=e.width,o;if(n){let R=q.clone(a,Dt);R.normal=!0,t._vertexFormat=R}let i=It(t,e);n&&(t._vertexFormat=a);let f=yt.scaleToGeodeticHeight(i.attributes.position.values,l,u,!1);f=new Float64Array(f);let s=f.length,h=s*2,g=new Float64Array(h);g.set(f);let A=yt.scaleToGeodeticHeight(i.attributes.position.values,c,u);g.set(A,s),i.attributes.position.values=g;let b=a.normal?new Float32Array(h):void 0,V=a.tangent?new Float32Array(h):void 0,z=a.bitangent?new Float32Array(h):void 0,X=a.st?new Float32Array(h/3*2):void 0,N,m;if(a.normal){for(m=i.attributes.normal.values,b.set(m),o=0;o<s;o++)m[o]=-m[o];b.set(m,s),i.attributes.normal.values=b}if(n){m=i.attributes.normal.values,a.normal||(i.attributes.normal=void 0);let R=new Float32Array(h);for(o=0;o<s;o++)m[o]=-m[o];R.set(m,s),i.attributes.extrudeDirection=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:R})}let Z,L=K(r);if(L){let R=s/3*2,it=new Uint8Array(R);r===ft.TOP?it=it.fill(1,0,R/2):(Z=r===ft.NONE?0:1,it=it.fill(Z)),i.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:it})}if(a.tangent){let R=i.attributes.tangent.values;for(V.set(R),o=0;o<s;o++)R[o]=-R[o];V.set(R,s),i.attributes.tangent.values=V}if(a.bitangent){let R=i.attributes.bitangent.values;z.set(R),z.set(R,s),i.attributes.bitangent.values=z}a.st&&(N=i.attributes.st.values,X.set(N),X.set(N,s/3*2),i.attributes.st.values=X);let C=i.indices,P=C.length,H=s/3,x=At.createTypedArray(h/3,P*2);for(x.set(C),o=0;o<P;o+=3)x[o+P]=C[o+2]+H,x[o+1+P]=C[o+1]+H,x[o+2+P]=C[o]+H;i.indices=x;let O=e.northCap,k=e.southCap,j=p,st=2,pt=0,Rt=4,xt=4;O&&(st-=1,j-=1,pt+=1,Rt-=2,xt-=1),k&&(st-=1,j-=1,pt+=1,Rt-=2,xt-=1),pt+=st*d+2*j-Rt;let dt=(pt+xt)*2,T=new Float64Array(dt*3),S=n?new Float32Array(dt*3):void 0,Q=L?new Uint8Array(dt):void 0,M=a.st?new Float32Array(dt*2):void 0,tt=r===ft.TOP;L&&!tt&&(Z=r===ft.ALL?1:0,Q=Q.fill(Z));let F=0,v=0,y=0,B=0,et=d*j,_;for(o=0;o<et;o+=d)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);if(k){let R=O?et+1:et;for(_=R*3,o=0;o<2;o++)T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,R*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1)}else for(o=et-d;o<et;o++)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);for(o=et-1;o>0;o-=d)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);if(O){let R=et;for(_=R*3,o=0;o<2;o++)T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,R*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1)}else for(o=d-1;o>=0;o--)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);let nt=te(T,a,u);a.st&&(nt.attributes.st=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:2,values:M})),n&&(nt.attributes.extrudeDirection=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:S})),L&&(nt.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:Q}));let ot=At.createTypedArray(dt,pt*6),gt,_t,kt,wt;s=T.length/3;let rt=0;for(o=0;o<s-1;o+=2){gt=o,wt=(gt+2)%s;let R=w.fromArray(T,gt*3,Ct),it=w.fromArray(T,wt*3,jt);w.equalsEpsilon(R,it,I.EPSILON10)||(_t=(gt+1)%s,kt=(_t+2)%s,ot[rt++]=gt,ot[rt++]=_t,ot[rt++]=wt,ot[rt++]=wt,ot[rt++]=_t,ot[rt++]=kt)}return nt.indices=ot,nt=zt.combineInstances([new Nt({geometry:i}),new Nt({geometry:nt})]),nt[0]}var ne=[new w,new w,new w,new w],Wt=new mt,oe=new mt;function Ht(t,e,n,r,a){if(n===0)return E.clone(t,a);let c=W.computeOptions(t,e,n,0,qt,Wt),l=c.height,u=c.width,p=ne;return W.computePosition(c,r,!1,0,0,p[0]),W.computePosition(c,r,!1,0,u-1,p[1]),W.computePosition(c,r,!1,l-1,0,p[2]),W.computePosition(c,r,!1,l-1,u-1,p[3]),E.fromCartesianArray(p,r,a)}function J(t){t=t??St.EMPTY_OBJECT;let e=t.rectangle;if(ct.typeOf.object("rectangle",e),E._validate(e),e.north<e.south)throw new Et("options.rectangle.north must be greater than or equal to options.rectangle.south");let n=t.height??0,r=t.extrudedHeight??n;this._rectangle=E.clone(e),this._granularity=t.granularity??I.RADIANS_PER_DEGREE,this._ellipsoid=D.clone(t.ellipsoid??D.default),this._surfaceHeight=Math.max(n,r),this._rotation=t.rotation??0,this._stRotation=t.stRotation??0,this._vertexFormat=q.clone(t.vertexFormat??q.DEFAULT),this._extrudedHeight=Math.min(n,r),this._shadowVolume=t.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=t.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}J.packedLength=E.packedLength+D.packedLength+q.packedLength+7;J.pack=function(t,e,n){return ct.typeOf.object("value",t),ct.defined("array",e),n=n??0,E.pack(t._rectangle,e,n),n+=E.packedLength,D.pack(t._ellipsoid,e,n),n+=D.packedLength,q.pack(t._vertexFormat,e,n),n+=q.packedLength,e[n++]=t._granularity,e[n++]=t._surfaceHeight,e[n++]=t._rotation,e[n++]=t._stRotation,e[n++]=t._extrudedHeight,e[n++]=t._shadowVolume?1:0,e[n]=t._offsetAttribute??-1,e};var Jt=new E,Qt=D.clone(D.UNIT_SPHERE),G={rectangle:Jt,ellipsoid:Qt,vertexFormat:Dt,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};J.unpack=function(t,e,n){ct.defined("array",t),e=e??0;let r=E.unpack(t,e,Jt);e+=E.packedLength;let a=D.unpack(t,e,Qt);e+=D.packedLength;let c=q.unpack(t,e,Dt);e+=q.packedLength;let l=t[e++],u=t[e++],p=t[e++],d=t[e++],o=t[e++],i=t[e++]===1,f=t[e];return K(n)?(n._rectangle=E.clone(r,n._rectangle),n._ellipsoid=D.clone(a,n._ellipsoid),n._vertexFormat=q.clone(c,n._vertexFormat),n._granularity=l,n._surfaceHeight=u,n._rotation=p,n._stRotation=d,n._extrudedHeight=o,n._shadowVolume=i,n._offsetAttribute=f===-1?void 0:f,n):(G.granularity=l,G.height=u,G.rotation=p,G.stRotation=d,G.extrudedHeight=o,G.shadowVolume=i,G.offsetAttribute=f===-1?void 0:f,new J(G))};J.computeRectangle=function(t,e){t=t??St.EMPTY_OBJECT;let n=t.rectangle;if(ct.typeOf.object("rectangle",n),E._validate(n),n.north<n.south)throw new Et("options.rectangle.north must be greater than or equal to options.rectangle.south");let r=t.granularity??I.RADIANS_PER_DEGREE,a=t.ellipsoid??D.default,c=t.rotation??0;return Ht(n,r,c,a,e)};var ie=new lt,Ft=new Lt,ae=new mt;J.createGeometry=function(t){if(I.equalsEpsilon(t._rectangle.north,t._rectangle.south,I.EPSILON10)||I.equalsEpsilon(t._rectangle.east,t._rectangle.west,I.EPSILON10))return;let e=t._rectangle,n=t._ellipsoid,r=t._rotation,a=t._stRotation,c=t._vertexFormat,l=W.computeOptions(e,t._granularity,r,a,qt,Wt,oe),u=ie;if(a!==0||r!==0){let s=E.center(e,ae),h=n.geodeticSurfaceNormalCartographic(s,Ct);Lt.fromAxisAngle(h,-a,Ft),lt.fromQuaternion(Ft,u)}else lt.clone(lt.IDENTITY,u);let p=t._surfaceHeight,d=t._extrudedHeight,o=!I.equalsEpsilon(p,d,0,I.EPSILON2);l.lonScalar=1/t._rectangle.width,l.latScalar=1/t._rectangle.height,l.tangentRotationMatrix=u;let i,f;if(e=t._rectangle,o){i=ee(t,l);let s=at.fromRectangle3D(e,n,p,$t),h=at.fromRectangle3D(e,n,d,Kt);f=at.union(s,h)}else{if(i=It(t,l),i.attributes.position.values=yt.scaleToGeodeticHeight(i.attributes.position.values,p,n,!1),K(t._offsetAttribute)){let s=i.attributes.position.values.length,h=t._offsetAttribute===ft.NONE?0:1,g=new Uint8Array(s/3).fill(h);i.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}f=at.fromRectangle3D(e,n,p)}return c.position||delete i.attributes.position,new Pt({attributes:i.attributes,indices:i.indices,primitiveType:i.primitiveType,boundingSphere:f,offsetAttribute:t._offsetAttribute})};J.createShadowVolume=function(t,e,n){let r=t._granularity,a=t._ellipsoid,c=e(r,a),l=n(r,a);return new J({rectangle:t._rectangle,rotation:t._rotation,ellipsoid:a,stRotation:t._stRotation,granularity:r,extrudedHeight:l,height:c,vertexFormat:q.POSITION_ONLY,shadowVolume:!0})};var vt=new E,se=[new $,new $,new $],re=new bt,ce=new mt;function le(t){if(t._stRotation===0)return[0,0,0,1,1,0];let e=E.clone(t._rectangle,vt),n=t._granularity,r=t._ellipsoid,a=t._rotation-t._stRotation,c=Ht(e,n,a,r,vt),l=se;l[0].x=c.west,l[0].y=c.south,l[1].x=c.west,l[1].y=c.north,l[2].x=c.east,l[2].y=c.south;let u=t.rectangle,p=bt.fromRotation(t._stRotation,re),d=E.center(u,ce);for(let h=0;h<3;++h){let g=l[h];g.x-=d.longitude,g.y-=d.latitude,bt.multiplyByVector(p,g,g),g.x+=d.longitude,g.y+=d.latitude,g.x=(g.x-u.west)/u.width,g.y=(g.y-u.south)/u.height}let o=l[0],i=l[1],f=l[2],s=new Array(6);return $.pack(o,s),$.pack(i,s,2),$.pack(f,s,4),s}Object.defineProperties(J.prototype,{rectangle:{get:function(){return K(this._rotatedRectangle)||(this._rotatedRectangle=Ht(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return K(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=le(this)),this._textureCoordinateRotationPoints}}});var Ot=J;function fe(t,e){return K(e)&&(t=Ot.unpack(t,e)),t._ellipsoid=D.clone(t._ellipsoid),t._rectangle=E.clone(t._rectangle),Ot.createGeometry(t)}var Ye=fe;export{Ye as default}; diff --git a/public/Cesium/Workers/createRectangleOutlineGeometry.js b/public/Cesium/Workers/createRectangleOutlineGeometry.js new file mode 100644 index 000000000..e7a06a230 --- /dev/null +++ b/public/Cesium/Workers/createRectangleOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-5YEWO3HT.js";import{a as y}from"./chunk-GBYLG25F.js";import{b as z}from"./chunk-77IHZJJ3.js";import"./chunk-G5AGHVVC.js";import{a as q}from"./chunk-OFUUQVMR.js";import{a as F}from"./chunk-A56XVLQR.js";import{b as v,c as B,d as T}from"./chunk-RCV6KWXS.js";import{d as P}from"./chunk-4IW2T6GF.js";import{h as b}from"./chunk-PSPPBZWI.js";import{a as D}from"./chunk-AU7IKHOH.js";import{a as x,b as U,d as w,f as M}from"./chunk-64RSHJUE.js";import{a as S}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as C}from"./chunk-LEYMRMBK.js";import{e as H}from"./chunk-VTAIKJXX.js";var j=new P,K=new P,Q=new x,W=new b;function Y(t,e){let i=t._ellipsoid,m=e.height,s=e.width,h=e.northCap,p=e.southCap,_=m,A=2,o=0,g=4;h&&(A-=1,_-=1,o+=1,g-=2),p&&(A-=1,_-=1,o+=1,g-=2),o+=A*s+2*_-g;let n=new Float64Array(o*3),l=0,f=0,a,r=Q;if(h)R.computePosition(e,i,!1,f,0,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;else for(a=0;a<s;a++)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;for(a=s-1,f=1;f<m;f++)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;if(f=m-1,!p)for(a=s-2;a>=0;a--)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;for(a=0,f=m-2;f>0;f--)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;let u=n.length/3*2,c=q.createTypedArray(n.length/3,u),E=0;for(let L=0;L<n.length/3-1;L++)c[E++]=L,c[E++]=L+1;c[E++]=n.length/3-1,c[E++]=0;let d=new B({attributes:new F,primitiveType:v.LINES});return d.attributes.position=new T({componentDatatype:D.DOUBLE,componentsPerAttribute:3,values:n}),d.indices=c,d}function X(t,e){let i=t._surfaceHeight,m=t._extrudedHeight,s=t._ellipsoid,h=Y(t,e),p=e.height,_=e.width,A=z.scaleToGeodeticHeight(h.attributes.position.values,i,s,!1),o=A.length,g=new Float64Array(o*2);g.set(A);let n=z.scaleToGeodeticHeight(h.attributes.position.values,m,s);g.set(n,o),h.attributes.position.values=g;let l=e.northCap,f=e.southCap,a=4;l&&(a-=1),f&&(a-=1);let r=(g.length/3+a)*2,u=q.createTypedArray(g.length/3,r);o=g.length/6;let c=0;for(let d=0;d<o-1;d++)u[c++]=d,u[c++]=d+1,u[c++]=d+o,u[c++]=d+o+1;u[c++]=o-1,u[c++]=0,u[c++]=o+o-1,u[c++]=o,u[c++]=0,u[c++]=o;let E;if(l)E=p-1;else{let d=_-1;u[c++]=d,u[c++]=d+o,E=_+p-2}if(u[c++]=E,u[c++]=E+o,!f){let d=_+E-1;u[c++]=d,u[c]=d+o}return h.indices=u,h}function k(t){t=t??M.EMPTY_OBJECT;let e=t.rectangle,i=t.granularity??S.RADIANS_PER_DEGREE,m=t.ellipsoid??w.default,s=t.rotation??0;if(!H(e))throw new C("rectangle is required.");if(b._validate(e),e.north<e.south)throw new C("options.rectangle.north must be greater than options.rectangle.south");let h=t.height??0,p=t.extrudedHeight??h;this._rectangle=b.clone(e),this._granularity=i,this._ellipsoid=m,this._surfaceHeight=Math.max(h,p),this._rotation=s,this._extrudedHeight=Math.min(h,p),this._offsetAttribute=t.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}k.packedLength=b.packedLength+w.packedLength+5;k.pack=function(t,e,i){if(!H(t))throw new C("value is required");if(!H(e))throw new C("array is required");return i=i??0,b.pack(t._rectangle,e,i),i+=b.packedLength,w.pack(t._ellipsoid,e,i),i+=w.packedLength,e[i++]=t._granularity,e[i++]=t._surfaceHeight,e[i++]=t._rotation,e[i++]=t._extrudedHeight,e[i]=t._offsetAttribute??-1,e};var J=new b,V=w.clone(w.UNIT_SPHERE),N={rectangle:J,ellipsoid:V,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};k.unpack=function(t,e,i){if(!H(t))throw new C("array is required");e=e??0;let m=b.unpack(t,e,J);e+=b.packedLength;let s=w.unpack(t,e,V);e+=w.packedLength;let h=t[e++],p=t[e++],_=t[e++],A=t[e++],o=t[e];return H(i)?(i._rectangle=b.clone(m,i._rectangle),i._ellipsoid=w.clone(s,i._ellipsoid),i._surfaceHeight=p,i._rotation=_,i._extrudedHeight=A,i._offsetAttribute=o===-1?void 0:o,i):(N.granularity=h,N.height=p,N.rotation=_,N.extrudedHeight=A,N.offsetAttribute=o===-1?void 0:o,new k(N))};var Z=new U;k.createGeometry=function(t){let e=t._rectangle,i=t._ellipsoid,m=R.computeOptions(e,t._granularity,t._rotation,0,W,Z),s,h;if(S.equalsEpsilon(e.north,e.south,S.EPSILON10)||S.equalsEpsilon(e.east,e.west,S.EPSILON10))return;let p=t._surfaceHeight,_=t._extrudedHeight,A=!S.equalsEpsilon(p,_,0,S.EPSILON2),o;if(A){if(s=X(t,m),H(t._offsetAttribute)){let l=s.attributes.position.values.length/3,f=new Uint8Array(l);t._offsetAttribute===y.TOP?f=f.fill(1,0,l/2):(o=t._offsetAttribute===y.NONE?0:1,f=f.fill(o)),s.attributes.applyOffset=new T({componentDatatype:D.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}let g=P.fromRectangle3D(e,i,p,K),n=P.fromRectangle3D(e,i,_,j);h=P.union(g,n)}else{if(s=Y(t,m),s.attributes.position.values=z.scaleToGeodeticHeight(s.attributes.position.values,p,i,!1),H(t._offsetAttribute)){let g=s.attributes.position.values.length;o=t._offsetAttribute===y.NONE?0:1;let n=new Uint8Array(g/3).fill(o);s.attributes.applyOffset=new T({componentDatatype:D.UNSIGNED_BYTE,componentsPerAttribute:1,values:n})}h=P.fromRectangle3D(e,i,p)}return new B({attributes:s.attributes,indices:s.indices,primitiveType:v.LINES,boundingSphere:h,offsetAttribute:t._offsetAttribute})};var O=k;function $(t,e){return H(e)&&(t=O.unpack(t,e)),t._ellipsoid=w.clone(t._ellipsoid),t._rectangle=b.clone(t._rectangle),O.createGeometry(t)}var Et=$;export{Et as default}; diff --git a/public/Cesium/Workers/createSimplePolylineGeometry.js b/public/Cesium/Workers/createSimplePolylineGeometry.js new file mode 100644 index 000000000..22b908b35 --- /dev/null +++ b/public/Cesium/Workers/createSimplePolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-HMIYSTF6.js";import{a as L}from"./chunk-J6UP6FLE.js";import{a as P}from"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as W}from"./chunk-A56XVLQR.js";import{b as K,c as Q,d as H}from"./chunk-RCV6KWXS.js";import{d as j}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as v}from"./chunk-AU7IKHOH.js";import{a as A,d as w,f as J}from"./chunk-64RSHJUE.js";import{a as G}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as D}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function Z(t,e,o,i,s,c,p){let g=P.numberOfPoints(t,e,s),f,n=o.red,m=o.green,d=o.blue,T=o.alpha,l=i.red,h=i.green,y=i.blue,S=i.alpha;if(r.equals(o,i)){for(f=0;f<g;f++)c[p++]=r.floatToByte(n),c[p++]=r.floatToByte(m),c[p++]=r.floatToByte(d),c[p++]=r.floatToByte(T);return p}let N=(l-n)/g,V=(h-m)/g,R=(y-d)/g,_=(S-T)/g,a=p;for(f=0;f<g;f++)c[a++]=r.floatToByte(n+f*N),c[a++]=r.floatToByte(m+f*V),c[a++]=r.floatToByte(d+f*R),c[a++]=r.floatToByte(T+f*_);return a}function O(t){t=t??J.EMPTY_OBJECT;let e=t.positions,o=t.colors,i=t.colorsPerVertex??!1;if(!u(e)||e.length<2)throw new D("At least two positions are required.");if(u(o)&&(i&&o.length<e.length||!i&&o.length<e.length-1))throw new D("colors has an invalid length.");this._positions=e,this._colors=o,this._colorsPerVertex=i,this._arcType=t.arcType??L.GEODESIC,this._granularity=t.granularity??G.RADIANS_PER_DEGREE,this._ellipsoid=t.ellipsoid??w.default,this._workerName="createSimplePolylineGeometry";let s=1+e.length*A.packedLength;s+=u(o)?1+o.length*r.packedLength:1,this.packedLength=s+w.packedLength+3}O.pack=function(t,e,o){if(!u(t))throw new D("value is required");if(!u(e))throw new D("array is required");o=o??0;let i,s=t._positions,c=s.length;for(e[o++]=c,i=0;i<c;++i,o+=A.packedLength)A.pack(s[i],e,o);let p=t._colors;for(c=u(p)?p.length:0,e[o++]=c,i=0;i<c;++i,o+=r.packedLength)r.pack(p[i],e,o);return w.pack(t._ellipsoid,e,o),o+=w.packedLength,e[o++]=t._colorsPerVertex?1:0,e[o++]=t._arcType,e[o]=t._granularity,e};O.unpack=function(t,e,o){if(!u(t))throw new D("array is required");e=e??0;let i,s=t[e++],c=new Array(s);for(i=0;i<s;++i,e+=A.packedLength)c[i]=A.unpack(t,e);s=t[e++];let p=s>0?new Array(s):void 0;for(i=0;i<s;++i,e+=r.packedLength)p[i]=r.unpack(t,e);let g=w.unpack(t,e);e+=w.packedLength;let f=t[e++]===1,n=t[e++],m=t[e];return u(o)?(o._positions=c,o._colors=p,o._ellipsoid=g,o._colorsPerVertex=f,o._arcType=n,o._granularity=m,o):new O({positions:c,colors:p,ellipsoid:g,colorsPerVertex:f,arcType:n,granularity:m})};var U=new Array(2),q=new Array(2),$={positions:U,height:q,ellipsoid:void 0,minDistance:void 0,granularity:void 0};O.createGeometry=function(t){let e=t._positions,o=t._colors,i=t._colorsPerVertex,s=t._arcType,c=t._granularity,p=t._ellipsoid,g=G.chordLength(c,p.maximumRadius),f=u(o)&&!i,n,m=e.length,d,T,l,h,y=0;if(s===L.GEODESIC||s===L.RHUMB){let _,a,k;s===L.GEODESIC?(_=G.chordLength(c,p.maximumRadius),a=P.numberOfPoints,k=P.generateArc):(_=c,a=P.numberOfPointsRhumbLine,k=P.generateRhumbArc);let z=P.extractHeights(e,p),B=$;if(s===L.GEODESIC?B.minDistance=g:B.granularity=c,B.ellipsoid=p,f){let b=0;for(n=0;n<m-1;n++)b+=a(e[n],e[n+1],_)+1;d=new Float64Array(b*3),l=new Uint8Array(b*4),B.positions=U,B.height=q;let E=0;for(n=0;n<m-1;++n){U[0]=e[n],U[1]=e[n+1],q[0]=z[n],q[1]=z[n+1];let C=k(B);if(u(o)){let M=C.length/3;h=o[n];for(let F=0;F<M;++F)l[E++]=r.floatToByte(h.red),l[E++]=r.floatToByte(h.green),l[E++]=r.floatToByte(h.blue),l[E++]=r.floatToByte(h.alpha)}d.set(C,y),y+=C.length}}else if(B.positions=e,B.height=z,d=new Float64Array(k(B)),u(o)){for(l=new Uint8Array(d.length/3*4),n=0;n<m-1;++n){let E=e[n],C=e[n+1],M=o[n],F=o[n+1];y=Z(E,C,M,F,g,l,y)}let b=o[m-1];l[y++]=r.floatToByte(b.red),l[y++]=r.floatToByte(b.green),l[y++]=r.floatToByte(b.blue),l[y++]=r.floatToByte(b.alpha)}}else{T=f?m*2-2:m,d=new Float64Array(T*3),l=u(o)?new Uint8Array(T*4):void 0;let _=0,a=0;for(n=0;n<m;++n){let k=e[n];if(f&&n>0&&(A.pack(k,d,_),_+=3,h=o[n-1],l[a++]=r.floatToByte(h.red),l[a++]=r.floatToByte(h.green),l[a++]=r.floatToByte(h.blue),l[a++]=r.floatToByte(h.alpha)),f&&n===m-1)break;A.pack(k,d,_),_+=3,u(o)&&(h=o[n],l[a++]=r.floatToByte(h.red),l[a++]=r.floatToByte(h.green),l[a++]=r.floatToByte(h.blue),l[a++]=r.floatToByte(h.alpha))}}let S=new W;S.position=new H({componentDatatype:v.DOUBLE,componentsPerAttribute:3,values:d}),u(o)&&(S.color=new H({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:4,values:l,normalize:!0})),T=d.length/3;let N=(T-1)*2,V=X.createTypedArray(T,N),R=0;for(n=0;n<T-1;++n)V[R++]=n,V[R++]=n+1;return new Q({attributes:S,indices:V,primitiveType:K.LINES,boundingSphere:j.fromPoints(e)})};var Y=O;function x(t,e){return u(e)&&(t=Y.unpack(t,e)),t._ellipsoid=w.clone(t._ellipsoid),Y.createGeometry(t)}var _e=x;export{_e as default}; diff --git a/public/Cesium/Workers/createSphereGeometry.js b/public/Cesium/Workers/createSphereGeometry.js new file mode 100644 index 000000000..b4e4ee564 --- /dev/null +++ b/public/Cesium/Workers/createSphereGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-37F5JSTI.js";import"./chunk-GBYLG25F.js";import{a as m}from"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as s}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as p}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";function a(e){let t=e.radius??1,o={radii:new s(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new r(o),this._workerName="createSphereGeometry"}a.packedLength=r.packedLength;a.pack=function(e,t,n){return p.typeOf.object("value",e),r.pack(e._ellipsoidGeometry,t,n)};var l=new r,i={radius:void 0,radii:new s,vertexFormat:new m,stackPartitions:void 0,slicePartitions:void 0};a.unpack=function(e,t,n){let o=r.unpack(e,t,l);return i.vertexFormat=m.clone(o._vertexFormat,i.vertexFormat),i.stackPartitions=o._stackPartitions,i.slicePartitions=o._slicePartitions,c(n)?(s.clone(o._radii,i.radii),n._ellipsoidGeometry=new r(i),n):(i.radius=o._radii.x,new a(i))};a.createGeometry=function(e){return r.createGeometry(e._ellipsoidGeometry)};var d=a;function f(e,t){return c(t)&&(e=d.unpack(e,t)),d.createGeometry(e)}var w=f;export{w as default}; diff --git a/public/Cesium/Workers/createSphereOutlineGeometry.js b/public/Cesium/Workers/createSphereOutlineGeometry.js new file mode 100644 index 000000000..560e7b037 --- /dev/null +++ b/public/Cesium/Workers/createSphereOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as t}from"./chunk-D6C66QON.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as u}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function s(i){let e=i.radius??1,r={radii:new c(e,e,e),stackPartitions:i.stackPartitions,slicePartitions:i.slicePartitions,subdivisions:i.subdivisions};this._ellipsoidGeometry=new t(r),this._workerName="createSphereOutlineGeometry"}s.packedLength=t.packedLength;s.pack=function(i,e,o){return u.typeOf.object("value",i),t.pack(i._ellipsoidGeometry,e,o)};var l=new t,n={radius:void 0,radii:new c,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};s.unpack=function(i,e,o){let r=t.unpack(i,e,l);return n.stackPartitions=r._stackPartitions,n.slicePartitions=r._slicePartitions,n.subdivisions=r._subdivisions,a(o)?(c.clone(r._radii,n.radii),o._ellipsoidGeometry=new t(n),o):(n.radius=r._radii.x,new s(n))};s.createGeometry=function(i){return t.createGeometry(i._ellipsoidGeometry)};var d=s;function m(i,e){return a(e)&&(i=d.unpack(i,e)),d.createGeometry(i)}var h=m;export{h as default}; diff --git a/public/Cesium/Workers/createTaskProcessorWorker.js b/public/Cesium/Workers/createTaskProcessorWorker.js new file mode 100644 index 000000000..320eaab93 --- /dev/null +++ b/public/Cesium/Workers/createTaskProcessorWorker.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-WZDE3RYP.js";import"./chunk-VTAIKJXX.js";export{a as default}; diff --git a/public/Cesium/Workers/createVectorTileClampedPolylines.js b/public/Cesium/Workers/createVectorTileClampedPolylines.js new file mode 100644 index 000000000..87dcafc2f --- /dev/null +++ b/public/Cesium/Workers/createVectorTileClampedPolylines.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as J}from"./chunk-WZDE3RYP.js";import{a as Y}from"./chunk-DEPHB2WM.js";import{a as B}from"./chunk-OFUUQVMR.js";import{c as X,h as W}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,b as k,d as _}from"./chunk-64RSHJUE.js";import{a as v}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var V=32767,it=Math.cos(v.toRadians(150)),ct=new k,rt=new t;function at(e,o,c,i,s,A,h){let g=e.length,f=new Float64Array(g*3);for(let d=0;d<g;++d){let l=e[d],r=o[d],E=c[d],n=v.lerp(i.west,i.east,l/V),p=v.lerp(i.south,i.north,r/V),w=v.lerp(s,A,E/V),x=k.fromRadians(n,p,w,ct),P=h.cartographicToCartesian(x,rt);t.pack(P,f,d*3)}return f}function dt(e){let o=e.length,c=new Uint32Array(o+1),i=0;for(let s=0;s<o;++s)c[s]=i,i+=e[s];return c[o]=i,c}var lt=new k,ht=new k;function ft(e,o,c,i){let s=i.length,A=e.length,h=new Uint8Array(A),g=lt,f=ht,d=0;for(let r=0;r<s;r++){let E=i[r],n=E;for(let p=1;p<E;p++){let w=d+p,x=w-1;f.longitude=e[w],f.latitude=o[w],g.longitude=e[x],g.latitude=o[x],k.equals(f,g)&&(n--,h[x]=1)}i[r]=n,d+=E}let l=0;for(let r=0;r<A;r++)h[r]!==1&&(e[l]=e[r],o[l]=o[r],c[l]=c[r],l++)}function ot(e){let o=e*8,c=o*3,i=o*4;this.startEllipsoidNormals=new Float32Array(c),this.endEllipsoidNormals=new Float32Array(c),this.startPositionAndHeights=new Float32Array(i),this.startFaceNormalAndVertexCornerIds=new Float32Array(i),this.endPositionAndHeights=new Float32Array(i),this.endFaceNormalAndHalfWidths=new Float32Array(i),this.vertexBatchIds=new Uint16Array(o),this.indices=B.createTypedArray(o,36*e),this.vec3Offset=0,this.vec4Offset=0,this.batchIdOffset=0,this.indexOffset=0,this.volumeStartIndex=0}var Q=new t,pt=new t;function $(e,o,c,i,s){let A=t.subtract(c,o,pt),h=t.subtract(o,e,Q);return t.normalize(A,A),t.normalize(h,h),t.dot(A,h)<it&&(h=t.multiplyByScalar(h,-1,Q)),t.add(A,h,s),t.equals(s,t.ZERO)&&(s=t.subtract(e,o)),t.cross(s,i,s),t.cross(i,s,s),t.normalize(s,s),s}var st=[0,2,6,0,6,4,0,1,3,0,3,2,0,4,5,0,5,1,5,3,1,5,7,3,7,5,4,7,4,6,7,6,2,7,2,3],j=st.length,tt=new t,ut=new t,mt=new t,At=new t,Nt=new t;ot.prototype.addVolume=function(e,o,c,i,s,A,h,g,f,d){let l=t.add(o,f,tt),r=d.geodeticSurfaceNormal(l,ut);l=t.add(c,f,tt);let E=d.geodeticSurfaceNormal(l,At),n=$(e,o,c,r,mt),p=$(i,c,o,E,Nt),w=this.startEllipsoidNormals,x=this.endEllipsoidNormals,P=this.startPositionAndHeights,H=this.startFaceNormalAndVertexCornerIds,b=this.endPositionAndHeights,a=this.endFaceNormalAndHalfWidths,F=this.vertexBatchIds,m=this.batchIdOffset,I=this.vec3Offset,u=this.vec4Offset,N;for(N=0;N<8;N++)t.pack(r,w,I),t.pack(E,x,I),t.pack(o,P,u),P[u+3]=s,t.pack(c,b,u),b[u+3]=A,t.pack(n,H,u),H[u+3]=N,t.pack(p,a,u),a[u+3]=h,F[m++]=g,I+=3,u+=4;this.batchIdOffset=m,this.vec3Offset=I,this.vec4Offset=u;let C=this.indices,y=this.volumeStartIndex,z=this.indexOffset;for(N=0;N<j;N++)C[z+N]=st[N]+y;this.volumeStartIndex+=8,this.indexOffset+=j};var gt=new W,Et=new _,wt=new t,M=new t,It=new t,xt=new t,T=new t;function Pt(e,o){let c=new Uint16Array(e.positions),i=new Uint16Array(e.widths),s=new Uint32Array(e.counts),A=new Uint16Array(e.batchIds),h=gt,g=Et,f=wt,d=new Float64Array(e.packedBuffer),l=0,r=d[l++],E=d[l++];W.unpack(d,l,h),l+=W.packedLength,_.unpack(d,l,g),l+=_.packedLength,t.unpack(d,l,f);let n,p=c.length/3,w=c.subarray(0,p),x=c.subarray(p,2*p),P=c.subarray(2*p,3*p);Y.zigZagDeltaDecode(w,x,P),ft(w,x,P,s);let H=s.length,b=0;for(n=0;n<H;n++){let y=s[n];b+=y-1}let a=new ot(b),F=at(w,x,P,h,r,E,g,f);p=w.length;let m=new Float32Array(p*3);for(n=0;n<p;++n)m[n*3]=F[n*3]-f.x,m[n*3+1]=F[n*3+1]-f.y,m[n*3+2]=F[n*3+2]-f.z;let I=0,u=0;for(n=0;n<H;n++){let y=s[n]-1,z=i[n]*.5,et=A[n],q=I;for(let D=0;D<y;D++){let S=t.unpack(m,I,It),O=t.unpack(m,I+3,xt),G=P[u],Z=P[u+1];G=v.lerp(r,E,G/V),Z=v.lerp(r,E,Z/V),u++;let L=M,R=T;if(D===0){let U=q+y*3,K=t.unpack(m,U,M);if(t.equals(K,S))t.unpack(m,U-3,L);else{let nt=t.subtract(S,O,M);L=t.add(nt,S,M)}}else t.unpack(m,I-3,L);if(D===y-1){let U=t.unpack(m,q,T);if(t.equals(U,O))t.unpack(m,q+3,R);else{let K=t.subtract(O,S,T);R=t.add(K,O,T)}}else t.unpack(m,I+6,R);a.addVolume(L,S,O,R,G,Z,z,et,f,g),I+=3}I+=3,u++}let N=a.indices;o.push(a.startEllipsoidNormals.buffer),o.push(a.endEllipsoidNormals.buffer),o.push(a.startPositionAndHeights.buffer),o.push(a.startFaceNormalAndVertexCornerIds.buffer),o.push(a.endPositionAndHeights.buffer),o.push(a.endFaceNormalAndHalfWidths.buffer),o.push(a.vertexBatchIds.buffer),o.push(N.buffer);let C={indexDatatype:N.BYTES_PER_ELEMENT===2?B.UNSIGNED_SHORT:B.UNSIGNED_INT,startEllipsoidNormals:a.startEllipsoidNormals.buffer,endEllipsoidNormals:a.endEllipsoidNormals.buffer,startPositionAndHeights:a.startPositionAndHeights.buffer,startFaceNormalAndVertexCornerIds:a.startFaceNormalAndVertexCornerIds.buffer,endPositionAndHeights:a.endPositionAndHeights.buffer,endFaceNormalAndHalfWidths:a.endFaceNormalAndHalfWidths.buffer,vertexBatchIds:a.vertexBatchIds.buffer,indices:N.buffer};if(e.keepDecodedPositions){let y=dt(s);o.push(F.buffer,y.buffer),C=X(C,{decodedPositions:F.buffer,decodedPositionOffsets:y.buffer})}return C}var Vt=J(Pt);export{Vt as default}; diff --git a/public/Cesium/Workers/createVectorTileGeometries.js b/public/Cesium/Workers/createVectorTileGeometries.js new file mode 100644 index 000000000..24f33d00d --- /dev/null +++ b/public/Cesium/Workers/createVectorTileGeometries.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as P}from"./chunk-HMIYSTF6.js";import{a as z}from"./chunk-GILIDQNQ.js";import"./chunk-ARG42DC4.js";import{a as H}from"./chunk-37F5JSTI.js";import{a as Y}from"./chunk-WZDE3RYP.js";import{a as j}from"./chunk-QN3VOORQ.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import{a as W}from"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import{d as E}from"./chunk-4IW2T6GF.js";import{b as d}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as l}from"./chunk-VTAIKJXX.js";function X(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var J=X;var S=new o,$=d.packedLength+o.packedLength,ee=d.packedLength+2,ne=d.packedLength+o.packedLength,te=o.packedLength+1,u={modelMatrix:new d,boundingVolume:new E};function oe(e,c){let n=c*$,i=o.unpack(e,n,S);n+=o.packedLength;let r=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(r,i,r);let t=u.boundingVolume;return o.clone(o.ZERO,t.center),t.radius=Math.sqrt(3),u}function ce(e,c){let n=c*ee,i=e[n++],r=e[n++],t=o.fromElements(i,i,r,S),s=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(s,t,s);let h=u.boundingVolume;return o.clone(o.ZERO,h.center),h.radius=Math.sqrt(2),u}function se(e,c){let n=c*ne,i=o.unpack(e,n,S);n+=o.packedLength;let r=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(r,i,r);let t=u.boundingVolume;return o.clone(o.ZERO,t.center),t.radius=1,u}function ie(e,c){let n=c*te,i=e[n++],r=o.unpack(e,n,S),t=d.fromTranslation(r,u.modelMatrix);d.multiplyByUniformScale(t,i,t);let s=u.boundingVolume;return o.clone(o.ZERO,s.center),s.radius=1,u}var de=new o;function R(e,c,n,i,r){if(!l(c))return;let t=n.length,s=i.attributes.position.values,h=i.indices,a=e.positions,x=e.vertexBatchIds,y=e.indices,I=e.batchIds,p=e.batchTableColors,T=e.batchedIndices,U=e.indexOffsets,v=e.indexCounts,L=e.boundingVolumes,F=e.modelMatrix,Z=e.center,V=e.positionOffset,B=e.batchIdIndex,O=e.indexOffset,D=e.batchedIndicesOffset;for(let w=0;w<t;++w){let C=r(c,w),k=C.modelMatrix;d.multiply(F,k,k);let M=n[w],A=s.length;for(let f=0;f<A;f+=3){let m=o.unpack(s,f,de);d.multiplyByPoint(k,m,m),o.subtract(m,Z,m),o.pack(m,a,V*3+f),x[B++]=M}let b=h.length;for(let f=0;f<b;++f)y[O+f]=h[f]+V;let g=w+D;T[g]=new J({offset:O,count:b,color:P.fromRgba(p[M]),batchIds:[M]}),I[g]=M,U[g]=O,v[g]=b,L[g]=E.transform(C.boundingVolume,k),V+=A/3,O+=b}e.positionOffset=V,e.batchIdIndex=B,e.indexOffset=O,e.batchedIndicesOffset+=t}var K=new o,Q=new d;function re(e){let c=new Float64Array(e),n=0;o.unpack(c,n,K),n+=o.packedLength,d.unpack(c,n,Q)}function le(e){let c=e.length,n=0;for(let i=0;i<c;++i)n+=P.packedLength+3+e[i].batchIds.length;return n}function ae(e,c,n){let i=n.length,r=2+i*E.packedLength+1+le(c),t=new Float64Array(r),s=0;t[s++]=e,t[s++]=i;for(let a=0;a<i;++a)E.pack(n[a],t,s),s+=E.packedLength;let h=c.length;t[s++]=h;for(let a=0;a<h;++a){let x=c[a];P.pack(x.color,t,s),s+=P.packedLength,t[s++]=x.offset,t[s++]=x.count;let y=x.batchIds,I=y.length;t[s++]=I;for(let p=0;p<I;++p)t[s++]=y[p]}return t}function fe(e,c){let n=l(e.boxes)?new Float32Array(e.boxes):void 0,i=l(e.boxBatchIds)?new Uint16Array(e.boxBatchIds):void 0,r=l(e.cylinders)?new Float32Array(e.cylinders):void 0,t=l(e.cylinderBatchIds)?new Uint16Array(e.cylinderBatchIds):void 0,s=l(e.ellipsoids)?new Float32Array(e.ellipsoids):void 0,h=l(e.ellipsoidBatchIds)?new Uint16Array(e.ellipsoidBatchIds):void 0,a=l(e.spheres)?new Float32Array(e.spheres):void 0,x=l(e.sphereBatchIds)?new Uint16Array(e.sphereBatchIds):void 0,y=l(n)?i.length:0,I=l(r)?t.length:0,p=l(s)?h.length:0,T=l(a)?x.length:0,U=j.getUnitBox(),v=z.getUnitCylinder(),L=H.getUnitEllipsoid(),F=U.attributes.position.values,Z=v.attributes.position.values,V=L.attributes.position.values,B=F.length*y;B+=Z.length*I,B+=V.length*(p+T);let O=U.indices,D=v.indices,w=L.indices,C=O.length*y;C+=D.length*I,C+=w.length*(p+T);let k=new Float32Array(B),M=new Uint16Array(B/3),A=W.createTypedArray(B/3,C),b=y+I+p+T,g=new Uint16Array(b),f=new Array(b),m=new Uint32Array(b),q=new Uint32Array(b),_=new Array(b);re(e.packedBuffer);let G={batchTableColors:new Uint32Array(e.batchTableColors),positions:k,vertexBatchIds:M,indices:A,batchIds:g,batchedIndices:f,indexOffsets:m,indexCounts:q,boundingVolumes:_,positionOffset:0,batchIdIndex:0,indexOffset:0,batchedIndicesOffset:0,modelMatrix:Q,center:K};R(G,n,i,U,oe),R(G,r,t,v,ce),R(G,s,h,L,se),R(G,a,x,L,ie);let N=ae(A.BYTES_PER_ELEMENT,f,_);return c.push(k.buffer,M.buffer,A.buffer),c.push(g.buffer,m.buffer,q.buffer),c.push(N.buffer),{positions:k.buffer,vertexBatchIds:M.buffer,indices:A.buffer,indexOffsets:m.buffer,indexCounts:q.buffer,batchIds:g.buffer,packedBuffer:N.buffer}}var Oe=Y(fe);export{Oe as default}; diff --git a/public/Cesium/Workers/createVectorTilePoints.js b/public/Cesium/Workers/createVectorTilePoints.js new file mode 100644 index 000000000..1247523ab --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePoints.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as x}from"./chunk-WZDE3RYP.js";import{a as w}from"./chunk-DEPHB2WM.js";import{h as c}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as h,b as l,d as p}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var u=32767,F=new l,L=new h,b=new c,y=new p,a={min:void 0,max:void 0};function V(t){t=new Float64Array(t);let o=0;a.min=t[o++],a.max=t[o++],c.unpack(t,o,b),o+=c.packedLength,p.unpack(t,o,y)}function z(t,o){let s=new Uint16Array(t.positions);V(t.packedBuffer);let e=b,C=y,A=a.min,P=a.max,n=s.length/3,f=s.subarray(0,n),g=s.subarray(n,2*n),d=s.subarray(2*n,3*n);w.zigZagDeltaDecode(f,g,d);let m=new Float64Array(s.length);for(let r=0;r<n;++r){let k=f[r],E=g[r],H=d[r],M=i.lerp(e.west,e.east,k/u),R=i.lerp(e.south,e.north,E/u),T=i.lerp(A,P,H/u),v=l.fromRadians(M,R,T,F),D=C.cartographicToCartesian(v,L);h.pack(D,m,r*3)}return o.push(m.buffer),{positions:m.buffer}}var G=x(z);export{G as default}; diff --git a/public/Cesium/Workers/createVectorTilePolygons.js b/public/Cesium/Workers/createVectorTilePolygons.js new file mode 100644 index 000000000..8f51c666d --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePolygons.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-HMIYSTF6.js";import{a as It}from"./chunk-WZDE3RYP.js";import{a as M}from"./chunk-CNCV5UL7.js";import{a as bt}from"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as W}from"./chunk-OFUUQVMR.js";import"./chunk-4IW2T6GF.js";import{h as z}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o,b as nt,d as j}from"./chunk-64RSHJUE.js";import{a as et}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as A}from"./chunk-VTAIKJXX.js";var kt=new o,Bt=new j,Nt=new z,E={min:void 0,max:void 0,indexBytesPerElement:void 0};function Pt(s){let u=new Float64Array(s),n=0;E.indexBytesPerElement=u[n++],E.min=u[n++],E.max=u[n++],o.unpack(u,n,kt),n+=o.packedLength,j.unpack(u,n,Bt),n+=j.packedLength,z.unpack(u,n,Nt)}function Tt(s){let u=s.length,n=0;for(let y=0;y<u;++y)n+=R.packedLength+3+s[y].batchIds.length;return n}function Ct(s,u,n){let y=u.length,O=2+y*M.packedLength+1+Tt(n),c=new Float64Array(O),i=0;c[i++]=s,c[i++]=y;for(let x=0;x<y;++x)M.pack(u[x],c,i),i+=M.packedLength;let V=n.length;c[i++]=V;for(let x=0;x<V;++x){let B=n[x];R.pack(B.color,c,i),i+=R.packedLength,c[i++]=B.offset,c[i++]=B.count;let P=B.batchIds,w=P.length;c[i++]=w;for(let h=0;h<w;++h)c[i++]=P[h]}return c}var yt=32767,wt=new o,Ht=new o,St=new o,Ut=new o,Ft=new o,Lt=new nt,Mt=new z;function Rt(s,u){Pt(s.packedBuffer);let n;E.indexBytesPerElement===2?n=new Uint16Array(s.indices):n=new Uint32Array(s.indices);let O=new Uint16Array(s.positions),c=new Uint32Array(s.counts),i=new Uint32Array(s.indexCounts),V=new Uint32Array(s.batchIds),x=new Uint32Array(s.batchTableColors),B=new Array(c.length),P=kt,w=Bt,h=Nt,ot=E.min,st=E.max,T=s.minimumHeights,C=s.maximumHeights;A(T)&&A(C)&&(T=new Float32Array(T),C=new Float32Array(C));let t,f,l,N=O.length/2,ct=O.subarray(0,N),it=O.subarray(N,2*N);bt.zigZagDeltaDecode(ct,it);let rt=new Float64Array(N*3);for(t=0;t<N;++t){let e=ct[t],p=it[t],L=et.lerp(h.west,h.east,e/yt),k=et.lerp(h.south,h.north,p/yt),b=nt.fromRadians(L,k,0,Lt),Y=w.cartographicToCartesian(b,wt);o.pack(Y,rt,t*3)}let H=c.length,at=new Array(H),Z=new Array(H),ft=0,lt=0;for(t=0;t<H;++t)at[t]=ft,Z[t]=lt,ft+=c[t],lt+=i[t];let S=new Float32Array(N*3*2),_=new Uint16Array(N*2),D=new Uint32Array(Z.length),G=new Uint32Array(i.length),r=[],g={};for(t=0;t<H;++t)l=x[t],A(g[l])?(g[l].positionLength+=c[t],g[l].indexLength+=i[t],g[l].batchIds.push(t)):g[l]={positionLength:c[t],indexLength:i[t],offset:0,indexOffset:0,batchIds:[t]};let a,dt=0,ht=0;for(l in g)if(g.hasOwnProperty(l)){a=g[l],a.offset=dt,a.indexOffset=ht;let e=a.positionLength*2,p=a.indexLength*2+a.positionLength*6;dt+=e,ht+=p,a.indexLength=p}let U=[];for(l in g)g.hasOwnProperty(l)&&(a=g[l],U.push({color:R.fromRgba(parseInt(l)),offset:a.indexOffset,count:a.indexLength,batchIds:a.batchIds}));for(t=0;t<H;++t){l=x[t],a=g[l];let e=a.offset,p=e*3,L=e,k=at[t],b=c[t],Y=V[t],mt=ot,gt=st;A(T)&&A(C)&&(mt=T[t],gt=C[t]);let q=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,K=Number.POSITIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(f=0;f<b;++f){let m=o.unpack(rt,k*3+f*3,wt);w.scaleToGeodeticSurface(m,m);let I=w.cartesianToCartographic(m,Lt),F=I.latitude,pt=I.longitude;q=Math.min(F,q),J=Math.max(F,J),K=Math.min(pt,K),Q=Math.max(pt,Q);let xt=w.geodeticSurfaceNormal(m,Ht),v=o.multiplyByScalar(xt,mt,St),$=o.add(m,v,Ut);v=o.multiplyByScalar(xt,gt,v);let tt=o.add(m,v,Ft);o.subtract(tt,P,tt),o.subtract($,P,$),o.pack(tt,S,p),o.pack($,S,p+3),_[L]=Y,_[L+1]=Y,p+=6,L+=2}h=Mt,h.west=K,h.east=Q,h.south=q,h.north=J,B[t]=M.fromRectangle(h,ot,st,w);let d=a.indexOffset,X=Z[t],Ot=i[t];for(D[t]=d,f=0;f<Ot;f+=3){let m=n[X+f]-k,I=n[X+f+1]-k,F=n[X+f+2]-k;r[d++]=m*2+e,r[d++]=I*2+e,r[d++]=F*2+e,r[d++]=F*2+1+e,r[d++]=I*2+1+e,r[d++]=m*2+1+e}for(f=0;f<b;++f){let m=f,I=(f+1)%b;r[d++]=m*2+1+e,r[d++]=I*2+e,r[d++]=m*2+e,r[d++]=m*2+1+e,r[d++]=I*2+1+e,r[d++]=I*2+e}a.offset+=b*2,a.indexOffset=d,G[t]=d-D[t]}r=W.createTypedArray(S.length/3,r);let At=U.length;for(let e=0;e<At;++e){let p=U[e].batchIds,L=0,k=p.length;for(let b=0;b<k;++b)L+=G[p[b]];U[e].count=L}let Et=r.BYTES_PER_ELEMENT===2?W.UNSIGNED_SHORT:W.UNSIGNED_INT,ut=Ct(Et,B,U);return u.push(S.buffer,r.buffer,D.buffer,G.buffer,_.buffer,ut.buffer),{positions:S.buffer,indices:r.buffer,indexOffsets:D.buffer,indexCounts:G.buffer,batchIds:_.buffer,packedBuffer:ut.buffer}}var Jt=It(Rt);export{Jt as default}; diff --git a/public/Cesium/Workers/createVectorTilePolylines.js b/public/Cesium/Workers/createVectorTilePolylines.js new file mode 100644 index 000000000..544267710 --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePolylines.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as K}from"./chunk-WZDE3RYP.js";import{a as G}from"./chunk-DEPHB2WM.js";import{a as S}from"./chunk-OFUUQVMR.js";import{c as B,h as R}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,b as _,d as L}from"./chunk-64RSHJUE.js";import{a as F}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var O=32767,ct=new _,rt=new t;function it(n,o,p,m,s){let d=n.length/3,U=n.subarray(0,d),v=n.subarray(d,2*d),P=n.subarray(2*d,3*d);G.zigZagDeltaDecode(U,v,P);let D=new Float64Array(n.length);for(let u=0;u<d;++u){let e=U[u],A=v[u],l=P[u],k=F.lerp(o.west,o.east,e/O),I=F.lerp(o.south,o.north,A/O),E=F.lerp(p,m,l/O),g=_.fromRadians(k,I,E,ct),C=s.cartographicToCartesian(g,rt);t.pack(C,D,u*3)}return D}var Y=it;var X=new R,$=new L,j=new t,H={min:void 0,max:void 0};function at(n){n=new Float64Array(n);let o=0;H.min=n[o++],H.max=n[o++],R.unpack(n,o,X),o+=R.packedLength,L.unpack(n,o,$),o+=L.packedLength,t.unpack(n,o,j)}function ft(n){let o=n.length,p=new Uint32Array(o+1),m=0;for(let s=0;s<o;++s)p[s]=m,m+=n[s];return p[o]=m,p}var Z=new t,q=new t,J=new t,dt=new t,Q=new t;function ut(n,o){let p=new Uint16Array(n.positions),m=new Uint16Array(n.widths),s=new Uint32Array(n.counts),d=new Uint16Array(n.batchIds);at(n.packedBuffer);let U=X,v=$,P=j,D=H.min,u=H.max,e=Y(p,U,D,u,v),A=e.length/3,l=A*4-4,k=new Float32Array(l*3),I=new Float32Array(l*3),E=new Float32Array(l*3),g=new Float32Array(l*2),C=new Uint16Array(l),N=0,z=0,tt=0,r,h=0,M=s.length;for(r=0;r<M;++r){let a=s[r],nt=m[r],ot=d[r];for(let f=0;f<a;++f){let w;if(f===0){let c=t.unpack(e,h*3,Z),T=t.unpack(e,(h+1)*3,q);w=t.subtract(c,T,J),t.add(c,w,w)}else w=t.unpack(e,(h+f-1)*3,J);let W=t.unpack(e,(h+f)*3,dt),x;if(f===a-1){let c=t.unpack(e,(h+a-1)*3,Z),T=t.unpack(e,(h+a-2)*3,q);x=t.subtract(c,T,Q),t.add(c,x,x)}else x=t.unpack(e,(h+f+1)*3,Q);t.subtract(w,P,w),t.subtract(W,P,W),t.subtract(x,P,x);let et=f===0?2:0,st=f===a-1?2:4;for(let c=et;c<st;++c){t.pack(W,k,N),t.pack(w,I,N),t.pack(x,E,N),N+=3;let T=c-2<0?-1:1;g[z++]=2*(c%2)-1,g[z++]=T*nt,C[tt++]=ot}}h+=a}let i=S.createTypedArray(l,A*6-6),b=0,y=0;for(M=A-1,r=0;r<M;++r)i[y++]=b,i[y++]=b+2,i[y++]=b+1,i[y++]=b+1,i[y++]=b+2,i[y++]=b+3,b+=4;o.push(k.buffer,I.buffer,E.buffer),o.push(g.buffer,C.buffer,i.buffer);let V={indexDatatype:i.BYTES_PER_ELEMENT===2?S.UNSIGNED_SHORT:S.UNSIGNED_INT,currentPositions:k.buffer,previousPositions:I.buffer,nextPositions:E.buffer,expandAndWidth:g.buffer,batchIds:C.buffer,indices:i.buffer};if(n.keepDecodedPositions){let a=ft(s);o.push(e.buffer,a.buffer),V=B(V,{decodedPositions:e.buffer,decodedPositionOffsets:a.buffer})}return V}var It=K(ut);export{It as default}; diff --git a/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js b/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js new file mode 100644 index 000000000..5321817f8 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Dt,b as Gt}from"./chunk-7HTKERZY.js";import{a as Lt}from"./chunk-WZDE3RYP.js";import{a as lt}from"./chunk-DQQ63PYM.js";import{a as qt}from"./chunk-CNCV5UL7.js";import"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import{a as kt}from"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{d as zt}from"./chunk-4IW2T6GF.js";import{b as $,g as Ot,h as Vt}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as P,b as N,c as wt,d as Ut}from"./chunk-64RSHJUE.js";import{a as r}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as Ht}from"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as ht}from"./chunk-VTAIKJXX.js";var $t=Uint16Array.BYTES_PER_ELEMENT,mt=Int32Array.BYTES_PER_ELEMENT,Pt=Uint32Array.BYTES_PER_ELEMENT,te=Float32Array.BYTES_PER_ELEMENT,H=Float64Array.BYTES_PER_ELEMENT;function tt(n,l,e){e=e??r;let i=n.length;for(let c=0;c<i;++c)if(e.equalsEpsilon(n[c],l,r.EPSILON12))return c;return-1}function ee(n,l){n.ellipsoid=Ut.clone(n.ellipsoid),n.rectangle=Vt.clone(n.rectangle);let e=re(n.buffer,n.relativeToCenter,n.ellipsoid,n.rectangle,n.nativeRectangle,n.exaggeration,n.exaggerationRelativeHeight,n.skirtHeight,n.includeWebMercatorT,n.negativeAltitudeExponentBias,n.negativeElevationThreshold),i=e.vertices;l.push(i.buffer);let c=e.indices;return l.push(c.buffer),{vertices:i.buffer,indices:c.buffer,numberOfAttributes:e.encoding.stride,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,boundingSphere3D:e.boundingSphere3D,orientedBoundingBox:e.orientedBoundingBox,occludeePointInScaledSpace:e.occludeePointInScaledSpace,encoding:e.encoding,vertexCountWithoutSkirts:e.vertexCountWithoutSkirts,indexCountWithoutSkirts:e.indexCountWithoutSkirts,westIndicesSouthToNorth:e.westIndicesSouthToNorth,southIndicesEastToWest:e.southIndicesEastToWest,eastIndicesNorthToSouth:e.eastIndicesNorthToSouth,northIndicesWestToEast:e.northIndicesWestToEast}}var u=new N,G=new P,oe=new P,ne=new P,ie=new $;function re(n,l,e,i,c,et,m,ot,T,nt,it){let I,h,E,f,x,p;ht(i)?(I=i.west,h=i.south,E=i.east,f=i.north,x=i.width,p=i.height):(I=r.toRadians(c.west),h=r.toRadians(c.south),E=r.toRadians(c.east),f=r.toRadians(c.north),x=r.toRadians(i.width),p=r.toRadians(i.height));let X=[h,f],A=[I,E],O=Ot.eastNorthUpToFixedFrame(l,e),j=$.inverseTransformation(O,ie),V,Q;T&&(V=lt.geodeticLatitudeToMercatorAngle(h),Q=1/(lt.geodeticLatitudeToMercatorAngle(f)-V));let y=et!==1,a=new DataView(n),z=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,b=oe;b.x=Number.POSITIVE_INFINITY,b.y=Number.POSITIVE_INFINITY,b.z=Number.POSITIVE_INFINITY;let M=ne;M.x=Number.NEGATIVE_INFINITY,M.y=Number.NEGATIVE_INFINITY,M.z=Number.NEGATIVE_INFINITY;let o=0,S=0,At=0,rt,L;for(L=0;L<4;++L){let t=o;rt=a.getUint32(t,!0),t+=Pt;let d=r.toRadians(a.getFloat64(t,!0)*180);t+=H,tt(A,d)===-1&&A.push(d);let Y=r.toRadians(a.getFloat64(t,!0)*180);t+=H,tt(X,Y)===-1&&X.push(Y),t+=2*H;let B=a.getInt32(t,!0);t+=mt,S+=B,B=a.getInt32(t,!0),At+=B*3,o+=rt+Pt}let yt=[],bt=[],g=new Array(S),R=new Array(S),_=new Array(S),C=T?new Array(S):[],F=y?new Array(S):[],v=new Array(At),k=[],st=[],ct=[],W=[],s=0,pt=0;for(o=0,L=0;L<4;++L){rt=a.getUint32(o,!0),o+=Pt;let t=o,d=r.toRadians(a.getFloat64(o,!0)*180);o+=H;let Y=r.toRadians(a.getFloat64(o,!0)*180);o+=H;let B=r.toRadians(a.getFloat64(o,!0)*180),Ft=B*.5;o+=H;let vt=r.toRadians(a.getFloat64(o,!0)*180),Wt=vt*.5;o+=H;let Yt=a.getInt32(o,!0);o+=mt;let Kt=a.getInt32(o,!0);o+=mt,o+=mt;let St=new Array(Yt);for(let U=0;U<Yt;++U){let Z=d+a.getUint8(o++)*B;u.longitude=Z;let D=Y+a.getUint8(o++)*vt;u.latitude=D;let w=a.getFloat32(o,!0);if(o+=te,w!==0&&w<it&&(w*=-Math.pow(2,nt)),w*=6371010,u.height=w,tt(A,Z)!==-1||tt(X,D)!==-1){let dt=tt(yt,u,N);if(dt===-1)yt.push(N.clone(u)),bt.push(s);else{St[U]=bt[dt];continue}}St[U]=s,Math.abs(Z-I)<Ft?k.push({index:s,cartographic:N.clone(u)}):Math.abs(Z-E)<Ft?ct.push({index:s,cartographic:N.clone(u)}):Math.abs(D-h)<Wt?st.push({index:s,cartographic:N.clone(u)}):Math.abs(D-f)<Wt&&W.push({index:s,cartographic:N.clone(u)}),z=Math.min(w,z),J=Math.max(w,J),_[s]=w;let Nt=e.cartographicToCartesian(u);if(g[s]=Nt,T&&(C[s]=(lt.geodeticLatitudeToMercatorAngle(D)-V)*Q),y){let dt=e.geodeticSurfaceNormal(Nt);F[s]=dt}$.multiplyByPoint(j,Nt,G),P.minimumByComponent(G,b,b),P.maximumByComponent(G,M,M);let Tt=(Z-I)/(E-I);Tt=r.clamp(Tt,0,1);let Bt=(D-h)/(f-h);Bt=r.clamp(Bt,0,1),R[s]=new wt(Tt,Bt),++s}let Zt=Kt*3;for(let U=0;U<Zt;++U,++pt)v[pt]=St[a.getUint16(o,!0)],o+=$t;if(rt!==o-t)throw new Ht("Invalid terrain tile.")}g.length=s,R.length=s,_.length=s,T&&(C.length=s),y&&(F.length=s);let Mt=s,Xt=pt,K={hMin:z,lastBorderPoint:void 0,skirtHeight:ot,toENU:j,ellipsoid:e,minimum:b,maximum:M};k.sort(function(t,d){return d.cartographic.latitude-t.cartographic.latitude}),st.sort(function(t,d){return t.cartographic.longitude-d.cartographic.longitude}),ct.sort(function(t,d){return t.cartographic.latitude-d.cartographic.latitude}),W.sort(function(t,d){return d.cartographic.longitude-t.cartographic.longitude});let q=1e-5;if(gt(g,_,R,C,F,v,K,k,-q*x,!0,-q*p),gt(g,_,R,C,F,v,K,st,-q*p,!1),gt(g,_,R,C,F,v,K,ct,q*x,!0,q*p),gt(g,_,R,C,F,v,K,W,q*p,!1),k.length>0&&W.length>0){let t=k[0].index,d=Mt,Y=W[W.length-1].index,B=g.length-1;v.push(Y,B,d,d,t,Y)}S=g.length;let jt=zt.fromPoints(g),Rt;ht(i)&&(Rt=qt.fromRectangle(i,z,J,e));let Qt=new Dt(e).computeHorizonCullingPointPossiblyUnderEllipsoid(l,g,z),Jt=new kt(b,M,l),It=new Gt(l,Jt,K.hMin,J,O,!1,T,y,et,m),_t=new Float32Array(S*It.stride),Ct=0;for(let t=0;t<S;++t)Ct=It.encode(_t,Ct,g[t],R[t],_[t],void 0,C[t],F[t]);let at=k.map(function(t){return t.index}).reverse(),Et=st.map(function(t){return t.index}).reverse(),ut=ct.map(function(t){return t.index}).reverse(),xt=W.map(function(t){return t.index}).reverse();return Et.unshift(ut[ut.length-1]),Et.push(at[0]),xt.unshift(at[at.length-1]),xt.push(ut[0]),{vertices:_t,indices:new Uint16Array(v),maximumHeight:J,minimumHeight:z,encoding:It,boundingSphere3D:jt,orientedBoundingBox:Rt,occludeePointInScaledSpace:Qt,vertexCountWithoutSkirts:Mt,indexCountWithoutSkirts:Xt,westIndicesSouthToNorth:at,southIndicesEastToWest:Et,eastIndicesNorthToSouth:ut,northIndicesWestToEast:xt}}function gt(n,l,e,i,c,et,m,ot,T,nt,it){let I=ot.length;for(let h=0;h<I;++h){let E=ot[h],f=E.cartographic,x=E.index,p=n.length,X=f.longitude,A=f.latitude;A=r.clamp(A,-r.PI_OVER_TWO,r.PI_OVER_TWO);let O=f.height-m.skirtHeight;m.hMin=Math.min(m.hMin,O),N.fromRadians(X,A,O,u),nt&&(u.longitude+=T),nt?h===I-1?u.latitude+=it:h===0&&(u.latitude-=it):u.latitude+=T;let j=m.ellipsoid.cartographicToCartesian(u);n.push(j),l.push(O),e.push(wt.clone(e[x])),i.length>0&&i.push(i[x]),c.length>0&&c.push(c[x]),$.multiplyByPoint(m.toENU,j,G);let V=m.minimum,Q=m.maximum;P.minimumByComponent(G,V,V),P.maximumByComponent(G,Q,Q);let ft=m.lastBorderPoint;if(ht(ft)){let y=ft.index;et.push(y,p-1,p,p,x,y)}m.lastBorderPoint=E}}var we=Lt(ee);export{we as default}; diff --git a/public/Cesium/Workers/createVerticesFromHeightmap.js b/public/Cesium/Workers/createVerticesFromHeightmap.js new file mode 100644 index 000000000..0a57dcec7 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromHeightmap.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as ar,b as sr}from"./chunk-7HTKERZY.js";import{a as ir}from"./chunk-WZDE3RYP.js";import{a as xe}from"./chunk-DQQ63PYM.js";import{a as nr}from"./chunk-CNCV5UL7.js";import"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import{a as tr}from"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{d as rr}from"./chunk-4IW2T6GF.js";import{b as Ie,g as er,h as ne}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as re,c as Pe,d as pe}from"./chunk-64RSHJUE.js";import{a as he}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as Re}from"./chunk-ED5JPB3S.js";import{a as me}from"./chunk-LEYMRMBK.js";import{c as pr,d as Ir,e as W}from"./chunk-VTAIKJXX.js";var lr=pr((Zr,Ue)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var D=function(){var A={};A.defaultNoDataValue=-34027999387901484e22,A.decode=function(r,a){a=a||{};var t=a.encodedMaskData||a.encodedMaskData===null,i=n(r,a.inputOffset||0,t),o=a.noDataValue!==null?a.noDataValue:A.defaultNoDataValue,s=V(i,a.pixelType||Float32Array,a.encodedMaskData,o,a.returnMask),u={width:i.width,height:i.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:i.pixels.maxValue,noDataValue:o};return s.resultMask&&(u.maskData=s.resultMask),a.returnEncodedMask&&i.mask&&(u.encodedMaskData=i.mask.bitset?i.mask.bitset:null),a.returnFileInfo&&(u.fileInfo=b(i),a.computeUsedBitDepths&&(u.fileInfo.bitDepths=Y(i))),u};var V=function(r,a,t,i,o){var s=0,u=r.pixels.numBlocksX,m=r.pixels.numBlocksY,l=Math.floor(r.width/u),f=Math.floor(r.height/m),h=2*r.maxZError,c=Number.MAX_VALUE,g;t=t||(r.mask?r.mask.bitset:null);var v,U;v=new a(r.width*r.height),o&&t&&(U=new Uint8Array(r.width*r.height));for(var M=new Float32Array(l*f),S,I,k=0;k<=m;k++){var w=k!==m?f:r.height%m;if(w!==0)for(var d=0;d<=u;d++){var x=d!==u?l:r.width%u;if(x!==0){var T=k*r.width*f+d*l,y=r.width-x,p=r.pixels.blocks[s],L,B,E;p.encoding<2?(p.encoding===0?L=p.rawData:(e(p.stuffedData,p.bitsPerPixel,p.numValidPixels,p.offset,h,M,r.pixels.maxValue),L=M),B=0):p.encoding===2?E=0:E=p.offset;var O;if(t)for(I=0;I<w;I++){for(T&7&&(O=t[T>>3],O<<=T&7),S=0;S<x;S++)T&7||(O=t[T>>3]),O&128?(U&&(U[T]=1),g=p.encoding<2?L[B++]:E,c=c>g?g:c,v[T++]=g):(U&&(U[T]=0),v[T++]=i),O<<=1;T+=y}else if(p.encoding<2)for(I=0;I<w;I++){for(S=0;S<x;S++)g=L[B++],c=c>g?g:c,v[T++]=g;T+=y}else for(c=c>E?E:c,I=0;I<w;I++){for(S=0;S<x;S++)v[T++]=E;T+=y}if(p.encoding===1&&B!==p.numValidPixels)throw"Block and Mask do not match";s++}}}return{resultPixels:v,resultMask:U,minValue:c}},b=function(r){return{fileIdentifierString:r.fileIdentifierString,fileVersion:r.fileVersion,imageType:r.imageType,height:r.height,width:r.width,maxZError:r.maxZError,eofOffset:r.eofOffset,mask:r.mask?{numBlocksX:r.mask.numBlocksX,numBlocksY:r.mask.numBlocksY,numBytes:r.mask.numBytes,maxValue:r.mask.maxValue}:null,pixels:{numBlocksX:r.pixels.numBlocksX,numBlocksY:r.pixels.numBlocksY,numBytes:r.pixels.numBytes,maxValue:r.pixels.maxValue,noDataValue:r.noDataValue}}},Y=function(r){for(var a=r.pixels.numBlocksX*r.pixels.numBlocksY,t={},i=0;i<a;i++){var o=r.pixels.blocks[i];o.encoding===0?t.float32=!0:o.encoding===1?t[o.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},n=function(r,a,t){var i={},o=new Uint8Array(r,a,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,o),i.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+i.fileIdentifierString;a+=10;var s=new DataView(r,a,24);if(i.fileVersion=s.getInt32(0,!0),i.imageType=s.getInt32(4,!0),i.height=s.getUint32(8,!0),i.width=s.getUint32(12,!0),i.maxZError=s.getFloat64(16,!0),a+=24,!t)if(s=new DataView(r,a,16),i.mask={},i.mask.numBlocksY=s.getUint32(0,!0),i.mask.numBlocksX=s.getUint32(4,!0),i.mask.numBytes=s.getUint32(8,!0),i.mask.maxValue=s.getFloat32(12,!0),a+=16,i.mask.numBytes>0){var u=new Uint8Array(Math.ceil(i.width*i.height/8));s=new DataView(r,a,i.mask.numBytes);var m=s.getInt16(0,!0),l=2,f=0;do{if(m>0)for(;m--;)u[f++]=s.getUint8(l++);else{var h=s.getUint8(l++);for(m=-m;m--;)u[f++]=h}m=s.getInt16(l,!0),l+=2}while(l<i.mask.numBytes);if(m!==-32768||f<u.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=u,a+=i.mask.numBytes}else(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)===0&&(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));s=new DataView(r,a,16),i.pixels={},i.pixels.numBlocksY=s.getUint32(0,!0),i.pixels.numBlocksX=s.getUint32(4,!0),i.pixels.numBytes=s.getUint32(8,!0),i.pixels.maxValue=s.getFloat32(12,!0),a+=16;var c=i.pixels.numBlocksX,g=i.pixels.numBlocksY,v=c+(i.width%c>0?1:0),U=g+(i.height%g>0?1:0);i.pixels.blocks=new Array(v*U);for(var M=0,S=0;S<U;S++)for(var I=0;I<v;I++){var k=0,w=r.byteLength-a;s=new DataView(r,a,Math.min(10,w));var d={};i.pixels.blocks[M++]=d;var x=s.getUint8(0);if(k++,d.encoding=x&63,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(d.encoding===2){a++;continue}if(x!==0&&x!==2){if(x>>=6,d.offsetType=x,x===2)d.offset=s.getInt8(1),k++;else if(x===1)d.offset=s.getInt16(1,!0),k+=2;else if(x===0)d.offset=s.getFloat32(1,!0),k+=4;else throw"Invalid block offset type";if(d.encoding===1)if(x=s.getUint8(k),k++,d.bitsPerPixel=x&63,x>>=6,d.numValidPixelsType=x,x===2)d.numValidPixels=s.getUint8(k),k++;else if(x===1)d.numValidPixels=s.getUint16(k,!0),k+=2;else if(x===0)d.numValidPixels=s.getUint32(k,!0),k+=4;else throw"Invalid valid pixel count type"}if(a+=k,d.encoding!==3){var T,y;if(d.encoding===0){var p=(i.pixels.numBytes-1)/4;if(p!==Math.floor(p))throw"uncompressed block has invalid length";T=new ArrayBuffer(p*4),y=new Uint8Array(T),y.set(new Uint8Array(r,a,p*4));var L=new Float32Array(T);d.rawData=L,a+=p*4}else if(d.encoding===1){var B=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),E=Math.ceil(B/4);T=new ArrayBuffer(E*4),y=new Uint8Array(T),y.set(new Uint8Array(r,a,B)),d.stuffedData=new Uint32Array(T),a+=B}}}return i.eofOffset=a,i},e=function(r,a,t,i,o,s,u){var m=(1<<a)-1,l=0,f,h=0,c,g,v=Math.ceil((u-i)/o),U=r.length*4-Math.ceil(a*t/8);for(r[r.length-1]<<=8*U,f=0;f<t;f++){if(h===0&&(g=r[l++],h=32),h>=a)c=g>>>h-a&m,h-=a;else{var M=a-h;c=(g&m)<<M&m,g=r[l++],h=32-M,c+=g>>>h}s[f]=c<v?i+c*o:u}return s};return A}(),ae=function(){"use strict";var A={unstuff:function(n,e,r,a,t,i,o,s){var u=(1<<r)-1,m=0,l,f=0,h,c,g,v,U=n.length*4-Math.ceil(r*a/8);if(n[n.length-1]<<=8*U,t)for(l=0;l<a;l++)f===0&&(c=n[m++],f=32),f>=r?(h=c>>>f-r&u,f-=r):(g=r-f,h=(c&u)<<g&u,c=n[m++],f=32-g,h+=c>>>f),e[l]=t[h];else for(v=Math.ceil((s-i)/o),l=0;l<a;l++)f===0&&(c=n[m++],f=32),f>=r?(h=c>>>f-r&u,f-=r):(g=r-f,h=(c&u)<<g&u,c=n[m++],f=32-g,h+=c>>>f),e[l]=h<v?i+h*o:s},unstuffLUT:function(n,e,r,a,t,i){var o=(1<<e)-1,s=0,u=0,m=0,l=0,f=0,h,c=[],g=n.length*4-Math.ceil(e*r/8);n[n.length-1]<<=8*g;var v=Math.ceil((i-a)/t);for(u=0;u<r;u++)l===0&&(h=n[s++],l=32),l>=e?(f=h>>>l-e&o,l-=e):(m=e-l,f=(h&o)<<m&o,h=n[s++],l=32-m,f+=h>>>l),c[u]=f<v?a+f*t:i;return c.unshift(a),c},unstuff2:function(n,e,r,a,t,i,o,s){var u=(1<<r)-1,m=0,l,f=0,h=0,c,g,v;if(t)for(l=0;l<a;l++)f===0&&(g=n[m++],f=32,h=0),f>=r?(c=g>>>h&u,f-=r,h+=r):(v=r-f,c=g>>>h&u,g=n[m++],f=32-v,c|=(g&(1<<v)-1)<<r-v,h=v),e[l]=t[c];else{var U=Math.ceil((s-i)/o);for(l=0;l<a;l++)f===0&&(g=n[m++],f=32,h=0),f>=r?(c=g>>>h&u,f-=r,h+=r):(v=r-f,c=g>>>h&u,g=n[m++],f=32-v,c|=(g&(1<<v)-1)<<r-v,h=v),e[l]=c<U?i+c*o:s}return e},unstuffLUT2:function(n,e,r,a,t,i){var o=(1<<e)-1,s=0,u=0,m=0,l=0,f=0,h=0,c,g=[],v=Math.ceil((i-a)/t);for(u=0;u<r;u++)l===0&&(c=n[s++],l=32,h=0),l>=e?(f=c>>>h&o,l-=e,h+=e):(m=e-l,f=c>>>h&o,c=n[s++],l=32-m,f|=(c&(1<<m)-1)<<e-m,h=m),g[u]=f<v?a+f*t:i;return g.unshift(a),g},originalUnstuff:function(n,e,r,a){var t=(1<<r)-1,i=0,o,s=0,u,m,l,f=n.length*4-Math.ceil(r*a/8);for(n[n.length-1]<<=8*f,o=0;o<a;o++)s===0&&(m=n[i++],s=32),s>=r?(u=m>>>s-r&t,s-=r):(l=r-s,u=(m&t)<<l&t,m=n[i++],s=32-l,u+=m>>>s),e[o]=u;return e},originalUnstuff2:function(n,e,r,a){var t=(1<<r)-1,i=0,o,s=0,u=0,m,l,f;for(o=0;o<a;o++)s===0&&(l=n[i++],s=32,u=0),s>=r?(m=l>>>u&t,s-=r,u+=r):(f=r-s,m=l>>>u&t,l=n[i++],s=32-f,m|=(l&(1<<f)-1)<<r-f,u=f),e[o]=m;return e}},V={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(n){for(var e=65535,r=65535,a=n.length,t=Math.floor(a/2),i=0;t;){var o=t>=359?359:t;t-=o;do e+=n[i++]<<8,r+=e+=n[i++];while(--o);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return a&1&&(r+=e+=n[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(n,e){var r=e.ptr,a=new Uint8Array(n,r,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,a),t.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;r+=6;var i=new DataView(n,r,8),o=i.getInt32(0,!0);t.fileVersion=o,r+=4,o>=3&&(t.checksum=i.getUint32(4,!0),r+=4),i=new DataView(n,r,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),r+=8,o>=4?(t.numDims=i.getUint32(8,!0),r+=4):t.numDims=1,i=new DataView(n,r,40),t.numValidPixel=i.getUint32(0,!0),t.microBlockSize=i.getInt32(4,!0),t.blobSize=i.getInt32(8,!0),t.imageType=i.getInt32(12,!0),t.maxZError=i.getFloat64(16,!0),t.zMin=i.getFloat64(24,!0),t.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=t,e.ptr=r;var s,u;if(o>=3&&(u=o>=4?52:48,s=this.computeChecksumFletcher32(new Uint8Array(n,r-u,t.blobSize-14)),s!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(n,e){var r=e.headerInfo,a=this.getDataTypeArray(r.imageType),t=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(n,e.ptr,a,t),o=this.readSubArray(n,e.ptr+t,a,t);e.ptr+=2*t;var s,u=!0;for(s=0;s<r.numDims;s++)if(i[s]!==o[s]){u=!1;break}return r.minValues=i,r.maxValues=o,u},readSubArray:function(n,e,r,a){var t;if(r===Uint8Array)t=new Uint8Array(n,e,a);else{var i=new ArrayBuffer(a),o=new Uint8Array(i);o.set(new Uint8Array(n,e,a)),t=new r(i)}return t},readMask:function(n,e){var r=e.ptr,a=e.headerInfo,t=a.width*a.height,i=a.numValidPixel,o=new DataView(n,r,4),s={};if(s.numBytes=o.getUint32(0,!0),r+=4,(i===0||t===i)&&s.numBytes!==0)throw"invalid mask";var u,m;if(i===0)u=new Uint8Array(Math.ceil(t/8)),s.bitset=u,m=new Uint8Array(t),e.pixels.resultMask=m,r+=s.numBytes;else if(s.numBytes>0){u=new Uint8Array(Math.ceil(t/8)),o=new DataView(n,r,s.numBytes);var l=o.getInt16(0,!0),f=2,h=0,c=0;do{if(l>0)for(;l--;)u[h++]=o.getUint8(f++);else for(c=o.getUint8(f++),l=-l;l--;)u[h++]=c;l=o.getInt16(f,!0),f+=2}while(f<s.numBytes);if(l!==-32768||h<u.length)throw"Unexpected end of mask RLE encoding";m=new Uint8Array(t);var g=0,v=0;for(v=0;v<t;v++)v&7?(g=u[v>>3],g<<=v&7):g=u[v>>3],g&128&&(m[v]=1);e.pixels.resultMask=m,s.bitset=u,r+=s.numBytes}return e.ptr=r,e.mask=s,!0},readDataOneSweep:function(n,e,r){var a=e.ptr,t=e.headerInfo,i=t.numDims,o=t.width*t.height,s=t.imageType,u=t.numValidPixel*V.getDataTypeSize(s)*i,m,l=e.pixels.resultMask;if(r===Uint8Array)m=new Uint8Array(n,a,u);else{var f=new ArrayBuffer(u),h=new Uint8Array(f);h.set(new Uint8Array(n,a,u)),m=new r(f)}if(m.length===o*i)e.pixels.resultPixels=m;else{e.pixels.resultPixels=new r(o*i);var c=0,g=0,v=0,U=0;if(i>1)for(v=0;v<i;v++)for(U=v*o,g=0;g<o;g++)l[g]&&(e.pixels.resultPixels[U+g]=m[c++]);else for(g=0;g<o;g++)l[g]&&(e.pixels.resultPixels[g]=m[c++])}return a+=u,e.ptr=a,!0},readHuffmanTree:function(n,e){var r=this.HUFFMAN_LUT_BITS_MAX,a=new DataView(n,e.ptr,16);e.ptr+=16;var t=a.getInt32(0,!0);if(t<2)throw"unsupported Huffman version";var i=a.getInt32(4,!0),o=a.getInt32(8,!0),s=a.getInt32(12,!0);if(o>=s)return!1;var u=new Uint32Array(s-o);V.decodeBits(n,e,u);var m=[],l,f,h,c;for(l=o;l<s;l++)f=l-(l<i?0:i),m[f]={first:u[l-o],second:null};var g=n.byteLength-e.ptr,v=Math.ceil(g/4),U=new ArrayBuffer(v*4),M=new Uint8Array(U);M.set(new Uint8Array(n,e.ptr,g));var S=new Uint32Array(U),I=0,k,w=0;for(k=S[0],l=o;l<s;l++)f=l-(l<i?0:i),c=m[f].first,c>0&&(m[f].second=k<<I>>>32-c,32-I>=c?(I+=c,I===32&&(I=0,w++,k=S[w])):(I+=c-32,w++,k=S[w],m[f].second|=k>>>32-I));var d=0,x=0,T=new b;for(l=0;l<m.length;l++)m[l]!==void 0&&(d=Math.max(d,m[l].first));d>=r?x=r:x=d,d>=30&&console.log("WARning, large NUM LUT BITS IS "+d);var y=[],p,L,B,E,O,F;for(l=o;l<s;l++)if(f=l-(l<i?0:i),c=m[f].first,c>0)if(p=[c,f],c<=x)for(L=m[f].second<<x-c,B=1<<x-c,h=0;h<B;h++)y[L|h]=p;else for(L=m[f].second,F=T,E=c-1;E>=0;E--)O=L>>>E&1,O?(F.right||(F.right=new b),F=F.right):(F.left||(F.left=new b),F=F.left),E===0&&!F.val&&(F.val=p[1]);return{decodeLut:y,numBitsLUTQick:x,numBitsLUT:d,tree:T,stuffedData:S,srcPtr:w,bitPos:I}},readHuffman:function(n,e,r){var a=e.headerInfo,t=a.numDims,i=e.headerInfo.height,o=e.headerInfo.width,s=o*i,u=this.readHuffmanTree(n,e),m=u.decodeLut,l=u.tree,f=u.stuffedData,h=u.srcPtr,c=u.bitPos,g=u.numBitsLUTQick,v=u.numBitsLUT,U=e.headerInfo.imageType===0?128:0,M,S,I,k=e.pixels.resultMask,w,d,x,T,y,p,L,B=0;c>0&&(h++,c=0);var E=f[h],O=e.encodeMode===1,F=new r(s*t),N=F,_;for(_=0;_<a.numDims;_++){if(t>1&&(N=new r(F.buffer,s*_,s),B=0),e.headerInfo.numValidPixel===o*i)for(p=0,T=0;T<i;T++)for(y=0;y<o;y++,p++){if(S=0,w=E<<c>>>32-g,d=w,32-c<g&&(w|=f[h+1]>>>64-c-g,d=w),m[d])S=m[d][1],c+=m[d][0];else for(w=E<<c>>>32-v,d=w,32-c<v&&(w|=f[h+1]>>>64-c-v,d=w),M=l,L=0;L<v;L++)if(x=w>>>v-L-1&1,M=x?M.right:M.left,!(M.left||M.right)){S=M.val,c=c+L+1;break}c>=32&&(c-=32,h++,E=f[h]),I=S-U,O?(y>0?I+=B:T>0?I+=N[p-o]:I+=B,I&=255,N[p]=I,B=I):N[p]=I}else for(p=0,T=0;T<i;T++)for(y=0;y<o;y++,p++)if(k[p]){if(S=0,w=E<<c>>>32-g,d=w,32-c<g&&(w|=f[h+1]>>>64-c-g,d=w),m[d])S=m[d][1],c+=m[d][0];else for(w=E<<c>>>32-v,d=w,32-c<v&&(w|=f[h+1]>>>64-c-v,d=w),M=l,L=0;L<v;L++)if(x=w>>>v-L-1&1,M=x?M.right:M.left,!(M.left||M.right)){S=M.val,c=c+L+1;break}c>=32&&(c-=32,h++,E=f[h]),I=S-U,O?(y>0&&k[p-1]?I+=B:T>0&&k[p-o]?I+=N[p-o]:I+=B,I&=255,N[p]=I,B=I):N[p]=I}e.ptr=e.ptr+(h+1)*4+(c>0?4:0)}e.pixels.resultPixels=F},decodeBits:function(n,e,r,a,t){{var i=e.headerInfo,o=i.fileVersion,s=0,u=new DataView(n,e.ptr,5),m=u.getUint8(0);s++;var l=m>>6,f=l===0?4:3-l,h=(m&32)>0,c=m&31,g=0;if(f===1)g=u.getUint8(s),s++;else if(f===2)g=u.getUint16(s,!0),s+=2;else if(f===4)g=u.getUint32(s,!0),s+=4;else throw"Invalid valid pixel count type";var v=2*i.maxZError,U,M,S,I,k,w,d,x,T,y,p=i.numDims>1?i.maxValues[t]:i.zMax;if(h){for(e.counter.lut++,x=u.getUint8(s),T=c,s++,I=Math.ceil((x-1)*c/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),e.ptr+=s,S.set(new Uint8Array(n,e.ptr,I)),d=new Uint32Array(M),e.ptr+=I,y=0;x-1>>>y;)y++;I=Math.ceil(g*y/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),S.set(new Uint8Array(n,e.ptr,I)),U=new Uint32Array(M),e.ptr+=I,o>=3?w=A.unstuffLUT2(d,c,x-1,a,v,p):w=A.unstuffLUT(d,c,x-1,a,v,p),o>=3?A.unstuff2(U,r,y,g,w):A.unstuff(U,r,y,g,w)}else e.counter.bitstuffer++,y=c,e.ptr+=s,y>0&&(I=Math.ceil(g*y/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),S.set(new Uint8Array(n,e.ptr,I)),U=new Uint32Array(M),e.ptr+=I,o>=3?a==null?A.originalUnstuff2(U,r,y,g):A.unstuff2(U,r,y,g,!1,a,v,p):a==null?A.originalUnstuff(U,r,y,g):A.unstuff(U,r,y,g,!1,a,v,p))}},readTiles:function(n,e,r){var a=e.headerInfo,t=a.width,i=a.height,o=a.microBlockSize,s=a.imageType,u=V.getDataTypeSize(s),m=Math.ceil(t/o),l=Math.ceil(i/o);e.pixels.numBlocksY=l,e.pixels.numBlocksX=m,e.pixels.ptr=0;var f=0,h=0,c=0,g=0,v=0,U=0,M=0,S=0,I=0,k=0,w=0,d=0,x=0,T=0,y=0,p=0,L,B,E,O,F,N,_=new r(o*o),Te=i%o||o,ke=t%o||o,Q,z,le=a.numDims,ie,Z=e.pixels.resultMask,j=e.pixels.resultPixels;for(c=0;c<l;c++)for(v=c!==l-1?o:Te,g=0;g<m;g++)for(U=g!==m-1?o:ke,w=c*t*o+g*o,d=t-U,ie=0;ie<le;ie++){if(le>1&&(j=new r(e.pixels.resultPixels.buffer,t*i*ie*u,t*i)),M=n.byteLength-e.ptr,L=new DataView(n,e.ptr,Math.min(10,M)),B={},p=0,S=L.getUint8(0),p++,I=S>>6&255,k=S>>2&15,k!==(g*o>>3&15))throw"integrity issue";if(N=S&3,N>3)throw e.ptr+=p,"Invalid block encoding ("+N+")";if(N===2){e.counter.constant++,e.ptr+=p;continue}else if(N===0){if(e.counter.uncompressed++,e.ptr+=p,x=v*U*u,T=n.byteLength-e.ptr,x=x<T?x:T,E=new ArrayBuffer(x%u===0?x:x+u-x%u),O=new Uint8Array(E),O.set(new Uint8Array(n,e.ptr,x)),F=new r(E),y=0,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=F[y++]),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=F[y++];w+=d}e.ptr+=y*u}else if(Q=V.getDataTypeUsed(s,I),z=V.getOnePixel(B,p,Q,L),p+=V.getDataTypeSize(Q),N===3)if(e.ptr+=p,e.counter.constantoffset++,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=z),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=z;w+=d}else if(e.ptr+=p,V.decodeBits(n,e,_,z,ie),p=0,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=_[p++]),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=_[p++];w+=d}}},formatFileInfo:function(n){return{fileIdentifierString:n.headerInfo.fileIdentifierString,fileVersion:n.headerInfo.fileVersion,imageType:n.headerInfo.imageType,height:n.headerInfo.height,width:n.headerInfo.width,numValidPixel:n.headerInfo.numValidPixel,microBlockSize:n.headerInfo.microBlockSize,blobSize:n.headerInfo.blobSize,maxZError:n.headerInfo.maxZError,pixelType:V.getPixelType(n.headerInfo.imageType),eofOffset:n.eofOffset,mask:n.mask?{numBytes:n.mask.numBytes}:null,pixels:{numBlocksX:n.pixels.numBlocksX,numBlocksY:n.pixels.numBlocksY,maxValue:n.headerInfo.zMax,minValue:n.headerInfo.zMin,noDataValue:n.noDataValue}}},constructConstantSurface:function(n){var e=n.headerInfo.zMax,r=n.headerInfo.numDims,a=n.headerInfo.height*n.headerInfo.width,t=a*r,i=0,o=0,s=0,u=n.pixels.resultMask;if(u)if(r>1)for(i=0;i<r;i++)for(s=i*a,o=0;o<a;o++)u[o]&&(n.pixels.resultPixels[s+o]=e);else for(o=0;o<a;o++)u[o]&&(n.pixels.resultPixels[o]=e);else if(n.pixels.resultPixels.fill)n.pixels.resultPixels.fill(e);else for(o=0;o<t;o++)n.pixels.resultPixels[o]=e},getDataTypeArray:function(n){var e;switch(n){case 0:e=Int8Array;break;case 1:e=Uint8Array;break;case 2:e=Int16Array;break;case 3:e=Uint16Array;break;case 4:e=Int32Array;break;case 5:e=Uint32Array;break;case 6:e=Float32Array;break;case 7:e=Float64Array;break;default:e=Float32Array}return e},getPixelType:function(n){var e;switch(n){case 0:e="S8";break;case 1:e="U8";break;case 2:e="S16";break;case 3:e="U16";break;case 4:e="S32";break;case 5:e="U32";break;case 6:e="F32";break;case 7:e="F64";break;default:e="F32"}return e},isValidPixelValue:function(n,e){if(e==null)return!1;var r;switch(n){case 0:r=e>=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=5e-324&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(n){var e=0;switch(n){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=n}return e},getDataTypeUsed:function(n,e){var r=n;switch(n){case 2:case 4:r=n-e;break;case 3:case 5:r=n-2*e;break;case 6:e===0?r=n:e===1?r=2:r=1;break;case 7:e===0?r=n:r=n-2*e+1;break;default:r=n;break}return r},getOnePixel:function(n,e,r,a){var t=0;switch(r){case 0:t=a.getInt8(e);break;case 1:t=a.getUint8(e);break;case 2:t=a.getInt16(e,!0);break;case 3:t=a.getUint16(e,!0);break;case 4:t=a.getInt32(e,!0);break;case 5:t=a.getUInt32(e,!0);break;case 6:t=a.getFloat32(e,!0);break;case 7:t=a.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return t}},b=function(n,e,r){this.val=n,this.left=e,this.right=r},Y={decode:function(n,e){e=e||{};var r=e.noDataValue,a=0,t={};if(t.ptr=e.inputOffset||0,t.pixels={},!!V.readHeaderInfo(n,t)){var i=t.headerInfo,o=i.fileVersion,s=V.getDataTypeArray(i.imageType);V.readMask(n,t),i.numValidPixel!==i.width*i.height&&!t.pixels.resultMask&&(t.pixels.resultMask=e.maskData);var u=i.width*i.height;if(t.pixels.resultPixels=new s(u*i.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},i.numValidPixel!==0)if(i.zMax===i.zMin)V.constructConstantSurface(t);else if(o>=4&&V.checkMinMaxRanges(n,t))V.constructConstantSurface(t);else{var m=new DataView(n,t.ptr,2),l=m.getUint8(0);if(t.ptr++,l)V.readDataOneSweep(n,t,s);else if(o>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var f=m.getUint8(1);if(t.ptr++,t.encodeMode=f,f>2||o<4&&f>1)throw"Invalid Huffman flag "+f;f?V.readHuffman(n,t,s):V.readTiles(n,t,s)}else V.readTiles(n,t,s)}t.eofOffset=t.ptr;var h;e.inputOffset?(h=t.headerInfo.blobSize+e.inputOffset-t.ptr,Math.abs(h)>=1&&(t.eofOffset=e.inputOffset+t.headerInfo.blobSize)):(h=t.headerInfo.blobSize-t.ptr,Math.abs(h)>=1&&(t.eofOffset=t.headerInfo.blobSize));var c={width:i.width,height:i.height,pixelData:t.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&V.isValidPixelValue(i.imageType,r)){var g=t.pixels.resultMask;for(a=0;a<u;a++)g[a]||(c.pixelData[a]=r);c.noDataValue=r}return t.noDataValue=r,e.returnFileInfo&&(c.fileInfo=V.formatFileInfo(t)),c}},getBandCount:function(n){var e=0,r=0,a={};for(a.ptr=0,a.pixels={};r<n.byteLength-58;)V.readHeaderInfo(n,a),r+=a.headerInfo.blobSize,e++,a.ptr=r;return e}};return Y}(),C=function(){var A=new ArrayBuffer(4),V=new Uint8Array(A),b=new Uint32Array(A);return b[0]=1,V[0]===1}(),ee={decode:function(A,V){if(!C)throw"Big endian system is not supported.";V=V||{};var b=V.inputOffset||0,Y=new Uint8Array(A,b,10),n=String.fromCharCode.apply(null,Y),e,r;if(n.trim()==="CntZImage")e=D,r=1;else if(n.substring(0,5)==="Lerc2")e=ae,r=2;else throw"Unexpected file identifier string: "+n;for(var a=0,t=A.byteLength-10,i,o=[],s,u,m={width:0,height:0,pixels:[],pixelType:V.pixelType,mask:null,statistics:[]};b<t;){var l=e.decode(A,{inputOffset:b,encodedMaskData:i,maskData:u,returnMask:a===0,returnEncodedMask:a===0,returnFileInfo:!0,pixelType:V.pixelType||null,noDataValue:V.noDataValue||null});b=l.fileInfo.eofOffset,a===0&&(i=l.encodedMaskData,u=l.maskData,m.width=l.width,m.height=l.height,m.dimCount=l.dimCount||1,m.pixelType=l.pixelType||l.fileInfo.pixelType,m.mask=l.maskData),r>1&&l.fileInfo.mask&&l.fileInfo.mask.numBytes>0&&o.push(l.maskData),a++,m.pixels.push(l.pixelData),m.statistics.push({minValue:l.minValue,maxValue:l.maxValue,noDataValue:l.noDataValue,dimStats:l.dimStats})}var f,h,c;if(r>1&&o.length>1){for(c=m.width*m.height,m.bandMasks=o,u=new Uint8Array(c),u.set(o[0]),f=1;f<o.length;f++)for(s=o[f],h=0;h<c;h++)u[h]=u[h]&s[h];m.maskData=u}return m}};typeof define=="function"&&define.amd?define([],function(){return ee}):typeof Ue<"u"&&Ue.exports?Ue.exports=ee:this.Lerc=ee})()});var xr={NONE:0,LERC:1},fr=Object.freeze(xr);var G={};G.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var He=new re,Ur=new Ie,Tr=new re,kr=new re;G.computeVertices=function(D){if(!W(D)||!W(D.heightmap))throw new me("options.heightmap is required.");if(!W(D.width)||!W(D.height))throw new me("options.width and options.height are required.");if(!W(D.nativeRectangle))throw new me("options.nativeRectangle is required.");if(!W(D.skirtHeight))throw new me("options.skirtHeight is required.");let ae=Math.cos,C=Math.sin,ee=Math.sqrt,A=Math.atan,V=Math.exp,b=he.PI_OVER_TWO,Y=he.toRadians,n=D.heightmap,e=D.width,r=D.height,a=D.skirtHeight,t=a>0,i=D.isGeographic??!0,o=D.ellipsoid??pe.default,s=1/o.maximumRadius,u=ne.clone(D.nativeRectangle),m=ne.clone(D.rectangle),l,f,h,c;W(m)?(l=m.west,f=m.south,h=m.east,c=m.north):i?(l=Y(u.west),f=Y(u.south),h=Y(u.east),c=Y(u.north)):(l=u.west*s,f=b-2*A(V(-u.south*s)),h=u.east*s,c=b-2*A(V(-u.north*s)));let g=D.relativeToCenter,v=W(g);g=v?g:re.ZERO;let U=D.includeWebMercatorT??!1,M=D.exaggeration??1,S=D.exaggerationRelativeHeight??0,k=M!==1,w=D.structure??G.DEFAULT_STRUCTURE,d=w.heightScale??G.DEFAULT_STRUCTURE.heightScale,x=w.heightOffset??G.DEFAULT_STRUCTURE.heightOffset,T=w.elementsPerHeight??G.DEFAULT_STRUCTURE.elementsPerHeight,y=w.stride??G.DEFAULT_STRUCTURE.stride,p=w.elementMultiplier??G.DEFAULT_STRUCTURE.elementMultiplier,L=w.isBigEndian??G.DEFAULT_STRUCTURE.isBigEndian,B=ne.computeWidth(u),E=ne.computeHeight(u),O=B/(e-1),F=E/(r-1);i||(B*=s,E*=s);let N=o.radiiSquared,_=N.x,Te=N.y,ke=N.z,Q=65536,z=-65536,le=er.eastNorthUpToFixedFrame(g,o),ie=Ie.inverseTransformation(le,Ur),Z,j;U&&(Z=xe.geodeticLatitudeToMercatorAngle(f),j=1/(xe.geodeticLatitudeToMercatorAngle(c)-Z));let se=Tr;se.x=Number.POSITIVE_INFINITY,se.y=Number.POSITIVE_INFINITY,se.z=Number.POSITIVE_INFINITY;let fe=kr;fe.x=Number.NEGATIVE_INFINITY,fe.y=Number.NEGATIVE_INFINITY,fe.z=Number.NEGATIVE_INFINITY;let ye=Number.POSITIVE_INFINITY,ue=e*r,cr=a>0?e*2+r*2:0,te=ue+cr,ge=new Array(te),Ye=new Array(te),Xe=new Array(te),_e=U?new Array(te):[],ze=k?new Array(te):[],Me=0,Se=r,Ve=0,De=e;t&&(--Me,++Se,--Ve,++De);let ve=1e-5;for(let H=Me;H<Se;++H){let J=H;J<0&&(J=0),J>=r&&(J=r-1);let q=u.north-F*J;i?q=Y(q):q=b-2*A(V(-q*s));let Ee=(q-f)/(c-f);Ee=he.clamp(Ee,0,1);let de=H===Me,we=H===Se-1;a>0&&(de?q+=ve*E:we&&(q-=ve*E));let Ge=ae(q),Le=C(q),Qe=ke*Le,Je;U&&(Je=(xe.geodeticLatitudeToMercatorAngle(q)-Z)*j);for(let ce=Ve;ce<De;++ce){let K=ce;K<0&&(K=0),K>=e&&(K=e-1);let Be=J*(e*y)+K*y,R;if(T===1)R=n[Be];else{R=0;let X;if(L)for(X=0;X<T;++X)R=R*p+n[Be+X];else for(X=T-1;X>=0;--X)R=R*p+n[Be+X]}R=R*d+x,z=Math.max(z,R),Q=Math.min(Q,R);let $=u.west+O*K;i?$=Y($):$=$*s;let Fe=($-l)/(h-l);Fe=he.clamp(Fe,0,1);let P=J*e+K;if(a>0){let X=ce===Ve,Oe=ce===De-1,wr=de||we||X||Oe;if((de||we)&&(X||Oe))continue;wr&&(R-=a,X?(P=ue+(r-J-1),$-=ve*B):we?P=ue+r+(e-K-1):Oe?(P=ue+r+e+J,$+=ve*B):de&&(P=ue+r+e+r+K))}let be=Ge*ae($),Ne=Ge*C($),Ke=_*be,$e=Te*Ne,Ce=1/ee(Ke*be+$e*Ne+Qe*Le),gr=Ke*Ce,vr=$e*Ce,dr=Qe*Ce,oe=new re;oe.x=gr+be*R,oe.y=vr+Ne*R,oe.z=dr+Le*R,Ie.multiplyByPoint(ie,oe,He),re.minimumByComponent(He,se,se),re.maximumByComponent(He,fe,fe),ye=Math.min(ye,R),ge[P]=oe,Xe[P]=new Pe(Fe,Ee),Ye[P]=R,U&&(_e[P]=Je),k&&(ze[P]=o.geodeticSurfaceNormal(oe))}}let mr=rr.fromPoints(ge),Ze;W(m)&&(Ze=nr.fromRectangle(m,Q,z,o));let je;v&&(je=new ar(o).computeHorizonCullingPointPossiblyUnderEllipsoid(g,ge,Q));let hr=new tr(se,fe,g),Ae=new sr(g,hr,ye,z,le,!1,U,k,M,S),qe=new Float32Array(te*Ae.stride),We=0;for(let H=0;H<te;++H)We=Ae.encode(qe,We,ge[H],Xe[H],Ye[H],void 0,_e[H],ze[H]);return{vertices:qe,maximumHeight:z,minimumHeight:Q,encoding:Ae,boundingSphere3D:mr,orientedBoundingBox:Ze,occludeePointInScaledSpace:je}};var or=G;var ur=Ir(lr(),1);function yr(D,ae){if(D.encoding===fr.LERC){let A;try{A=ur.default.decode(D.heightmap)}catch(b){throw new Re(b)}if(A.statistics[0].minValue===Number.MAX_VALUE)throw new Re("Invalid tile data");D.heightmap=A.pixels[0],D.width=A.width,D.height=A.height}D.ellipsoid=pe.clone(D.ellipsoid),D.rectangle=ne.clone(D.rectangle);let C=or.computeVertices(D),ee=C.vertices;return ae.push(ee.buffer),{vertices:ee.buffer,numberOfAttributes:C.encoding.stride,minimumHeight:C.minimumHeight,maximumHeight:C.maximumHeight,gridWidth:D.width,gridHeight:D.height,boundingSphere3D:C.boundingSphere3D,orientedBoundingBox:C.orientedBoundingBox,occludeePointInScaledSpace:C.occludeePointInScaledSpace,encoding:C.encoding,westIndicesSouthToNorth:C.westIndicesSouthToNorth,southIndicesEastToWest:C.southIndicesEastToWest,eastIndicesNorthToSouth:C.eastIndicesNorthToSouth,northIndicesWestToEast:C.northIndicesWestToEast}}var Kr=ir(yr);export{Kr as default}; diff --git a/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js b/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js new file mode 100644 index 000000000..a3ce7f174 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Ct,b as vt}from"./chunk-7HTKERZY.js";import{a as Mt}from"./chunk-WZDE3RYP.js";import{a as z}from"./chunk-DQQ63PYM.js";import"./chunk-DEPHB2WM.js";import{a as Wt}from"./chunk-N4VJKXZS.js";import{a as X}from"./chunk-OFUUQVMR.js";import"./chunk-4IW2T6GF.js";import{b as U,g as bt,h as At}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as P,b as wt,c as lt,d as pt}from"./chunk-64RSHJUE.js";import{a as f}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as m}from"./chunk-LEYMRMBK.js";import{e as w}from"./chunk-VTAIKJXX.js";function T(){m.throwInstantiationError()}Object.defineProperties(T.prototype,{errorEvent:{get:m.throwInstantiationError},credit:{get:m.throwInstantiationError},tilingScheme:{get:m.throwInstantiationError},hasWaterMask:{get:m.throwInstantiationError},hasVertexNormals:{get:m.throwInstantiationError},availability:{get:m.throwInstantiationError}});var Ot=[];T.getRegularGridIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=Ot[t];w(o)||(Ot[t]=o=[]);let e=o[n];return w(e)||(t*n<f.SIXTY_FOUR_KILOBYTES?e=o[n]=new Uint16Array((t-1)*(n-1)*6):e=o[n]=new Uint32Array((t-1)*(n-1)*6),Pt(t,n,e,0)),e};var Gt=[];T.getRegularGridIndicesAndEdgeIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=Gt[t];w(o)||(Gt[t]=o=[]);let e=o[n];if(!w(e)){let r=T.getRegularGridIndices(t,n),s=Lt(t,n),i=s.westIndicesSouthToNorth,c=s.southIndicesEastToWest,h=s.eastIndicesNorthToSouth,E=s.northIndicesWestToEast;e=o[n]={indices:r,westIndicesSouthToNorth:i,southIndicesEastToWest:c,eastIndicesNorthToSouth:h,northIndicesWestToEast:E}}return e};var kt=[];T.getRegularGridAndSkirtIndicesAndEdgeIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=kt[t];w(o)||(kt[t]=o=[]);let e=o[n];if(!w(e)){let r=t*n,s=(t-1)*(n-1)*6,i=t*2+n*2,c=Math.max(0,i-4)*6,h=r+i,E=s+c,g=Lt(t,n),d=g.westIndicesSouthToNorth,p=g.southIndicesEastToWest,b=g.eastIndicesNorthToSouth,L=g.northIndicesWestToEast,N=X.createTypedArray(h,E);Pt(t,n,N,0),T.addSkirtIndices(d,p,b,L,r,N,s),e=o[n]={indices:N,westIndicesSouthToNorth:d,southIndicesEastToWest:p,eastIndicesNorthToSouth:b,northIndicesWestToEast:L,indexCountWithoutSkirts:s}}return e};T.addSkirtIndices=function(t,n,o,e,r,s,i){let c=r;i=Z(t,c,s,i),c+=t.length,i=Z(n,c,s,i),c+=n.length,i=Z(o,c,s,i),c+=o.length,Z(e,c,s,i)};function Lt(t,n){let o=new Array(n),e=new Array(t),r=new Array(n),s=new Array(t),i;for(i=0;i<t;++i)s[i]=i,e[i]=t*n-1-i;for(i=0;i<n;++i)r[i]=(i+1)*t-1,o[i]=(n-i-1)*t;return{westIndicesSouthToNorth:o,southIndicesEastToWest:e,eastIndicesNorthToSouth:r,northIndicesWestToEast:s}}function Pt(t,n,o,e){let r=0;for(let s=0;s<n-1;++s){for(let i=0;i<t-1;++i){let c=r,h=c+t,E=h+1,g=c+1;o[e++]=c,o[e++]=h,o[e++]=g,o[e++]=g,o[e++]=h,o[e++]=E,++r}++r}}function Z(t,n,o,e){let r=t[0],s=t.length;for(let i=1;i<s;++i){let c=t[i];o[e++]=r,o[e++]=c,o[e++]=n,o[e++]=n,o[e++]=c,o[e++]=n+1,r=c,++n}return e}T.heightmapTerrainQuality=.25;T.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(t,n,o){return t.maximumRadius*2*Math.PI*T.heightmapTerrainQuality/(n*o)};T.prototype.requestTileGeometry=m.throwInstantiationError;T.prototype.getLevelMaximumGeometricError=m.throwInstantiationError;T.prototype.getTileDataAvailable=m.throwInstantiationError;T.prototype.loadTileDataAvailability=m.throwInstantiationError;var Vt=T;var ht=32767,D=new P,Xt=new P,Zt=new P,u=new wt,Y=new lt;function Jt(t,n){let o=t.quantizedVertices,e=o.length/3,r=t.octEncodedNormals,s=t.westIndices.length+t.eastIndices.length+t.southIndices.length+t.northIndices.length,i=t.includeWebMercatorT,c=t.exaggeration,h=t.exaggerationRelativeHeight,g=c!==1,d=At.clone(t.rectangle),p=d.west,b=d.south,L=d.east,N=d.north,I=pt.clone(t.ellipsoid),y=t.minimumHeight,v=t.maximumHeight,S=t.relativeToCenter,_=bt.eastNorthUpToFixedFrame(S,I),O=U.inverseTransformation(_,new U),G,A;i&&(G=z.geodeticLatitudeToMercatorAngle(b),A=1/(z.geodeticLatitudeToMercatorAngle(N)-G));let j=o.subarray(0,e),q=o.subarray(e,2*e),Q=o.subarray(e*2,3*e),R=w(r),l=new Array(e),M=new Array(e),et=new Array(e),It=i?new Array(e):[],gt=g?new Array(e):[],W=Xt;W.x=Number.POSITIVE_INFINITY,W.y=Number.POSITIVE_INFINITY,W.z=Number.POSITIVE_INFINITY;let C=Zt;C.x=Number.NEGATIVE_INFINITY,C.y=Number.NEGATIVE_INFINITY,C.z=Number.NEGATIVE_INFINITY;let ot=Number.POSITIVE_INFINITY,nt=Number.NEGATIVE_INFINITY,it=Number.POSITIVE_INFINITY,rt=Number.NEGATIVE_INFINITY;for(let a=0;a<e;++a){let x=j[a],Kt=q[a],St=x/ht,xt=Kt/ht,yt=f.lerp(y,v,Q[a]/ht);u.longitude=f.lerp(p,L,St),u.latitude=f.lerp(b,N,xt),u.height=yt,ot=Math.min(u.longitude,ot),nt=Math.max(u.longitude,nt),it=Math.min(u.latitude,it),rt=Math.max(u.latitude,rt);let dt=I.cartographicToCartesian(u);l[a]=new lt(St,xt),M[a]=yt,et[a]=dt,i&&(It[a]=(z.geodeticLatitudeToMercatorAngle(u.latitude)-G)*A),g&&(gt[a]=I.geodeticSurfaceNormal(dt)),U.multiplyByPoint(O,dt,D),P.minimumByComponent(D,W,W),P.maximumByComponent(D,C,C)}let st=tt(t.westIndices,function(a,x){return l[a].y-l[x].y}),ct=tt(t.eastIndices,function(a,x){return l[x].y-l[a].y}),at=tt(t.southIndices,function(a,x){return l[x].x-l[a].x}),ut=tt(t.northIndices,function(a,x){return l[a].x-l[x].x}),mt;y<0&&(mt=new Ct(I).computeHorizonCullingPointPossiblyUnderEllipsoid(S,et,y));let k=y;k=Math.min(k,J(t.westIndices,t.westSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.southIndices,t.southSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.eastIndices,t.eastSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.northIndices,t.northSkirtHeight,M,l,d,I,O,W,C));let Ft=new Wt(W,C,S),V=new vt(S,Ft,k,v,_,R,i,g,c,h),F=V.stride,Bt=e*F+s*F,B=new Float32Array(Bt),ft=0;for(let a=0;a<e;++a){if(R){let x=a*2;Y.x=r[x],Y.y=r[x+1]}ft=V.encode(B,ft,et[a],l[a],M[a],Y,It[a],gt[a])}let Ht=Math.max(0,(s-4)*2),_t=t.indices.length+Ht*3,K=X.createTypedArray(e+s,_t);K.set(t.indices,0);let Tt=1e-4,Et=(nt-ot)*Tt,Nt=(rt-it)*Tt,Yt=-Et,Rt=0,Ut=Et,zt=0,Dt=0,jt=Nt,qt=0,Qt=-Nt,H=e*F;return $(B,H,st,V,M,l,r,I,d,t.westSkirtHeight,G,A,Yt,Rt),H+=t.westIndices.length*F,$(B,H,at,V,M,l,r,I,d,t.southSkirtHeight,G,A,qt,Qt),H+=t.southIndices.length*F,$(B,H,ct,V,M,l,r,I,d,t.eastSkirtHeight,G,A,Ut,zt),H+=t.eastIndices.length*F,$(B,H,ut,V,M,l,r,I,d,t.northSkirtHeight,G,A,Dt,jt),Vt.addSkirtIndices(st,at,ct,ut,e,K,t.indices.length),n.push(B.buffer,K.buffer),{vertices:B.buffer,indices:K.buffer,westIndicesSouthToNorth:st,southIndicesEastToWest:at,eastIndicesNorthToSouth:ct,northIndicesWestToEast:ut,vertexStride:F,center:S,minimumHeight:y,maximumHeight:v,occludeePointInScaledSpace:mt,encoding:V,indexCountWithoutSkirts:t.indices.length}}function J(t,n,o,e,r,s,i,c,h){let E=Number.POSITIVE_INFINITY,g=r.north,d=r.south,p=r.east,b=r.west;p<b&&(p+=f.TWO_PI);let L=t.length;for(let N=0;N<L;++N){let I=t[N],y=o[I],v=e[I];u.longitude=f.lerp(b,p,v.x),u.latitude=f.lerp(d,g,v.y),u.height=y-n;let S=s.cartographicToCartesian(u,D);U.multiplyByPoint(i,S,S),P.minimumByComponent(S,c,c),P.maximumByComponent(S,h,h),E=Math.min(E,u.height)}return E}function $(t,n,o,e,r,s,i,c,h,E,g,d,p,b){let L=w(i),N=h.north,I=h.south,y=h.east,v=h.west;y<v&&(y+=f.TWO_PI);let S=o.length;for(let _=0;_<S;++_){let O=o[_],G=r[O],A=s[O];u.longitude=f.lerp(v,y,A.x)+p,u.latitude=f.lerp(I,N,A.y)+b,u.height=G-E;let j=c.cartographicToCartesian(u,D);if(L){let R=O*2;Y.x=i[R],Y.y=i[R+1]}let q;e.hasWebMercatorT&&(q=(z.geodeticLatitudeToMercatorAngle(u.latitude)-g)*d);let Q;e.hasGeodeticSurfaceNormals&&(Q=c.geodeticSurfaceNormal(j)),n=e.encode(t,n,j,A,u.height,Y,q,Q)}}function tt(t,n){let o;return typeof t.slice=="function"&&(o=t.slice(),typeof o.sort!="function"&&(o=void 0)),w(o)||(o=Array.prototype.slice.call(t)),o.sort(n),o}var Se=Mt(Jt);export{Se as default}; diff --git a/public/Cesium/Workers/createWallGeometry.js b/public/Cesium/Workers/createWallGeometry.js new file mode 100644 index 000000000..2673d2537 --- /dev/null +++ b/public/Cesium/Workers/createWallGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as nt}from"./chunk-NB3ML6JO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as w}from"./chunk-CYCB63OH.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as ot}from"./chunk-OFUUQVMR.js";import{a as it}from"./chunk-A56XVLQR.js";import{b as tt,c as et,d as R}from"./chunk-RCV6KWXS.js";import{d as I}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as N}from"./chunk-AU7IKHOH.js";import{a as s,d as l,f as K}from"./chunk-64RSHJUE.js";import{a as V}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as y}from"./chunk-LEYMRMBK.js";import{e as r}from"./chunk-VTAIKJXX.js";var Q=new s,J=new s,lt=new s,st=new s,pt=new s,ut=new s,ft=new s;function E(t){t=t??K.EMPTY_OBJECT;let e=t.positions,o=t.maximumHeights,n=t.minimumHeights;if(!r(e))throw new y("options.positions is required.");if(r(o)&&o.length!==e.length)throw new y("options.positions and options.maximumHeights must have the same length.");if(r(n)&&n.length!==e.length)throw new y("options.positions and options.minimumHeights must have the same length.");let i=t.vertexFormat??w.DEFAULT,c=t.granularity??V.RADIANS_PER_DEGREE,a=t.ellipsoid??l.default;this._positions=e,this._minimumHeights=n,this._maximumHeights=o,this._vertexFormat=w.clone(i),this._granularity=c,this._ellipsoid=l.clone(a),this._workerName="createWallGeometry";let m=1+e.length*s.packedLength+2;r(n)&&(m+=n.length),r(o)&&(m+=o.length),this.packedLength=m+l.packedLength+w.packedLength+1}E.pack=function(t,e,o){if(!r(t))throw new y("value is required");if(!r(e))throw new y("array is required");o=o??0;let n,i=t._positions,c=i.length;for(e[o++]=c,n=0;n<c;++n,o+=s.packedLength)s.pack(i[n],e,o);let a=t._minimumHeights;if(c=r(a)?a.length:0,e[o++]=c,r(a))for(n=0;n<c;++n)e[o++]=a[n];let m=t._maximumHeights;if(c=r(m)?m.length:0,e[o++]=c,r(m))for(n=0;n<c;++n)e[o++]=m[n];return l.pack(t._ellipsoid,e,o),o+=l.packedLength,w.pack(t._vertexFormat,e,o),o+=w.packedLength,e[o]=t._granularity,e};var mt=l.clone(l.UNIT_SPHERE),rt=new w,U={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:mt,vertexFormat:rt,granularity:void 0};E.unpack=function(t,e,o){if(!r(t))throw new y("array is required");e=e??0;let n,i=t[e++],c=new Array(i);for(n=0;n<i;++n,e+=s.packedLength)c[n]=s.unpack(t,e);i=t[e++];let a;if(i>0)for(a=new Array(i),n=0;n<i;++n)a[n]=t[e++];i=t[e++];let m;if(i>0)for(m=new Array(i),n=0;n<i;++n)m[n]=t[e++];let S=l.unpack(t,e,mt);e+=l.packedLength;let _=w.unpack(t,e,rt);e+=w.packedLength;let f=t[e];return r(o)?(o._positions=c,o._minimumHeights=a,o._maximumHeights=m,o._ellipsoid=l.clone(S,o._ellipsoid),o._vertexFormat=w.clone(_,o._vertexFormat),o._granularity=f,o):(U.positions=c,U.minimumHeights=a,U.maximumHeights=m,U.granularity=f,new E(U))};E.fromConstantHeights=function(t){t=t??K.EMPTY_OBJECT;let e=t.positions;if(!r(e))throw new y("options.positions is required.");let o,n,i=t.minimumHeight,c=t.maximumHeight,a=r(i),m=r(c);if(a||m){let _=e.length;o=a?new Array(_):void 0,n=m?new Array(_):void 0;for(let f=0;f<_;++f)a&&(o[f]=i),m&&(n[f]=c)}let S={positions:e,maximumHeights:n,minimumHeights:o,ellipsoid:t.ellipsoid,vertexFormat:t.vertexFormat};return new E(S)};E.createGeometry=function(t){let e=t._positions,o=t._minimumHeights,n=t._maximumHeights,i=t._vertexFormat,c=t._granularity,a=t._ellipsoid,m=nt.computePositions(a,e,n,o,c,!0);if(!r(m))return;let S=m.bottomPositions,_=m.topPositions,f=m.numCorners,q=_.length,A=q*2,h=i.position?new Float64Array(A):void 0,P=i.normal?new Float32Array(A):void 0,b=i.tangent?new Float32Array(A):void 0,x=i.bitangent?new Float32Array(A):void 0,B=i.st?new Float32Array(A/3*2):void 0,k=0,v=0,T=0,C=0,W=0,g=ft,d=ut,H=pt,Y=!0;q/=3;let p,Z=0,ct=1/(q-f-1);for(p=0;p<q;++p){let L=p*3,u=s.fromArray(_,L,Q),M=s.fromArray(S,L,J);if(i.position&&(h[k++]=M.x,h[k++]=M.y,h[k++]=M.z,h[k++]=u.x,h[k++]=u.y,h[k++]=u.z),i.st&&(B[W++]=Z,B[W++]=0,B[W++]=Z,B[W++]=1),i.normal||i.tangent||i.bitangent){let O=s.clone(s.ZERO,st),j=s.subtract(u,a.geodeticSurfaceNormal(u,J),J);if(p+1<q&&(O=s.fromArray(_,L+3,st)),Y){let G=s.subtract(O,u,lt),at=s.subtract(j,u,Q);g=s.normalize(s.cross(at,G,g),g),Y=!1}s.equalsEpsilon(u,O,V.EPSILON10)?Y=!0:(Z+=ct,i.tangent&&(d=s.normalize(s.subtract(O,u,d),d)),i.bitangent&&(H=s.normalize(s.cross(g,d,H),H))),i.normal&&(P[v++]=g.x,P[v++]=g.y,P[v++]=g.z,P[v++]=g.x,P[v++]=g.y,P[v++]=g.z),i.tangent&&(b[C++]=d.x,b[C++]=d.y,b[C++]=d.z,b[C++]=d.x,b[C++]=d.y,b[C++]=d.z),i.bitangent&&(x[T++]=H.x,x[T++]=H.y,x[T++]=H.z,x[T++]=H.x,x[T++]=H.y,x[T++]=H.z)}}let z=new it;i.position&&(z.position=new R({componentDatatype:N.DOUBLE,componentsPerAttribute:3,values:h})),i.normal&&(z.normal=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:P})),i.tangent&&(z.tangent=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:b})),i.bitangent&&(z.bitangent=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:x})),i.st&&(z.st=new R({componentDatatype:N.FLOAT,componentsPerAttribute:2,values:B}));let $=A/3;A-=6*(f+1);let F=ot.createTypedArray($,A),D=0;for(p=0;p<$-2;p+=2){let L=p,u=p+2,M=s.fromArray(h,L*3,Q),O=s.fromArray(h,u*3,J);if(s.equalsEpsilon(M,O,V.EPSILON10))continue;let j=p+1,G=p+3;F[D++]=j,F[D++]=L,F[D++]=G,F[D++]=G,F[D++]=L,F[D++]=u}return new et({attributes:z,indices:F,primitiveType:tt.TRIANGLES,boundingSphere:new I.fromVertices(h)})};var X=E;function ht(t,e){return r(e)&&(t=X.unpack(t,e)),t._ellipsoid=l.clone(t._ellipsoid),X.createGeometry(t)}var Ot=ht;export{Ot as default}; diff --git a/public/Cesium/Workers/createWallOutlineGeometry.js b/public/Cesium/Workers/createWallOutlineGeometry.js new file mode 100644 index 000000000..09872e1f8 --- /dev/null +++ b/public/Cesium/Workers/createWallOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z}from"./chunk-NB3ML6JO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as W}from"./chunk-OFUUQVMR.js";import{a as N}from"./chunk-A56XVLQR.js";import{b as R,c as S,d as M}from"./chunk-RCV6KWXS.js";import{d as D}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as q}from"./chunk-AU7IKHOH.js";import{a as p,d as l,f as O}from"./chunk-64RSHJUE.js";import{a as b}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as H}from"./chunk-LEYMRMBK.js";import{e as m}from"./chunk-VTAIKJXX.js";var B=new p,U=new p;function _(i){i=i??O.EMPTY_OBJECT;let t=i.positions,e=i.maximumHeights,o=i.minimumHeights;if(!m(t))throw new H("options.positions is required.");if(m(e)&&e.length!==t.length)throw new H("options.positions and options.maximumHeights must have the same length.");if(m(o)&&o.length!==t.length)throw new H("options.positions and options.minimumHeights must have the same length.");let s=i.granularity??b.RADIANS_PER_DEGREE,r=i.ellipsoid??l.default;this._positions=t,this._minimumHeights=o,this._maximumHeights=e,this._granularity=s,this._ellipsoid=l.clone(r),this._workerName="createWallOutlineGeometry";let n=1+t.length*p.packedLength+2;m(o)&&(n+=o.length),m(e)&&(n+=e.length),this.packedLength=n+l.packedLength+1}_.pack=function(i,t,e){if(!m(i))throw new H("value is required");if(!m(t))throw new H("array is required");e=e??0;let o,s=i._positions,r=s.length;for(t[e++]=r,o=0;o<r;++o,e+=p.packedLength)p.pack(s[o],t,e);let n=i._minimumHeights;if(r=m(n)?n.length:0,t[e++]=r,m(n))for(o=0;o<r;++o)t[e++]=n[o];let c=i._maximumHeights;if(r=m(c)?c.length:0,t[e++]=r,m(c))for(o=0;o<r;++o)t[e++]=c[o];return l.pack(i._ellipsoid,t,e),e+=l.packedLength,t[e]=i._granularity,t};var G=l.clone(l.UNIT_SPHERE),L={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:G,granularity:void 0};_.unpack=function(i,t,e){if(!m(i))throw new H("array is required");t=t??0;let o,s=i[t++],r=new Array(s);for(o=0;o<s;++o,t+=p.packedLength)r[o]=p.unpack(i,t);s=i[t++];let n;if(s>0)for(n=new Array(s),o=0;o<s;++o)n[o]=i[t++];s=i[t++];let c;if(s>0)for(c=new Array(s),o=0;o<s;++o)c[o]=i[t++];let w=l.unpack(i,t,G);t+=l.packedLength;let u=i[t];return m(e)?(e._positions=r,e._minimumHeights=n,e._maximumHeights=c,e._ellipsoid=l.clone(w,e._ellipsoid),e._granularity=u,e):(L.positions=r,L.minimumHeights=n,L.maximumHeights=c,L.granularity=u,new _(L))};_.fromConstantHeights=function(i){i=i??O.EMPTY_OBJECT;let t=i.positions;if(!m(t))throw new H("options.positions is required.");let e,o,s=i.minimumHeight,r=i.maximumHeight,n=m(s),c=m(r);if(n||c){let u=t.length;e=n?new Array(u):void 0,o=c?new Array(u):void 0;for(let g=0;g<u;++g)n&&(e[g]=s),c&&(o[g]=r)}let w={positions:t,maximumHeights:o,minimumHeights:e,ellipsoid:i.ellipsoid};return new _(w)};_.createGeometry=function(i){let t=i._positions,e=i._minimumHeights,o=i._maximumHeights,s=i._granularity,r=i._ellipsoid,n=z.computePositions(r,t,o,e,s,!1);if(!m(n))return;let c=n.bottomPositions,w=n.topPositions,u=w.length,g=u*2,f=new Float64Array(g),E=0;u/=3;let h;for(h=0;h<u;++h){let y=h*3,A=p.fromArray(w,y,B),k=p.fromArray(c,y,U);f[E++]=k.x,f[E++]=k.y,f[E++]=k.z,f[E++]=A.x,f[E++]=A.y,f[E++]=A.z}let v=new N({position:new M({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:f})}),P=g/3;g=2*P-4+P;let a=W.createTypedArray(P,g),d=0;for(h=0;h<P-2;h+=2){let y=h,A=h+2,k=p.fromArray(f,y*3,B),x=p.fromArray(f,A*3,U);if(p.equalsEpsilon(k,x,b.EPSILON10))continue;let T=h+1,F=h+3;a[d++]=T,a[d++]=y,a[d++]=T,a[d++]=F,a[d++]=y,a[d++]=A}return a[d++]=P-2,a[d++]=P-1,new S({attributes:v,indices:a,primitiveType:R.LINES,boundingSphere:new D.fromVertices(f)})};var C=_;function J(i,t){return m(t)&&(i=C.unpack(i,t)),i._ellipsoid=l.clone(i._ellipsoid),C.createGeometry(i)}var pi=J;export{pi as default}; diff --git a/public/Cesium/Workers/decodeDraco.js b/public/Cesium/Workers/decodeDraco.js new file mode 100644 index 000000000..d8dd26808 --- /dev/null +++ b/public/Cesium/Workers/decodeDraco.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as D}from"./chunk-35SHYARM.js";import{a as I}from"./chunk-WZDE3RYP.js";import{a as m}from"./chunk-OFUUQVMR.js";import{a as w}from"./chunk-AU7IKHOH.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as A}from"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{d as P,e as d}from"./chunk-VTAIKJXX.js";var b=P(D(),1),r;function F(t,n){let o=t.num_points(),a=t.num_faces(),i=new r.DracoInt32Array,e=a*3,s=m.createTypedArray(o,e),u=0;for(let f=0;f<a;++f)n.GetFaceFromMesh(t,f,i),s[u+0]=i.GetValue(0),s[u+1]=i.GetValue(1),s[u+2]=i.GetValue(2),u+=3;return r.destroy(i),{typedArray:s,numberOfIndices:e}}function U(t,n,o,a,i){let e,s;a.quantizationBits<=8?(s=new r.DracoUInt8Array,e=new Uint8Array(i),n.GetAttributeUInt8ForAllPoints(t,o,s)):a.quantizationBits<=16?(s=new r.DracoUInt16Array,e=new Uint16Array(i),n.GetAttributeUInt16ForAllPoints(t,o,s)):(s=new r.DracoFloat32Array,e=new Float32Array(i),n.GetAttributeFloatForAllPoints(t,o,s));for(let u=0;u<i;++u)e[u]=s.GetValue(u);return r.destroy(s),e}function k(t,n,o,a){let i,e;switch(o.data_type()){case 1:case 11:e=new r.DracoInt8Array,i=new Int8Array(a),n.GetAttributeInt8ForAllPoints(t,o,e);break;case 2:e=new r.DracoUInt8Array,i=new Uint8Array(a),n.GetAttributeUInt8ForAllPoints(t,o,e);break;case 3:e=new r.DracoInt16Array,i=new Int16Array(a),n.GetAttributeInt16ForAllPoints(t,o,e);break;case 4:e=new r.DracoUInt16Array,i=new Uint16Array(a),n.GetAttributeUInt16ForAllPoints(t,o,e);break;case 5:case 7:e=new r.DracoInt32Array,i=new Int32Array(a),n.GetAttributeInt32ForAllPoints(t,o,e);break;case 6:case 8:e=new r.DracoUInt32Array,i=new Uint32Array(a),n.GetAttributeUInt32ForAllPoints(t,o,e);break;case 9:case 10:e=new r.DracoFloat32Array,i=new Float32Array(a),n.GetAttributeFloatForAllPoints(t,o,e);break}for(let s=0;s<a;++s)i[s]=e.GetValue(s);return r.destroy(e),i}function p(t,n,o){let a=t.num_points(),i=o.num_components(),e,s=new r.AttributeQuantizationTransform;if(s.InitFromAttribute(o)){let c=new Array(i);for(let y=0;y<i;++y)c[y]=s.min_value(y);e={quantizationBits:s.quantization_bits(),minValues:c,range:s.range(),octEncoded:!1}}r.destroy(s),s=new r.AttributeOctahedronTransform,s.InitFromAttribute(o)&&(e={quantizationBits:s.quantization_bits(),octEncoded:!0}),r.destroy(s);let u=a*i,f;d(e)?f=U(t,n,o,e,u):f=k(t,n,o,u);let l=w.fromTypedArray(f);return{array:f,data:{componentsPerAttribute:i,componentDatatype:l,byteOffset:o.byte_offset(),byteStride:w.getSizeInBytes(l)*i,normalized:o.normalized(),quantization:e}}}function O(t){let n=new r.Decoder;t.dequantizeInShader&&(n.SkipAttributeTransform(r.POSITION),n.SkipAttributeTransform(r.NORMAL));let o=new r.DecoderBuffer;if(o.Init(t.buffer,t.buffer.length),n.GetEncodedGeometryType(o)!==r.POINT_CLOUD)throw new A("Draco geometry type must be POINT_CLOUD.");let i=new r.PointCloud,e=n.DecodeBufferToPointCloud(o,i);if(!e.ok()||i.ptr===0)throw new A(`Error decoding draco point cloud: ${e.error_msg()}`);r.destroy(o);let s={},u=t.properties;for(let f in u)if(u.hasOwnProperty(f)){let l;if(f==="POSITION"||f==="NORMAL"){let c=n.GetAttributeId(i,r[f]);l=n.GetAttribute(i,c)}else{let c=u[f];l=n.GetAttributeByUniqueId(i,c)}s[f]=p(i,n,l)}return r.destroy(i),r.destroy(n),s}function g(t){let n=new r.Decoder;if(t.dequantizeInShader)for(let c=0;c<t.attributesToSkipTransform.length;++c)n.SkipAttributeTransform(r[t.attributesToSkipTransform[c]]);let o=t.bufferView,a=new r.DecoderBuffer;if(a.Init(t.array,o.byteLength),n.GetEncodedGeometryType(a)!==r.TRIANGULAR_MESH)throw new A("Unsupported draco mesh geometry type.");let e=new r.Mesh,s=n.DecodeBufferToMesh(a,e);if(!s.ok()||e.ptr===0)throw new A(`Error decoding draco mesh geometry: ${s.error_msg()}`);r.destroy(a);let u={},f=t.compressedAttributes;for(let c in f)if(f.hasOwnProperty(c)){let y=f[c],T=n.GetAttributeByUniqueId(e,y);u[c]=p(e,n,T)}let l={indexArray:F(e,n),attributeData:u};return r.destroy(e),r.destroy(n),l}async function z(t,n){return d(t.bufferView)?g(t):O(t)}async function G(t,n){let o=t.webAssemblyConfig;return d(o)&&d(o.wasmBinaryFile)?r=await(0,b.default)(o):r=await(0,b.default)(),!0}async function S(t,n){let o=t.webAssemblyConfig;return d(o)?G(t,n):z(t,n)}var h=I(S);export{h as default}; diff --git a/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js b/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js new file mode 100644 index 000000000..dfdcee4f7 --- /dev/null +++ b/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Se}from"./chunk-WZDE3RYP.js";import{a as D}from"./chunk-ED5JPB3S.js";import{b as ae}from"./chunk-LEYMRMBK.js";import{c as R,d as Ot,e as me}from"./chunk-VTAIKJXX.js";var Ie=R((Li,Ae)=>{"use strict";var zt=(t,i,e,r)=>{let s=t&65535|0,n=t>>>16&65535|0,c=0;for(;e!==0;){c=e>2e3?2e3:e,e-=c;do s=s+i[r++]|0,n=n+s|0;while(--c);s%=65521,n%=65521}return s|n<<16|0};Ae.exports=zt});var De=R((Pi,Re)=>{"use strict";var Ht=()=>{let t,i=[];for(var e=0;e<256;e++){t=e;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t}return i},Ft=new Uint32Array(Ht()),Vt=(t,i,e,r)=>{let s=Ft,n=r+e;t^=-1;for(let c=r;c<n;c++)t=t>>>8^s[(t^i[c])&255];return t^-1};Re.exports=Vt});var Oe=R((zi,Ue)=>{"use strict";Ue.exports=function(i,e){let r,s,n,c,f,_,a,o,v,w,l,u,I,p,x,T,g,d,E,A,h,S,k,b,m=i.state;r=i.next_in,k=i.input,s=r+(i.avail_in-5),n=i.next_out,b=i.output,c=n-(e-i.avail_out),f=n+(i.avail_out-257),_=m.dmax,a=m.wsize,o=m.whave,v=m.wnext,w=m.window,l=m.hold,u=m.bits,I=m.lencode,p=m.distcode,x=(1<<m.lenbits)-1,T=(1<<m.distbits)-1;e:do{u<15&&(l+=k[r++]<<u,u+=8,l+=k[r++]<<u,u+=8),g=I[l&x];t:for(;;){if(d=g>>>24,l>>>=d,u-=d,d=g>>>16&255,d===0)b[n++]=g&65535;else if(d&16){E=g&65535,d&=15,d&&(u<d&&(l+=k[r++]<<u,u+=8),E+=l&(1<<d)-1,l>>>=d,u-=d),u<15&&(l+=k[r++]<<u,u+=8,l+=k[r++]<<u,u+=8),g=p[l&T];i:for(;;){if(d=g>>>24,l>>>=d,u-=d,d=g>>>16&255,d&16){if(A=g&65535,d&=15,u<d&&(l+=k[r++]<<u,u+=8,u<d&&(l+=k[r++]<<u,u+=8)),A+=l&(1<<d)-1,A>_){i.msg="invalid distance too far back",m.mode=16209;break e}if(l>>>=d,u-=d,d=n-c,A>d){if(d=A-d,d>o&&m.sane){i.msg="invalid distance too far back",m.mode=16209;break e}if(h=0,S=w,v===0){if(h+=a-d,d<E){E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}}else if(v<d){if(h+=a+v-d,d-=v,d<E){E-=d;do b[n++]=w[h++];while(--d);if(h=0,v<E){d=v,E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}}}else if(h+=v-d,d<E){E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}for(;E>2;)b[n++]=S[h++],b[n++]=S[h++],b[n++]=S[h++],E-=3;E&&(b[n++]=S[h++],E>1&&(b[n++]=S[h++]))}else{h=n-A;do b[n++]=b[h++],b[n++]=b[h++],b[n++]=b[h++],E-=3;while(E>2);E&&(b[n++]=b[h++],E>1&&(b[n++]=b[h++]))}}else if((d&64)===0){g=p[(g&65535)+(l&(1<<d)-1)];continue i}else{i.msg="invalid distance code",m.mode=16209;break e}break}}else if((d&64)===0){g=I[(g&65535)+(l&(1<<d)-1)];continue t}else if(d&32){m.mode=16191;break e}else{i.msg="invalid literal/length code",m.mode=16209;break e}break}}while(r<s&&n<f);E=u>>3,r-=E,u-=E<<3,l&=(1<<u)-1,i.next_in=r,i.next_out=n,i.avail_in=r<s?5+(s-r):5-(r-s),i.avail_out=n<f?257+(f-n):257-(n-f),m.hold=l,m.bits=u}});var Me=R((Hi,Ne)=>{"use strict";var Gt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Yt=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Xt=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),qt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Kt=(t,i,e,r,s,n,c,f)=>{let _=f.bits,a=0,o=0,v=0,w=0,l=0,u=0,I=0,p=0,x=0,T=0,g,d,E,A,h,S=null,k,b=new Uint16Array(16),m=new Uint16Array(16),L=null,Ee,W,Q;for(a=0;a<=15;a++)b[a]=0;for(o=0;o<r;o++)b[i[e+o]]++;for(l=_,w=15;w>=1&&b[w]===0;w--);if(l>w&&(l=w),w===0)return s[n++]=1<<24|64<<16|0,s[n++]=1<<24|64<<16|0,f.bits=1,0;for(v=1;v<w&&b[v]===0;v++);for(l<v&&(l=v),p=1,a=1;a<=15;a++)if(p<<=1,p-=b[a],p<0)return-1;if(p>0&&(t===0||w!==1))return-1;for(m[1]=0,a=1;a<15;a++)m[a+1]=m[a]+b[a];for(o=0;o<r;o++)i[e+o]!==0&&(c[m[i[e+o]]++]=o);if(t===0?(S=L=c,k=20):t===1?(S=Gt,L=Yt,k=257):(S=Xt,L=qt,k=0),T=0,o=0,a=v,h=n,u=l,I=0,E=-1,x=1<<l,A=x-1,t===1&&x>852||t===2&&x>592)return 1;for(;;){Ee=a-I,c[o]+1<k?(W=0,Q=c[o]):c[o]>=k?(W=L[c[o]-k],Q=S[c[o]-k]):(W=96,Q=0),g=1<<a-I,d=1<<u,v=d;do d-=g,s[h+(T>>I)+d]=Ee<<24|W<<16|Q|0;while(d!==0);for(g=1<<a-1;T&g;)g>>=1;if(g!==0?(T&=g-1,T+=g):T=0,o++,--b[a]===0){if(a===w)break;a=i[e+c[o]]}if(a>l&&(T&A)!==E){for(I===0&&(I=l),h+=v,u=a-I,p=1<<u;u+I<w&&(p-=b[u+I],!(p<=0));)u++,p<<=1;if(x+=1<<u,t===1&&x>852||t===2&&x>592)return 1;E=T&A,s[E]=l<<24|u<<16|h-n|0}}return T!==0&&(s[h+T]=a-I<<24|64<<16|0),f.bits=l,0};Ne.exports=Kt});var J=R((Fi,Ze)=>{"use strict";Ze.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var bt=R((Vi,O)=>{"use strict";var he=Ie(),M=De(),jt=Oe(),X=Me(),Wt=0,st=1,ft=2,{Z_FINISH:Be,Z_BLOCK:Qt,Z_TREES:$,Z_OK:P,Z_STREAM_END:Jt,Z_NEED_DICT:$t,Z_STREAM_ERROR:U,Z_DATA_ERROR:lt,Z_MEM_ERROR:ue,Z_BUF_ERROR:ei,Z_DEFLATED:Ce}=J(),ne=16180,Le=16181,Pe=16182,ze=16183,He=16184,Fe=16185,Ve=16186,Ge=16187,Ye=16188,Xe=16189,ie=16190,Z=16191,se=16192,qe=16193,fe=16194,Ke=16195,je=16196,We=16197,Qe=16198,ee=16199,te=16200,Je=16201,$e=16202,et=16203,tt=16204,it=16205,le=16206,nt=16207,rt=16208,y=16209,we=16210,ct=16211,ti=852,ii=592,ni=15,ri=ni,at=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function ai(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var z=t=>{if(!t)return 1;let i=t.state;return!i||i.strm!==t||i.mode<ne||i.mode>ct?1:0},dt=t=>{if(z(t))return U;let i=t.state;return t.total_in=t.total_out=i.total=0,t.msg="",i.wrap&&(t.adler=i.wrap&1),i.mode=ne,i.last=0,i.havedict=0,i.flags=-1,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(ti),i.distcode=i.distdyn=new Int32Array(ii),i.sane=1,i.back=-1,P},ht=t=>{if(z(t))return U;let i=t.state;return i.wsize=0,i.whave=0,i.wnext=0,dt(t)},ut=(t,i)=>{let e;if(z(t))return U;let r=t.state;return i<0?(e=0,i=-i):(e=(i>>4)+5,i<48&&(i&=15)),i&&(i<8||i>15)?U:(r.window!==null&&r.wbits!==i&&(r.window=null),r.wrap=e,r.wbits=i,ht(t))},wt=(t,i)=>{if(!t)return U;let e=new ai;t.state=e,e.strm=t,e.window=null,e.mode=ne;let r=ut(t,i);return r!==P&&(t.state=null),r},oi=t=>wt(t,ri),ot=!0,ce,de,si=t=>{if(ot){ce=new Int32Array(512),de=new Int32Array(32);let i=0;for(;i<144;)t.lens[i++]=8;for(;i<256;)t.lens[i++]=9;for(;i<280;)t.lens[i++]=7;for(;i<288;)t.lens[i++]=8;for(X(st,t.lens,0,288,ce,0,t.work,{bits:9}),i=0;i<32;)t.lens[i++]=5;X(ft,t.lens,0,32,de,0,t.work,{bits:5}),ot=!1}t.lencode=ce,t.lenbits=9,t.distcode=de,t.distbits=5},xt=(t,i,e,r)=>{let s,n=t.state;return n.window===null&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new Uint8Array(n.wsize)),r>=n.wsize?(n.window.set(i.subarray(e-n.wsize,e),0),n.wnext=0,n.whave=n.wsize):(s=n.wsize-n.wnext,s>r&&(s=r),n.window.set(i.subarray(e-r,e-r+s),n.wnext),r-=s,r?(n.window.set(i.subarray(e-r,e),0),n.wnext=r,n.whave=n.wsize):(n.wnext+=s,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=s))),0},fi=(t,i)=>{let e,r,s,n,c,f,_,a,o,v,w,l,u,I,p=0,x,T,g,d,E,A,h,S,k=new Uint8Array(4),b,m,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(z(t)||!t.output||!t.input&&t.avail_in!==0)return U;e=t.state,e.mode===Z&&(e.mode=se),c=t.next_out,s=t.output,_=t.avail_out,n=t.next_in,r=t.input,f=t.avail_in,a=e.hold,o=e.bits,v=f,w=_,S=P;e:for(;;)switch(e.mode){case ne:if(e.wrap===0){e.mode=se;break}for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&2&&a===35615){e.wbits===0&&(e.wbits=15),e.check=0,k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0),a=0,o=0,e.mode=Le;break}if(e.head&&(e.head.done=!1),!(e.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",e.mode=y;break}if((a&15)!==Ce){t.msg="unknown compression method",e.mode=y;break}if(a>>>=4,o-=4,h=(a&15)+8,e.wbits===0&&(e.wbits=h),h>15||h>e.wbits){t.msg="invalid window size",e.mode=y;break}e.dmax=1<<e.wbits,e.flags=0,t.adler=e.check=1,e.mode=a&512?Xe:Z,a=0,o=0;break;case Le:for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.flags=a,(e.flags&255)!==Ce){t.msg="unknown compression method",e.mode=y;break}if(e.flags&57344){t.msg="unknown header flags set",e.mode=y;break}e.head&&(e.head.text=a>>8&1),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0,e.mode=Pe;case Pe:for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.head&&(e.head.time=a),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,k[2]=a>>>16&255,k[3]=a>>>24&255,e.check=M(e.check,k,4,0)),a=0,o=0,e.mode=ze;case ze:for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.head&&(e.head.xflags=a&255,e.head.os=a>>8),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0,e.mode=He;case He:if(e.flags&1024){for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.length=a,e.head&&(e.head.extra_len=a),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0}else e.head&&(e.head.extra=null);e.mode=Fe;case Fe:if(e.flags&1024&&(l=e.length,l>f&&(l=f),l&&(e.head&&(h=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(r.subarray(n,n+l),h)),e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,e.length-=l),e.length))break e;e.length=0,e.mode=Ve;case Ve:if(e.flags&2048){if(f===0)break e;l=0;do h=r[n+l++],e.head&&h&&e.length<65536&&(e.head.name+=String.fromCharCode(h));while(h&&l<f);if(e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,h)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Ge;case Ge:if(e.flags&4096){if(f===0)break e;l=0;do h=r[n+l++],e.head&&h&&e.length<65536&&(e.head.comment+=String.fromCharCode(h));while(h&&l<f);if(e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,h)break e}else e.head&&(e.head.comment=null);e.mode=Ye;case Ye:if(e.flags&512){for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&4&&a!==(e.check&65535)){t.msg="header crc mismatch",e.mode=y;break}a=0,o=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),t.adler=e.check=0,e.mode=Z;break;case Xe:for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}t.adler=e.check=at(a),a=0,o=0,e.mode=ie;case ie:if(e.havedict===0)return t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,$t;t.adler=e.check=1,e.mode=Z;case Z:if(i===Qt||i===$)break e;case se:if(e.last){a>>>=o&7,o-=o&7,e.mode=le;break}for(;o<3;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}switch(e.last=a&1,a>>>=1,o-=1,a&3){case 0:e.mode=qe;break;case 1:if(si(e),e.mode=ee,i===$){a>>>=2,o-=2;break e}break;case 2:e.mode=je;break;case 3:t.msg="invalid block type",e.mode=y}a>>>=2,o-=2;break;case qe:for(a>>>=o&7,o-=o&7;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",e.mode=y;break}if(e.length=a&65535,a=0,o=0,e.mode=fe,i===$)break e;case fe:e.mode=Ke;case Ke:if(l=e.length,l){if(l>f&&(l=f),l>_&&(l=_),l===0)break e;s.set(r.subarray(n,n+l),c),f-=l,n+=l,_-=l,c+=l,e.length-=l;break}e.mode=Z;break;case je:for(;o<14;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.nlen=(a&31)+257,a>>>=5,o-=5,e.ndist=(a&31)+1,a>>>=5,o-=5,e.ncode=(a&15)+4,a>>>=4,o-=4,e.nlen>286||e.ndist>30){t.msg="too many length or distance symbols",e.mode=y;break}e.have=0,e.mode=We;case We:for(;e.have<e.ncode;){for(;o<3;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.lens[L[e.have++]]=a&7,a>>>=3,o-=3}for(;e.have<19;)e.lens[L[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,b={bits:e.lenbits},S=X(Wt,e.lens,0,19,e.lencode,0,e.work,b),e.lenbits=b.bits,S){t.msg="invalid code lengths set",e.mode=y;break}e.have=0,e.mode=Qe;case Qe:for(;e.have<e.nlen+e.ndist;){for(;p=e.lencode[a&(1<<e.lenbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(g<16)a>>>=x,o-=x,e.lens[e.have++]=g;else{if(g===16){for(m=x+2;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(a>>>=x,o-=x,e.have===0){t.msg="invalid bit length repeat",e.mode=y;break}h=e.lens[e.have-1],l=3+(a&3),a>>>=2,o-=2}else if(g===17){for(m=x+3;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=x,o-=x,h=0,l=3+(a&7),a>>>=3,o-=3}else{for(m=x+7;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=x,o-=x,h=0,l=11+(a&127),a>>>=7,o-=7}if(e.have+l>e.nlen+e.ndist){t.msg="invalid bit length repeat",e.mode=y;break}for(;l--;)e.lens[e.have++]=h}}if(e.mode===y)break;if(e.lens[256]===0){t.msg="invalid code -- missing end-of-block",e.mode=y;break}if(e.lenbits=9,b={bits:e.lenbits},S=X(st,e.lens,0,e.nlen,e.lencode,0,e.work,b),e.lenbits=b.bits,S){t.msg="invalid literal/lengths set",e.mode=y;break}if(e.distbits=6,e.distcode=e.distdyn,b={bits:e.distbits},S=X(ft,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,b),e.distbits=b.bits,S){t.msg="invalid distances set",e.mode=y;break}if(e.mode=ee,i===$)break e;case ee:e.mode=te;case te:if(f>=6&&_>=258){t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,jt(t,w),c=t.next_out,s=t.output,_=t.avail_out,n=t.next_in,r=t.input,f=t.avail_in,a=e.hold,o=e.bits,e.mode===Z&&(e.back=-1);break}for(e.back=0;p=e.lencode[a&(1<<e.lenbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(T&&(T&240)===0){for(d=x,E=T,A=g;p=e.lencode[A+((a&(1<<d+E)-1)>>d)],x=p>>>24,T=p>>>16&255,g=p&65535,!(d+x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=d,o-=d,e.back+=d}if(a>>>=x,o-=x,e.back+=x,e.length=g,T===0){e.mode=it;break}if(T&32){e.back=-1,e.mode=Z;break}if(T&64){t.msg="invalid literal/length code",e.mode=y;break}e.extra=T&15,e.mode=Je;case Je:if(e.extra){for(m=e.extra;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.length+=a&(1<<e.extra)-1,a>>>=e.extra,o-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=$e;case $e:for(;p=e.distcode[a&(1<<e.distbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if((T&240)===0){for(d=x,E=T,A=g;p=e.distcode[A+((a&(1<<d+E)-1)>>d)],x=p>>>24,T=p>>>16&255,g=p&65535,!(d+x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=d,o-=d,e.back+=d}if(a>>>=x,o-=x,e.back+=x,T&64){t.msg="invalid distance code",e.mode=y;break}e.offset=g,e.extra=T&15,e.mode=et;case et:if(e.extra){for(m=e.extra;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.offset+=a&(1<<e.extra)-1,a>>>=e.extra,o-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){t.msg="invalid distance too far back",e.mode=y;break}e.mode=tt;case tt:if(_===0)break e;if(l=w-_,e.offset>l){if(l=e.offset-l,l>e.whave&&e.sane){t.msg="invalid distance too far back",e.mode=y;break}l>e.wnext?(l-=e.wnext,u=e.wsize-l):u=e.wnext-l,l>e.length&&(l=e.length),I=e.window}else I=s,u=c-e.offset,l=e.length;l>_&&(l=_),_-=l,e.length-=l;do s[c++]=I[u++];while(--l);e.length===0&&(e.mode=te);break;case it:if(_===0)break e;s[c++]=e.length,_--,e.mode=te;break;case le:if(e.wrap){for(;o<32;){if(f===0)break e;f--,a|=r[n++]<<o,o+=8}if(w-=_,t.total_out+=w,e.total+=w,e.wrap&4&&w&&(t.adler=e.check=e.flags?M(e.check,s,w,c-w):he(e.check,s,w,c-w)),w=_,e.wrap&4&&(e.flags?a:at(a))!==e.check){t.msg="incorrect data check",e.mode=y;break}a=0,o=0}e.mode=nt;case nt:if(e.wrap&&e.flags){for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&4&&a!==(e.total&4294967295)){t.msg="incorrect length check",e.mode=y;break}a=0,o=0}e.mode=rt;case rt:S=Jt;break e;case y:S=lt;break e;case we:return ue;case ct:default:return U}return t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,(e.wsize||w!==t.avail_out&&e.mode<y&&(e.mode<le||i!==Be))&&xt(t,t.output,t.next_out,w-t.avail_out)?(e.mode=we,ue):(v-=t.avail_in,w-=t.avail_out,t.total_in+=v,t.total_out+=w,e.total+=w,e.wrap&4&&w&&(t.adler=e.check=e.flags?M(e.check,s,w,t.next_out-w):he(e.check,s,w,t.next_out-w)),t.data_type=e.bits+(e.last?64:0)+(e.mode===Z?128:0)+(e.mode===ee||e.mode===fe?256:0),(v===0&&w===0||i===Be)&&S===P&&(S=ei),S)},li=t=>{if(z(t))return U;let i=t.state;return i.window&&(i.window=null),t.state=null,P},ci=(t,i)=>{if(z(t))return U;let e=t.state;return(e.wrap&2)===0?U:(e.head=i,i.done=!1,P)},di=(t,i)=>{let e=i.length,r,s,n;return z(t)||(r=t.state,r.wrap!==0&&r.mode!==ie)?U:r.mode===ie&&(s=1,s=he(s,i,e,0),s!==r.check)?lt:(n=xt(t,i,e,e),n?(r.mode=we,ue):(r.havedict=1,P))};O.exports.inflateReset=ht;O.exports.inflateReset2=ut;O.exports.inflateResetKeep=dt;O.exports.inflateInit=oi;O.exports.inflateInit2=wt;O.exports.inflate=fi;O.exports.inflateEnd=li;O.exports.inflateGetHeader=ci;O.exports.inflateSetDictionary=di;O.exports.inflateInfo="pako inflate (from Nodeca project)"});var _t=R((Gi,xe)=>{"use strict";var hi=(t,i)=>Object.prototype.hasOwnProperty.call(t,i);xe.exports.assign=function(t){let i=Array.prototype.slice.call(arguments,1);for(;i.length;){let e=i.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(let r in e)hi(e,r)&&(t[r]=e[r])}}return t};xe.exports.flattenChunks=t=>{let i=0;for(let r=0,s=t.length;r<s;r++)i+=t[r].length;let e=new Uint8Array(i);for(let r=0,s=0,n=t.length;r<n;r++){let c=t[r];e.set(c,s),s+=c.length}return e}});var kt=R((Yi,re)=>{"use strict";var gt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{gt=!1}var q=new Uint8Array(256);for(let t=0;t<256;t++)q[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;q[254]=q[254]=1;re.exports.string2buf=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let i,e,r,s,n,c=t.length,f=0;for(s=0;s<c;s++)e=t.charCodeAt(s),(e&64512)===55296&&s+1<c&&(r=t.charCodeAt(s+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),s++)),f+=e<128?1:e<2048?2:e<65536?3:4;for(i=new Uint8Array(f),n=0,s=0;n<f;s++)e=t.charCodeAt(s),(e&64512)===55296&&s+1<c&&(r=t.charCodeAt(s+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),s++)),e<128?i[n++]=e:e<2048?(i[n++]=192|e>>>6,i[n++]=128|e&63):e<65536?(i[n++]=224|e>>>12,i[n++]=128|e>>>6&63,i[n++]=128|e&63):(i[n++]=240|e>>>18,i[n++]=128|e>>>12&63,i[n++]=128|e>>>6&63,i[n++]=128|e&63);return i};var ui=(t,i)=>{if(i<65534&&t.subarray&>)return String.fromCharCode.apply(null,t.length===i?t:t.subarray(0,i));let e="";for(let r=0;r<i;r++)e+=String.fromCharCode(t[r]);return e};re.exports.buf2string=(t,i)=>{let e=i||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,i));let r,s,n=new Array(e*2);for(s=0,r=0;r<e;){let c=t[r++];if(c<128){n[s++]=c;continue}let f=q[c];if(f>4){n[s++]=65533,r+=f-1;continue}for(c&=f===2?31:f===3?15:7;f>1&&r<e;)c=c<<6|t[r++]&63,f--;if(f>1){n[s++]=65533;continue}c<65536?n[s++]=c:(c-=65536,n[s++]=55296|c>>10&1023,n[s++]=56320|c&1023)}return ui(n,s)};re.exports.utf8border=(t,i)=>{i=i||t.length,i>t.length&&(i=t.length);let e=i-1;for(;e>=0&&(t[e]&192)===128;)e--;return e<0||e===0?i:e+q[t[e]]>i?e:i}});var Et=R((Xi,pt)=>{"use strict";pt.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var St=R((qi,mt)=>{"use strict";function wi(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}mt.exports=wi});var vt=R((Ki,Tt)=>{"use strict";function xi(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}Tt.exports=xi});var Rt=R((ji,V)=>{"use strict";var B=bt(),At=_t(),ge=kt(),ke=Et(),bi=St(),_i=vt(),It=Object.prototype.toString,{Z_NO_FLUSH:gi,Z_FINISH:ki,Z_OK:K,Z_STREAM_END:be,Z_NEED_DICT:_e,Z_STREAM_ERROR:pi,Z_DATA_ERROR:yt,Z_MEM_ERROR:Ei}=J();function j(t){this.options=At.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});let i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),i.windowBits>=0&&i.windowBits<16&&!(t&&t.windowBits)&&(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(i.windowBits&15)===0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new bi,this.strm.avail_out=0;let e=B.inflateInit2(this.strm,i.windowBits);if(e!==K)throw new Error(ke[e]);if(this.header=new _i,B.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=ge.string2buf(i.dictionary):It.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(e=B.inflateSetDictionary(this.strm,i.dictionary),e!==K)))throw new Error(ke[e])}j.prototype.push=function(t,i){let e=this.strm,r=this.options.chunkSize,s=this.options.dictionary,n,c,f;if(this.ended)return!1;for(i===~~i?c=i:c=i===!0?ki:gi,It.call(t)==="[object ArrayBuffer]"?e.input=new Uint8Array(t):e.input=t,e.next_in=0,e.avail_in=e.input.length;;){for(e.avail_out===0&&(e.output=new Uint8Array(r),e.next_out=0,e.avail_out=r),n=B.inflate(e,c),n===_e&&s&&(n=B.inflateSetDictionary(e,s),n===K?n=B.inflate(e,c):n===yt&&(n=_e));e.avail_in>0&&n===be&&e.state.wrap>0&&t[e.next_in]!==0;)B.inflateReset(e),n=B.inflate(e,c);switch(n){case pi:case yt:case _e:case Ei:return this.onEnd(n),this.ended=!0,!1}if(f=e.avail_out,e.next_out&&(e.avail_out===0||n===be))if(this.options.to==="string"){let _=ge.utf8border(e.output,e.next_out),a=e.next_out-_,o=ge.buf2string(e.output,_);e.next_out=a,e.avail_out=r-a,a&&e.output.set(e.output.subarray(_,_+a),0),this.onData(o)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(!(n===K&&f===0)){if(n===be)return n=B.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(e.avail_in===0)break}}return!0};j.prototype.onData=function(t){this.chunks.push(t)};j.prototype.onEnd=function(t){t===K&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=At.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function pe(t,i){let e=new j(i);if(e.push(t),e.err)throw e.msg||ke[e.err];return e.result}function mi(t,i){return i=i||{},i.raw=!0,pe(t,i)}V.exports.Inflate=j;V.exports.inflate=pe;V.exports.inflateRaw=mi;V.exports.ungzip=pe;V.exports.constants=J()});var Nt=1953029805,Mt=2917034100;function oe(t,i){if(oe.passThroughDataForTesting)return i;ae.typeOf.object("key",t),ae.typeOf.object("data",i);let e=t.byteLength;if(e===0||e%4!==0)throw new D("The length of key must be greater than 0 and a multiple of 4.");let r=new DataView(i),s=r.getUint32(0,!0);if(s===Nt||s===Mt)return i;let n=new DataView(t),c=0,f=i.byteLength,_=f-f%8,a=e,o,v=8;for(;c<_;)for(v=(v+8)%24,o=v;c<_&&o<a;)r.setUint32(c,r.getUint32(c,!0)^n.getUint32(o,!0),!0),r.setUint32(c+4,r.getUint32(c+4,!0)^n.getUint32(o+4,!0),!0),c+=8,o+=24;if(c<f)for(o>=a&&(v=(v+8)%24,o=v);c<f;)r.setUint8(c,r.getUint8(c)^n.getUint8(o)),c++,o++}oe.passThroughDataForTesting=!1;var Te=oe;function Zt(t,i){return(t&i)!==0}var F=Zt;var Bt=[1,2,4,8],ve=15,Ct=16,Lt=64,Pt=128;function N(t,i,e,r,s,n){this._bits=t,this.cnodeVersion=i,this.imageryVersion=e,this.terrainVersion=r,this.imageryProvider=s,this.terrainProvider=n,this.ancestorHasTerrain=!1,this.terrainState=void 0}N.clone=function(t,i){return me(i)?(i._bits=t._bits,i.cnodeVersion=t.cnodeVersion,i.imageryVersion=t.imageryVersion,i.terrainVersion=t.terrainVersion,i.imageryProvider=t.imageryProvider,i.terrainProvider=t.terrainProvider):i=new N(t._bits,t.cnodeVersion,t.imageryVersion,t.terrainVersion,t.imageryProvider,t.terrainProvider),i.ancestorHasTerrain=t.ancestorHasTerrain,i.terrainState=t.terrainState,i};N.prototype.setParent=function(t){this.ancestorHasTerrain=t.ancestorHasTerrain||this.hasTerrain()};N.prototype.hasSubtree=function(){return F(this._bits,Ct)};N.prototype.hasImagery=function(){return F(this._bits,Lt)};N.prototype.hasTerrain=function(){return F(this._bits,Pt)};N.prototype.hasChildren=function(){return F(this._bits,ve)};N.prototype.hasChild=function(t){return F(this._bits,Bt[t])};N.prototype.getChildBitmask=function(){return this._bits&ve};var ye=N;var Ut=Ot(Rt(),1);var G=Uint16Array.BYTES_PER_ELEMENT,H=Int32Array.BYTES_PER_ELEMENT,Y=Uint32Array.BYTES_PER_ELEMENT,C={METADATA:0,TERRAIN:1,DBROOT:2};C.fromString=function(t){if(t==="Metadata")return C.METADATA;if(t==="Terrain")return C.TERRAIN;if(t==="DbRoot")return C.DBROOT};function Si(t,i){let e=C.fromString(t.type),r=t.buffer;Te(t.key,r);let s=Di(r);r=s.buffer;let n=s.length;switch(e){case C.METADATA:return vi(r,n,t.quadKey);case C.TERRAIN:return Ii(r,n,i);case C.DBROOT:return i.push(r),{buffer:r}}}var Ti=32301;function vi(t,i,e){let r=new DataView(t),s=0,n=r.getUint32(s,!0);if(s+=Y,n!==Ti)throw new D("Invalid magic");let c=r.getUint32(s,!0);if(s+=Y,c!==1)throw new D("Invalid data type. Must be 1 for QuadTreePacket");let f=r.getUint32(s,!0);if(s+=Y,f!==2)throw new D("Invalid QuadTreePacket version. Only version 2 is supported.");let _=r.getInt32(s,!0);s+=H;let a=r.getInt32(s,!0);if(s+=H,a!==32)throw new D("Invalid instance size.");let o=r.getInt32(s,!0);s+=H;let v=r.getInt32(s,!0);s+=H;let w=r.getInt32(s,!0);if(s+=H,o!==_*a+s)throw new D("Invalid dataBufferOffset");if(o+v+w!==i)throw new D("Invalid packet offsets");let l=[];for(let g=0;g<_;++g){let d=r.getUint8(s);++s,++s;let E=r.getUint16(s,!0);s+=G;let A=r.getUint16(s,!0);s+=G;let h=r.getUint16(s,!0);s+=G,s+=G,s+=G,s+=H,s+=H,s+=8;let S=r.getUint8(s++),k=r.getUint8(s++);s+=G,l.push(new ye(d,E,A,h,S,k))}let u=[],I=0;function p(g,d,E){let A=!1;if(E===4){if(d.hasSubtree())return;A=!0}for(let h=0;h<4;++h){let S=g+h.toString();if(A)u[S]=null;else if(E<4)if(!d.hasChild(h))u[S]=null;else{if(I===_){console.log("Incorrect number of instances");return}let k=l[I++];u[S]=k,p(S,k,E+1)}}}let x=0,T=l[I++];return e===""?++x:u[e]=T,p(e,T,x),u}var yi=5,Ai=4;function Ii(t,i,e){let r=new DataView(t),s=function(f){for(let _=0;_<Ai;++_){let a=r.getUint32(f,!0);if(f+=Y,f+=a,f>i)throw new D("Malformed terrain packet found.")}return f},n=0,c=[];for(;c.length<yi;){let f=n;n=s(n);let _=t.slice(f,n);e.push(_),c.push(_)}return c}var Dt=1953029805,Ri=2917034100;function Di(t){let i=new DataView(t),e=0,r=i.getUint32(e,!0);if(e+=Y,r!==Dt&&r!==Ri)throw new D("Invalid magic");let s=i.getUint32(e,r===Dt);e+=Y;let n=new Uint8Array(t,e),c=Ut.default.inflate(n);if(c.length!==s)throw new D("Size of packet doesn't match header");return c}var en=Se(Si);export{en as default}; diff --git a/public/Cesium/Workers/decodeI3S.js b/public/Cesium/Workers/decodeI3S.js new file mode 100644 index 000000000..0b86368ba --- /dev/null +++ b/public/Cesium/Workers/decodeI3S.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as mt}from"./chunk-35SHYARM.js";import{a as P}from"./chunk-HMIYSTF6.js";import{a as ht}from"./chunk-WZDE3RYP.js";import{a as ft}from"./chunk-DQQ63PYM.js";import{a as g,b as ot,d as st,e as it}from"./chunk-64RSHJUE.js";import{a as M}from"./chunk-3SSKC3VN.js";import{b as lt}from"./chunk-LEYMRMBK.js";import{d as pt,e as h}from"./chunk-VTAIKJXX.js";var at=pt(mt(),1);function xt(n){return lt.defined("value",n),n<=.04045?n*.07739938080495357:Math.pow((n+.055)*.9478672985781991,2.4)}var k=xt;var ut;function wt(n,t,e,o,a,i){let r=e*(1-n)+o*n,s=a*(1-n)+i*n;return r*(1-t)+s*t}function H(n,t,e,o){let a=n+t*e;return o[a]}function It(n,t,e){let o=e.nativeExtent,a=(n-o.west)/(o.east-o.west)*(e.width-1),i=(t-o.south)/(o.north-o.south)*(e.height-1),r=Math.floor(a),s=Math.floor(i);a-=r,i-=s;let c=r<e.width?r+1:r,u=s<e.height?s+1:s;s=e.height-1-s,u=e.height-1-u;let l=H(r,s,e.width,e.buffer),f=H(c,s,e.width,e.buffer),p=H(r,u,e.width,e.buffer),m=H(c,u,e.width,e.buffer),d=wt(a,i,l,f,p,m);return d=d*e.scale+e.offset,d}function yt(n,t,e){for(let o=0;o<e.length;o++){let a=e[o].nativeExtent,i=new g;if(e[o].projectionType==="WebMercator"){let r=e[o].projection._ellipsoid._radii;i=new ft(new st(r.x,r.y,r.z)).project(new ot(n,t,0))}else i.x=n,i.y=t;if(i.x>a.west&&i.x<a.east&&i.y>a.south&&i.y<a.north)return It(i.x,i.y,e[o])}return 0}function At(n,t,e,o,a,i,r){if(r)return;let s=yt(a.longitude,a.latitude,i);for(let c=0;c<n;++c){let u=yt(a.longitude+M.toRadians(e*t[c*3]),a.latitude+M.toRadians(o*t[c*3+1]),i);t[c*3+2]+=u-s}}function Lt(n,t,e,o,a,i,r,s,c){if(n===0||!h(t)||t.length===0)return;let u=new st(Math.sqrt(r.x),Math.sqrt(r.y),Math.sqrt(r.z));for(let l=0;l<n;++l){let f=l*3,p=f+1,m=f+2,d=new ot;d.longitude=o.longitude+M.toRadians(s*t[f]),d.latitude=o.latitude+M.toRadians(c*t[p]),d.height=o.height+t[m];let b={};u.cartographicToCartesian(d,b),b.x-=a.x,b.y-=a.y,b.z-=a.z;let x={};if(it.multiplyByVector(i,b,x),t[f]=x.x,t[p]=x.y,t[m]=x.z,h(e)){let T=new g(e[f],e[p],e[m]),I={};it.multiplyByVector(i,T,I),e[f]=I.x,e[p]=I.y,e[m]=I.z}}}function Ot(n,t,e){for(let o=0;o<n;++o){let a=e[o*4]/65535,i=e[o*4+1]/65535,r=(e[o*4+2]-e[o*4])/65535,s=(e[o*4+3]-e[o*4+1])/65535;t[o*2]*=r,t[o*2]+=a,t[o*2+1]*=s,t[o*2+1]+=i}}function Tt(n,t,e,o){let a=new Uint32Array(n),i=h(t)?s=>t[s]:s=>s,r=0;if(o&&h(e)){let s=c=>e[i(c)*4+3]<255;for(let c=0;c<n;c+=3)!s(c)&&!s(c+1)&&!s(c+2)&&(a[r++]=i(c),a[r++]=i(c+1),a[r++]=i(c+2));if(r>0){let c=r;for(let u=0;u<n;u+=3)(s(u)||s(u+1)||s(u+2))&&(a[c++]=i(u),a[c++]=i(u+1),a[c++]=i(u+2))}else for(let c=0;c<n;++c)a[c]=i(c)}else{r=n;for(let s=0;s<n;++s)a[s]=i(s)}return{indexArray:a,transparentVertexOffset:r}}function Ct(n,t,e){let o=t[e];if(h(o))return o;let a=t[e]={positions:{},indices:{},edges:{}},i=n[e]??n.default;return a.hasOutline=h(i?.edges),a}function Ft(n,t,e,o){if(!h(n[e])){let a=e*3,i=t;for(let r=0;r<3;r++){let s=o[a+r];h(i[s])||(i[s]={}),i=i[s]}h(i.index)||(i.index=e),n[e]=i.index}}function Ut(n,t,e,o,a,i){let r,s;o<a?(r=o,s=a):(r=a,s=o);let c=n[r];h(c)||(c=n[r]={});let u=c[s];h(u)||(u=c[s]={normalsIndex:[],outlines:[]}),u.normalsIndex.push(i),(u.outlines.length===0||t!==o||e!==a)&&u.outlines.push(t,e)}function Vt(n,t,e,o){let a=[];for(let i=0;i<e.length;i+=3){let r=h(t)?t[e[i]]:"default",s=Ct(n,a,r);if(!s.hasOutline)continue;let c=s.indices,u=s.positions;for(let f=0;f<3;f++){let p=e[i+f];Ft(c,u,p,o)}let l=s.edges;for(let f=0;f<3;f++){let p=e[i+f],m=e[i+(f+1)%3],d=c[p],b=c[m];Ut(l,p,m,d,b,i)}}return a}var O=new g,X=new g,Y=new g;function bt(n,t,e,o){let a=e[t]*3,i=e[t+1]*3,r=e[t+2]*3;g.fromArray(o,a,O),g.fromArray(o,i,X),g.fromArray(o,r,Y),g.subtract(X,O,X),g.subtract(Y,O,Y),g.cross(X,Y,O);let s=g.magnitude(O);s!==0&&g.divideByScalar(O,s,O);let c=t*3,u=(t+1)*3,l=(t+2)*3;g.pack(O,n,c),g.pack(O,n,u),g.pack(O,n,l)}var z=new g,ct=new g;function Et(n,t,e){g.fromArray(n,t,z),g.fromArray(n,e,ct);let o=g.dot(z,ct),a=g.magnitude(g.cross(z,ct,z));return Math.atan2(a,o)<.25}function _t(n,t,e,o,a){if(t.normalsIndex.length>1){let i=o.length===a.length;for(let r=0;r<t.normalsIndex.length;r++){let s=t.normalsIndex[r];if(h(a[s*3])||bt(a,s,e,o),r!==0)for(let c=0;c<r;c++){let u=t.normalsIndex[c],l=i?e[s]*3:s*3,f=i?e[u]*3:u*3;if(Et(a,l,f))return}}}n.push(...t.outlines)}function Rt(n,t,e,o,a){let i=Object.keys(t);for(let r=0;r<i.length;r++){let s=t[i[r]],c=Object.keys(s);for(let u=0;u<c.length;u++){let l=s[c[u]];_t(n,l,e,o,a)}}}function Nt(n,t,e,o){let a=[],i=Object.keys(n);for(let r=0;r<i.length;r++){let s=n[i[r]].edges;Rt(a,s,t,e,o)}return a}function Bt(n,t,e,o,a){if(!h(n)||Object.keys(n).length===0)return;let i=Vt(n,t,e,o);(!h(a)||e.length*3!==a.length)&&(a=[]);let r=Nt(i,e,o,a);return r.length>0?new Uint32Array(r):void 0}function Gt(n){let t=new Float32Array(n.length);for(let e=0;e<n.length;e+=4)t[e]=k(P.byteToFloat(n[e])),t[e+1]=k(P.byteToFloat(n[e+1])),t[e+2]=k(P.byteToFloat(n[e+2])),t[e+3]=P.byteToFloat(n[e+3]);return t}function St(n,t,e,o,a,i,r){let s={normals:void 0,positions:void 0,uv0s:void 0,colors:void 0,featureIndex:void 0,vertexCount:void 0};if(n===0||!h(e)||e.length===0||h(o))return s;if(h(t)){s.vertexCount=t.length,s.positions=new Float32Array(t.length*3),s.uv0s=h(a)?new Float32Array(t.length*2):void 0,s.colors=h(i)?new Uint8Array(t.length*4):void 0,s.featureIndex=h(r)?new Array(t.length):void 0;for(let c=0;c<t.length;c++){let u=t[c];s.positions[c*3]=e[u*3],s.positions[c*3+1]=e[u*3+1],s.positions[c*3+2]=e[u*3+2],h(s.uv0s)&&(s.uv0s[c*2]=a[u*2],s.uv0s[c*2+1]=a[u*2+1]),h(s.colors)&&(s.colors[c*4]=i[u*4],s.colors[c*4+1]=i[u*4+1],s.colors[c*4+2]=i[u*4+2],s.colors[c*4+3]=i[u*4+3]),h(s.featureIndex)&&(s.featureIndex[c]=r[u])}n=t.length,e=s.positions}t=new Array(n);for(let c=0;c<n;c++)t[c]=c;s.normals=new Float32Array(t.length*3);for(let c=0;c<t.length;c+=3)bt(s.normals,c,t,e);return s}function vt(n,t,e,o,a,i,r,s){if(n===0||!h(e)||e.length===0)return{buffers:[],bufferViews:[],accessors:[],meshes:[],nodes:[],nodesInScene:[]};let c=[],u=[],l=[],f=[],p=[],m=[],d={},b=[];h(t)&&(n=t.length);let{indexArray:x,transparentVertexOffset:T}=Tt(n,t,i,s.splitGeometryByColorTransparency),I=new Blob([x],{type:"application/binary"}),A=URL.createObjectURL(I),w=n,F=s.enableFeatures&&h(r)?new Float32Array(r.length):void 0,C=0;if(h(F))for(let y=0;y<r.length;++y){F[y]=r[y];let E=r[y]+1;C<E&&(C=E)}let U,R=Bt(s.symbologyData,r,x,e,o);if(h(R)){let y=new Blob([R],{type:"application/binary"});U=URL.createObjectURL(y)}let L=e.subarray(0,w*3),gt=new Blob([L],{type:"application/binary"}),dt=URL.createObjectURL(gt),D=Number.POSITIVE_INFINITY,K=Number.NEGATIVE_INFINITY,Q=Number.POSITIVE_INFINITY,Z=Number.NEGATIVE_INFINITY,J=Number.POSITIVE_INFINITY,$=Number.NEGATIVE_INFINITY;for(let y=0;y<L.length/3;y++)D=Math.min(D,L[y*3+0]),K=Math.max(K,L[y*3+0]),Q=Math.min(Q,L[y*3+1]),Z=Math.max(Z,L[y*3+1]),J=Math.min(J,L[y*3+2]),$=Math.max($,L[y*3+2]);let N=o?o.subarray(0,w*3):void 0,q;if(h(N)){let y=new Blob([N],{type:"application/binary"});q=URL.createObjectURL(y)}let B=a?a.subarray(0,w*2):void 0,tt;if(h(B)){let y=new Blob([B],{type:"application/binary"});tt=URL.createObjectURL(y)}let G=h(i)?Gt(i.subarray(0,w*4)):void 0,et;if(h(G)){let y=new Blob([G],{type:"application/binary"});et=URL.createObjectURL(y)}let S=h(F)?F.subarray(0,w):void 0,nt;if(h(S)){let y=new Blob([S],{type:"application/binary"});nt=URL.createObjectURL(y)}let _=h(F)?new Float32Array(C):void 0,rt;if(h(_)){for(let E=0;E<_.length;++E)_[E]=E;let y=new Blob([_],{type:"application/binary"});rt=URL.createObjectURL(y)}let V={},j={};V.POSITION=l.length,c.push({uri:dt,byteLength:L.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:L.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:L.length/3,type:"VEC3",max:[D,Q,J],min:[K,Z,$]}),h(q)&&(V.NORMAL=l.length,c.push({uri:q,byteLength:N.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:N.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:N.length/3,type:"VEC3"})),h(tt)&&(V.TEXCOORD_0=l.length,c.push({uri:tt,byteLength:B.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:B.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:B.length/2,type:"VEC2"})),h(et)&&(V.COLOR_0=l.length,c.push({uri:et,byteLength:G.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:G.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:G.length/4,type:"VEC4"})),h(nt)&&(V._FEATURE_ID_0=l.length,c.push({uri:nt,byteLength:S.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:S.byteLength,target:34963}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:S.length,type:"SCALAR"}),j.EXT_mesh_features={featureIds:[{attribute:0,propertyTable:0,featureCount:C}]},b.push("EXT_mesh_features")),h(rt)&&(c.push({uri:rt,byteLength:_.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:_.byteLength,target:34963}),d.EXT_structural_metadata={schema:{id:"i3s-metadata-schema-001",name:"I3S metadata schema 001",description:"The schema for I3S metadata",version:"1.0",classes:{feature:{name:"feature",description:"Feature metadata",properties:{index:{description:"The feature index",type:"SCALAR",componentType:"FLOAT32",required:!0}}}}},propertyTables:[{name:"feature-indices-mapping",class:"feature",count:C,properties:{index:{values:u.length-1}}}]},b.push("EXT_structural_metadata")),h(U)&&(c.push({uri:U,byteLength:R.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:R.byteLength,target:34963}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5125,count:R.length,type:"SCALAR"}),j.CESIUM_primitive_outline={indices:l.length-1},b.push("CESIUM_primitive_outline")),c.push({uri:A,byteLength:x.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:x.byteLength,target:34963});let v=[];return T>0&&(l.push({bufferView:u.length-1,byteOffset:0,componentType:5125,count:T,type:"SCALAR"}),v.push({attributes:V,indices:l.length-1,material:v.length,extensions:j})),T<n&&(l.push({bufferView:u.length-1,byteOffset:4*T,componentType:5125,count:n-T,type:"SCALAR"}),v.push({attributes:V,indices:l.length-1,material:v.length,extensions:j,extra:{isTransparent:!0}})),f.push({primitives:v}),m.push(0),p.push({mesh:0}),{buffers:c,bufferViews:u,accessors:l,meshes:f,nodes:p,nodesInScene:m,rootExtensions:d,extensionsUsed:b}}function Mt(n,t,e,o){let a=new Uint8Array(n,0,5);return a[0]===68&&a[1]===82&&a[2]===65&&a[3]===67&&a[4]===79?Pt(n,e):kt(n,t,e,o)}function Pt(n){let t=ut,e=new t.DecoderBuffer,o=new Uint8Array(n);e.Init(o,o.length);let a=new t.Decoder,i=a.GetEncodedGeometryType(e),r=new t.MetadataQuerier,s,c;i===t.TRIANGULAR_MESH&&(s=new t.Mesh,c=a.DecodeBufferToMesh(e,s));let u={vertexCount:[0],featureCount:0};if(h(c)&&c.ok()&&s.ptr!==0){let l=s.num_faces(),f=s.num_attributes(),p=s.num_points();u.indices=new Uint32Array(l*3);let m=u.indices;u.vertexCount[0]=p,u.scale_x=1,u.scale_y=1;let d=new t.DracoInt32Array(3);for(let b=0;b<l;++b)a.GetFaceFromMesh(s,b,d),m[b*3]=d.GetValue(0),m[b*3+1]=d.GetValue(1),m[b*3+2]=d.GetValue(2);t.destroy(d);for(let b=0;b<f;++b){let x=a.GetAttribute(s,b),T=jt(t,a,s,x,p),I=x.attribute_type(),A="unknown";I===t.POSITION?A="positions":I===t.NORMAL?A="normals":I===t.COLOR?A="colors":I===t.TEX_COORD&&(A="uv0s");let w=a.GetAttributeMetadata(s,b);if(w.ptr!==0){let F=r.NumEntries(w);for(let C=0;C<F;++C){let U=r.GetEntryName(w,C);U==="i3s-scale_x"?u.scale_x=r.GetDoubleEntry(w,"i3s-scale_x"):U==="i3s-scale_y"?u.scale_y=r.GetDoubleEntry(w,"i3s-scale_y"):U==="i3s-attribute-type"&&(A=r.GetStringEntry(w,"i3s-attribute-type"))}}h(u[A])&&console.log("Attribute already exists",A),u[A]=T,A==="feature-index"&&u.featureCount++}t.destroy(s)}return t.destroy(r),t.destroy(a),u}function jt(n,t,e,o,a){let i=o.num_components()*a,r,c=[function(){},function(){r=new n.DracoInt8Array(i),t.GetAttributeInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt8Array(i),t.GetAttributeUInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt16Array(i),t.GetAttributeInt16ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int16Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt16Array(i),t.GetAttributeUInt16ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint16Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt32Array(i),t.GetAttributeInt32ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt32Array(i),t.GetAttributeUInt32ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){},function(){},function(){r=new n.DracoFloat32Array(i),t.GetAttributeFloatForAllPoints(e,o,r)||console.error("Bad stream");let l=new Float32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){},function(){r=new n.DracoUInt8Array(i),t.GetAttributeUInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l}][o.data_type()]();return h(r)&&n.destroy(r),c}var W={position:function(n,t,e){let o=n.vertexCount*3;return n.positions=new Float32Array(t,e,o),e+=o*4,e},normal:function(n,t,e){let o=n.vertexCount*3;return n.normals=new Float32Array(t,e,o),e+=o*4,e},uv0:function(n,t,e){let o=n.vertexCount*2;return n.uv0s=new Float32Array(t,e,o),e+=o*4,e},color:function(n,t,e){let o=n.vertexCount*4;return n.colors=new Uint8Array(t,e,o),e+=o,e},featureId:function(n,t,e){let o=n.featureCount;return e+=o*8,e},id:function(n,t,e){let o=n.featureCount;return e+=o*8,e},faceRange:function(n,t,e){let o=n.featureCount*2;return n.faceRange=new Uint32Array(t,e,o),e+=o*4,e},uvRegion:function(n,t,e){let o=n.vertexCount*4;return n["uv-region"]=new Uint16Array(t,e,o),e+=o*2,e},region:function(n,t,e){let o=n.vertexCount*4;return n["uv-region"]=new Uint16Array(t,e,o),e+=o*2,e}};function kt(n,t,e,o){let a={vertexCount:0},i=new DataView(n);try{let r=0;if(a.vertexCount=i.getUint32(r,1),r+=4,a.featureCount=i.getUint32(r,1),r+=4,h(e))for(let s=0;s<e.attributes.length;s++)h(W[e.attributes[s]])?r=W[e.attributes[s]](a,n,r):console.error("Unknown decoder for",e.attributes[s]);else{let s=t.ordering,c=t.featureAttributeOrder;h(o)&&h(o.geometryData)&&h(o.geometryData[0])&&h(o.geometryData[0].params)&&(s=Object.keys(o.geometryData[0].params.vertexAttributes),c=Object.keys(o.geometryData[0].params.featureAttributes));for(let u=0;u<s.length;u++){let l=W[s[u]];r=l(a,n,r)}for(let u=0;u<c.length;u++){let l=W[c[u]];r=l(a,n,r)}}}catch(r){console.error(r)}return a.scale_x=1,a.scale_y=1,a}function Ht(n){let t=Mt(n.binaryData,n.schema,n.bufferInfo,n.featureData);h(n.geoidDataList)&&n.geoidDataList.length>0&&At(t.vertexCount,t.positions,t.scale_x,t.scale_y,n.cartographicCenter,n.geoidDataList,!1),Lt(t.vertexCount,t.positions,t.normals,n.cartographicCenter,n.cartesianCenter,n.parentRotation,n.ellipsoidRadiiSquare,t.scale_x,t.scale_y),h(t.uv0s)&&h(t["uv-region"])&&Ot(t.vertexCount,t.uv0s,t["uv-region"]);let e;if(h(t["feature-index"]))e=t["feature-index"];else if(h(t.faceRange)){e=new Array(t.vertexCount);for(let r=0;r<t.faceRange.length-1;r+=2){let s=r/2,c=t.faceRange[r],u=t.faceRange[r+1];for(let l=c;l<=u;l++)e[l*3]=s,e[l*3+1]=s,e[l*3+2]=s}}if(n.calculateNormals){let r=St(t.vertexCount,t.indices,t.positions,t.normals,t.uv0s,t.colors,e);h(r.normals)&&(t.normals=r.normals,h(r.vertexCount)&&(t.vertexCount=r.vertexCount,t.indices=r.indices,t.positions=r.positions,t.uv0s=r.uv0s,t.colors=r.colors,e=r.featureIndex))}let o=vt(t.vertexCount,t.indices,t.positions,t.normals,t.uv0s,t.colors,e,n),a={positions:t.positions,indices:t.indices,featureIndex:e,sourceURL:n.url,cartesianCenter:n.cartesianCenter,parentRotation:n.parentRotation};return o._customAttributes=a,{meshData:o}}async function Xt(n,t){let e=n.webAssemblyConfig;return h(e)&&h(e.wasmBinaryFile)?ut=await(0,at.default)(e):ut=await(0,at.default)(),!0}function Yt(n,t){let e=n.webAssemblyConfig;return h(e)?Xt(n,t):Ht(n,t)}var re=ht(Yt);export{re as default}; diff --git a/public/Cesium/Workers/gaussianSplatSorter.js b/public/Cesium/Workers/gaussianSplatSorter.js new file mode 100644 index 000000000..34fe2afda --- /dev/null +++ b/public/Cesium/Workers/gaussianSplatSorter.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as t,c as f}from"./chunk-M3MGYQSL.js";import{a as s}from"./chunk-WZDE3RYP.js";import{e as o}from"./chunk-VTAIKJXX.js";async function m(i,e){let n=i.webAssemblyConfig;if(o(n)&&o(n.wasmBinary))return f({module:n.wasmBinary}),!0}function c(i,e){let n=i.webAssemblyConfig;if(o(n))return m(i,e);let{primitive:r,sortType:a}=i;if(a==="Index")return t(r.positions,r.modelView,r.count)}var y=s(c);export{y as default}; diff --git a/public/Cesium/Workers/gaussianSplatTextureGenerator.js b/public/Cesium/Workers/gaussianSplatTextureGenerator.js new file mode 100644 index 000000000..9eaec6c5b --- /dev/null +++ b/public/Cesium/Workers/gaussianSplatTextureGenerator.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a,c}from"./chunk-M3MGYQSL.js";import{a as i}from"./chunk-WZDE3RYP.js";import{e as n}from"./chunk-VTAIKJXX.js";async function u(t,s){let e=t.webAssemblyConfig;return n(e)&&n(e.wasmBinary)?(c({module:e.wasmBinary}),!0):!1}async function l(t,s){let e=t.webAssemblyConfig;if(n(e))return u(t,s);let{attributes:r,count:f}=t,o=a(r.positions,r.scales,r.rotations,r.colors,f);return{data:o.data,width:o.width,height:o.height}}var w=i(l);export{w as default}; diff --git a/public/Cesium/Workers/transcodeKTX2.js b/public/Cesium/Workers/transcodeKTX2.js new file mode 100644 index 000000000..53715365f --- /dev/null +++ b/public/Cesium/Workers/transcodeKTX2.js @@ -0,0 +1,56 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as on}from"./chunk-WZDE3RYP.js";import{a as f}from"./chunk-OSW76XDF.js";import{a as re}from"./chunk-ED5JPB3S.js";import{b as sn}from"./chunk-LEYMRMBK.js";import{a as Vt,c as rr,d as sr,e as Le}from"./chunk-VTAIKJXX.js";var cn=rr((ot,pt)=>{var Pt=function(){var s=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(s=s||__filename),function(T){T=T||{};var r=typeof T<"u"?T:{},M,B;r.ready=new Promise(function(e,t){M=e,B=t});var E={},F;for(F in r)r.hasOwnProperty(F)&&(E[F]=r[F]);var L=[],D="./this.program",b=function(e,t){throw t},N=!1,d=!1,P=!1,Q=!1;N=typeof window=="object",d=typeof importScripts=="function",P=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",Q=!N&&!P&&!d;var O="";function W(e){return r.locateFile?r.locateFile(e,O):O+e}var J,ae,j,Ke,Ce,Fe;P?(d?O=Vt("path").dirname(O)+"/":O=__dirname+"/",J=function(t,n){return Ce||(Ce=Vt("fs")),Fe||(Fe=Vt("path")),t=Fe.normalize(t),Ce.readFileSync(t,n?null:"utf8")},j=function(t){var n=J(t,!0);return n.buffer||(n=new Uint8Array(n)),I(n.buffer),n},process.argv.length>1&&(D=process.argv[1].replace(/\\/g,"/")),L=process.argv.slice(2),process.on("uncaughtException",function(e){if(!(e instanceof nr))throw e}),process.on("unhandledRejection",Oe),b=function(e){process.exit(e)},r.inspect=function(){return"[Emscripten Module object]"}):Q?(typeof read<"u"&&(J=function(t){return read(t)}),j=function(t){var n;return typeof readbuffer=="function"?new Uint8Array(readbuffer(t)):(n=read(t,"binary"),I(typeof n=="object"),n)},typeof scriptArgs<"u"?L=scriptArgs:typeof arguments<"u"&&(L=arguments),typeof quit=="function"&&(b=function(e){quit(e)}),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(N||d)&&(d?O=self.location.href:typeof document<"u"&&document.currentScript&&(O=document.currentScript.src),s&&(O=s),O.indexOf("blob:")!==0?O=O.substr(0,O.lastIndexOf("/")+1):O="",J=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(j=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ae=function(e,t,n){var _=new XMLHttpRequest;_.open("GET",e,!0),_.responseType="arraybuffer",_.onload=function(){if(_.status==200||_.status==0&&_.response){t(_.response);return}n()},_.onerror=n,_.send(null)},Ke=function(e){document.title=e});var it=r.print||console.log.bind(console),se=r.printErr||console.warn.bind(console);for(F in E)E.hasOwnProperty(F)&&(r[F]=E[F]);E=null,r.arguments&&(L=r.arguments),r.thisProgram&&(D=r.thisProgram),r.quit&&(b=r.quit);var Rt=0,Ut=function(e){Rt=e},oe;r.wasmBinary&&(oe=r.wasmBinary);var On=r.noExitRuntime||!0;typeof WebAssembly!="object"&&Oe("no native wasm support detected");var de,Ie=!1,ce;function I(e,t){e||Oe("Assertion failed: "+t)}var be=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function we(e,t,n){for(var _=t+n,o=t;e[o]&&!(o>=_);)++o;if(o-t>16&&e.subarray&&be)return be.decode(e.subarray(t,o));for(var c="";t<o;){var A=e[t++];if(!(A&128)){c+=String.fromCharCode(A);continue}var R=e[t++]&63;if((A&224)==192){c+=String.fromCharCode((A&31)<<6|R);continue}var a=e[t++]&63;if((A&240)==224?A=(A&15)<<12|R<<6|a:A=(A&7)<<18|R<<12|a<<6|e[t++]&63,A<65536)c+=String.fromCharCode(A);else{var u=A-65536;c+=String.fromCharCode(55296|u>>10,56320|u&1023)}}return c}function Ge(e,t){return e?we(p,e,t):""}function He(e,t,n,_){if(!(_>0))return 0;for(var o=n,c=n+_-1,A=0;A<e.length;++A){var R=e.charCodeAt(A);if(R>=55296&&R<=57343){var a=e.charCodeAt(++A);R=65536+((R&1023)<<10)|a&1023}if(R<=127){if(n>=c)break;t[n++]=R}else if(R<=2047){if(n+1>=c)break;t[n++]=192|R>>6,t[n++]=128|R&63}else if(R<=65535){if(n+2>=c)break;t[n++]=224|R>>12,t[n++]=128|R>>6&63,t[n++]=128|R&63}else{if(n+3>=c)break;t[n++]=240|R>>18,t[n++]=128|R>>12&63,t[n++]=128|R>>6&63,t[n++]=128|R&63}}return t[n]=0,n-o}function Xe(e,t,n){return He(e,p,t,n)}function at(e){for(var t=0,n=0;n<e.length;++n){var _=e.charCodeAt(n);_>=55296&&_<=57343&&(_=65536+((_&1023)<<10)|e.charCodeAt(++n)&1023),_<=127?++t:_<=2047?t+=2:_<=65535?t+=3:t+=4}return t}var Se=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function xe(e,t){for(var n=e,_=n>>1,o=_+t/2;!(_>=o)&&Ae[_];)++_;if(n=_<<1,n-e>32&&Se)return Se.decode(p.subarray(e,n));for(var c="",A=0;!(A>=t/2);++A){var R=k[e+A*2>>1];if(R==0)break;c+=String.fromCharCode(R)}return c}function ke(e,t,n){if(n===void 0&&(n=2147483647),n<2)return 0;n-=2;for(var _=t,o=n<e.length*2?n/2:e.length,c=0;c<o;++c){var A=e.charCodeAt(c);k[t>>1]=A,t+=2}return k[t>>1]=0,t-_}function $e(e){return e.length*2}function ct(e,t){for(var n=0,_="";!(n>=t/4);){var o=m[e+n*4>>2];if(o==0)break;if(++n,o>=65536){var c=o-65536;_+=String.fromCharCode(55296|c>>10,56320|c&1023)}else _+=String.fromCharCode(o)}return _}function At(e,t,n){if(n===void 0&&(n=2147483647),n<4)return 0;for(var _=t,o=_+n-4,c=0;c<e.length;++c){var A=e.charCodeAt(c);if(A>=55296&&A<=57343){var R=e.charCodeAt(++c);A=65536+((A&1023)<<10)|R&1023}if(m[t>>2]=A,t+=4,t+4>o)break}return m[t>>2]=0,t-_}function Tt(e){for(var t=0,n=0;n<e.length;++n){var _=e.charCodeAt(n);_>=55296&&_<=57343&&++n,t+=4}return t}function ut(e,t){return e%t>0&&(e+=t-e%t),e}var Ne,v,p,k,Ae,m,z,vt,ht;function yt(e){Ne=e,r.HEAP8=v=new Int8Array(e),r.HEAP16=k=new Int16Array(e),r.HEAP32=m=new Int32Array(e),r.HEAPU8=p=new Uint8Array(e),r.HEAPU16=Ae=new Uint16Array(e),r.HEAPU32=z=new Uint32Array(e),r.HEAPF32=vt=new Float32Array(e),r.HEAPF64=ht=new Float64Array(e)}var ur=r.INITIAL_MEMORY||16777216,Ee,gt=[],Lt=[],ln=[],mt=[],Bn=!1;function Mn(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)dn(r.preRun.shift());We(gt)}function Kn(){Bn=!0,We(Lt)}function Cn(){We(ln)}function Fn(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Sn(r.postRun.shift());We(mt)}function dn(e){gt.unshift(e)}function Gn(e){Lt.unshift(e)}function Sn(e){mt.unshift(e)}var Te=0,ft=null,Ve=null;function Nn(e){Te++,r.monitorRunDependencies&&r.monitorRunDependencies(Te)}function En(e){if(Te--,r.monitorRunDependencies&&r.monitorRunDependencies(Te),Te==0&&(ft!==null&&(clearInterval(ft),ft=null),Ve)){var t=Ve;Ve=null,t()}}r.preloadedImages={},r.preloadedAudios={};function Oe(e){r.onAbort&&r.onAbort(e),e+="",se(e),Ie=!0,ce=1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(e);throw B(t),t}function Dt(e,t){return String.prototype.startsWith?e.startsWith(t):e.indexOf(t)===0}var Vn="data:application/octet-stream;base64,";function It(e){return Dt(e,Vn)}var Pn="file://";function bt(e){return Dt(e,Pn)}var X="basis_transcoder.wasm";It(X)||(X=W(X));function wt(e){try{if(e==X&&oe)return new Uint8Array(oe);if(j)return j(e);throw"both async and sync fetching of the wasm failed"}catch(t){Oe(t)}}function pn(){if(!oe&&(N||d)){if(typeof fetch=="function"&&!bt(X))return fetch(X,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+X+"'";return e.arrayBuffer()}).catch(function(){return wt(X)});if(ae)return new Promise(function(e,t){ae(X,function(n){e(new Uint8Array(n))},t)})}return Promise.resolve().then(function(){return wt(X)})}function Un(){var e={a:Q_};function t(A,R){var a=A.exports;r.asm=a,de=r.asm.K,yt(de.buffer),Ee=r.asm.O,Gn(r.asm.L),En("wasm-instantiate")}Nn("wasm-instantiate");function n(A){t(A.instance)}function _(A){return pn().then(function(R){var a=WebAssembly.instantiate(R,e);return a}).then(A,function(R){se("failed to asynchronously prepare wasm: "+R),Oe(R)})}function o(){return!oe&&typeof WebAssembly.instantiateStreaming=="function"&&!It(X)&&!bt(X)&&typeof fetch=="function"?fetch(X,{credentials:"same-origin"}).then(function(A){var R=WebAssembly.instantiateStreaming(A,e);return R.then(n,function(a){return se("wasm streaming compile failed: "+a),se("falling back to ArrayBuffer instantiation"),_(n)})}):_(n)}if(r.instantiateWasm)try{var c=r.instantiateWasm(e,t);return c}catch(A){return se("Module.instantiateWasm callback failed with error: "+A),!1}return o().catch(B),{}}function We(e){for(;e.length>0;){var t=e.shift();if(typeof t=="function"){t(r);continue}var n=t.func;typeof n=="number"?t.arg===void 0?Ee.get(n)():Ee.get(n)(t.arg):n(t.arg===void 0?null:t.arg)}}var je={};function Ye(e){for(;e.length;){var t=e.pop(),n=e.pop();n(t)}}function Pe(e){return this.fromWireType(z[e>>2])}var le={},ue={},ze={},vn=48,hn=57;function qe(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=vn&&t<=hn?"_"+e:e}function Ze(e,t){return e=qe(e),new Function("body","return function "+e+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(t)}function Ot(e,t){var n=Ze(t,function(_){this.name=t,this.message=_;var o=new Error(_).stack;o!==void 0&&(this.stack=this.toString()+` +`+o.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},n}var Ht=void 0;function Qe(e){throw new Ht(e)}function ie(e,t,n){e.forEach(function(R){ze[R]=t});function _(R){var a=n(R);a.length!==e.length&&Qe("Mismatched type converter count");for(var u=0;u<e.length;++u)q(e[u],a[u])}var o=new Array(t.length),c=[],A=0;t.forEach(function(R,a){ue.hasOwnProperty(R)?o[a]=ue[R]:(c.push(R),le.hasOwnProperty(R)||(le[R]=[]),le[R].push(function(){o[a]=ue[R],++A,A===c.length&&_(o)}))}),c.length===0&&_(o)}function yn(e){var t=je[e];delete je[e];var n=t.rawConstructor,_=t.rawDestructor,o=t.fields,c=o.map(function(A){return A.getterReturnType}).concat(o.map(function(A){return A.setterArgumentType}));ie([e],c,function(A){var R={};return o.forEach(function(a,u){var l=a.fieldName,K=A[u],S=a.getter,V=a.getterContext,g=A[u+o.length],w=a.setter,$=a.setterContext;R[l]={read:function(Z){return K.fromWireType(S(V,Z))},write:function(Z,ge){var _e=[];w($,Z,g.toWireType(_e,ge)),Ye(_e)}}}),[{name:t.name,fromWireType:function(a){var u={};for(var l in R)u[l]=R[l].read(a);return _(a),u},toWireType:function(a,u){for(var l in R)if(!(l in u))throw new TypeError('Missing field: "'+l+'"');var K=n();for(l in R)R[l].write(K,u[l]);return a!==null&&a.push(_,K),K},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:_}]})}function Je(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function gn(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Xt=e}var Xt=void 0;function h(e){for(var t="",n=e;p[n];)t+=Xt[p[n++]];return t}var Be=void 0;function G(e){throw new Be(e)}function q(e,t,n){if(n=n||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var _=t.name;if(e||G('type "'+_+'" must have a positive integer typeid pointer'),ue.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;G("Cannot register type '"+_+"' twice")}if(ue[e]=t,delete ze[e],le.hasOwnProperty(e)){var o=le[e];delete le[e],o.forEach(function(c){c()})}}function Ln(e,t,n,_,o){var c=Je(n);t=h(t),q(e,{name:t,fromWireType:function(A){return!!A},toWireType:function(A,R){return R?_:o},argPackAdvance:8,readValueFromPointer:function(A){var R;if(n===1)R=v;else if(n===2)R=k;else if(n===4)R=m;else throw new TypeError("Unknown boolean type size: "+t);return this.fromWireType(R[A>>c])},destructorFunction:null})}function mn(e){if(!(this instanceof Re)||!(e instanceof Re))return!1;for(var t=this.$$.ptrType.registeredClass,n=this.$$.ptr,_=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;_.baseClass;)o=_.upcast(o),_=_.baseClass;return t===_&&n===o}function Dn(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function lt(e){function t(n){return n.$$.ptrType.registeredClass.name}G(t(e)+" instance already deleted")}var Bt=!1;function xt(e){}function In(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}function kt(e){e.count.value-=1;var t=e.count.value===0;t&&In(e)}function pe(e){return typeof FinalizationGroup>"u"?(pe=function(t){return t},e):(Bt=new FinalizationGroup(function(t){for(var n=t.next();!n.done;n=t.next()){var _=n.value;_.ptr?kt(_):console.warn("object already deleted: "+_.ptr)}}),pe=function(t){return Bt.register(t,t.$$,t.$$),t},xt=function(t){Bt.unregister(t.$$)},pe(e))}function bn(){if(this.$$.ptr||lt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=pe(Object.create(Object.getPrototypeOf(this),{$$:{value:Dn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function wn(){this.$$.ptr||lt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&G("Object already scheduled for deletion"),xt(this),kt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Hn(){return!this.$$.ptr}var Ue=void 0,ve=[];function Mt(){for(;ve.length;){var e=ve.pop();e.$$.deleteScheduled=!1,e.delete()}}function Xn(){return this.$$.ptr||lt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&G("Object already scheduled for deletion"),ve.push(this),ve.length===1&&Ue&&Ue(Mt),this.$$.deleteScheduled=!0,this}function xn(){Re.prototype.isAliasOf=mn,Re.prototype.clone=bn,Re.prototype.delete=wn,Re.prototype.isDeleted=Hn,Re.prototype.deleteLater=Xn}function Re(){}var $t={};function Wt(e,t,n){if(e[t].overloadTable===void 0){var _=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||G("Function '"+n+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[_.argCount]=_}}function Kt(e,t,n){r.hasOwnProperty(e)?((n===void 0||r[e].overloadTable!==void 0&&r[e].overloadTable[n]!==void 0)&&G("Cannot register public name '"+e+"' twice"),Wt(r,e,e),r.hasOwnProperty(n)&&G("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,n!==void 0&&(r[e].numArguments=n))}function kn(e,t,n,_,o,c,A,R){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=_,this.baseClass=o,this.getActualType=c,this.upcast=A,this.downcast=R,this.pureVirtualFunctions=[]}function Ct(e,t,n){for(;t!==n;)t.upcast||G("Expected null or instance of "+n.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function $n(e,t){if(t===null)return this.isReference&&G("null is not a valid "+this.name),0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name);var n=t.$$.ptrType.registeredClass,_=Ct(t.$$.ptr,n,this.registeredClass);return _}function Wn(e,t){var n;if(t===null)return this.isReference&&G("null is not a valid "+this.name),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&G("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var _=t.$$.ptrType.registeredClass;if(n=Ct(t.$$.ptr,_,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&G("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:G("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var o=t.clone();n=this.rawShare(n,te(function(){o.delete()})),e!==null&&e.push(this.rawDestructor,n)}break;default:G("Unsupporting sharing policy")}return n}function jn(e,t){if(t===null)return this.isReference&&G("null is not a valid "+this.name),0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&G("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass,_=Ct(t.$$.ptr,n,this.registeredClass);return _}function Yn(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function zn(e){this.rawDestructor&&this.rawDestructor(e)}function qn(e){e!==null&&e.delete()}function jt(e,t,n){if(t===n)return e;if(n.baseClass===void 0)return null;var _=jt(e,t,n.baseClass);return _===null?null:n.downcast(_)}function Zn(){return Object.keys(he).length}function Qn(){var e=[];for(var t in he)he.hasOwnProperty(t)&&e.push(he[t]);return e}function Jn(e){Ue=e,ve.length&&Ue&&Ue(Mt)}function e_(){r.getInheritedInstanceCount=Zn,r.getLiveInheritedInstances=Qn,r.flushPendingDeletes=Mt,r.setDelayFunction=Jn}var he={};function t_(e,t){for(t===void 0&&G("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}function n_(e,t){return t=t_(e,t),he[t]}function et(e,t){(!t.ptrType||!t.ptr)&&Qe("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,_=!!t.smartPtr;return n!==_&&Qe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},pe(Object.create(e,{$$:{value:t}}))}function __(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=n_(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var _=n.clone();return this.destructor(e),_}function o(){return this.isSmartPointer?et(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):et(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var c=this.registeredClass.getActualType(t),A=$t[c];if(!A)return o.call(this);var R;this.isConst?R=A.constPointerType:R=A.pointerType;var a=jt(t,this.registeredClass,R.registeredClass);return a===null?o.call(this):this.isSmartPointer?et(R.registeredClass.instancePrototype,{ptrType:R,ptr:a,smartPtrType:this,smartPtr:e}):et(R.registeredClass.instancePrototype,{ptrType:R,ptr:a})}function r_(){ee.prototype.getPointee=Yn,ee.prototype.destructor=zn,ee.prototype.argPackAdvance=8,ee.prototype.readValueFromPointer=Pe,ee.prototype.deleteObject=qn,ee.prototype.fromWireType=__}function ee(e,t,n,_,o,c,A,R,a,u,l){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=_,this.isSmartPointer=o,this.pointeeType=c,this.sharingPolicy=A,this.rawGetPointee=R,this.rawConstructor=a,this.rawShare=u,this.rawDestructor=l,!o&&t.baseClass===void 0?_?(this.toWireType=$n,this.destructorFunction=null):(this.toWireType=jn,this.destructorFunction=null):this.toWireType=Wn}function Yt(e,t,n){r.hasOwnProperty(e)||Qe("Replacing nonexistant public symbol"),r[e].overloadTable!==void 0&&n!==void 0?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}function s_(e,t,n){var _=r["dynCall_"+e];return n&&n.length?_.apply(null,[t].concat(n)):_.call(null,t)}function o_(e,t,n){return e.indexOf("j")!=-1?s_(e,t,n):Ee.get(t).apply(null,n)}function i_(e,t){var n=[];return function(){n.length=arguments.length;for(var _=0;_<arguments.length;_++)n[_]=arguments[_];return o_(e,t,n)}}function Y(e,t){e=h(e);function n(){return e.indexOf("j")!=-1?i_(e,t):Ee.get(t)}var _=n();return typeof _!="function"&&G("unknown function pointer with signature "+e+": "+t),_}var zt=void 0;function qt(e){var t=tn(e),n=h(t);return ne(t),n}function tt(e,t){var n=[],_={};function o(c){if(!_[c]&&!ue[c]){if(ze[c]){ze[c].forEach(o);return}n.push(c),_[c]=!0}}throw t.forEach(o),new zt(e+": "+n.map(qt).join([", "]))}function R_(e,t,n,_,o,c,A,R,a,u,l,K,S){l=h(l),c=Y(o,c),R&&(R=Y(A,R)),u&&(u=Y(a,u)),S=Y(K,S);var V=qe(l);Kt(V,function(){tt("Cannot construct "+l+" due to unbound types",[_])}),ie([e,t,n],_?[_]:[],function(g){g=g[0];var w,$;_?(w=g.registeredClass,$=w.instancePrototype):$=Re.prototype;var Z=Ze(V,function(){if(Object.getPrototypeOf(this)!==ge)throw new Be("Use 'new' to construct "+l);if(_e.constructor_body===void 0)throw new Be(l+" has no accessible constructor");var rn=_e.constructor_body[arguments.length];if(rn===void 0)throw new Be("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(_e.constructor_body).toString()+") parameters instead!");return rn.apply(this,arguments)}),ge=Object.create($,{constructor:{value:Z}});Z.prototype=ge;var _e=new kn(l,Z,ge,S,w,c,R,u),_r=new ee(l,_e,!0,!1,!1),nn=new ee(l+"*",_e,!1,!1,!1),_n=new ee(l+" const*",_e,!1,!0,!1);return $t[e]={pointerType:nn,constPointerType:_n},Yt(V,Z),[_r,nn,_n]})}function Ft(e,t){for(var n=[],_=0;_<e;_++)n.push(m[(t>>2)+_]);return n}function a_(e,t,n,_,o,c){I(t>0);var A=Ft(t,n);o=Y(_,o);var R=[c],a=[];ie([],[e],function(u){u=u[0];var l="constructor "+u.name;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[t-1]!==void 0)throw new Be("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+u.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return u.registeredClass.constructor_body[t-1]=function(){tt("Cannot construct "+u.name+" due to unbound types",A)},ie([],A,function(K){return u.registeredClass.constructor_body[t-1]=function(){arguments.length!==t-1&&G(l+" called with "+arguments.length+" arguments, expected "+(t-1)),a.length=0,R.length=t;for(var V=1;V<t;++V)R[V]=K[V].toWireType(a,arguments[V-1]);var g=o.apply(null,R);return Ye(a),K[0].fromWireType(g)},[]}),[]})}function Zt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var n=Ze(e.name||"unknownFunctionName",function(){});n.prototype=e.prototype;var _=new n,o=e.apply(_,t);return o instanceof Object?o:_}function Qt(e,t,n,_,o){var c=t.length;c<2&&G("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var A=t[1]!==null&&n!==null,R=!1,a=1;a<t.length;++a)if(t[a]!==null&&t[a].destructorFunction===void 0){R=!0;break}for(var u=t[0].name!=="void",l="",K="",a=0;a<c-2;++a)l+=(a!==0?", ":"")+"arg"+a,K+=(a!==0?", ":"")+"arg"+a+"Wired";var S="return function "+qe(e)+"("+l+`) { +if (arguments.length !== `+(c-2)+`) { +throwBindingError('function `+e+" called with ' + arguments.length + ' arguments, expected "+(c-2)+` args!'); +} +`;R&&(S+=`var destructors = []; +`);var V=R?"destructors":"null",g=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],w=[G,_,o,Ye,t[0],t[1]];A&&(S+="var thisWired = classParam.toWireType("+V+`, this); +`);for(var a=0;a<c-2;++a)S+="var arg"+a+"Wired = argType"+a+".toWireType("+V+", arg"+a+"); // "+t[a+2].name+` +`,g.push("argType"+a),w.push(t[a+2]);if(A&&(K="thisWired"+(K.length>0?", ":"")+K),S+=(u?"var rv = ":"")+"invoker(fn"+(K.length>0?", ":"")+K+`); +`,R)S+=`runDestructors(destructors); +`;else for(var a=A?1:2;a<t.length;++a){var $=a===1?"thisWired":"arg"+(a-2)+"Wired";t[a].destructorFunction!==null&&(S+=$+"_dtor("+$+"); // "+t[a].name+` +`,g.push($+"_dtor"),w.push(t[a].destructorFunction))}u&&(S+=`var ret = retType.fromWireType(rv); +return ret; +`),S+=`} +`,g.push(S);var Z=Zt(Function,g).apply(null,w);return Z}function c_(e,t,n,_,o,c,A,R){var a=Ft(n,_);t=h(t),c=Y(o,c),ie([],[e],function(u){u=u[0];var l=u.name+"."+t;R&&u.registeredClass.pureVirtualFunctions.push(t);function K(){tt("Cannot call "+l+" due to unbound types",a)}var S=u.registeredClass.instancePrototype,V=S[t];return V===void 0||V.overloadTable===void 0&&V.className!==u.name&&V.argCount===n-2?(K.argCount=n-2,K.className=u.name,S[t]=K):(Wt(S,t,l),S[t].overloadTable[n-2]=K),ie([],a,function(g){var w=Qt(l,g,u,c,A);return S[t].overloadTable===void 0?(w.argCount=n-2,S[t]=w):S[t].overloadTable[n-2]=w,[]}),[]})}function A_(e,t,n){e=h(e),ie([],[t],function(_){return _=_[0],r[e]=_.fromWireType(n),[]})}var dt=[],x=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Gt(e){e>4&&--x[e].refcount===0&&(x[e]=void 0,dt.push(e))}function T_(){for(var e=0,t=5;t<x.length;++t)x[t]!==void 0&&++e;return e}function u_(){for(var e=5;e<x.length;++e)if(x[e]!==void 0)return x[e];return null}function f_(){r.count_emval_handles=T_,r.get_first_emval=u_}function te(e){switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var t=dt.length?dt.pop():x.length;return x[t]={refcount:1,value:e},t}}}function O_(e,t){t=h(t),q(e,{name:t,fromWireType:function(n){var _=x[n].value;return Gt(n),_},toWireType:function(n,_){return te(_)},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:null})}function l_(e,t,n){switch(t){case 0:return function(_){var o=n?v:p;return this.fromWireType(o[_])};case 1:return function(_){var o=n?k:Ae;return this.fromWireType(o[_>>1])};case 2:return function(_){var o=n?m:z;return this.fromWireType(o[_>>2])};default:throw new TypeError("Unknown integer type: "+e)}}function B_(e,t,n,_){var o=Je(n);t=h(t);function c(){}c.values={},q(e,{name:t,constructor:c,fromWireType:function(A){return this.constructor.values[A]},toWireType:function(A,R){return R.value},argPackAdvance:8,readValueFromPointer:l_(t,o,_),destructorFunction:null}),Kt(t,c)}function nt(e,t){var n=ue[e];return n===void 0&&G(t+" has unknown type "+qt(e)),n}function M_(e,t,n){var _=nt(e,"enum");t=h(t);var o=_.constructor,c=Object.create(_.constructor.prototype,{value:{value:n},constructor:{value:Ze(_.name+"_"+t,function(){})}});o.values[n]=c,o[t]=c}function Me(e){if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e}function K_(e,t){switch(t){case 2:return function(n){return this.fromWireType(vt[n>>2])};case 3:return function(n){return this.fromWireType(ht[n>>3])};default:throw new TypeError("Unknown float type: "+e)}}function C_(e,t,n){var _=Je(n);t=h(t),q(e,{name:t,fromWireType:function(o){return o},toWireType:function(o,c){if(typeof c!="number"&&typeof c!="boolean")throw new TypeError('Cannot convert "'+Me(c)+'" to '+this.name);return c},argPackAdvance:8,readValueFromPointer:K_(t,_),destructorFunction:null})}function F_(e,t,n,_,o,c){var A=Ft(t,n);e=h(e),o=Y(_,o),Kt(e,function(){tt("Cannot call "+e+" due to unbound types",A)},t-1),ie([],A,function(R){var a=[R[0],null].concat(R.slice(1));return Yt(e,Qt(e,a,null,o,c),t-1),[]})}function d_(e,t,n){switch(t){case 0:return n?function(o){return v[o]}:function(o){return p[o]};case 1:return n?function(o){return k[o>>1]}:function(o){return Ae[o>>1]};case 2:return n?function(o){return m[o>>2]}:function(o){return z[o>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function G_(e,t,n,_,o){t=h(t),o===-1&&(o=4294967295);var c=Je(n),A=function(u){return u};if(_===0){var R=32-8*n;A=function(u){return u<<R>>>R}}var a=t.indexOf("unsigned")!=-1;q(e,{name:t,fromWireType:A,toWireType:function(u,l){if(typeof l!="number"&&typeof l!="boolean")throw new TypeError('Cannot convert "'+Me(l)+'" to '+this.name);if(l<_||l>o)throw new TypeError('Passing a number "'+Me(l)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+_+", "+o+"]!");return a?l>>>0:l|0},argPackAdvance:8,readValueFromPointer:d_(t,c,_!==0),destructorFunction:null})}function S_(e,t,n){var _=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],o=_[t];function c(A){A=A>>2;var R=z,a=R[A],u=R[A+1];return new o(Ne,u,a)}n=h(n),q(e,{name:n,fromWireType:c,argPackAdvance:8,readValueFromPointer:c},{ignoreDuplicateRegistrations:!0})}function N_(e,t){t=h(t);var n=t==="std::string";q(e,{name:t,fromWireType:function(_){var o=z[_>>2],c;if(n)for(var A=_+4,R=0;R<=o;++R){var a=_+4+R;if(R==o||p[a]==0){var u=a-A,l=Ge(A,u);c===void 0?c=l:(c+="\0",c+=l),A=a+1}}else{for(var K=new Array(o),R=0;R<o;++R)K[R]=String.fromCharCode(p[_+4+R]);c=K.join("")}return ne(_),c},toWireType:function(_,o){o instanceof ArrayBuffer&&(o=new Uint8Array(o));var c,A=typeof o=="string";A||o instanceof Uint8Array||o instanceof Uint8ClampedArray||o instanceof Int8Array||G("Cannot pass non-string to std::string"),n&&A?c=function(){return at(o)}:c=function(){return o.length};var R=c(),a=Nt(4+R+1);if(z[a>>2]=R,n&&A)Xe(o,a+4,R+1);else if(A)for(var u=0;u<R;++u){var l=o.charCodeAt(u);l>255&&(ne(a),G("String has UTF-16 code units that do not fit in 8 bits")),p[a+4+u]=l}else for(var u=0;u<R;++u)p[a+4+u]=o[u];return _!==null&&_.push(ne,a),a},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:function(_){ne(_)}})}function E_(e,t,n){n=h(n);var _,o,c,A,R;t===2?(_=xe,o=ke,A=$e,c=function(){return Ae},R=1):t===4&&(_=ct,o=At,A=Tt,c=function(){return z},R=2),q(e,{name:n,fromWireType:function(a){for(var u=z[a>>2],l=c(),K,S=a+4,V=0;V<=u;++V){var g=a+4+V*t;if(V==u||l[g>>R]==0){var w=g-S,$=_(S,w);K===void 0?K=$:(K+="\0",K+=$),S=g+t}}return ne(a),K},toWireType:function(a,u){typeof u!="string"&&G("Cannot pass non-string to C++ string type "+n);var l=A(u),K=Nt(4+l+t);return z[K>>2]=l>>R,o(u,K+4,l+t),a!==null&&a.push(ne,K),K},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:function(a){ne(a)}})}function V_(e,t,n,_,o,c){je[e]={name:h(t),rawConstructor:Y(n,_),rawDestructor:Y(o,c),fields:[]}}function P_(e,t,n,_,o,c,A,R,a,u){je[e].fields.push({fieldName:h(t),getterReturnType:n,getter:Y(_,o),getterContext:c,setterArgumentType:A,setter:Y(R,a),setterContext:u})}function p_(e,t){t=h(t),q(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:function(){},toWireType:function(n,_){}})}function ye(e){return e||G("Cannot use deleted val. handle = "+e),x[e].value}function U_(e,t,n){e=ye(e),t=nt(t,"emval::as");var _=[],o=te(_);return m[n>>2]=o,t.toWireType(_,e)}var v_={};function _t(e){var t=v_[e];return t===void 0?h(e):t}var St=[];function h_(e,t,n,_){e=St[e],t=ye(t),n=_t(n),e(t,n,null,_)}function Jt(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function y_(e){return e===0?te(Jt()):(e=_t(e),te(Jt()[e]))}function g_(e){var t=St.length;return St.push(e),t}function L_(e,t){for(var n=new Array(e),_=0;_<e;++_)n[_]=nt(m[(t>>2)+_],"parameter "+_);return n}function m_(e,t){for(var n=L_(e,t),_=n[0],o=_.name+"_$"+n.slice(1).map(function(V){return V.name}).join("_")+"$",c=["retType"],A=[_],R="",a=0;a<e-1;++a)R+=(a!==0?", ":"")+"arg"+a,c.push("argType"+a),A.push(n[1+a]);for(var u=qe("methodCaller_"+o),l="return function "+u+`(handle, name, destructors, args) { +`,K=0,a=0;a<e-1;++a)l+=" var arg"+a+" = argType"+a+".readValueFromPointer(args"+(K?"+"+K:"")+`); +`,K+=n[a+1].argPackAdvance;l+=" var rv = handle[name]("+R+`); +`;for(var a=0;a<e-1;++a)n[a+1].deleteObject&&(l+=" argType"+a+".deleteObject(arg"+a+`); +`);_.isVoid||(l+=` return retType.toWireType(destructors, rv); +`),l+=`}; +`,c.push(l);var S=Zt(Function,c).apply(null,A);return g_(S)}function D_(e){return e=_t(e),te(r[e])}function I_(e,t){return e=ye(e),t=ye(t),te(e[t])}function b_(e){e>4&&(x[e].refcount+=1)}function w_(e){for(var t="",n=0;n<e;++n)t+=(n!==0?", ":"")+"arg"+n;for(var _="return function emval_allocator_"+e+`(constructor, argTypes, args) { +`,n=0;n<e;++n)_+="var argType"+n+" = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + "+n+'], "parameter '+n+`"); +var arg`+n+" = argType"+n+`.readValueFromPointer(args); +args += argType`+n+`['argPackAdvance']; +`;return _+="var obj = new constructor("+t+`); +return __emval_register(obj); +} +`,new Function("requireRegisteredType","Module","__emval_register",_)(nt,r,te)}var en={};function H_(e,t,n,_){e=ye(e);var o=en[t];return o||(o=w_(t),en[t]=o),o(e,n,_)}function X_(e){return te(_t(e))}function x_(e){var t=x[e].value;Ye(t),Gt(e)}function k_(){Oe()}function $_(e,t,n){p.copyWithin(e,t,t+n)}function W_(e){try{return de.grow(e-Ne.byteLength+65535>>>16),yt(de.buffer),1}catch{}}function j_(e){var t=p.length;e=e>>>0;var n=2147483648;if(e>n)return!1;for(var _=1;_<=4;_*=2){var o=t*(1+.2/_);o=Math.min(o,e+100663296);var c=Math.min(n,ut(Math.max(e,o),65536)),A=W_(c);if(A)return!0}return!1}var rt={mappings:{},buffers:[null,[],[]],printChar:function(e,t){var n=rt.buffers[e];t===0||t===10?((e===1?it:se)(we(n,0)),n.length=0):n.push(t)},varargs:void 0,get:function(){rt.varargs+=4;var e=m[rt.varargs-4>>2];return e},getStr:function(e){var t=Ge(e);return t},get64:function(e,t){return e}};function Y_(e){return 0}function z_(e,t,n,_,o){}function q_(e,t,n,_){for(var o=0,c=0;c<n;c++){for(var A=m[t+c*8>>2],R=m[t+(c*8+4)>>2],a=0;a<R;a++)rt.printChar(e,p[A+a]);o+=R}return m[_>>2]=o,0}function Z_(e){Ut(e|0)}Ht=r.InternalError=Ot(Error,"InternalError"),gn(),Be=r.BindingError=Ot(Error,"BindingError"),xn(),r_(),e_(),zt=r.UnboundTypeError=Ot(Error,"UnboundTypeError"),f_();var Q_={t:yn,I:Ln,x:R_,w:a_,d:c_,k:A_,H:O_,n:B_,a:M_,A:C_,i:F_,j:G_,h:S_,B:N_,v:E_,u:V_,c:P_,J:p_,m:U_,s:h_,b:Gt,y:y_,p:m_,r:D_,e:I_,g:b_,q:H_,f:X_,l:x_,o:k_,E:$_,F:j_,G:Y_,C:z_,z:q_,D:Z_},fr=Un(),J_=r.___wasm_call_ctors=function(){return(J_=r.___wasm_call_ctors=r.asm.L).apply(null,arguments)},Nt=r._malloc=function(){return(Nt=r._malloc=r.asm.M).apply(null,arguments)},ne=r._free=function(){return(ne=r._free=r.asm.N).apply(null,arguments)},tn=r.___getTypeName=function(){return(tn=r.___getTypeName=r.asm.P).apply(null,arguments)},er=r.___embind_register_native_and_builtin_types=function(){return(er=r.___embind_register_native_and_builtin_types=r.asm.Q).apply(null,arguments)},tr=r.dynCall_jiji=function(){return(tr=r.dynCall_jiji=r.asm.R).apply(null,arguments)},st;function nr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Ve=function e(){st||Et(),st||(Ve=e)};function Et(e){if(e=e||L,Te>0||(Mn(),Te>0))return;function t(){st||(st=!0,r.calledRun=!0,!Ie&&(Kn(),Cn(),M(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Fn()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()}if(r.run=Et,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Et(),T.ready}}();typeof ot=="object"&&typeof pt=="object"?pt.exports=Pt:typeof define=="function"&&define.amd?define([],function(){return Pt}):typeof ot=="object"&&(ot.BASIS=Pt)});var C={UNSIGNED_BYTE:f.UNSIGNED_BYTE,UNSIGNED_SHORT:f.UNSIGNED_SHORT,UNSIGNED_INT:f.UNSIGNED_INT,FLOAT:f.FLOAT,HALF_FLOAT:f.HALF_FLOAT_OES,UNSIGNED_INT_24_8:f.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:f.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:f.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:f.UNSIGNED_SHORT_5_6_5};C.toWebGLConstant=function(s,T){switch(s){case C.UNSIGNED_BYTE:return f.UNSIGNED_BYTE;case C.UNSIGNED_SHORT:return f.UNSIGNED_SHORT;case C.UNSIGNED_INT:return f.UNSIGNED_INT;case C.FLOAT:return f.FLOAT;case C.HALF_FLOAT:return T.webgl2?f.HALF_FLOAT:f.HALF_FLOAT_OES;case C.UNSIGNED_INT_24_8:return f.UNSIGNED_INT_24_8;case C.UNSIGNED_SHORT_4_4_4_4:return f.UNSIGNED_SHORT_4_4_4_4;case C.UNSIGNED_SHORT_5_5_5_1:return f.UNSIGNED_SHORT_5_5_5_1;case C.UNSIGNED_SHORT_5_6_5:return C.UNSIGNED_SHORT_5_6_5}};C.isPacked=function(s){return s===C.UNSIGNED_INT_24_8||s===C.UNSIGNED_SHORT_4_4_4_4||s===C.UNSIGNED_SHORT_5_5_5_1||s===C.UNSIGNED_SHORT_5_6_5};C.sizeInBytes=function(s){switch(s){case C.UNSIGNED_BYTE:return 1;case C.UNSIGNED_SHORT:case C.UNSIGNED_SHORT_4_4_4_4:case C.UNSIGNED_SHORT_5_5_5_1:case C.UNSIGNED_SHORT_5_6_5:case C.HALF_FLOAT:return 2;case C.UNSIGNED_INT:case C.FLOAT:case C.UNSIGNED_INT_24_8:return 4}};C.validate=function(s){return s===C.UNSIGNED_BYTE||s===C.UNSIGNED_SHORT||s===C.UNSIGNED_INT||s===C.FLOAT||s===C.HALF_FLOAT||s===C.UNSIGNED_INT_24_8||s===C.UNSIGNED_SHORT_4_4_4_4||s===C.UNSIGNED_SHORT_5_5_5_1||s===C.UNSIGNED_SHORT_5_6_5};C.getTypedArrayConstructor=function(s){let T=C.sizeInBytes(s);return T===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:T===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:T===Float32Array.BYTES_PER_ELEMENT&&s===C.FLOAT?Float32Array:Uint32Array};var y=Object.freeze(C);var i={DEPTH_COMPONENT:f.DEPTH_COMPONENT,DEPTH_STENCIL:f.DEPTH_STENCIL,ALPHA:f.ALPHA,RED:f.RED,RG:f.RG,RGB:f.RGB,RGBA:f.RGBA,RED_INTEGER:f.RED_INTEGER,RG_INTEGER:f.RG_INTEGER,RGB_INTEGER:f.RGB_INTEGER,RGBA_INTEGER:f.RGBA_INTEGER,LUMINANCE:f.LUMINANCE,LUMINANCE_ALPHA:f.LUMINANCE_ALPHA,RGB_DXT1:f.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:f.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:f.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:f.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:f.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:f.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:f.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:f.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:f.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:f.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:f.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:f.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:f.COMPRESSED_RGBA_BPTC_UNORM};i.componentsLength=function(s){switch(s){case i.RGB:case i.RGB_INTEGER:return 3;case i.RGBA:case i.RGBA_INTEGER:return 4;case i.LUMINANCE_ALPHA:case i.RG:case i.RG_INTEGER:return 2;case i.ALPHA:case i.RED:case i.RED_INTEGER:case i.LUMINANCE:return 1;default:return 1}};i.validate=function(s){return s===i.DEPTH_COMPONENT||s===i.DEPTH_STENCIL||s===i.ALPHA||s===i.RED||s===i.RG||s===i.RGB||s===i.RGBA||s===i.RED_INTEGER||s===i.RG_INTEGER||s===i.RGB_INTEGER||s===i.RGBA_INTEGER||s===i.LUMINANCE||s===i.LUMINANCE_ALPHA||s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5||s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1||s===i.RGBA_ASTC||s===i.RGB_ETC1||s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC||s===i.RGBA_BC7};i.isColorFormat=function(s){return s===i.RED||s===i.ALPHA||s===i.RGB||s===i.RGBA||s===i.LUMINANCE||s===i.LUMINANCE_ALPHA};i.isDepthFormat=function(s){return s===i.DEPTH_COMPONENT||s===i.DEPTH_STENCIL};i.isCompressedFormat=function(s){return s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5||s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1||s===i.RGBA_ASTC||s===i.RGB_ETC1||s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC||s===i.RGBA_BC7};i.isDXTFormat=function(s){return s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5};i.isPVRTCFormat=function(s){return s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1};i.isASTCFormat=function(s){return s===i.RGBA_ASTC};i.isETC1Format=function(s){return s===i.RGB_ETC1};i.isETC2Format=function(s){return s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC};i.isBC7Format=function(s){return s===i.RGBA_BC7};i.compressedTextureSizeInBytes=function(s,T,r){switch(s){case i.RGB_DXT1:case i.RGBA_DXT1:case i.RGB_ETC1:case i.RGB8_ETC2:return Math.floor((T+3)/4)*Math.floor((r+3)/4)*8;case i.RGBA_DXT3:case i.RGBA_DXT5:case i.RGBA_ASTC:case i.RGBA8_ETC2_EAC:return Math.floor((T+3)/4)*Math.floor((r+3)/4)*16;case i.RGB_PVRTC_4BPPV1:case i.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(T,8)*Math.max(r,8)*4+7)/8);case i.RGB_PVRTC_2BPPV1:case i.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(T,16)*Math.max(r,8)*2+7)/8);case i.RGBA_BC7:return Math.ceil(T/4)*Math.ceil(r/4)*16;default:return 0}};i.textureSizeInBytes=function(s,T,r,M){let B=i.componentsLength(s);return y.isPacked(T)&&(B=1),B*y.sizeInBytes(T)*r*M};i.texture3DSizeInBytes=function(s,T,r,M,B){let E=i.componentsLength(s);return y.isPacked(T)&&(E=1),E*y.sizeInBytes(T)*r*M*B};i.alignmentInBytes=function(s,T,r){let M=i.textureSizeInBytes(s,T,r,1)%4;return M===0?4:M===2?2:1};i.createTypedArray=function(s,T,r,M){let B=y.getTypedArrayConstructor(T),E=i.componentsLength(s)*r*M;return new B(E)};i.flipY=function(s,T,r,M,B){if(B===1)return s;let E=i.createTypedArray(T,r,M,B),F=i.componentsLength(T),L=M*F;for(let D=0;D<B;++D){let b=D*M*F,N=(B-D-1)*M*F;for(let d=0;d<L;++d)E[N+d]=s[b+d]}return E};i.toInternalFormat=function(s,T,r){if(!r.webgl2)return s;if(s===i.DEPTH_STENCIL)return f.DEPTH24_STENCIL8;if(s===i.DEPTH_COMPONENT){if(T===y.UNSIGNED_SHORT)return f.DEPTH_COMPONENT16;if(T===y.UNSIGNED_INT)return f.DEPTH_COMPONENT24}if(T===y.FLOAT)switch(s){case i.RGBA:return f.RGBA32F;case i.RGB:return f.RGB32F;case i.RG:return f.RG32F;case i.RED:return f.R32F}if(T===y.HALF_FLOAT)switch(s){case i.RGBA:return f.RGBA16F;case i.RGB:return f.RGB16F;case i.RG:return f.RG16F;case i.RED:return f.R16F}if(T===y.UNSIGNED_BYTE)switch(s){case i.RGBA:return f.RGBA8;case i.RGB:return f.RGB8;case i.RG:return f.RG8;case i.RED:return f.R8}if(T===y.INT)switch(s){case i.RGBA_INTEGER:return f.RGBA32I;case i.RGB_INTEGER:return f.RGB32I;case i.RG_INTEGER:return f.RG32I;case i.RED_INTEGER:return f.R32I}if(T===y.UNSIGNED_INT)switch(s){case i.RGBA_INTEGER:return f.RGBA32UI;case i.RGB_INTEGER:return f.RGB32UI;case i.RG_INTEGER:return f.RG32UI;case i.RED_INTEGER:return f.R32UI}return s};var U=Object.freeze(i);var or={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},me=Object.freeze(or);function ir(){return{vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null}}var fe=class{constructor(T,r,M,B){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(T.buffer,T.byteOffset+r,M),this._littleEndian=B,this._offset=0}_nextUint8(){let T=this._dataView.getUint8(this._offset);return this._offset+=1,T}_nextUint16(){let T=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,T}_nextUint32(){let T=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,T}_nextUint64(){let T=this._dataView.getUint32(this._offset,this._littleEndian),r=this._dataView.getUint32(this._offset+4,this._littleEndian),M=T+2**32*r;return this._offset+=8,M}_nextInt32(){let T=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,T}_nextUint8Array(T){let r=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,T);return this._offset+=T,r}_skip(T){return this._offset+=T,this}_scan(T,r=0){let M=this._offset,B=0;for(;this._dataView.getUint8(this._offset)!==r&&B<T;)B++,this._offset++;return B<T&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+M,B)}};var Fr=new Uint8Array([0]),H=[171,75,84,88,32,50,48,187,13,10,26,10];function Rn(s){return new TextDecoder().decode(s)}function an(s){let T=new Uint8Array(s.buffer,s.byteOffset,H.length);if(T[0]!==H[0]||T[1]!==H[1]||T[2]!==H[2]||T[3]!==H[3]||T[4]!==H[4]||T[5]!==H[5]||T[6]!==H[6]||T[7]!==H[7]||T[8]!==H[8]||T[9]!==H[9]||T[10]!==H[10]||T[11]!==H[11])throw new Error("Missing KTX 2.0 identifier.");let r=ir(),M=17*Uint32Array.BYTES_PER_ELEMENT,B=new fe(s,H.length,M,!0);r.vkFormat=B._nextUint32(),r.typeSize=B._nextUint32(),r.pixelWidth=B._nextUint32(),r.pixelHeight=B._nextUint32(),r.pixelDepth=B._nextUint32(),r.layerCount=B._nextUint32(),r.faceCount=B._nextUint32();let E=B._nextUint32();r.supercompressionScheme=B._nextUint32();let F=B._nextUint32(),L=B._nextUint32(),D=B._nextUint32(),b=B._nextUint32(),N=B._nextUint64(),d=B._nextUint64(),P=E*3*8,Q=new fe(s,H.length+M,P,!0);for(let v=0;v<E;v++)r.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});let O=new fe(s,F,L,!0);O._skip(4);let W=O._nextUint16(),J=O._nextUint16(),ae=O._nextUint16(),j=O._nextUint16(),Ke=O._nextUint8(),Ce=O._nextUint8(),Fe=O._nextUint8(),it=O._nextUint8(),se=[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],Rt=[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],oe={vendorId:W,descriptorType:J,versionNumber:ae,colorModel:Ke,colorPrimaries:Ce,transferFunction:Fe,flags:it,texelBlockDimension:se,bytesPlane:Rt,samples:[]},Ie=(j/4-6)/4;for(let v=0;v<Ie;v++){let p={bitOffset:O._nextUint16(),bitLength:O._nextUint8(),channelType:O._nextUint8(),samplePosition:[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};p.channelType&64?(p.sampleLower=O._nextInt32(),p.sampleUpper=O._nextInt32()):(p.sampleLower=O._nextUint32(),p.sampleUpper=O._nextUint32()),oe.samples[v]=p}r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(oe);let ce=new fe(s,D,b,!0);for(;ce._offset<b;){let v=ce._nextUint32(),p=ce._scan(v),k=Rn(p);if(r.keyValue[k]=ce._nextUint8Array(v-p.byteLength-1),k.match(/^ktx/i)){let m=Rn(r.keyValue[k]);r.keyValue[k]=m.substring(0,m.lastIndexOf("\0"))}let Ae=v%4?4-v%4:0;ce._skip(Ae)}if(d<=0)return r;let I=new fe(s,N,d,!0),be=I._nextUint16(),we=I._nextUint16(),Ge=I._nextUint32(),He=I._nextUint32(),Xe=I._nextUint32(),at=I._nextUint32(),Se=[];for(let v=0;v<E;v++)Se.push({imageFlags:I._nextUint32(),rgbSliceByteOffset:I._nextUint32(),rgbSliceByteLength:I._nextUint32(),alphaSliceByteOffset:I._nextUint32(),alphaSliceByteLength:I._nextUint32()});let xe=N+I._offset,ke=xe+Ge,$e=ke+He,ct=$e+Xe,At=new Uint8Array(s.buffer,s.byteOffset+xe,Ge),Tt=new Uint8Array(s.buffer,s.byteOffset+ke,He),ut=new Uint8Array(s.buffer,s.byteOffset+$e,Xe),Ne=new Uint8Array(s.buffer,s.byteOffset+ct,at);return r.globalData={endpointCount:be,selectorCount:we,imageDescs:Se,endpointsData:At,selectorsData:Tt,tablesData:ut,extendedData:Ne},r}var An=sr(cn(),1),Tn=["positiveX","negativeX","positiveY","negativeY","positiveZ","negativeZ"],un=163,fn=166,De;function Rr(s,T){sn.typeOf.object("transcoderModule",De);let r=s.ktx2Buffer,M=s.supportedTargetFormats,B;try{B=an(r)}catch{throw new re("Invalid KTX2 file.")}if(B.layerCount!==0)throw new re("KTX2 texture arrays are not supported.");if(B.pixelDepth!==0)throw new re("KTX2 3D textures are unsupported.");let E=B.dataFormatDescriptor[0],F=new Array(B.levelCount);return B.vkFormat===0&&(E.colorModel===un||E.colorModel===fn)?cr(r,B,M,De,T,F):(T.push(r.buffer),ar(B,F)),F}function ar(s,T){let r=s.vkFormat===me.VK_FORMAT_R8G8B8_SRGB?U.RGB:U.RGBA,M;s.vkFormat===me.VK_FORMAT_R8G8B8A8_UNORM?M=y.UNSIGNED_BYTE:s.vkFormat===me.VK_FORMAT_R16G16B16A16_SFLOAT?M=y.HALF_FLOAT:s.vkFormat===me.VK_FORMAT_R32G32B32A32_SFLOAT&&(M=y.FLOAT);for(let B=0;B<s.levels.length;++B){let E={};T[B]=E;let F=s.levels[B].levelData,L=s.pixelWidth>>B,D=s.pixelHeight>>B,b=L*D*U.componentsLength(r);for(let N=0;N<s.faceCount;++N){let d=F.byteOffset+b*s.typeSize*N,P;!Le(M)||y.sizeInBytes(M)===1?P=new Uint8Array(F.buffer,d,b):y.sizeInBytes(M)===2?P=new Uint16Array(F.buffer,d,b):P=new Float32Array(F.buffer,d,b),E[Tn[N]]={internalFormat:r,datatype:M,width:L,height:D,levelBuffer:P}}}}function cr(s,T,r,M,B,E){let F=new M.KTX2File(s),L=F.getWidth(),D=F.getHeight(),b=F.getLevels(),N=F.getHasAlpha();if(!(L>0)||!(D>0)||!(b>0))throw F.close(),F.delete(),new re("Invalid KTX2 file");let d,P,Q=T.dataFormatDescriptor[0],O=M.transcoder_texture_format;if(Q.colorModel===un)if(r.etc)d=N?U.RGBA8_ETC2_EAC:U.RGB8_ETC2,P=N?O.cTFETC2_RGBA:O.cTFETC1_RGB;else if(r.etc1&&!N)d=U.RGB_ETC1,P=O.cTFETC1_RGB;else if(r.s3tc)d=N?U.RGBA_DXT5:U.RGB_DXT1,P=N?O.cTFBC3_RGBA:O.cTFBC1_RGB;else if(r.pvrtc)d=N?U.RGBA_PVRTC_4BPPV1:U.RGB_PVRTC_4BPPV1,P=N?O.cTFPVRTC1_4_RGBA:O.cTFPVRTC1_4_RGB;else if(r.astc)d=U.RGBA_ASTC,P=O.cTFASTC_4x4_RGBA;else if(r.bc7)d=U.RGBA_BC7,P=O.cTFBC7_RGBA;else throw new re("No transcoding format target available for ETC1S compressed ktx2.");else if(Q.colorModel===fn)if(r.astc)d=U.RGBA_ASTC,P=O.cTFASTC_4x4_RGBA;else if(r.bc7)d=U.RGBA_BC7,P=O.cTFBC7_RGBA;else if(r.s3tc)d=N?U.RGBA_DXT5:U.RGB_DXT1,P=N?O.cTFBC3_RGBA:O.cTFBC1_RGB;else if(r.etc)d=N?U.RGBA8_ETC2_EAC:U.RGB8_ETC2,P=N?O.cTFETC2_RGBA:O.cTFETC1_RGB;else if(r.etc1&&!N)d=U.RGB_ETC1,P=O.cTFETC1_RGB;else if(r.pvrtc)d=N?U.RGBA_PVRTC_4BPPV1:U.RGB_PVRTC_4BPPV1,P=N?O.cTFPVRTC1_4_RGBA:O.cTFPVRTC1_4_RGB;else throw new re("No transcoding format target available for UASTC compressed ktx2.");if(!F.startTranscoding())throw F.close(),F.delete(),new re("startTranscoding() failed");for(let W=0;W<T.levels.length;++W){let J={};E[W]=J,L=T.pixelWidth>>W,D=T.pixelHeight>>W;let ae=F.getImageTranscodedSizeInBytes(W,0,0,P.value),j=new Uint8Array(ae),Ke=F.transcodeImage(j,W,0,0,P.value,0,-1,-1);if(!Le(Ke))throw new re("transcodeImage() failed.");B.push(j.buffer),J[Tn[0]]={internalFormat:d,width:L,height:D,levelBuffer:j}}return F.close(),F.delete(),E}async function Ar(s,T){let r=s.webAssemblyConfig,M=An.default??self.BASIS;return Le(r.wasmBinaryFile)?De=await M(r):De=await M(),De.initializeBasis(),!0}function Tr(s,T){let r=s.webAssemblyConfig;return Le(r)?Ar(s,T):Rr(s,T)}var vr=on(Tr);export{vr as default}; diff --git a/public/Cesium/Workers/transferTypedArrayTest.js b/public/Cesium/Workers/transferTypedArrayTest.js new file mode 100644 index 000000000..72e4101ff --- /dev/null +++ b/public/Cesium/Workers/transferTypedArrayTest.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +self.onmessage=function(a){let s=a.data.array,e=self.webkitPostMessage||self.postMessage;try{e({array:s},[s.buffer])}catch{e({})}}; diff --git a/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js b/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js new file mode 100644 index 000000000..a723eadda --- /dev/null +++ b/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as be,b as Ne}from"./chunk-7HTKERZY.js";import{a as Ae}from"./chunk-WZDE3RYP.js";import{a as ue}from"./chunk-CNCV5UL7.js";import{a as ee}from"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as Ve}from"./chunk-OFUUQVMR.js";import{d as de}from"./chunk-4IW2T6GF.js";import{h as Se}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as A,b as Ie,c as Z,d as Ce}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as V,b as q}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var ne={};ne.clipTriangleAtAxisAlignedThreshold=function(n,h,o,i,s,e){if(!f(n))throw new V("threshold is required.");if(!f(h))throw new V("keepAbove is required.");if(!f(o))throw new V("u0 is required.");if(!f(i))throw new V("u1 is required.");if(!f(s))throw new V("u2 is required.");f(e)?e.length=0:e=[];let g,w,c;h?(g=o<n,w=i<n,c=s<n):(g=o>n,w=i>n,c=s>n);let p=g+w+c,d,u,r,l,I,C;return p===1?g?(d=(n-o)/(i-o),u=(n-o)/(s-o),e.push(1),e.push(2),u!==1&&(e.push(-1),e.push(0),e.push(2),e.push(u)),d!==1&&(e.push(-1),e.push(0),e.push(1),e.push(d))):w?(r=(n-i)/(s-i),l=(n-i)/(o-i),e.push(2),e.push(0),l!==1&&(e.push(-1),e.push(1),e.push(0),e.push(l)),r!==1&&(e.push(-1),e.push(1),e.push(2),e.push(r))):c&&(I=(n-s)/(o-s),C=(n-s)/(i-s),e.push(0),e.push(1),C!==1&&(e.push(-1),e.push(2),e.push(1),e.push(C)),I!==1&&(e.push(-1),e.push(2),e.push(0),e.push(I))):p===2?!g&&o!==n?(l=(n-i)/(o-i),I=(n-s)/(o-s),e.push(0),e.push(-1),e.push(1),e.push(0),e.push(l),e.push(-1),e.push(2),e.push(0),e.push(I)):!w&&i!==n?(C=(n-s)/(i-s),d=(n-o)/(i-o),e.push(1),e.push(-1),e.push(2),e.push(1),e.push(C),e.push(-1),e.push(0),e.push(1),e.push(d)):!c&&s!==n&&(u=(n-o)/(s-o),r=(n-i)/(s-i),e.push(2),e.push(-1),e.push(0),e.push(2),e.push(u),e.push(-1),e.push(1),e.push(2),e.push(r)):p!==3&&(e.push(0),e.push(1),e.push(2)),e};ne.computeBarycentricCoordinates=function(n,h,o,i,s,e,g,w,c){if(!f(n))throw new V("x is required.");if(!f(h))throw new V("y is required.");if(!f(o))throw new V("x1 is required.");if(!f(i))throw new V("y1 is required.");if(!f(s))throw new V("x2 is required.");if(!f(e))throw new V("y2 is required.");if(!f(g))throw new V("x3 is required.");if(!f(w))throw new V("y3 is required.");let p=o-g,d=g-s,u=e-w,r=i-w,l=1/(u*p+d*r),I=h-w,C=n-g,R=(u*C+d*I)*l,O=(-r*C+p*I)*l,W=1-R-O;return f(c)?(c.x=R,c.y=O,c.z=W,c):new A(R,O,W)};ne.computeLineSegmentLineSegmentIntersection=function(n,h,o,i,s,e,g,w,c){q.typeOf.number("x00",n),q.typeOf.number("y00",h),q.typeOf.number("x01",o),q.typeOf.number("y01",i),q.typeOf.number("x10",s),q.typeOf.number("y10",e),q.typeOf.number("x11",g),q.typeOf.number("y11",w);let p=(g-s)*(h-e)-(w-e)*(n-s),d=(o-n)*(h-e)-(i-h)*(n-s),u=(w-e)*(o-n)-(g-s)*(i-h);if(u===0)return;let r=p/u,l=d/u;if(r>=0&&r<=1&&l>=0&&l<=1)return f(c)||(c=new Z),c.x=n+r*(o-n),c.y=h+r*(i-h),c};var ie=ne;var a=32767,z=a/2|0,Me=[],ze=[],Xe=[],te=new Ie,E=new A,Ke=[],We=[],Ye=[],Le=[],_e=[],Je=new A,Qe=new de,Ze=new ue,Ge=new Z,$e=new A;function je(n,h){let o=n.isEastChild,i=n.isNorthChild,s=o?z:0,e=o?a:z,g=i?z:0,w=i?a:z,c=Ke,p=We,d=Ye,u=_e;c.length=0,p.length=0,d.length=0,u.length=0;let r=Le;r.length=0;let l={},I=n.vertices,C=n.indices;C=C.subarray(0,n.indexCountWithoutSkirts);let R=Ne.clone(n.encoding),O=R.hasVertexNormals,W=0,Y=n.vertexCountWithoutSkirts,se=n.minimumHeight,ae=n.maximumHeight,D=new Array(Y),G=new Array(Y),L=new Array(Y),F=O?new Array(Y*2):void 0,$=20,H,t,k,x,y;for(t=0,k=0;t<Y;++t,k+=2){let v=R.decodeTextureCoordinates(I,t,Ge);if(H=R.decodeHeight(I,t),x=N.clamp(v.x*a|0,0,a),y=N.clamp(v.y*a|0,0,a),L[t]=N.clamp((H-se)/(ae-se)*a|0,0,a),x<$&&(x=0),y<$&&(y=0),a-x<$&&(x=a),a-y<$&&(y=a),D[t]=x,G[t]=y,O){let Q=R.getOctEncodedNormal(I,t,$e);F[k]=Q.x,F[k+1]=Q.y}(o&&x>=z||!o&&x<=z)&&(i&&y>=z||!i&&y<=z)&&(l[t]=W,c.push(x),p.push(y),d.push(L[t]),O&&(u.push(F[k]),u.push(F[k+1])),++W)}let T=[];T.push(new m),T.push(new m),T.push(new m);let B=[];B.push(new m),B.push(new m),B.push(new m);let b,j;for(t=0;t<C.length;t+=3){let v=C[t],Q=C[t+1],Be=C[t+2],De=D[v],Fe=D[Q],ke=D[Be];T[0].initializeIndexed(D,G,L,F,v),T[1].initializeIndexed(D,G,L,F,Q),T[2].initializeIndexed(D,G,L,F,Be);let P=ie.clipTriangleAtAxisAlignedThreshold(z,o,De,Fe,ke,Me);b=0,!(b>=P.length)&&(b=B[0].initializeFromClipResult(P,b,T),!(b>=P.length)&&(b=B[1].initializeFromClipResult(P,b,T),!(b>=P.length)&&(b=B[2].initializeFromClipResult(P,b,T),j=ie.clipTriangleAtAxisAlignedThreshold(z,i,B[0].getV(),B[1].getV(),B[2].getV(),ze),Oe(c,p,d,u,r,l,j,B,O),b<P.length&&(B[2].clone(B[1]),B[2].initializeFromClipResult(P,b,T),j=ie.clipTriangleAtAxisAlignedThreshold(z,i,B[0].getV(),B[1].getV(),B[2].getV(),ze),Oe(c,p,d,u,r,l,j,B,O)))))}let He=o?-a:0,qe=i?-a:0,me=[],ge=[],le=[],we=[],U=Number.MAX_VALUE,_=-U,M=Xe;M.length=0;let re=Ce.clone(n.ellipsoid),J=Se.clone(n.childRectangle),Ee=J.north,Re=J.south,ce=J.east,xe=J.west;for(ce<xe&&(ce+=N.TWO_PI),t=0;t<c.length;++t)x=Math.round(c[t]),x<=s?(me.push(t),x=0):x>=e?(le.push(t),x=a):x=x*2+He,c[t]=x,y=Math.round(p[t]),y<=g?(ge.push(t),y=0):y>=w?(we.push(t),y=a):y=y*2+qe,p[t]=y,H=N.lerp(se,ae,d[t]/a),H<U&&(U=H),H>_&&(_=H),d[t]=H,te.longitude=N.lerp(xe,ce,x/a),te.latitude=N.lerp(Re,Ee,y/a),te.height=H,re.cartographicToCartesian(te,E),M.push(E.x),M.push(E.y),M.push(E.z);let he=de.fromVertices(M,A.ZERO,3,Qe),Ue=ue.fromRectangle(J,U,_,re,Ze),ve=new be(re).computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(he.center,M,3,he.center,U,Je),Pe=_-U,X=new Uint16Array(c.length+p.length+d.length);for(t=0;t<c.length;++t)X[t]=c[t];let fe=c.length;for(t=0;t<p.length;++t)X[fe+t]=p[t];for(fe+=p.length,t=0;t<d.length;++t)X[fe+t]=a*(d[t]-U)/Pe;let pe=Ve.createTypedArray(c.length,r),ye;if(O){let v=new Uint8Array(u);h.push(X.buffer,pe.buffer,v.buffer),ye=v.buffer}else h.push(X.buffer,pe.buffer);return{vertices:X.buffer,encodedNormals:ye,indices:pe.buffer,minimumHeight:U,maximumHeight:_,westIndices:me,southIndices:ge,eastIndices:le,northIndices:we,boundingSphere:he,orientedBoundingBox:Ue,horizonOcclusionPoint:ve}}function m(){this.vertexBuffer=void 0,this.index=void 0,this.first=void 0,this.second=void 0,this.ratio=void 0}m.prototype.clone=function(n){return f(n)||(n=new m),n.uBuffer=this.uBuffer,n.vBuffer=this.vBuffer,n.heightBuffer=this.heightBuffer,n.normalBuffer=this.normalBuffer,n.index=this.index,n.first=this.first,n.second=this.second,n.ratio=this.ratio,n};m.prototype.initializeIndexed=function(n,h,o,i,s){this.uBuffer=n,this.vBuffer=h,this.heightBuffer=o,this.normalBuffer=i,this.index=s,this.first=void 0,this.second=void 0,this.ratio=void 0};m.prototype.initializeFromClipResult=function(n,h,o){let i=h+1;return n[h]!==-1?o[n[h]].clone(this):(this.vertexBuffer=void 0,this.index=void 0,this.first=o[n[i]],++i,this.second=o[n[i]],++i,this.ratio=n[i],++i),i};m.prototype.getKey=function(){return this.isIndexed()?this.index:JSON.stringify({first:this.first.getKey(),second:this.second.getKey(),ratio:this.ratio})};m.prototype.isIndexed=function(){return f(this.index)};m.prototype.getH=function(){return f(this.index)?this.heightBuffer[this.index]:N.lerp(this.first.getH(),this.second.getH(),this.ratio)};m.prototype.getU=function(){return f(this.index)?this.uBuffer[this.index]:N.lerp(this.first.getU(),this.second.getU(),this.ratio)};m.prototype.getV=function(){return f(this.index)?this.vBuffer[this.index]:N.lerp(this.first.getV(),this.second.getV(),this.ratio)};var K=new Z,oe=-1,en=[new A,new A],nn=[new A,new A];function Te(n,h){++oe;let o=en[oe],i=nn[oe];return o=ee.octDecode(n.first.getNormalX(),n.first.getNormalY(),o),i=ee.octDecode(n.second.getNormalX(),n.second.getNormalY(),i),E=A.lerp(o,i,n.ratio,E),A.normalize(E,E),ee.octEncode(E,h),--oe,h}m.prototype.getNormalX=function(){return f(this.index)?this.normalBuffer[this.index*2]:(K=Te(this,K),K.x)};m.prototype.getNormalY=function(){return f(this.index)?this.normalBuffer[this.index*2+1]:(K=Te(this,K),K.y)};var S=[];S.push(new m);S.push(new m);S.push(new m);S.push(new m);function Oe(n,h,o,i,s,e,g,w,c){if(g.length===0)return;let p=0,d=0;for(;d<g.length;)d=S[p++].initializeFromClipResult(g,d,w);for(let u=0;u<p;++u){let r=S[u];if(r.isIndexed())r.newIndex=e[r.index],r.uBuffer=n,r.vBuffer=h,r.heightBuffer=o,c&&(r.normalBuffer=i);else{let l=r.getKey();if(f(e[l]))r.newIndex=e[l];else{let I=n.length;n.push(r.getU()),h.push(r.getV()),o.push(r.getH()),c&&(i.push(r.getNormalX()),i.push(r.getNormalY())),r.newIndex=I,e[l]=I}}}p===3?(s.push(S[0].newIndex),s.push(S[1].newIndex),s.push(S[2].newIndex)):p===4&&(s.push(S[0].newIndex),s.push(S[1].newIndex),s.push(S[2].newIndex),s.push(S[0].newIndex),s.push(S[2].newIndex),s.push(S[3].newIndex))}var An=Ae(je);export{An as default}; diff --git a/public/Cesium/index.cjs b/public/Cesium/index.cjs new file mode 100644 index 000000000..e8809abc1 --- /dev/null +++ b/public/Cesium/index.cjs @@ -0,0 +1,16264 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var $we=Object.create;var zU=Object.defineProperty;var eBe=Object.getOwnPropertyDescriptor;var tBe=Object.getOwnPropertyNames;var nBe=Object.getPrototypeOf,iBe=Object.prototype.hasOwnProperty;var oBe=(e,t)=>()=>(e&&(t=e(e=0)),t);var ui=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Cte=(e,t)=>{for(var n in t)zU(e,n,{get:t[n],enumerable:!0})},Ete=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of tBe(t))!iBe.call(e,o)&&o!==n&&zU(e,o,{get:()=>t[o],enumerable:!(i=eBe(t,o))||i.enumerable});return e};var xr=(e,t,n)=>(n=e!=null?$we(nBe(e)):{},Ete(t||!e||!e.__esModule?zU(n,"default",{value:e,enumerable:!0}):n,e)),nh=e=>Ete(zU({},"__esModule",{value:!0}),e);var VU=ui((cMt,Ite)=>{var qA=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};qA.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};qA.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};qA.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};qA.prototype.random_int31=function(){return this.random_int()>>>1};qA.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};qA.prototype.random=function(){return this.random_int()*(1/4294967296)};qA.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};qA.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};Ite.exports=qA});var Lte=ui((Qx,kx)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof Qx=="object"&&Qx&&!Qx.nodeType&&Qx,n=typeof kx=="object"&&kx&&!kx.nodeType&&kx,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,A=128,g="-",m=/^xn--/,_=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,C={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=s-a,I=Math.floor,b=String.fromCharCode,S;function B(Q){throw new RangeError(C[Q])}function v(Q,z){for(var F=Q.length,H=[];F--;)H[F]=z(Q[F]);return H}function P(Q,z){var F=Q.split("@"),H="";F.length>1&&(H=F[0]+"@",Q=F[1]),Q=Q.replace(y,".");var W=Q.split("."),Z=v(W,z).join(".");return H+Z}function M(Q){for(var z=[],F=0,H=Q.length,W,Z;F<H;)W=Q.charCodeAt(F++),W>=55296&&W<=56319&&F<H?(Z=Q.charCodeAt(F++),(Z&64512)==56320?z.push(((W&1023)<<10)+(Z&1023)+65536):(z.push(W),F--)):z.push(W);return z}function L(Q){return v(Q,function(z){var F="";return z>65535&&(z-=65536,F+=b(z>>>10&1023|55296),z=56320|z&1023),F+=b(z),F}).join("")}function p(Q){return Q-48<10?Q-22:Q-65<26?Q-65:Q-97<26?Q-97:s}function x(Q,z){return Q+22+75*(Q<26)-((z!=0)<<5)}function T(Q,z,F){var H=0;for(Q=F?I(Q/f):Q>>1,Q+=I(Q/z);Q>E*c>>1;H+=s)Q=I(Q/E);return I(H+(E+1)*Q/(Q+u))}function w(Q){var z=[],F=Q.length,H,W=0,Z=A,Y=h,$,X,he,ge,fe,ye,xe,ve,Te;for($=Q.lastIndexOf(g),$<0&&($=0),X=0;X<$;++X)Q.charCodeAt(X)>=128&&B("not-basic"),z.push(Q.charCodeAt(X));for(he=$>0?$+1:0;he<F;){for(ge=W,fe=1,ye=s;he>=F&&B("invalid-input"),xe=p(Q.charCodeAt(he++)),(xe>=s||xe>I((r-W)/fe))&&B("overflow"),W+=xe*fe,ve=ye<=Y?a:ye>=Y+c?c:ye-Y,!(xe<ve);ye+=s)Te=s-ve,fe>I(r/Te)&&B("overflow"),fe*=Te;H=z.length+1,Y=T(W-ge,H,ge==0),I(W/H)>r-Z&&B("overflow"),Z+=I(W/H),W%=H,z.splice(W++,0,Z)}return L(z)}function R(Q){var z,F,H,W,Z,Y,$,X,he,ge,fe,ye=[],xe,ve,Te,ke;for(Q=M(Q),xe=Q.length,z=A,F=0,Z=h,Y=0;Y<xe;++Y)fe=Q[Y],fe<128&&ye.push(b(fe));for(H=W=ye.length,W&&ye.push(g);H<xe;){for($=r,Y=0;Y<xe;++Y)fe=Q[Y],fe>=z&&fe<$&&($=fe);for(ve=H+1,$-z>I((r-F)/ve)&&B("overflow"),F+=($-z)*ve,z=$,Y=0;Y<xe;++Y)if(fe=Q[Y],fe<z&&++F>r&&B("overflow"),fe==z){for(X=F,he=s;ge=he<=Z?a:he>=Z+c?c:he-Z,!(X<ge);he+=s)ke=X-ge,Te=s-ge,ye.push(b(x(ge+ke%Te,0))),X=I(ke/Te);ye.push(b(x(X,0))),Z=T(F,ve,H==W),F=0,++H}++F,++z}return ye.join("")}function O(Q){return P(Q,function(z){return m.test(z)?w(z.slice(4).toLowerCase()):z})}function k(Q){return P(Q,function(z){return _.test(z)?"xn--"+R(z):z})}if(o={version:"1.3.2",ucs2:{decode:M,encode:L},decode:w,encode:R,toASCII:k,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(kx.exports==t)n.exports=o;else for(S in o)o.hasOwnProperty(S)&&(t[S]=o[S]);else e.punycode=o})(Qx)});var Fte=ui((Ote,ZU)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof ZU=="object"&&ZU.exports?ZU.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(Ote,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var A=0;A<3&&(f[0]==="0"&&f.length>1);A++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,_=0,y=-1,C=!1;for(h=0;h<c;h++)C?s[h]==="0"?_+=1:(C=!1,_>m&&(g=y,m=_)):s[h]==="0"&&(C=!0,y=h,_=1);_>m&&(g=y,m=_),m>1&&s.splice(g,m,""),a=s.length;var E="";for(s[0]===""&&(E=":"),h=0;h<a&&(E+=s[h],h!==a-1);h++)E+=":";return s[a-1]===""&&(E+=":"),E}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var kte=ui((Qte,$U)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof $U=="object"&&$U.exports?$U.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(Qte,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var Ou=ui((Ute,eG)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof eG=="object"&&eG.exports?eG.exports=t(Lte(),Fte(),kte()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(Ute,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(x,T){var w=arguments.length>=1,R=arguments.length>=2;if(!(this instanceof r))return w?R?new r(x,T):new r(x):new r;if(x===void 0){if(w)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?x=location.href+"":x=""}if(x===null&&w)throw new TypeError("null is not a valid argument for URI");return this.href(x),T!==void 0?this.absoluteTo(T):this}function s(x){return/^[0-9]+$/.test(x)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(x){return x.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(x){return x===void 0?"Undefined":String(Object.prototype.toString.call(x)).slice(8,-1)}function h(x){return f(x)==="Array"}function A(x,T){var w={},R,O;if(f(T)==="RegExp")w=null;else if(h(T))for(R=0,O=T.length;R<O;R++)w[T[R]]=!0;else w[T]=!0;for(R=0,O=x.length;R<O;R++){var k=w&&w[x[R]]!==void 0||!w&&T.test(x[R]);k&&(x.splice(R,1),O--,R--)}return x}function g(x,T){var w,R;if(h(T)){for(w=0,R=T.length;w<R;w++)if(!g(x,T[w]))return!1;return!0}var O=f(T);for(w=0,R=x.length;w<R;w++)if(O==="RegExp"){if(typeof x[w]=="string"&&x[w].match(T))return!0}else if(x[w]===T)return!0;return!1}function m(x,T){if(!h(x)||!h(T)||x.length!==T.length)return!1;x.sort(),T.sort();for(var w=0,R=x.length;w<R;w++)if(x[w]!==T[w])return!1;return!0}function _(x){var T=/^\/+|\/+$/g;return x.replace(T,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(x){if(!(!x||!x.nodeName)){var T=x.nodeName.toLowerCase();if(!(T==="input"&&x.type!=="image"))return r.domAttributes[T]}};function y(x){return escape(x)}function C(x){return encodeURIComponent(x).replace(/[!'()*]/g,y).replace(/\*/g,"%2A")}r.encode=C,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=C,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(x,T){var w=r.encode(x+"");return T===void 0&&(T=r.escapeQuerySpace),T?w.replace(/%20/g,"+"):w},r.decodeQuery=function(x,T){x+="",T===void 0&&(T=r.escapeQuerySpace);try{return r.decode(T?x.replace(/\+/g,"%20"):x)}catch{return x}};var E={encode:"encode",decode:"decode"},I,b=function(x,T){return function(w){try{return r[T](w+"").replace(r.characters[x][T].expression,function(R){return r.characters[x][T].map[R]})}catch{return w}}};for(I in E)r[I+"PathSegment"]=b("pathname",E[I]),r[I+"UrnPathSegment"]=b("urnpath",E[I]);var S=function(x,T,w){return function(R){var O;w?O=function(F){return r[T](r[w](F))}:O=r[T];for(var k=(R+"").split(x),Q=0,z=k.length;Q<z;Q++)k[Q]=O(k[Q]);return k.join(x)}};r.decodePath=S("/","decodePathSegment"),r.decodeUrnPath=S(":","decodeUrnPathSegment"),r.recodePath=S("/","encodePathSegment","decode"),r.recodeUrnPath=S(":","encodeUrnPathSegment","decode"),r.encodeReserved=b("reserved","encode"),r.parse=function(x,T){var w;return T||(T={preventInvalidHostname:r.preventInvalidHostname}),x=x.replace(r.leading_whitespace_expression,""),x=x.replace(r.ascii_tab_whitespace,""),w=x.indexOf("#"),w>-1&&(T.fragment=x.substring(w+1)||null,x=x.substring(0,w)),w=x.indexOf("?"),w>-1&&(T.query=x.substring(w+1)||null,x=x.substring(0,w)),x=x.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),x=x.replace(/^[/\\]{2,}/i,"//"),x.substring(0,2)==="//"?(T.protocol=null,x=x.substring(2),x=r.parseAuthority(x,T)):(w=x.indexOf(":"),w>-1&&(T.protocol=x.substring(0,w)||null,T.protocol&&!T.protocol.match(r.protocol_expression)?T.protocol=void 0:x.substring(w+1,w+3).replace(/\\/g,"/")==="//"?(x=x.substring(w+3),x=r.parseAuthority(x,T)):(x=x.substring(w+1),T.urn=!0))),T.path=x,T},r.parseHost=function(x,T){x||(x=""),x=x.replace(/\\/g,"/");var w=x.indexOf("/"),R,O;if(w===-1&&(w=x.length),x.charAt(0)==="[")R=x.indexOf("]"),T.hostname=x.substring(1,R)||null,T.port=x.substring(R+2,w)||null,T.port==="/"&&(T.port=null);else{var k=x.indexOf(":"),Q=x.indexOf("/"),z=x.indexOf(":",k+1);z!==-1&&(Q===-1||z<Q)?(T.hostname=x.substring(0,w)||null,T.port=null):(O=x.substring(0,w).split(":"),T.hostname=O[0]||null,T.port=O[1]||null)}return T.hostname&&x.substring(w).charAt(0)!=="/"&&(w++,x="/"+x),T.preventInvalidHostname&&r.ensureValidHostname(T.hostname,T.protocol),T.port&&r.ensureValidPort(T.port),x.substring(w)||"/"},r.parseAuthority=function(x,T){return x=r.parseUserinfo(x,T),r.parseHost(x,T)},r.parseUserinfo=function(x,T){var w=x,R=x.indexOf("\\");R!==-1&&(x=x.replace(/\\/g,"/"));var O=x.indexOf("/"),k=x.lastIndexOf("@",O>-1?O:x.length-1),Q;return k>-1&&(O===-1||k<O)?(Q=x.substring(0,k).split(":"),T.username=Q[0]?r.decode(Q[0]):null,Q.shift(),T.password=Q[0]?r.decode(Q.join(":")):null,x=w.substring(k+1)):(T.username=null,T.password=null),x},r.parseQuery=function(x,T){if(!x)return{};if(x=x.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!x)return{};for(var w={},R=x.split("&"),O=R.length,k,Q,z,F=0;F<O;F++)k=R[F].split("="),Q=r.decodeQuery(k.shift(),T),z=k.length?r.decodeQuery(k.join("="),T):null,Q!=="__proto__"&&(c.call(w,Q)?((typeof w[Q]=="string"||w[Q]===null)&&(w[Q]=[w[Q]]),w[Q].push(z)):w[Q]=z);return w},r.build=function(x){var T="",w=!1;return x.protocol&&(T+=x.protocol+":"),!x.urn&&(T||x.hostname)&&(T+="//",w=!0),T+=r.buildAuthority(x)||"",typeof x.path=="string"&&(x.path.charAt(0)!=="/"&&w&&(T+="/"),T+=x.path),typeof x.query=="string"&&x.query&&(T+="?"+x.query),typeof x.fragment=="string"&&x.fragment&&(T+="#"+x.fragment),T},r.buildHost=function(x){var T="";if(x.hostname)r.ip6_expression.test(x.hostname)?T+="["+x.hostname+"]":T+=x.hostname;else return"";return x.port&&(T+=":"+x.port),T},r.buildAuthority=function(x){return r.buildUserinfo(x)+r.buildHost(x)},r.buildUserinfo=function(x){var T="";return x.username&&(T+=r.encode(x.username)),x.password&&(T+=":"+r.encode(x.password)),T&&(T+="@"),T},r.buildQuery=function(x,T,w){var R="",O,k,Q,z;for(k in x)if(k!=="__proto__"&&c.call(x,k))if(h(x[k]))for(O={},Q=0,z=x[k].length;Q<z;Q++)x[k][Q]!==void 0&&O[x[k][Q]+""]===void 0&&(R+="&"+r.buildQueryParameter(k,x[k][Q],w),T!==!0&&(O[x[k][Q]+""]=!0));else x[k]!==void 0&&(R+="&"+r.buildQueryParameter(k,x[k],w));return R.substring(1)},r.buildQueryParameter=function(x,T,w){return r.encodeQuery(x,w)+(T!==null?"="+r.encodeQuery(T,w):"")},r.addQuery=function(x,T,w){if(typeof T=="object")for(var R in T)c.call(T,R)&&r.addQuery(x,R,T[R]);else if(typeof T=="string"){if(x[T]===void 0){x[T]=w;return}else typeof x[T]=="string"&&(x[T]=[x[T]]);h(w)||(w=[w]),x[T]=(x[T]||[]).concat(w)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(x,T,w){if(typeof T=="object")for(var R in T)c.call(T,R)&&r.setQuery(x,R,T[R]);else if(typeof T=="string")x[T]=w===void 0?null:w;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(x,T,w){var R,O,k;if(h(T))for(R=0,O=T.length;R<O;R++)x[T[R]]=void 0;else if(f(T)==="RegExp")for(k in x)T.test(k)&&(x[k]=void 0);else if(typeof T=="object")for(k in T)c.call(T,k)&&r.removeQuery(x,k,T[k]);else if(typeof T=="string")w!==void 0?f(w)==="RegExp"?!h(x[T])&&w.test(x[T])?x[T]=void 0:x[T]=A(x[T],w):x[T]===String(w)&&(!h(w)||w.length===1)?x[T]=void 0:h(x[T])&&(x[T]=A(x[T],w)):x[T]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(x,T,w,R){switch(f(T)){case"String":break;case"RegExp":for(var O in x)if(c.call(x,O)&&T.test(O)&&(w===void 0||r.hasQuery(x,O,w)))return!0;return!1;case"Object":for(var k in T)if(c.call(T,k)&&!r.hasQuery(x,k,T[k]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(w)){case"Undefined":return T in x;case"Boolean":var Q=!!(h(x[T])?x[T].length:x[T]);return w===Q;case"Function":return!!w(x[T],T,x);case"Array":if(!h(x[T]))return!1;var z=R?g:m;return z(x[T],w);case"RegExp":return h(x[T])?R?g(x[T],w):!1:!!(x[T]&&x[T].match(w));case"Number":w=String(w);case"String":return h(x[T])?R?g(x[T],w):!1:x[T]===w;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var x=[],T=[],w=0,R=0;R<arguments.length;R++){var O=new r(arguments[R]);x.push(O);for(var k=O.segment(),Q=0;Q<k.length;Q++)typeof k[Q]=="string"&&T.push(k[Q]),k[Q]&&w++}if(!T.length||!w)return new r("");var z=new r("").segment(T);return(x[0].path()===""||x[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(x,T){var w=Math.min(x.length,T.length),R;for(R=0;R<w;R++)if(x.charAt(R)!==T.charAt(R)){R--;break}return R<1?x.charAt(0)===T.charAt(0)&&x.charAt(0)==="/"?"/":"":((x.charAt(R)!=="/"||T.charAt(R)!=="/")&&(R=x.substring(0,R).lastIndexOf("/")),x.substring(0,R+1))},r.withinString=function(x,T,w){w||(w={});var R=w.start||r.findUri.start,O=w.end||r.findUri.end,k=w.trim||r.findUri.trim,Q=w.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(R.lastIndex=0;;){var F=R.exec(x);if(!F)break;var H=F.index;if(w.ignoreHtml){var W=x.slice(Math.max(H-3,0),H);if(W&&z.test(W))continue}for(var Z=H+x.slice(H).search(O),Y=x.slice(H,Z),$=-1;;){var X=Q.exec(Y);if(!X)break;var he=X.index+X[0].length;$=Math.max($,he)}if($>-1?Y=Y.slice(0,$)+Y.slice($).replace(k,""):Y=Y.replace(k,""),!(Y.length<=F[0].length)&&!(w.ignore&&w.ignore.test(Y))){Z=H+Y.length;var ge=T(Y,H,Z,x);if(ge===void 0){R.lastIndex=Z;continue}ge=String(ge),x=x.slice(0,H)+ge+x.slice(Z),R.lastIndex=H+ge.length}}return R.lastIndex=0,x},r.ensureValidHostname=function(x,T){var w=!!x,R=!!T,O=!1;if(R&&(O=g(r.hostProtocols,T)),O&&!w)throw new TypeError("Hostname cannot be empty, if protocol is "+T);if(x&&x.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(x).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(x){if(x){var T=Number(x);if(!(s(T)&&T>0&&T<65536))throw new TypeError('Port "'+x+'" is not a valid port')}},r.noConflict=function(x){if(x){var T={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(T.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(T.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(T.SecondLevelDomains=i.SecondLevelDomains.noConflict()),T}else i.URI===this&&(i.URI=o);return this},a.build=function(x){return x===!0?this._deferred_build=!0:(x===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function B(x){return function(T,w){return T===void 0?this._parts[x]||"":(this._parts[x]=T||null,this.build(!w),this)}}function v(x,T){return function(w,R){return w===void 0?this._parts[x]||"":(w!==null&&(w=w+"",w.charAt(0)===T&&(w=w.substring(1))),this._parts[x]=w,this.build(!R),this)}}a.protocol=B("protocol"),a.username=B("username"),a.password=B("password"),a.hostname=B("hostname"),a.port=B("port"),a.query=v("query","?"),a.fragment=v("fragment","#"),a.search=function(x,T){var w=this.query(x,T);return typeof w=="string"&&w.length?"?"+w:w},a.hash=function(x,T){var w=this.fragment(x,T);return typeof w=="string"&&w.length?"#"+w:w},a.pathname=function(x,T){if(x===void 0||x===!0){var w=this._parts.path||(this._parts.hostname?"/":"");return x?(this._parts.urn?r.decodeUrnPath:r.decodePath)(w):w}else return this._parts.urn?this._parts.path=x?r.recodeUrnPath(x):"":this._parts.path=x?r.recodePath(x):"/",this.build(!T),this},a.path=a.pathname,a.href=function(x,T){var w;if(x===void 0)return this.toString();this._string="",this._parts=r._parts();var R=x instanceof r,O=typeof x=="object"&&(x.hostname||x.path||x.pathname);if(x.nodeName){var k=r.getDomAttribute(x);x=x[k]||"",O=!1}if(!R&&O&&x.pathname!==void 0&&(x=x.toString()),typeof x=="string"||x instanceof String)this._parts=r.parse(String(x),this._parts);else if(R||O){var Q=R?x._parts:x;for(w in Q)w!=="query"&&c.call(this._parts,w)&&(this._parts[w]=Q[w]);Q.query&&this.query(Q.query,!1)}else throw new TypeError("invalid input");return this.build(!T),this},a.is=function(x){var T=!1,w=!1,R=!1,O=!1,k=!1,Q=!1,z=!1,F=!this._parts.urn;switch(this._parts.hostname&&(F=!1,w=r.ip4_expression.test(this._parts.hostname),R=r.ip6_expression.test(this._parts.hostname),T=w||R,O=!T,k=O&&n&&n.has(this._parts.hostname),Q=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),x.toLowerCase()){case"relative":return F;case"absolute":return!F;case"domain":case"name":return O;case"sld":return k;case"ip":return T;case"ip4":case"ipv4":case"inet4":return w;case"ip6":case"ipv6":case"inet6":return R;case"idn":return Q;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var P=a.protocol,M=a.port,L=a.hostname;a.protocol=function(x,T){if(x&&(x=x.replace(/:(\/\/)?$/,""),!x.match(r.protocol_expression)))throw new TypeError('Protocol "'+x+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return P.call(this,x,T)},a.scheme=a.protocol,a.port=function(x,T){return this._parts.urn?x===void 0?"":this:(x!==void 0&&(x===0&&(x=null),x&&(x+="",x.charAt(0)===":"&&(x=x.substring(1)),r.ensureValidPort(x))),M.call(this,x,T))},a.hostname=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x!==void 0){var w={preventInvalidHostname:this._parts.preventInvalidHostname},R=r.parseHost(x,w);if(R!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');x=w.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(x,this._parts.protocol)}return L.call(this,x,T)},a.origin=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=this.protocol(),R=this.authority();return R?(w?w+"://":"")+this.authority():""}else{var O=r(x);return this.protocol(O.protocol()).authority(O.authority()).build(!T),this}},a.host=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var w=r.parseHost(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.authority=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var w=r.parseAuthority(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.userinfo=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=r.buildUserinfo(this._parts);return w&&w.substring(0,w.length-1)}else return x[x.length-1]!=="@"&&(x+="@"),r.parseUserinfo(x,this._parts),this.build(!T),this},a.resource=function(x,T){var w;return x===void 0?this.path()+this.search()+this.hash():(w=r.parse(x),this._parts.path=w.path,this._parts.query=w.query,this._parts.fragment=w.fragment,this.build(!T),this)},a.subdomain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,w)||""}else{var R=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,R),k=new RegExp("^"+u(O));if(x&&x.charAt(x.length-1)!=="."&&(x+="."),x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return x&&r.ensureValidHostname(x,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(k,x),this.build(!T),this}},a.domain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.match(/\./g);if(w&&w.length<2)return this._parts.hostname;var R=this._parts.hostname.length-this.tld(T).length-1;return R=this._parts.hostname.lastIndexOf(".",R-1)+1,this._parts.hostname.substring(R)||""}else{if(!x)throw new TypeError("cannot set domain empty");if(x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(x,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=x;else{var O=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,x)}return this.build(!T),this}},a.tld=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.lastIndexOf("."),R=this._parts.hostname.substring(w+1);return T!==!0&&n&&n.list[R.toLowerCase()]&&n.get(this._parts.hostname)||R}else{var O;if(x)if(x.match(/[^a-zA-Z0-9-]/))if(n&&n.is(x))O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x);else throw new TypeError('TLD "'+x+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x)}else throw new TypeError("cannot set TLD empty");return this.build(!T),this}},a.directory=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var w=this._parts.path.length-this.filename().length-1,R=this._parts.path.substring(0,w)||(this._parts.hostname?"/":"");return x?r.decodePath(R):R}else{var O=this._parts.path.length-this.filename().length,k=this._parts.path.substring(0,O),Q=new RegExp("^"+u(k));return this.is("relative")||(x||(x="/"),x.charAt(0)!=="/"&&(x="/"+x)),x&&x.charAt(x.length-1)!=="/"&&(x+="/"),x=r.recodePath(x),this._parts.path=this._parts.path.replace(Q,x),this.build(!T),this}},a.filename=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x!="string"){if(!this._parts.path||this._parts.path==="/")return"";var w=this._parts.path.lastIndexOf("/"),R=this._parts.path.substring(w+1);return x?r.decodePathSegment(R):R}else{var O=!1;x.charAt(0)==="/"&&(x=x.substring(1)),x.match(/\.?\//)&&(O=!0);var k=new RegExp(u(this.filename())+"$");return x=r.recodePath(x),this._parts.path=this._parts.path.replace(k,x),O?this.normalizePath(T):this.build(!T),this}},a.suffix=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path||this._parts.path==="/")return"";var w=this.filename(),R=w.lastIndexOf("."),O,k;return R===-1?"":(O=w.substring(R+1),k=/^[a-z0-9%]+$/i.test(O)?O:"",x?r.decodePathSegment(k):k)}else{x.charAt(0)==="."&&(x=x.substring(1));var Q=this.suffix(),z;if(Q)x?z=new RegExp(u(Q)+"$"):z=new RegExp(u("."+Q)+"$");else{if(!x)return this;this._parts.path+="."+r.recodePath(x)}return z&&(x=r.recodePath(x),this._parts.path=this._parts.path.replace(z,x)),this.build(!T),this}},a.segment=function(x,T,w){var R=this._parts.urn?":":"/",O=this.path(),k=O.substring(0,1)==="/",Q=O.split(R);if(x!==void 0&&typeof x!="number"&&(w=T,T=x,x=void 0),x!==void 0&&typeof x!="number")throw new Error('Bad segment "'+x+'", must be 0-based integer');if(k&&Q.shift(),x<0&&(x=Math.max(Q.length+x,0)),T===void 0)return x===void 0?Q:Q[x];if(x===null||Q[x]===void 0)if(h(T)){Q=[];for(var z=0,F=T.length;z<F;z++)!T[z].length&&(!Q.length||!Q[Q.length-1].length)||(Q.length&&!Q[Q.length-1].length&&Q.pop(),Q.push(_(T[z])))}else(T||typeof T=="string")&&(T=_(T),Q[Q.length-1]===""?Q[Q.length-1]=T:Q.push(T));else T?Q[x]=_(T):Q.splice(x,1);return k&&Q.unshift(""),this.path(Q.join(R),w)},a.segmentCoded=function(x,T,w){var R,O,k;if(typeof x!="number"&&(w=T,T=x,x=void 0),T===void 0){if(R=this.segment(x,T,w),!h(R))R=R!==void 0?r.decode(R):void 0;else for(O=0,k=R.length;O<k;O++)R[O]=r.decode(R[O]);return R}if(!h(T))T=typeof T=="string"||T instanceof String?r.encode(T):T;else for(O=0,k=T.length;O<k;O++)T[O]=r.encode(T[O]);return this.segment(x,T,w)};var p=a.query;return a.query=function(x,T){if(x===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="function"){var w=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),R=x.call(this,w);return this._parts.query=r.buildQuery(R||w,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this}else return x!==void 0&&typeof x!="string"?(this._parts.query=r.buildQuery(x,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this):p.call(this,x,T)},a.setQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="string"||x instanceof String)R[x]=T!==void 0?T:null;else if(typeof x=="object")for(var O in x)c.call(x,O)&&(R[O]=x[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.addQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(R,x,T===void 0?null:T),this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.removeQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(R,x,T),this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.hasQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(R,x,T,w)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(x){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!x)),this},a.normalizeHostname=function(x){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!x)),this},a.normalizePort=function(x){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!x)),this},a.normalizePath=function(x){var T=this._parts.path;if(!T)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!x),this;if(this._parts.path==="/")return this;T=r.recodePath(T);var w,R="",O,k;for(T.charAt(0)!=="/"&&(w=!0,T="/"+T),(T.slice(-3)==="/.."||T.slice(-2)==="/.")&&(T+="/"),T=T.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),w&&(R=T.substring(1).match(/^(\.\.\/)+/)||"",R&&(R=R[0]));O=T.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){T=T.substring(3);continue}k=T.substring(0,O).lastIndexOf("/"),k===-1&&(k=O),T=T.substring(0,k)+T.substring(O+3)}return w&&this.is("relative")&&(T=R+T.substring(1)),this._parts.path=T,this.build(!x),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(x){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!x)),this},a.normalizeFragment=function(x){return this._parts.fragment||(this._parts.fragment=null,this.build(!x)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var x=r.encode,T=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.unicode=function(){var x=r.encode,T=r.decode;r.encode=C,r.decode=unescape;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.readable=function(){var x=this.clone();x.username("").password("").normalize();var T="";if(x._parts.protocol&&(T+=x._parts.protocol+"://"),x._parts.hostname&&(x.is("punycode")&&e?(T+=e.toUnicode(x._parts.hostname),x._parts.port&&(T+=":"+x._parts.port)):T+=x.host()),x._parts.hostname&&x._parts.path&&x._parts.path.charAt(0)!=="/"&&(T+="/"),T+=x.path(!0),x._parts.query){for(var w="",R=0,O=x._parts.query.split("&"),k=O.length;R<k;R++){var Q=(O[R]||"").split("=");w+="&"+r.decodeQuery(Q[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),Q[1]!==void 0&&(w+="="+r.decodeQuery(Q[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}T+="?"+w.substring(1)}return T+=r.decodeQuery(x.hash(),!0),T},a.absoluteTo=function(x){var T=this.clone(),w=["protocol","username","password","hostname","port"],R,O,k;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x instanceof r||(x=new r(x)),T._parts.protocol||(T._parts.protocol=x._parts.protocol,this._parts.hostname))return T;for(O=0;k=w[O];O++)T._parts[k]=x._parts[k];return T._parts.path?(T._parts.path.substring(-2)===".."&&(T._parts.path+="/"),T.path().charAt(0)!=="/"&&(R=x.directory(),R=R||(x.path().indexOf("/")===0?"/":""),T._parts.path=(R?R+"/":"")+T._parts.path,T.normalizePath())):(T._parts.path=x._parts.path,T._parts.query||(T._parts.query=x._parts.query)),T.build(),T},a.relativeTo=function(x){var T=this.clone().normalize(),w,R,O,k,Q;if(T._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x=new r(x).normalize(),w=T._parts,R=x._parts,k=T.path(),Q=x.path(),k.charAt(0)!=="/")throw new Error("URI is already relative");if(Q.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(w.protocol===R.protocol&&(w.protocol=null),w.username!==R.username||w.password!==R.password||w.protocol!==null||w.username!==null||w.password!==null)return T.build();if(w.hostname===R.hostname&&w.port===R.port)w.hostname=null,w.port=null;else return T.build();if(k===Q)return w.path="",T.build();if(O=r.commonPath(k,Q),!O)return T.build();var z=R.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return w.path=z+w.path.substring(O.length)||"./",T.build()},a.equals=function(x){var T=this.clone(),w=new r(x),R={},O={},k={},Q,z,F;if(T.normalize(),w.normalize(),T.toString()===w.toString())return!0;if(Q=T.query(),z=w.query(),T.query(""),w.query(""),T.toString()!==w.toString()||Q.length!==z.length)return!1;R=r.parseQuery(Q,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(F in R)if(c.call(R,F)){if(h(R[F])){if(!m(R[F],O[F]))return!1}else if(R[F]!==O[F])return!1;k[F]=!0}for(F in O)if(c.call(O,F)&&!k[F])return!1;return!0},a.preventInvalidHostname=function(x){return this._parts.preventInvalidHostname=!!x,this},a.duplicateQueryParameters=function(x){return this._parts.duplicateQueryParameters=!!x,this},a.escapeQuerySpace=function(x){return this._parts.escapeQuerySpace=!!x,this},r})});var _ae=ui((YR,QW)=>{var pz=function(){"use strict";var e="b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),_=0;_<g.length;++_){var y=g.charCodeAt(_);m[_]=y>96?y-97:y>64?y-39:y+4}for(var C=0,_=0;_<g.length;++_)m[C++]=m[_]<60?t[m[_]]:(m[_]-60)*64+m[++_];return m.buffer.slice(0,C)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,_,y){var C=n.exports.sbrk,E=C(m.length*4),I=C(_*4),b=new Uint8Array(n.exports.memory.buffer),S=s(m);b.set(S,E),y&&y(E,E,m.length,_);var B=g(I,E,m.length,_);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(_);new Uint8Array(v.buffer).set(b.subarray(I,I+_*4)),S.set(b.subarray(E,E+m.length*4)),C(E-C(0));for(var P=0;P<m.length;++P)m[P]=v[m[P]];return[v,B]}function c(g,m,_,y){var C=n.exports.sbrk,E=C(_*4),I=C(_*y),b=new Uint8Array(n.exports.memory.buffer);b.set(s(m),I),g(E,I,_,y),b=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return new Uint8Array(S.buffer).set(b.subarray(E,E+_*4)),C(E-C(0)),S}function u(g,m,_,y,C){var E=n.exports.sbrk,I=E(m),b=E(y*C),S=new Uint8Array(n.exports.memory.buffer);S.set(s(_),b);var B=g(I,m,b,y,C),v=new Uint8Array(B);return v.set(S.subarray(I,I+B)),E(I-E(0)),v}function f(g){for(var m=0,_=0;_<g.length;++_){var y=g[_];m=m<y?y:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var _=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(_)}function A(g,m,_,y,C,E,I){var b=n.exports.sbrk,S=b(_*y),B=b(_*E),v=new Uint8Array(n.exports.memory.buffer);v.set(s(m),B),g(S,_,y,C,B,I);var P=new Uint8Array(_*y);return P.set(v.subarray(S,S+_*y)),b(S-b(0)),P}return{ready:i,supported:!0,reorderMesh:function(g,m,_){var y=m?_?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,y)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,_){r(_>0&&_<=256),r(_%4==0);var y=n.exports.meshopt_encodeVertexBufferBound(m,_);return u(n.exports.meshopt_encodeVertexBuffer,y,g,m,_)},encodeIndexBuffer:function(g,m,_){r(_==2||_==4),r(m%3==0);var y=h(g,_),C=n.exports.meshopt_encodeIndexBufferBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexBuffer,C,y,m,4)},encodeIndexSequence:function(g,m,_){r(_==2||_==4);var y=h(g,_),C=n.exports.meshopt_encodeIndexSequenceBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexSequence,C,y,m,4)},encodeGltfBuffer:function(g,m,_,y){var C={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(C[y]),C[y](g,m,_)},encodeFilterOct:function(g,m,_,y){return r(_==4||_==8),r(y>=1&&y<=16),A(n.exports.meshopt_encodeFilterOct,g,m,_,y,16)},encodeFilterQuat:function(g,m,_,y){return r(_==8),r(y>=4&&y<=16),A(n.exports.meshopt_encodeFilterQuat,g,m,_,y,16)},encodeFilterExp:function(g,m,_,y,C){r(_>0&&_%4==0),r(y>=1&&y<=24);var E={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return A(n.exports.meshopt_encodeFilterExp,g,m,_,y,_,C?E[C]:1)}}}();typeof YR=="object"&&typeof QW=="object"?QW.exports=pz:typeof define=="function"&&define.amd?define([],function(){return pz}):typeof YR=="object"?YR.MeshoptEncoder=pz:(typeof self<"u"?self:YR).MeshoptEncoder=pz});var yae=ui((qR,kW)=>{var gz=function(){"use strict";var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(C){r=C.instance,r.exports.__wasm_call_ctors()});function a(C){for(var E=new Uint8Array(C.length),I=0;I<C.length;++I){var b=C.charCodeAt(I);E[I]=b>96?b-97:b>64?b-39:b+4}for(var S=0,I=0;I<C.length;++I)E[S++]=E[I]<60?i[E[I]]:(E[I]-60)*64+E[++I];return E.buffer.slice(0,S)}function c(C,E,I,b,S,B,v){var P=C.exports.sbrk,M=b+3&-4,L=P(M*S),p=P(B.length),x=new Uint8Array(C.exports.memory.buffer);x.set(B,p);var T=E(L,b,S,p,B.length);if(T==0&&v&&v(L,M,S),I.set(x.subarray(L,L+b*S)),P(L-P(0)),T!=0)throw new Error("Malformed buffer data: "+T)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],A=0;function g(C){var E={object:new Worker(C),pending:0,requests:{}};return E.object.onmessage=function(I){var b=I.data;E.pending-=b.count,E.requests[b.id][b.action](b.value),delete E.requests[b.id]},E}function m(C){for(var E="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+y.name+";"+c.toString()+y.toString(),I=new Blob([E],{type:"text/javascript"}),b=URL.createObjectURL(I),S=h.length;S<C;++S)h[S]=g(b);for(var S=C;S<h.length;++S)h[S].object.postMessage({});h.length=C,URL.revokeObjectURL(b)}function _(C,E,I,b,S){for(var B=h[0],v=1;v<h.length;++v)h[v].pending<B.pending&&(B=h[v]);return new Promise(function(P,M){var L=new Uint8Array(I),p=++A;B.pending+=C,B.requests[p]={resolve:P,reject:M},B.object.postMessage({id:p,count:C,size:E,source:L,mode:b,filter:S},[L.buffer])})}function y(C){var E=C.data;if(!E.id)return self.close();self.ready.then(function(I){try{var b=new Uint8Array(E.count*E.size);c(I,I.exports[E.mode],b,E.count,E.size,E.source,I.exports[E.filter]),self.postMessage({id:E.id,count:E.count,action:"resolve",value:b},[b.buffer])}catch(S){self.postMessage({id:E.id,count:E.count,action:"reject",value:S})}})}return{ready:s,supported:!0,useWorkers:function(C){m(C)},decodeVertexBuffer:function(C,E,I,b,S){c(r,r.exports.meshopt_decodeVertexBuffer,C,E,I,b,r.exports[u[S]])},decodeIndexBuffer:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexBuffer,C,E,I,b)},decodeIndexSequence:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexSequence,C,E,I,b)},decodeGltfBuffer:function(C,E,I,b,S,B){c(r,r.exports[f[S]],C,E,I,b,r.exports[u[B]])},decodeGltfBufferAsync:function(C,E,I,b,S){return h.length>0?_(C,E,I,f[b],u[S]):s.then(function(){var B=new Uint8Array(C*E);return c(r,r.exports[f[b]],B,C,E,I,r.exports[u[S]]),B})}}}();typeof qR=="object"&&typeof kW=="object"?kW.exports=gz:typeof define=="function"&&define.amd?define([],function(){return gz}):typeof qR=="object"?qR.MeshoptDecoder=gz:(typeof self<"u"?self:qR).MeshoptDecoder=gz});var Cae=ui((KR,UW)=>{var _z=function(){"use strict";var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,_,y){var C=n.exports.sbrk,E=C(_.length*4),I=C(y*4),b=new Uint8Array(n.exports.memory.buffer),S=s(_);b.set(S,E);var B=m(I,E,_.length,y);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(y);new Uint8Array(v.buffer).set(b.subarray(I,I+y*4)),S.set(b.subarray(E,E+_.length*4)),C(E-C(0));for(var P=0;P<_.length;++P)_[P]=v[_[P]];return[v,B]}function c(m){for(var _=0,y=0;y<m.length;++y){var C=m[y];_=_<C?C:_}return _}function u(m,_,y,C,E,I,b,S,B){var v=n.exports.sbrk,P=v(4),M=v(y*4),L=v(E*I),p=v(y*4),x=new Uint8Array(n.exports.memory.buffer);x.set(s(C),L),x.set(s(_),p);var T=m(M,p,y,L,E,I,b,S,B,P);x=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(T);s(w).set(x.subarray(M,M+T*4));var R=new Float32Array(1);return s(R).set(x.subarray(P,P+4)),v(P-v(0)),[w,R[0]]}function f(m,_,y,C,E,I,b,S,B,v,P,M,L){var p=n.exports.sbrk,x=p(4),T=p(y*4),w=p(E*I),R=p(E*S),O=p(B.length*4),k=p(y*4),Q=v?p(E):0,z=new Uint8Array(n.exports.memory.buffer);z.set(s(C),w),z.set(s(b),R),z.set(s(B),O),z.set(s(_),k),v&&z.set(s(v),Q);var F=m(T,k,y,w,E,I,R,S,O,B.length,Q,P,M,L,x);z=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(F);s(H).set(z.subarray(T,T+F*4));var W=new Float32Array(1);return s(W).set(z.subarray(x,x+4)),p(x-p(0)),[H,W[0]]}function h(m,_,y,C){var E=n.exports.sbrk,I=E(y*C),b=new Uint8Array(n.exports.memory.buffer);b.set(s(_),I);var S=m(I,y,C);return E(I-E(0)),S}function A(m,_,y,C,E,I,b,S){var B=n.exports.sbrk,v=B(S*4),P=B(y*C),M=B(y*I),L=new Uint8Array(n.exports.memory.buffer);L.set(s(_),P),E&&L.set(s(E),M);var p=m(v,P,y,C,M,I,b,S);L=new Uint8Array(n.exports.memory.buffer);var x=new Uint32Array(p);return s(x).set(L.subarray(v,v+p*4)),B(v-B(0)),x}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var _=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,_,c(m)+1)},simplify:function(m,_,y,C,E,I){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C>=0&&C<=m.length),r(C%3==0),r(E>=0);for(var b=0,S=0;S<(I?I.length:0);++S)r(I[S]in g),b|=g[I[S]];var B=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),v=u(n.exports.meshopt_simplify,B,m.length,_,_.length/y,y*4,C,E,b);return v[0]=m instanceof Uint32Array?v[0]:new m.constructor(v[0]),v},simplifyWithAttributes:function(m,_,y,C,E,I,b,S,B,v){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C instanceof Float32Array),r(C.length%E==0),r(E>=0),r(b==null||b instanceof Uint8Array),r(b==null||b.length==_.length/y),r(S>=0&&S<=m.length),r(S%3==0),r(B>=0),r(Array.isArray(I)),r(E>=I.length),r(I.length<=32);for(var P=0;P<I.length;++P)r(I[P]>=0);for(var M=0,P=0;P<(v?v.length:0);++P)r(v[P]in g),M|=g[v[P]];var L=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),p=f(n.exports.meshopt_simplifyWithAttributes,L,m.length,_,_.length/y,y*4,C,E*4,new Float32Array(I),b?new Uint8Array(b):null,S,B,M);return p[0]=m instanceof Uint32Array?p[0]:new m.constructor(p[0]),p},getScale:function(m,_){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),h(n.exports.meshopt_simplifyScale,m,m.length/_,_*4)},simplifyPoints:function(m,_,y,C,E,I){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),r(y>=0&&y<=m.length/_),C?(r(C instanceof Float32Array),r(C.length%E==0),r(E>=3),r(m.length/_==C.length/E),A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,C,E*4,I,y)):A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,void 0,0,0,y)}}}();typeof KR=="object"&&typeof UW=="object"?UW.exports=_z:typeof define=="function"&&define.amd?define([],function(){return _z}):typeof KR=="object"?KR.MeshoptSimplifier=_z:(typeof self<"u"?self:KR).MeshoptSimplifier=_z});var Eae=ui((XR,GW)=>{var yz=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,_){var y=m.meshlets[_*4+0],C=m.meshlets[_*4+1],E=m.meshlets[_*4+2],I=m.meshlets[_*4+3];return{vertices:m.vertices.subarray(y,y+E),triangles:m.triangles.subarray(C,C+I*3)}}function f(m,_,y,C,E,I,b){var S=n.exports.sbrk,B=n.exports.meshopt_buildMeshletsBound(m.length,E,I),v=S(B*c),P=S(B*E*4),M=S(B*I*3),L=S(m.byteLength),p=S(_.byteLength),x=new Uint8Array(n.exports.memory.buffer);x.set(s(m),L),x.set(s(_),p);var T=n.exports.meshopt_buildMeshlets(v,P,M,L,m.length,p,y,C,E,I,b);x=new Uint8Array(n.exports.memory.buffer);for(var w=x.subarray(v,v+T*c),R=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),O=0;O<T;++O){var k=R[O*4+0],Q=R[O*4+1],y=R[O*4+2],z=R[O*4+3];n.exports.meshopt_optimizeMeshlet(P+k*4,M+Q,z,y)}var F=R[(T-1)*4+0],H=R[(T-1)*4+1],W=R[(T-1)*4+2],Z=R[(T-1)*4+3],Y=F+W,$=H+(Z*3+3&-4),X={meshlets:R,vertices:new Uint32Array(x.buffer,P,Y).slice(),triangles:new Uint8Array(x.buffer,M,$*3).slice(),meshletCount:T};return S(v-S(0)),X}function h(m){var _=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:_[0],centerY:_[1],centerZ:_[2],radius:_[3],coneApexX:_[4],coneApexY:_[5],coneApexZ:_[6],coneAxisX:_[7],coneAxisY:_[8],coneAxisZ:_[9],coneCutoff:_[10]}}function A(m,_,y,C){var E=n.exports.sbrk,I=[],b=E(_.byteLength),S=E(m.vertices.byteLength),B=E(m.triangles.byteLength),v=E(a),P=new Uint8Array(n.exports.memory.buffer);P.set(s(_),b),P.set(s(m.vertices),S),P.set(s(m.triangles),B);for(var M=0;M<m.meshletCount;++M){var L=m.meshlets[M*4+0],p=m.meshlets[M*4+0+1],x=m.meshlets[M*4+0+3];n.exports.meshopt_computeMeshletBounds(v,S+L*4,B+p,x,b,y,C),I.push(h(v))}return E(b-E(0)),I}function g(m,_,y,C){var E=n.exports.sbrk,I=E(a),b=E(m.byteLength),S=E(_.byteLength),B=new Uint8Array(n.exports.memory.buffer);B.set(s(m),b),B.set(s(_),S),n.exports.meshopt_computeClusterBounds(I,b,m.length,S,y,C);var v=h(I);return E(I-E(0)),v}return{ready:i,supported:!0,buildMeshlets:function(m,_,y,C,E,I){r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C<=256||C>0),r(E<=512),r(E%4==0),I=I||0;var b=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(b,_,_.length/y,y*4,C,E,I)},computeClusterBounds:function(m,_,y){r(m.length%3==0),r(m.length/3<=512),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3);var C=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(C,_,_.length/y,y*4)},computeMeshletBounds:function(m,_,y){return r(m.meshletCount!=0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),A(m,_,_.length/y,y*4)},extractMeshlet:function(m,_){return r(_>=0&&_<m.meshletCount),u(m,_)}}}();typeof XR=="object"&&typeof GW=="object"?GW.exports=yz:typeof define=="function"&&define.amd?define([],function(){return yz}):typeof XR=="object"?XR.MeshoptClusterizer=yz:(typeof self<"u"?self:XR).MeshoptClusterizer=yz});var xae=ui((_in,Iae)=>{var Vke=_ae(),Hke=yae(),Wke=Cae(),jke=Eae();Iae.exports={MeshoptEncoder:Vke,MeshoptDecoder:Hke,MeshoptSimplifier:Wke,MeshoptClusterizer:jke}});var pde=ui((sLn,Ade)=>{"use strict";Ade.exports=Jqe;var _L=1e20;function Jqe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,A,g,m,_;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(A=e,h=A.getContext("2d"),r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(A=e.canvas,h=e,r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,_=Math.floor(u.length/f);m<_;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var y=Array(r*s),C=Array(r*s),E=Array(a),I=Array(a),b=Array(a+1),S=Array(a);for(m=0,_=r*s;m<_;m++){var B=c[m];y[m]=B===1?0:B===0?_L:Math.pow(Math.max(0,.5-B),2),C[m]=B===1?_L:B===0?0:Math.pow(Math.max(0,B-.5),2)}hde(y,r,s,E,I,S,b),hde(C,r,s,E,I,S,b);var v=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,_=r*s;m<_;m++)v[m]=Math.min(Math.max(1-((y[m]-C[m])/i+n),0),1);return v}function hde(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(mde(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(mde(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function mde(e,t,n,i,o){n[0]=0,i[0]=-_L,i[1]=+_L;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+_L}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var Ede=ui((xLn,dV)=>{function cKe(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,A=12,g=13,m=14,_=15,y=16,C=17,E=0,I=1,b=2,S=3,B=4;function v(p,x){return 55296<=p.charCodeAt(x)&&p.charCodeAt(x)<=56319&&56320<=p.charCodeAt(x+1)&&p.charCodeAt(x+1)<=57343}function P(p,x){x===void 0&&(x=0);var T=p.charCodeAt(x);if(55296<=T&&T<=56319&&x<p.length-1){var w=T,R=p.charCodeAt(x+1);return 56320<=R&&R<=57343?(w-55296)*1024+(R-56320)+65536:w}if(56320<=T&&T<=57343&&x>=1){var w=p.charCodeAt(x-1),R=T;return 55296<=w&&w<=56319?(w-55296)*1024+(R-56320)+65536:R}return T}function M(p,x,T){var w=[p].concat(x).concat([T]),R=w[w.length-2],O=T,k=w.lastIndexOf(m);if(k>1&&w.slice(1,k).every(function(F){return F==i})&&[i,g,C].indexOf(p)==-1)return b;var Q=w.lastIndexOf(o);if(Q>0&&w.slice(1,Q).every(function(F){return F==o})&&[A,o].indexOf(R)==-1)return w.filter(function(F){return F==o}).length%2==1?S:B;if(R==e&&O==t)return E;if(R==n||R==e||R==t)return O==m&&x.every(function(F){return F==i})?b:I;if(O==n||O==e||O==t)return I;if(R==s&&(O==s||O==a||O==u||O==f))return E;if((R==u||R==a)&&(O==a||O==c))return E;if((R==f||R==c)&&O==c)return E;if(O==i||O==_)return E;if(O==r)return E;if(R==A)return E;var z=w.indexOf(i)!=-1?w.lastIndexOf(i)-1:w.length-2;return[g,C].indexOf(w[z])!=-1&&w.slice(z+1,-1).every(function(F){return F==i})&&O==m||R==_&&[y,C].indexOf(O)!=-1?E:x.indexOf(o)!=-1?b:R==o&&O==o?E:I}this.nextBreak=function(p,x){if(x===void 0&&(x=0),x<0)return 0;if(x>=p.length-1)return p.length;for(var T=L(P(p,x)),w=[],R=x+1;R<p.length;R++)if(!v(p,R-1)){var O=L(P(p,R));if(M(T,w,O))return R;w.push(O)}return p.length},this.splitGraphemes=function(p){for(var x=[],T=0,w;(w=this.nextBreak(p,T))<p.length;)x.push(p.slice(T,w)),T=w;return T<p.length&&x.push(p.slice(T)),x},this.iterateGraphemes=function(p){var x=0,T={next:function(){var w,R;return(R=this.nextBreak(p,x))<p.length?(w=p.slice(x,R),x=R,{value:w,done:!1}):x<p.length?(w=p.slice(x),x=p.length,{value:w,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(T[Symbol.iterator]=function(){return T}),T},this.countGraphemes=function(p){for(var x=0,T=0,w;(w=this.nextBreak(p,T))<p.length;)T=w,x++;return T<p.length&&x++,x};function L(p){return 1536<=p&&p<=1541||p==1757||p==1807||p==2274||p==3406||p==69821||70082<=p&&p<=70083||p==72250||72326<=p&&p<=72329||p==73030?A:p==13?e:p==10?t:0<=p&&p<=9||11<=p&&p<=12||14<=p&&p<=31||127<=p&&p<=159||p==173||p==1564||p==6158||p==8203||8206<=p&&p<=8207||p==8232||p==8233||8234<=p&&p<=8238||8288<=p&&p<=8292||p==8293||8294<=p&&p<=8303||55296<=p&&p<=57343||p==65279||65520<=p&&p<=65528||65529<=p&&p<=65531||113824<=p&&p<=113827||119155<=p&&p<=119162||p==917504||p==917505||917506<=p&&p<=917535||917632<=p&&p<=917759||918e3<=p&&p<=921599?n:768<=p&&p<=879||1155<=p&&p<=1159||1160<=p&&p<=1161||1425<=p&&p<=1469||p==1471||1473<=p&&p<=1474||1476<=p&&p<=1477||p==1479||1552<=p&&p<=1562||1611<=p&&p<=1631||p==1648||1750<=p&&p<=1756||1759<=p&&p<=1764||1767<=p&&p<=1768||1770<=p&&p<=1773||p==1809||1840<=p&&p<=1866||1958<=p&&p<=1968||2027<=p&&p<=2035||2070<=p&&p<=2073||2075<=p&&p<=2083||2085<=p&&p<=2087||2089<=p&&p<=2093||2137<=p&&p<=2139||2260<=p&&p<=2273||2275<=p&&p<=2306||p==2362||p==2364||2369<=p&&p<=2376||p==2381||2385<=p&&p<=2391||2402<=p&&p<=2403||p==2433||p==2492||p==2494||2497<=p&&p<=2500||p==2509||p==2519||2530<=p&&p<=2531||2561<=p&&p<=2562||p==2620||2625<=p&&p<=2626||2631<=p&&p<=2632||2635<=p&&p<=2637||p==2641||2672<=p&&p<=2673||p==2677||2689<=p&&p<=2690||p==2748||2753<=p&&p<=2757||2759<=p&&p<=2760||p==2765||2786<=p&&p<=2787||2810<=p&&p<=2815||p==2817||p==2876||p==2878||p==2879||2881<=p&&p<=2884||p==2893||p==2902||p==2903||2914<=p&&p<=2915||p==2946||p==3006||p==3008||p==3021||p==3031||p==3072||3134<=p&&p<=3136||3142<=p&&p<=3144||3146<=p&&p<=3149||3157<=p&&p<=3158||3170<=p&&p<=3171||p==3201||p==3260||p==3263||p==3266||p==3270||3276<=p&&p<=3277||3285<=p&&p<=3286||3298<=p&&p<=3299||3328<=p&&p<=3329||3387<=p&&p<=3388||p==3390||3393<=p&&p<=3396||p==3405||p==3415||3426<=p&&p<=3427||p==3530||p==3535||3538<=p&&p<=3540||p==3542||p==3551||p==3633||3636<=p&&p<=3642||3655<=p&&p<=3662||p==3761||3764<=p&&p<=3769||3771<=p&&p<=3772||3784<=p&&p<=3789||3864<=p&&p<=3865||p==3893||p==3895||p==3897||3953<=p&&p<=3966||3968<=p&&p<=3972||3974<=p&&p<=3975||3981<=p&&p<=3991||3993<=p&&p<=4028||p==4038||4141<=p&&p<=4144||4146<=p&&p<=4151||4153<=p&&p<=4154||4157<=p&&p<=4158||4184<=p&&p<=4185||4190<=p&&p<=4192||4209<=p&&p<=4212||p==4226||4229<=p&&p<=4230||p==4237||p==4253||4957<=p&&p<=4959||5906<=p&&p<=5908||5938<=p&&p<=5940||5970<=p&&p<=5971||6002<=p&&p<=6003||6068<=p&&p<=6069||6071<=p&&p<=6077||p==6086||6089<=p&&p<=6099||p==6109||6155<=p&&p<=6157||6277<=p&&p<=6278||p==6313||6432<=p&&p<=6434||6439<=p&&p<=6440||p==6450||6457<=p&&p<=6459||6679<=p&&p<=6680||p==6683||p==6742||6744<=p&&p<=6750||p==6752||p==6754||6757<=p&&p<=6764||6771<=p&&p<=6780||p==6783||6832<=p&&p<=6845||p==6846||6912<=p&&p<=6915||p==6964||6966<=p&&p<=6970||p==6972||p==6978||7019<=p&&p<=7027||7040<=p&&p<=7041||7074<=p&&p<=7077||7080<=p&&p<=7081||7083<=p&&p<=7085||p==7142||7144<=p&&p<=7145||p==7149||7151<=p&&p<=7153||7212<=p&&p<=7219||7222<=p&&p<=7223||7376<=p&&p<=7378||7380<=p&&p<=7392||7394<=p&&p<=7400||p==7405||p==7412||7416<=p&&p<=7417||7616<=p&&p<=7673||7675<=p&&p<=7679||p==8204||8400<=p&&p<=8412||8413<=p&&p<=8416||p==8417||8418<=p&&p<=8420||8421<=p&&p<=8432||11503<=p&&p<=11505||p==11647||11744<=p&&p<=11775||12330<=p&&p<=12333||12334<=p&&p<=12335||12441<=p&&p<=12442||p==42607||42608<=p&&p<=42610||42612<=p&&p<=42621||42654<=p&&p<=42655||42736<=p&&p<=42737||p==43010||p==43014||p==43019||43045<=p&&p<=43046||43204<=p&&p<=43205||43232<=p&&p<=43249||43302<=p&&p<=43309||43335<=p&&p<=43345||43392<=p&&p<=43394||p==43443||43446<=p&&p<=43449||p==43452||p==43493||43561<=p&&p<=43566||43569<=p&&p<=43570||43573<=p&&p<=43574||p==43587||p==43596||p==43644||p==43696||43698<=p&&p<=43700||43703<=p&&p<=43704||43710<=p&&p<=43711||p==43713||43756<=p&&p<=43757||p==43766||p==44005||p==44008||p==44013||p==64286||65024<=p&&p<=65039||65056<=p&&p<=65071||65438<=p&&p<=65439||p==66045||p==66272||66422<=p&&p<=66426||68097<=p&&p<=68099||68101<=p&&p<=68102||68108<=p&&p<=68111||68152<=p&&p<=68154||p==68159||68325<=p&&p<=68326||p==69633||69688<=p&&p<=69702||69759<=p&&p<=69761||69811<=p&&p<=69814||69817<=p&&p<=69818||69888<=p&&p<=69890||69927<=p&&p<=69931||69933<=p&&p<=69940||p==70003||70016<=p&&p<=70017||70070<=p&&p<=70078||70090<=p&&p<=70092||70191<=p&&p<=70193||p==70196||70198<=p&&p<=70199||p==70206||p==70367||70371<=p&&p<=70378||70400<=p&&p<=70401||p==70460||p==70462||p==70464||p==70487||70502<=p&&p<=70508||70512<=p&&p<=70516||70712<=p&&p<=70719||70722<=p&&p<=70724||p==70726||p==70832||70835<=p&&p<=70840||p==70842||p==70845||70847<=p&&p<=70848||70850<=p&&p<=70851||p==71087||71090<=p&&p<=71093||71100<=p&&p<=71101||71103<=p&&p<=71104||71132<=p&&p<=71133||71219<=p&&p<=71226||p==71229||71231<=p&&p<=71232||p==71339||p==71341||71344<=p&&p<=71349||p==71351||71453<=p&&p<=71455||71458<=p&&p<=71461||71463<=p&&p<=71467||72193<=p&&p<=72198||72201<=p&&p<=72202||72243<=p&&p<=72248||72251<=p&&p<=72254||p==72263||72273<=p&&p<=72278||72281<=p&&p<=72283||72330<=p&&p<=72342||72344<=p&&p<=72345||72752<=p&&p<=72758||72760<=p&&p<=72765||p==72767||72850<=p&&p<=72871||72874<=p&&p<=72880||72882<=p&&p<=72883||72885<=p&&p<=72886||73009<=p&&p<=73014||p==73018||73020<=p&&p<=73021||73023<=p&&p<=73029||p==73031||92912<=p&&p<=92916||92976<=p&&p<=92982||94095<=p&&p<=94098||113821<=p&&p<=113822||p==119141||119143<=p&&p<=119145||119150<=p&&p<=119154||119163<=p&&p<=119170||119173<=p&&p<=119179||119210<=p&&p<=119213||119362<=p&&p<=119364||121344<=p&&p<=121398||121403<=p&&p<=121452||p==121461||p==121476||121499<=p&&p<=121503||121505<=p&&p<=121519||122880<=p&&p<=122886||122888<=p&&p<=122904||122907<=p&&p<=122913||122915<=p&&p<=122916||122918<=p&&p<=122922||125136<=p&&p<=125142||125252<=p&&p<=125258||917536<=p&&p<=917631||917760<=p&&p<=917999?i:127462<=p&&p<=127487?o:p==2307||p==2363||2366<=p&&p<=2368||2377<=p&&p<=2380||2382<=p&&p<=2383||2434<=p&&p<=2435||2495<=p&&p<=2496||2503<=p&&p<=2504||2507<=p&&p<=2508||p==2563||2622<=p&&p<=2624||p==2691||2750<=p&&p<=2752||p==2761||2763<=p&&p<=2764||2818<=p&&p<=2819||p==2880||2887<=p&&p<=2888||2891<=p&&p<=2892||p==3007||3009<=p&&p<=3010||3014<=p&&p<=3016||3018<=p&&p<=3020||3073<=p&&p<=3075||3137<=p&&p<=3140||3202<=p&&p<=3203||p==3262||3264<=p&&p<=3265||3267<=p&&p<=3268||3271<=p&&p<=3272||3274<=p&&p<=3275||3330<=p&&p<=3331||3391<=p&&p<=3392||3398<=p&&p<=3400||3402<=p&&p<=3404||3458<=p&&p<=3459||3536<=p&&p<=3537||3544<=p&&p<=3550||3570<=p&&p<=3571||p==3635||p==3763||3902<=p&&p<=3903||p==3967||p==4145||4155<=p&&p<=4156||4182<=p&&p<=4183||p==4228||p==6070||6078<=p&&p<=6085||6087<=p&&p<=6088||6435<=p&&p<=6438||6441<=p&&p<=6443||6448<=p&&p<=6449||6451<=p&&p<=6456||6681<=p&&p<=6682||p==6741||p==6743||6765<=p&&p<=6770||p==6916||p==6965||p==6971||6973<=p&&p<=6977||6979<=p&&p<=6980||p==7042||p==7073||7078<=p&&p<=7079||p==7082||p==7143||7146<=p&&p<=7148||p==7150||7154<=p&&p<=7155||7204<=p&&p<=7211||7220<=p&&p<=7221||p==7393||7410<=p&&p<=7411||p==7415||43043<=p&&p<=43044||p==43047||43136<=p&&p<=43137||43188<=p&&p<=43203||43346<=p&&p<=43347||p==43395||43444<=p&&p<=43445||43450<=p&&p<=43451||43453<=p&&p<=43456||43567<=p&&p<=43568||43571<=p&&p<=43572||p==43597||p==43755||43758<=p&&p<=43759||p==43765||44003<=p&&p<=44004||44006<=p&&p<=44007||44009<=p&&p<=44010||p==44012||p==69632||p==69634||p==69762||69808<=p&&p<=69810||69815<=p&&p<=69816||p==69932||p==70018||70067<=p&&p<=70069||70079<=p&&p<=70080||70188<=p&&p<=70190||70194<=p&&p<=70195||p==70197||70368<=p&&p<=70370||70402<=p&&p<=70403||p==70463||70465<=p&&p<=70468||70471<=p&&p<=70472||70475<=p&&p<=70477||70498<=p&&p<=70499||70709<=p&&p<=70711||70720<=p&&p<=70721||p==70725||70833<=p&&p<=70834||p==70841||70843<=p&&p<=70844||p==70846||p==70849||71088<=p&&p<=71089||71096<=p&&p<=71099||p==71102||71216<=p&&p<=71218||71227<=p&&p<=71228||p==71230||p==71340||71342<=p&&p<=71343||p==71350||71456<=p&&p<=71457||p==71462||72199<=p&&p<=72200||p==72249||72279<=p&&p<=72280||p==72343||p==72751||p==72766||p==72873||p==72881||p==72884||94033<=p&&p<=94078||p==119142||p==119149?r:4352<=p&&p<=4447||43360<=p&&p<=43388?s:4448<=p&&p<=4519||55216<=p&&p<=55238?a:4520<=p&&p<=4607||55243<=p&&p<=55291?c:p==44032||p==44060||p==44088||p==44116||p==44144||p==44172||p==44200||p==44228||p==44256||p==44284||p==44312||p==44340||p==44368||p==44396||p==44424||p==44452||p==44480||p==44508||p==44536||p==44564||p==44592||p==44620||p==44648||p==44676||p==44704||p==44732||p==44760||p==44788||p==44816||p==44844||p==44872||p==44900||p==44928||p==44956||p==44984||p==45012||p==45040||p==45068||p==45096||p==45124||p==45152||p==45180||p==45208||p==45236||p==45264||p==45292||p==45320||p==45348||p==45376||p==45404||p==45432||p==45460||p==45488||p==45516||p==45544||p==45572||p==45600||p==45628||p==45656||p==45684||p==45712||p==45740||p==45768||p==45796||p==45824||p==45852||p==45880||p==45908||p==45936||p==45964||p==45992||p==46020||p==46048||p==46076||p==46104||p==46132||p==46160||p==46188||p==46216||p==46244||p==46272||p==46300||p==46328||p==46356||p==46384||p==46412||p==46440||p==46468||p==46496||p==46524||p==46552||p==46580||p==46608||p==46636||p==46664||p==46692||p==46720||p==46748||p==46776||p==46804||p==46832||p==46860||p==46888||p==46916||p==46944||p==46972||p==47e3||p==47028||p==47056||p==47084||p==47112||p==47140||p==47168||p==47196||p==47224||p==47252||p==47280||p==47308||p==47336||p==47364||p==47392||p==47420||p==47448||p==47476||p==47504||p==47532||p==47560||p==47588||p==47616||p==47644||p==47672||p==47700||p==47728||p==47756||p==47784||p==47812||p==47840||p==47868||p==47896||p==47924||p==47952||p==47980||p==48008||p==48036||p==48064||p==48092||p==48120||p==48148||p==48176||p==48204||p==48232||p==48260||p==48288||p==48316||p==48344||p==48372||p==48400||p==48428||p==48456||p==48484||p==48512||p==48540||p==48568||p==48596||p==48624||p==48652||p==48680||p==48708||p==48736||p==48764||p==48792||p==48820||p==48848||p==48876||p==48904||p==48932||p==48960||p==48988||p==49016||p==49044||p==49072||p==49100||p==49128||p==49156||p==49184||p==49212||p==49240||p==49268||p==49296||p==49324||p==49352||p==49380||p==49408||p==49436||p==49464||p==49492||p==49520||p==49548||p==49576||p==49604||p==49632||p==49660||p==49688||p==49716||p==49744||p==49772||p==49800||p==49828||p==49856||p==49884||p==49912||p==49940||p==49968||p==49996||p==50024||p==50052||p==50080||p==50108||p==50136||p==50164||p==50192||p==50220||p==50248||p==50276||p==50304||p==50332||p==50360||p==50388||p==50416||p==50444||p==50472||p==50500||p==50528||p==50556||p==50584||p==50612||p==50640||p==50668||p==50696||p==50724||p==50752||p==50780||p==50808||p==50836||p==50864||p==50892||p==50920||p==50948||p==50976||p==51004||p==51032||p==51060||p==51088||p==51116||p==51144||p==51172||p==51200||p==51228||p==51256||p==51284||p==51312||p==51340||p==51368||p==51396||p==51424||p==51452||p==51480||p==51508||p==51536||p==51564||p==51592||p==51620||p==51648||p==51676||p==51704||p==51732||p==51760||p==51788||p==51816||p==51844||p==51872||p==51900||p==51928||p==51956||p==51984||p==52012||p==52040||p==52068||p==52096||p==52124||p==52152||p==52180||p==52208||p==52236||p==52264||p==52292||p==52320||p==52348||p==52376||p==52404||p==52432||p==52460||p==52488||p==52516||p==52544||p==52572||p==52600||p==52628||p==52656||p==52684||p==52712||p==52740||p==52768||p==52796||p==52824||p==52852||p==52880||p==52908||p==52936||p==52964||p==52992||p==53020||p==53048||p==53076||p==53104||p==53132||p==53160||p==53188||p==53216||p==53244||p==53272||p==53300||p==53328||p==53356||p==53384||p==53412||p==53440||p==53468||p==53496||p==53524||p==53552||p==53580||p==53608||p==53636||p==53664||p==53692||p==53720||p==53748||p==53776||p==53804||p==53832||p==53860||p==53888||p==53916||p==53944||p==53972||p==54e3||p==54028||p==54056||p==54084||p==54112||p==54140||p==54168||p==54196||p==54224||p==54252||p==54280||p==54308||p==54336||p==54364||p==54392||p==54420||p==54448||p==54476||p==54504||p==54532||p==54560||p==54588||p==54616||p==54644||p==54672||p==54700||p==54728||p==54756||p==54784||p==54812||p==54840||p==54868||p==54896||p==54924||p==54952||p==54980||p==55008||p==55036||p==55064||p==55092||p==55120||p==55148||p==55176?u:44033<=p&&p<=44059||44061<=p&&p<=44087||44089<=p&&p<=44115||44117<=p&&p<=44143||44145<=p&&p<=44171||44173<=p&&p<=44199||44201<=p&&p<=44227||44229<=p&&p<=44255||44257<=p&&p<=44283||44285<=p&&p<=44311||44313<=p&&p<=44339||44341<=p&&p<=44367||44369<=p&&p<=44395||44397<=p&&p<=44423||44425<=p&&p<=44451||44453<=p&&p<=44479||44481<=p&&p<=44507||44509<=p&&p<=44535||44537<=p&&p<=44563||44565<=p&&p<=44591||44593<=p&&p<=44619||44621<=p&&p<=44647||44649<=p&&p<=44675||44677<=p&&p<=44703||44705<=p&&p<=44731||44733<=p&&p<=44759||44761<=p&&p<=44787||44789<=p&&p<=44815||44817<=p&&p<=44843||44845<=p&&p<=44871||44873<=p&&p<=44899||44901<=p&&p<=44927||44929<=p&&p<=44955||44957<=p&&p<=44983||44985<=p&&p<=45011||45013<=p&&p<=45039||45041<=p&&p<=45067||45069<=p&&p<=45095||45097<=p&&p<=45123||45125<=p&&p<=45151||45153<=p&&p<=45179||45181<=p&&p<=45207||45209<=p&&p<=45235||45237<=p&&p<=45263||45265<=p&&p<=45291||45293<=p&&p<=45319||45321<=p&&p<=45347||45349<=p&&p<=45375||45377<=p&&p<=45403||45405<=p&&p<=45431||45433<=p&&p<=45459||45461<=p&&p<=45487||45489<=p&&p<=45515||45517<=p&&p<=45543||45545<=p&&p<=45571||45573<=p&&p<=45599||45601<=p&&p<=45627||45629<=p&&p<=45655||45657<=p&&p<=45683||45685<=p&&p<=45711||45713<=p&&p<=45739||45741<=p&&p<=45767||45769<=p&&p<=45795||45797<=p&&p<=45823||45825<=p&&p<=45851||45853<=p&&p<=45879||45881<=p&&p<=45907||45909<=p&&p<=45935||45937<=p&&p<=45963||45965<=p&&p<=45991||45993<=p&&p<=46019||46021<=p&&p<=46047||46049<=p&&p<=46075||46077<=p&&p<=46103||46105<=p&&p<=46131||46133<=p&&p<=46159||46161<=p&&p<=46187||46189<=p&&p<=46215||46217<=p&&p<=46243||46245<=p&&p<=46271||46273<=p&&p<=46299||46301<=p&&p<=46327||46329<=p&&p<=46355||46357<=p&&p<=46383||46385<=p&&p<=46411||46413<=p&&p<=46439||46441<=p&&p<=46467||46469<=p&&p<=46495||46497<=p&&p<=46523||46525<=p&&p<=46551||46553<=p&&p<=46579||46581<=p&&p<=46607||46609<=p&&p<=46635||46637<=p&&p<=46663||46665<=p&&p<=46691||46693<=p&&p<=46719||46721<=p&&p<=46747||46749<=p&&p<=46775||46777<=p&&p<=46803||46805<=p&&p<=46831||46833<=p&&p<=46859||46861<=p&&p<=46887||46889<=p&&p<=46915||46917<=p&&p<=46943||46945<=p&&p<=46971||46973<=p&&p<=46999||47001<=p&&p<=47027||47029<=p&&p<=47055||47057<=p&&p<=47083||47085<=p&&p<=47111||47113<=p&&p<=47139||47141<=p&&p<=47167||47169<=p&&p<=47195||47197<=p&&p<=47223||47225<=p&&p<=47251||47253<=p&&p<=47279||47281<=p&&p<=47307||47309<=p&&p<=47335||47337<=p&&p<=47363||47365<=p&&p<=47391||47393<=p&&p<=47419||47421<=p&&p<=47447||47449<=p&&p<=47475||47477<=p&&p<=47503||47505<=p&&p<=47531||47533<=p&&p<=47559||47561<=p&&p<=47587||47589<=p&&p<=47615||47617<=p&&p<=47643||47645<=p&&p<=47671||47673<=p&&p<=47699||47701<=p&&p<=47727||47729<=p&&p<=47755||47757<=p&&p<=47783||47785<=p&&p<=47811||47813<=p&&p<=47839||47841<=p&&p<=47867||47869<=p&&p<=47895||47897<=p&&p<=47923||47925<=p&&p<=47951||47953<=p&&p<=47979||47981<=p&&p<=48007||48009<=p&&p<=48035||48037<=p&&p<=48063||48065<=p&&p<=48091||48093<=p&&p<=48119||48121<=p&&p<=48147||48149<=p&&p<=48175||48177<=p&&p<=48203||48205<=p&&p<=48231||48233<=p&&p<=48259||48261<=p&&p<=48287||48289<=p&&p<=48315||48317<=p&&p<=48343||48345<=p&&p<=48371||48373<=p&&p<=48399||48401<=p&&p<=48427||48429<=p&&p<=48455||48457<=p&&p<=48483||48485<=p&&p<=48511||48513<=p&&p<=48539||48541<=p&&p<=48567||48569<=p&&p<=48595||48597<=p&&p<=48623||48625<=p&&p<=48651||48653<=p&&p<=48679||48681<=p&&p<=48707||48709<=p&&p<=48735||48737<=p&&p<=48763||48765<=p&&p<=48791||48793<=p&&p<=48819||48821<=p&&p<=48847||48849<=p&&p<=48875||48877<=p&&p<=48903||48905<=p&&p<=48931||48933<=p&&p<=48959||48961<=p&&p<=48987||48989<=p&&p<=49015||49017<=p&&p<=49043||49045<=p&&p<=49071||49073<=p&&p<=49099||49101<=p&&p<=49127||49129<=p&&p<=49155||49157<=p&&p<=49183||49185<=p&&p<=49211||49213<=p&&p<=49239||49241<=p&&p<=49267||49269<=p&&p<=49295||49297<=p&&p<=49323||49325<=p&&p<=49351||49353<=p&&p<=49379||49381<=p&&p<=49407||49409<=p&&p<=49435||49437<=p&&p<=49463||49465<=p&&p<=49491||49493<=p&&p<=49519||49521<=p&&p<=49547||49549<=p&&p<=49575||49577<=p&&p<=49603||49605<=p&&p<=49631||49633<=p&&p<=49659||49661<=p&&p<=49687||49689<=p&&p<=49715||49717<=p&&p<=49743||49745<=p&&p<=49771||49773<=p&&p<=49799||49801<=p&&p<=49827||49829<=p&&p<=49855||49857<=p&&p<=49883||49885<=p&&p<=49911||49913<=p&&p<=49939||49941<=p&&p<=49967||49969<=p&&p<=49995||49997<=p&&p<=50023||50025<=p&&p<=50051||50053<=p&&p<=50079||50081<=p&&p<=50107||50109<=p&&p<=50135||50137<=p&&p<=50163||50165<=p&&p<=50191||50193<=p&&p<=50219||50221<=p&&p<=50247||50249<=p&&p<=50275||50277<=p&&p<=50303||50305<=p&&p<=50331||50333<=p&&p<=50359||50361<=p&&p<=50387||50389<=p&&p<=50415||50417<=p&&p<=50443||50445<=p&&p<=50471||50473<=p&&p<=50499||50501<=p&&p<=50527||50529<=p&&p<=50555||50557<=p&&p<=50583||50585<=p&&p<=50611||50613<=p&&p<=50639||50641<=p&&p<=50667||50669<=p&&p<=50695||50697<=p&&p<=50723||50725<=p&&p<=50751||50753<=p&&p<=50779||50781<=p&&p<=50807||50809<=p&&p<=50835||50837<=p&&p<=50863||50865<=p&&p<=50891||50893<=p&&p<=50919||50921<=p&&p<=50947||50949<=p&&p<=50975||50977<=p&&p<=51003||51005<=p&&p<=51031||51033<=p&&p<=51059||51061<=p&&p<=51087||51089<=p&&p<=51115||51117<=p&&p<=51143||51145<=p&&p<=51171||51173<=p&&p<=51199||51201<=p&&p<=51227||51229<=p&&p<=51255||51257<=p&&p<=51283||51285<=p&&p<=51311||51313<=p&&p<=51339||51341<=p&&p<=51367||51369<=p&&p<=51395||51397<=p&&p<=51423||51425<=p&&p<=51451||51453<=p&&p<=51479||51481<=p&&p<=51507||51509<=p&&p<=51535||51537<=p&&p<=51563||51565<=p&&p<=51591||51593<=p&&p<=51619||51621<=p&&p<=51647||51649<=p&&p<=51675||51677<=p&&p<=51703||51705<=p&&p<=51731||51733<=p&&p<=51759||51761<=p&&p<=51787||51789<=p&&p<=51815||51817<=p&&p<=51843||51845<=p&&p<=51871||51873<=p&&p<=51899||51901<=p&&p<=51927||51929<=p&&p<=51955||51957<=p&&p<=51983||51985<=p&&p<=52011||52013<=p&&p<=52039||52041<=p&&p<=52067||52069<=p&&p<=52095||52097<=p&&p<=52123||52125<=p&&p<=52151||52153<=p&&p<=52179||52181<=p&&p<=52207||52209<=p&&p<=52235||52237<=p&&p<=52263||52265<=p&&p<=52291||52293<=p&&p<=52319||52321<=p&&p<=52347||52349<=p&&p<=52375||52377<=p&&p<=52403||52405<=p&&p<=52431||52433<=p&&p<=52459||52461<=p&&p<=52487||52489<=p&&p<=52515||52517<=p&&p<=52543||52545<=p&&p<=52571||52573<=p&&p<=52599||52601<=p&&p<=52627||52629<=p&&p<=52655||52657<=p&&p<=52683||52685<=p&&p<=52711||52713<=p&&p<=52739||52741<=p&&p<=52767||52769<=p&&p<=52795||52797<=p&&p<=52823||52825<=p&&p<=52851||52853<=p&&p<=52879||52881<=p&&p<=52907||52909<=p&&p<=52935||52937<=p&&p<=52963||52965<=p&&p<=52991||52993<=p&&p<=53019||53021<=p&&p<=53047||53049<=p&&p<=53075||53077<=p&&p<=53103||53105<=p&&p<=53131||53133<=p&&p<=53159||53161<=p&&p<=53187||53189<=p&&p<=53215||53217<=p&&p<=53243||53245<=p&&p<=53271||53273<=p&&p<=53299||53301<=p&&p<=53327||53329<=p&&p<=53355||53357<=p&&p<=53383||53385<=p&&p<=53411||53413<=p&&p<=53439||53441<=p&&p<=53467||53469<=p&&p<=53495||53497<=p&&p<=53523||53525<=p&&p<=53551||53553<=p&&p<=53579||53581<=p&&p<=53607||53609<=p&&p<=53635||53637<=p&&p<=53663||53665<=p&&p<=53691||53693<=p&&p<=53719||53721<=p&&p<=53747||53749<=p&&p<=53775||53777<=p&&p<=53803||53805<=p&&p<=53831||53833<=p&&p<=53859||53861<=p&&p<=53887||53889<=p&&p<=53915||53917<=p&&p<=53943||53945<=p&&p<=53971||53973<=p&&p<=53999||54001<=p&&p<=54027||54029<=p&&p<=54055||54057<=p&&p<=54083||54085<=p&&p<=54111||54113<=p&&p<=54139||54141<=p&&p<=54167||54169<=p&&p<=54195||54197<=p&&p<=54223||54225<=p&&p<=54251||54253<=p&&p<=54279||54281<=p&&p<=54307||54309<=p&&p<=54335||54337<=p&&p<=54363||54365<=p&&p<=54391||54393<=p&&p<=54419||54421<=p&&p<=54447||54449<=p&&p<=54475||54477<=p&&p<=54503||54505<=p&&p<=54531||54533<=p&&p<=54559||54561<=p&&p<=54587||54589<=p&&p<=54615||54617<=p&&p<=54643||54645<=p&&p<=54671||54673<=p&&p<=54699||54701<=p&&p<=54727||54729<=p&&p<=54755||54757<=p&&p<=54783||54785<=p&&p<=54811||54813<=p&&p<=54839||54841<=p&&p<=54867||54869<=p&&p<=54895||54897<=p&&p<=54923||54925<=p&&p<=54951||54953<=p&&p<=54979||54981<=p&&p<=55007||55009<=p&&p<=55035||55037<=p&&p<=55063||55065<=p&&p<=55091||55093<=p&&p<=55119||55121<=p&&p<=55147||55149<=p&&p<=55175||55177<=p&&p<=55203?f:p==9757||p==9977||9994<=p&&p<=9997||p==127877||127938<=p&&p<=127940||p==127943||127946<=p&&p<=127948||128066<=p&&p<=128067||128070<=p&&p<=128080||p==128110||128112<=p&&p<=128120||p==128124||128129<=p&&p<=128131||128133<=p&&p<=128135||p==128170||128372<=p&&p<=128373||p==128378||p==128400||128405<=p&&p<=128406||128581<=p&&p<=128583||128587<=p&&p<=128591||p==128675||128692<=p&&p<=128694||p==128704||p==128716||129304<=p&&p<=129308||129310<=p&&p<=129311||p==129318||129328<=p&&p<=129337||129341<=p&&p<=129342||129489<=p&&p<=129501?g:127995<=p&&p<=127999?m:p==8205?_:p==9792||p==9794||9877<=p&&p<=9878||p==9992||p==10084||p==127752||p==127806||p==127859||p==127891||p==127908||p==127912||p==127979||p==127981||p==128139||128187<=p&&p<=128188||p==128295||p==128300||p==128488||p==128640||p==128658?y:128102<=p&&p<=128105?C:h}return this}typeof dV<"u"&&dV.exports&&(dV.exports=cKe)});var $ge=ui((h8,Zge)=>{(function(e,t){typeof h8=="object"&&typeof Zge<"u"?t(h8):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.topojson=e.topojson||{}))})(h8,function(e){"use strict";function t(I){return I}function n(I){if(I==null)return t;var b,S,B=I.scale[0],v=I.scale[1],P=I.translate[0],M=I.translate[1];return function(L,p){p||(b=S=0);var x=2,T=L.length,w=new Array(T);for(w[0]=(b+=L[0])*B+P,w[1]=(S+=L[1])*v+M;x<T;)w[x]=L[x],++x;return w}}function i(I){var b=n(I.transform),S,B=1/0,v=B,P=-B,M=-B;function L(x){x=b(x),x[0]<B&&(B=x[0]),x[0]>P&&(P=x[0]),x[1]<v&&(v=x[1]),x[1]>M&&(M=x[1])}function p(x){switch(x.type){case"GeometryCollection":x.geometries.forEach(p);break;case"Point":L(x.coordinates);break;case"MultiPoint":x.coordinates.forEach(L);break}}I.arcs.forEach(function(x){for(var T=-1,w=x.length,R;++T<w;)R=b(x[T],T),R[0]<B&&(B=R[0]),R[0]>P&&(P=R[0]),R[1]<v&&(v=R[1]),R[1]>M&&(M=R[1])});for(S in I.objects)p(I.objects[S]);return[B,v,P,M]}function o(I,b){for(var S,B=I.length,v=B-b;v<--B;)S=I[v],I[v++]=I[B],I[B]=S}function r(I,b){return typeof b=="string"&&(b=I.objects[b]),b.type==="GeometryCollection"?{type:"FeatureCollection",features:b.geometries.map(function(S){return s(I,S)})}:s(I,b)}function s(I,b){var S=b.id,B=b.bbox,v=b.properties==null?{}:b.properties,P=a(I,b);return S==null&&B==null?{type:"Feature",properties:v,geometry:P}:B==null?{type:"Feature",id:S,properties:v,geometry:P}:{type:"Feature",id:S,bbox:B,properties:v,geometry:P}}function a(I,b){var S=n(I.transform),B=I.arcs;function v(T,w){w.length&&w.pop();for(var R=B[T<0?~T:T],O=0,k=R.length;O<k;++O)w.push(S(R[O],O));T<0&&o(w,k)}function P(T){return S(T)}function M(T){for(var w=[],R=0,O=T.length;R<O;++R)v(T[R],w);return w.length<2&&w.push(w[0]),w}function L(T){for(var w=M(T);w.length<4;)w.push(w[0]);return w}function p(T){return T.map(L)}function x(T){var w=T.type,R;switch(w){case"GeometryCollection":return{type:w,geometries:T.geometries.map(x)};case"Point":R=P(T.coordinates);break;case"MultiPoint":R=T.coordinates.map(P);break;case"LineString":R=M(T.arcs);break;case"MultiLineString":R=T.arcs.map(M);break;case"Polygon":R=p(T.arcs);break;case"MultiPolygon":R=T.arcs.map(p);break;default:return null}return{type:w,coordinates:R}}return x(b)}function c(I,b){var S={},B={},v={},P=[],M=-1;b.forEach(function(x,T){var w=I.arcs[x<0?~x:x],R;w.length<3&&!w[1][0]&&!w[1][1]&&(R=b[++M],b[M]=x,b[T]=R)}),b.forEach(function(x){var T=L(x),w=T[0],R=T[1],O,k;if(O=v[w])if(delete v[O.end],O.push(x),O.end=R,k=B[R]){delete B[k.start];var Q=k===O?O:O.concat(k);B[Q.start=O.start]=v[Q.end=k.end]=Q}else B[O.start]=v[O.end]=O;else if(O=B[R])if(delete B[O.start],O.unshift(x),O.start=w,k=v[w]){delete v[k.end];var z=k===O?O:k.concat(O);B[z.start=k.start]=v[z.end=O.end]=z}else B[O.start]=v[O.end]=O;else O=[x],B[O.start=w]=v[O.end=R]=O});function L(x){var T=I.arcs[x<0?~x:x],w=T[0],R;return I.transform?(R=[0,0],T.forEach(function(O){R[0]+=O[0],R[1]+=O[1]})):R=T[T.length-1],x<0?[R,w]:[w,R]}function p(x,T){for(var w in x){var R=x[w];delete T[R.start],delete R.start,delete R.end,R.forEach(function(O){S[O<0?~O:O]=1}),P.push(R)}}return p(v,B),p(B,v),b.forEach(function(x){S[x<0?~x:x]||P.push([x])}),P}function u(I){return a(I,f.apply(this,arguments))}function f(I,b,S){var B,v,P;if(arguments.length>1)B=h(I,b,S);else for(v=0,B=new Array(P=I.arcs.length);v<P;++v)B[v]=v;return{type:"MultiLineString",arcs:c(I,B)}}function h(I,b,S){var B=[],v=[],P;function M(w){var R=w<0?~w:w;(v[R]||(v[R]=[])).push({i:w,g:P})}function L(w){w.forEach(M)}function p(w){w.forEach(L)}function x(w){w.forEach(p)}function T(w){switch(P=w,w.type){case"GeometryCollection":w.geometries.forEach(T);break;case"LineString":L(w.arcs);break;case"MultiLineString":case"Polygon":p(w.arcs);break;case"MultiPolygon":x(w.arcs);break}}return T(b),v.forEach(S==null?function(w){B.push(w[0].i)}:function(w){S(w[0].g,w[w.length-1].g)&&B.push(w[0].i)}),B}function A(I){for(var b=-1,S=I.length,B,v=I[S-1],P=0;++b<S;)B=v,v=I[b],P+=B[0]*v[1]-B[1]*v[0];return Math.abs(P)}function g(I){return a(I,m.apply(this,arguments))}function m(I,b){var S={},B=[],v=[];b.forEach(P);function P(p){switch(p.type){case"GeometryCollection":p.geometries.forEach(P);break;case"Polygon":M(p.arcs);break;case"MultiPolygon":p.arcs.forEach(M);break}}function M(p){p.forEach(function(x){x.forEach(function(T){(S[T=T<0?~T:T]||(S[T]=[])).push(p)})}),B.push(p)}function L(p){return A(a(I,{type:"Polygon",arcs:[p]}).coordinates[0])}return B.forEach(function(p){if(!p._){var x=[],T=[p];for(p._=1,v.push(x);p=T.pop();)x.push(p),p.forEach(function(w){w.forEach(function(R){S[R<0?~R:R].forEach(function(O){O._||(O._=1,T.push(O))})})})}}),B.forEach(function(p){delete p._}),{type:"MultiPolygon",arcs:v.map(function(p){var x=[],T;if(p.forEach(function(Q){Q.forEach(function(z){z.forEach(function(F){S[F<0?~F:F].length<2&&x.push(F)})})}),x=c(I,x),(T=x.length)>1)for(var w=1,R=L(x[0]),O,k;w<T;++w)(O=L(x[w]))>R&&(k=x[0],x[0]=x[w],x[w]=k,R=O);return x}).filter(function(p){return p.length>0})}}function _(I,b){for(var S=0,B=I.length;S<B;){var v=S+B>>>1;I[v]<b?S=v+1:B=v}return S}function y(I){var b={},S=I.map(function(){return[]});function B(Q,z){Q.forEach(function(F){F<0&&(F=~F);var H=b[F];H?H.push(z):b[F]=[z]})}function v(Q,z){Q.forEach(function(F){B(F,z)})}function P(Q,z){Q.type==="GeometryCollection"?Q.geometries.forEach(function(F){P(F,z)}):Q.type in M&&M[Q.type](Q.arcs,z)}var M={LineString:B,MultiLineString:v,Polygon:v,MultiPolygon:function(Q,z){Q.forEach(function(F){v(F,z)})}};I.forEach(P);for(var L in b)for(var p=b[L],x=p.length,T=0;T<x;++T)for(var w=T+1;w<x;++w){var R=p[T],O=p[w],k;(k=S[R])[L=_(k,O)]!==O&&k.splice(L,0,O),(k=S[O])[L=_(k,R)]!==R&&k.splice(L,0,R)}return S}function C(I){if(I==null)return t;var b,S,B=I.scale[0],v=I.scale[1],P=I.translate[0],M=I.translate[1];return function(L,p){p||(b=S=0);var x=2,T=L.length,w=new Array(T),R=Math.round((L[0]-P)/B),O=Math.round((L[1]-M)/v);for(w[0]=R-b,b=R,w[1]=O-S,S=O;x<T;)w[x]=L[x],++x;return w}}function E(I,b){if(I.transform)throw new Error("already quantized");if(!b||!b.scale){if(!((M=Math.floor(b))>=2))throw new Error("n must be \u22652");p=I.bbox||i(I);var S=p[0],B=p[1],v=p[2],P=p[3],M;b={scale:[v-S?(v-S)/(M-1):1,P-B?(P-B)/(M-1):1],translate:[S,B]}}else p=I.bbox;var L=C(b),p,x,T=I.objects,w={};function R(Q){return L(Q)}function O(Q){var z;switch(Q.type){case"GeometryCollection":z={type:"GeometryCollection",geometries:Q.geometries.map(O)};break;case"Point":z={type:"Point",coordinates:R(Q.coordinates)};break;case"MultiPoint":z={type:"MultiPoint",coordinates:Q.coordinates.map(R)};break;default:return Q}return Q.id!=null&&(z.id=Q.id),Q.bbox!=null&&(z.bbox=Q.bbox),Q.properties!=null&&(z.properties=Q.properties),z}function k(Q){var z=0,F=1,H=Q.length,W,Z=new Array(H);for(Z[0]=L(Q[0],0);++z<H;)((W=L(Q[z],z))[0]||W[1])&&(Z[F++]=W);return F===1&&(Z[F++]=[0,0]),Z.length=F,Z}for(x in T)w[x]=O(T[x]);return{type:"Topology",bbox:p,transform:b,objects:w,arcs:I.arcs.map(k)}}e.bbox=i,e.feature=r,e.merge=g,e.mergeArcs=m,e.mesh=u,e.meshArcs=f,e.neighbors=y,e.quantize=E,e.transform=n,e.untransform=C,Object.defineProperty(e,"__esModule",{value:!0})})});var sm={};Cte(sm,{__addDisposableResource:()=>V_e,__assign:()=>p8,__asyncDelegator:()=>L_e,__asyncGenerator:()=>N_e,__asyncValues:()=>O_e,__await:()=>QS,__awaiter:()=>B_e,__classPrivateFieldGet:()=>U_e,__classPrivateFieldIn:()=>z_e,__classPrivateFieldSet:()=>G_e,__createBinding:()=>_8,__decorate:()=>E_e,__disposeResources:()=>H_e,__esDecorate:()=>x_e,__exportStar:()=>v_e,__extends:()=>y_e,__generator:()=>D_e,__importDefault:()=>k_e,__importStar:()=>Q_e,__makeTemplateObject:()=>F_e,__metadata:()=>w_e,__param:()=>I_e,__propKey:()=>T_e,__read:()=>LK,__rest:()=>C_e,__rewriteRelativeImportExtension:()=>W_e,__runInitializers:()=>b_e,__setFunctionName:()=>S_e,__spread:()=>P_e,__spreadArray:()=>M_e,__spreadArrays:()=>R_e,__values:()=>g8,default:()=>Qrt});function y_e(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");MK(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function C_e(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]]);return n}function E_e(e,t,n,i){var o=arguments.length,r=o<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,n,r):s(t,n))||r);return o>3&&r&&Object.defineProperty(t,n,r),r}function I_e(e,t){return function(n,i){t(n,i,e)}}function x_e(e,t,n,i,o,r){function s(C){if(C!==void 0&&typeof C!="function")throw new TypeError("Function expected");return C}for(var a=i.kind,c=a==="getter"?"get":a==="setter"?"set":"value",u=!t&&e?i.static?e:e.prototype:null,f=t||(u?Object.getOwnPropertyDescriptor(u,i.name):{}),h,A=!1,g=n.length-1;g>=0;g--){var m={};for(var _ in i)m[_]=_==="access"?{}:i[_];for(var _ in i.access)m.access[_]=i.access[_];m.addInitializer=function(C){if(A)throw new TypeError("Cannot add initializers after decoration has completed");r.push(s(C||null))};var y=(0,n[g])(a==="accessor"?{get:f.get,set:f.set}:f[c],m);if(a==="accessor"){if(y===void 0)continue;if(y===null||typeof y!="object")throw new TypeError("Object expected");(h=s(y.get))&&(f.get=h),(h=s(y.set))&&(f.set=h),(h=s(y.init))&&o.unshift(h)}else(h=s(y))&&(a==="field"?o.unshift(h):f[c]=h)}u&&Object.defineProperty(u,i.name,f),A=!0}function b_e(e,t,n){for(var i=arguments.length>2,o=0;o<t.length;o++)n=i?t[o].call(e,n):t[o].call(e);return i?n:void 0}function T_e(e){return typeof e=="symbol"?e:"".concat(e)}function S_e(e,t,n){return typeof t=="symbol"&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function w_e(e,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(e,t)}function B_e(e,t,n,i){function o(r){return r instanceof n?r:new n(function(s){s(r)})}return new(n||(n=Promise))(function(r,s){function a(f){try{u(i.next(f))}catch(h){s(h)}}function c(f){try{u(i.throw(f))}catch(h){s(h)}}function u(f){f.done?r(f.value):o(f.value).then(a,c)}u((i=i.apply(e,t||[])).next())})}function D_e(e,t){var n={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},i,o,r,s=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(f){return c([u,f])}}function c(u){if(i)throw new TypeError("Generator is already executing.");for(;s&&(s=0,u[0]&&(n=0)),n;)try{if(i=1,o&&(r=u[0]&2?o.return:u[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,u[1])).done)return r;switch(o=0,r&&(u=[u[0]&2,r.value]),u[0]){case 0:case 1:r=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,o=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(r=n.trys,!(r=r.length>0&&r[r.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!r||u[1]>r[0]&&u[1]<r[3])){n.label=u[1];break}if(u[0]===6&&n.label<r[1]){n.label=r[1],r=u;break}if(r&&n.label<r[2]){n.label=r[2],n.ops.push(u);break}r[2]&&n.ops.pop(),n.trys.pop();continue}u=t.call(e,n)}catch(f){u=[6,f],o=0}finally{i=r=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function v_e(e,t){for(var n in e)n!=="default"&&!Object.prototype.hasOwnProperty.call(t,n)&&_8(t,e,n)}function g8(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function LK(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function P_e(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(LK(arguments[t]));return e}function R_e(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var i=Array(e),o=0,t=0;t<n;t++)for(var r=arguments[t],s=0,a=r.length;s<a;s++,o++)i[o]=r[s];return i}function M_e(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}function QS(e){return this instanceof QS?(this.v=e,this):new QS(e)}function N_e(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n.apply(e,t||[]),o,r=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),o[Symbol.asyncIterator]=function(){return this},o;function s(g){return function(m){return Promise.resolve(m).then(g,h)}}function a(g,m){i[g]&&(o[g]=function(_){return new Promise(function(y,C){r.push([g,_,y,C])>1||c(g,_)})},m&&(o[g]=m(o[g])))}function c(g,m){try{u(i[g](m))}catch(_){A(r[0][3],_)}}function u(g){g.value instanceof QS?Promise.resolve(g.value.v).then(f,h):A(r[0][2],g)}function f(g){c("next",g)}function h(g){c("throw",g)}function A(g,m){g(m),r.shift(),r.length&&c(r[0][0],r[0][1])}}function L_e(e){var t,n;return t={},i("next"),i("throw",function(o){throw o}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(o,r){t[o]=e[o]?function(s){return(n=!n)?{value:QS(e[o](s)),done:!1}:r?r(s):s}:r}}function O_e(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof g8=="function"?g8(e):e[Symbol.iterator](),n={},i("next"),i("throw"),i("return"),n[Symbol.asyncIterator]=function(){return this},n);function i(r){n[r]=e[r]&&function(s){return new Promise(function(a,c){s=e[r](s),o(a,c,s.done,s.value)})}}function o(r,s,a,c){Promise.resolve(c).then(function(u){r({value:u,done:a})},s)}}function F_e(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function Q_e(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=NK(e),i=0;i<n.length;i++)n[i]!=="default"&&_8(t,e,n[i]);return Ort(t,e),t}function k_e(e){return e&&e.__esModule?e:{default:e}}function U_e(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)}function G_e(e,t,n,i,o){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?o.call(e,n):o?o.value=n:t.set(e,n),n}function z_e(e,t){if(t===null||typeof t!="object"&&typeof t!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof e=="function"?t===e:e.has(t)}function V_e(e,t,n){if(t!=null){if(typeof t!="object"&&typeof t!="function")throw new TypeError("Object expected.");var i,o;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=t[Symbol.asyncDispose]}if(i===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=t[Symbol.dispose],n&&(o=i)}if(typeof i!="function")throw new TypeError("Object not disposable.");o&&(i=function(){try{o.call(this)}catch(r){return Promise.reject(r)}}),e.stack.push({value:t,dispose:i,async:n})}else n&&e.stack.push({async:!0});return t}function H_e(e){function t(r){e.error=e.hasError?new Frt(r,e.error,"An error was suppressed during disposal."):r,e.hasError=!0}var n,i=0;function o(){for(;n=e.stack.pop();)try{if(!n.async&&i===1)return i=0,e.stack.push(n),Promise.resolve().then(o);if(n.dispose){var r=n.dispose.call(n.value);if(n.async)return i|=2,Promise.resolve(r).then(o,function(s){return t(s),o()})}else i|=1}catch(s){t(s)}if(i===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return o()}function W_e(e,t){return typeof e=="string"&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(n,i,o,r,s){return i?t?".jsx":".js":o&&(!r||!s)?n:o+r+"."+s.toLowerCase()+"js"}):e}var MK,p8,_8,Ort,NK,Frt,Qrt,am=oBe(()=>{MK=function(e,t){return MK=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},MK(e,t)};p8=function(){return p8=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},p8.apply(this,arguments)};_8=Object.create?function(e,t,n,i){i===void 0&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){i===void 0&&(i=n),e[i]=t[n]};Ort=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},NK=function(e){return NK=Object.getOwnPropertyNames||function(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},NK(e)};Frt=typeof SuppressedError=="function"?SuppressedError:function(e,t,n){var i=new Error(n);return i.name="SuppressedError",i.error=e,i.suppressed=t,i};Qrt={__extends:y_e,__assign:p8,__rest:C_e,__decorate:E_e,__param:I_e,__esDecorate:x_e,__runInitializers:b_e,__propKey:T_e,__setFunctionName:S_e,__metadata:w_e,__awaiter:B_e,__generator:D_e,__createBinding:_8,__exportStar:v_e,__values:g8,__read:LK,__spread:P_e,__spreadArrays:R_e,__spreadArray:M_e,__await:QS,__asyncGenerator:N_e,__asyncDelegator:L_e,__asyncValues:O_e,__makeTemplateObject:F_e,__importStar:Q_e,__importDefault:k_e,__classPrivateFieldGet:U_e,__classPrivateFieldSet:G_e,__classPrivateFieldIn:z_e,__addDisposableResource:V_e,__disposeResources:H_e,__rewriteRelativeImportExtension:W_e}});var j_e=ui(y8=>{"use strict";Object.defineProperty(y8,"__esModule",{value:!0});y8.version=void 0;y8.version="4.1.5"});var qy=ui(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.hasOwnProperty=void 0;Yy.isBoolean=krt;Yy.ellipsis=Urt;Yy.removeWithPredicate=Grt;Yy.assertNever=zrt;Yy.hasOwnProperty=Object.prototype.hasOwnProperty;function krt(e){return typeof e=="boolean"}function Urt(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function Grt(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function zrt(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}});var C8=ui(_A=>{"use strict";Object.defineProperty(_A,"__esModule",{value:!0});_A.HtmlTag=_A.whitespaceRe=void 0;var Vrt=qy();_A.whitespaceRe=/\s+/;var Hrt=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(_A.whitespaceRe):[],o=t.split(_A.whitespaceRe),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(_A.whitespaceRe):[],o=t.split(_A.whitespaceRe),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)Vrt.hasOwnProperty.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();_A.HtmlTag=Hrt});var q_e=ui(FK=>{"use strict";Object.defineProperty(FK,"__esModule",{value:!0});FK.truncateSmart=Wrt;function Wrt(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=jrt(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=Y_e(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=Y_e(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):OK(c,r,n).substr(0,r+i);var u="";if(s.path&&(u+="/"+s.path),s.query&&(u+="?"+s.query),u)if((c+u).length>=r){if((c+u).length==t)return(c+u).substr(0,t);var f=r-c.length;return(c+OK(u,f,n)).substr(0,r+i)}else c+=u;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var A=r-c.length;return(c+OK(h,A,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var m="";return r>0&&(m=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+m).substr(0,r+i)}function jrt(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function Y_e(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function OK(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}});var K_e=ui(QK=>{"use strict";Object.defineProperty(QK,"__esModule",{value:!0});QK.truncateMiddle=Yrt;function Yrt(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}});var X_e=ui(kK=>{"use strict";Object.defineProperty(kK,"__esModule",{value:!0});kK.truncateEnd=Krt;var qrt=qy();function Krt(e,t,n){return(0,qrt.ellipsis)(e,t,n)}});var UK=ui(E8=>{"use strict";Object.defineProperty(E8,"__esModule",{value:!0});E8.AnchorTagBuilder=void 0;var Xrt=C8(),Jrt=q_e(),Zrt=K_e(),$rt=X_e(),est=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new Xrt.HtmlTag({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?(0,Jrt.truncateSmart)(t,i):o==="middle"?(0,Zrt.truncateMiddle)(t,i):(0,$rt.truncateEnd)(t,i)},e}();E8.AnchorTagBuilder=est});var uI=ui(I8=>{"use strict";Object.defineProperty(I8,"__esModule",{value:!0});I8.AbstractMatch=void 0;var tst=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();I8.AbstractMatch=tst});var fI=ui(_f=>{"use strict";Object.defineProperty(_f,"__esModule",{value:!0});_f.isControlChar=nst;_f.isAsciiLetterChar=ist;_f.isDigitChar=ost;_f.isQuoteChar=rst;_f.isWhitespaceChar=sst;_f.isAlphaNumericOrMarkChar=ast;_f.isValidEmailLocalPartSpecialChar=cst;_f.isUrlSuffixAllowedSpecialChar=lst;_f.isUrlSuffixNotAllowedAsFinalChar=ust;_f.isOpenBraceChar=fst;_f.isCloseBraceChar=dst;function nst(e){return e>=0&&e<=31||e==127}function ist(e){return e>=65&&e<=90||e>=97&&e<=122}function ost(e){return e>=48&&e<=57}function rst(e){return e==34||e==39}function sst(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function ast(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function cst(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function lst(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function ust(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function fst(e){return e<91?e==40:e==91||e==123}function dst(e){return e<93?e==41:e==93||e==125}});var J_e=ui(x8=>{"use strict";Object.defineProperty(x8,"__esModule",{value:!0});x8.tldRegex=void 0;x8.tldRegex=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/});var b8=ui(Go=>{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.isDomainLabelStartChar=Go.isSchemeStartChar=Go.tldUrlHostRe=Go.schemeUrlRe=Go.invalidSchemeRe=Go.httpSchemePrefixRe=Go.httpSchemeRe=void 0;Go.isSchemeChar=mst;Go.isDomainLabelChar=Ast;Go.isPathChar=pst;Go.isUrlSuffixStartChar=gst;Go.isKnownTld=Z_e;Go.isValidSchemeUrl=_st;Go.isValidTldMatch=yst;Go.isValidIpV4Address=Ist;var dI=fI(),hst=J_e();Go.httpSchemeRe=/https?:\/\//i;Go.httpSchemePrefixRe=new RegExp("^"+Go.httpSchemeRe.source,"i");Go.invalidSchemeRe=/^(javascript|vbscript):/i;Go.schemeUrlRe=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/;Go.tldUrlHostRe=/^(?:\/\/)?([^/#?:]+)/;Go.isSchemeStartChar=dI.isAsciiLetterChar;function mst(e){return(0,dI.isAsciiLetterChar)(e)||(0,dI.isDigitChar)(e)||e===43||e===45||e===46}Go.isDomainLabelStartChar=dI.isAlphaNumericOrMarkChar;function Ast(e){return e===95||(0,Go.isDomainLabelStartChar)(e)}function pst(e){return(0,dI.isAlphaNumericOrMarkChar)(e)||(0,dI.isUrlSuffixAllowedSpecialChar)(e)||(0,dI.isUrlSuffixNotAllowedAsFinalChar)(e)}function gst(e){return e===47||e===63||e===35}function Z_e(e){return hst.tldRegex.test(e.toLowerCase())}function _st(e){if(Go.invalidSchemeRe.test(e))return!1;var t=e.match(Go.schemeUrlRe);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function yst(e){var t=e.match(Go.tldUrlHostRe);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!Z_e(o)}var Cst=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Est=/[:/?#]/;function Ist(e){var t=e.split(Est,1)[0];return Cst.test(t)}});var GK=ui(T8=>{"use strict";Object.defineProperty(T8,"__esModule",{value:!0});T8.UrlMatch=void 0;var xst=(am(),nh(sm)),bst=uI(),Tst=b8(),Sst=/^(https?:\/\/)?(?:www\.)?/i,wst=/^\/\//,Bst=function(e){xst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Pst(n)),this.stripPrefix.scheme&&(n=Dst(n)),this.stripPrefix.www&&(n=vst(n)),this.stripTrailingSlash&&(n=Rst(n)),this.decodePercentEncoding&&(n=Mst(n)),n},t}(bst.AbstractMatch);T8.UrlMatch=Bst;function Dst(e){return e.replace(Tst.httpSchemePrefixRe,"")}function vst(e){return e.includes("www.")?e.replace(Sst,"$1"):e}function Pst(e){return e.replace(wst,"")}function Rst(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Mst(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}});var eye=ui(Fg=>{"use strict";Object.defineProperty(Fg,"__esModule",{value:!0});Fg.isEmailLocalPartStartChar=Fg.mailtoSchemePrefixRe=void 0;Fg.isEmailLocalPartChar=Lst;Fg.isValidEmail=Ost;var $_e=fI(),Nst=b8();Fg.mailtoSchemePrefixRe=/^mailto:/i;Fg.isEmailLocalPartStartChar=$_e.isAlphaNumericOrMarkChar;function Lst(e){return(0,Fg.isEmailLocalPartStartChar)(e)||(0,$_e.isValidEmailLocalPartSpecialChar)(e)}function Ost(e){var t=e.split(".").pop();return(0,Nst.isKnownTld)(t)}});var zK=ui(S8=>{"use strict";Object.defineProperty(S8,"__esModule",{value:!0});S8.EmailMatch=void 0;var Fst=(am(),nh(sm)),Qst=uI(),kst=function(e){Fst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(Qst.AbstractMatch);S8.EmailMatch=kst});var VK=ui(kS=>{"use strict";Object.defineProperty(kS,"__esModule",{value:!0});kS.hashtagServices=void 0;kS.isHashtagTextChar=Gst;kS.isValidHashtag=zst;var Ust=fI();function Gst(e){return e===95||(0,Ust.isAlphaNumericOrMarkChar)(e)}function zst(e){return e.length<=140}kS.hashtagServices=["twitter","facebook","instagram","tiktok","youtube"]});var HK=ui(w8=>{"use strict";Object.defineProperty(w8,"__esModule",{value:!0});w8.HashtagMatch=void 0;var Vst=(am(),nh(sm)),Hst=qy(),Wst=uI(),jst=function(e){Vst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:(0,Hst.assertNever)(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Wst.AbstractMatch);w8.HashtagMatch=jst});var WK=ui(US=>{"use strict";Object.defineProperty(US,"__esModule",{value:!0});US.mentionServices=void 0;US.isMentionTextChar=qst;US.isValidMention=Kst;var tye=fI(),Yst={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function qst(e){return e===45||e===46||e===95||(0,tye.isAsciiLetterChar)(e)||(0,tye.isDigitChar)(e)}function Kst(e,t){var n=Yst[t];return n.test(e)}US.mentionServices=["twitter","instagram","soundcloud","tiktok","youtube"]});var jK=ui(B8=>{"use strict";Object.defineProperty(B8,"__esModule",{value:!0});B8.MentionMatch=void 0;var Xst=(am(),nh(sm)),Jst=qy(),Zst=uI(),$st=function(e){Xst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:(0,Jst.assertNever)(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Zst.AbstractMatch);B8.MentionMatch=$st});var nye=ui(OF=>{"use strict";Object.defineProperty(OF,"__esModule",{value:!0});OF.isPhoneNumberSeparatorChar=oat;OF.isPhoneNumberControlChar=rat;OF.isValidPhoneNumber=sat;var eat=/[-. ()]/,tat=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,nat=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,iat=new RegExp("^".concat(tat.source,"|").concat(nat.source,"$"));function oat(e){return e===45||e===46||e===32}function rat(e){return e===44||e===59}function sat(e){var t=e.charAt(0)==="+"||eat.test(e);return t&&iat.test(e)}});var YK=ui(D8=>{"use strict";Object.defineProperty(D8,"__esModule",{value:!0});D8.PhoneMatch=void 0;var aat=(am(),nh(sm)),cat=uI(),lat=function(e){aat.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(cat.AbstractMatch);D8.PhoneMatch=lat});var ZK=ui(M8=>{"use strict";Object.defineProperty(M8,"__esModule",{value:!0});M8.parseMatches=pat;M8.excludeUnbalancedTrailingBracesAndPunctuation=rye;var uat=GK(),v8=qy(),pr=b8(),GS=eye(),fat=zK(),XK=VK(),dat=HK(),JK=WK(),hat=jK(),zS=nye(),mat=YK(),Gs=fI(),Aat=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),oye(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),oye(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function pat(e,t){for(var n=new Aat(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)P8(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:Iat(n,s,o);break;case 12:xat(n,s,o);break;case 0:gat(n,s,o);break;case 1:_at(n,s,o);break;case 2:yat(n,s,o);break;case 3:Cat(n,s,o);break;case 4:Eat(n,s,i,o);break;case 5:bat(n,s,o);break;case 6:Tat(n,s,i,o);break;case 7:Sat(n,s,i,o);break;case 13:wat(n,s,o);break;case 14:Bat(n,s,o);break;case 8:Dat(n,s,o);break;case 9:vat(n,s,o);break;case 10:Pat(n,s,o);break;case 15:Rat(n,s,i,o);break;case 16:Mat(n,s,i,o);break;case 17:Nat(n,s,i,o);break;case 18:Lat(n,s,i,o);break;case 19:Oat(n,s,i,o);break;case 20:Fat(n,s,o);break;case 21:Qat(n,s,o);break;case 22:hI(n,s,o);break;case 23:kat(n,s,o);break;case 24:Uat(n,s,o);break;case 25:Gat(n,s,o);break;case 26:zat(n,s,o);break;case 27:Vat(n,s,o);break;case 28:Hat(n,s,o);break;case 29:Wat(n,s,o);break;case 30:jat(n,s,o);break;case 31:Yat(n,s,o);break;case 32:Kat(n,s,i,o);break;case 33:Xat(n,s,o);break;case 34:Jat(n,s,o);break;case 35:Zat(n,s,o);break;case 36:$at(n,s,i,o);break;case 37:qat(n,s,i,o);break;case 38:ect(n,s,i,o);break;case 39:tct(n,s,i,o);break;case 40:nct(n,s,o);break;case 41:ict(n,s,o);break;default:(0,v8.assertNever)(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&(0,pr.isSchemeStartChar)(o)){var a=n.text.charCodeAt(n.charIdx-1);(0,pr.isSchemeStartChar)(a)||n.addMachine(R8(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(u){return ds(n,u)});return n.matches}function P8(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(act(i,28));else if(n===64)e.addMachine(cct(i,30));else if(n===47)e.addMachine(KK(i,11));else if(n===43)e.addMachine(qK(i,37));else if(n===40)e.addMachine(qK(i,32));else{if((0,Gs.isDigitChar)(n)&&(e.addMachine(qK(i,38)),e.addMachine(rct(i,13))),(0,GS.isEmailLocalPartStartChar)(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(sct(i,o))}(0,pr.isSchemeStartChar)(n)&&e.addMachine(R8(i,0)),(0,Gs.isAlphaNumericOrMarkChar)(n)&&e.addMachine(KK(i,5))}}function gat(e,t,n){n===58?t.state=2:n===45?t.state=1:(0,pr.isSchemeChar)(n)||e.removeMachine(t)}function _at(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(KK(i,11))):(0,pr.isSchemeChar)(n)?t.state=0:e.removeMachine(t))}function yat(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):(0,pr.isDomainLabelStartChar)(n)?(t.state=5,(0,pr.isSchemeStartChar)(n)&&e.addMachine(R8(i,0))):e.removeMachine(t)}function Cat(e,t,n){n===47?t.state=4:(0,pr.isPathChar)(n)?(t.state=10,t.acceptStateReached=!0):ds(e,t)}function Eat(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):(0,pr.isDomainLabelStartChar)(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function Iat(e,t,n){n===47?t.state=12:e.removeMachine(t)}function xat(e,t,n){(0,pr.isDomainLabelStartChar)(n)?t.state=5:e.removeMachine(t)}function bat(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:(0,pr.isUrlSuffixStartChar)(n)?t.state=10:(0,pr.isDomainLabelChar)(n)||ds(e,t)}function Tat(e,t,n,i){i===45||(i===46?ds(e,t):(0,pr.isDomainLabelStartChar)(i)?t.state=5:ds(e,t))}function Sat(e,t,n,i){i===46?ds(e,t):(0,pr.isDomainLabelStartChar)(i)?(t.state=5,t.acceptStateReached=!0):ds(e,t)}function wat(e,t,n){n===46?t.state=14:n===58?t.state=8:(0,Gs.isDigitChar)(n)||((0,pr.isUrlSuffixStartChar)(n)?t.state=10:(0,Gs.isAlphaNumericOrMarkChar)(n)?e.removeMachine(t):ds(e,t))}function Bat(e,t,n){(0,Gs.isDigitChar)(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ds(e,t)}function Dat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=9:ds(e,t)}function vat(e,t,n){(0,Gs.isDigitChar)(n)||((0,pr.isUrlSuffixStartChar)(n)?t.state=10:ds(e,t))}function Pat(e,t,n){(0,pr.isPathChar)(n)||ds(e,t)}function Rat(e,t,n,i){n.toLowerCase()==="a"?t.state=16:hI(e,t,i)}function Mat(e,t,n,i){n.toLowerCase()==="i"?t.state=17:hI(e,t,i)}function Nat(e,t,n,i){n.toLowerCase()==="l"?t.state=18:hI(e,t,i)}function Lat(e,t,n,i){n.toLowerCase()==="t"?t.state=19:hI(e,t,i)}function Oat(e,t,n,i){n.toLowerCase()==="o"?t.state=20:hI(e,t,i)}function Fat(e,t,n){n===58?t.state=21:hI(e,t,n)}function Qat(e,t,n){(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function hI(e,t,n){n===46?t.state=23:n===64?t.state=24:(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function kat(e,t,n){n===46||n===64?e.removeMachine(t):(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function Uat(e,t,n){(0,pr.isDomainLabelStartChar)(n)?t.state=25:e.removeMachine(t)}function Gat(e,t,n){n===46?t.state=27:n===45?t.state=26:(0,pr.isDomainLabelChar)(n)||ds(e,t)}function zat(e,t,n){n===45||n===46?ds(e,t):(0,pr.isDomainLabelChar)(n)?t.state=25:ds(e,t)}function Vat(e,t,n){n===46||n===45?ds(e,t):(0,pr.isDomainLabelStartChar)(n)?(t.state=25,t.acceptStateReached=!0):ds(e,t)}function Hat(e,t,n){(0,XK.isHashtagTextChar)(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function Wat(e,t,n){(0,XK.isHashtagTextChar)(n)||ds(e,t)}function jat(e,t,n){(0,JK.isMentionTextChar)(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Yat(e,t,n){(0,JK.isMentionTextChar)(n)||((0,Gs.isAlphaNumericOrMarkChar)(n)?e.removeMachine(t):ds(e,t))}function qat(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:(e.removeMachine(t),P8(e,n,i))}function Kat(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=33:e.removeMachine(t),P8(e,n,i)}function Xat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=34:e.removeMachine(t)}function Jat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=35:e.removeMachine(t)}function Zat(e,t,n){n===41?t.state=36:e.removeMachine(t)}function $at(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:(0,zS.isPhoneNumberSeparatorChar)(i)?t.state=39:e.removeMachine(t)}function ect(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,(0,zS.isPhoneNumberControlChar)(i)?t.state=40:i===35?t.state=41:(0,Gs.isDigitChar)(i)||(i===40?t.state=32:(0,zS.isPhoneNumberSeparatorChar)(i)?t.state=39:(ds(e,t),(0,pr.isSchemeStartChar)(i)&&e.addMachine(R8(o,0))))}function tct(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:i===40?t.state=32:(ds(e,t),P8(e,n,i))}function nct(e,t,n){(0,zS.isPhoneNumberControlChar)(n)||(n===35?t.state=41:(0,Gs.isDigitChar)(n)?t.state=38:ds(e,t))}function ict(e,t,n){(0,zS.isPhoneNumberControlChar)(n)?t.state=40:(0,Gs.isDigitChar)(n)?e.removeMachine(t):ds(e,t)}function ds(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,f=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,A=i.slice(t.startIdx,o);switch(A=rye(A),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var m=pr.httpSchemeRe.exec(A);if(m&&(h=h+m.index,A=A.slice(m.index)),!(0,pr.isValidSchemeUrl)(A))return;break}case 1:{if(!(0,pr.isValidTldMatch)(A))return;break}case 2:{if(!(0,pr.isValidIpV4Address)(A))return;break}default:(0,v8.assertNever)(t)}n.push(new uat.UrlMatch({tagBuilder:r,matchedText:A,offset:h,urlMatchType:oct(t.matchType),url:A,protocolRelativeMatch:A.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{(0,GS.isValidEmail)(A)&&n.push(new fat.EmailMatch({tagBuilder:r,matchedText:A,offset:h,email:A.replace(GS.mailtoSchemePrefixRe,"")}));break}case 2:{(0,XK.isValidHashtag)(A)&&n.push(new dat.HashtagMatch({tagBuilder:r,matchedText:A,offset:h,serviceName:u,hashtag:A.slice(1)}));break}case 3:{(0,JK.isValidMention)(A,f)&&n.push(new hat.MentionMatch({tagBuilder:r,matchedText:A,offset:h,serviceName:f,mention:A.slice(1)}));break}case 4:{if(A=A.replace(/ +$/g,""),(0,zS.isValidPhoneNumber)(A)){var _=A.replace(/[^0-9,;#]/g,"");n.push(new mat.PhoneMatch({tagBuilder:r,matchedText:A,offset:h,number:_,plusSign:A.charAt(0)==="+"}))}break}default:(0,v8.assertNever)(t)}}}function oct(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:(0,v8.assertNever)(e)}}var iye={")":"(","}":"{","]":"["};function rye(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);(0,Gs.isOpenBraceChar)(o)?t[i]++:(0,Gs.isCloseBraceChar)(o)&&t[iye[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if((0,Gs.isCloseBraceChar)(o)){var s=iye[i];if(t[s]<0)t[s]++,r--;else break}else if((0,Gs.isUrlSuffixNotAllowedAsFinalChar)(o))r--;else break}return e.slice(0,r+1)}function R8(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function KK(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function rct(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function sct(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function act(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function cct(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function qK(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function oye(e){return e.type===0&&e.matchType===0}});var sye=ui(t7=>{"use strict";Object.defineProperty(t7,"__esModule",{value:!0});t7.parseHtml=fct;var Kc=(am(),nh(sm)),Ul=fI(),lct=qy(),yA=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),e7=new yA,uct=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=e7,this.html=t,this.callbacks=n}return e}();function fct(e,t){for(var n=new uct(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:dct(n,o);break;case 1:hct(n,o,r);break;case 2:Act(n,o,r);break;case 3:mct(n,o,r);break;case 4:pct(n,o,r);break;case 5:gct(n,o,r);break;case 6:_ct(n,o,r);break;case 7:yct(n,o,r);break;case 8:Cct(n,o);break;case 9:Ect(n,o);break;case 10:Ict(n,o,r);break;case 11:xct(n,o,r);break;case 12:bct(n,o);break;case 13:Tct(n);break;case 14:Sct(n,o);break;case 15:wct(n,o);break;case 16:Bct(n,o);break;case 17:Dct(n,o);break;case 18:vct(n,o);break;case 19:Pct(n,o);break;case 20:Rct(n,o);break;default:(0,lct.assertNever)(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&Mct(n)}function dct(e,t){t==="<"&&CA(e)}function hct(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isClosing:!0}))):t==="<"?CA(e):(0,Ul.isAsciiLetterChar)(n)?(e.state=3,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=e7)}function mct(e,t,n){(0,Ul.isWhitespaceChar)(n)?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),e.state=4):t==="<"?CA(e):t==="/"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),e.state=12):t===">"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),EA(e)):!(0,Ul.isAsciiLetterChar)(n)&&!(0,Ul.isDigitChar)(n)&&t!==":"&&Nd(e)}function Act(e,t,n){t===">"?Nd(e):(0,Ul.isAsciiLetterChar)(n)?e.state=3:Nd(e)}function pct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==="/"?e.state=12:t===">"?EA(e):t==="<"?CA(e):t==="="||(0,Ul.isQuoteChar)(n)||(0,Ul.isControlChar)(n)?Nd(e):e.state=5)}function gct(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?EA(e):t==="<"?CA(e):(0,Ul.isQuoteChar)(n)&&Nd(e)}function _ct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?EA(e):t==="<"?CA(e):(0,Ul.isQuoteChar)(n)?Nd(e):e.state=5)}function yct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?Nd(e):t==="<"?CA(e):e.state=10)}function Cct(e,t){t==='"'&&(e.state=11)}function Ect(e,t){t==="'"&&(e.state=11)}function Ict(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=4:t===">"?EA(e):t==="<"&&CA(e)}function xct(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=4:t==="/"?e.state=12:t===">"?EA(e):t==="<"?CA(e):(e.state=4,Nct(e))}function bct(e,t){t===">"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isClosing:!0})),EA(e)):Nd(e)}function Tct(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{type:"doctype"})),e.state=20):Nd(e)}function Sct(e,t){t==="-"?e.state=15:t===">"?Nd(e):e.state=16}function wct(e,t){t==="-"?e.state=18:t===">"?Nd(e):e.state=16}function Bct(e,t){t==="-"&&(e.state=17)}function Dct(e,t){t==="-"?e.state=18:e.state=16}function vct(e,t){t===">"?EA(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function Pct(e,t){t==="-"?e.state=17:t===">"?EA(e):e.state=16}function Rct(e,t){t===">"?EA(e):t==="<"&&CA(e)}function Nd(e){e.state=0,e.currentTag=e7}function CA(e){e.state=1,e.currentTag=new yA({idx:e.charIdx})}function EA(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),Nd(e),e.currentDataIdx=e.charIdx+1}function Mct(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function $K(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function Nct(e){e.charIdx--}});var N8=ui(i7=>{"use strict";Object.defineProperty(i7,"__esModule",{value:!0});var n7=(am(),nh(sm)),Lct=j_e(),xa=qy(),Oct=UK(),Fct=C8(),Qct=ZK(),kct=sye(),Uct=WK(),Gct=VK(),zct=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=Vct(t.urls),this.email=(0,xa.isBoolean)(t.email)?t.email:this.email,this.phone=(0,xa.isBoolean)(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=(0,xa.isBoolean)(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=Hct(t.stripPrefix),this.stripTrailingSlash=(0,xa.isBoolean)(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=(0,xa.isBoolean)(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&Uct.mentionServices.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Gct.hashtagServices.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=Wct(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return(0,kct.parseHtml)(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,u=s.split(c),f=a;u.forEach(function(h,A){if(A%2===0){var g=n.parseText(h,f);r.push.apply(r,n7.__spreadArray([],n7.__read(g),!1))}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(jct);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="hashtag"}),this.email||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="email"}),this.phone||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="phone"}),this.mention||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=(0,Qct.parseMatches)(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof Fct.HtmlTag)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new Oct.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=Lct.version,e}();i7.default=zct;function Vct(e){return e==null&&(e=!0),(0,xa.isBoolean)(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:(0,xa.isBoolean)(e.schemeMatches)?e.schemeMatches:!0,tldMatches:(0,xa.isBoolean)(e.tldMatches)?e.tldMatches:!0,ipV4Matches:(0,xa.isBoolean)(e.ipV4Matches)?e.ipV4Matches:!0}}function Hct(e){return e==null&&(e=!0),(0,xa.isBoolean)(e)?{scheme:e,www:e}:{scheme:(0,xa.isBoolean)(e.scheme)?e.scheme:!0,www:(0,xa.isBoolean)(e.www)?e.www:!0}}function Wct(e){return typeof e=="number"?{length:e,location:"end"}:n7.__assign({length:Number.POSITIVE_INFINITY,location:"end"},e)}function jct(e,t){return e.getOffset()-t.getOffset()}});var cye=ui(aye=>{"use strict";Object.defineProperty(aye,"__esModule",{value:!0})});var lye=ui(Qg=>{"use strict";Object.defineProperty(Qg,"__esModule",{value:!0});var mI=(am(),nh(sm));mI.__exportStar(cye(),Qg);mI.__exportStar(zK(),Qg);mI.__exportStar(HK(),Qg);mI.__exportStar(uI(),Qg);mI.__exportStar(jK(),Qg);mI.__exportStar(YK(),Qg);mI.__exportStar(GK(),Qg)});var uye=ui(o7=>{"use strict";Object.defineProperty(o7,"__esModule",{value:!0});var Yct=(am(),nh(sm));Yct.__exportStar(ZK(),o7)});var r7=ui((cm,dye)=>{"use strict";cm=dye.exports=N8().default;Object.defineProperty(cm,"__esModule",{value:!0});cm.Autolinker=void 0;var VS=(am(),nh(sm)),fye=VS.__importDefault(N8());cm.Autolinker=fye.default;cm.default=fye.default;VS.__exportStar(N8(),cm);VS.__exportStar(UK(),cm);VS.__exportStar(C8(),cm);VS.__exportStar(lye(),cm);VS.__exportStar(uye(),cm)});var _$=ui((exports,module)=>{/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,A){s[a]=function(m){if(u)if(u=!1,m)A(m);else{for(var _=new Array(arguments.length-1),y=0;y<_.length;)_[y++]=arguments[y];h.apply(null,_)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,A(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var A=null,g=[],m=0,_=0,y;f<h;){var C=u[f++];switch(_){case 0:g[m++]=o[C>>2],y=(C&3)<<4,_=1;break;case 1:g[m++]=o[y|C>>4],y=(C&15)<<2,_=2;break;case 2:g[m++]=o[y|C>>6],g[m++]=o[C&63],_=0;break}m>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,g)),m=0)}return _&&(g[m++]=o[y],g[m++]=61,_===1&&(g[m++]=61)),A?(m&&A.push(String.fromCharCode.apply(String,g.slice(0,m))),A.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var A=h,g=0,m,_=0;_<u.length;){var y=u.charCodeAt(_++);if(y===61&&g>1)break;if((y=r[y])===undefined)throw Error(a);switch(g){case 0:m=y,g=1;break;case 1:f[h++]=m<<2|(y&48)>>4,m=y,g=2;break;case 2:f[h++]=(m&15)<<4|(y&60)>>2,m=y,g=3;break;case 3:f[h++]=(m&3)<<6|y,g=0;break}}if(g===1)throw Error(a);return h-A},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3]}function g(y,C,E){u[0]=y,C[E]=f[3],C[E+1]=f[2],C[E+2]=f[1],C[E+3]=f[0]}c.writeFloatLE=h?A:g,c.writeFloatBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],u[0]}function _(y,C){return f[3]=y[C],f[2]=y[C+1],f[1]=y[C+2],f[0]=y[C+3],u[0]}c.readFloatLE=h?m:_,c.readFloatBE=h?_:m}():function(){function u(h,A,g,m){var _=A<0?1:0;if(_&&(A=-A),A===0)h(1/A>0?0:2147483648,g,m);else if(isNaN(A))h(2143289344,g,m);else if(A>34028234663852886e22)h((_<<31|2139095040)>>>0,g,m);else if(A<11754943508222875e-54)h((_<<31|Math.round(A/1401298464324817e-60))>>>0,g,m);else{var y=Math.floor(Math.log(A)/Math.LN2),C=Math.round(A*Math.pow(2,-y)*8388608)&8388607;h((_<<31|y+127<<23|C)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,A,g){var m=h(A,g),_=(m>>31)*2+1,y=m>>>23&255,C=m&8388607;return y===255?C?NaN:_*(1/0):y===0?_*1401298464324817e-60*C:_*Math.pow(2,y-150)*(C+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3],C[E+4]=f[4],C[E+5]=f[5],C[E+6]=f[6],C[E+7]=f[7]}function g(y,C,E){u[0]=y,C[E]=f[7],C[E+1]=f[6],C[E+2]=f[5],C[E+3]=f[4],C[E+4]=f[3],C[E+5]=f[2],C[E+6]=f[1],C[E+7]=f[0]}c.writeDoubleLE=h?A:g,c.writeDoubleBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],f[4]=y[C+4],f[5]=y[C+5],f[6]=y[C+6],f[7]=y[C+7],u[0]}function _(y,C){return f[7]=y[C],f[6]=y[C+1],f[5]=y[C+2],f[4]=y[C+3],f[3]=y[C+4],f[2]=y[C+5],f[1]=y[C+6],f[0]=y[C+7],u[0]}c.readDoubleLE=h?m:_,c.readDoubleBE=h?_:m}():function(){function u(h,A,g,m,_,y){var C=m<0?1:0;if(C&&(m=-m),m===0)h(0,_,y+A),h(1/m>0?0:2147483648,_,y+g);else if(isNaN(m))h(0,_,y+A),h(2146959360,_,y+g);else if(m>17976931348623157e292)h(0,_,y+A),h((C<<31|2146435072)>>>0,_,y+g);else{var E;if(m<22250738585072014e-324)E=m/5e-324,h(E>>>0,_,y+A),h((C<<31|E/4294967296)>>>0,_,y+g);else{var I=Math.floor(Math.log(m)/Math.LN2);I===1024&&(I=1023),E=m*Math.pow(2,-I),h(E*4503599627370496>>>0,_,y+A),h((C<<31|I+1023<<20|E*1048576&1048575)>>>0,_,y+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,A,g,m,_){var y=h(m,_+A),C=h(m,_+g),E=(C>>31)*2+1,I=C>>>20&2047,b=4294967296*(C&1048575)+y;return I===2047?b?NaN:E*(1/0):I===0?E*5e-324*b:E*Math.pow(2,I-1075)*(b+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(A){if(A<1||A>c)return o(A);f+A>a&&(u=o(a),f=0);var g=r.call(u,f,f+=A);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,A;s<a;)A=r[s++],A<128?f[h++]=A:A>191&&A<224?f[h++]=(A&31)<<6|r[s++]&63:A>239&&A<365?(A=((A&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(A>>10),f[h++]=56320+(A&1023)):f[h++]=(A&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,_){return RangeError("index out of range: "+m.pos+" + "+(_||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(_){if(_ instanceof Uint8Array||Array.isArray(_))return new c(_);throw Error("illegal buffer")}:function(_){if(Array.isArray(_))return new c(_);throw Error("illegal buffer")},f=function(){return i.Buffer?function(y){return(c.create=function(E){return i.Buffer.isBuffer(E)?new o(E):u(E)})(y)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var _=4294967295;return function(){if(_=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(_=(_|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return _;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return _}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var _=this.uint32();return _>>>1^-(_&1)|0};function h(){var m=new r(0,0),_=0;if(this.len-this.pos>4){for(;_<4;++_)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;_=0}else{for(;_<3;++_){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<_*7)>>>0,m}if(this.len-this.pos>4){for(;_<5;++_)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;_<5;++_){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function A(m,_){return(m[_-4]|m[_-3]<<8|m[_-2]<<16|m[_-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(A(this.buf,this.pos+=4),A(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var _=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,_},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var _=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,_},c.prototype.bytes=function(){var _=this.uint32(),y=this.pos,C=this.pos+_;if(C>this.len)throw a(this,_);if(this.pos+=_,Array.isArray(this.buf))return this.buf.slice(y,C);if(y===C){var E=i.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,y,C)},c.prototype.string=function(){var _=this.bytes();return s.read(_,0,_.length)},c.prototype.skip=function(_){if(typeof _=="number"){if(this.pos+_>this.len)throw a(this,_);this.pos+=_}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var _=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[_](!1)},uint64:function(){return h.call(this)[_](!0)},sint64:function(){return h.call(this).zzDecode()[_](!1)},fixed64:function(){return g.call(this)[_](!0)},sfixed64:function(){return g.call(this)[_](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(_){return h.emit("error",_,s),f(_)}return h.emit("data",m,s),f(null,m)})}catch(A){return h.emit("error",A,s),setTimeout(function(){f(A)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,A=(u-h)/4294967296>>>0;return f&&(A=~A>>>0,h=~h>>>0,++h>4294967295&&(h=0,++A>4294967295&&(A=0))),new o(h,A)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(I,b,S){this.fn=I,this.len=b,this.next=undefined,this.val=S}function u(){}function f(I){this.head=I.head,this.tail=I.tail,this.len=I.len,this.next=I.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var A=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=A(),h.alloc=function(b){return new i.Array(b)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(b,S,B){return this.tail=this.tail.next=new c(b,S,B),this.len+=S,this};function g(I,b,S){b[S]=I&255}function m(I,b,S){for(;I>127;)b[S++]=I&127|128,I>>>=7;b[S]=I}function _(I,b){this.len=I,this.next=undefined,this.val=b}_.prototype=Object.create(c.prototype),_.prototype.fn=m,h.prototype.uint32=function(b){return this.len+=(this.tail=this.tail.next=new _((b=b>>>0)<128?1:b<16384?2:b<2097152?3:b<268435456?4:5,b)).len,this},h.prototype.int32=function(b){return b<0?this._push(y,10,r.fromNumber(b)):this.uint32(b)},h.prototype.sint32=function(b){return this.uint32((b<<1^b>>31)>>>0)};function y(I,b,S){for(;I.hi;)b[S++]=I.lo&127|128,I.lo=(I.lo>>>7|I.hi<<25)>>>0,I.hi>>>=7;for(;I.lo>127;)b[S++]=I.lo&127|128,I.lo=I.lo>>>7;b[S++]=I.lo}h.prototype.uint64=function(b){var S=r.from(b);return this._push(y,S.length(),S)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(b){var S=r.from(b).zzEncode();return this._push(y,S.length(),S)},h.prototype.bool=function(b){return this._push(g,1,b?1:0)};function C(I,b,S){b[S]=I&255,b[S+1]=I>>>8&255,b[S+2]=I>>>16&255,b[S+3]=I>>>24}h.prototype.fixed32=function(b){return this._push(C,4,b>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(b){var S=r.from(b);return this._push(C,4,S.lo)._push(C,4,S.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(b){return this._push(i.float.writeFloatLE,4,b)},h.prototype.double=function(b){return this._push(i.float.writeDoubleLE,8,b)};var E=i.Array.prototype.set?function(b,S,B){S.set(b,B)}:function(b,S,B){for(var v=0;v<b.length;++v)S[B+v]=b[v]};h.prototype.bytes=function(b){var S=b.length>>>0;if(!S)return this._push(g,1,0);if(i.isString(b)){var B=h.alloc(S=s.length(b));s.decode(b,B,0),b=B}return this.uint32(S)._push(E,S,b)},h.prototype.string=function(b){var S=a.length(b);return S?this.uint32(S)._push(a.write,S,b):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var b=this.head,S=this.tail,B=this.len;return this.reset().uint32(B),B&&(this.tail.next=b.next,this.tail=S,this.len+=B),this},h.prototype.finish=function(){for(var b=this.head.next,S=this.constructor.alloc(this.len),B=0;b;)b.fn(b.val,S,B),B+=b.len,b=b.next;return S},h._configure=function(I){o=I,h.create=A(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var $Se=ui((w4i,S5)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var A=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,A),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,_=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),y={width:g.width,height:g.height,pixelData:_.resultPixels,minValue:_.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return _.resultMask&&(y.maskData=_.resultMask),h.returnEncodedMask&&g.mask&&(y.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(y.fileInfo=s(g),h.computeUsedBitDepths&&(y.fileInfo.bitDepths=a(g))),y};var r=function(f,h,A,g,m){var _=0,y=f.pixels.numBlocksX,C=f.pixels.numBlocksY,E=Math.floor(f.width/y),I=Math.floor(f.height/C),b=2*f.maxZError,S=Number.MAX_VALUE,B;A=A||(f.mask?f.mask.bitset:null);var v,P;v=new h(f.width*f.height),m&&A&&(P=new Uint8Array(f.width*f.height));for(var M=new Float32Array(E*I),L,p,x=0;x<=C;x++){var T=x!==C?I:f.height%C;if(T!==0)for(var w=0;w<=y;w++){var R=w!==y?E:f.width%y;if(R!==0){var O=x*f.width*I+w*E,k=f.width-R,Q=f.pixels.blocks[_],z,F,H;Q.encoding<2?(Q.encoding===0?z=Q.rawData:(u(Q.stuffedData,Q.bitsPerPixel,Q.numValidPixels,Q.offset,b,M,f.pixels.maxValue),z=M),F=0):Q.encoding===2?H=0:H=Q.offset;var W;if(A)for(p=0;p<T;p++){for(O&7&&(W=A[O>>3],W<<=O&7),L=0;L<R;L++)O&7||(W=A[O>>3]),W&128?(P&&(P[O]=1),B=Q.encoding<2?z[F++]:H,S=S>B?B:S,v[O++]=B):(P&&(P[O]=0),v[O++]=g),W<<=1;O+=k}else if(Q.encoding<2)for(p=0;p<T;p++){for(L=0;L<R;L++)B=z[F++],S=S>B?B:S,v[O++]=B;O+=k}else for(S=S>H?H:S,p=0;p<T;p++){for(L=0;L<R;L++)v[O++]=H;O+=k}if(Q.encoding===1&&F!==Q.numValidPixels)throw"Block and Mask do not match";_++}}}return{resultPixels:v,resultMask:P,minValue:S}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,A={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?A.float32=!0:m.encoding===1?A[m.bitsPerPixel]=!0:A[0]=!0}return Object.keys(A)},c=function(f,h,A){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var _=new DataView(f,h,24);if(g.fileVersion=_.getInt32(0,!0),g.imageType=_.getInt32(4,!0),g.height=_.getUint32(8,!0),g.width=_.getUint32(12,!0),g.maxZError=_.getFloat64(16,!0),h+=24,!A)if(_=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=_.getUint32(0,!0),g.mask.numBlocksX=_.getUint32(4,!0),g.mask.numBytes=_.getUint32(8,!0),g.mask.maxValue=_.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var y=new Uint8Array(Math.ceil(g.width*g.height/8));_=new DataView(f,h,g.mask.numBytes);var C=_.getInt16(0,!0),E=2,I=0;do{if(C>0)for(;C--;)y[I++]=_.getUint8(E++);else{var b=_.getUint8(E++);for(C=-C;C--;)y[I++]=b}C=_.getInt16(E,!0),E+=2}while(E<g.mask.numBytes);if(C!==-32768||I<y.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=y,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));_=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=_.getUint32(0,!0),g.pixels.numBlocksX=_.getUint32(4,!0),g.pixels.numBytes=_.getUint32(8,!0),g.pixels.maxValue=_.getFloat32(12,!0),h+=16;var S=g.pixels.numBlocksX,B=g.pixels.numBlocksY,v=S+(g.width%S>0?1:0),P=B+(g.height%B>0?1:0);g.pixels.blocks=new Array(v*P);for(var M=0,L=0;L<P;L++)for(var p=0;p<v;p++){var x=0,T=f.byteLength-h;_=new DataView(f,h,Math.min(10,T));var w={};g.pixels.blocks[M++]=w;var R=_.getUint8(0);if(x++,w.encoding=R&63,w.encoding>3)throw"Invalid block encoding ("+w.encoding+")";if(w.encoding===2){h++;continue}if(R!==0&&R!==2){if(R>>=6,w.offsetType=R,R===2)w.offset=_.getInt8(1),x++;else if(R===1)w.offset=_.getInt16(1,!0),x+=2;else if(R===0)w.offset=_.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(w.encoding===1)if(R=_.getUint8(x),x++,w.bitsPerPixel=R&63,R>>=6,w.numValidPixelsType=R,R===2)w.numValidPixels=_.getUint8(x),x++;else if(R===1)w.numValidPixels=_.getUint16(x,!0),x+=2;else if(R===0)w.numValidPixels=_.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(h+=x,w.encoding!==3){var O,k;if(w.encoding===0){var Q=(g.pixels.numBytes-1)/4;if(Q!==Math.floor(Q))throw"uncompressed block has invalid length";O=new ArrayBuffer(Q*4),k=new Uint8Array(O),k.set(new Uint8Array(f,h,Q*4));var z=new Float32Array(O);w.rawData=z,h+=Q*4}else if(w.encoding===1){var F=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),H=Math.ceil(F/4);O=new ArrayBuffer(H*4),k=new Uint8Array(O),k.set(new Uint8Array(f,h,F)),w.stuffedData=new Uint32Array(O),h+=F}}}return g.eofOffset=h,g},u=function(f,h,A,g,m,_,y){var C=(1<<h)-1,E=0,I,b=0,S,B,v=Math.ceil((y-g)/m),P=f.length*4-Math.ceil(h*A/8);for(f[f.length-1]<<=8*P,I=0;I<A;I++){if(b===0&&(B=f[E++],b=32),b>=h)S=B>>>b-h&C,b-=h;else{var M=h-b;S=(B&C)<<M&C,B=f[E++],b=32-M,S+=B>>>b}_[I]=S<v?g+S*m:y}return _};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b,S,B,v,P=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*P,A)for(E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=A[b];else for(v=Math.ceil((_-g)/m),E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=b<v?g+b*m:_},unstuffLUT:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b,S=[],B=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*B;var v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(b=c[_++],E=32),E>=u?(I=b>>>E-u&m,E-=u):(C=u-E,I=(b&m)<<C&m,b=c[_++],E=32-C,I+=b>>>E),S[y]=I<v?h+I*A:g;return S.unshift(h),S},unstuff2:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b=0,S,B,v;if(A)for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=A[S];else{var P=Math.ceil((_-g)/m);for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=S<P?g+S*m:_}return u},unstuffLUT2:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b=0,S,B=[],v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(S=c[_++],E=32,b=0),E>=u?(I=S>>>b&m,E-=u,b+=u):(C=u-E,I=S>>>b&m,S=c[_++],E=32-C,I|=(S&(1<<C)-1)<<u-C,b=C),B[y]=I<v?h+I*A:g;return B.unshift(h),B},originalUnstuff:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y,C,E,I=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*I,m=0;m<h;m++)_===0&&(C=c[g++],_=32),_>=f?(y=C>>>_-f&A,_-=f):(E=f-_,y=(C&A)<<E&A,C=c[g++],_=32-E,y+=C>>>_),u[m]=y;return u},originalUnstuff2:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y=0,C,E,I;for(m=0;m<h;m++)_===0&&(E=c[g++],_=32,y=0),_>=f?(C=E>>>y&A,_-=f,y+=f):(I=f-_,C=E>>>y&A,E=c[g++],_=32-I,C|=(E&(1<<I)-1)<<f-I,y=I),u[m]=C;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,A=Math.floor(h/2),g=0;A;){var m=A>=359?359:A;A-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),A={};if(A.fileIdentifierString=String.fromCharCode.apply(null,h),A.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+A.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);A.fileVersion=m,f+=4,m>=3&&(A.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),A.height=g.getUint32(0,!0),A.width=g.getUint32(4,!0),f+=8,m>=4?(A.numDims=g.getUint32(8,!0),f+=4):A.numDims=1,g=new DataView(c,f,40),A.numValidPixel=g.getUint32(0,!0),A.microBlockSize=g.getInt32(4,!0),A.blobSize=g.getInt32(8,!0),A.imageType=g.getInt32(12,!0),A.maxZError=g.getFloat64(16,!0),A.zMin=g.getFloat64(24,!0),A.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=A,u.ptr=f;var _,y;if(m>=3&&(y=m>=4?52:48,_=this.computeChecksumFletcher32(new Uint8Array(c,f-y,A.blobSize-14)),_!==A.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),A=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,A),m=this.readSubArray(c,u.ptr+A,h,A);u.ptr+=2*A;var _,y=!0;for(_=0;_<f.numDims;_++)if(g[_]!==m[_]){y=!1;break}return f.minValues=g,f.maxValues=m,y},readSubArray:function(c,u,f,h){var A;if(f===Uint8Array)A=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),A=new f(g)}return A},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,A=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),_={};if(_.numBytes=m.getUint32(0,!0),f+=4,(g===0||A===g)&&_.numBytes!==0)throw"invalid mask";var y,C;if(g===0)y=new Uint8Array(Math.ceil(A/8)),_.bitset=y,C=new Uint8Array(A),u.pixels.resultMask=C,f+=_.numBytes;else if(_.numBytes>0){y=new Uint8Array(Math.ceil(A/8)),m=new DataView(c,f,_.numBytes);var E=m.getInt16(0,!0),I=2,b=0,S=0;do{if(E>0)for(;E--;)y[b++]=m.getUint8(I++);else for(S=m.getUint8(I++),E=-E;E--;)y[b++]=S;E=m.getInt16(I,!0),I+=2}while(I<_.numBytes);if(E!==-32768||b<y.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(A);var B=0,v=0;for(v=0;v<A;v++)v&7?(B=y[v>>3],B<<=v&7):B=y[v>>3],B&128&&(C[v]=1);u.pixels.resultMask=C,_.bitset=y,f+=_.numBytes}return u.ptr=f,u.mask=_,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,A=u.headerInfo,g=A.numDims,m=A.width*A.height,_=A.imageType,y=A.numValidPixel*r.getDataTypeSize(_)*g,C,E=u.pixels.resultMask;if(f===Uint8Array)C=new Uint8Array(c,h,y);else{var I=new ArrayBuffer(y),b=new Uint8Array(I);b.set(new Uint8Array(c,h,y)),C=new f(I)}if(C.length===m*g)u.pixels.resultPixels=C;else{u.pixels.resultPixels=new f(m*g);var S=0,B=0,v=0,P=0;if(g>1)for(v=0;v<g;v++)for(P=v*m,B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[P+B]=C[S++]);else for(B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[B]=C[S++])}return h+=y,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var A=h.getInt32(0,!0);if(A<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),_=h.getInt32(12,!0);if(m>=_)return!1;var y=new Uint32Array(_-m);r.decodeBits(c,u,y);var C=[],E,I,b,S;for(E=m;E<_;E++)I=E-(E<g?0:g),C[I]={first:y[E-m],second:null};var B=c.byteLength-u.ptr,v=Math.ceil(B/4),P=new ArrayBuffer(v*4),M=new Uint8Array(P);M.set(new Uint8Array(c,u.ptr,B));var L=new Uint32Array(P),p=0,x,T=0;for(x=L[0],E=m;E<_;E++)I=E-(E<g?0:g),S=C[I].first,S>0&&(C[I].second=x<<p>>>32-S,32-p>=S?(p+=S,p===32&&(p=0,T++,x=L[T])):(p+=S-32,T++,x=L[T],C[I].second|=x>>>32-p));var w=0,R=0,O=new s;for(E=0;E<C.length;E++)C[E]!==void 0&&(w=Math.max(w,C[E].first));w>=f?R=f:R=w,w>=30&&console.log("WARning, large NUM LUT BITS IS "+w);var k=[],Q,z,F,H,W,Z;for(E=m;E<_;E++)if(I=E-(E<g?0:g),S=C[I].first,S>0)if(Q=[S,I],S<=R)for(z=C[I].second<<R-S,F=1<<R-S,b=0;b<F;b++)k[z|b]=Q;else for(z=C[I].second,Z=O,H=S-1;H>=0;H--)W=z>>>H&1,W?(Z.right||(Z.right=new s),Z=Z.right):(Z.left||(Z.left=new s),Z=Z.left),H===0&&!Z.val&&(Z.val=Q[1]);return{decodeLut:k,numBitsLUTQick:R,numBitsLUT:w,tree:O,stuffedData:L,srcPtr:T,bitPos:p}},readHuffman:function(c,u,f){var h=u.headerInfo,A=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,_=m*g,y=this.readHuffmanTree(c,u),C=y.decodeLut,E=y.tree,I=y.stuffedData,b=y.srcPtr,S=y.bitPos,B=y.numBitsLUTQick,v=y.numBitsLUT,P=u.headerInfo.imageType===0?128:0,M,L,p,x=u.pixels.resultMask,T,w,R,O,k,Q,z,F=0;S>0&&(b++,S=0);var H=I[b],W=u.encodeMode===1,Z=new f(_*A),Y=Z,$;for($=0;$<h.numDims;$++){if(A>1&&(Y=new f(Z.buffer,_*$,_),F=0),u.headerInfo.numValidPixel===m*g)for(Q=0,O=0;O<g;O++)for(k=0;k<m;k++,Q++){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),M=E,z=0;z<v;z++)if(R=T>>>v-z-1&1,M=R?M.right:M.left,!(M.left||M.right)){L=M.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(k>0?p+=F:O>0?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}else for(Q=0,O=0;O<g;O++)for(k=0;k<m;k++,Q++)if(x[Q]){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),M=E,z=0;z<v;z++)if(R=T>>>v-z-1&1,M=R?M.right:M.left,!(M.left||M.right)){L=M.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(k>0&&x[Q-1]?p+=F:O>0&&x[Q-m]?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}u.ptr=u.ptr+(b+1)*4+(S>0?4:0)}u.pixels.resultPixels=Z},decodeBits:function(c,u,f,h,A){{var g=u.headerInfo,m=g.fileVersion,_=0,y=new DataView(c,u.ptr,5),C=y.getUint8(0);_++;var E=C>>6,I=E===0?4:3-E,b=(C&32)>0,S=C&31,B=0;if(I===1)B=y.getUint8(_),_++;else if(I===2)B=y.getUint16(_,!0),_+=2;else if(I===4)B=y.getUint32(_,!0),_+=4;else throw"Invalid valid pixel count type";var v=2*g.maxZError,P,M,L,p,x,T,w,R,O,k,Q=g.numDims>1?g.maxValues[A]:g.zMax;if(b){for(u.counter.lut++,R=y.getUint8(_),O=S,_++,p=Math.ceil((R-1)*S/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),u.ptr+=_,L.set(new Uint8Array(c,u.ptr,p)),w=new Uint32Array(M),u.ptr+=p,k=0;R-1>>>k;)k++;p=Math.ceil(B*k/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(M),u.ptr+=p,m>=3?T=o.unstuffLUT2(w,S,R-1,h,v,Q):T=o.unstuffLUT(w,S,R-1,h,v,Q),m>=3?o.unstuff2(P,f,k,B,T):o.unstuff(P,f,k,B,T)}else u.counter.bitstuffer++,k=S,u.ptr+=_,k>0&&(p=Math.ceil(B*k/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(M),u.ptr+=p,m>=3?h==null?o.originalUnstuff2(P,f,k,B):o.unstuff2(P,f,k,B,!1,h,v,Q):h==null?o.originalUnstuff(P,f,k,B):o.unstuff(P,f,k,B,!1,h,v,Q))}},readTiles:function(c,u,f){var h=u.headerInfo,A=h.width,g=h.height,m=h.microBlockSize,_=h.imageType,y=r.getDataTypeSize(_),C=Math.ceil(A/m),E=Math.ceil(g/m);u.pixels.numBlocksY=E,u.pixels.numBlocksX=C,u.pixels.ptr=0;var I=0,b=0,S=0,B=0,v=0,P=0,M=0,L=0,p=0,x=0,T=0,w=0,R=0,O=0,k=0,Q=0,z,F,H,W,Z,Y,$=new f(m*m),X=g%m||m,he=A%m||m,ge,fe,ye=h.numDims,xe,ve=u.pixels.resultMask,Te=u.pixels.resultPixels;for(S=0;S<E;S++)for(v=S!==E-1?m:X,B=0;B<C;B++)for(P=B!==C-1?m:he,T=S*A*m+B*m,w=A-P,xe=0;xe<ye;xe++){if(ye>1&&(Te=new f(u.pixels.resultPixels.buffer,A*g*xe*y,A*g)),M=c.byteLength-u.ptr,z=new DataView(c,u.ptr,Math.min(10,M)),F={},Q=0,L=z.getUint8(0),Q++,p=L>>6&255,x=L>>2&15,x!==(B*m>>3&15))throw"integrity issue";if(Y=L&3,Y>3)throw u.ptr+=Q,"Invalid block encoding ("+Y+")";if(Y===2){u.counter.constant++,u.ptr+=Q;continue}else if(Y===0){if(u.counter.uncompressed++,u.ptr+=Q,R=v*P*y,O=c.byteLength-u.ptr,R=R<O?R:O,H=new ArrayBuffer(R%y===0?R:R+y-R%y),W=new Uint8Array(H),W.set(new Uint8Array(c,u.ptr,R)),Z=new f(H),k=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=Z[k++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=Z[k++];T+=w}u.ptr+=k*y}else if(ge=r.getDataTypeUsed(_,p),fe=r.getOnePixel(F,Q,ge,z),Q+=r.getDataTypeSize(ge),Y===3)if(u.ptr+=Q,u.counter.constantoffset++,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=fe),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=fe;T+=w}else if(u.ptr+=Q,r.decodeBits(c,u,$,fe,xe),Q=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=$[Q++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=$[Q++];T+=w}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,A=h*f,g=0,m=0,_=0,y=c.pixels.resultMask;if(y)if(f>1)for(g=0;g<f;g++)for(_=g*h,m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[_+m]=u);else for(m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<A;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var A=0;switch(f){case 0:A=h.getInt8(u);break;case 1:A=h.getUint8(u);break;case 2:A=h.getInt16(u,!0);break;case 3:A=h.getUint16(u,!0);break;case 4:A=h.getInt32(u,!0);break;case 5:A=h.getUInt32(u,!0);break;case 6:A=h.getFloat32(u,!0);break;case 7:A=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return A}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,A={};if(A.ptr=u.inputOffset||0,A.pixels={},!!r.readHeaderInfo(c,A)){var g=A.headerInfo,m=g.fileVersion,_=r.getDataTypeArray(g.imageType);r.readMask(c,A),g.numValidPixel!==g.width*g.height&&!A.pixels.resultMask&&(A.pixels.resultMask=u.maskData);var y=g.width*g.height;if(A.pixels.resultPixels=new _(y*g.numDims),A.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(A);else if(m>=4&&r.checkMinMaxRanges(c,A))r.constructConstantSurface(A);else{var C=new DataView(c,A.ptr,2),E=C.getUint8(0);if(A.ptr++,E)r.readDataOneSweep(c,A,_);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var I=C.getUint8(1);if(A.ptr++,A.encodeMode=I,I>2||m<4&&I>1)throw"Invalid Huffman flag "+I;I?r.readHuffman(c,A,_):r.readTiles(c,A,_)}else r.readTiles(c,A,_)}A.eofOffset=A.ptr;var b;u.inputOffset?(b=A.headerInfo.blobSize+u.inputOffset-A.ptr,Math.abs(b)>=1&&(A.eofOffset=u.inputOffset+A.headerInfo.blobSize)):(b=A.headerInfo.blobSize-A.ptr,Math.abs(b)>=1&&(A.eofOffset=A.headerInfo.blobSize));var S={width:g.width,height:g.height,pixelData:A.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:A.pixels.resultMask};if(A.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var B=A.pixels.resultMask;for(h=0;h<y;h++)B[h]||(S.pixelData[h]=f);S.noDataValue=f}return A.noDataValue=f,u.returnFileInfo&&(S.fileInfo=r.formatFileInfo(A)),S}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,A=o.byteLength-10,g,m=[],_,y,C={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<A;){var E=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:y,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=E.fileInfo.eofOffset,h===0&&(g=E.encodedMaskData,y=E.maskData,C.width=E.width,C.height=E.height,C.dimCount=E.dimCount||1,C.pixelType=E.pixelType||E.fileInfo.pixelType,C.mask=E.maskData),f>1&&E.fileInfo.mask&&E.fileInfo.mask.numBytes>0&&m.push(E.maskData),h++,C.pixels.push(E.pixelData),C.statistics.push({minValue:E.minValue,maxValue:E.maxValue,noDataValue:E.noDataValue,dimStats:E.dimStats})}var I,b,S;if(f>1&&m.length>1){for(S=C.width*C.height,C.bandMasks=m,y=new Uint8Array(S),y.set(m[0]),I=1;I<m.length;I++)for(_=m[I],b=0;b<S;b++)y[b]=y[b]&_[b];C.maskData=y}return C}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof S5<"u"&&S5.exports?S5.exports=i:this.Lerc=i})()});var Gwe=ui((LU,ate)=>{/*! NoSleep.min.js v0.12.0 - git.io/vfn01 - Rich Tibbett - MIT license */(function(e,t){typeof LU=="object"&&typeof ate=="object"?ate.exports=t():typeof define=="function"&&define.amd?define([],t):typeof LU=="object"?LU.NoSleep=t():e.NoSleep=t()})(LU,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(i,o,r){n.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:r})},n.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,o){if(1&o&&(i=n(i)),8&o||4&o&&typeof i=="object"&&i&&i.__esModule)return i;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:i}),2&o&&typeof i!="string")for(var s in i)n.d(r,s,function(a){return i[a]}.bind(null,s));return r},n.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(o,"a",o),o},n.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var i=function(){function f(h,A){for(var g=0;g<A.length;g++){var m=A[g];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(h,m.key,m)}}return function(h,A,g){return A&&f(h.prototype,A),g&&f(h,g),h}}(),o=n(1),r=o.webm,s=o.mp4,a=function(){return typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream},c=function(){return"wakeLock"in navigator},u=function(){function f(){var h=this;if(function(g,m){if(!(g instanceof m))throw new TypeError("Cannot call a class as a function")}(this,f),this.enabled=!1,c()){this._wakeLock=null;var A=function(){h._wakeLock!==null&&document.visibilityState==="visible"&&h.enable()};document.addEventListener("visibilitychange",A),document.addEventListener("fullscreenchange",A)}else a()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",r),this._addSourceToVideo(this.noSleepVideo,"mp4",s),this.noSleepVideo.addEventListener("loadedmetadata",function(){h.noSleepVideo.duration<=1?h.noSleepVideo.setAttribute("loop",""):h.noSleepVideo.addEventListener("timeupdate",function(){h.noSleepVideo.currentTime>.5&&(h.noSleepVideo.currentTime=Math.random())})}))}return i(f,[{key:"_addSourceToVideo",value:function(h,A,g){var m=document.createElement("source");m.src=g,m.type="video/"+A,h.appendChild(m)}},{key:"enable",value:function(){var h=this;return c()?navigator.wakeLock.request("screen").then(function(A){h._wakeLock=A,h.enabled=!0,console.log("Wake Lock active."),h._wakeLock.addEventListener("release",function(){console.log("Wake Lock released.")})}).catch(function(A){throw h.enabled=!1,console.error(A.name+", "+A.message),A}):a()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(function(){document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(function(A){return h.enabled=!0,A}).catch(function(A){throw h.enabled=!1,A})}},{key:"disable",value:function(){c()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):a()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}},{key:"isEnabled",get:function(){return this.enabled}}]),f}();e.exports=u},function(e,t,n){"use strict";e.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}}])})});var QRt={};Cte(QRt,{AlphaMode:()=>Xm,AlphaPipelineStage:()=>F1,AnchorPointDirect:()=>kM,AnchorPointIndirect:()=>UM,Animation:()=>$3,AnimationViewModel:()=>eU,Appearance:()=>po,ApproximateTerrainHeights:()=>Ti,ArcGISTiledElevationTerrainProvider:()=>n$,ArcGisBaseMapType:()=>Lh,ArcGisMapServerImageryProvider:()=>jp,ArcGisMapService:()=>Zu,ArcType:()=>cn,ArticulationStageType:()=>kc,AssociativeArray:()=>vt,Atmosphere:()=>e0,AtmospherePipelineStage:()=>g1,AttributeCompression:()=>On,AttributeType:()=>zt,AutoExposure:()=>uk,AutomaticUniforms:()=>rp,Axis:()=>fo,AxisAlignedBoundingBox:()=>S_,B3dmLoader:()=>t1,B3dmParser:()=>ZM,BaseLayerPicker:()=>nU,BaseLayerPickerViewModel:()=>tU,BatchTable:()=>cE,BatchTableHierarchy:()=>PE,BatchTexture:()=>Il,BatchTexturePipelineStage:()=>Q1,Billboard:()=>xo,BillboardCollection:()=>nf,BillboardGraphics:()=>Tc,BillboardLoadState:()=>ws,BillboardTexture:()=>eg,BillboardVisualizer:()=>SB,BingMapsGeocoderService:()=>o$,BingMapsImageryProvider:()=>oN,BingMapsStyle:()=>oT,BlendEquation:()=>lc,BlendFunction:()=>Oo,BlendOption:()=>Uo,BlendingState:()=>pn,BoundingRectangle:()=>Ye,BoundingSphere:()=>le,BoundingSphereState:()=>mt,BoundingVolumeSemantics:()=>KE,BoxEmitter:()=>K$,BoxGeometry:()=>cc,BoxGeometryUpdater:()=>DR,BoxGraphics:()=>pE,BoxOutlineGeometry:()=>ah,BrdfLutGenerator:()=>mQ,Buffer:()=>Ct,BufferLoader:()=>FE,BufferUsage:()=>Qe,CPUStylingPipelineStage:()=>z1,CallbackPositionProperty:()=>vR,CallbackProperty:()=>_h,Camera:()=>Co,CameraEventAggregator:()=>gk,CameraEventType:()=>Ji,CameraFlightPath:()=>pQ,Cartesian2:()=>U,Cartesian3:()=>d,Cartesian4:()=>se,CartesianRectangle:()=>hT,Cartographic:()=>Ae,CartographicGeocoderService:()=>s$,CatmullRomSpline:()=>a$,Cesium3DContentGroup:()=>vE,Cesium3DTile:()=>xd,Cesium3DTileBatchTable:()=>Ip,Cesium3DTileColorBlendMode:()=>ou,Cesium3DTileContent:()=>X$,Cesium3DTileContentFactory:()=>b0,Cesium3DTileContentState:()=>ir,Cesium3DTileContentType:()=>Js,Cesium3DTileFeature:()=>ha,Cesium3DTileFeatureTable:()=>Ph,Cesium3DTileOptimizationHint:()=>_d,Cesium3DTileOptimizations:()=>ZL,Cesium3DTilePass:()=>qo,Cesium3DTilePassState:()=>Vd,Cesium3DTilePointFeature:()=>tg,Cesium3DTileRefine:()=>tr,Cesium3DTileStyle:()=>xx,Cesium3DTileStyleEngine:()=>oO,Cesium3DTilesInspector:()=>cU,Cesium3DTilesInspectorViewModel:()=>aU,Cesium3DTilesVoxelProvider:()=>J$,Cesium3DTileset:()=>ks,Cesium3DTilesetBaseTraversal:()=>uO,Cesium3DTilesetCache:()=>tO,Cesium3DTilesetGraphics:()=>xE,Cesium3DTilesetHeatmap:()=>nO,Cesium3DTilesetMetadata:()=>N0,Cesium3DTilesetMostDetailedTraversal:()=>aO,Cesium3DTilesetSkipTraversal:()=>hO,Cesium3DTilesetStatistics:()=>Wh,Cesium3DTilesetTraversal:()=>Ca,Cesium3DTilesetVisualizer:()=>mO,CesiumInspector:()=>fU,CesiumInspectorViewModel:()=>uU,CesiumTerrainProvider:()=>px,CesiumWidget:()=>f3,Check:()=>Po,CheckerboardMaterialProperty:()=>UT,CircleEmitter:()=>T3,CircleGeometry:()=>h$,CircleOutlineGeometry:()=>m$,ClassificationModelDrawCommand:()=>eL,ClassificationPipelineStage:()=>k1,ClassificationPrimitive:()=>ab,ClassificationType:()=>Jn,ClearCommand:()=>Ci,ClippingPlane:()=>XE,ClippingPlaneCollection:()=>Fs,ClippingPolygon:()=>Qb,ClippingPolygonCollection:()=>wh,Clock:()=>Xh,ClockRange:()=>fs,ClockStep:()=>wo,ClockViewModel:()=>X3,CloudCollection:()=>iee,CloudType:()=>Xw,Color:()=>G,ColorBlendMode:()=>Qc,ColorGeometryInstanceAttribute:()=>$t,ColorMaterialProperty:()=>Xt,Command:()=>Yee,ComponentDatatype:()=>q,Composite3DTileContent:()=>UR,CompositeEntityCollection:()=>hq,CompositeMaterialProperty:()=>zT,CompositePositionProperty:()=>ja,CompositeProperty:()=>Wc,CompressedTextureBuffer:()=>LB,ComputeCommand:()=>Tl,ComputeEngine:()=>C2,ConditionsExpression:()=>E3,ConeEmitter:()=>ree,ConstantPositionProperty:()=>hl,ConstantProperty:()=>ci,ConstantSpline:()=>r1,ContentMetadata:()=>VL,Context:()=>DI,ContextLimits:()=>Yt,CoplanarPolygonGeometry:()=>ZO,CoplanarPolygonGeometryLibrary:()=>ug,CoplanarPolygonOutlineGeometry:()=>Id,CornerType:()=>ji,CorrelationGroup:()=>GM,CorridorGeometry:()=>G0,CorridorGeometryLibrary:()=>no,CorridorGeometryUpdater:()=>xO,CorridorGraphics:()=>_E,CorridorOutlineGeometry:()=>IO,Credit:()=>Bt,CreditDisplay:()=>CQ,CubeMap:()=>kr,CubeMapFace:()=>WB,CubicRealPolynomial:()=>ZC,CullFace:()=>Mi,CullingVolume:()=>Os,CumulusCloud:()=>Ff,CustomDataSource:()=>DO,CustomHeightmapTerrainProvider:()=>A$,CustomShader:()=>ix,CustomShaderMode:()=>Wp,CustomShaderPipelineStage:()=>K1,CustomShaderTranslucencyMode:()=>dy,CylinderGeometry:()=>vO,CylinderGeometryLibrary:()=>z0,CylinderGeometryUpdater:()=>RO,CylinderGraphics:()=>yE,CylinderOutlineGeometry:()=>PO,CzmlDataSource:()=>zO,DataSource:()=>us,DataSourceClock:()=>Jh,DataSourceCollection:()=>VO,DataSourceDisplay:()=>PF,DebugAppearance:()=>see,DebugCameraPrimitive:()=>RA,DebugInspector:()=>Tk,DebugModelMatrixPrimitive:()=>w3,DefaultProxy:()=>p$,DepthFunction:()=>Qa,DepthPlane:()=>SQ,DequantizationPipelineStage:()=>J1,DerivedCommand:()=>MA,DeveloperError:()=>me,DeviceOrientationCameraController:()=>wQ,DirectionalLight:()=>aee,DiscardEmptyTileImagePolicy:()=>rT,DiscardMissingTileImagePolicy:()=>nN,DistanceDisplayCondition:()=>Ut,DistanceDisplayConditionGeometryInstanceAttribute:()=>Kn,DoubleEndedPriorityQueue:()=>cx,DoublyLinkedList:()=>eO,DracoLoader:()=>Dp,DrawCommand:()=>nt,DynamicAtmosphereLightingType:()=>Np,DynamicEnvironmentMapManager:()=>Lp,DynamicGeometryBatch:()=>K0,DynamicGeometryUpdater:()=>_i,EarthOrientationParameters:()=>CB,EarthOrientationParametersSample:()=>A_,EasingFunction:()=>ms,EllipseGeometry:()=>kl,EllipseGeometryLibrary:()=>Cu,EllipseGeometryUpdater:()=>WO,EllipseGraphics:()=>CE,EllipseOutlineGeometry:()=>Af,Ellipsoid:()=>te,EllipsoidGeodesic:()=>up,EllipsoidGeometry:()=>Ia,EllipsoidGeometryUpdater:()=>YO,EllipsoidGraphics:()=>EE,EllipsoidOutlineGeometry:()=>af,EllipsoidPrimitive:()=>lQ,EllipsoidRhumbLine:()=>uc,EllipsoidSurfaceAppearance:()=>cee,EllipsoidTangentPlane:()=>ys,EllipsoidTerrainProvider:()=>DA,EllipsoidalOccluder:()=>Eg,Empty3DTileContent:()=>wT,EncodedCartesian3:()=>ei,Entity:()=>fr,EntityCluster:()=>lf,EntityCollection:()=>Ea,EntityView:()=>MF,Event:()=>_e,EventHelper:()=>Dr,Expression:()=>id,ExpressionNodeType:()=>It,ExtrapolationType:()=>ff,FeatureDetection:()=>Wt,FeatureIdPipelineStage:()=>fy,Fog:()=>BQ,ForEach:()=>Re,FrameRateMonitor:()=>v3,FrameState:()=>DQ,Framebuffer:()=>$r,FramebufferManager:()=>Di,Frozen:()=>V,FrustumCommands:()=>NQ,FrustumGeometry:()=>OI,FrustumOutlineGeometry:()=>xQ,Fullscreen:()=>Fr,FullscreenButton:()=>hU,FullscreenButtonViewModel:()=>dU,GaussianSplat3DTileContent:()=>ST,GaussianSplatPrimitive:()=>TT,GaussianSplatRenderResources:()=>kL,GaussianSplatSorter:()=>bT,GaussianSplatTextureGenerator:()=>QL,GeoJsonDataSource:()=>jy,GeoJsonLoader:()=>n1,GeocodeType:()=>wC,Geocoder:()=>AU,GeocoderService:()=>Ww,GeocoderViewModel:()=>mU,GeographicProjection:()=>Ui,GeographicTilingScheme:()=>so,Geometry:()=>ht,Geometry3DTileContent:()=>VR,GeometryAttribute:()=>De,GeometryAttributes:()=>yn,GeometryFactory:()=>g$,GeometryInstance:()=>Pt,GeometryInstanceAttribute:()=>Rc,GeometryOffsetAttribute:()=>hn,GeometryPipeline:()=>Vn,GeometryPipelineStage:()=>tN,GeometryType:()=>jf,GeometryUpdater:()=>yi,GeometryUpdaterSet:()=>sI,GeometryVisualizer:()=>yF,GetFeatureInfoFormat:()=>c0,Globe:()=>rQ,GlobeDepth:()=>LQ,GlobeSurfaceShaderSet:()=>q2,GlobeSurfaceTile:()=>Gd,GlobeSurfaceTileProvider:()=>X2,GlobeTranslucency:()=>J2,GlobeTranslucencyFramebuffer:()=>OQ,GlobeTranslucencyState:()=>vQ,GltfBufferViewLoader:()=>Cb,GltfDracoLoader:()=>Eb,GltfGpmLoader:()=>VM,GltfGpmLocal:()=>Ub,GltfImageLoader:()=>Ib,GltfIndexBufferLoader:()=>xb,GltfJsonLoader:()=>Tb,GltfLoader:()=>Xu,GltfLoaderUtil:()=>au,GltfMeshPrimitiveGpmLoader:()=>YM,GltfSpzLoader:()=>dM,GltfStructuralMetadataLoader:()=>FM,GltfTextureLoader:()=>Sb,GltfVertexBufferLoader:()=>wb,GoogleEarthEnterpriseImageryProvider:()=>uee,GoogleEarthEnterpriseMapsProvider:()=>aN,GoogleEarthEnterpriseMetadata:()=>a_,GoogleEarthEnterpriseTerrainData:()=>jw,GoogleEarthEnterpriseTerrainProvider:()=>T$,GoogleEarthEnterpriseTileInformation:()=>m3,GoogleGeocoderService:()=>w$,GoogleMaps:()=>_x,GpxDataSource:()=>UF,GregorianDate:()=>KA,GridImageryProvider:()=>fee,GridMaterialProperty:()=>ZT,GroundGeometryUpdater:()=>ti,GroundPolylineGeometry:()=>dE,GroundPolylinePrimitive:()=>hh,GroundPrimitive:()=>fl,GroupMetadata:()=>FT,HeadingPitchRange:()=>Md,HeadingPitchRoll:()=>rc,Heap:()=>AB,HeightReference:()=>Ze,HeightmapEncoding:()=>Qd,HeightmapTerrainData:()=>Ec,HeightmapTessellator:()=>hw,HermitePolynomialApproximation:()=>MO,HermiteSpline:()=>cy,HilbertOrder:()=>pb,HomeButton:()=>gU,HomeButtonViewModel:()=>pU,HorizontalOrigin:()=>Ri,I3SBuildingSceneLayerExplorer:()=>nte,I3SBuildingSceneLayerExplorerViewModel:()=>_U,I3SDataProvider:()=>Bm,I3SDecoder:()=>P3,I3SFeature:()=>R3,I3SField:()=>M3,I3SGeometry:()=>Jw,I3SLayer:()=>Bx,I3SNode:()=>Zw,I3SStatistics:()=>O3,I3SSublayer:()=>Q3,I3SSymbology:()=>L3,I3dmLoader:()=>o1,I3dmParser:()=>i1,ITwinData:()=>Aee,ITwinPlatform:()=>ra,Iau2000Orientation:()=>aQ,Iau2006XysData:()=>EB,Iau2006XysSample:()=>qC,IauOrientationAxes:()=>cQ,IauOrientationParameters:()=>sQ,ImageBasedLighting:()=>DE,ImageBasedLightingPipelineStage:()=>y1,ImageMaterialProperty:()=>P_,Imagery:()=>fT,ImageryConfiguration:()=>lL,ImageryCoverage:()=>mT,ImageryFlags:()=>pN,ImageryInput:()=>yN,ImageryLayer:()=>rs,ImageryLayerCollection:()=>Q0,ImageryLayerFeatureInfo:()=>Nh,ImageryPipelineStage:()=>CN,ImageryProvider:()=>Dl,ImageryState:()=>qn,Implicit3DTileContent:()=>Rb,ImplicitAvailabilityBitstream:()=>_b,ImplicitMetadataView:()=>yb,ImplicitSubdivisionScheme:()=>Is,ImplicitSubtree:()=>YE,ImplicitSubtreeCache:()=>x3,ImplicitSubtreeMetadata:()=>HR,ImplicitTileCoordinates:()=>F0,ImplicitTileset:()=>O0,IndexDatatype:()=>Oe,InfoBox:()=>CU,InfoBoxViewModel:()=>yU,InspectorShared:()=>Mu,InstanceAttributeSemantic:()=>bs,InstancingPipelineStage:()=>M1,InterpolationAlgorithm:()=>B$,InterpolationType:()=>Dh,Intersect:()=>tn,IntersectionTests:()=>hi,Intersections2D:()=>r_,Interval:()=>sc,InvertClassification:()=>bw,Ion:()=>Eh,IonGeocodeProviderType:()=>c_,IonGeocoderService:()=>yx,IonImageryProvider:()=>Yp,IonResource:()=>Hu,IonWorldImageryStyle:()=>qp,Iso8601:()=>je,JobScheduler:()=>PQ,JobType:()=>hc,JsonMetadataTable:()=>Op,JulianDate:()=>K,KTX2Transcoder:()=>OB,KeyboardEventModifier:()=>Da,KeyframeNode:()=>Do,KmlCamera:()=>GF,KmlDataSource:()=>xI,KmlLookAt:()=>f2,KmlTour:()=>d2,KmlTourFlyTo:()=>m2,KmlTourWait:()=>A2,Label:()=>yy,LabelCollection:()=>rA,LabelGraphics:()=>Ah,LabelStyle:()=>nr,LabelVisualizer:()=>CF,LagrangePolynomialApproximation:()=>NO,LeapSecond:()=>oo,Light:()=>pee,LightingModel:()=>nA,LightingPipelineStage:()=>IN,LinearApproximation:()=>H0,LinearSpline:()=>ay,ManagedArray:()=>El,MapMode2D:()=>wu,MapProjection:()=>P$,MapboxImageryProvider:()=>cN,MapboxStyleImageryProvider:()=>gee,MappedPositions:()=>_N,Material:()=>ro,MaterialAppearance:()=>Eo,MaterialPipelineStage:()=>bN,MaterialProperty:()=>ur,Math:()=>D,Matrix2:()=>Gi,Matrix3:()=>J,Matrix4:()=>N,Megatexture:()=>Rw,MeshPrimitiveGpmLocal:()=>jM,MetadataClass:()=>Th,MetadataClassProperty:()=>Ym,MetadataComponentType:()=>Gt,MetadataEntity:()=>Yn,MetadataEnum:()=>AM,MetadataEnumValue:()=>mM,MetadataPicking:()=>RQ,MetadataPickingPipelineStage:()=>ef,MetadataPipelineStage:()=>ld,MetadataSchema:()=>qu,MetadataSchemaLoader:()=>Db,MetadataSemantic:()=>qE,MetadataTable:()=>od,MetadataTableProperty:()=>jR,MetadataType:()=>pt,MipmapHint:()=>Kf,Model:()=>Fh,Model3DTileContent:()=>tf,ModelAlphaOptions:()=>h0,ModelAnimation:()=>l1,ModelAnimationChannel:()=>c1,ModelAnimationCollection:()=>u1,ModelAnimationLoop:()=>cu,ModelAnimationState:()=>Rh,ModelArticulation:()=>E1,ModelArticulationStage:()=>C1,ModelClippingPlanesPipelineStage:()=>b1,ModelClippingPolygonsPipelineStage:()=>w1,ModelColorPipelineStage:()=>uy,ModelComponents:()=>xn,ModelDrawCommand:()=>tL,ModelDrawCommands:()=>oL,ModelFeature:()=>f1,ModelFeatureTable:()=>h1,ModelGraphics:()=>Ap,ModelImagery:()=>uL,ModelImageryMapping:()=>u0,ModelLightingOptions:()=>JN,ModelMatrixUpdateStage:()=>N1,ModelNode:()=>B1,ModelPrimitiveImagery:()=>f0,ModelReader:()=>gN,ModelRenderResources:()=>HN,ModelRuntimeNode:()=>O1,ModelRuntimePrimitive:()=>UN,ModelSceneGraph:()=>rL,ModelSilhouettePipelineStage:()=>YN,ModelSkin:()=>GN,ModelSplitterPipelineStage:()=>KN,ModelStatistics:()=>sL,ModelType:()=>wr,ModelUtility:()=>Ot,ModelVisualizer:()=>EF,Moon:()=>fQ,MorphTargetsPipelineStage:()=>SN,MorphWeightSpline:()=>R$,MortonOrder:()=>Ty,Multiple3DTileContent:()=>jL,MultisampleFramebuffer:()=>qM,NavigationHelpButton:()=>IU,NavigationHelpButtonViewModel:()=>EU,NearFarScalar:()=>jt,NeverTileDiscardPolicy:()=>yee,NodeRenderResources:()=>XN,NodeStatisticsPipelineStage:()=>L1,NodeTransformationProperty:()=>IE,OIT:()=>FQ,Occluder:()=>dQ,OffsetGeometryInstanceAttribute:()=>uo,OpenCageGeocoderService:()=>N$,OpenStreetMapImageryProvider:()=>u_,OrderedGroundPrimitiveCollection:()=>HO,OrientedBoundingBox:()=>Fn,OrthographicFrustum:()=>An,OrthographicOffCenterFrustum:()=>es,Packable:()=>L$,PackableForInterpolation:()=>O$,Particle:()=>tB,ParticleBurst:()=>Eee,ParticleEmitter:()=>Iee,ParticleSystem:()=>xee,Pass:()=>Be,PassState:()=>Xc,PathGraphics:()=>pp,PathVisualizer:()=>xF,PeliasGeocoderService:()=>p3,PerInstanceColorAppearance:()=>gn,PerformanceDisplay:()=>qg,PerformanceWatchdog:()=>bU,PerformanceWatchdogViewModel:()=>xU,PerspectiveFrustum:()=>ki,PerspectiveOffCenterFrustum:()=>Vl,PickDepth:()=>MQ,PickDepthFramebuffer:()=>kQ,PickFramebuffer:()=>GQ,PickedMetadataInfo:()=>$k,Picking:()=>WQ,PickingPipelineStage:()=>wN,PinBuilder:()=>Og,PixelDatatype:()=>Ve,PixelFormat:()=>$e,Plane:()=>mn,PlaneGeometry:()=>qO,PlaneGeometryUpdater:()=>XO,PlaneGraphics:()=>IR,PlaneOutlineGeometry:()=>KO,PntsLoader:()=>cL,PntsParser:()=>A0,PointCloud:()=>l3,PointCloudEyeDomeLighting:()=>Qp,PointCloudShading:()=>Zm,PointCloudStylingPipelineStage:()=>DN,PointGraphics:()=>bE,PointPrimitive:()=>ea,PointPrimitiveCollection:()=>YT,PointVisualizer:()=>TF,PolygonGeometry:()=>Mp,PolygonGeometryLibrary:()=>$n,PolygonGeometryUpdater:()=>eF,PolygonGraphics:()=>ph,PolygonHierarchy:()=>fc,PolygonOutlineGeometry:()=>$O,PolygonPipeline:()=>Ii,Polyline:()=>md,PolylineArrowMaterialProperty:()=>eS,PolylineCollection:()=>Uh,PolylineColorAppearance:()=>Cs,PolylineDashMaterialProperty:()=>nS,PolylineGeometry:()=>Lg,PolylineGeometryUpdater:()=>BF,PolylineGlowMaterialProperty:()=>oS,PolylineGraphics:()=>Mc,PolylineMaterialAppearance:()=>ka,PolylineOutlineMaterialProperty:()=>My,PolylinePipeline:()=>Wi,PolylineVisualizer:()=>vF,PolylineVolumeGeometry:()=>iF,PolylineVolumeGeometryLibrary:()=>jh,PolylineVolumeGeometryUpdater:()=>aF,PolylineVolumeGraphics:()=>TE,PolylineVolumeOutlineGeometry:()=>sF,PositionProperty:()=>mh,PositionPropertyArray:()=>Tg,PostProcessStage:()=>So,PostProcessStageCollection:()=>hk,PostProcessStageComposite:()=>Du,PostProcessStageLibrary:()=>Df,PostProcessStageSampleMode:()=>Bf,PostProcessStageTextureCache:()=>qI,PpeMetadata:()=>WM,PpeSource:()=>Vee,PpeTexture:()=>HM,Primitive:()=>Qn,PrimitiveCollection:()=>Ql,PrimitiveLoadPlan:()=>i0,PrimitiveOutlineGenerator:()=>n0,PrimitiveOutlinePipelineStage:()=>RN,PrimitivePipeline:()=>lE,PrimitiveRenderResources:()=>ZN,PrimitiveState:()=>zr,PrimitiveStatisticsPipelineStage:()=>MN,PrimitiveType:()=>Me,ProjectionPicker:()=>SU,ProjectionPickerViewModel:()=>TU,Property:()=>j,PropertyArray:()=>sS,PropertyAttribute:()=>t0,PropertyAttributeProperty:()=>MM,PropertyBag:()=>Al,PropertyTable:()=>Sl,PropertyTexture:()=>Fp,PropertyTextureProperty:()=>RM,ProviderViewModel:()=>Ds,Proxy:()=>F$,QuadraticRealPolynomial:()=>cl,QuadtreeOccluders:()=>Z2,QuadtreePrimitive:()=>oQ,QuadtreeTile:()=>$2,QuadtreeTileLoadState:()=>Ta,QuadtreeTileProvider:()=>bee,QuantizedMeshTerrainData:()=>Ax,QuarticRealPolynomial:()=>kB,Quaternion:()=>Le,QuaternionSpline:()=>a1,Queue:()=>ey,Ray:()=>In,Rectangle:()=>ae,RectangleCollisionChecker:()=>cI,RectangleGeometry:()=>eI,RectangleGeometryLibrary:()=>Zs,RectangleGeometryUpdater:()=>cF,RectangleGraphics:()=>gh,RectangleOutlineGeometry:()=>w0,ReferenceFrame:()=>$i,ReferenceProperty:()=>Sg,RenderState:()=>Ue,Renderbuffer:()=>Ju,RenderbufferFormat:()=>Bl,Request:()=>sr,RequestErrorEvent:()=>Rm,RequestScheduler:()=>Bc,RequestState:()=>fi,RequestType:()=>Ms,Resource:()=>we,ResourceCache:()=>Fi,ResourceCacheKey:()=>xl,ResourceCacheStatistics:()=>_M,ResourceLoader:()=>Hi,ResourceLoaderState:()=>dt,Rotation:()=>wd,RuntimeError:()=>ce,S2Cell:()=>Tp,SDFSettings:()=>_a,SampledPositionProperty:()=>qa,SampledProperty:()=>hf,Sampler:()=>on,ScaledPositionProperty:()=>pA,Scene:()=>t3,SceneFramebuffer:()=>GI,SceneMode:()=>ie,SceneMode2DPipelineStage:()=>NN,SceneModePicker:()=>BU,SceneModePickerViewModel:()=>wU,SceneTransforms:()=>eo,SceneTransitioner:()=>pk,ScreenSpaceCameraController:()=>Ck,ScreenSpaceEventHandler:()=>Pf,ScreenSpaceEventType:()=>Dn,SelectedFeatureIdPipelineStage:()=>hy,SelectionIndicator:()=>PU,SelectionIndicatorViewModel:()=>vU,SensorVolumePortionToDisplay:()=>uS,ShaderBuilder:()=>Xp,ShaderCache:()=>E2,ShaderDestination:()=>pe,ShaderFunction:()=>VN,ShaderProgram:()=>an,ShaderSource:()=>He,ShaderStruct:()=>zN,ShadowMap:()=>Jg,ShadowMapShader:()=>OA,ShadowMode:()=>Bn,ShadowVolumeAppearance:()=>Gu,SharedContext:()=>T2,ShowGeometryInstanceAttribute:()=>wn,Simon1994PlanetaryPositions:()=>lC,SimplePolylineGeometry:()=>Q$,SingleTileImageryProvider:()=>lN,SkinningPipelineStage:()=>ON,SkyAtmosphere:()=>n3,SkyBox:()=>i3,SpatialNode:()=>Xk,Spdcf:()=>zM,SpecularEnvironmentCubeMap:()=>Ch,SphereEmitter:()=>See,SphereGeometry:()=>k$,SphereOutlineGeometry:()=>dg,Spherical:()=>LO,Spline:()=>_o,SplitDirection:()=>br,Splitter:()=>Ow,StaticGeometryColorBatch:()=>Pd,StaticGeometryPerMaterialBatch:()=>Rd,StaticGroundGeometryColorBatch:()=>vS,StaticGroundGeometryPerMaterialBatch:()=>_F,StaticGroundPolylinePerMaterialBatch:()=>DF,StaticOutlineGeometryBatch:()=>MS,StencilConstants:()=>Kt,StencilFunction:()=>Zn,StencilOperation:()=>_t,SteppedSpline:()=>s1,Stereographic:()=>Fc,StorageType:()=>iy,StripeMaterialProperty:()=>cS,StripeOrientation:()=>Zh,StructuralMetadata:()=>Aa,StyleCommandsNeeded:()=>Mh,StyleExpression:()=>wee,Sun:()=>s3,SunLight:()=>Hg,SunPostProcess:()=>xk,SupportedImageFormats:()=>QM,SvgPathBindingHandler:()=>q3,TaskProcessor:()=>di,Terrain:()=>z3,TerrainData:()=>Am,TerrainEncoding:()=>Zc,TerrainFillMesh:()=>gw,TerrainMesh:()=>Ud,TerrainOffsetProperty:()=>SE,TerrainProvider:()=>Ss,TerrainQuantization:()=>ba,TerrainState:()=>To,Texture:()=>Mt,Texture3D:()=>$X,TextureAtlas:()=>p0,TextureCache:()=>I2,TextureMagnificationFilter:()=>mi,TextureManager:()=>Wk,TextureMinificationFilter:()=>Zt,TexturePacker:()=>yT,TextureUniform:()=>Gee,TextureWrap:()=>Tn,TileAvailability:()=>xm,TileBoundingRegion:()=>sf,TileBoundingS2Cell:()=>XL,TileBoundingSphere:()=>hg,TileBoundingVolume:()=>Bee,TileCoordinatesImageryProvider:()=>H3,TileDiscardPolicy:()=>vee,TileEdge:()=>Sn,TileImagery:()=>dT,TileMapServiceImageryProvider:()=>Ay,TileMetadata:()=>HL,TileOrientedBoundingBox:()=>gu,TileProviderError:()=>Qo,TileReplacementQueue:()=>eQ,TileSelectionResult:()=>ai,TileState:()=>Pee,Tileset3DTileContent:()=>hL,TilesetMetadata:()=>JL,TilesetPipelineStage:()=>m1,TilingScheme:()=>U$,TimeConstants:()=>ri,TimeDynamicImagery:()=>l0,TimeDynamicPointCloud:()=>Qw,TimeInterval:()=>Pn,TimeIntervalCollection:()=>ls,TimeIntervalCollectionPositionProperty:()=>wg,TimeIntervalCollectionProperty:()=>Bg,TimeStandard:()=>ni,Timeline:()=>NU,TimelineHighlightRange:()=>RU,TimelineTrack:()=>MU,Tipsify:()=>UB,ToggleButtonViewModel:()=>MC,Tonemapper:()=>$g,TrackingReferenceFrame:()=>lp,Transforms:()=>kt,TranslationRotationScale:()=>R_,TranslucentTileClassification:()=>zQ,TridiagonalSystemSolver:()=>qb,TrustedServers:()=>zx,TweenCollection:()=>ZI,UniformState:()=>b2,UniformType:()=>vw,UrlTemplateImageryProvider:()=>Ac,VERSION:()=>FRt,VRButton:()=>FU,VRButtonViewModel:()=>OU,VRTheWorldTerrainProvider:()=>G$,VaryingType:()=>zee,Vector3DTileBatch:()=>Wm,Vector3DTileClampedPolylines:()=>LL,Vector3DTileContent:()=>FL,Vector3DTileGeometry:()=>bp,Vector3DTilePoints:()=>BL,Vector3DTilePolygons:()=>DL,Vector3DTilePolylines:()=>I0,Vector3DTilePrimitive:()=>NE,VelocityOrientationProperty:()=>FO,VelocityVectorProperty:()=>Dg,VertexArray:()=>li,VertexArrayFacade:()=>Zp,VertexAttributeSemantic:()=>at,VertexFormat:()=>Pe,VerticalExaggeration:()=>Ur,VerticalExaggerationPipelineStage:()=>QN,VerticalOrigin:()=>zn,VideoSynchronizer:()=>z$,View:()=>HI,Viewer:()=>lte,ViewportQuad:()=>Ree,Visibility:()=>Mr,Visualizer:()=>kX,VoxelBoxShape:()=>rx,VoxelCell:()=>Sk,VoxelContent:()=>ox,VoxelCylinderShape:()=>sx,VoxelEllipsoidShape:()=>ax,VoxelInspector:()=>kU,VoxelInspectorViewModel:()=>QU,VoxelMetadataOrder:()=>Yd,VoxelPrimitive:()=>IC,VoxelProvider:()=>Nee,VoxelRenderResources:()=>Gk,VoxelShape:()=>Lee,VoxelShapeType:()=>ec,VoxelTraversal:()=>Jk,VulkanConstants:()=>V$,WallGeometry:()=>uF,WallGeometryLibrary:()=>tI,WallGeometryUpdater:()=>hF,WallGraphics:()=>gp,WallOutlineGeometry:()=>dF,WebGLConstants:()=>ee,WebMapServiceImageryProvider:()=>fN,WebMapTileServiceImageryProvider:()=>hN,WebMercatorProjection:()=>zi,WebMercatorTilingScheme:()=>Ts,WindingOrder:()=>Ls,WireframeIndexGenerator:()=>AT,WireframePipelineStage:()=>kN,_shadersAcesTonemappingStage:()=>jQ,_shadersAdditiveBlend:()=>Ek,_shadersAdjustTranslucentFS:()=>cw,_shadersAllMaterialAppearanceFS:()=>DB,_shadersAllMaterialAppearanceVS:()=>vB,_shadersAmbientOcclusionGenerate:()=>YQ,_shadersAmbientOcclusionModulate:()=>qQ,_shadersAspectRampMaterial:()=>YB,_shadersAtmosphereCommon:()=>Bh,_shadersAtmosphereStageFS:()=>A1,_shadersAtmosphereStageVS:()=>p1,_shadersBasicMaterialAppearanceFS:()=>PB,_shadersBasicMaterialAppearanceVS:()=>RB,_shadersBillboardCollectionFS:()=>mL,_shadersBillboardCollectionVS:()=>AL,_shadersBlackAndWhite:()=>KQ,_shadersBloomComposite:()=>XQ,_shadersBrdfLutGeneratorFS:()=>w2,_shadersBrightPass:()=>Ik,_shadersBrightness:()=>JQ,_shadersBumpMapMaterial:()=>qB,_shadersCPUStylingStageFS:()=>G1,_shadersCPUStylingStageVS:()=>U1,_shadersCheckerboardMaterial:()=>KB,_shadersCloudCollectionFS:()=>B2,_shadersCloudCollectionVS:()=>D2,_shadersCloudNoiseFS:()=>v2,_shadersCloudNoiseVS:()=>P2,_shadersCompareAndPackTranslucentDepth:()=>R2,_shadersCompositeOITFS:()=>M2,_shadersCompositeTranslucentClassification:()=>VI,_shadersComputeIrradianceFS:()=>TM,_shadersComputeRadianceMapFS:()=>SM,_shadersContrastBias:()=>ZQ,_shadersConvolveSpecularMapFS:()=>wM,_shadersConvolveSpecularMapVS:()=>BM,_shadersCustomShaderStageFS:()=>H1,_shadersCustomShaderStageVS:()=>V1,_shadersCzmBuiltins:()=>aE,_shadersDepthOfField:()=>$Q,_shadersDepthPlaneFS:()=>N2,_shadersDepthPlaneVS:()=>L2,_shadersDepthView:()=>ek,_shadersDepthViewPacked:()=>Uee,_shadersDotMaterial:()=>XB,_shadersEdgeDetection:()=>tk,_shadersElevationBandMaterial:()=>JB,_shadersElevationContourMaterial:()=>ZB,_shadersElevationRampMaterial:()=>$B,_shadersEllipsoidFS:()=>lw,_shadersEllipsoidSurfaceAppearanceFS:()=>B3,_shadersEllipsoidSurfaceAppearanceVS:()=>D3,_shadersEllipsoidVS:()=>uw,_shadersFXAA:()=>ok,_shadersFXAA3_11:()=>O2,_shadersFadeMaterial:()=>eD,_shadersFeatureIdStageFS:()=>W1,_shadersFeatureIdStageVS:()=>j1,_shadersFilmicTonemapping:()=>nk,_shadersGaussianBlur1D:()=>_C,_shadersGeometryStageFS:()=>Z1,_shadersGeometryStageVS:()=>$1,_shadersGlobeFS:()=>F2,_shadersGlobeVS:()=>Q2,_shadersGridMaterial:()=>tD,_shadersGroundAtmosphere:()=>fw,_shadersHSBToRGB:()=>mv,_shadersHSLToRGB:()=>Av,_shadersImageBasedLightingStageFS:()=>_1,_shadersInstancingStageCommon:()=>D1,_shadersInstancingStageVS:()=>v1,_shadersIntersectBox:()=>Mk,_shadersIntersectClippingPlanes:()=>Rk,_shadersIntersectCylinder:()=>Nk,_shadersIntersectDepth:()=>Pk,_shadersIntersectEllipsoid:()=>Lk,_shadersIntersectLongitude:()=>Dw,_shadersIntersection:()=>tx,_shadersIntersectionUtils:()=>vk,_shadersLegacyInstancingStageVS:()=>P1,_shadersLensFlare:()=>rk,_shadersLightingStageFS:()=>EN,_shadersMaterialStageFS:()=>xN,_shadersMegatexture:()=>Uk,_shadersMetadataStageFS:()=>Y1,_shadersMetadataStageVS:()=>q1,_shadersModelClippingPlanesStageFS:()=>x1,_shadersModelClippingPolygonsStageFS:()=>S1,_shadersModelClippingPolygonsStageVS:()=>T1,_shadersModelColorStageFS:()=>I1,_shadersModelFS:()=>iL,_shadersModelSilhouetteStageFS:()=>WN,_shadersModelSilhouetteStageVS:()=>jN,_shadersModelSplitterStageFS:()=>qN,_shadersModelVS:()=>nL,_shadersModifiedReinhardTonemapping:()=>sk,_shadersMorphTargetsStageVS:()=>TN,_shadersNightVision:()=>ak,_shadersNormalMapMaterial:()=>nD,_shadersOctree:()=>kk,_shadersPassThrough:()=>Bu,_shadersPassThroughDepth:()=>AC,_shadersPbrNeutralTonemapping:()=>ik,_shadersPerInstanceColorAppearanceFS:()=>hD,_shadersPerInstanceColorAppearanceVS:()=>mD,_shadersPerInstanceFlatColorAppearanceFS:()=>rE,_shadersPerInstanceFlatColorAppearanceVS:()=>AD,_shadersPointCloudEyeDomeLighting:()=>XM,_shadersPointCloudStylingStageVS:()=>BN,_shadersPointPrimitiveCollectionFS:()=>Ry,_shadersPointPrimitiveCollectionVS:()=>bO,_shadersPolygonSignedDistanceFS:()=>xM,_shadersPolylineArrowMaterial:()=>iD,_shadersPolylineColorAppearanceVS:()=>lR,_shadersPolylineCommon:()=>zu,_shadersPolylineDashMaterial:()=>oD,_shadersPolylineFS:()=>mE,_shadersPolylineGlowMaterial:()=>rD,_shadersPolylineMaterialAppearanceVS:()=>uR,_shadersPolylineOutlineMaterial:()=>sD,_shadersPolylineShadowVolumeFS:()=>rR,_shadersPolylineShadowVolumeMorphFS:()=>sR,_shadersPolylineShadowVolumeMorphVS:()=>aR,_shadersPolylineShadowVolumeVS:()=>cR,_shadersPolylineVS:()=>IL,_shadersPrimitiveGaussianSplatFS:()=>GL,_shadersPrimitiveGaussianSplatVS:()=>UL,_shadersPrimitiveOutlineStageFS:()=>PN,_shadersPrimitiveOutlineStageVS:()=>vN,_shadersRGBToHSB:()=>pv,_shadersRGBToHSL:()=>gv,_shadersRGBToXYZ:()=>_v,_shadersReinhardTonemapping:()=>ck,_shadersReprojectWebMercatorFS:()=>mN,_shadersReprojectWebMercatorVS:()=>AN,_shadersRimLightingMaterial:()=>aD,_shadersSelectedFeatureIdStageCommon:()=>tT,_shadersShadowVolumeAppearanceFS:()=>rb,_shadersShadowVolumeAppearanceVS:()=>JP,_shadersShadowVolumeFS:()=>B_,_shadersSilhouette:()=>lk,_shadersSkinningStageVS:()=>LN,_shadersSkyAtmosphereCommon:()=>dw,_shadersSkyAtmosphereFS:()=>k2,_shadersSkyAtmosphereVS:()=>U2,_shadersSkyBoxFS:()=>G2,_shadersSkyBoxVS:()=>z2,_shadersSlopeRampMaterial:()=>cD,_shadersStripeMaterial:()=>lD,_shadersSunFS:()=>V2,_shadersSunTextureFS:()=>H2,_shadersSunVS:()=>W2,_shadersTexturedMaterialAppearanceFS:()=>MB,_shadersTexturedMaterialAppearanceVS:()=>NB,_shadersVector3DTileClampedPolylinesFS:()=>ML,_shadersVector3DTileClampedPolylinesVS:()=>RL,_shadersVector3DTilePolylinesVS:()=>vL,_shadersVectorTileVS:()=>Ab,_shadersVerticalExaggerationStageVS:()=>FN,_shadersViewportQuadFS:()=>j2,_shadersViewportQuadVS:()=>wI,_shadersVoxelFS:()=>Bk,_shadersVoxelUtils:()=>wk,_shadersVoxelVS:()=>Dk,_shadersWater:()=>fD,_shadersWaterMaskMaterial:()=>uD,_shadersXYZToRGB:()=>yv,_shadersacesTonemapping:()=>Cv,_shadersalphaWeight:()=>Ev,_shadersantialias:()=>Iv,_shadersapplyHSBShift:()=>xv,_shadersapproximateSphericalCoordinates:()=>bv,_shadersapproximateTanh:()=>Tv,_shadersbackFacing:()=>Sv,_shadersbranchFreeTernary:()=>wv,_shaderscascadeColor:()=>Bv,_shaderscascadeDistance:()=>Dv,_shaderscascadeMatrix:()=>vv,_shaderscascadeWeights:()=>Pv,_shadersclipPolygons:()=>Rv,_shaderscolumbusViewMorph:()=>Mv,_shaderscomputeAtmosphereColor:()=>Nv,_shaderscomputeGroundAtmosphereScattering:()=>Lv,_shaderscomputePosition:()=>Ov,_shaderscomputeScattering:()=>Fv,_shadersconvertUvToBox:()=>Ok,_shadersconvertUvToCylinder:()=>Fk,_shadersconvertUvToEllipsoid:()=>Qk,_shaderscosineAndSine:()=>Qv,_shadersdecompressTextureCoordinates:()=>kv,_shadersdegreesPerRadian:()=>ED,_shadersdepthClamp:()=>Uv,_shadersdepthRange:()=>ID,_shadersdepthRangeStruct:()=>sv,_shaderseastNorthUpToEyeCoordinates:()=>Gv,_shadersellipsoidContainsPoint:()=>zv,_shadersellipsoidTextureCoordinates:()=>Vv,_shadersepsilon1:()=>xD,_shadersepsilon2:()=>bD,_shadersepsilon3:()=>TD,_shadersepsilon4:()=>SD,_shadersepsilon5:()=>wD,_shadersepsilon6:()=>BD,_shadersepsilon7:()=>DD,_shadersequalsEpsilon:()=>Hv,_shaderseyeOffset:()=>Wv,_shaderseyeToWindowCoordinates:()=>jv,_shadersfastApproximateAtan:()=>Yv,_shadersfog:()=>qv,_shadersgammaCorrect:()=>Kv,_shadersgeodeticSurfaceNormal:()=>Xv,_shadersgetDefaultMaterial:()=>Jv,_shadersgetDynamicAtmosphereLightDirection:()=>Zv,_shadersgetLambertDiffuse:()=>$v,_shadersgetSpecular:()=>eP,_shadersgetWaterNoise:()=>tP,_shadershue:()=>nP,_shadersinfinity:()=>vD,_shadersinverseGamma:()=>iP,_shadersisEmpty:()=>oP,_shadersisFull:()=>rP,_shaderslatitudeToWebMercatorFraction:()=>sP,_shaderslineDistance:()=>aP,_shaderslinearToSrgb:()=>cP,_shadersluminance:()=>lP,_shadersmaterial:()=>av,_shadersmaterialInput:()=>cv,_shadersmaximumComponent:()=>uP,_shadersmetersPerPixel:()=>fP,_shadersmodelMaterial:()=>lv,_shadersmodelToWindowCoordinates:()=>dP,_shadersmodelVertexOutput:()=>uv,_shadersmultiplyWithColorBalance:()=>hP,_shadersnearFarScalar:()=>mP,_shadersoctDecode:()=>AP,_shadersoneOverPi:()=>PD,_shadersoneOverTwoPi:()=>RD,_shaderspackDepth:()=>pP,_shaderspassCesium3DTile:()=>MD,_shaderspassCesium3DTileClassification:()=>ND,_shaderspassCesium3DTileClassificationIgnoreShow:()=>LD,_shaderspassClassification:()=>OD,_shaderspassCompute:()=>FD,_shaderspassEnvironment:()=>QD,_shaderspassGaussianSplats:()=>kD,_shaderspassGlobe:()=>UD,_shaderspassOpaque:()=>GD,_shaderspassOverlay:()=>zD,_shaderspassTerrainClassification:()=>VD,_shaderspassTranslucent:()=>HD,_shaderspassVoxels:()=>WD,_shaderspbrLighting:()=>gP,_shaderspbrNeutralTonemapping:()=>_P,_shadersphong:()=>yP,_shaderspi:()=>jD,_shaderspiOverFour:()=>YD,_shaderspiOverSix:()=>qD,_shaderspiOverThree:()=>KD,_shaderspiOverTwo:()=>XD,_shadersplaneDistance:()=>CP,_shaderspointAlongRay:()=>EP,_shadersradiansPerDegree:()=>JD,_shadersray:()=>fv,_shadersrayEllipsoidIntersectionInterval:()=>IP,_shadersraySegment:()=>dv,_shadersraySphereIntersectionInterval:()=>xP,_shadersreadDepth:()=>bP,_shadersreadNonPerspective:()=>TP,_shadersreverseLogDepth:()=>SP,_shadersround:()=>wP,_shaderssaturation:()=>BP,_shaderssceneMode2D:()=>ZD,_shaderssceneMode3D:()=>$D,_shaderssceneModeColumbusView:()=>ev,_shaderssceneModeMorphing:()=>tv,_shadersshadowDepthCompare:()=>DP,_shadersshadowParameters:()=>hv,_shadersshadowVisibility:()=>vP,_shaderssignNotZero:()=>PP,_shaderssolarRadius:()=>nv,_shaderssphericalHarmonics:()=>RP,_shaderssrgbToLinear:()=>MP,_shaderstangentToEyeSpaceMatrix:()=>NP,_shaderstextureCube:()=>LP,_shadersthreePiOver2:()=>iv,_shaderstransformPlane:()=>OP,_shaderstranslateRelativeToEye:()=>FP,_shaderstranslucentPhong:()=>QP,_shaderstranspose:()=>kP,_shaderstwoPi:()=>ov,_shadersunpackClippingExtents:()=>UP,_shadersunpackDepth:()=>GP,_shadersunpackFloat:()=>zP,_shadersunpackUint:()=>VP,_shadersvalueTransform:()=>HP,_shadersvertexLogDepth:()=>WP,_shaderswebMercatorMaxLatitude:()=>rv,_shaderswindowToEyeCoordinates:()=>jP,_shaderswriteDepthClamp:()=>YP,_shaderswriteLogDepth:()=>qP,_shaderswriteNonPerspective:()=>KP,addAllToArray:()=>si,addBuffer:()=>rM,addDefaults:()=>JR,addExtensionsRequired:()=>nM,addExtensionsUsed:()=>rd,addPipelineExtras:()=>W_,addToArray:()=>Ys,appendForwardSlash:()=>dB,arrayRemoveDuplicates:()=>Mo,barycentricCoordinates:()=>JC,binarySearch:()=>Wo,buildModuleUrl:()=>fn,buildVoxelDrawCommands:()=>Vk,clone:()=>ze,combine:()=>Tt,computeFlyToLocationForRectangle:()=>RI,createBillboardPointCallback:()=>_0,createCommand:()=>Rn,createDefaultImageryProviderViewModels:()=>iU,createDefaultTerrainProviderViewModels:()=>oU,createElevationBandMaterial:()=>Oee,createGooglePhotorealistic3DTileset:()=>Fee,createGuid:()=>Xn,createMaterialPropertyDescriptor:()=>jo,createOsmBuildingsAsync:()=>Qee,createPropertyDescriptor:()=>de,createRawPropertyDescriptor:()=>ml,createTangentSpaceDebugPrimitive:()=>kee,createTaskProcessorWorker:()=>Hee,createUniform:()=>yD,createUniformArray:()=>CD,createWorldBathymetryAsync:()=>_3,createWorldImageryAsync:()=>Kp,createWorldTerrainAsync:()=>Ex,decodeGoogleEarthEnterpriseData:()=>y3,decodeVectorPolylinePositions:()=>OL,defaultValue:()=>W$,defer:()=>Xl,defined:()=>l,demodernizeShader:()=>XP,deprecationWarning:()=>Tr,destroyObject:()=>ue,exportKml:()=>HX,findAccessorMinMax:()=>VE,findContentMetadata:()=>T0,findGroupMetadata:()=>S0,findTileMetadata:()=>WL,forEachTextureInMaterial:()=>bb,formatError:()=>eA,freezeRenderState:()=>k6,getAbsoluteUri:()=>vm,getAccessorByteStride:()=>su,getBaseUri:()=>hB,getBinaryAccessor:()=>Wu,getClipAndStyleCode:()=>a3,getClippingFunction:()=>jg,getComponentReader:()=>Pp,getElement:()=>kn,getExtensionFromUri:()=>UC,getFilenameFromUri:()=>xg,getImageFromTypedArray:()=>Hk,getImagePixels:()=>oh,getJsonFromTypedArray:()=>dr,getMagic:()=>Ih,getMetadataClassProperty:()=>Zk,getMetadataProperty:()=>e3,getStringFromTypedArray:()=>iu,getTimestamp:()=>Li,hasExtension:()=>Ei,heightReferenceOnEntityPropertyChanged:()=>_p,isBitSet:()=>il,isBlobUri:()=>GC,isCrossOriginUrl:()=>g_,isDataUri:()=>XA,isLeapYear:()=>ih,knockout:()=>Ie,knockout_3_5_1:()=>vx,knockout_es5:()=>Y3,loadAndExecuteScript:()=>zC,loadCubeMap:()=>S2,loadImageFromTypedArray:()=>UE,loadKTX2:()=>$l,mergeSort:()=>vA,moveTechniqueRenderStates:()=>tM,moveTechniquesToExtension:()=>iM,numberOfComponentsForType:()=>Yu,objectToQuery:()=>VC,oneTimeWarning:()=>yt,parseBatchTable:()=>Gp,parseFeatureMetadataLegacy:()=>OM,parseGlb:()=>$R,parseResponseHeaders:()=>mB,parseStructuralMetadata:()=>LM,pickModel:()=>_T,pointInsideTriangle:()=>j$,preprocess3DTileContent:()=>lg,processVoxelProperties:()=>zk,queryToObject:()=>Fu,readAccessorPacked:()=>sM,removeExtension:()=>HE,removeExtensionsRequired:()=>ZR,removeExtensionsUsed:()=>zE,removePipelineExtras:()=>eM,removeUnusedElements:()=>oM,resizeImageToNextPowerOfTwo:()=>q_,sampleTerrain:()=>Y2,sampleTerrainMostDetailed:()=>PI,scaleToGeodeticSurface:()=>kC,srgbToLinear:()=>Ix,subdivideArray:()=>ZP,subscribeAndEvaluate:()=>tc,updateAccessorComponentTypes:()=>aM,updateVersion:()=>cM,usesExtension:()=>Sr,viewerCesium3DTilesInspectorMixin:()=>ute,viewerCesiumInspectorMixin:()=>fte,viewerDragDropMixin:()=>hte,viewerPerformanceWatchdogMixin:()=>mte,viewerVoxelInspectorMixin:()=>pte,webGLConstantToGlslType:()=>Y$,wrapFunction:()=>C3,writeTextToCanvas:()=>C0});module.exports=nh(QRt);var a9={};a9.EMPTY_OBJECT=Object.freeze({});a9.EMPTY_ARRAY=Object.freeze([]);var V=a9;function rBe(e){return e!=null}var l=rBe;function FC(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(FC.prototype=Object.create(Error.prototype),FC.prototype.constructor=FC);FC.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};FC.throwInstantiationError=function(){throw new FC("This function defines an interface and should not be called directly.")};var me=FC;var js={};js.typeOf={};function sBe(e){return`${e} is required, actual value was undefined`}function Lx(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}js.defined=function(e,t){if(!l(t))throw new me(sBe(e))};js.typeOf.func=function(e,t){if(typeof t!="function")throw new me(Lx(typeof t,"function",e))};js.typeOf.string=function(e,t){if(typeof t!="string")throw new me(Lx(typeof t,"string",e))};js.typeOf.number=function(e,t){if(typeof t!="number")throw new me(Lx(typeof t,"number",e))};js.typeOf.number.lessThan=function(e,t,n){if(js.typeOf.number(e,t),t>=n)throw new me(`Expected ${e} to be less than ${n}, actual value was ${t}`)};js.typeOf.number.lessThanOrEquals=function(e,t,n){if(js.typeOf.number(e,t),t>n)throw new me(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};js.typeOf.number.greaterThan=function(e,t,n){if(js.typeOf.number(e,t),t<=n)throw new me(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};js.typeOf.number.greaterThanOrEquals=function(e,t,n){if(js.typeOf.number(e,t),t<n)throw new me(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};js.typeOf.object=function(e,t){if(typeof t!="object")throw new me(Lx(typeof t,"object",e))};js.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new me(Lx(typeof t,"boolean",e))};js.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new me(Lx(typeof t,"bigint",e))};js.typeOf.number.equals=function(e,t,n,i){if(js.typeOf.number(e,n),js.typeOf.number(t,i),n!==i)throw new me(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var Po=js;function uB(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(uB.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});uB.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};uB.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function aBe(e,t){return t-e}uB.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(aBe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var _e=uB;function m_(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new _e,this.setValue(e)}Object.defineProperties(m_.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});m_.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};m_.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};m_.prototype.equals=function(e){return this===e||e instanceof m_&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};m_.prototype.valueOf=function(){return this._value};m_.prototype.toString=function(){return String(this._value)};var ci=m_;function cBe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function lBe(e){return new ci(e)}function uBe(e,t,n){return cBe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,t??!1,n??lBe)}var de=uBe;function fB(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(fB.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),image:de("image"),scale:de("scale"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),color:de("color"),rotation:de("rotation"),alignedAxis:de("alignedAxis"),sizeInMeters:de("sizeInMeters"),width:de("width"),height:de("height"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),imageSubRegion:de("imageSubRegion"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});fB.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new fB(this)};fB.prototype.merge=function(e){this.show=this._show??e.show,this.image=this._image??e.image,this.scale=this._scale??e.scale,this.pixelOffset=this._pixelOffset??e.pixelOffset,this.eyeOffset=this._eyeOffset??e.eyeOffset,this.horizontalOrigin=this._horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this._verticalOrigin??e.verticalOrigin,this.heightReference=this._heightReference??e.heightReference,this.color=this._color??e.color,this.rotation=this._rotation??e.rotation,this.alignedAxis=this._alignedAxis??e.alignedAxis,this.sizeInMeters=this._sizeInMeters??e.sizeInMeters,this.width=this._width??e.width,this.height=this._height??e.height,this.scaleByDistance=this._scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.imageSubRegion=this._imageSubRegion??e.imageSubRegion,this.distanceDisplayCondition=this._distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this._disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var Tc=fB;function QC(){this._array=[],this._hash={}}Object.defineProperties(QC.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});QC.prototype.contains=function(e){return l(this._hash[e])};QC.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};QC.prototype.get=function(e){return this._hash[e]};QC.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};QC.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var vt=QC;var c9=xr(VU(),1);var ft={};ft.EPSILON1=.1;ft.EPSILON2=.01;ft.EPSILON3=.001;ft.EPSILON4=1e-4;ft.EPSILON5=1e-5;ft.EPSILON6=1e-6;ft.EPSILON7=1e-7;ft.EPSILON8=1e-8;ft.EPSILON9=1e-9;ft.EPSILON10=1e-10;ft.EPSILON11=1e-11;ft.EPSILON12=1e-12;ft.EPSILON13=1e-13;ft.EPSILON14=1e-14;ft.EPSILON15=1e-15;ft.EPSILON16=1e-16;ft.EPSILON17=1e-17;ft.EPSILON18=1e-18;ft.EPSILON19=1e-19;ft.EPSILON20=1e-20;ft.EPSILON21=1e-21;ft.GRAVITATIONALPARAMETER=3986004418e5;ft.SOLAR_RADIUS=6955e5;ft.LUNAR_RADIUS=1737400;ft.SIXTY_FOUR_KILOBYTES=64*1024;ft.FOUR_GIGABYTES=4*1024*1024*1024;ft.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ft.signNotZero=function(e){return e<0?-1:1};ft.toSNorm=function(e,t){return t=t??255,Math.round((ft.clamp(e,-1,1)*.5+.5)*t)};ft.fromSNorm=function(e,t){return t=t??255,ft.clamp(e,0,t)/t*2-1};ft.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ft.clamp((e-t)/n,0,1)};ft.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ft.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ft.lerp=function(e,t,n){return(1-n)*e+n*t};ft.PI=Math.PI;ft.ONE_OVER_PI=1/Math.PI;ft.PI_OVER_TWO=Math.PI/2;ft.PI_OVER_THREE=Math.PI/3;ft.PI_OVER_FOUR=Math.PI/4;ft.PI_OVER_SIX=Math.PI/6;ft.THREE_PI_OVER_TWO=3*Math.PI/2;ft.TWO_PI=2*Math.PI;ft.ONE_OVER_TWO_PI=1/(2*Math.PI);ft.RADIANS_PER_DEGREE=Math.PI/180;ft.DEGREES_PER_RADIAN=180/Math.PI;ft.RADIANS_PER_ARCSECOND=ft.RADIANS_PER_DEGREE/3600;ft.toRadians=function(e){return e*ft.RADIANS_PER_DEGREE};ft.toDegrees=function(e){return e*ft.DEGREES_PER_RADIAN};ft.convertLongitudeRange=function(e){let t=ft.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ft.clampToLatitudeRange=function(e){return ft.clamp(e,-1*ft.PI_OVER_TWO,ft.PI_OVER_TWO)};ft.negativePiToPi=function(e){return e>=-ft.PI&&e<=ft.PI?e:ft.zeroToTwoPi(e+ft.PI)-ft.PI};ft.zeroToTwoPi=function(e){if(e>=0&&e<=ft.TWO_PI)return e;let t=ft.mod(e,ft.TWO_PI);return Math.abs(t)<ft.EPSILON14&&Math.abs(e)>ft.EPSILON14?ft.TWO_PI:t};ft.mod=function(e,t){return ft.sign(e)===ft.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};ft.equalsEpsilon=function(e,t,n,i){n=n??0,i=i??n;let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};ft.lessThan=function(e,t,n){return e-t<-n};ft.lessThanOrEquals=function(e,t,n){return e-t<n};ft.greaterThan=function(e,t,n){return e-t>n};ft.greaterThanOrEquals=function(e,t,n){return e-t>-n};var HU=[1];ft.factorial=function(e){let t=HU.length;if(e>=t){let n=HU[t-1];for(let i=t;i<=e;i++){let o=n*i;HU.push(o),n=o}}return HU[e]};ft.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ft.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ft.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ft.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ft.clamp=function(e,t,n){return e<t?t:e>n?n:e};var xte=new c9.default;ft.setRandomNumberSeed=function(e){xte=new c9.default(e)};ft.nextRandomNumber=function(){return xte.random()};ft.randomBetween=function(e,t){return ft.nextRandomNumber()*(t-e)+e};ft.acosClamped=function(e){return Math.acos(ft.clamp(e,-1,1))};ft.asinClamped=function(e){return Math.asin(ft.clamp(e,-1,1))};ft.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ft.logBase=function(e,t){return Math.log(e)/Math.log(t)};ft.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ft.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ft.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ft.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ft.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ft.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ft.PI_OVER_TWO-i:i,i=e<0?ft.PI-i:i,i=t<0?-i:i,i};var D=ft;function Ht(e,t){this.x=e??0,this.y=t??0}Ht.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Ht(e,t)};Ht.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Ht(e.x,e.y)};Ht.fromCartesian3=Ht.clone;Ht.fromCartesian4=Ht.clone;Ht.packedLength=2;Ht.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Ht.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ht),n.x=e[t++],n.y=e[t],n};Ht.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Ht.pack(e[o],t,o*2);return t};Ht.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Ht.unpack(e,i,t[o])}return t};Ht.fromArray=Ht.unpack;Ht.maximumComponent=function(e){return Math.max(e.x,e.y)};Ht.minimumComponent=function(e){return Math.min(e.x,e.y)};Ht.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Ht.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Ht.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Ht.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Ht.magnitude=function(e){return Math.sqrt(Ht.magnitudeSquared(e))};var WU=new Ht;Ht.distance=function(e,t){return Ht.subtract(e,t,WU),Ht.magnitude(WU)};Ht.distanceSquared=function(e,t){return Ht.subtract(e,t,WU),Ht.magnitudeSquared(WU)};Ht.normalize=function(e,t){let n=Ht.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Ht.dot=function(e,t){return e.x*t.x+e.y*t.y};Ht.cross=function(e,t){return e.x*t.y-e.y*t.x};Ht.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Ht.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Ht.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Ht.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Ht.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Ht.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Ht.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Ht.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var bte=new Ht;Ht.lerp=function(e,t,n,i){return Ht.multiplyByScalar(t,n,bte),i=Ht.multiplyByScalar(e,1-n,i),Ht.add(bte,i,i)};var Tte=new Ht,Ste=new Ht;Ht.angleBetween=function(e,t){return Ht.normalize(e,Tte),Ht.normalize(t,Ste),D.acosClamped(Ht.dot(Tte,Ste))};var fBe=new Ht;Ht.mostOrthogonalAxis=function(e,t){let n=Ht.normalize(e,fBe);return Ht.abs(n,n),n.x<=n.y?t=Ht.clone(Ht.UNIT_X,t):t=Ht.clone(Ht.UNIT_Y,t),t};Ht.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Ht.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Ht.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)};Ht.ZERO=Object.freeze(new Ht(0,0));Ht.ONE=Object.freeze(new Ht(1,1));Ht.UNIT_X=Object.freeze(new Ht(1,0));Ht.UNIT_Y=Object.freeze(new Ht(0,1));Ht.prototype.clone=function(e){return Ht.clone(this,e)};Ht.prototype.equals=function(e){return Ht.equals(this,e)};Ht.prototype.equalsEpsilon=function(e,t,n){return Ht.equalsEpsilon(this,e,t,n)};Ht.prototype.toString=function(){return`(${this.x}, ${this.y})`};var U=Ht;function ot(e,t,n){this.x=e??0,this.y=t??0,this.z=n??0}ot.fromSpherical=function(e,t){l(t)||(t=new ot);let n=e.clock,i=e.cone,o=e.magnitude??1,r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};ot.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new ot(e,t,n)};ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new ot(e.x,e.y,e.z)};ot.fromCartesian4=ot.clone;ot.packedLength=3;ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ot),n.x=e[t++],n.y=e[t++],n.z=e[t],n};ot.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)ot.pack(e[o],t,o*3);return t};ot.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=ot.unpack(e,i,t[o])}return t};ot.fromArray=ot.unpack;ot.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};ot.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};ot.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};ot.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};ot.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};ot.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};ot.magnitude=function(e){return Math.sqrt(ot.magnitudeSquared(e))};var YU=new ot;ot.distance=function(e,t){return ot.subtract(e,t,YU),ot.magnitude(YU)};ot.distanceSquared=function(e,t){return ot.subtract(e,t,YU),ot.magnitudeSquared(YU)};ot.normalize=function(e,t){let n=ot.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};ot.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};ot.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};ot.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};ot.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};ot.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};ot.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};ot.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};ot.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};ot.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var wte=new ot;ot.lerp=function(e,t,n,i){return ot.multiplyByScalar(t,n,wte),i=ot.multiplyByScalar(e,1-n,i),ot.add(wte,i,i)};var jU=new ot,l9=new ot;ot.angleBetween=function(e,t){ot.normalize(e,jU),ot.normalize(t,l9);let n=ot.dot(jU,l9),i=ot.magnitude(ot.cross(jU,l9,jU));return Math.atan2(i,n)};var dBe=new ot;ot.mostOrthogonalAxis=function(e,t){let n=ot.normalize(e,dBe);return ot.abs(n,n),n.x<=n.y?n.x<=n.z?t=ot.clone(ot.UNIT_X,t):t=ot.clone(ot.UNIT_Z,t):n.y<=n.z?t=ot.clone(ot.UNIT_Y,t):t=ot.clone(ot.UNIT_Z,t),t};ot.projectVector=function(e,t,n){let i=ot.dot(e,t)/ot.dot(t,t);return ot.multiplyByScalar(t,i,n)};ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};ot.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};ot.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)};ot.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};ot.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};ot.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e),t=D.toRadians(t),ot.fromRadians(e,t,n,i,o)};var zf=new ot,Ox=new ot;ot._ellipsoidRadiiSquared=new ot(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);ot.fromRadians=function(e,t,n,i,o){n=n??0;let r=l(i)?i.radiiSquared:ot._ellipsoidRadiiSquared,s=Math.cos(t);zf.x=s*Math.cos(e),zf.y=s*Math.sin(e),zf.z=Math.sin(t),zf=ot.normalize(zf,zf),ot.multiplyComponents(r,zf,Ox);let a=Math.sqrt(ot.dot(zf,Ox));return Ox=ot.divideByScalar(Ox,a,Ox),zf=ot.multiplyByScalar(zf,n,zf),l(o)||(o=new ot),ot.add(Ox,zf,o)};ot.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromDegrees(r,s,0,t,n[a])}return n};ot.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromRadians(r,s,0,t,n[a])}return n};ot.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromDegrees(r,s,a,t,n[c])}return n};ot.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromRadians(r,s,a,t,n[c])}return n};ot.ZERO=Object.freeze(new ot(0,0,0));ot.ONE=Object.freeze(new ot(1,1,1));ot.UNIT_X=Object.freeze(new ot(1,0,0));ot.UNIT_Y=Object.freeze(new ot(0,1,0));ot.UNIT_Z=Object.freeze(new ot(0,0,1));ot.prototype.clone=function(e){return ot.clone(this,e)};ot.prototype.equals=function(e){return ot.equals(this,e)};ot.prototype.equalsEpsilon=function(e,t,n){return ot.equalsEpsilon(this,e,t,n)};ot.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=ot;var hBe=new d,mBe=new d;function ABe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,A=s*s*u*u,g=a*a*f*f,m=h+A+g,_=Math.sqrt(1/m),y=d.multiplyByScalar(e,_,hBe);if(m<i)return isFinite(_)?d.clone(y,o):void 0;let C=n.x,E=n.y,I=n.z,b=mBe;b.x=y.x*C*2,b.y=y.y*E*2,b.z=y.z*I*2;let S=(1-_)*d.magnitude(e)/(.5*d.magnitude(b)),B=0,v,P,M,L,p,x,T,w,R,O,k;do{S-=B,M=1/(1+S*C),L=1/(1+S*E),p=1/(1+S*I),x=M*M,T=L*L,w=p*p,R=x*M,O=T*L,k=w*p,v=h*x+A*T+g*w-1,P=h*R*C+A*O*E+g*k*I;let Q=-2*P;B=v/Q}while(Math.abs(v)>D.EPSILON12);return l(o)?(o.x=r*M,o.y=s*L,o.z=a*p,o):new d(r*M,s*L,a*p)}var kC=ABe;function Zo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}Zo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Zo(e,t,n)};Zo.fromDegrees=function(e,t,n,i){return e=D.toRadians(e),t=D.toRadians(t),Zo.fromRadians(e,t,n,i)};var pBe=new d,gBe=new d,_Be=new d;Zo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Zo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Zo._ellipsoidCenterToleranceSquared=D.EPSILON1;Zo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Zo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Zo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Zo._ellipsoidCenterToleranceSquared,s=kC(e,i,o,r,gBe);if(!l(s))return;let a=d.multiplyComponents(s,o,pBe);a=d.normalize(a,a);let c=d.subtract(e,s,_Be),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=D.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Zo(u,f,h)};Zo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Zo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Zo(e.longitude,e.latitude,e.height)};Zo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Zo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Zo.ZERO=Object.freeze(new Zo(0,0,0));Zo.prototype.clone=function(e){return Zo.clone(this,e)};Zo.prototype.equals=function(e){return Zo.equals(this,e)};Zo.prototype.equalsEpsilon=function(e,t){return Zo.equalsEpsilon(this,e,t)};Zo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var Ae=Zo;function Dte(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=D.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Pi(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Dte(this,e,t,n)}Object.defineProperties(Pi.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Pi.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Pi(n.x,n.y,n.z)};Pi.fromCartesian3=function(e,t){return l(t)||(t=new Pi),l(e)&&Dte(t,e.x,e.y,e.z),t};Pi.WGS84=Object.freeze(new Pi(6378137,6378137,6356752314245179e-9));Pi.UNIT_SPHERE=Object.freeze(new Pi(1,1,1));Pi.MOON=Object.freeze(new Pi(D.LUNAR_RADIUS,D.LUNAR_RADIUS,D.LUNAR_RADIUS));Pi._default=Pi.WGS84;Object.defineProperties(Pi,{default:{get:function(){return Pi._default},set:function(e){Pi._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,Ae._ellipsoidOneOverRadii=e.oneOverRadii,Ae._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,Ae._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Pi.prototype.clone=function(e){return Pi.clone(this,e)};Pi.packedLength=d.packedLength;Pi.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),t};Pi.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t);return Pi.fromCartesian3(i,n)};Pi.prototype.geocentricSurfaceNormal=d.normalize;Pi.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};Pi.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,D.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var yBe=new d,CBe=new d;Pi.prototype.cartographicToCartesian=function(e,t){let n=yBe,i=CBe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};Pi.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var EBe=new d,IBe=new d,xBe=new d;Pi.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,IBe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,EBe),o=d.subtract(e,n,xBe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=D.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new Ae(r,s,a)};Pi.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};Pi.prototype.scaleToGeodeticSurface=function(e,t){return kC(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};Pi.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};Pi.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};Pi.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};Pi.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};Pi.prototype.toString=function(){return this._radii.toString()};Pi.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=t??0;let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var bBe=new d;Pi.prototype.getLocalCurvature=function(e,t){l(t)||(t=new U);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,bBe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return U.fromElements(1/i,1/r,t)};var TBe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],SBe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function Bte(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*TBe[s];r+=SBe[s]*(n(i+a)+n(i-a))}return r*=o,r}Pi.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=D.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return Bte(i,o,function(f){let h=Math.cos(f),A=Math.sin(f);return Math.cos(f)*Bte(t,n,function(g){let m=Math.cos(g),_=Math.sin(g);return Math.sqrt(u*A*A+c*(a*m*m+s*_*_)*h*h)})})};var te=Pi;function qU(e){this._ellipsoid=e??te.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(qU.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});qU.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};qU.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Ui=qU;var wBe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},tn=Object.freeze(wBe);function bt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z),a=D.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var KU=new bt;bt.distance=function(e,t){return bt.subtract(e,t,KU),bt.magnitude(KU)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,KU),bt.magnitudeSquared(KU)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var vte=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,vte),i=bt.multiplyByScalar(e,1-n,i),bt.add(vte,i,i)};var BBe=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,BBe);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)&&D.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var u9=new Float32Array(1),Sc=new Uint8Array(u9.buffer),DBe=new Uint32Array([287454020]),vBe=new Uint8Array(DBe.buffer),Pte=vBe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),u9[0]=e,Pte?(t.x=Sc[0],t.y=Sc[1],t.z=Sc[2],t.w=Sc[3]):(t.x=Sc[3],t.y=Sc[2],t.z=Sc[1],t.w=Sc[0]),t};bt.unpackFloat=function(e){return Pte?(Sc[0]=e.x,Sc[1]=e.y,Sc[2]=e.z,Sc[3]=e.w):(Sc[0]=e.w,Sc[1]=e.z,Sc[2]=e.y,Sc[3]=e.x),u9[0]};var se=bt;function PBe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var Wo=PBe;function RBe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var A_=RBe;function MBe(e){return e%4===0&&e%100!==0||e%400===0}var ih=MBe;var Rte=[31,28,31,30,31,30,31,31,30,31,30,31];function NBe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function _(){Po.typeOf.number.greaterThanOrEquals("Year",e,1),Po.typeOf.number.lessThanOrEquals("Year",e,9999),Po.typeOf.number.greaterThanOrEquals("Month",t,1),Po.typeOf.number.lessThanOrEquals("Month",t,12),Po.typeOf.number.greaterThanOrEquals("Day",n,1),Po.typeOf.number.lessThanOrEquals("Day",n,31),Po.typeOf.number.greaterThanOrEquals("Hour",i,0),Po.typeOf.number.lessThanOrEquals("Hour",i,23),Po.typeOf.number.greaterThanOrEquals("Minute",o,0),Po.typeOf.number.lessThanOrEquals("Minute",o,59),Po.typeOf.bool("IsLeapSecond",a),Po.typeOf.number.greaterThanOrEquals("Second",r,0),Po.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Po.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Po.typeOf.number.lessThan("Millisecond",s,1e3)}function y(){let C=t===2&&ih(e)?Rte[t-1]+1:Rte[t-1];if(n>C)throw new me("Month and Day represents invalid date")}}var KA=NBe;function LBe(e,t){this.julianDate=e,this.offset=t}var oo=LBe;var OBe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ri=Object.freeze(OBe);var FBe={UTC:0,TAI:1},ni=Object.freeze(FBe);var Nte=new KA,f9=[31,28,31,30,31,30,31,31,30,31,30,31],d9=29;function h9(e,t){return Qt.compare(e.julianDate,t.julianDate)}var Fx=new oo;function JU(e){Fx.julianDate=e;let t=Qt.leapSeconds,n=Wo(t,Fx,h9);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Qt.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Qt.addSeconds(e,i,e)}function Mte(e,t){Fx.julianDate=e;let n=Qt.leapSeconds,i=Wo(n,Fx,h9);if(i<0&&(i=~i),i===0)return Qt.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Qt.addSeconds(e,-n[i-1].offset,t);let o=Qt.secondsDifference(n[i].julianDate,e);if(o===0)return Qt.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Qt.addSeconds(e,-n[--i].offset,t)}function p_(e,t,n){let i=t/ri.SECONDS_PER_DAY|0;return e+=i,t-=ri.SECONDS_PER_DAY*i,t<0&&(e--,t+=ri.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m9(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*ri.SECONDS_PER_HOUR+o*ri.SECONDS_PER_MINUTE+s*ri.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var QBe=/^(\d{4})$/,kBe=/^(\d{4})-(\d{2})$/,UBe=/^(\d{4})-?(\d{3})$/,GBe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,zBe=/^(\d{4})-?(\d{2})-?(\d{2})$/,A9=/([Z+\-])?(\d{2})?:?(\d{2})?$/,VBe=/^(\d{2})(\.\d+)?/.source+A9.source,HBe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+A9.source,WBe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+A9.source;function Qt(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??ni.UTC;let i=e|0;t=t+(e-i)*ri.SECONDS_PER_DAY,p_(i,t,this),n===ni.UTC&&JU(this)}Qt.fromGregorianDate=function(e,t){let n=m9(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(p_(n[0],n[1],t),JU(t),t):new Qt(n[0],n[1],ni.UTC)};Qt.fromDate=function(e,t){let n=m9(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(p_(n[0],n[1],t),JU(t),t):new Qt(n[0],n[1],ni.UTC)};Qt.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],A,g;if(n=f.match(zBe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(kBe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(QBe),n!==null)i=+n[1];else{let C;if(n=f.match(UBe),n!==null)i=+n[1],C=+n[2],g=ih(i);else if(n=f.match(GBe),n!==null){i=+n[1];let E=+n[2],I=+n[3]||0,b=new Date(Date.UTC(i,0,4));C=E*7+I-b.getUTCDay()-3}A=new Date(Date.UTC(i,0,1)),A.setUTCDate(C),o=A.getUTCMonth()+1,r=A.getUTCDate()}g=ih(i);let m;if(l(h)){n=h.match(WBe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(HBe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(VBe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let C=n[m],E=+n[m+1],I=+(n[m+2]||0);switch(C){case"+":s=s-E,a=a-I;break;case"-":s=s+E,a=a+I;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let _=c===60;for(_&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(A=g&&o===2?d9:f9[o-1];r>A;)r-=A,o++,o>12&&(o-=12,i++),A=g&&o===2?d9:f9[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),A=g&&o===2?d9:f9[o-1],r+=A;let y=m9(i,o,r,s,a,c,u);return l(t)?(p_(y[0],y[1],t),JU(t)):t=new Qt(y[0],y[1],ni.UTC),_&&Qt.addSeconds(t,1,t),t};Qt.now=function(e){return Qt.fromDate(new Date,e)};var XU=new Qt(0,0,ni.TAI);Qt.toGregorianDate=function(e,t){let n=!1,i=Mte(e,XU);l(i)||(Qt.addSeconds(e,-1,XU),i=Mte(XU,XU),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,A=100*(a-49)+c+s|0,g=r/ri.SECONDS_PER_HOUR|0,m=r-g*ri.SECONDS_PER_HOUR,_=m/ri.SECONDS_PER_MINUTE|0;m=m-_*ri.SECONDS_PER_MINUTE;let y=m|0,C=(m-y)/ri.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(y+=1),l(t)?(t.year=A,t.month=h,t.day=f,t.hour=g,t.minute=_,t.second=y,t.millisecond=C,t.isLeapSecond=n,t):new KA(A,h,f,g,_,y,C,n)};Qt.toDate=function(e){let t=Qt.toGregorianDate(e,Nte),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Qt.toIso8601=function(e,t){let n=Qt.toGregorianDate(e,Nte),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Qt.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Qt(e.dayNumber,e.secondsOfDay,ni.TAI)};Qt.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Qt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Qt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Qt.secondsDifference(e,t))<=n};Qt.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ri.SECONDS_PER_DAY};Qt.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ri.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Qt.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ri.SECONDS_PER_DAY;return n+i};Qt.computeTaiMinusUtc=function(e){Fx.julianDate=e;let t=Qt.leapSeconds,n=Wo(t,Fx,h9);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Qt.addSeconds=function(e,t,n){return p_(e.dayNumber,e.secondsOfDay+t,n)};Qt.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_MINUTE;return p_(e.dayNumber,i,n)};Qt.addHours=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_HOUR;return p_(e.dayNumber,i,n)};Qt.addDays=function(e,t,n){let i=e.dayNumber+t;return p_(i,e.secondsOfDay,n)};Qt.lessThan=function(e,t){return Qt.compare(e,t)<0};Qt.lessThanOrEquals=function(e,t){return Qt.compare(e,t)<=0};Qt.greaterThan=function(e,t){return Qt.compare(e,t)>0};Qt.greaterThanOrEquals=function(e,t){return Qt.compare(e,t)>=0};Qt.prototype.clone=function(e){return Qt.clone(this,e)};Qt.prototype.equals=function(e){return Qt.equals(this,e)};Qt.prototype.equalsEpsilon=function(e,t){return Qt.equalsEpsilon(this,e,t)};Qt.prototype.toString=function(){return Qt.toIso8601(this)};Qt.leapSeconds=[new oo(new Qt(2441317,43210,ni.TAI),10),new oo(new Qt(2441499,43211,ni.TAI),11),new oo(new Qt(2441683,43212,ni.TAI),12),new oo(new Qt(2442048,43213,ni.TAI),13),new oo(new Qt(2442413,43214,ni.TAI),14),new oo(new Qt(2442778,43215,ni.TAI),15),new oo(new Qt(2443144,43216,ni.TAI),16),new oo(new Qt(2443509,43217,ni.TAI),17),new oo(new Qt(2443874,43218,ni.TAI),18),new oo(new Qt(2444239,43219,ni.TAI),19),new oo(new Qt(2444786,43220,ni.TAI),20),new oo(new Qt(2445151,43221,ni.TAI),21),new oo(new Qt(2445516,43222,ni.TAI),22),new oo(new Qt(2446247,43223,ni.TAI),23),new oo(new Qt(2447161,43224,ni.TAI),24),new oo(new Qt(2447892,43225,ni.TAI),25),new oo(new Qt(2448257,43226,ni.TAI),26),new oo(new Qt(2448804,43227,ni.TAI),27),new oo(new Qt(2449169,43228,ni.TAI),28),new oo(new Qt(2449534,43229,ni.TAI),29),new oo(new Qt(2450083,43230,ni.TAI),30),new oo(new Qt(2450630,43231,ni.TAI),31),new oo(new Qt(2451179,43232,ni.TAI),32),new oo(new Qt(2453736,43233,ni.TAI),33),new oo(new Qt(2454832,43234,ni.TAI),34),new oo(new Qt(2456109,43235,ni.TAI),35),new oo(new Qt(2457204,43236,ni.TAI),36),new oo(new Qt(2457754,43237,ni.TAI),37)];var K=Qt;var $te=xr(Ou(),1);function jBe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var dB=jBe;function Gte(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=Gte(o,t)),n[i]=o}return n}var ze=Gte;function zte(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=zte(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var Tt=zte;function YBe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var Xl=YBe;var Vte=xr(Ou(),1);function p9(e,t){let n;return typeof document<"u"&&(n=document),p9._implementation(e,t,n)}p9._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new Vte.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var vm=p9;var Hte=xr(Ou(),1);function qBe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new Hte.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var hB=qBe;var Wte=xr(Ou(),1);function KBe(e){let t=new Wte.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var UC=KBe;var jte={};function XBe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=jte[t];l(i)||(i={},jte[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var oh=XBe;var JBe=/^blob:/i;function ZBe(e){return JBe.test(e)}var GC=ZBe;var Pm;function $Be(e){l(Pm)||(Pm=document.createElement("a")),Pm.href=window.location.href;let t=Pm.host,n=Pm.protocol;return Pm.href=e,Pm.href=Pm.href,n!==Pm.protocol||t!==Pm.host}var g_=$Be;var eDe=/^data:/i;function tDe(e){return eDe.test(e)}var XA=tDe;function nDe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var zC=nDe;function iDe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var VC=iDe;function oDe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Fu=oDe;var rDe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},fi=Object.freeze(rDe);var sDe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Ms=Object.freeze(sDe);function tG(e){e=e??V.EMPTY_OBJECT;let t=e.throttleByServer??!1,n=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=n,this.throttleByServer=t,this.type=e.type??Ms.OTHER,this.serverKey=e.serverKey,this.state=fi.UNISSUED,this.deferred=void 0,this.cancelled=!1}tG.prototype.cancel=function(){this.cancelled=!0};tG.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=fi.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new tG(this)};var sr=tG;function aDe(e){let t={};if(!e)return t;let n=e.split(`\r +`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var mB=aDe;function Yte(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=mB(this.responseHeaders))}Yte.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var Rm=Yte;var nG=xr(Ou(),1);function HC(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(HC.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function g9(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}HC.prototype.reserve=function(e){e=e??this._length,this._array.length=e};HC.prototype.heapify=function(e){e=e??0;let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(g9(i,o,e),e=o):r=!1}};HC.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};HC.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)g9(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};HC.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return g9(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var AB=HC;function cDe(e,t){return e.priority-t.priority}var Ao={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},Ux=20,wc=new AB({comparator:cDe});wc.maximumLength=Ux;wc.reserve(Ux);var Mm=[],JA={},lDe=typeof document<"u"?new nG.default(document.location.href):new nG.default,iG=new _e;function ar(){}ar.maximumRequests=50;ar.maximumRequestsPerServer=18;ar.requestsByServer={};ar.throttleRequests=!0;ar.debugShowStatistics=!1;ar.requestCompletedEvent=iG;Object.defineProperties(ar,{statistics:{get:function(){return Ao}},priorityHeapLength:{get:function(){return Ux},set:function(e){if(e<Ux)for(;wc.length>e;){let t=wc.pop();WC(t)}Ux=e,wc.maximumLength=e,wc.reserve(e)}}});function qte(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}ar.serverHasOpenSlots=function(e,t){t=t??1;let n=ar.requestsByServer[e]??ar.maximumRequestsPerServer;return JA[e]+t<=n};ar.heapHasOpenSlots=function(e){return wc.length+e<=Ux};function Kte(e){return e.state===fi.UNISSUED&&(e.state=fi.ISSUED,e.deferred=Xl()),e.deferred.promise}function uDe(e){return function(t){if(e.state===fi.CANCELLED)return;let n=e.deferred;--Ao.numberOfActiveRequests,--JA[e.serverKey],iG.raiseEvent(),e.state=fi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function fDe(e){return function(t){e.state!==fi.CANCELLED&&(++Ao.numberOfFailedRequests,--Ao.numberOfActiveRequests,--JA[e.serverKey],iG.raiseEvent(t),e.state=fi.FAILED,e.deferred.reject(t))}}function Xte(e){let t=Kte(e);return e.state=fi.ACTIVE,Mm.push(e),++Ao.numberOfActiveRequests,++Ao.numberOfActiveRequestsEver,++JA[e.serverKey],e.requestFunction().then(uDe(e)).catch(fDe(e)),t}function WC(e){let t=e.state===fi.ACTIVE;if(e.state=fi.CANCELLED,++Ao.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--Ao.numberOfActiveRequests,--JA[e.serverKey],++Ao.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}ar.update=function(){let e,t,n=0,i=Mm.length;for(e=0;e<i;++e){if(t=Mm[e],t.cancelled&&WC(t),t.state!==fi.ACTIVE){++n;continue}n>0&&(Mm[e-n]=t)}Mm.length-=n;let o=wc.internalArray,r=wc.length;for(e=0;e<r;++e)qte(o[e]);wc.resort();let s=Math.max(ar.maximumRequests-Mm.length,0),a=0;for(;a<s&&wc.length>0;){if(t=wc.pop(),t.cancelled){WC(t);continue}if(t.throttleByServer&&!ar.serverHasOpenSlots(t.serverKey)){WC(t);continue}Xte(t),++a}dDe()};ar.getServerKey=function(e){let t=new nG.default(e);t.scheme()===""&&(t=t.absoluteTo(lDe),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=JA[n];return l(i)||(JA[n]=0),n};ar.request=function(e){if(XA(e.url)||GC(e.url))return iG.raiseEvent(),e.state=fi.RECEIVED,e.requestFunction();if(++Ao.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=ar.getServerKey(e.url)),ar.throttleRequests&&e.throttleByServer&&!ar.serverHasOpenSlots(e.serverKey))return;if(!ar.throttleRequests||!e.throttle)return Xte(e);if(Mm.length>=ar.maximumRequests)return;qte(e);let t=wc.insert(e);if(l(t)){if(t===e)return;WC(t)}return Kte(e)};function dDe(){ar.debugShowStatistics&&(Ao.numberOfActiveRequests===0&&Ao.lastNumberOfActiveRequests>0&&(Ao.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${Ao.numberOfAttemptedRequests}`),Ao.numberOfAttemptedRequests=0),Ao.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${Ao.numberOfCancelledRequests}`),Ao.numberOfCancelledRequests=0),Ao.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${Ao.numberOfCancelledActiveRequests}`),Ao.numberOfCancelledActiveRequests=0),Ao.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${Ao.numberOfFailedRequests}`),Ao.numberOfFailedRequests=0)),Ao.lastNumberOfActiveRequests=Ao.numberOfActiveRequests)}ar.clearForSpecs=function(){for(;wc.length>0;){let t=wc.pop();WC(t)}let e=Mm.length;for(let t=0;t<e;++t)WC(Mm[t]);Mm.length=0,JA={},Ao.numberOfAttemptedRequests=0,Ao.numberOfActiveRequests=0,Ao.numberOfCancelledRequests=0,Ao.numberOfCancelledActiveRequests=0,Ao.numberOfFailedRequests=0,Ao.numberOfActiveRequestsEver=0,Ao.lastNumberOfActiveRequests=0};ar.numberOfActiveRequestsByServer=function(e){return JA[e]};ar.requestHeap=wc;var Bc=ar;function pB(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(pB.prototype=Object.create(Error.prototype),pB.prototype.constructor=pB);pB.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};var ce=pB;var Jte=xr(Ou(),1);var gB={},Gx={};gB.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(Gx[n])||(Gx[n]=!0)};gB.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(Gx[n])&&delete Gx[n]};function hDe(e){let t=new Jte.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}gB.contains=function(e){let t=hDe(e);return!!(l(t)&&l(Gx[t]))};gB.clear=function(){Gx={}};var zx=gB;var ene=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function Nt(e){e=e??V.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Nm(e.templateValues,{}),this._queryParameters=Nm(e.queryParameters,{}),this.headers=Nm(e.headers,{}),this.request=e.request??new sr,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Nm(e,t){return l(e)?ze(e):t}Nt.createIfNeeded=function(e){return e instanceof Nt?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new Nt({url:e})};var Vx;Nt.supportsImageBitmapOptions=function(){return l(Vx)?Vx:typeof createImageBitmap!="function"?(Vx=Promise.resolve(!1),Vx):(Vx=Nt.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=oh(t[0]),i=oh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),Vx)};Object.defineProperties(Nt,{isBlobSupported:{get:function(){return ene}}});Object.defineProperties(Nt.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return UC(this._url)}},isDataUri:{get:function(){return XA(this._url)}},isBlobUri:{get:function(){return GC(this._url)}},isCrossOriginUrl:{get:function(){return g_(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});Nt.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Nt.prototype.parseUrl=function(e,t,n,i){let o=new $te.default(e),r=mDe(o.query());this._queryParameters=t?rG(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(vm(i))),this._url=o.toString()};function mDe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Fu(e)}function rG(e,t,n){if(!n)return Tt(e,t);let i=ze(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Nt.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${ADe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function ADe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${VC(e)}`}Nt.prototype.setQueryParameters=function(e,t){t?this._queryParameters=rG(this._queryParameters,e,!1):this._queryParameters=rG(e,this._queryParameters,!1)};Nt.prototype.appendQueryParameters=function(e){this._queryParameters=rG(e,this._queryParameters,!0)};Nt.prototype.setTemplateValues=function(e,t){t?this._templateValues=Tt(this._templateValues,e):this._templateValues=Tt(e,this._templateValues)};Nt.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=Tt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=Tt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=Tt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Nt.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Nt.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ze(this._queryParameters),e._templateValues=ze(this._templateValues),e.headers=ze(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Nt({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Nt.prototype.getBaseUri=function(e){return hB(this.getUrlComponent(e),e)};Nt.prototype.appendForwardSlash=function(){this._url=dB(this._url)};Nt.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Nt.fetchArrayBuffer=function(e){return new Nt(e).fetchArrayBuffer()};Nt.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Nt.fetchBlob=function(e){return new Nt(e).fetchBlob()};Nt.prototype.fetchImage=function(e){e=e??V.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(y9(this.request),!ene||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return _9({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return Nt.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return Nt.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new Nt({url:h}),_9({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function _9(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=Xl();return Nt._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Bc.request(r);if(l(s))return s.catch(function(a){return r.state!==fi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=fi.UNISSUED,r.deferred=void 0,_9({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Nt.fetchImage=function(e){return new Nt(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Nt.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Nt.fetchText=function(e){return new Nt(e).fetchText()};Nt.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Nt.fetchJson=function(e){return new Nt(e).fetchJson()};Nt.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Nt.fetchXML=function(e){return new Nt(e).fetchXML()};Nt.prototype.fetchJsonp=function(e){e=e??"callback",y9(this.request);let t;do t=`loadJsonp${D.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return tne(this,e,t)};function tne(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=Xl();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Nt._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Bc.request(o);if(l(s))return s.catch(function(a){return o.state!==fi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=fi.UNISSUED,o.deferred=void 0,tne(e,t,n)):Promise.reject(a)})})}Nt.fetchJsonp=function(e){return new Nt(e).fetchJsonp(e.callbackParameterName)};Nt.prototype._makeRequest=function(e){let t=this;y9(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=Tt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=Xl(),h=Nt._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Bc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==fi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=fi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function y9(e){if(e.state===fi.ISSUED||e.state===fi.ACTIVE)throw new ce("The Resource is already being fetched.");e.state=fi.UNISSUED,e.deferred=void 0}var pDe=/^data:(.*?)(;base64)?,(.*)$/;function oG(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function Zte(e,t){let n=oG(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function gDe(e,t){t=t??"";let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return oG(i,o);case"arraybuffer":return Zte(i,o);case"blob":return r=Zte(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(oG(i,o),n);case"json":return JSON.parse(oG(i,o));default:}}Nt.prototype.fetch=function(e){return e=Nm(e,{}),e.method="GET",this._makeRequest(e)};Nt.fetch=function(e){return new Nt(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.delete=function(e){return e=Nm(e,{}),e.method="DELETE",this._makeRequest(e)};Nt.delete=function(e){return new Nt(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};Nt.prototype.head=function(e){return e=Nm(e,{}),e.method="HEAD",this._makeRequest(e)};Nt.head=function(e){return new Nt(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.options=function(e){return e=Nm(e,{}),e.method="OPTIONS",this._makeRequest(e)};Nt.options=function(e){return new Nt(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.post=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};Nt.post=function(e){return new Nt(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.put=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};Nt.put=function(e){return new Nt(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.patch=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};Nt.patch=function(e){return new Nt(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt._Implementations={};Nt._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(zx.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};Nt._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;Nt.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){Nt._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=Xl(),h=Nt._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(A){if(!l(A)){n.reject(new ce(`Successfully retrieved ${s} but it contained no content.`));return}return Nt.createImageBitmapFromBlob(A,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(A){n.resolve(A)})}).catch(function(a){n.reject(a)})};Nt.createImageBitmapFromBlob=function(e,t){return Po.defined("options",t),Po.typeOf.bool("options.flipY",t.flipY),Po.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),Po.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"from-image",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function _De(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new Rm(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new Rm)})}var yDe=typeof XMLHttpRequest>"u";Nt._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=pDe.exec(e);if(a!==null){r.resolve(gDe(a,t));return}if(yDe){_De(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(zx.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new Rm(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(_){let y=_.split(": "),C=y.shift();m[C]=y.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(A){r.reject(A)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new ce("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new Rm)},c.send(i),c};Nt._Implementations.loadAndExecuteScript=function(e,t,n){return zC(e,t).catch(function(i){n.reject(i)})};Nt._DefaultImplementations={};Nt._DefaultImplementations.createImage=Nt._Implementations.createImage;Nt._DefaultImplementations.loadWithXhr=Nt._Implementations.loadWithXhr;Nt._DefaultImplementations.loadAndExecuteScript=Nt._Implementations.loadAndExecuteScript;Nt.DEFAULT=Object.freeze(new Nt({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var we=Nt;function yB(e){e=e??V.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?nne(this,e.data):nne(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}yB.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new ce(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new yB({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};yB.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new A_(0,0,0,0,0),t}});yB.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new A_(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=K.lessThanOrEquals(a,e),f=!l(c),h=f||K.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,one(this,n,this._samples,e,o,r,t),t}let s=Wo(n,e,K.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,one(this,n,this._samples,e,o,r,t),t};function CDe(e,t){return K.compare(e.julianDate,t)}function nne(e,t){if(!l(t.columnNames))throw new ce("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new ce("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new ce("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,A=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let _=u[g+n],y=u[g+c],C=_+ri.MODIFIED_JULIAN_DATE_DIFFERENCE,E=new K(C,y,ni.TAI);if(f.push(E),A){if(y!==h&&l(h)){let I=K.leapSeconds,b=Wo(I,E,CDe);if(b<0){let S=new oo(E,y);I.splice(~b,0,S)}}h=y}}}function ine(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function _B(e,t,n){return t+e*(n-t)}function one(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return ine(e,n,o,a,s),s;if(i.equals(u))return ine(e,n,r,a,s),s;let f=K.secondsDifference(i,c)/K.secondsDifference(u,c),h=o*a,A=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[A+e._ut1MinusUtcSecondsColumn],_=m-g;if(_>.5||_<-.5){let y=n[h+e._taiMinusUtcSecondsColumn],C=n[A+e._taiMinusUtcSecondsColumn];y!==C&&(u.equals(i)?g=m:m-=C-y)}return s.xPoleWander=_B(f,n[h+e._xPoleWanderRadiansColumn],n[A+e._xPoleWanderRadiansColumn]),s.yPoleWander=_B(f,n[h+e._yPoleWanderRadiansColumn],n[A+e._yPoleWanderRadiansColumn]),s.xPoleOffset=_B(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[A+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=_B(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[A+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=_B(f,g,m),s}var CB=yB;function Dc(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Dc.fromQuaternion=function(e,t){l(t)||(t=new Dc);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-D.asinClamped(n),t};Dc.fromDegrees=function(e,t,n,i){return l(i)||(i=new Dc),i.heading=e*D.RADIANS_PER_DEGREE,i.pitch=t*D.RADIANS_PER_DEGREE,i.roll=n*D.RADIANS_PER_DEGREE,i};Dc.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Dc(e.heading,e.pitch,e.roll)};Dc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Dc.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.heading,t.heading,n,i)&&D.equalsEpsilon(e.pitch,t.pitch,n,i)&&D.equalsEpsilon(e.roll,t.roll,n,i)};Dc.prototype.clone=function(e){return Dc.clone(this,e)};Dc.prototype.equals=function(e){return Dc.equals(this,e)};Dc.prototype.equalsEpsilon=function(e,t,n){return Dc.equalsEpsilon(this,e,t,n)};Dc.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var rc=Dc;var rne={},sne=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function EDe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=sne.exec(i);if(o!==null)return o[1]}}var sG;function ane(e){return typeof document>"u"?e:(l(sG)||(sG=document.createElement("a")),sG.href=e,sG.href)}var jC;function cne(){if(l(jC))return jC;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(rne?.url)?e=vm(".",rne.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(require.toUrl)?e=vm("..",YC("Core/buildModuleUrl.js")):e=EDe(),jC=new we({url:ane(e)}),jC.appendForwardSlash(),jC}function IDe(e){return ane(require.toUrl(`../${e}`))}function lne(e){return cne().getDerivedResource({url:e}).url}var aG;function YC(e){return l(aG)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(require.toUrl)?aG=IDe:aG=lne),aG(e)}YC._cesiumScriptRegex=sne;YC._buildModuleUrlFromBaseUrl=lne;YC._clearBaseResource=function(){jC=void 0};YC.setBaseUrl=function(e){jC=we.DEFAULT.getDerivedResource({url:e})};YC.getCesiumBaseUrl=cne;var fn=YC;function xDe(e,t,n){this.x=e,this.y=t,this.s=n}var qC=xDe;function I9(e){e=e??V.EMPTY_OBJECT,this._xysFileUrlTemplate=we.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new K(this._sampleZeroJulianEphemerisDate,0,ni.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var bDe=new K(0,0,ni.TAI);function C9(e,t,n){let i=bDe;return i.dayNumber=t,i.secondsOfDay=n,K.daysDifference(i,e._sampleZeroDateTT)}I9.prototype.preload=function(e,t,n,i){let o=C9(this,e,t),r=C9(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(E9(this,h));return Promise.all(f)};I9.prototype.computeXysRadians=function(e,t,n){let i=C9(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(E9(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(E9(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new qC(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,A=this._denominators,g=this._coef,m=this._xTable,_,y;for(_=0;_<=r;++_)h[_]=f-m[_];for(_=0;_<=r;++_){for(g[_]=1,y=0;y<=r;++y)y!==_&&(g[_]*=h[y]);g[_]*=A[_];let C=(s+_)*3;n.x+=g[_]*u[C++],n.y+=g[_]*u[C++],n.s+=g[_]*u[C]}return n};function E9(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new we({url:fn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var EB=I9;function st(e,t,n,i,o,r,s,a,c){this[0]=e??0,this[1]=i??0,this[2]=s??0,this[3]=t??0,this[4]=o??0,this[5]=a??0,this[6]=n??0,this[7]=r??0,this[8]=c??0}st.packedLength=9;st.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};st.unpack=function(e,t,n){return t=t??0,l(n)||(n=new st),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};st.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)st.pack(e[o],t,o*9);return t};st.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=st.unpack(e,i,t[o])}return t};st.clone=function(e,t){if(l(e))return l(t)?(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):new st(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};st.fromArray=st.unpack;st.fromColumnMajorArray=function(e,t){return st.clone(e,t)};st.fromRowMajorArray=function(e,t){return l(t)?(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],t):new st(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};st.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,A=n-s-u+h,g=2*(i-f),m=2*(o+c),_=2*(i+f),y=-n+s-u+h,C=2*(a-r),E=2*(o-c),I=2*(a+r),b=-n-s+u+h;return l(t)?(t[0]=A,t[1]=_,t[2]=E,t[3]=g,t[4]=y,t[5]=I,t[6]=m,t[7]=C,t[8]=b,t):new st(A,g,m,_,y,C,E,I,b)};st.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,A=o*i+a*r*s,g=-a*i+o*r*s,m=-r,_=a*n,y=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=A,t[5]=_,t[6]=f,t[7]=g,t[8]=y,t):new st(c,u,f,h,A,g,m,_,y)};st.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new st(e.x,0,0,0,e.y,0,0,0,e.z)};st.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new st(e,0,0,0,e,0,0,0,e)};st.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new st(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};st.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new st(1,0,0,0,n,-i,0,i,n)};st.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new st(n,0,i,0,1,0,-i,0,n)};st.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new st(n,-i,0,i,n,0,0,0,1)};st.toArray=function(e,t){return l(t)?(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):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};st.getElementIndex=function(e,t){return e*3+t};st.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};st.setColumn=function(e,t,n,i){i=st.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};st.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};st.setRow=function(e,t,n,i){return i=st.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var TDe=new d;st.setScale=function(e,t,n){let i=st.getScale(e,TDe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var SDe=new d;st.setUniformScale=function(e,t,n){let i=st.getScale(e,SDe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var x9=new d;st.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],x9)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],x9)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],x9)),t};var une=new d;st.getMaximumScale=function(e){return st.getScale(e,une),d.maximumComponent(une)};var wDe=new d;st.setRotation=function(e,t,n){let i=st.getScale(e,wDe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var BDe=new d;st.getRotation=function(e,t){let n=st.getScale(e,BDe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};st.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};st.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};st.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};st.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};st.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};st.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.negate=function(e,t){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};st.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function DDe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var b9=[1,0,0],T9=[2,2,1];function vDe(e){let t=0;for(let n=0;n<3;++n){let i=e[st.getElementIndex(T9[n],b9[n])];t+=2*i*i}return Math.sqrt(t)}function PDe(e,t){let n=D.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[st.getElementIndex(T9[u],b9[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=b9[o],c=T9[o];if(Math.abs(e[st.getElementIndex(c,a)])>n){let u=e[st.getElementIndex(c,c)],f=e[st.getElementIndex(a,a)],h=e[st.getElementIndex(c,a)],A=(u-f)/2/h,g;A<0?g=-1/(-A+Math.sqrt(1+A*A)):g=1/(A+Math.sqrt(1+A*A)),r=1/Math.sqrt(1+g*g),s=g*r}return t=st.clone(st.IDENTITY,t),t[st.getElementIndex(a,a)]=t[st.getElementIndex(c,c)]=r,t[st.getElementIndex(c,a)]=s,t[st.getElementIndex(a,c)]=-s,t}var cG=new st,fne=new st;st.computeEigenDecomposition=function(e,t){let n=D.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=st.clone(st.IDENTITY,t.unitary),a=t.diagonal=st.clone(e,t.diagonal),c=n*DDe(a);for(;r<i&&vDe(a)>c;)PDe(a,cG),st.transpose(cG,fne),st.multiply(a,cG,a),st.multiply(fne,a,a),st.multiply(s,cG,s),++o>2&&(++r,o=0);return t};st.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};st.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};st.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=st.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let A=1/h;return st.multiplyByScalar(t,A,t)};var RDe=new st;st.inverseTranspose=function(e,t){return st.inverse(st.transpose(e,RDe),t)};st.equals=function(e,t){return e===t||l(e)&&l(t)&&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]};st.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};st.IDENTITY=Object.freeze(new st(1,0,0,0,1,0,0,0,1));st.ZERO=Object.freeze(new st(0,0,0,0,0,0,0,0,0));st.COLUMN0ROW0=0;st.COLUMN0ROW1=1;st.COLUMN0ROW2=2;st.COLUMN1ROW0=3;st.COLUMN1ROW1=4;st.COLUMN1ROW2=5;st.COLUMN2ROW0=6;st.COLUMN2ROW1=7;st.COLUMN2ROW2=8;Object.defineProperties(st.prototype,{length:{get:function(){return st.packedLength}}});st.prototype.clone=function(e){return st.clone(this,e)};st.prototype.equals=function(e){return st.equals(this,e)};st.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};st.prototype.equalsEpsilon=function(e,t){return st.equalsEpsilon(this,e,t)};st.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var J=st;function rt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=A??0,this[4]=t??0,this[5]=r??0,this[6]=u??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=f??0,this[11]=m??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=_??0}rt.packedLength=16;rt.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};rt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new rt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};rt.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)rt.pack(e[o],t,o*16);return t};rt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=rt.unpack(e,i,t[o])}return t};rt.clone=function(e,t){if(l(e))return l(t)?(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):new rt(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};rt.fromArray=rt.unpack;rt.fromColumnMajorArray=function(e,t){return rt.clone(e,t)};rt.fromRowMajorArray=function(e,t){return l(t)?(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],t):new rt(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};rt.fromRotationTranslation=function(e,t,n){return t=t??d.ZERO,l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new rt(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};rt.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new rt);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,A=t.y*t.z,g=t.y*t.w,m=t.z*t.z,_=t.z*t.w,y=t.w*t.w,C=a-h-m+y,E=2*(c-_),I=2*(u+g),b=2*(c+_),S=-a+h-m+y,B=2*(A-f),v=2*(u-g),P=2*(A+f),M=-a-h+m+y;return i[0]=C*o,i[1]=b*o,i[2]=v*o,i[3]=0,i[4]=E*r,i[5]=S*r,i[6]=P*r,i[7]=0,i[8]=I*s,i[9]=B*s,i[10]=M*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};rt.fromTranslationRotationScale=function(e,t){return rt.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};rt.fromTranslation=function(e,t){return rt.fromRotationTranslation(J.IDENTITY,e,t)};rt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};rt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};rt.fromRotation=function(e,t){return l(t)||(t=new rt),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var Hx=new d,Wx=new d,IB=new d;rt.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,Hx),d.normalize(d.cross(Hx,o,Wx),Wx),d.normalize(d.cross(Wx,Hx,IB),IB);let r=Wx.x,s=Wx.y,a=Wx.z,c=Hx.x,u=Hx.y,f=Hx.z,h=IB.x,A=IB.y,g=IB.z,m=n.x,_=n.y,y=n.z,C=r*-m+s*-_+a*-y,E=h*-m+A*-_+g*-y,I=c*m+u*_+f*y;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=A,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=C,t[13]=E,t[14]=I,t[15]=1,t):new rt(r,s,a,C,h,A,g,E,-c,-u,-f,I,0,0,0,1)};rt.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};rt.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,A=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=A,s[15]=1,s};rt.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),A=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=A,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};rt.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,A=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=A,r[15]=0,r};rt.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new rt),e=e??V.EMPTY_OBJECT;let o=e.x??0,r=e.y??0,s=e.width??0,a=e.height??0;t=t??0,n=n??1;let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,A=u,g=f,m=o+c,_=r+u,y=t+f,C=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=A,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=_,i[14]=y,i[15]=C,i};rt.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};rt.toArray=function(e,t){return l(t)?(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):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};rt.getElementIndex=function(e,t){return e*4+t};rt.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};rt.setColumn=function(e,t,n,i){i=rt.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};rt.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};rt.setRow=function(e,t,n,i){return i=rt.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};rt.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var MDe=new d;rt.setScale=function(e,t,n){let i=rt.getScale(e,MDe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var NDe=new d;rt.setUniformScale=function(e,t,n){let i=rt.getScale(e,NDe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var S9=new d;rt.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],S9)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],S9)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],S9)),t};var dne=new d;rt.getMaximumScale=function(e){return rt.getScale(e,dne),d.maximumComponent(dne)};var LDe=new d;rt.setRotation=function(e,t,n){let i=rt.getScale(e,LDe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var ODe=new d;rt.getRotation=function(e,t){let n=rt.getScale(e,ODe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};rt.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],A=e[9],g=e[10],m=e[11],_=e[12],y=e[13],C=e[14],E=e[15],I=t[0],b=t[1],S=t[2],B=t[3],v=t[4],P=t[5],M=t[6],L=t[7],p=t[8],x=t[9],T=t[10],w=t[11],R=t[12],O=t[13],k=t[14],Q=t[15],z=i*I+a*b+h*S+_*B,F=o*I+c*b+A*S+y*B,H=r*I+u*b+g*S+C*B,W=s*I+f*b+m*S+E*B,Z=i*v+a*P+h*M+_*L,Y=o*v+c*P+A*M+y*L,$=r*v+u*P+g*M+C*L,X=s*v+f*P+m*M+E*L,he=i*p+a*x+h*T+_*w,ge=o*p+c*x+A*T+y*w,fe=r*p+u*x+g*T+C*w,ye=s*p+f*x+m*T+E*w,xe=i*R+a*O+h*k+_*Q,ve=o*R+c*O+A*k+y*Q,Te=r*R+u*O+g*k+C*Q,ke=s*R+f*O+m*k+E*Q;return n[0]=z,n[1]=F,n[2]=H,n[3]=W,n[4]=Z,n[5]=Y,n[6]=$,n[7]=X,n[8]=he,n[9]=ge,n[10]=fe,n[11]=ye,n[12]=xe,n[13]=ve,n[14]=Te,n[15]=ke,n};rt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};rt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};rt.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=e[12],g=e[13],m=e[14],_=t[0],y=t[1],C=t[2],E=t[4],I=t[5],b=t[6],S=t[8],B=t[9],v=t[10],P=t[12],M=t[13],L=t[14],p=i*_+s*y+u*C,x=o*_+a*y+f*C,T=r*_+c*y+h*C,w=i*E+s*I+u*b,R=o*E+a*I+f*b,O=r*E+c*I+h*b,k=i*S+s*B+u*v,Q=o*S+a*B+f*v,z=r*S+c*B+h*v,F=i*P+s*M+u*L+A,H=o*P+a*M+f*L+g,W=r*P+c*M+h*L+m;return n[0]=p,n[1]=x,n[2]=T,n[3]=0,n[4]=w,n[5]=R,n[6]=O,n[7]=0,n[8]=k,n[9]=Q,n[10]=z,n[11]=0,n[12]=F,n[13]=H,n[14]=W,n[15]=1,n};rt.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=t[0],g=t[1],m=t[2],_=t[3],y=t[4],C=t[5],E=t[6],I=t[7],b=t[8],S=i*A+s*g+u*m,B=o*A+a*g+f*m,v=r*A+c*g+h*m,P=i*_+s*y+u*C,M=o*_+a*y+f*C,L=r*_+c*y+h*C,p=i*E+s*I+u*b,x=o*E+a*I+f*b,T=r*E+c*I+h*b;return n[0]=S,n[1]=B,n[2]=v,n[3]=0,n[4]=P,n[5]=M,n[6]=L,n[7]=0,n[8]=p,n[9]=x,n[10]=T,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};rt.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?rt.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};rt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};rt.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};rt.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};rt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};rt.negate=function(e,t){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};rt.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};rt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};rt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};rt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};rt.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};rt.getMatrix3=function(e,t){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};var FDe=new J,QDe=new J,kDe=new se,UDe=new se(0,0,0,1);rt.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],A=e[10],g=e[14],m=e[3],_=e[7],y=e[11],C=e[15],E=A*C,I=g*y,b=h*C,S=g*_,B=h*y,v=A*_,P=f*C,M=g*m,L=f*y,p=A*m,x=f*_,T=h*m,w=E*a+S*c+B*u-(I*a+b*c+v*u),R=I*s+P*c+p*u-(E*s+M*c+L*u),O=b*s+M*a+x*u-(S*s+P*a+T*u),k=v*s+L*a+T*c-(B*s+p*a+x*c),Q=I*i+b*o+v*r-(E*i+S*o+B*r),z=E*n+M*o+L*r-(I*n+P*o+p*r),F=S*n+P*i+T*r-(b*n+M*i+x*r),H=B*n+p*i+x*o-(v*n+L*i+T*o);E=o*u,I=r*c,b=i*u,S=r*a,B=i*c,v=o*a,P=n*u,M=r*s,L=n*c,p=o*s,x=n*a,T=i*s;let W=E*_+S*y+B*C-(I*_+b*y+v*C),Z=I*m+P*y+p*C-(E*m+M*y+L*C),Y=b*m+M*_+x*C-(S*m+P*_+T*C),$=v*m+L*_+T*y-(B*m+p*_+x*y),X=b*A+v*g+I*h-(B*g+E*h+S*A),he=L*g+E*f+M*A-(P*A+p*g+I*f),ge=P*h+T*g+S*f-(x*g+b*f+M*h),fe=x*A+B*f+p*h-(L*h+T*A+v*f),ye=n*w+i*R+o*O+r*k;if(Math.abs(ye)<D.EPSILON21){if(J.equalsEpsilon(rt.getMatrix3(e,FDe),QDe,D.EPSILON7)&&se.equals(rt.getRow(e,3,kDe),UDe))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new ce("matrix is not invertible because its determinate is zero.")}return ye=1/ye,t[0]=w*ye,t[1]=R*ye,t[2]=O*ye,t[3]=k*ye,t[4]=Q*ye,t[5]=z*ye,t[6]=F*ye,t[7]=H*ye,t[8]=W*ye,t[9]=Z*ye,t[10]=Y*ye,t[11]=$*ye,t[12]=X*ye,t[13]=he*ye,t[14]=ge*ye,t[15]=fe*ye,t};rt.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],A=e[13],g=e[14],m=-n*h-i*A-o*g,_=-r*h-s*A-a*g,y=-c*h-u*A-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=_,t[14]=y,t[15]=1,t};var GDe=new rt;rt.inverseTranspose=function(e,t){return rt.inverse(rt.transpose(e,GDe),t)};rt.IDENTITY=Object.freeze(new rt(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));rt.ZERO=Object.freeze(new rt(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));rt.COLUMN0ROW0=0;rt.COLUMN0ROW1=1;rt.COLUMN0ROW2=2;rt.COLUMN0ROW3=3;rt.COLUMN1ROW0=4;rt.COLUMN1ROW1=5;rt.COLUMN1ROW2=6;rt.COLUMN1ROW3=7;rt.COLUMN2ROW0=8;rt.COLUMN2ROW1=9;rt.COLUMN2ROW2=10;rt.COLUMN2ROW3=11;rt.COLUMN3ROW0=12;rt.COLUMN3ROW1=13;rt.COLUMN3ROW2=14;rt.COLUMN3ROW3=15;Object.defineProperties(rt.prototype,{length:{get:function(){return rt.packedLength}}});rt.prototype.clone=function(e){return rt.clone(this,e)};rt.prototype.equals=function(e){return rt.equals(this,e)};rt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};rt.prototype.equalsEpsilon=function(e,t){return rt.equalsEpsilon(this,e,t)};rt.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var N=rt;var __,Jr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},Jl={};Object.defineProperties(Jl,{element:{get:function(){if(Jl.supportsFullscreen())return document[Jr.fullscreenElement]}},changeEventName:{get:function(){if(Jl.supportsFullscreen())return Jr.fullscreenchange}},errorEventName:{get:function(){if(Jl.supportsFullscreen())return Jr.fullscreenerror}},enabled:{get:function(){if(Jl.supportsFullscreen())return document[Jr.fullscreenEnabled]}},fullscreen:{get:function(){if(Jl.supportsFullscreen())return Jl.element!==null}}});Jl.supportsFullscreen=function(){if(l(__))return __;__=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Jr.requestFullscreen="requestFullscreen",Jr.exitFullscreen="exitFullscreen",Jr.fullscreenEnabled="fullscreenEnabled",Jr.fullscreenElement="fullscreenElement",Jr.fullscreenchange="fullscreenchange",Jr.fullscreenerror="fullscreenerror",__=!0,__;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Jr.requestFullscreen=n,__=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Jr.requestFullscreen=n,__=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Jr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Jr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Jr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Jr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Jr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Jr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Jr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Jr.fullscreenerror=n)}return __};Jl.requestFullscreen=function(e,t){Jl.supportsFullscreen()&&e[Jr.requestFullscreen]({vrDisplay:t})};Jl.exitFullscreen=function(){Jl.supportsFullscreen()&&document[Jr.exitFullscreen]()};Jl._names=Jr;var Fr=Jl;var vc;typeof navigator<"u"?vc=navigator:vc={};function KC(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var lG,hne;function R9(){if(!l(lG)&&(lG=!1,!AG())){let e=/ Chrome\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(lG=!0,hne=KC(e[1]))}return lG}function zDe(){return R9()&&hne}var uG,mne;function Ane(){if(!l(uG)&&(uG=!1,!R9()&&!AG()&&/ Safari\/[\.0-9]+/.test(vc.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(uG=!0,mne=KC(e[1]))}return uG}function VDe(){return Ane()&&mne}var fG,v9;function pne(){if(!l(fG)){fG=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(vc.userAgent);e!==null&&(fG=!0,v9=KC(e[1]),v9.isNightly=!!e[2])}return fG}function HDe(){return pne()&&v9}var xB,P9;function gne(){if(!l(xB)){xB=!1;let e;vc.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(vc.userAgent),e!==null&&(xB=!0,P9=KC(e[1]))):vc.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(vc.userAgent),e!==null&&(xB=!0,P9=KC(e[1])))}return xB}function WDe(){return gne()&&P9}var dG,_ne;function AG(){if(!l(dG)){dG=!1;let e=/ Edg\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(dG=!0,_ne=KC(e[1]))}return dG}function jDe(){return AG()&&_ne}var hG,M9;function pG(){if(!l(hG)){hG=!1;let e=/Firefox\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(hG=!0,M9=KC(e[1]))}return hG}var w9;function YDe(){return l(w9)||(w9=/Windows/i.test(vc.appVersion)),w9}var B9;function qDe(){return l(B9)||(B9=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),B9}function KDe(){return pG()&&M9}var D9;function XDe(){return l(D9)||(D9=!pG()&&typeof PointerEvent<"u"&&(!l(vc.pointerEnabled)||vc.pointerEnabled)),D9}var yne,mG;function Cne(){if(!l(mG)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;mG=l(t)&&t!=="",mG&&(yne=t)}return mG}function JDe(){return Cne()?yne:void 0}function al(){return al._result}al._promise=void 0;al._result=void 0;al.initialize=function(){return l(al._promise)||(al._promise=new Promise(e=>{let t=new Image;t.onload=function(){al._result=t.width>0&&t.height>0,e(al._result)},t.onerror=function(){al._result=!1,e(al._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),al._promise};Object.defineProperties(al,{initialized:{get:function(){return l(al._result)}}});var jx=[];typeof ArrayBuffer<"u"&&(jx.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&jx.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&jx.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&jx.push(BigInt64Array),typeof BigUint64Array<"u"&&jx.push(BigUint64Array));var Vf={isChrome:R9,chromeVersion:zDe,isSafari:Ane,safariVersion:VDe,isWebkit:pne,webkitVersion:HDe,isInternetExplorer:gne,internetExplorerVersion:WDe,isEdge:AG,edgeVersion:jDe,isFirefox:pG,firefoxVersion:KDe,isWindows:YDe,isIPadOrIOS:qDe,hardwareConcurrency:vc.hardwareConcurrency??3,supportsPointerEvents:XDe,supportsImageRenderingPixelated:Cne,supportsWebP:al,imageRenderingValue:JDe,typedArrayTypes:jx};Vf.supportsBasis=function(e){return Vf.supportsWebAssembly()&&e.context.supportsBasis};Vf.supportsFullscreen=function(){return Fr.supportsFullscreen()};Vf.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};Vf.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};Vf.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};Vf.supportsBigInt=function(){return typeof BigInt<"u"};Vf.supportsWebWorkers=function(){return typeof Worker<"u"};Vf.supportsWebAssembly=function(){return typeof WebAssembly<"u"};Vf.supportsWebgl2=function(e){return e.context.webgl2};Vf.supportsEsmWebWorkers=function(){return!pG()||parseInt(M9)>=114};var Wt=Vf;function ct(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var bB=new d;ct.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);bB=d.normalize(e,bB);let r=bB.x*o,s=bB.y*o,a=bB.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new ct(r,s,a,c)};var ZDe=[1,2,0],$De=new Array(3);ct.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[J.COLUMN0ROW0],c=e[J.COLUMN1ROW1],u=e[J.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[J.COLUMN1ROW2]-e[J.COLUMN2ROW1])*n,o=(e[J.COLUMN2ROW0]-e[J.COLUMN0ROW2])*n,r=(e[J.COLUMN0ROW1]-e[J.COLUMN1ROW0])*n;else{let h=ZDe,A=0;c>a&&(A=1),u>a&&u>c&&(A=2);let g=h[A],m=h[g];n=Math.sqrt(e[J.getElementIndex(A,A)]-e[J.getElementIndex(g,g)]-e[J.getElementIndex(m,m)]+1);let _=$De;_[A]=.5*n,n=.5/n,s=(e[J.getElementIndex(m,g)]-e[J.getElementIndex(g,m)])*n,_[g]=(e[J.getElementIndex(g,A)]+e[J.getElementIndex(A,g)])*n,_[m]=(e[J.getElementIndex(m,A)]+e[J.getElementIndex(A,m)])*n,i=-_[0],o=-_[1],r=-_[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new ct(i,o,r,s)};var Ene=new ct,Ine=new ct,N9=new ct,xne=new ct;ct.fromHeadingPitchRoll=function(e,t){return xne=ct.fromAxisAngle(d.UNIT_X,e.roll,Ene),N9=ct.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=ct.multiply(N9,xne,N9),Ine=ct.fromAxisAngle(d.UNIT_Z,-e.heading,Ene),ct.multiply(Ine,t,t)};var gG=new d,L9=new d,rh=new ct,bne=new ct,_G=new ct;ct.packedLength=4;ct.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};ct.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ct),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};ct.packedInterpolationLength=3;ct.convertPackedArrayForInterpolation=function(e,t,n,i){ct.unpack(e,n*4,_G),ct.conjugate(_G,_G);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;ct.unpack(e,(t+o)*4,rh),ct.multiply(rh,_G,rh),rh.w<0&&ct.negate(rh,rh),ct.computeAxis(rh,gG);let a=ct.computeAngle(rh);l(i)||(i=[]),i[s]=gG.x*a,i[s+1]=gG.y*a,i[s+2]=gG.z*a}};ct.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new ct),d.fromArray(e,0,L9);let r=d.magnitude(L9);return ct.unpack(t,i*4,bne),r===0?ct.clone(ct.IDENTITY,rh):ct.fromAxisAngle(L9,r,rh),ct.multiply(rh,bne,o)};ct.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new ct(e.x,e.y,e.z,e.w)};ct.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};ct.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};ct.magnitude=function(e){return Math.sqrt(ct.magnitudeSquared(e))};ct.normalize=function(e,t){let n=1/ct.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};ct.inverse=function(e,t){let n=ct.magnitudeSquared(e);return t=ct.conjugate(e,t),ct.multiplyByScalar(t,1/n,t)};ct.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};ct.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};ct.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};ct.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};ct.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,A=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=A,n.z=g,n.w=m,n};ct.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};ct.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};ct.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<D.EPSILON6||Math.abs(n+1)<D.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};ct.computeAngle=function(e){return Math.abs(e.w-1)<D.EPSILON6?0:2*Math.acos(e.w)};var O9=new ct;ct.lerp=function(e,t,n,i){return O9=ct.multiplyByScalar(t,n,O9),i=ct.multiplyByScalar(e,1-n,i),ct.add(O9,i,i)};var Tne=new ct,F9=new ct,Q9=new ct;ct.slerp=function(e,t,n,i){let o=ct.dot(e,t),r=t;if(o<0&&(o=-o,r=Tne=ct.negate(t,Tne)),1-o<D.EPSILON6)return ct.lerp(e,r,n,i);let s=Math.acos(o);return F9=ct.multiplyByScalar(e,Math.sin((1-n)*s),F9),Q9=ct.multiplyByScalar(r,Math.sin(n*s),Q9),i=ct.add(F9,Q9,i),ct.multiplyByScalar(i,1/Math.sin(s),i)};ct.log=function(e,t){let n=D.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};ct.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var eve=new d,tve=new d,TB=new ct,Yx=new ct;ct.computeInnerQuadrangle=function(e,t,n,i){let o=ct.conjugate(t,TB);ct.multiply(o,n,Yx);let r=ct.log(Yx,eve);ct.multiply(o,e,Yx);let s=ct.log(Yx,tve);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),ct.exp(r,TB),ct.multiply(t,TB,i)};ct.squad=function(e,t,n,i,o,r){let s=ct.slerp(e,t,o,TB),a=ct.slerp(n,i,o,Yx);return ct.slerp(s,a,2*o*(1-o),r)};var nve=new ct,Sne=1.9011074535173003,yG=Wt.supportsTypedArrays()?new Float32Array(8):[],CG=Wt.supportsTypedArrays()?new Float32Array(8):[],ZA=Wt.supportsTypedArrays()?new Float32Array(8):[],$A=Wt.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;yG[e]=1/(t*n),CG[e]=t/n}yG[7]=Sne/136;CG[7]=Sne*8/17;ct.fastSlerp=function(e,t,n,i){let o=ct.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)ZA[g]=(yG[g]*c-CG[g])*s,$A[g]=(yG[g]*u-CG[g])*s;let f=r*n*(1+ZA[0]*(1+ZA[1]*(1+ZA[2]*(1+ZA[3]*(1+ZA[4]*(1+ZA[5]*(1+ZA[6]*(1+ZA[7])))))))),h=a*(1+$A[0]*(1+$A[1]*(1+$A[2]*(1+$A[3]*(1+$A[4]*(1+$A[5]*(1+$A[6]*(1+$A[7])))))))),A=ct.multiplyByScalar(e,h,nve);return ct.multiplyByScalar(t,f,i),ct.add(A,i,i)};ct.fastSquad=function(e,t,n,i,o,r){let s=ct.fastSlerp(e,t,o,TB),a=ct.fastSlerp(n,i,o,Yx);return ct.fastSlerp(s,a,2*o*(1-o),r)};ct.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};ct.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};ct.ZERO=Object.freeze(new ct(0,0,0,0));ct.IDENTITY=Object.freeze(new ct(0,0,0,1));ct.prototype.clone=function(e){return ct.clone(this,e)};ct.prototype.equals=function(e){return ct.equals(this,e)};ct.prototype.equalsEpsilon=function(e,t){return ct.equalsEpsilon(this,e,t)};ct.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=ct;var wi={},k9={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},qx={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},U9={},Zl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},y_=new d,C_=new d,E_=new d;wi.localFrameToFixedFrameGenerator=function(e,t){if(!k9.hasOwnProperty(e)||!k9[e].hasOwnProperty(t))throw new me("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=k9[e][t],i,o=e+t;return l(U9[o])?i=U9[o]:(i=function(r,s,a){if(l(a)||(a=new N),d.equalsEpsilon(r,d.ZERO,D.EPSILON14))d.unpack(qx[e],0,y_),d.unpack(qx[t],0,C_),d.unpack(qx[n],0,E_);else if(D.equalsEpsilon(r.x,0,D.EPSILON14)&&D.equalsEpsilon(r.y,0,D.EPSILON14)){let c=D.sign(r.z);d.unpack(qx[e],0,y_),e!=="east"&&e!=="west"&&d.multiplyByScalar(y_,c,y_),d.unpack(qx[t],0,C_),t!=="east"&&t!=="west"&&d.multiplyByScalar(C_,c,C_),d.unpack(qx[n],0,E_),n!=="east"&&n!=="west"&&d.multiplyByScalar(E_,c,E_)}else{s=s??te.default,s.geodeticSurfaceNormal(r,Zl.up);let c=Zl.up,u=Zl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,Zl.east),d.cross(c,u,Zl.north),d.multiplyByScalar(Zl.up,-1,Zl.down),d.multiplyByScalar(Zl.east,-1,Zl.west),d.multiplyByScalar(Zl.north,-1,Zl.south),y_=Zl[e],C_=Zl[t],E_=Zl[n]}return a[0]=y_.x,a[1]=y_.y,a[2]=y_.z,a[3]=0,a[4]=C_.x,a[5]=C_.y,a[6]=C_.z,a[7]=0,a[8]=E_.x,a[9]=E_.y,a[10]=E_.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},U9[o]=i),i};wi.eastNorthUpToFixedFrame=wi.localFrameToFixedFrameGenerator("east","north");wi.northEastDownToFixedFrame=wi.localFrameToFixedFrameGenerator("north","east");wi.northUpEastToFixedFrame=wi.localFrameToFixedFrameGenerator("north","up");wi.northWestUpToFixedFrame=wi.localFrameToFixedFrameGenerator("north","west");var ive=new Le,ove=new d(1,1,1),rve=new N;wi.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??wi.eastNorthUpToFixedFrame;let r=Le.fromHeadingPitchRoll(t,ive),s=N.fromTranslationQuaternionRotationScale(d.ZERO,r,ove,rve);return o=i(e,n,o),N.multiply(o,s,o)};var sve=new N,ave=new J;wi.headingPitchRollQuaternion=function(e,t,n,i,o){let r=wi.headingPitchRollToFixedFrame(e,t,n,i,sve),s=N.getMatrix3(r,ave);return Le.fromRotationMatrix(s,o)};var cve=new d(1,1,1),lve=new d,wne=new N,uve=new N,fve=new J,dve=new Le;wi.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??te.default,n=n??wi.eastNorthUpToFixedFrame,l(i)||(i=new rc);let o=N.getTranslation(e,lve);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=N.inverseTransformation(n(o,t,wne),wne),s=N.setScale(e,cve,uve);s=N.setTranslation(s,d.ZERO,s),r=N.multiply(r,s,r);let a=Le.fromRotationMatrix(N.getMatrix3(r,fve),dve);return a=Le.normalize(a,a),rc.fromQuaternion(a,i)};var hve=6*3600+2460+50.54841,mve=8640184812866e-6,Ave=.093104,pve=-62e-7,gve=11772758384668e-32,_ve=72921158553e-15,yve=D.TWO_PI/86400,EG=new K;wi.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=wi.computeIcrfToFixedMatrix(e,t);return l(n)||(n=wi.computeTemeToPseudoFixedMatrix(e,t)),n};wi.computeTemeToPseudoFixedMatrix=function(e,t){EG=K.addSeconds(e,-K.computeTaiMinusUtc(e),EG);let n=EG.dayNumber,i=EG.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ri.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ri.DAYS_PER_JULIAN_CENTURY;let a=(hve+o*(mve+o*(Ave+o*pve)))*yve%D.TWO_PI,c=_ve+gve*(n-24515455e-1),u=(i+ri.SECONDS_PER_DAY*.5)%ri.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),A=Math.sin(f);return l(t)?(t[0]=h,t[1]=-A,t[2]=0,t[3]=A,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new J(h,A,0,-A,h,0,0,0,1)};wi.iau2006XysData=new EB;wi.earthOrientationParameters=CB.NONE;var V9=32.184,Cve=2451545;wi.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+V9,i=e.stop.dayNumber,o=e.stop.secondsOfDay+V9;return wi.iau2006XysData.preload(t,n,i,o)};wi.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new J);let n=wi.computeFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var Eve=32.184,Ive=2451545,IG=new rc,xve=new J,bve=new K;wi.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=K.addSeconds(e,Eve,bve),i=K.totalDays(n)-Ive,o=D.toRadians(12.112)-D.toRadians(.052992)*i,r=D.toRadians(24.224)-D.toRadians(.105984)*i,s=D.toRadians(227.645)+D.toRadians(13.012)*i,a=D.toRadians(261.105)+D.toRadians(13.340716)*i,c=D.toRadians(358)+D.toRadians(.9856)*i;return IG.pitch=D.toRadians(180)-D.toRadians(3.878)*Math.sin(o)-D.toRadians(.12)*Math.sin(r)+D.toRadians(.07)*Math.sin(s)-D.toRadians(.017)*Math.sin(a),IG.roll=D.toRadians(66.53-90)+D.toRadians(1.543)*Math.cos(o)+D.toRadians(.24)*Math.cos(r)-D.toRadians(.028)*Math.cos(s)+D.toRadians(.007)*Math.cos(a),IG.heading=D.toRadians(244.375-90)+D.toRadians(13.17635831)*i+D.toRadians(3.558)*Math.sin(o)+D.toRadians(.121)*Math.sin(r)-D.toRadians(.064)*Math.sin(s)+D.toRadians(.016)*Math.sin(a)+D.toRadians(.025)*Math.sin(c),J.fromHeadingPitchRoll(IG,xve)};wi.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new J);let n=wi.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var Tve=new qC(0,0,0),Sve=new A_(0,0,0,0,0,0),G9=new J,z9=new J;wi.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=wi.earthOrientationParameters.compute(e,Sve);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+V9,r=wi.iau2006XysData.computeXysRadians(i,o,Tve);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=G9;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=J.fromRotationZ(-r.s,z9),h=J.multiply(u,f,G9),A=e.dayNumber,g=e.secondsOfDay-K.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=A-2451545,_=g/ri.SECONDS_PER_DAY,y=.779057273264+_+.00273781191135448*(m+_);y=y%1*D.TWO_PI;let C=J.fromRotationZ(y,z9),E=J.multiply(h,C,G9),I=Math.cos(n.xPoleWander),b=Math.cos(n.yPoleWander),S=Math.sin(n.xPoleWander),B=Math.sin(n.yPoleWander),v=i-Cve+o/ri.SECONDS_PER_DAY;v/=36525;let P=-47e-6*v*D.RADIANS_PER_DEGREE/3600,M=Math.cos(P),L=Math.sin(P),p=z9;return p[0]=I*M,p[1]=I*L,p[2]=S,p[3]=-b*L+B*S*M,p[4]=b*M+B*S*L,p[5]=-B*I,p[6]=-B*L-b*S*M,p[7]=B*M-b*S*L,p[8]=b*I,J.multiply(E,p,t)};var wve=new se;wi.pointToWindowCoordinates=function(e,t,n,i){return i=wi.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};wi.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new U);let o=wve;return N.multiplyByVector(e,se.fromElements(n.x,n.y,n.z,1,o),o),se.multiplyByScalar(o,1/o.w,o),N.multiplyByVector(t,o,o),U.fromCartesian4(o,i)};var Bve=new d,Dve=new d,vve=new d;wi.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??te.default).geodeticSurfaceNormal(e,Bve),r=d.cross(t,o,Dve);d.equalsEpsilon(r,d.ZERO,D.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,vve);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new J),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var Bne=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Dne=new Ae,H9=new d,Pve=new d,Rve=new J,W9=new N,vne=new N;wi.basisTo2D=function(e,t,n){let i=N.getTranslation(t,Pve),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,H9);else{let f=o.cartesianToCartographic(i,Dne);r=e.project(f,H9),d.fromElements(r.z,r.x,r.y,r)}let s=wi.eastNorthUpToFixedFrame(i,o,W9),a=N.inverseTransformation(s,vne),c=N.getMatrix3(t,Rve),u=N.multiplyByMatrix3(a,c,n);return N.multiply(Bne,u,n),N.setTranslation(n,r,n),n};wi.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=wi.eastNorthUpToFixedFrame(t,i,W9),r=N.inverseTransformation(o,vne),s=i.cartesianToCartographic(t,Dne),a=e.project(s,H9);d.fromElements(a.z,a.x,a.y,a);let c=N.fromTranslation(a,W9);return N.multiply(Bne,r,n),N.multiply(c,n,n),n};var kt=wi;function Ln(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Ln.prototype,{width:{get:function(){return Ln.computeWidth(this)}},height:{get:function(){return Ln.computeHeight(this)}}});Ln.packedLength=4;Ln.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Ln.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ln),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Ln.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=D.TWO_PI),t-n};Ln.computeHeight=function(e){return e.north-e.south};Ln.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e??0),t=D.toRadians(t??0),n=D.toRadians(n??0),i=D.toRadians(i??0),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new Ln(e,t,n,i)};Ln.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=e??0,o.south=t??0,o.east=n??0,o.north=i??0,o):new Ln(e,t,n,i)};Ln.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+D.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>D.PI&&(i=i-D.TWO_PI),n>D.PI&&(n=n-D.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Ln(n,s,i,a)};Ln.fromCartesianArray=function(e,t,n){t=t??te.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let A=h.longitude>=0?h.longitude:h.longitude+D.TWO_PI;r=Math.min(r,A),s=Math.max(s,A)}return o-i>s-r&&(i=r,o=s,o>D.PI&&(o=o-D.TWO_PI),i>D.PI&&(i=i-D.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Ln(i,a,o,c)};var Mve=new d,Nve=new d,Lve=new d,Ove=new d,Fve=new d,j9=new Array(5);for(let e=0;e<j9.length;++e)j9[e]=new d;Ln.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=te.default),l(n)||(n=new Ln),d.equals(i,d.ZERO))return Ln.clone(Ln.MAX_VALUE,n),n;let r=kt.eastNorthUpToFixedFrame(i,t,Mve),s=N.multiplyByPointAsVector(r,d.UNIT_X,Nve);d.normalize(s,s);let a=N.multiplyByPointAsVector(r,d.UNIT_Y,Lve);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,Fve),u=d.negate(s,Ove),f=j9,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,Ln.fromCartesianArray(f,t,n)};Ln.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new Ln(e.west,e.south,e.east,e.north)};Ln.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};Ln.prototype.clone=function(e){return Ln.clone(this,e)};Ln.prototype.equals=function(e){return Ln.equals(this,e)};Ln.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};Ln.prototype.equalsEpsilon=function(e,t){return Ln.equalsEpsilon(this,e,t)};Ln._validate=function(e){};Ln.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new Ae(e.west,e.south)};Ln.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new Ae(e.west,e.north)};Ln.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new Ae(e.east,e.north)};Ln.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new Ae(e.east,e.south)};Ln.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=D.TWO_PI);let o=D.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new Ae(o,r)};Ln.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.max(o,s)),c=D.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new Ln(a,u,c,f)};Ln.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Ln(i,o,r,s)};Ln.union=function(e,t,n){l(n)||(n=new Ln);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.min(o,s)),c=D.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};Ln.expand=function(e,t,n){return l(n)||(n=new Ln),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};Ln.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=D.TWO_PI,n<0&&(n+=D.TWO_PI)),(n>o||D.equalsEpsilon(n,o,D.EPSILON14))&&(n<r||D.equalsEpsilon(n,r,D.EPSILON14))&&i>=e.south&&i<=e.north};var Qve=new Ae;Ln.subsample=function(e,t,n,i){t=t??te.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=Qve;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*D.PI_OVER_TWO,Ln.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};Ln.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Ln),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=D.TWO_PI+e.east-e.west;r.west=D.negativePiToPi(e.west+t*a),r.east=D.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Ln.MAX_VALUE=Object.freeze(new Ln(-Math.PI,-D.PI_OVER_TWO,Math.PI,D.PI_OVER_TWO));var ae=Ln;function Zr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Zr.packedLength=4;Zr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Zr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Zr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Zr.fromPoints=function(e,t){if(l(t)||(t=new Zr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var Pne=new Ui,kve=new Ae,Uve=new Ae;Zr.fromRectangle=function(e,t,n){if(l(n)||(n=new Zr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;Pne._ellipsoid=te.default,t=t??Pne;let i=t.project(ae.southwest(e,kve)),o=t.project(ae.northeast(e,Uve));return U.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Zr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Zr(e.x,e.y,e.width,e.height)};Zr.union=function(e,t,n){l(n)||(n=new Zr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Zr.expand=function(e,t,n){n=Zr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Zr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?tn.OUTSIDE:tn.INTERSECTING};Zr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Zr.prototype.clone=function(e){return Zr.clone(this,e)};Zr.prototype.intersect=function(e){return Zr.intersect(this,e)};Zr.prototype.equals=function(e){return Zr.equals(this,e)};var Ye=Zr;function Y9(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function re(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}re.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new re(e.x,e.y,e.z,e.w)};re.fromBytes=function(e,t,n,i,o){return e=re.byteToFloat(e??255),t=re.byteToFloat(t??255),n=re.byteToFloat(n??255),i=re.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new re(e,t,n,i)};re.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new re(e.red,e.green,e.blue,t)};var q9,K9,ep;Wt.supportsTypedArrays()&&(q9=new ArrayBuffer(4),K9=new Uint32Array(q9),ep=new Uint8Array(q9));re.fromRgba=function(e,t){return K9[0]=e,re.fromBytes(ep[0],ep[1],ep[2],ep[3],t)};re.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=Y9(u,c,e+1/3),s=Y9(u,c,e),a=Y9(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new re(r,s,a,i)};re.fromRandom=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+D.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+D.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+D.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+D.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new re(n,i,o,r)};var Gve=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,zve=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,Vve=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,Hve=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;re.fromCssColorString=function(e,t){l(t)||(t=new re),e=e.trim();let n=re[e.toUpperCase()];if(l(n))return re.clone(n,t),t;let i=Gve.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=zve.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=Vve.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=Hve.exec(e),i!==null?re.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};re.packedLength=4;re.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};re.unpack=function(e,t,n){return t=t??0,l(n)||(n=new re),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};re.byteToFloat=function(e){return e/255};re.floatToByte=function(e){return e===1?255:e*256|0};re.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new re(e.red,e.green,e.blue,e.alpha)};re.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};re.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};re.prototype.clone=function(e){return re.clone(this,e)};re.prototype.equals=function(e){return re.equals(this,e)};re.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};re.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};re.prototype.toCssColorString=function(){let e=re.floatToByte(this.red),t=re.floatToByte(this.green),n=re.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};re.prototype.toCssHexString=function(){let e=re.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=re.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=re.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=re.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};re.prototype.toBytes=function(e){let t=re.floatToByte(this.red),n=re.floatToByte(this.green),i=re.floatToByte(this.blue),o=re.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};re.prototype.toRgba=function(){return ep[0]=re.floatToByte(this.red),ep[1]=re.floatToByte(this.green),ep[2]=re.floatToByte(this.blue),ep[3]=re.floatToByte(this.alpha),K9[0]};re.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};re.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};re.prototype.withAlpha=function(e,t){return re.fromAlpha(this,e,t)};re.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};re.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};re.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};re.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};re.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};re.lerp=function(e,t,n,i){return i.red=D.lerp(e.red,t.red,n),i.green=D.lerp(e.green,t.green,n),i.blue=D.lerp(e.blue,t.blue,n),i.alpha=D.lerp(e.alpha,t.alpha,n),i};re.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};re.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};re.ALICEBLUE=Object.freeze(re.fromCssColorString("#F0F8FF"));re.ANTIQUEWHITE=Object.freeze(re.fromCssColorString("#FAEBD7"));re.AQUA=Object.freeze(re.fromCssColorString("#00FFFF"));re.AQUAMARINE=Object.freeze(re.fromCssColorString("#7FFFD4"));re.AZURE=Object.freeze(re.fromCssColorString("#F0FFFF"));re.BEIGE=Object.freeze(re.fromCssColorString("#F5F5DC"));re.BISQUE=Object.freeze(re.fromCssColorString("#FFE4C4"));re.BLACK=Object.freeze(re.fromCssColorString("#000000"));re.BLANCHEDALMOND=Object.freeze(re.fromCssColorString("#FFEBCD"));re.BLUE=Object.freeze(re.fromCssColorString("#0000FF"));re.BLUEVIOLET=Object.freeze(re.fromCssColorString("#8A2BE2"));re.BROWN=Object.freeze(re.fromCssColorString("#A52A2A"));re.BURLYWOOD=Object.freeze(re.fromCssColorString("#DEB887"));re.CADETBLUE=Object.freeze(re.fromCssColorString("#5F9EA0"));re.CHARTREUSE=Object.freeze(re.fromCssColorString("#7FFF00"));re.CHOCOLATE=Object.freeze(re.fromCssColorString("#D2691E"));re.CORAL=Object.freeze(re.fromCssColorString("#FF7F50"));re.CORNFLOWERBLUE=Object.freeze(re.fromCssColorString("#6495ED"));re.CORNSILK=Object.freeze(re.fromCssColorString("#FFF8DC"));re.CRIMSON=Object.freeze(re.fromCssColorString("#DC143C"));re.CYAN=Object.freeze(re.fromCssColorString("#00FFFF"));re.DARKBLUE=Object.freeze(re.fromCssColorString("#00008B"));re.DARKCYAN=Object.freeze(re.fromCssColorString("#008B8B"));re.DARKGOLDENROD=Object.freeze(re.fromCssColorString("#B8860B"));re.DARKGRAY=Object.freeze(re.fromCssColorString("#A9A9A9"));re.DARKGREEN=Object.freeze(re.fromCssColorString("#006400"));re.DARKGREY=re.DARKGRAY;re.DARKKHAKI=Object.freeze(re.fromCssColorString("#BDB76B"));re.DARKMAGENTA=Object.freeze(re.fromCssColorString("#8B008B"));re.DARKOLIVEGREEN=Object.freeze(re.fromCssColorString("#556B2F"));re.DARKORANGE=Object.freeze(re.fromCssColorString("#FF8C00"));re.DARKORCHID=Object.freeze(re.fromCssColorString("#9932CC"));re.DARKRED=Object.freeze(re.fromCssColorString("#8B0000"));re.DARKSALMON=Object.freeze(re.fromCssColorString("#E9967A"));re.DARKSEAGREEN=Object.freeze(re.fromCssColorString("#8FBC8F"));re.DARKSLATEBLUE=Object.freeze(re.fromCssColorString("#483D8B"));re.DARKSLATEGRAY=Object.freeze(re.fromCssColorString("#2F4F4F"));re.DARKSLATEGREY=re.DARKSLATEGRAY;re.DARKTURQUOISE=Object.freeze(re.fromCssColorString("#00CED1"));re.DARKVIOLET=Object.freeze(re.fromCssColorString("#9400D3"));re.DEEPPINK=Object.freeze(re.fromCssColorString("#FF1493"));re.DEEPSKYBLUE=Object.freeze(re.fromCssColorString("#00BFFF"));re.DIMGRAY=Object.freeze(re.fromCssColorString("#696969"));re.DIMGREY=re.DIMGRAY;re.DODGERBLUE=Object.freeze(re.fromCssColorString("#1E90FF"));re.FIREBRICK=Object.freeze(re.fromCssColorString("#B22222"));re.FLORALWHITE=Object.freeze(re.fromCssColorString("#FFFAF0"));re.FORESTGREEN=Object.freeze(re.fromCssColorString("#228B22"));re.FUCHSIA=Object.freeze(re.fromCssColorString("#FF00FF"));re.GAINSBORO=Object.freeze(re.fromCssColorString("#DCDCDC"));re.GHOSTWHITE=Object.freeze(re.fromCssColorString("#F8F8FF"));re.GOLD=Object.freeze(re.fromCssColorString("#FFD700"));re.GOLDENROD=Object.freeze(re.fromCssColorString("#DAA520"));re.GRAY=Object.freeze(re.fromCssColorString("#808080"));re.GREEN=Object.freeze(re.fromCssColorString("#008000"));re.GREENYELLOW=Object.freeze(re.fromCssColorString("#ADFF2F"));re.GREY=re.GRAY;re.HONEYDEW=Object.freeze(re.fromCssColorString("#F0FFF0"));re.HOTPINK=Object.freeze(re.fromCssColorString("#FF69B4"));re.INDIANRED=Object.freeze(re.fromCssColorString("#CD5C5C"));re.INDIGO=Object.freeze(re.fromCssColorString("#4B0082"));re.IVORY=Object.freeze(re.fromCssColorString("#FFFFF0"));re.KHAKI=Object.freeze(re.fromCssColorString("#F0E68C"));re.LAVENDER=Object.freeze(re.fromCssColorString("#E6E6FA"));re.LAVENDAR_BLUSH=Object.freeze(re.fromCssColorString("#FFF0F5"));re.LAWNGREEN=Object.freeze(re.fromCssColorString("#7CFC00"));re.LEMONCHIFFON=Object.freeze(re.fromCssColorString("#FFFACD"));re.LIGHTBLUE=Object.freeze(re.fromCssColorString("#ADD8E6"));re.LIGHTCORAL=Object.freeze(re.fromCssColorString("#F08080"));re.LIGHTCYAN=Object.freeze(re.fromCssColorString("#E0FFFF"));re.LIGHTGOLDENRODYELLOW=Object.freeze(re.fromCssColorString("#FAFAD2"));re.LIGHTGRAY=Object.freeze(re.fromCssColorString("#D3D3D3"));re.LIGHTGREEN=Object.freeze(re.fromCssColorString("#90EE90"));re.LIGHTGREY=re.LIGHTGRAY;re.LIGHTPINK=Object.freeze(re.fromCssColorString("#FFB6C1"));re.LIGHTSEAGREEN=Object.freeze(re.fromCssColorString("#20B2AA"));re.LIGHTSKYBLUE=Object.freeze(re.fromCssColorString("#87CEFA"));re.LIGHTSLATEGRAY=Object.freeze(re.fromCssColorString("#778899"));re.LIGHTSLATEGREY=re.LIGHTSLATEGRAY;re.LIGHTSTEELBLUE=Object.freeze(re.fromCssColorString("#B0C4DE"));re.LIGHTYELLOW=Object.freeze(re.fromCssColorString("#FFFFE0"));re.LIME=Object.freeze(re.fromCssColorString("#00FF00"));re.LIMEGREEN=Object.freeze(re.fromCssColorString("#32CD32"));re.LINEN=Object.freeze(re.fromCssColorString("#FAF0E6"));re.MAGENTA=Object.freeze(re.fromCssColorString("#FF00FF"));re.MAROON=Object.freeze(re.fromCssColorString("#800000"));re.MEDIUMAQUAMARINE=Object.freeze(re.fromCssColorString("#66CDAA"));re.MEDIUMBLUE=Object.freeze(re.fromCssColorString("#0000CD"));re.MEDIUMORCHID=Object.freeze(re.fromCssColorString("#BA55D3"));re.MEDIUMPURPLE=Object.freeze(re.fromCssColorString("#9370DB"));re.MEDIUMSEAGREEN=Object.freeze(re.fromCssColorString("#3CB371"));re.MEDIUMSLATEBLUE=Object.freeze(re.fromCssColorString("#7B68EE"));re.MEDIUMSPRINGGREEN=Object.freeze(re.fromCssColorString("#00FA9A"));re.MEDIUMTURQUOISE=Object.freeze(re.fromCssColorString("#48D1CC"));re.MEDIUMVIOLETRED=Object.freeze(re.fromCssColorString("#C71585"));re.MIDNIGHTBLUE=Object.freeze(re.fromCssColorString("#191970"));re.MINTCREAM=Object.freeze(re.fromCssColorString("#F5FFFA"));re.MISTYROSE=Object.freeze(re.fromCssColorString("#FFE4E1"));re.MOCCASIN=Object.freeze(re.fromCssColorString("#FFE4B5"));re.NAVAJOWHITE=Object.freeze(re.fromCssColorString("#FFDEAD"));re.NAVY=Object.freeze(re.fromCssColorString("#000080"));re.OLDLACE=Object.freeze(re.fromCssColorString("#FDF5E6"));re.OLIVE=Object.freeze(re.fromCssColorString("#808000"));re.OLIVEDRAB=Object.freeze(re.fromCssColorString("#6B8E23"));re.ORANGE=Object.freeze(re.fromCssColorString("#FFA500"));re.ORANGERED=Object.freeze(re.fromCssColorString("#FF4500"));re.ORCHID=Object.freeze(re.fromCssColorString("#DA70D6"));re.PALEGOLDENROD=Object.freeze(re.fromCssColorString("#EEE8AA"));re.PALEGREEN=Object.freeze(re.fromCssColorString("#98FB98"));re.PALETURQUOISE=Object.freeze(re.fromCssColorString("#AFEEEE"));re.PALEVIOLETRED=Object.freeze(re.fromCssColorString("#DB7093"));re.PAPAYAWHIP=Object.freeze(re.fromCssColorString("#FFEFD5"));re.PEACHPUFF=Object.freeze(re.fromCssColorString("#FFDAB9"));re.PERU=Object.freeze(re.fromCssColorString("#CD853F"));re.PINK=Object.freeze(re.fromCssColorString("#FFC0CB"));re.PLUM=Object.freeze(re.fromCssColorString("#DDA0DD"));re.POWDERBLUE=Object.freeze(re.fromCssColorString("#B0E0E6"));re.PURPLE=Object.freeze(re.fromCssColorString("#800080"));re.RED=Object.freeze(re.fromCssColorString("#FF0000"));re.ROSYBROWN=Object.freeze(re.fromCssColorString("#BC8F8F"));re.ROYALBLUE=Object.freeze(re.fromCssColorString("#4169E1"));re.SADDLEBROWN=Object.freeze(re.fromCssColorString("#8B4513"));re.SALMON=Object.freeze(re.fromCssColorString("#FA8072"));re.SANDYBROWN=Object.freeze(re.fromCssColorString("#F4A460"));re.SEAGREEN=Object.freeze(re.fromCssColorString("#2E8B57"));re.SEASHELL=Object.freeze(re.fromCssColorString("#FFF5EE"));re.SIENNA=Object.freeze(re.fromCssColorString("#A0522D"));re.SILVER=Object.freeze(re.fromCssColorString("#C0C0C0"));re.SKYBLUE=Object.freeze(re.fromCssColorString("#87CEEB"));re.SLATEBLUE=Object.freeze(re.fromCssColorString("#6A5ACD"));re.SLATEGRAY=Object.freeze(re.fromCssColorString("#708090"));re.SLATEGREY=re.SLATEGRAY;re.SNOW=Object.freeze(re.fromCssColorString("#FFFAFA"));re.SPRINGGREEN=Object.freeze(re.fromCssColorString("#00FF7F"));re.STEELBLUE=Object.freeze(re.fromCssColorString("#4682B4"));re.TAN=Object.freeze(re.fromCssColorString("#D2B48C"));re.TEAL=Object.freeze(re.fromCssColorString("#008080"));re.THISTLE=Object.freeze(re.fromCssColorString("#D8BFD8"));re.TOMATO=Object.freeze(re.fromCssColorString("#FF6347"));re.TURQUOISE=Object.freeze(re.fromCssColorString("#40E0D0"));re.VIOLET=Object.freeze(re.fromCssColorString("#EE82EE"));re.WHEAT=Object.freeze(re.fromCssColorString("#F5DEB3"));re.WHITE=Object.freeze(re.fromCssColorString("#FFFFFF"));re.WHITESMOKE=Object.freeze(re.fromCssColorString("#F5F5F5"));re.YELLOW=Object.freeze(re.fromCssColorString("#FFFF00"));re.YELLOWGREEN=Object.freeze(re.fromCssColorString("#9ACD32"));re.TRANSPARENT=Object.freeze(new re(0,0,0,0));var G=re;function Wve(){return!0}function jve(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=Wve}var ue=jve;function Qu(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Qu.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Qu.packedLength=2;Qu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Qu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Qu),n.near=e[t++],n.far=e[t],n};Qu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Qu.clone=function(e,t){if(l(e))return l(t)||(t=new Qu),t.near=e.near,t.far=e.far,t};Qu.prototype.clone=function(e){return Qu.clone(this,e)};Qu.prototype.equals=function(e){return Qu.equals(this,e)};var Ut=Qu;function Hf(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}Hf.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new Hf(e.near,e.nearValue,e.far,e.farValue)};Hf.packedLength=4;Hf.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};Hf.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Hf),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};Hf.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};Hf.prototype.clone=function(e){return Hf.clone(this,e)};Hf.prototype.equals=function(e){return Hf.equals(this,e)};var jt=Hf;var XC={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ze=Object.freeze(XC);function Wf(e){return e===XC.CLAMP_TO_GROUND||e===XC.CLAMP_TO_3D_TILE||e===XC.CLAMP_TO_TERRAIN}function Kx(e){return e===XC.RELATIVE_TO_GROUND||e===XC.RELATIVE_TO_3D_TILE||e===XC.RELATIVE_TO_TERRAIN}var Yve={CENTER:0,LEFT:1,RIGHT:-1},Ri=Object.freeze(Yve);var qve={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},zn=Object.freeze(qve);var Kve=Object.freeze({DONE:0,PENDING:1,FAILED:2}),mt=Kve;function sh(){me.throwInstantiationError()}Object.defineProperties(sh.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});sh.prototype.getValue=me.throwInstantiationError;sh.prototype.equals=me.throwInstantiationError;sh.equals=function(e,t){return e===t||l(e)&&e.equals(t)};sh.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!sh.equals(e[i],t[i]))return!1;return!0};sh.isConstant=function(e){return!l(e)||e.isConstant};sh.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};sh.getValueOrDefault=function(e,t,n,i){return l(e)?e.getValue(t,i)??n:n};sh.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var j=sh;var Xve={LEFT:-1,NONE:0,RIGHT:1},br=Object.freeze(Xve);var Jve=G.WHITE,Zve=d.ZERO,$ve=Ze.NONE,ePe=U.ZERO,tPe=1,nPe=0,iPe=d.ZERO,oPe=Ri.CENTER,rPe=zn.CENTER,sPe=!1,aPe=br.NONE,cPe=new d,lPe=new G,uPe=new d,fPe=new U,dPe=new jt,hPe=new jt,mPe=new jt,APe=new Ye,pPe=new Ut;function Rne(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function I_(e,t){t.collectionChanged.addEventListener(I_.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}I_.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,cPe),c=j.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){X9(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=j.getValueOrDefault(a._color,e,Jve,lPe),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,Zve,uPe),u.heightReference=j.getValueOrDefault(a._heightReference,e,$ve),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,ePe,fPe),u.scale=j.getValueOrDefault(a._scale,e,tPe),u.rotation=j.getValueOrDefault(a._rotation,e,nPe),u.alignedAxis=j.getValueOrDefault(a._alignedAxis,e,iPe),u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,oPe),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,rPe),u.width=j.getValueOrUndefined(a._width,e),u.height=j.getValueOrUndefined(a._height,e),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,dPe),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,hPe),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,mPe),u.sizeInMeters=j.getValueOrDefault(a._sizeInMeters,e,sPe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,pPe),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,aPe);let A=j.getValueOrUndefined(a._imageSubRegion,e,APe);l(A)&&u.setImageSubRegion(u.image,A)}return!0};I_.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return mt.FAILED;let i=n.billboard;if(i.heightReference===Ze.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};I_.prototype.isDestroyed=function(){return!1};I_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(I_.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};I_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new Rne(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Rne(r)):(X9(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],X9(s.get(r.id),r,a),s.remove(r.id)};function X9(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var SB=I_;function gPe(e,t){this.start=e??0,this.stop=t??0}var sc=gPe;function En(e,t){this.center=d.clone(e??d.ZERO),this.radius=t??0}var $9=new d,e6=new d,t6=new d,n6=new d,i6=new d,o6=new d,r6=new d,La=new d,s6=new d,a6=new d,c6=new d,l6=new d,_Pe=4/3*D.PI;En.fromPoints=function(e,t){if(l(t)||(t=new En),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],r6),i=d.clone(n,$9),o=d.clone(n,e6),r=d.clone(n,t6),s=d.clone(n,n6),a=d.clone(n,i6),c=d.clone(n,o6),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let P=n.x,M=n.y,L=n.z;P<i.x&&d.clone(n,i),P>s.x&&d.clone(n,s),M<o.y&&d.clone(n,o),M>a.y&&d.clone(n,a),L<r.z&&d.clone(n,r),L>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,La)),A=d.magnitudeSquared(d.subtract(a,o,La)),g=d.magnitudeSquared(d.subtract(c,r,La)),m=i,_=s,y=h;A>y&&(y=A,m=o,_=a),g>y&&(y=g,m=r,_=c);let C=s6;C.x=(m.x+_.x)*.5,C.y=(m.y+_.y)*.5,C.z=(m.z+_.z)*.5;let E=d.magnitudeSquared(d.subtract(_,C,La)),I=Math.sqrt(E),b=a6;b.x=i.x,b.y=o.y,b.z=r.z;let S=c6;S.x=s.x,S.y=a.y,S.z=c.z;let B=d.midpoint(b,S,l6),v=0;for(f=0;f<u;f++){d.clone(e[f],n);let P=d.magnitude(d.subtract(n,B,La));P>v&&(v=P);let M=d.magnitudeSquared(d.subtract(n,C,La));if(M>E){let L=Math.sqrt(M);I=(I+L)*.5,E=I*I;let p=L-I;C.x=(I*C.x+p*n.x)/L,C.y=(I*C.y+p*n.y)/L,C.z=(I*C.z+p*n.z)/L}}return I<v?(d.clone(C,t.center),t.radius=I):(d.clone(B,t.center),t.radius=v),t};var Mne=new Ui,yPe=new d,CPe=new d,J9=new Ae,Z9=new Ae;En.fromRectangle2D=function(e,t,n){return En.fromRectangleWithHeights2D(e,t,0,0,n)};En.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new En),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;Mne._ellipsoid=te.default,t=t??Mne,ae.southwest(e,J9),J9.height=n,ae.northeast(e,Z9),Z9.height=i;let r=t.project(J9,yPe),s=t.project(Z9,CPe),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var EPe=[];En.fromRectangle3D=function(e,t,n,i){if(t=t??te.default,n=n??0,l(i)||(i=new En),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,EPe);return En.fromPoints(o,i)};En.fromVertices=function(e,t,n,i){if(l(i)||(i=new En),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=t??d.ZERO,n=n??3;let o=r6;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,$9),s=d.clone(o,e6),a=d.clone(o,t6),c=d.clone(o,n6),u=d.clone(o,i6),f=d.clone(o,o6),h=e.length,A;for(A=0;A<h;A+=n){let L=e[A]+t.x,p=e[A+1]+t.y,x=e[A+2]+t.z;o.x=L,o.y=p,o.z=x,L<r.x&&d.clone(o,r),L>c.x&&d.clone(o,c),p<s.y&&d.clone(o,s),p>u.y&&d.clone(o,u),x<a.z&&d.clone(o,a),x>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,La)),m=d.magnitudeSquared(d.subtract(u,s,La)),_=d.magnitudeSquared(d.subtract(f,a,La)),y=r,C=c,E=g;m>E&&(E=m,y=s,C=u),_>E&&(E=_,y=a,C=f);let I=s6;I.x=(y.x+C.x)*.5,I.y=(y.y+C.y)*.5,I.z=(y.z+C.z)*.5;let b=d.magnitudeSquared(d.subtract(C,I,La)),S=Math.sqrt(b),B=a6;B.x=r.x,B.y=s.y,B.z=a.z;let v=c6;v.x=c.x,v.y=u.y,v.z=f.z;let P=d.midpoint(B,v,l6),M=0;for(A=0;A<h;A+=n){o.x=e[A]+t.x,o.y=e[A+1]+t.y,o.z=e[A+2]+t.z;let L=d.magnitude(d.subtract(o,P,La));L>M&&(M=L);let p=d.magnitudeSquared(d.subtract(o,I,La));if(p>b){let x=Math.sqrt(p);S=(S+x)*.5,b=S*S;let T=x-S;I.x=(S*I.x+T*o.x)/x,I.y=(S*I.y+T*o.y)/x,I.z=(S*I.z+T*o.z)/x}}return S<M?(d.clone(I,i.center),i.radius=S):(d.clone(P,i.center),i.radius=M),i};En.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new En),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=r6;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,$9),r=d.clone(i,e6),s=d.clone(i,t6),a=d.clone(i,n6),c=d.clone(i,i6),u=d.clone(i,o6),f=e.length,h;for(h=0;h<f;h+=3){let M=e[h]+t[h],L=e[h+1]+t[h+1],p=e[h+2]+t[h+2];i.x=M,i.y=L,i.z=p,M<o.x&&d.clone(i,o),M>a.x&&d.clone(i,a),L<r.y&&d.clone(i,r),L>c.y&&d.clone(i,c),p<s.z&&d.clone(i,s),p>u.z&&d.clone(i,u)}let A=d.magnitudeSquared(d.subtract(a,o,La)),g=d.magnitudeSquared(d.subtract(c,r,La)),m=d.magnitudeSquared(d.subtract(u,s,La)),_=o,y=a,C=A;g>C&&(C=g,_=r,y=c),m>C&&(C=m,_=s,y=u);let E=s6;E.x=(_.x+y.x)*.5,E.y=(_.y+y.y)*.5,E.z=(_.z+y.z)*.5;let I=d.magnitudeSquared(d.subtract(y,E,La)),b=Math.sqrt(I),S=a6;S.x=o.x,S.y=r.y,S.z=s.z;let B=c6;B.x=a.x,B.y=c.y,B.z=u.z;let v=d.midpoint(S,B,l6),P=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let M=d.magnitude(d.subtract(i,v,La));M>P&&(P=M);let L=d.magnitudeSquared(d.subtract(i,E,La));if(L>I){let p=Math.sqrt(L);b=(b+p)*.5,I=b*b;let x=p-b;E.x=(b*E.x+x*i.x)/p,E.y=(b*E.y+x*i.y)/p,E.z=(b*E.z+x*i.z)/p}}return b<P?(d.clone(E,n.center),n.radius=b):(d.clone(v,n.center),n.radius=P),n};En.fromCornerPoints=function(e,t,n){l(n)||(n=new En);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};En.fromEllipsoid=function(e,t){return l(t)||(t=new En),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var IPe=new d;En.fromBoundingSpheres=function(e,t){if(l(t)||(t=new En),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return En.clone(e[0],t);if(n===2)return En.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=En.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,IPe)+a.radius)}return t.radius=s,t};var xPe=new d,bPe=new d,TPe=new d;En.fromOrientedBoundingBox=function(e,t){l(t)||(t=new En);let n=e.halfAxes,i=J.getColumn(n,0,xPe),o=J.getColumn(n,1,bPe),r=J.getColumn(n,2,TPe);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var SPe=new d,wPe=new d;En.fromTransformation=function(e,t){l(t)||(t=new En);let n=N.getTranslation(e,SPe),i=N.getScale(e,wPe),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};En.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new En(e.center,e.radius)};En.packedLength=4;En.pack=function(e,t,n){n=n??0;let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};En.unpack=function(e,t,n){t=t??0,l(n)||(n=new En);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var BPe=new d,DPe=new d;En.union=function(e,t,n){l(n)||(n=new En);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,BPe),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,DPe);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var vPe=new d;En.expand=function(e,t,n){n=En.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,vPe));return i>n.radius&&(n.radius=i),n};En.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?tn.OUTSIDE:r<i?tn.INTERSECTING:tn.INSIDE};En.transform=function(e,t,n){return l(n)||(n=new En),n.center=N.multiplyByPoint(t,e.center,n.center),n.radius=N.getMaximumScale(t)*e.radius,n};var PPe=new d;En.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,PPe),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};En.transformWithoutScale=function(e,t,n){return l(n)||(n=new En),n.center=N.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var RPe=new d;En.computePlaneDistances=function(e,t,n,i){l(i)||(i=new sc);let o=d.subtract(e.center,t,RPe),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var Nne=new d,MPe=new d,NPe=new d,LPe=new d,OPe=new d,FPe=new Ae,One=new Array(8);for(let e=0;e<8;++e)One[e]=new d;var Lne=new Ui;En.projectTo2D=function(e,t,n){Lne._ellipsoid=te.default,t=t??Lne;let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,Nne):s=i.geodeticSurfaceNormal(o,Nne);let a=d.cross(d.UNIT_Z,s,MPe);d.normalize(a,a);let c=d.cross(s,a,NPe);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,OPe),f=d.negate(a,LPe),h=One,A=h[0];d.add(s,c,A),d.add(A,a,A),A=h[1],d.add(s,c,A),d.add(A,f,A),A=h[2],d.add(s,u,A),d.add(A,f,A),A=h[3],d.add(s,u,A),d.add(A,a,A),d.negate(s,s),A=h[4],d.add(s,c,A),d.add(A,a,A),A=h[5],d.add(s,c,A),d.add(A,f,A),A=h[6],d.add(s,u,A),d.add(A,f,A),A=h[7],d.add(s,u,A),d.add(A,a,A);let g=h.length;for(let C=0;C<g;++C){let E=h[C];d.add(o,E,E);let I=i.cartesianToCartographic(E,FPe);t.project(I,E)}n=En.fromPoints(h,n),o=n.center;let m=o.x,_=o.y,y=o.z;return o.x=y,o.y=m,o.z=_,n};En.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};En.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};En.prototype.intersectPlane=function(e){return En.intersectPlane(this,e)};En.prototype.distanceSquaredTo=function(e){return En.distanceSquaredTo(this,e)};En.prototype.computePlaneDistances=function(e,t,n){return En.computePlaneDistances(this,e,t,n)};En.prototype.isOccluded=function(e){return En.isOccluded(this,e)};En.prototype.equals=function(e){return En.equals(this,e)};En.prototype.clone=function(e){return En.clone(this,e)};En.prototype.volume=function(){let e=this.radius;return _Pe*e*e*e};var le=En;var QPe={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},ee=Object.freeze(QPe);var Mn={BYTE:ee.BYTE,UNSIGNED_BYTE:ee.UNSIGNED_BYTE,SHORT:ee.SHORT,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,INT:ee.INT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,DOUBLE:ee.DOUBLE};Mn.getSizeInBytes=function(e){switch(e){case Mn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Mn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Mn.INT:return Int32Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Mn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Mn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Mn.fromTypedArray=function(e){if(e instanceof Int8Array)return Mn.BYTE;if(e instanceof Uint8Array)return Mn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Mn.SHORT;if(e instanceof Uint16Array)return Mn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Mn.INT;if(e instanceof Uint32Array)return Mn.UNSIGNED_INT;if(e instanceof Float32Array)return Mn.FLOAT;if(e instanceof Float64Array)return Mn.DOUBLE};Mn.validate=function(e){return l(e)&&(e===Mn.BYTE||e===Mn.UNSIGNED_BYTE||e===Mn.SHORT||e===Mn.UNSIGNED_SHORT||e===Mn.INT||e===Mn.UNSIGNED_INT||e===Mn.FLOAT||e===Mn.DOUBLE)};Mn.createTypedArray=function(e,t){switch(e){case Mn.BYTE:return new Int8Array(t);case Mn.UNSIGNED_BYTE:return new Uint8Array(t);case Mn.SHORT:return new Int16Array(t);case Mn.UNSIGNED_SHORT:return new Uint16Array(t);case Mn.INT:return new Int32Array(t);case Mn.UNSIGNED_INT:return new Uint32Array(t);case Mn.FLOAT:return new Float32Array(t);case Mn.DOUBLE:return new Float64Array(t)}};Mn.createArrayBufferView=function(e,t,n,i){switch(n=n??0,i=i??(t.byteLength-n)/Mn.getSizeInBytes(e),e){case Mn.BYTE:return new Int8Array(t,n,i);case Mn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Mn.SHORT:return new Int16Array(t,n,i);case Mn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Mn.INT:return new Int32Array(t,n,i);case Mn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Mn.FLOAT:return new Float32Array(t,n,i);case Mn.DOUBLE:return new Float64Array(t,n,i)}};Mn.fromName=function(e){switch(e){case"BYTE":return Mn.BYTE;case"UNSIGNED_BYTE":return Mn.UNSIGNED_BYTE;case"SHORT":return Mn.SHORT;case"UNSIGNED_SHORT":return Mn.UNSIGNED_SHORT;case"INT":return Mn.INT;case"UNSIGNED_INT":return Mn.UNSIGNED_INT;case"FLOAT":return Mn.FLOAT;case"DOUBLE":return Mn.DOUBLE}};var q=Object.freeze(Mn);var kPe={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},jf=Object.freeze(kPe);function sn(e,t,n,i){this[0]=e??0,this[1]=n??0,this[2]=t??0,this[3]=i??0}sn.packedLength=4;sn.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};sn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new sn),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};sn.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)sn.pack(e[o],t,o*4);return t};sn.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=sn.unpack(e,i,t[o])}return t};sn.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new sn(e[0],e[2],e[1],e[3])};sn.fromArray=sn.unpack;sn.fromColumnMajorArray=function(e,t){return sn.clone(e,t)};sn.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new sn(e[0],e[1],e[2],e[3])};sn.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new sn(e.x,0,0,e.y)};sn.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new sn(e,0,0,e)};sn.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new sn(n,-i,i,n)};sn.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};sn.getElementIndex=function(e,t){return e*2+t};sn.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};sn.setColumn=function(e,t,n,i){i=sn.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};sn.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};sn.setRow=function(e,t,n,i){return i=sn.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var UPe=new U;sn.setScale=function(e,t,n){let i=sn.getScale(e,UPe),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var GPe=new U;sn.setUniformScale=function(e,t,n){let i=sn.getScale(e,GPe),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Fne=new U;sn.getScale=function(e,t){return t.x=U.magnitude(U.fromElements(e[0],e[1],Fne)),t.y=U.magnitude(U.fromElements(e[2],e[3],Fne)),t};var Qne=new U;sn.getMaximumScale=function(e){return sn.getScale(e,Qne),U.maximumComponent(Qne)};var zPe=new U;sn.setRotation=function(e,t,n){let i=sn.getScale(e,zPe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var VPe=new U;sn.getRotation=function(e,t){let n=sn.getScale(e,VPe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};sn.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};sn.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};sn.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};sn.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};sn.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};sn.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};sn.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};sn.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};sn.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};sn.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};sn.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};sn.IDENTITY=Object.freeze(new sn(1,0,0,1));sn.ZERO=Object.freeze(new sn(0,0,0,0));sn.COLUMN0ROW0=0;sn.COLUMN0ROW1=1;sn.COLUMN1ROW0=2;sn.COLUMN1ROW1=3;Object.defineProperties(sn.prototype,{length:{get:function(){return sn.packedLength}}});sn.prototype.clone=function(e){return sn.clone(this,e)};sn.prototype.equals=function(e){return sn.equals(this,e)};sn.prototype.equalsEpsilon=function(e,t){return sn.equalsEpsilon(this,e,t)};sn.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var Gi=sn;var ac={POINTS:ee.POINTS,LINES:ee.LINES,LINE_LOOP:ee.LINE_LOOP,LINE_STRIP:ee.LINE_STRIP,TRIANGLES:ee.TRIANGLES,TRIANGLE_STRIP:ee.TRIANGLE_STRIP,TRIANGLE_FAN:ee.TRIANGLE_FAN};ac.isLines=function(e){return e===ac.LINES||e===ac.LINE_LOOP||e===ac.LINE_STRIP};ac.isTriangles=function(e){return e===ac.TRIANGLES||e===ac.TRIANGLE_STRIP||e===ac.TRIANGLE_FAN};ac.validate=function(e){return e===ac.POINTS||e===ac.LINES||e===ac.LINE_LOOP||e===ac.LINE_STRIP||e===ac.TRIANGLES||e===ac.TRIANGLE_STRIP||e===ac.TRIANGLE_FAN};var Me=Object.freeze(ac);function u6(e){e=e??V.EMPTY_OBJECT,this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=e.primitiveType??Me.TRIANGLES,this.boundingSphere=e.boundingSphere,this.geometryType=e.geometryType??jf.NONE,this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}u6.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var HPe=new Ae,WPe=new d,kne=new N,jPe=[new Ae,new Ae,new Ae],YPe=[new U,new U,new U],qPe=[new U,new U,new U],KPe=new d,XPe=new Le,JPe=new N,ZPe=new Gi;u6._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,HPe),s=Ae.toCartesian(r,n,WPe),a=kt.eastNorthUpToFixedFrame(s,n,kne),c=N.inverse(a,kne),u=YPe,f=jPe;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=KPe;for(o=0;o<3;o++)Ae.toCartesian(f[o],n,h),h=N.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let A=Le.fromAxisAngle(d.UNIT_Z,-t,XPe),g=J.fromQuaternion(A,JPe),m=e.length,_=Number.POSITIVE_INFINITY,y=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=N.multiplyByPointAsVector(c,e[o],h),h=J.multiplyByVector(g,h,h),_=Math.min(_,h.x),y=Math.min(y,h.y),C=Math.max(C,h.x),E=Math.max(E,h.y);let I=Gi.fromRotation(t,ZPe),b=qPe;b[0].x=_,b[0].y=y,b[1].x=_,b[1].y=E,b[2].x=C,b[2].y=y;let S=u[0],B=u[2].x-S.x,v=u[1].y-S.y;for(o=0;o<3;o++){let x=b[o];Gi.multiplyByVector(I,x,x),x.x=(x.x-S.x)/B,x.y=(x.y-S.y)/v}let P=b[0],M=b[1],L=b[2],p=new Array(6);return U.pack(P,p),U.pack(M,p,2),U.pack(L,p,4),p};var ht=u6;function $Pe(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.values=e.values}var De=$Pe;function eRe(e){e=e??V.EMPTY_OBJECT,this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var yn=eRe;var tRe={NONE:0,TOP:1,ALL:2},hn=Object.freeze(tRe);function Ns(e){e=e??V.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}Ns.POSITION_ONLY=Object.freeze(new Ns({position:!0}));Ns.POSITION_AND_NORMAL=Object.freeze(new Ns({position:!0,normal:!0}));Ns.POSITION_NORMAL_AND_ST=Object.freeze(new Ns({position:!0,normal:!0,st:!0}));Ns.POSITION_AND_ST=Object.freeze(new Ns({position:!0,st:!0}));Ns.POSITION_AND_COLOR=Object.freeze(new Ns({position:!0,color:!0}));Ns.ALL=Object.freeze(new Ns({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));Ns.DEFAULT=Ns.POSITION_NORMAL_AND_ST;Ns.packedLength=6;Ns.pack=function(e,t,n){return n=n??0,t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};Ns.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ns),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};Ns.clone=function(e,t){if(l(e))return l(t)||(t=new Ns),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Pe=Ns;var nRe=new d;function ku(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum,i=e.vertexFormat??Pe.DEFAULT;this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}ku.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new ku({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};ku.fromAxisAlignedBoundingBox=function(e){return new ku({minimum:e.minimum,maximum:e.maximum})};ku.packedLength=2*d.packedLength+Pe.packedLength+1;ku.pack=function(e,t,n){return n=n??0,d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Pe.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Pe.packedLength]=e._offsetAttribute??-1,t};var Gne=new d,zne=new d,Vne=new Pe,Une={minimum:Gne,maximum:zne,vertexFormat:Vne,offsetAttribute:void 0};ku.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Gne),o=d.unpack(e,t+d.packedLength,zne),r=Pe.unpack(e,t+2*d.packedLength,Vne),s=e[t+2*d.packedLength+Pe.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(Une.offsetAttribute=s===-1?void 0:s,new ku(Une))};ku.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new yn,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(72),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(36),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(24),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(36),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,nRe),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===hn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ht({attributes:o,indices:r,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var f6;ku.getUnitBox=function(){return l(f6)||(f6=ku.createGeometry(ku.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),f6};var cc=ku;var iRe=new d;function Lm(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Lm.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Lm({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Lm.fromAxisAlignedBoundingBox=function(e){return new Lm({minimum:e.minimum,maximum:e.maximum})};Lm.packedLength=2*d.packedLength+1;Lm.pack=function(e,t,n){return n=n??0,d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=e._offsetAttribute??-1,t};var Wne=new d,jne=new d,Hne={minimum:Wne,maximum:jne,offsetAttribute:void 0};Lm.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Wne),o=d.unpack(e,t+d.packedLength,jne),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(Hne.offsetAttribute=r===-1?void 0:r,new Lm(Hne))};Lm.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new yn,o=new Uint16Array(24),r=new Float64Array(24);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,iRe),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===hn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ht({attributes:i,indices:o,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var ah=Lm;function Xx(e,t,n,i){e=e??1,t=t??1,n=n??1,i=i??1,this.value=new Uint8Array([G.floatToByte(e),G.floatToByte(t),G.floatToByte(n),G.floatToByte(i)])}Object.defineProperties(Xx.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});Xx.fromColor=function(e){return new Xx(e.red,e.green,e.blue,e.alpha)};Xx.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};Xx.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var $t=Xx;function wB(e,t){e=e??0,t=t??Number.MAX_VALUE,this.value=new Float32Array([e,t])}Object.defineProperties(wB.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});wB.fromDistanceDisplayCondition=function(e){return new wB(e.near,e.far)};wB.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Kn=wB;function oRe(e){e=e??V.EMPTY_OBJECT,this.geometry=e.geometry,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Pt=oRe;function cr(e){e=e??V.EMPTY_OBJECT,this.start=l(e.start)?K.clone(e.start):new K,this.stop=l(e.stop)?K.clone(e.stop):new K,this.data=e.data,this.isStartIncluded=e.isStartIncluded??!0,this.isStopIncluded=e.isStopIncluded??!0}Object.defineProperties(cr.prototype,{isEmpty:{get:function(){let e=K.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var Jx={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};cr.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new me("options.iso8601 is an invalid ISO 8601 interval.");let i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(Jx.start=i,Jx.stop=o,Jx.isStartIncluded=r,Jx.isStopIncluded=s,Jx.data=a,new cr(Jx))};cr.toIso8601=function(e,t){return`${K.toIso8601(e.start,t)}/${K.toIso8601(e.stop,t)}`};cr.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new cr(e)};cr.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equals(e.start,t.start)&&K.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};cr.equalsEpsilon=function(e,t,n,i){return n=n??0,e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equalsEpsilon(e.start,t.start,n)&&K.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};cr.intersect=function(e,t,n,i){if(!l(t))return cr.clone(cr.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=K.greaterThanOrEquals(s,o)&&K.greaterThanOrEquals(r,s),u=!c&&K.lessThanOrEquals(s,o)&&K.lessThanOrEquals(o,a);if(!c&&!u)return cr.clone(cr.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,A=t.isStartIncluded,g=t.isStopIncluded,m=K.lessThan(r,a);return l(n)||(n=new cr),n.start=c?s:o,n.isStartIncluded=f&&A||!K.equals(s,o)&&(c&&A||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!K.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};cr.contains=function(e,t){if(e.isEmpty)return!1;let n=K.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=K.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};cr.prototype.clone=function(e){return cr.clone(this,e)};cr.prototype.equals=function(e,t){return cr.equals(this,e,t)};cr.prototype.equalsEpsilon=function(e,t,n){return cr.equalsEpsilon(this,e,t,n)};cr.prototype.toString=function(){return cr.toIso8601(this)};cr.EMPTY=Object.freeze(new cr({start:new K,stop:new K,isStartIncluded:!1,isStopIncluded:!1}));var Pn=cr;var Yne=Object.freeze(K.fromIso8601("0000-01-01T00:00:00Z")),qne=Object.freeze(K.fromIso8601("9999-12-31T24:00:00Z")),rRe=Object.freeze(new Pn({start:Yne,stop:qne})),sRe={MINIMUM_VALUE:Yne,MAXIMUM_VALUE:qne,MAXIMUM_INTERVAL:rRe},je=sRe;function BB(e,t,n){e=e??0,t=t??0,n=n??0,this.value=new Float32Array([e,t,n])}Object.defineProperties(BB.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});BB.fromCartesian3=function(e){return new BB(e.x,e.y,e.z)};BB.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var uo=BB;function xG(e){e=e??!0,this.value=xG.toValue(e)}Object.defineProperties(xG.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});xG.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var wn=xG;var DB=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec3 v_tangentEC; +in vec3 v_bitangentEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC); + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = tangentToEyeMatrix; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var vB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec3 tangent; +in vec3 bitangent; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec3 v_tangentEC; +out vec3 v_bitangentEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_tangentEC = czm_normal * tangent; // tangent in eye coordinates + v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var PB=`in vec3 v_positionEC; +in vec3 v_normalEC; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var RB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var MB=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var NB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var aRe={ADD:ee.FUNC_ADD,SUBTRACT:ee.FUNC_SUBTRACT,REVERSE_SUBTRACT:ee.FUNC_REVERSE_SUBTRACT,MIN:ee.MIN,MAX:ee.MAX},lc=Object.freeze(aRe);var cRe={ZERO:ee.ZERO,ONE:ee.ONE,SOURCE_COLOR:ee.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:ee.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:ee.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:ee.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:ee.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:ee.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:ee.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:ee.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:ee.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:ee.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:ee.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:ee.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:ee.SRC_ALPHA_SATURATE},Oo=Object.freeze(cRe);var lRe={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.SOURCE_ALPHA,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.SOURCE_ALPHA,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE,functionDestinationAlpha:Oo.ONE})},pn=Object.freeze(lRe);var uRe={FRONT:ee.FRONT,BACK:ee.BACK,FRONT_AND_BACK:ee.FRONT_AND_BACK},Mi=Object.freeze(uRe);function Zx(e){e=e??V.EMPTY_OBJECT,this.material=e.material,this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=e.closed??!1}Object.defineProperties(Zx.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});Zx.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(` +`)};Zx.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};Zx.prototype.getRenderState=function(){let e=this.isTranslucent(),t=ze(this.renderState,!1);return e?(t.depthMask=!1,t.blending=pn.ALPHA_BLEND):t.depthMask=!0,t};Zx.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=pn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:Mi.BACK}),l(n)&&(i=Tt(n,i,!0)),i};var po=Zx;function fRe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Xn=fRe;function $x(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties($x.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});$x.clone=function(e){if(l(e))return new $x(e._format,e._datatype,e._width,e._height,e._buffer)};$x.prototype.clone=function(){return $x.clone(this)};var LB=$x;var Kne=xr(Ou(),1);function Xne(){if(!l(Oa._canTransferArrayBuffer)){let e=m6("transferTypedArrayTest");e.postMessage=e.webkitPostMessage??e.postMessage;let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return Oa._canTransferArrayBuffer=!1,Oa._canTransferArrayBuffer}Oa._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),Oa._canTransferArrayBuffer=s}})}return Oa._canTransferArrayBuffer}var h6=new _e;function d6(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function m6(e){let t=new Kne.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(g_(e))s=e;else if(!n){let a=fn(`${Oa._workerModulePrefix}/${i}.js`);g_(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=d6(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${d6(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=d6(a),new Worker(r,o)}if(r=e,n||(r=fn(`${Oa._workerModulePrefix+i}.js`)),!Wt.supportsEsmWebWorkers())throw new ce("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function dRe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!Wt.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new ce(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=fn(t.fallbackModulePath),n}n.wasmBinaryFile=fn(t.wasmBinaryFile);let i=await we.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function Oa(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var hRe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new ce(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new me(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),h6.raiseEvent(s),i(s)}else h6.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},mRe=[];async function ARe(e,t,n){let i=await Promise.resolve(Xne());l(n)?i||(n.length=0):n=mRe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",hRe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:fn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function pRe(e,t,n){++e._activeTasks;try{let i=await ARe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}Oa.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=m6(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return pRe(this,e,t)};Oa.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=m6(this._workerPath),i=await dRe(this,e),o=await Promise.resolve(Xne()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new ce("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};Oa.prototype.isDestroyed=function(){return!1};Oa.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};Oa.taskCompletedEvent=h6;Oa._defaultWorkerModulePrefix="Workers/";Oa._workerModulePrefix=Oa._defaultWorkerModulePrefix;Oa._canTransferArrayBuffer=void 0;var di=Oa;function tp(){}tp._transcodeTaskProcessor=new di("transcodeKTX2",Number.POSITIVE_INFINITY);tp._readyPromise=void 0;function gRe(){let e=tp._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return tp._transcodeTaskProcessor;throw new ce("KTX2 transcoder could not be initialized.")});tp._readyPromise=e}tp.transcode=function(e,t){return l(tp._readyPromise)||gRe(),tp._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new LB(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var OB=tp;var Jne;Zne.setKTX2SupportedFormats=function(e,t,n,i,o,r){Jne={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function Zne(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=we.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return OB.transcode(n,Jne)})}var $l=Zne;var go={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};go.getMathType=function(e){switch(e){case go.SCALAR:return Number;case go.VEC2:return U;case go.VEC3:return d;case go.VEC4:return se;case go.MAT2:return Gi;case go.MAT3:return J;case go.MAT4:return N}};go.getNumberOfComponents=function(e){switch(e){case go.SCALAR:return 1;case go.VEC2:return 2;case go.VEC3:return 3;case go.VEC4:case go.MAT2:return 4;case go.MAT3:return 9;case go.MAT4:return 16}};go.getAttributeLocationCount=function(e){switch(e){case go.SCALAR:case go.VEC2:case go.VEC3:case go.VEC4:return 1;case go.MAT2:return 2;case go.MAT3:return 3;case go.MAT4:return 4}};go.getGlslType=function(e){switch(e){case go.SCALAR:return"float";case go.VEC2:return"vec2";case go.VEC3:return"vec3";case go.VEC4:return"vec4";case go.MAT2:return"mat2";case go.MAT3:return"mat3";case go.MAT4:return"mat4"}};var zt=Object.freeze(go);var $ne=1/256,eie=256,Ro={};Ro.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*D.signNotZero(i),n.y=(1-Math.abs(i))*D.signNotZero(o)}return n.x=D.toSNorm(n.x,t),n.y=D.toSNorm(n.y,t),n};Ro.octEncode=function(e,t){return Ro.octEncodeInRange(e,255,t)};var FB=new U,tie=new Uint8Array(1);function bG(e){return tie[0]=e,tie[0]}Ro.octEncodeToCartesian4=function(e,t){return Ro.octEncodeInRange(e,65535,FB),t.x=bG(FB.x*$ne),t.y=bG(FB.x),t.z=bG(FB.y*$ne),t.w=bG(FB.y),t};Ro.octDecodeInRange=function(e,t,n,i){if(i.x=D.fromSNorm(e,n),i.y=D.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*D.signNotZero(o),i.y=(1-Math.abs(o))*D.signNotZero(i.y)}return d.normalize(i,i)};Ro.octDecode=function(e,t,n){return Ro.octDecodeInRange(e,t,255,n)};Ro.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*eie+i,a=o*eie+r;return Ro.octDecodeInRange(s,a,65535,t)};Ro.octPackFloat=function(e){return 256*e.x+e.y};var p6=new U;Ro.octEncodeFloat=function(e){return Ro.octEncode(e,p6),Ro.octPackFloat(p6)};Ro.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return Ro.octDecode(i,o,t)};Ro.octPack=function(e,t,n,i){let o=Ro.octEncodeFloat(e),r=Ro.octEncodeFloat(t),s=Ro.octEncode(n,p6);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};Ro.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;Ro.octDecodeFloat(s,t),Ro.octDecodeFloat(c,n),Ro.octDecode(r,a,i)};Ro.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};Ro.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function A6(e){return e>>1^-(e&1)}Ro.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=A6(e[a]),r+=A6(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=A6(n[a]),n[a]=s)};Ro.dequantize=function(e,t,n,i){let o=zt.getNumberOfComponents(n),r;switch(t){case q.BYTE:r=127;break;case q.UNSIGNED_BYTE:r=255;break;case q.SHORT:r=32767;break;case q.UNSIGNED_SHORT:r=65535;break;case q.INT:r=2147483647;break;case q.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};Ro.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,A=3*a;t[A]=u*r,t[A+1]=f*s,t[A+2]=h*r}return t};var On=Ro;var nie=new d,iie=new d,oie=new d;function _Re(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,A;if(l(t.z)){if(d.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,nie),s=d.subtract(i,t,iie),a=d.subtract(e,t,oie),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),A=d.dot(s,a)}else{if(U.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(U.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(U.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=U.subtract(n,t,nie),s=U.subtract(i,t,iie),a=U.subtract(e,t,oie),c=U.dot(r,r),u=U.dot(r,s),f=U.dot(r,a),h=U.dot(s,s),A=U.dot(s,a)}o.y=h*f-u*A,o.z=c*A-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var JC=_Re;function Om(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}Om.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var np={high:0,low:0};Om.fromCartesian=function(e,t){l(t)||(t=new Om);let n=t.high,i=t.low;return Om.encode(e.x,np),n.x=np.high,i.x=np.low,Om.encode(e.y,np),n.y=np.high,i.y=np.low,Om.encode(e.z,np),n.z=np.high,i.z=np.low,t};var g6=new Om;Om.writeElements=function(e,t,n){Om.fromCartesian(e,g6);let i=g6.high,o=g6.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ei=Om;var la={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT};la.getSizeInBytes=function(e){switch(e){case la.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case la.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case la.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};la.fromSizeInBytes=function(e){switch(e){case 2:return la.UNSIGNED_SHORT;case 4:return la.UNSIGNED_INT;case 1:return la.UNSIGNED_BYTE}};la.validate=function(e){return l(e)&&(e===la.UNSIGNED_BYTE||e===la.UNSIGNED_SHORT||e===la.UNSIGNED_INT)};la.createTypedArray=function(e,t){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};la.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};la.fromTypedArray=function(e){if(e instanceof Uint8Array)return la.UNSIGNED_BYTE;if(e instanceof Uint16Array)return la.UNSIGNED_SHORT;if(e instanceof Uint32Array)return la.UNSIGNED_INT};var Oe=Object.freeze(la);var _6={};_6.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function rie(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}_6.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<D.EPSILON14)return[0,0];if(c>u&&u/c<D.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=rie(o,-r,D.EPSILON14);if(s<0)return[];let a=-.5*rie(t,D.sign(t)*Math.sqrt(s),D.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var cl=_6;var C6={};C6.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function y6(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,A=o*s-f,g=o*a-r*s,m=r*a-h,_=4*A*m-g*g,y,C;if(_<0){let H,W,Z;f*u>=c*h?(H=o,W=A,Z=-2*r*A+o*g):(H=a,W=m,Z=-a*g+2*s*m);let $=-(Z<0?-1:1)*Math.abs(H)*Math.sqrt(-_);C=-Z+$;let X=C/2,he=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),ge=C===$?-he:-W/he;return y=W<=0?he+ge:-Z/(he*he+ge*ge+W),f*u>=c*h?[(y-r)/o]:[-a/(y+s)]}let E=A,I=-2*r*A+o*g,b=m,S=-a*g+2*s*m,B=Math.sqrt(_),v=Math.sqrt(3)/2,P=Math.abs(Math.atan2(o*B,-I)/3);y=2*Math.sqrt(-E);let M=Math.cos(P);C=y*M;let L=y*(-M/2-v*Math.sin(P)),p=C+L>2*r?C-r:L-r,x=o,T=p/x;P=Math.abs(Math.atan2(a*B,-S)/3),y=2*Math.sqrt(-b),M=Math.cos(P),C=y*M,L=y*(-M/2-v*Math.sin(P));let w=-a,R=C+L<2*s?C+s:L+s,O=w/R,k=x*R,Q=-p*R-x*w,z=p*w,F=(s*Q-r*z)/(-r*Q+s*k);return T<=F?T<=O?F<=O?[T,F,O]:[T,O,F]:[O,T,F]:T<=O?[F,T,O]:F<=O?[F,O,T]:[O,F,T]}C6.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return cl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=cl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return y6(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):y6(e,t,0,i);if(i===0)return o=cl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return y6(e,t,n,i)};var ZC=C6;var E6={};E6.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,A=h*i,g=o*o,m=g*o;return a*u*h-4*c*A-4*e*f*h+18*e*t*n*A-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function ch(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=ZC.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<D.EPSILON14){let h=cl.computeRealRoots(1,r,a);if(h.length===2){let A=h[0],g=h[1],m;if(A>=0&&g>=0){let _=Math.sqrt(A),y=Math.sqrt(g);return[u-y,u-_,u+_,u+y]}else{if(A>=0&&g<0)return m=Math.sqrt(A),[u-m,u+m];if(A<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),A=(r+f-s/h)/2,g=(r+f+s/h)/2,m=cl.computeRealRoots(1,h,A),_=cl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,_.length!==0?(_[0]+=u,_[1]+=u,m[1]<=_[0]?[m[0],m[1],_[0],_[1]]:_[1]<=m[0]?[_[0],_[1],m[0],m[1]]:m[0]>=_[0]&&m[1]<=_[1]?[_[0],m[0],m[1],_[1]]:_[0]>=m[0]&&_[1]<=m[1]?[m[0],_[0],_[1],m[1]]:m[0]>_[0]&&m[0]<_[1]?[_[0],m[0],_[1],m[1]]:[m[0],_[0],m[1],_[1]]):m):_.length!==0?(_[0]+=u,_[1]+=u,_):[]}}return[]}function QB(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=ZC.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],A=t-h,g=A*A,m=e/2,_=A/2,y=g-4*i,C=g+4*Math.abs(i),E=s-4*h,I=s+4*Math.abs(h),b,S;if(h<0||y*I<E*C){let x=Math.sqrt(E);b=x/2,S=x===0?0:(e*_-n)/x}else{let x=Math.sqrt(y);b=x===0?0:(e*_-n)/x,S=x/2}let B,v;m===0&&b===0?(B=0,v=0):D.sign(m)===D.sign(b)?(B=m+b,v=h/B):(v=m-b,B=h/v);let P,M;_===0&&S===0?(P=0,M=0):D.sign(_)===D.sign(S)?(P=_+S,M=i/P):(M=_-S,P=i/M);let L=cl.computeRealRoots(1,B,P),p=cl.computeRealRoots(1,v,M);if(L.length!==0)return p.length!==0?L[1]<=p[0]?[L[0],L[1],p[0],p[1]]:p[1]<=L[0]?[p[0],p[1],L[0],L[1]]:L[0]>=p[0]&&L[1]<=p[1]?[p[0],L[0],L[1],p[1]]:p[0]>=L[0]&&p[1]<=L[1]?[L[0],p[0],p[1],L[1]]:L[0]>p[0]&&L[0]<p[1]?[p[0],L[0],p[1],L[1]]:[L[0],p[0],L[1],p[1]]:L;if(p.length!==0)return p}return[]}E6.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<D.EPSILON15)return ZC.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return ch(r,s,a,c);case 1:return QB(r,s,a,c);case 2:return QB(r,s,a,c);case 3:return ch(r,s,a,c);case 4:return ch(r,s,a,c);case 5:return QB(r,s,a,c);case 6:return ch(r,s,a,c);case 7:return ch(r,s,a,c);case 8:return QB(r,s,a,c);case 9:return ch(r,s,a,c);case 10:return ch(r,s,a,c);case 11:return QB(r,s,a,c);case 12:return ch(r,s,a,c);case 13:return ch(r,s,a,c);case 14:return ch(r,s,a,c);case 15:return ch(r,s,a,c);default:return}};var kB=E6;function TG(e,t){t=d.clone(t??d.ZERO),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(e??d.ZERO),this.direction=t}TG.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new TG(e.origin,e.direction)};TG.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var In=TG;var $o={};$o.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var yRe=new d,CRe=new d,hie=new d,sie=new d,aie=new d;$o.rayTriangleParametric=function(e,t,n,i,o){o=o??!1;let r=e.origin,s=e.direction,a=d.subtract(n,t,yRe),c=d.subtract(i,t,CRe),u=d.cross(s,c,hie),f=d.dot(a,u),h,A,g,m,_;if(o){if(f<D.EPSILON6||(h=d.subtract(r,t,sie),g=d.dot(h,u),g<0||g>f)||(A=d.cross(h,a,aie),m=d.dot(s,A),m<0||g+m>f))return;_=d.dot(c,A)/f}else{if(Math.abs(f)<D.EPSILON6)return;let y=1/f;if(h=d.subtract(r,t,sie),g=d.dot(h,u)*y,g<0||g>1||(A=d.cross(h,a,aie),m=d.dot(s,A)*y,m<0||g+m>1))return;_=d.dot(c,A)*y}return _};$o.rayTriangle=function(e,t,n,i,o,r){let s=$o.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var ERe=new In;$o.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=ERe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=$o.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function IRe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var xRe={root0:0,root1:0};function mie(e,t,n){l(n)||(n=new sc);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,hie),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=IRe(c,u,f,xRe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}$o.raySphere=function(e,t,n){if(n=mie(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var bRe=new In;$o.lineSegmentSphere=function(e,t,n,i){let o=bRe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=mie(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var TRe=new d,SRe=new d;$o.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,TRe),o=d.multiplyComponents(n,e.direction,SRe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let A=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,A<u)return;if(A>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,_=a/h;return m<_?new sc(m,_):{start:_,stop:m}}let g=Math.sqrt(a/c);return new sc(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new sc(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new sc(0,-s/c)};function $C(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}$o.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[J.COLUMN1ROW1]-e[J.COLUMN2ROW2])*s,c=o*(i*$C(e[J.COLUMN1ROW0],e[J.COLUMN0ROW1],D.EPSILON15)+t.y),u=e[J.COLUMN0ROW0]*r+e[J.COLUMN2ROW2]*s+i*t.x+n,f=s*$C(e[J.COLUMN2ROW1],e[J.COLUMN1ROW2],D.EPSILON15),h=o*(i*$C(e[J.COLUMN2ROW0],e[J.COLUMN0ROW2])+t.z),A,g=[];if(h===0&&f===0){if(A=cl.computeRealRoots(a,c,u),A.length===0)return g;let P=A[0],M=Math.sqrt(Math.max(1-P*P,0));if(g.push(new d(i,o*P,o*-M)),g.push(new d(i,o*P,o*M)),A.length===2){let L=A[1],p=Math.sqrt(Math.max(1-L*L,0));g.push(new d(i,o*L,o*-p)),g.push(new d(i,o*L,o*p))}return g}let m=h*h,_=f*f,y=a*a,C=h*f,E=y+_,I=2*(c*a+C),b=2*u*a+c*c-_+m,S=2*(u*c-C),B=u*u-m;if(E===0&&I===0&&b===0&&S===0)return g;A=kB.computeRealRoots(E,I,b,S,B);let v=A.length;if(v===0)return g;for(let P=0;P<v;++P){let M=A[P],L=M*M,p=Math.max(1-L,0),x=Math.sqrt(p),T;D.sign(a)===D.sign(u)?T=$C(a*L+u,c*M,D.EPSILON12):D.sign(u)===D.sign(c*M)?T=$C(a*L,c*M+u,D.EPSILON12):T=$C(a*L+c*M,u,D.EPSILON12);let w=$C(f*M,h,D.EPSILON15),R=T*w;R<0?g.push(new d(i,o*M,o*x)):R>0?g.push(new d(i,o*M,o*-x)):x!==0?(g.push(new d(i,o*M,o*-x)),g.push(new d(i,o*M,o*x)),++P):g.push(new d(i,o*M,o*x))}return g};var I6=new d,cie=new d,lie=new d,SG=new d,wRe=new d,BRe=new J,DRe=new J,vRe=new J,PRe=new J,RRe=new J,uie=new J,fie=new J,die=new d,MRe=new d,NRe=new Ae;$o.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let B=t.geodeticSurfaceNormal(n,I6);if(d.dot(i,B)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,I6),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,SG),c=d.normalize(d.cross(a,s,cie),cie),u=d.normalize(d.cross(s,c,lie),lie),f=BRe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=J.transpose(f,DRe),A=J.fromScale(t.radii,vRe),g=J.fromScale(t.oneOverRadii,PRe),m=RRe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let _=J.multiply(J.multiply(h,g,uie),m,uie),y=J.multiply(J.multiply(_,A,fie),f,fie),C=J.multiplyByVector(_,n,wRe),E=$o.quadraticVectorExpression(y,d.negate(C,I6),0,0,1),I,b,S=E.length;if(S>0){let B=d.clone(d.ZERO,MRe),v=Number.NEGATIVE_INFINITY;for(let M=0;M<S;++M){I=J.multiplyByVector(A,J.multiplyByVector(f,E[M],die),die);let L=d.normalize(d.subtract(I,n,SG),SG),p=d.dot(L,i);p>v&&(v=p,B=d.clone(I,B))}let P=t.cartesianToCartographic(B,NRe);return v=D.clamp(v,0,1),b=d.magnitude(d.subtract(B,n,SG))*Math.sqrt(1-v*v),b=o?-b:b,P.height=b,t.cartographicToCartesian(P,new d)}};var LRe=new d;$o.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,LRe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};$o.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return $o.lineSegmentPlane(e,t,i,f),$o.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return $o.lineSegmentPlane(t,n,i,f),$o.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return $o.lineSegmentPlane(n,e,i,f),$o.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return $o.lineSegmentPlane(e,n,i,f),$o.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return $o.lineSegmentPlane(n,t,i,f),$o.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return $o.lineSegmentPlane(t,e,i,f),$o.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var hi=$o;function ua(e,t){this.normal=d.clone(e),this.distance=t}ua.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new ua(t,i)};var ORe=new d;ua.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,ORe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new ua(n,i)};ua.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var FRe=new d;ua.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=ua.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,FRe);return d.subtract(t,o,n)};var QRe=new N,kRe=new se,URe=new d;ua.transform=function(e,t,n){let i=e.normal,o=e.distance,r=N.inverseTranspose(t,QRe),s=se.fromElements(i.x,i.y,i.z,o,kRe);s=N.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,URe);return s=se.divideByScalar(s,d.magnitude(a),s),ua.fromCartesian4(s,n)};ua.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new ua(e.normal,e.distance)};ua.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};ua.ORIGIN_XY_PLANE=Object.freeze(new ua(d.UNIT_Z,0));ua.ORIGIN_YZ_PLANE=Object.freeze(new ua(d.UNIT_X,0));ua.ORIGIN_ZX_PLANE=Object.freeze(new ua(d.UNIT_Y,0));var mn=ua;var x6={};x6.calculateACMR=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};x6.tipsify=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(p,x,T,w){for(;x.length>=1;){let R=x[x.length-1];if(x.splice(x.length-1,1),p[R].numLiveTriangles>0)return R}for(;o<w;){if(p[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(p,x,T,w,R,O,k){let Q=-1,z,F=-1,H=0;for(;H<T.length;){let W=T[H];w[W].numLiveTriangles&&(z=0,R-w[W].timeStamp+2*w[W].numLiveTriangles<=x&&(z=R-w[W].timeStamp),(z>F||F===-1)&&(F=z,Q=W)),++H}return Q===-1?r(w,O,p,k):Q}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let A=[],g;for(g=0;g<c;g++)A[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)A[t[u]].vertexTriangles.push(m),++A[t[u]].numLiveTriangles,A[t[u+1]].vertexTriangles.push(m),++A[t[u+1]].numLiveTriangles,A[t[u+2]].vertexTriangles.push(m),++A[t[u+2]].numLiveTriangles,++m,u+=3;let _=0,y=i+1;o=1;let C=[],E=[],I,b,S=0,B=[],v=a/3,P=[];for(g=0;g<v;g++)P[g]=!1;let M,L;for(;_!==-1;){C=[],b=A[_],L=b.vertexTriangles.length;for(let p=0;p<L;++p)if(m=b.vertexTriangles[p],!P[m]){P[m]=!0,u=m+m+m;for(let x=0;x<3;++x)M=t[u],C.push(M),E.push(M),B[S]=M,++S,I=A[M],--I.numLiveTriangles,y-I.timeStamp>i&&(I.timeStamp=y,++y),++u}_=s(t,i,C,A,y,E,c)}return B};var UB=x6;var ll={};function MG(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function GRe(e){let t=e.length,n=t/3*6,i=Oe.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)MG(i,o,e[r],e[r+1],e[r+2]);return i}function zRe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Oe.createTypedArray(t,n);MG(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)MG(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function VRe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Oe.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)MG(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}ll.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Me.TRIANGLES:e.indices=GRe(t);break;case Me.TRIANGLE_STRIP:e.indices=zRe(t);break;case Me.TRIANGLE_FAN:e.indices=VRe(t);break}e.primitiveType=Me.LINES}return e};ll.createLineSegmentsForVectors=function(e,t,n){t=t??"normal",n=n??1e4;let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new le(u.center,u.radius+n)),new ht({attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Me.LINES,boundingSphere:c})};ll.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};ll.reorderForPreVertexCache=function(e){let t=ht.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let A=0;A<t;A++)i[A]=-1;let o=n,r=o.length,s=Oe.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let A in h)if(h.hasOwnProperty(A)&&l(h[A])&&l(h[A].values)){let g=h[A],m=g.values,_=0,y=g.componentsPerAttribute,C=q.createTypedArray(g.componentDatatype,u*y);for(;_<t;){let E=i[_];if(E!==-1)for(let I=0;I<y;I++)C[y*E+I]=m[y*_+I];++_}g.values=C}}return e};ll.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Me.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=UB.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function Aie(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new De({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function HRe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}ll.fitToUnsignedShortIndices=function(e){let t=[],n=ht.computeNumberOfVertices(e);if(l(e.indices)&&n>=D.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=Aie(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Me.TRIANGLES?u=3:e.primitiveType===Me.LINES?u=2:e.primitiveType===Me.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let A=a[f+h],g=i[A];l(g)||(g=r++,i[A]=g,HRe(s,e.attributes,A)),o.push(g)}r+u>=D.SIXTY_FOUR_KILOBYTES&&(t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=Aie(e.attributes))}o.length!==0&&t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var pie=new d,WRe=new Ae;ll.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Ui;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,pie),A=s.cartesianToCartographic(h,WRe),g=o.project(A,pie);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var b6={high:0,low:0};ll.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)ei.encode(r[f],b6),a[f]=b6.high,c[f]=b6.low;let u=o.componentsPerAttribute;return e.attributes[n]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var uh=new d;function T6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,uh),N.multiplyByPoint(e,uh,uh),d.pack(uh,n,o)}}function S6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,uh),J.multiplyByVector(e,uh,uh),uh=d.normalize(uh,uh),d.pack(uh,n,o)}}var wG=new N,BG=new J;ll.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(N.equals(t,N.IDENTITY))return e;let n=e.geometry.attributes;T6(t,n.position),T6(t,n.prevPosition),T6(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(N.inverse(t,wG),N.transpose(wG,wG),N.getMatrix3(wG,BG),S6(BG,n.normal),S6(BG,n.tangent),S6(BG,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=le.transform(i,t,i)),e.modelMatrix=N.clone(N.IDENTITY),e};function jRe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new De({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:q.createTypedArray(s.componentDatatype,a)}))}return i}var YRe=new d;function w6(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=jRe(e,t),h,A,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(A=e[o][t].attributes[i].values,g=A.length,r=0;r<g;++r)h[s++]=A[r];let m;if(c){let E=0;for(o=0;o<n;++o)E+=e[o][t].indices.length;let I=ht.computeNumberOfVertices(new ht({attributes:f,primitiveType:Me.POINTS})),b=Oe.createTypedArray(I,E),S=0,B=0;for(o=0;o<n;++o){let v=e[o][t].indices,P=v.length;for(s=0;s<P;++s)b[S++]=B+v[s];B+=ht.computeNumberOfVertices(e[o][t])}m=b}let _=new d,y=0,C;for(o=0;o<n;++o){if(C=e[o][t].boundingSphere,!l(C)){_=void 0;break}d.add(C.center,_,_)}if(l(_))for(d.divideByScalar(_,n,_),o=0;o<n;++o){C=e[o][t].boundingSphere;let E=d.magnitude(d.subtract(C.center,_,YRe))+C.radius;E>y&&(y=E)}return new ht({attributes:f,indices:m,primitiveType:u,boundingSphere:l(_)?new le(_,y):void 0})}ll.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(w6(t,"geometry")),n.length>0&&(o.push(w6(n,"westHemisphereGeometry")),o.push(w6(n,"eastHemisphereGeometry"))),o};var Yf=new d,GB=new d,eb=new d,tb=new d;ll.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],_=t[u+1],y=t[u+2],C=m*3,E=_*3,I=y*3;GB.x=i[C],GB.y=i[C+1],GB.z=i[C+2],eb.x=i[E],eb.y=i[E+1],eb.z=i[E+2],tb.x=i[I],tb.y=i[I+1],tb.z=i[I+2],s[m].count++,s[_].count++,s[y].count++,d.subtract(eb,GB,eb),d.subtract(tb,GB,tb),a[f]=d.cross(eb,tb,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let A;for(u=0;u<r;u+=3){A=s[t[u]];let m=A.indexOffset+A.currentCount;c[m]=f,A.currentCount++,A=s[t[u+1]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,A=s[t[u+2]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(A=s[u],d.clone(d.ZERO,Yf),A.count>0){for(f=0;f<A.count;f++)d.add(Yf,a[c[A.indexOffset+f]],Yf);d.equalsEpsilon(d.ZERO,Yf,D.EPSILON10)&&d.clone(a[c[A.indexOffset]],Yf)}d.equalsEpsilon(d.ZERO,Yf,D.EPSILON10)&&(Yf.z=1),d.normalize(Yf,Yf),g[m]=Yf.x,g[m+1]=Yf.y,g[m+2]=Yf.z}return e.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e};var qRe=new d,gie=new d,KRe=new d;ll.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,A;for(u=0;u<a;u+=3){let _=n[u],y=n[u+1],C=n[u+2];f=_*3,h=y*3,A=C*3;let E=_*2,I=y*2,b=C*2,S=i[f],B=i[f+1],v=i[f+2],P=r[E],M=r[E+1],L=r[I+1]-M,p=r[b+1]-M,x=1/((r[I]-P)*p-(r[b]-P)*L),T=(p*(i[h]-S)-L*(i[A]-S))*x,w=(p*(i[h+1]-B)-L*(i[A+1]-B))*x,R=(p*(i[h+2]-v)-L*(i[A+2]-v))*x;c[f]+=T,c[f+1]+=w,c[f+2]+=R,c[h]+=T,c[h+1]+=w,c[h+2]+=R,c[A]+=T,c[A+1]+=w,c[A+2]+=R}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,A=f+2;let _=d.fromArray(o,f,qRe),y=d.fromArray(c,f,KRe),C=d.dot(_,y);d.multiplyByScalar(_,C,gie),d.normalize(d.subtract(y,gie,y),y),g[f]=y.x,g[h]=y.y,g[A]=y.z,d.normalize(d.cross(_,y,y),y),m[f]=y.x,m[h]=y.y,m[A]=y.z}return e.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m}),e};var zB=new U,lh=new d,_ie=new d,yie=new d,DG=new U;ll.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let B=t.values;i=B.length/3;let v=new Float32Array(i*2),P=0;for(n=0;n<i;++n){if(d.fromArray(B,n*3,lh),d.equals(lh,d.ZERO)){P+=2;continue}DG=On.octEncodeInRange(lh,65535,DG),v[P++]=DG.x,v[P++]=DG.y}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:v}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),A,g,m,_;s&&(A=o.values),a&&(g=r.values),f&&(m=c.values),h&&(_=u.values),i=(s?A.length:g.length)/(s?3:2);let E=i,I=a&&s?2:1;I+=f||h?1:0,E*=I;let b=new Float32Array(E),S=0;for(n=0;n<i;++n){a&&(U.fromArray(g,n*2,zB),b[S++]=On.compressTextureCoordinates(zB));let B=n*3;s&&l(m)&&l(_)?(d.fromArray(A,B,lh),d.fromArray(m,B,_ie),d.fromArray(_,B,yie),On.octPack(lh,_ie,yie,zB),b[S++]=zB.x,b[S++]=zB.y):(s&&(d.fromArray(A,B,lh),b[S++]=On.octEncodeFloat(lh)),f&&(d.fromArray(m,B,lh),b[S++]=On.octEncodeFloat(lh)),h&&(d.fromArray(_,B,lh),b[S++]=On.octEncodeFloat(lh)))}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:I,values:b}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function XRe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function JRe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function ZRe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function $Re(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function eMe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Me.LINES,e}function tMe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Me.LINES,e}function nMe(e){switch(e.primitiveType){case Me.TRIANGLE_FAN:return JRe(e);case Me.TRIANGLE_STRIP:return ZRe(e);case Me.TRIANGLES:return XRe(e);case Me.LINE_STRIP:return eMe(e);case Me.LINE_LOOP:return tMe(e);case Me.LINES:return $Re(e)}return e}function x_(e,t){Math.abs(e.y)<D.EPSILON6&&(t?e.y=-D.EPSILON6:e.y=D.EPSILON6)}function iMe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){x_(e,e.y<0),x_(t,t.y<0),x_(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=D.sign(e.y):s=D.sign(n.y):o>r?s=D.sign(t.y):s=D.sign(n.y);let a=s<0;x_(e,a),x_(t,a),x_(n,a)}var Cie=new d;function qf(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,Cie),e.y/(e.y-t.y),Cie),n),d.clone(n,i),x_(n,!0),x_(i,!1)}var eE=new d,tE=new d,nE=new d,iE=new d,B6={positions:new Array(7),indices:new Array(9)};function oMe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;iMe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=B6.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(qf(e,t,eE,nE),qf(e,n,tE,iE),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(qf(t,n,eE,nE),qf(t,e,tE,iE),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(qf(n,e,eE,nE),qf(n,t,tE,iE),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(qf(n,e,eE,nE),qf(n,t,tE,iE),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(qf(t,n,eE,nE),qf(t,e,tE,iE),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(qf(e,t,eE,nE),qf(e,n,tE,iE),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=B6.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=eE,c[4]=tE,c[5]=nE,c[6]=iE,c.length=7),B6}function Eie(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=q.createTypedArray(r.componentDatatype,r.values)}let i=ht.computeNumberOfVertices(e);return e.indices=Oe.createTypedArray(i,e.indices),t&&(e.boundingSphere=le.fromVertices(n.position.values)),e}function ib(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new De({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ht({attributes:n,indices:[],primitiveType:e.primitiveType})}function R6(e,t,n){let i=l(e.geometry.boundingSphere);t=Eie(t,i),n=Eie(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function M6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,A){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),_=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(_,c.z,_);let y=e.add(g,m,g);e.add(y,_,y),A&&e.normalize(y,y),e.pack(y,f,h*t)}}var rMe=M6(se,4),RG=M6(d,3),wie=M6(U,2),sMe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>D.EPSILON6?1:0},VB=new d,D6=new d,v6=new d,aMe=new d;function vG(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let y=d.fromArray(o,e*3,VB),C=d.fromArray(o,t*3,D6),E=d.fromArray(o,n*3,v6),I=JC(i,y,C,E,aMe);if(l(I)){if(l(r)&&RG(e,t,n,I,r,h.normal.values,_,!0),l(u)){let b=d.fromArray(u,e*3,VB),S=d.fromArray(u,t*3,D6),B=d.fromArray(u,n*3,v6);d.multiplyByScalar(b,I.x,b),d.multiplyByScalar(S,I.y,S),d.multiplyByScalar(B,I.z,B);let v;!d.equals(b,d.ZERO)||!d.equals(S,d.ZERO)||!d.equals(B,d.ZERO)?(v=d.add(b,S,b),d.add(v,B,v),d.normalize(v,v)):(v=VB,v.x=0,v.y=0,v.z=0),d.pack(v,h.extrudeDirection.values,_*3)}if(l(f)&&sMe(e,t,n,I,f,h.applyOffset.values,_),l(s)&&RG(e,t,n,I,s,h.tangent.values,_,!0),l(a)&&RG(e,t,n,I,a,h.bitangent.values,_,!0),l(c)&&wie(e,t,n,I,c,h.st.values,_),g>0)for(let b=0;b<g;b++){let S=A[b];cMe(e,t,n,I,_,m[S],h[S])}}}function cMe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:rMe(e,t,n,i,c,u,o,!1);break;case 3:RG(e,t,n,i,c,u,o,!1);break;case 2:wie(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function Fm(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var lMe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function Iie(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let v in n)n.hasOwnProperty(v)&&!lMe[v]&&l(n[v])&&h.push(v);let A=h.length,g=ib(t),m=ib(t),_,y,C,E,I,b=[];b.length=i.length/3;let S=[];for(S.length=i.length/3,I=0;I<b.length;++I)b[I]=-1,S[I]=-1;let B=f.length;for(I=0;I<B;I+=3){let v=f[I],P=f[I+1],M=f[I+2],L=d.fromArray(i,v*3),p=d.fromArray(i,P*3),x=d.fromArray(i,M*3),T=oMe(L,p,x);if(l(T)&&T.positions.length>3){let w=T.positions,R=T.indices,O=R.length;for(let k=0;k<O;++k){let Q=R[k],z=w[Q];z.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=Fm(_,y,C,f,Q<3?I+Q:-1,z),vG(v,P,M,z,i,o,s,r,a,c,u,_,h,A,n,E)}}else l(T)&&(L=T.positions[0],p=T.positions[1],x=T.positions[2]),L.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=Fm(_,y,C,f,I,L),vG(v,P,M,L,i,o,s,r,a,c,u,_,h,A,n,E),E=Fm(_,y,C,f,I+1,p),vG(v,P,M,p,i,o,s,r,a,c,u,_,h,A,n,E),E=Fm(_,y,C,f,I+2,x),vG(v,P,M,x,i,o,s,r,a,c,u,_,h,A,n,E)}R6(e,m,g)}var Bie=mn.fromPointNormal(d.ZERO,d.UNIT_Y),uMe=new d,fMe=new d;function nb(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,VB);d.equalsEpsilon(a,n,D.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function xie(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=ib(t),a=ib(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let A=r[c],g=r[c+1],m=d.fromArray(i,A*3,VB),_=d.fromArray(i,g*3,D6),y;Math.abs(m.y)<D.EPSILON6&&(m.y<0?m.y=-D.EPSILON6:m.y=D.EPSILON6),Math.abs(_.y)<D.EPSILON6&&(_.y<0?_.y=-D.EPSILON6:_.y=D.EPSILON6);let C=s.attributes,E=s.indices,I=h,b=a.attributes,S=a.indices,B=f,v=hi.lineSegmentPlane(m,_,Bie,v6);if(l(v)){let P=d.multiplyByScalar(d.UNIT_Y,5*D.EPSILON9,uMe);m.y<0&&(d.negate(P,P),C=a.attributes,E=a.indices,I=f,b=s.attributes,S=s.indices,B=h);let M=d.add(v,P,fMe);y=Fm(C,E,I,r,c,m),nb(A,g,m,i,y,C,o),y=Fm(C,E,I,r,-1,M),nb(A,g,M,i,y,C,o),d.negate(P,P),d.add(v,P,M),y=Fm(b,S,B,r,-1,M),nb(A,g,M,i,y,b,o),y=Fm(b,S,B,r,c+1,_),nb(A,g,_,i,y,b,o)}else{let P,M,L;m.y<0?(P=a.attributes,M=a.indices,L=f):(P=s.attributes,M=s.indices,L=h),y=Fm(P,M,L,r,c,m),nb(A,g,m,i,y,P,o),y=Fm(P,M,L,r,c+1,_),nb(A,g,_,i,y,P,o)}}R6(e,a,s)}var bie=new U,dMe=new U,Die=new d,vie=new d,P6=new d,hMe=new d,mMe=new d,AMe=new d,Tie=new se;function Sie(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,Die);if(a.x>0)continue;let c=d.unpack(i,s,vie);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,P6);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var pMe=5*D.EPSILON9,PG=D.EPSILON6;function gMe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=ib(t),f=ib(t),h,A,g,m=!1,_=i.length/3;for(h=0;h<_;h+=4){let y=h,C=h+2,E=d.fromArray(i,y*3,Die),I=d.fromArray(i,C*3,vie);if(Math.abs(E.y)<PG)for(E.y=PG*(I.y<0?-1:1),i[h*3+1]=E.y,i[(h+1)*3+1]=E.y,A=y*3;A<y*3+12;A+=3)o[A]=i[h*3],o[A+1]=i[h*3+1],o[A+2]=i[h*3+2];if(Math.abs(I.y)<PG)for(I.y=PG*(E.y<0?-1:1),i[(h+2)*3+1]=I.y,i[(h+3)*3+1]=I.y,A=y*3;A<y*3+12;A+=3)r[A]=i[(h+2)*3],r[A+1]=i[(h+2)*3+1],r[A+2]=i[(h+2)*3+2];let b=u.attributes,S=u.indices,B=f.attributes,v=f.indices,P=hi.lineSegmentPlane(E,I,Bie,hMe);if(l(P)){m=!0;let M=d.multiplyByScalar(d.UNIT_Y,pMe,mMe);E.y<0&&(d.negate(M,M),b=f.attributes,S=f.indices,B=u.attributes,v=u.indices);let L=d.add(P,M,AMe);b.position.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.position.values.push(L.x,L.y,L.z),b.position.values.push(L.x,L.y,L.z),b.prevPosition.values.push(o[y*3],o[y*3+1],o[y*3+2]),b.prevPosition.values.push(o[y*3+3],o[y*3+4],o[y*3+5]),b.prevPosition.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),d.negate(M,M),d.add(P,M,L),B.position.values.push(L.x,L.y,L.z),B.position.values.push(L.x,L.y,L.z),B.position.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.nextPosition.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.nextPosition.values.push(r[C*3],r[C*3+1],r[C*3+2]),B.nextPosition.values.push(r[C*3+3],r[C*3+4],r[C*3+5]);let p=U.fromArray(s,y*2,bie),x=Math.abs(p.y);b.expandAndWidth.values.push(-1,x,1,x),b.expandAndWidth.values.push(-1,-x,1,-x),B.expandAndWidth.values.push(-1,x,1,x),B.expandAndWidth.values.push(-1,-x,1,-x);let T=d.magnitudeSquared(d.subtract(P,E,P6));if(T/=d.magnitudeSquared(d.subtract(I,E,P6)),l(c)){let w=se.fromArray(c,y*4,Tie),R=se.fromArray(c,C*4,Tie),O=D.lerp(w.x,R.x,T),k=D.lerp(w.y,R.y,T),Q=D.lerp(w.z,R.z,T),z=D.lerp(w.w,R.w,T);for(A=y*4;A<y*4+8;++A)b.color.values.push(c[A]);for(b.color.values.push(O,k,Q,z),b.color.values.push(O,k,Q,z),B.color.values.push(O,k,Q,z),B.color.values.push(O,k,Q,z),A=C*4;A<C*4+8;++A)B.color.values.push(c[A])}if(l(a)){let w=U.fromArray(a,y*2,bie),R=U.fromArray(a,(h+3)*2,dMe),O=D.lerp(w.x,R.x,T);for(A=y*2;A<y*2+4;++A)b.st.values.push(a[A]);for(b.st.values.push(O,w.y),b.st.values.push(O,R.y),B.st.values.push(O,w.y),B.st.values.push(O,R.y),A=C*2;A<C*2+4;++A)B.st.values.push(a[A])}g=b.position.values.length/3-4,S.push(g,g+2,g+1),S.push(g+1,g+2,g+3),g=B.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3)}else{let M,L;for(E.y<0?(M=f.attributes,L=f.indices):(M=u.attributes,L=u.indices),M.position.values.push(E.x,E.y,E.z),M.position.values.push(E.x,E.y,E.z),M.position.values.push(I.x,I.y,I.z),M.position.values.push(I.x,I.y,I.z),A=h*3;A<h*3+12;++A)M.prevPosition.values.push(o[A]),M.nextPosition.values.push(r[A]);for(A=h*2;A<h*2+8;++A)M.expandAndWidth.values.push(s[A]),l(a)&&M.st.values.push(a[A]);if(l(c))for(A=h*4;A<h*4+16;++A)M.color.values.push(c[A]);g=M.position.values.length/3-4,L.push(g,g+2,g+1),L.push(g+1,g+2,g+3)}}m&&(Sie(f),Sie(u)),R6(e,f,u)}ll.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||le.intersectPlane(n,mn.ORIGIN_ZX_PLANE)!==tn.INTERSECTING))return e;if(t.geometryType!==jf.NONE)switch(t.geometryType){case jf.POLYLINES:gMe(e);break;case jf.TRIANGLES:Iie(e);break;case jf.LINES:xie(e);break}else nMe(t),t.primitiveType===Me.TRIANGLES?Iie(e):t.primitiveType===Me.LINES&&xie(e);return e};var Vn=ll;var Bi={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,HALF_FLOAT:ee.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ee.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ee.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ee.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ee.UNSIGNED_SHORT_5_6_5};Bi.toWebGLConstant=function(e,t){switch(e){case Bi.UNSIGNED_BYTE:return ee.UNSIGNED_BYTE;case Bi.UNSIGNED_SHORT:return ee.UNSIGNED_SHORT;case Bi.UNSIGNED_INT:return ee.UNSIGNED_INT;case Bi.FLOAT:return ee.FLOAT;case Bi.HALF_FLOAT:return t.webgl2?ee.HALF_FLOAT:ee.HALF_FLOAT_OES;case Bi.UNSIGNED_INT_24_8:return ee.UNSIGNED_INT_24_8;case Bi.UNSIGNED_SHORT_4_4_4_4:return ee.UNSIGNED_SHORT_4_4_4_4;case Bi.UNSIGNED_SHORT_5_5_5_1:return ee.UNSIGNED_SHORT_5_5_5_1;case Bi.UNSIGNED_SHORT_5_6_5:return Bi.UNSIGNED_SHORT_5_6_5}};Bi.isPacked=function(e){return e===Bi.UNSIGNED_INT_24_8||e===Bi.UNSIGNED_SHORT_4_4_4_4||e===Bi.UNSIGNED_SHORT_5_5_5_1||e===Bi.UNSIGNED_SHORT_5_6_5};Bi.sizeInBytes=function(e){switch(e){case Bi.UNSIGNED_BYTE:return 1;case Bi.UNSIGNED_SHORT:case Bi.UNSIGNED_SHORT_4_4_4_4:case Bi.UNSIGNED_SHORT_5_5_5_1:case Bi.UNSIGNED_SHORT_5_6_5:case Bi.HALF_FLOAT:return 2;case Bi.UNSIGNED_INT:case Bi.FLOAT:case Bi.UNSIGNED_INT_24_8:return 4}};Bi.validate=function(e){return e===Bi.UNSIGNED_BYTE||e===Bi.UNSIGNED_SHORT||e===Bi.UNSIGNED_INT||e===Bi.FLOAT||e===Bi.HALF_FLOAT||e===Bi.UNSIGNED_INT_24_8||e===Bi.UNSIGNED_SHORT_4_4_4_4||e===Bi.UNSIGNED_SHORT_5_5_5_1||e===Bi.UNSIGNED_SHORT_5_6_5};Bi.getTypedArrayConstructor=function(e){let t=Bi.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Bi.FLOAT?Float32Array:Uint32Array};var Ve=Object.freeze(Bi);var Je={DEPTH_COMPONENT:ee.DEPTH_COMPONENT,DEPTH_STENCIL:ee.DEPTH_STENCIL,ALPHA:ee.ALPHA,RED:ee.RED,RG:ee.RG,RGB:ee.RGB,RGBA:ee.RGBA,RED_INTEGER:ee.RED_INTEGER,RG_INTEGER:ee.RG_INTEGER,RGB_INTEGER:ee.RGB_INTEGER,RGBA_INTEGER:ee.RGBA_INTEGER,LUMINANCE:ee.LUMINANCE,LUMINANCE_ALPHA:ee.LUMINANCE_ALPHA,RGB_DXT1:ee.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ee.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ee.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ee.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ee.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ee.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ee.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ee.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ee.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ee.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ee.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ee.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ee.COMPRESSED_RGBA_BPTC_UNORM};Je.componentsLength=function(e){switch(e){case Je.RGB:case Je.RGB_INTEGER:return 3;case Je.RGBA:case Je.RGBA_INTEGER:return 4;case Je.LUMINANCE_ALPHA:case Je.RG:case Je.RG_INTEGER:return 2;case Je.ALPHA:case Je.RED:case Je.RED_INTEGER:case Je.LUMINANCE:return 1;default:return 1}};Je.validate=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL||e===Je.ALPHA||e===Je.RED||e===Je.RG||e===Je.RGB||e===Je.RGBA||e===Je.RED_INTEGER||e===Je.RG_INTEGER||e===Je.RGB_INTEGER||e===Je.RGBA_INTEGER||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA||e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isColorFormat=function(e){return e===Je.RED||e===Je.ALPHA||e===Je.RGB||e===Je.RGBA||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA};Je.isDepthFormat=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL};Je.isCompressedFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isDXTFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5};Je.isPVRTCFormat=function(e){return e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1};Je.isASTCFormat=function(e){return e===Je.RGBA_ASTC};Je.isETC1Format=function(e){return e===Je.RGB_ETC1};Je.isETC2Format=function(e){return e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC};Je.isBC7Format=function(e){return e===Je.RGBA_BC7};Je.compressedTextureSizeInBytes=function(e,t,n){switch(e){case Je.RGB_DXT1:case Je.RGBA_DXT1:case Je.RGB_ETC1:case Je.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case Je.RGBA_DXT3:case Je.RGBA_DXT5:case Je.RGBA_ASTC:case Je.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case Je.RGB_PVRTC_4BPPV1:case Je.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case Je.RGB_PVRTC_2BPPV1:case Je.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case Je.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};Je.textureSizeInBytes=function(e,t,n,i){let o=Je.componentsLength(e);return Ve.isPacked(t)&&(o=1),o*Ve.sizeInBytes(t)*n*i};Je.texture3DSizeInBytes=function(e,t,n,i,o){let r=Je.componentsLength(e);return Ve.isPacked(t)&&(r=1),r*Ve.sizeInBytes(t)*n*i*o};Je.alignmentInBytes=function(e,t,n){let i=Je.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};Je.createTypedArray=function(e,t,n,i){let o=Ve.getTypedArrayConstructor(t),r=Je.componentsLength(e)*n*i;return new o(r)};Je.flipY=function(e,t,n,i,o){if(o===1)return e;let r=Je.createTypedArray(t,n,i,o),s=Je.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};Je.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===Je.DEPTH_STENCIL)return ee.DEPTH24_STENCIL8;if(e===Je.DEPTH_COMPONENT){if(t===Ve.UNSIGNED_SHORT)return ee.DEPTH_COMPONENT16;if(t===Ve.UNSIGNED_INT)return ee.DEPTH_COMPONENT24}if(t===Ve.FLOAT)switch(e){case Je.RGBA:return ee.RGBA32F;case Je.RGB:return ee.RGB32F;case Je.RG:return ee.RG32F;case Je.RED:return ee.R32F}if(t===Ve.HALF_FLOAT)switch(e){case Je.RGBA:return ee.RGBA16F;case Je.RGB:return ee.RGB16F;case Je.RG:return ee.RG16F;case Je.RED:return ee.R16F}if(t===Ve.UNSIGNED_BYTE)switch(e){case Je.RGBA:return ee.RGBA8;case Je.RGB:return ee.RGB8;case Je.RG:return ee.RG8;case Je.RED:return ee.R8}if(t===Ve.INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32I;case Je.RGB_INTEGER:return ee.RGB32I;case Je.RG_INTEGER:return ee.RG32I;case Je.RED_INTEGER:return ee.R32I}if(t===Ve.UNSIGNED_INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32UI;case Je.RGB_INTEGER:return ee.RGB32UI;case Je.RG_INTEGER:return ee.RG32UI;case Je.RED_INTEGER:return ee.R32UI}return e};var $e=Object.freeze(Je);var NG={STREAM_DRAW:ee.STREAM_DRAW,STATIC_DRAW:ee.STATIC_DRAW,DYNAMIC_DRAW:ee.DYNAMIC_DRAW,validate:function(e){return e===NG.STREAM_DRAW||e===NG.STATIC_DRAW||e===NG.DYNAMIC_DRAW}},Qe=Object.freeze(NG);var Qr={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(Qr,{maximumCombinedTextureImageUnits:{get:function(){return Qr._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return Qr._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return Qr._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return Qr._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return Qr._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return Qr._maximumTextureSize}},maximumVaryingVectors:{get:function(){return Qr._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return Qr._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return Qr._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return Qr._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return Qr._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return Qr._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return Qr._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return Qr._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return Qr._maximumViewportWidth}},maximumViewportHeight:{get:function(){return Qr._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return Qr._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return Qr._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return Qr._maximumColorAttachments}},maximumSamples:{get:function(){return Qr._maximumSamples}},highpFloatSupported:{get:function(){return Qr._highpFloatSupported}},highpIntSupported:{get:function(){return Qr._highpIntSupported}}});var Yt=Qr;function HB(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(HB.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});HB.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,A=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,_=this._preMultiplyAlpha,y=this._flipY,C=4;l(f)&&(C=$e.alignmentInBytes(A,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,C),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let E=!1;if(!this._initialized){let I;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=$e.flipY(f,A,m,h,h)),I=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),I=i),E=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),I=$e.createTypedArray(A,m,h,h)),a.texImage2D(u,0,g,h,h,0,A,Ve.toWebGLConstant(m,this._context),I),this._initialized=!0}E||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=$e.flipY(f,A,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,A,Ve.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),a.texSubImage2D(u,0,t,n,A,Ve.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};HB.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._size,r=r??this._size;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};HB.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=e??0,t=t??0,n=n??this._size,i=i??this._size,o=o??0;let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var WB=HB;function N6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function LG(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function fh(e){e=e??V.EMPTY_OBJECT;let n=e.context._gl,i=Yt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e.destroyAttachments??!0,this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;N6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;LG(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;N6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;LG(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;LG(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;N6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;LG(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(fh.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});fh.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};fh.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};fh.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};fh.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};fh.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};fh.prototype.getColorTexture=function(e){return this._colorTextures[e]};fh.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};fh.prototype.isDestroyed=function(){return!1};fh.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var $r=fh;var OG={DONT_CARE:ee.DONT_CARE,FASTEST:ee.FASTEST,NICEST:ee.NICEST,validate:function(e){return e===OG.DONT_CARE||e===OG.FASTEST||e===OG.NICEST}},Kf=Object.freeze(OG);var FG={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR};FG.validate=function(e){return e===FG.NEAREST||e===FG.LINEAR};var mi=Object.freeze(FG);var b_={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR,NEAREST_MIPMAP_NEAREST:ee.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:ee.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:ee.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:ee.LINEAR_MIPMAP_LINEAR};b_.validate=function(e){return e===b_.NEAREST||e===b_.LINEAR||e===b_.NEAREST_MIPMAP_NEAREST||e===b_.LINEAR_MIPMAP_NEAREST||e===b_.NEAREST_MIPMAP_LINEAR||e===b_.LINEAR_MIPMAP_LINEAR};var Zt=Object.freeze(b_);var QG={CLAMP_TO_EDGE:ee.CLAMP_TO_EDGE,REPEAT:ee.REPEAT,MIRRORED_REPEAT:ee.MIRRORED_REPEAT,validate:function(e){return e===QG.CLAMP_TO_EDGE||e===QG.REPEAT||e===QG.MIRRORED_REPEAT}},Tn=Object.freeze(QG);function jB(e){e=e??V.EMPTY_OBJECT;let{wrapR:t=Tn.CLAMP_TO_EDGE,wrapS:n=Tn.CLAMP_TO_EDGE,wrapT:i=Tn.CLAMP_TO_EDGE,minificationFilter:o=Zt.LINEAR,magnificationFilter:r=mi.LINEAR,maximumAnisotropy:s=1}=e;this._wrapR=t,this._wrapS=n,this._wrapT=i,this._minificationFilter=o,this._magnificationFilter=r,this._maximumAnisotropy=s}Object.defineProperties(jB.prototype,{wrapR:{get:function(){return this._wrapR}},wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});jB.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapR===t._wrapR&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};jB.NEAREST=Object.freeze(new jB({wrapR:Tn.CLAMP_TO_EDGE,wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST}));var on=jB;function Xf(e){e=e??V.EMPTY_OBJECT;let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Xn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}Xf.createVertexBuffer=function(e){return new Xf({context:e.context,bufferTarget:ee.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};Xf.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Oe.getSizeInBytes(n),o=new Xf({context:t,bufferTarget:ee.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(Xf.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Xf.prototype._getBuffer=function(){return this._buffer};Xf.prototype.copyFromArrayView=function(e,t){t=t??0;let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};Xf.prototype.copyFromBuffer=function(e,t,n,i){let o=ee.COPY_READ_BUFFER,r=ee.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};Xf.prototype.getBufferData=function(e,t,n,i){t=t??0,n=n??0;let o=this._gl,r=ee.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};Xf.prototype.isDestroyed=function(){return!1};Xf.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Ct=Xf;function _Me(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:t.index??n,enabled:t.enabled??!0,vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:t.componentDatatype??q.FLOAT,normalize:t.normalize??!1,offsetInBytes:t.offsetInBytes??0,strideInBytes:t.strideInBytes??0,instanceDivisor:t.instanceDivisor??0};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function Rie(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function ip(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)_Me(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let A=s[r];if(l(A.vertexBuffer)&&A.instanceDivisor===0){let g=A.strideInBytes||A.componentsPerAttribute*q.getSizeInBytes(A.componentDatatype);a=A.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),Rie(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Pie(e){return e.values.length/e.componentsPerAttribute}function yMe(e){return q.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function CMe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===q.DOUBLE&&(e[n].componentDatatype=q.FLOAT,e[n].values=q.createTypedArray(q.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=Pie(e[o[0]]),t=1;t<s;++t){let u=Pie(e[o[t]]);if(u!==r)throw new ce(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return q.getSizeInBytes(e[f].componentDatatype)-q.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=yMe(i);if(a>0){let u=q.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,A=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=q.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:q.createTypedArray(e[n].componentDatatype,A),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let _=i.values,y=g[n],C=y.pointer,E=i.componentsPerAttribute;for(let I=0;I<E;++I)C[y.index+I]=_[t*E+I];y.index+=y.strideInComponentType}return{buffer:A,offsetsInBytes:c,vertexSizeInBytes:a}}}ip.fromGeometry=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=e.geometry??V.EMPTY_OBJECT,i=e.bufferUsage??Qe.DYNAMIC_DRAW,o=e.attributeLocations??V.EMPTY_OBJECT,r=e.interleave??!1,s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=CMe(h);if(l(m)){u=Ct.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let _=m.offsetsInBytes,y=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:_[a],strideInBytes:y}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===q.DOUBLE&&(m=q.FLOAT);let _={};u=void 0,l(c.values)&&(u=Ct.createVertexBuffer({context:t,typedArray:q.createTypedArray(m,c.values),usage:i}),_={index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize}),l(c.typedArray)&&(u=Ct.createVertexBuffer({context:t,typedArray:c.typedArray,usage:i}),_={index:o[a],vertexBuffer:u,value:void 0,componentDatatype:m,componentsPerAttribute:zt.getNumberOfComponents(c.type),normalize:c.normalized,instanceDivisor:c.instanceDivisor}),f.push(_)}let A,g=n.indices;return l(g)&&(ht.computeNumberOfVertices(n)>=D.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?A=Ct.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Oe.UNSIGNED_INT}):A=Ct.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Oe.UNSIGNED_SHORT})),new ip({context:t,attributes:f,indexBuffer:A})};Object.defineProperties(ip.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});ip.prototype.getAttribute=function(e){return this._attributes[e]};function EMe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=Yt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function IMe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}ip.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&EMe(this),this._hasConstantAttributes&&IMe(this,this._gl)):Rie(this._gl,this._attributes,this._indexBuffer)};ip.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};ip.prototype.isDestroyed=function(){return!1};ip.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var li=ip;function lr(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,c=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,A=$e.textureSizeInBytes(i,o,h,h)*6,g=$e.toInternalFormat(i,o,t),m=t._gl,_=m.TEXTURE_CUBE_MAP,y=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=_,this._texture=y,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=A,this._preMultiplyAlpha=c,this._flipY=r;let C=l(n);function E(I){return new WB(t,y,_,I,g,i,o,h,c,r,C)}this._positiveX=E(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=E(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=E(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=E(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,Mie(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(_,y),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let I of lr.faceNames())L6(this[I],n?.[I],0);m.bindTexture(_,null)}lr.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new $r({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,i??0),r._unBind(),r.destroy()};lr.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*xMe(){yield lr.FaceName.POSITIVEX,yield lr.FaceName.NEGATIVEX,yield lr.FaceName.POSITIVEY,yield lr.FaceName.NEGATIVEY,yield lr.FaceName.POSITIVEZ,yield lr.FaceName.NEGATIVEZ}lr.faceNames=function(){return xMe()};function L6(e,t,n){n=n??0;let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,Ve.toWebGLConstant(s,f),null);return}let{arrayBufferView:A}=t,g=4;l(A)&&(g=$e.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(A)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(A=$e.flipY(A,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,Ve.toWebGLConstant(s,f),A)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,Ve.toWebGLConstant(s,f),t))}lr.loadFace=L6;Object.defineProperties(lr.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){Mie(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});lr.getDirection=function(e,t){switch(e){case lr.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case lr.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case lr.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case lr.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case lr.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case lr.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function Mie(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===Ve.FLOAT&&!r.textureFloatLinear||s===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}lr.prototype.loadMipmaps=function(e,t){t=t??!1;let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of lr.faceNames())L6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};lr.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};lr.createVertexArray=function(e){let t=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),n=this._attributeLocations=Vn.createAttributeLocations(t);return li.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW})};lr.prototype.isDestroyed=function(){return!1};lr.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var kr=lr;function dh(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=n.videoWidth??n.naturalWidth??n.width),l(u)||(u=n.videoHeight??n.naturalHeight??n.height));let f=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,h=$e.toInternalFormat(i,o,t),A=$e.isCompressedFormat(h),g=t._gl,m=A?$e.compressedTextureSizeInBytes(i,c,u):$e.textureSizeInBytes(i,o,c,u);this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new U(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Fie(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?$e.isCompressedFormat(h)?bMe(this,n):Nie(this,n):l(n.framebuffer)?SMe(this,n):Lie(this,n),this._initialized=!0):Oie(this),g.bindTexture(this._textureTarget,null)}function bMe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=kG(c),u=kG(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function Nie(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=$e.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:A}=t;if(f&&(A=$e.flipY(A,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,Ve.toWebGLConstant(u,n),A),l(t.mipLevels)){let g=s,m=a;for(let _=0;_<t.mipLevels.length;++_)g=kG(g),m=kG(m),i.texImage2D(o,_+1,r,g,m,0,c,Ve.toWebGLConstant(u,n),t.mipLevels[_])}}function TMe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=$e.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=$e.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,Ve.toWebGLConstant(u,s),t)}function SMe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function Lie(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,Ve.toWebGLConstant(e.pixelDatatype,n),t)}function wMe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,Ve.toWebGLConstant(e.pixelDatatype,o),t)}function kG(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function Oie(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,Ve.toWebGLConstant(e._pixelDatatype,t),null)}dh.create=function(e){return new dh(e)};dh.fromFramebuffer=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,{pixelFormat:n=$e.RGB,framebufferXOffset:i=0,framebufferYOffset:o=0,width:r=t.drawingBufferWidth,height:s=t.drawingBufferHeight,framebuffer:a}=e;return new dh({context:t,width:r,height:s,pixelFormat:n,source:{framebuffer:l(a)?a:t.defaultFramebuffer,xOffset:i,yOffset:o,width:r,height:s}})};Object.defineProperties(dh.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Fie(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Fie(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ve.FLOAT&&!r.textureFloatLinear||a===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST),r.webgl2&&$e.isDepthFormat(s)&&(n=Zt.NEAREST,i=mi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}dh.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?Nie(this,i):Lie(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),Oie(this)),this._initialized=!0),f||(l(i.arrayBufferView)?TMe(this,i.arrayBufferView,t,n,c,u):wMe(this,i,t,n)),s.bindTexture(a,null)};dh.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._width,r=r??this._height;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};dh.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};dh.prototype.isDestroyed=function(){return!1};dh.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Mt=dh;var YB=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var qB=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + vec2 centerPixel = fract(repeat * st); + float centerBump = texture(image, centerPixel).channel; + + float imageWidth = float(imageDimensions.x); + vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0))); + float rightBump = texture(image, rightPixel).channel; + + float imageHeight = float(imageDimensions.y); + vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight))); + float topBump = texture(image, leftPixel).channel; + + vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0))); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + material.diffuse = vec3(0.01); + + return material; +} +`;var KB=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0 + + // Find the distance from the closest separator (region between two colors) + float scaledWidth = fract(repeat.s * st.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(repeat.t * st.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + float value = min(scaledWidth, scaledHeight); + + vec4 currentColor = mix(lightColor, darkColor, b); + vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03); + + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var XB=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0 + + vec4 color = mix(lightColor, darkColor, b); + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var JB=`uniform sampler2D heights; +uniform sampler2D colors; + +// This material expects heights to be sorted from lowest to highest. + +float getHeight(int idx, float invTexSize) +{ + vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5); +#ifdef OES_texture_float + return texture(heights, uv).x; +#else + return czm_unpackFloat(texture(heights, uv)); +#endif +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float height = materialInput.height; + float invTexSize = 1.0 / float(heightsDimensions.x); + + float minHeight = getHeight(0, invTexSize); + float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize); + + // early-out when outside the height range + if (height < minHeight || height > maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var ZB=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var $B=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var eD=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var tD=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var nD=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var iD=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var oD=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var rD=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var sD=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var aD=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var cD=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var lD=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var uD=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var fD=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function qe(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??Zt.LINEAR,this._magnificationFilter=e.magnificationFilter??mi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,BMe(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(qe._uniformList[this.type])||(qe._uniformList[this.type]=Object.keys(this._uniforms))}qe._uniformList={};qe.fromType=function(e,t){let n=new qe({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};qe.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};qe.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(_){return _.bufferView}),u=u[0]);let h=new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),A;l(u.internalFormat)?A=new Mt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):A=new Mt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=A;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let _=this.uniforms[m];_.x=A._width,_.y=A._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new kr({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};qe.prototype.isDestroyed=function(){return!1};qe.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function BMe(e,t){e=e??V.EMPTY_OBJECT,t._strict=e.strict??!1,t._count=e.count??0,t._template=ze(e.fabric??V.EMPTY_OBJECT),t._template.uniforms=ze(t._template.uniforms??V.EMPTY_OBJECT),t._template.materials=ze(t._template.materials??V.EMPTY_OBJECT),t.type=l(t._template.type)?t._template.type:Xn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=qe._materialCache.getMaterial(t.type);if(l(i)){let r=ze(i.fabric,!0);t._template=Tt(t._template,r,!0),n=i.translucent}RMe(t),l(i)||qe._materialCache.addMaterial(t.type,t),NMe(t),QMe(t),UMe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=n??o,n=e.translucent??n,l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function O6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function Qie(e,t){}function DMe(e,t){}var vMe=["type","materials","uniforms","components","source"],PMe=["diffuse","specular","shininess","normal","emission","alpha"];function RMe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;O6(t,vMe,Qie,!0),O6(o,PMe,Qie,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);O6(n,r,DMe,!1)}function MMe(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function NMe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&MMe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var kie={mat2:Gi,mat3:J,mat4:N},LMe=/\.ktx2$/i;function OMe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===qe.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let A=new on({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Mt({context:i,source:r,sampler:A}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Mt&&r!==c){n._texturePaths[e]=void 0;let A=n._textures[e];l(A)&&A!==n._defaultTexture&&A.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof we;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let A=h?r:we.createIfNeeded(r),g;LMe.test(A.url)?g=$l(A.url):g=A.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function FMe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof kr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===qe.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[we.createIfNeeded(i.positiveX).fetchImage(),we.createIfNeeded(i.negativeX).fetchImage(),we.createIfNeeded(i.positiveY).fetchImage(),we.createIfNeeded(i.negativeY).fetchImage(),we.createIfNeeded(i.positiveZ).fetchImage(),we.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function QMe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&Uie(e,n)}function Uie(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=kMe(o),s;if(r==="channels")s=dD(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;GMe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},Uie(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=dD(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(OMe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(FMe(t));else if(r.indexOf("mat")!==-1){let u=new kie[r];e._uniforms[c]=function(){return kie[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function kMe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===qe.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function UMe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new qe({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=Tt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;dD(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=dD(e,i,a)}}function dD(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function GMe(e,t,n){return dD(e,t,t,n)}qe._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};qe.DefaultImageId="czm_defaultImage";qe.DefaultCubeMapId="czm_defaultCubeMap";qe.ColorType="Color";qe._materialCache.addMaterial(qe.ColorType,{fabric:{type:qe.ColorType,uniforms:{color:new G(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});qe.ImageType="Image";qe._materialCache.addMaterial(qe.ImageType,{fabric:{type:qe.ImageType,uniforms:{image:qe.DefaultImageId,repeat:new U(1,1),color:new G(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});qe.DiffuseMapType="DiffuseMap";qe._materialCache.addMaterial(qe.DiffuseMapType,{fabric:{type:qe.DiffuseMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});qe.AlphaMapType="AlphaMap";qe._materialCache.addMaterial(qe.AlphaMapType,{fabric:{type:qe.AlphaMapType,uniforms:{image:qe.DefaultImageId,channel:"a",repeat:new U(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});qe.SpecularMapType="SpecularMap";qe._materialCache.addMaterial(qe.SpecularMapType,{fabric:{type:qe.SpecularMapType,uniforms:{image:qe.DefaultImageId,channel:"r",repeat:new U(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});qe.EmissionMapType="EmissionMap";qe._materialCache.addMaterial(qe.EmissionMapType,{fabric:{type:qe.EmissionMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});qe.BumpMapType="BumpMap";qe._materialCache.addMaterial(qe.BumpMapType,{fabric:{type:qe.BumpMapType,uniforms:{image:qe.DefaultImageId,channel:"r",strength:.8,repeat:new U(1,1)},source:qB},translucent:!1});qe.NormalMapType="NormalMap";qe._materialCache.addMaterial(qe.NormalMapType,{fabric:{type:qe.NormalMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",strength:.8,repeat:new U(1,1)},source:nD},translucent:!1});qe.GridType="Grid";qe._materialCache.addMaterial(qe.GridType,{fabric:{type:qe.GridType,uniforms:{color:new G(0,1,0,1),cellAlpha:.1,lineCount:new U(8,8),lineThickness:new U(1,1),lineOffset:new U(0,0)},source:tD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});qe.StripeType="Stripe";qe._materialCache.addMaterial(qe.StripeType,{fabric:{type:qe.StripeType,uniforms:{horizontal:!0,evenColor:new G(1,1,1,.5),oddColor:new G(0,0,1,.5),offset:0,repeat:5},source:lD},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});qe.CheckerboardType="Checkerboard";qe._materialCache.addMaterial(qe.CheckerboardType,{fabric:{type:qe.CheckerboardType,uniforms:{lightColor:new G(1,1,1,.5),darkColor:new G(0,0,0,.5),repeat:new U(5,5)},source:KB},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});qe.DotType="Dot";qe._materialCache.addMaterial(qe.DotType,{fabric:{type:qe.DotType,uniforms:{lightColor:new G(1,1,0,.75),darkColor:new G(0,1,1,.75),repeat:new U(5,5)},source:XB},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});qe.WaterType="Water";qe._materialCache.addMaterial(qe.WaterType,{fabric:{type:qe.WaterType,uniforms:{baseWaterColor:new G(.2,.3,.6,1),blendColor:new G(0,1,.699,1),specularMap:qe.DefaultImageId,normalMap:qe.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:fD},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});qe.RimLightingType="RimLighting";qe._materialCache.addMaterial(qe.RimLightingType,{fabric:{type:qe.RimLightingType,uniforms:{color:new G(1,0,0,.7),rimColor:new G(1,1,1,.4),width:.3},source:aD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});qe.FadeType="Fade";qe._materialCache.addMaterial(qe.FadeType,{fabric:{type:qe.FadeType,uniforms:{fadeInColor:new G(1,0,0,1),fadeOutColor:new G(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new U(.5,.5)},source:eD},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});qe.PolylineArrowType="PolylineArrow";qe._materialCache.addMaterial(qe.PolylineArrowType,{fabric:{type:qe.PolylineArrowType,uniforms:{color:new G(1,1,1,1)},source:iD},translucent:!0});qe.PolylineDashType="PolylineDash";qe._materialCache.addMaterial(qe.PolylineDashType,{fabric:{type:qe.PolylineDashType,uniforms:{color:new G(1,0,1,1),gapColor:new G(0,0,0,0),dashLength:16,dashPattern:255},source:oD},translucent:!0});qe.PolylineGlowType="PolylineGlow";qe._materialCache.addMaterial(qe.PolylineGlowType,{fabric:{type:qe.PolylineGlowType,uniforms:{color:new G(0,.5,1,1),glowPower:.25,taperPower:1},source:rD},translucent:!0});qe.PolylineOutlineType="PolylineOutline";qe._materialCache.addMaterial(qe.PolylineOutlineType,{fabric:{type:qe.PolylineOutlineType,uniforms:{color:new G(1,1,1,1),outlineColor:new G(1,0,0,1),outlineWidth:1},source:sD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});qe.ElevationContourType="ElevationContour";qe._materialCache.addMaterial(qe.ElevationContourType,{fabric:{type:qe.ElevationContourType,uniforms:{spacing:100,color:new G(1,0,0,1),width:1},source:ZB},translucent:!1});qe.ElevationRampType="ElevationRamp";qe._materialCache.addMaterial(qe.ElevationRampType,{fabric:{type:qe.ElevationRampType,uniforms:{image:qe.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:$B},translucent:!1});qe.SlopeRampMaterialType="SlopeRamp";qe._materialCache.addMaterial(qe.SlopeRampMaterialType,{fabric:{type:qe.SlopeRampMaterialType,uniforms:{image:qe.DefaultImageId},source:cD},translucent:!1});qe.AspectRampMaterialType="AspectRamp";qe._materialCache.addMaterial(qe.AspectRampMaterialType,{fabric:{type:qe.AspectRampMaterialType,uniforms:{image:qe.DefaultImageId},source:YB},translucent:!1});qe.ElevationBandType="ElevationBand";qe._materialCache.addMaterial(qe.ElevationBandType,{fabric:{type:qe.ElevationBandType,uniforms:{heights:qe.DefaultImageId,colors:qe.DefaultImageId},source:JB},translucent:!0});qe.WaterMaskType="WaterMask";qe._materialCache.addMaterial(qe.WaterMaskType,{fabric:{type:qe.WaterMaskType,source:uD,uniforms:{waterColor:new G(1,1,1,1),landColor:new G(0,0,0,0)}},translucent:!1});var ro=qe;function oE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??oE.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(oE.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});oE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;oE.prototype.isTranslucent=po.prototype.isTranslucent;oE.prototype.getRenderState=po.prototype.getRenderState;oE.MaterialSupport={BASIC:Object.freeze({vertexFormat:Pe.POSITION_AND_NORMAL,vertexShaderSource:RB,fragmentShaderSource:PB}),TEXTURED:Object.freeze({vertexFormat:Pe.POSITION_NORMAL_AND_ST,vertexShaderSource:NB,fragmentShaderSource:MB}),ALL:Object.freeze({vertexFormat:Pe.ALL,vertexShaderSource:vB,fragmentShaderSource:DB})};var Eo=oE;var hD=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var mD=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var rE=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var AD=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function op(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?AD:mD,r=i?rE:hD,s=i?op.FLAT_VERTEX_FORMAT:op.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(op.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});op.VERTEX_FORMAT=Pe.POSITION_AND_NORMAL;op.FLAT_VERTEX_FORMAT=Pe.POSITION_ONLY;op.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;op.prototype.isTranslucent=po.prototype.isTranslucent;op.prototype.getRenderState=po.prototype.getRenderState;var gn=op;function ob(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(ob.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});ob.prototype.getType=function(e){return"Color"};var zMe=new K;ob.prototype.getValue=function(e,t){return l(e)||(e=K.now(zMe)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};ob.prototype.equals=function(e){return this===e||e instanceof ob&&j.equals(this._color,e._color)};var Xt=ob;function T_(e){e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._rectangle=e.rectangle??ae.MAX_VALUE,this._projection=new Ui(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(T_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});T_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};T_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};T_.prototype.rectangleToNativeRectangle=function(e,t){let n=D.toDegrees(e.west),i=D.toDegrees(e.south),o=D.toDegrees(e.east),r=D.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};T_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=D.toDegrees(o.west),o.south=D.toDegrees(o.south),o.east=D.toDegrees(o.east),o.north=D.toDegrees(o.north),o};T_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,A=o.north-(t+1)*f;return l(i)||(i=new ae(c,A,u,h)),i.west=c,i.south=A,i.east=u,i.north=h,i};T_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=D.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new U(u,f)};var so=T_;var Gie=new d,zie=new d,Vie=new Ae,F6=new d,VMe=new d,Hie=new le,HMe=new so,pD=[new Ae,new Ae,new Ae,new Ae],gD=new U,_s={};_s.initialize=function(){let e=_s._initPromise;return l(e)||(e=we.fetchJson(fn("Assets/approximateTerrainHeights.json")).then(function(t){_s._terrainHeights=t}),_s._initPromise=e),e};_s.getMinimumMaximumHeights=function(e,t){t=t??te.default;let n=Wie(e),i=_s._defaultMinTerrainHeight,o=_s._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=_s._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,Vie),Gie),t.cartographicToCartesian(ae.southwest(e,Vie),zie),d.midpoint(zie,Gie,F6);let a=t.scaleToGeodeticSurface(F6,VMe);if(l(a)){let c=d.distance(F6,a);i=Math.min(i,-c)}else i=_s._defaultMinTerrainHeight}return i=Math.max(_s._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};_s.getBoundingSphere=function(e,t){t=t??te.default;let n=Wie(e),i=_s._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=_s._terrainHeights[r];l(s)&&(i=s[1])}let o=le.fromRectangle3D(e,t,0);return le.fromRectangle3D(e,t,i,Hie),le.union(o,Hie,o)};function Wie(e){Ae.fromRadians(e.east,e.north,0,pD[0]),Ae.fromRadians(e.west,e.north,0,pD[1]),Ae.fromRadians(e.east,e.south,0,pD[2]),Ae.fromRadians(e.west,e.south,0,pD[3]);let t=0,n=0,i=0,o=0,r=_s._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=pD[c];if(HMe.positionToTileXY(u,s,gD),c===0)i=gD.x,o=gD.y;else if(i!==gD.x||o!==gD.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}_s._terrainHeightsMaxLevel=6;_s._defaultMaxTerrainHeight=9e3;_s._defaultMinTerrainHeight=-1e5;_s._terrainHeights=void 0;_s._initPromise=void 0;Object.defineProperties(_s,{initialized:{get:function(){return l(_s._terrainHeights)}}});var Ti=_s;function ul(e,t,n){this.minimum=d.clone(e??d.ZERO),this.maximum=d.clone(t??d.ZERO),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}ul.fromCorners=function(e,t,n){return l(n)||(n=new ul),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};ul.fromPoints=function(e,t){if(l(t)||(t=new ul),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let A=e[h],g=A.x,m=A.y,_=A.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(_,o),a=Math.max(_,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};ul.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new ul(e.minimum,e.maximum,e.center)};ul.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var UG=new d;ul.intersectPlane=function(e,t){UG=d.subtract(e.maximum,e.minimum,UG);let n=d.multiplyByScalar(UG,.5,UG),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?tn.INSIDE:r+o<0?tn.OUTSIDE:tn.INTERSECTING};ul.prototype.clone=function(e){return ul.clone(this,e)};ul.prototype.intersectPlane=function(e){return ul.intersectPlane(this,e)};ul.prototype.equals=function(e){return ul.equals(this,e)};var S_=ul;var Q6=new se;function Qm(e,t){t=t??te.default,e=t.scaleToGeodeticSurface(e);let n=kt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(N.getColumn(n,0,Q6)),this._yAxis=d.fromCartesian4(N.getColumn(n,1,Q6));let i=d.fromCartesian4(N.getColumn(n,2,Q6));this._plane=mn.fromPointNormal(e,i)}Object.defineProperties(Qm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var WMe=new S_;Qm.fromPoints=function(e,t){let n=S_.fromPoints(e,WMe);return new Qm(n.center,t)};var jie=new In,GG=new d;Qm.prototype.projectPointOntoPlane=function(e,t){let n=jie;n.origin=e,d.normalize(e,n.direction);let i=hi.rayPlane(n,this._plane,GG);if(l(i)||(d.negate(n.direction,n.direction),i=hi.rayPlane(n,this._plane,GG)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new U(r,s)}};Qm.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};Qm.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new U);let n=jie;n.origin=e,d.clone(this._plane.normal,n.direction);let i=hi.rayPlane(n,this._plane,GG);l(i)||(d.negate(n.direction,n.direction),i=hi.rayPlane(n,this._plane,GG));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};Qm.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var jMe=new d;Qm.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=jMe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};Qm.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var ys=Qm;function Zi(e,t){this.center=d.clone(e??d.ZERO),this.halfAxes=J.clone(t??J.ZERO)}Zi.packedLength=d.packedLength+J.packedLength;Zi.pack=function(e,t,n){return n=n??0,d.pack(e.center,t,n),J.pack(e.halfAxes,t,n+d.packedLength),t};Zi.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Zi),d.unpack(e,t,n.center),J.unpack(e,t+d.packedLength,n.halfAxes),n};var YMe=new d,qMe=new d,KMe=new d,XMe=new d,JMe=new d,ZMe=new d,$Me=new J,e1e={unitary:new J,diagonal:new J};Zi.fromPoints=function(e,t){if(l(t)||(t=new Zi),!l(e)||e.length===0)return t.halfAxes=J.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],YMe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,A;for(n=0;n<i;n++)A=d.subtract(e[n],o,qMe),s+=A.x*A.x,a+=A.x*A.y,c+=A.x*A.z,u+=A.y*A.y,f+=A.y*A.z,h+=A.z*A.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=$Me;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=J.computeEigenDecomposition(g,e1e),_=J.clone(m.unitary,t.halfAxes),y=J.getColumn(_,0,XMe),C=J.getColumn(_,1,JMe),E=J.getColumn(_,2,ZMe),I=-Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE,B=Number.MAX_VALUE,v=Number.MAX_VALUE,P=Number.MAX_VALUE;for(n=0;n<i;n++)A=e[n],I=Math.max(d.dot(y,A),I),b=Math.max(d.dot(C,A),b),S=Math.max(d.dot(E,A),S),B=Math.min(d.dot(y,A),B),v=Math.min(d.dot(C,A),v),P=Math.min(d.dot(E,A),P);y=d.multiplyByScalar(y,.5*(B+I),y),C=d.multiplyByScalar(C,.5*(v+b),C),E=d.multiplyByScalar(E,.5*(P+S),E);let M=d.add(y,C,t.center);d.add(M,E,M);let L=KMe;return L.x=I-B,L.y=b-v,L.z=S-P,d.multiplyByScalar(L,.5,L),J.multiplyByScale(t.halfAxes,L,t.halfAxes),t};var Zie=new d,t1e=new d;function Yie(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new Zi);let h=f.halfAxes;J.setColumn(h,0,t,h),J.setColumn(h,1,n,h),J.setColumn(h,2,i,h);let A=Zie;A.x=(o+r)/2,A.y=(s+a)/2,A.z=(c+u)/2;let g=t1e;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return A=J.multiplyByVector(h,A,A),d.add(e,A,m),J.multiplyByScale(h,g,h),f}var qie=new Ae,n1e=new d,i1e=new Ae,o1e=new Ae,r1e=new Ae,s1e=new Ae,a1e=new Ae,c1e=new d,Kie=new d,l1e=new d,Xie=new d,u1e=new d,f1e=new U,d1e=new U,h1e=new U,m1e=new U,A1e=new U,p1e=new d,g1e=new d,_1e=new d,y1e=new d,C1e=new U,E1e=new d,I1e=new d,x1e=new d,b1e=new mn(d.UNIT_X,0);Zi.fromRectangle=function(e,t,n,i,o){t=t??0,n=n??0,i=i??te.default;let r,s,a,c,u,f,h;if(e.width<=D.PI){let v=ae.center(e,qie),P=i.cartographicToCartesian(v,n1e),M=new ys(P,i);h=M.plane;let L=v.longitude,p=e.south<0&&e.north>0?0:v.latitude,x=Ae.fromRadians(L,e.north,n,i1e),T=Ae.fromRadians(e.west,e.north,n,o1e),w=Ae.fromRadians(e.west,p,n,r1e),R=Ae.fromRadians(e.west,e.south,n,s1e),O=Ae.fromRadians(L,e.south,n,a1e),k=i.cartographicToCartesian(x,c1e),Q=i.cartographicToCartesian(T,Kie),z=i.cartographicToCartesian(w,l1e),F=i.cartographicToCartesian(R,Xie),H=i.cartographicToCartesian(O,u1e),W=M.projectPointToNearestOnPlane(k,f1e),Z=M.projectPointToNearestOnPlane(Q,d1e),Y=M.projectPointToNearestOnPlane(z,h1e),$=M.projectPointToNearestOnPlane(F,m1e),X=M.projectPointToNearestOnPlane(H,A1e);return r=Math.min(Z.x,Y.x,$.x),s=-r,c=Math.max(Z.y,W.y),a=Math.min($.y,X.y),T.height=R.height=t,Q=i.cartographicToCartesian(T,Kie),F=i.cartographicToCartesian(R,Xie),u=Math.min(mn.getPointDistance(h,Q),mn.getPointDistance(h,F)),f=n,Yie(M.origin,M.xAxis,M.yAxis,M.zAxis,r,s,a,c,u,f,o)}let A=e.south>0,g=e.north<0,m=A?e.south:g?e.north:0,_=ae.center(e,qie).longitude,y=d.fromRadians(_,m,n,i,p1e);y.z=0;let E=Math.abs(y.x)<D.EPSILON10&&Math.abs(y.y)<D.EPSILON10?d.UNIT_X:d.normalize(y,g1e),I=d.UNIT_Z,b=d.cross(E,I,_1e);h=mn.fromPointNormal(y,E,b1e);let S=d.fromRadians(_+D.PI_OVER_TWO,m,n,i,y1e);s=d.dot(mn.projectPointOntoPlane(h,S,C1e),b),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,E1e).z,a=d.fromRadians(0,e.south,A?t:n,i,I1e).z;let B=d.fromRadians(e.east,m,n,i,x1e);return u=mn.getPointDistance(h,B),f=0,Yie(y,b,I,E,r,s,a,c,u,f,o)};Zi.fromTransformation=function(e,t){return l(t)||(t=new Zi),t.center=N.getTranslation(e,t.center),t.halfAxes=N.getMatrix3(e,t.halfAxes),t.halfAxes=J.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};Zi.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),J.clone(e.halfAxes,t.halfAxes),t):new Zi(e.center,e.halfAxes)};Zi.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[J.COLUMN0ROW0]+s*o[J.COLUMN0ROW1]+a*o[J.COLUMN0ROW2])+Math.abs(r*o[J.COLUMN1ROW0]+s*o[J.COLUMN1ROW1]+a*o[J.COLUMN1ROW2])+Math.abs(r*o[J.COLUMN2ROW0]+s*o[J.COLUMN2ROW1]+a*o[J.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?tn.OUTSIDE:u>=c?tn.INSIDE:tn.INTERSECTING};var $ie=new d,eoe=new d,toe=new d,T1e=new d,Jie=new d,S1e=new d;Zi.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,Zie),i=e.halfAxes,o=J.getColumn(i,0,$ie),r=J.getColumn(i,1,eoe),s=J.getColumn(i,2,toe),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,A=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):A=!1;let g=!f+!h+!A,m,_,y;if(g===1){let b=o;m=r,_=s,h?A||(b=s,_=o):(b=r,m=o),y=d.cross(m,_,Jie),b===o?o=y:b===r?r=y:b===s&&(s=y)}else if(g===2){m=o,h?m=r:A&&(m=s);let b=d.UNIT_Y;b.equalsEpsilon(m,D.EPSILON3)&&(b=d.UNIT_X),_=d.cross(m,b,T1e),d.normalize(_,_),y=d.cross(m,_,Jie),d.normalize(y,y),m===o?(r=_,s=y):m===r?(s=_,o=y):m===s&&(o=_,r=y)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let C=S1e;C.x=d.dot(n,o),C.y=d.dot(n,r),C.z=d.dot(n,s);let E=0,I;return C.x<-a?(I=C.x+a,E+=I*I):C.x>a&&(I=C.x-a,E+=I*I),C.y<-c?(I=C.y+c,E+=I*I):C.y>c&&(I=C.y-c,E+=I*I),C.z<-u?(I=C.z+u,E+=I*I):C.z>u&&(I=C.z-u,E+=I*I),E};var w1e=new d,B1e=new d;Zi.computePlaneDistances=function(e,t,n,i){l(i)||(i=new sc);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=J.getColumn(a,0,$ie),u=J.getColumn(a,1,eoe),f=J.getColumn(a,2,toe),h=d.add(c,u,w1e);d.add(h,f,h),d.add(h,s,h);let A=d.subtract(h,t,B1e),g=d.dot(n,A);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var D1e=new d,v1e=new d,P1e=new d;Zi.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=J.getColumn(i,0,D1e),r=J.getColumn(i,1,v1e),s=J.getColumn(i,2,P1e);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var R1e=new J;Zi.computeTransformation=function(e,t){l(t)||(t=new N);let n=e.center,i=J.multiplyByUniformScale(e.halfAxes,2,R1e);return N.fromRotationTranslation(i,n,t)};var M1e=new le;Zi.isOccluded=function(e,t){let n=le.fromOrientedBoundingBox(e,M1e);return!t.isBoundingSphereVisible(n)};Zi.prototype.intersectPlane=function(e){return Zi.intersectPlane(this,e)};Zi.prototype.distanceSquaredTo=function(e){return Zi.distanceSquaredTo(this,e)};Zi.prototype.computePlaneDistances=function(e,t,n){return Zi.computePlaneDistances(this,e,t,n)};Zi.prototype.computeCorners=function(e){return Zi.computeCorners(this,e)};Zi.prototype.computeTransformation=function(e){return Zi.computeTransformation(this,e)};Zi.prototype.isOccluded=function(e){return Zi.isOccluded(this,e)};Zi.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&J.equals(e.halfAxes,t.halfAxes)};Zi.prototype.clone=function(e){return Zi.clone(this,e)};Zi.prototype.equals=function(e){return Zi.equals(this,e)};var Fn=Zi;var zG={};zG.getHeight=function(e,t,n){return(e-n)*t+n};var N1e=new Ae;zG.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,N1e);if(!l(r))return d.clone(e,o);let s=zG.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Ur=zG;var Gr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function _D(e){e=e??V.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??Me.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Pc(e,t){return(e._flags&t)===t}function w_(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(_D.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Pc(this,Gr.CULL)},set:function(e){Pc(this,Gr.CULL)!==e&&(w_(this,Gr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Pc(this,Gr.OCCLUDE)},set:function(e){Pc(this,Gr.OCCLUDE)!==e&&(w_(this,Gr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Pc(this,Gr.CAST_SHADOWS)},set:function(e){Pc(this,Gr.CAST_SHADOWS)!==e&&(w_(this,Gr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Pc(this,Gr.RECEIVE_SHADOWS)},set:function(e){Pc(this,Gr.RECEIVE_SHADOWS)!==e&&(w_(this,Gr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Pc(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Pc(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(w_(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Pc(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Pc(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(w_(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Pc(this,Gr.PICK_ONLY)},set:function(e){Pc(this,Gr.PICK_ONLY)!==e&&(w_(this,Gr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Pc(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Pc(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(w_(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});_D.shallowClone=function(e,t){if(l(e))return l(t)||(t=new _D),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};_D.prototype.execute=function(e,t){e.draw(this,t)};var nt=_D;var L1e={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Be=Object.freeze(L1e);var VG={CLOCKWISE:ee.CW,COUNTER_CLOCKWISE:ee.CCW};VG.validate=function(e){return e===VG.CLOCKWISE||e===VG.COUNTER_CLOCKWISE};var Ls=Object.freeze(VG);function noe(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=noe(e[t]));return Object.freeze(e)}var k6=noe;function Um(e){let t=e??V.EMPTY_OBJECT,n=t.cull??V.EMPTY_OBJECT,i=t.polygonOffset??V.EMPTY_OBJECT,o=t.scissorTest??V.EMPTY_OBJECT,r=o.rectangle??V.EMPTY_OBJECT,s=t.depthRange??V.EMPTY_OBJECT,a=t.depthTest??V.EMPTY_OBJECT,c=t.colorMask??V.EMPTY_OBJECT,u=t.blending??V.EMPTY_OBJECT,f=u.color??V.EMPTY_OBJECT,h=t.stencilTest??V.EMPTY_OBJECT,A=h.frontOperation??V.EMPTY_OBJECT,g=h.backOperation??V.EMPTY_OBJECT,m=t.sampleCoverage??V.EMPTY_OBJECT,_=t.viewport;this.frontFace=t.frontFace??Ls.COUNTER_CLOCKWISE,this.cull={enabled:n.enabled??!1,face:n.face??ee.BACK},this.lineWidth=t.lineWidth??1,this.polygonOffset={enabled:i.enabled??!1,factor:i.factor??0,units:i.units??0},this.scissorTest={enabled:o.enabled??!1,rectangle:Ye.clone(r)},this.depthRange={near:s.near??0,far:s.far??1},this.depthTest={enabled:a.enabled??!1,func:a.func??ee.LESS},this.colorMask={red:c.red??!0,green:c.green??!0,blue:c.blue??!0,alpha:c.alpha??!0},this.depthMask=t.depthMask??!0,this.stencilMask=t.stencilMask??-1,this.blending={enabled:u.enabled??!1,color:new G(f.red??0,f.green??0,f.blue??0,f.alpha??0),equationRgb:u.equationRgb??ee.FUNC_ADD,equationAlpha:u.equationAlpha??ee.FUNC_ADD,functionSourceRgb:u.functionSourceRgb??ee.ONE,functionSourceAlpha:u.functionSourceAlpha??ee.ONE,functionDestinationRgb:u.functionDestinationRgb??ee.ZERO,functionDestinationAlpha:u.functionDestinationAlpha??ee.ZERO},this.stencilTest={enabled:h.enabled??!1,frontFunction:h.frontFunction??ee.ALWAYS,backFunction:h.backFunction??ee.ALWAYS,reference:h.reference??0,mask:h.mask??-1,frontOperation:{fail:A.fail??ee.KEEP,zFail:A.zFail??ee.KEEP,zPass:A.zPass??ee.KEEP},backOperation:{fail:g.fail??ee.KEEP,zFail:g.zFail??ee.KEEP,zPass:g.zPass??ee.KEEP}},this.sampleCoverage={enabled:m.enabled??!1,value:m.value??1,invert:m.invert??!1},this.viewport=l(_)?new Ye(_.x,_.y,_.width,_.height):void 0,this.id=0,this._applyFunctions=[]}var O1e=0,km={};Um.fromCache=function(e){let t=JSON.stringify(e),n=km[t];if(l(n))return++n.referenceCount,n.state;let i=new Um(e),o=JSON.stringify(i);return n=km[o],l(n)||(i.id=O1e++,n={referenceCount:0,state:i},km[o]=n),++n.referenceCount,km[t]={referenceCount:1,state:n.state},n.state};Um.removeFromCache=function(e){let t=new Um(e),n=JSON.stringify(t),i=km[n],o=JSON.stringify(e),r=km[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete km[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete km[n]};Um.getCache=function(){return km};Um.clearCache=function(){km={}};function sE(e,t,n){n?e.enable(t):e.disable(t)}function ioe(e,t){e.frontFace(t.frontFace)}function ooe(e,t){let n=t.cull,i=n.enabled;sE(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function roe(e,t){e.lineWidth(t.lineWidth)}function soe(e,t){let n=t.polygonOffset,i=n.enabled;sE(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function aoe(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if(sE(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function coe(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function loe(e,t){let n=t.depthTest,i=n.enabled;sE(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function uoe(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function foe(e,t){e.depthMask(t.depthMask)}function doe(e,t){e.stencilMask(t.stencilMask)}function F1e(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function hoe(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;sE(e,e.BLEND,o),o&&(F1e(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function moe(e,t){let n=t.stencilTest,i=n.enabled;if(sE(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let A=n.backOperation,g=A.fail,m=A.zFail,_=A.zPass;e.stencilOpSeparate(e.BACK,g,m,_)}}function Aoe(e,t){let n=t.sampleCoverage,i=n.enabled;sE(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var Q1e=new Ye;function poe(e,t,n){let i=t.viewport??n.viewport;l(i)||(i=Q1e,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}Um.apply=function(e,t,n){ioe(e,t),ooe(e,t),roe(e,t),soe(e,t),coe(e,t),loe(e,t),uoe(e,t),foe(e,t),doe(e,t),moe(e,t),Aoe(e,t),aoe(e,t,n),hoe(e,t,n),poe(e,t,n)};function k1e(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(ioe),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(ooe),e.lineWidth!==t.lineWidth&&n.push(roe),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push(soe),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(coe),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(loe),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push(uoe),e.depthMask!==t.depthMask&&n.push(foe),e.stencilMask!==t.stencilMask&&n.push(doe),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(moe),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(Aoe),n}Um.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=k1e(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let A=0;A<h;++A)f[A](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&aoe(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&hoe(e,n,o),(t!==n||i!==o||i.context!==o.context)&&poe(e,n,o)};Um.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:Ye.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:G.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?Ye.clone(e.viewport):void 0}};var Ue=Um;var U1e=new d;function Lt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var Fa={};Fa[ee.FLOAT]="float";Fa[ee.FLOAT_VEC2]="vec2";Fa[ee.FLOAT_VEC3]="vec3";Fa[ee.FLOAT_VEC4]="vec4";Fa[ee.INT]="int";Fa[ee.INT_VEC2]="ivec2";Fa[ee.INT_VEC3]="ivec3";Fa[ee.INT_VEC4]="ivec4";Fa[ee.BOOL]="bool";Fa[ee.BOOL_VEC2]="bvec2";Fa[ee.BOOL_VEC3]="bvec3";Fa[ee.BOOL_VEC4]="bvec4";Fa[ee.FLOAT_MAT2]="mat2";Fa[ee.FLOAT_MAT3]="mat3";Fa[ee.FLOAT_MAT4]="mat4";Fa[ee.SAMPLER_2D]="sampler2D";Fa[ee.SAMPLER_CUBE]="samplerCube";Lt.prototype.getDeclaration=function(e){let t=`uniform ${Fa[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var G1e={czm_viewport:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return N.getTranslation(e.inverseView,U1e)}}),czm_frameNumber:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Lt({size:9,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},rp=G1e;function z1e(e,t,n,i){switch(t.type){case e.FLOAT:return new goe(e,t,n,i);case e.FLOAT_VEC2:return new _oe(e,t,n,i);case e.FLOAT_VEC3:return new yoe(e,t,n,i);case e.FLOAT_VEC4:return new Coe(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new HG(e,t,n,i);case e.UNSIGNED_INT_SAMPLER_2D:return new HG(e,t,n,i);case e.INT:case e.BOOL:return new Eoe(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Ioe(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new xoe(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new boe(e,t,n,i);case e.FLOAT_MAT2:return new Toe(e,t,n,i);case e.FLOAT_MAT3:return new Soe(e,t,n,i);case e.FLOAT_MAT4:return new woe(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function goe(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}goe.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function _oe(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}_oe.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function yoe(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}yoe.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z)))};function Coe(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}Coe.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(se.equals(e,this._value)||(this._value=se.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function HG(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}HG.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;e.bindTexture(t._target,t._texture)};HG.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function Eoe(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}Eoe.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function Ioe(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}Ioe.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function xoe(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}xoe.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function boe(e,t,n,i){this.name=n,this.value=void 0,this._value=new se,this._gl=e,this._location=i}boe.prototype.set=function(){let e=this.value;se.equals(e,this._value)||(se.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var V1e=new Float32Array(4);function Toe(e,t,n,i){this.name=n,this.value=void 0,this._value=new Gi,this._gl=e,this._location=i}Toe.prototype.set=function(){if(!Gi.equalsArray(this.value,this._value,0)){Gi.clone(this.value,this._value);let e=Gi.toArray(this.value,V1e);this._gl.uniformMatrix2fv(this._location,!1,e)}};var H1e=new Float32Array(9);function Soe(e,t,n,i){this.name=n,this.value=void 0,this._value=new J,this._gl=e,this._location=i}Soe.prototype.set=function(){if(!J.equalsArray(this.value,this._value,0)){J.clone(this.value,this._value);let e=J.toArray(this.value,H1e);this._gl.uniformMatrix3fv(this._location,!1,e)}};var W1e=new Float32Array(16);function woe(e,t,n,i){this.name=n,this.value=void 0,this._value=new N,this._gl=e,this._location=i}woe.prototype.set=function(){if(!N.equalsArray(this.value,this._value,0)){N.clone(this.value,this._value);let e=N.toArray(this.value,W1e);this._gl.uniformMatrix4fv(this._location,!1,e)}};var yD=z1e;function j1e(e,t,n,i){switch(t.type){case e.FLOAT:return new Boe(e,t,n,i);case e.FLOAT_VEC2:return new Doe(e,t,n,i);case e.FLOAT_VEC3:return new voe(e,t,n,i);case e.FLOAT_VEC4:return new Poe(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new U6(e,t,n,i);case e.INT:case e.BOOL:return new Roe(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Moe(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new Noe(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new Loe(e,t,n,i);case e.FLOAT_MAT2:return new Ooe(e,t,n,i);case e.FLOAT_MAT3:return new Foe(e,t,n,i);case e.FLOAT_MAT4:return new Qoe(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function Boe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}Boe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function Doe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}Doe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function voe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}voe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Poe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Poe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?G.equalsArray(s,n,o)||(G.pack(s,n,o),i=!0):l(s.x)&&(se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function U6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}U6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];e.activeTexture(t+o),e.bindTexture(r._target,r._texture)}};U6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Roe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Roe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Moe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Moe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function Noe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}Noe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function Loe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}Loe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function Ooe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Ooe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Gi.equalsArray(s,n,o)||(Gi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function Foe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}Foe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];J.equalsArray(s,n,o)||(J.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function Qoe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}Qoe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];N.equalsArray(s,n,o)||(N.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var CD=j1e;var Y1e=0;function sp(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=q1e(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=Y1e++}sp.fromCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.getShaderProgram(e)};sp.replaceCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(sp.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return WG(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return WG(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return WG(this),this._uniformsByName}}});function koe(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function q1e(e,t){let n={};if(!Yt.highpFloatSupported||!Yt.highpIntSupported){let i,o,r,s,a=koe(e),c=koe(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var Gm="[Cesium WebGL] ";function K1e(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let A in a)a.hasOwnProperty(A)&&e.bindAttribLocation(s,a[A],A);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${Gm}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${Gm}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${Gm}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${Gm}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${Gm}Vertex shader compile log: ${c}`),console.error(`${Gm} Vertex shader source: +${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${Gm}Fragment shader compile log: ${c}`),console.error(`${Gm} Fragment shader source: +${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new ce(u);function h(A,g){if(!l(f))return;let m=f.getTranslatedShaderSource(A);if(m===""){console.error(`${Gm}${g} shader translation failed.`);return}console.error(`${Gm}Translated ${g} shaderSource: +${m}`)}}function X1e(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function J1e(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=yD(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,A,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(A=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),A.push(e.getUniform(t,g))))}else{h=[];for(let _=0;_<a.size;++_)g=e.getUniformLocation(t,`${u}[${_}]`),g!==null&&h.push(g);f=CD(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function Z1e(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=rp[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function $1e(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function WG(e){l(e._program)||Uoe(e)}function Uoe(e){let t=e._program,n=e._gl,i=K1e(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=J1e(n,i),s=Z1e(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=X1e(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=$1e(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,A=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Uoe(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=A;let y=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(y?y[1]:m.message)}})}sp.prototype._bind=function(){WG(this),this._gl.useProgram(this._program)};sp.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};sp.prototype.isDestroyed=function(){return!1};sp.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};sp.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var an=sp;var ED=`/** + * A built-in GLSL floating-point constant for converting radians to degrees. + * + * @alias czm_degreesPerRadian + * @glslConstant + * + * @see CesiumMath.DEGREES_PER_RADIAN + * + * @example + * // GLSL declaration + * const float czm_degreesPerRadian = ...; + * + * // Example + * float deg = czm_degreesPerRadian * rad; + */ +const float czm_degreesPerRadian = 57.29577951308232; +`;var ID=`/** + * A built-in GLSL vec2 constant for defining the depth range. + * This is a workaround to a bug where IE11 does not implement gl_DepthRange. + * + * @alias czm_depthRange + * @glslConstant + * + * @example + * // GLSL declaration + * float depthRangeNear = czm_depthRange.near; + * float depthRangeFar = czm_depthRange.far; + * + */ +const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0); +`;var xD=`/** + * 0.1 + * + * @name czm_epsilon1 + * @glslConstant + */ +const float czm_epsilon1 = 0.1; +`;var bD=`/** + * 0.01 + * + * @name czm_epsilon2 + * @glslConstant + */ +const float czm_epsilon2 = 0.01; +`;var TD=`/** + * 0.001 + * + * @name czm_epsilon3 + * @glslConstant + */ +const float czm_epsilon3 = 0.001; +`;var SD=`/** + * 0.0001 + * + * @name czm_epsilon4 + * @glslConstant + */ +const float czm_epsilon4 = 0.0001; +`;var wD=`/** + * 0.00001 + * + * @name czm_epsilon5 + * @glslConstant + */ +const float czm_epsilon5 = 0.00001; +`;var BD=`/** + * 0.000001 + * + * @name czm_epsilon6 + * @glslConstant + */ +const float czm_epsilon6 = 0.000001; +`;var DD=`/** + * 0.0000001 + * + * @name czm_epsilon7 + * @glslConstant + */ +const float czm_epsilon7 = 0.0000001; +`;var vD=`/** + * DOC_TBA + * + * @name czm_infinity + * @glslConstant + */ +const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp? +`;var PD=`/** + * A built-in GLSL floating-point constant for <code>1/pi</code>. + * + * @alias czm_oneOverPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverPi = ...; + * + * // Example + * float pi = 1.0 / czm_oneOverPi; + */ +const float czm_oneOverPi = 0.3183098861837907; +`;var RD=`/** + * A built-in GLSL floating-point constant for <code>1/2pi</code>. + * + * @alias czm_oneOverTwoPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_TWO_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverTwoPi = ...; + * + * // Example + * float pi = 2.0 * czm_oneOverTwoPi; + */ +const float czm_oneOverTwoPi = 0.15915494309189535; +`;var MD=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE} + * + * @name czm_passCesium3DTile + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTile = 4.0; +`;var ND=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION} + * + * @name czm_passCesium3DTileClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassification = 5.0; +`;var LD=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW} + * + * @name czm_passCesium3DTileClassificationIgnoreShow + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; +`;var OD=`/** + * The automatic GLSL constant for {@link Pass#CLASSIFICATION} + * + * @name czm_passClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passClassification = 7.0; +`;var FD=`/** + * The automatic GLSL constant for {@link Pass#COMPUTE} + * + * @name czm_passCompute + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCompute = 1.0; +`;var QD=`/** + * The automatic GLSL constant for {@link Pass#ENVIRONMENT} + * + * @name czm_passEnvironment + * @glslConstant + * + * @see czm_pass + */ +const float czm_passEnvironment = 0.0; +`;var kD=`/** + * The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS} + * + * @name czm_passGaussianSplats + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGaussianSplats = 10.0; +`;var UD=`/** + * The automatic GLSL constant for {@link Pass#GLOBE} + * + * @name czm_passGlobe + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGlobe = 2.0; +`;var GD=`/** + * The automatic GLSL constant for {@link Pass#OPAQUE} + * + * @name czm_passOpaque + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOpaque = 7.0; +`;var zD=`/** + * The automatic GLSL constant for {@link Pass#OVERLAY} + * + * @name czm_passOverlay + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOverlay = 11.0; +`;var VD=`/** + * The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION} + * + * @name czm_passTerrainClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTerrainClassification = 3.0; +`;var HD=`/** + * The automatic GLSL constant for {@link Pass#TRANSLUCENT} + * + * @name czm_passTranslucent + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTranslucent = 8.0; +`;var WD=`/** + * The automatic GLSL constant for {@link Pass#VOXELS} + * + * @name czm_passVoxels + * @glslConstant + * + * @see czm_pass + */ +const float czm_passVoxels = 9.0; +`;var jD=`/** + * A built-in GLSL floating-point constant for <code>Math.PI</code>. + * + * @alias czm_pi + * @glslConstant + * + * @see CesiumMath.PI + * + * @example + * // GLSL declaration + * const float czm_pi = ...; + * + * // Example + * float twoPi = 2.0 * czm_pi; + */ +const float czm_pi = 3.141592653589793; +`;var YD=`/** + * A built-in GLSL floating-point constant for <code>pi/4</code>. + * + * @alias czm_piOverFour + * @glslConstant + * + * @see CesiumMath.PI_OVER_FOUR + * + * @example + * // GLSL declaration + * const float czm_piOverFour = ...; + * + * // Example + * float pi = 4.0 * czm_piOverFour; + */ +const float czm_piOverFour = 0.7853981633974483; +`;var qD=`/** + * A built-in GLSL floating-point constant for <code>pi/6</code>. + * + * @alias czm_piOverSix + * @glslConstant + * + * @see CesiumMath.PI_OVER_SIX + * + * @example + * // GLSL declaration + * const float czm_piOverSix = ...; + * + * // Example + * float pi = 6.0 * czm_piOverSix; + */ +const float czm_piOverSix = 0.5235987755982988; +`;var KD=`/** + * A built-in GLSL floating-point constant for <code>pi/3</code>. + * + * @alias czm_piOverThree + * @glslConstant + * + * @see CesiumMath.PI_OVER_THREE + * + * @example + * // GLSL declaration + * const float czm_piOverThree = ...; + * + * // Example + * float pi = 3.0 * czm_piOverThree; + */ +const float czm_piOverThree = 1.0471975511965976; +`;var XD=`/** + * A built-in GLSL floating-point constant for <code>pi/2</code>. + * + * @alias czm_piOverTwo + * @glslConstant + * + * @see CesiumMath.PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_piOverTwo = ...; + * + * // Example + * float pi = 2.0 * czm_piOverTwo; + */ +const float czm_piOverTwo = 1.5707963267948966; +`;var JD=`/** + * A built-in GLSL floating-point constant for converting degrees to radians. + * + * @alias czm_radiansPerDegree + * @glslConstant + * + * @see CesiumMath.RADIANS_PER_DEGREE + * + * @example + * // GLSL declaration + * const float czm_radiansPerDegree = ...; + * + * // Example + * float rad = czm_radiansPerDegree * deg; + */ +const float czm_radiansPerDegree = 0.017453292519943295; +`;var ZD=`/** + * The constant identifier for the 2D {@link SceneMode} + * + * @name czm_sceneMode2D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode2D = 2.0; +`;var $D=`/** + * The constant identifier for the 3D {@link SceneMode} + * + * @name czm_sceneMode3D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode3D = 3.0; +`;var ev=`/** + * The constant identifier for the Columbus View {@link SceneMode} + * + * @name czm_sceneModeColumbusView + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneModeColumbusView = 1.0; +`;var tv=`/** + * The constant identifier for the Morphing {@link SceneMode} + * + * @name czm_sceneModeMorphing + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + */ +const float czm_sceneModeMorphing = 0.0; +`;var nv=`/** + * A built-in GLSL floating-point constant for one solar radius. + * + * @alias czm_solarRadius + * @glslConstant + * + * @see CesiumMath.SOLAR_RADIUS + * + * @example + * // GLSL declaration + * const float czm_solarRadius = ...; + */ +const float czm_solarRadius = 695500000.0; +`;var iv=`/** + * A built-in GLSL floating-point constant for <code>3pi/2</code>. + * + * @alias czm_threePiOver2 + * @glslConstant + * + * @see CesiumMath.THREE_PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_threePiOver2 = ...; + * + * // Example + * float pi = (2.0 / 3.0) * czm_threePiOver2; + */ +const float czm_threePiOver2 = 4.71238898038469; +`;var ov=`/** + * A built-in GLSL floating-point constant for <code>2pi</code>. + * + * @alias czm_twoPi + * @glslConstant + * + * @see CesiumMath.TWO_PI + * + * @example + * // GLSL declaration + * const float czm_twoPi = ...; + * + * // Example + * float pi = czm_twoPi / 2.0; + */ +const float czm_twoPi = 6.283185307179586; +`;var rv=`/** + * The maximum latitude, in radians, both North and South, supported by a Web Mercator + * (EPSG:3857) projection. Technically, the Mercator projection is defined + * for any latitude up to (but not including) 90 degrees, but it makes sense + * to cut it off sooner because it grows exponentially with increasing latitude. + * The logic behind this particular cutoff value, which is the one used by + * Google Maps, Bing Maps, and Esri, is that it makes the projection + * square. That is, the rectangle is equal in the X and Y directions. + * + * The constant value is computed as follows: + * czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi))) + * + * @name czm_webMercatorMaxLatitude + * @glslConstant + */ +const float czm_webMercatorMaxLatitude = 1.4844222297453324; +`;var sv=`/** + * @name czm_depthRangeStruct + * @glslStruct + */ +struct czm_depthRangeStruct +{ + float near; + float far; +}; +`;var av=`/** + * Holds material information that can be used for lighting. Returned by all czm_getMaterial functions. + * + * @name czm_material + * @glslStruct + * + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} specular Intensity of incoming light reflecting in a single direction. + * @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + */ +struct czm_material +{ + vec3 diffuse; + float specular; + float shininess; + vec3 normal; + vec3 emission; + float alpha; +}; +`;var cv=`/** + * Used as input to every material's czm_getMaterial function. + * + * @name czm_materialInput + * @glslStruct + * + * @property {float} s 1D texture coordinates. + * @property {vec2} st 2D texture coordinates. + * @property {vec3} str 3D texture coordinates. + * @property {vec3} normalEC Unperturbed surface normal in eye coordinates. + * @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space. + * @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye. + * @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials. + * @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials. + * @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials. +* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials. + */ +struct czm_materialInput +{ + float s; + vec2 st; + vec3 str; + vec3 normalEC; + mat3 tangentToEyeMatrix; + vec3 positionToEyeEC; + float height; + float slope; + float aspect; + float waterMask; +}; +`;var lv=`/** + * Struct for representing a material for a {@link Model}. The model + * rendering pipeline will pass this struct between material, custom shaders, + * and lighting stages. This is not to be confused with {@link czm_material} + * which is used by the older Fabric materials system, although they are similar. + * <p> + * All color values (diffuse, specular, emissive) are in linear color space. + * </p> + * + * @name czm_modelMaterial + * @glslStruct + * + * @property {vec4} baseColor The base color of the material. + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + * @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature. + * @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces. + * @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded. + * @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + */ +struct czm_modelMaterial { + vec4 baseColor; + vec3 diffuse; + float alpha; + vec3 specular; + float roughness; + vec3 normalEC; + float occlusion; + vec3 emissive; +#ifdef USE_SPECULAR + float specularWeight; +#endif +#ifdef USE_ANISOTROPY + vec3 anisotropicT; + vec3 anisotropicB; + float anisotropyStrength; +#endif +#ifdef USE_CLEARCOAT + float clearcoatFactor; + float clearcoatRoughness; + vec3 clearcoatNormal; + // Add clearcoatF0 when KHR_materials_ior is implemented +#endif +}; +`;var uv=`/** + * Struct for representing the output of a custom vertex shader. + * + * @name czm_modelVertexOutput + * @glslStruct + * + * @see {@link CustomShader} + * @see {@link Model} + * + * @property {vec3} positionMC The position of the vertex in model coordinates + * @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives. + */ +struct czm_modelVertexOutput { + vec3 positionMC; + float pointSize; +}; +`;var fv=`/** + * DOC_TBA + * + * @name czm_ray + * @glslStruct + */ +struct czm_ray +{ + vec3 origin; + vec3 direction; +}; +`;var dv=`/** + * DOC_TBA + * + * @name czm_raySegment + * @glslStruct + */ +struct czm_raySegment +{ + float start; + float stop; +}; + +/** + * DOC_TBA + * + * @name czm_emptyRaySegment + * @glslConstant + */ +const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity); + +/** + * DOC_TBA + * + * @name czm_fullRaySegment + * @glslConstant + */ +const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); +`;var hv=`struct czm_shadowParameters +{ +#ifdef USE_CUBE_MAP_SHADOW + vec3 texCoords; +#else + vec2 texCoords; +#endif + + float depthBias; + float depth; + float nDotL; + vec2 texelStepSize; + float normalShadingSmooth; + float darkness; +}; +`;var mv=`/** + * Converts an HSB color (hue, saturation, brightness) to RGB + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_HSBToRGB + * @glslFunction + * + * @param {vec3} hsb The color in HSB. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + +vec3 czm_HSBToRGB(vec3 hsb) +{ + vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www); + return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y); +} +`;var Av=`/** + * Converts an HSL color (hue, saturation, lightness) to RGB + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_HSLToRGB + * @glslFunction + * + * @param {vec3} rgb The color in HSL. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 hueToRGB(float hue) +{ + float r = abs(hue * 6.0 - 3.0) - 1.0; + float g = 2.0 - abs(hue * 6.0 - 2.0); + float b = 2.0 - abs(hue * 6.0 - 4.0); + return clamp(vec3(r, g, b), 0.0, 1.0); +} + +vec3 czm_HSLToRGB(vec3 hsl) +{ + vec3 rgb = hueToRGB(hsl.x); + float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y; + return (rgb - 0.5) * c + hsl.z; +} +`;var pv=`/** + * Converts an RGB color to HSB (hue, saturation, brightness) + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_RGBToHSB + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + +vec3 czm_RGBToHSB(vec3 rgb) +{ + vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g)); + vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r)); + + float d = q.x - min(q.w, q.y); + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x); +} +`;var gv=`/** + * Converts an RGB color to HSL (hue, saturation, lightness) + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_RGBToHSL + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSL. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 RGBtoHCV(vec3 rgb) +{ + // Based on work by Sam Hocevar and Emil Persson + vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0); + vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx); + float c = q.x - min(q.w, q.y); + float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z); + return vec3(h, c, q.x); +} + +vec3 czm_RGBToHSL(vec3 rgb) +{ + vec3 hcv = RGBtoHCV(rgb); + float l = hcv.z - hcv.y * 0.5; + float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7); + return vec3(hcv.x, s, l); +} +`;var _v=`/** + * Converts an RGB color to CIE Yxy. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_RGBToXYZ + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in CIE Yxy. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_RGBToXYZ(vec3 rgb) +{ + const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193, + 0.3576, 0.7152, 0.1192, + 0.1805, 0.0722, 0.9505); + vec3 xyz = RGB2XYZ * rgb; + vec3 Yxy; + Yxy.r = xyz.g; + float temp = dot(vec3(1.0), xyz); + Yxy.gb = xyz.rg / temp; + return Yxy; +} +`;var yv=`/** + * Converts a CIE Yxy color to RGB. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_XYZToRGB + * @glslFunction + * + * @param {vec3} Yxy The color in CIE Yxy. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_XYZToRGB(vec3 Yxy) +{ + const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556, + -1.5371, 1.8760, -0.2040, + -0.4985, 0.0416, 1.0572); + vec3 xyz; + xyz.r = Yxy.r * Yxy.g / Yxy.b; + xyz.g = Yxy.r; + xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b; + + return XYZ2RGB * xyz; +} +`;var Cv=`// See: +// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + +vec3 czm_acesTonemapping(vec3 color) { + float g = 0.985; + float a = 0.065; + float b = 0.0001; + float c = 0.433; + float d = 0.238; + + color = (color * (color + a) - b) / (color * (g * color + c) + d); + + color = clamp(color, 0.0, 1.0); + + return color; +} +`;var Ev=`/** + * @private + */ +float czm_alphaWeight(float a) +{ + float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + + // See Weighted Blended Order-Independent Transparency for examples of different weighting functions: + // http://jcgt.org/published/0002/02/09/ + return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0)))); +} +`;var Iv=`/** + * Procedural anti-aliasing by blurring two colors that meet at a sharp edge. + * + * @name czm_antialias + * @glslFunction + * + * @param {vec4} color1 The color on one side of the edge. + * @param {vec4} color2 The color on the other side of the edge. + * @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>. + * @param {float} dist The distance to the edge in texture coordinates. + * @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors. + * @returns {vec4} The anti-aliased color. + * + * @example + * // GLSL declarations + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor); + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist); + * + * // get the color for a material that has a sharp edge at the line y = 0.5 in texture space + * float dist = abs(textureCoordinates.t - 0.5); + * vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t)); + * vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1); + */ +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor) +{ + float val1 = clamp(dist / fuzzFactor, 0.0, 1.0); + float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0); + val1 = val1 * (1.0 - val2); + val1 = val1 * val1 * (3.0 - (2.0 * val1)); + val1 = pow(val1, 0.5); //makes the transition nicer + + vec4 midColor = (color1 + color2) * 0.5; + return mix(midColor, currentColor, val1); +} + +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist) +{ + return czm_antialias(color1, color2, currentColor, dist, 0.1); +} +`;var xv=`/** + * Apply a HSB color shift to an RGB color. + * + * @param {vec3} rgb The color in RGB space. + * @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment + * @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects. + * + * @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range. + */ +vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) { + // Convert rgb color to hsb + vec3 hsb = czm_RGBToHSB(rgb); + + // Perform hsb shift + // Hue cycles around so no clamp is needed. + hsb.x += hsbShift.x; // hue + hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation + + // brightness + // + // Some shaders such as atmosphere-related effects need to leave black + // pixels unchanged + if (ignoreBlackPixels) { + hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0; + } else { + hsb.z = hsb.z + hsbShift.z; + } + hsb.z = clamp(hsb.z, 0.0, 1.0); + + // Convert shifted hsb back to rgb + return czm_HSBToRGB(hsb); +} +`;var bv=`/** + * Approximately computes spherical coordinates given a normal. + * Uses approximate inverse trigonometry for speed and consistency, + * since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU. + * + * @name czm_approximateSphericalCoordinates + * @glslFunction + * + * @param {vec3} normal arbitrary-length normal. + * + * @returns {vec2} Approximate latitude and longitude spherical coordinates. + */ +vec2 czm_approximateSphericalCoordinates(vec3 normal) { + // Project into plane with vertical for latitude + float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z); + float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y); + return vec2(latitudeApproximation, longitudeApproximation); +} +`;var Tv=`/** + * Compute a rational approximation to tanh(x) + * + * @param {float} x A real number input + * @returns {float} An approximation for tanh(x) +*/ +float czm_approximateTanh(float x) { + float x2 = x * x; + return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2))); +} +`;var Sv=`/** + * Determines if the fragment is back facing + * + * @name czm_backFacing + * @glslFunction + * + * @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>. + */ +bool czm_backFacing() +{ + // !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494. + return gl_FrontFacing == false; +} +`;var wv=`/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a float expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {float} a Value to return if the comparison is true. + * @param {float} b Value to return if the comparison is false. + * + * @returns {float} equivalent of comparison ? a : b + */ +float czm_branchFreeTernary(bool comparison, float a, float b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec2 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec2} a Value to return if the comparison is true. + * @param {vec2} b Value to return if the comparison is false. + * + * @returns {vec2} equivalent of comparison ? a : b + */ +vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec3 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec4 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} +`;var Bv=` +vec4 czm_cascadeColor(vec4 weights) +{ + return vec4(1.0, 0.0, 0.0, 1.0) * weights.x + + vec4(0.0, 1.0, 0.0, 1.0) * weights.y + + vec4(0.0, 0.0, 1.0, 1.0) * weights.z + + vec4(1.0, 0.0, 1.0, 1.0) * weights.w; +} +`;var Dv=` +uniform vec4 shadowMap_cascadeDistances; + +float czm_cascadeDistance(vec4 weights) +{ + return dot(shadowMap_cascadeDistances, weights); +} +`;var vv=` +uniform mat4 shadowMap_cascadeMatrices[4]; + +mat4 czm_cascadeMatrix(vec4 weights) +{ + return shadowMap_cascadeMatrices[0] * weights.x + + shadowMap_cascadeMatrices[1] * weights.y + + shadowMap_cascadeMatrices[2] * weights.z + + shadowMap_cascadeMatrices[3] * weights.w; +} +`;var Pv=` +uniform vec4 shadowMap_cascadeSplits[2]; + +vec4 czm_cascadeWeights(float depthEye) +{ + // One component is set to 1.0 and all others set to 0.0. + vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye)); + vec4 far = step(depthEye, shadowMap_cascadeSplits[1]); + return near * far; +} +`;var Rv=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { + float signedDistance = texture(clippingDistance, uv).r; + return (signedDistance - 0.5) * 2.0; +} + +void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) { + // Position is completely outside of polygons bounds + vec2 rectUv = clippingPosition; + if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) { + #ifdef CLIPPING_INVERSE + discard; + #endif + return; + } + + vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0)); + vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005)); + float dimension = float(extentsLength); + if (extentsLength > 2) { + dimension = ceil(log2(float(extentsLength))); + } + + vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension; + vec2 uv = textureOffset + rectUv / dimension; + + float signedDistance = getSignedDistance(uv, clippingDistance); + + #ifdef CLIPPING_INVERSE + if (signedDistance > 0.0) { + discard; + } + #else + if (signedDistance < 0.0) { + discard; + } + #endif +} +`;var Mv=`/** + * DOC_TBA + * + * @name czm_columbusViewMorph + * @glslFunction + */ +vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time) +{ + // Just linear for now. + vec3 p = mix(position2D.xyz, position3D.xyz, time); + return vec4(p, 1.0); +} +`;var Nv=`/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {vec3} positionWC Position of the fragment in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + czm_ray primaryRay, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + vec3 direction = normalize(primaryRay.direction); + + float cosAngle = dot(direction, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +`;var Lv=`/** + * Compute atmosphere scattering for the ground atmosphere and fog. This method + * uses automatic uniforms so it is always synced with the scene settings. + * + * @name czm_computeGroundAtmosphereScattering + * @glslfunction + * + * @param {vec3} positionWC The position of the fragment in world coordinates. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + czm_computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var Ov=`/** + * Returns a position in model coordinates relative to eye taking into + * account the current scene mode: 3D, 2D, or Columbus view. + * <p> + * This uses standard position attributes, <code>position3DHigh</code>, + * <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>, + * and should be used when writing a vertex shader for an {@link Appearance}. + * </p> + * + * @name czm_computePosition + * @glslFunction + * + * @returns {vec4} The position relative to eye. + * + * @example + * vec4 p = czm_computePosition(); + * v_positionEC = (czm_modelViewRelativeToEye * p).xyz; + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * + * @see czm_translateRelativeToEye + */ +vec4 czm_computePosition(); +`;var Fv=`/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. This function uses automatic uniforms + * so the atmosphere settings are always synced with the current scene. + * + * @name czm_computeScattering + * @glslfunction + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. + const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. + const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = czm_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x)))); +} +`;var Qv=`/** + * @private + */ +vec2 cordic(float angle) +{ +// Scale the vector by the appropriate factor for the 24 iterations to follow. + vec2 vector = vec2(6.0725293500888267e-1, 0.0); +// Iteration 1 + float sense = (angle < 0.0) ? -1.0 : 1.0; + // float factor = sense * 1.0; // 2^-0 + mat2 rotation = mat2(1.0, sense, -sense, 1.0); + vector = rotation * vector; + angle -= sense * 7.8539816339744828e-1; // atan(2^-0) +// Iteration 2 + sense = (angle < 0.0) ? -1.0 : 1.0; + float factor = sense * 5.0e-1; // 2^-1 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.6364760900080609e-1; // atan(2^-1) +// Iteration 3 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.5e-1; // 2^-2 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4497866312686414e-1; // atan(2^-2) +// Iteration 4 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.25e-1; // 2^-3 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2435499454676144e-1; // atan(2^-3) +// Iteration 5 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.25e-2; // 2^-4 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.2418809995957350e-2; // atan(2^-4) +// Iteration 6 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.125e-2; // 2^-5 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.1239833430268277e-2; // atan(2^-5) +// Iteration 7 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.5625e-2; // 2^-6 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5623728620476831e-2; // atan(2^-6) +// Iteration 8 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.8125e-3; // 2^-7 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.8123410601011111e-3; // atan(2^-7) +// Iteration 9 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.90625e-3; // 2^-8 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.9062301319669718e-3; // atan(2^-8) +// Iteration 10 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.953125e-3; // 2^-9 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9531225164788188e-3; // atan(2^-9) +// Iteration 11 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.765625e-4; // 2^-10 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.7656218955931946e-4; // atan(2^-10) +// Iteration 12 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.8828125e-4; // 2^-11 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.8828121119489829e-4; // atan(2^-11) +// Iteration 13 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.44140625e-4; // 2^-12 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4414062014936177e-4; // atan(2^-12) +// Iteration 14 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.220703125e-4; // 2^-13 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2207031189367021e-4; // atan(2^-13) +// Iteration 15 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.103515625e-5; // 2^-14 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.1035156174208773e-5; // atan(2^-14) +// Iteration 16 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.0517578125e-5; // 2^-15 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.0517578115526096e-5; // atan(2^-15) +// Iteration 17 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.52587890625e-5; // 2^-16 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5258789061315762e-5; // atan(2^-16) +// Iteration 18 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.62939453125e-6; // 2^-17 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.6293945311019700e-6; // atan(2^-17) +// Iteration 19 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.814697265625e-6; // 2^-18 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.8146972656064961e-6; // atan(2^-18) +// Iteration 20 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.9073486328125e-6; // 2^-19 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9073486328101870e-6; // atan(2^-19) +// Iteration 21 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.5367431640625e-7; // 2^-20 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.5367431640596084e-7; // atan(2^-20) +// Iteration 22 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.76837158203125e-7; // 2^-21 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.7683715820308884e-7; // atan(2^-21) +// Iteration 23 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.384185791015625e-7; // 2^-22 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.3841857910155797e-7; // atan(2^-22) +// Iteration 24 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.1920928955078125e-7; // 2^-23 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; +// angle -= sense * 1.1920928955078068e-7; // atan(2^-23) + + return vector; +} + +/** + * Computes the cosine and sine of the provided angle using the CORDIC algorithm. + * + * @name czm_cosineAndSine + * @glslFunction + * + * @param {float} angle The angle in radians. + * + * @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate). + * + * @example + * vec2 v = czm_cosineAndSine(czm_piOverSix); + * float cosine = v.x; + * float sine = v.y; + */ +vec2 czm_cosineAndSine(float angle) +{ + if (angle < -czm_piOverTwo || angle > czm_piOverTwo) + { + if (angle < 0.0) + { + return -cordic(angle + czm_pi); + } + else + { + return -cordic(angle - czm_pi); + } + } + else + { + return cordic(angle); + } +} +`;var kv=`/** + * Decompresses texture coordinates that were packed into a single float. + * + * @name czm_decompressTextureCoordinates + * @glslFunction + * + * @param {float} encoded The compressed texture coordinates. + * @returns {vec2} The decompressed texture coordinates. + */ + vec2 czm_decompressTextureCoordinates(float encoded) + { + float temp = encoded / 4096.0; + float xZeroTo4095 = floor(temp); + float stx = xZeroTo4095 / 4095.0; + float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0; + return vec2(stx, sty); + } +`;var Uv=`// emulated noperspective +#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH) +out float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2. + * GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes, + * capping the shadow volume. More information here: + * https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt. + * + * When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring + * no geometry gets clipped by setting the clip space z value to 0.0 and then + * sending the unaltered screen space z value (using emulated noperspective + * interpolation) to the frag shader where it is clamped to [0,1] and then + * written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on: + * https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv. + * + * When GL_EXT_frag_depth is not available, which is the case on some mobile + * devices, we must attempt to fix this only in the vertex shader. + * The approach is to clamp the z value to the far plane, which closes the + * shadow volume but also distorts the geometry, so there can still be artifacts + * on frustum seams. + * + * @name czm_depthClamp + * @glslFunction + * + * @param {vec4} coords The vertex in clip coordinates. + * @returns {vec4} The modified vertex. + * + * @example + * gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0)); + * + * @see czm_writeDepthClamp + */ +vec4 czm_depthClamp(vec4 coords) +{ +#ifndef LOG_DEPTH +#if __VERSION__ == 300 || defined(GL_EXT_frag_depth) + v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w; + coords.z = 0.0; +#else + coords.z = min(coords.z, coords.w); +#endif +#endif + return coords; +} +`;var Gv=`/** + * Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system + * to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the + * surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping. + * <br /><br /> + * The ellipsoid is assumed to be centered at the model coordinate's origin. + * + * @name czm_eastNorthUpToEyeCoordinates + * @glslFunction + * + * @param {vec3} positionMC The position on the ellipsoid in model coordinates. + * @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates. + * + * @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates. + * + * @example + * // Transform a vector defined in the east-north-up coordinate + * // system, (0, 0, 1) which is the surface normal, to eye + * // coordinates. + * mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + * vec3 normalEC = m * vec3(0.0, 0.0, 1.0); + */ +mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC) +{ + vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates + vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates + vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates + + return mat3( + tangentEC.x, tangentEC.y, tangentEC.z, + bitangentEC.x, bitangentEC.y, bitangentEC.z, + normalEC.x, normalEC.y, normalEC.z); +} +`;var zv=`/** + * DOC_TBA + * + * @name czm_ellipsoidContainsPoint + * @glslFunction + * + */ +bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point) +{ + vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz; + return (dot(scaled, scaled) <= 1.0); +} +`;var Vv=`/** + * Approximate uv coordinates based on the ellipsoid normal. + * + * @name czm_ellipsoidTextureCoordinates + * @glslFunction + */ +vec2 czm_ellipsoidTextureCoordinates(vec3 normal) +{ + return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5); +} +`;var Hv=`/** + * Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code> + * if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs + * <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s, + * <code>vec3</code>s, or <code>vec4</code>s. + * + * @name czm_equalsEpsilon + * @glslFunction + * + * @param {} left The first vector. + * @param {} right The second vector. + * @param {float} epsilon The epsilon to use for equality testing. + * @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise. + * + * @example + * // GLSL declarations + * bool czm_equalsEpsilon(float left, float right, float epsilon); + * bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon); + * bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon); + * bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon); + */ +bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec4(epsilon))); +} + +bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec3(epsilon))); +} + +bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec2(epsilon))); +} + +bool czm_equalsEpsilon(float left, float right, float epsilon) { + return (abs(left - right) <= epsilon); +} +`;var Wv=`/** + * DOC_TBA + * + * @name czm_eyeOffset + * @glslFunction + * + * @param {vec4} positionEC DOC_TBA. + * @param {vec3} eyeOffset DOC_TBA. + * + * @returns {vec4} DOC_TBA. + */ +vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset) +{ + // This equation is approximate in x and y. + vec4 p = positionEC; + vec4 zEyeOffset = normalize(p) * eyeOffset.z; + p.xy += eyeOffset.xy + zEyeOffset.xy; + p.z += zEyeOffset.z; + return p; +} +`;var jv=`/** + * Transforms a position from eye to window coordinates. The transformation + * from eye to clip coordinates is done using {@link czm_projection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * + * @name czm_eyeToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in eye coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_projection + * @see czm_viewportTransformation + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + */ +vec4 czm_eyeToWindowCoordinates(vec4 positionEC) +{ + vec4 q = czm_projection * positionEC; // clip coordinates + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var Yv=`/** + * Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input. + * + * Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on + * "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006. + * Adapted from ShaderFastLibs under MIT License. + * + * Chosen for the following characteristics over range [0, 1]: + * - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan) + * - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator) + * + * The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301); + * Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2. + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between 0 and 1 inclusive. + * + * @returns {float} Approximation of atan(x) + */ +float czm_fastApproximateAtan(float x) { + return x * (-0.1784 * x - 0.0663 * x * x + 1.0301); +} + +/** + * Approximation of atan2. + * + * Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html + * However, we replaced their atan curve with Michael Drobot's (see above). + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between -1 and 1 inclusive. + * @param {float} y Value between -1 and 1 inclusive. + * + * @returns {float} Approximation of atan2(x, y) + */ +float czm_fastApproximateAtan(float x, float y) { + // atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications. + // So range-reduce using abs and by flipping whether x or y is on top. + float t = abs(x); // t used as swap and atan result. + float opposite = abs(y); + float adjacent = max(t, opposite); + opposite = min(t, opposite); + + t = czm_fastApproximateAtan(opposite / adjacent); + + // Undo range reduction + t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var qv=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var Kv=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var Xv=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var Jv=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var Zv=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var $v=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var eP=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var tP=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var nP=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var iP=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var oP=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var rP=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var sP=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var aP=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var cP=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var lP=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var uP=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var fP=`/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when scaling by pixel ratio. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var dP=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * <br /><br /> + * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var hP=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var mP=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var AP=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var pP=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var gP=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + * <p> + * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + * </p> + * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var _P=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var yP=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var CP=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var EP=`/** + * Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var IP=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var xP=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var bP=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var TP=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var SP=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var wP=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var BP=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var DP=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var vP=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var PP=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var RP=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + * <p> + * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + * </p> + * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var MP=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var NP=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var LP=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var OP=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var FP=`/** + * Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate <code>high</code> and <code>low</code> bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + * <p> + * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + * </p> + * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var QP=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var kP=`/** + * Returns the transpose of the matrix. The input <code>matrix</code> can be + * a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var UP=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var GP=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var zP=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var VP=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + * <p> + * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + * </p> + * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var HP=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var WP=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + * <p> + * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + * </p> + * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var jP=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of <code>czm_viewportTransformation</code>. The transformation from + * normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var YP=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var qP=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + * </p> + * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + * </p> + * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var KP=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var aE={czm_degreesPerRadian:ED,czm_depthRange:ID,czm_epsilon1:xD,czm_epsilon2:bD,czm_epsilon3:TD,czm_epsilon4:SD,czm_epsilon5:wD,czm_epsilon6:BD,czm_epsilon7:DD,czm_infinity:vD,czm_oneOverPi:PD,czm_oneOverTwoPi:RD,czm_passCesium3DTile:MD,czm_passCesium3DTileClassification:ND,czm_passCesium3DTileClassificationIgnoreShow:LD,czm_passClassification:OD,czm_passCompute:FD,czm_passEnvironment:QD,czm_passGaussianSplats:kD,czm_passGlobe:UD,czm_passOpaque:GD,czm_passOverlay:zD,czm_passTerrainClassification:VD,czm_passTranslucent:HD,czm_passVoxels:WD,czm_pi:jD,czm_piOverFour:YD,czm_piOverSix:qD,czm_piOverThree:KD,czm_piOverTwo:XD,czm_radiansPerDegree:JD,czm_sceneMode2D:ZD,czm_sceneMode3D:$D,czm_sceneModeColumbusView:ev,czm_sceneModeMorphing:tv,czm_solarRadius:nv,czm_threePiOver2:iv,czm_twoPi:ov,czm_webMercatorMaxLatitude:rv,czm_depthRangeStruct:sv,czm_material:av,czm_materialInput:cv,czm_modelMaterial:lv,czm_modelVertexOutput:uv,czm_ray:fv,czm_raySegment:dv,czm_shadowParameters:hv,czm_HSBToRGB:mv,czm_HSLToRGB:Av,czm_RGBToHSB:pv,czm_RGBToHSL:gv,czm_RGBToXYZ:_v,czm_XYZToRGB:yv,czm_acesTonemapping:Cv,czm_alphaWeight:Ev,czm_antialias:Iv,czm_applyHSBShift:xv,czm_approximateSphericalCoordinates:bv,czm_approximateTanh:Tv,czm_backFacing:Sv,czm_branchFreeTernary:wv,czm_cascadeColor:Bv,czm_cascadeDistance:Dv,czm_cascadeMatrix:vv,czm_cascadeWeights:Pv,czm_clipPolygons:Rv,czm_columbusViewMorph:Mv,czm_computeAtmosphereColor:Nv,czm_computeGroundAtmosphereScattering:Lv,czm_computePosition:Ov,czm_computeScattering:Fv,czm_cosineAndSine:Qv,czm_decompressTextureCoordinates:kv,czm_depthClamp:Uv,czm_eastNorthUpToEyeCoordinates:Gv,czm_ellipsoidContainsPoint:zv,czm_ellipsoidTextureCoordinates:Vv,czm_equalsEpsilon:Hv,czm_eyeOffset:Wv,czm_eyeToWindowCoordinates:jv,czm_fastApproximateAtan:Yv,czm_fog:qv,czm_gammaCorrect:Kv,czm_geodeticSurfaceNormal:Xv,czm_getDefaultMaterial:Jv,czm_getDynamicAtmosphereLightDirection:Zv,czm_getLambertDiffuse:$v,czm_getSpecular:eP,czm_getWaterNoise:tP,czm_hue:nP,czm_inverseGamma:iP,czm_isEmpty:oP,czm_isFull:rP,czm_latitudeToWebMercatorFraction:sP,czm_lineDistance:aP,czm_linearToSrgb:cP,czm_luminance:lP,czm_maximumComponent:uP,czm_metersPerPixel:fP,czm_modelToWindowCoordinates:dP,czm_multiplyWithColorBalance:hP,czm_nearFarScalar:mP,czm_octDecode:AP,czm_packDepth:pP,czm_pbrLighting:gP,czm_pbrNeutralTonemapping:_P,czm_phong:yP,czm_planeDistance:CP,czm_pointAlongRay:EP,czm_rayEllipsoidIntersectionInterval:IP,czm_raySphereIntersectionInterval:xP,czm_readDepth:bP,czm_readNonPerspective:TP,czm_reverseLogDepth:SP,czm_round:wP,czm_saturation:BP,czm_shadowDepthCompare:DP,czm_shadowVisibility:vP,czm_signNotZero:PP,czm_sphericalHarmonics:RP,czm_srgbToLinear:MP,czm_tangentToEyeSpaceMatrix:NP,czm_textureCube:LP,czm_transformPlane:OP,czm_translateRelativeToEye:FP,czm_translucentPhong:QP,czm_transpose:kP,czm_unpackClippingExtents:UP,czm_unpackDepth:GP,czm_unpackFloat:zP,czm_unpackUint:VP,czm_valueTransform:HP,czm_vertexLogDepth:WP,czm_windowToEyeCoordinates:jP,czm_writeDepthClamp:YP,czm_writeLogDepth:qP,czm_writeNonPerspective:KP};function eNe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var XP=eNe;function Goe(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=` +`;return i})}function zoe(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=Goe(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Voe(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&fa._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=zoe(i,fa._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Voe(o,t)}}))}function tNe(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function nNe(e){let t=[],n=zoe("main",e,t);Voe(n,t),tNe(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function Hoe(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=` +#line 0 +${s[i]}`;r=Goe(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(_,y){return a=y,` +`});let c=[];r=r.replace(/#extension.*\n/gm,function(_){return c.push(_),` +`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=fa.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + precision highp int; +#else + precision mediump float; + precision mediump int; + #define highp mediump +#endif + +`);let A=e.defines;if(l(A))for(i=0,o=A.length;i<o;++i){let _=A[i];_.length!==0&&(f+=`#define ${_} +`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear + +`),n.floatingPointTexture&&(f+=`#define OES_texture_float + +`);let g="";e.includeBuiltIns&&(g=nNe(r)),f+=` +#line 0 +`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor; + +`),f+=g,f+=r,n.webgl2?f=`#version 300 es +${f}`:f=XP(f,t),f}function fa(e){e=e??V.EMPTY_OBJECT;let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=e.includeBuiltIns??!0}fa.prototype.clone=function(){return new fa({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};fa.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};fa.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(` +`);return`${t}:${n}:${i}:${o}`};fa.prototype.createCombinedVertexShader=function(e){return Hoe(this,!1,e)};fa.prototype.createCombinedFragmentShader=function(e){return Hoe(this,!0,e)};fa._czmBuiltinsAndUniforms={};for(let e in aE)aE.hasOwnProperty(e)&&(fa._czmBuiltinsAndUniforms[e]=aE[e]);for(let e in rp)if(rp.hasOwnProperty(e)){let t=rp[e];typeof t.getDeclaration=="function"&&(fa._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}fa.createPickVertexShaderSource=function(e){return`${fa.replaceMain(e,"czm_old_main")} +in vec4 pickColor; +out vec4 czm_pickColor; +void main() +{ + czm_old_main(); + czm_pickColor = pickColor; +}`};fa.createPickFragmentShaderSource=function(e,t){let n=fa.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor; +void main() +{ + czm_old_main(); + if (out_FragColor.a == 0.0) { + discard; + } + out_FragColor = czm_pickColor; +}`;return`${n} +${i}`};function iNe(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Woe(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function joe(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Woe(e,o))return o}}var oNe=["v_normalEC","v_normal"];fa.findNormalVarying=function(e){return Woe(e,"#ifdef HAS_NORMALS")?iNe(e,"HAS_NORMALS")?"v_normalEC":void 0:joe(e,oNe)};var rNe=["v_positionEC"];fa.findPositionVarying=function(e){return joe(e,rNe)};var He=fa;var JP=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; + +#ifdef EXTRUDED_GEOMETRY +in vec3 extrudeDirection; + +uniform float u_globeMinimumAltitude; +#endif // EXTRUDED_GEOMETRY + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif // PER_INSTANCE_COLOR + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +out vec4 v_sphericalExtents; +#else // SPHERICAL +out vec2 v_inversePlaneExtents; +out vec4 v_westPlane; +out vec4 v_southPlane; +#endif // SPHERICAL +out vec3 v_uvMinAndSphericalLongitudeRotation; +out vec3 v_uMaxAndInverseDistance; +out vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +void main() +{ + vec4 position = czm_computePosition(); + +#ifdef EXTRUDED_GEOMETRY + float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz)); + delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0; + + //extrudeDirection is zero for the top layer + position = position + vec4(extrudeDirection * delta, 0.0); +#endif + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL + v_sphericalExtents = czm_batchTable_sphericalExtents(batchId); + v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId); +#else // SPHERICAL +#ifdef COLUMBUS_VIEW_2D + vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId); + vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId); + + // If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var B_=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var Yoe={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};Yoe.NUMBER_OF_CLASSIFICATION_TYPES=3;var Jn=Object.freeze(Yoe);var sNe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Qa=Object.freeze(sNe);function aNe(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var ZP=aNe;function ap(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=cNe(t),o=e.floatingPointTexture,r=i===Ve.FLOAT&&!o,s=lNe(t,r),a=uNe(s,t,r),c=Math.floor(Yt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),A=1/f,g=A*.5,m=1/h,_=m*.5;this._textureDimensions=new U(f,h),this._textureStep=new se(A,g,m,_),this._pixelDatatype=r?Ve.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let y=4*f*h;this._batchValues=i===Ve.FLOAT&&!r?new Float32Array(y):new Uint8Array(y),this._batchValuesDirty=!1}Object.defineProperties(ap.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function cNe(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==q.UNSIGNED_BYTE){t=!0;break}return t?Ve.FLOAT:Ve.UNSIGNED_BYTE}function Koe(e,t){let n=e[t].componentsPerAttribute;return n===2?U:n===3?d:n===4?se:Number}function lNe(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==q.UNSIGNED_BYTE&&t?i+=4:++i}return n}function uNe(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==q.UNSIGNED_BYTE&&n?o+4:o+1}var $P=new se;function fNe(e,t,n){let i=se.unpack(e,t,$P),o=se.unpackFloat(i);i=se.unpack(e,t+4,$P);let r=se.unpackFloat(i);i=se.unpack(e,t+8,$P);let s=se.unpackFloat(i);i=se.unpack(e,t+12,$P);let a=se.unpackFloat(i);return se.fromElements(o,r,s,a,n)}function dNe(e,t,n){let i=se.packFloat(e.x,$P);se.pack(i,t,n),i=se.packFloat(e.y,i),se.pack(i,t,n+4),i=se.packFloat(e.z,i),se.pack(i,t,n+8),i=se.packFloat(e.w,i),se.pack(i,t,n+12)}var qoe=new se;ap.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==Ve.UNSIGNED_BYTE?a=fNe(this._batchValues,s,qoe):a=se.unpack(this._batchValues,s,qoe);let c=Koe(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var hNe=[void 0,void 0,new U,new d,new se],mNe=new se;ap.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=hNe[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Koe(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=mNe;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==Ve.UNSIGNED_BYTE?dNe(c,this._batchValues,h):se.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function ANe(e,t){let n=e._textureDimensions;e._texture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:on.NEAREST,flipY:!1})}function pNe(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}ap.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||ANe(this,e.context),pNe(this))};ap.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:Tt(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function gNe(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float numberOfAttributes = float(${t}); + return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5); +} +`:`uniform vec4 batchTextureStep; +uniform vec2 batchTextureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float stepY = batchTextureStep.z; + float centerY = batchTextureStep.w; + float numberOfAttributes = float(${t}); + float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x); + float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}function _Ne(e){return e===1?"float":`vec${e}`}function yNe(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function CNe(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=_Ne(o),a=yNe(o),c=e._offsets[t],u=`${s} ${r}(float batchId) +{ + vec2 st = computeSt(batchId); + st.x += batchTextureStep.x * float(${c}); +`;return e._packFloats&&i.componentDatatype!==Ve.UNSIGNED_BYTE?u+=`vec4 textureValue; +textureValue.x = czm_unpackFloat(texture(batchTexture, st)); +textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0))); +textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0))); +textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0))); +`:u+=` vec4 textureValue = texture(batchTexture, st); +`,u+=` ${s} value = textureValue${a}; +`,e._pixelDatatype===Ve.UNSIGNED_BYTE&&i.componentDatatype===q.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0; +`:e._pixelDatatype===Ve.FLOAT&&i.componentDatatype===q.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0; +`),u+=` return value; +} +`,u}ap.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture; +`;t+=`${gNe(this)} +`;let n=e.length;for(let i=0;i<n;++i)t+=CNe(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r} +${t} +${s}`}};ap.prototype.isDestroyed=function(){return!1};ap.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var cE=ap;function eu(e){this._ellipsoid=e??te.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(eu.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});eu.mercatorAngleToGeodeticLatitude=function(e){return D.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};eu.geodeticLatitudeToMercatorAngle=function(e){e>eu.MaximumLatitude?e=eu.MaximumLatitude:e<-eu.MaximumLatitude&&(e=-eu.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};eu.MaximumLatitude=eu.mercatorAngleToGeodeticLatitude(Math.PI);eu.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=eu.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};eu.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=eu.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var zi=eu;function ENe(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!N.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&Vn.transformToWorldCoordinates(e[r]);else N.multiplyTransformation(t,e[0].modelMatrix,t)}function G6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new De({componentDatatype:q.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function INe(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?G6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(G6(i.westHemisphereGeometry,n),G6(i.eastHemisphereGeometry,n))}}function xNe(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(ENe(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&Vn.splitLongitude(t[c]);if(INe(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(Vn.reorderForPostVertexCache(g.geometry),Vn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(Vn.reorderForPostVertexCache(g.westHemisphereGeometry),Vn.reorderForPreVertexCache(g.westHemisphereGeometry),Vn.reorderForPostVertexCache(g.eastHemisphereGeometry),Vn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let A=Vn.combineInstances(t);for(h=A.length,c=0;c<h;++c){u=A[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE&&Vn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE){let _=`${m}3D`,y=`${m}2D`;Vn.projectTo2D(u,m,_,y,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=le.fromVertices(u.attributes.position2D.values)),Vn.encodeAttribute(u,_,`${_}High`,`${_}Low`),Vn.encodeAttribute(u,y,`${y}High`,`${y}Low`)}s&&Vn.compressVertices(u)}if(!i){let g=[];for(h=A.length,c=0;c<h;++c)u=A[c],g=g.concat(Vn.fitToUnsignedShortIndices(u));A=g}return A}function z6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let A=h.indices.length;o+A>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:A}),o+=A}}function bNe(e,t){let n=[];return z6(e,"geometry",t,n),z6(e,"westHemisphereGeometry",t,n),z6(e,"eastHemisphereGeometry",t,n),n}var cp={};cp.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=xNe(e),t.length>0&&(n=Vn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=bNe(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],A=h.geometry;l(A)&&(c[f]=A.boundingSphere,u[f]=A.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=le.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=le.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function TNe(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function SNe(e,t){let n=e.length;for(let i=0;i<n;++i)TNe(e[i],t)}function wNe(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*le.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}cp.packCreateGeometryResults=function(e,t){let n=new Float64Array(wNe(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=c.offsetAttribute??-1;let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&le.pack(c.boundingSphere,n,s),s+=le.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&le.pack(c.boundingSphereCV,n,s),s+=le.packedLength;let A=c.attributes,g=[];for(let _ in A)A.hasOwnProperty(_)&&l(A[_])&&(g.push(_),l(o[_])||(o[_]=i.length,i.push(_)));n[s++]=g.length;for(let _=0;_<g.length;_++){let y=g[_],C=A[y];n[s++]=o[y],n[s++]=C.componentDatatype,n[s++]=C.componentsPerAttribute,n[s++]=C.normalize?1:0,n[s++]=C.values.length,n.set(C.values,s),s+=C.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};cp.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,A;n[s++]===1&&(h=le.unpack(n,s)),s+=le.packedLength,n[s++]===1&&(A=le.unpack(n,s)),s+=le.packedLength;let _,y,C,E=new yn,I=n[s++];for(i=0;i<I;i++){let S=t[n[s++]],B=n[s++];C=n[s++];let v=n[s++]!==0;_=n[s++],y=q.createTypedArray(B,_);for(let P=0;P<_;P++)y[P]=n[s++];E[S]=new De({componentDatatype:B,componentsPerAttribute:C,normalize:v,values:y})}let b;if(_=n[s++],_>0){let S=y.length/C;for(b=Oe.createTypedArray(S,_),i=0;i<_;i++)b[i]=n[s++]}o[r++]=new ht({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:A,indices:b,attributes:E,offsetAttribute:f})}return o};function BNe(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(N.pack(s.modelMatrix,i,o),o+=N.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function DNe(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=N.unpack(t,o),s;o+=N.packedLength,l(t[o])&&(s={offset:new uo(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}cp.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:BNe(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Ui,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};cp.unpackCombineGeometryParameters=function(e){let t=DNe(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=cp.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=t[o];A.geometry=h,++o}}let r=te.clone(e.ellipsoid),s=e.isGeographic?new Ui(r):new zi(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:N.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function Xoe(e){let t=e.length,n=1+(le.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,le.pack(e[r],i,o)):i[o++]=0,o+=le.packedLength}return i}function Joe(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=le.unpack(e,i)),++n,i+=le.packedLength;return t}cp.packCombineGeometryResults=function(e,t){l(e.geometries)&&SNe(e.geometries,t);let n=Xoe(e.boundingSpheres),i=Xoe(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};cp.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:Joe(e.boundingSpheres),boundingSpheresCV:Joe(e.boundingSpheresCV)}};var lE=cp;var vNe={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},zr=Object.freeze(vNe);var jG={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};jG.getMorphTime=function(e){return e===jG.SCENE3D?1:e===jG.MORPHING?void 0:0};var ie=Object.freeze(jG);var Uu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};Uu.NUMBER_OF_SHADOW_MODES=4;Uu.castShadows=function(e){return e===Uu.ENABLED||e===Uu.CAST_ONLY};Uu.receiveShadows=function(e){return e===Uu.ENABLED||e===Uu.RECEIVE_ONLY};Uu.fromCastReceive=function(e,t){return e&&t?Uu.ENABLED:e?Uu.CAST_ONLY:t?Uu.RECEIVE_ONLY:Uu.DISABLED};var Bn=Object.freeze(Uu);function Vr(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this.show=e.show??!0,this._vertexCacheOptimize=e.vertexCacheOptimize??!1,this._interleave=e.interleave??!1,this._releaseGeometryInstances=e.releaseGeometryInstances??!0,this._allowPicking=e.allowPicking??!0,this._asynchronous=e.asynchronous??!0,this._compressVertices=e.compressVertices??!0,this.cull=e.cull??!0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.rtcCenter=e.rtcCenter,this.shadows=e.shadows??Bn.DISABLED,this._translucent=void 0,this._state=zr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(Vr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function PNe(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var RNe=new U,MNe=new d,sre=new se;function are(e){let t=e.length;if(t===1)return e[0];if(t===2)return U.unpack(e,0,RNe);if(t===3)return d.unpack(e,0,MNe);if(t===4)return se.unpack(e,0,sre)}function NNe(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=PNe(i),s=r.length,a=[],c={},u={},f,A=i[0].attributes,g,m,_;for(g=0;g<s;++g)m=r[g],_=A[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:_.componentDatatype,componentsPerAttribute:_.componentsPerAttribute,normalize:_.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:q.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:q.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let y=a.length,C=new cE(t,a,o);for(g=0;g<o;++g){let E=i[g];A=E.attributes;for(let v=0;v<s;++v){m=r[v],_=A[m];let P=are(_.value),M=c[m];C.setBatchedAttribute(g,M,P)}let I={primitive:E.pickPrimitive??e};l(E.id)&&(I.id=E.id);let b=t.createPickId(I);e._pickIds.push(b);let S=b.color,B=sre;B.x=G.floatToByte(S.red),B.y=G.floatToByte(S.green),B.z=G.floatToByte(S.blue),B.w=G.floatToByte(S.alpha),C.setBatchedAttribute(g,y-1,B)}e._batchTable=C,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function LNe(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new De({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function ONe(e){let t=e.attributes,n=new yn;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=LNe(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ht({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:le.clone(e.boundingSphere)})}function FNe(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:N.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var QNe=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;Vr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=QNe.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c}; +`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView; +`,r+=`in vec4 position; +`,s+=`${c} +{ + return u_modifiedModelView * position; +} + +`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c} +{ + return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); +} + +`:(r+=`in vec3 ${a}2DHigh; +in vec3 ${a}2DLow; +`,s+=`${c} +{ + vec4 p; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy), + czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow), + czm_morphTime); + } + return p; +} + +`)}return[o,r,t,s].join(` +`)};Vr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${He.replaceMain(t,"czm_non_show_main")} +void main() +{ + czm_non_show_main(); + gl_Position *= czm_batchTable_show(batchId); +}`:t};Vr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Zoe(e){return`${He.replaceMain(e,"czm_non_pick_main")} +out vec4 v_pickColor; +void main() +{ + czm_non_pick_main(); + v_pickColor = czm_batchTable_pickColor(batchId); +}`}function $oe(e){return`in vec4 v_pickColor; +${e}`}Vr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};Vr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId; +`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition(); +`;return o+=` if (czm_sceneMode == czm_sceneMode3D) +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` } +`,o+=` else +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` } +`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};Vr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=He.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main() +{ + czm_non_distanceDisplayCondition_main(); + vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId); + vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId); + vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId); + float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId); +`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); +`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId); + vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId); + vec4 centerRTE; + if (czm_morphTime == 1.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); + } + else if (czm_morphTime == 0.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy); + } + else + { + centerRTE = czm_columbusViewMorph( + czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy), + czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow), + czm_morphTime); + } +`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius; + float distanceSq; + if (czm_sceneMode == czm_sceneMode2D) + { + distanceSq = czm_eyeHeight2D.y - radiusSq; + } + else + { + distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq; + } + distanceSq = max(distanceSq, 0.0); + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function ere(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st; +`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m}); +`}n&&o&&r?(f+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(f+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(f+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(f+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let A=t;A=A.replace(/in\s+vec3\s+normal;/g,""),A=A.replace(/in\s+vec2\s+st;/g,""),A=A.replace(/in\s+vec3\s+tangent;/g,""),A=A.replace(/in\s+vec3\s+bitangent;/g,""),A=He.replaceMain(A,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[u,f,A,g].join(` +`)}function kNe(e){let t=He.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function UNe(e){let t=He.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function tre(e,t){let n=e.vertexAttributes}function GNe(e,t){return function(){return e[t]}}var V6=Math.max(Wt.hardwareConcurrency-1,1),YG,zNe=new di("combineGeometry");function VNe(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===zr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(YG))for(YG=new Array(V6),o=0;o<V6;o++)YG[o]=new di("createGeometry");let f;for(u=ZP(u,V6),o=0;o<u.length;o++){let h=0,A=u[o],g=A.length;for(r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=i.constructor.packedLength??i.packedLength);let m;if(h>0){let _=new Float64Array(h);for(m=[_.buffer],r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,_,f.offset),f.geometry=_)}c.push(YG[o].scheduleTask({subTasks:u[o]},m))}e._state=zr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=zr.CREATED}).catch(function(h){tR(e,t,zr.FAILED,h)})}else if(e._state===zr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=zNe.scheduleTask(lE.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=zr.COMBINING,Promise.resolve(f).then(function(h){let A=lE.unpackCombineGeometryResults(h);e._geometries=A.geometries,e._attributeLocations=A.attributeLocations,e.modelMatrix=N.clone(A.modelMatrix,e.modelMatrix),e._pickOffsets=A.pickOffsets,e._offsetInstanceExtend=A.offsetInstanceExtend,e._instanceBoundingSpheres=A.boundingSpheres,e._instanceBoundingSpheresCV=A.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=zr.COMBINED):tR(e,t,zr.FAILED,void 0)}).catch(function(h){tR(e,t,zr.FAILED,h)})}}function HNe(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let A=s.geometry,g;l(A.attributes)&&l(A.primitiveType)?g=ONe(A):g=A.constructor.createGeometry(A),o[c++]=FNe(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=lE.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=N.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=zr.COMBINED):tR(e,t,zr.FAILED,void 0)}function WNe(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new le;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let _=a[i],y=e._batchTable.getBatchedAttribute(i,n,new d);_=r[i].clone(_),fre(_,y,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let _=a[i];_.center.x-_.radius>0||le.intersectPlane(_,mn.ORIGIN_ZX_PLANE)!==tn.INTERSECTING?c.push(_):(u.push(_),f.push(_))}let h=c[0],A=f[0],g=u[0];for(i=1;i<c.length;i++)h=le.union(h,c[i]);for(i=1;i<f.length;i++)A=le.union(A,f[i]);for(i=1;i<u.length;i++)g=le.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(A)&&m.push(A),l(g)&&m.push(g),i=0;i<m.length;i++){let _=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=_,e._boundingSphereCV[i]=le.projectTo2D(_,t.mapProjection,e._boundingSphereCV[i])}Vr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var nre=new ei,cre=new Ae,lre=new d,ure=new le;function jNe(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,A=e._instanceBoundingSpheres,g=A.length;for(let m=0;m<g;++m){let _=A[m];if(!l(_))continue;let y=e.modelMatrix;l(y)&&(_=le.transform(_,y,ure));let C=_.center,E=_.radius,I=ei.fromCartesian(C,nre);if(h.setBatchedAttribute(m,o,I.high),h.setBatchedAttribute(m,r,I.low),!t.scene3DOnly){let b=f.cartesianToCartographic(C,cre),S=u.project(b,lre);I=ei.fromCartesian(S,nre),h.setBatchedAttribute(m,s,I.high),h.setBatchedAttribute(m,a,I.low)}h.setBatchedAttribute(m,c,E)}e._batchTableBoundingSpheresUpdated=!0}var H6=new d,YNe=new d;function ire(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let A=e.modelMatrix;l(A)&&(f=le.transform(f,A,ure));let g=f.center;g=r.scaleToGeodeticSurface(g,YNe);let m=r.cartesianToCartographic(g,cre),_=o.project(m,lre),y=d.add(h,g,H6);m=r.cartesianToCartographic(y,m);let C=o.project(m,H6),E=d.subtract(C,_,H6),I=E.x;E.x=E.z,E.z=E.y,E.y=I,s.setBatchedAttribute(u,i,E)}e._batchTableOffsetsUpdated=!0}function qNe(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(li.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(le.clone(u.boundingSphere)),e._boundingSphereWC.push(new le),!o){let f=u.boundingSphereCV.center,h=f.x,A=f.y,g=f.z;f.x=g,f.y=h,f.z=A,e._boundingSphereCV.push(le.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new le),e._boundingSphereMorph.push(new le)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,tR(e,t,zr.COMPLETE,void 0)}function KNe(e,t,n,i){let o=n.getRenderState(),r;i?(r=ze(o,!1),r.cull={enabled:!0,face:Mi.BACK},e._frontFaceRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceRS=Ue.fromCache(r)):(e._frontFaceRS=Ue.fromCache(o),e._backFaceRS=e._frontFaceRS),r=ze(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=ze(o,!1),r.depthTest.func=Qa.GREATER,i?(r.cull={enabled:!0,face:Mi.BACK},e._frontFaceDepthFailRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceDepthFailRS=Ue.fromCache(r)):(e._frontFaceDepthFailRS=Ue.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function XNe(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=Vr._appendOffsetToShader(e,r),r=Vr._appendShowToShader(e,r),r=Vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Zoe(r),r=Vr._updateColorAttribute(e,r,!1),r=ere(e,r),r=Vr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=$oe(s),e._sp=an.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),tre(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=Vr._appendShowToShader(e,r),r=Vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Zoe(r),r=Vr._updateColorAttribute(e,r,!0),r=ere(e,r),r=Vr._modifyShaderPosition(e,r,t.scene3DOnly),r=kNe(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=$oe(s),s=UNe(s),e._spDepthFail=an.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),tre(e._spDepthFail,o))}var eR=new N,ore=new d;function rre(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=GNe(s,c));let a=Tt(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return N.multiply(c,e._modelMatrix,eR),N.multiplyByPoint(eR,e.rtcCenter,ore),N.setTranslation(eR,ore,eR),eR}),a}function JNe(e,t,n,i,o,r,s,a){let c=rre(e,t,n,a),u;l(e._depthFailAppearance)&&(u=rre(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?Be.TRANSLUCENT:Be.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let A=r.length,g=0;for(let m=0;m<A;++m){let _;o&&(_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,++m),_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,l(e._depthFailAppearance)&&(o&&(++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++g}}Vr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!N.equals(n,e._modelMatrix))for(N.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=le.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=le.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphereMorph[o]=le.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function ZNe(e,t,n,i,o,r,s,a){Vr._updateBoundingVolumes(e,t,o);let c;t.mode===ie.SCENE3D?c=e._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ie.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,A=Bn.castShadows(e.shadows),g=Bn.receiveShadows(e.shadows),m=n.length,_=a?2:1;_*=l(e._depthFailAppearance)?2:1;for(let y=0;y<m;++y){let C=Math.floor(y/_),E=n[y];E.modelMatrix=o,E.boundingVolume=c[C],E.cull=r,E.debugShowBoundingVolume=s,E.castShadows=A,E.receiveShadows=g,h?E.pickId="v_pickColor":E.pickId=void 0,u.push(E)}}}Vr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ie.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===zr.FAILED)return;let t=e.context;if(l(this._batchTable)||NNe(this,t),this._batchTable.attributes.length>0){if(Yt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==zr.COMPLETE&&this._state!==zr.COMBINED&&(this.asynchronous?VNe(this,e):HNe(this,e)),this._state===zr.COMBINED&&(jNe(this,e),ire(this,e),qNe(this,e)),!this.show||this._state!==zr.COMPLETE)return;this._batchTableOffsetsUpdated||ire(this,e),this._recomputeBoundingSpheres&&WNe(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&(this._createRenderStatesFunction??KNe)(this,t,n,u),r&&(this._createShaderProgramFunction??XNe)(this,e,n),(o||r)&&(this._createCommandsFunction??JNe)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??ZNe)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var $Ne=new le,eLe=new le;function fre(e,t,n){if(n===hn.TOP){let i=le.clone(e,$Ne),o=le.clone(e,eLe);o.center=d.add(o.center,t,o.center),e=le.union(i,o,e)}else n===hn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function tLe(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=q.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function nLe(e,t,n,i,o){return function(r){let s=are(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var iLe=new d;function oLe(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&fre(i,d.fromArray(r.get(),0,iLe),e._offsetInstanceExtend[n]),l(o)&&(i=le.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function rLe(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}Vr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:tLe(s,n,f),set:nLe(s,n,f,this,u)}}return oLe(this,c,n),rLe(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};Vr.prototype.isDestroyed=function(){return!1};Vr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function tR(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===zr.COMPLETE||e._state===zr.FAILED})}var Qn=Vr;function sLe(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.value=e.value}var Rc=sLe;var rb=`#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +in vec4 v_sphericalExtents; +#else // SPHERICAL +in vec2 v_inversePlaneExtents; +in vec4 v_westPlane; +in vec4 v_southPlane; +#endif // SPHERICAL +in vec3 v_uvMinAndSphericalLongitudeRotation; +in vec3 v_uMaxAndInverseDistance; +in vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +#ifdef NORMAL_EC +vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth); + return eyeCoordinate.xyz / eyeCoordinate.w; +} + +vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) { + vec2 glFragCoordXY = gl_FragCoord.xy; + // Sample depths at both offset and negative offset + float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw)); + float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw)); + // Explicitly evaluate both paths + // Necessary for multifrustum and for edges of the screen + bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw); + float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function Jf(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new W6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new W6;if(o.requiresTextureCoordinates=e,n instanceof gn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}Jf.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof gn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof gn||(o=t.material.shaderSource),new He({defines:i,sources:[o,rb]})};Jf.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new He({defines:n,sources:[rb],pickColorQualifier:"in"})};Jf.prototype.createVertexShader=function(e,t,n,i){return yre(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};Jf.prototype.createPickVertexShader=function(e,t,n,i){return yre(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var dre=new d,hre=new Ae,mre={high:0,low:0};function yre(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=hre;u.longitude=D.PI,u.latitude=0,u.height=0;let f=s.project(u,dre),h=ei.encode(f.x,mre);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let A=hre;A.longitude=-D.PI,A.latitude=0,A.height=0;let g=s.project(A,dre);h=ei.encode(g.x,mre),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof gn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new He({defines:c,sources:[o]})}function W6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(W6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function Are(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/U.distance(t,e)}var aLe=[new U,new U,new U,new U];function Cre(e,t){let n=aLe,i=U.unpack(t,0,n[0]),o=U.unpack(t,2,n[1]),r=U.unpack(t,4,n[2]);e.uMaxVmax=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/Are(i,o,r),a=1/Are(i,r,o);e.uvMinAndExtents=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var Ere=new Ae,Ire=new d,cLe=new d,lLe=new d,qG={high:0,low:0};function xre(e,t,n){let i=Ere;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,Ire);i.latitude=e.north;let r=t.project(i,cLe);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,lLe),a=[0,0,0,0],c=[0,0,0,0],u=ei.encode(o.x,qG);a[0]=u.high,c[0]=u.low,u=ei.encode(o.y,qG),a[1]=u.high,c[1]=u.low,u=ei.encode(r.y,qG),a[2]=u.high,c[2]=u.low,u=ei.encode(s.x,qG),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var uLe=new N,fLe=new N,pre=new d,dLe=new Ae,hLe=[new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae];function mLe(e,t,n,i,o,r){let s=ae.center(e,dLe);s.height=n;let a=Ae.toCartesian(s,t,pre),c=kt.eastNorthUpToFixedFrame(a,t,uLe),u=N.inverse(c,fLe),f=e.west,h=e.east,A=e.north,g=e.south,m=hLe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=A,m[1].longitude=f,m[2].latitude=A,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let _=(f+h)*.5,y=(A+g)*.5;m[4].latitude=g,m[4].longitude=_,m[5].latitude=A,m[5].longitude=_,m[6].latitude=y,m[6].longitude=f,m[7].latitude=y,m[7].longitude=h;let C=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;for(let P=0;P<8;P++){m[P].height=n;let M=Ae.toCartesian(m[P],t,pre);N.multiplyByPoint(u,M,M),M.z=0,C=Math.min(C,M.x),E=Math.max(E,M.x),I=Math.min(I,M.y),b=Math.max(b,M.y)}let S=i;S.x=C,S.y=I,S.z=0,N.multiplyByPoint(c,S,S);let B=o;B.x=E,B.y=I,B.z=0,N.multiplyByPoint(c,B,B),d.subtract(B,S,o);let v=r;v.x=C,v.y=b,v.z=0,N.multiplyByPoint(c,v,v),d.subtract(v,S,r)}var ALe=new d,pLe=new d,gLe=new ei;Jf.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=Ire,s=ALe,a=pLe;mLe(e,n,o??0,r,s,a);let c={};Cre(c,t);let u=ei.fromCartesian(r,gLe);return c.southWest_HIGH=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),xre(e,i,c),c};var _Le=new d;function gre(e,t,n,i){let o=Ere;o.latitude=e,o.longitude=t,o.height=0;let r=Ae.toCartesian(o,n,_Le),s=Math.sqrt(r.x*r.x+r.y*r.y),a=D.fastApproximateAtan2(s,r.z),c=D.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var _re=new U;Jf.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=gre(e.south,e.west,n,_re),r=o.x,s=o.y,a=gre(e.north,e.east,n,_re),c=a.x,u=a.y,f=0;s>u&&(f=D.PI-s,s=-D.PI,u+=f),r-=D.EPSILON5,s-=D.EPSILON5,c+=D.EPSILON5,u+=D.EPSILON5;let h=1/(u-s),A=1/(c-r),g={sphericalExtents:new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,A,h]}),longitudeRotation:new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return Cre(g,t),xre(e,i,g),g};Jf.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};Jf.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function yLe(e){return Math.max(e.width,e.height)>Jf.MAX_WIDTH_FOR_PLANAR_EXTENTS}Jf.shouldUseSphericalCoordinates=function(e){return yLe(e)};Jf.MAX_WIDTH_FOR_PLANAR_EXTENTS=D.toRadians(1);var Gu=Jf;var CLe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Zn=Object.freeze(CLe);var ELe={ZERO:ee.ZERO,KEEP:ee.KEEP,REPLACE:ee.REPLACE,INCREMENT:ee.INCR,DECREMENT:ee.DECR,INVERT:ee.INVERT,INCREMENT_WRAP:ee.INCR_WRAP,DECREMENT_WRAP:ee.DECR_WRAP},_t=Object.freeze(ELe);var KG={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};KG.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Zn.ALWAYS,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},backFunction:Zn.ALWAYS,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},reference:KG.CESIUM_3D_TILE_MASK,mask:KG.CESIUM_3D_TILE_MASK}};var Kt=Object.freeze(KG);function uE(e){e=e??V.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(uE.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});uE.isSupported=function(e){return e.context.stencilBuffer};function sb(e,t){let n=t?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:n,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}function Y6(e){return{stencilTest:{enabled:e,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}}var ILe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function xLe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ue.fromCache(sb(o,!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(sb(o,!0)),e._rsColorPass=Ue.fromCache(Y6(o,!1)),e._rsPickPass=Ue.fromCache(ILe)}function bLe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=He.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function TLe(e,t){let n=t.context,i=e._primitive,o=JP;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=Qn._appendDistanceDisplayConditionToShader(i,o),o=Qn._modifyShaderPosition(e,o,t.scene3DOnly),o=Qn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=bLe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new He({defines:[a],sources:[o]}),u=new He({sources:[B_]}),f=e._primitive._attributeLocations,h=new Gu(s,r,e.appearance);if(e._spStencil=an.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=He.createPickVertexShaderSource(o);m=Qn._appendShowToShader(i,m),m=Qn._updatePickColorAttribute(m);let _=h.createPickFragmentShader(!1),y=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=an.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f}),s){let C=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(C)){let E=h.createPickFragmentShader(!0),I=h.createPickVertexShader([a],m,!0,t.mapProjection);C=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:I,fragmentShaderSource:E,attributeLocations:f})}e._spPick2D=C}}else e._spPick=an.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=Qn._appendShowToShader(i,o),c=new He({defines:[a],sources:[o]}),e._sp=an.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let A=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=an.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:A,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let _=h.createFragmentShader(!0),y=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f})}e._spColor2D=m}}function SLe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=Be.TERRAIN_CLASSIFICATION,s=nt.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=Be.TERRAIN_CLASSIFICATION;let _=e.appearance.material;if(l(_)&&(c=Tt(c,_._uniforms)),r.uniformMap=c,s=nt.shallowClone(r,r.derivedCommands.tileset),s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let y=nt.shallowClone(r,r.derivedCommands.appearance2D);y.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=y,y=nt.shallowClone(s,s.derivedCommands.appearance2D),y.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=y}}let f=e._commandsIgnoreShow,h=e._spStencil,A=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=nt.shallowClone(t[A],f[g]);m.shaderProgram=h,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,A+=2}}function wLe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,A=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let _=nt.shallowClone(u,u.derivedCommands.pick2D);_.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=_,_=nt.shallowClone(f,f.derivedCommands.pick2D),_.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=_}}}function BLe(e,t,n,i,o,r,s){SLe(e,r),wLe(e,s)}function bre(e,t){return Math.floor(e%t/2)}function j6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function Tre(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function DLe(e,t,n,i,o,r,s,a){let c=e._primitive;Qn._updateBoundingVolumes(c,t,o);let u;t.mode===ie.SCENE3D?u=c._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ie.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN,g=t.passes,m,_,y;if(g.render){let C=n.length;for(m=0;m<C;++m)_=u[bre(m,C)],h&&(y=n[m],j6(y,t,o,r,_,s)),A&&(y=n[m].derivedCommands.tileset,j6(y,t,o,r,_,s));if(t.invertClassification){let E=e._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=u[m],y=E[m],j6(y,t,o,r,_,s)}}if(g.pick){let C=i.length,E=c._pickOffsets;for(m=0;m<C;++m){let I=E[bre(m,C)];_=u[I.index],h&&(y=i[m],Tre(y,t,o,r,_)),A&&(y=i[m].derivedCommands.tileset,Tre(y,t,o,r,_))}}}uE.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,A=!1,g=!1;for(r>0&&(c=o[0].attributes,A=Gu.hasAttributesForSphericalExtents(c),g=Gu.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let _=a.attributes.color;l(_)&&(u=!0),f=f&&l(_)&&$t.equals(h,_)}if(!f&&!A&&!g)throw new me("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new gn({flat:!0}),this.appearance=t),this._usePickOffsets=!A&&!g,this._hasSphericalExtentsAttribute=A,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Pt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:this._pickPrimitive??n});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(_,y){n._createBoundingVolumeFunction(_,y)}),i._createRenderStatesFunction=function(_,y,C,E){xLe(n,y)},i._createShaderProgramFunction=function(_,y,C){TLe(n,y)},i._createCommandsFunction=function(_,y,C,E,I,b,S){BLe(n,void 0,void 0,!0,!1,b,S)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){n._updateAndQueueCommandsFunction(_,y,C,E,I,b,S,B)}:i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){DLe(n,y,C,E,I,b,S,B)},this._primitive=new Qn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ue.fromCache(sb(!1,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(sb(!1,!0)),this._rsColorPass=Ue.fromCache(Y6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ue.fromCache(sb(!0,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(sb(!0,!0)),this._rsColorPass=Ue.fromCache(Y6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};uE.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};uE.prototype.isDestroyed=function(){return!1};uE.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var ab=uE;var vLe={u_globeMinimumAltitude:function(){return 55e3}};function tu(e){e=e??V.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new gn({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=Ti._defaultMaxTerrainHeight,this._minTerrainHeight=Ti._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:vLe}}Object.defineProperties(tu.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});tu.isSupported=ab.isSupported;function Sre(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function wre(e){return function(t,n){return e._minHeight}}var PLe=new d,RLe=new d,MLe=new d,NLe=new Ae,LLe=new ae;function XG(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let A=d.unpack(i,h,PLe),g=d.unpack(o,h,RLe),m=d.add(A,g,MLe),_=n.cartesianToCartographic(m,NLe),y=_.latitude,C=_.longitude;s=Math.min(s,y),a=Math.min(a,C),c=Math.max(c,y),u=Math.max(u,C)}let f=LLe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function OLe(e,t,n){let i=Ti.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function FLe(e,t,n){let i=t.mapProjection.ellipsoid,o=XG(t,n),r=Fn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=le.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function q6(e,t){return Math.floor(e%t/2)}function K6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function Bre(e,t,n,i,o,r){let s=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function QLe(e,t,n,i,o,r,s,a){let c;t.mode===ie.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==Jn.CESIUM_3D_TILE,h=u!==Jn.TERRAIN,A=t.passes,g=e._primitive,m,_,y;if(A.render){let C=n.length;for(m=0;m<C;++m)_=c[q6(m,C)],f&&(y=n[m],K6(e,y,t,o,r,_,s)),h&&(y=n[m].derivedCommands.tileset,K6(e,y,t,o,r,_,s));if(t.invertClassification){let E=g._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=c[m],y=E[m],K6(e,y,t,o,r,_,s)}}if(A.pick){let C=i.length,E;for(e._useFragmentCulling||(E=g._primitive._pickOffsets),m=0;m<C;++m){if(_=c[q6(m,C)],!e._useFragmentCulling){let I=E[q6(m,C)];_=c[I.index]}f&&(y=i[m],Bre(e,y,t,o,r,_)),h&&(y=i[m].derivedCommands.tileset,Bre(e,y,t,o,r,_))}}}tu.initializeTerrainHeights=function(){return Ti.initialize()};tu.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!Ti.initialized){tu.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let _=XG(e,r);l(h)?l(_)&&ae.union(h,_,h):h=ae.clone(_);let y=o.id;if(l(y)&&l(_)){let C=Ti.getBoundingSphere(_,i);this._boundingSpheresKeys.push(y),this._boundingSpheres.push(C)}s=r.constructor,!l(s)||l(s.createShadowVolume)}OLe(this,h,i);let A=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Ur.getHeight(this._minTerrainHeight,A,g),this._maxHeight=Ur.getHeight(this._maxTerrainHeight,A,g);let m=tu._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let _,y=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=XG(e,r),Gu.shouldUseSphericalCoordinates(h)){y=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let C=XG(e,r),E=r.textureCoordinateRotationPoints;y?_=Gu.getPlanarTextureCoordinateAttributes(C,E,i,e.mapProjection,this._maxHeight):_=Gu.getSphericalExtentGeometryInstanceAttributes(C,E,i,e.mapProjection);let I=o.attributes;for(let b in I)I.hasOwnProperty(b)&&(_[b]=I[b]);u[f]=new Pt({geometry:s.createShadowVolume(r,wre(this),Sre(this)),attributes:_,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Pt({geometry:s.createShadowVolume(r,wre(this),Sre(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(_,y){FLe(t,_,y)},n._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){QLe(t,y,C,E,I,b,S,B)},this._primitive=new ab(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};tu.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};tu.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};tu.prototype.isDestroyed=function(){return!1};tu.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};tu._supportsMaterials=function(e){return e.depthTexture};tu.supportsMaterials=function(e){return tu._supportsMaterials(e.frameState.context)};var fl=tu;function cb(){me.throwInstantiationError()}Object.defineProperties(cb.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});cb.prototype.getType=me.throwInstantiationError;cb.prototype.getValue=me.throwInstantiationError;cb.prototype.equals=me.throwInstantiationError;var kLe=new K;cb.getValue=function(e,t,n){let i;return l(e)||(e=K.now(kLe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=ro.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==ro.ColorType)&&(n=ro.fromType(ro.ColorType)),G.clone(G.WHITE,n.uniforms.color),n)};var ur=cb;function fE(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}fE.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!j.getValueOrDefault(t.show,n,!0)};fE.prototype._setOptions=me.throwInstantiationError;fE.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof Xt,h,A=t._getIsClosed(c);if(f)h=new gn({closed:A,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=ur.getValue(e,u,this._material);this._material=g,h=new Eo({material:g,translucent:g.isTranslucent(),closed:A})}if(n)c.vertexFormat=gn.VERTEX_FORMAT,this._primitive=o.add(new fl({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),j.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new Qn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=j.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new Qn({geometryInstances:u,appearance:new gn({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};fE.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(n)&&!n.ready||l(i)&&!i.ready?mt.PENDING:mt.FAILED};fE.prototype.isDestroyed=function(){return!1};fE.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var _i=fE;var Dre={};function nR(e,t){l(Dre[e])||(Dre[e]=!0,console.warn(t??e))}nR.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";nR.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";nR.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";nR.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var yt=nR;var ULe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},lp=Object.freeze(ULe);var GLe={NONE:0,GEODESIC:1,RHUMB:2},cn=Object.freeze(GLe);var vre=D.EPSILON10;function zLe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,vre)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],vre)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var Mo=zLe;function VLe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,A=h*h,g=1-A,m=Math.sqrt(g),_=t/4,y=_*_,C=y*_,E=y*y,I=1+_-3*y/4+5*C/4-175*E/64,b=1-_+15*y/8-35*C/8,S=1-3*_+35*y/4,B=1-5*_,v=I*f-b*Math.sin(2*f)*_/2-S*Math.sin(4*f)*y/16-B*Math.sin(6*f)*C/48-Math.sin(8*f)*5*E/512,P=e._constants;P.a=n,P.b=i,P.f=o,P.cosineHeading=r,P.sineHeading=s,P.tanU=a,P.cosineU=c,P.sineU=u,P.sigma=f,P.sineAlpha=h,P.sineSquaredAlpha=A,P.cosineSquaredAlpha=g,P.cosineAlpha=m,P.u2Over4=_,P.u4Over16=y,P.u6Over64=C,P.u8Over256=E,P.a0=I,P.a1=b,P.a2=S,P.a3=B,P.distanceRatio=v}function HLe(e,t){return e*t*(4+e*(4-3*t))/16}function Pre(e,t,n,i,o,r,s){let a=HLe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function WLe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),A=Math.sin(u),g=Math.cos(f),m=Math.sin(f),_=h*g,y=h*m,C=A*m,E=A*g,I=c,b=D.TWO_PI,S=Math.cos(I),B=Math.sin(I),v,P,M,L,p;do{S=Math.cos(I),B=Math.sin(I);let F=y-E*S;M=Math.sqrt(g*g*B*B+F*F),P=C+_*S,v=Math.atan2(M,P);let H;M===0?(H=0,L=1):(H=_*B/M,L=1-H*H),b=I,p=P-2*C/L,isFinite(p)||(p=0),I=c+Pre(a,H,L,v,M,P,p)}while(Math.abs(I-b)>D.EPSILON12);let x=L*(t*t-n*n)/(n*n),T=1+x*(4096+x*(x*(320-175*x)-768))/16384,w=x*(256+x*(x*(74-47*x)-128))/1024,R=p*p,O=w*M*(p+w*(P*(2*R-1)-w*p*(4*M*M-3)*(4*R-3)/6)/4),k=n*T*(v-O),Q=Math.atan2(g*B,y-E*S),z=Math.atan2(h*B,y*S-E);e._distance=k,e._startHeading=Q,e._endHeading=z,e._uSquared=x}var jLe=new d,X6=new d;function Rre(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,X6),jLe),r=d.normalize(i.cartographicToCartesian(n,X6),X6);WLe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=Ae.clone(t,e._start),e._end=Ae.clone(n,e._end),e._start.height=0,e._end.height=0,VLe(e)}function iR(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Rre(this,e,t,i)}Object.defineProperties(iR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});iR.prototype.setEndPoints=function(e,t){Rre(this,e,t,this._ellipsoid)};iR.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};iR.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,A=i*h,g=n.u8Over256,m=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*A*g*o/3+i*(1-m+7*y/4-15*_/4+579*g/64-(y-15*_/4+187*g/16)*o-(5*_/4-115*g/16)*r-29*g*s/16)+(m/2-y+71*_/32-85*g/16)*a+(5*y/16-5*_/4+383*g/96)*c-h*((_-11*g/2)*a+5*g*c/2)+(29*_/96-29*g/16)*u+539*g*f/1536,E=Math.asin(Math.sin(C)*n.cosineAlpha),I=Math.atan(n.a/n.b*Math.tan(E));C=C-n.sigma;let b=Math.cos(2*n.sigma+C),S=Math.sin(C),B=Math.cos(C),v=n.cosineU*B,P=n.sineU*S,L=Math.atan2(S*n.sineHeading,v-P*n.cosineHeading)-Pre(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,S,B,b);return l(t)?(t.longitude=this._start.longitude+L,t.latitude=I,t.height=0,t):new Ae(this._start.longitude+L,I,0)};var up=iR;function Z6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),A=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),_=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*A+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*_)}function YLe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,A=h*c,g=A*c,m=Math.sin(2*i),_=Math.cos(2*i),y=Math.sin(4*i),C=Math.cos(4*i),E=Math.sin(6*i),I=Math.cos(6*i),b=Math.sin(8*i),S=Math.cos(8*i),B=Math.sin(10*i),v=Math.cos(10*i),P=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*A/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*A/16384+i*(399985-90560*o+512*s)*g/5242880)*_+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*A/16384-i*(33152*o-112599)*g/1048576)*C+(151*i*h/4096+4681*i*A/65536+1479*i*g/16384-453*r*g/32768)*I+(1097*i*A/65536+42783*i*g/1048576)*S+8011*i*g/1048576*v+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*A/524288-33*o*A/512+s*A/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*A/4096-315*o*A/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*y+(151*f/6144+151*h/4096+5019*A/131072-453*o*A/16384+26965*g/786432-8607*o*g/131072)*E+(1097*h/131072+1097*A/65536+225797*g/10485760-1097*o*g/65536)*b+(8011*A/2621440+8011*g/1048576)*B+293393*g/251658240*P}function lb(e,t){if(e===0)return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function qLe(e,t,n,i,o){let r=lb(e._ellipticity,n),s=lb(e._ellipticity,o);return Math.atan2(D.negativePiToPi(i-t),s-r)}function KLe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(D.equalsEpsilon(Math.abs(a),D.PI_OVER_TWO,D.EPSILON8))if(t===n)u=t*Math.cos(o)*D.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*D.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=Z6(e._ellipticity,t,o);u=(Z6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var XLe=new d,J6=new d;function Mre(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,J6),XLe),r=d.normalize(i.cartographicToCartesian(n,J6),J6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=Ae.clone(t,e._start),e._start.height=0,e._end=Ae.clone(n,e._end),e._end.height=0,e._heading=qLe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=KLe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function Nre(e,t,n,i,o,r){if(n===0)return Ae.clone(e,r);let s=o*o,a,c,u;if(Math.abs(D.PI_OVER_TWO-Math.abs(t))>D.EPSILON8){let f=Z6(o,i,e.latitude),h=n*Math.cos(t),A=f+h;if(c=YLe(A,o,i),Math.abs(t)<D.EPSILON10)a=D.negativePiToPi(e.longitude);else{let g=lb(o,e.latitude),m=lb(o,c);u=Math.tan(t)*(m-g),a=D.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=D.negativePiToPi(e.longitude+u):a=D.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new Ae(a,c,0)}function fp(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Mre(this,e,t,i)}Object.defineProperties(fp.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});fp.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??te.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=D.negativePiToPi(t);let h=Nre(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new fp(e,h,r):(o.setEndPoints(e,h),o)};fp.prototype.setEndPoints=function(e,t){Mre(this,e,t,this._ellipsoid)};fp.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};fp.prototype.interpolateUsingSurfaceDistance=function(e,t){return Nre(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};fp.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=D.negativePiToPi(e),D.equalsEpsilon(Math.abs(e),Math.PI,D.EPSILON14)&&(e=D.sign(r.longitude)*Math.PI),l(t)||(t=new Ae),Math.abs(D.PI_OVER_TWO-o)<=D.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(D.equalsEpsilon(Math.abs(D.PI_OVER_TWO-o),D.PI_OVER_TWO,D.EPSILON8))return D.equalsEpsilon(e,r.longitude,D.EPSILON12)?void 0:(t.longitude=e,t.latitude=D.PI_OVER_TWO*D.sign(D.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(D.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let A=n*Math.sin(h),g=(1+A)/(1-A);f=2*Math.atan(c*Math.pow(g/u,n/2))-D.PI_OVER_TWO}while(!D.equalsEpsilon(f,h,D.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};fp.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(D.equalsEpsilon(Math.abs(i),D.PI_OVER_TWO,D.EPSILON8))return;let r=lb(n,o.latitude),s=lb(n,e),a=Math.tan(i)*(s-r),c=D.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new Ae(c,e,0)};var uc=fp;var sW=[Ui,zi],JLe=sW.length,ese=Math.cos(D.toRadians(30)),Lre=Math.cos(D.toRadians(150)),tse=0,nse=1e3;function v_(e){e=e??V.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??cn.GEODESIC,this._ellipsoid=te.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(v_.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+te.packedLength+1+1}}});v_.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<JLe;i++)if(t instanceof sW[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var ZLe=new d,Ore=new d,Fre=new d;function rW(e,t,n,i,o){let r=dl(i,e,0,ZLe),s=dl(i,e,n,Ore),a=dl(i,t,0,Fre),c=dp(s,r,Ore),u=dp(a,r,Fre);return d.cross(u,c,o),d.normalize(o,o)}var $Le=new Ae,eOe=new d,tOe=new d,nOe=new d;function $6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===cn.GEODESIC?h=new up(e,t,s):r===cn.RHUMB&&(h=new uc(e,t,s));let A=h.surfaceDistance;if(A<o)return;let g=rW(e,t,i,s,nOe),m=Math.ceil(A/o),_=A/m,y=_,C=m-1,E=a.length;for(let I=0;I<C;I++){let b=h.interpolateUsingSurfaceDistance(y,$Le),S=dl(s,b,n,eOe),B=dl(s,b,i,tOe);d.pack(g,a,E),d.pack(S,c,E),d.pack(B,u,E),f.push(b.latitude),f.push(b.longitude),E+=3,y+=_}}var eW=new Ae;function dl(e,t,n,i){return Ae.clone(t,eW),eW.height=n,Ae.toCartesian(eW,e,i)}v_.pack=function(e,t,n){let i=n??0,o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,te.pack(e._ellipsoid,t,i),i+=te.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};v_.unpack=function(e,t,n){let i=t??0,o=e[i++],r=new Array(o);for(let A=0;A<o;A++)r[A]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=te.unpack(e,i);i+=te.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new v_({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function dp(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function Qre(e,t,n,i){return i=dp(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var iOe=new d,oOe=new d,rOe=new d,ise=new d,sOe=0,aOe=-1;function tW(e,t,n,i,o){let r=dp(n,t,ise),s=Qre(e,t,r,iOe),a=Qre(i,t,r,oOe);if(D.equalsEpsilon(d.dot(s,a),aOe,D.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,rOe);return d.dot(a,c)<sOe&&(o=d.negate(o,o)),o}var ez=mn.fromPointNormal(d.ZERO,d.UNIT_Y),cOe=new d,lOe=new d,uOe=new d,fOe=new d,dOe=new d,JG=new d,ZG=new Ae,kre=new Ae,Ure=new Ae;v_.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new sW[e._projectionIndex](i),a=tse,c=nse,u,f,h=e._positions,A=h.length;A===2&&(n=!1);let g,m,_,y,C=new uc(void 0,void 0,i),E,I,b,S=[h[0]];for(f=0;f<A-1;f++)g=h[f],m=h[f+1],E=hi.lineSegmentPlane(g,m,ez,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===cn.GEODESIC?S.push(d.clone(E)):e.arcType===cn.RHUMB&&(b=i.cartesianToCartographic(E,ZG).longitude,_=i.cartesianToCartographic(g,ZG),y=i.cartesianToCartographic(m,kre),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Ure),E=i.cartographicToCartesian(I,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))),S.push(m);n&&(g=h[A-1],m=h[0],E=hi.lineSegmentPlane(g,m,ez,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===cn.GEODESIC?S.push(d.clone(E)):e.arcType===cn.RHUMB&&(b=i.cartesianToCartographic(E,ZG).longitude,_=i.cartesianToCartographic(g,ZG),y=i.cartesianToCartographic(m,kre),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Ure),E=i.cartographicToCartesian(I,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))));let B=S.length,v=new Array(B);for(f=0;f<B;f++){let W=Ae.fromCartesian(S[f],i);W.height=0,v[f]=W}if(v=Mo(v,Ae.equalsEpsilon),B=v.length,B<2)return;let P=[],M=[],L=[],p=[],x=cOe,T=lOe,w=uOe,R=fOe,O=dOe,k=v[0],Q=v[1],z=v[B-1];for(x=dl(i,z,a,x),R=dl(i,Q,a,R),T=dl(i,k,a,T),w=dl(i,k,c,w),n?O=tW(x,T,w,R,O):O=rW(k,Q,c,i,O),d.pack(O,M,0),d.pack(T,L,0),d.pack(w,p,0),P.push(k.latitude),P.push(k.longitude),$6(k,Q,a,c,o,r,i,M,L,p,P),f=1;f<B-1;++f){x=d.clone(T,x),T=d.clone(R,T);let W=v[f];dl(i,W,c,w),dl(i,v[f+1],a,R),tW(x,T,w,R,O),u=M.length,d.pack(O,M,u),d.pack(T,L,u),d.pack(w,p,u),P.push(W.latitude),P.push(W.longitude),$6(v[f],v[f+1],a,c,o,r,i,M,L,p,P)}let F=v[B-1],H=v[B-2];if(T=dl(i,F,a,T),w=dl(i,F,c,w),n){let W=v[0];x=dl(i,H,a,x),R=dl(i,W,a,R),O=tW(x,T,w,R,O)}else O=rW(H,F,c,i,O);if(u=M.length,d.pack(O,M,u),d.pack(T,L,u),d.pack(w,p,u),P.push(F.latitude),P.push(F.longitude),n){for($6(F,k,a,c,o,r,i,M,L,p,P),u=M.length,f=0;f<3;++f)M[u+f]=M[f],L[u+f]=L[f],p[u+f]=p[f];P.push(k.latitude),P.push(k.longitude)}return QOe(n,s,L,p,M,P,t)};var hOe=new d,mOe=new J,AOe=new Le;function Gre(e,t,n,i){let o=dp(n,t,hOe),r=d.dot(o,e);if(r>ese||r<Lre){let s=dp(i,n,ise),a=r<Lre?D.PI_OVER_TWO:-D.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,AOe),u=J.fromQuaternion(c,mOe);return J.multiplyByVector(u,e,e),!0}return!1}var zre=new Ae,pOe=new d,Vre=new d;function oR(e,t,n,i,o){let r=Ae.toCartesian(t,e._ellipsoid,pOe),s=d.add(r,n,Vre),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,zre);Math.abs(t.longitude-u.longitude)>D.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Vre),u=c.cartesianToCartographic(s,zre)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var gOe=new d,Hre=new d;function Wre(e,t,n,i,o,r){let s=d.subtract(t,e,gOe);d.normalize(s,s);let a=n-tse,c=d.multiplyByScalar(s,a,Hre);d.add(e,c,o);let u=i-nse;c=d.multiplyByScalar(s,u,Hre),d.add(t,c,r)}var _Oe=new d;function $G(e,t){let n=mn.getPointDistance(ez,e),i=mn.getPointDistance(ez,t),o=_Oe;D.equalsEpsilon(n,0,D.EPSILON2)?(o=dp(t,e,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(e,o,e)):D.equalsEpsilon(i,0,D.EPSILON2)&&(o=dp(e,t,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(t,o,t))}function yOe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(D.equalsEpsilon(n,D.PI,D.EPSILON11)){let o=D.sign(t.longitude);return e.longitude=o*(n-D.EPSILON11),1}else if(D.equalsEpsilon(i,D.PI,D.EPSILON11)){let o=D.sign(e.longitude);return t.longitude=o*(i-D.EPSILON11),2}return 0}var ose=new Ae,rse=new Ae,jre=new d,nW=new d,Yre=new d,qre=new d,COe=new d,Kre=new d,EOe=[ose,rse],IOe=new ae,xOe=new d,bOe=new d,TOe=new d,SOe=new d,wOe=new d,BOe=new d,iW=new d,oW=new d,DOe=new d,vOe=new d,POe=new d,Xre=new d,ROe=new d,MOe=new d,NOe=new ei,LOe=new ei,Jre=new d,OOe=new d,Zre=new d,FOe=[new le,new le],sse=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],$re=sse.length;function QOe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,A=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),_=new Float64Array(h*3),y=new Float32Array(A),C=new Float32Array(A),E=new Float32Array(A),I=new Float32Array(A),b=new Float32Array(A),S,B,v,P;s&&(S=new Float32Array(A),B=new Float32Array(A),v=new Float32Array(A),P=new Float32Array(h*2));let M=r.length/2,L=0,p=ose;p.height=0;let x=rse;x.height=0;let T=jre,w=nW;if(s)for(c=0,a=1;a<M;a++)p.latitude=r[c],p.longitude=r[c+1],x.latitude=r[c+2],x.longitude=r[c+3],T=t.project(p,T),w=t.project(x,w),L+=d.distance(T,w),c+=2;let R=i.length/3;w=d.unpack(i,0,w);let O=0;for(c=3,a=1;a<R;a++)T=d.clone(w,T),w=d.unpack(i,c,w),O+=d.distance(T,w),c+=3;let k;c=3;let Q=0,z=0,F=0,H=0,W=!1,Z=d.unpack(n,0,qre),Y=d.unpack(i,0,nW),$=d.unpack(o,0,Kre);if(e){let Te=d.unpack(n,n.length-6,Yre);Gre($,Te,Z,Y)&&($=d.negate($,$))}let X=0,he=0,ge=0;for(a=0;a<f;a++){let Te=d.clone(Z,Yre),ke=d.clone(Y,jre),Ge=d.clone($,COe);W&&(Ge=d.negate(Ge,Ge)),Z=d.unpack(n,c,qre),Y=d.unpack(i,c,nW),$=d.unpack(o,c,Kre),W=Gre($,Te,Z,Y),p.latitude=r[Q],p.longitude=r[Q+1],x.latitude=r[Q+2],x.longitude=r[Q+3];let Ke,tt,en,it;if(s){let bi=yOe(p,x);Ke=t.project(p,wOe),tt=t.project(x,BOe);let vs=dp(tt,Ke,Jre);vs.y=Math.abs(vs.y),en=iW,it=oW,bi===0||d.dot(vs,d.UNIT_Y)>ese?(en=oR(t,p,Ge,Ke,iW),it=oR(t,x,$,tt,oW)):bi===1?(it=oR(t,x,$,tt,oW),en.x=0,en.y=D.sign(p.longitude-Math.abs(x.longitude)),en.z=0):(en=oR(t,p,Ge,Ke,iW),it.x=0,it.y=D.sign(p.longitude-x.longitude),it.z=0)}let nn=d.distance(ke,Y),qt=ei.fromCartesian(Te,NOe),Rt=d.subtract(Z,Te,DOe),Si=d.normalize(Rt,Xre),gi=d.subtract(ke,Te,vOe);gi=d.normalize(gi,gi);let Ft=d.cross(Si,gi,Xre);Ft=d.normalize(Ft,Ft);let St=d.cross(gi,Ge,ROe);St=d.normalize(St,St);let oi=d.subtract(Y,Z,POe);oi=d.normalize(oi,oi);let Et=d.cross($,oi,MOe);Et=d.normalize(Et,Et);let Lo=nn/O,Ho=X/O,Pa=0,Er,Lr,Fe,lt=0,Xe=0;if(s){Pa=d.distance(Ke,tt),Er=ei.fromCartesian(Ke,LOe),Lr=d.subtract(tt,Ke,Jre),Fe=d.normalize(Lr,OOe);let bi=Fe.x;Fe.x=Fe.y,Fe.y=-bi,lt=Pa/L,Xe=he/L}for(k=0;k<8;k++){let bi=H+k*4,vs=z+k*2,Xo=bi+3,Ra=k<4?1:-1,mo=k===2||k===3||k===6||k===7?1:-1;d.pack(qt.high,y,bi),y[Xo]=Rt.x,d.pack(qt.low,C,bi),C[Xo]=Rt.y,d.pack(St,E,bi),E[Xo]=Rt.z,d.pack(Et,I,bi),I[Xo]=Lo*Ra,d.pack(Ft,b,bi);let Jo=Ho*mo;Jo===0&&mo<0&&(Jo=9),b[Xo]=Jo,s&&(S[bi]=Er.high.x,S[bi+1]=Er.high.y,S[bi+2]=Er.low.x,S[bi+3]=Er.low.y,v[bi]=-en.y,v[bi+1]=en.x,v[bi+2]=it.y,v[bi+3]=-it.x,B[bi]=Lr.x,B[bi+1]=Lr.y,B[bi+2]=Fe.x,B[bi+3]=Fe.y,P[vs]=lt*Ra,Jo=Xe*mo,Jo===0&&mo<0&&(Jo=9),P[vs+1]=Jo)}let et=TOe,gt=SOe,Jt=xOe,bn=bOe,ho=ae.fromCartographicArray(EOe,IOe),lo=Ti.getMinimumMaximumHeights(ho,u),sa=lo.minimumTerrainHeight,aa=lo.maximumTerrainHeight;ge+=Math.abs(sa),ge+=Math.abs(aa),Wre(Te,ke,sa,aa,et,Jt),Wre(Z,Y,sa,aa,gt,bn);let Wn=d.multiplyByScalar(Ft,D.EPSILON5,Zre);d.add(et,Wn,et),d.add(gt,Wn,gt),d.add(Jt,Wn,Jt),d.add(bn,Wn,bn),$G(et,gt),$G(Jt,bn),d.pack(et,_,F),d.pack(gt,_,F+3),d.pack(bn,_,F+6),d.pack(Jt,_,F+9),Wn=d.multiplyByScalar(Ft,-2*D.EPSILON5,Zre),d.add(et,Wn,et),d.add(gt,Wn,gt),d.add(Jt,Wn,Jt),d.add(bn,Wn,bn),$G(et,gt),$G(Jt,bn),d.pack(et,_,F+12),d.pack(gt,_,F+15),d.pack(bn,_,F+18),d.pack(Jt,_,F+21),Q+=2,c+=3,z+=16,F+=24,H+=32,X+=nn,he+=Pa}c=0;let fe=0;for(a=0;a<f;a++){for(k=0;k<$re;k++)m[c+k]=sse[k]+fe;fe+=8,c+=$re}let ye=FOe;le.fromVertices(n,d.ZERO,3,ye[0]),le.fromVertices(i,d.ZERO,3,ye[1]);let xe=le.fromBoundingSpheres(ye);xe.radius+=ge/(f*2);let ve={position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,normalize:!1,values:_}),startHiAndForwardOffsetX:D_(y),startLoAndForwardOffsetY:D_(C),startNormalAndForwardOffsetZ:D_(E),endNormalAndTextureCoordinateNormalizationX:D_(I),rightNormalAndTextureCoordinateNormalizationY:D_(b)};return s&&(ve.startHiLo2D=D_(S),ve.offsetAndRight2D=D_(B),ve.startEndNormals2D=D_(v),ve.texcoordNormalization2D=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,normalize:!1,values:P})),new ht({attributes:ve,indices:m,boundingSphere:xe})}function D_(e){return new De({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}v_._projectNormal=oR;var dE=v_;var rR=`in vec4 v_startPlaneNormalEcAndHalfWidth; +in vec4 v_endPlaneNormalEcAndBatchId; +in vec4 v_rightPlaneEC; // Technically can compute distance for this here +in vec4 v_endEcAndStartEcX; +in vec4 v_texcoordNormalizationAndStartEcYZ; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +void main(void) +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate); + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var sR=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var aR=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var cR=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var lR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var zu=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var aW=`${zu} +${lR}`,kOe=rE;Wt.isInternetExplorer()||(aW=`#define CLIP_POLYLINE +${aW}`);function hE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=hE.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??aW,this._fragmentShaderSource=e.fragmentShaderSource??kOe,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(hE.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});hE.VERTEX_FORMAT=Pe.POSITION_ONLY;hE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;hE.prototype.isTranslucent=po.prototype.isTranslucent;hE.prototype.getRenderState=po.prototype.getRenderState;var Cs=hE;var uR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var mE=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var cW=`${zu} +${uR}`,UOe=mE;Wt.isInternetExplorer()||(cW=`#define CLIP_POLYLINE +${cW}`);function AE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=AE.VERTEX_FORMAT;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??cW,this._fragmentShaderSource=e.fragmentShaderSource??UOe,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(AE.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});AE.VERTEX_FORMAT=Pe.POSITION_AND_ST;AE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;AE.prototype.isTranslucent=po.prototype.isTranslucent;AE.prototype.getRenderState=po.prototype.getRenderState;var ka=AE;function hp(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new ka),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=ase(!1),this._renderState3DTiles=ase(!0),this._renderStateMorph=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(hp.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});hp.initializeTerrainHeights=function(){return Ti.initialize()};function GOe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(cR);s=Qn._appendShowToShader(o,s),s=Qn._appendDistanceDisplayConditionToShader(o,s),s=Qn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(aR);a=Qn._appendShowToShader(o,a),a=Qn._appendDistanceDisplayConditionToShader(o,a),a=Qn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(rR),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let A=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new He({defines:u,sources:[s]}),m=new He({defines:A,sources:[h,c]});e._sp=an.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let _=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(_)){let C=new He({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});_=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:C,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=_;let y=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(y)){let C=new He({defines:u.concat([`MAX_TERRAIN_HEIGHT ${Ti._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()(sR);let E=new He({defines:A,sources:[h,c]});y=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:C,fragmentShaderSource:E,attributeLocations:r})}e._spMorph=y}function ase(e){return Ue.fromCache({cull:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function zOe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof Cs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let A=s._va[h],g=o[h];l(g)||(g=o[h]=new nt({owner:e,primitiveType:s._primitiveType})),g.vertexArray=A,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=Be.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=nt.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let _=nt.shallowClone(g,g.derivedCommands.color2D);_.shaderProgram=e._sp2D,g.derivedCommands.color2D=_;let y=nt.shallowClone(m,m.derivedCommands.color2D);y.shaderProgram=e._sp2D,m.derivedCommands.color2D=y;let C=nt.shallowClone(g,g.derivedCommands.colorMorph);C.renderState=e._renderStateMorph,C.shaderProgram=e._spMorph,C.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=C}}function cse(e,t,n,i,o,r,s){n.mode===ie.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ie.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function VOe(e,t,n,i,o,r,s){let a=e._primitive;Qn._updateBoundingVolumes(a,t,o);let c;t.mode===ie.SCENE3D?c=a._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ie.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ie.MORPHING,f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let _=n.length;for(let y=0;y<_;++y){let C=c[y];h&&(g=n[y],cse(e,g,t,o,r,C,s)),A&&(g=n[y].derivedCommands.tileset,cse(e,g,t,o,r,C,s))}}}hp.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!Ti.initialized){hp.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Rc({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,dE.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Pt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){GOe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,A,g,m){zOe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,A,g,m,_){VOe(n,u,f,h,A,g,m)},this._primitive=new Qn(i)}if(this.appearance instanceof Cs&&!this._hasPerInstanceColors)throw new me("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};hp.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};hp.isSupported=function(e){return e.frameState.context.depthTexture};hp.prototype.isDestroyed=function(){return!1};hp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var hh=hp;var HOe=new U(1,1),WOe=!1,jOe=G.WHITE;function ub(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(ub.prototype,{isConstant:{get:function(){return j.isConstant(this._image)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:de("image"),repeat:de("repeat"),color:de("color"),transparent:de("transparent")});ub.prototype.getType=function(e){return"Image"};var YOe=new K;ub.prototype.getValue=function(e,t){return l(e)||(e=K.now(YOe)),l(t)||(t={}),t.image=j.getValueOrUndefined(this._image,e),t.repeat=j.getValueOrClonedDefault(this._repeat,e,HOe,t.repeat),t.color=j.getValueOrClonedDefault(this._color,e,jOe,t.color),j.getValueOrDefault(this._transparent,e,WOe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};ub.prototype.equals=function(e){return this===e||e instanceof ub&&j.equals(this._image,e._image)&&j.equals(this._repeat,e._repeat)&&j.equals(this._color,e._color)&&j.equals(this._transparent,e._transparent)};var P_=ub;function qOe(e){if(e instanceof G)return new Xt(e);if(typeof e=="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new P_;return t.image=e,t}}function KOe(e,t){return de(e,t,qOe)}var jo=KOe;function fR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(fR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),dimensions:de("dimensions"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});fR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new fR(this)};fR.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pE=fR;var XOe={FIXED:0,INERTIAL:1},$i=Object.freeze(XOe);function fb(){me.throwInstantiationError()}Object.defineProperties(fb.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError},referenceFrame:{get:me.throwInstantiationError}});fb.prototype.getValue=me.throwInstantiationError;fb.prototype.getValueInReferenceFrame=me.throwInstantiationError;fb.prototype.equals=me.throwInstantiationError;var lse=new J;fb.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=kt.computeIcrfToCentralBodyFixedMatrix(e,lse);if(n===$i.INERTIAL)return J.multiplyByVector(r,t,o);if(n===$i.FIXED)return J.multiplyByVector(J.transpose(r,lse),t,o)};var mh=fb;function gE(e,t){this._definitionChanged=new _e,this._value=d.clone(e),this._referenceFrame=t??$i.FIXED}Object.defineProperties(gE.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===$i.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var JOe=new K;gE.prototype.getValue=function(e,t){return l(e)||(e=K.now(JOe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};gE.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};gE.prototype.getValueInReferenceFrame=function(e,t,n){return mh.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};gE.prototype.equals=function(e){return this===e||e instanceof gE&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var hl=gE;function dR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(dR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});dR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new dR(this)};dR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var _E=dR;function ZOe(e){return e}function $Oe(e,t){return de(e,t,ZOe)}var ml=$Oe;function hR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(hR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),length:de("length"),topRadius:de("topRadius"),bottomRadius:de("bottomRadius"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),slices:de("slices"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});hR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new hR(this)};hR.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var yE=hR;function mR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(mR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),semiMajorAxis:de("semiMajorAxis"),semiMinorAxis:de("semiMinorAxis"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});mR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new mR(this)};mR.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var CE=mR;function AR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(AR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),radii:de("radii"),innerRadii:de("innerRadii"),minimumClock:de("minimumClock"),maximumClock:de("maximumClock"),minimumCone:de("minimumCone"),maximumCone:de("maximumCone"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),stackPartitions:de("stackPartitions"),slicePartitions:de("slicePartitions"),subdivisions:de("subdivisions"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});AR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new AR(this)};AR.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var EE=AR;function pR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(pR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),text:de("text"),font:de("font"),style:de("style"),scale:de("scale"),showBackground:de("showBackground"),backgroundColor:de("backgroundColor"),backgroundPadding:de("backgroundPadding"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),fillColor:de("fillColor"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),scaleByDistance:de("scaleByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance")});pR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new pR(this)};pR.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var Ah=pR;var eFe=new d(1,1,1),tFe=d.ZERO,nFe=Le.IDENTITY;function use(e,t,n){this.translation=d.clone(e??tFe),this.rotation=Le.clone(t??nFe),this.scale=d.clone(n??eFe)}use.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var R_=use;var lW=new R_;function gR(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(gR.prototype,{isConstant:{get:function(){return j.isConstant(this._translation)&&j.isConstant(this._rotation)&&j.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:de("translation"),rotation:de("rotation"),scale:de("scale")});var iFe=new K;gR.prototype.getValue=function(e,t){return l(e)||(e=K.now(iFe)),l(t)||(t=new R_),t.translation=j.getValueOrClonedDefault(this._translation,e,lW.translation,t.translation),t.rotation=j.getValueOrClonedDefault(this._rotation,e,lW.rotation,t.rotation),t.scale=j.getValueOrClonedDefault(this._scale,e,lW.scale,t.scale),t};gR.prototype.equals=function(e){return this===e||e instanceof gR&&j.equals(this._translation,e._translation)&&j.equals(this._rotation,e._rotation)&&j.equals(this._scale,e._scale)};var IE=gR;function mp(e,t){this._propertyNames=[],this._definitionChanged=new _e,l(e)&&this.merge(e,t)}Object.defineProperties(mp.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!j.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});mp.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function oFe(e){return new ci(e)}mp.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,de(e,!0,n??oFe)),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};mp.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var rFe=new K;mp.prototype.getValue=function(e,t){l(e)||(e=K.now(rFe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=j.getValueOrUndefined(this[r],e,t[r])}return t};mp.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function sFe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!j.equals(e[s],t[s]))return!1}return!0}mp.prototype.equals=function(e){return this===e||e instanceof mp&&sFe(this,e)};var Al=mp;function fse(e){return new IE(e)}function aFe(e){return new Al(e,fse)}function cFe(e){return new Al(e)}function lFe(e){return new Al(e)}function _R(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(_R.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),scale:de("scale"),enableVerticalExaggeration:de("enableVerticalExaggeration"),minimumPixelSize:de("minimumPixelSize"),maximumScale:de("maximumScale"),incrementallyLoadTextures:de("incrementallyLoadTextures"),runAnimations:de("runAnimations"),clampAnimations:de("clampAnimations"),shadows:de("shadows"),heightReference:de("heightReference"),silhouetteColor:de("silhouetteColor"),silhouetteSize:de("silhouetteSize"),color:de("color"),colorBlendMode:de("colorBlendMode"),colorBlendAmount:de("colorBlendAmount"),imageBasedLightingFactor:de("imageBasedLightingFactor"),environmentMapOptions:de("environmentMapOptions",void 0,lFe),lightColor:de("lightColor"),distanceDisplayCondition:de("distanceDisplayCondition"),nodeTransformations:de("nodeTransformations",void 0,aFe),articulations:de("articulations",void 0,cFe),clippingPlanes:de("clippingPlanes"),customShader:de("customShader")});_R.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new _R(this)};_R.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.scale=this.scale??e.scale,this.enableVerticalExaggeration=this.enableVerticalExaggeration??e.enableVerticalExaggeration,this.minimumPixelSize=this.minimumPixelSize??e.minimumPixelSize,this.maximumScale=this.maximumScale??e.maximumScale,this.incrementallyLoadTextures=this.incrementallyLoadTextures??e.incrementallyLoadTextures,this.runAnimations=this.runAnimations??e.runAnimations,this.clampAnimations=this.clampAnimations??e.clampAnimations,this.shadows=this.shadows??e.shadows,this.heightReference=this.heightReference??e.heightReference,this.silhouetteColor=this.silhouetteColor??e.silhouetteColor,this.silhouetteSize=this.silhouetteSize??e.silhouetteSize,this.color=this.color??e.color,this.colorBlendMode=this.colorBlendMode??e.colorBlendMode,this.colorBlendAmount=this.colorBlendAmount??e.colorBlendAmount,this.imageBasedLightingFactor=this.imageBasedLightingFactor??e.imageBasedLightingFactor,this.environmentMapOptions=this.environmentMapOptions??e.environmentMapOptions,this.lightColor=this.lightColor??e.lightColor,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.clippingPlanes=this.clippingPlanes??e.clippingPlanes,this.customShader=this.customShader??e.customShader;let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new Al(t,fse)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new Al(n)}};var Ap=_R;function yR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(yR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),maximumScreenSpaceError:de("maximumScreenSpaceError")});yR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new yR(this)};yR.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.maximumScreenSpaceError=this.maximumScreenSpaceError??e.maximumScreenSpaceError};var xE=yR;function CR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(CR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),leadTime:de("leadTime"),trailTime:de("trailTime"),width:de("width"),resolution:de("resolution"),material:jo("material"),distanceDisplayCondition:de("distanceDisplayCondition")});CR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new CR(this)};CR.prototype.merge=function(e){this.show=this.show??e.show,this.leadTime=this.leadTime??e.leadTime,this.trailTime=this.trailTime??e.trailTime,this.width=this.width??e.width,this.resolution=this.resolution??e.resolution,this.material=this.material??e.material,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pp=CR;function ER(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(ER.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),plane:de("plane"),dimensions:de("dimensions"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});ER.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new ER(this)};ER.prototype.merge=function(e){this.show=this.show??e.show,this.plane=this.plane??e.plane,this.dimensions=this.dimensions??e.dimensions,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var IR=ER;function xR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(xR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),pixelSize:de("pixelSize"),heightReference:de("heightReference"),color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});xR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new xR(this)};xR.prototype.merge=function(e){this.show=this.show??e.show,this.pixelSize=this.pixelSize??e.pixelSize,this.heightReference=this.heightReference??e.heightReference,this.color=this.color??e.color,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var bE=xR;function uFe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var fc=uFe;function fFe(e){return Array.isArray(e)&&(e=new fc(e)),new ci(e)}function bR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(bR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),hierarchy:de("hierarchy",void 0,fFe),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),perPositionHeight:de("perPositionHeight"),closeTop:de("closeTop"),closeBottom:de("closeBottom"),arcType:de("arcType"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex"),textureCoordinates:de("textureCoordinates")});bR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new bR(this)};bR.prototype.merge=function(e){this.show=this.show??e.show,this.hierarchy=this.hierarchy??e.hierarchy,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.perPositionHeight=this.perPositionHeight??e.perPositionHeight,this.closeTop=this.closeTop??e.closeTop,this.closeBottom=this.closeBottom??e.closeBottom,this.arcType=this.arcType??e.arcType,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex,this.textureCoordinates=this.textureCoordinates??e.textureCoordinates};var ph=bR;function TR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(TR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),granularity:de("granularity"),material:jo("material"),depthFailMaterial:jo("depthFailMaterial"),arcType:de("arcType"),clampToGround:de("clampToGround"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});TR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new TR(this)};TR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.granularity=this.granularity??e.granularity,this.material=this.material??e.material,this.depthFailMaterial=this.depthFailMaterial??e.depthFailMaterial,this.arcType=this.arcType??e.arcType,this.clampToGround=this.clampToGround??e.clampToGround,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var Mc=TR;function SR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(SR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),shape:de("shape"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});SR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new SR(this)};SR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.shape=this.shape??e.shape,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var TE=SR;function wR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(wR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),coordinates:de("coordinates"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});wR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new wR(this)};wR.prototype.merge=function(e){this.show=this.show??e.show,this.coordinates=this.coordinates??e.coordinates,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var gh=wR;function BR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(BR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),minimumHeights:de("minimumHeights"),maximumHeights:de("maximumHeights"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});BR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new BR(this)};BR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.minimumHeights=this.minimumHeights??e.minimumHeights,this.maximumHeights=this.maximumHeights??e.maximumHeights,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var gp=BR;var dFe=new Ae,uW=[];function hFe(e){return new hl(e)}function mFe(e){return de(e,void 0,hFe)}function da(e,t){return de(e,void 0,function(n){return n instanceof t?n:new t(n)})}function Zf(e){e=e??V.EMPTY_OBJECT;let t=e.id;l(t)||(t=Xn()),this._availability=void 0,this._id=t,this._definitionChanged=new _e,this._name=e.name,this._show=e.show??!0,this._trackingReferenceFrame=e.trackingReferenceFrame??lp.AUTODETECT,this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...uW],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function fW(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&fW(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(Zf.prototype,{availability:ml("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:ml("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&fW(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:ml("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&fW(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:da("billboard",Tc),box:da("box",pE),corridor:da("corridor",_E),cylinder:da("cylinder",yE),description:de("description"),ellipse:da("ellipse",CE),ellipsoid:da("ellipsoid",EE),label:da("label",Ah),model:da("model",Ap),tileset:da("tileset",xE),orientation:de("orientation"),path:da("path",pp),plane:da("plane",IR),point:da("point",bE),polygon:da("polygon",ph),polyline:da("polyline",Mc),polylineVolume:da("polylineVolume",TE),properties:da("properties",Al),position:mFe("position"),rectangle:da("rectangle",gh),viewFrom:de("viewFrom"),wall:da("wall",gp)});Zf.registerEntityType=function(e,t){Object.defineProperties(Zf.prototype,{[e]:da(e,t)}),uW.includes(e)||uW.push(e)};Zf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};Zf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,ml(e,!0))};Zf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};Zf.prototype.merge=function(e){this.name=this.name??e.name,this.availability=this.availability??e.availability;let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var dse=new J,hse=new d,mse=new Le;Zf.prototype.computeModelMatrix=function(e,t){let n=j.getValueOrUndefined(this._position,e,hse);if(!l(n))return;let i=j.getValueOrUndefined(this._orientation,e,mse);return l(i)?t=N.fromRotationTranslation(J.fromQuaternion(i,dse),n,t):t=kt.eastNorthUpToFixedFrame(n,void 0,t),t};Zf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=j.getValueOrDefault(t,e,Ze.NONE),s=j.getValueOrUndefined(this._position,e,hse);if(r===Ze.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,D.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,dFe);Wf(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=j.getValueOrUndefined(this._orientation,e,mse);return l(c)?o=N.fromRotationTranslation(J.fromQuaternion(c,dse),s,o):o=kt.eastNorthUpToFixedFrame(s,void 0,o),o};Zf.supportsMaterialsforEntitiesOnTerrain=function(e){return fl.supportsMaterials(e)};Zf.supportsPolylinesOnTerrain=function(e){return hh.isSupported(e)};var fr=Zf;var AFe=new Xt(G.WHITE),pFe=new ci(!0),gFe=new ci(!0),_Fe=new ci(!1),yFe=new ci(G.BLACK),CFe=new ci(Bn.DISABLED),EFe=new ci(new Ut),IFe=new ci(Jn.BOTH);function pl(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=fr.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(pl.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});pl.prototype.isOutlineVisible=function(e){let t=this._entity;return(this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e))??!1};pl.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e))??!1};pl.prototype.createFillGeometryInstance=me.throwInstantiationError;pl.prototype.createOutlineGeometryInstance=me.throwInstantiationError;pl.prototype.isDestroyed=function(){return!1};pl.prototype.destroy=function(){ue(this)};pl.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(je.MINIMUM_VALUE)};pl.prototype._isOnTerrain=function(e,t){return!1};pl.prototype._getIsClosed=function(e){return!0};pl.prototype._isDynamic=me.throwInstantiationError;pl.prototype._setStaticOptions=me.throwInstantiationError;pl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(je.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(je.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=o.material??AFe,this._fillProperty=r??gFe,this._showProperty=u??pFe,this._showOutlineProperty=o.outline??_Fe,this._outlineColorProperty=c?o.outlineColor??yFe:void 0,this._shadowsProperty=o.shadows??CFe,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??EFe,this._classificationTypeProperty=o.classificationType??IFe,this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof Xt);if(c&&f&&(yt(yt.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(je.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};pl.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var yi=pl;function db(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(db.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var xFe=new K;db.prototype.getValue=function(e,t){return l(e)||(e=K.now(xFe)),this._callback(e,t)};db.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};db.prototype.equals=function(e){return this===e||e instanceof db&&this._callback===e._callback&&this._isConstant===e._isConstant};var _h=db;var Ase=new d;function hb(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new Ae,this._normal=new d,this._definitionChanged=new _e,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(je.MINIMUM_VALUE,Ase);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(hb.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});hb.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var bFe=new K;hb.prototype.getValue=function(e,t){l(e)||(e=K.now(bFe));let n=j.getValueOrDefault(this._heightReference,e,Ze.NONE),i=j.getValueOrDefault(this._extrudedHeightReference,e,Ze.NONE);if(n===Ze.NONE&&!Kx(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,Ase);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,D.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};hb.prototype.isDestroyed=function(){return!1};hb.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var SE=hb;function TFe(e,t,n,i){if(yi.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new _h(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new SE(this._scene,s,r)}}var _p=TFe;var pse=d.ZERO,gse=new d,SFe=new d,_se=new G;function wFe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function Vu(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new wFe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(Vu.prototype=Object.create(yi.prototype),Vu.prototype.constructor=Vu);Object.defineProperties(Vu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Vu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,_se)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,pse,gse))),new Pt({id:t,geometry:cc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};Vu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,_se),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,pse,gse))),new Pt({id:t,geometry:ah.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};Vu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Vu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||yi.prototype._isHidden.call(this,e,t)};Vu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};Vu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Vu.prototype._onEntityPropertyChanged=_p;Vu.DynamicGeometryUpdater=mb;function mb(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(mb.prototype=Object.create(_i.prototype),mb.prototype.constructor=mb);mb.prototype._isHidden=function(e,t,n){let i=j.getValueOrUndefined(e.position,n,SFe),o=this._options.dimensions;return!l(i)||!l(o)||_i.prototype._isHidden.call(this,e,t,n)};mb.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.dimensions=j.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var DR=Vu;function wE(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??$i.FIXED,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(wE.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var BFe=new K;wE.prototype.getValue=function(e,t){return l(e)||(e=K.now(BFe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};wE.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};wE.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return mh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};wE.prototype.equals=function(e){return this===e||e instanceof wE&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var vR=wE;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:Bse,setPrototypeOf:yse,isFrozen:DFe,getPrototypeOf:vFe,getOwnPropertyDescriptor:PFe}=Object,{freeze:_l,seal:$f,create:Dse}=Object,{apply:gW,construct:_W}=typeof Reflect<"u"&&Reflect;_l||(_l=function(t){return t});$f||($f=function(t){return t});gW||(gW=function(t,n,i){return t.apply(n,i)});_W||(_W=function(t,n){return new t(...n)});var tz=yl(Array.prototype.forEach),RFe=yl(Array.prototype.lastIndexOf),Cse=yl(Array.prototype.pop),PR=yl(Array.prototype.push),MFe=yl(Array.prototype.splice),iz=yl(String.prototype.toLowerCase),dW=yl(String.prototype.toString),Ese=yl(String.prototype.match),RR=yl(String.prototype.replace),NFe=yl(String.prototype.indexOf),LFe=yl(String.prototype.trim),yh=yl(Object.prototype.hasOwnProperty),gl=yl(RegExp.prototype.test),MR=OFe(TypeError);function yl(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return gW(e,t,i)}}function OFe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return _W(e,n)}}function Vi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:iz;yse&&yse(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(DFe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function FFe(e){for(let t=0;t<e.length;t++)yh(e,t)||(e[t]=null);return e}function yp(e){let t=Dse(null);for(let[n,i]of Bse(e))yh(e,n)&&(Array.isArray(i)?t[n]=FFe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=yp(i):t[n]=i);return t}function NR(e,t){for(;e!==null;){let i=PFe(e,t);if(i){if(i.get)return yl(i.get);if(typeof i.value=="function")return yl(i.value)}e=vFe(e)}function n(){return null}return n}var Ise=_l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),hW=_l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),mW=_l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),QFe=_l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),AW=_l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),kFe=_l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),xse=_l(["#text"]),bse=_l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),pW=_l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Tse=_l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),nz=_l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),UFe=$f(/\{\{[\w\W]*|[\w\W]*\}\}/gm),GFe=$f(/<%[\w\W]*|[\w\W]*%>/gm),zFe=$f(/\$\{[\w\W]*/gm),VFe=$f(/^data-[\-\w.\u00B7-\uFFFF]+$/),HFe=$f(/^aria-[\-\w]+$/),vse=$f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),WFe=$f(/^(?:\w+script|data):/i),jFe=$f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Pse=$f(/^html$/i),YFe=$f(/^[a-z][.\w]*(-[.\w]+)+$/i),Sse=Object.freeze({__proto__:null,ARIA_ATTR:HFe,ATTR_WHITESPACE:jFe,CUSTOM_ELEMENT:YFe,DATA_ATTR:VFe,DOCTYPE_NAME:Pse,ERB_EXPR:GFe,IS_ALLOWED_URI:vse,IS_SCRIPT_OR_DATA:WFe,MUSTACHE_EXPR:UFe,TMPLIT_EXPR:zFe}),LR={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},qFe=function(){return typeof window>"u"?null:window},KFe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},wse=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Rse(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:qFe(),t=un=>Rse(un);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==LR.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:A,trustedTypes:g}=e,m=c.prototype,_=NR(m,"cloneNode"),y=NR(m,"remove"),C=NR(m,"nextSibling"),E=NR(m,"childNodes"),I=NR(m,"parentNode");if(typeof s=="function"){let un=n.createElement("template");un.content&&un.content.ownerDocument&&(n=un.content.ownerDocument)}let b,S="",{implementation:B,createNodeIterator:v,createDocumentFragment:P,getElementsByTagName:M}=n,{importNode:L}=i,p=wse();t.isSupported=typeof Bse=="function"&&typeof I=="function"&&B&&B.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:x,ERB_EXPR:T,TMPLIT_EXPR:w,DATA_ATTR:R,ARIA_ATTR:O,IS_SCRIPT_OR_DATA:k,ATTR_WHITESPACE:Q,CUSTOM_ELEMENT:z}=Sse,{IS_ALLOWED_URI:F}=Sse,H=null,W=Vi({},[...Ise,...hW,...mW,...AW,...xse]),Z=null,Y=Vi({},[...bse,...pW,...Tse,...nz]),$=Object.seal(Dse(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,he=null,ge=!0,fe=!0,ye=!1,xe=!0,ve=!1,Te=!0,ke=!1,Ge=!1,Ke=!1,tt=!1,en=!1,it=!1,nn=!0,qt=!1,Rt="user-content-",Si=!0,gi=!1,Ft={},St=null,oi=Vi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Et=null,Lo=Vi({},["audio","video","img","source","image","track"]),Ho=null,Pa=Vi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Er="http://www.w3.org/1998/Math/MathML",Lr="http://www.w3.org/2000/svg",Fe="http://www.w3.org/1999/xhtml",lt=Fe,Xe=!1,et=null,gt=Vi({},[Er,Lr,Fe],dW),Jt=Vi({},["mi","mo","mn","ms","mtext"]),bn=Vi({},["annotation-xml"]),ho=Vi({},["title","style","font","a","script"]),lo=null,sa=["application/xhtml+xml","text/html"],aa="text/html",Wn=null,bi=null,vs=n.createElement("form"),Xo=function(Se){return Se instanceof RegExp||Se instanceof Function},Ra=function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(bi&&bi===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=yp(Se),lo=sa.indexOf(Se.PARSER_MEDIA_TYPE)===-1?aa:Se.PARSER_MEDIA_TYPE,Wn=lo==="application/xhtml+xml"?dW:iz,H=yh(Se,"ALLOWED_TAGS")?Vi({},Se.ALLOWED_TAGS,Wn):W,Z=yh(Se,"ALLOWED_ATTR")?Vi({},Se.ALLOWED_ATTR,Wn):Y,et=yh(Se,"ALLOWED_NAMESPACES")?Vi({},Se.ALLOWED_NAMESPACES,dW):gt,Ho=yh(Se,"ADD_URI_SAFE_ATTR")?Vi(yp(Pa),Se.ADD_URI_SAFE_ATTR,Wn):Pa,Et=yh(Se,"ADD_DATA_URI_TAGS")?Vi(yp(Lo),Se.ADD_DATA_URI_TAGS,Wn):Lo,St=yh(Se,"FORBID_CONTENTS")?Vi({},Se.FORBID_CONTENTS,Wn):oi,X=yh(Se,"FORBID_TAGS")?Vi({},Se.FORBID_TAGS,Wn):yp({}),he=yh(Se,"FORBID_ATTR")?Vi({},Se.FORBID_ATTR,Wn):yp({}),Ft=yh(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ge=Se.ALLOW_ARIA_ATTR!==!1,fe=Se.ALLOW_DATA_ATTR!==!1,ye=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,xe=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ve=Se.SAFE_FOR_TEMPLATES||!1,Te=Se.SAFE_FOR_XML!==!1,ke=Se.WHOLE_DOCUMENT||!1,tt=Se.RETURN_DOM||!1,en=Se.RETURN_DOM_FRAGMENT||!1,it=Se.RETURN_TRUSTED_TYPE||!1,Ke=Se.FORCE_BODY||!1,nn=Se.SANITIZE_DOM!==!1,qt=Se.SANITIZE_NAMED_PROPS||!1,Si=Se.KEEP_CONTENT!==!1,gi=Se.IN_PLACE||!1,F=Se.ALLOWED_URI_REGEXP||vse,lt=Se.NAMESPACE||Fe,Jt=Se.MATHML_TEXT_INTEGRATION_POINTS||Jt,bn=Se.HTML_INTEGRATION_POINTS||bn,$=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Xo(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&($.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Xo(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&($.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&($.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(fe=!1),en&&(tt=!0),Ft&&(H=Vi({},xse),Z=[],Ft.html===!0&&(Vi(H,Ise),Vi(Z,bse)),Ft.svg===!0&&(Vi(H,hW),Vi(Z,pW),Vi(Z,nz)),Ft.svgFilters===!0&&(Vi(H,mW),Vi(Z,pW),Vi(Z,nz)),Ft.mathMl===!0&&(Vi(H,AW),Vi(Z,Tse),Vi(Z,nz))),Se.ADD_TAGS&&(H===W&&(H=yp(H)),Vi(H,Se.ADD_TAGS,Wn)),Se.ADD_ATTR&&(Z===Y&&(Z=yp(Z)),Vi(Z,Se.ADD_ATTR,Wn)),Se.ADD_URI_SAFE_ATTR&&Vi(Ho,Se.ADD_URI_SAFE_ATTR,Wn),Se.FORBID_CONTENTS&&(St===oi&&(St=yp(St)),Vi(St,Se.FORBID_CONTENTS,Wn)),Si&&(H["#text"]=!0),ke&&Vi(H,["html","head","body"]),H.table&&(Vi(H,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw MR('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw MR('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');b=Se.TRUSTED_TYPES_POLICY,S=b.createHTML("")}else b===void 0&&(b=KFe(g,o)),b!==null&&typeof S=="string"&&(S=b.createHTML(""));_l&&_l(Se),bi=Se}},mo=Vi({},[...hW,...mW,...QFe]),Jo=Vi({},[...AW,...kFe]),Uf=function(Se){let wt=I(Se);(!wt||!wt.tagName)&&(wt={namespaceURI:lt,tagName:"template"});let _n=iz(Se.tagName),rr=iz(wt.tagName);return et[Se.namespaceURI]?Se.namespaceURI===Lr?wt.namespaceURI===Fe?_n==="svg":wt.namespaceURI===Er?_n==="svg"&&(rr==="annotation-xml"||Jt[rr]):!!mo[_n]:Se.namespaceURI===Er?wt.namespaceURI===Fe?_n==="math":wt.namespaceURI===Lr?_n==="math"&&bn[rr]:!!Jo[_n]:Se.namespaceURI===Fe?wt.namespaceURI===Lr&&!bn[rr]||wt.namespaceURI===Er&&!Jt[rr]?!1:!Jo[_n]&&(ho[_n]||!mo[_n]):!!(lo==="application/xhtml+xml"&&et[Se.namespaceURI]):!1},Ir=function(Se){PR(t.removed,{element:Se});try{I(Se).removeChild(Se)}catch{y(Se)}},Ps=function(Se,wt){try{PR(t.removed,{attribute:wt.getAttributeNode(Se),from:wt})}catch{PR(t.removed,{attribute:null,from:wt})}if(wt.removeAttribute(Se),Se==="is")if(tt||en)try{Ir(wt)}catch{}else try{wt.setAttribute(Se,"")}catch{}},Ws=function(Se){let wt=null,_n=null;if(Ke)Se="<remove></remove>"+Se;else{let Rs=Ese(Se,/^[\r\n\t ]+/);_n=Rs&&Rs[0]}lo==="application/xhtml+xml"&<===Fe&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let rr=b?b.createHTML(Se):Se;if(lt===Fe)try{wt=new A().parseFromString(rr,lo)}catch{}if(!wt||!wt.documentElement){wt=B.createDocument(lt,"template",null);try{wt.documentElement.innerHTML=Xe?S:rr}catch{}}let Ma=wt.body||wt.documentElement;return Se&&_n&&Ma.insertBefore(n.createTextNode(_n),Ma.childNodes[0]||null),lt===Fe?M.call(wt,ke?"html":"body")[0]:ke?wt.documentElement:Ma},eh=function(Se){return v.call(Se.ownerDocument||Se,Se,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},ps=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},ic=function(Se){return typeof a=="function"&&Se instanceof a};function oc(un,Se,wt){tz(un,_n=>{_n.call(t,Se,wt,bi)})}let Or=function(Se){let wt=null;if(oc(p.beforeSanitizeElements,Se,null),ps(Se))return Ir(Se),!0;let _n=Wn(Se.nodeName);if(oc(p.uponSanitizeElement,Se,{tagName:_n,allowedTags:H}),Te&&Se.hasChildNodes()&&!ic(Se.firstElementChild)&&gl(/<[/\w!]/g,Se.innerHTML)&&gl(/<[/\w!]/g,Se.textContent)||Se.nodeType===LR.progressingInstruction||Te&&Se.nodeType===LR.comment&&gl(/<[/\w]/g,Se.data))return Ir(Se),!0;if(!H[_n]||X[_n]){if(!X[_n]&&Kl(_n)&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n)))return!1;if(Si&&!St[_n]){let rr=I(Se)||Se.parentNode,Ma=E(Se)||Se.childNodes;if(Ma&&rr){let Rs=Ma.length;for(let bc=Rs-1;bc>=0;--bc){let th=_(Ma[bc],!0);th.__removalCount=(Se.__removalCount||0)+1,rr.insertBefore(th,C(Se))}}}return Ir(Se),!0}return Se instanceof c&&!Uf(Se)||(_n==="noscript"||_n==="noembed"||_n==="noframes")&&gl(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Ir(Se),!0):(ve&&Se.nodeType===LR.text&&(wt=Se.textContent,tz([x,T,w],rr=>{wt=RR(wt,rr," ")}),Se.textContent!==wt&&(PR(t.removed,{element:Se.cloneNode()}),Se.textContent=wt)),oc(p.afterSanitizeElements,Se,null),!1)},ql=function(Se,wt,_n){if(nn&&(wt==="id"||wt==="name")&&(_n in n||_n in vs))return!1;if(!(fe&&!he[wt]&&gl(R,wt))){if(!(ge&&gl(O,wt))){if(!Z[wt]||he[wt]){if(!(Kl(Se)&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,Se)||$.tagNameCheck instanceof Function&&$.tagNameCheck(Se))&&($.attributeNameCheck instanceof RegExp&&gl($.attributeNameCheck,wt)||$.attributeNameCheck instanceof Function&&$.attributeNameCheck(wt))||wt==="is"&&$.allowCustomizedBuiltInElements&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n))))return!1}else if(!Ho[wt]){if(!gl(F,RR(_n,Q,""))){if(!((wt==="src"||wt==="xlink:href"||wt==="href")&&Se!=="script"&&NFe(_n,"data:")===0&&Et[Se])){if(!(ye&&!gl(k,RR(_n,Q,"")))){if(_n)return!1}}}}}}return!0},Kl=function(Se){return Se!=="annotation-xml"&&Ese(Se,z)},ca=function(Se){oc(p.beforeSanitizeAttributes,Se,null);let{attributes:wt}=Se;if(!wt||ps(Se))return;let _n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0},rr=wt.length;for(;rr--;){let Ma=wt[rr],{name:Rs,namespaceURI:bc,value:th}=Ma,WA=Wn(Rs),aB=th,Na=Rs==="value"?aB:LFe(aB);if(_n.attrName=WA,_n.attrValue=Na,_n.keepAttr=!0,_n.forceKeepAttr=void 0,oc(p.uponSanitizeAttribute,Se,_n),Na=_n.attrValue,qt&&(WA==="id"||WA==="name")&&(Ps(Rs,Se),Na=Rt+Na),Te&&gl(/((--!?|])>)|<\/(style|title)/i,Na)){Ps(Rs,Se);continue}if(_n.forceKeepAttr)continue;if(!_n.keepAttr){Ps(Rs,Se);continue}if(!xe&&gl(/\/>/i,Na)){Ps(Rs,Se);continue}ve&&tz([x,T,w],GU=>{Na=RR(Na,GU," ")});let UU=Wn(Se.nodeName);if(!ql(UU,WA,Na)){Ps(Rs,Se);continue}if(b&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!bc)switch(g.getAttributeType(UU,WA)){case"TrustedHTML":{Na=b.createHTML(Na);break}case"TrustedScriptURL":{Na=b.createScriptURL(Na);break}}if(Na!==aB)try{bc?Se.setAttributeNS(bc,Rs,Na):Se.setAttribute(Rs,Na),ps(Se)?Ir(Se):Cse(t.removed)}catch{Ps(Rs,Se)}}oc(p.afterSanitizeAttributes,Se,null)},vo=function un(Se){let wt=null,_n=eh(Se);for(oc(p.beforeSanitizeShadowDOM,Se,null);wt=_n.nextNode();)oc(p.uponSanitizeShadowNode,wt,null),Or(wt),ca(wt),wt.content instanceof r&&un(wt.content);oc(p.afterSanitizeShadowDOM,Se,null)};return t.sanitize=function(un){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},wt=null,_n=null,rr=null,Ma=null;if(Xe=!un,Xe&&(un="<!-->"),typeof un!="string"&&!ic(un))if(typeof un.toString=="function"){if(un=un.toString(),typeof un!="string")throw MR("dirty is not a string, aborting")}else throw MR("toString is not a function");if(!t.isSupported)return un;if(Ge||Ra(Se),t.removed=[],typeof un=="string"&&(gi=!1),gi){if(un.nodeName){let th=Wn(un.nodeName);if(!H[th]||X[th])throw MR("root node is forbidden and cannot be sanitized in-place")}}else if(un instanceof a)wt=Ws("<!---->"),_n=wt.ownerDocument.importNode(un,!0),_n.nodeType===LR.element&&_n.nodeName==="BODY"||_n.nodeName==="HTML"?wt=_n:wt.appendChild(_n);else{if(!tt&&!ve&&!ke&&un.indexOf("<")===-1)return b&&it?b.createHTML(un):un;if(wt=Ws(un),!wt)return tt?null:it?S:""}wt&&Ke&&Ir(wt.firstChild);let Rs=eh(gi?un:wt);for(;rr=Rs.nextNode();)Or(rr),ca(rr),rr.content instanceof r&&vo(rr.content);if(gi)return un;if(tt){if(en)for(Ma=P.call(wt.ownerDocument);wt.firstChild;)Ma.appendChild(wt.firstChild);else Ma=wt;return(Z.shadowroot||Z.shadowrootmode)&&(Ma=L.call(i,Ma,!0)),Ma}let bc=ke?wt.outerHTML:wt.innerHTML;return ke&&H["!doctype"]&&wt.ownerDocument&&wt.ownerDocument.doctype&&wt.ownerDocument.doctype.name&&gl(Pse,wt.ownerDocument.doctype.name)&&(bc="<!DOCTYPE "+wt.ownerDocument.doctype.name+`> +`+bc),ve&&tz([x,T,w],th=>{bc=RR(bc,th," ")}),b&&it?b.createHTML(bc):bc},t.setConfig=function(){let un=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ra(un),Ge=!0},t.clearConfig=function(){bi=null,Ge=!1},t.isValidAttribute=function(un,Se,wt){bi||Ra({});let _n=Wn(un),rr=Wn(Se);return ql(_n,rr,wt)},t.addHook=function(un,Se){typeof Se=="function"&&PR(p[un],Se)},t.removeHook=function(un,Se){if(Se!==void 0){let wt=RFe(p[un],Se);return wt===-1?void 0:MFe(p[un],wt,1)[0]}return Cse(p[un])},t.removeHooks=function(un){p[un]=[]},t.removeAllHooks=function(){p=wse()},t}var Mse=Rse();var XFe=0,yW={};function zm(e,t){let n,i=e;l(yW[i])?n=yW[i]:(n=XFe++,yW[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(zm.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Mse.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});zm.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};zm.prototype.equals=function(e){return zm.equals(this,e)};zm.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};zm.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new zm(e.html,t)};zm.clone=function(e){if(l(e))return new zm(e.html,e.showOnScreen)};var Bt=zm;function JFe(e,t){yt(e,t)}var Tr=JFe;function BE(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new _e}Object.defineProperties(BE.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});BE.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function CW(e){e._cubeMapBuffers=void 0}BE.prototype.update=function(e){let{context:t}=e;if(!BE.isSupported(t))return;if(l(this._texture)){CW(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(CW(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;$l(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT);let o=$e.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(kr.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),u=new kr({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};BE.prototype.isDestroyed=function(){return!1};BE.prototype.destroy=function(){return CW(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var Ch=BE;function OR(e){e=e??V.EMPTY_OBJECT;let t=l(e.imageBasedLightingFactor)?U.clone(e.imageBasedLightingFactor):new U(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousFrameContext=void 0,this._previousImageBasedLightingFactor=U.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(OR.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=U.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function ZFe(e,t){if(Ch.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new Ch(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}OR.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;U.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(ZFe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};OR.prototype.isDestroyed=function(){return!1};OR.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var DE=OR;var IW=xr(Ou(),1);var EW,Nse="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",oz={};oz.defaultAccessToken=Nse;oz.defaultServer=new we({url:"https://api.cesium.com/"});oz.getDefaultTokenCredit=function(e){if(e===Nse){if(!l(EW)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;EW=new Bt(t,!0)}return EW}};var Eh=oz;function Cl(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:$Fe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new ce("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");we.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new IW.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(Cl.prototype=Object.create(we.prototype),Cl.prototype.constructor=Cl);Cl.fromAssetId=function(e,t){let n=Cl._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new Cl(i,n)})};Object.defineProperties(Cl.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=Cl.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});Cl.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Bt.getIonCredit),i=Eh.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Bt.clone(i)),n};Cl.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new Cl(t._ionEndpoint,t._ionEndpointResource)),e=we.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};Cl.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return we.prototype.fetchImage.call(this,e)};Cl.prototype._makeRequest=function(e){return this._isExternal||new IW.default(this.url).authority()!==this._ionEndpointDomain?we.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),we.prototype._makeRequest.call(this,e))};Cl._createEndpointResource=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.server??Eh.defaultServer,i=t.accessToken??Eh.defaultAccessToken;n=we.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function $Fe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var Hu=Cl;function Vm(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Vm.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Vm.prototype.get=function(e){return this._array[e]};Vm.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Vm.prototype.peek=function(){return this._array[this._length-1]};Vm.prototype.push=function(e){let t=this.length++;this._array[t]=e};Vm.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Vm.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Vm.prototype.resize=function(e){this.length=e};Vm.prototype.trim=function(e){e=e??this._length,this._array.length=e};var El=Vm;function rz(e){e=e??V.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}rz.ALL=Object.freeze(new rz({color:new G(0,0,0,0),depth:1,stencil:0}));rz.prototype.execute=function(e,t){e.clear(this,t)};var Ci=rz;var Cp={X:0,Y:1,Z:2};Cp.Y_UP_TO_Z_UP=N.fromRotationTranslation(J.fromArray([1,0,0,0,0,1,0,-1,0]));Cp.Z_UP_TO_Y_UP=N.fromRotationTranslation(J.fromArray([1,0,0,0,0,-1,0,1,0]));Cp.X_UP_TO_Z_UP=N.fromRotationTranslation(J.fromArray([0,0,1,0,1,0,-1,0,0]));Cp.Z_UP_TO_X_UP=N.fromRotationTranslation(J.fromArray([0,0,-1,0,1,0,1,0,0]));Cp.X_UP_TO_Y_UP=N.fromRotationTranslation(J.fromArray([0,1,0,-1,0,0,0,0,1]));Cp.Y_UP_TO_X_UP=N.fromRotationTranslation(J.fromArray([0,-1,0,1,0,0,0,0,1]));Cp.fromName=function(e){return Cp[e]};var fo=Object.freeze(Cp);function ed(e){this.planes=e??[]}var FR=[new d,new d,new d];d.clone(d.UNIT_X,FR[0]);d.clone(d.UNIT_Y,FR[1]);d.clone(d.UNIT_Z,FR[2]);var M_=new d,e2e=new d,Lse=new mn(new d(1,0,0),0);ed.fromBoundingSphere=function(e,t){l(t)||(t=new ed);let n=FR.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=FR[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new se),l(f)||(f=i[s+1]=new se),d.multiplyByScalar(c,-r,M_),d.add(o,M_,M_),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,M_),d.multiplyByScalar(c,r,M_),d.add(o,M_,M_),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,e2e),M_),s+=2}return t};ed.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(mn.fromCartesian4(t[i],Lse));if(r===tn.OUTSIDE)return tn.OUTSIDE;r===tn.INTERSECTING&&(n=!0)}return n?tn.INTERSECTING:tn.INSIDE};ed.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===ed.MASK_OUTSIDE||t===ed.MASK_INSIDE)return t;let n=ed.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(mn.fromCartesian4(i[o],Lse));if(a===tn.OUTSIDE)return ed.MASK_OUTSIDE;a===tn.INTERSECTING&&(n|=s)}return n};ed.MASK_OUTSIDE=4294967295;ed.MASK_INSIDE=0;ed.MASK_INDETERMINATE=2147483647;var Os=ed;function Hm(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Os,this._orthographicMatrix=new N}function Ose(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=N.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(Hm.prototype,{projectionMatrix:{get:function(){return Ose(this),this._orthographicMatrix}}});var t2e=new d,n2e=new d,i2e=new d,xW=new d;Hm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,t2e);d.normalize(f,f);let h=n2e;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=i2e;d.multiplyByScalar(f,a,A),d.add(h,A,A);let g=i[0];return l(g)||(g=i[0]=new se),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,A),d.multiplyByScalar(f,s,A),d.add(h,A,A),g=i[1],l(g)||(g=i[1]=new se),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,xW),A),d.multiplyByScalar(n,r,A),d.add(h,A,A),g=i[2],l(g)||(g=i[2]=new se),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,A),d.multiplyByScalar(n,o,A),d.add(h,A,A),g=i[3],l(g)||(g=i[3]=new se),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,xW),A),g=i[4],l(g)||(g=i[4]=new se),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,A),d.add(e,A,A),g=i[5],l(g)||(g=i[5]=new se),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,xW),A),this._cullingVolume};Hm.prototype.getPixelDimensions=function(e,t,n,i,o){Ose(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};Hm.prototype.clone=function(e){return l(e)||(e=new Hm),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};Hm.prototype.equals=function(e){return l(e)&&e instanceof Hm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};Hm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof Hm&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var es=Hm;function nu(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new es,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}nu.packedLength=4;nu.pack=function(e,t,n){return n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};nu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new nu),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function N_(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(nu.prototype,{projectionMatrix:{get:function(){return N_(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return N_(this),this._offCenterFrustum}}});nu.prototype.computeCullingVolume=function(e,t,n){return N_(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};nu.prototype.getPixelDimensions=function(e,t,n,i,o){return N_(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};nu.prototype.clone=function(e){return l(e)||(e=new nu),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};nu.prototype.equals=function(e){return!l(e)||!(e instanceof nu)?!1:(N_(this),N_(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};nu.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof nu)?!1:(N_(this),N_(e),D.equalsEpsilon(this.width,e.width,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var An=nu;function Fse(e){e=e??V.EMPTY_OBJECT,this._metadata=e.metadata}Object.defineProperties(Fse.prototype,{metadata:{get:function(){return this._metadata}}});var vE=Fse;function L_(e,t,n){return t=t??0,n=n??e.byteLength-t,e=e.subarray(t,t+n),L_.decode(e)}L_.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};L_.decodeWithFromCharCode=function(e){let t="",n=o2e(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function QR(e,t,n){return t<=e&&e<=n}function o2e(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(QR(u,0,127)){s.push(u);continue}if(QR(u,194,223)){i=1,t=u&31;continue}if(QR(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(QR(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new ce("String decoding failed.")}if(!QR(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?L_.decode=L_.decodeWithTextDecoder:L_.decode=L_.decodeWithFromCharCode;var iu=L_;function r2e(e,t){return t=t??0,iu(e,t,Math.min(4,e.length))}var Ih=r2e;function td(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(td.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var kR=Uint32Array.BYTES_PER_ELEMENT;td.fromTileType=async function(e,t,n,i,o,r){o=o??0;let s=new Uint8Array(i),a=new DataView(i);o+=kR;let c=a.getUint32(o,!0);if(c!==1)throw new ce(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=kR,o+=kR;let u=a.getUint32(o,!0);o+=kR;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let _=Ih(s,o),y=a.getUint32(o+kR*2,!0),C=r[_],E=`${f}${m}`,I=n.getDerivedResource({queryParameters:{compositeIndex:E}});if(l(C))h[m]=Promise.resolve(C(e,t,I,i,o));else throw new ce(`Unknown tile content type, ${_}, inside Composite tile`);o+=y}let A=await Promise.all(h);return new td(e,t,n,A)};td.prototype.hasProperty=function(e,t){return!1};td.prototype.getFeature=function(e){};td.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};td.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};td.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};td.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};td.prototype.isDestroyed=function(){return!1};td.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var UR=td;function s2e(e,t,n){return JSON.parse(iu(e,t,n))}var dr=s2e;function Nc(e){this._id=Xn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,Yt.maximumTextureSize),r=Math.ceil(t/Yt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new U(o,r),i=new se(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(Nc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Nc.DEFAULT_COLOR_VALUE=G.WHITE;Nc.DEFAULT_SHOW_VALUE=!0;function Qse(e){let t=e._textureDimensions;return t.x*t.y*4}function kse(e){if(!l(e._batchValues)){let t=Qse(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Use(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}Nc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Use(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=kse(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};Nc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};Nc.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var a2e=new Array(4);Nc.prototype.setColor=function(e,t){if(G.equals(t,Nc.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(a2e),i=n[3],o=kse(this),r=e*4,s=Use(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};Nc.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};Nc.prototype.getColor=function(e,t){if(!l(this._batchValues))return G.clone(Nc.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return G.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};Nc.prototype.getPickColor=function(e){return this._pickIds[e]};function Gse(e,t,n){let i=e._textureDimensions;return new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:on.NEAREST})}function c2e(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=Qse(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=G.floatToByte(f.red),r[h+1]=G.floatToByte(f.green),r[h+2]=G.floatToByte(f.blue),r[h+3]=G.floatToByte(f.alpha)}e._pickTexture=Gse(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function l2e(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}Nc.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&c2e(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=Gse(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),l2e(this))};Nc.prototype.isDestroyed=function(){return!1};Nc.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Il=Nc;var u2e={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},f2e={SCALAR:void 0,VEC2:U,VEC3:d,VEC4:se,MAT2:Gi,MAT3:J,MAT4:N};function d2e(e){let t=e.componentType,n;typeof t=="string"?n=q.fromName(t):n=t;let i=u2e[e.type],o=f2e[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return q.createArrayBufferView(n,r,s,i*a)}}}var Wu=d2e;function Ep(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,h2e(this,e.extension,e.binaryBody)}Object.defineProperties(Ep.prototype,{byteLength:{get:function(){return this._byteLength}}});function h2e(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,A=0;l(c.byteOffset)&&(c.componentType=c.componentType??q.UNSIGNED_SHORT,c.type=zt.SCALAR,r=Wu(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),A+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=u.componentType??q.UNSIGNED_SHORT,u.type=zt.SCALAR,r=Wu(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),A+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];A+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=f.componentType??q.UNSIGNED_SHORT,f.type=zt.SCALAR,r=Wu(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),A+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let C=a[i].length,E=a[i].instances,I=m2e(C,E,n);A+=A2e(I),a[i].instances=Tt(I,E)}let _=new Array(m).fill(0),y=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],y[i]=_[o],++_[o];A+=y.byteLength,e._classes=a,e._classIds=c,e._classIndexes=y,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=A}function m2e(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=Wu(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function A2e(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var p2e=[],g2e=[],_2e=0;function y2e(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=p2e;c.length=Math.max(c.length,a);let u=++_2e,f=g2e;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let A=o[t],g=s[t];for(let m=0;m<A;++m){let _=r[g+m];_!==t&&f.push(_)}}}function C2e(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function GR(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return y2e(e,t,n)}else return n(e,t);return C2e(e,t,n)}Ep.prototype.hasProperty=function(e,t){let n=GR(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};Ep.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};Ep.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,GR(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};Ep.prototype.getProperty=function(e,t){return GR(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?E2e(a,s):ze(a[s],!0)})};function E2e(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}Ep.prototype.setProperty=function(e,t,n){let i=GR(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?I2e(u,c,n):u[c]=ze(n,!0),!0});return l(i)};function I2e(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}Ep.prototype.isClass=function(e,t){let n=GR(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};Ep.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var PE=Ep;var x2e={HIGHLIGHT:0,REPLACE:1,MIX:2},ou=Object.freeze(x2e);function b2e(e,t){if(!l(t))return;let n=t.length;if(n===0)return;let i=e.length;e.length+=n;for(let o=0;o<n;o++)e[i+o]=t[o]}var si=b2e;var bW=Il.DEFAULT_COLOR_VALUE,TW=Il.DEFAULT_SHOW_VALUE;function No(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=r??{};let s=T2e(n);this._properties=s,this._batchTableHierarchy=S2e(this,n,i);let a=Vse(t,s,i);this._binaryPropertiesByteLength=w2e(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Il({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}No._deprecationWarning=Tr;Object.defineProperties(No.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function T2e(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=ze(e[n],!0));return t}function S2e(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(No._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new PE({extension:i,binaryBody:n})}function Vse(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=Wu(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function w2e(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}No.getBinaryProperties=function(e,t,n){return Vse(e,t,n)};No.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};No.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};No.prototype.getShow=function(e){return this._batchTexture.getShow(e)};No.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};No.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};No.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};No.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var B2e=new G;No.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(bW),this.setAllShow(TW);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?e.color.evaluateColor(o,B2e)??bW:bW,s=l(e.show)?e.show.evaluate(o)??TW:TW;this.setColor(i,r),this.setShow(i,s)}};function D2e(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function v2e(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}No.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};No.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};No.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};No.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};No.prototype.hasPropertyBySemantic=function(){return!1};No.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);if(si(t,n),l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getPropertyIds(e,n);si(t,i)}return t};No.prototype.getPropertyBySemantic=function(e,t){};No.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return D2e(i,e)}let n=this._properties[t];if(l(n))return ze(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};No.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){v2e(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=ze(n,!0)};function P2e(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + return vec2(centerX + (batchId * stepX), 0.5); +} +`:`uniform vec4 tile_textureStep; +uniform vec2 tile_textureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + float stepY = tile_textureStep.z; + float centerY = tile_textureStep.w; + float xId = mod(batchId, tile_textureDimensions.x); + float yId = floor(batchId / tile_textureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}No.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Hse(o,n,!1),s;return Yt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${P2e(i)}${s}`}};function zse(e,t){return e=He.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function R2e(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Hse(e,t,n){if(!l(t))return zse(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return zse(e,n);let r=o[0],s=o[2];e=He.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} +vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse) +{ + vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend); + vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse; + return vec4(diffuse.rgb, sourceDiffuse.a); +} +`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f}; + tile_diffuse = tile_diffuse_final(source, tile_featureColor); + tile_main(); +`}else s==="sampler2D"&&(e=R2e(e,t),u=` tile_diffuse = tile_featureColor; + tile_main(); +`);return e=`uniform float tile_colorBlend; +vec4 tile_diffuse = vec4(1.0); +${a}${r} +${e} +void tile_color(vec4 tile_featureColor) +{ +${u}`,n&&(e+=c),e+=`} +`,e}No.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Hse(i,t,!0),Yt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function M2e(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===ou.HIGHLIGHT)return 0;if(n===ou.REPLACE)return 1;if(n===ou.MIX)return D.clamp(i,D.EPSILON4,1)}No.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return Tt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return M2e(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};No.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var O_={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};No.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=N2e(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===Be.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=L2e(f),f.dirty=!1);let A=h.originalCommand;c!==O_.ALL_OPAQUE&&f.pass!==Be.TRANSLUCENT&&(l(h.translucent)||(h.translucent=O2e(A))),c!==O_.ALL_TRANSLUCENT&&f.pass!==Be.TRANSLUCENT&&(l(h.opaque)||(h.opaque=F2e(A)),a&&(r||(l(h.zback)||(h.zback=k2e(e.context,A)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==G2e(h.stencil))&&(f.renderState.depthMask?h.stencil=U2e(A,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==Be.TRANSLUCENT?(c===O_.ALL_OPAQUE&&(n[u]=g),c===O_.ALL_TRANSLUCENT&&(n[u]=m),c===O_.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=A}};function N2e(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?O_.ALL_OPAQUE:t===e.featuresLength?O_.ALL_TRANSLUCENT:O_.OPAQUE_AND_TRANSLUCENT}function L2e(e){let t=nt.shallowClone(e),n=t.pass===Be.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function O2e(e){let t=nt.shallowClone(e);return t.pass=Be.TRANSLUCENT,t.renderState=z2e(e.renderState),t}function F2e(e){let t=nt.shallowClone(e);return t.renderState=V2e(e.renderState),t}function Q2e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function k2e(e,t){let n=nt.shallowClone(t),i=ze(n.renderState,!0);i.cull.enabled=!0,i.cull.face=Mi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK,n.renderState=Ue.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=ze(t.uniformMap);let o=new U(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=Q2e(e,t.shaderProgram),n}function U2e(e,t){let n=nt.shallowClone(e),i=ze(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Kt.SKIP_LOD_MASK,i.stencilTest.reference=Kt.CESIUM_3D_TILE_MASK|t<<Kt.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=_t.REPLACE,i.stencilTest.backFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=_t.REPLACE,i.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,n.renderState=Ue.fromCache(i),n}function G2e(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function z2e(e){let t=ze(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=pn.ALPHA_BLEND,t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}function V2e(e){let t=ze(e,!0);return t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}No.prototype.update=function(e,t){this._batchTexture.update(e,t)};No.prototype.isDestroyed=function(){return!1};No.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var Ip=No;function H2e(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var Wm=H2e;var Ab=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;function nd(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(nd.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});nd.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};nd.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};nd.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};nd.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};nd.prototype.getPropertyInherited=function(e){return nd.getPropertyInherited(this._content,this._batchId,e)};nd.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};nd.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};nd.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};nd.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var ha=nd;var SW=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},wW=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},ru=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=` +`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},W2e=new SW;Object.assign(ru,{hooks:W2e,plugins:new wW(ru),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});ru.max_unop_len=ru.getMaxKeyLen(ru.unary_ops);ru.max_binop_len=ru.getMaxKeyLen(ru.binary_ops);var F_=e=>new ru(e).parse(),j2e=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(ru).filter(e=>!j2e.includes(e)&&F_[e]===void 0).forEach(e=>{F_[e]=ru[e]});F_.Jsep=ru;var Y2e="ConditionalExpression",q2e={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:Y2e,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};F_.plugins.register(q2e);var K2e={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},It=Object.freeze(K2e);function xh(e,t){this._expression=e,e=cQe(e,t),e=uQe(lQe(e)),F_.addBinaryOp("=~",0),F_.addBinaryOp("!~",0);let n;try{n=F_(e)}catch(i){throw new ce(i)}this._runtimeAst=Oi(this,n)}Object.defineProperties(xh.prototype,{expression:{get:function(){return this._expression}}});var Gn={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new U],cartesian3Array:[new d],cartesian4Array:[new se],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new U),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new se),this.cartesian4Array[this.cartesian4Index++]}};xh.prototype.evaluate=function(e,t){Gn.reset();let n=this._runtimeAst.evaluate(e);return t instanceof G&&n instanceof se?G.fromCartesian4(n,t):n instanceof U||n instanceof d||n instanceof se?n.clone(t):n};xh.prototype.evaluateColor=function(e,t){Gn.reset();let n=this._runtimeAst.evaluate(e);return G.fromCartesian4(n,t)};xh.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};xh.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};xh.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var X2e=["!","-","+"],Wse=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],zR=/\${(.*?)}/g,J2e=/\\/g,Z2e="@#%",$2e=/@#%/g,cz=new G,lz={abs:ma(Math.abs),sqrt:ma(Math.sqrt),cos:ma(Math.cos),sin:ma(Math.sin),tan:ma(Math.tan),acos:ma(Math.acos),asin:ma(Math.asin),atan:ma(Math.atan),radians:ma(D.toRadians),degrees:ma(D.toDegrees),sign:ma(D.sign),floor:ma(Math.floor),ceil:ma(Math.ceil),round:ma(Math.round),exp:ma(Math.exp),exp2:ma(tQe),log:ma(Math.log),log2:ma(nQe),fract:ma(eQe),length:iQe,normalize:oQe},uz={atan2:sz(Math.atan2,!1),pow:sz(Math.pow,!1),min:sz(Math.min,!0),max:sz(Math.max,!0),distance:rQe,dot:sQe,cross:aQe},vW={clamp:jse(D.clamp,!0),mix:jse(D.lerp,!0)};function eQe(e){return e-Math.floor(e)}function tQe(e){return Math.pow(2,e)}function nQe(e){return D.log2(e)}function ma(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof U)return U.fromElements(e(n.x),e(n.y),Gn.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),Gn.getCartesian3());if(n instanceof se)return se.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Gn.getCartesian4());throw new ce(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function sz(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof U)return U.fromElements(e(i.x,o),e(i.y,o),Gn.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Gn.getCartesian3());if(i instanceof se)return se.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Gn.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x),e(i.y,o.y),Gn.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Gn.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Gn.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function jse(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Gn.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Gn.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Gn.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof U&&o instanceof U&&r instanceof U)return U.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Gn.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Gn.getCartesian3());if(i instanceof se&&o instanceof se&&r instanceof se)return se.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Gn.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function iQe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof U)return U.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof se)return se.magnitude(t);throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function oQe(e,t){if(typeof t=="number")return 1;if(t instanceof U)return U.normalize(t,Gn.getCartesian2());if(t instanceof d)return d.normalize(t,Gn.getCartesian3());if(t instanceof se)return se.normalize(t,Gn.getCartesian4());throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function rQe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof U&&n instanceof U)return U.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof se&&n instanceof se)return se.distance(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function sQe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof U&&n instanceof U)return U.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof se&&n instanceof se)return se.dot(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function aQe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,Gn.getCartesian3());throw new ce(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Dt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,CQe(this)}function cQe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function lQe(e){return e.replace(J2e,Z2e)}function DW(e){return e.replace($2e,"\\")}function uQe(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new ce("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function fQe(e){let t=typeof e.value;if(e.value===null)return new Dt(It.LITERAL_NULL,null);if(t==="boolean")return new Dt(It.LITERAL_BOOLEAN,e.value);if(t==="number")return new Dt(It.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Dt(It.VARIABLE_IN_STRING,e.value):new Dt(It.LITERAL_STRING,DW(e.value))}function dQe(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new ce(`${o} is not a function.`);return i===0?o==="test"?new Dt(It.LITERAL_BOOLEAN,!1):new Dt(It.LITERAL_NULL,null):(s=Oi(e,c),a=Oi(e,n[0]),new Dt(It.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Oi(e,c),new Dt(It.FUNCTION_CALL,o,r);throw new ce(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Dt(It.LITERAL_COLOR,o);if(r=Oi(e,n[0]),l(n[1])){let c=Oi(e,n[1]);return new Dt(It.LITERAL_COLOR,o,[r,c])}return new Dt(It.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new ce(`${o} requires three arguments.`);return r=[Oi(e,n[0]),Oi(e,n[1]),Oi(e,n[2])],new Dt(It.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new ce(`${o} requires four arguments.`);return r=[Oi(e,n[0]),Oi(e,n[1]),Oi(e,n[2]),Oi(e,n[3])],new Dt(It.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Oi(e,n[c]);return new Dt(It.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Dt(It.LITERAL_BOOLEAN,!0):new Dt(It.LITERAL_BOOLEAN,!1):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new ce(`${o} requires exactly one argument.`);return r=Oi(e,n[0]),new Dt(It.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new ce(`${o} does not take any argument.`);return new Dt(It.UNARY,o)}else if(l(lz[o])){if(i!==1)throw new ce(`${o} requires exactly one argument.`);return r=Oi(e,n[0]),new Dt(It.UNARY,o,r)}else if(l(uz[o])){if(i!==2)throw new ce(`${o} requires exactly two arguments.`);return s=Oi(e,n[0]),a=Oi(e,n[1]),new Dt(It.BINARY,o,s,a)}else if(l(vW[o])){if(i!==3)throw new ce(`${o} requires exactly three arguments.`);s=Oi(e,n[0]),a=Oi(e,n[1]);let c=Oi(e,n[2]);return new Dt(It.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Dt(It.LITERAL_BOOLEAN,!1):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="Number")return i===0?new Dt(It.LITERAL_NUMBER,0):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="String")return i===0?new Dt(It.LITERAL_STRING,""):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="regExp")return hQe(e,t)}}throw new ce(`Unexpected function call "${o}".`)}function hQe(e,t){let n=t.arguments;if(n.length===0)return new Dt(It.LITERAL_REGEX,new RegExp);let i=Oi(e,n[0]),o;if(n.length>1){let r=Oi(e,n[1]);if(BW(i)&&BW(r)){try{o=new RegExp(DW(String(i._value)),r._value)}catch(s){throw new ce(s)}return new Dt(It.LITERAL_REGEX,o)}return new Dt(It.REGEX,i,r)}if(BW(i)){try{o=new RegExp(DW(String(i._value)))}catch(r){throw new ce(r)}return new Dt(It.LITERAL_REGEX,o)}return new Dt(It.REGEX,i)}function mQe(e){if(_Qe(e.name)){let t=yQe(e.name);return t.substr(0,8)==="tiles3d_"?new Dt(It.BUILTIN_VARIABLE,t):new Dt(It.VARIABLE,t)}else{if(e.name==="NaN")return new Dt(It.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Dt(It.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Dt(It.LITERAL_UNDEFINED,void 0)}throw new ce(`${e.name} is not defined.`)}function AQe(e){let t=e.property.name;if(t==="PI")return new Dt(It.LITERAL_NUMBER,Math.PI);if(t==="E")return new Dt(It.LITERAL_NUMBER,Math.E)}function pQe(e){if(e.property.name==="POSITIVE_INFINITY")return new Dt(It.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function gQe(e,t){if(t.object.name==="Math")return AQe(t);if(t.object.name==="Number")return pQe(t);let n,i=Oi(e,t.object);return t.computed?(n=Oi(e,t.property),new Dt(It.MEMBER,"brackets",i,n)):(n=new Dt(It.LITERAL_STRING,t.property.name),new Dt(It.MEMBER,"dot",i,n))}function BW(e){return e._type>=It.LITERAL_NULL}function _Qe(e){return e.substr(0,4)==="czm_"}function yQe(e){return e.substr(4)}function Oi(e,t){let n,i,o,r;if(t.type==="Literal")n=fQe(t);else if(t.type==="CallExpression")n=dQe(e,t);else if(t.type==="Identifier")n=mQe(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Oi(e,t.argument);if(X2e.indexOf(i)>-1)n=new Dt(It.UNARY,i,s);else throw new ce(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Oi(e,t.left),r=Oi(e,t.right),Wse.indexOf(i)>-1)n=new Dt(It.BINARY,i,o,r);else throw new ce(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Oi(e,t.left),r=Oi(e,t.right),Wse.indexOf(i)>-1&&(n=new Dt(It.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Oi(e,t.test);o=Oi(e,t.consequent),r=Oi(e,t.alternate),n=new Dt(It.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=gQe(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Oi(e,t.elements[a]);n=new Dt(It.ARRAY,s)}else throw t.type==="Compound"?new ce("Provide exactly one expression."):new ce("Cannot parse expression.");return n}function CQe(e){e._type===It.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===It.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===It.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(lz[e._value])&&(e.evaluate=IQe(e._value)):e._type===It.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(uz[e._value])&&(e.evaluate=xQe(e._value)):e._type===It.TERNARY?e.evaluate=bQe(e._value):e._type===It.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===It.ARRAY?e.evaluate=e._evaluateArray:e._type===It.VARIABLE?e.evaluate=e._evaluateVariable:e._type===It.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===It.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===It.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===It.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===It.REGEX?e.evaluate=e._evaluateRegExp:e._type===It.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=EQe):e.evaluate=e._evaluateLiteral}function EQe(e){return l(e)?e.content.tileset.timeSinceLoad:0}function IQe(e){let t=lz[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function xQe(e){let t=uz[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function bQe(e){let t=vW[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function fz(e,t){if(l(e))return e.getPropertyInherited(t)}Dt.prototype._evaluateLiteral=function(){return this._value};Dt.prototype._evaluateLiteralColor=function(e){let t=cz,n=this._left;if(this._value==="color")l(n)?n.length>1?(G.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):G.fromCssColorString(n[0].evaluate(e),t):G.fromBytes(255,255,255,255,t);else if(this._value==="rgb")G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return se.fromColor(t,Gn.getCartesian4())};Dt.prototype._evaluateLiteralVector=function(e){let t=Gn.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof U)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof se)t.push(c.x,c.y,c.z,c.w);else throw new ce(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new ce(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new ce(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new ce(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return U.fromArray(t,0,Gn.getCartesian2());if(n==="vec3")return d.fromArray(t,0,Gn.getCartesian3());if(n==="vec4")return se.fromArray(t,0,Gn.getCartesian4())};Dt.prototype._evaluateLiteralString=function(){return this._value};Dt.prototype._evaluateVariableString=function(e){let t=this._value,n=zR.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=fz(e,o);l(r)||(r=""),t=t.replace(i,r),zR.lastIndex+=r.length-i.length,n=zR.exec(t)}return t};Dt.prototype._evaluateVariable=function(e){return fz(e,this._value)};function RE(e){return e._value==="feature"}Dt.prototype._evaluateMemberDot=function(e){if(RE(this._left))return fz(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof se){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Dt.prototype._evaluateMemberBrackets=function(e){if(RE(this._left))return fz(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof se){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Dt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Dt.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Dt.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof U)return U.negate(t,Gn.getCartesian2());if(t instanceof d)return d.negate(t,Gn.getCartesian3());if(t instanceof se)return se.negate(t,Gn.getCartesian4());if(typeof t=="number")return-t;throw new ce(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Dt.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof U||t instanceof d||t instanceof se||typeof t=="number"))throw new ce(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Dt.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Dt.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Dt.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Dt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Dt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Dt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Dt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.add(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.add(t,n,Gn.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new ce(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.subtract(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.subtract(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new ce(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.multiplyComponents(t,n,Gn.getCartesian2());if(n instanceof U&&typeof t=="number")return U.multiplyByScalar(n,t,Gn.getCartesian2());if(t instanceof U&&typeof n=="number")return U.multiplyByScalar(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,Gn.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,Gn.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.multiplyComponents(t,n,Gn.getCartesian4());if(n instanceof se&&typeof t=="number")return se.multiplyByScalar(n,t,Gn.getCartesian4());if(t instanceof se&&typeof n=="number")return se.multiplyByScalar(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new ce(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.divideComponents(t,n,Gn.getCartesian2());if(t instanceof U&&typeof n=="number")return U.divideByScalar(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,Gn.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.divideComponents(t,n,Gn.getCartesian4());if(t instanceof se&&typeof n=="number")return se.divideByScalar(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new ce(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.fromElements(t.x%n.x,t.y%n.y,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new ce(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?t.equals(n):t===n};Dt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?!t.equals(n):t!==n};Dt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new ce(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Dt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Dt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Dt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Dt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Dt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Dt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Dt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Dt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Dt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new ce(o)}return i};Dt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Dt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new ce(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new ce(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Dt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof U||t instanceof d||t instanceof se)return String(t);throw new ce(`Unexpected function call "${this._value}".`)};function Yse(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==It.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return G.fromHsl(i,o,r,s,cz)}function qse(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==It.LITERAL_NUMBER)return;let i=cz;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function Q_(e){return e%1===0?e.toFixed(1):e.toString()}function TQe(e){let t=Q_(e.red),n=Q_(e.green),i=Q_(e.blue);return`vec3(${t}, ${n}, ${i})`}function az(e){let t=Q_(e.red),n=Q_(e.green),i=Q_(e.blue),o=Q_(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Kse(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function Xse(e,t){return l(t[e])?t[e]:xh.NULL_SENTINEL}xh.NULL_SENTINEL="czm_infinity";Dt.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Kse(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Kse(this._value,e,t,this));let u,f,h;switch(a){case It.VARIABLE:return RE(this)?void 0:Xse(c,e);case It.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(lz[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new ce(`Error generating style shader: "${c}" is not supported.`);return c+o;case It.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(uz[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case It.TERNARY:if(l(vW[c]))return`${c}(${o}, ${r}, ${s})`;break;case It.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case It.MEMBER:return RE(this._left)?Xse(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case It.FUNCTION_CALL:throw new ce(`Error generating style shader: "${c}" is not supported.`);case It.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new ce("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case It.REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.VARIABLE_IN_STRING:throw new ce("Error generating style shader: Converting a variable to a string is not supported.");case It.LITERAL_NULL:return xh.NULL_SENTINEL;case It.LITERAL_BOOLEAN:return c?"true":"false";case It.LITERAL_NUMBER:return Q_(c);case It.LITERAL_STRING:if(l(n)&&n._type===It.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||RE(n._left)))return c;if(i=G.fromCssColorString(c,cz),l(i))return TQe(i);throw new ce("Error generating style shader: String literals are not supported.");case It.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let A=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${A}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=qse(this),l(i)?az(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=qse(this),l(i)?az(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Yse(this),l(i)?az(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Yse(this),l(i)?(i.alpha!==1&&(t.translucent=!0),az(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case It.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let A=0;A<f;++A)h+=o[A],A<f-1&&(h+=", ");return h+=")",h;case It.LITERAL_REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.LITERAL_UNDEFINED:return xh.NULL_SENTINEL;case It.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Dt.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case It.VARIABLE:RE(this)||e.push(s);break;case It.VARIABLE_IN_STRING:for(a=zR.exec(s);a!==null;)e.push(a[1]),a=zR.exec(s);break;case It.LITERAL_STRING:l(t)&&t._type===It.MEMBER&&RE(t._left)&&e.push(s);break}};var id=xh;function xp(e){e=e??V.EMPTY_OBJECT,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=e.center??d.ZERO,this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=e.classificationType??Jn.BOTH,this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(xp.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var SQe={position:0,a_batchId:1};function wQe(e,t){if(l(e._va))return;let n=Ct.createVertexBuffer({context:t,typedArray:e._positions,usage:Qe.STATIC_DRAW}),i=Ct.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:Qe.STATIC_DRAW}),o=Ct.createIndexBuffer({context:t,typedArray:e._indices,usage:Qe.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:q.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:q.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new li({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new li({context:t,attributes:r,indexBuffer:Ct.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:Qe.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function BQe(e,t){if(l(e._sp))return;let n=e._batchTable,i=e._attributeLocations??SQe,o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=He.replaceMain(s,"czm_non_pick_main"),s=`${s}void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`,e._spPick=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(Ab),c=n.getFragmentShaderCallback(!1,void 0,!0)(B_);o=n.getPickId();let u=new He({sources:[a]}),f=new He({defines:["VECTOR_TILE"],sources:[c]});e._sp=an.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new He({sources:[Ab]}),f=new He({defines:["VECTOR_TILE"],sources:[B_]}),e._spStencil=an.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=He.replaceMain(c,"czm_non_pick_main"),c=`${c} +void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`;let h=new He({sources:[a]}),A=new He({defines:["VECTOR_TILE"],sources:[c]});e._spPick=an.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:i})}function Jse(e){let t=e?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:t,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}var DQe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},vQe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function PQe(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ue.fromCache(Jse(!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(Jse(!0)),e._rsColorPass=Ue.fromCache(DQe),e._rsPickPass=Ue.fromCache(vQe))}var ME=new N,Zse=new d;function RQe(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return N.clone(i,ME),N.multiplyByPoint(ME,e._center,Zse),N.setTranslation(ME,Zse,ME),N.multiply(o,ME,ME),ME},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function PW(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h],m=new e.constructor(e.buffer,a*A,g);t.set(m,n),i[h]=n,n+=g}return n}function MQe(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=PW(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(G.equals(f.color,a.color))u=PW(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=PW(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function RW(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h];t.copyFromBuffer(e,A*a,n*a,g*a),i[h]=n,n+=g}return n}function NQe(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=RW(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(G.equals(h.color,r.color))u=RW(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let A=u;u=RW(a,c,u,n,i,h.batchIds,o),h.offset=A,h.count=u-A,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function LQe(e,t){return t.color.toRgba()-e.color.toRgba()}function OQe(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(LQe),t.webgl2?NQe(e,n):MQe(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function FQe(e,t){let n=OQe(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=e._modelMatrix??N.IDENTITY,f=e._uniformMap,h=e._boundingVolume;for(let A=0;A<r;++A){let g=o[A].offset,m=o[A].count,_=i[A*2];l(_)||(_=i[A*2]=new nt({owner:e})),_.vertexArray=a,_.modelMatrix=u,_.offset=g,_.count=m,_.renderState=e._rsStencilDepthPass,_.shaderProgram=c,_.uniformMap=f,_.boundingVolume=h,_.cull=!1,_.pass=Be.TERRAIN_CLASSIFICATION;let y=nt.shallowClone(_,_.derivedCommands.tileset);y.renderState=e._rsStencilDepthPass3DTiles,y.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,_.derivedCommands.tileset=y;let C=i[A*2+1];l(C)||(C=i[A*2+1]=new nt({owner:e})),C.vertexArray=a,C.modelMatrix=u,C.offset=g,C.count=m,C.renderState=e._rsColorPass,C.shaderProgram=c,C.uniformMap=f,C.boundingVolume=h,C.cull=!1,C.pass=Be.TERRAIN_CLASSIFICATION;let E=nt.shallowClone(C,C.derivedCommands.tileset);E.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,C.derivedCommands.tileset=E}e._commandsDirty=!0}function QQe(e,t){if(e.classificationType===Jn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=nt.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function kQe(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=e._modelMatrix??N.IDENTITY,a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,A=n[c*2];l(A)||(A=n[c*2]=new nt({owner:e,pickOnly:!0})),A.vertexArray=i,A.modelMatrix=s,A.offset=u,A.count=f,A.renderState=e._rsStencilDepthPass,A.shaderProgram=o,A.uniformMap=a,A.boundingVolume=h,A.pass=Be.TERRAIN_CLASSIFICATION;let g=nt.shallowClone(A,A.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,A.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new nt({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=Be.TERRAIN_CLASSIFICATION;let _=nt.shallowClone(m,m.derivedCommands.tileset);_.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=_}e._pickCommandsDirty=!1}xp.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};xp.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function UQe(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=G.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=G.clone(G.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var GQe=new G,zQe=G.WHITE,VQe=!0,HQe=/\$/;xp.prototype.applyStyle=function(e,t){if(!l(e)){UQe(this,t);return}let n=e.color,i=n instanceof id&&!HQe.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,GQe):zQe,c.show=l(e.show)?e.show.evaluate(c):VQe}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=G.clone(G.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};xp.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let _=c[f].offset,y=c[f].count;if(s>=_&&s<_+y)break}c.push(new Wm({color:G.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],A=[],g=c[f].batchIds,m=g.length;for(let _=0;_<m;++_){let y=g[_];if(y===e)continue;let C=n[y];o[C]<s?h.push(y):A.push(y)}A.length!==0&&c.push(new Wm({color:G.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:A})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function $se(e,t,n,i){let o=e.classificationType,r=o!==Jn.CESIUM_3D_TILE,s=o!==Jn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=Be.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function WQe(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=Be.OPAQUE,n.push(r)}}function jQe(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ue.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Me.LINES):(n=e._rsColorPass,i=Me.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}xp.prototype.update=function(e){let t=e.context;wQe(this,t),BQe(this,t),PQe(this),RQe(this,t);let n=e.passes;n.render&&(FQe(this,t),QQe(this,e),jQe(this),this._debugWireframe?WQe(e,this._commands):$se(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(kQe(this),$se(this,e,this._pickCommands))};xp.prototype.isDestroyed=function(){return!1};xp.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var NE=xp;function ju(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(ju.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});ju.packedBoxLength=N.packedLength+d.packedLength;ju.packedCylinderLength=N.packedLength+2;ju.packedEllipsoidLength=N.packedLength+d.packedLength;ju.packedSphereLength=d.packedLength+1;function YQe(e){let t=new Float64Array(N.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,N.pack(e._modelMatrix,t,n),t}function qQe(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=le.unpack(t,n),n+=le.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=G.unpack(t,n);n+=G.packedLength;let f=t[n++],h=t[n++],A=t[n++],g=new Array(A);for(let m=0;m<A;++m)g[m]=t[n++];a[c]=new Wm({color:u,offset:f,count:h,batchIds:g})}return i}var KQe=new di("createVectorTileGeometries",5),XQe=new G;function JQe(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let _=e._batchTable;for(let y=0;y<m;++y){let C=_.getColor(y,XQe);u[y]=C.toRgba()}f=e._packedBuffer=YQe(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let A={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=KQe.scheduleTask(A,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let _=new Float64Array(m.packedBuffer);qQe(e,_)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),ZQe(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function ZQe(e){l(e._primitive)||(e._primitive=new NE({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}ju.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};ju.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};ju.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};ju.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};ju.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=JQe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};ju.prototype.isDestroyed=function(){return!1};ju.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var bp=ju;function jm(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,tke(this,i,o)}Object.defineProperties(jm.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function $Qe(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function eke(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,u=e.ELLIPSOIDS_LENGTH??0,f=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),A=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&A)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var LE=Uint32Array.BYTES_PER_ELEMENT;function tke(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=LE;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=LE;let s=o.getUint32(n,!0);if(n+=LE,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=LE,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=LE;let u=o.getUint32(n,!0);n+=LE;let f=o.getUint32(n,!0);n+=LE;let h=dr(i,n,a);n+=a;let A=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=dr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let _=h.BOXES_LENGTH??0,y=h.CYLINDERS_LENGTH??0,C=h.ELLIPSOIDS_LENGTH??0,E=h.SPHERES_LENGTH??0,I=_+y+C+E,b=new Ip(e,I,g,m,$Qe(e));if(e._batchTable=b,I===0)return;let S=e.tile.computedTransform,B;l(h.RTC_CENTER)&&(B=d.unpack(h.RTC_CENTER),N.multiplyByPoint(S,B,B));let v=eke(h,A);if(_>0||y>0||C>0||E>0){let P,M,L,p;if(_>0){let x=A.byteOffset+h.BOXES.byteOffset;P=new Float32Array(A.buffer,x,bp.packedBoxLength*_)}if(y>0){let x=A.byteOffset+h.CYLINDERS.byteOffset;M=new Float32Array(A.buffer,x,bp.packedCylinderLength*y)}if(C>0){let x=A.byteOffset+h.ELLIPSOIDS.byteOffset;L=new Float32Array(A.buffer,x,bp.packedEllipsoidLength*C)}if(E>0){let x=A.byteOffset+h.SPHERES.byteOffset;p=new Float32Array(A.buffer,x,bp.packedSphereLength*E)}return e._geometries=new bp({boxes:P,boxBatchIds:v.boxes,cylinders:M,cylinderBatchIds:v.cylinders,ellipsoids:L,ellipsoidBatchIds:v.ellipsoids,spheres:p,sphereBatchIds:v.spheres,center:B,modelMatrix:S,batchTable:b,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function eae(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}jm.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};jm.prototype.getFeature=function(e){return eae(this),this._features[e]};jm.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};jm.prototype.applyStyle=function(e){eae(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};jm.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};jm.prototype.pick=function(e,t,n){};jm.prototype.isDestroyed=function(){return!1};jm.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var VR=jm;var MW={};MW.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),tae(i,o,r,s);return c};MW.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),tae(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function tae(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var pb=MW;var OE=30,nke=1<<OE,ike=1<<OE+1>>>0,NW=2*OE+1,k_=4,oae=[],rae=[],oke=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],U_=1,gb=2,dz=[U_,0,0,U_|gb];function Es(e){if(!Wt.supportsBigInt())throw new ce("S2 required BigInt support");this._cellId=e,this._level=Es.getLevel(e)}Es.fromToken=function(e){return new Es(Es.getIdFromToken(e))};Es.isValidId=function(e){return!(e<=0||e>>BigInt(NW)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};Es.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?Es.isValidId(Es.getIdFromToken(e)):!1};Es.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};Es.getTokenFromId=function(e){let t=Math.floor(mke(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};Es.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return OE-(t>>1)};Es.prototype.getChild=function(e){let t=cae(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new Es(n)};Es.prototype.getParent=function(){let e=cae(this._cellId)<<BigInt(2);return new Es(this._cellId&~e+BigInt(1)|e)};Es.prototype.getParentAtLevel=function(e){let t=dke(e);return new Es(this._cellId&-t|t)};Es.prototype.getCenter=function(e){e=e??te.WGS84;let t=rke(this._cellId,this._level);t=d.normalize(t,t);let n=new Ae.fromCartesian(t,te.UNIT_SPHERE);return Ae.toCartesian(n,e,new d)};Es.prototype.getVertex=function(e,t){t=t??te.WGS84;let n=ske(this._cellId,this._level,e);n=d.normalize(n,n);let i=new Ae.fromCartesian(n,te.UNIT_SPHERE);return Ae.toCartesian(i,t,new d)};Es.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(NW-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new Es(a)};function rke(e,t){let n=ake(e,t);return cke(n[0],n[1],n[2])}function ske(e,t,n){let i=sae(e,t),o=lke([i[1],i[2]],t),r=n>>1&1;return aae(i[0],o[0][r^n&1],o[1][r])}function ake(e,t){let n=sae(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function sae(e){oae.length===0&&fke();let t=Number(e>>BigInt(NW)),n=t&U_,i=(1<<k_)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?OE-7*k_:k_))-1;n+=Number(e>>BigInt(s*2*k_+1)&BigInt(c))<<2,n=rae[n];let u=s*k_;o+=n>>k_+2<<u,r+=(n>>2&i)<<u,n&=U_|gb}return[t,o,r]}function cke(e,t,n){let i=nae(t),o=nae(n),r=hz(i),s=hz(o);return aae(e,r,s)}function aae(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function hz(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function nae(e){return 1/ike*e}function lke(e,t){let n=[[],[]],i=uke(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=hz(iae(r)),n[o][1]=hz(iae(s))}return n}function uke(e){return 1<<OE-e>>>0}function iae(e){return 1/nke*e}function G_(e,t,n,i,o,r){if(e===k_){let s=(t<<k_)+n;oae[(s<<2)+i]=(o<<2)+r,rae[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=oke[r];G_(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^dz[0]),G_(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^dz[1]),G_(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^dz[2]),G_(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^dz[3])}}function fke(){G_(0,0,0,0,0,0),G_(0,0,0,U_,0,U_),G_(0,0,0,gb,0,gb),G_(0,0,0,U_|gb,0,U_|gb)}function cae(e){return e&~e+BigInt(1)}function dke(e){return BigInt(1)<<BigInt(2*(OE-e))}var hke=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function mke(e){return hke[(-e&e)%BigInt(67)]}var Tp=Es;function Ake(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var Ei=Ake;function LW(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new ce(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=e.computeAvailableCountEnabled??!1;!l(n)&&s&&(n=pke(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function pke(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(LW.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});LW.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var _b=LW;function Sp(e){e=e??V.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(Sp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Sp.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};Sp.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};Sp.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};Sp.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};Sp.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};Sp.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};Sp.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var yb=Sp;var mz={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};mz.getBranchingFactor=function(e){switch(e){case mz.OCTREE:return 8;case mz.QUADTREE:return 4}};var Is=Object.freeze(mz);function Ua(){}Object.defineProperties(Ua.prototype,{class:{get:function(){me.throwInstantiationError()}}});Ua.prototype.hasProperty=function(e){me.throwInstantiationError()};Ua.prototype.hasPropertyBySemantic=function(e){me.throwInstantiationError()};Ua.prototype.getPropertyIds=function(e){me.throwInstantiationError()};Ua.prototype.getProperty=function(e){me.throwInstantiationError()};Ua.prototype.setProperty=function(e,t){me.throwInstantiationError()};Ua.prototype.getPropertyBySemantic=function(e){me.throwInstantiationError()};Ua.prototype.setPropertyBySemantic=function(e,t){me.throwInstantiationError()};Ua.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};Ua.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};Ua.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};Ua.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ze(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};Ua.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};Ua.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return Ua.getProperty(o.id,t,n)};Ua.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?Ua.setProperty(r.id,t,n,i):!1};var Yn=Ua;function wp(e){e=e??V.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(wp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});wp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};wp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};wp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};wp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};wp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};wp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};wp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var HR=wp;var Vt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Vt.getMinimum=function(e){switch(e){case Vt.INT8:return-128;case Vt.UINT8:return 0;case Vt.INT16:return-32768;case Vt.UINT16:return 0;case Vt.INT32:return-2147483648;case Vt.UINT32:return 0;case Vt.INT64:return Wt.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Vt.UINT64:return Wt.supportsBigInt()?BigInt(0):0;case Vt.FLOAT32:return-34028234663852886e22;case Vt.FLOAT64:return-Number.MAX_VALUE}};Vt.getMaximum=function(e){switch(e){case Vt.INT8:return 127;case Vt.UINT8:return 255;case Vt.INT16:return 32767;case Vt.UINT16:return 65535;case Vt.INT32:return 2147483647;case Vt.UINT32:return 4294967295;case Vt.INT64:return Wt.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Vt.UINT64:return Wt.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Vt.FLOAT32:return 34028234663852886e22;case Vt.FLOAT64:return Number.MAX_VALUE}};Vt.isIntegerType=function(e){switch(e){case Vt.INT8:case Vt.UINT8:case Vt.INT16:case Vt.UINT16:case Vt.INT32:case Vt.UINT32:case Vt.INT64:case Vt.UINT64:return!0;default:return!1}};Vt.isUnsignedIntegerType=function(e){switch(e){case Vt.UINT8:case Vt.UINT16:case Vt.UINT32:case Vt.UINT64:return!0;default:return!1}};Vt.isVectorCompatible=function(e){switch(e){case Vt.INT8:case Vt.UINT8:case Vt.INT16:case Vt.UINT16:case Vt.INT32:case Vt.UINT32:case Vt.FLOAT32:case Vt.FLOAT64:return!0;default:return!1}};Vt.normalize=function(e,t){return Math.max(Number(e)/Number(Vt.getMaximum(t)),-1)};Vt.unnormalize=function(e,t){let n=Vt.getMaximum(t),i=Vt.isUnsignedIntegerType(t)?0:-n;return e=D.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Vt.INT64||t===Vt.UINT64)&&Wt.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Vt.applyValueTransform=function(e,t,n){return n*e+t};Vt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Vt.getSizeInBytes=function(e){switch(e){case Vt.INT8:case Vt.UINT8:return 1;case Vt.INT16:case Vt.UINT16:return 2;case Vt.INT32:case Vt.UINT32:return 4;case Vt.INT64:case Vt.UINT64:return 8;case Vt.FLOAT32:return 4;case Vt.FLOAT64:return 8}};Vt.fromComponentDatatype=function(e){switch(e){case q.BYTE:return Vt.INT8;case q.UNSIGNED_BYTE:return Vt.UINT8;case q.SHORT:return Vt.INT16;case q.UNSIGNED_SHORT:return Vt.UINT16;case q.INT:return Vt.INT32;case q.UNSIGNED_INT:return Vt.UINT32;case q.FLOAT:return Vt.FLOAT32;case q.DOUBLE:return Vt.FLOAT64}};Vt.toComponentDatatype=function(e){switch(e){case Vt.INT8:return q.BYTE;case Vt.UINT8:return q.UNSIGNED_BYTE;case Vt.INT16:return q.SHORT;case Vt.UINT16:return q.UNSIGNED_SHORT;case Vt.INT32:return q.INT;case Vt.UINT32:return q.UNSIGNED_INT;case Vt.FLOAT32:return q.FLOAT;case Vt.FLOAT64:return q.DOUBLE}};var Gt=Object.freeze(Vt);var er={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};er.isVectorType=function(e){switch(e){case er.VEC2:case er.VEC3:case er.VEC4:return!0;default:return!1}};er.isMatrixType=function(e){switch(e){case er.MAT2:case er.MAT3:case er.MAT4:return!0;default:return!1}};er.getComponentCount=function(e){switch(e){case er.SCALAR:case er.STRING:case er.ENUM:case er.BOOLEAN:return 1;case er.VEC2:return 2;case er.VEC3:return 3;case er.VEC4:return 4;case er.MAT2:return 4;case er.MAT3:return 9;case er.MAT4:return 16}};er.getMathType=function(e){switch(e){case er.VEC2:return U;case er.VEC3:return d;case er.VEC4:return se;case er.MAT2:return Gi;case er.MAT3:return J;case er.MAT4:return N;default:return}};var pt=Object.freeze(er);function dc(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&Gt.isIntegerType(i)&&(e.normalized??!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=e.isArray??!1,this._isVariableLengthArray=e.isVariableLengthArray??!1,this._arrayLength=e.arrayLength,this._min=ze(e.min,!0),this._max=ze(e.max,!0),this._normalized=r;let s=ze(e.offset,!0),a=ze(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=ze(e.noData,!0),this._default=ze(e.default,!0),this._required=e.required??!0,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}dc.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.property,i=gke(n),o=_ke(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=n.required??!1:r=!1,new dc({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties(dc.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function gke(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===pt.SCALAR||pt.isMatrixType(t)||pt.isVectorType(t))return!1;if(l(Gt[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function _ke(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===pt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===pt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===pt.SCALAR||pt.isMatrixType(n)||pt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===pt.BOOLEAN||n===pt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===pt.BOOLEAN||i===pt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(Gt[i]))return{type:pt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(Gt[n]))return{type:pt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}dc.prototype.normalize=function(e){return this._normalized?OW(e,this._valueType,Gt.normalize):e};dc.prototype.unnormalize=function(e){return this._normalized?OW(e,this._valueType,Gt.unnormalize):e};dc.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:dc.valueTransformInPlace(e,this._offset,this._scale,Gt.applyValueTransform)};dc.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:dc.valueTransformInPlace(e,this._offset,this._scale,Gt.unapplyValueTransform)};dc.prototype.expandConstant=function(e,t){t=t??!1;let n=this._isArray,i=this._arrayLength,o=pt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};dc.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!dae(e,t))return e};function dae(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!dae(e[n],t[n]))return!1;return!0}dc.prototype.unpackVectorAndMatrixTypes=function(e,t){t=t??!1;let n=pt.getMathType(this._type),i=this._isArray,o=pt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};dc.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=pt.getMathType(this._type),i=this._isArray,o=pt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};dc.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?yke(this,e):hae(this,e)};function yke(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=hae(e,t[i]);if(l(o))return o}}function hae(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return pt.isVectorType(n)?Cke(t,n,i):pt.isMatrixType(n)?Eke(t,n,i):n===pt.STRING?Ike(t):n===pt.BOOLEAN?xke(t):n===pt.ENUM?bke(t,o):Tke(t,i,r)}function Cke(e,t,n){if(!Gt.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===pt.VEC2&&!(e instanceof U))return`vector value ${e} must be a Cartesian2`;if(t===pt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===pt.VEC4&&!(e instanceof se))return`vector value ${e} must be a Cartesian4`}function Eke(e,t,n){if(!Gt.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===pt.MAT2&&!(e instanceof Gi))return`matrix value ${e} must be a Matrix2`;if(t===pt.MAT3&&!(e instanceof J))return`matrix value ${e} must be a Matrix3`;if(t===pt.MAT4&&!(e instanceof N))return`matrix value ${e} must be a Matrix4`}function Ike(e){if(typeof e!="string")return Az(e,pt.STRING)}function xke(e){if(typeof e!="boolean")return Az(e,pt.BOOLEAN)}function bke(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function Tke(e,t,n){let i=typeof e;switch(t){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.FLOAT32:case Gt.FLOAT64:return i!=="number"?Az(e,t):isFinite(e)?uae(e,t,n):fae(e,t);case Gt.INT64:case Gt.UINT64:return i!=="number"&&i!=="bigint"?Az(e,t):i==="number"&&!isFinite(e)?fae(e,t):uae(e,t,n)}}function Az(e,t){return`value ${e} does not match type ${t}`}function lae(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function uae(e,t,n){if(n){let i=Gt.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?lae(e,t,n):void 0}if(e<Gt.getMinimum(t)||e>Gt.getMaximum(t))return lae(e,t,n)}function fae(e,t){return`value ${e} of type ${t} must be finite`}function OW(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=OW(e[i],t,n);return e}dc.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=dc.valueTransformInPlace(e[o],t[o],n[o],i);return e};var Ym=dc;function WR(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===pt.STRING,h=r===pt.BOOLEAN,A=0,g;if(a){let p=n.arrayOffsetType??n.offsetType;p=Gt[p]??Gt.UINT32;let x=n.arrayOffsets??n.arrayOffsetBufferView;g=new FW(o[x],p,t+1),A+=g.typedArray.byteLength}let m=pt.getComponentCount(r),_;a?_=g.get(t)-g.get(0):s?_=t*i.arrayLength:_=t;let y=m*_,C;if(f){let p=n.stringOffsetType??n.offsetType;p=Gt[p]??Gt.UINT32;let x=n.stringOffsets??n.stringOffsetBufferView;C=new FW(o[x],p,y+1),A+=C.typedArray.byteLength}(f||h)&&(c=Gt.UINT8);let E;f?E=C.get(y)-C.get(0):h?E=Math.ceil(y/8):E=y;let I=n.values??n.bufferView,b=new FW(o[I],c,E);A+=b.typedArray.byteLength;let S=n.offset,B=n.scale,v=i.hasValueTransform||l(S)||l(B);S=S??i.offset,B=B??i.scale,S=mae(S),B=mae(B);let P,M,L=this;f?P=function(p){return Bke(p,L._values,L._stringOffsets)}:h?(P=function(p){return Dke(p,L._values)},M=function(p,x){vke(p,L._values,x)}):l(u)?(P=function(p){let x=L._values.get(p);return u.namesByValue[x]},M=function(p,x){let T=u.valuesByName[x];L._values.set(p,T)}):(P=function(p){return L._values.get(p)},M=function(p,x){L._values.set(p,x)}),this._arrayOffsets=g,this._stringOffsets=C,this._values=b,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=S,this._scale=B,this._hasValueTransform=v,this._getValue=P,this._setValue=M,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=A}Object.defineProperties(WR.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});WR.prototype.get=function(e){let t=Ske(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=Qke(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};WR.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=kke(this,t),t=n.unnormalize(t),wke(this,e,t)};WR.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function mae(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?si(t,i):t.push(i)}return t}function Ske(e,t){pae(e)&&gae(e);let n=e._classProperty,i=n.isArray,o=n.type,r=pt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?ze(s,!0):s}return!i&&r===1?e._getValue(t):Aae(e,n,t)}function Aae(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=pt.getComponentCount(t.type);i*=s,o*=s}else{let a=(t.arrayLength??1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function wke(e,t,n){Oke(e,t,n)&&gae(e);let i=e._classProperty,o=i.isArray,r=i.type,s=pt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=ze(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=(i.arrayLength??1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function Bke(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return iu(t.typedArray,i,o)}function Dke(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function vke(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function Pke(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function Rke(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function Mke(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function Nke(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function Lke(e){switch(e){case Gt.INT8:return q.BYTE;case Gt.UINT8:return q.UNSIGNED_BYTE;case Gt.INT16:return q.SHORT;case Gt.UINT16:return q.UNSIGNED_SHORT;case Gt.INT32:return q.INT;case Gt.UINT32:return q.UNSIGNED_INT;case Gt.FLOAT32:return q.FLOAT;case Gt.FLOAT64:return q.DOUBLE}}function pae(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===pt.STRING||i===Gt.INT64&&!Wt.supportsBigInt64Array()||i===Gt.UINT64&&!Wt.supportsBigUint64Array()}function Oke(e,t,n){if(pae(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function gae(e){e._unpackedValues=Fke(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function Fke(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=pt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=Aae(e,i,a);return n}function Qke(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Ym.valueTransformInPlace(t,e._offset,e._scale,Gt.applyValueTransform)}function kke(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Ym.valueTransformInPlace(t,e._offset,e._scale,Gt.unapplyValueTransform)}function FW(e,t,n){let i=this,o,r,s;if(t===Gt.INT64)Wt.supportsBigInt()?Wt.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Rke(a,i)}):(yt("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Pke(a,i)});else if(t===Gt.UINT64)Wt.supportsBigInt()?Wt.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Nke(a,i)}):(yt("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Mke(a,i)});else{let a=Lke(t);o=q.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var jR=WR;function bh(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new jR({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(bh.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});bh.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};bh.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};bh.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};bh.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=Uke(this._class,t),i};bh.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};bh.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};bh.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};bh.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};bh.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function Uke(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=ze(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var od=bh;function z_(){}Object.defineProperties(z_.prototype,{cacheKey:{get:function(){me.throwInstantiationError()}}});z_.prototype.load=function(){me.throwInstantiationError()};z_.prototype.unload=function(){};z_.prototype.process=function(e){return!1};z_.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=` +${t.message}`);let n=new ce(e);return l(t)&&(n.stack=`Original stack: +${t.stack} +Handler stack: +${n.stack}`),n};z_.prototype.isDestroyed=function(){return!1};z_.prototype.destroy=function(){return this.unload(),ue(this)};var Hi=z_;var Gke={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},dt=Object.freeze(Gke);function Bp(e){e=e??V.EMPTY_OBJECT;let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Bp.prototype=Object.create(Hi.prototype),Bp.prototype.constructor=Bp);Object.defineProperties(Bp.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});Bp.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=zke(this),this._promise)};async function zke(e){let t=e._resource;e._state=dt.LOADING;try{let n=await Bp._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}Bp._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};Bp.prototype.unload=function(){this._typedArray=void 0};var FE=Bp;var bae=xr(xae(),1);function QE(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,A,g,m,_;if(Ei(a,"EXT_meshopt_compression")){let C=a.extensions.EXT_meshopt_compression;c=C.buffer,u=C.byteOffset??0,f=C.byteLength,h=!0,A=C.byteStride,g=C.count,m=C.mode,_=C.filter??"NONE"}let y=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=A,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=_,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=y,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(QE.prototype=Object.create(Hi.prototype),QE.prototype.constructor=QE);Object.defineProperties(QE.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function Yke(e){try{let t=qke(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);bae.MeshoptDecoder.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=dt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load buffer view",t)}}QE.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Yke(this),this._promise)};function qke(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}QE.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var Cb=QE;function ts(){}ts._maxDecodingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);ts._decoderTaskProcessor=void 0;ts._taskProcessorReady=!1;ts._error=void 0;ts._getDecoderTaskProcessor=function(){if(!l(ts._decoderTaskProcessor)){let e=new di("decodeDraco",ts._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?ts._taskProcessorReady=!0:ts._error=new ce("Draco decoder could not be initialized.")}).catch(t=>{ts._error=t}),ts._decoderTaskProcessor=e}return ts._decoderTaskProcessor};ts.decodePointCloud=function(e){let t=ts._getDecoderTaskProcessor();if(l(ts._error))throw ts._error;if(ts._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};ts.decodeBufferView=function(e){let t=ts._getDecoderTaskProcessor();if(l(ts._error))throw ts._error;if(ts._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var Dp=ts;var Hn={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function Kke(e){switch(e){case Hn.POSITION:return"positionMC";case Hn.NORMAL:return"normalMC";case Hn.TANGENT:return"tangentMC";case Hn.TEXCOORD:return"texCoord";case Hn.COLOR:return"color";case Hn.JOINTS:return"joints";case Hn.WEIGHTS:return"weights";case Hn.FEATURE_ID:return"featureId";case Hn.SCALE:return"scale";case Hn.ROTATION:return"rotation"}}Hn.hasSetIndex=function(e){switch(e){case Hn.POSITION:case Hn.NORMAL:case Hn.TANGENT:return!1;case Hn.TEXCOORD:case Hn.COLOR:case Hn.JOINTS:case Hn.WEIGHTS:case Hn.FEATURE_ID:case Hn.SCALE:case Hn.ROTATION:return!0}};Hn.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return Hn.POSITION;case"NORMAL":return Hn.NORMAL;case"TANGENT":return Hn.TANGENT;case"TEXCOORD":return Hn.TEXCOORD;case"COLOR":return Hn.COLOR;case"JOINTS":return Hn.JOINTS;case"WEIGHTS":return Hn.WEIGHTS;case"_FEATURE_ID":return Hn.FEATURE_ID;case"_SCALE":return Hn.SCALE;case"_ROTATION":return Hn.ROTATION}};Hn.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return Hn.POSITION;case"RGBA":case"RGB":case"RGB565":return Hn.COLOR;case"NORMAL":case"NORMAL_OCT16P":return Hn.NORMAL;case"BATCH_ID":return Hn.FEATURE_ID}};Hn.getGlslType=function(e){switch(e){case Hn.POSITION:case Hn.NORMAL:case Hn.TANGENT:return"vec3";case Hn.TEXCOORD:return"vec2";case Hn.COLOR:return"vec4";case Hn.JOINTS:return"ivec4";case Hn.WEIGHTS:return"vec4";case Hn.FEATURE_ID:return"int";case Hn.SCALE:return"vec3";case Hn.ROTATION:return"vec4";case Hn.OPACITY:return"float"}};Hn.getVariableName=function(e,t){let n=Kke(e);return l(t)&&(n+=`_${t}`),n};var at=Object.freeze(Hn);function V_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(V_.prototype=Object.create(Hi.prototype),V_.prototype.constructor=V_);Object.defineProperties(V_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function Xke(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Tae(e,n)}}V_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Xke(this),this._promise)};function Tae(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load Draco",t)}async function Jke(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var kE={};kE[at.POSITION]="POSITION";kE[at.NORMAL]="NORMAL";kE[at.COLOR]="COLOR";kE[at.TEXCOORD]="TEX_COORD";function Zke(e){for(let t in kE)if(kE.hasOwnProperty(t)&&e.startsWith(t))return kE[t]}V_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._dracoError)&&Tae(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let A=Zke(h);l(A)&&i.accessors[n.attributes[h]].componentType===q.FLOAT&&(c.includes(A)||c.push(A))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=Dp.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=Jke(this,f)};V_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var Eb=V_;function $ke(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return we.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(we.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new we({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var UE=$ke;function vp(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(vp.prototype=Object.create(Hi.prototype),vp.prototype.constructor=vp);Object.defineProperties(vp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});vp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=e3e(this),this._promise):(this._promise=t3e(this),this._promise)};function Sae(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function e3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await i3e(i);if(e.isDestroyed())return;let r=Sae(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(n){return e.isDestroyed()?void 0:wae(e,n,"Failed to load embedded image")}}async function t3e(e){e._state=dt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await r3e(i);if(e.isDestroyed())return;let r=Sae(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(o){return e.isDestroyed()?void 0:wae(e,o,`Failed to load image: ${n}`)}}function wae(e,t,n){return e.unload(),e._state=dt.FAILED,Promise.reject(e.getError(n,t))}function n3e(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new ce("Image format is not recognized")}async function i3e(e){let t=n3e(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return $l(n)}return vp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var o3e=/(^data:image\/ktx2)|(\.ktx2$)/i;function r3e(e){let t=e.getUrlComponent(!1,!0);return o3e.test(t)?$l(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}vp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};vp._loadImageFromTypedArray=UE;var Ib=vp;var s3e={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},hc=Object.freeze(s3e);function H_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=e.asynchronous??!0,f=e.loadBuffer??!1,h=e.loadTypedArray??!1,A=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=A,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(H_.prototype=Object.create(Hi.prototype),H_.prototype.constructor=H_);Object.defineProperties(H_.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var a3e=new VW;H_.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=c3e(this),this._promise):(this._promise=l3e(this),this._promise)};async function c3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;zW(e,n)}}async function l3e(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=dt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=u3e(e,a),e._state=dt.PROCESSING,e}catch(s){if(e.isDestroyed())return;zW(e,s)}}function u3e(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Oe.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,A=new Uint8Array(c,u,h);c=new Uint8Array(A).buffer,u=0,Tr("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Oe.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Oe.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Oe.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function zW(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load index buffer",t)}function VW(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}VW.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};VW.prototype.execute=function(){this.buffer=Bae(this.typedArray,this.indexDatatype,this.context)};function Bae(e,t,n){let i=Ct.createIndexBuffer({typedArray:e,context:n,usage:Qe.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}H_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=q.fromTypedArray(t),this._indexDatatype=n)}catch(o){zW(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=a3e;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,hc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=Bae(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};H_.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var xb=H_;function f3e(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var Ys=f3e;function d3e(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Sr=d3e;function rn(){}rn.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};rn.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};rn.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?rn.objectLegacy(i,n):rn.object(i,n)};rn.accessor=function(e,t){return rn.topLevel(e,"accessors",t)};rn.accessorWithSemantic=function(e,t,n){let i={};return rn.mesh(e,function(o){return rn.meshPrimitive(o,function(r){let s=rn.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:rn.meshPrimitiveTarget(r,function(a){return rn.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};rn.accessorContainingVertexAttributeData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=rn.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:rn.meshPrimitiveTarget(o,function(s){return rn.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};rn.accessorContainingIndexData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};rn.animation=function(e,t){return rn.topLevel(e,"animations",t)};rn.animationChannel=function(e,t){let n=e.channels;return rn.object(n,t)};rn.animationSampler=function(e,t){let n=e.samplers;return rn.object(n,t)};rn.buffer=function(e,t){return rn.topLevel(e,"buffers",t)};rn.bufferView=function(e,t){return rn.topLevel(e,"bufferViews",t)};rn.camera=function(e,t){return rn.topLevel(e,"cameras",t)};rn.image=function(e,t){return rn.topLevel(e,"images",t)};rn.material=function(e,t){return rn.topLevel(e,"materials",t)};rn.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.mesh=function(e,t){return rn.topLevel(e,"meshes",t)};rn.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};rn.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};rn.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};rn.node=function(e,t){return rn.topLevel(e,"nodes",t)};rn.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=rn.nodeInTree(e,u,n),l(c)))return c}}}};rn.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return rn.nodeInTree(e,i,n)};rn.program=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.programs,t):rn.topLevel(e,"programs",t)};rn.sampler=function(e,t){return rn.topLevel(e,"samplers",t)};rn.scene=function(e,t){return rn.topLevel(e,"scenes",t)};rn.shader=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.shaders,t):rn.topLevel(e,"shaders",t)};rn.skin=function(e,t){return rn.topLevel(e,"skins",t)};rn.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};rn.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.technique=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.techniques,t):rn.topLevel(e,"techniques",t)};rn.texture=function(e,t){return rn.topLevel(e,"textures",t)};var Re=rn;function h3e(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var Yu=h3e;function m3e(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return q.getSizeInBytes(t.componentType)*Yu(t.type)}var su=m3e;function A3e(e){Re.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Re.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){if(i.mode=i.mode??ee.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=Ys(e.materials,o)}})}),Re.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=su(e,i),r.target=ee.ARRAY_BUFFER}}),Re.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ee.ELEMENT_ARRAY_BUFFER}}),Re.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=u.transparency??1,c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=u.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Re.materialValue(n,function(c){l(c.index)&&GE(c)}),GE(n.emissiveTexture),GE(n.normalTexture),GE(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,GE(s.baseColorTexture),GE(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,GE(a.specularGlossinessTexture))}),Re.animation(e,function(n){Re.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=p3e(e);return Re.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Re.sampler(e,function(n){n.wrapS=n.wrapS??ee.REPEAT,n.wrapT=n.wrapT??ee.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function p3e(e){let t={};return Re.animation(e,function(n){Re.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function GE(e){l(e)&&(e.texCoord=e.texCoord??0)}var JR=A3e;function g3e(e){return Re.shader(e,function(t){Cz(t)}),Re.buffer(e,function(t){Cz(t)}),Re.image(e,function(t){Cz(t)}),Cz(e),e}function Cz(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var W_=g3e;function _3e(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var ZR=_3e;function y3e(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),ZR(e,t),n.length===0&&delete e.extensionsUsed}}var zE=y3e;var C3e=4;function E3e(e){if(Ih(e)!=="glTF")throw new ce("File is not valid binary glTF");let n=Dae(e,0,5),i=n[1];if(i!==1&&i!==2)throw new ce("Binary glTF version is not 1 or 2");return i===1?I3e(e,n):x3e(e,n)}function Dae(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*C3e,!0);return o}function I3e(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new ce("Binary glTF scene format is not JSON");let r=20,s=r+i,a=iu(e,r,i),c=JSON.parse(a);W_(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=f.binary_glTF??f.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return zE(c,"KHR_binary_glTF"),c}function x3e(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=Dae(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=iu(u);o=JSON.parse(f),W_(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var $R=E3e;function b3e(e){return Re.shader(e,function(t){Ez(t)}),Re.buffer(e,function(t){Ez(t)}),Re.image(e,function(t){Ez(t)}),Ez(e),e}function Ez(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var eM=b3e;function T3e(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),Ys(n,t,!0)}var rd=T3e;function S3e(e){switch(e){case q.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case q.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case q.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case q.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case q.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case q.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case q.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case q.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Pp=S3e;function w3e(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=Yu(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,A=t.count,g=su(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,_=t.componentType,y=q.getSizeInBytes(_),C=new DataView(h.buffer),E=new Array(r),I=Pp(_);for(let b=0;b<A;b++){I(C,m,r,y,E);for(let S=0;S<r;S++){let B=E[S];s[S]=Math.min(s[S],B),a[S]=Math.max(a[S],B)}m+=g}return{min:s,max:a}}var VE=w3e;var B3e=[ee.FUNC_ADD,ee.FUNC_ADD],D3e=[ee.ONE,ee.ZERO,ee.ONE,ee.ZERO];function vae(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var v3e=[ee.ZERO,ee.ONE,ee.SRC_COLOR,ee.ONE_MINUS_SRC_COLOR,ee.SRC_ALPHA,ee.ONE_MINUS_SRC_ALPHA,ee.DST_ALPHA,ee.ONE_MINUS_DST_ALPHA,ee.DST_COLOR,ee.ONE_MINUS_DST_COLOR];function P3e(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(v3e.indexOf(e[n])===-1)return t;return e}function R3e(e){let t={},n={},i=e.techniques;return l(i)&&(Re.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(vae(s,ee.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??B3e,blendFactors:P3e(c.blendFuncSeparate,D3e)})}vae(s,ee.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),rd(e,"KHR_blend")),Re.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Re.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var tM=R3e;function M3e(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),Ys(n,t,!0),rd(e,t)}var nM=M3e;function N3e(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Re.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Re.techniqueAttribute(a,function(h,A){f=a.parameters[h],u.attributes[A]={semantic:f.semantic}}),Re.techniqueUniform(a,function(h,A){f=a.parameters[h],u.uniforms[A]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=A}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],A={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];A.fragmentShader=Ys(r.shaders,g,!0);let m=e.shaders[h.vertexShader];A.vertexShader=Ys(r.shaders,m,!0),u.program=Ys(r.programs,A),o[a.program]=u.program}i[c]=Ys(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,rd(e,"KHR_techniques_webgl"),nM(e,"KHR_techniques_webgl"))}return Re.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Re.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var iM=N3e;function L3e(e,t){Po.typeOf.object("material",e),Po.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let A=t(c.index,c);if(l(A))return A}if(l(u)&&l(u.index)){let A=t(u.index,u);if(l(A))return A}if(l(f)&&l(f.index)){let A=t(f.index,f);if(l(A))return A}if(l(h)&&l(h.index)){let A=t(h.index,h);if(l(A))return A}}}let o=Re.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var bb=L3e;var Pae=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function O3e(e,t){return t=t??Pae,Pae.forEach(function(n){t.indexOf(n)>-1&&Q3e(e,n)}),e}var F3e={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function Q3e(e,t){let n=F3e[t],i=e[n];if(l(i)){let o=0,r=Km[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(qm[t](e,a-o),o++)}}function qm(){}qm.accessor=function(e,t){e.accessors.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){Re.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Re.meshPrimitiveTarget(o,function(a){Re.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Re.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Re.animation(e,function(i){Re.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};qm.buffer=function(e,t){e.buffers.splice(t,1),Re.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};qm.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Re.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Sr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Sr(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(Sr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};qm.image=function(e,t){e.images.splice(t,1),Re.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};qm.mesh=function(e,t){e.meshes.splice(t,1),Re.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};qm.node=function(e,t){e.nodes.splice(t,1),Re.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Re.animation(e,function(i){Re.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Re.technique(e,function(i){Re.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Re.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Re.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};qm.material=function(e,t){e.materials.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};qm.sampler=function(e,t){e.samplers.splice(t,1),Re.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};qm.texture=function(e,t){if(e.textures.splice(t,1),Re.material(e,function(i){bb(i,function(o,r){r.index>t&&--r.index})}),Sr(e,"EXT_feature_metadata")){Re.mesh(e,function(r){Re.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(Sr(e,"EXT_mesh_features")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),Sr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Km(){}Km.accessor=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Re.meshPrimitiveTarget(i,function(r){Re.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Re.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Re.animation(e,function(n){Re.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Sr(e,"EXT_mesh_gpu_instancing")&&Re.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Sr(e,"CESIUM_primitive_outline")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Km.buffer=function(e){let t={};return Re.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Km.bufferView=function(e){let t={};if(Re.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Sr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Sr(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Sr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Km.image=function(e){let t={};return Re.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Km.mesh=function(e){let t={};return Re.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function Rae(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Rae(e,o,n)}).length===0}Km.node=function(e){let t={};return Re.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Re.skinJoint(n,function(i){t[i]=!0})}),Re.animation(e,function(n){Re.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Re.technique(e,function(n){Re.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Re.node(e,function(n,i){Rae(e,i,t)||(t[i]=!0)}),t};Km.material=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Km.texture=function(e){let t={};if(Re.material(e,function(n){bb(n,function(i){t[i]=!0})}),Sr(e,"EXT_feature_metadata")){Re.mesh(e,function(o){Re.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let A=c[f].featureIds.texture;t[A.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(Sr(e,"EXT_mesh_features")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),Sr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Km.sampler=function(e){let t={};return Re.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var oM=O3e;function k3e(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:Ys(e.buffers,n),byteOffset:0,byteLength:t.length};return Ys(e.bufferViews,o)}var rM=k3e;function U3e(e,t){let n=su(e,t),i=q.getSizeInBytes(t.componentType),o=Yu(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),A=Pp(t.componentType);for(let g=0;g<r;++g){A(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var sM=U3e;function G3e(e){let t;return Re.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?Iz(e,i,q.UNSIGNED_BYTE):t!==ee.UNSIGNED_BYTE&&t!==ee.UNSIGNED_SHORT&&Iz(e,i,q.UNSIGNED_SHORT)}),Re.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?Iz(e,i,q.UNSIGNED_BYTE):t===ee.SHORT&&Iz(e,i,q.UNSIGNED_SHORT)}),e}function Iz(e,t,n){let i=q.createTypedArray(n,sM(e,t)),o=new Uint8Array(i.buffer);t.bufferView=rM(e,o),t.componentType=n,t.byteOffset=0}var aM=G3e;function z3e(e,t){return zE(e,t),t==="CESIUM_RTC"&&V3e(e),HW(e,t)}function V3e(e){Re.technique(e,function(t){Re.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function HW(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)HW(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&HW(e[o],t);return i}}var HE=z3e;var xz={.8:K3e,"1.0":pUe,"2.0":void 0};function H3e(e,t){t=t??{};let n=t.targetVersion,i=e.version;e.asset=e.asset??{version:"1.0"},e.asset.version=e.asset.version??"1.0",i=(i??e.asset.version).toString(),Object.prototype.hasOwnProperty.call(xz,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(xz,i)||(i="1.0"));let o=xz[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=xz[i];return t.keepLegacyExtensions||(yUe(e,t),CUe(e)),e}function Lae(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function W3e(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.primitive??ee.TRIANGLES;a.mode=a.mode??c,delete a.primitive}}}}function j3e(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function Y3e(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,A=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let _=f[m];if(_.target.path==="rotation"){let y=h[A[_.sampler].output];if(l(r[y]))continue;r[y]=!0;let C=n[y],E=i[C.bufferView],b=o[E.buffer].extras._pipeline.source,S=b.byteOffset+E.byteOffset+C.byteOffset,B=C.componentType,v=C.count,P=Yu(C.type),M=C.count*P,L=q.createArrayBufferView(B,b.buffer,S,M);for(let p=0;p<v;p++){let x=p*P;d.unpack(L,x,s);let T=L[x+3];Le.fromAxisAngle(s,T,a),Le.pack(a,L,x)}}}}}}function q3e(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=i.pass??"defaultPass";if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=i.attributes??a.attributes,i.program=i.program??a.program,i.uniforms=i.uniforms??a.uniforms,i.states=i.states??s.states}delete i.passes,delete i.pass}}}function K3e(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,Lae(e),W3e(e),j3e(e),Y3e(e),q3e(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=e.extensions??{};e.extensions=n;let i=n.KHR_materials_common??{};n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,rd(e,"KHR_materials_common")}}function X3e(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function Mae(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function J3e(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=Mae(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Re.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Re.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Re.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Re.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Re.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Re.mesh(e,function(s){Re.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Re.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Re.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=Ys(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Re.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Re.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Re.animation(e,function(s){let a={};s.samplers=Mae(s.samplers,a),Re.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Re.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Re.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Re.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Re.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Re.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function Z3e(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){delete n.name})})}function $3e(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Re.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function eUe(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var tUe={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function nUe(e){let t=e.extensionsUsed;if(e.extensionsRequired=e.extensionsRequired??[],l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(tUe[o])&&e.extensionsRequired.push(o)}}}function iUe(e){Re.buffer(e,function(t){delete t.type})}function oUe(e){Re.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function rUe(e){Re.mesh(e,function(t){Re.meshPrimitive(t,function(n){Re.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Re.technique(e,function(t){Re.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var sUe={POSITION:!0,NORMAL:!0,TANGENT:!0},aUe={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function cUe(e){let t={};Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=aUe[a];l(f)?(u=f+c,t[r]=u):l(sUe[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Re.technique(e,function(n){Re.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function lUe(e){Re.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function jW(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:su(e,t)}function uUe(e){Re.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Re.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=jW(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function fUe(e){let t,n,i,o=e.bufferViews,r={};Re.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Re.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(A,g){return A.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let A=c[t],g=jW(e,A),m=A.byteOffset,_=A.count*g;delete A.byteStride;let y=t<h-1,C=y?jW(e,c[t+1]):void 0;if(g!==C){let E=ze(i,!0);r[a]&&(E.byteStride=g),E.byteOffset+=u,E.byteLength=m+_-u;let I=Ys(o,E);for(n=f;n<=t;++n)A=c[n],A.bufferView=I,A.byteOffset=A.byteOffset-u;u=y?c[t+1].byteOffset:void 0,f=t+1}}}oM(e,["accessor","bufferView","buffer"])}function dUe(e){Re.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=VE(e,n);n.min=i.min,n.max=i.max}})}function Oae(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||se.fromArray(e.rotation).equals(new se(0,0,0,1)))&&(!l(e.matrix)||N.fromColumnMajorArray(e.matrix).equals(N.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Fae(e,t){Re.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Re.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),Oae(n)&&Fae(e,i))}}),delete e.nodes[t]}function hUe(e){return Re.node(e,function(t,n){Oae(t)&&Fae(e,n)}),e}function mUe(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=VE(e,i);i.min=o.min,i.max=o.max}})})}function AUe(e){Re.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=VE(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function pUe(e){e.asset=e.asset??{},e.asset.version="2.0",Lae(e),X3e(e),hUe(e),J3e(e),Z3e(e),eUe(e),nUe(e),uUe(e),fUe(e),dUe(e),mUe(e),AUe(e),iUe(e),oUe(e),rUe(e),cUe(e),aM(e),lUe(e),tM(e),iM(e),$3e(e)}var gUe=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],_Ue=["u_diffuse","u_diffuse_mat"];function YW(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function qW(e){return l(e.index)}function KW(e){return Array.isArray(e)&&e.length===4}function Qae(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function yUe(e,t){t=t??{};let n=t.baseColorTextureNames??gUe,i=t.baseColorFactorNames??_Ue;Re.material(e,function(o){Re.materialValue(o,function(r,s){n.indexOf(s)!==-1&&qW(r)?(YW(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&KW(r)&&(YW(o),o.pbrMetallicRoughness.baseColorFactor=Qae(r))})}),HE(e,"KHR_techniques_webgl"),HE(e,"KHR_blend")}function WW(e,t){l(t)&&(KW(t)?e.pbrMetallicRoughness.baseColorFactor=Qae(t):qW(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function Nae(e,t){l(t)&&(KW(t)?e.emissiveFactor=t.slice(0,3):qW(t)&&(e.emissiveTexture=t))}function CUe(e){Re.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;YW(t),n.technique==="CONSTANT"?(rd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},WW(t,s),WW(t,o)):(WW(t,r),Nae(t,o),Nae(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),HE(e,"KHR_materials_common")}var cM=H3e;function Lc(){}Lc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new ce(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};Lc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:N.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};Lc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};Lc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};Lc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};Lc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};Lc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=at.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=zt.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":zt.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var EUe=new d,IUe=new d;Lc.getPositionMinMax=function(e,t,n){let i=Lc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,IUe),o=d.add(o,n,EUe)),{min:r,max:o}};Lc.getAxisCorrectionMatrix=function(e,t,n){return n=N.clone(N.IDENTITY,n),e===fo.Y?n=N.clone(fo.Y_UP_TO_Z_UP,n):e===fo.X&&(n=N.clone(fo.X_UP_TO_Z_UP,n)),t===fo.Z&&(n=N.multiplyTransformation(n,fo.Z_UP_TO_X_UP,n)),n};var xUe=new J;Lc.getCullFace=function(e,t){if(!Me.isTriangles(t))return Mi.BACK;let n=N.getMatrix3(e,xUe);return J.determinant(n)<0?Mi.FRONT:Mi.BACK};Lc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};Lc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,KHR_gaussian_splatting:!0,KHR_spz_gaussian_splats_compression:!0,WEB3D_quantized_attributes:!0};Lc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!Lc.supportedExtensions[i])throw new ce(`Unsupported glTF Extension: ${i}`)}};var Ot=Lc;function j_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(j_.prototype=Object.create(Hi.prototype),j_.prototype.constructor=j_);Object.defineProperties(j_.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});j_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,l(this._gltfJson)?(this._promise=kae(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=Uae(this,this._typedArray),this._promise):(this._promise=bUe(this),this._promise))};async function bUe(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;XW(e,n)}return Uae(e,t)}function XW(e,t){e.unload(),e._state=dt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function TUe(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!Sr(t,"KHR_techniques_webgl")&&!Sr(t,"KHR_materials_common"))return Promise.resolve();let n=[];Re.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),cM(t)}function SUe(e){let t=[];return Re.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&XA(i)&&(delete n.uri,t.push(we.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function wUe(e,t){let n=[];return Re.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function kae(e,t){try{W_(t),await SUe(t),await TUe(e,t),JR(t),await wUe(e,t),eM(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new ce(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Ot.checkSupportedExtensions(i),e._gltf=t,e._state=dt.READY,e}catch(n){if(e.isDestroyed())return;XW(e,n)}}async function Uae(e,t){let n;try{Ih(t)==="glTF"?n=$R(t):n=dr(t)}catch(i){if(e.isDestroyed())return;XW(e,i)}return kae(e,n)}j_.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};j_.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var Tb=j_;var BUe={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},Xm=Object.freeze(BUe);var Fo={};function DUe(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function vUe(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function PUe(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function RUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function MUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function NUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function LUe(){this.attributes=[]}function OUe(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0,this.modelPrimitiveImagery=void 0}function FUe(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function QUe(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function kUe(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function UUe(){this.nodes=[]}var GUe={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function zUe(){this.input=[],this.interpolation=void 0,this.output=[]}function VUe(){this.node=void 0,this.path=void 0}function HUe(){this.sampler=void 0,this.target=void 0}function WUe(){this.name=void 0,this.samplers=[],this.channels=[]}function jUe(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function YUe(){this.name=void 0,this.stages=[]}function Gae(){this.credits=[]}function qUe(){this.asset=new Gae,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=N.clone(N.IDENTITY),this.extensions={}}function KUe(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=J.clone(J.IDENTITY),this.scale=1,this.channels=void 0}function Y_(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=se.clone(Y_.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=Y_.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=Y_.DEFAULT_ROUGHNESS_FACTOR}Y_.DEFAULT_BASE_COLOR_FACTOR=se.ONE;Y_.DEFAULT_METALLIC_FACTOR=1;Y_.DEFAULT_ROUGHNESS_FACTOR=1;function WE(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=se.clone(WE.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(WE.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=WE.DEFAULT_GLOSSINESS_FACTOR}WE.DEFAULT_DIFFUSE_FACTOR=se.ONE;WE.DEFAULT_SPECULAR_FACTOR=d.ONE;WE.DEFAULT_GLOSSINESS_FACTOR=1;function lM(){this.specularFactor=lM.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(lM.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}lM.DEFAULT_SPECULAR_FACTOR=1;lM.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function uM(){this.anisotropyStrength=uM.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=uM.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}uM.DEFAULT_ANISOTROPY_STRENGTH=0;uM.DEFAULT_ANISOTROPY_ROTATION=0;function fM(){this.clearcoatFactor=fM.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=fM.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}fM.DEFAULT_CLEARCOAT_FACTOR=0;fM.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function JW(){this.metallicRoughness=new Y_,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(JW.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=Xm.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}JW.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Fo.Quantization=DUe;Fo.Attribute=vUe;Fo.Indices=PUe;Fo.FeatureIdAttribute=RUe;Fo.FeatureIdTexture=NUe;Fo.FeatureIdImplicitRange=MUe;Fo.MorphTarget=LUe;Fo.Primitive=OUe;Fo.Instances=FUe;Fo.Skin=QUe;Fo.Node=kUe;Fo.Scene=UUe;Fo.AnimatedPropertyType=Object.freeze(GUe);Fo.AnimationSampler=zUe;Fo.AnimationTarget=VUe;Fo.AnimationChannel=HUe;Fo.Animation=WUe;Fo.ArticulationStage=jUe;Fo.Articulation=YUe;Fo.Asset=Gae;Fo.Components=qUe;Fo.TextureReader=KUe;Fo.MetallicRoughness=Y_;Fo.SpecularGlossiness=WE;Fo.Specular=lM;Fo.Anisotropy=uM;Fo.Clearcoat=fM;Fo.Material=JW;var xn=Fo;var bz={};bz.getImageIdFromTexture=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};bz.createSampler=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=Tn.REPEAT,r=Tn.REPEAT,s=Zt.LINEAR,a=mi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=h.wrapS??o,r=h.wrapT??r,s=h.minFilter??s,a=h.magFilter??a}return i&&s!==Zt.LINEAR&&s!==Zt.NEAREST&&(s===Zt.NEAREST_MIPMAP_NEAREST||s===Zt.NEAREST_MIPMAP_LINEAR?s=Zt.NEAREST:s=Zt.LINEAR),new on({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var XUe=new U(1,1);bz.createModelTextureReader=function(e){e=e??V.EMPTY_OBJECT;let{textureInfo:t,channels:n,texture:i}=e,o=t.texCoord??0,r,s=t.extensions?.KHR_texture_transform;if(l(s)){o=s.texCoord??o;let c=l(s.offset)?U.unpack(s.offset):U.ZERO,u=s.rotation??0,f=l(s.scale)?U.unpack(s.scale):XUe;u=-u,r=new J(Math.cos(u)*f.x,-Math.sin(u)*f.y,c.x,Math.sin(u)*f.x,Math.cos(u)*f.y,c.y,0,0,1)}let a=new xn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var au=bz;function JUe(e){let t=document.createElement("canvas");return t.width=D.nextPowerOfTwo(e.width),t.height=D.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var q_=JUe;function K_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=e.asynchronous??!0,u=i.index,f=au.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(K_.prototype=Object.create(Hi.prototype),K_.prototype.constructor=K_);Object.defineProperties(K_.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var ZUe=new ZW;async function $Ue(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load texture",n)}}K_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=$Ue(this),this._promise)};function ZW(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}ZW.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};ZW.prototype.execute=function(){this.texture=zae(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function zae(e,t,n,i,o,r){let s=i.internalFormat,a=!1;$e.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=au.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,A=u===Zt.NEAREST_MIPMAP_NEAREST||u===Zt.NEAREST_MIPMAP_LINEAR||u===Zt.LINEAR_MIPMAP_NEAREST||u===Zt.LINEAR_MIPMAP_LINEAR,g=!l(s)&&A,m=g||f===Tn.REPEAT||f===Tn.MIRRORED_REPEAT||h===Tn.REPEAT||h===Tn.MIRRORED_REPEAT,_=!D.isPowerOfTwo(i.width)||!D.isPowerOfTwo(i.height),y=m&&_,C;return l(s)?(!r.webgl2&&$e.isCompressedFormat(s)&&_&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),C=Mt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(y&&(i=q_(i)),C=Mt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&C.generateMipmap(),C}K_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=dt.PROCESSING;let t;if(this._asynchronous){let n=ZUe;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,hc.TEXTURE))return;t=n.texture}else t=zae(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=dt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};K_.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var Sb=K_;function X_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=e.spz,A=e.asynchronous??!0,g=e.loadBuffer??!1,m=e.loadTypedArray??!1;this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._spz=h,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=A,this._loadBuffer=g,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(X_.prototype=Object.create(Hi.prototype),X_.prototype.constructor=X_);Object.defineProperties(X_.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function eGe(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}X_.prototype.load=async function(){return l(this._promise)?this._promise:l(this._spz)?(this._promise=nGe(this),this._promise):eGe(this._draco,this._attributeSemantic)?(this._promise=oGe(this),this._promise):(this._promise=sGe(this),this._promise)};function tGe(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new xn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=zt.VEC2,a.normalizationRange=r;else{let c=zt.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function nGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getSpzLoader({gltf:e._gltf,primitive:e._primitive,spz:e._spz,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._spzLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return}}function iGe(e){e._state=dt.PROCESSING;let n=e._spzLoader.decodedData.gcloud;if(e._attributeSemantic==="POSITION")e._typedArray=n.positions;else if(e._attributeSemantic==="_SCALE")e._typedArray=n.scales;else if(e._attributeSemantic==="_ROTATION")e._typedArray=n.rotations;else if(e._attributeSemantic==="COLOR_0"){let i=n.colors,o=n.alphas;e._typedArray=new Uint8Array(i.length/3*4);for(let r=0;r<i.length/3;r++)e._typedArray[r*4]=D.clamp(i[r*3]*255,0,255),e._typedArray[r*4+1]=D.clamp(i[r*3+1]*255,0,255),e._typedArray[r*4+2]=D.clamp(i[r*3+2]*255,0,255),e._typedArray[r*4+3]=D.clamp(o[r]*255,0,255)}}async function oGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return;Tz(e)}}function rGe(e){e._state=dt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=tGe(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function sGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Tz(e,n)}}function Tz(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load vertex buffer",t)}function $W(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}$W.prototype.set=function(e,t){this.typedArray=e,this.context=t};$W.prototype.execute=function(){this.buffer=Vae(this.typedArray,this.context)};function Vae(e,t){let n=Ct.createVertexBuffer({typedArray:e,context:t,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var aGe=new $W;X_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){Tz(this,i)}rGe(this)}if(l(this._spzLoader)){try{if(!this._spzLoader.process(e))return!1}catch(i){Tz(this,i)}iGe(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=aGe;if(i.set(n,e.context),!e.jobScheduler.execute(i,hc.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=Vae(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};X_.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),l(this._spzLoader)&&e.unload(this._spzLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._spzLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var wb=X_;var Hae={};async function cGe(e={}){var t,n,i=e,o=typeof window=="object",r=typeof WorkerGlobalScope<"u",s=typeof process=="object"&&((t=process.versions)==null?void 0:t.node)&&process.type!="renderer";if(s){let{createRequire:oe}=await Promise.resolve().then(()=>hGe);var a=oe(Hae.url)}var c="./this.program",u=Hae.url,f;if(s){var h=a("fs");u.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(u)),f=oe=>(oe=y(oe)?new URL(oe):oe,h.readFileSync(oe)),1<process.argv.length&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else if(o||r){try{new URL(".",u)}catch{}r&&(f=oe=>{var ne=new XMLHttpRequest;return ne.open("GET",oe,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)})}var A=console.log.bind(console),g=console.error.bind(console),m,_=!1,y=oe=>oe.startsWith("file://"),C,E,I,b,S,B,v,P,M,L,p,x,T,w=!1;function R(){var oe=I.buffer;b=new Int8Array(oe),B=new Int16Array(oe),i.HEAPU8=S=new Uint8Array(oe),v=new Uint16Array(oe),P=new Int32Array(oe),M=new Uint32Array(oe),i.HEAPF32=L=new Float32Array(oe),p=new Float64Array(oe),x=new BigInt64Array(oe),T=new BigUint64Array(oe)}var O=0,k=null;function Q(oe){var ne;throw(ne=i.onAbort)==null||ne.call(i,oe),oe="Aborted("+oe+")",g(oe),_=!0,oe=new WebAssembly.RuntimeError(oe+". Build with -sASSERTIONS for more info."),E?.(oe),oe}var z;async function F(oe){if(!ArrayBuffer.isView(oe))if(oe==z&&m)oe=new Uint8Array(m);else if(f)oe=f(oe);else throw"both async and sync fetching of the wasm failed";return oe}async function H(oe){var ne=z;try{var Ee=await F(ne);return await WebAssembly.instantiate(Ee,oe)}catch(be){g(`failed to asynchronously prepare wasm: ${be}`),Q(be)}}async function W(oe){return H(oe)}var Z=oe=>{for(;0<oe.length;)oe.shift()(i)},Y=[],$=[],X=()=>{var oe=i.preRun.shift();$.push(oe)},he=oe=>{if(s)return oe=Buffer.from(oe,"base64"),new Uint8Array(oe.buffer,oe.byteOffset,oe.length);for(var ne,Ee,be=0,We=0,At=oe.length,ut=new Uint8Array((3*At>>2)-(oe[At-2]=="=")-(oe[At-1]=="="));be<At;be+=4,We+=3)ne=jA[oe.charCodeAt(be+1)],Ee=jA[oe.charCodeAt(be+2)],ut[We]=jA[oe.charCodeAt(be)]<<2|ne>>4,ut[We+1]=ne<<4|Ee>>2,ut[We+2]=Ee<<6|jA[oe.charCodeAt(be+3)];return ut},ge={},fe=oe=>{for(;oe.length;){var ne=oe.pop();oe.pop()(ne)}};function ye(oe){return this.N(M[oe>>2])}var xe={},ve={},Te={},ke=class extends Error{constructor(oe){super(oe),this.name="InternalError"}},Ge=(oe,ne,Ee)=>{function be(xt){if(xt=Ee(xt),xt.length!==oe.length)throw new ke("Mismatched type converter count");for(var vn=0;vn<oe.length;++vn)nn(oe[vn],xt[vn])}oe.forEach(xt=>Te[xt]=ne);var We=Array(ne.length),At=[],ut=0;ne.forEach((xt,vn)=>{ve.hasOwnProperty(xt)?We[vn]=ve[xt]:(At.push(xt),xe.hasOwnProperty(xt)||(xe[xt]=[]),xe[xt].push(()=>{We[vn]=ve[xt],++ut,ut===At.length&&be(We)}))}),At.length===0&&be(We)},Ke=oe=>{for(var ne="";;){var Ee=S[oe++];if(!Ee)return ne;ne+=String.fromCharCode(Ee)}},tt=class extends Error{constructor(oe){super(oe),this.name="BindingError"}},en=oe=>{throw new tt(oe)};function it(oe,ne,Ee={}){var be=ne.name;if(!oe)throw new tt(`type "${be}" must have a positive integer typeid pointer`);if(ve.hasOwnProperty(oe)){if(Ee.wa)return;throw new tt(`Cannot register type '${be}' twice`)}ve[oe]=ne,delete Te[oe],xe.hasOwnProperty(oe)&&(ne=xe[oe],delete xe[oe],ne.forEach(We=>We()))}function nn(oe,ne,Ee={}){return it(oe,ne,Ee)}var qt=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?be=>b[be]:be=>S[be];case 2:return Ee?be=>B[be>>1]:be=>v[be>>1];case 4:return Ee?be=>P[be>>2]:be=>M[be>>2];case 8:return Ee?be=>x[be>>3]:be=>T[be>>3];default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Rt=oe=>{throw new tt(oe.L.P.M.name+" instance already deleted")},Si=!1,gi=()=>{},Ft=oe=>typeof FinalizationRegistry>"u"?(Ft=ne=>ne,oe):(Si=new FinalizationRegistry(ne=>{ne=ne.L,--ne.count.value,ne.count.value===0&&(ne.S?ne.W.Y(ne.S):ne.P.M.Y(ne.O))}),Ft=ne=>{var Ee=ne.L;return Ee.S&&Si.register(ne,{L:Ee},ne),ne},gi=ne=>{Si.unregister(ne)},Ft(oe));function St(){}var oi=(oe,ne)=>Object.defineProperty(ne,"name",{value:oe}),Et={},Lo=(oe,ne,Ee)=>{if(oe[ne].R===void 0){var be=oe[ne];oe[ne]=function(...We){if(!oe[ne].R.hasOwnProperty(We.length))throw new tt(`Function '${Ee}' called with an invalid number of arguments (${We.length}) - expects one of (${oe[ne].R})!`);return oe[ne].R[We.length].apply(this,We)},oe[ne].R=[],oe[ne].R[be.aa]=be}},Ho=(oe,ne,Ee)=>{if(i.hasOwnProperty(oe)){if(Ee===void 0||i[oe].R!==void 0&&i[oe].R[Ee]!==void 0)throw new tt(`Cannot register public name '${oe}' twice`);if(Lo(i,oe,oe),i[oe].R.hasOwnProperty(Ee))throw new tt(`Cannot register multiple overloads of a function with the same number of arguments (${Ee})!`);i[oe].R[Ee]=ne}else i[oe]=ne,i[oe].aa=Ee},Pa=oe=>{oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ne=oe.charCodeAt(0);return 48<=ne&&57>=ne?`_${oe}`:oe};function Er(oe,ne,Ee,be,We,At,ut,xt){this.name=oe,this.constructor=ne,this.$=Ee,this.Y=be,this.U=We,this.ra=At,this.ea=ut,this.pa=xt,this.ya=[]}var Lr=(oe,ne,Ee)=>{for(;ne!==Ee;){if(!ne.ea)throw new tt(`Expected null or instance of ${Ee.name}, got an instance of ${ne.name}`);oe=ne.ea(oe),ne=ne.U}return oe},Fe=oe=>{if(oe===null)return"null";var ne=typeof oe;return ne==="object"||ne==="array"||ne==="function"?oe.toString():""+oe};function lt(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);return Lr(ne.L.O,ne.L.P.M,this.M)}function Xe(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);if(this.ga){var Ee=this.ia();return oe!==null&&oe.push(this.Y,Ee),Ee}return 0}if(!ne||!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);if(Ee=Lr(ne.L.O,ne.L.P.M,this.M),this.ga){if(ne.L.S===void 0)throw new tt("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(ne.L.W===this)Ee=ne.L.S;else throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);break;case 1:Ee=ne.L.S;break;case 2:if(ne.L.W===this)Ee=ne.L.S;else{var be=ne.clone();Ee=this.za(Ee,ps(()=>be.delete())),oe!==null&&oe.push(this.Y,Ee)}break;default:throw new tt("Unsupporting sharing policy")}}return Ee}function et(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.P.name} to parameter type ${this.name}`);return Lr(ne.L.O,ne.L.P.M,this.M)}var gt=(oe,ne,Ee)=>ne===Ee?oe:Ee.U===void 0?null:(oe=gt(oe,ne,Ee.U),oe===null?null:Ee.pa(oe)),Jt={},bn=(oe,ne)=>{if(ne===void 0)throw new tt("ptr should not be undefined");for(;oe.U;)ne=oe.ea(ne),oe=oe.U;return Jt[ne]},ho=(oe,ne)=>{if(!ne.P||!ne.O)throw new ke("makeClassHandle requires ptr and ptrType");if(!!ne.W!=!!ne.S)throw new ke("Both smartPtrType and smartPtr must be specified");return ne.count={value:1},Ft(Object.create(oe,{L:{value:ne,writable:!0}}))};function lo(oe,ne,Ee,be,We,At,ut,xt,vn,jn,dn){this.name=oe,this.M=ne,this.ha=Ee,this.fa=be,this.ga=We,this.xa=At,this.Da=ut,this.na=xt,this.ia=vn,this.za=jn,this.Y=dn,We||ne.U!==void 0?this.T=Xe:(this.T=be?lt:et,this.V=null)}var sa=(oe,ne,Ee)=>{if(!i.hasOwnProperty(oe))throw new ke("Replacing nonexistent public symbol");i[oe].R!==void 0&&Ee!==void 0?i[oe].R[Ee]=ne:(i[oe]=ne,i[oe].aa=Ee)},aa,Wn=(oe,ne)=>{oe=Ke(oe);var Ee=aa.get(ne);if(typeof Ee!="function")throw new tt(`unknown function pointer with signature ${oe}: ${ne}`);return Ee};class bi extends Error{}var vs=oe=>{oe=_te(oe);var ne=Ke(oe);return h_(oe),ne},Xo=(oe,ne)=>{function Ee(At){We[At]||ve[At]||(Te[At]?Te[At].forEach(Ee):(be.push(At),We[At]=!0))}var be=[],We={};throw ne.forEach(Ee),new bi(`${oe}: `+be.map(vs).join([", "]))},Ra=(oe,ne)=>{for(var Ee=[],be=0;be<oe;be++)Ee.push(M[ne+4*be>>2]);return Ee};function mo(oe){for(var ne=1;ne<oe.length;++ne)if(oe[ne]!==null&&oe[ne].V===void 0)return!0;return!1}function Jo(oe,ne,Ee,be,We,At){var ut=ne.length;if(2>ut)throw new tt("argTypes array size mismatch! Must at least get return value and 'this' types!");var xt=ne[1]!==null&&Ee!==null,vn=mo(ne);Ee=!ne[0].ma;var jn=ne[0],dn=ne[1];for(be=[oe,en,be,We,fe,jn.N.bind(jn),dn?.T.bind(dn)],We=2;We<ut;++We)jn=ne[We],be.push(jn.T.bind(jn));if(!vn)for(We=xt?1:2;We<ne.length;++We)ne[We].V!==null&&be.push(ne[We].V);for(vn=mo(ne),We=ne.length-2,dn=[],jn=["fn"],xt&&jn.push("thisWired"),ut=0;ut<We;++ut)dn.push(`arg${ut}`),jn.push(`arg${ut}Wired`);dn=dn.join(","),jn=jn.join(","),dn=`return function (${dn}) { +`,vn&&(dn+=`var destructors = []; +`);var gs=vn?"destructors":"null",Nu="humanName throwBindingError invoker fn runDestructors fromRetWire toClassParamWire".split(" ");for(xt&&(dn+=`var thisWired = toClassParamWire(${gs}, this); +`),ut=0;ut<We;++ut){var rl=`toArg${ut}Wire`;dn+=`var arg${ut}Wired = ${rl}(${gs}, arg${ut}); +`,Nu.push(rl)}if(dn+=(Ee||At?"var rv = ":"")+`invoker(${jn}); +`,vn)dn+=`runDestructors(destructors); +`;else for(ut=xt?1:2;ut<ne.length;++ut)At=ut===1?"thisWired":"arg"+(ut-2)+"Wired",ne[ut].V!==null&&(dn+=`${At}_dtor(${At}); +`,Nu.push(`${At}_dtor`));return Ee&&(dn+=`var ret = fromRetWire(rv); +return ret; +`),ne=new Function(Nu,dn+`} +`)(...be),oi(oe,ne)}for(var Uf=oe=>{oe=oe.trim();let ne=oe.indexOf("(");return ne===-1?oe:oe.slice(0,ne)},Ir=[],Ps=[0,1,,1,null,1,!0,1,!1,1],Ws=oe=>{9<oe&&--Ps[oe+1]===0&&(Ps[oe]=void 0,Ir.push(oe))},eh=oe=>{if(!oe)throw new tt(`Cannot use deleted val. handle = ${oe}`);return Ps[oe]},ps=oe=>{switch(oe){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let ne=Ir.pop()||Ps.length;return Ps[ne]=oe,Ps[ne+1]=1,ne}},ic={name:"emscripten::val",N:oe=>{var ne=eh(oe);return Ws(oe),ne},T:(oe,ne)=>ps(ne),X:ye,V:null},oc=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?function(be){return this.N(b[be])}:function(be){return this.N(S[be])};case 2:return Ee?function(be){return this.N(B[be>>1])}:function(be){return this.N(v[be>>1])};case 4:return Ee?function(be){return this.N(P[be>>2])}:function(be){return this.N(M[be>>2])};default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Or=(oe,ne)=>{var Ee=ve[oe];if(Ee===void 0)throw oe=`${ne} has unknown type ${vs(oe)}`,new tt(oe);return Ee},ql=(oe,ne)=>{switch(ne){case 4:return function(Ee){return this.N(L[Ee>>2])};case 8:return function(Ee){return this.N(p[Ee>>3])};default:throw new TypeError(`invalid float width (${ne}): ${oe}`)}},Kl=Object.assign({optional:!0},ic),ca=(oe,ne,Ee)=>{var be=S;if(!(0<Ee))return 0;var We=ne;Ee=ne+Ee-1;for(var At=0;At<oe.length;++At){var ut=oe.codePointAt(At);if(127>=ut){if(ne>=Ee)break;be[ne++]=ut}else if(2047>=ut){if(ne+1>=Ee)break;be[ne++]=192|ut>>6,be[ne++]=128|ut&63}else if(65535>=ut){if(ne+2>=Ee)break;be[ne++]=224|ut>>12,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63}else{if(ne+3>=Ee)break;be[ne++]=240|ut>>18,be[ne++]=128|ut>>12&63,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63,At++}}return be[ne]=0,ne-We},vo=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee){var be=oe.charCodeAt(Ee);127>=be?ne++:2047>=be?ne+=2:55296<=be&&57343>=be?(ne+=4,++Ee):ne+=3}return ne},un=new TextDecoder,Se=(oe,ne,Ee,be)=>{if(Ee=ne+Ee,be)return Ee;for(;oe[ne]&&!(ne>=Ee);)++ne;return ne},wt=new TextDecoder("utf-16le"),_n=(oe,ne,Ee)=>(oe>>=1,wt.decode(v.subarray(oe,Se(v,oe,ne/2,Ee)))),rr=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),2>Ee)return 0;Ee-=2;var be=ne;Ee=Ee<2*oe.length?Ee/2:oe.length;for(var We=0;We<Ee;++We)B[ne>>1]=oe.charCodeAt(We),ne+=2;return B[ne>>1]=0,ne-be},Ma=oe=>2*oe.length,Rs=(oe,ne,Ee)=>{var be="";oe>>=2;for(var We=0;!(We>=ne/4);We++){var At=M[oe+We];if(!At&&!Ee)break;be+=String.fromCodePoint(At)}return be},bc=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),4>Ee)return 0;var be=ne;Ee=be+Ee-4;for(var We=0;We<oe.length;++We){var At=oe.codePointAt(We);if(65535<At&&We++,P[ne>>2]=At,ne+=4,ne+4>Ee)break}return P[ne>>2]=0,ne-be},th=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee)65535<oe.codePointAt(Ee)&&Ee++,ne+=4;return ne},WA=[],aB=oe=>{var ne=WA.length;return WA.push(oe),ne},Na=(oe,ne)=>{for(var Ee=Array(oe),be=0;be<oe;++be)Ee[be]=Or(M[ne+4*be>>2],`parameter ${be}`);return Ee},UU=(oe,ne,Ee)=>{var be=[];return oe=oe(be,Ee),be.length&&(M[ne>>2]=ps(be)),oe},GU={},Xwe=oe=>{var ne=GU[oe];return ne===void 0?Ke(oe):ne},n9={},gte=()=>{if(!i9){var oe={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},ne;for(ne in n9)n9[ne]===void 0?delete oe[ne]:oe[ne]=n9[ne];var Ee=[];for(ne in oe)Ee.push(`${ne}=${oe[ne]}`);i9=Ee}return i9},i9,Jwe=[null,[],[]],jA=new Uint8Array(123),d_=25;0<=d_;--d_)jA[48+d_]=52+d_,jA[65+d_]=d_,jA[97+d_]=26+d_;jA[43]=62,jA[47]=63,(()=>{let oe=St.prototype;Object.assign(oe,{isAliasOf:function(Ee){if(!(this instanceof St&&Ee instanceof St))return!1;var be=this.L.P.M,We=this.L.O;Ee.L=Ee.L;var At=Ee.L.P.M;for(Ee=Ee.L.O;be.U;)We=be.ea(We),be=be.U;for(;At.U;)Ee=At.ea(Ee),At=At.U;return be===At&&We===Ee},clone:function(){if(this.L.O||Rt(this),this.L.da)return this.L.count.value+=1,this;var Ee=Ft,be=Object,We=be.create,At=Object.getPrototypeOf(this),ut=this.L;return Ee=Ee(We.call(be,At,{L:{value:{count:ut.count,ba:ut.ba,da:ut.da,O:ut.O,P:ut.P,S:ut.S,W:ut.W}}})),Ee.L.count.value+=1,Ee.L.ba=!1,Ee},delete(){if(this.L.O||Rt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");gi(this);var Ee=this.L;--Ee.count.value,Ee.count.value===0&&(Ee.S?Ee.W.Y(Ee.S):Ee.P.M.Y(Ee.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||Rt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");return this.L.ba=!0,this}});let ne=Symbol.dispose;ne&&(oe[ne]=oe.delete)})(),Object.assign(lo.prototype,{sa(oe){return this.na&&(oe=this.na(oe)),oe},ka(oe){var ne;(ne=this.Y)==null||ne.call(this,oe)},X:ye,N:function(oe){function ne(){return this.ga?ho(this.M.$,{P:this.xa,O:Ee,W:this,S:oe}):ho(this.M.$,{P:this,O:oe})}var Ee=this.sa(oe);if(!Ee)return this.ka(oe),null;var be=bn(this.M,Ee);if(be!==void 0)return be.L.count.value===0?(be.L.O=Ee,be.L.S=oe,be.clone()):(be=be.clone(),this.ka(oe),be);if(be=this.M.ra(Ee),be=Et[be],!be)return ne.call(this);be=this.fa?be.oa:be.pointerType;var We=gt(Ee,this.M,be.M);return We===null?ne.call(this):this.ga?ho(be.M.$,{P:be,O:We,W:this,S:oe}):ho(be.M.$,{P:be,O:We})}}),i.print&&(A=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(m=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var _te,o9,h_,Zwe={x:()=>Q(""),q:oe=>{var ne=ge[oe];delete ge[oe];var Ee=ne.ia,be=ne.Y,We=ne.la,At=We.map(ut=>ut.va).concat(We.map(ut=>ut.Ba));Ge([oe],At,ut=>{var xt={};return We.forEach((vn,jn)=>{var dn=ut[jn],gs=vn.ta,Nu=vn.ua,rl=ut[jn+We.length],sl=vn.Aa,Gf=vn.Ca;xt[vn.qa]={read:YA=>dn.N(gs(Nu,YA)),write:(YA,cB)=>{var Lu=[];sl(Gf,YA,rl.T(Lu,cB)),fe(Lu)},optional:ut[jn].optional}}),[{name:ne.name,N:vn=>{var jn={},dn;for(dn in xt)jn[dn]=xt[dn].read(vn);return be(vn),jn},T:(vn,jn)=>{for(var dn in xt)if(!(dn in jn||xt[dn].optional))throw new TypeError(`Missing field: "${dn}"`);var gs=Ee();for(dn in xt)xt[dn].write(gs,jn[dn]);return vn!==null&&vn.push(be,gs),gs},X:ye,V:be}]})},n:(oe,ne,Ee,be,We)=>{ne=Ke(ne),be=be===0n;let At=ut=>ut;if(be){let ut=8*Ee;At=xt=>BigInt.asUintN(ut,xt),We=At(We)}nn(oe,{name:ne,N:At,T:(ut,xt)=>(typeof xt=="number"&&(xt=BigInt(xt)),xt),X:qt(ne,Ee,!be),V:null})},B:(oe,ne,Ee,be)=>{ne=Ke(ne),nn(oe,{name:ne,N:function(We){return!!We},T:function(We,At){return At?Ee:be},X:function(We){return this.N(S[We])},V:null})},j:(oe,ne,Ee,be,We,At,ut,xt,vn,jn,dn,gs,Nu)=>{dn=Ke(dn),At=Wn(We,At),xt&&(xt=Wn(ut,xt)),jn&&(jn=Wn(vn,jn)),Nu=Wn(gs,Nu);var rl=Pa(dn);Ho(rl,function(){Xo(`Cannot construct ${dn} due to unbound types`,[be])}),Ge([oe,ne,Ee],be?[be]:[],sl=>{if(sl=sl[0],be)var Gf=sl.M,YA=Gf.$;else YA=St.prototype;sl=oi(dn,function(...s9){if(Object.getPrototypeOf(this)!==cB)throw new tt(`Use 'new' to construct ${dn}`);if(Lu.Z===void 0)throw new tt(`${dn} has no accessible constructor`);var yte=Lu.Z[s9.length];if(yte===void 0)throw new tt(`Tried to invoke ctor of ${dn} with invalid number of parameters (${s9.length}) - expected (${Object.keys(Lu.Z).toString()}) parameters instead!`);return yte.apply(this,s9)});var cB=Object.create(YA,{constructor:{value:sl}});sl.prototype=cB;var Lu=new Er(dn,sl,cB,Nu,Gf,At,xt,jn);if(Lu.U){var lB;(lB=Lu.U).ja??(lB.ja=[]),Lu.U.ja.push(Lu)}return Gf=new lo(dn,Lu,!0,!1,!1),lB=new lo(dn+"*",Lu,!1,!1,!1),YA=new lo(dn+" const*",Lu,!1,!0,!1),Et[oe]={pointerType:lB,oa:YA},sa(rl,sl),[Gf,lB,YA]})},g:(oe,ne,Ee,be,We,At)=>{var ut=Ra(ne,Ee);We=Wn(be,We),Ge([],[oe],xt=>{xt=xt[0];var vn=`constructor ${xt.name}`;if(xt.M.Z===void 0&&(xt.M.Z=[]),xt.M.Z[ne-1]!==void 0)throw new tt(`Cannot register multiple constructors with identical number of parameters (${ne-1}) for class '${xt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return xt.M.Z[ne-1]=()=>{Xo(`Cannot construct ${xt.name} due to unbound types`,ut)},Ge([],ut,jn=>(jn.splice(1,0,null),xt.M.Z[ne-1]=Jo(vn,jn,null,We,At),[])),[]})},b:(oe,ne,Ee,be,We,At,ut,xt,vn)=>{var jn=Ra(Ee,be);ne=Ke(ne),ne=Uf(ne),At=Wn(We,At),Ge([],[oe],dn=>{function gs(){Xo(`Cannot call ${Nu} due to unbound types`,jn)}dn=dn[0];var Nu=`${dn.name}.${ne}`;ne.startsWith("@@")&&(ne=Symbol[ne.substring(2)]),xt&&dn.M.ya.push(ne);var rl=dn.M.$,sl=rl[ne];return sl===void 0||sl.R===void 0&&sl.className!==dn.name&&sl.aa===Ee-2?(gs.aa=Ee-2,gs.className=dn.name,rl[ne]=gs):(Lo(rl,ne,Nu),rl[ne].R[Ee-2]=gs),Ge([],jn,Gf=>(Gf=Jo(Nu,Gf,dn,At,ut,vn),rl[ne].R===void 0?(Gf.aa=Ee-2,rl[ne]=Gf):rl[ne].R[Ee-2]=Gf,[])),[]})},z:oe=>nn(oe,ic),r:(oe,ne,Ee,be)=>{function We(){}ne=Ke(ne),We.values={},nn(oe,{name:ne,constructor:We,N:function(At){return this.constructor.values[At]},T:(At,ut)=>ut.value,X:oc(ne,Ee,be),V:null}),Ho(ne,We)},d:(oe,ne,Ee)=>{var be=Or(oe,"enum");ne=Ke(ne),oe=be.constructor,be=Object.create(be.constructor.prototype,{value:{value:Ee},constructor:{value:oi(`${be.name}_${ne}`,function(){})}}),oe.values[Ee]=be,oe[ne]=be},m:(oe,ne,Ee)=>{ne=Ke(ne),nn(oe,{name:ne,N:be=>be,T:(be,We)=>We,X:ql(ne,Ee),V:null})},l:(oe,ne,Ee,be,We,At,ut)=>{var xt=Ra(ne,Ee);oe=Ke(oe),oe=Uf(oe),We=Wn(be,We),Ho(oe,function(){Xo(`Cannot call ${oe} due to unbound types`,xt)},ne-1),Ge([],xt,vn=>(vn=[vn[0],null].concat(vn.slice(1)),sa(oe,Jo(oe,vn,null,We,At,ut),ne-1),[]))},c:(oe,ne,Ee,be,We)=>{ne=Ke(ne);let At=xt=>xt;if(be===0){var ut=32-8*Ee;At=xt=>xt<<ut>>>ut,We=At(We)}nn(oe,{name:ne,N:At,T:(xt,vn)=>vn,X:qt(ne,Ee,be!==0),V:null})},a:(oe,ne,Ee)=>{function be(At){return new We(b.buffer,M[At+4>>2],M[At>>2])}var We=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][ne];Ee=Ke(Ee),nn(oe,{name:Ee,N:be,X:be},{wa:!0})},h:oe=>{nn(oe,Kl)},A:(oe,ne)=>{ne=Ke(ne),nn(oe,{name:ne,N(Ee){var be=(be=Ee+4)?un.decode(S.subarray(be,Se(S,be,M[Ee>>2],!0))):"";return h_(Ee),be},T(Ee,be){be instanceof ArrayBuffer&&(be=new Uint8Array(be));var We=typeof be=="string";if(!(We||ArrayBuffer.isView(be)&&be.BYTES_PER_ELEMENT==1))throw new tt("Cannot pass non-string to std::string");var At=We?vo(be):be.length,ut=o9(4+At+1),xt=ut+4;return M[ut>>2]=At,We?ca(be,xt,At+1):S.set(be,xt),Ee!==null&&Ee.push(h_,ut),ut},X:ye,V(Ee){h_(Ee)}})},f:(oe,ne,Ee)=>{if(Ee=Ke(Ee),ne===2)var be=_n,We=rr,At=Ma;else be=Rs,We=bc,At=th;nn(oe,{name:Ee,N:ut=>{var xt=be(ut+4,M[ut>>2]*ne,!0);return h_(ut),xt},T:(ut,xt)=>{if(typeof xt!="string")throw new tt(`Cannot pass non-string to C++ string type ${Ee}`);var vn=At(xt),jn=o9(4+vn+ne);return M[jn>>2]=vn/ne,We(xt,jn+4,vn+ne),ut!==null&&ut.push(h_,jn),jn},X:ye,V(ut){h_(ut)}})},i:(oe,ne,Ee,be,We,At)=>{ge[oe]={name:Ke(ne),ia:Wn(Ee,be),Y:Wn(We,At),la:[]}},e:(oe,ne,Ee,be,We,At,ut,xt,vn,jn)=>{ge[oe].la.push({qa:Ke(ne),va:Ee,ta:Wn(be,We),ua:At,Ba:ut,Aa:Wn(xt,vn),Ca:jn})},C:(oe,ne)=>{ne=Ke(ne),nn(oe,{ma:!0,name:ne,N:()=>{},T:()=>{}})},p:(oe,ne,Ee)=>{var[be,...We]=Na(oe,ne);ne=be.T.bind(be);var At=We.map(vn=>vn.X.bind(vn));oe--;var ut={toValue:eh};switch(oe=At.map((vn,jn)=>{var dn=`argFromPtr${jn}`;return ut[dn]=vn,`${dn}(args${jn?"+"+8*jn:""})`}),Ee){case 0:var xt="toValue(handle)";break;case 2:xt="new (toValue(handle))";break;case 3:xt="";break;case 1:ut.getStringOrSymbol=Xwe,xt="toValue(handle)[getStringOrSymbol(methodName)]"}return xt+=`(${oe})`,be.ma||(ut.toReturnWire=ne,ut.emval_returnValue=UU,xt=`return emval_returnValue(toReturnWire, destructorsRef, ${xt})`),xt=`return function (handle, methodName, destructorsRef, args) { + ${xt} + }`,Ee=new Function(Object.keys(ut),xt)(...Object.values(ut)),xt=`methodCaller<(${We.map(vn=>vn.name)}) => ${be.name}>`,aB(oi(xt,Ee))},E:Ws,o:(oe,ne,Ee,be,We)=>WA[oe](ne,Ee,be,We),D:oe=>{var ne=eh(oe);fe(ne),Ws(oe)},s:(oe,ne,Ee,be)=>{var We=new Date().getFullYear(),At=new Date(We,0,1).getTimezoneOffset();We=new Date(We,6,1).getTimezoneOffset(),M[oe>>2]=60*Math.max(At,We),P[ne>>2]=+(At!=We),ne=ut=>{var xt=Math.abs(ut);return`UTC${0<=ut?"-":"+"}${String(Math.floor(xt/60)).padStart(2,"0")}${String(xt%60).padStart(2,"0")}`},oe=ne(At),ne=ne(We),We<At?(ca(oe,Ee,17),ca(ne,be,17)):(ca(oe,be,17),ca(ne,Ee,17))},y:oe=>{var ne=S.length;if(oe>>>=0,2147483648<oe)return!1;for(var Ee=1;4>=Ee;Ee*=2){var be=ne*(1+.2/Ee);be=Math.min(be,oe+100663296);e:{be=(Math.min(2147483648,65536*Math.ceil(Math.max(oe,be)/65536))-I.buffer.byteLength+65535)/65536|0;try{I.grow(be),R();var We=1;break e}catch{}We=void 0}if(We)return!0}return!1},t:(oe,ne)=>{var Ee=0,be=0,We;for(We of gte()){var At=ne+Ee;M[oe+be>>2]=At,Ee+=ca(We,At,1/0)+1,be+=4}return 0},u:(oe,ne)=>{var Ee=gte();M[oe>>2]=Ee.length,oe=0;for(var be of Ee)oe+=vo(be)+1;return M[ne>>2]=oe,0},v:()=>52,w:function(){return 70},k:(oe,ne,Ee,be)=>{for(var We=0,At=0;At<Ee;At++){var ut=M[ne>>2],xt=M[ne+4>>2];ne+=8;for(var vn=0;vn<xt;vn++){var jn=oe,dn=S[ut+vn],gs=Jwe[jn];dn===0||dn===10?(jn=jn===1?A:g,dn=Se(gs,0),dn=un.decode(gs.buffer?gs.subarray(0,dn):new Uint8Array(gs.slice(0,dn))),jn(dn),gs.length=0):gs.push(dn)}We+=xt}return M[be>>2]=We,0}},Nx=await async function(){var oe;function ne(be){var We;return Nx=be.exports,I=Nx.F,R(),aa=Nx.H,be=Nx,_te=be.I,i._malloc=o9=be.J,i._free=h_=be.K,O--,(We=i.monitorRunDependencies)==null||We.call(i,O),O==0&&k&&(be=k,k=null,be()),Nx}O++,(oe=i.monitorRunDependencies)==null||oe.call(i,O);var Ee={a:Zwe};return i.instantiateWasm?new Promise(be=>{i.instantiateWasm(Ee,(We,At)=>{be(ne(We))})}):(z??(z=he("AGFzbQEAAAAB2QM5YAF/AX9gAn9/AGABfwBgA39/fwF/YAJ/fwF/YAN/f38AYAZ/f39/f38Bf2AFf39/f38Bf2AEf39/fwBgBH9/f38Bf2AGf39/f39/AGAFf39/f38AYAAAYAh/f39/f39/fwF/YAd/f39/f39/AX9gAAF/YAV/fn5+fgBgCn9/f39/f39/f38AYAd/f39/f39/AGAFf39/f34Bf2AIf39/f39/f38AYAR/fn5/AGADf35/AX5gBX9/fn9/AGACf34AYAp/f39/f39/f39/AX9gDH9/f39/f39/f39/fwF/YAN/f38BfmAGf39/f35/AX9gD39/f39/f39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAGf3x/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/f398AX9gDX9/f39/f39/f39/f38AYAV/f39+fgBgBX9/f39/AXxgBH9+f38Bf2ACf3wAYAR+fn5+AX9gAn5/AX9gBH9/f34BfmACfn4BfGABfwF8YAN/f38BfGADf39/AX1gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2ACfH8BfGAEf39/fQF/YAR/f399AGADf399AAK7AR8BYQFhAAUBYQFiABEBYQFjAAsBYQFkAAUBYQFlABEBYQFmAAUBYQFnAAoBYQFoAAEBYQFpAAoBYQFqACQBYQFrAAkBYQFsABQBYQFtAAUBYQFuACUBYQFvACYBYQFwAAMBYQFxAAIBYQFyAAgBYQFzAAgBYQF0AAQBYQF1AAQBYQF2AAABYQF3ACcBYQF4AAwBYQF5AAABYQF6AAIBYQFBAAEBYQFCAAgBYQFDAAEBYQFEAAIBYQFFAAIDjQWLBQAAAQQAAAIAAQABAQQEAg8QAgAEBQACAwAAAAIDAQwAABAEBQgVCwAAAAAQBAAFAAEBAwQAAAQBAQEAAAwBAQADAwACBBgFBQcHAwAAKA0NCAEDAQABAAQAAAgEAQEAAAwGBAQBAQYDKQUAFQMMAAQBAAEBBQQEBwMZABkAAQABAAQBBAABACoBAAEHAQAFBAUBAAgDBAIECwEUAgIBAAACCQABBAAACQEJAwcIBA4EDgQJCQQAAQABAAACAQQAAgADAgAGAQoFCAQFAQwAAAMBBAAABAsEAgACAxoLAAMaCwgCGwArAQAJEAAEAgIDAgAABBgBACwEAQUtAQIMAAgCBBwGHAYACQkBBAwIAwECFAUFBQAEBAIABQACBQ8FAwUFAAIAAAcNDQcNDQUABw0EAAQCAgIBAAIBAQIAAwMdEQMBHREAAAADCwEeAQAABQEeAQEBCgsKCgsKCg8AAxICEgcJBxIJBwkHCRIDBgMILgwvHwkGCR8JAQUbCQAABwQCAAQEAzAxMggQEBUzNAEAAAAAAAMEAAEFAQUBAAACAQgCBAAAAgICBAAMAgQDCAAOBzUAAQMAAAkDCAU2Azc4CgoKCwsLAwgICAMCDwIAAgACAAIAAgUAAgACAAIAAgACBAACAAIAAgACAAUBAQEBAQEAAAIEAgAHAAcNDQIHBwMJAwQDBAIHAwkDBAMEAgkJCQMCAg8DCgoGIQUGIQUODgEADg4DDg4NBQYGBgYGBQ0GBgYGBgciIxMHEwcHAAciBCMTBxMJBwcGBgYGBgYGBgYGBgYGBgAGBgYIAQYDCAcDCAcDAwICAAIACAIXBAQAAAACAgAAAgACAAMAAAMIFwMCABYBIBYDDAQHAXABgAOAAwUHAQGCAoCAAgYIAX8BQfD+BQsHGwYBRgIAAUcAqQUBSAEAAUkA1gMBSgA0AUsALQm/BQEAQQEL/wKQA/sE9wTmBOEE3gT/AvsC/ATPBGvJBMUEwgT/AvsCwQS+BNcDuwS2BLUErgTPAssClQSLBIEE9gPsAzDPAssCpQLfA94DoALdA9wDpQLbA9oDoALZA9gDnALVA9QDRqgFpwWmBaUFlAKiBZMCoQWgBZ8FRkaeBZ0FnAXIA5sFyAOQAsYDmgWZBY8CwQOYBZcF2AGOApYFlAWVBZMF/AGMBY0FiwWQBY8FjgWxAYwCigWJBYgFhwWJAoYFhQWEBS3hAdICiQSHBIUEgwSABP4D/AP6A/gD9QPzA/ED7wPtA9YCtASzBNACpgSlBKQEowSiBNECoQSgBJ8E2wKdBJwEmwSaBJkERpgElwTEApYEkwSSBJEEjwSNBMMClASSBZEFkASOBIwEiQEwMLIEsQSwBK8ErQSsBKsEqgTRAqkEqASnBDDOAs4CqgHiAeIBngTiATDKAskCqgFGRsgCvgEwygLJAqoBRkbIAr4BMMcCxgKqAUZGxQK+ATDHAsYCqgFGRsUCvgGJATCDBYIFgQWJATCABf8E/gQw/QT6BPkE+ASUA5QD9gT1BPQE8wTyBDDxBPAE7wTuBIwDjAPtBOwE6wTqBOkEMOgE5wTlBOQE4wTiBOAE3wQw3QTcBNsE2gTZBNgE1wTWBIkBMPwC1QTUBNME0gTRBNAEigSGBIIE9APwA/0D+QOJATD8As4EzQTMBMsEygTIBIgEhAT/A/ID7gP7A/cD7QHCAscE7QHCAsYEMMUBxQFXV1fyAkZ0dDDFAcUBV1dX8gJGdHQwxAHEAVdXV/ECRnR0MMQBxAFXV1fxAkZ0dDDEBMMEMMAEvwQwvQS8BDC6BLkEMNwCuASTAjDcArcEkwKJAesD6wGjBaQFiQEw4QHhAawCMKwCMOoD4APjA+kDMOED5APoAzDiA+UD5wMw5gMMASoKwLAIiwUTACAAEEcEQCAAKAIEDwsgABBeCxoBAX8gABBHBEAgACgCACAAEH4aEIsCCyAAC4sBAQN/IAAQHyICIAFJBEAjAEEQayIEJAAgASACayICBEAgAiAAECgiAyAAEB8iAWtLBEAgACADIAIgA2sgAWogASABEPQBCyABIAAQIyIDaiACQQAQsgIgACABIAJqIgAQgwEgBEEAOgAPIAAgA2ogBEEPahBdCyAEQRBqJAAPCyAAIAAQIyABEMACCwkAIAAQIyABagsRACAAEEcEQCAAKAIADwsgAAsSACAAQgA3AgAgAEEANgIIIAALFgAgACgCACIAQaDxAUcEQCAAEL8BCwuLAgIDfwJ+AkAgACkDcCIEUEUgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQyQMNACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADCwwAIAAgAUEcahDVAgsZAQF/QQohASAAEEcEfyAAEH5BAWsFQQoLC3kBA38CQCABELcCIQIgABDxASEDIAAQHyEEIAIgA00EQCAAECMiAyABIAIQZSMAQRBrIgEkACAAEB8aIAAgAhCDASABQQA2AgwgAyACQQJ0aiABQQxqEFYgAUEQaiQADAELIAAgAyACIANrIARBACAEIAIgARCvAgsLDgAgACABIAEQqAEQsQILEAAgABCyAyABELIDc0EBcwsQACAAELMDIAEQswNzQQFzC4EMAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0Gc6gEoAgBJDQEgACAEaiEAAkACQAJAQaDqASgCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAygCGCEHIAEgA0cEQCADKAIIIgIgATYCDCABIAI2AggMBAsgAygCFCICBH8gA0EUagUgAygCECICRQ0DIANBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBlOoBIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdCICKAK87AEgA0YEQCACQbzsAWogATYCACABDQFBkOoBQZDqASgCAEF+IAR3cTYCAAwCCwJAIAMgBygCEEYEQCAHIAE2AhAMAQsgByABNgIUCyABRQ0BCyABIAc2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgBU8NACAFKAIEIgRBAXFFDQACQAJAAkACQCAEQQJxRQRAQaTqASgCACAFRgRAQaTqASADNgIAQZjqAUGY6gEoAgAgAGoiADYCACADIABBAXI2AgQgA0Gg6gEoAgBHDQZBlOoBQQA2AgBBoOoBQQA2AgAPC0Gg6gEoAgAiByAFRgRAQaDqASADNgIAQZTqAUGU6gEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnQiAigCvOwBIAVGBEAgAkG87AFqIAE2AgAgAQ0BQZDqAUGQ6gEoAgBBfiAEd3E2AgAMAgsCQCAFIAgoAhBGBEAgCCABNgIQDAELIAggATYCFAsgAUUNAQsgASAINgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIAMgB0cNAEGU6gEgADYCAA8LIABB/wFNBEAgAEF4cUG06gFqIQICf0GM6gEoAgAiBEEBIABBA3Z0IgBxRQRAQYzqASAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QbzsAWohBAJ/AkACf0GQ6gEoAgAiBkEBIAF0IgJxRQRAQZDqASACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBBrOoBQazqASgCAEEBayIAQX8gABs2AgALC+kCAQZ/QZzxAS0AAARAQZjxASgCAA8LIwBBIGsiAiQAAkACQANAIAJBCGoiBCAAQQJ0IgNqAn9BASAAdEH/////B3EiBUEBckUEQCADKAIADAELIABBjBZBxh8gBRsQogMLIgM2AgAgA0F/Rg0BIABBAWoiAEEGRw0AC0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkGU6gEoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEG06gFqIgIgACgCvOoBIgAoAggiBUYEQEGM6gEgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQbTqAWohAUGg6gEoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEGM6gEgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBBoOoBIAc2AgBBlOoBIAU2AgAMCwtBkOoBKAIAIgtFDQEgC2hBAnQoArzsASICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQZDqASgCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdCgCvOwBIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0KAK87AEhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBlOoBKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkGU6gEoAgAiBU0EQEGg6gEoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQZTqASABNgIAQaDqASACNgIAIABBCGohAAwJCyAGQZjqASgCACICSQRAQZjqASACIAZrIgE2AgBBpOoBQaTqASgCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QeTtASgCAARAQeztASgCAAwBC0Hw7QFCfzcCAEHo7QFCgKCAgICABDcCAEHk7QEgCkEMakFwcUHYqtWqBXM2AgBB+O0BQQA2AgBByO0BQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBxO0BKAIAIgUEQEG87QEoAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBByO0BLQAAQQRxRQRAAkACQAJAAkBBpOoBKAIAIgUEQEHM7QEhAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEKUBIgJBf0YNAyABIQRB6O0BKAIAIgBBAWsiBSACcQRAIAEgAmsgAiAFakEAIABrcWohBAsgBCAGTQ0DQcTtASgCACIABEBBvO0BKAIAIgUgBGoiByAFTSAAIAdJcg0ECyAEEKUBIgAgAkcNAQwFCyAEIAJrIAdxIgQQpQEiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtB7O0BKAIAIgIgAyAEa2pBACACa3EiAhClAUF/Rg0BIAIgBGohBCAAIQIMAwsgAkF/Rw0CC0HI7QFByO0BKAIAQQRyNgIACyABEKUBIgJBf0ZBABClASIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0G87QFBvO0BKAIAIARqIgA2AgBBwO0BKAIAIABJBEBBwO0BIAA2AgALAkBBpOoBKAIAIgMEQEHM7QEhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQZzqASgCACIAQQAgACACTRtFBEBBnOoBIAI2AgALQQAhAEHQ7QEgBDYCAEHM7QEgAjYCAEGs6gFBfzYCAEGw6gFB5O0BKAIANgIAQdjtAUEANgIAA0AgAEEDdCIBIAFBtOoBaiIFNgK86gEgASAFNgLA6gEgAEEBaiIAQSBHDQALQZjqASAEQShrIgBBeCACa0EHcSIBayIFNgIAQaTqASABIAJqIgE2AgAgASAFQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQaTqASADQXggA2tBB3EiAGoiATYCAEGY6gFBmOoBKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQajqAUH07QEoAgA2AgAMAwtBACEADAYLQQAhAAwEC0Gc6gEoAgAgAksEQEGc6gEgAjYCAAsgAiAEaiEFQcztASEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBzO0BIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQZjqASAEQShrIgBBeCACa0EHcSIBayIHNgIAQaTqASABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQdTtASkCADcCECABQcztASkCADcCCEHU7QEgAUEIajYCAEHQ7QEgBDYCAEHM7QEgAjYCAEHY7QFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBtOoBaiEAAn9BjOoBKAIAIgFBASACQQN2dCICcUUEQEGM6gEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QbzsAWohAQJAAkBBkOoBKAIAIgVBASAAdCIEcUUEQEGQ6gEgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQZjqASgCACIAIAZNDQBBmOoBIAAgBmsiATYCAEGk6gFBpOoBKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0GI6gFBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBpOoBKAIAIARGBEBBpOoBIAM2AgBBmOoBQZjqASgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0Gg6gEoAgAgBEYEQEGg6gEgAzYCAEGU6gFBlOoBKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEGM6gFBjOoBKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdCIBKAK87AEgBEYEQCABQbzsAWogAjYCACACDQFBkOoBQZDqASgCAEF+IAB3cTYCAAwCCwJAIAQgBigCEEYEQCAGIAI2AhAMAQsgBiACNgIUCyACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H/AU0EQCAHQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgB0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H///8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QbzsAWohAAJAAkBBkOoBKAIAIgFBASACdCIFcUUEQEGQ6gEgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdCICKAK87AEgBUYEQCACQbzsAWogADYCACAADQFBkOoBIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgA0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QbzsAWohAQJAAkAgB0EBIAB0IgJxRQRAQZDqASACIAdyNgIAIAEgBDYCACAEIAE2AhgMAQsgA0EZIABBAXZrQQAgAEEfRxt0IQAgASgCACEBA0AgASICKAIEQXhxIANGDQIgAEEddiEBIABBAXQhACACIAFBBHFqIgcoAhAiAQ0ACyAHIAQ2AhAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgBUEIaiEADAELAkAgCUUNAAJAIAIoAhwiAUECdCIFKAK87AEgAkYEQCAFQbzsAWogADYCACAADQFBkOoBIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQbTqAWohAEGg6gEoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEGM6gEgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0Gg6gEgBTYCAEGU6gEgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsIACAAQQAQPAsVACAAIAE2AgAgACACKAIANgIEIAALCgAgACgCABC9AwsLACAAKAIAEMMDwAsXACAAEEcEQCAAKAIAIAAQfhCpAQsgAAs7AQJ/IwBBEGsiASQAIAEgADYCDCABKAIMIgAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0LIAFBEGokAAstACACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAAoAgQgASgCBBDQAUULIQEBfyAAKAIAIQIgACABNgIAIAIEQCACIAAoAgQRAgALCwYAEMoDAAsNACAAKAIAELwDGiAACw0AIAAoAgAQnQIaIAALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxEAIAAgASAAKAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUNAQsLIAAgAzcDACAAIAQ3AwggBkHwAGokAAsRACAAIAEgACgCACgCLBEEAAsIACAAQYABSQsRACACBEAgACABIAL8CgAACwsJACAAECMQ9wELhAECAn8BfiMAQRBrIgMkACAAAn4gAUUEQEIADAELIAMgASABQR91IgJzIAJrIgKtQgAgAmciAkHRAGoQRCADKQMIQoCAgICAgMAAhUGegAEgAmutQjCGfEKAgICAgICAgIB/QgAgAUEASBuEIQQgAykDAAs3AwAgACAENwMIIANBEGokAAsNACAAIAFB/wBxOgALC6oMAQh/An9BACABRQ0AGiAAQX9zIQMgAkEXTwRAAkAgAUEDcUUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFrIgBFIAFBAWoiBEEDcUVyRQRAIAEtAAEgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBAmsiAEUgAUECaiIEQQNxRXJFBEAgAS0AAiADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEDayIARSABQQNqIgRBA3FFckUEQCABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyABQQRqIQEgAkEEayECDAMLIAAhAiAEIQEMAgsgACECIAQhAQwBCyAAIQIgBCEBCyACQRRuIghBbGwhCgJAIAhBAWsiCUUEQEEAIQQMAQsgASEAQQAhBANAIAAoAhAgB3MiB0EWdkH8B3EoAtBTIAdBDnZB/AdxKALQSyAHQQZ2QfwHcSgC0EMgB0H/AXFBAnQoAtA7c3NzIQcgACgCDCAGcyIGQRZ2QfwHcSgC0FMgBkEOdkH8B3EoAtBLIAZBBnZB/AdxKALQQyAGQf8BcUECdCgC0Dtzc3MhBiAAKAIIIARzIgRBFnZB/AdxKALQUyAEQQ52QfwHcSgC0EsgBEEGdkH8B3EoAtBDIARB/wFxQQJ0KALQO3NzcyEEIAAoAgQgBXMiBUEWdkH8B3EoAtBTIAVBDnZB/AdxKALQSyAFQQZ2QfwHcSgC0EMgBUH/AXFBAnQoAtA7c3NzIQUgACgCACADcyIDQRZ2QfwHcSgC0FMgA0EOdkH8B3EoAtBLIANBBnZB/AdxKALQQyADQf8BcUECdCgC0Dtzc3MhAyAAQRRqIQAgCUEBayIJDQALIAEgCEEUbGpBFGshAQsgAiAKaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACADcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgBXNzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBB/wFxQQJ0KALQMyAEc3MgAEEIdnMiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEH/AXFBAnQoAtAzIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyEDIAFBFGohAQsgAkEHSwRAA0AgAS0AACADc0H/AXFBAnQoAtAzIANBCHZzIgBBCHYgAS0AASAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAIgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQADIABzQf8BcUECdCgC0DNzIgBBCHYgAS0ABCAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAUgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQAGIABzQf8BcUECdCgC0DNzIgBBCHYgAS0AByAAc0H/AXFBAnQoAtAzcyEDIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFGDQAgAS0AASADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkECRg0AIAEtAAIgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBA0YNACABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQRGDQAgAS0ABCADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEFRg0AIAEtAAUgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBBkYNACABLQAGIANzQf8BcUECdCgC0DMgA0EIdnMhAwsgA0F/cwsL5QMBBX8jAEEQayIDJAAgAyAAKAIAIgRBCGsoAgAiAjYCDCADIAAgAmo2AgQgAyAEQQRrKAIANgIIIAMoAggiBCABQQAQOyECIAMoAgQhBQJAIAIEQCADKAIMIQAjAEFAaiIBJAAgAUFAayQAQQAgBSAAGyECDAELIwBBQGoiAiQAIAAgBU4EQCACQgA3AhwgAkIANwIkIAJCADcCLCACQgA3AhQgAkEANgIQIAIgATYCDCACIAQ2AgQgAkEANgI8IAJCgYCAgICAgIABNwI0IAIgADYCCCAEIAJBBGogBSAFQQFBACAEKAIAKAIUEQoAIABBACACKAIcGyEGCyACQUBrJAAgBiICDQAjAEFAaiICJAAgAkEANgIQIAJBlNYBNgIMIAIgADYCCCACIAE2AgRBACEAIAJBFGpBAEEn/AsAIAJBADYCPCACQQE6ADsgBCACQQRqIAVBAUEAIAQoAgAoAhgRCwACQAJAAkAgAigCKA4CAAECCyACKAIYQQAgAigCJEEBRhtBACACKAIgQQFGG0EAIAIoAixBAUYbIQAMAQsgAigCHEEBRwRAIAIoAiwNASACKAIgQQFHDQEgAigCJEEBRw0BCyACKAIUIQALIAJBQGskACAAIQILIANBEGokACACCzwBAn9BASAAIABBAU0bIQEDQAJAIAEQNCIADQBB5P4BKAIAIgJFDQAgAhEMAAwBCwsgAEUEQBDrAQsgAAsUAQF/QQQQUyIBIAAoAgA2AgAgAQsLACAAIAE2AgAgAAsMACAAIAEoAgA2AgALBwAgABAkGgsRACAAIAEgASgCACgCFBEBAAsPACAAIAAoAgAoAhARAAALBwAgABAfRQsJAEGFEBCuAgALEAAgACABQYCAgIB4cjYCCAsMACAAIAEtAAA6AAALCwAgAC0AC0H/AHELEwAgACABIAIgACgCACgCDBEDAAsiAQF/IAIQTAR/IAAoAgggAkECdGooAgAgAXFBAEcFQQALC+wBAQN/IABFBEBB0N4BKAIABEBB0N4BKAIAEGEhAQtBgOABKAIABEBBgOABKAIAEGEgAXIhAQtBwOABKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEGEgAXIhAQsgACgCOCIADQALCyABDwsgACgCTEEASCECAkACQCAAKAIUIAAoAhxGDQAgAEEAQQAgACgCJBEDABogACgCFA0AQX8hAQwBCyAAKAIEIgEgACgCCCIDRwRAIAAgASADa6xBASAAKAIoERYAGgtBACEBIABBADYCHCAAQgA3AxAgAEIANwIEIAINAAsgAQsSACAAKAIAIgAEQCAAEJwDGgsLEQAgACABKAIAEJwDNgIAIAALQQEBfyAAIAE3A3AgACAAKAIsIAAoAgQiAmusNwN4IAAgAVAgASAAKAIIIgAgAmusWXIEfyAABSACIAGnags2AmgLHgACQCACRQ0AIAJBAnQiAkUNACAAIAEgAvwKAAALCxYAIAAgASgCADYCACAAIAIoAgA2AgQLtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahArDQAaQQQgA0HAACAAEDciBhBfRQ0AGiADIAYQlAEhAQNAAkAgABA+GiABQTBrIQEgACAFQQxqECsgBEECSHINACADQcAAIAAQNyIGEF9FDQMgBEEBayEEIAMgBhCUASABQQpsaiEBDAELCyAAIAVBDGoQK0UNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahAsDQAaQQQgA0HAACAAEDgiBhBgRQ0AGiADIAYQlQEhAQNAAkAgABA/GiABQTBrIQEgACAFQQxqECwgBEECSHINACADQcAAIAAQOCIGEGBFDQMgBEEBayEEIAMgBhCVASABQQpsaiEBDAELCyAAIAVBDGoQLEUNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELYwAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgAkEwRyABIABrQQJIcg0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACy4AAkAgACgCBEHKAHEiAARAIABBwABGBEBBCA8LIABBCEcNAUEQDwtBAA8LQQoLEAAgACgCBCAAKAIAa0ECdQvOAQIEfgJ/IwBBEGsiBiQAIAG9IgVC/////////weDIQIgAAJ+IAVCNIhC/w+DIgNQRQRAIANC/w9SBEAgAkIEiCEEIANCgPgAfCEDIAJCPIYMAgsgAkIEiCEEQv//ASEDIAJCPIYMAQsgAlAEQEIAIQNCAAwBCyAGIAJCACACeaciB0ExahBEIAYpAwhCgICAgICAwACFIQRBjPgAIAdrrSEDIAYpAwALNwMAIAAgBUKAgICAgICAgIB/gyADQjCGhCAEhDcDCCAGQRBqJAALsgMBA38jAEEQayIIJAAgCCACNgIIIAggATYCDCAIQQRqIgEgAxAnIAEQSCEJIAEQJSAEQQA2AgBBACEBAkADQCAGIAdGIAFyDQECQCAIQQxqIAhBCGoQKw0AAkAgCSAGKAIAEJQBQSVGBEAgBkEEaiAHRg0CQQAhAgJ/AkAgCSAGKAIEEJQBIgFBxQBGDQBBBCEKIAFB/wFxQTBGDQAgAQwBCyAGQQhqIAdGDQNBCCEKIAEhAiAJIAYoAggQlAELIQEgCCAAIAgoAgwgCCgCCCADIAQgBSABIAIgACgCACgCJBENADYCDCAGIApqQQRqIQYMAQsgCUEBIAYoAgAQXwRAA0AgByAGQQRqIgZHBEAgCUEBIAYoAgAQXw0BCwsDQCAIQQxqIgEgCEEIahArDQIgCUEBIAEQNxBfRQ0CIAEQPhoMAAsACyAJIAhBDGoiARA3EEEgCSAGKAIAEEFGBEAgBkEEaiEGIAEQPhoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECsEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQAC7QDAQN/IwBBEGsiCCQAIAggAjYCCCAIIAE2AgwgCEEEaiIBIAMQJyABEEkhCSABECUgBEEANgIAQQAhAQJAA0AgBiAHRiABcg0BAkAgCEEMaiAIQQhqECwNAAJAIAkgBiwAABCVAUElRgRAIAZBAWogB0YNAkEAIQICfwJAIAkgBiwAARCVASIBQcUARg0AQQEhCiABQf8BcUEwRg0AIAEMAQsgBkECaiAHRg0DQQIhCiABIQIgCSAGLAACEJUBCyEBIAggACAIKAIMIAgoAgggAyAEIAUgASACIAAoAgAoAiQRDQA2AgwgBiAKakEBaiEGDAELIAlBASAGLAAAEGAEQANAIAcgBkEBaiIGRwRAIAlBASAGLAAAEGANAQsLA0AgCEEMaiIBIAhBCGoQLA0CIAlBASABEDgQYEUNAiABED8aDAALAAsgCSAIQQxqIgEQOBDOASAJIAYsAAAQzgFGBEAgBkEBaiEGIAEQPxoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECwEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQACxYAIAAgASACIAMgACgCACgCMBEJABoLPAAgACwAC0EASARAIAAoAggaIAAoAgAQLQsgACABKQIANwIAIAAgASgCCDYCCCABQQA6AAsgAUEAOgAACxMAIAIEQCAAIAEgAvwKAAALIAALKwEBfyMAQRBrIgIkACACIAE2AgxBwN0BIAAgAUEAQQAQ0QMaIAJBEGokAAsjAQF/IwBBEGsiASQAIAEgADYCDCABQQxqEOwBIAFBEGokAAsMACAAQYKGgCA2AAALEQAgABAjIAAQH0ECdGoQ9wELDQAgACgCACABKAIARgsOACAAECMgABAfahD3AQsPACAAIAAoAgAoAgwRAAALFgAgACABIAIgAyAAKAIAKAIgEQkAGgtEAQF/IAAoAgAhAiABEDEhACACQQhqIgEQayAASwR/IAEgABCCASgCAEEARwVBAAtFBEAQPQALIAJBCGogABCCASgCAAsRACAAIAEgASgCACgCHBEBAAsRACAAIAEgASgCACgCGBEBAAsQACAAQSBGIABBCWtBBUlyCw4AIAAoAghB/////wdxC9cBAQF/AkBBjN4BKAIAIgBBAE4EQCAARQ0BQZThASgCACAAQf////8DcUcNAQsCQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADwtBwN0BEN4BDwtBjN4BQYzeASgCACIAQf////8DIAAbNgIAAkACQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADAELQcDdARDeAQtBjN4BKAIAGkGM3gFBADYCAAvDAQEEfyMAQRBrIgckAAJAIABFDQAgBCgCDCEJIAIgAWsiBkEASgRAIAAgASAGIAAoAgAoAjARAwAgBkcNAQsgAyABayIBIAlIBEAgB0EEaiIGIAkgAWsiASAFELACIAAgBygCBCAGIAcsAA9BAEgbIAEgACgCACgCMBEDACEFIAYQIBogASAFRw0BCyADIAJrIgFBAEoEQCAAIAIgASAAKAIAKAIwEQMAIAFHDQELIARBADYCDCAAIQgLIAdBEGokACAIC14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARBEGokAAsEACAAC1ABAX4CQCADQcAAcQRAIAIgA0FAaq2IIQFCACECDAELIANFDQAgAkHAACADa62GIAEgA60iBIiEIQEgAiAEiCECCyAAIAE3AwAgACACNwMIC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLCQBB+gsQrgIACxQBAX9BCBBTIgEgACkCADcDACABCwoAIAAgASAAa2oLGQEBfyABEMECIQIgACABNgIEIAAgAjYCAAskACAAQQJPBH8gAEECakF+cSIAIABBAWsiACAAQQJGGwVBAQsLlgEBA38CQCABELcCIQIjAEEQayIDJAAgAkH3////A00EQAJAIAIQvQEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQZSADQQA2AgQgBCACQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACwsRACAAIAEgASgCACgCLBEBAAvHAQEGfyMAQRBrIgQkACAAEPIBKAIAIQUCfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDQQQgAxshAyABKAIAIQYgACgCACEHIAVB5ABGBH9BAAUgACgCAAsgAxDcASIIBEAgBUHkAEcEQCAAEKwBGgsgBEHjADYCBCAAIARBCGogCCAEQQRqEDYiBRDrAiAFEDUgASAAKAIAIAYgB2tqNgIAIAIgACgCACADQXxxajYCACAEQRBqJAAPCxA9AAsTACAAIAFBACAAKAIAKAI0EQMACxMAIAAgAUEAIAAoAgAoAiQRAwALQgEBfyMAQRBrIgUkACAFIAI2AgwgBSAENgIIIAVBBGogBUEMahBjIAAgASADIAUoAggQ0QEhABBiIAVBEGokACAAC0EBAX8jAEEQayIDJAAgAyACNgIMQaAgIAFB7CBBzSxBHCADQQxqIgEQVEHsIEHRLEEdIAEQVBAEIANBEGokACAAC+oCAQJ/IwBBEGsiCiQAIAogADYCDAJAAkACQCADKAIAIgsgAkcNACAJKAJgIABGBH9BKwUgACAJKAJkRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUHoAGogCkEMahD5ASAJa0ECdSIFQRdKDQECQAJAAkAgAUEIaw4DAAIAAQsgASAFSg0BDAMLIAFBEEcgBUEWSHINACADKAIAIgEgAkYgASACa0ECSnINAiABQQFrLQAAQTBHDQJBACEAIARBADYCACADIAFBAWo2AgAgASAFLQDQnwE6AAAMAgsgAyADKAIAIgBBAWo2AgAgACAFQdCfAWotAAA6AAAgBCAEKAIAQQFqNgIAQQAhAAwBC0EAIQAgBEEANgIACyAKQRBqJAAgAAsKACAAQZjzARB6C+wCAQN/IwBBEGsiCiQAIAogADoADwJAAkACQCADKAIAIgsgAkcNACAAQf8BcSIMIAktABhGBH9BKwUgDCAJLQAZRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUEaaiAKQQ9qEP0BIAlrIgVBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAVKDQEMAwsgAUEQRyAFQRZIcg0AIAMoAgAiASACRiABIAJrQQJKcg0CIAFBAWstAABBMEcNAkEAIQAgBEEANgIAIAMgAUEBajYCACABIAUtANCfAToAAAwCCyADIAMoAgAiAEEBajYCACAAIAVB0J8Bai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokACAACwoAIABBkPMBEHoLZgIBfwF+IwBBEGsiAiQAIAACfiABRQRAQgAMAQsgAiABrUIAQfAAIAFnIgFBH3NrEEQgAikDCEKAgICAgIDAAIVBnoABIAFrrUIwhnwhAyACKQMACzcDACAAIAM3AwggAkEQaiQACxQAIABB3wBxIAAgAEHhAGtBGkkbCywBAX8Cf0EBENYBBEAgAUEBELQCDAELIAEQUwshAiAAIAE2AgQgACACNgIACyQAIABBC08EfyAAQQhqQXhxIgAgAEEBayIAIABBC0YbBUEKCwskAQJ/IwBBEGsiAiQAIAAgARDTASEDIAJBEGokACABIAAgAxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsTAEEEENYBBEAgABAtDwsgABAtCwsAIAQgAjYCAEEDC3wBAn8jAEEQayICJAAgABBHBEAgACgCACAAEH4QqQELIAEQHxogARBHIQMgACABKAIINgIIIAAgASkCADcCACABQQAQUCACQQA2AgwgASACQQxqEFYCQCADIAAgAUYiAXJFDQALIAAQRyABckUEQCAAEF4aCyACQRBqJAALEAEBfyAAKAIAIABBADYCAAs3AQJ/IwBBEGsiAyQAIANBDGoiBCABECcgAiAEEJkBIgEQWTYCACAAIAEQWCAEECUgA0EQaiQACzUBAn8jAEEQayICJAAgAkEMaiIDIAAQJyADEEhB0J8BQeqfASABEG8gAxAlIAJBEGokACABCzcBAn8jAEEQayIDJAAgA0EMaiIEIAEQJyACIAQQmwEiARBZOgAAIAAgARBYIAQQJSADQRBqJAALkwEBA38CQCABEKgBIQIjAEEQayIDJAAgAkH3////B00EQAJAIAIQ1AEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQTSADQQA6AAcgAiAEaiADQQdqEF0gA0EQaiQADAELEFsACwtGAQF/IABB+PsAKAIAIgE2AgAgACABQQxrKAIAakGY/AAoAgA2AgAgAEGc/AAoAgA2AgggAEEMahD8ARogAEFAaxDaASAACxcAIAAgAzYCECAAIAI2AgwgACABNgIIC7kHAQV/An8gAEH//wNxIQMgAEEQdiEEIAJBAUYEQCADIAEtAABqIgBB8f8DayAAIABB8P8DSxsiACAEaiIBQRB0IgJBgIA8aiACIAFB8P8DSxsgAHIMAQsgAQR/AkACQAJAAkAgAkEQTwRAAkAgAkGvK0sEQANAQdsCIQUgASEAA0AgAyAALQAAaiIDIARqIAMgAC0AAWoiA2ogAyAALQACaiIDaiADIAAtAANqIgNqIAMgAC0ABGoiA2ogAyAALQAFaiIDaiADIAAtAAZqIgNqIAMgAC0AB2oiA2ogAyAALQAIaiIDaiADIAAtAAlqIgNqIAMgAC0ACmoiA2ogAyAALQALaiIDaiADIAAtAAxqIgNqIAMgAC0ADWoiA2ogAyAALQAOaiIDaiADIAAtAA9qIgNqIQQgAEEQaiEAIAVBAWsiBQ0ACyAEQfH/A3AhBCADQfH/A3AhAyABQbAraiEBIAJBsCtrIgJBrytLDQALIAJFDQYgAkEQSQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgBqIAAgAS0ACGoiAGogACABLQAJaiIAaiAAIAEtAApqIgBqIAAgAS0AC2oiAGogACABLQAMaiIAaiAAIAEtAA1qIgBqIAAgAS0ADmoiAGogACABLQAPaiIDaiEEIAFBEGohASACQRBrIgJBD0sNAAsgAkUNBAsgAkEDcSIHDQEgAiEADAILAkAgAkUNAAJAIAJBA3EiB0UEQCACIQAMAQsgAiEAIAEhBQNAIABBAWshACADIAUtAABqIgMgBGohBCAFQQFqIgEhBSAGQQFqIgYgB0cNAAsLIAJBBEkNAANAIAMgAS0AAGoiAiABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgAiAEampqaiEEIAFBBGohASAAQQRrIgANAAsLIARB8f8DcEEQdCADQfH/A2sgAyADQfD/A0sbcgwFCyACIQAgASEFA0AgAEEBayEAIAMgBS0AAGoiAyAEaiEEIAVBAWoiASEFIAZBAWoiBiAHRw0ACwsgAkEESQ0AA0AgAyABLQAAaiICIAEtAAFqIgUgAS0AAmoiBiABLQADaiIDIAYgBSACIARqampqIQQgAUEEaiEBIABBBGsiAA0ACwsgBEHx/wNwIQQgA0Hx/wNwIQMLIARBEHQgA3IFQQELCws6AQF/IAFBAEgEQBCMAQALQf////8HIAAoAgggACgCAGsiAEEBdCICIAEgASACSRsgAEH/////A08bCxwBAX8gACgCBCIBQQlPBEAgARAeIABBADYCBAsLPgEBfyABQYCAgIAETwRAEIwBAAtB/////wMgACgCCCAAKAIAayIAQQF1IgIgASABIAJJGyAAQfz///8HTxsLSQECfyAAKAIEIgZBCHUhBSAGQQFxBEAgAigCACAFEOgBIQULIAAoAgAiACABIAIgBWogA0ECIAZBAnEbIAQgACgCACgCGBELAAuqAQEDfyMAQRBrIgIkACACIAE6AA8CQAJAAn8gABBHIgRFBEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkACfwJAIAFFBEAgAw0BQQAPC0F+IAJFDQEaAkAgAwRAIAIhBAwBCyABLQAAIgPAIgRBAE4EQCAABEAgACADNgIACyAEQQBHDwtB3OEBKAIAKAIARQRAQQEgAEUNAxogACAEQf+/A3E2AgBBAQ8LIANBwgFrIgNBMksNASADQQJ0KAKQgQEhAyACQQFrIgRFDQMgAUEBaiEBCyABLQAAIgZBA3YiB0EQayADQRp1IAdqckEHSw0AA0AgBEEBayEEIAZB/wFxQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiASwAACIGQUBIDQALCyAFQQA2AgBBiOoBQRk2AgBBfwsPCyAFIAM2AgBBfgsNACAAKAIAIAEoAgBJCwcAIABBC0kLJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBA9AAsLBwAgAEEISwscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwwAIABBDGoQ2gEgAAsIACAAKAIQRQsIACAAEIkCGgusCwEHfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBAnFFDQEgACgCACICIAFqIQECQAJAAkAgACACayIAQaDqASgCAEcEQCAAKAIMIQMgAkH/AU0EQCADIAAoAggiBEcNAkGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAAoAhghBiAAIANHBEAgACgCCCICIAM2AgwgAyACNgIIDAQLIAAoAhQiBAR/IABBFGoFIAAoAhAiBEUNAyAAQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQZTqASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAwCC0EAIQMLIAZFDQACQCAAKAIcIgJBAnQiBCgCvOwBIABGBEAgBEG87AFqIAM2AgAgAw0BQZDqAUGQ6gEoAgBBfiACd3E2AgAMAgsCQCAAIAYoAhBGBEAgBiADNgIQDAELIAYgAzYCFAsgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGk6gEoAgAgBUYEQEGk6gEgADYCAEGY6gFBmOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBoOoBKAIARw0GQZTqAUEANgIAQaDqAUEANgIADwtBoOoBKAIAIgggBUYEQEGg6gEgADYCAEGU6gFBlOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAJBeHEgAWohASAFKAIMIQMgAkH/AU0EQCAFKAIIIgQgA0YEQEGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAQgAzYCDCADIAQ2AggMBAsgBSgCGCEGIAMgBUcEQCAFKAIIIgIgAzYCDCADIAI2AggMAwsgBSgCFCIEBH8gBUEUagUgBSgCECIERQ0CIAVBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACEDCyAGRQ0AAkAgBSgCHCICQQJ0IgQoArzsASAFRgRAIARBvOwBaiADNgIAIAMNAUGQ6gFBkOoBKAIAQX4gAndxNgIADAILAkAgBSAGKAIQRgRAIAYgAzYCEAwBCyAGIAM2AhQLIANFDQELIAMgBjYCGCAFKAIQIgIEQCADIAI2AhAgAiADNgIYCyAFKAIUIgJFDQAgAyACNgIUIAIgAzYCGAsgACABQQFyNgIEIAAgAWogATYCACAAIAhHDQBBlOoBIAE2AgAPCyABQf8BTQRAIAFBeHFBtOoBaiECAn9BjOoBKAIAIgNBASABQQN2dCIBcUUEQEGM6gEgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG87AFqIQICQAJAQZDqASgCACIEQQEgA3QiB3FFBEBBkOoBIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiBygCECICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC40IAQt/IABFBEAgARA0DwsgAUFATwRAQYjqAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBCgCBCIJQXhxIQgCQCAJQQNxRQRAIAZBgAJJDQEgBkEEaiAITQRAIAQhAiAIIAZrQeztASgCAEEBdE0NAgtBAAwCCyAEIAhqIQcCQCAGIAhNBEAgCCAGayIDQRBJDQEgBCAGIAlBAXFyQQJyNgIEIAQgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ2wEMAQtBpOoBKAIAIAdGBEBBmOoBKAIAIAhqIgggBk0NAiAEIAYgCUEBcXJBAnI2AgQgBCAGaiIDIAggBmsiAkEBcjYCBEGY6gEgAjYCAEGk6gEgAzYCAAwBC0Gg6gEoAgAgB0YEQEGU6gEoAgAgCGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBCAGIAlBAXFyQQJyNgIEIAQgBmoiCCACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAlBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECQQAhCAtBoOoBIAg2AgBBlOoBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAIaiILIAZJDQEgCyAGayEMIAcoAgwhBQJAIANB/wFNBEAgBygCCCICIAVGBEBBjOoBQYzqASgCAEF+IANBA3Z3cTYCAAwCCyACIAU2AgwgBSACNgIIDAELIAcoAhghCgJAIAUgB0cEQCAHKAIIIgIgBTYCDCAFIAI2AggMAQsCQCAHKAIUIgIEfyAHQRRqBSAHKAIQIgJFDQEgB0EQagshCANAIAghAyACIgVBFGohCCACKAIUIgINACAFQRBqIQggBSgCECICDQALIANBADYCAAwBC0EAIQULIApFDQACQCAHKAIcIgNBAnQiAigCvOwBIAdGBEAgAkG87AFqIAU2AgAgBQ0BQZDqAUGQ6gEoAgBBfiADd3E2AgAMAgsCQCAHIAooAhBGBEAgCiAFNgIQDAELIAogBTYCFAsgBUUNAQsgBSAKNgIYIAcoAhAiAgRAIAUgAjYCECACIAU2AhgLIAcoAhQiAkUNACAFIAI2AhQgAiAFNgIYCyAMQQ9NBEAgBCAJQQFxIAtyQQJyNgIEIAQgC2oiAiACKAIEQQFyNgIEDAELIAQgBiAJQQFxckECcjYCBCAEIAZqIgMgDEEDcjYCBCAEIAtqIgIgAigCBEEBcjYCBCADIAwQ2wELIAQhAgsgAgsiAgRAIAJBCGoPCyABEDQiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxBxGiAAEC0gBAsWACAARQRAQQAPC0GI6gEgADYCAEF/C30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEN8BDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAwBBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC+IBAQJ/IAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB/wFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0BBgIKECCAAKAIAIANzIgRrIARyQYCBgoR4cUGAgYKEeEcNAiAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACwIACwQAQQELoBABFn8jAEFAaiIGQgA3AzAgBkIANwM4IAZCADcDICAGQgA3AygCQAJAAn8CQAJ/IAIEQCACQQRPBEAgAUEGaiEIIAFBBGohDSABQQJqIQsgAkF8cSEMA0AgBkEgaiIPIAEgCkEBdCIJai8BAEEBdGoiESARLwEAQQFqOwEAIAkgC2ovAQBBAXQgD2oiESARLwEAQQFqOwEAIAkgDWovAQBBAXQgD2oiESARLwEAQQFqOwEAIAggCWovAQBBAXQgD2oiCSAJLwEAQQFqOwEAIApBBGohCiAOQQRqIg4gDEcNAAsLIAJBA3EiCQRAA0AgBkEgaiABIApBAXRqLwEAQQF0aiIIIAgvAQBBAWo7AQAgCkEBaiEKIAdBAWoiByAJRw0ACwsgBCgCACIKIAYvAT4iEEUNARpBDyELDAILIAQoAgALIQpBACEQIAYvATwEQEEOIQsMAQsgBi8BOgRAQQ0hCwwBCyAGLwE4BEBBDCELDAELIAYvATYEQEELIQsMAQsgBi8BNARAQQohCwwBCyAGLwEyBEBBCSELDAELIAYvATAEQEEIIQsMAQsgBi8BLgRAQQchCwwBCyAGLwEsBEBBBiELDAELIAYvASoEQEEFIQsMAQsgBi8BKARAQQQhCwwBCyAGLwEmBEBBAyELDAELIAYvASQEQEECIQsMAQsgBi8BIkUEQCADIAMoAgAiAEEEajYCACAAQcACNgEAIAMgAygCACIAQQRqNgIAIABBwAI2AQBBASEMDAMLIApBAEchCUEBIQtBASEKQQAMAQsgCiALIAogC0kbIQlBASEKAkADQCAGQSBqIApBAXRqLwEADQEgCkEBaiIKIAtHDQALIAshCgtBAQshD0F/IQcgBi8BIiIIQQJLDQFBBCAIQQF0a0H+/wNxIAYvASQiDWsiDkEASA0BIA5BAXQgBi8BJiIOayIMQQBIDQEgDEEBdCAGLwEoIgxrIhFBAEgNASARQQF0IAYvASoiEWsiGEEASA0BIBhBAXQgBi8BLCIYayISQQBIDQEgEkEBdCAGLwEuIhJrIhNBAEgNASATQQF0IAYvATAiE2siFEEASA0BIBRBAXQgBi8BMiIUayIVQQBIDQEgFUEBdCAGLwE0IhVrIhdBAEgNASAXQQF0IAYvATYiF2siFkEASA0BIBZBAXQgBi8BOCIWayIZQQBIDQEgGUEBdCAGLwE6IhlrIhpBAEgNASAaQQF0IAYvATwiGmsiG0EASA0BIBtBAXQiGyAQSSAQIBtHQQAgAEUgD3Ibcg0BIAkgCkshEEEAIQcgBkEAOwECIAYgCDsBBCAGIAggDWoiCDsBBiAGIAggDmoiCDsBCCAGIAggDGoiCDsBCiAGIAggEWoiCDsBDCAGIAggGGoiCDsBDiAGIAggEmoiCDsBECAGIAggE2oiCDsBEiAGIAggFGoiCDsBFCAGIAggFWoiCDsBFiAGIAggF2oiCDsBGCAGIAggFmoiCDsBGiAGIAggGWoiCDsBHCAGIAggGmo7AR4CQCACRQ0AIAJBAUcEQCACQX5xIQhBACEOA0AgASAHQQF0ai8BACINBEAgBiANQQF0aiINIA0vAQAiDUEBajsBACAFIA1BAXRqIAc7AQALIAEgB0EBciINQQF0ai8BACIMBEAgBiAMQQF0aiIMIAwvAQAiDEEBajsBACAFIAxBAXRqIA07AQALIAdBAmohByAOQQJqIg4gCEcNAAsLIAJBAXFFDQAgASAHQQF0ai8BACICRQ0AIAYgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAHOwEACyAJIAogEBshDEEUIRJBACEXIAUiCCERQQAhEwJAAkACQCAADgICAAELQQEhByAMQQlLDQNBgQIhEkHA7QAhEUGA7QAhCEEBIRMMAQsgAEECRiEXQQAhEkHA7gAhEUGA7gAhCCAAQQJHBEAMAQtBASEHIAxBCUsNAgtBASAMdCIUQQFrIRkgAygCACEVQQAhAiAMIQlBACEAQQAhEEF/IQ0DQEEBIAl0IRgCQANAAn9BACASIAUgAkEBdGovAQAiCUEBaksNABogCSASSQRAQQAhCUHgAAwBCyAIIAkgEmtBAXQiB2ovAQAhCSAHIBFqLQAACyEOQX8gCiAAayIPdCEaIBUgECAAdkECdGohGyAYIQcDQCAbIAcgGmoiB0ECdGoiFiAJOwECIBYgDzoAASAWIA46AAAgBw0AC0EBIApBAWt0IQ4DQCAOIgdBAXYhDiAHIBBxDQALIAZBIGogCkEBdGoiCSAJLwEAQQFrIgk7AQAgB0EBayAQcSAHakEAIAcbIRAgAkEBaiECIAlB//8DcUUEQCAKIAtGDQIgASAFIAJBAXRqLwEAQQF0ai8BACEKCyAKIAxNDQAgECAZcSIOIA1GDQALQQEgCiAAIAwgABsiAGsiCXQhDyAKIAtJBEAgAEEBaiEWIAsgAGshDSAKIQcCQANAIA8gBkEgaiAHQQF0ai8BAGsiB0EATA0BIAdBAXQhDyAJIBZqIQcgCUEBaiEJIAcgC0kNAAsgDSEJC0EBIAl0IQ8LQQEhByATIA8gFGoiFEHUBktxIBcgFEHQBEtxcg0DIAMoAgAiDSAOQQJ0aiIHIAw6AAEgByAJOgAAIAcgFSAYQQJ0aiIVIA1rQQJ2OwECIA4hDQwBCwsgEARAIBUgEEECdGoiAEEAOwECIAAgDzoAASAAQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDDYCAEEAIQcLIAcLqgEBA38gASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggPCyABKAIAIQQgASgCBCECIwBBEGsiAyQAAkACQAJAIAIQ1AEEQCAAIgEgAhBQDAELIAJB9////wdLDQEgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQTSADQRBqJAAMAQsQWwALC0sBAn8gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBhDoASEGCyAAKAIAIgAgASACIAMgBmogBEECIAdBAnEbIAUgACgCACgCFBEKAAsgAAJAIAEgACgCBEcNACAAKAIcQQFGDQAgACACNgIcCwuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsKACAAIAFqKAIAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLrQEBA38jAEEQayICJAAgAiABNgIMAkACQAJ/IAAQRyIERQRAQQEhASAAEF4MAQsgABB+QQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDoAiAAECMaDAELIAAQIxogBA0AIAAiASADQQFqEFAMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAJBDGoQViACQQA2AgggAEEEaiACQQhqEFYgAkEQaiQACwUAED0ACycBAX8gACgCACEBIwBBEGsiACQAIAAgATYCDCAAKAIMIABBEGokAAsXACAAKAIIEC5HBEAgACgCCBCgAwsgAAs0AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQYyAAIAEQlgIhABBiIANBEGokACAAC40BAQN/IAEoAgQgACgCACICIAAoAgQiA2tqIQQgAyACayIDBEAgBCACIAP8CgAACyABIAQ2AgQgACAAKAIAIgI2AgQgACABKAIENgIAIAEgAjYCBCAAKAIEIQIgACABKAIINgIEIAEgAjYCCCAAKAIIIQIgACABKAIMNgIIIAEgAjYCDCABIAEoAgQ2AgALMwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFBAnRqNgIMIAIoAgwgAkEQaiQACxkBAX9BASEBIAAQRwR/IAAQfkEBawVBAQsLBwAgAEEEagswAQF/IwBBEGsiAiQAIAIgACgCADYCDCACIAIoAgwgAWo2AgwgAigCDCACQRBqJAAL9wEBBX8jAEEQayIGJAAgBkEMaiIIIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wcgAWsgAk8EQCAAECMhByAFQQRqIgkgAUHz////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAkgBUEMahCgASgCABCfAUEBagVB9////wcLEJ4BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQTQsgAyAERwRAIAIgBGogBCAHaiADIARrEE0LIAFBCkcEQCAHEIsCCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCBC7ASAGQRBqJAALCgAgASAAa0ECdQsPACAAIAAoAgBBBGo2AgALIAEBfyMAQRBrIgEkACABQQxqIAAQVSgCACABQRBqJAALDwAgACAAKAIAQQFqNgIAC1kBAn8jAEEQayIDJAAgAigCACEEIAACfyABIABrQQJ1IgIEQANAIAAgBCAAKAIARg0CGiAAQQRqIQAgAkEBayICDQALC0EACyIAIAEgABsQjgEgA0EQaiQAC/gDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtB8ABqIAxBDGoQ+QEgC2siAEECdSIGQRtKDQEgBkHQnwFqLAAAIQUCQAJAIABBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLAAAEJ0BIAIsAAAQnQFHDQYLIAQgAUEBajYCACABIAU6AAAMAwsgAkHQADoAAAwBCyAFEJ0BIgAgAiwAAEcNACACIAAQsQM6AAAgAS0AAEEBRw0AIAFBADoAACAHEB9FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAZBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALUAECfyMAQRBrIgYkACAGQQxqIgUgARAnIAUQSEHQnwFB7J8BIAIQbyADIAUQmQEiARB4NgIAIAQgARBZNgIAIAAgARBYIAUQJSAGQRBqJAALGAAgAEGQ9wA2AgAgAEEgahAgGiAAEJQCCy8BAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDgASIAIAEgABsQjgEgA0EQaiQAC/ADAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtBHGogDEEPahD9ASALayIFQRtKDQEgBUHQnwFqLAAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQEF/IQAgAUEBaywAABCdASACLAAAEJ0BRw0GCyAEIAFBAWo2AgAgASAGOgAADAMLIAJB0AA6AAAMAQsgBhCdASIAIAIsAABHDQAgAiAAELEDOgAAIAEtAABBAUcNACABQQA6AAAgBxAfRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhACAFQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC1ABAn8jAEEQayIGJAAgBkEMaiIFIAEQJyAFEElB0J8BQeyfASACEHkgAyAFEJsBIgEQeDoAACAEIAEQWToAACAAIAEQWCAFECUgBkEQaiQAC34CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQZCAEIAUgA0EBEKgDIAQpAwghBiAEKQMAIQcgAgRAIAIgBCgCiAEgASAEKAIUIAQoAjxramo2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAsJACAAQQQQqAILDQAgACABIAJCfxCEAgucAQEDf0E1IQECQCAAKAIcIgIgACgCGCIDQQZqQQdwa0EHakEHbiADIAJrIgJB8QJqQQdwQQNJaiIDQTVHBEAgAyIBDQFBNCEBAkACQCACQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEJ0DRQ0CC0E1DwsCQAJAIAJB8wJqQQdwQQNrDgIAAgELIAAoAhQQnQMNAQtBASEBCyABC5sEAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0GI6gFBHDYCAEIAIQMMAgsgACEEAkADQCAFwBB9RQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgZBK2sOAwABAAELQX9BACAGQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkACQCAELQAAIgZBMGsiBUH/AXFBCkkNACAGQeEAa0H/AXFBGU0EQCAGQdcAayEFDAELIAZBwQBrQf8BcUEZSw0BIAZBN2shBQsgCiAFQf8BcUwNACAIIAxCACALQgAQQEEBIQYCQCAIKQMIQgBSDQAgCyAMfiINIAWtQv8BgyIOQn+FVg0AIA0gDnwhC0EBIQkgAiEGCyAEQQFqIQQgBiECDAELCyABBEAgASAEIAAgCRs2AgALAkACQCACBEBBiOoBQcQANgIAIAdBACADQgGDIgxQGyEHIAMhCwwBCyADIAtWDQEgA0IBgyEMCyAMpyAHckUEQEGI6gFBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGI6gFBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuIAQEDfyABKAIEIAAoAgQgACgCACIEayICayEDIAIEQCADIAQgAvwKAAALIAEgAzYCBCAAIAAoAgAiAjYCBCAAIAEoAgQ2AgAgASACNgIEIAAoAgQhAiAAIAEoAgg2AgQgASACNgIIIAAoAgghAiAAIAEoAgw2AgggASACNgIMIAEgASgCBDYCAAuaAwEIfwJAIAAiAUEDcQRAA0AgAS0AACICRSACQT1Gcg0CIAFBAWoiAUEDcQ0ACwsCQAJAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhHDQADQEGAgoQIIANBvfr06QNzIgJrIAJyQYCBgoR4cUGAgYKEeEcNASABKAIEIQMgAUEEaiICIQEgA0GAgoQIIANrckGAgYKEeHFBgIGChHhGDQALDAELIAEhAgsDQCACIgEtAAAiA0UNASABQQFqIQIgA0E9Rw0ACwsgACABRgRAQQAPCwJAIAAgASAAayIDai0AAA0AQYDuASgCACIERQ0AIAQoAgAiAUUNAANAAkACfyAAIQJBACADIgZFDQAaIAAtAAAiBQR/AkADQCAFIAEtAAAiB0cgB0VyDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQUgAkEBaiECIAUNAAtBACEFCyAFBUEACyABLQAAawtFBEAgBCgCACADaiIBLQAAQT1GDQELIAQoAgQhASAEQQRqIQQgAQ0BDAILCyABQQFqIQgLIAgLSgEBfyAAIAM2AhAgAEEANgIMIAEEQCABELMCIQQLIAAgBDYCACAAIAQgAkECdGoiAjYCCCAAIAQgAUECdGo2AgwgACACNgIEIAALRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQSiAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALcgECfyAAQYj+ADYCACAAKAIcBEAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAQRxqECUgACgCIBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0GI6gFBGTYCAEF/BUEBCw8LIAAgAToAAEEBCzABAX8jAEEQayICJAAgAiABKAIANgIAIAAgAhByEH9BoPEAKAIAEGEaIAJBEGokAAsRACACBEAgACABwCAC/AsACwupAQEBfEQAAAAAAADwPyEBAkAgAEGACE4EQEQAAAAAAADgfyEBIABB/w9JBEAgAEH/B2shAAwCC0QAAAAAAADwfyEBQf0XIAAgAEH9F08bQf4PayEADAELIABBgXhKDQBEAAAAAAAAYAMhASAAQbhwSwRAIABByQdqIQAMAQtEAAAAAAAAAAAhAUHwaCAAIABB8GhNG0GSD2ohAAsgASAAQf8Haq1CNIa/ogtEAQF/IwBBEGsiAiQAIAAoAgAhACACIAE2AgggAiAANgIEIAJB/BQ2AgBByAsgAhByEH9BoPEAKAIAEGEaIAJBEGokAAt4AQN/AkAgAEUNACAAKAIgRQ0AIAAoAiQiAkUNACAAKAIcIgFFDQAgASgCACAARw0AIAEoAgRBtP4Aa0EfSw0AIAEoAjgiAwRAIAAoAiggAyACEQEAIAAoAiQhAiAAKAIcIQELIAAoAiggASACEQEAIABBADYCHAsL6QMAQZTZAUGFExAcQazZAUGUDkEBQQAQG0G42QFB8QxBAUGAf0H/ABACQdDZAUHqDEEBQYB/Qf8AEAJBxNkBQegMQQFBAEH/ARACQdzZAUGjCUECQYCAfkH//wEQAkHo2QFBmglBAkEAQf//AxACQfTZAUGyCUEEQYCAgIB4Qf////8HEAJBgNoBQakJQQRBAEF/EAJBjNoBQfMPQQRBgICAgHhB/////wcQAkGY2gFB6g9BBEEAQX8QAkGk2gFB4A9BCEKAgICAgICAgIB/Qv///////////wAQDUGw2gFB1w9BCEIAQn8QDUG82gFBogpBBBAMQcjaAUGMEUEIEAxBmC1BkhAQGkHgLUEEQfgPEAVBqC5BAkGeEBAFQfQuQQRBrRAQBUHMJhAZQcAvQQBB9RkQAEHoL0EAQboaEABBkDBBAUGTGhAAQbgwQQJBwhYQAEHgMEEDQeEWEABBiDFBBEGJFxAAQbAxQQVBphcQAEHYMUEEQd8aEABBgDJBBUH9GhAAQegvQQBBjBgQAEGQMEEBQesXEABBuDBBAkHOGBAAQeAwQQNBrBgQAEGIMUEEQdQZEABBsDFBBUGyGRAAQagyQQhBkRkQAEHQMkEJQe8YEABB+DJBBkHMFxAAQaAzQQdBpBsQAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEBajYCDCABLQAAC2ABBH8gASAAKAIEIgYgA2siB2ohBCAGIQUDQCACIARNBEAgACAFNgIEIAdFIAMgBkZyRQRAIAYgB2sgASAH/AoAAAsFIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEDAELCwsQACAAKAIAIgAEQCAAEB0LCzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAAC6ABAQR/IwBBgAJrIgAkACAAIAQ3A/gBIABCJTcD8AEgAEHwAWoiB0EBckGZDiAFIAIoAgQQywEgAEHQAWoiBiAGEC4gByAAQfgBahCJAyAGaiIIIAIQaSEJIABBBGoiByACECcgBiAJIAggAEEQaiIGIABBDGogAEEIaiAHEIADIAcQJSABIAYgACgCDCAAKAIIIAIgAxCFASAAQYACaiQAC6IBAQN/IwBBkAFrIgAkACAAIAQ2AowBIABCJTcDgAEgAEGAAWoiBkEBckGgDiAFIAIoAgQQywEgAEHzAGoiBCAEQQ0QLiAGIABBjAFqEMoBIARqIgcgAhBpIQggAEEEaiIGIAIQJyAEIAggByAAQRBqIgQgAEEMaiAAQQhqIAYQgAMgBhAlIAEgBCAAKAIMIAAoAgggAiADEIUBIABBkAFqJAALnQEBBH8jAEHwAGsiACQAIAAgBDcDaCAAQiU3A2AgAEHgAGoiB0EBckGZDiAFIAIoAgQQywEgAEFAayIGIAYQLiAHIABB6ABqEIkDIAZqIgggAhBpIQkgAEEEaiIHIAIQJyAGIAkgCCAAQRBqIgYgAEEMaiAAQQhqIAcQigMgBxAlIAEgBiAAKAIMIAAoAgggAiADEIABIABB8ABqJAALngEBA38jAEHQAGsiACQAIAAgBDYCTCAAQiU3A0AgAEFAayIGQQFyQaAOIAUgAigCBBDLASAAQTNqIgQgBEENEC4gBiAAQcwAahDKASAEaiIHIAIQaSEIIABBBGoiBiACECcgBCAIIAcgAEEQaiIEIABBDGogAEEIaiAGEIoDIAYQJSABIAQgACgCDCAAKAIIIAIgAxCAASAAQdAAaiQACwcAIAARDwALQgADQCABIAJHBEAgAQJ/IAEsAAAQTARAIAMoAgAgASwAAEECdGooAgAMAQsgAS0AAAs6AAAgAUEBaiEBDAELCyABCz0AA0AgASACRwRAIAEiACAAKAIAEEwEfyADKAIAIAAoAgBBAnRqBSAACygCADYCACAAQQRqIQEMAQsLIAELPwECfyAAKAIEIQMgACgCCCECA0AgAiADRwRAIAAgAiABayICNgIIDAELCyAAKAIAIgIEQCAAKAIMGiACEC0LC0wBAX8CQCABRQ0AIAFBiNgBEFIiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQO0UNACAAKAIQIAEoAhBBABA7IQILIAILCwBBnBFBABCtAgALgQEBA38gACgCBCIEQQFxIQUCfyABLQA3QQFGBEAgBEEIdSIGIAVFDQEaIAIoAgAgBhDoAQwBCyAEQQh1IAVFDQAaIAEgACgCACgCBDYCOCAAKAIEIQRBACECQQALIQUgACgCACIAIAEgAiAFaiADQQIgBEECcRsgACgCACgCHBEIAAsKACAAIAFBABA7C/gBAQF/IwBBEGsiAiQAIAIgATYCDEGQ1gEoAgAiAiAAIAEQzQMaIAAQqAEgAGpBAWstAABBCkcEQAJAAkAgAigCTCIAQQBOBEAgAEUNAUGU4QEoAgAgAEH/////A3FHDQELAkAgAigCUEEKRg0AIAIoAhQiACACKAIQRg0AIAIgAEEBajYCFCAAQQo6AAAMAgsgAhDeAQwBCyACQcwAaiIBIgAgACgCACIAQf////8DIAAbNgIAAkACQCACKAJQQQpGDQAgAigCFCIAIAIoAhBGDQAgAiAAQQFqNgIUIABBCjoAAAwBCyACEN4BCyABEKwBGgsLEMoDAAsdAQF/IwBBEGsiASQAIAEgADYCAEG9HiABEK0CAAu5AgEDfyMAQSBrIggkAEH3////AyIJIAFBf3NqIAJPBEAgABAjIQogAUHz////AUkEQCAIIAFBAXQ2AhwgCCABIAJqNgIQIAhBEGogCEEcahCgASgCABCQAUEBaiEJCyAIQRxqIAhBGGogABBVKAIAELwBIAhBEGogCRCPASAIKAIQIQIgCCgCFBogBARAIAIgCiAEEGULIAYEQCAEQQJ0IAJqIAcgBhBlCyADIAQgBWoiCWshByADIAlHBEAgBEECdCIDIAJqIAZBAnRqIAMgCmogBUECdGogBxBlCyABQQFqIgFBAkcEQCAKIAEQqQELIAAgAjYCACAAIAgoAhQQXCAAIAQgBmogB2oiADYCBCAIQQA2AgwgAiAAQQJ0aiAIQQxqEFYgCEEcahC7ASAIQSBqJAAPCxBbAAuJAQECfyMAQRBrIgMkACABQff///8HTQRAAkAgARDUAQRAIAAgARBQIAAhBAwBCyADQQhqIAEQnwFBAWoQngEgAygCDBogACADKAIIIgQ2AgAgACADKAIMEFwgACABNgIECyAEIAEgAhCyAiADQQA6AAcgASAEaiADQQdqEF0gA0EQaiQADwsQWwALRAECfyAAECghAyAAEB8hBCACIANNBEAgABAjIgMgASACEE0gACADIAIQwAIPCyAAIAMgAiADayAEQQAgBCACIAEQuQELPQEBfyMAQRBrIgMkACADIAI6AA8DQCABBEAgACADLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAsZACAAQYCAgIAETwRAEKoCAAsgAEECdBBTC5IFAQh/QQQgASABQQRNGyEDQQEgACAAQQFNGyEHA0ACQCAHIAMgB2pBAWtBACADa3EiACAAIAdJGyEEQQAhASMAQRBrIggkAAJAIANBA3ENACAEIANwDQACfwJAQTACfyADQQhGBEAgBBA0DAELQRwhASADQQNxIANBBElyDQEgA0ECdiIAIABBAWtxDQFBMEFAIANrIARJDQIaAn9BECEBAkBBEEEQIAMgA0EQTRsiACAAQRBNGyICIAJBAWtxRQRAIAIhAAwBCwNAIAEiAEEBdCEBIAAgAkkNAAsLQUAgAGsgBE0EQEGI6gFBMDYCAEEADAELQQBBECAEQQtqQXhxIARBC0kbIgUgAGpBDGoQNCICRQ0AGiACQQhrIQECQCAAQQFrIAJxRQRAIAEhAAwBCyACQQRrIgkoAgAiBEF4cSAAIAJqQQFrQQAgAGtxQQhrIgIgAEEAIAIgAWtBD00baiIAIAFrIgZrIQIgBEEDcUUEQCABKAIAIQEgACACNgIEIAAgASAGajYCAAwBCyAAIAIgACgCBEEBcXJBAnI2AgQgACACaiICIAIoAgRBAXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAAa0ECSA0CIAAtAAFBwAFxQYABRw0CQQIMAQsgAUFvTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhAQJAAkAgBUHtAUcEQCAFQeABRw0BIAFBYHFBoH9GDQIMBQsgAUGgf04NBAwBCyABQb9/Sg0DC0HAAXFBgAFHDQJBAwwBCyADIABrQQRIIAFBdEtyDQEgAC0AAyEGIAAtAAIhCCAALAABIQECQAJAAkACQCAFQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NBAwCCyABQZB/Tg0DDAELIAFBv39KDQILIAhBwAFxQYABRyAGQcABcUGAAUdyIAZBP3EgCEEGdEHAH3EgBUESdEGAgPAAcSABQT9xQQx0cnJyQf//wwBLcg0BQQQLIQEgB0EBaiEHIAAgAWohAAwBCwsgACACawu4BAEEfyMAQRBrIgAkAAJ/IAAgAjYCDCAAIAU2AggCQAJAA0AgAiADTyAFIAZPckUEQCACLAAAIghB/wFxIQECfyAIQQBOBEAgAUH//8MASw0FQQEMAQsgCEFCSQ0EIAhBX00EQEEBIAMgAmtBAkgNBhpBAiEIIAItAAEiCUHAAXFBgAFHDQQgCUE/cSABQQZ0QcAPcXIhAUECDAELIAhBb00EQEEBIQggAyACayIKQQJIDQQgAiwAASEJAkACQCABQe0BRwRAIAFB4AFHDQEgCUFgcUGgf0YNAgwICyAJQaB/SA0BDAcLIAlBv39KDQYLIApBAkYNBCACLQACIghBwAFxQYABRw0FIAhBP3EgAUEMdEGA4ANxIAlBP3FBBnRyciEBQQMMAQsgCEF0Sw0EQQEhCCADIAJrIgpBAkgNAyACLAABIQkCQAJAAkACQCABQfABaw4FAAICAgECCyAJQfAAakH/AXFBME8NBwwCCyAJQZB/Tg0GDAELIAlBv39KDQULIApBAkYNAyACLQACIgtBwAFxQYABRw0EIApBA0YNAyACLQADIgpBwAFxQYABRw0EQQIhCCAKQT9xIAtBBnRBwB9xIAFBEnRBgIDwAHEgCUE/cUEMdHJyciIBQf//wwBLDQNBBAshCCAFIAE2AgAgACACIAhqIgI2AgwgACAFQQRqIgU2AggMAQsLIAIgA0khCAsgCAwBC0ECCyAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokAAv1AwAjAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkADQAJAIAIgA08EQEEAIQUMAQtBAiEFIAIoAgAiAUH//8MASyABQYBwcUGAsANGcg0AAkAgAUH/AE0EQEEBIQUgBiAAKAIIIgJrQQBMDQIgACACQQFqNgIIIAIgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0EIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBiAAKAIIIgJrIQUgAUH//wNNBEAgBUEDSA0EIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyAFQQRIDQMgACACQQFqNgIIIAIgAUESdkHwAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQx2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEEEaiICNgIMDAELCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC5IDAQR/IAIhAANAAkAgBCAGTSAAIANPcg0AAn8gAEEBaiAALQAAIgHAQQBODQAaIAFBwgFJDQEgAUHfAU0EQCADIABrQQJIDQIgAC0AAUHAAXFBgAFHDQIgAEECagwBCyABQe8BTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhBQJAAkAgAUHtAUcEQCABQeABRw0BIAVBYHFBoH9GDQIMBQsgBUGgf04NBAwBCyAFQb9/Sg0DC0HAAXFBgAFHDQIgAEEDagwBCyADIABrQQRIIAFB9AFLciAEIAZrQQJJcg0BIAAtAAMhByAALQACIQggACwAASEFAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUGQf04NAwwBCyAFQb9/Sg0CCyAIQcABcUGAAUcgB0HAAXFBgAFHciAHQT9xIAhBBnRBwB9xIAFBEnRBgIDwAHEgBUE/cUEMdHJyckH//8MAS3INASAGQQFqIQYgAEEEagshACAGQQFqIQYMAQsLIAAgAmsLgQUBBX8jAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkACQANAIAIgA08gBSAGT3JFBEBBAiEJIAACfyACLQAAIgHAQQBOBEAgBSABOwEAQQEMAQsgAUHCAUkNBCABQd8BTQRAQQEgAyACa0ECSA0GGiACLQABIghBwAFxQYABRw0EIAUgCEE/cSABQQZ0QcAPcXI7AQBBAgwBCyABQe8BTQRAQQEhCSADIAJrIgpBAkgNBCACLAABIQgCQAJAIAFB7QFHBEAgAUHgAUcNASAIQWBxQaB/Rw0IDAILIAhBoH9ODQcMAQsgCEG/f0oNBgsgCkECRg0EIAItAAIiCUHAAXFBgAFHDQUgBSAJQT9xIAhBP3FBBnQgAUEMdHJyOwEAQQMMAQsgAUH0AUsNBEEBIQkgAyACayIKQQJIDQMgAi0AASILwCEIAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgCEHwAGpB/wFxQTBPDQcMAgsgCEGQf04NBgwBCyAIQb9/Sg0FCyAKQQJGDQMgAi0AAiIIQcABcUGAAUcNBCAKQQNGDQMgAi0AAyIKQcABcUGAAUcNBCAGIAVrQQNIDQNBAiEJIApBP3EiCiAIQQZ0IgxBwB9xIAtBDHRBgOAPcSABQQdxIgFBEnRycnJB///DAEsNAyAFIAogDEHAB3FyQYC4A3I7AQIgBSAIQQR2QQNxIAtBAnQiCUHAAXEgAUEIdHIgCUE8cXJyQcD/AGpBgLADcjsBACAFQQJqIQVBBAsgAmoiAjYCDCAAIAVBAmoiBTYCCAwBCwsgAiADSSEJCyAJDAELQQILIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC8sFAQJ/IwBBEGsiACQAAn8gACACNgIMIAAgBTYCCAJAAkADQCACIANPBEBBACEFDAILQQIhBQJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBCAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQUgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNBSAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/twNNBEBBASEFIAMgAmtBA0gNBCACLwECIghBgPgDcUGAuANHDQIgBiAAKAIIIglrQQRIDQQgCEH/B3EgAUEKdEGA+ANxIAFBwAdxIgVBCnRyckH//z9LDQIgACACQQJqNgIMIAAgCUEBajYCCCAJIAVBBnZBAWoiAkECdkHwAXI6AAAgACAAKAIIIgVBAWo2AgggBSACQQR0QTBxIAFBAnZBD3FyQYABcjoAACAAIAAoAggiAkEBajYCCCACIAhBBnZBD3EgAUEEdEEwcXJBgAFyOgAAIAAgACgCCCIBQQFqNgIIIAEgCEE/cUGAAXI6AAAMAQsgAUGAwANJDQMgBiAAKAIIIgJrQQNIDQQgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2Qb8BcToAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBAmoiAjYCDAwBCwtBAgwCCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQACw8AIAEgACgCAGogAjYCAAs8AQJ/IwBBEGsiASQAIAEgADYCDCABQQhqIAFBDGoQY0EEQQFB3OEBKAIAKAIAGyECEGIgAUEQaiQAIAILOAEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiAFQQxqEGMgACABIAIgAxDSASEAEGIgBUEQaiQAIAALEgAgBCACNgIAIAcgBTYCAEEDCw0AIAEgACgCAGooAgALKwEBfyAAQdyhATYCAAJAIAAoAggiAUUNACAALQAMQQFxRQ0AIAEQLQsgAAsEACABCycBAX8gACgCACgCACgCAEHM8gFBzPIBKAIAQQFqIgA2AgAgADYCBAu0CgEHf0HI8gEtAABFBEAjAEEQayIFJABBwPIBLQAARQRAIwBBEGsiBiQAIAZBATYCDEGg8QEgBigCDBAyIgFByKEBNgIAIwBBEGsiAyQAIAFBCGoiAkEANgIIIAJCADcCACACQQA6AIQBIANBCGogAhBVKAIAGiADQQA6AA8jAEEQayIEJAAQvAJBHkkEQBCMAQALIARBCGogAkEMakEeELsCIAIgBCgCCCIHNgIEIAIgBzYCACACIAcgBCgCDEECdGo2AgggBEEQaiQAIAJBHhDZAiADQQE6AA8gA0EQaiQAIAFBkAFqQYwWELABIAIQ2gJBrPwBQQEQMkHotQE2AgAgAUGs/AFB+O8BEDEQM0G0/AFBARAyQYi2ATYCACABQbT8AUGA8AEQMRAzQbz8AUEBEDIiAkEAOgAMIAJBADYCCCACQdyhATYCACACQZCiATYCCCABQbz8AUHY8gEQMRAzQcz8AUEBEDJByK0BNgIAIAFBzPwBQdDyARAxEDNB1PwBQQEQMkHgrgE2AgAgAUHU/AFB4PIBEDEQM0Hc/AFBARAyIgJBmKoBNgIAIAIQLjYCCCABQdz8AUHo8gEQMRAzQej8AUEBEDJB9K8BNgIAIAFB6PwBQfDyARAxEDNB8PwBQQEQMkHcsQE2AgAgAUHw/AFBgPMBEDEQM0H4/AFBARAyQeiwATYCACABQfj8AUH48gEQMRAzQYD9AUEBEDJB0LIBNgIAIAFBgP0BQYjzARAxEDNBiP0BQQEQMiICQa7YADsBCCACQciqATYCACACQQxqECQaIAFBiP0BQZDzARAxEDNBoP0BQQEQMiICQq6AgIDABTcCCCACQfCqATYCACACQRBqECQaIAFBoP0BQZjzARAxEDNBvP0BQQEQMkGotgE2AgAgAUG8/QFBiPABEDEQM0HE/QFBARAyQaC4ATYCACABQcT9AUGQ8AEQMRAzQcz9AUEBEDJB9LkBNgIAIAFBzP0BQZjwARAxEDNB1P0BQQEQMkHguwE2AgAgAUHU/QFBoPABEDEQM0Hc/QFBARAyQcTDATYCACABQdz9AUHI8AEQMRAzQeT9AUEBEDJB2MQBNgIAIAFB5P0BQdDwARAxEDNB7P0BQQEQMkHMxQE2AgAgAUHs/QFB2PABEDEQM0H0/QFBARAyQcDGATYCACABQfT9AUHg8AEQMRAzQfz9AUEBEDJBtMcBNgIAIAFB/P0BQejwARAxEDNBhP4BQQEQMkHcyAE2AgAgAUGE/gFB8PABEDEQM0GM/gFBARAyQYTKATYCACABQYz+AUH48AEQMRAzQZT+AUEBEDJBrMsBNgIAIAFBlP4BQYDxARAxEDNBnP4BQQEQMiICQZjVATYCCCACQai9ATYCACACQdi9ATYCCCABQZz+AUGo8AEQMRAzQaj+AUEBEDIiAkG81QE2AgggAkG0vwE2AgAgAkHkvwE2AgggAUGo/gFBsPABEDEQM0G0/gFBARAyIgJBCGoQtgIgAkGkwQE2AgAgAUG0/gFBuPABEDEQM0HA/gFBARAyIgJBCGoQtgIgAkHEwgE2AgAgAUHA/gFBwPABEDEQM0HM/gFBARAyQdTMATYCACABQcz+AUGI8QEQMRAzQdT+AUEBEDJBzM0BNgIAIAFB1P4BQZDxARAxEDMgBkEQaiQAIAVBoPEBNgIIQbzyASAFKAIIEFUaQcDyAUEBOgAACyAFQRBqJABBxPIBQbzyARDVAkHI8gFBAToAAAsgAEHE8gEoAgAiADYCACAAENQCCxEAIABBoPEBRwRAIAAQ1wILCxMAIAAgASgCACIANgIAIAAQ1AILlwEBA38gAEHIoQE2AgAgAEEIaiEBA0AgARBrIAJLBEAgASACEIIBKAIABEAgASACEIIBKAIAEL8BCyACQQFqIQIMAQsLIABBkAFqECAaIwBBEGsiAiQAIAJBDGogARBVIgEoAgAiAygCAARAIAMQ2gIgASgCABogASgCACIBQQxqIAEoAgAgARC5AhC4AgsgAkEQaiQAIAALDwAgACAAKAIEQQFqNgIECyYBAX8gACgCBCECA0AgASACRwRAIAJBBGshAgwBCwsgACABNgIEC3UBAn8jAEEQayIDJAAgA0EEaiICIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIiASgCBCEAIAIoAgghAgNAIAAgAkYEQCABKAIAIAEoAgQ2AgQgA0EQaiQABSAAELoCIAEgAEEEaiIANgIEDAELCwsRACAAEGsaIAAgACgCABDYAgsgACAAQZiqATYCACAAKAIIEC5HBEAgACgCCBCgAwsgAAsEAEF/C+EBAQR/IwBBEGsiBSQAIwBBIGsiAyQAIANBGGogACABEL0CIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgRBAnUQZSABIAIgBGo2AgggA0EQaiABQQxqIAFBCGoQZiABQRBqJAAgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAgBCAAEOwBa0ECdRDwASEAIAFBEGokACADIAA2AgwgAyACIAMoAhQQjgE2AgggBUEIaiADQQxqIANBCGoQZiADQSBqJAAgBSgCDCAFQRBqJAAL9gUBCn8jAEEQayITJAAgAiAANgIAQQRBACAHGyEVIANBgARxIRYDQCAUQQRGBEAgDRAfQQFLBEAgEyANEE42AgwgAiATQQxqQQEQ8AEgDRB1IAIoAgAQ3QI2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsgE0EQaiQABQJAAkACQAJAAkACQCAIIBRqLQAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgEEshByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsgDRBaDQIgDUEAEMwBKAIAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAILIAwQWiAWRXINASACIAwQTiAMEHUgAigCABDdAjYCAAwBCyACKAIAIAQgFWoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAEF9FDQAgB0EEaiEHDAELCyAOQQBKBEAgAigCACEPIA4hEANAIBBFIAQgB09yRQRAIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCyAQBH8gBkEwEEsFQQALIREgAigCACEPA0AgEEEASgRAIAIgD0EEaiISNgIAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIAIoAgAiD0EEajYCACAPIAk2AgALAkAgBCAHRgRAIAZBMBBLIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAELIAsQWgR/QX8FIAtBABAiLAAACyESQQAhEEEAIREDQCAEIAdGDQECQCAQIBJHBEAgECEPDAELIAIgAigCACIPQQRqNgIAIA8gCjYCAEEAIQ8gCxAfIBFBAWoiEU0EQCAQIRIMAQsgCyARECItAABB/wBGBEBBfyESDAELIAsgERAiLAAAIRILIAdBBGsiBygCACEQIAIgAigCACIYQQRqNgIAIBggEDYCACAPQQFqIRAMAAsACyACKAIAEMcBCyAUQQFqIRQMAQsLC70BAQF/IwBBEGsiCiQAAn8gAARAIAIQ5gIMAQsgAhDlAgshAAJAIAEEQCAKQQRqIgEgABCSASADIAooAgQ2AAAgASAAEMIBDAELIApBBGoiASAAEOECIAMgCigCBDYAACABIAAQewsgCCABEKsBIAEQORogBCAAEHg2AgAgBSAAEFk2AgAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARCrASABEDkaIAkgABDBATYCACAKQRBqJAAL2wEBBH8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQvQIgAygCGCEEIAMoAhwhBiMAQRBrIgEkACABIAY2AgwgAiAEIAYgBGsiBBBNIAEgAiAEajYCCCADQRBqIAFBDGogAUEIahBmIAFBEGokACADKAIQIQQjAEEQayIBJAAgASAANgIMIAFBDGoiACAEIAAQ7AFrEPMBIQAgAUEQaiQAIAMgADYCDCADIAIgAygCFBCOATYCCCAFQQhqIANBDGogA0EIahBmIANBIGokACAFKAIMIAVBEGokAAsRACAAIAEgASgCACgCKBEBAAvLBQEKfyMAQRBrIhQkACACIAA2AgAgA0GABHEhFgNAIBVBBEYEQCANEB9BAUsEQCAUIA0QTjYCDCACIBRBDGpBARDzASANEHcgAigCABDgAjYCAAsgA0GwAXEiA0EQRwRAIAEgA0EgRgR/IAIoAgAFIAALNgIACyAUQRBqJAAFAkACQAJAAkACQAJAIAggFWotAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwDCyANEFoNAiANQQAQIi0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMEFogFkVyDQEgAiAMEE4gDBB3IAIoAgAQ4AI2AgAMAQsgAigCACAEIAdqIgQhEQNAAkAgBSARTQ0AIAZBwAAgESwAABBgRQ0AIBFBAWohEQwBCwsgDiIPQQBKBEADQCAPRSAEIBFPckUEQCAPQQFrIQ8gEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAADAELCyAPBH8gBkEwEEEFQQALIRIDQCACIAIoAgAiEEEBajYCACAPQQBKBEAgECASOgAAIA9BAWshDwwBCwsgECAJOgAACwJAIAQgEUYEQCAGQTAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBCyALEFoEf0F/BSALQQAQIiwAAAshEEEAIQ9BACETA0AgBCARRg0BAkAgDyAQRwRAIA8hEgwBCyACIAIoAgAiEEEBajYCACAQIAo6AABBACESIAsQHyATQQFqIhNNBEAgDyEQDAELIAsgExAiLQAAQf8ARgRAQX8hEAwBCyALIBMQIiwAACEQCyARQQFrIhEtAAAhDyACIAIoAgAiGEEBajYCACAYIA86AAAgEkEBaiEPDAALAAsgAigCABCEAQsgFUEBaiEVDAELCwu7AQEBfyMAQRBrIgokAAJ/IAAEQCACEO0CDAELIAIQ7AILIQACQCABBEAgCkEEaiIBIAAQkgEgAyAKKAIENgAAIAEgABDCAQwBCyAKQQRqIgEgABDhAiADIAooAgQ2AAAgASAAEHsLIAggARBwIAEQIBogBCAAEHg6AAAgBSAAEFk6AAAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARBwIAEQIBogCSAAEMEBNgIAIApBEGokAAsIACAAKAIARQsKACAAQdjwARB6CwoAIABB4PABEHoLFwAgAiAAIAEgAGsiAEECdRBlIAAgAmoLgwIBBX8jAEEQayIGJAAgBkEMaiIJIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wMgAWsgAk8EQCAAECMhByAFQQRqIgggAUHz////AUkEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAggBUEMahCgASgCABCQAUEBagVB9////wMLEI8BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQZQsgAyAERwRAIARBAnQiCCACaiAHIAhqIAMgBGsQZQsgAUEBaiIBQQJHBEAgByABEKkBCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCRC7ASAGQRBqJAALHwEBfyABKAIAELwDIQIgACABKAIANgIEIAAgAjYCAAuyDgEKfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahArBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQeQANgJIIAsgC0HoAGogC0HwAGogC0HIAGoiARA2Ig8oAgAiCjYCZCALIApBkANqNgJgIAEQJCERIAtBPGoQJCEMIAtBMGoQJCEOIAtBJGoQJCENIAtBGGoQJCEQIwBBEGsiASQAAkAgAgRAIAFBBGoiCiADEOYCIgIQkgEMAQsgAUEEaiIKIAMQ5QIiAhCSAQsgCyABKAIENgBcIAogAhDCASANIAoQqwEgChA5GiAKIAIQeyAOIAoQqwEgChA5GiALIAIQeDYCWCALIAIQWTYCVCAKIAIQWCARIAoQcCAKECAaIAogAhB8IAwgChCrASAKEDkaIAsgAhDBATYCFCABQRBqJAAgCSAIKAIANgIAIARBgARxIRJBACEDQQAhAQNAIAEhAgJAAkACQAJAIANBBEYNACAAIAtBjARqECsNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAEDcQXwRAIAtBDGogABDpAiAQIAsoAgwQ6gEMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahArDQYgB0EBIAAQNxBfRQ0GIAtBDGogABDpAiAQIAsoAgwQ6gEMAAsACwJAIA4QH0UNACAAEDcgDhAjKAIARw0AIAAQPhogBkEAOgAAIA4gAiAOEB9BAUsbIQEMBgsCQCANEB9FDQAgABA3IA0QIygCAEcNACAAED4aIAZBAToAACANIAIgDRAfQQFLGyEBDAYLAkAgDhAfRQ0AIA0QH0UNACAFIAUoAgBBBHI2AgBBACEADAQLIA4QH0UEQCANEB9FDQULIAYgDRAfRToAAAwECyASIAIgA0ECSXJyRQRAQQAhASADQQJGIAstAF9BAEdxRQ0FCyALIAwQTjYCCCALQQxqIAtBCGoQwwEhAQJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQdTYCCCABIAtBCGoQdg0AIAdBASABKAIAKAIAEF9FDQAgARD2AQwBCwsgCyAMEE42AgggASgCACALQQhqIgQoAgBrQQJ1IgogEBAfTQRAIAsgEBB1NgIIIARBACAKaxDwASAQEHUhCiAMEE4hEyMAQRBrIhQkABBzIQQgChBzIQogBCATEHMgCiAEa0F8cRCLAUUgFEEQaiQADQELIAsgDBBONgIEIAEgC0EIaiALQQRqEMMBKAIANgIACyALIAEoAgA2AggDQAJAIAsgDBB1NgIEIAtBCGoiASALQQRqEHYNACAAIAtBjARqECsNACAAEDcgASgCACgCAEcNACAAED4aIAEQ9gEMAQsLIBJFDQMgCyAMEHU2AgQgC0EIaiALQQRqEHYNAyAFIAUoAgBBBHI2AgBBACEADAILA0ACQCAAIAtBjARqECsNAAJ/IAdBwAAgABA3IgEQXwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQkwEgCSgCACEECyAJIARBBGo2AgAgBCABNgIAIApBAWoMAQsgERAfRSAKRXINASABIAsoAlRHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED4aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIUQQBMDQACQCAAIAtBjARqECtFBEAgABA3IAsoAlhGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAED4aIAsoAhRBAEwNAQJAIAAgC0GMBGoQK0UEQCAHQcAAIAAQNxBfDQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQkwELIAAQNyEBIAkgCSgCACIEQQRqNgIAIAQgATYCACALIAsoAhRBAWs2AhQMAAsACyACIQEgCCgCACAJKAIARw0DIAUgBSgCAEEEcjYCAEEAIQAMAQsCQCACRQ0AQQEhCgNAIAIQHyAKTQ0BAkAgACALQYwEahArRQRAIAAQNyACIAoQzAEoAgBGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABA+GiAKQQFqIQoMAAsAC0EBIQAgDygCACALKAJkRg0AQQAhACALQQA2AgwgESAPKAIAIAsoAmQgC0EMahBDIAsoAgwEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDkaIA0QORogDhA5GiAMEDkaIBEQIBogDxA1DAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAACxgAIAAgARCsARA8IAAgARDyASgCADYCBAsKACAAQcjwARB6CwoAIABB0PABEHoLxwEBBn8jAEEQayIEJAAgABDyASgCACEFQQECfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDIANBAU0bIQMgASgCACEGIAAoAgAhByAFQeQARgR/QQAFIAAoAgALIAMQ3AEiCARAIAVB5ABHBEAgABCsARoLIARB4wA2AgQgACAEQQhqIAggBEEEahA2IgUQ6wIgBRA1IAEgACgCACAGIAdrajYCACACIAMgACgCAGo2AgAgBEEQaiQADwsQPQALIAEBfyABKAIAEJ0CwCECIAAgASgCADYCBCAAIAI6AAALxA4BCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQLARAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HkADYCTCALIAtB6ABqIAtB8ABqIAtBzABqIgEQNiIPKAIAIgo2AmQgCyAKQZADajYCYCABECQhESALQUBrECQhDCALQTRqECQhDiALQShqECQhDSALQRxqECQhECMAQRBrIgEkAAJAIAIEQCABQQRqIgogAxDtAiICEJIBDAELIAFBBGoiCiADEOwCIgIQkgELIAsgASgCBDYAXCAKIAIQwgEgDSAKEHAgChAgGiAKIAIQeyAOIAoQcCAKECAaIAsgAhB4OgBbIAsgAhBZOgBaIAogAhBYIBEgChBwIAoQIBogCiACEHwgDCAKEHAgChAgGiALIAIQwQE2AhggAUEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahAsDQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLQAADgUBAAQDBQkLIANBA0YNByAHQQEgABA4EGAEQCALQRBqIAAQ7wIgECALLAAQELgBDAILIAUgBSgCAEEEcjYCAEEAIQAMBgsgA0EDRg0GCwNAIAAgC0GMBGoQLA0GIAdBASAAEDgQYEUNBiALQRBqIAAQ7wIgECALLAAQELgBDAALAAsCQCAOEB9FDQAgABA4Qf8BcSAOQQAQIi0AAEcNACAAED8aIAZBADoAACAOIAIgDhAfQQFLGyEBDAYLAkAgDRAfRQ0AIAAQOEH/AXEgDUEAECItAABHDQAgABA/GiAGQQE6AAAgDSACIA0QH0EBSxshAQwGCwJAIA4QH0UNACANEB9FDQAgBSAFKAIAQQRyNgIAQQAhAAwECyAOEB9FBEAgDRAfRQ0FCyAGIA0QH0U6AAAMBAsgEiACIANBAklyckUEQEEAIQEgA0ECRiALLQBfQQBHcUUNBQsgCyAMEE42AgwgC0EQaiALQQxqEMMBIQECQCADRQ0AIAMgC2otAFtBAUsNAANAAkAgCyAMEHc2AgwgASALQQxqEHYNACAHQQEgASgCACwAABBgRQ0AIAEQ+AEMAQsLIAsgDBBONgIMIAEoAgAgC0EMaiIEKAIAayIKIBAQH00EQCALIBAQdzYCDCAEQQAgCmsQ8wEgEBB3IQogDBBOIRMjAEEQayIUJAAQcyEEIAoQcyEKIAQgExBzIAogBGsQiwFFIBRBEGokAA0BCyALIAwQTjYCCCABIAtBDGogC0EIahDDASgCADYCAAsgCyABKAIANgIMA0ACQCALIAwQdzYCCCALQQxqIgEgC0EIahB2DQAgACALQYwEahAsDQAgABA4Qf8BcSABKAIALQAARw0AIAAQPxogARD4AQwBCwsgEkUNAyALIAwQdzYCCCALQQxqIAtBCGoQdg0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQLA0AAn8gB0HAACAAEDgiARBgBEAgCSgCACIEIAsoAogERgRAIAggCSALQYgEahDuAiAJKAIAIQQLIAkgBEEBajYCACAEIAE6AAAgCkEBagwBCyAREB9FIApFcg0BIAstAFogAUH/AXFHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED8aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqECxFBEAgABA4Qf8BcSALLQBbRg0BCyAFIAUoAgBBBHI2AgBBACEADAMLA0AgABA/GiALKAIYQQBMDQECQCAAIAtBjARqECxFBEAgB0HAACAAEDgQYA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEO4CCyAAEDghASAJIAkoAgAiBEEBajYCACAEIAE6AAAgCyALKAIYQQFrNgIYDAALAAsgAiEBIAgoAgAgCSgCAEcNAyAFIAUoAgBBBHI2AgBBACEADAELAkAgAkUNAEEBIQoDQCACEB8gCk0NAQJAIAAgC0GMBGoQLEUEQCAAEDhB/wFxIAIgChAiLQAARg0BCyAFIAUoAgBBBHI2AgBBACEADAMLIAAQPxogCkEBaiEKDAALAAtBASEAIA8oAgAgCygCZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACyAAC7IFAQp/IwBBEGsiCyQAIAYQSCEKIAtBBGogBhCZASIOEFggBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCiAGwBBLIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAYtAABBMEcNACAGLQABQSByQfgARw0AIApBMBBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAogBiwAARBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAZBAmoiCCEGA0AgAiAGTQ0CIAYsAAAQLhoQsANFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAABAuGhCvA0UNASAGQQFqIQYMAAsACwJAIAtBBGoQWgRAIAogCCAGIAUoAgAQbyAFIAUoAgAgBiAIa0ECdGo2AgAMAQsgCCAGEIQBIA4QWSEPIAghBwNAIAYgB00EQCADIAggAGtBAnRqIAUoAgAQxwEFAkAgC0EEaiIMIA0QIiwAAEEATA0AIAkgDCANECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSAPNgIAIA0gDSAMEB9BAWtJaiENQQAhCQsgCiAHLAAAEEshDCAFIAUoAgAiEEEEajYCACAQIAw2AgAgB0EBaiEHIAlBAWohCQwBCwsLAkACQANAIAIgBk0NASAGQQFqIQcgBiwAACIGQS5HBEAgCiAGEEshBiAFIAUoAgAiCEEEajYCACAIIAY2AgAgByEGDAELCyAOEHghBiAFIAUoAgAiCEEEaiIJNgIAIAggBjYCAAwBCyAFKAIAIQkgBiEHCyAKIAcgAiAJEG8gBSAFKAIAIAIgB2tBAnRqIgU2AgAgBCAFIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALDwAgAARAIAAQOgsgABAtC90DAQh/IwBBEGsiCyQAIAYQSCEKIAtBBGoiByAGEJkBIgYQWAJAIAcQWgRAIAogACACIAMQbyAFIAMgAiAAa0ECdGoiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEshByAFIAUoAgAiCEEEajYCACAIIAc2AgAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAKIAcsAAEQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtBAnRqIAUoAgAQxwEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSANNgIAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEshDCAFIAUoAgAiDkEEajYCACAOIAw2AgAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALRwIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgACABIAIgBRDAASAFQSBqJAALOwIBfwF+IwBBEGsiBCQAIAMpAwAhBSAEIAMpAwg3AwggBCAFNwMAIABBHiABIAIgBBCWASAEQRBqJAALSQIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBIGokAAuiBQEKfyMAQRBrIgokACAGEEkhCSAKQQRqIAYQmwEiDhBYIAUgAzYCAAJAAkAgACIILQAAIgZBK2sOAwABAAELIAkgBsAQQSEGIAUgBSgCACIHQQFqNgIAIAcgBjoAACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACAJQTAQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAJIAYsAAEQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAGQQJqIgghBgNAIAIgBk0NAiAGLAAAEC4aELADRQ0CIAZBAWohBgwACwALA0AgAiAGTQ0BIAYsAAAQLhoQrwNFDQEgBkEBaiEGDAALAAsCQCAKQQRqEFoEQCAJIAggBiAFKAIAEHkgBSAFKAIAIAYgCGtqNgIADAELIAggBhCEASAOEFkhDyAIIQcDQCAGIAdNBEAgAyAIIABraiAFKAIAEIQBBQJAIApBBGoiDCANECIsAABBAEwNACALIAwgDRAiLAAARw0AIAUgBSgCACILQQFqNgIAIAsgDzoAACANIA0gDBAfQQFrSWohDUEAIQsLIAkgBywAABBBIQwgBSAFKAIAIhBBAWo2AgAgECAMOgAAIAdBAWohByALQQFqIQsMAQsLCwNAAkACQCACIAZNBEAgBiEHDAELIAZBAWohByAGLAAAIgZBLkcNASAOEHghBiAFIAUoAgAiCEEBajYCACAIIAY6AAALIAkgByACIAUoAgAQeSAFIAUoAgAgAiAHa2oiBTYCACAEIAUgAyABIABraiABIAJGGzYCACAKQQRqECAaIApBEGokAA8LIAkgBhBBIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAAIAchBgwACwALKQEBfyMAQRBrIgQkACAEIAMrAwA5AwAgACABIAIgBBDAASAEQRBqJAALNwEBfyMAQRBrIgUkACADKAIAIQMgBSAEKwMAOQMIIAUgAzYCACAAIAEgAiAFEMABIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAysDADkDACAAQR4gASACIAQQlgEgBEEQaiQACzkBAX8jAEEQayIFJAAgAygCACEDIAUgBCsDADkDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAykDADcDACAAQRggASACIAQQlgEgBEEQaiQAC9QDAQh/IwBBEGsiCyQAIAYQSSEKIAtBBGoiByAGEJsBIgYQWAJAIAcQWgRAIAogACACIAMQeSAFIAMgAiAAa2oiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEEhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAKIAcsAAEQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtqIAUoAgAQhAEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBAWo2AgAgCSANOgAAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEEhDCAFIAUoAgAiDkEBajYCACAOIAw6AAAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa2ogASACRhs2AgAgC0EEahAgGiALQRBqJAALQwEBfyMAQRBrIgMkACADIAI2AgxBoCAgAUH02QFBuyxBGCADQQxqIgEQVEH02QFBvyxBGSABEFQQBCADQRBqJAAgAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAtbAQF/IwBBEGsiAyQAIAMgAigCADYCACMAQRBrIgIkACACIAE2AgwgAiADNgIIIAJBBGogAkEMahBjIABB1w0gAigCCBCkAyEAEGIgAkEQaiQAIANBEGokACAAC9kCAgR+Bn8jAEEgayIIJAACQAJAAkAgASACRwRAQYjqASgCACENQYjqAUEANgIAIwBBEGsiCSQAEC4aIwBBEGsiCiQAIwBBEGsiCyQAIwBBEGsiDCQAIAwgASAIQRxqQQIQgAIgDCkDACEEIAsgDCkDCDcDCCALIAQ3AwAgDEEQaiQAIAspAwAhBCAKIAspAwg3AwggCiAENwMAIAtBEGokACAKKQMAIQQgCSAKKQMINwMIIAkgBDcDACAKQRBqJAAgCSkDACEEIAggCSkDCDcDECAIIAQ3AwggCUEQaiQAIAgpAxAhBCAIKQMIIQVBiOoBKAIAIgFFDQEgCCgCHCACRw0CIAUhBiAEIQcgAUHEAEcNAwwCCyADQQQ2AgAMAgtBiOoBIA02AgAgCCgCHCACRg0BCyADQQQ2AgAgBiEFIAchBAsgACAFNwMAIAAgBDcDCCAIQSBqJAALwAECA38BfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBARCAAiAEKQMAIAQpAwgQlQIhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtEAAAAAAAAAAAhBgsgAkEENgIACyADQRBqJAAgBgubCgEEfyMAQRBrIgIkAEGACEEEQZAgQd4gQQRBAkEAQQAQC0HtC0ECQeQgQZghQQVBA0EAQQAQCyMAQSBrIgEkAEGY4AEtAABFBEBBmOABQQE6AABBnCFBvNoBEAcLQewgQYwlQcQlQQBB+iVBBkH9JUEAQf0lQQBB1xtB/yVBBxAJQewgQQFBhCZBiCZBIkEIEAYgAUEANgIcIAFBCTYCGCABIAEpAhg3AxAjAEEQayIAJAAgACABKQIQNwIIQewgQYoPQQNBjCZBmCZBIyAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQQo2AhggASABKQIYNwMIIwBBEGsiACQAIAAgASkCCDcCCEHsIEHKEEEEQaAmQbAmQSQgAEEIahCNAUEAQQBBABABIABBEGokACABQQA2AhwgAUELNgIYIAEgASkCGDcDACMAQRBrIgAkACAAIAEpAgA3AghB7CBB4BBBAkG4JkHAJkElIABBCGoQjQFBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEEMNgIMQewgQZoKQQNB6CZB9CZBJiAAQQxqEFRBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEENNgIMQewgQZYKQQRBgCdBkCdBJyAAQQxqEFRBAEEAQQAQASAAQRBqJAAgAUEgaiQAIwBBIGsiASQAQaTgAS0AAEUEQEGk4AFBAToAAEGYJ0HE2QEQBwtBpCpB0CpBiCtBAEG+K0EOQf0lQQBB/SVBAEG0FUHBK0EPEAlBpCpBAUHEK0HIK0EoQRAQBiABQQA2AhwgAUERNgIYIAEgASkCGDcDECMAQRBrIgAkACAAIAEpAhA3AghBpCpBig9BA0HMK0HYK0EpIABBCGoQjQFBAEEAQQAQASAAQRBqJAAgAUEANgIcIAFBEjYCGCABIAEpAhg3AwgjAEEQayIAJAAgACABKQIINwIIQaQqQcoQQQRB4CtB8CtBKiAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQRM2AhggASABKQIYNwMAIwBBEGsiACQAIAAgASkCADcCCEGkKkHgEEECQfgrQYAsQSsgAEEIahCNAUEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRQ2AgxBpCpBmgpBA0GMLEGYLEEsIABBDGoQVEEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRU2AgxBpCpBlgpBBEGgLEGwLEEtIABBDGoQVEEAQQBBABABIABBEGokACABQSBqJABBoCBBhhJBtixBFkG4LEEXEAggAkEPakHGCkEAEIsDQZMRQQQQiwMjAEEQayIBJAAgAUEINgIMQaAgQZ8TQazZAUHELEEaIAFBDGoiAxBUQazZAUHILEEbIAMQVBAEIAFBEGokAEHlCkEMEJcBQboLQRgQlwFB7wpBJBCXAUHBC0EwEJcBQdAKQTwQlwFBtg9ByAAQlwEaQaAgEBBB2CxB/w1BBEEBEBFB2CxBgBZBABADQdgsQZoWQQEQA0HYLEGWFkECEANB2CxBkhZBAxADQdgsQY4WQQQQA0HYLEH8FUEFEANB2CxB+BVBBhADQdgsQfAVQQcQA0HYLEHsFUEIEANBwCBB1wpB+SxBHkH7LEEfEAgjAEEQayIBJAAgAUEANgIMQcAgQe4NQdgsQf4sQSAgAUEMaiIAEFRB2CxBgi1BISAAEFQQBCABQRBqJABBwCAQECACQRBqJAALvAECA38BfSMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBABCAAiAEKQMAIAQpAwgQpgMhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtDAAAAACEGCyACQQQ2AgALIANBEGokACAGC8MBAgN/AX4jAEEQayIEJAACfgJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBAwFC0GI6gEgBjYCACAEKAIMIAFGDQQLCwsgAkEENgIAQgAMAgsgAkEENgIAQn8MAQtCACAHfSAHIAVBLUYbCyAEQRBqJAAL1AECA38BfiMAQRBrIgQkAAJ/AkACQAJAIAAgAUcEQAJAAkAgAC0AACIFQS1HDQAgAEEBaiIAIAFHDQAMAQtBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAEQQxqIAMQggIhBwJAQYjqASgCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAtBiOoBIAY2AgAgBCgCDCABRg0DCwsLIAJBBDYCAEEADAMLIAdC/////w9YDQELIAJBBDYCAEF/DAELQQAgB6ciAGsgACAFQS1GGwsgBEEQaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAvZAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBQwEC0GI6gEgBjYCACAEKAIMIAFGDQMLCwsgAkEENgIAQQAMAwsgB0L//wNYDQELIAJBBDYCAEH//wMMAQtBACAHpyIAayAAIAVBLUYbCyAEQRBqJABB//8DcQu3AQIBfgJ/IwBBEGsiBSQAAkACQCAAIAFHBEBBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAFQQxqIAMQmgMhBAJAQYjqASgCACIABEAgBSgCDCABRw0BIABBxABGDQMMBAtBiOoBIAY2AgAgBSgCDCABRg0DCwsgAkEENgIAQgAhBAwBCyACQQQ2AgAgBEIAVQRAQv///////////wAhBAwBC0KAgICAgICAgIB/IQQLIAVBEGokACAEC8ABAgJ/AX4jAEEQayIEJAACfwJAAkAgACABRwRAQYjqASgCACEFQYjqAUEANgIAEC4aIAAgBEEMaiADEJoDIQYCQEGI6gEoAgAiAARAIAQoAgwgAUcNASAAQcQARg0EDAMLQYjqASAFNgIAIAQoAgwgAUYNAgsLIAJBBDYCAEEADAILIAZCgICAgHhTIAZC/////wdVcg0AIAanDAELIAJBBDYCAEH/////ByAGQgBVDQAaQYCAgIB4CyAEQRBqJAALMwEBfyABIAAoAgQiAWohAgNAIAEgAkYEQCAAIAI2AgQFIAFBADoAACABQQFqIQEMAQsLC5EBAQN/AkAgASACEPUBIQQjAEEQayIDJAAgBEH3////A00EQAJAIAQQvQEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJABQQFqEI8BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQ5wIgA0EANgIEIANBBGoQViADQRBqJAAMAQsQWwALCxYAIAAgASACQoCAgICAgICAgH8QhAILhwgBBX8gASgCACEEAkACQAJAAkACQAJAAkACfwJAAkACQAJAIANFDQAgAygCACIFRQ0AIABFBEAgAiEDDAMLIANBADYCACACIQMMAQsCQEHc4QEoAgAoAgBFBEAgAEUNASACRQ0MIAIhBQNAIAQsAAAiAwRAIAAgA0H/vwNxNgIAIABBBGohACAEQQFqIQQgBUEBayIFDQEMDgsLIABBADYCACABQQA2AgAgAiAFaw8LIAIhAyAARQ0DDAULIAQQqAEPC0EBIQYMAwtBAAwBC0EBCyEGA0AgBkUEQCAELQAAQQN2IgZBEGsgBUEadSAGanJBB0sNAwJ/IARBAWoiBiAFQYCAgBBxRQ0AGiAGLAAAQUBOBEAgBEEBayEEDAcLIARBAmoiBiAFQYCAIHFFDQAaIAYsAABBQE4EQCAEQQFrIQQMBwsgBEEDagshBCADQQFrIQNBASEGDAELA0ACQCAEQQNxIAQsAAAiBUEATHINACAEKAIAIgVBgYKECGsgBXJBgIGChHhxDQADQCADQQRrIQMgBCgCBCEFIARBBGohBCAFIAVBgYKECGtyQYCBgoR4cUUNAAsLIAXAQQBKBEAgA0EBayEDIARBAWohBAwBCwsgBUH/AXFBwgFrIgZBMksNAyAEQQFqIQQgBkECdCgCkIEBIQVBACEGDAALAAsDQCAGRQRAIANFDQcDQAJAIAQtAAAiBsAiBUEATA0AIARBA3EgA0EFSXJFBEACQANAIAQoAgAiBUGBgoQIayAFckGAgYKEeHENASAAIAVB/wFxNgIAIAAgBC0AATYCBCAAIAQtAAI2AgggACAELQADNgIMIABBEGohACAEQQRqIQQgA0EEayIDQQRLDQALIAQtAAAhBQsgBUH/AXEhBiAFwEEATA0BCyAAIAY2AgAgAEEEaiEAIARBAWohBCADQQFrIgMNAQwJCwsgBkHCAWsiBkEySw0DIARBAWohBCAGQQJ0KAKQgQEhBUEBIQYMAQsgBC0AACIGQQN2IgdBEGsgByAFQRp1anJBB0sNAQJAAkACfyAEQQFqIgcgBkGAAWsgBUEGdHIiBkEATg0AGiAHLQAAQYABayIHQT9LDQEgByAGQQZ0IghyIQYgBEECaiIHIAhBAE4NABogBy0AAEGAAWsiB0E/Sw0BIAcgBkEGdHIhBiAEQQNqCyEEIAAgBjYCACADQQFrIQMgAEEEaiEADAELQYjqAUEZNgIAIARBAWshBAwFC0EAIQYMAAsACyAEQQFrIQQgBQ0BIAQtAAAhBQsgBUH/AXENACAABEAgAEEANgIAIAFBADYCAAsgAiADaw8LQYjqAUEZNgIAIABFDQELIAEgBDYCAAtBfw8LIAEgBDYCACACCzEBAX9B3OEBKAIAIQEgAARAQdzhAUHk4AEgACAAQX9GGzYCAAtBfyABIAFB5OABRhsLOAAgAEHQD2sgACAAQZPx//8HShsiAEEDcQRAQQAPCyAAQewOaiIAQeQAbwRAQQEPCyAAQZADb0ULlxMCD38EfiMAQYABayIIJAAgAQRAAn8DQAJAAn8CQAJAAkAgAi0AACIGQSVHBEAgBg0BIAoMBwtBACEFQQEhCQJAIAItAAEiB0Etaw4EAgMDAgALIAdB3wBGDQEgBw0CCyAAIApqIAY6AAAgCkEBagwCCyAHIQUgAi0AAiEHQQIhCQtBACEOAkACfyACIAlqIAciEkErRmoiCSwAAEEwa0EJTQRAIAkgCEEMakEKQv////8PEIQCpyECIAgoAgwMAQsgCCAJNgIMQQAhAiAJCyIHLQAAIgZBwwBrIgtBFktBASALdEGZgIACcUVyDQAgAiIODQAgByAJRyEOCyAGQc8ARiAGQcUARnIEfyAHLQABIQYgB0EBagUgBwshAiAIQRBqIQcgBSEJQQAhBSMAQdAAayILJABB5QghDUEwIRBBqIAIIQwCQCAIAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAbAIgZBJWsOViEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0BAwQnLQcICQotLS0NLS0tLRASFBYYFxweIC0tLS0tLQACJgYFLQgCLQstLQwOLQ8tJRETFS0ZGx0fLQsgAygCGCIFQQZNDSIMKgsgAygCGCIFQQZLDSkgBUGHgAhqDCILIAMoAhAiBUELSw0oIAVBjoAIagwhCyADKAIQIgVBC0sNJyAFQZqACGoMIAsgAzQCFELsDnxC5AB/IRQMIwtB3wAhEAsgAzQCDCEUDCELQa8TIQ0MHwsgAzQCFCIVQuwOfCEUAkAgAygCHCIFQQJMBEAgFCAVQusOfCADEIMCQQFGGyEUDAELIAVB6QJJDQAgFULtDnwgFCADEIMCQQFGGyEUCyAGQecARg0ZDCALIAM0AgghFAweC0ECIQUgAygCCCIGRQRAQgwhFAwgCyAGrCIUQgx9IBQgBkEMShshFAwfCyADKAIcQQFqrCEUQQMhBQweCyADKAIQQQFqrCEUDBsLIAM0AgQhFAwaCyAIQQE2AnxBwx8hBQweC0GngAhBpoAIIAMoAghBC0obDBQLQdQVIQ0MFgtBACEMQQAhESMAQRBrIg8kACADNAIUIRQCfiADKAIQIg1BDE8EQCANIA1BDG0iBkEMbGsiBUEMaiAFIAVBAEgbIQ0gBiAFQR91aqwgFHwhFAsgD0EMaiEGIBRCAn1CiAFYBEAgFKciDEHEAGtBAnUhBQJAIAYCfyAMQQNxRQRAIAVBAWshBSAGRQ0CQQEMAQsgBkUNAUEACzYCAAsgDEGA54QPbCAFQYCjBWxqQYDWr+MHaqwMAQsgFELkAH0iFCAUQpADfyIWQpADfn0iFUI/h6cgFqdqIRMCQAJAAkAgFaciBUGQA2ogBSAVQgBTGyIFBH8CfyAFQcgBTgRAIAVBrAJPBEBBAyEMIAVBrAJrDAILQQIhDCAFQcgBawwBCyAFQeQAayAFIAVB4wBKIgwbCyIFDQFBAAVBAQshBSAGDQEMAgsgBUECdiERIAVBA3FFIQUgBkUNAQsgBiAFNgIACyAUQoDnhA9+IBEgDEEYbCATQeEAbGpqIAVrrEKAowV+fEKAqrrDA3wLIRQgDUECdEGwnAFqKAIAIgVBgKMFaiAFIA8oAgwbIAUgDUEBShshBSADKAIMIQYgAzQCCCEVIAM0AgQhFiADNAIAIA9BEGokACAUIAWsfCAGQQFrrEKAowV+fCAVQpAcfnwgFkI8fnx8IAM0AiR9DAgLIAM0AgAhFAwVCyAIQQE2AnxBxR8hBQwZC0HBFSENDBILIAMoAhgiBUEHIAUbrAwECyADKAIcIAMoAhhrQQdqQQdurSEUDBELIAMoAhwgAygCGEEGakEHcGtBB2pBB26tIRQMEAsgAxCDAq0hFAwPCyADNAIYCyEUQQEhBQwPC0GpgAghDAwKC0GqgAghDAwJCyADNAIUQuwOfELkAIEiFCAUQj+HIhSFIBR9IRQMCgsgAzQCFCIVQuwOfCEUIBVCpD9TDQogCyAUNwMwIAggB0H4EiALQTBqEIYBNgJ8IAchBQwOCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDgsgCyADKAIkIgVBkBxtIgZB5ABsIAUgBkGQHGxrwUE8bcFqNgJAIAggB0H+EiALQUBrEIYBNgJ8IAchBQwNCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDQsgAygCKEG07wEtAABBAXFFBEBBiO8BQYzvAUHA7wFB4O8BEBJBlO8BQeDvATYCAEGQ7wFBwO8BNgIAQbTvAUEBOgAACwwLCyAIQQE2AnxBux4hBQwLCyAUQuQAgSEUDAULIAVBgIAIcgsgBBCfAwwHC0GrgAghDAsgDCAEEJ8DIQ0LIAggB0HkACANIAMgBBCeAyIFNgJ8IAdBACAFGyEFDAULQQIhBQwBC0EEIQULAkAgCSAQIAkbIgZB3wBHBEAgBkEtRw0BIAsgFDcDECAIIAdB+RIgC0EQahCGATYCfCAHIQUMBAsgCyAUNwMoIAsgBTYCICAIIAdB8hIgC0EgahCGATYCfCAHIQUMAwsgCyAUNwMIIAsgBTYCACAIIAdB6xIgCxCGATYCfCAHIQUMAgtB7RsLIgUQqAE2AnwLIAtB0ABqJAAgBUUNAQJAIA5FBEAgCCgCfCEJDAELAn8CQAJAIAUtAAAiBkEraw4DAQABAAsgCCgCfAwBCyAFLQABIQYgBUEBaiEFIAgoAnxBAWsLIQkCQCAGQf8BcUEwRw0AA0AgBSwAASIHQTBrQQlLDQEgBUEBaiEFIAlBAWshCSAHQTBGDQALCyAIIAk2AnxBACEGA0AgBiIHQQFqIQYgBSAHaiwAAEEwa0EKSQ0ACyAOIAkgCSAOSRshBgJAIAAgCmogAygCFEGUcUgEf0EtBSASQStHDQEgBiAJayAHakEDQQUgCCgCDC0AAEHDAEYbSQ0BQSsLOgAAIAZBAWshBiAKQQFqIQoLIAYgCU0gASAKTXINAANAIAAgCmpBMDoAACAKQQFqIQogBkEBayIGIAlNDQEgASAKSw0ACwsgCCAJIAEgCmsiByAHIAlLGyIHNgJ8IAAgCmogBSAHEHEaIAgoAnwgCmoLIQogAkEBaiECIAEgCksNAQsLIAFBAWsgCiABIApGGyEKQQALIQYgACAKakEAOgAACyAIQYABaiQAIAYLugEBAn8gAEEORgRAQdEbQeEVIAEoAgAbDwsgAEH//wNxIgJB//8DRyAAQRB1IgNBBUpyRQRAIAEgA0ECdGooAgAiAEEIakGMFiAAGw8LQcYfIQACQAJ/AkACQAJAIANBAWsOBQABBAQCBAsgAkEBSw0DQeCcAQwCCyACQTFLDQJB8JwBDAELIAJBA0sNAUGwnwELIQAgAkUEQCAADwsDQCAALQAAIABBAWohAA0AIAJBAWsiAg0ACwsgAAsOACAAEKEDBEAgABAtCwsnACAAQQBHIABBmIMBR3EgAEGwgwFHcSAAQYzuAUdxIABBpO4BR3EL5AIBA38CQCABLQAADQBB2hUQhgIiAQRAIAEtAAANAQsgAEEMbEHQgwFqEIYCIgEEQCABLQAADQELQecVEIYCIgEEQCABLQAADQELQc8bIQELAkADQCABIAJqLQAAIgRFIARBL0ZyRQRAQRchBCACQQFqIgJBF0cNAQwCCwsgAiEEC0HPGyEDAkACQAJAAkACQCABLQAAIgJBLkYNACABIARqLQAADQAgASEDIAJBwwBHDQELIAMtAAFFDQELIANBzxsQ0AFFDQAgA0GuFRDQAQ0BCyAARQRAQfSCASECIAMtAAFBLkYNAgtBAA8LQYjuASgCACICBEADQCADIAJBCGoQ0AFFDQIgAigCICICDQALC0EkEDQiAgRAIAJB9IIBKQIANwIAIAJBCGoiASADIAQQcRogASAEakEAOgAAIAJBiO4BKAIANgIgQYjuASACNgIACyACQfSCASAAIAJyGyECCyACCyUBAX8jAEEQayICJAAgAiABNgIMIABBxhAgARCkAyACQRBqJAALwR4CD38FfiMAQZABayIDJAAgA0EAQZAB/AsAIANBfzYCTCADIAA2AiwgA0HhADYCICADIAA2AlQgASEEIAIhDyMAQbACayIFJAAgAygCTBoCQAJAIAMoAgRFBEAgAxDJAxogAygCBEUNAQsgBC0AACIBRQ0BAkACQANAAkACQCABQf8BcSIAEH0EQANAIAQiAUEBaiEEIAEtAAEQfQ0ACyADQgAQZANAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCxB9DQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFHx8IRQMAQsCfwJAAkAgAEElRgRAIAQtAAEiAEEqRg0BIABBJUcNAgsgA0IAEGQCQCAELQAAQSVGBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiARB9DQALIARBAWohBAwBCyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEBDAELIAMQJiEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgAUEATiANcg0KDAkLIAMoAgQgAygCLGusIAMpA3ggFHx8IRQgBCEBDAMLQQAhByAEQQJqDAELAkAgAEEwayIAQQlLDQAgBC0AAkEkRw0AIwBBEGsiASAPNgIMIAEgDyAAQQJ0akEEayAPIABBAUsbIgBBBGo2AgggACgCACEHIARBA2oMAQsgDygCACEHIA9BBGohDyAEQQFqCyEBQQAhC0EAIQIgAS0AACIEQTBrQf8BcUEJTQRAA0AgAkEKbCAEQf8BcWpBMGshAiABLQABIQQgAUEBaiEBIARBMGtB/wFxQQpJDQALCyAEQf8BcUHtAEcEfyABBUEAIQkgB0EARyELIAEtAAEhBEEAIQogAUEBagsiBkEBaiEBQQMhAAJAAkACQAJAAkACQCAEQf8BcUHBAGsOOgQJBAkEBAQJCQkJAwkJCQkJCQQJCQkJBAkJBAkJCQkJBAkEBAQEBAAEBQkBCQQEBAkJBAIECQkECQIJCyAGQQJqIAEgBi0AAUHoAEYiABshAUF+QX8gABshAAwECyAGQQJqIAEgBi0AAUHsAEYiABshAUEDQQEgABshAAwDC0EBIQAMAgtBAiEADAELQQAhACAGIQELQQEgACABLQAAIgBBL3FBA0YiBBshEAJAIABBIHIgACAEGyIMQdsARg0AAkAgDEHuAEcEQCAMQeMARw0BQQEgAiACQQFMGyECDAILIAcgECAUEKUDDAILIANCABBkA0ACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLEH0NAAsgAygCBCEEIAMpA3BCAFkEQCADIARBAWsiBDYCBAsgBCADKAIsa6wgAykDeCAUfHwhFAsgAyACrCISEGQCQCADKAIEIgAgAygCaEcEQCADIABBAWo2AgQMAQsgAxAmQQBIDQQLIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLQRAhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAMQdgAaw4hBgsLAgsLCwsLAQsCBAEBAQsFCwsLCwsDBgsLAgsECwsGAAsgDEHBAGsiAEEGS0EBIAB0QfEAcUVyDQoLIAVBCGogAyAQQQAQqAMgAykDeEIAIAMoAgQgAygCLGusfVENDiAHRQ0JIAUpAxAhEiAFKQMIIRMgEA4DBQYHCQsgDEEQckHzAEYEQCAFQSBqQX9BgQIQmAIgBUEAOgAgIAxB8wBHDQggBUEAOgBBIAVBADoALiAFQQA2ASoMCAsgBUEgaiABLQABIgBB3gBGIgRBgQIQmAIgBUEAOgAgIAFBAmogAUEBaiAEGyEGAn8CQAJAIAFBAkEBIAQbai0AACIBQS1HBEAgAUHdAEYNASAAQd4ARyEIIAYMAwsgBSAAQd4ARyIIOgBODAELIAUgAEHeAEciCDoAfgsgBkEBagshAQNAAkAgAS0AACIAQS1HBEAgAEUNDyAAQd0ARg0KDAELQS0hACABLQABIgZFIAZB3QBGcg0AIAFBAWohDgJAIAYgAUEBay0AACIETQRAIAYhAAwBCwNAIARBAWoiBCAFQSBqaiAIOgAAIAQgDi0AACIASQ0ACwsgDiEBCyAAIAVBIGpqIAg6AAEgAUEBaiEBDAALAAtBCCEEDAILQQohBAwBC0EAIQQLQgAhEkEAIQJBACEGQQAhDiMAQRBrIggkAAJAIARBAUcgBEEkTXFFBEBBiOoBQRw2AgAMAQsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiABB9DQALAkACQCAAQStrDgMAAQABC0F/QQAgAEEtRhshDiADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEADAELIAMQJiEACwJAAkACQAJAIARBAEcgBEEQR3EgAEEwR3JFBEACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBX3FB2ABGBEBBECEEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAABBEEkNAyADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZAwGCyAEDQFBCCEEDAILIARBCiAEGyIEIABBgf8Aai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZEGI6gFBHDYCAAwECyAEQQpHDQAgAEEwayICQQlNBEBBACEAA0AgAEEKbCACaiIAQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQJgtBMGsiAkEJTXENAAsgAK0hEgsgAkEJSw0CIBJCCn4hEyACrSEVA0ACQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEEwayICQQlNIBMgFXwiEkKas+bMmbPmzBlUcUUEQCACQQlNDQEMBQsgEkIKfiITIAKtIhVCf4VYDQELC0EKIQQMAQsgBCAEQQFrcQRAIABBgf8Aai0AACIGIARJBEADQCAGIAIgBGxqIgJBx+PxOEkCfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBgf8Aai0AACIGIARJcQ0ACyACrSESCyAEIAZNDQEgBK0hEwNAIBIgE34iFSAGrUL/AYMiFkJ/hVYNAiAVIBZ8IRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgZNDQIgCCATQgAgEkIAEEAgCCkDCFANAAsMAQsgBEEXbEEFdkEHcSwAgYEBIREgAEGB/wBqLQAAIgIgBEkEQANAIAIgBiARdCIAciEGIABBgICAwABJAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAAAiAiAESXENAAsgBq0hEgsgAiAETw0AQn8gEa0iE4giFSASVA0AA0AgAq1C/wGDIBIgE4aEIRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgJNDQEgEiAVWA0ACwsgBCAAQYH/AGotAABNDQADQCAEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmC0GB/wBqLQAASw0AC0GI6gFBxAA2AgBBACEOQn8hEgsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgDkEBckUgEkJ/UXEEQEGI6gFBxAA2AgBCfiESDAELIBIgDqwiE4UgE30hEgsgCEEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQkgB0UgDEHwAEdyRQRAIAcgEj4CAAwFCyAHIBAgEhClAwwECyAHIBMgEhCmAzgCAAwDCyAHIBMgEhCVAjkDAAwCCyAHIBM3AwAgByASNwMIDAELQR8gAkEBaiAMQeMARyIGGyEIAn8gEEEBRgRAIAchAiALBEAgCEECdBA0IgJFDQULIAVCADcCqAJBACEEAkACQANAIAIhAANAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxAmCyICIAVqLQAhRQ0CIAUgAjoAGyAFQRxqIAVBG2pBASAFQagCahDSASICQX5GDQAgAkF/RgRAQQAhCQwECyAABEAgACAEQQJ0aiAFKAIcNgIAIARBAWohBAsgC0UgBCAIR3INAAsgACAIQQF0QQFyIghBAnQQ3AEiAg0AC0EAIQkgACEKQQEhCwwIC0EAIQkgACAFQagCagR/IAUoAqgCBUEAC0UNAhoLIAAhCgwGCyALBEBBACEEIAgQNCICRQ0EA0AgAiEAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADECYLIgIgBWotACFFBEAgACEJQQAMBAsgACAEaiACOgAAIARBAWoiBCAIRw0ACyAAIAhBAXRBAXIiCBDcASICDQALQQAhCiAAIQlBASELDAYLQQAhBCAHBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiACAFai0AIQRAIAQgB2ogADoAACAEQQFqIQQMAQUgByIAIQlBAAwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsgBWotACENAAtBACEAQQAhCUEACyEKIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhNQIAYgEiATUXJFcg0FIAsEQCAHIAA2AgALIAxB4wBGDQAgCgRAIAogBEECdGpBADYCAAsgCUUEQEEAIQkMAQsgBCAJakEAOgAACyADKAIEIAMoAixrrCADKQN4IBR8fCEUIA0gB0EAR2ohDQsgAUEBaiEEIAEtAAEiAQ0BDAULC0EBIQtBACEJQQAhCgsgDUF/IA0bIQ0LIAtFDQEgCRAtIAoQLQwBC0F/IQ0LIAVBsAJqJAAgA0GQAWokACANC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsL2QMCBX8CfiMAQSBrIgQkACABQv///////z+DIQcCQCABQjCIQv//AYMiCKciA0GB/wBrQf0BTQRAIAdCGYinIQICQCAAUCABQv///w+DIgdCgICACFQgB0KAgIAIURtFBEAgAkEBaiECDAELIAAgB0KAgIAIhYRCAFINACACQQFxIAJqIQILQQAgAiACQf///wNLIgUbIQJBgYF/QYCBfyAFGyADaiEDDAELIAAgB4RQIAhC//8BUnJFBEAgB0IZiKdBgICAAnIhAkH/ASEDDAELIANB/oABSwRAQf8BIQMMAQtBgP8AQYH/ACAIUCIFGyIGIANrIgJB8ABKBEBBACECQQAhAwwBCyAEQRBqIAAgByAHQoCAgICAgMAAhCAFGyIHQYABIAJrEEQgBCAAIAcgAhCKASAEKQMIIgBCGYinIQICQCAEKQMAIAMgBkcgBCkDECAEKQMYhEIAUnGthCIHUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAcgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIAJBgICABHMgAiACQf///wNLIgMbIQILIARBIGokACABQiCIp0GAgICAeHEgA0EXdHIgAnK+C4kEAgN/AX4CQAJAAn8CQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyICQStrDgMAAQABCyACQS1GIAFFAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABAmCyIDQTprIgFBdUtyDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAkE6ayEBIAIhA0EACyEEIAFBdkkNAAJAIANBMGtBCk8NAEEAIQIDQCADIAJBCmxqAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyEDQTBrIQIgAkHMmbPmAEggA0EwayIBQQlNcQ0ACyACrCEFIAFBCk8NAANAIAOtIAVCCn58IQUCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLIgNBMGsiAUEJTSAFQjB9IgVCro+F18fC66MBU3ENAAsgAUEKTw0AA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAV9IAUgBBshBQwBC0KAgICAgICAgIB/IQUgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQuJMgMRfwd+AXwjAEEwayIMJAACQAJAIAJBAksNACACQQJ0IgIoAux+IREgAigC4H4hEANAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICEH0NAAtBASEIAkACQCACQStrDgMAAQABC0F/QQEgAkEtRhshCCABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQJiECCwJAAkAgAkFfcUHJAEYEQANAIAZBB0YNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLACKCCAGQQFqIQYgAkEgckYNAAsLIAZBA0cEQCAGQQhGIgcNASADRSAGQQRJcg0CIAcNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRSAGQQRJcg0AIBVCAFMhAgNAIAJFBEAgASABKAIEQQFrNgIECyAGQQFrIgZBA0sNAAsLQgAhFSMAQRBrIgckACAIskMAAIB/lLwiA0H///8DcSEIAn8gA0EXdiICQf8BcSIBBEAgAUH/AUcEQCAIrUIZhiEVIAJB/wFxQYD/AGoMAgsgCK1CGYYhFUH//wEMAQtBACAIRQ0AGiAHIAitQgAgCGciAUHRAGoQRCAHKQMIQoCAgICAgMAAhSEVIAcpAwAhFkGJ/wAgAWsLIQEgDCAWNwMAIAwgAa1CMIYgA0Efdq1CP4aEIBWENwMIIAdBEGokACAMKQMIIRUgDCkDACEWDAILAkACQAJAAkACQAJAIAYNAEEAIQYgAkFfcUHOAEcNAANAIAZBAkYNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLADnDSAGQQFqIQYgAkEgckYNAAsLIAYOBAMBAQABCwJAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmC0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRUgASkDcEIAUw0GIAEgASgCBEEBazYCBAwGCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICQTBrQQpJIAJBwQBrQRpJciACQd8ARnJFIAJB4QBrQRpPcUUEQCAGQQFqIQYMAQsLQoCAgICAgOD//wAhFSACQSlGDQUgASkDcCIWQgBZBEAgASABKAIEQQFrNgIECwJAIAMEQCAGDQEMBQtBiOoBQRw2AgBCACEWDAILA0AgFkIAWQRAIAEgASgCBEEBazYCBAsgBkEBayIGDQALDAMLIAEpA3BCAFkEQCABIAEoAgRBAWs2AgQLQYjqAUEcNgIACyABQgAQZAwCCwJAIAJBMEcNAAJ/IAEoAgQiByABKAJoRwRAIAEgB0EBajYCBCAHLQAADAELIAEQJgtBX3FB2ABGBEAjAEGwA2siBSQAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyECAkACfwNAIAJBMEcEQAJAIAJBLkcNBCABKAIEIgIgASgCaEYNACABIAJBAWo2AgQgAi0AAAwDCwUgASgCBCICIAEoAmhHBH9BASEPIAEgAkEBajYCBCACLQAABUEBIQ8gARAmCyECDAELCyABECYLIgJBMEcEQEEBIQsMAQsDQCAYQgF9IRgCfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABECYLIgJBMEYNAAtBASELQQEhDwtCgICAgICAwP8/IRYDQAJAIAIhBgJAAkAgAkEwayINQQpJDQAgAkEuRyIHIAJBIHIiBkHhAGtBBUtxDQIgBw0AIAsNAkEBIQsgFSEYDAELIAZB1wBrIA0gAkE5ShshAgJAIBVCB1cEQCACIAlBBHRqIQkMAQsgFUIcWARAIAVBMGogAhBPIAVBIGogGiAWQgBCgICAgICAwP0/EC8gBUEQaiAFKQMwIAUpAzggBSkDICIaIAUpAygiFhAvIAUgBSkDECAFKQMYIBcgGRBKIAUpAwghGSAFKQMAIRcMAQsgAkUgCnINACAFQdAAaiAaIBZCAEKAgICAgICA/z8QLyAFQUBrIAUpA1AgBSkDWCAXIBkQSkEBIQogBSkDSCEZIAUpA0AhFwsgFUIBfCEVQQEhDwsgASgCBCICIAEoAmhHBH8gASACQQFqNgIEIAItAAAFIAEQJgshAgwBCwsCfiAPRQRAAkACQCABKQNwQgBZBEAgASABKAIEIgJBAWs2AgQgA0UNASABIAJBAms2AgQgC0UNAiABIAJBA2s2AgQMAgsgAw0BCyABQgAQZAsgBUHgAGpEAAAAAAAAAAAgCLemEGwgBSkDYCEXIAUpA2gMAQsgFUIHVwRAIBUhFgNAIAlBBHQhCSAWQgF8IhZCCFINAAsLAkACQAJAIAJBX3FB0ABGBEAgASADEKcDIhZCgICAgICAgICAf1INAyADBEAgASkDcEIAWQ0CDAMLQgAhFyABQgAQZEIADAQLQgAhFiABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEWCyAJRQRAIAVB8ABqRAAAAAAAAAAAIAi3phBsIAUpA3AhFyAFKQN4DAELIBggFSALG0IChiAWfEIgfSIVQQAgEWutVQRAQYjqAUHEADYCACAFQaABaiAIEE8gBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEC8gBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AEC8gBSkDgAEhFyAFKQOIAQwBCyARQeIBa6wgFVcEQCAJQQBOBEADQCAFQaADaiAXIBlCAEKAgICAgIDA/79/EEogFyAZQoCAgICAgID/PxCtAyEBIAVBkANqIBcgGSAFKQOgAyAXIAFBAE4iAhsgBSkDqAMgGSACGxBKIAIgCUEBdCIBciEJIBVCAX0hFSAFKQOYAyEZIAUpA5ADIRcgAUEATg0ACwsCfiAVQSAgEWutfCIWpyIBQQAgAUEAShsgECAWIBCtUxsiAUHxAE8EQCAFQYADaiAIEE8gBSkDiAMhFiAFKQOAAyEaQgAMAQsgBUHgAmpBkAEgAWsQmQIQbCAFQdACaiAIEE8gBSkD0AIhGiAFQfACaiAFKQPgAiAFKQPoAiAFKQPYAiIWEKwDIAUpA/gCIRsgBSkD8AILIRggBUHAAmogCSAJQQFxRSAXIBlCAEIAEIcBQQBHIAFBIElxcSIBchCcASAFQbACaiAaIBYgBSkDwAIgBSkDyAIQLyAFQZACaiAFKQOwAiAFKQO4AiAYIBsQSiAFQaACaiAaIBZCACAXIAEbQgAgGSABGxAvIAVBgAJqIAUpA6ACIAUpA6gCIAUpA5ACIAUpA5gCEEogBUHwAWogBSkDgAIgBSkDiAIgGCAbEIgCIAUpA/ABIhggBSkD+AEiFkIAQgAQhwFFBEBBiOoBQcQANgIACyAFQeABaiAYIBYgFacQqwMgBSkD4AEhFyAFKQPoAQwBC0GI6gFBxAA2AgAgBUHQAWogCBBPIAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQLyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAEC8gBSkDsAEhFyAFKQO4AQshFSAMIBc3AxAgDCAVNwMYIAVBsANqJAAgDCkDGCEVIAwpAxAhFgwECyABKQNwQgBTDQAgASABKAIEQQFrNgIECyABIQYgAiEHIAghDSADIQhBACEDIwBBkMYAayIEJABBACARayIPIBBrIRQCQAJ/A0ACQCAHQTBHBEAgB0EuRw0EIAYoAgQiASAGKAJoRg0BIAYgAUEBajYCBCABLQAADAMLIAYoAgQiASAGKAJoRwRAIAYgAUEBajYCBCABLQAAIQcFIAYQJiEHC0EBIQMMAQsLIAYQJgsiB0EwRgRAA0AgFUIBfSEVAn8gBigCBCIBIAYoAmhHBEAgBiABQQFqNgIEIAEtAAAMAQsgBhAmCyIHQTBGDQALQQEhAwtBASELCyAEQQA2ApAGAn4CQAJAAkACQCAHQS5GIgEgB0EwayICQQlNcgRAA0ACQCABQQFxBEAgC0UEQCAWIRVBASELDAILIANFIQEMBAsgFkIBfCEWIAlB/A9MBEAgDiAWpyAHQTBGGyEOIARBkAZqIAlBAnRqIgEgCgR/IAcgASgCAEEKbGpBMGsFIAILNgIAQQEhA0EAIApBAWoiASABQQlGIgEbIQogASAJaiEJDAELIAdBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhDgsCfyAGKAIEIgEgBigCaEcEQCAGIAFBAWo2AgQgAS0AAAwBCyAGECYLIgdBLkYiASAHQTBrIgJBCklyDQALCyAVIBYgCxshFSADRSAHQV9xQcUAR3JFBEACQCAGIAgQpwMiF0KAgICAgICAgIB/Ug0AIAhFDQRCACEXIAYpA3BCAFMNACAGIAYoAgRBAWs2AgQLIBUgF3whFQwECyADRSEBIAdBAEgNAQsgBikDcEIAUw0AIAYgBigCBEEBazYCBAsgAUUNAUGI6gFBHDYCAAsgBkIAEGRCACEVQgAMAQsgBCgCkAYiAUUEQCAERAAAAAAAAAAAIA23phBsIAQpAwghFSAEKQMADAELIBUgFlIgFkIJVXIgEEEeTUEAIAEgEHYbckUEQCAEQTBqIA0QTyAEQSBqIAEQnAEgBEEQaiAEKQMwIAQpAzggBCkDICAEKQMoEC8gBCkDGCEVIAQpAxAMAQsgD0EBdq0gFVMEQEGI6gFBxAA2AgAgBEHgAGogDRBPIARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQLyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQLyAEKQNIIRUgBCkDQAwBCyARQeIBa6wgFVUEQEGI6gFBxAA2AgAgBEGQAWogDRBPIARBgAFqIAQpA5ABIAQpA5gBQgBCgICAgICAwAAQLyAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAEC8gBCkDeCEVIAQpA3AMAQsgCgRAIApBCEwEQCAEQZAGaiAJQQJ0aiIBKAIAIQYDQCAGQQpsIQYgCkEBaiIKQQlHDQALIAEgBjYCAAsgCUEBaiEJCwJAIA5BCU4gFUIRVXIgFaciCiAOSHINACAVQglRBEAgBEHAAWogDRBPIARBsAFqIAQoApAGEJwBIARBoAFqIAQpA8ABIAQpA8gBIAQpA7ABIAQpA7gBEC8gBCkDqAEhFSAEKQOgAQwCCyAVQghXBEAgBEGQAmogDRBPIARBgAJqIAQoApAGEJwBIARB8AFqIAQpA5ACIAQpA5gCIAQpA4ACIAQpA4gCEC8gBEHgAWpBCCAKa0ECdCgCwH4QTyAEQdABaiAEKQPwASAEKQP4ASAEKQPgASAEKQPoARCqAyAEKQPYASEVIAQpA9ABDAILIBAgCkF9bGpBG2oiAkEeTEEAIAQoApAGIgEgAnYbDQAgBEHgAmogDRBPIARB0AJqIAEQnAEgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQLyAEQbACaiAKQQJ0QZj+AGooAgAQTyAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhAvIAQpA6gCIRUgBCkDoAIMAQsDQCAEQZAGaiAJIgFBAWsiCUECdGooAgBFDQALQQAhDgJAIApBCW8iAkUEQEEAIQIMAQsgAkEJaiACIBVCAFMbIRICQCABRQRAQQAhAkEAIQEMAQtBgJTr3ANBACASa0ECdEHg/gBqKAIAIgVtIQtBACEHQQAhBkEAIQIDQCAEQZAGaiIPIAZBAnRqIgMgByADKAIAIgkgBW4iCGoiAzYCACACQQFqQf8PcSACIANFIAIgBkZxIgMbIQIgCkEJayAKIAMbIQogCyAJIAUgCGxrbCEHIAZBAWoiBiABRw0ACyAHRQ0AIAFBAnQgD2ogBzYCACABQQFqIQELIAogEmtBCWohCgsDQCAEQZAGaiACQQJ0aiEPIApBJEghBgJAA0AgBkUEQCAKQSRHDQIgDygCAEHR6fkETw0CCyABQf8PaiEJQQAhAwNAIAEhCCADrSAEQZAGaiAJQf8PcSILQQJ0aiIBNQIAQh2GfCIVQoGU69wDVAR/QQAFIBUgFUKAlOvcA4AiFkKAlOvcA359IRUgFqcLIQMgASAVPgIAIAggCCALIAggFVAbIAIgC0YbIAsgCEEBa0H/D3EiB0cbIQEgC0EBayEJIAIgC0cNAAsgDkEdayEOIAghASADRQ0ACyACQQFrQf8PcSICIAFGBEAgBEGQBmoiCCABQf4PakH/D3FBAnRqIgEgASgCACAHQQJ0IAhqKAIAcjYCACAHIQELIApBCWohCiAEQZAGaiACQQJ0aiADNgIADAELCwJAA0AgAUEBakH/D3EhCCAEQZAGaiABQQFrQf8PcUECdGohEgNAQQlBASAKQS1KGyETAkADQCACIQNBACEGAkADQAJAIAMgBmpB/w9xIgIgAUYNACAEQZAGaiACQQJ0aigCACIHIAZBAnQoArB+IgJJDQAgAiAHSQ0CIAZBAWoiBkEERw0BCwsgCkEkRw0AQgAhFUEAIQZCACEWA0AgASADIAZqQf8PcSICRgRAIAFBAWpB/w9xIgFBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAJBAnRqKAIAEJwBIARB8AVqIBUgFkIAQoCAgIDlmreOwAAQLyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBKIAQpA+gFIRYgBCkD4AUhFSAGQQFqIgZBBEcNAAsgBEHQBWogDRBPIARBwAVqIBUgFiAEKQPQBSAEKQPYBRAvQgAhFSAEKQPIBSEWIAQpA8AFIRcgDkHxAGoiByARayIJQQAgCUEAShsgECAJIBBIIggbIgZB8ABNDQIMBQsgDiATaiEOIAEhAiABIANGDQALQYCU69wDIBN2IQVBfyATdEF/cyELQQAhBiADIQIDQCAEQZAGaiIPIANBAnRqIgcgBiAHKAIAIgkgE3ZqIgc2AgAgAkEBakH/D3EgAiAHRSACIANGcSIHGyECIApBCWsgCiAHGyEKIAkgC3EgBWwhBiADQQFqQf8PcSIDIAFHDQALIAZFDQEgAiAIRwRAIAFBAnQgD2ogBjYCACAIIQEMAwsgEiASKAIAQQFyNgIADAELCwsgBEGQBWpB4QEgBmsQmQIQbCAEQbAFaiAEKQOQBSAEKQOYBSAWEKwDIAQpA7gFIRogBCkDsAUhGSAEQYAFakHxACAGaxCZAhBsIARBoAVqIBcgFiAEKQOABSAEKQOIBRCpAyAEQfAEaiAXIBYgBCkDoAUiFSAEKQOoBSIYEIgCIARB4ARqIBkgGiAEKQPwBCAEKQP4BBBKIAQpA+gEIRYgBCkD4AQhFwsCQCADQQRqQf8PcSICIAFGDQACQCAEQZAGaiACQQJ0aigCACICQf/Jte4BTQRAIAJFIANBBWpB/w9xIAFGcQ0BIARB8ANqIA23RAAAAAAAANA/ohBsIARB4ANqIBUgGCAEKQPwAyAEKQP4AxBKIAQpA+gDIRggBCkD4AMhFQwBCyACQYDKte4BRwRAIARB0ARqIA23RAAAAAAAAOg/ohBsIARBwARqIBUgGCAEKQPQBCAEKQPYBBBKIAQpA8gEIRggBCkDwAQhFQwBCyANtyEcIAEgA0EFakH/D3FGBEAgBEGQBGogHEQAAAAAAADgP6IQbCAEQYAEaiAVIBggBCkDkAQgBCkDmAQQSiAEKQOIBCEYIAQpA4AEIRUMAQsgBEGwBGogHEQAAAAAAADoP6IQbCAEQaAEaiAVIBggBCkDsAQgBCkDuAQQSiAEKQOoBCEYIAQpA6AEIRULIAZB7wBLDQAgBEHQA2ogFSAYQgBCgICAgICAwP8/EKkDIAQpA9ADIAQpA9gDQgBCABCHAQ0AIARBwANqIBUgGEIAQoCAgICAgMD/PxBKIAQpA8gDIRggBCkDwAMhFQsgBEGwA2ogFyAWIBUgGBBKIARBoANqIAQpA7ADIAQpA7gDIBkgGhCIAiAEKQOoAyEWIAQpA6ADIRcCQCAUQQJrIAdB/////wdxTg0AIAQgFkL///////////8AgzcDmAMgBCAXNwOQAyAEQYADaiAXIBZCAEKAgICAgICA/z8QLyAEKQOQAyAEKQOYA0KAgICAgICAuMAAEK0DIQIgBCkDiAMgFiACQQBOIgEbIRYgBCkDgAMgFyABGyEXIAggBiAJRyACQQBIcnEgFSAYQgBCABCHAUEAR3FFIBQgASAOaiIOQe4Aak5xDQBBiOoBQcQANgIACyAEQfACaiAXIBYgDhCrAyAEKQP4AiEVIAQpA/ACCyEWIAwgFTcDKCAMIBY3AyAgBEGQxgBqJAAgDCkDKCEVIAwpAyAhFgwCC0IAIRYMAQtCACEVCyAAIBY3AwAgACAVNwMIIAxBMGokAAvDBgIEfwN+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEIcBRQ0AAn8gBEL///////8/gyEKAn8gBEIwiKdB//8BcSIHQf//AUcEQEEEIAcNARpBAkEDIAMgCoRQGwwCCyADIAqEUAsLRQ0AIAJCMIinIghB//8BcSIGQf//AUcNAQsgBUEQaiABIAIgAyAEEC8gBSAFKQMQIgIgBSkDGCIBIAIgARCqAyAFKQMIIQIgBSkDACEEDAELIAEgAkL///////////8AgyIKIAMgBEL///////////8AgyIJEIcBQQBMBEAgASAKIAMgCRCHAQRAIAEhBAwCCyAFQfAAaiABIAJCAEIAEC8gBSkDeCECIAUpA3AhBAwBCyAEQjCIp0H//wFxIQcgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQLyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEC8gBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQsgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogC30gAyAEVq19IglCAFkEQCAJIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEC8gBSkDKCECIAUpAyAhBAwFCyAJQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiALfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQLyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ggBkEBayEGIARCAYYhBCAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAws0AQF/IAFBgICAgARPBEAQjAEACyAAIAEQswIiAjYCBCAAIAI2AgAgACACIAFBAnRqNgIICwoAIABBMGtBCkkLFwAgAEEwa0EKSSAAQSByQeEAa0EGSXILEwAgAEEgciAAIABBwQBrQRpJGwspAQF/IAAoAgAiAQRAIAEQvQNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQspAQF/IAAoAgAiAQRAIAEQwwNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQsUACACIAAgASAAayIAEE0gACACagskAQJ/IwBBEGsiAiQAIAEgABDTASEDIAJBEGokACABIAAgAxsLDAAgAEEAIABBf0cbCywBAX8gAUEASARAEIwBAAsgACABEFMiAjYCBCAAIAI2AgAgACABIAJqNgIIC5EBAQN/AkAgASACEIoCIQQjAEEQayIDJAAgBEH3////B00EQAJAIAQQ1AEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQtAMgA0EAOgAHIANBB2oQXSADQRBqJAAMAQsQWwALCw8AIAAgACgCGCABajYCGAsXACAAIAI2AhwgACABNgIUIAAgATYCGAtUAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABIAIoAgAoAjQRBAAMAQsgAiADQQRqNgIYIAMgATYCACABC0F/Rw0AIABBADYCAAsLMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBBGo2AgwgASgCAAsnAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEoAgALLgEBfyMAQRBrIgEkACABIAA2AgBB6gsgARByEH9BoPEAKAIAEGEaIAFBEGokAAskAQF/AkAgACgCACICRQ0AIAIgARDCA0F/Rw0AIABBADYCAAsLPQEBfyADBEAgACADELcDIAAoAgQhAyACIAFrIgRFIAEgAkZyRQRAIAMgASAE/AoAAAsgACADIARqNgIECwsJACAAEI8CEC0LPQEBfyAAKAIYIgIgACgCHEYEQCAAIAEQowEgACgCACgCNBEEAA8LIAAgAkEBajYCGCACIAE6AAAgARCjAQsqAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEsAAAQowELDwAgACAAKAIAKAIYEQAAC6wCAQJ/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABIAA2AgwgAUEAOgAIIAAgACgCAEEMaygCAGoQ2QEEQCAAIAAoAgBBDGsoAgBqKAJIIgIEQCACEMUDCyABQQE6AAgLAkAgAS0ACEUNACAAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgACAAKAIAQQxrKAIAakEBENUBCwJAIAEoAgwiACAAKAIAQQxrKAIAaigCGEUNACABKAIMIgAgACgCAEEMaygCAGoQ2QFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIEQYDAAHFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgASgCDCIAIAAoAgBBDGsoAgBqQQEQ1QELCyABQRBqJAALCQAgABCQAhAtCy0AIABByABqEDogAEE8ahA6IABBMGoQOiAAQSRqEDogAEEYahA6IABBDGoQOgsEAEF/C3wBAn8gACAAKAJIIgFBAWsgAXI2AkggACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRAwAaCyAAQQA2AhwgAEIANwMQIAAoAgAiAUEEcQRAIAAgAUEgcjYCAEF/DwsgACAAKAIsIAAoAjBqIgI2AgggACACNgIEIAFBG3RBH3ULBQAQFwALLQAgAEHMAGoQOiAAQUBrEDogAEE0ahA6IABBKGoQOiAAQRxqEDogAEEQahA6CxIAIABFBEBBAA8LIAAgARCWAgsPACAAIAEgAkE0QTUQ0QMLvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEBAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALbwEFfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH/////B3NLGyEECyAAIANBAWoiBTYCACADLAABIAQhAiAFIQNBMGsiAUEKSQ0ACyACC/oSAhN/An4jAEFAaiIIJAAgCCABNgI8IAhBKWohFyAIQSdqIRggCEEoaiERAkACQAJAAkADQEEAIQcDQCABIQ0gByAOQf////8Hc0oNAiAHIA5qIQ4CQAJAAkACQCABIgctAAAiCwRAA0ACQAJAIAtB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQsDQCALLQABQSVHBEAgCyEBDAILIAdBAWohByALLQACIAtBAmoiASELQSVGDQALCyAHIA1rIgcgDkH/////B3MiGUoNCSAABEAgACANIAcQQgsgBw0HIAggATYCPCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AjxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AjwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ/AkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AjxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AjwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQTxqEM8DIg9BAEgNCiAIKAI8IQELQQAhB0F/IQkCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACQTBrIgpBCUsNACABLQADQSRHDQAgAUEEaiEBAn8gAEUEQCAEIApBAnRqQQo2AgBBAAwBCyADIApBA3RqKAIACwwBCyASDQYgAUECaiEBQQAgAEUNABogAiACKAIAIgpBBGo2AgAgCigCAAshCSAIIAE2AjwgCUEATgwBCyAIIAFBAWo2AjwgCEE8ahDPAyEJIAgoAjwhAUEBCyEUA0AgByEVQRwhCiABIhMsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAVQTpsakHv8ABqLQAAIgdBAWtB/wFxQQhJDQALIAggATYCPAJAIAdBG0cEQCAHRQ0MIBBBAE4EQCAARQRAIAQgEEECdGogBzYCAAwMCyAIIAMgEEEDdGopAwA3AzAMAgsgAEUNCCAIQTBqIAcgAiAGEM4DDAELIBBBAE4NC0EAIQcgAEUNCAsgAC0AAEEgcQ0LIAxB//97cSILIAwgDEGAwABxGyEMQQAhEEHuCCEWIBEhCgJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgEy0AACIHwCITQVNxIBMgB0EPcUEDRhsgEyAVGyIHQdgAaw4hBBYWFhYWFhYWEBYJBhAQEBYGFhYWFgIFAxYWChYBFhYEAAsCQCAHQcEAaw4HEBYLFhAQEAALIAdB0wBGDQsMFQsgCCkDMCEbQe4IDAULQQAhBwJAAkACQAJAAkACQAJAIBUOCAABAgMEHAUGHAsgCCgCMCAONgIADBsLIAgoAjAgDjYCAAwaCyAIKAIwIA6sNwMADBkLIAgoAjAgDjsBAAwYCyAIKAIwIA46AAAMFwsgCCgCMCAONgIADBYLIAgoAjAgDqw3AwAMFQtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDMCIbIhpQRQRAA0AgAUEBayIBIBqnQQ9xLQCAdSALcjoAACAaQg9WIBpCBIghGg0ACwsgASENIAxBCHFFIBtQcg0DIAdBBHZB7ghqIRZBAiEQDAMLIBEhASAIKQMwIhsiGlBFBEADQCABQQFrIgEgGqdBB3FBMHI6AAAgGkIHViAaQgOIIRoNAAsLIAEhDSAMQQhxRQ0CIAkgFyABayIBIAEgCUgbIQkMAgsgCCkDMCIbQgBTBEAgCEIAIBt9Ihs3AzBBASEQQe4IDAELIAxBgBBxBEBBASEQQe8IDAELQfAIQe4IIAxBAXEiEBsLIRYgGyAREKYBIQ0LIBQgCUEASHENESAMQf//e3EgDCAUGyEMIBtCAFIgCXJFBEAgESENQQAhCQwOCyAJIBtQIBEgDWtqIgEgASAJSBshCQwNCyAILQAwIQcMCwsgCCgCMCIBQZUcIAEbIg1BAEH/////ByAJIAlB/////wdPGyIHEOABIgEgDWsgByABGyIBIA1qIQogCUEATgRAIAshDCABIQkMDAsgCyEMIAEhCSAKLQAADQ8MCwsgCCkDMCIaUEUNAUEAIQcMCQsgCQRAIAgoAjAMAgtBACEHIABBICAPQQAgDBBFDAILIAhBADYCDCAIIBo+AgggCCAIQQhqIgc2AjBBfyEJIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEMwDIg1BAEgNDyANIAkgB2tLDQAgC0EEaiELIAcgDWoiByAJSQ0BCwtBPSEKIAdBAEgNDCAAQSAgDyAHIAwQRSAHRQRAQQAhBwwBC0EAIQogCCgCMCELA0AgCygCACINRQ0BIAhBBGoiCSANEMwDIg0gCmoiCiAHSw0BIAAgCSANEEIgC0EEaiELIAcgCksNAAsLIABBICAPIAcgDEGAwABzEEUgDyAHIAcgD0gbIQcMCAsgFCAJQQBIcQ0JQT0hCiAAIAgrAzAgDyAJIAwgByAFESAAIgdBAE4NBwwKCyAHLQABIQsgB0EBaiEHDAALAAsgAA0JIBJFDQNBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhDOA0EBIQ4gB0EBaiIHQQpHDQEMCwsLIAdBCk8EQEEBIQ4MCgsDQCAEIAdBAnRqKAIADQFBASEOIAdBAWoiB0EKRw0ACwwJC0EcIQoMBgsgCCAHOgAnQQEhCSAYIQ0gCyEMCyAJIAogDWsiCyAJIAtKGyIBIBBB/////wdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBlLDQQgAEEgIAcgCSAMEEUgACAWIBAQQiAAQTAgByAJIAxBgIAEcxBFIABBMCABIAtBABBFIAAgDSALEEIgAEEgIAcgCSAMQYDAAHMQRSAIKAI8IQEMAQsLC0EAIQ4MAwtBPSEKC0GI6gEgCjYCAAtBfyEOCyAIQUBrJAAgDgvCAgEEfyMAQdABayIFJAAgBSACNgLMASAFQaABaiICQQBBKPwLACAFIAUoAswBNgLIAQJAQQAgASAFQcgBaiAFQdAAaiACIAMgBBDQA0EASARAQX8hBAwBCyAAKAJMQQBIIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F/IAAQ3wENARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ0AMLIQIgBgRAIABBAEEAIAAoAiQRAwAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF/IAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEDQALIAVB0AFqJAAgBAt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDSAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCz4BAX8jAEEQayIBJAAgASAANgIMAn8gAEEETwRAQZ0fIAFBDGoQlwJBAAwBCyAAQQJ0KAKILQsgAUEQaiQACwYAIAEQLQsJACABIAJsEDQLJQECfyAAKAIEIgAQqAFBAWoiARA0IgIEfyACIAAgARBxBUEACwsNACAAKAIEIAAoAgBrCzABAX8jAEEQayIEJAAgACgCACEAIAQgAzoADyABIAIgBEEPaiAAEQMAIARBEGokAAuNAgIBfwF8IwBBEGsiAyQAIANBDmogASACIAAoAgARBQAgAyADLwAOOwEMIwBBEGsiASQAAkAgAy0ADUEBRgRAIwBBEGsiAiQAQazgAS0AAEEBcUUEQEECQYQsQQMQDyEAQazgAUEBOgAAQajgASAANgIACyACIAMtAAw2AgggAkEANgIEQajgASgCAEEAQQAgAkEEaiACQQhqEA4hBCACIAIoAgQ2AgAgAUEIaiIAIAT8AzYCBCAAQfzgATYCACACEJ8CIAJBEGokACAAKAIEIQIgAEEANgIEIAAQtQEMAQsgAUEANgIMIAFB/OABNgIIIAFBCGoQtQFBAiECCyABQRBqJAAgA0EQaiQAIAILVAECfyMAQRBrIgQkACABIAAoAgQiBUEBdWohASAAKAIAIQAgBUEBcQRAIAEoAgAgAGooAgAhAAsgBCADOgAPIAEgAiAEQQ9qIAARBQAgBEEQaiQAC1IBAn8jAEEQayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIARBAXEEQCABKAIAIABqKAIAIQALIAMgAjoADyABIANBD2ogABEBACADQRBqJAALMAEBfyMAQRBrIgQkACAAKAIAIQAgBCADOAIMIAEgAiAEQQxqIAARAwAgBEEQaiQAC40CAgF/AXwjAEEQayIDJAAgA0EIaiABIAIgACgCABEFACADIAMpAgg3AwAjAEEQayIBJAACQCADLQAEQQFGBEAjAEEQayICJABBoOABLQAAQQFxRQRAQQJBxCZBAxAPIQBBoOABQQE6AABBnOABIAA2AgALIAIgAyoCADgCCCACQQA2AgRBnOABKAIAQQBBACACQQRqIAJBCGoQDiEEIAIgAigCBDYCACABQQhqIgAgBPwDNgIEIABB/OABNgIAIAIQnwIgAkEQaiQAIAAoAgQhAiAAQQA2AgQgABC1AQwBCyABQQA2AgwgAUH84AE2AgggAUEIahC1AUECIQILIAFBEGokACADQRBqJAAgAgtUAQJ/IwBBEGsiBCQAIAEgACgCBCIFQQF1aiEBIAAoAgAhACAFQQFxBEAgASgCACAAaigCACEACyAEIAM4AgwgASACIARBDGogABEFACAEQRBqJAALUgECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACOAIMIAEgA0EMaiAAEQEAIANBEGokAAsbACAAIAEoAgggBRA7BEAgASACIAMgBBDnAQsLOAAgACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRCgALkgIBBn8gACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyABLQA1IAAoAgwhBiABQQA6ADUgAS0ANCABQQA6ADQgAEEQaiIJIAEgAiADIAQgBRDlASABLQA0IgpyIQggAS0ANSILciEHAkAgBkECSQ0AIAkgBkEDdGohCSAAQRhqIQYDQCABLQA2DQECQCAKQQFxBEAgASgCGEEBRg0DIAAtAAhBAnENAQwDCyALQQFxRQ0AIAAtAAhBAXFFDQILIAFBADsBNCAGIAEgAiADIAQgBRDlASABLQA1IgsgB3JBAXEhByABLQA0IgogCHJBAXEhCCAGQQhqIgYgCUkNAAsLIAEgB0EBcToANSABIAhBAXE6ADQLkgEAIAAgASgCCCAEEDsEQCABIAIgAxDmAQ8LAkAgACABKAIAIAQQO0UNAAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC/YBACAAIAEoAgggBBA7BEAgASACIAMQ5gEPCwJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQgACgCACgCFBEKACABLQA1QQFGBEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBELAAsLrwQBA38gACABKAIIIAQQOwRAIAEgAiADEOYBDwsCQAJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAyABQQE2AiAPCyABIAM2AiAgASgCLEEERg0BIABBEGoiBSAAKAIMQQN0aiEHQQAhAwNAAkACQCABAn8CQCAFIAdPDQAgAUEAOwE0IAUgASACIAJBASAEEOUBIAEtADYNACABLQA1QQFHDQMgAS0ANEEBRgRAIAEoAhhBAUYNA0EBIQNBASEGIAAtAAhBAnFFDQMMBAtBASEDIAAtAAhBAXENA0EDDAELQQNBBCADGws2AiwgBg0FDAQLIAFBAzYCLAwECyAFQQhqIQUMAAsACyAAKAIMIQUgAEEQaiIGIAEgAiADIAQQtwEgBUECSQ0BIAYgBUEDdGohBiAAQRhqIQUCQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAyAFIAEgAiADIAQQtwEgBUEIaiIFIAZJDQALDAILIABBAXFFBEADQCABLQA2DQMgASgCJEEBRg0DIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAwDCwALA0AgAS0ANg0CIAEoAiRBAUYEQCABKAIYQQFGDQMLIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAsMAQsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsLjgUBBH8jAEFAaiIEJAACQCABQaDZAUEAEDsEQCACQQA2AgBBASEFDAELAkAgACABIAAtAAhBGHEEf0EBBSABRQ0BIAFB9NYBEFIiA0UNASADLQAIQRhxQQBHCxA7IQYLIAYEQEEBIQUgAigCACIARQ0BIAIgACgCADYCAAwBCwJAIAFFDQAgAUGk1wEQUiIGRQ0BIAIoAgAiAQRAIAIgASgCADYCAAsgBigCCCIDIAAoAggiAUF/c3FBB3EgA0F/cyABcUHgAHFyDQFBASEFIAAoAgwgBigCDEEAEDsNASAAKAIMQZTZAUEAEDsEQCAGKAIMIgBFDQIgAEHU1wEQUkUhBQwCCyAAKAIMIgNFDQBBACEFIANBpNcBEFIiAQRAIAAtAAhBAXFFDQICfyAGKAIMIQBBACECAkADQEEAIABFDQIaIABBpNcBEFIiA0UNASADKAIIIAEoAghBf3NxDQFBASABKAIMIAMoAgxBABA7DQIaIAEtAAhBAXFFDQEgASgCDCIARQ0BIABBpNcBEFIiAQRAIAMoAgwhAAwBCwsgAEGI2AEQUiIARQ0AIAAgAygCDBCpAiECCyACCyEFDAILIANBiNgBEFIiAQRAIAAtAAhBAXFFDQIgASAGKAIMEKkCIQUMAgsgA0HE1gEQUiIBRQ0BIAYoAgwiAEUNASAAQcTWARBSIgBFDQEgAigCACEDIARBCGpBAEE4/AsAIAQgA0EARzoAOyAEQX82AhAgBCABNgIMIAQgADYCBCAEQQE2AjQgACAEQQRqIANBASAAKAIAKAIcEQgAIAQoAhwiAEEBRgRAIAIgBCgCFEEAIAMbNgIACyAAQQFGIQUMAQtBACEFCyAEQUBrJAAgBQtvAQJ/IAAgASgCCEEAEDsEQCABIAIgAxDpAQ8LIAAoAgwhBCAAQRBqIgUgASACIAMQqwICQCAEQQJJDQAgBSAEQQN0aiEEIABBGGohAANAIAAgASACIAMQqwIgAS0ANg0BIABBCGoiACAESQ0ACwsLMgAgACABKAIIQQAQOwRAIAEgAiADEOkBDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRCAALGQAgACABKAIIQQAQOwRAIAEgAiADEOkBCwvIAQECfyMAQdAAayIDJAACQAJ/QQEgACABQQAQOw0AGkEAIAFFDQAaQQAgAUHE1gEQUiIBRQ0AGiACKAIAIgRFDQEgA0EYakEAQTj8CwAgA0EBOgBLIANBfzYCICADIAA2AhwgAyABNgIUIANBATYCRCABIANBFGogBEEBIAEoAgAoAhwRCAAgAygCLCIAQQFGBEAgAiADKAIkNgIACyAAQQFGCyADQdAAaiQADwsgA0GeFjYCCCADQecDNgIEIANBig02AgAQPQALAwAACxEBAX9BBBBTIgBBADYCACAACwkAQaD0ARA5GgslAEGs9AEtAABFBEBBoPQBQdisARCRAUGs9AFBAToAAAtBoPQBCwkAQZD0ARAgGgskAEGc9AEtAABFBEBBkPQBQc4NELABQZz0AUEBOgAAC0GQ9AELCQBBgPQBEDkaCyUAQYz0AS0AAEUEQEGA9AFBhKwBEJEBQYz0AUEBOgAAC0GA9AELCQBB8PMBECAaCyQAQfzzAS0AAEUEQEHw8wFBmRUQsAFB/PMBQQE6AAALQfDzAQsJAEHg8wEQORoLqQIBBH8gAiABIAAoAgBqIgBHBEACQCACKAIEIgQgAigCACIBa0ECdSIGIAAoAgggACgCACICa0ECdU0EQCAGIAAoAgQiAyACayIFQQJ1SwRAIAIgA0cEQCAFBEAgAiABIAX8CgAACyAAKAIEIQMLIAQgASAFaiIBayICRSABIARGckUEQCADIAEgAvwKAAALIAAgAiADajYCBAwCCyAEIAFrIgNFIAEgBEZyRQRAIAIgASAD/AoAAAsgACACIANqNgIEDAELIAAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0gAEEANgIIIABCADcCAAsgACAAIAYQtgEQrgMgACgCBCECIAQgAWsiA0UgASAERnJFBEAgAiABIAP8CgAACyAAIAIgA2o2AgQLCwslAEHs8wEtAABFBEBB4PMBQeCrARCRAUHs8wFBAToAAAtB4PMBCwkAQeTeARAgGgsaAEHd8wEtAABFBEBB3fMBQQE6AAALQeTeAQsJAEHQ8wEQORoLJQBB3PMBLQAARQRAQdDzAUG8qwEQkQFB3PMBQQE6AAALQdDzAQsJAEHY3gEQIBoLGgBBzfMBLQAARQRAQc3zAUEBOgAAC0HY3gELGwBBqPwBIQADQCAAQQxrEDkiAEGQ/AFHDQALC1QAQczzAS0AAARAQcjzASgCAA8LQaj8AS0AAEUEQEGo/AFBAToAAAtBkPwBQfjUARApQZz8AUGE1QEQKUHM8wFBAToAAEHI8wFBkPwBNgIAQZD8AQsbAEGI/AEhAANAIABBDGsQICIAQfD7AUcNAAsLFQAgASAAKAIAaiEAQQwQUyAAEIEBC1IAQcTzAS0AAARAQcDzASgCAA8LQYj8AS0AAEUEQEGI/AFBAToAAAtB8PsBQdEVECpB/PsBQc4VECpBxPMBQQE6AABBwPMBQfD7ATYCAEHw+wELGwBB4PsBIQADQCAAQQxrEDkiAEHA+QFHDQALC7ACAEG88wEtAAAEQEG48wEoAgAPC0Hg+wEtAABFBEBB4PsBQQE6AAALQcD5AUHw0AEQKUHM+QFBkNEBEClB2PkBQbTRARApQeT5AUHM0QEQKUHw+QFB5NEBEClB/PkBQfTRARApQYj6AUGI0gEQKUGU+gFBnNIBEClBoPoBQbjSARApQaz6AUHg0gEQKUG4+gFBgNMBEClBxPoBQaTTARApQdD6AUHI0wEQKUHc+gFB2NMBEClB6PoBQejTARApQfT6AUH40wEQKUGA+wFB5NEBEClBjPsBQYjUARApQZj7AUGY1AEQKUGk+wFBqNQBEClBsPsBQbjUARApQbz7AUHI1AEQKUHI+wFB2NQBEClB1PsBQejUARApQbzzAUEBOgAAQbjzAUHA+QE2AgBBwPkBCxsAQbD5ASEAA0AgAEEMaxAgIgBBkPcBRw0ACwuYAgBBtPMBLQAABEBBsPMBKAIADwtBsPkBLQAARQRAQbD5AUEBOgAAC0GQ9wFBmwgQKkGc9wFBkggQKkGo9wFBzQ8QKkG09wFBnA4QKkHA9wFB4QgQKkHM9wFBhxEQKkHY9wFBowgQKkHk9wFBkwkQKkHw9wFB1QwQKkH89wFBxAwQKkGI+AFBzAwQKkGU+AFB3wwQKkGg+AFB6g0QKkGs+AFBlRUQKkG4+AFBhg0QKkHE+AFB9gsQKkHQ+AFB4QgQKkHc+AFB3g0QKkHo+AFBkA4QKkH0+AFB0w8QKkGA+QFByg0QKkGM+QFBngoQKkGY+QFBiwkQKkGk+QFB+BQQKkG08wFBAToAAEGw8wFBkPcBNgIAQZD3AQsbAEGI9wEhAANAIABBDGsQOSIAQeD1AUcNAAsLzAEAQazzAS0AAARAQajzASgCAA8LQYj3AS0AAEUEQEGI9wFBAToAAAtB4PUBQZzOARApQez1AUG4zgEQKUH49QFB1M4BEClBhPYBQfTOARApQZD2AUGczwEQKUGc9gFBwM8BEClBqPYBQdzPARApQbT2AUGA0AEQKUHA9gFBkNABEClBzPYBQaDQARApQdj2AUGw0AEQKUHk9gFBwNABEClB8PYBQdDQARApQfz2AUHg0AEQKUGs8wFBAToAAEGo8wFB4PUBNgIAQeD1AQsbAEHY9QEhAANAIABBDGsQICIAQbD0AUcNAAsLvgEAQaTzAS0AAARAQaDzASgCAA8LQdj1AS0AAEUEQEHY9QFBAToAAAtBsPQBQcwIECpBvPQBQdMIECpByPQBQbEIECpB1PQBQbkIECpB4PQBQagIECpB7PQBQdoIECpB+PQBQcMIECpBhPUBQdoNECpBkPUBQeINECpBnPUBQeoQECpBqPUBQasTECpBtPUBQY8JECpBwPUBQbIPECpBzPUBQcIKECpBpPMBQQE6AABBoPMBQbD0ATYCAEGw9AELDwAgASAAKAIAaiACOgAACwsAIABBpKsBEJEBCwoAIABB7hAQsAELCwAgAEGQqwEQkQELCgAgAEHlEBCwAQsMACAAIAFBEGoQ5AELDAAgACABQQxqEOQBCwcAIAAsAAkLBwAgACwACAsJACAAEMMCEC0LDQAgASAAKAIAai0AAAsJACAAEMQCEC0LFQAgACgCCCIARQRAQQEPCyAAEMwCC44BAQZ/A0ACQCACIANGIAQgCE1yDQBBASEGIAAoAgghByMAQRBrIgUkACAFIAc2AgwgBUEIaiAFQQxqEGNBACACIAMgAmsgAUH07wEgARsQ0gEhChBiIAVBEGokAAJAAkAgCiIFQQJqDgMCAgEACyAFIQYLIAhBAWohCCAGIAlqIQkgAiAGaiECDAELCyAJC0YBAn8gACgCCCECIwBBEGsiASQAIAEgAjYCDCABQQhqIAFBDGoQYxBiIAFBEGokACAAKAIIIgBFBEBBAQ8LIAAQzAJBAUYLiQEBAn8jAEEQayIGJAAgBCACNgIAAn9BAiAGQQxqIgVBACAAKAIIEO4BIgBBAWpBAkkNABpBASAAQQFrIgIgAyAEKAIAa0sNABoDfyACBH8gBS0AACEAIAQgBCgCACIBQQFqNgIAIAEgADoAACACQQFrIQIgBUEBaiEFDAEFQQALCwsgBkEQaiQAC7kGAQ1/IwBBEGsiESQAIAIhCANAAkAgAyAIRgRAIAMhCAwBCyAILQAARQ0AIAhBAWohCAwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YgBSAGRnINACARIAEpAgA3AwggACgCCCEJIwBBEGsiECQAIBAgCTYCDCAQQQhqIBBBDGoQYyAIIAJrIQ5BACELIwBBkAhrIgwkACAMIAQoAgAiCTYCDCAFIAxBEGogBRshDwJAAkACQCAJRSAGIAVrQQJ1QYACIAUbIg1FckUEQANAIA5BgwFLIA5BAnYiCiANT3JFBEAgCSEKDAQLIA8gDEEMaiAKIA0gCiANSRsgARCbAyESIAwoAgwhCiASQX9GBEBBACENQX8hCwwDCyANIBJBACAPIAxBEGpHGyIUayENIA8gFEECdGohDyAJIA5qIAprQQAgChshDiALIBJqIQsgCkUNAiAKIQkgDQ0ADAILAAsgCSEKCyAKRQ0BCyANRSAORXINACALIQkDQAJAAkAgDyAKIA4gARDSASILQQJqQQJNBEACQAJAIAtBAWoOAgYAAQsgDEEANgIMDAILIAFBADYCAAwBCyAMIAwoAgwgC2oiCjYCDCAJQQFqIQkgDUEBayINDQELIAkhCwwCCyAPQQRqIQ8gDiALayEOIAkhCyAODQALCyAFBEAgBCAMKAIMNgIACyAMQZAIaiQAEGIgEEEQaiQAAkACQAJAAkAgCyIJQX9GBEADQCAHIAU2AgAgAiAEKAIARg0GQQEhBgJAAkACQCAFIAIgCCACayARQQhqIAAoAggQzQIiAUECag4DBwACAQsgBCACNgIADAQLIAEhBgsgAiAGaiECIAcoAgBBBGohBQwACwALIAcgBygCACAJQQJ0aiIFNgIAIAUgBkYNAyAEKAIAIQIgAyAIRg0GIAUgAkEBIAEgACgCCBDNAkUNAQtBAgwECyAHIAcoAgBBBGoiBTYCACAEIAQoAgBBAWoiAjYCACACIQgDQCADIAhGDQUgCC0AAEUNBiAIQQFqIQgMAAsACyAEIAI2AgBBAQwCCyAEKAIAIQILIAIgA0cLIBFBEGokAA8LIAMhCAwACwALpgUBDH8jAEEQayIPJAAgAiEIA0ACQCADIAhGBEAgAyEIDAELIAgoAgBFDQAgCEEEaiEIDAELCyAHIAU2AgAgBCACNgIAAkADQAJAAkAgAiADRiAFIAZGcgR/IAIFIA8gASkCADcDCEEBIRAgBSEJIAYgBWshCyAAKAIIIQpBACENIwBBEGsiDiQAIA4gCjYCDCAOQQhqIA5BDGoQYyMAQRBrIhEkAAJAIAQoAgAiCkUgCCACa0ECdSISRXINACALQQAgBRshCwNAIBFBDGogCSALQQRJGyAKKAIAEJYCIgxBf0YEQEF/IQ0MAgsgCQR/IAtBA00EQCALIAxJDQMgCSARQQxqIAwQcRoLIAsgDGshCyAJIAxqBUEACyEJIAooAgBFBEBBACEKDAILIAwgDWohDSAKQQRqIQogEkEBayISDQALCyAJBEAgBCAKNgIACyARQRBqJAAQYiAOQRBqJAACQAJAAkACQCANIglBAWoOAgAIAQsgByAFNgIAA0AgAiAEKAIARg0CIAUgAigCACAAKAIIEO4BIgFBf0YNAiAHIAcoAgAgAWoiBTYCACACQQRqIQIMAAsACyAHIAcoAgAgCWoiBTYCACAFIAZGDQEgAyAIRgRAIAQoAgAhAiADIQgMBgsgD0EEaiICQQAgACgCCBDuASIIQX9GDQQgBiAHKAIAayAISQ0GA0AgCARAIAItAAAhBSAHIAcoAgAiCUEBajYCACAJIAU6AAAgCEEBayEIIAJBAWohAgwBCwsgBCAEKAIAQQRqIgI2AgAgAiEIA0AgAyAIRgRAIAMhCAwFCyAIKAIARQ0EIAhBBGohCAwACwALIAQgAjYCAAwDCyAEKAIACyADRyEQDAMLIAcoAgAhBQwBCwtBAiEQCyAPQRBqJAAgEAsJACAAENsCEC0LMwAjAEEQayIAJAAgACAENgIMIAAgAyACazYCCCAAQQxqIABBCGoQtQMoAgAgAEEQaiQACzsAA0AgASACRkUEQCADIQAgBCABLAAAEEwEfyABLQAABSAACzoAACAEQQFqIQQgAUEBaiEBDAELCyABCwsAIAEgAiABEEwbCyoAA0AgASACRkUEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpgILHQAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABC8ALDwAgACABIAJBmIQBEKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2IQgCQAJ/IAUQHyAAKAKoA0oEQCAFEB8hCSAAKAKoAyENIAcQHyAJIA1rQQF0aiAGEB9qIAAoAqgDakEBagwBCyAHEB8gBhAfaiAAKAKoA2pBAmoLIglB5QBJDQAgCCAJQQJ0EDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH0ECdGogCiALIABB2ANqIAAoAtQDIAAoAtADIAwgBiAHIAAoAqgDEN4CIAEgAiAAKAIEIAAoAgAgAyAEEIUBIAgQNSAHEDkaIAYQORogDBAgGiAAQdwDahAlIABB4ANqJAALvgQBC38jAEGgCGsiACQAIAAgBjcDmAggACAFNwOQCCAAIAU3AwAgACAGNwMIIAAgAEGgB2oiBzYCnAcgB0HAECAAEIYBIQcgAEHjADYCgAQgAEH4A2pBACAAQYAEaiIJEDYhDiAAQeMANgKABCAAQfADakEAIAkQNiEKAkAgB0HkAE8EQCAAQZwHahAuQcAQIABBkAhqEMgBIgdBf0YNASAOIAAoApwHEDwgCiAHQQJ0EDQQPCAKEOQCDQEgCigCACEJCyAAQewDaiIIIAMQJyAIEEgiESAAKAKcByIIIAcgCGogCRBvIAdBAEoEQCAAKAKcBy0AAEEtRiEPCyACIA8gAEHsA2ogAEHoA2ogAEHkA2ogAEHgA2ogAEHUA2oQJCIQIABByANqECQiCCAAQbwDahAkIgsgAEG4A2oQ3wIgAEHjADYCICAAQRhqQQAgAEEgaiICEDYhDAJ/IAAoArgDIg0gB0gEQCALEB8gByANa0EBdGogCBAfaiAAKAK4A2pBAWoMAQsgCxAfIAgQH2ogACgCuANqQQJqCyINQeUATwRAIAwgDUECdBA0EDwgDCgCACICRQ0BCyACIABBFGogAEEQaiADKAIEIAkgCSAHQQJ0aiARIA8gAEHoA2ogACgC5AMgACgC4AMgECAIIAsgACgCuAMQ3gIgASACIAAoAhQgACgCECADIAQQhQEgDBA1IAsQORogCBA5GiAQECAaIABB7ANqECUgChA1IA4QNSAAQaAIaiQADwsQPQALMwECfyABKAIEIAEoAgAiAWsgAksEQEEBIQQgASACai0AACEDCyAAIAQ6AAEgACADOgAAC/wCAQh/IwBBsAFrIgAkACAAQawBaiIGIAMQJyAGEEkhCiAFEB8EQCAFQQAQIi0AACAKQS0QQUH/AXFGIQsLIAIgCyAAQawBaiAAQagBaiAAQacBaiAAQaYBaiAAQZgBahAkIgwgAEGMAWoQJCIGIABBgAFqECQiByAAQfwAahDjAiAAQeMANgIQIABBCGpBACAAQRBqIgIQNiEIAkACfyAFEB8gACgCfEoEQCAFEB8hCSAAKAJ8IQ0gBxAfIAkgDWtBAXRqIAYQH2ogACgCfGpBAWoMAQsgBxAfIAYQH2ogACgCfGpBAmoLIglB5QBJDQAgCCAJEDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH2ogCiALIABBqAFqIAAsAKcBIAAsAKYBIAwgBiAHIAAoAnwQ4gIgASACIAAoAgQgACgCACADIAQQgAEgCBA1IAcQIBogBhAgGiAMECAaIABBrAFqECUgAEGwAWokAAu1BAELfyMAQcADayIAJAAgACAGNwO4AyAAIAU3A7ADIAAgBTcDACAAIAY3AwggACAAQcACaiIHNgK8AiAHQcAQIAAQhgEhByAAQeMANgLQASAAQcgBakEAIABB0AFqIgkQNiEOIABB4wA2AtABIABBwAFqQQAgCRA2IQoCQCAHQeQATwRAIABBvAJqEC5BwBAgAEGwA2oQyAEiB0F/Rg0BIA4gACgCvAIQPCAKIAcQNBA8IAoQ5AINASAKKAIAIQkLIABBvAFqIgggAxAnIAgQSSIRIAAoArwCIgggByAIaiAJEHkgB0EASgRAIAAoArwCLQAAQS1GIQ8LIAIgDyAAQbwBaiAAQbgBaiAAQbcBaiAAQbYBaiAAQagBahAkIhAgAEGcAWoQJCIIIABBkAFqECQiCyAAQYwBahDjAiAAQeMANgIgIABBGGpBACAAQSBqIgIQNiEMAn8gACgCjAEiDSAHSARAIAsQHyAHIA1rQQF0aiAIEB9qIAAoAowBakEBagwBCyALEB8gCBAfaiAAKAKMAWpBAmoLIg1B5QBPBEAgDCANEDQQPCAMKAIAIgJFDQELIAIgAEEUaiAAQRBqIAMoAgQgCSAHIAlqIBEgDyAAQbgBaiAALAC3ASAALAC2ASAQIAggCyAAKAKMARDiAiABIAIgACgCFCAAKAIQIAMgBBCAASAMEDUgCxAgGiAIECAaIBAQIBogAEG8AWoQJSAKEDUgDhA1IABBwANqJAAPCxA9AAvtAQEDfyAAKAIEIAAoAgAiBGsiAyABSQRAIwBBIGsiBCQAAkAgASADayIDIAAoAgggACgCBCIBa00EQCADIAAoAgQiAWohAwNAIAEgA0YEQCAAIAM2AgQFIAEgAi0AADoAACABQQFqIQEMAQsLDAELIAMgBEEMaiAAIAEgA2ogACgCAGsQtAEgACgCBCAAKAIAayAAEMYBIgUoAggiAWohAwNAIAEgA0cEQCABIAItAAA6AAAgAUEBaiEBDAELCyAFIAM2AgggACAFEO8BIAUQugELIARBIGokAA8LIAEgA0kEQCAAIAEgBGo2AgQLC4EFAQR/IwBBwANrIgAkACAAIAI2ArgDIAAgATYCvAMgAEHkADYCFCAAQRhqIABBIGogAEEUaiIIEDYhCiAAQRBqIgEgBBAnIAEQSCEHIABBADoADyAAQbwDaiACIAMgASAEKAIEIAUgAEEPaiAHIAogCCAAQbADahDqAgRAIwBBEGsiASQAIAYQHxoCQCAGEEcEQCAGKAIAIAFBADYCDCABQQxqEFYgBkEANgIEDAELIAFBADYCCCAGIAFBCGoQViAGQQAQUAsgAUEQaiQAIAAtAA9BAUYEQCAGIAdBLRBLEOoBCyAHQTAQSyEBIAooAgAhAiAAKAIUIgNBBGshBANAAkAgAiAETw0AIAIoAgAgAUcNACACQQRqIQIMAQsLIwBBEGsiBCQAIAYQHyEBIAYQ8QEhBwJAIAIgAxD1ASIIRQ0AIAYQIyAGECMgBhAfQQJ0akEEaiACEL4CRQRAIAggByABa0sEQCAGIAcgASAHayAIaiABIAEQ6AILIAIgAyAGECMgAUECdGoQ5wIgBEEANgIEIARBBGoQViAGIAEgCGoQgwEMAQsgBEEEaiIBIAIgAxCZAyABECMhCCABEB8hAiMAQRBrIgckAAJAIAIgBhDxASIJIAYQHyIDa00EQCACRQ0BIAYQIyIJIANBAnRqIAggAhBlIAYgAiADaiICEIMBIAdBADYCDCAJIAJBAnRqIAdBDGoQVgwBCyAGIAkgAiAJayADaiADIANBACACIAgQrwILIAdBEGokACABEDkaCyAEQRBqJAALIABBvANqIABBuANqECsEQCAFIAUoAgBBAnI2AgALIAAoArwDIABBEGoQJSAKEDUgAEHAA2okAAvRAwEDfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABB5AA2AhAgAEHIAWogAEHQAWogAEEQaiIBEDYhByAAQcABaiIIIAQQJyAIEEghCSAAQQA6AL8BAkAgAEHsBGogAiADIAggBCgCBCAFIABBvwFqIAkgByAAQcQBaiAAQeAEahDqAkUNACAAQcsbKAAANgC3ASAAQcQbKQAANwOwASAJIABBsAFqIABBugFqIABBgAFqEG8gAEHjADYCECAAQQhqQQAgARA2IQMgASEEAkAgACgCxAEgBygCAGsiAUGJA04EQCADIAFBAnVBAmoQNBA8IAMoAgBFDQEgAygCACEECyAALQC/AUEBRgRAIARBLToAACAEQQFqIQQLIAcoAgAhAgNAIAAoAsQBIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGogABCjA0EBRw0AIAMQNQwECwUgBCAAQbABaiAAQYABaiIBIAFBKGogAhD5ASABa0ECdWotAAA6AAAgBEEBaiEEIAJBBGohAgwBCwsQPQALED0ACyAAQewEaiAAQegEahArBEAgBSAFKAIAQQJyNgIACyAAKALsBCAAQcABahAlIAcQNSAAQfAEaiQAC5ABAQJ/IAACfyAAKAIEIgIgACgCCEkEQCACIAEtAAA6AAAgAkEBagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0EBahC0ASAAKAIEIAAoAgBrIAAQxgEiAigCCCABLQAAOgAAIAIgAigCCEEBajYCCCAAIAIQ7wEgACgCBCACELoBIANBIGokAAs2AgQLBQBBpCoL0AQBA38jAEGQAWsiACQAIAAgAjYCiAEgACABNgKMASAAQeQANgIUIABBGGogAEEgaiAAQRRqIgcQNiEJIABBEGoiCCAEECcgCBBJIQEgAEEAOgAPIABBjAFqIAIgAyAIIAQoAgQgBSAAQQ9qIAEgCSAHIABBhAFqEPACBEACQCAGLAALQQBIBEAgBigCAEEAOgAAIAZBADYCBAwBCyAGQQA6AAsgBkEAOgAACyAALQAPQQFGBEAgBiABQS0QQRC4AQsgAUEwEEEgCSgCACECIAAoAhQiBEEBayEDQf8BcSEBA0ACQCACIANPDQAgAi0AACABRw0AIAJBAWohAgwBCwsjAEEQayIBJAAgBhAfIQMgBhAoIQgCQCACIAQQigIiB0UNACAGECMgBhAjIAYQH2pBAWogAhC+AkUEQCAHIAggA2tLBEAgBiAIIAMgCGsgB2ogAyADEPQBCyACIAQgBhAjIANqELQDIAFBADoADyABQQ9qEF0gBiADIAdqEIMBDAELIAEgAiAEELgDIAEQIyEIIAEQHyECIwBBEGsiBCQAAkAgAiAGECgiByAGEB8iA2tNBEAgAkUNASAGECMiByADaiAIIAIQTSAGIAIgA2oiAhCDASAEQQA6AA8gAiAHaiAEQQ9qEF0MAQsgBiAHIAIgB2sgA2ogAyADQQAgAiAIELkBCyAEQRBqJAAgARAgGgsgAUEQaiQACyAAQYwBaiAAQYgBahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMASAAQRBqECUgCRA1IABBkAFqJAALxwMBA38jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQeQANgIQIABBmAFqIABBoAFqIABBEGoiARA2IQcgAEGQAWoiCCAEECcgCBBJIQkgAEEAOgCPAQJAIABBjAJqIAIgAyAIIAQoAgQgBSAAQY8BaiAJIAcgAEGUAWogAEGEAmoQ8AJFDQAgAEHLGygAADYAhwEgAEHEGykAADcDgAEgCSAAQYABaiAAQYoBaiAAQfYAahB5IABB4wA2AhAgAEEIakEAIAEQNiEDIAEhBAJAIAAoApQBIAcoAgBrIgFB4wBOBEAgAyABQQJqEDQQPCADKAIARQ0BIAMoAgAhBAsgAC0AjwFBAUYEQCAEQS06AAAgBEEBaiEECyAHKAIAIQIDQCAAKAKUASACTQRAAkAgBEEAOgAAIAAgBjYCACAAQRBqIAAQowNBAUcNACADEDUMBAsFIAQgAEH2AGoiASABQQpqIAIQ/QEgAGsgAGotAAo6AAAgBEEBaiEEIAJBAWohAgwBCwsQPQALED0ACyAAQYwCaiAAQYgCahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMAiAAQZABahAlIAcQNSAAQZACaiQACxcAIAAoAgAgAUECdGogAioCADgCAEEBC5EDAQJ/IwBBoANrIgckACAHIAdBoANqIgM2AgwjAEGQAWsiAiQAIAIgAkGEAWo2AhwgAEEIaiACQSBqIgggAkEcaiAEIAUgBhD0AiACQgA3AxAgAiAINgIMIAdBEGoiBSAHKAIMEPUBIQQgACgCCCEGIwBBEGsiACQAIAAgBjYCDCAAQQhqIABBDGoQYyAFIAJBDGogBCACQRBqEJsDIQQQYiAAQRBqJAAgBEF/RgRAED0ACyAHIAUgBEECdGo2AgwgAkGQAWokACAHKAIMIQIjAEEQayIGJAAjAEEgayIAJAAgAEEYaiAFIAIQvwIgAEEQaiAAKAIYIQIgACgCHCEIIwBBEGsiBCQAIAQgAjYCCCAEIAE2AgwDQCACIAhHBEAgBEEMaiACKAIAELsDIAQgAkEEaiICNgIIDAELCyAEQQhqIARBDGoQZiAEQRBqJAAgACAFIAAoAhAQjgE2AgwgACAAKAIUNgIIIAZBCGogAEEMaiAAQQhqEGYgAEEgaiQAIAYoAgwgBkEQaiQAIAMkAAuAAgECfyMAQYABayICJAAgAiACQfQAajYCDCAAQQhqIAJBEGoiAyACQQxqIAQgBSAGEPQCIAIoAgwhBCMAQRBrIgYkACMAQSBrIgAkACAAQRhqIAMgBBC/AiAAQRBqIAAoAhghBCAAKAIcIQgjAEEQayIFJAAgBSAENgIIIAUgATYCDANAIAQgCEcEQCAFQQxqIAQsAAAQvwMgBSAEQQFqIgQ2AggMAQsLIAVBCGogBUEMahBmIAVBEGokACAAIAMgACgCEBCOATYCDCAAIAAoAhQ2AgggBkEIaiAAQQxqIABBCGoQZiAAQSBqJAAgBigCDCAGQRBqJAAgAkGAAWokAAvdDAEBfyMAQTBrIgckACAHIAE2AiwgBEEANgIAIAcgAxAnIAcQSCEIIAcQJQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQcEAaw45AAEXBBcFFwYHFxcXChcXFxcODxAXFxcTFRcXFxcXFxcAAQIDAxcXARcIFxcJCxcMFw0XCxcXERIUFgsgACAFQRhqIAdBLGogAiAEIAgQ9wIMGAsgACAFQRBqIAdBLGogAiAEIAgQ9gIMFwsgAEEIaiAAKAIIKAIMEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwWCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBAWtBHktyRQRAIAUgADYCDAwBCyAEIAFBBHI2AgALDBULIAdBqKABKQMANwMYIAdBoKABKQMANwMQIAdBmKABKQMANwMIIAdBkKABKQMANwMAIAcgACABIAIgAyAEIAUgByAHQSBqEG02AiwMFAsgB0HIoAEpAwA3AxggB0HAoAEpAwA3AxAgB0G4oAEpAwA3AwggB0GwoAEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwTCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EsaiACIAQgCEEDEGchAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EsaiACIAQgCEECEGchAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EsaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECsNACAIQQEgABA3EF9FDQAgABA+GgwBCwsgACABQQxqECsEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQSxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDNASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0HQoAFBLPwKAAAgByAAIAEgAiADIAQgBSAHIAdBLGoQbTYCLAwLCyAHQZChASgCADYCECAHQYihASkDADcDCCAHQYChASkDADcDACAHIAAgASACIAMgBCAFIAcgB0EUahBtNgIsDAoLIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0G4oQEpAwA3AxggB0GwoQEpAwA3AxAgB0GooQEpAwA3AwggB0GgoQEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwICyAHQSxqIAIgBCAIQQEQZyEAAkAgBCgCACIBQQRxIABBBkpyRQRAIAUgADYCGAwBCyAEIAFBBHI2AgALDAcLIAAgASACIAMgBCAFIAAoAgAoAhQRBgAMBwsgAEEIaiAAKAIIKAIYEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwFCyAFQRRqIAdBLGogAiAEIAgQ9QIMBAsgB0EsaiACIAQgCEEEEGchACAELQAAQQRxRQRAIAUgAEHsDms2AhQLDAMLIAZBJUYNAQsgBCAEKAIAQQRyNgIADAELIwBBEGsiACQAIAAgAjYCDAJAIAQCf0EGIAdBLGoiASAAQQxqIgIQKw0AGkEEIAggARA3EJQBQSVHDQAaIAEQPiACECtFDQFBAgsgBCgCAHI2AgALIABBEGokAAsgBygCLAsgB0EwaiQACz0AIAACfyABKAIEIAEoAgAiAWtBAnUgAksEQCAAIAEgAkECdGoqAgA4AgBBAQwBCyAAQQA6AABBAAs6AAQLSAECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEghASAHECUgBUEUaiAGQQxqIAIgBCABEPUCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEQaiAGQQxqIAIgBCABEPYCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEYaiAGQQxqIAIgBCABEPcCIAYoAgwgBkEQaiQACzAAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAECMgABAjIAAQH0ECdGoQbQtYAQF/IwBBIGsiBiQAIAZBuKEBKQMANwMYIAZBsKEBKQMANwMQIAZBqKEBKQMANwMIIAZBoKEBKQMANwMAIAAgASACIAMgBCAFIAYgBkEgaiIBEG0gASQAC4ICAQN/IAAoAgQgACgCACIEa0ECdSIDIAFJBEAjAEEgayIEJAACQCABIANrIgMgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASADQQJ0aiEDA0AgASADRgRAIAAgAzYCBAUgASACKgIAOAIAIAFBBGohAQwBCwsMAQsgBEEMaiAAIAEgACgCAGtBAnUgA2oQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgUoAggiASADQQJ0aiEDA0AgASADRwRAIAEgAioCADgCACABQQRqIQEMAQsLIAUgAzYCCCAAIAUQhQIgBRCBAgsgBEEgaiQADwsgASADSQRAIAAgBCABQQJ0ajYCBAsL9wsBAX8jAEEQayIHJAAgByABNgIMIARBADYCACAHIAMQJyAHEEkhCCAHECUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQABFwQXBRcGBxcXFwoXFxcXDg8QFxcXExUXFxcXFxcXAAECAwMXFwEXCBcXCQsXDBcNFwsXFxESFBYLIAAgBUEYaiAHQQxqIAIgBCAIEPoCDBgLIAAgBUEQaiAHQQxqIAIgBCAIEPkCDBcLIABBCGogACgCCCgCDBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMFgsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrQR5LckUEQCAFIAA2AgwMAQsgBCABQQRyNgIACwwVCyAHQqXavanC7MuS+QA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwUCyAHQqWytanSrcuS5AA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwTCyAHQQxqIAIgBCAIQQIQaCEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EMaiACIAQgCEEDEGghAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EMaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECwNACAIQQEgABA4EGBFDQAgABA/GgwBCwsgACABQQxqECwEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQQxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDPASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0H4nwEoAAA2AAcgB0HxnwEpAAA3AwAgByAAIAEgAiADIAQgBSAHIAdBC2oQbjYCDAwLCyAHQYCgAS0AADoABCAHQfyfASgAADYCACAHIAAgASACIAMgBCAFIAcgB0EFahBuNgIMDAoLIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0KlkOmp0snOktMANwMAIAcgACABIAIgAyAEIAUgByAHQQhqEG42AgwMCAsgB0EMaiACIAQgCEEBEGghAAJAIAQoAgAiAUEEcSAAQQZKckUEQCAFIAA2AhgMAQsgBCABQQRyNgIACwwHCyAAIAEgAiADIAQgBSAAKAIAKAIUEQYADAcLIABBCGogACgCCCgCGBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMBQsgBUEUaiAHQQxqIAIgBCAIEPgCDAQLIAdBDGogAiAEIAhBBBBoIQAgBC0AAEEEcUUEQCAFIABB7A5rNgIUCwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgwCQCAEAn9BBiAHQQxqIgEgAEEMaiICECwNABpBBCAIIAEQOBCVAUElRw0AGiABED8gAhAsRQ0BQQILIAQoAgByNgIACyAAQRBqJAALIAcoAgwLIAdBEGokAAtIAQJ/IwBBEGsiBiQAIAYgATYCDCAGQQhqIgcgAxAnIAcQSSEBIAcQJSAFQRRqIAZBDGogAiAEIAEQ+AIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRBqIAZBDGogAiAEIAEQ+QIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRhqIAZBDGogAiAEIAEQ+gIgBigCDCAGQRBqJAALLQAgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIUEQAAIgAQIyAAECMgABAfahBuCzsBAX8jAEEQayIGJAAgBkKlkOmp0snOktMANwMIIAAgASACIAMgBCAFIAZBCGogBkEQaiIBEG4gASQAC4MBAQR/IwBBwAFrIgAkACAAIAQ2ArwBIABBoAFqIgUgBSAFQRQQLkHXDSAAQbwBahDKASIHaiIEIAIQaSEGIAAgAhAnIAAQSCAAECUgBSAEIAAQbyABIAAgACAHQQJ0aiIBIAAgBiAFa0ECdGogBCAGRhsgASACIAMQhQEgAEHAAWokAAvRAwEHfwJ/IwBB0AJrIgYkACAGIAU3A8gCIAYgBDcDwAIgBkIlNwO4AiAGQbgCaiIHQQFyQd8VIAIoAgQQyQEhCCAGIAZBkAJqIgk2AowCEC4hAAJ/IAgEQCAGIAIoAgg2AiAgCSAAIAcgBkEgaiAGQcACahCDAwwBCyAGQZACaiAAIAZBuAJqIAZBwAJqEIIDCyEAIAZB4wA2AiAgBkGEAmpBACAGQSBqIgoQNiEJIAZBkAJqIQcCQCAAQR5OBEAQLiEAAn8gCARAIAYgAigCCDYCICAGQYwCaiAAIAZBuAJqIAogBkHAAmoQgQMMAQsgBkGMAmogACAGQbgCaiAGQcACahDIAQsiAEF/Rg0BIAkgBigCjAIQPCAGKAKMAiEHCyAHIAAgB2oiCyACEGkhDCAGQeMANgIgIAZBGGpBACAGQSBqIgcQNiEIAkAgBigCjAIiCiAGQZACakYEQCAHIQAMAQsgAEEDdBA0IgBFDQEgCCAAEDwgBigCjAIhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEP4CIAcQJSABIAAgBigCFCAGKAIQIAIgAxCFASAIEDUgCRA1IAZB0AJqJAAMAQsQPQALC8kDAQd/An8jAEHAAmsiBSQAIAUgBDkDuAIgBUIlNwOwAiAFQbACaiIGQQFyQcYfIAIoAgQQyQEhByAFIAVBkAJqIgg2AowCEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQbgCahCIAwwBCyAFQZACaiAAIAVBsAJqIAVBuAJqEIcDCyEAIAVB4wA2AiAgBUGEAmpBACAFQSBqIgkQNiEIIAVBkAJqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQYwCaiAAIAVBsAJqIAkgBUG4AmoQhgMMAQsgBUGMAmogACAFQbACaiAFQbgCahCFAwsiAEF/Rg0BIAggBSgCjAIQPCAFKAKMAiEGCyAGIAAgBmoiCiACEGkhCyAFQeMANgIgIAVBGGpBACAFQSBqIgYQNiEHAkAgBSgCjAIiCSAFQZACakYEQCAGIQAMAQsgAEEDdBA0IgBFDQEgByAAEDwgBSgCjAIhCQsgBUEMaiIGIAIQJyAJIAsgCiAAIAVBFGogBUEQaiAGEP4CIAYQJSABIAAgBSgCFCAFKAIQIAIgAxCFASAHEDUgCBA1IAVBwAJqJAAMAQsQPQALCxEAIAAgASACIAMgBEEAEKECCxEAIAAgASACIAMgBEEAEKICCxEAIAAgASACIAMgBEEBEKECCxEAIAAgASACIAMgBEEBEKICC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmQEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdTYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAEDkaBSAFQRxqIAVBDGoiACgCACgCABC7AyAAEPYBDAELCwsgBUEgaiQAIAILBQBB7CALewEEfyMAQdAAayIAJAAgACAENgJMIABBMGoiBSAFIAVBFBAuQdcNIABBzABqEMoBIgdqIgQgAhBpIQYgACACECcgABBJIAAQJSAFIAQgABB5IAEgACAAIAdqIgEgACAGIAVraiAEIAZGGyABIAIgAxCAASAAQdAAaiQAC8wDAQd/An8jAEGwAWsiBiQAIAYgBTcDqAEgBiAENwOgASAGQiU3A5gBIAZBmAFqIgdBAXJB3xUgAigCBBDJASEIIAYgBkHwAGoiCTYCbBAuIQACfyAIBEAgBiACKAIINgIgIAkgACAHIAZBIGogBkGgAWoQgwMMAQsgBkHwAGogACAGQZgBaiAGQaABahCCAwshACAGQeMANgIgIAZB5ABqQQAgBkEgaiIKEDYhCSAGQfAAaiEHAkAgAEEeTgRAEC4hAAJ/IAgEQCAGIAIoAgg2AiAgBkHsAGogACAGQZgBaiAKIAZBoAFqEIEDDAELIAZB7ABqIAAgBkGYAWogBkGgAWoQyAELIgBBf0YNASAJIAYoAmwQPCAGKAJsIQcLIAcgACAHaiILIAIQaSEMIAZB4wA2AiAgBkEYakEAIAZBIGoiBxA2IQgCQCAGKAJsIgogBkHwAGpGBEAgByEADAELIABBAXQQNCIARQ0BIAggABA8IAYoAmwhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEIQDIAcQJSABIAAgBigCFCAGKAIQIAIgAxCAASAIEDUgCRA1IAZBsAFqJAAMAQsQPQALCwkAIAEgABEAAAvEAwEHfwJ/IwBBoAFrIgUkACAFIAQ5A5gBIAVCJTcDkAEgBUGQAWoiBkEBckHGHyACKAIEEMkBIQcgBSAFQfAAaiIINgJsEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQZgBahCIAwwBCyAFQfAAaiAAIAVBkAFqIAVBmAFqEIcDCyEAIAVB4wA2AiAgBUHkAGpBACAFQSBqIgkQNiEIIAVB8ABqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQewAaiAAIAVBkAFqIAkgBUGYAWoQhgMMAQsgBUHsAGogACAFQZABaiAFQZgBahCFAwsiAEF/Rg0BIAggBSgCbBA8IAUoAmwhBgsgBiAAIAZqIgogAhBpIQsgBUHjADYCICAFQRhqQQAgBUEgaiIGEDYhBwJAIAUoAmwiCSAFQfAAakYEQCAGIQAMAQsgAEEBdBA0IgBFDQEgByAAEDwgBSgCbCEJCyAFQQxqIgYgAhAnIAkgCyAKIAAgBUEUaiAFQRBqIAYQhAMgBhAlIAEgACAFKAIUIAUoAhAgAiADEIABIAcQNSAIEDUgBUGgAWokAAwBCxA9AAsLEQAgACABIAIgAyAEQQAQowILEQAgACABIAIgAyAEQQAQpAILEQAgACABIAIgAyAEQQEQowILoQEBAn8jAEHgAGsiBSQAIAVBDGoiBCABIAIgAygCACAAEQgAQdQAEFMiACAEKQIANwIAIAAgBC0ACDoACCAAQQxqIARBDGoQgQEaIABBGGogBEEYahCBARogAEEkaiAEQSRqEIEBGiAAQTBqIARBMGoQgQEaIABBPGogBEE8ahCBARogAEHIAGogBEHIAGoQgQEaIAQQxwMgBUHgAGokACAACxEAIAAgASACIAMgBEEBEKQCC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmwEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdzYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAECAaBSAFQRxqIAVBDGoiACgCACwAABC/AyAAEPgBDAELCwsgBUEgaiQAIAIL5gIBAX8jAEHAAmsiACQAIAAgAjYCuAIgACABNgK8AiAAQcQBahAkIQYgAEEQaiICIAMQJyACEEhB0J8BQeqfASAAQdABahBvIAIQJSAAQbgBahAkIgMgAxAoECEgACADQQAQIiIBNgK0ASAAIAI2AgwgAEEANgIIA0ACQCAAQbwCaiAAQbgCahArDQAgACgCtAEgAxAfIAFqRgRAIAMQHyECIAMgAxAfQQF0ECEgAyADECgQISAAIAIgA0EAECIiAWo2ArQBCyAAQbwCaiICEDdBECABIABBtAFqIABBCGpBACAGIABBEGogAEEMaiAAQdABahCYAQ0AIAIQPhoMAQsLIAMgACgCtAEgAWsQISADECMQLiAAIAU2AgQgAEEEahCNA0EBRwRAIARBBDYCAAsgAEG8AmogAEG4AmoQKwRAIAQgBCgCAEECcjYCAAsgACgCvAIgAxAgGiAGECAaIABBwAJqJAAL4QQCA38BfgJ/IwBB8AJrIgAkACAAIAI2AugCIAAgATYC7AIgAEHcAWogAyAAQfABaiAAQewBaiAAQegBahD7ASAAQdABahAkIgEgARAoECEgACABQQAQIiICNgLMASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWQQAhAwNAAkACQAJAIABB7AJqIABB6AJqECsNACAAKALMASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCzAELIABB7AJqEDcgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQ+gENACADDQFBACEDIAAoAswBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQdwBahAfRQ0AIAAtABdBAXFFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEI4DIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEEMgAEHsAmogAEHoAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC7AIgARAgGiAAQdwBahAgGiAAQfACaiQADAMLQQEhAwsgAEHsAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCXAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBIIQEgBhAlIAYgAxAnIAYQmQEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzQEgBkY6AAAgBigCHCEBA0AgA0EMaxA5IgMgBkcNAAsLIAZBIGokACABC+YCAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAEHEAWoQJCEGIABBEGoiAiADECcgAhBJQdCfAUHqnwEgAEHQAWoQeSACECUgAEG4AWoQJCIDIAMQKBAhIAAgA0EAECIiATYCtAEgACACNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAMQHyABakYEQCADEB8hAiADIAMQH0EBdBAhIAMgAxAoECEgACACIANBABAiIgFqNgK0AQsgAEH8AWoiAhA4QRAgASAAQbQBaiAAQQhqQQAgBiAAQRBqIABBDGogAEHQAWoQmgENACACED8aDAELCyADIAAoArQBIAFrECEgAxAjEC4gACAFNgIEIABBBGoQjQNBAUcEQCAEQQQ2AgALIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAMQIBogBhAgGiAAQYACaiQAC+EEAgN/AX4CfyMAQZACayIAJAAgACACNgKIAiAAIAE2AowCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQ/wEgAEHEAWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCwAEgACAAQSBqNgIcIABBADYCGCAAQQE6ABcgAEHFADoAFkEAIQMDQAJAAkACQCAAQYwCaiAAQYgCahAsDQAgACgCwAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2AsABCyAAQYwCahA4IABBF2ogAEEWaiACIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEP4BDQAgAw0BQQAhAyAAKALAASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHQAWoQH0UNACAALQAXQQFxRQ0AIAAoAhwiAyAAQSBqa0GfAUoNACAAIANBBGo2AhwgAyAAKAIYNgIACyAAIAIgACgCwAEgBBCOAyAAKQMAIQkgBSAAKQMINwMIIAUgCTcDACAAQdABaiAAQSBqIAAoAhwgBBBDIABBjAJqIABBiAJqECwEQCAEIAQoAgBBAnI2AgALIAAoAowCIAEQIBogAEHQAWoQIBogAEGQAmokAAwDC0EBIQMLIABBjAJqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCPAzkDACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCRAzgCACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJIDNwMAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQACwcAIAAoAgALiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJUDOwEAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAuLAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQaiEGIABBxAFqIAMgAEH3AWoQrwEgAEG4AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAEQHyACakYEQCABEB8hAyABIAEQH0EBdBAhIAEgARAoECEgACADIAFBABAiIgJqNgK0AQsgAEH8AWoiAxA4IAYgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakHQnwEQmgENACADED8aDAELCwJAIABBxAFqEB9FDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEIAYQlwM2AgAgAEHEAWogAEEQaiAAKAIMIAQQQyAAQfwBaiAAQfgBahAsBEAgBCAEKAIAQQJyNgIACyAAKAL8ASABECAaIABBxAFqECAaIABBgAJqJAALmIwBAy5/BX0CfCMAQRBrIhkkACAZIAM2AgwgGUEANgIIIBlCADcCACAZIAEgASACaiICIAIgAWsQwAMjAEHgAGsiIiQAICJBCGohDSAZKAIEIBkoAgAiAWshAiMAQcABayITJAAgE0EANgKgASATQgA3A5gBIBNBADYCsAEgE0IANwKoASATQbQBaiIaQQA2AgggGkIANwIAIBpBgMAAELcDIBpBgMAAEJgDIBNBDGpBAEEw/AsAIBMgAjYCCCATIAE2AgQCQAJ/IBNBBGohAgJ/QXpB5RstAABBMUcNABpBfiACRQ0BGiACQQA2AhggAigCICIBRQRAIAJBADYCKCACQS82AiBBLyEBCyACKAIkRQRAIAJBMDYCJAtBfCACKAIoQQFB0DcgAREDACIDRQ0BGiACIAM2AhwgA0EANgI4IAMgAjYCACADQbT+ADYCBEF+IQQCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiDARAIAEoAihBD0cNAQsgAUEPNgIoIAFBBjYCDAwBCyACKAIoIAwgBREBACABQQA2AjggAigCICABQQ82AiggAUEGNgIMRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEEIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQgA3AjwgAUEANgIkIAFBgIACNgIYIAFCgICAgHA3AhAgAUK0/gA3AgQgAUKBgICAcDcCxDcgASABQbQKaiIFNgJwIAEgBTYCVCABIAU2AlALQQAgBEUNABogAigCKCADIAIoAiQRAQAgAkEANgIcIAQLC0UEQCATQQA2AqwBAkADQCATIBooAgAiATYCECATIBooAgQgAWs2AhRBACEMIwBBEGsiFyQAQX4hHAJAIBNBBGoiCkUNACAKKAIgRQ0AIAooAiRFDQAgCigCHCIGRQ0AIAYoAgAgCkcNACAGKAIEIgVBtP4Aa0EfSw0AIAooAgwiEEUNACAKKAIAIgFFBEAgCigCBA0BCyAFQb/+AEYEQCAGQcD+ADYCBEHA/gAhBQsgBkHcAGohKiAGQfQFaiEgIAZB2ABqISMgBkHwAGohISAGQbQKaiEfIAZB9ABqIRYgBigCQCEDIAYoAjwhByAKKAIEIiQhBCAKKAIQIg8hFQJAAkACQAJAAkADQEF9IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBtP4Aaw4fBwYKDRA5Ojs8BRUWFhcYGQQcAiUmASgAKh0eA0BCQ0QLIAYoAkwhCAwoCyAGKAJMIQgMJQsgBigCbCEIDCELIAYoAgwhBQw5CyADQQ5PDRYgBEUNPCADQQhqIQIgAUEBaiEFIARBAWshCCABLQAAIAN0IAdqIQcgA0EFTQ0VIAUhASAIIQQgAiEDDBYLIANBIE8NDiAERQ07IAFBAWohAiAEQQFrIQUgAS0AACADdCAHaiEHIANBF00NDSACIQEgBSEEDA4LIANBEE8NAiAERQ06IANBCGohAiABQQFqIQUgBEEBayEIIAEtAAAgA3QgB2ohByADQQdNDQEgBSEBIAghBCACIQMMAgsgBigCDCIJRQ0XAkAgA0EQTw0AIARFDTogA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAFIQEgCCEEIAIhAwwBCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgw8CyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAlBAnFFIAdBn5YCR3JFBEAgBigCKEUEQCAGQQ82AigLQQAhByAGQQBBAEEAEFEiAjYCHCAXQZ+WAjsADCACIBdBDGpBAhBRIQIgBkG1/gA2AgQgBiACNgIcQQAhAyAGKAIEIQUMNwsgBigCJCICBEAgAkF/NgIwCyAHQQh0QYD+A3EgB0EIdmpBH3BFIAlBAXFxRQRAIApBxw42AhggBkHR/gA2AgQgBigCBCEFDDcLIAdBD3FBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw3CyAHQQR2IgJBD3EiCEEIaiEFIAhBB00gBigCKCIJBH8gCQUgBiAFNgIoIAULIAVPcUUEQCADQQRrIQMgCkHREDYCGCAGQdH+ADYCBCACIQcgBigCBCEFDDcLQQAhAyAGQQA2AhQgBkGAAiAIdDYCGCAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBvf4AQb/+ACAHQYDAAHEbNgIEQQAhByAGKAIEIQUMNgsgCEUEQCAFIQFBACEEIAIhAyAMIQIMOgsgA0EQciEDIARBAmshBCABLQABIAJ0IAdqIQcgAUECaiEBCyAGIAc2AhQgB0H/AXFBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAHQYDAA3EEQCAKQesJNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAGKAIkIgIEQCACIAdBCHZBAXE2AgALAkAgB0GABHFFDQAgBi0ADEEEcUUNACAXQQg6AAwgFyAHQQh2OgANIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG2/gA2AgRBACEDQQAhBwwBCyADQR9LDQELIARFDTUgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EXSwRAIAIhASAFIQQMAQsgA0EIaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDDcLIAFBAmohAiAEQQJrIQUgAS0AASAIdCAHaiEHIANBD0sEQCACIQEgBSEEDAELIANBEGohCCAFRQRAIAIhAUEAIQQgCCEDIAwhAgw3CyABQQNqIQIgBEEDayEFIAEtAAIgCHQgB2ohByADQQdLBEAgAiEBIAUhBAwBCyADQRhqIQMgBUUEQCACIQEMNgsgBEEEayEEIAEtAAMgA3QgB2ohByABQQRqIQELIAYoAiQiAgRAIAIgBzYCBAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHNgAMIAYgBigCHCAXQQxqQQQQUTYCHAsgBkG3/gA2AgRBACEDQQAhBwwBCyADQQ9LDQELIARFDTIgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EHSwRAIAIhASAFIQQMAQsgA0EIaiEDIAVFBEAgAiEBDDMLIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGKAIkIgIEQCACIAdBCHY2AgwgAiAHQf8BcTYCCAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHOwAMIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG4/gA2AgRBACEFQQAhA0EAIQcgBigCFCICQYAIcQ0BDCcLIAYoAhQiAkGACHFFBEAgAyEFDCcLIAchBSADQQ9LDQELIARFBEBBACEEIAUhByAMIQIMMQsgAUEBaiEIIARBAWshCSABLQAAIAN0IAVqIQcgA0EHSwRAIAghASAJIQQMAQsgA0EIaiEDIAlFBEAgCCEBDDALIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGIAc2AkQgBigCJCIDBEAgAyAHNgIUC0EAIQMCQCACQYAEcUUNACAGLQAMQQRxRQ0AIBcgBzsADCAGIAYoAhwgF0EMakECEFE2AhwLQQAhBwwlCyADQQhqIQggBUUEQCACIQFBACEEIAghAyAMIQIMLwsgAUECaiECIARBAmshBSABLQABIAh0IAdqIQcgA0EPSwRAIAIhASAFIQQMAQsgA0EQaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDC8LIAFBA2ohAiAEQQNrIQUgAS0AAiAIdCAHaiEHIANBB0sEQCACIQEgBSEEDAELIANBGGohAyAFRQRAIAIhAQwuCyAEQQRrIQQgAS0AAyADdCAHaiEHIAFBBGohAQsgBiAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciICNgIcIAogAjYCMCAGQb7+ADYCBEEAIQdBACEDCyAGKAIQRQRAIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8QQIhHAwvCyAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBv/4ANgIECwJ/AkAgBigCCEUEQCADIANBAksNAhogBA0BDC0LIAZBzv4ANgIEIAcgA0EHcXYhByADQXhxIQMgBigCBCEFDCkLIARBAWshBCABLQAAIAN0IAdqIQcgAUEBaiEBIANBCHILIAYgB0EBcTYCCEHB/gAhBQJAAkACQAJAAkAgB0EBdkEDcUEBaw4DAAECAwsgBkGA3AA2AlAgBkKJgICA0AA3AlggBkGA7AA2AlQgBkHH/gA2AgQMAwtBxP4AIQUMAQsgCkH0EDYCGEHR/gAhBQsgBiAFNgIEC0EDayEDIAdBA3YhByAGKAIEIQUMJwsgByADQQdxdiEHAn8gA0F4cSIFIANBH0sNABogBEUEQEEAIQQgBSEDIAwhAgwsCyAFQQhqIQggAUEBaiECIARBAWshCSABLQAAIAV0IAdqIQcgA0EXSwRAIAIhASAJIQQgCAwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwsCyAFQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAIhASALIQQgCQwBCyALRQRAIAIhAUEAIQQgCSEDIAwhAgwsCyAFQRhqIQUgAUEDaiECIARBA2shCCABLQACIAl0IAdqIQcgA0EHSwRAIAIhASAIIQQgBQwBCyAIRQRAIAIhAUEAIQQgBSEDIAwhAgwsCyAEQQRrIQQgAS0AAyAFdCAHaiEHIAFBBGohAUEgCyEDIAdB//8DcSICIAdBf3NBEHZHBEAgCkGdCzYCGCAGQdH+ADYCBCAGKAIEIQUMJwsgBkHC/gA2AgQgBiACNgJEQQAhB0EAIQMLIAZBw/4ANgIECyAGKAJEIgIEQCACIAQgAiAESRsiAiAPIAIgD0kbIgJFBEAgDCECDCoLIAIEQCAQIAEgAvwKAAALIAYgBigCRCACazYCRCACIBBqIRAgDyACayEPIAEgAmohASAEIAJrIQQgBigCBCEFDCULIAZBv/4ANgIEIAYoAgQhBQwkCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgwoCyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAYgB0EfcSICQYECajYCZCAGIAdBBXZBH3EiBUEBajYCaCAGIAdBCnZBD3FBBGoiCTYCYCADQQ5rIQMgB0EOdiEHIAVBHkkgAkEdTXFFBEAgCkH5CjYCGCAGQdH+ADYCBCAGKAIEIQUMIwsgBkHF/gA2AgRBACEFIAZBADYCbAwGCyAGKAJsIgUgBigCYCIJSQ0FDAYLIA9FDQ0gECAGKAJEOgAAIAZByP4ANgIEIA9BAWshDyAQQQFqIRAgBigCBCEFDCALIAYoAgwiBUUEQEEAIQUMAwsCQCADQR9LBEAgASEIDAELIARFDSMgA0EIaiECIAFBAWohCCAEQQFrIQkgAS0AACADdCAHaiEHIANBF0sEQCAJIQQgAiEDDAELIAlFBEAgCCEBQQAhBCACIQMgDCECDCULIANBEGohCSABQQJqIQggBEECayELIAEtAAEgAnQgB2ohByADQQ9LBEAgCyEEIAkhAwwBCyALRQRAIAghAUEAIQQgCSEDIAwhAgwlCyADQRhqIQIgAUEDaiEIIARBA2shCyABLQACIAl0IAdqIQcgA0EHSwRAIAshBCACIQMMAQsgC0UEQCAIIQFBACEEIAIhAyAMIQIMJQsgA0EgciEDIAFBBGohCCAEQQRrIQQgAS0AAyACdCAHaiEHCyAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBUEEcSICRSAPIBVGcgR/IAIFIBAgAWshAiAGKAIcIQUgBgJ/IAYoAhQEQCAFIAIgARBRDAELIAUgAiABELMBCyIBNgIcIAogATYCMCAGKAIMIgVBBHELRQ0BIAYoAhwgByAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciAGKAIUG0YNASAKQfUONgIYIAZB0f4ANgIEIAghASAPIRUgBigCBCEFDB8LIAZBwP4ANgIEDBULIAghAUEAIQdBACEDIA8hFQsgBkHP/gA2AgQMGwsDQCADQQJNBEAgBEUNICAEQQFrIQQgAS0AACADdCAHaiEHIANBCHIhAyABQQFqIQELIAYgBUEBaiICNgJsIBYgBUEBdC8B0FtBAXRqIAdBB3E7AQAgA0EDayEDIAdBA3YhByACIgUgCUcNAAsgCSEFCyAFQRJNBEBBACEIIAUiAkEDcSIMQQNHBEADQCAWIAJBAXQvAdBbQQF0akEAOwEAIAJBAWohAiAMIAhBAWoiCHNBA0cNAAsLIAVBD00EQANAIBYgAkEBdCIFLwHQW0EBdGpBADsBACAWIAVB0tsAai8BAEEBdGpBADsBACAWIAVB1NsAai8BAEEBdGpBADsBACAWIAVB1tsAai8BAEEBdGpBADsBACACQQRqIgJBE0cNAAsLIAZBEzYCbAsgBkEHNgJYIAYgHzYCUCAGIB82AnBBACEIQQAgFkETICEgIyAgEOMBIgwEQCAKQdIJNgIYIAZB0f4ANgIEIAYoAgQhBQwbCyAGQcb+ADYCBCAGQQA2AmxBACEMCyAGKAJkIh0gBigCaGoiGCAISwRAQX8gBigCWHRBf3MhGyAGKAJQIRQDQCADIQ4gBCEFIAEhAgJAAkACQAJAAkACQCAUIAcgG3EiEkECdGotAAEiCyADTQRAIAMhCQwBCwNAIAVFDQIgAi0AACAOdCELIAJBAWohAiAFQQFrIQUgDkEIaiIJIQ4gCSAUIAcgC2oiByAbcSISQQJ0ai0AASILSQ0ACwsgFCASQQJ0ai8BAiIDQQ9NBEAgBiAIQQFqIgE2AmwgFiAIQQF0aiADOwEAIAkgC2shAyAHIAt2IQcgASEIDAULAn8CfwJAAkACQCADQRBrDgIAAQILIAtBAmoiASAJSwRAA0AgBUUNHiAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2shAyAHIAt2IQkgCEUEQCAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgCSEHIAYoAgQhBQwlCyADQQJrIQMgCUECdiEHIAlBA3FBA2ohCyAIQQF0IBZqQQJrLwEADAMLIAtBA2oiASAJSwRAA0AgBUUNHSAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBA2shAyAHIAt2IgFBA3YhByABQQdxQQNqDAELIAtBB2oiASAJSwRAA0AgBUUNHCAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBB2shAyAHIAt2IgFBB3YhByABQf8AcUELagshC0EACyEEIAggC2ogGEsNAkEAIQkgC0EDcSIORQ0BIAshAQNAIBYgCEEBdGogBDsBACAIQQFqIQggAUEBayEBIAlBAWoiCSAORw0ACwwDCyABIARqIQEgAyAEQQN0aiEDDCILIAshAQwBCyAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgBigCBCEFDB0LIAtBBE8EQANAIBYgCEEBdGoiCSAEOwEAIAkgBDsBAiAJIAQ7AQQgCSAEOwEGIAhBBGohCCABQQRrIgENAAsLIAYgCDYCbAsgAiEBIAUhBCAIIBhJDQALCyAGLwH0BEUEQCAKQaIONgIYIAZB0f4ANgIEIAYoAgQhBQwaCyAGQQk2AlggBiAfNgJQIAYgHzYCcEEBIBYgHSAhICMgIBDjASIMBEAgCkG2CTYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkEGNgJcIAYgBigCcDYCVEECIBYgBigCZEEBdGogBigCaCAhICogIBDjASIMBEAgCkGECjYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkHH/gA2AgRBACEMCyAGQcj+ADYCBAsgBEEGSSAPQYICSXJFBEAgCiAPNgIQIAogEDYCDCAKIAQ2AgQgCiABNgIAIAYgAzYCQCAGIAc2AjwgCigCHCIQKAI0IgtBB3EhJSALIBVqISsgCyAQKAIsIixqIS0gCigCDCIBIAooAhAiAmoiHUGBAmshJiABIAIgFWtqIS4gCigCACIIIAooAgRqQQVrISdBfyAQKAJcdEF/cyEvQX8gECgCWHRBf3MhMCAQKAJUISggECgCUCEpIBAoAkAhBSAQKAI8IQ4gECgCOCEHIBAoAjAhMQNAIAVBDk0EfyAILQAAIAV0IA5qIAgtAAEgBUEIanRqIQ4gCEECaiEIIAVBEHIFIAULICkgDiAwcUECdGoiAi0AASIDayEFIA4gA3YhDgJAAkACQAJAAkAgEAJ/IAoCfwJAA0AgAi0AACIDRQRAIAEgAi0AAjoAACABQQFqIQEMCAsgA0EQcQRAIAIvAQIhDwJ/IANBD3EiAkUEQCAIIQMgDgwBCwJ/IAIgBU0EQCAFIQQgCAwBCyAFQQhqIQQgCC0AACAFdCAOaiEOIAhBAWoLIQMgBCACayEFIA5BfyACdEF/c3EgD2ohDyAOIAJ2CyEEIAVBDk0EQCADLQAAIAV0IARqIAMtAAEgBUEIanRqIQQgBUEQciEFIANBAmohAwsgBSAoIAQgL3FBAnRqIgItAAEiCGshBSAEIAh2IQ4gAi0AACIEQRBxDQIDQCAEQcAAcUUEQCAFICggAi8BAkECdGogDkF/IAR0QX9zcUECdGoiAi0AASIEayEFIA4gBHYhDiACLQAAIgRBEHFFDQEMBAsLIAMhCEHwEQwDCyADQcAAcUUEQCAFICkgAi8BAkECdGogDkF/IAN0QX9zcUECdGoiAi0AASIDayEFIA4gA3YhDgwBCwtBv/4AIANBIHENAhpB1BEMAQsgAi8BAiEUAn8gBEEPcSICIAVNBEAgBSEEIAMMAQsgAy0AACAFdCAOaiEOIANBAWogAiAFQQhqIgRNDQAaIAMtAAEgBHQgDmohDiAFQRBqIQQgA0ECagshCCAOQX8gAnRBf3NxIRggBCACayEFIA4gAnYhDiAUIBhqIhsgASAuayICTQ0DIBsgAmsiCSAxTQ0CIBAoAsQ3RQ0CQZQPCzYCGEHR/gALNgIEDAQLAkACQCALRQRAIAcgLCAJa2ohBCAJIA9PBEAgASECDAMLQQAhEiABIQIgCSIDQQdxIh4EQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCASQQFqIhIgHkcNAAsLIBUgGCAdaiAUamsgAWpBeEsNAQNAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsMAQsgCSALSwRAIAcgLSAJa2ohBCAJIAtrIgkgD08EQCABIQIMAwtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgKyAYIB1qIBRqayABakF4TQRAA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgCyAPIAlrIg9PBEAgByEEDAMLQQAhASALIQMgByEEICUEQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCABQQFqIgEgJUcNAAsLIAtBCE8EQANAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsLIAIgG2shBCAPIAtrIQ8MAgsgByALIAlraiEEIAkgD08EQCABIQIMAgtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgFSAYIB1qIBRqayABakF4Sw0AA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgAiAbayEEIA8gCWshDwsCQCAPQQNJDQAgD0EDayIBQQNuIgNBA3FBA0cEQCADQQFqQQNxIQlBACEDA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgD0EDayEPIAJBA2ohAiAEQQNqIQQgA0EBaiIDIAlHDQALCyABQQlJDQADQCACIAQtAAA6AAAgAiAELQABOgABIAIgBC0AAjoAAiACIAQtAAM6AAMgAiAELQAEOgAEIAIgBC0ABToABSACIAQtAAY6AAYgAiAELQAHOgAHIAIgBC0ACDoACCACIAQtAAk6AAkgAiAELQAKOgAKIAIgBC0ACzoACyACQQxqIQIgBEEMaiEEIA9BDGsiD0ECSw0ACwsgD0UEQCACIQEMAwsgAiAELQAAOgAAIA9BAkYNASACQQFqIQEMAgsgASAbayEDA0AgASICIAMiBC0AADoAACACIAMtAAE6AAEgAiADLQACOgACIAJBA2ohASADQQNqIQMgD0EDayIPQQJLDQALIA9FDQEgAiADLQAAOgADIA9BAkcEQCACQQRqIQEMAgsgAiAELQAEOgAEIAJBBWohAQwBCyACIAQtAAE6AAEgAkECaiEBCyAIICdPDQAgASAmSQ0BCwsgCiABNgIMIAogCCAFQQN2ayICNgIAIAogJiABa0GBAmo2AhAgCiAnIAJrQQVqNgIEIBAgBUEHcSIBNgJAIBAgDkF/IAF0QX9zcTYCPCAGKAJAIQMgBigCPCEHIAooAgQhBCAKKAIAIQEgCigCECEPIAooAgwhECAGKAIEQb/+AEcNDyAGQX82Asg3IAYoAgQhBQwYCyAGQQA2Asg3IAMhCCAEIQUgASECAkAgBigCUCIUIAdBfyAGKAJYdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNDSACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyAOIQMgCy8BAiESAkAgCy0AACILQQFrQf8BcUEOSwRAQQAhAyACIQEgBSEEDAELIAUhBCACIQECQCAJIgggAyAUIBJBAnRqIhQgB0F/IAMgC2p0QX9zIhhxIAN2QQJ0aiISLQABIg5qTwRAIAghCwwBCwNAIARFDQ0gAS0AACAIdCEOIAFBAWohASAEQQFrIQQgCEEIaiILIQggAyAUIAcgDmoiByAYcSADdkECdGoiEi0AASIOaiALSw0ACwsgCyADayEJIAcgA3YhByASLQAAIQsgEi8BAiESCyAGIBJB//8DcTYCRCAGIAMgDmo2Asg3IAkgDmshAyAHIA52IQcgC0H/AXEiAkUEQCAGQc3+ADYCBCAGKAIEIQUMGAsgAkEgcQRAIAZBv/4ANgIEIAZBfzYCyDcgBigCBCEFDBgLIAJBwABxBEAgCkHUETYCGCAGQdH+ADYCBCAGKAIEIQUMGAsgBkHJ/gA2AgQgBiACQQ9xIgg2AkwLIAEhCyAEIQkCQCAIRQRAIAYoAkQhAgwBCyADIQUgASECIAMgCEkEQANAIARFDQsgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCRCAHQX8gCHRBf3NxaiICNgJEIAUgCGshAyAHIAh2IQcLIAZByv4ANgIEIAYgAjYCzDcLIAMhCCAEIQUgASECAkAgBigCVCIUIAdBfyAGKAJcdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNCCACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyALLwECIRIgBgJ/IAstAAAiCEEQTwRAIAIhASAFIQQgDiELIAYoAsg3DAELIAUhBCACIQECQCAJIgMgDiAUIBJBAnRqIhQgB0F/IAggDmp0QX9zIhhxIA52QQJ0aiISLQABIgtqTwRAIAMhCAwBCwNAIARFDQggAS0AACADdCELIAFBAWohASAEQQFrIQQgA0EIaiIIIQMgDiAUIAcgC2oiByAYcSAOdkECdGoiEi0AASILaiAISw0ACwsgCCAOayEJIAcgDnYhByASLQAAIQggEi8BAiESIAYoAsg3IA5qCyALajYCyDcgCSALayEDIAcgC3YhByAIQcAAcQRAIApB8BE2AhggBkHR/gA2AgQgBigCBCEFDBYLIAZBy/4ANgIEIAYgCEEPcSIINgJMIAYgEkH//wNxNgJICyABIQsgBCEJIAgEQCADIQUgASECIAMgCEkEQANAIARFDQYgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCSCAHQX8gCHRBf3NxajYCSCAHIAh2IQcgBSAIayEDCyAGQcz+ADYCBAsgDw0BC0EAIQ8gDCECDBYLAn8gBigCSCICIBUgD2siBUsEQAJAIAIgBWsiAiAGKAIwTQ0AIAYoAsQ3RQ0AIApBlA82AhggBkHR/gA2AgQgBigCBCEFDBQLAn8gBigCNCIFIAJJBEAgBigCOCAGKAIsIAIgBWsiAmtqDAELIAYoAjggBSACa2oLIQUgAiAGKAJEIgggAiAISRsMAQsgECACayEFIAYoAkQiCAshAiAGIAggAiAPIAIgD0kbIglrNgJEIAlBAWshC0EAIQggCUEHcSIORQ0GIAkhAgNAIBAgBS0AADoAACACQQFrIQIgEEEBaiEQIAVBAWohBSAIQQFqIgggDkcNAAsMBwsgCSALaiEBIAMgCUEDdGohAwwTCyACIAVqIQEgCSAFQQN0aiEDDBILIAEgBGohASADIARBA3RqIQMMEQsgCSALaiEBIAMgCUEDdGohAwwQCyACIAVqIQEgCSAFQQN0aiEDDA8LIAEgBGohASADIARBA3RqIQMMDgsgCSECCyALQQdPBEADQCAQIAUtAAA6AAAgECAFLQABOgABIBAgBS0AAjoAAiAQIAUtAAM6AAMgECAFLQAEOgAEIBAgBS0ABToABSAQIAUtAAY6AAYgECAFLQAHOgAHIBBBCGohECAFQQhqIQUgAkEIayICDQALCyAPIAlrIQ8gBigCRA0AIAZByP4ANgIEIAYoAgQhBQwJCyAGKAIEIQUMCAtBACEEIAIhASAJIQMgDCECDAsLIAYoAiQiAgRAIAJBADYCEAsgBSEDCyAGQbn+ADYCBAsCQCAGKAIUIghBgAhxRQ0AIAYoAkQiBSAEIAQgBUsbIgIEQAJAIAYoAiQiCUUNACAJKAIQIg5FDQAgCSgCGCILIAkoAhQgBWsiBU0NACALIAVrIAIgAiAFaiALSxsiCARAIAUgDmogASAI/AoAAAsgBigCFCEICwJAIAhBgARxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgAhBRNgIcCyAGIAYoAkQgAmsiBTYCRCAEIAJrIQQgASACaiEBCyAFRQ0AIAwhAgwJCyAGQbr+ADYCBCAGQQA2AkQLAkAgBi0AFUEIcQRAQQAhBSAERQ0IA0AgASAFai0AACECAkAgBigCJCIIRQ0AIAgoAhwiC0UNACAGKAJEIgkgCCgCIE8NACAGIAlBAWo2AkQgCSALaiACOgAACyACQQAgBCAFQQFqIgVLGw0ACwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACAGIAYoAhwgASAFEFE2AhwLIAEgBWohASAEIAVrIQQgAkUNASAMIQIMCQsgBigCJCICRQ0AIAJBADYCHAsgBkG7/gA2AgQgBkEANgJECwJAIAYtABVBEHEEQEEAIQUgBEUNBwNAIAEgBWotAAAhAgJAIAYoAiQiCEUNACAIKAIkIgtFDQAgBigCRCIJIAgoAihPDQAgBiAJQQFqNgJEIAkgC2ogAjoAAAsgAkEAIAQgBUEBaiIFSxsNAAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgBRBRNgIcCyABIAVqIQEgBCAFayEEIAJFDQEgDCECDAgLIAYoAiQiAkUNACACQQA2AiQLIAZBvP4ANgIECyAGKAIUIglBgARxBEACQCADQQ9LBEAgASEFDAELIARFDQYgA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAIIQQgAiEDDAELIAhFBEAgBSEBQQAhBCACIQMgDCECDAgLIANBEHIhAyABQQJqIQUgBEECayEEIAEtAAEgAnQgB2ohBwsCQCAGLQAMQQRxRQ0AIAcgBi8BHEYNACAKQbkPNgIYIAZB0f4ANgIEIAUhASAGKAIEIQUMAwtBACEHQQAhAyAFIQELIAYoAiQiAgRAIAJBATYCMCACIAlBCXZBAXE2AiwLIAZBAEEAQQAQUSICNgIcIAogAjYCMCAGQb/+ADYCBCAGKAIEIQUMAQsgBUUNASAGKAIURQ0BAkAgA0EfSwRAIAEhAgwBCyAERQ0EIANBCGohCCABQQFqIQIgBEEBayEJIAEtAAAgA3QgB2ohByADQRdLBEAgCSEEIAghAwwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwGCyADQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAshBCAJIQMMAQsgC0UEQCACIQFBACEEIAkhAyAMIQIMBgsgA0EYaiEIIAFBA2ohAiAEQQNrIQsgAS0AAiAJdCAHaiEHIANBB0sEQCALIQQgCCEDDAELIAtFBEAgAiEBQQAhBCAIIQMgDCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAEQQBMDQIgASADIAIgAyAFahCeAiAERQ0CIAMgCSAE/AoAAAwCCyABIAMgAiADIAVqEJ4CIAVFDQEgAyAJIAX8CgAADAELIAUgCEEMaiABIAUgASgCAGsgAmoQtAEgAyABKAIAayABEMYBIgIoAggiBGohBQNAIAQgBUcEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAwBCwsgAiAFNgIIIAIoAgQaIAEoAgQgA2siBARAIAIoAgggAyAE/AoAAAsgAiACKAIIIAEoAgQgA2tqNgIIIAEgAzYCBCACKAIEIAEoAgAiBCADa2ohBSADIARrIgMEQCAFIAQgA/wKAAALIAIgBTYCBCABIAEoAgAiAzYCBCABIAIoAgQ2AgAgAiADNgIEIAEoAgQhAyABIAIoAgg2AgQgAiADNgIIIAEoAgghAyABIAIoAgw2AgggAiADNgIMIAIgAigCBDYCACACELoBCyAIQSBqJAAgHEEBRw0ACyAKEJsCIBoQOiATQZgBaiIDIBMoAqgBIgIgEygCrAEgAmsQsQIgARA6IApBADYCXCAKQfD7ADYCQCAKQcj7ADYCACAKQdz7ADYCCCAKQYD8ACgCACIBNgIAIAogAUEMaygCAGpBhPwAKAIANgIAIApBADYCBCAKIAooAgBBDGsoAgBqIgJBADYCFCACIApBDGoiATYCGCACQQA2AgwgAkKCoICA4AA3AgQgAiABRTYCECACQSBqQQBBKPwLACACQRxqENMCIAJBADoAUCACQoCAgIBwNwJIIApBiPwAKAIAIgI2AgggAkEMaygCACAKQQhqakGM/AAoAgA2AgAgCkH8+wAoAgAiAjYCACAKIAJBDGsoAgBqQZD8ACgCADYCACAKQZT8ACgCADYCCCAKQcj7ADYCACAKQdz7ADYCCCAKQfD7ADYCQCABQZj1ADYCACABQQRqENMCIAFCADcCGCABQgA3AhAgAUIANwIIIAFCADcCICABQZD3ADYCACABQRg2AjAgAUIANwIoAkAgAyABQSBqIgJGDQAgAhBHRQRAIAMQR0UEQCACEF4aIAIQXiADEF5JBEAgAxBeGiACEF4aCyACIAMpAgA3AgAgAiADKAIINgIIIAIQXhoMAgsgAxAjIQUgAxAfIQMjAEEQayIEJAAgAhBeIQwCQCADQQpNBEAgAiADEFAgAiAFIAMQTSAEQQA6AA8gAiADaiAEQQ9qEF0MAQsgAkEKIANBCmsgDEEAIAwgAyAFELkBCyAEQRBqJAAMAQsgAxAjIQwgAxAfIQMjAEEQayIEJAAgAhB+IQUgAigCBCEIAkAgAyAFSQRAIAIoAgAhBSACIAM2AgQgBSAMIAMQTSAEQQA6AA8gAyAFaiAEQQ9qEF0MAQsgAiAFQQFrIAMgBWtBAWogCEEAIAggAyAMELkBCyAEQRBqJAALIAFBADYCLCABKAIgIAFBIGoiAyABLAArIgJBAEgiBBshCSABKAIkIAIgBBshCCABKAIwIgRBCHEEQCABIAk2AgwgASAJNgIIIAEgCCAJaiIFNgIQIAEgBTYCLAsCQCAEQRBxRQ0AIAEgCCAJajYCLCADQQogASgCKEH/////B3FBAWsgAkEAThsQISABIAk2AhggASAJNgIUIAEgCSABKAIkIAEsACsiAiACQQBIG2o2AhwgAS0AMEEDcUUNAANAIAhBAEgEQCABIAlB/////wdqIgk2AhggCEH/////B2shCAwBCwsgCEUNACABIAggCWo2AhgLIwBBwAFrIgEkACABQgA3ArgBIAFCzo7NgjU3ArABIAogAUGwAWpBEBCIAQJAAkAgCiAKKAIAQQxrKAIAai0AEEEFcUUEQCABKAKwAUHOjs2CBUYNAQtBshIQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArQBQQRrQXxNBEBBthQgAUG0AWoQlwIgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArgBIgJBga3iBE8EQEG4EyABQbgBahCXAiANQgA3AAUgDUIANwIAIA1BAToADSANQRBqQQBByAD8CwAMAQsgAS0AvAEiA0EETwRAIAEgAzYCAEH0EyABEHIQf0Gg8QAoAgAQYRogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAMQ0wMhDCABKAK0ASEEIAFBAToAZSABQegAaiIFQQBByAD8CwAgASACNgJYIAEgAS0AvAE2AlwgASABLQC9ATYCYCABIAEtAL4BQQFxOgBkIAUgAkEDbCIDQQJBAyAEQQFGG2wQpwEgAUH0AGoiCCADEKcBIAEgBEECSyIEOgBlIAFBgAFqIglBBEEDIAQbIAJsEKcBIAFBjAFqIgQgAhCnASABQZgBaiIHIAMQpwEgAUGkAWoiCyADIAxsEKcBIAogASgCaCABQcwAaiAFEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCjAEgAUFAayAEEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCmAEgAUE0aiAHEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCdCABQShqIAgQogEiAigCBCACKAIAaxCIASACEDogCiABKAKAASABQRxqIAkQogEiAigCBCACKAIAaxCIASACEDogCiABKAKkASABQRBqIAsQogEiAigCBCACKAIAaxCIASACEDoCQCAKIAooAgBBDGsoAgBqLQAQQQVxBEBBkQwQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIA0gAUHYAGoiAikCADcCACANIAIpAQY3AQYgDUEQaiACQRBqEKEBIA1BHGogAkEcahChASANQShqIAJBKGoQoQEgDUE0aiACQTRqEKEBIA1BQGsgAkFAaxChASANQcwAaiACQcwAahChAQsgAUHYAGoQywMLIAFBwAFqJAAgChCxARoMAgsgE0EEahCbAgsgGhA6IBNBqAFqEDogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsACyATQZgBahAgGiATQcABaiQAIwBBkAFrIgIkACANKAIAIQQgDSgCBBDTAyEBAkACQAJAIA0oAhQgDSgCEGsiBSAEQQNsIgNBAkEDIAUgDSgCACIMQQZsIghGG2xHBEAgAkH2HTYCOCACQfgANgI0IAJB/BQ2AjBByAsgAkEwahByEH9BoPEAKAIAEGEaDAELIAMgDSgCICANKAIca0cEQCACQfkANgI8IAJBPGpBxhwQmgIMAQsgDSgCLCANKAIoa0EEQQMgDS0ADSIJQQFxGyAEbEcEQCACQZ4dNgIoIAJB+gA2AiQgAkH8FDYCIEHICyACQSBqEHIQf0Gg8QAoAgAQYRoMAQsgBCANKAI4IA0oAjRrRwRAIAJB7xs2AhggAkH7ADYCFCACQfwUNgIQQcgLIAJBEGoQchB/QaDxACgCABBhGgwBCyADIA0oAkQgDSgCQGtHBEAgAkH8ADYCPCACQTxqQZwcEJoCDAELIA0oAlAgDSgCTGsiByABIANsRg0BIAJB8Bw2AgggAkH9ADYCBCACQfwUNgIAQcgLIAIQchB/QaDxACgCABBhGgsgAEIANwIAIABBADoACCAAQQxqQQBByAD8CwAMAQsgAEEMaiIBQQBByAD8CwAgACAMNgIAIAAgDSgCBDYCBCAAIA0tAAw6AAggASADEKQBIABBGGogAxCkASAAQSRqIARBAnQQpAEgAEEwaiAEEKQBIABBPGogAxCkASAAQcgAaiAHEKQBAkAgBSAIRgRAIAEoAgAhDCANKAIQIQgDQCADIBFGDQIgDCARQQJ0agJ9QwAAgD9DAACAvyAIIBFBAXRqLwEAIgHBQQBOGyEzIAFB/wdxIQUCQCABQQp2QR9xIgFBH0cEQCABDQEgM0MAAIA4lCAFs5RDAACAOpQMAgtDAADAfyAzQwAAgH+UIAUbDAELQwAAgD8hMgJAIAFBD2siAUGAAU4EQEMAAAB/ITIgAUH/AUkEQCABQf8AayEBDAILQwAAgH8hMkH9AiABIAFB/QJPG0H+AWshAQwBCyABQYF/Sg0AQwAAgAwhMiABQZt+SwRAIAFB5gBqIQEMAQtDAAAAACEyQbZ9IAEgAUG2fU0bQcwBaiEBCyAFs0MAAIA6lEMAAIA/kiAzIDIgAUEXdEGAgID8A2q+lJSUCzgCACARQQFqIREMAAsACyANKAIQIgVBAmohDCAFQQFqIQhEAAAAAAAA8D9BASANKAIIdLejtiEyIAEoAgAhBwNAIAMgEUYNASAHIBFBAnRqIDIgCCARQQNsIgFqLQAAQQh0IAEgBWotAAByIAEgDGosAAAiAUH/AXFBEHRyQYCAgHhBACABQQBIG3KylDgCACARQQFqIREMAAsACyAAKAIYIQEgDSgCHCEFQQAhEQNAIAMgEUYEQCACQdQAaiEIQQAhESAJQQFxIQcDfyAEIBFGBH8gACgCMCEFIA0oAjQhDEEABQJAIAcEQCAAKAIkIA0oAighBSACQoCAgPyDgIDAPzcCTCACQoCAgPyDgIDAPzcCRCACQoCAgPyDgIDAPzcCPCAIQcgfQTz8CgAAIBFBBHRqIQwgAkE8aiELQwAAAAAhMiAFIBFBAnRqIgEvAAAgAS0AAkEQdHIgAS0AAyIBQRh0ciEFIAFBBnYhCUEDIQEDfyABQQBIBH8gDCAJQQJ0akMAAIA/IDKTkTgCACALQQxqIQVBAAUgASAJRwRAIAwgAUECdGogBUH/A3GzQ/MENT+UQwCA/0OVIjOMIDMgBUGABHEbIjM4AgAgMyAzlCAykiEyIAVBCnYhBQsgAUEBayEBDAELCyEBA0AgAUEDRwRAIAwgAUECdCIJaiILIAUgCWoqAgAgCyoCAJQ4AgAgAUEBaiEBDAELCwwBCyAAKAIkIA0oAiggAkKAgID8g4CAwD83AkwgAkKAgID8g4CAwD83AkQgAkKAgID8g4CAwD83AjwgCEHIH0E8/AoAACMAQRBrIgEkACARQQNsaiIFLQACIQkgBS0AASELIAEgBS0AALNDgYAAPJRDAACAv5IgAioCSJQ4AgQgASALs0OBgAA8lEMAAIC/kiACKgJMlDgCCCABIAmzQ4GAADyUQwAAgL+SIAIqAlCUOAIMIBFBBHRqIgUgASkCBDcCACAFIAEoAgw2AgggBUMAAIA/IAEqAgwgASoCDJQgASoCBCABKgIElCABKgIIIAEqAgiUkpKTIjJDAAAAACAyQwAAAABeG5E4AgwgAUEQaiQACyARQQFqIREMAQsLIREDQCAEIBFHBEAgBSARQQJ0agJ9QwAAAAAgDCARai0AALNDAAB/Q5UiMkMAAIA/IDKTlSIyvCIBQYCAgPwDRg0AGgJAIAFBgICA/AdrQf///4d4TQRAIAFBAXQiCEUEQCMAQRBrIgFDAACAvzgCDCABKgIMQwAAAACVDAMLIAFBgICA/AdGDQEgCEGAgIB4SSABQQBOcUUEQCAyIDKTIjIgMpUMAwsgMkMAAABLlLxBgICA3ABrIQELQYjxACsDACABIAFBgIDM+QNrIgFBgICAfHFrvrsgAUEPdkHwAXEiCCsDgG+iRAAAAAAAAPC/oCI3IDeiIjiiQZDxACsDACA3okGY8QArAwCgoCA4oiABQRd1t0GA8QArAwCiIAgrA4hvoCA3oKC2ITILIDILOAIAIBFBAWohEQwBCwsgACgCPCEBIA0oAkAhBEEAIREDQCADIBFGBEAgDSgCUCANKAJMIgFrIQQgACgCSCEFQQAhAwNAIAMgBEYEQCAZKAIMIQwjAEHgAGsiBCQAIwBBEGsiBSQAQQEhAQJ/QQEhA0EBIAxBAEwNABogDEEBa0EDcyIMQX9zQQFxIQEgDEEEcUUhAyAMQQJxRQshDCAFIAM6AA8gBSAMOgAOIAUgAToADSAFLQAOIQEgBS0ADyEDIAUtAA0hDCAEQYCAgPwDNgJAIARBgICA/AM2AjggBEMAAIA/QwAAgL8gDBsiMzgCXCAEQwAAgD9DAACAvyADGyIyOAJYIAQgMzgCVCAEIDI4AlAgBEMAAIA/QwAAgL8gARsiNDgCTCAEIDQ4AkQgBCAzOAIsIAQgMjgCKCAEIDQ4AiQgBCAyOAIUIAQgNDgCECAEIDM4AgwgBCAzIDKUIjU4AjwgBCA0IDKUIjY4AjQgBCAzIDSUIjM4AjAgBCAzOAIgIAQgNTgCHCAEIDY4AhggBCAzIDKUOAJIIAVBEGokACAAKAIMIgFBCGohDCABQQRqIQggACgCECABa0ECdSEJQQAhAwNAIAMgCU8EQCAAKAIkIgFBCGohDCABQQRqIQggACgCKCABa0ECdSEJQQAhAwNAIAMgCU8EQAJAIAAoAkgiBUEIaiEJIAVBBGohByAAKAJMIAVrQQJ1QQNuIgsgACgCAG4hDCAEQSRqIQ5BACEAQQAhAQNAQQAhAyABIAtPDQEDQCADIAxPBEAgASAMaiEBDAIFIAUgAEECdCIIaiIPIA4gA0ECdGoqAgAiMiAPKgIAlDgCACAHIAhqIg8gMiAPKgIAlDgCACAIIAlqIgggMiAIKgIAlDgCACAAQQNqIQAgA0EBaiEDDAELAAsACwALBSABIANBAnQiBWoiByAEKgIYIAcqAgCUOAIAIAUgCGoiByAEKgIcIAcqAgCUOAIAIAUgDGoiBSAEKgIgIAUqAgCUOAIAIANBBGohAwwBCwsgBEHgAGokAAUgASADQQJ0IgVqIgcgBCoCDCAHKgIAlDgCACAFIAhqIgcgBCoCECAHKgIAlDgCACAFIAxqIgUgBCoCFCAFKgIAlDgCACADQQNqIQMMAQsLBSAFIANBAnRqIAEgA2otAACzQwAAAMOSQwAAADyUOAIAIANBAWohAwwBCwsFIAEgEUECdGogBCARai0AALNDAAB/Q5VDAAAAv5JDmpkZPpU4AgAgEUEBaiERDAELCwUgASARQQJ0aiAFIBFqLQAAs0MAAIA9lEMAACDBkjgCACARQQFqIREMAQsLCyACQZABaiQAIA0QywMgIkHgAGokACAZEDogGUEQaiQAC5UBAQN/IAACfyAAKAIEIgIgACgCCEkEQCACIAEqAgA4AgAgAkEEagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0ECdUEBahC2ASAAKAIEIAAoAgBrQQJ1IAAQhwIiAigCCCIEIAEqAgA4AgAgAiAEQQRqNgIIIAAgAhCFAiAAKAIEIAIQgQIgA0EgaiQACzYCBAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBJIQEgBhAlIAYgAxAnIAYQmwEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzwEgBkY6AAAgBigCHCEBA0AgA0EMaxAgIgMgBkcNAAsLIAZBIGokACABC0ABAX9BACEAA38gASACRgR/IAAFIAEoAgAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBBGohAQwBCwsLCwAgACACIAMQmQMLVAECfwJAA0AgAyAERwRAQX8hACABIAJGDQIgASgCACIFIAMoAgAiBkgNAiAFIAZKBEBBAQ8FIANBBGohAyABQQRqIQEMAgsACwsgASACRyEACyAAC0ABAX9BACEAA38gASACRgR/IAAFIAEsAAAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBAWohAQwBCwsLCwAgACACIAMQuAMLXgEDfyABIAQgA2tqIQUCQANAIAMgBEcEQEF/IQAgASACRg0CIAEsAAAiBiADLAAAIgdIDQIgBiAHSgRAQQEPBSADQQFqIQMgAUEBaiEBDAILAAsLIAIgBUchAAsgAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEHEaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEHEaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC1QBAn8gASAAKAJUIgEgAUEAIAJBgAJqIgMQ4AEiBCABayADIAQbIgMgAiACIANLGyICEHEaIAAgASADaiIDNgJUIAAgAzYCCCAAIAEgAmo2AgQgAgsJACAAEIkCEC0LEwAgACAAKAIAQQxrKAIAahCMAgsTACAAIAAoAgBBDGsoAgBqELEBCwoAIABBCGsQjAILCgAgAEEIaxCxAQsaACAAIAEgAikDCEEAIAMgASgCACgCEBEXAAsJACAAEPwBEC0LlAICAX8DfiABKAIYIAEoAixLBEAgASABKAIYNgIsC0J/IQgCQCAEQRhxIgVFIANBAUYgBUEYRnFyDQAgASgCLCIFBEAgBSABQSBqECNrrCEGCwJAAkACQCADDgMCAAEDCyAEQQhxBEAgASgCDCABKAIIa6whBwwCCyABKAIYIAEoAhRrrCEHDAELIAYhBwsgAiAHfCICQgBTIAIgBlVyDQAgBEEIcSEDAkAgAlANACADBEAgASgCDEUNAgsgBEEQcUUNACABKAIYRQ0BCyADBEAgASABKAIIIAEoAgggAqdqIAEoAiwQsgELIARBEHEEQCABIAEoAhQgASgCHBC6AyABIAKnELkDCyACIQgLIAAgCBCSAgv8AQEJfyMAQRBrIgMkAAJ/IAFBf0cEQCAAKAIMIQQgACgCCCEFIAAoAhggACgCHEYEQEF/IAAtADBBEHFFDQIaIAAoAhghBiAAKAIUIQcgACgCLCEIIAAoAhQhCSAAQSBqIgJBABC4ASACIAIQKBAhIAAgAhAjIgogAhAfIApqELoDIAAgBiAHaxC5AyAAIAAoAhQgCCAJa2o2AiwLIAMgACgCGEEBajYCDCAAIANBDGogAEEsahCgASgCADYCLCAALQAwQQhxBEAgACAAQSBqECMiAiACIAQgBWtqIAAoAiwQsgELIAAgAcAQwgMMAQsgARC2AwsgA0EQaiQAC5YBACAAKAIYIAAoAixLBEAgACAAKAIYNgIsCwJAIAAoAgggACgCDE8NACABQX9GBEAgACAAKAIIIAAoAgxBAWsgACgCLBCyASABELYDDwsgAC0AMEEQcUUEQCAAKAIMQQFrLQAAIAFB/wFxRw0BCyAAIAAoAgggACgCDEEBayAAKAIsELIBIAAoAgwgAcA6AAAgAQ8LQX8LZQAgACgCGCAAKAIsSwRAIAAgACgCGDYCLAsCQCAALQAwQQhxRQ0AIAAoAhAgACgCLEkEQCAAIAAoAgggACgCDCAAKAIsELIBCyAAKAIMIAAoAhBPDQAgACgCDCwAABCjAQ8LQX8LBwAgACgCDAsHACAAKAIICxMAIAAgACgCAEEMaygCAGoQjgILCgAgAEEIaxCOAgsTACAAIAAoAgBBDGsoAgBqENgBCwoAIABBCGsQ2AELEwAgACAAKAIAQQxrKAIAahDBAwsTACAAIAAoAgBBDGsoAgBqEI8CCxMAIAAgACgCAEEMaygCAGoQxgMLEwAgACAAKAIAQQxrKAIAahCQAguuAQEEfyMAQRBrIgUkAANAAkAgAiAETA0AIAAoAhgiAyAAKAIcIgZPBEAgACABLAAAEKMBIAAoAgAoAjQRBABBf0YNASAEQQFqIQQgAUEBaiEBBSAFIAYgA2s2AgwgBSACIARrNgIIIAVBDGogBUEIahCRAiEDIAAoAhggASADKAIAIgMQTSAAIAMgACgCGGo2AhggAyAEaiEEIAEgA2ohAQsMAQsLIAVBEGokACAECy8AIAAgACgCACgCJBEAAEF/RgRAQX8PCyAAIAAoAgwiAEEBajYCDCAALAAAEKMBCwQAQX8LvQEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJAIAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIARBDGogBEEIaiAEQQRqEJECEJECIQMgASAAKAIMIAMoAgAiAxBNIAAgACgCDCADajYCDAwBCyAAIAAoAgAoAigRAAAiA0F/Rg0BIAEgA8A6AABBASEDCyABIANqIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsJACAAQn8QkgILCQAgAEJ/EJICCwQAIAALDAAgABCUAhogABAtCwwAIAAoAjwQFRDdAQs7AQF/IAAoAjwjAEEQayIAJAAgASACQf8BcSAAQQhqEBYQ3QEhAiAAKQMIIQEgAEEQaiQAQn8gASACGwspACABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAgASkDCBCVAjkDAAu5FwMSfwF8A34jAEGwBGsiCyQAIAtBADYCLAJAIAG9IhlCAFMEQEEBIRBB+AghFCABmiIBvSEZDAELIARBgBBxBEBBASEQQfsIIRQMAQtB/ghB+QggBEEBcSIQGyEUIBBFIRcLAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBBBA2oiBiAEQf//e3EQRSAAIBQgEBBCIABB5g1ByhUgBUEgcSIDG0G8EEH0FSADGyABIAFiG0EDEEIgAEEgIAIgBiAEQYDAAHMQRSACIAYgAiAGShshDQwBCyALQRBqIRECQAJAAkAgASALQSxqENIDIgEgAaAiAUQAAAAAAAAAAGIEQCALIAsoAiwiBkEBazYCLCAFQSByIhVB4QBHDQEMAwsgBUEgciIVQeEARg0CIAsoAiwhDAwBCyALIAZBHWsiDDYCLCABRAAAAAAAALBBoiEBC0EGIAMgA0EASBshCiALQTBqQaACQQAgDEEAThtqIg4hBwNAIAcgAfwDIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAxBAEwEQCAMIQkgByEGIA4hCAwBCyAOIQggDCEJA0BBHSAJIAlBHU8bIQMCQCAHQQRrIgYgCEkNACADrSEbQgAhGQNAIAYgBjUCACAbhiAZfCIaIBpCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGkKAlOvcA1QNACAIQQRrIgggGT4CAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyALIAsoAiwgA2siCTYCLCAGIQcgCUEASg0ACwsgCUEASARAIApBGWpBCW5BAWohEiAVQeYARiETA0BBCUEAIAlrIgMgA0EJTxshDQJAIAYgCE0EQEEAQQQgCCgCABshBwwBC0GAlOvcAyANdiEWQX8gDXRBf3MhD0EAIQkgCCEHA0AgByAHKAIAIgMgDXYgCWo2AgAgAyAPcSAWbCEJIAdBBGoiByAGSQ0AC0EAQQQgCCgCABshByAJRQ0AIAYgCTYCACAGQQRqIQYLIAsgCygCLCANaiIJNgIsIA4gByAIaiIIIBMbIgMgEkECdGogBiAGIANrQQJ1IBJKGyEGIAlBAEgNAAsLQQAhCQJAIAYgCE0NACAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgCiAJQQAgFUHmAEcbayAVQecARiAKQQBHcWsiAyAGIA5rQQJ1QQlsQQlrSARAIAtBMGpBhGBBpGIgDEEASBtqIANBgMgAaiIMQQltIgNBAnRqIQ1BCiEHIAwgA0EJbGsiA0EHTARAA0AgB0EKbCEHIANBAWoiA0EIRw0ACwsCQCANKAIAIgwgDCAHbiISIAdsayIPRSANQQRqIgMgBkZxDQACQCASQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCANT3INASANQQRrLQAAQQFxRQ0BC0QBAAAAAABAQyEBC0QAAAAAAADgP0QAAAAAAADwP0QAAAAAAAD4PyADIAZGG0QAAAAAAAD4PyAPIAdBAXYiA0YbIAMgD0sbIRgCQCAXDQAgFC0AAEEtRw0AIBiaIRggAZohAQsgDSAMIA9rIgM2AgAgASAYoCABYQ0AIA0gAyAHaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgCCANQQRrIg1LBEAgCEEEayIIQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgDUEEaiIDIAYgAyAGSRshBgsDQCAGIgwgCE0iB0UEQCAGQQRrIgYoAgBFDQELCwJAIBVB5wBHBEAgBEEIcSETDAELIAlBf3NBfyAKQQEgChsiBiAJSiAJQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiEw0AQXchBgJAIAcNACAMQQRrKAIAIg9FDQBBCiEDQQAhBiAPQQpwDQADQCAGIgdBAWohBiAPIANBCmwiA3BFDQALIAdBf3MhBgsgDCAOa0ECdUEJbCEDIAVBX3FBxgBGBEBBACETIAogAyAGakEJayIDQQAgA0EAShsiAyADIApKGyEKDAELQQAhEyAKIAMgCWogBmpBCWsiA0EAIANBAEobIgMgAyAKShshCgtBfyENIApB/f///wdB/v///wcgCiATciIPG0oNASAKIA9BAEdqQQFqIRYCQCAFQV9xIgdBxgBGBEAgCSAWQf////8Hc0oNAyAJQQAgCUEAShshBgwBCyARIAkgCUEfdSIDcyADa60gERCmASIGa0EBTARAA0AgBkEBayIGQTA6AAAgESAGa0ECSA0ACwsgBkECayISIAU6AAAgBkEBa0EtQSsgCUEASBs6AAAgESASayIGIBZB/////wdzSg0CCyAGIBZqIgMgEEH/////B3NKDQEgAEEgIAIgAyAQaiIJIAQQRSAAIBQgEBBCIABBMCACIAkgBEGAgARzEEUCQAJAAkAgB0HGAEYEQCALQRBqQQlyIQUgDiAIIAggDksbIgMhCANAIAg1AgAgBRCmASEGAkAgAyAIRwRAIAYgC0EQak0NAQNAIAZBAWsiBkEwOgAAIAYgC0EQaksNAAsMAQsgBSAGRw0AIAZBAWsiBkEwOgAACyAAIAYgBSAGaxBCIAhBBGoiCCAOTQ0ACyAPBEAgAEHrG0EBEEILIApBAEwgCCAMT3INAQNAIAg1AgAgBRCmASIGIAtBEGpLBEADQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALCyAAIAZBCSAKIApBCU4bEEIgCkEJayEGIAhBBGoiCCAMTw0DIApBCUogBiEKDQALDAILAkAgCkEASA0AIAwgCEEEaiAIIAxJGyEDIAtBEGpBCXIhDCAIIQcDQCAMIAc1AgAgDBCmASIGRgRAIAZBAWsiBkEwOgAACwJAIAcgCEcEQCAGIAtBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALDAELIAAgBkEBEEIgBkEBaiEGIAogE3JFDQAgAEHrG0EBEEILIAAgBiAMIAZrIgUgCiAFIApIGxBCIAogBWshCiAHQQRqIgcgA08NASAKQQBODQALCyAAQTAgCkESakESQQAQRSAAIBIgESASaxBCDAILIAohBgsgAEEwIAZBCWpBCUEAEEULIABBICACIAkgBEGAwABzEEUgAiAJIAIgCUobIQ0MAQsgFCAFQRp0QR91QQlxaiEJAkAgA0ELSw0AQQwgA2shBkQAAAAAAAAwQCEYA0AgGEQAAAAAAAAwQKIhGCAGQQFrIgYNAAsgCS0AAEEtRgRAIBggAZogGKGgmiEBDAELIAEgGKAgGKEhAQsgESALKAIsIgcgB0EfdSIGcyAGa60gERCmASIGRgRAIAZBAWsiBkEwOgAAIAsoAiwhBwsgEEECciEKIAVBIHEhDCAGQQJrIg4gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxRSADQQBMcSEIIAtBEGohBwNAIAciBSAB/AIiBkGA9QBqLQAAIAxyOgAAIAEgBrehRAAAAAAAADBAoiIBRAAAAAAAAAAAYSAIcSAHQQFqIgcgC0EQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hDSADQf3///8HIAogESAOayIIaiIGa0oNACAAQSAgAiAGIANBAmogByALQRBqIgVrIgcgB0ECayADSBsgByADGyIDaiIGIAQQRSAAIAkgChBCIABBMCACIAYgBEGAgARzEEUgACAFIAcQQiAAQTAgAyAHa0EAQQAQRSAAIA4gCBBCIABBICACIAYgBEGAwABzEEUgAiAGIAIgBkobIQ0LIAtBsARqJAAgDQsEAEIAC9YCAQd/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahAKEN0BBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABQQhBACAGIAEoAgQiCEsiCRtqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQChDdAUUNAAsLIAVBf0cNAQsgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCECACDAELIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgB0ECRg0AGiACIAQoAgRrCyADQSBqJAALiQIBA38jAEEQayIAJAACQCAAQQxqIABBCGoQFA0AQYDuASAAKAIMQQJ0QQRqEDQiATYCACABRQ0AIAAoAggQNCIBBEBBgO4BKAIAIgIgACgCDEECdGpBADYCACACIAEQE0UNAQtBgO4BQQA2AgALIABBEGokAEGU4AFBADYCAEGQ4AFBATYCABCQA0GU4AFBsOABKAIANgIAQbDgAUGQ4AE2AgBBtOABQS42AgBBuOABQQA2AgAQnAJBuOABQbDgASgCADYCAEGw4AFBtOABNgIAQdzhAUHk4AE2AgBBtOEBQYCABDYCAEGw4QFB8P4FNgIAQZThAUEqNgIAQbjhAUG43QEoAgA2AgALC8jAASoAQYAIC4QYbG9hZF9zcHoAaW5maW5pdHkARmVicnVhcnkASmFudWFyeQBKdWx5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAACobQAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQBB1DMLoSiWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBgNwAC6IVYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAAywBNAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAC+8/h57GH2P96qjID3e9W/PYivSu1x9T/bbcCn8L7Sv7AQ8PA5lfQ/ZzpRf64e0L+FA7iwlcnzP+kkgqbYMcu/pWSIDBkN8z9Yd8AKT1fGv6COC3siXvI/AIGcxyuqwb8/NBpKSrvxP14OjM52Trq/uuWK8Fgj8T/MHGFaPJexv6cAmUE/lfA/HgzhOPRSor8AAAAAAADwPwAAAAAAAAAArEea/Yxg7j+EWfJdqqWqP6BqAh+zpOw/tC42qlNevD/m/GpXNiDrPwjbIHflJsU/LaqhY9HC6T9wRyINhsLLP+1BeAPmhug/4X6gyIsF0T9iSFP13GfnPwnutlcwBNQ/7zn6/kIu5j80g7hIow7Qv2oL4AtbV9U/I0EK8v7/37/AbgBBsPEAC0EZAAsAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkACgoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBgfIACyEOAAAAAAAAAAAZAAsNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQbvyAAsBDABBx/IACxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQfXyAAsBEABBgfMACxUPAAAABA8AAAAACRAAAAAAABAAABAAQa/zAAsBEgBBu/MACx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQfLzAAsOGgAAABoaGgAAAAAAAAkAQaP0AAsBFABBr/QACxUXAAAAABcAAAAACRQAAAAAABQAABQAQd30AAsBFgBB6fQAC5oOFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAAAAAAA8AAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAAgAAAAAAAAAPDwAAEQAAABFAAAA+P////j///88PAAARgAAAEcAAADcOgAA8DoAAAQAAAAAAAAAhDwAAEgAAABJAAAA/P////z///+EPAAASgAAAEsAAAAMOwAAIDsAAAwAAAAAAAAAHD0AAEwAAABNAAAABAAAAPj///8cPQAATgAAAE8AAAD0////9P///xw9AABQAAAAUQAAADw7AADYPAAA7DwAAAA9AAAUPQAAZDsAAFA7AAAAAAAAbD0AAFIAAABTAAAAOAAAADkAAABUAAAAVQAAADwAAAA9AAAAPgAAAFYAAABAAAAAVwAAAEIAAABYAAAA0G0AANQ7AAAQPwAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAACobQAACDwAAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAAAsbgAAVDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAsbgAAnDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAMAAAAAAAAADw8AABEAAAARQAAAPT////0////PDwAAEYAAABHAAAABAAAAAAAAACEPAAASAAAAEkAAAD8/////P///4Q8AABKAAAASwAAACxuAAA8PQAAAwAAAAIAAAA8PAAAAgAAAIQ8AAACCAAATlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAN4SBJUAAAAA////////////////YEEAABQAAABDLlVURi04AEGwgwELAnRBAEHQgwELSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTACBEAEGkiAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AEGgkAELAjBKAEG0lAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEG0nAELLYDeKACAyE0AAKd2AAA0ngCAEscAgJ/uAAB+FwGAXEABgOlnAQDIkAEAVbgBLgBB8JwBC9ICU3VuAE1vbgBUdWUAV2VkAFRodQBGcmkAU2F0AFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAEphbnVhcnkARmVicnVhcnkATWFyY2gAQXByaWwATWF5AEp1bmUASnVseQBBdWd1c3QAU2VwdGVtYmVyAE9jdG9iZXIATm92ZW1iZXIARGVjZW1iZXIAQU0AUE0AJWEgJWIgJWUgJVQgJVkAJW0vJWQvJXkAJUg6JU06JVMAJUk6JU06JVMgJXAAAAAlbS8lZC8leQAwMTIzNDU2Nzg5ACVhICViICVlICVUICVZACVIOiVNOiVTAAAAAABeW3lZXQBeW25OXQB5ZXMAbm8AQdCfAQsxMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRnhYKy1wUGlJbk4AJUk6JU06JVMgJXAlSDolTQBBkKABC4EBJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAEGgoQELZSUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAAAAAAABaAAB0AAAAdQAAAHYAAAAAAAAAZFoAAHcAAAB4AAAAdgAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAEGQogEL/QMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABABBlKoBC+0CvFkAAIEAAACCAAAAdgAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAAAAAAAAmFoAAIoAAACLAAAAdgAAAIwAAACNAAAAjgAAAI8AAACQAAAAAAAAALxaAACRAAAAkgAAAHYAAACTAAAAlAAAAJUAAACWAAAAlwAAAHQAAAByAAAAdQAAAGUAAAAAAAAAZgAAAGEAAABsAAAAcwAAAGUAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAQYytAQv9J5xWAACYAAAAmQAAAHYAAADQbQAAqFYAAOxqAABOU3QzX18yNmxvY2FsZTVmYWNldEUAAAAAAAAABFcAAJgAAACaAAAAdgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAACxuAAAkVwAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUl3RUUAAACobQAAQFcAAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAAAAAAAAAACIVwAAmAAAAKcAAAB2AAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAACxuAACoVwAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAAAAqG0AANRXAABOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAAAAAAAAHFgAAJgAAACvAAAAdgAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYAAAAsbgAAPFgAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUAAAAAAACQWAAAmAAAALcAAAB2AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAACxuAACwWAAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUAAAAAAARZAACYAAAAvwAAAHYAAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAALG4AACRZAAAAAAAAAgAAAJxWAAACAAAAzFcAAAIAAABOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAAAAAAAAeFkAAJgAAADHAAAAdgAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAAAsbgAAmFkAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFACxuAADcWQAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAAAA0G0AAAxaAACcVgAATlN0M19fMjZsb2NhbGU1X19pbXBFAAAA0G0AADBaAACcVgAATlN0M19fMjdjb2xsYXRlSWNFRQDQbQAAUFoAAJxWAABOU3QzX18yN2NvbGxhdGVJd0VFACxuAACEWgAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUljRUUAAADQbQAApFoAAJxWAABOU3QzX18yOG51bXB1bmN0SWNFRQAAAADQbQAAyFoAAJxWAABOU3QzX18yOG51bXB1bmN0SXdFRQAAAAAAAAAAJFoAAM8AAADQAAAAdgAAANEAAADSAAAA0wAAAAAAAABEWgAA1AAAANUAAAB2AAAA1gAAANcAAADYAAAAAAAAAGBbAACYAAAA2QAAAHYAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAACxuAACAWwAAAAAAAAIAAACcVgAAAgAAAMRbAAAAAAAATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAsbgAA3FsAAAAAAAABAAAA9FsAAAAAAABOU3QzX18yOV9fbnVtX2dldEljRUUAAACobQAA/FsAAE5TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQAAAAAAAAAAWFwAAJgAAADlAAAAdgAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAALG4AAHhcAAAAAAAAAgAAAJxWAAACAAAAvFwAAAAAAABOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFACxuAADUXAAAAAAAAAEAAAD0WwAAAAAAAE5TdDNfXzI5X19udW1fZ2V0SXdFRQAAAAAAAAAgXQAAmAAAAPEAAAB2AAAA8gAAAPMAAAD0AAAA9QAAAPYAAAD3AAAA+AAAAPkAAAAsbgAAQF0AAAAAAAACAAAAnFYAAAIAAACEXQAAAAAAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUALG4AAJxdAAAAAAAAAQAAALRdAAAAAAAATlN0M19fMjlfX251bV9wdXRJY0VFAAAAqG0AALxdAABOU3QzX18yMTRfX251bV9wdXRfYmFzZUUAAAAAAAAAAAxeAACYAAAA+gAAAHYAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAACxuAAAsXgAAAAAAAAIAAACcVgAAAgAAAHBeAAAAAAAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAsbgAAiF4AAAAAAAABAAAAtF0AAAAAAABOU3QzX18yOV9fbnVtX3B1dEl3RUUAAAAAAAAA9F4AAAMBAAAEAQAAdgAAAAUBAAAGAQAABwEAAAgBAAAJAQAACgEAAAsBAAD4////9F4AAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAAsbgAAHF8AAAAAAAADAAAAnFYAAAIAAABkXwAAAgAAAIBfAAAACAAATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUAAAAAqG0AAGxfAABOU3QzX18yOXRpbWVfYmFzZUUAAKhtAACIXwAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFAAAAAAAAAABgAAATAQAAFAEAAHYAAAAVAQAAFgEAABcBAAAYAQAAGQEAABoBAAAbAQAA+P///wBgAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAALG4AAChgAAAAAAAAAwAAAJxWAAACAAAAZF8AAAIAAABwYAAAAAgAAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAAAAAKhtAAB4YAAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFAAAAAAAAALRgAAAjAQAAJAEAAHYAAAAlAQAALG4AANRgAAAAAAAAAgAAAJxWAAACAAAAHGEAAAAIAABOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAACobQAAJGEAAE5TdDNfXzIxMF9fdGltZV9wdXRFAAAAAAAAAABUYQAAJgEAACcBAAB2AAAAKAEAACxuAAB0YQAAAAAAAAIAAACcVgAAAgAAABxhAAAACAAATlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUAAAAAAAAAAPRhAACYAAAAKQEAAHYAAAAqAQAAKwEAACwBAAAtAQAALgEAAC8BAAAwAQAAMQEAADIBAAAsbgAAFGIAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQCobQAAOGIAAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAAAAAAAAAACIYgAAmAAAADMBAAB2AAAANAEAADUBAAA2AQAANwEAADgBAAA5AQAAOgEAADsBAAA8AQAALG4AAKhiAAAAAAAAAgAAAJxWAAACAAAAMGIAAAIAAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUAAAAAAPxiAACYAAAAPQEAAHYAAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAAAsbgAAHGMAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQAAAAAAcGMAAJgAAABHAQAAdgAAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAACxuAACQYwAAAAAAAAIAAACcVgAAAgAAADBiAAACAAAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAAAAAADIYwAAmAAAAFEBAAB2AAAAUgEAAFMBAAAsbgAA6GMAAAAAAAACAAAAnFYAAAIAAAAwZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAAA4ZAAATlN0M19fMjExX19tb25leV9nZXRJY0VFAAAAAAAAAABwZAAAmAAAAFQBAAB2AAAAVQEAAFYBAAAsbgAAkGQAAAAAAAACAAAAnFYAAAIAAADYZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAADgZAAATlN0M19fMjExX19tb25leV9nZXRJd0VFAAAAAAAAAAAYZQAAmAAAAFcBAAB2AAAAWAEAAFkBAAAsbgAAOGUAAAAAAAACAAAAnFYAAAIAAACAZQAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAACIZQAATlN0M19fMjExX19tb25leV9wdXRJY0VFAAAAAAAAAADAZQAAmAAAAFoBAAB2AAAAWwEAAFwBAAAsbgAA4GUAAAAAAAACAAAAnFYAAAIAAAAoZgAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAAAwZgAATlN0M19fMjExX19tb25leV9wdXRJd0VFAAAAAAAAAABsZgAAmAAAAF0BAAB2AAAAXgEAAF8BAABgAQAALG4AAIxmAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSWNFRQAAAACobQAArGYAAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAAAAAADkZgAAmAAAAGEBAAB2AAAAYgEAAGMBAABkAQAALG4AAARnAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSXdFRQAAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEGU1QELnAiAXwAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAAAAAAABwYAAAHAEAAB0BAAAeAQAAHwEAACABAAAhAQAAIgEAAAAAAADsagAAZQEAAGYBAABnAQAAqG0AAPRqAABOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUAAAAAcG8AANBtAAAgawAAnG4AAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAANBtAABQawAAFGsAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAANBtAACAawAAFGsAAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQAAANBtAACwawAAdGsAAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FANBtAADgawAAFGsAAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQAAAADQbQAAFGwAAHRrAABOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAAAAAAAYGwAAGoBAABrAQAAbAEAAG0BAABuAQAA0G0AAGxsAAAUawAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAExsAACcbAAAdgAAAExsAACobAAARG4AAExsAAC0bAAAYgAAAExsAADAbAAAYwAAAExsAADMbAAAaAAAAExsAADYbAAAYQAAAExsAADkbAAAcwAAAExsAADwbAAAdAAAAExsAAD8bAAAaQAAAExsAAAIbQAAagAAAExsAAAUbQAAbAAAAExsAAAgbQAAbQAAAExsAAAsbQAAeAAAAExsAAA4bQAAeQAAAExsAABEbQAAZgAAAExsAABQbQAAZAAAAAAAAABwbQAAagEAAG8BAABsAQAAbQEAAHABAADQbQAAfG0AABRrAABOMTBfX2N4eGFiaXYxMTZfX2VudW1fdHlwZV9pbmZvRQAAAAAAAAAARGsAAGoBAABxAQAAbAEAAG0BAAByAQAAcwEAAHQBAAB1AQAAAAAAAPBtAABqAQAAdgEAAGwBAABtAQAAcgEAAHcBAAB4AQAAeQEAANBtAAD8bQAARGsAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAATG4AAGoBAAB6AQAAbAEAAG0BAAByAQAAewEAAHwBAAB9AQAA0G0AAFhuAABEawAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAACkawAAagEAAH4BAABsAQAAbQEAAH8BAACobQAApG4AAFN0OXR5cGVfaW5mbwBBud0BCwggAAAAAAAABQBBzN0BCwExAEHk3QELDjIAAAAzAAAACHEAAAAEAEH83QELAQEAQYzeAQsF/////woAQdDeAQshwG4AAHB/AQAlbS8lZC8leQAAAAglSDolTTolUwAAAAgFAEH83gELAmgBAEGU3wELCjIAAABpAQAAZH8AQazfAQsBAgBBvN8BCwj//////////wBBgOABCwJwbw==")),ne((await W(Ee)).instance))}();function r9(){function oe(){var ne;if(i.calledRun=!0,!_){if(w=!0,Nx.G(),C?.(i),(ne=i.onRuntimeInitialized)==null||ne.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var Ee=i.postRun.shift();Y.push(Ee)}Z(Y)}}if(0<O)k=r9;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)X();Z($),0<O?k=r9:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),oe()},1)):oe()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();return r9(),w?n=i:n=new Promise((oe,ne)=>{C=oe,E=ne}),n}var Bb=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},lGe=e=>1/(1+Math.exp(-e)),uGe=e=>t=>t*e+.5,fGe=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:Bb(e,t.positions),scales:Bb(e,t.scales,Math.exp),rotations:Bb(e,t.rotations),alphas:Bb(e,t.alphas,lGe),colors:Bb(e,t.colors,uGe(i)),sh:Bb(e,t.sh)}},dGe=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},Wae=async(e,t)=>{var n;let i=await cGe(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=fGe(i,a,t);return dGe(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var hGe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function J_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(J_.prototype=Object.create(Hi.prototype),J_.prototype.constructor=J_);Object.defineProperties(J_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function mGe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;jae(e,n)}}J_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=mGe(this),this._promise)};function jae(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load SPZ",t)}async function AGe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}J_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._spzError)&&jae(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=Wae(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=AGe(this,t)};J_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var dM=J_;function hM(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}hM.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=Ym.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new hM({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(hM.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});hM.BATCH_TABLE_CLASS_NAME="_batchTable";var Th=hM;function Sz(e){e=e??V.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}Sz.fromJson=function(e){return new Sz({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(Sz.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var mM=Sz;function wz(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=e.valueType??Gt.UINT16;this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}wz.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.enum,i=n.values.map(function(o){return mM.fromJson(o)});return new wz({id:t,values:i,valueType:Gt[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(wz.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var AM=wz;function Bz(e){e=e??V.EMPTY_OBJECT;let t=e.classes??{},n=e.enums??{};this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}Bz.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=AM.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Th.fromJson({id:i,class:e.classes[i],enums:t}));return new Bz({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(Bz.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var qu=Bz;function jE(e){e=e??V.EMPTY_OBJECT;let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?qu.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(jE.prototype=Object.create(Hi.prototype),jE.prototype.constructor=jE);Object.defineProperties(jE.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});jE.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=pGe(this),this._promise)};async function pGe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=qu.fromJson(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}jE.prototype.unload=function(){this._schema=void 0};var Db=jE;var sd={};function vb(e){return vm(e.url)}function pM(e){let{byteOffset:t,byteLength:n}=e;if(Ei(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=i.byteOffset??0,n=i.byteLength}return`${t}-${t+n}`}function gGe(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Yae(e,t){return`${vb(e)}-buffer-id-${t}`}function Pb(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return vb(o)}return Yae(n,t)}function ej(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=Pb(a,s,n,i),u=pM(r);return`${c}-range-${u}`}function qae(e,t,n,i){let r=e.bufferViews[0],s=r.buffer,a=e.buffers[s],c=Pb(a,s,n,i),u=pM(r);return`${c}-range-${u}`}function Kae(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let A=i.getDerivedResource({url:s});return vb(A)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=Pb(u,c,n,i),h=pM(a);return`${f}-range-${h}`}function _Ge(e,t){let n=au.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}sd.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${vb(n)}`};sd.getExternalBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e;return`external-buffer:${vb(t)}`};sd.getEmbeddedBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Yae(t,n)}`};sd.getGltfCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t}=e;return`gltf:${vb(t)}`};sd.getBufferViewCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];Ei(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=Pb(a,s,i,o),u=pM(r);return`buffer-view:${c}-range-${u}`};sd.getDracoCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${ej(t,n,i,o)}`};sd.getSpzCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,gltfResource:i,baseResource:o}=e;return`spz:${qae(t,n,i,o)}`};sd.getVertexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,spz:a,attributeSemantic:c,dequantize:u=!1,loadBuffer:f=!1,loadTypedArray:h=!1}=e,A="";if(u&&(A+="-dequantize"),f&&(A+="-buffer",A+=`-context-${o.context.id}`),h&&(A+="-typed-array"),l(s))return`vertex-buffer:${ej(t,s,n,i)}-draco-${c}${A}`;if(a)return`vertex-buffer:${qae(t,a,n,i)}-spz-${c}${A}`;let g=t.bufferViews[r],m=g.buffer,_=t.buffers[m],y=Pb(_,m,n,i),C=pM(g);return`vertex-buffer:${y}-range-${C}${A}`};sd.getIndexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${ej(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,A=t.bufferViews[h],g=A.buffer,m=t.buffers[g],_=Pb(m,g,i,o),y=gGe(f,A);return`index-buffer:${_}-accessor-${y}${u}`};sd.getImageCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Kae(t,n,i,o)}`};sd.getTextureCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=au.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Kae(t,c,i,o),f=_Ge(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var xl=sd;function gM(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}gM.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};gM.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};gM.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};gM.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var _M=gM;function Nn(){}Nn.cacheEntries={};Nn.statistics=new _M;function yGe(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new yGe(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=e??V.EMPTY_OBJECT;let{schema:t,resource:n}=e,i=xl.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new Db({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n,typedArray:i}=e,o=xl.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new FE({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e,n=xl.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new FE({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=xl.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new Tb({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=xl.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Cb({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=xl.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new Eb({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getSpzLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r}=e,s=xl.getSpzCacheKey({gltf:t,primitive:n,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new dM({resourceCache:Nn,gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,asynchronous:h=!0,dequantize:A=!1,loadBuffer:g=!1,loadTypedArray:m=!1}=e,_=xl.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,spz:c,attributeSemantic:u,dequantize:A,loadBuffer:g,loadTypedArray:m}),y=Nn.get(_);return l(y)?y:(y=new wb({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,cacheKey:_,asynchronous:h,dequantize:A,loadBuffer:g,loadTypedArray:m}),Nn.add(y))};Nn.getIndexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=xl.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),A=Nn.get(h);return l(A)?A:(A=new xb({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(A))};Nn.getImageLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=xl.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Ib({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=xl.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new Sb({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[wb,xb,Eb,Sb,Ib,Cb,FE,Db,Tb],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var Fi=Nn;function Ga(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(Ga.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});Ga.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};Ga.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};Ga.prototype.contentIsAvailableAtIndex=function(e,t){return t=t??0,this._contentAvailabilityBitstreams[t].getBit(e)};Ga.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};Ga.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};Ga.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};Ga.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};Ga.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===Is.OCTREE&&(t=3),e>>t};Ga.fromSubtreeJson=async function(e,t,n,i,o){let r=new Ga(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=CGe(n);let a=s.json;r._subtreeJson=a;let c;if(Ei(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let E=a.tileMetadata;c=a.propertyTables[E]}let u=[];if(l(a.contentMetadata)){let E=a.contentMetadata.length;for(let I=0;I<E;I++){let b=a.contentMetadata[I];u.push(a.propertyTables[b])}}let f,h=i.metadataSchema,A=a.subtreeMetadata;if(l(A)){let E=A.class,I=h.classes[E];f=new HR({subtreeMetadata:A,class:I})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],Ei(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let m=EGe(a.buffers),_=IGe(a.bufferViews,m);xGe(a,_),l(c)&&Xae(c,_);for(let E=0;E<u.length;E++){let I=u[E];Xae(I,_)}let y=await bGe(r,m,s.binary),C=SGe(_,y);return wGe(r,a,i,C),l(c)&&(BGe(r,i,C),vGe(r)),DGe(r,i,C),PGe(r),r._ready=!0,r};function CGe(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=dr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function EGe(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function IGe(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function xGe(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Xae(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=r.values??r.bufferView;i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=r.stringOffsets??r.stringOffsetBufferView;l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=r.arrayOffsets??r.arrayOffsetBufferView;l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function bGe(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=TGe(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function TGe(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=Fi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function SGe(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function wGe(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=Ei(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=tj(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let A=0;A<t.contentAvailabilityHeaders.length;A++){let g=tj(t.contentAvailabilityHeaders[A],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=tj(t.childSubtreeAvailability,i,a)}function tj(e,t,n,i){if(l(e.constant))return new _b({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new _b({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function BGe(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new od({class:a,count:o,properties:i.properties,bufferViews:n})}function DGe(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,A=r.classes[h],g=new od({class:A,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Jae(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function vGe(e){let t=Jae(e._tileAvailability);e._tileJumpBuffer=t}function PGe(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Jae(o);t.push(r)}}Ga.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new ce("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};Ga.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new ce("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function RGe(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function MGe(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}Ga.prototype.getTileMetadataView=function(e){let t=RGe(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new yb({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};Ga.prototype.getContentMetadataView=function(e,t){let n=MGe(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new yb({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};Ga.prototype.isDestroyed=function(){return!1};Ga.prototype.destroy=function(){return l(this._bufferLoader)&&Fi.unload(this._bufferLoader),ue(this)};var YE=Ga;var NGe={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},qE=Object.freeze(NGe);var Sh={};Sh.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:Sh.parseBoundingVolumeSemantic("TILE",e),minimumHeight:Sh._parseMinimumHeight("TILE",e),maximumHeight:Sh._parseMaximumHeight("TILE",e)},content:{boundingVolume:Sh.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:Sh._parseMinimumHeight("CONTENT",e),maximumHeight:Sh._parseMaximumHeight("CONTENT",e)}}};Sh.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};Sh._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};Sh._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var KE=Sh;function bl(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(bl.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});bl.fromSubtreeJson=async function(e,t,n,i,o,r){r=r??0;let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await YE.fromSubtreeJson(n,i,s,a,c),f=new bl(e,t,n);return f._implicitSubtree=u,LGe(f,u),f._ready=!0,f};function LGe(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=FGe(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=OGe(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=jGe(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function OGe(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function FGe(e,t,n,i){let s=Zae(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let A=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let _=A+m;if(!t.tileIsAvailableAtIndex(_)){u.push(void 0);continue}let y=t.getParentMortonIndex(m),C=c[y],E=m%f.branchingFactor,I=Zae(e,t,C,E,_);C.children.push(I),a.numberOfTilesTotal++,u.push(I)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function $ae(e,t,n){let i=qE.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Zae(e,t,n,i,o,r){let s=e._implicitTileset,a;r??!1?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let B=KE.parseAllBoundingVolumeSemantics(c);u=B.tile,f=B.content}let A=t.contentPropertyTableJsons.length,g=!1;for(let B=0;B<A;B++)if(t.contentIsAvailableAtCoordinates(a,B)){g=!0;break}let m=UGe(s,a,i,r,n,u),_=[];for(let B=0;B<s.contentCount;B++){if(!t.contentIsAvailableAtIndex(o,B))continue;let M={uri:s.contentUriTemplates[B].getDerivedResource({templateValues:a.getTemplateValues()}).url},L=GGe(m,f);l(L)&&(M.boundingVolume=L),_.push(Tt(M,s.contentHeaders[B]))}let y=$ae(c,s,a),C={boundingVolume:m,geometricError:y,refine:s.refine,contents:_},E=!0,I=ze(s.tileHeader,E);delete I.boundingVolume,delete I.transform,delete I.metadata;let b=Tt(C,I,E),S=oce(e,s.baseResource,b,n);return S.implicitCoordinates=a,S.implicitSubtree=t,S.metadata=c,S.hasImplicitContentMetadata=g,S}function Dz(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(Ei(e,"3DTILES_bounding_volume_S2")||l(e.region))}function ij(e,t){l(t)&&(Ei(e,"3DTILES_bounding_volume_S2")?kGe(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&QGe(e.region,t.minimumHeight,t.maximumHeight))}function QGe(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function kGe(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function UGe(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!Dz(r.boundingVolume,r)&&Dz(e.boundingVolume,r)?s=ece(e,t,n,i??!1,o):s=r.boundingVolume,ij(s,r),s}function GGe(e,t){let n;return l(t)&&(n=t.boundingVolume),Dz(n,t)?ij(n,t):Dz(e,t)&&(n=ze(e,!0),ij(n,t)),n}function ece(e,t,n,i,o){let r=e.boundingVolume;return Ei(r,"3DTILES_bounding_volume_S2")?tce(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:ice(r.region,t.level,t.x,t.y,t.z)}:{box:nce(r.box,t.level,t.x,t.y,t.z)}}function tce(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:Tp.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?pb.encode2D(i,o,r):pb.encode2D(i,r,o),f=Tp.fromFacePositionLevel(c,BigInt(u),i),h,A;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,A=n<4?g:a.maximumHeight}else h=a.minimumHeight,A=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Tp.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:A}}}}var zGe=new d,VGe=new d,nj=new d,HGe=new J;function nce(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,VGe),s=J.unpack(e,3,HGe),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,zGe);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let A=d.fromElements(c,u,f,nj);A=J.multiplyByVector(s,A,nj),A=d.add(A,r,nj);let g=J.clone(s);g=J.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(A,m),J.pack(g,m,3),m}var WGe=new ae;function ice(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,WGe),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=D.negativePiToPi(r.west+n*u),h=D.negativePiToPi(f+u),A=c*r.height,g=D.negativePiToPi(r.south+i*A),m=D.negativePiToPi(g+A),_=s,y=a;if(l(o)){let C=c*(a-s);_+=o*C,y=_+C}return[f,g,h,m,_,y]}function jGe(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=ece(i,o,n,!1,t),s=$ae(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=oce(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function oce(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}bl.prototype.hasProperty=function(e,t){return!1};bl.prototype.getFeature=function(e){};bl.prototype.applyDebugSettings=function(e,t){};bl.prototype.applyStyle=function(e){};bl.prototype.update=function(e,t){};bl.prototype.pick=function(e,t,n){};bl.prototype.isDestroyed=function(){return!1};bl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};bl._deriveBoundingBox=nce;bl._deriveBoundingRegion=ice;bl._deriveBoundingVolumeS2=tce;var Rb=bl;var YGe={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},cu=Object.freeze(YGe);function Mb(e,t){this._distance=t,this._normal=new rce(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(Mb.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});Mb.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new Mb(e.normal,e.distance),t};Mb.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new Mb(e.normal,e.distance)};function rce(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(rce.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var XE=Mb;function Oc(e){e=e??V.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.edgeColor=G.clone(e.edgeColor??G.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new _e,this.planeRemoved=new _e,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?uce:fce,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function uce(e){return e===tn.OUTSIDE}function fce(e){return e===tn.INSIDE}Object.defineProperties(Oc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?uce:fce)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function sce(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}Oc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){sce(n,i)},e.index=t,sce(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};Oc.prototype.get=function(e){return this._planes[e]};function dce(e,t){let n=e.length;for(let i=0;i<n;++i)if(mn.equals(e[i],t))return i;return-1}Oc.prototype.contains=function(e){return dce(this._planes,e)!==-1};Oc.prototype.remove=function(e){let t=this._planes,n=dce(t,e);if(n===-1)return!1;e instanceof XE&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof XE&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};Oc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof XE&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var qGe=new se,KGe=new se;function ace(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=On.octEncodeToCartesian4(a.normal,KGe);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=se.packFloat(a.distance,qGe);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function cce(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function hce(e,t){let n=Yt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var XGe=new U;Oc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=Oc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=hce(o,XGe);s.y*=2,i?(t=new Mt({context:n,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Mt({context:n,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(cce(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(ace(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),cce(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),ace(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var JGe=new N,lce=new mn(d.UNIT_X,0);Oc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=N.multiply(t,o,JGe));let r=tn.INSIDE;!this.unionClippingRegions&&i>0&&(r=tn.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];mn.transform(a,o,lce);let c=e.intersectPlane(lce);if(c===tn.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};Oc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Oc.useFloatTexture=function(e){return e.floatingPointTexture};Oc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=Oc.useFloatTexture(t)?e.length:e.length*2,r=hce(o,n);return r.y*=2,r};Oc.prototype.isDestroyed=function(){return!1};Oc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Fs=Oc;function sj(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Ace(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=nze(e,t,r,n)),e.length>80*n){a=e[0],c=e[1];let f=a,h=c;for(let A=n;A<o;A+=n){let g=e[A],m=e[A+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return CM(r,s,n,a,c,u,0),s}function Ace(e,t,n,i,o){let r;if(o===hze(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=mce(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=mce(s/i|0,e[s],e[s+1],r);return r&&Nb(r,r.next)&&(IM(r),r=r.next),r}function JE(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(Nb(n,n.next)||ns(n.prev,n,n.next)===0)){if(IM(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function CM(e,t,n,i,o,r,s){if(!e)return;!s&&r&&aze(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?$Ge(e,i,o,r):ZGe(e)){t.push(c.i,e.i,u.i),IM(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=eze(JE(e),t),CM(e,t,n,i,o,r,2)):s===2&&tze(e,t,n,i,o,r):CM(JE(e),t,n,i,o,r,1);break}}}function ZGe(e){let t=e.prev,n=e,i=e.next;if(ns(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),A=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=A&&m.y>=h&&m.y<=g&&yM(o,a,r,c,s,u,m.x,m.y)&&ns(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function $Ge(e,t,n,i){let o=e.prev,r=e,s=e.next;if(ns(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,A=s.y,g=Math.min(a,c,u),m=Math.min(f,h,A),_=Math.max(a,c,u),y=Math.max(f,h,A),C=oj(g,m,t,n,i),E=oj(_,y,t,n,i),I=e.prevZ,b=e.nextZ;for(;I&&I.z>=C&&b&&b.z<=E;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&yM(a,f,c,h,u,A,I.x,I.y)&&ns(I.prev,I,I.next)>=0||(I=I.prevZ,b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&yM(a,f,c,h,u,A,b.x,b.y)&&ns(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;I&&I.z>=C;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&yM(a,f,c,h,u,A,I.x,I.y)&&ns(I.prev,I,I.next)>=0)return!1;I=I.prevZ}for(;b&&b.z<=E;){if(b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&yM(a,f,c,h,u,A,b.x,b.y)&&ns(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function eze(e,t){let n=e;do{let i=n.prev,o=n.next.next;!Nb(i,o)&&gce(i,n,n.next,o)&&EM(i,o)&&EM(o,i)&&(t.push(i.i,n.i,o.i),IM(n),IM(n.next),n=e=o),n=n.next}while(n!==e);return JE(n)}function tze(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&uze(s,a)){let c=_ce(s,a);s=JE(s,s.next),c=JE(c,c.next),CM(s,t,n,i,o,r,0),CM(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function nze(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Ace(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(lze(u))}o.sort(ize);for(let r=0;r<o.length;r++)n=oze(o[r],n);return n}function ize(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function oze(e,t){let n=rze(e,t);if(!n)return t;let i=_ce(n,e);return JE(i,i.next),JE(n,n.next)}function rze(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(Nb(e,n))return n;do{if(Nb(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&pce(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);EM(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&sze(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function sze(e,t){return ns(e.prev,e,t.prev)<0&&ns(t.next,e,e.next)<0}function aze(e,t,n,i){let o=e;do o.z===0&&(o.z=oj(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,cze(o)}function cze(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function oj(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function lze(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function pce(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function yM(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&pce(e,t,n,i,o,r,s,a)}function uze(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!fze(e,t)&&(EM(e,t)&&EM(t,e)&&dze(e,t)&&(ns(e.prev,e,t.prev)||ns(e,t.prev,t))||Nb(e,t)&&ns(e.prev,e,e.next)>0&&ns(t.prev,t,t.next)>0)}function ns(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Nb(e,t){return e.x===t.x&&e.y===t.y}function gce(e,t,n,i){let o=Pz(ns(e,t,n)),r=Pz(ns(e,t,i)),s=Pz(ns(n,i,e)),a=Pz(ns(n,i,t));return!!(o!==r&&s!==a||o===0&&vz(e,n,t)||r===0&&vz(e,i,t)||s===0&&vz(n,e,i)||a===0&&vz(n,t,i))}function vz(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function Pz(e){return e>0?1:e<0?-1:0}function fze(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&gce(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function EM(e,t){return ns(e.prev,e,e.next)<0?ns(e,t,e.next)>=0&&ns(e,e.prev,t)>=0:ns(e,t,e.prev)<0||ns(e,e.next,t)<0}function dze(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function _ce(e,t){let n=rj(e.i,e.x,e.y),i=rj(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function mce(e,t,n,i){let o=rj(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function IM(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function rj(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function hze(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var mze=new d,Aze=new d,Z_={};Z_.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};Z_.computeWindingOrder2D=function(e){return Z_.computeArea2D(e)>0?Ls.COUNTER_CLOCKWISE:Ls.CLOCKWISE};Z_.triangulate=function(e,t){let n=U.packArray(e);return sj(n,t,2)};var Ice=new d,xce=new d,bce=new d,yce=new d,Cce=new d,Ece=new d,Rp=new d,Tce=new U,Sce=new U,wce=new U,Lb=new U;Z_.computeSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let I=t[a];if(u[h++]=I.x,u[h++]=I.y,u[h++]=I.z,r){let b=i[a];f[A++]=b.x,f[A++]=b.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=y*y;for(;s.length>0;){let I=s.pop(),b=s.pop(),S=s.pop(),B=d.fromArray(u,S*3,Ice),v=d.fromArray(u,b*3,xce),P=d.fromArray(u,I*3,bce),M,L,p;r&&(M=U.fromArray(f,S*2,Tce),L=U.fromArray(f,b*2,Sce),p=U.fromArray(f,I*2,wce));let x=d.multiplyByScalar(d.normalize(B,yce),_,yce),T=d.multiplyByScalar(d.normalize(v,Cce),_,Cce),w=d.multiplyByScalar(d.normalize(P,Ece),_,Ece),R=d.magnitudeSquared(d.subtract(x,T,Rp)),O=d.magnitudeSquared(d.subtract(T,w,Rp)),k=d.magnitudeSquared(d.subtract(w,x,Rp)),Q=Math.max(R,O,k),z,F,H;Q>C?R===Q?(z=`${Math.min(S,b)} ${Math.max(S,b)}`,a=m[z],l(a)||(F=d.add(B,v,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(M,L,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(S,a,I),s.push(a,b,I)):O===Q?(z=`${Math.min(b,I)} ${Math.max(b,I)}`,a=m[z],l(a)||(F=d.add(v,P,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(L,p,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(b,a,S),s.push(a,I,S)):k===Q&&(z=`${Math.min(I,S)} ${Math.max(I,S)}`,a=m[z],l(a)||(F=d.add(P,B,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(p,M,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(I,a,b),s.push(a,S,b)):(g.push(S),g.push(b),g.push(I))}let E={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(E.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(E)};var pze=new Ae,gze=new Ae,_ze=new Ae,aj=new Ae;Z_.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let S=t[a];if(u[h++]=S.x,u[h++]=S.y,u[h++]=S.z,r){let B=i[a];f[A++]=B.x,f[A++]=B.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=new uc(void 0,void 0,e),E=new uc(void 0,void 0,e),I=new uc(void 0,void 0,e);for(;s.length>0;){let S=s.pop(),B=s.pop(),v=s.pop(),P=d.fromArray(u,v*3,Ice),M=d.fromArray(u,B*3,xce),L=d.fromArray(u,S*3,bce),p,x,T;r&&(p=U.fromArray(f,v*2,Tce),x=U.fromArray(f,B*2,Sce),T=U.fromArray(f,S*2,wce));let w=e.cartesianToCartographic(P,pze),R=e.cartesianToCartographic(M,gze),O=e.cartesianToCartographic(L,_ze);C.setEndPoints(w,R);let k=C.surfaceDistance;E.setEndPoints(R,O);let Q=E.surfaceDistance;I.setEndPoints(O,w);let z=I.surfaceDistance,F=Math.max(k,Q,z),H,W,Z,Y,$;F>y?k===F?(H=`${Math.min(v,B)} ${Math.max(v,B)}`,a=m[H],l(a)||(W=C.interpolateUsingFraction(.5,aj),Z=(w.height+R.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(p,x,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(v,a,S),s.push(a,B,S)):Q===F?(H=`${Math.min(B,S)} ${Math.max(B,S)}`,a=m[H],l(a)||(W=E.interpolateUsingFraction(.5,aj),Z=(R.height+O.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(x,T,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(B,a,v),s.push(a,S,v)):z===F&&(H=`${Math.min(S,v)} ${Math.max(S,v)}`,a=m[H],l(a)||(W=I.interpolateUsingFraction(.5,aj),Z=(O.height+w.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(T,p,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(S,a,B),s.push(a,v,B)):(g.push(v),g.push(B),g.push(S))}let b={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(b.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(b)};Z_.scaleToGeodeticHeight=function(e,t,n,i){n=n??te.default;let o=mze,r=Aze;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var Ii=Z_;function $_(){this._array=[],this._offset=0,this._length=0}Object.defineProperties($_.prototype,{length:{get:function(){return this._length}}});$_.prototype.enqueue=function(e){this._array.push(e),this._length++};$_.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};$_.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};$_.prototype.contains=function(e){return this._array.indexOf(e)!==-1};$_.prototype.clear=function(){this._array.length=this._offset=this._length=0};$_.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var ey=$_;var hr={};hr.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};hr.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};hr.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=hr.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var ZE=new U;function vce(e,t,n,i){return U.subtract(t,e,ZE),U.multiplyByScalar(ZE,n/i,ZE),U.add(e,ZE,ZE),[ZE.x,ZE.y]}var ty=new d;function yze(e,t,n,i){return d.subtract(t,e,ty),d.multiplyByScalar(ty,n/i,ty),d.add(e,ty,ty),[ty.x,ty.y,ty.z]}hr.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(D.log2(o)));return Math.pow(2,r)};var Mz=new Ae,Nz=new Ae,Cze=new Ae,Eze=new d,Rz=new uc;hr.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,Mz),r=e.cartesianToCartographic(n,Nz),a=new uc(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(D.log2(a)));return Math.pow(2,c)};hr.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=hr.subdivideLineCount(n,i,o),a=U.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let A=vce(e,t,h*c,a);u[f++]=A[0],u[f++]=A[1]}return u};hr.subdivideLine=function(e,t,n,i){let o=hr.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=yze(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};hr.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,Mz),c=n.cartesianToCartographic(o,Nz);Rz.setEndPoints(a,c);let u=Rz.surfaceDistance/r,f=Math.max(0,Math.ceil(D.log2(u))),h=Math.pow(2,f),A=U.distance(e,t),g=A/h,m=s;m.length=h*2;let _=0;for(let y=0;y<h;y++){let C=vce(e,t,y*g,A);m[_++]=C[0],m[_++]=C[1]}return m};hr.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,Mz),s=e.cartesianToCartographic(n,Nz),a=new uc(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(D.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,A=o;A.length=f*3;let g=0;for(let m=0;m<f;m++){let _=a.interpolateUsingSurfaceDistance(m*h,Cze),y=e.cartographicToCartesian(_,Eze);A[g++]=y.x,A[g++]=y.y,A[g++]=y.z}return A};var Ize=new d,xze=new d,bze=new d,Tze=new d;hr.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=i??te.default;let r=Ize,s=xze,a=bze,c=Tze;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};hr.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new ey;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=Mo(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],A=h.positions;if(t)for(a=A.length,s=0;s<a;++s)n.scaleToGeodeticSurface(A[s],A[s]);if(A=Mo(A,d.equalsEpsilon,!0),A.length<3)continue;i.push(A);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var Sze=new Ae;function wze(e,t,n){let i=n.cartesianToCartographic(e,Mz),o=n.cartesianToCartographic(t,Nz);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;Rz.setEndPoints(i,o);let r=Rz.findIntersectionWithLatitude(0,Sze);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>D.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function Bze(e,t,n,i){if(i===cn.RHUMB)return wze(e,t,n);let o=hi.lineSegmentPlane(e,t,mn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var Dze=new Ae;function vze(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=D.sign(o.z),a=D.sign(r.z);let f=h=>t.cartesianToCartographic(h,Dze).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=Bze(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function Pce(e,t,n,i,o,r,s){let a=[],c=r,u=h=>A=>A.position===h,f=[];do{let h=n[c];a.push(h);let A=i.findIndex(u(c)),g=i[A];if(!l(g)){++c;continue}let{visited:m,type:_,next:y}=g;if(g.visited=!0,_===0){if(y===0){let b=i[A-(s?1:-1)];if(b?.position===c+1)b.visited=!0;else{++c;continue}}if(!m&&s&&y>0||r===c&&!s&&y<0){++c;continue}}if(!(s?_>=0:_<=0)){++c;continue}m||f.push(c);let E=A+(s?1:-1),I=i[E];if(!l(I)){++c;continue}c=I.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=Pce(e,++t,n,i,0,h,!s);return t}hr.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=vze(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=Pce(i,o,s,a,1,0,c)}return i};hr.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new ey;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,A=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=Mo(h,d.equalsEpsilon,!0)),h.length<3)continue;let _=n(h);if(!l(_))continue;let y=[],C=Ii.computeWindingOrder2D(_);if(C===Ls.CLOCKWISE&&(_.reverse(),h=h.slice().reverse()),u){u=!1;let B=[h];if(B=r(B,B),B.length>1){for(let v of B)c.enqueue(new fc(v,A));continue}}let E=h.slice(),I=l(A)?A.length:0,b=[],S;for(g=0;g<I;g++){let B=A[g],v=B.positions;if(i)for(m=v.length,S=0;S<m;++S)o.scaleToGeodeticSurface(v[S],v[S]);if(t||(v=Mo(v,d.equalsEpsilon,!0)),v.length<3)continue;let P=n(v);if(!l(P))continue;C=Ii.computeWindingOrder2D(P),C===Ls.CLOCKWISE&&(P.reverse(),v=v.slice().reverse()),b.push(v),y.push(E.length),E=E.concat(v),_=_.concat(P);let M=0;for(l(B.holes)&&(M=B.holes.length),S=0;S<M;S++)c.enqueue(B.holes[S])}s.push({outerRing:h,holes:b}),a.push({positions:E,positions2D:_,holes:y})}return{hierarchy:s,polygons:a}};var Pze=new U,Rze=new d,Mze=new Le,Nze=new J;hr.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,Mze),s=J.fromQuaternion(r,Nze),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let A=0;A<h;++A){let g=d.clone(n[A],Rze);J.multiplyByVector(s,g,g);let m=t(g,Pze);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};hr.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=Ii.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,A=new Array(h*3),g=0;for(let y=0;y<h;y++){let C=c[y];A[g++]=C.x,A[g++]=C.y,A[g++]=C.z}let m={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:A})},indices:a,primitiveType:Me.TRIANGLES};u&&(m.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:U.packArray(f)}));let _=new ht(m);return r.normal?Vn.computeNormal(_):_}if(s===cn.GEODESIC)return Ii.computeSubdivision(e,c,a,f,i);if(s===cn.RHUMB)return Ii.computeRhumbLineSubdivision(e,c,a,f,i)};var Bce=[],Dce=[],Lze=new d,Oze=new d;hr.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,A,g,m,_=e.length,y=0,C=0,E=l(t),I=E?t.positions:void 0;if(o)for(a=_*3*2,s=new Array(a*2),E&&(m=_*2*2,g=new Array(m*2)),c=0;c<_;c++)u=e[c],f=e[(c+1)%_],s[y]=s[y+a]=u.x,++y,s[y]=s[y+a]=u.y,++y,s[y]=s[y+a]=u.z,++y,s[y]=s[y+a]=f.x,++y,s[y]=s[y+a]=f.y,++y,s[y]=s[y+a]=f.z,++y,E&&(h=I[c],A=I[(c+1)%_],g[C]=g[C+m]=h.x,++C,g[C]=g[C+m]=h.y,++C,g[C]=g[C+m]=A.x,++C,g[C]=g[C+m]=A.y,++C);else{let P=D.chordLength(i,n.maximumRadius),M=0;if(r===cn.GEODESIC)for(c=0;c<_;c++)M+=hr.subdivideLineCount(e[c],e[(c+1)%_],P);else if(r===cn.RHUMB)for(c=0;c<_;c++)M+=hr.subdivideRhumbLineCount(n,e[c],e[(c+1)%_],P);for(a=(M+_)*3,s=new Array(a*2),E&&(m=(M+_)*2,g=new Array(m*2)),c=0;c<_;c++){u=e[c],f=e[(c+1)%_];let L,p;E&&(h=I[c],A=I[(c+1)%_]),r===cn.GEODESIC?(L=hr.subdivideLine(u,f,P,Dce),E&&(p=hr.subdivideTexcoordLine(h,A,u,f,P,Bce))):r===cn.RHUMB&&(L=hr.subdivideRhumbLine(n,u,f,P,Dce),E&&(p=hr.subdivideTexcoordRhumbLine(h,A,n,u,f,P,Bce)));let x=L.length;for(let T=0;T<x;++T,++y)s[y]=L[T],s[y+a]=L[T];if(s[y]=f.x,s[y+a]=f.x,++y,s[y]=f.y,s[y+a]=f.y,++y,s[y]=f.z,s[y+a]=f.z,++y,E){let T=p.length;for(let w=0;w<T;++w,++C)g[C]=p[w],g[C+m]=p[w];g[C]=A.x,g[C+m]=A.x,++C,g[C]=A.y,g[C+m]=A.y,++C}}}_=s.length;let b=Oe.createTypedArray(_/3,_-e.length*6),S=0;for(_/=6,c=0;c<_;c++){let P=c,M=P+1,L=P+_,p=L+1;u=d.fromArray(s,P*3,Lze),f=d.fromArray(s,M*3,Oze),!d.equalsEpsilon(u,f,D.EPSILON10,D.EPSILON10)&&(b[S++]=P,b[S++]=L,b[S++]=M,b[S++]=M,b[S++]=L,b[S++]=p)}let B={attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),indices:b,primitiveType:Me.TRIANGLES};return E&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),new ht(B)};var $n=hr;function is(e,t){this.position=e,l(this.position)||(this.position=new U),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=is.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(is.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=U.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(D.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=D.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=D.TWO_PI),e}}});var Ob=new Ae,Fze=new d;is.prototype.getLatitude=function(e){l(e)||(e=te.default),Ob.latitude=this.conformalLatitude,Ob.longitude=this.longitude,Ob.height=0;let t=this.ellipsoid.cartographicToCartesian(Ob,Fze);return e.cartesianToCartographic(t,Ob),Ob.latitude};var Qze=new In,kze=new d,Uze=new d;is.fromCartesian=function(e,t){let n=D.signNotZero(e.z),i=is.NORTH_POLE_TANGENT_PLANE,o=is.SOUTH_POLE;n<0&&(i=is.SOUTH_POLE_TANGENT_PLANE,o=is.NORTH_POLE);let r=Qze;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,kze),d.normalize(r.direction,r.direction);let s=hi.rayPlane(r,i.plane,Uze),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new U(c,u),t.tangentPlane=i,t):new is(new U(c,u),i)};is.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=is.fromCartesian(e[i],t[i]);return t};is.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new is(e.position,e.tangentPlane)};is.HALF_UNIT_SPHERE=Object.freeze(new te(.5,.5,.5));is.NORTH_POLE=Object.freeze(new d(0,0,.5));is.SOUTH_POLE=Object.freeze(new d(0,0,-.5));is.NORTH_POLE_TANGENT_PLANE=Object.freeze(new ys(is.NORTH_POLE,is.HALF_UNIT_SPHERE));is.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new ys(is.SOUTH_POLE,is.HALF_UNIT_SPHERE));var Fc=is;var Gze=new Ae,Rce=new Ae;function zze(e,t,n,i){let r=i.cartesianToCartographic(e,Gze).height,s=i.cartesianToCartographic(t,Rce);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,Rce);a.height=r-100,i.cartographicToCartesian(a,n)}var Mce=new Ye,Vze=new d,Hze=new d,Wze=new d,jze=new d,Yze=new d,qze=new d,Lz=new d,Jm=new d,Fb=new d,Kze=new U,Xze=new U,Jze=new d,Nce=new Le,Zze=new J,$ze=new J;function cj(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,A=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,_=e.perPositionHeight,y=Kze;y.x=f.x,y.y=f.y;let C=t.st?new Float32Array(2*(s/3)):void 0,E;t.normal&&(_&&c&&!a?E=n.attributes.normal.values:E=new Float32Array(s));let I=t.tangent?new Float32Array(s):void 0,b=t.bitangent?new Float32Array(s):void 0,S=i?new Float32Array(s):void 0,B=0,v=0,P=Hze,M=Wze,L=jze,p=!0,x=Zze,T=$ze;if(m!==0){let O=Le.fromAxisAngle(h,m,Nce);x=J.fromQuaternion(O,x),O=Le.fromAxisAngle(h,-m,Nce),T=J.fromQuaternion(O,T)}else x=J.clone(J.IDENTITY,x),T=J.clone(J.IDENTITY,T);let w=0,R=0;c&&u&&(w=s/2,R=s/3,s/=2);for(let O=0;O<s;O+=3){let k=d.fromArray(o,O,Jze);if(t.st&&!l(r)){let Q=J.multiplyByVector(x,k,Vze);Q=g.scaleToGeodeticSurface(Q,Q);let z=A([Q],Xze)[0];U.subtract(z,y,z);let F=D.clamp(z.x/f.width,0,1),H=D.clamp(z.y/f.height,0,1);u&&(C[B+R]=F,C[B+1+R]=H),c&&(C[B]=F,C[B+1]=H),B+=2}if(t.normal||t.tangent||t.bitangent||i){let Q=v+1,z=v+2;if(a){if(O+3<s){let F=d.fromArray(o,O+3,Yze);if(p){let H=d.fromArray(o,O+s,qze);_&&zze(k,F,H,g),d.subtract(F,k,F),d.subtract(H,k,H),P=d.normalize(d.cross(H,F,P),P),p=!1}d.equalsEpsilon(F,k,D.EPSILON10)&&(p=!0)}(t.tangent||t.bitangent)&&(L=g.geodeticSurfaceNormal(k,L),t.tangent&&(M=d.normalize(d.cross(L,P,M),M)))}else P=g.geodeticSurfaceNormal(k,P),(t.tangent||t.bitangent)&&(_&&(Lz=d.fromArray(E,v,Lz),Jm=d.cross(d.UNIT_Z,Lz,Jm),Jm=d.normalize(J.multiplyByVector(T,Jm,Jm),Jm),t.bitangent&&(Fb=d.normalize(d.cross(Lz,Jm,Fb),Fb))),M=d.cross(d.UNIT_Z,P,M),M=d.normalize(J.multiplyByVector(T,M,M),M),t.bitangent&&(L=d.normalize(d.cross(P,M,L),L)));t.normal&&(e.wall?(E[v+w]=P.x,E[Q+w]=P.y,E[z+w]=P.z):u&&(E[v+w]=-P.x,E[Q+w]=-P.y,E[z+w]=-P.z),(c&&!_||a)&&(E[v]=P.x,E[Q]=P.y,E[z]=P.z)),i&&(a&&(P=g.geodeticSurfaceNormal(k,P)),S[v+w]=-P.x,S[Q+w]=-P.y,S[z+w]=-P.z),t.tangent&&(e.wall?(I[v+w]=M.x,I[Q+w]=M.y,I[z+w]=M.z):u&&(I[v+w]=-M.x,I[Q+w]=-M.y,I[z+w]=-M.z),c&&(_?(I[v]=Jm.x,I[Q]=Jm.y,I[z]=Jm.z):(I[v]=M.x,I[Q]=M.y,I[z]=M.z))),t.bitangent&&(u&&(b[v+w]=L.x,b[Q+w]=L.y,b[z+w]=L.z),c&&(_?(b[v]=Fb.x,b[Q]=Fb.y,b[z]=Fb.z):(b[v]=L.x,b[Q]=L.y,b[z]=L.z))),v+=3}}t.st&&!l(r)&&(n.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C})),t.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:b})),i&&(n.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:S}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===hn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let A=e.offsetAttribute===hn.NONE?0:1;h=h.fill(A)}n.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var Lce=[];function eVe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let E=$n.createGeometryFromPositions(e,t,n,i,r,c,u),I=E.attributes.position.values,b=E.indices,S,B;if(s&&a){let v=I.concat(I);S=v.length/3,B=Oe.createTypedArray(S,b.length*2),B.set(b);let P=b.length,M=S/2;for(h=0;h<P;h+=3){let L=B[h]+M,p=B[h+1]+M,x=B[h+2]+M;B[h+P]=x,B[h+1+P]=p,B[h+2+P]=L}if(E.attributes.position.values=v,r&&c.normal){let L=E.attributes.normal.values;E.attributes.normal.values=new Float32Array(v.length),E.attributes.normal.values.set(L)}if(c.st&&l(n)){let L=E.attributes.st.values;E.attributes.st.values=new Float32Array(S*2),E.attributes.st.values=L.concat(L)}E.indices=B}else if(a){for(S=I.length/3,B=Oe.createTypedArray(S,b.length),h=0;h<b.length;h+=3)B[h]=b[h+2],B[h+1]=b[h+1],B[h+2]=b[h];E.indices=B}f.topAndBottom=new Pt({geometry:E})}let A=o.outerRing,g=ys.fromPoints(A,e),m=g.projectPointsOntoPlane(A,Lce),_=Ii.computeWindingOrder2D(m);_===Ls.CLOCKWISE&&(A=A.slice().reverse());let y=$n.computeWallGeometry(A,n,e,i,r,u);f.walls.push(new Pt({geometry:y}));let C=o.holes;for(h=0;h<C.length;h++){let E=C[h];m=g.projectPointsOntoPlane(E,Lce),_=Ii.computeWindingOrder2D(m),_===Ls.COUNTER_CLOCKWISE&&(E=E.slice().reverse()),y=$n.computeWallGeometry(E,n,e,i,r,u),f.walls.push(new Pt({geometry:y}))}return f}function cd(e){let t=e.polygonHierarchy,n=e.vertexFormat??Pe.DEFAULT,i=e.ellipsoid??te.default,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.stRotation??0,s=e.textureCoordinates,a=e.perPositionHeight??!1,c=a&&l(e.extrudedHeight),u=e.height??0,f=e.extrudedHeight??u;if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Pe.clone(n),this._ellipsoid=te.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=e.closeTop??!0,this._closeBottom=e.closeBottom??!0,this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=e.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=e.arcType??cn.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+Pe.packedLength+(s?$n.computeHierarchyPackedLength(s,U):1)+12}cd.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new cd(t)};cd.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=e._offsetAttribute??-1,t[n++]=e._arcType,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var tVe=te.clone(te.UNIT_SPHERE),nVe=new Pe,iVe={polygonHierarchy:{}};cd.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,tVe);t+=te.packedLength;let r=Pe.unpack(e,t,nVe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,A=e[t++]===1,g=e[t++]===1,m=e[t++]===1,_=e[t++],y=e[t++],C=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,U);l(C)?(t=C.startingIndex,delete C.startingIndex):t++;let E=e[t++];return l(n)||(n=new cd(iVe)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=A,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=_===-1?void 0:_,n._arcType=y,n._textureCoordinates=C,n.packedLength=E,n};var oVe=new U,rVe=new U,sVe=new Fc;function Oce(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+D.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==cn.RHUMB){let A=U.subtract(t.position,e.position,oVe),g=U.dot(t.position,A)/U.dot(A,A);if(g>0&&g<1){let m=U.add(t.position,U.multiplyByScalar(A,-g,A),rVe),_=Fc.clone(t,sVe);_.position=m;let y=_.getLatitude(n);r.south=Math.min(r.south,y),r.north=Math.max(r.north,y),Math.abs(c)>Math.abs(y)&&(u=y)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=U.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var Fce=new Fc,aVe=new Fc,ad={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};cd.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,ad.northAngle=0,ad.southAngle=0,ad.westOverIdl=Number.POSITIVE_INFINITY,ad.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=Fc.fromCartesian(e[0],aVe);for(let s=1;s<o;s++){let a=Fc.fromCartesian(e[s],Fce);Oce(a,r,t,n,ad,i),r=Fc.clone(a,r)}return Oce(Fc.fromCartesian(e[0],Fce),r,t,n,ad,i),i.east-i.west>ad.eastOverIdl-ad.westOverIdl&&(i.west=ad.westOverIdl,i.east=ad.eastOverIdl,i.east>D.PI&&(i.east=i.east-D.TWO_PI),i.west>D.PI&&(i.west=i.west-D.TWO_PI)),D.equalsEpsilon(Math.abs(ad.northAngle),D.TWO_PI,D.EPSILON10)&&(i.north=D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),D.equalsEpsilon(Math.abs(ad.southAngle),D.TWO_PI,D.EPSILON10)&&(i.south=-D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),i};var cVe=new Fc;function lVe(e,t,n){return e.height>=D.PI||e.width>=D.PI?Fc.fromCartesian(t[0],cVe).tangentPlane:ys.fromPoints(t,n)}var Qce=new Ae;function uVe(e,t,n){return(i,o)=>{if(e.height>=D.PI||e.width>=D.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],Qce);o[s]=new U(a.longitude/D.PI,a.latitude/D.PI_OVER_TWO)}return o.length=i.length,o}return Fc.fromCartesianArray(i,o)}return ys.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function fVe(e,t,n){if(e.height>=D.PI||e.width>=D.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,Qce);return l(r)||(r=new U),r.x=s.longitude/D.PI,r.y=s.latitude/D.PI_OVER_TWO,r}return Fc.fromCartesian(o,r)};let i=ys.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function dVe(e,t,n,i){return(o,r)=>!i&&(e.height>=D.PI_OVER_TWO||e.width>=2*D.PI_OVER_THREE)?$n.splitPolygonsOnEquator(o,t,n,r):o}function hVe(e,t,n,i){if(t.height>=D.PI||t.width>=D.PI)return Ye.fromRectangle(t,void 0,Mce);let o=e,r=ys.fromPoints(o,n);return $n.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,Mce)}cd.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),A=r.positions;if(A.length<3)return;let g=e.rectangle,m=$n.polygonsFromHierarchy(r,h,uVe(g,A,n),!s,n,dVe(g,n,u,s)),_=m.hierarchy,y=m.polygons,C=function(w){return w},E=h?$n.polygonsFromHierarchy(f,!0,C,!1,n).polygons:void 0;if(_.length===0)return;let I=_[0].outerRing,b=hVe(I,g,n,o),S=[],B=e._height,v=e._extrudedHeight,P=e._perPositionHeightExtrude||!D.equalsEpsilon(B,v,0,D.EPSILON2),M={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:lVe(g,I,n).plane.normal,projectTo2d:fVe(g,I,n),boundingRectangle:b,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},L;if(P)for(M.extrude=!0,M.top=a,M.bottom=c,M.shadowVolume=e._shadowVolume,M.offsetAttribute=e._offsetAttribute,L=0;L<y.length;L++){let w=eVe(n,y[L],h?E[L]:void 0,i,_[L],s,a,c,t,u),R;a&&c?(R=w.topAndBottom,M.geometry=$n.scaleToGeodeticHeightExtruded(R.geometry,B,v,n,s)):a?(R=w.topAndBottom,R.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(R.geometry.attributes.position.values,B,n,!s),M.geometry=R.geometry):c&&(R=w.topAndBottom,R.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(R.geometry.attributes.position.values,v,n,!0),M.geometry=R.geometry),(a||c)&&(M.wall=!1,R.geometry=cj(M),S.push(R));let O=w.walls;M.wall=!0;for(let k=0;k<O.length;k++){let Q=O[k];M.geometry=$n.scaleToGeodeticHeightExtruded(Q.geometry,B,v,n,s),Q.geometry=cj(M),S.push(Q)}}else for(L=0;L<y.length;L++){let w=new Pt({geometry:$n.createGeometryFromPositions(n,y[L],h?E[L]:void 0,i,s,t,u)});if(w.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(w.geometry.attributes.position.values,B,n,!s),M.geometry=w.geometry,w.geometry=cj(M),l(e._offsetAttribute)){let R=w.geometry.attributes.position.values.length,O=e._offsetAttribute===hn.NONE?0:1,k=new Uint8Array(R/3).fill(O);w.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}S.push(w)}let p=Vn.combineInstances(S)[0];p.attributes.position.values=new Float64Array(p.attributes.position.values),p.indices=Oe.createTypedArray(p.attributes.position.values.length/3,p.indices);let x=p.attributes,T=le.fromVertices(x.position.values);return t.position||delete x.position,new ht({attributes:x,indices:p.indices,primitiveType:p.primitiveType,boundingSphere:T,offsetAttribute:e._offsetAttribute})};cd.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new cd({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function mVe(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ht._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(cd.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=cd.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=mVe(this)),this._textureCoordinateRotationPoints}}});var Mp=cd;function $E(e){this._ellipsoid=e.ellipsoid??te.default,this._positions=[...e.positions]}Object.defineProperties($E.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});$E.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new $E({positions:e.positions,ellipsoid:e.ellipsoid})};$E.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};$E.prototype.computeRectangle=function(e){return Mp.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var AVe=new ae,kce=new d;$E.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(AVe),n=Ae.toCartesian(ae.southwest(t),this.ellipsoid,kce),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=Ae.toCartesian(ae.northeast(t),this.ellipsoid,kce),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var Qb=$E;function Uce(e){e=e??V.EMPTY_OBJECT,this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=e.persists??!1,this.pass=Be.COMPUTE,this.owner=e.owner}Uce.prototype.execute=function(e){e.execute(this)};var Tl=Uce;var xM=`in vec2 v_textureCoordinates; + +uniform int u_polygonsLength; +uniform int u_extentsLength; +uniform highp sampler2D u_polygonTexture; +uniform highp sampler2D u_extentsTexture; + +int getPolygonIndex(float dimension, vec2 coord) { + vec2 uv = coord.xy * dimension; + return int(floor(uv.y) * dimension + floor(uv.x)); +} + +vec2 getLookupUv(ivec2 dimensions, int i) { + int pixY = i / dimensions.x; + int pixX = i - (pixY * dimensions.x); + float pixelWidth = 1.0 / float(dimensions.x); + float pixelHeight = 1.0 / float(dimensions.y); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 getExtents(int i) { + return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i)); +} + +ivec2 getPositionsLengthAndExtentsIndex(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + vec4 value = texture(u_polygonTexture, uv); + return ivec2(int(value.x), int(value.y)); +} + +vec2 getPolygonPosition(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + return texture(u_polygonTexture, uv).xy; +} + +vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) { + float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y); + float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x); + return vec2(latitude, longitude); +} + +void main() { + int lastPolygonIndex = 0; + out_FragColor = vec4(1.0); + + // Get the relevant region of the texture + float dimension = float(u_extentsLength); + if (u_extentsLength > 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function xs(e){e=e??V.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new _e,this.polygonRemoved=new _e,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(xs.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});xs.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};xs.prototype.get=function(e){return this._polygons[e]};xs.prototype.contains=function(e){return this._polygons.some(t=>Qb.equals(t,e))};xs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>Qb.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var pVe=new ae;function gVe(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let A=0;A<t.length;++A){let g=t[A];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[A];h.push(...m),m.reduce((_,y)=>ae.union(e[y].computeSphericalExtents(pVe),_,_),a),t[A]=void 0,n[A]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),A=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}xs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function _Ve(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=gVe(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let A=u.positions[h],g=Math.hypot(A.x,A.y),m=D.fastApproximateAtan2(g,A.z),_=D.fastApproximateAtan2(A.x,A.y);t[s++]=m,t[s++]=_}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var lj=new U;xs.prototype.update=function(e){let t=e.context;if(!xs.isSupported(e))throw new ce("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=xs.getTextureResolution(i,this.pixelsNeededForPolygonPositions,lj);i=new Mt({context:t,width:s.x,height:s.y,pixelFormat:$e.RG,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=xs.getTextureResolution(o,this.pixelsNeededForExtents,lj);o=new Mt({context:t,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(_Ve(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=xs.getClippingDistanceTextureResolution(this,lj);r=new Mt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?$e.RED:$e.LUMINANCE,pixelDatatype:Ve.FLOAT,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=yVe(this)};xs.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function yVe(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Tl({fragmentShaderSource:xM,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var Gce=new ae,CVe=new ae;xs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=tn.OUTSIDE;this.inverse&&(o=tn.INSIDE);for(let r=0;r<i;++r){let a=n[r].computeRectangle(),c=e.rectangle;if(!l(c)&&l(e.boundingVolume?.computeCorners)){let f=e.boundingVolume.computeCorners();c=ae.fromCartesianArray(f,t,Gce)}l(c)||(c=ae.fromBoundingSphere(e.boundingSphere,t,Gce));let u=ae.simpleIntersection(c,a,CVe);l(u)&&(o=tn.INTERSECTING)}return o};xs.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};xs.isSupported=function(e){return e?.context.webgl2};xs.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=Yt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};xs.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(Yt.maximumTextureSize,4096),t.y=Math.min(Yt.maximumTextureSize,4096),t)};xs.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):xs.getTextureResolution(n,e.pixelsNeededForExtents,t)};xs.prototype.isDestroyed=function(){return!1};xs.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var wh=xs;var bM={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};bM.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?bM.SUNLIGHT:bM.SCENE_LIGHT:bM.NONE};var Np=Object.freeze(bM);function zce(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=Np.NONE}zce.requiresColorCorrect=function(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))};var e0=zce;var Bh=`uniform vec3 u_radiiAndDynamicAtmosphereColor; + +uniform float u_atmosphereLightIntensity; +uniform float u_atmosphereRayleighScaleHeight; +uniform float u_atmosphereMieScaleHeight; +uniform float u_atmosphereMieAnisotropy; +uniform vec3 u_atmosphereRayleighCoefficient; +uniform vec3 u_atmosphereMieCoefficient; + +const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. +const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. +const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + +/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + * @glslFunction + */ +void computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var TM=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var SM=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var wM=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var BM=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function Ai(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??V.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(Yt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new K;let n=Math.pow(2,t-1);this._textureDimensions=new U(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??Ai.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(Ai.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});Ai._maximumComputeCommandCount=8;Ai._activeComputeCommandCount=0;Ai._nextFrameCommandQueue=[];Ai._queueCommand=(e,t)=>{if(Ai._activeComputeCommandCount>=Ai._maximumComputeCommandCount){Ai._nextFrameCommandQueue.push(e);return}t.commandList.push(e),Ai._activeComputeCommandCount++};Ai._updateCommandQueue=e=>{if(Ai._maximumComputeCommandCount=Math.log2(Yt.maximumCubeMapSize),Ai._nextFrameCommandQueue.length>0&&Ai._activeComputeCommandCount<Ai._maximumComputeCommandCount){let t=Ai._nextFrameCommandQueue.shift();for(;l(t)&&Ai._activeComputeCommandCount<Ai._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=Ai._nextFrameCommandQueue.shift();continue}e.commandList.push(t),Ai._activeComputeCommandCount++,t=Ai._nextFrameCommandQueue.shift()}l(t)&&Ai._nextFrameCommandQueue.push(t)}};Ai.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Ai.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var EVe=new d,IVe=new d;function xVe(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,IVe),s=1.025,a=EVe,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Vce=new d,bVe=new N,TVe=new se,SVe=new G;function wVe(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new kr({context:n,width:i.x,height:i.y,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new He({sources:[Bh,SM]}),e._radianceMapFS=o),e0.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=kt.eastNorthUpToFixedFrame(r,a,bVe),u=TVe;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of kr.faceNames()){let A=e._radianceMapTextures[f];l(A)&&!A.isDestroyed()&&A.destroy(),A=new Mt({context:n,width:i.x,height:i.y,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA}),e._radianceMapTextures[f]=A;let g=f,m=new Tl({fragmentShaderSource:o,outputTexture:A,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>kr.getDirection(h,Vce),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,SVe)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){Ai._activeComputeCommandCount--;return}let _=e._radianceMapComputeCommands;_[g]=void 0;let y=new $r({context:n,colorTextures:[e._radianceMapTextures[g]]});y._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),y._unBind(),y.destroy(),Ai._activeComputeCommandCount--,_.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,Ai._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function BVe(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,A,g,m,_)=>()=>{if(e.isDestroyed()||h.canceled){Ai._activeComputeCommandCount--;return}let y=e._convolutionComputeCommands;y[A]=void 0,n.copyFace(t,g,m,_),c++,Ai._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[A]=void 0;let C=e._specularMapTextures.length;c>=C&&(e._irradianceCommandDirty=!0,n.sampler=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let A of kr.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Mt({context:a,width:r,height:s,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA}),m=e._va;l(m)||(m=kr.createVertexArray(a,A),e._va=m);let _=e._convolveSP;l(_)||(_=an.fromCache({context:a,vertexShaderSource:BM,fragmentShaderSource:wM,attributeLocations:{positions:0}}),e._convolveSP=_);let y=new Tl({shaderProgram:_,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>kr.getDirection(A,Vce)}});y.postExecute=u(y,f,g,A,h),e._convolutionComputeCommands[f]=y,Ai._queueCommand(y,t),++f}r/=2,s/=2}}var Hce=new U(3,3);function DVe(e,t){let n=t.context,i=Hce,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Mt({context:n,width:i.x,height:i.y,pixelDatatype:Ve.FLOAT,pixelFormat:$e.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new He({sources:[TM]}),e._irradianceMapFS=r);let s=new Tl({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){Ai._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,Ai._activeComputeCommandCount--},e._irradianceComputeCommand=s,Ai._queueCommand(s,t),e._irradianceTextureDirty=!0}function vVe(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new $r({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Hce,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}Ai.prototype.update=function(e){let t=e.mode;if(!Ai.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ie.MORPHING){this._shouldRegenerateShaders=!1;return}Ai._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=xVe(this,e)||i===Np.SUNLIGHT&&!K.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=K.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(wVe(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(BVe(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(DVe(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){vVe(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};Ai.prototype.isDestroyed=function(){return!1};Ai.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};Ai.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};Ai.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(G.fromCssColorString("#717145"));Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var Lp=Ai;var DM={HIGHLIGHT:0,REPLACE:1,MIX:2};DM.getColorBlend=function(e,t){if(e===DM.HIGHLIGHT)return 0;if(e===DM.REPLACE)return 1;if(e===DM.MIX)return D.clamp(t,D.EPSILON4,1)};var Qc=Object.freeze(DM);var PVe={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},kc=Object.freeze(PVe);var RVe={STEP:0,LINEAR:1,CUBICSPLINE:2},Dh=Object.freeze(RVe);var Wce={};function vM(e){this._count=e.count,this._properties=ze(e.properties,!0)}vM.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,Wce)};vM.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,Wce,e)};vM.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return ze(n[e],!0)};vM.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=ze(n,!0)};var Op=vM;function Uc(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(Uc.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});Uc.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};Uc.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};Uc.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};Uc.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var uj=[];Uc.prototype.getPropertyIds=function(e,t){if(t=l(t)?t:[],t.length=0,l(this._metadataTable)){let n=this._metadataTable.getPropertyIds(uj);si(t,n)}if(l(this._batchTableHierarchy)){let n=this._batchTableHierarchy.getPropertyIds(e,uj);si(t,n)}if(l(this._jsonMetadataTable)){let n=this._jsonMetadataTable.getPropertyIds(uj);si(t,n)}return t};Uc.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};Uc.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new Op({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};Uc.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};Uc.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};Uc.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};Uc.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};Uc.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Uc.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Uc.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var Sl=Uc;function PM(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=au.createModelTextureReader({textureInfo:r,channels:LVe(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=a??n.offset,c=c??n.scale,a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(PM.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});PM.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(yt(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(yt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==pt.SCALAR?(yt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==Gt.UINT8?(yt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:pt.isVectorType(t)||t===pt.SCALAR?n!==Gt.UINT8?(yt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(yt(`Property texture property ${e.id} has an unsupported type`),!1)};var MVe=[void 0,"float","vec2","vec3","vec4"],NVe=[void 0,"int","ivec2","ivec3","ivec4"];PM.prototype.getGlslType=function(){let e=this._classProperty,t=pt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?MVe[t]:NVe[t]};PM.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function LVe(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var RM=PM;function fj(e){e=e??V.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new RM({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(fj.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});fj.prototype.getProperty=function(e){return this._properties[e]};var Fp=fj;function jce(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(jce.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var MM=jce;function dj(e){e=e??V.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new MM({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(dj.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});dj.prototype.getProperty=function(e){return this._properties[e]};var t0=dj;function NM(e){e=e??V.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(NM.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});NM.prototype.getPropertyTable=function(e){return this._propertyTables[e]};NM.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};NM.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var Aa=NM;function OVe(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new od({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new Sl({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new Fp({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new t0({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new Aa({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var LM=OVe;function FVe(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new od({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new Sl({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new Fp({id:a,propertyTexture:QVe(c),class:n.classes[c.class],textures:e.textures}))}return new Aa({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function QVe(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:kVe(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=Tt(o.texture,r,!0)}return t}function kVe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var OM=FVe;function ny(e){e=e??V.EMPTY_OBJECT;let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(ny.prototype=Object.create(Hi.prototype),ny.prototype.constructor=ny);Object.defineProperties(ny.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function UVe(e){try{let t=WVe(e),n=XVe(e),i=JVe(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=dt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load structural metadata",t)}}ny.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=UVe(this),this._promise)};function GVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function zVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function VVe(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];GVe(o.properties,n)}return n}function HVe(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&zVe(r,n)}}return n}async function WVe(e){let t;l(e._extension)?t=VVe(e._extension):t=HVe(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=Fi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function jVe(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&YVe(r,t)}return t}function YVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function qVe(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&KVe(r,t)}}return t}function KVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function XVe(e){let t;l(e._extension)?t=jVe(e._extension):t=qVe(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=Fi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function JVe(e){let t=e._extension??e._extensionLegacy,n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=Fi.getSchemaLoader({resource:i})}else n=Fi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}ny.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=LM({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=OM({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),Yce(this),this._state=dt.READY,!0};function Yce(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)Fi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function ZVe(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)Fi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}ny.prototype.unload=function(){Yce(this),ZVe(this),l(this._schemaLoader)&&Fi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var FM=ny;var kb={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};kb.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return kb.TRANSLATION;case"ROTATION":return kb.ROTATION;case"SCALE":return kb.SCALE;case"_FEATURE_ID":return kb.FEATURE_ID}};var bs=Object.freeze(kb);var $Ve=65534,e8e=255;function Oz(e){e=e??V.EMPTY_OBJECT;let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Xce(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],t8e(this)}Object.defineProperties(Oz.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function t8e(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,A=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),_=qce(i,c,u,f,A,g,m);for(;l(_);){let y=s[_];if(!l(y)){y=r+o.length;let C=_;for(;C>=r;)C=o[C-r];o.push(C),s[_]=y}y>$Ve&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):y>e8e&&t instanceof Uint8Array&&(t=new Uint16Array(t)),_===c?(c=y,t[a]=y):_===u?(u=y,t[a+1]=y):(f=y,t[a+2]=y),_=qce(i,c,u,f,A,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function qce(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=hj(e,t,a,c,u);if(f===0)return t;let h=0,A=o?1:0,g=r?1:0,m=hj(e,n,h,A,g);if(m===0)return n;let _=s?1:0,y=0,C=r?1:0,E=hj(e,i,_,y,C);if(E===0)return i;let I=f&m&E,b,S,B;if(I&1)b=0,S=1,B=2;else if(I&2)b=0,B=1,S=2;else if(I&4)S=0,b=1,B=2;else if(I&8)S=0,B=1,b=2;else if(I&16)B=0,b=1,S=2;else if(I&32)B=0,S=1,b=2;else{let L=mj(f),p=mj(m),x=mj(E);return L<p&&L<x?t:p<x?n:i}let v=t*3;e[v+b]=a,e[v+S]=c,e[v+B]=u;let P=n*3;e[P+b]=h,e[P+S]=A,e[P+B]=g;let M=i*3;e[M+b]=_,e[M+S]=y,e[M+B]=C}function hj(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function mj(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}Oz.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};Oz.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,Yt.maximumTextureSize),i=n,o=Kce(i),r=[];for(;i>1;)i>>=1,r.push(Kce(i));let s=new Mt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:$e.LUMINANCE,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR_MIPMAP_LINEAR,magnificationFilter:mi.LINEAR})});return t.outlineTexture=s,s};function Kce(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Xce(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Xce.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var n0=Oz;function Jce(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function n8e(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function Fz(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0,this.needsGaussianSplats=!1}Fz.prototype.postProcess=function(e){this.needsOutlines&&(i8e(this),s8e(this,e)),this.needsGaussianSplats&&r8e(this,e)};function i8e(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new n0({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Oe.fromTypedArray(n.typedArray);let r=o8e(o.outlineCoordinates),s=new Jce(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function o8e(e){let t=new xn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=q.FLOAT,t.type=zt.VEC3,t.normalized=!1,t.count=e.length/3,t}function r8e(e,t){let n=e.attributePlans,i=n.length;for(let o=0;o<i;o++){let r=n[o];r.loadBuffer=!1,r.loadTypedArray=!0}}function s8e(e,t){a8e(e.attributePlans,t),l(e.indicesPlan)&&c8e(e.indicesPlan,t)}function a8e(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Ct.createVertexBuffer({typedArray:s,context:t,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function c8e(e,t){let n=e.indices;if(e.loadBuffer){let i=Ct.createIndexBuffer({typedArray:n.typedArray,context:t,usage:Qe.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}Fz.AttributeLoadPlan=Jce;Fz.IndicesLoadPlan=n8e;var i0=Fz;function l8e(e){e=e??V.EMPTY_OBJECT,this.webp=e.webp??!1,this.basis=e.basis??!1}var QM=l8e;function Zce(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Zce.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var kM=Zce;function $ce(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties($ce.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var UM=$ce;function ele(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(ele.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var GM=ele;var u8e={Direct:"Direct",Indirect:"Indirect"},iy=Object.freeze(u8e);function tle(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(tle.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var Ub=tle;function nle(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(nle.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var zM=nle;function Gb(){}function ile(e){return new J(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function f8e(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new kM({position:t,adjustmentParams:n})}function d8e(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=ile(e.covarianceMatrix);return new UM({position:t,adjustmentParams:n,covarianceMatrix:i})}function h8e(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new zM({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new GM({groupFlags:t,rotationThetas:n,params:i})}Gb.load=function(e){let t=e.storageType;if(t===iy.Direct)return Gb.loadDirect(e);if(t===iy.Indirect)return Gb.loadIndirect(e);throw new ce(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};Gb.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=f8e(r);t.push(s)}let i=ile(e.covarianceDirectUpperTriangle);return new Ub({storageType:iy.Direct,anchorPointsDirect:t,covarianceDirect:i})};Gb.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=d8e(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=h8e(s);o.push(a)}return new Ub({storageType:iy.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var VM=Gb;function ole(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(ole.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var HM=ole;function rle(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(rle.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var WM=rle;function sle(e){this._ppeTextures=e}Object.defineProperties(sle.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var jM=sle;function Hr(e){e=e??V.EMPTY_OBJECT;let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=e.asynchronous??!0;this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Hr.prototype=Object.create(Hi.prototype),Hr.prototype.constructor=Hr);Object.defineProperties(Hr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});Hr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=dt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=dt.FAILED,this.getError("Failed to load GPM data",e)}};Hr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=this._loadResources(this),this._promise)};function m8e(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}Hr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=m8e(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=Fi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};Hr.ppeTexturesMetadataSchemaCache=new Map;Hr._createPpeTextureClassJson=function(e,t){let n=e.traits,i=n.source,o=e.offset??0,r=(e.scale??1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};Hr._obtainPpeTexturesMetadataSchema=function(e){let n=Hr._collectPpeTexturePropertyIdentifiers(e).toString(),i=Hr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${Hr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=Hr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=qu.fromJson(r),Hr.ppeTexturesMetadataSchemaCache.set(n,i),i};Hr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=Hr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};Hr._convertToStructuralMetadata=function(e,t){let n=[],i=Hr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],A={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new Fp({id:s,name:a.name,propertyTexture:A,class:h,textures:t}))}return new Aa({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};Hr.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,A=new WM({min:h.min,max:h.max,source:h.source}),g=new HM({traits:A,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new jM(r);this._meshPrimitiveGpmLocal=a;let c=Hr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=dt.READY,!0};Hr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)Fi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};Hr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var YM=Hr;var{Attribute:A8e,Indices:p8e,FeatureIdAttribute:ale,FeatureIdTexture:cle,FeatureIdImplicitRange:lle,MorphTarget:g8e,Primitive:_8e,Instances:y8e,Skin:C8e,Node:E8e,AnimatedPropertyType:I8e,AnimationSampler:x8e,AnimationTarget:b8e,AnimationChannel:T8e,Animation:S8e,ArticulationStage:w8e,Articulation:B8e,Asset:D8e,Scene:v8e,Components:P8e,MetallicRoughness:R8e,SpecularGlossiness:M8e,Specular:N8e,Anisotropy:Aj,Clearcoat:pj,Material:L8e}=xn,Yo={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function vh(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=fo.Y,forwardAxis:a=fo.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:A=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:_=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=_,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Yo.NOT_LOADED,this._textureState=Yo.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(vh.prototype=Object.create(Hi.prototype),vh.prototype.constructor=vh);Object.defineProperties(vh.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function O8e(e){e._state=Yo.LOADING,e._textureState=Yo.LOADING;try{let t=Fi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Yo.LOADED,e._textureState=Yo.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Yo.FAILED,e._textureState=Yo.FAILED,Qz(e,t)}}async function F8e(e,t){Wt.supportsWebP.initialized||await Wt.supportsWebP.initialize(),e._supportedImageFormats=new QM({webp:Wt.supportsWebP(),basis:t.context.supportsBasis});let n=G4e(e,t);return e._state=Yo.PROCESSING,e._textureState=Yo.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(Fi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}vh.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=O8e(this),this._promise)};function Qz(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function Q8e(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&yt("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Yo.POST_PROCESSING)}function k8e(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),(o.needsOutlines||o.needsGaussianSplats)&&U8e(e,o)}}function U8e(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}vh.prototype._process=function(e){return this._state===Yo.READY?!0:(this._state===Yo.PROCESSING&&Q8e(this,e),this._resourcesLoaded&&this._state===Yo.POST_PROCESSING&&(k8e(this,e.context),this._state=Yo.PROCESSED),this._resourcesLoaded&&this._state===Yo.PROCESSED?(_le(this),this._typedArray=void 0,this._state=Yo.READY,!0):!1)};vh.prototype._processTextures=function(e){if(this._textureState===Yo.READY)return!0;if(this._textureState!==Yo.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Yo.READY,this._texturesLoaded=!0,!0):!1};vh.prototype.process=function(e){if(this._state===Yo.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=F8e(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Yo.FAILED;let o=this._processError;this._processError=void 0,Qz(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Yo.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Yo.FAILED,Qz(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Yo.FAILED,Qz(this,o)}return this._incrementallyLoadTextures?n:n&&i};function G8e(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,h=u.accessors[t].bufferView;return Fi.getVertexBufferLoader({gltf:u,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function z8e(e,t,n,i,o,r,s){return Fi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function V8e(e,t){let n=Fi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function ule(e,t,n){let i=t.byteOffset,o=su(e,t),r=t.count,s=Yu(t.type),a=t.componentType,c=q.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),q.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=q.createTypedArray(a,f),A=new DataView(n.buffer),g=new Array(s),m=Pp(t.componentType);i=n.byteOffset+i;for(let _=0;_<r;++_){m(A,i,s,c,g);for(let y=0;y<s;++y)h[_*s+y]=g[y];i+=o}return h}function H8e(e,t){let n=e.type;if(n===zt.SCALAR)return t.fill(0);let i=zt.getMathType(n);return t.fill(i.clone(i.ZERO))}function W8e(e,t,n,i){let o=e.type,r=e.count;if(o===zt.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===zt.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=zt.getMathType(o),a=zt.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function j8e(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=ule(r,n,t.typedArray);i=i??!1,W8e(n,s,o,i)}function kz(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=V8e(e,o),s=j8e(e,r,t,n,i);return e._loaderPromises.push(s),i}return H8e(t,i)}function Ku(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function Y8e(e){return e===Number?0:new e}function q8e(e){switch(e){case q.BYTE:return 127;case q.UNSIGNED_BYTE:return 255;case q.SHORT:return 32767;case q.UNSIGNED_SHORT:return 65535;default:return 1}}var K8e={VEC2:new U(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new se(-1,-1,-1,-1)};function X8e(e,t){let n=q8e(e.componentDatatype),i=K8e[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function J8e(e,t,n){let i=e.decodeMatrix,o=Ku(n,e.decodedMin),r=Ku(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new xn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new U(i[6],i[7]),s.quantizedVolumeStepSize=new U(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new se(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new se(i[0],i[6],i[12],i[18])),t.quantization=s}function Z8e(e,t,n,i,o){let r=e.accessors[t],s=zt.getMathType(r.type),a=r.normalized??!1,c=new A8e;c.name=n,c.semantic=i,c.setIndex=o,c.constant=Y8e(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=Ku(s,r.min),c.max=Ku(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=su(e,r),Ei(r,"WEB3D_quantized_attributes")&&J8e(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===at.POSITION||c.semantic===at.NORMAL||c.semantic===at.TANGENT||c.semantic===at.TEXCOORD||c.semantic===at.FEATURE_ID||c.semantic===at.SCALE||c.semantic===at.ROTATION;return e.extensionsRequired?.includes("KHR_mesh_quantization")&&a&&u&&X8e(c,s),c}function fle(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var $8e={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function gj(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=$8e;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function e4e(e){let t=e===at.POSITION,n=e===at.FEATURE_ID,i=e===at.TEXCOORD;return t||n||i}function t4e(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=q.createArrayBufferView(o,t.typedArray.buffer)}}function n4e(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,n&&(e.buffer=t.buffer),i&&l(t.typedArray)&&(e.typedArray=q.createArrayBufferView(e.componentDatatype,t.typedArray.buffer)),e.semantic===at.POSITION){let o=s=>{let a=1/0,c=-1/0,u=1/0,f=-1/0,h=1/0,A=-1/0;for(let g=0;g<s.length;g+=3){let m=s[g],_=s[g+1],y=s[g+2];a=Math.min(a,m),c=Math.max(c,m),u=Math.min(u,_),f=Math.max(f,_),h=Math.min(h,y),A=Math.max(A,y)}return[new d(a,u,h),new d(c,f,A)]},r=e.typedArray;[e.min,e.max]=o(r)}}function i4e(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=ule(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function dle(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,f=u.accessors[t],h=f.bufferView,A=n.gltfSemantic,g=n.renamedSemantic,m=n.modelSemantic,_=l(m)?fle(g):void 0,C=Z8e(u,t,A,m,_);if(!l(o)&&!l(h)&&!l(r))return C;let E=G8e(e,t,A,i,o,r,s,a,c),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();return e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[A])?t4e(C,E,s,a):l(r)?n4e(C,E,s,a):i4e(u,f,C,E,s,a)},C}function hle(e,t,n,i,o,r,s,a,c){let u=n.modelSemantic,f=u===at.POSITION,h=u===at.FEATURE_ID,A=f&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=f&&e._enablePick&&!c.context.webgl2,m=e._loadForClassification&&h,_=e._loadAttributesAsTypedArray,y=!_,C=_||A||g||m,b=dle(e,t,n,i,o,r,a?!1:y,a?!0:C,c),S=new i0.AttributeLoadPlan(b);return S.loadBuffer=y,S.loadTypedArray=C,S}function o4e(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=gj(e,bs,i),u=c.modelSemantic,f=u===bs.TRANSLATION||u===bs.ROTATION||u===bs.SCALE,h=u===bs.TRANSLATION,A=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!A,_=e._loadAttributesFor2D&&!o.scene3DOnly;return dle(e,t,c,void 0,void 0,void 0,m,A||h&&(!a||_||g),o)}function r4e(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new p8e;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,A=e._loadForClassification&&o,m=!f,_=f||h||A,E=z8e(e,t,n,i,r?!1:m,r?!0:_,s),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{u.indexDatatype=E.indexDatatype,u.buffer=E.buffer,u.typedArray=E.typedArray};let S=new i0.IndicesLoadPlan(u);return S.loadBuffer=m,S.loadTypedArray=_,S}function wl(e,t,n,i){let o=e.gltfJson,r=au.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Fi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=au.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Yo.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function s4e(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new M8e;return l(i)&&(c.diffuseTexture=wl(e,i,n)),l(o)&&(c.specularGlossinessTexture=wl(e,o,n)),c.diffuseFactor=Ku(se,r),c.specularFactor=Ku(d,s),c.glossinessFactor=a,c}function a4e(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new R8e;return l(i)&&(c.baseColorTexture=wl(e,i,n)),l(o)&&(c.metallicRoughnessTexture=wl(e,o,n)),c.baseColorFactor=Ku(se,r),c.metallicFactor=s,c.roughnessFactor=a,c}function c4e(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new N8e;return l(o)&&(a.specularTexture=wl(e,o,n)),l(s)&&(a.specularColorTexture=wl(e,s,n)),a.specularFactor=i,a.specularColorFactor=Ku(d,r),a}function l4e(e,t,n){let{anisotropyStrength:i=Aj.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=Aj.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new Aj;return l(r)&&(s.anisotropyTexture=wl(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function u4e(e,t,n){let{clearcoatFactor:i=pj.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=pj.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new pj;return l(o)&&(c.clearcoatTexture=wl(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=wl(e,s,n)),l(a)&&(c.clearcoatNormalTexture=wl(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function f4e(e,t,n){let i=new L8e,o=t.extensions??V.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=s4e(e,r,n):(l(u)&&(i.metallicRoughness=a4e(e,u,n)),l(s)&&!i.unlit&&(i.specular=c4e(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=l4e(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=u4e(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=wl(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=wl(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=wl(e,t.occlusionTexture,n)),i.emissiveFactor=Ku(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function mle(e,t){let n=new ale;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Ale(e,t,n,i){let o=new ale,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=fle(r.attribute),o.positionalLabel=i,o}function ple(e,t){let n=new lle;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function gle(e,t,n,i){let o=new lle,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function d4e(e,t,n,i){let o=new cle;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=wl(e,r,n,on.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function h4e(e,t,n,i,o,r){let s=new cle,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=wl(e,c,i,on.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function m4e(e,t,n,i,o){let r=new g8e,s=void 0,a=void 0,c=void 0,u=!1;for(let f in t){if(!t.hasOwnProperty(f))continue;let h=t[f],A=gj(e,at,f),g=hle(e,h,A,s,a,c,u,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function A4e(e,t,n,i){let o=new _8e,r=new i0(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=f4e(e,e.gltfJson.materials[s],i));let a=t.extensions??V.EMPTY_OBJECT,c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=p4e(e,u,r));let f=a.KHR_spz_gaussian_splats_compression;l(f)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,A=a.KHR_draco_mesh_compression,g=!1,m=t.attributes;if(l(m))for(let B in m){if(!m.hasOwnProperty(B))continue;let v=m[B],P=gj(e,at,B),M=P.modelSemantic;if(h&&!e4e(M))continue;M===at.FEATURE_ID&&(g=!0);let L=hle(e,v,P,t,A,f,n,c,i);r.attributePlans.push(L),o.attributes.push(L.attribute)}let _=t.targets;if(l(_)&&!h)for(let B=0;B<_.length;++B)o.morphTargets.push(m4e(e,_[B],c,r,i));let y=t.indices;if(l(y)){let B=r4e(e,y,t,A,g,c,i);l(B)&&(r.indicesPlan=B,o.indices=B.indices)}let C=a.EXT_structural_metadata,E=a.EXT_mesh_features,I=a.EXT_feature_metadata,b=l(I);l(E)?g4e(e,o,E,i):b&&_4e(e,o,I,i),l(C)?y4e(o,C):b&&C4e(e,o,I);let S=t.mode;if(h&&S!==Me.TRIANGLES)throw new ce("Only triangle meshes can be used for classification.");return o.primitiveType=S,o}function p4e(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return kz(e,i,!1)}function g4e(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=d4e(e,s,i,a):l(s.attribute)?c=mle(s,a):c=ple(s,a),t.featureIds.push(c)}}function _4e(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Ale(u,h,A,g):m=gle(u,h,A,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m=h4e(e,u,h,i,A,g);t.featureIds.push(m)}}function y4e(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function C4e(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function E4e(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new y8e,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(o4e(e,f,r,u,n))}let s=i.extensions??V.EMPTY_OBJECT,a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?I4e(o,a):l(c)&&x4e(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function I4e(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=mle(o,r):s=ple(o,r),e.featureIds.push(s)}}function x4e(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,A;l(a.featureIds.attribute)?A=Ale(a,u,f,h):A=gle(a,u,f,h),t.featureIds.push(A)}}function b4e(e,t,n){let i=new E8e;i.name=t.name,i.matrix=Ku(N,t.matrix),i.translation=Ku(d,t.translation),i.rotation=Ku(Le,t.rotation),i.scale=Ku(d,t.scale);let o=t.extensions??V.EMPTY_OBJECT,r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new ce("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=E4e(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let A=0;A<u.length;++A)i.primitives.push(A4e(e,u[A],l(i.instances),n));let f=t.weights??c.weights,h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function T4e(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=b4e(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function S4e(e,t,n){let i=new C8e,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=kz(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(N.IDENTITY);return i}function w4e(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=S4e(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function B4e(e,t,n,i){let o=new FM({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function D4e(e,t,n,i){let o=new YM({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function v4e(e,t){let n=new x8e,i=e.gltfJson.accessors,o=i[t.input];n.input=kz(e,o);let r=t.interpolation;n.interpolation=Dh[r]??Dh.LINEAR;let s=i[t.output];return n.output=kz(e,s,!0),n}function P4e(e,t){let n=new b8e,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=I8e[o],n}function R4e(e,t,n){let i=new T8e,o=e.sampler;return i.sampler=t[o],i.target=P4e(e.target,n),i}function M4e(e,t,n){let i=new S8e;i.name=t.name;let o=t.samplers.map(function(s,a){let c=v4e(e,s);return c.index=a,c}),r=t.channels.map(function(s){return R4e(s,o,n)});return i.samplers=o,i.channels=r,i}function N4e(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=M4e(e,o,t);return s.index=r,s})}function L4e(e){let t=new w8e;t.name=e.name;let n=e.type.toUpperCase();return t.type=kc[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function O4e(e){let t=new B8e;return t.name=e.name,t.stages=e.stages.map(L4e),t}function F4e(e){let n=(e.extensions??V.EMPTY_OBJECT).AGI_articulations?.articulations;return l(n)?n.map(O4e):[]}function Q4e(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=t??e.nodes,t=l(t)?t:[],t}function k4e(e,t){let n=new v8e,i=Q4e(e);return n.nodes=i.map(function(o){return t[o]}),n}var U4e=new d;function G4e(e,t){let n=e.gltfJson,i=n.extensions??V.EMPTY_OBJECT,o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let E=r.featureTables,I=r.featureTextures,b=l(E)?E:[],S=l(I)?I:[];e._sortedPropertyTableIds=Object.keys(b).sort(),e._sortedFeatureTextureIds=Object.keys(S).sort()}let a=T4e(e,t),c=w4e(e,a),u=N4e(e,a),f=F4e(n),h=k4e(n,a),A=new P8e,g=new D8e,m=n.asset.copyright;if(l(m)){let E=m.split(";").map(function(I){return new Bt(I.trim())});g.credits=E}if(A.asset=g,A.scene=h,A.nodes=a,A.skins=c,A.animations=u,A.articulations=f,A.upAxis=e._upAxis,A.forwardAxis=e._forwardAxis,l(s)){let E=d.fromArray(s.center,0,U4e);A.transform=N.fromTranslation(E,A.transform)}if(e._components=A,l(o)||l(r)){let E=B4e(e,o,r,t);e._loaderPromises.push(E)}let _=i.NGA_gpm_local;if(l(_)){let E=VM.load(_);e._components.extensions.NGA_gpm_local=E}let y=n.meshes;if(l(y))for(let E of y){let I=E.primitives;if(l(I))for(let b of I){let S=b.extensions;if(l(S)){let B=S.NGA_gpm_local;if(l(B)){let v=D4e(e,n,B,t);e._loaderPromises.push(v)}}}}let C=[];return si(C,e._loaderPromises),e._incrementallyLoadTextures||si(C,e._texturesPromises),Promise.all(C)}function z4e(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._textureLoaders.length=0}function _le(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._bufferViewLoaders.length=0}function V4e(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._geometryLoaders.length=0}function H4e(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function W4e(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function j4e(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}vh.prototype.isUnloaded=function(){return this._state===Yo.UNLOADED};vh.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&Fi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,z4e(this),_le(this),V4e(this),H4e(this),W4e(this),j4e(this),this._components=void 0,this._typedArray=void 0,this._state=Yo.UNLOADED};var Xu=vh;function zb(e){e=e??V.EMPTY_OBJECT;let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new me("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new me("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new $r({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new $r({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}zb.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};zb.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};zb.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};zb.prototype.isDestroyed=function(){return!1};zb.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var qM=zb;var lu={RGBA4:ee.RGBA4,RGBA8:ee.RGBA8,RGBA16F:ee.RGBA16F,RGBA32F:ee.RGBA32F,RGB5_A1:ee.RGB5_A1,RGB565:ee.RGB565,DEPTH_COMPONENT16:ee.DEPTH_COMPONENT16,STENCIL_INDEX8:ee.STENCIL_INDEX8,DEPTH_STENCIL:ee.DEPTH_STENCIL,DEPTH24_STENCIL8:ee.DEPTH24_STENCIL8,validate:function(e){return e===lu.RGBA4||e===lu.RGBA8||e===lu.RGBA16F||e===lu.RGBA32F||e===lu.RGB5_A1||e===lu.RGB565||e===lu.DEPTH_COMPONENT16||e===lu.STENCIL_INDEX8||e===lu.DEPTH_STENCIL||e===lu.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ee.FLOAT?lu.RGBA32F:e===ee.HALF_FLOAT_OES?lu.RGBA16F:lu.RGBA8}},Bl=Object.freeze(lu);function KM(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=Yt.maximumRenderbufferSize,o=e.format??Bl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(KM.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});KM.prototype._getRenderbuffer=function(){return this._renderbuffer};KM.prototype.isDestroyed=function(){return!1};KM.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var Ju=KM;function qs(e){e=e??V.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(qs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});qs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};qs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??Ve.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??$e.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Mt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:on.NEAREST}),this._numSamples>1){let a=Bl.getColorFormat(o);this._colorRenderbuffers[s]=new Ju({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Mt({context:e,width:t,height:n,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Mt({context:e,width:t,height:n,pixelFormat:$e.DEPTH_COMPONENT,pixelDatatype:Ve.UNSIGNED_INT,sampler:on.NEAREST}):this._depthRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new qM({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new $r({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};qs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};qs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};qs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};qs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};qs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};qs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};qs.prototype.getDepthTexture=function(){return this._depthTexture};qs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};qs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};qs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};qs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};qs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};qs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};qs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};qs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};qs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var Di=qs;var XM=`uniform sampler2D u_pointCloud_colorGBuffer; +uniform sampler2D u_pointCloud_depthGBuffer; +uniform vec2 u_distanceAndEdlStrength; +in vec2 v_textureCoordinates; + +vec2 neighborContribution(float log2Depth, vec2 offset) +{ + float dist = u_distanceAndEdlStrength.x; + vec2 texCoordOrig = v_textureCoordinates + offset * dist; + vec2 texCoord0 = v_textureCoordinates + offset * floor(dist); + vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist); + + float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0)); + float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1)); + + // ignore depth values that are the clear depth + if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) { + return vec2(0.0); + } + + // interpolate the two adjacent depth values + float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix); + return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0); +} + +void main() +{ + float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates)); + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth); + eyeCoordinate /= eyeCoordinate.w; + + float log2Depth = log2(-eyeCoordinate.z); + + if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer + { + discard; + } + + vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates); + + // sample from neighbors left, right, down, up + vec2 texelSize = 1.0 / czm_viewport.zw; + + vec2 responseAndCount = vec2(0.0); + + responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y)); + + float response = responseAndCount.x / responseAndCount.y; + float strength = u_distanceAndEdlStrength.y; + float shade = exp(-response * 300.0 * strength); + color.rgb *= shade; + out_FragColor = vec4(color); + + // Input and output depth are the same. + gl_FragDepth = depthOrLogDepth; +} +`;function Vb(){this._framebuffer=new Di({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(Vb.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function Y4e(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var _j=new U;function q4e(e,t){let n=new He({defines:["LOG_DEPTH_WRITE"],sources:[XM]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return _j.x=e._radius,_j.y=e._strength,_j}},o=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:Be.CESIUM_3D_TILE,owner:e}),e._clearCommand=new Ci({framebuffer:e.framebuffer,color:new G(0,0,0,0),depth:1,renderState:Ue.fromCache(),pass:Be.CESIUM_3D_TILE,owner:e})}function K4e(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),q4e(e,t)}function yle(e){return e.drawBuffers&&e.fragmentDepth}Vb.isSupported=yle;function X4e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=He.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main() +{ + czm_point_cloud_post_process_main(); +#ifdef LOG_DEPTH + czm_writeLogDepth(); + out_FragData_1 = czm_packDepth(gl_FragDepth); +#else + out_FragData_1 = czm_packDepth(gl_FragCoord.z); +#endif +}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}Vb.prototype.update=function(e,t,n,i){if(!yle(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,K4e(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Me.POINTS||u.pass===Be.TRANSLUCENT)continue;let f,h,A=u.derivedCommands.pointCloudProcessor;l(A)&&(f=A.command,h=A.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=nt.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=X4e(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(A)||(A={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=A),A.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};Vb.prototype.isDestroyed=function(){return!1};Vb.prototype.destroy=function(){return Y4e(this),ue(this)};var Qp=Vb;function Cle(e){let t=e??{};this.attenuation=t.attenuation??!1,this.geometricErrorScale=t.geometricErrorScale??1,this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=t.eyeDomeLighting??!0,this.eyeDomeLightingStrength=t.eyeDomeLightingStrength??1,this.eyeDomeLightingRadius=t.eyeDomeLightingRadius??1,this.backFaceCulling=t.backFaceCulling??!1,this.normalShading=t.normalShading??!0}Cle.isSupported=function(e){return Qp.isSupported(e.context)};var Zm=Cle;var mc={},J4e=new se(0,0,0,1),Gc=new se,Z4e=new Ye,yj=new U,Cj=new U;mc.worldToWindowCoordinates=function(e,t,n){return mc.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var Ele=new se,Ile=new d;function JM(e,t,n,i){let o=n.viewMatrix,r=N.multiplyByVector(o,se.fromElements(e.x,e.y,e.z,1,Ele),Ele),s=d.multiplyComponents(t,d.normalize(r,Ile),Ile);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,N.multiplyByVector(n.frustum.projectionMatrix,r,i)}var $4e=new Ae(Math.PI,D.PI_OVER_TWO),eHe=new d,tHe=new d;mc.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=mc.computeActualEllipsoidPosition(o,t,J4e);if(!l(r))return;let s=e.canvas,a=Z4e;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ie.SCENE2D){let f=e.mapProjection,h=$4e,A=f.project(h,eHe),g=d.clone(c.position,tHe),m=c.frustum.clone(),_=N.computeViewportTransformation(a,0,1,new N),y=c.frustum.projectionMatrix,C=c.positionWC.y,E=d.fromElements(D.sign(C)*A.x-C,0,-c.positionWC.x),I=kt.pointToGLWindowCoordinates(y,_,E);if(C===0||I.x<=0||I.x>=s.clientWidth)u=!0;else{if(I.x>s.clientWidth*.5){a.width=I.x,c.frustum.right=A.x-C,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,yj),a.x+=I.x,c.position.x=-c.position.x;let b=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-b,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,Cj)}else{a.x+=I.x,a.width-=I.x,c.frustum.left=-A.x-C,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,yj),a.x=a.x-a.width,c.position.x=-c.position.x;let b=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-b,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,Cj)}d.clone(g,c.position),c.frustum=m.clone(),i=U.clone(yj,i),(i.x<0||i.x>s.clientWidth)&&(i.x=Cj.x)}}if(o.mode!==ie.SCENE2D||u){if(Gc=JM(r,n,c,Gc),Gc.z<0&&!(c.frustum instanceof An)&&!(c.frustum instanceof es))return;i=mc.clipToGLWindowCoordinates(a,Gc,i)}return i.y=s.clientHeight-i.y,i};mc.worldToDrawingBufferCoordinates=function(e,t,n){if(n=mc.worldToWindowCoordinates(e,t,n),!!l(n))return mc.transformWindowToDrawingBuffer(e,n,n)};var kp=new d,nHe=new Ae;mc.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ie.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,nHe);if(!l(r))return;if(o.project(r,kp),i===ie.COLUMBUS_VIEW)return d.fromElements(kp.z,kp.x,kp.y,n);if(i===ie.SCENE2D)return d.fromElements(0,kp.x,kp.y,n);let s=e.morphTime;return d.fromElements(D.lerp(kp.z,t.x,s),D.lerp(kp.x,t.y,s),D.lerp(kp.y,t.z,s),n)};var xle=new d,ble=new d,Tle=new N;mc.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,xle),N.computeViewportTransformation(e,0,1,Tle),N.multiplyByPoint(Tle,xle,ble),U.fromCartesian3(ble,n)};mc.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return U.fromElements(t.x*o,t.y*r,n)};var iHe=new se,Sle=new se;mc.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=se.clone(se.UNIT_W,iHe);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,A=e.camera.frustum;if(l(A.fovy)){h=N.multiplyByVector(r.inverseViewProjection,f,Sle);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=A.offCenterFrustum;l(g)&&(A=g),h=Sle,h.x=(f.x*(A.right-A.left)+A.left+A.right)*.5,h.y=(f.y*(A.top-A.bottom)+A.bottom+A.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=N.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var eo=mc;var Hb={};Hb._deprecationWarning=Tr;var Up=Uint32Array.BYTES_PER_ELEMENT;Hb.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=Up;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=Up;let s=o.getUint32(t,!0);t+=Up;let a=o.getUint32(t,!0);t+=Up;let c=o.getUint32(t,!0);t+=Up;let u=o.getUint32(t,!0);t+=Up;let f=o.getUint32(t,!0);t+=Up;let h;u>=570425344?(t-=Up*2,h=a,u=c,f=0,a=0,c=0,Hb._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=Up,h=u,u=a,f=c,a=0,c=0,Hb._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let A;a===0?A={BATCH_LENGTH:h??0}:(A=dr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=dr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(Hb._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{batchLength:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var ZM=Hb;function $M(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function wle(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=q.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function oHe(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=q.createTypedArray(n,i),o[t]=r),r}$M.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??q.UNSIGNED_INT,n=n??1,wle(this,e,t,n,1,i.byteOffset)):i};$M.prototype.hasProperty=function(e){return l(this.json[e])};$M.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=q.fromName(i.componentType)),wle(this,e,t,n,this.featuresLength,i.byteOffset)):oHe(this,e,t,i)};$M.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var Ph=$M;function e1(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=e.parseAsPropertyAttributes??!1,r=e.customAttributeOutput,s=rHe(n),a;l(s.jsonProperties)&&(a=new Op({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new PE({extension:s.hierarchy,binaryBody:i}));let u=Th.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,A,g;if(o){let y=aHe(t,u,f,i,r);g=y.transcodedSchema,A=[new t0({propertyAttribute:y.propertyAttributeJson,class:y.transcodedClass})]}else{let y=sHe(t,u,f,i);g=y.transcodedSchema;let C=y.featureTableJson;h=new od({count:C.count,properties:C.properties,class:y.transcodedClass,bufferViews:y.bufferViewsTypedArrays}),A=[]}let m=[];if(l(h)||l(a)||l(c)){let y=new Sl({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(y)}let _={schema:g,propertyTables:m,propertyAttributes:A,extensions:s.extensions,extras:s.extras};return new Aa(_)}function rHe(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(e1._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function sHe(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new ce(`Property ${h} requires a batch table binary.`);let A=n[h],g=Wu(A);r[h]={bufferView:a},o[h]=Ble(A),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=qu.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function aHe(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let A=n[h];if(!l(i)&&!l(A.typedArray))throw new ce(`Property ${h} requires a batch table binary.`);let g=Ot.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=Ble(A);m.name=h,r[g]=m;let _=g.toUpperCase();_.startsWith("_")||(_=`_${_}`);let y=A.typedArray;l(y)||(y=Wu(A).createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e));let C=new xn.Attribute;C.name=_,C.count=e,C.type=A.type;let E=q.fromTypedArray(y);(E===q.INT||E===q.UNSIGNED_INT||E===q.DOUBLE)&&(e1._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${_}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),y=new Float32Array(y)),C.componentDatatype=q.fromTypedArray(y),C.typedArray=y,o.push(C),s[g]={attribute:_}}let c={classes:{}};c.classes[t]={properties:r};let u=qu.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function Ble(e){let t=cHe(e.componentType);return{type:e.type,componentType:t}}function cHe(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}e1._deprecationWarning=Tr;e1._oneTimeWarning=yt;var Gp=e1;var o0={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},lHe=xn.FeatureIdAttribute;function oy(e){e=e??V.EMPTY_OBJECT;let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??fo.Y,u=e.forwardAxis??fo.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadAttributesFor2D??!1,A=e.enablePick??!1,g=e.loadIndicesForWireframe??!1,m=e.loadPrimitiveOutline??!0,_=e.loadForClassification??!1;n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=A,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=_,this._state=o0.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=N.IDENTITY}l(Object.create)&&(oy.prototype=Object.create(Hi.prototype),oy.prototype.constructor=oy);Object.defineProperties(oy.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});oy.prototype.load=function(){if(l(this._promise))return this._promise;let e=ZM.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new Ph(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(a)&&(this._transform=N.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new Xu({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=o0.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=o0.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return uHe(u,f)}),this._promise};function uHe(e,t){return e.unload(),e._state=o0.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}oy.prototype.process=function(e){if(this._state===o0.READY)return!0;if(this._state!==o0.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=N.multiplyTransformation(this._transform,n.transform,n.transform),fHe(this,n),this._components=n,this._arrayBuffer=void 0,this._state=o0.READY,!0};function fHe(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=Gp({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Sl({name:Th.BATCH_TABLE_CLASS_NAME,count:i});o=new Aa({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)Dle(r[a]);t.structuralMetadata=o}function Dle(e){let t=e.children.length;for(let i=0;i<t;i++)Dle(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Ot.getAttributeBySemantic(o,at.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new lHe;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}oy.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var t1=oy;function ry(e){e=e??V.EMPTY_OBJECT,this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(ry.prototype=Object.create(Hi.prototype),ry.prototype.constructor=ry);Object.defineProperties(ry.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});ry.prototype.load=function(){return Promise.resolve(this)};ry.prototype.process=function(e){return l(this._components)||(this._components=bHe(this._geoJson,e),this._geoJson=void 0),!0};function dHe(){this.lines=void 0,this.points=void 0,this.properties=void 0}function hHe(){this.features=[]}function Ej(e){let t=e[0],n=e[1],i=e[2]??0;return new d(t,n,i)}function Ij(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=Ej(e[o]);return[n]}function mHe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ij(e[i])[0];return n}function vle(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ij(e[i])[0];return n}function AHe(e){let t=e.length,n=[];for(let i=0;i<t;i++){let o=vle(e[i]);si(n,o)}return n}function pHe(e){return[Ej(e)]}function gHe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ej(e[i]);return n}var _He={LineString:Ij,MultiLineString:mHe,MultiPolygon:AHe,Polygon:vle,MultiPoint:gHe,Point:pHe},yHe={LineString:Me.LINES,MultiLineString:Me.LINES,MultiPolygon:Me.LINES,Polygon:Me.LINES,MultiPoint:Me.POINTS,Point:Me.POINTS};function Ple(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=_He[n],o=yHe[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new dHe;o===Me.LINES?s.lines=i(r):o===Me.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function CHe(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)Ple(n[o],t)}var EHe={FeatureCollection:CHe,Feature:Ple},Uz=new d;function IHe(e,t,n){let i=0,o=0,r=e.length;for(let M=0;M<r;M++){let L=e[M];if(l(L.lines)){let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x];i+=T.length,o+=(T.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Oe.createTypedArray(i,o),u=Oe.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),A=0,g=0;for(let M=0;M<r;M++){let L=e[M];if(!l(L.lines))continue;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let R=0;R<w;R++){let O=T[R],k=d.fromDegrees(O.x,O.y,O.z,te.WGS84,Uz),Q=N.multiplyByPoint(t,k,Uz);d.minimumByComponent(f,Q,f),d.maximumByComponent(h,Q,h),d.pack(Q,s,A*3),a[A]=M,R<w-1&&(c[g*2]=A,c[g*2+1]=A+1,g++),A++}}}let m=Ct.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});m.vertexArrayDestroyable=!1;let _=Ct.createVertexBuffer({typedArray:a,context:n.context,usage:Qe.STATIC_DRAW});_.vertexArrayDestroyable=!1;let y=Ct.createIndexBuffer({typedArray:c,context:n.context,usage:Qe.STATIC_DRAW,indexDatatype:u});y.vertexArrayDestroyable=!1;let C=new xn.Attribute;C.semantic=at.POSITION,C.componentDatatype=q.FLOAT,C.type=zt.VEC3,C.count=i,C.min=f,C.max=h,C.buffer=m;let E=new xn.Attribute;E.semantic=at.FEATURE_ID,E.setIndex=0,E.componentDatatype=q.FLOAT,E.type=zt.SCALAR,E.count=i,E.buffer=_;let I=[C,E],b=new xn.Material;b.unlit=!0;let S=new xn.Indices;S.indexDatatype=u,S.count=c.length,S.buffer=y;let B=new xn.FeatureIdAttribute;B.featureCount=r,B.propertyTableId=0,B.setIndex=0,B.positionalLabel="featureId_0";let v=[B],P=new xn.Primitive;return P.attributes=I,P.indices=S,P.featureIds=v,P.primitiveType=Me.LINES,P.material=b,P}function xHe(e,t,n){let i=0,o=e.length;for(let I=0;I<o;I++){let b=e[I];l(b.points)&&(i+=b.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let I=0;I<o;I++){let b=e[I];if(!l(b.points))continue;let S=b.points.length;for(let B=0;B<S;B++){let v=b.points[B],P=d.fromDegrees(v.x,v.y,v.z,te.WGS84,Uz),M=N.multiplyByPoint(t,P,Uz);d.minimumByComponent(a,M,a),d.maximumByComponent(c,M,c),d.pack(M,r,u*3),s[u]=I,u++}}let f=Ct.createVertexBuffer({typedArray:r,context:n.context,usage:Qe.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Ct.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});h.vertexArrayDestroyable=!1;let A=new xn.Attribute;A.semantic=at.POSITION,A.componentDatatype=q.FLOAT,A.type=zt.VEC3,A.count=i,A.min=a,A.max=c,A.buffer=f;let g=new xn.Attribute;g.semantic=at.FEATURE_ID,g.setIndex=0,g.componentDatatype=q.FLOAT,g.type=zt.SCALAR,g.count=i,g.buffer=h;let m=[A,g],_=new xn.Material;_.unlit=!0;let y=new xn.FeatureIdAttribute;y.featureCount=o,y.propertyTableId=0,y.setIndex=0,y.positionalLabel="featureId_0";let C=[y],E=new xn.Primitive;return E.attributes=m,E.featureIds=C,E.primitiveType=Me.POINTS,E.material=_,E}function bHe(e,t){let n=new hHe,i=EHe[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new ce("GeoJSON must have at least one feature");let s={};for(let M=0;M<r;M++){let p=o[M].properties??V.EMPTY_OBJECT;for(let x in p)p.hasOwnProperty(x)&&(l(s[x])||(s[x]=new Array(r)))}for(let M=0;M<r;M++){let L=o[M];for(let p in s)if(s.hasOwnProperty(p)){let x=L.properties[p]??"";s[p][M]=x}}let a=new Op({count:r,properties:s}),u=[new Sl({id:0,count:r,jsonMetadataTable:a})],f=qu.fromJson({}),h=new Aa({schema:f,propertyTables:u}),A=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,_=!1;for(let M=0;M<r;M++){let L=o[M];if(l(L.lines)){m=!0;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let R=0;R<w;R++)d.minimumByComponent(A,T[R],A),d.maximumByComponent(g,T[R],g)}}if(l(L.points)){_=!0;let p=L.points.length;for(let x=0;x<p;x++){let T=L.points[x];d.minimumByComponent(A,T,A),d.maximumByComponent(g,T,g)}}}let y=d.midpoint(A,g,new d),C=d.fromDegrees(y.x,y.y,y.z,te.WGS84,new d),E=kt.eastNorthUpToFixedFrame(C,te.WGS84,new N),I=N.inverseTransformation(E,new N),b=[];m&&b.push(IHe(o,I,t)),_&&b.push(xHe(o,I,t));let S=new xn.Node;S.index=0,S.primitives=b;let B=[S],v=new xn.Scene;v.nodes=B;let P=new xn.Components;return P.scene=v,P.nodes=B,P.transform=E,P.structuralMetadata=h,P}ry.prototype.unload=function(){this._components=void 0};var n1=ry;var Gz={};Gz._deprecationWarning=Tr;var sy=Uint32Array.BYTES_PER_ELEMENT;Gz.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=sy;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=sy;let s=o.getUint32(t,!0);t+=sy;let a=o.getUint32(t,!0);if(a===0)throw new ce("featureTableJsonByteLength is zero, the feature table must be defined.");t+=sy;let c=o.getUint32(t,!0);t+=sy;let u=o.getUint32(t,!0);t+=sy;let f=o.getUint32(t,!0);t+=sy;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new ce(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=sy;let A=dr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=dr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(Gz._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{gltfFormat:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var i1=Gz;var zp={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},zz=xn.Attribute,THe=xn.FeatureIdAttribute,Mle=xn.Instances;function Vp(e){e=e??V.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??fo.Y,u=e.forwardAxis??fo.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,A=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._enablePick=g,this._state=zp.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=N.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(Vp.prototype=Object.create(Hi.prototype),Vp.prototype.constructor=Vp);Object.defineProperties(Vp.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});Vp.prototype.load=function(){if(l(this._promise))return this._promise;let e=i1.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Ph(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new ce("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(c)&&(this._transform=N.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=iu(e.gltf);h=h.replace(/[\s\0]+$/,"");let A=this._baseResource.getDerivedResource({url:h});u.gltfResource=A,u.baseResource=A}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new Xu(u);return this._gltfLoader=f,this._state=zp.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=zp.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw SHe(this,h)}),this._promise};function SHe(e,t){return e.unload(),e._state=zp.FAILED,e.getError("Failed to load i3dm",t)}Vp.prototype.process=function(e){if(this._state===zp.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===zp.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=N.multiplyTransformation(this._transform,i.transform,i.transform),DHe(this,i,e),wHe(this,i),this._components=i,this._arrayBuffer=void 0,this._state=zp.READY,!0};function wHe(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=Gp({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new Sl({name:Th.BATCH_TABLE_CLASS_NAME,count:i});o=new Aa({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var Vz=new d,xj=new Array(4),BHe=new N;function DHe(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",q.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=PHe(o,r),h;c&&(h=new Float32Array(4*r));let A;u&&(A=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),_=new d,y=new d,C=new d,E=new d,I=new J,b=new Le,S=new Array(4),B=new d,v=new Array(3),P=new N;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let Q=le.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],Q.center,Vz),f[3*i+0]=Vz.x,f[3*i+1]=Vz.y,f[3*i+2]=Vz.z;let z=N.fromTranslation(Q.center,BHe);t.transform=N.multiplyTransformation(z,t.transform,t.transform)}for(i=0;i<r;i++){_=d.clone(m[i]),l(s)&&d.add(_,d.unpack(s),_),c&&(RHe(o,a,i,b,_,C,y,E,I,P),Le.pack(b,S,0),h[4*i+0]=S[0],h[4*i+1]=S[1],h[4*i+2]=S[2],h[4*i+3]=S[3]),u&&(MHe(o,i,B),d.pack(B,v,0),A[3*i+0]=v[0],A[3*i+1]=v[1],A[3*i+2]=v[2]);let Q=o.getProperty("BATCH_ID",q.UNSIGNED_SHORT,1,i);l(Q)||(Q=i),g[i]=Q}let M=new Mle;M.transformInWorldSpace=!0;let L=e._buffers,p=new zz;if(p.name="Instance Translation",p.semantic=bs.TRANSLATION,p.componentDatatype=q.FLOAT,p.type=zt.VEC3,p.count=r,p.typedArray=f,!c){let Q=Ct.createVertexBuffer({context:n.context,typedArray:f,usage:Qe.STATIC_DRAW});Q.vertexArrayDestroyable=!1,L.push(Q),p.buffer=Q}if(M.attributes.push(p),c){let Q=new zz;Q.name="Instance Rotation",Q.semantic=bs.ROTATION,Q.componentDatatype=q.FLOAT,Q.type=zt.VEC4,Q.count=r,Q.typedArray=h,M.attributes.push(Q)}if(u){let Q=new zz;if(Q.name="Instance Scale",Q.semantic=bs.SCALE,Q.componentDatatype=q.FLOAT,Q.type=zt.VEC3,Q.count=r,c)Q.typedArray=A;else{let z=Ct.createVertexBuffer({context:n.context,typedArray:A,usage:Qe.STATIC_DRAW});z.vertexArrayDestroyable=!1,L.push(z),Q.buffer=z}M.attributes.push(Q)}let x=new zz;x.name="Instance Feature ID",x.setIndex=0,x.semantic=bs.FEATURE_ID,x.componentDatatype=q.FLOAT,x.type=zt.SCALAR,x.count=r;let T=Ct.createVertexBuffer({context:n.context,typedArray:g,usage:Qe.STATIC_DRAW});T.vertexArrayDestroyable=!1,L.push(T),x.buffer=T,M.attributes.push(x);let w=new THe;w.propertyTableId=0,w.setIndex=0,w.positionalLabel="instanceFeatureId_0",M.featureIds.push(w);let R=t.nodes,O=R.length,k=!1;for(i=0;i<O;i++){let Q=R[i];Q.primitives.length>0&&(Q.instances=k?vHe(M):M,k=!0)}}function vHe(e){let t=new Mle;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=ze(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function PHe(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",q.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(o))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new ce("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var Rle=new Array(4);function RHe(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",q.FLOAT,3,n,xj),h=e.getProperty("NORMAL_RIGHT",q.FLOAT,3,n,Rle),A=!1;if(l(f)){if(!l(h))throw new ce("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),A=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",q.UNSIGNED_SHORT,2,n,xj),m=e.getProperty("NORMAL_RIGHT_OCT32P",q.UNSIGNED_SHORT,2,n,Rle);if(l(g)){if(!l(m))throw new ce("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");On.octDecodeInRange(g[0],g[1],65535,r),On.octDecodeInRange(m[0],m[1],65535,s),A=!0}else t?(kt.eastNorthUpToFixedFrame(o,te.WGS84,u),N.getMatrix3(u,c)):J.clone(J.IDENTITY,c)}A&&(d.cross(s,r,a),d.normalize(a,a),J.setColumn(c,0,s,c),J.setColumn(c,1,r,c),J.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function MHe(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",q.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",q.FLOAT,3,t,xj);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function NHe(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}Vp.prototype.isUnloaded=function(){return this._state===zp.UNLOADED};Vp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),NHe(this),this._components=void 0,this._arrayBuffer=void 0,this._state=zp.UNLOADED};var o1=Vp;var LHe={STOPPED:0,ANIMATING:1},Rh=Object.freeze(LHe);function Wb(){this.times=void 0,this.points=void 0,me.throwInstantiationError()}Wb.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};Wb.prototype.evaluate=me.throwInstantiationError;Wb.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=t??0,e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};Wb.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};Wb.prototype.clampTime=function(e){let t=this.times;return D.clamp(e,t[0],t[t.length-1])};var _o=Wb;function jb(e){this._value=e,this._valueType=_o.getPointType(e)}Object.defineProperties(jb.prototype,{value:{get:function(){return this._value}}});jb.prototype.findTimeInterval=function(e){};jb.prototype.wrapTime=function(e){return 0};jb.prototype.clampTime=function(e){return 0};jb.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var r1=jb;function Yb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Yb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Yb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Yb.prototype.wrapTime=_o.prototype.wrapTime;Yb.prototype.clampTime=_o.prototype.clampTime;Yb.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var ay=Yb;var Nle={};Nle.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var qb=Nle;var Lle=[],Ole=[],Fle=[],Qle=[];function OHe(e,t,n){let i=Lle,o=Fle,r=Ole,s=Qle;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),qb.solve(i,r,o,s)}function FHe(e){let t=Lle,n=Fle,i=Ole,o=Qle;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),qb.solve(t,i,n,o)}function uu(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(uu.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});uu.createC1=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new uu({times:t,points:n,inTangents:r,outTangents:o})};uu.createNaturalCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points;if(n.length<3)return new ay({points:n,times:t});let i=FHe(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new uu({times:t,points:n,inTangents:r,outTangents:o})};uu.createClampedCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=_o.getPointType(n[0]);if(n.length<3)return new ay({points:n,times:t});let s=OHe(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new uu({times:t,points:n,inTangents:c,outTangents:a})};uu.hermiteCoefficientMatrix=new N(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);uu.prototype.findTimeInterval=_o.prototype.findTimeInterval;var QHe=new se,Kb=new d;uu.prototype.wrapTime=_o.prototype.wrapTime;uu.prototype.clampTime=_o.prototype.clampTime;uu.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=QHe;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=N.multiplyByVector(uu.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,Kb),h.add(t,Kb,t),h.multiplyByScalar(r[s],f.z,Kb),h.add(t,Kb,t),h.multiplyByScalar(o[s],f.w,Kb),h.add(t,Kb,t))};var cy=uu;function Xb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Xb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Xb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Xb.prototype.wrapTime=_o.prototype.wrapTime;Xb.prototype.clampTime=_o.prototype.clampTime;Xb.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var s1=Xb;function kHe(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function Jb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=kHe(this),this._lastTimeIndex=0}Object.defineProperties(Jb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Jb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Jb.prototype.wrapTime=_o.prototype.wrapTime;Jb.prototype.clampTime=_o.prototype.clampTime;Jb.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var a1=Jb;var Zb=xn.AnimatedPropertyType;function bj(e){e=e??V.EMPTY_OBJECT;let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,HHe(this)}Object.defineProperties(bj.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function UHe(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new cy({times:e,points:n,inTangents:i,outTangents:o})}function kle(e,t,n,i){if(e.length===1&&t.length===1)return new r1(t[0]);switch(n){case Dh.STEP:return new s1({times:e,points:t});case Dh.CUBICSPLINE:return UHe(e,t);case Dh.LINEAR:return i===Zb.ROTATION?new a1({times:e,points:t}):new ay({times:e,points:t})}}function GHe(e,t,n,i,o){let r=[];if(i===Zb.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===Dh.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(kle(e,f,n,i))}}else r.push(kle(e,t,n,i));return r}var zHe=new d,VHe=new Le;function HHe(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=GHe(i,o,r,a,u);e._splines=f,e._path=a}bj.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===Zb.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===Zb.TRANSLATION||n===Zb.SCALE?o[n]=r.evaluate(s,zHe):n===Zb.ROTATION&&(o[n]=r.evaluate(s,VHe))}}};var c1=bj;function Tj(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=K.clone(n.startTime),this._delay=n.delay??0,this._stopTime=K.clone(n.stopTime),this.removeOnStop=n.removeOnStop??!1,this._multiplier=n.multiplier??1,this._reverse=n.reverse??!1,this._loop=n.loop??cu.NONE,this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new _e,this.update=new _e,this.stop=new _e,this._state=Rh.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,WHe(this)}Object.defineProperties(Tj.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function WHe(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,A=i._runtimeNodes[h],g=new c1({channel:u,runtimeAnimation:e,runtimeNode:A}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}Tj.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var l1=Tj;function Hp(e){this.animationAdded=new _e,this.animationRemoved=new _e,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(Hp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function Sj(e,t,n){let i=e._model,o=new l1(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}Hp.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return Sj(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return Sj(this,n[i],e)};Hp.prototype.addAll=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=Sj(this,n[r],e);i.push(s)}return i};Hp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};Hp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};Hp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};Hp.prototype.get=function(e){return this._runtimeAnimations[e]};var Hz=[];function jHe(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}Hp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&K.equals(e.time,this._previousTime))return!1;this._previousTime=K.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=K.addSeconds(a.startTime??o,a.delay,new K)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=K.lessThanOrEquals(c,o),A=l(f)&&K.greaterThan(o,f),g=0;if(u!==0){let y=K.secondsDifference(A?f:o,c);g=l(a._animationTime)?a._animationTime(u,y):y/u}let m=a.loop===cu.REPEAT||a.loop===cu.MIRRORED_REPEAT,_=(h||m&&!l(a.startTime))&&(g<=1||m)&&!A;if(g===a._prevAnimationDelta){let y=a._state===Rh.STOPPED;if(_!==y)continue}if(a._prevAnimationDelta=g,_||a._state===Rh.ANIMATING){if(_&&a._state===Rh.STOPPED&&(a._state=Rh.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===cu.REPEAT)g=g-Math.floor(g);else if(a.loop===cu.MIRRORED_REPEAT){let C=Math.floor(g),E=g-C;g=C%2===1?1-E:E}a.reverse&&(g=1-g);let y=g*u*a.multiplier;y=D.clamp(y,a.localStartTime,a.localStopTime),a.animate(y),a.update.numberOfListeners>0&&(a._updateEventTime=y,e.afterRender.push(a._raiseUpdateEvent)),i=!0,_||(a._state=Rh.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&Hz.push(a))}}n=Hz.length;for(let s=0;s<n;++s){let a=Hz[s];t.splice(t.indexOf(a),1),e.afterRender.push(jHe(this,r,a))}return Hz.length=0,i};var u1=Hp;function r0(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(r0.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});r0.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};r0.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};r0.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};r0.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};r0.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var f1=r0;var d1={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};d1.getStyleCommandsNeeded=function(e,t){return t===0?d1.ALL_OPAQUE:t===e?d1.ALL_TRANSLUCENT:d1.OPAQUE_AND_TRANSLUCENT};var Mh=Object.freeze(d1);var ly={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};ly.is3DTiles=function(e){switch(e){case ly.TILE_GLTF:case ly.TILE_B3DM:case ly.TILE_I3DM:case ly.TILE_PNTS:case ly.TILE_GEOJSON:return!0;case ly.GLTF:return!1}};var wr=Object.freeze(ly);function os(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=Mh.ALL_OPAQUE,YHe(this)}Object.defineProperties(os.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function YHe(e){let t=e._model,n=wr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new ha(s,o)}else for(o=0;o<i;o++)r[o]=new f1({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Il({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}os.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=Mh.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};os.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};os.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};os.prototype.getShow=function(e){return this._batchTexture.getShow(e)};os.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};os.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};os.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};os.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};os.prototype.getFeature=function(e){return this._features[e]};os.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};os.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};os.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};os.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};os.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};os.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};os.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};os.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};os.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var qHe=new G;os.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Il.DEFAULT_COLOR_VALUE),this.setAllShow(Il.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?e.color.evaluateColor(n,qHe)??Il.DEFAULT_COLOR_VALUE:Il.DEFAULT_COLOR_VALUE,o=l(e.show)?e.show.evaluate(n)??Il.DEFAULT_SHOW_VALUE:Il.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};os.prototype.isDestroyed=function(){return!1};os.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var h1=os;var s0={VERTEX:0,FRAGMENT:1,BOTH:2};s0.includesVertexShader=function(e){return e===s0.VERTEX||e===s0.BOTH};s0.includesFragmentShader=function(e){return e===s0.FRAGMENT||e===s0.BOTH};var pe=Object.freeze(s0);var Ule={name:"TilesetPipelineStage"};Ule.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return U.ZERO}};e.uniformMap=Tt(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK};var m1=Ule;var A1=`// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// +// This version uses only a single iteration for best performance. For fog +// rendering, the difference is negligible. +vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = cos(pi/4) + vec2 tTrigs = vec2(0.70710678118); + vec2 v = radii * tTrigs; + + // Find the evolute of the ellipse (center of curvature) at v. + vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs; + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + + return v * sign(pos); +} + +vec3 computeEllipsoidPositionWC(vec3 positionMC) { + // Get the world-space position and project onto a meridian plane of + // the ellipsoid + vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + + vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z); + vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz); + + // Reconstruct a 3D point in world space + return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y); +} + +void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) { + + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is dynamic lighting, apply that to the fog. + const float NONE = 0.0; + if (czm_atmosphereDynamicLighting != NONE) { + float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0); + fogColor *= darken; + } + + // Tonemap if HDR rendering is disabled + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar); + color = vec4(withFog, color.a); +} + +void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) { + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is in space, compute the position per-fragment for + // more accurate ground atmosphere. All other cases will use + // + // The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717 + if (false) { + positionWC = computeEllipsoidPositionWC(attributes.positionMC); + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + + // The fog color is derived from the ground atmosphere color + czm_computeGroundAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + } else { + positionWC = attributes.positionWC; + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + } + + //color correct rayleigh and mie colors + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels); + + vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + if (u_isInFog) { + float distanceToCamera = length(attributes.positionEC); + applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera); + } else { + // Ground atmosphere + } +} +`;var p1=`void atmosphereStage(ProcessedAttributes attributes) { + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting); + + czm_computeGroundAtmosphereScattering( + // This assumes the geometry stage came before this. + v_positionWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +} +`;var Gle={name:"AtmospherePipelineStage"};Gle.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([p1]),i.addFragmentLines([A1]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return D.fog(o,n.fog.density)>D.EPSILON3}};var g1=Gle;var _1=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var zle={name:"ImageBasedLightingPipelineStage"},KHe=new U;zle.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),Ch.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(_1);let c={model_iblFactor:function(){return U.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,KHe)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=Tt(c,e.uniformMap)};var y1=zle;var XHe=D.EPSILON16;function Bj(e){e=e??V.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(Bj.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=D.clamp(e,this.minimumValue,this.maximumValue),D.equalsEpsilon(this._currentValue,e,XHe)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var JHe=new d,wj=new J;Bj.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=JHe,o;switch(t){case kc.XROTATE:o=J.fromRotationX(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.YROTATE:o=J.fromRotationY(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.ZROTATE:o=J.fromRotationZ(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=N.multiplyByTranslation(e,i,e);break;case kc.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=N.multiplyByTranslation(e,i,e);break;case kc.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=N.multiplyByTranslation(e,i,e);break;case kc.XSCALE:i.x=n,i.y=1,i.z=1,e=N.multiplyByScale(e,i,e);break;case kc.YSCALE:i.x=1,i.y=n,i.z=1,e=N.multiplyByScale(e,i,e);break;case kc.ZSCALE:i.x=1,i.y=1,i.z=n,e=N.multiplyByScale(e,i,e);break;case kc.UNIFORMSCALE:e=N.multiplyByUniformScale(e,n,e);break;default:break}return e};var C1=Bj;function Wz(e){e=e??V.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,ZHe(this)}Object.defineProperties(Wz.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function ZHe(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new C1({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}Wz.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var $He=new N,e5e=new N;Wz.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=N.clone(N.IDENTITY,$He),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=N.multiplyTransformation(s.originalTransform,e,e5e);s.transform=a}};var E1=Wz;var I1=`void modelColorStage(inout czm_modelMaterial material) +{ + material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend); + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight); + material.alpha *= model_color.a; +} +`;var $b={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};$b.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(I1);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=Be.TRANSLUCENT),i.addUniform("vec4",$b.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[$b.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",$b.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[$b.COLOR_BLEND_UNIFORM_NAME]=function(){return Qc.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=Tt(o,e.uniformMap)};var uy=$b;var x1=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +#else +// Handle uint8 clipping texture instead +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each + int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v))); + return czm_transformPlane(plane, transform); +} +#endif + +float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float pixelWidth = czm_metersPerPixel(position); + + #ifdef UNION_CLIPPING_REGIONS + float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below. + #else + float clipAmount = 0.0; + bool clipped = true; + #endif + + for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + + #ifdef UNION_CLIPPING_REGIONS + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) { + discard; + } + #else + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + #endif + } + + #ifndef UNION_CLIPPING_REGIONS + if (clipped) { + discard; + } + #endif + + return clipAmount; +} + +void modelClippingPlanesStage(inout vec4 color) +{ + float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a; + + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Vle={name:"ModelClippingPlanesPipelineStage"},t5e=new U;Vle.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Fs.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Fs.getTextureResolution(i,o,t5e);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(x1);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=G.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=Tt(a,e.uniformMap)};var b1=Vle;var T1=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var S1=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Hle={name:"ModelClippingPolygonsPipelineStage"};Hle.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(T1),o.addFragmentLines(S1);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=Tt(r,e.uniformMap)};var w1=Hle;function Wle(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(Wle.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var B1=Wle;var D1=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var v1=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var P1=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var jz=new N,n5e=new N,i5e=new N,Yle={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Zle,_transformsToTypedArray:vj};Yle.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(D1);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];_5e(e,n,i,h,u,f),E5e(e,n,i,h);let A={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),A.u_instance_modifiedModelView=function(){let g=N.multiplyTransformation(s.modelMatrix,a.components.transform,jz);return u?N.multiplyTransformation(n.context.uniformState.view3D,g,jz):(n.mode!==ie.SCENE3D&&(g=kt.basisTo2D(n.mapProjection,g,jz)),N.multiplyTransformation(n.context.uniformState.view,g,jz))},A.u_instance_nodeTransform=function(){return N.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,n5e)},r.addVertexLines(P1)):r.addVertexLines(v1),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=N.fromTranslation(c.instancingReferencePoint2D,new N);A.u_modelView2D=function(){return N.multiplyTransformation(g.uniformState.view,m,i5e)}}e.uniformMap=Tt(A,e.uniformMap),e.instanceCount=o,si(e.attributes,h)};var R1=new N,o5e=new d;function r5e(e,t,n,i,o){let r=N.multiplyTransformation(t,e,R1);return r=N.multiplyTransformation(r,n,R1),o=kt.basisTo2D(i.mapProjection,r,o),o}function s5e(e,t,n,i,o){let r=N.fromTranslation(e,R1),s=N.multiplyTransformation(t,r,R1);s=N.multiplyTransformation(s,n,R1);let a=N.getTranslation(s,o5e);return o=eo.computeActualEllipsoidPosition(i,a,o),o}function qle(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=N.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=N.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=N.clone(o.computedModelMatrix,t),t=N.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=N.clone(N.IDENTITY,n))}var Kle=new N,Xle=new N,a5e=new N,c5e=new d;function l5e(e,t,n,i){let o=Kle,r=Xle;qle(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=r5e(f,o,r,n,a5e),A=N.getTranslation(h,c5e),g=d.subtract(A,a,A);i[u]=N.setTranslation(h,g,i[u])}return i}function u5e(e,t,n,i){let o=Kle,r=Xle;qle(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=s5e(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var f5e=new d,d5e=new d;function Jle(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=N.multiplyByPoint(i,n.instancingTranslationMin,f5e),r=eo.computeActualEllipsoidPosition(t,o,o),s=N.multiplyByPoint(i,n.instancingTranslationMax,d5e),a=eo.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function vj(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function h5e(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var m5e=new d,A5e=new Le,p5e=new d;function Zle(e,t,n){let i=new Array(t),o=Ot.getAttributeBySemantic(e,bs.TRANSLATION),r=Ot.getAttributeBySemantic(e,bs.ROTATION),s=Ot.getAttributeBySemantic(e,bs.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),A=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=On.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let y=0;y<t;y++){let C=new d(A[y*3],A[y*3+1],A[y*3+2],m5e);d.maximumByComponent(a,C,a),d.minimumByComponent(c,C,c);let E=new Le(g[y*4],g[y*4+1],g[y*4+2],f?g[y*4+3]:1,A5e),I=new d(m[y*3],m[y*3+1],m[y*3+2],p5e),b=N.fromTranslationQuaternionRotationScale(C,E,I,new N);i[y]=b}let _=n.runtimeNode;return _.instancingTranslationMin=c,_.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function g5e(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function Pj(e,t){let n=Ct.createVertexBuffer({context:t.context,typedArray:e,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function _5e(e,t,n,i,o,r){let s=Ot.getAttributeBySemantic(n,bs.ROTATION);l(s)?y5e(e,n,i,t,o,r):C5e(e,n,i,t,o)}function y5e(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,A=u.instancingTransformsBuffer;if(!l(A)){h=Zle(t,a,e);let y=vj(h);A=Pj(y,i),c._modelResources.push(A),r&&(u.transformsTypedArray=y),u.instancingTransformsBuffer=A}if(jle(e,A,n,f),!o)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Jle(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let y=l5e(h,e,g,h),C=vj(y);m=Pj(C,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}jle(e,m,n,"Transform2D")}function C5e(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Ot.getAttributeBySemantic(t,bs.TRANSLATION),u=Ot.getAttributeBySemantic(t,bs.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),Dj(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=g5e(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),Dj(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Jle(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let E=u5e(f,e,g,f),I=h5e(E);r&&(a.transformsTypedArray=I),m=Pj(I,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;Dj(e,m,0,void 0,n,"Translation2D")}function jle(e,t,n,i){let r=q.getSizeInBytes(q.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),si(n,a)}function Dj(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function E5e(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===bs.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:zt.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var M1=Yle;var Rj={};Rj.name="ModelMatrixUpdateStage";Rj.update=function(e,t,n){let i=n.mode!==ie.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;$le(e,t,o,e.transformToRoot),e._transformDirty=!1}};function I5e(e,t,n){e.modelMatrix=N.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Ot.getCullFace(e.modelMatrix,e.primitiveType)}function $le(e,t,n,i){let o;i=N.multiplyTransformation(i,e.transform,new N),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];I5e(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=N.clone(i,a._transformToRoot),$le(a,t,n,i),a._transformDirty=!1}}var N1=Rj;var eue={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:tue,_countGeneratedBuffers:nue};eue.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;tue(i,o),nue(i,r)};function tue(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function nue(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var L1=eue;function eT(e){e=e??V.EMPTY_OBJECT;let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=N.clone(n,this._originalTransform),this._transform=N.clone(n,this._transform),this._transformToRoot=N.clone(i,this._transformToRoot),this._computedTransform=new N,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,x5e(this)}Object.defineProperties(eT.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=N.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),Mj(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),Mj(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),Mj(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function x5e(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=N.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new R_(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function Mj(e,t){e._transformDirty=!0,e._transform=N.fromTranslationRotationScale(t,e._transform)}eT.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};eT.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(M1),t.push(L1),n.push(N1)};eT.prototype.updateComputedTransform=function(){this._computedTransform=N.multiply(this._transformToRoot,this._transform,this._computedTransform)};eT.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new N);let r=N.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=N.inverseTransformation(r,t[o]);t[o]=N.multiplyTransformation(s,n[o],t[o])}};var O1=eT;var iue={name:"AlphaPipelineStage"};iue.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=i.pass??o.opaquePass;let r=e.renderStateOptions;i.pass===Be.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=pn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var F1=iue;var oue={name:"BatchTexturePipelineStage"};oue.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return c.batchTexture??c.defaultTexture},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=Tt(o,e.uniformMap)};var Q1=oue;var rue={name:"ClassificationPipelineStage"};rue.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||b5e(t,o)};function b5e(e,t){let n=Ot.getAttributeBySemantic(e,at.POSITION);if(!l(n))throw new ce("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Ot.getAttributeBySemantic(e,at.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,A=c[h],g=0;for(let _=1;_<s;_++){let y=r?i[_]:_,C=c[y];if(C!==A){let E=_-g,I=_;u.push(E),f.push(I),g=I,A=C}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var k1=rue;var U1=`void filterByPassType(inout vec3 positionMC, vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + positionMC *= float(model_silhouettePass); + #else + positionMC *= 0.0; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + positionMC *= 0.0; + } +} + +void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature) +{ + float show = ceil(feature.color.a); + positionMC *= show; + + #if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION) + filterByPassType(positionMC, feature.color); + #endif +} +`;var G1=`void filterByPassType(vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + if(!model_silhouettePass) { + discard; + } + #else + discard; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + discard; + } +} + +void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature) +{ + vec4 featureColor = feature.color; + if (featureColor.a == 0.0) + { + discard; + } + + // If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader. + // So, we only apply in in the fragment shader if the feature ID texture is used. + #if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION) + filterByPassType(featureColor); + #endif + + featureColor = czm_gammaCorrect(featureColor); + + // Classification models compute the diffuse differently. + #ifdef HAS_CLASSIFICATION + material.diffuse = featureColor.rgb * featureColor.a; + #else + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight); + #endif + + material.alpha *= featureColor.a; +} +`;var sue={name:"CPUStylingPipelineStage"};sue.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(U1),o.addFragmentLines(G1),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",uy.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[uy.COLOR_BLEND_UNIFORM_NAME]=function(){return Qc.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===Be.TRANSLUCENT}};var z1=sue;var aue={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};aue.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var Wp=Object.freeze(aue);var V1=`void customShaderStage( + inout czm_modelVertexOutput vsOutput, + inout ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // VertexInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + VertexInput vsInput; + initializeInputStruct(vsInput, attributes); + vsInput.featureIds = featureIds; + vsInput.metadata = metadata; + vsInput.metadataClass = metadataClass; + vsInput.metadataStatistics = metadataStatistics; + vertexMain(vsInput, vsOutput); + attributes.positionMC = vsOutput.positionMC; +} +`;var H1=`void customShaderStage( + inout czm_modelMaterial material, + ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // FragmentInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + FragmentInput fsInput; + initializeInputStruct(fsInput, attributes); + fsInput.featureIds = featureIds; + fsInput.metadata = metadata; + fsInput.metadataClass = metadataClass; + fsInput.metadataStatistics = metadataStatistics; + fragmentMain(fsInput, material); +} +`;var W1=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) { + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); +} +`;var j1=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) +{ + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); + setFeatureIdVaryings(); +} +`;var to={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};to.process=function(e,t,n){let i=e.shaderBuilder;T5e(i);let o=e.runtimeNode.node.instances;l(o)&&S5e(e,o,n),w5e(e,t,n),i.addVertexLines(j1),i.addFragmentLines(W1)};function T5e(e){e.addStruct(to.STRUCT_ID_FEATURE_IDS_VS,to.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(to.STRUCT_ID_FEATURE_IDS_FS,to.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,to.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function S5e(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof xn.FeatureIdAttribute?B5e(e,s,a):cue(e,s,a,o,1,n);let c=s.label;l(c)&&lue(e,a,c,pe.BOTH)}}function w5e(e,t,n){let i=t.featureIds,r=Ot.getAttributeBySemantic(t,at.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof xn.FeatureIdAttribute?D5e(e,a,c):a instanceof xn.FeatureIdImplicitRange?cue(e,a,c,r,void 0,n):(v5e(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&lue(e,c,f,u)}}function B5e(e,t,n){let i=e.shaderBuilder;i.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function D5e(e,t,n){let i=e.shaderBuilder;i.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function cue(e,t,n,i,o,r){P5e(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function v5e(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return a.texture??o.context.defaultTexture};let c=a.channels,u=e.shaderBuilder;u.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,A=h,g=a.transform;if(l(g)&&!J.equals(g,J.IDENTITY)){let y=`${r}Transform`;u.addUniform("mat3",y,pe.FRAGMENT),s[y]=function(){return g},A=`vec2(${y} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${A}).${c}`,_=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[_])}function lue(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function P5e(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=R5e(t,n);s=Ct.createVertexBuffer({context:o.context,typedArray:u,usage:Qe.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:q.FLOAT,strideInBytes:q.getSizeInBytes(q.FLOAT),offsetInBytes:0};e.attributes.push(c)}function R5e(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var fy=to;var Y1=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); +} +`;var q1=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); + setMetadataVaryings(); +} +`;var Qi={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Qi.process=function(e,t,n){let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=s?.tileset.metadataExtension?.statistics,c=M5e(r.propertyAttributes,t,a),u=L5e(r.propertyTextures,a),f=c.concat(u);F5e(i,f),U5e(i),i.addVertexLines(q1),i.addFragmentLines(Y1);for(let h=0;h<c.length;h++){let A=c[h];G5e(e,A)}for(let h=0;h<u.length;h++){let A=u[h];V5e(e,A)}};function M5e(e,t,n){return l(e)?e.flatMap(i=>N5e(i,t,n)):[]}function N5e(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Ot,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,A]=c[f],g=i(t,A.attribute),{glslType:m,variableName:_}=o(g);u[f]={metadataVariable:r(h),property:A,type:A.classProperty.type,glslType:m,variableName:_,propertyStatistics:a?.properties[h],shaderDestination:pe.BOTH}}return u}function L5e(e,t){return l(e)?e.flatMap(n=>O5e(n,t)):[]}function O5e(e,t){let{sanitizeGlslIdentifier:n}=Ot,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o?.properties[c],shaderDestination:pe.FRAGMENT}}return s}function F5e(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==pt.ENUM&&i.add(u)}let o=Qi.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Qi.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],A=u[f].type==="float"?k5e(c):c;e.addStructField(a,A,h)}}}var Q5e={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function k5e(e){let t=Q5e[e];return l(t)?t:e}function U5e(e){e.addStruct(Qi.STRUCT_ID_METADATA_VS,Qi.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_FS,Qi.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Qi.STRUCT_ID_METADATA_CLASS_VS,Qi.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_CLASS_FS,Qi.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Qi.STRUCT_ID_METADATA_STATISTICS_VS,Qi.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_STATISTICS_FS,Qi.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,Qi.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,Qi.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Qi.FUNCTION_ID_SET_METADATA_VARYINGS,Qi.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function G5e(e,t){z5e(e,t),uue(e.shaderBuilder,t),fue(e.shaderBuilder,t)}function z5e(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=hue({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Qi.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Qi.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function V5e(e,t){H5e(e,t),uue(e.shaderBuilder,t),fue(e.shaderBuilder,t)}function H5e(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,A=`u_propertyTexture_${u}`;i.hasOwnProperty(A)||(n.addUniform("sampler2D",A,pe.FRAGMENT),i[A]=()=>f),n.addStructField(Qi.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!J.equals(h,J.IDENTITY)){let I=`${A}Transform`;n.addUniform("mat3",I,pe.FRAGMENT),i[I]=function(){return h},m=`vec2(${I} * vec3(${g}, 1.0))`}let _=`texture(${A}, ${m}).${c}`,y=s.unpackInShader(_),C=hue({valueExpression:y,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),E=`metadata.${o} = ${C};`;n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,[E])}function uue(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=due(Qi.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Qi.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Qi.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function fue(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===pt.ENUM)return;let s=Qi.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=due(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Qi.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Qi.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function due(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function hue(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var ld=Qi;var W5e={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},dy=Object.freeze(W5e);var za={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:yt};za.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===dy.TRANSLUCENT?r.pass=Be.TRANSLUCENT:c===dy.OPAQUE&&(r.pass=void 0);let u=$5e(s,t);if(!u.customShaderEnabled)return;if(i9e(i,s,u),u.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let A=Wp.getDefineName(s.mode);i.addDefine(A,void 0,pe.FRAGMENT)}let f=s.uniforms;for(let A in f)if(f.hasOwnProperty(A)){let g=f[A];i.addUniform(g.type,A)}let h=s.varyings;for(let A in h)if(h.hasOwnProperty(A)){let g=h[A];i.addVarying(g,A)}e.uniformMap=Tt(e.uniformMap,s.uniformMap)};function j5e(e){let t={};for(let n=0;n<e.length;n++){let i=Ot.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var Y5e={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},q5e={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function mue(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=Y5e[t],i=q5e[t];if(l(n))return{attributeField:[n,e],value:i}}function K5e(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Aue(t,n,!1),o=pue(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=mue(u);if(!l(f))return za._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function X5e(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function J5e(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Aue(t,n,!0),o=pue(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=mue(f);if(!l(h))return za._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=X5e(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var Z5e={positionWC:!0,positionEC:!0};function Aue(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function pue(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||Z5e.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function $5e(e,t){let n=j5e(t.attributes),i=K5e(e,n),o=J5e(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function e9e(e,t){let n=za.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,za.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=za.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,za.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,za.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,fy.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,ld.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,ld.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,ld.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=za.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,za.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function t9e(e,t){let n=za.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,za.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=za.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,za.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,za.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,fy.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,ld.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,ld.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,ld.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=za.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,za.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var n9e=[];function i9e(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=n9e;i.enabled&&(e9e(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,V1),e.addVertexLines(r)),o.enabled&&(t9e(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,H1),e.addFragmentLines(r))}var K1=za;var X1={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};X1.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(X1.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,X1.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===at.POSITION,h=c.semantic===at.TEXCOORD;if(r&&!f&&!h)continue;let A=Ot.getAttributeInfo(c);r9e(i,A),o9e(e,A)}};function o9e(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=gue(u,0),f=gue(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function gue(e,t){return e instanceof se?e:new se(e.x,e.y,e.z,t)}function r9e(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=s9e(n,i):o=a9e(n),e.addFunctionLines(X1.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function s9e(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function a9e(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var J1=X1;var Z1=`void geometryStage(out ProcessedAttributes attributes) +{ + attributes.positionMC = v_positionMC; + attributes.positionEC = v_positionEC; + + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) + attributes.positionWC = v_positionWC; + #endif + + #ifdef HAS_NORMALS + // renormalize after interpolation + attributes.normalEC = normalize(v_normalEC); + #endif + + #ifdef HAS_TANGENTS + attributes.tangentEC = normalize(v_tangentEC); + #endif + + #ifdef HAS_BITANGENTS + attributes.bitangentEC = normalize(v_bitangentEC); + #endif + + // Everything else is dynamically generated in GeometryPipelineStage + setDynamicVaryings(attributes); +} +`;var $1=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal) +{ + vec4 computedPosition; + + // Compute positions in different coordinate systems + vec3 positionMC = attributes.positionMC; + v_positionMC = positionMC; + v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz; + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + vec3 position2D = attributes.position2D; + vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz; + computedPosition = czm_projection * vec4(positionEC, 1.0); + #else + computedPosition = czm_projection * vec4(v_positionEC, 1.0); + #endif + + // Sometimes the custom shader and/or style needs this + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS) + // Note that this is a 32-bit position which may result in jitter on small + // scales. + v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + #endif + + #ifdef HAS_NORMALS + v_normalEC = normalize(normal * attributes.normalMC); + #endif + + #ifdef HAS_TANGENTS + v_tangentEC = normalize(normal * attributes.tangentMC); + #endif + + #ifdef HAS_BITANGENTS + v_bitangentEC = normalize(normal * attributes.bitangentMC); + #endif + + // All other varyings need to be dynamically generated in + // GeometryPipelineStage + setDynamicVaryings(attributes); + + return computedPosition; +} +`;var tT=`vec2 computeSt(float featureId) +{ + float stepX = model_textureStep.x; + float centerX = model_textureStep.y; + + #ifdef MULTILINE_BATCH_TEXTURE + float stepY = model_textureStep.z; + float centerY = model_textureStep.w; + + float xId = mod(featureId, model_textureDimensions.x); + float yId = floor(featureId / model_textureDimensions.x); + + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); + #else + return vec2(centerX + (featureId * stepX), 0.5); + #endif +} + +void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds) +{ + int featureId = featureIds.SELECTED_FEATURE_ID; + + + if (featureId < model_featuresLength) + { + vec2 featureSt = computeSt(float(featureId)); + + feature.id = featureId; + feature.st = featureSt; + feature.color = texture(model_batchTexture, featureSt); + } + // Floating point comparisons can be unreliable in GLSL, so we + // increment the feature ID to make sure it's always greater + // then the model_featuresLength - a condition we check for in the + // pick ID, to avoid sampling the pick texture if the feature ID is + // greater than the number of features. + else + { + feature.id = model_featuresLength + 1; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + + #ifdef HAS_NULL_FEATURE_ID + if (featureId == model_nullFeatureId) { + feature.id = featureId; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + #endif +} +`;var eN={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};eN.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=c9e(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),l9e(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(tT),i.addFragmentLines(tT)};function _ue(e){return e instanceof xn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function yue(e){return e instanceof xn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function c9e(e,t,n){let i,o;return l(t.instances)&&(o=Ot.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:yue(o),featureIdDefine:_ue(o)}):(o=Ot.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:yue(o),featureIdDefine:_ue(o)})}function l9e(e){e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var hy=eN;var pa={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};pa.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(hy.STRUCT_ID_SELECTED_FEATURE,hy.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(pa.FUNCTION_ID_INITIALIZE_ATTRIBUTES,pa.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,pa.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,pa.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===wr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=zt.getAttributeLocationCount(f.type),A=f.semantic===at.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):A&&!a?g=0:g=e.attributeIndex++,u9e(e,f,g,h,r,s)}y9e(i,t.attributes),t.primitiveType===Me.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines($1),i.addFragmentLines(Z1)};function u9e(e,t,n,i,o,r){let s=e.shaderBuilder,a=Ot.getAttributeInfo(t),c=o&&!r;i>1?h9e(e,t,n,i):d9e(e,t,n,c),A9e(s,a,c),m9e(s,a),l(t.semantic)&&f9e(s,t),p9e(s,a,o),g9e(s,a,c),_9e(s,a)}function f9e(e,t){let{semantic:n,setIndex:i}=t;switch(n){case at.NORMAL:e.addDefine("HAS_NORMALS");break;case at.TANGENT:e.addDefine("HAS_TANGENTS");break;case at.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case at.TEXCOORD:case at.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function d9e(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===at.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===at.POSITION,f=u?0:n,h=zt.getNumberOfComponents(a),A={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(A),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:q.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function h9e(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=zt.getNumberOfComponents(s)/i,f=q.getSizeInBytes(a),h=u*f,A=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,_={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:A,normalize:r};e.attributes.push(_)}}function m9e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function A9e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===at.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function p9e(e,t,n){let i=pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function g9e(e,t,n){let i=pa.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function _9e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function y9e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===at.NORMAL?n=!0:r.semantic===at.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var tN=pa;function my(e){if(e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??1,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1,this._projection=new zi(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new U(-i,-i),this._rectangleNortheastInMeters=new U(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(my.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});my.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};my.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};my.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};my.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};my.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new U(o.west,o.south)),a=r.unproject(new U(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};my.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),A=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=A/a|0;m>=o&&(m=o-1);let _=g/u|0;return _>=r&&(_=r-1),l(n)?(n.x=m,n.y=_,n):new U(m,_)};var Ts=my;var Nj,Cue="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",nT={};nT.defaultAccessToken=Cue;nT.defaultWorldImageryServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});nT.defaultWorldHillshadeServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});nT.defaultWorldOceanServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});nT.getDefaultTokenCredit=function(e){if(e===Cue){if(!l(Nj)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';Nj=new Bt(t,!0)}return Nj}};var Zu=nT;function Lj(e){e=e??V.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=we.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=oh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let A=u[f],g=A.x*4+A.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}Lj.prototype.isReady=function(){return this._isReady};Lj.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=oh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var nN=Lj;function Oj(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}Oj.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};Oj.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var Nh=Oj;function iT(){me.throwInstantiationError()}Object.defineProperties(iT.prototype,{rectangle:{get:me.throwInstantiationError},tileWidth:{get:me.throwInstantiationError},tileHeight:{get:me.throwInstantiationError},maximumLevel:{get:me.throwInstantiationError},minimumLevel:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},tileDiscardPolicy:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},proxy:{get:me.throwInstantiationError},hasAlphaChannel:{get:me.throwInstantiationError}});iT.prototype.getTileCredits=function(e,t,n){me.throwInstantiationError()};iT.prototype.requestImage=function(e,t,n,i){me.throwInstantiationError()};iT.prototype.pickFeatures=function(e,t,n,i,o){me.throwInstantiationError()};var C9e=/\.ktx2$/i;iT.loadImage=function(e,t){let n=we.createIfNeeded(t);return C9e.test(n.url)?$l(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Dl=iT;var E9e={SATELLITE:1,OCEANS:2,HILLSHADE:3},Lh=Object.freeze(E9e);function Eue(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new so({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Bt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}Eue.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new nN({missingImageUrl:Iue(e,0,0,this.maximumLevel).url,pixelsToCheck:[new U(0,0),new U(200,20),new U(20,200),new U(80,110),new U(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function I9e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new Ts({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new so({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new ce(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new zi,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new ce(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Bt(e.copyrightText)]:t.credit=new Bt(e.copyrightText))}function x9e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new ce(n)}async function b9e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();I9e(i,t)}catch(i){x9e(e,i)}}function $m(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new so({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new _e}$m.fromBasemapType=async function(e,t){t=t??V.EMPTY_OBJECT;let n,i,o;switch(e){case Lh.SATELLITE:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldImageryServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;case Lh.OCEANS:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldOceanServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;case Lh.HILLSHADE:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldHillshadeServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;default:}return $m.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function Iue(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Ui?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties($m.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});$m.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new $m(t);i._resource=n;let o=new Eue(t);return(t.usePreCachedTilesIfAvailable??!0)&&await b9e(n,o),o.build(i),i};$m.prototype.getTileCredits=function(e,t,n){return this._tileCredits};$m.prototype.requestImage=function(e,t,n,i){return Dl.loadImage(this,Iue(this,e,t,n,i))};$m.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Ui)s=D.toDegrees(i),a=D.toDegrees(o),c="4326";else{let A=this._tilingScheme.projection.project(new Ae(i,o,0));s=A.x,a=A.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(A){let g=[],m=A.results;if(!l(m))return g;for(let _=0;_<m.length;++_){let y=m[_],C=new Nh;if(C.data=y,C.name=y.value,C.properties=y.attributes,C.configureDescriptionFromProperties(y.attributes),y.geometryType==="esriGeometryPoint"&&y.geometry){let E=y.geometry.spatialReference&&y.geometry.spatialReference.wkid?y.geometry.spatialReference.wkid:4326;if(E===4326||E===4283)C.position=Ae.fromDegrees(y.geometry.x,y.geometry.y,y.geometry.z);else if(E===102100||E===900913||E===3857){let I=new zi;C.position=I.unproject(new d(y.geometry.x,y.geometry.y,y.geometry.z))}}g.push(C)}return g})};$m._metadataCache={};var jp=$m;function T9e(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=` +${o}`),t}var eA=T9e;function Yz(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=r??0,this.retry=!1,this.error=s}Yz.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new Yz(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${eA(i)}`),c};Yz.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var Qo=Yz;var S9e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},oT=Object.freeze(S9e);function iN(e){}iN.prototype.isReady=function(){return!0};iN.prototype.shouldDiscardImage=function(e){return iN.EMPTY_IMAGE===e};var qz;Object.defineProperties(iN,{EMPTY_IMAGE:{get:function(){return l(qz)||(qz=new Image,qz.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),qz}}});var rT=iN;function xue(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}xue.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof Bt)break;o.credit=new Bt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(D.toRadians(u[1]),D.toRadians(u[0]),D.toRadians(u[3]),D.toRadians(u[2]))}}};function w9e(e,t){if(e.resourceSets.length!==1)throw new ce("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>o.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function B9e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new ce(i)}async function D9e(e,t,n){let i=e.url,o=Ks._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Ks._metadataCache[i]=o);try{let r=await o;return w9e(r,t)}catch(r){B9e(e,r,n)}}function Ks(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??oT.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new rT),this._proxy=e.proxy,this._credit=new Bt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Ks.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new Ts({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new _e}Object.defineProperties(Ks.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Ks.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??oT.AERIAL,o=we.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Ks(t);a._resource=o;let c=new xue(t);return await D9e(s,c),c.build(a),a};var v9e=new ae;Ks.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,v9e);return M9e(this._attributionList,n,i)};Ks.prototype.requestImage=function(e,t,n,i){let o=Dl.loadImage(this,P9e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?rT.EMPTY_IMAGE:Promise.reject(r)})};Ks.prototype.pickFeatures=function(e,t,n,i,o){};Ks.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Ks.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Ks._logoUrl=void 0;Object.defineProperties(Ks,{logoUrl:{get:function(){return l(Ks._logoUrl)||(Ks._logoUrl=fn("Assets/Images/bing_maps_credit.png")),Ks._logoUrl},set:function(e){Ks._logoUrl=e}}});function P9e(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Ks.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var R9e=new ae;function M9e(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let A=ae.intersection(n,h.bbox,R9e);l(A)&&(c=!0)}}c&&i.push(s.credit)}return i}Ks._metadataCache={};var oN=Ks;var bue=/{[^}]+}/g,Tue={x:F9e,y:k9e,z:z9e,s:V9e,reverseX:Q9e,reverseY:U9e,reverseZ:G9e,westDegrees:H9e,southDegrees:W9e,eastDegrees:j9e,northDegrees:Y9e,westProjected:q9e,southProjected:K9e,eastProjected:X9e,northProjected:J9e,width:Z9e,height:$9e},N9e=Tt(Tue,{i:e6e,j:t6e,reverseI:n6e,reverseJ:i6e,longitudeDegrees:r6e,latitudeDegrees:s6e,longitudeProjected:a6e,latitudeProjected:c6e,format:u6e});function rN(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new Ts({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Bt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=Tt(Tue,r),a=Tt(N9e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(rN.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});rN.prototype.getTileCredits=function(e,t,n){};rN.prototype.requestImage=function(e,t,n,i){return Dl.loadImage(this,L9e(this,e,t,n,i))};rN.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=O9e(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var Kz=!1,$u=new ae,Xz=!1,sN=new ae;function L9e(e,t,n,i,o){Kz=!1,Xz=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(bue);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var Fj=!1,aT=new U,Qj=!1;function O9e(e,t,n,i,o,r,s){Kz=!1,Xz=!1,Fj=!1,Qj=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(bue);return l(h)&&h.forEach(function(A){let g=A.substring(1,A.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function cT(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function F9e(e,t,n,i){return cT(e,"{x}",t)}function Q9e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return cT(e,"{reverseX}",o)}function k9e(e,t,n,i){return cT(e,"{y}",n)}function U9e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return cT(e,"{reverseY}",o)}function G9e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return cT(e,"{reverseZ}",r)}function z9e(e,t,n,i){return cT(e,"{z}",i)}function V9e(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function Jz(e,t,n,i){Kz||(e.tilingScheme.tileXYToRectangle(t,n,i,$u),$u.west=D.toDegrees($u.west),$u.south=D.toDegrees($u.south),$u.east=D.toDegrees($u.east),$u.north=D.toDegrees($u.north),Kz=!0)}function H9e(e,t,n,i){return Jz(e,t,n,i),$u.west}function W9e(e,t,n,i){return Jz(e,t,n,i),$u.south}function j9e(e,t,n,i){return Jz(e,t,n,i),$u.east}function Y9e(e,t,n,i){return Jz(e,t,n,i),$u.north}function Zz(e,t,n,i){Xz||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,sN),Xz=!0)}function q9e(e,t,n,i){return Zz(e,t,n,i),sN.west}function K9e(e,t,n,i){return Zz(e,t,n,i),sN.south}function X9e(e,t,n,i){return Zz(e,t,n,i),sN.east}function J9e(e,t,n,i){return Zz(e,t,n,i),sN.north}function Z9e(e,t,n,i){return e.tileWidth}function $9e(e,t,n,i){return e.tileHeight}function e6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),aT.x}function t6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),aT.y}function n6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),e.tileWidth-aT.x-1}function i6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),e.tileHeight-aT.y-1}var o6e=new ae,sT=new d;function $z(e,t,n,i,o,r,s){if(Fj)return;kj(e,t,n,i,o,r);let a=sT,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,o6e);aT.x=e.tileWidth*(a.x-c.west)/c.width|0,aT.y=e.tileHeight*(c.north-a.y)/c.height|0,Fj=!0}function r6e(e,t,n,i,o,r,s){return D.toDegrees(o)}function s6e(e,t,n,i,o,r,s){return D.toDegrees(r)}function a6e(e,t,n,i,o,r,s){return kj(e,t,n,i,o,r),sT.x}function c6e(e,t,n,i,o,r,s){return kj(e,t,n,i,o,r),sT.y}var l6e=new Ae;function kj(e,t,n,i,o,r,s){if(!Qj){if(e.tilingScheme.projection instanceof Ui)sT.x=D.toDegrees(o),sT.y=D.toDegrees(r);else{let a=l6e;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,sT)}Qj=!0}}function u6e(e,t,n,i,o,r,s){return s}var Ac=rN;function ud(e){Ac.call(this,e)}ud._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return ud._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof Rm)return ud._metadataFailure(e,t);throw o}};ud.fromUrl=async function(e,t){let n=we.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=t??V.EMPTY_OBJECT;let r=await ud._requestMetadata(t,i,o);return new ud(r)};l(Object.create)&&(ud.prototype=Object.create(Ac.prototype),ud.prototype.constructor=ud);function Sue(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function wue(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}ud._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,A=[],g=e.childNodes[0].childNodes;for(let P=0;P<g.length;P++)if(r.test(g.item(P).nodeName))u=g.item(P);else if(a.test(g.item(P).nodeName)){h=g.item(P);let M=g.item(P).childNodes;for(let L=0;L<M.length;L++)s.test(M.item(L).nodeName)&&A.push(M.item(L))}else c.test(g.item(P).nodeName)&&(f=g.item(P));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&Qo.reportError(void 0,o,o.errorEvent,m),new ce(m);let _=t.fileExtension??u.getAttribute("extension"),y=t.tileWidth??parseInt(u.getAttribute("width"),10),C=t.tileHeight??parseInt(u.getAttribute("height"),10),E=t.minimumLevel??parseInt(A[0].getAttribute("order"),10),I=t.maximumLevel??parseInt(A[A.length-1].getAttribute("order"),10),b=h.getAttribute("profile"),S=t.tilingScheme;if(!l(S))if(b==="geodetic"||b==="global-geodetic")S=new so({ellipsoid:t.ellipsoid});else if(b==="mercator"||b==="global-mercator")S=new Ts({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${b}.`,l(o)&&Qo.reportError(void 0,o,o.errorEvent,m),new ce(m);let B=ae.clone(t.rectangle);if(!l(B)){let P,M,L,p;t.flipXY??!1?(L=new U(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),p=new U(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(L=new U(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),p=new U(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let T=b==="geodetic"||b==="mercator";if(S.projection instanceof Ui||T)P=Ae.fromDegrees(L.x,L.y),M=Ae.fromDegrees(p.x,p.y);else{let w=S.projection;P=w.unproject(L),M=w.unproject(p)}B=new ae(P.longitude,P.latitude,M.longitude,M.latitude)}return B=Sue(B,S),E=wue(S,B,E),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${_}`}),tilingScheme:S,rectangle:B,tileWidth:y,tileHeight:C,minimumLevel:E,maximumLevel:I,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};ud._metadataFailure=function(e,t){let n=e.fileExtension??"png",i=e.tileWidth??256,o=e.tileHeight??256,r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new Ts({ellipsoid:e.ellipsoid}),a=e.rectangle??s.rectangle;a=Sue(a,s);let c=wue(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var Ay=ud;function Bue(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}Bue.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function f6e(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new ce(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new ce(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new Ts({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new ce(o)}return!0}function d6e(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function h6e(e,t,n){try{let i=await e.fetchText();f6e(i,t)}catch(i){d6e(i,e,n)}}function fu(e){e=e??{},this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new Bt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${fu.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new _e}Object.defineProperties(fu.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});fu.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=we.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new Bue(n);s.channel=t,await h6e(r,s);let a=new fu(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};fu.prototype.getTileCredits=function(e,t,n){};fu.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Dl.loadImage(this,o)};fu.prototype.pickFeatures=function(e,t,n,i,o){};fu._logoUrl=void 0;Object.defineProperties(fu,{logoUrl:{get:function(){return l(fu._logoUrl)||(fu._logoUrl=fn("Assets/Images/google_earth_credit.png")),fu._logoUrl},set:function(e){fu._logoUrl=e}}});var aN=fu;var m6e=/\/$/,Due=new Bt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function lT(e){e=e??V.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();m6e.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Bt(s))):s=Due,this._resource=i,this._imageryProvider=new Ac({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(lT.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});lT.prototype.getTileCredits=function(e,t,n){};lT.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};lT.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};lT._defaultCredit=Due;var cN=lT;function a0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??ae.MAX_VALUE,n=new so({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new _e;let i=e.credit;typeof i=="string"&&(i=new Bt(i)),this._credit=i;let o=we.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(a0.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function A6e(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=Qo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return Uj(e,n,r);throw l(n)&&(n._hasError=!0),new ce(o)}async function Uj(e,t,n){try{return await Dl.loadImage(null,e)}catch(i){return A6e(e,i,t,n)}}a0.fromUrl=async function(e,t){let n=we.createIfNeeded(e),i=await Uj(n);t=t??V.EMPTY_OBJECT;let o=new a0({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};a0.prototype.getTileCredits=function(e,t,n){};a0.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await Uj(this._resource,this);return this._image=o,Qo.reportSuccess(this._errorEvent),o}return this._image};a0.prototype.pickFeatures=function(e,t,n,i,o){};var lN=a0;function p6e(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=g6e:e==="xml"?n=E6e:(e==="html"||e==="text")&&(n=vue)),this.callback=n}function g6e(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new Nh;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=Ae.fromDegrees(s,a)}t.push(r)}return t}var Gj="http://www.mapinfo.com/mxp",_6e="http://www.esri.com/wms",y6e="http://www.opengis.net/wfs",C6e="http://www.opengis.net/gml";function E6e(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===Gj)return I6e(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===_6e)return x6e(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===y6e)return b6e(e);if(t.localName==="ServiceExceptionReport")throw new ce(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?T6e(e):S6e(e)}function I6e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(Gj,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(Gj,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),A=f.textContent.trim();s[h]=A}}let c=new Nh;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function x6e(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(eV(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(eV(a,i))}}return n}function b6e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(C6e,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};zj(r,s),t.push(eV(r,s))}return t}function T6e(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new ce("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};zj(s,a),t.push(eV(s,a))}}return t}function zj(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&zj(o,t)&&(t[o.localName]=o.textContent)}return n}function eV(e,t){let n=new Nh;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function S6e(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new Nh;return o.data=e,o.description=n.innerHTML,[o]}var w6e=/<body>\s*<\/body>/im,B6e=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,D6e=/<title>([\s\S]*)<\/title>/im;function vue(e){if(w6e.test(e)||B6e.test(e))return;let t,n=D6e.exec(e);n&&n.length>1&&(t=n[1]);let i=new Nh;return i.name=t,i.description=e,i.data=e,[i]}var c0=p6e;function uN(e){e=e??V.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(uN.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});uN.prototype.getFromCache=function(e,t,n,i){let o=Pue(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};uN.prototype.checkApproachingInterval=function(e,t,n,i){let o=Pue(e,t,n),r=this._tilesRequestedForInterval,s=Rue(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Mue(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};uN.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=Rue(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Mue(this,c,r),a||s.push(c)}}};function Pue(e,t,n){return`${e}-${t}-${n}`}function v6e(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function Rue(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=K.secondsDifference(c.stop,i),++a):(s=K.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Mue(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=v6e(s),c=new sr({throttle:!1,throttleByServer:!0,type:Ms.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var l0=uN;var P6e=[3034,3035,3042,3043,3044],R6e=[4471,4559];function Oh(e){if(e=e??V.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new me("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Oh.DefaultParameters,!0),n.setQueryParameters(Oh.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(Nue(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(Nue(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new l0({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return Lue(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof zi?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!R6e.includes(a)||P6e.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof zi?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new Ac({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new so({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Oh.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function Lue(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function M6e(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Oh.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Oh.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Oh.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Lue(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Oh.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return M6e(this,e,t,n,i,o,s)};Oh.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Oh.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Oh.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new c0("json","application/json")),Object.freeze(new c0("xml","text/xml")),Object.freeze(new c0("text","text/html"))]);function Nue(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var fN=Oh;var N6e=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function dN(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=we.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(N6e),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new Ts({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new l0({clock:e.clock,times:e.times,requestImageFunction:function(h,A,g,m,_){return Oue(s,h,A,g,m,_)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new _e;let f=e.credit;this._credit=typeof f=="string"?new Bt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function Oue(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,A;if(!e._useKvp)A={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(A),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=Tt(g,u)),l(f)&&(g=Tt(g,f)),A={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(A)}return Dl.loadImage(e,h)}Object.defineProperties(dN.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});dN.prototype.getTileCredits=function(e,t,n){};dN.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Oue(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};dN.prototype.pickFeatures=function(e,t,n,i,o){};var hN=dN;var L6e={ARCGIS_MAPSERVER:jp.fromUrl,BING:async(e,t)=>oN.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,aN.fromUrl(e,n,t)},MAPBOX:(e,t)=>new cN({url:e,...t}),SINGLE_TILE:lN.fromUrl,TMS:Ay.fromUrl,URL_TEMPLATE:(e,t)=>new Ac({url:e,...t}),WMS:(e,t)=>new fN({url:e,...t}),WMTS:(e,t)=>new hN({url:e,...t})};function tA(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new _e}Object.defineProperties(tA.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});tA.fromAssetId=async function(e,t){t=t??V.EMPTY_OBJECT;let n=Hu._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=tA._endpointCache[i];l(o)||(o=n.fetchJson(),tA._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new ce(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await Ay.fromUrl(new Hu(r,n));else{let u=L6e[a];if(!l(u))throw new ce(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new tA(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=Hu.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};tA.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};tA.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};tA.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};tA._endpointCache={};var Yp=tA;var O6e={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},qp=Object.freeze(O6e);function F6e(e){e=e??V.EMPTY_OBJECT;let t=e.style??qp.AERIAL;return Yp.fromAssetId(t)}var Kp=F6e;function vl(){me.throwInstantiationError()}Object.defineProperties(vl.prototype,{errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},hasWaterMask:{get:me.throwInstantiationError},hasVertexNormals:{get:me.throwInstantiationError},availability:{get:me.throwInstantiationError}});var Fue=[];vl.getRegularGridIndices=function(e,t){let n=Fue[e];l(n)||(Fue[e]=n=[]);let i=n[t];return l(i)||(e*t<D.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),Gue(e,t,i,0)),i};var Que=[];vl.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=Que[e];l(n)||(Que[e]=n=[]);let i=n[t];if(!l(i)){let o=vl.getRegularGridIndices(e,t),r=Uue(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var kue=[];vl.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=kue[e];l(n)||(kue[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=Uue(e,t),h=f.westIndicesSouthToNorth,A=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,_=Oe.createTypedArray(c,u);Gue(e,t,_,0),vl.addSkirtIndices(h,A,g,m,o,_,r),i=n[t]={indices:_,westIndicesSouthToNorth:h,southIndicesEastToWest:A,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};vl.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=tV(e,a,r,s),a+=e.length,s=tV(t,a,r,s),a+=t.length,s=tV(n,a,r,s),a+=n.length,tV(i,a,r,s)};function Uue(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function Gue(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function tV(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}vl.heightmapTerrainQuality=.25;vl.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*vl.heightmapTerrainQuality/(t*n)};vl.prototype.requestTileGeometry=me.throwInstantiationError;vl.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;vl.prototype.getTileDataAvailable=me.throwInstantiationError;vl.prototype.loadTileDataAvailability=me.throwInstantiationError;var Ss=vl;var mN=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var AN=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var Q6e={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},qn=Object.freeze(Q6e);function uT(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=qn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}uT.createPlaceholder=function(e){let t=new uT(e,0,0,0);return t.addReference(),t.state=qn.PLACEHOLDER,t};uT.prototype.addReference=function(){++this.referenceCount};uT.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};uT.prototype.processStateMachine=function(e,t,n){this.state===qn.UNLOADED&&!n&&(this.state=qn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===qn.RECEIVED&&(this.state=qn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===qn.READY&&t&&!this.texture;(this.state===qn.TEXTURE_LOADED||i)&&(this.state=qn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var fT=uT;function Vj(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}Vj.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};Vj.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===qn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==qn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==qn.FAILED&&r.state!==qn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===qn.FAILED||i.state===qn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var dT=Vj;function Ni(e,t){this._imageryProvider=e,this._readyEvent=new _e,this._errorEvent=new _e,t=t??V.EMPTY_OBJECT,e=e??V.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Ni.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Ni.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Ni.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Ni.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Ni.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Ni.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Ni.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Ni.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??ae.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new dT(fT.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Ni.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Ni.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Ni.DEFAULT_BRIGHTNESS=1;Ni.DEFAULT_CONTRAST=1;Ni.DEFAULT_HUE=0;Ni.DEFAULT_SATURATION=1;Ni.DEFAULT_GAMMA=1;Ni.DEFAULT_SPLIT=br.NONE;Ni.DEFAULT_MINIFICATION_FILTER=Zt.LINEAR;Ni.DEFAULT_MAGNIFICATION_FILTER=mi.LINEAR;Ni.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Ni.fromProviderAsync=function(e,t){let n=new Ni(void 0,t);return V6e(n,Promise.resolve(e)),n};Ni.fromWorldImagery=function(e){return e=e??V.EMPTY_OBJECT,Ni.fromProviderAsync(Kp({style:e.style}),e)};Ni.prototype.isBaseLayer=function(){return this._isBaseLayer};Ni.prototype.isDestroyed=function(){return!1};Ni.prototype.destroy=function(){return ue(this)};var Hue=new ae,zue=new ae,Hj=new ae,Wue=new ae;Ni.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};Ni.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof zi&&e.rectangle.north<zi.MaximumLatitude&&e.rectangle.south>-zi.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Hue),a=ae.intersection(e.rectangle,s,zue);if(!l(a)){if(!this.isBaseLayer())return!1;let T=s,w=e.rectangle;a=zue,w.south>=T.north?a.north=a.south=T.north:w.north<=T.south?a.north=a.south=T.south:(a.south=Math.max(w.south,T.south),a.north=Math.min(w.north,T.north)),w.west>=T.east?a.west=a.east=T.east:w.east<=T.west?a.west=a.east=T.west:(a.west=Math.max(w.west,T.west),a.east=Math.min(w.east,T.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=G6e(this,f,c);h=Math.max(0,h);let A=o.maximumLevel;if(h>A&&(h=A),l(o.minimumLevel)){let T=o.minimumLevel;h<T&&(h=T)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),_=g.positionToTileXY(ae.southeast(a),h),y=e.rectangle.width/512,C=e.rectangle.height/512,E=g.tileXYToRectangle(m.x,m.y,h);Math.abs(E.south-e.rectangle.north)<C&&m.y<_.y&&++m.y,Math.abs(E.east-e.rectangle.west)<y&&m.x<_.x&&++m.x;let I=g.tileXYToRectangle(_.x,_.y,h);Math.abs(I.north-e.rectangle.south)<C&&_.y>m.y&&--_.y,Math.abs(I.west-e.rectangle.east)<y&&_.x>m.x&&--_.x;let b=ae.clone(e.rectangle,Wue),S=g.tileXYToRectangle(m.x,m.y,h),B=ae.intersection(S,s,Hj),v;r?(g.rectangleToNativeRectangle(b,b),g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(B,B),g.rectangleToNativeRectangle(s,s),v=g.tileXYToNativeRectangle.bind(g),y=b.width/512,C=b.height/512):v=g.tileXYToRectangle.bind(g);let P,M=0,L=1,p;!this.isBaseLayer()&&Math.abs(B.west-b.west)>=y&&(M=Math.min(1,(B.west-b.west)/b.width)),!this.isBaseLayer()&&Math.abs(B.north-b.north)>=C&&(L=Math.max(0,(B.north-b.south)/b.height));let x=L;for(let T=m.x;T<=_.x;T++)if(P=M,S=v(T,m.y,h),B=ae.simpleIntersection(S,s,Hj),!!l(B)){M=Math.min(1,(B.east-b.west)/b.width),T===_.x&&(this.isBaseLayer()||Math.abs(B.east-b.east)<y)&&(M=1),L=x;for(let w=m.y;w<=_.y;w++){if(p=L,S=v(T,w,h),B=ae.simpleIntersection(S,s,Hj),!l(B))continue;L=Math.max(0,(B.south-b.south)/b.height),w===_.y&&(this.isBaseLayer()||Math.abs(B.south-b.south)<C)&&(L=0);let R=new se(P,L,M,p),O=this.getImageryFromCache(T,w,h);i.imagery.splice(n,0,new dT(O,R,r)),++n}}return!0};Ni.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Hue),i=c.rectangleToNativeRectangle(i,Wue)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new se(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Ni.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=qn.RECEIVED,e.request=void 0,Qo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===fi.CANCELLED){e.state=qn.UNLOADED,e.request=void 0;return}e.state=qn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=Qo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new sr({throttle:!1,throttleByServer:!0,type:Ms.IMAGERY});e.request=s,e.state=qn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=qn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Ni.prototype._createTextureWebGL=function(e,t){let n=new on({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Mt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Mt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?$e.RGBA:$e.RGB,sampler:n})};Ni.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=qn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=qn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof zi?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=qn.TEXTURE_LOADED};function Vue(e,t,n){return`${e}:${t}:${n}`}Ni.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===Zt.LINEAR&&i===mi.LINEAR&&!$e.isCompressedFormat(t.pixelFormat)&&D.isPowerOfTwo(t.width)&&D.isPowerOfTwo(t.height)){n=Zt.LINEAR_MIPMAP_LINEAR;let r=Yt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Vue(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Kf.NICEST),t.sampler=u}else{let r=Vue(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Ni.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Ui)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Tl({persists:!0,owner:this,preExecute:function(c){U6e(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=qn.READY,t.releaseReference()},canceled:function(){t.state=qn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=qn.READY};Ni.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Ni.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Ni.prototype.getImageryFromCache=function(e,t,n,i){let o=jue(e,t,n),r=this._imageryCache[o];return l(r)||(r=new fT(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Ni.prototype.removeImageryFromCache=function(e){let t=jue(e.x,e.y,e.level);delete this._imageryCache[t]};function jue(e,t,n){return JSON.stringify([e,t,n])}var nV={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new U,texture:void 0},k6e=Wt.supportsTypedArrays()?new Float32Array(128):void 0;function U6e(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let y=new Float32Array(256),C=0;for(let B=0;B<64;++B){let v=B/63;y[C++]=0,y[C++]=v,y[C++]=1,y[C++]=v}let E={position:0,webMercatorT:1},I=Ss.getRegularGridIndices(2,64),b=Ct.createIndexBuffer({context:t,typedArray:I,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});o.vertexArray=new li({context:t,attributes:[{index:E.position,vertexBuffer:Ct.createVertexBuffer({context:t,typedArray:y,usage:Qe.STATIC_DRAW}),componentsPerAttribute:2},{index:E.webMercatorT,vertexBuffer:Ct.createVertexBuffer({context:t,sizeInBytes:512,usage:Qe.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:b});let S=new He({sources:[AN]});o.shaderProgram=an.fromCache({context:t,vertexShaderSource:S,fragmentShaderSource:mN,attributeLocations:E}),o.sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;nV.textureDimensions.x=r,nV.textureDimensions.y=s,nV.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Mt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});D.isPowerOfTwo(r)&&D.isPowerOfTwo(s)&&h.generateMipmap(Kf.NICEST);let A=i.south,g=i.north,m=k6e,_=0;for(let y=0;y<64;++y){let C=y/63,E=D.lerp(A,g,C);a=Math.sin(E);let b=(.5*Math.log((1+a)/(1-a))-c)*f;m[_++]=b,m[_++]=b}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=nV,e.vertexArray=o.vertexArray}function G6e(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Ui?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function z6e(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function V6e(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){z6e(e._errorEvent,i)}}var rs=Ni;var Wj=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},pN=Wj;var jj=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},hT=jj;var H6e=new ae,Yue=new ae,W6e=new ae,j6e=new ae,Y6e=new ae,q6e=new ae,Yj=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=ae.intersection(o.rectangle,n.rectangle,H6e),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),u=j6e;a.rectangleToNativeRectangle(t,u);let f=Y6e;a.rectangleToNativeRectangle(s,f);let h=(g,m,_)=>{let y=a.tileXYToRectangle(g,m,_),C=ae.intersection(y,s,W6e);if(!l(C))return;let E=q6e;return a.rectangleToNativeRectangle(C,E),E};return e._computeImageryCoverages(n,c,r,u,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(ae.northwest(r),o),a=i.positionToTileXY(ae.southeast(r),o),c=new hT;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let u=t.width/512,f=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<f&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<u&&c.minX<c.maxX&&++c.minX;let m=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(m.north-t.south)<f&&c.maxY>c.minY&&--c.maxY,Math.abs(m.west-t.east)<u&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new ae),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=ae.intersection(t,n,Yue);return l(i)?i:e._clampRectangle(t,n,Yue)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let u=n.minY;u<=n.maxY;u++){let f=r(a,u,i);if(!l(f))continue;let h=e._localizeToCartesianRectangle(f,o,void 0),A=t.getImageryFromCache(a,u,i),g=new e(a,u,i,h,A);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new hT);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},mT=Yj;var qj=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=On.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=zt.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,u=t.byteOffset,f=t.byteStride,h=q.getSizeInBytes(s),A=o*h;if(!l(f)||f===A){let I=q.createTypedArray(s,r);return c.getBufferData(I,u),I}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let m=q.createTypedArray(s,r),_=f??A,y=new DataView(g.buffer,g.byteOffset,g.byteLength),C=new Array(o),E=e.createComponentsReader(s);for(let I=0;I<i;++I){let b=u+I*_;E(y,b,o,C);for(let S=0;S<o;++S)m[I*o+S]=C[S]}return m}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===zt.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===zt.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===zt.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===zt.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new me(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new d;for(let s=0;s<n;s++)d.unpack(t,s*3,r),On.octDecodeInRange(r,i,r),d.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new U;for(let a=0;a<n;a++)U.unpack(t,a*2,s),U.multiplyComponents(s,i,s),U.add(s,o,s),U.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new d;for(let a=0;a<n;a++)d.unpack(t,a*3,s),d.multiplyComponents(s,i,s),d.add(s,o,s),d.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new se;for(let a=0;a<n;a++)se.unpack(t,a*4,s),se.multiplyComponents(s,i,s),se.add(s,o,s),se.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=q.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let u=0;u<s;++u)a[u]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case q.BYTE:return function(n,i){return n.getInt8(i)};case q.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case q.SHORT:return function(n,i){return n.getInt16(i,!0)};case q.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case q.INT:return function(n,i){return n.getInt32(i,!0)};case q.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case q.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case q.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new me(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new d,r=t.length/3;for(let s=0;s<r;s++)d.unpack(t,s*3,o),N.multiplyByPoint(n,o,o),d.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===Me.TRIANGLES)return i;if(n===Me.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===Me.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new me(`The primitiveType must be TRIANGLES (${Me.TRIANGLES}, TRIANGLE_STRIP (${Me.TRIANGLE_STRIP}, or TRIANGLE_FAN (${Me.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Oe.UNSIGNED_BYTE:return new Uint8Array(n);case Oe.UNSIGNED_SHORT:return new Uint16Array(n);case Oe.UNSIGNED_INT:return new Uint32Array(n)}throw new me(`The indexDatatype must be UNSIGNED_BYTE (${Oe.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Oe.UNSIGNED_SHORT}, or UNSIGNED_INT (${Oe.UNSIGNED_INT}, but is ${t}`)}},gN=qj;var Kj=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Ye;Ye.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=gN.readAttributeAsTypedArray(t),r=t.type,s=zt.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new d,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new ae);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new d;return e.map(t,r=>(N.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new Ae;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new d;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new U,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,u=(a.y-n.y)*r,f=Math.min(Math.max(c,0),1),h=Math.min(Math.max(u,0),1);return i.x=f,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:at.TEXCOORD,setIndex:0,componentDatatype:q.FLOAT,type:zt.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new U(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},u0=Kj;var Xj=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},_N=Xj;var Jj=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new N,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new me("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new me("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=Ct.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!N.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=u0.createCartographicPositions(o,s,h),g=u0.computeCartographicBoundingRectangle(A),m=new _N(A,r,g,h);a.push(m)}return N.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=u0.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return mT.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let u=Math.log2(s*c/a);return mT._clampImageryLevel(i,u)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let u=0;u<c;u++){let h=a[u].imagery;h.state===qn.READY||h.state===qn.FAILED||h.state===qn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new me("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new me(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new me("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),ue(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new N);let o=t.sceneGraph;return N.clone(N.IDENTITY,i),N.multiply(i,t.modelMatrix,i),N.multiply(i,o.components.transform,i),N.multiply(i,o.axisCorrectionMatrix,i),N.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Ot.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new me("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},f0=Jj;var Zj=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},yN=Zj;var K6e=!1,X6e=new ae,J6e=new ae,$j=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=f0._extractProjections(s),c=[...new Set(a)],u=e._computeIndexMapping(a,c),f=e._createImageryInputs(s,r,u);if(f.length===0)return;f.length>10&&(yt("imagery-texture-units",`Warning: Draped imagery requires ${f.length} texture units, truncating`),f.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let A=0;A<s.length;A++)h.push(s.get(A));e._processImageryInputs(h,t,f,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=zt.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,u=e._createImageryUniforms(i);e._setImageryUniforms(c,u)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,pe.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new pN;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==rs.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==rs.DEFAULT_CONTRAST,n.hue|=o.hue!==rs.DEFAULT_HUE,n.saturation|=o.saturation!==rs.DEFAULT_SATURATION,n.gamma|=o.gamma!==rs.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,pe.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),K6e&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",pe.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,u=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=u,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let f=i.imageryTextureColorToAlpha[o];if(l(f)||(f=new se,i.imageryTextureColorToAlpha[o]=f),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let A=s.colorToAlpha;f.x=A.red,f.y=A.green,f.z=A.blue,f.w=s.colorToAlphaThreshold}else f.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],u=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,f=n.coveragesForImageryLayer(s);for(let h=0;h<f.length;h++){let A=f[h],g=e._createImageryInput(s,A,u,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===qn.FAILED||r.state===qn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===qn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,u=new se(c.minX,c.minY,c.maxX,c.maxY);return new yN(t,s,a,u,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,X6e),s=o.rectangleToNativeRectangle(i,J6e);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,u=t.width*i,f=t.height*o;return new se(a,c,u,f)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},CN=$j;var EN=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var Z6e={UNLIT:0,PBR:1},nA=Object.freeze(Z6e);var que={name:"LightingPipelineStage"};que.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===nA.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(EN)};var IN=que;var xN=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:$6e,MetallicRoughness:eY,SpecularGlossiness:tY,Specular:Kue,Clearcoat:Xue}=xn,Jue={name:"MaterialPipelineStage",_processTexture:du,_processTextureTransform:Zue};Jue.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;tWe(i,r,s,u,f,h,c),l(i.specularGlossiness)?nWe(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Ot.supportedExtensions.KHR_materials_specular&&iWe(i.specular,r,s,u,c),l(i.anisotropy)&&Ot.supportedExtensions.KHR_materials_anisotropy&&rWe(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Ot.supportedExtensions.KHR_materials_clearcoat&&sWe(i.clearcoat,r,s,u,c),aWe(i.metallicRoughness,r,s,u,c));let A=Ot.getAttributeBySemantic(t,at.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,m=e.lightingOptions;i.unlit||!A||a||g?m.lightingModel=nA.UNLIT:m.lightingModel=nA.PBR;let _=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=_;let y=e.alphaOptions;i.alphaMode===Xm.BLEND?y.pass=Be.TRANSLUCENT:i.alphaMode===Xm.MASK&&(y.alphaCutoff=i.alphaCutoff),s.addFragmentLines(xN),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function Zue(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function eWe(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function du(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!J.equals(f,J.IDENTITY)&&Zue(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&eWe(e,t,n,i,o)}function tWe(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,$6e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&du(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&du(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&du(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function nWe(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&du(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!se.equals(s,tY.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&du(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,tY.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==tY.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function iWe(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&du(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==Kue.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&du(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,Kue.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var oWe=new d;function rWe(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&du(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,oWe)}}function sWe(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==Xue.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&du(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==Xue.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&du(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&du(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function aWe(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&du(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!se.equals(s,eY.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&du(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==eY.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==eY.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var bN=Jue;var Pl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};Pl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(Pl.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${Pl.METADATA_PICKING_VALUE_TYPE} value = ${Pl.METADATA_PICKING_VALUE_TYPE}(${Pl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${Pl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${Pl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${Pl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${Pl.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var ef=Pl;var TN=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var pc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};pc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),hWe(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],A=h.semantic;A!==at.POSITION&&A!==at.NORMAL&&A!==at.TANGENT||(lWe(e,h,e.attributeIndex,a),e.attributeIndex++)}}mWe(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(TN);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=Tt(s,e.uniformMap)};var cWe={attributeString:void 0,functionId:void 0};function lWe(e,t,n,i){let o=e.shaderBuilder;uWe(e,t,n);let r=fWe(t,cWe);dWe(o,r,i)}function uWe(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:zt.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function fWe(e,t){switch(e.semantic){case at.POSITION:t.attributeString="Position",t.functionId=pc.FUNCTION_ID_GET_MORPHED_POSITION;break;case at.NORMAL:t.attributeString="Normal",t.functionId=pc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case at.TANGENT:t.attributeString="Tangent",t.functionId=pc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function dWe(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function hWe(e){e.addFunction(pc.FUNCTION_ID_GET_MORPHED_POSITION,pc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(pc.FUNCTION_ID_GET_MORPHED_NORMAL,pc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(pc.FUNCTION_ID_GET_MORPHED_TANGENT,pc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function mWe(e){e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var SN=pc;var $ue={name:"PickingPipelineStage"};$ue.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)AWe(e,t,a,i);else if(l(a))pWe(e,i);else{let c=efe(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function efe(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(wr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function AWe(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Ot.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Ot.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return f.pickTexture??f.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function pWe(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let A=efe(e,h),g=t.createPickId(A);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=G.floatToByte(m.red),o[h*4+1]=G.floatToByte(m.green),o[h*4+2]=G.floatToByte(m.blue),o[h*4+3]=G.floatToByte(m.alpha)}r._pickIds=i;let a=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var wN=$ue;var gWe={ADD:0,REPLACE:1},tr=Object.freeze(gWe);var BN=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var _We=new se,nfe={name:"PointCloudStylingPipelineStage"};nfe.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let _=IWe(a),y=xWe(r,_);bWe(i,y);let E=TWe(y).indexOf("normalMC")>=0,I=Ot.getAttributeBySemantic(t,at.NORMAL);if(E&&!I)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),y.styleTranslucent&&(e.alphaOptions.pass=Be.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,A,g;wr.is3DTiles(o.type)&&(A=!0,h=o.content,g=h.tile.refine===tr.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(BN);let m=e.uniformMap;m.model_pointCloudParameters=function(){let _=_We,y=1;A&&(y=g?5:h.tileset.memoryAdjustedScreenSpaceError),_.x=f.maximumAttenuation??y,_.x*=n.pixelRatio;let C=yWe(e,t,f,h);_.y=C*f.geometricErrorScale;let E=n.context,I=n.camera.frustum,b;return n.mode===ie.SCENE2D||I instanceof An?b=Number.POSITIVE_INFINITY:b=E.drawingBufferHeight/n.camera.frustum.sseDenominator,_.z=b,A&&(_.w=h.tileset.timeSinceLoad),_}};var tfe=new d;function yWe(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Ot.getAttributeBySemantic(t,at.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,tfe);a=N.multiplyByPointAsVector(s,a,tfe);let c=a.x*a.y*a.z;return D.cbrt(c/r)}var CWe={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},EWe={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function IWe(e){let t=ze(EWe);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var nY="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function xWe(e,t){let n=CWe,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${nY})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${nY})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${nY})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function bWe(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function iY(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function TWe(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&iY(t,o),l(n)&&iY(n,o),l(i)&&iY(i,o),o}var DN=nfe;var vN=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var PN=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var ife={name:"PrimitiveOutlinePipelineStage"};ife.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:zt.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=n0.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(vN),i.addFragmentLines(PN)};var RN=ife;var ofe={name:"PrimitiveStatisticsPipelineStage",_countGeometry:rfe,_count2DPositions:sfe,_countMorphTargetAttributes:afe,_countMaterialTextures:cfe,_countFeatureIdTextures:lfe,_countBinaryMetadata:ufe};ofe.process=function(e,t,n){let i=e.model,o=i.statistics;rfe(o,t),sfe(o,e.runtimePrimitive),afe(o,t),cfe(o,t.material),lfe(o,t.featureIds),ufe(o,i)};function rfe(e,t){let n=l(t.indices)?t.indices.count:Ot.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Me.POINTS?e.pointsLength+=n:Me.isTriangles(i)&&(e.trianglesLength+=SWe(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function SWe(e,t){switch(e){case Me.TRIANGLES:return t/3;case Me.TRIANGLE_STRIP:case Me.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function sfe(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function afe(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function cfe(e,t){let n=wWe(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function wWe(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function lfe(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof xn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function ufe(e,t){let n=t.structuralMetadata;l(n)&&(BWe(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function BWe(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var MN=ofe;var DWe=new N,vWe=new N,ffe={name:"SceneMode2DPipelineStage"};ffe.process=function(e,t,n){let i=Ot.getAttributeBySemantic(t,at.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=N.multiplyTransformation(s,a,DWe),u=MWe(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let _=OWe(i,c,u,n);f.positionBuffer2D=_,r._modelResources.push(_),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let A=N.fromTranslation(u.center,new N),g=n.context,m={u_modelView2D:function(){return N.multiplyTransformation(g.uniformState.view,A,vWe)}};e.uniformMap=Tt(m,e.uniformMap)};var PWe=new d,RWe=new d;function MWe(e,t,n){let i=N.multiplyByPoint(t,e.positionMin,PWe),o=eo.computeActualEllipsoidPosition(n,i,i),r=N.multiplyByPoint(t,e.positionMax,RWe),s=eo.computeActualEllipsoidPosition(n,r,r);return le.fromCornerPoints(o,s,new le)}var dfe=new d;function NWe(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,dfe),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function LWe(e,t,n,i){let o;l(e.quantization)?o=NWe(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,dfe);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=N.multiplyByPoint(t,u,u),h=eo.computeActualEllipsoidPosition(i,f,f),A=d.subtract(h,n,h);o[c]=A.x,o[c+1]=A.y,o[c+2]=A.z}return o}function OWe(e,t,n,i){let o=ze(i);o.mode=ie.COLUMBUS_VIEW;let r=n.center,s=LWe(e,t,r,o),a=Ct.createVertexBuffer({context:i.context,typedArray:s,usage:Qe.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var NN=ffe;var LN=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var d0={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};d0.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),QWe(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(LN);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=Tt(r,e.uniformMap)};function FWe(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===at.JOINTS||r.semantic===at.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function QWe(e,t){e.addFunction(d0.FUNCTION_ID_GET_SKINNING_MATRIX,d0.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=FWe(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var ON=d0;var FN=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var hfe={name:"VerticalExaggerationPipelineStage"},kWe=new U;hfe.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(FN),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return U.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,kWe)}};var QN=hfe;var oY={};function UWe(e){let t=Oe.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function GWe(e,t){let n=t.length,i=Oe.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function zWe(e){let t=e-2,n=2+t*4,i=Oe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function VWe(e,t){let i=t.length-2,o=2+i*4,r=Oe.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function HWe(e){let t=e-2,n=2+t*4,i=Oe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function WWe(e,t){let i=t.length-2,o=2+i*4,r=Oe.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}oY.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Me.TRIANGLES)return i?GWe(t,n):UWe(t);if(e===Me.TRIANGLE_STRIP)return i?VWe(t,n):zWe(t);if(e===Me.TRIANGLE_FAN)return i?WWe(t,n):HWe(t)};oY.getWireframeIndicesCount=function(e,t){return e===Me.TRIANGLES?t*2:e===Me.TRIANGLE_STRIP||e===Me.TRIANGLE_FAN?2+(t-2)*4:t};var AT=oY;var mfe={name:"WireframePipelineStage"};mfe.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=jWe(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Me.LINES,e.count=AT.getWireframeIndicesCount(a,c)};function jWe(e,t,n){let o=Ot.getAttributeBySemantic(e,at.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Oe.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=AT.createWireframeIndices(a,o,s),u=Oe.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Ct.createIndexBuffer({context:n.context,typedArray:c,usage:Qe.STATIC_DRAW,indexDatatype:u})}var kN=mfe;function Afe(e){e=e??V.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Afe.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,u=e.mode!==ie.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,A=l(i.skin),g=l(o.imageryLayers),m=l(r),y=!(m&&l(r.fragmentShaderText))||r.mode!==Wp.REPLACE_MATERIAL,C=Ot.hasQuantizedAttributes(n.attributes),E=o.debugWireframe&&Me.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),I=o.pointCloudShading,b=l(I)&&I.attenuation,S=l(I)&&I.backFaceCulling,B=n.primitiveType===Me.POINTS&&(l(s)||b||S),v=o._enableShowOutline&&l(n.outlineCoordinates),P=YWe(o,i,n),M=l(o.classificationType);u&&t.push(NN),t.push(tN),E&&t.push(kN),M&&t.push(k1),h&&t.push(SN),A&&t.push(ON),B&&t.push(DN),C&&t.push(J1),g&&(v?yt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(CN)),y&&t.push(bN),t.push(fy),t.push(ld),t.push(ef),P.hasPropertyTable&&(t.push(hy),t.push(Q1),t.push(z1)),f&&t.push(QN),m&&t.push(K1),t.push(IN),o.allowPicking&&t.push(wN),v&&t.push(RN),t.push(F1),t.push(MN)};function YWe(e,t,n){let i;return l(t.instances)&&(i=Ot.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Ot.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var UN=Afe;function rY(e){e=e??V.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],qWe(this)}Object.defineProperties(rY.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function qWe(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],A=pfe(f,h,new N);a.push(A)}}function pfe(e,t,n){let i=N.multiplyTransformation(e.transformToRoot,e.transform,n);return n=N.multiplyTransformation(i,t,n),n}rY.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=pfe(i,o,e[n])}};var GN=rY;function KWe(){this.pass=void 0,this.alphaCutoff=void 0}var h0=KWe;function sY(e){this.name=e,this.fields=[]}sY.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};sY.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var zN=sY;function aY(e){this.signature=e,this.body=[]}aY.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};aY.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var VN=aY;function Rl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(Rl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});Rl.prototype.addDefine=function(e,t,n){n=n??pe.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};Rl.prototype.addStruct=function(e,t,n){this._structs[e]=new zN(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};Rl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};Rl.prototype.addFunction=function(e,t,n){this._functions[e]=new VN(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};Rl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};Rl.prototype.addUniform=function(e,t,n){n=n??pe.BOTH;let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};Rl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};Rl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=JWe(e),i};Rl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};Rl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};Rl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};Rl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=XWe(this),i=ZWe(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new He({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new He({defines:this._fragmentShaderParts.defineLines,sources:[s]});return an.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};Rl.prototype.clone=function(){return ze(this,!0)};function XWe(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}function JWe(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function ZWe(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}var Xp=Rl;function $We(e){this.shaderBuilder=new Xp,this.model=e,this.uniformMap={},this.alphaOptions=new h0,this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var HN=$We;var WN=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var jN=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var iV={name:"ModelSilhouettePipelineStage"};iV.silhouettesLength=0;iV.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++iV.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(jN),i.addFragmentLines(WN),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=Tt(o,e.uniformMap),e.hasSilhouette=!0};var YN=iV;var qN=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var oV={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};oV.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(qN);let o={};i.addUniform("float",oV.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[oV.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=Tt(o,e.uniformMap)};var KN=oV;function eje(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var XN=eje;function tje(e){e=e??V.EMPTY_OBJECT,this.lightingModel=e.lightingModel??nA.UNLIT}var JN=tje;function nje(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Ot.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Ot.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=le.fromCornerPoints(this.positionMin,this.positionMax,new le),this.lightingOptions=new JN,this.pickId=void 0}var ZN=nje;function lY(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==Jn.CESIUM_3D_TILE,this._classifies3DTiles=o!==Jn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],sje(this)}function ije(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:e,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}var oje={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},rje={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},yfe=[];function sje(e){let t=e._command,n=yfe;if(e._useDebugWireframe){t.pass=Be.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=$N(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Be.TERRAIN_CLASSIFICATION,s=cY(t,r),a=gfe(t,r);n.length=0,n.push(s,a),e._commandListTerrain=$N(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=_fe(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Be.CESIUM_3D_TILE_CLASSIFICATION,s=cY(t,r),a=gfe(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=$N(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=_fe(e,n,e._commandList3DTilesPicking))}}function $N(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let A=t[h],g=nt.shallowClone(A);g.count=u,g.offset=f,n.push(g)}}return n}function cY(e,t){let n=nt.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Be.TERRAIN_CLASSIFICATION?Zn.ALWAYS:Zn.EQUAL,o=ije(i);return n.renderState=Ue.fromCache(o),n}function gfe(e,t){let n=nt.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ue.fromCache(oje),n}var aje=[];function _fe(e,t,n){let i=Ue.fromCache(rje),o=t[0],r=t[1],s=nt.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=nt.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=aje;return c.length=0,c.push(s,a),$N(e,c,n)}Object.defineProperties(lY.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=le.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});lY.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){si(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&si(t,this._commandListTerrain),this._classifies3DTiles&&si(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=cY(this._command,o),s=yfe;s.length=0,s.push(r),this._commandListIgnoreShow=$N(this,s,this._commandListIgnoreShow)}si(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&si(t,this._commandListTerrainPicking),this._classifies3DTiles&&si(t,this._commandList3DTilesPicking)),t};var eL=lY;function rV(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Be.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=N.clone(t.modelMatrix),this._boundingVolume=le.clone(t.boundingVolume),this._modelMatrix2D=new N,this._boundingVolume2D=new le,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,cje(this)}function Jp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}Jp.clone=function(e){return new Jp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function cje(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new Jp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new Jp({command:Aje(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new Jp({command:Eje(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new Jp({command:Ije(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new Jp({command:pje(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new Jp({command:gje(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(rV.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=le.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,uje(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,fje(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,dje(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,hje(this))}}});function lje(e,t){let n=e._modelMatrix;e._modelMatrix2D=N.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=D.sign(n[13])*2*D.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=le.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function uje(e){let t=e.shadows,n=Bn.castShadows(t),i=Bn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function fje(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ze(r.renderState,!0);s.cull.enabled=t,r.renderState=Ue.fromCache(s)}}}function dje(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ze(r.renderState,!0);s.cull.face=t,r.renderState=Ue.fromCache(s)}}}function hje(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}rV.prototype.pushCommands=function(e,t){let n=Cfe(this,e);n&&!this._has2DCommands&&(mje(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(lje(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Mh.ALL_OPAQUE&&gT(t,this._translucentCommand,n),i===Mh.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||gT(o._backfaceCommands,this._skipLodBackfaceCommand,n),_je(this,r,n),gT(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){gT(t,this._silhouetteModelCommand,n);return}return gT(t,this._originalCommand,n),t}};rV.prototype.pushSilhouetteCommands=function(e,t){let n=Cfe(this,e);return gT(t,this._silhouetteColorCommand,n),t};function gT(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function Cfe(e,t){if(t.mode!==ie.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*D.PI;return o<s&&r>s||o<-s&&r>-s}function pT(e,t){if(!l(t))return;let n=Jp.clone(t),i=nt.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function mje(e){pT(e,e._originalCommand),pT(e,e._translucentCommand),pT(e,e._skipLodBackfaceCommand),pT(e,e._skipLodStencilCommand),pT(e,e._silhouetteModelCommand),pT(e,e._silhouetteColorCommand)}function Aje(e){let t=nt.shallowClone(e);t.pass=Be.TRANSLUCENT;let n=ze(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=pn.ALPHA_BLEND,t.renderState=Ue.fromCache(n),t}function pje(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ee.ALWAYS,backFunction:ee.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ue.fromCache(o),i}function gje(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);o.cull.enabled=!1,(e.pass===Be.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Be.TRANSLUCENT,o.depthMask=!1,o.blending=pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ee.NOTEQUAL,backFunction:ee.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP}};let s=ze(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ue.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function _je(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=yje(o);if(r!==s){let a=Cje(r),c=ze(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ue.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function yje(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function Cje(e){return Kt.CESIUM_3D_TILE_MASK|e<<Kt.SKIP_LOD_BIT_SHIFT}function Eje(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Mi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ze(t.uniformMap),o=new U(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ue.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function Ije(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Kt.SKIP_LOD_MASK,i.reference=Kt.CESIUM_3D_TILE_MASK,i.frontFunction=Zn.GREATER_OR_EQUAL,i.frontOperation.zPass=_t.REPLACE,i.backFunction=Zn.GREATER_OR_EQUAL,i.backOperation.zPass=_t.REPLACE,n.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,t.renderState=Ue.fromCache(n),t}var tL=rV;var nL=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var iL=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function Efe(){}Efe.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=xje(e,n,t),o=bje(e,i,t),r=e.model;return l(r.classificationType)?new eL({primitiveRenderResources:e,command:o}):new tL({primitiveRenderResources:e,command:o})};function xje(e,t,n){t.addVertexLines(nL),t.addFragmentLines(iL);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function bje(e,t,n){let i=Tje(e),o=new li({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ie.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=N.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new N),f=e.runtimePrimitive.boundingSphere2D;else{let C=c?a._computedModelMatrix:a._computedModelMatrix2D;u=N.multiplyTransformation(C,e.runtimeNode.computedTransform,new N),f=le.transform(e.boundingSphere,u)}let h=ze(Ue.fromCache(e.renderStateOptions),!0);h.cull.face=Ot.getCullFace(u,e.primitiveType),h=Ue.fromCache(h);let A=l(r.classificationType),g=A?!1:Bn.castShadows(r.shadows),m=A?!1:Bn.receiveShadows(r.shadows),_=A?void 0:e.pickId;return new nt({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:_,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function Tje(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var oL=Efe;function zc(e){e=e??V.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=N.clone(N.IDENTITY),this._computedModelMatrix2D=N.clone(N.IDENTITY),this._axisCorrectionMatrix=Ot.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new N),this._runtimeArticulations={},Sje(this)}Object.defineProperties(zc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function Sje(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;Ife(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let E=0;E<s;E++){let I=r[E],b=new E1({articulation:I,sceneGraph:e}),S=b.name;a[S]=b}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,A=N.IDENTITY;for(let E=0;E<h;E++){let I=n.nodes[E],b=xfe(e,I,A);e._rootNodes.push(b)}let g=t.skins,m=e._runtimeSkins,_=g.length;for(let E=0;E<_;E++){let I=g[E];m.push(new GN({skin:I,sceneGraph:e}))}let y=e._skinnedNodes,C=y.length;for(let E=0;E<C;E++){let I=y[E],b=e._runtimeNodes[I],B=c[I].skin.index;b._runtimeSkin=m[B],b.updateJointMatrices()}e.applyArticulations()}function Ife(e,t){let n=e._components,i=e._model;e._computedModelMatrix=N.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=N.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=N.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var wje=new d;function Bje(e,t){let n=e._computedModelMatrix,i=N.getTranslation(n,wje);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=kt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=kt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=N.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=le.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function xfe(e,t,n){let i=[],o=Ot.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],A=N.multiplyTransformation(n,o,new N),g=xfe(e,h,A);i.push(g)}let s=new O1({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new UN({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new B1(f,s);f._nodesByName[u]=h}return c}var Dje=new d,vje=new d,Pje=new d,Rje=new d;zc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};zc.prototype.buildRenderResources=function(e){let t=this._model,n=new HN(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new XN(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c];u.configurePipeline(e);let f=u.pipelineStages,h=new ZN(a,u);a.primitiveRenderResources[c]=h;for(let A=0;A<f.length;A++)f[A].process(h,u.primitive,e)}}return n};zc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Dje),i=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,vje);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c],f=s.primitiveRenderResources[c];u.boundingSphere=le.clone(f.boundingSphere,new le);let h=N.multiplyByPoint(a,f.positionMin,Pje),A=N.multiplyByPoint(a,f.positionMax,Rje);d.minimumByComponent(n,h,n),d.maximumByComponent(i,A,i)}}this._boundingSphere=le.fromCornerPoints(n,i,new le),this._boundingSphere=le.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=le.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=le.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};zc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=oL.buildModelDrawCommand(a,t);s.drawCommand=c}}};zc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push(uy),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push(y1),n.isClippingEnabled()&&t.push(b1),n.isClippingPolygonsEnabled()&&t.push(w1),n.hasSilhouette(e)&&t.push(YN),l(n.splitDirection)&&n.splitDirection!==br.NONE&&t.push(KN),wr.is3DTiles(n.type)&&t.push(m1),i&&t.push(g1))};zc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ie.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};zc.prototype.updateModelMatrix=function(e,t){Ife(this,e),t.mode!==ie.SCENE3D&&Bje(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};zc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function bfe(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);bfe(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function sV(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];bfe(e,c,t,n,i)}}var Mje={backFaceCulling:void 0};zc.prototype.updateBackFaceCulling=function(e){let t=Mje;t.backFaceCulling=e,sV(this,!1,Nje,t)};function Nje(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var Lje={shadowMode:void 0};zc.prototype.updateShadows=function(e){let t=Lje;t.shadowMode=e,sV(this,!1,Oje,t)};function Oje(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var Fje={debugShowBoundingVolume:void 0};zc.prototype.updateShowBoundingVolume=function(e){let t=Fje;t.debugShowBoundingVolume=e,sV(this,!1,Qje,t)};function Qje(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var Tfe=[],kje={frameState:void 0,hasSilhouette:void 0};zc.prototype.pushDrawCommands=function(e){let t=Tfe;t.length=0;let n=kje;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,sV(this,!0,Uje,n),si(e.commandList,t)};function Uje(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=Tfe,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}zc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};zc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var rL=zc;function py(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new vt}Object.defineProperties(py.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});py.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};py.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};py.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};py.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};py.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};py.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var sL=py;var Dfe=xr(VU(),1);var Sfe={},m0=Uint32Array.BYTES_PER_ELEMENT;Sfe.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=m0;let o=i.getUint32(t,!0);if(o!==1)throw new ce(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=m0,t+=m0;let r=i.getUint32(t,!0);if(r===0)throw new ce("Feature table must have a byte length greater than zero");t+=m0;let s=i.getUint32(t,!0);t+=m0;let a=i.getUint32(t,!0);t+=m0;let c=i.getUint32(t,!0);t+=m0;let u=dr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,A;a>0&&(h=dr(n,t,a),t+=a,c>0&&(A=new Uint8Array(e,t,c),t+=c));let g=new Ph(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new ce("Feature table global property: POINTS_LENGTH must be defined");let _=g.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(_)&&(_=d.unpack(_));let y=Gje(g,h);if(y.rtcCenter=_,y.pointsLength=m,!y.hasPositions){let C=zje(g);y.positions=C,y.hasPositions=y.hasPositions||l(C)}if(!y.hasPositions)throw new ce("Either POSITION or POSITION_QUANTIZED must be defined.");if(!y.hasNormals){let C=Hje(g);y.normals=C,y.hasNormals=y.hasNormals||l(C)}if(!y.hasColors){let C=Vje(g);y.colors=C,y.hasColors=y.hasColors||l(C),y.hasConstantColor=l(y.constantColor),y.isTranslucent=l(C)&&C.isTranslucent}if(!y.hasBatchIds){let C=Wje(g);y.batchIds=C,y.hasBatchIds=y.hasBatchIds||l(C)}if(y.hasBatchIds){let C=g.getGlobalProperty("BATCH_LENGTH");if(!l(C))throw new ce("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");y.batchLength=C}return l(A)&&(A=new Uint8Array(A),y.batchTableJson=h,y.batchTableBinary=A),y};function Gje(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,A;if(l(s)){o=s.properties;let m=s.byteOffset,_=s.byteLength;if(!l(o)||!l(m)||!l(_))throw new ce("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+_),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),A=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:Tt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:A,hasNormals:f,hasBatchIds:h}}function zje(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",q.FLOAT,3),{name:at.POSITION,semantic:at.POSITION,typedArray:n,isQuantized:!1,componentDatatype:q.FLOAT,type:zt.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(r))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:at.POSITION,semantic:at.POSITION,typedArray:n,isQuantized:!0,componentDatatype:q.FLOAT,type:zt.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:q.UNSIGNED_SHORT,quantizedType:zt.VEC3}}}function Vje(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",q.UNSIGNED_BYTE,4),{name:at.COLOR,semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",q.UNSIGNED_BYTE,3),{name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",q.UNSIGNED_SHORT,1),{name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.FLOAT,type:zt.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",q.UNSIGNED_BYTE,4),o=i[3],r=G.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:at.COLOR,semantic:at.COLOR,setIndex:0,constantColor:r,componentDatatype:q.FLOAT,type:zt.VEC4,isQuantized:!1,isTranslucent:s}}}function Hje(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",q.FLOAT,3),{name:at.NORMAL,semantic:at.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:q.FLOAT,type:zt.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",q.UNSIGNED_BYTE,2),{name:at.NORMAL,semantic:at.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:zt.VEC2,quantizedComponentDatatype:q.UNSIGNED_BYTE,componentDatatype:q.FLOAT,type:zt.VEC3}}function Wje(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",q.UNSIGNED_SHORT,1);return{name:at.FEATURE_ID,semantic:at.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:q.fromTypedArray(n),type:zt.SCALAR}}}var A0=Sfe;var jje=xn.Components,Yje=xn.Scene,qje=xn.Node,Kje=xn.Primitive,Xje=xn.Attribute,wfe=xn.Quantization,Jje=xn.FeatureIdAttribute,Zje=xn.Material,$je=xn.MetallicRoughness;function gy(e){e=e??V.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=dt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=N.IDENTITY}l(Object.create)&&(gy.prototype=Object.create(Hi.prototype),gy.prototype.constructor=gy);Object.defineProperties(gy.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});gy.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=A0.parse(this._arrayBuffer,this._byteOffset),this._state=dt.PROCESSING,this._promise=Promise.resolve(this)};gy.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===dt.READY)return!0;if(this._state===dt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=eYe(this,e.context)}return!1};function eYe(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=Dp.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&tYe(e,i,r),dYe(e,t),e._state=dt.READY,e}).catch(function(r){e.unload(),e._state=dt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function tYe(e,t,n){e._state=dt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:at.POSITION,typedArray:n.POSITION.array,componentDatatype:q.FLOAT,type:zt.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT,o.quantizedType=zt.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:at.NORMAL,typedArray:n.NORMAL.array,componentDatatype:q.FLOAT,type:zt.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=q.UNSIGNED_BYTE,o.quantizedType=zt.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:at.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:q.fromTypedArray(a),type:zt.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:nYe(u.componentsPerAttribute),componentType:iYe(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function nYe(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function iYe(e){switch(e){case ee.BYTE:return"BYTE";case ee.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ee.SHORT:return"SHORT";case ee.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ee.INT:return"INT";case ee.UNSIGNED_INT:return"UNSIGNED_INT";case ee.DOUBLE:return"DOUBLE";case ee.FLOAT:return"FLOAT"}}function aL(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new wfe,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new wfe;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new Xje;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=On.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=G.pack(t.constantColor,a)}else{let a=Ct.createVertexBuffer({typedArray:i,context:n,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===at.POSITION&&s&&(r.typedArray=i),r}var Bfe,aV;function oYe(e){if(!l(aV)){Bfe=new Dfe.default(0),aV=new Array(e);for(let t=0;t<e;++t)aV[t]=Bfe.random()}return aV}var rYe=new d,sYe=new d,aYe=new d;function cYe(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=oYe(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,rYe),u=d.fromElements(a,a,a,sYe),f,h,A;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),A=d.unpack(t,h*3,aYe),d.minimumByComponent(c,A,c),d.maximumByComponent(u,A,u);e.min=d.clone(c),e.max=d.clone(u)}var lYe={name:at.COLOR,semantic:at.COLOR,setIndex:0,constantColor:G.DARKGRAY,componentDatatype:q.FLOAT,type:zt.VEC4,isQuantized:!1,isTranslucent:!1};function uYe(e,t,n){let i=[],o,r=t.positions;return l(r)&&(cYe(r),o=aL(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=aL(e,t.normals,n),i.push(o)),l(t.colors)?(o=aL(e,t.colors,n),i.push(o)):(o=aL(e,lYe,n),i.push(o)),l(t.batchIds)&&(o=aL(e,t.batchIds,n),i.push(o)),i}function fYe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?Gp({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new Aa({schema:{},propertyTables:[]})}function dYe(e,t){let n=e._parsedContent,i=new $je;i.metallicFactor=0,i.roughnessFactor=.9;let o=new Zje;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=Xm.BLEND);let s=!l(n.normals);o.unlit=s;let a=new Kje;if(a.attributes=uYe(e,n,t),a.primitiveType=Me.POINTS,a.material=o,l(n.batchIds)){let g=new Jje;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new qje;c.index=0,c.primitives=[a];let u=new Yje;u.nodes=[c],u.upAxis=fo.Z,u.forwardAxis=fo.X;let f=new jje;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=fYe(n,h),h.length>0&&hYe(e,a,h,t),l(n.rtcCenter)&&(f.transform=N.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let A=n.positions;l(A)&&A.isQuantized&&(f.transform=N.multiplyByTranslation(f.transform,A.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function hYe(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Ct.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Qe.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}gy.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var cL=gy;var mYe=new d,AYe=new d,pYe=new d,gYe=new N,_Ye=new N,yYe=new N,CYe=new Ae,EYe=new le;function _T(e,t,n,i,o,r,s){if(!e._ready||n.mode===ie.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],A=h.node,g=N.clone(h.computedTransform,gYe),m=N.clone(c.computedModelMatrix,_Ye),_=A.instances;l(_)&&_.transformInWorldSpace&&(m=N.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=N.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let y=N.multiplyTransformation(m,g,yYe);n.mode!==ie.SCENE3D&&(y=kt.basisTo2D(n.mapProjection,y,y));let C=[];if(l(_)){let I=_.attributes[0].count,b=_.attributes[0].componentDatatype,S=12,B=h.transformsTypedArray;if(!l(B)){let v=h.instancingTransformsBuffer;l(v)&&n.context.webgl2&&(B=q.createTypedArray(b,I*S),v.getBufferData(B))}if(l(B))for(let v=0;v<I;v++){let P=v*S,M=new N(B[P],B[P+1],B[P+2],B[P+3],B[P+4],B[P+5],B[P+6],B[P+7],B[P+8],B[P+9],B[P+10],B[P+11],0,0,0,1);_.transformInWorldSpace?(N.multiplyTransformation(M,g,M),N.multiplyTransformation(m,M,M)):N.multiplyTransformation(M,y,M),C.push(M)}}C.length===0&&C.push(y);let E=h.runtimePrimitives.length;for(let I=0;I<E;I++){let b=h.runtimePrimitives[I],S=b.primitive;if(l(b.boundingSphere)&&!l(_)){let W=le.transform(b.boundingSphere,y,EYe),Z=hi.raySphere(t,W);if(!l(Z))continue}let B=Ot.getAttributeBySemantic(S,at.POSITION),v=B.byteOffset,P=B.byteStride,M=B.count;if(!l(S.indices))continue;let L=S.indices.typedArray;if(!l(L)){let W=S.indices.buffer,Z=S.indices.count,Y=S.indices.indexDatatype;l(W)&&n.context.webgl2&&(Y===Oe.UNSIGNED_BYTE?L=new Uint8Array(Z):Y===Oe.UNSIGNED_SHORT?L=new Uint16Array(Z):Y===Oe.UNSIGNED_INT&&(L=new Uint32Array(Z)),W.getBufferData(L))}let p=B.typedArray,x=B.componentDatatype,T=B.type,w=B.quantization;l(w)&&(x=B.quantization.componentDatatype,T=B.quantization.type);let R=zt.getNumberOfComponents(T),O=q.getSizeInBytes(x),k=!l(p)&&l(P)&&P!==R*O,Q=R,z=0;k&&(Q=P/O,z=v/O);let F=M*Q;if(!l(p)){let W=B.buffer;l(W)&&n.context.webgl2&&(p=q.createTypedArray(x,F),W.getBufferData(p,k?0:v,0,F)),w&&B.normalized&&(p=On.dequantize(p,x,T,M))}if(!l(L)||!l(p))return;r=r??te.default,i=i??1,o=o??0;let H=L.length;for(let W=0;W<H;W+=3){let Z=L[W],Y=L[W+1],$=L[W+2];for(let X of C){let he=uY(p,Z,z,Q,w,X,i,o,r,mYe),ge=uY(p,Y,z,Q,w,X,i,o,r,AYe),fe=uY(p,$,z,Q,w,X,i,o,r,pYe),ye=hi.rayTriangleParametric(t,he,ge,fe,e.backFaceCulling??!0);l(ye)&&ye<a&&ye>=0&&(a=ye)}}}}if(a!==Number.MAX_VALUE){if(s=In.getPoint(t,a,s),n.mode!==ie.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,A=f.unproject(s,CYe);h.cartographicToCartesian(A,s)}return s}}function uY(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=On.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=N.multiplyByPoint(r,u,u),s!==1&&Ur.getPosition(u,c,s,a,u),u}var fY=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},lL=fY;var dY=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,u=new f0(t,a,c);c.primitive.modelPrimitiveImagery=u,i.push(u)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new me("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new lL(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),ue(this)}},uL=dY;function Io(e){e=e??V.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??wr.GLTF,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=J.clone(J.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new u1(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=G.clone(e.color),this._colorBlendMode=e.colorBlendMode??Qc.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??G.RED;this._silhouetteColor=G.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Be.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new le,this._initialRadius=void 0,this._heightReference=e.heightReference??Ze.NONE,this._heightDirty=this._heightReference!==Ze.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new Zm(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Fs.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=N.clone(N.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?wh.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new uL(this),this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new DE,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new Lp(e.environmentMapOptions);Lp.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Bn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===wr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new Bt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??br.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this._classificationType=e.classificationType,this._statistics=new sL,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new _e,this._readyEvent=new _e,this._texturesReadyEvent=new _e,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function hY(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function IYe(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new h1({model:e,propertyTable:s});n.push(a)}return n}function xYe(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Ot.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Ot.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function pY(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(Io.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){pY(e,this._color)&&this.resetDrawCommands(),this._color=G.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!G.equals(e,this._silhouetteColor)){let t=pY(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=G.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return Rfe(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===wr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Fs.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(wh.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(Lp.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});Io.prototype.getNode=function(e){return this._nodesByName[e]};Io.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};Io.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};Io.prototype.getExtension=function(e){return this._loader.components.extensions[e]};Io.prototype.makeStyleDirty=function(){this._styleDirty=!0};Io.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var bYe=new N,TYe=new J,SYe=new N;Io.prototype.update=function(e){let t=!1;try{t=wYe(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")hY(this,i);else{let o=Ot.getError("model",this._resource,i);hY(this,o)}}if(BYe(this,e),DYe(this,e),vYe(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Ot.getError("model",this._resource,new ce("Failed to load model."));hY(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&IYe(this,o);let r=new rL({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===ie.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(PYe(this),RYe(this),MYe(this,e),NYe(this),LYe(this,e),OYe(this,e),FYe(this,e),QYe(this,e),kYe(this,e),UYe(this,e),GYe(this,e),this._defaultTexture=e.context.defaultTexture,zYe(this,e),VYe(this,e),HYe(this),WYe(this,e),KYe(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),YYe(this),XYe(this,e),JYe(this),ZYe(this,e)}};function wYe(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function BYe(e,t){l(e._customShader)&&e._customShader.update(t)}function DYe(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function vYe(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function PYe(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=xYe(t,e),e._styleDirty=!0,e.resetDrawCommands())}function RYe(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function MYe(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&Pfe(e)}function Pfe(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Mh.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function NYe(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function LYe(e,t){e._silhouetteDirty&&(Mfe(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function OYe(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function FYe(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function QYe(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function kYe(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function UYe(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function GYe(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function zYe(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function VYe(e,t){N.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=N.clone(e.modelMatrix,e._modelMatrix))}var _y=new d,mY=new Ae;function HYe(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===Ze.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??te.default,i=e.modelMatrix;_y.x=i[12],_y.y=i[13],_y.z=i[14];let o=n.cartesianToCartographic(_y);l(e._clampedModelMatrix)||(e._clampedModelMatrix=N.clone(i,new N)),e._removeUpdateHeightCallback=t.updateHeight(o,vfe(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=vfe(e,n,o);Ae.clone(o,mY),mY.height=r,s(mY)}e._heightDirty=!1,e._updateModelMatrix=!0}function WYe(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;Rfe(e,n),jYe(e,n,t)}function Rfe(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=le.transform(e._boundingSphere,t,e._boundingSphere)}function jYe(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);N.getTranslation(t,_y),e._sceneMode!==ie.SCENE3D&&eo.computeActualEllipsoidPosition(n,_y,_y);let s=e._boundingSphere.radius,a=$Ye(_y,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function YYe(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var qYe=new J(1,0,0,0,0,1,0,-1,0);function KYe(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=TYe,s=bYe;if(s=N.multiply(o.uniformState.view3D,i,s),r=N.getRotation(s,r),r=J.transpose(r,r),e._iblReferenceFrameMatrix=J.multiply(qYe,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=SYe;a=N.multiply(o.uniformState.view3D,i,a),a=N.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=N.inverseTranspose(a,e._clippingPlanesMatrix)}}function XYe(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function JYe(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Bt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Bt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Bt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function ZYe(e,t){let n=tqe(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(nqe(e,t),e._sceneGraph.pushDrawCommands(t))}var AY=new le;function $Ye(e,t,n){return AY.center=e,AY.radius=t,n.camera.getPixelSize(AY,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var cV=new d;function vfe(e,t,n){return function(i){Kx(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,cV);let o=e._clampedModelMatrix;N.clone(e.modelMatrix,o),o[12]=cV.x,o[13]=cV.y,o[14]=cV.z,e._heightDirty=!0}}var eqe=new d;function tqe(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ie.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=N.getTranslation(e.modelMatrix,eqe);eo.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function nqe(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}Io.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};Io.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Mfe(e){return e.context.stencilBuffer}Io.prototype.hasSilhouette=function(e){return Mfe(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};Io.prototype.hasSkipLevelOfDetail=function(e){if(!wr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};Io.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};Io.prototype.pick=function(e,t,n,i,o){return _T(this,e,t,n,i,o)};Io.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};Io.prototype.isDestroyed=function(){return!1};Io.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};Io.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};Io.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};Io.fromGltfAsync=async function(e){e=e??V.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=we.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=we.createIfNeeded(t);let r=new Xu(n),a=l(e.content)?wr.TILE_GLTF:wr.GLTF,c=n.gltfResource,u=fL(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Ot.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new Io(u),A=h._resource.credits;if(l(A)){let g=A.length;for(let m=0;m<g;m++)h._resourceCredits.push(Bt.clone(A[m]))}return h};Io.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new t1(t);try{await n.load();let i=fL(n,wr.TILE_B3DM,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new cL(t);try{await n.load();let i=fL(n,wr.TILE_PNTS,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new o1(t);try{await n.load();let i=fL(n,wr.TILE_I3DM,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new n1(t),i=fL(n,wr.TILE_GEOJSON,e);return new Io(i)};var iqe=new G;Io.prototype.applyColorAndShow=function(e){let t=G.clone(this._color,iqe),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):G.clone(G.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,pY(t,this._color)&&this.resetDrawCommands()};Io.prototype.applyStyle=function(e){let t=this.type===wr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),Pfe(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function fL(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Fh=Io;function ss(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(ss.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});ss.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};ss.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};ss.prototype.getExtension=function(e){return this._model.getExtension(e)};ss.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};ss.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};ss.prototype.applyDebugSettings=function(e,t){t=e?t:G.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};ss.prototype.applyStyle=function(e){this._model.style=e};ss.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:cu.REPEAT}),this._ready=!0)};ss.prototype.isDestroyed=function(){return!1};ss.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};ss.fromGltf=async function(e,t,n,i){let o=new ss(e,t,n),s=dL(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Fh.fromGltfAsync(s);return o._model=c,o};ss.fromB3dm=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await Fh.fromB3dm(a);return r._model=u,r};ss.fromI3dm=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Fh.fromI3dm(a);return r._model=c,r};ss.fromPnts=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Fh.fromPnts(a);return r._model=c,r};ss.fromGeoJson=async function(e,t,n,i){let o=new ss(e,t,n),s=dL(e,t,o,{geoJson:i,resource:n}),a=await Fh.fromGeoJson(s);return o._model=a,o};ss.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,te.WGS84,n)};function dL(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Be.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return Tt(i,o)}var tf=ss;function fd(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(fd.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});fd.fromJson=function(e,t,n,i){let o=new fd(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};fd.prototype.hasProperty=function(e,t){return!1};fd.prototype.getFeature=function(e){};fd.prototype.applyDebugSettings=function(e,t){};fd.prototype.applyStyle=function(e){};fd.prototype.update=function(e,t){};fd.prototype.pick=function(e,t,n){};fd.prototype.isDestroyed=function(){return!1};fd.prototype.destroy=function(){return ue(this)};var hL=fd;function ga(e,t,n,i){let o=ga._verifyAttributes(t);n=n??0;let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let A=o[h];if(A.vertexBuffer){r.push(A);continue}c=A.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(A)}function f(h,A){return q.getSizeInBytes(A.componentDatatype)-q.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=ga._vertexSizeInBytes(a),A=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:A,needsCommit:!1,arrayBuffer:void 0,arrayViews:ga._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}ga._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??q.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Qe.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};ga._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*q.getSizeInBytes(a.componentDatatype)}let i=n>0?q.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};ga._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/q.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*q.getSizeInBytes(a)}return n};ga.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];ga._resize(o,this._size),ga._appendWriters(this.writers,o)}gY(this)};ga._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=q.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var oqe=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];ga._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=oqe[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};ga.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=rqe(this,i)||t;if(t||!l(this.va)){gY(this);let s=this.va=[],a=D.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);ga._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new li({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function rqe(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Ct.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}ga._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};ga.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)sqe(n[i],e,t)};function sqe(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}ga.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function gY(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}ga.prototype.isDestroyed=function(){return!1};ga.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return gY(this),ue(this)};var Zp=ga;var mL=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var AL=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var aqe=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),ws=aqe;function $p(e){this._billboardCollection=e,this._id=void 0,this._loadState=ws.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties($p.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===ws.LOADED}},hasImage:{get:function(){return this._loadState!==ws.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});$p.prototype.unload=async function(){this._loadState!==ws.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=ws.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};$p.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===ws.LOADING||t.loadState===ws.LOADED){$p.clone(o,this);return}l(o)||(o=new $p(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=ws.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=ws.ERROR,o._loadError=c,this._id!==e)return;this._loadState=ws.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=ws.FAILED,o._index=-1,this._id!==e)return;this._loadState=ws.FAILED,this._index=-1;return}o._index=r,o._loadState=ws.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=ws.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};$p.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=ws.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=ws.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=ws.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=ws.LOADED,this.dirty=!0};$p.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};$p.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var eg=$p;function vi(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=jt.clone(o)),l(r)&&(r=Ut.clone(r)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._pixelOffset=U.clone(e.pixelOffset??U.ZERO),this._translate=new U(0,0),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._heightReference=e.heightReference??Ze.NONE,this._verticalOrigin=e.verticalOrigin??zn.CENTER,this._horizontalOrigin=e.horizontalOrigin??Ri.CENTER,this._scale=e.scale??1,this._color=G.clone(e.color??G.WHITE),this._rotation=e.rotation??0,this._alignedAxis=d.clone(e.alignedAxis??d.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new eg(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Xn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ie.SCENE3D,this._clusterShow=!0,this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??br.NONE}var Nfe=vi.SHOW_INDEX=0,uV=vi.POSITION_INDEX=1,kfe=vi.PIXEL_OFFSET_INDEX=2,cqe=vi.EYE_OFFSET_INDEX=3,lqe=vi.HORIZONTAL_ORIGIN_INDEX=4,uqe=vi.VERTICAL_ORIGIN_INDEX=5,fqe=vi.SCALE_INDEX=6,Lfe=vi.IMAGE_INDEX_INDEX=7,Ofe=vi.COLOR_INDEX=8,dqe=vi.ROTATION_INDEX=9,hqe=vi.ALIGNED_AXIS_INDEX=10,mqe=vi.SCALE_BY_DISTANCE_INDEX=11,Aqe=vi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,pqe=vi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,gqe=vi.DISTANCE_DISPLAY_CONDITION=14,_qe=vi.DISABLE_DEPTH_DISTANCE=15;vi.TEXTURE_COORDINATE_BOUNDS=16;var Ffe=vi.SDF_INDEX=17,yqe=vi.SPLIT_DIRECTION_INDEX=18;vi.NUMBER_OF_PROPERTIES=19;function mr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(vi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,mr(this,Nfe))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),mr(this,uV))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),mr(this,uV))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;U.equals(t,e)||(U.clone(e,t),mr(this,kfe))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;jt.equals(t,e)||(this._scaleByDistance=jt.clone(e,t),mr(this,mqe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;jt.equals(t,e)||(this._translucencyByDistance=jt.clone(e,t),mr(this,Aqe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;jt.equals(t,e)||(this._pixelOffsetScaleByDistance=jt.clone(e,t),mr(this,pqe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),mr(this,cqe))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,mr(this,lqe))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,mr(this,uqe))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,mr(this,fqe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),mr(this,Ofe))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,mr(this,dqe))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),mr(this,hqe))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,mr(this,Lfe))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,mr(this,Lfe))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,mr(this,Ofe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),mr(this,gqe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,mr(this,_qe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof we?t=e._url:l(e.src)?t=e.src:t=Xn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),mr(this,uV)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,mr(this,Nfe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),mr(this,Ffe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,mr(this,Ffe))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,mr(this,yqe))}}});vi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};vi.prototype._updateClamping=function(){vi._updateClamping(this._billboardCollection,this)};var fV=new Ae;vi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??te.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===Ze.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===Ze.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);Kx(t._heightReference)&&(t._mode===ie.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),Ae.clone(s,fV);let c=n.getHeight(s,t._heightReference);l(c)&&(fV.height=c),a(fV)};vi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};vi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};vi.prototype.setImageTexture=function(e){eg.clone(e,this._imageTexture)};vi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};vi.prototype._setTranslate=function(e){let t=this._translate;U.equals(t,e)||(U.clone(e,t),mr(this,kfe))};vi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};vi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),mr(this,uV)};var Qfe=new se;vi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ie.SCENE3D?t:(N.multiplyByPoint(i,t,Qfe),eo.computeActualEllipsoidPosition(n,Qfe))};var Ufe=new d;vi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=N.multiplyByPoint(e,t,Ufe),a=eo.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return U.add(a,i,a),a};var lV=new U(0,0);vi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new U),U.clone(this._pixelOffset,lV),U.add(lV,this._translate,lV);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ie.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,fV);o=a.cartographicToCartesian(c,Ufe),i=N.IDENTITY}return vi._computeScreenSpacePosition(i,o,this._eyeOffset,lV,e,t)};vi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===Ri.RIGHT?s-=i:e.horizontalOrigin===Ri.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?a-=o:e.verticalOrigin===zn.CENTER&&(a-=o*.5),l(n)||(n=new Ye),n.x=s,n.y=a,n.width=i,n.height=o,n};vi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&G.equals(this._color,e._color)&&U.equals(this._pixelOffset,e._pixelOffset)&&U.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&jt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};vi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var xo=vi;var Cqe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Uo=Object.freeze(Cqe);var Eqe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},_a=Object.freeze(Eqe);function pL({x:e,y:t,width:n,height:i}){this.rectangle=new Ye(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function _Y({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new pL({x:n,y:n,width:e-2*n,height:t-2*n})}_Y.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};_Y.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new pL({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new pL({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new pL({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new pL({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var yT=_Y;var Gfe=16;function hu(e){e=e??V.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new U(Gfe,Gfe);this._pixelFormat=e.pixelFormat??$e.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Xn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(hu.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});hu.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Ye),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};hu.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Mt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new $r({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,A=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],_=h[g];if(!l(m)||!l(_)||l(A.get(g)))continue;let{x:y,y:C,width:E,height:I}=m;a.copyTexSubImage2D(c,0,y,C,_.x,_.y,E,I)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};hu.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((E,I)=>new zfe({index:I,image:E})).filter((E,I)=>l(E.image)&&!l(c.get(I))),f=0,h=0,A=0;for(let E=t;E<o.length;++E){let{width:I,height:b}=o[E].image;f=Math.max(f,I),h=Math.max(h,b),A+=I*b,u.push(o[E])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=D.nextPowerOfTwo(s),a=D.nextPowerOfTwo(a));let g=A,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:E},{image:I})=>I.height*I.width-E.height*E.width);let _=new Array(this._nextIndex);for(let E of this._subRegions.keys())l(c.get(E))&&(_[E]=i[E]);let y,C=!1;for(;!C;){y=new yT({height:a,width:s,borderPadding:n});let E;for(E=0;E<u.length;++E){let{index:I,image:b}=u[E];if(!l(b))continue;let S=y.pack(I,b);if(!l(S)){s>a?a*=2:s*=2;break}_[I]=S.rectangle}C=E===u.length}this._texturePacker=y,this._texture=this._copyFromTexture(e,s,a,_),r.destroy(),this._rectangles=_,this._guid=Xn()};hu.prototype.getImageIndex=function(e){return this._indexById.get(e)};hu.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function zfe({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}hu.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new zfe({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};hu.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};hu.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Mt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new yT({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function Iqe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof we)&&(e=we.createIfNeeded(e).fetchImage()),e}hu.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await Iqe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};hu.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new ce(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};hu.prototype.isDestroyed=function(){return!1};hu.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var p0=hu;var xqe=xo.SHOW_INDEX,gL=xo.POSITION_INDEX,Vfe=xo.PIXEL_OFFSET_INDEX,Hfe=xo.EYE_OFFSET_INDEX,bqe=xo.HORIZONTAL_ORIGIN_INDEX,Tqe=xo.VERTICAL_ORIGIN_INDEX,Sqe=xo.SCALE_INDEX,g0=xo.IMAGE_INDEX_INDEX,Wfe=xo.COLOR_INDEX,wqe=xo.ROTATION_INDEX,Bqe=xo.ALIGNED_AXIS_INDEX,jfe=xo.SCALE_BY_DISTANCE_INDEX,Yfe=xo.TRANSLUCENCY_BY_DISTANCE_INDEX,qfe=xo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,Kfe=xo.DISTANCE_DISPLAY_CONDITION,Dqe=xo.DISABLE_DEPTH_DISTANCE,vqe=xo.TEXTURE_COORDINATE_BOUNDS,Xfe=xo.SDF_INDEX,Jfe=xo.SPLIT_DIRECTION_INDEX,TY=xo.NUMBER_OF_PROPERTIES,bo,Pqe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},Rqe={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function hd(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new p0),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(TY),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW],this._highlightColor=G.clone(G.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(hd.prototype,{length:{get:function(){return SY(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function Zfe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}hd.prototype.add=function(e){let t=new xo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};hd.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};hd.prototype.removeAll=function(){Zfe(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function SY(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}hd.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};hd.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};hd.prototype.get=function(e){return SY(this),this._billboards[e]};var yY;function Mqe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Ct.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function Nqe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Ct.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function Lqe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Ct.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}hd.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<TY;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function Oqe(e,t,n,i,o,r){let s=[{index:bo.positionHighAndScale,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[gL]},{index:bo.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[gL]},{index:bo.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Vfe]},{index:bo.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Yfe]},{index:bo.compressedAttribute2,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Wfe]},{index:bo.eyeOffset,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Hfe]},{index:bo.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[jfe]},{index:bo.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[qfe]},{index:bo.compressedAttribute3,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Kfe]},{index:bo.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vqe]},{index:bo.splitDirection,componentsPerAttribute:1,componentDatatype:q.FLOAT,usage:n[Jfe]}];i&&s.push({index:bo.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:Lqe(e)}),l(o)&&s.push({index:bo.a_batchId,componentsPerAttribute:1,componentDatatype:q.FLOAT,bufferUsage:Qe.STATIC_DRAW}),r&&s.push({index:bo.sdf,componentsPerAttribute:2,componentDatatype:q.FLOAT,usage:n[Xfe]});let a=i?t:4*t;return new Zp(e,s,a,i)}var CY=new ei;function $fe(e,t,n,i){let o,r=n[bo.positionHighAndScale],s=n[bo.positionLowAndRotation],a=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(a,CY);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=CY.high,h=CY.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var mu=new U,dd=32768,CT=65536,EY=4096,iA=256,Fqe=128,Qqe=32,kqe=8,ede=4,Uqe=1/256,tde=0,nde=2,ide=3,ode=1,wY=new Ye;function rde(e,t,n,i){let o,r=n[bo.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let A=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===zn.BASELINE&&(g=zn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&A===Ri.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===zn.CENTER;let _=0,y=0,C=0,E=0;if(i.ready){let R=i.computeTextureCoordinates(wY);_=R.x,y=R.y,C=R.width,E=R.height}let I=_+C,b=y+E,S=Math.floor(D.clamp(a,-dd,dd)+dd)*Fqe;S+=(A+1)*Qqe,S+=(g+1)*kqe,S+=(m?1:0)*ede;let B=Math.floor(D.clamp(c,-dd,dd)+dd)*iA,v=Math.floor(D.clamp(f,-dd,dd)+dd)*iA,P=(D.clamp(h,-dd,dd)+dd)*Uqe,M=Math.floor(P),L=Math.floor((P-M)*iA);B+=M,v+=L,mu.x=_,mu.y=y;let p=On.compressTextureCoordinates(mu);mu.x=I;let x=On.compressTextureCoordinates(mu);mu.y=b;let T=On.compressTextureCoordinates(mu);mu.x=_;let w=On.compressTextureCoordinates(mu);e._instanced?(o=i._index,r(o,S,B,v,p)):(o=i._index*4,r(o+0,S+tde,B,v,p),r(o+1,S+nde,B,v,x),r(o+2,S+ide,B,v,T),r(o+3,S+ode,B,v,w))}function sde(e,t,n,i){let o,r=n[bo.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let A=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,A);let g=D.clamp(A,0,CT),m=0;Math.abs(d.magnitudeSquared(s)-1)<D.EPSILON6&&(m=On.octEncodeFloat(s)),c=D.clamp(c,0,1),c=c===1?255:c*255|0,g=g*iA+c,f=D.clamp(f,0,1),f=f===1?255:f*255|0,m=m*iA+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function xY(e,t,n,i){let o,r=n[bo.compressedAttribute2],s=i.color,a=l(e._batchTable)?G.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<D.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=i.height??0;e._maxSize=Math.max(e._maxSize,f);let h=i._labelHorizontalOrigin??-2;h+=2;let A=f*ede+h,g=G.floatToByte(s.red),m=G.floatToByte(s.green),_=G.floatToByte(s.blue),y=g*CT+m*iA+_;g=G.floatToByte(a.red),m=G.floatToByte(a.green),_=G.floatToByte(a.blue);let C=g*CT+m*iA+_,E=G.floatToByte(s.alpha)*CT+G.floatToByte(a.alpha)*iA;E+=c*2+u,e._instanced?(o=i._index,r(o,y,C,E,A)):(o=i._index*4,r(o+0,y,C,E,A),r(o+1,y,C,E,A),r(o+2,y,C,E,A),r(o+3,y,C,E,A))}function bY(e,t,n,i){let o,r=n[bo.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==Ze.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if(mu.x=0,mu.y=0,i.ready){let u=i.computeTextureCoordinates(wY);mu.x=u.width,mu.y=u.height}let c=On.compressTextureCoordinates(mu);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function ade(e,t,n,i){let o,r=n[bo.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function cde(e,t,n,i){let o,r=n[bo.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function lde(e,t,n,i){let o,r=n[bo.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=Wf(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,A;l(i._labelDimensions)?(A=i._labelDimensions.x,h=i._labelDimensions.y):(A=i.width??0,h=i.height??0);let g=Math.floor(D.clamp(A,0,EY)),m=Math.floor(D.clamp(h,0,EY)),_=g*EY+m;e._instanced?(o=i._index,r(o,s,a,u,_)):(o=i._index*4,r(o+0,s,a,u,_),r(o+1,s,a,u,_),r(o+2,s,a,u,_),r(o+3,s,a,u,_))}function ude(e,t,n,i){if(Wf(i.heightReference)){let A=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,_=l(A.globe)&&A.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&_}let o,r=n[bo.textureCoordinateBoundsOrLabelTranslate];if(Yt.maximumVertexTextureImageUnits>0){let A=0,g=0;l(i._labelTranslate)&&(A=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,A,g,0,0)):(o=i._index*4,r(o+0,A,g,0,0),r(o+1,A,g,0,0),r(o+2,A,g,0,0),r(o+3,A,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let A=i.computeTextureCoordinates(wY);s=A.x,a=A.y,c=A.width,u=A.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function Gqe(e,t,n,i){if(!l(e._batchTable))return;let o=n[bo.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function fde(e,t,n,i){if(!e._sdf)return;let o,r=n[bo.sdf],s=i.outlineColor,a=i.outlineWidth,c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue),h=c*CT+u*iA+f,A=a/_a.RADIUS,g=G.floatToByte(s.alpha)*CT+G.floatToByte(A)*iA;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+tde,g),r(o+1,h+nde,g),r(o+2,h+ide,g),r(o+3,h+ode,g))}function dde(e,t,n,i){let o=n[bo.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function zqe(e,t,n,i){$fe(e,t,n,i),rde(e,t,n,i),sde(e,t,n,i),xY(e,t,n,i),bY(e,t,n,i),ade(e,t,n,i),cde(e,t,n,i),lde(e,t,n,i),ude(e,t,n,i),Gqe(e,t,n,i),fde(e,t,n,i),dde(e,t,n,i)}function IY(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=xo._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function Vqe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!N.equals(r,e.modelMatrix)?(e._mode=n,N.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&IY(e,i,i.length,t,r,!0)):n===ie.MORPHING?IY(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&IY(e,o,e._billboardsToUpdateIndex,t,r,!1)}function Hqe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function Wqe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Be.OVERLAY,i}var jqe=[];hd.prototype.update=function(e){if(SY(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,bo=this._instanced?Rqe:Pqe,yY=this._instanced?Nqe:Mqe;let n=this._billboards,i=n.length,o=!0;for(let P=0;P<i;++P){let M=n[P];l(M.loadError)&&(console.error(`Error loading image for billboard: ${M.loadError}`),M.image=void 0),M.textureDirty&&this._updateBillboard(M,g0),M.show&&(o=o&&M.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;Vqe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,A=e.passes,g=A.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let P=0;P<TY;++P)c[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=Oqe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let P=0;P<i;++P){let M=this._billboards[P];M._dirty=!1,M.textureDirty=!1,zqe(this,e,h,M)}this._vaf.commit(yY(t))}this._billboardsToUpdateIndex=0}else if(a>0){let P=jqe;P.length=0,(c[gL]||c[wqe]||c[Sqe])&&P.push($fe),(c[g0]||c[Vfe]||c[bqe]||c[Tqe]||c[xqe])&&(P.push(rde),this._instanced&&P.push(bY)),(c[g0]||c[Bqe]||c[Yfe])&&(P.push(sde),P.push(xY)),(c[g0]||c[Wfe])&&P.push(xY),(c[g0]||c[Hfe])&&P.push(bY),c[jfe]&&P.push(ade),c[qfe]&&P.push(cde),(c[Kfe]||c[Dqe]||c[g0]||c[gL])&&P.push(lde),(c[g0]||c[gL])&&P.push(ude),c[Xfe]&&P.push(fde),c[Jfe]&&P.push(dde);let M=P.length;if(h=this._vaf.writers,a/i>.1){for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<M;++x)P[x](this,e,h,p)}this._vaf.commit(yY(t))}else{for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<M;++x)P[x](this,e,h,p);this._instanced?this._vaf.subCommit(p._index,1):this._vaf.subCommit(p._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,_=N.IDENTITY;e.mode===ie.SCENE3D?(_=this.modelMatrix,m=le.clone(this._baseVolumeWC,this._boundingVolume)):m=le.clone(this._baseVolume2D,this._boundingVolume),Hqe(this,e,m);let y=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,y){this._blendOption===Uo.OPAQUE||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!0}):this._rsOpaque=void 0;let P=this._blendOption===Uo.TRANSLUCENT;this._blendOption===Uo.TRANSLUCENT||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:P?ee.LEQUAL:ee.LESS},depthMask:P,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let C,E,I,b,S,B=Yt.maximumVertexTextureImageUnits>0;if(y||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){C=AL,E=mL,S=[],l(this._batchTable)&&(S.push("VECTOR_TILE"),C=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(C),E=this._batchTable.getFragmentShaderCallback(!1,void 0)(E)),I=new He({defines:S,sources:[C]}),this._instanced&&I.defines.push("INSTANCED"),this._shaderRotation&&I.defines.push("ROTATION"),this._shaderAlignedAxis&&I.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&I.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&I.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&I.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&I.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&I.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(B?I.defines.push("VERTEX_DEPTH_CHECK"):I.defines.push("FRAGMENT_DEPTH_CHECK"));let P=1-_a.CUTOFF;this._sdf&&I.defines.push("SDF");let M=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT&&(b=new He({defines:["OPAQUE",M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo}),b=new He({defines:["TRANSLUCENT",M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=an.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._blendOption===Uo.OPAQUE&&(b=new He({defines:[M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._blendOption===Uo.TRANSLUCENT&&(b=new He({defines:[M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=an.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let v=e.commandList;if(A.render||A.pick){let P=this._colorCommands,M=this._blendOption===Uo.OPAQUE,L=this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT,p=this._vaf.va,x=p.length,T=this._uniforms,w;l(this._batchTable)?(T=this._batchTable.getUniformMapCallback()(T),w=this._batchTable.getPickId()):w="v_pickColor",P.length=x;let R=L?x*2:x;for(let O=0;O<R;++O){let k=P[O];l(k)||(k=P[O]=new nt);let Q=M||L&&O%2===0;k.pass=Q||!L?Be.OPAQUE:Be.TRANSLUCENT,k.owner=this;let z=L?Math.floor(O/2):O;k.boundingVolume=m,k.modelMatrix=_,k.count=p[z].indicesCount,k.shaderProgram=Q?this._sp:this._spTranslucent,k.uniformMap=T,k.vertexArray=p[z].va,k.renderState=Q?this._rsOpaque:this._rsTranslucent,k.debugShowBoundingVolume=this.debugShowBoundingVolume,k.pickId=w,this._instanced&&(k.count=6,k.instanceCount=i),v.push(k)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=Wqe(this,e.context)),v.push(this.debugCommand))}this._allBillboardsReady=o};hd.prototype.isDestroyed=function(){return!1};hd.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Zfe(this._billboards),ue(this)};var nf=hd;function Yqe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var _0=Yqe;function Va(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),ET(this)}var qqe=new Ae;Object.defineProperties(Va.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=G.clone(e,this._color),ET(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,ET(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=G.clone(e,this._pointOutlineColor),ET(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,ET(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,qqe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=G.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&ET(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Va.defaultColor=G.WHITE;Va.defaultPointOutlineColor=G.BLACK;Va.defaultPointOutlineWidth=0;Va.defaultPointSize=8;function ET(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Va.defaultColor,i=e._pointOutlineColor??Va.defaultPointOutlineColor,o=e._pointOutlineWidth??Va.defaultPointOutlineWidth,r=e._pointSize??Va.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(G.equals(n,s)&&G.equals(i,a)&&o===c&&r===u)return;e._billboardColor=G.clone(n,e._billboardColor),e._billboardOutlineColor=G.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),A=i.toCssColorString(),g=JSON.stringify([h,r,A,o]);t.setImage(g,_0(f,h,A,o,r))}Va.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Va.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Va.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Va.prototype.getPropertyInherited=function(e){return ha.getPropertyInherited(this._content,this._batchId,e)};Va.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Va.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Va.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Va.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var tg=Va;function Kqe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,A=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,A)),o&&(g.fillStyle="black",g.fillText(t,u/2,A));let m=g.getImageData(0,0,f,h).data,_=m.length,y=f*4,C,E,I,b;for(C=0;C<_;++C)if(m[C]!==255){I=C/y|0;break}for(C=_-1;C>=0;--C)if(m[C]!==255){b=C/y|0;break}let S=-1;for(C=0;C<f&&S===-1;++C)for(E=0;E<h;++E){let B=C*4+E*y;if(m[B]!==255||m[B+1]!==255||m[B+2]!==255||m[B+3]!==255){S=C;break}}return{width:r.width,height:b-I,ascent:A-I,descent:b-A,minx:S-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var y0;function Xqe(e,t){if(e==="")return;t=t??V.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??G.TRANSPARENT,a=t.padding??0,c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(y0)||(l(f.imageSmoothingEnabled)?y0="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?y0="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?y0="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(y0="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[y0]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=Kqe(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let A=-h.minx,g=Math.ceil(h.width)+A+c,m=h.height+c,_=m-h.ascent+a,y=m-_+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[y0]=!1,s!==G.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let C=t.strokeColor??G.BLACK;f.strokeStyle=C.toCssColorString(),f.strokeText(e,A+a,y)}if(o){let C=t.fillColor??G.WHITE;f.fillStyle=C.toCssColorString(),f.fillText(e,A+a,y)}return u}var C0=Xqe;var bde=xr(pde(),1);var Zqe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},nr=Object.freeze(Zqe);var gde={},_de=0,$qe=256,eKe=new G(.165,.165,.165,.8),tKe=new U(7,5),Qs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function E0(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function yL(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function CL(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function Cde(e){let t=gde[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(CL(n,"line-height"));isNaN(i)&&(i=void 0),t={family:CL(n,"font-family"),size:CL(n,"font-size").replace("px",""),style:CL(n,"font-style"),weight:CL(n,"font-weight"),lineHeight:i},document.body.removeChild(n),_de<$qe&&(gde[e._font]=t,_de++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Qh(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=jt.clone(o)),l(r)&&(r=Ut.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=G.clone(e.fillColor??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=G.clone(e.backgroundColor??eKe),this._backgroundPadding=U.clone(e.backgroundPadding??tKe),this._style=e.style??nr.FILL,this._verticalOrigin=e.verticalOrigin??zn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??Ri.LEFT,this._pixelOffset=U.clone(e.pixelOffset??U.ZERO),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._position=d.clone(e.position??d.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??Ze.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,Cde(this),this._updateClamping()}Object.defineProperties(Qh.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),yL(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Qh.filterUnsupportedCharacters(e);this._renderedText=Qh.enableRightToLeftDetection?aKe(t):t,E0(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,E0(this),Cde(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;G.equals(t,e)||(G.clone(e,t),E0(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),E0(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,E0(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,E0(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!G.equals(t,e)){G.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;U.equals(t,e)||(U.clone(e,t),yL(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,E0(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!U.equals(t,e)){U.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!jt.equals(t,e)){this._translucencyByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!jt.equals(t,e)){this._pixelOffsetScaleByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!jt.equals(t,e)){this._scaleByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,yL(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),yL(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),yL(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Ut.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Qh.prototype._updateClamping=function(){xo._updateClamping(this._labelCollection,this)};Qh.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new U);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return xo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Qh.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?o-=s:e.verticalOrigin===zn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,A=h.length;for(let g=0;g<A;++g){let m=h[g],_=m.billboard;if(!l(_))continue;let y=t.x+_._translate.x,C=t.y-_._translate.y,E=m.dimensions.width*a,I=m.dimensions.height*a;e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?C-=I:e.verticalOrigin===zn.CENTER&&(C-=I*.5),e._verticalOrigin===zn.TOP?C+=_a.PADDING*a:(e._verticalOrigin===zn.BOTTOM||e._verticalOrigin===zn.BASELINE)&&(C-=_a.PADDING*a),i=Math.min(i,y),o=Math.min(o,C),u=Math.max(u,y+E),f=Math.max(f,C+I)}r=u-i,s=f-o}return l(n)||(n=new Ye),n.x=i,n.y=o,n.width=r,n.height=s,n};Qh.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Qh.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&G.equals(this._fillColor,e._fillColor)&&G.equals(this._outlineColor,e._outlineColor)&&G.equals(this._backgroundColor,e._backgroundColor)&&U.equals(this._backgroundPadding,e._backgroundPadding)&&U.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&jt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Qh.prototype.isDestroyed=function(){return!1};Qh.enableRightToLeftDetection=!1;function nKe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=Qs.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=Qs.RTL:n.test(f)?a=Qs.LTR:i.test(f)?a=Qs.BRACKETS:a=Qs.WEAK,u===0&&(s=a),s===a&&a!==Qs.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function iKe(e){return e.split("").reverse().join("")}function EL(e,t,n){return e.slice(0,t)+n+e.slice(t)}function oKe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var rKe="\u05D0-\u05EA",sKe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",yde=new RegExp(`[${rKe}${sKe}]`);function aKe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=yde.test(o.charAt(0)),s=nKe(o,yde),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===Qs.BRACKETS?oKe(f.Word):iKe(f.Word);r?f.Type===Qs.RTL?(c=h+c,a=0):f.Type===Qs.LTR?(c=EL(c,a,f.Word),a+=f.Word.length):(f.Type===Qs.WEAK||f.Type===Qs.BRACKETS)&&(f.Type===Qs.WEAK&&s[u-1].Type===Qs.BRACKETS?c=h+c:s[u-1].Type===Qs.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===Qs.RTL?(c=h+c,a=0):(c=EL(c,a,f.Word),a+=f.Word.length):c=EL(c,0,h)):f.Type===Qs.RTL?c=EL(c,a,h):f.Type===Qs.LTR?(c+=f.Word,a=c.length):(f.Type===Qs.WEAK||f.Type===Qs.BRACKETS)&&(u>0&&s[u-1].Type===Qs.RTL?s.length>u+1?s[u+1].Type===Qs.RTL?c=EL(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var yy=Qh;var Tde=xr(Ede(),1);function lKe(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var uKe=1.2,Ide="ID_WHITE_PIXEL",BY=new U(4,4),fKe=new Ye(1,1,1,1);function dKe(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=BY.x,o.height=BY.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(Ide,o),n.addImageSubRegion(Ide,fKe)}let i=e.add({collection:t});return i.setImageTexture(n),i}var ng={};function hKe(e,t,n,i,o,r){return ng.font=t,ng.fillColor=n,ng.strokeColor=i,ng.strokeWidth=o,ng.padding=_a.PADDING,ng.fill=r===nr.FILL||r===nr.FILL_AND_OUTLINE,ng.stroke=r===nr.OUTLINE||r===nr.FILL_AND_OUTLINE,ng.backgroundColor=G.BLACK,C0(e,ng)}function DY(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var mKe=new Tde.default,AKe=/\s/;function pKe(e,t){let n=t._renderedText,i=mKe.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/_a.FONT_SIZE,o<s)for(let g=o;g<s;++g)DY(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=dKe(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=Ri.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,A=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],_=t._verticalOrigin,y=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+_]),C=A[y],E=h.get(y);if(!l(E)||!l(C)){E=new eg(f),h.set(y,E);let B=`${t._fontStyle} ${t._fontWeight} ${_a.FONT_SIZE}px ${t._fontFamily}`,v=hKe(m,B,G.WHITE,G.WHITE,0,nr.FILL);if(C=v.dimensions,A[y]=C,v.width>0&&v.height>0&&!AKe.test(m)){let P=(0,bde.default)(v,{cutoff:_a.CUTOFF,radius:_a.RADIUS}),M=v.getContext("2d"),L=v.width,p=v.height,x=M.getImageData(0,0,L,p);for(let T=0;T<L;T++)for(let w=0;w<p;w++){let R=w*L+T,O=P[R]*255,k=R*4;x.data[k+0]=O,x.data[k+1]=O,x.data[k+2]=O,x.data[k+3]=O}M.putImageData(x,0,0),E.loadImage(y,v)}}let I=r[g];if(l(I)||(I=new lKe,I.dimensions=C,I.billboardTexture=E,r[g]=I),I.billboardTexture.id!==y&&(I.billboardTexture=E,I.dimensions=C),!E.hasImage){DY(e,I);continue}let b=I.billboard,S=e._spareBillboards;l(b)||(S.length>0?b=S.pop():(b=f.add({collection:e}),b._labelDimensions=new U,b._labelTranslate=new U),I.billboard=b),b.setImageTexture(E),b.show=t._show,b.position=t._position,b.eyeOffset=t._eyeOffset,b.pixelOffset=t._pixelOffset,b.horizontalOrigin=Ri.LEFT,b.verticalOrigin=t._verticalOrigin,b.heightReference=t._heightReference,b.scale=t.totalScale,b.pickPrimitive=t,b.id=t._id,b.translucencyByDistance=t._translucencyByDistance,b.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,b.scaleByDistance=t._scaleByDistance,b.distanceDisplayCondition=t._distanceDisplayCondition,b.disableDepthTestDistance=t._disableDepthTestDistance,b._batchIndex=t._batchIndex,b.outlineColor=t.outlineColor,t.style===nr.FILL_AND_OUTLINE?(b.color=t._fillColor,b.outlineWidth=t.outlineWidth):t.style===nr.FILL?(b.color=t._fillColor,b.outlineWidth=0):t.style===nr.OUTLINE&&(b.color=G.TRANSPARENT,b.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function xde(e,t,n){return t===Ri.CENTER?-e/2:t===Ri.RIGHT?-(e+n.x):n.x}var Br=new U,gKe=new U;function _Ke(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=U.clone(l(f)?e._backgroundPadding:U.ZERO,gKe);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let M=0;M<u;++M){if(n.charAt(M)===` +`){r.push(i),++c,i=0;continue}let p=t[M].dimensions;l(p)&&(a=Math.max(a,p.height-p.descent),s=Math.max(s,p.descent),i+=p.width-p.minx,M<u-1&&(i+=t[M+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let A=a+s,g=e.totalScale,m=e._horizontalOrigin,_=e._verticalOrigin,y=0,C=r[y],E=xde(C,m,h),I=(l(e._lineHeight)?e._lineHeight:uKe*e._fontSize)/e._relativeSize,b=I*(c-1),S=o,B=A+b;l(f)&&(S+=h.x*2,B+=h.y*2,f._labelHorizontalOrigin=m),Br.x=E*g,Br.y=0;let v=!0,P=0;for(let M=0;M<u;++M){if(n.charAt(M)===` +`){++y,P+=I,C=r[y],E=xde(C,m,h),Br.x=E*g,v=!0;continue}let L=t[M],p=L.dimensions;if(l(p)&&(_===zn.TOP?(Br.y=p.height-a-h.y,Br.y+=_a.PADDING):_===zn.CENTER?Br.y=(b+p.height-a)/2:_===zn.BASELINE?(Br.y=b,Br.y-=_a.PADDING):(Br.y=b+s+h.y,Br.y-=_a.PADDING),Br.y=(Br.y-p.descent-P)*g,v&&(Br.x-=_a.PADDING*g,v=!1),l(L.billboard)&&(L.billboard._setTranslate(Br),L.billboard._labelDimensions.x=S,L.billboard._labelDimensions.y=B,L.billboard._labelHorizontalOrigin=m),M<u-1)){let x=t[M+1];Br.x+=(p.width-p.minx+x.dimensions.minx)*g}}if(l(f)&&n.split(` +`).join("").length>0&&(m===Ri.CENTER?E=-o/2-h.x:m===Ri.RIGHT?E=-(o+h.x*2):E=0,Br.x=E*g,_===zn.TOP?Br.y=A-a-s:_===zn.CENTER?Br.y=(A-a)/2-s:_===zn.BASELINE?Br.y=-h.y-s:Br.y=0,Br.y=Br.y*g,f.width=S,f.height=B,f._setTranslate(Br),f._labelTranslate=U.clone(Br,f._labelTranslate)),Wf(e.heightReference))for(let M=0;M<u;++M){let p=t[M].billboard;l(p)&&(p._labelTranslate=U.clone(Br,p._labelTranslate))}}function Sde(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)DY(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function oA(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new nf({scene:this._scene,textureAtlas:new p0({initialSize:BY})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new eg(t),this._glyphBillboardCollection=new nf({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=G.clone(G.WHITE),this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT}Object.defineProperties(oA.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});oA.prototype.add=function(e){let t=new yy(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};oA.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),Sde(this,e),!0}return!1};oA.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)Sde(this,e[t]);e.length=0};oA.prototype.contains=function(e){return l(e)&&e._labelCollection===this};oA.prototype.get=function(e){return this._labels[e]};oA.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(pKe(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(_Ke(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Uo.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};oA.prototype.isDestroyed=function(){return!1};oA.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var rA=oA;var IL=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var Ml={};Ml.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};Ml.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var yKe=new Ae;Ml.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,yKe).height}return i};var CKe=new N,EKe=new d,wde=new d,IKe=new mn(d.UNIT_X,0),Bde=new d,xKe=new mn(d.UNIT_X,0),bKe=new d,TKe=new d,PY=[];function vde(e,t,n){let i=PY;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var mV=new Ae,hV=new Ae,Cy=new d,RY=new d,SKe=new d,vY=new up,xL=new uc;function wKe(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,RY),u=i.scaleToGeodeticSurface(t,SKe),f=Ml.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,mV),A=i.cartesianToCartographic(u,hV),g=vde(f,o,r);vY.setEndPoints(h,A);let m=vY.surfaceDistance/f,_=a;h.height=o;let y=i.cartographicToCartesian(h,Cy);d.pack(y,s,_),_+=3;for(let C=1;C<f;C++){let E=vY.interpolateUsingSurfaceDistance(C*m,hV);E.height=g[C],y=i.cartographicToCartesian(E,Cy),d.pack(y,s,_),_+=3}return _}function BKe(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,mV),u=i.cartesianToCartographic(t,hV),f=Ml.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=vde(f,o,r);xL.ellipsoid.equals(i)||(xL=new uc(void 0,void 0,i)),xL.setEndPoints(c,u);let A=xL.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,Cy);d.pack(m,s,g),g+=3;for(let _=1;_<f;_++){let y=xL.interpolateUsingSurfaceDistance(_*A,hV);y.height=h[_],m=i.cartographicToCartesian(y,Cy),d.pack(m,s,g),g+=3}return g}Ml.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??N.IDENTITY;let o=N.inverseTransformation(t,CKe),r=N.multiplyByPoint(o,d.ZERO,EKe),s=d.normalize(N.multiplyByPointAsVector(o,d.UNIT_Y,wde),wde),a=mn.fromPointNormal(r,s,IKe),c=d.normalize(N.multiplyByPointAsVector(o,d.UNIT_X,Bde),Bde),u=mn.fromPointNormal(r,c,xKe),f=1;n.push(d.clone(e[0]));let h=n[0],A=e.length;for(let g=1;g<A;++g){let m=e[g];if(mn.getPointDistance(u,h)<0||mn.getPointDistance(u,m)<0){let _=hi.lineSegmentPlane(h,m,a,bKe);if(l(_)){let y=d.multiplyByScalar(s,5e-9,TKe);mn.getPointDistance(a,h)<0&&d.negate(y,y),n.push(d.add(_,y,new d)),i.push(f+1),d.negate(y,y),n.push(d.add(_,y,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};Ml.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let _=i.scaleToGeodeticSurface(t[0],RY);if(o=r?o[0]:o,o!==0){let y=i.geodeticSurfaceNormal(_,Cy);d.multiplyByScalar(y,o,y),d.add(_,y,_)}return[_.x,_.y,_.z]}let s=e.minDistance;if(!l(s)){let _=e.granularity??D.RADIANS_PER_DEGREE;s=D.chordLength(_,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=Ml.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let _=t[c],y=t[c+1],C=r?o[c]:o,E=r?o[c+1]:o;h=wKe(_,y,s,i,C,E,f,h)}PY.length=0;let A=t[n-1],g=i.cartesianToCartographic(A,mV);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,Cy);return d.pack(m,f,u-3),f};var Dde=new Ae,DKe=new Ae;Ml.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let C=i.scaleToGeodeticSurface(t[0],RY);if(o=r?o[0]:o,o!==0){let E=i.geodeticSurfaceNormal(C,Cy);d.multiplyByScalar(E,o,E),d.add(C,E,C)}return[C.x,C.y,C.z]}let s=e.granularity??D.RADIANS_PER_DEGREE,a=0,c,u=i.cartesianToCartographic(t[0],Dde),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],DKe),a+=Ml.numberOfPointsRhumbLine(u,f,s),u=Ae.clone(f,Dde);let h=(a+1)*3,A=new Array(h),g=0;for(c=0;c<n-1;c++){let C=t[c],E=t[c+1],I=r?o[c]:o,b=r?o[c+1]:o;g=BKe(C,E,s,i,I,b,A,g)}PY.length=0;let m=t[n-1],_=i.cartesianToCartographic(m,mV);_.height=r?o[n-1]:o;let y=i.cartographicToCartesian(_,Cy);return d.pack(y,A,h-3),A};Ml.generateCartesianArc=function(e){let t=Ml.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};Ml.generateCartesianRhumbArc=function(e){let t=Ml.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Wi=Ml;function of(e,t){e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=ro.fromType(ro.ColorType,{color:new G(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=Mo(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=N.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Wi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(Rde),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=le.fromPoints(this._actualPositions),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new le}var Pde=of.POSITION_INDEX=0,vKe=of.SHOW_INDEX=1,PKe=of.WIDTH_INDEX=2,RKe=of.MATERIAL_INDEX=3,bL=of.POSITION_SIZE_INDEX=4,MKe=of.DISTANCE_DISPLAY_CONDITION=5,Rde=of.NUMBER_OF_PROPERTIES=6;function ig(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(of.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,ig(this,vKe))}},positions:{get:function(){return this._positions},set:function(e){let t=Mo(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&ig(this,bL),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=le.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),ig(this,Pde),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,ig(this,RKe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,ig(this,PKe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,ig(this,bL)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),ig(this,MKe))}}});of.prototype.update=function(){let e=N.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Pde]>0||this._propertiesChanged[bL]>0;if((!N.equals(e,this._modelMatrix)||i)&&(this._segments=Wi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=le.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=N.clone(e,this._modelMatrix),this._segments.positions.length!==t)ig(this,bL);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){ig(this,bL);break}}};of.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};of.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<Rde-1;++t)e[t]=0};of.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var md=of;var NKe=md.SHOW_INDEX,LKe=md.WIDTH_INDEX,NY=md.POSITION_INDEX,OKe=md.MATERIAL_INDEX,Mde=md.POSITION_SIZE_INDEX,FKe=md.DISTANCE_DISPLAY_CONDITION,Ude=md.NUMBER_OF_PROPERTIES,Au={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function kh(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Ude),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Qe.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=G.clone(G.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(kh.prototype,{length:{get:function(){return LY(this),this._polylines.length}}});kh.prototype.add=function(e){let t=new md(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};kh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};kh.prototype.removeAll=function(){OY(this),Wde(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};kh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};kh.prototype.get=function(e){return LY(this),this._polylines[e]};function QKe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:q.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:q.FLOAT,componentsPerAttribute:2}];e._batchTable=new cE(t,n,e._polylines.length)}var Gde=new ei,zde=new se,Vde=new U;kh.prototype.update=function(e){if(LY(this),this._polylines.length===0||!this.show)return;HKe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(Yt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");QKe(this,t),this._createBatchTable=!1}if(this._createVertexArray||UKe(this))Ode(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ie.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Mde]||o[OKe])Ode(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let A=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===A){o[NY]&&A.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[NKe]||o[LKe])&&this._batchTable.setBatchedAttribute(i._index,0,new U(i._width,i._show)),this._batchTable.attributes.length>2){if(o[NY]||o[Mde]){let m=e.mode===ie.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,_=ei.fromCartesian(m.center,Gde),y=se.fromElements(_.low.x,_.low.y,_.low.z,m.radius,zde);this._batchTable.setBatchedAttribute(i._index,2,_.high),this._batchTable.setBatchedAttribute(i._index,3,y)}if(o[FKe]){let m=Vde;m.x=0,m.y=Number.MAX_VALUE;let _=i.distanceDisplayCondition;l(_)&&(m.x=_.near,m.y=_.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Ude;++c)o[c]=0;let r=N.IDENTITY;e.mode===ie.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ue.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;kKe(this,e,c,r)}};var TL=new le,Nde=new le;function kKe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,A=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let _=u[m],y=_.buckets,C=y.length;for(let E=0;E<C;++E){let I=y[E],b=I.offset,S=I.bucket.shaderProgram,B=I.bucket.polylines,v=B.length,P,M,L=0,p,x;for(let T=0;T<v;++T){let w=B[T],R=zKe(w._material);if(R!==P){if(l(P)&&L>0){let z=M.isTranslucent();a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=Tt(A(M._uniforms),e._uniformMap),p.boundingVolume=le.clone(TL,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=z?e._translucentRS:e._opaqueRS,p.pass=z?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,b+=L,L=0,c=!0,r.push(p)}M=w._material,M.update(o),P=R}let O=w._locatorBuckets,k=O.length;for(let z=0;z<k;++z){let F=O[z];F.locator===I&&(L+=F.count)}let Q;t.mode===ie.SCENE3D?Q=w._boundingVolumeWC:t.mode===ie.COLUMBUS_VIEW?Q=w._boundingVolume2D:t.mode===ie.SCENE2D?l(w._boundingVolume2D)&&(Q=le.clone(w._boundingVolume2D,Nde),Q.center.x=0):l(w._boundingVolumeWC)&&l(w._boundingVolume2D)&&(Q=le.union(w._boundingVolumeWC,w._boundingVolume2D,Nde)),c?(c=!1,le.clone(Q,TL)):le.union(Q,TL,TL)}l(P)&&L>0&&(a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=Tt(A(M._uniforms),e._uniformMap),p.boundingVolume=le.clone(TL,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=M.isTranslucent()?e._translucentRS:e._opaqueRS,p.pass=M.isTranslucent()?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,c=!0,r.push(p)),P=void 0}}n.length=a}kh.prototype.isDestroyed=function(){return!1};kh.prototype.destroy=function(){return Hde(this),OY(this),Wde(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function UKe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[NY]?(i.bufferUsage!==Qe.STREAM_DRAW&&(t=!0,i.bufferUsage=Qe.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Qe.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Qe.STATIC_DRAW):i.frameCount--),t}var Lde=[0,0,0];function Ode(e,t,n){e._createVertexArray=!1,OY(e),Hde(e),VKe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,A,g;for(A in h)h.hasOwnProperty(A)&&(g=h[A],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,_=new Float32Array(6*f*3),y=new Float32Array(f*4),C,E=0,I=0,b=0;for(A in h)if(h.hasOwnProperty(A)){g=h[A],g.write(_,y,E,I,b,r,t,n),m===ie.MORPHING&&(l(C)||(C=new Float32Array(6*f*3)),g.writeForMorph(C,E));let x=g.lengthOfPositions;E+=6*x*3,I+=x*4,b+=x*4,c=g.updateIndices(i,a,u,c)}let S=e._positionBufferUsage.bufferUsage,B=Qe.STATIC_DRAW;e._positionBuffer=Ct.createVertexBuffer({context:t,typedArray:_,usage:S});let v;l(C)&&(v=Ct.createVertexBuffer({context:t,typedArray:C,usage:S})),e._texCoordExpandAndBatchIndexBuffer=Ct.createVertexBuffer({context:t,typedArray:y,usage:B});let P=3*Float32Array.BYTES_PER_ELEMENT,M=4*Float32Array.BYTES_PER_ELEMENT,L=0,p=i.length;for(let x=0;x<p;++x)if(o=i[x],o.length>0){let T=new Uint16Array(o),w=Ct.createIndexBuffer({context:t,typedArray:T,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});L+=a[x];let R=6*(x*(P*D.SIXTY_FOUR_KILOBYTES)-L*P),O=P+R,k=P+O,Q=P+k,z=P+Q,F=P+z,H=x*(M*D.SIXTY_FOUR_KILOBYTES)-L*M,W=[{index:Au.position3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:R,strideInBytes:6*P},{index:Au.position3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:Au.position2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:R,strideInBytes:6*P},{index:Au.position2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:Au.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:k,strideInBytes:6*P},{index:Au.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:Au.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:k,strideInBytes:6*P},{index:Au.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:Au.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:Au.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:Au.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:Au.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:Au.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:q.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:H}],Z,Y,$,X;m===ie.SCENE3D?(Y=e._positionBuffer,Z="vertexBuffer",$=Lde,X="value"):m===ie.SCENE2D||m===ie.COLUMBUS_VIEW?(Y=Lde,Z="value",$=e._positionBuffer,X="vertexBuffer"):(Y=v,Z="vertexBuffer",$=e._positionBuffer,X="vertexBuffer"),W[0][Z]=Y,W[1][Z]=Y,W[2][X]=$,W[3][X]=$,W[4][Z]=Y,W[5][Z]=Y,W[6][X]=$,W[7][X]=$,W[8][Z]=Y,W[9][Z]=Y,W[10][X]=$,W[11][X]=$;let he=new li({context:t,attributes:W,indexBuffer:w});e._vertexArrays.push({va:he,buckets:u[x]})}}}function GKe(e,t){return t instanceof Mt?t.id:t}var AV=[];function zKe(e){let t=ro._uniformList[e.type],n=t.length;AV.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];AV[i]=r,AV[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(AV,GKe)}`}function VKe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new sA(c,t,n)),u.addPolyline(a)}}}function HKe(e,t){let n=t.mode;(e._mode!==n||!N.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=N.clone(e.modelMatrix),e._createVertexArray=!0)}function LY(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function OY(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Hde(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}kh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function Wde(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function MY(e,t,n){this.count=e,this.offset=t,this.bucket=n}function sA(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}sA.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};sA.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),Wt.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new He({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,mE]}),r=t.getVertexShaderCallback()(IL),s=new He({defines:i,sources:[zu,r]});this.shaderProgram=an.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:Au})};function jde(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(mn.ORIGIN_ZX_PLANE)===tn.INTERSECTING}sA.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ie.SCENE3D||!jde(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var Xs=new d,Ad=new d,pd=new d,pV=new d,WKe=new se,jKe=new U;sA.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*D.PI,f=this.polylines,h=f.length;for(let A=0;A<h;++A){let g=f[A],m=g.width,_=g.show&&m>0,y=g._index,C=this.getSegments(g,a),E=C.positions,I=C.lengths,b=E.length,S=g.getPickId(s).color,B=0,v=0,P;for(let k=0;k<b;++k){k===0?g._loop?P=E[b-2]:(P=pV,d.subtract(E[0],E[1],P),d.add(E[0],P,P)):P=E[k-1],d.clone(P,Ad),d.clone(E[k],Xs),k===b-1?g._loop?P=E[1]:(P=pV,d.subtract(E[b-1],E[b-2],P),d.add(E[b-1],P,P)):P=E[k+1],d.clone(P,pd);let Q=I[B];k===v+Q&&(v+=Q,++B);let z=k-v===0,F=k===v+I[B]-1;c===ie.SCENE2D&&(Ad.z=0,Xs.z=0,pd.z=0),(c===ie.SCENE2D||c===ie.MORPHING)&&(z||F)&&u-Math.abs(Xs.x)<1&&((Xs.x<0&&Ad.x>0||Xs.x>0&&Ad.x<0)&&d.clone(Xs,Ad),(Xs.x<0&&pd.x>0||Xs.x>0&&pd.x<0)&&d.clone(Xs,pd));let H=z?2:0,W=F?2:4;for(let Z=H;Z<W;++Z){ei.writeElements(Xs,e,n),ei.writeElements(Ad,e,n+6),ei.writeElements(pd,e,n+12);let Y=Z-2<0?-1:1;t[o]=k/(b-1),t[o+1]=2*(Z%2)-1,t[o+2]=Y,t[o+3]=y,n+=18,o+=4}}let M=WKe;M.x=G.floatToByte(S.red),M.y=G.floatToByte(S.green),M.z=G.floatToByte(S.blue),M.w=G.floatToByte(S.alpha);let L=jKe;L.x=m,L.y=_?1:0;let p=c===ie.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,x=ei.fromCartesian(p.center,Gde),T=x.high,w=se.fromElements(x.low.x,x.low.y,x.low.z,p.radius,zde),R=Vde;R.x=0,R.y=Number.MAX_VALUE;let O=g.distanceDisplayCondition;l(O)&&(R.x=O.near,R.y=O.far),r.setBatchedAttribute(y,0,L),r.setBatchedAttribute(y,1,M),r.attributes.length>2&&(r.setBatchedAttribute(y,2,T),r.setBatchedAttribute(y,3,w),r.setBatchedAttribute(y,4,R))}};var YKe=new d,qKe=new d,KKe=new d,Fde=new d;sA.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let A=0;A<u;++A){let g;A===0?s._loop?g=a[u-2]:(g=Fde,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[A-1],g=N.multiplyByPoint(n,g,qKe);let m=N.multiplyByPoint(n,a[A],YKe),_;A===u-1?s._loop?_=a[1]:(_=Fde,d.subtract(a[u-1],a[u-2],_),d.add(a[u-1],_,_)):_=a[A+1],_=N.multiplyByPoint(n,_,KKe);let y=c[f];A===h+y&&(h+=y,++f);let C=A-h===0,E=A===h+c[f]-1,I=C?2:0,b=E?2:4;for(let S=I;S<b;++S)ei.writeElements(m,e,t),ei.writeElements(g,e,t+6),ei.writeElements(_,e,t+12),t+=18}}};var XKe=new Array(1);sA.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new MY(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let A=u[h];A._locatorBuckets=[];let g;if(this.mode===ie.SCENE3D){g=XKe;let _=A._actualPositions.length;if(_>0)g[0]=_;else continue}else g=A._segments.lengths;let m=g.length;if(m>0){let _=0;for(let y=0;y<m;++y){let C=g[y]-1;for(let E=0;E<C;++E)c+4>D.SIXTY_FOUR_KILOBYTES&&(A._locatorBuckets.push({locator:r,count:_}),_=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new MY(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),_+=6,s+=6,i+=6,c+=4}A._locatorBuckets.push({locator:r,count:_}),c+4>D.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new MY(0,0,this),n[++o]=[r])}A._clean()}return r.count=s,i};sA.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var IT={positions:void 0,lengths:void 0},Qde=new Array(1),JKe=new d,ZKe=new Ae;sA.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ie.SCENE3D)return Qde[0]=n.length,IT.positions=n,IT.lengths=Qde,IT;jde(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=JKe;for(let u=0;u<s;++u)a=n[u],c=N.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,ZKe)));if(o.length>0){e._boundingVolume2D=le.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return IT.positions=o,IT.lengths=e._segments.lengths,IT};var kde;sA.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*D.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=kde,c=6*s*3;!l(a)||a.length<c?a=kde=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,A=0,g=0,m=0,_;s=f.length;for(let y=0;y<s;++y){y===0?t._loop?_=f[s-2]:(_=pV,d.subtract(f[0],f[1],_),d.add(f[0],_,_)):_=f[y-1],d.clone(_,Ad),d.clone(f[y],Xs),y===s-1?t._loop?_=f[1]:(_=pV,d.subtract(f[s-1],f[s-2],_),d.add(f[s-1],_,_)):_=f[y+1],d.clone(_,pd);let C=h[g];y===m+C&&(m+=C,++g);let E=y-m===0,I=y===m+h[g]-1;o===ie.SCENE2D&&(Ad.z=0,Xs.z=0,pd.z=0),(o===ie.SCENE2D||o===ie.MORPHING)&&(E||I)&&r-Math.abs(Xs.x)<1&&((Xs.x<0&&Ad.x>0||Xs.x>0&&Ad.x<0)&&d.clone(Xs,Ad),(Xs.x<0&&pd.x>0||Xs.x>0&&pd.x<0)&&d.clone(Xs,pd));let b=E?2:0,S=I?2:4;for(let B=b;B<S;++B)ei.writeElements(Xs,a,A),ei.writeElements(Ad,a,A+6),ei.writeElements(pd,a,A+12),A+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Uh=kh;function Ey(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new nf({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new rA({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Uh,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Ey.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function $Ke(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+te.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,te.pack(t,s,a),s}var e7e=new di("createVectorTilePoints",5),t7e=new d;function n7e(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=$Ke(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=e7e.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,A=n.length/3,g=e._heightReference??Ze.NONE;for(let m=0;m<A;++m){let _=h[m],y=d.unpack(n,m*3,t7e),C=c.add();C.position=y,C._batchIndex=_,C.heightReference=g;let E=u.add();E.text=" ",E.position=y,E._batchIndex=_,E.heightReference=g;let I=f.add();I.positions=[d.clone(y),d.clone(y)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}Ey.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new tg(e,c,u,f,h)}};Ey.prototype.applyDebugSettings=function(e,t){e?(G.clone(t,this._billboardCollection._highlightColor),G.clone(t,this._labelCollection._highlightColor),G.clone(t,this._polylineCollection._highlightColor)):(G.clone(G.WHITE,this._billboardCollection._highlightColor),G.clone(G.WHITE,this._labelCollection._highlightColor),G.clone(G.WHITE,this._polylineCollection._highlightColor))};function i7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=tg.defaultPointSize,s.color=tg.defaultColor,s.pointOutlineColor=tg.defaultPointOutlineColor,s.pointOutlineWidth=tg.defaultPointOutlineWidth,s.labelColor=G.WHITE,s.labelOutlineColor=G.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=nr.FILL,s.labelText=void 0,s.backgroundColor=new G(.165,.165,.165,.8),s.backgroundPadding=new U(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=G.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=Ri.CENTER,s.verticalOrigin=zn.CENTER,s.labelHorizontalOrigin=Ri.RIGHT,s.labelVerticalOrigin=zn.BASELINE}}var o7e=new G,r7e=new G,s7e=new G,a7e=new G,c7e=new G,l7e=new G,SL=new jt,wL=new jt,FY=new Ut;Ey.prototype.applyStyle=function(e,t){if(!l(e)){i7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,o7e)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,r7e)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,s7e)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,a7e)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,c7e)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(SL.near=a.x,SL.nearValue=a.y,SL.far=a.z,SL.farValue=a.w,s.scaleByDistance=SL):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(wL.near=a.x,wL.nearValue=a.y,wL.far=a.z,wL.farValue=a.w,s.translucencyByDistance=wL):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(FY.near=a.x,FY.far=a.y,s.distanceDisplayCondition=FY):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,l7e)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};Ey.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=n7e(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};Ey.prototype.isDestroyed=function(){return!1};Ey.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var BL=Ey;function og(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??d.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(og.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function u7e(e){let t=new Float64Array(3+d.packedLength+te.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,ae.pack(e._rectangle,t,n),t}function f7e(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Fn.unpack(t,n),n+=Fn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=G.unpack(t,n);n+=G.packedLength;let u=t[n++],f=t[n++],h=t[n++],A=new Array(h);for(let g=0;g<h;++g)A[g]=t[n++];s[a]=new Wm({color:c,offset:u,count:f,batchIds:A})}}var d7e=new di("createVectorTilePolygons",5),h7e=new G;function m7e(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let _=0;_<m;++_){let y=g.getColor(_,h7e);s[_]=y.toRgba()}a=e._packedBuffer=u7e(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let A=d7e.scheduleTask(u,c);if(l(A))return A.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),_=m[0];f7e(e,m),e._indices=Oe.getSizeInBytes(_)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),A7e(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function A7e(e){l(e._primitive)||(e._primitive=new NE({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}og.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};og.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};og.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};og.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};og.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=m7e(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};og.prototype.isDestroyed=function(){return!1};og.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var DL=og;var vL=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function Gh(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Gh.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function p7e(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var g7e=new di("createVectorTilePolylines",5),xT={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function _7e(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=p7e(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=g7e.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Oe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),y7e(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function y7e(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Ct.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),f=Ct.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),h=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),A=Ct.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),g=Ct.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),m=Ct.createIndexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),_=[{index:xT.previousPosition,vertexBuffer:u,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.currentPosition,vertexBuffer:f,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.nextPosition,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.expandAndWidth,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:2},{index:xT.a_batchId,vertexBuffer:g,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:_,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var PL=new N,Yde=new d;function C7e(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return N.clone(n,PL),N.multiplyByPoint(PL,e._center,Yde),N.setTranslation(PL,Yde,PL),PL},u_highlightColor:function(){return e._highlightColor}})}function E7e(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var I7e=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function x7e(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(vL),o=n.getFragmentShaderCallback(!1,void 0,!1)(I7e),r=new He({defines:["VECTOR_TILE",Wt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[zu,i]}),s=new He({defines:["VECTOR_TILE"],sources:[o]});e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:xT})}function b7e(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Be.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}Gh.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],A=o[r+1]-h;for(s=0;s<A;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};Gh.prototype.getPositions=function(e){return Gh.getPolylinePositions(this,e)};Gh.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};Gh.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function T7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var S7e=new G,w7e=G.WHITE,B7e=!0;Gh.prototype.applyStyle=function(e,t){if(!l(e)){T7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,S7e):w7e,s.show=l(e.show)?e.show.evaluate(s):B7e}};Gh.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=_7e(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}C7e(this,t),x7e(this,t),E7e(this);let n=e.passes;(n.render||n.pick)&&b7e(this,e)};Gh.prototype.isDestroyed=function(){return!1};Gh.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var I0=Gh;var RL=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var ML=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function rg(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new U(Ti._defaultMinTerrainHeight,Ti._defaultMaxTerrainHeight),this._boundingVolume=Fn.fromRectangle(e.rectangle,Ti._defaultMinTerrainHeight,Ti._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(rg.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function D7e(e,t,n){let i=Ti.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Fn.fromRectangle(c,o,r,n,a)}function v7e(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var P7e=new di("createVectorTileClampedPolylines"),Iy={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function R7e(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=v7e(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=P7e.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Oe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),M7e(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function M7e(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Ct.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),A=Ct.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),g=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),m=Ct.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),_=Ct.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),y=Ct.createVertexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW}),C=Ct.createVertexBuffer({context:t,typedArray:c,usage:Qe.STATIC_DRAW}),E=Ct.createIndexBuffer({context:t,typedArray:u,usage:Qe.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),I=[{index:Iy.startEllipsoidNormal,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:Iy.endEllipsoidNormal,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:Iy.startPositionAndHeight,vertexBuffer:g,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.endPositionAndHeight,vertexBuffer:m,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.startFaceNormalAndVertexCorner,vertexBuffer:_,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.endFaceNormalAndHalfWidth,vertexBuffer:y,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.a_batchId,vertexBuffer:C,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:I,indexBuffer:E}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var NL=new N,qde=new d;function N7e(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return N.clone(n,NL),N.multiplyByPoint(NL,e._center,qde),N.setTranslation(NL,qde,NL),NL},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function Kde(e){return Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function L7e(e){l(e._rs)||(e._rs=Kde(!1),e._rs3DTiles=Kde(!0))}function O7e(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(RL),o=n.getFragmentShaderCallback(!1,void 0,!0)(ML),r=new He({defines:["VECTOR_TILE",Wt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[zu,i]}),s=new He({defines:["VECTOR_TILE"],sources:[o]});e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:Iy})}function F7e(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Be.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=nt.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===Jn.TERRAIN||i===Jn.BOTH)&&t.commandList.push(n),(i===Jn.CESIUM_3D_TILE||i===Jn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}rg.prototype.getPositions=function(e){return I0.getPolylinePositions(this,e)};rg.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};rg.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Q7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var k7e=new G,U7e=G.WHITE,G7e=!0;rg.prototype.applyStyle=function(e,t){if(!l(e)){Q7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,k7e):U7e,s.show=l(e.show)?e.show.evaluate(s):G7e}};function z7e(e){return Ti.initialize().then(function(){D7e(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}rg.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=z7e(this).then(R7e(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}N7e(this,t),O7e(this,t),L7e(this);let n=e.passes;(n.render||n.pick)&&F7e(this,e)};rg.prototype.isDestroyed=function(){return!1};rg.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var LL=rg;var QY=32767,V7e=new Ae,H7e=new d;function W7e(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);On.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],A=a[f],g=c[f],m=D.lerp(t.west,t.east,h/QY),_=D.lerp(t.south,t.north,A/QY),y=D.lerp(n,i,g/QY),C=Ae.fromRadians(m,_,y,V7e),E=o.cartographicToCartesian(C,H7e);d.pack(E,u,f*3)}return u}var OL=W7e;function Vh(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,X7e(this,i,o)}Object.defineProperties(Vh.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function j7e(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function Y7e(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let A=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,A,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let A=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,A,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let A=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,A,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let A=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=A++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=A++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=A++}return{polygons:n,polylines:i,points:o}}var zh=Uint32Array.BYTES_PER_ELEMENT;function q7e(e){return new I0(e)}function K7e(e){return new LL(e)}function X7e(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=zh;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=zh;let s=o.getUint32(n,!0);if(n+=zh,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=zh,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=zh;let u=o.getUint32(n,!0);n+=zh;let f=o.getUint32(n,!0);n+=zh;let h=o.getUint32(n,!0);n+=zh;let A=o.getUint32(n,!0);n+=zh;let g=o.getUint32(n,!0);n+=zh;let m=o.getUint32(n,!0);n+=zh;let _=dr(i,n,a);n+=a;let y=new Uint8Array(t,n,c);n+=c;let C,E;u>0&&(C=dr(i,n,u),n+=u,f>0&&(E=new Uint8Array(t,n,f),E=new Uint8Array(E),n+=f));let I=_.POLYGONS_LENGTH??0,b=_.POLYLINES_LENGTH??0,S=_.POINTS_LENGTH??0,B=I+b+S,v=new Ip(e,B,C,E,j7e(e));if(e._batchTable=v,B===0)return;let P=new Ph(_,y),M=P.getGlobalProperty("REGION");if(!l(M))throw new ce("Feature table global property: REGION must be defined");let L=ae.unpack(M),p=M[4],x=M[5],T=e._tile.computedTransform,w=P.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(w)?(w=d.unpack(w),N.multiplyByPoint(T,w,w)):(w=ae.center(L),w.height=D.lerp(p,x,.5),w=te.WGS84.cartographicToCartesian(w));let R=Y7e(_,y);if(n+=(4-n%4)%4,I>0){P.featuresLength=I;let k=P.getPropertyArray("POLYGON_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_COUNT",q.UNSIGNED_INT,1);if(!l(k))throw new ce("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYGON_INDEX_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_INDEX_COUNT",q.UNSIGNED_INT,1);if(!l(Q))throw new ce("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let z=k.reduce(function($,X){return $+X*2},0),F=Q.reduce(function($,X){return $+X},0),H=new Uint32Array(t,n,F);n+=h;let W=new Uint16Array(t,n,z);n+=A;let Z,Y;l(_.POLYGON_MINIMUM_HEIGHTS)&&l(_.POLYGON_MAXIMUM_HEIGHTS)&&(Z=P.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",q.FLOAT,1),Y=P.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",q.FLOAT,1)),e._polygons=new DL({positions:W,counts:k,indexCounts:Q,indices:H,minimumHeight:p,maximumHeight:x,polygonMinimumHeights:Z,polygonMaximumHeights:Y,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,batchIds:R.polygons,modelMatrix:T})}let O=e._tileset;if(b>0){P.featuresLength=b;let k=P.getPropertyArray("POLYLINE_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYLINE_COUNT",q.UNSIGNED_INT,1);if(!l(k))throw new ce("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYLINE_WIDTHS",q.UNSIGNED_SHORT,1);if(!l(Q)){Q=new Uint16Array(b);for(let Z=0;Z<b;++Z)Q[Z]=2}let z=k.reduce(function(Z,Y){return Z+Y*3},0),F=new Uint16Array(t,n,z);n+=g;let H=O.examineVectorLinesFunction;if(l(H)){let Z=OL(new Uint16Array(F),L,p,x,te.WGS84);J7e(Z,k,R.polylines,v,e.url,H)}let W=q7e;l(O.classificationType)&&(W=K7e),e._polylines=W({positions:F,widths:Q,counts:k,batchIds:R.polylines,minimumHeight:p,maximumHeight:x,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,classificationType:O.classificationType,keepDecodedPositions:O.vectorKeepDecodedPositions})}if(S>0){let k=new Uint16Array(t,n,S*3);n+=m,e._points=new BL({positions:k,batchIds:R.points,minimumHeight:p,maximumHeight:x,rectangle:L,batchTable:v,heightReference:O.heightReference,scene:O.scene})}}function kY(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}Vh.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Vh.prototype.getFeature=function(e){return l(this._features)||kY(this),this._features[e]};Vh.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};Vh.prototype.applyStyle=function(e){l(this._features)||kY(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};Vh.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||kY(this),this._batchTable.update(e,t),this._ready=!0)};Vh.prototype.pick=function(e,t,n){};Vh.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};Vh.prototype.isDestroyed=function(){return!1};Vh.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function J7e(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var FL=Vh;function Ha(){}Ha._maxSortingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);Ha._sorterTaskProcessor=void 0;Ha._taskProcessorReady=!1;Ha._error=void 0;Ha._getSorterTaskProcessor=function(){if(!l(Ha._sorterTaskProcessor)){let e=new di("gaussianSplatSorter",Ha._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ha._taskProcessorReady=!0:Ha._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ha._error=t}),Ha._sorterTaskProcessor=e}return Ha._sorterTaskProcessor};Ha.radixSortIndexes=function(e){let t=Ha._getSorterTaskProcessor();if(l(Ha._error))throw Ha._error;if(Ha._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var bT=Ha;function Wa(){}Wa._maxSortingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);Wa._textureTaskProcessor=void 0;Wa._taskProcessorReady=!1;Wa._error=void 0;Wa._getTextureTaskProcessor=function(){if(!l(Wa._textureTaskProcessor)){let e=new di("gaussianSplatTextureGenerator",Wa._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Wa._taskProcessorReady=!0:Wa._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Wa._error=t}),Wa._textureTaskProcessor=e}return Wa._textureTaskProcessor};Wa.generateFromAttributes=function(e){let t=Wa._getTextureTaskProcessor();if(l(Wa._error))throw Wa._error;if(!Wa._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var QL=Wa;function Z7e(e){let t=new Xp;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL}})),this.alphaOptions=new h0,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT)}var kL=Z7e;var UL=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var GL=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var zL=new N,Jde=new N,x0=new N,pu={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function Xde(e,t){return new Mt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:$e.RGBA_INTEGER,pixelDatatype:Ve.UNSIGNED_INT,flipY:!1,sampler:on.NEAREST})}function rf(e){e=e??V.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new N,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=br.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Ot.getAxisCorrectionMatrix(fo.Y,fo.X,new N),this._isDestroyed=!1,this._sorterState=pu.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(rf.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});rf.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};rf.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),ue(this)};rf.prototype.isDestroyed=function(){return this._isDestroyed};rf.prototype.onTileLoad=function(e){this._dirty=!0};rf.prototype.onTileVisible=function(e){};rf.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=N.multiplyTransformation(t,i._axisCorrectionMatrix,zL);N.multiplyTransformation(o,e.content.worldTransform,o);let r=N.multiply(e.tileset.modelMatrix,N.fromArray(e.tileset.root.transform),Jde),s=N.inverse(r,x0),a=N.multiplyTransformation(s,o,zL),c=e.content._originalPositions,u=e.content._originalRotations,f=e.content._originalScales,h=Ot.getAttributeBySemantic(n,at.POSITION).typedArray,A=Ot.getAttributeBySemantic(n,at.ROTATION).typedArray,g=Ot.getAttributeBySemantic(n,at.SCALE).typedArray,m=new d,_=new Le,y=new d;for(let C=0;C<c.length/3;++C)m.x=c[C*3],m.y=c[C*3+1],m.z=c[C*3+2],_.x=u[C*4],_.y=u[C*4+1],_.z=u[C*4+2],_.w=u[C*4+3],y.x=f[C*3],y.y=f[C*3+1],y.z=f[C*3+2],N.fromTranslationQuaternionRotationScale(m,_,y,x0),N.multiplyTransformation(a,x0,x0),N.getTranslation(x0,m),N.getRotation(x0,_),N.getScale(x0,y),h[C*3]=m.x,h[C*3+1]=m.y,h[C*3+2]=m.z,A[C*4]=_.x,A[C*4+1]=_.y,A[C*4+2]=_.z,A[C*4+3]=_.w,g[C*3]=y.x,g[C*3+1]=y.y,g[C*3+2]=y.z};rf.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=QL.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=Xde(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=Xde(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};rf.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new kL(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=pn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Be.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",pe.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",pe.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=Me.TRIANGLE_STRIP,o.addVertexLines(UL),o.addFragmentLines(GL);let a=o.buildShaderProgram(t.context),c=ze(Ue.fromCache(i.renderStateOptions),!0);c.cull.face=Ot.getCullFace(n.modelMatrix,Me.TRIANGLE_STRIP),c=Ue.fromCache(c);let u={screenQuadPosition:0,splatIndex:2},f=new xn.Attribute;if(f.name="_SPLAT_INDEXES",f.typedArray=e._indexes,f.componentDatatype=q.UNSIGNED_INT,f.type=zt.SCALAR,f.normalized=!1,f.count=i.instanceCount,f.constant=0,f.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new ht({attributes:{screenQuadPosition:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...f,variableName:"splatIndex"}},primitiveType:Me.TRIANGLE_STRIP});e._vertexArray=li.fromGeometry({context:t.context,geometry:g,attributeLocations:u,bufferUsage:Qe.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=N.multiply(n.modelMatrix,N.fromArray(n.root.transform),Jde),A=new nt({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Be.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:Me.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=A};rf.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===pu.IDLE){if(!this._dirty&&N.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let u of n){let f=u.content.splatPrimitive,h=s(f);l(a)||(a=q.createTypedArray(r,i*zt.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.POSITION)),this._scales=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.SCALE)),this._rotations=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.ROTATION)),this._colors=o(q.UNSIGNED_BYTE,r=>Ot.getAttributeBySemantic(r,at.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||rf.generateSplatTexture(this,e);return}if(N.clone(e.camera.viewMatrix,this._prevViewMatrix),N.multiply(e.camera.viewMatrix,this._rootTransform,zL),l(this._sorterPromise)||(this._sorterPromise=bT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(zL),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=pu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=pu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=pu.SORTED})}else if(this._sorterState===pu.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=bT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(zL),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=pu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=pu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=pu.SORTED}),this._sorterState=pu.SORTING}else{if(this._sorterState===pu.SORTING)return;if(this._sorterState===pu.SORTED)rf.buildGSplatDrawCommand(this,e),this._sorterState=pu.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===pu.ERROR)throw this._sorterError}this._dirty=!1}};var TT=rf;function gd(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new TT({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(gd.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});gd.fromGltf=async function(e,t,n,i){let o=n,r=we.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:fo.Y,forwardAxis:fo.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=we.createIfNeeded(i);let a=new Xu(s);try{await a.load()}catch(c){throw a.destroy(),new ce(`Failed to load glTF: ${c.message}`)}return new gd(a,e,t,n)};gd.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(TT.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.POSITION).typedArray),this._originalRotations=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.ROTATION).typedArray),this._originalScales=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};gd.prototype.hasProperty=function(e,t){return!1};gd.prototype.getFeature=function(e){};gd.prototype.applyDebugSettings=function(e,t){};gd.prototype.applyStyle=function(e){};gd.prototype.pick=function(e,t,n){};gd.prototype.isDestroyed=function(){return this.isDestroyed};gd.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),ue(this)};var ST=gd;var Zde={b3dm:function(e,t,n,i,o){return tf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return tf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return tf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return UR.fromTileType(e,t,n,i,o,Zde)},externalTileset:function(e,t,n,i){return hL.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new VR(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new FL(e,t,n,i,o)},subt:function(e,t,n,i,o){return Rb.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return Rb.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new ce("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),u=!1;return e.isGltfExtensionRequired instanceof Function&&(u=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),u?ST.fromGltf(e,t,n,c):tf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?ST.fromGltf(e,t,n,i):tf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return tf.fromGeoJson(e,t,n,i)}},b0=Zde;var $7e={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},ir=Object.freeze($7e);var Hh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};Hh.isBinaryFormat=function(e){switch(e){case Hh.BATCHED_3D_MODEL:case Hh.INSTANCED_3D_MODEL:case Hh.COMPOSITE:case Hh.POINT_CLOUD:case Hh.VECTOR:case Hh.GEOMETRY:case Hh.IMPLICIT_SUBTREE:case Hh.VOXEL_BINARY:case Hh.GLTF_BINARY:return!0;default:return!1}};var Js=Object.freeze(Hh);var eXe={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},_d=Object.freeze(eXe);var ya={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},sg=new Array(ya.NUMBER_OF_PASSES);sg[ya.RENDER]=Object.freeze({pass:ya.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});sg[ya.PICK]=Object.freeze({pass:ya.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});sg[ya.SHADOW]=Object.freeze({pass:ya.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});sg[ya.PRELOAD]=Object.freeze({pass:ya.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.PRELOAD_FLIGHT]=Object.freeze({pass:ya.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:ya.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.MOST_DETAILED_PRELOAD]=Object.freeze({pass:ya.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.MOST_DETAILED_PICK]=Object.freeze({pass:ya.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ya.getPassOptions=function(e){return sg[e]};var qo=Object.freeze(ya);function aA(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(aA.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});aA.prototype.hasProperty=function(e,t){return!1};aA.prototype.getFeature=function(e){};aA.prototype.applyDebugSettings=function(e,t){};aA.prototype.applyStyle=function(e){};aA.prototype.update=function(e,t){};aA.prototype.pick=function(e,t,n){};aA.prototype.isDestroyed=function(){return!1};aA.prototype.destroy=function(){return ue(this)};var wT=aA;function ag(e){e=e??V.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(ag.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ag.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};ag.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};ag.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};ag.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};ag.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};ag.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};ag.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var VL=ag;function UY(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){UY._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new VL({content:n,class:o})}}UY._oneTimeWarning=yt;var T0=UY;function tXe(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var S0=tXe;function cg(e){e=e??V.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(cg.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});cg.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};cg.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};cg.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};cg.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};cg.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};cg.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};cg.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var HL=cg;function GY(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){GY._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new HL({tile:n,class:o})}}GY._oneTimeWarning=yt;var WL=GY;function nXe(e){let t=new Uint8Array(e),n=Ih(t);if(n==="glTF"&&(n="glb"),Js.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=iXe(t);if(l(i.root))return{contentType:Js.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:Js.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:Js.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:Js.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:Js.VOXEL_JSON,jsonPayload:i};throw new ce("Invalid tile content.")}function iXe(e){let t;try{t=dr(e)}catch{throw new ce("Invalid tile content.")}return t}var lg=nXe;function yd(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Bc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(yd.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function zY(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function $de(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}yd.prototype.requestInnerContents=function(){if(!oXe(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;zY(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=rXe(this,n,t,this._tile._contentState);return sXe(this)};function oXe(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Bc.serverHasOpenSlots(n,t[n]))return!1;return Bc.heapHasOpenSlots(e.length)}function rXe(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new sr({throttle:!0,throttleByServer:!0,type:Ms.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===fi.CANCELLED){$de(e,i);return}return zY(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===fi.CANCELLED){$de(e,i);return}zY(e,-1),ehe(e,t,f)}})}async function sXe(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>aXe(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function aXe(e,t,n){if(l(t))try{let i=lg(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===Js.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===Js.GEOMETRY||i.contentType===Js.VECTOR;let a,c=b0[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,A=s.implicitCoordinates;a.metadata=h.getContentMetadataView(A,n)}else s.hasImplicitContent||(a.metadata=T0(o,u));let f=S0(o,u);return l(f)&&(a.group=new vE({metadata:f})),a}catch(i){ehe(e,n,i)}}function ehe(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}yd.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};yd.prototype.hasProperty=function(e,t){return!1};yd.prototype.getFeature=function(e){};yd.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};yd.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};yd.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};yd.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};yd.prototype.isDestroyed=function(){return!1};yd.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var jL=yd;var the=Math.cos,nhe=Math.sin,cXe=Math.sqrt,VY={};VY.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=the(f),A=nhe(f),g=a.z*A,m=c.longitude+i*e.granYSin+o*e.granXCos,_=h*the(m),y=h*nhe(m),C=a.x*_,E=a.y*y,I=cXe(C*_+E*y+g*A);if(r.x=C/I,r.y=E/I,r.z=g/I,n){let b=e.stNwCorner;l(b)?(f=b.latitude-e.stGranYCos*i+o*e.stGranXSin,m=b.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var lXe=new Gi,Cd=new d,uXe=new Ae,gV=new d,YL=new Ui;function ihe(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,A=n*f;YL._ellipsoid=te.default,Cd=YL.project(e,Cd),Cd=d.subtract(Cd,gV,Cd);let g=Gi.fromRotation(t,lXe);Cd=Gi.multiplyByVector(g,Cd,Cd),Cd=d.add(Cd,gV,Cd),e=YL.unproject(Cd,e),r-=1,s-=1;let m=e.latitude,_=m+r*A,y=m-c*s,C=m-c*s+r*A,E=Math.max(m,_,y,C),I=Math.min(m,_,y,C),b=e.longitude,S=b+r*u,B=b+s*h,v=b+s*h+r*u,P=Math.max(b,S,B,v),M=Math.min(b,S,B,v);return{north:E,south:I,east:P,west:M,granYCos:c,granYSin:h,granXCos:u,granXSin:A,nwCorner:e}}VY.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,A=!1;u===D.PI_OVER_TWO&&(h=!0),f===-D.PI_OVER_TWO&&(A=!0);let g,m=u-f;c>a?g=D.TWO_PI-c+a:g=a-c;let _=Math.ceil(g/t)+1,y=Math.ceil(m/t)+1,C=g/(_-1),E=m/(y-1),I=ae.northwest(e,r),b=ae.center(e,uXe);(n!==0||i!==0)&&(b.longitude<I.longitude&&(b.longitude+=D.TWO_PI),YL._ellipsoid=te.default,gV=YL.project(b,gV));let S=E,B=C,v=0,P=0,M=ae.clone(e,o),L={granYCos:S,granYSin:v,granXCos:B,granXSin:P,nwCorner:I,boundingRectangle:M,width:_,height:y,northCap:h,southCap:A};if(n!==0){let p=ihe(I,n,C,E,b,_,y);u=p.north,f=p.south,a=p.east,c=p.west,L.granYCos=p.granYCos,L.granYSin=p.granYSin,L.granXCos=p.granXCos,L.granXSin=p.granXSin,M.north=u,M.south=f,M.east=a,M.west=c}if(i!==0){n=n-i;let p=ae.northwest(M,s),x=ihe(p,n,C,E,b,_,y);L.stGranYCos=x.granYCos,L.stGranXCos=x.granXCos,L.stGranYSin=x.granYSin,L.stGranXSin=x.granXSin,L.stNwCorner=p,L.stWest=x.west,L.stSouth=x.south}return L};var Zs=VY;var fXe=new le,dXe=new le,hXe=new d,mXe=new ae;function ohe(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),A=0,g=0,m,_=hXe;if(r)Zs.computePosition(t,n,!1,g,0,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;else for(m=0;m<o;m++)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=o-1,g=1;g<i;g++)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=0,g=i-2;g>0;g--)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;let y=h.length/3*2,C=Oe.createTypedArray(h.length/3,y),E=0;for(let b=0;b<h.length/3-1;b++)C[E++]=b,C[E++]=b+1;C[E++]=h.length/3-1,C[E++]=0;let I=new ht({attributes:new yn,primitiveType:Me.LINES});return I.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),I.indices=C,I}function AXe(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=ohe(e,t),s=t.height,a=t.width,c=Ii.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=Ii.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let A=t.northCap,g=t.southCap,m=4;A&&(m-=1),g&&(m-=1);let _=(f.length/3+m)*2,y=Oe.createTypedArray(f.length/3,_);u=f.length/6;let C=0;for(let I=0;I<u-1;I++)y[C++]=I,y[C++]=I+1,y[C++]=I+u,y[C++]=I+u+1;y[C++]=u-1,y[C++]=0,y[C++]=u+u-1,y[C++]=u,y[C++]=0,y[C++]=u;let E;if(A)E=s-1;else{let I=a-1;y[C++]=I,y[C++]=I+u,E=a+s-2}if(y[C++]=E,y[C++]=E+u,!g){let I=a+E-1;y[C++]=I,y[C]=I+u}return r.indices=y,r}function DT(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??D.RADIANS_PER_DEGREE,i=e.ellipsoid??te.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}DT.packedLength=ae.packedLength+te.packedLength+5;DT.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var rhe=new ae,she=te.clone(te.UNIT_SPHERE),BT={rectangle:rhe,ellipsoid:she,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};DT.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,rhe);t+=ae.packedLength;let o=te.unpack(e,t,she);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):(BT.granularity=r,BT.height=s,BT.rotation=a,BT.extrudedHeight=c,BT.offsetAttribute=u===-1?void 0:u,new DT(BT))};var pXe=new Ae;DT.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=Zs.computeOptions(t,e._granularity,e._rotation,0,mXe,pXe),o,r;if(D.equalsEpsilon(t.north,t.south,D.EPSILON10)||D.equalsEpsilon(t.east,t.west,D.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!D.equalsEpsilon(s,a,0,D.EPSILON2),u;if(c){if(o=AXe(e,i),l(e._offsetAttribute)){let A=o.attributes.position.values.length/3,g=new Uint8Array(A);e._offsetAttribute===hn.TOP?g=g.fill(1,0,A/2):(u=e._offsetAttribute===hn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=le.fromRectangle3D(t,n,s,dXe),h=le.fromRectangle3D(t,n,a,fXe);r=le.union(f,h)}else{if(o=ohe(e,i),o.attributes.position.values=Ii.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===hn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=le.fromRectangle3D(t,n,s)}return new ht({attributes:o.attributes,indices:o.indices,primitiveType:Me.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var w0=DT;function PT(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=e.ellipsoid??te.WGS84;EXe(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(PT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});PT.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Fn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)};var ahe=new d,_V=new d,che=new d,gXe=new d,_Xe=new d,yXe=new d,CXe=new d,Ed=new Ae,lhe=new mn(d.UNIT_X,0),vT=new In;function EXe(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Ed.longitude=t.west,Ed.latitude=(t.south+t.north)*.5,Ed.height=0;let i=n.cartographicToCartesian(Ed,yXe),o=d.cross(i,d.UNIT_Z,gXe);d.normalize(o,e.westNormal),Ed.longitude=t.east;let r=n.cartographicToCartesian(Ed,CXe),s=d.cross(d.UNIT_Z,r,ahe);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,ahe);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,_Xe),u=t.south,f;if(u>0){Ed.longitude=(t.west+t.east)*.5,Ed.latitude=u;let _=n.cartographicToCartesian(Ed,vT.origin);d.clone(c,vT.direction);let y=mn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,lhe);hi.rayPlane(vT,y,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(_,_V)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),_V);let h=d.cross(f,a,che);d.normalize(h,e.southNormal);let A=t.north,g;if(A<0){Ed.longitude=(t.west+t.east)*.5,Ed.latitude=A;let _=n.cartographicToCartesian(Ed,vT.origin);d.negate(c,vT.direction);let y=mn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,lhe);hi.rayPlane(vT,y,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(_,_V)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),_V);let m=d.cross(a,g,che);d.normalize(m,e.northNormal)}var IXe=new d,xXe=new d,bXe=new d(0,-1,0),TXe=new d(0,0,-1),uhe=new d;function SXe(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,A=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ie.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),IXe),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),xXe),f.z=f.y,f.y=f.x,f.x=0,h=bXe,g=d.UNIT_Y,A=TXe,m=d.UNIT_Z);let _=d.subtract(i,u,uhe),y=d.dot(_,h),C=d.dot(_,A),E=d.subtract(i,f,uhe),I=d.dot(E,g),b=d.dot(E,m);y>0?r+=y*y:I>0&&(r+=I*I),C>0?r+=C*C:b>0&&(r+=b*b)}let s,a,c;if(t.mode===ie.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}PT.prototype.distanceToCamera=function(e){let t=SXe(this,e);if(e.mode===ie.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};PT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};PT.prototype.createDebugVolume=function(e){let t=new N.clone(N.IDENTITY),n=new w0({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Pt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var sf=PT;var qL={},wXe=new d,fhe=new d,dhe=new d,hhe=new d,mhe=new Fn;qL.validOutline=function(e){let n=Fn.fromPoints(e,mhe).halfAxes,i=J.getColumn(n,0,fhe),o=J.getColumn(n,1,dhe),r=J.getColumn(n,2,hhe),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};qL.computeProjectTo2DArguments=function(e,t,n,i){let o=Fn.fromPoints(e,mhe),r=o.halfAxes,s=J.getColumn(r,0,fhe),a=J.getColumn(r,1,dhe),c=J.getColumn(r,2,hhe),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),A=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(A===f||A===h)&&(g=s),A===u?g=a:A===h&&(m=a),(A===u||A===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Ahe(e,t,n,i,o){let r=d.subtract(e,t,wXe),s=d.dot(n,r),a=d.dot(i,r);return U.fromElements(s,a,o)}qL.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Ahe(i[r],e,t,n);return o}};qL.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Ahe(i,e,t,n,o)}};var ug=qL;function BXe(e){let t=e.length,n=new Float64Array(t*3),i=Oe.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n})});return new ht({attributes:s,indices:i,primitiveType:Me.LINES})}function B0(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+1}B0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new B0(t)};B0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var DXe={polygonHierarchy:{}};B0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new B0(DXe)),n._polygonHierarchy=i,n.packedLength=o,n};B0.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=Mo(n,d.equalsEpsilon,!0),n.length<3||!ug.validOutline(n))return;let o=$n.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Pt({geometry:BXe(o[c])});r.push(u)}let s=Vn.combineInstances(r)[0],a=le.fromPoints(t.positions);return new ht({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var Id=B0;var yV=new Ae;function KL(e){let t=Tp.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??te.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=QXe(t,n,i,o);this._boundingPlanes=r;let s=zXe(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=JY(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=JY(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=JY(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();yV=o.cartesianToCartographic(c,yV),yV.height=(i+n)/2,this.center=o.cartographicToCartesian(yV,c),this._boundingSphere=le.fromPoints(s)}var vXe=new d,PXe=new Ae,RXe=new d,MXe=new Ae,NXe=new d,LXe=new d,OXe=new d,FXe=new d;function QXe(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,vXe),a=i.cartesianToCartographic(r,PXe);a.height=n;let c=i.cartographicToCartesian(a,RXe),u=mn.fromPointNormal(c,s);o[0]=u;let f=0,h,A=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),A[h]=g,m=i.cartesianToCartographic(g,MXe),m.height=t;let y=mn.getPointDistance(u,i.cartographicToCartesian(m,NXe));y<f&&(f=y)}let _=mn.clone(u);for(_.normal=d.negate(_.normal,_.normal),_.distance=_.distance*-1+f,o[1]=_,h=0;h<4;h++){g=A[h];let y=A[(h+1)%4],C=i.geodeticSurfaceNormal(g,LXe),E=d.subtract(y,g,FXe),I=d.cross(E,C,OXe);I=d.normalize(I,I),o[2+h]=mn.fromPointNormal(g,I)}return o}var D0=new d,v0=new d,P0=new d,HY=new d,WY=new d,jY=new d,kXe=new d,UXe=new d,GXe=new d,YY=new d,qY=new d,KY=new d,xy=new d,cA=new J;function phe(e,t,n){D0=e.normal,v0=t.normal,P0=n.normal,HY=d.multiplyByScalar(e.normal,-e.distance,HY),WY=d.multiplyByScalar(t.normal,-t.distance,WY),jY=d.multiplyByScalar(n.normal,-n.distance,jY),YY=d.multiplyByScalar(d.cross(v0,P0,kXe),d.dot(HY,D0),YY),qY=d.multiplyByScalar(d.cross(P0,D0,UXe),d.dot(WY,v0),qY),KY=d.multiplyByScalar(d.cross(D0,v0,GXe),d.dot(jY,P0),KY),cA[0]=D0.x,cA[1]=v0.x,cA[2]=P0.x,cA[3]=D0.y,cA[4]=v0.y,cA[5]=P0.y,cA[6]=D0.z,cA[7]=v0.z,cA[8]=P0.z;let i=J.determinant(cA);return xy=d.add(YY,qY,xy),xy=d.add(xy,KY,xy),new d(xy.x/i,xy.y/i,xy.z/i)}function zXe(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=phe(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=phe(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var XY=new d,RT=new d;function JY(e,t){let n=[];for(let i=0;i<4;i++)XY=d.subtract(t[(i+1)%4],t[i],XY),RT=d.cross(e.normal,XY,RT),RT=d.normalize(RT,RT),n[i]=d.clone(RT);return n}Object.defineProperties(KL.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var ZY=new d;KL.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;mn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):mn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,mn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=$Y(mn.projectPointOntoPlane(c,t,ZY),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let A=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=ghe(t,A[0],A[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=$Y(mn.projectPointOntoPlane(c,t,ZY),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=$Y(mn.projectPointOntoPlane(this._boundingPlanes[1],t,ZY),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var VXe=new d,HXe=new d;function ghe(e,t,n){let i=d.subtract(n,t,VXe),o=d.subtract(e,t,HXe),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var WXe=new mn(d.UNIT_X,0);function $Y(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=mn.fromPointNormal(t[c],i[c],WXe);mn.getPointDistance(u,e)<0||(a=ghe(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}KL.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?tn.INSIDE:n===this._vertices.length?tn.OUTSIDE:tn.INTERSECTING};KL.prototype.createDebugVolume=function(e){let t=new N.clone(N.IDENTITY),n=new Id({polygonHierarchy:{positions:this._planeVertices[0]}}),i=Id.createGeometry(n),o=new Pt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}}),r=new Id({polygonHierarchy:{positions:this._planeVertices[1]}}),s=Id.createGeometry(r),a=new Pt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new Id({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=Id.createGeometry(f);c[u]=new Pt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}})}return new Qn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var XL=KL;var jXe=new d(1,1,1),CV=Math.cos,EV=Math.sin;function MT(e){e=e??V.EMPTY_OBJECT;let t=e.radii??jXe,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),u=Math.round(e.subdivisions??128);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}MT.packedLength=2*d.packedLength+8;MT.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var _he=new d,yhe=new d,fg={radii:_he,innerRadii:yhe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};MT.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,_he);t+=d.packedLength;let o=d.unpack(e,t,yhe);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=A===-1?void 0:A,n):(fg.minimumClock=r,fg.maximumClock=s,fg.minimumCone=a,fg.maximumCone=c,fg.stackPartitions=u,fg.slicePartitions=f,fg.subdivisions=h,fg.offsetAttribute=A===-1?void 0:A,new MT(fg))};MT.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=te.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/D.TWO_PI),f=Math.round(f*Math.abs(s-r)/D.PI),u<2&&(u=2),f<2&&(f=2);let h=0,A=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,_=!1;g&&(A=2,r>0&&(m=!0,h+=u),s<Math.PI&&(_=!0,h+=u));let y=a*A*(f+u),C=new Float64Array(y*3),E=2*(y+h-(u+f)*A),I=Oe.createTypedArray(y,E),b,S,B,v,P=0,M=new Array(f),L=new Array(f);for(b=0;b<f;b++)v=r+b*(s-r)/(f-1),M[b]=EV(v),L[b]=CV(v);let p=new Array(a),x=new Array(a);for(b=0;b<a;b++)B=i+b*(o-i)/(a-1),p[b]=EV(B),x[b]=CV(B);for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=t.x*M[b]*x[S],C[P++]=t.y*M[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=n.x*M[b]*x[S],C[P++]=n.y*M[b]*p[S],C[P++]=n.z*L[b];for(M.length=a,L.length=a,b=0;b<a;b++)v=r+b*(s-r)/(a-1),M[b]=EV(v),L[b]=CV(v);for(p.length=u,x.length=u,b=0;b<u;b++)B=i+b*(o-i)/(u-1),p[b]=EV(B),x[b]=CV(B);for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=t.x*M[b]*x[S],C[P++]=t.y*M[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=n.x*M[b]*x[S],C[P++]=n.y*M[b]*p[S],C[P++]=n.z*L[b];for(P=0,b=0;b<f*A;b++){let R=b*a;for(S=0;S<a-1;S++)I[P++]=R+S,I[P++]=R+S+1}let T=f*a*A;for(b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g)for(T=f*a*A+u*a,b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g){let R=f*a*A,O=R+a*u;if(m)for(b=0;b<u;b++)I[P++]=R+b,I[P++]=O+b;if(_)for(R+=a*u-u,O+=a*u-u,b=0;b<u;b++)I[P++]=R+b,I[P++]=O+b}let w=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C})});if(l(e._offsetAttribute)){let R=C.length,O=e._offsetAttribute===hn.NONE?0:1,k=new Uint8Array(R/3).fill(O);w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}return new ht({attributes:w,indices:I,primitiveType:Me.LINES,boundingSphere:le.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var af=MT;function NT(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new af(i),this._workerName="createSphereOutlineGeometry"}NT.packedLength=af.packedLength;NT.pack=function(e,t,n){return af.pack(e._ellipsoidGeometry,t,n)};var YXe=new af,R0={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};NT.unpack=function(e,t,n){let i=af.unpack(e,t,YXe);return R0.stackPartitions=i._stackPartitions,R0.slicePartitions=i._slicePartitions,R0.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,R0.radii),n._ellipsoidGeometry=new af(R0),n):(R0.radius=i._radii.x,new NT(R0))};NT.createGeometry=function(e){return af.createGeometry(e._ellipsoidGeometry)};var dg=NT;function LT(e,t){t===0&&(t=D.EPSILON7),this._boundingSphere=new le(e,t)}Object.defineProperties(LT.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});LT.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};LT.prototype.intersectPlane=function(e){return le.intersectPlane(this._boundingSphere,e)};LT.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};LT.prototype.createDebugVolume=function(e){let t=new dg({radius:this.radius}),n=N.fromTranslation(this.center,new N.clone(N.IDENTITY)),i=new Pt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var hg=LT;var qXe=new d,KXe=new d,XXe=new d,JXe=new d;function M0(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,D.EPSILON7/i,n)}function eq(e,t){let n=d.normalize(e,JXe),i=d.equalsEpsilon(n,d.UNIT_X,D.EPSILON6)?d.UNIT_Y:d.UNIT_X;return M0(e,i,t)}function Che(e){let t=J.getColumn(e,0,qXe),n=J.getColumn(e,1,KXe),i=J.getColumn(e,2,XXe),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=D.EPSILON7,e[4]=D.EPSILON7,e[8]=D.EPSILON7,e):(o&&!r&&!s?t=M0(n,i,t):!o&&r&&!s?n=M0(t,i,n):!o&&!r&&s?i=M0(n,t,i):o?r?s||(t=eq(i,t),n=M0(i,t,n)):(t=eq(n,t),i=M0(n,t,i)):(n=eq(t,n),i=M0(n,t,i)),J.setColumn(e,0,t,e),J.setColumn(e,1,n,e),J.setColumn(e,2,i,e),e)}function OT(e,t){t=Che(t),this._orientedBoundingBox=new Fn(e,t),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(OT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});OT.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};OT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};OT.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=Che(t),J.clone(t,this._orientedBoundingBox.halfAxes),le.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};OT.prototype.createDebugVolume=function(e){let t=new ah({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=N.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Pt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var gu=OT;function Ar(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ei(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?N.unpack(n.transform):N.clone(N.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=N.multiply(a,this.transform,new N),u=l(i)?i._initialTransform:N.IDENTITY;this._initialTransform=N.multiply(u,this.transform,new N),this.computedTransform=c,this.metadata=WL(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,Ar._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let A;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&Ar._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),A=n.refine.toUpperCase()==="REPLACE"?tr.REPLACE:tr.ADD):l(i)?A=i.refine:A=tr.REPLACE,this.refine=A,this.children=[],this.parent=i;let g,m=!1,_,y,C;if(t=we.createIfNeeded(t),r)_=ir.UNLOADED,y=t.clone();else if(l(s)){let S=s.uri;l(s.url)&&(Ar._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),S=s.url),S===""?(Ar._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new wT(e,this),m=!0,_=ir.READY):(_=ir.UNLOADED,y=t.getDerivedResource({url:S}),C=Bc.getServerKey(y.getUrlComponent()))}else g=new wT(e,this),m=!0,_=ir.READY;this._content=g,this._contentResource=y,this._contentState=_,this._expiredContent=void 0,this._serverKey=C,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let E=n.expire,I,b;l(E)&&(I=E.duration,l(E.date)&&(b=K.fromIso8601(E.date))),this.expireDuration=I,this.expireDate=b,this.lastStyleTime=0,this._optimChildrenWithinParent=_d.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=G.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new K,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}Ar._deprecationWarning=Tr;Object.defineProperties(Ar.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new G),G.clone(this._color)},set:function(e){this._color=G.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===ir.READY}},contentUnloaded:{get:function(){return this._contentState===ir.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===ir.EXPIRED}},contentFailed:{get:function(){return this._contentState===ir.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var by=new d;function ZXe(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,by),c=d.add(s.positionWC,a,by),u=d.subtract(c,r,by);if(d.magnitude(u)>o){let b=d.normalize(u,by),S=d.multiplyByScalar(b,o,by),B=d.add(r,S,by),v=d.subtract(B,s.positionWC,by),P=d.normalize(v,by);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,P))}else e._foveatedFactor=0;let A=e.refine===tr.REPLACE,g=n.isSkippingLevelOfDetail;if(A&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&A&&g||n._pass===qo.PRELOAD_FLIGHT||n._pass===qo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),_=n.foveatedConeSize*m;if(e._foveatedFactor<=_)return!1;let y=m-_,C=D.clamp((e._foveatedFactor-_)/y,0,1),E=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,C),I=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-E<=I}var The=new K;Ar.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,A;if(e.mode===ie.SCENE2D||u instanceof An){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);A=s/m}else{let g=Math.max(this._distanceToCamera,D.EPSILON7),m=u.sseDenominator;if(A=s*h/(g*m),i.dynamicScreenSpaceError){let _=i._dynamicScreenSpaceErrorComputedDensity,y=i.dynamicScreenSpaceErrorFactor,C=D.fog(g,_)*y;A-=C}}return A/=e.pixelRatio,A};function $Xe(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function eJe(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}Ar.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:Os.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==Os.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=eJe(n,this),this._priorityProgressiveResolution=$Xe(n,this),this.priorityDeferred=ZXe(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};Ar.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=K.now(The);K.lessThan(this.expireDate,e)&&(this._contentState=ir.EXPIRED,this._expiredContent=this._content)}};function tJe(e){if(!l(e.expireDuration))return;let t=K.now(The);K.addSeconds(t,e.expireDuration,t),l(e.expireDate)?K.lessThan(e.expireDate,t)&&K.clone(t,e.expireDate):e.expireDate=K.clone(t)}function nJe(e){return function(){return e._priority}}Ar.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?iJe(this):rJe(this)};function iJe(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ei(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new jL(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=ir.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=ir.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=ir.FAILED,o})}async function oJe(e,t,n,i,o){let r=e._contentState;e._contentState=ir.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===fi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=ir.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===fi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await sJe(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=ir.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=ir.FAILED,a}}function rJe(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new sr({throttle:!0,throttleByServer:!0,type:Ms.TILES3D,priorityFunction:nJe(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return oJe(e,o,i,n,r)}async function sJe(e,t){let n=lg(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===Js.GEOMETRY||n.contentType===Js.VECTOR,(n.contentType===Js.IMPLICIT_SUBTREE||n.contentType===Js.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===Js.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=b0[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=T0(i,s));let a=S0(i,s);return l(a)&&(o.group=new vE({metadata:a})),o}Ar.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};Ar.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=ir.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var She=new le;function nq(e,t){if(t.mode!==ie.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,She);e._boundingVolume2D=new hg(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._boundingVolume2D:e._boundingVolume}function aJe(e,t){if(t.mode!==ie.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,She);e._contentBoundingVolume2D=new hg(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}Ar.prototype.visibility=function(e,t){let n=e.cullingVolume,i=nq(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==tn.INSIDE,a===tn.OUTSIDE)return Os.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==tn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};Ar.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return tn.INSIDE;if(this._visibilityPlaneMask===Os.MASK_INSIDE)return tn.INSIDE;let t=e.cullingVolume,n=aJe(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==tn.INSIDE,s===tn.OUTSIDE)return tn.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==tn.OUTSIDE,s===tn.INSIDE)return tn.OUTSIDE}return t.computeVisibility(n)};Ar.prototype.distanceToTile=function(e){return nq(this,e).distanceToCamera(e)};var cJe=new d;Ar.prototype.distanceToTileCenter=function(e){let n=nq(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,cJe);return d.dot(e.camera.directionWC,i)};Ar.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var whe=new J,Bhe=new d,lJe=new J,iq=new d,Dhe=new ae,vhe=new Fn,tq=new N;function uJe(e,t,n){let i=d.fromElements(e[0],e[1],e[2],iq),o=J.fromArray(e,3,lJe);i=N.multiplyByPoint(t,i,i);let r=N.getMatrix3(t,whe);return o=J.multiply(r,o,o),l(n)?(n.update(i,o),n):new gu(i,o)}function Ehe(e,t,n,i){let o=ae.unpack(e,0,Dhe),r=e[4],s=e[5],a=Fn.fromRectangle(o,r,s,te.WGS84,vhe),c=a.center,u=a.halfAxes;t=N.multiplyTransformation(t,N.inverseTransformation(n,tq),tq),c=N.multiplyByPoint(t,c,c);let f=N.getMatrix3(t,whe);return u=J.multiply(f,u,u),l(i)&&i instanceof gu?(i.update(c,u),i):new gu(c,u)}function fJe(e,t,n,i){if(!N.equalsEpsilon(t,n,D.EPSILON8))return i instanceof gu?Ehe(e,t,n,i):Ehe(e,t,n,void 0);let o=ae.unpack(e,0,Dhe);return i instanceof sf?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(te.WGS84),i):new sf({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function dJe(e,t,n){let i=d.fromElements(e[0],e[1],e[2],iq),o=e[3];i=N.multiplyByPoint(t,i,i);let r=N.getScale(t,Bhe),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new hg(i,o)}Ar.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=KE.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new ce("boundingVolume must be defined");if(Ei(e,"3DTILES_bounding_volume_S2"))return new XL(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=uJe(r,t,n);return this._verticalExaggeration!==1&&Ihe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=fJe(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof gu?Ihe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Ur.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Ur.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(te.WGS84))),c}if(l(a)){let c=dJe(a,t,n);if(this._verticalExaggeration!==1){let u=Ur.getPosition(c.center,te.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,iq),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new ce("boundingVolume must contain a sphere, region, or box")};var hJe=d.unpackArray(new Array(24).fill(0));function Ihe(e,t,n){let i=e.boundingVolume.computeCorners(hJe).map(r=>Ur.getPosition(r,te.WGS84,t,n,r)),o=Fn.fromPoints(i,vhe);e.update(o.center,o.halfAxes)}Ar.prototype.updateTransform=function(e,t){e=e??N.IDENTITY;let n=N.multiplyTransformation(e,this.transform,tq),i=!N.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&N.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};Ar.prototype.updateGeometricErrorScale=function(){let e=N.getScale(this.computedTransform,Bhe),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function mJe(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=G.WHITE:c=G.DARKGRAY:c=G.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=$t.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(G.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(G.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=G.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function AJe(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=ir.FAILED,o}}function pJe(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function gJe(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}Ar.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;pJe(this,e),gJe(this,e),mJe(this,e,t,n),AJe(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Be.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var xhe=[];Ar.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(tJe(this),this._selectedFrame=0,this.lastStyleTime=0,K.now(this._loadTimestamp),this._contentState=ir.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=xhe;try{this._content.update(e,t)}catch(i){throw this._contentState=ir.FAILED,i}xhe.length=0,t.commandList=n};function bhe(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function IV(e,t,n){return Math.max(D.normalize(e,t,n)-D.EPSILON7,0)}Ar.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,A=Math.pow(10,f),g=f+h,m=r,_=Math.pow(10,g),y=g+m,C=Math.pow(10,y),E=IV(this._depth,n.depth,i.depth);E=t?1-E:E;let b=!e.isSkippingLevelOfDetail&&this.refine===tr.REPLACE?IV(this._priorityHolder._distanceToCamera,n.distance,i.distance):IV(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),S=bhe(b,a,s),B=this._priorityProgressiveResolution?0:A,v=IV(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),P=bhe(v,u,c),M=this.priorityDeferred?_:0,L=e._pass===qo.PRELOAD_FLIGHT?0:C;this._priority=E+S+B+P+M+L};Ar.prototype.isDestroyed=function(){return!1};Ar.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var xd=Ar;function mg(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(mg.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});mg.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};mg.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};mg.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};mg.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};mg.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};mg.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};mg.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var FT=mg;function Ag(e){e=e??V.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Ag.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Ag.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Ag.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Ag.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Ag.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Ag.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Ag.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Ag.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var JL=Ag;function Phe(e){e=e??V.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new JL({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new FT({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new FT({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Phe.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var N0=Phe;var Rhe={},_Je=new d;Rhe.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof gu||i instanceof sf){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=_d.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof gu||a instanceof sf)){e._optimChildrenWithinParent=_d.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,_Je),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),A=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=A+f){e._optimChildrenWithinParent=_d.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===_d.USE_OPTIMIZATION};var ZL=Rhe;function $L(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties($L.prototype,{length:{get:function(){return this._length}}});function yJe(e,t,n){this.item=e,this.previous=t,this.next=n}$L.prototype.add=function(e){let t=new yJe(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Mhe(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}$L.prototype.remove=function(e){l(e)&&(Mhe(this,e),--this._length)};$L.prototype.splice=function(e,t){if(e===t)return;Mhe(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var eO=$L;function L0(){this._list=new eO,this._sentinel=this._list.add(),this._trimTiles=!1}L0.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};L0.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};L0.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};L0.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};L0.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};L0.prototype.trim=function(){this._trimTiles=!0};var tO=L0;function xV(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function rq(e,t){let n;return t==="_loadTimestamp"?n=K.toDate(e).getTime():n=e,n}xV.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=rq(e,n),this._referenceMaximum[n]=rq(t,n)};function CJe(e,t){let n=e.tilePropertyName;if(l(n)){let i=rq(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var oq=[new G(.1,.1,.1,1),new G(.153,.278,.878,1),new G(.827,.231,.49,1),new G(.827,.188,.22,1),new G(1,.592,.259,1),new G(1,.843,0,1)];xV.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=CJe(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+D.EPSILON7,c=D.clamp(i-o,0,s)/s,u=oq.length-1,f=c*u,h=Math.floor(f),A=Math.ceil(f),g=f-h,m=oq[h],_=oq[A],y=G.clone(G.WHITE);y.red=D.lerp(m.red,_.red,g),y.green=D.lerp(m.green,_.green,g),y.blue=D.lerp(m.blue,_.blue,g),e._debugColor=y};xV.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var nO=xV;function QT(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}QT.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};QT.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};QT.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof tf))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};QT.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof tf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};QT.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Wh=QT;function iO(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(iO.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});iO.prototype.makeDirty=function(){this._styleDirty=!0};iO.prototype.resetDirty=function(){this._styleDirty=!1};iO.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var oO=iO;function EJe(e,t,n){let i=Ei(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ei(o,"3DTILES_bounding_volume_S2")&&!Ei(o,"3DTILES_bounding_volume_cylinder"))throw new ce("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new we({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=IJe(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ze(a,!0));let c=new we({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=xJe(t),this.subdivisionScheme=Is[i.subdivisionScheme],this.branchingFactor=Is.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function IJe(e){if(Ei(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function xJe(e){let t=ze(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var O0=EJe;var rO={};function Nhe(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function sq(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function Lhe(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function aq(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}rO.encode2D=function(e,t){return(Nhe(e)|Nhe(t)<<1)>>>0};rO.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=Lhe(e),t[1]=Lhe(e>>1),t};rO.encode3D=function(e,t,n){return sq(e)|sq(t)<<1|sq(n)<<2};rO.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=aq(e),t[1]=aq(e>>1),t[2]=aq(e>>2),t};var Ty=rO;function or(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Is.OCTREE&&(this.z=e.z)}Object.defineProperties(or.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Is.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Is.OCTREE?Ty.encode3D(this.x,this.y,this.z):Ty.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Is.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});or.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Is.OCTREE){let o=(this.z<<e.level)+e.z;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Is.OCTREE){let r=Math.floor(this.z/t);return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};or.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Is.OCTREE){let r=e.z%n;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};or.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Is.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};or.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};or.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Is.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};or.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Is.OCTREE?this.z===e.z:!0)};or.prototype.isImplicitTilesetRoot=function(){return this.level===0};or.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};or.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};or.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Is.OCTREE&&(e.z=this.z),e};var Ohe=[0,0,0];or.fromMortonIndex=function(e,t,n,i){let o;return e===Is.OCTREE?(o=Ty.decode3D(i,Ohe),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=Ty.decode2D(i,Ohe),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};or.fromTileIndex=function(e,t,n){let i,o,r;return e===Is.OCTREE?(i=Math.floor(D.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(D.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),or.fromMortonIndex(e,t,i,r)};var F0=or;function pg(){}pg.selectTiles=function(e,t){me.throwInstantiationError()};pg.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};pg.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};pg.selectTile=function(e,t){if(e.contentVisibility(t)===tn.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};pg.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};pg.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};pg.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!bJe(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function bJe(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}pg.updateTile=function(e,t){Fhe(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,wJe(e),e._shouldSelect=!1,e._finalResolution=!0};function Fhe(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];Fhe(r,t),e._visible=r._visible;return}if(TJe(e,t)){e._visible=!1;return}let i=e.refine===tr.REPLACE,o=e._optimChildrenWithinParent===_d.USE_OPTIMIZATION;if(i&&o&&n&&!SJe(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function TJe(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==tr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function SJe(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function wJe(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var Ca=pg;function Qhe(){}var sO={stack:new El,stackMaximumLength:0};Qhe.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=Ca,s=sO.stack;for(s.push(i);s.length>0;){sO.stackMaximumLength=Math.max(sO.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===tr.ADD,u=a.refine===tr.REPLACE,f=BJe(a);f&&DJe(a,s,t),(c||u&&!f)&&(vJe(e,a),o(a,t),PJe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return sO.stack.trim(sO.stackMaximumLength),n};function BJe(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function DJe(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function vJe(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function PJe(e,t){e.contentAvailable&&e.contentVisibility(t)!==tn.OUTSIDE&&e.tileset._selectedTiles.push(e)}var aO=Qhe;function khe(){}var cO={stack:new El,stackMaximumLength:0},lO={stack:new El,stackMaximumLength:0};khe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(Ca.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;MJe(n,t),cO.stack.trim(cO.stackMaximumLength),lO.stack.trim(lO.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function cq(e,t){e.contentAvailable&&Ca.selectTile(e,t)}function RJe(e,t,n){let i=e.refine===tr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=Ca;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(Ca.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,A=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let _=r[m];if(_.isVisible?(t.push(_),_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),h=!0):(u||o.loadSiblings)&&(_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),a(_,n),c(_,n)),u){let y;_._inRequestVolume?_.hasRenderableContent?y=_.contentAvailable:y=NJe(_,n):y=!1,f=f&&y}}if(h||(f=!1),A!==-1&&i){let m=r[A];m._wasMinPriorityChild=!0;let _=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;_._foveatedFactor=Math.min(m._foveatedFactor,_._foveatedFactor),_._distanceToCamera=Math.min(m._distanceToCamera,_._distanceToCamera);for(let y=0;y<r.length;++y)r[y]._priorityHolder=_}return f}function MJe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=Ca,a=cO.stack;for(a.push(e);a.length>0;){cO.stackMaximumLength=Math.max(cO.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?RJe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===tr.ADD?(cq(c,t),o(c,t)):c.refine===tr.REPLACE&&(o(c,t),h&&cq(c,t)):(n._emptyTiles.push(c),o(c,t),h&&cq(c,t)),r(c,t),s(c,t)}}function NJe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=Ca,s=!0,a=lO.stack;for(a.push(e);a.length>0;){lO.stackMaximumLength=Math.max(lO.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let A=0;A<f;++A){let g=u[A];a.push(g)}}return e.hasEmptyContent||s}var uO=khe;function Uhe(){}var fO={stack:new El,stackMaximumLength:0},dO={stack:new El,stackMaximumLength:0},gg={stack:new El,stackMaximumLength:0,ancestorStack:new El,ancestorStackMaximumLength:0},LJe=2;Uhe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(Ca.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;GJe(n,t),zJe(n,t),fO.stack.trim(fO.stackMaximumLength),dO.stack.trim(dO.stackMaximumLength),gg.stack.trim(gg.stackMaximumLength),gg.ancestorStack.trim(gg.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function OJe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=Ca,r=dO.stack;for(r.push(e);r.length>0;){dO.stackMaximumLength=Math.max(dO.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<LJe&&r.push(u))}}}function bV(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:OJe(e,t)}function FJe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function QJe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function kJe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=Ca;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(Ca.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function UJe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function GJe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=Ca,c=fO.stack;for(c.push(e);c.length>0;){fO.stackMaximumLength=Math.max(fO.stackMaximumLength,c.length);let u=c.pop();FJe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?kJe(u,c,t)&&h:!1;let A=!u._refines&&h;u.hasRenderableContent?u.refine===tr.ADD?(bV(u,t),r(u,t)):u.refine===tr.REPLACE&&(UJe(u,i)?(r(u,t),A&&bV(u,t)):A?(bV(u,t),r(u,t)):QJe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),A&&bV(u,t)),s(u,t),a(u,t)}}function zJe(e,t){let{selectTile:n,canTraverse:i}=Ca,{stack:o,ancestorStack:r}=gg,s;for(o.push(e);o.length>0||r.length>0;){if(gg.stackMaximumLength=Math.max(gg.stackMaximumLength,o.length),gg.ancestorStackMaximumLength=Math.max(gg.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===tr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var hO=Uhe;function $s(){this._layers=[],this.layerAdded=new _e,this.layerRemoved=new _e,this.layerMoved=new _e,this.layerShownOrHidden=new _e}Object.defineProperties($s.prototype,{length:{get:function(){return this._layers.length}}});$s.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};$s.prototype.addImageryProvider=function(e,t){let n=new rs(e);return this.add(n,t),n};$s.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};$s.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};$s.prototype.contains=function(e){return this.indexOf(e)!==-1};$s.prototype.indexOf=function(e){return this._layers.indexOf(e)};$s.prototype.get=function(e){return this._layers[e]};function TV(e,t){return e.indexOf(t)}function Ghe(e,t,n){let i=e._layers;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}$s.prototype.raise=function(e){let t=TV(this._layers,e);Ghe(this,t,t+1)};$s.prototype.lower=function(e){let t=TV(this._layers,e);Ghe(this,t,t-1)};$s.prototype.raiseToTop=function(e){let t=TV(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};$s.prototype.lowerToBottom=function(e){let t=TV(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var VJe=new ae;function zhe(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=VJe,A=1/1024;h.west=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-A),h.east=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+A),h.south=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-A),h.north=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+A),ae.contains(h,t)&&i(u)}}$s.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(zhe(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};$s.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(zhe(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let A=u[h];A.imageryLayer=f,l(A.position)||(A.position=i),a.push(A)}}return a})};$s.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};$s.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};$s.prototype.isDestroyed=function(){return!1};$s.prototype.destroy=function(){return this.removeAll(!0),ue(this)};$s.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var Q0=$s;function Ko(e){e=e??V.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new tO,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new El,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new oO,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?N.clone(e.modelMatrix):N.clone(N.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Wh,this._statisticsLast=new Wh,this._statisticsPerPass=new Array(qo.NUMBER_OF_PASSES);for(let o=0;o<qo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Wh;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new nO(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=D.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??te.WGS84,this._initialClippingPlanesOriginMatrix=N.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new Q0(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??D.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Bn.ENABLED,this.show=e.show??!0,this.colorBlendMode=ou.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new Zm(e.pointCloudShading),this._pointCloudEyeDomeLighting=new Qp,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e,this.tileLoad=new _e,this.tileUnload=new _e,this.tileFailed=new _e,this.tileVisible=new _e,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Fs.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&wh.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new DE,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new Lp(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this.splitDirection=e.splitDirection??br.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&yt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ko.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){wh.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Tr("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(N.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):N.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,Xhe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ko.fromIonAssetId=async function(e,t){let n=await Hu.fromAssetId(e);return Ko.fromUrl(n,t)};Ko.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ko.loadJson(n),r=await HJe(n,o),s=new Ko(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Xhe(s);let c=l(o.asset.gltfUpAxis)?fo.fromName(o.asset.gltfUpAxis):fo.Y,u=t.modelUpAxis??c,f=t.modelForwardAxis??fo.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let A=s._root.createBoundingVolume(o.root.boundingVolume,N.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(A);return l(g)&&g.height>Ti._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=kt.eastNorthUpToFixedFrame(A)),s._clippingPlanesOriginMatrix=N.clone(s._initialClippingPlanesOriginMatrix),s};Ko.loadJson=function(e){return we.createIfNeeded(e).fetchJson()};Ko.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ko.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new ce("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new ce("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ko.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Vhe(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===tr.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],A=Vhe(this,e,h,c);c.children.push(A),A._depth=c._depth+1,a.push(A)}this._cullWithChildrenBounds&&ZL.checkChildrenWithinParent(c)}return s};function Vhe(e,t,n,i){if(!(l(n.implicitTiling)||Ei(n,"3DTILES_implicit_tiling")))return new xd(e,t,n,i);let r=e.schema,s=new O0(t,n,r),a=new F0({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=ze(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new xd(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function HJe(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Fi.getSchemaLoader({resource:e});else if(l(n.schema))i=Fi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new N0({schema:i.schema,metadataJson:n});return Fi.unload(i),o}var Hhe=new d,WJe=new Ae,jJe=new N,YJe=new d,qJe=new d,KJe=new d,XJe=new d;function JJe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof sf)n=d.normalize(a.positionWC,Hhe),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let _=N.inverseTransformation(c.computedTransform,jJe),y=t.mapProjection.ellipsoid,C=u.boundingVolume,E=N.multiplyByPoint(_,C.center,YJe);if(d.magnitude(E)>y.minimumRadius){let I=Ae.fromCartesian(E,y,WJe);n=d.normalize(a.positionWC,Hhe),i=a.directionWC,o=a.positionCartographic.height,r=0,s=I.height*2}else{let I=N.multiplyByPoint(_,a.positionWC,qJe);if(n=d.UNIT_Z,i=N.multiplyByPointAsVector(_,a.directionWC,KJe),i=d.normalize(i,i),o=I.z,u instanceof gu){let b=J.getColumn(C.halfAxes,2,XJe),S=d.magnitude(b);r=E.z-S,s=E.z+S}else if(u instanceof hg){let b=C.radius;r=E.z-b,s=E.z+b}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,A=s,g=D.clamp((o-h)/(A-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function ZJe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Yhe(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?dZe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function jhe(e,t){return e._priority-t._priority}Ko.prototype.postPassesUpdate=function(e){l(this._root)&&($Je(this,e),mZe(this,e),this._cache.unloadTiles(this,Khe),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ko.prototype.prePassesUpdate=function(e){if(!l(this._root))return;sZe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time)),this._timeSinceLoad=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&JJe(this,e),e.newFrame&&this._cache.reset()};function $Je(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==ir.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function eZe(e){let t=e._requestedTiles;t.sort(jhe);for(let n=0;n<t.length;++n)ZJe(e,t[n])}function Yhe(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function tZe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==ir.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var nZe=new Ae,iZe=new Ae,oZe=new d;function rZe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=Ae.clone(r.positionCartographic,nZe),c=Ae.fromCartesian(o.center,s,iZe);l(c)&&(a.height=c.height);let u=Ae.toCartesian(a,s,oZe);d.distance(u,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function sZe(e,t){tZe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Yhe(f,e,u)}}e.totalMemoryUsageInBytes<i?cZe(e):a&&n.length>0&&aZe(e)}function aZe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(jhe)}function cZe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var SV=new d,lZe={maximumFractionDigits:3};function Whe(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,lZe):Math.round(t).toLocaleString()}function lq(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,SV);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,SV);r=d.multiplyByScalar(r,.75*n,SV),o=d.add(r,i,SV)}return o}function uq(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${Whe(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${Whe(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function uZe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:lq(e.debugPickedTile),a=uq(e.debugPickedTile,e,s);a.pixelOffset=new U(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];uq(a,e,lq(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&uq(a,e,lq(a))}}e._tileDebugLabels.update(t)}function fZe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new Ci({stencil:0,pass:Be.CESIUM_3D_TILE,renderState:Ue.fromCache({stencilMask:Kt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let _=s[m];f&&u.raiseEvent(_),rZe(e,_,t),_.update(e,t,n),c.incrementSelectionCounts(_.content),++c.selected}let A=e._emptyTiles;for(let m=0;m<A.length;++m)A[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,_=m.length;i.length+=_;for(let y=g-1;y>=0;--y)i[h+_+y]=i[h+y];for(let y=0;y<_;++y)i[h+y]=m[y]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new rA),uZe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var qhe=[];function dZe(e,t){let n=t,i=qhe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&(hZe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function Khe(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function hZe(e,t){e._cache.unloadTile(e,t,Khe),t.destroy()}Ko.prototype.trimLoadedTiles=function(){this._cache.trim()};function mZe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Wh.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function AZe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function pZe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!N.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=N.clone(e.modelMatrix,e._previousModelMatrix)))}function gZe(e,t,n,i){if(t.mode===ie.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,AZe(e),pZe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&eZe(e),fZe(e,t,i),Wh.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function Xhe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Bt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Bt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ko.prototype.getTraversal=function(e){let{pass:t}=e;return t===qo.MOST_DETAILED_PRELOAD||t===qo.MOST_DETAILED_PICK?aO:this.isSkippingLevelOfDetail?hO:uO};Ko.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ko.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===qo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===qo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===qo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=qo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,u=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let A=this._environmentMapManager;l(this._root)&&(A.position=this.boundingSphere.center),A.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=gZe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};Ko.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ko.prototype.isDestroyed=function(){return!1};Ko.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=qhe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,ue(this)};Ko.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ko.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ko.supportedExtensions[e[t]])throw new ce(`Unsupported 3D Tiles Extension: ${e[t]}`)};var _Ze=new In,yZe=new d,CZe=new Ae;Ko.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=te.WGS84);let i=_Ze,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,yZe);if(l(r))return n.cartesianToCartographic(r,CZe)?.height};Ko.prototype.updateHeight=function(e,t,n){n=n??te.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var EZe=new sc,IZe=new d;Ko.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=hi.raySphere(e,u.contentBoundingVolume.boundingSphere,EZe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=le.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=le.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,IZe);if(l(f))return a=d.clone(f,n),a}};Ko.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ko.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var ks=Ko;var xZe=new N;function Sy(e,t){t.collectionChanged.addEventListener(Sy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new vt,this._onCollectionChanged(t,t.values,[],[])}Sy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,xZe),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)));let A=l(u)?u.tilesetPrimitive:void 0;if(!f){l(A)&&(A.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(A)&&i.removeAndDestroy(A),delete n[s.id],bZe(c,n,s,i)),l(A)&&(A.show=!0,l(h)&&(A.modelMatrix=h),A.maximumScreenSpaceError=j.getValueOrDefault(a.maximumScreenSpaceError,e,A.maximumScreenSpaceError))}return!0};Sy.prototype.isDestroyed=function(){return!1};Sy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Sy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)fq(this,e[i],t,n);return ue(this)};Sy.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return mt.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(le.clone(i.boundingSphere,t),mt.DONE):mt.FAILED:mt.PENDING};Sy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(fq(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],fq(this,r,a,c),s.remove(r.id)};function fq(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function bZe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await ks.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var mO=Sy;var TZe=G.WHITE,SZe=G.BLACK,wZe=new U(2,2);function kT(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(kT.prototype,{isConstant:{get:function(){return j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:de("evenColor"),oddColor:de("oddColor"),repeat:de("repeat")});kT.prototype.getType=function(e){return"Checkerboard"};var BZe=new K;kT.prototype.getValue=function(e,t){return l(e)||(e=K.now(BZe)),l(t)||(t={}),t.lightColor=j.getValueOrClonedDefault(this._evenColor,e,TZe,t.lightColor),t.darkColor=j.getValueOrClonedDefault(this._oddColor,e,SZe,t.darkColor),t.repeat=j.getValueOrDefault(this._repeat,e,wZe),t};kT.prototype.equals=function(e){return this===e||e instanceof kT&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._repeat,e._repeat)};var UT=kT;var Jhe={id:void 0};function AO(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Vc(e){this._owner=e,this._entities=new vt,this._addedEntities=new vt,this._removedEntities=new vt,this._changedEntities=new vt,this._suspendCount=0,this._collectionChanged=new _e,this._id=Xn(),this._show=!0,this._firing=!1,this._refire=!1}Vc.prototype.suspendEvents=function(){this._suspendCount++};Vc.prototype.resumeEvents=function(){this._suspendCount--,AO(this)};Object.defineProperties(Vc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Vc.prototype.computeAvailability=function(){let e=je.MAXIMUM_VALUE,t=je.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;K.lessThan(a,e)&&!a.equals(je.MINIMUM_VALUE)&&(e=a),K.greaterThan(c,t)&&!c.equals(je.MAXIMUM_VALUE)&&(t=c)}}return je.MAXIMUM_VALUE.equals(e)&&(e=je.MINIMUM_VALUE),je.MINIMUM_VALUE.equals(t)&&(t=je.MAXIMUM_VALUE),new Pn({start:e,stop:t})};Vc.prototype.add=function(e){e instanceof fr||(e=new fr(e));let t=e.id,n=this._entities;if(n.contains(t))throw new me(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Vc.prototype._onEntityDefinitionChanged,this),AO(this),e};Vc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Vc.prototype.contains=function(e){return this._entities.get(e.id)===e};Vc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Vc.prototype._onEntityDefinitionChanged,this),AO(this),!0):!1};Vc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Vc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),AO(this)};Vc.prototype.getById=function(e){return this._entities.get(e)};Vc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(Jhe.id=e,t=new fr(Jhe),this.add(t)),t};Vc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),AO(this)};var Ea=Vc;var wV={id:void 0},GT=new Array(2);function dq(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function Zhe(e,t,n,i){GT[0]=n,GT[1]=i.id,t[JSON.stringify(GT)]=i.definitionChanged.addEventListener(as.prototype._onDefinitionChanged,e)}function $he(e,t,n,i){GT[0]=n,GT[1]=i.id;let o=JSON.stringify(GT);t[o](),t[o]=void 0}function wy(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new Ea(e),A=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(as.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],$he(e,A,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(as.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],Zhe(e,A,g,s);let _=h.getById(s.id);l(_)||(_=f.getById(s.id),l(_)?dq(_):(wV.id=s.id,_=new fr(wV)),h.add(_)),_.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function as(e,t){this._owner=t,this._composite=new Ea(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Xn(),this._eventHash={},wy(this),this._shouldRecomposite=!1}Object.defineProperties(as.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});as.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),wy(this)};as.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),wy(this),!0):!1};as.prototype.removeAllCollections=function(){this._collections.length=0,wy(this)};as.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};as.prototype.contains=function(e){return this._composite.contains(e)};as.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};as.prototype.getCollection=function(e){return this._collections[e]};as.prototype.getCollectionsLength=function(){return this._collections.length};function BV(e,t){return e.indexOf(t)}function eme(e,t,n){let i=e._collections;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,wy(e)}as.prototype.raiseCollection=function(e){let t=BV(this._collections,e);eme(this,t,t+1)};as.prototype.lowerCollection=function(e){let t=BV(this._collections,e);eme(this,t,t-1)};as.prototype.raiseCollectionToTop=function(e){let t=BV(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),wy(this))};as.prototype.lowerCollectionToBottom=function(e){let t=BV(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),wy(this))};as.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};as.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(wy(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};as.prototype.computeAvailability=function(){return this._composite.computeAvailability()};as.prototype.getById=function(e){return this._composite.getById(e)};as.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,A=e.id;for(s=0;s<f;s++){let m=n[s];$he(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),dq(u)),u.merge(c));l(u)||r.removeById(_),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];Zhe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),l(u)?dq(u):(wV.id=_,u=new fr(wV),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};as.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let A=s-1;A>=0;A--){let g=o[A].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var hq=as;function mq(){this._removalFunctions=[]}mq.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};mq.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Dr=mq;function gq(e,t){return K.compare(e.start,t.start)}function cs(e){if(this._intervals=[],this._changedEvent=new _e,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(cs.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});cs.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof cs))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!Pn.equals(n[r],i[r],t))return!1;return!0};cs.prototype.get=function(e){return this._intervals[e]};cs.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};cs.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};cs.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};cs.prototype.contains=function(e){return this.indexOf(e)>=0};var Aq=new Pn;cs.prototype.indexOf=function(e){let t=this._intervals;Aq.start=e,Aq.stop=e;let n=Wo(t,Aq,gq);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&Pn.contains(t[n-1],e)?n-1:~n)};cs.prototype.findInterval=function(e){e=e??V.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};cs.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||K.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=Wo(n,e,gq);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=K.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(K.greaterThan(e.stop,n[i-1].stop)?e=new Pn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new Pn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=K.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new Pn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new Pn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=K.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new Pn({start:e.start,stop:K.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:K.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new Pn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};cs.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=Wo(t,e,gq);n<0&&(n=~n);let i=!1;for(n>0&&(K.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(K.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new Pn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new Pn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new Pn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&K.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new Pn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new Pn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(K.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new Pn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};cs.prototype.intersect=function(e,t,n){let i=new cs,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if(K.lessThan(c.stop,u.start))++o;else if(K.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=Pn.intersect(c,u,new Pn,n);f.isEmpty||i.addInterval(f,t)}K.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};cs.fromJulianDateArray=function(e,t){l(t)||(t=new cs);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,u,f=0;a&&(++f,u=new Pn({start:je.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let A=n[h],g=n[h+1];u=new Pn({start:A,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),A=g}return c&&(u=new Pn({start:n[i-1],stop:je.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var Hc=new KA,pO=[0,31,28,31,30,31,30,31,31,30,31,30,31];function pq(e,t,n){l(n)||(n=new K),K.toGregorianDate(e,Hc);let i=Hc.millisecond+t.millisecond,o=Hc.second+t.second,r=Hc.minute+t.minute,s=Hc.hour+t.hour,a=Hc.day+t.day,c=Hc.month+t.month,u=Hc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),pO[2]=ih(u)?29:28;a>pO[c]||c>=13;)a>pO[c]&&(a-=pO[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),pO[2]=ih(u)?29:28;return Hc.millisecond=i,Hc.second=o,Hc.minute=r,Hc.hour=s,Hc.day=a,Hc.month=c,Hc.year=u,K.fromGregorianDate(Hc,n)}var DZe=new K,vZe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function tme(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(vZe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),K.toGregorianDate(K.fromIso8601(e,DZe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var gO=new KA;cs.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=[];if(!tme(n[2],gO))r.push(i,o);else{let s=K.clone(i);for(r.push(s);K.compare(s,o)<0;)s=pq(s,gO),K.compare(o,s)<=0&&K.clone(o,s),r.push(s)}return cs.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};cs.fromIso8601DateArray=function(e,t){return cs.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return K.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};cs.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let u=0;u<c;++u)(tme(i[u],gO)||u===0)&&(o&&l(a)?s=pq(a,gO):s=pq(n,gO),r.push(s),a=s);return cs.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var ls=cs;function PZe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function k0(){this._eventHelper=new Dr,this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(k0.prototype._intervalsChanged,this)}Object.defineProperties(k0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var RZe=new K;k0.prototype.getValue=function(e,t){l(e)||(e=K.now(RZe));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};k0.prototype.equals=function(e){return this===e||e instanceof k0&&this._intervals.equals(e._intervals,j.equals)};k0.prototype._intervalsChanged=function(){PZe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var Wc=k0;function By(){this._definitionChanged=new _e,this._composite=new Wc,this._composite.definitionChanged.addEventListener(By.prototype._raiseDefinitionChanged,this)}Object.defineProperties(By.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});By.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var MZe=new K;By.prototype.getValue=function(e,t){l(e)||(e=K.now(MZe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};By.prototype.equals=function(e){return this===e||e instanceof By&&this._composite.equals(e._composite,j.equals)};By.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var zT=By;function Dy(e){this._referenceFrame=e??$i.FIXED,this._definitionChanged=new _e,this._composite=new Wc,this._composite.definitionChanged.addEventListener(Dy.prototype._raiseDefinitionChanged,this)}Object.defineProperties(Dy.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var NZe=new K;Dy.prototype.getValue=function(e,t){return l(e)||(e=K.now(NZe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Dy.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};Dy.prototype.equals=function(e){return this===e||e instanceof Dy&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,j.equals)};Dy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var ja=Dy;var LZe={ROUNDED:0,MITERED:1,BEVELED:2},ji=Object.freeze(LZe);var Ya=[new d,new d],OZe=new d,FZe=new d,QZe=new d,kZe=new d,UZe=new d,GZe=new d,zZe=new d,VZe=new d,HZe=new d,VT=new d,DV=new d,_O={},_q=new Ae;function WZe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];_q=t.cartesianToCartographic(o,_q),n[i]=_q.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function yq(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let A=t+u*h;c[u]=A}return c[0]=t,c.push(n),c}var vV=new d,PV=new d;function jZe(e,t,n,i){let o=new ys(n,i),r=o.projectPointOntoPlane(d.add(n,e,vV),vV),s=o.projectPointOntoPlane(d.add(n,t,PV),PV),a=U.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var YZe=new d(-1,0,0),U0=new N,qZe=new N,Cq=new J,KZe=J.IDENTITY.clone(),XZe=new d,JZe=new se,nme=new d;function _g(e,t,n,i,o,r,s,a){let c=XZe,u=JZe;U0=kt.eastNorthUpToFixedFrame(e,o,U0),c=N.multiplyByPointAsVector(U0,YZe,c),c=d.normalize(c,c);let f=jZe(c,t,e,o);Cq=J.fromRotationZ(f,Cq),nme.z=r,U0=N.multiplyTransformation(U0,N.fromRotationTranslation(Cq,nme,qZe),U0);let h=KZe;h[0]=s;for(let A=0;A<a;A++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=J.multiplyByVector(h,u,u),u=N.multiplyByPoint(U0,u,u),i.push(u.x,u.y,u.z);return i}var ZZe=new d;function Eq(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,ZZe);i=_g(c,t,n,i,o,r[a/3],s,1)}return i}function $Ze(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function ime(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var ome=new Le,rme=new d,sme=new J;function ame(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,VT),d.subtract(n,e,DV)),h=i===ji.BEVELED?0:Math.ceil(f/D.toRadians(5)),A;o?A=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,VT),f/(h+1),ome),sme):A=J.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),ome),sme);let g,m;if(t=d.clone(t,rme),h>0){let _=u?2:1;for(let y=0;y<h;y++)t=J.multiplyByVector(A,t,t),g=d.subtract(t,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,DV),s=_g(m,g,a,s,r,c,1,_)}else g=d.subtract(t,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,DV),s=_g(m,g,a,s,r,c,1,1),n=d.clone(n,rme),g=d.subtract(n,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,DV),s=_g(m,g,a,s,r,c,1,1);return s}_O.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];U.equals(r,s)||n.push(s)}return n};_O.angleIsGreaterThanPi=function(e,t,n,i){let o=new ys(n,i),r=o.projectPointOntoPlane(d.add(n,e,vV),vV),s=o.projectPointOntoPlane(d.add(n,t,PV),PV);return s.x*r.y-s.y*r.x>=0};var e$e=new d,t$e=new d;_O.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=WZe(e,r),a=i._granularity,c=i._cornerType,u=o?$Ze(t,n):ime(t,n),f=o?ime(t,n):void 0,h=n.height/2,A=n.width/2,g=e.length,m=[],_=o?[]:void 0,y=OZe,C=FZe,E=QZe,I=kZe,b=UZe,S=GZe,B=zZe,v=VZe,P=HZe,M=e[0],L=e[1];I=r.geodeticSurfaceNormal(M,I),y=d.subtract(L,M,y),y=d.normalize(y,y),v=d.cross(I,y,v),v=d.normalize(v,v);let p=s[0],x=s[1];o&&(_=_g(M,v,f,_,r,p+h,1,1)),P=d.clone(M,P),M=L,C=d.negate(y,C);let T,w;for(let k=1;k<g-1;k++){let Q=o?2:1;if(L=e[k+1],M.equals(L)){yt("Positions are too close and are considered equivalent with rounding error.");continue}y=d.subtract(L,M,y),y=d.normalize(y,y),I=r.geodeticSurfaceNormal(M,I);let z=d.multiplyByScalar(I,d.dot(y,I),e$e);d.subtract(y,z,z),d.normalize(z,z);let F=d.multiplyByScalar(I,d.dot(C,I),t$e);if(d.subtract(C,F,F),d.normalize(F,F),!D.equalsEpsilon(Math.abs(d.dot(z,F)),1,D.EPSILON7)){E=d.add(y,C,E),E=d.normalize(E,E),E=d.cross(E,I,E),E=d.cross(I,E,E),E=d.normalize(E,E);let W=1/Math.max(.25,d.magnitude(d.cross(E,C,VT))),Z=_O.angleIsGreaterThanPi(y,C,M,r);Z?(b=d.add(M,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,A,S),S),Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(S,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,A,B),B),c===ji.ROUNDED||c===ji.BEVELED?ame(b,S,B,c,Z,r,m,u,x+h,o):(E=d.negate(E,E),m=_g(M,E,u,m,r,x+h,W,Q)),P=d.clone(B,P)):(b=d.add(M,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,-A,S),S),Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(S,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,-A,B),B),c===ji.ROUNDED||c===ji.BEVELED?ame(b,S,B,c,Z,r,m,u,x+h,o):m=_g(M,E,u,m,r,x+h,W,Q),P=d.clone(B,P)),C=d.negate(y,C)}else m=_g(P,v,u,m,r,p+h,1,1),P=M;p=x,x=s[k+1],M=L}Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(M,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),o&&(_=_g(M,v,f,_,r,x+h,1,1)),g=m.length;let R=o?g+_.length:g,O=new Float64Array(R);return O.set(m),o&&O.set(_,g),O};var jh=_O;var xq={},HT=new d,dme=new d,n$e=new d,cme=new d,Nl=[new d,new d],hme=new d,mme=new d,Ame=new d,i$e=new d,o$e=new d,r$e=new d,s$e=new d,a$e=new d,c$e=new d,l$e=new d,lme=new Le,ume=new J;function RV(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,HT),d.subtract(n,e,dme)),s=i===ji.BEVELED?1:Math.ceil(r/D.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,HT),r/s,lme),ume):u=J.fromQuaternion(Le.fromAxisAngle(e,r/s,lme),ume);let f=0;t=d.clone(t,HT);for(let h=0;h<s;h++)t=J.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function u$e(e){let t=hme,n=mme,i=Ame,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=RV(t,n,i,ji.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=RV(t,n,i,ji.ROUNDED,!1);return[r,c]}function fme(e,t,n,i){let o=HT;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function Iq(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,HT),a=d.negate(s,dme),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,n$e),A=d.add(h,a,cme);o[c++]=A.x,o[c++]=A.y,o[c++]=A.z;let g=d.add(h,s,cme);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}xq.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var f$e=new d,d$e=new d;xq.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=hme,c=mme,u=Ame,f=i$e,h=o$e,A=r$e,g=s$e,m=a$e,_=c$e,y=l$e,C=[],E=s?[]:void 0,I=s?[]:void 0,b=n[0],S=n[1];c=d.normalize(d.subtract(S,b,c),c),a=i.geodeticSurfaceNormal(b,a),f=d.normalize(d.cross(a,c,f),f),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),g=d.clone(b,g),b=S,u=d.negate(c,u);let B,v=[],P,M=n.length;for(P=1;P<M-1;P++){a=i.geodeticSurfaceNormal(b,a),S=n[P+1],c=d.normalize(d.subtract(S,b,c),c);let p=d.multiplyByScalar(a,d.dot(c,a),f$e);d.subtract(c,p,p),d.normalize(p,p);let x=d.multiplyByScalar(a,d.dot(u,a),d$e);if(d.subtract(u,x,x),d.normalize(x,x),!D.equalsEpsilon(Math.abs(d.dot(p,x)),1,D.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let w=o/Math.max(.25,d.magnitude(d.cross(h,u,HT))),R=jh.angleIsGreaterThanPi(c,u,b,i);h=d.multiplyByScalar(h,w,h),R?(m=d.add(b,h,m),y=d.add(m,d.multiplyByScalar(f,o,y),y),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(y,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(_,A),f=d.normalize(d.cross(a,c,f),f),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===ji.ROUNDED||r===ji.BEVELED?v.push({leftPositions:RV(m,A,_,r,R)}):v.push({leftPositions:fme(b,d.negate(h,h),_,R)})):(_=d.add(b,h,_),y=d.add(_,d.negate(d.multiplyByScalar(f,o,y),y),y),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(y,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(m,A),f=d.normalize(d.cross(a,c,f),f),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(_,d.negate(d.multiplyByScalar(f,o,g),g),g),r===ji.ROUNDED||r===ji.BEVELED?v.push({rightPositions:RV(_,A,m,r,R)}):v.push({rightPositions:fme(b,h,m,R)})),u=d.negate(c,u)}b=S}a=i.geodeticSurfaceNormal(b,a),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(b,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z));let L;return r===ji.ROUNDED&&(L=u$e(C)),{positions:C,corners:v,lefts:E,normals:I,endPositions:L}};var no=xq;var _me=new d,yme=new d,MV=new d,NV=new d,h$e=new d,Cme=new d,vy=new d,WT=new d;function Eme(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Yh(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,vy),vy);r.normal&&no.addAttribute(s,t,i,o),r.tangent&&no.addAttribute(a,u,i,o),r.bitangent&&no.addAttribute(c,n,i,o)}function Ime(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new yn,u,f=0,h=0,A,g=0,m;for(A=0;A<i.length;A+=2)m=i[A].length-3,f+=m,g+=m*2,h+=i[A+1].length-3;for(f+=3,h+=3,A=0;A<o.length;A++){u=o[A];let X=o[A].leftPositions;l(X)?(m=X.length,f+=m,g+=m):(m=o[A].rightPositions.length,h+=m,g+=m)}let _=l(r),y;_&&(y=r[0].length-3,f+=y,h+=y,y/=3,g+=y*6);let C=f+h,E=new Float64Array(C),I=t.normal?new Float32Array(C):void 0,b=t.tangent?new Float32Array(C):void 0,S=t.bitangent?new Float32Array(C):void 0,B={normals:I,tangents:b,bitangents:S},v=0,P=C-1,M,L,p,x,T=_me,w=yme,R,O,k=y/2,Q=Oe.createTypedArray(C/3,g),z=0;if(_){O=MV,R=NV;let X=r[0];for(T=d.fromArray(a,0,T),w=d.fromArray(s,0,w),A=0;A<k;A++)O=d.fromArray(X,(k-1-A)*3,O),R=d.fromArray(X,(k+A)*3,R),no.addAttribute(E,R,v),no.addAttribute(E,O,void 0,P),Yh(B,T,w,v,P,t),L=v/3,x=L+1,M=(P-2)/3,p=M-1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}let F=0,H=0,W=i[F++],Z=i[F++];E.set(W,v),E.set(Z,P-Z.length+1),w=d.fromArray(s,H,w);let Y,$;for(m=Z.length-3,A=0;A<m;A+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,A,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-A,WT),WT),T=d.normalize(d.add(Y,$,T),T),Yh(B,T,w,v,P,t),L=v/3,x=L+1,M=(P-2)/3,p=M-1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;for(Y=n.geodeticSurfaceNormal(d.fromArray(W,m,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m,WT),WT),T=d.normalize(d.add(Y,$,T),T),H+=3,A=0;A<o.length;A++){let X;u=o[A];let he=u.leftPositions,ge=u.rightPositions,fe,ye,xe=Cme,ve=MV,Te=NV;if(T=d.fromArray(a,H,T),l(he)){for(Yh(B,T,w,void 0,P,t),P-=3,fe=x,ye=p,X=0;X<he.length/3;X++)xe=d.fromArray(he,X*3,xe),Q[z++]=fe,Q[z++]=ye-X-1,Q[z++]=ye-X,no.addAttribute(E,xe,void 0,P),ve=d.fromArray(E,(ye-X-1)*3,ve),Te=d.fromArray(E,fe*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),Yh(B,T,w,void 0,P,t),P-=3;xe=d.fromArray(E,fe*3,xe),ve=d.subtract(d.fromArray(E,ye*3,ve),xe,ve),Te=d.subtract(d.fromArray(E,(ye-X)*3,Te),xe,Te),w=d.normalize(d.add(ve,Te,w),w),Yh(B,T,w,v,void 0,t),v+=3}else{for(Yh(B,T,w,v,void 0,t),v+=3,fe=p,ye=x,X=0;X<ge.length/3;X++)xe=d.fromArray(ge,X*3,xe),Q[z++]=fe,Q[z++]=ye+X,Q[z++]=ye+X+1,no.addAttribute(E,xe,v),ve=d.fromArray(E,fe*3,ve),Te=d.fromArray(E,(ye+X)*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),Yh(B,T,w,v,void 0,t),v+=3;xe=d.fromArray(E,fe*3,xe),ve=d.subtract(d.fromArray(E,(ye+X)*3,ve),xe,ve),Te=d.subtract(d.fromArray(E,ye*3,Te),xe,Te),w=d.normalize(d.negate(d.add(Te,ve,w),w),w),Yh(B,T,w,void 0,P,t),P-=3}for(W=i[F++],Z=i[F++],W.splice(0,3),Z.splice(Z.length-3,3),E.set(W,v),E.set(Z,P-Z.length+1),m=Z.length-3,H+=3,w=d.fromArray(s,H,w),X=0;X<Z.length;X+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,X,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-X,WT),WT),T=d.normalize(d.add(Y,$,T),T),Yh(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,M=p+1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;v-=3,P+=3}if(T=d.fromArray(a,a.length-3,T),Yh(B,T,w,v,P,t),_){v+=3,P-=3,O=MV,R=NV;let X=r[1];for(A=0;A<k;A++)O=d.fromArray(X,(y-A-1)*3,O),R=d.fromArray(X,A*3,R),no.addAttribute(E,O,void 0,P),no.addAttribute(E,R,v),Yh(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,M=p+1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}if(c.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:E}),t.st){let X=new Float32Array(C/3*2),he,ge,fe=0;if(_){f/=3,h/=3;let ye=Math.PI/(y+1);ge=1/(f-y+1),he=1/(h-y+1);let xe,ve=y/2;for(A=ve+1;A<y+1;A++)xe=D.PI_OVER_TWO+ye*A,X[fe++]=he*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=1;A<h-y+1;A++)X[fe++]=A*he,X[fe++]=0;for(A=y;A>ve;A--)xe=D.PI_OVER_TWO-A*ye,X[fe++]=1-he*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=ve;A>0;A--)xe=D.PI_OVER_TWO-ye*A,X[fe++]=1-ge*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=f-y;A>0;A--)X[fe++]=A*ge,X[fe++]=1;for(A=1;A<ve+1;A++)xe=D.PI_OVER_TWO+ye*A,X[fe++]=ge*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe))}else{for(f/=3,h/=3,ge=1/(f-1),he=1/(h-1),A=0;A<h;A++)X[fe++]=A*he,X[fe++]=0;for(A=f;A>0;A--)X[fe++]=(A-1)*ge,X[fe++]=1}c.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:X})}return t.normal&&(c.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.normals})),t.tangent&&(c.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.tangents})),t.bitangent&&(c.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.bitangents})),{attributes:c,indices:Q}}function m$e(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,A=t.bitangent?new Float32Array(s*6):void 0,g=_me,m=yme,_=MV,y=NV,C=h$e,E=Cme,I=c;for(u=0;u<s;u+=3){let b=I+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),_=d.fromArray(n,(u+3)%s,_),m=d.subtract(m,g,m),_=d.subtract(_,g,_),y=d.normalize(d.cross(m,_,y),y),t.normal&&(no.addAttribute(f,y,b),no.addAttribute(f,y,b+3),no.addAttribute(f,y,I),no.addAttribute(f,y,I+3)),(t.tangent||t.bitangent)&&(E=d.fromArray(i,u,E),t.bitangent&&(no.addAttribute(A,E,b),no.addAttribute(A,E,b+3),no.addAttribute(A,E,I),no.addAttribute(A,E,I+3)),t.tangent&&(C=d.normalize(d.cross(E,y,C),C),no.addAttribute(h,C,b),no.addAttribute(h,C,b+3),no.addAttribute(h,C,I),no.addAttribute(h,C,I+3))),I+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(A.set(o),A.set(o,s),e.bitangent.values=A):e.bitangent=void 0,t.tangent){let b=e.tangent.values;h.set(b),h.set(b,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let A=a*2;for(let g=0;g<2;g++){for(h[A++]=f[0],h[A++]=f[1],u=2;u<a;u+=2){let m=f[u],_=f[u+1];h[A++]=m,h[A++]=_,h[A++]=m,h[A++]=_}h[A++]=f[0],h[A++]=f[1]}e.st.values=h}return e}function bq(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function A$e(e,t){let n=new Pe({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=no.computePositions(e),r=Ime(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,A=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=Ii.scaleToGeodeticHeight(f,s,i),m=bq(f,0,m),g=Ii.scaleToGeodeticHeight(g,a,i),m=bq(g,h*2,m),A.set(f),A.set(g,h),A.set(m,h*2),c.position.values=A,c=m$e(c,t);let _,y=h/3;if(e.shadowVolume){let M=c.normal.values;h=M.length;let L=new Float32Array(h*6);for(_=0;_<h;_++)M[_]=-M[_];L.set(M,h),L=bq(M,h*4,L),c.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:L}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let M=new Uint8Array(y*6);if(e.offsetAttribute===hn.TOP)M=M.fill(1,0,y).fill(1,y*2,y*4);else{let L=e.offsetAttribute===hn.NONE?0:1;M=M.fill(L)}c.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}let C=u.length,E=y+y,I=Oe.createTypedArray(A.length/3,C*2+E*3);I.set(u);let b=C;for(_=0;_<C;_+=3){let M=u[_],L=u[_+1],p=u[_+2];I[b++]=p+y,I[b++]=L+y,I[b++]=M+y}let S,B,v,P;for(_=0;_<E;_+=2)S=_+E,B=S+E,v=S+1,P=B+1,I[b++]=S,I[b++]=B,I[b++]=v,I[b++]=v,I[b++]=B,I[b++]=P;return{attributes:c,indices:I}}var pme=new d,yO=new d,Td=new Ae;function gme(e,t,n,i,o,r){let s=d.subtract(t,e,pme);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,yO),c=d.cross(s,a,pme);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,A=r.longitude;d.add(e,c,yO),n.cartesianToCartographic(yO,Td);let g=Td.latitude,m=Td.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),d.subtract(e,c,yO),n.cartesianToCartographic(yO,Td),g=Td.latitude,m=Td.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=A}var bd=new d,CO=new d,_u=new Ae,yu=new Ae;function xme(e,t,n,i,o){e=Eme(e,t);let r=Mo(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;_u.latitude=Number.POSITIVE_INFINITY,_u.longitude=Number.POSITIVE_INFINITY,yu.latitude=Number.NEGATIVE_INFINITY,yu.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===ji.ROUNDED){let A=r[0];d.subtract(A,r[1],bd),d.normalize(bd,bd),d.multiplyByScalar(bd,a,bd),d.add(A,bd,CO),t.cartesianToCartographic(CO,Td),c=Td.latitude,u=Td.longitude,_u.latitude=Math.min(_u.latitude,c),_u.longitude=Math.min(_u.longitude,u),yu.latitude=Math.max(yu.latitude,c),yu.longitude=Math.max(yu.longitude,u)}for(let A=0;A<s-1;++A)gme(r[A],r[A+1],t,a,_u,yu);let f=r[s-1];d.subtract(f,r[s-2],bd),d.normalize(bd,bd),d.multiplyByScalar(bd,a,bd),d.add(f,bd,CO),gme(f,CO,t,a,_u,yu),i===ji.ROUNDED&&(t.cartesianToCartographic(CO,Td),c=Td.latitude,u=Td.longitude,_u.latitude=Math.min(_u.latitude,c),_u.longitude=Math.min(_u.longitude,u),yu.latitude=Math.max(yu.latitude,c),yu.longitude=Math.max(yu.longitude,u));let h=l(o)?o:new ae;return h.north=yu.latitude,h.south=_u.latitude,h.east=yu.longitude,h.west=_u.longitude,h}function Cg(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+te.packedLength+Pe.packedLength+7}Cg.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var bme=te.clone(te.UNIT_SPHERE),Tme=new Pe,yg={positions:void 0,ellipsoid:bme,vertexFormat:Tme,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Cg.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=te.unpack(e,t,bme);t+=te.packedLength;let s=Pe.unpack(e,t,Tme);t+=Pe.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._vertexFormat=Pe.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=A,n._offsetAttribute=g===-1?void 0:g,n):(yg.positions=o,yg.width=a,yg.height=c,yg.extrudedHeight=u,yg.cornerType=f,yg.granularity=h,yg.shadowVolume=A,yg.offsetAttribute=g===-1?void 0:g,new Cg(yg))};Cg.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??te.default,r=e.cornerType??ji.ROUNDED;return xme(n,o,i,r,t)};Cg.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=Eme(t,i);let o=Mo(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=A$e(u,c);else{let g=no.computePositions(u);if(f=Ime(g,c,i),f.attributes.position.values=Ii.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===hn.NONE?0:1,_=f.attributes.position.values.length,y=new Uint8Array(_/3).fill(m);f.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}}let h=f.attributes,A=le.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ht({attributes:h,indices:f.indices,primitiveType:Me.TRIANGLES,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Cg.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Cg({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Cg.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=xme(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var G0=Cg;var Sme=new d,wme=new d,p$e=new d;function g$e(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Bme(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new yn,a,c=0,u=0,f,h=0,A;for(f=0;f<i.length;f+=2)A=i[f].length-3,c+=A,h+=A/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let R=o[f].leftPositions;l(R)?(A=R.length,c+=A,h+=A/3*2):(A=o[f].rightPositions.length,u+=A,h+=A/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let _=c+u,y=new Float64Array(_),C=0,E=_-1,I,b,S,B,v,P,M=m/2,L=Oe.createTypedArray(_/3,h+4),p=0;if(L[p++]=C/3,L[p++]=(E-2)/3,g){n.push(C/3),P=Sme,v=wme;let R=r[0];for(f=0;f<M;f++)P=d.fromArray(R,(M-1-f)*3,P),v=d.fromArray(R,(M+f)*3,v),no.addAttribute(y,v,C),no.addAttribute(y,P,void 0,E),b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3}let x=0,T=i[x++],w=i[x++];for(y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,n.push(C/3,(E-2)/3),f=0;f<A;f+=3)b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;for(f=0;f<o.length;f++){let R;a=o[f];let O=a.leftPositions,k=a.rightPositions,Q,z=p$e;if(l(O)){for(E-=3,Q=S,n.push(B),R=0;R<O.length/3;R++)z=d.fromArray(O,R*3,z),L[p++]=Q-R-1,L[p++]=Q-R,no.addAttribute(y,z,void 0,E),E-=3;n.push(Q-Math.floor(O.length/6)),t===ji.BEVELED&&n.push((E-2)/3+1),C+=3}else{for(C+=3,Q=B,n.push(S),R=0;R<k.length/3;R++)z=d.fromArray(k,R*3,z),L[p++]=Q+R,L[p++]=Q+R+1,no.addAttribute(y,z,C),C+=3;n.push(Q+Math.floor(k.length/6)),t===ji.BEVELED&&n.push(C/3-1),E-=3}for(T=i[x++],w=i[x++],T.splice(0,3),w.splice(w.length-3,3),y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,R=0;R<w.length;R+=3)B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;C-=3,E+=3,n.push(C/3,(E-2)/3)}if(g){C+=3,E-=3,P=Sme,v=wme;let R=r[1];for(f=0;f<M;f++)P=d.fromArray(R,(m-f-1)*3,P),v=d.fromArray(R,f*3,v),no.addAttribute(y,P,void 0,E),no.addAttribute(y,v,C),B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;n.push(C/3)}else n.push(C/3,(E-2)/3);return L[p++]=C/3,L[p++]=(E-2)/3,s.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),{attributes:s,indices:L,wallIndices:n}}function _$e(e){let t=e.ellipsoid,n=no.computePositions(e),i=Bme(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let A=new Float64Array(f*2);if(u=Ii.scaleToGeodeticHeight(u,r,t),h=Ii.scaleToGeodeticHeight(h,s,t),A.set(u),A.set(h,f),a.position.values=A,f/=3,l(e.offsetAttribute)){let I=new Uint8Array(f*2);if(e.offsetAttribute===hn.TOP)I=I.fill(1,0,f);else{let b=e.offsetAttribute===hn.NONE?0:1;I=I.fill(b)}a.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}let g,m=c.length,_=Oe.createTypedArray(A.length/3,(m+o.length)*2);_.set(c);let y=m;for(g=0;g<m;g+=2){let I=c[g],b=c[g+1];_[y++]=I+f,_[y++]=b+f}let C,E;for(g=0;g<o.length;g++)C=o[g],E=C+f,_[y++]=C,_[y++]=E;return{attributes:a,indices:_}}function EO(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+te.packedLength+6}EO.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var Dme=te.clone(te.UNIT_SPHERE),Py={positions:void 0,ellipsoid:Dme,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};EO.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let A=0;A<i;++A,t+=d.packedLength)o[A]=d.unpack(e,t);let r=te.unpack(e,t,Dme);t+=te.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(Py.positions=o,Py.width=s,Py.height=a,Py.extrudedHeight=c,Py.cornerType=u,Py.granularity=f,Py.offsetAttribute=h===-1?void 0:h,new EO(Py))};EO.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=g$e(t,i);let o=Mo(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=_$e(c);else{let A=no.computePositions(c);if(u=Bme(A,c.cornerType),u.attributes.position.values=Ii.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}}let f=u.attributes,h=le.fromVertices(f.position.values,void 0,3);return new ht({attributes:f,indices:u.indices,primitiveType:Me.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var IO=EO;var y$e=new ci(0);function Ll(e){yi.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(Ll.prototype=Object.create(yi.prototype),Ll.prototype.constructor=Ll);Object.defineProperties(Ll.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Ll.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&fl.isSupported(this._scene)};Ll.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};Ll.prototype._computeCenter=me.throwInstantiationError;Ll.prototype._onEntityPropertyChanged=function(e,t,n,i){if(yi.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&yt(yt.geometryZIndex),this._zIndex=o.zIndex??y$e,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new _h(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new SE(this._scene,a,r,s)}};Ll.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),yi.prototype.destroy.call(this)};Ll.getGeometryHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryHeightReference);return}return Wf(t)?0:e};Ll.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryExtrudedHeightReference);return}return Wf(t)?Ll.CLAMP_TO_GROUND:e};Ll.CLAMP_TO_GROUND="clamp";Ll.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=Ze.NONE),(!l(n)||!l(i))&&(i=Ze.NONE);let o=0;if(t!==Ze.NONE&&o++,i===Ze.RELATIVE_TO_GROUND&&o++,o===2)return hn.ALL;if(o===1)return hn.TOP};var ti=Ll;var vme=new G,Pme=d.ZERO,Rme=new d,Mme=new ae;function C$e(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function qh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new C$e(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(qh.prototype=Object.create(ti.prototype),qh.prototype.constructor=qh);qh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,vme)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Pme,Rme))),new Pt({id:t,geometry:new G0(this._options),attributes:i})};qh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,vme),o={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Pme,Rme))),new Pt({id:t,geometry:new IO(this._options),attributes:o})};qh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};qh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||yi.prototype._isHidden.call(this,e,t)};qh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.width)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};qh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.cornerType=j.getValueOrUndefined(t.cornerType,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=Ti.getMinimumMaximumHeights(G0.computeRectangle(s,Mme)).minimumTerrainHeight),s.extrudedHeight=o};qh.DynamicGeometryUpdater=jT;function jT(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(jT.prototype=Object.create(_i.prototype),jT.prototype.constructor=jT);jT.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||_i.prototype._isHidden.call(this,e,t,n)};jT.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.positions=j.getValueOrUndefined(t.positions,n),i.width=j.getValueOrUndefined(t.width,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(G0.computeRectangle(i,Mme)).minimumTerrainHeight),i.extrudedHeight=s};var xO=qh;function LV(){me.throwInstantiationError()}Object.defineProperties(LV.prototype,{name:{get:me.throwInstantiationError},clock:{get:me.throwInstantiationError},entities:{get:me.throwInstantiationError},isLoading:{get:me.throwInstantiationError},changedEvent:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},loadingEvent:{get:me.throwInstantiationError},show:{get:me.throwInstantiationError},clustering:{get:me.throwInstantiationError}});LV.prototype.update=function(e){me.throwInstantiationError()};LV.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var us=LV;function lA(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(lA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var Nme=new d;lA.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,Nme);return Sq(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};lA.prototype.isScaledSpacePointVisible=function(e){return Sq(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var E$e=new d;lA.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=E$e,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),Sq(e,o,i)};lA.prototype.computeHorizonCullingPoint=function(e,t,n){return Fme(this._ellipsoid,e,t,n)};var Lme=te.clone(te.UNIT_SPHERE);lA.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=Ome(this._ellipsoid,n,Lme);return Fme(o,e,t,i)};lA.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Qme(this._ellipsoid,e,t,n,i,o)};lA.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=Ome(this._ellipsoid,o,Lme);return Qme(s,e,t,n,i,r)};var I$e=[];lA.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,I$e),o=le.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var x$e=new d;function Ome(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,x$e);e=te.fromCartesian3(i,n)}return e}function Fme(e,t,n,i){l(i)||(i=new d);let o=Gme(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=kme(e,c,o);if(u<0)return;r=Math.max(r,u)}return Ume(o,r,i)}var OV=new d;function Qme(e,t,n,i,o,r){l(r)||(r=new d),i=i??3,o=o??d.ZERO;let s=Gme(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){OV.x=n[c]+o.x,OV.y=n[c+1]+o.y,OV.z=n[c+2]+o.z;let f=kme(e,OV,s);if(f<0)return;a=Math.max(a,f)}return Ume(s,a,r)}function Sq(e,t,n){let i=t,o=n,r=d.subtract(e,i,Nme),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var b$e=new d,T$e=new d;function kme(e,t,n){let i=e.transformPositionToScaledSpace(t,b$e),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,T$e);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function Ume(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var Tq=new d;function Gme(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,Tq),d.normalize(Tq,Tq))}var Eg=lA;function Wr(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=Ut.clone(o)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._color=G.clone(e.color??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??br.NONE}var zme=Wr.SHOW_INDEX=0,Wme=Wr.POSITION_INDEX=1,S$e=Wr.COLOR_INDEX=2,w$e=Wr.OUTLINE_COLOR_INDEX=3,B$e=Wr.OUTLINE_WIDTH_INDEX=4,D$e=Wr.PIXEL_SIZE_INDEX=5,v$e=Wr.SCALE_BY_DISTANCE_INDEX=6,P$e=Wr.TRANSLUCENCY_BY_DISTANCE_INDEX=7,R$e=Wr.DISTANCE_DISPLAY_CONDITION_INDEX=8,M$e=Wr.DISABLE_DEPTH_DISTANCE_INDEX=9,N$e=Wr.SPLIT_DIRECTION_INDEX=10;Wr.NUMBER_OF_PROPERTIES=11;function cf(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Wr.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,cf(this,zme))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),cf(this,Wme))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;jt.equals(t,e)||(this._scaleByDistance=jt.clone(e,t),cf(this,v$e))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;jt.equals(t,e)||(this._translucencyByDistance=jt.clone(e,t),cf(this,P$e))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,cf(this,D$e))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),cf(this,S$e))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),cf(this,w$e))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,cf(this,B$e))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),cf(this,R$e))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,cf(this,M$e))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,cf(this,zme))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,cf(this,N$e))}}});Wr.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Wr.prototype._getActualPosition=function(){return this._actualPosition};Wr.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),cf(this,Wme)};var Vme=new se;Wr._computeActualPosition=function(e,t,n){return t.mode===ie.SCENE3D?e:(N.multiplyByPoint(n,e,Vme),eo.computeActualEllipsoidPosition(t,Vme))};var Hme=new se;Wr._computeScreenSpacePosition=function(e,t,n,i){let o=N.multiplyByVector(e,se.fromElements(t.x,t.y,t.z,1,Hme),Hme);return eo.worldToWindowCoordinates(n,o,i)};Wr.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new U);let i=n.modelMatrix,o=Wr._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Wr.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Ye),n.x=r,n.y=s,n.width=a,n.height=c,n};Wr.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&G.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&G.equals(this._outlineColor,e._outlineColor)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Wr.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var ea=Wr;var Ry=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var bO=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var L$e=ea.SHOW_INDEX,Dq=ea.POSITION_INDEX,jme=ea.COLOR_INDEX,O$e=ea.OUTLINE_COLOR_INDEX,F$e=ea.OUTLINE_WIDTH_INDEX,Q$e=ea.PIXEL_SIZE_INDEX,Yme=ea.SCALE_BY_DISTANCE_INDEX,qme=ea.TRANSLUCENCY_BY_DISTANCE_INDEX,Kme=ea.DISTANCE_DISPLAY_CONDITION_INDEX,k$e=ea.DISABLE_DEPTH_DISTANCE_INDEX,U$e=ea.SPLIT_DIRECTION_INDEX,vq=ea.NUMBER_OF_PROPERTIES,jc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function Sd(e){e=e??V.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(vq),this._maxPixelSize=1,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(Sd.prototype,{length:{get:function(){return Pq(this),this._pointPrimitives.length}}});function Xme(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Sd.prototype.add=function(e){let t=new ea(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};Sd.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Sd.prototype.removeAll=function(){Xme(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function Pq(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}Sd.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};Sd.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};Sd.prototype.get=function(e){return Pq(this),this._pointPrimitives[e]};Sd.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<vq;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function G$e(e,t,n){return new Zp(e,[{index:jc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dq]},{index:jc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dq]},{index:jc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[jme]},{index:jc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[qme]},{index:jc.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Yme]},{index:jc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Kme]}],t)}var wq=new ei;function Jme(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(r,wq);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[jc.positionHighAndSize],u=wq.high;c(o,u.x,u.y,u.z,s);let f=n[jc.positionLowAndOutline],h=wq.low;f(o,h.x,h.y,h.z,a)}var FV=65536,TO=256;function Zme(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=G.floatToByte(r.red),u=G.floatToByte(r.green),f=G.floatToByte(r.blue),h=c*FV+u*TO+f;c=G.floatToByte(a.red),u=G.floatToByte(a.green),f=G.floatToByte(a.blue);let A=c*FV+u*TO+f;c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue);let g=c*FV+u*TO+f,m=G.floatToByte(r.alpha)*FV+G.floatToByte(a.alpha)*TO+G.floatToByte(s.alpha),_=n[jc.compressedAttribute0];_(o,h,A,g,m)}function $me(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=D.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*TO+s;c=D.clamp(c,0,1),c=c===1?255:c*255|0;let A=c,g=n[jc.compressedAttribute1];g(o,h,A,r,a)}function eAe(e,t,n,i){let o=i._index,r=n[jc.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function tAe(e,t,n,i){let o=i._index,r=n[jc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function z$e(e,t,n,i){Jme(e,t,n,i),Zme(e,t,n,i),$me(e,t,n,i),eAe(e,t,n,i),tAe(e,t,n,i)}function Bq(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ea._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function V$e(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!N.equals(r,e.modelMatrix)?(e._mode=n,N.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&Bq(e,i,i.length,t,r,!0)):n===ie.MORPHING?Bq(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&Bq(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function H$e(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var W$e=[];Sd.prototype.update=function(e){if(Pq(this),!this.show)return;this._maxTotalPointSize=Yt.maximumAliasedPointSize,V$e(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let S=0;S<vq;++S)r[S]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=G$e(c,n,this._buffersUsage),a=this._vaf.writers;for(let S=0;S<n;++S){let B=this._pointPrimitives[S];B._dirty=!1,z$e(this,c,a,B)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let S=W$e;S.length=0,(r[Dq]||r[F$e]||r[Q$e])&&S.push(Jme),(r[jme]||r[O$e])&&S.push(Zme),(r[L$e]||r[qme])&&S.push($me),r[Yme]&&S.push(eAe),(r[Kme]||r[k$e]||r[U$e])&&S.push(tAe);let B=S.length;if(a=this._vaf.writers,o/n>.1){for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let M=0;M<B;++M)S[M](this,c,a,P)}this._vaf.commit()}else{for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let M=0;M<B;++M)S[M](this,c,a,P);this._vaf.subCommit(P._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,A=N.IDENTITY;e.mode===ie.SCENE3D?(A=this.modelMatrix,h=le.clone(this._baseVolumeWC,this._boundingVolume)):h=le.clone(this._baseVolume2D,this._boundingVolume),H$e(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Uo.OPAQUE||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Uo.TRANSLUCENT||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!1,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,_;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new He({sources:[bO]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT&&(_=new He({defines:["OPAQUE"],sources:[Ry]}),this._sp=an.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc}),_=new He({defines:["TRANSLUCENT"],sources:[Ry]}),this._spTranslucent=an.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._blendOption===Uo.OPAQUE&&(_=new He({sources:[Ry]}),this._sp=an.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._blendOption===Uo.TRANSLUCENT&&(_=new He({sources:[Ry]}),this._spTranslucent=an.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let y,C,E,I,b=e.commandList;if(u.render||f){let S=this._colorCommands,B=this._blendOption===Uo.OPAQUE,v=this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT;y=this._vaf.va,C=y.length,S.length=C;let P=v?C*2:C;for(I=0;I<P;++I){let M=B||v&&I%2===0;E=S[I],l(E)||(E=S[I]=new nt),E.primitiveType=Me.POINTS,E.pass=M||!v?Be.OPAQUE:Be.TRANSLUCENT,E.owner=this;let L=v?Math.floor(I/2):I;E.boundingVolume=h,E.modelMatrix=A,E.shaderProgram=M?this._sp:this._spTranslucent,E.uniformMap=this._uniforms,E.vertexArray=y[L].va,E.renderState=M?this._rsOpaque:this._rsTranslucent,E.debugShowBoundingVolume=this.debugShowBoundingVolume,E.pickId="v_pickColor",b.push(E)}}};Sd.prototype.isDestroyed=function(){return!1};Sd.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Xme(this._pointPrimitives),ue(this)};var YT=Sd;var nAe=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Rq=1,SO=8,BO=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==Rq)throw new Error(`Got v${o} data when expected v${Rq}.`);let r=nAe[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=nAe.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,SO,t),this.coords=new this.ArrayType(this.data,SO+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(SO+s+a+c),this.ids=new this.IndexArrayType(this.data,SO,t),this.coords=new this.ArrayType(this.data,SO+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(Rq<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return Nq(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,A=c.pop()||0;if(h-A<=a){for(let y=A;y<=h;y++){let C=s[2*y],E=s[2*y+1];C>=t&&C<=i&&E>=n&&E<=o&&u.push(r[y])}continue}let g=A+h>>1,m=s[2*g],_=s[2*g+1];m>=t&&m<=i&&_>=n&&_<=o&&u.push(r[g]),(f===0?t<=m:n<=_)&&(c.push(A),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=_)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,A=a.pop()||0;if(h-A<=s){for(let y=A;y<=h;y++)iAe(r[2*y],r[2*y+1],t,n)<=u&&c.push(o[y]);continue}let g=A+h>>1,m=r[2*g],_=r[2*g+1];iAe(m,_,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=_)&&(a.push(A),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=_)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function Nq(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;oAe(e,t,s,i,o,r),Nq(e,t,n,i,s-1,1-r),Nq(e,t,n,s+1,o,1-r)}function oAe(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),A=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*A*(u-A)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*A/u+g)),_=Math.min(o,Math.floor(n+(u-f)*A/u+g));oAe(e,t,n,m,_,r)}let s=t[2*n+r],a=i,c=o;for(wO(e,t,i,n),t[2*o+r]>s&&wO(e,t,i,o);a<c;){for(wO(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?wO(e,t,i,c):(c++,wO(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function wO(e,t,n,i){Mq(e,n,i),Mq(t,2*n,2*i),Mq(t,2*n+1,2*i+1)}function Mq(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function iAe(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function Kh(e){e=e??V.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new _e,this.show=e.show??!0}function rAe(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var j$e=new Ye;function sAe(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=yy.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=xo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=ea.getScreenSpaceBoundingBox(e,t,o)),rAe(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&cAe(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=yy.getScreenSpaceBoundingBox(s,t,j$e);rAe(a,n),o=Ye.union(o,a,o)}return o}function Y$e(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&cAe(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function aAe(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function cAe(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function Lq(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ie.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var q$e=new Ye,K$e=new Ye,X$e=new Ye;function J$e(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new rA({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new nf({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new YT;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,A=[],g=e._previousHeight,m=n.camera.positionCartographic.height,_=n.ellipsoid,y=n.camera.positionWC,C=new Eg(_,y),E=[];e._clusterLabels&&Lq(i,E,n,C,e),e._clusterBillboards&&Lq(o,E,n,C,e),e._clusterPoints&&Lq(r,E,n,C,e);let I,b,S,B,v,P,M,L,p,x,T,w;if(E.length>0){let R=new BO(E.length,64,Uint32Array);for(let O=0;O<E.length;++O)R.add(E[O].coord.x,E[O].coord.y);if(R.finish(),m<g)for(S=h.length,I=0;I<S;++I){let O=h[I];if(!C.isPointVisible(O.position))continue;let k=xo._computeScreenSpacePosition(N.IDENTITY,O.position,d.ZERO,U.ZERO,n);if(!l(k))continue;let Q=1-m/g,z=O.width=O.width*Q,F=O.height=O.height*Q;z=Math.max(z,O.minimumWidth),F=Math.max(F,O.minimumHeight);let H=k.x-z*.5,W=k.y-F*.5,Z=k.x+z,Y=k.y+F;for(v=R.range(H,W,Z,Y),P=v.length,x=0,p=[],b=0;b<P;++b)M=v[b],L=E[M],L.clustered||(++x,T=L.collection,w=L.index,p.push(T.get(w).id));if(x>=f)for(aAe(O.position,x,p,e),A.push(O),b=0;b<P;++b)E[v[b]].clustered=!0}for(S=E.length,I=0;I<S;++I){let O=E[I];if(O.clustered)continue;O.clustered=!0,T=O.collection,w=O.index;let k=T.get(w);B=sAe(k,O.coord,u,e,q$e);let Q=Ye.clone(B,K$e);v=R.range(B.x,B.y,B.x+B.width,B.y+B.height),P=v.length;let z=d.clone(k.position);for(x=1,p=[k.id],b=0;b<P;++b)if(M=v[b],L=E[M],!L.clustered){let F=L.collection.get(L.index),H=sAe(F,L.coord,u,e,X$e);d.add(F.position,z,z),Ye.union(Q,H,Q),++x,p.push(F.id)}if(x>=f){let F=d.multiplyByScalar(z,1/x,z);for(aAe(F,x,p,e),A.push({position:F,width:Q.width,height:Q.height,minimumWidth:B.width,minimumHeight:B.height}),b=0;b<P;++b)E[v[b]].clustered=!0}else Y$e(k,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=A,e._previousHeight=m}}Kh.prototype._initialize=function(e){this._scene=e;let t=J$e(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(Kh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function Fq(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function Qq(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}Kh.prototype.getLabel=Fq("_labelCollection",rA,"_unusedLabelIndices","labelIndex");Kh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,Qq(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};Kh.prototype.getBillboard=Fq("_billboardCollection",nf,"_unusedBillboardIndices","billboardIndex");Kh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,Qq(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};Kh.prototype.getPoint=Fq("_pointCollection",YT,"_unusedPointIndices","pointIndex");Kh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,Qq(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function Oq(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function Z$e(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,Oq(e._labelCollection),Oq(e._billboardCollection),Oq(e._pointCollection))}Kh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,Z$e(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};Kh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var lf=Kh;function kq(e){this._name=e,this._clock=void 0,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Ea(this),this._entityCluster=new lf}Object.defineProperties(kq.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){us.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});kq.prototype.update=function(e){return!0};var DO=kq;var lAe={};lAe.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,A=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let _=f/i*D.TWO_PI,y=Math.cos(_),C=Math.sin(_),E=y*n,I=C*n,b=y*t,S=C*t;u[A+g]=E,u[A+g+1]=I,u[A+g+2]=s,u[A+m]=b,u[A+m+1]=S,u[A+m+2]=r,A+=3,o&&(u[h++]=E,u[h++]=I,u[h++]=s,u[h++]=b,u[h++]=S,u[h++]=r)}return u};var z0=lAe;var Uq=new U,$$e=new d,eet=new d,tet=new d,net=new d;function Ig(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??Pe.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Pe.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}Ig.packedLength=Pe.packedLength+5;Ig.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var uAe=new Pe,qT={vertexFormat:uAe,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};Ig.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,uAe);t+=Pe.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(qT.length=o,qT.topRadius=r,qT.bottomRadius=s,qT.slices=a,qT.offsetAttribute=c===-1?void 0:c,new Ig(qT))};Ig.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=z0.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,A=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,_=o.normal||o.tangent||o.bitangent;if(_){let v=o.tangent||o.bitangent,P=0,M=0,L=0,p=Math.atan2(i-n,t),x=$$e;x.z=Math.sin(p);let T=Math.cos(p),w=tet,R=eet;for(m=0;m<r;m++){let O=m/r*D.TWO_PI,k=T*Math.cos(O),Q=T*Math.sin(O);_&&(x.x=k,x.y=Q,v&&(w=d.normalize(d.cross(d.UNIT_Z,x,w),w)),o.normal&&(h[P++]=x.x,h[P++]=x.y,h[P++]=x.z,h[P++]=x.x,h[P++]=x.y,h[P++]=x.z),o.tangent&&(A[M++]=w.x,A[M++]=w.y,A[M++]=w.z,A[M++]=w.x,A[M++]=w.y,A[M++]=w.z),o.bitangent&&(R=d.normalize(d.cross(x,w,R),R),g[L++]=R.x,g[L++]=R.y,g[L++]=R.z,g[L++]=R.x,g[L++]=R.y,g[L++]=R.z))}for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=-1),o.tangent&&(A[M++]=1,A[M++]=0,A[M++]=0),o.bitangent&&(g[L++]=0,g[L++]=-1,g[L++]=0);for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=1),o.tangent&&(A[M++]=1,A[M++]=0,A[M++]=0),o.bitangent&&(g[L++]=0,g[L++]=1,g[L++]=0)}let y=12*r-12,C=Oe.createTypedArray(c,y),E=0,I=0;for(m=0;m<r-1;m++)C[E++]=I,C[E++]=I+2,C[E++]=I+3,C[E++]=I,C[E++]=I+3,C[E++]=I+1,I+=2;for(C[E++]=s-2,C[E++]=0,C[E++]=1,C[E++]=s-2,C[E++]=1,C[E++]=s-1,m=1;m<r-1;m++)C[E++]=s+m+1,C[E++]=s+m,C[E++]=s;for(m=1;m<r-1;m++)C[E++]=a,C[E++]=a+m,C[E++]=a+m+1;let b=0;if(o.st){let v=Math.max(n,i);for(m=0;m<c;m++){let P=d.fromArray(u,m*3,net);f[b++]=(P.x+v)/(2*v),f[b++]=(P.y+v)/(2*v)}}let S=new yn;o.position&&(S.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(S.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(S.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),o.bitangent&&(S.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(S.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),Uq.x=t*.5,Uq.y=Math.max(i,n);let B=new le(d.ZERO,U.magnitude(Uq));if(l(e._offsetAttribute)){t=u.length;let v=e._offsetAttribute===hn.NONE?0:1,P=new Uint8Array(t/3).fill(v);S.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:P})}return new ht({attributes:S,indices:C,primitiveType:Me.TRIANGLES,boundingSphere:B,offsetAttribute:e._offsetAttribute})};var Gq;Ig.getUnitCylinder=function(){return l(Gq)||(Gq=Ig.createGeometry(new Ig({topRadius:1,bottomRadius:1,length:1,vertexFormat:Pe.POSITION_ONLY}))),Gq};var vO=Ig;var zq=new U;function KT(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}KT.packedLength=6;KT.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var V0={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};KT.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(V0.length=i,V0.topRadius=o,V0.bottomRadius=r,V0.slices=s,V0.numberOfVerticalLines=a,V0.offsetAttribute=c===-1?void 0:c,new KT(V0))};KT.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=z0.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let _=Math.min(r,o);u=Math.round(o/_),c+=_}let f=Oe.createTypedArray(s,c*2),h=0,A;for(A=0;A<o-1;A++)f[h++]=A,f[h++]=A+1,f[h++]=A+o,f[h++]=A+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(A=0;A<o;A+=u)f[h++]=A,f[h++]=A+o;let g=new yn;g.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:a}),zq.x=t*.5,zq.y=Math.max(i,n);let m=new le(d.ZERO,U.magnitude(zq));if(l(e._offsetAttribute)){t=a.length;let _=e._offsetAttribute===hn.NONE?0:1,y=new Uint8Array(t/3).fill(_);g.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}return new ht({attributes:g,indices:f,primitiveType:Me.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var PO=KT;var fAe=d.ZERO,dAe=new d,iet=new d,hAe=new G;function oet(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function uf(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new oet(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(uf.prototype=Object.create(yi.prototype),uf.prototype.constructor=uf);Object.defineProperties(uf.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});uf.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,hAe)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,fAe,dAe))),new Pt({id:t,geometry:new vO(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};uf.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hAe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,fAe,dAe))),new Pt({id:t,geometry:new PO(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};uf.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};uf.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||yi.prototype._isHidden.call(this,e,t)};uf.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!j.isConstant(t.slices)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)};uf.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(je.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(je.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(je.MINIMUM_VALUE),i.slices=j.getValueOrUndefined(t.slices,je.MINIMUM_VALUE),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};uf.prototype._onEntityPropertyChanged=_p;uf.DynamicGeometryUpdater=XT;function XT(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(XT.prototype=Object.create(_i.prototype),XT.prototype.constructor=XT);XT.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,iet);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||_i.prototype._isHidden.call(this,e,t,n)};XT.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.length=j.getValueOrUndefined(t.length,n),o.topRadius=j.getValueOrUndefined(t.topRadius,n),o.bottomRadius=j.getValueOrUndefined(t.bottomRadius,n),o.slices=j.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var RO=uf;var ret={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},fs=Object.freeze(ret);var set={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},wo=Object.freeze(set);var aet={NONE:0,HOLD:1,EXTRAPOLATE:2},ff=Object.freeze(aet);var mAe=xr(Ou(),1);function cet(e){let t=new mAe.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var xg=cet;var uet=D.factorial;function Vq(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=Vq(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var QV={type:"Hermite"};QV.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};QV.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,A=new Array(i);for(r=0;r<i;r++){o[r]=0;let y=new Array(h);for(A[r]=y,s=0;s<h;s++)y[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let _=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,A[c][0].push(n[f]);for(r=1;r<g;r++){let y=!1;for(s=0;s<g-r;s++){let C=t[m[s]],E=t[m[s+r]],I;E-C<=0?(f=m[s]*i+i*r+c,I=n[f],A[c][r].push(I/uet(r))):(I=A[c][r-1][s+1]-A[c][r-1][s],A[c][r].push(I/(E-C))),y=y||I!==0}y||(_=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=_;r++){let y=Vq(e,m,t,a,r,[]);for(c=0;c<i;c++){let C=A[c][r][0];o[c+a*i]+=C*y}}return o};var fet=[];QV.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let C=0;C<a;C++)s[C]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let C=0;C<o+1;C++)u[f*(o+1)+C]=f;let h=u.length,A=fet,g=det(A,u,t,n,i,o),m=[],_=h*(h+1)/2,y=Math.min(g,r);for(let C=0;C<=y;C++)for(f=C;f<=g;f++){m.length=0;let E=Vq(e,u,t,C,f,m),I=Math.floor(f*(1-f)/2)+h*f;for(let b=0;b<i;b++){let S=Math.floor(b*_),B=A[S+I];s[b+C*i]+=B*E}}return s};function det(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let A=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[A+s]=i[a];for(let g=1;g<u;g++){let m=0,_=Math.floor(g*(1-g)/2)+u*g,y=!1;for(s=0;s<u-g;s++){let C=n[t[s]],E=n[t[s+g]],I,b;if(E-C<=0)a=t[s]*o*(r+1)+o*g+h,I=i[a],b=I/D.factorial(g),e[A+_+m]=b,m++;else{let S=Math.floor((g-1)*(2-g)/2)+u*(g-1);I=e[A+S+s+1]-e[A+S+s],b=I/(E-C),e[A+_+m]=b,m++}y=y||I!==0}y&&(c=Math.max(c,g))}}return c}var MO=QV;var Hq={type:"Lagrange"};Hq.getRequiredDataPoints=function(e){return Math.max(e+1,2)};Hq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var NO=Hq;var Wq={type:"Linear"};Wq.getRequiredDataPoints=function(e){return 2};Wq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var H0=Wq;function Yc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Yc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Yc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Yc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Yc(e.clock,e.cone,e.magnitude)};Yc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Yc(e.clock,e.cone,1)};Yc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Yc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Yc.prototype.equals=function(e){return Yc.equals(this,e)};Yc.prototype.clone=function(e){return Yc.clone(this,e)};Yc.prototype.equalsEpsilon=function(e,t){return Yc.equalsEpsilon(this,e,t)};Yc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var LO=Yc;var UO=xr(Ou(),1);var jq;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?jq=function(){return performance.now()}:jq=function(){return Date.now()};var Li=jq;function Yq(e){e=e??V.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=K.clone(t):l(n)?t=K.clone(n):l(i)?t=K.addDays(i,-1,new K):t=K.now(),l(n)?n=K.clone(n):n=K.clone(t),l(i)?i=K.clone(i):i=K.addDays(n,1,new K),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??fs.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new _e,this.onStop=new _e,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Li(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??wo.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(Yq.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){K.equals(this._currentTime,e)||(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===wo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=K.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});Yq.prototype.tick=function(){let e=Li(),t=K.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===wo.SYSTEM_CLOCK)t=K.now(t);else{let i=this._multiplier;if(n===wo.TICK_DEPENDENT)t=K.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=K.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===fs.CLAMPED)K.lessThan(t,r)?t=K.clone(r,t):K.greaterThan(t,s)&&(t=K.clone(s,t),this.onStop.raiseEvent(this));else if(o===fs.LOOP_STOP)for(K.lessThan(t,r)&&(t=K.clone(r,t));K.greaterThan(t,s);)t=K.addSeconds(r,K.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Xh=Yq;function W0(){this._definitionChanged=new _e,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(W0.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:ml("startTime"),stopTime:ml("stopTime"),currentTime:ml("currentTime"),clockRange:ml("clockRange"),clockStep:ml("clockStep"),multiplier:ml("multiplier")});W0.prototype.clone=function(e){return l(e)||(e=new W0),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};W0.prototype.equals=function(e){return this===e||l(e)&&K.equals(this.startTime,e.startTime)&&K.equals(this.stopTime,e.stopTime)&&K.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};W0.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};W0.prototype.getValue=function(e){return l(e)||(e=new Xh),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Jh=W0;var het=G.WHITE,met=.1,Aet=new U(8,8),pet=new U(0,0),get=new U(1,1);function JT(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(JT.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._cellAlpha)&&j.isConstant(this._lineCount)&&j.isConstant(this._lineThickness)&&j.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),cellAlpha:de("cellAlpha"),lineCount:de("lineCount"),lineThickness:de("lineThickness"),lineOffset:de("lineOffset")});JT.prototype.getType=function(e){return"Grid"};var _et=new K;JT.prototype.getValue=function(e,t){return l(e)||(e=K.now(_et)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,het,t.color),t.cellAlpha=j.getValueOrDefault(this._cellAlpha,e,met),t.lineCount=j.getValueOrClonedDefault(this._lineCount,e,Aet,t.lineCount),t.lineThickness=j.getValueOrClonedDefault(this._lineThickness,e,get,t.lineThickness),t.lineOffset=j.getValueOrClonedDefault(this._lineOffset,e,pet,t.lineOffset),t};JT.prototype.equals=function(e){return this===e||e instanceof JT&&j.equals(this._color,e._color)&&j.equals(this._cellAlpha,e._cellAlpha)&&j.equals(this._lineCount,e._lineCount)&&j.equals(this._lineThickness,e._lineThickness)&&j.equals(this._lineOffset,e._lineOffset)};var ZT=JT;function $T(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties($T.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});$T.prototype.getType=function(e){return"PolylineArrow"};var yet=new K;$T.prototype.getValue=function(e,t){return l(e)||(e=K.now(yet)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};$T.prototype.equals=function(e){return this===e||e instanceof $T&&j.equals(this._color,e._color)};var eS=$T;var Cet=G.WHITE,Eet=G.TRANSPARENT,Iet=16,xet=255;function tS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(tS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._gapColor)&&j.isConstant(this._dashLength)&&j.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),gapColor:de("gapColor"),dashLength:de("dashLength"),dashPattern:de("dashPattern")});tS.prototype.getType=function(e){return"PolylineDash"};var bet=new K;tS.prototype.getValue=function(e,t){return l(e)||(e=K.now(bet)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,Cet,t.color),t.gapColor=j.getValueOrClonedDefault(this._gapColor,e,Eet,t.gapColor),t.dashLength=j.getValueOrDefault(this._dashLength,e,Iet,t.dashLength),t.dashPattern=j.getValueOrDefault(this._dashPattern,e,xet,t.dashPattern),t};tS.prototype.equals=function(e){return this===e||e instanceof tS&&j.equals(this._color,e._color)&&j.equals(this._gapColor,e._gapColor)&&j.equals(this._dashLength,e._dashLength)&&j.equals(this._dashPattern,e._dashPattern)};var nS=tS;var Tet=G.WHITE,wet=.25,Bet=1;function iS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(iS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),glowPower:de("glowPower"),taperPower:de("taperPower")});iS.prototype.getType=function(e){return"PolylineGlow"};var Det=new K;iS.prototype.getValue=function(e,t){return l(e)||(e=K.now(Det)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,Tet,t.color),t.glowPower=j.getValueOrDefault(this._glowPower,e,wet,t.glowPower),t.taperPower=j.getValueOrDefault(this._taperPower,e,Bet,t.taperPower),t};iS.prototype.equals=function(e){return this===e||e instanceof iS&&j.equals(this._color,e._color)&&j.equals(this._glowPower,e._glowPower)&&j.equals(this._taperPower,e._taperPower)};var oS=iS;var vet=G.WHITE,Pet=G.BLACK,Ret=1;function rS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(rS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._outlineColor)&&j.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth")});rS.prototype.getType=function(e){return"PolylineOutline"};var Met=new K;rS.prototype.getValue=function(e,t){return l(e)||(e=K.now(Met)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,vet,t.color),t.outlineColor=j.getValueOrClonedDefault(this._outlineColor,e,Pet,t.outlineColor),t.outlineWidth=j.getValueOrDefault(this._outlineWidth,e,Ret),t};rS.prototype.equals=function(e){return this===e||e instanceof rS&&j.equals(this._color,e._color)&&j.equals(this._outlineColor,e._outlineColor)&&j.equals(this._outlineWidth,e._outlineWidth)};var My=rS;function bg(e,t){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Dr,this._referenceFrame=t??$i.FIXED,this.setValue(e)}Object.defineProperties(bg.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var Net=new K;bg.prototype.getValue=function(e,t){return l(e)||(e=K.now(Net)),this.getValueInReferenceFrame(e,$i.FIXED,t)};bg.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};bg.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,bg.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};bg.prototype.equals=function(e){return this===e||e instanceof bg&&this._referenceFrame===e._referenceFrame&&j.arrayEquals(this._value,e._value)};bg.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Tg=bg;function Ny(e){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Dr,this.setValue(e)}Object.defineProperties(Ny.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var Let=new K;Ny.prototype.getValue=function(e,t){l(e)||(e=K.now(Let));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};Ny.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Ny.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Ny.prototype.equals=function(e){return this===e||e instanceof Ny&&j.arrayEquals(this._value,e._value)};Ny.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var sS=Ny;function j0(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(df.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function df(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new _e,e.collectionChanged.addEventListener(df.prototype._onCollectionChanged,this)}Object.defineProperties(df.prototype,{isConstant:{get:function(){return j.isConstant(j0(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=j0(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return j0(this)}}});df.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new df(e,n,i)};var Oet=new K;df.prototype.getValue=function(e,t){let n=j0(this);return l(e)||(e=K.now(Oet)),l(n)?n.getValue(e,t):void 0};df.prototype.getValueInReferenceFrame=function(e,t,n){let i=j0(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};df.prototype.getType=function(e){let t=j0(this);return l(t)?t.getType(e):void 0};df.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};df.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};df.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(df.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=j0(this),l(i)&&this._definitionChanged.raiseEvent(this))};var Sg=df;var Fet={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-D.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+D.TWO_PI:o}},wd=Fet;var AAe={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function pAe(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function gAe(e,t){return e instanceof K?e:typeof e=="string"?K.fromIso8601(e):K.addSeconds(t,e,new K)}var qq=[],Kq=[];function kV(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=gAe(i[r],e),c=Wo(t,f,K.compare);let A=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=gAe(i[r],e),!(l(a)&&K.compare(a,f)>=0||l(h)&&K.compare(f,h)>=0));){for(qq[A++]=f,r=r+1,s=0;s<o;s++)Kq[g++]=i[r],r=r+1;a=f}A>0&&(Kq.length=g,pAe(n,u,Kq),qq.length=A,pAe(t,c,qq))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function Bd(e,t){let n=e;n===Number&&(n=AAe);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=AAe);let f=u.packedLength;i+=f,o+=u.packedInterpolationLength??f,s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=H0,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new _e,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=ff.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=ff.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(Bd.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var Qet=new K;Bd.prototype.getValue=function(e,t){l(e)||(e=K.now(Qet));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=Wo(n,e,K.compare);if(a<0){if(a=~a,a===0){let b=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===ff.NONE||o!==0&&K.secondsDifference(b,e)>o)return;if(this._backwardExtrapolationType===ff.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let b=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===ff.NONE||o!==0&&K.secondsDifference(e,b)>o)return;if(this._forwardExtrapolationType===ff.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,A=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let b=Math.min(f.getRequiredDataPoints(this._interpolationDegree,A),i);b!==this._numberOfPoints&&(this._numberOfPoints=b,c.length=b,u.length=b*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,_=i-1;if(_-m+1>=g+1){let b=a-(g/2|0)-1;b<m&&(b=m);let S=b+g;S>_&&(S=_,b=S-g,b<m&&(b=m)),m=b,_=S}let C=_-m+1;for(let b=0;b<C;++b)c[b]=K.secondsDifference(n[m+b],n[_]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,_,u);else{let b=0,S=this._packedLength,B=m*S,v=(_+1)*S;for(;B<v;)u[b]=s[B],B++,b++}let E=K.secondsDifference(e,n[_]),I;if(A===0||!l(f.interpolate))I=f.interpolateOrderZero(E,c,u,h,this._interpolationResult);else{let b=Math.floor(h/(A+1));I=f.interpolate(E,c,u,b,A,A,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(I,s,m,_,t):r.unpack(I,0,t)}return r.unpack(s,a*this._packedLength,t)};Bd.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};Bd.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}kV(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}kV(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};Bd.prototype.addSamplesPackedArray=function(e,t){kV(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.removeSample=function(e){let t=Wo(this._times,e,K.compare);return t<0?!1:(_Ae(this,t,1),!0)};function _Ae(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}Bd.prototype.removeSamples=function(e){let t=this._times,n=Wo(t,e.start,K.compare);n<0?n=~n:e.isStartIncluded||++n;let i=Wo(t,e.stop,K.compare);i<0?i=~i:e.isStopIncluded&&++i,_Ae(this,n,i-n)};Bd.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!K.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};Bd._mergeNewSamples=kV;var hf=Bd;function Dd(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new hf(d,n),this._definitionChanged=new _e,this._referenceFrame=e??$i.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(Dd.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var ket=new K;Dd.prototype.getValue=function(e,t){return l(e)||(e=K.now(ket)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Dd.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return mh.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};Dd.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};Dd.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};Dd.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};Dd.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};Dd.prototype.removeSample=function(e){return this._property.removeSample(e)};Dd.prototype.removeSamples=function(e){this._property.removeSamples(e)};Dd.prototype.equals=function(e){return this===e||e instanceof Dd&&j.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var qa=Dd;var Uet={HORIZONTAL:0,VERTICAL:1},Zh=Object.freeze(Uet);var Get=Zh.HORIZONTAL,zet=G.WHITE,Vet=G.BLACK,Het=0,Wet=1;function aS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(aS.prototype,{isConstant:{get:function(){return j.isConstant(this._orientation)&&j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._offset)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:de("orientation"),evenColor:de("evenColor"),oddColor:de("oddColor"),offset:de("offset"),repeat:de("repeat")});aS.prototype.getType=function(e){return"Stripe"};var jet=new K;aS.prototype.getValue=function(e,t){return l(e)||(e=K.now(jet)),l(t)||(t={}),t.horizontal=j.getValueOrDefault(this._orientation,e,Get)===Zh.HORIZONTAL,t.evenColor=j.getValueOrClonedDefault(this._evenColor,e,zet,t.evenColor),t.oddColor=j.getValueOrClonedDefault(this._oddColor,e,Vet,t.oddColor),t.offset=j.getValueOrDefault(this._offset,e,Het),t.repeat=j.getValueOrDefault(this._repeat,e,Wet),t};aS.prototype.equals=function(e){return this===e||e instanceof aS&&j.equals(this._orientation,e._orientation)&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._offset,e._offset)&&j.equals(this._repeat,e._repeat)};var cS=aS;function Ly(e){this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(Ly.prototype._intervalsChanged,this),this._referenceFrame=e??$i.FIXED}Object.defineProperties(Ly.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var Yet=new K;Ly.prototype.getValue=function(e,t){return l(e)||(e=K.now(Yet)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Ly.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return mh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};Ly.prototype.equals=function(e){return this===e||e instanceof Ly&&this._intervals.equals(e._intervals,j.equals)&&this._referenceFrame===e._referenceFrame};Ly.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var wg=Ly;function Y0(){this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(Y0.prototype._intervalsChanged,this)}Object.defineProperties(Y0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var qet=new K;Y0.prototype.getValue=function(e,t){l(e)||(e=K.now(qet));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};Y0.prototype.equals=function(e){return this===e||e instanceof Y0&&this._intervals.equals(e._intervals,j.equals)};Y0.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var Bg=Y0;function lS(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new _e,this._normalize=t??!0,this.position=e}Object.defineProperties(lS.prototype,{isConstant:{get:function(){return j.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var Ket=new d,yAe=new d,CAe=new K,Xet=new K,Xq=1/60;lS.prototype.getValue=function(e,t){return this._getValue(e,t)};lS.prototype._getValue=function(e,t,n){l(e)||(e=K.now(Xet)),l(t)||(t=new d);let i=this._position;if(j.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,Ket),r=i.getValue(K.addSeconds(e,Xq,CAe),yAe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(K.addSeconds(e,-Xq,CAe),yAe),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,Xq,t)};lS.prototype.equals=function(e){return this===e||e instanceof lS&&j.equals(this._position,e._position)};var Dg=lS;function OO(e,t){this._velocityVectorProperty=new Dg(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new _e,this.ellipsoid=t??te.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(OO.prototype,{isConstant:{get:function(){return j.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var EAe=new d,Jet=new d,IAe=new J,Zet=new K;OO.prototype.getValue=function(e,t){l(e)||(e=K.now(Zet));let n=this._velocityVectorProperty._getValue(e,Jet,EAe);if(l(n))return kt.rotationMatrixFromPositionVelocity(EAe,n,this._ellipsoid,IAe),Le.fromRotationMatrix(IAe,t)};OO.prototype.equals=function(e){return this===e||e instanceof OO&&j.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var FO=OO;var vg={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};vg.validate=function(e){return e===vg.COMPLETE||e===vg.BELOW_ELLIPSOID_HORIZON||e===vg.ABOVE_ELLIPSOID_HORIZON};vg.toString=function(e){switch(e){case vg.COMPLETE:return"COMPLETE";case vg.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case vg.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new me("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var uS=vg;function Oy(){}Oy.packedLength=d.packedLength;Oy.unpack=d.unpack;Oy.pack=d.pack;var Jq;function QO(e,t){return t[0]==="#"&&(t=Jq+t),Sg.fromString(e,t)}function xAe(e,t,n){if(l(n.reference))return QO(t,n.reference);if(l(n.velocityReference)){let i=QO(t,n.velocityReference);switch(e){case d:case Oy:return new Dg(i,e===Oy);case Le:return new FO(i)}}throw new ce(`${JSON.stringify(n)} is not valid CZML.`)}function $et(e,t){return new _h(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var io=new d,Ol=new LO,qc=new Ae,q0=new Pn,UV=new Le;function ett(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===G.packedLength)return[G.byteToFloat(n[0]),G.byteToFloat(n[1]),G.byteToFloat(n[2]),G.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=G.byteToFloat(n[o+1]),t[o+2]=G.byteToFloat(n[o+2]),t[o+3]=G.byteToFloat(n[o+3]),t[o+4]=G.byteToFloat(n[o+4]);return t}function bAe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):we.createIfNeeded(n)}function ttt(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[D.toRadians(n[0]),D.toRadians(n[1]),D.toRadians(n[2]),D.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=D.toRadians(n[o+1]),t[o+2]=D.toRadians(n[o+2]),t[o+3]=D.toRadians(n[o+3]),t[o+4]=D.toRadians(n[o+4]);return t}function ntt(e){let t=e.length;if(Ol.magnitude=1,t===2)return Ol.clock=e[0],Ol.cone=e[1],d.fromSpherical(Ol,io),[io.x,io.y,io.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],Ol.clock=e[i+1],Ol.cone=e[i+2],d.fromSpherical(Ol,io),n[o+1]=io.x,n[o+2]=io.y,n[o+3]=io.z;return n}function itt(e){let t=e.length;if(t===3)return Ol.clock=e[0],Ol.cone=e[1],Ol.magnitude=e[2],d.fromSpherical(Ol,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Ol.clock=e[i+1],Ol.cone=e[i+2],Ol.magnitude=e[i+3],d.fromSpherical(Ol,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function ott(e){let t=e.length;if(t===3)return qc.longitude=e[0],qc.latitude=e[1],qc.height=e[2],te.default.cartographicToCartesian(qc,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],qc.longitude=e[i+1],qc.latitude=e[i+2],qc.height=e[i+3],te.default.cartographicToCartesian(qc,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function rtt(e){let t=e.length;if(t===3)return qc.longitude=D.toRadians(e[0]),qc.latitude=D.toRadians(e[1]),qc.height=e[2],te.default.cartographicToCartesian(qc,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],qc.longitude=D.toRadians(e[i+1]),qc.latitude=D.toRadians(e[i+2]),qc.height=e[i+3],te.default.cartographicToCartesian(qc,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function Zq(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return ntt(o);let r=e.spherical;if(l(r))return itt(r);let s=e.cartographicRadians;if(l(s))return ott(s);let a=e.cartographicDegrees;if(l(a))return rtt(a);throw new ce(`${JSON.stringify(e)} is not a valid CZML interval.`)}function TAe(e,t){d.unpack(e,t,io),d.normalize(io,io),d.pack(io,e,t)}function stt(e){let t=Zq(e);if(t.length===3)return TAe(t,0),t;for(let n=1;n<t.length;n+=4)TAe(t,n);return t}function SAe(e,t){Le.unpack(e,t,UV),Le.normalize(UV,UV),Le.pack(UV,e,t)}function att(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return SAe(t,0),t;for(let n=1;n<t.length;n+=5)SAe(t,n)}return t}function wAe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Ye:e.hasOwnProperty("cartesian2")?U:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?Oy:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?G:e.hasOwnProperty("arcType")?cn:e.hasOwnProperty("classificationType")?Jn:e.hasOwnProperty("colorBlendMode")?Qc:e.hasOwnProperty("cornerType")?ji:e.hasOwnProperty("heightReference")?Ze:e.hasOwnProperty("horizontalOrigin")?Ri:e.hasOwnProperty("date")?K:e.hasOwnProperty("labelStyle")?nr:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?jt:e.hasOwnProperty("distanceDisplayCondition")?Ut:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?Bn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Zh:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?UO.default:e.hasOwnProperty("verticalOrigin")?zn:Object}function ctt(e,t,n){switch(e){case cn:return cn[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Ye:return t.boundingRectangle;case U:return t.cartesian2;case d:return Zq(t);case Oy:return stt(t);case G:return ett(t);case Jn:return Jn[t.classificationType??t];case Qc:return Qc[t.colorBlendMode??t];case ji:return ji[t.cornerType??t];case Ze:return Ze[t.heightReference??t];case Ri:return Ri[t.horizontalOrigin??t];case Image:return bAe(t,n);case K:return K.fromIso8601(t.date??t);case nr:return nr[t.labelStyle??t];case Number:return t.number??t;case jt:return t.nearFarScalar;case Ut:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Le:return att(t);case wd:return t.number??t;case uS:return uS[t.portionToDisplay??t];case Bn:return Bn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Zh:return Zh[t.stripeOrientation??t];case ae:return ttt(t);case UO.default:return bAe(t,n);case zn:return zn[t.verticalOrigin??t];default:throw new ce(`Unknown CzmlDataSource interval type: ${e}`)}}var ltt={HERMITE:MO,LAGRANGE:NO,LINEAR:H0};function GV(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:ltt[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=ff[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=ff[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var BAe={iso8601:void 0};function vr(e){if(l(e))return BAe.iso8601=e,Pn.fromIso8601(BAe)}function $q(e){let t=je.MAXIMUM_INTERVAL.clone();return t.data=e,t}function DAe(e){let t=new Wc;return t.intervals.addInterval($q(e)),t}function vAe(e){let t=new ja(e.referenceFrame);return t.intervals.addInterval($q(e)),t}function zV(e,t,n,i,o,r,s){let a=vr(i.interval);l(o)&&(l(a)?a=Pn.intersect(a,o,q0):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),A=l(a)&&!a.equals(je.MAXIMUM_INTERVAL);if(i.delete===!0){if(!A){t[n]=void 0;return}return GAe(t[n],a)}let g=!1;if(h){if(u=ctt(e,i,r),!l(u))return;c=e.packedLength??1,f=u.length??1,g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==wd;if(!g&&!A){h?t[n]=new ci(m?e.unpack(u,0):u):t[n]=xAe(e,s,i);return}let _=t[n],y,C=i.epoch;if(l(C)&&(y=K.fromIso8601(C)),g&&!A){_ instanceof hf||(t[n]=_=new hf(e)),_.addSamplesPackedArray(u,y),GV(i,_);return}let E;if(!g&&A){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=xAe(e,s,i),l(_)||(t[n]=_=h?new Bg:new Wc),h&&_ instanceof Bg?_.intervals.addInterval(a):_ instanceof Wc?(h&&(a.data=new ci(a.data)),_.intervals.addInterval(a)):(t[n]=_=DAe(_),h&&(a.data=new ci(a.data)),_.intervals.addInterval(a));return}l(_)||(t[n]=_=new Wc),_ instanceof Wc||(t[n]=_=DAe(_));let I=_.intervals;E=I.findInterval(a),(!l(E)||!(E.data instanceof hf))&&(E=a.clone(),E.data=new hf(e),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),GV(i,E.data)}function GAe(e,t){if(e instanceof hf){e.removeSamples(t);return}else if(e instanceof Bg){e.intervals.removeInterval(t);return}else if(e instanceof Wc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Pn.intersect(n.get(i),t,q0);o.isEmpty||GAe(o.data,t)}n.removeInterval(t);return}}function Ce(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)zV(e,t,n,i[a],o,r,s);else zV(e,t,n,i,o,r,s)}function PAe(e,t,n,i,o,r){let s=vr(n.interval);l(i)&&(l(s)?s=Pn.intersect(s,i,q0):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),A=l(s)&&!s.equals(je.MAXIMUM_INTERVAL);if(n.delete===!0){if(!A){e[t]=void 0;return}return zAe(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=$i[n.referenceFrame]),g=g??$i.FIXED,u=Zq(n),f=u.length??1,m=f>c),!m&&!A){h?e[t]=new hl(d.unpack(u),g):e[t]=QO(r,n.reference);return}let _=e[t],y,C=n.epoch;if(l(C)&&(y=K.fromIso8601(C)),m&&!A){(!(_ instanceof qa)||l(g)&&_.referenceFrame!==g)&&(e[t]=_=new qa(g,a)),_.addSamplesPackedArray(u,y),GV(n,_);return}let E;if(!m&&A){s=s.clone(),h?s.data=d.unpack(u):s.data=QO(r,n.reference),l(_)||(h?_=new wg(g):_=new ja(g),e[t]=_),h&&_ instanceof wg&&l(g)&&_.referenceFrame===g?_.intervals.addInterval(s):_ instanceof ja?(h&&(s.data=new hl(s.data,g)),_.intervals.addInterval(s)):(e[t]=_=vAe(_),h&&(s.data=new hl(s.data,g)),_.intervals.addInterval(s));return}l(_)?_ instanceof ja||(e[t]=_=vAe(_)):e[t]=_=new ja(g);let I=_.intervals;E=I.findInterval(s),(!l(E)||!(E.data instanceof qa)||l(g)&&E.data.referenceFrame!==g)&&(E=s.clone(),E.data=new qa(g,a),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),GV(n,E.data)}function zAe(e,t){if(e instanceof qa){e.removeSamples(t);return}else if(e instanceof wg){e.intervals.removeInterval(t);return}else if(e instanceof ja){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Pn.intersect(n.get(i),t,q0);o.isEmpty||zAe(o.data,t)}n.removeInterval(t);return}}function VAe(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)PAe(e,t,n[s],i,o,r);else PAe(e,t,n,i,o,r)}function RAe(e,t,n,i){l(n.references)?VV(e,t,n.references,n.interval,i,sS,Wc):(l(n.cartesian2)?n.array=U.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=U.unpackArray(n.cartesian)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function MAe(e,t,n,i,o,r){let s=vr(n.interval);l(i)&&(l(s)?s=Pn.intersect(s,i,q0):s=i);let a=e[t],c,u;if(l(s)){a instanceof zT||(a=new zT,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof Xt||(c=new Xt),f=n.solidColor,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof ZT||(c=new ZT),f=n.grid,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),Ce(U,c,"lineCount",f.lineCount,void 0,o,r),Ce(U,c,"lineThickness",f.lineThickness,void 0,o,r),Ce(U,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof P_||(c=new P_),f=n.image,Ce(Image,c,"image",f.image,void 0,o,r),Ce(U,c,"repeat",f.repeat,void 0,o,r),Ce(G,c,"color",f.color,void 0,o,r),Ce(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof cS||(c=new cS),f=n.stripe,Ce(Zh,c,"orientation",f.orientation,void 0,o,r),Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(Number,c,"offset",f.offset,void 0,o,r),Ce(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof My||(c=new My),f=n.polylineOutline,Ce(G,c,"color",f.color,void 0,o,r),Ce(G,c,"outlineColor",f.outlineColor,void 0,o,r),Ce(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof oS||(c=new oS),f=n.polylineGlow,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"glowPower",f.glowPower,void 0,o,r),Ce(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof eS||(c=new eS),f=n.polylineArrow,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof nS||(c=new nS),f=n.polylineDash,Ce(G,c,"color",f.color,void 0,void 0,r),Ce(G,c,"gapColor",f.gapColor,void 0,void 0,r),Ce(Number,c,"dashLength",f.dashLength,void 0,o,r),Ce(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof UT||(c=new UT),f=n.checkerboard,Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(U,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function mf(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)MAe(e,t,n[s],i,o,r);else MAe(e,t,n,i,o,r)}function utt(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function ftt(e,t,n,i){let o=t.description;l(o)&&Ce(String,e,"description",o,void 0,i,n)}function dtt(e,t,n,i){let o=t.position;l(o)&&VAe(e,"position",o,void 0,i,n)}function htt(e,t,n,i){let o=t.viewFrom;l(o)&&Ce(d,e,"viewFrom",o,void 0,i,n)}function mtt(e,t,n,i){let o=t.orientation;l(o)&&Ce(Le,e,"orientation",o,void 0,i,n)}function Att(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new Al);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)zV(wAe(s[a]),e.properties,r,s[a],void 0,i,n);else zV(wAe(s),e.properties,r,s,void 0,i,n)}}}function VV(e,t,n,i,o,r,s){let a=n.map(function(c){return QO(o,c)});if(l(i)){i=vr(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval($q(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function NAe(e,t,n,i){let o=n.references;l(o)?VV(e,t,o,n.interval,i,sS,Wc):Ce(Array,e,t,n,void 0,void 0,i)}function LAe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)NAe(e,t,n[o],i);else NAe(e,t,n,i)}function OAe(e,t,n,i){let o=n.references;l(o)?VV(e,t,o,n.interval,i,Tg,ja):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,te.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,te.default)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function GO(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)OAe(e,t,n[o],i);else OAe(e,t,n,i)}function ptt(e){return d.unpackArray(e)}function gtt(e){return d.fromRadiansArrayHeights(e,te.default)}function _tt(e){return d.fromDegreesArrayHeights(e,te.default)}function FAe(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return VV(a,"positions",s,n.interval,i,Tg,ja),a.positions});e[t]=new Tg(r)}else l(n.cartesian)?n.array=n.cartesian.map(ptt):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(gtt):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(_tt)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i)}function ytt(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)FAe(e,t,n[o],i);else FAe(e,t,n,i)}function Ctt(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)RAe(e,t,n[o],i);else RAe(e,t,n,i)}function Ett(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new ls),r.addInterval(vr(o[s]));else r=new ls,r.addInterval(vr(o));e.availability=r}function Itt(e,t,n,i,o){l(t)&&Ce(Oy,e,"alignedAxis",t,n,i,o)}function xtt(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=vr(o.interval),s=e.billboard;l(s)||(e.billboard=s=new Tc),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Image,s,"image",o.image,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(U,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(zn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Itt(s,o.alignedAxis,r,i,n),Ce(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(jt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Ye,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function btt(e,t,n,i){let o=t.box;if(!l(o))return;let r=vr(o.interval),s=e.box;l(s)||(e.box=s=new pE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"dimensions",o.dimensions,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Ttt(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=vr(o.interval),s=e.corridor;l(s)||(e.corridor=s=new _E),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(ji,s,"cornerType",o.cornerType,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Stt(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=vr(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new yE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"length",o.length,r,i,n),Ce(Number,s,"topRadius",o.topRadius,r,i,n),Ce(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Number,s,"slices",o.slices,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function wtt(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new ce("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new ce("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function Btt(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=vr(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new CE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ce(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Dtt(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=vr(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new EE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"radii",o.radii,r,i,n),Ce(d,s,"innerRadii",o.innerRadii,r,i,n),Ce(Number,s,"minimumClock",o.minimumClock,r,i,n),Ce(Number,s,"maximumClock",o.maximumClock,r,i,n),Ce(Number,s,"minimumCone",o.minimumCone,r,i,n),Ce(Number,s,"maximumCone",o.maximumCone,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ce(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ce(Number,s,"subdivisions",o.subdivisions,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function vtt(e,t,n,i){let o=t.label;if(!l(o))return;let r=vr(o.interval),s=e.label;l(s)||(e.label=s=new Ah),Ce(Boolean,s,"show",o.show,r,i,n),Ce(String,s,"text",o.text,r,i,n),Ce(String,s,"font",o.font,r,i,n),Ce(nr,s,"style",o.style,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Boolean,s,"showBackground",o.showBackground,r,i,n),Ce(G,s,"backgroundColor",o.backgroundColor,r,i,n),Ce(U,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ce(U,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(zn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"fillColor",o.fillColor,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(jt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function Ptt(e,t,n,i){let o=t.model;if(!l(o))return;let r=vr(o.interval),s=e.model;l(s)||(e.model=s=new Ap),Ce(Boolean,s,"show",o.show,r,i,n),Ce(UO.default,s,"uri",o.gltf,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ce(Number,s,"maximumScale",o.maximumScale,r,i,n),Ce(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ce(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ce(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ce(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(Qc,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ce(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)QAe(s,u[a],r,i,n);else QAe(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)kAe(s,f[a],r,i,n);else kAe(s,f,r,i,n)}function QAe(e,t,n,i,o){let r=vr(t.interval);l(n)&&(l(r)?r=Pn.intersect(r,n,q0):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new Al),s.hasProperty(f)||s.addProperty(f);let A=s[f];l(A)||(s[f]=A=new IE),Ce(d,A,"translation",h.translation,r,i,o),Ce(Le,A,"rotation",h.rotation,r,i,o),Ce(d,A,"scale",h.scale,r,i,o)}}function kAe(e,t,n,i,o){let r=vr(t.interval);l(n)&&(l(r)?r=Pn.intersect(r,n,q0):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new Al),s.hasProperty(f)||s.addProperty(f),Ce(Number,s,f,h,r,i,o))}}function Rtt(e,t,n,i){let o=t.path;if(!l(o))return;let r=vr(o.interval),s=e.path;l(s)||(e.path=s=new pp),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"leadTime",o.leadTime,r,i,n),Ce(Number,s,"trailTime",o.trailTime,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"resolution",o.resolution,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Mtt(e,t,n,i){let o=t.point;if(!l(o))return;let r=vr(o.interval),s=e.point;l(s)||(e.point=s=new bE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"pixelSize",o.pixelSize,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function kO(e){this.polygon=e,this._definitionChanged=new _e}Object.defineProperties(kO.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});kO.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new fc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new fc(n,i)};kO.prototype.equals=function(e){return this===e||e instanceof kO&&j.equals(this.polygon._positions,e.polygon._positions)&&j.equals(this.polygon._holes,e.polygon._holes)};function Ntt(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=vr(o.interval),s=e.polygon;l(s)||(e.polygon=s=new ph),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"_positions",o.positions,n),ytt(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new kO(s)),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ce(Boolean,s,"closeTop",o.closeTop,r,i,n),Ce(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ce(cn,s,"arcType",o.arcType,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Ltt(e){return e?cn.GEODESIC:cn.NONE}function Ott(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=vr(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new Mc),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),mf(s,"material",o.material,r,i,n),mf(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ce(cn,s,"arcType",o.arcType,r,i,n),Ce(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ce(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=$et(a.followSurface,Ltt)}}function Ftt(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=vr(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new TE),GO(s,"positions",o.positions,n),Ctt(s,"shape",o.shape,n),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ji,s,"cornerType",o.cornerType,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Qtt(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=vr(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new gh),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ae,s,"coordinates",o.coordinates,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function ktt(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=vr(o.interval),s=e.tileset;l(s)||(e.tileset=s=new xE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(UO.default,s,"uri",o.uri,r,i,n),Ce(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Utt(e,t,n,i){let o=t.wall;if(!l(o))return;let r=vr(o.interval),s=e.wall;l(s)||(e.wall=s=new gp),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),LAe(s,"minimumHeights",o.minimumHeights,n),LAe(s,"maximumHeights",o.maximumHeights,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function UAe(e,t,n,i,o){let r=e.id;if(l(r)||(r=Xn()),Jq=r,!l(o._version)&&r!=="document")throw new ce("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")wtt(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}Jq=void 0}function Gtt(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(je.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=K.secondsDifference(s,r),c=Math.round(a/120);return t=new Jh,t.startTime=K.clone(r),t.stopTime=K.clone(s),t.clockRange=fs.LOOP_STOP,t.multiplier=c,t.currentTime=K.clone(r),t.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Jh,t.startTime=je.MINIMUM_VALUE.clone(),t.stopTime=je.MAXIMUM_VALUE.clone(),t.currentTime=je.MINIMUM_VALUE.clone(),t.clockRange=fs.LOOP_STOP,t.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=vr(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=K.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=fs[n.range]??fs.LOOP_STOP),l(n.step)&&(t.clockStep=wo[n.step]??wo.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function HAe(e,t,n,i){n=n??V.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Bt(s)),e._credit=s,typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=we.createIfNeeded(r),us.setLoading(e,!0),Promise.resolve(o).then(function(a){return ztt(e,a,r,i)}).catch(function(a){return us.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function ztt(e,t,n,i){us.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new WAe,o.removeAll()),Us._processCzml(t,o,n,void 0,e);let r=Gtt(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=xg(n.getUrlComponent()),r=!0),us.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function WAe(){this.name=void 0,this.clock=void 0}function Us(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._clock=void 0,this._documentPacket=new WAe,this._version=void 0,this._entityCollection=new Ea(this),this._entityCluster=new lf,this._credit=void 0,this._resourceCredits=[]}Us.load=function(e,t){return new Us().load(e,t)};Object.defineProperties(Us.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Us.updaters=[xtt,btt,Ttt,Stt,Btt,Dtt,vtt,Ptt,utt,ftt,Rtt,Mtt,Ntt,Ott,Ftt,Att,Qtt,dtt,ktt,htt,Utt,mtt,Ett];Us.registerUpdater=function(e){Us.updaters.includes(e)||Us.updaters.push(e)};Us.unregisterUpdater=function(e){if(Us.updaters.includes(e)){let t=Us.updaters.indexOf(e);Us.updaters.splice(t,1)}};Us.prototype.process=function(e,t){return HAe(this,e,t,!1)};Us.prototype.load=function(e,t){return HAe(this,e,t,!0)};Us.prototype.update=function(e){return!0};Us.processPacketData=Ce;Us.processPositionPacketData=VAe;Us.processMaterialPacketData=mf;Us._processCzml=function(e,t,n,i,o){if(i=i??Us.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)UAe(e[r],t,i,n,o);else UAe(e,t,i,n,o)};var zO=Us;function Fl(){this._dataSources=[],this._dataSourceAdded=new _e,this._dataSourceRemoved=new _e,this._dataSourceMoved=new _e}Object.defineProperties(Fl.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});Fl.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};Fl.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};Fl.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};Fl.prototype.contains=function(e){return this.indexOf(e)!==-1};Fl.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};Fl.prototype.get=function(e){return this._dataSources[e]};Fl.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function HV(e,t){return e.indexOf(t)}function jAe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=D.clamp(t,0,o),n=D.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}Fl.prototype.raise=function(e){let t=HV(this._dataSources,e);jAe(this,t,t+1)};Fl.prototype.lower=function(e){let t=HV(this._dataSources,e);jAe(this,t,t-1)};Fl.prototype.raiseToTop=function(e){let t=HV(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};Fl.prototype.lowerToBottom=function(e){let t=HV(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};Fl.prototype.isDestroyed=function(){return!1};Fl.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var VO=Fl;function Ka(e){e=e??V.EMPTY_OBJECT,this._primitives=[],this._guid=Xn(),this._primitiveAdded=new _e,this._primitiveRemoved=new _e,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Ka.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Ka.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Ka.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Ka.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Ka.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Ka.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function WV(e,t){return e._primitives.indexOf(t)}Ka.prototype.raise=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Ka.prototype.raiseToTop=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Ka.prototype.lower=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Ka.prototype.lowerToBottom=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Ka.prototype.get=function(e){return this._primitives[e]};Ka.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Ka.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Ka.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Ka.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Ka.prototype.isDestroyed=function(){return!1};Ka.prototype.destroy=function(){return this.removeAll(),ue(this)};var Ql=Ka;function uA(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(uA.prototype,{length:{get:function(){return this._length}}});uA.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new Ql({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};uA.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};uA.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};uA.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};uA.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};uA.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};uA.prototype.isDestroyed=function(){return!1};uA.prototype.destroy=function(){return this.removeAll(),ue(this)};var HO=uA;function fS(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new vt}fS.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};fS.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};fS.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};fS.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};fS.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):mt.FAILED};var K0=fS;var tK={},jV=new d,YAe=new d,qAe=new Le,KAe=new J;function dS(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),jV),d.multiplyByScalar(n,Math.sin(f),YAe),d.add(jV,YAe,jV);let h=Math.cos(e);h=h*h;let A=Math.sin(e);A=A*A;let m=r/Math.sqrt(s*h+o*A)/a;return Le.fromAxisAngle(jV,m,qAe),J.fromQuaternion(qAe,KAe),J.multiplyByVector(KAe,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var XAe=new d,JAe=new d,eK=new d,Vtt=new d;tK.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,A=f+2,g=d.fromArray(e,f,XAe);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,JAe),_=i.geodeticSurfaceNormal(g,Vtt),y=d.multiplyByScalar(_,o,eK);d.add(g,y,g),n&&(d.multiplyByScalar(_,r,y),d.add(m,y,m),a[f+u]=m.x,a[h+u]=m.y,a[A+u]=m.z),a[f]=g.x,a[h]=g.y,a[A]=g.z}return a};var Htt=new d,Wtt=new d,jtt=new d;tK.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),A=d.normalize(s,Htt),g=d.cross(d.UNIT_Z,s,Wtt);g=d.normalize(g,g);let m=d.cross(A,g,jtt),_=1+Math.ceil(D.PI_OVER_TWO/a),y=D.PI_OVER_TWO/(_-1),C=D.PI_OVER_TWO-_*y;C<0&&(_-=Math.ceil(Math.abs(C)/y));let E=2*(_*(_+2)),I=t?new Array(E*3):void 0,b=0,S=XAe,B=JAe,v=_*4*3,P=v-1,M=0,L=n?new Array(v):void 0,p,x,T,w,R;for(C=D.PI_OVER_TWO,S=dS(C,r,m,g,c,f,u,h,A,S),t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x),C=D.PI_OVER_TWO-y,p=1;p<_+1;++p){if(S=dS(C,r,m,g,c,f,u,h,A,S),B=dS(Math.PI-C,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*p+2,x=1;x<T-1;++x)w=x/(T-1),R=d.lerp(S,B,w,eK),I[b++]=R.x,I[b++]=R.y,I[b++]=R.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[M++]=B.x,L[M++]=B.y,L[M++]=B.z),C=D.PI_OVER_TWO-(p+1)*y}for(p=_;p>1;--p){if(C=D.PI_OVER_TWO-(p-1)*y,S=dS(-C,r,m,g,c,f,u,h,A,S),B=dS(C+Math.PI,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*(p-1)+2,x=1;x<T-1;++x)w=x/(T-1),R=d.lerp(S,B,w,eK),I[b++]=R.x,I[b++]=R.y,I[b++]=R.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[M++]=B.x,L[M++]=B.y,L[M++]=B.z)}C=D.PI_OVER_TWO,S=dS(-C,r,m,g,c,f,u,h,A,S);let O={};return t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,O.positions=I,O.numPts=_),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,O.outerPositions=L),O};var Cu=tK;var hS=new d,nK=new d,iK=new d,ZAe=new d,ta=new U,$Ae=new J,Ytt=new J,oK=new Le,epe=new d,tpe=new d,npe=new d,KV=new Ae,ipe=new d,ope=new U,rpe=new U;function spe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,A=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,_=f?new Float32Array(u*3):void 0,y=0,C=epe,E=tpe,I=npe,b=new Ui(a),S=b.project(a.cartesianToCartographic(o,KV),ipe),B=a.scaleToGeodeticSurface(o,hS);a.geodeticSurfaceNormal(B,B);let v=$Ae,P=Ytt;if(c!==0){let R=Le.fromAxisAngle(B,c,oK);v=J.fromQuaternion(R,v),R=Le.fromAxisAngle(B,-c,oK),P=J.fromQuaternion(R,P)}else v=J.clone(J.IDENTITY,v),P=J.clone(J.IDENTITY,P);let M=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,ope),L=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,rpe),p=e.length,x=n?p:0,T=x/3*2;for(let R=0;R<p;R+=3){let O=R+1,k=R+2,Q=d.fromArray(e,R,hS);if(i.st){let z=J.multiplyByVector(v,Q,nK),F=b.project(a.cartesianToCartographic(z,KV),iK);d.subtract(F,S,F),ta.x=(F.x+r)/(2*r),ta.y=(F.y+s)/(2*s),M.x=Math.min(ta.x,M.x),M.y=Math.min(ta.y,M.y),L.x=Math.max(ta.x,L.x),L.y=Math.max(ta.y,L.y),n&&(h[y+T]=ta.x,h[y+1+T]=ta.y),h[y++]=ta.x,h[y++]=ta.y}(i.normal||i.tangent||i.bitangent||f)&&(C=a.geodeticSurfaceNormal(Q,C),f&&(_[R+x]=-C.x,_[O+x]=-C.y,_[k+x]=-C.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(E=d.normalize(d.cross(d.UNIT_Z,C,E),E),J.multiplyByVector(P,E,E)),i.normal&&(A[R]=C.x,A[O]=C.y,A[k]=C.z,n&&(A[R+x]=-C.x,A[O+x]=-C.y,A[k+x]=-C.z)),i.tangent&&(g[R]=E.x,g[O]=E.y,g[k]=E.z,n&&(g[R+x]=-E.x,g[O+x]=-E.y,g[k+x]=-E.z)),i.bitangent&&(I=d.normalize(d.cross(C,E,I),I),m[R]=I.x,m[O]=I.y,m[k]=I.z,n&&(m[R+x]=I.x,m[O+x]=I.y,m[k+x]=I.z))))}if(i.st){p=h.length;for(let R=0;R<p;R+=2)h[R]=(h[R]-M.x)/(L.x-M.x),h[R+1]=(h[R+1]-M.y)/(L.y-M.y)}let w=new yn;if(i.position){let R=Cu.raisePositionsToHeight(e,t,n);w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:R})}if(i.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),i.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),f&&(w.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),n&&l(t.offsetAttribute)){let R=new Uint8Array(u);if(t.offsetAttribute===hn.TOP)R=R.fill(1,0,u/2);else{let O=t.offsetAttribute===hn.NONE?0:1;R=R.fill(O)}w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:R})}return w}function ape(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var X0=new d;function qtt(e){let t=e.center;X0=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,X0),e.height,X0),X0=d.add(t,X0,X0);let n=new le(X0,e.semiMajorAxis),i=Cu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=spe(o,e,!1),a=ape(r);return a=Oe.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Ktt(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),A=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,_=n.bitangent?new Float32Array(f*3):void 0,y=t.shadowVolume,C=y?new Float32Array(f*3):void 0,E=0,I=epe,b=tpe,S=npe,B=new Ui(s),v=B.project(s.cartesianToCartographic(i,KV),ipe),P=s.scaleToGeodeticSurface(i,hS);s.geodeticSurfaceNormal(P,P);let M=Le.fromAxisAngle(P,u,oK),L=J.fromQuaternion(M,$Ae),p=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,ope),x=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,rpe),T=e.length,w=T/3*2;for(let O=0;O<T;O+=3){let k=O+1,Q=O+2,z=d.fromArray(e,O,hS),F;if(n.st){let W=J.multiplyByVector(L,z,nK),Z=B.project(s.cartesianToCartographic(W,KV),iK);d.subtract(Z,v,Z),ta.x=(Z.x+o)/(2*o),ta.y=(Z.y+r)/(2*r),p.x=Math.min(ta.x,p.x),p.y=Math.min(ta.y,p.y),x.x=Math.max(ta.x,x.x),x.y=Math.max(ta.y,x.y),A[E+w]=ta.x,A[E+1+w]=ta.y,A[E++]=ta.x,A[E++]=ta.y}z=s.scaleToGeodeticSurface(z,z),F=d.clone(z,nK),I=s.geodeticSurfaceNormal(z,I),y&&(C[O+T]=-I.x,C[k+T]=-I.y,C[Q+T]=-I.z);let H=d.multiplyByScalar(I,a,ZAe);if(z=d.add(z,H,z),H=d.multiplyByScalar(I,c,H),F=d.add(F,H,F),n.position&&(h[O+T]=F.x,h[k+T]=F.y,h[Q+T]=F.z,h[O]=z.x,h[k]=z.y,h[Q]=z.z),n.normal||n.tangent||n.bitangent){S=d.clone(I,S);let W=d.fromArray(e,(O+3)%T,ZAe);d.subtract(W,z,W);let Z=d.subtract(F,z,iK);I=d.normalize(d.cross(Z,W,I),I),n.normal&&(g[O]=I.x,g[k]=I.y,g[Q]=I.z,g[O+T]=I.x,g[k+T]=I.y,g[Q+T]=I.z),n.tangent&&(b=d.normalize(d.cross(S,I,b),b),m[O]=b.x,m[k]=b.y,m[Q]=b.z,m[O+T]=b.x,m[O+1+T]=b.y,m[O+2+T]=b.z),n.bitangent&&(_[O]=S.x,_[k]=S.y,_[Q]=S.z,_[O+T]=S.x,_[k+T]=S.y,_[Q+T]=S.z)}}if(n.st){T=A.length;for(let O=0;O<T;O+=2)A[O]=(A[O]-p.x)/(x.x-p.x),A[O+1]=(A[O+1]-p.y)/(x.y-p.y)}let R=new yn;if(n.position&&(R.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(R.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:A})),n.normal&&(R.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(R.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(R.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),y&&(R.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),l(t.offsetAttribute)){let O=new Uint8Array(f);if(t.offsetAttribute===hn.TOP)O=O.fill(1,0,f/2);else{let k=t.offsetAttribute===hn.NONE?0:1;O=O.fill(k)}R.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return R}function Xtt(e){let t=e.length/3,n=Oe.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var YV=new le,qV=new le;function Jtt(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,hS),e.height,hS);YV.center=d.add(t,o,YV.center),YV.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),qV.center=d.add(t,o,qV.center),qV.radius=i;let r=Cu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=le.union(YV,qV),f=spe(s,e,!0),h=ape(a),A=h.length;h.length=A*2;let g=s.length/3;for(let b=0;b<A;b+=3)h[b+A]=h[b+2]+g,h[b+1+A]=h[b+1]+g,h[b+2+A]=h[b]+g;let m=Oe.createTypedArray(g*2/3,h),_=new ht({attributes:f,indices:m,primitiveType:Me.TRIANGLES}),y=Ktt(c,e);h=Xtt(c);let C=Oe.createTypedArray(c.length*2/3,h),E=new ht({attributes:y,indices:C,primitiveType:Me.TRIANGLES}),I=Vn.combineInstances([new Pt({geometry:_}),new Pt({geometry:E})]);return{boundingSphere:u,attributes:I[0].attributes,indices:I[0].indices}}function cpe(e,t,n,i,o,r,s){let c=Cu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let A=0;A<u;++A)f[A]=d.fromArray(c,A*3);let h=ae.fromCartesianArray(f,r,s);return h.width>D.PI&&(h.north=h.north>0?D.PI_OVER_TWO-D.EPSILON7:h.north,h.south=h.south<0?D.EPSILON7-D.PI_OVER_TWO:h.south,h.east=D.PI,h.west=-D.PI),h}function dA(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.vertexFormat??Pe.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Pe.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}dA.packedLength=d.packedLength+te.packedLength+Pe.packedLength+9;dA.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var lpe=new d,upe=new te,fpe=new Pe,fA={center:lpe,ellipsoid:upe,vertexFormat:fpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};dA.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,lpe);t+=d.packedLength;let o=te.unpack(e,t,upe);t+=te.packedLength;let r=Pe.unpack(e,t,fpe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=A,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(fA.height=f,fA.extrudedHeight=A,fA.granularity=h,fA.stRotation=u,fA.rotation=c,fA.semiMajorAxis=s,fA.semiMinorAxis=a,fA.shadowVolume=g,fA.offsetAttribute=m===-1?void 0:m,new dA(fA))};dA.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??te.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??D.RADIANS_PER_DEGREE,a=e.rotation??0;return cpe(n,o,r,a,s,i,t)};dA.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Jtt(o);else if(r=qtt(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};dA.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new dA({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};function Ztt(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Cu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ht._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(dA.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=cpe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Ztt(this)),this._textureCoordinateRotationPoints}}});var kl=dA;var dpe=new d,J0=new d;function $tt(e){let t=e.center;J0=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,J0),e.height,J0),J0=d.add(t,J0,J0);let n=new le(J0,e.semiMajorAxis),i=Cu.computeEllipsePositions(e,!1,!0).outerPositions,o=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Cu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Oe.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var XV=new le,JV=new le;function ent(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,dpe),e.height,dpe);XV.center=d.add(t,o,XV.center),XV.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),JV.center=d.add(t,o,JV.center),JV.radius=i;let r=Cu.computeEllipsePositions(e,!1,!0).outerPositions,s=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Cu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=le.union(XV,JV),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===hn.TOP)m=m.fill(1,0,c/2);else{let _=e.offsetAttribute===hn.NONE?0:1;m=m.fill(_)}s.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=e.numberOfVerticalLines??16;u=D.clamp(u,0,c/2);let f=Oe.createTypedArray(c,c*2+u*2);c/=2;let h=0,A;for(A=0;A<c;++A)f[h++]=A,f[h++]=(A+1)%c,f[h++]=A+c,f[h++]=(A+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let _=Math.min(g*u,c);for(A=0;A<_;A+=g)f[h++]=A,f[h++]=A+c}return{boundingSphere:a,attributes:s,indices:f}}function mS(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}mS.packedLength=d.packedLength+te.packedLength+8;mS.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var hpe=new d,mpe=new te,Pg={center:hpe,ellipsoid:mpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};mS.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,hpe);t+=d.packedLength;let o=te.unpack(e,t,mpe);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=A===-1?void 0:A,n):(Pg.height=c,Pg.extrudedHeight=f,Pg.granularity=u,Pg.rotation=a,Pg.semiMajorAxis=r,Pg.semiMinorAxis=s,Pg.numberOfVerticalLines=h,Pg.offsetAttribute=A===-1?void 0:A,new mS(Pg))};mS.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=ent(o);else if(r=$tt(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var Af=mS;var Ape=new G,ppe=d.ZERO,gpe=new d,_pe=new ae;function tnt(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function $h(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new tnt(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&($h.prototype=Object.create(ti.prototype),$h.prototype.constructor=$h);$h.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Ape)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,ppe,gpe))),new Pt({id:t,geometry:new kl(this._options),attributes:i})};$h.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Ape),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,ppe,gpe))),new Pt({id:t,geometry:new Af(this._options),attributes:r})};$h.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};$h.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t)};$h.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!j.isConstant(t.rotation)||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};$h.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(je.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(je.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(je.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),s.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=Ti.getMinimumMaximumHeights(kl.computeRectangle(s,_pe)).minimumTerrainHeight),s.extrudedHeight=o};$h.DynamicGeometryUpdater=AS;function AS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(AS.prototype=Object.create(_i.prototype),AS.prototype.constructor=AS);AS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||_i.prototype._isHidden.call(this,e,t,n)};AS.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.center=j.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=j.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=j.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(kl.computeRectangle(i,_pe)).minimumTerrainHeight),i.extrudedHeight=s};var WO=$h;var nnt=new d,int=new d,ont=new d,rnt=new d,snt=new d,ant=new d(1,1,1),ype=Math.cos,Cpe=Math.sin;function Rg(e){e=e??V.EMPTY_OBJECT;let t=e.radii??ant,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),u=e.vertexFormat??Pe.DEFAULT;this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Pe.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Rg.packedLength=2*d.packedLength+Pe.packedLength+7;Rg.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var Epe=new d,Ipe=new d,xpe=new Pe,Fy={radii:Epe,innerRadii:Ipe,vertexFormat:xpe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Rg.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Epe);t+=d.packedLength;let o=d.unpack(e,t,Ipe);t+=d.packedLength;let r=Pe.unpack(e,t,xpe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=A===-1?void 0:A,n):(Fy.minimumClock=s,Fy.maximumClock=a,Fy.minimumCone=c,Fy.maximumCone=u,Fy.stackPartitions=f,Fy.slicePartitions=h,Fy.offsetAttribute=A===-1?void 0:A,new Rg(Fy))};Rg.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/D.TWO_PI),u=Math.round(u*Math.abs(s-r)/D.PI),c<2&&(c=2),u<2&&(u=2);let f,h,A=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let _=g.length,y=m.length,C=0,E=1,I=n.x!==t.x||n.y!==t.y||n.z!==t.z,b=!1,S=!1,B=!1;I&&(E=2,r>0&&(b=!0,C+=c-1),s<Math.PI&&(S=!0,C+=c-1),(o-i)%D.TWO_PI?(B=!0,C+=(u-1)*2+1):C+=1);let v=y*_*E,P=new Float64Array(v*3),M=new Array(v).fill(!1),L=new Array(v).fill(!1),p=c*u*E,x=6*(p+C+1-(c+u)*E),T=Oe.createTypedArray(p,x),w=a.normal?new Float32Array(v*3):void 0,R=a.tangent?new Float32Array(v*3):void 0,O=a.bitangent?new Float32Array(v*3):void 0,k=a.st?new Float32Array(v*2):void 0,Q=new Array(_),z=new Array(_);for(f=0;f<_;f++)Q[f]=Cpe(g[f]),z[f]=ype(g[f]);let F=new Array(y),H=new Array(y);for(h=0;h<y;h++)H[h]=ype(m[h]),F[h]=Cpe(m[h]);for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=t.x*Q[f]*H[h],P[A++]=t.y*Q[f]*F[h],P[A++]=t.z*z[f];let W=v/2;if(I)for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=n.x*Q[f]*H[h],P[A++]=n.y*Q[f]*F[h],P[A++]=n.z*z[f],M[W]=!0,f>0&&f!==_-1&&h!==0&&h!==y-1&&(L[W]=!0),W++;A=0;let Z,Y;for(f=1;f<_-2;f++)for(Z=f*y,Y=(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Y+h+1,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Z+h;if(I){let Ke=_*y;for(f=1;f<_-2;f++)for(Z=Ke+f*y,Y=Ke+(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Z+h,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Y+h+1}let $,X;if(I){if(b)for(X=_*y,f=1;f<y-2;f++)T[A++]=f,T[A++]=f+1,T[A++]=X+f+1,T[A++]=f,T[A++]=X+f+1,T[A++]=X+f;if(S)for($=_*y-y,X=_*y*E-y,f=1;f<y-2;f++)T[A++]=$+f+1,T[A++]=$+f,T[A++]=X+f,T[A++]=$+f+1,T[A++]=X+f,T[A++]=X+f+1}if(B){for(f=1;f<_-2;f++)X=y*_+y*f,$=y*f,T[A++]=X,T[A++]=$+y,T[A++]=$,T[A++]=X,T[A++]=X+y,T[A++]=$+y;for(f=1;f<_-2;f++)X=y*_+y*(f+1)-1,$=y*(f+1)-1,T[A++]=$+y,T[A++]=X,T[A++]=$,T[A++]=$+y,T[A++]=X+y,T[A++]=X}let he=new yn;a.position&&(he.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:P}));let ge=0,fe=0,ye=0,xe=0,ve=v/2,Te,ke=te.fromCartesian3(t),Ge=te.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<v;f++){Te=M[f]?Ge:ke;let Ke=d.fromArray(P,f*3,nnt),tt=Te.geodeticSurfaceNormal(Ke,int);if(L[f]&&d.negate(tt,tt),a.st){let en=U.negate(tt,snt);k[ge++]=Math.atan2(en.y,en.x)/D.TWO_PI+.5,k[ge++]=Math.asin(tt.z)/Math.PI+.5}if(a.normal&&(w[fe++]=tt.x,w[fe++]=tt.y,w[fe++]=tt.z),a.tangent||a.bitangent){let en=ont,it=0,nn;if(M[f]&&(it=ve),!b&&f>=it&&f<it+y*2?nn=d.UNIT_X:nn=d.UNIT_Z,d.cross(nn,tt,en),d.normalize(en,en),a.tangent&&(R[ye++]=en.x,R[ye++]=en.y,R[ye++]=en.z),a.bitangent){let qt=d.cross(tt,en,rnt);d.normalize(qt,qt),O[xe++]=qt.x,O[xe++]=qt.y,O[xe++]=qt.z}}}a.st&&(he.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:k})),a.normal&&(he.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:w})),a.tangent&&(he.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:R})),a.bitangent&&(he.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:O}))}if(l(e._offsetAttribute)){let Ke=P.length,tt=e._offsetAttribute===hn.NONE?0:1,en=new Uint8Array(Ke/3).fill(tt);he.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:en})}return new ht({attributes:he,indices:T,primitiveType:Me.TRIANGLES,boundingSphere:le.fromEllipsoid(ke),offsetAttribute:e._offsetAttribute})};var rK;Rg.getUnitEllipsoid=function(){return l(rK)||(rK=Rg.createGeometry(new Rg({radii:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),rK};var Ia=Rg;var cnt=new Xt(G.WHITE),sK=d.ZERO,aK=new d,lnt=new d,unt=new d,cK=new G,fnt=new d(1,1,1);function dnt(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function pf(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new dnt(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(pf.prototype=Object.create(yi.prototype),pf.prototype.constructor=pf);Object.defineProperties(pf.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pf.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new wn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Kn.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,cK)),l(f)||(f=G.WHITE),r=$t.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,sK,aK))),new Pt({id:i,geometry:new Ia(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};pf.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,cK),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new wn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(r),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,sK,aK))),new Pt({id:i,geometry:new af(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};pf.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};pf.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||yi.prototype._isHidden.call(this,e,t)};pf.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.radii.isConstant||!j.isConstant(t.innerRadii)||!j.isConstant(t.stackPartitions)||!j.isConstant(t.slicePartitions)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.minimumClock)||!j.isConstant(t.maximumClock)||!j.isConstant(t.minimumCone)||!j.isConstant(t.maximumCone)||!j.isConstant(t.subdivisions)};pf.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(je.MINIMUM_VALUE,i.radii),i.innerRadii=j.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=j.getValueOrUndefined(t.minimumClock,je.MINIMUM_VALUE),i.maximumClock=j.getValueOrUndefined(t.maximumClock,je.MINIMUM_VALUE),i.minimumCone=j.getValueOrUndefined(t.minimumCone,je.MINIMUM_VALUE),i.maximumCone=j.getValueOrUndefined(t.maximumCone,je.MINIMUM_VALUE),i.stackPartitions=j.getValueOrUndefined(t.stackPartitions,je.MINIMUM_VALUE),i.slicePartitions=j.getValueOrUndefined(t.slicePartitions,je.MINIMUM_VALUE),i.subdivisions=j.getValueOrUndefined(t.subdivisions,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};pf.prototype._onEntityPropertyChanged=_p;pf.DynamicGeometryUpdater=jO;function jO(e,t,n){_i.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new N,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&(jO.prototype=Object.create(_i.prototype),jO.prototype.constructor=jO);jO.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!j.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=j.getValueOrUndefined(n.radii,e,lnt),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=j.getValueOrDefault(n.fill,e,!0),s=j.getValueOrDefault(n.outline,e,!1),a=j.getValueOrClonedDefault(n.outlineColor,e,G.BLACK,cK),c=ur.getValue(e,n.material??cnt,this._material),u=j.getValueOrUndefined(n.innerRadii,e,unt),f=j.getValueOrUndefined(n.minimumClock,e),h=j.getValueOrUndefined(n.maximumClock,e),A=j.getValueOrUndefined(n.minimumCone,e),g=j.getValueOrUndefined(n.maximumCone,e),m=j.getValueOrUndefined(n.stackPartitions,e),_=j.getValueOrUndefined(n.slicePartitions,e),y=j.getValueOrUndefined(n.subdivisions,e),C=j.getValueOrDefault(n.outlineWidth,e,1),E=j.getValueOrDefault(n.heightReference,e,Ze.NONE),I=E!==Ze.NONE?hn.ALL:void 0,b=this._scene.mode,S=b===ie.SCENE3D&&E===Ze.NONE,B=this._options,v=this._geometryUpdater.shadowsProperty.getValue(e),M=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),L=j.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,sK,aK);if(!S||this._lastSceneMode!==b||!l(this._primitive)||B.stackPartitions!==m||B.slicePartitions!==_||l(u)&&!d.equals(B.innerRadii!==u)||B.minimumClock!==f||B.maximumClock!==h||B.minimumCone!==A||B.maximumCone!==g||B.subdivisions!==y||this._lastOutlineWidth!==C||B.offsetAttribute!==I){let x=this._primitives;x.removeAndDestroy(this._primitive),x.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=b,this._lastOutlineWidth=C,B.stackPartitions=m,B.slicePartitions=_,B.subdivisions=y,B.offsetAttribute=I,B.radii=d.clone(S?fnt:i,B.radii),l(u)?S?B.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,B.innerRadii):B.innerRadii=d.clone(u,B.innerRadii):B.innerRadii=void 0,B.minimumClock=f,B.maximumClock=h,B.minimumCone=A,B.maximumCone=g;let T=new Eo({material:c,translucent:c.isTranslucent(),closed:!0});B.vertexFormat=T.vertexFormat;let w=this._geometryUpdater.createFillGeometryInstance(e,S,this._modelMatrix);this._primitive=x.add(new Qn({geometryInstances:w,appearance:T,asynchronous:!1,shadows:v}));let R=this._geometryUpdater.createOutlineGeometryInstance(e,S,this._modelMatrix);this._outlinePrimitive=x.add(new Qn({geometryInstances:R,appearance:new gn({flat:!0,translucent:R.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(C)}}),asynchronous:!1,shadows:v})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=G.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=M,this._lastOffset=d.clone(L,this._lastOffset)}else if(this._primitive.ready){let x=this._primitive,T=this._outlinePrimitive;x.show=!0,T.show=!0,x.appearance.material=c;let w=this._attributes;l(w)||(w=x.getGeometryInstanceAttributes(t),this._attributes=w),r!==this._lastShow&&(w.show=wn.toValue(r,w.show),this._lastShow=r);let R=this._outlineAttributes;l(R)||(R=T.getGeometryInstanceAttributes(t),this._outlineAttributes=R),s!==this._lastOutlineShow&&(R.show=wn.toValue(s,R.show),this._lastOutlineShow=s),G.equals(a,this._lastOutlineColor)||(R.color=$t.toValue(a,R.color),G.clone(a,this._lastOutlineColor)),Ut.equals(M,this._lastDistanceDisplayCondition)||(w.distanceDisplayCondition=Kn.toValue(M,w.distanceDisplayCondition),R.distanceDisplayCondition=Kn.toValue(M,R.distanceDisplayCondition),Ut.clone(M,this._lastDistanceDisplayCondition)),d.equals(L,this._lastOffset)||(w.offset=uo.toValue(L,w.offset),R.offset=uo.toValue(L,w.offset),d.clone(L,this._lastOffset))}S&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=N.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var YO=pf;function pS(e){e=e??V.EMPTY_OBJECT;let t=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}pS.packedLength=Pe.packedLength;pS.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),t};var bpe=new Pe,hnt={vertexFormat:bpe};pS.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,bpe);return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n):new pS(hnt)};var ZV=new d(-.5,-.5,0),$V=new d(.5,.5,0);pS.createGeometry=function(e){let t=e._vertexFormat,n=new yn,i,o;if(t.position){if(o=new Float64Array(12),o[0]=ZV.x,o[1]=ZV.y,o[2]=0,o[3]=$V.x,o[4]=ZV.y,o[5]=0,o[6]=$V.x,o[7]=$V.y,o[8]=0,o[9]=ZV.x,o[10]=$V.y,o[11]=0,n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ht({attributes:n,indices:i,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var qO=pS;function gS(){this._workerName="createPlaneOutlineGeometry"}gS.packedLength=0;gS.pack=function(e,t){return t};gS.unpack=function(e,t,n){return l(n)?n:new gS};var Qy=new d(-.5,-.5,0),e8=new d(.5,.5,0);gS.createGeometry=function(){let e=new yn,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=Qy.x,n[1]=Qy.y,n[2]=Qy.z,n[3]=e8.x,n[4]=Qy.y,n[5]=Qy.z,n[6]=e8.x,n[7]=e8.y,n[8]=Qy.z,n[9]=Qy.x,n[10]=e8.y,n[11]=Qy.z,e.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ht({attributes:e,indices:t,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var KO=gS;var mnt=new d,Tpe=new G;function Ant(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function vd(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Ant(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(vd.prototype=Object.create(yi.prototype),vd.prototype.constructor=vd);vd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,Tpe)),l(g)||(g=G.WHITE),o=$t.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=j.getValueOrDefault(c.plane,e,u.plane),A=j.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=A,f=lK(h,A,f,f),new Pt({id:t,geometry:new qO(this._options),modelMatrix:f,attributes:i})};vd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Tpe),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=j.getValueOrDefault(r.plane,e,s.plane),u=j.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=lK(c,u,a,a),new Pt({id:t,geometry:new KO,modelMatrix:a,attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};vd.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||yi.prototype._isHidden.call(this,e,t)};vd.prototype._getIsClosed=function(e){return!1};vd.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};vd.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(je.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions)};vd.DynamicGeometryUpdater=_S;function _S(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(_S.prototype=Object.create(_i.prototype),_S.prototype.constructor=_S);_S.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,mnt);return!l(o)||!l(i.plane)||!l(i.dimensions)||_i.prototype._isHidden.call(this,e,t,n)};_S.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=j.getValueOrDefault(t.plane,n,i.plane),i.dimensions=j.getValueOrUndefined(t.dimensions,n,i.dimensions)};var pnt=new d,gnt=new d,_nt=new d,ynt=new d,Cnt=new J,Ent=new J,Int=new N;function lK(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,_nt),a=d.clone(d.UNIT_Z,gnt);D.equalsEpsilon(Math.abs(d.dot(a,o)),1,D.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,pnt);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=Cnt;J.setColumn(u,0,c,u),J.setColumn(u,1,a,u),J.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,ynt),h=J.multiplyByScale(u,f,Ent),A=N.fromRotationTranslation(h,s,Int);return N.multiplyTransformation(n,A,i)}vd.createPrimitiveMatrix=lK;var XO=vd;var xnt=new d,bnt=new Ye,Tnt=new U,Snt=new U,wnt=new d,Bnt=new d,Dnt=new d,JO=new d,vnt=new d,Pnt=new d,Spe=new Le,Rnt=new J,Mnt=new J,Nnt=new d;function Lnt(e,t,n,i,o,r,s,a,c){let u=e.positions,f=Ii.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Oe.createTypedArray(u.length,f.length);h.set(f);let A=Rnt;if(i!==0){let p=Le.fromAxisAngle(s,i,Spe);if(A=J.fromQuaternion(p,A),t.tangent||t.bitangent){p=Le.fromAxisAngle(s,-i,Spe);let x=J.fromQuaternion(p,Mnt);a=d.normalize(J.multiplyByVector(x,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else A=J.clone(J.IDENTITY,A);let g=Snt;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,_=m*3,y=new Float64Array(_),C=t.normal?new Float32Array(_):void 0,E=t.tangent?new Float32Array(_):void 0,I=t.bitangent?new Float32Array(_):void 0,b=t.st?new Float32Array(m*2):void 0,S=0,B=0,v=0,P=0,M=0;for(let p=0;p<m;p++){let x=u[p];if(y[S++]=x.x,y[S++]=x.y,y[S++]=x.z,t.st)if(l(o)&&o.positions.length===m)b[M++]=o.positions[p].x,b[M++]=o.positions[p].y;else{let T=J.multiplyByVector(A,x,xnt),w=r(T,Tnt);U.subtract(w,g,w);let R=D.clamp(w.x/n.width,0,1),O=D.clamp(w.y/n.height,0,1);b[M++]=R,b[M++]=O}t.normal&&(C[B++]=s.x,C[B++]=s.y,C[B++]=s.z),t.tangent&&(E[P++]=a.x,E[P++]=a.y,E[P++]=a.z),t.bitangent&&(I[v++]=c.x,I[v++]=c.y,I[v++]=c.z)}let L=new yn;return t.position&&(L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y})),t.normal&&(L.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(L.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.bitangent&&(L.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:b})),new ht({attributes:L,indices:h,primitiveType:Me.TRIANGLES})}function Z0(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=Pe.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=$n.computeHierarchyPackedLength(t,d)+Pe.packedLength+te.packedLength+(l(n)?$n.computeHierarchyPackedLength(n,U):1)+2}Z0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new Z0(t)};Z0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var Ont=te.clone(te.UNIT_SPHERE),Fnt=new Pe,Qnt={polygonHierarchy:{}};Z0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Ont);t+=te.packedLength;let r=Pe.unpack(e,t,Fnt);t+=Pe.packedLength;let s=e[t++],a=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,U);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new Z0(Qnt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};Z0.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=Mo(s,d.equalsEpsilon,!0),s.length<3)return;let a=wnt,c=Bnt,u=Dnt,f=vnt,h=Pnt;if(!ug.computeProjectTo2DArguments(s,JO,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon(JO,d.ZERO,D.EPSILON6)){let M=e._ellipsoid.geodeticSurfaceNormal(JO,Nnt);d.dot(a,M)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=ug.createProjectPointsTo2DFunction(JO,f,h),m=ug.createProjectPointTo2DFunction(JO,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let _=$n.polygonsFromHierarchy(n,r,g,!1),y=_.hierarchy,C=_.polygons,E=function(M){return M},I=r?$n.polygonsFromHierarchy(o,!0,E,!1).polygons:void 0;if(y.length===0)return;s=y[0].outerRing;let b=le.fromPoints(s),S=$n.computeBoundingRectangle(a,m,s,i,bnt),B=[];for(let M=0;M<C.length;M++){let L=new Pt({geometry:Lnt(C[M],t,S,i,r?I[M]:void 0,m,a,c,u)});B.push(L)}let v=Vn.combineInstances(B)[0];v.attributes.position.values=new Float64Array(v.attributes.position.values),v.indices=Oe.createTypedArray(v.attributes.position.values.length/3,v.indices);let P=v.attributes;return t.position||delete P.position,new ht({attributes:P,indices:v.indices,primitiveType:v.primitiveType,boundingSphere:b})};var ZO=Z0;var wpe=[],t8=[];function knt(e,t,n,i,o){let s=ys.fromPoints(t,e).projectPointsOntoPlane(t,wpe);Ii.computeWindingOrder2D(s)===Ls.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],_=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=_.x,c[h++]=_.y,c[h++]=_.z}else{let m=0;if(o===cn.GEODESIC)for(u=0;u<f;u++)m+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===cn.RHUMB)for(u=0;u<f;u++)m+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let _;o===cn.GEODESIC?_=$n.subdivideLine(t[u],t[(u+1)%f],n,t8):o===cn.RHUMB&&(_=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,t8));let y=_.length;for(let C=0;C<y;++C)c[h++]=_[C]}}f=c.length/3;let A=f*2,g=Oe.createTypedArray(f,A);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Pt({geometry:new ht({attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Me.LINES})})}function Unt(e,t,n,i,o){let s=ys.fromPoints(t,e).projectPointsOntoPlane(t,wpe);Ii.computeWindingOrder2D(s)===Ls.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),A=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=A/3;let y=t[u],C=t[(u+1)%f];c[A++]=y.x,c[A++]=y.y,c[A++]=y.z,c[A++]=C.x,c[A++]=C.y,c[A++]=C.z}else{let y=0;if(o===cn.GEODESIC)for(u=0;u<f;u++)y+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===cn.RHUMB)for(u=0;u<f;u++)y+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(y*3*2),u=0;u<f;++u){h[u]=A/3;let C;o===cn.GEODESIC?C=$n.subdivideLine(t[u],t[(u+1)%f],n,t8):o===cn.RHUMB&&(C=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,t8));let E=C.length;for(let I=0;I<E;++I)c[A++]=C[I]}}f=c.length/6;let g=h.length,m=(f*2+g)*2,_=Oe.createTypedArray(f+g,m);for(A=0,u=0;u<f;++u)_[A++]=u,_[A++]=(u+1)%f,_[A++]=u+f,_[A++]=(u+1)%f+f;for(u=0;u<g;u++){let y=h[u];_[A++]=y,_[A++]=y+f}return new Pt({geometry:new ht({attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:_,primitiveType:Me.LINES})})}function $0(e){let t=e.polygonHierarchy,n=e.ellipsoid??te.default,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??cn.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=te.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+8}$0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var Gnt=te.clone(te.UNIT_SPHERE),znt={polygonHierarchy:{}};$0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Gnt);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],A=e[t];return l(n)||(n=new $0(znt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=A,n};$0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new $0(t)};$0.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=$n.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=D.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,A=e._perPositionHeightExtrude||!D.equalsEpsilon(f,h,0,D.EPSILON2),g,m;if(A)for(m=0;m<s.length;m++){if(a=Unt(t,s[m],u,o,r),a.geometry=$n.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length/3,E=new Uint8Array(C);e._offsetAttribute===hn.TOP?E=E.fill(1,0,C/2):(g=e._offsetAttribute===hn.NONE?0:1,E=E.fill(g)),a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}else for(m=0;m<s.length;m++){if(a=knt(t,s[m],u,o,r),a.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length;g=e._offsetAttribute===hn.NONE?0:1;let E=new Uint8Array(C/3).fill(g);a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}let _=Vn.combineInstances(c)[0],y=le.fromVertices(_.attributes.position.values);return new ht({attributes:_.attributes,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:y,offsetAttribute:e._offsetAttribute})};var $O=$0;var Bpe="Entity polygons cannot have both height and perPositionHeight. height will be ignored",Dpe="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",vpe=new G,Ppe=d.ZERO,Rpe=new d,Mpe=new ae,Vnt=[],Hnt=new U;function Wnt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function gf(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Wnt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(gf.prototype=Object.create(ti.prototype),gf.prototype.constructor=gf);gf.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,vpe)),l(s)||(s=G.WHITE),o.color=$t.fromColor(s)}l(i.offsetAttribute)&&(o.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Rpe)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new ZO(i):r=new Mp(i),new Pt({id:t,geometry:r,attributes:o})};gf.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,vpe),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(o),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Rpe)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new Id(i):a=new $O(i),new Pt({id:t,geometry:a,attributes:s})};gf.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=ys.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Vnt),a=s.length,c=0,u=a-1,f=new U;for(let A=0;A<a;u=A++){let g=s[A],m=s[u],_=g.x*m.y-m.x*g.y,y=U.add(g,m,Hnt);y=U.multiplyByScalar(y,_,y),f=U.add(f,y,f),c+=_}let h=1/(c*3);return f=U.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};gf.prototype._isHidden=function(e,t){return!l(t.hierarchy)||yi.prototype._isHidden.call(this,e,t)};gf.prototype._isOnTerrain=function(e,t){let n=ti.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(je.MINIMUM_VALUE):!0);return n&&!o};gf.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.textureCoordinates)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.perPositionHeight)||!j.isConstant(t.closeTop)||!j.isConstant(t.closeBottom)||!j.isConstant(t.zIndex)||!j.isConstant(t.arcType)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};gf.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(je.MINIMUM_VALUE),r=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),c=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE),u=j.getValueOrDefault(t.perPositionHeight,je.MINIMUM_VALUE,!1);r=ti.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,yt(Bpe)),s!==Ze.NONE&&u&&(r=void 0,yt(Dpe))):(l(a)&&!l(r)&&(r=0),f=ti.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),i.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=j.getValueOrDefault(t.closeTop,je.MINIMUM_VALUE,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,je.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=j.getValueOrDefault(t.arcType,je.MINIMUM_VALUE,cn.GEODESIC),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,je.MINIMUM_VALUE),a=ti.getGeometryExtrudedHeight(a,c),a===ti.CLAMP_TO_GROUND){let h=Mp.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Mpe);a=Ti.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};gf.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};gf.DynamicGeometryUpdater=yS;function yS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(yS.prototype=Object.create(_i.prototype),yS.prototype.constructor=yS);yS.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||_i.prototype._isHidden.call(this,e,t,n)};yS.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=j.getValueOrUndefined(t.hierarchy,n);let o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,n),c=j.getValueOrUndefined(t.perPositionHeight,n);o=ti.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,yt(Bpe)),r!==Ze.NONE&&c&&(o=void 0,yt(Dpe))):(l(a)&&!l(o)&&(o=0),u=ti.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=j.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=j.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=j.getValueOrDefault(t.arcType,n,cn.GEODESIC),a=ti.getGeometryExtrudedHeight(a,s),a===ti.CLAMP_TO_GROUND){let f=Mp.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Mpe);a=Ti.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var eF=gf;function jnt(e,t,n,i){let o=new yn;i.position&&(o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=Ii.triangulate(t),u=(a-1)*r*6+c.length*2,f=Oe.createTypedArray(s,u),h,A,g,m,_,y,C=r*2,E=0;for(h=0;h<a-1;h++){for(A=0;A<r-1;A++)g=A*2+h*r*2,y=g+C,m=g+1,_=m+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y;g=r*2-2+h*r*2,m=g+1,_=m+C,y=g+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y}if(i.st||i.tangent||i.bitangent){let S=new Float32Array(s*2),B=1/(a-1),v=1/n.height,P=n.height/2,M,L,p=0;for(h=0;h<a;h++){for(M=h*B,L=v*(t[0].y+P),S[p++]=M,S[p++]=L,A=1;A<r;A++)L=v*(t[A].y+P),S[p++]=M,S[p++]=L,S[p++]=M,S[p++]=L;L=v*(t[0].y+P),S[p++]=M,S[p++]=L}for(A=0;A<r;A++)M=0,L=v*(t[A].y+P),S[p++]=M,S[p++]=L;for(A=0;A<r;A++)M=(a-1)*B,L=v*(t[A].y+P),S[p++]=M,S[p++]=L;o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:new Float32Array(S)})}let I=s-r*2;for(h=0;h<c.length;h+=3){let S=c[h]+I,B=c[h+1]+I,v=c[h+2]+I;f[E++]=S,f[E++]=B,f[E++]=v,f[E++]=v+r,f[E++]=B+r,f[E++]=S+r}let b=new ht({attributes:o,indices:f,boundingSphere:le.fromVertices(e),primitiveType:Me.TRIANGLES});if(i.normal&&(b=Vn.computeNormal(b)),i.tangent||i.bitangent){try{b=Vn.computeTangentAndBitangent(b)}catch{yt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(b.attributes.tangent=void 0),i.bitangent||(b.attributes.bitangent=void 0),i.st||(b.attributes.st=void 0)}return b}function nF(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??ji.ROUNDED,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+te.packedLength+Pe.packedLength+2}nF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Npe=te.clone(te.UNIT_SPHERE),Lpe=new Pe,tF={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Npe,vertexFormat:Lpe,cornerType:void 0,granularity:void 0};nF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=te.unpack(e,t,Npe);t+=te.packedLength;let c=Pe.unpack(e,t,Lpe);t+=Pe.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(tF.polylinePositions=r,tF.shapePositions=s,tF.cornerType=u,tF.granularity=f,new nF(tF))};var Ynt=new Ye;nF.createGeometry=function(e){let t=e._positions,n=Mo(t,d.equalsEpsilon),i=e._shape;if(i=jh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;Ii.computeWindingOrder2D(i)===Ls.CLOCKWISE&&i.reverse();let o=Ye.fromPoints(i,Ynt),r=jh.computePositions(n,i,o,e,!0);return jnt(r,i,o,e._vertexFormat)};var iF=nF;function qnt(e,t){let n=new yn;n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Oe.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ht({attributes:n,indices:Oe.createTypedArray(o,a),boundingSphere:le.fromVertices(e),primitiveType:Me.LINES})}function rF(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+te.packedLength+2}rF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Ope=te.clone(te.UNIT_SPHERE),oF={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Ope,height:void 0,cornerType:void 0,granularity:void 0};rF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=te.unpack(e,t,Ope);t+=te.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(oF.polylinePositions=r,oF.shapePositions=s,oF.cornerType=c,oF.granularity=u,new rF(oF))};var Knt=new Ye;rF.createGeometry=function(e){let t=e._positions,n=Mo(t,d.equalsEpsilon),i=e._shape;if(i=jh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;Ii.computeWindingOrder2D(i)===Ls.CLOCKWISE&&i.reverse();let o=Ye.fromPoints(i,Knt),r=jh.computePositions(n,i,o,e,!1);return qnt(r,i)};var sF=rF;var Fpe=new G;function Xnt(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function hA(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Xnt(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(hA.prototype=Object.create(yi.prototype),hA.prototype.constructor=hA);hA.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Fpe)),l(c)||(c=G.WHITE),o=$t.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Pt({id:t,geometry:new iF(this._options),attributes:i})};hA.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Fpe),o=this._distanceDisplayConditionProperty.getValue(e);return new Pt({id:t,geometry:new sF(this._options),attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};hA.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||yi.prototype._isHidden.call(this,e,t)};hA.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!j.isConstant(t.granularity)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)};hA.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof Xt;o.vertexFormat=r?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(je.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(je.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(je.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(je.MINIMUM_VALUE):void 0};hA.DynamicGeometryUpdater=CS;function CS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(CS.prototype=Object.create(_i.prototype),CS.prototype.constructor=CS);CS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||_i.prototype._isHidden.call(this,e,t,n)};CS.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=j.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=j.getValueOrUndefined(t.shape,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n)};var aF=hA;var uK=new d,Upe=new d,Gpe=new d,zpe=new d,Vpe=new ae,Jnt=new U,Znt=new le,$nt=new le;function Hpe(e,t){let n=new ht({attributes:new yn,primitiveType:Me.TRIANGLES});return n.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function eit(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=zpe,f=Gpe,h=Upe;if(t.normal||t.tangent||t.bitangent)for(let A=0;A<o;A+=3){let g=d.fromArray(e,A,uK),m=c+1,_=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),J.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[_]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[_]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[_]=u.z),c+=3}return Hpe(t,{positions:e,normals:r,tangents:s,bitangents:a})}var fK=new d,Wpe=new d;function tit(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=zpe,A=Gpe,g=Upe;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let _=d.fromArray(e,m,uK),y=d.fromArray(e,(m+6)%i,fK);if(f){let C=d.fromArray(e,(m+3)%i,Wpe);d.subtract(y,_,y),d.subtract(C,_,C),g=d.normalize(d.cross(C,y,g),g),f=!1}d.equalsEpsilon(y,_,D.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(_,h),t.tangent&&(A=d.normalize(d.cross(h,g,A),A))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=A.x,r[c++]=A.y,r[c++]=A.z,r[c++]=A.x,r[c++]=A.y,r[c++]=A.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return Hpe(t,{positions:e,normals:o,tangents:r,bitangents:s})}function jpe(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let A=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,_=0,y=uK,C=Jnt,E=Number.MAX_VALUE,I=Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE;for(let x=c;x<u;++x)for(let T=0;T<r;++T)Zs.computePosition(t,i,n.st,x,T,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y));if(s&&(Zs.computePosition(t,i,n.st,0,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=C.x,I=C.y,b=C.x,S=C.y)),a&&(Zs.computePosition(t,i,n.st,o-1,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m]=y.z,n.st&&(g[_++]=C.x,g[_]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y))),n.st&&(E<0||I<0||b>1||S>1))for(let x=0;x<g.length;x+=2)g[x]=(g[x]-E)/(b-E),g[x+1]=(g[x+1]-I)/(S-I);let B=eit(A,n,i,t.tangentRotationMatrix),v=6*(r-1)*(f-1);s&&(v+=3*(r-1)),a&&(v+=3*(r-1));let P=Oe.createTypedArray(h,v),M=0,L=0,p;for(p=0;p<f-1;++p){for(let x=0;x<r-1;++x){let T=M,w=T+r,R=w+1,O=T+1;P[L++]=T,P[L++]=w,P[L++]=O,P[L++]=O,P[L++]=w,P[L++]=R,++M}++M}if(s||a){let x=h-1,T=h-1;s&&a&&(x=h-2);let w,R;if(M=0,s)for(p=0;p<r-1;p++)w=M,R=w+1,P[L++]=x,P[L++]=w,P[L++]=R,++M;if(a)for(M=(f-1)*r,p=0;p<r-1;p++)w=M,R=w+1,P[L++]=w,P[L++]=T,P[L++]=R,++M}return B.indices=P,n.st&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),B}function ES(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function IS(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var dK=new Pe;function nit(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let it=Pe.clone(o,dK);it.normal=!0,e._vertexFormat=it}let h=jpe(e,t);n&&(e._vertexFormat=o);let A=Ii.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);A=new Float64Array(A);let g=A.length,m=g*2,_=new Float64Array(m);_.set(A);let y=Ii.scaleToGeodeticHeight(h.attributes.position.values,r,a);_.set(y,g),h.attributes.position.values=_;let C=o.normal?new Float32Array(m):void 0,E=o.tangent?new Float32Array(m):void 0,I=o.bitangent?new Float32Array(m):void 0,b=o.st?new Float32Array(m/3*2):void 0,S,B;if(o.normal){for(B=h.attributes.normal.values,C.set(B),f=0;f<g;f++)B[f]=-B[f];C.set(B,g),h.attributes.normal.values=C}if(n){B=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let it=new Float32Array(m);for(f=0;f<g;f++)B[f]=-B[f];it.set(B,g),h.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:it})}let v,P=l(i);if(P){let it=g/3*2,nn=new Uint8Array(it);i===hn.TOP?nn=nn.fill(1,0,it/2):(v=i===hn.NONE?0:1,nn=nn.fill(v)),h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:nn})}if(o.tangent){let it=h.attributes.tangent.values;for(E.set(it),f=0;f<g;f++)it[f]=-it[f];E.set(it,g),h.attributes.tangent.values=E}if(o.bitangent){let it=h.attributes.bitangent.values;I.set(it),I.set(it,g),h.attributes.bitangent.values=I}o.st&&(S=h.attributes.st.values,b.set(S),b.set(S,g/3*2),h.attributes.st.values=b);let M=h.indices,L=M.length,p=g/3,x=Oe.createTypedArray(m/3,L*2);for(x.set(M),f=0;f<L;f+=3)x[f+L]=M[f+2]+p,x[f+1+L]=M[f+1]+p,x[f+2+L]=M[f]+p;h.indices=x;let T=t.northCap,w=t.southCap,R=c,O=2,k=0,Q=4,z=4;T&&(O-=1,R-=1,k+=1,Q-=2,z-=1),w&&(O-=1,R-=1,k+=1,Q-=2,z-=1),k+=O*u+2*R-Q;let F=(k+z)*2,H=new Float64Array(F*3),W=n?new Float32Array(F*3):void 0,Z=P?new Uint8Array(F):void 0,Y=o.st?new Float32Array(F*2):void 0,$=i===hn.TOP;P&&!$&&(v=i===hn.ALL?1:0,Z=Z.fill(v));let X=0,he=0,ge=0,fe=0,ye=u*R,xe;for(f=0;f<ye;f+=u)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);if(w){let it=T?ye+1:ye;for(xe=it*3,f=0;f<2;f++)H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=ye-u;f<ye;f++)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);for(f=ye-1;f>0;f-=u)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);if(T){let it=ye;for(xe=it*3,f=0;f<2;f++)H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=u-1;f>=0;f--)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);let ve=tit(H,o,a);o.st&&(ve.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:Y})),n&&(ve.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:W})),P&&(ve.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:Z}));let Te=Oe.createTypedArray(F,k*6),ke,Ge,Ke,tt;g=H.length/3;let en=0;for(f=0;f<g-1;f+=2){ke=f,tt=(ke+2)%g;let it=d.fromArray(H,ke*3,fK),nn=d.fromArray(H,tt*3,Wpe);d.equalsEpsilon(it,nn,D.EPSILON10)||(Ge=(ke+1)%g,Ke=(Ge+2)%g,Te[en++]=ke,Te[en++]=Ge,Te[en++]=tt,Te[en++]=tt,Te[en++]=Ge,Te[en++]=Ke)}return ve.indices=Te,ve=Vn.combineInstances([new Pt({geometry:h}),new Pt({geometry:ve})]),ve[0]}var iit=[new d,new d,new d,new d],Ype=new Ae,oit=new Ae;function hK(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=Zs.computeOptions(e,t,n,0,Vpe,Ype),s=r.height,a=r.width,c=iit;return Zs.computePosition(r,i,!1,0,0,c[0]),Zs.computePosition(r,i,!1,0,a-1,c[1]),Zs.computePosition(r,i,!1,s-1,0,c[2]),Zs.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function mA(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=ae.clone(t),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}mA.packedLength=ae.packedLength+te.packedLength+Pe.packedLength+7;mA.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var qpe=new ae,Kpe=te.clone(te.UNIT_SPHERE),ky={rectangle:qpe,ellipsoid:Kpe,vertexFormat:dK,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};mA.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,qpe);t+=ae.packedLength;let o=te.unpack(e,t,Kpe);t+=te.packedLength;let r=Pe.unpack(e,t,dK);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,A=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=A===-1?void 0:A,n):(ky.granularity=s,ky.height=a,ky.rotation=c,ky.stRotation=u,ky.extrudedHeight=f,ky.shadowVolume=h,ky.offsetAttribute=A===-1?void 0:A,new mA(ky))};mA.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.ellipsoid??te.default,r=e.rotation??0;return hK(n,i,r,o,t)};var rit=new J,Qpe=new Le,sit=new Ae;mA.createGeometry=function(e){if(D.equalsEpsilon(e._rectangle.north,e._rectangle.south,D.EPSILON10)||D.equalsEpsilon(e._rectangle.east,e._rectangle.west,D.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=Zs.computeOptions(t,e._granularity,i,o,Vpe,Ype,oit),a=rit;if(o!==0||i!==0){let g=ae.center(t,sit),m=n.geodeticSurfaceNormalCartographic(g,fK);Le.fromAxisAngle(m,-o,Qpe),J.fromQuaternion(Qpe,a)}else J.clone(J.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!D.equalsEpsilon(c,u,0,D.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,A;if(t=e._rectangle,f){h=nit(e,s);let g=le.fromRectangle3D(t,n,c,$nt),m=le.fromRectangle3D(t,n,u,Znt);A=le.union(g,m)}else{if(h=jpe(e,s),h.attributes.position.values=Ii.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}A=le.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ht({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:A,offsetAttribute:e._offsetAttribute})};mA.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new mA({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};var kpe=new ae,ait=[new U,new U,new U],cit=new Gi,lit=new Ae;function uit(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,kpe),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=hK(t,n,o,i,kpe),s=ait;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Gi.fromRotation(e._stRotation,cit),u=ae.center(a,lit);for(let m=0;m<3;++m){let _=s[m];_.x-=u.longitude,_.y-=u.latitude,Gi.multiplyByVector(c,_,_),_.x+=u.longitude,_.y+=u.latitude,_.x=(_.x-a.west)/a.width,_.y=(_.y-a.south)/a.height}let f=s[0],h=s[1],A=s[2],g=new Array(6);return U.pack(f,g),U.pack(h,g,2),U.pack(A,g,4),g}Object.defineProperties(mA.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=hK(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=uit(this)),this._textureCoordinateRotationPoints}}});var eI=mA;var Xpe=new G,Jpe=d.ZERO,Zpe=new d,$pe=new ae,fit=new ae,dit=new Ae;function hit(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function em(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new hit(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(em.prototype=Object.create(ti.prototype),em.prototype.constructor=em);em.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Xpe)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Jpe,Zpe))),new Pt({id:t,geometry:new eI(this._options),attributes:i})};em.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Xpe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Jpe,Zpe))),new Pt({id:t,geometry:new w0(this._options),attributes:r})};em.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.rectangle.coordinates,e,fit);if(!l(n))return;let i=ae.center(n,dit);return Ae.toCartesian(i,te.default,t)};em.prototype._isHidden=function(e,t){return!l(t.coordinates)||yi.prototype._isHidden.call(this,e,t)};em.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.rotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};em.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),o=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),r=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(je.MINIMUM_VALUE,a.rectangle),a.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),a.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),a.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),a.offsetAttribute=ti.computeGeometryOffsetAttribute(i,o,r,s),a.height=ti.getGeometryHeight(i,o),r=ti.getGeometryExtrudedHeight(r,s),r===ti.CLAMP_TO_GROUND&&(r=Ti.getMinimumMaximumHeights(eI.computeRectangle(a,$pe)).minimumTerrainHeight),a.extrudedHeight=r};em.DynamicGeometryUpdater=xS;function xS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(xS.prototype=Object.create(_i.prototype),xS.prototype.constructor=xS);xS.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||_i.prototype._isHidden.call(this,e,t,n)};xS.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=j.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(eI.computeRectangle(i,$pe)).minimumTerrainHeight),i.extrudedHeight=s};var cF=em;var ege={};function mit(e,t){return D.equalsEpsilon(e.latitude,t.latitude,D.EPSILON10)&&D.equalsEpsilon(e.longitude,t.longitude,D.EPSILON10)}var Ait=new Ae,pit=new Ae;function git(e,t,n,i){t=Mo(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,Ait);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let A=c[0],g=u[0],m=A===g,_=1;for(let y=1;y<o;++y){let C=t[y],E=e.cartesianToCartographic(C,pit);s&&(E.height=n[y]),m=m&&E.height===0,mit(h,E)?h.height<E.height&&(c[_-1]=E.height):(a[_]=C,c[_]=E.height,r?u[_]=i[y]:u[_]=0,m=m&&c[_]===u[_],Ae.clone(E,h),++_)}if(!(m||_<2))return a.length=_,c.length=_,u.length=_,{positions:a,topHeights:c,bottomHeights:u}}var _it=new Array(2),yit=new Array(2),Cit={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};ege.computePositions=function(e,t,n,i,o,r){let s=git(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=D.chordLength(o,e.maximumRadius),A=Cit;if(A.minDistance=h,A.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Wi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let _=_it,y=yit;A.positions=_,A.height=y;let C=0;for(m=0;m<a-1;m++){_[0]=t[m],_[1]=t[m+1],y[0]=n[m],y[1]=n[m+1];let E=Wi.generateArc(A);u.set(E,C),y[0]=i[m],y[1]=i[m+1],f.set(Wi.generateArc(A),C),C+=E.length}}else A.positions=t,A.height=n,u=new Float64Array(Wi.generateArc(A)),A.height=i,f=new Float64Array(Wi.generateArc(A));return{bottomPositions:f,topPositions:u,numCorners:c}};var tI=ege;var mK=new d,n8=new d,Eit=new d,tge=new d,Iit=new d,xit=new d,bit=new d;function nI(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??Pe.DEFAULT,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Pe.clone(o),this._granularity=r,this._ellipsoid=te.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+te.packedLength+Pe.packedLength+1}nI.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._granularity,t};var nge=te.clone(te.UNIT_SPHERE),ige=new Pe,lF={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:nge,vertexFormat:ige,granularity:void 0};nI.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,nge);t+=te.packedLength;let u=Pe.unpack(e,t,ige);t+=Pe.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._vertexFormat=Pe.clone(u,n._vertexFormat),n._granularity=f,n):(lF.positions=r,lF.minimumHeights=s,lF.maximumHeights=a,lF.granularity=f,new nI(lF))};nI.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new nI(c)};nI.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=tI.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,A=h*2,g=o.position?new Float64Array(A):void 0,m=o.normal?new Float32Array(A):void 0,_=o.tangent?new Float32Array(A):void 0,y=o.bitangent?new Float32Array(A):void 0,C=o.st?new Float32Array(A/3*2):void 0,E=0,I=0,b=0,S=0,B=0,v=bit,P=xit,M=Iit,L=!0;h/=3;let p,x=0,T=1/(h-f-1);for(p=0;p<h;++p){let Q=p*3,z=d.fromArray(u,Q,mK),F=d.fromArray(c,Q,n8);if(o.position&&(g[E++]=F.x,g[E++]=F.y,g[E++]=F.z,g[E++]=z.x,g[E++]=z.y,g[E++]=z.z),o.st&&(C[B++]=x,C[B++]=0,C[B++]=x,C[B++]=1),o.normal||o.tangent||o.bitangent){let H=d.clone(d.ZERO,tge),W=d.subtract(z,s.geodeticSurfaceNormal(z,n8),n8);if(p+1<h&&(H=d.fromArray(u,Q+3,tge)),L){let Z=d.subtract(H,z,Eit),Y=d.subtract(W,z,mK);v=d.normalize(d.cross(Y,Z,v),v),L=!1}d.equalsEpsilon(z,H,D.EPSILON10)?L=!0:(x+=T,o.tangent&&(P=d.normalize(d.subtract(H,z,P),P)),o.bitangent&&(M=d.normalize(d.cross(v,P,M),M))),o.normal&&(m[I++]=v.x,m[I++]=v.y,m[I++]=v.z,m[I++]=v.x,m[I++]=v.y,m[I++]=v.z),o.tangent&&(_[S++]=P.x,_[S++]=P.y,_[S++]=P.z,_[S++]=P.x,_[S++]=P.y,_[S++]=P.z),o.bitangent&&(y[b++]=M.x,y[b++]=M.y,y[b++]=M.z,y[b++]=M.x,y[b++]=M.y,y[b++]=M.z)}}let w=new yn;o.position&&(w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),o.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:y})),o.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C}));let R=A/3;A-=6*(f+1);let O=Oe.createTypedArray(R,A),k=0;for(p=0;p<R-2;p+=2){let Q=p,z=p+2,F=d.fromArray(g,Q*3,mK),H=d.fromArray(g,z*3,n8);if(d.equalsEpsilon(F,H,D.EPSILON10))continue;let W=p+1,Z=p+3;O[k++]=W,O[k++]=Q,O[k++]=Z,O[k++]=Z,O[k++]=Q,O[k++]=z}return new ht({attributes:w,indices:O,primitiveType:Me.TRIANGLES,boundingSphere:new le.fromVertices(g)})};var uF=nI;var oge=new d,rge=new d;function iI(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=te.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+te.packedLength+1}iI.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n]=e._granularity,t};var sge=te.clone(te.UNIT_SPHERE),fF={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:sge,granularity:void 0};iI.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,sge);t+=te.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._granularity=u,n):(fF.positions=r,fF.minimumHeights=s,fF.maximumHeights=a,fF.granularity=u,new iI(fF))};iI.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new iI(c)};iI.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=tI.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),A=0;u/=3;let g;for(g=0;g<u;++g){let E=g*3,I=d.fromArray(c,E,oge),b=d.fromArray(a,E,rge);h[A++]=b.x,h[A++]=b.y,h[A++]=b.z,h[A++]=I.x,h[A++]=I.y,h[A++]=I.z}let m=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})}),_=f/3;f=2*_-4+_;let y=Oe.createTypedArray(_,f),C=0;for(g=0;g<_-2;g+=2){let E=g,I=g+2,b=d.fromArray(h,E*3,oge),S=d.fromArray(h,I*3,rge);if(d.equalsEpsilon(b,S,D.EPSILON10))continue;let B=g+1,v=g+3;y[C++]=B,y[C++]=E,y[C++]=B,y[C++]=v,y[C++]=E,y[C++]=I}return y[C++]=_-2,y[C++]=_-1,new ht({attributes:m,indices:y,primitiveType:Me.LINES,boundingSphere:new le.fromVertices(h)})};var dF=iI;var age=new G;function Tit(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function tm(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Tit(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(tm.prototype=Object.create(yi.prototype),tm.prototype.constructor=tm);tm.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,age)),l(c)||(c=G.WHITE),o=$t.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Pt({id:t,geometry:new uF(this._options),attributes:i})};tm.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,age),o=this._distanceDisplayConditionProperty.getValue(e);return new Pt({id:t,geometry:new dF(this._options),attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};tm.prototype._isHidden=function(e,t){return!l(t.positions)||yi.prototype._isHidden.call(this,e,t)};tm.prototype._getIsClosed=function(e){return!1};tm.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.minimumHeights)||!j.isConstant(t.maximumHeights)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.granularity)};tm.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof Xt,s=this._options;s.vertexFormat=r?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(je.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(je.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(je.MINIMUM_VALUE):void 0};tm.DynamicGeometryUpdater=bS;function bS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(bS.prototype=Object.create(_i.prototype),bS.prototype.constructor=bS);bS.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||_i.prototype._isHidden.call(this,e,t,n)};bS.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=j.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=j.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=j.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=j.getValueOrUndefined(t.granularity,n)};var hF=tm;var oI=[DR,RO,xO,WO,YO,XO,eF,aF,cF,hF];function rI(e,t){this.entity=e,this.scene=t;let n=new Array(oI.length),i=new _e,o=new Dr;for(let r=0;r<n.length;r++){let s=new oI[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(rI.prototype._onEntityPropertyChanged,this)}rI.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};rI.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};rI.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};rI.registerUpdater=function(e){oI.includes(e)||oI.push(e)};rI.unregisterUpdater=function(e){if(oI.includes(e)){let t=oI.indexOf(e);oI.splice(t,1)}};var sI=rI;var cge=new G,Sit=new Ut,wit=new Ut,Bit=d.ZERO,Dit=new d;function nm(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(nm.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}nm.prototype.onMaterialChanged=function(){this.invalidated=!0};nm.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};nm.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};nm.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};nm.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Qn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Xt)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let y=u.fillMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,cge);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=$t.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof Xt&&(!u.depthFailMaterialProperty.isConstant||c)){let y=u.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,cge);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=$t.toValue(C,h.depthFailColor))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,wit,Sit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Bit,Dit);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};nm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};nm.prototype.contains=function(e){return this.updaters.contains(e.id)};nm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};nm.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function TS(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}TS.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new nm(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function lge(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}TS.prototype.remove=function(e){lge(this._solidItems,e)||lge(this._translucentItems,e)};function uge(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function i8(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}TS.prototype.update=function(e){let t=i8(this,this._solidItems,e,!0);t=i8(this,this._translucentItems,e,t)&&t;let n=uge(this,this._solidItems,e),i=uge(this,this._translucentItems,e);return(n||i)&&(t=i8(this,this._solidItems,e,t)&&t,t=i8(this,this._translucentItems,e,t)&&t),t};function fge(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return mt.FAILED}TS.prototype.getBoundingSphere=function(e,t){let n=fge(this._solidItems,e,t);return n===mt.FAILED?fge(this._translucentItems,e,t):n};function dge(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}TS.prototype.removeAllPrimitives=function(){dge(this._solidItems),dge(this._translucentItems)};var Pd=TS;var vit=new Ut,Pit=new Ut,Rit=d.ZERO,Mit=new d;function im(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(im.prototype.onMaterialChanged,this),this.subscriptions=new vt,this.showsUpdated=new vt}im.prototype.onMaterialChanged=function(){this.invalidated=!0};im.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};im.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty)||!j.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};im.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Nit=new G;im.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=ur.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Qn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Xt)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof Xt&&!c.depthFailMaterialProperty.isConstant){let y=c.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Nit);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=$t.toValue(C,h.depthFailColor))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Pit,vit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=c.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Rit,Mit);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};im.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};im.prototype.contains=function(e){return this.updaters.contains(e.id)};im.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};im.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function SS(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}SS.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new im(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};SS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};SS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};SS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};SS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var Rd=SS;function o8(e,t,n=0,i=e.length-1,o=Lit){for(;i>n;){if(i-n>600){let c=i-n+1,u=t-n+1,f=Math.log(c),h=.5*Math.exp(2*f/3),A=.5*Math.sqrt(f*h*(c-h)/c)*(u-c/2<0?-1:1),g=Math.max(n,Math.floor(t-u*h/c+A)),m=Math.min(i,Math.floor(t+(c-u)*h/c+A));o8(e,t,g,m,o)}let r=e[t],s=n,a=i;for(mF(e,n,t),o(e[i],r)>0&&mF(e,n,i);s<a;){for(mF(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?mF(e,n,a):(a++,mF(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function mF(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Lit(e,t){return e<t?-1:e>t?1:0}var gF=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!s8(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;s8(t,c)&&(n.leaf?i.push(a):pK(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!s8(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(s8(t,s)){if(n.leaf||pK(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=BS([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,u;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),u=!0),i.leaf){let f=Oit(t,i.children,n);if(f!==-1)return i.children.splice(f,1),r.push(i),this._condense(r),this}!u&&!i.leaf&&pK(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],u=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=BS(t.slice(n,i+1)),wS(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=BS([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),u=c*Math.ceil(Math.sqrt(s));hge(t,n,i,u,this.compareMinX);for(let f=n;f<=i;f+=u){let h=Math.min(f+u-1,i);hge(t,f,h,c,this.compareMinY);for(let A=f;A<=h;A+=c){let g=Math.min(A+c-1,h);a.children.push(this._build(t,A,g,o-1))}}return wS(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let u=n.children[c],f=AK(u),h=kit(t,u)-f;h<s?(s=h,r=f<r?f:r,a=u):h===s&&f<r&&(r=f,a=u)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),pF(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=BS(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,wS(i,this.toBBox),wS(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=BS([t,n]),this.data.height=t.height+1,this.data.leaf=!1,wS(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=AF(t,0,a,this.toBBox),u=AF(t,a,i,this.toBBox),f=Uit(c,u),h=AK(c)+AK(u);f<r?(r=f,o=a,s=h<s?h:s):f===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:Fit,r=t.leaf?this.compareMinY:Qit,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=AF(t,0,n,r),a=AF(t,i-n,i,r),c=r8(s)+r8(a);for(let u=n;u<i-n;u++){let f=t.children[u];pF(s,t.leaf?r(f):f),c+=r8(s)}for(let u=i-n-1;u>=n;u--){let f=t.children[u];pF(a,t.leaf?r(f):f),c+=r8(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)pF(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():wS(t[n],this.toBBox)}};function Oit(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function wS(e,t){AF(e,0,e.children.length,t,e)}function AF(e,t,n,i,o){o||(o=BS(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];pF(o,e.leaf?i(s):s)}return o}function pF(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function Fit(e,t){return e.minX-t.minX}function Qit(e,t){return e.minY-t.minY}function AK(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function r8(e){return e.maxX-e.minX+(e.maxY-e.minY)}function kit(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Uit(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function pK(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function s8(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function BS(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function hge(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;o8(e,s,t,n,o),r.push(t,s,s,n)}}function a8(){this._tree=new gF}function aI(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}aI.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};a8.prototype.insert=function(e,t){let n=aI.fromRectangleAndId(e,t,new aI);this._tree.insert(n)};function Git(e,t){return e.id===t.id}var zit=new aI;a8.prototype.remove=function(e,t){let n=aI.fromRectangleAndId(e,t,zit);this._tree.remove(n,Git)};var Vit=new aI;a8.prototype.collides=function(e){let t=aI.fromRectangleAndId("",e,Vit);return this._tree.collides(t)};var cI=a8;var Hit=new G,Wit=new Ut,jit=new Ut;function Mg(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new cI}Mg.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Mg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Mg.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Mg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new fl({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let _=u.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,Hit);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=$t.toValue(y,h.color))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,jit,Wit);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Mg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Mg.prototype.contains=function(e){return this.updaters.contains(e.id)};Mg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),mt.DONE):mt.FAILED};Mg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function DS(e,t){this._batches=[],this._primitives=e,this._classificationType=t}DS.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=j.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Mg(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};DS.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};DS.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};DS.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};DS.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var vS=DS;var Yit=new Ut,qit=new Ut;function AA(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new cI}AA.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};AA.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Xt&&t instanceof Xt?!0:l(t)&&t.equals(n)};AA.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};AA.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};AA.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=ur.getValue(e,this.materialProperty,this.material),n=new fl({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,qit,Yit);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};AA.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};AA.prototype.contains=function(e){return this.updaters.contains(e.id)};AA.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};AA.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function PS(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}PS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=Gu.shouldUseSphericalCoordinates(o.geometry.rectangle),s=j.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new AA(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};PS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};PS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};PS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};PS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var _F=PS;var Kit=new G,Xit=new Ut,Jit=new Ut,Zit=d.ZERO,$it=new d;function Ng(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.itemsToRemove=[],this.subscriptions=new vt,this.showsUpdated=new vt}Ng.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Ng.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Ng.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Qn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new gn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let y=u.outlineColorProperty,C=j.getValueOrDefault(y,e,G.WHITE,Kit);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=$t.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let A=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Jit,Xit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Zit,$it);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Ng.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Ng.prototype.contains=function(e){return this.updaters.contains(e.id)};Ng.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ng.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function RS(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new vt,this._translucentBatches=new vt}RS.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Ng(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Ng(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};RS.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};RS.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};RS.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return mt.FAILED};RS.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var MS=RS;var eot=[];function Eu(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new vt,this._removedObjects=new vt,this._changedObjects=new vt;let o=Bn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=fr.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new MS(n,e,s,!1),this._outlineBatches[o+s]=new MS(n,e,s,!0),this._closedColorBatches[s]=new Pd(n,gn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new Pd(n,gn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new Rd(n,Eo,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new Rd(n,Eo,void 0,!0,s,!1),this._openColorBatches[s]=new Pd(n,gn,void 0,!1,s,!0),this._openColorBatches[o+s]=new Pd(n,gn,void 0,!1,s,!1),this._openMaterialBatches[s]=new Rd(n,Eo,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new Rd(n,Eo,void 0,!1,s,!1);let a=Jn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new _F(i,s,Eo)),c[s]=new vS(i,s);else for(s=0;s<a;++s)c[s]=new vS(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new K0(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new vt,this._updaterSets=new vt,this._entityCollection=t,t.collectionChanged.addEventListener(Eu.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,eot)}Eu.registerUpdater=function(e){sI.registerUpdater(e)};Eu.unregisterUpdater=function(e){sI.unregisterUpdater(e)};Eu.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(_){h._removeUpdater(_),h._insertUpdaterIntoBatch(e,_)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new sI(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(_){h._insertUpdaterIntoBatch(e,_)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(Eu._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let A=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)A=g[a].update(e)&&A;return A};var tot=[],not=new le;Eu.prototype.getBoundingSphere=function(e,t){let n=tot,i=not,o=0,r=mt.DONE,s=this._batches,a=s.length,c=e.id,u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let A=0;A<a;A++){if(r=s[A].getBoundingSphere(h,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};Eu.prototype.isDestroyed=function(){return!1};Eu.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Eu.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};Eu.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};Eu.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Bn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof Xt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof Xt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof Xt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};Eu._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Eu.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var yF=Eu;var iot=1,oot="30px sans-serif",rot=nr.FILL,sot=G.WHITE,aot=G.BLACK,cot=1,lot=!1,uot=new G(.165,.165,.165,.8),fot=new U(7,5),dot=U.ZERO,hot=d.ZERO,mot=Ze.NONE,Aot=Ri.CENTER,pot=zn.CENTER,got=new d,_ot=new G,yot=new G,Cot=new G,Eot=new U,Iot=new d,xot=new U,bot=new jt,Tot=new jt,Sot=new jt,wot=new Ut;function mge(e){this.entity=e,this.label=void 0,this.index=void 0}function Uy(e,t){t.collectionChanged.addEventListener(Uy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Uy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,got),c=j.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){gK(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let A=!1,g=j.getValueOrDefault(a._heightReference,e,mot);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,A=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=j.getValueOrDefault(a._scale,e,iot),u.font=j.getValueOrDefault(a._font,e,oot),u.style=j.getValueOrDefault(a._style,e,rot),u.fillColor=j.getValueOrDefault(a._fillColor,e,sot,_ot),u.outlineColor=j.getValueOrDefault(a._outlineColor,e,aot,yot),u.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,cot),u.showBackground=j.getValueOrDefault(a._showBackground,e,lot),u.backgroundColor=j.getValueOrDefault(a._backgroundColor,e,uot,Cot),u.backgroundPadding=j.getValueOrDefault(a._backgroundPadding,e,fot,Eot),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,dot,xot),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,hot,Iot),u.heightReference=g,u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,Aot),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,pot),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,bot),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,Tot),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,Sot),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,wot),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),A&&u._updateClamping()}return!0};Uy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return mt.FAILED;let i=n.label;return t.center=d.clone(i._clampedPosition??i.position,t.center),t.radius=0,mt.DONE};Uy.prototype.isDestroyed=function(){return!1};Uy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Uy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};Uy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new mge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new mge(r)):(gK(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],gK(s.get(r.id),r,a),s.remove(r.id)};function gK(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var CF=Uy;var Bot=1,Dot=!0,vot=0,Pot=!0,Rot=!0,Mot=Bn.ENABLED,Not=Ze.NONE,Lot=G.RED,Oot=0,Fot=G.WHITE,Qot=Qc.HIGHLIGHT,kot=.5,Uot=new U(1,1),Age={maximumPositionEpsilon:Number.POSITIVE_INFINITY},Got=new N,zot=new N,pge=new G,gge=new Array(4),Vot=new d;function Gy(e,t){t.collectionChanged.addEventListener(Gy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new vt,this._onCollectionChanged(t,t.values,[],[])}async function Hot(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Fh.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}Gy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,Got),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u?.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...Age}},n[s.id]=u;let m=j.getValueOrDefault(a._incrementallyLoadTextures,e,Pot),_=j.getValueOrDefault(a._environmentMapOptions,e,Age,u.environmentMapOptionsScratch);Hot(this,s,c,m,_)}let A=u.modelPrimitive;if(!l(A))continue;A.show=!0,A.scale=j.getValueOrDefault(a._scale,e,Bot),A.enableVerticalExaggeration=j.getValueOrDefault(a._enableVerticalExaggeration,e,Dot),A.minimumPixelSize=j.getValueOrDefault(a._minimumPixelSize,e,vot),A.maximumScale=j.getValueOrUndefined(a._maximumScale,e),A.modelMatrix=N.clone(h,A.modelMatrix),A.shadows=j.getValueOrDefault(a._shadows,e,Mot),A.heightReference=j.getValueOrDefault(a._heightReference,e,Not),A.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e),A.silhouetteColor=j.getValueOrDefault(a._silhouetteColor,e,Lot,pge),A.silhouetteSize=j.getValueOrDefault(a._silhouetteSize,e,Oot),A.color=j.getValueOrDefault(a._color,e,Fot,pge),A.colorBlendMode=j.getValueOrDefault(a._colorBlendMode,e,Qot),A.colorBlendAmount=j.getValueOrDefault(a._colorBlendAmount,e,kot),A.clippingPlanes=j.getValueOrUndefined(a._clippingPlanes,e),A.clampAnimations=j.getValueOrDefault(a._clampAnimations,e,Rot),A.imageBasedLighting.imageBasedLightingFactor=j.getValueOrDefault(a._imageBasedLightingFactor,e,Uot);let g=j.getValueOrUndefined(a._lightColor,e);if(l(g)&&(G.pack(g,gge,0),g=d.unpack(gge,0,Vot)),A.lightColor=g,A.customShader=j.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,A.ready){let m=j.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?A.activeAnimations.addAll({loop:cu.REPEAT}):A.activeAnimations.removeAll(),u.animationsRunning=m);let _=j.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(_)){let E=Object.keys(_);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=_[S];if(!l(B))continue;let v=A.getNode(S);if(!l(v))continue;let P=N.fromTranslationRotationScale(B,zot);v.matrix=N.multiply(v.originalMatrix,P,P)}}let y=!1,C=j.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(C)){let E=Object.keys(C);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=C[S];l(B)&&(y=!0,A.setArticulationStage(S,B))}}y&&A.applyArticulations()}}return!0};Gy.prototype.isDestroyed=function(){return!1};Gy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Gy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)_K(this,e[i],t,n);return ue(this)};var c8=new d,Wot=new Ae;Gy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return mt.FAILED;if(n.loadFailed)return mt.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return mt.PENDING;if(!i.ready||!n.modelUpdated)return mt.PENDING;let o=this._scene,r=o.ellipsoid??te.default;if(i.heightReference!==Ze.NONE){let a=i.modelMatrix;c8.x=a[12],c8.y=a[13],c8.z=a[14];let c=r.cartesianToCartographic(c8,Wot),u=o.getHeight(c,i.heightReference);return l(u)&&(Wf(i.heightReference)?c.height=u:c.height+=u),le.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),mt.DONE}return le.clone(i.boundingSphere,t),mt.DONE};Gy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(jot(r,a),s.set(r.id,r)):(_K(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],_K(this,r,a,c),s.remove(r.id)};function _K(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function jot(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var EF=Gy;function zy(e){this._definitionChanged=new _e,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(zy.prototype,{isConstant:{get:function(){return j.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:$i.FIXED}}});var Yot=new K;zy.prototype.getValue=function(e,t){return l(e)||(e=K.now(Yot)),this.getValueInReferenceFrame(e,$i.FIXED,t)};zy.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};zy.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?te.default.scaleToGeodeticSurface(n,n):void 0};zy.prototype.equals=function(e){return this===e||e instanceof zy&&this._value===e._value};zy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var pA=zy;var qot=60,Kot=1,yge=new Pn,yK=new Pn,CK=new Pn;function _ge(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Xot(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||K.lessThanOrEquals(o,t)||K.greaterThanOrEquals(o,n),A=0,g=i.length,m=i[A],_=n,y=!1,C,E,I;for(;A<g;){if(!h&&K.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),K.greaterThan(m,t)&&K.lessThan(m,_)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),A<g-1){if(s>0&&!y){let b=i[A+1],S=K.secondsDifference(b,m);y=S>s,y&&(C=Math.ceil(S/s),E=0,I=S/Math.max(C,2),C=Math.max(C-1,1))}if(y&&E<C){m=K.addSeconds(m,I,new K),E++;continue}}y=!1,A++,m=i[A]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function Jot(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!A&&K.greaterThanOrEquals(h,i)&&(A=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,r*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function Zot(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=Math.max(r,60),g=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!g&&K.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,A*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function $ot(e,t,n,i,o,r,s,a){CK.start=t,CK.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Pn.intersect(h,CK,yge).isEmpty){let A=h.start;h.isStartIncluded||(h.isStopIncluded?A=h.stop:A=K.addSeconds(h.start,K.secondsDifference(h.stop,h.start)/2,new K));let g=e.getValueInReferenceFrame(A,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function ert(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function trt(e,t,n,i,o,r,s,a){yK.start=t,yK.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Pn.intersect(h,yK,yge).isEmpty){let A=h.start,g=h.stop,m=t;K.greaterThan(A,m)&&(m=A);let _=n;K.lessThan(g,_)&&(_=g),c=Cge(h.data,m,_,i,o,r,c,a)}}return c}function Cge(e,t,n,i,o,r,s,a){for(;e instanceof Sg;)e=e.resolvedProperty;if(e instanceof qa){let c=e._property._times;s=Xot(e,t,n,c,i,o,r,s,a)}else e instanceof vR?s=Jot(e,t,n,i,o,r,s,a):e instanceof ja?s=trt(e,t,n,i,o,r,s,a):e instanceof wg?s=$ot(e,t,n,i,o,r,s,a):e instanceof hl||e instanceof pA&&j.isConstant(e)?s=ert(e,t,n,i,o,r,s,a):s=Zot(e,t,n,i,o,r,s,a);return s}function Ege(e,t,n,i,o,r,s){l(s)||(s=[]);let a=Cge(e,t,n,i,o,r,0,s);return s.length=a,s}var nrt=new J;function IF(e,t){this._unusedIndexes=[],this._polylineCollection=new Uh,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}IF.prototype.update=function(e){if(this._referenceFrame===$i.INERTIAL){let t=kt.computeIcrfToCentralBodyFixedMatrix(e,nrt);N.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};IF.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=j.getValueOrUndefined(i._leadTime,e),A=j.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),_=l(h),y=l(A);if(u=m||_&&y,u){if(y&&(r=K.addSeconds(e,-A,new K)),_&&(s=K.addSeconds(e,h,new K)),m){let C=g.start,E=g.stop;(!y||K.greaterThan(C,r))&&(r=C),(!_||K.lessThan(E,s))&&(s=E)}u=K.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=j.getValueOrDefault(i._resolution,e,qot);c.show=!0,c.positions=Ege(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=ur.getValue(e,i._material,c.material),c.width=j.getValueOrDefault(i._width,e,Kot),c.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};IF.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};IF.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function Vy(e,t){t.collectionChanged.addEventListener(Vy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Vy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=$i.FIXED;this._scene.mode===ie.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new IF(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};Vy.prototype.isDestroyed=function(){return!1};Vy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Vy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};Vy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new _ge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new _ge(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};Vy._subSample=Ege;var xF=Vy;var Ige=G.WHITE,xge=G.BLACK,bge=0,Tge=1,Sge=0,wge=br.NONE,Bge=new G,irt=new d,Dge=new G,vge=new jt,Pge=new jt,Rge=new Ut;function Mge(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function Hy(e,t){t.collectionChanged.addEventListener(Hy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Hy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=j.getValueOrDefault(a._heightReference,e,Ze.NONE),h=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),A;if(h&&(A=j.getValueOrUndefined(s._position,e,irt),h=l(A)),!h){bF(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==Ze.NONE&&!l(u)?(l(c)&&(bF(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,A)&&u.heightReference===f):f===Ze.NONE&&!l(c)&&(l(u)&&(bF(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=A,c.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,vge),c.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,Pge),c.color=j.getValueOrDefault(a._color,e,Ige,Bge),c.outlineColor=j.getValueOrDefault(a._outlineColor,e,xge,Dge),c.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,bge),c.pixelSize=j.getValueOrDefault(a._pixelSize,e,Tge),c.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,Rge),c.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,Sge),c.splitDirection=j.getValueOrDefault(a._splitDirection,e,wge);else if(l(u)){u.show=!0,u.position=A,u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,vge),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,Pge),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,Rge),u.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,Sge),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,wge),u.heightReference=f;let _=j.getValueOrDefault(a._color,e,Ige,Bge),y=j.getValueOrDefault(a._outlineColor,e,xge,Dge),C=Math.round(j.getValueOrDefault(a._outlineWidth,e,bge)),E=Math.max(1,Math.round(j.getValueOrDefault(a._pixelSize,e,Tge)));if(C>0?(u.scale=1,g=g||C!==r.outlineWidth||E!==r.pixelSize||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)):(u.scale=E/50,E=50,g=g||C!==r.outlineWidth||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)),g){r.color=G.clone(_,r.color),r.outlineColor=G.clone(y,r.outlineColor),r.pixelSize=E,r.outlineWidth=C;let I=_.alpha,b=_.toCssColorString(),S=y.toCssColorString(),B=JSON.stringify([b,E,S,C]);u.setImage(B,_0(I,b,S,C,E))}m&&u._updateClamping()}}return!0};Hy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return mt.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};Hy.prototype.isDestroyed=function(){return!1};Hy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Hy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};Hy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new Mge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Mge(r)):(bF(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],bF(s.get(r.id),r,a),s.remove(r.id)};function bF(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var TF=Hy;var Qge=[];function ort(e,t,n,i,o){let r=Qge;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,A=i.green,g=i.blue,m=i.alpha;if(G.equals(n,i)){for(s=0;s<o;s++)r[s]=G.clone(n);return r}let _=(h-a)/o,y=(A-c)/o,C=(g-u)/o,E=(m-f)/o;for(s=0;s<o;s++)r[s]=new G(a+s*_,c+s*y,u+s*C,f+s*E);return r}function SF(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._arcType=e.arcType??cn.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*G.packedLength:1,this.packedLength=r+te.packedLength+Pe.packedLength+4}SF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var kge=te.clone(te.UNIT_SPHERE),Uge=new Pe,lI={positions:void 0,colors:void 0,ellipsoid:kge,vertexFormat:Uge,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};SF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t,kge);t+=te.packedLength;let c=Pe.unpack(e,t,Uge);t+=Pe.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],A=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=A,n):(lI.positions=r,lI.colors=s,lI.width=u,lI.colorsPerVertex=f,lI.arcType=h,lI.granularity=A,new SF(lI))};var Nge=new d,Lge=new d,Oge=new d,Fge=new d;SF.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],A=Mo(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let R=0,O=h[0];i=i.filter(function(k,Q){let z=!1;return o?z=Q===O||Q===0&&O===1:z=Q+1===O,z?(R++,O=h[R],!1):!0})}let g=A.length;if(g<2||t<=0)return;if(r===cn.GEODESIC||r===cn.RHUMB){let R,O;r===cn.GEODESIC?(R=D.chordLength(s,a.maximumRadius),O=Wi.numberOfPoints):(R=s,O=Wi.numberOfPointsRhumbLine);let k=Wi.extractHeights(A,a);if(l(i)){let Q=1;for(c=0;c<g-1;++c)Q+=O(A[c],A[c+1],R);let z=new Array(Q),F=0;for(c=0;c<g-1;++c){let H=A[c],W=A[c+1],Z=i[c],Y=O(H,W,R);if(o&&c<Q){let $=i[c+1],X=ort(H,W,Z,$,Y),he=X.length;for(u=0;u<he;++u)z[F++]=X[u]}else for(u=0;u<Y;++u)z[F++]=G.clone(Z)}z[F]=G.clone(i[i.length-1]),i=z,Qge.length=0}r===cn.GEODESIC?A=Wi.generateCartesianArc({positions:A,minDistance:R,ellipsoid:a,height:k}):A=Wi.generateCartesianRhumbArc({positions:A,granularity:R,ellipsoid:a,height:k})}g=A.length;let m=g*4-4,_=new Float64Array(m*3),y=new Float64Array(m*3),C=new Float64Array(m*3),E=new Float32Array(m*2),I=n.st?new Float32Array(m*2):void 0,b=l(i)?new Uint8Array(m*4):void 0,S=0,B=0,v=0,P=0,M;for(u=0;u<g;++u){u===0?(M=Nge,d.subtract(A[0],A[1],M),d.add(A[0],M,M)):M=A[u-1],d.clone(M,Oge),d.clone(A[u],Lge),u===g-1?(M=Nge,d.subtract(A[g-1],A[g-2],M),d.add(A[g-1],M,M)):M=A[u+1],d.clone(M,Fge);let R,O;l(b)&&(u!==0&&!o?R=i[u-1]:R=i[u],u!==g-1&&(O=i[u]));let k=u===0?2:0,Q=u===g-1?2:4;for(f=k;f<Q;++f){d.pack(Lge,_,S),d.pack(Oge,y,S),d.pack(Fge,C,S),S+=3;let z=f-2<0?-1:1;if(E[B++]=2*(f%2)-1,E[B++]=z*t,n.st&&(I[v++]=u/(g-1),I[v++]=Math.max(E[B-2],0)),l(b)){let F=f<2?R:O;b[P++]=G.floatToByte(F.red),b[P++]=G.floatToByte(F.green),b[P++]=G.floatToByte(F.blue),b[P++]=G.floatToByte(F.alpha)}}}let L=new yn;L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:_}),L.prevPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),L.nextPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C}),L.expandAndWidth=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:E}),n.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:I})),l(b)&&(L.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0}));let p=Oe.createTypedArray(m,g*6-6),x=0,T=0,w=g-1;for(u=0;u<w;++u)p[T++]=x,p[T++]=x+2,p[T++]=x+1,p[T++]=x+1,p[T++]=x+2,p[T++]=x+3,x+=4;return new ht({attributes:L,indices:p,primitiveType:Me.TRIANGLES,boundingSphere:le.fromPoints(A),geometryType:jf.POLYLINES})};var Lg=SF;var rrt=new ci(0),l8={},Gge=new G,srt=new Xt(G.WHITE),art=new ci(!0),crt=new ci(Bn.DISABLED),lrt=new ci(new Ut),urt=new ci(Jn.BOTH);function frt(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function drt(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function om(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(om.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new frt,this._groundGeometryOptions=new drt,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=fr.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(om.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});om.prototype.isOutlineVisible=function(e){return!1};om.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};om.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof Xt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Gge)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)),this.clampToGround?new Pt({id:t,geometry:new dE(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof Xt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,Gge)),l(a)||(a=G.WHITE),s.depthFailColor=$t.fromColor(a)),new Pt({id:t,geometry:new Lg(this._geometryOptions),attributes:s}))};om.prototype.createOutlineGeometryInstance=function(e){};om.prototype.isDestroyed=function(){return!1};om.prototype.destroy=function(){this._entitySubscription(),ue(this)};om.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(je.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??srt,u=c instanceof Xt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??art,this._shadowsProperty=o.shadows??crt,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??lrt,this._classificationTypeProperty=o.classificationType??urt,this._fillEnabled=!0,this._zIndex=a??rrt;let f=o.width,h=o.arcType,A=o.clampToGround,g=o.granularity;if(!r.isConstant||!j.isConstant(f)||!j.isConstant(h)||!j.isConstant(g)||!j.isConstant(A)||!j.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,_=r.getValue(je.MINIMUM_VALUE,m.positions);if(!l(_)||_.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let y;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof Xt)?y=Cs.VERTEX_FORMAT:y=ka.VERTEX_FORMAT,m.vertexFormat=y,m.positions=_,m.width=l(f)?f.getValue(je.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(je.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(je.MINIMUM_VALUE):void 0;let C=this._groundGeometryOptions;C.positions=_,C.width=m.width,C.arcType=m.arcType,C.granularity=m.granularity,this._clampToGround=l(A)?A.getValue(je.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&yt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};om.prototype.createDynamicUpdater=function(e,t){return new wF(e,t,this)};var NS={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function wF(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function zge(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=l8[n];!l(i)||i.isDestroyed()?(i=new Uh,l8[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}wF.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=j.getValueOrUndefined(o,e,this._positions);t._clampToGround=j.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=j.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=j.getValueOrDefault(i._arcType,e,cn.GEODESIC),t._groundGeometryOptions.granularity=j.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,A;if(h instanceof Xt)A=new Cs;else{let g=ur.getValue(e,h,this._material);A=new ka({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new hh({geometryInstances:t.createFillGeometryInstance(e),appearance:A,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),j.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=zge(this);if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=cn.GEODESIC;c=j.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==cn.NONE&&l(u)&&(NS.ellipsoid=f,NS.positions=r,NS.granularity=j.getValueOrUndefined(i._granularity,e),NS.height=Wi.extractHeights(r,f),c===cn.GEODESIC?r=Wi.generateCartesianArc(NS):r=Wi.generateCartesianRhumbArc(NS)),a.show=!0,a.positions=r.slice(),a.material=ur.getValue(e,t.fillMaterialProperty,a.material),a.width=j.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};wF.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return le.clone(n.boundingSphere,e),mt.DONE}return l(t)&&!t.ready?mt.PENDING:mt.DONE}else{let t=zge(this);if(t.show&&t.positions.length>0)return le.fromPoints(t.positions,e),mt.DONE}return mt.FAILED};wF.prototype.isDestroyed=function(){return!1};wF.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=l8[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete l8[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var BF=om;var hrt=new G,mrt=new Ut,Art=new Ut;function rm(e,t,n,i,o){let r;n instanceof Xt?r=Cs:r=ka,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(rm.prototype.onMaterialChanged,this),this.subscriptions=new vt,this.showsUpdated=new vt,this.zIndex=i,this._asynchronous=o}rm.prototype.onMaterialChanged=function(){this.invalidated=!0};rm.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Xt&&t instanceof Xt?!0:l(t)&&t.equals(n)};rm.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};rm.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};rm.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new hh({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===ka&&(this.material=ur.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===ka&&(this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let _=c.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,hrt);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=$t.toValue(y,h.color))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Art,mrt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};rm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};rm.prototype.contains=function(e){return this.updaters.contains(e.id)};rm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};rm.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function LS(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}LS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=j.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new rm(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};LS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};LS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};LS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};LS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var DF=LS;var prt=[];function Vge(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function Hge(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof Xt?1:2);let r;l(i)&&(r=i+o*Bn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof Xt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function gA(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new vt,this._removedObjects=new vt,this._changedObjects=new vt;let o,r=Bn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new Pd(n,Cs,void 0,!1,o),this._materialBatches[o]=new Rd(n,ka,void 0,!1,o),this._colorBatches[o+r]=new Pd(n,Cs,Cs,!1,o),this._materialBatches[o+r]=new Rd(n,ka,Cs,!1,o),this._colorBatches[o+r*2]=new Pd(n,Cs,ka,!1,o),this._materialBatches[o+r*2]=new Rd(n,ka,ka,!1,o);this._dynamicBatch=new K0(n,i);let s=Jn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new DF(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new vt,this._updaters=new vt,this._entityCollection=t,t.collectionChanged.addEventListener(gA.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,prt)}gA.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(Vge(this,f),Hge(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),Vge(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new BF(c,this._scene),this._updaters.set(u,f),Hge(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(gA._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,A=this._batches,g=A.length;for(a=0;a<g;a++)h=A[a].update(e)&&h;return h};var grt=[],_rt=new le;gA.prototype.getBoundingSphere=function(e,t){let n=grt,i=_rt,o=0,r=mt.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};gA.prototype.isDestroyed=function(){return!1};gA.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(gA.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};gA._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};gA.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var vF=gA;function Iu(e){fl.initializeTerrainHeights(),hh.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Dr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??Iu.defaultVisualizersCallback;let i=!1,o=new Ql,r=new Ql;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new DO;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var OS=[];Iu.registerVisualizer=function(e){OS.includes(e)||OS.push(e)};Iu.unregisterVisualizer=function(e){if(OS.includes(e)){let t=OS.indexOf(e);OS.splice(t,1)}};Iu.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new SB(t,i),new yF(e,i,n._primitives,n._groundPrimitives),new CF(t,i),new EF(e,i),new mO(e,i),new TF(t,i),new xF(e,i),new vF(e,i,n._primitives,n._groundPrimitives),...OS.map(o=>new o(e,i))]};Object.defineProperties(Iu.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});Iu.prototype.isDestroyed=function(){return!1};Iu.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};Iu.prototype.update=function(e){if(!Ti.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};Iu.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var yrt=[],Crt=new le;Iu.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return mt.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let A=this._dataSourceCollection;for(o=A.length,i=0;i<o;i++){let g=A.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return mt.FAILED;let s=yrt,a=Crt,c=0,u=mt.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let A=f[i];if(l(A.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===mt.PENDING)return mt.PENDING;u===mt.DONE&&(s[c]=le.clone(a,s[c]),c++)}}return c===0?mt.FAILED:(s.length=c,le.fromBoundingSpheres(s,n),mt.DONE)};Iu.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new Ql),s=o.add(new HO);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};Iu.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};Iu.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var PF=Iu;function EK(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}EK.clone=function(e,t){if(l(e))return l(t)||(t=new EK),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Md=EK;var Wge=new J,jge=new J,Yge=new J,Ert=new N,u8=new d,qge=new d,IK=new d,xK=new d,Kge=new d,Xge=new d,Irt=new Le,xrt=new d,brt=new J,FS=new K,Trt=1.25;function Srt(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let A=!1,g=!1,m,_,y;if(f===ie.SCENE3D){K.addSeconds(c,.001,FS);let v=o.getValue(FS,u8);if(l(v)||(K.addSeconds(c,-.001,FS),v=o.getValue(FS,u8),g=!0),l(v)){let P=kt.computeFixedToIcrfMatrix(c,Wge),M=kt.computeFixedToIcrfMatrix(FS,jge),L;!l(P)||!l(M)?(L=kt.computeTemeToPseudoFixedMatrix(c,Yge),P=J.transpose(L,Wge),M=kt.computeTemeToPseudoFixedMatrix(FS,jge),J.transpose(M,M)):L=J.transpose(P,Yge);let p=J.multiplyByVector(P,h,Kge),x=J.multiplyByVector(M,v,Xge);d.subtract(p,x,xK);let T=d.magnitude(xK)*1e3,w=D.GRAVITATIONALPARAMETER,R=-w/(T*T-2*w/d.magnitude(p));R<0||R>Trt*u.maximumRadius?(m=qge,d.normalize(h,m),d.negate(m,m),y=d.clone(d.UNIT_Z,IK),_=d.cross(y,m,u8),d.magnitude(_)>D.EPSILON7&&(d.normalize(m,m),d.normalize(_,_),y=d.cross(m,_,IK),d.normalize(y,y),A=!0)):d.equalsEpsilon(h,v,D.EPSILON7)||(y=qge,d.normalize(p,y),d.normalize(x,x),_=d.cross(y,x,IK),g&&(_=d.multiplyByScalar(_,-1,_)),d.equalsEpsilon(_,d.ZERO,D.EPSILON7)||(m=d.cross(_,y,u8),J.multiplyByVector(L,m,m),J.multiplyByVector(L,_,_),J.multiplyByVector(L,y,y),d.normalize(m,m),d.normalize(_,_),d.normalize(y,y),A=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let C,E,I;i&&(C=d.clone(t.position,xK),E=d.clone(t.direction,Kge),I=d.clone(t.up,Xge));let b=Ert,S;l(s)&&(S=s.getValue(c,Irt));let B=r.getValue(c,xrt);if(a===lp.INERTIAL&&l(S))N.fromTranslationQuaternionRotationScale(h,S,d.ONE,b);else if(a===lp.VELOCITY&&l(B)){let v=kt.rotationMatrixFromPositionVelocity(h,B,u,brt);N.fromRotationTranslation(v,h,b)}else a===lp.ENU||!A?kt.eastNorthUpToFixedFrame(h,u,b):(b[0]=m.x,b[1]=m.y,b[2]=m.z,b[3]=0,b[4]=_.x,b[5]=_.y,b[6]=_.z,b[7]=0,b[8]=y.x,b[9]=y.y,b[10]=y.z,b[11]=0,b[12]=h.x,b[13]=h.y,b[14]=h.z,b[15]=0);t._setTransform(b),i&&(d.clone(C,t.position),d.clone(E,t.direction),d.clone(I,t.up),d.cross(E,I,t.right))}if(n){let A=f===ie.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,A)}}function RF(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??te.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Dg(e.position,!0),this._offset3D=new d}Object.defineProperties(RF,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});RF.defaultOffset3D=new d(-14e3,3500,3500);var f8=new Md,wrt=new d;RF.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ie.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,A=n.camera,g=f||h,m=!0;if(f){let _=r.viewFrom,y=l(_);if(!y&&l(t)){f8.pitch=-D.PI_OVER_FOUR,f8.range=0;let C=a.getValue(e,wrt);if(l(C)){let E=2-1/Math.max(1,d.magnitude(C)/i.maximumRadius);f8.pitch*=E}A.viewBoundingSphere(t,f8),this.boundingSphere=t,g=!1,m=!1}else(!y||!l(_.getValue(e,this._offset3D)))&&d.clone(RF._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ie.SCENE2D&&d.clone(A.position,this._offset3D);this._lastEntity=r,this._mode=o,Srt(this,A,g,m,a,c,u,s,e,i)};var MF=RF;function LF(){this._cache={}}LF.prototype.fromColor=function(e,t){return d8(void 0,void 0,e,t,this._cache)};LF.prototype.fromUrl=function(e,t,n){return d8(e,void 0,t,n,this._cache)};LF.prototype.fromMakiIconId=function(e,t,n){return d8(fn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};LF.prototype.fromText=function(e,t,n){return d8(void 0,e,t,n,this._cache)};var Brt=new G;function Drt(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,Brt).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function Jge(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var NF=new Array(4);function d8(e,t,n,i,o){NF[0]=e,NF[1]=t,NF[2]=n,NF[3]=i;let r=JSON.stringify(NF),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Drt(c,n,i),l(e)){let f=we.createIfNeeded(e).fetchImage().then(function(h){return Jge(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=C0(t,{font:`bold ${i}px sans-serif`});Jge(c,u,i)}return o[r]=a,a}var Og=LF;var e_e=xr($ge(),1);function m8(e){return d.fromDegrees(e[0],e[1],e[2])}var bK={"urn:ogc:def:crs:OGC:1.3:CRS84":m8,"EPSG:4326":m8,"urn:ogc:def:crs:EPSG::4326":m8},t_e={},n_e={},TK=48,SK,wK=G.ROYALBLUE,BK=G.YELLOW,DK=2,vK=G.fromBytes(255,255,0,100),PK=!1,vrt={small:24,medium:48,large:64},Prt=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function i_e(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Prt.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${i_e(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Rrt(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function Mrt(e,t){return new _h(Rrt(i_e,e,t),!0)}function A8(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Xn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new ci(c):n(r,s))}return o}function RK(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var o_e={Feature:s_e,FeatureCollection:Nrt,GeometryCollection:a_e,LineString:d_e,MultiLineString:h_e,MultiPoint:u_e,MultiPolygon:p_e,Point:l_e,Polygon:A_e,Topology:g_e},r_e={GeometryCollection:a_e,LineString:d_e,MultiLineString:h_e,MultiPoint:u_e,MultiPolygon:p_e,Point:l_e,Polygon:A_e,Topology:g_e};function s_e(e,t,n,i,o){if(t.geometry===null){A8(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new ce("feature.geometry is required.");let r=t.geometry.type,s=r_e[r];if(!l(s))throw new ce(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function Nrt(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)s_e(e,r[s],void 0,i,o)}function a_e(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=r_e[u];if(!l(f))throw new ce(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function c_e(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=G.fromCssColorString(g)),a=vrt[c["marker-size"]]??a;let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new Tc;f.verticalOrigin=new ci(zn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=Ze.CLAMP_TO_GROUND);let h=A8(t,e._entityCollection,o.describe);h.billboard=f,h.position=new hl(n(i));let A=Promise.resolve(u).then(function(g){f.image=new ci(g)}).catch(function(){f.image=new ci(e._pinBuilder.fromColor(s,a))});e._promises.push(A)}function l_e(e,t,n,i,o){c_e(e,t,i,n.coordinates,o)}function u_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)c_e(e,t,i,r[s],o)}function f_e(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new ci(f));let h,A=a.stroke;l(A)&&(h=G.fromCssColorString(A));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new Xt(h))}let c=A8(t,e._entityCollection,o.describe),u=new Mc;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new ci(RK(i,n)),u.arcType=cn.RHUMB}function d_e(e,t,n,i,o){f_e(e,t,i,n.coordinates,o)}function h_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)f_e(e,t,i,r[s],o)}function m_e(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new ci(g));let m,_=c.stroke;l(_)&&(m=G.fromCssColorString(_));let y=c["stroke-opacity"];l(y)&&y!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=y),l(m)&&(r=new ci(m));let C,E=c.fill,I=s.color.getValue();l(E)&&(C=G.fromCssColorString(E),C.alpha=I.alpha),y=c["fill-opacity"],l(y)&&y!==I.alpha&&(l(C)||(C=I.clone()),C.alpha=y),l(C)&&(s=new Xt(C))}let u=new ph;u.outline=new ci(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=cn.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new fc(RK(i[g],n)));let h=i[0];u.hierarchy=new ci(new fc(RK(h,n),f)),h[0].length>2?u.perPositionHeight=new ci(!0):o.clampToGround||(u.height=0);let A=A8(t,e._entityCollection,o.describe);A.polygon=u}function A_e(e,t,n,i,o){m_e(e,t,i,n.coordinates,o)}function p_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)m_e(e,t,i,r[s],o)}function g_e(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=e_e.feature(n,n.objects[r]),a=o_e[s.type];a(e,s,s,i,o)}}function Wy(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Ea(this),this._promises=[],this._pinBuilder=new Og,this._entityCluster=new lf,this._credit=void 0,this._resourceCredits=[]}Wy.load=function(e,t){return new Wy().load(e,t)};Object.defineProperties(Wy,{markerSize:{get:function(){return TK},set:function(e){TK=e}},markerSymbol:{get:function(){return SK},set:function(e){SK=e}},markerColor:{get:function(){return wK},set:function(e){wK=e}},stroke:{get:function(){return BK},set:function(e){BK=e}},strokeWidth:{get:function(){return DK},set:function(e){DK=e}},fill:{get:function(){return vK},set:function(e){vK=e}},clampToGround:{get:function(){return PK},set:function(e){PK=e}},crsNames:{get:function(){return bK}},crsLinkHrefs:{get:function(){return t_e}},crsLinkTypes:{get:function(){return n_e}}});Object.defineProperties(Wy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Wy.prototype.load=function(e,t){return __e(this,e,t,!0)};Wy.prototype.process=function(e,t){return __e(this,e,t,!1)};function __e(e,t,n,i){us.setLoading(e,!0),n=n??V.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Bt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:n.describe??Mrt,markerSize:n.markerSize??TK,markerSymbol:n.markerSymbol??SK,markerColor:n.markerColor??wK,strokeWidthProperty:new ci(n.strokeWidth??DK),strokeMaterialProperty:new Xt(n.stroke??BK),fillMaterialProperty:new Xt(n.fill??vK),clampToGround:n.clampToGround??PK},Promise.resolve(r).then(function(a){return Lrt(e,a,n,s,i)}).catch(function(a){throw us.setLoading(e,!1),e._error.raiseEvent(e,a),a})}Wy.prototype.update=function(e){return!0};function Lrt(e,t,n,i,o){let r;l(i)&&(r=xg(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=o_e[t.type];if(!l(s))throw new ce(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?m8:null;if(l(a)){if(!l(a.properties))throw new ce("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=bK[u.name],!l(c))throw new ce(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=t_e[u.href];if(l(f)||(f=n_e[u.type]),!l(f))throw new ce(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=bK[`EPSG:${u.code}`],!l(c))throw new ce(`Unknown crs EPSG code: ${u.code}`)}else throw new ce(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,us.setLoading(e,!1),e})})}var jy=Wy;var Eye=xr(r7(),1);var Iye;typeof DOMParser<"u"&&(Iye=new DOMParser);var qct=new Eye.default({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),L8=32,hye=2414016,mye=1,Aye=16093e3,pye=.1,Kct=[null,void 0,"http://www.topografix.com/GPX/1/1"],zo={gpx:Kct};function Xct(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function s7(e,t){let n=kF(e,"id");return n=l(n)?n:Xn(),t.getOrCreateEntity(n)}function a7(e){let t=gye(e,"lon"),n=gye(e,"lat"),i=FF(e,"ele",zo.gpx);return d.fromDegrees(t,n,i)}function gye(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function kF(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Ky(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function c7(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function FF(e,t,n){let i=Ky(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function xu(e,t,n){let i=Ky(e,t,n);if(l(i))return i.textContent.trim()}function xye(e){let t=new Tc;return t.width=L8,t.height=L8,t.scaleByDistance=new jt(hye,mye,Aye,pye),t.pixelOffsetScaleByDistance=new jt(hye,mye,Aye,pye),t.verticalOrigin=new ci(zn.BOTTOM),t.image=e,t}function Jct(){let e=new Ah;return e.translucencyByDistance=new jt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function bye(e){let t=new Mc;return t.width=4,t.material=new My,t.material.color=l(e)?e:G.RED,t.material.outlineWidth=2,t.material.outlineColor=G.BLACK,t}var _ye={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},QF;typeof document<"u"&&(QF=document.createElement("div"));function l7(e,t){let n,i="",o=Object.keys(_ye),r=o.length;for(n=0;n<r;n++){let f=o[n],h=_ye[f];h.value=xu(e,h.tag,zo.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=qct.link(i),QF.innerHTML=i;let s=QF.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=G.WHITE,c=G.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${QF.innerHTML}</div>`,QF.innerHTML="",u}function Tye(e,t,n,i){let o=a7(t),r=s7(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,L8);r.billboard=xye(s);let a=xu(t,"name",zo.gpx);r.name=a,r.label=Jct(),r.label.text=a,r.description=l7(t,r),i.clampToGround&&(r.billboard.heightReference=Ze.CLAMP_TO_GROUND,r.label.heightReference=Ze.CLAMP_TO_GROUND)}function Zct(e,t,n,i){let o=s7(t,n);o.description=l7(t,o);let r=c7(t,"rtept",zo.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)Tye(e,r[a],n,i),s[a]=a7(r[a]);o.polyline=bye(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function $ct(e,t,n,i){let o=s7(t,n);o.description=l7(t,o);let r=c7(t,"trkseg",zo.gpx),s=[],a=[],c,u=!0,f=new qa;for(let h=0;h<r.length;h++)c=elt(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,L8);o.billboard=xye(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=Ze.CLAMP_TO_GROUND),o.availability=new ls,o.availability.addInterval(new Pn({start:a[0],stop:a[a.length-1]}))}o.polyline=bye(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function elt(e){let t={positions:[],times:[]},n=c7(e,"trkpt",zo.gpx),i;for(let o=0;o<n.length;o++){let r=a7(n[o]);t.positions.push(r),i=xu(n[o],"time",zo.gpx),l(i)&&t.times.push(K.fromIso8601(i))}return t}function tlt(e){let t=Ky(e,"metadata",zo.gpx);if(l(t)){let n={name:xu(t,"name",zo.gpx),desc:xu(t,"desc",zo.gpx),author:nlt(t),copyright:olt(t),link:Sye(t),time:xu(t,"time",zo.gpx),keywords:xu(t,"keywords",zo.gpx),bounds:rlt(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function nlt(e){let t=Ky(e,"author",zo.gpx);if(l(t)){let n={name:xu(t,"name",zo.gpx),email:ilt(t),link:Sye(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function ilt(e){let t=Ky(e,"email",zo.gpx);if(l(t)){let n=xu(t,"id",zo.gpx),i=xu(t,"domain",zo.gpx);return`${n}@${i}`}}function Sye(e){let t=Ky(e,"link",zo.gpx);if(l(t)){let n={href:kF(t,"href"),text:xu(t,"text",zo.gpx),mimeType:xu(t,"type",zo.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function olt(e){let t=Ky(e,"copyright",zo.gpx);if(l(t)){let n={author:kF(t,"author"),year:xu(t,"year",zo.gpx),license:xu(t,"license",zo.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function rlt(e){let t=Ky(e,"bounds",zo.gpx);if(l(t)){let n={minLat:FF(t,"minlat",zo.gpx),maxLat:FF(t,"maxlat",zo.gpx),minLon:FF(t,"minlon",zo.gpx),maxLon:FF(t,"maxlon",zo.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var yye={wpt:Tye,rte:Zct,trk:$ct};function slt(e,t,n,i){let o=Object.keys(yye),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=yye[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let A=u[h];A.localName===a&&zo.gpx.indexOf(A.namespaceURI)!==-1&&c(e,A,n,i)}}}function Cye(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=kF(o,"version"),s=kF(o,"creator"),a,c=tlt(o);l(c)&&(a=c.name),o.localName==="gpx"?slt(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,A=f.stop,g=K.equals(h,je.MINIMUM_VALUE),m=K.equals(A,je.MAXIMUM_VALUE);if(!g||!m){let y;g&&(y=new Date,y.setHours(0,0,0,0),h=K.fromDate(y)),m&&(y=new Date,y.setHours(24,0,0,0),A=K.fromDate(y)),u=new Jh,u.startTime=h,u.stopTime=A,u.currentTime=K.clone(h),u.clockRange=fs.LOOP_STOP,u.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(A,h)/60,1),31556900))}let _=!1;return e._name!==a&&(e._name=a,_=!0),e._creator!==s&&(e._creator=s,_=!0),alt(e._metadata,c)&&(e._metadata=c,_=!0),e._version!==r&&(e._version=r,_=!0),u!==e._clock&&(_=!0,e._clock=u),_&&e._changed.raiseEvent(e),us.setLoading(e,!1),e}function alt(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function clt(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Xct(r).then(function(s){let a,c;try{a=Iye.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new ce(u)}return Cye(e,a,i)}):Cye(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function HS(){this._changed=new _e,this._error=new _e,this._loading=new _e,this._clock=void 0,this._entityCollection=new Ea(this),this._entityCluster=new lf,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new Og}HS.load=function(e,t){return new HS().load(e,t)};Object.defineProperties(HS.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});HS.prototype.update=function(e){return!0};HS.prototype.load=function(e,t){if(!l(e))throw new me("data is required.");t=t??V.EMPTY_OBJECT,us.setLoading(this,!0);let n=this._name,i=this;return clt(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Jh,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=fs.LOOP_STOP,o.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),us.setLoading(i,!1),i}).catch(function(o){return us.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var UF=HS;function llt(e,t){this.position=e,this.headingPitchRoll=t}var GF=llt;var BEe=xr(r7(),1),p2=xr(Ou(),1);function z8(e){return V8(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function V8(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?V8(n):n),[])}var wye=[0,1,2,3].concat(...z8([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Pr(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,A,g,m,_,y=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,y++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),_=r[h*2],o.opt_len+=_*(g+m),s&&(o.static_len+=_*(s[h*2+1]+m)));if(y!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,y-=2}while(y>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)A=o.heap[--f],!(A>e.max_code)&&(r[A*2+1]!=g&&(o.opt_len+=(g-r[A*2+1])*r[A*2],r[A*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Pr._length_code=[0,1,2,3,4,5,6,7].concat(...z8([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Pr.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Pr.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Pr.d_code=function(e){return e<256?wye[e]:wye[256+(e>>>7)]};Pr.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Pr.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Pr.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Pr.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function gc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var ult=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],flt=z8([[144,8],[112,9],[24,7],[8,8]]);gc.static_ltree=V8(ult.map((e,t)=>[e,flt[t]]));var dlt=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],hlt=z8([[30,5]]);gc.static_dtree=V8(dlt.map((e,t)=>[e,hlt[t]]));gc.static_l_desc=new gc(gc.static_ltree,Pr.extra_lbits,257,286,15);gc.static_d_desc=new gc(gc.static_dtree,Pr.extra_dbits,0,30,15);gc.static_bl_desc=new gc(null,Pr.extra_blbits,0,19,7);var mlt=9,Alt=8;function IA(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var Dye=0,U8=1,AI=2,lm=[new IA(0,0,0,0,Dye),new IA(4,4,8,4,U8),new IA(4,5,16,8,U8),new IA(4,6,32,32,U8),new IA(4,4,16,16,AI),new IA(8,16,32,32,AI),new IA(8,16,128,128,AI),new IA(8,32,128,256,AI),new IA(32,128,258,1024,AI),new IA(32,258,258,4096,AI)],O8=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Ld=0,F8=1,zF=2,Q8=3,plt=32,u7=42,k8=113,VF=666,f7=8,glt=0,d7=1,_lt=2,jr=3,G8=258,yf=G8+jr+1;function Bye(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function ylt(){let e=this,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_,y,C,E,I,b,S,B,v,P,M,L,p,x,T,w,R,O,k,Q=new Pr,z=new Pr,F=new Pr;e.depth=[];let H,W,Z,Y,$,X;e.bl_count=[],e.heap=[],R=[],O=[],k=[];function he(){u=2*r,h[g-1]=0;for(let Fe=0;Fe<g-1;Fe++)h[Fe]=0;L=lm[p].max_lazy,T=lm[p].good_length,w=lm[p].nice_length,M=lm[p].max_chain,S=0,C=0,v=0,E=P=jr-1,b=0,A=0}function ge(){let Fe;for(Fe=0;Fe<286;Fe++)R[Fe*2]=0;for(Fe=0;Fe<30;Fe++)O[Fe*2]=0;for(Fe=0;Fe<19;Fe++)k[Fe*2]=0;R[256*2]=1,e.opt_len=e.static_len=0,W=Z=0}function fe(){Q.dyn_tree=R,Q.stat_desc=gc.static_l_desc,z.dyn_tree=O,z.stat_desc=gc.static_d_desc,F.dyn_tree=k,F.stat_desc=gc.static_bl_desc,$=0,X=0,Y=8,ge()}e.pqdownheap=function(Fe,lt){let Xe=e.heap,et=Xe[lt],gt=lt<<1;for(;gt<=e.heap_len&&(gt<e.heap_len&&Bye(Fe,Xe[gt+1],Xe[gt],e.depth)&>++,!Bye(Fe,et,Xe[gt],e.depth));)Xe[lt]=Xe[gt],lt=gt,gt<<=1;Xe[lt]=et};function ye(Fe,lt){let Xe=-1,et,gt=Fe[1],Jt=0,bn=7,ho=4;gt===0&&(bn=138,ho=3),Fe[(lt+1)*2+1]=65535;for(let lo=0;lo<=lt;lo++)et=gt,gt=Fe[(lo+1)*2+1],!(++Jt<bn&&et==gt)&&(Jt<ho?k[et*2]+=Jt:et!==0?(et!=Xe&&k[et*2]++,k[32]++):Jt<=10?k[34]++:k[36]++,Jt=0,Xe=et,gt===0?(bn=138,ho=3):et==gt?(bn=6,ho=3):(bn=7,ho=4))}function xe(){let Fe;for(ye(R,Q.max_code),ye(O,z.max_code),F.build_tree(e),Fe=18;Fe>=3&&k[Pr.bl_order[Fe]*2+1]===0;Fe--);return e.opt_len+=3*(Fe+1)+5+5+4,Fe}function ve(Fe){e.pending_buf[e.pending++]=Fe}function Te(Fe){ve(Fe&255),ve(Fe>>>8&255)}function ke(Fe){ve(Fe>>8&255),ve(Fe&255&255)}function Ge(Fe,lt){let Xe,et=lt;X>16-et?(Xe=Fe,$|=Xe<<X&65535,Te($),$=Xe>>>16-X,X+=et-16):($|=Fe<<X&65535,X+=et)}function Ke(Fe,lt){let Xe=Fe*2;Ge(lt[Xe]&65535,lt[Xe+1]&65535)}function tt(Fe,lt){let Xe,et=-1,gt,Jt=Fe[1],bn=0,ho=7,lo=4;for(Jt===0&&(ho=138,lo=3),Xe=0;Xe<=lt;Xe++)if(gt=Jt,Jt=Fe[(Xe+1)*2+1],!(++bn<ho&>==Jt)){if(bn<lo)do Ke(gt,k);while(--bn!==0);else gt!==0?(gt!=et&&(Ke(gt,k),bn--),Ke(16,k),Ge(bn-3,2)):bn<=10?(Ke(17,k),Ge(bn-3,3)):(Ke(18,k),Ge(bn-11,7));bn=0,et=gt,Jt===0?(ho=138,lo=3):gt==Jt?(ho=6,lo=3):(ho=7,lo=4)}}function en(Fe,lt,Xe){let et;for(Ge(Fe-257,5),Ge(lt-1,5),Ge(Xe-4,4),et=0;et<Xe;et++)Ge(k[Pr.bl_order[et]*2+1],3);tt(R,Fe-1),tt(O,lt-1)}function it(){X==16?(Te($),$=0,X=0):X>=8&&(ve($&255),$>>>=8,X-=8)}function nn(){Ge(d7<<1,3),Ke(256,gc.static_ltree),it(),1+Y+10-X<9&&(Ge(d7<<1,3),Ke(256,gc.static_ltree),it()),Y=7}function qt(Fe,lt){let Xe,et,gt;if(e.dist_buf[W]=Fe,e.lc_buf[W]=lt&255,W++,Fe===0?R[lt*2]++:(Z++,Fe--,R[(Pr._length_code[lt]+256+1)*2]++,O[Pr.d_code(Fe)*2]++),(W&8191)===0&&p>2){for(Xe=W*8,et=S-C,gt=0;gt<30;gt++)Xe+=O[gt*2]*(5+Pr.extra_dbits[gt]);if(Xe>>>=3,Z<Math.floor(W/2)&&Xe<Math.floor(et/2))return!0}return W==H-1}function Rt(Fe,lt){let Xe,et,gt=0,Jt,bn;if(W!==0)do Xe=e.dist_buf[gt],et=e.lc_buf[gt],gt++,Xe===0?Ke(et,Fe):(Jt=Pr._length_code[et],Ke(Jt+256+1,Fe),bn=Pr.extra_lbits[Jt],bn!==0&&(et-=Pr.base_length[Jt],Ge(et,bn)),Xe--,Jt=Pr.d_code(Xe),Ke(Jt,lt),bn=Pr.extra_dbits[Jt],bn!==0&&(Xe-=Pr.base_dist[Jt],Ge(Xe,bn)));while(gt<W);Ke(256,Fe),Y=Fe[256*2+1]}function Si(){X>8?Te($):X>0&&ve($&255),$=0,X=0}function gi(Fe,lt,Xe){Si(),Y=8,Xe&&(Te(lt),Te(~lt)),e.pending_buf.set(c.subarray(Fe,Fe+lt),e.pending),e.pending+=lt}function Ft(Fe,lt,Xe){Ge((glt<<1)+(Xe?1:0),3),gi(Fe,lt,!0)}function St(Fe,lt,Xe){let et,gt,Jt=0;p>0?(Q.build_tree(e),z.build_tree(e),Jt=xe(),et=e.opt_len+3+7>>>3,gt=e.static_len+3+7>>>3,gt<=et&&(et=gt)):et=gt=lt+5,lt+4<=et&&Fe!=-1?Ft(Fe,lt,Xe):gt==et?(Ge((d7<<1)+(Xe?1:0),3),Rt(gc.static_ltree,gc.static_dtree)):(Ge((_lt<<1)+(Xe?1:0),3),en(Q.max_code+1,z.max_code+1,Jt+1),Rt(R,O)),ge(),Xe&&Si()}function oi(Fe){St(C>=0?C:-1,S-C,Fe),C=S,t.flush_pending()}function Et(){let Fe,lt,Xe,et;do{if(et=u-v-S,et===0&&S===0&&v===0)et=r;else if(et==-1)et--;else if(S>=r+r-yf){c.set(c.subarray(r,r+r),0),B-=r,S-=r,C-=r,Fe=g,Xe=Fe;do lt=h[--Xe]&65535,h[Xe]=lt>=r?lt-r:0;while(--Fe!==0);Fe=r,Xe=Fe;do lt=f[--Xe]&65535,f[Xe]=lt>=r?lt-r:0;while(--Fe!==0);et+=r}if(t.avail_in===0)return;Fe=t.read_buf(c,S+v,et),v+=Fe,v>=jr&&(A=c[S]&255,A=(A<<y^c[S+1]&255)&_)}while(v<yf&&t.avail_in!==0)}function Lo(Fe){let lt=65535,Xe;for(lt>i-5&&(lt=i-5);;){if(v<=1){if(Et(),v===0&&Fe==0)return Ld;if(v===0)break}if(S+=v,v=0,Xe=C+lt,(S===0||S>=Xe)&&(v=S-Xe,S=Xe,oi(!1),t.avail_out===0)||S-C>=r-yf&&(oi(!1),t.avail_out===0))return Ld}return oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Ho(Fe){let lt=M,Xe=S,et,gt,Jt=P,bn=S>r-yf?S-(r-yf):0,ho=w,lo=a,sa=S+G8,aa=c[Xe+Jt-1],Wn=c[Xe+Jt];P>=T&&(lt>>=2),ho>v&&(ho=v);do if(et=Fe,!(c[et+Jt]!=Wn||c[et+Jt-1]!=aa||c[et]!=c[Xe]||c[++et]!=c[Xe+1])){Xe+=2,et++;do;while(c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&Xe<sa);if(gt=G8-(sa-Xe),Xe=sa-G8,gt>Jt){if(B=Fe,Jt=gt,gt>=ho)break;aa=c[Xe+Jt-1],Wn=c[Xe+Jt]}}while((Fe=f[Fe&lo]&65535)>bn&&--lt!==0);return Jt<=v?Jt:v}function Pa(Fe){let lt=0,Xe;for(;;){if(v<yf){if(Et(),v<yf&&Fe==0)return Ld;if(v===0)break}if(v>=jr&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),lt!==0&&(S-lt&65535)<=r-yf&&x!=2&&(E=Ho(lt)),E>=jr)if(Xe=qt(S-B,E-jr),v-=E,E<=L&&v>=jr){E--;do S++,A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S;while(--E!==0);S++}else S+=E,E=0,A=c[S]&255,A=(A<<y^c[S+1]&255)&_;else Xe=qt(0,c[S]&255),v--,S++;if(Xe&&(oi(!1),t.avail_out===0))return Ld}return oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Er(Fe){let lt=0,Xe,et;for(;;){if(v<yf){if(Et(),v<yf&&Fe==0)return Ld;if(v===0)break}if(v>=jr&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),P=E,I=B,E=jr-1,lt!==0&&P<L&&(S-lt&65535)<=r-yf&&(x!=2&&(E=Ho(lt)),E<=5&&(x==1||E==jr&&S-B>4096)&&(E=jr-1)),P>=jr&&E<=P){et=S+v-jr,Xe=qt(S-1-I,P-jr),v-=P-1,P-=2;do++S<=et&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S);while(--P!==0);if(b=0,E=jr-1,S++,Xe&&(oi(!1),t.avail_out===0))return Ld}else if(b!==0){if(Xe=qt(0,c[S-1]&255),Xe&&oi(!1),S++,v--,t.avail_out===0)return Ld}else b=1,S++,v--}return b!==0&&(Xe=qt(0,c[S-1]&255),b=0),oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Lr(Fe){return Fe.total_in=Fe.total_out=0,Fe.msg=null,e.pending=0,e.pending_out=0,n=k8,o=0,fe(),he(),0}e.deflateInit=function(Fe,lt,Xe,et,gt,Jt){return et||(et=f7),gt||(gt=Alt),Jt||(Jt=0),Fe.msg=null,lt==-1&&(lt=6),gt<1||gt>mlt||et!=f7||Xe<9||Xe>15||lt<0||lt>9||Jt<0||Jt>2?-2:(Fe.dstate=e,s=Xe,r=1<<s,a=r-1,m=gt+7,g=1<<m,_=g-1,y=Math.floor((m+jr-1)/jr),c=new Uint8Array(r*2),f=[],h=[],H=1<<gt+6,e.pending_buf=new Uint8Array(H*4),i=H*4,e.dist_buf=new Uint16Array(H),e.lc_buf=new Uint8Array(H),p=lt,x=Jt,Lr(Fe))},e.deflateEnd=function(){return n!=u7&&n!=k8&&n!=VF?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==k8?-3:0)},e.deflateParams=function(Fe,lt,Xe){let et=0;return lt==-1&&(lt=6),lt<0||lt>9||Xe<0||Xe>2?-2:(lm[p].func!=lm[lt].func&&Fe.total_in!==0&&(et=Fe.deflate(1)),p!=lt&&(p=lt,L=lm[p].max_lazy,T=lm[p].good_length,w=lm[p].nice_length,M=lm[p].max_chain),x=Xe,et)},e.deflateSetDictionary=function(Fe,lt,Xe){let et=Xe,gt,Jt=0;if(!lt||n!=u7)return-2;if(et<jr)return 0;for(et>r-yf&&(et=r-yf,Jt=Xe-et),c.set(lt.subarray(Jt,Jt+et),0),S=et,C=et,A=c[0]&255,A=(A<<y^c[1]&255)&_,gt=0;gt<=et-jr;gt++)A=(A<<y^c[gt+(jr-1)]&255)&_,f[gt&a]=h[A],h[A]=gt;return 0},e.deflate=function(Fe,lt){let Xe,et,gt,Jt,bn;if(lt>4||lt<0)return-2;if(!Fe.next_out||!Fe.next_in&&Fe.avail_in!==0||n==VF&<!=4)return Fe.msg=O8[4],-2;if(Fe.avail_out===0)return Fe.msg=O8[7],-5;if(t=Fe,Jt=o,o=lt,n==u7&&(et=f7+(s-8<<4)<<8,gt=(p-1&255)>>1,gt>3&&(gt=3),et|=gt<<6,S!==0&&(et|=plt),et+=31-et%31,n=k8,ke(et)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&<<=Jt&<!=4)return t.msg=O8[7],-5;if(n==VF&&t.avail_in!==0)return Fe.msg=O8[7],-5;if(t.avail_in!==0||v!==0||lt!=0&&n!=VF){switch(bn=-1,lm[p].func){case Dye:bn=Lo(lt);break;case U8:bn=Pa(lt);break;case AI:bn=Er(lt);break;default:}if((bn==zF||bn==Q8)&&(n=VF),bn==Ld||bn==zF)return t.avail_out===0&&(o=-1),0;if(bn==F8){if(lt==1)nn();else if(Ft(0,0,!1),lt==3)for(Xe=0;Xe<g;Xe++)h[Xe]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return lt!=4?0:1}}function vye(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}vye.prototype={deflateInit(e,t){let n=this;return n.dstate=new ylt,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function Pye(e){let t=this,n=new vye,i=Clt(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,A=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(_){f.set(_,A),A+=_.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(A){c.set(A,u),u+=A.length}),c}}function Clt(e){return e+5*(Math.floor(e/16383)+1)}var Cf=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Jye=1440,Elt=0,Ilt=4,xlt=9,blt=5,Tlt=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Slt=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],wlt=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Blt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],Dlt=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],vlt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Xy=15;function p7(){let e=this,t,n,i,o,r,s;function a(u,f,h,A,g,m,_,y,C,E,I){let b,S,B,v,P,M,L,p,x,T,w,R,O,k,Q;T=0,P=h;do i[u[f+T]]++,T++,P--;while(P!==0);if(i[0]==h)return _[0]=-1,y[0]=0,0;for(p=y[0],M=1;M<=Xy&&i[M]===0;M++);for(L=M,p<M&&(p=M),P=Xy;P!==0&&i[P]===0;P--);for(B=P,p>P&&(p=P),y[0]=p,k=1<<M;M<P;M++,k<<=1)if((k-=i[M])<0)return-3;if((k-=i[P])<0)return-3;for(i[P]+=k,s[1]=M=0,T=1,O=2;--P!==0;)s[O]=M+=i[T],O++,T++;P=0,T=0;do(M=u[f+T])!==0&&(I[s[M]++]=P),T++;while(++P<h);for(h=s[B],s[0]=P=0,T=0,v=-1,R=-p,r[0]=0,w=0,Q=0;L<=B;L++)for(b=i[L];b--!==0;){for(;L>R+p;){if(v++,R+=p,Q=B-R,Q=Q>p?p:Q,(S=1<<(M=L-R))>b+1&&(S-=b+1,O=L,M<Q))for(;++M<Q&&!((S<<=1)<=i[++O]);)S-=i[O];if(Q=1<<M,E[0]+Q>Jye)return-3;r[v]=w=E[0],E[0]+=Q,v!==0?(s[v]=P,o[0]=M,o[1]=p,M=P>>>R-p,o[2]=w-r[v-1]-M,C.set(o,(r[v-1]+M)*3)):_[0]=w}for(o[1]=L-R,T>=h?o[0]=192:I[T]<A?(o[0]=I[T]<256?0:96,o[2]=I[T++]):(o[0]=m[I[T]-A]+16+64,o[2]=g[I[T++]-A]),S=1<<L-R,M=P>>>R;M<Q;M+=S)C.set(o,(w+M)*3);for(M=1<<L-1;(P&M)!==0;M>>>=1)P^=M;for(P^=M,x=(1<<R)-1;(P&x)!=s[v];)v--,R-=p,x=(1<<R)-1}return k!==0&&B!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(Xy+1),o=[],r=new Int32Array(Xy),s=new Int32Array(Xy+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<Xy+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,Xy),0),s.set(i.subarray(0,Xy+1),0)}e.inflate_trees_bits=function(u,f,h,A,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,A,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,A,g,m,_,y,C){let E;return c(288),t[0]=0,E=a(h,0,u,257,wlt,Blt,m,A,y,t,n),E!=0||A[0]===0?(E==-3?C.msg="oversubscribed literal/length tree":E!=-4&&(C.msg="incomplete literal/length tree",E=-3),E):(c(288),E=a(h,u,f,0,Dlt,vlt,_,g,y,t,n),E!=0||g[0]===0&&u>257?(E==-3?C.msg="oversubscribed distance tree":E==-5?(C.msg="incomplete distance tree",E=-3):E!=-4&&(C.msg="empty distance tree with lengths",E=-3),E):0)}}p7.inflate_trees_fixed=function(e,t,n,i){return e[0]=xlt,t[0]=blt,n[0]=Tlt,i[0]=Slt,0};var H8=0,Rye=1,Mye=2,Nye=3,Lye=4,Oye=5,Fye=6,h7=7,Qye=8,W8=9;function Plt(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,A=0,g,m=0;function _(y,C,E,I,b,S,B,v){let P,M,L,p,x,T,w,R,O,k,Q,z,F,H,W,Z;w=v.next_in_index,R=v.avail_in,x=B.bitb,T=B.bitk,O=B.write,k=O<B.read?B.read-O-1:B.end-O,Q=Cf[y],z=Cf[C];do{for(;T<20;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(P=x&Q,M=E,L=I,Z=(L+P)*3,(p=M[Z])===0){x>>=M[Z+1],T-=M[Z+1],B.win[O++]=M[Z+2],k--;continue}do{if(x>>=M[Z+1],T-=M[Z+1],(p&16)!==0){for(p&=15,F=M[Z+2]+(x&Cf[p]),x>>=p,T-=p;T<15;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;P=x&z,M=b,L=S,Z=(L+P)*3,p=M[Z];do if(x>>=M[Z+1],T-=M[Z+1],(p&16)!==0){for(p&=15;T<p;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(H=M[Z+2]+(x&Cf[p]),x>>=p,T-=p,k-=F,O>=H)W=O-H,O-W>0&&2>O-W?(B.win[O++]=B.win[W++],B.win[O++]=B.win[W++],F-=2):(B.win.set(B.win.subarray(W,W+2),O),O+=2,W+=2,F-=2);else{W=O-H;do W+=B.end;while(W<0);if(p=B.end-W,F>p){if(F-=p,O-W>0&&p>O-W)do B.win[O++]=B.win[W++];while(--p!==0);else B.win.set(B.win.subarray(W,W+p),O),O+=p,W+=p,p=0;W=0}}if(O-W>0&&F>O-W)do B.win[O++]=B.win[W++];while(--F!==0);else B.win.set(B.win.subarray(W,W+F),O),O+=F,W+=F,F=0;break}else if((p&64)===0)P+=M[Z+2],P+=x&Cf[p],Z=(L+P)*3,p=M[Z];else return v.msg="invalid distance code",F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3;while(!0);break}if((p&64)===0){if(P+=M[Z+2],P+=x&Cf[p],Z=(L+P)*3,(p=M[Z])===0){x>>=M[Z+1],T-=M[Z+1],B.win[O++]=M[Z+2],k--;break}}else return(p&32)!==0?(F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,1):(v.msg="invalid literal/length code",F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3)}while(!0)}while(k>=258&&R>=10);return F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,0}e.init=function(y,C,E,I,b,S){t=H8,u=y,f=C,h=E,A=I,g=b,m=S,i=null},e.proc=function(y,C,E){let I,b,S,B=0,v=0,P=0,M,L,p,x;for(P=C.next_in_index,M=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L;;)switch(t){case H8:if(p>=258&&M>=10&&(y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,E=_(u,f,h,A,g,m,y,C),P=C.next_in_index,M=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L,E!=0)){t=E==1?h7:W8;break}r=u,i=h,o=A,t=Rye;case Rye:for(I=r;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Cf[I]))*3,B>>>=i[b+1],v-=i[b+1],S=i[b],S===0){s=i[b+2],t=Fye;break}if((S&16)!==0){a=S&15,n=i[b+2],t=Mye;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}if((S&32)!==0){t=h7;break}return t=W8,C.msg="invalid literal/length code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case Mye:for(I=a;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}n+=B&Cf[I],B>>=I,v-=I,r=f,i=g,o=m,t=Nye;case Nye:for(I=r;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Cf[I]))*3,B>>=i[b+1],v-=i[b+1],S=i[b],(S&16)!==0){a=S&15,c=i[b+2],t=Lye;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}return t=W8,C.msg="invalid distance code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case Lye:for(I=a;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}c+=B&Cf[I],B>>=I,v-=I,t=Oye;case Oye:for(x=L-c;x<0;)x+=y.end;for(;n!==0;){if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);y.win[L++]=y.win[x++],p--,x==y.end&&(x=0),n--}t=H8;break;case Fye:if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);E=0,y.win[L++]=s,p--,t=H8;break;case h7:if(v>7&&(v-=8,M++,P--),y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,y.read!=y.write)return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);t=Qye;case Qye:return E=1,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case W8:return E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);default:return E=-2,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E)}},e.free=function(){}}var kye=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],WS=0,m7=1,Uye=2,Gye=3,zye=4,Vye=5,j8=6,Y8=7,Hye=8,pI=9;function Rlt(e,t){let n=this,i=WS,o=0,r=0,s=0,a,c=[0],u=[0],f=new Plt,h=0,A=new Int32Array(Jye*3),g=0,m=new p7;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(_,y){y&&(y[0]=g),i==j8&&f.free(_),i=WS,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(_,y){let C,E,I;return E=_.next_out_index,I=n.read,C=(I<=n.write?n.write:n.end)-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C,I==n.end&&(I=0,n.write==n.end&&(n.write=0),C=n.write-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C),_.next_out_index=E,n.read=I,y},n.proc=function(_,y){let C,E,I,b,S,B,v,P;for(b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B;;){let M,L,p,x,T,w,R,O;switch(i){case WS:for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}switch(C=E&7,h=C&1,C>>>1){case 0:E>>>=3,I-=3,C=I&7,E>>>=C,I-=C,i=m7;break;case 1:M=[],L=[],p=[[]],x=[[]],p7.inflate_trees_fixed(M,L,p,x),f.init(M[0],L[0],p[0],0,x[0],0),E>>>=3,I-=3,i=j8;break;case 2:E>>>=3,I-=3,i=Gye;break;case 3:return E>>>=3,I-=3,i=pI,_.msg="invalid block type",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}break;case m7:for(;I<32;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if((~E>>>16&65535)!=(E&65535))return i=pI,_.msg="invalid stored block lengths",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);o=E&65535,E=I=0,i=o!==0?Uye:h!==0?Y8:WS;break;case Uye:if(S===0||v===0&&(B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0&&(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0)))return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(y=0,C=o,C>S&&(C=S),C>v&&(C=v),n.win.set(_.read_buf(b,C),B),b+=C,S-=C,B+=C,v-=C,(o-=C)!==0)break;i=h!==0?Y8:WS;break;case Gye:for(;I<14;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(r=C=E&16383,(C&31)>29||(C>>5&31)>29)return i=pI,_.msg="too many length or distance symbols",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(C=258+(C&31)+(C>>5&31),!a||a.length<C)a=[];else for(P=0;P<C;P++)a[P]=0;E>>>=14,I-=14,s=0,i=zye;case zye:for(;s<4+(r>>>10);){for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}a[kye[s++]]=E&7,E>>>=3,I-=3}for(;s<19;)a[kye[s++]]=0;if(c[0]=7,C=m.inflate_trees_bits(a,c,u,A,_),C!=0)return y=C,y==-3&&(a=null,i=pI),n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);s=0,i=Vye;case Vye:for(;C=r,!(s>=258+(C&31)+(C>>5&31));){let k,Q;for(C=c[0];I<C;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(C=A[(u[0]+(E&Cf[C]))*3+1],Q=A[(u[0]+(E&Cf[C]))*3+2],Q<16)E>>>=C,I-=C,a[s++]=Q;else{for(P=Q==18?7:Q-14,k=Q==18?11:3;I<C+P;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(E>>>=C,I-=C,k+=E&Cf[P],E>>>=P,I-=P,P=s,C=r,P+k>258+(C&31)+(C>>5&31)||Q==16&&P<1)return a=null,i=pI,_.msg="invalid bit length repeat",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);Q=Q==16?a[P-1]:0;do a[P++]=Q;while(--k!==0);s=P}}if(u[0]=-1,T=[],w=[],R=[],O=[],T[0]=9,w[0]=6,C=r,C=m.inflate_trees_dynamic(257+(C&31),1+(C>>5&31),a,T,w,R,O,A,_),C!=0)return C==-3&&(a=null,i=pI),y=C,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);f.init(T[0],w[0],A,R[0],A,O[0]),i=j8;case j8:if(n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,(y=f.proc(n,_,y))!=1)return n.inflate_flush(_,y);if(y=0,f.free(_),b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B,h===0){i=WS;break}i=Y8;case Y8:if(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,n.read!=n.write)return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);i=Hye;case Hye:return y=1,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);case pI:return y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);default:return y=-2,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}}},n.free=function(_){n.reset(_,null),n.win=null,A=null},n.set_dictionary=function(_,y,C){n.win.set(_.subarray(y,y+C),0),n.read=n.write=C},n.sync_point=function(){return i==m7?1:0}}var Mlt=32,Nlt=8,Llt=0,Wye=1,jye=2,Yye=3,qye=4,Kye=5,A7=6,HF=7,Xye=12,Jy=13,Olt=[0,0,255,255];function Flt(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=HF,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new Rlt(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Ilt?-5:0,o=-5;;)switch(s.mode){case Llt:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=Nlt){s.mode=Jy,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=Jy,n.msg="invalid win size",s.marker=5;break}s.mode=Wye;case Wye:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=Jy,n.msg="incorrect header check",s.marker=5;break}if((r&Mlt)===0){s.mode=HF;break}s.mode=jye;case jye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=Yye;case Yye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=qye;case qye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Kye;case Kye:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=A7,2);case A7:return s.mode=Jy,n.msg="need dictionary",s.marker=0,-2;case HF:if(o=s.blocks.proc(n,o),o==-3){s.mode=Jy,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Xye;case Xye:return n.avail_in=0,1;case Jy:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=A7)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=HF,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=Jy&&(c.mode=Jy,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==Olt[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=HF,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function Zye(){}Zye.prototype={inflateInit(e){let t=this;return t.istate=new Flt,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function $ye(e){let t=this,n=new Zye,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Elt,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,A=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=A&&(c(n.next_in_index),A=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(_){h.set(_,g),g+=_.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var g7=new Date(2107,11,31),_7=new Date(1980,0,1),ii=void 0,Ef="undefined",kg="function";var WF=class{constructor(t){return class extends null{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var Qlt=64,eCe=2;try{typeof navigator!=Ef&&navigator.hardwareConcurrency&&(eCe=navigator.hardwareConcurrency)}catch{}var klt={chunkSize:512*1024,maxWorkers:eCe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ii,CompressionStreamNative:typeof CompressionStream!=Ef&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=Ef&&DecompressionStream},$y=Object.assign({},klt);function jF(){return $y}function q8(e){return Math.max(e.chunkSize,Qlt)}function jS(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(Zy("baseURL",t),Zy("chunkSize",n),Zy("maxWorkers",i),Zy("terminateWorkerTimeout",o),Zy("useCompressionStream",r),Zy("useWebWorkers",s),a&&($y.CompressionStream=new WF(a)),c&&($y.DecompressionStream=new WF(c)),Zy("CompressionStream",u),Zy("DecompressionStream",f),h!==ii){let{deflate:A,inflate:g}=h;if((A||g)&&($y.workerScripts||($y.workerScripts={})),A){if(!Array.isArray(A))throw new Error("workerScripts.deflate must be an array");$y.workerScripts.deflate=A}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");$y.workerScripts.inflate=g}}}function Zy(e,t){t!==ii&&($y[e]=t)}var tCe=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;tCe[e]=t}var Ug=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^tCe[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var YF=class extends null{constructor(){let t,n=new Ug;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function YS(e){if(typeof TextEncoder==Ef){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var Gl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=Gl.getPartial(n);return i===32?e.concat(t):Gl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+Gl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=Gl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=Gl.getPartial(o);return i.push(Gl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},qF={bytes:{fromBits(e){let n=Gl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(Gl.partial(8*(n&3),i)),t}}},nCe={};nCe.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=qF.utf8String.toBits(e));let n=t._buffer=Gl.concat(t._buffer,e),i=t._length,o=t._length=i+Gl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=Gl.concat(t,[Gl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var y7={};y7.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let A=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=A=A<<24^A>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],A=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],_=4,y,C,E;for(let I=0;I<i;I++)y=s[h>>>24]^a[A>>16&255]^c[g>>8&255]^u[m&255]^n[_],C=s[A>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[_+1],E=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[A&255]^n[_+2],m=s[m>>>24]^a[h>>16&255]^c[A>>8&255]^u[g&255]^n[_+3],_+=4,h=y,A=C,g=E;for(let I=0;I<4;I++)o[t?3&-I:I]=f[h>>>24]<<24^f[A>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[_++],y=h,h=A,A=g,g=m,m=y;return o}};var iCe={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},C7={};C7.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=Gl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Gl.clamp(t,o)}};var eC={importKey(e){return new eC.hmacSha1(qF.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),A=0,g=Gl;for(t=qF.bytes.toBits(t),u=1;A<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;A<(o||1)&&a<r.length;a++)h.setInt32(A,r[a]),A+=4}return f.slice(0,i/8)}};eC.hmacSha1=class{constructor(e){let t=this,n=t._hash=nCe.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var Ult=typeof crypto!=Ef&&typeof crypto.getRandomValues==kg,tC="Invalid password",gI="Invalid signature",Gg="zipjs-abort-check-password";function K8(e){return Ult?crypto.getRandomValues(e):iCe.getRandomValues(e)}var qS=16,Glt="raw",sCe={name:"PBKDF2"},zlt={name:"HMAC"},Vlt="SHA-1",Hlt=Object.assign({hash:zlt},sCe),E7=Object.assign({iterations:1e3,hash:{name:Vlt}},sCe),Wlt=["deriveBits"],XF=[8,12,16],KF=[16,24,32],nC=10,jlt=[0,0,0,0],Z8=typeof crypto!=Ef,$F=Z8&&crypto.subtle,aCe=Z8&&typeof $F!=Ef,xA=qF.bytes,Ylt=y7.aes,qlt=C7.ctrGladman,Klt=eC.hmacSha1,oCe=Z8&&aCe&&typeof $F.importKey==kg,rCe=Z8&&aCe&&typeof $F.deriveBits==kg,X8=class extends null{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:uCe(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:A}=c;u?(await Xlt(c,f,u,Od(s,0,XF[f]+2)),s=Od(s,XF[f]+2),r?a.error(new Error(Gg)):h()):await A;let g=new Uint8Array(s.length-nC-(s.length-nC)%qS);a.enqueue(cCe(c,s,g,0,nC,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let A=Od(f,0,f.length-nC),g=Od(f,f.length-nC),m=new Uint8Array;if(A.length){let _=ZF(xA,A);u.update(_);let y=c.update(_);m=JF(xA,y)}if(a){let _=Od(JF(xA,u.digest()),0,nC);for(let y=0;y<nC;y++)if(_[y]!=g[y])throw new Error(gI)}s.enqueue(m)}}})}},J8=class extends null{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:uCe(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,A=new Uint8Array;c?(A=await Jlt(a,u,c),f()):await h;let g=new Uint8Array(A.length+r.length-r.length%qS);g.set(A,0),s.enqueue(cCe(a,r,g,A.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(ZF(xA,c));a.update(h),f=JF(xA,h)}o.signature=JF(xA,a.digest()).slice(0,nC),r.enqueue(I7(f,o.signature))}}}),o=this}};function cCe(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=I7(c,t),n=eut(n,u-u%qS));let f;for(f=0;f<=u-qS;f+=qS){let h=ZF(xA,Od(t,f,f+qS));r&&a.update(h);let A=s.update(h);r||a.update(A),n.set(JF(xA,A),f+i)}return e.pending=Od(t,f),n}async function Xlt(e,t,n,i){let o=await lCe(e,t,n,Od(i,0,XF[t])),r=Od(i,XF[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(tC)}async function Jlt(e,t,n){let i=K8(new Uint8Array(XF[t])),o=await lCe(e,t,n,i);return I7(i,o)}async function lCe(e,t,n,i){e.password=null;let o=await Zlt(Glt,n,Hlt,!1,Wlt),r=await $lt(Object.assign({salt:i},E7),o,8*(KF[t]*2+2)),s=new Uint8Array(r),a=ZF(xA,Od(s,0,KF[t])),c=ZF(xA,Od(s,KF[t],KF[t]*2)),u=Od(s,KF[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new qlt(new Ylt(a),Array.from(jlt)),hmac:new Klt(c)}),u}async function Zlt(e,t,n,i,o){if(oCe)try{return await $F.importKey(e,t,n,i,o)}catch{return oCe=!1,eC.importKey(t)}else return eC.importKey(t)}async function $lt(e,t,n){if(rCe)try{return await $F.deriveBits(e,t,n)}catch{return rCe=!1,eC.pbkdf2(t,e.salt,E7.iterations,n)}else return eC.pbkdf2(t,e.salt,E7.iterations,n)}function uCe(e,t){return t===ii?YS(e):t}function I7(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function eut(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function Od(e,t,n){return e.subarray(t,n)}function JF(e,t){return e.fromBits(t)}function ZF(e,t){return e.toBits(t)}var KS=12,$8=class extends null{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),mCe(this,t)},transform(o,r){let s=this;if(s.password){let a=fCe(s,o.subarray(0,KS));if(s.password=null,a[KS-1]!=s.passwordVerification)throw new Error(tC);o=o.subarray(KS)}i?r.error(new Error(Gg)):r.enqueue(fCe(s,o))}})}},e4=class extends null{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),mCe(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=K8(new Uint8Array(KS));c[KS-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(dCe(r,c),0),a=KS}else s=new Uint8Array(i.length),a=0;s.set(dCe(r,i),a),o.enqueue(s)}})}};function fCe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=ACe(e)^t[i],x7(e,n[i]);return n}function dCe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=ACe(e)^t[i],x7(e,t[i]);return n}function mCe(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Ug(n[0]),crcKey2:new Ug(n[2])});for(let i=0;i<t.length;i++)x7(e,t.charCodeAt(i))}function x7(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=hCe(Math.imul(hCe(i+pCe(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function ACe(e){let t=e.keys[2]|2;return pCe(Math.imul(t,t^1)>>>8)}function pCe(e){return e&255}function hCe(e){return e&4294967295}var e2="Invalid uncompressed size",tut="deflate-raw",t4=class extends null{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,A,g,m=super.readable;(!s||c)&&u&&(A=new YF,m=iC(m,A)),r&&(m=_Ce(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=iC(m,new e4(t)):(g=new J8(t),m=iC(m,g))),gCe(h,m,()=>{let _;s&&!c&&(_=g.signature),(!s||c)&&u&&(_=new DataView(A.value.buffer).getUint32(0)),h.signature=_})}},n4=class extends null{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,A,g=super.readable;s&&(r?g=iC(g,new $8(t)):(A=new X8(t),g=iC(g,A))),u&&(g=_Ce(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new YF,g=iC(g,h)),gCe(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(gI)}})}};function gCe(e,t,n){t=iC(t,new null({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function _Ce(e,t,n,i,o){let r=t&&i?i:o;return iC(e,new r(tut,n))}function iC(e,t){return e.pipeThrough(t)}var yCe="message",CCe="start",ECe="pull",b7="data",ICe="ack",T7="close",r4="deflate",s4="inflate";var i4=class extends null{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(r4)?r=t4:o.startsWith(s4)&&(r=n4),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,u=new null({transform(h,A){h&&h.length&&(s+=h.length,A.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),f=new null({transform(h,A){if(h&&h.length&&(A.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(e2)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(u).pipeThrough(a).pipeThrough(f)}})}},o4=class extends null{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var TCe=typeof Worker!=Ef;var XS=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new o4(r.chunkSize)).pipeThrough(new w7(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(A=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=A:(g.terminate(),A()),t.interface=null):A()})},onTaskFinished(){let{resolveTerminated:A}=t;A&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),A()),t.busy=!1,f(t)}}),(a&&TCe?nut:SCe)(t,r)}},w7=class extends null{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await S7(t,i)},async transform(s,a){r+=s.length,n&&await S7(n,r,i),a.enqueue(s)},async flush(){o&&await S7(o,r)}})}};async function S7(e,...t){try{await e(...t)}catch{}}function SCe(e,t){return{run:()=>iut(e,t)}}function nut(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=sut(e.scripts[0],n,e)}catch{return TCe=!1,SCe(e,t)}Object.assign(e,{worker:o,interface:{run:()=>out(e,{chunkSize:i})}})}return e.interface}async function iut({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new i4(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function out(e,t){let n,i,o=new Promise((A,g)=>{n=A,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=rut(e.writable),f=a4({type:CCe,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function rut(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var xCe=!0,bCe=!0;function sut(e,t,n){let i={type:"module"},o,r;typeof e==kg&&(e=e());try{o=new URL(e,t)}catch{o=e}if(xCe)try{r=new Worker(o)}catch{xCe=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(yCe,s=>aut(s,n)),r}function a4(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&bCe?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{bCe=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function aut({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:_,name:y,outputSize:C}=s,E=new Error(g);Object.assign(E,{stack:m,code:_,name:y,outputSize:C}),A(E)}else{if(n==ECe){let{value:g,done:m}=await a.read();a4({type:b7,value:g,done:m,messageId:o},t)}n==b7&&(await c.ready,await c.write(new Uint8Array(i)),a4({type:ICe,messageId:o},t)),n==T7&&A(null,r)}}catch(g){a4({type:T7,messageId:o},t),A(g)}function A(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var _I=[],B7=[];var wCe=0;async function c4(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:A}=i;t.transferStreams=o||o===ii;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ii&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ii&&i.useCompressionStream,(await m()).run();async function m(){let y=_I.find(C=>!C.busy);if(y)return BCe(y),new XS(y,e,t,_);if(_I.length<A){let C={indexWorker:wCe};return wCe++,_I.push(C),new XS(C,e,t,_)}else return new Promise(C=>B7.push({resolve:C,stream:e,workerOptions:t}))}function _(y){if(B7.length){let[{resolve:C,stream:E,workerOptions:I}]=B7.splice(0,1);C(new XS(y,E,I,_))}else y.worker?(BCe(y),cut(y,t)):_I=_I.filter(C=>C!=y)}}function cut(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{_I=_I.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function BCe(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var lut="Writer iterator completed too soon",uut="Writer not initialized",fut="text/plain";var dut="Content-Type";var hut=64*1024,P7="writable",JS=class{constructor(){this.size=0}init(){this.initialized=!0}},l4=class extends JS{get readable(){let t=this,{chunkSize:n=hut}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,u=s===ii?n:Math.min(n,s-c),f=await Xa(t,r+c,u,a);o.enqueue(f),c+n>s||s===ii&&!f.length&&u?o.close():this.chunkOffset+=n}});return i}},D7=class extends JS{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(uut);return t.writeUint8Array(i)}});Object.defineProperty(t,P7,{get(){return n}})}writeUint8Array(){}};var u4=class extends D7{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},zg=class extends l4{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},t2=class extends JS{constructor(t){super();let n=this,i=new null,o=[];t&&o.push([dut,t]),Object.defineProperty(n,P7,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},f4=class extends zg{constructor(t){super(new Blob([t],{type:fut}))}},d4=class extends t2{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var v7=class extends l4{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let u=r[a];if(u){let f=u.size;if(c+n<=f)s=await Xa(u,c,n);else{let h=f-c;s=new Uint8Array(n);let A=await Xa(u,c,h);s.set(A,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),A.length+g.length<n&&(s=s.subarray(0,A.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},h4=class extends JS{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.subarray(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.subarray(h))):await c(f);else{let{value:A,done:g}=await t.next();if(g&&!A)throw new Error(lut);o=A,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await TA(o),r=A.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,P7,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){await s.close()}}},yI=class{constructor(t){return Array.isArray(t)&&(t=new v7(t)),t instanceof ReadableStream&&(t={readable:t}),t}},ZS=class{constructor(t){return t.writable===ii&&typeof t.next==kg&&(t=new h4(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ii&&(t.size=0),t instanceof h4||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function TA(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function Xa(e,t,n,i){return e.readUint8Array(t,n,i)}var DCe="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),mut=DCe.length==256;function vCe(e){if(mut){let t="";for(let n=0;n<e.length;n++)t+=DCe[e[n]];return t}else return new TextDecoder().decode(e)}function n2(e,t){return t&&t.trim().toLowerCase()=="cp437"?vCe(e):new TextDecoder(t).decode(e)}var R7="filename",M7="rawFilename",i2="comment",N7="rawComment",o2="uncompressedSize",L7="compressedSize",O7="offset",m4="diskNumberStart",$S="lastModDate",A4="rawLastModDate",r2="lastAccessDate",PCe="rawLastAccessDate",s2="creationDate",RCe="rawCreationDate",F7="internalFileAttribute",Q7="internalFileAttributes",k7="externalFileAttribute",U7="externalFileAttributes",G7="msDosCompatible",p4="zip64",z7="encrypted",V7="version",H7="versionMadeBy",W7="zipCrypto",a2="directory",j7="executable",Y7="compressionMethod",q7="signature",K7="extraField",Aut=[R7,M7,L7,o2,$S,A4,i2,N7,r2,s2,O7,m4,m4,F7,Q7,k7,U7,G7,p4,z7,V7,H7,W7,a2,j7,Y7,q7,K7,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],oC=class{constructor(t){Aut.forEach(n=>this[n]=t[n])}};var MCe="filenameEncoding",NCe="commentEncoding",LCe="decodeText",OCe="extractPrependedData",FCe="extractAppendedData",g4="password",_4="rawPassword",y4="passThrough",C4="signal",QCe="checkPasswordOnly",kCe="checkOverlappingEntryOnly",UCe="checkOverlappingEntry",GCe="checkSignature",E4="useWebWorkers",I4="useCompressionStream",zCe="transferStreams",x4="preventClose",VCe="encryptionStrength",HCe="extendedTimestamp",WCe="keepOrder",jCe="level",YCe="bufferedWrite",qCe="dataDescriptorSignature",KCe="useUnicodeFileNames",XCe="dataDescriptor",X7="supportZip64SplitFile",JCe="encodeText",J7="offset",Z7="usdz";var $7="File format is not recognized",Cut="End of central directory not found",Eut="End of Zip64 central directory locator not found",Iut="Central directory header not found",xut="Local file header not found",but="Zip64 extra field not found",Tut="File contains encrypted entry",Sut="Encryption method not supported",ZCe="Compression method not supported",$Ce="Split zip file",wut="Overlapping entry found",eEe="utf-8",tEe="cp437",But=[[o2,4294967295],[L7,4294967295],[O7,4294967295],[m4,65535]],Dut={65535:{getValue:Rr,bytes:4},4294967295:{getValue:tw,bytes:8}},iw=class{constructor(t,n={}){Object.assign(this,{reader:new yI(t),options:n,config:jF(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await TA(i),(i.size===ii||!i.readUint8Array)&&(i=new zg(await new Response(i.readable).blob()),await TA(i)),i.size<22)throw new Error($7);i.chunkSize=q8(o);let r=await Lut(i,101010256,i.size,22,65535*16);if(!r){let L=await Xa(i,0,4),p=Yr(L);throw Rr(p)==134695760?new Error($Ce):new Error(Cut)}let s=Yr(r),a=Rr(s,12),c=Rr(s,16),u=r.offset,f=Ja(s,20),h=u+22+f,A=Ja(s,4),g=i.lastDiskNumber||0,m=Ja(s,6),_=Ja(s,8),y=0,C=0;if(c==4294967295||a==4294967295||_==65535||m==65535){let L=await Xa(i,r.offset-20,20),p=Yr(L);if(Rr(p,0)==117853008){c=tw(p,8);let x=await Xa(i,c,56,-1),T=Yr(x),w=r.offset-20-56;if(Rr(T,0)!=101075792&&c!=w){let R=c;c=w,c>R&&(y=c-R),x=await Xa(i,c,56,-1),T=Yr(x)}if(Rr(T,0)!=101075792)throw new Error(Eut);A==65535&&(A=Rr(T,16)),m==65535&&(m=Rr(T,20)),_==65535&&(_=tw(T,32)),a==4294967295&&(a=tw(T,40)),c-=a}}if(c>=i.size&&(y=i.size-c-a-22,c=i.size-a-22),g!=A)throw new Error($Ce);if(c<0)throw new Error($7);let E=0,I=await Xa(i,c,a,m),b=Yr(I);if(a){let L=r.offset-a;if(Rr(b,E)!=33639248&&c!=L){let p=c;c=L,c>p&&(y+=c-p),I=await Xa(i,c,a,m),b=Yr(I)}}let S=r.offset-c-(i.lastDiskOffset||0);if(a!=S&&S>=0&&(a=S,I=await Xa(i,c,a,m),b=Yr(I)),c<0||c>=i.size)throw new Error($7);let B=_c(n,t,MCe),v=_c(n,t,NCe);for(let L=0;L<_;L++){let p=new tX(i,o,n.options);if(Rr(b,E)!=33639248)throw new Error(Iut);iEe(p,b,E+6);let x=!!p.bitFlag.languageEncodingFlag,T=E+46,w=T+p.filenameLength,R=w+p.extraFieldLength,O=Ja(b,E+4),k=O>>8==0,Q=O>>8==3,z=I.subarray(T,w),F=Ja(b,E+32),H=R+F,W=I.subarray(R,H),Z=x,Y=x,$=Rr(b,E+38),X=k&&(ew(b,E+38)&16)==16||Q&&($>>16&61440)==16384||z.length&&z[z.length-1]=="/".charCodeAt(0),he=Q&&($>>16&73)!=0,ge=Rr(b,E+42)+y;Object.assign(p,{versionMadeBy:O,msDosCompatible:k,compressedSize:0,uncompressedSize:0,commentLength:F,directory:X,offset:ge,diskNumberStart:Ja(b,E+34),internalFileAttributes:Ja(b,E+36),externalFileAttributes:$,rawFilename:z,filenameUTF8:Z,commentUTF8:Y,rawExtraField:I.subarray(w,R),executable:he}),p.internalFileAttribute=p.internalFileAttributes,p.externalFileAttribute=p.externalFileAttributes;let fe=_c(n,t,LCe)||n2,ye=Z?eEe:B||tEe,xe=Y?eEe:v||tEe,ve=fe(z,ye);ve===ii&&(ve=n2(z,ye));let Te=fe(W,xe);Te===ii&&(Te=n2(W,xe)),Object.assign(p,{rawComment:W,filename:ve,comment:Te,directory:X||ve.endsWith("/")}),C=Math.max(ge,C),oEe(p,p,b,E+6),p.zipCrypto=p.encrypted&&!p.extraFieldAES;let ke=new oC(p);ke.getData=(Ke,tt)=>p.getData(Ke,ke,n.readRanges,tt),ke.arrayBuffer=async Ke=>{let tt=new null,[en]=await Promise.all([new Response(tt.readable).arrayBuffer(),p.getData(tt,ke,n.readRanges,Ke)]);return en},E=H;let{onprogress:Ge}=t;if(Ge)try{await Ge(L+1,_,new oC(p))}catch{}yield ke}let P=_c(n,t,OCe),M=_c(n,t,FCe);return P&&(n.prependedData=C>0?await Xa(i,0,C):new Uint8Array),n.comment=f?await Xa(i,u+22,f):new Uint8Array,M&&(n.appendedData=h<i.size?await Xa(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var tX=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:u,extraFieldZip64:f,compressionMethod:h,config:A,bitFlag:g,signature:m,rawLastModDate:_,uncompressedSize:y,compressedSize:C}=r,{dataDescriptor:E}=g,I=n.localDirectory={},b=await Xa(s,a,30,c),S=Yr(b),B=_c(r,o,g4),v=_c(r,o,_4),P=_c(r,o,y4);if(B=B&&B.length&&B,v=v&&v.length&&v,u&&u.originalCompressionMethod!=99)throw new Error(ZCe);if(h!=0&&h!=8&&!P)throw new Error(ZCe);if(Rr(S,0)!=67324752)throw new Error(xut);iEe(I,S,4);let{extraFieldLength:M,filenameLength:L,lastAccessDate:p,creationDate:x}=I;I.rawExtraField=M?await Xa(s,a+30+L,M,c):new Uint8Array,oEe(r,I,S,4,!0),Object.assign(n,{lastAccessDate:p,creationDate:x});let T=r.encrypted&&I.encrypted&&!P,w=T&&!u;if(P||(n.zipCrypto=w),T){if(!w&&u.strength===ii)throw new Error(Sut);if(!B&&!v)throw new Error(Tut)}let R=a+30+L+M,O=C,k=s.readable;Object.assign(k,{diskNumberStart:c,offset:R,size:O});let Q=_c(r,o,C4),z=_c(r,o,QCe),F=_c(r,o,UCe),H=_c(r,o,kCe);H&&(F=!0);let{onstart:W,onprogress:Z,onend:Y}=o,$={options:{codecType:s4,password:B,rawPassword:v,zipCrypto:w,encryptionStrength:u&&u.strength,signed:_c(r,o,GCe)&&!P,passwordVerification:w&&(E?_>>>8&255:m>>>24&255),outputSize:y,signature:m,compressed:h!=0&&!P,encrypted:r.encrypted&&!P,useWebWorkers:_c(r,o,E4),useCompressionStream:_c(r,o,I4),transferStreams:_c(r,o,zCe),checkPasswordOnly:z},config:A,streamOptions:{signal:Q,size:O,onstart:W,onprogress:Z,onend:Y}};F&&await Nut({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:m,compressedSize:C,uncompressedSize:y,dataOffset:R,dataDescriptor:E||I.bitFlag.dataDescriptor,extraFieldZip64:f||I.extraFieldZip64,readRanges:i});let X;try{if(!H){z&&(t=new WritableStream),t=new ZS(t),await TA(t,P?C:y),{writable:X}=t;let{outputSize:he}=await c4({readable:k,writable:X},$);if(t.size+=he,he!=(P?C:y))throw new Error(e2)}}catch(he){if(he.outputSize!==ii&&(t.size+=he.outputSize),!z||he.message!=Gg)throw he}finally{!_c(r,o,x4)&&X&&!X.locked&&await X.getWriter().close()}return z||H?ii:t.getData?t.getData():X}};function iEe(e,t,n){let i=e.rawBitFlag=Ja(t,n+2),o=(i&1)==1,r=Rr(t,n+6);Object.assign(e,{encrypted:o,version:Ja(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:Out(r),filenameLength:Ja(t,n+22),extraFieldLength:Ja(t,n+24)})}function oEe(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Yr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let C=Ja(a,c),E=Ja(a,c+2);s.set(C,{type:C,data:r.slice(c+4,c+4+E)}),c+=4+E}}catch{}let u=Ja(n,i+4);Object.assign(t,{signature:Rr(n,i+10),compressedSize:Rr(n,i+14),uncompressedSize:Rr(n,i+18)});let f=s.get(1);f&&(vut(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(nEe(h,R7,M7,t,e),t.extraFieldUnicodePath=h);let A=s.get(25461);A&&(nEe(A,i2,N7,t,e),t.extraFieldUnicodeComment=A);let g=s.get(39169);g?(Put(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(Rut(m,t),t.extraFieldNTFS=m);let _=s.get(21589);_&&(Mut(_,t,o),t.extraFieldExtendedTimestamp=_);let y=s.get(6534);y&&(t.extraFieldUSDZ=y)}function vut(e,t){t.zip64=!0;let n=Yr(e.data),i=But.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=Dut[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(but)}}function nEe(e,t,n,i,o){let r=Yr(e.data),s=new Ug;s.append(o[n]);let a=Yr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=Rr(r,1);Object.assign(e,{version:ew(r,0),[t]:n2(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==Rr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Put(e,t,n){let i=Yr(e.data),o=ew(i,4);Object.assign(e,{vendorVersion:ew(i,0),vendorId:ew(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ja(i,5)}),t.compressionMethod=e.compressionMethod}function Rut(e,t){let n=Yr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ja(n,i),s=Ja(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Yr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=eX(s),f=eX(a),h=eX(c),A={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,A),Object.assign(t,A)}}catch{}}function Mut(e,t,n){let i=Yr(e.data),o=ew(i,0),r=[],s=[];n?((o&1)==1&&(r.push($S),s.push(A4)),(o&2)==2&&(r.push(r2),s.push(PCe)),(o&4)==4&&(r.push(s2),s.push(RCe))):e.data.length>=5&&(r.push($S),s.push(A4));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=Rr(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function Nut({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:u,readRanges:f}){let h=0;if(i)for(let m=0;m<i;m++){let _=e.readers[m];h+=_.size}let A=0;if(c&&(u?A=20:A=12),A){let m=await Xa(e,a+r,A+4,i);if(Rr(Yr(m),0)==134695760){let y=Rr(Yr(m),4),C,E;u?(C=tw(Yr(m),8),E=tw(Yr(m),16)):(C=Rr(Yr(m),8),E=Rr(Yr(m),12)),(t.encrypted&&!t.zipCrypto||y==o)&&C==r&&E==s&&(A+=4)}}let g={start:h+n,end:h+a+r+A,fileEntry:t};for(let m of f)if(m.fileEntry!=t&&g.start>=m.start&&g.start<m.end){let _=new Error(wut);throw _.overlappingEntry=m.fileEntry,_}f.push(g)}async function Lut(e,t,n,i,o){let r=new Uint8Array(4),s=Yr(r);Fut(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await Xa(e,f,u);for(let A=h.length-i;A>=0;A--)if(h[A]==r[0]&&h[A+1]==r[1]&&h[A+2]==r[2]&&h[A+3]==r[3])return{offset:f+A,buffer:h.slice(A,A+i).buffer}}}function _c(e,t,n){return t[n]===ii?e.options[n]:t[n]}function Out(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function eX(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function ew(e,t){return e.getUint8(t)}function Ja(e,t){return e.getUint16(t,!0)}function Rr(e,t){return e.getUint32(t,!0)}function tw(e,t){return Number(e.getBigUint64(t,!0))}function Fut(e,t,n){e.setUint32(t,n,!0)}function Yr(e){return new DataView(e.buffer)}var Hut="File already exists",Wut="Zip file comment exceeds 64KB",jut="File entry comment exceeds 64KB",Yut="File entry name exceeds 64KB",aEe="Version exceeds 65535",qut="The strength must equal 1, 2, or 3",Kut="Extra field type exceeds 65535",Xut="Extra field data exceeds 64KB",EX="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Jut="Undefined uncompressed size",Zut="Zip file not empty",cEe=new Uint8Array([7,0,2,0,65,69,3,0,0]),_X=0,lEe=[],N4=class{constructor(t,n={}){t=new ZS(t);let i=t.availableSize!==ii&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ii&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:jF(),files:new Map,filenames:new Set,offset:n[J7]===ii?t.size||t.writable.size||0:n[J7],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(Zut);t=new yI(t);let n=new iw(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:u,rawFilename:f,bitFlag:h,encrypted:A,uncompressedSize:g,compressedSize:m,diskOffset:_,diskNumber:y,zip64:C}=o,{rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B}=o,{level:v,languageEncodingFlag:P,dataDescriptor:M}=h;E=E||new Uint8Array,I=I||new Uint8Array,b=b||new Uint8Array,S=S||new Uint8Array,B=B||new Uint8Array;let L=qi(E,I,b,S,B),p=C&&g>4294967295,x=C&&m>4294967295,{headerArray:T,headerView:w}=dEe({version:r,bitFlag:hEe(v,P,M,A,s),compressionMethod:s,uncompressedSize:g,compressedSize:m,lastModDate:a,rawFilename:f,zip64CompressedSize:x,zip64UncompressedSize:p,extraFieldLength:L});return Object.assign(o,{zip64UncompressedSize:p,zip64CompressedSize:x,zip64Offset:C&&this.offset-_>4294967295,zip64DiskNumberStart:C&&y>65535,rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B,extendedTimestamp:b.length>0||S.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(u?4:0),headerArray:T,headerView:w}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;_X<s.maxWorkers?_X++:await new Promise(c=>lEe.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(Hut);return o.filenames.add(t),a=$ut(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=lEe.shift();c?c():_X--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ii){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await aft(this,t,n),ao(i,n,x4)||await s.getWriter().close(),r.getData?r.getData():s}};async function $ut(e,t,n,i){t=t.trim();let o=ao(e,i,G7),r=ao(e,i,H7,o?20:768),s=ao(e,i,j7);if(r>65535)throw new Error(aEe);let a=ao(e,i,U7,0);a===0&&(a=ao(e,i,k7,0)),!i[a2]&&t.endsWith("/")&&(i[a2]=!0),ao(e,i,a2)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=ao(e,i,JCe,YS),f=u(t);if(f===ii&&(f=YS(t)),qi(f)>65535)throw new Error(Yut);let h=i[i2]||"",A=u(h);if(A===ii&&(A=YS(h)),qi(A)>65535)throw new Error(jut);let g=ao(e,i,V7,20);if(g>65535)throw new Error(aEe);let m=ao(e,i,$S,new Date),_=ao(e,i,r2),y=ao(e,i,s2),C=ao(e,i,Q7,0);C===0&&(C=ao(e,i,F7,0));let E=ao(e,i,y4),I,b;E||(I=ao(e,i,g4),b=ao(e,i,_4));let S=ao(e,i,VCe,3),B=ao(e,i,W7),v=ao(e,i,HCe,!0),P=ao(e,i,WCe,!0),M=ao(e,i,jCe),L=ao(e,i,E4),p=ao(e,i,YCe),x=ao(e,i,qCe,!1),T=ao(e,i,C4),w=ao(e,i,KCe,!0),R=ao(e,i,I4),O=ao(e,i,Y7),k=ao(e,i,XCe);p&&k===ii&&(k=!1),(k===ii||B)&&(k=!0);let Q=ao(e,i,p4);if(!B&&(I!==ii||b!==ii)&&!(S>=1&&S<=3))throw new Error(qut);let z=new Uint8Array,F=i[K7];if(F){let en=0,it=0;F.forEach(nn=>en+=4+qi(nn)),z=new Uint8Array(en),F.forEach((nn,qt)=>{if(qt>65535)throw new Error(Kut);if(qi(nn)>65535)throw new Error(Xut);zs(z,new Uint16Array([qt]),it),zs(z,new Uint16Array([qi(nn)]),it+2),zs(z,nn,it+4),it+=4+qi(nn)})}let H=0,W=0,Z=0;if(E&&(Z=i[o2],Z===ii))throw new Error(Jut);let Y=Q===!0;n&&(n=new yI(n),await TA(n),E?(i.uncompressedSize=Z,H=fEe(Z)):n.size===ii?(k=!0,(Q||Q===ii)&&(Q=!0,Z=H=4294967296)):(i.uncompressedSize=Z=n.size,H=fEe(Z)));let{diskOffset:$,diskNumber:X,maxSize:he}=e.writer,ge=Y||Z>4294967295,fe=Y||H>4294967295,ye=Y||e.offset+e.pendingEntriesSize-$>4294967295,ve=ao(e,i,X7,!0)&&Y||X+Math.ceil(e.pendingEntriesSize/he)>65535;if(ye||ge||fe||ve){if(Q===!1||!P)throw new Error(EX);Q=!0}Q=Q||!1;let Te=ao(e,i,z7);i=Object.assign({},i,{rawFilename:f,rawComment:A,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:_,creationDate:y,rawExtraField:z,zip64:Q,zip64UncompressedSize:ge,zip64CompressedSize:fe,zip64Offset:ye,zip64DiskNumberStart:ve,password:I,rawPassword:b,level:!R&&e.config.CompressionStream===ii&&e.config.CompressionStreamNative===ii?0:M,useWebWorkers:L,encryptionStrength:S,extendedTimestamp:v,zipCrypto:B,bufferedWrite:p,keepOrder:P,useUnicodeFileNames:w,dataDescriptor:k,dataDescriptorSignature:x,signal:T,msDosCompatible:o,internalFileAttribute:C,internalFileAttributes:C,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:R,passThrough:E,encrypted:!!(I&&qi(I)||b&&qi(b))||E&&Te,signature:i[q7],compressionMethod:O,uncompressedSize:Z,offset:e.offset-$,diskNumberStart:X});let ke=nft(i),Ge=oft(i),Ke=qi(ke.localHeaderArray,Ge.dataDescriptorArray);W=Ke+H,e.options[Z7]&&(W+=W+64),e.pendingEntriesSize+=W;let tt;try{tt=await eft(e,t,n,{headerInfo:ke,dataDescriptorInfo:Ge,metadataSize:Ke},i)}finally{e.pendingEntriesSize-=W}return Object.assign(tt,{name:t,comment:h,extraField:F}),new oC(tt)}async function eft(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,h=e.options[Z7],A=Array.from(r.values()).pop(),g={},m,_,y,C,E,I,b;r.set(t,g);try{let P;a&&(P=A&&A.lock,S()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(I=new null,I.size=0,m=!0,e.bufferedWrites++,await TA(s)):(I=s,await B()),await TA(I);let{writable:M,diskOffset:L}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let R=new Uint8Array(4),O=yc(R);Yi(O,0,134695760),await Vg(s,R),e.offset+=4}h&&ift(i,e.offset-L);let{localHeaderView:p,localHeaderArray:x}=f;m||(await P,await v(M));let{diskNumber:T}=s;E=!0,g.diskNumberStart=T,m?b=new Response(I.readable).blob():await Vg(I,x),g=await tft(n,I,g,i,e.config,o);let{zip64:w}=g;if(E=!1,r.set(t,g),g.filename=t,m){let[R]=await Promise.all([b,I.writable.getWriter().close(),P]);await B(),C=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,w&&uEe(g),sft(g,p,o),await v(M),await Vg(s,x),await R.stream().pipeTo(M,{preventClose:!0,preventAbort:!0,signal:u}),s.size+=I.size,C=!1}else g.offset=e.offset-L,w&&uEe(g);if(g.offset>4294967295&&!w)throw new Error(EX);return e.offset+=g.size,g}catch(P){if(m&&C||!m&&E){if(e.hasCorruptedEntries=!0,P)try{P.corruptedEntry=!0}catch{}m?e.offset+=I.size:e.offset=I.size}throw r.delete(t),P}finally{m&&e.bufferedWrites--,y&&y(),_&&_()}function S(){g.lock=new Promise(P=>y=P)}async function B(){e.writerLocked=!0;let{lockWriter:P}=e;e.lockWriter=new Promise(M=>_=()=>{e.writerLocked=!1,M()}),await P}async function v(P){qi(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Vg(P,new Uint8Array))}}async function tft(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{headerArray:f,headerView:h,lastModDate:A,rawLastModDate:g,encrypted:m,compressed:_,version:y,compressionMethod:C,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:B,rawExtraFieldAES:v}=a,{dataDescriptorArray:P}=c,{rawFilename:M,lastAccessDate:L,creationDate:p,password:x,rawPassword:T,level:w,zip64:R,zip64UncompressedSize:O,zip64CompressedSize:k,zip64Offset:Q,zip64DiskNumberStart:z,zipCrypto:F,dataDescriptor:H,directory:W,executable:Z,versionMadeBy:Y,rawComment:$,rawExtraField:X,useWebWorkers:he,onstart:ge,onprogress:fe,onend:ye,signal:xe,encryptionStrength:ve,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:Ke,useCompressionStream:tt,passThrough:en}=s,it={lock:i,versionMadeBy:Y,zip64:R,directory:!!W,executable:!!Z,filenameUTF8:!0,rawFilename:M,commentUTF8:!0,rawComment:$,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:B,rawExtraFieldAES:v,rawExtraField:X,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:Ke,diskNumberStart:n},{signature:nn,uncompressedSize:qt}=s,Rt=0;en||(qt=0);let{writable:Si}=t;if(e){e.chunkSize=q8(r);let gi=e.readable,Ft=e.size,St={options:{codecType:r4,level:w,rawPassword:T,password:x,encryptionStrength:ve,zipCrypto:m&&F,passwordVerification:m&&F&&g>>8&255,signed:!en,compressed:_&&!en,encrypted:m&&!en,useWebWorkers:he,useCompressionStream:tt,transferStreams:!1},config:r,streamOptions:{signal:xe,size:Ft,onstart:ge,onprogress:fe,onend:ye}};try{let oi=await c4({readable:gi,writable:Si},St);Rt=oi.outputSize,t.size+=Rt,en||(qt=oi.inputSize,nn=oi.signature)}catch(oi){throw oi.outputSize!==ii&&(t.size+=oi.outputSize),oi}}return rft({signature:nn,compressedSize:Rt,uncompressedSize:qt,headerInfo:a,dataDescriptorInfo:c},s),H&&await Vg(t,P),Object.assign(it,{uncompressedSize:qt,compressedSize:Rt,lastModDate:A,rawLastModDate:g,creationDate:p,lastAccessDate:L,encrypted:m,zipCrypto:F,size:u+Rt,compressionMethod:C,version:y,headerArray:f,headerView:h,signature:nn,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:O,zip64CompressedSize:k,zip64Offset:Q,zip64DiskNumberStart:z}),it}function nft(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:A,extendedTimestamp:g,passThrough:m,encrypted:_,zip64UncompressedSize:y,zip64CompressedSize:C,zip64Offset:E,zip64DiskNumberStart:I,uncompressedSize:b,offset:S,diskNumberStart:B}=e,{version:v,compressionMethod:P}=e,M=!f&&(r>0||r===ii&&P!==0),L,p=m||!M,x=s&&(e.bufferedWrite||!y&&!C||p);if(s){let $=4;y&&($+=8),C&&($+=8),E&&($+=8),I&&($+=4),L=new Uint8Array($);let X=yc(L);if(yo(X,0,1),yo(X,2,qi(L)-4),x){let he=yc(L),ge=4;y&&(na(he,ge,BigInt(b)),ge+=8),C&&p&&(na(he,ge,BigInt(b)),ge+=8),E&&(na(he,ge,BigInt(S)),ge+=8),I&&(Yi(he,ge,B),ge+=4)}}else L=new Uint8Array;let T;if(_&&!a){T=new Uint8Array(qi(cEe)+2);let $=yc(T);yo($,0,39169),zs(T,cEe,2),CX($,8,A)}else T=new Uint8Array;let w,R,O;if(g){R=new Uint8Array(9+(i?4:0)+(o?4:0));let $=yc(R);yo($,0,21589),yo($,2,qi(R)-4),O=1+(i?2:0)+(o?4:0),CX($,4,O);let X=5;Yi($,X,Math.floor(n.getTime()/1e3)),X+=4,i&&(Yi($,X,Math.floor(i.getTime()/1e3)),X+=4),o&&Yi($,X,Math.floor(o.getTime()/1e3));try{w=new Uint8Array(36);let he=yc(w),ge=yX(n);yo(he,0,10),yo(he,2,32),yo(he,8,1),yo(he,10,24),na(he,12,ge),na(he,20,yX(i)||ge),na(he,28,yX(o)||ge)}catch{w=new Uint8Array}}else w=R=new Uint8Array;P===ii&&(P=M?8:0),s&&(v=v>45?v:45),_&&!a&&(v=v>51?v:51,T[9]=P,P=99);let k=x?qi(L):0,Q=k+qi(T,R,w,h),{headerArray:z,headerView:F,rawLastModDate:H}=dEe({version:v,bitFlag:hEe(r,c,u,_,P),compressionMethod:P,uncompressedSize:b,lastModDate:n<_7?_7:n>g7?g7:n,rawFilename:t,zip64CompressedSize:C,zip64UncompressedSize:y,extraFieldLength:Q}),W=30,Z=new Uint8Array(W+qi(t)+Q),Y=yc(Z);return Yi(Y,0,67324752),zs(Z,z,4),zs(Z,t,W),W+=qi(t),x&&zs(Z,L,W),W+=k,zs(Z,T,W),W+=qi(T),zs(Z,R,W),W+=qi(R),zs(Z,w,W),W+=qi(w),zs(Z,h,W),u&&(Yi(Y,18,0),Yi(Y,22,0)),{localHeaderArray:Z,localHeaderView:Y,headerArray:z,headerView:F,lastModDate:n,rawLastModDate:H,encrypted:_,compressed:M,version:v,compressionMethod:P,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:L,localExtraFieldZip64Length:k,rawExtraFieldExtendedTimestamp:R,rawExtraFieldNTFS:w,rawExtraFieldAES:T,extraFieldLength:Q}}function ift(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=yc(i),s=64-(t+qi(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=yc(a);yo(c,0,6534),yo(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(qi(u)+s),zs(i,u),zs(i,a,qi(u)),r=yc(i),yo(r,28,o+s),e.metadataSize+=s}function oft({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=yc(i),n&&(r=4,Yi(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function rft({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:u}=i,{dataDescriptorView:f,dataDescriptorOffset:h}=o;(!u||s)&&e!==ii&&(Yi(c,10,e),a&&Yi(f,h,e)),r?a&&(na(f,h+4,BigInt(t)),na(f,h+12,BigInt(n))):(Yi(c,14,t),Yi(c,18,n),a&&(Yi(f,h+4,t),Yi(f,h+8,n)))}function sft({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:u,zip64CompressedSize:f,zip64Offset:h,zip64DiskNumberStart:A},g,{dataDescriptor:m}){if(m||(t||Yi(g,14,o),n||(Yi(g,18,r),Yi(g,22,s))),n&&i){let _=30+qi(e)+4;u&&(na(g,_,BigInt(s)),_+=8),f&&(na(g,_,BigInt(r)),_+=8),h&&(na(g,_,BigInt(a)),_+=8),A&&Yi(g,_,c)}}function uEe({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let u=yc(c),f=4;o&&(na(u,f,BigInt(t)),f+=8),r&&(na(u,f,BigInt(e)),f+=8),s&&(na(u,f,BigInt(n)),f+=8),a&&Yi(u,f,i)}async function aft(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,u=e.offset-r,f=i.size;for(let[,b]of i){let{rawFilename:S,rawExtraFieldZip64:B,rawExtraFieldAES:v,rawComment:P,rawExtraFieldNTFS:M,rawExtraField:L,extendedTimestamp:p,extraFieldExtendedTimestampFlag:x,lastModDate:T}=b,w;if(p){w=new Uint8Array(9);let R=yc(w);yo(R,0,21589),yo(R,2,5),CX(R,4,x),Yi(R,5,Math.floor(T.getTime()/1e3))}else w=new Uint8Array;b.rawExtraFieldExtendedTimestamp=w,c+=46+qi(S,P,B,v,M,w,L)}let h=new Uint8Array(c),A=yc(h);await TA(o);let g=0;for(let[b,S]of Array.from(i.values()).entries()){let{offset:B,rawFilename:v,rawExtraFieldZip64:P,rawExtraFieldAES:M,rawExtraFieldExtendedTimestamp:L,rawExtraFieldNTFS:p,rawExtraField:x,rawComment:T,versionMadeBy:w,headerArray:R,headerView:O,zip64:k,zip64UncompressedSize:Q,zip64CompressedSize:z,zip64DiskNumberStart:F,zip64Offset:H,internalFileAttributes:W,externalFileAttributes:Z,diskNumberStart:Y,uncompressedSize:$,compressedSize:X}=S,he=qi(P,M,L,p,x);Yi(A,a,33639248),yo(A,a+4,w),Q||Yi(O,18,$),z||Yi(O,14,X),zs(h,R,a+6);let ge=a+30;if(yo(A,ge,he),ge+=2,yo(A,ge,qi(T)),ge+=2,yo(A,ge,k&&F?65535:Y),ge+=2,yo(A,ge,W),ge+=2,Z&&Yi(A,ge,Z),ge+=4,Yi(A,ge,k&&H?4294967295:B),ge+=4,zs(h,v,ge),ge+=qi(v),zs(h,P,ge),ge+=qi(P),zs(h,M,ge),ge+=qi(M),zs(h,L,ge),ge+=qi(L),zs(h,p,ge),ge+=qi(p),zs(h,x,ge),ge+=qi(x),zs(h,T,ge),a-g>o.availableSize&&(o.availableSize=0,await Vg(o,h.slice(g,a)),g=a),a=ge,n.onprogress)try{await n.onprogress(b+1,i.size,new oC(S))}catch{}}await Vg(o,g?h.slice(g):h);let m=o.diskNumber,{availableSize:_}=o;_<22&&m++;let y=ao(e,n,p4);if(u>4294967295||c>4294967295||f>65535||m>65535){if(y===!1)throw new Error(EX);y=!0}let C=new Uint8Array(y?98:22),E=yc(C);a=0,y&&(Yi(E,0,101075792),na(E,4,BigInt(44)),yo(E,12,45),yo(E,14,45),Yi(E,16,m),Yi(E,20,s),na(E,24,BigInt(f)),na(E,32,BigInt(f)),na(E,40,BigInt(c)),na(E,48,BigInt(u)),Yi(E,56,117853008),na(E,64,BigInt(u)+BigInt(c)),Yi(E,72,m+1),ao(e,n,X7,!0)&&(m=65535,s=65535),f=65535,u=4294967295,c=4294967295,a+=76),Yi(E,a,101010256),yo(E,a+4,m),yo(E,a+6,s),yo(E,a+8,f),yo(E,a+10,f),Yi(E,a+12,c),Yi(E,a+16,u);let I=qi(t);if(I)if(I<=65535)yo(E,a+20,I);else throw new Error(Wut);await Vg(o,C),I&&await Vg(o,t)}async function Vg(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=qi(t),await i.write(t)}finally{i.releaseLock()}}function yX(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function ao(e,t,n,i){let o=t[n]===ii?e.options[n]:t[n];return o===ii?i:o}function fEe(e){return e+5*(Math.floor(e/16383)+1)}function CX(e,t,n){e.setUint8(t,n)}function yo(e,t,n){e.setUint16(t,n,!0)}function Yi(e,t,n){e.setUint32(t,n,!0)}function na(e,t,n){e.setBigUint64(t,n,!0)}function zs(e,t,n){e.set(t,n)}function yc(e){return new DataView(e.buffer)}function qi(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function dEe({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:u}){let f=new Uint8Array(26),h=yc(f);yo(h,0,e),yo(h,2,t),yo(h,4,n);let A=new Uint32Array(1),g=yc(A);yo(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),yo(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let m=A[0];return Yi(h,6,m),(a||o!==ii)&&Yi(h,14,a?4294967295:o),(c||i!==ii)&&Yi(h,18,c?4294967295:i),yo(h,22,qi(s)),yo(h,24,u),{headerArray:f,headerView:h,rawLastModDate:m}}function hEe(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}jS({Deflate:Pye,Inflate:$ye});function cft(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var kn=cft;function lft(e,t){this.position=e,this.headingPitchRange=t}var f2=lft;function L4(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new _e,this.tourEnd=new _e,this.entryStart=new _e,this.entryEnd=new _e,this._activeEntries=[]}L4.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};L4.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;pEe.call(this,e,t,function(i){n.playlistIndex=0,i||AEe(n._activeEntries),n.tourEnd.raiseEvent(i)})};L4.prototype.stop=function(){AEe(this._activeEntries)};function AEe(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function pEe(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=uft.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function uft(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,pEe.call(this,e,t,n)}}var d2=L4;var Ki=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Ki.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Ki.Bounce.In(e*2)*.5:Ki.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),h2=function(){return performance.now()},fft=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=h2()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),ow={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=ow.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=ow.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=ow.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=ow.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},gEe=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),IX=new fft,_Ee=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Ki.Linear.None,this._interpolationFunction=ow.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=gEe.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=IX,IX.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=h2()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var A=[a],g=0,m=h.length;g<m;g+=1){var _=this._handleRelativeValue(a,h[g]);if(isNaN(_)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}A.push(_)}f&&(i[s]=A)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var y=a;for(var C in y)n[s][C]=y[C];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var E={};for(var C in h)E[C]=h[C];i[s]=h=E}this._setupProperties(y,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=h2()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=h2()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Ki.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=ow.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=h2()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var _=Math.trunc(s/a),y=s-_*a,C=Math.min(y/i._duration,1);return C===0&&s===i._duration?1:C},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var A=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=A);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*A,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var Kui=gEe.nextId,SA=IX,Xui=SA.getAll.bind(SA),Jui=SA.removeAll.bind(SA),Zui=SA.add.bind(SA),$ui=SA.remove.bind(SA),efi=SA.update.bind(SA);var dft={LINEAR_NONE:Ki.Linear.None,QUADRATIC_IN:Ki.Quadratic.In,QUADRATIC_OUT:Ki.Quadratic.Out,QUADRATIC_IN_OUT:Ki.Quadratic.InOut,CUBIC_IN:Ki.Cubic.In,CUBIC_OUT:Ki.Cubic.Out,CUBIC_IN_OUT:Ki.Cubic.InOut,QUARTIC_IN:Ki.Quartic.In,QUARTIC_OUT:Ki.Quartic.Out,QUARTIC_IN_OUT:Ki.Quartic.InOut,QUINTIC_IN:Ki.Quintic.In,QUINTIC_OUT:Ki.Quintic.Out,QUINTIC_IN_OUT:Ki.Quintic.InOut,SINUSOIDAL_IN:Ki.Sinusoidal.In,SINUSOIDAL_OUT:Ki.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Ki.Sinusoidal.InOut,EXPONENTIAL_IN:Ki.Exponential.In,EXPONENTIAL_OUT:Ki.Exponential.Out,EXPONENTIAL_IN_OUT:Ki.Exponential.InOut,CIRCULAR_IN:Ki.Circular.In,CIRCULAR_OUT:Ki.Circular.Out,CIRCULAR_IN_OUT:Ki.Circular.InOut,ELASTIC_IN:Ki.Elastic.In,ELASTIC_OUT:Ki.Elastic.Out,ELASTIC_IN_OUT:Ki.Elastic.InOut,BACK_IN:Ki.Back.In,BACK_OUT:Ki.Back.Out,BACK_IN_OUT:Ki.Back.InOut,BOUNCE_IN:Ki.Bounce.In,BOUNCE_OUT:Ki.Bounce.Out,BOUNCE_IN_OUT:Ki.Bounce.InOut},ms=Object.freeze(dft);function O4(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}O4.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new le(this.view.position);t.flyToBoundingSphere(o,i)}};O4.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};O4.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ms.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=Tt(t,e)),t};var m2=O4;function xX(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}xX.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};xX.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var A2=xX;var DEe={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=UC(t),DEe[t]}},vX;typeof DOMParser<"u"&&(vX=new DOMParser);var hft=new BEe.default({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),sC=32,yEe=2414016,CEe=1,EEe=16093e3,IEe=.1,xEe=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],bEe=["http://www.google.com/kml/ext/2.2"],mft=["http://www.w3.org/2005/Atom"],Ne={kml:xEe,gx:bEe,atom:mft,kmlgx:xEe.concat(bEe)},PX={Document:kEe,Folder:Mft,Placemark:Nft,NetworkLink:Vft,GroundOverlay:Uft,PhotoOverlay:zEe,ScreenOverlay:kft,Tour:Oft};function wA(e){this._dataSource=e,this._deferred=Xl(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(wA.prototype,{dataSource:{get:function(){return this._dataSource}}});wA.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};wA.prototype.addPromise=function(e){this._promises.push(e)};wA.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};wA.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=bf._getTimestamp()),this._process(e)};wA.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=bf._getTimestamp(),e._process(!0)},0)};wA.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};wA.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};wA.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=PX[i.localName];if(l(o)&&(Ne.kml.indexOf(i.namespaceURI)!==-1||Ne.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||bf._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function Aft(e){let t=e.slice(0,Math.min(4,e.size)),n=Xl(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function pft(e){let t=Xl(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function vEe(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function PEe(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function gft(e,t){return Promise.resolve(e.getData(new d4)).then(function(n){n=vEe(n),n=PEe(n),t.kml=vX.parseFromString(n,"application/xml")})}function bX(e,t){let n=DEe.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new u4(n))).then(function(i){t[e.filename]=i})}function If(e,t,n,i){let o=i.keys,r=new p2.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new p2.default(u).absoluteTo(r).toString(),A=o.indexOf(h);if(A!==-1){let g=o[A];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function xf(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=RX(a,i);l(c)&&s.setAttribute(n,c.url)}}function REe(e,t,n){let i=ia(e,"id");i=l(i)&&i.length!==0?i:Xn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Xn(),l(n)&&(i=n+i)),o=t.add(new fr({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new Yft),o}function g2(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function U4(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function F4(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=U4(n[s],t);return o}function aC(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function ia(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Xi(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function TEe(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function um(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function pi(e,t,n){let i=Xi(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function Un(e,t,n){let i=Xi(e,t,n);if(l(i))return i.textContent.trim()}function fm(e,t,n){let i=Xi(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function RX(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new we({url:o});else{let r=new p2.default(t.getUrlComponent()),s=new p2.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new we({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var bu={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function BX(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(bu.maximumRed=r,bu.red=void 0):(bu.maximumRed=void 0,bu.red=0),o>0?(bu.maximumGreen=o,bu.green=void 0):(bu.maximumGreen=void 0,bu.green=0),i>0?(bu.maximumBlue=i,bu.blue=void 0):(bu.maximumBlue=void 0,bu.blue=0),bu.alpha=n,G.fromRandom(bu)):new G(r,o,i,n)}function II(e,t,n){let i=Un(e,t,n);if(l(i))return BX(i,Un(e,"colorMode",n)==="random")}function _ft(e){let t=Xi(e,"TimeStamp",Ne.kmlgx),n=Un(t,"when",Ne.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=K.fromIso8601(n),o=new ls;return o.addInterval(new Pn({start:i,stop:je.MAXIMUM_VALUE})),o}function yft(e){let t=Xi(e,"TimeSpan",Ne.kmlgx);if(!l(t))return;let n,i=Xi(t,"begin",Ne.kmlgx),o=l(i)?K.fromIso8601(i.textContent):void 0,r=Xi(t,"end",Ne.kmlgx),s=l(r)?K.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(K.lessThan(s,o)){let a=o;o=s,s=a}n=new ls,n.addInterval(new Pn({start:o,stop:s}))}else l(o)?(n=new ls,n.addInterval(new Pn({start:o,stop:je.MAXIMUM_VALUE}))):l(s)&&(n=new ls,n.addInterval(new Pn({start:je.MINIMUM_VALUE,stop:s})));return n}function MEe(){let e=new Tc;return e.width=sC,e.height=sC,e.scaleByDistance=new jt(yEe,CEe,EEe,IEe),e.pixelOffsetScaleByDistance=new jt(yEe,CEe,EEe,IEe),e}function MX(){let e=new ph;return e.outline=!0,e.outlineColor=G.WHITE,e}function NEe(){let e=new Ah;return e.translucencyByDistance=new jt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function NX(e,t,n,i,o){let r=Un(e,"href",Ne.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=pi(e,"x",Ne.gx)??0,u=pi(e,"y",Ne.gx)??0;c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=RX(r,n,i);if(o){let a=Un(e,"refreshMode",Ne.kml),c=Un(e,"viewRefreshMode",Ne.kml);a==="onInterval"||a==="onExpire"?yt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&yt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=Un(e,"viewBoundScale",Ne.kml)??1,f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=Un(e,"viewFormat",Ne.kml)??f,A=Un(e,"httpQuery",Ne.kml);l(h)&&s.setQueryParameters(Fu(k4(h))),l(A)&&s.setQueryParameters(Fu(k4(A)));let g=t._ellipsoid;return OX(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function Cft(e,t,n,i,o){let r=pi(t,"scale",Ne.kml),s=pi(t,"heading",Ne.kml),a=II(t,"color",Ne.kml),c=Xi(t,"Icon",Ne.kml),u=NX(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=pi(c,"x",Ne.gx),h=pi(c,"y",Ne.gx),A=pi(c,"w",Ne.gx),g=pi(c,"h",Ne.gx),m=Xi(t,"hotSpot",Ne.kml),_=aC(m,"x"),y=aC(m,"y"),C=ia(m,"xunits"),E=ia(m,"yunits"),I=n.billboard;l(I)||(I=MEe(),n.billboard=I),I.image=u,I.scale=r,I.color=a,(l(f)||l(h)||l(A)||l(g))&&(I.imageSubRegion=new Ye(f,h,A,g)),l(s)&&s!==0&&(I.rotation=D.toRadians(-s),I.alignedAxis=d.UNIT_Z),r=r??1;let b,S;l(_)&&(C==="pixels"?b=-_*r:C==="insetPixels"?b=(_-sC)*r:C==="fraction"&&(b=-_*sC*r),b+=sC*.5*r),l(y)&&(E==="pixels"?S=y*r:E==="insetPixels"?S=(-y+sC)*r:E==="fraction"&&(S=y*sC*r),S-=sC*.5*r),(l(b)||l(S))&&(I.pixelOffset=new U(b,S))}function Q4(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")Cft(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=NEe(),n.label=c),c.scale=pi(a,"scale",Ne.kml)??c.scale,c.fillColor=II(a,"color",Ne.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new Mc,n.polyline=c),c.width=pi(a,"width",Ne.kml),c.material=II(a,"color",Ne.kml),l(II(a,"outerColor",Ne.gx))&&yt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(pi(a,"outerWidth",Ne.gx))&&yt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(pi(a,"physicalWidth",Ne.gx))&&yt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(fm(a,"labelVisibility",Ne.gx))&&yt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=MX(),n.polygon=c),c.material=II(a,"color",Ne.kml)??c.material,c.fill=fm(a,"fill",Ne.kml)??c.fill,c.outline=fm(a,"outline",Ne.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=BX(Un(a,"bgColor",Ne.kml))??G.WHITE,u=BX(Un(a,"textColor",Ne.kml))??G.BLACK,f=Un(a,"text",Ne.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=Un(a,"listItemType",Ne.kml);(c==="radioFolder"||c==="checkOffOnly")&&yt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Eft(e,t,n,i,o){let r=new fr,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let A=c[h];(A.localName==="Style"||A.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")Q4(e,h,r,i,o);else{let A=um(h,"Pair",Ne.kml);for(let g=0;g<A.length;g++){let m=A[g],_=Un(m,"key",Ne.kml);if(_==="normal"){let y=Un(m,"styleUrl",Ne.kml);if(l(y))s=n.getById(y),l(s)||(s=n.getById(`#${y}`)),l(s)&&r.merge(s);else{let C=Xi(m,"Style",Ne.kml);Q4(e,C,r,i,o)}}else yt(`kml-styleMap-${_}`,`KML - Unsupported StyleMap key: ${_}`)}}}let f=Un(t,"styleUrl",Ne.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let A=f.split("#"),g=A[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${A[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Ift(e,t,n){return t.fetchXML().then(function(i){return LEe(e,i,n,t,!0)})}function LEe(e,t,n,i,o,r){let s,a,c,u,f=TEe(t,"Style",Ne.kml);if(l(f)){let _=f.length;for(s=0;s<_;s++)u=f[s],a=ia(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new fr({id:a}),n.add(c),Q4(e,u,c,i,r)))}let h=TEe(t,"StyleMap",Ne.kml);if(l(h)){let _=h.length;for(s=0;s<_;s++){let y=h[s];if(a=ia(y,"id"),l(a)){let C=um(y,"Pair",Ne.kml);for(let E=0;E<C.length;E++){let I=C[E],b=Un(I,"key",Ne.kml);if(b==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let S=Un(I,"styleUrl",Ne.kml);if(l(S)){S[0]!=="#"&&(S=`#${S}`),o&&l(i)&&(S=i.getUrlComponent()+S);let B=n.getById(S);l(B)&&c.merge(B)}else u=Xi(I,"Style",Ne.kml),Q4(e,u,c,i,r)}}else yt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}}let A=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let _=g[s].textContent;if(_[0]!=="#"){let y=_.split("#");if(y.length===2){let C=y[0],E=i.getDerivedResource({url:C});A.push(Ift(e,E,n))}}}return A}function LX(e,t,n){let i=new Sg(e,t.id,["position"]),o=new pA(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new Mc,t.polyline.positions=new Tg([i,o])}function OEe(e,t){return!l(e)&&!l(t)||e==="clampToGround"?Ze.CLAMP_TO_GROUND:e==="relativeToGround"?Ze.RELATIVE_TO_GROUND:e==="absolute"?Ze.NONE:t==="clampToSeaFloor"?(yt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),Ze.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(yt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),Ze.RELATIVE_TO_GROUND):(l(e)?yt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):yt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),Ze.CLAMP_TO_GROUND)}function xft(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new pA(e))}function bft(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function G4(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():NEe(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():MEe(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(G.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new U(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function FEe(e,t){let n=e.path;l(n)||(n=new pp,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Tft(e,t,n,i,o){let r=Un(n,"coordinates",Ne.kml),s=Un(n,"altitudeMode",Ne.kml),a=Un(n,"altitudeMode",Ne.gx),c=fm(n,"extrude",Ne.kml),u=e._ellipsoid,f=U4(r,u);return i.position=f,G4(e,i,o,OEe(s,a)),c&&g2(s,a)&&LX(t,i,o),!0}function SEe(e,t,n,i,o){let r=Xi(n,"coordinates",Ne.kml),s=Un(n,"altitudeMode",Ne.kml),a=Un(n,"altitudeMode",Ne.gx),c=fm(n,"extrude",Ne.kml),u=fm(n,"tessellate",Ne.kml),f=g2(s,a),h=pi(n,"drawOrder",Ne.gx),A=e._ellipsoid,g=F4(r,A),m=o.polyline;if(f&&c){let _=new gp;i.wall=_,_.positions=g;let y=o.polygon;l(y)&&(_.fill=y.fill,_.material=y.material),_.outline=!0,l(m)?(_.outlineColor=l(m.material)?m.material.color:G.WHITE,_.outlineWidth=m.width):l(y)&&(_.outlineColor=l(y.material)?y.material.color:G.WHITE)}else if(e._clampToGround&&!f&&u){let _=new Mc;_.clampToGround=!0,i.polyline=_,_.positions=g,l(m)?(_.material=l(m.material)?m.material.color.getValue(je.MINIMUM_VALUE):G.WHITE,_.width=m.width??1):(_.material=G.WHITE,_.width=1),_.zIndex=h}else l(h)&&yt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&yt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new Mc,i.polyline=m,m.positions=bft(g,s,a,A),(!u||f)&&(m.arcType=cn.NONE);return!0}function Sft(e,t,n,i,o){let r=Xi(n,"outerBoundaryIs",Ne.kml),s=Xi(r,"LinearRing",Ne.kml),a=Xi(s,"coordinates",Ne.kml),c=e._ellipsoid,u=F4(a,c),f=fm(n,"extrude",Ne.kml),h=Un(n,"altitudeMode",Ne.kml),A=Un(n,"altitudeMode",Ne.gx),g=g2(h,A),m=l(o.polygon)?o.polygon.clone():MX(),_=o.polyline;if(l(_)&&(m.outlineColor=l(_.material)?_.material.color:G.WHITE,m.outlineWidth=_.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let y=new fc(u),C=um(n,"innerBoundaryIs",Ne.kml);for(let E=0;E<C.length;E++){s=um(C[E],"LinearRing",Ne.kml);for(let I=0;I<s.length;I++)a=Xi(s[I],"coordinates",Ne.kml),u=F4(a,c),l(u)&&y.holes.push(new fc(u))}m.hierarchy=y}return!0}function wft(e,t,n,i,o){let r=Un(n,"altitudeMode",Ne.kml),s=Un(n,"altitudeMode",Ne.gx),a=um(n,"coord",Ne.gx),c=um(n,"angles",Ne.gx),u=um(n,"when",Ne.kml),f=fm(n,"extrude",Ne.kml),h=g2(r,s),A=e._ellipsoid;c.length>0&&yt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],_=[];for(let C=0;C<g;C++){let E=U4(a[C].textContent,A);m.push(E),_.push(K.fromIso8601(u[C].textContent))}let y=new qa;return y.addSamples(_,m),i.position=y,G4(e,i,o,OEe(r,s)),FEe(i,o),i.availability=new ls,u.length>0&&i.availability.addInterval(new Pn({start:_[0],stop:_[_.length-1]})),h&&f&&LX(t,i,o),!0}function wEe(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new qa;h.addSamples(e,t),n.intervals.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:xft(h,s,a)})),i.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Bft(e,t,n,i,o){let r=fm(n,"interpolate",Ne.gx),s=um(n,"Track",Ne.gx),a,c,u,f=!1,h=new Bg,A=new ls,g=new ja,m=e._ellipsoid;for(let _=0,y=s.length;_<y;_++){let C=s[_],E=um(C,"when",Ne.kml),I=um(C,"coord",Ne.gx),b=Un(C,"altitudeMode",Ne.kml),S=Un(C,"altitudeMode",Ne.gx),B=g2(b,S),v=fm(C,"extrude",Ne.kml),P=Math.min(I.length,E.length),M=[];a=[];for(let L=0;L<P;L++){let p=U4(I[L].textContent,m);M.push(p),a.push(K.fromIso8601(E[L].textContent))}r&&(l(c)&&wEe([c,a[0]],[u,M[0]],g,A,h,!1,"absolute",void 0,!1),c=a[P-1],u=M[M.length-1]),wEe(a,M,g,A,h,B&&v,b,S,!0),f=f||B&&v}return i.availability=A,i.position=g,G4(e,i,o),FEe(i,o),f&&(LX(t,i,o),i.polyline.show=h),!0}var QEe={Point:Tft,LineString:SEe,LinearRing:SEe,Polygon:Sft,Track:wft,MultiTrack:Bft,MultiGeometry:Dft,Model:vft};function Dft(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=QEe[f.localName];if(l(h)){let A=REe(f,t,r);A.parent=i,A.name=i.name,A.availability=i.availability,A.description=i.description,A.kml=i.kml,h(e,t,f,A,o)&&(a=!0)}}return a}function vft(e,t,n,i,o){return yt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function Pft(e,t){let n=Xi(e,"ExtendedData",Ne.kml);if(!l(n))return;l(Xi(n,"SchemaData",Ne.kml))&&yt("kml-schemaData","KML - SchemaData is unsupported"),l(ia(n,"xmlns:prefix"))&&yt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=um(n,"Data",Ne.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=ia(a,"name");l(c)&&(i[c]={displayName:Un(a,"displayName",Ne.kml),value:Un(a,"value",Ne.kml)})}}t.kml.extendedData=i}var Bo;typeof document<"u"&&(Bo=document.createElement("div"));function Rft(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=Un(e,"description",Ne.kml),h=t.balloonStyle??n.balloonStyle,A=G.WHITE,g=G.BLACK,m=f;l(h)&&(A=h.bgColor??G.WHITE,g=h.textColor??G.BLACK,m=h.text??f);let _;if(l(m)){if(m=m.replace("$[name]",t.name??""),m=m.replace("$[description]",f??""),m=m.replace("$[address]",c.address??""),m=m.replace("$[Snippet]",c.snippet??""),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let E=m.match(/\$\[.+?\]/g);if(E!==null)for(r=0;r<E.length;r++){let I=E[r],b=I.substr(2,I.length-3),S=/\/displayName$/.test(b);b=b.replace(/\/displayName$/,""),_=u[b],l(_)&&(_=S?_.displayName:_.value),l(_)&&(m=m.replace(I,_??""))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],_=u[s],m+=`<tr><th>${_.displayName??s}</th><td>${_.value??""}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=hft.link(m),Bo.innerHTML=m;let y=Bo.querySelectorAll("a");for(r=0;r<y.length;r++)y[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(If(Bo,"a","href",i),If(Bo,"link","href",i),If(Bo,"area","href",i),If(Bo,"img","src",i),If(Bo,"iframe","src",i),If(Bo,"video","src",i),If(Bo,"audio","src",i),If(Bo,"source","src",i),If(Bo,"track","src",i),If(Bo,"input","src",i),If(Bo,"embed","src",i),If(Bo,"script","src",i),If(Bo,"video","poster",i)),xf(Bo,"a","href",o),xf(Bo,"link","href",o),xf(Bo,"area","href",o),xf(Bo,"img","src",o),xf(Bo,"iframe","src",o),xf(Bo,"video","src",o),xf(Bo,"audio","src",o),xf(Bo,"source","src",o),xf(Bo,"track","src",o),xf(Bo,"input","src",o),xf(Bo,"embed","src",o),xf(Bo,"script","src",o),xf(Bo,"video","poster",o);let C='<div class="cesium-infoBox-description-lighter" style="';C+="overflow:auto;",C+="word-wrap:break-word;",C+=`background-color:${A.toCssColorString()};`,C+=`color:${g.toCssColorString()};`,C+='">',C+=`${Bo.innerHTML}</div>`,Bo.innerHTML="",t.description=C}function z4(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=REe(t,i,n.context),c=a.kml,u=Eft(e,t,n.styleCollection,r,s),f=Un(t,"name",Ne.kml);a.name=f,a.parent=o;let h=yft(t);l(h)||(h=_ft(t)),a.availability=h,QX(a);function A(I){return I?I.show&&A(I.parent):!0}let g=fm(t,"visibility",Ne.kml);a.show=A(o)&&(g??!0);let m=Xi(t,"author",Ne.atom),_=c.author;_.name=Un(m,"name",Ne.atom),_.uri=Un(m,"uri",Ne.atom),_.email=Un(m,"email",Ne.atom);let y=Xi(t,"link",Ne.atom),C=c.link;C.href=ia(y,"href"),C.hreflang=ia(y,"hreflang"),C.rel=ia(y,"rel"),C.type=ia(y,"type"),C.title=ia(y,"title"),C.length=ia(y,"length"),c.address=Un(t,"address",Ne.kml),c.phoneNumber=Un(t,"phoneNumber",Ne.kml),c.snippet=Un(t,"Snippet",Ne.kml),Pft(t,a),Rft(t,a,u,s,r);let E=e._ellipsoid;return GEe(t,a,E),UEe(t,a,E),l(Xi(t,"Region",Ne.kml))&&yt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function kEe(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Mft(e,t,n,i){let o=z4(e,t,n),r=ze(n);r.parentEntity=o.entity,kEe(e,t,r,i)}function Nft(e,t,n,i){let o=z4(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),A=QEe[h.localName];l(A)&&(A(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),G4(e,r,s))}var Lft={FlyTo:Qft,Wait:Fft,SoundCue:TX,AnimatedUpdate:TX,TourControl:TX};function Oft(e,t,n,i){let o=Un(t,"name",Ne.kml),r=ia(t,"id"),s=new d2(o,r),a=Xi(t,"Playlist",Ne.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let A=Lft[h.localName];A?A(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function TX(e,t){yt(`KML Tour unsupported node ${t.localName}`)}function Fft(e,t){let n=pi(t,"duration",Ne.gx);e.addPlaylistEntry(new A2(n))}function Qft(e,t,n){let i=pi(t,"duration",Ne.gx),o=Un(t,"flyToMode",Ne.gx),r={kml:{}};GEe(t,r,n),UEe(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new m2(i,o,s);e.addPlaylistEntry(a)}function UEe(e,t,n){let i=Xi(e,"Camera",Ne.kml);if(l(i)){let o=pi(i,"longitude",Ne.kml)??0,r=pi(i,"latitude",Ne.kml)??0,s=pi(i,"altitude",Ne.kml)??0,a=pi(i,"heading",Ne.kml)??0,c=pi(i,"tilt",Ne.kml)??0,u=pi(i,"roll",Ne.kml)??0,f=d.fromDegrees(o,r,s,n),h=rc.fromDegrees(a,c-90,u);t.kml.camera=new GF(f,h)}}function GEe(e,t,n){let i=Xi(e,"LookAt",Ne.kml);if(l(i)){let o=pi(i,"longitude",Ne.kml)??0,r=pi(i,"latitude",Ne.kml)??0,s=pi(i,"altitude",Ne.kml)??0,a=pi(i,"heading",Ne.kml),c=pi(i,"tilt",Ne.kml),u=pi(i,"range",Ne.kml)??0;c=D.toRadians(c??0),a=D.toRadians(a??0);let f=new Md(a,c-D.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new f2(h,f)}}function kft(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=Xi(t,"Icon",Ne.kml),c=NX(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=Xi(t,"screenXY",Ne.kml),A=Xi(t,"overlayXY",Ne.kml),g=Xi(t,"size",Ne.kml),m,_,y,C,E,I;l(g)&&(m=aC(g,"x"),_=aC(g,"y"),y=ia(g,"xunits"),C=ia(g,"yunits"),l(m)&&m!==-1&&m!==0&&(y==="fraction"?E=`width: ${Math.floor(m*100)}%`:y==="pixels"&&(E=`width: ${m}px`),f.push(E)),l(_)&&_!==-1&&_!==0&&(C==="fraction"?I=`height: ${Math.floor(_*100)}%`:C==="pixels"&&(I=`height: ${_}px`),f.push(I))),u.style=f.join(";");let b=0,S=u.height;l(A)&&(m=aC(A,"x"),_=aC(A,"y"),y=ia(A,"xunits"),C=ia(A,"yunits"),l(m)&&(y==="fraction"?b=m*u.width:(y==="pixels"||y==="insetPixels")&&(b=m)),l(_)&&(C==="fraction"?S=_*u.height:(C==="pixels"||C==="insetPixels")&&(S=_))),l(h)&&(m=aC(h,"x"),_=aC(h,"y"),y=ia(h,"xunits"),C=ia(h,"yunits"),l(m)&&(y==="fraction"?E=`left: calc(${Math.floor(m*100)}% - ${b}px)`:y==="pixels"?E=`left: ${m-b}px`:y==="insetPixels"&&(E=`right: ${m-b}px`),f.push(E)),l(_)&&(C==="fraction"?I=`bottom: calc(${Math.floor(_*100)}% - ${S}px)`:C==="pixels"?I=`bottom: ${_-S}px`:C==="insetPixels"&&(I=`top: ${_-S}px`),f.push(I))),u.style=f.join(";")},o.appendChild(u)}function Uft(e,t,n,i){let r=z4(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=F4(Xi(t,"LatLonQuad",Ne.gx),c),f=pi(t,"drawOrder",Ne.kml);if(l(u))s=MX(),s.hierarchy=new fc(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new gh,s.zIndex=f,r.rectangle=s;let m=Xi(t,"LatLonBox",Ne.kml);if(l(m)){let _=pi(m,"west",Ne.kml),y=pi(m,"south",Ne.kml),C=pi(m,"east",Ne.kml),E=pi(m,"north",Ne.kml);l(_)&&(_=D.negativePiToPi(D.toRadians(_))),l(y)&&(y=D.clampToLatitudeRange(D.toRadians(y))),l(C)&&(C=D.negativePiToPi(D.toRadians(C))),l(E)&&(E=D.clampToLatitudeRange(D.toRadians(E))),s.coordinates=new ae(_,y,C,E);let I=pi(m,"rotation",Ne.kml);if(l(I)){let b=D.toRadians(I);s.rotation=b,s.stRotation=b}}}let h=Xi(t,"Icon",Ne.kml),A=NX(h,e,n.sourceResource,n.uriResolver,!0);if(l(A)){a&&yt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=pi(h,"x",Ne.gx),_=pi(h,"y",Ne.gx),y=pi(h,"w",Ne.gx),C=pi(h,"h",Ne.gx);(l(m)||l(_)||l(y)||l(C))&&yt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=A,s.material.color=II(t,"color",Ne.kml),s.material.transparent=!0}else s.material=II(t,"color",Ne.kml);let g=Un(t,"altitudeMode",Ne.kml);l(g)?g==="absolute"?(s.height=pi(t,"altitude",Ne.kml),s.zIndex=void 0):g!=="clampToGround"&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=Un(t,"altitudeMode",Ne.gx),g==="relativeToSeaFloor"?(yt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=pi(t,"altitude",Ne.kml),s.zIndex=void 0):g==="clampToSeaFloor"?yt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function zEe(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),yt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var cC={INTERVAL:0,EXPIRE:1,STOP:2};function k4(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var Gft=new ae,rw=new Ae,SX=new U,zft=new d;function OX(e,t,n,i,o,r){function s(u){return u<-D.PI_OVER_TWO?-D.PI_OVER_TWO:u>D.PI_OVER_TWO?D.PI_OVER_TWO:u}function a(u){return u>D.PI?u-D.TWO_PI:u<-D.PI?u+D.TWO_PI:u}let c=VC(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ie.MORPHING){let u,f;if(o=o??Gft,l(n)&&(SX.x=n.clientWidth*.5,SX.y=n.clientHeight*.5,u=t.pickEllipsoid(SX,r,zft)),l(u)?f=r.cartesianToCartographic(u,rw):(f=ae.center(o,rw),u=r.cartographicToCartesian(f)),l(i)&&!D.equalsEpsilon(i,1,D.EPSILON9)){let C=o.width*i*.5,E=o.height*i*.5;o=new ae(a(f.longitude-C),s(f.latitude-E),a(f.longitude+C),s(f.latitude+E))}c=c.replace("[bboxWest]",D.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",D.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",D.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",D.toDegrees(o.north).toString());let h=D.toDegrees(f.longitude).toString(),A=D.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",A),c=c.replace("[lookatTilt]",D.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",D.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",A),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,rw),c=c.replace("[cameraLon]",D.toDegrees(rw.longitude).toString()),c=c.replace("[cameraLat]",D.toDegrees(rw.latitude).toString()),c=c.replace("[cameraAlt]",D.toDegrees(rw.height).toString());let g=t.frustum,m=g.aspectRatio,_="",y="";if(l(m)){let C=D.toDegrees(g.fov);m>1?(_=C,y=C/m):(y=C,_=C*m)}c=c.replace("[horizFov]",_.toString()),c=c.replace("[vertFov]",y.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Fu(c))}function Vft(e,t,n,i){let r=z4(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=Xi(t,"Link",Ne.kml);if(l(c)||(c=Xi(t,"Url",Ne.kml)),l(c)){let u=Un(c,"href",Ne.kml),f,h;if(l(u)){let A=u;if(u=RX(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(A=s.getDerivedResource({url:A}));else{if(A=u.clone(),f=Un(c,"viewRefreshMode",Ne.kml),f==="onRegion"){yt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=Un(c,"viewBoundScale",Ne.kml)??1;let y=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",C=Un(c,"viewFormat",Ne.kml)??y,E=Un(c,"httpQuery",Ne.kml);l(C)&&u.setQueryParameters(Fu(k4(C))),l(E)&&u.setQueryParameters(Fu(k4(E)));let I=e._ellipsoid;OX(u,e.camera,e.canvas,h,e._lastCameraView.bbox,I)}let g={sourceUri:A,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new Ea,_=FX(e,m,u,g).then(function(y){let C=e._entityCollection,E=m.values;C.suspendEvents();for(let S=0;S<E.length;S++){let B=E[S];l(B.parent)||(B.parent=r,QX(B)),C.add(B)}C.resumeEvents();let I=Un(c,"refreshMode",Ne.kml),b=pi(c,"refreshInterval",Ne.kml)??0;if(I==="onInterval"&&b>0||I==="onExpire"||f==="onStop"){let S=Xi(y,"NetworkLinkControl",Ne.kml),B=l(S),v=K.now(),P={id:Xn(),href:u,cookie:{},lastUpdated:v,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:v},M=0;if(B&&(P.cookie=Fu(Un(S,"cookie",Ne.kml)??""),M=pi(S,"minRefreshPeriod",Ne.kml)??0),I==="onInterval")B&&(b=Math.max(M,b)),P.refreshMode=cC.INTERVAL,P.time=b;else if(I==="onExpire"){let L;if(B&&(L=Un(S,"expires",Ne.kml)),l(L))try{let p=K.fromIso8601(L),x=K.secondsDifference(p,v);x>0&&x<M&&K.addSeconds(v,M,p),P.refreshMode=cC.EXPIRE,P.time=p}catch{yt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(P.refreshMode=cC.STOP,P.time=pi(c,"viewRefreshTime",Ne.kml)??0):yt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(P.refreshMode)&&e._networkLinks.set(P.id,P)}}).catch(function(y){yt(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,y)});i.addPromise(_)}}}function Hft(e,t,n,i){let o=PX[t.localName];return l(o)?o(e,t,n,i):zEe(e,t,n,i)}function DX(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:Xi(a,"Document",Ne.kml),u=Un(c,"name",Ne.kml);l(u)||(u=xg(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new bf._DeferredLoading(e),h=new Ea(e);return Promise.all(LEe(e,n,h,i,!1,o)).then(function(){let A=n.documentElement;if(A.localName==="kml"){let m=A.childNodes;for(let _=0;_<m.length;_++){let y=m[_];if(l(PX[y.localName])){A=y;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),Hft(e,A,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function Wft(e,t,n,i,o){let r=fn("ThirdParty/Workers/z-worker-pako.js");jS({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new iw(new zg(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let A=a[h];A.directory||(/\.kml$/i.test(A.filename)&&(!l(f)||!/\//i.test(A.filename))?(l(f)&&c.push(bX(f,u)),f=A):c.push(bX(A,u)))}return l(f)&&c.push(gft(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new ce("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),DX(e,t,u.kml,i,u,o)})})}function FX(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let A=0;A<h;A++)u.push(f[A])}}else o=o??we.DEFAULT.clone();return o=we.createIfNeeded(o),l(a)&&(a=kn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?Aft(u).then(function(f){return f?Wft(e,t,u,o,a):pft(u).then(function(h){h=vEe(h),h=PEe(h);let A,g;try{A=vX.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||A.body||A.documentElement.tagName==="parsererror"){let m=l(g)?g:A.documentElement.firstChild.nodeValue;throw m||(m=A.body.innerText),new ce(m)}return DX(e,t,A,o,r,a,s)})}):DX(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function bf(e){e=e??V.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new _e,this._error=new _e,this._loading=new _e,this._refresh=new _e,this._unsupportedNode=new _e,this._clock=void 0,this._entityCollection=new Ea(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new Og,this._networkLinks=new vt,this._entityCluster=new lf,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=e.ellipsoid??te.default;let i=e.credit;typeof i=="string"&&(i=new Bt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}bf.load=function(e,t){return t=t??V.EMPTY_OBJECT,new bf(t).load(e,t)};Object.defineProperties(bf.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});bf.prototype.load=function(e,t){t=t??V.EMPTY_OBJECT,us.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return FX(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Jh,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=fs.LOOP_STOP,o.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),us.setLoading(i,!1),i}).catch(function(o){return us.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};bf.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function QX(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function jft(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=Xi(r,"NetworkLinkControl",Ne.kml),c=l(a),u=0;if(c){if(l(Xi(a,"Update",Ne.kml))){yt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Fu(Un(a,"cookie",Ne.kml)??""),u=pi(a,"minRefreshPeriod",Ne.kml)??0}let f=K.now(),h=t.refreshMode;if(h===cC.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===cC.EXPIRE){let v;if(l(a)&&(v=Un(a,"expires",Ne.kml)),l(v))try{let P=K.fromIso8601(v),M=K.secondsDifference(P,f);M>0&&M<u&&K.addSeconds(f,u,P),t.time=P}catch{yt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let A=t.entity,g=e._entityCollection,m=n.values;function _(v){g.remove(v);let P=v._children,M=P.length;for(let L=0;L<M;++L)_(P[L])}g.suspendEvents();let y=g.values.slice(),C;for(C=0;C<y.length;++C){let v=y[C];v.parent===A&&(v.parent=void 0,_(v))}for(g.resumeEvents(),g.suspendEvents(),C=0;C<m.length;C++){let v=m[C];l(v.parent)||(v.parent=A,QX(v)),g.add(v)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let E=g.computeAvailability(),I=E.start,b=E.stop,S=K.equals(I,je.MINIMUM_VALUE),B=K.equals(b,je.MAXIMUM_VALUE);if(!S||!B){let v=e._clock;(v.startTime!==I||v.stopTime!==b)&&(v.startTime=I,v.stopTime=b,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var wX=new vt;bf.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=K.now(),i=this;wX.removeAll();function o(f){let h=f._children,A=h.length;for(let g=0;g<A;++g){let m=h[g];wX.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,D.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,D.EPSILON7)&&a.upWC.equalsEpsilon(s.up,D.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new vt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!wX.contains(h.id)){if(!f.updating){let A=!1;if(f.refreshMode===cC.INTERVAL?K.secondsDifference(n,f.lastUpdated)>f.time&&(A=!0):f.refreshMode===cC.EXPIRE?K.greaterThan(n,f.time)&&(A=!0):f.refreshMode===cC.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&K.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(A=!0)),A){o(h),f.updating=!0;let g=new Ea,m=f.href.clone();m.setQueryParameters(f.cookie);let _=i._ellipsoid??te.default;OX(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,_),FX(i,g,m,{context:h.id}).then(jft(i,f,g,c,m)).catch(function(y){let C=`NetworkLink ${f.href} refresh failed: ${y}`;console.log(C),i._error.raiseEvent(i,C)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function Yft(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}bf._DeferredLoading=wA;bf._getTimestamp=Li;var xI=bf;function _2(){me.throwInstantiationError()}_2.prototype.update=me.throwInstantiationError;_2.prototype.getBoundingSphere=me.throwInstantiationError;_2.prototype.isDestroyed=me.throwInstantiationError;_2.prototype.destroy=me.throwInstantiationError;var kX=_2;var UX=32,qft="http://www.opengis.net/kml/2.2",hm="http://www.google.com/kml/ext/2.2",Kft="http://www.w3.org/2000/xmlns/";function V4(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Xft=/^data:image\/([^,;]+)/;V4.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof we){if(e=we.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Xft);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function Jft(e,t){return function(n){e._files[t]=n}}V4.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new ce("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(Jft(this,r))}return o};Object.defineProperties(V4.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function H4(e){this._time=e}H4.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};H4.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return TI(n)};H4.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function GX(){this._ids={},this._styles={},this._count=0}GX.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};GX.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function WEe(){this._ids={}}WEe.prototype.get=function(e){if(!l(e))return this.get(Xn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function zX(e){e=e??V.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=zX._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(Kft,"xmlns:gx",hm);let a=r.createElement("Document");s.appendChild(a),YEe(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?Zft(f,c.files):{kml:f,externalFiles:c.files}})}function Zft(e,t){let n=fn("ThirdParty/Workers/z-worker-pako.js");jS({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new t2,o=new N4(i);return o.add("doc.kml",new f4(e)).then(function(){let r=Object.keys(t);return jEe(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function jEe(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new zg(n[o])).then(function(){return jEe(e,t,n,i+1)})}zX._createState=function(e){let t=e.entities,n=new GX,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===je.MINIMUM_VALUE?r.stop===je.MAXIMUM_VALUE?r=new Pn:K.addSeconds(r.stop,-10*s,r.start):r.stop===je.MAXIMUM_VALUE&&K.addSeconds(r.start,10*s,r.stop);let a=new V4(e.modelCallback);return{kmlDoc:document.implementation.createDocument(qft,"kml"),ellipsoid:e.ellipsoid??te.default,idManager:new WEe,styleCache:n,externalFileHandler:a,time:o,valueGetter:new H4(o),sampleDuration:s,defaultAvailability:new ls([r])}};function YEe(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let A=n[h];c=[],u=[],f=[],$ft(e,A,u,f),edt(e,A.polyline,u,f),HEe(e,A.rectangle,u,f,c),HEe(e,A.polygon,u,f,c),odt(e,A,A.model,u,f);let g,m=A.availability;l(m)&&(g=i.createElement("TimeSpan"),K.equals(m.start,je.MINIMUM_VALUE)||g.appendChild(Cn(i,"begin",K.toIso8601(m.start))),K.equals(m.stop,je.MAXIMUM_VALUE)||g.appendChild(Cn(i,"end",K.toIso8601(m.stop))));for(let C=0;C<c.length;++C){let E=c[C];E.setAttribute("id",s.get(A.id)),E.appendChild(Cn(i,"name",A.name)),E.appendChild(Cn(i,"visibility",A.show)),E.appendChild(Cn(i,"description",A.description)),l(g)&&E.appendChild(g),t.appendChild(E)}let _=u.length;if(_>0){let C=i.createElement("Placemark");C.setAttribute("id",s.get(A.id));let E=A.name,I=A.label;if(l(I)){let S=i.createElement("LabelStyle"),B=r.get(I.text);E=l(B)&&B.length>0?B:E;let v=r.getColor(I.fillColor);l(v)&&(S.appendChild(Cn(i,"color",v)),S.appendChild(Cn(i,"colorMode","normal")));let P=r.get(I.scale);l(P)&&S.appendChild(Cn(i,"scale",P)),f.push(S)}C.appendChild(Cn(i,"name",E)),C.appendChild(Cn(i,"visibility",A.show)),C.appendChild(Cn(i,"description",A.description)),l(g)&&C.appendChild(g),t.appendChild(C);let b=f.length;if(b>0){let S=i.createElement("Style");for(let B=0;B<b;++B)S.appendChild(f[B]);C.appendChild(Cn(i,"styleUrl",o.get(S)))}if(u.length===1)C.appendChild(u[0]);else if(u.length>1){let S=i.createElement("MultiGeometry");for(let B=0;B<_;++B)S.appendChild(u[B]);C.appendChild(S)}}let y=A._children;if(y.length>0){let C=i.createElement("Folder");C.setAttribute("id",s.get(A.id)),C.appendChild(Cn(i,"name",A.name)),C.appendChild(Cn(i,"visibility",A.show)),C.appendChild(Cn(i,"description",A.description)),t.appendChild(C),YEe(e,C,y)}}}var Tu=new d,zl=new Ae,dm=new K;function $ft(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){qEe(e,t,a,n,i);return}s.get(c,void 0,Tu);let u=Cn(o,"coordinates",bI(Tu,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(SI(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let A=a instanceof Tc?XEe(e,a):KEe(e,a);i.push(A)}function qEe(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof ja?(c=u.intervals,f=!1):c=t.availability??e.defaultAvailability;let h=n instanceof Ap,A,g,m,_=[];for(A=0;A<c.length;++A){let C=c.get(A),E=f?u:C.data,I=r.createElement("altitudeMode");E instanceof pA?(E=E._value,I.appendChild(SI(e,Ze.CLAMP_TO_GROUND))):l(n)?I.appendChild(SI(e,n.heightReference)):I.appendChild(SI(e,Ze.NONE));let b=[],S=[];if(E.isConstant){a.get(E,void 0,Tu);let v=Cn(r,"coordinates",bI(Tu,s));b.push(K.toIso8601(C.start)),S.push(v),b.push(K.toIso8601(C.stop)),S.push(v)}else if(E instanceof qa)for(m=E._property._times,g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),E.getValueInReferenceFrame(m[g],$i.FIXED,Tu),S.push(bI(Tu,s));else if(E instanceof hf){m=E._times;let v=E._values;for(g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),d.fromArray(v,g*3,Tu),S.push(bI(Tu,s))}else{let v=e.sampleDuration;C.start.clone(dm),C.isStartIncluded||K.addSeconds(dm,v,dm);let P=C.stop;for(;K.lessThan(dm,P);)E.getValue(dm,Tu),b.push(K.toIso8601(dm)),S.push(bI(Tu,s)),K.addSeconds(dm,v,dm);C.isStopIncluded&&K.equals(dm,P)&&(E.getValue(dm,Tu),b.push(K.toIso8601(dm)),S.push(bI(Tu,s)))}let B=r.createElementNS(hm,"Track");B.appendChild(I);for(let v=0;v<b.length;++v){let P=Cn(r,"when",b[v]),M=Cn(r,"coord",S[v],hm);B.appendChild(P),B.appendChild(M)}h&&B.appendChild(JEe(e,n)),_.push(B)}if(_.length===1)i.push(_[0]);else if(_.length>1){let C=r.createElementNS(hm,"MultiTrack");for(A=0;A<_.length;++A)C.appendChild(_[A]);i.push(C)}if(l(n)&&!h){let C=n instanceof Tc?XEe(e,n):KEe(e,n);o.push(C)}let y=t.path;if(l(y)){let C=a.get(y.width),E=y.material;if(l(E)||l(C)){let I=r.createElement("LineStyle");l(C)&&I.appendChild(Cn(r,"width",C)),VX(e,E,I),o.push(I)}}}function KEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(Cn(n,"color",r)),o.appendChild(Cn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(Cn(n,"scale",s/UX)),o}function XEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let A=n.createElement("Icon");A.appendChild(Cn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(A.appendChild(Cn(n,"x",g.x,hm)),A.appendChild(Cn(n,"y",g.y,hm)),A.appendChild(Cn(n,"w",g.width,hm)),A.appendChild(Cn(n,"h",g.height,hm))),r.appendChild(A)}let a=i.getColor(t.color);l(a)&&(r.appendChild(Cn(n,"color",a)),r.appendChild(Cn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(Cn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=c??1,U.divideByScalar(u,c,u);let A=i.get(t.width,UX),g=i.get(t.height,UX),m=i.get(t.horizontalOrigin,Ri.CENTER);m===Ri.CENTER?u.x-=A*.5:m===Ri.RIGHT&&(u.x-=A);let _=i.get(t.verticalOrigin,zn.CENTER);_===zn.TOP?u.y+=g:_===zn.CENTER&&(u.y+=g*.5);let y=n.createElement("hotSpot");y.setAttribute("x",-u.x),y.setAttribute("y",u.y),y.setAttribute("xunits","pixels"),y.setAttribute("yunits","pixels"),r.appendChild(y)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=D.toDegrees(-f),f===0&&(f=360),r.appendChild(Cn(n,"heading",f))),r}function edt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(Cn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,A=s.get(h),g=Cn(o,"coordinates",bI(A,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(Cn(o,"drawOrder",m,hm)),n.push(a);let _=o.createElement("LineStyle"),y=s.get(t.width);l(y)&&_.appendChild(Cn(o,"width",y)),VX(e,t.material,_),i.push(_)}function tdt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,zl),c.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${r}`);let f=Cn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),A=i.createElement("LinearRing");return A.appendChild(f),h.appendChild(A),[h]}function VEe(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)Ae.fromCartesian(t[f],r,zl),s.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${i?zl.height:n}`);let c=Cn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function ndt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(VEe(e,f,r,s)),a.push(h);let A=u.holes;if(l(A)){let g=A.length;for(let m=0;m<g;++m){let _=i.createElement("innerBoundaryIs");_.appendChild(VEe(e,A[m].positions,r,s)),a.push(_)}}return a}function HEe(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof gh;if(a&&s.getMaterialType(t.material)==="Image"){idt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(Cn(r,"extrude",!0));let f=a?tdt(e,t,u):ndt(e,t,u),h=f.length;for(let y=0;y<h;++y)c.appendChild(f[y]);let A=r.createElement("altitudeMode");A.appendChild(SI(e,t.heightReference)),c.appendChild(A),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(Cn(r,"fill",m)),VX(e,t.material,g);let _=s.get(t.outline,!1);if(_){g.appendChild(Cn(r,"outline",_));let y=r.createElement("LineStyle"),C=s.get(t.outlineWidth,1);y.appendChild(Cn(r,"width",C));let E=s.getColor(t.outlineColor,G.BLACK);y.appendChild(Cn(r,"color",E)),y.appendChild(Cn(r,"colorMode","normal")),i.push(y)}i.push(g)}function idt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(SI(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(Cn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(Cn(i,"north",D.toDegrees(u.north))),f.appendChild(Cn(i,"south",D.toDegrees(u.south))),f.appendChild(Cn(i,"east",D.toDegrees(u.east))),f.appendChild(Cn(i,"west",D.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),A=r.texture(h.image),g=i.createElement("Icon");g.appendChild(Cn(i,"href",A)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(Cn(i,"color",TI(h.color))),n.push(s)}function JEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(Cn(n,"x",s)),u.appendChild(Cn(n,"y",s)),u.appendChild(Cn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(Cn(n,"href",c)),r.appendChild(a),r}function odt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){qEe(e,t,n,i,o);return}let u=JEe(e,n),f=r.createElement("altitudeMode");f.appendChild(SI(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,Tu),Ae.fromCartesian(Tu,s,zl);let h=r.createElement("Location");h.appendChild(Cn(r,"longitude",D.toDegrees(zl.longitude))),h.appendChild(Cn(r,"latitude",D.toDegrees(zl.latitude))),h.appendChild(Cn(r,"altitude",zl.height)),u.appendChild(h),i.push(u)}function VX(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=TI(G.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=TI(r.color);break;case"PolylineOutline":s=TI(r.color),c=TI(r.outlineColor),u=r.outlineWidth,n.appendChild(Cn(i,"outerColor",c,hm)),n.appendChild(Cn(i,"outerWidth",u,hm));break;case"Stripe":s=TI(r.oddColor);break}l(s)&&(n.appendChild(Cn(i,"color",s)),n.appendChild(Cn(i,"colorMode","normal")))}function SI(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,Ze.NONE),r;switch(o){case Ze.NONE:r=n.createTextNode("absolute");break;case Ze.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case Ze.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function bI(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)Ae.fromCartesian(e[o],t,zl),i.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${zl.height}`);return i.join(" ")}function Cn(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function TI(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var HX=zX;var wI=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function W4(e){this._context=e}var y2,rdt=new nt({primitiveType:Me.TRIANGLES}),sdt=new Ci({color:new G(0,0,0,0)});function adt(e,t){return new $r({context:e,colorTextures:[t],destroyAttachments:!1})}function cdt(e,t){return an.fromCache({context:e,vertexShaderSource:wI,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function ldt(e,t){return(!l(y2)||y2.viewport.width!==e||y2.viewport.height!==t)&&(y2=Ue.fromCache({viewport:new Ye(0,0,e,t)})),y2}W4.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:cdt(o,e.fragmentShaderSource),a=adt(o,t),c=ldt(n,i),u=e.uniformMap,f=sdt;f.framebuffer=a,f.renderState=c,f.execute(o);let h=rdt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};W4.prototype.isDestroyed=function(){return!1};W4.prototype.destroy=function(){return ue(this)};var C2=W4;function udt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var Xc=udt;function mm(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(mm.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});mm.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function fdt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}mm.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new He({sources:[t]})),typeof n=="string"&&(n=new He({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?fdt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),A=new an({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:A,keyword:a,derivedKeywords:[],count:0},A._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};mm.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){WX(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};mm.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};mm.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new He({sources:[r]})),typeof s=="string"&&(s=new He({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new an({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),A={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=A,this._shaders[o]=A,h};function WX(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];WX(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}mm.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];WX(this,n),--this._numberOfShaders}this._shadersToRelease={}};mm.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};mm.prototype.isDestroyed=function(){return!1};mm.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var E2=mm;function BI(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(BI.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});BI.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};BI.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};BI.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};BI.prototype.isDestroyed=function(){return!1};BI.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var I2=BI;var jX={};function ddt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var hdt=32.184,mdt=2451545;function p0e(e,t){t=K.addSeconds(e,hdt,t);let n=K.totalDays(t)-mdt;return t=K.addSeconds(t,ddt(n),t),t}var j4=new K(2451545,0,ni.TAI),Adt=1e3,Fd=D.RADIANS_PER_DEGREE,Tf=D.RADIANS_PER_ARCSECOND,Cc=14959787e4,ZEe=new J;function g0e(e,t,n,i,o,r,s){n<0&&(n=-n,o+=D.PI);let a=e*(1-t),c=i-o,u=o,f=gdt(r-i,t),h=pdt(t,0);Idt(c,n,u,ZEe);let A=a*(1+t),g=Math.cos(f),m=Math.sin(f),_=1+t*g,y=A/_;return l(s)?(s.x=y*g,s.y=y*m,s.z=0):s=new d(y*g,y*m,0),J.multiplyByVector(ZEe,s,s)}function pdt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function gdt(e,t){let n=Cdt(e,t);return Edt(n,t)}var _dt=50,ydt=D.EPSILON8;function Cdt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<_dt&&Math.abs(o-i)>ydt;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*D.TWO_PI,o}function Edt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=D.zeroToTwoPi(r),e<0&&(r-=D.TWO_PI),r+=n*D.TWO_PI,r}function Idt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new J(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var xdt=1.0000010178*Cc,bdt=100.46645683*Fd,Tdt=129597742283429e-5*Tf,$Ee=16002,e0e=21863,t0e=32004,n0e=10931,i0e=14529,o0e=16368,r0e=15318,s0e=32794,Sdt=64*1e-7*Cc,wdt=-152*1e-7*Cc,Bdt=62*1e-7*Cc,Ddt=-8*1e-7*Cc,vdt=32*1e-7*Cc,Pdt=-41*1e-7*Cc,Rdt=19*1e-7*Cc,Mdt=-11*1e-7*Cc,Ndt=-150*1e-7*Cc,Ldt=-46*1e-7*Cc,Odt=68*1e-7*Cc,Fdt=54*1e-7*Cc,Qdt=14*1e-7*Cc,kdt=24*1e-7*Cc,Udt=-28*1e-7*Cc,Gdt=22*1e-7*Cc,a0e=10,c0e=16002,l0e=21863,u0e=10931,f0e=1473,d0e=32004,h0e=4387,m0e=73,zdt=-325*1e-7,Vdt=-322*1e-7,Hdt=-79*1e-7,Wdt=232*1e-7,jdt=-52*1e-7,Ydt=97*1e-7,qdt=55*1e-7,Kdt=-41*1e-7,Xdt=-105*1e-7,Jdt=-137*1e-7,Zdt=258*1e-7,$dt=35*1e-7,eht=-116*1e-7,tht=-88*1e-7,nht=-112*1e-7,iht=-80*1e-7,sw=new K(0,0,ni.TAI);function oht(e,t){p0e(e,sw);let i=(sw.dayNumber-j4.dayNumber+(sw.secondsOfDay-j4.secondsOfDay)/ri.SECONDS_PER_DAY)/(ri.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=xdt+Sdt*Math.cos($Ee*o)+Ndt*Math.sin($Ee*o)+wdt*Math.cos(e0e*o)+Ldt*Math.sin(e0e*o)+Bdt*Math.cos(t0e*o)+Odt*Math.sin(t0e*o)+Ddt*Math.cos(n0e*o)+Fdt*Math.sin(n0e*o)+vdt*Math.cos(i0e*o)+Qdt*Math.sin(i0e*o)+Pdt*Math.cos(o0e*o)+kdt*Math.sin(o0e*o)+Rdt*Math.cos(r0e*o)+Udt*Math.sin(r0e*o)+Mdt*Math.cos(s0e*o)+Gdt*Math.sin(s0e*o),s=bdt+Tdt*i+zdt*Math.cos(a0e*o)+Xdt*Math.sin(a0e*o)+Vdt*Math.cos(c0e*o)+Jdt*Math.sin(c0e*o)+Hdt*Math.cos(l0e*o)+Zdt*Math.sin(l0e*o)+Wdt*Math.cos(u0e*o)+$dt*Math.sin(u0e*o)+jdt*Math.cos(f0e*o)+eht*Math.sin(f0e*o)+Ydt*Math.cos(d0e*o)+tht*Math.sin(d0e*o)+qdt*Math.cos(h0e*o)+nht*Math.sin(h0e*o)+Kdt*Math.cos(m0e*o)+iht*Math.sin(m0e*o),a=.0167086342-.0004203654*i,c=102.93734808*Fd+11612.3529*Tf*i,u=469.97289*Tf*i,f=174.87317577*Fd-8679.27034*Tf*i;return g0e(r,a,u,c,f,s,t)}function _0e(e,t){p0e(e,sw);let i=(sw.dayNumber-j4.dayNumber+(sw.secondsOfDay-j4.secondsOfDay)/ri.SECONDS_PER_DAY)/ri.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*Fd,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*Fd,A=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*Fd,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,_=218.31664563*Fd,y=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,C=297.85019547*Fd+Tf*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),E=93.27209062*Fd+Tf*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),I=134.96340251*Fd+Tf*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),b=357.52910918*Fd+Tf*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),S=310.17137918*Fd-Tf*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),B=2*C,v=4*C,P=6*C,M=2*I,L=3*I,p=4*I,x=2*E;a+=3400.4*Math.cos(B)-635.6*Math.cos(B-I)-235.6*Math.cos(I)+218.1*Math.cos(B-b)+181*Math.cos(B+I),c+=.014216*Math.cos(B-I)+.008551*Math.cos(B-M)-.001383*Math.cos(I)+.001356*Math.cos(B+I)-.001147*Math.cos(v-L)-914e-6*Math.cos(v-M)+869e-6*Math.cos(B-b-I)-627e-6*Math.cos(B)-394e-6*Math.cos(v-p)+282e-6*Math.cos(B-b-M)-279e-6*Math.cos(C-I)-236e-6*Math.cos(M)+231e-6*Math.cos(v)+229e-6*Math.cos(P-p)-201e-6*Math.cos(M-x),f+=486.26*Math.cos(B-x)-40.13*Math.cos(B)+37.51*Math.cos(x)+25.73*Math.cos(M-x)+19.97*Math.cos(B-b-x),A+=-55609*Math.sin(B-I)-34711*Math.sin(B-M)-9792*Math.sin(I)+9385*Math.sin(v-L)+7505*Math.sin(v-M)+5318*Math.sin(B+I)+3484*Math.sin(v-p)-3417*Math.sin(B-b-I)-2530*Math.sin(P-p)-2376*Math.sin(B)-2075*Math.sin(B-L)-1883*Math.sin(M)-1736*Math.sin(P-5*I)+1626*Math.sin(b)-1370*Math.sin(P-L),m+=-5392*Math.sin(B-x)-540*Math.sin(b)-441*Math.sin(B)+423*Math.sin(x)-288*Math.sin(M-x),y+=-3332.9*Math.sin(B)+1197.4*Math.sin(B-I)-662.5*Math.sin(b)+396.3*Math.sin(I)-218*Math.sin(B-b);let T=2*S,w=3*S;f+=46.997*Math.cos(S)*i-.614*Math.cos(B-x+S)*i+.614*Math.cos(B-x-S)*i-.0297*Math.cos(T)*o-.0335*Math.cos(S)*o+.0012*Math.cos(B-x+T)*o-16e-5*Math.cos(S)*r+4e-5*Math.cos(w)*r+4e-5*Math.cos(T)*r;let R=2.116*Math.sin(S)*i-.111*Math.sin(B-x-S)*i-.0015*Math.sin(S)*o;A+=R,y+=R,m+=-520.77*Math.sin(S)*i+13.66*Math.sin(B-x+S)*i+1.12*Math.sin(B-S)*i-1.06*Math.sin(x-S)*i+.66*Math.sin(T)*o+.371*Math.sin(S)*o-.035*Math.sin(B-x+T)*o-.015*Math.sin(B-x+S)*o+.0014*Math.sin(S)*r-.0011*Math.sin(w)*r-9e-4*Math.sin(T)*r,a*=Adt;let O=u+f*Tf,k=h+A*Tf,Q=_+y*Tf,z=g+m*Tf;return g0e(a,c,O,k,z,Q,t)}var A0e=.012300034,rht=A0e/(A0e+1)*-1;function sht(e,t){return t=_0e(e,t),d.multiplyByScalar(t,rht,t)}var y0e=new J(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),x2=new d;jX.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),l(t)||(t=new d),x2=oht(e,x2),t=d.negate(x2,t),sht(e,x2),d.subtract(t,x2,t),J.multiplyByVector(y0e,t,t),t};jX.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),t=_0e(e,t),J.multiplyByVector(y0e,t,t),t};var lC=jX;function aht(e){e=e??V.EMPTY_OBJECT,this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??2}var Hg=aht;function aw(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Ye,this._viewportCartesian4=new se,this._viewportDirty=!1,this._viewportOrthographicMatrix=N.clone(N.IDENTITY),this._viewportTransformation=N.clone(N.IDENTITY),this._model=N.clone(N.IDENTITY),this._view=N.clone(N.IDENTITY),this._inverseView=N.clone(N.IDENTITY),this._projection=N.clone(N.IDENTITY),this._infiniteProjection=N.clone(N.IDENTITY),this._entireFrustum=new U,this._currentFrustum=new U,this._frustumPlanes=new se,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=J.clone(N.IDENTITY),this._view3DDirty=!0,this._view3D=new N,this._inverseView3DDirty=!0,this._inverseView3D=new N,this._inverseModelDirty=!0,this._inverseModel=new N,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new J,this._viewRotation=new J,this._inverseViewRotation=new J,this._viewRotation3D=new J,this._inverseViewRotation3D=new J,this._inverseProjectionDirty=!0,this._inverseProjection=new N,this._modelViewDirty=!0,this._modelView=new N,this._modelView3DDirty=!0,this._modelView3D=new N,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new N,this._inverseModelViewDirty=!0,this._inverseModelView=new N,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new N,this._viewProjectionDirty=!0,this._viewProjection=new N,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new N,this._modelViewProjectionDirty=!0,this._modelViewProjection=new N,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new N,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new N,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new N,this._normalDirty=!0,this._normal=new J,this._normal3DDirty=!0,this._normal3D=new J,this._inverseNormalDirty=!0,this._inverseNormal=new J,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new J,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ei,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new U,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new U,this._modelToEnu=new N,this._enuToModel=new N,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new G,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(aw.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Ye.equals(e,this._viewport)){Ye.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return E0e(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return E0e(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){N.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,N.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,N.getMatrix3(this.inverseModel,e),J.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return qX(this),this._view3D}},viewRotation:{get:function(){return qX(this),this._viewRotation}},viewRotation3D:{get:function(){return qX(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return b0e(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return b0e(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return _ht(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return yht(this),this._modelView}},modelView3D:{get:function(){return Cht(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Sht(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Eht(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Iht(this),this._inverseModelView3D}},viewProjection:{get:function(){return xht(this),this._viewProjection}},inverseViewProjection:{get:function(){return bht(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Tht(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return wht(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return Bht(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return Dht(this),this._modelViewInfiniteProjection}},normal:{get:function(){return vht(this),this._normal}},normal3D:{get:function(){return Pht(this),this._normal3D}},inverseNormal:{get:function(){return Rht(this),this._inverseNormal}},inverseNormal3D:{get:function(){return Mht(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return x0e(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return x0e(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??te.default}}});function cht(e,t){N.clone(t,e._view),N.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function lht(e,t){N.clone(t,e._inverseView),N.getMatrix3(t,e._inverseViewRotation)}function uht(e,t){N.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function fht(e,t){N.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var C0e=new d,dht=new N;function hht(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,C0e)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,C0e)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=J.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=kt.eastNorthUpToFixedFrame(i,n,dht);e._enuToModel=N.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=N.inverseTransformation(e._enuToModel,e._modelToEnu),D.equalsEpsilon(n._radii.x,n._radii.y,D.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var YX=new J,mht=new Ae;function Aht(e,t){kt.computeIcrfToCentralBodyFixedMatrix(t.time,YX);let n=lC.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);J.multiplyByVector(YX,n,n),d.normalize(n,e._sunDirectionWC),n=J.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=lC.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),J.multiplyByVector(YX,n,n),J.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,mht);i.project(r,e._sunPositionColumbusView)}aw.prototype.updateCamera=function(e){cht(this,e.viewMatrix),lht(this,e.inverseViewMatrix),hht(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ie.SCENE2D&&e.frustum instanceof An};aw.prototype.updateFrustum=function(e){uht(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&fht(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=D.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};aw.prototype.updatePass=function(e){this._pass=e};var pht=[],ght=new Hg;aw.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ie.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),Aht(this,e);let n=e.light??ght;n instanceof Hg?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=J.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??pht,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=kt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,G.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function E0e(e){if(e._viewportDirty){let t=e._viewport;N.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),N.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function _ht(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ie.SCENE2D&&e._mode!==ie.MORPHING&&!e._orthographicIn3D?N.inverse(e._projection,e._inverseProjection):N.clone(N.ZERO,e._inverseProjection))}function yht(e){e._modelViewDirty&&(e._modelViewDirty=!1,N.multiplyTransformation(e._view,e._model,e._modelView))}function Cht(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,N.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Eht(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,N.inverse(e.modelView,e._inverseModelView))}function Iht(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,N.inverse(e.modelView3D,e._inverseModelView3D))}function xht(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,N.multiply(e._projection,e._view,e._viewProjection))}function bht(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,N.inverse(e.viewProjection,e._inverseViewProjection))}function Tht(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,N.multiply(e._projection,e.modelView,e._modelViewProjection))}function Sht(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function wht(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,N.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function Bht(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,N.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function Dht(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,N.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function vht(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;N.getMatrix3(e.inverseModelView,t),J.transpose(t,t)}}function Pht(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;N.getMatrix3(e.inverseModelView3D,t),J.transpose(t,t)}}function Rht(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;N.getMatrix3(e.modelView,t),J.transpose(t,t)}}function Mht(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;N.getMatrix3(e.modelView3D,t),J.transpose(t,t)}}var I0e=new d;function x0e(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,N.multiplyByPoint(e.inverseModel,e._cameraPosition,I0e),ei.fromCartesian(I0e,e._encodedCameraPositionMC))}var Nht=new d,Lht=new d,Oht=new d,Fht=new d,Qht=new Ae,kht=new d,Uht=new N;function Ght(e,t,n,i,o,r,s,a){let c=Nht;c.x=e.y,c.y=e.z,c.z=e.x;let u=Lht;u.x=n.y,u.y=n.z,u.z=n.x;let f=Oht;f.x=i.y,f.y=i.z,f.z=i.x;let h=Fht;h.x=t.y,h.y=t.z,h.z=t.x,r===ie.SCENE2D&&(c.z=o*.5);let A=s.unproject(c,Qht);A.longitude=D.clamp(A.longitude,-Math.PI,Math.PI),A.latitude=D.clamp(A.latitude,-D.PI_OVER_TWO,D.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(A,kht),_=kt.eastNorthUpToFixedFrame(m,g,Uht);return N.multiplyByPointAsVector(_,u,u),N.multiplyByPointAsVector(_,f,f),N.multiplyByPointAsVector(_,h,h),l(a)||(a=new N),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function qX(e){e._view3DDirty&&(e._mode===ie.SCENE3D?N.clone(e._view,e._view3D):Ght(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),N.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function b0e(e){e._inverseView3DDirty&&(N.inverseTransformation(e.view3D,e._inverseView3D),N.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var b2=aw;function Sf(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):zht(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Xn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new E2(this),this._textureCache=new I2;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),Yt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),Yt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),Yt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),Yt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),Yt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),Yt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),Yt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),Yt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),Yt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Yt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),Yt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);Yt._minimumAliasedLineWidth=f[0],Yt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);Yt._minimumAliasedPointSize=h[0],Yt._maximumAliasedPointSize=h[1];let A=u.getParameter(u.MAX_VIEWPORT_DIMS);Yt._maximumViewportWidth=A[0],Yt._maximumViewportHeight=A[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);Yt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);Yt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Kr(u,["OES_standard_derivatives"]),this._blendMinmax=!!Kr(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Kr(u,["OES_element_index_uint"]),this._depthTexture=!!Kr(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Kr(u,["EXT_frag_depth"]),this._debugShaders=Kr(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Kr(u,["OES_texture_float"]),this._textureHalfFloat=!!Kr(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Kr(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Kr(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Kr(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Kr(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Kr(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Kr(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Kr(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Kr(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Kr(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Kr(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Kr(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Kr(u,["EXT_texture_compression_bptc"]),$l.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let _=r?Kr(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=_,Yt._maximumTextureFilterAnisotropy=l(_)?u.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let y,C,E,I,b,S,B,v,P,M;if(c){let T=this;y=function(){return T._gl.createVertexArray()},C=function(w){T._gl.bindVertexArray(w)},E=function(w){T._gl.deleteVertexArray(w)},I=function(w,R,O,k,Q){u.drawElementsInstanced(w,R,O,k,Q)},b=function(w,R,O,k){u.drawArraysInstanced(w,R,O,k)},S=function(w,R){u.vertexAttribDivisor(w,R)},B=function(w){u.drawBuffers(w)}}else v=Kr(u,["OES_vertex_array_object"]),l(v)&&(y=function(){return v.createVertexArrayOES()},C=function(T){v.bindVertexArrayOES(T)},E=function(T){v.deleteVertexArrayOES(T)}),P=Kr(u,["ANGLE_instanced_arrays"]),l(P)&&(I=function(T,w,R,O,k){P.drawElementsInstancedANGLE(T,w,R,O,k)},b=function(T,w,R,O){P.drawArraysInstancedANGLE(T,w,R,O)},S=function(T,w){P.vertexAttribDivisorANGLE(T,w)}),M=Kr(u,["WEBGL_draw_buffers"]),l(M)&&(B=function(T){M.drawBuffersWEBGL(T)});this.glCreateVertexArray=y,this.glBindVertexArray=C,this.glDeleteVertexArray=E,this.glDrawElementsInstanced=I,this.glDrawArraysInstanced=b,this.glVertexAttribDivisor=S,this.glDrawBuffers=B,this._vertexArrayObject=!!v,this._instancedArrays=!!P,this._drawBuffers=!!M,Yt._maximumDrawBuffers=this.drawBuffers?u.getParameter(ee.MAX_DRAW_BUFFERS):1,Yt._maximumColorAttachments=this.drawBuffers?u.getParameter(ee.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new G(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let L=new b2,p=new Xc(this),x=Ue.fromCache();this._defaultPassState=p,this._defaultRenderState=x,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=L,this._currentRenderState=x,this._currentPassState=p,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let T=0;T<Yt._maximumVertexAttributes;T++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ue.apply(u,x,p)}function zht(e,t,n){if(typeof WebGLRenderingContext>"u")throw new ce("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new ce("The browser supports WebGL, but initialization failed.");return r}function Vht(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function Hht(e,t,n,i){let o=`${Vht(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function Wht(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new ce(Hht(e,t,n,i))}function jht(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function Yht(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,jht(e,o,t))}return i}function Kr(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var qht={};Object.defineProperties(Sf.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=Yht(this._originalGLContext,e?Wht:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Mt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Mt({context:this,pixelFormat:$e.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Mt({context:this,pixelFormat:$e.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new kr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return qht}}});function T0e(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ue.partialApply(e._gl,o,t,r,n,i)}var KX;typeof WebGLRenderingContext<"u"&&(KX=[ee.BACK]);function XX(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=KX;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var Kht=new Ci;Sf.prototype.clear=function(e,t){e=e??Kht,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(G.equals(this._clearColor,o)||(G.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;T0e(this,a,t,!0);let c=e.framebuffer??t.framebuffer;XX(this,c),n.clear(i)};function Xht(e,t,n,i,o){XX(e,t),T0e(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function Jht(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??N.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}Sf.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Xht(this,o,t,n,r),Jht(this,e,n,i)};Sf.prototype.beginFrame=function(){};Sf.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=KX;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};Sf.prototype.readPixels=function(e){let t=this._gl;e=e??V.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=Ve.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=$e.createTypedArray($e.RGBA,a,o,r);return XX(this,s),t.readPixels(n,i,o,r,$e.RGBA,Ve.toWebGLConstant(a,this),c),c};var S0e={position:0,textureCoordinates:1};Sf.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Me.TRIANGLES});e=li.fromGeometry({context:this,geometry:t,attributeLocations:S0e,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};Sf.prototype.createViewportQuadCommand=function(e,t){return t=t??V.EMPTY_OBJECT,new nt({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Me.TRIANGLES,renderState:t.renderState,shaderProgram:an.fromCache({context:this,vertexShaderSource:wI,fragmentShaderSource:e,attributeLocations:S0e}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};Sf.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function JX(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(JX.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});JX.prototype.destroy=function(){delete this._pickObjects[this.key]};Sf.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new ce("Out of unique Pick IDs.");return this._pickObjects[t]=e,new JX(this._pickObjects,t,G.fromRgba(t))};Sf.prototype.isDestroyed=function(){return!1};Sf.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var DI=Sf;function Y4(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new DI(this._canvas,ze(e?.contextOptions)),this._canvases=[]}Y4.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,u=this.drawingBufferWidth;c.width<u&&(c.width=u);let f=this.drawingBufferHeight;c.height<f&&(c.height=f)},s=function(){let c=this.drawingBufferWidth,u=this.drawingBufferHeight,f=n._context.canvas.height-u;t.drawImage(n._context.canvas,0,f,c,u,0,0,c,u),n._context.endFrame()};return new Proxy(this._context,{get(c,u,f){if(u==="isDestroyed")return function(){return i};switch(u){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,u,f)}}})};Y4.prototype.destroy=function(){this._context.destroy(),ue(this)};Y4.prototype.isDestroyed=function(){return!1};var T2=Y4;function vI(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e;if(!t.webgl2)throw new me("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:u,depth:f}=e;l(n)&&(l(c)||(c=n.width),l(u)||(u=n.height),l(f)||(f=n.depth));let h=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,A=$e.toInternalFormat(i,o,t),g=$e.isCompressedFormat(A),m=t._gl,_=$e.texture3DSizeInBytes(i,o,c,u,f);if(this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=m.TEXTURE_3D,this._texture=m.createTexture(),this._internalFormat=A,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._depth=f,this._dimensions=new d(c,u,f),this._hasMipmap=!1,this._sizeInBytes=_,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,w0e(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(this._textureTarget,this._texture),l(n)){if(s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new me("For Texture3D, options.source.arrayBufferView must be defined");Zht(this,n),this._initialized=!0}else $ht(this);m.bindTexture(this._textureTarget,null)}function Zht(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:u,pixelDatatype:f,flipY:h}=e,A=$e.alignmentInBytes(u,f,s);i.pixelStorei(i.UNPACK_ALIGNMENT,A),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let m=1;if(t.mipLevels&&t.mipLevels.length&&(m=t.mipLevels.length+1),i.texStorage3D(o,m,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,u,Ve.toWebGLConstant(f,n),g),m>1){let _=s,y=a,C=c;for(let E=0;E<t.mipLevels.length;++E)_=ZX(_),y=ZX(y),C=ZX(C),i.texSubImage3D(o,E+1,0,0,0,_,y,C,u,Ve.toWebGLConstant(f,n),t.mipLevels[E])}}function ZX(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function $ht(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,Ve.toWebGLConstant(e._pixelDatatype,t),null)}vI.create=function(e){return new vI(e)};Object.defineProperties(vI.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){w0e(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function w0e(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ve.FLOAT&&!r.textureFloatLinear||a===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST),$e.isDepthFormat(s)&&(n=Zt.NEAREST,i=mi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}vI.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};vI.prototype.isDestroyed=function(){return!1};vI.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var $X=vI;function emt(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[we.createIfNeeded(t.positiveX).fetchImage(i),we.createIfNeeded(t.negativeX).fetchImage(i),we.createIfNeeded(t.positiveY).fetchImage(i),we.createIfNeeded(t.negativeY).fetchImage(i),we.createIfNeeded(t.positiveZ).fetchImage(i),we.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new kr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var S2=emt;var cw=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var w2=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var B2=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var D2=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var v2=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var P2=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var R2=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var M2=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var N2=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var L2=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var lw=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var uw=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var O2=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var F2=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var Q2=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var fw=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var dw=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var k2=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var U2=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var G2=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var z2=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var V2=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var H2=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var W2=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var j2=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;async function tmt(e,t,n,i){return l(i)||(i=!1),omt(e,t,n,i)}function nmt(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(D0e(i)):r=o.then(D0e(i)).catch(rmt(i)),e.shift(),t.push(r),!0}function imt(e){return new Promise(function(t){setTimeout(t,e)})}function eJ(e,t,n){return e.length?nmt(e,t,n)?eJ(e,t,n):imt(100).then(()=>eJ(e,t,n)):Promise.resolve()}function omt(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return eJ(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function B0e(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function D0e(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!B0e(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];B0e(s,i,n)}}):Promise.resolve()}}function rmt(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var Y2=tmt;var tJ=new U;async function v0e(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,tJ);let A=e.loadTileDataAvailability(tJ.x,tJ.y,1);l(A)&&s.push(A)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return Y2(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await v0e(e,a,n),t}var PI=v0e;async function nJ(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ie.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ie.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await nJ._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),A=r;return f&&(A.height+=h),A}nJ._sampleTerrainMostDetailed=PI;var RI=nJ;var smt={NONE:0,LERC:1},Qd=Object.freeze(smt);var amt={NONE:0,BITS12:1},ba=Object.freeze(amt);var MI=new d,cmt=new d,kd=new U,q4=new N,lmt=new N,umt=Math.pow(2,12);function Jc(e,t,n,i,o,r,s,a,c,u){let f=ba.NONE,h,A;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,_=d.subtract(m,g,cmt),y=i-n;Math.max(d.maximumComponent(_),y)<umt-1?f=ba.BITS12:f=ba.NONE,h=N.inverseTransformation(o,new N);let E=d.negate(g,MI);N.multiply(N.fromTranslation(E,q4),h,h);let I=MI;I.x=1/_.x,I.y=1/_.y,I.z=1/_.z,N.multiply(N.fromScale(I,q4),h,h),A=N.clone(o),N.setTranslation(A,d.ZERO,A),o=N.clone(o,new N);let b=N.fromTranslation(g,q4),S=N.fromScale(_,lmt),B=N.multiply(b,S,q4);N.multiply(o,B,o),N.multiply(A,B,A)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=A,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=u??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}Jc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===ba.BITS12){n=N.multiplyByPoint(this.toScaledENU,n,MI),n.x=D.clamp(n.x,0,1),n.y=D.clamp(n.y,0,1),n.z=D.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=D.clamp((o-this.minimumHeight)/f,0,1);U.fromElements(n.x,n.y,kd);let A=On.compressTextureCoordinates(kd);U.fromElements(n.z,h,kd);let g=On.compressTextureCoordinates(kd);U.fromElements(c,u,kd);let m=On.compressTextureCoordinates(kd);if(e[t++]=A,e[t++]=g,e[t++]=m,this.hasWebMercatorT){U.fromElements(s,0,kd);let _=On.compressTextureCoordinates(kd);e[t++]=_}}else d.subtract(n,this.center,MI),e[t++]=MI.x,e[t++]=MI.y,e[t++]=MI.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=On.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var fmt=new d,P0e=new d;Jc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,A=s*r+f;t[A]=e[h]}let a=this.decodePosition(t,s,fmt),c=n.geodeticSurfaceNormal(a,P0e),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};Jc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};Jc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===ba.BITS12){let i=On.decompressTextureCoordinates(e[t],kd);n.x=i.x,n.y=i.y;let o=On.decompressTextureCoordinates(e[t+1],kd);return n.z=o.x,N.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};Jc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,P0e),a=this.decodeHeight(e,t),c=Ur.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};Jc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new U),t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+2],n):U.fromElements(e[t+4],e[t+5],n)};Jc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+1],kd).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};Jc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+3],kd).x:e[t+6]};Jc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return U.fromElements(o,r,n)};Jc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};Jc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case ba.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var K4={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},X4={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};Jc.prototype.getAttributes=function(e){let t=q.FLOAT,n=q.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===ba.NONE){s(K4.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(K4.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(K4.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(X4.compressed0,a?4:3),c&&s(X4.compressed1,1),this.hasGeodeticSurfaceNormals&&s(X4.geodeticSurfaceNormal,3)}return r};Jc.prototype.getAttributeLocations=function(){return this.quantization===ba.NONE?K4:X4};Jc.clone=function(e,t){if(l(e))return l(t)||(t=new Jc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=N.clone(e.toScaledENU),t.fromScaledENU=N.clone(e.fromScaledENU),t.matrix=N.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Zc=Jc;var BA={};BA.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var iJ=new d,dmt=new N,hmt=new d,mmt=new d;BA.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=D.PI_OVER_TWO,a=D.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,A=h>0,g=e.isGeographic??!0,m=e.ellipsoid??te.default,_=1/m.maximumRadius,y=ae.clone(e.nativeRectangle),C=ae.clone(e.rectangle),E,I,b,S;l(C)?(E=C.west,I=C.south,b=C.east,S=C.north):g?(E=a(y.west),I=a(y.south),b=a(y.east),S=a(y.north)):(E=y.west*_,I=s-2*o(r(-y.south*_)),b=y.east*_,S=s-2*o(r(-y.north*_)));let B=e.relativeToCenter,v=l(B);B=v?B:d.ZERO;let P=e.includeWebMercatorT??!1,M=e.exaggeration??1,L=e.exaggerationRelativeHeight??0,x=M!==1,T=e.structure??BA.DEFAULT_STRUCTURE,w=T.heightScale??BA.DEFAULT_STRUCTURE.heightScale,R=T.heightOffset??BA.DEFAULT_STRUCTURE.heightOffset,O=T.elementsPerHeight??BA.DEFAULT_STRUCTURE.elementsPerHeight,k=T.stride??BA.DEFAULT_STRUCTURE.stride,Q=T.elementMultiplier??BA.DEFAULT_STRUCTURE.elementMultiplier,z=T.isBigEndian??BA.DEFAULT_STRUCTURE.isBigEndian,F=ae.computeWidth(y),H=ae.computeHeight(y),W=F/(u-1),Z=H/(f-1);g||(F*=_,H*=_);let Y=m.radiiSquared,$=Y.x,X=Y.y,he=Y.z,ge=65536,fe=-65536,ye=kt.eastNorthUpToFixedFrame(B,m),xe=N.inverseTransformation(ye,dmt),ve,Te;P&&(ve=zi.geodeticLatitudeToMercatorAngle(I),Te=1/(zi.geodeticLatitudeToMercatorAngle(S)-ve));let ke=hmt;ke.x=Number.POSITIVE_INFINITY,ke.y=Number.POSITIVE_INFINITY,ke.z=Number.POSITIVE_INFINITY;let Ge=mmt;Ge.x=Number.NEGATIVE_INFINITY,Ge.y=Number.NEGATIVE_INFINITY,Ge.z=Number.NEGATIVE_INFINITY;let Ke=Number.POSITIVE_INFINITY,tt=u*f,en=h>0?u*2+f*2:0,it=tt+en,nn=new Array(it),qt=new Array(it),Rt=new Array(it),Si=P?new Array(it):[],gi=x?new Array(it):[],Ft=0,St=f,oi=0,Et=u;A&&(--Ft,++St,--oi,++Et);let Lo=1e-5;for(let et=Ft;et<St;++et){let gt=et;gt<0&&(gt=0),gt>=f&&(gt=f-1);let Jt=y.north-Z*gt;g?Jt=a(Jt):Jt=s-2*o(r(-Jt*_));let bn=(Jt-I)/(S-I);bn=D.clamp(bn,0,1);let ho=et===Ft,lo=et===St-1;h>0&&(ho?Jt+=Lo*H:lo&&(Jt-=Lo*H));let sa=t(Jt),aa=n(Jt),Wn=he*aa,bi;P&&(bi=(zi.geodeticLatitudeToMercatorAngle(Jt)-ve)*Te);for(let vs=oi;vs<Et;++vs){let Xo=vs;Xo<0&&(Xo=0),Xo>=u&&(Xo=u-1);let Ra=gt*(u*k)+Xo*k,mo;if(O===1)mo=c[Ra];else{mo=0;let vo;if(z)for(vo=0;vo<O;++vo)mo=mo*Q+c[Ra+vo];else for(vo=O-1;vo>=0;--vo)mo=mo*Q+c[Ra+vo]}mo=mo*w+R,fe=Math.max(fe,mo),ge=Math.min(ge,mo);let Jo=y.west+W*Xo;g?Jo=a(Jo):Jo=Jo*_;let Uf=(Jo-E)/(b-E);Uf=D.clamp(Uf,0,1);let Ir=gt*u+Xo;if(h>0){let vo=vs===oi,un=vs===Et-1,Se=ho||lo||vo||un;if((ho||lo)&&(vo||un))continue;Se&&(mo-=h,vo?(Ir=tt+(f-gt-1),Jo-=Lo*F):lo?Ir=tt+f+(u-Xo-1):un?(Ir=tt+f+u+gt,Jo+=Lo*F):ho&&(Ir=tt+f+u+f+Xo))}let Ps=sa*t(Jo),Ws=sa*n(Jo),eh=$*Ps,ps=X*Ws,oc=1/i(eh*Ps+ps*Ws+Wn*aa),Or=eh*oc,ql=ps*oc,Kl=Wn*oc,ca=new d;ca.x=Or+Ps*mo,ca.y=ql+Ws*mo,ca.z=Kl+aa*mo,N.multiplyByPoint(xe,ca,iJ),d.minimumByComponent(iJ,ke,ke),d.maximumByComponent(iJ,Ge,Ge),Ke=Math.min(Ke,mo),nn[Ir]=ca,Rt[Ir]=new U(Uf,bn),qt[Ir]=mo,P&&(Si[Ir]=bi),x&&(gi[Ir]=m.geodeticSurfaceNormal(ca))}}let Ho=le.fromPoints(nn),Pa;l(C)&&(Pa=Fn.fromRectangle(C,ge,fe,m));let Er;v&&(Er=new Eg(m).computeHorizonCullingPointPossiblyUnderEllipsoid(B,nn,ge));let Lr=new S_(ke,Ge,B),Fe=new Zc(B,Lr,Ke,fe,ye,!1,P,x,M,L),lt=new Float32Array(it*Fe.stride),Xe=0;for(let et=0;et<it;++et)Xe=Fe.encode(lt,Xe,nn[et],Rt[et],qt[et],void 0,Si[et],gi[et]);return{vertices:lt,maximumHeight:fe,minimumHeight:ge,encoding:Fe,boundingSphere3D:Ho,orientedBoundingBox:Pa,occludeePointInScaledSpace:Er}};var hw=BA;function uC(){me.throwInstantiationError()}Object.defineProperties(uC.prototype,{credits:{get:me.throwInstantiationError},waterMask:{get:me.throwInstantiationError}});uC.prototype.interpolateHeight=me.throwInstantiationError;uC.prototype.isChildAvailable=me.throwInstantiationError;uC.prototype.createMesh=me.throwInstantiationError;uC.prototype.upsample=me.throwInstantiationError;uC.prototype.wasCreatedByUpsampling=me.throwInstantiationError;uC.maximumAsynchronousTasks=5;var Am=uC;function Amt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this.center=e,this.vertices=t,this.stride=u??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=A,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=_}var Ud=Amt;function Wg(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??Qd.NONE;let t=hw.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===Qd.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Wg.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var R0e="createVerticesFromHeightmap",pmt=new di(R0e),gmt=new di(R0e,Am.maximumAsynchronousTasks);Wg.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),A=this._structure,m=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let y=(a?gmt:pmt).scheduleTask({heightmap:this._buffer,structure:A,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ui,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(y))return;let C=this;return Promise.resolve(y).then(function(E){let I;C._skirtHeight>0?I=Ss.getRegularGridAndSkirtIndicesAndEdgeIndices(E.gridWidth,E.gridHeight):I=Ss.getRegularGridIndicesAndEdgeIndices(E.gridWidth,E.gridHeight);let b=E.gridWidth*E.gridHeight;return C._mesh=new Ud(h,new Float32Array(E.vertices),I.indices,I.indexCountWithoutSkirts,b,E.minimumHeight,E.maximumHeight,le.clone(E.boundingSphere3D),d.clone(E.occludeePointInScaledSpace),E.numberOfAttributes,Fn.clone(E.orientedBoundingBox),Zc.clone(E.encoding),I.westIndicesSouthToNorth,I.southIndicesEastToWest,I.eastIndicesNorthToSouth,I.northIndicesWestToEast),C._buffer=void 0,C._mesh})};Wg.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=hw.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ui,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let _;this._skirtHeight>0?_=Ss.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):_=Ss.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let y=m.gridWidth*m.gridHeight;return this._mesh=new Ud(f,m.vertices,_.indices,_.indexCountWithoutSkirts,y,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),this._mesh};Wg.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,A=l(this._mesh),g=this._encoding===Qd.LERC;if(!A&&g)return;let _;if(A){let y=this._mesh.vertices,C=this._mesh.encoding;_=M0e(y,C,f,h,e,i,o,t,n)}else _=_mt(this._buffer,a,c,s,u,e,i,o,t,n),_=_*h+f;return _};Wg.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,A=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,_=e.tileXYToRectangle(t,n,i),y=e.tileXYToRectangle(o,r,s),C=f.heightOffset,E=f.heightScale,I=f.elementsPerHeight,b=f.elementMultiplier,S=f.isBigEndian,B=Math.pow(b,I-1);for(let v=0;v<u;++v){let P=D.lerp(y.north,y.south,v/(u-1));for(let M=0;M<c;++M){let L=D.lerp(y.west,y.east,M/(c-1)),p=M0e(g,m,C,E,_,c,u,L,P);p=p<f.lowestEncodedHeight?f.lowestEncodedHeight:p,p=p>f.highestEncodedHeight?f.highestEncodedHeight:p,ymt(A,I,b,B,h,S,v*c+M,p)}}return Promise.resolve(new Wg({buffer:A,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Wg.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Wg.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function _mt(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),A=f|0,g=A+1;g>=s&&(g=s-1,A=s-2);let m=h|0,_=m+1;_>=a&&(_=a-1,m=a-2);let y=f-A,C=h-m;m=a-1-m,_=a-1-_;let E=J4(e,t,n,i,o,m*s+A),I=J4(e,t,n,i,o,m*s+g),b=J4(e,t,n,i,o,_*s+A),S=J4(e,t,n,i,o,_*s+g);return N0e(y,C,E,I,b,S)}function M0e(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,A=h+1;A>=r&&(A=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let _=u-h,y=f-g;g=s-1-g,m=s-1-m;let C=(t.decodeHeight(e,g*r+h)-n)/i,E=(t.decodeHeight(e,g*r+A)-n)/i,I=(t.decodeHeight(e,m*r+h)-n)/i,b=(t.decodeHeight(e,m*r+A)-n)/i;return N0e(_,y,C,E,I,b)}function N0e(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function J4(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function ymt(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var Ec=Wg;function mw(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new so({ellipsoid:e.ellipsoid??te.default})),this._levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e}Object.defineProperties(mw.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});mw.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new Ec({buffer:new Uint8Array(256),width:16,height:16}))};mw.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};mw.prototype.getTileDataAvailable=function(e,t,n){};mw.prototype.loadTileDataAvailability=function(e,t,n){};var DA=mw;var Cmt=new U;function Emt(e,t){let n=e.unionClippingRegions,i=e.length,o=Fs.useFloatTexture(t),r=Fs.getTextureResolution(e,t,Cmt),s=r.x,a=r.y,c=o?bmt(s,a):Tmt(s,a);return c+=` +`,c+=n?Imt(i):xmt(i),c}function Imt(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function xmt(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function bmt(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Tmt(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var jg=Emt;function Smt(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function oJ(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function wmt(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ie.SCENE3D:o=t;break;case ie.SCENE2D:case ie.COLUMBUS_VIEW:o=n;break;case ie.MORPHING:o=i;break}return o}function Bmt(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function Dmt(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function vmt(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}oJ.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,A=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,_=e.enableLighting,y=e.dynamicAtmosphereLighting,C=e.dynamicAtmosphereLightingFromSun,E=e.showGroundAtmosphere,I=e.perFragmentGroundAtmosphere,b=e.hasVertexNormals,S=e.useWebMercatorProjection,B=e.enableFog,v=e.enableClippingPlanes,P=e.clippingPlanes,M=e.enableClippingPolygons,L=e.clippingPolygons,p=e.clippedByBoundaries,x=e.hasImageryLayerCutout,T=e.colorCorrect,w=e.highlightFillTile,R=e.colorToAlpha,O=e.hasGeodeticSurfaceNormals,k=e.hasExaggeration,Q=e.showUndergroundColor,z=e.translucent,F=0,H="",Z=n.renderedMesh.encoding;Z.quantization===ba.BITS12&&(F=1,H="QUANTIZATION_BITS12");let $=0,X="";p&&($=1,X="TILE_LIMIT_RECTANGLE");let he=0,ge="";x&&(he=1,ge="APPLY_IMAGERY_CUTOUT");let fe=t.mode,ye=fe|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|A<<8|g<<9|m<<10|_<<11|y<<12|C<<13|E<<14|I<<15|b<<16|S<<17|B<<18|F<<19|h<<20|v<<21|M<<22|$<<23|he<<24|T<<25|w<<26|R<<27|O<<28|k<<29|Q<<30|z<<31|f<<32,xe=0;l(P)&&P.length>0&&(xe=v?P.clippingPlanesState:0);let ve=0;l(L)&&L.length>0&&(ve=M?L.clippingPolygonsState:0);let Te=n.surfaceShader;if(l(Te)&&Te.numberOfDayTextures===i&&Te.flags===ye&&Te.material===this.material&&Te.clippingShaderState===xe&&Te.clippingPolygonShaderState===ve)return Te.shaderProgram;let ke=this._shadersByTexturesFlags[i];if(l(ke)||(ke=this._shadersByTexturesFlags[i]=[]),Te=ke[ye],!l(Te)||Te.material!==this.material||Te.clippingShaderState!==xe||Te.clippingPolygonShaderState!==ve){let Ge=this.baseVertexShaderSource.clone(),Ke=this.baseFragmentShaderSource.clone();xe!==0&&Ke.sources.unshift(jg(P,t.context)),ve!==0&&(Ke.sources.unshift(Bmt(t.context)),Ge.sources.unshift(Dmt(t.context))),Ge.defines.push(H),Ke.defines.push(`TEXTURE_UNITS ${i}`,X,ge),o&&Ke.defines.push("APPLY_BRIGHTNESS"),r&&Ke.defines.push("APPLY_CONTRAST"),s&&Ke.defines.push("APPLY_HUE"),a&&Ke.defines.push("APPLY_SATURATION"),c&&Ke.defines.push("APPLY_GAMMA"),u&&Ke.defines.push("APPLY_ALPHA"),f&&Ke.defines.push("APPLY_DAY_NIGHT_ALPHA"),A&&Ke.defines.push("HAS_WATER_MASK"),g&&(Ke.defines.push("SHOW_REFLECTIVE_OCEAN"),Ge.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&Ke.defines.push("SHOW_OCEAN_WAVES"),R&&Ke.defines.push("APPLY_COLOR_TO_ALPHA"),Q&&(Ge.defines.push("UNDERGROUND_COLOR"),Ke.defines.push("UNDERGROUND_COLOR")),z&&(Ge.defines.push("TRANSLUCENT"),Ke.defines.push("TRANSLUCENT")),_&&(b?(Ge.defines.push("ENABLE_VERTEX_LIGHTING"),Ke.defines.push("ENABLE_VERTEX_LIGHTING")):(Ge.defines.push("ENABLE_DAYNIGHT_SHADING"),Ke.defines.push("ENABLE_DAYNIGHT_SHADING"))),y&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),Ke.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),C&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),Ke.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),E&&(Ge.defines.push("GROUND_ATMOSPHERE"),Ke.defines.push("GROUND_ATMOSPHERE"),I&&(Ge.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),Ke.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ge.defines.push("INCLUDE_WEB_MERCATOR_Y"),Ke.defines.push("INCLUDE_WEB_MERCATOR_Y"),B&&(Ge.defines.push("FOG"),Ke.defines.push("FOG")),h&&Ke.defines.push("APPLY_SPLIT"),v&&Ke.defines.push("ENABLE_CLIPPING_PLANES"),M&&(Ke.defines.push("ENABLE_CLIPPING_POLYGONS"),Ge.defines.push("ENABLE_CLIPPING_POLYGONS"),L.inverse&&Ke.defines.push("CLIPPING_INVERSE"),Ke.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`),Ge.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`)),T&&Ke.defines.push("COLOR_CORRECT"),w&&Ke.defines.push("HIGHLIGHT_FILL_TILE"),O&&Ge.defines.push("GEODETIC_SURFACE_NORMALS"),k&&Ge.defines.push("EXAGGERATION");let tt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;x&&(tt+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let it=0;it<i;++it)x?tt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${it}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:tt+=` color = sampleAndBlend( +`,tt+=` color, + u_dayTextures[${it}], + u_dayTextureUseWebMercatorT[${it}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${it}], + u_dayTextureTranslationAndScale[${it}], + ${u?`u_dayTextureAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureNightAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureDayAlpha[${it}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${it}]`:"0.0"}, + ${r?`u_dayTextureContrast[${it}]`:"0.0"}, + ${s?`u_dayTextureHue[${it}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${it}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${it}]`:"0.0"}, + ${h?`u_dayTextureSplit[${it}]`:"0.0"}, + ${R?`u_colorsToAlpha[${it}]`:"vec4(0.0)"}, + nightBlend); +`,x&&(tt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);tt+=` return color; + }`,Ke.sources.push(tt),Ge.sources.push(wmt(fe)),Ge.sources.push(vmt(S));let en=an.fromCache({context:t.context,vertexShaderSource:Ge,fragmentShaderSource:Ke,attributeLocations:Z.getAttributeLocations()});Te=ke[ye]=new Smt(i,ye,this.material,en,xe,ve)}return n.surfaceShader=Te,Te.shaderProgram};oJ.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var q2=oJ;var Pmt={NONE:-1,PARTIAL:0,FULL:1},Mr=Object.freeze(Pmt);var Rmt={START:0,LOADING:1,DONE:2,FAILED:3},Ta=Object.freeze(Rmt);var Mmt={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},To=Object.freeze(Mmt);function gr(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new le,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(gr.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===To.RECEIVING||e===To.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==qn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var Nmt=new Ae;function rJ(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ie.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,Nmt);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var Lmt=new d,Omt=new d,Fmt=new d;gr.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let A=a[h],g=a[h+1],m=a[h+2],_=rJ(c,t,n,s,A,Lmt),y=rJ(c,t,n,s,g,Omt),C=rJ(c,t,n,s,m,Fmt),E=hi.rayTriangleParametric(e,_,y,C,i);l(E)&&E<f&&E>=0&&(f=E)}return f!==Number.MAX_VALUE?In.getPoint(e,f,o):void 0};gr.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};gr.prototype.freeVertexArray=function(){gr._freeVertexArray(this.vertexArray),this.vertexArray=void 0,gr._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};gr.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new gr),e.state===Ta.START&&(Qmt(e,t,n),e.state=Ta.LOADING)};gr.processStateMachine=function(e,t,n,i,o,r,s){gr.initialize(e,n,i);let a=e.data;if(e.state===Ta.LOADING&&kmt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===To.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,A={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(A[g]=h[g]));e._loadedCallbacks=A,e.state=Ta.DONE}c&&(e.renderable=!0)};gr.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===qn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let A=h.processStateMachine(e,n,i);a=a&&A,s=s||A||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===qn.FAILED||h.loadingImagery.state===qn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function L0e(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Zc.clone(s);c.hasGeodeticSurfaceNormals=t,c=Zc.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(gr._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=gr._createVertexArrayForMesh(i.context,o)):(gr._freeVertexArray(e.vertexArray),e.vertexArray=gr._createVertexArrayForMesh(i.context,o)),gr._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}gr.prototype.addGeodeticSurfaceNormals=function(e,t){L0e(this,!0,e,t)};gr.prototype.removeGeodeticSurfaceNormals=function(e){L0e(this,!1,void 0,e)};gr.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,A=h.length;for(let g=0;g<A;g++){let m=h[g];m.level=-1}}}};function Qmt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=To.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function kmt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===To.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||gr.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===To.FAILED&&Umt(s,e,t,n,e.x,e.y,e.level),s.terrainState===To.UNLOADED&&Gmt(s,n,e.x,e.y,e.level),s.terrainState===To.RECEIVED&&Vmt(s,t,n,e.x,e.y,e.level),s.terrainState===To.TRANSFORMED&&(Hmt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=To.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)jmt(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function Umt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=Ta.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let A=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(A)&&(e.terrainState=To.RECEIVING,Promise.resolve(A).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=To.RECEIVED)}).catch(function(){e.terrainState=To.FAILED}))}function Gmt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=To.RECEIVED,e.request=void 0}function s(c){if(e.request.state===fi.CANCELLED){e.terrainData=void 0,e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainState=To.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=Qo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=To.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=To.UNLOADED,e.request=void 0)}a()}var zmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function Vmt(e,t,n,i,o,r){let s=n.tilingScheme,a=zmt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=To.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=To.TRANSFORMED}).catch(function(){e.terrainState=To.FAILED}))}gr._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Ct.createVertexBuffer({context:e,typedArray:n,usage:Qe.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Ct.createIndexBuffer({context:e,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:Oe.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new li({context:e,attributes:o,indexBuffer:s})};gr._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function Hmt(e,t,n,i,o,r,s){e.vertexArray=gr._createVertexArrayForMesh(t,e.mesh),e.terrainState=To.READY,e.fill=e.fill&&e.fill.destroy(s)}function Wmt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Mt.create({context:e,pixelFormat:$e.LUMINANCE,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function jmt(e,t){let n=t.terrainData.waterMask,i=Wmt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Mt.create({context:e,pixelFormat:$e.LUMINANCE,pixelDatatype:Ve.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,se.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}gr.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};gr.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Gd=gr;var Ymt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Sn=Ymt;var O0e={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=O0e.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},ai=O0e;function pw(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se}pw.prototype.update=function(e,t,n){this.changedThisFrame&&(V0e(e,t,this.tile,n),this.changedThisFrame=!1)};pw.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};pw.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Gd._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var qmt=new ey;pw.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=qmt;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),A=c.findTileToNorth(r);oa(e,n,c,u,s,Sn.EAST,!1,a,i),oa(e,n,c,f,s,Sn.NORTH,!1,a,i),oa(e,n,c,h,s,Sn.WEST,!1,a,i),oa(e,n,c,A,s,Sn.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),_=h.findTileToNorth(r),y=h.findTileToSouth(r);oa(e,n,c,g,s,Sn.SOUTHEAST,!1,a,i),oa(e,n,c,_,s,Sn.SOUTHWEST,!1,a,i),oa(e,n,c,m,s,Sn.NORTHEAST,!1,a,i),oa(e,n,c,y,s,Sn.NORTHWEST,!1,a,i),c=a.dequeue()}};function oa(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||ai.wasKicked(u._lastSelectionResult)||ai.originalResult(u._lastSelectionResult)===ai.CULLED);){if(s)return;let f=u.parent;if(r>=Sn.NORTHWEST&&f!==void 0)switch(r){case Sn.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case Sn.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case Sn.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case Sn.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===ai.RENDERED){if(l(u.data.vertexArray))return;Kmt(e,t,n,u,r,o,a,c);return}if(ai.originalResult(i._lastSelectionResult)!==ai.CULLED)switch(r){case Sn.WEST:oa(e,t,n,i.northwestChild,o,r,!0,a,c),oa(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.EAST:oa(e,t,n,i.southeastChild,o,r,!0,a,c),oa(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTH:oa(e,t,n,i.southwestChild,o,r,!0,a,c),oa(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Sn.NORTH:oa(e,t,n,i.northeastChild,o,r,!0,a,c),oa(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHWEST:oa(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHEAST:oa(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTHWEST:oa(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.SOUTHEAST:oa(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new me("Invalid edge")}}}function Kmt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new pw(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Xmt(e,t,n,i,o,a)}function Xmt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(V0e(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case Sn.WEST:u=s.westMeshes,f=s.westTiles;break;case Sn.SOUTH:u=s.southMeshes,f=s.southTiles;break;case Sn.EAST:u=s.eastMeshes,f=s.eastTiles;break;case Sn.NORTH:u=s.northMeshes,f=s.northTiles;break;case Sn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Sn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Sn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Sn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,A,g,m,_=n.rectangle,y,C=i.rectangle;switch(o){case Sn.WEST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.north,m.south,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.south,m.north,y));++A);break;case Sn.SOUTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.west,m.east,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.east,m.west,y));++A);break;case Sn.EAST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.south,m.north,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.north,m.south,y));++A);break;case Sn.NORTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.east,m.west,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.west,m.east,y));++A);break}A-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,A-h,a),f.splice(h,A-h,n))}var NI=new Ae,Jmt=new Ae,Aw=new d,lJ=new d,sJ=new U,aJ=new U,wf=new U;function oH(){this.height=0,this.encodedNormal=new U}function Z4(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,A=0,g=0;l(h)&&(A=h.minimumHeight,g=h.maximumHeight),u=(A+g)*.5}return H0e(e,t,n,i,u,c),c}var Zmt={minimumHeight:0,maximumHeight:0},$mt=new d,F0e=new oH,Q0e=new oH,k0e=new oH,U0e=new oH,eAt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,tAt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function V0e(e,t,n,i){Gd.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=eH(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,k0e),A=eH(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,F0e),g=eH(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,Q0e),m=eH(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,U0e);h=Z4(r,f,0,1,h,A,m,g,k0e),A=Z4(r,f,0,0,A,h,g,m,F0e),g=Z4(r,f,1,1,g,A,m,h,Q0e),m=Z4(r,f,1,1,m,g,h,A,U0e);let _=A.height,y=g.height,C=h.height,E=m.height,I=Math.min(_,y,C,E),b=Math.max(_,y,C,E),S=(I+b)*.5,B,v,P=e.getLevelMaximumGeometricError(n.level),M=f.maximumRadius-P,L=Math.acos(M/f.maximumRadius)*4;if(L*=1.5,s.width>L&&b-I<=P){let T=new Ec({width:9,height:9,buffer:eAt,structure:{heightOffset:b}}),w=tAt;w.tilingScheme=n.tilingScheme,w.x=n.x,w.y=n.y,w.level=n.level,w.exaggeration=a,w.exaggerationRelativeHeight=c,r.mesh=T._createMeshSync(w)}else{let T=u,w=ae.center(s,Jmt);w.height=S;let R=f.cartographicToCartesian(w,$mt),O=new Zc(R,void 0,void 0,void 0,void 0,!0,!0,T,a,c),k=5,Q;for(Q=r.westMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].eastIndicesNorthToSouth.length;for(Q=r.southMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].northIndicesWestToEast.length;for(Q=r.eastMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].westIndicesSouthToNorth.length;for(Q=r.northMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].southIndicesEastToWest.length;let z=Zmt;z.minimumHeight=I,z.maximumHeight=b;let F=O.stride,H=new Float32Array(k*F),W=0,Z=W;W=$4(f,s,O,H,W,0,1,h.height,h.encodedNormal,1,z),W=nH(r,f,O,H,W,r.westTiles,r.westMeshes,Sn.EAST,z);let Y=W;W=$4(f,s,O,H,W,0,0,A.height,A.encodedNormal,0,z),W=nH(r,f,O,H,W,r.southTiles,r.southMeshes,Sn.NORTH,z);let $=W;W=$4(f,s,O,H,W,1,0,g.height,g.encodedNormal,0,z),W=nH(r,f,O,H,W,r.eastTiles,r.eastMeshes,Sn.WEST,z);let X=W;W=$4(f,s,O,H,W,1,1,m.height,m.encodedNormal,1,z),W=nH(r,f,O,H,W,r.northTiles,r.northMeshes,Sn.SOUTH,z),I=z.minimumHeight,b=z.maximumHeight;let he=Fn.fromRectangle(s,I,b,n.tilingScheme.ellipsoid),ge=zi.geodeticLatitudeToMercatorAngle(s.south),fe=1/(zi.geodeticLatitudeToMercatorAngle(s.north)-ge),ye=(zi.geodeticLatitudeToMercatorAngle(w.latitude)-ge)*fe,xe=f.geodeticSurfaceNormalCartographic(NI,lJ),ve=On.octEncode(xe,sJ),Te=W;O.encode(H,W*F,he.center,U.fromElements(.5,.5,wf),S,ve,ye,xe),++W;let ke=W,Ge=ke<256?1:2,Ke=(ke-1)*3,tt=Ke*Ge,en=(H.length-ke*F)*Float32Array.BYTES_PER_ELEMENT,it;if(en>=tt){let Ft=ke*F*Float32Array.BYTES_PER_ELEMENT;it=ke<256?new Uint8Array(H.buffer,Ft,Ke):new Uint16Array(H.buffer,Ft,Ke)}else it=ke<256?new Uint8Array(Ke):new Uint16Array(Ke);H=new Float32Array(H.buffer,0,ke*F);let nn=0;for(B=0;B<ke-2;++B)it[nn++]=Te,it[nn++]=B,it[nn++]=B+1;it[nn++]=Te,it[nn++]=B,it[nn++]=0;let qt=[];for(B=Y;B>=Z;--B)qt.push(B);let Rt=[];for(B=$;B>=Y;--B)Rt.push(B);let Si=[];for(B=X;B>=$;--B)Si.push(B);let gi=[];for(gi.push(0),B=Te-1;B>=X;--B)gi.push(B);r.mesh=new Ud(O.center,H,it,Ke,ke,I,b,le.fromOrientedBoundingBox(he),cAt(e,he.center,s,I,b),O.stride,he,O,qt,Rt,Si,gi)}let p=t.context;r._destroyVertexArray(i),r.vertexArray=Gd._createVertexArrayForMesh(p,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let x=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let T=o._findAncestorTileWithTerrainData(n);l(T)&&l(T.data.waterMaskTexture)&&(r.waterMaskTexture=T.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,T,r.waterMaskTranslationAndScale))}l(x)&&(--x.referenceCount,x.referenceCount===0&&x.destroy())}function $4(e,t,n,i,o,r,s,a,c,u,f){let h=NI;h.longitude=D.lerp(t.west,t.east,r),h.latitude=D.lerp(t.south,t.north,s),h.height=a;let A=e.cartographicToCartesian(h,Aw),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(A,lJ));let m=aJ;return m.x=r,m.y=s,n.encode(i,o*n.stride,A,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var iH=new ae;function K2(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,iH),o.west-=D.TWO_PI,o.east-=D.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,iH),o.west+=D.TWO_PI,o.east+=D.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,A=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(A)<Math.EPSILON5?A=0:Math.abs(A-1)<Math.EPSILON5&&(A=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=A,i.y=g,i}var nAt=new U;function cJ(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var iAt=new U,oAt=new d;function rAt(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,A=K2(t,n,f.decodeTextureCoordinates(h,o,wf),wf),g=K2(t,n,f.decodeTextureCoordinates(h,r,aJ),aJ),m;c?m=(s-A.x)/(g.x-A.x):m=(a-A.y)/(g.y-A.y);let _=f.decodeHeight(h,o),y=f.decodeHeight(h,r),C=n.rectangle;NI.longitude=D.lerp(C.west,C.east,s),NI.latitude=D.lerp(C.south,C.north,a),u.height=NI.height=D.lerp(_,y,m);let E;if(f.hasVertexNormals){let I=f.getOctEncodedNormal(h,o,nAt),b=f.getOctEncodedNormal(h,r,iAt),S=On.octDecode(I.x,I.y,Aw),B=On.octDecode(b.x,b.y,oAt);E=d.lerp(S,B,m,Aw),d.normalize(E,E),On.octEncode(E,u.encodedNormal)}else E=e.geodeticSurfaceNormalCartographic(NI,Aw),On.octEncode(E,u.encodedNormal)}function H0e(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(NI,Aw);On.octEncode(s,r.encodedNormal)}function eH(e,t,n,i,o,r,s,a,c,u,f){if(z0e(e,t,a,s,!1,n,i,f)||z0e(e,t,u,c,!0,n,i,f))return f;let A;if(uJ(o,r))return n===0?i===0?A=r.eastIndicesNorthToSouth[0]:A=r.southIndicesEastToWest[0]:i===0?A=r.northIndicesWestToEast[0]:A=r.westIndicesSouthToNorth[0],cJ(r,A,n,i,f),f;let g;if(n===0?i===0?g=tH(e.westMeshes,e.westTiles,Sn.EAST,e.southMeshes,e.southTiles,Sn.NORTH,n,i):g=tH(e.northMeshes,e.northTiles,Sn.SOUTH,e.westMeshes,e.westTiles,Sn.EAST,n,i):i===0?g=tH(e.southMeshes,e.southTiles,Sn.NORTH,e.eastMeshes,e.eastTiles,Sn.WEST,n,i):g=tH(e.eastMeshes,e.eastTiles,Sn.WEST,e.northMeshes,e.northTiles,Sn.SOUTH,n,i),l(g))return H0e(e,t,n,i,g,f),f}function tH(e,t,n,i,o,r,s,a){let c=G0e(e,t,!1,n,s,a),u=G0e(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function nH(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=sAt(e,t,n,i,o,r[u],s[u],a,c);return o}function sAt(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===Sn.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,iH),u.west-=D.TWO_PI,u.east-=D.TWO_PI):a===Sn.WEST&&r.x===0&&(u=ae.clone(r.rectangle,iH),u.west+=D.TWO_PI,u.east+=D.TWO_PI);let f=e.tile.rectangle,h,A;o>0&&(n.decodeTextureCoordinates(i,o-1,wf),h=wf.x,A=wf.y);let g,m;switch(a){case Sn.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case Sn.NORTH:g=s.northIndicesWestToEast,m=!0;break;case Sn.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case Sn.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let _=r,y=e.tile,C=s.encoding,E=s.vertices,I=n.stride,b,S;C.hasWebMercatorT&&(b=zi.geodeticLatitudeToMercatorAngle(f.south),S=1/(zi.geodeticLatitudeToMercatorAngle(f.north)-b));for(let B=0;B<g.length;++B){let v=g[B],P=C.decodeTextureCoordinates(E,v,wf);K2(_,y,P,P);let M=P.x,L=P.y,p=m?M:L;if(p<0||p>1||Math.abs(M-h)<D.EPSILON5&&Math.abs(L-A)<D.EPSILON5)continue;let x=Math.abs(M)<D.EPSILON5||Math.abs(M-1)<D.EPSILON5,T=Math.abs(L)<D.EPSILON5||Math.abs(L-1)<D.EPSILON5;if(x&&T)continue;let w=C.decodePosition(E,v,Aw),R=C.decodeHeight(E,v),O;C.hasVertexNormals?O=C.getOctEncodedNormal(E,v,sJ):(O=sJ,O.x=0,O.y=0);let k=L;if(C.hasWebMercatorT){let z=D.lerp(f.south,f.north,L);k=(zi.geodeticLatitudeToMercatorAngle(z)-b)*S}let Q;n.hasGeodeticSurfaceNormals&&(Q=t.geodeticSurfaceNormal(w,lJ)),n.encode(i,o*I,w,P,R,O,k,Q),c.minimumHeight=Math.min(c.minimumHeight,R),c.maximumHeight=Math.max(c.maximumHeight,R),++o}return o}function G0e(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!uJ(h,f))continue;let A;switch(i){case Sn.WEST:A=f.westIndicesSouthToNorth;break;case Sn.SOUTH:A=f.southIndicesEastToWest;break;case Sn.EAST:A=f.eastIndicesNorthToSouth;break;case Sn.NORTH:A=f.northIndicesWestToEast;break}let g=A[n?0:A.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function uJ(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function z0e(e,t,n,i,o,r,s,a){let c,u,f,h,A,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(uJ(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,A=c[h],m.encoding.decodeTextureCoordinates(m.vertices,A,wf);let _=K2(g,e.tile,wf,wf);if(_.x===r&&_.y===s)return cJ(m,A,r,s,a),!0;if(h=Wo(c,u?r:s,function(y,C){m.encoding.decodeTextureCoordinates(m.vertices,y,wf);let E=K2(g,e.tile,wf,wf);return f?u?E.x-r:E.y-s:u?r-E.x:s-E.y}),h<0){if(h=~h,h>0&&h<c.length)return rAt(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return cJ(m,c[h],r,s,a),!0}return!1}var aAt=[new d,new d,new d,new d];function cAt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=aAt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var gw=pw;function _r(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Bn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new _e,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(_r.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(_r.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(_r.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(_r.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new _e,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new G(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(_r.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=se.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){wh.setOwner(e,this,"_clippingPolygons")}}});function lAt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}_r.prototype.update=function(e){this._imageryLayers._update()};function uAt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}_r.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(lAt)})),uAt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Gd._freeVertexArray(t[i]);t.length=0};_r.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};_r.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Qa.LESS}}),this._blendRenderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},blending:pn.ALPHA_BLEND});let s=ze(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Ue.fromCache(s),s=ze(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Ue.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&gw.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let u=0,f=c.length;u<f;++u){let h=c[u],A=h.data.tileBoundingRegion;NAt(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,A.minimumHeight)}}};function K0e(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}_r.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)K0e(t[n],e)};_r.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};_r.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};_r.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===ai.CULLED_BUT_NEEDED,o=n.terrainState),Gd.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Mr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Gd.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var fAt=new le,X0e=new ae,dAt=new ae,hAt=new Ae;function sH(e,t){if(t.west<t.east)return t;let n=ae.clone(t,dAt);return ae.center(e,hAt).longitude>0?n.east=D.PI:n.west=-D.PI,n}function J0e(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}_r.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=J0e(this,t);if(t.fog.enabled&&!o&&D.fog(i,t.fog.density)>=1)return Mr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Mr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=sH(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,X0e);if(!l(f))return Mr.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ie.SCENE3D&&(c=fAt,le.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ie.MORPHING&&l(r.renderedMesh)&&(c=le.union(s.boundingSphere,c,c))),!l(c))return Mr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let y=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=y!==tn.INSIDE,y===tn.OUTSIDE)return Mr.NONE}let A=this._clippingPolygons;if(l(A)&&A.enabled){let y=A.computeIntersectionWithBoundingVolume(s);e.isClipped=y!==tn.OUTSIDE}let g,m=a.computeVisibility(c);if(m===tn.OUTSIDE?g=Mr.NONE:m===tn.INTERSECTING?g=Mr.PARTIAL:m===tn.INSIDE&&(g=Mr.FULL),g===Mr.NONE)return g;let _=t.mode===ie.SCENE3D&&t.camera.frustum instanceof An;if(t.mode===ie.SCENE3D&&!_&&l(n)&&!o){let y=r.occludeePointInScaledSpace;return!l(y)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(y,s.minimumHeight)?g:Mr.NONE}return g};_r.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var mAt=[],AAt=[];_r.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=mAt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===To.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],A=h.loadingImagery,g=!l(A)||A.state===qn.FAILED||A.state===qn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=AAt;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),A=h._lastSelectionResultFrame===u?h._lastSelectionResult:ai.NONE;if(A===ai.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===To.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let _=m[a],y=_.loadingImagery,C=!l(y)||y.state===qn.FAILED||y.state===qn.INVALID,E=(_.loadingImagery||_.readyImagery).imageryLayer._layerIndex;if(C&&!i[E])return!1}}else A===ai.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var pAt=new d;_r.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,pAt),a=d.magnitude(s);return a<D.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var W0e=new N,rH=new N,gAt=new se,_At=new se,yAt=new se,CAt=new d,j0e=new d,EAt=new d,IAt=new d;_r.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var xAt=[new d,new d,new d,new d];function Y0e(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=xAt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}_r.prototype.computeDistanceToTile=function(e,t){bAt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function bAt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Gd);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new sf({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=i.mesh,h=i.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0)r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let g=A.data;if(g!==void 0){let m=g.mesh,_=g.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0){r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight;break}else if(_!==void 0&&_._minimumHeight!==void 0&&_._maximumHeight!==void 0){r.minimumHeight=_._minimumHeight,r.maximumHeight=_._maximumHeight;break}}A=A.parent}u=A}if(u!==void 0){let A=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(A!==1&&(c=!1,r.minimumHeight=Ur.getHeight(r.minimumHeight,A,g),r.maximumHeight=Ur.getHeight(r.maximumHeight,A,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Fn.clone(f.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=le.clone(f.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(f.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=Y0e(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let _=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||_)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=Y0e(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}_r.prototype.isDestroyed=function(){return!1};_r.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function TAt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}_r.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let A=f+h;e._createTileImagerySkeletons(s,n,A)&&(s._loadedCallbacks[e._layerIndex]=TAt(h,e,n),s.state=Ta.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=Ta.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==ai.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};_r.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};_r.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};_r.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var SAt=new N,wAt=new N;function q0e(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=N.multiplyByPoint(i,this.properties.rtc,j0e);return N.setTranslation(i,o,W0e),W0e},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=N.multiplyByPoint(i,this.properties.rtc,j0e);return N.setTranslation(i,r,rH),N.multiply(o,rH,rH),rH},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?N.multiply(e.context.uniformState.view,i.modelMatrix,SAt):N.IDENTITY;return N.inverseTranspose(o,wAt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new se(0,0,.5,1),fillHighlightColor:new G(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new U(65e5,9e6),nightFadeDistance:new U(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new N,tileRectangle:new se,verticalExaggerationAndRelativeHeight:new U(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new U,southMercatorYAndOneOverHeight:new U,waterMask:void 0,waterMaskTranslationAndScale:new se,minMaxHeight:new U,scaleAndBias:new N,clippingPlanesEdgeColor:G.clone(G.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new se,frontFaceAlphaByDistance:new se,backFaceAlphaByDistance:new se,localizedTranslucencyRectangle:new se,undergroundColor:G.clone(G.TRANSPARENT),undergroundColorAlphaByDistance:new se,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?Tt(n,t.materialUniformMap):n}function BAt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=DAt(e,r,o),i.wireframeVertexArray.mesh=o}}function DAt(e,t,n){let o={indices:n.indices,primitiveType:Me.TRIANGLES};Vn.toWireframe(o);let r=o.indices,s=Ct.createIndexBuffer({context:e,typedArray:r,usage:Qe.STATIC_DRAW,indexDatatype:Oe.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new li({context:e,attributes:t._attributes,indexBuffer:s})}var Z0e,$0e,aH;(function(){let e=new Pt({geometry:ah.fromDimensions({dimensions:new d(2,2,2)})}),t=new Pt({geometry:new dg({radius:1})}),n=new N,i,o;function r(s){return new Qn({geometryInstances:s,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}Z0e=function(s,a){return s===i||(aH(),i=s,n=N.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=$t.fromColor(a),o=r(e)),o},$0e=function(s,a){return s===i||(aH(),i=s,n=N.fromTranslation(s.center,n),n=N.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=$t.fromColor(a),o=r(t)),o},aH=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var vAt=new se(0,0,0,0),PAt={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},RAt=G.TRANSPARENT,MAt=new jt;function NAt(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new gw(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let Ft=r.credits;for(let St=0,oi=Ft.length;St<oi;++St)o.addCreditToNextFrame(Ft[St])}let s=Yt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let u=n.cameraUnderground,f=n.globeTranslucencyState,h=f.translucent,A=f.frontFaceAlphaByDistance,g=f.backFaceAlphaByDistance,m=f.rectangle,_=e.undergroundColor??RAt,y=e.undergroundColorAlphaByDistance??MAt,C=J0e(e,n)&&n.mode===ie.SCENE3D&&_.alpha>0&&(y.nearValue>0||y.farValue>0),E=e.lambertDiffuseMultiplier,I=e.vertexShadowDarkness,b=e.hasWaterMask&&l(a),S=b&&e.showWaterEffect,B=e.oceanNormalMap,v=S&&l(B),P=e.terrainProvider,M=l(P)&&e.terrainProvider.hasVertexNormals,L=n.fog.enabled&&n.fog.renderable&&!u,p=e.showGroundAtmosphere&&n.mode===ie.SCENE3D,x=Bn.castShadows(e.shadows)&&!h,T=Bn.receiveShadows(e.shadows)&&!h,w=e.hueShift,R=e.saturationShift,O=e.brightnessShift,k=!(D.equalsEpsilon(w,0,D.EPSILON7)&&D.equalsEpsilon(R,0,D.EPSILON7)&&D.equalsEpsilon(O,0,D.EPSILON7)),Q=!1;if(p){let Ft=d.magnitude(n.camera.positionWC),St=e.nightFadeOutDistance;Q=Ft>St}b&&--s,v&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=f.numberOfTextureUniforms;let z=i.renderedMesh,F=z.center,H=z.encoding,W=i.tileBoundingRegion,Z=n.verticalExaggeration,Y=n.verticalExaggerationRelativeHeight,$=Z!==1,X=H.hasGeodeticSurfaceNormals,he=gAt,ge=0,fe=0,ye=0,xe=0,ve=!1;if(n.mode!==ie.SCENE3D){let Ft=n.mapProjection,St=Ft.project(ae.southwest(t.rectangle),EAt),oi=Ft.project(ae.northeast(t.rectangle),IAt);if(he.x=St.x,he.y=St.y,he.z=oi.x,he.w=oi.y,n.mode!==ie.MORPHING&&(F=CAt,F.x=0,F.y=(he.z+he.x)*.5,F.z=(he.w+he.y)*.5,he.x-=F.y,he.y-=F.z,he.z-=F.y,he.w-=F.z),n.mode===ie.SCENE2D&&H.quantization===ba.BITS12){let Et=1/(Math.pow(2,12)-1)*.5,Lo=(he.z-he.x)*Et,Ho=(he.w-he.y)*Et;he.x-=Lo,he.y-=Ho,he.z+=Lo,he.w+=Ho}Ft instanceof zi&&(ge=t.rectangle.south,fe=t.rectangle.north,ye=zi.geodeticLatitudeToMercatorAngle(ge),xe=1/(zi.geodeticLatitudeToMercatorAngle(fe)-ye),ve=!0)}let Te=PAt;Te.frameState=n,Te.surfaceTile=i,Te.hasWaterMask=b,Te.showReflectiveOcean=S,Te.showOceanWaves=v,Te.enableLighting=e.enableLighting,Te.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Te.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Te.showGroundAtmosphere=p,Te.atmosphereLightIntensity=e.atmosphereLightIntensity,Te.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Te.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Te.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Te.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Te.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Te.perFragmentGroundAtmosphere=Q,Te.hasVertexNormals=M,Te.useWebMercatorProjection=ve,Te.clippedByBoundaries=i.clippedByBoundaries,Te.hasGeodeticSurfaceNormals=X,Te.hasExaggeration=$;let ke=i.imagery,Ge=0,Ke=ke.length,tt=e.showSkirts&&!u&&!h,en=e.backFaceCulling&&!u&&!h,it=en?e._renderState:e._disableCullingRenderState,nn=en?e._blendRenderState:e._disableCullingBlendRenderState,qt=it,Rt=e._firstPassInitialColor,Si=n.context;if(l(e._debug.boundingSphereTile)||aH(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let Ft=e._drawCommands.length;for(let St=0;St<Ft;++St)e._uniformMaps[St]=q0e(n,e)}do{let Ft=0,St,oi;if(e._drawCommands.length<=e._usedDrawCommands?(St=new nt,St.owner=t,St.cull=!1,St.boundingVolume=new le,St.orientedBoundingBox=void 0,oi=q0e(n,e),e._drawCommands.push(St),e._uniformMaps.push(oi)):(St=e._drawCommands[e._usedDrawCommands],oi=e._uniformMaps[e._usedDrawCommands]),St.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let ps=W.boundingVolume,ic=W.boundingSphere;l(ps)?Z0e(ps,G.RED).update(n):l(ic)&&$0e(ic,G.RED).update(n)}let Et=oi.properties;se.clone(Rt,Et.initialColor),Et.oceanNormalMap=B,Et.lightingFadeDistance.x=e.lightingFadeOutDistance,Et.lightingFadeDistance.y=e.lightingFadeInDistance,Et.nightFadeDistance.x=e.nightFadeOutDistance,Et.nightFadeDistance.y=e.nightFadeInDistance,Et.atmosphereLightIntensity=e.atmosphereLightIntensity,Et.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Et.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Et.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Et.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Et.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Et.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Lo=u?g:A,Ho=u?A:g;l(Lo)&&(se.fromElements(Lo.near,Lo.nearValue,Lo.far,Lo.farValue,Et.frontFaceAlphaByDistance),se.fromElements(Ho.near,Ho.nearValue,Ho.far,Ho.farValue,Et.backFaceAlphaByDistance)),se.fromElements(y.near,y.nearValue,y.far,y.farValue,Et.undergroundColorAlphaByDistance),G.clone(_,Et.undergroundColor),Et.lambertDiffuseMultiplier=E,Et.vertexShadowDarkness=I;let Pa=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;Pa&&G.clone(e.fillHighlightColor,Et.fillHighlightColor),Et.verticalExaggerationAndRelativeHeight.x=Z,Et.verticalExaggerationAndRelativeHeight.y=Y,Et.center3D=z.center,d.clone(F,Et.rtc),se.clone(he,Et.tileRectangle),Et.southAndNorthLatitude.x=ge,Et.southAndNorthLatitude.y=fe,Et.southMercatorYAndOneOverHeight.x=ye,Et.southMercatorYAndOneOverHeight.y=xe;let Er=_At,Lr=sH(t.rectangle,e.cartographicLimitRectangle),Fe=yAt,lt=sH(t.rectangle,m);d.fromElements(w,R,O,Et.hsbShift);let Xe=t.rectangle,et=1/Xe.width,gt=1/Xe.height;Er.x=(Lr.west-Xe.west)*et,Er.y=(Lr.south-Xe.south)*gt,Er.z=(Lr.east-Xe.west)*et,Er.w=(Lr.north-Xe.south)*gt,se.clone(Er,Et.localizedCartographicLimitRectangle),Fe.x=(lt.west-Xe.west)*et,Fe.y=(lt.south-Xe.south)*gt,Fe.z=(lt.east-Xe.west)*et,Fe.w=(lt.north-Xe.south)*gt,se.clone(Fe,Et.localizedTranslucencyRectangle);let Jt=L&&D.fog(t._distance,n.fog.density)>D.EPSILON3;k=k&&(Jt||p);let bn=!1,ho=!1,lo=!1,sa=!1,aa=!1,Wn=!1,bi=!1,vs=!1,Xo=!1,Ra=!1;for(;Ft<s&&Ge<Ke;){let ps=ke[Ge],ic=ps.readyImagery;if(++Ge,!l(ic)||ic.imageryLayer.alpha===0)continue;let oc=ps.useWebMercatorT?ic.textureWebMercator:ic.texture,Or=ic.imageryLayer;l(ps.textureTranslationAndScale)||(ps.textureTranslationAndScale=Or._calculateTextureTranslationAndScale(t,ps)),Et.dayTextures[Ft]=oc,Et.dayTextureTranslationAndScale[Ft]=ps.textureTranslationAndScale,Et.dayTextureTexCoordsRectangle[Ft]=ps.textureCoordinateRectangle,Et.dayTextureUseWebMercatorT[Ft]=ps.useWebMercatorT,Et.dayTextureAlpha[Ft]=Or.alpha,Wn=Wn||Et.dayTextureAlpha[Ft]!==1,Et.dayTextureNightAlpha[Ft]=Or.nightAlpha,bi=bi||Et.dayTextureNightAlpha[Ft]!==1,Et.dayTextureDayAlpha[Ft]=Or.dayAlpha,bi=bi||Et.dayTextureDayAlpha[Ft]!==1,Et.dayTextureBrightness[Ft]=Or.brightness,bn=bn||Et.dayTextureBrightness[Ft]!==rs.DEFAULT_BRIGHTNESS,Et.dayTextureContrast[Ft]=Or.contrast,ho=ho||Et.dayTextureContrast[Ft]!==rs.DEFAULT_CONTRAST,Et.dayTextureHue[Ft]=Or.hue,lo=lo||Et.dayTextureHue[Ft]!==rs.DEFAULT_HUE,Et.dayTextureSaturation[Ft]=Or.saturation,sa=sa||Et.dayTextureSaturation[Ft]!==rs.DEFAULT_SATURATION,Et.dayTextureOneOverGamma[Ft]=1/Or.gamma,aa=aa||Et.dayTextureOneOverGamma[Ft]!==1/rs.DEFAULT_GAMMA,Et.dayTextureSplit[Ft]=Or.splitDirection,vs=vs||Et.dayTextureSplit[Ft]!==0;let ql=Et.dayTextureCutoutRectangles[Ft];if(l(ql)||(ql=Et.dayTextureCutoutRectangles[Ft]=new se),se.clone(se.ZERO,ql),l(Or.cutoutRectangle)){let vo=sH(Xe,Or.cutoutRectangle),un=ae.simpleIntersection(vo,Xe,X0e);Xo=l(un)||Xo,ql.x=(vo.west-Xe.west)*et,ql.y=(vo.south-Xe.south)*gt,ql.z=(vo.east-Xe.west)*et,ql.w=(vo.north-Xe.south)*gt}let Kl=Et.colorsToAlpha[Ft];l(Kl)||(Kl=Et.colorsToAlpha[Ft]=new se);let ca=l(Or.colorToAlpha)&&Or.colorToAlphaThreshold>0;if(Ra=Ra||ca,ca){let vo=Or.colorToAlpha;Kl.x=vo.red,Kl.y=vo.green,Kl.z=vo.blue,Kl.w=Or.colorToAlphaThreshold}else Kl.w=-1;if(l(ic.credits)){let vo=ic.credits;for(let un=0,Se=vo.length;un<Se;++un)o.addCreditToNextFrame(vo[un])}++Ft}Et.dayTextures.length=Ft,Et.waterMask=a,se.clone(c,Et.waterMaskTranslationAndScale),Et.minMaxHeight.x=H.minimumHeight,Et.minMaxHeight.y=H.maximumHeight,N.clone(H.matrix,Et.scaleAndBias);let mo=e._clippingPlanes,Jo=l(mo)&&mo.enabled&&t.isClipped;Jo&&(Et.clippingPlanesEdgeColor=G.clone(mo.edgeColor,Et.clippingPlanesEdgeColor),Et.clippingPlanesEdgeWidth=mo.edgeWidth);let Uf=e._clippingPolygons,Ir=l(Uf)&&Uf.enabled&&t.isClipped;Te.numberOfDayTextures=Ft,Te.applyBrightness=bn,Te.applyContrast=ho,Te.applyHue=lo,Te.applySaturation=sa,Te.applyGamma=aa,Te.applyAlpha=Wn,Te.applyDayNightAlpha=bi,Te.applySplit=vs,Te.enableFog=Jt,Te.enableClippingPlanes=Jo,Te.clippingPlanes=mo,Te.enableClippingPolygons=Ir,Te.clippingPolygons=Uf,Te.hasImageryLayerCutout=Xo,Te.colorCorrect=k,Te.highlightFillTile=Pa,Te.colorToAlpha=Ra,Te.showUndergroundColor=C,Te.translucent=h;let Ps=i.renderedMesh.indices.length;tt||(Ps=i.renderedMesh.indexCountWithoutSkirts),St.shaderProgram=e._surfaceShaderSet.getShaderProgram(Te),St.castShadows=x,St.receiveShadows=T,St.renderState=qt,St.primitiveType=Me.TRIANGLES,St.vertexArray=i.vertexArray||i.fill.vertexArray,St.count=Ps,St.uniformMap=oi,St.pass=Be.GLOBE,e._debug.wireframe&&(BAt(Si,e,t),l(i.wireframeVertexArray)&&(St.vertexArray=i.wireframeVertexArray,St.primitiveType=Me.LINES,St.count=Ps*2));let Ws=St.boundingVolume,eh=St.orientedBoundingBox;n.mode!==ie.SCENE3D?(le.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,W.minimumHeight,W.maximumHeight,Ws),d.fromElements(Ws.center.z,Ws.center.x,Ws.center.y,Ws.center),n.mode===ie.MORPHING&&(Ws=le.union(W.boundingSphere,Ws,Ws))):(St.boundingVolume=le.clone(W.boundingSphere,Ws),St.orientedBoundingBox=Fn.clone(W.boundingVolume,eh)),St.dirty=!0,h&&f.updateDerivedCommands(St,n),K0e(St,n),qt=nn,Rt=vAt}while(Ge<Ke)}var X2=_r;function eIe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(eIe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=jt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=jt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var J2=eIe;function tIe(e){this._ellipsoid=new Eg(e.ellipsoid,d.ZERO)}Object.defineProperties(tIe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Z2=tIe;var fJ=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},LAt=1e3;function Sa(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=ai.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new fJ(LAt),this.state=Ta.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}Sa.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new Sa({tilingScheme:e,x:s,y:r,level:0});return i};var OAt=256;function FAt(e,t,n,i){let o=n.width/OAt*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}Sa.prototype._getCacheKey=function(e,t){return FAt(e.longitude,e.latitude,this._rectangle,t)};Sa.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};Sa.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};Sa.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};Sa.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(Sa.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Ta.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});Sa.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};Sa.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};Sa.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};Sa.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};Sa.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};Sa.prototype.freeResources=function(){this.clearPositionCache(),this.state=Ta.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),cH(this._southwestChild),this._southwestChild=void 0,cH(this._southeastChild),this._southeastChild=void 0,cH(this._northwestChild),this._northwestChild=void 0,cH(this._northeastChild),this._northeastChild=void 0};function cH(e){l(e)&&e.freeResources()}var $2=Sa;function lH(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}lH.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};lH.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),nIe(this,t)),t=i}};function nIe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}lH.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&nIe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var eQ=lH;function zd(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new eQ,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new Z2({ellipsoid:n}),this._tileLoadProgressEvent=new _e,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(zd.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});zd.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function QAt(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,oIe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}zd.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==Ta.START&&e(t),t=t.replacementNext};zd.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};zd.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};zd.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function oIe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}zd.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(QAt(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),oIe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};zd.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),zAt(this,e),ZAt(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function kAt(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=_e.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}zd.prototype.endFrame=function(e){!e.passes.render||e.mode===ie.MORPHING||(qAt(this,e),JAt(this,e),kAt(this,e))};zd.prototype.isDestroyed=function(){return!1};zd.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var nQ,iIe=new Ae;function UAt(e,t){let n=ae.center(e.rectangle,iIe),i=n.longitude-nQ.longitude,o=n.latitude-nQ.latitude;n=ae.center(t.rectangle,iIe);let r=n.longitude-nQ.longitude,s=n.latitude-nQ.latitude;return i*i+o*o-(r*r+s*s)}var GAt=new d,tQ=[];function zAt(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let _=r.tilingScheme;if(l(_)){let y=r.tilingScheme;e._levelZeroTiles=$2.createLevelZeroTiles(y);let C=e._levelZeroTiles.length;if(tQ.length<C)for(tQ=new Array(C),o=0;o<C;++o)tQ[o]===void 0&&(tQ[o]=new iQ)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;nQ=t.camera.positionCartographic,a.sort(UAt);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,A;if(u.length>0||f.length>0){for(o=0,A=a.length;o<A;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=N.getTranslation(g.transform,GAt);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,A=a.length;o<A;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?Ic(e,s,r,t,c,!1,tQ[o]):(Yg(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Yg(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function iQ(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function rIe(){this.southwest=new iQ,this.southeast=new iQ,this.northwest=new iQ,this.northeast=new iQ}rIe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var hJ=new Array(31);for(let e=0;e<hJ.length;++e)hJ[e]=new rIe;function VAt(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=jAt(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,A=n._lastSelectionResultFrame===h?n._lastSelectionResult:ai.NONE,g=e.tileProvider;if(s||i){let m=ai.originalResult(A)===ai.RENDERED,_=ai.originalResult(A)===ai.CULLED||A===ai.NONE,y=n.state===Ta.DONE,C=m||_||y;if(C||l(g.canRenderWithoutLosingDetail)&&(C=g.canRenderWithoutLosingDetail(n)),C){s&&Yg(e,e._tileLoadQueueMedium,n,t),uH(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Yg(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){uH(e,n),Yg(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.REFINED;let _=e._tilesToRender.length,y=e._tileLoadQueueLow.length,C=e._tileLoadQueueMedium.length,E=e._tileLoadQueueHigh.length,I=e._tileToUpdateHeights.length;if(HAt(e,a,c,u,f,t,i,o),_!==e._tilesToRender.length){let b=o.allAreRenderable,S=o.anyWereRenderedLastFrame,B=o.notYetRenderableCount,v=!1;if(!b&&!S){let P=e._tilesToRender;for(let L=_;L<P.length;++L){let p=P[L];for(;p!==void 0&&p._lastSelectionResult!==ai.KICKED&&p!==n;)p._lastSelectionResult=ai.kick(p._lastSelectionResult),p=p.parent}e._tilesToRender.length=_,e._tileToUpdateHeights.length=I,uH(e,n),n._lastSelectionResult=ai.RENDERED;let M=A===ai.RENDERED;!M&&B>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=y,e._tileLoadQueueMedium.length=C,e._tileLoadQueueHigh.length=E,Yg(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,v=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=M,M||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!v&&Yg(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,uH(e,n),Yg(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function HAt(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=hJ[t.level],A=h.southwest,g=h.southeast,m=h.northwest,_=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(Ic(e,t,u,r,f,s,A),Ic(e,n,u,r,f,s,g),Ic(e,i,u,r,f,s,m),Ic(e,o,u,r,f,s,_)):(Ic(e,i,u,r,f,s,m),Ic(e,t,u,r,f,s,A),Ic(e,o,u,r,f,s,_),Ic(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(Ic(e,n,u,r,f,s,g),Ic(e,t,u,r,f,s,A),Ic(e,o,u,r,f,s,_),Ic(e,i,u,r,f,s,m)):(Ic(e,o,u,r,f,s,_),Ic(e,i,u,r,f,s,m),Ic(e,n,u,r,f,s,g),Ic(e,t,u,r,f,s,A)),h.combine(a)}function WAt(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function Ic(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Mr.NONE)return VAt(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,WAt(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Yg(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:ai.NONE;c!==ai.CULLED_BUT_NEEDED&&c!==ai.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=ai.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Yg(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=ai.CULLED):t._lastSelectionResult=ai.CULLED;t._lastSelectionResultFrame=i.frameNumber}function jAt(e,t,n){if(t.mode===ie.SCENE2D||t.camera.frustum instanceof An||t.camera.frustum instanceof es)return YAt(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=D.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function YAt(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ie.SCENE2D&&(h-=D.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function uH(e,t){e._tilesToRender.push(t)}function qAt(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Li()+e._loadQueueTimeSlice,s=e._tileProvider,a=dJ(e,t,s,r,n,!1);a=dJ(e,t,s,r,i,a),dJ(e,t,s,r,o,a)}function KAt(e,t){return e._loadPriority-t._loadPriority}function dJ(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(KAt);for(let s=0,a=o.length;s<a&&(Li()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var _w=new In,fH=new Ae,fC=new d,XAt=[];function JAt(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=XAt;n.length=0;let i=e._tileToUpdateHeights,o=Li(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let _=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:ai.NONE;(_===ai.RENDERED||_===ai.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let A=h.customData,g=A.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let _=A[f],y=h.data.terrainData,C=l(y)&&y.wasCreatedByUpsampling();if(h.level>_.level&&!C){let E,I=h.getPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError);if(l(I))E=I;else{if(l(_.positionOnEllipsoidSurface)||(_.positionOnEllipsoidSurface=d.fromRadians(_.positionCartographic.longitude,_.positionCartographic.latitude,0,u)),a===ie.SCENE3D){let b=u.geodeticSurfaceNormal(_.positionOnEllipsoidSurface,_w.direction),S=u.getSurfaceNormalIntersectionWithZAxis(_.positionOnEllipsoidSurface,11500,_w.origin);if(!l(S)){let B=0;l(h.data.tileBoundingRegion)&&(B=h.data.tileBoundingRegion.minimumHeight);let v=Math.min(B,-11500),P=d.multiplyByScalar(b,Math.abs(v)+1,fC);d.subtract(_.positionOnEllipsoidSurface,P,_w.origin)}}else Ae.clone(_.positionCartographic,fH),fH.height=-11500,c.project(fH,fC),d.fromElements(fC.z,fC.x,fC.y,fC),d.clone(fC,_w.origin),d.clone(d.UNIT_X,_w.direction);E=h.data.pick(_w,a,c,!1,fC),l(E)&&h.setPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError,E)}if(l(E)){if(l(_.callback)){let b=u.cartesianToCartographic(E,fH);_.callback(b)}_.level=h.level}}if(Li()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function ZAt(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var oQ=zd;function pm(e){e=e??te.default;let t=new DA({ellipsoid:e}),n=new Q0;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new q2,this._material=void 0,this._surface=new oQ({tileProvider:new X2({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new _e,this._undergroundColor=G.clone(G.BLACK),this._undergroundColorAlphaByDistance=new jt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new J2,AJ(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new we({url:fn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=te.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=D.PI*e.minimumRadius,this.nightFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*D.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Bn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(pm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&AJ(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,AJ(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=G.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=jt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function AJ(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[Bh,fw];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(F2),e._surfaceShaderSet.baseVertexShaderSource=new He({sources:[Bh,fw,Q2],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new He({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function $At(e){return function(t,n){let i=le.distanceSquaredTo(t.pickBoundingSphere,e),o=le.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var ept=[],tpt={start:0,stop:0};pm.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=ept;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let A=u.data;if(!l(A))continue;let g=A.pickBoundingSphere;if(o!==ie.SCENE3D)A.pickBoundingSphere=g=le.fromRectangleWithHeights2D(u.rectangle,r,A.tileBoundingRegion.minimumHeight,A.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(A.renderedMesh))le.clone(A.tileBoundingRegion.boundingSphere,g);else continue;let m=hi.raySphere(e,g,tpt);l(m)&&s.push(A)}s.sort($At(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var npt=new Ae;pm.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ie.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,npt);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var ipt=new d,sIe=new d,opt=new Ae,rpt=new In;function mJ(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}pm.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=mJ(n._southwestChild,e)||mJ(n._southeastChild,e)||mJ(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,ipt),u=rpt,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(g??0,-11500),_=d.multiplyByScalar(f,Math.abs(m)+1,sIe);d.subtract(c,_,u.origin)}let A=n.data.pick(u,void 0,s,!1,sIe);if(l(A))return a.cartesianToCartographic(A,opt).height};pm.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};pm.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Mt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ie.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};pm.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};pm.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};pm.prototype.isDestroyed=function(){return!1};pm.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var rQ=pm;function spt(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var sQ=spt;var CIe={},apt=32.184,cpt=2451545,aIe=-.0529921,cIe=-.1059842,lIe=13.0120009,uIe=13.3407154,fIe=.9856003,dIe=26.4057084,hIe=13.064993,mIe=.3287146,AIe=1.7484877,pIe=-.1589763,gIe=.0036096,_Ie=.1643573,yIe=12.9590088,pJ=new K;CIe.ComputeMoon=function(e,t){l(e)||(e=K.now()),pJ=K.addSeconds(e,apt,pJ);let n=K.totalDays(pJ)-cpt,i=n/ri.DAYS_PER_JULIAN_CENTURY,o=(125.045+aIe*n)*D.RADIANS_PER_DEGREE,r=(250.089+cIe*n)*D.RADIANS_PER_DEGREE,s=(260.008+lIe*n)*D.RADIANS_PER_DEGREE,a=(176.625+uIe*n)*D.RADIANS_PER_DEGREE,c=(357.529+fIe*n)*D.RADIANS_PER_DEGREE,u=(311.589+dIe*n)*D.RADIANS_PER_DEGREE,f=(134.963+hIe*n)*D.RADIANS_PER_DEGREE,h=(276.617+mIe*n)*D.RADIANS_PER_DEGREE,A=(34.226+AIe*n)*D.RADIANS_PER_DEGREE,g=(15.134+pIe*n)*D.RADIANS_PER_DEGREE,m=(119.743+gIe*n)*D.RADIANS_PER_DEGREE,_=(239.961+_Ie*n)*D.RADIANS_PER_DEGREE,y=(25.053+yIe*n)*D.RADIANS_PER_DEGREE,C=Math.sin(o),E=Math.sin(r),I=Math.sin(s),b=Math.sin(a),S=Math.sin(c),B=Math.sin(u),v=Math.sin(f),P=Math.sin(h),M=Math.sin(A),L=Math.sin(g),p=Math.sin(m),x=Math.sin(_),T=Math.sin(y),w=Math.cos(o),R=Math.cos(r),O=Math.cos(s),k=Math.cos(a),Q=Math.cos(c),z=Math.cos(u),F=Math.cos(f),H=Math.cos(h),W=Math.cos(A),Z=Math.cos(g),Y=Math.cos(m),$=Math.cos(_),X=Math.cos(y),he=(269.9949+.0031*i-3.8787*C-.1204*E+.07*I-.0172*b+.0072*B-.0052*L+.0043*T)*D.RADIANS_PER_DEGREE,ge=(66.5392+.013*i+1.5419*w+.0239*R-.0278*O+.0068*k-.0029*z+9e-4*F+8e-4*Z-9e-4*X)*D.RADIANS_PER_DEGREE,fe=(38.3213+13.17635815*n-14e-13*n*n+3.561*C+.1208*E-.0642*I+.0158*b+.0252*S-.0066*B-.0047*v-.0046*P+.0028*M+.0052*L+.004*p+.0019*x-.0044*T)*D.RADIANS_PER_DEGREE,ye=(13.17635815-14e-13*(2*n)+3.561*w*aIe+.1208*R*cIe-.0642*O*lIe+.0158*k*uIe+.0252*Q*fIe-.0066*z*dIe-.0047*F*hIe-.0046*H*mIe+.0028*W*AIe+.0052*Z*pIe+.004*Y*gIe+.0019*$*_Ie-.0044*X*yIe)/86400*D.RADIANS_PER_DEGREE;return l(t)||(t=new sQ),t.rightAscension=he,t.declination=ge,t.rotation=fe,t.rotationRate=ye,t};var aQ=CIe;function EIe(e){(!l(e)||typeof e!="function")&&(e=aQ.ComputeMoon),this._computeFunction=e}var lpt=new d,upt=new d,fpt=new d;function dpt(e,t,n){let i=lpt;i.x=Math.cos(e+D.PI_OVER_TWO),i.y=Math.sin(e+D.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=fpt;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,upt);return l(n)||(n=new J),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var hpt=new J,mpt=new Le;EIe.prototype.evaluate=function(e,t){l(e)||(e=K.now());let n=this._computeFunction(e),i=dpt(n.rightAscension,n.declination,t),o=D.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,mpt),s=J.fromQuaternion(Le.conjugate(r,r),hpt);return J.multiply(s,i,i)};var cQ=EIe;var gJ={position:0};function dH(e){e=e??V.EMPTY_OBJECT,this.center=d.clone(e.center??d.ZERO),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new le,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this._computedModelMatrix=new N,this.show=e.show??!0,this.material=e.material??ro.fromType(ro.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new nt({owner:e._owner??this}),this._pickCommand=new nt({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function Apt(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY}));return t=li.fromGeometry({context:e,geometry:n,attributeLocations:gJ,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}dH.prototype.update=function(e){if(!this.show||e.mode!==ie.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?pn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=Apt(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let _=this._oneOverEllipsoidRadiiSquared;_.x=1/(r.x*r.x),_.y=1/(r.y*r.y),_.z=1/(r.z*r.z),o=!0}(!N.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(N.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),N.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),le.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,A;(s||a||i||u)&&(h=new He({sources:[uw]}),A=new He({sources:[this.material.shaderSource,lw]}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:gJ}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=Tt(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(f)),m.pick){let _=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new He({sources:[uw]}),A=new He({sources:[this.material.shaderSource,lw],pickColorQualifier:"uniform"}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._pickSP=an.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:gJ}),_.vertexArray=this._va,_.renderState=this._rs,_.shaderProgram=this._pickSP,_.uniformMap=Tt(Tt(this._uniforms,this._pickUniforms),this.material._uniforms),_.executeInClosestFrustum=n),_.boundingVolume=this._boundingSphere,_.modelMatrix=this._computedModelMatrix,_.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(_)}};dH.prototype.isDestroyed=function(){return!1};dH.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var lQ=dH;function uQ(e){e=e??V.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=fn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??te.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new lQ({radii:this.ellipsoid.radii,material:ro.fromType(ro.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new cQ}Object.defineProperties(uQ.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var hH=new J,ppt=new J,gpt=new d,mH=[];uQ.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(kt.computeIcrfToFixedMatrix(n,hH))||kt.computeTemeToPseudoFixedMatrix(n,hH);let i=this._axes.evaluate(n,ppt);J.transpose(i,i),J.multiply(hH,i,i);let o=lC.computeMoonPositionInEarthInertialFrame(n,gpt);J.multiplyByVector(hH,o,o),N.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=mH,mH.length=0,t.update(e),e.commandList=r,mH.length===1?mH[0]:void 0};uQ.prototype.isDestroyed=function(){return!1};uQ.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var fQ=uQ;var _J=[],yJ=[];function _pt(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=_J,u=yJ,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let A=i;A<=r;++A){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[A]=g,++f):h<a&&(e[A]=m,++h)}}function CJ(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);CJ(e,t,n,i,r),CJ(e,t,n,r+1,o),_pt(e,t,n,i,r,o)}function ypt(e,t,n){let i=e.length,o=Math.ceil(i*.5);_J.length=o,yJ.length=o,CJ(e,t,n,0,i-1),_J.length=0,yJ.length=0}var vA=ypt;function $c(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var AH=new d;Object.defineProperties($c.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,AH),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,AH);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,AH),AH)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});$c.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new $c(e,t)};var xIe=new d;$c.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,xIe),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var Cpt=new d;$c.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,Cpt),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,xIe),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Ept=new d;$c.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Mr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Ept),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Mr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Mr.FULL:Mr.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Mr.PARTIAL:Mr.FULL))}}return Mr.NONE};var pH=new d;$c.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,pH),pH),c=-d.dot(a,o),u=$c._anyRotationVector(o,a,c),f=$c._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=$c._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let A=r/f;return d.add(o,d.multiplyByScalar(a,A,pH),pH)};var Ipt=[];$c.computeOccludeePointFromRectangle=function(e,t){t=t??te.default;let n=ae.subsample(e,t,0,Ipt),i=le.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return $c.computeOccludeePoint(new le(o,t.minimumRadius),i.center,n)};var xpt=new d;$c._anyRotationVector=function(e,t,n){let i=d.abs(t,xpt),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var bpt=new d;$c._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,bpt);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>D.EPSILON13)return d.normalize(s,new d)}return o};var EJ=new d,Tpt=new d,gH=new d,IIe=new d;$c._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,EJ),s=d.clone(e.center,Tpt),a=e.radius,c=d.subtract(s,r,gH),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,A=Math.sqrt(h),m=1/Math.sqrt(u),y=A*m*A;c=d.normalize(c,c);let C=d.add(r,d.multiplyByScalar(c,y,IIe),IIe),E=Math.sqrt(h-y*y),I=this._rotationVector(s,t,n,r,i),b=d.fromElements(I.x*I.x*c.x+(I.x*I.y-I.z)*c.y+(I.x*I.z+I.y)*c.z,(I.x*I.y+I.z)*c.x+I.y*I.y*c.y+(I.y*I.z-I.x)*c.z,(I.x*I.z-I.y)*c.x+(I.y*I.z+I.x)*c.y+I.z*I.z*c.z,EJ);b=d.normalize(b,b);let S=d.multiplyByScalar(b,E,EJ);I=d.normalize(d.subtract(d.add(C,S,gH),s,gH),gH);let B=d.dot(t,I);I=d.normalize(d.subtract(d.subtract(C,S,I),s,I),I);let v=d.dot(t,I);return B<v?B:v};var dQ=$c;function PA(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Os,this._perspectiveMatrix=new N,this._infinitePerspective=new N}function IJ(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=N.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=N.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(PA.prototype,{projectionMatrix:{get:function(){return IJ(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return IJ(this),this._infinitePerspective}}});var Spt=new d,wpt=new d,Bpt=new d,Dpt=new d;PA.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Spt),h=wpt;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=Bpt;d.multiplyByScalar(t,u,A),d.add(e,A,A);let g=Dpt;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new se),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,A),this._cullingVolume};PA.prototype.getPixelDimensions=function(e,t,n,i,o){IJ(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};PA.prototype.clone=function(e){return l(e)||(e=new PA),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};PA.prototype.equals=function(e){return l(e)&&e instanceof PA&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};PA.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof PA&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var Vl=PA;function Su(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new Vl,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}Su.packedLength=6;Su.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};Su.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Su),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function gm(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(Su.prototype,{projectionMatrix:{get:function(){return gm(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return gm(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return gm(this),this._fovy}},sseDenominator:{get:function(){return gm(this),this._sseDenominator}},offCenterFrustum:{get:function(){return gm(this),this._offCenterFrustum}}});Su.prototype.computeCullingVolume=function(e,t,n){return gm(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Su.prototype.getPixelDimensions=function(e,t,n,i,o){return gm(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Su.prototype.clone=function(e){return l(e)||(e=new Su),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Su.prototype.equals=function(e){return!l(e)||!(e instanceof Su)?!1:(gm(this),gm(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Su.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Su)?!1:(gm(this),gm(e),D.equalsEpsilon(this.fov,e.fov,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var ki=Su;function hQ(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(hQ.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function vpt(e,t,n){let i=t.createViewportQuadCommand(w2,{framebuffer:n,renderState:Ue.fromCache({viewport:new Ye(0,0,256,256)})});e._drawCommand=i}hQ.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Mt({context:t,width:256,height:256,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST});this._colorTexture=n;let i=new $r({context:t,colorTextures:[n],destroyAttachments:!1});vpt(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};hQ.prototype.isDestroyed=function(){return!1};hQ.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var mQ=hQ;var wIe={};function Ppt(e,t,n){let i,o,r;if(e instanceof ki){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof Vl)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Rpt=new d,bIe=new d;function BIe(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let A=(f-o)/a;return D.lerp(e,-D.PI_OVER_TWO,A)}let h=(f-r)/c;return D.lerp(-D.PI_OVER_TWO,t,1-h)}}return function(o){return D.lerp(e,t,o)}}function bJ(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,A=d.subtract(a,c,Rpt),g=d.magnitude(d.multiplyByScalar(u,d.dot(A,u),bIe)),m=d.magnitude(d.multiplyByScalar(f,d.dot(A,f),bIe));r=Math.min(Ppt(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let A=h*(f-u)+u;return-Math.pow(A,8)/1e6+r}}return function(a){return D.lerp(n,i,a)}}function AQ(e,t){return D.equalsEpsilon(e,D.TWO_PI,D.EPSILON11)&&(e=0),t>e+Math.PI?e+=D.TWO_PI:t<e-Math.PI&&(e-=D.TWO_PI),e}var DIe=new d;function Mpt(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,DIe),f=c.pitch,h=AQ(c.heading,i),A=AQ(c.roll,r),g=bJ(c,n,u.z,n.z,s),m=BIe(f,o,g,a);function _(y){let C=y.time/t;c.setView({orientation:{heading:D.lerp(h,i,C),pitch:m(C),roll:D.lerp(A,r,C)}}),U.lerp(u,n,C,c.position),c.position.z=g(C)}return _}function Npt(e,t){e.longitude<t.longitude?e.longitude+=D.TWO_PI:t.longitude+=D.TWO_PI}function Lpt(e,t){let n=e.longitude-t.longitude;n<-D.PI?e.longitude+=D.TWO_PI:n>D.PI&&(t.longitude+=D.TWO_PI)}var Opt=new Ae,Fpt=new Ae;function Qpt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,A=e.mapProjection.ellipsoid,g=Ae.clone(f.positionCartographic,Opt),m=f.pitch,_=AQ(f.heading,i),y=AQ(f.roll,r),C=A.cartesianToCartographic(n,Fpt);g.longitude=D.zeroToTwoPi(g.longitude),C.longitude=D.zeroToTwoPi(C.longitude);let E=!1;if(l(a)){let B=D.zeroToTwoPi(a),v=Math.min(g.longitude,C.longitude),P=Math.max(g.longitude,C.longitude),M=B>=v&&B<=P;if(l(c)){let L=Math.abs(g.longitude-C.longitude),p=D.TWO_PI-L;(M?L:p)<(M?p:L)*c&&!M&&(E=!0)}else M||(E=!0)}E?Npt(g,C):Lpt(g,C);let I=bJ(f,n,g.height,C.height,s),b=BIe(m,o,I,u);function S(){let B=g.longitude,v=C.longitude,P=g.latitude,M=C.latitude;return function(p){let x=p.time/t,T=d.fromRadians(D.lerp(B,v,x),D.lerp(P,M,x),I(x),A);f.setView({destination:T,orientation:{heading:D.lerp(_,i,x),pitch:b(x),roll:D.lerp(y,r,x)}})}}return S()}function kpt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,DIe),u=AQ(a.heading,i),f=a.frustum.right-a.frustum.left,h=bJ(a,n,f,n.z,s);function A(g){let m=g.time/t;a.setView({orientation:{heading:D.lerp(u,i,m)}}),U.lerp(c,n,m,a.position);let _=h(m),y=a.frustum,C=y.top/y.right,E=(_-(y.right-y.left))*.5;y.right+=E,y.left-=E,y.top=C*y.right,y.bottom=-y.top}return A}var TIe=new Ae,Upt=new d;function xJ(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function SIe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}wIe.createTween=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===ie.MORPHING)return xJ();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ie.SCENE3D&&(s.cartesianToCartographic(n,TIe),n=r.project(TIe,Upt));let A=e.camera,g=t.endTransform;l(g)&&A._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(A.position,n)/1e6)+2,m=Math.min(m,3));let _=t.heading??0,y=t.pitch??-D.PI_OVER_TWO,C=t.roll??0,E=e.screenSpaceCameraController;E.enableInputs=!1;let I=SIe(E,t.complete),b=SIe(E,t.cancel),S=A.frustum,B=e.mode===ie.SCENE2D;if(B=B&&U.equalsEpsilon(A.position,n,D.EPSILON6),B=B&&D.equalsEpsilon(Math.max(S.right-S.left,S.top-S.bottom),n.z,D.EPSILON6),B=B||e.mode!==ie.SCENE2D&&d.equalsEpsilon(n,A.position,D.EPSILON10),B=B&&D.equalsEpsilon(D.negativePiToPi(_),D.negativePiToPi(A.heading),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(y),D.negativePiToPi(A.pitch),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(C),D.negativePiToPi(A.roll),D.EPSILON10),B)return xJ(I,b);let v=new Array(4);if(v[ie.SCENE2D]=kpt,v[ie.SCENE3D]=Qpt,v[ie.COLUMBUS_VIEW]=Mpt,m<=0)return xJ(function(){v[i](e,1,n,_,y,C,a,c,u,f)({time:1}),typeof I=="function"&&I()},b);let P=v[i](e,m,n,_,y,C,a,c,u,f);if(!l(h)){let M=A.positionCartographic.height,L=i===ie.SCENE3D?s.cartesianToCartographic(n).height:n.z;M>L&&M>11500?h=ms.CUBIC_OUT:h=ms.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:P,complete:I,cancel:b}};var pQ=wIe;var Gpt={ROTATE:0,INFINITE_SCROLL:1},wu=Object.freeze(Gpt);function ln(e){this._scene=e,this._transform=N.clone(N.IDENTITY),this._invTransform=N.clone(N.IDENTITY),this._actualTransform=N.clone(N.IDENTITY),this._actualInvTransform=N.clone(N.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new Ae,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new ki,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new _e,this._moveEnd=new _e,this._changed=new _e,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new N,this._invViewMatrix=new N,FIe(this),this._mode=ie.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._max2Dfrustum=void 0,KIe(this,ln.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*ln.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}ln.TRANSFORM_2D=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);ln.TRANSFORM_2D_INVERSE=N.inverseTransformation(ln.TRANSFORM_2D,new N);ln.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);ln.DEFAULT_VIEW_FACTOR=.5;ln.DEFAULT_OFFSET=new Md(0,-D.PI_OVER_FOUR,0);function FIe(e){N.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),N.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),N.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function zpt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Li()):e.timeSinceMoved=Math.max(Li()-e._lastMovedTimestamp,0)/1e3}}ln.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ie.SCENE2D};ln.prototype._updateCameraChanged=function(){let e=this;if(zpt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%D.TWO_PI;i=i>D.PI?D.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%D.TWO_PI;s=s>D.PI?D.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ie.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let A=e.position,g=e._changedPosition,m=e.frustum,_=e._changedFrustum,y=A.x+m.left,C=A.x+m.right,E=g.x+_.left,I=g.x+_.right,b=A.y+m.bottom,S=A.y+m.top,B=g.y+_.bottom,v=g.y+_.top,P=Math.max(y,E),M=Math.min(C,I),L=Math.max(b,B),p=Math.min(S,v),x;if(P>=M||L>=S)x=1;else{let T=_;y<E&&C>I&&b<B&&S>v&&(T=m),x=1-(M-P)*(p-L)/((T.right-T.left)*(T.top-T.bottom))}x>t&&(e._changed.raiseEvent(x),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=D.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function Vpt(e){kt.basisTo2D(e._projection,e._transform,e._actualTransform)}var Hpt=new Ae,Wpt=new d,_H=new d,jpt=new se,Ypt=new se,qpt=new se,Kpt=new se,Xpt=new se;function Jpt(e){let t=e._projection,n=t.ellipsoid,i=N.getColumn(e._transform,3,jpt),o=n.cartesianToCartographic(i,Hpt),r=t.project(o,Wpt),s=Ypt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=se.clone(se.UNIT_X,Xpt),c=se.add(N.getColumn(e._transform,0,_H),i,_H);n.cartesianToCartographic(c,o),t.project(o,r);let u=qpt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=Kpt;if(d.magnitudeSquared(u)>D.EPSILON10)d.cross(a,u,f);else{let h=se.add(N.getColumn(e._transform,1,_H),i,_H);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<D.EPSILON10&&(se.clone(se.UNIT_Y,u),se.clone(se.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),N.setColumn(e._actualTransform,0,u,e._actualTransform),N.setColumn(e._actualTransform,1,f,e._actualTransform),N.setColumn(e._actualTransform,2,a,e._actualTransform),N.setColumn(e._actualTransform,3,s,e._actualTransform)}var TJ=new d;function tl(e){let t=e._mode,n=!1,i=0;t===ie.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let A=e._transformChanged||e._modeChanged;e._transformChanged=!1,A&&(N.inverseTransformation(e._transform,e._invTransform),e._mode===ie.COLUMBUS_VIEW||e._mode===ie.SCENE2D?N.equals(N.IDENTITY,e._transform)?N.clone(ln.TRANSFORM_2D,e._actualTransform):e._mode===ie.COLUMBUS_VIEW?Vpt(e):Jpt(e):N.clone(e._transform,e._actualTransform),N.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||A)if(e._positionWC=N.multiplyByPoint(g,o,e._positionWC),t===ie.SCENE3D||t===ie.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=TJ;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ie.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,TJ));if(Math.abs(1-m)>D.EPSILON2){let _=1/d.magnitudeSquared(c),y=d.dot(c,s)*_,C=d.multiplyByScalar(s,y,TJ);c=d.normalize(d.subtract(c,C,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||A)&&(e._directionWC=N.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||A)&&(e._upWC=N.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||A)&&(e._rightWC=N.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||A)&&FIe(e)}function QIe(e,t){let n;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)?n=Math.atan2(t.y,t.x)-D.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-D.PI_OVER_TWO,D.TWO_PI-D.zeroToTwoPi(n)}function kIe(e){return D.PI_OVER_TWO-D.acosClamped(e.z)}function UIe(e,t,n){let i=0;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=D.zeroToTwoPi(i+D.TWO_PI)),i}var EH=new N,IH=new N;Object.defineProperties(ln.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return tl(this),this._invTransform}},viewMatrix:{get:function(){return tl(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return tl(this),this._invViewMatrix}},positionCartographic:{get:function(){return tl(this),this._positionCartographic}},positionWC:{get:function(){return tl(this),this._positionWC}},directionWC:{get:function(){return tl(this),this._directionWC}},upWC:{get:function(){return tl(this),this._upWC}},rightWC:{get:function(){return tl(this),this._rightWC}},heading:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=QIe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=kIe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=UIe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});ln.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ie.MORPHING,t=this._mode===ie.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ie.SCENE2D&&HIe(this,this.position)};var Zpt=new d,$pt=new d,egt=new d;ln.prototype._setTransform=function(e){let t=d.clone(this.positionWC,Zpt),n=d.clone(this.upWC,$pt),i=d.clone(this.directionWC,egt);N.clone(e,this._transform),this._transformChanged=!0,tl(this);let o=this._actualInvTransform;N.multiplyByPoint(o,t,this.position),N.multiplyByPointAsVector(o,i,this.direction),N.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),tl(this)};var tgt=new U,ngt=new In,igt=new d,ogt=new d;function GIe(e){if(!N.equals(N.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=tgt;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,ngt);o=n.pickWorldCoordinates(a,t,!0,igt)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,ogt));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}ln.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof An&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=GIe(this)))};var xH=new d,vJ=new N,rgt=new N,PJ=new Le,RJ=new J,zIe=new Ae;function sgt(e,t,n){let i=N.clone(e.transform,vJ),o=kt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,rgt);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function agt(e,t,n,i){let o=N.clone(e.transform,vJ);if(e._setTransform(N.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,zIe);t=a.project(c,xH)}d.clone(t,e.position)}n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function cgt(e,t,n,i){let o=N.clone(e.transform,vJ);if(e._setTransform(N.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,zIe);t=c.project(u,xH)}U.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===wu.ROTATE){n.heading=n.heading-D.PI_OVER_TWO,n.pitch=-D.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var lgt=new d,ugt=new d,fgt=new d;function VIe(e,t,n,i){let o=d.clone(n.direction,lgt),r=d.clone(n.up,ugt);if(e._scene.mode===ie.SCENE3D){let a=e._projection.ellipsoid,c=kt.eastNorthUpToFixedFrame(t,a,EH),u=N.inverseTransformation(c,IH);N.multiplyByPointAsVector(u,o,o),N.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,fgt);return i.heading=QIe(o,r),i.pitch=kIe(o),i.roll=UIe(o,r,s),i}var DJ={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},yw=new rc;ln.prototype.setView=function(e){e=e??V.EMPTY_OBJECT;let t=e.orientation??V.EMPTY_OBJECT,n=this._mode;if(n===ie.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??d.clone(this.positionWC,xH);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,xH),i=!1),l(t.direction)&&(t=VIe(this,o,t,DJ.orientation)),yw.heading=t.heading??0,yw.pitch=t.pitch??-D.PI_OVER_TWO,yw.roll=t.roll??0,n===ie.SCENE3D?sgt(this,o,yw):n===ie.SCENE2D?cgt(this,o,yw,i):agt(this,o,yw,i)};var dgt=new d;ln.prototype.flyHome=function(e){let t=this._mode;if(t===ie.MORPHING&&this._scene.completeMorph(),t===ie.SCENE2D)this.flyTo({destination:ln.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:N.IDENTITY});else if(t===ie.SCENE3D){let n=this.getRectangleCameraCoordinates(ln.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*ln.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:N.IDENTITY})}else if(t===ie.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,dgt).z),roll:0},endTransform:N.IDENTITY,convert:!1})}};ln.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new se),tl(this),N.multiplyByVector(this._actualInvTransform,e,t)};ln.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPoint(this._actualInvTransform,e,t)};ln.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPointAsVector(this._actualInvTransform,e,t)};ln.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new se),tl(this),N.multiplyByVector(this._actualTransform,e,t)};ln.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPoint(this._actualTransform,e,t)};ln.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPointAsVector(this._actualTransform,e,t)};function HIe(e,t){let n=e._scene.mapMode2D===wu.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var vIe=new d;ln.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,vIe),d.add(n,vIe,n),this._mode===ie.SCENE2D&&HIe(this,n),this._adjustOrthographicFrustum(!0)};ln.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?bH(this,e):this.move(this.direction,e)};ln.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?bH(this,-e):this.move(this.direction,-e)};ln.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};ln.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};ln.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};ln.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};ln.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,-e)};ln.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,e)};ln.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,-e)};ln.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,e)};var hgt=new Le,mgt=new J;ln.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Le.fromAxisAngle(e,-n,hgt),o=J.fromQuaternion(i,mgt),r=this.direction,s=this.up,a=this.right;J.multiplyByVector(o,r,r),J.multiplyByVector(o,s,s),J.multiplyByVector(o,a,a)};ln.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};ln.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var Agt=new Le,pgt=new J;ln.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Le.fromAxisAngle(e,-n,Agt),o=J.fromQuaternion(i,pgt);J.multiplyByVector(o,this.position,this.position),J.multiplyByVector(o,this.direction,this.direction),J.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};ln.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,WIe(this,e)};ln.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,WIe(this,-e)};var ggt=new d,_gt=new d,ygt=new d,PIe=new d;function WIe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,D.EPSILON2)){let i=d.normalize(n,ggt),o=d.equalsEpsilon(i,e.constrainedAxis,D.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,PIe),D.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,_gt),a=d.dot(i,s),c=D.acosClamped(a);t>0&&t>c&&(t=c-D.EPSILON4),a=d.dot(i,d.negate(s,PIe)),c=D.acosClamped(a),t<0&&-t>c&&(t=-c+D.EPSILON4);let u=d.cross(s,i,ygt);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}ln.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,jIe(this,-e)};ln.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,jIe(this,e)};function jIe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function bH(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===wu.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===wu.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function YIe(e,t){e.move(e.direction,t)}ln.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?bH(this,e):YIe(this,e)};ln.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?bH(this,-e):YIe(this,-e)};ln.prototype.getMagnitude=function(){if(this._mode===ie.SCENE3D)return d.magnitude(this.position);if(this._mode===ie.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ie.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var Cgt=new N;ln.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??te.default,o=kt.eastNorthUpToFixedFrame(e,i,Cgt);this.lookAtTransform(o,t)};var Egt=new d,Igt=new Le,xgt=new Le,bgt=new J;function qIe(e,t,n){t=D.clamp(t,-D.PI_OVER_TWO,D.PI_OVER_TWO),e=D.zeroToTwoPi(e)-D.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,Igt),o=Le.fromAxisAngle(d.UNIT_Z,-e,xgt),r=Le.multiply(o,i,o),s=J.fromQuaternion(r,bgt),a=d.clone(d.UNIT_X,Egt);return J.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}ln.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=qIe(t.heading,t.pitch,t.range):n=t,this._mode===ie.SCENE2D){U.clone(U.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<D.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(N.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<D.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var gQ=new Ae,Tgt=new Ae,Sgt=new d,wgt=new d,Bgt=new d,Dgt=new d,vgt=new d,Pgt=new d,Rgt=new d,SJ=new d,Mgt={direction:new d,right:new d,up:new d},RIe;function el(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function KIe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:Mgt,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=D.TWO_PI);let f=(c+u)*.5,h;if(a<-D.PI_OVER_TWO+D.RADIANS_PER_DEGREE&&s>D.PI_OVER_TWO-D.RADIANS_PER_DEGREE)h=0;else{let M=gQ;M.longitude=f,M.latitude=s,M.height=0;let L=Tgt;L.longitude=f,L.latitude=a,L.height=0;let p=RIe;(!l(p)||p.ellipsoid!==o)&&(RIe=p=new up(void 0,void 0,o)),p.setEndPoints(M,L),h=p.interpolateUsingFraction(.5,gQ).latitude}let A=gQ;A.longitude=f,A.latitude=h,A.height=0;let g=o.cartographicToCartesian(A,Rgt),m=gQ;m.longitude=u,m.latitude=s;let _=o.cartographicToCartesian(m,Sgt);m.longitude=c;let y=o.cartographicToCartesian(m,Bgt);m.longitude=f;let C=o.cartographicToCartesian(m,vgt);m.latitude=a;let E=o.cartographicToCartesian(m,Pgt);m.longitude=u;let I=o.cartographicToCartesian(m,Dgt);m.longitude=c;let b=o.cartographicToCartesian(m,wgt);d.subtract(y,g,y),d.subtract(I,g,I),d.subtract(_,g,_),d.subtract(b,g,b),d.subtract(C,g,C),d.subtract(E,g,E);let S=o.geodeticSurfaceNormal(g,r.direction);d.negate(S,S);let B=d.cross(S,d.UNIT_Z,r.right);d.normalize(B,B);let v=d.cross(B,S,r.up),P;if(e.frustum instanceof An){let M=Math.max(d.distance(_,y),d.distance(I,b)),L=Math.max(d.distance(_,I),d.distance(y,b)),p,x,T=e.frustum._offCenterFrustum,w=T.right/T.top,R=L*w;M>R?(p=M,x=p/w):(x=L,p=R),P=Math.max(p,x)}else{let M=Math.tan(e.frustum.fovy*.5),L=e.frustum.aspectRatio*M;if(P=Math.max(el(S,v,y,M),el(S,v,I,M),el(S,v,_,M),el(S,v,b,M),el(S,v,C,M),el(S,v,E,M),el(S,B,y,L),el(S,B,I,L),el(S,B,_,L),el(S,B,b,L),el(S,B,C,L),el(S,B,E,L)),a<0&&s>0){let p=gQ;p.longitude=c,p.latitude=0,p.height=0;let x=o.cartographicToCartesian(p,SJ);d.subtract(x,g,x),P=Math.max(P,el(S,v,x,M),el(S,B,x,L)),p.longitude=u,x=o.cartographicToCartesian(p,SJ),d.subtract(x,g,x),P=Math.max(P,el(S,v,x,M),el(S,B,x,L))}}return d.add(g,d.multiplyByScalar(S,-P,SJ),n)}var Ngt=new Ae,Lgt=new d,Ogt=new d;function Fgt(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=Ngt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,Lgt);N.multiplyByPoint(o,a,a),N.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,Ogt);if(N.multiplyByPoint(o,c,c),N.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var Qgt=new Ae,kgt=new d,Ugt=new d;function Ggt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===wu.INFINITE_SCROLL?o+=D.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=Qgt;r.longitude=o,r.latitude=t.north;let s=i.project(r,kgt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,Ugt),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,A=e.frustum.right/e.frustum.top,g=u*A;return c>g?(f=c,h=f/A):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}ln.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ie.SCENE3D)return KIe(this,e,t);if(n===ie.COLUMBUS_VIEW)return Fgt(this,e,t);if(n===ie.SCENE2D)return Ggt(this,e,t)};var zgt=new In;function Vgt(e,t,n,i){n=n??te.default;let o=e.getPickRay(t,zgt),r=hi.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return In.getPoint(o,s,i)}var Hgt=new In;function Wgt(e,t,n,i){let r=e.getPickRay(t,Hgt).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var jgt=new In;function Ygt(e,t,n,i){let o=e.getPickRay(t,jgt),r=-o.origin.x/o.direction.x;In.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}ln.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=t??te.default,this._mode===ie.SCENE3D)n=Vgt(this,e,t,n);else if(this._mode===ie.SCENE2D)n=Wgt(this,e,this._projection,n);else if(this._mode===ie.COLUMBUS_VIEW)n=Ygt(this,e,this._projection,n);else return;return n}};var qgt=new d,Kgt=new d,Xgt=new d;function Jgt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let A=d.multiplyByScalar(e.directionWC,c,qgt);d.add(h,A,A);let g=d.multiplyByScalar(e.rightWC,u*c*a,Kgt),m=d.multiplyByScalar(e.upWC,f*c*s,Xgt),_=d.add(A,g,n.direction);return d.add(_,m,_),d.subtract(_,h,_),d.normalize(_,_),n}var yH=new d;function Zgt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.positionWC,f),d.multiplyByScalar(e.rightWC,c,yH),d.add(yH,f,f),d.multiplyByScalar(e.upWC,u,yH),d.add(yH,f,f),d.clone(e.directionWC,n.direction),n}ln.prototype.getPickRay=function(e,t){l(t)||(t=new In);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?Jgt(this,e,t):Zgt(this,e,t)};var $gt=new d,e_t=new d;ln.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,$gt),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),e_t);return Math.max(0,d.magnitude(n)-e.radius)};var t_t=new U;ln.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,t_t);return Math.max(o.x,o.y)};function n_t(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:ms.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var i_t=new d,MIe=new d,o_t=new d,r_t=new d;function s_t(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,i_t),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,MIe),MIe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,o_t);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,r_t)),f=c*u,h=a*u,A=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-A,A),_=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-_||n.y>_){let y=s.y<-m||s.y>m,C=s.z<-_||s.z>_;if(y||C)return n_t(e,n,s,m,_,t)}}ln.prototype.createCorrectPositionTween=function(e){if(this._mode===ie.COLUMBUS_VIEW)return s_t(this,e)};var a_t=new d,wa={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};ln.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};ln.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=wa.destination,e.orientation.heading=wa.heading,e.orientation.pitch=wa.pitch,e.orientation.roll=wa.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};ln.prototype.flyTo=function(e){e=e??V.EMPTY_OBJECT;let t=e.destination;if(this._mode===ie.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,a_t));let o=e.orientation??V.EMPTY_OBJECT;if(l(o.direction)&&(o=VIe(this,t,o,DJ.orientation)),l(e.duration)&&e.duration<=0){let f=DJ;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;wa.destination=t,wa.heading=o.heading,wa.pitch=o.pitch,wa.roll=o.roll,wa.duration=e.duration,wa.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},wa.cancel=e.cancel,wa.endTransform=e.endTransform,wa.convert=i?!1:e.convert,wa.maximumHeight=e.maximumHeight,wa.pitchAdjustHeight=e.pitchAdjustHeight,wa.flyOverLongitude=e.flyOverLongitude,wa.flyOverLongitudeWeight=e.flyOverLongitudeWeight,wa.easingFunction=e.easingFunction;let a=this._scene,c=pQ.createTween(a,wa);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ie.SCENE2D&&(l(u)||(u=ln.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function c_t(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function l_t(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var u_t=100;function XIe(e,t,n){n=Md.clone(l(n)?n:ln.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=u_t:e.frustum instanceof An||e._mode===ie.SCENE2D?n.range=l_t(e,s):n.range=c_t(e,s),n.range=D.clamp(n.range,i,o)}return n}ln.prototype.viewBoundingSphere=function(e,t){t=XIe(this,e,t),this.lookAt(e.center,t)};var f_t=new N,d_t=new d,h_t=new d,m_t=new d,A_t=new d,p_t=new se,g_t=new Le,__t=new J;ln.prototype.flyToBoundingSphere=function(e,t){t=t??V.EMPTY_OBJECT;let n=this._mode===ie.SCENE2D||this._mode===ie.COLUMBUS_VIEW;this._setTransform(N.IDENTITY);let i=XIe(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,d_t):o=qIe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??te.default,a=kt.eastNorthUpToFixedFrame(e.center,s,f_t);N.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,h_t),d.normalize(c,c),u=N.multiplyByPointAsVector(a,d.UNIT_Z,m_t),1-Math.abs(d.dot(c,u))<D.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,g_t),A=J.fromQuaternion(h,__t);d.fromCartesian4(N.getColumn(a,1,p_t),u),J.multiplyByVector(A,u,u)}let f=d.cross(c,u,A_t);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var NIe=new d,LIe=new d,wJ=new d,OIe=new d,_Q=[new d,new d,new d,new d];function y_t(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,NIe),r=d.magnitude(o),s=d.normalize(o,LIe),a,c;d.equalsEpsilon(s,d.UNIT_Z,D.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,wJ),wJ),c=d.normalize(d.cross(s,a,OIe),OIe));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,NIe),h=u/r,A=d.multiplyByScalar(a,h,LIe),g=d.multiplyByScalar(c,h,wJ),m=d.add(f,g,_Q[0]);d.subtract(m,A,m),d.multiplyComponents(n,m,m);let _=d.subtract(f,g,_Q[1]);d.subtract(_,A,_),d.multiplyComponents(n,_,_);let y=d.subtract(f,g,_Q[2]);d.add(y,A,y),d.multiplyComponents(n,y,y);let C=d.add(f,g,_Q[3]);return d.add(C,A,C),d.multiplyComponents(n,C,C),_Q}var BJ=new U,C_t=new d,dC=[new Ae,new Ae,new Ae,new Ae];function CH(e,t,n,i,o,r){BJ.x=e,BJ.y=t;let s=i.pickEllipsoid(BJ,o,C_t);return l(s)?(dC[n]=o.cartesianToCartographic(s,dC[n]),1):(dC[n]=o.cartesianToCartographic(r[n],dC[n]),0)}ln.prototype.computeViewRectangle=function(e,t){e=e??te.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new le(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===tn.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=y_t(this,e);if(c+=CH(0,0,0,this,e,u),c+=CH(0,a,1,this,e,u),c+=CH(s,a,2,this,e,u),c+=CH(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(dC,t);let f=0,h=dC[3].longitude;for(let A=0;A<4;++A){let g=dC[A].longitude,m=Math.abs(g-h);m>D.PI?f+=D.TWO_PI-m:f+=m,h=g}return D.equalsEpsilon(Math.abs(f),D.TWO_PI,D.EPSILON9)&&(t.west=-D.PI,t.east=D.PI,dC[0].latitude>=0?t.north=D.PI_OVER_TWO:t.south=-D.PI_OVER_TWO),t};ln.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof ki)return;let e=this._scene;this.frustum=new ki,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60)};ln.prototype.switchToOrthographicFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof An)return;let e=GIe(this),t=this._scene;this.frustum=new An,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};ln.clone=function(e,t){return l(t)||(t=new ln(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),N.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var Co=ln;function E_t(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var Vd=E_t;var txe=xr(Ou(),1),JIe=576,I_t=100,yQ="#ffffff",TH="#48b";function nxe(e,t){this.credit=e,this.count=t??1}function x_t(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Bt.equals(o,t))return!0}return!1}function b_t(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Bt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var ixe="cesium-credit-delimiter";function ZIe(e){let t=document.createElement("span");return t.textContent=e,t.className=ixe,t}function $Ie(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function exe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(ZIe(n));else{let f=o[u];f.className!==ixe&&e.replaceChild(ZIe(n),f)}}let c=a.element;if(o.length<=r)e.appendChild($Ie(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild($Ie(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function T_t(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<JIe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=JIe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function S_t(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${yQ}; + position: relative; + min-height: ${I_t}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${yQ}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${TH}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${yQ}; +} +.cesium-credit-lightbox-close:hover { + color: ${TH}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${yQ}; +} +.cesium-credit-expand-link:hover { + color: ${TH}; +} + +.cesium-credit-text { + color: ${yQ}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${TH} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function Nr(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let A=document.createElement("a");A.className="cesium-credit-expand-link",A.onclick=this.showLightbox.bind(this),A.textContent="Data attribution",e.appendChild(A),S_t(e);let g=Bt.clone(Nr.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=A,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new vt,lightboxCredits:new vt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function oxe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new nxe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}Nr.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Bt.clone(rxe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,oxe(this,t,e)};Nr.prototype.addStaticCredit=function(e){let t=this._staticCredits;x_t(t,e)||t.push(e)};Nr.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};Nr.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};Nr.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};Nr.prototype.update=function(){this._expanded&&T_t(this)};Nr.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Bt.equals(Nr.cesiumCredit,this._cesiumCredit)||oxe(this,s,r,Number.MAX_VALUE)}Bt.equals(Nr.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Bt.clone(Nr.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};Nr.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;exe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",exe(this._creditList,t,void 0,"li"),b_t(this)};Nr.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};Nr.prototype.isDestroyed=function(){return!1};Nr._cesiumCredit=void 0;Nr._cesiumCreditInitialized=!1;var SH;function rxe(){if(!l(SH)){let e=fn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new txe.default(e).path()),SH=new Bt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return Nr._cesiumCreditInitialized||(Nr._cesiumCredit=SH,Nr._cesiumCreditInitialized=!0),SH}Object.defineProperties(Nr,{cesiumCredit:{get:function(){return rxe(),Nr._cesiumCredit},set:function(e){Nr._cesiumCredit=e,Nr._cesiumCreditInitialized=!0}}});Nr.CreditDisplayElement=nxe;var CQ=Nr;var wH=0,w_t=1;function LI(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??Pe.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof ki?(s=wH,a=ki.packedLength):t instanceof An&&(s=w_t,a=An.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Pe.packedLength}LI.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===wH?(ki.pack(o,t,n),n+=ki.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var B_t=new ki,D_t=new An,v_t=new Le,P_t=new d,R_t=new Pe;LI.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===wH?(o=ki.unpack(e,t,B_t),t+=ki.packedLength):(o=An.unpack(e,t,D_t),t+=An.packedLength);let r=d.unpack(e,t,P_t);t+=d.packedLength;let s=Le.unpack(e,t,v_t);t+=Le.packedLength;let a=Pe.unpack(e,t,R_t);t+=Pe.packedLength;let c=e[t]===1;if(!l(n))return new LI({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Pe.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function Cw(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var M_t=new J,N_t=new N,MJ=new N,sxe=new d,axe=new d,cxe=new d,L_t=new d,O_t=new d,F_t=new d,hC=new Array(3),EQ=new Array(4);EQ[0]=new se(-1,-1,1,1);EQ[1]=new se(1,-1,1,1);EQ[2]=new se(1,1,1,1);EQ[3]=new se(-1,1,1,1);var lxe=new Array(4);for(let e=0;e<4;++e)lxe[e]=new se;LI._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=J.fromQuaternion(t,M_t),u=r??sxe,f=s??axe,h=a??cxe;u=J.getColumn(c,0,u),f=J.getColumn(c,1,f),h=J.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let A=N.computeView(e,h,f,u,N_t),g,m,_=i.projectionMatrix;if(n===wH){let y=N.multiply(_,A,MJ);m=N.inverse(y,MJ)}else g=N.inverseTransformation(A,MJ);l(m)?(hC[0]=i.near,hC[1]=i.far):(hC[0]=0,hC[1]=i.near,hC[2]=i.far);for(let y=0;y<2;++y)for(let C=0;C<4;++C){let E=se.clone(EQ[C],lxe[C]);if(l(m)){E=N.multiplyByVector(m,E,E);let I=1/E.w;d.multiplyByScalar(E,I,E),d.subtract(E,e,E),d.normalize(E,E);let b=d.dot(h,E);d.multiplyByScalar(E,hC[y]/b,E),d.add(E,e,E)}else{let I=i.offCenterFrustum;l(I)&&(i=I);let b=hC[y],S=hC[y+1];E.x=(E.x*(i.right-i.left)+i.left+i.right)*.5,E.y=(E.y*(i.top-i.bottom)+i.bottom+i.top)*.5,E.z=(E.z*(b-S)-b-S)*.5,E.w=1,N.multiplyByVector(g,E,E)}o[12*y+C*3]=E.x,o[12*y+C*3+1]=E.y,o[12*y+C*3+2]=E.z}};LI.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);LI._computeNearFarPlanes(i,o,t,n,c);let u=24;c[u]=c[12],c[u+1]=c[13],c[u+2]=c[14],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[9],c[u+7]=c[10],c[u+8]=c[11],c[u+9]=c[21],c[u+10]=c[22],c[u+11]=c[23],u+=12,c[u]=c[15],c[u+1]=c[16],c[u+2]=c[17],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[12],c[u+10]=c[13],c[u+11]=c[14],u+=12,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[15],c[u+4]=c[16],c[u+5]=c[17],c[u+6]=c[18],c[u+7]=c[19],c[u+8]=c[20],c[u+9]=c[6],c[u+10]=c[7],c[u+11]=c[8],u+=12,c[u]=c[6],c[u+1]=c[7],c[u+2]=c[8],c[u+3]=c[18],c[u+4]=c[19],c[u+5]=c[20],c[u+6]=c[21],c[u+7]=c[22],c[u+8]=c[23],c[u+9]=c[9],c[u+10]=c[10],c[u+11]=c[11],r||(c=c.subarray(12));let f=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let A=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,m=l(s.bitangent)?new Float32Array(12*a):void 0,_=l(s.st)?new Float32Array(8*a):void 0,y=sxe,C=axe,E=cxe,I=d.negate(y,L_t),b=d.negate(C,O_t),S=d.negate(E,F_t);u=0,r&&(Cw(u,A,g,m,_,S,y,C),u+=12),Cw(u,A,g,m,_,E,I,C),u+=12,Cw(u,A,g,m,_,I,S,C),u+=12,Cw(u,A,g,m,_,b,S,I),u+=12,Cw(u,A,g,m,_,y,E,C),u+=12,Cw(u,A,g,m,_,C,E,I),l(A)&&(f.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),l(g)&&(f.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),l(_)&&(f.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:_}))}let h=new Uint16Array(6*a);for(let A=0;A<a;++A){let g=A*6,m=A*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ht({attributes:f,indices:h,primitiveType:Me.TRIANGLES,boundingSphere:le.fromVertices(c)})};var OI=LI;var NJ=0,Q_t=1;function IQ(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof ki?(r=NJ,s=ki.packedLength):t instanceof An&&(r=Q_t,s=An.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}IQ.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===NJ?(ki.pack(o,t,n),n+=ki.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var k_t=new ki,U_t=new An,G_t=new Le,z_t=new d;IQ.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===NJ?(o=ki.unpack(e,t,k_t),t+=ki.packedLength):(o=An.unpack(e,t,U_t),t+=An.packedLength);let r=d.unpack(e,t,z_t);t+=d.packedLength;let s=Le.unpack(e,t,G_t);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new IQ({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};IQ.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);OI._computeNearFarPlanes(i,o,t,n,s);let a=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),A=r?0:1;for(;A<2;++A)c=r?A*8:0,u=A*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(A=0;A<2;++A)c=(f+A)*8,u=A*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ht({attributes:a,indices:h,primitiveType:Me.LINES,boundingSphere:le.fromVertices(s)})};var xQ=IQ;function BH(e){e=e??V.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??G.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var V_t=new d,H_t=new J,W_t=new Le,j_t=new ki,Y_t=new Vl,q_t=new An,K_t=new es,X_t=new G,J_t=[1,1e5];BH.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof ki?a=j_t:s instanceof Vl?a=Y_t:s instanceof An?a=q_t:a=K_t,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=J_t,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,A=r.upWC,g=r.rightWC;g=d.negate(g,V_t);let m=H_t;J.setColumn(m,0,g,m),J.setColumn(m,1,A,m),J.setColumn(m,2,h,m);let _=Le.fromRotationMatrix(m,W_t);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new Qn({geometryInstances:new Pt({geometry:new OI({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:$t.fromColor(G.fromAlpha(this._color,.1,X_t))},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Qn({geometryInstances:new Pt({geometry:new xQ({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:$t.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};BH.prototype.isDestroyed=function(){return!1};BH.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var RA=BH;function TQ(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var bQ=Wt.supportsTypedArrays()?new Float32Array(12):[],uxe=new d,fxe=new d,LJ=new d,dxe=new d,DH=new d;function Z_t(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof An)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,A=d.multiplyComponents(e.oneOverRadii,h,uxe),g=d.normalize(A,fxe),m=d.normalize(d.cross(d.UNIT_Z,A,LJ),LJ),_=d.normalize(d.cross(g,m,dxe),dxe),y=d.magnitude(A),C=Math.sqrt(y*y-1);o=d.multiplyByScalar(g,1/y,uxe);let E=C/y;r=d.multiplyByScalar(m,E,fxe),s=d.multiplyByScalar(_,E,LJ)}let a=d.add(o,s,DH);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,bQ,0);let c=d.subtract(o,s,DH);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,bQ,3);let u=d.add(o,s,DH);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,bQ,6);let f=d.subtract(o,s,DH);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,bQ,9),bQ}TQ.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ie.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new te(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new nt({renderState:this._rs,boundingVolume:new le(d.ZERO,i.maximumRadius),pass:Be.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new He({sources:[L2]}),a=new He({sources:[N2]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=an.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=Z_t(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Me.TRIANGLES});this._va=li.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Qe.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};TQ.prototype.execute=function(e,t){this._mode===ie.SCENE3D&&this._command.execute(e,t)};TQ.prototype.isDestroyed=function(){return!1};TQ.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var SQ=TQ;function Iw(){}var $_t=/\bgl_FragDepth\b/,eyt=/\bdiscard\b/;function tyt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if($_t.test(r[a])||eyt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new He({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new He({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function nyt(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ue.fromCache(o);return n[t.id]=r,r}Iw.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=nt.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=tyt(n,t.shaderProgram),i.depthOnlyCommand.renderState=nyt(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var iyt=/\s+czm_writeLogDepth\(/,oyt=/\s+czm_vertexLogDepth\(/;function ryt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(oyt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=He.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)iyt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=He.replaceMain(c[f],"czm_log_depth_main");u=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}Iw.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=ryt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function syt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=He.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let A=new He({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:A,attributeLocations:o})}function hxe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ue.fromCache(o);return n[t.id]=r,r}Iw.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=nt.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=syt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=hxe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function Ew(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function mxe(e){return e.isArray?e.arrayLength:pt.getComponentCount(e.type)}function ayt(e){let t=mxe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function Axe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function pxe(e,t){let n=Gt.getMaximum(t);return`(${e}) / float(${n})`}function cyt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=Axe(n,i,o)}return e.normalized||(n=pxe(n,e.componentType)),n}function lyt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=Axe(o,r,s)}return e.normalized||(o=pxe(o,e.componentType)),o}function uyt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=ayt(u),h=["0.0","0.0","0.0","0.0"],A=mxe(u);if(A===1)h[0]=cyt(u,c);else{let y=["x","y","z","w"];for(let C=0;C<A;C++)h[C]=lyt(u,c,y[C])}let g=t.fragmentShaderSource.defines.slice();g.push(ef.METADATA_PICKING_ENABLED),Ew(g,ef.METADATA_PICKING_VALUE_TYPE,f),Ew(g,ef.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new He({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}Iw.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=nt.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=uyt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=hxe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function fyt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}Iw.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=fyt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var MA=Iw;function vH(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=D.toRadians(o),t._beta=D.toRadians(i.beta),t._gamma=D.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var dyt=new Le,gxe=new Le,hyt=new J;function myt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,gxe),c=Le.fromAxisAngle(r,i,dyt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,gxe);Le.multiply(f,u,u);let h=J.fromQuaternion(u,hyt);J.multiplyByVector(h,r,r),J.multiplyByVector(h,s,s),J.multiplyByVector(h,o,o)}vH.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;myt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};vH.prototype.isDestroyed=function(){return!1};vH.prototype.destroy=function(){return this._removeListener(),ue(this)};var wQ=vH;function OJ(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(OJ.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var Ayt=new d;OJ.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ie.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,D.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,Ayt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var BQ=OJ;function pyt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ie.SCENE3D,this.morphTime=ie.getMorphTime(ie.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var DQ=pyt;var Za={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},FI=Za.DERIVED_COMMANDS_MAXIMUM_LENGTH,wxe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function QI(){this._frontFaceAlphaByDistance=new jt(0,1,0,1),this._backFaceAlphaByDistance=new jt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(FI),this._derivedBlendCommandTypes=new Array(FI),this._derivedPickCommandTypes=new Array(FI),this._derivedCommandTypesToUpdate=new Array(FI),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(QI.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});QI.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=_xe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=_xe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=yxe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=yxe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=Cyt(this,e,t),this._sunVisibleThroughGlobe=gyt(this,e),this._environmentVisible=_yt(this,e),this._useDepthPlane=yyt(this,e),this._numberOfTextureUniforms=Eyt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),Iyt(this,e)};function _xe(e,t,n,i){return e?l(n)?(jt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function yxe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function gyt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function _yt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function yyt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function Cyt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ie.SCENE2D&&t.context.depthTexture}function Eyt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function Iyt(e,t){e._derivedCommandsLength=FJ(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=FJ(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=FJ(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<FI;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=Fyt())}function FJ(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Za.PICK_FRONT_FACE:u?Za.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Za.TRANSLUCENT_FRONT_FACE,h=i?Za.PICK_BACK_FACE:u?Za.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Za.TRANSLUCENT_BACK_FACE;return t.mode===ie.SCENE2D?(o[r++]=Za.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Za.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Za.DEPTH_ONLY_BACK_FACE),o[r++]=Za.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Za.DEPTH_ONLY_FRONT_FACE),o[r++]=Za.OPAQUE_BACK_FACE,o[r++]=f),r)}function Hd(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Cxe(e,t){return e.indexOf(t)>-1}function xyt(e,t){Hd(e.defines,"TRANSLUCENT"),Hd(t.defines,"TRANSLUCENT")}function byt(e,t){Hd(e.defines,"GROUND_ATMOSPHERE"),Hd(t.defines,"GROUND_ATMOSPHERE"),Hd(e.defines,"FOG"),Hd(t.defines,"FOG"),Hd(e.defines,"TRANSLUCENT"),Hd(t.defines,"TRANSLUCENT")}function QJ(e,t){if(Cxe(t.defines,"TILE_LIMIT_RECTANGLE")||Cxe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function kJ(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=He.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function Bxe(e,t){kJ(e,t),Hd(e.defines,"GROUND_ATMOSPHERE"),Hd(t.defines,"GROUND_ATMOSPHERE"),Hd(e.defines,"FOG"),Hd(t.defines,"FOG")}function Tyt(e,t){kJ(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Syt(e,t){Bxe(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Exe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function wyt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Byt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0}function Dyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0}function vyt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Pyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Ryt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Ixe(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function xxe(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function Myt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function Nyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function Lyt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ue.getState(e);i(s),r=Ue.fromCache(s),o[e.id]=r}return r}function xw(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function Oyt(e,t,n,i,o){return l(o)?!i&&l(n)?n:Tt(t,o(e),!1):t}function _m(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function Fyt(){return[new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:xyt,getRenderStateFunction:Byt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:byt,getRenderStateFunction:Dyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:vyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:Pyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:Ryt,getUniformMapFunction:void 0}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:kJ,getRenderStateFunction:Ixe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Bxe,getRenderStateFunction:xxe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Tyt,getRenderStateFunction:Ixe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Syt,getRenderStateFunction:xxe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Exe,getRenderStateFunction:Myt,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Exe,getRenderStateFunction:Nyt,getUniformMapFunction:xw})]}var bxe=new Array(FI),Txe=new Array(FI);QI.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)Txe[o]=this._derivedCommandPacks[n[o]],bxe[o]=wxe[n[o]];Qyt(this,e,i,n,bxe,Txe,t)}};function Qyt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,A=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,_=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),_&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let y=0;y<n;++y){let C=r[y],E=i[y],I=o[y],b=a[I],S,B,v;l(b)?(S=b.uniformMap,B=b.shaderProgram,v=b.renderState):(S=void 0,B=void 0,v=void 0),b=nt.shallowClone(t,b),a[I]=b;let P=b.derivedCommands.uniformMapDirtyFrame??0,M=b.derivedCommands.shaderProgramDirtyFrame??0,L=b.derivedCommands.renderStateDirtyFrame??0,p=g||P<f,x=m||M<h,T=_||L<A;p&&(b.derivedCommands.uniformMapDirtyFrame=u),x&&(b.derivedCommands.shaderProgramDirtyFrame=u),T&&(b.derivedCommands.renderStateDirtyFrame=u),b.derivedCommands.type=E,b.pass=C.pass,b.pickOnly=C.pickOnly,b.uniformMap=Oyt(e,t.uniformMap,S,p,C.getUniformMapFunction),b.shaderProgram=wyt(s.context,t.shaderProgram,B,x,C.getShaderProgramFunction,I),b.renderState=Lyt(t.renderState,v,T,C.getRenderStateFunction,C.renderStateCache)}}}QI.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=wxe[o[a]];n.commandList.push(s[c])}};function Dxe(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function Sxe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var kyt=[Za.OPAQUE_FRONT_FACE,Za.OPAQUE_BACK_FACE],Uyt=[Za.DEPTH_ONLY_FRONT_FACE,Za.DEPTH_ONLY_BACK_FACE,Za.DEPTH_ONLY_FRONT_AND_BACK_FACE];QI.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Be.GLOBE],a=e.indices[Be.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),Dxe(s,a,t,i,o,kyt))};QI.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Be.GLOBE],c=e.indices[Be.GLOBE],u=e.commands[Be.TERRAIN_CLASSIFICATION],f=e.indices[Be.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,A=this._backFaceTranslucent;if((!h||!A)&&Sxe(u,f,t,i,o),!h&&!A)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,Dxe(a,c,t,i,o,Uyt),r.depthTexture){let _=n.packDepth(r,o);s.globeDepthTexture=_}Sxe(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var vQ=QI;var Bu=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function NA(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new Di({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new Di({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(NA.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});NA.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var Gyt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},zyt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},Vyt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK,blending:pn.ALPHA_BLEND},Hyt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,Wyt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;NA.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Mt({context:e,width:s,height:a,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Ju({context:e,width:s,height:a,format:Bl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ue.fromCache(Gyt),this._rsClassified=Ue.fromCache(zyt),this._rsDefault=Ue.fromCache(Vyt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?Wyt:Hyt,f=new He({defines:["UNCLASSIFIED"],sources:[u]}),h=new He({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(Bu,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};NA.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};NA.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};NA.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};NA.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};NA.prototype.isDestroyed=function(){return!1};NA.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var bw=NA;function PH(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(PH.prototype,{total:{get:function(){return this._total}}});function mC(e){let t=new Array(hc.NUMBER_OF_JOB_TYPES);t[hc.TEXTURE]=new PH(l(e)?e[hc.TEXTURE]:10),t[hc.PROGRAM]=new PH(l(e)?e[hc.PROGRAM]:10),t[hc.BUFFER]=new PH(l(e)?e[hc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}mC.getTimestamp=Li;Object.defineProperties(mC.prototype,{totalBudget:{get:function(){return this._totalBudget}}});mC.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};mC.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};mC.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=mC.getTimestamp();e.execute();let a=mC.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var PQ=mC;function RH(e){e=e??V.EMPTY_OBJECT;let t=kn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Li(),this._lastMsSampleTime=Li(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(RH.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});RH.prototype.update=function(e){let t=Li(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};RH.prototype.destroy=function(){return ue(this)};var qg=RH;var $a={};$a.decodeRawMetadataValue=function(e,t,n){switch(e){case Gt.INT8:return t.getInt8(n);case Gt.UINT8:return t.getUint8(n);case Gt.INT16:return t.getInt16(n,!0);case Gt.UINT16:return t.getUint16(n,!0);case Gt.INT32:return t.getInt32(n,!0);case Gt.UINT32:return t.getUint32(n,!0);case Gt.INT64:return t.getBigInt64(n,!0);case Gt.UINT64:return t.getBigUint64(n,!0);case Gt.FLOAT32:return t.getFloat32(n,!0);case Gt.FLOAT64:return t.getFloat64(n,!0)}throw new ce(`Invalid component type: ${e}`)};$a.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=$a.decodeRawMetadataValue(i,t,n);return e.normalized?Gt.normalize(o,i):o};$a.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=Gt.getSizeInBytes(i),r=e.type,s=pt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let A=n*a+h*o,g=$a.decodeRawMetadataValueComponent(e,t,A);f[h]=g}return f}let c=n*a;return $a.decodeRawMetadataValueComponent(e,t,c)};$a.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=$a.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return $a.decodeRawMetadataValueElement(e,n,0)};$a.convertToObjectType=function(e,t){if(!l(t)||e===pt.SCALAR||e===pt.STRING||e===pt.BOOLEAN||e===pt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case pt.VEC2:return U.unpack(n,0,new U);case pt.VEC3:return d.unpack(n,0,new d);case pt.VEC4:return se.unpack(n,0,new se);case pt.MAT2:return Gi.unpack(n,0,new Gi);case pt.MAT3:return J.unpack(n,0,new J);case pt.MAT4:return N.unpack(n,0,new N)}throw new ce(`Invalid metadata object type: ${e}`)};$a.convertFromObjectType=function(e,t){if(!l(t)||e===pt.SCALAR||e===pt.STRING||e===pt.BOOLEAN||e===pt.ENUM)return t;switch(e){case pt.VEC2:return U.pack(t,Array(2));case pt.VEC3:return d.pack(t,Array(3));case pt.VEC4:return se.pack(t,Array(4));case pt.MAT2:return Gi.pack(t,Array(4));case pt.MAT3:return J.pack(t,Array(9));case pt.MAT4:return N.pack(t,Array(16))}throw new ce(`Invalid metadata object type: ${e}`)};$a.decodeMetadataValues=function(e,t,n){let i=$a.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=$a.convertFromObjectType(e.type,t.offset),s=$a.convertFromObjectType(e.type,t.scale);i=Ym.valueTransformInPlace(i,r,s,Gt.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=$a.convertToObjectType(e.type,c);s[a]=u}return s}return $a.convertToObjectType(e.type,i)};var RQ=Object.freeze($a);function kI(){this._framebuffer=new Di,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(kI.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function jyt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function Yyt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Ue.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}kI.prototype.update=function(e,t){jyt(this,e,t),Yyt(this,e,t)};var qyt=new se,Kyt=new se(1,1/255,1/65025,1/16581375);kI.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=se.unpack(i,0,qyt);return se.divideByScalar(o,255,o),se.dot(o,Kyt)};kI.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};kI.prototype.isDestroyed=function(){return!1};kI.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var MQ=kI;function Xyt(e,t){this.near=e??0,this.far=t??0;let n=Be.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var NQ=Xyt;var AC=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function LA(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new Di,this._tempCopyDepthFramebuffer=new Di,this._updateDepthFramebuffer=new Di({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Ye,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(LA.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function vxe(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Ye.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Ye.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ye.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Ye.equals(r,e._rs.viewport)||a)&&(e._rs=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND}),e._rsUpdate=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new Ci({color:new G(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}LA.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),vxe(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};LA.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};LA.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};LA.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),vxe(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};LA.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};LA.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(G.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};LA.prototype.isDestroyed=function(){return!1};LA.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var LQ=LA;function UI(){this._framebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new Di,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Ye,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(UI.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function Jyt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function Zyt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function $yt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Ye.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Ye.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ye.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Ye.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}UI.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;Zyt(this,n,o,r,e),$yt(this,n,o,r,i),this._useHdr=e};UI.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};UI.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};UI.prototype.isDestroyed=function(){return!1};UI.prototype.destroy=function(){return Jyt(this),ue(this)};var OQ=UI;function Kg(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new Di({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new Di({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new Di({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new Di({createColorAttachments:!1}),this._opaqueClearCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new Ci({color:new G(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._alphaClearCommand=new Ci({color:new G(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Ye,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function Pxe(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function UJ(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function Rxe(e){Pxe(e),UJ(e)}function eCt(e,t,n,i){Pxe(e),e._accumulationTexture=new Mt({context:t,width:n,height:i,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT}),e._revealageTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,width:n,height:i,flipY:!1})}function tCt(e,t){UJ(e);let n=ee.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(UJ(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(Rxe(e),e._translucentMultipassSupport=!1,i=!1)}return i}Kg.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,eCt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!tCt(this,e))return;this._useHDR=i;let f=this,h,A;l(this._compositeCommand)||(h=new He({sources:[M2]}),this._translucentMRTSupport&&h.defines.push("MRT"),A={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new He({defines:["MRT"],sources:[cw]}),A={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})):this._translucentMultipassSupport&&(h=new He({sources:[cw]}),A={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}),A={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Ye.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,Ye.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Ye.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!Ye.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ue.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var nCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionDestinationRgb:Oo.ONE,functionSourceAlpha:Oo.ZERO,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA},iCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionDestinationRgb:Oo.ONE,functionSourceAlpha:Oo.ONE,functionDestinationAlpha:Oo.ONE},oCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ZERO,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Oo.ZERO,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA};function GJ(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ue.getState(i);r.depthMask=!1,r.blending=t,o=Ue.fromCache(r),n[i.id]=o}return o}function rCt(e,t,n){return GJ(t,nCt,e._translucentRenderStateCache,n)}function sCt(e,t,n){return GJ(t,iCt,e._translucentRenderStateCache,n)}function aCt(e,t,n){return GJ(t,oCt,e._alphaRenderStateCache,n)}var cCt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,lCt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,uCt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function zJ(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return He.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${u}`}return a.sources.push(u),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function fCt(e,t){return zJ(e,t,"translucentMRT",cCt)}function dCt(e,t){return zJ(e,t,"translucentMultipass",lCt)}function hCt(e,t){return zJ(e,t,"alphaMultipass",uCt)}Kg.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=fCt(t,e.shaderProgram),n.translucentCommand.renderState=rCt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),n.alphaCommand=nt.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=dCt(t,e.shaderProgram),n.translucentCommand.renderState=sCt(this,t,e.renderState),n.alphaCommand.shaderProgram=hCt(t,e.shaderProgram),n.alphaCommand.renderState=aCt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function mCt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.alphaCommand:_.derivedCommands.oit.alphaCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(_,t,i,g)}i.framebuffer=h}function ACt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=h}Kg.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){ACt(this,e,t,n,i,o);return}mCt(this,e,t,n,i,o)};Kg.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Kg.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,G.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Kg.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Kg.prototype.isDestroyed=function(){return!1};Kg.prototype.destroy=function(){return Rxe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var FQ=Kg;function QQ(){this._framebuffer=new Di({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(QQ.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function pCt(e){e._framebuffer.destroy()}function gCt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new Xc(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Ye},o.viewport=new Ye,e._passState=o}QQ.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&gCt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};QQ.prototype.isDestroyed=function(){return!1};QQ.prototype.destroy=function(){return pCt(this),ue(this)};var kQ=QQ;function Tw(e){let t=new Xc(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Ye},t.viewport=new Ye,this._context=e,this._fb=new Di({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}Tw.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Ye.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var UQ=new G;Tw.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,A=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);UQ.red=G.byteToFloat(o[m]),UQ.green=G.byteToFloat(o[m+1]),UQ.blue=G.byteToFloat(o[m+2]),UQ.alpha=G.byteToFloat(o[m+3]);let _=i.getObjectByPickColor(UQ);if(l(_))return _}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-A,A=m}u+=h,f+=A}};Tw.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};Tw.prototype.isDestroyed=function(){return!1};Tw.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var GQ=Tw;function Xg(){this._numSamples=1,this._colorFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new G(0,0,0,0),this._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,owner:this})}function _Ct(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Xg.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Xg.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Xg.prototype.clear=function(e,t,n){G.clone(n,this._clearCommand.color),G.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Xg.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Xg.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Xg.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Xg.prototype.isDestroyed=function(){return!1};Xg.prototype.destroy=function(){return _Ct(this),ue(this)};var GI=Xg;function zI(){}zI.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};zI.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=He.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=He.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new He({defines:i,sources:o})};zI.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=He.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=He.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC; +`),u+=`uniform vec4 shadowMap_lightPositionEC; +`),i?u+=`void main() +{ +`:u+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?u+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?u+=` out_FragColor = vec4(1.0); +`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,u+=`} +`,r.push(u),new He({defines:o,sources:r})};zI.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};zI.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new He({defines:i,sources:o})};zI.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=He.findNormalVarying(e),s=!i&&l(r)||i&&o,a=He.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,A=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,_=t.softShadows,y=h?t._pointBias:i?t._terrainBias:t._primitiveBias,C=e.defines.slice(0),E=e.sources.slice(0),I=E.length;for(let B=0;B<I;++B)E[B]=He.replaceMain(E[B],"czm_shadow_receive_main");h?C.push("USE_CUBE_MAP_SHADOW"):u&&C.push("USE_SHADOW_DEPTH_TEXTURE"),_&&!h&&C.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?C.push("ENABLE_VERTEX_LIGHTING"):C.push("ENABLE_DAYNIGHT_SHADING")),n&&y.normalShading&&s&&(C.push("USE_NORMAL_SHADING"),y.normalShadingSmooth>0&&C.push("USE_NORMAL_SHADING_SMOOTH"));let b="";h?b+=`uniform samplerCube shadowMap_textureCube; +`:b+=`uniform sampler2D shadowMap_texture; +`;let S;return c?S=` return vec4(${a}, 1.0); +`:S=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,b+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${S}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${y.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,b+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,b+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?b+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:f||(b+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?b+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:A?b+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?b+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${m?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:b+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,b+=` out_FragColor.rgb *= visibility; +} +`,E.push(b),new He({defines:C,sources:E})};var OA=zI;function FA(e){e=e??V.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(Wt.isInternetExplorer()||Wt.isEdge()||(Wt.isChrome()||Wt.isFirefox())&&Wt.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new N,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new se,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new MH,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new le,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new U,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new es:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new se,new se],this._cascadeMatrices=[new N,new N,new N,new N],this._cascadeDistances=new se;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new yCt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,HJ(this),this._clearCommand=new Ci({depth:1,color:new G}),this._clearPassState=new Xc(t),this._size=e.size??2048,this.size=this._size}FA.MAXIMUM_DISTANCE=2e4;function yCt(e){this.camera=new MH,this.passState=new Xc(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function VJ(e,t){return Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function HJ(e){let t=!e._usesDepthTexture;e._primitiveRenderState=VJ(t,e._primitiveBias),e._terrainRenderState=VJ(t,e._terrainBias),e._pointRenderState=VJ(t,e._pointBias)}FA.prototype.debugCreateRenderStates=function(){HJ(this)};Object.defineProperties(FA.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){TCt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function WJ(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function CCt(e,t){let n=new Ju({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Bl.DEPTH_COMPONENT16}),i=new Mt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST}),o=new $r({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function ECt(e,t){let n=new Mt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST}),i=new $r({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function ICt(e,t){let n=new Ju({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Bl.DEPTH_COMPONENT16}),i=new kr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new $r({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Lxe(e,t){e._isPointLight?ICt(e,t):e._usesDepthTexture?ECt(e,t):CCt(e,t)}function xCt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ee.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,HJ(e),WJ(e),Lxe(e,t))}function bCt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(WJ(e),Lxe(e,t),xCt(e,t),Oxe(e,t))}function Oxe(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function TCt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=Yt.maximumCubeMapSize>=t?t:Yt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Ye(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=Yt.maximumTextureSize>=t?t:Yt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Ye(0,0,t,t)):i===4&&(t=Yt.maximumTextureSize>=t*2?t:Yt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Ye(0,0,t,t),n[1].passState.viewport=new Ye(t,0,t,t),n[2].passState.viewport=new Ye(0,t,t,t),n[3].passState.viewport=new Ye(t,t,t,t));e._clearPassState.viewport=new Ye(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new N(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var SCt=new Ye;function wCt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Be.OVERLAY,i}function BCt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=SCt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=wCt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Ye.equals(a.renderState.viewport,s))&&(a.renderState=Ue.fromCache({viewport:Ye.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var QA=new Array(8);QA[0]=new se(-1,-1,-1,1);QA[1]=new se(1,-1,-1,1);QA[2]=new se(1,1,-1,1);QA[3]=new se(-1,1,-1,1);QA[4]=new se(-1,-1,1,1);QA[5]=new se(1,-1,1,1);QA[6]=new se(1,1,1,1);QA[7]=new se(-1,1,1,1);var pC=new N,jJ=new Array(8);for(let e=0;e<8;++e)jJ[e]=new se;function DCt(e,t){let n=new Pt({geometry:new ah({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:$t.fromColor(t)}}),i=new Pt({geometry:new dg({radius:.5}),attributes:{color:$t.fromColor(t)}});return new Qn({geometryInstances:[n,i],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var vCt=[G.RED,G.GREEN,G.BLUE,G.MAGENTA],PCt=new d;function RCt(e,t){BCt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new RA({camera:e._sceneCamera,color:G.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new RA({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new RA({camera:e._passes[i].camera,color:vCt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,PCt),a=N.fromTranslationQuaternionRotationScale(i,o,s,pC);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=DCt(a,G.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new RA({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function MH(){this.viewMatrix=new N,this.inverseViewMatrix=new N,this.frustum=void 0,this.positionCartographic=new Ae,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new N}MH.prototype.clone=function(e){N.clone(e.viewMatrix,this.viewMatrix),N.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),Ae.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var MCt=new N(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);MH.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return N.multiply(t,e,this.viewProjectionMatrix),N.multiply(MCt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var NCt=new Array(5),LCt=new ki,OCt=new Array(4),Fxe=new d,Qxe=new d;function FCt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let A=OCt,g=NCt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let L=(a+1)/s,p=o*Math.pow(u,L),x=o+c*L,T=D.lerp(x,p,f);g[a+1]=T,A[a]=T-g[a]}if(h){for(a=0;a<s;++a)A[a]=Math.min(A[a],e._maximumCascadeDistances[a]);let L=g[0];for(a=0;a<s-1;++a)L+=A[a],g[a+1]=L}se.unpack(g,0,e._cascadeSplits[0]),se.unpack(g,1,e._cascadeSplits[1]),se.unpack(A,0,e._cascadeDistances);let m=n.frustum,_=m.left,y=m.right,C=m.bottom,E=m.top,I=m.near,b=m.far,S=n.positionWC,B=n.directionWC,v=n.upWC,P=i.frustum.clone(LCt),M=n.getViewProjection();for(a=0;a<s;++a){P.near=g[a],P.far=g[a+1];let L=N.multiply(P.projectionMatrix,i.viewMatrix,pC),p=N.inverse(L,pC),x=N.multiply(M,p,pC),T=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Fxe),w=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Qxe);for(let z=0;z<8;++z){let F=se.clone(QA[z],jJ[z]);N.multiplyByVector(x,F,F),d.divideByScalar(F,F.w,F),d.minimumByComponent(F,T,T),d.maximumByComponent(F,w,w)}T.x=Math.max(T.x,0),T.y=Math.max(T.y,0),T.z=0,w.x=Math.min(w.x,1),w.y=Math.min(w.y,1),w.z=Math.min(w.z,1);let R=e._passes[a],O=R.camera;O.clone(n);let k=O.frustum;k.left=_+T.x*(y-_),k.right=_+w.x*(y-_),k.bottom=C+T.y*(E-C),k.top=C+w.y*(E-C),k.near=I+T.z*(b-I),k.far=I+w.z*(b-I),R.cullingVolume=O.frustum.computeCullingVolume(S,B,v);let Q=e._cascadeMatrices[a];N.multiply(O.getViewProjection(),i.inverseViewMatrix,Q),N.multiply(R.textureOffsets,Q,Q)}}var QCt=new N,kCt=new d,UCt=new d,Mxe=new d;function GCt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=N.multiply(i.frustum.projectionMatrix,i.viewMatrix,pC),r=N.inverse(o,pC),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,D.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,kCt);a=d.cross(c,s,UCt),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,Mxe),f=N.computeView(u,s,a,c,QCt),h=N.multiply(f,r,pC),A=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Fxe),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Qxe);for(let b=0;b<8;++b){let S=se.clone(QA[b],jJ[b]);N.multiplyByVector(h,S,S),d.divideByScalar(S,S.w,S),d.minimumByComponent(S,A,A),d.maximumByComponent(S,g,g)}g.z+=1e3,A.z-=10;let m=Mxe;m.x=-(.5*(A.x+g.x)),m.y=-(.5*(A.y+g.y)),m.z=-g.z;let _=N.fromTranslation(m,pC);f=N.multiply(_,f,f);let y=.5*(g.x-A.x),C=.5*(g.y-A.y),E=g.z-A.z,I=n.frustum;I.left=-y,I.right=y,I.bottom=-C,I.top=C,I.near=.01,I.far=E,N.clone(f,n.viewMatrix),N.inverse(f,n.inverseViewMatrix),N.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var zCt=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],VCt=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],HCt=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function WCt(e,t){let n=new ki;n.fov=D.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=zCt[i],o.upWC=VCt[i],o.rightWC=HCt[i],N.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),N.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var jCt=new d,YCt=new d,kxe=new le,Nxe=kxe.center;function qCt(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=kxe;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,jCt),s=d.negate(i.directionWC,YCt),a=d.dot(r,s);if(e.fadingEnabled){let c=D.clamp(a/.1,0,1);e._darkness=D.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===tn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,Nxe),Nxe);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===tn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere)}}function KCt(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;N.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),N.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=Co.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,qCt(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}FA.prototype.update=function(e){if(KCt(this,e),this._needsUpdate)if(bCt(this,e.context),this._isPointLight&&WCt(this,e),this._cascadesEnabled&&(GCt(this,e),this._numberOfCascades>1&&FCt(this,e)),this._isPointLight)this._shadowMapCullingVolume=Os.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;N.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&RCt(this,e)};FA.prototype.updatePass=function(e,t){Oxe(this,e,t)};var XCt=new U;function Uxe(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=XCt;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,se.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return se.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new se,combinedUniforms2:new se};return Tt(t,o,!1)}function JCt(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=nt.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===Be.GLOBE,h=n.pass!==Be.TRANSLUCENT,A=e._isPointLight,g=e._usesDepthTexture,m=OA.getShadowCastShaderKeyword(A,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let y=u.vertexShaderSource,C=u.fragmentShaderSource,E=OA.createShadowCastVertexShader(y,A,f),I=OA.createShadowCastFragmentShader(C,A,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:E,fragmentShaderSource:I,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,A?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ze(a,!1),a.cull=ze(a.cull,!1),a.cull.enabled=!1,a=Ue.fromCache(a)),c=Uxe(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}FA.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===Be.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,A;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,A=o.receiveCommand.uniformMap),o.receiveCommand=nt.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let _=OA.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,_),!l(h)){let y=OA.createShadowReceiveVertexShader(a,u,f),C=OA.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,_,{vertexShaderSource:y,fragmentShaderSource:C,attributeLocations:s._attributeLocations})}A=Uxe(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=A,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};FA.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=JCt(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};FA.prototype.isDestroyed=function(){return!1};FA.prototype.destroy=function(){WJ(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var Jg=FA;var VI=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var ZCt=!1;function gC(e){this._drawClassificationFBO=new Di({createDepthAttachments:!1}),this._accumulationFBO=new Di({createDepthAttachments:!1}),this._packFBO=new Di,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new Ci({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Ye,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(gC.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function Gxe(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function zxe(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function $Ct(e,t,n,i){Gxe(e),e._translucentDepthStencilTexture=new Mt({context:t,width:n,height:i,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST})}function eEt(e,t,n,i){zxe(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function tEt(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&($Ct(e,t,o,r),eEt(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new He({sources:[R2]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new He({sources:[VI]}),a={colorTexture:function(){return e._textureToComposite}},ZCt&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,A=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new He({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=nt.shallowClone(f);g.shaderProgram=A,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new He({sources:[VI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new He({sources:[VI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Ye.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,Ye.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Ye.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!Ye.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Ye.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,reference:Kt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Ye.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}gC.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){tEt(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};gC.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Be.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Be.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[Be.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};gC.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),nEt(this,e,t)};function nEt(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}gC.prototype.isSupported=function(){return this._supported};gC.prototype.isDestroyed=function(){return!1};gC.prototype.destroy=function(){return Gxe(this),zxe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var zQ=gC;function iEt(){this.command=void 0,this.near=void 0,this.far=void 0}function NH(e,t,n){let i=e.context,o;i.depthTexture&&(o=new LQ);let r;e._useOIT&&i.depthTexture&&(r=new FQ(i));let s=new Xc(i);s.viewport=Ye.clone(n),this.camera=t,this._cameraClone=Co.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new GQ(i),this.pickDepthFramebuffer=new kQ,this.sceneFramebuffer=new GI,this.globeDepth=o,this.globeTranslucencyFramebuffer=new OQ,this.oit=r,this.translucentTileClassification=new zQ(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var YJ=new d,qJ=new d;function oEt(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,YJ)),d.maximumComponent(d.abs(t.position,qJ))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,YJ),d.multiplyByScalar(t.position,o,qJ),d.equalsEpsilon(YJ,qJ,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&N.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}NH.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return oEt(t,n,D.EPSILON15)?(this._cameraStartFired&&Li()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Li(),Co.clone(t,n),!0)};function rEt(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ie.SCENE2D,u=t.nearToFarDistance2D;i*=1+D.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let A=0;A<f;++A){let g,m;c?(g=Math.min(i-u,n+A*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,A)*n),m=Math.min(i,a*g));let _=h[A];l(_)?(_.near=g,_.far=m):_=h[A]=new NQ(g,m)}}function sEt(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var Vxe=new Os,aEt=new sc;NH.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let M=0;M<f.length;++M)for(let L=0;L<Be.NUMBER_OF_PASSES;++L)f[M].indices[L]=0;c.length=0,u.length=0;let h=this._commandExtents,A=h.length,g=0,m=+Number.MAX_VALUE,_=-Number.MAX_VALUE,{shadowsEnabled:y}=o,C=+Number.MAX_VALUE,E=-Number.MAX_VALUE,I=Number.MAX_VALUE,b=t.mode===ie.SCENE3D?t.occluder:void 0,{cullingVolume:S}=t,B=Vxe.planes;for(let M=0;M<5;++M)B[M]=S.planes[M];S=Vxe;for(let M=0;M<i.length;++M){let L=i[M],{pass:p,boundingVolume:x}=L;if(p===Be.COMPUTE)c.push(L);else if(p===Be.OVERLAY)u.push(L);else{let T,w;if(l(x)){if(!e.isVisible(S,L,b))continue;let O=x.computePlaneDistances(r,s,aEt);if(T=O.start,w=O.stop,m=Math.min(m,T),_=Math.max(_,w),y&&L.receiveShadows&&T<Jg.MAXIMUM_DISTANCE&&!(p===Be.GLOBE&&T<-100&&w>100)){let k=w-T;p!==Be.GLOBE&&T<100&&(I=Math.min(I,k)),C=Math.min(C,T),E=Math.max(E,w)}}else L instanceof Ci?(T=a.near,w=a.far):(T=a.near,w=a.far,m=Math.min(m,T),_=Math.max(_,w));let R=h[g];l(R)||(R=h[g]=new iEt),R.command=L,R.near=T,R.far=w,g++}}y&&(C=Math.min(Math.max(C,a.near),a.far),E=Math.max(Math.min(E,a.far),C),o.nearPlane=C,o.farPlane=E,o.closestObjectSize=I),rEt(this,e,m,_);for(let M=0;M<g;M++)sEt(this,e,h[M]);if(g<A)for(let M=g;M<A;M++){let L=h[M];if(!l(L.command))break;L.command=void 0}let v=f.length,{frustumSplits:P}=t;P.length=v+1;for(let M=0;M<v;++M)P[M]=f[M].near,M===v-1&&(P[M+1]=f[M].far)};NH.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var HI=NH;var Wxe=.1,cEt=new Vd({pass:qo.MOST_DETAILED_PRELOAD}),lEt=new Vd({pass:qo.MOST_DETAILED_PICK}),VQ=new Vd({pass:qo.PICK});function Ba(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Ye(0,0,1,1),n=new Co(e);n.frustum=new An({width:Wxe,aspectRatio:1,near:.1}),this._pickOffscreenView=new HI(e,n,t)}Ba.prototype.update=function(){this._pickPositionCacheDirty=!0};Ba.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new MQ,n[t]=i),i};var uEt=new es,fEt=new d,LH=new d,dEt=new U,hEt=new N;function mEt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=N.clone(r.transform,hEt);r._setTransform(N.IDENTITY);let h=d.clone(r.position,fEt);d.multiplyByScalar(r.right,c,LH),d.add(LH,h,h),d.multiplyByScalar(r.up,u,LH),d.add(LH,h,h),r._setTransform(f),e.mode===ie.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let A=s.getPixelDimensions(o.width,o.height,1,1,dEt),g=uEt;return g.right=A.x*.5,g.left=-g.right,g.top=A.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var AEt=new Vl,pEt=new U;function gEt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,A=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,pEt),_=m.x*n*.5,y=m.y*i*.5,C=AEt;return C.top=g+y,C.bottom=g-y,C.right=A+_,C.left=A-_,C.near=a,C.far=s.far,C.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function OH(e,t,n,i,o){let r=e.camera.frustum;return r instanceof An||r instanceof es?mEt(e,t,n,i,o):gEt(e,t,n,i,o)}var FH=new Ye(0,0,3,3),QH=new U,HQ=new G(0,0,0,0);function KJ(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}Ba.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Ye.clone(a,u.viewport);let f=eo.transformWindowToDrawingBuffer(e,t,QH),h=KJ(o.drawingBufferHeight,f,n,i,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=OH(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=VQ,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,HQ),e.resolveFramebuffers(u);let A=c.end(h);return o.endFrame(),A};Ba.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Ye.clone(a,u.viewport);let f=eo.transformWindowToDrawingBuffer(e,t,QH),h=KJ(o.drawingBufferHeight,f,n,i,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=OH(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=VQ,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,HQ),e.resolveFramebuffers(u);let A=c.readCenterPixel(h);return o.endFrame(),A};Ba.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Ye.clone(s,c.viewport);let u=eo.transformWindowToDrawingBuffer(e,t,QH),f=KJ(i.drawingBufferHeight,u,1,1,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=OH(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=VQ,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,HQ);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let A=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,RQ.decodeMetadataValues(n.classProperty,n.metadataProperty,A)};function _Et(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Ye.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=OH(e,t,1,1,s),o.tilesetPassState=VQ,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,HQ),e.resolveFramebuffers(c),i.endFrame()}var yEt=new ki,CEt=new Vl,EEt=new An,IEt=new es;Ba.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=eo.transformWindowToDrawingBuffer(e,t,QH);e.pickTranslucentDepth?_Et(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(yEt):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(CEt):l(s.frustum.width)?f=s.frustum.clone(EEt):f=s.frustum.clone(IEt);let{frustumCommandsList:h}=a,A=h.length;for(let g=0;g<A;++g){let _=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(_)&&_>0&&_<1){let y=h[g],C;return e.mode===ie.SCENE2D?(C=s.position.z,s.position.z=C-y.near+1,f.far=Math.max(1,y.far-y.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=y.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=y.far,c.updateFrustum(f)),n=eo.drawingBufferToWorldCoordinates(e,u,_,n),e.mode===ie.SCENE2D&&(s.position.z=C,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var xEt=new Ae;Ba.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ie.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,xEt);o.cartographicToCartesian(r,n)}return n};function jxe(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let A=u.primitive,g=!1;typeof A.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=A.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=wn.toValue(!1,i.show),s.push(i))),u instanceof ha&&(g=!0,u.show=!1,a.push(u)),g||(A.show=!1,r.push(A)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=wn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}Ba.prototype.drillPick=function(e,t,n,i,o){let r=this;return jxe(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var Hxe=new d,bEt=new d;function TEt(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function Yxe(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,Hxe),s=d.cross(o,r,Hxe),a=d.cross(o,s,bEt);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??Wxe,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function SEt(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=Yxe(e,o,r,a),u=cEt;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let A=0;A<h;++A){let g=s[A];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}Ba.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)SEt(this,e,t[n])&&t.splice(n--,1)};function qxe(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof Ql&&qxe(o,t,n))}}function kH(e,t,n,i,o,r){let s=[];if(qxe(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new TEt(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function wEt(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function BEt(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,Yxe(e,n,o,f.camera);let h=Ye.clone(f.viewport,FH),A=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=lEt:c.tilesetPassState=VQ,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(A,HQ),t.resolveFramebuffers(A);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:_}=f,y=_.length;for(let C=0;C<y;++C){let I=e.getPickDepth(t,C).getDepth(a,0,0);if(l(I)&&I>0&&I<1){let b=_[C],S=b.near*(C!==0?t.opaqueFrustumNearOffset:1),B=b.far,v=S+I*(B-S);g=In.getPoint(n,v);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||wEt(m,i)}}function Kxe(e,t,n,i,o,r,s,a){return jxe(i,function(){return BEt(e,t,n,o,r,s,a)})}function Sw(e,t,n,i,o,r,s){let a=Kxe(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function Xxe(e,t,n,i,o,r,s,a){return Kxe(e,t,n,i,o,r,s,a)}function UH(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}Ba.prototype.pickFromRay=function(e,t,n,i){return Sw(this,e,t,n,i,!1,!1)};Ba.prototype.drillPickFromRay=function(e,t,n,i,o){return Xxe(this,e,t,n,i,o,!1,!1)};Ba.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=In.clone(t),n=l(n)?n.slice():n,UH(e,kH(o,e,t,n,i,function(){return Sw(o,e,t,n,i,!1,!0)}))};Ba.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=In.clone(t),i=l(i)?i.slice():i,UH(e,kH(r,e,t,i,o,function(){return Xxe(r,e,t,n,i,o,!1,!0)}))};var DEt=new d,vEt=new d,PEt=new In,Jxe=new Ae;function XJ(e,t){let n=e.ellipsoid,i=Ti._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,vEt),r=Ae.toCartesian(t,n,DEt),s=PEt;s.origin=r,s.direction=o;let a=new In;return In.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function Zxe(e,t){let n=e.ellipsoid,i=Ae.fromCartesian(t,n,Jxe);return XJ(e,i)}function $xe(e,t){let n=e.ellipsoid;return Ae.fromCartesian(t,n,Jxe).height}function REt(e,t,n,i,o){let r=XJ(t,n);return kH(e,t,r,i,o,function(){let s=Sw(e,t,r,i,o,!0,!0);if(l(s))return $xe(t,s.position)})}function MEt(e,t,n,i,o,r){let s=Zxe(t,n);return kH(e,t,s,i,o,function(){let a=Sw(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}Ba.prototype.sampleHeight=function(e,t,n,i){let o=XJ(e,t),r=Sw(this,e,o,n,i,!0,!1);if(l(r))return $xe(e,r.position)};Ba.prototype.clampToHeight=function(e,t,n,i,o){let r=Zxe(e,t),s=Sw(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};Ba.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=REt(this,e,t[s],n,i);return UH(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};Ba.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=MEt(this,e,t[s],n,i,t[s]);return UH(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};Ba.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var WQ=Ba;var jQ=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var YQ=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var qQ=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var KQ=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var XQ=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var JQ=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var ZQ=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var $Q=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var ek=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var tk=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var nk=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var ik=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var ok=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var _C=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var rk=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var sk=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var ak=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var ck=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var lk=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;function WI(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new Di,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new U,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(WI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function ebe(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function NEt(e,t){ebe(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new Di,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function tbe(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function LEt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function OEt(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function FEt(e,t){tbe(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(OEt(r,i),{framebuffer:n[r].framebuffer,uniformMap:LEt(e,r)});e._commands=o}WI.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new Ci({color:new G(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};WI.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,NEt(this,e),FEt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};WI.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};WI.prototype.isDestroyed=function(){return!1};WI.prototype.destroy=function(){return ebe(this),tbe(this),ue(this)};var uk=WI;var QEt={NEAREST:0,LINEAR:1},Bf=QEt;function jI(e){e=e??V.EMPTY_OBJECT;let{name:t=Xn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=Bf.NEAREST,pixelFormat:a=$e.RGBA,pixelDatatype:c=Ve.UNSIGNED_BYTE,clearColor:u=G.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new Xc;h.scissorTest={enabled:!0,rectangle:l(f)?Ye.clone(f):new Ye},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(jI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var kEt=/uniform\s+sampler2D\s+depthTexture/g;jI.prototype._isSupported=function(e){return!kEt.test(this._fragmentShader)||e.depthTexture};function UEt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Mt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Mt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function GEt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function zEt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function VEt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=GEt(e,r),n[r]=UEt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Mt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=zEt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=Tt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function HEt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function WEt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=HEt(n,o)}let i=new He({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function jEt(e){let t=e._sampleMode,n,i;t===Bf.LINEAR?(n=Zt.LINEAR,i=mi.LINEAR):(n=Zt.NEAREST,i=mi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function YEt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function qEt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function KEt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Mt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=qEt(e,u);else if(typeof u=="string"){let h=new we({url:u});s.push(h.fetchImage().then(YEt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function nbe(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Mt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function XEt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function JEt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:on.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=G.floatToByte(h.red),r[o+1]=G.floatToByte(h.green),r[o+2]=G.floatToByte(h.blue),r[o+3]=G.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=G.floatToByte(c.red),r[o+1]=G.floatToByte(c.green),r[o+2]=G.floatToByte(c.blue),r[o+3]=G.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:on.NEAREST})}jI.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&nbe(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=XEt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,JEt(this,e),VEt(this),KEt(this,e),WEt(this,e),jEt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ue.fromCache({viewport:new Ye(0,0,i.width,i.height)}))),this._command.renderState=o};jI.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,on.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};jI.prototype.isDestroyed=function(){return!1};jI.prototype.destroy=function(){return nbe(this),ue(this)};var So=jI;function YI(e){e=e??V.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=Xn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(YI.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});YI.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};YI.prototype.get=function(e){return this._stages[e]};function ZEt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}YI.prototype.update=function(e,t){this._selectedDirty=ZEt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};YI.prototype.isDestroyed=function(){return!1};YI.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Du=YI;var Xr={};function JJ(e){let o=`#define USE_STEP_SIZE +${_C}`,r=new So({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:Bf.LINEAR}),s=new So({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:Bf.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new Du({name:e,stages:[r,s],uniforms:a})}Xr.createBlurStage=function(){return JJ("czm_blur")};Xr.createDepthOfFieldStage=function(){let e=JJ("czm_depth_of_field_blur"),t=new So({name:"czm_depth_of_field_composite",fragmentShader:$Q,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new Du({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Xr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};Xr.createEdgeDetectionStage=function(){let e=Xn();return new So({name:`czm_edge_detection_${e}`,fragmentShader:tk,uniforms:{length:.25,color:G.clone(G.BLACK)}})};Xr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function $Et(e){if(!l(e))return Xr.createEdgeDetectionStage();let t=new Du({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new So({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new Du({name:"czm_edge_detection_composite",stages:[t,s]})}Xr.createSilhouetteStage=function(e){let t=$Et(e),n=new So({name:"czm_silhouette_color_edges",fragmentShader:lk,uniforms:{silhouetteTexture:t.name}});return new Du({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};Xr.isSilhouetteSupported=function(e){return e.context.depthTexture};Xr.createBloomStage=function(){let e=new So({name:"czm_bloom_contrast_bias",fragmentShader:ZQ,uniforms:{contrast:128,brightness:-.3}}),t=JJ("czm_bloom_blur"),n=new Du({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new So({name:"czm_bloom_generate_composite",fragmentShader:XQ,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new Du({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Xr.createAmbientOcclusionStage=function(){let e=new So({name:"czm_ambient_occlusion_generate",fragmentShader:YQ,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new So({name:"czm_ambient_occlusion_composite",fragmentShader:qQ,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new Du({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Xr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var e0t=`#define FXAA_QUALITY_PRESET 39 +${O2} +${ok}`;Xr.createFXAAStage=function(){return new So({name:"czm_FXAA",fragmentShader:e0t,sampleMode:Bf.LINEAR})};Xr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=jQ,new So({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=nk,new So({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=ik,new So({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=ck,new So({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=sk,new So({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:G.WHITE,autoExposure:void 0,exposure:1}})};Xr.createAutoExposureStage=function(){return new uk};Xr.createBlackAndWhiteStage=function(){return new So({name:"czm_black_and_white",fragmentShader:KQ,uniforms:{gradations:5}})};Xr.createBrightnessStage=function(){return new So({name:"czm_brightness",fragmentShader:JQ,uniforms:{brightness:.5}})};Xr.createNightVisionStage=function(){return new So({name:"czm_night_vision",fragmentShader:ak})};Xr.createDepthViewStage=function(){return new So({name:"czm_depth_view",fragmentShader:ek})};Xr.createLensFlareStage=function(){return new So({name:"czm_lens_flare",fragmentShader:rk,uniforms:{dirtTexture:fn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:fn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:te.WGS84.maximumRadius}})};var Df=Xr;function Zg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function dk(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function ZJ(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[dk(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[dk(h)]=!0)}}}return i.name}function fk(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let A=i.get(h);l(A.length)?a=fk(e,t,n,A,o):a=ZJ(e,t,n,A,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=dk(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=dk(i.get(u));let h=n[f];for(let A=0;A<u;++A)h[dk(i.get(A))]=!0}return a}function t0t(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=fk(e,t,n,i,void 0);a=fk(e,t,n,o,a),a=ZJ(e,t,n,r,a),a=fk(e,t,n,e,a),ZJ(e,t,n,s,a)}else fk(e,t,n,e,void 0);return n}function n0t(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,A=e._framebuffers,g=A.length;for(f=0;f<g;++f){if(h=A[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!G.equals(u,h.clearColor))continue;let m=h.stages,_=m.length,y=!1;for(let C=0;C<_;++C)if(n[m[C]]){y=!0;break}if(!y)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new Di({pixelFormat:a,pixelDatatype:c}),clear:void 0},A.push(h),h)}function i0t(e,t){let n=t0t(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=n0t(e,i,n[i]))}function $J(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function o0t(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(D.isPowerOfTwo(h)||(h=D.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new Ci({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}Zg.prototype.updateDependencies=function(){this._updateDependencies=!0};Zg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&($J(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&i0t(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,$J(this),o0t(this,e))};Zg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};Zg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};Zg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};Zg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};Zg.prototype.isDestroyed=function(){return!1};Zg.prototype.destroy=function(){return $J(this),ue(this)};var qI=Zg;var r0t={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var $g=Object.freeze(r0t);var eZ=[];function Hl(){let e=Df.createFXAAStage(),t=Df.createAmbientOcclusionStage(),n=Df.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Df.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=$g.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new qI(this),r={},s=eZ;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(Hl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return tZ(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case $g.REINHARD:n=Df.createReinhardTonemappingStage(t);break;case $g.MODIFIED_REINHARD:n=Df.createModifiedReinhardTonemappingStage(t);break;case $g.FILMIC:n=Df.createFilmicTonemappingStage(t);break;case $g.PBR_NEUTRAL:n=Df.createPbrNeutralTonemappingStage(t);break;default:n=Df.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function tZ(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}Hl.prototype.add=function(e){let t=this._stageNames,n=eZ;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};Hl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=eZ;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};Hl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};Hl.prototype.get=function(e){return tZ(this),this._stages[e]};Hl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};Hl.prototype.getStageByName=function(e){return this._stageNames[e]};Hl.prototype.update=function(e,t,n){tZ(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&(o[s++]=E)}o.length=s;let a=s!==i.length;if(!a){for(let C=0;C<s;++C)if(o[C]!==i[C]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,A=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),_=h.enabled&&h._isSupported(e),y=A.enabled&&A._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||_!==this._tonemappingEnabled||y!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=_,this._fxaaEnabled=y,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let E=new Uint8Array(196608);for(let I=0;I<196608;I+=3)E[I]=Math.floor(Math.random()*255);this._randomTexture=new Mt({context:e,pixelFormat:$e.RGB,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:E,width:256,height:256},sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})})}this._textureCache.update(e),A.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let C=0;C<r.length;++C)r[C].update(e,t);s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};Hl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function KI(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}Hl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return KI(t)};function kA(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){kA(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)kA(e.get(r),t,KI(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)kA(e.get(r),t,n,i,o)}Hl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),A=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),_=s.enabled&&s._isSupported(e);if(!_&&!h&&!A&&!m&&r===0)return;let y=t;h&&a.ready&&(kA(a,e,y,n,i),y=KI(a)),A&&c.ready&&(kA(c,e,y,n,i),y=KI(c)),g&&u.ready&&kA(u,e,y,n,i),m&&f.ready&&(kA(f,e,y,n,i),y=KI(f));let C=y;if(r>0){kA(o[0],e,y,n,i);for(let E=1;E<r;++E)kA(o[E],e,KI(o[E-1]),n,i);C=KI(o[r-1])}_&&s.ready&&kA(s,e,C,n,i)};Hl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};Hl.prototype.isDestroyed=function(){return!1};Hl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var hk=Hl;var s0t={SHIFT:0,CTRL:1,ALT:2},Da=Object.freeze(s0t);var a0t={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},Dn=Object.freeze(a0t);function yC(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function aZ(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function XI(e){if(e.shiftKey)return Da.SHIFT;if(e.ctrlKey)return Da.CTRL;if(e.altKey)return Da.ALT}var As={LEFT:0,MIDDLE:1,RIGHT:2};function vf(e,t,n,i){function o(r){i(e,r)}Wt.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function c0t(e){let t=e._element,n=l(t.disableRootEvents)?t:document;Wt.supportsPointerEvents()?(vf(e,"pointerdown",t,m0t),vf(e,"pointerup",t,dbe),vf(e,"pointermove",t,A0t),vf(e,"pointercancel",t,dbe)):(vf(e,"mousedown",t,hbe),vf(e,"mouseup",n,mbe),vf(e,"mousemove",n,Abe),vf(e,"touchstart",t,d0t),vf(e,"touchend",n,abe),vf(e,"touchmove",n,h0t),vf(e,"touchcancel",n,abe)),vf(e,"dblclick",t,u0t);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",vf(e,i,t,f0t)}function l0t(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var ibe={position:new U};function cZ(e){e._lastSeenTouchEvent=Li()}function lZ(e){return Li()-e._lastSeenTouchEvent>ym.mouseEmulationIgnoreMilliseconds}function sZ(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function hbe(e,t){if(!lZ(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===As.LEFT)i=Dn.LEFT_DOWN;else if(n===As.MIDDLE)i=Dn.MIDDLE_DOWN;else if(n===As.RIGHT)i=Dn.RIGHT_DOWN;else return;let o=yC(e,t,e._primaryPosition);U.clone(o,e._primaryStartPosition),U.clone(o,e._primaryPreviousPosition);let r=XI(t),s=e.getInputAction(i,r);l(s)&&(U.clone(o,ibe.position),s(ibe),t.preventDefault())}var obe={position:new U},rbe={position:new U};function nZ(e,t,n,i){let o=XI(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=yC(e,i,e._primaryPosition);if(l(r)&&(U.clone(a,obe.position),r(obe)),l(s)){let c=e._primaryStartPosition;sZ(c,a,e._clickPixelTolerance)&&(U.clone(a,rbe.position),s(rbe))}}}function mbe(e,t){if(!lZ(e))return;let n=t.button;n!==As.LEFT&&n!==As.MIDDLE&&n!==As.RIGHT||(e._buttonDown[As.LEFT]&&(nZ(e,Dn.LEFT_UP,Dn.LEFT_CLICK,t),e._buttonDown[As.LEFT]=!1),e._buttonDown[As.MIDDLE]&&(nZ(e,Dn.MIDDLE_UP,Dn.MIDDLE_CLICK,t),e._buttonDown[As.MIDDLE]=!1),e._buttonDown[As.RIGHT]&&(nZ(e,Dn.RIGHT_UP,Dn.RIGHT_CLICK,t),e._buttonDown[As.RIGHT]=!1))}var iZ={startPosition:new U,endPosition:new U};function Abe(e,t){if(!lZ(e))return;let n=XI(t),i=yC(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(Dn.MOUSE_MOVE,n);l(r)&&(U.clone(o,iZ.startPosition),U.clone(i,iZ.endPosition),r(iZ)),U.clone(i,o),(e._buttonDown[As.LEFT]||e._buttonDown[As.MIDDLE]||e._buttonDown[As.RIGHT])&&t.preventDefault()}var sbe={position:new U};function u0t(e,t){let n=t.button,i;if(n===As.LEFT)i=Dn.LEFT_DOUBLE_CLICK;else return;let o=XI(t),r=e.getInputAction(i,o);l(r)&&(yC(e,t,sbe.position),r(sbe))}function f0t(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=XI(t),o=e.getInputAction(Dn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function d0t(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,yC(e,r,new U));GH(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,U.clone(a.get(s)))}function abe(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);GH(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var cbe={position:new U},oZ={position1:new U,position2:new U},lbe={position:new U},ube={position:new U},fbe={position:new U};function GH(e,t){let n=XI(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[As.LEFT]){if(e._buttonDown[As.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(Dn.LEFT_UP,n),l(r)&&(U.clone(e._primaryPosition,lbe.position),r(lbe)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(Dn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];sZ(c,u,e._clickPixelTolerance)&&(U.clone(e._primaryPosition,ube.position),s(ube))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(Dn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];U.clone(c,e._primaryPosition),U.clone(c,e._primaryStartPosition),U.clone(c,e._primaryPreviousPosition),e._buttonDown[As.LEFT]=!0,r=e.getInputAction(Dn.LEFT_DOWN,n),l(r)&&(U.clone(c,cbe.position),r(cbe)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(Dn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];sZ(u,f,e._holdPixelTolerance)&&(U.clone(e._primaryPosition,fbe.position),s(fbe))}},ym.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(Dn.PINCH_START,n),l(r)&&(U.clone(i.values[0],oZ.position1),U.clone(i.values[1],oZ.position2),r(oZ),t.preventDefault()))}function h0t(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&yC(e,r,u)}pbe(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,U.clone(a.get(s),c.get(s))}var rZ={startPosition:new U,endPosition:new U},mk={distance:{startPosition:new U,endPosition:new U},angleAndHeight:{startPosition:new U,endPosition:new U}};function pbe(e,t){let n=XI(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[As.LEFT]){let a=i.values[0];U.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(Dn.MOUSE_MOVE,n),l(s)&&(U.clone(c,rZ.startPosition),U.clone(a,rZ.endPosition),s(rZ)),U.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(Dn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,A=c.y-a.y,g=Math.sqrt(h*h+A*A)*.25,m=f.x-u.x,_=f.y-u.y,y=Math.sqrt(m*m+_*_)*.25,C=(c.y+a.y)*.125,E=(f.y+u.y)*.125,I=Math.atan2(A,h),b=Math.atan2(_,m);U.fromElements(0,y,mk.distance.startPosition),U.fromElements(0,g,mk.distance.endPosition),U.fromElements(b,E,mk.angleAndHeight.startPosition),U.fromElements(I,C,mk.angleAndHeight.endPosition),s(mk)}}function m0t(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,yC(e,t,new U)),GH(e,t),e._previousPositions.set(i,U.clone(n.get(i)))}else hbe(e,t)}function dbe(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),GH(e,t),e._previousPositions.remove(i)}else mbe(e,t)}function A0t(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;yC(e,t,o),pbe(e,t);let r=e._previousPositions;U.clone(n.get(i),r.get(i))}else Abe(e,t)}function ym(e){this._inputEvents={},this._buttonDown={[As.LEFT]:!1,[As.MIDDLE]:!1,[As.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-ym.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new U,this._primaryPosition=new U,this._primaryPreviousPosition=new U,this._positions=new vt,this._previousPositions=new vt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,c0t(this)}ym.prototype.setInputAction=function(e,t,n){let i=aZ(t,n);this._inputEvents[i]=e};ym.prototype.getInputAction=function(e,t){let n=aZ(e,t);return this._inputEvents[n]};ym.prototype.removeInputAction=function(e,t){let n=aZ(e,t);delete this._inputEvents[n]};ym.prototype.isDestroyed=function(){return!1};ym.prototype.destroy=function(){return l0t(this),ue(this)};ym.mouseEmulationIgnoreMilliseconds=800;ym.touchHoldDelayMilliseconds=1500;var Pf=ym;function JI(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}JI.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};JI.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof An,!(this._previousMode===ie.SCENE2D||this._previousMode===ie.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE2D,!0),n._mode=ie.MORPHING,n.camera._setTransform(N.IDENTITY),this._previousMode===ie.COLUMBUS_VIEW?q0t(this,e):tIt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var p0t=new d,g0t=new d,_0t=new d,y0t=new d,C0t=new d,E0t=new d,I0t=new d,x0t=new Ae,b0t=new N,T0t=new ki,S0t=new An,w0t={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};JI.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ie.COLUMBUS_VIEW||this._previousMode===ie.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ie.COLUMBUS_VIEW,!0),n.camera._setTransform(N.IDENTITY);let i=p0t,o=g0t,r=_0t;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ie.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,I0t),h=kt.eastNorthUpToFixedFrame(f,t,b0t);N.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,x0t),i),N.multiplyByPointAsVector(h,o,o),N.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=S0t,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=T0t,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=D.toRadians(60));let a=w0t;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=iIt(a);Ak(this,c),this._previousMode===ie.SCENE2D?nIt(this,e,a,c):(a.position2D=N.multiplyByPoint(Co.TRANSFORM_2D,i,y0t),a.direction2D=N.multiplyByPointAsVector(Co.TRANSFORM_2D,o,C0t),a.up2D=N.multiplyByPointAsVector(Co.TRANSFORM_2D,r,E0t),n._mode=ie.MORPHING,wbe(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var dZ={position:new d,direction:new d,up:new d,frustum:void 0},_be=new ki;JI.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ie.SCENE3D||this._previousMode===ie.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE3D,!0),n._mode=ie.MORPHING,n.camera._setTransform(N.IDENTITY),this._previousMode===ie.SCENE2D)Q0t(this,e,t);else{let i;e>0?(i=dZ,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=ybe(this,t);let o,r=n.camera;r.frustum instanceof An?o=r.frustum.clone():(o=_be,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=D.toRadians(60)),i.frustum=o;let s=Dbe(i);Ak(this,s),fZ(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};JI.prototype.isDestroyed=function(){return!1};JI.prototype.destroy=function(){return zH(this),ue(this)};function Ak(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Pf(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,Dn.LEFT_DOWN),e._morphHandler.setInputAction(n,Dn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,Dn.RIGHT_DOWN),e._morphHandler.setInputAction(n,Dn.WHEEL)}}function zH(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var B0t=new Ae,D0t=new d,v0t=new N;function ybe(e,t){let n=e._scene,i=n.camera,o=dZ,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,B0t);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,D0t),f=kt.eastNorthUpToFixedFrame(u,t,v0t);return N.multiplyByPointAsVector(f,i.direction,s),N.multiplyByPointAsVector(f,i.up,a),o}var P0t=new d,R0t=new d,M0t=new d,N0t=new d,L0t=new d,O0t=new d;function fZ(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,P0t),a=d.clone(r.direction,R0t),c=d.clone(r.up,M0t),u=N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,n.position,N0t),f=N.multiplyByPointAsVector(Co.TRANSFORM_2D_INVERSE,n.direction,L0t),h=N.multiplyByPointAsVector(Co.TRANSFORM_2D_INVERSE,n.up,O0t);function A(m){Wd(s,u,m.time,r.position),Wd(a,f,m.time,r.direction),Wd(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){Bbe(e,o,0,1,t,i)}});e._currentTweens.push(g)}var F0t=new An,Cbe=new d,Ebe=new d,Ibe=new d,hZ=new d,xbe=new d,bbe=new d;function Q0t(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=dZ,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=ybe(e,n));let s;e._morphToOrthographic?(s=F0t,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=_be,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=D.toRadians(60)),r.frustum=s;let a=Dbe(r);Ak(e,a);let c;e._morphToOrthographic?c=function(){fZ(e,t,r,a)}:c=function(){Sbe(e,t,r,function(){fZ(e,t,r,a)})},t>0?(i._mode=ie.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,hZ),complete:function(){i._mode=ie.MORPHING,c()}})):c()}function Wd(e,t,n,i){return d.lerp(e,t,n,i)}function Tbe(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof An)return;let a=s.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(A){s.frustum.fov=D.lerp(a,c,A.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var k0t=new d,U0t=new d,G0t=new d,uZ=new d,z0t=new d,V0t=new d,H0t=new es,W0t=new In,j0t=new d,Y0t={position:void 0,direction:void 0,up:void 0,frustum:void 0};function q0t(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,k0t),r=d.clone(i.direction,U0t),s=d.clone(i.up,G0t),a=d.negate(d.UNIT_Z,z0t),c=d.clone(d.UNIT_Y,V0t),u=uZ;if(t>0)d.clone(d.ZERO,uZ),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,uZ);let y=W0t;N.multiplyByPoint(Co.TRANSFORM_2D,o,y.origin),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r,y.direction);let C=n.globe;if(l(C)){let E=C.pickWorldCoordinates(y,n,!0,j0t);l(E)&&(N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,E,u),u.z+=d.distance(o,u))}}let f=H0t;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=Y0t;h.position=u,h.direction=a,h.up=c,h.frustum=f;let A=vbe(h);Ak(e,A);function g(y){Wd(o,u,y.time,i.position),Wd(r,a,y.time,i.direction),Wd(s,c,y.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(y,C){y.position.z=C}let _=n.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){Tbe(e,t,h,m,A)}});e._currentTweens.push(_)}var gbe=new Ae,K0t={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new es},X0t={position:new d,direction:new d,up:new d,frustum:void 0},J0t=new d,Z0t=new In,$0t=new N,eIt=new d;function tIt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=K0t;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,gbe),i.mapProjection.project(gbe,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=Z0t;d.clone(r.position2D,h.origin);let A=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,eIt),m=kt.eastNorthUpToFixedFrame(g,n,$0t);N.inverseTransformation(m,m),N.multiplyByPointAsVector(m,A,A),N.multiplyByPointAsVector(Co.TRANSFORM_2D,A,A);let _=i.globe;if(l(_)){let y=_.pickWorldCoordinates(h,i,!0,J0t);if(l(y)){let C=d.distance(r.position2D,y);y.x+=C,d.clone(y,r.position2D)}}}function s(h,A){h.position.x=A}N.multiplyByPoint(Co.TRANSFORM_2D,r.position,r.position2D),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r.direction,r.direction2D),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=X0t;N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=vbe(c);Ak(e,u);function f(){Tbe(e,t,r,s,u)}wbe(e,t,r,f)}function Sbe(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(A){r.frustum.fov=D.lerp(c,a,A.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function nIt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,hZ),a=d.clone(n.direction,xbe),c=d.clone(n.up,bbe);o._mode=ie.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,Cbe),h=d.clone(r.direction,Ebe),A=d.clone(r.up,Ibe);f.z=s.z;function g(_){Wd(f,s,_.time,r.position),Wd(h,a,_.time,r.direction),Wd(A,c,_.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():Sbe(e,0,n,u)}function wbe(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,Cbe),a=d.clone(r.direction,Ebe),c=d.clone(r.up,Ibe),u=d.clone(n.position2D,hZ),f=d.clone(n.direction2D,xbe),h=d.clone(n.up2D,bbe);function A(m){Wd(s,u,m.time,r.position),Wd(a,f,m.time,r.direction),Wd(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){Bbe(e,o,1,0,t,i)}});e._currentTweens.push(g)}function Bbe(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ms.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function Dbe(e){return function(t){let n=t._scene;n._mode=ie.SCENE3D,n.morphTime=ie.getMorphTime(ie.SCENE3D),zH(t);let i=n.camera;(t._previousMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE3D,r)}}function vbe(e){return function(t){let n=t._scene;n._mode=ie.SCENE2D,n.morphTime=ie.getMorphTime(ie.SCENE2D),zH(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE2D,o)}}function iIt(e){return function(t){let n=t._scene;n._mode=ie.COLUMBUS_VIEW,n.morphTime=ie.getMorphTime(ie.COLUMBUS_VIEW),zH(t);let i=n.camera;(t._previousModeMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.COLUMBUS_VIEW,r)}}var pk=JI;var oIt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},Ji=Object.freeze(oIt);function va(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function rIt(e,t){U.clone(e.distance.startPosition,t.distance.startPosition),U.clone(e.distance.endPosition,t.distance.endPosition),U.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),U.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function Pbe(e,t,n){let i=va(Ji.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new U;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new U,endPosition:new U},u.angleAndHeight={startPosition:new U,endPosition:new U},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,U.lerp(f.position1,f.position2,.5,s[i])},Dn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},Dn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(rIt(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(U.clone(f.distance.endPosition,u.distance.endPosition),U.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,A=u.prevAngle,g=Math.PI*2;for(;h>=A+Math.PI;)h-=g;for(;h<A-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-A*n.clientWidth/12}},Dn.PINCH_MOVE,t)}function Rbe(e,t){let n=va(Ji.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new U,endPosition:new U,valid:!1}),s.startPosition=new U,U.clone(U.ZERO,s.startPosition),s.endPosition=new U,e._eventHandler.setInputAction(function(c){let u=7.5*D.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,U.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},Dn.WHEEL,t)}function ww(e,t,n){let i=va(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new U;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new U,endPosition:new U,valid:!1});let c,u;n===Ji.LEFT_DRAG?(c=Dn.LEFT_DOWN,u=Dn.LEFT_UP):n===Ji.RIGHT_DRAG?(c=Dn.RIGHT_DOWN,u=Dn.RIGHT_UP):n===Ji.MIDDLE_DRAG&&(c=Dn.MIDDLE_DOWN,u=Dn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,U.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){mZ(va(n,void 0),e);for(let f of Object.values(Da)){let h=va(n,f);mZ(h,e)}},u,t)}function mZ(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function Mbe(e,t){U.clone(e.startPosition,t.startPosition),U.clone(e.endPosition,t.endPosition)}function sIt(e,t,n){let i=n._isDown,o=!1,r=va(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,mZ(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new U,endPosition:new U,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function Nbe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in Ji)if(Ji.hasOwnProperty(s)){let a=Ji[s];if(l(a)){let c=va(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new U,endPosition:new U,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new U,endPosition:new U})}}e._eventHandler.setInputAction(function(s){for(let a in Ji)if(Ji.hasOwnProperty(a)){let c=Ji[a];if(l(c)){let u=va(c,t);sIt(c,t,e),r[u]&&(n[u]?(Mbe(i[u],o[u]),o[u].valid=!0,Mbe(s,i[u]),n[u]=!1):U.clone(s.endPosition,i[u].endPosition))}}U.clone(s.endPosition,e._currentMousePosition)},Dn.MOUSE_MOVE,t)}function jd(e){this._eventHandler=new Pf(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new U,Rbe(this,void 0),Pbe(this,void 0,e),ww(this,void 0,Ji.LEFT_DRAG),ww(this,void 0,Ji.RIGHT_DRAG),ww(this,void 0,Ji.MIDDLE_DRAG),Nbe(this,void 0);for(let t in Da)if(Da.hasOwnProperty(t)){let n=Da[t];l(n)&&(Rbe(this,n),Pbe(this,n,e),ww(this,n,Ji.LEFT_DRAG),ww(this,n,Ji.RIGHT_DRAG),ww(this,n,Ji.MIDDLE_DRAG),Nbe(this,n))}}Object.defineProperties(jd.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[va(Ji.WHEEL)]||!this._update[va(Ji.WHEEL,Da.SHIFT)]||!this._update[va(Ji.WHEEL,Da.CTRL)]||!this._update[va(Ji.WHEEL,Da.ALT)];return this._buttonsDown>0||e}}});jd.prototype.isMoving=function(e,t){let n=va(e,t);return!this._update[n]};jd.prototype.getMovement=function(e,t){let n=va(e,t);return this._movement[n]};jd.prototype.getLastMovement=function(e,t){let n=va(e,t),i=this._lastMovement[n];if(i.valid)return i};jd.prototype.isButtonDown=function(e,t){let n=va(e,t);return this._isDown[n]};jd.prototype.getStartMousePosition=function(e,t){if(e===Ji.WHEEL)return this._currentMousePosition;let n=va(e,t);return this._eventStartPosition[n]};jd.prototype.getButtonPressTime=function(e,t){let n=va(e,t);return this._pressTime[n]};jd.prototype.getButtonReleaseTime=function(e,t){let n=va(e,t);return this._releaseTime[n]};jd.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};jd.prototype.isDestroyed=function(){return!1};jd.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var gk=jd;function VH(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=ze(n),this._stopObject=ze(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(VH.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});VH.prototype.cancelTween=function(){this._tweens.remove(this)};function Cm(){this._tweens=[]}Object.defineProperties(Cm.prototype,{length:{get:function(){return this._tweens.length}}});Cm.prototype.add=function(e){if(e=e??V.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new VH(this);let t=e.duration/ri.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ri.SECONDS_PER_MILLISECOND,o=e.easingFunction??ms.LINEAR_NONE,r=e.startObject,s=new _Ee(r);s.to(ze(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new VH(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};Cm.prototype.addProperty=function(e){e=e??V.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};Cm.prototype.addAlpha=function(e){e=e??V.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};Cm.prototype.addOffsetIncrement=function(e){e=e??V.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};Cm.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};Cm.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};Cm.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};Cm.prototype.get=function(e){return this._tweens[e]};Cm.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ri.SECONDS_PER_MILLISECOND:Li();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var ZI=Cm;function yk(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=Ji.LEFT_DRAG,this.zoomEventTypes=[Ji.RIGHT_DRAG,Ji.WHEEL,Ji.PINCH],this.rotateEventTypes=Ji.LEFT_DRAG,this.tiltEventTypes=[Ji.MIDDLE_DRAG,Ji.PINCH,{eventType:Ji.LEFT_DRAG,modifier:Da.CTRL},{eventType:Ji.RIGHT_DRAG,modifier:Da.CTRL}],this.lookEventTypes={eventType:Ji.LEFT_DRAG,modifier:Da.SHIFT};let t=e.ellipsoid??te.default;this.minimumPickingTerrainHeight=te.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=te.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=te.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=te.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new gk(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new ZI,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new U(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new U(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new U,this._strafeEndMousePosition=new U,this._zoomMouseStart=new U(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new U,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function aIt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function cIt(e){return U.equalsEpsilon(e.startPosition,e.endPosition,D.EPSILON14)}var lIt=.4;function uIt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new U,endPosition:new U,motion:new U,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,A=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<lIt){let g=aIt(A,i),m=e.getLastMovement(t,n);if(!l(m)||cIt(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=U.clone(m.startPosition,a.startPosition),a.endPosition=U.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=U.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||U.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let _=e.getStartMousePosition(t,n);o(r,_,a)}}}function fIt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var Lbe=[];function Wl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(Lbe[0]=n,n=Lbe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,A=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(A?(i(e,g,A),fIt(e,r)):o<1&&uIt(s,f,h,o,i,e,r))}}var HH=new In,dIt=new d,hIt=new U,mIt=new d,AIt=new U,pIt=new d,gIt=new d,_It=new d,yIt=new d,Ybe=new d,CIt=new d,EIt=new d,IIt=new d,xIt=new d,bIt=new d,TIt=new d,SIt=new d,wIt=new d,BIt=new d,DIt=new d,$I=new d,Obe=new d,Fbe=new d,AZ={orientation:new rc};function xZ(e,t,n,i,o,r){let s=1;l(r)&&(s=D.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,A=i*h;A=D.clamp(A,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=A*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let _=e._scene,y=_.camera,C=_.mode,E=AZ.orientation;E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll;let I=n.inertiaEnabled??U.equals(t,e._zoomMouseStart),b=e._zoomingOnVector,S=e._rotatingZoom,B;if(I||(e._zoomMouseStart=U.clone(t,e._zoomMouseStart),l(e._globe)&&C===ie.SCENE2D?(B=y.getPickRay(t,HH).origin,B=d.fromElements(B.y,B.z,B.x)):l(e._globe)&&(B=e_(e,t,dIt)),l(B)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,b=e._zoomingOnVector=!1,S=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){y.zoomIn(m);return}let v=C===ie.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!I||S){if(C===ie.SCENE2D){let P=e._zoomWorldPosition,M=y.position;if(!d.equals(P,M)&&y.positionCartographic.height<e._maxCoord.x*2){let L=y.position.x,p=d.subtract(P,M,mIt);d.normalize(p,p);let x=d.distance(P,M)*m/(y.getMagnitude()*.5);y.move(p,x*.5),(y.position.x<0&&L>0||y.position.x>0&&L<0)&&(B=y.getPickRay(t,HH).origin,B=d.fromElements(B.y,B.z,B.x),e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition))}}else if(C===ie.SCENE3D){let P=d.normalize(y.position,Ybe);if(e._cameraUnderground||e._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(d.dot(y.direction,P))<.6)v=!0;else{let M=_.canvas,L=AIt;L.x=M.clientWidth/2,L.y=M.clientHeight/2;let p=e_(e,L,pIt);if(!l(p))v=!0;else if(y.positionCartographic.height<1e6)if(d.dot(y.direction,P)>=-.5)v=!0;else{let x=EIt;d.clone(y.position,x);let T=e._zoomWorldPosition,w=CIt;if(w=d.normalize(T,w),d.dot(w,P)<0)return;let R=DIt,O=bIt;d.clone(y.direction,O),d.add(x,d.multiplyByScalar(O,1e3,$I),R);let k=TIt,Q=SIt;d.subtract(T,x,k),d.normalize(k,Q);let z=d.dot(P,Q);if(z>=0){e._zoomMouseStart.x=-1;return}let F=Math.acos(-z),H=d.magnitude(x),W=d.magnitude(T),Z=H-m,Y=d.magnitude(k),$=Math.asin(D.clamp(Y/W*Math.sin(F),-1,1)),X=Math.asin(D.clamp(Z/W*Math.sin(F),-1,1)),he=$-X+F,ge=IIt;d.normalize(x,ge);let fe=xIt;fe=d.cross(Q,ge,fe),fe=d.normalize(fe,fe),d.normalize(d.cross(ge,fe,$I),O),d.multiplyByScalar(d.normalize(R,$I),d.magnitude(R)-m,R),d.normalize(x,x),d.multiplyByScalar(x,Z,x);let ye=wIt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,Obe),d.multiplyByScalar(O,Math.sin(he),Fbe),$I),Z,ye),d.add(x,ye,x),d.normalize(R,ge),d.normalize(d.cross(ge,fe,$I),O);let xe=BIt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,Obe),d.multiplyByScalar(O,Math.sin(he),Fbe),$I),d.magnitude(R),xe),d.add(R,xe,R),d.clone(x,y.position),d.normalize(d.subtract(R,x,$I),y.direction),d.clone(y.direction,y.direction),d.cross(y.direction,y.up,y.right),d.cross(y.right,y.direction,y.up),y.setView(AZ);return}else{let x=d.normalize(p,gIt),T=d.normalize(e._zoomWorldPosition,_It),w=d.dot(T,x);if(w>0&&w<1){let R=D.acosClamped(w),O=d.cross(T,x,yIt),k=Math.abs(R)>D.toRadians(20)?y.positionCartographic.height*.75:y.positionCartographic.height-m,Q=m/k;y.rotate(O,R*Q)}}}}e._rotatingZoom=!v}if(!I&&v||b){let P,M=eo.worldToWindowCoordinates(_,e._zoomWorldPosition,hIt);C!==ie.COLUMBUS_VIEW&&U.equals(t,e._zoomMouseStart)&&l(M)?P=y.getPickRay(M,HH):P=y.getPickRay(t,HH);let L=P.direction;(C===ie.COLUMBUS_VIEW||C===ie.SCENE2D)&&d.fromElements(L.y,L.z,L.x,L),y.move(L,m),e._zoomingOnVector=!0}else y.zoomIn(m);e._cameraUnderground||y.setView(AZ)}var vIt=new In,PIt=new In,RIt=new d;function MIt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,vIt).origin,s=o.getPickRay(n.endPosition,PIt).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,RIt),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function Qbe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;xZ(e,t,n,e.zoomFactor,o.getMagnitude())}var NIt=new U,LIt=new U;function kbe(e,t,n){if(l(n.angleAndHeight)){OIt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=NIt;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=U.normalize(c,c);let u=LIt;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=U.normalize(u,u);let f=D.acosClamped(c.x);c.y<0&&(f=D.TWO_PI-f);let h=D.acosClamped(u.x);u.y<0&&(h=D.TWO_PI-h);let A=h-f;o.twistRight(A)}function OIt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function FIt(e){let t=e._scene.mapMode2D===wu.ROTATE;N.equals(N.IDENTITY,e._scene.camera.transform)?(Wl(e,e.enableTranslate,e.translateEventTypes,MIt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,Qbe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Wl(e,e.enableRotate,e.tiltEventTypes,kbe,e.inertiaSpin,"_lastInertiaTiltMovement")):(Wl(e,e.enableZoom,e.zoomEventTypes,Qbe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Wl(e,e.enableRotate,e.translateEventTypes,kbe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var qbe=new In,QIt=new d,kIt=new d;function e_(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,QIt)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,qbe),u=o.pickWorldCoordinates(c,i,a,kIt),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var UIt=new Ae;function JH(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ie.SCENE3D){let c=t.cartesianToCartographic(i.position,UIt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var GIt=new d;function Kbe(e,t){let n=t.origin,i=t.direction,o=JH(e),r=d.normalize(n,GIt),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function Xbe(e,t,n,i){let o=d.distance(t.origin,n),r=JH(e),s=D.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),In.getPoint(t,o,i)}function Jbe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=JH(e))):o=JH(e),In.getPoint(t,o,i)}var zIt=new U;function Zbe(e,t){let n=t.endPosition,i=U.subtract(t.endPosition,t.startPosition,zIt),o=e._strafeEndMousePosition;U.add(o,i,o),t.endPosition=o,bZ(e,t,e._strafeStartPosition),t.endPosition=n}var Ube=new In,VIt=new In,pZ=new d,HIt=new d,WIt=new d,jIt=new d,YIt=new mn(d.UNIT_X,0),qIt=new U,KIt=new U;function XIt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){Mf(e,t,n);return}if(e._strafing){Zbe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=U.clone(n.startPosition,qIt),a=U.clone(n.endPosition,KIt),c=o.getPickRay(s,Ube),u=d.clone(d.ZERO,jIt),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=e_(e,s,pZ),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let I=h;r&&(I=Jbe(e,c,h,pZ)),U.clone(t,e._strafeMousePosition),U.clone(t,e._strafeEndMousePosition),d.clone(I,e._strafeStartPosition),e._strafing=!0,bZ(e,n,e._strafeStartPosition);return}let A=mn.fromPointNormal(u,f,YIt);c=o.getPickRay(s,Ube);let g=hi.rayPlane(c,A,pZ),m=o.getPickRay(a,VIt),_=hi.rayPlane(m,A,HIt);if(!l(g)||!l(_)){e._looking=!0,Mf(e,t,n),U.clone(t,e._translateMousePosition);return}let y=d.subtract(g,_,WIt),C=y.x;y.x=y.y,y.y=y.z,y.z=C;let E=d.magnitude(y);E>D.EPSILON6&&(d.normalize(y,y),o.move(y,E))}var $be=new U,YH=new In,qH=new d,JIt=new d,eTe=new N,ZIt=new N,$It=new d,ext=new mn(d.UNIT_X,0),gZ=new d,CZ=new Ae,tTe=new N,txt=new Le,nxt=new J,KH=new d;function ixt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){Mf(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,oxt(e,t,n)):rxt(e,t,n)}function oxt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=$be;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,YH),c=d.UNIT_X,u=a.origin,f=a.direction,h,A=d.dot(c,f);if(Math.abs(A)>D.EPSILON6&&(h=-d.dot(c,u)/A),!l(h)||h<=0){e._looking=!0,Mf(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,qH);d.add(u,g,g);let m=i.mapProjection,_=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let y=m.unproject(g,CZ);_.cartographicToCartesian(y,g);let C=kt.eastNorthUpToFixedFrame(g,_,eTe),E=e._globe,I=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=N.clone(o.transform,tTe);o._setTransform(C),Rf(e,t,n,d.UNIT_Z),o._setTransform(b),e._globe=E,e._ellipsoid=I;let S=I.maximumRadius;e._rotateFactor=1/S,e._rotateRateRangeAdjustment=S}function rxt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(U.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,qH);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=e_(e,t,qH)),!l(s)){a=o.getPickRay(t,YH);let p=a.origin,x=a.direction,T,w=d.dot(c,x);if(Math.abs(w)>D.EPSILON6&&(T=-d.dot(c,p)/w),!l(T)||T<=0){e._looking=!0,Mf(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(x,T,qH),d.add(p,s,s)}r&&(l(a)||(a=o.getPickRay(t,YH)),Xbe(e,a,s,s)),U.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=$be;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,YH);let h=d.clone(d.ZERO,$It);h.x=s.x;let A=mn.fromPointNormal(h,c,ext),g=hi.rayPlane(a,A,JIt),m=o._projection,_=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let y=m.unproject(s,CZ);_.cartographicToCartesian(y,s);let C=kt.eastNorthUpToFixedFrame(s,_,eTe),E;l(g)?(d.fromElements(g.y,g.z,g.x,g),y=m.unproject(g,CZ),_.cartographicToCartesian(y,g),E=kt.eastNorthUpToFixedFrame(g,_,ZIt)):E=C;let I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=N.clone(o.transform,tTe);o._setTransform(C);let v=d.cross(d.UNIT_Z,d.normalize(o.position,gZ),gZ),P=d.dot(o.right,v);if(Rf(e,t,n,S,!1,!0),o._setTransform(E),P<0){let p=n.startPosition.y-n.endPosition.y;(r&&p<0||!r&&p>0)&&(S=void 0);let x=o.constrainedAxis;o.constrainedAxis=void 0,Rf(e,t,n,S,!0,!1),o.constrainedAxis=x}else Rf(e,t,n,S,!0,!1);if(l(o.constrainedAxis)){let p=d.cross(o.direction,o.constrainedAxis,KH);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,o.right)<0&&d.negate(p,p),d.cross(p,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(B),e._globe=I,e._ellipsoid=b;let M=b.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let L=d.clone(o.positionWC,gZ);if(e.enableCollisionDetection&&wZ(e,!0),!d.equals(o.positionWC,L)){o._setTransform(E),o.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(o.position)>p&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(p),o.position));let x=d.angleBetween(L,o.position),T=d.cross(L,o.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,txt),R=J.fromQuaternion(w,nxt);J.multiplyByVector(R,o.direction,o.direction),J.multiplyByVector(R,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(B)}}var nTe=new U,iTe=new In,oTe=new d;function sxt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=nTe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,iTe),u=c.origin,f=c.direction,h=o.position.z,A;h<e._minimumPickingTerrainHeight&&(A=e_(e,a,oTe));let g;if(l(A)&&(g=d.distance(u,A)),s){let m=Kbe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}xZ(e,t,n,e.zoomFactor,g)}function axt(e){let n=e._scene.camera;if(!N.equals(N.IDENTITY,n.transform))Wl(e,e.enableRotate,e.rotateEventTypes,Rf,e.inertiaSpin,"_lastInertiaSpinMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sTe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),Wl(e,e.enableTilt,e.tiltEventTypes,ixt,e.inertiaSpin,"_lastInertiaTiltMovement"),Wl(e,e.enableTranslate,e.translateEventTypes,XIt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sxt,e.inertiaZoom,"_lastInertiaZoomMovement"),Wl(e,e.enableLook,e.lookEventTypes,Mf),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var cxt=new In,lxt=new mn(d.UNIT_X,0),uxt=new d,fxt=new d;function bZ(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,cxt),s=d.clone(o.direction,fxt);i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=mn.fromPointNormal(n,s,lxt),c=hi.rayPlane(r,a,uxt);l(c)&&(s=d.subtract(n,c,s),i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var Gbe=new d,rTe=new Ae,EZ=new d,IZ=new te,dxt=new d,hxt=new d,mxt=new d;function Axt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!N.equals(o.transform,N.IDENTITY)){Rf(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,dxt);if(U.equals(t,e._rotateMousePosition)){if(e._looking)Mf(e,t,n,u);else if(e._rotating)Rf(e,t,n);else if(e._strafing)Zbe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=EZ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,IZ),yZ(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,rTe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let A=e_(e,n.startPosition,mxt);if(l(A)){let g=!1,m=o.getPickRay(n.startPosition,qbe);if(r)g=!0,Jbe(e,m,A,A);else{let _=s.geodeticSurfaceNormal(A,hxt);Math.abs(d.dot(m.direction,_))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(A)}g?(U.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,bZ(e,n,e._strafeStartPosition)):(a=d.magnitude(A),c=EZ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,IZ),yZ(e,t,n,s),d.clone(A,e._rotateStartPosition))}else e._looking=!0,Mf(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,Gbe))?(yZ(e,t,n,e._ellipsoid),d.clone(Gbe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,Rf(e,t,n)):(e._looking=!0,Mf(e,t,n,u));U.clone(t,e._rotateMousePosition)}function Rf(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let A=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;A=Math.min(A,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*A*Math.PI*2,_=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let y=e.maximumTiltAngle,C=d.dot(a.direction,i),E=Math.PI-Math.acos(C)+_;E>y&&(_-=E-y)}o||a.rotateRight(m),r||a.rotateUp(_),a.constrainedAxis=u}var _Z=se.clone(se.UNIT_W),zbe=se.clone(se.UNIT_W),WH=new d,Bw=new d,jH=new d,Vbe=new d,pxt=new U,gxt=new U,_xt=new U,yxt=new U,Cxt=new In;function yZ(e,t,n,i){let o=e._scene,r=o.camera,s=U.clone(n.startPosition,pxt),a=U.clone(n.endPosition,gxt),c=i.cartesianToCartographic(r.positionWC,rTe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,_Z),!l(e._globe)&&!U.equalsEpsilon(s,e._panLastMousePosition)&&(u=e_(e,s,_Z)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,Bw),A=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),Bw),g=d.magnitude(A),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,yxt),_=U.subtract(a,s,_xt),y=d.multiplyByScalar(r.rightWC,_.x*m.x,Bw),C=d.normalize(r.positionWC,Ybe),E=r.getPickRay(a,Cxt).direction,I=d.subtract(E,d.projectVector(E,r.rightWC,jH),jH),b=d.angleBetween(I,r.directionWC),S=1;l(r.frustum.fov)&&(S=Math.max(Math.tan(b),.1));let B=Math.abs(d.dot(r.directionWC,C)),v=-_.y*m.y*2/Math.sqrt(S)*(1-B),P=d.multiplyByScalar(E,v,jH);B=Math.abs(d.dot(r.upWC,C));let M=d.multiplyByScalar(r.upWC,-_.y*(1-B)*m.y,Vbe);f=d.add(u,y,zbe),f=d.add(f,P,f),f=d.add(f,M,f),d.clone(f,e._panLastWorldPosition),U.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,_Z),f=r.pickEllipsoid(a,i,zbe)),!l(u)||!l(f)){e._rotating=!0,Rf(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,A=d.mostOrthogonalAxis(h,WH);d.cross(A,h,A),d.normalize(A,A);let g=d.cross(h,A,Bw),m=d.magnitude(u),_=d.dot(h,u),y=Math.acos(_/m),C=d.multiplyByScalar(h,_,jH);d.subtract(u,C,C),d.normalize(C,C);let E=d.magnitude(f),I=d.dot(h,f),b=Math.acos(I/E),S=d.multiplyByScalar(h,I,Vbe);d.subtract(f,S,S),d.normalize(S,S);let B=Math.acos(d.dot(C,A));d.dot(C,g)<0&&(B=D.TWO_PI-B);let v=Math.acos(d.dot(S,A));d.dot(S,g)<0&&(v=D.TWO_PI-v);let P=B-v,M;d.equalsEpsilon(h,r.position,D.EPSILON2)?M=r.right:M=d.cross(h,r.position,WH);let L=d.cross(h,M,WH),p=d.dot(L,d.subtract(u,h,Bw)),x=d.dot(L,d.subtract(f,h,Bw)),T;p>0&&x>0?T=b-y:p>0&&x<=0?d.dot(r.position,h)>0?T=-y-b:T=y+b:T=y-b,r.rotateRight(P),r.rotateUp(T)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),A=d.cross(u,f,WH);if(h<1&&!d.equalsEpsilon(A,d.ZERO,D.EPSILON14)){let g=Math.acos(h);r.rotate(A,g)}}}var Ext=new d,Ixt=new Ae,Hbe=0;function sTe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=nTe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,iTe),h,A=o.cartesianToCartographic(s.position,Ixt).height,g=Math.abs(Hbe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:A<e._minimumPickingTerrainHeight)&&(h=e_(e,u,oTe));let _;if(l(h)&&(_=d.distance(f.origin,h),Hbe=_),c){let C=Kbe(e,f,A);l(_)?_=Math.min(_,C):_=C}l(_)||(_=A);let y=d.normalize(s.position,Ext);xZ(e,t,n,e.zoomFactor,_,d.dot(y,s.direction))}var aTe=new U,XH=new In,_k=new d,xxt=new d,cTe=new N,bxt=new N,lTe=new N,Txt=new Le,Sxt=new J,TZ=new Ae,SZ=new d;function wxt(e,t,n){let o=e._scene.camera;if(!N.equals(o.transform,N.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,SZ);Mf(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,TZ);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,Dxt(e,t,n)):vxt(e,t,n)}var Bxt=new Ae;function Dxt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,Bxt).height;if(a-s-1<D.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=aTe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,XH),h,A=hi.rayEllipsoid(f,i);if(l(A))h=In.getPoint(f,A.start,_k);else if(a>e._minimumTrackBallHeight){let E=hi.grazingAltitudeLocation(f,i);if(!l(E))return;let I=i.cartesianToCartographic(E,TZ);I.height=0,h=i.cartographicToCartesian(I,_k)}else{e._looking=!0;let E=e._ellipsoid.geodeticSurfaceNormal(r.position,SZ);Mf(e,t,n,E),U.clone(t,e._tiltCenterMousePosition);return}let g=kt.eastNorthUpToFixedFrame(h,i,cTe),m=e._globe,_=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let y=N.clone(r.transform,lTe);r._setTransform(g),Rf(e,t,n,d.UNIT_Z),r._setTransform(y),e._globe=m,e._ellipsoid=_;let C=_.maximumRadius;e._rotateFactor=1/C,e._rotateRateRangeAdjustment=C}function vxt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(U.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,_k);else{if(a=e_(e,t,_k),!l(a)){if(c=r.getPickRay(t,XH),u=hi.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,TZ).height<=e._minimumTrackBallHeight){e._looking=!0;let x=e._ellipsoid.geodeticSurfaceNormal(r.position,SZ);Mf(e,t,n,x),U.clone(t,e._tiltCenterMousePosition)}return}a=In.getPoint(c,u.start,_k)}s&&(l(c)||(c=r.getPickRay(t,XH)),Xbe(e,c,a,a)),U.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=aTe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,XH);let A=d.magnitude(a),g=d.fromElements(A,A,A,EZ),m=te.fromCartesian3(g,IZ);if(u=hi.rayEllipsoid(c,m),!l(u))return;let _=d.magnitude(c.origin)>A?u.start:u.stop,y=In.getPoint(c,_,xxt),C=kt.eastNorthUpToFixedFrame(a,i,cTe),E=kt.eastNorthUpToFixedFrame(y,m,bxt),I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=N.clone(r.transform,lTe);r._setTransform(E);let v=d.cross(y,r.positionWC,KH);if(d.dot(r.rightWC,v)<0){let p=n.startPosition.y-n.endPosition.y;(s&&p<0||!s&&p>0)&&(S=void 0);let x=r.constrainedAxis;r.constrainedAxis=void 0,Rf(e,t,n,S,!0,!1),r.constrainedAxis=x}else Rf(e,t,n,S,!0,!1);if(r._setTransform(C),Rf(e,t,n,S,!1,!0),l(r.constrainedAxis)){let p=d.cross(r.direction,r.constrainedAxis,KH);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,r.right)<0&&d.negate(p,p),d.cross(p,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(B),e._globe=I,e._ellipsoid=b;let M=b.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let L=d.clone(r.positionWC,KH);if(e.enableCollisionDetection&&wZ(e,!0),!d.equals(r.positionWC,L)){r._setTransform(E),r.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(r.position)>p&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(p),r.position));let x=d.angleBetween(L,r.position),T=d.cross(L,r.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,Txt),R=J.fromQuaternion(w,Sxt);J.multiplyByVector(R,r.direction,r.direction),J.multiplyByVector(R,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(B)}}var Pxt=new U,Rxt=new U,Wbe=new In,jbe=new In,Mxt=new d,Nxt=new d;function Mf(e,t,n,i){let r=e._scene.camera,s=Pxt;s.x=n.startPosition.x,s.y=0;let a=Rxt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,Wbe),u=r.getPickRay(a,jbe),f=0,h,A;r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction);let g=d.dot(h,A);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,Wbe),u=r.getPickRay(a,jbe),f=0,r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction),g=d.dot(h,A),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=i??m,l(i)){let _=r.direction,y=d.negate(i,Mxt),C=d.equalsEpsilon(_,i,D.EPSILON2),E=d.equalsEpsilon(_,y,D.EPSILON2);if(!C&&!E){g=d.dot(_,i);let I=D.acosClamped(g);f>0&&f>I&&(f=I-D.EPSILON4),g=d.dot(_,y),I=D.acosClamped(g),f<0&&-f>I&&(f=-I+D.EPSILON4);let b=d.cross(i,_,Nxt);r.look(b,f)}else(C&&f<0||E&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function Lxt(e){Wl(e,e.enableRotate,e.rotateEventTypes,Axt,e.inertiaSpin,"_lastInertiaSpinMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sTe,e.inertiaZoom,"_lastInertiaZoomMovement"),Wl(e,e.enableTilt,e.tiltEventTypes,wxt,e.inertiaSpin,"_lastInertiaTiltMovement"),Wl(e,e.enableLook,e.lookEventTypes,Mf)}var Oxt=new N,Fxt=new Ae;function wZ(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ie.SCENE2D||i===ie.MORPHING)return;let o=n.camera,r=n.ellipsoid??te.WGS84,s=n.mapProjection,a,c;N.equals(o.transform,N.IDENTITY)||(a=N.clone(o.transform,Oxt),c=d.magnitude(o.position),o._setTransform(N.IDENTITY));let u=Fxt;i===ie.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let A=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<A&&(t||Math.abs(m)<=.1)&&(u.height=A,i===ie.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}yk.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ie.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var Qxt=new d,kxt=new d;yk.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;N.equals(t.transform,N.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??te.default):(this._globe=void 0,this._ellipsoid=te.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Ur.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Ur.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Ur.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,Qxt),c=d.clone(t.directionWC,kxt);if(i===ie.SCENE2D?FIt(this):i===ie.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,axt(this)):i===ie.SCENE3D&&(this._horizontalRotationAxis=void 0,Lxt(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);wZ(this,u)}this._aggregator.reset()};yk.prototype.isDestroyed=function(){return!1};yk.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var Ck=yk;var Ek=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var Ik=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function t_(){this._sceneFramebuffer=new GI;let e=.125,t=new Array(6);t[0]=new So({fragmentShader:Bu,textureScale:e,forcePowerOfTwo:!0,sampleMode:Bf.LINEAR});let n=t[1]=new So({fragmentShader:Ik,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new U,t[2]=new So({fragmentShader:_C,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new So({fragmentShader:_C,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new So({fragmentShader:Bu,sampleMode:Bf.LINEAR}),this._uCenter=new U,this._uRadius=void 0,t[5]=new So({fragmentShader:Ek,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new Du({stages:t});let o=new qI(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}t_.prototype.get=function(e){return this._stages.get(e)};t_.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var Uxt=new se,uTe=new U,Gxt=new U,fTe=new N;function zxt(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=N.computeViewportTransformation(n,0,1,fTe),u=N.multiplyByPoint(r,o,Uxt),f=kt.pointToGLWindowCoordinates(s,c,o,uTe);u.x+=D.SOLAR_RADIUS;let h=kt.pointToGLWindowCoordinates(a,c,u,u),A=U.magnitude(U.subtract(h,f,h))*30*2,g=Gxt;g.x=A,g.y=A,e._uCenter=U.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,_=t.drawingBufferHeight,y=e._stages,C=y.get(0),E=C.outputTexture.width,I=C.outputTexture.height,b=new Ye;b.width=E,b.height=I,c=N.computeViewportTransformation(b,0,1,fTe),f=kt.pointToGLWindowCoordinates(s,c,o,uTe),g.x*=E/m,g.y*=I/_;let S=C.scissorRectangle;S.x=Math.max(f.x-g.x*.5,0),S.y=Math.max(f.y-g.y*.5,0),S.width=Math.min(g.x,m),S.height=Math.min(g.y,_);for(let B=1;B<4;++B)Ye.clone(S,y.get(B).scissorRectangle)}t_.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};t_.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),zxt(this,t,n),o};t_.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};t_.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};t_.prototype.isDestroyed=function(){return!1};t_.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var xk=t_;function dTe(){this._cachedShowFrustumsShaders={}}function Vxt(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function Hxt(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=He.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,A;for(;(A=h.exec(f))!==null;)r.indexOf(A[1])===-1&&r.push(A[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let u=Vxt(i);return an.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var bk=new G;function Wxt(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=G.fromRandom()),t._debugColor):G.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(bk.red=t.debugOverlappingFrustums&1?1:0,bk.green=t.debugOverlappingFrustums&2?1:0,bk.blue=t.debugOverlappingFrustums&4?1:0,bk.alpha=1,bk):G.WHITE}),n}var jxt=new nt;dTe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=Hxt(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=nt.shallowClone(t,jxt);r.shaderProgram=o,r.uniformMap=Wxt(e,t),r.execute(e.context,n)};var Tk=dTe;function ex(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Fn}ex.fromKeyframeNode=function(e,t,n,i){let o=new ex(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=Yxt(e,s,n),o._orientedBoundingBox=Kxt(e,r,n,o._orientedBoundingBox),o};function Yxt(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=pt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var hTe=new d,qxt=new d;function Kxt(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,hTe),h=d.divideComponents(d.subtract(f,e._paddingBefore,hTe),e.dimensions,qxt);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(ex.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});ex.prototype.hasProperty=function(e){return l(this._metadata[e])};ex.prototype.getNames=function(){return Object.keys(this._metadata)};ex.prototype.getProperty=function(e){return this._metadata[e]};var Sk=ex;var wk=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var Bk=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var Dk=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var vk=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var Pk=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var Rk=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var Dw=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var Mk=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var Nk=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var Lk=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var tx=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var Ok=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var Fk=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var Qk=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var kk=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var Uk=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var Xxt={Z_UP:0,Y_UP:1},Yd=Object.freeze(Xxt);function Jxt(e){let t=new Xp;this.shaderBuilder=t;let n=e._customShader,i=Tt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let A in o)if(o.hasOwnProperty(A)){let g=o[A];t.addUniform(g.type,A,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([Dk]),e.provider.metadataOrder===Yd.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,pe.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",kk,wk,vk,Uk]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([Rk])),t.addFragmentLines([Pk]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),a==="BOX"?t.addFragmentLines([Ok,Mk,tx]):a==="CYLINDER"?t.addFragmentLines([Fk,Dw,Nk,tx]):a==="ELLIPSOID"&&t.addFragmentLines([Qk,Dw,Lk,tx]),t.addFragmentLines([Bk]);let c=e._shape,u=c.shaderDefines;for(let A in u)if(u.hasOwnProperty(A)){let g=u[A];l(g)&&(g=g===!0?void 0:g,t.addDefine(A,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var Gk=Jxt;function Zxt(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=ZH(o[p]),w=`PropertyStatistics_${x}`,R=`PropertyStatistics_${x}`;n.addStruct(w,R,pe.FRAGMENT),n.addStructField(w,T,"min"),n.addStructField(w,T,"max")}let f="MetadataStatistics",h="MetadataStatistics",A="metadataStatistics";n.addStruct(f,h,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=`PropertyStatistics_${x}`,w=x;n.addStructField(f,T,w)}let g="Metadata",m="Metadata",_="metadata";n.addStruct(g,m,pe.FRAGMENT);for(let p=0;p<c;p++){let x=ZH(o[p]);n.addStructField(g,x,i[p])}let y="Attributes",C="Attributes",E="attributes";n.addStruct(y,C,pe.FRAGMENT),n.addStructField(y,"vec3","positionEC"),n.addStructField(y,"vec3","normalEC");let I="Voxel",b="Voxel",S="voxel";n.addStruct(I,b,pe.FRAGMENT),n.addStructField(I,"vec3","viewDirUv"),n.addStructField(I,"float","travelDistance"),n.addStructField(I,"int","stepCount"),n.addStructField(I,"int","tileIndex"),n.addStructField(I,"int","sampleIndex"),n.addStructField(I,"float","distanceToDepthBuffer");let B="FragmentInput";n.addStruct(B,"FragmentInput",pe.FRAGMENT),n.addStructField(B,h,A),n.addStructField(B,m,_),n.addStructField(B,C,E),n.addStructField(B,b,S);let P="Properties",M="Properties",L="properties";n.addStruct(P,M,pe.FRAGMENT);for(let p=0;p<c;p++){let x=ZH(o[p]);n.addStructField(P,x,i[p])}{let p="clearProperties";n.addFunction(p,`${M} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=ZH(o[x],r[x]);n.addFunctionLines(p,[`${L}.${i[x]} = ${T}(0.0);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="sumProperties";n.addFunction(p,`${M} sumProperties(${M} propertiesA, ${M} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = propertiesA.${T} + propertiesB.${T};`])}n.addFunctionLines(p,[`return ${L};`])}{let p="scaleProperties";n.addFunction(p,`${M} scaleProperties(${M} ${L}, float scale)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} scaledProperties = ${L};`]);for(let x=0;x<c;x++)n.addFunctionLines(p,[`scaledProperties.${i[x]} *= scale;`]);n.addFunctionLines(p,["return scaledProperties;"])}{let p="mixProperties";n.addFunction(p,`${M} mixProperties(${M} propertiesA, ${M} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = mix(propertiesA.${T}, propertiesB.${T}, mixFactor);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="copyPropertiesToMetadata";n.addFunction(p,`void copyPropertiesToMetadata(in ${M} ${L}, inout ${m} ${_})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${_}.${T} = ${L}.${T};`])}}if(u){let p="setStatistics";n.addFunction(p,`void setStatistics(inout ${h} ${A})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x],w=o[x],R=pt.getComponentCount(w);for(let O=0;O<R;O++){let k=ebt(w,O),Q=s[x][O],z=a[x][O];!l(Q)||!l(z)||n.addFunctionLines(p,[`${A}.${T}.min${k} = ${mTe(Q)};`,`${A}.${T}.max${k} = ${mTe(z)};`])}}}{let p="getPropertiesFromMegatextureAtUv";n.addFunction(p,`${M} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=o[x],w=r[x],R=$xt(T,w);n.addFunctionLines(p,[`properties.${i[x]} = texture(u_megatextureTextures[${x}], texcoord)${R};`])}n.addFunctionLines(p,[`return ${L};`])}}function ZH(e){if(e===pt.SCALAR)return"float";if(e===pt.VEC2)return"vec2";if(e===pt.VEC3)return"vec3";if(e===pt.VEC4)return"vec4"}function $xt(e){if(e===pt.SCALAR)return".r";if(e===pt.VEC2)return".ra";if(e===pt.VEC3)return".rgb";if(e===pt.VEC4)return""}function mTe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function ebt(e,t){return e===pt.SCALAR?"":`[${t}]`}var zk=Zxt;function tbt(e,t){let n=new Gk(e);zk(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let C="getClippingPlane",E=jg(o,t),I=0,b=E.indexOf(")")+1,S=E.indexOf("{",b)+1,B=E.indexOf("}",S),v=E.slice(I,b),P=E.slice(S,B);i.addFunction(C,v,pe.FRAGMENT),i.addFunctionLines(C,[P])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}),A=t.getViewportQuadVertexArray(),g=e._depthTest,m=new nt({vertexArray:A,primitiveType:Me.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Be.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),_=nt.shallowClone(m,new nt);_.shaderProgram=u,_.pickOnly=!0;let y=nt.shallowClone(m,new nt);if(y.shaderProgram=f,y.pickOnly=!0,l(e._drawCommand)){let C=e._drawCommand;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPick)){let C=e._drawCommandPick;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let C=e._drawCommandPickVoxel;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=_,e._drawCommandPickVoxel=y}var Vk=tbt;var nbt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},vw=Object.freeze(nbt);function ibt(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var Hk=ibt;function Pw(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}Pw.prototype.getTexture=function(e){return this._textures[e]};function obt(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}Pw.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):obt(this,e,t)};function rbt(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?$H(o,r,n):sbt(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function $H(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?pTe(e,n):new Mt({context:n,source:t,sampler:o});return ATe(o)&&r.generateMipmap(),r}function sbt(e,t,n){let{typedArray:i,sampler:o}=e,r=ATe(o),s=o.wrapS===Tn.REPEAT||o.wrapS===Tn.MIRRORED_REPEAT||o.wrapT===Tn.REPEAT||o.wrapT===Tn.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(D.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===Ve.UNSIGNED_BYTE){let h=Hk(i,a,c),A=q_(h);return $H({sampler:o},A,n)}}else{let h=q_(t);return $H(e,h,n)}else return $H(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),pTe(e,n)}function ATe(e){return[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function pTe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Mt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}Pw.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];rbt(this,o,t)}n.length=0};Pw.prototype.isDestroyed=function(){return!1};Pw.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var Wk=Pw;function jk(e){e=e??V.EMPTY_OBJECT,this.mode=e.mode??Wp.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??V.EMPTY_OBJECT,this.varyings=e.varyings??V.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??dy.INHERIT,this._textureManager=new Wk,this._defaultTexture=void 0,this.uniformMap=abt(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},ubt(this),fbt(this)}function abt(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===vw.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=cbt(e,i)):n[i]=lbt(e,i)}return n}function cbt(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function lbt(e,t){return function(){return e.uniforms[t].value}}function nx(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function ubt(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,nx(r,t,o),o=e.usedVariablesVertex.featureIdSet,nx(r,n,o),o=e.usedVariablesVertex.metadataSet,nx(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,nx(s,t,o),o=e.usedVariablesFragment.featureIdSet,nx(s,n,o),o=e.usedVariablesFragment.metadataSet,nx(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;nx(s,a,c)}}function gTe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function nl(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${gTe(t)} is not available in the ${i} shader. Did you mean ${gTe(n)} instead?`;throw new me(o)}}function fbt(e){let t=e.usedVariablesVertex.attributeSet;nl(t,"position","positionMC","vertex"),nl(t,"normal","normalMC","vertex"),nl(t,"tangent","tangentMC","vertex"),nl(t,"bitangent","bitangentMC","vertex"),nl(t,"positionWC","positionMC","vertex"),nl(t,"positionEC","positionMC","vertex"),nl(t,"normalEC","normalMC","vertex"),nl(t,"tangentEC","tangentMC","vertex"),nl(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;nl(n,"position","positionEC","fragment"),nl(n,"normal","normalEC","fragment"),nl(n,"tangent","tangentEC","fragment"),nl(n,"bitangent","bitangentEC","fragment"),nl(n,"normalMC","normalEC","fragment"),nl(n,"tangentMC","tangentEC","fragment"),nl(n,"bitangentMC","bitangentEC","fragment")}jk.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===vw.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};jk.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};jk.prototype.isDestroyed=function(){return!1};jk.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var ix=jk;function n_(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(n_.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});n_.fromMetadataArray=function(e){return new n_({metadata:e})};n_.fromGltf=async function(e){let t=new Xu({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new n_({loader:t})};n_.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=dbt(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function dbt(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,A=e.find(y=>y.name===h);if(!l(A))continue;let g=Gt.toComponentDatatype(s[f]),m=pt.getComponentCount(r[f]),_=A.count*m;u[f]=q.createArrayBufferView(g,A.typedArray.buffer,A.typedArray.byteOffset+A.byteOffset,_)}return u}n_.prototype.isDestroyed=function(){return!1};n_.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var ox=n_;function UA(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._minBounds=UA.DefaultMinBounds.clone(),this._maxBounds=UA.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var hbt=new d,BZ=new d,mbt=new J,Abt=new d,pbt=new d,gbt=new d,_bt=new d,_Te=N.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new N);UA.prototype.update=function(e,t,n,i,o){i=i??t.clone(Abt),o=o??n.clone(pbt),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let r=d.clamp(t,i,o,gbt),s=d.clamp(n,i,o,_bt),a=N.getScale(e,BZ);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=N.clone(e,this.shapeTransform),this.orientedBoundingBox=vZ(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:u}=this;for(let g in u)u.hasOwnProperty(g)&&(u[g]=void 0);let f=0;u.BOX_INTERSECTION_INDEX=f,f+=1,c.renderMinBounds=N.multiplyByPoint(_Te,r,c.renderMinBounds),c.renderMaxBounds=N.multiplyByPoint(_Te,s,c.renderMaxBounds),u.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,A=n;return c.boxUvToShapeUvScale=d.fromElements(2/(h.x===A.x?1:A.x-h.x),2/(h.y===A.y?1:A.y-h.y),2/(h.z===A.z?1:A.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=d.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=f,!0};var e5=new d,DZ=new d;UA.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,a*t),D.lerp(r.y,s.y,a*n),D.lerp(r.z,s.z,a*i),e5),u=d.fromElements(D.lerp(r.x,s.x,a*(t+1)),D.lerp(r.y,s.y,a*(n+1)),D.lerp(r.z,s.z,a*(i+1)),DZ);return vZ(c,u,this.shapeTransform,o)};var yTe=new d;UA.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,yTe),s=d.multiplyByScalar(r,o,yTe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,e5),o,e5),c=d.add(a,s,DZ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),e5),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),DZ);return vZ(h,A,this.shapeTransform,i)};UA.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));UA.DefaultMaxBounds=Object.freeze(new d(1,1,1));function vZ(e,t,n,i){let o=UA.DefaultMinBounds,r=UA.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=N.getTranslation(n,i.center),i.halfAxes=N.getMatrix3(n,i.halfAxes);else{let a=N.getScale(n,BZ),c=d.midpoint(e,t,hbt);i.center=N.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),BZ);let u=N.getRotation(n,mbt);i.halfAxes=J.setScale(u,a,i.halfAxes)}return i}var rx=UA;function i_(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._minBounds=i_.DefaultMinBounds.clone(),this._maxBounds=i_.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new U,cylinderRenderAngleMinMax:new U,cylinderRenderHeightMinMax:new U,cylinderUvToShapeUvRadius:new U,cylinderUvToShapeUvAngle:new U,cylinderUvToShapeUvHeight:new U,cylinderShapeUvAngleMinMax:new U,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var ITe=new d,ybt=new d,Cbt=new d,Ebt=new d,Ibt=new d;i_.prototype.update=function(e,t,n,i,o){i=i??t.clone(ybt),o=o??n.clone(Cbt),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=i_,a=s.y-r.y,c=.5*a,u=D.EPSILON10,f=D.EPSILON3,h=D.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=D.negativePiToPi(t.y),n.y=D.negativePiToPi(n.y),i.y=D.negativePiToPi(i.y),o.y=D.negativePiToPi(o.y);let A=d.maximumByComponent(t,i,Ebt),g=d.minimumByComponent(n,o,Ibt),m=N.getScale(e,ITe);if(g.x===0||A.x>g.x||A.z>g.z||D.equalsEpsilon(m.x,0,void 0,u)||D.equalsEpsilon(m.y,0,void 0,u)||D.equalsEpsilon(m.z,0,void 0,u))return!1;this.shapeTransform=N.clone(e,this.shapeTransform),this.orientedBoundingBox=MZ(A,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let _=t.x===r.x&&n.x===s.x,y=n.y<t.y,C=n.y-t.y+y*a,E=C>c+h&&C<a-h,I=C<c-h,b=C>=c-h&&C<=c+h,S=E||I||b,B=D.equalsEpsilon(t.y,r.y,void 0,f),v=D.equalsEpsilon(n.y,s.y,void 0,f),P=t.z===r.z&&n.z===s.z,M=A.x===r.x,L=g.y<A.y,p=g.y-A.y+L*a,x=p>=c-h&&p<a-h,T=p>h&&p<c-h,w=p<=h,R=x||T||w,{shaderUniforms:O,shaderDefines:k}=this;for(let z in k)k.hasOwnProperty(z)&&(k[z]=void 0);let Q=0;if(k.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=Q,Q+=1,M||(k.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,k.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=Q,Q+=1),O.cylinderRenderRadiusMinMax=U.fromElements(A.x,g.x,O.cylinderRenderRadiusMinMax),A.x===g.x&&(k.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!_){k.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let z=n.x-t.x,F=0,H=1;z!==0&&(F=1/z,H=-t.x/z),O.cylinderUvToShapeUvRadius=U.fromElements(F,H,O.cylinderUvToShapeUvRadius)}if(!P){k.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let z=n.z-t.z,F=0,H=1;z!==0&&(F=2/z,H=-(t.z+1)/z),O.cylinderUvToShapeUvHeight=U.fromElements(F,H,O.cylinderUvToShapeUvHeight)}if(O.cylinderRenderHeightMinMax=U.fromElements(A.z,g.z,O.cylinderRenderHeightMinMax),y&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),R&&(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,k.CYLINDER_INTERSECTION_INDEX_ANGLE=Q,x?(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,Q+=1):T?(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,Q+=2):w&&(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,Q+=2),O.cylinderRenderAngleMinMax=U.fromElements(A.y,g.y,O.cylinderRenderAngleMinMax)),S){k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,B&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),v&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let z=(t.y-r.y)/a,F=(n.y-r.y)/a,H=1-C/a;if(O.cylinderShapeUvAngleMinMax=U.fromElements(z,F,O.cylinderShapeUvAngleMinMax),O.cylinderShapeUvAngleRangeZeroMid=(F+.5*H)%1,C<=h)O.cylinderUvToShapeUvAngle=U.fromElements(0,1,O.cylinderUvToShapeUvAngle);else{let W=a/C,Z=-(t.y-r.y)/C;O.cylinderUvToShapeUvAngle=U.fromElements(W,Z,O.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=Q,!0};var t5=new d,RZ=new d;i_.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,t*a),D.lerp(r.y,s.y,n*a),D.lerp(r.z,s.z,i*a),t5),u=d.fromElements(D.lerp(r.x,s.x,(t+1)*a),D.lerp(r.y,s.y,(n+1)*a),D.lerp(r.z,s.z,(i+1)*a),RZ);return MZ(c,u,this.shapeTransform,o)};var CTe=new d;i_.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,CTe),s=d.multiplyByScalar(r,o,CTe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,t5),o,t5),c=d.add(a,s,RZ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),t5),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),RZ);return MZ(h,A,this.shapeTransform,i)};i_.DefaultMinBounds=Object.freeze(new d(0,-D.PI,-1));i_.DefaultMaxBounds=Object.freeze(new d(1,+D.PI,1));var xbt=5,bbt=new Array(xbt),Tbt=new d,Sbt=new J,wbt=new N,Bbt=new N,Dbt=new N,PZ=new N,vbt=new d,Pbt=new d,Rbt=new d,xTe=new Array(8);for(let e=0;e<8;e++)xTe[e]=new d;function ETe(e,t,n){return Math.abs(se.dot(e,t))<n}function Mbt(e){let t=N.getColumn(e,0,vbt),n=N.getColumn(e,1,Pbt),i=N.getColumn(e,2,Rbt),o=D.EPSILON4;return ETe(t,n,o)&&ETe(n,i,o)}function Nbt(e,t){let n=xTe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)N.multiplyByPoint(e,n[i],n[i]);return Fn.fromPoints(n,t)}function MZ(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+D.TWO_PI:t.y,c=e.z,u=t.z,f=a-s,h=s+f*.5,A=bbt,g=0;A[g++]=s,A[g++]=a,A[g++]=h,f>D.PI&&(A[g++]=h-D.PI_OVER_TWO,A[g++]=h+D.PI_OVER_TWO);let m=Number.POSITIVE_INFINITY,_=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(let O=0;O<g;++O){let k=A[O]-h,Q=Math.cos(k),z=Math.sin(k),F=Q*o,H=z*o,W=Q*r,Z=z*r;m=Math.min(m,F,W),_=Math.min(_,H,Z),y=Math.max(y,F,W),C=Math.max(C,H,Z)}let E=y-m,I=C-_,b=u-c,S=(m+y)*.5,B=(_+C)*.5,v=(c+u)*.5,P=d.fromElements(S,B,v,Tbt),M=J.fromRotationZ(h,Sbt),L=d.fromElements(E,I,b,ITe),p=N.fromScale(L,Dbt),x=N.fromRotation(M,Bbt),T=N.fromTranslation(P,wbt),w=N.multiplyTransformation(x,N.multiplyTransformation(T,p,PZ),PZ),R=N.multiplyTransformation(n,w,PZ);return Mbt(R)?Fn.fromTransformation(R,i):Nbt(R,i)}var sx=i_;function o_(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._rectangle=new ae,this._minimumHeight=o_.DefaultMinBounds.z,this._maximumHeight=o_.DefaultMaxBounds.z,this._ellipsoid=new te,this._translation=new d,this._rotation=new J,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new U,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new U,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new U,ellipsoidUvToShapeUvLatitude:new U,ellipsoidRenderLatitudeSinMinMax:new U,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new U},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var Lbt=new d,Obt=new d,Fbt=new d,Qbt=new d,kbt=new d,Ubt=new d,Gbt=new d,zbt=new d,Vbt=new J,bTe=new d,TTe=new d,Hbt=new ae;o_.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=o_;i=i??r,o=o??s;let a=D.EPSILON10,c=D.EPSILON3,u=D.EPSILON10,f=D.EPSILON10,h=D.EPSILON3,A=N.getScale(e,zbt),g=d.clone(r,Lbt);g.z=-d.minimumComponent(A);let m=d.clamp(t,g,s,Obt),_=d.clamp(n,g,s,Fbt),y=d.clamp(i,g,s,Qbt),C=d.clamp(o,g,s,kbt),E=d.maximumByComponent(m,y,Ubt),I=d.minimumByComponent(_,C,Gbt),b=d.add(A,d.fromElements(_.z,_.z,_.z,bTe),bTe),S=d.maximumComponent(b),B=d.add(A,d.fromElements(I.z,I.z,I.z,TTe),TTe);if(E.y>I.y||E.y===s.y||I.y===r.y||E.z>I.z||D.equalsEpsilon(B,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,_.x,_.y),this._translation=N.getTranslation(e,this._translation),this._rotation=N.getRotation(e,this._rotation),this._ellipsoid=te.fromCartesian3(A,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=_.z;let v=ae.fromRadians(E.x,E.y,I.x,I.y,Hbt);this.orientedBoundingBox=NZ(v,E.z,I.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=N.fromRotationTranslation(J.setScale(this._rotation,b,Vbt),this._translation,this.shapeTransform),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let P=s.x-r.x,M=.5*P,L=I.x<E.x,p=I.x-E.x+L*P,x=p<=u,T=p>=M-u&&p<P-u,w=p>u&&p<M-u,R=x||T||w,O=_.x<m.x,k=_.x-m.x+O*P,Q=k>M+u&&k<P-u,z=k>=M-u&&k<=M+u,F=k<M-u,H=Q||z||F,W=I.y<-h,Z=I.y>=-h&&I.y<=+h,Y=I.y>+h&&I.y<s.y-f,$=W||Z||Y,X=E.y>r.y+f&&E.y<-h,he=E.y>=-h&&E.y<=+h,ge=E.y>+h,fe=X||he||ge,ye=$||fe,xe=_.y-m.y,ve=_.y<-h,Te=_.y>=-h&&_.y<=+h,ke=_.y>+h&&_.y<s.y-f,Ge=ve||Te||ke,Ke=m.y>r.y+f&&m.y<-h,tt=m.y>=-h&&m.y<=+h,en=m.y>+h,nn=Ge||(Ke||tt||en),{shaderUniforms:qt,shaderDefines:Rt}=this;for(let Et in Rt)Rt.hasOwnProperty(Et)&&(Rt[Et]=void 0);qt.ellipsoidRadiiUv=d.divideByScalar(b,S,qt.ellipsoidRadiiUv);let{x:Si,z:gi}=qt.ellipsoidRadiiUv,Ft=gi/Si;qt.eccentricitySquared=1-Ft*Ft,qt.evoluteScale=U.fromElements((Si*Si-gi*gi)/Si,(gi*gi-Si*Si)/gi,qt.evoluteScale),qt.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(qt.ellipsoidRadiiUv,qt.ellipsoidRadiiUv,qt.ellipsoidInverseRadiiSquaredUv),qt.ellipsoidInverseRadiiSquaredUv);let St=0;Rt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=St,St+=1,Rt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=St,St+=1,qt.clipMinMaxHeight=U.fromElements((E.z-_.z)/S,(I.z-_.z)/S,qt.clipMinMaxHeight);let oi=(_.z-m.z)/S;if(qt.ellipsoidInverseHeightDifferenceUv=1/oi,m.z===_.z&&(qt.ellipsoidInverseHeightDifferenceUv=0),R&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=St,T?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,St+=1):w?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,St+=2):x&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,St+=2),qt.ellipsoidRenderLongitudeMinMax=U.fromElements(E.x,I.x,qt.ellipsoidRenderLongitudeMinMax)),H)if(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,_.x<m.x&&(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),k<=u)qt.ellipsoidUvToShapeUvLongitude=U.fromElements(0,1,qt.ellipsoidUvToShapeUvLongitude);else{let Lo=P/k,Ho=-(m.x-r.x)/k;qt.ellipsoidUvToShapeUvLongitude=U.fromElements(Lo,Ho,qt.ellipsoidUvToShapeUvLongitude)}if(R){let Et=D.equalsEpsilon(E.x,r.x,void 0,c),Lo=D.equalsEpsilon(I.x,s.x,void 0,c);Et&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Lo&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Ho=(m.x-r.x)/P,Pa=(_.x-r.x)/P,Er=(I.x-r.x)/P,Lr=1-p/P,Fe=(Er+.5*Lr)%1;qt.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Ho,Pa,Fe,qt.ellipsoidShapeUvLongitudeMinMaxMid)}if(ye&&(fe&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=St,X?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,St+=1):he?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,St+=1):ge&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,St+=2)),$&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=St,W?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,St+=2):Z?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,St+=1):Y&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,St+=1)),qt.ellipsoidRenderLatitudeSinMinMax=U.fromElements(Math.sin(E.y),Math.sin(I.y),qt.ellipsoidRenderLatitudeSinMinMax)),nn)if(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,xe<f)qt.ellipsoidUvToShapeUvLatitude=U.fromElements(0,1,qt.ellipsoidUvToShapeUvLatitude);else{let Lo=(s.y-r.y)/xe,Ho=(r.y-m.y)/xe;qt.ellipsoidUvToShapeUvLatitude=U.fromElements(Lo,Ho,qt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=St,!0};var BTe=new ae;o_.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,A=ae.subsection(this._rectangle,s,c,a,u,BTe),g=D.lerp(this._minimumHeight,this._maximumHeight,f),m=D.lerp(this._minimumHeight,this._maximumHeight,h);return NZ(A,g,m,this._ellipsoid,this._translation,this._rotation,o)};var STe=new d,wTe=new d,Wbt=new d;o_.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,STe),s=d.multiplyByScalar(r,o,STe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,wTe),o,wTe),c=d.add(a,s,Wbt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,BTe),f=D.lerp(this._minimumHeight,this._maximumHeight,a.z),h=D.lerp(this._minimumHeight,this._maximumHeight,c.z);return NZ(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function NZ(e,t,n,i,o,r,s){return s=Fn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=J.multiply(s.halfAxes,r,s.halfAxes),s}o_.DefaultMinBounds=Object.freeze(new d(-D.PI,-D.PI_OVER_TWO,-te.WGS84.minimumRadius));o_.DefaultMaxBounds=Object.freeze(new d(D.PI,D.PI_OVER_TWO,10*te.WGS84.maximumRadius));var ax=o_;var Nf={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};Nf.getMinBounds=function(e){switch(e){case Nf.BOX:return rx.DefaultMinBounds;case Nf.ELLIPSOID:return ax.DefaultMinBounds;case Nf.CYLINDER:return sx.DefaultMinBounds}};Nf.getMaxBounds=function(e){switch(e){case Nf.BOX:return rx.DefaultMaxBounds;case Nf.ELLIPSOID:return ax.DefaultMaxBounds;case Nf.CYLINDER:return sx.DefaultMaxBounds}};Nf.getShapeConstructor=function(e){switch(e){case Nf.BOX:return rx;case Nf.ELLIPSOID:return ax;case Nf.CYLINDER:return sx}};var ec=Object.freeze(Nf);function Em(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Em.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Em.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Em({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Em.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Em.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)DTe(this,t)};Em.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,DTe(this,i),t};Em.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],vTe(this,0)),this._array[e-1]=void 0,t};Em.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=LZ(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&vTe(this,n)}return this._array[e-1]=void 0,t};Em.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Em.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[LZ(this,1,2)?1:2]};function n5(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function Yk(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function LZ(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function DTe(e,t){if(t===0)return;let n=Math.floor(D.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=Yk(e,t,i);for(o!==n&&(n5(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(Yk(e,t,r)!==o)break;n5(e,t,r),t=r}}function vTe(e,t){let n=e._length,i=Math.floor(D.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){Yk(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;Yk(e,f,r)===i&&(r=f)}}if(Yk(e,r,t)===i&&(n5(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);LZ(e,r,a)===i&&n5(e,r,a)}t=r}}var cx=Em;var OZ=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function qk(e,t){this.spatialNode=e,this.keyframe=t,this.state=OZ.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}qk.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=OZ.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};qk.priorityComparator=function(e,t){return e.priority-t.priority};qk.searchComparator=function(e,t){return e.keyframe-t.keyframe};qk.LoadState=OZ;var Do=qk;function CC(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===Gt.UNSIGNED_SHORT&&(i=Gt.FLOAT32),i===Gt.FLOAT32&&!e.floatingPointTexture)throw new ce("Floating point texture not supported");let s=jbt(i),a=Ybt(n,e.webgl2),c=Gt.getSizeInBytes(i),u=qbt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),A=f*t.x,g=h*t.y,m=Math.floor(u/A),_=Math.floor(u/g);if(m===0||_===0)throw new ce("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*_,this.regionCountPerMegatexture=new U(m,_),this.voxelCountPerRegion=new U(A,g),this.sliceCountPerRegion=new U(f,h),this.voxelSizeUv=new U(1/u,1/u),this.sliceSizeUv=new U(t.x/u,t.y/u),this.regionSizeUv=new U(A/u,g/u),this.texture=new Mt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})});let y=Gt.toComponentDatatype(i);this.tileVoxelDataTemp=q.createTypedArray(y,A*g*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new Kbt(C);for(let C=0;C<this.maximumTileCount;C++){let E=this.nodes[C];E.previousNode=C>0?this.nodes[C-1]:void 0,E.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function jbt(e){if(e===Gt.FLOAT32||e===Gt.FLOAT64)return Ve.FLOAT;if(e===Gt.UINT8)return Ve.UNSIGNED_BYTE}function Ybt(e,t){if(e===1)return t?$e.RED:$e.LUMINANCE;if(e===2)return t?$e.RG:$e.LUMINANCE_ALPHA;if(e===3)return $e.RGB;if(e===4)return $e.RGBA}function qbt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(Yt.maximumTextureSize,D.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function Kbt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}CC.prototype.add=function(e){if(this.isFull())throw new me("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};CC.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new me("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};CC.prototype.isFull=function(){return this.emptyList===void 0};CC.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===Gt.UNSIGNED_SHORT&&(i=Gt.FLOAT32);let o=Gt.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=D.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let A=Math.floor(f/c),g=Math.floor(f/u);if(A*g>=e)break;f*=2}return f*f*n*o};CC.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,_=Math.floor(g/r.x)*o.y;for(let y=0;y<o.y;y++){let C=Xbt(o,y,g),E=(_+y)*s.x+m;for(let I=0;I<o.x;I++){let b=C+I,S=E+I;for(let B=0;B<a;B++)i[S*a+B]=n[b*a+B]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,A={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(A)};function Xbt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}CC.prototype.isDestroyed=function(){return!1};CC.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var Rw=CC;function qd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Fn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var Jbt=new d;qd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=J.getScale(this.orientedBoundingBox.halfAxes,Jbt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};qd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,A=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=A.map(([g,m,_,y])=>new qd(g,m,_,y,this,e,this.dimensions))};qd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};qd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,D.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var PTe={keyframe:0};function Kk(e,t){return PTe.keyframe=e,Wo(t,PTe,Do.searchComparator)}qd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let A=Zbt(i,h),g=h[A],m=o===i||i<g.keyframe?A:Math.min(A+1,h.length-1),_=h[m],y=i-g.keyframe,C=RTe(n-t.level,y);C<a&&(a=C,r=g);let E=_.keyframe-o,I=RTe(n-t.level,E);if(I<c&&(c=I,s=_),y===0&&E===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:D.clamp((e-u)/(f-u),0,1)};function Zbt(e,t){let n=Kk(e,t);return n<0?D.clamp(~n-1,0,t.length-1):n}function RTe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}qd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};qd.prototype.createKeyframeNode=function(e){let t=Kk(e,this.keyframeNodes);if(t<0){t=~t;let n=new Do(this,e);this.keyframeNodes.splice(t,0,n)}};qd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=Kk(n,this.keyframeNodes);if(i<0)throw new me("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=Kk(n,this.renderableKeyframeNodes);if(o<0)throw new me("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};qd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new me("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=Kk(e.keyframe,i);if(o>=0)throw new me("Keyframe already renderable");o=~o,i.splice(o,0,e)};qd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var Xk=qd;function EC(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===Yd.Y_UP){let I=h.y;h.y=h.z,h.z=I}!l(i)&&l(o.maximumTileCount)&&(i=fTt(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let I=0;I<c.length;I++){let b=c[I],S=pt.getComponentCount(b),B=u[I];this.megatextures[I]=new Rw(t,h,S,B,i),this.textureMemoryByteLength+=this.megatextures[I].textureMemoryByteLength}let A=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new Xk(0,0,0,0,void 0,g,r),this._priorityQueue=new cx({maximumLength:A,comparator:Do.priorityComparator}),this._highPriorityKeyframeNodes=new Array(A),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(A),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,FZ(m,1,n-2,0);let _=9,y=2048,C=Math.floor(y/_),E=Math.ceil(A/C);this.internalNodeTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,flipY:!1,width:y,height:E,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),this.internalNodeTilesPerRow=C,this.internalNodeTexelSizeUv=new U(1/y,1/E),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new U}EC.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function FZ(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,FZ(e,t,o-1,i+1),FZ(e,o+1,n,i+1)}EC.simultaneousRequestCountMaximum=50;EC.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let A=h>=2;if(A&&!l(this.leafNodeTexture)){let I=Math.floor(512),b=Math.ceil(s/I);this.leafNodeTexture=new Mt({context:r,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,flipY:!1,width:1024,height:b,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),this.leafNodeTexelSizeUv=U.fromElements(1/1024,1/b,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=I}else!A&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=D.clamp(t,0,a-1),n&&MTe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Li();tTt(this,e),nTt(this,e);let m=Li();aTt(this,h,c);let _=Li(),y=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||y){let C=m-g,E=_-m,I=_-g;sTt(this,e,C,E,I)}};EC.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};EC.prototype.isDestroyed=function(){return!1};EC.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function MTe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];MTe(e,i)}}function $bt(e,t){if(e._simultaneousRequestCount>=EC.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?Do.LoadState.PROCESSING:Do.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=Do.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=Do.LoadState.RECEIVING,u.then(s).catch(a))}function eTt(e){return e/(1+e)}function tTt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),NTe(e.rootNode,Os.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function nTt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(iTt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===Do.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===Do.LoadState.UNLOADED&&$bt(e,f),f.state===Do.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!oTt(h.metadata,e)){f.content=void 0,f.state=Do.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let A=0;if(n.isFull()){A=i-1-a,a++;let g=o[A];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else A=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=Do.LoadState.LOADED,o[A]=f,e._primitive.tileLoad.raiseEvent()}}}function iTt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function oTt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],A=f*s;if(h.length!==A)return!1}return!0}function NTe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===Os.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let A=n._primitive,g=A._shape,m=A.screenSpaceError,_=n._priorityQueue,y=n._keyframeCount,C=D.clamp(Math.floor(n._keyframeLocation),0,y-2),E=C+1;if(y===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==y)for(let v=0;v<y;v++)e.createKeyframeNode(v);let{screenSpaceError:I,keyframeNodes:b}=e,S=eTt(I),B=!1;for(let v=0;v<b.length;v++){let P=b[v];P.priority=10*S+rTt(C,P.keyframe,E,n),P.state!==Do.LoadState.UNAVAILABLE&&P.state!==Do.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&_.insert(P),P.state===Do.LoadState.LOADED&&(B=!0)}if(I<m||!B){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let v=0;v<8;v++){let P=e.children[v];NTe(P,t,n,i)}}function rTt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return D.lerp(a,s,.15+.85*s)}function sTt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Do.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let B=0;B<a;B++){let v=new Array(r).fill(0);c[B]=v,u[B]=0}function h(B){let v=B.keyframeNodes;for(let P=0;P<v.length;P++){let M=v[P],L=M.keyframe,p=M.state;c[p][L]+=1,u[p]+=1,f++}if(l(B.children))for(let P=0;P<8;P++){let M=B.children[P];h(M)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[Do.LoadState.LOADED],e._primitive.statistics.visited=f;let A=u[Do.LoadState.RECEIVING],g=u[Do.LoadState.PROCESSING],m=A!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(A,g),!0}),e._primitive.statistics.numberOfPendingRequests=A,e._primitive.statistics.numberOfTilesProcessing=g,m&&(A===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let y=`KEYFRAMES: ${c[Do.LoadState.LOADED]}`,C=`UNLOADED: ${u[Do.LoadState.UNLOADED]} | RECEIVING: ${u[Do.LoadState.RECEIVING]} | PROCESSING: ${u[Do.LoadState.PROCESSING]} | LOADED: ${u[Do.LoadState.LOADED]} | FAILED: ${u[Do.LoadState.FAILED]} | UNAVAILABLE: ${u[Do.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,E=Math.round(n*100)/100,I=Math.round(i*100)/100,b=Math.round(o*100)/100,S=`LOAD: ${E} | OCT: ${I} | ALL: ${b}`;console.log(`${y} || ${C} || ${S}`)}var i5={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function aTt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,_,y,C){let E=!1;if(l(g.children))for(let I=0;I<8;I++){let b=g.children[I];b.computeSurroundingRenderableKeyframeNodes(o),b.isRenderable(r)&&(E=!0)}if(E){u[C]=i5.INTERNAL<<16|m,u[_]=y,a++,y=m,C=y*9+1;for(let I=0;I<8;I++){let b=g.children[I];m=a,_=m*9+0,h(b,m,_,y,C+I)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let I=c*5,b=g.renderableKeyframeNodePrevious,S=g.level-b.spatialNode.level,B=b.spatialNode.parent,v=l(B)?B.renderableKeyframeNodePrevious:b,P=cTt(g,i,n),M=S,L=1,p=b.megatextureIndex,x=v.megatextureIndex;f[I+0]=P,f[I+1]=M,f[I+2]=L,f[I+3]=p,f[I+4]=x,u[C]=i5.LEAF<<16|c}else{let I=g.renderableKeyframeNodePrevious,S=g.level-I.spatialNode.level===0?i5.LEAF:i5.PACKED_LEAF_FROM_PARENT;u[C]=S<<16|I.megatextureIndex}c++}}let A=e.rootNode;A.computeSurroundingRenderableKeyframeNodes(o),A.isRenderable(r)&&h(A,0,0,0,0),lTt(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&uTt(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function cTt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return D.clamp(s,0,1)}function lTt(e,t,n,i){let o=$e.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let A=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=A>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function uTt(e,t,n,i){let o=$e.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let A=0;A<s;A++){let g=e[A*r+0],m=e[A*r+1],_=e[A*r+2],y=e[A*r+3],C=e[A*r+4],E=D.clamp(Math.floor(65536*g),0,65535);u[A*8+0]=E>>>0&255,u[A*8+1]=E>>>8&255,u[A*8+2]=m&255,u[A*8+3]=_&255,u[A*8+4]=y>>>0&255,u[A*8+5]=y>>>8&255,u[A*8+6]=C>>>0&255,u[A*8+7]=C>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function fTt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=pt.getComponentCount(a);o+=Rw.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var Jk=EC;function GA(e){e=e??V.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??GA.DefaultProvider,this._traversal=void 0,this._statistics=new Wh,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._exaggeratedModelMatrix=N.clone(this._modelMatrix),this._compoundModelMatrix=new N,this._compoundModelMatrixOld=new N,this._customShader=e.customShader??GA.DefaultCustomShader,this._customShaderCompilationEvent=new _e,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new N,this._transformDirectionWorldToUv=new J,this._transformPositionUvToWorld=new N,this._transformDirectionWorldToLocal=new J,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Uh,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new U,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new U,megatextureTextures:[],megatextureSliceDimensions:new U,megatextureTileDimensions:new U,megatextureVoxelSizeUv:new U,megatextureSliceSizeUv:new U,megatextureTileSizeUv:new U,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new N,transformPositionUvToView:new N,transformDirectionViewToLocal:new J,cameraPositionUv:new d,cameraDirectionUv:new d,ndcSpaceAxisAlignedBoundingBox:new se,clippingPlanesTexture:void 0,clippingPlanesMatrix:new N,stepSize:0,pickColor:new G},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new _e,this.tileVisible=new _e,this.tileFailed=new _e,this.tileUnload=new _e,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e;let i=this._provider;dTt(this,i)}function dTt(e,t){let{shape:n,minBounds:i=ec.getMinBounds(n),maxBounds:o=ec.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=N.clone(e._modelMatrix,e._exaggeratedModelMatrix),OTe(e,t);let r=ec.getShapeConstructor(n);e._shape=new r,e._shapeVisible=FTe(e,e._shape,t)}Object.defineProperties(GA.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=D.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=GA.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var hTt=new se,mTt=new se,ATt=new N,pTt=new N,gTt=new N,_Tt=N.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new N),yTt=N.fromRotationTranslation(J.fromUniformScale(2,new J),new d(-1,-1,-1),new N);GA.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){TTt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}xTt(this,e);let i=OTe(this,t),o=this._shape;if(i&&(this._shapeVisible=FTe(this,o,t),wTt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=BTt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&OTt(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),DTt(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=U.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(Vk(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,A=o.orientedBoundingBox,g=RTt(A,h,mTt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=se.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let _=n.uniformState.inverseView;f.transformPositionViewToUv=N.multiplyTransformation(this._transformPositionWorldToUv,_,f.transformPositionViewToUv);let y=n.uniformState.view;f.transformPositionUvToView=N.multiplyTransformation(y,this._transformPositionUvToWorld,f.transformPositionUvToView);let C=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=J.multiply(this._transformDirectionWorldToLocal,C,f.transformDirectionViewToLocal),f.cameraPositionUv=N.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,f.cameraPositionUv),f.cameraDirectionUv=J.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,f.cameraDirectionUv),f.cameraDirectionUv=d.normalize(f.cameraDirectionUv,f.cameraDirectionUv),f.stepSize=this._stepSizeMultiplier;let E=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;E.boundingVolume=o.boundingSphere,e.commandList.push(E)};var CTt=new d,QZ=new d,ETt=new Ae,ITt=new d;function xTt(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===ec.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=d.fromElements(1,1,t.verticalExaggeration,CTt);e._exaggeratedModelMatrix=N.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=N.multiplyByTranslation(e._exaggeratedModelMatrix,bTt(e,t),e._exaggeratedModelMatrix)}}function bTt(e,t){let{shapeTransform:n=N.IDENTITY,globalTransform:i=N.IDENTITY}=e._provider,o=N.getTranslation(n,QZ),r=N.multiplyByPoint(e._modelMatrix,o,QZ),s=N.multiplyByPoint(i,r,QZ),c=te.WGS84.cartesianToCartographic(s,ETt),u=0;l(c)&&(u=c.height);let f=Ur.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,ITt)}function TTt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=G.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ze(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(t.paddingBefore??d.ZERO,e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(t.paddingAfter??d.ZERO,e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===Yd.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new Jk(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,STt(e._traversal,i)}function OTe(e,t){let n=t.shapeTransform??N.IDENTITY,i=t.globalTransform??N.IDENTITY;return N.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),N.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),lx(e,"_compoundModelMatrix","_compoundModelMatrixOld")+lx(e,"_minBounds","_minBoundsOld")+lx(e,"_maxBounds","_maxBoundsOld")+lx(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+lx(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+lx(e,"_minClippingBounds","_minClippingBoundsOld")+lx(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function lx(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function FTe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=N.inverse(o,ATt);return e._transformPositionWorldToUv=N.multiplyTransformation(_Tt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=N.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=N.multiplyTransformation(o,yTt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=N.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function STt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=U.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=U.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=U.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=U.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=U.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=U.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function wTt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ze(n,!0)),i}function BTt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=K.secondsDifference(i.stop,i.start),a=K.secondsDifference(n,i.start)/r;return o+a}function DTt(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=N.transpose(N.multiplyTransformation(N.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}GA.prototype.isDestroyed=function(){return!1};GA.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var LTe=new Array(new se(-1,-1,-1,1),new se(1,-1,-1,1),new se(-1,1,-1,1),new se(1,1,-1,1),new se(-1,-1,1,1),new se(1,-1,1,1),new se(-1,1,1,1),new se(1,1,1,1)),vTt=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),PTt=new Array(new se,new se,new se,new se,new se,new se,new se,new se);function RTt(e,t,n){let i=N.fromRotationTranslation(e.halfAxes,e.center,pTt),o=N.multiply(t,i,gTt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=PTt,h=LTe.length;for(u=0;u<h;u++)N.multiplyByVector(o,LTe[u],f[u]);for(u=0;u<h;u++){let A=f[u];if(A.z>=-A.w){let g=A.x/A.w,m=A.y/A.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=vTt[u*3+g],_=f[m];if(_.z>=-_.w){let y=A.z+A.w,C=_.z+_.w,E=y/(y-C),I=se.lerp(A,_,E,hTt),b=I.x/I.w,S=I.y/I.w;r=Math.min(r,b),s=Math.max(s,b),a=Math.min(a,S),c=Math.max(c,S)}}}return r=D.clamp(r,-1,1),a=D.clamp(a,-1,1),s=D.clamp(s,-1,1),c=D.clamp(c,-1,1),n=se.fromElements(r,a,s,c,n),n}var kZ=3e7,MTt=new d(kZ,0,0),NTt=new d(0,kZ,0),LTt=new d(0,0,kZ);function OTt(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:ro.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[G.RED,G.LIME,G.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,G.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,MTt,G.RED,a),o(d.ZERO,NTt,G.LIME,a),o(d.ZERO,LTt,G.BLUE,a),i.update(t)}GA.DefaultCustomShader=new ix({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function QTe(){this.ready=!0,this.shape=ec.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[pt.SCALAR],this.componentTypes=[Gt.FLOAT32],this.maximumTileCount=1}QTe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new ox({metadata:[new Float32Array(1)]});return Promise.resolve(n)};GA.DefaultProvider=new QTe;var IC=GA;function FTt(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var Zk=FTt;function QTt(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var $k=QTt;function kTt(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var e3=kTt;var r5=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function xi(e){e=e??V.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof T2;if(o)this._context=e.contextOptions.createSceneContext(t);else{let u=ze(e.contextOptions);this._context=new DI(t,u)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Xn(),this._jobScheduler=new PQ,this._frameState=new DQ(r,new CQ(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new C2(r),this._ellipsoid=e.ellipsoid??te.default,this._globe=void 0,this._globeTranslucencyState=new vQ,this._primitives=new Ql({countReferences:o}),this._groundPrimitives=new Ql({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=xi.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new ZI,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new SQ(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new Ci({color:new G,stencil:0,owner:this}),this._depthClearCommand=new Ci({depth:1,owner:this}),this._stencilClearCommand=new Ci({stencil:0}),this._classificationStencilClearCommand=new Ci({stencil:0,renderState:Ue.fromCache({stencilMask:Kt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new pk(this),this._preUpdate=new _e,this._postUpdate=new _e,this._renderError=new _e,this._preRender=new _e,this._postRender=new _e,this._minimumDisableDepthTestDistance=0,this._debugInspector=new Tk,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new _e,this.morphComplete=new _e,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=G.clone(G.BLACK),this._mode=ie.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Ui(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new e0,this.fog=new BQ,this.fog.enabled=te.WGS84.equals(this._ellipsoid),te.WGS84.equals(this._ellipsoid)||(Co.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new Co(this),this.shadowMap=new Jg({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=G.clone(G.WHITE),this._actualInvertClassificationColor=G.clone(this._invertClassificationColor),this._invertClassification=new bw,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new hk,this._brdfLutGenerator=new mQ,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new Ck(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??wu.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Bc.requestCompletedEvent.addEventListener(r5(this)),this._removeTaskProcessorListenerCallback=di.taskCompletedEvent.addEventListener(r5(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Ye(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new Co(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new Co(this),this.preloadFlightCullingVolume=void 0,this._picking=new WQ(this),this._defaultView=new HI(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new Hg,HTe(this,0,K.now()),this.updateFrameState(),this.initializeFrame()}xi.defaultLogDepthBuffer=!0;function UTt(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(r5(e))),n.push(t.terrainProviderChanged.addEventListener(r5(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(xi.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Yt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Yt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return Ch.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,UTt(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ie.SCENE2D?this.morphTo2D(0):e===ie.SCENE3D?this.morphTo3D(0):e===ie.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Co(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new wQ(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,Yt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});xi.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function GTt(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function kTe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=MA.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=MA.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=MA.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=MA.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Jg.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Be.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}xi.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),A=o&&!u,g=c&&!f,m=(!o||!c)&&!h,_=n.pickingMetadata&>t(e,n);if(e.dirty=e.dirty||A||g||m||_,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:y,shadowMaps:C}=i;y&&e.castShadows&&(t.shadows=Jg.createCastDerivedCommand(C,e,s,r,t.shadows)),(u||A)&&(t.logDepth=MA.createLogDepthCommand(e,r,t.logDepth),kTe(this,t.logDepth.command,s)),(h||m)&&kTe(this,e,s)};var zTt=new Vd({pass:qo.RENDER}),UZ=new Vd({pass:qo.PRELOAD}),GZ=new Vd({pass:qo.PRELOAD_FLIGHT}),VTt=new Vd({pass:qo.REQUEST_RENDER_MODE_DEFER_CHECK}),UTe=new le,zZ;function HTt(e){if(!(e._mode!==ie.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return UTe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,zZ=dQ.fromBoundingSphere(UTe,e.camera.positionWC,zZ),zZ}xi.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function HTe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=K.clone(n,i.time)}xi.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=HTt(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof An||this.camera.frustum instanceof es),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=G.clone(this.invertClassificationColor,this._actualInvertClassificationColor),bw.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};xi.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===tn.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var o5=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);o5=N.inverseTransformation(o5,o5);function WTt(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ie.SCENE3D){a=N.multiplyByPoint(o5,a,a);let m=o.mapProjection,_=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(_)}let c,u,{radius:f}=s;l(f)?(c=Ia.createGeometry(new Ia({radii:new d(f,f,f),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=N.fromTranslation(a)):(c=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=N.fromRotationTranslation(s.halfAxes,a,new N)),t._debugVolume=new Qn({geometryInstances:new Pt({geometry:Vn.toWireframe(c),modelMatrix:u,attributes:{color:new $t(1,0,0,1)}}),appearance:new gn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,A=o.commandList=[];t._debugVolume.update(o),e=A[0],o.useLogDepth&&(e=MA.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Im(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof Ci){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&WTt(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function GTe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function WTe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var jTt=new d;function zTe(e,t){let n=d.subtract(e,t,jTt),i=Math.max(0,d.magnitude(n));return i*i}function YTt(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return zTe(o.center,n)-zTe(i.center,n)}function qTt(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+D.EPSILON12}function KTt(e,t,n,i,o){vA(i,WTe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function XTt(e,t,n,i,o){vA(i,qTt,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function JTt(e,t,n){e.context.uniformState.updatePass(Be.VOXELS);let i=n.commands[Be.VOXELS];i.length=n.indices[Be.VOXELS],vA(i,WTe,e.camera.positionWC);for(let o=0;o<i.length;++o)Im(i[o],e,t)}function ZTt(e,t,n){e.context.uniformState.updatePass(Be.GAUSSIAN_SPLATS);let i=n.commands[Be.GAUSSIAN_SPLATS];i.length=n.indices[Be.GAUSSIAN_SPLATS],vA(i,YTt,e.camera.positionWC);for(let o=0;o<i.length;++o)Im(i[o],e,t)}var $Tt=new ki,eSt=new Vl,tSt=new An,nSt=new es;function iSt(e){let{frustum:t}=e;return l(t.fov)?t.clone($Tt):l(t.infiniteProjectionMatrix)?t.clone(eSt):l(t.width)?t.clone(tSt):t.clone(nSt)}function oSt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?KTt:XTt}function rSt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=oSt(e);o.uniformState.updatePass(Be.TRANSLUCENT);let f=n.commands[Be.TRANSLUCENT];f.length=n.indices[Be.TRANSLUCENT],u(e,Im,t,f,c)}function sSt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Be.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Be.TRANSLUCENT];i.executeTranslucentCommands(e,Im,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Im,t,n)}function HZ(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=iSt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||aSt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:A,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:_,globeTranslucencyFramebuffer:y,sceneFramebuffer:C,frustumCommandsList:E}=e._view,I=E.length,b=e._globeTranslucencyState,S=e._depthClearCommand,B=e._stencilClearCommand,v=e._classificationStencilClearCommand,P=e._depthPlane,M=n.position.z;function L(x,T){r.updatePass(T);let w=x.commands[T],R=x.indices[T];for(let O=0;O<R;++O)Im(w[O],e,t);return R}function p(x,T){r.updatePass(T);let w=x.commands[T],R=x.indices[T];for(let O=0;O<R;++O)GTe(w[O],e,t)}for(let x=0;x<I;++x){let T=I-x-1,w=E[T];e.mode===ie.SCENE2D?(n.position.z=M-w.near+1,s.far=Math.max(1,w.far-w.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s)),S.execute(i,t),i.stencilBuffer&&B.execute(i,t),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,Im,y,e,t)):L(w,Be.GLOBE),A&&_.executeCopyDepth(i,t),f||(b.translucent?(r.updatePass(Be.TERRAIN_CLASSIFICATION),b.executeGlobeClassificationCommands(w,Im,y,e,t)):L(w,Be.TERRAIN_CLASSIFICATION)),u&&(S.execute(i,t),h&&P.execute(i,t));let R;if(!g||c||f)R=L(w,Be.CESIUM_3D_TILE),R>0&&(A&&(_.prepareColorTextures(i,u),_.executeUpdateDepth(i,t,_.depthStencilTexture)),f||(R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let k=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,R=L(w,Be.CESIUM_3D_TILE),A&&(e._invertClassification.prepareTextures(i),_.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=k,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),R>0&&i.stencilBuffer&&v.execute(i,t),R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)}if(R>0&&i.stencilBuffer&&B.execute(i,t),JTt(e,t,w),L(w,Be.OPAQUE),ZTt(e,t,w),T!==0&&e.mode!==ie.SCENE2D&&(s.near=w.near,r.updateFrustum(s)),rSt(e,t,w),sSt(e,t,w),i.depthTexture&&e.useDepthPicking&&(A||f)){let k=e._picking.getPickDepth(e,T);k.update(i,_.depthStencilTexture),k.executeCopyDepth(i,t)}if(c||!m)continue;let O=t.framebuffer;t.framebuffer=C.getIdFramebuffer(),s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,GTe,y,e,t)):p(w,Be.GLOBE),u&&(S.framebuffer=t.framebuffer,S.execute(i,t),S.framebuffer=void 0),u&&h&&P.execute(i,t),p(w,Be.CESIUM_3D_TILE),p(w,Be.OPAQUE),p(w,Be.TRANSLUCENT),t.framebuffer=O}}function aSt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Be.ENVIRONMENT),l(i.skyBoxCommand)&&Im(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Im(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function jTe(e){e.context.uniformState.updatePass(Be.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function cSt(e,t){e.context.uniformState.updatePass(Be.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function lSt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Be.GLOBE,Be.CESIUM_3D_TILE,Be.OPAQUE,Be.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let A=r[h].cullingVolume;if(e.isVisible(A,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function YTe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;lSt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:A,commandList:g}=h;s.updateCamera(A),c.updatePass(r,f);for(let m=0;m<g.length;++m){let _=g[m];s.updatePass(_.pass);let y=_.derivedCommands.shadows.castCommands[a];Im(y,e,h.passState)}}}}var uSt=new d;xi.prototype.updateAndExecuteCommands=function(e,t){xSt(this,e,t),this._environmentState.useWebVR?fSt(this,e,t):this._frameState.mode!==ie.SCENE2D||this._mapMode2D===wu.ROTATE?xC(!0,this,e):CSt(this,e)};function fSt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;qTe(e),n.createPotentiallyVisibleSet(e),jTe(e),r||YTe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=Co.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*(e.focalLength??5),f=e.eyeSeparation??u/30,h=d.multiplyByScalar(a.right,f*.5,uSt);i.frustum.aspectRatio=s.width/s.height;let A=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=A,HZ(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-A,HZ(e,t),Co.clone(a,i)}var dSt=new Ae(Math.PI,D.PI_OVER_TWO),hSt=new d,mSt=new d,ASt=new N,pSt=new N,gSt=new d,_St=new d,ySt=new Ye;function CSt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Ye.clone(r,ySt);t.viewport=s;let a=dSt,c=hSt;e.mapProjection.project(a,c);let f=d.clone(i.position,mSt),h=N.clone(i.transform,pSt),A=i.frustum.clone();i._setTransform(N.IDENTITY);let g=N.computeViewportTransformation(s,0,1,ASt),m=i.frustum.projectionMatrix,_=i.positionWC.y,y=d.fromElements(D.sign(_)*c.x-_,0,-i.positionWC.x,gSt),C=kt.pointToGLWindowCoordinates(m,g,y,_St);C.x=Math.floor(C.x);let E=s.x,I=s.width;if(_===0||C.x<=E||C.x>=E+I)xC(!0,e,t);else if(Math.abs(E+I*.5-C.x)<1)s.width=C.x-s.x,i.position.x*=D.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=C.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t);else if(C.x>E+I*.5){s.width=C.x-E;let b=i.frustum.right;i.frustum.right=c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=C.x,s.width=E+I-C.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=b-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t)}else{s.x=C.x,s.width=E+I-C.x;let b=i.frustum.left;i.frustum.left=-c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=E,s.width=C.x-E,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=b-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=A.clone(),t.viewport=r}function xC(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),qTe(t),i.createPotentiallyVisibleSet(t),e&&(jTe(t),o||YTe(t)),HZ(t,n)}var VTe=new Os;xi.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ie.SCENE2D&&t.camera.frustum instanceof An||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(Np.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let C=r.dynamicLighting;s.setDynamicLighting(C),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let y=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(y)?y.drawCommand:void 0,n.sunComputeCommand=l(y)?y.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ie.SCENE2D);(n.useDepthPlane=u&&this.mode===ie.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ie.SCENE2D&&!o;let h=e.mode===ie.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,A=e.cullingVolume,g=VTe.planes;for(let y=0;y<5;++y)g[y]=A.planes[y];A=VTe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(A,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(A,n.moonCommand,h);let m=this.specularEnvironmentMaps,_=this._specularEnvironmentCubeMap;l(m)&&_?.url!==m?(_=_&&_.destroy(),this._specularEnvironmentCubeMap=new Ch(m)):!l(m)&&l(_)&&(_.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function ESt(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new RA({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function ISt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ie.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function qTe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),ESt(e),ISt(e),e._globe&&e._globe.render(t)}function xSt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new xk:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;G.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let A=s.oit,g=r.useOIT=!c&&l(A)&&A.isSupported();g&&(A.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),A.clear(i,t,n),r.useOIT=A.isSupported());let m=e.postProcessStages,_=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,_&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),_=r.usePostProcess=m.ready,r.usePostProcessSelected=_&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:_&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let C;if(o.invertClassificationColor.alpha===1&&h&&(C=s.globeDepth.framebuffer),l(C)||i.depthTexture){if(e._invertClassification.previousFramebuffer=C,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let E=e._invertClassification.unclassifiedCommand,I=E.derivedCommands;I.oit=A.createDerivedCommands(E,i,I.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}xi.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,A=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,_=g.getColorTexture(0),y=A.getColorTexture(0),C=(f??h).getDepthStencilTexture();m.execute(t,_,C,y),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function bSt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function TSt(e){if(e.mode===ie.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function KTe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof Ql){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=KTe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}xi.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===Ze.CLAMP_TO_TERRAIN||t===Ze.RELATIVE_TO_TERRAIN,i=t===Ze.CLAMP_TO_3D_TILE||t===Ze.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=KTe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var VZ=new Ae;xi.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{Ae.clone(e,VZ);let m;l(g)&&(m=g.height),l(m)||(m=this.getHeight(e,n)),l(m)&&(VZ.height=m,t(VZ))},r=n===Ze.CLAMP_TO_TERRAIN||n===Ze.RELATIVE_TO_TERRAIN,s=n===Ze.CLAMP_TO_3D_TILE||n===Ze.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},u=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,o,i);c[g.id]=m};if(!r){let g=this.primitives.length;for(let m=0;m<g;++m){let _=this.primitives.get(m);u(_)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},f(),h()}};function SSt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ie.SCENE2D||n===ie.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}xi.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=TSt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=SSt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function wSt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new qg({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function BSt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function DSt(e){e.primitives.postPassesUpdate(e._frameState),Bc.update()}var vSt=new G;function PSt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=zTt;let r=e.backgroundColor??G.BLACK;e._hdr&&(r=G.clone(r,vSt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof Hg?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Ye.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,cSt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function ux(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function RSt(e){return e._picking.updateMostDetailedRayPicks(e)}xi.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=K.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ie.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(K.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=K.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=D.incrementWrap(t.frameNumber,15e6,1);HTe(this,o,e),t.newFrame=!0}ux(this,BSt),this.primitives.show&&(ux(this,RSt),ux(this,MSt),ux(this,NSt),i||ux(this,LSt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),ux(this,PSt)),wSt(this,i),ux(this,DSt),bSt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};xi.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};xi.prototype.requestRender=function(){this._renderRequested=!0};xi.prototype.clampLineWidth=function(e){return Math.max(Yt.minimumAliasedLineWidth,Math.min(e,Yt.maximumAliasedLineWidth))};xi.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};xi.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof IC))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return Sk.fromKeyframeNode(o,s,c,a)};xi.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=Zk(s,t,n,i);if(!l(a))return;let c=e3(r,n,i);if(!l(c))return;let u=new $k(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};xi.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};xi.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};xi.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};xi.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function MSt(e){let t=e._frameState;UZ.camera=t.camera,UZ.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,UZ)}function NSt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;GZ.camera=e.preloadFlightCamera,GZ.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,GZ)}function LSt(e){e.primitives.updateForPass(e._frameState,VTt)}xi.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};xi.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};xi.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};xi.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};xi.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};xi.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};xi.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};xi.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};xi.prototype.cartesianToCanvasCoordinates=function(e,t){return eo.worldToWindowCoordinates(this,e,t)};xi.prototype.completeMorph=function(){this._transitioner.completeMorph()};xi.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};xi.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};xi.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function OSt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}xi.prototype.setTerrain=function(e){return OSt(this,e),e};xi.prototype.isDestroyed=function(){return!1};xi.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var t3=xi;function Mw(e){e=e??te.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=N.fromScale(n),this._modelMatrix=new N,this._command=new nt({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(Mw.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Mw.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var WZ=new N;Mw.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ie.SCENE3D&&n!==ie.MORPHING||!e.passes.render)return;let i=N.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,WZ),o=N.multiplyTransformation(i,fo.Y_UP_TO_Z_UP,WZ),r=N.multiply(this._scaleMatrix,o,WZ);N.clone(r,this._modelMatrix);let s=e.context,a=FSt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let A=Ia.createGeometry(new Ia({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Pe.POSITION_ONLY}));f.vertexArray=li.fromGeometry({context:s,geometry:A,attributeLocations:Vn.createAttributeLocations(A),bufferUsage:Qe.STATIC_DRAW}),f.renderState=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let A=[];a&&A.push("COLOR_CORRECT"),u&&A.push("PER_FRAGMENT_ATMOSPHERE"),c&&A.push("GLOBE_TRANSLUCENT");let g=new He({defines:A,sources:[Bh,dw,U2]}),m=new He({defines:A,sources:[Bh,dw,k2]});this._spSkyAtmosphere=an.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function FSt(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))}Mw.prototype.isDestroyed=function(){return!1};Mw.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var n3=Mw;function Lw(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new nt({modelMatrix:N.clone(N.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}Lw.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ie.SCENE3D&&i!==ie.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?S2(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new kr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),c=this._attributeLocations=Vn.createAttributeLocations(a);s.vertexArray=li.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Qe.STATIC_DRAW}),s.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new He({defines:[t?"HDR":""],sources:[G2]});s.shaderProgram=an.fromCache({context:r,vertexShaderSource:z2,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};Lw.prototype.isDestroyed=function(){return!1};Lw.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function Nw(e){return fn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}Lw.createEarthSkyBox=function(){return new Lw({sources:{positiveX:Nw("px"),negativeX:Nw("mx"),positiveY:Nw("py"),negativeY:Nw("my"),positiveZ:Nw("pz"),negativeZ:Nw("mz")}})};var i3=Lw;function r3(){this.show=!0,this._drawCommand=new nt({primitiveType:Me.TRIANGLES,boundingVolume:new le,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new le,this._boundingVolume2D=new le,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(r3.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var QSt=new U,kSt=new U,USt=new se,o3=new se;r3.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ie.SCENE2D||i===ie.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let b=Math.max(r,s);b=Math.pow(2,Math.ceil(Math.log(b)/Math.log(2))-2),b=Math.max(1,b);let S=n?o.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._texture=new Mt({context:o,width:b,height:b,pixelFormat:$e.RGBA,pixelDatatype:S}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let B=this,v={u_radiusTS:function(){return B._radiusTS}};this._commands.computeCommand=new Tl({fragmentShaderSource:H2,outputTexture:this._texture,uniformMap:v,persists:!1,owner:this,postExecute:function(){B._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let b={direction:0},S=new Uint8Array(8);S[0]=0,S[1]=0,S[2]=255,S[3]=0,S[4]=255,S[5]=255,S[6]=0,S[7]=255;let B=Ct.createVertexBuffer({context:o,typedArray:S,usage:Qe.STATIC_DRAW}),v=[{index:b.direction,vertexBuffer:B,componentsPerAttribute:2,normalize:!0,componentDatatype:q.UNSIGNED_BYTE}],P=Ct.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});a.vertexArray=new li({context:o,attributes:v,indexBuffer:P}),a.shaderProgram=an.fromCache({context:o,vertexShaderSource:W2,fragmentShaderSource:V2,attributeLocations:b}),a.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=D.SOLAR_RADIUS+D.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ie.SCENE3D?le.clone(f,a.boundingVolume):i===ie.COLUMBUS_VIEW&&le.clone(h,a.boundingVolume);let A=eo.computeActualEllipsoidPosition(e,c,o3),g=d.magnitude(d.subtract(A,e.camera.position,o3)),m=o.uniformState.projection,_=USt;_.x=0,_.y=0,_.z=-g,_.w=1;let y=N.multiplyByVector(m,_,o3),C=eo.clipToGLWindowCoordinates(t.viewport,y,QSt);_.x=D.SOLAR_RADIUS;let E=N.multiplyByVector(m,_,o3),I=eo.clipToGLWindowCoordinates(t.viewport,E,kSt);return this._size=U.magnitude(U.subtract(I,C,o3)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};r3.prototype.isDestroyed=function(){return!1};r3.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var s3=r3;var ZTe=xr(VU(),1);function GSt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var a3=GSt;var zSt={modifyFragmentShader:function(t){return t=He.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},Ow=zSt;var fx={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function c3(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=G.clone(G.DARKGRAY),this._highlightColor=G.clone(G.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=fx.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Be.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=N.clone(N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.time=0,this.shadows=Bn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??br.NONE,this._splittingEnabled=!1,this._error=void 0,VSt(this,e)}Object.defineProperties(c3.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return G.clone(this._highlightColor)},set:function(e){this._highlightColor=G.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=le.clone(e,this._boundingSphere)}}});function VSt(e,t){let n=A0.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=Ip.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=fx.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=G.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var HSt=new d,WSt=new d,jSt=new d,XTe,s5;function YSt(e){if(!l(s5)){XTe=new ZTe.default(0),s5=new Array(e);for(let t=0;t<e;++t)s5[t]=XTe.random()}return s5}function qSt(e){let n=e.length/3,i=Math.min(n,20),o=YSt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,HSt),c=d.fromElements(s,s,s,WSt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),A=d.unpack(e,h*3,jSt);d.minimumByComponent(a,A,a),d.maximumByComponent(c,A,c)}let u=le.fromCornerPoints(a,c);return u.radius+=D.EPSILON2,u}function JTe(e,t){let n=q.fromTypedArray(e);return n===q.INT||n===q.UNSIGNED_INT||n===q.DOUBLE?(yt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var KSt=new se,XSt=new se,JSt=new G,$Te=0,a5=1,XZ=2,eSe=3,ZSt=4,jZ=new N,$St=new N;function ewt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,A=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,_=e._quantizedRange,y=e._octEncodedRange,C=e._isRGB565,E=e._isTranslucent,I=e._hasColors,b=e._hasNormals,S=e._hasBatchIds,B,v,P=[],M={};if(e._styleableShaderAttributes=M,f){let Q=ZSt;for(let z in u)if(u.hasOwnProperty(z)){let F=u[z],H=JTe(F.typedArray,z);B=F.componentCount,v=q.fromTypedArray(H);let W=Ct.createVertexBuffer({context:n,typedArray:H,usage:Qe.STATIC_DRAW});e._geometryByteLength+=W.sizeInBytes;let Z={index:Q,vertexBuffer:W,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0};P.push(Z),M[z]={location:Q,componentCount:B},++Q}}let L=Ct.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});e._geometryByteLength+=L.sizeInBytes;let p;I&&(p=Ct.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=p.sizeInBytes);let x;b&&(x=Ct.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=x.sizeInBytes);let T;S&&(c.typedArray=JTe(c.typedArray,"batchIds"),T=Ct.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let w=[];if(h?v=q.UNSIGNED_SHORT:A?v=_<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT:v=q.FLOAT,w.push({index:$Te,vertexBuffer:L,componentsPerAttribute:3,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||A?e._boundingSphere=le.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=qSt(r.typedArray)),I)if(C)w.push({index:a5,vertexBuffer:p,componentsPerAttribute:1,componentDatatype:q.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let Q=E?4:3;w.push({index:a5,vertexBuffer:p,componentsPerAttribute:Q,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}b&&(g?(B=2,v=q.UNSIGNED_BYTE):m?(B=2,v=y<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT):(B=3,v=q.FLOAT),w.push({index:XZ,vertexBuffer:x,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0})),S&&w.push({index:eSe,vertexBuffer:T,componentsPerAttribute:1,componentDatatype:q.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(w=w.concat(P));let R=new li({context:n,attributes:w}),O={depthTest:{enabled:!0}},k={depthTest:{enabled:!0},depthMask:!1,blending:pn.ALPHA_BLEND};e._opaquePass===Be.CESIUM_3D_TILE&&(O.stencilTest=Kt.setCesium3DTileBit(),O.stencilMask=Kt.CESIUM_3D_TILE_MASK,k.stencilTest=Kt.setCesium3DTileBit(),k.stencilMask=Kt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ue.fromCache(O),e._translucentRenderState=Ue.fromCache(k),e._drawCommand=new nt({boundingVolume:new le,cull:e._cull,modelMatrix:new N,primitiveType:Me.POINTS,vertexArray:R,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:E?e._translucentRenderState:e._opaqueRenderState,pass:E?Be.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function twt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=KSt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ie.SCENE2D||c instanceof An?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return G.TRANSPARENT;let c=G.clone(a.edgeColor,JSt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return N.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;N.multiply(n.uniformState.view3D,c,jZ);let u=N.multiply(jZ,a.modelMatrix,jZ);return N.inverseTranspose(u,$St)}};Ow.addUniforms(e,s),(i||o||r)&&(s=Tt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=XSt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function YZ(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function qZ(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function KZ(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var nwt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function iwt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,A=e._isRGB565,g=e._isTranslucent,m=e._hasColors,_=e._hasNormals,y=e._hasBatchIds,C=e._backFaceCulling,E=e._normalShading,I=e._drawCommand.vertexArray,b=e.clippingPlanes,S=e._attenuation,B,v,P,M=g,L=ze(nwt),p={},x=e._styleableShaderAttributes;for(o in x)x.hasOwnProperty(o)&&(r=x[o],L[o]=`czm_3dtiles_property_${r.location}`,p[r.location]=r);if(a){let fe={translucent:!1},ye="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";B=n.getColorShaderFunction(`getColorFromStyle${ye}`,L,fe),v=n.getShowShaderFunction(`getShowFromStyle${ye}`,L,fe),P=n.getPointSizeShaderFunction(`getPointSizeFromStyle${ye}`,L,fe),l(B)&&fe.translucent&&(M=!0)}e._styleTranslucent=M;let T=l(B),w=l(v),R=l(P),O=e.isClipped,k=[],Q=[];T&&(YZ(B,k),qZ(B,Q)),w&&(YZ(v,k),qZ(v,Q)),R&&(YZ(P,k),qZ(P,Q));let z=Q.indexOf("COLOR")>=0,F=Q.indexOf("NORMAL")>=0;if(F&&!_)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");for(o in x)if(x.hasOwnProperty(o)){r=x[o];let fe=k.indexOf(r.location)>=0,ye=KZ(I,r.location);ye.enabled=fe}let H=m&&(!T||z);if(m){let fe=KZ(I,a5);fe.enabled=H}let W=_&&(E||C||F);if(_){let fe=KZ(I,XZ);fe.enabled=W}let Z={a_position:$Te};H&&(Z.a_color=a5),W&&(Z.a_normal=XZ),y&&(Z.a_batchId=eSe);let Y="",$=k.length;for(i=0;i<$;++i){let fe=k[i];r=p[fe];let ye=r.componentCount,xe=`czm_3dtiles_property_${fe}`,ve;ye===1?ve="float":ve=`vec${ye}`,Y+=`in ${ve} ${xe}; +`,Z[xe]=r.location}twt(e,t);let X=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;X+=`float u_pointSize; +float tiles3d_tileset_time; +`,S&&(X+=`float u_geometricError; +float u_depthMultiplier; +`),X+=Y,H&&(g?X+=`in vec4 a_color; +`:A?X+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:X+=`in vec3 a_color; +`),W&&(f||h?X+=`in vec2 a_normal; +`:X+=`in vec3 a_normal; +`),y&&(X+=`in float a_batchId; +`),(c||u||h)&&(X+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),T&&(X+=B),w&&(X+=v),R&&(X+=P),X+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,S&&(X+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),H?g?X+=` vec4 color = a_color; +`:A?X+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:X+=` vec4 color = vec4(a_color, 1.0); +`:X+=` vec4 color = u_constantColor; +`,c||u?X+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:X+=` vec3 position = a_position; +`,X+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,W?(f?X+=` vec3 normal = czm_octDecode(a_normal); +`:h?X+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:X+=` vec3 normal = a_normal; +`,X+=` vec3 normalEC = czm_normal * normal; +`):X+=` vec3 normal = vec3(1.0); +`,T&&(X+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),w&&(X+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),R?X+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:S?X+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:X+=` gl_PointSize = u_pointSize; +`,X+=` color = color * u_highlightColor; +`,W&&E&&(X+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),X+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,W&&C&&(X+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),w&&(X+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),X+=`} +`;let he=`in vec4 v_color; +`;O&&(he+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,he+=` +`,he+=jg(b,s),he+=` +`),he+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,O&&(he+=a3("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`} +`,e.splitDirection!==br.NONE&&(he=Ow.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(X=e._vertexShaderLoaded(X)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ge=e._drawCommand;l(ge.shaderProgram)&&ge.shaderProgram.destroy(),ge.shaderProgram=an.fromCache({context:s,vertexShaderSource:X,fragmentShaderSource:he,attributeLocations:Z});try{ge.shaderProgram._bind()}catch{throw new ce("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function owt(e,t){if(e._decodingState===fx.READY)return!1;if(e._decodingState===fx.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=Dp.decodePointCloud(i,t);l(o)&&(e._decodingState=fx.DECODING,o.then(function(r){e._decodingState=fx.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),A=l(u)&&l(r.NORMAL.data.quantization);if(h){let y=r.POSITION.data.quantization,C=y.range;e._quantizedVolumeScale=d.fromElements(C,C,C),e._quantizedVolumeOffset=d.unpack(y.minValues),e._quantizedRange=(1<<y.quantizationBits)-1,e._isQuantizedDraco=!0}A&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let y in m)if(m.hasOwnProperty(y)){let C=r[y];l(g)||(g={}),g[y]={typedArray:C.array,componentCount:C.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let _=c??a;l(_)&&(n.colors={typedArray:_}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=fx.FAILED,e._error=r}))}return!0}var rwt=new se,swt=new d;c3.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(owt(this,t))return;let i=!1,o=!N.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ewt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){N.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(N.clone(this._modelMatrix,u),l(this._rtcCenter)&&N.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&N.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ie.SCENE3D){let h=e.mapProjection,A=N.getColumn(u,3,rwt);se.equals(A,se.UNIT_W)||kt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(le.clone(this._boundingSphere,f),this._cull){let h=f.center;N.multiplyByPoint(u,h,h);let A=N.getScale(u,swt);f.radius*=d.maximumComponent(A)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==br.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&iwt(this,e,this._style),this._drawCommand.castShadows=Bn.castShadows(this.shadows),this._drawCommand.receiveShadows=Bn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Be.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};c3.prototype.isDestroyed=function(){return!1};c3.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var l3=c3;function hx(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.shadows=e.shadows??Bn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new Zm(e.shading),this.style=e.style,this.frameFailed=new _e,this.frameChanged=new _e,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new Qp,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(hx.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function awt(e){return`uniform vec4 czm_pickColor; +${e}`}function cwt(e){return function(t){return Tt(t,{czm_pickColor:function(){return e._pickId.color}})}}function lwt(){return"czm_pickColor"}hx.prototype.makeStyleDirty=function(){this._styleDirty=!0};hx.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var uwt=new K;function ZZ(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function dx(e,t){return e._intervals.indexOf(t.start)}function fwt(e,t){let n=e._intervals,i=e._clock,o=ZZ(e);if(o===0)return;let r=e._getAverageLoadTime(),s=K.addSeconds(i.currentTime,r*o,uwt),a=n.indexOf(s),c=dx(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function dwt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function hwt(e,t,n){let i=ZZ(e),o=dx(e,t),r=dx(e,n);return i>=0?o>=r:o<=r}function nSe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function mwt(e,t,n){let i=dx(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?N.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Li(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,we.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new l3({arrayBuffer:u,cull:!0,fragmentShaderLoaded:awt,uniformMapLoaded:cwt(e),pickIdLoaded:lwt})}).catch(nSe(e,c))}return r}function Awt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function pwt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(iSe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Li()-t.timestamp)/1e3;Awt(e,a)}}t.touchedFrameNumber=i.frameNumber}var gwt=new N;function _wt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?D.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function ywt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var Cwt=new Zm;function iSe(e,t,n,i){let o=e.shading??Cwt,r=t.pointCloud,s=t.transform??N.IDENTITY;r.modelMatrix=N.multiplyTransformation(e.modelMatrix,s,gwt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=_wt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=ywt(e);try{r.update(i)}catch(a){nSe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function JZ(e,t,n,i){let o=mwt(e,t,i);pwt(e,o,n,i)}function Ewt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function oSe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Iwt(e,t){let n=dx(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function tSe(e,t,n,i,o){return l(n)?n.ready?!0:(JZ(e,t,i,o),n.ready):!1}function xwt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=dx(e,n),h=dx(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],tSe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],tSe(e,s,a,i,o))return s;return t}function bwt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var Fw={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};hx.prototype.update=function(e){if(e.mode===ie.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time));let t=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&bwt(this,o,s),Fw.timeSinceLoad=t,Fw.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,A=this._nextInterval,g=dwt(this);if(!l(g))return;let m=!1,_=ZZ(this),y=_===0;_!==this._clockMultiplier&&(m=!0,this._clockMultiplier=_),(!l(h)||y)&&(h=g),(!l(A)||m||hwt(this,g,A))&&(A=fwt(this,g)),h=xwt(this,h,g,Fw,e);let C=Iwt(this,h);l(C)||(JZ(this,h,Fw,e),C=this._lastRenderedFrame),l(C)&&iSe(this,C,Fw,e),l(A)&&JZ(this,A,Fw,e);let E=this;l(C)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(C)&&C!==this._lastRenderedFrame&&E.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return E.frameChanged.raiseEvent(E),!0}),this._previousInterval=h,this._nextInterval=A,this._lastRenderedFrame=C;let I=this._totalMemoryUsageInBytes,b=this.maximumMemoryUsage*1024*1024;I>b&&oSe(this,Ewt(e));let B=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&B>0&&c.update(e,f,a,this.boundingSphere)};hx.prototype.isDestroyed=function(){return!1};hx.prototype.destroy=function(){return oSe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var Qw=hx;function aSe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Twt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function cSe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function lSe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=cSe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function uSe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Vo(e,t){e=kn(e),t=t??V.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=Wt.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=Wt.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?kn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?kn(t.creditViewport):n,f=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new _e,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Xh,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),lSe(this);try{let A=t.ellipsoid??te.default,g=new t3({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:A,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=d.UNIT_Z,cSe(this),uSe(this);let m=t.globe;l(m)||(m=new rQ(A)),m!==!1&&(g.globe=m,g.globe.shadows=t.terrainShadows??Bn.RECEIVE_ONLY);let _=t.skyBox;!l(_)&&te.WGS84.equals(A)&&(_=i3.createEarthSkyBox()),_!==!1&&(g.skyBox=_,g.sun=new s3,te.WGS84.equals(A)&&(g.moon=new fQ));let y=t.skyAtmosphere;!l(y)&&te.WGS84.equals(A)&&(y=new n3(A),y.show=t.globe!==!1&&m.show),y!==!1&&(g.skyAtmosphere=y);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=rs.fromWorldImagery()),g.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Pf(i),l(t.sceneMode)&&(t.sceneMode===ie.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ie.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let E=this;this._onRenderError=function(P,M){E._useDefaultRenderLoop=!1,E._renderLoopRunning=!1,E._showRenderLoopErrors&&E.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,M)},g.renderError.addEventListener(this._onRenderError);let I=t.dataSources,b=!1;l(I)||(I=new VO,b=!0);let S=new PF({scene:g,dataSourceCollection:I}),B=new Dr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=I,this._destroyDataSourceCollection=b,this._dataSourceDisplay=S,this._eventHelper=B,this._canAnimateUpdateCallback=this._updateCanAnimate,B.add(this._clock.onTick,Vo.prototype._onTick,this),B.add(g.morphStart,Vo.prototype._clearTrackedObject,this),B.add(I.dataSourceAdded,Vo.prototype._onDataSourceAdded,this),B.add(I.dataSourceRemoved,Vo.prototype._onDataSourceRemoved,this),B.add(g.postRender,Vo.prototype._postRender,this);let v=I.length;for(let P=0;P<v;P++)this._dataSourceAdded(I,I.get(P));this._dataSourceAdded(void 0,S.defaultDataSource),B.add(I.dataSourceAdded,Vo.prototype._dataSourceAdded,this),B.add(I.dataSourceRemoved,Vo.prototype._dataSourceRemoved,this)}catch(A){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',A),A}}Object.defineProperties(Vo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Twt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,$Z(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ie.COLUMBUS_VIEW||n===ie.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ie.COLUMBUS_VIEW||n===ie.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(N.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,aSe(this.clock,e))}}});Vo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=eA(n);u||(typeof n=="string"&&(n=new Error(n)),t=eA({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${m}`);let _=document.createElement("div");_.className="cesium-widget-errorPanel-message-details collapsed";let y=document.createElement("span");y.className="cesium-widget-errorPanel-more-details",y.appendChild(document.createTextNode("See more...")),_.appendChild(y),_.onclick=function(C){_.removeChild(y),_.appendChild(document.createTextNode(m)),_.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",_.onclick=void 0},a.appendChild(_)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let A=document.createElement("button");A.setAttribute("type","button"),A.className="cesium-button",A.appendChild(document.createTextNode("OK")),A.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(A),i.appendChild(o)};Vo.prototype.isDestroyed=function(){return!1};Vo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Vo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,lSe(this),uSe(this),this._scene.requestRender())};Vo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Vo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Vo.prototype._onEntityCollectionChanged,this)};Vo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Vo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Vo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var Swt=new le;Vo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??Swt)===mt.DONE&&i.update(t)}};Vo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Vo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Vo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&aSe(this.clock,e)};Vo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Vo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Vo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Vo.prototype.zoomTo=function(e,t){return fSe(this,e,{offset:t},!1)};Vo.prototype.flyTo=function(e,t){return fSe(this,e,t,!0)};function fSe(e,t,n,i){$Z(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof rs){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return RI(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof ks||r instanceof Qw||r instanceof IC){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function u3(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function $Z(e){let t=e._zoomPromise;l(t)&&(u3(e),e._completeZoom(!1))}Vo.prototype._postRender=function(){wwt(this),Bwt(this)};var rSe=new le;function wwt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===ie.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(f){l(o.offset)||(o.offset=new Md(0,-.5,f.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(f,o.offset),i.lookAtTransform(N.IDENTITY),e._completeZoom(!0)),u3(e)}if(t instanceof Qw){if(l(t.boundingSphere)){s(t.boundingSphere);return}let f=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),f()});return}if(t instanceof ks||t instanceof IC){s(t.boundingSphere);return}if(t instanceof Ae){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),u3(e);return}let a=t,c=[];for(let f=0,h=a.length;f<h;f++){let A=e._dataSourceDisplay.getBoundingSphere(a[f],!1,rSe);if(A===mt.PENDING)return;A!==mt.FAILED&&c.push(le.clone(rSe))}if(c.length===0){$Z(e);return}e.trackedEntity=void 0;let u=le.fromBoundingSpheres(c);e._zoomIsFlight?(u3(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(N.IDENTITY),u3(e),e._completeZoom(!0))}var sSe=new le;function Bwt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=j.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,sSe);if(r===mt.PENDING)return;let s=o.mode;(s===ie.COLUMBUS_VIEW||s===ie.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ie.COLUMBUS_VIEW||s===ie.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==mt.FAILED?sSe:void 0;e._entityView=new MF(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var f3=Vo;function Gw(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var mx=new ae;function Dwt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}Gw.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let A=n;A<=o;++A)for(let g=t;g<=i;++g)Dwt(e,g,A,s)||s.push(new kw(r,void 0,0,g,A));r.tileXYToRectangle(t,n,e,mx);let a=mx.west,c=mx.north;r.tileXYToRectangle(i,o,e,mx);let u=mx.east,f=mx.south,h=new Nwt(e,a,f,u,c);for(let A=0;A<s.length;++A){let g=s[A];e$(g.extent,h)&&Lwt(this._maximumLevel,g,h)}};Gw.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(Uw(i.extent,e)){t=i;break}}return l(t)?d3(void 0,t,e):-1};var vwt=[],Pwt=[],Rwt=new ae,Mwt=new ae;Gw.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=vwt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Rwt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Mwt))):t.push(e);let n=Pwt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)h3(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var dSe=new Ae;Gw.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,mx);return ae.center(i,dSe),this.computeMaximumLevelAtPosition(dSe)>=e};Gw.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function kw(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(kw.prototype,{nw:{get:function(){return this._nw||(this._nw=new kw(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new kw(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new kw(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new kw(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function Nwt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function e$(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function Lwt(e,t,n){for(;t.level<e;)if(c5(t.nw.extent,n))t=t.nw;else if(c5(t.ne.extent,n))t=t.ne;else if(c5(t.sw.extent,n))t=t.sw;else if(c5(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=Wo(t.rectangles,n.level,Owt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function Owt(e,t){return e.level-t}function c5(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function Uw(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function d3(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&Uw(t._nw.extent,n),s=t._ne&&Uw(t._ne.extent,n),a=t._sw&&Uw(t._sw.extent,n),c=t._se&&Uw(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,d3(t,t._nw,n))),s&&(i=Math.max(i,d3(t,t._ne,n))),a&&(i=Math.max(i,d3(t,t._sw,n))),c&&(i=Math.max(i,d3(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];Uw(a,n)&&(i=a.level)}t=t.parent}return i}function h3(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||e$(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=Fwt(e[s.level],s)}h3(e,t._nw,n),h3(e,t._ne,n),h3(e,t._sw,n),h3(e,t._se,n)}function Fwt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];e$(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var xm=Gw;var Qwt=15;function hSe(e){this.ellipsoid=e.ellipsoid??te.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}hSe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function kwt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Bt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new so(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new U(r.xmin,r.ymin),s.rectangleNortheastInMeters=new U(r.xmax,r.ymax),e.tilingScheme=new Ts(s)}else throw new ce("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new ce("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?Qd.LERC:Qd.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new xm(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new xm(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function Uwt(e,t,n){try{let i=await t.fetchJson();kwt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function bC(e){e=e??V.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new _e}Object.defineProperties(bC.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});bC.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new hSe(t);await Uwt(o,i);let r=new bC(t);return o.build(r),r._resource=n,r};bC.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(t$(this,n+1,e*2,t*2))){let h=mSe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new Ec({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):Qwt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){if(l(a)&&a.state===fi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=fi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function t$(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}bC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};bC.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=t$(this,n,e,t);if(l(i))return i;mSe(this,n,e,t)};bC.prototype.loadTileDataAvailability=function(e,t,n){};function Gwt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new U(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let A=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new U(u.x,e.y)),--u.x,--A,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let _=e.x;_<=A;++_)if(i[m+_]!==s){h=!0;break}h?(a.push(new U(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function zwt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new U(0,0)];for(;a.length>0;){let c=a.pop(),u=Gwt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function mSe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(A){let g=zwt(o,r,s,s,A.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let _=0;_<g.length;++_){let y=g[_];m.addAvailableTileRange(t,y.startX,y.startY,y.endX,y.endY)}return t$(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(A){return delete c[a],A}),{promise:h,request:u}):{}}var n$=bC;var ASe="https://dev.virtualearth.net/REST/v1/Locations";function i$(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new we({url:ASe,queryParameters:n}),this._credit=new Bt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(i$.prototype,{url:{get:function(){return ASe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});i$.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var o$=i$;function r$(){}Object.defineProperties(r$.prototype,{credit:{get:function(){}}});r$.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var s$=r$;var Vwt=new se,pSe=new d,zw=new d;function Hwt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=Vwt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,A;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,pSe),d.multiplyByScalar(h,.5,h),A=N.multiplyByVector(cy.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],pSe),d.multiplyByScalar(f,.5,f),A=N.multiplyByVector(cy.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],A=N.multiplyByVector(TC.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,A.x,o),d.multiplyByScalar(u,A.y,zw),d.add(o,zw,o),d.multiplyByScalar(f,A.z,zw),d.add(o,zw,o),d.multiplyByScalar(h,A.w,zw),d.add(o,zw,o)}}var Wwt=new d,jwt=new d;function TC(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=Wwt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=jwt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=Hwt(this),this._lastTimeIndex=0}Object.defineProperties(TC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});TC.catmullRomCoefficientMatrix=new N(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);TC.prototype.findTimeInterval=_o.prototype.findTimeInterval;TC.prototype.wrapTime=_o.prototype.wrapTime;TC.prototype.clampTime=_o.prototype.clampTime;TC.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var a$=TC;var l5={};l5.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,A,g,m,_;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(A=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),A!==1&&(r.push(-1),r.push(1),r.push(2),r.push(A))):c&&(m=(e-o)/(n-o),_=(e-o)/(i-o),r.push(0),r.push(1),_!==1&&(r.push(-1),r.push(2),r.push(1),r.push(_)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(_=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(_),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),A=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(A)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};l5.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,A=i-a,g=1/(h*u+f*A),m=t-a,_=e-s,y=(h*_+f*m)*g,C=(-A*_+u*m)*g,E=1-y-C;return l(c)?(c.x=y,c.y=C,c.z=E,c):new d(y,C,E)};l5.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let A=u/h,g=f/h;if(A>=0&&A<=1&&g>=0&&g<=1)return l(c)||(c=new U),c.x=e+A*(n-e),c.y=t+A*(i-t),c};var r_=l5;function SC(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=f5(e.westIndices,o,t),this._southIndices=f5(e.southIndices,r,t),this._eastIndices=f5(e.eastIndices,o,t),this._northIndices=f5(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(SC.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var u5=[];function f5(e,t,n){u5.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)u5[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(u5.sort(t),Oe.createTypedArray(n,u5)):e}var gSe="createVerticesFromQuantizedTerrainMesh",Ywt=new di(gSe),qwt=new di(gSe,Am.maximumAsynchronousTasks);SC.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?qwt:Ywt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let A=this;return Promise.resolve(h).then(function(g){let m=A._quantizedVertices.length/3,_=m+A._westIndices.length+A._southIndices.length+A._eastIndices.length+A._northIndices.length,y=Oe.createTypedArray(_,g.indices),C=new Float32Array(g.vertices),E=g.center,I=g.minimumHeight,b=g.maximumHeight,S=A._boundingSphere,B=A._orientedBoundingBox,v=d.clone(g.occludeePointInScaledSpace)??A._horizonOcclusionPoint,P=g.vertexStride,M=Zc.clone(g.encoding);return A._mesh=new Ud(E,C,y,g.indexCountWithoutSkirts,m,I,b,S,v,P,B,M,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),A._quantizedVertices=void 0,A._encodedNormals=void 0,A._indices=void 0,A._uValues=void 0,A._vValues=void 0,A._heightValues=void 0,A._westIndices=void 0,A._southIndices=void 0,A._eastIndices=void 0,A._northIndices=void 0,A._mesh})};var Kwt=new di("upsampleQuantizedTerrainMesh",Am.maximumAsynchronousTasks);SC.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=Kwt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,_=u?g*.5:this._southSkirtHeight,y=c?this._eastSkirtHeight:g*.5,C=u?this._northSkirtHeight:g*.5,E=this._credits;return Promise.resolve(A).then(function(I){let b=new Uint16Array(I.vertices),S=Oe.createTypedArray(b.length/3,I.indices),B;return l(I.encodedNormals)&&(B=new Uint8Array(I.encodedNormals)),new SC({quantizedVertices:b,indices:S,encodedNormals:B,minimumHeight:I.minimumHeight,maximumHeight:I.maximumHeight,boundingSphere:le.clone(I.boundingSphere),orientedBoundingBox:Fn.clone(I.orientedBoundingBox),horizonOcclusionPoint:d.clone(I.horizonOcclusionPoint),westIndices:I.westIndices,southIndices:I.southIndices,eastIndices:I.eastIndices,northIndices:I.northIndices,westSkirtHeight:m,southSkirtHeight:_,eastSkirtHeight:y,northSkirtHeight:C,childTileMask:0,credits:E,createdByUpsampling:!0})})};var c$=32767,_Se=new d;SC.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1);i*=c$;let o=D.clamp((n-e.south)/e.height,0,1);return o*=c$,l(this._mesh)?$wt(this,i,o):eBt(this,i,o)};function ySe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var Xwt=new U,Jwt=new U,Zwt=new U;function $wt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,Xwt),g=r.decodeTextureCoordinates(o,f,Jwt),m=r.decodeTextureCoordinates(o,h,Zwt);if(ySe(t,n,A.x,A.y,g.x,g.y,m.x,m.y)){let _=r_.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,_Se);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}}function eBt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=i[u],g=i[f],m=i[h],_=o[u],y=o[f],C=o[h];if(ySe(t,n,A,_,g,y,m,C)){let E=r_.computeBarycentricCoordinates(t,n,A,_,g,y,m,C,_Se);if(E.x>=-1e-15&&E.y>=-1e-15&&E.z>=-1e-15){let I=E.x*r[u]+E.y*r[f]+E.z*r[h];return D.lerp(e._minimumHeight,e._maximumHeight,I/c$)}}}}SC.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};SC.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var Ax=SC;function tBt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function ESe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??te.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}ESe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function ISe(e,t,n){if(!t.format){let _="The tile format is not specified in the layer.json file.";throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(!t.tiles||t.tiles.length===0){let _="The layer.json file does not specify any tile URL templates.";throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let _=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new Ts({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let _=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let _=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,A=t.available,g;if(l(A)&&!l(h)){g=new xm(e.tilingScheme,A.length);for(let _=0;_<A.length;++_){let y=A[_],C=e.tilingScheme.getNumberOfYTilesAtLevel(_);l(e.overallAvailability[_])||(e.overallAvailability[_]=[]);for(let E=0;E<y.length;++E){let I=y[E],b=C-I.endY-1,S=C-I.startY-1;e.overallAvailability[_].push([I.startX,b,I.endX,S]),g.addAvailableTileRange(_,I.startX,b,I.endX,S)}}}else l(h)&&(f=new xm(e.tilingScheme,u),g=new xm(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new tBt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await f$(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function nBt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return f$(e,n);throw new ce(i)}async function iBt(e,t,n){await ISe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new xm(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Bt(e.attribution);e.tileCredits.push(o)}return!0}async function f$(e,t){try{let n=await e.layerJsonResource.fetchJson();return iBt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await ISe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):nBt(e,n,t)}}function bm(e){e=e??V.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new _e;let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var l$={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function CSe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function oBt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new Ec({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function rBt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,_=Uint16Array.BYTES_PER_ELEMENT,y=_*m,C=new DataView(t),E=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let I=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let b=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=new le(new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0)),C.getFloat64(a+f,!0));a+=h;let B=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let v=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let P=new Uint16Array(t,a,v*3);a+=v*g,v>64*1024&&(_=Uint32Array.BYTES_PER_ELEMENT,y=_*m);let M=P.subarray(0,v),L=P.subarray(v,2*v),p=P.subarray(v*2,3*v);On.zigZagDeltaDecode(M,L,p),a%_!==0&&(a+=_-a%_);let x=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let T=Oe.createTypedArrayFromArrayBuffer(v,t,a,x*m);a+=x*y;let w=0,R=T.length;for(let fe=0;fe<R;++fe){let ye=T[fe];T[fe]=w-ye,ye===0&&++w}let O=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let k=Oe.createTypedArrayFromArrayBuffer(v,t,a,O);a+=O*_;let Q=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let z=Oe.createTypedArrayFromArrayBuffer(v,t,a,Q);a+=Q*_;let F=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Oe.createTypedArrayFromArrayBuffer(v,t,a,F);a+=F*_;let W=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Z=Oe.createTypedArrayFromArrayBuffer(v,t,a,W);a+=W*_;let Y,$;for(;a<C.byteLength;){let fe=C.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let ye=C.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,fe===l$.OCT_VERTEX_NORMALS&&e._requestVertexNormals)Y=new Uint8Array(t,a,v*2);else if(fe===l$.WATER_MASK&&e._requestWaterMask)$=new Uint8Array(t,a,ye);else if(fe===l$.METADATA&&e._requestMetadata){let xe=C.getUint32(a,!0);if(xe>0){let Te=dr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,xe).available;if(l(Te))for(let ke=0;ke<Te.length;++ke){let Ge=n+ke+1,Ke=Te[ke],tt=e._tilingScheme.getNumberOfYTilesAtLevel(Ge);for(let en=0;en<Ke.length;++en){let it=Ke[en],nn=tt-it.endY-1,qt=tt-it.startY-1;e.availability.addAvailableTileRange(Ge,it.startX,nn,it.endX,qt),r.availability.addAvailableTileRange(Ge,it.startX,nn,it.endX,qt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=ye}let X=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ge=Fn.fromRectangle(he,I,b,e._tilingScheme.ellipsoid);return new Ax({center:E,minimumHeight:I,maximumHeight:b,boundingSphere:S,orientedBoundingBox:ge,horizonOcclusionPoint:B,quantizedVertices:P,encodedNormals:Y,indices:T,westIndices:k,southIndices:z,eastIndices:H,northIndices:Z,westSkirtHeight:X,southSkirtHeight:X,eastSkirtHeight:X,northSkirtHeight:X,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:$,credits:e._tileCredits})}bm.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=d$(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):xSe(this,e,t,n,r,i)};function xSe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new ce("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],A=o.resource;l(A._ionEndpoint)&&!l(A._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=CSe(void 0)):u=CSe(c);let g=A.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?oBt(e,m,i,t,n):rBt(e,m,i,t,n,o):Promise.reject(new ce("Mesh buffer doesn't exist."))})}Object.defineProperties(bm.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});bm.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};bm.fromIonAssetId=async function(e,t){let n=await Hu.fromAssetId(e);return bm.fromUrl(n,t)};bm.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash();let i=new ESe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await f$(i);let o=new bm(t);return i.build(o),o};bm.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(d$(this,e,t,n,i[r],r===0).result)return;return!1};bm.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=d$(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function u$(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function d$(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=u$(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let A=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});h=xSe(e,f.x,f.y,f.level,o,A),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=u$(o,f.x,f.y,f.level)}return{result:!1}}bm._getAvailabilityTile=u$;var px=bm;function s_(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new kl(n),this._workerName="createCircleGeometry"}s_.packedLength=kl.packedLength;s_.pack=function(e,t,n){return kl.pack(e._ellipseGeometry,t,n)};var bSe=new kl({center:new d,semiMajorAxis:1,semiMinorAxis:1}),xc={center:new d,radius:void 0,ellipsoid:te.clone(te.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Pe,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};s_.unpack=function(e,t,n){let i=kl.unpack(e,t,bSe);return xc.center=d.clone(i._center,xc.center),xc.ellipsoid=te.clone(i._ellipsoid,xc.ellipsoid),xc.ellipsoid=te.clone(i._ellipsoid,bSe._ellipsoid),xc.height=i._height,xc.extrudedHeight=i._extrudedHeight,xc.granularity=i._granularity,xc.vertexFormat=Pe.clone(i._vertexFormat,xc.vertexFormat),xc.stRotation=i._stRotation,xc.shadowVolume=i._shadowVolume,l(n)?(xc.semiMajorAxis=i._semiMajorAxis,xc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new kl(xc),n):(xc.radius=i._semiMajorAxis,new s_(xc))};s_.createGeometry=function(e){return kl.createGeometry(e._ellipseGeometry)};s_.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new s_({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(s_.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var h$=s_;function Vw(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new Af(n),this._workerName="createCircleOutlineGeometry"}Vw.packedLength=Af.packedLength;Vw.pack=function(e,t,n){return Af.pack(e._ellipseGeometry,t,n)};var sBt=new Af({center:new d,semiMajorAxis:1,semiMinorAxis:1}),Lf={center:new d,radius:void 0,ellipsoid:te.clone(te.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};Vw.unpack=function(e,t,n){let i=Af.unpack(e,t,sBt);return Lf.center=d.clone(i._center,Lf.center),Lf.ellipsoid=te.clone(i._ellipsoid,Lf.ellipsoid),Lf.height=i._height,Lf.extrudedHeight=i._extrudedHeight,Lf.granularity=i._granularity,Lf.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(Lf.semiMajorAxis=i._semiMajorAxis,Lf.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Af(Lf),n):(Lf.radius=i._semiMajorAxis,new Vw(Lf))};Vw.createGeometry=function(e){return Af.createGeometry(e._ellipseGeometry)};var m$=Vw;function Hw(e){e=e??V.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new so({ellipsoid:e.ellipsoid??te.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e;let n=e.credit;typeof n=="string"&&(n=new Bt(n)),this._credit=n}Object.defineProperties(Hw.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});Hw.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new Ec({buffer:c,width:r,height:s})})};Hw.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Hw.prototype.getTileDataAvailable=function(e,t,n){};Hw.prototype.loadTileDataAvailability=function(e,t,n){};var A$=Hw;function TSe(e){this.proxy=e}TSe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var p$=TSe;var aBt={SEARCH:0,AUTOCOMPLETE:1},wC=Object.freeze(aBt);function d5(){me.throwInstantiationError()}Object.defineProperties(d5.prototype,{credit:{get:me.throwInstantiationError}});d5.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Bt.getIonCredit)};d5.prototype.geocode=me.throwInstantiationError;var Ww=d5;function SSe(){me.throwInstantiationError()}SSe.createGeometry=function(e){me.throwInstantiationError()};var g$=SSe;var hBt=xr(_$(),1);function cBt(e,t){return(e&t)!==0}var il=cBt;var lBt=[1,2,4,8],wSe=15,uBt=16,fBt=64,dBt=128;function zA(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}zA.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new zA(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};zA.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};zA.prototype.hasSubtree=function(){return il(this._bits,uBt)};zA.prototype.hasImagery=function(){return il(this._bits,fBt)};zA.prototype.hasTerrain=function(){return il(this._bits,dBt)};zA.prototype.hasChildren=function(){return il(this._bits,wSe)};zA.prototype.hasChild=function(e){return il(this._bits,lBt[e])};zA.prototype.getChildBitmask=function(){return this._bits&wSe};var m3=zA;function mBt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var ABt=mBt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function Of(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=D.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(Of.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});Of.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof we)&&(t=e.url);let n=we.createIfNeeded(t);n.appendForwardSlash();let i=new Of;i._resource=n;try{await pBt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${DSe(i,"",1).url}: ${o}`;throw new ce(r)}return i};Of.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;il(t,r)?il(e,r)&&(s|=1):(s|=2,il(e,r)||(s|=1)),i+=s}return i};Of.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];il(s,2)?il(s,1)||(t|=r):(n|=r,il(s,1)&&(t|=r))}return{x:t,y:n,level:i}};Of.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var BSe=new di("decodeGoogleEarthEnterprisePacket");Of.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=DSe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return BSe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let A=Object.keys(u);A.sort(function(m,_){return m.length-_.length});let g=A.length;for(let m=0;m<g;++m){let _=A[m];if(u[_]!==null){let C=m3.clone(u[_]),E=_.length;if(E===h)C.setParent(f);else if(E>1){let I=r[_.substring(0,_.length-1)];C.setParent(I)}r[_]=C}else r[_]=null}})})};Of.prototype.populateSubtree=function(e,t,n,i){let o=Of.tileXYToQuadKey(e,t,n);return E$(this,o,i)};function E$(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),E$(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new ce(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),E$(e,t,s)}).finally(function(){delete a[o]})}Of.prototype.getTileInformation=function(e,t,n){let i=Of.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};Of.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function DSe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var y$,C$;function pBt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(C$)){let n=fn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;C$=zC(n).then(function(){y$=window.cesiumGoogleEarthDbRootParser(hBt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return C$.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=y$.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return BSe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=y$.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new Bt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=ABt})}var a_=Of;function gx(e){e=e??V.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(gx.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var RSe="createVerticesFromGoogleEarthEnterpriseBuffer",gBt=new di(RSe),_Bt=new di(RSe,Am.maximumAsynchronousTasks),vSe=new ae,I$=new ae;gx.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,vSe),t.tileXYToRectangle(n,i,o,I$);let u=c.cartographicToCartesian(ae.center(I$)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?_Bt:gBt).scheduleTask({buffer:this._buffer,nativeRectangle:vSe,rectangle:I$,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(_){return m._mesh=new Ud(u,new Float32Array(_.vertices),new Uint16Array(_.indices),_.indexCountWithoutSkirts,_.vertexCountWithoutSkirts,_.minimumHeight,_.maximumHeight,le.clone(_.boundingSphere3D),d.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,Fn.clone(_.orientedBoundingBox),Zc.clone(_.encoding),_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),m._minimumHeight=_.minimumHeight,m._maximumHeight=_.maximumHeight,m._buffer=void 0,m._mesh})};gx.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1),o=D.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?xBt(this,i,o):SBt(this,i,o,e)};var yBt=new di("upsampleQuantizedTerrainMesh",Am.maximumAsynchronousTasks);gx.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=yBt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=this;return A.then(function(m){let _=new Uint16Array(m.vertices),y=Oe.createTypedArray(_.length/3,m.indices),C=g._skirtHeight;return new Ax({quantizedVertices:_,indices:y,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:le.clone(m.boundingSphere),orientedBoundingBox:Fn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:C,southSkirtHeight:C,eastSkirtHeight:C,northSkirtHeight:C,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};gx.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};gx.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var CBt=new U,EBt=new U,IBt=new U,MSe=new d;function xBt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,CBt),g=r.decodeTextureCoordinates(o,f,EBt),m=r.decodeTextureCoordinates(o,h,IBt),_=r_.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,MSe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}var bBt=Uint16Array.BYTES_PER_ELEMENT,PSe=Uint32Array.BYTES_PER_ELEMENT,x$=Int32Array.BYTES_PER_ELEMENT,TBt=Float32Array.BYTES_PER_ELEMENT,b$=Float64Array.BYTES_PER_ELEMENT;function SBt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let S=0;S<r;++S)u+=c.getUint32(u,!0),u+=PSe;u+=PSe,u+=2*b$;let f=D.toRadians(c.getFloat64(u,!0)*180);u+=b$;let h=D.toRadians(c.getFloat64(u,!0)*180);u+=b$;let A=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=x$;let _=c.getInt32(u,!0)*3;u+=x$,u+=x$;let y=new Array(m),C=new Array(m),E=new Array(m),I;for(I=0;I<m;++I)y[I]=s+c.getUint8(u++)*A,C[I]=a+c.getUint8(u++)*g,E[I]=c.getFloat32(u,!0)*6371010,u+=TBt;let b=new Array(_);for(I=0;I<_;++I)b[I]=c.getUint16(u,!0),u+=bBt;for(I=0;I<_;I+=3){let S=b[I],B=b[I+1],v=b[I+2],P=y[S],M=y[B],L=y[v],p=C[S],x=C[B],T=C[v],w=r_.computeBarycentricCoordinates(t,n,P,p,M,x,L,T,MSe);if(w.x>=-1e-15&&w.y>=-1e-15&&w.z>=-1e-15)return w.x*E[S]+w.y*E[B]+w.z*E[v]}}var jw=gx;var Kd={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},h5=new K;function m5(){this._terrainCache={},this._lastTidy=K.now()}m5.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:K.now()}};m5.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};m5.prototype.tidy=function(){if(K.now(h5),K.secondsDifference(h5,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];K.secondsDifference(h5,r.timestamp)>10&&delete e[o]}K.clone(h5,this._lastTidy)}};function BC(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new m5,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new _e}Object.defineProperties(BC.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});BC.fromMetadata=function(e,t){if(!e.terrainPresent)throw new ce(`The server ${e.url} doesn't have terrain`);let n=new BC(t);return n._metadata=e,n};var wBt=new di("decodeGoogleEarthEnterprisePacket");function NSe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===Kd.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}BC.prototype.requestTileGeometry=function(e,t,n,i){let o=a_.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new ce("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=Kd.UNKNOWN);let u=r.get(o);if(l(u)){let C=s.providers[a.terrainProvider];return Promise.resolve(new jw({buffer:u,childTileMask:NSe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===Kd.NONE)return Promise.reject(new ce("Terrain tile doesn't exist"))}else return Promise.resolve(new Ec({buffer:new Uint8Array(256),width:16,height:16}));let f,h=o,A=-1;switch(c){case Kd.SELF:A=a.terrainVersion;break;case Kd.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),A=f.terrainVersion;break;case Kd.UNKNOWN:a.hasTerrain()?A=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(A=f.terrainVersion));break}if(A<0)return Promise.reject(new ce("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,_,y;if(l(g[h]))_=g[h],y=m[h];else{y=i;let C=BBt(this,h,A,y).fetchArrayBuffer();if(!l(C))return;_=C.then(function(E){return l(E)?wBt.scheduleTask({buffer:E,type:"Terrain",key:s.key},[E]).then(function(I){let b=s.getTileInformationFromQuadKey(h);b.terrainState=Kd.SELF,r.add(h,I[0]);let S=b.terrainProvider,B=I.length-1;for(let v=0;v<B;++v){let P=h+v.toString(),M=s.getTileInformationFromQuadKey(P);l(M)&&(r.add(P,I[v+1]),M.terrainState=Kd.PARENT,M.terrainProvider===0&&(M.terrainProvider=S))}}):Promise.reject(new ce("Failed to load terrain."))}),g[h]=_,m[h]=y,_=_.finally(function(){delete g[h],delete m[h]})}return _.then(function(){let C=r.get(o);if(l(C)){let E=s.providers[a.terrainProvider];return new jw({buffer:C,childTileMask:NSe(o,a,s),credits:l(E)?[E]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new ce("Failed to load terrain."))}).catch(function(C){return y.state===fi.CANCELLED?(i.state=y.state,Promise.reject(C)):(a.terrainState=Kd.NONE,Promise.reject(C))})};BC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};BC.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=a_.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===Kd.NONE)return!1;if((!l(s)||s===Kd.UNKNOWN)&&(r.terrainState=Kd.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};BC.prototype.loadTileDataAvailability=function(e,t,n){};function BBt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var T$=BC;var DBt="https://maps.googleapis.com/maps/api/geocode/json",LSe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function S$(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._resource=new we({url:DBt,queryParameters:{key:t}}),this._credit=new Bt(LSe,!0)}Object.defineProperties(S$.prototype,{credit:{get:function(){return this._credit}}});S$.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new ce(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:LSe,collapsible:!1}}})};var w$=S$;var A5={};A5.defaultApiKey=void 0;A5.mapTilesApiEndpoint=new we({url:"https://tile.googleapis.com/v1/"});A5.getDefaultCredit=function(){return new Bt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var _x=A5;var Vs={};Vs.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Vs.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Vs.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Vs.defaultAccessToken=void 0;Vs.defaultShareKey=void 0;Vs._getAuthorizationHeader=function(){return l(Vs.defaultShareKey)?`Basic ${Vs.defaultShareKey}`:`Bearer ${Vs.defaultAccessToken}`};Vs.apiEndpoint=new we({url:"https://api.bentley.com"});Vs.getExports=async function(e,t){let n=new we({url:`${Vs.apiEndpoint}mesh-export`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Vs.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Vs.getRealityDataMetadata=async function(e,t){let n=new we({url:`${Vs.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Vs.getRealityDataURL=async function(e,t,n){let i=new we({url:`${Vs.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new ce("Not allowed, forbidden");if(o.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new ce(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${o.statusCode}`)}};var ra=Vs;var A3={};A3.type=void 0;A3.getRequiredDataPoints=me.throwInstantiationError;A3.interpolateOrderZero=me.throwInstantiationError;A3.interpolate=me.throwInstantiationError;var B$=A3;var vBt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},c_=Object.freeze(vBt);function D$(e){this._url=we.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(D$.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});D$.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===wC.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var p3=D$;function PBt(e){if(!Object.values(c_).some(t=>t===e))throw new me(`Invalid geocodeProviderType: "${e}"`)}var OSe=Object.freeze({[c_.GOOGLE]:"google",[c_.BING]:"bing",[c_.DEFAULT]:void 0});function RBt(e){return OSe[e]}function MBt(e){return Object.entries(OSe).find(t=>t[1]===e)[0]}function v$(e){e=e??V.EMPTY_OBJECT;let t=e.geocodeProviderType??c_.DEFAULT,n=e.accessToken??Eh.defaultAccessToken,i=we.createIfNeeded(e.server??Eh.defaultServer);i.appendForwardSlash();let o=Eh.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Bt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new p3(r),this.geocodeProviderType=t}Object.defineProperties(v$.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return MBt(this._pelias.url.queryParameters.geocoder)},set:function(e){PBt(e);let t={...this._pelias.url.queryParameters,geocoder:RBt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});v$.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var yx=v$;function p5(){me.throwInstantiationError()}Object.defineProperties(p5.prototype,{ellipsoid:{get:me.throwInstantiationError}});p5.prototype.project=me.throwInstantiationError;p5.prototype.unproject=me.throwInstantiationError;var P$=p5;function Yw(e){e=e??V.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(Yw.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});Yw.prototype.findTimeInterval=_o.prototype.findTimeInterval;Yw.prototype.wrapTime=_o.prototype.wrapTime;Yw.prototype.clampTime=_o.prototype.clampTime;Yw.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var R$=Yw;function M$(e,t,n){e=we.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Bt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(M$.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});M$.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:Tt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var N$=M$;var NBt={packedLength:void 0,pack:me.throwInstantiationError,unpack:me.throwInstantiationError},L$=NBt;var LBt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:me.throwInstantiationError,unpackInterpolationResult:me.throwInstantiationError},O$=LBt;function FSe(){me.throwInstantiationError()}FSe.prototype.getURL=me.throwInstantiationError;var F$=FSe;function OBt(e,t,n,i,o,r,s){let a=Wi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,A=n.alpha,g=i.red,m=i.green,_=i.blue,y=i.alpha;if(G.equals(n,i)){for(c=0;c<a;c++)r[s++]=G.floatToByte(u),r[s++]=G.floatToByte(f),r[s++]=G.floatToByte(h),r[s++]=G.floatToByte(A);return s}let C=(g-u)/a,E=(m-f)/a,I=(_-h)/a,b=(y-A)/a,S=s;for(c=0;c<a;c++)r[S++]=G.floatToByte(u+c*C),r[S++]=G.floatToByte(f+c*E),r[S++]=G.floatToByte(h+c*I),r[S++]=G.floatToByte(A+c*b);return S}function g3(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??cn.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??te.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*G.packedLength:1,this.packedLength=o+te.packedLength+3}g3.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};g3.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t);t+=te.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new g3({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var g5=new Array(2),_5=new Array(2),FBt={positions:g5,height:_5,ellipsoid:void 0,minDistance:void 0,granularity:void 0};g3.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=D.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,A,g,m,_=0;if(o===cn.GEODESIC||o===cn.RHUMB){let b,S,B;o===cn.GEODESIC?(b=D.chordLength(r,s.maximumRadius),S=Wi.numberOfPoints,B=Wi.generateArc):(b=r,S=Wi.numberOfPointsRhumbLine,B=Wi.generateRhumbArc);let v=Wi.extractHeights(t,s),P=FBt;if(o===cn.GEODESIC?P.minDistance=a:P.granularity=r,P.ellipsoid=s,c){let M=0;for(u=0;u<f-1;u++)M+=S(t[u],t[u+1],b)+1;h=new Float64Array(M*3),g=new Uint8Array(M*4),P.positions=g5,P.height=_5;let L=0;for(u=0;u<f-1;++u){g5[0]=t[u],g5[1]=t[u+1],_5[0]=v[u],_5[1]=v[u+1];let p=B(P);if(l(n)){let x=p.length/3;m=n[u];for(let T=0;T<x;++T)g[L++]=G.floatToByte(m.red),g[L++]=G.floatToByte(m.green),g[L++]=G.floatToByte(m.blue),g[L++]=G.floatToByte(m.alpha)}h.set(p,_),_+=p.length}}else if(P.positions=t,P.height=v,h=new Float64Array(B(P)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let L=t[u],p=t[u+1],x=n[u],T=n[u+1];_=OBt(L,p,x,T,a,g,_)}let M=n[f-1];g[_++]=G.floatToByte(M.red),g[_++]=G.floatToByte(M.green),g[_++]=G.floatToByte(M.blue),g[_++]=G.floatToByte(M.alpha)}}else{A=c?f*2-2:f,h=new Float64Array(A*3),g=l(n)?new Uint8Array(A*4):void 0;let b=0,S=0;for(u=0;u<f;++u){let B=t[u];if(c&&u>0&&(d.pack(B,h,b),b+=3,m=n[u-1],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(B,h,b),b+=3,l(n)&&(m=n[u],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha))}}let y=new yn;y.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(y.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),A=h.length/3;let C=(A-1)*2,E=Oe.createTypedArray(A,C),I=0;for(u=0;u<A-1;++u)E[I++]=u,E[I++]=u+1;return new ht({attributes:y,indices:E,primitiveType:Me.LINES,boundingSphere:le.fromPoints(t)})};var Q$=g3;function qw(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new Ia(i),this._workerName="createSphereGeometry"}qw.packedLength=Ia.packedLength;qw.pack=function(e,t,n){return Ia.pack(e._ellipsoidGeometry,t,n)};var QBt=new Ia,DC={radius:void 0,radii:new d,vertexFormat:new Pe,stackPartitions:void 0,slicePartitions:void 0};qw.unpack=function(e,t,n){let i=Ia.unpack(e,t,QBt);return DC.vertexFormat=Pe.clone(i._vertexFormat,DC.vertexFormat),DC.stackPartitions=i._stackPartitions,DC.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,DC.radii),n._ellipsoidGeometry=new Ia(DC),n):(DC.radius=i._radii.x,new qw(DC))};qw.createGeometry=function(e){return Ia.createGeometry(e._ellipsoidGeometry)};var k$=qw;function vC(e){}Object.defineProperties(vC.prototype,{ellipsoid:{get:me.throwInstantiationError},rectangle:{get:me.throwInstantiationError},projection:{get:me.throwInstantiationError}});vC.prototype.getNumberOfXTilesAtLevel=me.throwInstantiationError;vC.prototype.getNumberOfYTilesAtLevel=me.throwInstantiationError;vC.prototype.rectangleToNativeRectangle=me.throwInstantiationError;vC.prototype.tileXYToNativeRectangle=me.throwInstantiationError;vC.prototype.tileXYToRectangle=me.throwInstantiationError;vC.prototype.positionToTileXY=me.throwInstantiationError;var U$=vC;function kBt(e,t){this.rectangle=e,this.maxLevel=t}function QSe(e){this.ellipsoid=e.ellipsoid??te.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}QSe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function UBt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new so({ellipsoid:e.ellipsoid});else throw new ce(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=D.toRadians(parseFloat(s.getAttribute("minx"))),c=D.toRadians(parseFloat(s.getAttribute("miny"))),u=D.toRadians(parseFloat(s.getAttribute("maxx"))),f=D.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new kBt(new ae(a,c,u,f),h))}}function GBt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function zBt(e,t,n){try{let i=await t.fetchXML();UBt(e,i)}catch(i){GBt(t,i,n)}}function PC(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(PC.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});PC.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=new QSe(t),i=we.createIfNeeded(e);await zBt(n,i);let o=new PC(t);return n.build(o),o._resource=i,o};PC.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new Ec({buffer:oh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:VBt(a,e,t,n),structure:a._terrainDataStructure})})};PC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var kSe=new ae;function VBt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,kSe);l(h)&&(y5(o,f,t*2,n*2,i+1)&&(a|=4),y5(o,f,t*2+1,n*2,i+1)&&(a|=8),y5(o,f,t*2,n*2+1,i+1)&&(a|=1),y5(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function y5(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,kSe))}PC.prototype.getTileDataAvailable=function(e,t,n){};PC.prototype.loadTileDataAvailability=function(e,t,n){};var G$=PC;function Cx(e){e=e??V.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??je.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(Cx.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(Cx.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=HBt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});Cx.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};Cx.prototype.isDestroyed=function(){return!1};Cx.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};Cx.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??je.MINIMUM_VALUE,s=K.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?this.tolerance??1:.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function HBt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var z$=Cx;var WBt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},V$=Object.freeze(WBt);function jBt(e){return e=e??V.EMPTY_OBJECT,px.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var _3=jBt;function YBt(e){return e=e??V.EMPTY_OBJECT,px.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:te.WGS84})}var Ex=YBt;var qBt=1953029805,KBt=2917034100;function H$(e,t){if(H$.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new ce("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===qBt||o===KBt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}H$.passThroughDataForTesting=!1;var y3=H$;function USe(e,t){return Tr("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(USe,"EMPTY_OBJECT",{get:function(){return Tr("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),V.EMPTY_OBJECT}});var W$=USe;var XBt=new d;function JBt(e,t,n,i){let o=JC(e,t,n,i,XBt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var j$=JBt;function ZBt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var Ix=ZBt;function $Bt(e){switch(e){case ee.FLOAT:return"float";case ee.FLOAT_VEC2:return"vec2";case ee.FLOAT_VEC3:return"vec3";case ee.FLOAT_VEC4:return"vec4";case ee.FLOAT_MAT2:return"mat2";case ee.FLOAT_MAT3:return"mat3";case ee.FLOAT_MAT4:return"mat4";case ee.SAMPLER_2D:return"sampler2D";case ee.BOOL:return"bool"}}var Y$=$Bt;function eDt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var C3=eDt;var tDt=new d(1,1,1);function q$(e){e=e??tDt,this._dimensions=d.clone(e)}Object.defineProperties(q$.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var nDt=new d;q$.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,nDt),i=D.randomBetween(-n.x,n.x),o=D.randomBetween(-n.y,n.y),r=D.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var K$=q$;function VA(){this.featurePropertiesDirty=!1}Object.defineProperties(VA.prototype,{featuresLength:{get:function(){me.throwInstantiationError()}},pointsLength:{get:function(){me.throwInstantiationError()}},trianglesLength:{get:function(){me.throwInstantiationError()}},geometryByteLength:{get:function(){me.throwInstantiationError()}},texturesByteLength:{get:function(){me.throwInstantiationError()}},batchTableByteLength:{get:function(){me.throwInstantiationError()}},innerContents:{get:function(){me.throwInstantiationError()}},ready:{get:function(){me.throwInstantiationError()}},tileset:{get:function(){me.throwInstantiationError()}},tile:{get:function(){me.throwInstantiationError()}},url:{get:function(){me.throwInstantiationError()}},batchTable:{get:function(){me.throwInstantiationError()}},metadata:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}},group:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}}});VA.prototype.hasProperty=function(e,t){me.throwInstantiationError()};VA.prototype.getFeature=function(e){me.throwInstantiationError()};VA.prototype.applyDebugSettings=function(e,t){me.throwInstantiationError()};VA.prototype.applyStyle=function(e){me.throwInstantiationError()};VA.prototype.update=function(e,t){me.throwInstantiationError()};VA.prototype.pick=function(e,t,n){me.throwInstantiationError()};VA.prototype.isDestroyed=function(){me.throwInstantiationError()};VA.prototype.destroy=function(){me.throwInstantiationError()};var X$=VA;function Kw(e,t){this._conditionsExpression=ze(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,oDt(this,t)}Object.defineProperties(Kw.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function iDt(e,t){this.condition=e,this.expression=t}function oDt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new iDt(new id(a,t),new id(c,t)))}e._runtimeConditions=n}Kw.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};Kw.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};Kw.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u}) + { + return ${f}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};Kw.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];si(e,o.condition.getVariables()),si(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var E3=Kw;function RC(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,rDt(this,e)}function rDt(e,t){t=ze(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??V.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new id(o[r],i))}e._meta=n,e._ready=!0}function yr(e,t){let n=(e._style??V.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new id(String(t));if(typeof t=="string")return new id(t,n);if(l(t.conditions))return new E3(t,n)}else return;return t}function Cr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ze(e.conditionsExpression,!0)}else return;return e}Object.defineProperties(RC.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=yr(this,e),this._style.show=Cr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=yr(this,e),this._style.color=Cr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=yr(this,e),this._style.pointSize=Cr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=yr(this,e),this._style.pointOutlineColor=Cr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=yr(this,e),this._style.pointOutlineWidth=Cr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=yr(this,e),this._style.labelColor=Cr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=yr(this,e),this._style.labelOutlineColor=Cr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=yr(this,e),this._style.labelOutlineWidth=Cr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=yr(this,e),this._style.font=Cr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=yr(this,e),this._style.labelStyle=Cr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=yr(this,e),this._style.labelText=Cr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=yr(this,e),this._style.backgroundColor=Cr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=yr(this,e),this._style.backgroundPadding=Cr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=yr(this,e),this._style.backgroundEnabled=Cr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=yr(this,e),this._style.scaleByDistance=Cr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=yr(this,e),this._style.translucencyByDistance=Cr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=yr(this,e),this._style.distanceDisplayCondition=Cr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=yr(this,e),this._style.heightOffset=Cr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=yr(this,e),this._style.anchorLineEnabled=Cr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=yr(this,e),this._style.anchorLineColor=Cr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=yr(this,e),this._style.image=Cr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=yr(this,e),this._style.disableDepthTestDistance=Cr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=yr(this,e),this._style.horizontalOrigin=Cr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=yr(this,e),this._style.verticalOrigin=Cr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=yr(this,e),this._style.labelHorizontalOrigin=Cr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=yr(this,e),this._style.labelVerticalOrigin=Cr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});RC.fromUrl=function(e){return we.createIfNeeded(e).fetchJson(e).then(function(n){return new RC(n)})};RC.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};RC.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};RC.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};RC.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&si(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&si(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&si(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var xx=RC;function I3(e){e=e??V.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new cx({comparator:I3.comparator})}I3.prototype.addSubtree=function(e){let t=new sDt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};I3.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};I3.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function sDt(e,t){this.subtree=e,this.stamp=t}var x3=I3;function b3(e){e=e??V.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=N.IDENTITY.clone(),shapeTransform:f=N.IDENTITY.clone(),minBounds:h,maxBounds:A,minimumValues:g,maximumValues:m,maximumTileCount:_}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=A,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===ec.ELLIPSOID?Yd.Z_UP:Yd.Y_UP,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=_,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new x3}Object.defineProperties(b3.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});b3.fromUrl=async function(e){let t=we.createIfNeeded(e),n=await t.fetchJson();cDt(n);let i=ADt(n,t);await i.load();let{root:o}=n,r=Ei(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new N0({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=pDt(s,c);Object.assign(u,lDt(o)),l(o.transform)?u.globalTransform=N.unpack(o.transform):u.globalTransform=N.clone(N.IDENTITY),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=aDt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new b3(u),h=new O0(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,Fi.unload(i),f};function aDt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(qE.TILESET_TILE_COUNT)}function cDt(e){let t=e.root;if(!l(t.content))throw new ce("Root must have content");if(!Ei(t.content,"3DTILES_content_voxels"))throw new ce("Root tile content must have 3DTILES_content_voxels extension");if(!Ei(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new ce("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ei(e,"3DTILES_metadata"))throw new ce("Tileset must have a metadata schema")}function lDt(e){let t=e.boundingVolume;if(l(t.box))return hDt(t.box);if(l(t.region))return uDt(t.region);if(Ei(t,"3DTILES_bounding_volume_cylinder"))return mDt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new ce("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function uDt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=N.fromScale(te.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:ec.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a}}var fDt=new d,dDt=new J;function hDt(e){let t=Fn.unpack(e),n=J.getScale(t.halfAxes,fDt),i=J.getRotation(t.halfAxes,dDt);return{shape:ec.BOX,minBounds:d.negate(n,new d),maxBounds:d.clone(n),shapeTransform:N.fromRotationTranslation(i,t.center)}}function mDt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-D.PI,maxAngle:r=D.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],u=.5*i+s[2],f=N.fromTranslationQuaternionRotationScale(d.unpack(s),Le.unpack(a),d.ONE);return{shape:ec.CYLINDER,minBounds:d.fromElements(t,o,c),maxBounds:d.fromElements(n,r,u),shapeTransform:f}}function ADt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Fi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Fi.getSchemaLoader({schema:i})}function pDt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:_,componentType:y}=m,C=o?.properties[g].min,E=o?.properties[g].max,I=pt.getComponentCount(_),b=GSe(C,I),S=GSe(E,I);return{id:g,type:_,componentType:y,minValue:b,maxValue:S}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),A=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:A?f:void 0,maximumValues:A?h:void 0}}function GSe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function gDt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=lg(a);return o=await YE.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}b3.prototype.requestData=async function(e){e=e??V.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new F0({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await gDt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:_}=s,y=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),C=_.getDerivedResource({url:y.url});return ox.fromGltf(C)};var J$=b3;function Z$(e){e=e??1,this._radius=e??1}Object.defineProperties(Z$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});Z$.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var T3=Z$;var $$={CUMULUS:0};$$.validate=function(e){return e===$$.CUMULUS};var Xw=Object.freeze($$);function Tm(e,t){if(e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new U(this._maximumSize.x,this._maximumSize.y);else{this._scale=U.clone(e.scale??new U(20,12));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=G.clone(e.color??G.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var _Dt=Tm.SHOW_INDEX=0,yDt=Tm.POSITION_INDEX=1,CDt=Tm.SCALE_INDEX=2,EDt=Tm.MAXIMUM_SIZE_INDEX=3,IDt=Tm.SLICE_INDEX=4,xDt=Tm.BRIGHTNESS_INDEX=5,bDt=Tm.COLOR_INDEX=6;Tm.NUMBER_OF_PROPERTIES=7;function bx(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Tm.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,bx(this,_Dt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),bx(this,yDt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;U.equals(t,e)||(U.clone(e,t),bx(this,CDt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),bx(this,EDt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),bx(this,bDt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,bx(this,IDt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,bx(this,xDt))}}});Tm.prototype._destroy=function(){this._cloudCollection=void 0};var Ff=Tm;var Qf,C5=new d,TDt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},SDt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},wDt=Ff.SHOW_INDEX,BDt=Ff.POSITION_INDEX,DDt=Ff.SCALE_INDEX,vDt=Ff.MAXIMUM_SIZE_INDEX,PDt=Ff.SLICE_INDEX,RDt=Ff.BRIGHTNESS_INDEX,MDt=Ff.NUMBER_OF_PROPERTIES,NDt=Ff.COLOR_INDEX;function Sm(e){e=e??V.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(MDt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=d.clone(e.noiseOffset??d.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:zSe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function zSe(e){return function(){return C5.x=e._textureSliceWidth,C5.y=e._noiseTextureRows,C5.z=1/e._noiseTextureRows,C5}}Object.defineProperties(Sm.prototype,{length:{get:function(){return tee(this),this._clouds.length}}});function VSe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Sm.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let t=e.cloudType??Xw.CUMULUS,n;return t===Xw.CUMULUS&&(n=new Ff(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};Sm.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Sm.prototype.removeAll=function(){VSe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function tee(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}Sm.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};Sm.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};Sm.prototype.get=function(e){return tee(this),this._clouds[e]};var LDt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),ODt=new Uint16Array([0,1,2,0,2,3]);function FDt(e){let t=Ct.createVertexBuffer({context:e,typedArray:LDt,usage:Qe.STATIC_DRAW}),n=Ct.createIndexBuffer({context:e,typedArray:ODt,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:q.FLOAT}];return new li({context:e,attributes:i,indexBuffer:n})}var nee;function QDt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Ct.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function kDt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Ct.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function UDt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Ct.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function GDt(e,t,n){let i=[{index:Qf.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.packedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.packedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.color,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,usage:Qe.STATIC_DRAW}];n&&i.push({index:Qf.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:UDt(e)});let o=n?t:4*t;return new Zp(e,i,o,n)}var eee=new ei;function HSe(e,t,n,i){let o,r=n[Qf.positionHighAndScaleX],s=n[Qf.positionLowAndScaleY],a=i.position;ei.fromCartesian(a,eee);let c=i.scale,u=eee.high,f=eee.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function WSe(e,t,n,i){let o,r=n[Qf.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function jSe(e,t,n,i){let o,r=n[Qf.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function YSe(e,t,n,i){let o,r=n[Qf.color],s=i.color,a=G.floatToByte(s.red),c=G.floatToByte(s.green),u=G.floatToByte(s.blue),f=G.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function zDt(e,t,n,i){HSe(e,t,n,i),WSe(e,t,n,i),jSe(e,t,n,i),YSe(e,t,n,i)}function VDt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=FDt(a),o._spNoise=an.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Mt({context:a,width:r*r/s,height:r*s,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA,sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})});let f=new Tl({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:zSe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function HDt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=GDt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];zDt(e,t,s,c)}n._vaf.commit(nee(i))}}var WDt=[];function jDt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=WDt;u.length=0,(c[BDt]||c[DDt])&&u.push(HSe),(c[wDt]||c[RDt])&&u.push(WSe),(c[vDt]||c[PDt])&&u.push(jSe),c[NDt]&&u.push(YSe);let f=u.length,h=i._vaf.writers,A,g,m;if(a/r>.1){for(A=0;A<a;++A)for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(nee(n))}else{for(A=0;A<a;++A){for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function YDt(e,t,n,i){let o=t.context,r=e,s=new He({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new He({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=an.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:Qf}),r._rs=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!1,blending:pn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function qDt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new nt),f.pass=Be.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}Sm.prototype.update=function(e){if(tee(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&VDt(this,e,P2,v2),this._instanced=e.context.instancedArrays,Qf=this._instanced?SDt:TDt,nee=this._instanced?kDt:QDt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?HDt(this,e):r>0&&jDt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&YDt(this,e,D2,B2),qDt(this,e))};Sm.prototype.isDestroyed=function(){return!1};Sm.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),VSe(this._clouds),ue(this)};var iee=Sm;var KDt=D.toRadians(30);function oee(e){this._angle=e??KDt}Object.defineProperties(oee.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});oee.prototype.emit=function(e){let t=Math.tan(this._angle),n=D.randomBetween(0,D.TWO_PI),i=D.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var ree=oee;function S3(e){e=e??V.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=po.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(S3.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});S3.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;S3.prototype.isTranslucent=po.prototype.isTranslucent;S3.prototype.getRenderState=po.prototype.getRenderState;var see=S3;function E5(e){e=e??V.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this.id=e.id,this._id=void 0,this._primitive=void 0}E5.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!N.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=N.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.RED,G.RED],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this}),n=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.GREEN,G.GREEN],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this}),i=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.BLUE,G.BLUE],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this});this._primitive=new Qn({geometryInstances:[t,n,i],appearance:new Cs,asynchronous:!1})}this._primitive.update(e)}};E5.prototype.isDestroyed=function(){return!1};E5.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var w3=E5;function XDt(e){this.direction=d.clone(e.direction),this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??1}var aee=XDt;var B3=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var D3=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function Tx(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??D3,this._fragmentShaderSource=e.fragmentShaderSource??B3,this._renderState=po.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(Tx.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return Tx.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});Tx.VERTEX_FORMAT=Pe.POSITION_AND_ST;Tx.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;Tx.prototype.isTranslucent=po.prototype.isTranslucent;Tx.prototype.getRenderState=po.prototype.getRenderState;var cee=Tx;function vu(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??vu.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??vu.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??vu.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??vu.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??vu.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new _e,this._nominalFrameRate=new _e,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){JDt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){ZDt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}vu.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};vu.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new vu({scene:e})),e._frameRateMonitor};Object.defineProperties(vu.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});vu.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};vu.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};vu.prototype.isDestroyed=function(){return!1};vu.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function JDt(e,t){if(e._pauseCount>0)return;let n=Li();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ri.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ri.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ri.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function ZDt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var v3=vu;var qSe=xr(_$(),1);function lee(){this._image=new Image}lee.prototype.isReady=function(){return!0};lee.prototype.shouldDiscardImage=function(e){return e===this._image};function Sx(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new lee),this._errorEvent=new _e}Object.defineProperties(Sx.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});Sx.fromMetadata=function(e,t){if(!e.imageryPresent)throw new ce(`The server ${e.url} doesn't have imagery`);let n=new Sx(t);return n._metadata=e,n};Sx.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};Sx.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=a_.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new sr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=$Dt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){y3(r.key,u);let f=new Uint8Array(u),h,A=r.protoImagery;if((!l(A)||!A)&&(h=evt(f)),!l(h)&&(!l(A)||A)){let g=tvt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:UE({uint8Array:f,format:h,flipY:!0})})};Sx.prototype.pickFeatures=function(e,t,n,i,o){};function $Dt(e,t,n,i,o,r){let s=a_.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function evt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function tvt(e){let t=qSe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new ce("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var uee=Sx;var nvt=new G(1,1,1,.4),ivt=new G(0,1,0,.05),ovt=new G(0,.5,0,.2);function wx(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new so({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??nvt,this._glowColor=e.glowColor??ivt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??ovt,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(wx.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});wx.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};wx.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};wx.prototype.getTileCredits=function(e,t,n){};wx.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};wx.prototype.pickFeatures=function(e,t,n,i,o){};var fee=wx;function wm(){}wm._maxDecodingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);wm._decodeTaskProcessor=new di("decodeI3S",wm._maxDecodingConcurrency);wm._promise=void 0;async function rvt(){if(await wm._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return wm._decodeTaskProcessor;throw new ce("I3S decoder could not be initialized.")}wm.decode=async function(e,t,n,i,o){return l(wm._promise)||(wm._promise=rvt()),wm._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=J.fromRotationX(-D.PI_OVER_TWO),A=new J;J.multiply(h,a,A);let g=Ae.fromDegrees(c,u,f),m=te.WGS84.cartographicToCartesian(g),_={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:te.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:A,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(_)})};var P3=wm;function dee(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(dee.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});dee.prototype.load=async function(){return this._data=await Bm.loadJson(this._resource),this._data};var R3=dee;function l_(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(l_.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function I5(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function svt(e){return e==="String"?1:I5(e)}async function avt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}l_.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=avt(this).catch(function(e){console.error(e)}),this._loadPromise)};l_.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};l_.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};l_.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};l_.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=I5(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=I5(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};l_.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=svt(i.valueType)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};l_.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new ce(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=I5(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new ce(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new ce(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var M3=l_;function N3(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(N3.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});N3.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var cvt=new d,lvt=new d,uvt=new d,fvt=new d,dvt=new d;function hee(e,t,n,i){let o=d.subtract(i,n,cvt),r=d.cross(o,d.subtract(e,n,lvt),fvt),s=d.cross(o,d.subtract(t,n,uvt),dvt);return d.dot(r,s)>=0}var hvt=new d,mvt=new d,Avt=new d,pvt=new d,gvt=new d,_vt=new d,yvt=new d,Cvt=new d,Evt=new d,Ivt=new d;N3.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,J.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let A=0;A<h;A++){let g,m,_;l(f)?(g=f[A],m=f[A+1],_=f[A+2]):(g=A*3,m=A*3+1,_=A*3+2);let y=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],hvt),C=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],mvt),E=new d(u[_*3],u[_*3+1],u[_*3+2],Avt);if(!hee(i,y,C,E)||!hee(i,C,y,E)||!hee(i,E,y,C))continue;let I=d.subtract(C,y,pvt),b=d.subtract(E,y,gvt),S=d.cross(I,b,_vt);if(d.magnitude(S)===0)continue;let B=d.normalize(S,yvt),v=d.subtract(i,y,Cvt),P=Math.abs(d.dot(v,B));if(P<o){o=P,r=A;let M=d.magnitudeSquared(d.subtract(i,y,v)),L=d.magnitudeSquared(d.subtract(i,C,Evt)),p=d.magnitudeSquared(d.subtract(i,E,Ivt));M<L&&M<p?(a=g,c=y,s=M):L<p?(a=m,c=C,s=L):(a=_,c=E,s=p)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function KSe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(Ix(e[i])):t.push(e[i]);return t}N3.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let I=this._parent._data.mesh.material.definition;if(I>=0&&I<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[I],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let b="0";if(l(this._layer._data.textureSetDefinitions))for(let S=0;S<this._layer._data.textureSetDefinitions.length;S++){let B=this._layer._data.textureSetDefinitions[S];for(let v=0;v<B.formats.length;v++){let P=B.formats[v];if(P.format==="jpg"){b=P.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${b}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=KSe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=KSe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let A=[],g=[],m=[];u&&(A=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let _=[],y=n.length;for(let E=0;E<y;E++){let I=n[E].primitives,b=I.length;for(let S=0;S<b;S++){let B=I[S];if(l(B.material)){for(;B.material>=_.length;){let P=ze(c,!0);_.push(P)}let v=_[B.material];l(B.extra)&&B.extra.isTransparent?l(v.alphaMode)||(v.alphaMode="BLEND"):v.alphaMode==="BLEND"&&(v.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:_,textures:A,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var Jw=N3;function ol(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(ol.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});ol.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new xd(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await Bm.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function XSe(e,t){let n=new M3(e,t);return e._fields[t.name]=n,n.load()}ol.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(XSe(this,i))}return Promise.all(t)};ol.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return XSe(this,o)}return Promise.resolve()};ol.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};ol.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};ol.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new ol(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};ol.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new Jw(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new Jw(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};ol.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new R3(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};ol.prototype._clearGeometryData=function(){this._geometryData=[]};ol.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=Ae.fromDegrees(e.center[0],e.center[1],e.center[2]):n=Ae.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let C=0;C<this._dataProvider._geoidDataList.length;C++){let E=this._dataProvider._geoidDataList[C],I=E.projection.project(n);if(I.x>E.nativeExtent.west&&I.x<E.nativeExtent.east&&I.y>E.nativeExtent.south&&I.y<E.nativeExtent.north){n.height+=Svt(I.x,I.y,E);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=te.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=te.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let C=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/C}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let C=this._data.lodThreshold;s=r/C}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let C=0;C<this._data.lodSelection.length;C++)this._data.lodSelection[C].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[C].maxError);s===1/0&&(s=1e5);let a=s*16,c=new rc(0,0,0),u=kt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=J.fromQuaternion(u),h=J.inverse(f,new J),A=new N(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=N.inverse(A,new N),m=N.clone(A);l(this._parent._globalTransform)&&N.multiply(A,this._parent._inverseGlobalTransform,m),this._globalTransform=A,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let _=[];for(let C=0;C<this._children.length;C++)_.push(this._children[C]._create3DTileDefinition());return{children:_,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};ol.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};ol.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await P3.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function xvt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function bvt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function JSe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await xvt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!bvt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}ol.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=JSe(this,t);e.push(n)}return Promise.all(e)};xd.prototype._hookedRequestContent=xd.prototype.requestContent;xd.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new we({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{JSe(e._i3sNode,n)})),e._isLoading=!1,t})}};function Tvt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function x5(e,t,n,i){let o=e+t*n;return i[o]}function Svt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=x5(s,a,n.width,n.buffer),h=x5(c,a,n.width,n.buffer),A=x5(s,u,n.width,n.buffer),g=x5(c,u,n.width,n.buffer),m=Tvt(o,r,f,h,A,g);return m=m*n.scale+n.offset,m}Object.defineProperties(xd.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var Zw=ol;function b5(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(b5.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function mee(e,t){let n=[];for(let i=0;i<e.length;i++){let o=G.byteToFloat(e[i]);i<3?n.push(Ix(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function $w(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=mee(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=mee(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=mee(a.color,a.transparency)))}break}}return n}function wvt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=$w(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let A=u[h];h===u.length-1?f[A]=s:(l(f[A])||(f[A]={}),f=f[A])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=$w(o.symbol,t)}return n}}function Bvt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push($w(r.symbol,t)))}return i.symbols.push(void 0),i}}b5.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=$w(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=$w(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=wvt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=$w(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=Bvt(i,n))}};function ZSe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?ZSe(s,t,n,i):s}}function Dvt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function vvt(e,t,n){let i=t[n],o=Dvt(e.ranges,i);return e.symbols[o]}b5.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>ZSe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>vvt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var L3=b5;function Pu(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new we({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(Pu.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});Pu.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new ce(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new L3(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};Pu.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};Pu.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};Pu.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new Zw(this,t,!0)}else this._rootNode=new Zw(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};Pu.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};Pu._fetchJson=function(e){return e.fetchJson()};Pu.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=Pu._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};Pu.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};Pu.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ze(e):{},e.outlineColor=G.fromCartesian4(se.fromArray(o))),this._tileset=await ks.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};Pu.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};Pu.prototype.filterByAttributes=function(e){this._filters=l(e)?ze(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var Bx=Pu;function T5(e,t){this._dataProvider=e,this._resource=new we({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(T5.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});T5.prototype.load=async function(){return this._data=await Bm.loadJson(this._resource),this._data};T5.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var O3=T5;function F3(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(F3.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});F3._fromData=async function(e,t,n,i){let o=new F3(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=F3._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new we({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await Bm.loadJson(o._resource),c=new Bx(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var Q3=F3;var twe=xr($Se(),1);function Hs(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??V.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Hs.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Hs.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};Hs.prototype.isDestroyed=function(){return!1};Hs.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Hs.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Hs.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Hs.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function Pvt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function ewe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=Pvt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=Q3._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new O3(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new Bx(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Hs.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Hs.loadJson(n),o=new Hs(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=ewe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await ewe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Hs._fetchJson=function(e){return e.fetchJson()};Hs.loadJson=async function(e){let t=await Hs._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new ce(t.error)}return t};Hs.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new ce(`Failed to load binary: ${e.url}`);return t};Hs.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Rvt=new U;function Mvt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=Ae.fromRadians(t.west,t.north),a=Ae.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let A=c.y;A<=u.y;A++){let g=U.fromElements(h,A,Rvt),m=g.toString();if(!o.hasOwnProperty(m)){let _={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=_,i.push(_)}}let f=[];for(let h=0;h<i.length;++h){let A=i[h],g=A.terrainProvider.requestTileGeometry(A.x,A.y,A.level);f.push(g)}return Promise.all(f).then(function(h){let A=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},_=h[g],y="Geographic";n._projection instanceof zi&&(y="WebMercator");let C={projectionType:y,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:_._height,width:_._width,scale:_._structure.heightScale,offset:_._structure.heightOffset};if(_._encoding===Qd.LERC){let E=twe.default.decode(_._buffer);C.buffer=E.pixels[0]}else C.buffer=_._buffer;A.push(C)}return A})}async function Nvt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await Mvt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Hs.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=Nvt(this),this._geoidDataPromise)};Hs.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};Hs.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Hs.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Hs.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var Bm=Hs;var k3={};k3.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await ra.getExports(n,i);if(r.length>0&&r.every(f=>f.status===ra.ExportStatus.Invalid))throw new ce(`All exports for this iModel are Invalid: ${n}`);let s=r.find(f=>f.status===ra.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),u=new we({url:c});return ks.fromUrl(u,o)};k3.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await ra.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![ra.RealityDataType.Cesium3DTiles,ra.RealityDataType.PNTS,ra.RealityDataType.RealityMesh3DTiles,ra.RealityDataType.Terrain3DTiles].includes(o))throw new ce(`Reality data type is not a mesh type: ${o}`);let a=await ra.getRealityDataURL(n,i,r);return ks.fromUrl(a,{maximumScreenSpaceError:4})};k3.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await ra.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![ra.RealityDataType.KML,ra.RealityDataType.GeoJSON].includes(o))throw new ce(`Reality data type is not a data source type: ${o}`);let a=await ra.getRealityDataURL(n,i,r);return o===ra.RealityDataType.GeoJSON?jy.load(a):xI.load(a)};k3.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${ra.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new we({url:s,headers:{Authorization:ra._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return jy.load(a)};var Aee=k3;function nwe(){}Object.defineProperties(nwe.prototype,{color:{get:me.throwInstantiationError},intensity:{get:me.throwInstantiationError}});var pee=nwe;var Lvt=/\/$/,iwe=new Bt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function eB(e){e=e??V.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();Lvt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Bt(c))):c=iwe,this._resource=i,this._imageryProvider=new Ac({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(eB.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});eB.prototype.getTileCredits=function(e,t,n){};eB.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};eB.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};eB._defaultCredit=iwe;var gee=eB;function _ee(e){}_ee.prototype.isReady=function(){return!0};_ee.prototype.shouldDiscardImage=function(e){return!1};var yee=_ee;var Ovt=new Bt("MapQuest, Open Street Map and contributors, CC-BY-SA");function w5(e){e=e??V.EMPTY_OBJECT;let t=we.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new Ts({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=e.credit??Ovt;typeof h=="string"&&(h=new Bt(h)),Ac.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(w5.prototype=Object.create(Ac.prototype),w5.prototype.constructor=w5);var u_=w5;var Fvt=new U(1,1);function Cee(e){e=e??V.EMPTY_OBJECT,this.mass=e.mass??1,this.position=d.clone(e.position??d.ZERO),this.velocity=d.clone(e.velocity??d.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=G.clone(e.startColor??G.WHITE),this.endColor=G.clone(e.endColor??G.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=U.clone(e.imageSize??Fvt),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(Cee.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var owe=new d;Cee.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,owe),d.add(this.position,owe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var tB=Cee;function rwe(e){e=e??V.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(rwe.prototype,{complete:{get:function(){return this._complete}}});var Eee=rwe;function swe(e){}swe.prototype.emit=function(e){me.throwInstantiationError()};var Iee=swe;var awe=new U(1,1);function U3(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new T3(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._emitterModelMatrix=N.clone(e.emitterModelMatrix??N.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new N,this._startColor=G.clone(e.color??e.startColor??G.WHITE),this._endColor=G.clone(e.color??e.endColor??G.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=U.clone(e.imageSize??e.minimumImageSize??awe),this._maximumImageSize=U.clone(e.imageSize??e.maximumImageSize??awe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new _e,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(U3.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!N.equals(this._modelMatrix,e),N.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!N.equals(this._emitterModelMatrix,e),N.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){G.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){G.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function Qvt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let A=0;A<h;++A)i+=o[A].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let A=new tB;A._billboard=r.add({image:s,show:!1}),u.push(A)}e._particleEstimate=a}function kvt(e){let t=e._particlePool.pop();return l(t)||(t=new tB),t}function Uvt(e,t){e._particlePool.push(t)}function Gvt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function zvt(e){l(e._billboard)&&(e._billboard.show=!1)}function cwe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=D.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=D.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=D.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=D.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new G(i,o,r,s),n.scale=D.lerp(t.startScale,t.endScale,t.normalizedAge)}function Vvt(e,t){t.startColor=G.clone(e._startColor,t.startColor),t.endColor=G.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=D.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=D.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=D.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=D.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=D.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function Hvt(e,t){if(e._isComplete)return 0;t=D.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=D.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var B5=new d;U3.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new nf),this._updateParticlePool&&(Qvt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=K.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?cwe(this,s):(zvt(s),Uvt(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=Hvt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=N.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=kvt(this),this._emitter.emit(s),d.add(s.position,s.velocity,B5),N.multiplyByPoint(u,B5,B5),s.position=N.multiplyByPoint(u,s.position,s.position),d.subtract(B5,s.position,s.velocity),d.normalize(s.velocity,s.velocity),Vvt(this,s),cwe(this,s)}if(this._billboardCollection.update(e),this._previousTime=K.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=D.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&Gvt(this)};U3.prototype.isDestroyed=function(){return!1};U3.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var xee=U3;function kf(){me.throwInstantiationError()}kf.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(kf.prototype,{quadtree:{get:me.throwInstantiationError,set:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError}});kf.prototype.update=me.throwInstantiationError;kf.prototype.beginUpdate=me.throwInstantiationError;kf.prototype.endUpdate=me.throwInstantiationError;kf.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;kf.prototype.loadTile=me.throwInstantiationError;kf.prototype.computeTileVisibility=me.throwInstantiationError;kf.prototype.showTileThisFrame=me.throwInstantiationError;kf.prototype.computeDistanceToTile=me.throwInstantiationError;kf.prototype.isDestroyed=me.throwInstantiationError;kf.prototype.destroy=me.throwInstantiationError;var bee=kf;function Tee(e){e=e??1,this._radius=e??1}Object.defineProperties(Tee.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});Tee.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,D.PI),i=D.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var See=Tee;function G3(){}G3.prototype.evaluate=function(e,t){me.throwInstantiationError()};G3.prototype.evaluateColor=function(e,t){me.throwInstantiationError()};G3.prototype.getShaderFunction=function(e,t,n,i){me.throwInstantiationError()};G3.prototype.getVariables=function(){me.throwInstantiationError()};var wee=G3;function nB(e){this._ready=!1,this._provider=void 0,this._errorEvent=new _e,this._readyEvent=new _e,jvt(this,e)}Object.defineProperties(nB.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});nB.fromWorldTerrain=function(e){return new nB(Ex(e))};nB.fromWorldBathymetry=function(e){return new nB(_3(e))};function Wvt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function jvt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){Wvt(e._errorEvent,i)}}var z3=nB;function iB(){}iB.prototype.boundingVolume=void 0;iB.prototype.boundingSphere=void 0;iB.prototype.distanceToCamera=function(e){me.throwInstantiationError()};iB.prototype.intersectPlane=function(e){me.throwInstantiationError()};iB.prototype.createDebugVolume=function(e){me.throwInstantiationError()};var Bee=iB;function V3(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new so({ellipsoid:e.ellipsoid}),this._color=e.color??G.YELLOW,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(V3.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});V3.prototype.getTileCredits=function(e,t,n){};V3.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};V3.prototype.pickFeatures=function(e,t,n,i,o){};var H3=V3;function Dee(e){me.throwInstantiationError()}Dee.prototype.isReady=me.throwInstantiationError;Dee.prototype.shouldDiscardImage=me.throwInstantiationError;var vee=Dee;var Yvt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},Pee=Object.freeze(Yvt);function D5(e,t){this.show=!0,l(e)||(e=new Ye),this.rectangle=Ye.clone(e),l(t)||(t=ro.fromType(ro.ColorType,{color:new G(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}D5.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Ye.equals(t.viewport,this.rectangle))&&(this._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new He({sources:[this._material.shaderSource,j2]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Be.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};D5.prototype.isDestroyed=function(){return!1};D5.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var Ree=D5;function Mee(){me.throwInstantiationError()}Object.defineProperties(Mee.prototype,{globalTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shape:{get:me.throwInstantiationError},minBounds:{get:me.throwInstantiationError},maxBounds:{get:me.throwInstantiationError},dimensions:{get:me.throwInstantiationError},paddingBefore:{get:me.throwInstantiationError},paddingAfter:{get:me.throwInstantiationError},names:{get:me.throwInstantiationError},types:{get:me.throwInstantiationError},componentTypes:{get:me.throwInstantiationError},minimumValues:{get:me.throwInstantiationError},maximumValues:{get:me.throwInstantiationError},maximumTileCount:{get:me.throwInstantiationError},availableLevels:{get:me.throwInstantiationError},keyframeCount:{get:me.throwInstantiationError},timeIntervalCollection:{get:me.throwInstantiationError}});Mee.prototype.requestData=function(e){me.throwInstantiationError()};var Nee=Mee;function Dx(){me.throwInstantiationError()}Object.defineProperties(Dx.prototype,{orientedBoundingBox:{get:me.throwInstantiationError},boundingSphere:{get:me.throwInstantiationError},boundTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shaderUniforms:{get:me.throwInstantiationError},shaderDefines:{get:me.throwInstantiationError},shaderMaximumIntersectionsLength:{get:me.throwInstantiationError}});Dx.prototype.update=me.throwInstantiationError;Dx.prototype.computeOrientedBoundingBoxForTile=me.throwInstantiationError;Dx.prototype.computeOrientedBoundingBoxForSample=me.throwInstantiationError;Dx.DefaultMinBounds=me.throwInstantiationError;Dx.DefaultMaxBounds=me.throwInstantiationError;var Lee=Dx;var qvt=new G,Kvt=new G,Xvt=new G,Jvt=new G,lwe=new se,W3=new Uint8Array(4);function uwe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return G.lerp(t.color,n.color,o,i)}function v5(e,t){return{height:e,color:G.clone(t)}}function fwe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?G.equals(t.color,i[n-1].color):!1,a=r?G.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?G.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function Zvt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=D.clamp(g.height,Ru._minimumHeight,Ru._maximumHeight),_=G.clone(g.color,qvt);_.red*=_.alpha,_.green*=_.alpha,_.blue*=_.alpha,c.push(v5(m,_))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||vA(c,function(g,m){return D.sign(g.height-m.height)});let h=r.extendDownwards??!1,A=r.extendUpwards??!1;c.length===1&&!h&&!A&&(h=!0,A=!0),h&&c.splice(0,0,v5(Ru._minimumHeight,c[0].color)),A&&c.splice(c.length,0,v5(Ru._maximumHeight,c[c.length-1].color)),c=fwe(c),i.push(c)}return i}function $vt(e){let t=Zvt(e),n=[],i=[],o;function r(u,f){n.push(v5(u,f))}function s(u,f,h){let A=G.multiplyByScalar(h,1-f.alpha,Jvt);A=G.add(A,f,A),r(u,A)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let A=u.length,g=i.length;for(;f<A||h<g;){let m=f<A?u[f]:void 0,_=f>0?u[f-1]:void 0,y=f<A-1?u[f+1]:void 0,C=h<g?i[h]:void 0,E=h>0?i[h-1]:void 0,I=h<g-1?i[h+1]:void 0;if(l(m)&&l(C)&&m.height===C.height){let b=l(I)&&C.height===I.height,S=!l(E),B=!l(I),v=l(y)&&m.height===y.height,P=!l(_),M=!l(y);b?v?(s(m.height,m.color,C.color),s(m.height,y.color,I.color)):P?(r(m.height,C.color),s(m.height,m.color,I.color)):M?(s(m.height,m.color,C.color),r(m.height,I.color)):(s(m.height,m.color,C.color),s(m.height,m.color,I.color)):S?v?(r(m.height,m.color),s(m.height,y.color,C.color)):M?(r(m.height,m.color),r(m.height,C.color)):(P||r(m.height,m.color),s(m.height,m.color,C.color)):B?v?(s(m.height,m.color,C.color),r(m.height,y.color)):P?(r(m.height,C.color),r(m.height,m.color)):M?s(m.height,m.color,C.color):(s(m.height,m.color,C.color),r(m.height,m.color)):v?(s(m.height,m.color,C.color),s(m.height,y.color,C.color)):P?(r(m.height,C.color),s(m.height,m.color,C.color)):M?(s(m.height,m.color,C.color),r(m.height,C.color)):s(m.height,m.color,C.color),f+=v?2:1,h+=b?2:1}else if(l(m)&&l(C)&&l(E)&&m.height<C.height){let b=uwe(m.height,E,C,Xvt);l(_)?l(y)?s(m.height,m.color,b):(s(m.height,m.color,b),r(m.height,b)):(r(m.height,b),s(m.height,m.color,b)),f++}else if(l(C)&&l(m)&&l(_)&&C.height<m.height){let b=uwe(C.height,_,m,Kvt);l(E)?l(I)?s(C.height,b,C.color):(s(C.height,b,C.color),r(C.height,b)):(r(C.height,b),s(C.height,b,C.color)),h++}else l(m)&&(!l(C)||m.height<C.height)?(l(C)&&!l(E)&&!l(y)?(r(m.height,m.color),r(m.height,Ru._emptyColor),r(C.height,Ru._emptyColor)):(!l(C)&&l(E)&&!l(_)&&(r(E.height,Ru._emptyColor),r(m.height,Ru._emptyColor)),r(m.height,m.color)),f++):l(C)&&(!l(m)||C.height<m.height)&&(r(C.height,C.color),h++)}}return fwe(n)}function Ru(e){let{scene:t,layers:n}=e??V.EMPTY_OBJECT,{context:i}=t,o=$vt(n),r=o.length,s,a,c;if(!Ru._useFloatTexture(i)){a=Ve.UNSIGNED_BYTE,c=$e.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)se.packFloat(o[g].height,lwe),se.pack(lwe,s,g*4)}else{a=Ve.FLOAT,c=i.webgl2?$e.RED:$e.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Mt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(W3),h[g*4+0]=W3[0],h[g*4+1]=W3[1],h[g*4+2]=W3[2],h[g*4+3]=W3[3];let A=Mt.create({context:i,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})});return ro.fromType("ElevationBand",{heights:f,colors:A})}Ru._useFloatTexture=function(e){return e.floatingPointTexture};Ru._maximumHeight=5906376425472;Ru._minimumHeight=-5906376425472;Ru._emptyColor=new G(0,0,0,0);var Oee=Ru;async function ePt(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??V.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||yt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??_x.defaultApiKey;if(!l(n))return tPt(t);let i,o=_x.getDefaultCredit();l(o)&&(i=[o]);let r=new we({url:`${_x.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return ks.fromUrl(r,t)}var dwe={};async function tPt(e){let i=dwe[2275207];l(i)||(i=Hu.fromAssetId(2275207),dwe[2275207]=i);let o=await i;return ks.fromUrl(o,e)}var Fee=ePt;async function nPt(e){let t=await ks.fromIonAssetId(96188,e);e=e??V.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??G.WHITE).toCssColorString();n=new xx({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var Qee=nPt;function iPt(e){e=e??V.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=N.clone(e.modelMatrix??N.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new $t(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new $t(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new $t(0,0,1,1)},modelMatrix:o})),t.length>0)return new Qn({asynchronous:!1,geometryInstances:t,appearance:new gn({flat:!0,translucent:!1})})}var kee=iPt;var Uee=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;function oPt(e){e=e??V.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??$e.RGBA,this.pixelDatatype=e.pixelDatatype??Ve.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=we.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Tn.REPEAT:Tn.CLAMP_TO_EDGE;this.sampler=new on({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var Gee=oPt;var rPt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},zee=Object.freeze(rPt);var sPt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},Vee=Object.freeze(sPt);function aPt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${eA(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var Hee=aPt;globalThis.CESIUM_VERSION="1.132";var j3;typeof ko<"u"&&(j3=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(p,x){return p===null||typeof p in _?p===x:!1}function u(p,x){var T;return function(){T||(T=m.a.setTimeout(function(){T=e,p()},x))}}function f(p,x){var T;return function(){clearTimeout(T),T=m.a.setTimeout(p,x)}}function h(p,x){x&&x!=="change"?x==="beforeChange"?this.pc(p):this.gb(p,x):this.qc(p)}function A(p,x){x!==null&&x.s&&x.s()}function g(p,x){var T=this.qd,w=T[b];w.ra||(this.Qb&&this.mb[x]?(T.uc(x,p,this.mb[x]),this.mb[x]=null,--this.Qb):w.I[x]||T.uc(x,p,w.J?{da:p}:T.$c(p)),p.Ja&&p.gd())}var m=typeof s<"u"?s:{};m.b=function(p,x){for(var T=p.split("."),w=m,R=0;R<T.length-1;R++)w=w[T[R]];w[T[T.length-1]]=x},m.L=function(p,x,T){p[x]=T},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function p(Y,$){for(var X in Y)R.call(Y,X)&&$(X,Y[X])}function x(Y,$){if($)for(var X in $)R.call($,X)&&(Y[X]=$[X]);return Y}function T(Y,$){return Y.__proto__=$,Y}function w(Y,$,X,he){var ge=Y[$].match(W)||[];m.a.D(X.match(W),function(fe){m.a.Na(ge,fe,he)}),Y[$]=ge.join(" ")}var R=Object.prototype.hasOwnProperty,O={__proto__:[]}instanceof Array,k=typeof Symbol=="function",Q={},z={};Q[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],Q.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),p(Q,function(Y,$){if($.length)for(var X=0,he=$.length;X<he;X++)z[$[X]]=Y});var F={propertychange:!0},H=n&&function(){for(var Y=3,$=n.createElement("div"),X=$.getElementsByTagName("i");$.innerHTML="<!--[if gt IE "+ ++Y+"]><i></i><![endif]-->",X[0];);return 4<Y?Y:e}(),W=/\S+/g,Z;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)$.call(X,Y[he],he,Y)},A:typeof Array.prototype.indexOf=="function"?function(Y,$){return Array.prototype.indexOf.call(Y,$)}:function(Y,$){for(var X=0,he=Y.length;X<he;X++)if(Y[X]===$)return X;return-1},Lb:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)if($.call(X,Y[he],he,Y))return Y[he];return e},Pa:function(Y,$){var X=m.a.A(Y,$);0<X?Y.splice(X,1):X===0&&Y.shift()},wc:function(Y){var $=[];return Y&&m.a.D(Y,function(X){0>m.a.A($,X)&&$.push(X)}),$},Mb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)he.push($.call(X,Y[ge],ge));return he},jb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)$.call(X,Y[ge],ge)&&he.push(Y[ge]);return he},Nb:function(Y,$){if($ instanceof Array)Y.push.apply(Y,$);else for(var X=0,he=$.length;X<he;X++)Y.push($[X]);return Y},Na:function(Y,$,X){var he=m.a.A(m.a.bc(Y),$);0>he?X&&Y.push($):X||Y.splice(he,1)},Ba:O,extend:x,setPrototypeOf:T,Ab:O?T:x,P:p,Ga:function(Y,$,X){if(!Y)return Y;var he={},ge;for(ge in Y)R.call(Y,ge)&&(he[ge]=$.call(X,Y[ge],ge,Y));return he},Tb:function(Y){for(;Y.firstChild;)m.removeNode(Y.firstChild)},Yb:function(Y){Y=m.a.la(Y);for(var $=(Y[0]&&Y[0].ownerDocument||n).createElement("div"),X=0,he=Y.length;X<he;X++)$.appendChild(m.oa(Y[X]));return $},Ca:function(Y,$){for(var X=0,he=Y.length,ge=[];X<he;X++){var fe=Y[X].cloneNode(!0);ge.push($?m.oa(fe):fe)}return ge},va:function(Y,$){if(m.a.Tb(Y),$)for(var X=0,he=$.length;X<he;X++)Y.appendChild($[X])},Xc:function(Y,$){var X=Y.nodeType?[Y]:Y;if(0<X.length){for(var he=X[0],ge=he.parentNode,fe=0,ye=$.length;fe<ye;fe++)ge.insertBefore($[fe],he);for(fe=0,ye=X.length;fe<ye;fe++)m.removeNode(X[fe])}},Ua:function(Y,$){if(Y.length){for($=$.nodeType===8&&$.parentNode||$;Y.length&&Y[0].parentNode!==$;)Y.splice(0,1);for(;1<Y.length&&Y[Y.length-1].parentNode!==$;)Y.length--;if(1<Y.length){var X=Y[0],he=Y[Y.length-1];for(Y.length=0;X!==he;)Y.push(X),X=X.nextSibling;Y.push(he)}}return Y},Zc:function(Y,$){7>H?Y.setAttribute("selected",$):Y.selected=$},Db:function(Y){return Y===null||Y===e?"":Y.trim?Y.trim():Y.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(Y,$){return Y=Y||"",$.length>Y.length?!1:Y.substring(0,$.length)===$},vd:function(Y,$){if(Y===$)return!0;if(Y.nodeType===11)return!1;if($.contains)return $.contains(Y.nodeType!==1?Y.parentNode:Y);if($.compareDocumentPosition)return($.compareDocumentPosition(Y)&16)==16;for(;Y&&Y!=$;)Y=Y.parentNode;return!!Y},Sb:function(Y){return m.a.vd(Y,Y.ownerDocument.documentElement)},kd:function(Y){return!!m.a.Lb(Y,m.a.Sb)},R:function(Y){return Y&&Y.tagName&&Y.tagName.toLowerCase()},Ac:function(Y){return m.onError?function(){try{return Y.apply(this,arguments)}catch($){throw m.onError&&m.onError($),$}}:Y},setTimeout:function(Y,$){return setTimeout(m.a.Ac(Y),$)},Gc:function(Y){setTimeout(function(){throw m.onError&&m.onError(Y),Y},0)},B:function(Y,$,X){var he=m.a.Ac(X);if(X=F[$],m.options.useOnlyNativeEvents||X||!o)if(X||typeof Y.addEventListener!="function")if(typeof Y.attachEvent<"u"){var ge=function(ye){he.call(Y,ye)},fe="on"+$;Y.attachEvent(fe,ge),m.a.K.za(Y,function(){Y.detachEvent(fe,ge)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else Y.addEventListener($,he,!1);else Z||(Z=typeof o(Y).on=="function"?"on":"bind"),o(Y)[Z]($,he)},Fb:function(Y,$){if(!Y||!Y.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var X;if(m.a.R(Y)==="input"&&Y.type&&$.toLowerCase()=="click"?(X=Y.type,X=X=="checkbox"||X=="radio"):X=!1,m.options.useOnlyNativeEvents||!o||X)if(typeof n.createEvent=="function")if(typeof Y.dispatchEvent=="function")X=n.createEvent(z[$]||"HTMLEvents"),X.initEvent($,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,Y),Y.dispatchEvent(X);else throw Error("The supplied element doesn't support dispatchEvent");else if(X&&Y.click)Y.click();else if(typeof Y.fireEvent<"u")Y.fireEvent("on"+$);else throw Error("Browser doesn't support triggering events");else o(Y).trigger($)},f:function(Y){return m.O(Y)?Y():Y},bc:function(Y){return m.O(Y)?Y.v():Y},Eb:function(Y,$,X){var he;$&&(typeof Y.classList=="object"?(he=Y.classList[X?"add":"remove"],m.a.D($.match(W),function(ge){he.call(Y.classList,ge)})):typeof Y.className.baseVal=="string"?w(Y.className,"baseVal",$,X):w(Y,"className",$,X))},Bb:function(Y,$){var X=m.a.f($);(X===null||X===e)&&(X="");var he=m.h.firstChild(Y);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(Y,[Y.ownerDocument.createTextNode(X)]):he.data=X,m.a.Ad(Y)},Yc:function(Y,$){if(Y.name=$,7>=H)try{var X=Y.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});Y.mergeAttributes(n.createElement("<input name='"+X+"'/>"),!1)}catch{}},Ad:function(Y){9<=H&&(Y=Y.nodeType==1?Y:Y.parentNode,Y.style&&(Y.style.zoom=Y.style.zoom))},wd:function(Y){if(H){var $=Y.style.width;Y.style.width=0,Y.style.width=$}},Pd:function(Y,$){Y=m.a.f(Y),$=m.a.f($);for(var X=[],he=Y;he<=$;he++)X.push(he);return X},la:function(Y){for(var $=[],X=0,he=Y.length;X<he;X++)$.push(Y[X]);return $},Da:function(Y){return k?Symbol(Y):Y},Zd:H===6,$d:H===7,W:H,Lc:function(Y,$){for(var X=m.a.la(Y.getElementsByTagName("input")).concat(m.a.la(Y.getElementsByTagName("textarea"))),he=typeof $=="string"?function(ye){return ye.name===$}:function(ye){return $.test(ye.name)},ge=[],fe=X.length-1;0<=fe;fe--)he(X[fe])&&ge.push(X[fe]);return ge},Nd:function(Y){return typeof Y=="string"&&(Y=m.a.Db(Y))?r&&r.parse?r.parse(Y):new Function("return "+Y)():null},hc:function(Y,$,X){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(Y),$,X)},Od:function(Y,$,X){X=X||{};var he=X.params||{},ge=X.includeFields||this.Jc,fe=Y;if(typeof Y=="object"&&m.a.R(Y)==="form")for(var fe=Y.action,ye=ge.length-1;0<=ye;ye--)for(var xe=m.a.Lc(Y,ge[ye]),ve=xe.length-1;0<=ve;ve--)he[xe[ve].name]=xe[ve].value;$=m.a.f($);var Te=n.createElement("form");Te.style.display="none",Te.action=fe,Te.method="post";for(var ke in $)Y=n.createElement("input"),Y.type="hidden",Y.name=ke,Y.value=m.a.hc(m.a.f($[ke])),Te.appendChild(Y);p(he,function(Ge,Ke){var tt=n.createElement("input");tt.type="hidden",tt.name=Ge,tt.value=Ke,Te.appendChild(tt)}),n.body.appendChild(Te),X.submitter?X.submitter(Te):Te.submit(),setTimeout(function(){Te.parentNode.removeChild(Te)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(p){var x=this;if(arguments.length===1)return function(){return x.apply(p,arguments)};var T=Array.prototype.slice.call(arguments,1);return function(){var w=T.slice(0);return w.push.apply(w,arguments),x.apply(p,w)}}),m.a.g=new function(){var p=0,x="__ko__"+new Date().getTime(),T={},w,R;return m.a.W?(w=function(O,k){var Q=O[x];if(!Q||Q==="null"||!T[Q]){if(!k)return e;Q=O[x]="ko"+p++,T[Q]={}}return T[Q]},R=function(O){var k=O[x];return k?(delete T[k],O[x]=null,!0):!1}):(w=function(O,k){var Q=O[x];return!Q&&k&&(Q=O[x]={}),Q},R=function(O){return O[x]?(delete O[x],!0):!1}),{get:function(O,k){var Q=w(O,!1);return Q&&Q[k]},set:function(O,k,Q){(O=w(O,Q!==e))&&(O[k]=Q)},Ub:function(O,k,Q){return O=w(O,!0),O[k]||(O[k]=Q)},clear:R,Z:function(){return p+++x}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function p(k,Q){var z=m.a.g.get(k,w);return z===e&&Q&&(z=[],m.a.g.set(k,w,z)),z}function x(k){var Q=p(k,!1);if(Q)for(var Q=Q.slice(0),z=0;z<Q.length;z++)Q[z](k);m.a.g.clear(k),m.a.K.cleanExternalData(k),O[k.nodeType]&&T(k.childNodes,!0)}function T(k,Q){for(var z=[],F,H=0;H<k.length;H++)if((!Q||k[H].nodeType===8)&&(x(z[z.length]=F=k[H]),k[H]!==F))for(;H--&&m.a.A(z,k[H])==-1;);}var w=m.a.g.Z(),R={1:!0,8:!0,9:!0},O={1:!0,9:!0};return{za:function(k,Q){if(typeof Q!="function")throw Error("Callback must be a function");p(k,!0).push(Q)},yb:function(k,Q){var z=p(k,!1);z&&(m.a.Pa(z,Q),z.length==0&&m.a.g.set(k,w,e))},oa:function(k){return m.u.G(function(){R[k.nodeType]&&(x(k),O[k.nodeType]&&T(k.getElementsByTagName("*")))}),k},removeNode:function(k){m.oa(k),k.parentNode&&k.parentNode.removeChild(k)},cleanExternalData:function(k){o&&typeof o.cleanData=="function"&&o.cleanData([k])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var p=[0,"",""],x=[1,"<table>","</table>"],T=[3,"<table><tbody><tr>","</tr></tbody></table>"],w=[1,"<select multiple='multiple'>","</select>"],R={thead:x,tbody:x,tfoot:x,tr:[2,"<table><tbody>","</tbody></table>"],td:T,th:T,option:w,optgroup:w},O=8>=m.a.W;m.a.ua=function(k,Q){var z;if(o){if(o.parseHTML)z=o.parseHTML(k,Q)||[];else if((z=o.clean([k],Q))&&z[0]){for(var F=z[0];F.parentNode&&F.parentNode.nodeType!==11;)F=F.parentNode;F.parentNode&&F.parentNode.removeChild(F)}}else{(z=Q)||(z=n);var F=z.parentWindow||z.defaultView||t,H=m.a.Db(k).toLowerCase(),W=z.createElement("div"),Z;for(Z=(H=H.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&R[H[1]]||p,H=Z[0],Z="ignored<div>"+Z[1]+k+Z[2]+"</div>",typeof F.innerShiv=="function"?W.appendChild(F.innerShiv(Z)):(O&&z.body.appendChild(W),W.innerHTML=Z,O&&W.parentNode.removeChild(W));H--;)W=W.lastChild;z=m.a.la(W.lastChild.childNodes)}return z},m.a.Md=function(k,Q){var z=m.a.ua(k,Q);return z.length&&z[0].parentElement||m.a.Yb(z)},m.a.fc=function(k,Q){if(m.a.Tb(k),Q=m.a.f(Q),Q!==null&&Q!==e)if(typeof Q!="string"&&(Q=Q.toString()),o)o(k).html(Q);else for(var z=m.a.ua(Q,k.ownerDocument),F=0;F<z.length;F++)k.appendChild(z[F])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function p(T,w){if(T){if(T.nodeType==8){var R=m.aa.Uc(T.nodeValue);R!=null&&w.push({ud:T,Kd:R})}else if(T.nodeType==1)for(var R=0,O=T.childNodes,k=O.length;R<k;R++)p(O[R],w)}}var x={};return{Xb:function(T){if(typeof T!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var w=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return x[w]=T,"<!--[ko_memo:"+w+"]-->"},bd:function(T,w){var R=x[T];if(R===e)throw Error("Couldn't find any memo with ID "+T+". Perhaps it's already been unmemoized.");try{return R.apply(null,w||[]),!0}finally{delete x[T]}},cd:function(T,w){var R=[];p(T,R);for(var O=0,k=R.length;O<k;O++){var Q=R[O].ud,z=[Q];w&&m.a.Nb(z,w),m.aa.bd(R[O].Kd,z),Q.nodeValue="",Q.parentNode&&Q.parentNode.removeChild(Q)}},Uc:function(T){return(T=T.match(/^\[ko_memo\:(.*?)\]$/))?T[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function p(){if(R){for(var Q=R,z=0,F;k<R;)if(F=w[k++]){if(k>Q){if(5e3<=++z){k=R,m.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}Q=R}try{F()}catch(H){m.a.Gc(H)}}}}function x(){p(),k=R=w.length=0}var T,w=[],R=0,O=1,k=0;return t.MutationObserver?T=function(Q){var z=n.createElement("div");return new MutationObserver(Q).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(x):T=n&&"onreadystatechange"in n.createElement("script")?function(Q){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,Q()},n.documentElement.appendChild(z)}:function(Q){setTimeout(Q,0)},{scheduler:T,zb:function(Q){return R||m.na.scheduler(x),w[R++]=Q,O++},cancel:function(Q){Q=Q-(O-R),Q>=k&&Q<R&&(w[Q]=null)},resetForTesting:function(){var Q=R-k;return k=R=w.length=0,Q},Sd:p}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(p,x){p.throttleEvaluation=x;var T=null;return m.$({read:p,write:function(w){clearTimeout(T),T=m.a.setTimeout(function(){p(w)},x)}})},rateLimit:function(p,x){var T,w,R;typeof x=="number"?T=x:(T=x.timeout,w=x.method),p.Hb=!1,R=typeof w=="function"?w:w=="notifyWhenChangesStop"?f:u,p.ub(function(O){return R(O,T,x)})},deferred:function(p,x){if(x!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");p.Hb||(p.Hb=!0,p.ub(function(T){var w,R=!1;return function(){if(!R){m.na.cancel(w),w=m.na.zb(T);try{R=!0,p.notifySubscribers(e,"dirty")}finally{R=!1}}}}))},notify:function(p,x){p.equalityComparer=x=="always"?null:c}};var _={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(p,x,T){this.da=p,this.lc=x,this.mc=T,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(p){this.Jb=p,m.a.K.za(p,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,y),y.qb(this)};var y={qb:function(p){p.U={change:[]},p.sc=1},subscribe:function(p,x,T){var w=this;T=T||"change";var R=new m.ic(w,x?p.bind(x):p,function(){m.a.Pa(w.U[T],R),w.hb&&w.hb(T)});return w.Qa&&w.Qa(T),w.U[T]||(w.U[T]=[]),w.U[T].push(R),R},notifySubscribers:function(p,x){if(x=x||"change",x==="change"&&this.Gb(),this.Wa(x)){var T=x==="change"&&this.ed||this.U[x].slice(0);try{m.u.xc();for(var w=0,R;R=T[w];++w)R.Ib||R.lc(p)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(p){return this.ob()!==p},Gb:function(){++this.sc},ub:function(p){var x=this,T=m.O(x),w,R,O,k,Q;x.gb||(x.gb=x.notifySubscribers,x.notifySubscribers=h);var z=p(function(){x.Ja=!1,T&&k===x&&(k=x.nc?x.nc():x());var F=R||Q&&x.sb(O,k);Q=R=w=!1,F&&x.gb(O=k)});x.qc=function(F,H){H&&x.Ja||(Q=!H),x.ed=x.U.change.slice(0),x.Ja=w=!0,k=F,z()},x.pc=function(F){w||(O=F,x.gb(F,"beforeChange"))},x.rc=function(){Q=!0},x.gd=function(){x.sb(O,x.v(!0))&&(R=!0)}},Wa:function(p){return this.U[p]&&this.U[p].length},Bd:function(p){if(p)return this.U[p]&&this.U[p].length||0;var x=0;return m.a.P(this.U,function(T,w){T!=="dirty"&&(x+=w.length)}),x},sb:function(p,x){return!this.equalityComparer||!this.equalityComparer(p,x)},toString:function(){return"[object Object]"},extend:function(p){var x=this;return p&&m.a.P(p,function(T,w){var R=m.Ta[T];typeof R=="function"&&(x=R(x,w)||x)}),x}};m.L(y,"init",y.qb),m.L(y,"subscribe",y.subscribe),m.L(y,"extend",y.extend),m.L(y,"getSubscriptionsCount",y.Bd),m.a.Ba&&m.a.setPrototypeOf(y,Function.prototype),m.T.fn=y,m.Qc=function(p){return p!=null&&typeof p.subscribe=="function"&&typeof p.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function p(O){T.push(w),w=O}function x(){w=T.pop()}var T=[],w,R=0;return{xc:p,end:x,cc:function(O){if(w){if(!m.Qc(O))throw Error("Only subscribable things can act as dependencies");w.od.call(w.pd,O,O.fd||(O.fd=++R))}},G:function(O,k,Q){try{return p(),O.apply(k,Q||[])}finally{x()}},qa:function(){if(w)return w.o.qa()},Va:function(){if(w)return w.o.Va()},Ya:function(){if(w)return w.Ya},o:function(){if(w)return w.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var C=m.a.Da("_latestValue");m.ta=function(p){function x(){return 0<arguments.length?(x.sb(x[C],arguments[0])&&(x.ya(),x[C]=arguments[0],x.xa()),this):(m.u.cc(x),x[C])}return x[C]=p,m.a.Ba||m.a.extend(x,m.T.fn),m.T.fn.qb(x),m.a.Ab(x,E),m.options.deferUpdates&&m.Ta.deferred(x,!0),x};var E={equalityComparer:c,v:function(){return this[C]},xa:function(){this.notifySubscribers(this[C],"spectate"),this.notifySubscribers(this[C])},ya:function(){this.notifySubscribers(this[C],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(E,m.T.fn);var I=m.ta.Ma="__ko_proto__";E[I]=m.ta,m.O=function(p){if((p=typeof p=="function"&&p[I])&&p!==E[I]&&p!==m.o.fn[I])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!p},m.Za=function(p){return typeof p=="function"&&(p[I]===E[I]||p[I]===m.o.fn[I]&&p.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",E),m.L(E,"peek",E.v),m.L(E,"valueHasMutated",E.xa),m.L(E,"valueWillMutate",E.ya),m.Ha=function(p){if(p=p||[],typeof p!="object"||!("length"in p))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return p=m.ta(p),m.a.Ab(p,m.Ha.fn),p.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(p){for(var x=this.v(),T=[],w=typeof p!="function"||m.O(p)?function(k){return k===p}:p,R=0;R<x.length;R++){var O=x[R];if(w(O)){if(T.length===0&&this.ya(),x[R]!==O)throw Error("Array modified during remove; cannot remove item");T.push(O),x.splice(R,1),R--}}return T.length&&this.xa(),T},removeAll:function(p){if(p===e){var x=this.v(),T=x.slice(0);return this.ya(),x.splice(0,x.length),this.xa(),T}return p?this.remove(function(w){return 0<=m.a.A(p,w)}):[]},destroy:function(p){var x=this.v(),T=typeof p!="function"||m.O(p)?function(O){return O===p}:p;this.ya();for(var w=x.length-1;0<=w;w--){var R=x[w];T(R)&&(R._destroy=!0)}this.xa()},destroyAll:function(p){return p===e?this.destroy(function(){return!0}):p?this.destroy(function(x){return 0<=m.a.A(p,x)}):[]},indexOf:function(p){var x=this();return m.a.A(x,p)},replace:function(p,x){var T=this.indexOf(p);0<=T&&(this.ya(),this.v()[T]=x,this.xa())},sorted:function(p){var x=this().slice(0);return p?x.sort(p):x.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(p){m.Ha.fn[p]=function(){var x=this.v();this.ya(),this.zc(x,p,arguments);var T=x[p].apply(x,arguments);return this.xa(),T===x?this:T}}),m.a.D(["slice"],function(p){m.Ha.fn[p]=function(){var x=this();return x[p].apply(x,arguments)}}),m.Pc=function(p){return m.O(p)&&typeof p.remove=="function"&&typeof p.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(p,x){function T(){function W(){if(Q){var Z=[].concat(p.v()||[]),Y;p.Wa("arrayChange")&&((!R||1<Q)&&(R=m.a.Pb(z,Z,p.Ob)),Y=R),z=Z,R=null,Q=0,Y&&Y.length&&p.notifySubscribers(Y,"arrayChange")}}w?W():(w=!0,k=p.subscribe(function(){++Q},null,"spectate"),z=[].concat(p.v()||[]),R=null,O=p.subscribe(W))}if(p.Ob={},x&&typeof x=="object"&&m.a.extend(p.Ob,x),p.Ob.sparse=!0,!p.zc){var w=!1,R=null,O,k,Q=0,z,F=p.Qa,H=p.hb;p.Qa=function(W){F&&F.call(p,W),W==="arrayChange"&&T()},p.hb=function(W){H&&H.call(p,W),W!=="arrayChange"||p.Wa("arrayChange")||(O&&O.s(),k&&k.s(),k=O=null,w=!1,z=e)},p.zc=function(W,Z,Y){function $(Te,ke,Ge){return X[X.length]={status:Te,value:ke,index:Ge}}if(w&&!Q){var X=[],he=W.length,ge=Y.length,fe=0;switch(Z){case"push":fe=he;case"unshift":for(Z=0;Z<ge;Z++)$("added",Y[Z],fe+Z);break;case"pop":fe=he-1;case"shift":he&&$("deleted",W[fe],fe);break;case"splice":Z=Math.min(Math.max(0,0>Y[0]?he+Y[0]:Y[0]),he);for(var he=ge===1?he:Math.min(Z+(Y[1]||0),he),ge=Z+ge-2,fe=Math.max(he,ge),ye=[],xe=[],ve=2;Z<fe;++Z,++ve)Z<he&&xe.push($("deleted",W[Z],Z)),Z<ge&&ye.push($("added",Y[ve],Z));m.a.Kc(xe,ye);break;default:return}R=X}}}};var b=m.a.Da("_state");m.o=m.$=function(p,x,T){function w(){if(0<arguments.length){if(typeof R=="function")R.apply(O.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return O.ra||m.u.cc(w),(O.ka||O.J&&w.Xa())&&w.ha(),O.X}if(typeof p=="object"?T=p:(T=T||{},p&&(T.read=p)),typeof T.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var R=T.write,O={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:T.read,nb:x||T.owner,l:T.disposeWhenNodeIsRemoved||T.l||null,Sa:T.disposeWhen||T.Sa,Rb:null,I:{},V:0,Ic:null};return w[b]=O,w.Nc=typeof R=="function",m.a.Ba||m.a.extend(w,m.T.fn),m.T.fn.qb(w),m.a.Ab(w,S),T.pure?(O.wb=!0,O.J=!0,m.a.extend(w,B)):T.deferEvaluation&&m.a.extend(w,v),m.options.deferUpdates&&m.Ta.deferred(w,!0),O.l&&(O.jc=!0,O.l.nodeType||(O.l=null)),O.J||T.deferEvaluation||w.ha(),O.l&&w.ja()&&m.a.K.za(O.l,O.Rb=function(){w.s()}),w};var S={equalityComparer:c,qa:function(){return this[b].V},Va:function(){var p=[];return m.a.P(this[b].I,function(x,T){p[T.Ka]=T.da}),p},Vb:function(p){if(!this[b].V)return!1;var x=this.Va();return m.a.A(x,p)!==-1?!0:!!m.a.Lb(x,function(T){return T.Vb&&T.Vb(p)})},uc:function(p,x,T){if(this[b].wb&&x===this)throw Error("A 'pure' computed must not be called recursively");this[b].I[p]=T,T.Ka=this[b].V++,T.La=x.ob()},Xa:function(){var p,x,T=this[b].I;for(p in T)if(Object.prototype.hasOwnProperty.call(T,p)&&(x=T[p],this.Ia&&x.da.Ja||x.da.Dd(x.La)))return!0},Jd:function(){this.Ia&&!this[b].rb&&this.Ia(!1)},ja:function(){var p=this[b];return p.ka||0<p.V},Rd:function(){this.Ja?this[b].ka&&(this[b].sa=!0):this.Hc()},$c:function(p){if(p.Hb){var x=p.subscribe(this.Jd,this,"dirty"),T=p.subscribe(this.Rd,this);return{da:p,s:function(){x.s(),T.s()}}}return p.subscribe(this.Hc,this)},Hc:function(){var p=this,x=p.throttleEvaluation;x&&0<=x?(clearTimeout(this[b].Ic),this[b].Ic=m.a.setTimeout(function(){p.ha(!0)},x)):p.Ia?p.Ia(!0):p.ha(!0)},ha:function(p){var x=this[b],T=x.Sa,w=!1;if(!x.rb&&!x.ra){if(x.l&&!m.a.Sb(x.l)||T&&T()){if(!x.jc){this.s();return}}else x.jc=!1;x.rb=!0;try{w=this.zd(p)}finally{x.rb=!1}return w}},zd:function(p){var x=this[b],w=!1,T=x.wb?e:!x.V,w={qd:this,mb:x.I,Qb:x.V};m.u.xc({pd:w,od:g,o:this,Ya:T}),x.I={},x.V=0;var R=this.yd(x,w);return x.V?w=this.sb(x.X,R):(this.s(),w=!0),w&&(x.J?this.Gb():this.notifySubscribers(x.X,"beforeChange"),x.X=R,this.notifySubscribers(x.X,"spectate"),!x.J&&p&&this.notifySubscribers(x.X),this.rc&&this.rc()),T&&this.notifySubscribers(x.X,"awake"),w},yd:function(p,x){try{var T=p.Wc;return p.nb?T.call(p.nb):T()}finally{m.u.end(),x.Qb&&!p.J&&m.a.P(x.mb,A),p.sa=p.ka=!1}},v:function(p){var x=this[b];return(x.ka&&(p||!x.V)||x.J&&this.Xa())&&this.ha(),x.X},ub:function(p){m.T.fn.ub.call(this,p),this.nc=function(){return this[b].J||(this[b].sa?this.ha():this[b].ka=!1),this[b].X},this.Ia=function(x){this.pc(this[b].X),this[b].ka=!0,x&&(this[b].sa=!0),this.qc(this,!x)}},s:function(){var p=this[b];!p.J&&p.I&&m.a.P(p.I,function(x,T){T.s&&T.s()}),p.l&&p.Rb&&m.a.K.yb(p.l,p.Rb),p.I=e,p.V=0,p.ra=!0,p.sa=!1,p.ka=!1,p.J=!1,p.l=e,p.Sa=e,p.Wc=e,this.Nc||(p.nb=e)}},B={Qa:function(p){var x=this,T=x[b];if(!T.ra&&T.J&&p=="change"){if(T.J=!1,T.sa||x.Xa())T.I=null,T.V=0,x.ha()&&x.Gb();else{var w=[];m.a.P(T.I,function(R,O){w[O.Ka]=R}),m.a.D(w,function(R,O){var k=T.I[R],Q=x.$c(k.da);Q.Ka=O,Q.La=k.La,T.I[R]=Q}),x.Xa()&&x.ha()&&x.Gb()}T.ra||x.notifySubscribers(T.X,"awake")}},hb:function(p){var x=this[b];x.ra||p!="change"||this.Wa("change")||(m.a.P(x.I,function(T,w){w.s&&(x.I[T]={da:w.da,Ka:w.Ka,La:w.La},w.s())}),x.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var p=this[b];return p.J&&(p.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},v={Qa:function(p){p!="change"&&p!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(S,m.T.fn);var P=m.ta.Ma;S[P]=m.o,m.Oc=function(p){return typeof p=="function"&&p[P]===S[P]},m.Fd=function(p){return m.Oc(p)&&p[b]&&p[b].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",S),m.L(S,"peek",S.v),m.L(S,"dispose",S.s),m.L(S,"isActive",S.ja),m.L(S,"getDependenciesCount",S.qa),m.L(S,"getDependencies",S.Va),m.xb=function(p,x){return typeof p=="function"?m.o(p,x,{pure:!0}):(p=m.a.extend({},p),p.pure=!0,m.o(p,x))},m.b("pureComputed",m.xb),function(){function p(w,R,O){if(O=O||new T,w=R(w),typeof w!="object"||w===null||w===e||w instanceof RegExp||w instanceof Date||w instanceof String||w instanceof Number||w instanceof Boolean)return w;var k=w instanceof Array?[]:{};return O.save(w,k),x(w,function(Q){var z=R(w[Q]);switch(typeof z){case"boolean":case"number":case"string":case"function":k[Q]=z;break;case"object":case"undefined":var F=O.get(z);k[Q]=F!==e?F:p(z,R,O)}}),k}function x(w,R){if(w instanceof Array){for(var O=0;O<w.length;O++)R(O);typeof w.toJSON=="function"&&R("toJSON")}else for(O in w)R(O)}function T(){this.keys=[],this.values=[]}m.ad=function(w){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return p(w,function(R){for(var O=0;m.O(R)&&10>O;O++)R=R();return R})},m.toJSON=function(w,R,O){return w=m.ad(w),m.a.hc(w,R,O)},T.prototype={constructor:T,save:function(w,R){var O=m.a.A(this.keys,w);0<=O?this.values[O]=R:(this.keys.push(w),this.values.push(R))},get:function(w){return w=m.a.A(this.keys,w),0<=w?this.values[w]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(p,x,T){function w(R){var O=m.xb(p,T).extend({ma:"always"}),k=O.subscribe(function(Q){Q&&(k.s(),R(Q))});return O.notifySubscribers(O.v()),k}return typeof Promise!="function"||x?w(x.bind(T)):new Promise(w)},m.b("when",m.Wd),function(){m.w={M:function(p){switch(m.a.R(p)){case"option":return p.__ko__hasDomDataOptionValue__===!0?m.a.g.get(p,m.c.options.$b):7>=m.a.W?p.getAttributeNode("value")&&p.getAttributeNode("value").specified?p.value:p.text:p.value;case"select":return 0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex]):e;default:return p.value}},cb:function(p,x,T){switch(m.a.R(p)){case"option":typeof x=="string"?(m.a.g.set(p,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in p&&delete p.__ko__hasDomDataOptionValue__,p.value=x):(m.a.g.set(p,m.c.options.$b,x),p.__ko__hasDomDataOptionValue__=!0,p.value=typeof x=="number"?x:"");break;case"select":(x===""||x===null)&&(x=e);for(var w=-1,R=0,O=p.options.length,k;R<O;++R)if(k=m.w.M(p.options[R]),k==x||k===""&&x===e){w=R;break}(T||0<=w||x===e&&1<p.size)&&(p.selectedIndex=w,m.a.W===6&&m.a.setTimeout(function(){p.selectedIndex=w},0));break;default:(x===null||x===e)&&(x=""),p.value=x}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function p(Q){Q=m.a.Db(Q),Q.charCodeAt(0)===123&&(Q=Q.slice(1,-1)),Q+=` +,`;var z=[],F=Q.match(w),H,W=[],Z=0;if(1<F.length){for(var Y=0,$;$=F[Y];++Y){var X=$.charCodeAt(0);if(X===44){if(0>=Z){z.push(H&&W.length?{key:H,value:W.join("")}:{unknown:H||W.join("")}),H=Z=0,W=[];continue}}else if(X===58){if(!Z&&!H&&W.length===1){H=W.pop();continue}}else{if(X===47&&1<$.length&&($.charCodeAt(1)===47||$.charCodeAt(1)===42))continue;X===47&&Y&&1<$.length?(X=F[Y-1].match(R))&&!O[X[0]]&&(Q=Q.substr(Q.indexOf($)+1),F=Q.match(w),Y=-1,$="/"):X===40||X===123||X===91?++Z:X===41||X===125||X===93?--Z:H||W.length||X!==34&&X!==39||($=$.slice(1,-1))}W.push($)}if(0<Z)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var x=["true","false","null","undefined"],T=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,w=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),R=/[\])"'A-Za-z0-9_$]+$/,O={in:1,return:1,typeof:1},k={};return{Ra:[],wa:k,ac:p,vb:function(Q,z){function F(X,he){var ge;if(!Y){var fe=m.getBindingHandler(X);if(fe&&fe.preprocess&&!(he=fe.preprocess(he,X,F)))return;(fe=k[X])&&(ge=he,0<=m.a.A(x,ge)?ge=!1:(fe=ge.match(T),ge=fe===null?!1:fe[1]?"Object("+fe[1]+")"+fe[2]:ge),fe=ge),fe&&W.push("'"+(typeof k[X]=="string"?k[X]:X)+"':function(_z){"+ge+"=_z}")}Z&&(he="function(){return "+he+" }"),H.push("'"+X+"':"+he)}z=z||{};var H=[],W=[],Z=z.valueAccessors,Y=z.bindingParams,$=typeof Q=="string"?p(Q):Q;return m.a.D($,function(X){F(X.key||X.unknown,X.value)}),W.length&&F("_ko_property_writers","{"+W.join(",")+" }"),H.join(",")},Id:function(Q,z){for(var F=0;F<Q.length;F++)if(Q[F].key==z)return!0;return!1},eb:function(Q,z,F,H,W){Q&&m.O(Q)?!m.Za(Q)||W&&Q.v()===H||Q(H):(Q=z.get("_ko_property_writers"))&&Q[F]&&Q[F](H)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function p(F){return F.nodeType==8&&O.test(R?F.text:F.nodeValue)}function x(F){return F.nodeType==8&&k.test(R?F.text:F.nodeValue)}function T(F,H){for(var W=F,Z=1,Y=[];W=W.nextSibling;){if(x(W)&&(m.a.g.set(W,z,!0),Z--,Z===0))return Y;Y.push(W),p(W)&&Z++}if(!H)throw Error("Cannot find closing comment tag to match: "+F.nodeValue);return null}function w(F,H){var W=T(F,H);return W?0<W.length?W[W.length-1].nextSibling:F.nextSibling:null}var R=n&&n.createComment("test").text==="<!--test-->",O=R?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=R?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,Q={ul:!0,ol:!0},z="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(F){return p(F)?T(F):F.childNodes},Ea:function(F){if(p(F)){F=m.h.childNodes(F);for(var H=0,W=F.length;H<W;H++)m.removeNode(F[H])}else m.a.Tb(F)},va:function(F,H){if(p(F)){m.h.Ea(F);for(var W=F.nextSibling,Z=0,Y=H.length;Z<Y;Z++)W.parentNode.insertBefore(H[Z],W)}else m.a.va(F,H)},Vc:function(F,H){var W;p(F)?(W=F.nextSibling,F=F.parentNode):W=F.firstChild,W?H!==W&&F.insertBefore(H,W):F.appendChild(H)},Wb:function(F,H,W){W?(W=W.nextSibling,p(F)&&(F=F.parentNode),W?H!==W&&F.insertBefore(H,W):F.appendChild(H)):m.h.Vc(F,H)},firstChild:function(F){if(p(F))return!F.nextSibling||x(F.nextSibling)?null:F.nextSibling;if(F.firstChild&&x(F.firstChild))throw Error("Found invalid end comment, as the first child of "+F);return F.firstChild},nextSibling:function(F){if(p(F)&&(F=w(F)),F.nextSibling&&x(F.nextSibling)){var H=F.nextSibling;if(x(H)&&!m.a.g.get(H,z))throw Error("Found end comment without a matching opening comment, as child of "+F);return null}return F.nextSibling},Cd:p,Vd:function(F){return(F=(R?F.text:F.nodeValue).match(O))?F[1]:null},Sc:function(F){if(Q[m.a.R(F)]){var H=F.firstChild;if(H)do if(H.nodeType===1){var W;W=H.firstChild;var Z=null;if(W)do if(Z)Z.push(W);else if(p(W)){var Y=w(W,!0);Y?W=Y:Z=[W]}else x(W)&&(Z=[W]);while(W=W.nextSibling);if(W=Z)for(Z=H.nextSibling,Y=0;Y<W.length;Y++)Z?F.insertBefore(W[Y],Z):F.appendChild(W[Y])}while(H=H.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(p);case 8:return m.h.Cd(p);default:return!1}},getBindings:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p):null;return m.j.tc(T,p,x,!1)},getBindingAccessors:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p,{valueAccessors:!0}):null;return m.j.tc(T,p,x,!0)},getBindingsString:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind");case 8:return m.h.Vd(p);default:return null}},parseBindingsString:function(p,x,T,w){try{var R=this.nd,O=p+(w&&w.valueAccessors||""),k;if(!(k=R[O])){var Q,z="with($context){with($data||{}){return{"+m.m.vb(p,w)+"}}}";Q=new Function("$context","$element",z),k=R[O]=Q}return k(x,T)}catch(F){throw F.message=`Unable to parse bindings. +Bindings value: `+p+` +Message: `+F.message,F}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function p(fe){var ye=(fe=m.a.g.get(fe,ge))&&fe.N;ye&&(fe.N=null,ye.Tc())}function x(fe,ye,xe){this.node=fe,this.yc=ye,this.kb=[],this.H=!1,ye.N||m.a.K.za(fe,p),xe&&xe.N&&(xe.N.kb.push(fe),this.Kb=xe)}function T(fe){return function(){return fe}}function w(fe){return fe()}function R(fe){return m.a.Ga(m.u.G(fe),function(ye,xe){return function(){return fe()[xe]}})}function O(fe,ye,xe){return typeof fe=="function"?R(fe.bind(null,ye,xe)):m.a.Ga(fe,T)}function k(fe,ye){return R(this.getBindings.bind(this,fe,ye))}function Q(fe,ye){var xe=m.h.firstChild(ye);if(xe){var ve,Te=m.ga.instance,ke=Te.preprocessNode;if(ke){for(;ve=xe;)xe=m.h.nextSibling(ve),ke.call(Te,ve);xe=m.h.firstChild(ye)}for(;ve=xe;)xe=m.h.nextSibling(ve),z(fe,ve)}m.i.ma(ye,m.i.H)}function z(fe,ye){var xe=fe,ve=ye.nodeType===1;ve&&m.h.Sc(ye),(ve||m.ga.instance.nodeHasBindings(ye))&&(xe=H(ye,null,fe).bindingContextForDescendants),xe&&!X[m.a.R(ye)]&&Q(xe,ye)}function F(fe){var ye=[],xe={},ve=[];return m.a.P(fe,function Te(ke){if(!xe[ke]){var Ge=m.getBindingHandler(ke);Ge&&(Ge.after&&(ve.push(ke),m.a.D(Ge.after,function(Ke){if(fe[Ke]){if(m.a.A(ve,Ke)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+ve.join(", "));Te(Ke)}}),ve.length--),ye.push({key:ke,Mc:Ge})),xe[ke]=!0}}),ye}function H(fe,ye,xe){var ve=m.a.g.Ub(fe,ge,{}),Te=ve.hd;if(!ye){if(Te)throw Error("You cannot apply bindings multiple times to the same element.");ve.hd=!0}Te||(ve.context=xe),ve.Zb||(ve.Zb={});var ke;if(ye&&typeof ye!="function")ke=ye;else{var Ge=m.ga.instance,Ke=Ge.getBindingAccessors||k,tt=m.$(function(){return(ke=ye?ye(xe,fe):Ke.call(Ge,fe,xe))&&(xe[Z]&&xe[Z](),xe[$]&&xe[$]()),ke},null,{l:fe});ke&&tt.ja()||(tt=null)}var en=xe,it;if(ke){var nn=function(){return m.a.Ga(tt?tt():ke,w)},qt=tt?function(Rt){return function(){return w(tt()[Rt])}}:function(Rt){return ke[Rt]};nn.get=function(Rt){return ke[Rt]&&w(qt(Rt))},nn.has=function(Rt){return Rt in ke},m.i.H in ke&&m.i.subscribe(fe,m.i.H,function(){var Rt=(0,ke[m.i.H])();if(Rt){var Si=m.h.childNodes(fe);Si.length&&Rt(Si,m.Ec(Si[0]))}}),m.i.pa in ke&&(en=m.i.Cb(fe,xe),m.i.subscribe(fe,m.i.pa,function(){var Rt=(0,ke[m.i.pa])();Rt&&m.h.firstChild(fe)&&Rt(fe)})),ve=F(ke),m.a.D(ve,function(Rt){var Si=Rt.Mc.init,gi=Rt.Mc.update,Ft=Rt.key;if(fe.nodeType===8&&!m.h.ea[Ft])throw Error("The binding '"+Ft+"' cannot be used with virtual elements");try{typeof Si=="function"&&m.u.G(function(){var St=Si(fe,qt(Ft),nn,en.$data,en);if(St&&St.controlsDescendantBindings){if(it!==e)throw Error("Multiple bindings ("+it+" and "+Ft+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");it=Ft}}),typeof gi=="function"&&m.$(function(){gi(fe,qt(Ft),nn,en.$data,en)},null,{l:fe})}catch(St){throw St.message='Unable to process binding "'+Ft+": "+ke[Ft]+`" +Message: `+St.message,St}})}return ve=it===e,{shouldBindDescendants:ve,bindingContextForDescendants:ve&&en}}function W(fe,ye){return fe&&fe instanceof m.fa?fe:new m.fa(fe,e,e,ye)}var Z=m.a.Da("_subscribable"),Y=m.a.Da("_ancestorBindingInfo"),$=m.a.Da("_dataDependency");m.c={};var X={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(fe){return m.c[fe]};var he={};m.fa=function(fe,ye,xe,ve,Te){function ke(){var qt=en?tt():tt,Rt=m.a.f(qt);return ye?(m.a.extend(Ge,ye),Y in ye&&(Ge[Y]=ye[Y])):(Ge.$parents=[],Ge.$root=Rt,Ge.ko=m),Ge[Z]=it,Ke?Rt=Ge.$data:(Ge.$rawData=qt,Ge.$data=Rt),xe&&(Ge[xe]=Rt),ve&&ve(Ge,ye,Rt),ye&&ye[Z]&&!m.S.o().Vb(ye[Z])&&ye[Z](),nn&&(Ge[$]=nn),Ge.$data}var Ge=this,Ke=fe===he,tt=Ke?e:fe,en=typeof tt=="function"&&!m.O(tt),it,nn=Te&&Te.dataDependency;Te&&Te.exportDependencies?ke():(it=m.xb(ke),it.v(),it.ja()?it.equalityComparer=null:Ge[Z]=e)},m.fa.prototype.createChildContext=function(fe,ye,xe,ve){if(!ve&&ye&&typeof ye=="object"&&(ve=ye,ye=ve.as,xe=ve.extend),ye&&ve&&ve.noChildContext){var Te=typeof fe=="function"&&!m.O(fe);return new m.fa(he,this,null,function(ke){xe&&xe(ke),ke[ye]=Te?fe():fe},ve)}return new m.fa(fe,this,ye,function(ke,Ge){ke.$parentContext=Ge,ke.$parent=Ge.$data,ke.$parents=(Ge.$parents||[]).slice(0),ke.$parents.unshift(ke.$parent),xe&&xe(ke)},ve)},m.fa.prototype.extend=function(fe,ye){return new m.fa(he,this,null,function(xe){m.a.extend(xe,typeof fe=="function"?fe(xe):fe)},ye)};var ge=m.a.g.Z();x.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},x.prototype.sd=function(fe){m.a.Pa(this.kb,fe),!this.kb.length&&this.H&&this.Cc()},x.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,p),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(fe,ye,xe,ve,Te){var ke=m.a.g.Ub(fe,ge,{});return ke.Fa||(ke.Fa=new m.T),Te&&Te.notifyImmediately&&ke.Zb[ye]&&m.u.G(xe,ve,[fe]),ke.Fa.subscribe(xe,ve,ye)},ma:function(fe,ye){var xe=m.a.g.get(fe,ge);if(xe&&(xe.Zb[ye]=!0,xe.Fa&&xe.Fa.notifySubscribers(fe,ye),ye==m.i.H)){if(xe.N)xe.N.Cc();else if(xe.N===e&&xe.Fa&&xe.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(fe,ye){var xe=m.a.g.Ub(fe,ge,{});return xe.N||(xe.N=new x(fe,xe,ye[Y])),ye[Y]==xe?ye:ye.extend(function(ve){ve[Y]=xe})}},m.Td=function(fe){return(fe=m.a.g.get(fe,ge))&&fe.context},m.ib=function(fe,ye,xe){return fe.nodeType===1&&m.h.Sc(fe),H(fe,ye,W(xe))},m.ld=function(fe,ye,xe){return xe=W(xe),m.ib(fe,O(ye,xe,fe),xe)},m.Oa=function(fe,ye){ye.nodeType!==1&&ye.nodeType!==8||Q(W(fe),ye)},m.vc=function(fe,ye,xe){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(ye=n.body,!ye)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!ye||ye.nodeType!==1&&ye.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z(W(fe,xe),ye)},m.Dc=function(fe){return!fe||fe.nodeType!==1&&fe.nodeType!==8?e:m.Td(fe)},m.Ec=function(fe){return(fe=m.Dc(fe))?fe.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(p){function x(k,Q){var z=Object.prototype.hasOwnProperty.call(R,k)?R[k]:p,F;z?z.subscribe(Q):(z=R[k]=new m.T,z.subscribe(Q),T(k,function(H,W){var Z=!(!W||!W.synchronous);O[k]={definition:H,Gd:Z},delete R[k],F||Z?z.notifySubscribers(H):m.na.zb(function(){z.notifySubscribers(H)})}),F=!0)}function T(k,Q){w("getConfig",[k],function(z){z?w("loadComponent",[k,z],function(F){Q(F,z)}):Q(null,null)})}function w(k,Q,z,F){F||(F=m.j.loaders.slice(0));var H=F.shift();if(H){var W=H[k];if(W){var Z=!1;if(W.apply(H,Q.concat(function(Y){Z?z(null):Y!==null?z(Y):w(k,Q,z,F)}))!==p&&(Z=!0,!H.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else w(k,Q,z,F)}else z(null)}var R={},O={};m.j={get:function(k,Q){var z=Object.prototype.hasOwnProperty.call(O,k)?O[k]:p;z?z.Gd?m.u.G(function(){Q(z.definition)}):m.na.zb(function(){Q(z.definition)}):x(k,Q)},Bc:function(k){delete O[k]},oc:w},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function p(z,F,H,W){function Z(){--$===0&&W(Y)}var Y={},$=2,X=H.template;H=H.viewModel,X?R(F,X,function(he){m.j.oc("loadTemplate",[z,he],function(ge){Y.template=ge,Z()})}):Z(),H?R(F,H,function(he){m.j.oc("loadViewModel",[z,he],function(ge){Y[Q]=ge,Z()})}):Z()}function x(z,F,H){if(typeof F=="function")H(function(Z){return new F(Z)});else if(typeof F[Q]=="function")H(F[Q]);else if("instance"in F){var W=F.instance;H(function(){return W})}else"viewModel"in F?x(z,F.viewModel,H):z("Unknown viewModel value: "+F)}function T(z){switch(m.a.R(z)){case"script":return m.a.ua(z.text);case"textarea":return m.a.ua(z.value);case"template":if(w(z.content))return m.a.Ca(z.content.childNodes)}return m.a.Ca(z.childNodes)}function w(z){return t.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function R(z,F,H){typeof F.require=="string"?a||t.require?(a||t.require)([F.require],function(W){W&&typeof W=="object"&&W.Xd&&W.default&&(W=W.default),H(W)}):z("Uses require, but no AMD loader is present"):H(F)}function O(z){return function(F){throw Error("Component '"+z+"': "+F)}}var k={};m.j.register=function(z,F){if(!F)throw Error("Invalid configuration for "+z);if(m.j.tb(z))throw Error("Component "+z+" is already registered");k[z]=F},m.j.tb=function(z){return Object.prototype.hasOwnProperty.call(k,z)},m.j.unregister=function(z){delete k[z],m.j.Bc(z)},m.j.Fc={getConfig:function(z,F){F(m.j.tb(z)?k[z]:null)},loadComponent:function(z,F,H){var W=O(z);R(W,F,function(Z){p(z,W,Z,H)})},loadTemplate:function(z,F,H){if(z=O(z),typeof F=="string")H(m.a.ua(F));else if(F instanceof Array)H(F);else if(w(F))H(m.a.la(F.childNodes));else if(F.element)if(F=F.element,t.HTMLElement?F instanceof HTMLElement:F&&F.tagName&&F.nodeType===1)H(T(F));else if(typeof F=="string"){var W=n.getElementById(F);W?H(T(W)):z("Cannot find element with ID "+F)}else z("Unknown element type: "+F);else z("Unknown template value: "+F)},loadViewModel:function(z,F,H){x(O(z),F,H)}};var Q="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=k}(),function(){function p(T,w){var R=T.getAttribute("params");if(R){var R=x.parseBindingsString(R,w,T,{valueAccessors:!0,bindingParams:!0}),R=m.a.Ga(R,function(Q){return m.o(Q,null,{l:T})}),O=m.a.Ga(R,function(Q){var z=Q.v();return Q.ja()?m.o({read:function(){return m.a.f(Q())},write:m.Za(z)&&function(F){Q()(F)},l:T}):z});return Object.prototype.hasOwnProperty.call(O,"$raw")||(O.$raw=R),O}return{$raw:{}}}m.j.getComponentNameForNode=function(T){var w=m.a.R(T);if(m.j.tb(w)&&(w.indexOf("-")!=-1||""+T=="[object HTMLUnknownElement]"||8>=m.a.W&&T.tagName===w))return w},m.j.tc=function(T,w,R,O){if(w.nodeType===1){var k=m.j.getComponentNameForNode(w);if(k){if(T=T||{},T.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var Q={name:k,params:p(w,R)};T.component=O?function(){return Q}:Q}}return T};var x=new m.ga;9>m.a.W&&(m.j.register=function(T){return function(w){return T.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(T){return function(){var w=T(),R=m.j.dd,O;for(O in R);return w}}(n.createDocumentFragment))}(),function(){function p(w,R,O){if(R=R.template,!R)throw Error("Component '"+w+"' has no template");w=m.a.Ca(R),m.h.va(O,w)}function x(w,R,O){var k=w.createViewModel;return k?k.call(w,R,O):R}var T=0;m.c.component={init:function(w,R,O,k,Q){function z(){var Y=F&&F.dispose;typeof Y=="function"&&Y.call(F),W&&W.s(),H=F=W=null}var F,H,W,Z=m.a.la(m.h.childNodes(w));return m.h.Ea(w),m.a.K.za(w,z),m.o(function(){var Y=m.a.f(R()),$,X;if(typeof Y=="string"?$=Y:($=m.a.f(Y.name),X=m.a.f(Y.params)),!$)throw Error("No component name specified");var he=m.i.Cb(w,Q),ge=H=++T;m.j.get($,function(fe){if(H===ge){if(z(),!fe)throw Error("Unknown component '"+$+"'");p($,fe,w);var ye=x(fe,X,{element:w,templateNodes:Z});fe=he.createChildContext(ye,{extend:function(xe){xe.$component=ye,xe.$componentTemplateNodes=Z}}),ye&&ye.koDescendantsComplete&&(W=m.i.subscribe(w,m.i.pa,ye.koDescendantsComplete,ye)),F=ye,m.Oa(fe,w)}})},null,{l:w}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var M={class:"className",for:"htmlFor"};m.c.attr={update:function(p,x){var T=m.a.f(x())||{};m.a.P(T,function(w,R){R=m.a.f(R);var O=w.indexOf(":"),O="lookupNamespaceURI"in p&&0<O&&p.lookupNamespaceURI(w.substr(0,O)),k=R===!1||R===null||R===e;k?O?p.removeAttributeNS(O,w):p.removeAttribute(w):R=R.toString(),8>=m.a.W&&w in M?(w=M[w],k?p.removeAttribute(w):p[w]=R):k||(O?p.setAttributeNS(O,w,R):p.setAttribute(w,R)),w==="name"&&m.a.Yc(p,k?"":R)})}},function(){m.c.checked={after:["value","attr"],init:function(p,x,T){function w(){var Y=p.checked,$=O();if(!m.S.Ya()&&(Y||!Q&&!m.S.qa())){var X=m.u.G(x);if(F){var he=H?X.v():X,ge=Z;Z=$,ge!==$?Y&&(m.a.Na(he,$,!0),m.a.Na(he,ge,!1)):m.a.Na(he,$,Y),H&&m.Za(X)&&X(he)}else k&&($===e?$=Y:Y||($=e)),m.m.eb(X,T,"checked",$,!0)}}function R(){var Y=m.a.f(x()),$=O();F?(p.checked=0<=m.a.A(Y,$),Z=$):p.checked=k&&$===e?!!Y:O()===Y}var O=m.xb(function(){if(T.has("checkedValue"))return m.a.f(T.get("checkedValue"));if(W)return T.has("value")?m.a.f(T.get("value")):p.value}),k=p.type=="checkbox",Q=p.type=="radio";if(k||Q){var z=x(),F=k&&m.a.f(z)instanceof Array,H=!(F&&z.push&&z.splice),W=Q||F,Z=F?O():e;Q&&!p.name&&m.c.uniqueName.init(p,function(){return!0}),m.o(w,null,{l:p}),m.a.B(p,"click",w),m.o(R,null,{l:p}),z=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(p,x){p.value=m.a.f(x())}}}(),m.c.class={update:function(p,x){var T=m.a.Db(m.a.f(x()));m.a.Eb(p,p.__ko__cssValue,!1),p.__ko__cssValue=T,m.a.Eb(p,T,!0)}},m.c.css={update:function(p,x){var T=m.a.f(x());T!==null&&typeof T=="object"?m.a.P(T,function(w,R){R=m.a.f(R),m.a.Eb(p,w,R)}):m.c.class.update(p,x)}},m.c.enable={update:function(p,x){var T=m.a.f(x());T&&p.disabled?p.removeAttribute("disabled"):T||p.disabled||(p.disabled=!0)}},m.c.disable={update:function(p,x){m.c.enable.update(p,function(){return!m.a.f(x())})}},m.c.event={init:function(p,x,T,w,R){var O=x()||{};m.a.P(O,function(k){typeof k=="string"&&m.a.B(p,k,function(Q){var z,F=x()[k];if(F){try{var H=m.a.la(arguments);w=R.$data,H.unshift(w),z=F.apply(w,H)}finally{z!==!0&&(Q.preventDefault?Q.preventDefault():Q.returnValue=!1)}T.get(k+"Bubble")===!1&&(Q.cancelBubble=!0,Q.stopPropagation&&Q.stopPropagation())}})})}},m.c.foreach={Rc:function(p){return function(){var x=p(),T=m.a.bc(x);return!T||typeof T.length=="number"?{foreach:x,templateEngine:m.ba.Ma}:(m.a.f(x),{foreach:T.data,as:T.as,noChildContext:T.noChildContext,includeDestroyed:T.includeDestroyed,afterAdd:T.afterAdd,beforeRemove:T.beforeRemove,afterRender:T.afterRender,beforeMove:T.beforeMove,afterMove:T.afterMove,templateEngine:m.ba.Ma})}},init:function(p,x){return m.c.template.init(p,m.c.foreach.Rc(x))},update:function(p,x,T,w,R){return m.c.template.update(p,m.c.foreach.Rc(x),T,w,R)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(p,x,T){function w(k){p.__ko_hasfocusUpdating=!0;var Q=p.ownerDocument;if("activeElement"in Q){var z;try{z=Q.activeElement}catch{z=Q.body}k=z===p}Q=x(),m.m.eb(Q,T,"hasfocus",k,!0),p.__ko_hasfocusLastValue=k,p.__ko_hasfocusUpdating=!1}var R=w.bind(null,!0),O=w.bind(null,!1);m.a.B(p,"focus",R),m.a.B(p,"focusin",R),m.a.B(p,"blur",O),m.a.B(p,"focusout",O),p.__ko_hasfocusLastValue=!1},update:function(p,x){var T=!!m.a.f(x());p.__ko_hasfocusUpdating||p.__ko_hasfocusLastValue===T||(T?p.focus():p.blur(),!T&&p.__ko_hasfocusLastValue&&p.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[p,T?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.fc(p,x())}},function(){function p(x,T,w){m.c[x]={init:function(R,O,k,Q,z){var F,H,W={},Z,Y,$;if(T){Q=k.get("as");var X=k.get("noChildContext");$=!(Q&&X),W={as:Q,noChildContext:X,exportDependencies:$}}return Y=(Z=k.get("completeOn")=="render")||k.has(m.i.pa),m.o(function(){var he=m.a.f(O()),ge=!w!=!he,fe=!H,ye;($||ge!==F)&&(Y&&(z=m.i.Cb(R,z)),ge&&((!T||$)&&(W.dataDependency=m.S.o()),ye=T?z.createChildContext(typeof he=="function"?he:O,W):m.S.qa()?z.extend(null,W):z),fe&&m.S.qa()&&(H=m.a.Ca(m.h.childNodes(R),!0)),ge?(fe||m.h.va(R,m.a.Ca(H)),m.Oa(ye,R)):(m.h.Ea(R),Z||m.i.ma(R,m.i.H)),F=ge)},null,{l:R}),{controlsDescendantBindings:!0}}},m.m.Ra[x]=!1,m.h.ea[x]=!0}p("if"),p("ifnot",!1,!0),p("with",!0)}(),m.c.let={init:function(p,x,T,w,R){return x=R.extend(x),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var L={};m.c.options={init:function(p){if(m.a.R(p)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<p.length;)p.remove(0);return{controlsDescendantBindings:!0}},update:function(p,x,T){function w(){return m.a.jb(p.options,function(X){return X.selected})}function R(X,he,ge){var fe=typeof he;return fe=="function"?he(X):fe=="string"?X[he]:ge}function O(X,he){if(Y&&F)m.i.ma(p,m.i.H);else if(Z.length){var ge=0<=m.a.A(Z,m.w.M(he[0]));m.a.Zc(he[0],ge),Y&&!ge&&m.u.G(m.a.Fb,null,[p,"change"])}}var k=p.multiple,Q=p.length!=0&&k?p.scrollTop:null,z=m.a.f(x()),F=T.get("valueAllowUnset")&&T.has("value"),H=T.get("optionsIncludeDestroyed");x={};var W,Z=[];F||(k?Z=m.a.Mb(w(),m.w.M):0<=p.selectedIndex&&Z.push(m.w.M(p.options[p.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),W=m.a.jb(z,function(X){return H||X===e||X===null||!m.a.f(X._destroy)}),T.has("optionsCaption")&&(z=m.a.f(T.get("optionsCaption")),z!==null&&z!==e&&W.unshift(L)));var Y=!1;if(x.beforeRemove=function(X){p.removeChild(X)},z=O,T.has("optionsAfterRender")&&typeof T.get("optionsAfterRender")=="function"&&(z=function(X,he){O(0,he),m.u.G(T.get("optionsAfterRender"),null,[he[0],X!==L?X:e])}),m.a.ec(p,W,function(X,he,ge){return ge.length&&(Z=!F&&ge[0].selected?[m.w.M(ge[0])]:[],Y=!0),he=p.ownerDocument.createElement("option"),X===L?(m.a.Bb(he,T.get("optionsCaption")),m.w.cb(he,e)):(ge=R(X,T.get("optionsValue"),X),m.w.cb(he,m.a.f(ge)),X=R(X,T.get("optionsText"),ge),m.a.Bb(he,X)),[he]},x,z),!F){var $;k?$=Z.length&&w().length<Z.length:$=Z.length&&0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex])!==Z[0]:Z.length||0<=p.selectedIndex,$&&m.u.G(m.a.Fb,null,[p,"change"])}(F||m.S.Ya())&&m.i.ma(p,m.i.H),m.a.wd(p),Q&&20<Math.abs(Q-p.scrollTop)&&(p.scrollTop=Q)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(p,x,T){function w(){var k=x(),Q=[];m.a.D(p.getElementsByTagName("option"),function(z){z.selected&&Q.push(m.w.M(z))}),m.m.eb(k,T,"selectedOptions",Q)}function R(){var k=m.a.f(x()),Q=p.scrollTop;k&&typeof k.length=="number"&&m.a.D(p.getElementsByTagName("option"),function(z){var F=0<=m.a.A(k,m.w.M(z));z.selected!=F&&m.a.Zc(z,F)}),p.scrollTop=Q}if(m.a.R(p)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var O;m.i.subscribe(p,m.i.H,function(){O?w():(m.a.B(p,"change",w),O=m.o(R,null,{l:p}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(p,x){var T=m.a.f(x()||{});m.a.P(T,function(w,R){if(R=m.a.f(R),(R===null||R===e||R===!1)&&(R=""),o)o(p).css(w,R);else if(/^--/.test(w))p.style.setProperty(w,R);else{w=w.replace(/-(\w)/g,function(k,Q){return Q.toUpperCase()});var O=p.style[w];p.style[w]=R,R===O||p.style[w]!=O||isNaN(R)||(p.style[w]=R+"px")}})}},m.c.submit={init:function(p,x,T,w,R){if(typeof x()!="function")throw Error("The value for a submit binding must be a function");m.a.B(p,"submit",function(O){var k,Q=x();try{k=Q.call(R.$data,p)}finally{k!==!0&&(O.preventDefault?O.preventDefault():O.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.Bb(p,x())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var p=function(W){if(W)return parseFloat(W[1])},x=t.navigator.userAgent,T,w,R,O,k;(T=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(k=p(x.match(/Edge\/([^ ]+)$/)))||p(x.match(/Chrome\/([^ ]+)/))||(w=p(x.match(/Version\/([^ ]+) Safari/)))||(R=p(x.match(/Firefox\/([^ ]+)/)))||(O=m.a.W||p(x.match(/MSIE ([^ ]+)/)))||(O=p(x.match(/rv:([^ )]+)/)))}if(8<=O&&10>O)var Q=m.a.g.Z(),z=m.a.g.Z(),F=function(W){var Z=this.activeElement;(Z=Z&&m.a.g.get(Z,z))&&Z(W)},H=function(W,Z){var Y=W.ownerDocument;m.a.g.get(Y,Q)||(m.a.g.set(Y,Q,!0),m.a.B(Y,"selectionchange",F)),m.a.g.set(W,z,Z)};m.c.textInput={init:function(W,Z,Y){function $(ke,Ge){m.a.B(W,ke,Ge)}function X(){var ke=m.a.f(Z());(ke===null||ke===e)&&(ke=""),xe!==e&&ke===xe?m.a.setTimeout(X,4):W.value!==ke&&(Te=!0,W.value=ke,Te=!1,fe=W.value)}function he(){ye||(xe=W.value,ye=m.a.setTimeout(ge,4))}function ge(){clearTimeout(ye),xe=ye=e;var ke=W.value;fe!==ke&&(fe=ke,m.m.eb(Z(),Y,"textInput",ke))}var fe=W.value,ye,xe,ve=m.a.W==9?he:ge,Te=!1;O&&$("keypress",ge),11>O&&$("propertychange",function(ke){Te||ke.propertyName!=="value"||ve(ke)}),O==8&&($("keyup",ge),$("keydown",ge)),H&&(H(W,ve),$("dragend",he)),(!O||9<=O)&&$("input",ve),5>w&&m.a.R(W)==="textarea"?($("keydown",he),$("paste",he),$("cut",he)):11>T?$("keydown",he):4>R?($("DOMAutoComplete",ge),$("dragdrop",ge),$("drop",ge)):k&&W.type==="number"&&$("keydown",he),$("change",ge),$("blur",ge),m.o(X,null,{l:W})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(W,Z,Y){Y("textInput",W)}}}(),m.c.uniqueName={init:function(p,x){if(x()){var T="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(p,T)}}},m.c.uniqueName.rd=0,m.c.using={init:function(p,x,T,w,R){var O;return T.has("as")&&(O={as:T.get("as"),noChildContext:T.get("noChildContext")}),x=R.createChildContext(x,O),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(p,x,T){var w=m.a.R(p),R=w=="input";if(!R||p.type!="checkbox"&&p.type!="radio"){var O=[],k=T.get("valueUpdate"),Q=!1,z=null;k&&(typeof k=="string"?O=[k]:O=m.a.wc(k),m.a.Pa(O,"change"));var F=function(){z=null,Q=!1;var Z=x(),Y=m.w.M(p);m.m.eb(Z,T,"value",Y)};!m.a.W||!R||p.type!="text"||p.autocomplete=="off"||p.form&&p.form.autocomplete=="off"||m.a.A(O,"propertychange")!=-1||(m.a.B(p,"propertychange",function(){Q=!0}),m.a.B(p,"focus",function(){Q=!1}),m.a.B(p,"blur",function(){Q&&F()})),m.a.D(O,function(Z){var Y=F;m.a.Ud(Z,"after")&&(Y=function(){z=m.w.M(p),m.a.setTimeout(F,0)},Z=Z.substring(5)),m.a.B(p,Z,Y)});var H;if(H=R&&p.type=="file"?function(){var Z=m.a.f(x());Z===null||Z===e||Z===""?p.value="":m.u.G(F)}:function(){var Z=m.a.f(x()),Y=m.w.M(p);z!==null&&Z===z?m.a.setTimeout(H,0):(Z!==Y||Y===e)&&(w==="select"?(Y=T.get("valueAllowUnset"),m.w.cb(p,Z,Y),Y||Z===m.w.M(p)||m.u.G(F)):m.w.cb(p,Z))},w==="select"){var W;m.i.subscribe(p,m.i.H,function(){W?T.get("valueAllowUnset")?H():F():(m.a.B(p,"change",F),W=m.o(H,null,{l:p}))},null,{notifyImmediately:!0})}else m.a.B(p,"change",F),m.o(H,null,{l:p})}else m.ib(p,{checkedValue:x})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(p,x){var T=m.a.f(x()),w=p.style.display!="none";T&&!w?p.style.display="":!T&&w&&(p.style.display="none")}},m.c.hidden={update:function(p,x){m.c.visible.update(p,function(){return!m.a.f(x())})}},function(p){m.c[p]={init:function(x,T,w,R,O){return m.c.event.init.call(this,x,function(){var k={};return k[p]=T(),k},w,R,O)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(p,x){if(typeof p=="string"){x=x||n;var T=x.getElementById(p);if(!T)throw Error("Cannot find template with ID "+p);return new m.C.F(T)}if(p.nodeType==1||p.nodeType==8)return new m.C.ia(p);throw Error("Unknown template type: "+p)},m.ca.prototype.renderTemplate=function(p,x,T,w){return p=this.makeTemplateSource(p,w),this.renderTemplateSource(p,x,T,w)},m.ca.prototype.isTemplateRewritten=function(p,x){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(p,x).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(p,x,T){p=this.makeTemplateSource(p,T),x=x(p.text()),p.text(x),p.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function p(w,R,O,k){w=m.m.ac(w);for(var Q=m.m.Ra,z=0;z<w.length;z++){var F=w[z].key;if(Object.prototype.hasOwnProperty.call(Q,F)){var H=Q[F];if(typeof H=="function"){if(F=H(w[z].value))throw Error(F)}else if(!H)throw Error("This template engine does not support the '"+F+"' binding within its templates")}}return O="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(w,{valueAccessors:!0})+" } })()},'"+O.toLowerCase()+"')",k.createJavaScriptEvaluatorBlock(O)+R}var x=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,T=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(w,R,O){R.isTemplateRewritten(w,O)||R.rewriteTemplate(w,function(k){return m.kc.Ld(k,R)},O)},Ld:function(w,R){return w.replace(x,function(O,k,Q,z,F){return p(F,k,Q,R)}).replace(T,function(O,k){return p(k,"<!-- ko -->","#comment",R)})},md:function(w,R){return m.aa.Xb(function(O,k){var Q=O.nextSibling;Q&&Q.nodeName.toLowerCase()===R&&m.ib(Q,w,k)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(T){if(this.F=T){var w=m.a.R(T);this.ab=w==="script"?1:w==="textarea"?2:w=="template"&&T.content&&T.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var T=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[T];var w=arguments[0];T==="innerHTML"?m.a.fc(this.F,w):this.F[T]=w};var p=m.a.g.Z()+"_";m.C.F.prototype.data=function(T){if(arguments.length===1)return m.a.g.get(this.F,p+T);m.a.g.set(this.F,p+T,arguments[1])};var x=m.a.g.Z();m.C.F.prototype.nodes=function(){var T=this.F;if(arguments.length==0){var w=m.a.g.get(T,x)||{},R=w.lb||(this.ab===3?T.content:this.ab===4?T:e);if(!R||w.jd){var O=this.text();O&&O!==w.bb&&(R=m.a.Md(O,T.ownerDocument),m.a.g.set(T,x,{lb:R,bb:O,jd:!0}))}return R}w=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(T,x,{lb:w})},m.C.ia=function(T){this.F=T},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var T=m.a.g.get(this.F,x)||{};return T.bb===e&&T.lb&&(T.bb=T.lb.innerHTML),T.bb}m.a.g.set(this.F,x,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function p(z,F,H){var W;for(F=m.h.nextSibling(F);z&&(W=z)!==F;)z=m.h.nextSibling(W),H(W,z)}function x(z,F){if(z.length){var H=z[0],W=z[z.length-1],Z=H.parentNode,Y=m.ga.instance,$=Y.preprocessNode;if($){if(p(H,W,function(X,he){var ge=X.previousSibling,fe=$.call(Y,X);fe&&(X===H&&(H=fe[0]||he),X===W&&(W=fe[fe.length-1]||ge))}),z.length=0,!H)return;H===W?z.push(H):(z.push(H,W),m.a.Ua(z,Z))}p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.vc(F,X)}),p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.aa.cd(X,[F])}),m.a.Ua(z,Z)}}function T(z){return z.nodeType?z:0<z.length?z[0]:null}function w(z,F,H,W,Z){Z=Z||{};var Y=(z&&T(z)||H||{}).ownerDocument,$=Z.templateEngine||O;if(m.kc.xd(H,$,Y),H=$.renderTemplate(H,W,Z,Y),typeof H.length!="number"||0<H.length&&typeof H[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(Y=!1,F){case"replaceChildren":m.h.va(z,H),Y=!0;break;case"replaceNode":m.a.Xc(z,H),Y=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+F)}return Y&&(x(H,W),Z.afterRender&&m.u.G(Z.afterRender,null,[H,W[Z.as||"$data"]]),F=="replaceChildren"&&m.i.ma(z,m.i.H)),H}function R(z,F,H){return m.O(z)?z():typeof z=="function"?z(F,H):z}var O;m.gc=function(z){if(z!=e&&!(z instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");O=z},m.dc=function(z,F,H,W,Z){if(H=H||{},(H.templateEngine||O)==e)throw Error("Set a template engine before calling renderTemplate");if(Z=Z||"replaceChildren",W){var Y=T(W);return m.$(function(){var X=F&&F instanceof m.fa?F:new m.fa(F,null,null,null,{exportDependencies:!0}),$=R(z,X.$data,X),X=w(W,Z,$,X,H);Z=="replaceNode"&&(W=X,Y=T(W))},null,{Sa:function(){return!Y||!m.a.Sb(Y)},l:Y&&Z=="replaceNode"?Y.parentNode:Y})}return m.aa.Xb(function($){m.dc(z,F,H,$,"replaceNode")})},m.Qd=function(z,F,H,W,Z){function Y(xe,ve){m.u.G(m.a.ec,null,[W,xe,X,H,$,ve]),m.i.ma(W,m.i.H)}function $(xe,ve){x(ve,he),H.afterRender&&H.afterRender(ve,xe),he=null}function X(xe,ve){he=Z.createChildContext(xe,{as:ge,noChildContext:H.noChildContext,extend:function(ke){ke.$index=ve,ge&&(ke[ge+"Index"]=ve)}});var Te=R(z,xe,he);return w(W,"ignoreTargetNode",Te,he,H)}var he,ge=H.as,fe=H.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!H.includeDestroyed;if(fe||H.beforeRemove||!m.Pc(F))return m.$(function(){var xe=m.a.f(F)||[];typeof xe.length>"u"&&(xe=[xe]),fe&&(xe=m.a.jb(xe,function(ve){return ve===e||ve===null||!m.a.f(ve._destroy)})),Y(xe)},null,{l:W});Y(F.v());var ye=F.subscribe(function(xe){Y(F(),xe)},null,"arrayChange");return ye.l(W),ye};var k=m.a.g.Z(),Q=m.a.g.Z();m.c.template={init:function(z,F){var H=m.a.f(F());if(typeof H=="string"||"name"in H)m.h.Ea(z);else if("nodes"in H){if(H=H.nodes||[],m.O(H))throw Error('The "nodes" option must be a plain, non-observable array.');var W=H[0]&&H[0].parentNode;W&&m.a.g.get(W,Q)||(W=m.a.Yb(H),m.a.g.set(W,Q,!0)),new m.C.ia(z).nodes(W)}else if(H=m.h.childNodes(z),0<H.length)W=m.a.Yb(H),new m.C.ia(z).nodes(W);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,F,H,W,Z){var Y=F();F=m.a.f(Y),H=!0,W=null,typeof F=="string"?F={}:(Y="name"in F?F.name:z,"if"in F&&(H=m.a.f(F.if)),H&&"ifnot"in F&&(H=!m.a.f(F.ifnot)),H&&!Y&&(H=!1)),"foreach"in F?W=m.Qd(Y,H&&F.foreach||[],F,z,Z):H?(H=Z,"data"in F&&(H=Z.createChildContext(F.data,{as:F.as,noChildContext:F.noChildContext,exportDependencies:!0})),W=m.dc(Y,H,F,z)):m.h.Ea(z),Z=W,(F=m.a.g.get(z,k))&&typeof F.s=="function"&&F.s(),m.a.g.set(z,k,!Z||Z.ja&&!Z.ja()?e:Z)}},m.m.Ra.template=function(z){return z=m.m.ac(z),z.length==1&&z[0].unknown||m.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(p,x,T){if(p.length&&x.length){var w,R,O,k,Q;for(w=R=0;(!T||w<T)&&(k=p[R]);++R){for(O=0;Q=x[O];++O)if(k.value===Q.value){k.moved=Q.index,Q.moved=k.index,x.splice(O,1),w=O=0;break}w+=O}}},m.a.Pb=function(){function p(x,T,w,R,O){var k=Math.min,Q=Math.max,z=[],F,H=x.length,W,Z=T.length,Y=Z-H||1,$=H+Z+1,X,he,ge;for(F=0;F<=H;F++)for(he=X,z.push(X=[]),ge=k(Z,F+Y),W=Q(0,F-1);W<=ge;W++)X[W]=W?F?x[F-1]===T[W-1]?he[W-1]:k(he[W]||$,X[W-1]||$)+1:W+1:F+1;for(k=[],Q=[],Y=[],F=H,W=Z;F||W;)Z=z[F][W]-1,W&&Z===z[F][W-1]?Q.push(k[k.length]={status:w,value:T[--W],index:W}):F&&Z===z[F-1][W]?Y.push(k[k.length]={status:R,value:x[--F],index:F}):(--W,--F,O.sparse||k.push({status:"retained",value:T[W]}));return m.a.Kc(Y,Q,!O.dontLimitMoves&&10*H),k.reverse()}return function(x,T,w){return w=typeof w=="boolean"?{dontLimitMoves:w}:w||{},x=x||[],T=T||[],x.length<T.length?p(x,T,"added","deleted",w):p(T,x,"deleted","added",w)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function p(w,R,O,k,Q){var z=[],F=m.$(function(){var H=R(O,Q,m.a.Ua(z,w))||[];0<z.length&&(m.a.Xc(z,H),k&&m.u.G(k,null,[O,H,Q])),z.length=0,m.a.Nb(z,H)},null,{l:w,Sa:function(){return!m.a.kd(z)}});return{Y:z,$:F.ja()?F:e}}var x=m.a.g.Z(),T=m.a.g.Z();m.a.ec=function(w,R,O,k,Q,z){function F(Rt){Te={Aa:Rt,pb:m.ta(he++)},$.push(Te),Y||ve.push(Te)}function H(Rt){Te=Z[Rt],he!==Te.pb.v()&&xe.push(Te),Te.pb(he++),m.a.Ua(Te.Y,w),$.push(Te)}function W(Rt,Si){if(Rt)for(var gi=0,Ft=Si.length;gi<Ft;gi++)m.a.D(Si[gi].Y,function(St){Rt(St,gi,Si[gi].Aa)})}R=R||[],typeof R.length>"u"&&(R=[R]),k=k||{};var Z=m.a.g.get(w,x),Y=!Z,$=[],X=0,he=0,ge=[],fe=[],ye=[],xe=[],ve=[],Te,ke=0;if(Y)m.a.D(R,F);else{if(!z||Z&&Z._countWaitingForRemove){var Ge=m.a.Mb(Z,function(Rt){return Rt.Aa});z=m.a.Pb(Ge,R,{dontLimitMoves:k.dontLimitMoves,sparse:!0})}for(var Ge=0,Ke,tt,en;Ke=z[Ge];Ge++)switch(tt=Ke.moved,en=Ke.index,Ke.status){case"deleted":for(;X<en;)H(X++);tt===e&&(Te=Z[X],Te.$&&(Te.$.s(),Te.$=e),m.a.Ua(Te.Y,w).length&&(k.beforeRemove&&($.push(Te),ke++,Te.Aa===T?Te=null:ye.push(Te)),Te&&ge.push.apply(ge,Te.Y))),X++;break;case"added":for(;he<en;)H(X++);tt!==e?(fe.push($.length),H(tt)):F(Ke.value)}for(;he<R.length;)H(X++);$._countWaitingForRemove=ke}m.a.g.set(w,x,$),W(k.beforeMove,xe),m.a.D(ge,k.beforeRemove?m.oa:m.removeNode);var it,nn,qt;try{qt=w.ownerDocument.activeElement}catch{}if(fe.length)for(;(Ge=fe.shift())!=e;){for(Te=$[Ge],it=e;Ge;)if((nn=$[--Ge].Y)&&nn.length){it=nn[nn.length-1];break}for(R=0;X=Te.Y[R];it=X,R++)m.h.Wb(w,X,it)}for(Ge=0;Te=$[Ge];Ge++){for(Te.Y||m.a.extend(Te,p(w,O,Te.Aa,Q,Te.pb)),R=0;X=Te.Y[R];it=X,R++)m.h.Wb(w,X,it);!Te.Ed&&Q&&(Q(Te.Aa,Te.Y,Te.pb),Te.Ed=!0,it=Te.Y[Te.Y.length-1])}for(qt&&w.ownerDocument.activeElement!=qt&&qt.focus(),W(k.beforeRemove,ye),Ge=0;Ge<ye.length;++Ge)ye[Ge].Aa=T;W(k.afterMove,xe),W(k.afterAdd,ve)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(p,x,T,w){return(x=!(9>m.a.W)&&p.nodes?p.nodes():null)?m.a.la(x.cloneNode(!0).childNodes):(p=p.text(),m.a.ua(p,w))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var x=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(T,w,R,O){if(O=O||n,R=R||{},2>x)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var k=T.data("precompiled");return k||(k=T.text()||"",k=o.template(null,"{{ko_with $item.koBindingContext}}"+k+"{{/ko_with}}"),T.data("precompiled",k)),T=[w.$data],w=o.extend({koBindingContext:w},R.templateOptions),w=o.tmpl(k,T,w),w.appendTo(O.createElement("div")),o.fragments={},w},this.createJavaScriptEvaluatorBlock=function(T){return"{{ko_code ((function() { return "+T+" })()) }}"},this.addTemplate=function(T,w){n.write("<script type='text/html' id='"+T+"'>"+w+"</script>")},0<x&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var p=new m.$a;0<p.Hd&&m.gc(p),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var cPt=ko;typeof window<"u"?(ko=window.ko,typeof j3<"u"?window.ko=j3:delete window.ko):(ko=global.ko,typeof j3<"u"?global.ko=j3:delete global.ko);var vx=cPt;/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var Wee="__knockoutObservables",jee="__knockoutSubscribable";function hwe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=mwe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===Wee||o===jee)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&uPt(n,a)}}),e}function mwe(e,t){var n=e[Wee];return!n&&t&&(n={},Object.defineProperty(e,Wee,{value:n})),n}function lPt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),hwe.call(i,e,[t]),e}function uPt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=fPt(e,t,i))})}function fPt(e,t,n){var i=dPt(e,n);return i.subscribe(t)}function dPt(e,t){var n=t[jee];if(!n){n=new e.subscribable,Object.defineProperty(t,jee,{value:n});var i={};hPt(t,n,i),mPt(e,t,n,i)}return n}function hPt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function mPt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function Awe(e,t){if(!e)return null;var n=mwe(e,!1);return n&&n[t]||null}function APt(e,t){var n=Awe(e,t);n&&n.valueHasMutated()}function pPt(e){e.track=hwe,e.getObservable=Awe,e.valueHasMutated=APt,e.defineProperty=lPt}var Y3={attachToKo:pPt};var pwe="http://www.w3.org/2000/svg",gwe="cesium-svgPath-svg",gPt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(pwe,"svg:svg");i.setAttribute("class",gwe);let o=document.createElementNS(pwe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${gwe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},q3=gPt;Y3.attachToKo(vx);q3.register(vx);var Ie=vx;function K3(e){l(e)||(e=new Xh),this._clock=e,this._eventHelper=new Dr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=Ie.observable(K.now()),this.systemTime.equalityComparer=K.equals,this.startTime=Ie.observable(e.startTime),this.startTime.equalityComparer=K.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=Ie.observable(e.stopTime),this.stopTime.equalityComparer=K.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=Ie.observable(e.currentTime),this.currentTime.equalityComparer=K.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=Ie.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=Ie.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=Ie.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=Ie.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=Ie.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),Ie.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(K3.prototype,{clock:{get:function(){return this._clock}}});K3.prototype.synchronize=function(){let e=this._clock;this.systemTime=K.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};K3.prototype.isDestroyed=function(){return!1};K3.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var X3=K3;function _Pt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,me.throwInstantiationError()}var Yee=_Pt;var oB={};oB.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};oB.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};oB.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};oB.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};oB.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var Mu=oB;function _we(e,t){this._command=e,t=t??V.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",Ie.track(this,["toggled","tooltip"])}Object.defineProperties(_we.prototype,{command:{get:function(){return this._command}}});var MC=_we;function yPt(e,t){t=t??!0;let n=new _e,i=new _e;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,Ie.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Rn=yPt;function CPt(e,t,n,i,o){return n.call(i,e[t]),Ie.getObservable(e,t).subscribe(n,i,o)}var tc=CPt;var Px="http://www.w3.org/2000/svg",Ewe="http://www.w3.org/1999/xlink",P5,J3=G.fromCssColorString("rgba(247,250,255,0.384)"),R5=G.fromCssColorString("rgba(143,191,255,0.216)"),qee=G.fromCssColorString("rgba(153,197,255,0.098)"),M5=G.fromCssColorString("rgba(255,255,255,0.086)"),EPt=G.fromCssColorString("rgba(255,255,255,0.267)"),IPt=G.fromCssColorString("rgba(255,255,255,0)"),ywe=G.fromCssColorString("rgba(66,67,68,0.3)"),Cwe=G.fromCssColorString("rgba(0,0,0,0.5)");function NC(e){return G.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var Z3={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function Dm(e){let t=document.createElementNS(Px,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(Dm(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(Ewe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function Kee(e,t,n){let i=document.createElementNS(Px,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(Px,"tspan");return o.textContent=n,i.appendChild(o),i}function xPt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var N5=new G;function Bs(e,t){let n=t.alpha,i=1-n;return N5.red=e.red*i+t.red*n,N5.green=e.green*i+t.green*n,N5.blue=e.blue*i+t.blue*n,N5.toCssColorString()}function Xee(e,t,n){let i=Z3[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Dm(o)}function bPt(e,t,n){let i=Z3[n],o=Z3.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Dm(r)}function TPt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&P5!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,A=u-r-a.top,g=Math.atan2(A,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(P5=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===P5&&(P5=void 0),n.shuttleRingDragging=!1}function f_(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[tc(t,"toggled",this.setToggled,this),tc(t,"tooltip",this.setTooltip,this),tc(t.command,"canExecute",this.setEnabled,this)]}f_.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};f_.prototype.isDestroyed=function(){return!1};f_.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};f_.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};f_.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function rB(e,t){e=kn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(Px,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",Ewe);let s=document.createElementNS(Px,"g");this._topG=s,this._realtimeSVG=new f_(bPt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new f_(Xee(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new f_(Xee(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new f_(Xee(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(Px,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=Dm({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=Z3.animation_pathSwooshFX,f=Z3.animation_pathPointer,h=Dm({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=Dm({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let A=Dm({tagName:"g",transform:"translate(100,100)"});this._knobOuter=Dm({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=Dm({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=Kee(0,-24,""),this._knobTime=Kee(0,-7,""),this._knobStatus=Kee(0,-41,"");let _=Dm({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),y=document.createElementNS(Px,"g");y.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(y),s.appendChild(A),s.appendChild(a),y.appendChild(c),y.appendChild(h),y.appendChild(this._shuttleRingPointer),A.appendChild(this._knobOuter),A.appendChild(m),A.appendChild(this._knobDate),A.appendChild(this._knobTime),A.appendChild(this._knobStatus),A.appendChild(_),r.appendChild(s),e.appendChild(r);let C=this;function E(v){TPt(C,v)}this._mouseCallback=E,c.addEventListener("mousedown",E,!0),c.addEventListener("touchstart",E,!0),h.addEventListener("mousedown",E,!0),h.addEventListener("touchstart",E,!0),n.addEventListener("mousemove",E,!0),n.addEventListener("touchmove",E,!0),n.addEventListener("mouseup",E,!0),n.addEventListener("touchend",E,!0),n.addEventListener("touchcancel",E,!0),this._shuttleRingPointer.addEventListener("mousedown",E,!0),this._shuttleRingPointer.addEventListener("touchstart",E,!0),this._knobOuter.addEventListener("mousedown",E,!0),this._knobOuter.addEventListener("touchstart",E,!0);let I=this._knobTime.childNodes[0],b=this._knobDate.childNodes[0],S=this._knobStatus.childNodes[0],B;this._subscriptions=[tc(t.pauseViewModel,"toggled",function(v){B!==v&&(B=v,B?C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),tc(t,"shuttleRingAngle",function(v){xPt(C._shuttleRingPointer,C._knobOuter,v)}),tc(t,"dateLabel",function(v){b.textContent!==v&&(b.textContent=v)}),tc(t,"timeLabel",function(v){I.textContent!==v&&(I.textContent=v)}),tc(t,"multiplierLabel",function(v){S.textContent!==v&&(S.textContent=v)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(rB.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});rB.prototype.isDestroyed=function(){return!1};rB.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};rB.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};rB.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=NC(this._themeNormal),n=NC(this._themeHover),i=NC(this._themeSelect),o=NC(this._themeDisabled),r=NC(this._themeKnob),s=NC(this._themePointer),a=NC(this._themeSwoosh),c=NC(this._themeSwooshHover),u=Dm({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(t,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(t,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(t,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(t,M5)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(n,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(n,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(n,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(n,M5)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(i,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(i,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(i,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(i,M5)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(o,EPt)},{tagName:"stop",offset:"75%","stop-color":Bs(o,IPt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Bs(s,Cwe)},{tagName:"stop",offset:"100%","stop-color":Bs(s,Cwe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Bs(r,J3)},{tagName:"stop",offset:"60%","stop-color":Bs(r,ywe)},{tagName:"stop",offset:"85%","stop-color":Bs(r,R5)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Bs(r,ywe)},{tagName:"stop",offset:"60%","stop-color":Bs(r,J3)},{tagName:"stop",offset:"85%","stop-color":Bs(r,M5)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var $3=rB;var SPt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],LC=15,sB=105;function Iwe(e,t){return e-t}function Jee(e,t){let n=Wo(t,e,Iwe);return n<0?~n:n}function wPt(e,t){if(Math.abs(e)<=LC)return e/LC;let n=LC,i=sB,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function BPt(e,t,n){if(n.clockStep===wo.SYSTEM_CLOCK)return LC;if(Math.abs(e)<=1)return e*LC;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=LC,r=sB,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Xd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Xd.defaultDateFormatter,this._timeFormatter=Xd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Ie.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Xd.defaultTicks),this.timeLabel=void 0,Ie.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,Ie.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,Ie.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===wo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Ie.defineProperty(this,"shuttleRingAngle",{get:function(){return BPt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,sB),-sB);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===sB){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=wPt(s,a);if(t.snapToTicks)u=a[Jee(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,A=Math.pow(10,h);u=Math.round(u/A)*A|0}else f>LC?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,Ie.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===fs.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===fs.LOOP_STOP)h=K.greaterThan(u,f)||u.equals(f)&&c>0;else{let A=s.stopTime;h=K.greaterThan(u,f)&&K.lessThan(u,A)||u.equals(f)&&c>0||u.equals(A)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Ie.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===fs.UNBOUNDED)return!0;let c=s.systemTime;return K.greaterThanOrEquals(c,s.startTime)&&K.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,Ie.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Rn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new MC(n,{toggled:Ie.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Rn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new MC(i,{toggled:Ie.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Rn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new MC(o,{toggled:Ie.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==wo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Rn(function(){t._clockViewModel.clockStep=wo.SYSTEM_CLOCK},Ie.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new MC(r,{toggled:Ie.computed(function(){return e.clockStep===wo.SYSTEM_CLOCK}),tooltip:Ie.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Rn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=Jee(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Rn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=Jee(c,a)+1;u<a.length&&(s.multiplier=a[u])})}Xd.defaultDateFormatter=function(e,t){let n=K.toGregorianDate(e);return`${SPt[n.month-1]} ${n.day} ${n.year}`};Xd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Xd.defaultTimeFormatter=function(e,t){let n=K.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Xd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Xd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(Iwe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);si(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Xd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Xd._maxShuttleRingAngle=sB;Xd._realtimeShuttleRingAngle=LC;var eU=Xd;function xwe(e){e=e??V.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??V.EMPTY_ARRAY,i=e.terrainProviderViewModels??V.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Ie.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Ie.getObservable(this,"imageryProviderViewModels"),r=Ie.pureComputed(function(){let h=o(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._imageryProviders=r;let s=Ie.getObservable(this,"terrainProviderViewModels"),a=Ie.pureComputed(function(){let h=s(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._terrainProviders=a,this.buttonTooltip=void 0,Ie.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,A=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(A)?A.name:void 0;return l(g)&&l(m)?`${g} +${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,Ie.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=Ie.observable();this._currentImageryLayers=[],Ie.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let A,g=this._currentImageryLayers,m=g.length,_=this._globe.imageryLayers,y=!1;for(A=0;A<m;A++){let C=_.length;for(let E=0;E<C;E++){let I=_.get(E);if(I===g[A]){_.remove(I),y=!0;break}}}if(l(h)){let C=h.creationCommand();if(Array.isArray(C)){let E=C.length;for(this._currentImageryLayers=[],A=E-1;A>=0;A--){let I=rs.fromProviderAsync(C[A]);_.add(I,0),this._currentImageryLayers.push(I)}}else{this._currentImageryLayers=[];let E=rs.fromProviderAsync(C);if(E.name=h.name,y)_.add(E,0);else{let I=_.get(0);l(I)&&_.remove(I),_.add(E,0)}this._currentImageryLayers.push(E)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=Ie.observable();Ie.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let A;if(l(h)&&(A=h.creationCommand()),l(A)&&!l(A.then))this._globe.depthTestAgainstTerrain=!(A instanceof DA),this._globe.terrainProvider=A;else if(l(A)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),y=new z3(A).readyEvent.addEventListener(C=>{g||(this._globe.depthTestAgainstTerrain=!(C instanceof DA),this._globe.terrainProvider=C,y())})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Rn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(xwe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var tU=xwe;function L5(e,t){e=kn(e);let n=new tU(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let A=document.createElement("img");A.className="cesium-baseLayerPicker-itemIcon",A.setAttribute("data-bind","attr: { src: iconUrl }"),A.setAttribute("draggable","false"),h.appendChild(A);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let _=document.createElement("div");_.className="cesium-baseLayerPicker-section",_.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(_);let y=document.createElement("div");y.className="cesium-baseLayerPicker-category",_.appendChild(y);let C=document.createElement("div");C.className="cesium-baseLayerPicker-categoryTitle",C.setAttribute("data-bind","text: name"),y.appendChild(C);let E=document.createElement("div");E.className="cesium-baseLayerPicker-choices",E.setAttribute("data-bind","foreach: providers"),y.appendChild(E);let I=document.createElement("div");I.className="cesium-baseLayerPicker-item",I.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),E.appendChild(I);let b=document.createElement("img");b.className="cesium-baseLayerPicker-itemIcon",b.setAttribute("data-bind","attr: { src: iconUrl }"),b.setAttribute("draggable","false"),I.appendChild(b);let S=document.createElement("div");S.className="cesium-baseLayerPicker-itemLabel",S.setAttribute("data-bind","text: name"),I.appendChild(S),Ie.applyBindings(n,i),Ie.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(B){i.contains(B.target)||r.contains(B.target)||(n.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(L5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});L5.prototype.isDestroyed=function(){return!1};L5.prototype.destroy=function(){return Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._element),Ie.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var nU=L5;function bwe(e){let t=e.creationFunction;l(t.canExecute)||(t=Rn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",Ie.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(bwe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Ds=bwe;function DPt(){let e=[],t=devicePixelRatio>=2;return e.push(new Ds({name:"Bing Maps Aerial",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.AERIAL})}})),e.push(new Ds({name:"Bing Maps Aerial with Labels",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.AERIAL_WITH_LABELS})}})),e.push(new Ds({name:"Bing Maps Roads",iconUrl:fn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.ROAD})}})),e.push(new Ds({name:"ArcGIS World Imagery",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Ds({name:"ArcGIS World Hillshade",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Ds({name:"Esri World Ocean",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.OCEANS,{enablePickFeatures:!1})}})),e.push(new Ds({name:"Open\xADStreet\xADMap",iconUrl:fn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new u_({url:"https://tile.openstreetmap.org/"})}})),e.push(new Ds({name:"Stadia x Stamen Watercolor",iconUrl:fn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia x Stamen Toner",iconUrl:fn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia Alidade Smooth",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia Alidade Smooth Dark",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Sentinel-2",iconUrl:fn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3954)}})),e.push(new Ds({name:"Blue Marble",iconUrl:fn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3845)}})),e.push(new Ds({name:"Earth at night",iconUrl:fn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3812)}})),e.push(new Ds({name:"Natural Earth\xA0II",iconUrl:fn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return Ay.fromUrl(fn("Assets/Textures/NaturalEarthII"))}})),e}var iU=DPt;function vPt(){let e=[];return e.push(new Ds({name:"WGS84 Ellipsoid",iconUrl:fn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new DA({ellipsoid:te.WGS84})}})),e.push(new Ds({name:"Cesium World Terrain",iconUrl:fn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return Ex({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var oU=vPt;function PPt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof ks&&(e.tileset=n.primitive),e.pickActive=!1}}function Swe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof ks&&(e.tileset=i.primitive)},Dn.MOUSE_MOVE):(e._eventHandler.removeInputAction(Dn.MOUSE_MOVE),e.picking=e.picking)}var RPt={maximumFractionDigits:3};function rU(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,RPt):Math.round(t).toLocaleString()}function sU(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[qo.PICK]:e._statisticsPerPass[qo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${rU(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${rU(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${rU(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function wwe(){let e=Fi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${rU(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${rU(e.texturesByteLength)}</li> + </ul> + `}var MPt=[{text:"Highlight",value:ou.HIGHLIGHT},{text:"Replace",value:ou.REPLACE},{text:"Mix",value:ou.MIX}],Twe=new G(1,1,0,.4),NPt=new G,O5=new G;function nc(e,t){let n=this,i=e.canvas;this._eventHandler=new Pf(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new qg({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Ie.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Ie.observable({}),this.properties=[],Ie.defineProperty(this,"properties",function(){let F=[],H=n._properties();for(let W in H)H.hasOwnProperty(W)&&F.push(W);return F});let o=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(F){o(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=F)}}),this.dynamicScreenSpaceError=!1;let r=Ie.observable();Ie.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(F){r(F),l(n._tileset)&&(n._tileset.colorBlendMode=F,n._scene.requestRender())}}),this.colorBlendMode=ou.HIGHLIGHT;let s=Ie.observable(),a=Ie.observable();Ie.defineProperty(this,"picking",{get:function(){return a()},set:function(F){a(F),F?n._eventHandler.setInputAction(function(H){let W=e.pick(H.endPosition);if(W instanceof ha?(n.feature=W,n.tile=W.content.tile):l(W)&&l(W.content)?(n.feature=void 0,n.tile=W.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(W)&&l(W.content)){let Z;e.pickPositionSupported&&(Z=e.pickPosition(H.endPosition),l(Z)&&(n._tileset.debugPickPosition=Z)),n._tileset.debugPickedTile=W.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},Dn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(Dn.MOUSE_MOVE))}}),this.picking=!0;let c=Ie.observable();Ie.defineProperty(this,"colorize",{get:function(){return c()},set:function(F){c(F),l(n._tileset)&&(n._tileset.debugColorizeTiles=F,n._scene.requestRender())}}),this.colorize=!1;let u=Ie.observable();Ie.defineProperty(this,"wireframe",{get:function(){return u()},set:function(F){u(F),l(n._tileset)&&(n._tileset.debugWireframe=F,n._scene.requestRender())}}),this.wireframe=!1;let f=Ie.observable();Ie.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(F){f(F),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=F,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Ie.observable();Ie.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(F){h(F),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=F,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let A=Ie.observable();Ie.defineProperty(this,"showRequestVolumes",{get:function(){return A()},set:function(F){A(F),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=F,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=Ie.observable();Ie.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(F){g(F),l(n._tileset)&&(n._tileset.debugFreezeFrame=F,n._scene.debugShowFrustumPlanes=F,n._scene.requestRender())}}),this.freezeFrame=!1,Ie.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(F){s(F),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=F,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=Ie.observable();Ie.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(F){m(F),l(n._tileset)&&(n._tileset.debugShowGeometricError=F,n._scene.requestRender())}}),this.showGeometricError=!1;let _=Ie.observable();Ie.defineProperty(this,"showRenderingStatistics",{get:function(){return _()},set:function(F){_(F),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=F,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let y=Ie.observable();Ie.defineProperty(this,"showMemoryUsage",{get:function(){return y()},set:function(F){y(F),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=F,n._scene.requestRender())}}),this.showMemoryUsage=!1;let C=Ie.observable();Ie.defineProperty(this,"showUrl",{get:function(){return C()},set:function(F){C(F),l(n._tileset)&&(n._tileset.debugShowUrl=F,n._scene.requestRender())}}),this.showUrl=!1;let E=Ie.observable();Ie.defineProperty(this,"maximumScreenSpaceError",{get:function(){return E()},set:function(F){F=Number(F),isNaN(F)||(E(F),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=F))}}),this.maximumScreenSpaceError=16;let I=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return I()},set:function(F){F=Number(F),isNaN(F)||(I(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=F))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Ie.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(I(),1/6)},set:function(F){let H=Math.pow(F,6);I(H),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H)}});let b=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return b()},set:function(F){F=Number(F),isNaN(F)||(b(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=F))}}),this.dynamicScreenSpaceErrorFactor=24;let S=PPt(this),B=Ie.observable();Ie.defineProperty(this,"pickActive",{get:function(){return B()},set:function(F){B(F),F?n._eventHandler.setInputAction(S,Dn.LEFT_CLICK):n._eventHandler.removeInputAction(Dn.LEFT_CLICK)}});let v=Ie.observable();Ie.defineProperty(this,"pointCloudShading",{get:function(){return v()},set:function(F){v(F),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=F)}}),this.pointCloudShading=!1;let P=Ie.observable();Ie.defineProperty(this,"geometricErrorScale",{get:function(){return P()},set:function(F){F=Number(F),isNaN(F)||(P(F),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=F))}}),this.geometricErrorScale=1;let M=Ie.observable();Ie.defineProperty(this,"maximumAttenuation",{get:function(){return M()},set:function(F){F=Number(F),isNaN(F)||(M(F),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=F===0?void 0:F))}}),this.maximumAttenuation=0;let L=Ie.observable();Ie.defineProperty(this,"baseResolution",{get:function(){return L()},set:function(F){F=Number(F),isNaN(F)||(L(F),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=F===0?void 0:F))}}),this.baseResolution=0;let p=Ie.observable();Ie.defineProperty(this,"eyeDomeLighting",{get:function(){return p()},set:function(F){p(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=F)}}),this.eyeDomeLighting=!1;let x=Ie.observable();Ie.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return x()},set:function(F){F=Number(F),isNaN(F)||(x(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=F))}}),this.eyeDomeLightingStrength=1;let T=Ie.observable();Ie.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return T()},set:function(F){F=Number(F),isNaN(F)||(T(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=F))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let w=Ie.observable();Ie.defineProperty(this,"skipLevelOfDetail",{get:function(){return w()},set:function(F){w(F),l(n._tileset)&&(n._tileset.skipLevelOfDetail=F)}}),this.skipLevelOfDetail=!0;let R=Ie.observable();Ie.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return R()},set:function(F){F=Number(F),isNaN(F)||(R(F),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=F))}}),this.skipScreenSpaceErrorFactor=16;let O=Ie.observable();Ie.defineProperty(this,"baseScreenSpaceError",{get:function(){return O()},set:function(F){F=Number(F),isNaN(F)||(O(F),l(n._tileset)&&(n._tileset.baseScreenSpaceError=F))}}),this.baseScreenSpaceError=1024;let k=Ie.observable();Ie.defineProperty(this,"skipLevels",{get:function(){return k()},set:function(F){F=Number(F),isNaN(F)||(k(F),l(n._tileset)&&(n._tileset.skipLevels=F))}}),this.skipLevels=1;let Q=Ie.observable();Ie.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return Q()},set:function(F){Q(F),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=F)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=Ie.observable();Ie.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(F){z(F),l(n._tileset)&&(n._tileset.loadSiblings=F)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||Swe(this,!0)}Object.defineProperties(nc.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return MPt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=sU(e,!1),this._pickStatisticsText=sU(e,!0),this._resourceCacheStatisticsText=wwe(),Swe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,NPt):G.WHITE:t.color=O5,this._scene.requestRender()),l(e)&&(G.clone(e.color,O5),e.color=Twe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!Zee(t.content)&&(t.color=O5,this._scene.requestRender()),l(e)&&!Zee(e.content)&&(G.clone(e.color,O5),e.color=Twe,this._scene.requestRender()),this._tile=e}}});function Zee(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!Zee(t[i]))return!1;return!0}return!1}nc.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};nc.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};nc.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};nc.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};nc.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};nc.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};nc.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};nc.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};nc.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};nc.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};nc.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new xx(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};nc.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};nc.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=sU(e,!1),this._pickStatisticsText=sU(e,!0),this._resourceCacheStatisticsText=wwe())};nc.prototype.isDestroyed=function(){return!1};nc.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){Ie.getObservable(e,t).dispose()}),ue(this)};nc.getStatistics=sU;var aU=nc;function F5(e,t){e=kn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new aU(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=Mu.createSection,c=Mu.createCheckbox,u=Mu.createRangeInput,f=Mu.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),A=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),_=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),y=a(s,"Style","styleVisible","toggleStyle"),C=a(s,"Optimization","optimizationVisible","toggleOptimization"),E=document.createElement("div");E.className="field-group";let I=document.createElement("label");I.className="field-label",I.appendChild(document.createTextNode("Properties: "));let b=document.createElement("div");b.setAttribute("data-bind","text: properties"),E.appendChild(I),E.appendChild(b),h.appendChild(E),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),A.appendChild(c("Colorize","colorize"));let S=A.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),B=document.createElement("p");B.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),B.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),B.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",S.appendChild(B),A.appendChild(c("Bounding Volumes","showBoundingVolumes")),A.appendChild(c("Content Volumes","showContentBoundingVolumes")),A.appendChild(c("Request Volumes","showRequestVolumes")),A.appendChild(c("Point Cloud Shading","pointCloudShading"));let v=document.createElement("div");v.setAttribute("data-bind","visible: pointCloudShading"),v.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),v.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),v.appendChild(u("Base Resolution","baseResolution",0,1,.01)),v.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),A.appendChild(v);let P=document.createElement("div");P.setAttribute("data-bind","visible: eyeDomeLighting"),P.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),P.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),v.appendChild(P),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let M=document.createElement("div");M.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(M);let L=document.createElement("div");L.setAttribute("data-bind","visible: dynamicScreenSpaceError"),L.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),L.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(L),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let p=document.createElement("div");p.className="cesium-3dTilesInspector-statistics",p.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(p),m.appendChild(c("Pick Statistics","showPickStatistics"));let x=document.createElement("div");x.className="cesium-3dTilesInspector-statistics",x.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(x),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(T);let w=document.createElement("div");y.appendChild(w),w.appendChild(document.createTextNode("Color Blend Mode: "));let R=document.createElement("select");R.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),w.appendChild(R);let O=document.createElement("textarea");O.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),w.className="cesium-cesiumInspector-styleEditor",w.appendChild(O);let k=f("Compile (Ctrl+Enter)","compileStyle");w.appendChild(k);let Q=document.createElement("div");Q.className="cesium-cesiumInspector-error",Q.setAttribute("data-bind","text: editorError"),w.appendChild(Q),_.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),_.appendChild(c("Geometric Error","showGeometricError")),_.appendChild(c("Rendering Statistics","showRenderingStatistics")),_.appendChild(c("Memory Usage (MB)","showMemoryUsage")),_.appendChild(c("Url","showUrl")),C.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),C.appendChild(z);let F=document.createElement("div");F.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),C.appendChild(F);let H=document.createElement("div");H.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),C.appendChild(H),C.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),C.appendChild(c("Load siblings of visible tiles","loadSiblings")),Ie.applyBindings(o,n)}Object.defineProperties(F5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});F5.prototype.isDestroyed=function(){return!1};F5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var cU=F5;function LPt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function $ee(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var OPt=new In,FPt=new d;function lU(e,t){let n=this,i=e.canvas,o=new Pf(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Ie.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Rn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Rn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Rn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Rn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Ie.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=Ie.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=Ie.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new qg({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Rn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Ie.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Rn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new w3({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Ie.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Rn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Ie.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Ie.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=Ie.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Rn(function(){let u=n.depthFrustum+1;return n.depthFrustum=$ee(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Rn(function(){let u=n.depthFrustum-1;return n.depthFrustum=$ee(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Ie.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Rn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new H3({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Ie.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Ie.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Rn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Rn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Ie.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Rn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Ie.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,Dn.LEFT_CLICK):o.removeInputAction(Dn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,A=n._scene.camera.getPickRay(u.position,OPt),g=r.pick(A,n._scene,FPt);if(l(g)){let m=h.cartesianToCartographic(g),_=r._surface.tileProvider._tilesToRenderByTextureCount;for(let y=0;!f&&y<_.length;++y){let C=_[y];if(l(C))for(let E=0;!f&&E<C.length;++E){let I=C[E];ae.contains(I.rectangle,m)&&(f=I)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Rn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Ie.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,Dn.LEFT_CLICK):o.removeInputAction(Dn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(lU.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});lU.prototype._update=function(){this.frustums&&(this.frustumStatisticText=LPt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=$ee(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};lU.prototype.isDestroyed=function(){return!1};lU.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var uU=lU;function Q5(e,t){e=kn(e);let n=document.createElement("div"),i=new uU(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=Mu.createSection,c=Mu.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let A=document.createElement("div");A.className="cesium-cesiumInspector-shaderCache",A.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(A);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(m);let _=document.createElement("span");_.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(_);let y=document.createElement("input");y.type="button",y.value="-",y.className="cesium-cesiumInspector-pickButton",y.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(y);let C=document.createElement("input");C.type="button",C.value="+",C.className="cesium-cesiumInspector-pickButton",C.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(C);let E=a(s,"Primitives","primitivesVisible","togglePrimitives"),I=document.createElement("div");I.className="cesium-cesiumInspector-pickSection",E.appendChild(I);let b=document.createElement("input");b.type="button",b.value="Pick a primitive",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let S=document.createElement("div");S.className="cesium-cesiumInspector-center",S.appendChild(b),I.appendChild(S),I.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),I.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),I.appendChild(this._primitiveOnly);let B=a(s,"Terrain","terrainVisible","toggleTerrain"),v=document.createElement("div");v.className="cesium-cesiumInspector-pickSection",B.appendChild(v);let P=document.createElement("input");P.type="button",P.value="Pick a tile",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),S=document.createElement("div"),S.appendChild(P),S.className="cesium-cesiumInspector-center",v.appendChild(S);let M=document.createElement("div");v.appendChild(M);let L=document.createElement("input");L.type="button",L.value="Parent",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectParent");let p=document.createElement("input");p.type="button",p.value="NW",p.className="cesium-cesiumInspector-pickButton",p.setAttribute("data-bind","click: selectNW");let x=document.createElement("input");x.type="button",x.value="NE",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: selectNE");let T=document.createElement("input");T.type="button",T.value="SW",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectSW");let w=document.createElement("input");w.type="button",w.value="SE",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSE");let R=document.createElement("div");R.className="cesium-cesiumInspector-tileText",M.className="cesium-cesiumInspector-frustumStatistics",M.appendChild(R),M.setAttribute("data-bind","visible: hasPickedTile"),R.setAttribute("data-bind","html: tileText");let O=document.createElement("div");O.className="cesium-cesiumInspector-relativeText",O.textContent="Select relative:",M.appendChild(O);let k=document.createElement("table"),Q=document.createElement("tr"),z=document.createElement("tr"),F=document.createElement("td");F.appendChild(L);let H=document.createElement("td");H.appendChild(p);let W=document.createElement("td");W.appendChild(x),Q.appendChild(F),Q.appendChild(H),Q.appendChild(W);let Z=document.createElement("td"),Y=document.createElement("td");Y.appendChild(T);let $=document.createElement("td");$.appendChild(w),z.appendChild(Z),z.appendChild(Y),z.appendChild($),k.appendChild(Q),k.appendChild(z),M.appendChild(k),v.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),v.appendChild(c("Show only selected","filterTile","hasPickedTile")),B.appendChild(c("Wireframe","wireframe")),B.appendChild(c("Suspend LOD update","suspendUpdates")),B.appendChild(c("Show tile coordinates","tileCoordinates")),Ie.applyBindings(i,this._element)}Object.defineProperties(Q5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});Q5.prototype.isDestroyed=function(){return!1};Q5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var fU=Q5;function k5(e,t){l(t)||(t=document.body),t=kn(t);let n=this,i=Ie.observable(Fr.fullscreen),o=Ie.observable(Fr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,Ie.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Ie.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Fr.enabled)}}),this.tooltip=void 0,Ie.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Rn(function(){Fr.fullscreen?Fr.exitFullscreen():Fr.requestFullscreen(n._fullscreenElement)},Ie.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=kn(e)??r.body,this._callback=function(){i(Fr.fullscreen)},r.addEventListener(Fr.changeEventName,this._callback)}Object.defineProperties(k5.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});k5.prototype.isDestroyed=function(){return!1};k5.prototype.destroy=function(){document.removeEventListener(Fr.changeEventName,this._callback),ue(this)};var dU=k5;var QPt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",kPt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function U5(e,t){e=kn(e);let n=new dU(t,e);n._exitFullScreenPath=kPt,n._enterFullScreenPath=QPt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),Ie.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(U5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});U5.prototype.isDestroyed=function(){return!1};U5.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var hU=U5;var Bwe=1e3;function Jd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new yx({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new _e,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=vwe,this._handleArrowUp=Dwe;let t=this;this._suggestionsVisible=Ie.pureComputed(function(){let o=Ie.getObservable(t,"_suggestions")().length>0,r=Ie.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Rn(function(i){if(i=i??wC.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)WPt(t);else return VPt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?Dwe(t):r?vwe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;Mwe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??Jd.flyToDestination,this._focusTextbox=!1,Ie.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Ie.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){Jd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,Ie.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Ie.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Ie.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(Jd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});Jd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function Dwe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],Jd._adjustSuggestionsScroll(e,n)}function vwe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],Jd._adjustSuggestionsScroll(e,i)}function UPt(e,t){let n=l(t)?t.availability:void 0;return l(n)?PI(t,[e]).then(function(i){return e=i[0],e.height+=Bwe,e}):(e.height+=Bwe,Promise.resolve(e))}function GPt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?D.equalsEpsilon(t.south,t.north,D.EPSILON7)&&D.equalsEpsilon(t.east,t.west,D.EPSILON7)?t=ae.center(t):a=RI(t,n):t=i.cartesianToCartographic(t),l(a)||(a=UPt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:N.IDENTITY})})}async function zPt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function VPt(e,t,n){let i=e._searchText;if(Rwe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await zPt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,tte(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=Pwe(e,Ww.getCreditsFromResult(s[0]));l(a)||ete(e,t[o].credit);return}e._searchText=`${i} (not found)`}function ete(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function Pwe(e,t){return l(t)&&t.forEach(n=>ete(e,n)),t}function tte(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function HPt(e,t){let n=kn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function WPt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function Rwe(e){return/^\s*$/.test(e)}function Mwe(e){Ie.getObservable(e,"_suggestions").removeAll()}async function jPt(e){if(!e.autoComplete)return;let t=e._searchText;if(Mwe(e),tte(e),!Rwe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,wC.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=Ww.getCreditsFromResult(r);o=o&&!l(s),Pwe(e,s)}),o&&ete(e,n.credit)}if(e._suggestions.length>=5)return}}Jd.flyToDestination=GPt;Jd._updateSearchSuggestions=jPt;Jd._adjustSuggestionsScroll=HPt;Jd.prototype.isDestroyed=function(){return!1};Jd.prototype.destroy=function(){return tte(this),ue(this)};var mU=Jd;var YPt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",qPt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function G5(e){let t=kn(e.container),n=new mU(e);n._startSearchPath=YPt,n._stopSearchPath=qPt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),Ie.applyBindings(n,i),Ie.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},Wt.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(G5.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});G5.prototype.isDestroyed=function(){return!1};G5.prototype.destroy=function(){let e=this._container;return Wt.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Ie.cleanNode(this._form),Ie.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var AU=G5;function Nwe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Rn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Ie.track(this,["tooltip"])}Object.defineProperties(Nwe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var pU=Nwe;function z5(e,t,n){e=kn(e);let i=new pU(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),Ie.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(z5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});z5.prototype.isDestroyed=function(){return!1};z5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var gU=z5;function KPt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function Owe(e,t){Ie.track(e);for(let n=0;n<e.sublayers.length;n++)Owe(e.sublayers[n],t)}function V5(e){return e.modelName==="FullModel"}function Fwe(e){return e.modelName==="Overview"}function Qwe(e){return Fwe(e)||V5(e)}function Lwe(e,t){if(Qwe(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:Ie.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function XPt(e,t){if(Qwe(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");V5(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function JPt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function ZPt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Ie.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Ie.observable(!0),index:-1}],currentLayer:Ie.observable(),expandClickHandler:KPt,setOptionDisable:function(i,o){Ie.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){XPt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){Owe(n[i],this.viewModel);let o=Lwe(n[i],this.viewModel);l(o)&&(Fwe(o)||!l(this.viewModel.defaultLayer)&&V5(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=Lwe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=V5(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return JPt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var _U=ZPt;function $Pt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new _U(t);Ie.track(o),Ie.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var nte=$Pt;var eRt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",tRt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function ite(){this._cameraClicked=new _e,this._closeClicked=new _e,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Ie.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Ie.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?tRt:eRt}}),Ie.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}ite.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(ite.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var yU=ite;function H5(e){e=kn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new yU;Ie.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=fn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=tc(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let A=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let _=window.getComputedStyle(g);if(_!==null){let y=_["background-color"],C=G.fromCssColorString(y);l(C)&&C.alpha!==0&&(A=_["background-color"])}}t.style["background-color"]=A;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(H5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});H5.prototype.isDestroyed=function(){return!1};H5.prototype.destroy=function(){let e=this._container;return Ie.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var CU=H5;function kwe(){this.showInstructions=!1;let e=this;this._command=Rn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Rn(function(){e._touch=!1}),this._showTouch=Rn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Ie.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(kwe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var EU=kwe;function W5(e){let t=kn(e.container),n=new EU,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=fn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=fn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let A=document.createElement("div");A.className="cesium-touch-navigation-help cesium-navigation-help-instructions",A.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),A.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(A),Ie.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(W5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});W5.prototype.isDestroyed=function(){return!1};W5.prototype.destroy=function(){return Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var IU=W5;function ote(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Ie.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Rn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=v3.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(ote.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});ote.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var xU=ote;function j5(e){let t=kn(e.container),n=new xU(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),Ie.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(j5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});j5.prototype.isDestroyed=function(){return!1};j5.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var bU=j5;function Y5(e){this._scene=e,this._orthographic=e.camera.frustum instanceof An,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,Ie.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;Ie.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Rn(function(){t.sceneMode===ie.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Dr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ie.SCENE2D||t._scene.camera.frustum instanceof An}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Rn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Rn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ie}Object.defineProperties(Y5.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});Y5.prototype.isDestroyed=function(){return!1};Y5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var TU=Y5;var nRt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",iRt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function q5(e,t){e=kn(e);let n=new TU(t);n._perspectivePath=nRt,n._orthographicPath=iRt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Ie.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(q5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});q5.prototype.isDestroyed=function(){return!1};q5.prototype.destroy=function(){return this._viewModel.destroy(),Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var SU=q5;function K5(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Dr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Ie.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Ie.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ie.SCENE2D?n.tooltip2D:o===ie.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Rn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Rn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Rn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Rn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ie}Object.defineProperties(K5.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});K5.prototype.isDestroyed=function(){return!1};K5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var wU=K5;var oRt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",rRt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",sRt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function X5(e,t,n){e=kn(e);let i=new wU(t,n);i._globePath=oRt,i._flatMapPath=rRt,i._columbusViewPath=sRt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),Ie.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(X5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});X5.prototype.isDestroyed=function(){return!1};X5.prototype.destroy=function(){return this._viewModel.destroy(),Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var BU=X5;var aRt=new U,J5="-1000px";function DU(e,t,n){this._scene=e,this._screenPositionX=J5,this._screenPositionY=J5,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,Ie.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Ie.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),Ie.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return eo.worldToWindowCoordinates(e,i,o)}}DU.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,aRt);if(!l(e))this._screenPositionX=J5,this._screenPositionY=J5;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};DU.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};DU.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};Object.defineProperties(DU.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var vU=DU;function Z5(e,t){e=kn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new vU(t,this._element,this._container);this._viewModel=c,Ie.applyBindings(this._viewModel,this._element)}Object.defineProperties(Z5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});Z5.prototype.isDestroyed=function(){return!1};Z5.prototype.destroy=function(){let e=this._container;return Ie.cleanNode(this._element),e.removeChild(this._element),ue(this)};var PU=Z5;function Rx(e,t,n){this._color=e,this._height=t,this._base=n??0}Rx.prototype.getHeight=function(){return this._height};Rx.prototype.getBase=function(){return this._base};Rx.prototype.getStartTime=function(){return this._start};Rx.prototype.getStopTime=function(){return this._stop};Rx.prototype.setRange=function(e,t){this._start=e,this._stop=t};Rx.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=K.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=K.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var RU=Rx;function Uwe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new G(.5,.5,.5,1),this.backgroundColor=i||new G(0,0,0,0)}Uwe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=K.addSeconds(t.startJulian,t.duration,new K);if(K.lessThan(n,o)&&K.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(K.lessThanOrEquals(n,r)&&K.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=K.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new K);!l(a)&&K.greaterThanOrEquals(u,n)?a=s:!l(c)&&K.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var MU=Uwe;var rte=1e12,Zd={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},jl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},OC=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],cRt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Yl(e,t){e=kn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=Zd.none,this._touchMode=jl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=lRt(this),this._onMouseUp=uRt(this),this._onMouseMove=fRt(this),this._onMouseWheel=dRt(this),this._onTouchStart=hRt(this),this._onTouchMove=ARt(this),this._onTouchEnd=mRt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}Yl.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};Yl.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};Yl.prototype.isDestroyed=function(){return!1};Yl.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};Yl.prototype.addHighlightRange=function(e,t,n){let i=new RU(e,t,n);return this._highlightRanges.push(i),this.resize(),i};Yl.prototype.addTrack=function(e,t,n,i){let o=new MU(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};Yl.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=K.secondsDifference(t,e),this._clock&&this._clock.clockRange!==fs.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=K.secondsDifference(o,i),s=K.secondsDifference(i,this._startJulian),a=K.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=K.addSeconds(this._endJulian,s,new K),this._startJulian=i,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=K.addSeconds(this._startJulian,a,new K),this._endJulian=o,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};Yl.prototype.zoomFrom=function(e){let t=K.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(K.addSeconds(this._startJulian,t-t*e,new K),K.addSeconds(this._endJulian,n*e-n,new K))};function ste(e){return e<10?`0${e.toString()}`:e.toString()}Yl.prototype.makeLabel=function(e){let t=K.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${cRt[t.month-1]} ${t.day} ${t.year} ${ste(t.hour)}:${ste(t.minute)}:${ste(t.second)}${i}`};Yl.prototype.smallestTicInPixels=7;Yl.prototype._makeTics=function(){let e=this._timeBarEle,t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=K.addSeconds(this._startJulian,a,new K)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=K.addSeconds(this._startJulian,c,new K));let A=this._timeBarEle.clientWidth;A<10&&(A=10);let g=this._startJulian,m=Math.min(h/A*1e-5,.4),_,y=K.toGregorianDate(g);h>31536e4?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/100)*100,0))):h>31536e3?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/10)*10,0))):h>86400?_=K.fromDate(new Date(Date.UTC(y.year,0))):_=K.fromDate(new Date(Date.UTC(y.year,y.month,y.day)));let C=K.secondsDifference(this._startJulian,K.addSeconds(_,m,new K)),E=C+h;this._epochJulian=_;function I(F){return Math.floor(C/F)*F}function b(F,H){return Math.ceil(F/H+.5)*H}function S(F){return(F-C)/h}function B(F,H){return F-H*Math.round(F/H)}this._rulerEle.innerHTML=this.makeLabel(K.addSeconds(this._endJulian,-a,new K));let v=this._rulerEle.offsetWidth+20;v<30&&(v=180);let P=f;f-=u;let M={startTime:C,startJulian:g,epochJulian:_,duration:h,timeBarWidth:A,getAlpha:S};this._highlightRanges.forEach(function(F){s+=F.render(M)});let L=0,p=0,x=0,T=v/A;T>1&&(T=1),T*=this._timeBarSecondsSpan;let w=-1,R=-1,O=OC.length,k;for(k=0;k<O;++k){let F=OC[k];if(++w,L=F,F>T&&F>f)break;R<0&&A*(F/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(R=w)}if(w>0){for(;w>0;)if(--w,Math.abs(B(L,OC[w]))<1e-5){OC[w]>=f&&(p=OC[w]);break}if(R>=0)for(;R<w;){if(Math.abs(B(p,OC[R]))<1e-5&&OC[R]>=f){x=OC[R];break}++R}}f=P,f>u&&x<1e-5&&Math.abs(f-L)>u&&(x=f,f<=L+u&&(p=0));let Q=-999999,z;if(A*(x/this._timeBarSecondsSpan)>=3)for(o=I(x);o<=E;o=b(o,x))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(p/this._timeBarSecondsSpan)>=3)for(o=I(p);o<=E;o=b(o,p))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(L/this._timeBarSecondsSpan)>=2){this._mainTicSpan=L,E+=L,o=I(L);let F=K.computeTaiMinusUtc(_);for(;o<=E;){let H=K.addSeconds(g,o-C,new K);if(L>2.1){let $=K.computeTaiMinusUtc(H);Math.abs($-F)>.1&&(o+=$-F,H=K.addSeconds(g,o-C,new K))}let W=Math.round(A*S(o)),Z=this.makeLabel(H);this._rulerEle.innerHTML=Z,z=this._rulerEle.offsetWidth,z<10&&(z=v);let Y=W-(z/2-1);Y>Q?(Q=Y+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${W.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${Y.toString()}px;">${Z}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${W.toString()}px;"></span>`,o=b(o,L)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),M.y=0,this._trackList.forEach(function(F){F.render(r._context,M),M.y+=F.height})};Yl.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(K.addSeconds(this._startJulian,this._timelineDrag,new K),K.addSeconds(this._endJulian,this._timelineDrag,new K)))};Yl.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=K.addSeconds(this._startJulian,t,new K),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function lRt(e){return function(t){e._mouseMode!==Zd.touchOnly&&(t.button===0?(e._mouseMode=Zd.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=Zd.zoom:e._mouseMode=Zd.slide)),t.preventDefault()}}function uRt(e){return function(t){e._mouseMode=Zd.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function fRt(e){return function(t){let n;if(e._mouseMode===Zd.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===Zd.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(K.addSeconds(e._startJulian,i,new K),K.addSeconds(e._endJulian,i,new K))}}else e._mouseMode===Zd.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function dRt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;rte=Math.max(Math.min(Math.abs(n),rte),1),n/=rte,e.zoomFrom(Math.pow(1.05,-n))}}function hRt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=Zd.touchOnly,n===1?(i=K.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=jl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=jl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=jl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=jl.ignore}}function mRt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===jl.singleTap?(e._touchMode=jl.scrub,e._onTouchMove(t)):e._touchMode===jl.scrub&&e._onTouchMove(t),e._mouseMode=Zd.touchOnly,n!==1?e._touchMode=n>0?jl.ignore:jl.none:e._touchMode===jl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function ARt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===jl.singleTap&&(e._touchMode=jl.slideZoom),e._mouseMode=Zd.touchOnly,e._touchMode===jl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===jl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=K.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new K)):(n=e._touchState.centerX-r,a=K.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new K)),e.zoomTo(a,K.addSeconds(a,e._timeBarSecondsSpan*c,new K)),e._touchState.centerX=r,e._touchState.spanX=s))}}Yl.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var NU=Yl;var zwe=xr(Gwe(),1);function pRt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function Vwe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function gRt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(Vwe(),e._locked=!1),e._noSleep.disable(),Fr.exitFullscreen(),n(!1)):(Fr.fullscreen||Fr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=pRt("landscape")),t.useWebVR=!0,n(!0)))}function $5(e,t){let n=this,i=Ie.observable(Fr.enabled),o=Ie.observable(!1);this.isVRMode=void 0,Ie.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Ie.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Fr.enabled)}}),this.tooltip=void 0,Ie.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=Ie.observable(!1);this._isOrthographic=void 0,Ie.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Dr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof An)}),this._locked=!1,this._noSleep=new zwe.default,this._command=Rn(function(){gRt(n,e,o,r)},Ie.getObservable(this,"isVREnabled")),this._vrElement=kn(t)??document.body,this._callback=function(){!Fr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(Vwe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Fr.changeEventName,this._callback)}Object.defineProperties($5.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});$5.prototype.isDestroyed=function(){return!1};$5.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Fr.changeEventName,this._callback),ue(this)};var OU=$5;var _Rt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",yRt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function e9(e,t,n){e=kn(e);let i=new OU(t,n);i._exitVRPath=yRt,i._enterVRPath=_Rt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),Ie.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(e9.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});e9.prototype.isDestroyed=function(){return!1};e9.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var FU=e9;var Hwe=new le;function Ywe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function CRt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function ERt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function Wwe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof fr)return i;if(n instanceof ha)return new fr({name:ERt(n),description:CRt(n),feature:n})}if(l(e.scene.globe))return bRt(e,t.position)}var IRt=new K;function cte(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;K.equals(i,o)&&(o=K.addSeconds(i,D.EPSILON2,IRt)),e.updateFromClock(),e.zoomTo(i,o)}}}var xRt=new d;function bRt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new fr({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=jwe();return}let a=s[0],c=new fr({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,xRt);c.position=new hl(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=jwe())}),r}function jwe(){return new fr({id:"None",description:"No features found."})}function TRt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,A=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=A),l(i)&&(i.container.style.visibility=A),l(o)&&(o.container.style.visibility=A),l(r)&&(r.container.style.visibility=A),l(s)&&(s.container.style.visibility=A),l(a)&&(a.container.style.visibility=A),l(c)&&(c.container.style.visibility=A),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=A),l(f)&&(f.container.style.visibility=A),l(h)&&(h.container.style.visibility=A),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function co(e,t){e=kn(e),t=t??V.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new Xh,u=new X3(c),f=!0);let h=new f3(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),A=h.scene,g=new Dr;g.add(c.onTick,co.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let H=document.createElement("div");H.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(H),m=new PU(H,A)}let _;if(!l(t.infoBox)||t.infoBox!==!1){let H=document.createElement("div");H.className="cesium-viewer-infoBoxContainer",o.appendChild(H),_=new CU(H);let W=_.viewModel;g.add(W.cameraClicked,co.prototype._onInfoBoxCameraClicked,this),g.add(W.closeClicked,co.prototype._onInfoBoxClockClicked,this)}let y=document.createElement("div");y.className="cesium-viewer-toolbar",o.appendChild(y);let C;if(!l(t.geocoder)||t.geocoder!==!1){let H=document.createElement("div");H.className="cesium-viewer-geocoderContainer",y.appendChild(H);let W;typeof t.geocoder=="string"?W=[new yx({scene:A,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(W=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),C=new AU({container:H,geocoderServices:W,scene:A}),g.add(C.viewModel.search.beforeExecute,co.prototype._clearObjects,this)}let E;(!l(t.homeButton)||t.homeButton!==!1)&&(E=new gU(y,A),l(C)&&g.add(E.viewModel.command.afterExecute,function(){let H=C.viewModel;H.searchText="",H.isSearchInProgress&&H.search()}),g.add(E.viewModel.command.beforeExecute,co.prototype._clearTrackedObject,this));let I;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(I=new BU(y,A));let b;t.projectionPicker&&(b=new SU(y,A));let S,B;if(n){let H=t.imageryProviderViewModels??iU(),W=t.terrainProviderViewModels??oU();S=new nU(y,{globe:A.globe,imageryProviderViewModels:H,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:W,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),B=y.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(S.viewModel.selectedImagery=void 0),A.imageryLayers.removeAll(),A.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(S.viewModel.selectedTerrain=void 0),A.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(A.globe.depthTestAgainstTerrain=!0),A.setTerrain(t.terrain));let v;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let H=!0;try{if(l(window.localStorage)){let W=window.localStorage.getItem("cesium-hasSeenNavHelp");l(W)&&W?H=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}v=new IU({container:y,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??H})}let P;if(!l(t.animation)||t.animation!==!1){let H=document.createElement("div");H.className="cesium-viewer-animationContainer",o.appendChild(H),P=new $3(H,new eU(u))}let M;if(!l(t.timeline)||t.timeline!==!1){let H=document.createElement("div");H.className="cesium-viewer-timelineContainer",o.appendChild(H),M=new NU(H,c),M.addEventListener("settime",Ywe,!1),M.zoomTo(c.startTime,c.stopTime)}let L,p,x;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(x=document.createElement("div"),x.className="cesium-viewer-fullscreenContainer",o.appendChild(x),L=new hU(x,t.fullscreenElement),p=tc(L.viewModel,"isFullscreenEnabled",function(H){x.style.display=H?"block":"none",l(M)&&(M.container.style.right=`${x.clientWidth}px`,M.resize())}));let T,w,R;if(t.vrButton){let H=document.createElement("div");H.className="cesium-viewer-vrContainer",o.appendChild(H),T=new FU(H,A,t.fullScreenElement),w=tc(T.viewModel,"isVREnabled",function(W){H.style.display=W?"block":"none",l(L)&&(H.style.right=`${x.clientWidth}px`),l(M)&&(M.container.style.right=`${H.clientWidth}px`,M.resize())}),R=tc(T.viewModel,"isVRMode",function(W){TRt(i,W)})}this._baseLayerPickerDropDown=B,this._fullscreenSubscription=p,this._vrSubscription=w,this._vrModeSubscription=R,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=_,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=y,this._homeButton=E,this._sceneModePicker=I,this._projectionPicker=b,this._baseLayerPicker=S,this._navigationHelpButton=v,this._animation=P,this._timeline=M,this._fullscreenButton=L,this._vrButton=T,this._geocoder=C,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(_)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new _e;let O=this._cesiumWidget.dataSources,k=this._cesiumWidget.dataSourceDisplay;g.add(O.dataSourceAdded,co.prototype._onDataSourceAdded,this),g.add(O.dataSourceRemoved,co.prototype._onDataSourceRemoved,this),g.add(A.postUpdate,co.prototype.resize,this);let Q=O.length;for(let H=0;H<Q;H++)this._dataSourceAdded(O,O.get(H));this._dataSourceAdded(void 0,k.defaultDataSource),g.add(O.dataSourceAdded,co.prototype._dataSourceAdded,this),g.add(O.dataSourceRemoved,co.prototype._dataSourceRemoved,this);function z(H){let W=Wwe(i,H);l(W)?j.getValueOrUndefined(W.position,i.clock.currentTime)?i.trackedEntity=W:i.zoomTo(W):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function F(H){i.selectedEntity=Wwe(i,H)}h.screenSpaceEventHandler.setInputAction(F,Dn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(z,Dn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(co.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,cte(this._timeline,e))}}});co.prototype.extend=function(e,t){e(this,t)};co.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,A=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,_=this._vrButton,y=c.container,C=y.style;A=y.clientHeight+3,C.left=`${f}px`;let E=0;l(m)&&(E+=m.container.clientWidth),l(_)&&(E+=_.container.clientWidth),C.right=`${E}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${A}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};co.prototype.forceResize=function(){this._lastWidth=0,this.resize()};co.prototype.render=function(){this._cesiumWidget.render()};co.prototype.isDestroyed=function(){return!1};co.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(Dn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(Dn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",Ywe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};co.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(co.prototype._onEntityCollectionChanged,this)};co.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(co.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};co.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};co.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,Hwe)!==mt.FAILED?n=Hwe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=j.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};co.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};co.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};co.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};co.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};co.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};co.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&cte(this.timeline,e)};co.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&cte(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,co.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};co.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};co.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};co.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var lte=co;function SRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new cU(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var ute=SRt;function wRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new fU(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var fte=wRt;function BRt(e,t){t=t??V.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new _e,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=kn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){qwe(s,u),s=f,dte(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?dte(s,u):qwe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){Mx(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,A=h.length;for(let g=0;g<A;g++){let m=h[g],_=new FileReader;_.onload=DRt(e,m,c,a),_.onerror=vRt(e,m),_.readAsText(m)}}dte(s,u),e.destroy=C3(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function Mx(e){e.stopPropagation(),e.preventDefault()}function qwe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",Mx,!1),n.removeEventListener("dragover",Mx,!1),n.removeEventListener("dragexit",Mx,!1))}function dte(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",Mx,!1),e.addEventListener("dragover",Mx,!1),e.addEventListener("dragexit",Mx,!1)}function DRt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=zO.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=jy.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=xI.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=UF.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function vRt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var hte=BRt;function PRt(e,t){t=t??V.EMPTY_OBJECT;let n=new bU({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var mte=PRt;function Kwe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function $d(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=Ie.observable();return Ie.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=Kwe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===ec.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===ec.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===ec.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-D.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:D.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationX=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationY=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationZ=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleX=N.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleY=N.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleZ=N.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}})}var RRt=new d,MRt=new d,NRt=new rc,LRt=new J;function HA(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,RRt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,MRt),i=NRt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=J.fromHeadingPitchRoll(i,LRt),r=J.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=N.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties($d.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=Kwe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,HA(t)}}});$d.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};$d.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};$d.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};$d.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};$d.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};$d.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};$d.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new ix({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};$d.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};$d.prototype.isDestroyed=function(){return!1};$d.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){Ie.getObservable(e,t).dispose()}),ue(this)};var QU=$d;function t9(e,t){e=kn(e);let n=document.createElement("div"),i=new QU(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:u}=Mu,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),A=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let m=10,_=10,y=D.PI;h.appendChild(c("Translation X","translationX",-m,+m)),h.appendChild(c("Translation Y","translationY",-m,+m)),h.appendChild(c("Translation Z","translationZ",-m,+m)),h.appendChild(c("Scale X","scaleX",0,+_)),h.appendChild(c("Scale Y","scaleY",0,+_)),h.appendChild(c("Scale Z","scaleZ",0,+_)),h.appendChild(c("Heading","angleX",-y,+y)),h.appendChild(c("Pitch","angleY",-y,+y)),h.appendChild(c("Roll","angleZ",-y,+y)),Ate("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",A),Ate("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",A),Ate("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",A);let C=document.createElement("div");g.appendChild(C);let E=document.createElement("textarea");E.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),C.className="cesium-cesiumInspector-styleEditor",C.appendChild(E);let I=u("Compile (Ctrl+Enter)","compileShader");C.appendChild(I);let b=document.createElement("label");b.style.display="block",b.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),C.appendChild(b),Ie.applyBindings(i,n)}Object.defineProperties(t9.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});t9.prototype.isDestroyed=function(){return!1};t9.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function Ate(e,t,n,i,o,r,s,a,c,u,f,h,A,g){let m=Mu.createRangeInputWithDynamicMinMax,_=g.appendChild(document.createElement("div"));_.setAttribute("data-bind",`if: ${A}`),_.appendChild(m(e,s)),_.appendChild(m(t,a)),_.appendChild(m(n,c)),_.appendChild(m(i,u)),_.appendChild(m(o,f)),_.appendChild(m(r,h))}var kU=t9;function ORt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new kU(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var pte=ORt;globalThis.CESIUM_VERSION="1.132";var FRt="1.132";0&&(module.exports={AlphaMode,AlphaPipelineStage,AnchorPointDirect,AnchorPointIndirect,Animation,AnimationViewModel,Appearance,ApproximateTerrainHeights,ArcGISTiledElevationTerrainProvider,ArcGisBaseMapType,ArcGisMapServerImageryProvider,ArcGisMapService,ArcType,ArticulationStageType,AssociativeArray,Atmosphere,AtmospherePipelineStage,AttributeCompression,AttributeType,AutoExposure,AutomaticUniforms,Axis,AxisAlignedBoundingBox,B3dmLoader,B3dmParser,BaseLayerPicker,BaseLayerPickerViewModel,BatchTable,BatchTableHierarchy,BatchTexture,BatchTexturePipelineStage,Billboard,BillboardCollection,BillboardGraphics,BillboardLoadState,BillboardTexture,BillboardVisualizer,BingMapsGeocoderService,BingMapsImageryProvider,BingMapsStyle,BlendEquation,BlendFunction,BlendOption,BlendingState,BoundingRectangle,BoundingSphere,BoundingSphereState,BoundingVolumeSemantics,BoxEmitter,BoxGeometry,BoxGeometryUpdater,BoxGraphics,BoxOutlineGeometry,BrdfLutGenerator,Buffer,BufferLoader,BufferUsage,CPUStylingPipelineStage,CallbackPositionProperty,CallbackProperty,Camera,CameraEventAggregator,CameraEventType,CameraFlightPath,Cartesian2,Cartesian3,Cartesian4,CartesianRectangle,Cartographic,CartographicGeocoderService,CatmullRomSpline,Cesium3DContentGroup,Cesium3DTile,Cesium3DTileBatchTable,Cesium3DTileColorBlendMode,Cesium3DTileContent,Cesium3DTileContentFactory,Cesium3DTileContentState,Cesium3DTileContentType,Cesium3DTileFeature,Cesium3DTileFeatureTable,Cesium3DTileOptimizationHint,Cesium3DTileOptimizations,Cesium3DTilePass,Cesium3DTilePassState,Cesium3DTilePointFeature,Cesium3DTileRefine,Cesium3DTileStyle,Cesium3DTileStyleEngine,Cesium3DTilesInspector,Cesium3DTilesInspectorViewModel,Cesium3DTilesVoxelProvider,Cesium3DTileset,Cesium3DTilesetBaseTraversal,Cesium3DTilesetCache,Cesium3DTilesetGraphics,Cesium3DTilesetHeatmap,Cesium3DTilesetMetadata,Cesium3DTilesetMostDetailedTraversal,Cesium3DTilesetSkipTraversal,Cesium3DTilesetStatistics,Cesium3DTilesetTraversal,Cesium3DTilesetVisualizer,CesiumInspector,CesiumInspectorViewModel,CesiumTerrainProvider,CesiumWidget,Check,CheckerboardMaterialProperty,CircleEmitter,CircleGeometry,CircleOutlineGeometry,ClassificationModelDrawCommand,ClassificationPipelineStage,ClassificationPrimitive,ClassificationType,ClearCommand,ClippingPlane,ClippingPlaneCollection,ClippingPolygon,ClippingPolygonCollection,Clock,ClockRange,ClockStep,ClockViewModel,CloudCollection,CloudType,Color,ColorBlendMode,ColorGeometryInstanceAttribute,ColorMaterialProperty,Command,ComponentDatatype,Composite3DTileContent,CompositeEntityCollection,CompositeMaterialProperty,CompositePositionProperty,CompositeProperty,CompressedTextureBuffer,ComputeCommand,ComputeEngine,ConditionsExpression,ConeEmitter,ConstantPositionProperty,ConstantProperty,ConstantSpline,ContentMetadata,Context,ContextLimits,CoplanarPolygonGeometry,CoplanarPolygonGeometryLibrary,CoplanarPolygonOutlineGeometry,CornerType,CorrelationGroup,CorridorGeometry,CorridorGeometryLibrary,CorridorGeometryUpdater,CorridorGraphics,CorridorOutlineGeometry,Credit,CreditDisplay,CubeMap,CubeMapFace,CubicRealPolynomial,CullFace,CullingVolume,CumulusCloud,CustomDataSource,CustomHeightmapTerrainProvider,CustomShader,CustomShaderMode,CustomShaderPipelineStage,CustomShaderTranslucencyMode,CylinderGeometry,CylinderGeometryLibrary,CylinderGeometryUpdater,CylinderGraphics,CylinderOutlineGeometry,CzmlDataSource,DataSource,DataSourceClock,DataSourceCollection,DataSourceDisplay,DebugAppearance,DebugCameraPrimitive,DebugInspector,DebugModelMatrixPrimitive,DefaultProxy,DepthFunction,DepthPlane,DequantizationPipelineStage,DerivedCommand,DeveloperError,DeviceOrientationCameraController,DirectionalLight,DiscardEmptyTileImagePolicy,DiscardMissingTileImagePolicy,DistanceDisplayCondition,DistanceDisplayConditionGeometryInstanceAttribute,DoubleEndedPriorityQueue,DoublyLinkedList,DracoLoader,DrawCommand,DynamicAtmosphereLightingType,DynamicEnvironmentMapManager,DynamicGeometryBatch,DynamicGeometryUpdater,EarthOrientationParameters,EarthOrientationParametersSample,EasingFunction,EllipseGeometry,EllipseGeometryLibrary,EllipseGeometryUpdater,EllipseGraphics,EllipseOutlineGeometry,Ellipsoid,EllipsoidGeodesic,EllipsoidGeometry,EllipsoidGeometryUpdater,EllipsoidGraphics,EllipsoidOutlineGeometry,EllipsoidPrimitive,EllipsoidRhumbLine,EllipsoidSurfaceAppearance,EllipsoidTangentPlane,EllipsoidTerrainProvider,EllipsoidalOccluder,Empty3DTileContent,EncodedCartesian3,Entity,EntityCluster,EntityCollection,EntityView,Event,EventHelper,Expression,ExpressionNodeType,ExtrapolationType,FeatureDetection,FeatureIdPipelineStage,Fog,ForEach,FrameRateMonitor,FrameState,Framebuffer,FramebufferManager,Frozen,FrustumCommands,FrustumGeometry,FrustumOutlineGeometry,Fullscreen,FullscreenButton,FullscreenButtonViewModel,GaussianSplat3DTileContent,GaussianSplatPrimitive,GaussianSplatRenderResources,GaussianSplatSorter,GaussianSplatTextureGenerator,GeoJsonDataSource,GeoJsonLoader,GeocodeType,Geocoder,GeocoderService,GeocoderViewModel,GeographicProjection,GeographicTilingScheme,Geometry,Geometry3DTileContent,GeometryAttribute,GeometryAttributes,GeometryFactory,GeometryInstance,GeometryInstanceAttribute,GeometryOffsetAttribute,GeometryPipeline,GeometryPipelineStage,GeometryType,GeometryUpdater,GeometryUpdaterSet,GeometryVisualizer,GetFeatureInfoFormat,Globe,GlobeDepth,GlobeSurfaceShaderSet,GlobeSurfaceTile,GlobeSurfaceTileProvider,GlobeTranslucency,GlobeTranslucencyFramebuffer,GlobeTranslucencyState,GltfBufferViewLoader,GltfDracoLoader,GltfGpmLoader,GltfGpmLocal,GltfImageLoader,GltfIndexBufferLoader,GltfJsonLoader,GltfLoader,GltfLoaderUtil,GltfMeshPrimitiveGpmLoader,GltfSpzLoader,GltfStructuralMetadataLoader,GltfTextureLoader,GltfVertexBufferLoader,GoogleEarthEnterpriseImageryProvider,GoogleEarthEnterpriseMapsProvider,GoogleEarthEnterpriseMetadata,GoogleEarthEnterpriseTerrainData,GoogleEarthEnterpriseTerrainProvider,GoogleEarthEnterpriseTileInformation,GoogleGeocoderService,GoogleMaps,GpxDataSource,GregorianDate,GridImageryProvider,GridMaterialProperty,GroundGeometryUpdater,GroundPolylineGeometry,GroundPolylinePrimitive,GroundPrimitive,GroupMetadata,HeadingPitchRange,HeadingPitchRoll,Heap,HeightReference,HeightmapEncoding,HeightmapTerrainData,HeightmapTessellator,HermitePolynomialApproximation,HermiteSpline,HilbertOrder,HomeButton,HomeButtonViewModel,HorizontalOrigin,I3SBuildingSceneLayerExplorer,I3SBuildingSceneLayerExplorerViewModel,I3SDataProvider,I3SDecoder,I3SFeature,I3SField,I3SGeometry,I3SLayer,I3SNode,I3SStatistics,I3SSublayer,I3SSymbology,I3dmLoader,I3dmParser,ITwinData,ITwinPlatform,Iau2000Orientation,Iau2006XysData,Iau2006XysSample,IauOrientationAxes,IauOrientationParameters,ImageBasedLighting,ImageBasedLightingPipelineStage,ImageMaterialProperty,Imagery,ImageryConfiguration,ImageryCoverage,ImageryFlags,ImageryInput,ImageryLayer,ImageryLayerCollection,ImageryLayerFeatureInfo,ImageryPipelineStage,ImageryProvider,ImageryState,Implicit3DTileContent,ImplicitAvailabilityBitstream,ImplicitMetadataView,ImplicitSubdivisionScheme,ImplicitSubtree,ImplicitSubtreeCache,ImplicitSubtreeMetadata,ImplicitTileCoordinates,ImplicitTileset,IndexDatatype,InfoBox,InfoBoxViewModel,InspectorShared,InstanceAttributeSemantic,InstancingPipelineStage,InterpolationAlgorithm,InterpolationType,Intersect,IntersectionTests,Intersections2D,Interval,InvertClassification,Ion,IonGeocodeProviderType,IonGeocoderService,IonImageryProvider,IonResource,IonWorldImageryStyle,Iso8601,JobScheduler,JobType,JsonMetadataTable,JulianDate,KTX2Transcoder,KeyboardEventModifier,KeyframeNode,KmlCamera,KmlDataSource,KmlLookAt,KmlTour,KmlTourFlyTo,KmlTourWait,Label,LabelCollection,LabelGraphics,LabelStyle,LabelVisualizer,LagrangePolynomialApproximation,LeapSecond,Light,LightingModel,LightingPipelineStage,LinearApproximation,LinearSpline,ManagedArray,MapMode2D,MapProjection,MapboxImageryProvider,MapboxStyleImageryProvider,MappedPositions,Material,MaterialAppearance,MaterialPipelineStage,MaterialProperty,Math,Matrix2,Matrix3,Matrix4,Megatexture,MeshPrimitiveGpmLocal,MetadataClass,MetadataClassProperty,MetadataComponentType,MetadataEntity,MetadataEnum,MetadataEnumValue,MetadataPicking,MetadataPickingPipelineStage,MetadataPipelineStage,MetadataSchema,MetadataSchemaLoader,MetadataSemantic,MetadataTable,MetadataTableProperty,MetadataType,MipmapHint,Model,Model3DTileContent,ModelAlphaOptions,ModelAnimation,ModelAnimationChannel,ModelAnimationCollection,ModelAnimationLoop,ModelAnimationState,ModelArticulation,ModelArticulationStage,ModelClippingPlanesPipelineStage,ModelClippingPolygonsPipelineStage,ModelColorPipelineStage,ModelComponents,ModelDrawCommand,ModelDrawCommands,ModelFeature,ModelFeatureTable,ModelGraphics,ModelImagery,ModelImageryMapping,ModelLightingOptions,ModelMatrixUpdateStage,ModelNode,ModelPrimitiveImagery,ModelReader,ModelRenderResources,ModelRuntimeNode,ModelRuntimePrimitive,ModelSceneGraph,ModelSilhouettePipelineStage,ModelSkin,ModelSplitterPipelineStage,ModelStatistics,ModelType,ModelUtility,ModelVisualizer,Moon,MorphTargetsPipelineStage,MorphWeightSpline,MortonOrder,Multiple3DTileContent,MultisampleFramebuffer,NavigationHelpButton,NavigationHelpButtonViewModel,NearFarScalar,NeverTileDiscardPolicy,NodeRenderResources,NodeStatisticsPipelineStage,NodeTransformationProperty,OIT,Occluder,OffsetGeometryInstanceAttribute,OpenCageGeocoderService,OpenStreetMapImageryProvider,OrderedGroundPrimitiveCollection,OrientedBoundingBox,OrthographicFrustum,OrthographicOffCenterFrustum,Packable,PackableForInterpolation,Particle,ParticleBurst,ParticleEmitter,ParticleSystem,Pass,PassState,PathGraphics,PathVisualizer,PeliasGeocoderService,PerInstanceColorAppearance,PerformanceDisplay,PerformanceWatchdog,PerformanceWatchdogViewModel,PerspectiveFrustum,PerspectiveOffCenterFrustum,PickDepth,PickDepthFramebuffer,PickFramebuffer,PickedMetadataInfo,Picking,PickingPipelineStage,PinBuilder,PixelDatatype,PixelFormat,Plane,PlaneGeometry,PlaneGeometryUpdater,PlaneGraphics,PlaneOutlineGeometry,PntsLoader,PntsParser,PointCloud,PointCloudEyeDomeLighting,PointCloudShading,PointCloudStylingPipelineStage,PointGraphics,PointPrimitive,PointPrimitiveCollection,PointVisualizer,PolygonGeometry,PolygonGeometryLibrary,PolygonGeometryUpdater,PolygonGraphics,PolygonHierarchy,PolygonOutlineGeometry,PolygonPipeline,Polyline,PolylineArrowMaterialProperty,PolylineCollection,PolylineColorAppearance,PolylineDashMaterialProperty,PolylineGeometry,PolylineGeometryUpdater,PolylineGlowMaterialProperty,PolylineGraphics,PolylineMaterialAppearance,PolylineOutlineMaterialProperty,PolylinePipeline,PolylineVisualizer,PolylineVolumeGeometry,PolylineVolumeGeometryLibrary,PolylineVolumeGeometryUpdater,PolylineVolumeGraphics,PolylineVolumeOutlineGeometry,PositionProperty,PositionPropertyArray,PostProcessStage,PostProcessStageCollection,PostProcessStageComposite,PostProcessStageLibrary,PostProcessStageSampleMode,PostProcessStageTextureCache,PpeMetadata,PpeSource,PpeTexture,Primitive,PrimitiveCollection,PrimitiveLoadPlan,PrimitiveOutlineGenerator,PrimitiveOutlinePipelineStage,PrimitivePipeline,PrimitiveRenderResources,PrimitiveState,PrimitiveStatisticsPipelineStage,PrimitiveType,ProjectionPicker,ProjectionPickerViewModel,Property,PropertyArray,PropertyAttribute,PropertyAttributeProperty,PropertyBag,PropertyTable,PropertyTexture,PropertyTextureProperty,ProviderViewModel,Proxy,QuadraticRealPolynomial,QuadtreeOccluders,QuadtreePrimitive,QuadtreeTile,QuadtreeTileLoadState,QuadtreeTileProvider,QuantizedMeshTerrainData,QuarticRealPolynomial,Quaternion,QuaternionSpline,Queue,Ray,Rectangle,RectangleCollisionChecker,RectangleGeometry,RectangleGeometryLibrary,RectangleGeometryUpdater,RectangleGraphics,RectangleOutlineGeometry,ReferenceFrame,ReferenceProperty,RenderState,Renderbuffer,RenderbufferFormat,Request,RequestErrorEvent,RequestScheduler,RequestState,RequestType,Resource,ResourceCache,ResourceCacheKey,ResourceCacheStatistics,ResourceLoader,ResourceLoaderState,Rotation,RuntimeError,S2Cell,SDFSettings,SampledPositionProperty,SampledProperty,Sampler,ScaledPositionProperty,Scene,SceneFramebuffer,SceneMode,SceneMode2DPipelineStage,SceneModePicker,SceneModePickerViewModel,SceneTransforms,SceneTransitioner,ScreenSpaceCameraController,ScreenSpaceEventHandler,ScreenSpaceEventType,SelectedFeatureIdPipelineStage,SelectionIndicator,SelectionIndicatorViewModel,SensorVolumePortionToDisplay,ShaderBuilder,ShaderCache,ShaderDestination,ShaderFunction,ShaderProgram,ShaderSource,ShaderStruct,ShadowMap,ShadowMapShader,ShadowMode,ShadowVolumeAppearance,SharedContext,ShowGeometryInstanceAttribute,Simon1994PlanetaryPositions,SimplePolylineGeometry,SingleTileImageryProvider,SkinningPipelineStage,SkyAtmosphere,SkyBox,SpatialNode,Spdcf,SpecularEnvironmentCubeMap,SphereEmitter,SphereGeometry,SphereOutlineGeometry,Spherical,Spline,SplitDirection,Splitter,StaticGeometryColorBatch,StaticGeometryPerMaterialBatch,StaticGroundGeometryColorBatch,StaticGroundGeometryPerMaterialBatch,StaticGroundPolylinePerMaterialBatch,StaticOutlineGeometryBatch,StencilConstants,StencilFunction,StencilOperation,SteppedSpline,Stereographic,StorageType,StripeMaterialProperty,StripeOrientation,StructuralMetadata,StyleCommandsNeeded,StyleExpression,Sun,SunLight,SunPostProcess,SupportedImageFormats,SvgPathBindingHandler,TaskProcessor,Terrain,TerrainData,TerrainEncoding,TerrainFillMesh,TerrainMesh,TerrainOffsetProperty,TerrainProvider,TerrainQuantization,TerrainState,Texture,Texture3D,TextureAtlas,TextureCache,TextureMagnificationFilter,TextureManager,TextureMinificationFilter,TexturePacker,TextureUniform,TextureWrap,TileAvailability,TileBoundingRegion,TileBoundingS2Cell,TileBoundingSphere,TileBoundingVolume,TileCoordinatesImageryProvider,TileDiscardPolicy,TileEdge,TileImagery,TileMapServiceImageryProvider,TileMetadata,TileOrientedBoundingBox,TileProviderError,TileReplacementQueue,TileSelectionResult,TileState,Tileset3DTileContent,TilesetMetadata,TilesetPipelineStage,TilingScheme,TimeConstants,TimeDynamicImagery,TimeDynamicPointCloud,TimeInterval,TimeIntervalCollection,TimeIntervalCollectionPositionProperty,TimeIntervalCollectionProperty,TimeStandard,Timeline,TimelineHighlightRange,TimelineTrack,Tipsify,ToggleButtonViewModel,Tonemapper,TrackingReferenceFrame,Transforms,TranslationRotationScale,TranslucentTileClassification,TridiagonalSystemSolver,TrustedServers,TweenCollection,UniformState,UniformType,UrlTemplateImageryProvider,VERSION,VRButton,VRButtonViewModel,VRTheWorldTerrainProvider,VaryingType,Vector3DTileBatch,Vector3DTileClampedPolylines,Vector3DTileContent,Vector3DTileGeometry,Vector3DTilePoints,Vector3DTilePolygons,Vector3DTilePolylines,Vector3DTilePrimitive,VelocityOrientationProperty,VelocityVectorProperty,VertexArray,VertexArrayFacade,VertexAttributeSemantic,VertexFormat,VerticalExaggeration,VerticalExaggerationPipelineStage,VerticalOrigin,VideoSynchronizer,View,Viewer,ViewportQuad,Visibility,Visualizer,VoxelBoxShape,VoxelCell,VoxelContent,VoxelCylinderShape,VoxelEllipsoidShape,VoxelInspector,VoxelInspectorViewModel,VoxelMetadataOrder,VoxelPrimitive,VoxelProvider,VoxelRenderResources,VoxelShape,VoxelShapeType,VoxelTraversal,VulkanConstants,WallGeometry,WallGeometryLibrary,WallGeometryUpdater,WallGraphics,WallOutlineGeometry,WebGLConstants,WebMapServiceImageryProvider,WebMapTileServiceImageryProvider,WebMercatorProjection,WebMercatorTilingScheme,WindingOrder,WireframeIndexGenerator,WireframePipelineStage,_shadersAcesTonemappingStage,_shadersAdditiveBlend,_shadersAdjustTranslucentFS,_shadersAllMaterialAppearanceFS,_shadersAllMaterialAppearanceVS,_shadersAmbientOcclusionGenerate,_shadersAmbientOcclusionModulate,_shadersAspectRampMaterial,_shadersAtmosphereCommon,_shadersAtmosphereStageFS,_shadersAtmosphereStageVS,_shadersBasicMaterialAppearanceFS,_shadersBasicMaterialAppearanceVS,_shadersBillboardCollectionFS,_shadersBillboardCollectionVS,_shadersBlackAndWhite,_shadersBloomComposite,_shadersBrdfLutGeneratorFS,_shadersBrightPass,_shadersBrightness,_shadersBumpMapMaterial,_shadersCPUStylingStageFS,_shadersCPUStylingStageVS,_shadersCheckerboardMaterial,_shadersCloudCollectionFS,_shadersCloudCollectionVS,_shadersCloudNoiseFS,_shadersCloudNoiseVS,_shadersCompareAndPackTranslucentDepth,_shadersCompositeOITFS,_shadersCompositeTranslucentClassification,_shadersComputeIrradianceFS,_shadersComputeRadianceMapFS,_shadersContrastBias,_shadersConvolveSpecularMapFS,_shadersConvolveSpecularMapVS,_shadersCustomShaderStageFS,_shadersCustomShaderStageVS,_shadersCzmBuiltins,_shadersDepthOfField,_shadersDepthPlaneFS,_shadersDepthPlaneVS,_shadersDepthView,_shadersDepthViewPacked,_shadersDotMaterial,_shadersEdgeDetection,_shadersElevationBandMaterial,_shadersElevationContourMaterial,_shadersElevationRampMaterial,_shadersEllipsoidFS,_shadersEllipsoidSurfaceAppearanceFS,_shadersEllipsoidSurfaceAppearanceVS,_shadersEllipsoidVS,_shadersFXAA,_shadersFXAA3_11,_shadersFadeMaterial,_shadersFeatureIdStageFS,_shadersFeatureIdStageVS,_shadersFilmicTonemapping,_shadersGaussianBlur1D,_shadersGeometryStageFS,_shadersGeometryStageVS,_shadersGlobeFS,_shadersGlobeVS,_shadersGridMaterial,_shadersGroundAtmosphere,_shadersHSBToRGB,_shadersHSLToRGB,_shadersImageBasedLightingStageFS,_shadersInstancingStageCommon,_shadersInstancingStageVS,_shadersIntersectBox,_shadersIntersectClippingPlanes,_shadersIntersectCylinder,_shadersIntersectDepth,_shadersIntersectEllipsoid,_shadersIntersectLongitude,_shadersIntersection,_shadersIntersectionUtils,_shadersLegacyInstancingStageVS,_shadersLensFlare,_shadersLightingStageFS,_shadersMaterialStageFS,_shadersMegatexture,_shadersMetadataStageFS,_shadersMetadataStageVS,_shadersModelClippingPlanesStageFS,_shadersModelClippingPolygonsStageFS,_shadersModelClippingPolygonsStageVS,_shadersModelColorStageFS,_shadersModelFS,_shadersModelSilhouetteStageFS,_shadersModelSilhouetteStageVS,_shadersModelSplitterStageFS,_shadersModelVS,_shadersModifiedReinhardTonemapping,_shadersMorphTargetsStageVS,_shadersNightVision,_shadersNormalMapMaterial,_shadersOctree,_shadersPassThrough,_shadersPassThroughDepth,_shadersPbrNeutralTonemapping,_shadersPerInstanceColorAppearanceFS,_shadersPerInstanceColorAppearanceVS,_shadersPerInstanceFlatColorAppearanceFS,_shadersPerInstanceFlatColorAppearanceVS,_shadersPointCloudEyeDomeLighting,_shadersPointCloudStylingStageVS,_shadersPointPrimitiveCollectionFS,_shadersPointPrimitiveCollectionVS,_shadersPolygonSignedDistanceFS,_shadersPolylineArrowMaterial,_shadersPolylineColorAppearanceVS,_shadersPolylineCommon,_shadersPolylineDashMaterial,_shadersPolylineFS,_shadersPolylineGlowMaterial,_shadersPolylineMaterialAppearanceVS,_shadersPolylineOutlineMaterial,_shadersPolylineShadowVolumeFS,_shadersPolylineShadowVolumeMorphFS,_shadersPolylineShadowVolumeMorphVS,_shadersPolylineShadowVolumeVS,_shadersPolylineVS,_shadersPrimitiveGaussianSplatFS,_shadersPrimitiveGaussianSplatVS,_shadersPrimitiveOutlineStageFS,_shadersPrimitiveOutlineStageVS,_shadersRGBToHSB,_shadersRGBToHSL,_shadersRGBToXYZ,_shadersReinhardTonemapping,_shadersReprojectWebMercatorFS,_shadersReprojectWebMercatorVS,_shadersRimLightingMaterial,_shadersSelectedFeatureIdStageCommon,_shadersShadowVolumeAppearanceFS,_shadersShadowVolumeAppearanceVS,_shadersShadowVolumeFS,_shadersSilhouette,_shadersSkinningStageVS,_shadersSkyAtmosphereCommon,_shadersSkyAtmosphereFS,_shadersSkyAtmosphereVS,_shadersSkyBoxFS,_shadersSkyBoxVS,_shadersSlopeRampMaterial,_shadersStripeMaterial,_shadersSunFS,_shadersSunTextureFS,_shadersSunVS,_shadersTexturedMaterialAppearanceFS,_shadersTexturedMaterialAppearanceVS,_shadersVector3DTileClampedPolylinesFS,_shadersVector3DTileClampedPolylinesVS,_shadersVector3DTilePolylinesVS,_shadersVectorTileVS,_shadersVerticalExaggerationStageVS,_shadersViewportQuadFS,_shadersViewportQuadVS,_shadersVoxelFS,_shadersVoxelUtils,_shadersVoxelVS,_shadersWater,_shadersWaterMaskMaterial,_shadersXYZToRGB,_shadersacesTonemapping,_shadersalphaWeight,_shadersantialias,_shadersapplyHSBShift,_shadersapproximateSphericalCoordinates,_shadersapproximateTanh,_shadersbackFacing,_shadersbranchFreeTernary,_shaderscascadeColor,_shaderscascadeDistance,_shaderscascadeMatrix,_shaderscascadeWeights,_shadersclipPolygons,_shaderscolumbusViewMorph,_shaderscomputeAtmosphereColor,_shaderscomputeGroundAtmosphereScattering,_shaderscomputePosition,_shaderscomputeScattering,_shadersconvertUvToBox,_shadersconvertUvToCylinder,_shadersconvertUvToEllipsoid,_shaderscosineAndSine,_shadersdecompressTextureCoordinates,_shadersdegreesPerRadian,_shadersdepthClamp,_shadersdepthRange,_shadersdepthRangeStruct,_shaderseastNorthUpToEyeCoordinates,_shadersellipsoidContainsPoint,_shadersellipsoidTextureCoordinates,_shadersepsilon1,_shadersepsilon2,_shadersepsilon3,_shadersepsilon4,_shadersepsilon5,_shadersepsilon6,_shadersepsilon7,_shadersequalsEpsilon,_shaderseyeOffset,_shaderseyeToWindowCoordinates,_shadersfastApproximateAtan,_shadersfog,_shadersgammaCorrect,_shadersgeodeticSurfaceNormal,_shadersgetDefaultMaterial,_shadersgetDynamicAtmosphereLightDirection,_shadersgetLambertDiffuse,_shadersgetSpecular,_shadersgetWaterNoise,_shadershue,_shadersinfinity,_shadersinverseGamma,_shadersisEmpty,_shadersisFull,_shaderslatitudeToWebMercatorFraction,_shaderslineDistance,_shaderslinearToSrgb,_shadersluminance,_shadersmaterial,_shadersmaterialInput,_shadersmaximumComponent,_shadersmetersPerPixel,_shadersmodelMaterial,_shadersmodelToWindowCoordinates,_shadersmodelVertexOutput,_shadersmultiplyWithColorBalance,_shadersnearFarScalar,_shadersoctDecode,_shadersoneOverPi,_shadersoneOverTwoPi,_shaderspackDepth,_shaderspassCesium3DTile,_shaderspassCesium3DTileClassification,_shaderspassCesium3DTileClassificationIgnoreShow,_shaderspassClassification,_shaderspassCompute,_shaderspassEnvironment,_shaderspassGaussianSplats,_shaderspassGlobe,_shaderspassOpaque,_shaderspassOverlay,_shaderspassTerrainClassification,_shaderspassTranslucent,_shaderspassVoxels,_shaderspbrLighting,_shaderspbrNeutralTonemapping,_shadersphong,_shaderspi,_shaderspiOverFour,_shaderspiOverSix,_shaderspiOverThree,_shaderspiOverTwo,_shadersplaneDistance,_shaderspointAlongRay,_shadersradiansPerDegree,_shadersray,_shadersrayEllipsoidIntersectionInterval,_shadersraySegment,_shadersraySphereIntersectionInterval,_shadersreadDepth,_shadersreadNonPerspective,_shadersreverseLogDepth,_shadersround,_shaderssaturation,_shaderssceneMode2D,_shaderssceneMode3D,_shaderssceneModeColumbusView,_shaderssceneModeMorphing,_shadersshadowDepthCompare,_shadersshadowParameters,_shadersshadowVisibility,_shaderssignNotZero,_shaderssolarRadius,_shaderssphericalHarmonics,_shaderssrgbToLinear,_shaderstangentToEyeSpaceMatrix,_shaderstextureCube,_shadersthreePiOver2,_shaderstransformPlane,_shaderstranslateRelativeToEye,_shaderstranslucentPhong,_shaderstranspose,_shaderstwoPi,_shadersunpackClippingExtents,_shadersunpackDepth,_shadersunpackFloat,_shadersunpackUint,_shadersvalueTransform,_shadersvertexLogDepth,_shaderswebMercatorMaxLatitude,_shaderswindowToEyeCoordinates,_shaderswriteDepthClamp,_shaderswriteLogDepth,_shaderswriteNonPerspective,addAllToArray,addBuffer,addDefaults,addExtensionsRequired,addExtensionsUsed,addPipelineExtras,addToArray,appendForwardSlash,arrayRemoveDuplicates,barycentricCoordinates,binarySearch,buildModuleUrl,buildVoxelDrawCommands,clone,combine,computeFlyToLocationForRectangle,createBillboardPointCallback,createCommand,createDefaultImageryProviderViewModels,createDefaultTerrainProviderViewModels,createElevationBandMaterial,createGooglePhotorealistic3DTileset,createGuid,createMaterialPropertyDescriptor,createOsmBuildingsAsync,createPropertyDescriptor,createRawPropertyDescriptor,createTangentSpaceDebugPrimitive,createTaskProcessorWorker,createUniform,createUniformArray,createWorldBathymetryAsync,createWorldImageryAsync,createWorldTerrainAsync,decodeGoogleEarthEnterpriseData,decodeVectorPolylinePositions,defaultValue,defer,defined,demodernizeShader,deprecationWarning,destroyObject,exportKml,findAccessorMinMax,findContentMetadata,findGroupMetadata,findTileMetadata,forEachTextureInMaterial,formatError,freezeRenderState,getAbsoluteUri,getAccessorByteStride,getBaseUri,getBinaryAccessor,getClipAndStyleCode,getClippingFunction,getComponentReader,getElement,getExtensionFromUri,getFilenameFromUri,getImageFromTypedArray,getImagePixels,getJsonFromTypedArray,getMagic,getMetadataClassProperty,getMetadataProperty,getStringFromTypedArray,getTimestamp,hasExtension,heightReferenceOnEntityPropertyChanged,isBitSet,isBlobUri,isCrossOriginUrl,isDataUri,isLeapYear,knockout,knockout_3_5_1,knockout_es5,loadAndExecuteScript,loadCubeMap,loadImageFromTypedArray,loadKTX2,mergeSort,moveTechniqueRenderStates,moveTechniquesToExtension,numberOfComponentsForType,objectToQuery,oneTimeWarning,parseBatchTable,parseFeatureMetadataLegacy,parseGlb,parseResponseHeaders,parseStructuralMetadata,pickModel,pointInsideTriangle,preprocess3DTileContent,processVoxelProperties,queryToObject,readAccessorPacked,removeExtension,removeExtensionsRequired,removeExtensionsUsed,removePipelineExtras,removeUnusedElements,resizeImageToNextPowerOfTwo,sampleTerrain,sampleTerrainMostDetailed,scaleToGeodeticSurface,srgbToLinear,subdivideArray,subscribeAndEvaluate,updateAccessorComponentTypes,updateVersion,usesExtension,viewerCesium3DTilesInspectorMixin,viewerCesiumInspectorMixin,viewerDragDropMixin,viewerPerformanceWatchdogMixin,viewerVoxelInspectorMixin,webGLConstantToGlslType,wrapFunction,writeTextToCanvas}); diff --git a/public/Cesium/index.js b/public/Cesium/index.js new file mode 100644 index 000000000..79ed59b2a --- /dev/null +++ b/public/Cesium/index.js @@ -0,0 +1,16264 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var VSe=Object.create;var u$=Object.defineProperty;var HSe=Object.getOwnPropertyDescriptor;var WSe=Object.getOwnPropertyNames;var jSe=Object.getPrototypeOf,YSe=Object.prototype.hasOwnProperty;var yR=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Rd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var qSe=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of WSe(t))!YSe.call(e,o)&&o!==n&&u$(e,o,{get:()=>t[o],enumerable:!(i=HSe(t,o))||i.enumerable});return e};var Es=(e,t,n)=>(n=e!=null?VSe(jSe(e)):{},qSe(t||!e||!e.__esModule?u$(n,"default",{value:e,enumerable:!0}):n,e));var CR=Rd((wvt,f$)=>{var BA=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};BA.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};BA.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};BA.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};BA.prototype.random_int31=function(){return this.random_int()>>>1};BA.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};BA.prototype.random=function(){return this.random_int()*(1/4294967296)};BA.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};BA.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};f$.exports=BA});var b$=Rd((H0,W0)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof H0=="object"&&H0&&!H0.nodeType&&H0,n=typeof W0=="object"&&W0&&!W0.nodeType&&W0,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,A=128,g="-",m=/^xn--/,_=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,C={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=s-a,I=Math.floor,b=String.fromCharCode,S;function B(Q){throw new RangeError(C[Q])}function v(Q,z){for(var F=Q.length,H=[];F--;)H[F]=z(Q[F]);return H}function P(Q,z){var F=Q.split("@"),H="";F.length>1&&(H=F[0]+"@",Q=F[1]),Q=Q.replace(y,".");var W=Q.split("."),Z=v(W,z).join(".");return H+Z}function N(Q){for(var z=[],F=0,H=Q.length,W,Z;F<H;)W=Q.charCodeAt(F++),W>=55296&&W<=56319&&F<H?(Z=Q.charCodeAt(F++),(Z&64512)==56320?z.push(((W&1023)<<10)+(Z&1023)+65536):(z.push(W),F--)):z.push(W);return z}function L(Q){return v(Q,function(z){var F="";return z>65535&&(z-=65536,F+=b(z>>>10&1023|55296),z=56320|z&1023),F+=b(z),F}).join("")}function p(Q){return Q-48<10?Q-22:Q-65<26?Q-65:Q-97<26?Q-97:s}function x(Q,z){return Q+22+75*(Q<26)-((z!=0)<<5)}function T(Q,z,F){var H=0;for(Q=F?I(Q/f):Q>>1,Q+=I(Q/z);Q>E*c>>1;H+=s)Q=I(Q/E);return I(H+(E+1)*Q/(Q+u))}function w(Q){var z=[],F=Q.length,H,W=0,Z=A,Y=h,$,X,he,ge,fe,ye,Ie,ve,Te;for($=Q.lastIndexOf(g),$<0&&($=0),X=0;X<$;++X)Q.charCodeAt(X)>=128&&B("not-basic"),z.push(Q.charCodeAt(X));for(he=$>0?$+1:0;he<F;){for(ge=W,fe=1,ye=s;he>=F&&B("invalid-input"),Ie=p(Q.charCodeAt(he++)),(Ie>=s||Ie>I((r-W)/fe))&&B("overflow"),W+=Ie*fe,ve=ye<=Y?a:ye>=Y+c?c:ye-Y,!(Ie<ve);ye+=s)Te=s-ve,fe>I(r/Te)&&B("overflow"),fe*=Te;H=z.length+1,Y=T(W-ge,H,ge==0),I(W/H)>r-Z&&B("overflow"),Z+=I(W/H),W%=H,z.splice(W++,0,Z)}return L(z)}function M(Q){var z,F,H,W,Z,Y,$,X,he,ge,fe,ye=[],Ie,ve,Te,ke;for(Q=N(Q),Ie=Q.length,z=A,F=0,Z=h,Y=0;Y<Ie;++Y)fe=Q[Y],fe<128&&ye.push(b(fe));for(H=W=ye.length,W&&ye.push(g);H<Ie;){for($=r,Y=0;Y<Ie;++Y)fe=Q[Y],fe>=z&&fe<$&&($=fe);for(ve=H+1,$-z>I((r-F)/ve)&&B("overflow"),F+=($-z)*ve,z=$,Y=0;Y<Ie;++Y)if(fe=Q[Y],fe<z&&++F>r&&B("overflow"),fe==z){for(X=F,he=s;ge=he<=Z?a:he>=Z+c?c:he-Z,!(X<ge);he+=s)ke=X-ge,Te=s-ge,ye.push(b(x(ge+ke%Te,0))),X=I(ke/Te);ye.push(b(x(X,0))),Z=T(F,ve,H==W),F=0,++H}++F,++z}return ye.join("")}function O(Q){return P(Q,function(z){return m.test(z)?w(z.slice(4).toLowerCase()):z})}function U(Q){return P(Q,function(z){return _.test(z)?"xn--"+M(z):z})}if(o={version:"1.3.2",ucs2:{decode:N,encode:L},decode:w,encode:M,toASCII:U,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(W0.exports==t)n.exports=o;else for(S in o)o.hasOwnProperty(S)&&(t[S]=o[S]);else e.punycode=o})(H0)});var S$=Rd((T$,DR)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof DR=="object"&&DR.exports?DR.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(T$,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var A=0;A<3&&(f[0]==="0"&&f.length>1);A++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,_=0,y=-1,C=!1;for(h=0;h<c;h++)C?s[h]==="0"?_+=1:(C=!1,_>m&&(g=y,m=_)):s[h]==="0"&&(C=!0,y=h,_=1);_>m&&(g=y,m=_),m>1&&s.splice(g,m,""),a=s.length;var E="";for(s[0]===""&&(E=":"),h=0;h<a&&(E+=s[h],h!==a-1);h++)E+=":";return s[a-1]===""&&(E+=":"),E}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var B$=Rd((w$,vR)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof vR=="object"&&vR.exports?vR.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(w$,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var _u=Rd((D$,PR)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof PR=="object"&&PR.exports?PR.exports=t(b$(),S$(),B$()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(D$,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(x,T){var w=arguments.length>=1,M=arguments.length>=2;if(!(this instanceof r))return w?M?new r(x,T):new r(x):new r;if(x===void 0){if(w)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?x=location.href+"":x=""}if(x===null&&w)throw new TypeError("null is not a valid argument for URI");return this.href(x),T!==void 0?this.absoluteTo(T):this}function s(x){return/^[0-9]+$/.test(x)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(x){return x.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(x){return x===void 0?"Undefined":String(Object.prototype.toString.call(x)).slice(8,-1)}function h(x){return f(x)==="Array"}function A(x,T){var w={},M,O;if(f(T)==="RegExp")w=null;else if(h(T))for(M=0,O=T.length;M<O;M++)w[T[M]]=!0;else w[T]=!0;for(M=0,O=x.length;M<O;M++){var U=w&&w[x[M]]!==void 0||!w&&T.test(x[M]);U&&(x.splice(M,1),O--,M--)}return x}function g(x,T){var w,M;if(h(T)){for(w=0,M=T.length;w<M;w++)if(!g(x,T[w]))return!1;return!0}var O=f(T);for(w=0,M=x.length;w<M;w++)if(O==="RegExp"){if(typeof x[w]=="string"&&x[w].match(T))return!0}else if(x[w]===T)return!0;return!1}function m(x,T){if(!h(x)||!h(T)||x.length!==T.length)return!1;x.sort(),T.sort();for(var w=0,M=x.length;w<M;w++)if(x[w]!==T[w])return!1;return!0}function _(x){var T=/^\/+|\/+$/g;return x.replace(T,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(x){if(!(!x||!x.nodeName)){var T=x.nodeName.toLowerCase();if(!(T==="input"&&x.type!=="image"))return r.domAttributes[T]}};function y(x){return escape(x)}function C(x){return encodeURIComponent(x).replace(/[!'()*]/g,y).replace(/\*/g,"%2A")}r.encode=C,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=C,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(x,T){var w=r.encode(x+"");return T===void 0&&(T=r.escapeQuerySpace),T?w.replace(/%20/g,"+"):w},r.decodeQuery=function(x,T){x+="",T===void 0&&(T=r.escapeQuerySpace);try{return r.decode(T?x.replace(/\+/g,"%20"):x)}catch{return x}};var E={encode:"encode",decode:"decode"},I,b=function(x,T){return function(w){try{return r[T](w+"").replace(r.characters[x][T].expression,function(M){return r.characters[x][T].map[M]})}catch{return w}}};for(I in E)r[I+"PathSegment"]=b("pathname",E[I]),r[I+"UrnPathSegment"]=b("urnpath",E[I]);var S=function(x,T,w){return function(M){var O;w?O=function(F){return r[T](r[w](F))}:O=r[T];for(var U=(M+"").split(x),Q=0,z=U.length;Q<z;Q++)U[Q]=O(U[Q]);return U.join(x)}};r.decodePath=S("/","decodePathSegment"),r.decodeUrnPath=S(":","decodeUrnPathSegment"),r.recodePath=S("/","encodePathSegment","decode"),r.recodeUrnPath=S(":","encodeUrnPathSegment","decode"),r.encodeReserved=b("reserved","encode"),r.parse=function(x,T){var w;return T||(T={preventInvalidHostname:r.preventInvalidHostname}),x=x.replace(r.leading_whitespace_expression,""),x=x.replace(r.ascii_tab_whitespace,""),w=x.indexOf("#"),w>-1&&(T.fragment=x.substring(w+1)||null,x=x.substring(0,w)),w=x.indexOf("?"),w>-1&&(T.query=x.substring(w+1)||null,x=x.substring(0,w)),x=x.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),x=x.replace(/^[/\\]{2,}/i,"//"),x.substring(0,2)==="//"?(T.protocol=null,x=x.substring(2),x=r.parseAuthority(x,T)):(w=x.indexOf(":"),w>-1&&(T.protocol=x.substring(0,w)||null,T.protocol&&!T.protocol.match(r.protocol_expression)?T.protocol=void 0:x.substring(w+1,w+3).replace(/\\/g,"/")==="//"?(x=x.substring(w+3),x=r.parseAuthority(x,T)):(x=x.substring(w+1),T.urn=!0))),T.path=x,T},r.parseHost=function(x,T){x||(x=""),x=x.replace(/\\/g,"/");var w=x.indexOf("/"),M,O;if(w===-1&&(w=x.length),x.charAt(0)==="[")M=x.indexOf("]"),T.hostname=x.substring(1,M)||null,T.port=x.substring(M+2,w)||null,T.port==="/"&&(T.port=null);else{var U=x.indexOf(":"),Q=x.indexOf("/"),z=x.indexOf(":",U+1);z!==-1&&(Q===-1||z<Q)?(T.hostname=x.substring(0,w)||null,T.port=null):(O=x.substring(0,w).split(":"),T.hostname=O[0]||null,T.port=O[1]||null)}return T.hostname&&x.substring(w).charAt(0)!=="/"&&(w++,x="/"+x),T.preventInvalidHostname&&r.ensureValidHostname(T.hostname,T.protocol),T.port&&r.ensureValidPort(T.port),x.substring(w)||"/"},r.parseAuthority=function(x,T){return x=r.parseUserinfo(x,T),r.parseHost(x,T)},r.parseUserinfo=function(x,T){var w=x,M=x.indexOf("\\");M!==-1&&(x=x.replace(/\\/g,"/"));var O=x.indexOf("/"),U=x.lastIndexOf("@",O>-1?O:x.length-1),Q;return U>-1&&(O===-1||U<O)?(Q=x.substring(0,U).split(":"),T.username=Q[0]?r.decode(Q[0]):null,Q.shift(),T.password=Q[0]?r.decode(Q.join(":")):null,x=w.substring(U+1)):(T.username=null,T.password=null),x},r.parseQuery=function(x,T){if(!x)return{};if(x=x.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!x)return{};for(var w={},M=x.split("&"),O=M.length,U,Q,z,F=0;F<O;F++)U=M[F].split("="),Q=r.decodeQuery(U.shift(),T),z=U.length?r.decodeQuery(U.join("="),T):null,Q!=="__proto__"&&(c.call(w,Q)?((typeof w[Q]=="string"||w[Q]===null)&&(w[Q]=[w[Q]]),w[Q].push(z)):w[Q]=z);return w},r.build=function(x){var T="",w=!1;return x.protocol&&(T+=x.protocol+":"),!x.urn&&(T||x.hostname)&&(T+="//",w=!0),T+=r.buildAuthority(x)||"",typeof x.path=="string"&&(x.path.charAt(0)!=="/"&&w&&(T+="/"),T+=x.path),typeof x.query=="string"&&x.query&&(T+="?"+x.query),typeof x.fragment=="string"&&x.fragment&&(T+="#"+x.fragment),T},r.buildHost=function(x){var T="";if(x.hostname)r.ip6_expression.test(x.hostname)?T+="["+x.hostname+"]":T+=x.hostname;else return"";return x.port&&(T+=":"+x.port),T},r.buildAuthority=function(x){return r.buildUserinfo(x)+r.buildHost(x)},r.buildUserinfo=function(x){var T="";return x.username&&(T+=r.encode(x.username)),x.password&&(T+=":"+r.encode(x.password)),T&&(T+="@"),T},r.buildQuery=function(x,T,w){var M="",O,U,Q,z;for(U in x)if(U!=="__proto__"&&c.call(x,U))if(h(x[U]))for(O={},Q=0,z=x[U].length;Q<z;Q++)x[U][Q]!==void 0&&O[x[U][Q]+""]===void 0&&(M+="&"+r.buildQueryParameter(U,x[U][Q],w),T!==!0&&(O[x[U][Q]+""]=!0));else x[U]!==void 0&&(M+="&"+r.buildQueryParameter(U,x[U],w));return M.substring(1)},r.buildQueryParameter=function(x,T,w){return r.encodeQuery(x,w)+(T!==null?"="+r.encodeQuery(T,w):"")},r.addQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.addQuery(x,M,T[M]);else if(typeof T=="string"){if(x[T]===void 0){x[T]=w;return}else typeof x[T]=="string"&&(x[T]=[x[T]]);h(w)||(w=[w]),x[T]=(x[T]||[]).concat(w)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.setQuery(x,M,T[M]);else if(typeof T=="string")x[T]=w===void 0?null:w;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(x,T,w){var M,O,U;if(h(T))for(M=0,O=T.length;M<O;M++)x[T[M]]=void 0;else if(f(T)==="RegExp")for(U in x)T.test(U)&&(x[U]=void 0);else if(typeof T=="object")for(U in T)c.call(T,U)&&r.removeQuery(x,U,T[U]);else if(typeof T=="string")w!==void 0?f(w)==="RegExp"?!h(x[T])&&w.test(x[T])?x[T]=void 0:x[T]=A(x[T],w):x[T]===String(w)&&(!h(w)||w.length===1)?x[T]=void 0:h(x[T])&&(x[T]=A(x[T],w)):x[T]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(x,T,w,M){switch(f(T)){case"String":break;case"RegExp":for(var O in x)if(c.call(x,O)&&T.test(O)&&(w===void 0||r.hasQuery(x,O,w)))return!0;return!1;case"Object":for(var U in T)if(c.call(T,U)&&!r.hasQuery(x,U,T[U]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(w)){case"Undefined":return T in x;case"Boolean":var Q=!!(h(x[T])?x[T].length:x[T]);return w===Q;case"Function":return!!w(x[T],T,x);case"Array":if(!h(x[T]))return!1;var z=M?g:m;return z(x[T],w);case"RegExp":return h(x[T])?M?g(x[T],w):!1:!!(x[T]&&x[T].match(w));case"Number":w=String(w);case"String":return h(x[T])?M?g(x[T],w):!1:x[T]===w;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var x=[],T=[],w=0,M=0;M<arguments.length;M++){var O=new r(arguments[M]);x.push(O);for(var U=O.segment(),Q=0;Q<U.length;Q++)typeof U[Q]=="string"&&T.push(U[Q]),U[Q]&&w++}if(!T.length||!w)return new r("");var z=new r("").segment(T);return(x[0].path()===""||x[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(x,T){var w=Math.min(x.length,T.length),M;for(M=0;M<w;M++)if(x.charAt(M)!==T.charAt(M)){M--;break}return M<1?x.charAt(0)===T.charAt(0)&&x.charAt(0)==="/"?"/":"":((x.charAt(M)!=="/"||T.charAt(M)!=="/")&&(M=x.substring(0,M).lastIndexOf("/")),x.substring(0,M+1))},r.withinString=function(x,T,w){w||(w={});var M=w.start||r.findUri.start,O=w.end||r.findUri.end,U=w.trim||r.findUri.trim,Q=w.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(M.lastIndex=0;;){var F=M.exec(x);if(!F)break;var H=F.index;if(w.ignoreHtml){var W=x.slice(Math.max(H-3,0),H);if(W&&z.test(W))continue}for(var Z=H+x.slice(H).search(O),Y=x.slice(H,Z),$=-1;;){var X=Q.exec(Y);if(!X)break;var he=X.index+X[0].length;$=Math.max($,he)}if($>-1?Y=Y.slice(0,$)+Y.slice($).replace(U,""):Y=Y.replace(U,""),!(Y.length<=F[0].length)&&!(w.ignore&&w.ignore.test(Y))){Z=H+Y.length;var ge=T(Y,H,Z,x);if(ge===void 0){M.lastIndex=Z;continue}ge=String(ge),x=x.slice(0,H)+ge+x.slice(Z),M.lastIndex=H+ge.length}}return M.lastIndex=0,x},r.ensureValidHostname=function(x,T){var w=!!x,M=!!T,O=!1;if(M&&(O=g(r.hostProtocols,T)),O&&!w)throw new TypeError("Hostname cannot be empty, if protocol is "+T);if(x&&x.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(x).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(x){if(x){var T=Number(x);if(!(s(T)&&T>0&&T<65536))throw new TypeError('Port "'+x+'" is not a valid port')}},r.noConflict=function(x){if(x){var T={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(T.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(T.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(T.SecondLevelDomains=i.SecondLevelDomains.noConflict()),T}else i.URI===this&&(i.URI=o);return this},a.build=function(x){return x===!0?this._deferred_build=!0:(x===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function B(x){return function(T,w){return T===void 0?this._parts[x]||"":(this._parts[x]=T||null,this.build(!w),this)}}function v(x,T){return function(w,M){return w===void 0?this._parts[x]||"":(w!==null&&(w=w+"",w.charAt(0)===T&&(w=w.substring(1))),this._parts[x]=w,this.build(!M),this)}}a.protocol=B("protocol"),a.username=B("username"),a.password=B("password"),a.hostname=B("hostname"),a.port=B("port"),a.query=v("query","?"),a.fragment=v("fragment","#"),a.search=function(x,T){var w=this.query(x,T);return typeof w=="string"&&w.length?"?"+w:w},a.hash=function(x,T){var w=this.fragment(x,T);return typeof w=="string"&&w.length?"#"+w:w},a.pathname=function(x,T){if(x===void 0||x===!0){var w=this._parts.path||(this._parts.hostname?"/":"");return x?(this._parts.urn?r.decodeUrnPath:r.decodePath)(w):w}else return this._parts.urn?this._parts.path=x?r.recodeUrnPath(x):"":this._parts.path=x?r.recodePath(x):"/",this.build(!T),this},a.path=a.pathname,a.href=function(x,T){var w;if(x===void 0)return this.toString();this._string="",this._parts=r._parts();var M=x instanceof r,O=typeof x=="object"&&(x.hostname||x.path||x.pathname);if(x.nodeName){var U=r.getDomAttribute(x);x=x[U]||"",O=!1}if(!M&&O&&x.pathname!==void 0&&(x=x.toString()),typeof x=="string"||x instanceof String)this._parts=r.parse(String(x),this._parts);else if(M||O){var Q=M?x._parts:x;for(w in Q)w!=="query"&&c.call(this._parts,w)&&(this._parts[w]=Q[w]);Q.query&&this.query(Q.query,!1)}else throw new TypeError("invalid input");return this.build(!T),this},a.is=function(x){var T=!1,w=!1,M=!1,O=!1,U=!1,Q=!1,z=!1,F=!this._parts.urn;switch(this._parts.hostname&&(F=!1,w=r.ip4_expression.test(this._parts.hostname),M=r.ip6_expression.test(this._parts.hostname),T=w||M,O=!T,U=O&&n&&n.has(this._parts.hostname),Q=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),x.toLowerCase()){case"relative":return F;case"absolute":return!F;case"domain":case"name":return O;case"sld":return U;case"ip":return T;case"ip4":case"ipv4":case"inet4":return w;case"ip6":case"ipv6":case"inet6":return M;case"idn":return Q;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var P=a.protocol,N=a.port,L=a.hostname;a.protocol=function(x,T){if(x&&(x=x.replace(/:(\/\/)?$/,""),!x.match(r.protocol_expression)))throw new TypeError('Protocol "'+x+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return P.call(this,x,T)},a.scheme=a.protocol,a.port=function(x,T){return this._parts.urn?x===void 0?"":this:(x!==void 0&&(x===0&&(x=null),x&&(x+="",x.charAt(0)===":"&&(x=x.substring(1)),r.ensureValidPort(x))),N.call(this,x,T))},a.hostname=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x!==void 0){var w={preventInvalidHostname:this._parts.preventInvalidHostname},M=r.parseHost(x,w);if(M!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');x=w.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(x,this._parts.protocol)}return L.call(this,x,T)},a.origin=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=this.protocol(),M=this.authority();return M?(w?w+"://":"")+this.authority():""}else{var O=r(x);return this.protocol(O.protocol()).authority(O.authority()).build(!T),this}},a.host=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var w=r.parseHost(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.authority=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var w=r.parseAuthority(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.userinfo=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=r.buildUserinfo(this._parts);return w&&w.substring(0,w.length-1)}else return x[x.length-1]!=="@"&&(x+="@"),r.parseUserinfo(x,this._parts),this.build(!T),this},a.resource=function(x,T){var w;return x===void 0?this.path()+this.search()+this.hash():(w=r.parse(x),this._parts.path=w.path,this._parts.query=w.query,this._parts.fragment=w.fragment,this.build(!T),this)},a.subdomain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,w)||""}else{var M=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,M),U=new RegExp("^"+u(O));if(x&&x.charAt(x.length-1)!=="."&&(x+="."),x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return x&&r.ensureValidHostname(x,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(U,x),this.build(!T),this}},a.domain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.match(/\./g);if(w&&w.length<2)return this._parts.hostname;var M=this._parts.hostname.length-this.tld(T).length-1;return M=this._parts.hostname.lastIndexOf(".",M-1)+1,this._parts.hostname.substring(M)||""}else{if(!x)throw new TypeError("cannot set domain empty");if(x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(x,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=x;else{var O=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,x)}return this.build(!T),this}},a.tld=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.lastIndexOf("."),M=this._parts.hostname.substring(w+1);return T!==!0&&n&&n.list[M.toLowerCase()]&&n.get(this._parts.hostname)||M}else{var O;if(x)if(x.match(/[^a-zA-Z0-9-]/))if(n&&n.is(x))O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x);else throw new TypeError('TLD "'+x+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x)}else throw new TypeError("cannot set TLD empty");return this.build(!T),this}},a.directory=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var w=this._parts.path.length-this.filename().length-1,M=this._parts.path.substring(0,w)||(this._parts.hostname?"/":"");return x?r.decodePath(M):M}else{var O=this._parts.path.length-this.filename().length,U=this._parts.path.substring(0,O),Q=new RegExp("^"+u(U));return this.is("relative")||(x||(x="/"),x.charAt(0)!=="/"&&(x="/"+x)),x&&x.charAt(x.length-1)!=="/"&&(x+="/"),x=r.recodePath(x),this._parts.path=this._parts.path.replace(Q,x),this.build(!T),this}},a.filename=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x!="string"){if(!this._parts.path||this._parts.path==="/")return"";var w=this._parts.path.lastIndexOf("/"),M=this._parts.path.substring(w+1);return x?r.decodePathSegment(M):M}else{var O=!1;x.charAt(0)==="/"&&(x=x.substring(1)),x.match(/\.?\//)&&(O=!0);var U=new RegExp(u(this.filename())+"$");return x=r.recodePath(x),this._parts.path=this._parts.path.replace(U,x),O?this.normalizePath(T):this.build(!T),this}},a.suffix=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path||this._parts.path==="/")return"";var w=this.filename(),M=w.lastIndexOf("."),O,U;return M===-1?"":(O=w.substring(M+1),U=/^[a-z0-9%]+$/i.test(O)?O:"",x?r.decodePathSegment(U):U)}else{x.charAt(0)==="."&&(x=x.substring(1));var Q=this.suffix(),z;if(Q)x?z=new RegExp(u(Q)+"$"):z=new RegExp(u("."+Q)+"$");else{if(!x)return this;this._parts.path+="."+r.recodePath(x)}return z&&(x=r.recodePath(x),this._parts.path=this._parts.path.replace(z,x)),this.build(!T),this}},a.segment=function(x,T,w){var M=this._parts.urn?":":"/",O=this.path(),U=O.substring(0,1)==="/",Q=O.split(M);if(x!==void 0&&typeof x!="number"&&(w=T,T=x,x=void 0),x!==void 0&&typeof x!="number")throw new Error('Bad segment "'+x+'", must be 0-based integer');if(U&&Q.shift(),x<0&&(x=Math.max(Q.length+x,0)),T===void 0)return x===void 0?Q:Q[x];if(x===null||Q[x]===void 0)if(h(T)){Q=[];for(var z=0,F=T.length;z<F;z++)!T[z].length&&(!Q.length||!Q[Q.length-1].length)||(Q.length&&!Q[Q.length-1].length&&Q.pop(),Q.push(_(T[z])))}else(T||typeof T=="string")&&(T=_(T),Q[Q.length-1]===""?Q[Q.length-1]=T:Q.push(T));else T?Q[x]=_(T):Q.splice(x,1);return U&&Q.unshift(""),this.path(Q.join(M),w)},a.segmentCoded=function(x,T,w){var M,O,U;if(typeof x!="number"&&(w=T,T=x,x=void 0),T===void 0){if(M=this.segment(x,T,w),!h(M))M=M!==void 0?r.decode(M):void 0;else for(O=0,U=M.length;O<U;O++)M[O]=r.decode(M[O]);return M}if(!h(T))T=typeof T=="string"||T instanceof String?r.encode(T):T;else for(O=0,U=T.length;O<U;O++)T[O]=r.encode(T[O]);return this.segment(x,T,w)};var p=a.query;return a.query=function(x,T){if(x===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="function"){var w=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),M=x.call(this,w);return this._parts.query=r.buildQuery(M||w,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this}else return x!==void 0&&typeof x!="string"?(this._parts.query=r.buildQuery(x,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this):p.call(this,x,T)},a.setQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="string"||x instanceof String)M[x]=T!==void 0?T:null;else if(typeof x=="object")for(var O in x)c.call(x,O)&&(M[O]=x[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.addQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(M,x,T===void 0?null:T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.removeQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(M,x,T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.hasQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(M,x,T,w)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(x){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!x)),this},a.normalizeHostname=function(x){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!x)),this},a.normalizePort=function(x){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!x)),this},a.normalizePath=function(x){var T=this._parts.path;if(!T)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!x),this;if(this._parts.path==="/")return this;T=r.recodePath(T);var w,M="",O,U;for(T.charAt(0)!=="/"&&(w=!0,T="/"+T),(T.slice(-3)==="/.."||T.slice(-2)==="/.")&&(T+="/"),T=T.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),w&&(M=T.substring(1).match(/^(\.\.\/)+/)||"",M&&(M=M[0]));O=T.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){T=T.substring(3);continue}U=T.substring(0,O).lastIndexOf("/"),U===-1&&(U=O),T=T.substring(0,U)+T.substring(O+3)}return w&&this.is("relative")&&(T=M+T.substring(1)),this._parts.path=T,this.build(!x),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(x){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!x)),this},a.normalizeFragment=function(x){return this._parts.fragment||(this._parts.fragment=null,this.build(!x)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var x=r.encode,T=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.unicode=function(){var x=r.encode,T=r.decode;r.encode=C,r.decode=unescape;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.readable=function(){var x=this.clone();x.username("").password("").normalize();var T="";if(x._parts.protocol&&(T+=x._parts.protocol+"://"),x._parts.hostname&&(x.is("punycode")&&e?(T+=e.toUnicode(x._parts.hostname),x._parts.port&&(T+=":"+x._parts.port)):T+=x.host()),x._parts.hostname&&x._parts.path&&x._parts.path.charAt(0)!=="/"&&(T+="/"),T+=x.path(!0),x._parts.query){for(var w="",M=0,O=x._parts.query.split("&"),U=O.length;M<U;M++){var Q=(O[M]||"").split("=");w+="&"+r.decodeQuery(Q[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),Q[1]!==void 0&&(w+="="+r.decodeQuery(Q[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}T+="?"+w.substring(1)}return T+=r.decodeQuery(x.hash(),!0),T},a.absoluteTo=function(x){var T=this.clone(),w=["protocol","username","password","hostname","port"],M,O,U;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x instanceof r||(x=new r(x)),T._parts.protocol||(T._parts.protocol=x._parts.protocol,this._parts.hostname))return T;for(O=0;U=w[O];O++)T._parts[U]=x._parts[U];return T._parts.path?(T._parts.path.substring(-2)===".."&&(T._parts.path+="/"),T.path().charAt(0)!=="/"&&(M=x.directory(),M=M||(x.path().indexOf("/")===0?"/":""),T._parts.path=(M?M+"/":"")+T._parts.path,T.normalizePath())):(T._parts.path=x._parts.path,T._parts.query||(T._parts.query=x._parts.query)),T.build(),T},a.relativeTo=function(x){var T=this.clone().normalize(),w,M,O,U,Q;if(T._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x=new r(x).normalize(),w=T._parts,M=x._parts,U=T.path(),Q=x.path(),U.charAt(0)!=="/")throw new Error("URI is already relative");if(Q.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(w.protocol===M.protocol&&(w.protocol=null),w.username!==M.username||w.password!==M.password||w.protocol!==null||w.username!==null||w.password!==null)return T.build();if(w.hostname===M.hostname&&w.port===M.port)w.hostname=null,w.port=null;else return T.build();if(U===Q)return w.path="",T.build();if(O=r.commonPath(U,Q),!O)return T.build();var z=M.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return w.path=z+w.path.substring(O.length)||"./",T.build()},a.equals=function(x){var T=this.clone(),w=new r(x),M={},O={},U={},Q,z,F;if(T.normalize(),w.normalize(),T.toString()===w.toString())return!0;if(Q=T.query(),z=w.query(),T.query(""),w.query(""),T.toString()!==w.toString()||Q.length!==z.length)return!1;M=r.parseQuery(Q,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(F in M)if(c.call(M,F)){if(h(M[F])){if(!m(M[F],O[F]))return!1}else if(M[F]!==O[F])return!1;U[F]=!0}for(F in O)if(c.call(O,F)&&!U[F])return!1;return!0},a.preventInvalidHostname=function(x){return this._parts.preventInvalidHostname=!!x,this},a.duplicateQueryParameters=function(x){return this._parts.duplicateQueryParameters=!!x,this},a.escapeQuerySpace=function(x){return this._parts.escapeQuerySpace=!!x,this},r})});var Zle=Rd((QMn,Jle)=>{"use strict";Jle.exports=FYe;var ZB=1e20;function FYe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,A,g,m,_;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(A=e,h=A.getContext("2d"),r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(A=e.canvas,h=e,r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,_=Math.floor(u.length/f);m<_;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var y=Array(r*s),C=Array(r*s),E=Array(a),I=Array(a),b=Array(a+1),S=Array(a);for(m=0,_=r*s;m<_;m++){var B=c[m];y[m]=B===1?0:B===0?ZB:Math.pow(Math.max(0,.5-B),2),C[m]=B===1?ZB:B===0?0:Math.pow(Math.max(0,B-.5),2)}Kle(y,r,s,E,I,S,b),Kle(C,r,s,E,I,S,b);var v=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,_=r*s;m<_;m++)v[m]=Math.min(Math.max(1-((y[m]-C[m])/i+n),0),1);return v}function Kle(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(Xle(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(Xle(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function Xle(e,t,n,i,o){n[0]=0,i[0]=-ZB,i[1]=+ZB;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+ZB}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var iue=Rd((t1n,rk)=>{function qYe(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,A=12,g=13,m=14,_=15,y=16,C=17,E=0,I=1,b=2,S=3,B=4;function v(p,x){return 55296<=p.charCodeAt(x)&&p.charCodeAt(x)<=56319&&56320<=p.charCodeAt(x+1)&&p.charCodeAt(x+1)<=57343}function P(p,x){x===void 0&&(x=0);var T=p.charCodeAt(x);if(55296<=T&&T<=56319&&x<p.length-1){var w=T,M=p.charCodeAt(x+1);return 56320<=M&&M<=57343?(w-55296)*1024+(M-56320)+65536:w}if(56320<=T&&T<=57343&&x>=1){var w=p.charCodeAt(x-1),M=T;return 55296<=w&&w<=56319?(w-55296)*1024+(M-56320)+65536:M}return T}function N(p,x,T){var w=[p].concat(x).concat([T]),M=w[w.length-2],O=T,U=w.lastIndexOf(m);if(U>1&&w.slice(1,U).every(function(F){return F==i})&&[i,g,C].indexOf(p)==-1)return b;var Q=w.lastIndexOf(o);if(Q>0&&w.slice(1,Q).every(function(F){return F==o})&&[A,o].indexOf(M)==-1)return w.filter(function(F){return F==o}).length%2==1?S:B;if(M==e&&O==t)return E;if(M==n||M==e||M==t)return O==m&&x.every(function(F){return F==i})?b:I;if(O==n||O==e||O==t)return I;if(M==s&&(O==s||O==a||O==u||O==f))return E;if((M==u||M==a)&&(O==a||O==c))return E;if((M==f||M==c)&&O==c)return E;if(O==i||O==_)return E;if(O==r)return E;if(M==A)return E;var z=w.indexOf(i)!=-1?w.lastIndexOf(i)-1:w.length-2;return[g,C].indexOf(w[z])!=-1&&w.slice(z+1,-1).every(function(F){return F==i})&&O==m||M==_&&[y,C].indexOf(O)!=-1?E:x.indexOf(o)!=-1?b:M==o&&O==o?E:I}this.nextBreak=function(p,x){if(x===void 0&&(x=0),x<0)return 0;if(x>=p.length-1)return p.length;for(var T=L(P(p,x)),w=[],M=x+1;M<p.length;M++)if(!v(p,M-1)){var O=L(P(p,M));if(N(T,w,O))return M;w.push(O)}return p.length},this.splitGraphemes=function(p){for(var x=[],T=0,w;(w=this.nextBreak(p,T))<p.length;)x.push(p.slice(T,w)),T=w;return T<p.length&&x.push(p.slice(T)),x},this.iterateGraphemes=function(p){var x=0,T={next:function(){var w,M;return(M=this.nextBreak(p,x))<p.length?(w=p.slice(x,M),x=M,{value:w,done:!1}):x<p.length?(w=p.slice(x),x=p.length,{value:w,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(T[Symbol.iterator]=function(){return T}),T},this.countGraphemes=function(p){for(var x=0,T=0,w;(w=this.nextBreak(p,T))<p.length;)T=w,x++;return T<p.length&&x++,x};function L(p){return 1536<=p&&p<=1541||p==1757||p==1807||p==2274||p==3406||p==69821||70082<=p&&p<=70083||p==72250||72326<=p&&p<=72329||p==73030?A:p==13?e:p==10?t:0<=p&&p<=9||11<=p&&p<=12||14<=p&&p<=31||127<=p&&p<=159||p==173||p==1564||p==6158||p==8203||8206<=p&&p<=8207||p==8232||p==8233||8234<=p&&p<=8238||8288<=p&&p<=8292||p==8293||8294<=p&&p<=8303||55296<=p&&p<=57343||p==65279||65520<=p&&p<=65528||65529<=p&&p<=65531||113824<=p&&p<=113827||119155<=p&&p<=119162||p==917504||p==917505||917506<=p&&p<=917535||917632<=p&&p<=917759||918e3<=p&&p<=921599?n:768<=p&&p<=879||1155<=p&&p<=1159||1160<=p&&p<=1161||1425<=p&&p<=1469||p==1471||1473<=p&&p<=1474||1476<=p&&p<=1477||p==1479||1552<=p&&p<=1562||1611<=p&&p<=1631||p==1648||1750<=p&&p<=1756||1759<=p&&p<=1764||1767<=p&&p<=1768||1770<=p&&p<=1773||p==1809||1840<=p&&p<=1866||1958<=p&&p<=1968||2027<=p&&p<=2035||2070<=p&&p<=2073||2075<=p&&p<=2083||2085<=p&&p<=2087||2089<=p&&p<=2093||2137<=p&&p<=2139||2260<=p&&p<=2273||2275<=p&&p<=2306||p==2362||p==2364||2369<=p&&p<=2376||p==2381||2385<=p&&p<=2391||2402<=p&&p<=2403||p==2433||p==2492||p==2494||2497<=p&&p<=2500||p==2509||p==2519||2530<=p&&p<=2531||2561<=p&&p<=2562||p==2620||2625<=p&&p<=2626||2631<=p&&p<=2632||2635<=p&&p<=2637||p==2641||2672<=p&&p<=2673||p==2677||2689<=p&&p<=2690||p==2748||2753<=p&&p<=2757||2759<=p&&p<=2760||p==2765||2786<=p&&p<=2787||2810<=p&&p<=2815||p==2817||p==2876||p==2878||p==2879||2881<=p&&p<=2884||p==2893||p==2902||p==2903||2914<=p&&p<=2915||p==2946||p==3006||p==3008||p==3021||p==3031||p==3072||3134<=p&&p<=3136||3142<=p&&p<=3144||3146<=p&&p<=3149||3157<=p&&p<=3158||3170<=p&&p<=3171||p==3201||p==3260||p==3263||p==3266||p==3270||3276<=p&&p<=3277||3285<=p&&p<=3286||3298<=p&&p<=3299||3328<=p&&p<=3329||3387<=p&&p<=3388||p==3390||3393<=p&&p<=3396||p==3405||p==3415||3426<=p&&p<=3427||p==3530||p==3535||3538<=p&&p<=3540||p==3542||p==3551||p==3633||3636<=p&&p<=3642||3655<=p&&p<=3662||p==3761||3764<=p&&p<=3769||3771<=p&&p<=3772||3784<=p&&p<=3789||3864<=p&&p<=3865||p==3893||p==3895||p==3897||3953<=p&&p<=3966||3968<=p&&p<=3972||3974<=p&&p<=3975||3981<=p&&p<=3991||3993<=p&&p<=4028||p==4038||4141<=p&&p<=4144||4146<=p&&p<=4151||4153<=p&&p<=4154||4157<=p&&p<=4158||4184<=p&&p<=4185||4190<=p&&p<=4192||4209<=p&&p<=4212||p==4226||4229<=p&&p<=4230||p==4237||p==4253||4957<=p&&p<=4959||5906<=p&&p<=5908||5938<=p&&p<=5940||5970<=p&&p<=5971||6002<=p&&p<=6003||6068<=p&&p<=6069||6071<=p&&p<=6077||p==6086||6089<=p&&p<=6099||p==6109||6155<=p&&p<=6157||6277<=p&&p<=6278||p==6313||6432<=p&&p<=6434||6439<=p&&p<=6440||p==6450||6457<=p&&p<=6459||6679<=p&&p<=6680||p==6683||p==6742||6744<=p&&p<=6750||p==6752||p==6754||6757<=p&&p<=6764||6771<=p&&p<=6780||p==6783||6832<=p&&p<=6845||p==6846||6912<=p&&p<=6915||p==6964||6966<=p&&p<=6970||p==6972||p==6978||7019<=p&&p<=7027||7040<=p&&p<=7041||7074<=p&&p<=7077||7080<=p&&p<=7081||7083<=p&&p<=7085||p==7142||7144<=p&&p<=7145||p==7149||7151<=p&&p<=7153||7212<=p&&p<=7219||7222<=p&&p<=7223||7376<=p&&p<=7378||7380<=p&&p<=7392||7394<=p&&p<=7400||p==7405||p==7412||7416<=p&&p<=7417||7616<=p&&p<=7673||7675<=p&&p<=7679||p==8204||8400<=p&&p<=8412||8413<=p&&p<=8416||p==8417||8418<=p&&p<=8420||8421<=p&&p<=8432||11503<=p&&p<=11505||p==11647||11744<=p&&p<=11775||12330<=p&&p<=12333||12334<=p&&p<=12335||12441<=p&&p<=12442||p==42607||42608<=p&&p<=42610||42612<=p&&p<=42621||42654<=p&&p<=42655||42736<=p&&p<=42737||p==43010||p==43014||p==43019||43045<=p&&p<=43046||43204<=p&&p<=43205||43232<=p&&p<=43249||43302<=p&&p<=43309||43335<=p&&p<=43345||43392<=p&&p<=43394||p==43443||43446<=p&&p<=43449||p==43452||p==43493||43561<=p&&p<=43566||43569<=p&&p<=43570||43573<=p&&p<=43574||p==43587||p==43596||p==43644||p==43696||43698<=p&&p<=43700||43703<=p&&p<=43704||43710<=p&&p<=43711||p==43713||43756<=p&&p<=43757||p==43766||p==44005||p==44008||p==44013||p==64286||65024<=p&&p<=65039||65056<=p&&p<=65071||65438<=p&&p<=65439||p==66045||p==66272||66422<=p&&p<=66426||68097<=p&&p<=68099||68101<=p&&p<=68102||68108<=p&&p<=68111||68152<=p&&p<=68154||p==68159||68325<=p&&p<=68326||p==69633||69688<=p&&p<=69702||69759<=p&&p<=69761||69811<=p&&p<=69814||69817<=p&&p<=69818||69888<=p&&p<=69890||69927<=p&&p<=69931||69933<=p&&p<=69940||p==70003||70016<=p&&p<=70017||70070<=p&&p<=70078||70090<=p&&p<=70092||70191<=p&&p<=70193||p==70196||70198<=p&&p<=70199||p==70206||p==70367||70371<=p&&p<=70378||70400<=p&&p<=70401||p==70460||p==70462||p==70464||p==70487||70502<=p&&p<=70508||70512<=p&&p<=70516||70712<=p&&p<=70719||70722<=p&&p<=70724||p==70726||p==70832||70835<=p&&p<=70840||p==70842||p==70845||70847<=p&&p<=70848||70850<=p&&p<=70851||p==71087||71090<=p&&p<=71093||71100<=p&&p<=71101||71103<=p&&p<=71104||71132<=p&&p<=71133||71219<=p&&p<=71226||p==71229||71231<=p&&p<=71232||p==71339||p==71341||71344<=p&&p<=71349||p==71351||71453<=p&&p<=71455||71458<=p&&p<=71461||71463<=p&&p<=71467||72193<=p&&p<=72198||72201<=p&&p<=72202||72243<=p&&p<=72248||72251<=p&&p<=72254||p==72263||72273<=p&&p<=72278||72281<=p&&p<=72283||72330<=p&&p<=72342||72344<=p&&p<=72345||72752<=p&&p<=72758||72760<=p&&p<=72765||p==72767||72850<=p&&p<=72871||72874<=p&&p<=72880||72882<=p&&p<=72883||72885<=p&&p<=72886||73009<=p&&p<=73014||p==73018||73020<=p&&p<=73021||73023<=p&&p<=73029||p==73031||92912<=p&&p<=92916||92976<=p&&p<=92982||94095<=p&&p<=94098||113821<=p&&p<=113822||p==119141||119143<=p&&p<=119145||119150<=p&&p<=119154||119163<=p&&p<=119170||119173<=p&&p<=119179||119210<=p&&p<=119213||119362<=p&&p<=119364||121344<=p&&p<=121398||121403<=p&&p<=121452||p==121461||p==121476||121499<=p&&p<=121503||121505<=p&&p<=121519||122880<=p&&p<=122886||122888<=p&&p<=122904||122907<=p&&p<=122913||122915<=p&&p<=122916||122918<=p&&p<=122922||125136<=p&&p<=125142||125252<=p&&p<=125258||917536<=p&&p<=917631||917760<=p&&p<=917999?i:127462<=p&&p<=127487?o:p==2307||p==2363||2366<=p&&p<=2368||2377<=p&&p<=2380||2382<=p&&p<=2383||2434<=p&&p<=2435||2495<=p&&p<=2496||2503<=p&&p<=2504||2507<=p&&p<=2508||p==2563||2622<=p&&p<=2624||p==2691||2750<=p&&p<=2752||p==2761||2763<=p&&p<=2764||2818<=p&&p<=2819||p==2880||2887<=p&&p<=2888||2891<=p&&p<=2892||p==3007||3009<=p&&p<=3010||3014<=p&&p<=3016||3018<=p&&p<=3020||3073<=p&&p<=3075||3137<=p&&p<=3140||3202<=p&&p<=3203||p==3262||3264<=p&&p<=3265||3267<=p&&p<=3268||3271<=p&&p<=3272||3274<=p&&p<=3275||3330<=p&&p<=3331||3391<=p&&p<=3392||3398<=p&&p<=3400||3402<=p&&p<=3404||3458<=p&&p<=3459||3536<=p&&p<=3537||3544<=p&&p<=3550||3570<=p&&p<=3571||p==3635||p==3763||3902<=p&&p<=3903||p==3967||p==4145||4155<=p&&p<=4156||4182<=p&&p<=4183||p==4228||p==6070||6078<=p&&p<=6085||6087<=p&&p<=6088||6435<=p&&p<=6438||6441<=p&&p<=6443||6448<=p&&p<=6449||6451<=p&&p<=6456||6681<=p&&p<=6682||p==6741||p==6743||6765<=p&&p<=6770||p==6916||p==6965||p==6971||6973<=p&&p<=6977||6979<=p&&p<=6980||p==7042||p==7073||7078<=p&&p<=7079||p==7082||p==7143||7146<=p&&p<=7148||p==7150||7154<=p&&p<=7155||7204<=p&&p<=7211||7220<=p&&p<=7221||p==7393||7410<=p&&p<=7411||p==7415||43043<=p&&p<=43044||p==43047||43136<=p&&p<=43137||43188<=p&&p<=43203||43346<=p&&p<=43347||p==43395||43444<=p&&p<=43445||43450<=p&&p<=43451||43453<=p&&p<=43456||43567<=p&&p<=43568||43571<=p&&p<=43572||p==43597||p==43755||43758<=p&&p<=43759||p==43765||44003<=p&&p<=44004||44006<=p&&p<=44007||44009<=p&&p<=44010||p==44012||p==69632||p==69634||p==69762||69808<=p&&p<=69810||69815<=p&&p<=69816||p==69932||p==70018||70067<=p&&p<=70069||70079<=p&&p<=70080||70188<=p&&p<=70190||70194<=p&&p<=70195||p==70197||70368<=p&&p<=70370||70402<=p&&p<=70403||p==70463||70465<=p&&p<=70468||70471<=p&&p<=70472||70475<=p&&p<=70477||70498<=p&&p<=70499||70709<=p&&p<=70711||70720<=p&&p<=70721||p==70725||70833<=p&&p<=70834||p==70841||70843<=p&&p<=70844||p==70846||p==70849||71088<=p&&p<=71089||71096<=p&&p<=71099||p==71102||71216<=p&&p<=71218||71227<=p&&p<=71228||p==71230||p==71340||71342<=p&&p<=71343||p==71350||71456<=p&&p<=71457||p==71462||72199<=p&&p<=72200||p==72249||72279<=p&&p<=72280||p==72343||p==72751||p==72766||p==72873||p==72881||p==72884||94033<=p&&p<=94078||p==119142||p==119149?r:4352<=p&&p<=4447||43360<=p&&p<=43388?s:4448<=p&&p<=4519||55216<=p&&p<=55238?a:4520<=p&&p<=4607||55243<=p&&p<=55291?c:p==44032||p==44060||p==44088||p==44116||p==44144||p==44172||p==44200||p==44228||p==44256||p==44284||p==44312||p==44340||p==44368||p==44396||p==44424||p==44452||p==44480||p==44508||p==44536||p==44564||p==44592||p==44620||p==44648||p==44676||p==44704||p==44732||p==44760||p==44788||p==44816||p==44844||p==44872||p==44900||p==44928||p==44956||p==44984||p==45012||p==45040||p==45068||p==45096||p==45124||p==45152||p==45180||p==45208||p==45236||p==45264||p==45292||p==45320||p==45348||p==45376||p==45404||p==45432||p==45460||p==45488||p==45516||p==45544||p==45572||p==45600||p==45628||p==45656||p==45684||p==45712||p==45740||p==45768||p==45796||p==45824||p==45852||p==45880||p==45908||p==45936||p==45964||p==45992||p==46020||p==46048||p==46076||p==46104||p==46132||p==46160||p==46188||p==46216||p==46244||p==46272||p==46300||p==46328||p==46356||p==46384||p==46412||p==46440||p==46468||p==46496||p==46524||p==46552||p==46580||p==46608||p==46636||p==46664||p==46692||p==46720||p==46748||p==46776||p==46804||p==46832||p==46860||p==46888||p==46916||p==46944||p==46972||p==47e3||p==47028||p==47056||p==47084||p==47112||p==47140||p==47168||p==47196||p==47224||p==47252||p==47280||p==47308||p==47336||p==47364||p==47392||p==47420||p==47448||p==47476||p==47504||p==47532||p==47560||p==47588||p==47616||p==47644||p==47672||p==47700||p==47728||p==47756||p==47784||p==47812||p==47840||p==47868||p==47896||p==47924||p==47952||p==47980||p==48008||p==48036||p==48064||p==48092||p==48120||p==48148||p==48176||p==48204||p==48232||p==48260||p==48288||p==48316||p==48344||p==48372||p==48400||p==48428||p==48456||p==48484||p==48512||p==48540||p==48568||p==48596||p==48624||p==48652||p==48680||p==48708||p==48736||p==48764||p==48792||p==48820||p==48848||p==48876||p==48904||p==48932||p==48960||p==48988||p==49016||p==49044||p==49072||p==49100||p==49128||p==49156||p==49184||p==49212||p==49240||p==49268||p==49296||p==49324||p==49352||p==49380||p==49408||p==49436||p==49464||p==49492||p==49520||p==49548||p==49576||p==49604||p==49632||p==49660||p==49688||p==49716||p==49744||p==49772||p==49800||p==49828||p==49856||p==49884||p==49912||p==49940||p==49968||p==49996||p==50024||p==50052||p==50080||p==50108||p==50136||p==50164||p==50192||p==50220||p==50248||p==50276||p==50304||p==50332||p==50360||p==50388||p==50416||p==50444||p==50472||p==50500||p==50528||p==50556||p==50584||p==50612||p==50640||p==50668||p==50696||p==50724||p==50752||p==50780||p==50808||p==50836||p==50864||p==50892||p==50920||p==50948||p==50976||p==51004||p==51032||p==51060||p==51088||p==51116||p==51144||p==51172||p==51200||p==51228||p==51256||p==51284||p==51312||p==51340||p==51368||p==51396||p==51424||p==51452||p==51480||p==51508||p==51536||p==51564||p==51592||p==51620||p==51648||p==51676||p==51704||p==51732||p==51760||p==51788||p==51816||p==51844||p==51872||p==51900||p==51928||p==51956||p==51984||p==52012||p==52040||p==52068||p==52096||p==52124||p==52152||p==52180||p==52208||p==52236||p==52264||p==52292||p==52320||p==52348||p==52376||p==52404||p==52432||p==52460||p==52488||p==52516||p==52544||p==52572||p==52600||p==52628||p==52656||p==52684||p==52712||p==52740||p==52768||p==52796||p==52824||p==52852||p==52880||p==52908||p==52936||p==52964||p==52992||p==53020||p==53048||p==53076||p==53104||p==53132||p==53160||p==53188||p==53216||p==53244||p==53272||p==53300||p==53328||p==53356||p==53384||p==53412||p==53440||p==53468||p==53496||p==53524||p==53552||p==53580||p==53608||p==53636||p==53664||p==53692||p==53720||p==53748||p==53776||p==53804||p==53832||p==53860||p==53888||p==53916||p==53944||p==53972||p==54e3||p==54028||p==54056||p==54084||p==54112||p==54140||p==54168||p==54196||p==54224||p==54252||p==54280||p==54308||p==54336||p==54364||p==54392||p==54420||p==54448||p==54476||p==54504||p==54532||p==54560||p==54588||p==54616||p==54644||p==54672||p==54700||p==54728||p==54756||p==54784||p==54812||p==54840||p==54868||p==54896||p==54924||p==54952||p==54980||p==55008||p==55036||p==55064||p==55092||p==55120||p==55148||p==55176?u:44033<=p&&p<=44059||44061<=p&&p<=44087||44089<=p&&p<=44115||44117<=p&&p<=44143||44145<=p&&p<=44171||44173<=p&&p<=44199||44201<=p&&p<=44227||44229<=p&&p<=44255||44257<=p&&p<=44283||44285<=p&&p<=44311||44313<=p&&p<=44339||44341<=p&&p<=44367||44369<=p&&p<=44395||44397<=p&&p<=44423||44425<=p&&p<=44451||44453<=p&&p<=44479||44481<=p&&p<=44507||44509<=p&&p<=44535||44537<=p&&p<=44563||44565<=p&&p<=44591||44593<=p&&p<=44619||44621<=p&&p<=44647||44649<=p&&p<=44675||44677<=p&&p<=44703||44705<=p&&p<=44731||44733<=p&&p<=44759||44761<=p&&p<=44787||44789<=p&&p<=44815||44817<=p&&p<=44843||44845<=p&&p<=44871||44873<=p&&p<=44899||44901<=p&&p<=44927||44929<=p&&p<=44955||44957<=p&&p<=44983||44985<=p&&p<=45011||45013<=p&&p<=45039||45041<=p&&p<=45067||45069<=p&&p<=45095||45097<=p&&p<=45123||45125<=p&&p<=45151||45153<=p&&p<=45179||45181<=p&&p<=45207||45209<=p&&p<=45235||45237<=p&&p<=45263||45265<=p&&p<=45291||45293<=p&&p<=45319||45321<=p&&p<=45347||45349<=p&&p<=45375||45377<=p&&p<=45403||45405<=p&&p<=45431||45433<=p&&p<=45459||45461<=p&&p<=45487||45489<=p&&p<=45515||45517<=p&&p<=45543||45545<=p&&p<=45571||45573<=p&&p<=45599||45601<=p&&p<=45627||45629<=p&&p<=45655||45657<=p&&p<=45683||45685<=p&&p<=45711||45713<=p&&p<=45739||45741<=p&&p<=45767||45769<=p&&p<=45795||45797<=p&&p<=45823||45825<=p&&p<=45851||45853<=p&&p<=45879||45881<=p&&p<=45907||45909<=p&&p<=45935||45937<=p&&p<=45963||45965<=p&&p<=45991||45993<=p&&p<=46019||46021<=p&&p<=46047||46049<=p&&p<=46075||46077<=p&&p<=46103||46105<=p&&p<=46131||46133<=p&&p<=46159||46161<=p&&p<=46187||46189<=p&&p<=46215||46217<=p&&p<=46243||46245<=p&&p<=46271||46273<=p&&p<=46299||46301<=p&&p<=46327||46329<=p&&p<=46355||46357<=p&&p<=46383||46385<=p&&p<=46411||46413<=p&&p<=46439||46441<=p&&p<=46467||46469<=p&&p<=46495||46497<=p&&p<=46523||46525<=p&&p<=46551||46553<=p&&p<=46579||46581<=p&&p<=46607||46609<=p&&p<=46635||46637<=p&&p<=46663||46665<=p&&p<=46691||46693<=p&&p<=46719||46721<=p&&p<=46747||46749<=p&&p<=46775||46777<=p&&p<=46803||46805<=p&&p<=46831||46833<=p&&p<=46859||46861<=p&&p<=46887||46889<=p&&p<=46915||46917<=p&&p<=46943||46945<=p&&p<=46971||46973<=p&&p<=46999||47001<=p&&p<=47027||47029<=p&&p<=47055||47057<=p&&p<=47083||47085<=p&&p<=47111||47113<=p&&p<=47139||47141<=p&&p<=47167||47169<=p&&p<=47195||47197<=p&&p<=47223||47225<=p&&p<=47251||47253<=p&&p<=47279||47281<=p&&p<=47307||47309<=p&&p<=47335||47337<=p&&p<=47363||47365<=p&&p<=47391||47393<=p&&p<=47419||47421<=p&&p<=47447||47449<=p&&p<=47475||47477<=p&&p<=47503||47505<=p&&p<=47531||47533<=p&&p<=47559||47561<=p&&p<=47587||47589<=p&&p<=47615||47617<=p&&p<=47643||47645<=p&&p<=47671||47673<=p&&p<=47699||47701<=p&&p<=47727||47729<=p&&p<=47755||47757<=p&&p<=47783||47785<=p&&p<=47811||47813<=p&&p<=47839||47841<=p&&p<=47867||47869<=p&&p<=47895||47897<=p&&p<=47923||47925<=p&&p<=47951||47953<=p&&p<=47979||47981<=p&&p<=48007||48009<=p&&p<=48035||48037<=p&&p<=48063||48065<=p&&p<=48091||48093<=p&&p<=48119||48121<=p&&p<=48147||48149<=p&&p<=48175||48177<=p&&p<=48203||48205<=p&&p<=48231||48233<=p&&p<=48259||48261<=p&&p<=48287||48289<=p&&p<=48315||48317<=p&&p<=48343||48345<=p&&p<=48371||48373<=p&&p<=48399||48401<=p&&p<=48427||48429<=p&&p<=48455||48457<=p&&p<=48483||48485<=p&&p<=48511||48513<=p&&p<=48539||48541<=p&&p<=48567||48569<=p&&p<=48595||48597<=p&&p<=48623||48625<=p&&p<=48651||48653<=p&&p<=48679||48681<=p&&p<=48707||48709<=p&&p<=48735||48737<=p&&p<=48763||48765<=p&&p<=48791||48793<=p&&p<=48819||48821<=p&&p<=48847||48849<=p&&p<=48875||48877<=p&&p<=48903||48905<=p&&p<=48931||48933<=p&&p<=48959||48961<=p&&p<=48987||48989<=p&&p<=49015||49017<=p&&p<=49043||49045<=p&&p<=49071||49073<=p&&p<=49099||49101<=p&&p<=49127||49129<=p&&p<=49155||49157<=p&&p<=49183||49185<=p&&p<=49211||49213<=p&&p<=49239||49241<=p&&p<=49267||49269<=p&&p<=49295||49297<=p&&p<=49323||49325<=p&&p<=49351||49353<=p&&p<=49379||49381<=p&&p<=49407||49409<=p&&p<=49435||49437<=p&&p<=49463||49465<=p&&p<=49491||49493<=p&&p<=49519||49521<=p&&p<=49547||49549<=p&&p<=49575||49577<=p&&p<=49603||49605<=p&&p<=49631||49633<=p&&p<=49659||49661<=p&&p<=49687||49689<=p&&p<=49715||49717<=p&&p<=49743||49745<=p&&p<=49771||49773<=p&&p<=49799||49801<=p&&p<=49827||49829<=p&&p<=49855||49857<=p&&p<=49883||49885<=p&&p<=49911||49913<=p&&p<=49939||49941<=p&&p<=49967||49969<=p&&p<=49995||49997<=p&&p<=50023||50025<=p&&p<=50051||50053<=p&&p<=50079||50081<=p&&p<=50107||50109<=p&&p<=50135||50137<=p&&p<=50163||50165<=p&&p<=50191||50193<=p&&p<=50219||50221<=p&&p<=50247||50249<=p&&p<=50275||50277<=p&&p<=50303||50305<=p&&p<=50331||50333<=p&&p<=50359||50361<=p&&p<=50387||50389<=p&&p<=50415||50417<=p&&p<=50443||50445<=p&&p<=50471||50473<=p&&p<=50499||50501<=p&&p<=50527||50529<=p&&p<=50555||50557<=p&&p<=50583||50585<=p&&p<=50611||50613<=p&&p<=50639||50641<=p&&p<=50667||50669<=p&&p<=50695||50697<=p&&p<=50723||50725<=p&&p<=50751||50753<=p&&p<=50779||50781<=p&&p<=50807||50809<=p&&p<=50835||50837<=p&&p<=50863||50865<=p&&p<=50891||50893<=p&&p<=50919||50921<=p&&p<=50947||50949<=p&&p<=50975||50977<=p&&p<=51003||51005<=p&&p<=51031||51033<=p&&p<=51059||51061<=p&&p<=51087||51089<=p&&p<=51115||51117<=p&&p<=51143||51145<=p&&p<=51171||51173<=p&&p<=51199||51201<=p&&p<=51227||51229<=p&&p<=51255||51257<=p&&p<=51283||51285<=p&&p<=51311||51313<=p&&p<=51339||51341<=p&&p<=51367||51369<=p&&p<=51395||51397<=p&&p<=51423||51425<=p&&p<=51451||51453<=p&&p<=51479||51481<=p&&p<=51507||51509<=p&&p<=51535||51537<=p&&p<=51563||51565<=p&&p<=51591||51593<=p&&p<=51619||51621<=p&&p<=51647||51649<=p&&p<=51675||51677<=p&&p<=51703||51705<=p&&p<=51731||51733<=p&&p<=51759||51761<=p&&p<=51787||51789<=p&&p<=51815||51817<=p&&p<=51843||51845<=p&&p<=51871||51873<=p&&p<=51899||51901<=p&&p<=51927||51929<=p&&p<=51955||51957<=p&&p<=51983||51985<=p&&p<=52011||52013<=p&&p<=52039||52041<=p&&p<=52067||52069<=p&&p<=52095||52097<=p&&p<=52123||52125<=p&&p<=52151||52153<=p&&p<=52179||52181<=p&&p<=52207||52209<=p&&p<=52235||52237<=p&&p<=52263||52265<=p&&p<=52291||52293<=p&&p<=52319||52321<=p&&p<=52347||52349<=p&&p<=52375||52377<=p&&p<=52403||52405<=p&&p<=52431||52433<=p&&p<=52459||52461<=p&&p<=52487||52489<=p&&p<=52515||52517<=p&&p<=52543||52545<=p&&p<=52571||52573<=p&&p<=52599||52601<=p&&p<=52627||52629<=p&&p<=52655||52657<=p&&p<=52683||52685<=p&&p<=52711||52713<=p&&p<=52739||52741<=p&&p<=52767||52769<=p&&p<=52795||52797<=p&&p<=52823||52825<=p&&p<=52851||52853<=p&&p<=52879||52881<=p&&p<=52907||52909<=p&&p<=52935||52937<=p&&p<=52963||52965<=p&&p<=52991||52993<=p&&p<=53019||53021<=p&&p<=53047||53049<=p&&p<=53075||53077<=p&&p<=53103||53105<=p&&p<=53131||53133<=p&&p<=53159||53161<=p&&p<=53187||53189<=p&&p<=53215||53217<=p&&p<=53243||53245<=p&&p<=53271||53273<=p&&p<=53299||53301<=p&&p<=53327||53329<=p&&p<=53355||53357<=p&&p<=53383||53385<=p&&p<=53411||53413<=p&&p<=53439||53441<=p&&p<=53467||53469<=p&&p<=53495||53497<=p&&p<=53523||53525<=p&&p<=53551||53553<=p&&p<=53579||53581<=p&&p<=53607||53609<=p&&p<=53635||53637<=p&&p<=53663||53665<=p&&p<=53691||53693<=p&&p<=53719||53721<=p&&p<=53747||53749<=p&&p<=53775||53777<=p&&p<=53803||53805<=p&&p<=53831||53833<=p&&p<=53859||53861<=p&&p<=53887||53889<=p&&p<=53915||53917<=p&&p<=53943||53945<=p&&p<=53971||53973<=p&&p<=53999||54001<=p&&p<=54027||54029<=p&&p<=54055||54057<=p&&p<=54083||54085<=p&&p<=54111||54113<=p&&p<=54139||54141<=p&&p<=54167||54169<=p&&p<=54195||54197<=p&&p<=54223||54225<=p&&p<=54251||54253<=p&&p<=54279||54281<=p&&p<=54307||54309<=p&&p<=54335||54337<=p&&p<=54363||54365<=p&&p<=54391||54393<=p&&p<=54419||54421<=p&&p<=54447||54449<=p&&p<=54475||54477<=p&&p<=54503||54505<=p&&p<=54531||54533<=p&&p<=54559||54561<=p&&p<=54587||54589<=p&&p<=54615||54617<=p&&p<=54643||54645<=p&&p<=54671||54673<=p&&p<=54699||54701<=p&&p<=54727||54729<=p&&p<=54755||54757<=p&&p<=54783||54785<=p&&p<=54811||54813<=p&&p<=54839||54841<=p&&p<=54867||54869<=p&&p<=54895||54897<=p&&p<=54923||54925<=p&&p<=54951||54953<=p&&p<=54979||54981<=p&&p<=55007||55009<=p&&p<=55035||55037<=p&&p<=55063||55065<=p&&p<=55091||55093<=p&&p<=55119||55121<=p&&p<=55147||55149<=p&&p<=55175||55177<=p&&p<=55203?f:p==9757||p==9977||9994<=p&&p<=9997||p==127877||127938<=p&&p<=127940||p==127943||127946<=p&&p<=127948||128066<=p&&p<=128067||128070<=p&&p<=128080||p==128110||128112<=p&&p<=128120||p==128124||128129<=p&&p<=128131||128133<=p&&p<=128135||p==128170||128372<=p&&p<=128373||p==128378||p==128400||128405<=p&&p<=128406||128581<=p&&p<=128583||128587<=p&&p<=128591||p==128675||128692<=p&&p<=128694||p==128704||p==128716||129304<=p&&p<=129308||129310<=p&&p<=129311||p==129318||129328<=p&&p<=129337||129341<=p&&p<=129342||129489<=p&&p<=129501?g:127995<=p&&p<=127999?m:p==8205?_:p==9792||p==9794||9877<=p&&p<=9878||p==9992||p==10084||p==127752||p==127806||p==127859||p==127891||p==127908||p==127912||p==127979||p==127981||p==128139||128187<=p&&p<=128188||p==128295||p==128300||p==128488||p==128640||p==128658?y:128102<=p&&p<=128105?C:h}return this}typeof rk<"u"&&rk.exports&&(rk.exports=qYe)});var hZ=Rd((exports,module)=>{/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,A){s[a]=function(m){if(u)if(u=!1,m)A(m);else{for(var _=new Array(arguments.length-1),y=0;y<_.length;)_[y++]=arguments[y];h.apply(null,_)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,A(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var A=null,g=[],m=0,_=0,y;f<h;){var C=u[f++];switch(_){case 0:g[m++]=o[C>>2],y=(C&3)<<4,_=1;break;case 1:g[m++]=o[y|C>>4],y=(C&15)<<2,_=2;break;case 2:g[m++]=o[y|C>>6],g[m++]=o[C&63],_=0;break}m>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,g)),m=0)}return _&&(g[m++]=o[y],g[m++]=61,_===1&&(g[m++]=61)),A?(m&&A.push(String.fromCharCode.apply(String,g.slice(0,m))),A.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var A=h,g=0,m,_=0;_<u.length;){var y=u.charCodeAt(_++);if(y===61&&g>1)break;if((y=r[y])===undefined)throw Error(a);switch(g){case 0:m=y,g=1;break;case 1:f[h++]=m<<2|(y&48)>>4,m=y,g=2;break;case 2:f[h++]=(m&15)<<4|(y&60)>>2,m=y,g=3;break;case 3:f[h++]=(m&3)<<6|y,g=0;break}}if(g===1)throw Error(a);return h-A},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3]}function g(y,C,E){u[0]=y,C[E]=f[3],C[E+1]=f[2],C[E+2]=f[1],C[E+3]=f[0]}c.writeFloatLE=h?A:g,c.writeFloatBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],u[0]}function _(y,C){return f[3]=y[C],f[2]=y[C+1],f[1]=y[C+2],f[0]=y[C+3],u[0]}c.readFloatLE=h?m:_,c.readFloatBE=h?_:m}():function(){function u(h,A,g,m){var _=A<0?1:0;if(_&&(A=-A),A===0)h(1/A>0?0:2147483648,g,m);else if(isNaN(A))h(2143289344,g,m);else if(A>34028234663852886e22)h((_<<31|2139095040)>>>0,g,m);else if(A<11754943508222875e-54)h((_<<31|Math.round(A/1401298464324817e-60))>>>0,g,m);else{var y=Math.floor(Math.log(A)/Math.LN2),C=Math.round(A*Math.pow(2,-y)*8388608)&8388607;h((_<<31|y+127<<23|C)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,A,g){var m=h(A,g),_=(m>>31)*2+1,y=m>>>23&255,C=m&8388607;return y===255?C?NaN:_*(1/0):y===0?_*1401298464324817e-60*C:_*Math.pow(2,y-150)*(C+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3],C[E+4]=f[4],C[E+5]=f[5],C[E+6]=f[6],C[E+7]=f[7]}function g(y,C,E){u[0]=y,C[E]=f[7],C[E+1]=f[6],C[E+2]=f[5],C[E+3]=f[4],C[E+4]=f[3],C[E+5]=f[2],C[E+6]=f[1],C[E+7]=f[0]}c.writeDoubleLE=h?A:g,c.writeDoubleBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],f[4]=y[C+4],f[5]=y[C+5],f[6]=y[C+6],f[7]=y[C+7],u[0]}function _(y,C){return f[7]=y[C],f[6]=y[C+1],f[5]=y[C+2],f[4]=y[C+3],f[3]=y[C+4],f[2]=y[C+5],f[1]=y[C+6],f[0]=y[C+7],u[0]}c.readDoubleLE=h?m:_,c.readDoubleBE=h?_:m}():function(){function u(h,A,g,m,_,y){var C=m<0?1:0;if(C&&(m=-m),m===0)h(0,_,y+A),h(1/m>0?0:2147483648,_,y+g);else if(isNaN(m))h(0,_,y+A),h(2146959360,_,y+g);else if(m>17976931348623157e292)h(0,_,y+A),h((C<<31|2146435072)>>>0,_,y+g);else{var E;if(m<22250738585072014e-324)E=m/5e-324,h(E>>>0,_,y+A),h((C<<31|E/4294967296)>>>0,_,y+g);else{var I=Math.floor(Math.log(m)/Math.LN2);I===1024&&(I=1023),E=m*Math.pow(2,-I),h(E*4503599627370496>>>0,_,y+A),h((C<<31|I+1023<<20|E*1048576&1048575)>>>0,_,y+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,A,g,m,_){var y=h(m,_+A),C=h(m,_+g),E=(C>>31)*2+1,I=C>>>20&2047,b=4294967296*(C&1048575)+y;return I===2047?b?NaN:E*(1/0):I===0?E*5e-324*b:E*Math.pow(2,I-1075)*(b+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(A){if(A<1||A>c)return o(A);f+A>a&&(u=o(a),f=0);var g=r.call(u,f,f+=A);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,A;s<a;)A=r[s++],A<128?f[h++]=A:A>191&&A<224?f[h++]=(A&31)<<6|r[s++]&63:A>239&&A<365?(A=((A&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(A>>10),f[h++]=56320+(A&1023)):f[h++]=(A&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,_){return RangeError("index out of range: "+m.pos+" + "+(_||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(_){if(_ instanceof Uint8Array||Array.isArray(_))return new c(_);throw Error("illegal buffer")}:function(_){if(Array.isArray(_))return new c(_);throw Error("illegal buffer")},f=function(){return i.Buffer?function(y){return(c.create=function(E){return i.Buffer.isBuffer(E)?new o(E):u(E)})(y)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var _=4294967295;return function(){if(_=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(_=(_|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return _;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return _}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var _=this.uint32();return _>>>1^-(_&1)|0};function h(){var m=new r(0,0),_=0;if(this.len-this.pos>4){for(;_<4;++_)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;_=0}else{for(;_<3;++_){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<_*7)>>>0,m}if(this.len-this.pos>4){for(;_<5;++_)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;_<5;++_){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function A(m,_){return(m[_-4]|m[_-3]<<8|m[_-2]<<16|m[_-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(A(this.buf,this.pos+=4),A(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var _=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,_},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var _=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,_},c.prototype.bytes=function(){var _=this.uint32(),y=this.pos,C=this.pos+_;if(C>this.len)throw a(this,_);if(this.pos+=_,Array.isArray(this.buf))return this.buf.slice(y,C);if(y===C){var E=i.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,y,C)},c.prototype.string=function(){var _=this.bytes();return s.read(_,0,_.length)},c.prototype.skip=function(_){if(typeof _=="number"){if(this.pos+_>this.len)throw a(this,_);this.pos+=_}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var _=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[_](!1)},uint64:function(){return h.call(this)[_](!0)},sint64:function(){return h.call(this).zzDecode()[_](!1)},fixed64:function(){return g.call(this)[_](!0)},sfixed64:function(){return g.call(this)[_](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(_){return h.emit("error",_,s),f(_)}return h.emit("data",m,s),f(null,m)})}catch(A){return h.emit("error",A,s),setTimeout(function(){f(A)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,A=(u-h)/4294967296>>>0;return f&&(A=~A>>>0,h=~h>>>0,++h>4294967295&&(h=0,++A>4294967295&&(A=0))),new o(h,A)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(I,b,S){this.fn=I,this.len=b,this.next=undefined,this.val=S}function u(){}function f(I){this.head=I.head,this.tail=I.tail,this.len=I.len,this.next=I.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var A=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=A(),h.alloc=function(b){return new i.Array(b)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(b,S,B){return this.tail=this.tail.next=new c(b,S,B),this.len+=S,this};function g(I,b,S){b[S]=I&255}function m(I,b,S){for(;I>127;)b[S++]=I&127|128,I>>>=7;b[S]=I}function _(I,b){this.len=I,this.next=undefined,this.val=b}_.prototype=Object.create(c.prototype),_.prototype.fn=m,h.prototype.uint32=function(b){return this.len+=(this.tail=this.tail.next=new _((b=b>>>0)<128?1:b<16384?2:b<2097152?3:b<268435456?4:5,b)).len,this},h.prototype.int32=function(b){return b<0?this._push(y,10,r.fromNumber(b)):this.uint32(b)},h.prototype.sint32=function(b){return this.uint32((b<<1^b>>31)>>>0)};function y(I,b,S){for(;I.hi;)b[S++]=I.lo&127|128,I.lo=(I.lo>>>7|I.hi<<25)>>>0,I.hi>>>=7;for(;I.lo>127;)b[S++]=I.lo&127|128,I.lo=I.lo>>>7;b[S++]=I.lo}h.prototype.uint64=function(b){var S=r.from(b);return this._push(y,S.length(),S)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(b){var S=r.from(b).zzEncode();return this._push(y,S.length(),S)},h.prototype.bool=function(b){return this._push(g,1,b?1:0)};function C(I,b,S){b[S]=I&255,b[S+1]=I>>>8&255,b[S+2]=I>>>16&255,b[S+3]=I>>>24}h.prototype.fixed32=function(b){return this._push(C,4,b>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(b){var S=r.from(b);return this._push(C,4,S.lo)._push(C,4,S.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(b){return this._push(i.float.writeFloatLE,4,b)},h.prototype.double=function(b){return this._push(i.float.writeDoubleLE,8,b)};var E=i.Array.prototype.set?function(b,S,B){S.set(b,B)}:function(b,S,B){for(var v=0;v<b.length;++v)S[B+v]=b[v]};h.prototype.bytes=function(b){var S=b.length>>>0;if(!S)return this._push(g,1,0);if(i.isString(b)){var B=h.alloc(S=s.length(b));s.decode(b,B,0),b=B}return this.uint32(S)._push(E,S,b)},h.prototype.string=function(b){var S=a.length(b);return S?this.uint32(S)._push(a.write,S,b):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var b=this.head,S=this.tail,B=this.len;return this.reset().uint32(B),B&&(this.tail.next=b.next,this.tail=S,this.len+=B),this},h.prototype.finish=function(){for(var b=this.head.next,S=this.constructor.alloc(this.len),B=0;b;)b.fn(b.val,S,B),B+=b.len,b=b.next;return S},h._configure=function(I){o=I,h.create=A(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var aTe=Rd((n4i,aH)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var A=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,A),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,_=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),y={width:g.width,height:g.height,pixelData:_.resultPixels,minValue:_.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return _.resultMask&&(y.maskData=_.resultMask),h.returnEncodedMask&&g.mask&&(y.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(y.fileInfo=s(g),h.computeUsedBitDepths&&(y.fileInfo.bitDepths=a(g))),y};var r=function(f,h,A,g,m){var _=0,y=f.pixels.numBlocksX,C=f.pixels.numBlocksY,E=Math.floor(f.width/y),I=Math.floor(f.height/C),b=2*f.maxZError,S=Number.MAX_VALUE,B;A=A||(f.mask?f.mask.bitset:null);var v,P;v=new h(f.width*f.height),m&&A&&(P=new Uint8Array(f.width*f.height));for(var N=new Float32Array(E*I),L,p,x=0;x<=C;x++){var T=x!==C?I:f.height%C;if(T!==0)for(var w=0;w<=y;w++){var M=w!==y?E:f.width%y;if(M!==0){var O=x*f.width*I+w*E,U=f.width-M,Q=f.pixels.blocks[_],z,F,H;Q.encoding<2?(Q.encoding===0?z=Q.rawData:(u(Q.stuffedData,Q.bitsPerPixel,Q.numValidPixels,Q.offset,b,N,f.pixels.maxValue),z=N),F=0):Q.encoding===2?H=0:H=Q.offset;var W;if(A)for(p=0;p<T;p++){for(O&7&&(W=A[O>>3],W<<=O&7),L=0;L<M;L++)O&7||(W=A[O>>3]),W&128?(P&&(P[O]=1),B=Q.encoding<2?z[F++]:H,S=S>B?B:S,v[O++]=B):(P&&(P[O]=0),v[O++]=g),W<<=1;O+=U}else if(Q.encoding<2)for(p=0;p<T;p++){for(L=0;L<M;L++)B=z[F++],S=S>B?B:S,v[O++]=B;O+=U}else for(S=S>H?H:S,p=0;p<T;p++){for(L=0;L<M;L++)v[O++]=H;O+=U}if(Q.encoding===1&&F!==Q.numValidPixels)throw"Block and Mask do not match";_++}}}return{resultPixels:v,resultMask:P,minValue:S}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,A={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?A.float32=!0:m.encoding===1?A[m.bitsPerPixel]=!0:A[0]=!0}return Object.keys(A)},c=function(f,h,A){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var _=new DataView(f,h,24);if(g.fileVersion=_.getInt32(0,!0),g.imageType=_.getInt32(4,!0),g.height=_.getUint32(8,!0),g.width=_.getUint32(12,!0),g.maxZError=_.getFloat64(16,!0),h+=24,!A)if(_=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=_.getUint32(0,!0),g.mask.numBlocksX=_.getUint32(4,!0),g.mask.numBytes=_.getUint32(8,!0),g.mask.maxValue=_.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var y=new Uint8Array(Math.ceil(g.width*g.height/8));_=new DataView(f,h,g.mask.numBytes);var C=_.getInt16(0,!0),E=2,I=0;do{if(C>0)for(;C--;)y[I++]=_.getUint8(E++);else{var b=_.getUint8(E++);for(C=-C;C--;)y[I++]=b}C=_.getInt16(E,!0),E+=2}while(E<g.mask.numBytes);if(C!==-32768||I<y.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=y,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));_=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=_.getUint32(0,!0),g.pixels.numBlocksX=_.getUint32(4,!0),g.pixels.numBytes=_.getUint32(8,!0),g.pixels.maxValue=_.getFloat32(12,!0),h+=16;var S=g.pixels.numBlocksX,B=g.pixels.numBlocksY,v=S+(g.width%S>0?1:0),P=B+(g.height%B>0?1:0);g.pixels.blocks=new Array(v*P);for(var N=0,L=0;L<P;L++)for(var p=0;p<v;p++){var x=0,T=f.byteLength-h;_=new DataView(f,h,Math.min(10,T));var w={};g.pixels.blocks[N++]=w;var M=_.getUint8(0);if(x++,w.encoding=M&63,w.encoding>3)throw"Invalid block encoding ("+w.encoding+")";if(w.encoding===2){h++;continue}if(M!==0&&M!==2){if(M>>=6,w.offsetType=M,M===2)w.offset=_.getInt8(1),x++;else if(M===1)w.offset=_.getInt16(1,!0),x+=2;else if(M===0)w.offset=_.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(w.encoding===1)if(M=_.getUint8(x),x++,w.bitsPerPixel=M&63,M>>=6,w.numValidPixelsType=M,M===2)w.numValidPixels=_.getUint8(x),x++;else if(M===1)w.numValidPixels=_.getUint16(x,!0),x+=2;else if(M===0)w.numValidPixels=_.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(h+=x,w.encoding!==3){var O,U;if(w.encoding===0){var Q=(g.pixels.numBytes-1)/4;if(Q!==Math.floor(Q))throw"uncompressed block has invalid length";O=new ArrayBuffer(Q*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,Q*4));var z=new Float32Array(O);w.rawData=z,h+=Q*4}else if(w.encoding===1){var F=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),H=Math.ceil(F/4);O=new ArrayBuffer(H*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,F)),w.stuffedData=new Uint32Array(O),h+=F}}}return g.eofOffset=h,g},u=function(f,h,A,g,m,_,y){var C=(1<<h)-1,E=0,I,b=0,S,B,v=Math.ceil((y-g)/m),P=f.length*4-Math.ceil(h*A/8);for(f[f.length-1]<<=8*P,I=0;I<A;I++){if(b===0&&(B=f[E++],b=32),b>=h)S=B>>>b-h&C,b-=h;else{var N=h-b;S=(B&C)<<N&C,B=f[E++],b=32-N,S+=B>>>b}_[I]=S<v?g+S*m:y}return _};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b,S,B,v,P=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*P,A)for(E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=A[b];else for(v=Math.ceil((_-g)/m),E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=b<v?g+b*m:_},unstuffLUT:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b,S=[],B=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*B;var v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(b=c[_++],E=32),E>=u?(I=b>>>E-u&m,E-=u):(C=u-E,I=(b&m)<<C&m,b=c[_++],E=32-C,I+=b>>>E),S[y]=I<v?h+I*A:g;return S.unshift(h),S},unstuff2:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b=0,S,B,v;if(A)for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=A[S];else{var P=Math.ceil((_-g)/m);for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=S<P?g+S*m:_}return u},unstuffLUT2:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b=0,S,B=[],v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(S=c[_++],E=32,b=0),E>=u?(I=S>>>b&m,E-=u,b+=u):(C=u-E,I=S>>>b&m,S=c[_++],E=32-C,I|=(S&(1<<C)-1)<<u-C,b=C),B[y]=I<v?h+I*A:g;return B.unshift(h),B},originalUnstuff:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y,C,E,I=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*I,m=0;m<h;m++)_===0&&(C=c[g++],_=32),_>=f?(y=C>>>_-f&A,_-=f):(E=f-_,y=(C&A)<<E&A,C=c[g++],_=32-E,y+=C>>>_),u[m]=y;return u},originalUnstuff2:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y=0,C,E,I;for(m=0;m<h;m++)_===0&&(E=c[g++],_=32,y=0),_>=f?(C=E>>>y&A,_-=f,y+=f):(I=f-_,C=E>>>y&A,E=c[g++],_=32-I,C|=(E&(1<<I)-1)<<f-I,y=I),u[m]=C;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,A=Math.floor(h/2),g=0;A;){var m=A>=359?359:A;A-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),A={};if(A.fileIdentifierString=String.fromCharCode.apply(null,h),A.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+A.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);A.fileVersion=m,f+=4,m>=3&&(A.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),A.height=g.getUint32(0,!0),A.width=g.getUint32(4,!0),f+=8,m>=4?(A.numDims=g.getUint32(8,!0),f+=4):A.numDims=1,g=new DataView(c,f,40),A.numValidPixel=g.getUint32(0,!0),A.microBlockSize=g.getInt32(4,!0),A.blobSize=g.getInt32(8,!0),A.imageType=g.getInt32(12,!0),A.maxZError=g.getFloat64(16,!0),A.zMin=g.getFloat64(24,!0),A.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=A,u.ptr=f;var _,y;if(m>=3&&(y=m>=4?52:48,_=this.computeChecksumFletcher32(new Uint8Array(c,f-y,A.blobSize-14)),_!==A.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),A=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,A),m=this.readSubArray(c,u.ptr+A,h,A);u.ptr+=2*A;var _,y=!0;for(_=0;_<f.numDims;_++)if(g[_]!==m[_]){y=!1;break}return f.minValues=g,f.maxValues=m,y},readSubArray:function(c,u,f,h){var A;if(f===Uint8Array)A=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),A=new f(g)}return A},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,A=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),_={};if(_.numBytes=m.getUint32(0,!0),f+=4,(g===0||A===g)&&_.numBytes!==0)throw"invalid mask";var y,C;if(g===0)y=new Uint8Array(Math.ceil(A/8)),_.bitset=y,C=new Uint8Array(A),u.pixels.resultMask=C,f+=_.numBytes;else if(_.numBytes>0){y=new Uint8Array(Math.ceil(A/8)),m=new DataView(c,f,_.numBytes);var E=m.getInt16(0,!0),I=2,b=0,S=0;do{if(E>0)for(;E--;)y[b++]=m.getUint8(I++);else for(S=m.getUint8(I++),E=-E;E--;)y[b++]=S;E=m.getInt16(I,!0),I+=2}while(I<_.numBytes);if(E!==-32768||b<y.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(A);var B=0,v=0;for(v=0;v<A;v++)v&7?(B=y[v>>3],B<<=v&7):B=y[v>>3],B&128&&(C[v]=1);u.pixels.resultMask=C,_.bitset=y,f+=_.numBytes}return u.ptr=f,u.mask=_,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,A=u.headerInfo,g=A.numDims,m=A.width*A.height,_=A.imageType,y=A.numValidPixel*r.getDataTypeSize(_)*g,C,E=u.pixels.resultMask;if(f===Uint8Array)C=new Uint8Array(c,h,y);else{var I=new ArrayBuffer(y),b=new Uint8Array(I);b.set(new Uint8Array(c,h,y)),C=new f(I)}if(C.length===m*g)u.pixels.resultPixels=C;else{u.pixels.resultPixels=new f(m*g);var S=0,B=0,v=0,P=0;if(g>1)for(v=0;v<g;v++)for(P=v*m,B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[P+B]=C[S++]);else for(B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[B]=C[S++])}return h+=y,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var A=h.getInt32(0,!0);if(A<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),_=h.getInt32(12,!0);if(m>=_)return!1;var y=new Uint32Array(_-m);r.decodeBits(c,u,y);var C=[],E,I,b,S;for(E=m;E<_;E++)I=E-(E<g?0:g),C[I]={first:y[E-m],second:null};var B=c.byteLength-u.ptr,v=Math.ceil(B/4),P=new ArrayBuffer(v*4),N=new Uint8Array(P);N.set(new Uint8Array(c,u.ptr,B));var L=new Uint32Array(P),p=0,x,T=0;for(x=L[0],E=m;E<_;E++)I=E-(E<g?0:g),S=C[I].first,S>0&&(C[I].second=x<<p>>>32-S,32-p>=S?(p+=S,p===32&&(p=0,T++,x=L[T])):(p+=S-32,T++,x=L[T],C[I].second|=x>>>32-p));var w=0,M=0,O=new s;for(E=0;E<C.length;E++)C[E]!==void 0&&(w=Math.max(w,C[E].first));w>=f?M=f:M=w,w>=30&&console.log("WARning, large NUM LUT BITS IS "+w);var U=[],Q,z,F,H,W,Z;for(E=m;E<_;E++)if(I=E-(E<g?0:g),S=C[I].first,S>0)if(Q=[S,I],S<=M)for(z=C[I].second<<M-S,F=1<<M-S,b=0;b<F;b++)U[z|b]=Q;else for(z=C[I].second,Z=O,H=S-1;H>=0;H--)W=z>>>H&1,W?(Z.right||(Z.right=new s),Z=Z.right):(Z.left||(Z.left=new s),Z=Z.left),H===0&&!Z.val&&(Z.val=Q[1]);return{decodeLut:U,numBitsLUTQick:M,numBitsLUT:w,tree:O,stuffedData:L,srcPtr:T,bitPos:p}},readHuffman:function(c,u,f){var h=u.headerInfo,A=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,_=m*g,y=this.readHuffmanTree(c,u),C=y.decodeLut,E=y.tree,I=y.stuffedData,b=y.srcPtr,S=y.bitPos,B=y.numBitsLUTQick,v=y.numBitsLUT,P=u.headerInfo.imageType===0?128:0,N,L,p,x=u.pixels.resultMask,T,w,M,O,U,Q,z,F=0;S>0&&(b++,S=0);var H=I[b],W=u.encodeMode===1,Z=new f(_*A),Y=Z,$;for($=0;$<h.numDims;$++){if(A>1&&(Y=new f(Z.buffer,_*$,_),F=0),u.headerInfo.numValidPixel===m*g)for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0?p+=F:O>0?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}else for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++)if(x[Q]){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0&&x[Q-1]?p+=F:O>0&&x[Q-m]?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}u.ptr=u.ptr+(b+1)*4+(S>0?4:0)}u.pixels.resultPixels=Z},decodeBits:function(c,u,f,h,A){{var g=u.headerInfo,m=g.fileVersion,_=0,y=new DataView(c,u.ptr,5),C=y.getUint8(0);_++;var E=C>>6,I=E===0?4:3-E,b=(C&32)>0,S=C&31,B=0;if(I===1)B=y.getUint8(_),_++;else if(I===2)B=y.getUint16(_,!0),_+=2;else if(I===4)B=y.getUint32(_,!0),_+=4;else throw"Invalid valid pixel count type";var v=2*g.maxZError,P,N,L,p,x,T,w,M,O,U,Q=g.numDims>1?g.maxValues[A]:g.zMax;if(b){for(u.counter.lut++,M=y.getUint8(_),O=S,_++,p=Math.ceil((M-1)*S/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),u.ptr+=_,L.set(new Uint8Array(c,u.ptr,p)),w=new Uint32Array(N),u.ptr+=p,U=0;M-1>>>U;)U++;p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?T=o.unstuffLUT2(w,S,M-1,h,v,Q):T=o.unstuffLUT(w,S,M-1,h,v,Q),m>=3?o.unstuff2(P,f,U,B,T):o.unstuff(P,f,U,B,T)}else u.counter.bitstuffer++,U=S,u.ptr+=_,U>0&&(p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?h==null?o.originalUnstuff2(P,f,U,B):o.unstuff2(P,f,U,B,!1,h,v,Q):h==null?o.originalUnstuff(P,f,U,B):o.unstuff(P,f,U,B,!1,h,v,Q))}},readTiles:function(c,u,f){var h=u.headerInfo,A=h.width,g=h.height,m=h.microBlockSize,_=h.imageType,y=r.getDataTypeSize(_),C=Math.ceil(A/m),E=Math.ceil(g/m);u.pixels.numBlocksY=E,u.pixels.numBlocksX=C,u.pixels.ptr=0;var I=0,b=0,S=0,B=0,v=0,P=0,N=0,L=0,p=0,x=0,T=0,w=0,M=0,O=0,U=0,Q=0,z,F,H,W,Z,Y,$=new f(m*m),X=g%m||m,he=A%m||m,ge,fe,ye=h.numDims,Ie,ve=u.pixels.resultMask,Te=u.pixels.resultPixels;for(S=0;S<E;S++)for(v=S!==E-1?m:X,B=0;B<C;B++)for(P=B!==C-1?m:he,T=S*A*m+B*m,w=A-P,Ie=0;Ie<ye;Ie++){if(ye>1&&(Te=new f(u.pixels.resultPixels.buffer,A*g*Ie*y,A*g)),N=c.byteLength-u.ptr,z=new DataView(c,u.ptr,Math.min(10,N)),F={},Q=0,L=z.getUint8(0),Q++,p=L>>6&255,x=L>>2&15,x!==(B*m>>3&15))throw"integrity issue";if(Y=L&3,Y>3)throw u.ptr+=Q,"Invalid block encoding ("+Y+")";if(Y===2){u.counter.constant++,u.ptr+=Q;continue}else if(Y===0){if(u.counter.uncompressed++,u.ptr+=Q,M=v*P*y,O=c.byteLength-u.ptr,M=M<O?M:O,H=new ArrayBuffer(M%y===0?M:M+y-M%y),W=new Uint8Array(H),W.set(new Uint8Array(c,u.ptr,M)),Z=new f(H),U=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=Z[U++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=Z[U++];T+=w}u.ptr+=U*y}else if(ge=r.getDataTypeUsed(_,p),fe=r.getOnePixel(F,Q,ge,z),Q+=r.getDataTypeSize(ge),Y===3)if(u.ptr+=Q,u.counter.constantoffset++,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=fe),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=fe;T+=w}else if(u.ptr+=Q,r.decodeBits(c,u,$,fe,Ie),Q=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=$[Q++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=$[Q++];T+=w}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,A=h*f,g=0,m=0,_=0,y=c.pixels.resultMask;if(y)if(f>1)for(g=0;g<f;g++)for(_=g*h,m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[_+m]=u);else for(m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<A;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var A=0;switch(f){case 0:A=h.getInt8(u);break;case 1:A=h.getUint8(u);break;case 2:A=h.getInt16(u,!0);break;case 3:A=h.getUint16(u,!0);break;case 4:A=h.getInt32(u,!0);break;case 5:A=h.getUInt32(u,!0);break;case 6:A=h.getFloat32(u,!0);break;case 7:A=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return A}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,A={};if(A.ptr=u.inputOffset||0,A.pixels={},!!r.readHeaderInfo(c,A)){var g=A.headerInfo,m=g.fileVersion,_=r.getDataTypeArray(g.imageType);r.readMask(c,A),g.numValidPixel!==g.width*g.height&&!A.pixels.resultMask&&(A.pixels.resultMask=u.maskData);var y=g.width*g.height;if(A.pixels.resultPixels=new _(y*g.numDims),A.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(A);else if(m>=4&&r.checkMinMaxRanges(c,A))r.constructConstantSurface(A);else{var C=new DataView(c,A.ptr,2),E=C.getUint8(0);if(A.ptr++,E)r.readDataOneSweep(c,A,_);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var I=C.getUint8(1);if(A.ptr++,A.encodeMode=I,I>2||m<4&&I>1)throw"Invalid Huffman flag "+I;I?r.readHuffman(c,A,_):r.readTiles(c,A,_)}else r.readTiles(c,A,_)}A.eofOffset=A.ptr;var b;u.inputOffset?(b=A.headerInfo.blobSize+u.inputOffset-A.ptr,Math.abs(b)>=1&&(A.eofOffset=u.inputOffset+A.headerInfo.blobSize)):(b=A.headerInfo.blobSize-A.ptr,Math.abs(b)>=1&&(A.eofOffset=A.headerInfo.blobSize));var S={width:g.width,height:g.height,pixelData:A.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:A.pixels.resultMask};if(A.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var B=A.pixels.resultMask;for(h=0;h<y;h++)B[h]||(S.pixelData[h]=f);S.noDataValue=f}return A.noDataValue=f,u.returnFileInfo&&(S.fileInfo=r.formatFileInfo(A)),S}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,A=o.byteLength-10,g,m=[],_,y,C={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<A;){var E=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:y,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=E.fileInfo.eofOffset,h===0&&(g=E.encodedMaskData,y=E.maskData,C.width=E.width,C.height=E.height,C.dimCount=E.dimCount||1,C.pixelType=E.pixelType||E.fileInfo.pixelType,C.mask=E.maskData),f>1&&E.fileInfo.mask&&E.fileInfo.mask.numBytes>0&&m.push(E.maskData),h++,C.pixels.push(E.pixelData),C.statistics.push({minValue:E.minValue,maxValue:E.maxValue,noDataValue:E.noDataValue,dimStats:E.dimStats})}var I,b,S;if(f>1&&m.length>1){for(S=C.width*C.height,C.bandMasks=m,y=new Uint8Array(S),y.set(m[0]),I=1;I<m.length;I++)for(_=m[I],b=0;b<S;b++)y[b]=y[b]&_[b];C.maskData=y}return C}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof aH<"u"&&aH.exports?aH.exports=i:this.Lerc=i})()});var xSe=Rd((Who,ISe)=>{ISe.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var TSe=Rd((jho,bSe)=>{var{webm:LDt,mp4:ODt}=xSe(),t$=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,n$=()=>"wakeLock"in navigator,i$=class{constructor(){if(this.enabled=!1,n$()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else t$()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",LDt),this._addSourceToVideo(this.noSleepVideo,"mp4",ODt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return n$()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):t$()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){n$()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):t$()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};bSe.exports=i$});var D5={};D5.EMPTY_OBJECT=Object.freeze({});D5.EMPTY_ARRAY=Object.freeze([]);var V=D5;function KSe(e){return e!=null}var l=KSe;function oC(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(oC.prototype=Object.create(Error.prototype),oC.prototype.constructor=oC);oC.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};oC.throwInstantiationError=function(){throw new oC("This function defines an interface and should not be called directly.")};var me=oC;var ks={};ks.typeOf={};function XSe(e){return`${e} is required, actual value was undefined`}function U0(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}ks.defined=function(e,t){if(!l(t))throw new me(XSe(e))};ks.typeOf.func=function(e,t){if(typeof t!="function")throw new me(U0(typeof t,"function",e))};ks.typeOf.string=function(e,t){if(typeof t!="string")throw new me(U0(typeof t,"string",e))};ks.typeOf.number=function(e,t){if(typeof t!="number")throw new me(U0(typeof t,"number",e))};ks.typeOf.number.lessThan=function(e,t,n){if(ks.typeOf.number(e,t),t>=n)throw new me(`Expected ${e} to be less than ${n}, actual value was ${t}`)};ks.typeOf.number.lessThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t>n)throw new me(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThan=function(e,t,n){if(ks.typeOf.number(e,t),t<=n)throw new me(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t<n)throw new me(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};ks.typeOf.object=function(e,t){if(typeof t!="object")throw new me(U0(typeof t,"object",e))};ks.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new me(U0(typeof t,"boolean",e))};ks.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new me(U0(typeof t,"bigint",e))};ks.typeOf.number.equals=function(e,t,n,i){if(ks.typeOf.number(e,n),ks.typeOf.number(t,i),n!==i)throw new me(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var Mo=ks;function QS(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(QS.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});QS.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};QS.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function JSe(e,t){return t-e}QS.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(JSe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var _e=QS;function fg(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new _e,this.setValue(e)}Object.defineProperties(fg.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});fg.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};fg.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};fg.prototype.equals=function(e){return this===e||e instanceof fg&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};fg.prototype.valueOf=function(){return this._value};fg.prototype.toString=function(){return String(this._value)};var ci=fg;function ZSe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function $Se(e){return new ci(e)}function ewe(e,t,n){return ZSe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,t??!1,n??$Se)}var de=ewe;function kS(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(kS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),image:de("image"),scale:de("scale"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),color:de("color"),rotation:de("rotation"),alignedAxis:de("alignedAxis"),sizeInMeters:de("sizeInMeters"),width:de("width"),height:de("height"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),imageSubRegion:de("imageSubRegion"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});kS.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new kS(this)};kS.prototype.merge=function(e){this.show=this._show??e.show,this.image=this._image??e.image,this.scale=this._scale??e.scale,this.pixelOffset=this._pixelOffset??e.pixelOffset,this.eyeOffset=this._eyeOffset??e.eyeOffset,this.horizontalOrigin=this._horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this._verticalOrigin??e.verticalOrigin,this.heightReference=this._heightReference??e.heightReference,this.color=this._color??e.color,this.rotation=this._rotation??e.rotation,this.alignedAxis=this._alignedAxis??e.alignedAxis,this.sizeInMeters=this._sizeInMeters??e.sizeInMeters,this.width=this._width??e.width,this.height=this._height??e.height,this.scaleByDistance=this._scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.imageSubRegion=this._imageSubRegion??e.imageSubRegion,this.distanceDisplayCondition=this._distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this._disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var jc=kS;function rC(){this._array=[],this._hash={}}Object.defineProperties(rC.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});rC.prototype.contains=function(e){return l(this._hash[e])};rC.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};rC.prototype.get=function(e){return this._hash[e]};rC.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};rC.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var Pt=rC;var v5=Es(CR(),1);var ft={};ft.EPSILON1=.1;ft.EPSILON2=.01;ft.EPSILON3=.001;ft.EPSILON4=1e-4;ft.EPSILON5=1e-5;ft.EPSILON6=1e-6;ft.EPSILON7=1e-7;ft.EPSILON8=1e-8;ft.EPSILON9=1e-9;ft.EPSILON10=1e-10;ft.EPSILON11=1e-11;ft.EPSILON12=1e-12;ft.EPSILON13=1e-13;ft.EPSILON14=1e-14;ft.EPSILON15=1e-15;ft.EPSILON16=1e-16;ft.EPSILON17=1e-17;ft.EPSILON18=1e-18;ft.EPSILON19=1e-19;ft.EPSILON20=1e-20;ft.EPSILON21=1e-21;ft.GRAVITATIONALPARAMETER=3986004418e5;ft.SOLAR_RADIUS=6955e5;ft.LUNAR_RADIUS=1737400;ft.SIXTY_FOUR_KILOBYTES=64*1024;ft.FOUR_GIGABYTES=4*1024*1024*1024;ft.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ft.signNotZero=function(e){return e<0?-1:1};ft.toSNorm=function(e,t){return t=t??255,Math.round((ft.clamp(e,-1,1)*.5+.5)*t)};ft.fromSNorm=function(e,t){return t=t??255,ft.clamp(e,0,t)/t*2-1};ft.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ft.clamp((e-t)/n,0,1)};ft.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ft.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ft.lerp=function(e,t,n){return(1-n)*e+n*t};ft.PI=Math.PI;ft.ONE_OVER_PI=1/Math.PI;ft.PI_OVER_TWO=Math.PI/2;ft.PI_OVER_THREE=Math.PI/3;ft.PI_OVER_FOUR=Math.PI/4;ft.PI_OVER_SIX=Math.PI/6;ft.THREE_PI_OVER_TWO=3*Math.PI/2;ft.TWO_PI=2*Math.PI;ft.ONE_OVER_TWO_PI=1/(2*Math.PI);ft.RADIANS_PER_DEGREE=Math.PI/180;ft.DEGREES_PER_RADIAN=180/Math.PI;ft.RADIANS_PER_ARCSECOND=ft.RADIANS_PER_DEGREE/3600;ft.toRadians=function(e){return e*ft.RADIANS_PER_DEGREE};ft.toDegrees=function(e){return e*ft.DEGREES_PER_RADIAN};ft.convertLongitudeRange=function(e){let t=ft.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ft.clampToLatitudeRange=function(e){return ft.clamp(e,-1*ft.PI_OVER_TWO,ft.PI_OVER_TWO)};ft.negativePiToPi=function(e){return e>=-ft.PI&&e<=ft.PI?e:ft.zeroToTwoPi(e+ft.PI)-ft.PI};ft.zeroToTwoPi=function(e){if(e>=0&&e<=ft.TWO_PI)return e;let t=ft.mod(e,ft.TWO_PI);return Math.abs(t)<ft.EPSILON14&&Math.abs(e)>ft.EPSILON14?ft.TWO_PI:t};ft.mod=function(e,t){return ft.sign(e)===ft.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};ft.equalsEpsilon=function(e,t,n,i){n=n??0,i=i??n;let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};ft.lessThan=function(e,t,n){return e-t<-n};ft.lessThanOrEquals=function(e,t,n){return e-t<n};ft.greaterThan=function(e,t,n){return e-t>n};ft.greaterThanOrEquals=function(e,t,n){return e-t>-n};var ER=[1];ft.factorial=function(e){let t=ER.length;if(e>=t){let n=ER[t-1];for(let i=t;i<=e;i++){let o=n*i;ER.push(o),n=o}}return ER[e]};ft.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ft.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ft.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ft.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ft.clamp=function(e,t,n){return e<t?t:e>n?n:e};var d$=new v5.default;ft.setRandomNumberSeed=function(e){d$=new v5.default(e)};ft.nextRandomNumber=function(){return d$.random()};ft.randomBetween=function(e,t){return ft.nextRandomNumber()*(t-e)+e};ft.acosClamped=function(e){return Math.acos(ft.clamp(e,-1,1))};ft.asinClamped=function(e){return Math.asin(ft.clamp(e,-1,1))};ft.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ft.logBase=function(e,t){return Math.log(e)/Math.log(t)};ft.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ft.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ft.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ft.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ft.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ft.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ft.PI_OVER_TWO-i:i,i=e<0?ft.PI-i:i,i=t<0?-i:i,i};var D=ft;function Vt(e,t){this.x=e??0,this.y=t??0}Vt.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Vt(e,t)};Vt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Vt(e.x,e.y)};Vt.fromCartesian3=Vt.clone;Vt.fromCartesian4=Vt.clone;Vt.packedLength=2;Vt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Vt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Vt),n.x=e[t++],n.y=e[t],n};Vt.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Vt.pack(e[o],t,o*2);return t};Vt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Vt.unpack(e,i,t[o])}return t};Vt.fromArray=Vt.unpack;Vt.maximumComponent=function(e){return Math.max(e.x,e.y)};Vt.minimumComponent=function(e){return Math.min(e.x,e.y)};Vt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Vt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Vt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Vt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Vt.magnitude=function(e){return Math.sqrt(Vt.magnitudeSquared(e))};var IR=new Vt;Vt.distance=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitude(IR)};Vt.distanceSquared=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitudeSquared(IR)};Vt.normalize=function(e,t){let n=Vt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Vt.dot=function(e,t){return e.x*t.x+e.y*t.y};Vt.cross=function(e,t){return e.x*t.y-e.y*t.x};Vt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Vt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Vt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Vt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Vt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Vt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Vt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Vt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var h$=new Vt;Vt.lerp=function(e,t,n,i){return Vt.multiplyByScalar(t,n,h$),i=Vt.multiplyByScalar(e,1-n,i),Vt.add(h$,i,i)};var m$=new Vt,A$=new Vt;Vt.angleBetween=function(e,t){return Vt.normalize(e,m$),Vt.normalize(t,A$),D.acosClamped(Vt.dot(m$,A$))};var twe=new Vt;Vt.mostOrthogonalAxis=function(e,t){let n=Vt.normalize(e,twe);return Vt.abs(n,n),n.x<=n.y?t=Vt.clone(Vt.UNIT_X,t):t=Vt.clone(Vt.UNIT_Y,t),t};Vt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Vt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Vt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)};Vt.ZERO=Object.freeze(new Vt(0,0));Vt.ONE=Object.freeze(new Vt(1,1));Vt.UNIT_X=Object.freeze(new Vt(1,0));Vt.UNIT_Y=Object.freeze(new Vt(0,1));Vt.prototype.clone=function(e){return Vt.clone(this,e)};Vt.prototype.equals=function(e){return Vt.equals(this,e)};Vt.prototype.equalsEpsilon=function(e,t,n){return Vt.equalsEpsilon(this,e,t,n)};Vt.prototype.toString=function(){return`(${this.x}, ${this.y})`};var k=Vt;function ot(e,t,n){this.x=e??0,this.y=t??0,this.z=n??0}ot.fromSpherical=function(e,t){l(t)||(t=new ot);let n=e.clock,i=e.cone,o=e.magnitude??1,r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};ot.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new ot(e,t,n)};ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new ot(e.x,e.y,e.z)};ot.fromCartesian4=ot.clone;ot.packedLength=3;ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ot),n.x=e[t++],n.y=e[t++],n.z=e[t],n};ot.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)ot.pack(e[o],t,o*3);return t};ot.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=ot.unpack(e,i,t[o])}return t};ot.fromArray=ot.unpack;ot.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};ot.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};ot.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};ot.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};ot.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};ot.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};ot.magnitude=function(e){return Math.sqrt(ot.magnitudeSquared(e))};var bR=new ot;ot.distance=function(e,t){return ot.subtract(e,t,bR),ot.magnitude(bR)};ot.distanceSquared=function(e,t){return ot.subtract(e,t,bR),ot.magnitudeSquared(bR)};ot.normalize=function(e,t){let n=ot.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};ot.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};ot.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};ot.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};ot.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};ot.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};ot.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};ot.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};ot.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};ot.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var p$=new ot;ot.lerp=function(e,t,n,i){return ot.multiplyByScalar(t,n,p$),i=ot.multiplyByScalar(e,1-n,i),ot.add(p$,i,i)};var xR=new ot,P5=new ot;ot.angleBetween=function(e,t){ot.normalize(e,xR),ot.normalize(t,P5);let n=ot.dot(xR,P5),i=ot.magnitude(ot.cross(xR,P5,xR));return Math.atan2(i,n)};var nwe=new ot;ot.mostOrthogonalAxis=function(e,t){let n=ot.normalize(e,nwe);return ot.abs(n,n),n.x<=n.y?n.x<=n.z?t=ot.clone(ot.UNIT_X,t):t=ot.clone(ot.UNIT_Z,t):n.y<=n.z?t=ot.clone(ot.UNIT_Y,t):t=ot.clone(ot.UNIT_Z,t),t};ot.projectVector=function(e,t,n){let i=ot.dot(e,t)/ot.dot(t,t);return ot.multiplyByScalar(t,i,n)};ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};ot.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};ot.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)};ot.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};ot.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};ot.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e),t=D.toRadians(t),ot.fromRadians(e,t,n,i,o)};var mf=new ot,G0=new ot;ot._ellipsoidRadiiSquared=new ot(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);ot.fromRadians=function(e,t,n,i,o){n=n??0;let r=l(i)?i.radiiSquared:ot._ellipsoidRadiiSquared,s=Math.cos(t);mf.x=s*Math.cos(e),mf.y=s*Math.sin(e),mf.z=Math.sin(t),mf=ot.normalize(mf,mf),ot.multiplyComponents(r,mf,G0);let a=Math.sqrt(ot.dot(mf,G0));return G0=ot.divideByScalar(G0,a,G0),mf=ot.multiplyByScalar(mf,n,mf),l(o)||(o=new ot),ot.add(G0,mf,o)};ot.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromDegrees(r,s,0,t,n[a])}return n};ot.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromRadians(r,s,0,t,n[a])}return n};ot.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromDegrees(r,s,a,t,n[c])}return n};ot.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromRadians(r,s,a,t,n[c])}return n};ot.ZERO=Object.freeze(new ot(0,0,0));ot.ONE=Object.freeze(new ot(1,1,1));ot.UNIT_X=Object.freeze(new ot(1,0,0));ot.UNIT_Y=Object.freeze(new ot(0,1,0));ot.UNIT_Z=Object.freeze(new ot(0,0,1));ot.prototype.clone=function(e){return ot.clone(this,e)};ot.prototype.equals=function(e){return ot.equals(this,e)};ot.prototype.equalsEpsilon=function(e,t,n){return ot.equalsEpsilon(this,e,t,n)};ot.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=ot;var iwe=new d,owe=new d;function rwe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,A=s*s*u*u,g=a*a*f*f,m=h+A+g,_=Math.sqrt(1/m),y=d.multiplyByScalar(e,_,iwe);if(m<i)return isFinite(_)?d.clone(y,o):void 0;let C=n.x,E=n.y,I=n.z,b=owe;b.x=y.x*C*2,b.y=y.y*E*2,b.z=y.z*I*2;let S=(1-_)*d.magnitude(e)/(.5*d.magnitude(b)),B=0,v,P,N,L,p,x,T,w,M,O,U;do{S-=B,N=1/(1+S*C),L=1/(1+S*E),p=1/(1+S*I),x=N*N,T=L*L,w=p*p,M=x*N,O=T*L,U=w*p,v=h*x+A*T+g*w-1,P=h*M*C+A*O*E+g*U*I;let Q=-2*P;B=v/Q}while(Math.abs(v)>D.EPSILON12);return l(o)?(o.x=r*N,o.y=s*L,o.z=a*p,o):new d(r*N,s*L,a*p)}var z0=rwe;function Yo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}Yo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Yo(e,t,n)};Yo.fromDegrees=function(e,t,n,i){return e=D.toRadians(e),t=D.toRadians(t),Yo.fromRadians(e,t,n,i)};var swe=new d,awe=new d,cwe=new d;Yo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Yo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Yo._ellipsoidCenterToleranceSquared=D.EPSILON1;Yo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Yo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Yo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Yo._ellipsoidCenterToleranceSquared,s=z0(e,i,o,r,awe);if(!l(s))return;let a=d.multiplyComponents(s,o,swe);a=d.normalize(a,a);let c=d.subtract(e,s,cwe),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=D.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Yo(u,f,h)};Yo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Yo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Yo(e.longitude,e.latitude,e.height)};Yo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Yo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Yo.ZERO=Object.freeze(new Yo(0,0,0));Yo.prototype.clone=function(e){return Yo.clone(this,e)};Yo.prototype.equals=function(e){return Yo.equals(this,e)};Yo.prototype.equalsEpsilon=function(e,t){return Yo.equalsEpsilon(this,e,t)};Yo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var Ae=Yo;function _$(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=D.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Di(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,_$(this,e,t,n)}Object.defineProperties(Di.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Di.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Di(n.x,n.y,n.z)};Di.fromCartesian3=function(e,t){return l(t)||(t=new Di),l(e)&&_$(t,e.x,e.y,e.z),t};Di.WGS84=Object.freeze(new Di(6378137,6378137,6356752314245179e-9));Di.UNIT_SPHERE=Object.freeze(new Di(1,1,1));Di.MOON=Object.freeze(new Di(D.LUNAR_RADIUS,D.LUNAR_RADIUS,D.LUNAR_RADIUS));Di._default=Di.WGS84;Object.defineProperties(Di,{default:{get:function(){return Di._default},set:function(e){Di._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,Ae._ellipsoidOneOverRadii=e.oneOverRadii,Ae._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,Ae._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Di.prototype.clone=function(e){return Di.clone(this,e)};Di.packedLength=d.packedLength;Di.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),t};Di.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t);return Di.fromCartesian3(i,n)};Di.prototype.geocentricSurfaceNormal=d.normalize;Di.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};Di.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,D.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var lwe=new d,uwe=new d;Di.prototype.cartographicToCartesian=function(e,t){let n=lwe,i=uwe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};Di.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var fwe=new d,dwe=new d,hwe=new d;Di.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,dwe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,fwe),o=d.subtract(e,n,hwe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=D.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new Ae(r,s,a)};Di.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};Di.prototype.scaleToGeodeticSurface=function(e,t){return z0(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};Di.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};Di.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};Di.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};Di.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};Di.prototype.toString=function(){return this._radii.toString()};Di.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=t??0;let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var mwe=new d;Di.prototype.getLocalCurvature=function(e,t){l(t)||(t=new k);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,mwe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return k.fromElements(1/i,1/r,t)};var Awe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],pwe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function g$(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*Awe[s];r+=pwe[s]*(n(i+a)+n(i-a))}return r*=o,r}Di.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=D.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return g$(i,o,function(f){let h=Math.cos(f),A=Math.sin(f);return Math.cos(f)*g$(t,n,function(g){let m=Math.cos(g),_=Math.sin(g);return Math.sqrt(u*A*A+c*(a*m*m+s*_*_)*h*h)})})};var te=Di;function TR(e){this._ellipsoid=e??te.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(TR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});TR.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};TR.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Hi=TR;var gwe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},nn=Object.freeze(gwe);function bt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z),a=D.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var SR=new bt;bt.distance=function(e,t){return bt.subtract(e,t,SR),bt.magnitude(SR)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,SR),bt.magnitudeSquared(SR)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var y$=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,y$),i=bt.multiplyByScalar(e,1-n,i),bt.add(y$,i,i)};var _we=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,_we);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)&&D.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var R5=new Float32Array(1),hc=new Uint8Array(R5.buffer),ywe=new Uint32Array([287454020]),Cwe=new Uint8Array(ywe.buffer),C$=Cwe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),R5[0]=e,C$?(t.x=hc[0],t.y=hc[1],t.z=hc[2],t.w=hc[3]):(t.x=hc[3],t.y=hc[2],t.z=hc[1],t.w=hc[0]),t};bt.unpackFloat=function(e){return C$?(hc[0]=e.x,hc[1]=e.y,hc[2]=e.z,hc[3]=e.w):(hc[0]=e.w,hc[1]=e.z,hc[2]=e.y,hc[3]=e.x),R5[0]};var se=bt;function Ewe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var qo=Ewe;function Iwe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var sC=Iwe;function xwe(e){return e%4===0&&e%100!==0||e%400===0}var Yh=xwe;var E$=[31,28,31,30,31,30,31,31,30,31,30,31];function bwe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function _(){Mo.typeOf.number.greaterThanOrEquals("Year",e,1),Mo.typeOf.number.lessThanOrEquals("Year",e,9999),Mo.typeOf.number.greaterThanOrEquals("Month",t,1),Mo.typeOf.number.lessThanOrEquals("Month",t,12),Mo.typeOf.number.greaterThanOrEquals("Day",n,1),Mo.typeOf.number.lessThanOrEquals("Day",n,31),Mo.typeOf.number.greaterThanOrEquals("Hour",i,0),Mo.typeOf.number.lessThanOrEquals("Hour",i,23),Mo.typeOf.number.greaterThanOrEquals("Minute",o,0),Mo.typeOf.number.lessThanOrEquals("Minute",o,59),Mo.typeOf.bool("IsLeapSecond",a),Mo.typeOf.number.greaterThanOrEquals("Second",r,0),Mo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Mo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Mo.typeOf.number.lessThan("Millisecond",s,1e3)}function y(){let C=t===2&&Yh(e)?E$[t-1]+1:E$[t-1];if(n>C)throw new me("Month and Day represents invalid date")}}var dg=bwe;function Twe(e,t){this.julianDate=e,this.offset=t}var so=Twe;var Swe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ri=Object.freeze(Swe);var wwe={UTC:0,TAI:1},oi=Object.freeze(wwe);var x$=new dg,M5=[31,28,31,30,31,30,31,31,30,31,30,31],N5=29;function L5(e,t){return Ft.compare(e.julianDate,t.julianDate)}var V0=new so;function BR(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Ft.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Ft.addSeconds(e,i,e)}function I$(e,t){V0.julianDate=e;let n=Ft.leapSeconds,i=qo(n,V0,L5);if(i<0&&(i=~i),i===0)return Ft.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Ft.addSeconds(e,-n[i-1].offset,t);let o=Ft.secondsDifference(n[i].julianDate,e);if(o===0)return Ft.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Ft.addSeconds(e,-n[--i].offset,t)}function hg(e,t,n){let i=t/ri.SECONDS_PER_DAY|0;return e+=i,t-=ri.SECONDS_PER_DAY*i,t<0&&(e--,t+=ri.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function O5(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*ri.SECONDS_PER_HOUR+o*ri.SECONDS_PER_MINUTE+s*ri.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var Bwe=/^(\d{4})$/,Dwe=/^(\d{4})-(\d{2})$/,vwe=/^(\d{4})-?(\d{3})$/,Pwe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,Rwe=/^(\d{4})-?(\d{2})-?(\d{2})$/,F5=/([Z+\-])?(\d{2})?:?(\d{2})?$/,Mwe=/^(\d{2})(\.\d+)?/.source+F5.source,Nwe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source,Lwe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source;function Ft(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??oi.UTC;let i=e|0;t=t+(e-i)*ri.SECONDS_PER_DAY,hg(i,t,this),n===oi.UTC&&BR(this)}Ft.fromGregorianDate=function(e,t){let n=O5(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromDate=function(e,t){let n=O5(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],A,g;if(n=f.match(Rwe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(Dwe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(Bwe),n!==null)i=+n[1];else{let C;if(n=f.match(vwe),n!==null)i=+n[1],C=+n[2],g=Yh(i);else if(n=f.match(Pwe),n!==null){i=+n[1];let E=+n[2],I=+n[3]||0,b=new Date(Date.UTC(i,0,4));C=E*7+I-b.getUTCDay()-3}A=new Date(Date.UTC(i,0,1)),A.setUTCDate(C),o=A.getUTCMonth()+1,r=A.getUTCDate()}g=Yh(i);let m;if(l(h)){n=h.match(Lwe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(Nwe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(Mwe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let C=n[m],E=+n[m+1],I=+(n[m+2]||0);switch(C){case"+":s=s-E,a=a-I;break;case"-":s=s+E,a=a+I;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let _=c===60;for(_&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(A=g&&o===2?N5:M5[o-1];r>A;)r-=A,o++,o>12&&(o-=12,i++),A=g&&o===2?N5:M5[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),A=g&&o===2?N5:M5[o-1],r+=A;let y=O5(i,o,r,s,a,c,u);return l(t)?(hg(y[0],y[1],t),BR(t)):t=new Ft(y[0],y[1],oi.UTC),_&&Ft.addSeconds(t,1,t),t};Ft.now=function(e){return Ft.fromDate(new Date,e)};var wR=new Ft(0,0,oi.TAI);Ft.toGregorianDate=function(e,t){let n=!1,i=I$(e,wR);l(i)||(Ft.addSeconds(e,-1,wR),i=I$(wR,wR),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,A=100*(a-49)+c+s|0,g=r/ri.SECONDS_PER_HOUR|0,m=r-g*ri.SECONDS_PER_HOUR,_=m/ri.SECONDS_PER_MINUTE|0;m=m-_*ri.SECONDS_PER_MINUTE;let y=m|0,C=(m-y)/ri.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(y+=1),l(t)?(t.year=A,t.month=h,t.day=f,t.hour=g,t.minute=_,t.second=y,t.millisecond=C,t.isLeapSecond=n,t):new dg(A,h,f,g,_,y,C,n)};Ft.toDate=function(e){let t=Ft.toGregorianDate(e,x$),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Ft.toIso8601=function(e,t){let n=Ft.toGregorianDate(e,x$),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Ft.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Ft(e.dayNumber,e.secondsOfDay,oi.TAI)};Ft.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Ft.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Ft.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Ft.secondsDifference(e,t))<=n};Ft.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ri.SECONDS_PER_DAY};Ft.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ri.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Ft.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ri.SECONDS_PER_DAY;return n+i};Ft.computeTaiMinusUtc=function(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Ft.addSeconds=function(e,t,n){return hg(e.dayNumber,e.secondsOfDay+t,n)};Ft.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_MINUTE;return hg(e.dayNumber,i,n)};Ft.addHours=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_HOUR;return hg(e.dayNumber,i,n)};Ft.addDays=function(e,t,n){let i=e.dayNumber+t;return hg(i,e.secondsOfDay,n)};Ft.lessThan=function(e,t){return Ft.compare(e,t)<0};Ft.lessThanOrEquals=function(e,t){return Ft.compare(e,t)<=0};Ft.greaterThan=function(e,t){return Ft.compare(e,t)>0};Ft.greaterThanOrEquals=function(e,t){return Ft.compare(e,t)>=0};Ft.prototype.clone=function(e){return Ft.clone(this,e)};Ft.prototype.equals=function(e){return Ft.equals(this,e)};Ft.prototype.equalsEpsilon=function(e,t){return Ft.equalsEpsilon(this,e,t)};Ft.prototype.toString=function(){return Ft.toIso8601(this)};Ft.leapSeconds=[new so(new Ft(2441317,43210,oi.TAI),10),new so(new Ft(2441499,43211,oi.TAI),11),new so(new Ft(2441683,43212,oi.TAI),12),new so(new Ft(2442048,43213,oi.TAI),13),new so(new Ft(2442413,43214,oi.TAI),14),new so(new Ft(2442778,43215,oi.TAI),15),new so(new Ft(2443144,43216,oi.TAI),16),new so(new Ft(2443509,43217,oi.TAI),17),new so(new Ft(2443874,43218,oi.TAI),18),new so(new Ft(2444239,43219,oi.TAI),19),new so(new Ft(2444786,43220,oi.TAI),20),new so(new Ft(2445151,43221,oi.TAI),21),new so(new Ft(2445516,43222,oi.TAI),22),new so(new Ft(2446247,43223,oi.TAI),23),new so(new Ft(2447161,43224,oi.TAI),24),new so(new Ft(2447892,43225,oi.TAI),25),new so(new Ft(2448257,43226,oi.TAI),26),new so(new Ft(2448804,43227,oi.TAI),27),new so(new Ft(2449169,43228,oi.TAI),28),new so(new Ft(2449534,43229,oi.TAI),29),new so(new Ft(2450083,43230,oi.TAI),30),new so(new Ft(2450630,43231,oi.TAI),31),new so(new Ft(2451179,43232,oi.TAI),32),new so(new Ft(2453736,43233,oi.TAI),33),new so(new Ft(2454832,43234,oi.TAI),34),new so(new Ft(2456109,43235,oi.TAI),35),new so(new Ft(2457204,43236,oi.TAI),36),new so(new Ft(2457754,43237,oi.TAI),37)];var K=Ft;var z$=Es(_u(),1);function Owe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var RR=Owe;function v$(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=v$(o,t)),n[i]=o}return n}var ze=v$;function P$(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=P$(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var wt=P$;function Fwe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var yu=Fwe;var R$=Es(_u(),1);function Q5(e,t){let n;return typeof document<"u"&&(n=document),Q5._implementation(e,t,n)}Q5._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new R$.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var DA=Q5;var M$=Es(_u(),1);function Qwe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new M$.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var MR=Qwe;var N$=Es(_u(),1);function kwe(e){let t=new N$.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var j0=kwe;var L$={};function Uwe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=L$[t];l(i)||(i={},L$[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var qh=Uwe;var Gwe=/^blob:/i;function zwe(e){return Gwe.test(e)}var Y0=zwe;var Kh;function Vwe(e){l(Kh)||(Kh=document.createElement("a")),Kh.href=window.location.href;let t=Kh.host,n=Kh.protocol;return Kh.href=e,Kh.href=Kh.href,n!==Kh.protocol||t!==Kh.host}var aC=Vwe;var Hwe=/^data:/i;function Wwe(e){return Hwe.test(e)}var mg=Wwe;function jwe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var q0=jwe;function Ywe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var K0=Ywe;function qwe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Af=qwe;var Kwe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},hi=Object.freeze(Kwe);var Xwe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Us=Object.freeze(Xwe);function NR(e){e=e??V.EMPTY_OBJECT;let t=e.throttleByServer??!1,n=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=n,this.throttleByServer=t,this.type=e.type??Us.OTHER,this.serverKey=e.serverKey,this.state=hi.UNISSUED,this.deferred=void 0,this.cancelled=!1}NR.prototype.cancel=function(){this.cancelled=!0};NR.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=hi.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new NR(this)};var pr=NR;function Jwe(e){let t={};if(!e)return t;let n=e.split(`\r +`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var LR=Jwe;function O$(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=LR(this.responseHeaders))}O$.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var vA=O$;var FR=Es(_u(),1);function cC(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(cC.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function k5(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}cC.prototype.reserve=function(e){e=e??this._length,this._array.length=e};cC.prototype.heapify=function(e){e=e??0;let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(k5(i,o,e),e=o):r=!1}};cC.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};cC.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)k5(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};cC.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return k5(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var OR=cC;function Zwe(e,t){return e.priority-t.priority}var fo={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},X0=20,mc=new OR({comparator:Zwe});mc.maximumLength=X0;mc.reserve(X0);var Xh=[],PA={},$we=typeof document<"u"?new FR.default(document.location.href):new FR.default,QR=new _e;function tr(){}tr.maximumRequests=50;tr.maximumRequestsPerServer=18;tr.requestsByServer={};tr.throttleRequests=!0;tr.debugShowStatistics=!1;tr.requestCompletedEvent=QR;Object.defineProperties(tr,{statistics:{get:function(){return fo}},priorityHeapLength:{get:function(){return X0},set:function(e){if(e<X0)for(;mc.length>e;){let t=mc.pop();lC(t)}X0=e,mc.maximumLength=e,mc.reserve(e)}}});function F$(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}tr.serverHasOpenSlots=function(e,t){t=t??1;let n=tr.requestsByServer[e]??tr.maximumRequestsPerServer;return PA[e]+t<=n};tr.heapHasOpenSlots=function(e){return mc.length+e<=X0};function Q$(e){return e.state===hi.UNISSUED&&(e.state=hi.ISSUED,e.deferred=yu()),e.deferred.promise}function eBe(e){return function(t){if(e.state===hi.CANCELLED)return;let n=e.deferred;--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(),e.state=hi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function tBe(e){return function(t){e.state!==hi.CANCELLED&&(++fo.numberOfFailedRequests,--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(t),e.state=hi.FAILED,e.deferred.reject(t))}}function k$(e){let t=Q$(e);return e.state=hi.ACTIVE,Xh.push(e),++fo.numberOfActiveRequests,++fo.numberOfActiveRequestsEver,++PA[e.serverKey],e.requestFunction().then(eBe(e)).catch(tBe(e)),t}function lC(e){let t=e.state===hi.ACTIVE;if(e.state=hi.CANCELLED,++fo.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--fo.numberOfActiveRequests,--PA[e.serverKey],++fo.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}tr.update=function(){let e,t,n=0,i=Xh.length;for(e=0;e<i;++e){if(t=Xh[e],t.cancelled&&lC(t),t.state!==hi.ACTIVE){++n;continue}n>0&&(Xh[e-n]=t)}Xh.length-=n;let o=mc.internalArray,r=mc.length;for(e=0;e<r;++e)F$(o[e]);mc.resort();let s=Math.max(tr.maximumRequests-Xh.length,0),a=0;for(;a<s&&mc.length>0;){if(t=mc.pop(),t.cancelled){lC(t);continue}if(t.throttleByServer&&!tr.serverHasOpenSlots(t.serverKey)){lC(t);continue}k$(t),++a}nBe()};tr.getServerKey=function(e){let t=new FR.default(e);t.scheme()===""&&(t=t.absoluteTo($we),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=PA[n];return l(i)||(PA[n]=0),n};tr.request=function(e){if(mg(e.url)||Y0(e.url))return QR.raiseEvent(),e.state=hi.RECEIVED,e.requestFunction();if(++fo.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=tr.getServerKey(e.url)),tr.throttleRequests&&e.throttleByServer&&!tr.serverHasOpenSlots(e.serverKey))return;if(!tr.throttleRequests||!e.throttle)return k$(e);if(Xh.length>=tr.maximumRequests)return;F$(e);let t=mc.insert(e);if(l(t)){if(t===e)return;lC(t)}return Q$(e)};function nBe(){tr.debugShowStatistics&&(fo.numberOfActiveRequests===0&&fo.lastNumberOfActiveRequests>0&&(fo.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${fo.numberOfAttemptedRequests}`),fo.numberOfAttemptedRequests=0),fo.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${fo.numberOfCancelledRequests}`),fo.numberOfCancelledRequests=0),fo.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${fo.numberOfCancelledActiveRequests}`),fo.numberOfCancelledActiveRequests=0),fo.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${fo.numberOfFailedRequests}`),fo.numberOfFailedRequests=0)),fo.lastNumberOfActiveRequests=fo.numberOfActiveRequests)}tr.clearForSpecs=function(){for(;mc.length>0;){let t=mc.pop();lC(t)}let e=Xh.length;for(let t=0;t<e;++t)lC(Xh[t]);Xh.length=0,PA={},fo.numberOfAttemptedRequests=0,fo.numberOfActiveRequests=0,fo.numberOfCancelledRequests=0,fo.numberOfCancelledActiveRequests=0,fo.numberOfFailedRequests=0,fo.numberOfActiveRequestsEver=0,fo.lastNumberOfActiveRequests=0};tr.numberOfActiveRequestsByServer=function(e){return PA[e]};tr.requestHeap=mc;var Yc=tr;function US(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(US.prototype=Object.create(Error.prototype),US.prototype.constructor=US);US.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};var ce=US;var U$=Es(_u(),1);var GS={},J0={};GS.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])||(J0[n]=!0)};GS.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])&&delete J0[n]};function iBe(e){let t=new U$.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}GS.contains=function(e){let t=iBe(e);return!!(l(t)&&l(J0[t]))};GS.clear=function(){J0={}};var zS=GS;var V$=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function Mt(e){e=e??V.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Jh(e.templateValues,{}),this._queryParameters=Jh(e.queryParameters,{}),this.headers=Jh(e.headers,{}),this.request=e.request??new pr,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Jh(e,t){return l(e)?ze(e):t}Mt.createIfNeeded=function(e){return e instanceof Mt?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new Mt({url:e})};var Z0;Mt.supportsImageBitmapOptions=function(){return l(Z0)?Z0:typeof createImageBitmap!="function"?(Z0=Promise.resolve(!1),Z0):(Z0=Mt.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=qh(t[0]),i=qh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),Z0)};Object.defineProperties(Mt,{isBlobSupported:{get:function(){return V$}}});Object.defineProperties(Mt.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return j0(this._url)}},isDataUri:{get:function(){return mg(this._url)}},isBlobUri:{get:function(){return Y0(this._url)}},isCrossOriginUrl:{get:function(){return aC(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});Mt.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Mt.prototype.parseUrl=function(e,t,n,i){let o=new z$.default(e),r=oBe(o.query());this._queryParameters=t?UR(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(DA(i))),this._url=o.toString()};function oBe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Af(e)}function UR(e,t,n){if(!n)return wt(e,t);let i=ze(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Mt.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${rBe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function rBe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${K0(e)}`}Mt.prototype.setQueryParameters=function(e,t){t?this._queryParameters=UR(this._queryParameters,e,!1):this._queryParameters=UR(e,this._queryParameters,!1)};Mt.prototype.appendQueryParameters=function(e){this._queryParameters=UR(e,this._queryParameters,!0)};Mt.prototype.setTemplateValues=function(e,t){t?this._templateValues=wt(this._templateValues,e):this._templateValues=wt(e,this._templateValues)};Mt.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=wt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=wt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=wt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Mt.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Mt.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ze(this._queryParameters),e._templateValues=ze(this._templateValues),e.headers=ze(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Mt({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Mt.prototype.getBaseUri=function(e){return MR(this.getUrlComponent(e),e)};Mt.prototype.appendForwardSlash=function(){this._url=RR(this._url)};Mt.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Mt.fetchArrayBuffer=function(e){return new Mt(e).fetchArrayBuffer()};Mt.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Mt.fetchBlob=function(e){return new Mt(e).fetchBlob()};Mt.prototype.fetchImage=function(e){e=e??V.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(G5(this.request),!V$||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return U5({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return Mt.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return Mt.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new Mt({url:h}),U5({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function U5(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=yu();return Mt._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Yc.request(r);if(l(s))return s.catch(function(a){return r.state!==hi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=hi.UNISSUED,r.deferred=void 0,U5({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Mt.fetchImage=function(e){return new Mt(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Mt.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Mt.fetchText=function(e){return new Mt(e).fetchText()};Mt.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Mt.fetchJson=function(e){return new Mt(e).fetchJson()};Mt.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Mt.fetchXML=function(e){return new Mt(e).fetchXML()};Mt.prototype.fetchJsonp=function(e){e=e??"callback",G5(this.request);let t;do t=`loadJsonp${D.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return H$(this,e,t)};function H$(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=yu();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Mt._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Yc.request(o);if(l(s))return s.catch(function(a){return o.state!==hi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=hi.UNISSUED,o.deferred=void 0,H$(e,t,n)):Promise.reject(a)})})}Mt.fetchJsonp=function(e){return new Mt(e).fetchJsonp(e.callbackParameterName)};Mt.prototype._makeRequest=function(e){let t=this;G5(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=wt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=yu(),h=Mt._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Yc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==hi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=hi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function G5(e){if(e.state===hi.ISSUED||e.state===hi.ACTIVE)throw new ce("The Resource is already being fetched.");e.state=hi.UNISSUED,e.deferred=void 0}var sBe=/^data:(.*?)(;base64)?,(.*)$/;function kR(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function G$(e,t){let n=kR(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function aBe(e,t){t=t??"";let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return kR(i,o);case"arraybuffer":return G$(i,o);case"blob":return r=G$(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(kR(i,o),n);case"json":return JSON.parse(kR(i,o));default:}}Mt.prototype.fetch=function(e){return e=Jh(e,{}),e.method="GET",this._makeRequest(e)};Mt.fetch=function(e){return new Mt(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.delete=function(e){return e=Jh(e,{}),e.method="DELETE",this._makeRequest(e)};Mt.delete=function(e){return new Mt(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};Mt.prototype.head=function(e){return e=Jh(e,{}),e.method="HEAD",this._makeRequest(e)};Mt.head=function(e){return new Mt(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.options=function(e){return e=Jh(e,{}),e.method="OPTIONS",this._makeRequest(e)};Mt.options=function(e){return new Mt(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.post=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};Mt.post=function(e){return new Mt(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.put=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};Mt.put=function(e){return new Mt(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.patch=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};Mt.patch=function(e){return new Mt(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt._Implementations={};Mt._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(zS.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};Mt._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;Mt.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){Mt._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=yu(),h=Mt._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(A){if(!l(A)){n.reject(new ce(`Successfully retrieved ${s} but it contained no content.`));return}return Mt.createImageBitmapFromBlob(A,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(A){n.resolve(A)})}).catch(function(a){n.reject(a)})};Mt.createImageBitmapFromBlob=function(e,t){return Mo.defined("options",t),Mo.typeOf.bool("options.flipY",t.flipY),Mo.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),Mo.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"from-image",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function cBe(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new vA(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new vA)})}var lBe=typeof XMLHttpRequest>"u";Mt._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=sBe.exec(e);if(a!==null){r.resolve(aBe(a,t));return}if(lBe){cBe(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(zS.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new vA(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(_){let y=_.split(": "),C=y.shift();m[C]=y.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(A){r.reject(A)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new ce("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new vA)},c.send(i),c};Mt._Implementations.loadAndExecuteScript=function(e,t,n){return q0(e,t).catch(function(i){n.reject(i)})};Mt._DefaultImplementations={};Mt._DefaultImplementations.createImage=Mt._Implementations.createImage;Mt._DefaultImplementations.loadWithXhr=Mt._Implementations.loadWithXhr;Mt._DefaultImplementations.loadAndExecuteScript=Mt._Implementations.loadAndExecuteScript;Mt.DEFAULT=Object.freeze(new Mt({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var we=Mt;function HS(e){e=e??V.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?W$(this,e.data):W$(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}HS.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new ce(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new HS({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};HS.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new sC(0,0,0,0,0),t}});HS.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new sC(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=K.lessThanOrEquals(a,e),f=!l(c),h=f||K.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,Y$(this,n,this._samples,e,o,r,t),t}let s=qo(n,e,K.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,Y$(this,n,this._samples,e,o,r,t),t};function uBe(e,t){return K.compare(e.julianDate,t)}function W$(e,t){if(!l(t.columnNames))throw new ce("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new ce("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new ce("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,A=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let _=u[g+n],y=u[g+c],C=_+ri.MODIFIED_JULIAN_DATE_DIFFERENCE,E=new K(C,y,oi.TAI);if(f.push(E),A){if(y!==h&&l(h)){let I=K.leapSeconds,b=qo(I,E,uBe);if(b<0){let S=new so(E,y);I.splice(~b,0,S)}}h=y}}}function j$(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function VS(e,t,n){return t+e*(n-t)}function Y$(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return j$(e,n,o,a,s),s;if(i.equals(u))return j$(e,n,r,a,s),s;let f=K.secondsDifference(i,c)/K.secondsDifference(u,c),h=o*a,A=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[A+e._ut1MinusUtcSecondsColumn],_=m-g;if(_>.5||_<-.5){let y=n[h+e._taiMinusUtcSecondsColumn],C=n[A+e._taiMinusUtcSecondsColumn];y!==C&&(u.equals(i)?g=m:m-=C-y)}return s.xPoleWander=VS(f,n[h+e._xPoleWanderRadiansColumn],n[A+e._xPoleWanderRadiansColumn]),s.yPoleWander=VS(f,n[h+e._yPoleWanderRadiansColumn],n[A+e._yPoleWanderRadiansColumn]),s.xPoleOffset=VS(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[A+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=VS(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[A+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=VS(f,g,m),s}var GR=HS;function Ac(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Ac.fromQuaternion=function(e,t){l(t)||(t=new Ac);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-D.asinClamped(n),t};Ac.fromDegrees=function(e,t,n,i){return l(i)||(i=new Ac),i.heading=e*D.RADIANS_PER_DEGREE,i.pitch=t*D.RADIANS_PER_DEGREE,i.roll=n*D.RADIANS_PER_DEGREE,i};Ac.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Ac(e.heading,e.pitch,e.roll)};Ac.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Ac.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.heading,t.heading,n,i)&&D.equalsEpsilon(e.pitch,t.pitch,n,i)&&D.equalsEpsilon(e.roll,t.roll,n,i)};Ac.prototype.clone=function(e){return Ac.clone(this,e)};Ac.prototype.equals=function(e){return Ac.equals(this,e)};Ac.prototype.equalsEpsilon=function(e,t,n){return Ac.equalsEpsilon(this,e,t,n)};Ac.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var pc=Ac;var q$=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function fBe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=q$.exec(i);if(o!==null)return o[1]}}var zR;function K$(e){return typeof document>"u"?e:(l(zR)||(zR=document.createElement("a")),zR.href=e,zR.href)}var uC;function X$(){if(l(uC))return uC;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(import.meta?.url)?e=DA(".",import.meta.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?e=DA("..",fC("Core/buildModuleUrl.js")):e=fBe(),uC=new we({url:K$(e)}),uC.appendForwardSlash(),uC}function dBe(e){return K$(yR.toUrl(`../${e}`))}function J$(e){return X$().getDerivedResource({url:e}).url}var VR;function fC(e){return l(VR)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?VR=dBe:VR=J$),VR(e)}fC._cesiumScriptRegex=q$;fC._buildModuleUrlFromBaseUrl=J$;fC._clearBaseResource=function(){uC=void 0};fC.setBaseUrl=function(e){uC=we.DEFAULT.getDerivedResource({url:e})};fC.getCesiumBaseUrl=X$;var fn=fC;function hBe(e,t,n){this.x=e,this.y=t,this.s=n}var $0=hBe;function H5(e){e=e??V.EMPTY_OBJECT,this._xysFileUrlTemplate=we.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new K(this._sampleZeroJulianEphemerisDate,0,oi.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var mBe=new K(0,0,oi.TAI);function z5(e,t,n){let i=mBe;return i.dayNumber=t,i.secondsOfDay=n,K.daysDifference(i,e._sampleZeroDateTT)}H5.prototype.preload=function(e,t,n,i){let o=z5(this,e,t),r=z5(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(V5(this,h));return Promise.all(f)};H5.prototype.computeXysRadians=function(e,t,n){let i=z5(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(V5(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(V5(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new $0(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,A=this._denominators,g=this._coef,m=this._xTable,_,y;for(_=0;_<=r;++_)h[_]=f-m[_];for(_=0;_<=r;++_){for(g[_]=1,y=0;y<=r;++y)y!==_&&(g[_]*=h[y]);g[_]*=A[_];let C=(s+_)*3;n.x+=g[_]*u[C++],n.y+=g[_]*u[C++],n.s+=g[_]*u[C]}return n};function V5(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new we({url:fn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var HR=H5;function st(e,t,n,i,o,r,s,a,c){this[0]=e??0,this[1]=i??0,this[2]=s??0,this[3]=t??0,this[4]=o??0,this[5]=a??0,this[6]=n??0,this[7]=r??0,this[8]=c??0}st.packedLength=9;st.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};st.unpack=function(e,t,n){return t=t??0,l(n)||(n=new st),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};st.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)st.pack(e[o],t,o*9);return t};st.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=st.unpack(e,i,t[o])}return t};st.clone=function(e,t){if(l(e))return l(t)?(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):new st(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};st.fromArray=st.unpack;st.fromColumnMajorArray=function(e,t){return st.clone(e,t)};st.fromRowMajorArray=function(e,t){return l(t)?(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],t):new st(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};st.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,A=n-s-u+h,g=2*(i-f),m=2*(o+c),_=2*(i+f),y=-n+s-u+h,C=2*(a-r),E=2*(o-c),I=2*(a+r),b=-n-s+u+h;return l(t)?(t[0]=A,t[1]=_,t[2]=E,t[3]=g,t[4]=y,t[5]=I,t[6]=m,t[7]=C,t[8]=b,t):new st(A,g,m,_,y,C,E,I,b)};st.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,A=o*i+a*r*s,g=-a*i+o*r*s,m=-r,_=a*n,y=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=A,t[5]=_,t[6]=f,t[7]=g,t[8]=y,t):new st(c,u,f,h,A,g,m,_,y)};st.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new st(e.x,0,0,0,e.y,0,0,0,e.z)};st.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new st(e,0,0,0,e,0,0,0,e)};st.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new st(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};st.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new st(1,0,0,0,n,-i,0,i,n)};st.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new st(n,0,i,0,1,0,-i,0,n)};st.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new st(n,-i,0,i,n,0,0,0,1)};st.toArray=function(e,t){return l(t)?(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):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};st.getElementIndex=function(e,t){return e*3+t};st.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};st.setColumn=function(e,t,n,i){i=st.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};st.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};st.setRow=function(e,t,n,i){return i=st.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var ABe=new d;st.setScale=function(e,t,n){let i=st.getScale(e,ABe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var pBe=new d;st.setUniformScale=function(e,t,n){let i=st.getScale(e,pBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var W5=new d;st.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],W5)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],W5)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],W5)),t};var Z$=new d;st.getMaximumScale=function(e){return st.getScale(e,Z$),d.maximumComponent(Z$)};var gBe=new d;st.setRotation=function(e,t,n){let i=st.getScale(e,gBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var _Be=new d;st.getRotation=function(e,t){let n=st.getScale(e,_Be);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};st.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};st.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};st.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};st.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};st.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};st.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.negate=function(e,t){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};st.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function yBe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var j5=[1,0,0],Y5=[2,2,1];function CBe(e){let t=0;for(let n=0;n<3;++n){let i=e[st.getElementIndex(Y5[n],j5[n])];t+=2*i*i}return Math.sqrt(t)}function EBe(e,t){let n=D.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[st.getElementIndex(Y5[u],j5[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=j5[o],c=Y5[o];if(Math.abs(e[st.getElementIndex(c,a)])>n){let u=e[st.getElementIndex(c,c)],f=e[st.getElementIndex(a,a)],h=e[st.getElementIndex(c,a)],A=(u-f)/2/h,g;A<0?g=-1/(-A+Math.sqrt(1+A*A)):g=1/(A+Math.sqrt(1+A*A)),r=1/Math.sqrt(1+g*g),s=g*r}return t=st.clone(st.IDENTITY,t),t[st.getElementIndex(a,a)]=t[st.getElementIndex(c,c)]=r,t[st.getElementIndex(c,a)]=s,t[st.getElementIndex(a,c)]=-s,t}var WR=new st,$$=new st;st.computeEigenDecomposition=function(e,t){let n=D.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=st.clone(st.IDENTITY,t.unitary),a=t.diagonal=st.clone(e,t.diagonal),c=n*yBe(a);for(;r<i&&CBe(a)>c;)EBe(a,WR),st.transpose(WR,$$),st.multiply(a,WR,a),st.multiply($$,a,a),st.multiply(s,WR,s),++o>2&&(++r,o=0);return t};st.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};st.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};st.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=st.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let A=1/h;return st.multiplyByScalar(t,A,t)};var IBe=new st;st.inverseTranspose=function(e,t){return st.inverse(st.transpose(e,IBe),t)};st.equals=function(e,t){return e===t||l(e)&&l(t)&&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]};st.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};st.IDENTITY=Object.freeze(new st(1,0,0,0,1,0,0,0,1));st.ZERO=Object.freeze(new st(0,0,0,0,0,0,0,0,0));st.COLUMN0ROW0=0;st.COLUMN0ROW1=1;st.COLUMN0ROW2=2;st.COLUMN1ROW0=3;st.COLUMN1ROW1=4;st.COLUMN1ROW2=5;st.COLUMN2ROW0=6;st.COLUMN2ROW1=7;st.COLUMN2ROW2=8;Object.defineProperties(st.prototype,{length:{get:function(){return st.packedLength}}});st.prototype.clone=function(e){return st.clone(this,e)};st.prototype.equals=function(e){return st.equals(this,e)};st.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};st.prototype.equalsEpsilon=function(e,t){return st.equalsEpsilon(this,e,t)};st.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var J=st;function rt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=A??0,this[4]=t??0,this[5]=r??0,this[6]=u??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=f??0,this[11]=m??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=_??0}rt.packedLength=16;rt.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};rt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new rt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};rt.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)rt.pack(e[o],t,o*16);return t};rt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=rt.unpack(e,i,t[o])}return t};rt.clone=function(e,t){if(l(e))return l(t)?(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):new rt(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};rt.fromArray=rt.unpack;rt.fromColumnMajorArray=function(e,t){return rt.clone(e,t)};rt.fromRowMajorArray=function(e,t){return l(t)?(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],t):new rt(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};rt.fromRotationTranslation=function(e,t,n){return t=t??d.ZERO,l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new rt(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};rt.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new rt);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,A=t.y*t.z,g=t.y*t.w,m=t.z*t.z,_=t.z*t.w,y=t.w*t.w,C=a-h-m+y,E=2*(c-_),I=2*(u+g),b=2*(c+_),S=-a+h-m+y,B=2*(A-f),v=2*(u-g),P=2*(A+f),N=-a-h+m+y;return i[0]=C*o,i[1]=b*o,i[2]=v*o,i[3]=0,i[4]=E*r,i[5]=S*r,i[6]=P*r,i[7]=0,i[8]=I*s,i[9]=B*s,i[10]=N*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};rt.fromTranslationRotationScale=function(e,t){return rt.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};rt.fromTranslation=function(e,t){return rt.fromRotationTranslation(J.IDENTITY,e,t)};rt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};rt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};rt.fromRotation=function(e,t){return l(t)||(t=new rt),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var eI=new d,tI=new d,WS=new d;rt.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,eI),d.normalize(d.cross(eI,o,tI),tI),d.normalize(d.cross(tI,eI,WS),WS);let r=tI.x,s=tI.y,a=tI.z,c=eI.x,u=eI.y,f=eI.z,h=WS.x,A=WS.y,g=WS.z,m=n.x,_=n.y,y=n.z,C=r*-m+s*-_+a*-y,E=h*-m+A*-_+g*-y,I=c*m+u*_+f*y;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=A,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=C,t[13]=E,t[14]=I,t[15]=1,t):new rt(r,s,a,C,h,A,g,E,-c,-u,-f,I,0,0,0,1)};rt.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};rt.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,A=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=A,s[15]=1,s};rt.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),A=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=A,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};rt.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,A=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=A,r[15]=0,r};rt.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new rt),e=e??V.EMPTY_OBJECT;let o=e.x??0,r=e.y??0,s=e.width??0,a=e.height??0;t=t??0,n=n??1;let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,A=u,g=f,m=o+c,_=r+u,y=t+f,C=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=A,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=_,i[14]=y,i[15]=C,i};rt.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};rt.toArray=function(e,t){return l(t)?(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):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};rt.getElementIndex=function(e,t){return e*4+t};rt.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};rt.setColumn=function(e,t,n,i){i=rt.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};rt.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};rt.setRow=function(e,t,n,i){return i=rt.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};rt.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var xBe=new d;rt.setScale=function(e,t,n){let i=rt.getScale(e,xBe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var bBe=new d;rt.setUniformScale=function(e,t,n){let i=rt.getScale(e,bBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var q5=new d;rt.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],q5)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],q5)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],q5)),t};var eee=new d;rt.getMaximumScale=function(e){return rt.getScale(e,eee),d.maximumComponent(eee)};var TBe=new d;rt.setRotation=function(e,t,n){let i=rt.getScale(e,TBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var SBe=new d;rt.getRotation=function(e,t){let n=rt.getScale(e,SBe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};rt.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],A=e[9],g=e[10],m=e[11],_=e[12],y=e[13],C=e[14],E=e[15],I=t[0],b=t[1],S=t[2],B=t[3],v=t[4],P=t[5],N=t[6],L=t[7],p=t[8],x=t[9],T=t[10],w=t[11],M=t[12],O=t[13],U=t[14],Q=t[15],z=i*I+a*b+h*S+_*B,F=o*I+c*b+A*S+y*B,H=r*I+u*b+g*S+C*B,W=s*I+f*b+m*S+E*B,Z=i*v+a*P+h*N+_*L,Y=o*v+c*P+A*N+y*L,$=r*v+u*P+g*N+C*L,X=s*v+f*P+m*N+E*L,he=i*p+a*x+h*T+_*w,ge=o*p+c*x+A*T+y*w,fe=r*p+u*x+g*T+C*w,ye=s*p+f*x+m*T+E*w,Ie=i*M+a*O+h*U+_*Q,ve=o*M+c*O+A*U+y*Q,Te=r*M+u*O+g*U+C*Q,ke=s*M+f*O+m*U+E*Q;return n[0]=z,n[1]=F,n[2]=H,n[3]=W,n[4]=Z,n[5]=Y,n[6]=$,n[7]=X,n[8]=he,n[9]=ge,n[10]=fe,n[11]=ye,n[12]=Ie,n[13]=ve,n[14]=Te,n[15]=ke,n};rt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};rt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};rt.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=e[12],g=e[13],m=e[14],_=t[0],y=t[1],C=t[2],E=t[4],I=t[5],b=t[6],S=t[8],B=t[9],v=t[10],P=t[12],N=t[13],L=t[14],p=i*_+s*y+u*C,x=o*_+a*y+f*C,T=r*_+c*y+h*C,w=i*E+s*I+u*b,M=o*E+a*I+f*b,O=r*E+c*I+h*b,U=i*S+s*B+u*v,Q=o*S+a*B+f*v,z=r*S+c*B+h*v,F=i*P+s*N+u*L+A,H=o*P+a*N+f*L+g,W=r*P+c*N+h*L+m;return n[0]=p,n[1]=x,n[2]=T,n[3]=0,n[4]=w,n[5]=M,n[6]=O,n[7]=0,n[8]=U,n[9]=Q,n[10]=z,n[11]=0,n[12]=F,n[13]=H,n[14]=W,n[15]=1,n};rt.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=t[0],g=t[1],m=t[2],_=t[3],y=t[4],C=t[5],E=t[6],I=t[7],b=t[8],S=i*A+s*g+u*m,B=o*A+a*g+f*m,v=r*A+c*g+h*m,P=i*_+s*y+u*C,N=o*_+a*y+f*C,L=r*_+c*y+h*C,p=i*E+s*I+u*b,x=o*E+a*I+f*b,T=r*E+c*I+h*b;return n[0]=S,n[1]=B,n[2]=v,n[3]=0,n[4]=P,n[5]=N,n[6]=L,n[7]=0,n[8]=p,n[9]=x,n[10]=T,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};rt.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?rt.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};rt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};rt.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};rt.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};rt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};rt.negate=function(e,t){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};rt.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};rt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};rt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};rt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};rt.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};rt.getMatrix3=function(e,t){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};var wBe=new J,BBe=new J,DBe=new se,vBe=new se(0,0,0,1);rt.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],A=e[10],g=e[14],m=e[3],_=e[7],y=e[11],C=e[15],E=A*C,I=g*y,b=h*C,S=g*_,B=h*y,v=A*_,P=f*C,N=g*m,L=f*y,p=A*m,x=f*_,T=h*m,w=E*a+S*c+B*u-(I*a+b*c+v*u),M=I*s+P*c+p*u-(E*s+N*c+L*u),O=b*s+N*a+x*u-(S*s+P*a+T*u),U=v*s+L*a+T*c-(B*s+p*a+x*c),Q=I*i+b*o+v*r-(E*i+S*o+B*r),z=E*n+N*o+L*r-(I*n+P*o+p*r),F=S*n+P*i+T*r-(b*n+N*i+x*r),H=B*n+p*i+x*o-(v*n+L*i+T*o);E=o*u,I=r*c,b=i*u,S=r*a,B=i*c,v=o*a,P=n*u,N=r*s,L=n*c,p=o*s,x=n*a,T=i*s;let W=E*_+S*y+B*C-(I*_+b*y+v*C),Z=I*m+P*y+p*C-(E*m+N*y+L*C),Y=b*m+N*_+x*C-(S*m+P*_+T*C),$=v*m+L*_+T*y-(B*m+p*_+x*y),X=b*A+v*g+I*h-(B*g+E*h+S*A),he=L*g+E*f+N*A-(P*A+p*g+I*f),ge=P*h+T*g+S*f-(x*g+b*f+N*h),fe=x*A+B*f+p*h-(L*h+T*A+v*f),ye=n*w+i*M+o*O+r*U;if(Math.abs(ye)<D.EPSILON21){if(J.equalsEpsilon(rt.getMatrix3(e,wBe),BBe,D.EPSILON7)&&se.equals(rt.getRow(e,3,DBe),vBe))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new ce("matrix is not invertible because its determinate is zero.")}return ye=1/ye,t[0]=w*ye,t[1]=M*ye,t[2]=O*ye,t[3]=U*ye,t[4]=Q*ye,t[5]=z*ye,t[6]=F*ye,t[7]=H*ye,t[8]=W*ye,t[9]=Z*ye,t[10]=Y*ye,t[11]=$*ye,t[12]=X*ye,t[13]=he*ye,t[14]=ge*ye,t[15]=fe*ye,t};rt.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],A=e[13],g=e[14],m=-n*h-i*A-o*g,_=-r*h-s*A-a*g,y=-c*h-u*A-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=_,t[14]=y,t[15]=1,t};var PBe=new rt;rt.inverseTranspose=function(e,t){return rt.inverse(rt.transpose(e,PBe),t)};rt.IDENTITY=Object.freeze(new rt(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));rt.ZERO=Object.freeze(new rt(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));rt.COLUMN0ROW0=0;rt.COLUMN0ROW1=1;rt.COLUMN0ROW2=2;rt.COLUMN0ROW3=3;rt.COLUMN1ROW0=4;rt.COLUMN1ROW1=5;rt.COLUMN1ROW2=6;rt.COLUMN1ROW3=7;rt.COLUMN2ROW0=8;rt.COLUMN2ROW1=9;rt.COLUMN2ROW2=10;rt.COLUMN2ROW3=11;rt.COLUMN3ROW0=12;rt.COLUMN3ROW1=13;rt.COLUMN3ROW2=14;rt.COLUMN3ROW3=15;Object.defineProperties(rt.prototype,{length:{get:function(){return rt.packedLength}}});rt.prototype.clone=function(e){return rt.clone(this,e)};rt.prototype.equals=function(e){return rt.equals(this,e)};rt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};rt.prototype.equalsEpsilon=function(e,t){return rt.equalsEpsilon(this,e,t)};rt.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var R=rt;var Ag,Vr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},vl={};Object.defineProperties(vl,{element:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenElement]}},changeEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenchange}},errorEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenerror}},enabled:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenEnabled]}},fullscreen:{get:function(){if(vl.supportsFullscreen())return vl.element!==null}}});vl.supportsFullscreen=function(){if(l(Ag))return Ag;Ag=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Vr.requestFullscreen="requestFullscreen",Vr.exitFullscreen="exitFullscreen",Vr.fullscreenEnabled="fullscreenEnabled",Vr.fullscreenElement="fullscreenElement",Vr.fullscreenchange="fullscreenchange",Vr.fullscreenerror="fullscreenerror",Ag=!0,Ag;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Vr.requestFullscreen=n,Ag=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Vr.requestFullscreen=n,Ag=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Vr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Vr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Vr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Vr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Vr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Vr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Vr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Vr.fullscreenerror=n)}return Ag};vl.requestFullscreen=function(e,t){vl.supportsFullscreen()&&e[Vr.requestFullscreen]({vrDisplay:t})};vl.exitFullscreen=function(){vl.supportsFullscreen()&&document[Vr.exitFullscreen]()};vl._names=Vr;var Hr=vl;var gc;typeof navigator<"u"?gc=navigator:gc={};function dC(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var jR,tee;function e9(){if(!l(jR)&&(jR=!1,!ZR())){let e=/ Chrome\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(jR=!0,tee=dC(e[1]))}return jR}function RBe(){return e9()&&tee}var YR,nee;function iee(){if(!l(YR)&&(YR=!1,!e9()&&!ZR()&&/ Safari\/[\.0-9]+/.test(gc.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(YR=!0,nee=dC(e[1]))}return YR}function MBe(){return iee()&&nee}var qR,Z5;function oee(){if(!l(qR)){qR=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(gc.userAgent);e!==null&&(qR=!0,Z5=dC(e[1]),Z5.isNightly=!!e[2])}return qR}function NBe(){return oee()&&Z5}var jS,$5;function ree(){if(!l(jS)){jS=!1;let e;gc.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1]))):gc.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1])))}return jS}function LBe(){return ree()&&$5}var KR,see;function ZR(){if(!l(KR)){KR=!1;let e=/ Edg\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(KR=!0,see=dC(e[1]))}return KR}function OBe(){return ZR()&&see}var XR,t9;function $R(){if(!l(XR)){XR=!1;let e=/Firefox\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(XR=!0,t9=dC(e[1]))}return XR}var K5;function FBe(){return l(K5)||(K5=/Windows/i.test(gc.appVersion)),K5}var X5;function QBe(){return l(X5)||(X5=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),X5}function kBe(){return $R()&&t9}var J5;function UBe(){return l(J5)||(J5=!$R()&&typeof PointerEvent<"u"&&(!l(gc.pointerEnabled)||gc.pointerEnabled)),J5}var aee,JR;function cee(){if(!l(JR)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;JR=l(t)&&t!=="",JR&&(aee=t)}return JR}function GBe(){return cee()?aee:void 0}function qc(){return qc._result}qc._promise=void 0;qc._result=void 0;qc.initialize=function(){return l(qc._promise)||(qc._promise=new Promise(e=>{let t=new Image;t.onload=function(){qc._result=t.width>0&&t.height>0,e(qc._result)},t.onerror=function(){qc._result=!1,e(qc._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),qc._promise};Object.defineProperties(qc,{initialized:{get:function(){return l(qc._result)}}});var nI=[];typeof ArrayBuffer<"u"&&(nI.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&nI.push(BigInt64Array),typeof BigUint64Array<"u"&&nI.push(BigUint64Array));var pf={isChrome:e9,chromeVersion:RBe,isSafari:iee,safariVersion:MBe,isWebkit:oee,webkitVersion:NBe,isInternetExplorer:ree,internetExplorerVersion:LBe,isEdge:ZR,edgeVersion:OBe,isFirefox:$R,firefoxVersion:kBe,isWindows:FBe,isIPadOrIOS:QBe,hardwareConcurrency:gc.hardwareConcurrency??3,supportsPointerEvents:UBe,supportsImageRenderingPixelated:cee,supportsWebP:qc,imageRenderingValue:GBe,typedArrayTypes:nI};pf.supportsBasis=function(e){return pf.supportsWebAssembly()&&e.context.supportsBasis};pf.supportsFullscreen=function(){return Hr.supportsFullscreen()};pf.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};pf.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};pf.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};pf.supportsBigInt=function(){return typeof BigInt<"u"};pf.supportsWebWorkers=function(){return typeof Worker<"u"};pf.supportsWebAssembly=function(){return typeof WebAssembly<"u"};pf.supportsWebgl2=function(e){return e.context.webgl2};pf.supportsEsmWebWorkers=function(){return!$R()||parseInt(t9)>=114};var jt=pf;function at(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var YS=new d;at.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);YS=d.normalize(e,YS);let r=YS.x*o,s=YS.y*o,a=YS.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new at(r,s,a,c)};var zBe=[1,2,0],VBe=new Array(3);at.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[J.COLUMN0ROW0],c=e[J.COLUMN1ROW1],u=e[J.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[J.COLUMN1ROW2]-e[J.COLUMN2ROW1])*n,o=(e[J.COLUMN2ROW0]-e[J.COLUMN0ROW2])*n,r=(e[J.COLUMN0ROW1]-e[J.COLUMN1ROW0])*n;else{let h=zBe,A=0;c>a&&(A=1),u>a&&u>c&&(A=2);let g=h[A],m=h[g];n=Math.sqrt(e[J.getElementIndex(A,A)]-e[J.getElementIndex(g,g)]-e[J.getElementIndex(m,m)]+1);let _=VBe;_[A]=.5*n,n=.5/n,s=(e[J.getElementIndex(m,g)]-e[J.getElementIndex(g,m)])*n,_[g]=(e[J.getElementIndex(g,A)]+e[J.getElementIndex(A,g)])*n,_[m]=(e[J.getElementIndex(m,A)]+e[J.getElementIndex(A,m)])*n,i=-_[0],o=-_[1],r=-_[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new at(i,o,r,s)};var lee=new at,uee=new at,n9=new at,fee=new at;at.fromHeadingPitchRoll=function(e,t){return fee=at.fromAxisAngle(d.UNIT_X,e.roll,lee),n9=at.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=at.multiply(n9,fee,n9),uee=at.fromAxisAngle(d.UNIT_Z,-e.heading,lee),at.multiply(uee,t,t)};var eM=new d,i9=new d,Md=new at,dee=new at,tM=new at;at.packedLength=4;at.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};at.unpack=function(e,t,n){return t=t??0,l(n)||(n=new at),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};at.packedInterpolationLength=3;at.convertPackedArrayForInterpolation=function(e,t,n,i){at.unpack(e,n*4,tM),at.conjugate(tM,tM);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;at.unpack(e,(t+o)*4,Md),at.multiply(Md,tM,Md),Md.w<0&&at.negate(Md,Md),at.computeAxis(Md,eM);let a=at.computeAngle(Md);l(i)||(i=[]),i[s]=eM.x*a,i[s+1]=eM.y*a,i[s+2]=eM.z*a}};at.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new at),d.fromArray(e,0,i9);let r=d.magnitude(i9);return at.unpack(t,i*4,dee),r===0?at.clone(at.IDENTITY,Md):at.fromAxisAngle(i9,r,Md),at.multiply(Md,dee,o)};at.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new at(e.x,e.y,e.z,e.w)};at.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};at.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};at.magnitude=function(e){return Math.sqrt(at.magnitudeSquared(e))};at.normalize=function(e,t){let n=1/at.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};at.inverse=function(e,t){let n=at.magnitudeSquared(e);return t=at.conjugate(e,t),at.multiplyByScalar(t,1/n,t)};at.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};at.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};at.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};at.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};at.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,A=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=A,n.z=g,n.w=m,n};at.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};at.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};at.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<D.EPSILON6||Math.abs(n+1)<D.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};at.computeAngle=function(e){return Math.abs(e.w-1)<D.EPSILON6?0:2*Math.acos(e.w)};var o9=new at;at.lerp=function(e,t,n,i){return o9=at.multiplyByScalar(t,n,o9),i=at.multiplyByScalar(e,1-n,i),at.add(o9,i,i)};var hee=new at,r9=new at,s9=new at;at.slerp=function(e,t,n,i){let o=at.dot(e,t),r=t;if(o<0&&(o=-o,r=hee=at.negate(t,hee)),1-o<D.EPSILON6)return at.lerp(e,r,n,i);let s=Math.acos(o);return r9=at.multiplyByScalar(e,Math.sin((1-n)*s),r9),s9=at.multiplyByScalar(r,Math.sin(n*s),s9),i=at.add(r9,s9,i),at.multiplyByScalar(i,1/Math.sin(s),i)};at.log=function(e,t){let n=D.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};at.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var HBe=new d,WBe=new d,qS=new at,iI=new at;at.computeInnerQuadrangle=function(e,t,n,i){let o=at.conjugate(t,qS);at.multiply(o,n,iI);let r=at.log(iI,HBe);at.multiply(o,e,iI);let s=at.log(iI,WBe);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),at.exp(r,qS),at.multiply(t,qS,i)};at.squad=function(e,t,n,i,o,r){let s=at.slerp(e,t,o,qS),a=at.slerp(n,i,o,iI);return at.slerp(s,a,2*o*(1-o),r)};var jBe=new at,mee=1.9011074535173003,nM=jt.supportsTypedArrays()?new Float32Array(8):[],iM=jt.supportsTypedArrays()?new Float32Array(8):[],RA=jt.supportsTypedArrays()?new Float32Array(8):[],MA=jt.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;nM[e]=1/(t*n),iM[e]=t/n}nM[7]=mee/136;iM[7]=mee*8/17;at.fastSlerp=function(e,t,n,i){let o=at.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)RA[g]=(nM[g]*c-iM[g])*s,MA[g]=(nM[g]*u-iM[g])*s;let f=r*n*(1+RA[0]*(1+RA[1]*(1+RA[2]*(1+RA[3]*(1+RA[4]*(1+RA[5]*(1+RA[6]*(1+RA[7])))))))),h=a*(1+MA[0]*(1+MA[1]*(1+MA[2]*(1+MA[3]*(1+MA[4]*(1+MA[5]*(1+MA[6]*(1+MA[7])))))))),A=at.multiplyByScalar(e,h,jBe);return at.multiplyByScalar(t,f,i),at.add(A,i,i)};at.fastSquad=function(e,t,n,i,o,r){let s=at.fastSlerp(e,t,o,qS),a=at.fastSlerp(n,i,o,iI);return at.fastSlerp(s,a,2*o*(1-o),r)};at.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};at.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};at.ZERO=Object.freeze(new at(0,0,0,0));at.IDENTITY=Object.freeze(new at(0,0,0,1));at.prototype.clone=function(e){return at.clone(this,e)};at.prototype.equals=function(e){return at.equals(this,e)};at.prototype.equalsEpsilon=function(e,t){return at.equalsEpsilon(this,e,t)};at.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=at;var Ti={},a9={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},oI={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},c9={},Pl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},pg=new d,gg=new d,_g=new d;Ti.localFrameToFixedFrameGenerator=function(e,t){if(!a9.hasOwnProperty(e)||!a9[e].hasOwnProperty(t))throw new me("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=a9[e][t],i,o=e+t;return l(c9[o])?i=c9[o]:(i=function(r,s,a){if(l(a)||(a=new R),d.equalsEpsilon(r,d.ZERO,D.EPSILON14))d.unpack(oI[e],0,pg),d.unpack(oI[t],0,gg),d.unpack(oI[n],0,_g);else if(D.equalsEpsilon(r.x,0,D.EPSILON14)&&D.equalsEpsilon(r.y,0,D.EPSILON14)){let c=D.sign(r.z);d.unpack(oI[e],0,pg),e!=="east"&&e!=="west"&&d.multiplyByScalar(pg,c,pg),d.unpack(oI[t],0,gg),t!=="east"&&t!=="west"&&d.multiplyByScalar(gg,c,gg),d.unpack(oI[n],0,_g),n!=="east"&&n!=="west"&&d.multiplyByScalar(_g,c,_g)}else{s=s??te.default,s.geodeticSurfaceNormal(r,Pl.up);let c=Pl.up,u=Pl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,Pl.east),d.cross(c,u,Pl.north),d.multiplyByScalar(Pl.up,-1,Pl.down),d.multiplyByScalar(Pl.east,-1,Pl.west),d.multiplyByScalar(Pl.north,-1,Pl.south),pg=Pl[e],gg=Pl[t],_g=Pl[n]}return a[0]=pg.x,a[1]=pg.y,a[2]=pg.z,a[3]=0,a[4]=gg.x,a[5]=gg.y,a[6]=gg.z,a[7]=0,a[8]=_g.x,a[9]=_g.y,a[10]=_g.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},c9[o]=i),i};Ti.eastNorthUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("east","north");Ti.northEastDownToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","east");Ti.northUpEastToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","up");Ti.northWestUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","west");var YBe=new Le,qBe=new d(1,1,1),KBe=new R;Ti.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??Ti.eastNorthUpToFixedFrame;let r=Le.fromHeadingPitchRoll(t,YBe),s=R.fromTranslationQuaternionRotationScale(d.ZERO,r,qBe,KBe);return o=i(e,n,o),R.multiply(o,s,o)};var XBe=new R,JBe=new J;Ti.headingPitchRollQuaternion=function(e,t,n,i,o){let r=Ti.headingPitchRollToFixedFrame(e,t,n,i,XBe),s=R.getMatrix3(r,JBe);return Le.fromRotationMatrix(s,o)};var ZBe=new d(1,1,1),$Be=new d,Aee=new R,eDe=new R,tDe=new J,nDe=new Le;Ti.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??te.default,n=n??Ti.eastNorthUpToFixedFrame,l(i)||(i=new pc);let o=R.getTranslation(e,$Be);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=R.inverseTransformation(n(o,t,Aee),Aee),s=R.setScale(e,ZBe,eDe);s=R.setTranslation(s,d.ZERO,s),r=R.multiply(r,s,r);let a=Le.fromRotationMatrix(R.getMatrix3(r,tDe),nDe);return a=Le.normalize(a,a),pc.fromQuaternion(a,i)};var iDe=6*3600+2460+50.54841,oDe=8640184812866e-6,rDe=.093104,sDe=-62e-7,aDe=11772758384668e-32,cDe=72921158553e-15,lDe=D.TWO_PI/86400,oM=new K;Ti.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=Ti.computeIcrfToFixedMatrix(e,t);return l(n)||(n=Ti.computeTemeToPseudoFixedMatrix(e,t)),n};Ti.computeTemeToPseudoFixedMatrix=function(e,t){oM=K.addSeconds(e,-K.computeTaiMinusUtc(e),oM);let n=oM.dayNumber,i=oM.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ri.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ri.DAYS_PER_JULIAN_CENTURY;let a=(iDe+o*(oDe+o*(rDe+o*sDe)))*lDe%D.TWO_PI,c=cDe+aDe*(n-24515455e-1),u=(i+ri.SECONDS_PER_DAY*.5)%ri.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),A=Math.sin(f);return l(t)?(t[0]=h,t[1]=-A,t[2]=0,t[3]=A,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new J(h,A,0,-A,h,0,0,0,1)};Ti.iau2006XysData=new HR;Ti.earthOrientationParameters=GR.NONE;var f9=32.184,uDe=2451545;Ti.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+f9,i=e.stop.dayNumber,o=e.stop.secondsOfDay+f9;return Ti.iau2006XysData.preload(t,n,i,o)};Ti.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var fDe=32.184,dDe=2451545,rM=new pc,hDe=new J,mDe=new K;Ti.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=K.addSeconds(e,fDe,mDe),i=K.totalDays(n)-dDe,o=D.toRadians(12.112)-D.toRadians(.052992)*i,r=D.toRadians(24.224)-D.toRadians(.105984)*i,s=D.toRadians(227.645)+D.toRadians(13.012)*i,a=D.toRadians(261.105)+D.toRadians(13.340716)*i,c=D.toRadians(358)+D.toRadians(.9856)*i;return rM.pitch=D.toRadians(180)-D.toRadians(3.878)*Math.sin(o)-D.toRadians(.12)*Math.sin(r)+D.toRadians(.07)*Math.sin(s)-D.toRadians(.017)*Math.sin(a),rM.roll=D.toRadians(66.53-90)+D.toRadians(1.543)*Math.cos(o)+D.toRadians(.24)*Math.cos(r)-D.toRadians(.028)*Math.cos(s)+D.toRadians(.007)*Math.cos(a),rM.heading=D.toRadians(244.375-90)+D.toRadians(13.17635831)*i+D.toRadians(3.558)*Math.sin(o)+D.toRadians(.121)*Math.sin(r)-D.toRadians(.064)*Math.sin(s)+D.toRadians(.016)*Math.sin(a)+D.toRadians(.025)*Math.sin(c),J.fromHeadingPitchRoll(rM,hDe)};Ti.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var ADe=new $0(0,0,0),pDe=new sC(0,0,0,0,0,0),l9=new J,u9=new J;Ti.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=Ti.earthOrientationParameters.compute(e,pDe);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+f9,r=Ti.iau2006XysData.computeXysRadians(i,o,ADe);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=l9;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=J.fromRotationZ(-r.s,u9),h=J.multiply(u,f,l9),A=e.dayNumber,g=e.secondsOfDay-K.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=A-2451545,_=g/ri.SECONDS_PER_DAY,y=.779057273264+_+.00273781191135448*(m+_);y=y%1*D.TWO_PI;let C=J.fromRotationZ(y,u9),E=J.multiply(h,C,l9),I=Math.cos(n.xPoleWander),b=Math.cos(n.yPoleWander),S=Math.sin(n.xPoleWander),B=Math.sin(n.yPoleWander),v=i-uDe+o/ri.SECONDS_PER_DAY;v/=36525;let P=-47e-6*v*D.RADIANS_PER_DEGREE/3600,N=Math.cos(P),L=Math.sin(P),p=u9;return p[0]=I*N,p[1]=I*L,p[2]=S,p[3]=-b*L+B*S*N,p[4]=b*N+B*S*L,p[5]=-B*I,p[6]=-B*L-b*S*N,p[7]=B*N-b*S*L,p[8]=b*I,J.multiply(E,p,t)};var gDe=new se;Ti.pointToWindowCoordinates=function(e,t,n,i){return i=Ti.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};Ti.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new k);let o=gDe;return R.multiplyByVector(e,se.fromElements(n.x,n.y,n.z,1,o),o),se.multiplyByScalar(o,1/o.w,o),R.multiplyByVector(t,o,o),k.fromCartesian4(o,i)};var _De=new d,yDe=new d,CDe=new d;Ti.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??te.default).geodeticSurfaceNormal(e,_De),r=d.cross(t,o,yDe);d.equalsEpsilon(r,d.ZERO,D.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,CDe);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new J),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var pee=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),gee=new Ae,d9=new d,EDe=new d,IDe=new J,h9=new R,_ee=new R;Ti.basisTo2D=function(e,t,n){let i=R.getTranslation(t,EDe),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,d9);else{let f=o.cartesianToCartographic(i,gee);r=e.project(f,d9),d.fromElements(r.z,r.x,r.y,r)}let s=Ti.eastNorthUpToFixedFrame(i,o,h9),a=R.inverseTransformation(s,_ee),c=R.getMatrix3(t,IDe),u=R.multiplyByMatrix3(a,c,n);return R.multiply(pee,u,n),R.setTranslation(n,r,n),n};Ti.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=Ti.eastNorthUpToFixedFrame(t,i,h9),r=R.inverseTransformation(o,_ee),s=i.cartesianToCartographic(t,gee),a=e.project(s,d9);d.fromElements(a.z,a.x,a.y,a);let c=R.fromTranslation(a,h9);return R.multiply(pee,r,n),R.multiply(c,n,n),n};var kt=Ti;function Ln(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Ln.prototype,{width:{get:function(){return Ln.computeWidth(this)}},height:{get:function(){return Ln.computeHeight(this)}}});Ln.packedLength=4;Ln.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Ln.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ln),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Ln.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=D.TWO_PI),t-n};Ln.computeHeight=function(e){return e.north-e.south};Ln.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e??0),t=D.toRadians(t??0),n=D.toRadians(n??0),i=D.toRadians(i??0),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new Ln(e,t,n,i)};Ln.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=e??0,o.south=t??0,o.east=n??0,o.north=i??0,o):new Ln(e,t,n,i)};Ln.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+D.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>D.PI&&(i=i-D.TWO_PI),n>D.PI&&(n=n-D.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Ln(n,s,i,a)};Ln.fromCartesianArray=function(e,t,n){t=t??te.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let A=h.longitude>=0?h.longitude:h.longitude+D.TWO_PI;r=Math.min(r,A),s=Math.max(s,A)}return o-i>s-r&&(i=r,o=s,o>D.PI&&(o=o-D.TWO_PI),i>D.PI&&(i=i-D.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Ln(i,a,o,c)};var xDe=new d,bDe=new d,TDe=new d,SDe=new d,wDe=new d,m9=new Array(5);for(let e=0;e<m9.length;++e)m9[e]=new d;Ln.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=te.default),l(n)||(n=new Ln),d.equals(i,d.ZERO))return Ln.clone(Ln.MAX_VALUE,n),n;let r=kt.eastNorthUpToFixedFrame(i,t,xDe),s=R.multiplyByPointAsVector(r,d.UNIT_X,bDe);d.normalize(s,s);let a=R.multiplyByPointAsVector(r,d.UNIT_Y,TDe);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,wDe),u=d.negate(s,SDe),f=m9,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,Ln.fromCartesianArray(f,t,n)};Ln.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new Ln(e.west,e.south,e.east,e.north)};Ln.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};Ln.prototype.clone=function(e){return Ln.clone(this,e)};Ln.prototype.equals=function(e){return Ln.equals(this,e)};Ln.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};Ln.prototype.equalsEpsilon=function(e,t){return Ln.equalsEpsilon(this,e,t)};Ln._validate=function(e){};Ln.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new Ae(e.west,e.south)};Ln.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new Ae(e.west,e.north)};Ln.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new Ae(e.east,e.north)};Ln.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new Ae(e.east,e.south)};Ln.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=D.TWO_PI);let o=D.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new Ae(o,r)};Ln.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.max(o,s)),c=D.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new Ln(a,u,c,f)};Ln.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Ln(i,o,r,s)};Ln.union=function(e,t,n){l(n)||(n=new Ln);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.min(o,s)),c=D.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};Ln.expand=function(e,t,n){return l(n)||(n=new Ln),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};Ln.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=D.TWO_PI,n<0&&(n+=D.TWO_PI)),(n>o||D.equalsEpsilon(n,o,D.EPSILON14))&&(n<r||D.equalsEpsilon(n,r,D.EPSILON14))&&i>=e.south&&i<=e.north};var BDe=new Ae;Ln.subsample=function(e,t,n,i){t=t??te.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=BDe;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*D.PI_OVER_TWO,Ln.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};Ln.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Ln),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=D.TWO_PI+e.east-e.west;r.west=D.negativePiToPi(e.west+t*a),r.east=D.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Ln.MAX_VALUE=Object.freeze(new Ln(-Math.PI,-D.PI_OVER_TWO,Math.PI,D.PI_OVER_TWO));var ae=Ln;function Wr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Wr.packedLength=4;Wr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Wr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Wr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Wr.fromPoints=function(e,t){if(l(t)||(t=new Wr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var yee=new Hi,DDe=new Ae,vDe=new Ae;Wr.fromRectangle=function(e,t,n){if(l(n)||(n=new Wr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;yee._ellipsoid=te.default,t=t??yee;let i=t.project(ae.southwest(e,DDe)),o=t.project(ae.northeast(e,vDe));return k.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Wr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Wr(e.x,e.y,e.width,e.height)};Wr.union=function(e,t,n){l(n)||(n=new Wr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Wr.expand=function(e,t,n){n=Wr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Wr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?nn.OUTSIDE:nn.INTERSECTING};Wr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Wr.prototype.clone=function(e){return Wr.clone(this,e)};Wr.prototype.intersect=function(e){return Wr.intersect(this,e)};Wr.prototype.equals=function(e){return Wr.equals(this,e)};var Xe=Wr;function A9(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function re(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}re.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new re(e.x,e.y,e.z,e.w)};re.fromBytes=function(e,t,n,i,o){return e=re.byteToFloat(e??255),t=re.byteToFloat(t??255),n=re.byteToFloat(n??255),i=re.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new re(e,t,n,i)};re.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new re(e.red,e.green,e.blue,t)};var p9,g9,NA;jt.supportsTypedArrays()&&(p9=new ArrayBuffer(4),g9=new Uint32Array(p9),NA=new Uint8Array(p9));re.fromRgba=function(e,t){return g9[0]=e,re.fromBytes(NA[0],NA[1],NA[2],NA[3],t)};re.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=A9(u,c,e+1/3),s=A9(u,c,e),a=A9(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new re(r,s,a,i)};re.fromRandom=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+D.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+D.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+D.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+D.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new re(n,i,o,r)};var PDe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,RDe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,MDe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,NDe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;re.fromCssColorString=function(e,t){l(t)||(t=new re),e=e.trim();let n=re[e.toUpperCase()];if(l(n))return re.clone(n,t),t;let i=PDe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=RDe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=MDe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=NDe.exec(e),i!==null?re.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};re.packedLength=4;re.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};re.unpack=function(e,t,n){return t=t??0,l(n)||(n=new re),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};re.byteToFloat=function(e){return e/255};re.floatToByte=function(e){return e===1?255:e*256|0};re.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new re(e.red,e.green,e.blue,e.alpha)};re.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};re.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};re.prototype.clone=function(e){return re.clone(this,e)};re.prototype.equals=function(e){return re.equals(this,e)};re.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};re.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};re.prototype.toCssColorString=function(){let e=re.floatToByte(this.red),t=re.floatToByte(this.green),n=re.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};re.prototype.toCssHexString=function(){let e=re.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=re.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=re.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=re.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};re.prototype.toBytes=function(e){let t=re.floatToByte(this.red),n=re.floatToByte(this.green),i=re.floatToByte(this.blue),o=re.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};re.prototype.toRgba=function(){return NA[0]=re.floatToByte(this.red),NA[1]=re.floatToByte(this.green),NA[2]=re.floatToByte(this.blue),NA[3]=re.floatToByte(this.alpha),g9[0]};re.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};re.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};re.prototype.withAlpha=function(e,t){return re.fromAlpha(this,e,t)};re.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};re.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};re.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};re.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};re.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};re.lerp=function(e,t,n,i){return i.red=D.lerp(e.red,t.red,n),i.green=D.lerp(e.green,t.green,n),i.blue=D.lerp(e.blue,t.blue,n),i.alpha=D.lerp(e.alpha,t.alpha,n),i};re.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};re.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};re.ALICEBLUE=Object.freeze(re.fromCssColorString("#F0F8FF"));re.ANTIQUEWHITE=Object.freeze(re.fromCssColorString("#FAEBD7"));re.AQUA=Object.freeze(re.fromCssColorString("#00FFFF"));re.AQUAMARINE=Object.freeze(re.fromCssColorString("#7FFFD4"));re.AZURE=Object.freeze(re.fromCssColorString("#F0FFFF"));re.BEIGE=Object.freeze(re.fromCssColorString("#F5F5DC"));re.BISQUE=Object.freeze(re.fromCssColorString("#FFE4C4"));re.BLACK=Object.freeze(re.fromCssColorString("#000000"));re.BLANCHEDALMOND=Object.freeze(re.fromCssColorString("#FFEBCD"));re.BLUE=Object.freeze(re.fromCssColorString("#0000FF"));re.BLUEVIOLET=Object.freeze(re.fromCssColorString("#8A2BE2"));re.BROWN=Object.freeze(re.fromCssColorString("#A52A2A"));re.BURLYWOOD=Object.freeze(re.fromCssColorString("#DEB887"));re.CADETBLUE=Object.freeze(re.fromCssColorString("#5F9EA0"));re.CHARTREUSE=Object.freeze(re.fromCssColorString("#7FFF00"));re.CHOCOLATE=Object.freeze(re.fromCssColorString("#D2691E"));re.CORAL=Object.freeze(re.fromCssColorString("#FF7F50"));re.CORNFLOWERBLUE=Object.freeze(re.fromCssColorString("#6495ED"));re.CORNSILK=Object.freeze(re.fromCssColorString("#FFF8DC"));re.CRIMSON=Object.freeze(re.fromCssColorString("#DC143C"));re.CYAN=Object.freeze(re.fromCssColorString("#00FFFF"));re.DARKBLUE=Object.freeze(re.fromCssColorString("#00008B"));re.DARKCYAN=Object.freeze(re.fromCssColorString("#008B8B"));re.DARKGOLDENROD=Object.freeze(re.fromCssColorString("#B8860B"));re.DARKGRAY=Object.freeze(re.fromCssColorString("#A9A9A9"));re.DARKGREEN=Object.freeze(re.fromCssColorString("#006400"));re.DARKGREY=re.DARKGRAY;re.DARKKHAKI=Object.freeze(re.fromCssColorString("#BDB76B"));re.DARKMAGENTA=Object.freeze(re.fromCssColorString("#8B008B"));re.DARKOLIVEGREEN=Object.freeze(re.fromCssColorString("#556B2F"));re.DARKORANGE=Object.freeze(re.fromCssColorString("#FF8C00"));re.DARKORCHID=Object.freeze(re.fromCssColorString("#9932CC"));re.DARKRED=Object.freeze(re.fromCssColorString("#8B0000"));re.DARKSALMON=Object.freeze(re.fromCssColorString("#E9967A"));re.DARKSEAGREEN=Object.freeze(re.fromCssColorString("#8FBC8F"));re.DARKSLATEBLUE=Object.freeze(re.fromCssColorString("#483D8B"));re.DARKSLATEGRAY=Object.freeze(re.fromCssColorString("#2F4F4F"));re.DARKSLATEGREY=re.DARKSLATEGRAY;re.DARKTURQUOISE=Object.freeze(re.fromCssColorString("#00CED1"));re.DARKVIOLET=Object.freeze(re.fromCssColorString("#9400D3"));re.DEEPPINK=Object.freeze(re.fromCssColorString("#FF1493"));re.DEEPSKYBLUE=Object.freeze(re.fromCssColorString("#00BFFF"));re.DIMGRAY=Object.freeze(re.fromCssColorString("#696969"));re.DIMGREY=re.DIMGRAY;re.DODGERBLUE=Object.freeze(re.fromCssColorString("#1E90FF"));re.FIREBRICK=Object.freeze(re.fromCssColorString("#B22222"));re.FLORALWHITE=Object.freeze(re.fromCssColorString("#FFFAF0"));re.FORESTGREEN=Object.freeze(re.fromCssColorString("#228B22"));re.FUCHSIA=Object.freeze(re.fromCssColorString("#FF00FF"));re.GAINSBORO=Object.freeze(re.fromCssColorString("#DCDCDC"));re.GHOSTWHITE=Object.freeze(re.fromCssColorString("#F8F8FF"));re.GOLD=Object.freeze(re.fromCssColorString("#FFD700"));re.GOLDENROD=Object.freeze(re.fromCssColorString("#DAA520"));re.GRAY=Object.freeze(re.fromCssColorString("#808080"));re.GREEN=Object.freeze(re.fromCssColorString("#008000"));re.GREENYELLOW=Object.freeze(re.fromCssColorString("#ADFF2F"));re.GREY=re.GRAY;re.HONEYDEW=Object.freeze(re.fromCssColorString("#F0FFF0"));re.HOTPINK=Object.freeze(re.fromCssColorString("#FF69B4"));re.INDIANRED=Object.freeze(re.fromCssColorString("#CD5C5C"));re.INDIGO=Object.freeze(re.fromCssColorString("#4B0082"));re.IVORY=Object.freeze(re.fromCssColorString("#FFFFF0"));re.KHAKI=Object.freeze(re.fromCssColorString("#F0E68C"));re.LAVENDER=Object.freeze(re.fromCssColorString("#E6E6FA"));re.LAVENDAR_BLUSH=Object.freeze(re.fromCssColorString("#FFF0F5"));re.LAWNGREEN=Object.freeze(re.fromCssColorString("#7CFC00"));re.LEMONCHIFFON=Object.freeze(re.fromCssColorString("#FFFACD"));re.LIGHTBLUE=Object.freeze(re.fromCssColorString("#ADD8E6"));re.LIGHTCORAL=Object.freeze(re.fromCssColorString("#F08080"));re.LIGHTCYAN=Object.freeze(re.fromCssColorString("#E0FFFF"));re.LIGHTGOLDENRODYELLOW=Object.freeze(re.fromCssColorString("#FAFAD2"));re.LIGHTGRAY=Object.freeze(re.fromCssColorString("#D3D3D3"));re.LIGHTGREEN=Object.freeze(re.fromCssColorString("#90EE90"));re.LIGHTGREY=re.LIGHTGRAY;re.LIGHTPINK=Object.freeze(re.fromCssColorString("#FFB6C1"));re.LIGHTSEAGREEN=Object.freeze(re.fromCssColorString("#20B2AA"));re.LIGHTSKYBLUE=Object.freeze(re.fromCssColorString("#87CEFA"));re.LIGHTSLATEGRAY=Object.freeze(re.fromCssColorString("#778899"));re.LIGHTSLATEGREY=re.LIGHTSLATEGRAY;re.LIGHTSTEELBLUE=Object.freeze(re.fromCssColorString("#B0C4DE"));re.LIGHTYELLOW=Object.freeze(re.fromCssColorString("#FFFFE0"));re.LIME=Object.freeze(re.fromCssColorString("#00FF00"));re.LIMEGREEN=Object.freeze(re.fromCssColorString("#32CD32"));re.LINEN=Object.freeze(re.fromCssColorString("#FAF0E6"));re.MAGENTA=Object.freeze(re.fromCssColorString("#FF00FF"));re.MAROON=Object.freeze(re.fromCssColorString("#800000"));re.MEDIUMAQUAMARINE=Object.freeze(re.fromCssColorString("#66CDAA"));re.MEDIUMBLUE=Object.freeze(re.fromCssColorString("#0000CD"));re.MEDIUMORCHID=Object.freeze(re.fromCssColorString("#BA55D3"));re.MEDIUMPURPLE=Object.freeze(re.fromCssColorString("#9370DB"));re.MEDIUMSEAGREEN=Object.freeze(re.fromCssColorString("#3CB371"));re.MEDIUMSLATEBLUE=Object.freeze(re.fromCssColorString("#7B68EE"));re.MEDIUMSPRINGGREEN=Object.freeze(re.fromCssColorString("#00FA9A"));re.MEDIUMTURQUOISE=Object.freeze(re.fromCssColorString("#48D1CC"));re.MEDIUMVIOLETRED=Object.freeze(re.fromCssColorString("#C71585"));re.MIDNIGHTBLUE=Object.freeze(re.fromCssColorString("#191970"));re.MINTCREAM=Object.freeze(re.fromCssColorString("#F5FFFA"));re.MISTYROSE=Object.freeze(re.fromCssColorString("#FFE4E1"));re.MOCCASIN=Object.freeze(re.fromCssColorString("#FFE4B5"));re.NAVAJOWHITE=Object.freeze(re.fromCssColorString("#FFDEAD"));re.NAVY=Object.freeze(re.fromCssColorString("#000080"));re.OLDLACE=Object.freeze(re.fromCssColorString("#FDF5E6"));re.OLIVE=Object.freeze(re.fromCssColorString("#808000"));re.OLIVEDRAB=Object.freeze(re.fromCssColorString("#6B8E23"));re.ORANGE=Object.freeze(re.fromCssColorString("#FFA500"));re.ORANGERED=Object.freeze(re.fromCssColorString("#FF4500"));re.ORCHID=Object.freeze(re.fromCssColorString("#DA70D6"));re.PALEGOLDENROD=Object.freeze(re.fromCssColorString("#EEE8AA"));re.PALEGREEN=Object.freeze(re.fromCssColorString("#98FB98"));re.PALETURQUOISE=Object.freeze(re.fromCssColorString("#AFEEEE"));re.PALEVIOLETRED=Object.freeze(re.fromCssColorString("#DB7093"));re.PAPAYAWHIP=Object.freeze(re.fromCssColorString("#FFEFD5"));re.PEACHPUFF=Object.freeze(re.fromCssColorString("#FFDAB9"));re.PERU=Object.freeze(re.fromCssColorString("#CD853F"));re.PINK=Object.freeze(re.fromCssColorString("#FFC0CB"));re.PLUM=Object.freeze(re.fromCssColorString("#DDA0DD"));re.POWDERBLUE=Object.freeze(re.fromCssColorString("#B0E0E6"));re.PURPLE=Object.freeze(re.fromCssColorString("#800080"));re.RED=Object.freeze(re.fromCssColorString("#FF0000"));re.ROSYBROWN=Object.freeze(re.fromCssColorString("#BC8F8F"));re.ROYALBLUE=Object.freeze(re.fromCssColorString("#4169E1"));re.SADDLEBROWN=Object.freeze(re.fromCssColorString("#8B4513"));re.SALMON=Object.freeze(re.fromCssColorString("#FA8072"));re.SANDYBROWN=Object.freeze(re.fromCssColorString("#F4A460"));re.SEAGREEN=Object.freeze(re.fromCssColorString("#2E8B57"));re.SEASHELL=Object.freeze(re.fromCssColorString("#FFF5EE"));re.SIENNA=Object.freeze(re.fromCssColorString("#A0522D"));re.SILVER=Object.freeze(re.fromCssColorString("#C0C0C0"));re.SKYBLUE=Object.freeze(re.fromCssColorString("#87CEEB"));re.SLATEBLUE=Object.freeze(re.fromCssColorString("#6A5ACD"));re.SLATEGRAY=Object.freeze(re.fromCssColorString("#708090"));re.SLATEGREY=re.SLATEGRAY;re.SNOW=Object.freeze(re.fromCssColorString("#FFFAFA"));re.SPRINGGREEN=Object.freeze(re.fromCssColorString("#00FF7F"));re.STEELBLUE=Object.freeze(re.fromCssColorString("#4682B4"));re.TAN=Object.freeze(re.fromCssColorString("#D2B48C"));re.TEAL=Object.freeze(re.fromCssColorString("#008080"));re.THISTLE=Object.freeze(re.fromCssColorString("#D8BFD8"));re.TOMATO=Object.freeze(re.fromCssColorString("#FF6347"));re.TURQUOISE=Object.freeze(re.fromCssColorString("#40E0D0"));re.VIOLET=Object.freeze(re.fromCssColorString("#EE82EE"));re.WHEAT=Object.freeze(re.fromCssColorString("#F5DEB3"));re.WHITE=Object.freeze(re.fromCssColorString("#FFFFFF"));re.WHITESMOKE=Object.freeze(re.fromCssColorString("#F5F5F5"));re.YELLOW=Object.freeze(re.fromCssColorString("#FFFF00"));re.YELLOWGREEN=Object.freeze(re.fromCssColorString("#9ACD32"));re.TRANSPARENT=Object.freeze(new re(0,0,0,0));var G=re;function LDe(){return!0}function ODe(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=LDe}var ue=ODe;function Cu(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Cu.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Cu.packedLength=2;Cu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Cu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Cu),n.near=e[t++],n.far=e[t],n};Cu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Cu.clone=function(e,t){if(l(e))return l(t)||(t=new Cu),t.near=e.near,t.far=e.far,t};Cu.prototype.clone=function(e){return Cu.clone(this,e)};Cu.prototype.equals=function(e){return Cu.equals(this,e)};var Ut=Cu;function gf(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}gf.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new gf(e.near,e.nearValue,e.far,e.farValue)};gf.packedLength=4;gf.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};gf.unpack=function(e,t,n){return t=t??0,l(n)||(n=new gf),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};gf.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};gf.prototype.clone=function(e){return gf.clone(this,e)};gf.prototype.equals=function(e){return gf.equals(this,e)};var Yt=gf;var hC={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ze=Object.freeze(hC);function _f(e){return e===hC.CLAMP_TO_GROUND||e===hC.CLAMP_TO_3D_TILE||e===hC.CLAMP_TO_TERRAIN}function rI(e){return e===hC.RELATIVE_TO_GROUND||e===hC.RELATIVE_TO_3D_TILE||e===hC.RELATIVE_TO_TERRAIN}var FDe={CENTER:0,LEFT:1,RIGHT:-1},Ri=Object.freeze(FDe);var QDe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},Wn=Object.freeze(QDe);var kDe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),mt=kDe;function Nd(){me.throwInstantiationError()}Object.defineProperties(Nd.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});Nd.prototype.getValue=me.throwInstantiationError;Nd.prototype.equals=me.throwInstantiationError;Nd.equals=function(e,t){return e===t||l(e)&&e.equals(t)};Nd.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!Nd.equals(e[i],t[i]))return!1;return!0};Nd.isConstant=function(e){return!l(e)||e.isConstant};Nd.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};Nd.getValueOrDefault=function(e,t,n,i){return l(e)?e.getValue(t,i)??n:n};Nd.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var j=Nd;var UDe={LEFT:-1,NONE:0,RIGHT:1},wr=Object.freeze(UDe);var GDe=G.WHITE,zDe=d.ZERO,VDe=Ze.NONE,HDe=k.ZERO,WDe=1,jDe=0,YDe=d.ZERO,qDe=Ri.CENTER,KDe=Wn.CENTER,XDe=!1,JDe=wr.NONE,ZDe=new d,$De=new G,eve=new d,tve=new k,nve=new Yt,ive=new Yt,ove=new Yt,rve=new Xe,sve=new Ut;function Cee(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function yg(e,t){t.collectionChanged.addEventListener(yg.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}yg.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,ZDe),c=j.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){_9(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=j.getValueOrDefault(a._color,e,GDe,$De),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,zDe,eve),u.heightReference=j.getValueOrDefault(a._heightReference,e,VDe),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,HDe,tve),u.scale=j.getValueOrDefault(a._scale,e,WDe),u.rotation=j.getValueOrDefault(a._rotation,e,jDe),u.alignedAxis=j.getValueOrDefault(a._alignedAxis,e,YDe),u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,qDe),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,KDe),u.width=j.getValueOrUndefined(a._width,e),u.height=j.getValueOrUndefined(a._height,e),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,nve),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,ive),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,ove),u.sizeInMeters=j.getValueOrDefault(a._sizeInMeters,e,XDe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,sve),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,JDe);let A=j.getValueOrUndefined(a._imageSubRegion,e,rve);l(A)&&u.setImageSubRegion(u.image,A)}return!0};yg.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return mt.FAILED;let i=n.billboard;if(i.heightReference===Ze.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};yg.prototype.isDestroyed=function(){return!1};yg.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(yg.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};yg.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new Cee(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Cee(r)):(_9(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],_9(s.get(r.id),r,a),s.remove(r.id)};function _9(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var sM=yg;function ave(e,t){this.start=e??0,this.stop=t??0}var _c=ave;function Cn(e,t){this.center=d.clone(e??d.ZERO),this.radius=t??0}var E9=new d,I9=new d,x9=new d,b9=new d,T9=new d,S9=new d,w9=new d,xa=new d,B9=new d,D9=new d,v9=new d,P9=new d,cve=4/3*D.PI;Cn.fromPoints=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],w9),i=d.clone(n,E9),o=d.clone(n,I9),r=d.clone(n,x9),s=d.clone(n,b9),a=d.clone(n,T9),c=d.clone(n,S9),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let P=n.x,N=n.y,L=n.z;P<i.x&&d.clone(n,i),P>s.x&&d.clone(n,s),N<o.y&&d.clone(n,o),N>a.y&&d.clone(n,a),L<r.z&&d.clone(n,r),L>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,xa)),A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=i,_=s,y=h;A>y&&(y=A,m=o,_=a),g>y&&(y=g,m=r,_=c);let C=B9;C.x=(m.x+_.x)*.5,C.y=(m.y+_.y)*.5,C.z=(m.z+_.z)*.5;let E=d.magnitudeSquared(d.subtract(_,C,xa)),I=Math.sqrt(E),b=D9;b.x=i.x,b.y=o.y,b.z=r.z;let S=v9;S.x=s.x,S.y=a.y,S.z=c.z;let B=d.midpoint(b,S,P9),v=0;for(f=0;f<u;f++){d.clone(e[f],n);let P=d.magnitude(d.subtract(n,B,xa));P>v&&(v=P);let N=d.magnitudeSquared(d.subtract(n,C,xa));if(N>E){let L=Math.sqrt(N);I=(I+L)*.5,E=I*I;let p=L-I;C.x=(I*C.x+p*n.x)/L,C.y=(I*C.y+p*n.y)/L,C.z=(I*C.z+p*n.z)/L}}return I<v?(d.clone(C,t.center),t.radius=I):(d.clone(B,t.center),t.radius=v),t};var Eee=new Hi,lve=new d,uve=new d,y9=new Ae,C9=new Ae;Cn.fromRectangle2D=function(e,t,n){return Cn.fromRectangleWithHeights2D(e,t,0,0,n)};Cn.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new Cn),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;Eee._ellipsoid=te.default,t=t??Eee,ae.southwest(e,y9),y9.height=n,ae.northeast(e,C9),C9.height=i;let r=t.project(y9,lve),s=t.project(C9,uve),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var fve=[];Cn.fromRectangle3D=function(e,t,n,i){if(t=t??te.default,n=n??0,l(i)||(i=new Cn),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,fve);return Cn.fromPoints(o,i)};Cn.fromVertices=function(e,t,n,i){if(l(i)||(i=new Cn),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=t??d.ZERO,n=n??3;let o=w9;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,E9),s=d.clone(o,I9),a=d.clone(o,x9),c=d.clone(o,b9),u=d.clone(o,T9),f=d.clone(o,S9),h=e.length,A;for(A=0;A<h;A+=n){let L=e[A]+t.x,p=e[A+1]+t.y,x=e[A+2]+t.z;o.x=L,o.y=p,o.z=x,L<r.x&&d.clone(o,r),L>c.x&&d.clone(o,c),p<s.y&&d.clone(o,s),p>u.y&&d.clone(o,u),x<a.z&&d.clone(o,a),x>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=d.magnitudeSquared(d.subtract(f,a,xa)),y=r,C=c,E=g;m>E&&(E=m,y=s,C=u),_>E&&(E=_,y=a,C=f);let I=B9;I.x=(y.x+C.x)*.5,I.y=(y.y+C.y)*.5,I.z=(y.z+C.z)*.5;let b=d.magnitudeSquared(d.subtract(C,I,xa)),S=Math.sqrt(b),B=D9;B.x=r.x,B.y=s.y,B.z=a.z;let v=v9;v.x=c.x,v.y=u.y,v.z=f.z;let P=d.midpoint(B,v,P9),N=0;for(A=0;A<h;A+=n){o.x=e[A]+t.x,o.y=e[A+1]+t.y,o.z=e[A+2]+t.z;let L=d.magnitude(d.subtract(o,P,xa));L>N&&(N=L);let p=d.magnitudeSquared(d.subtract(o,I,xa));if(p>b){let x=Math.sqrt(p);S=(S+x)*.5,b=S*S;let T=x-S;I.x=(S*I.x+T*o.x)/x,I.y=(S*I.y+T*o.y)/x,I.z=(S*I.z+T*o.z)/x}}return S<N?(d.clone(I,i.center),i.radius=S):(d.clone(P,i.center),i.radius=N),i};Cn.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new Cn),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=w9;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,E9),r=d.clone(i,I9),s=d.clone(i,x9),a=d.clone(i,b9),c=d.clone(i,T9),u=d.clone(i,S9),f=e.length,h;for(h=0;h<f;h+=3){let N=e[h]+t[h],L=e[h+1]+t[h+1],p=e[h+2]+t[h+2];i.x=N,i.y=L,i.z=p,N<o.x&&d.clone(i,o),N>a.x&&d.clone(i,a),L<r.y&&d.clone(i,r),L>c.y&&d.clone(i,c),p<s.z&&d.clone(i,s),p>u.z&&d.clone(i,u)}let A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=o,y=a,C=A;g>C&&(C=g,_=r,y=c),m>C&&(C=m,_=s,y=u);let E=B9;E.x=(_.x+y.x)*.5,E.y=(_.y+y.y)*.5,E.z=(_.z+y.z)*.5;let I=d.magnitudeSquared(d.subtract(y,E,xa)),b=Math.sqrt(I),S=D9;S.x=o.x,S.y=r.y,S.z=s.z;let B=v9;B.x=a.x,B.y=c.y,B.z=u.z;let v=d.midpoint(S,B,P9),P=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let N=d.magnitude(d.subtract(i,v,xa));N>P&&(P=N);let L=d.magnitudeSquared(d.subtract(i,E,xa));if(L>I){let p=Math.sqrt(L);b=(b+p)*.5,I=b*b;let x=p-b;E.x=(b*E.x+x*i.x)/p,E.y=(b*E.y+x*i.y)/p,E.z=(b*E.z+x*i.z)/p}}return b<P?(d.clone(E,n.center),n.radius=b):(d.clone(v,n.center),n.radius=P),n};Cn.fromCornerPoints=function(e,t,n){l(n)||(n=new Cn);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};Cn.fromEllipsoid=function(e,t){return l(t)||(t=new Cn),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var dve=new d;Cn.fromBoundingSpheres=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return Cn.clone(e[0],t);if(n===2)return Cn.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=Cn.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,dve)+a.radius)}return t.radius=s,t};var hve=new d,mve=new d,Ave=new d;Cn.fromOrientedBoundingBox=function(e,t){l(t)||(t=new Cn);let n=e.halfAxes,i=J.getColumn(n,0,hve),o=J.getColumn(n,1,mve),r=J.getColumn(n,2,Ave);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var pve=new d,gve=new d;Cn.fromTransformation=function(e,t){l(t)||(t=new Cn);let n=R.getTranslation(e,pve),i=R.getScale(e,gve),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};Cn.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new Cn(e.center,e.radius)};Cn.packedLength=4;Cn.pack=function(e,t,n){n=n??0;let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};Cn.unpack=function(e,t,n){t=t??0,l(n)||(n=new Cn);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var _ve=new d,yve=new d;Cn.union=function(e,t,n){l(n)||(n=new Cn);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,_ve),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,yve);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var Cve=new d;Cn.expand=function(e,t,n){n=Cn.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,Cve));return i>n.radius&&(n.radius=i),n};Cn.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?nn.OUTSIDE:r<i?nn.INTERSECTING:nn.INSIDE};Cn.transform=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=R.getMaximumScale(t)*e.radius,n};var Eve=new d;Cn.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,Eve),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};Cn.transformWithoutScale=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var Ive=new d;Cn.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=d.subtract(e.center,t,Ive),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var Iee=new d,xve=new d,bve=new d,Tve=new d,Sve=new d,wve=new Ae,bee=new Array(8);for(let e=0;e<8;++e)bee[e]=new d;var xee=new Hi;Cn.projectTo2D=function(e,t,n){xee._ellipsoid=te.default,t=t??xee;let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,Iee):s=i.geodeticSurfaceNormal(o,Iee);let a=d.cross(d.UNIT_Z,s,xve);d.normalize(a,a);let c=d.cross(s,a,bve);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,Sve),f=d.negate(a,Tve),h=bee,A=h[0];d.add(s,c,A),d.add(A,a,A),A=h[1],d.add(s,c,A),d.add(A,f,A),A=h[2],d.add(s,u,A),d.add(A,f,A),A=h[3],d.add(s,u,A),d.add(A,a,A),d.negate(s,s),A=h[4],d.add(s,c,A),d.add(A,a,A),A=h[5],d.add(s,c,A),d.add(A,f,A),A=h[6],d.add(s,u,A),d.add(A,f,A),A=h[7],d.add(s,u,A),d.add(A,a,A);let g=h.length;for(let C=0;C<g;++C){let E=h[C];d.add(o,E,E);let I=i.cartesianToCartographic(E,wve);t.project(I,E)}n=Cn.fromPoints(h,n),o=n.center;let m=o.x,_=o.y,y=o.z;return o.x=y,o.y=m,o.z=_,n};Cn.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};Cn.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};Cn.prototype.intersectPlane=function(e){return Cn.intersectPlane(this,e)};Cn.prototype.distanceSquaredTo=function(e){return Cn.distanceSquaredTo(this,e)};Cn.prototype.computePlaneDistances=function(e,t,n){return Cn.computePlaneDistances(this,e,t,n)};Cn.prototype.isOccluded=function(e){return Cn.isOccluded(this,e)};Cn.prototype.equals=function(e){return Cn.equals(this,e)};Cn.prototype.clone=function(e){return Cn.clone(this,e)};Cn.prototype.volume=function(){let e=this.radius;return cve*e*e*e};var le=Cn;var Bve={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},ee=Object.freeze(Bve);var Pn={BYTE:ee.BYTE,UNSIGNED_BYTE:ee.UNSIGNED_BYTE,SHORT:ee.SHORT,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,INT:ee.INT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,DOUBLE:ee.DOUBLE};Pn.getSizeInBytes=function(e){switch(e){case Pn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Pn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Pn.INT:return Int32Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Pn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Pn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Pn.fromTypedArray=function(e){if(e instanceof Int8Array)return Pn.BYTE;if(e instanceof Uint8Array)return Pn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Pn.SHORT;if(e instanceof Uint16Array)return Pn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Pn.INT;if(e instanceof Uint32Array)return Pn.UNSIGNED_INT;if(e instanceof Float32Array)return Pn.FLOAT;if(e instanceof Float64Array)return Pn.DOUBLE};Pn.validate=function(e){return l(e)&&(e===Pn.BYTE||e===Pn.UNSIGNED_BYTE||e===Pn.SHORT||e===Pn.UNSIGNED_SHORT||e===Pn.INT||e===Pn.UNSIGNED_INT||e===Pn.FLOAT||e===Pn.DOUBLE)};Pn.createTypedArray=function(e,t){switch(e){case Pn.BYTE:return new Int8Array(t);case Pn.UNSIGNED_BYTE:return new Uint8Array(t);case Pn.SHORT:return new Int16Array(t);case Pn.UNSIGNED_SHORT:return new Uint16Array(t);case Pn.INT:return new Int32Array(t);case Pn.UNSIGNED_INT:return new Uint32Array(t);case Pn.FLOAT:return new Float32Array(t);case Pn.DOUBLE:return new Float64Array(t)}};Pn.createArrayBufferView=function(e,t,n,i){switch(n=n??0,i=i??(t.byteLength-n)/Pn.getSizeInBytes(e),e){case Pn.BYTE:return new Int8Array(t,n,i);case Pn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Pn.SHORT:return new Int16Array(t,n,i);case Pn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Pn.INT:return new Int32Array(t,n,i);case Pn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Pn.FLOAT:return new Float32Array(t,n,i);case Pn.DOUBLE:return new Float64Array(t,n,i)}};Pn.fromName=function(e){switch(e){case"BYTE":return Pn.BYTE;case"UNSIGNED_BYTE":return Pn.UNSIGNED_BYTE;case"SHORT":return Pn.SHORT;case"UNSIGNED_SHORT":return Pn.UNSIGNED_SHORT;case"INT":return Pn.INT;case"UNSIGNED_INT":return Pn.UNSIGNED_INT;case"FLOAT":return Pn.FLOAT;case"DOUBLE":return Pn.DOUBLE}};var q=Object.freeze(Pn);var Dve={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},Ld=Object.freeze(Dve);function sn(e,t,n,i){this[0]=e??0,this[1]=n??0,this[2]=t??0,this[3]=i??0}sn.packedLength=4;sn.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};sn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new sn),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};sn.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)sn.pack(e[o],t,o*4);return t};sn.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=sn.unpack(e,i,t[o])}return t};sn.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new sn(e[0],e[2],e[1],e[3])};sn.fromArray=sn.unpack;sn.fromColumnMajorArray=function(e,t){return sn.clone(e,t)};sn.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new sn(e[0],e[1],e[2],e[3])};sn.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new sn(e.x,0,0,e.y)};sn.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new sn(e,0,0,e)};sn.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new sn(n,-i,i,n)};sn.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};sn.getElementIndex=function(e,t){return e*2+t};sn.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};sn.setColumn=function(e,t,n,i){i=sn.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};sn.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};sn.setRow=function(e,t,n,i){return i=sn.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var vve=new k;sn.setScale=function(e,t,n){let i=sn.getScale(e,vve),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Pve=new k;sn.setUniformScale=function(e,t,n){let i=sn.getScale(e,Pve),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Tee=new k;sn.getScale=function(e,t){return t.x=k.magnitude(k.fromElements(e[0],e[1],Tee)),t.y=k.magnitude(k.fromElements(e[2],e[3],Tee)),t};var See=new k;sn.getMaximumScale=function(e){return sn.getScale(e,See),k.maximumComponent(See)};var Rve=new k;sn.setRotation=function(e,t,n){let i=sn.getScale(e,Rve);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var Mve=new k;sn.getRotation=function(e,t){let n=sn.getScale(e,Mve);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};sn.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};sn.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};sn.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};sn.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};sn.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};sn.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};sn.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};sn.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};sn.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};sn.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};sn.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};sn.IDENTITY=Object.freeze(new sn(1,0,0,1));sn.ZERO=Object.freeze(new sn(0,0,0,0));sn.COLUMN0ROW0=0;sn.COLUMN0ROW1=1;sn.COLUMN1ROW0=2;sn.COLUMN1ROW1=3;Object.defineProperties(sn.prototype,{length:{get:function(){return sn.packedLength}}});sn.prototype.clone=function(e){return sn.clone(this,e)};sn.prototype.equals=function(e){return sn.equals(this,e)};sn.prototype.equalsEpsilon=function(e,t){return sn.equalsEpsilon(this,e,t)};sn.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var Wi=sn;var Xa={POINTS:ee.POINTS,LINES:ee.LINES,LINE_LOOP:ee.LINE_LOOP,LINE_STRIP:ee.LINE_STRIP,TRIANGLES:ee.TRIANGLES,TRIANGLE_STRIP:ee.TRIANGLE_STRIP,TRIANGLE_FAN:ee.TRIANGLE_FAN};Xa.isLines=function(e){return e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP};Xa.isTriangles=function(e){return e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};Xa.validate=function(e){return e===Xa.POINTS||e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP||e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};var Me=Object.freeze(Xa);function R9(e){e=e??V.EMPTY_OBJECT,this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=e.primitiveType??Me.TRIANGLES,this.boundingSphere=e.boundingSphere,this.geometryType=e.geometryType??Ld.NONE,this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}R9.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var Nve=new Ae,Lve=new d,wee=new R,Ove=[new Ae,new Ae,new Ae],Fve=[new k,new k,new k],Qve=[new k,new k,new k],kve=new d,Uve=new Le,Gve=new R,zve=new Wi;R9._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,Nve),s=Ae.toCartesian(r,n,Lve),a=kt.eastNorthUpToFixedFrame(s,n,wee),c=R.inverse(a,wee),u=Fve,f=Ove;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=kve;for(o=0;o<3;o++)Ae.toCartesian(f[o],n,h),h=R.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let A=Le.fromAxisAngle(d.UNIT_Z,-t,Uve),g=J.fromQuaternion(A,Gve),m=e.length,_=Number.POSITIVE_INFINITY,y=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=R.multiplyByPointAsVector(c,e[o],h),h=J.multiplyByVector(g,h,h),_=Math.min(_,h.x),y=Math.min(y,h.y),C=Math.max(C,h.x),E=Math.max(E,h.y);let I=Wi.fromRotation(t,zve),b=Qve;b[0].x=_,b[0].y=y,b[1].x=_,b[1].y=E,b[2].x=C,b[2].y=y;let S=u[0],B=u[2].x-S.x,v=u[1].y-S.y;for(o=0;o<3;o++){let x=b[o];Wi.multiplyByVector(I,x,x),x.x=(x.x-S.x)/B,x.y=(x.y-S.y)/v}let P=b[0],N=b[1],L=b[2],p=new Array(6);return k.pack(P,p),k.pack(N,p,2),k.pack(L,p,4),p};var ht=R9;function Vve(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.values=e.values}var De=Vve;function Hve(e){e=e??V.EMPTY_OBJECT,this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var En=Hve;var Wve={NONE:0,TOP:1,ALL:2},hn=Object.freeze(Wve);function Is(e){e=e??V.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}Is.POSITION_ONLY=Object.freeze(new Is({position:!0}));Is.POSITION_AND_NORMAL=Object.freeze(new Is({position:!0,normal:!0}));Is.POSITION_NORMAL_AND_ST=Object.freeze(new Is({position:!0,normal:!0,st:!0}));Is.POSITION_AND_ST=Object.freeze(new Is({position:!0,st:!0}));Is.POSITION_AND_COLOR=Object.freeze(new Is({position:!0,color:!0}));Is.ALL=Object.freeze(new Is({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));Is.DEFAULT=Is.POSITION_NORMAL_AND_ST;Is.packedLength=6;Is.pack=function(e,t,n){return n=n??0,t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};Is.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Is),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};Is.clone=function(e,t){if(l(e))return l(t)||(t=new Is),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Pe=Is;var jve=new d;function Eu(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum,i=e.vertexFormat??Pe.DEFAULT;this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}Eu.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Eu({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};Eu.fromAxisAlignedBoundingBox=function(e){return new Eu({minimum:e.minimum,maximum:e.maximum})};Eu.packedLength=2*d.packedLength+Pe.packedLength+1;Eu.pack=function(e,t,n){return n=n??0,d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Pe.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Pe.packedLength]=e._offsetAttribute??-1,t};var Dee=new d,vee=new d,Pee=new Pe,Bee={minimum:Dee,maximum:vee,vertexFormat:Pee,offsetAttribute:void 0};Eu.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Dee),o=d.unpack(e,t+d.packedLength,vee),r=Pe.unpack(e,t+2*d.packedLength,Pee),s=e[t+2*d.packedLength+Pe.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(Bee.offsetAttribute=s===-1?void 0:s,new Eu(Bee))};Eu.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new En,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(72),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(36),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(24),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(36),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,jve),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===hn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ht({attributes:o,indices:r,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var M9;Eu.getUnitBox=function(){return l(M9)||(M9=Eu.createGeometry(Eu.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),M9};var yc=Eu;var Yve=new d;function Zh(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Zh.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Zh({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Zh.fromAxisAlignedBoundingBox=function(e){return new Zh({minimum:e.minimum,maximum:e.maximum})};Zh.packedLength=2*d.packedLength+1;Zh.pack=function(e,t,n){return n=n??0,d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=e._offsetAttribute??-1,t};var Mee=new d,Nee=new d,Ree={minimum:Mee,maximum:Nee,offsetAttribute:void 0};Zh.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Mee),o=d.unpack(e,t+d.packedLength,Nee),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(Ree.offsetAttribute=r===-1?void 0:r,new Zh(Ree))};Zh.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new En,o=new Uint16Array(24),r=new Float64Array(24);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,Yve),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===hn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ht({attributes:i,indices:o,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var $h=Zh;function sI(e,t,n,i){e=e??1,t=t??1,n=n??1,i=i??1,this.value=new Uint8Array([G.floatToByte(e),G.floatToByte(t),G.floatToByte(n),G.floatToByte(i)])}Object.defineProperties(sI.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});sI.fromColor=function(e){return new sI(e.red,e.green,e.blue,e.alpha)};sI.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};sI.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var en=sI;function KS(e,t){e=e??0,t=t??Number.MAX_VALUE,this.value=new Float32Array([e,t])}Object.defineProperties(KS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});KS.fromDistanceDisplayCondition=function(e){return new KS(e.near,e.far)};KS.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Kn=KS;function qve(e){e=e??V.EMPTY_OBJECT,this.geometry=e.geometry,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Rt=qve;function nr(e){e=e??V.EMPTY_OBJECT,this.start=l(e.start)?K.clone(e.start):new K,this.stop=l(e.stop)?K.clone(e.stop):new K,this.data=e.data,this.isStartIncluded=e.isStartIncluded??!0,this.isStopIncluded=e.isStopIncluded??!0}Object.defineProperties(nr.prototype,{isEmpty:{get:function(){let e=K.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var aI={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};nr.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new me("options.iso8601 is an invalid ISO 8601 interval.");let i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(aI.start=i,aI.stop=o,aI.isStartIncluded=r,aI.isStopIncluded=s,aI.data=a,new nr(aI))};nr.toIso8601=function(e,t){return`${K.toIso8601(e.start,t)}/${K.toIso8601(e.stop,t)}`};nr.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new nr(e)};nr.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equals(e.start,t.start)&&K.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};nr.equalsEpsilon=function(e,t,n,i){return n=n??0,e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equalsEpsilon(e.start,t.start,n)&&K.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};nr.intersect=function(e,t,n,i){if(!l(t))return nr.clone(nr.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=K.greaterThanOrEquals(s,o)&&K.greaterThanOrEquals(r,s),u=!c&&K.lessThanOrEquals(s,o)&&K.lessThanOrEquals(o,a);if(!c&&!u)return nr.clone(nr.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,A=t.isStartIncluded,g=t.isStopIncluded,m=K.lessThan(r,a);return l(n)||(n=new nr),n.start=c?s:o,n.isStartIncluded=f&&A||!K.equals(s,o)&&(c&&A||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!K.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};nr.contains=function(e,t){if(e.isEmpty)return!1;let n=K.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=K.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};nr.prototype.clone=function(e){return nr.clone(this,e)};nr.prototype.equals=function(e,t){return nr.equals(this,e,t)};nr.prototype.equalsEpsilon=function(e,t,n){return nr.equalsEpsilon(this,e,t,n)};nr.prototype.toString=function(){return nr.toIso8601(this)};nr.EMPTY=Object.freeze(new nr({start:new K,stop:new K,isStartIncluded:!1,isStopIncluded:!1}));var Rn=nr;var Lee=Object.freeze(K.fromIso8601("0000-01-01T00:00:00Z")),Oee=Object.freeze(K.fromIso8601("9999-12-31T24:00:00Z")),Kve=Object.freeze(new Rn({start:Lee,stop:Oee})),Xve={MINIMUM_VALUE:Lee,MAXIMUM_VALUE:Oee,MAXIMUM_INTERVAL:Kve},je=Xve;function XS(e,t,n){e=e??0,t=t??0,n=n??0,this.value=new Float32Array([e,t,n])}Object.defineProperties(XS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});XS.fromCartesian3=function(e){return new XS(e.x,e.y,e.z)};XS.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var ho=XS;function aM(e){e=e??!0,this.value=aM.toValue(e)}Object.defineProperties(aM.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});aM.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var Bn=aM;var cM=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec3 v_tangentEC; +in vec3 v_bitangentEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC); + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = tangentToEyeMatrix; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var lM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec3 tangent; +in vec3 bitangent; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec3 v_tangentEC; +out vec3 v_bitangentEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_tangentEC = czm_normal * tangent; // tangent in eye coordinates + v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var uM=`in vec3 v_positionEC; +in vec3 v_normalEC; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var fM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var dM=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var hM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var Jve={ADD:ee.FUNC_ADD,SUBTRACT:ee.FUNC_SUBTRACT,REVERSE_SUBTRACT:ee.FUNC_REVERSE_SUBTRACT,MIN:ee.MIN,MAX:ee.MAX},Cc=Object.freeze(Jve);var Zve={ZERO:ee.ZERO,ONE:ee.ONE,SOURCE_COLOR:ee.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:ee.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:ee.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:ee.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:ee.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:ee.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:ee.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:ee.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:ee.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:ee.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:ee.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:ee.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:ee.SRC_ALPHA_SATURATE},Uo=Object.freeze(Zve);var $ve={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE,functionDestinationAlpha:Uo.ONE})},pn=Object.freeze($ve);var ePe={FRONT:ee.FRONT,BACK:ee.BACK,FRONT_AND_BACK:ee.FRONT_AND_BACK},Mi=Object.freeze(ePe);function cI(e){e=e??V.EMPTY_OBJECT,this.material=e.material,this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=e.closed??!1}Object.defineProperties(cI.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});cI.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(` +`)};cI.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};cI.prototype.getRenderState=function(){let e=this.isTranslucent(),t=ze(this.renderState,!1);return e?(t.depthMask=!1,t.blending=pn.ALPHA_BLEND):t.depthMask=!0,t};cI.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=pn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:Mi.BACK}),l(n)&&(i=wt(n,i,!0)),i};var go=cI;function tPe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Xn=tPe;function lI(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties(lI.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});lI.clone=function(e){if(l(e))return new lI(e._format,e._datatype,e._width,e._height,e._buffer)};lI.prototype.clone=function(){return lI.clone(this)};var mM=lI;var Fee=Es(_u(),1);function Qee(){if(!l(ba._canTransferArrayBuffer)){let e=O9("transferTypedArrayTest");e.postMessage=e.webkitPostMessage??e.postMessage;let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return ba._canTransferArrayBuffer=!1,ba._canTransferArrayBuffer}ba._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),ba._canTransferArrayBuffer=s}})}return ba._canTransferArrayBuffer}var L9=new _e;function N9(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function O9(e){let t=new Fee.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(aC(e))s=e;else if(!n){let a=fn(`${ba._workerModulePrefix}/${i}.js`);aC(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=N9(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${N9(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=N9(a),new Worker(r,o)}if(r=e,n||(r=fn(`${ba._workerModulePrefix+i}.js`)),!jt.supportsEsmWebWorkers())throw new ce("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function nPe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!jt.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new ce(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=fn(t.fallbackModulePath),n}n.wasmBinaryFile=fn(t.wasmBinaryFile);let i=await we.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function ba(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var iPe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new ce(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new me(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),L9.raiseEvent(s),i(s)}else L9.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},oPe=[];async function rPe(e,t,n){let i=await Promise.resolve(Qee());l(n)?i||(n.length=0):n=oPe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",iPe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:fn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function sPe(e,t,n){++e._activeTasks;try{let i=await rPe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}ba.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=O9(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return sPe(this,e,t)};ba.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=O9(this._workerPath),i=await nPe(this,e),o=await Promise.resolve(Qee()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new ce("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};ba.prototype.isDestroyed=function(){return!1};ba.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};ba.taskCompletedEvent=L9;ba._defaultWorkerModulePrefix="Workers/";ba._workerModulePrefix=ba._defaultWorkerModulePrefix;ba._canTransferArrayBuffer=void 0;var mi=ba;function LA(){}LA._transcodeTaskProcessor=new mi("transcodeKTX2",Number.POSITIVE_INFINITY);LA._readyPromise=void 0;function aPe(){let e=LA._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return LA._transcodeTaskProcessor;throw new ce("KTX2 transcoder could not be initialized.")});LA._readyPromise=e}LA.transcode=function(e,t){return l(LA._readyPromise)||aPe(),LA._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new mM(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var AM=LA;var kee;Uee.setKTX2SupportedFormats=function(e,t,n,i,o,r){kee={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function Uee(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=we.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return AM.transcode(n,kee)})}var Iu=Uee;var mo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};mo.getMathType=function(e){switch(e){case mo.SCALAR:return Number;case mo.VEC2:return k;case mo.VEC3:return d;case mo.VEC4:return se;case mo.MAT2:return Wi;case mo.MAT3:return J;case mo.MAT4:return R}};mo.getNumberOfComponents=function(e){switch(e){case mo.SCALAR:return 1;case mo.VEC2:return 2;case mo.VEC3:return 3;case mo.VEC4:case mo.MAT2:return 4;case mo.MAT3:return 9;case mo.MAT4:return 16}};mo.getAttributeLocationCount=function(e){switch(e){case mo.SCALAR:case mo.VEC2:case mo.VEC3:case mo.VEC4:return 1;case mo.MAT2:return 2;case mo.MAT3:return 3;case mo.MAT4:return 4}};mo.getGlslType=function(e){switch(e){case mo.SCALAR:return"float";case mo.VEC2:return"vec2";case mo.VEC3:return"vec3";case mo.VEC4:return"vec4";case mo.MAT2:return"mat2";case mo.MAT3:return"mat3";case mo.MAT4:return"mat4"}};var Ht=Object.freeze(mo);var Gee=1/256,zee=256,Bo={};Bo.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*D.signNotZero(i),n.y=(1-Math.abs(i))*D.signNotZero(o)}return n.x=D.toSNorm(n.x,t),n.y=D.toSNorm(n.y,t),n};Bo.octEncode=function(e,t){return Bo.octEncodeInRange(e,255,t)};var JS=new k,Vee=new Uint8Array(1);function pM(e){return Vee[0]=e,Vee[0]}Bo.octEncodeToCartesian4=function(e,t){return Bo.octEncodeInRange(e,65535,JS),t.x=pM(JS.x*Gee),t.y=pM(JS.x),t.z=pM(JS.y*Gee),t.w=pM(JS.y),t};Bo.octDecodeInRange=function(e,t,n,i){if(i.x=D.fromSNorm(e,n),i.y=D.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*D.signNotZero(o),i.y=(1-Math.abs(o))*D.signNotZero(i.y)}return d.normalize(i,i)};Bo.octDecode=function(e,t,n){return Bo.octDecodeInRange(e,t,255,n)};Bo.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*zee+i,a=o*zee+r;return Bo.octDecodeInRange(s,a,65535,t)};Bo.octPackFloat=function(e){return 256*e.x+e.y};var Q9=new k;Bo.octEncodeFloat=function(e){return Bo.octEncode(e,Q9),Bo.octPackFloat(Q9)};Bo.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return Bo.octDecode(i,o,t)};Bo.octPack=function(e,t,n,i){let o=Bo.octEncodeFloat(e),r=Bo.octEncodeFloat(t),s=Bo.octEncode(n,Q9);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};Bo.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;Bo.octDecodeFloat(s,t),Bo.octDecodeFloat(c,n),Bo.octDecode(r,a,i)};Bo.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};Bo.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function F9(e){return e>>1^-(e&1)}Bo.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=F9(e[a]),r+=F9(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=F9(n[a]),n[a]=s)};Bo.dequantize=function(e,t,n,i){let o=Ht.getNumberOfComponents(n),r;switch(t){case q.BYTE:r=127;break;case q.UNSIGNED_BYTE:r=255;break;case q.SHORT:r=32767;break;case q.UNSIGNED_SHORT:r=65535;break;case q.INT:r=2147483647;break;case q.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};Bo.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,A=3*a;t[A]=u*r,t[A+1]=f*s,t[A+2]=h*r}return t};var Fn=Bo;var Hee=new d,Wee=new d,jee=new d;function cPe(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,A;if(l(t.z)){if(d.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,Hee),s=d.subtract(i,t,Wee),a=d.subtract(e,t,jee),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),A=d.dot(s,a)}else{if(k.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(k.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(k.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=k.subtract(n,t,Hee),s=k.subtract(i,t,Wee),a=k.subtract(e,t,jee),c=k.dot(r,r),u=k.dot(r,s),f=k.dot(r,a),h=k.dot(s,s),A=k.dot(s,a)}o.y=h*f-u*A,o.z=c*A-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var uI=cPe;function em(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}em.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var OA={high:0,low:0};em.fromCartesian=function(e,t){l(t)||(t=new em);let n=t.high,i=t.low;return em.encode(e.x,OA),n.x=OA.high,i.x=OA.low,em.encode(e.y,OA),n.y=OA.high,i.y=OA.low,em.encode(e.z,OA),n.z=OA.high,i.z=OA.low,t};var k9=new em;em.writeElements=function(e,t,n){em.fromCartesian(e,k9);let i=k9.high,o=k9.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ei=em;var na={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT};na.getSizeInBytes=function(e){switch(e){case na.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case na.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case na.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};na.fromSizeInBytes=function(e){switch(e){case 2:return na.UNSIGNED_SHORT;case 4:return na.UNSIGNED_INT;case 1:return na.UNSIGNED_BYTE}};na.validate=function(e){return l(e)&&(e===na.UNSIGNED_BYTE||e===na.UNSIGNED_SHORT||e===na.UNSIGNED_INT)};na.createTypedArray=function(e,t){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};na.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};na.fromTypedArray=function(e){if(e instanceof Uint8Array)return na.UNSIGNED_BYTE;if(e instanceof Uint16Array)return na.UNSIGNED_SHORT;if(e instanceof Uint32Array)return na.UNSIGNED_INT};var Fe=Object.freeze(na);var U9={};U9.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function Yee(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}U9.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<D.EPSILON14)return[0,0];if(c>u&&u/c<D.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=Yee(o,-r,D.EPSILON14);if(s<0)return[];let a=-.5*Yee(t,D.sign(t)*Math.sqrt(s),D.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var Rl=U9;var z9={};z9.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function G9(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,A=o*s-f,g=o*a-r*s,m=r*a-h,_=4*A*m-g*g,y,C;if(_<0){let H,W,Z;f*u>=c*h?(H=o,W=A,Z=-2*r*A+o*g):(H=a,W=m,Z=-a*g+2*s*m);let $=-(Z<0?-1:1)*Math.abs(H)*Math.sqrt(-_);C=-Z+$;let X=C/2,he=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),ge=C===$?-he:-W/he;return y=W<=0?he+ge:-Z/(he*he+ge*ge+W),f*u>=c*h?[(y-r)/o]:[-a/(y+s)]}let E=A,I=-2*r*A+o*g,b=m,S=-a*g+2*s*m,B=Math.sqrt(_),v=Math.sqrt(3)/2,P=Math.abs(Math.atan2(o*B,-I)/3);y=2*Math.sqrt(-E);let N=Math.cos(P);C=y*N;let L=y*(-N/2-v*Math.sin(P)),p=C+L>2*r?C-r:L-r,x=o,T=p/x;P=Math.abs(Math.atan2(a*B,-S)/3),y=2*Math.sqrt(-b),N=Math.cos(P),C=y*N,L=y*(-N/2-v*Math.sin(P));let w=-a,M=C+L<2*s?C+s:L+s,O=w/M,U=x*M,Q=-p*M-x*w,z=p*w,F=(s*Q-r*z)/(-r*Q+s*U);return T<=F?T<=O?F<=O?[T,F,O]:[T,O,F]:[O,T,F]:T<=O?[F,T,O]:F<=O?[F,O,T]:[O,F,T]}z9.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return Rl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=Rl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return G9(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):G9(e,t,0,i);if(i===0)return o=Rl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return G9(e,t,n,i)};var fI=z9;var V9={};V9.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,A=h*i,g=o*o,m=g*o;return a*u*h-4*c*A-4*e*f*h+18*e*t*n*A-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function Od(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=fI.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<D.EPSILON14){let h=Rl.computeRealRoots(1,r,a);if(h.length===2){let A=h[0],g=h[1],m;if(A>=0&&g>=0){let _=Math.sqrt(A),y=Math.sqrt(g);return[u-y,u-_,u+_,u+y]}else{if(A>=0&&g<0)return m=Math.sqrt(A),[u-m,u+m];if(A<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),A=(r+f-s/h)/2,g=(r+f+s/h)/2,m=Rl.computeRealRoots(1,h,A),_=Rl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,_.length!==0?(_[0]+=u,_[1]+=u,m[1]<=_[0]?[m[0],m[1],_[0],_[1]]:_[1]<=m[0]?[_[0],_[1],m[0],m[1]]:m[0]>=_[0]&&m[1]<=_[1]?[_[0],m[0],m[1],_[1]]:_[0]>=m[0]&&_[1]<=m[1]?[m[0],_[0],_[1],m[1]]:m[0]>_[0]&&m[0]<_[1]?[_[0],m[0],_[1],m[1]]:[m[0],_[0],m[1],_[1]]):m):_.length!==0?(_[0]+=u,_[1]+=u,_):[]}}return[]}function ZS(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=fI.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],A=t-h,g=A*A,m=e/2,_=A/2,y=g-4*i,C=g+4*Math.abs(i),E=s-4*h,I=s+4*Math.abs(h),b,S;if(h<0||y*I<E*C){let x=Math.sqrt(E);b=x/2,S=x===0?0:(e*_-n)/x}else{let x=Math.sqrt(y);b=x===0?0:(e*_-n)/x,S=x/2}let B,v;m===0&&b===0?(B=0,v=0):D.sign(m)===D.sign(b)?(B=m+b,v=h/B):(v=m-b,B=h/v);let P,N;_===0&&S===0?(P=0,N=0):D.sign(_)===D.sign(S)?(P=_+S,N=i/P):(N=_-S,P=i/N);let L=Rl.computeRealRoots(1,B,P),p=Rl.computeRealRoots(1,v,N);if(L.length!==0)return p.length!==0?L[1]<=p[0]?[L[0],L[1],p[0],p[1]]:p[1]<=L[0]?[p[0],p[1],L[0],L[1]]:L[0]>=p[0]&&L[1]<=p[1]?[p[0],L[0],L[1],p[1]]:p[0]>=L[0]&&p[1]<=L[1]?[L[0],p[0],p[1],L[1]]:L[0]>p[0]&&L[0]<p[1]?[p[0],L[0],p[1],L[1]]:[L[0],p[0],L[1],p[1]]:L;if(p.length!==0)return p}return[]}V9.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<D.EPSILON15)return fI.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return Od(r,s,a,c);case 1:return ZS(r,s,a,c);case 2:return ZS(r,s,a,c);case 3:return Od(r,s,a,c);case 4:return Od(r,s,a,c);case 5:return ZS(r,s,a,c);case 6:return Od(r,s,a,c);case 7:return Od(r,s,a,c);case 8:return ZS(r,s,a,c);case 9:return Od(r,s,a,c);case 10:return Od(r,s,a,c);case 11:return ZS(r,s,a,c);case 12:return Od(r,s,a,c);case 13:return Od(r,s,a,c);case 14:return Od(r,s,a,c);case 15:return Od(r,s,a,c);default:return}};var gM=V9;function _M(e,t){t=d.clone(t??d.ZERO),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(e??d.ZERO),this.direction=t}_M.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new _M(e.origin,e.direction)};_M.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var In=_M;var Ko={};Ko.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var lPe=new d,uPe=new d,tte=new d,qee=new d,Kee=new d;Ko.rayTriangleParametric=function(e,t,n,i,o){o=o??!1;let r=e.origin,s=e.direction,a=d.subtract(n,t,lPe),c=d.subtract(i,t,uPe),u=d.cross(s,c,tte),f=d.dot(a,u),h,A,g,m,_;if(o){if(f<D.EPSILON6||(h=d.subtract(r,t,qee),g=d.dot(h,u),g<0||g>f)||(A=d.cross(h,a,Kee),m=d.dot(s,A),m<0||g+m>f))return;_=d.dot(c,A)/f}else{if(Math.abs(f)<D.EPSILON6)return;let y=1/f;if(h=d.subtract(r,t,qee),g=d.dot(h,u)*y,g<0||g>1||(A=d.cross(h,a,Kee),m=d.dot(s,A)*y,m<0||g+m>1))return;_=d.dot(c,A)*y}return _};Ko.rayTriangle=function(e,t,n,i,o,r){let s=Ko.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var fPe=new In;Ko.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=fPe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=Ko.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function dPe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var hPe={root0:0,root1:0};function nte(e,t,n){l(n)||(n=new _c);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,tte),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=dPe(c,u,f,hPe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}Ko.raySphere=function(e,t,n){if(n=nte(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var mPe=new In;Ko.lineSegmentSphere=function(e,t,n,i){let o=mPe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=nte(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var APe=new d,pPe=new d;Ko.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,APe),o=d.multiplyComponents(n,e.direction,pPe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let A=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,A<u)return;if(A>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,_=a/h;return m<_?new _c(m,_):{start:_,stop:m}}let g=Math.sqrt(a/c);return new _c(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new _c(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new _c(0,-s/c)};function mC(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}Ko.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[J.COLUMN1ROW1]-e[J.COLUMN2ROW2])*s,c=o*(i*mC(e[J.COLUMN1ROW0],e[J.COLUMN0ROW1],D.EPSILON15)+t.y),u=e[J.COLUMN0ROW0]*r+e[J.COLUMN2ROW2]*s+i*t.x+n,f=s*mC(e[J.COLUMN2ROW1],e[J.COLUMN1ROW2],D.EPSILON15),h=o*(i*mC(e[J.COLUMN2ROW0],e[J.COLUMN0ROW2])+t.z),A,g=[];if(h===0&&f===0){if(A=Rl.computeRealRoots(a,c,u),A.length===0)return g;let P=A[0],N=Math.sqrt(Math.max(1-P*P,0));if(g.push(new d(i,o*P,o*-N)),g.push(new d(i,o*P,o*N)),A.length===2){let L=A[1],p=Math.sqrt(Math.max(1-L*L,0));g.push(new d(i,o*L,o*-p)),g.push(new d(i,o*L,o*p))}return g}let m=h*h,_=f*f,y=a*a,C=h*f,E=y+_,I=2*(c*a+C),b=2*u*a+c*c-_+m,S=2*(u*c-C),B=u*u-m;if(E===0&&I===0&&b===0&&S===0)return g;A=gM.computeRealRoots(E,I,b,S,B);let v=A.length;if(v===0)return g;for(let P=0;P<v;++P){let N=A[P],L=N*N,p=Math.max(1-L,0),x=Math.sqrt(p),T;D.sign(a)===D.sign(u)?T=mC(a*L+u,c*N,D.EPSILON12):D.sign(u)===D.sign(c*N)?T=mC(a*L,c*N+u,D.EPSILON12):T=mC(a*L+c*N,u,D.EPSILON12);let w=mC(f*N,h,D.EPSILON15),M=T*w;M<0?g.push(new d(i,o*N,o*x)):M>0?g.push(new d(i,o*N,o*-x)):x!==0?(g.push(new d(i,o*N,o*-x)),g.push(new d(i,o*N,o*x)),++P):g.push(new d(i,o*N,o*x))}return g};var H9=new d,Xee=new d,Jee=new d,yM=new d,gPe=new d,_Pe=new J,yPe=new J,CPe=new J,EPe=new J,IPe=new J,Zee=new J,$ee=new J,ete=new d,xPe=new d,bPe=new Ae;Ko.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let B=t.geodeticSurfaceNormal(n,H9);if(d.dot(i,B)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,H9),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,yM),c=d.normalize(d.cross(a,s,Xee),Xee),u=d.normalize(d.cross(s,c,Jee),Jee),f=_Pe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=J.transpose(f,yPe),A=J.fromScale(t.radii,CPe),g=J.fromScale(t.oneOverRadii,EPe),m=IPe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let _=J.multiply(J.multiply(h,g,Zee),m,Zee),y=J.multiply(J.multiply(_,A,$ee),f,$ee),C=J.multiplyByVector(_,n,gPe),E=Ko.quadraticVectorExpression(y,d.negate(C,H9),0,0,1),I,b,S=E.length;if(S>0){let B=d.clone(d.ZERO,xPe),v=Number.NEGATIVE_INFINITY;for(let N=0;N<S;++N){I=J.multiplyByVector(A,J.multiplyByVector(f,E[N],ete),ete);let L=d.normalize(d.subtract(I,n,yM),yM),p=d.dot(L,i);p>v&&(v=p,B=d.clone(I,B))}let P=t.cartesianToCartographic(B,bPe);return v=D.clamp(v,0,1),b=d.magnitude(d.subtract(B,n,yM))*Math.sqrt(1-v*v),b=o?-b:b,P.height=b,t.cartographicToCartesian(P,new d)}};var TPe=new d;Ko.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,TPe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};Ko.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return Ko.lineSegmentPlane(e,t,i,f),Ko.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return Ko.lineSegmentPlane(t,n,i,f),Ko.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return Ko.lineSegmentPlane(n,e,i,f),Ko.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return Ko.lineSegmentPlane(e,n,i,f),Ko.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return Ko.lineSegmentPlane(n,t,i,f),Ko.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return Ko.lineSegmentPlane(t,e,i,f),Ko.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var Ai=Ko;function ia(e,t){this.normal=d.clone(e),this.distance=t}ia.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new ia(t,i)};var SPe=new d;ia.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,SPe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new ia(n,i)};ia.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var wPe=new d;ia.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=ia.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,wPe);return d.subtract(t,o,n)};var BPe=new R,DPe=new se,vPe=new d;ia.transform=function(e,t,n){let i=e.normal,o=e.distance,r=R.inverseTranspose(t,BPe),s=se.fromElements(i.x,i.y,i.z,o,DPe);s=R.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,vPe);return s=se.divideByScalar(s,d.magnitude(a),s),ia.fromCartesian4(s,n)};ia.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new ia(e.normal,e.distance)};ia.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};ia.ORIGIN_XY_PLANE=Object.freeze(new ia(d.UNIT_Z,0));ia.ORIGIN_YZ_PLANE=Object.freeze(new ia(d.UNIT_X,0));ia.ORIGIN_ZX_PLANE=Object.freeze(new ia(d.UNIT_Y,0));var mn=ia;var W9={};W9.calculateACMR=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};W9.tipsify=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(p,x,T,w){for(;x.length>=1;){let M=x[x.length-1];if(x.splice(x.length-1,1),p[M].numLiveTriangles>0)return M}for(;o<w;){if(p[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(p,x,T,w,M,O,U){let Q=-1,z,F=-1,H=0;for(;H<T.length;){let W=T[H];w[W].numLiveTriangles&&(z=0,M-w[W].timeStamp+2*w[W].numLiveTriangles<=x&&(z=M-w[W].timeStamp),(z>F||F===-1)&&(F=z,Q=W)),++H}return Q===-1?r(w,O,p,U):Q}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let A=[],g;for(g=0;g<c;g++)A[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)A[t[u]].vertexTriangles.push(m),++A[t[u]].numLiveTriangles,A[t[u+1]].vertexTriangles.push(m),++A[t[u+1]].numLiveTriangles,A[t[u+2]].vertexTriangles.push(m),++A[t[u+2]].numLiveTriangles,++m,u+=3;let _=0,y=i+1;o=1;let C=[],E=[],I,b,S=0,B=[],v=a/3,P=[];for(g=0;g<v;g++)P[g]=!1;let N,L;for(;_!==-1;){C=[],b=A[_],L=b.vertexTriangles.length;for(let p=0;p<L;++p)if(m=b.vertexTriangles[p],!P[m]){P[m]=!0,u=m+m+m;for(let x=0;x<3;++x)N=t[u],C.push(N),E.push(N),B[S]=N,++S,I=A[N],--I.numLiveTriangles,y-I.timeStamp>i&&(I.timeStamp=y,++y),++u}_=s(t,i,C,A,y,E,c)}return B};var CM=W9;var Kc={};function wM(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function PPe(e){let t=e.length,n=t/3*6,i=Fe.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)wM(i,o,e[r],e[r+1],e[r+2]);return i}function RPe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Fe.createTypedArray(t,n);wM(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)wM(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function MPe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Fe.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)wM(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}Kc.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Me.TRIANGLES:e.indices=PPe(t);break;case Me.TRIANGLE_STRIP:e.indices=RPe(t);break;case Me.TRIANGLE_FAN:e.indices=MPe(t);break}e.primitiveType=Me.LINES}return e};Kc.createLineSegmentsForVectors=function(e,t,n){t=t??"normal",n=n??1e4;let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new le(u.center,u.radius+n)),new ht({attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Me.LINES,boundingSphere:c})};Kc.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};Kc.reorderForPreVertexCache=function(e){let t=ht.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let A=0;A<t;A++)i[A]=-1;let o=n,r=o.length,s=Fe.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let A in h)if(h.hasOwnProperty(A)&&l(h[A])&&l(h[A].values)){let g=h[A],m=g.values,_=0,y=g.componentsPerAttribute,C=q.createTypedArray(g.componentDatatype,u*y);for(;_<t;){let E=i[_];if(E!==-1)for(let I=0;I<y;I++)C[y*E+I]=m[y*_+I];++_}g.values=C}}return e};Kc.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Me.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=CM.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function ite(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new De({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function NPe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}Kc.fitToUnsignedShortIndices=function(e){let t=[],n=ht.computeNumberOfVertices(e);if(l(e.indices)&&n>=D.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=ite(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Me.TRIANGLES?u=3:e.primitiveType===Me.LINES?u=2:e.primitiveType===Me.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let A=a[f+h],g=i[A];l(g)||(g=r++,i[A]=g,NPe(s,e.attributes,A)),o.push(g)}r+u>=D.SIXTY_FOUR_KILOBYTES&&(t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=ite(e.attributes))}o.length!==0&&t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var ote=new d,LPe=new Ae;Kc.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Hi;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,ote),A=s.cartesianToCartographic(h,LPe),g=o.project(A,ote);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var j9={high:0,low:0};Kc.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)ei.encode(r[f],j9),a[f]=j9.high,c[f]=j9.low;let u=o.componentsPerAttribute;return e.attributes[n]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var Qd=new d;function Y9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),R.multiplyByPoint(e,Qd,Qd),d.pack(Qd,n,o)}}function q9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),J.multiplyByVector(e,Qd,Qd),Qd=d.normalize(Qd,Qd),d.pack(Qd,n,o)}}var EM=new R,IM=new J;Kc.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(R.equals(t,R.IDENTITY))return e;let n=e.geometry.attributes;Y9(t,n.position),Y9(t,n.prevPosition),Y9(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(R.inverse(t,EM),R.transpose(EM,EM),R.getMatrix3(EM,IM),q9(IM,n.normal),q9(IM,n.tangent),q9(IM,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=le.transform(i,t,i)),e.modelMatrix=R.clone(R.IDENTITY),e};function OPe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new De({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:q.createTypedArray(s.componentDatatype,a)}))}return i}var FPe=new d;function K9(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=OPe(e,t),h,A,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(A=e[o][t].attributes[i].values,g=A.length,r=0;r<g;++r)h[s++]=A[r];let m;if(c){let E=0;for(o=0;o<n;++o)E+=e[o][t].indices.length;let I=ht.computeNumberOfVertices(new ht({attributes:f,primitiveType:Me.POINTS})),b=Fe.createTypedArray(I,E),S=0,B=0;for(o=0;o<n;++o){let v=e[o][t].indices,P=v.length;for(s=0;s<P;++s)b[S++]=B+v[s];B+=ht.computeNumberOfVertices(e[o][t])}m=b}let _=new d,y=0,C;for(o=0;o<n;++o){if(C=e[o][t].boundingSphere,!l(C)){_=void 0;break}d.add(C.center,_,_)}if(l(_))for(d.divideByScalar(_,n,_),o=0;o<n;++o){C=e[o][t].boundingSphere;let E=d.magnitude(d.subtract(C.center,_,FPe))+C.radius;E>y&&(y=E)}return new ht({attributes:f,indices:m,primitiveType:u,boundingSphere:l(_)?new le(_,y):void 0})}Kc.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(K9(t,"geometry")),n.length>0&&(o.push(K9(n,"westHemisphereGeometry")),o.push(K9(n,"eastHemisphereGeometry"))),o};var yf=new d,$S=new d,dI=new d,hI=new d;Kc.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],_=t[u+1],y=t[u+2],C=m*3,E=_*3,I=y*3;$S.x=i[C],$S.y=i[C+1],$S.z=i[C+2],dI.x=i[E],dI.y=i[E+1],dI.z=i[E+2],hI.x=i[I],hI.y=i[I+1],hI.z=i[I+2],s[m].count++,s[_].count++,s[y].count++,d.subtract(dI,$S,dI),d.subtract(hI,$S,hI),a[f]=d.cross(dI,hI,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let A;for(u=0;u<r;u+=3){A=s[t[u]];let m=A.indexOffset+A.currentCount;c[m]=f,A.currentCount++,A=s[t[u+1]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,A=s[t[u+2]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(A=s[u],d.clone(d.ZERO,yf),A.count>0){for(f=0;f<A.count;f++)d.add(yf,a[c[A.indexOffset+f]],yf);d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&d.clone(a[c[A.indexOffset]],yf)}d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&(yf.z=1),d.normalize(yf,yf),g[m]=yf.x,g[m+1]=yf.y,g[m+2]=yf.z}return e.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e};var QPe=new d,rte=new d,kPe=new d;Kc.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,A;for(u=0;u<a;u+=3){let _=n[u],y=n[u+1],C=n[u+2];f=_*3,h=y*3,A=C*3;let E=_*2,I=y*2,b=C*2,S=i[f],B=i[f+1],v=i[f+2],P=r[E],N=r[E+1],L=r[I+1]-N,p=r[b+1]-N,x=1/((r[I]-P)*p-(r[b]-P)*L),T=(p*(i[h]-S)-L*(i[A]-S))*x,w=(p*(i[h+1]-B)-L*(i[A+1]-B))*x,M=(p*(i[h+2]-v)-L*(i[A+2]-v))*x;c[f]+=T,c[f+1]+=w,c[f+2]+=M,c[h]+=T,c[h+1]+=w,c[h+2]+=M,c[A]+=T,c[A+1]+=w,c[A+2]+=M}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,A=f+2;let _=d.fromArray(o,f,QPe),y=d.fromArray(c,f,kPe),C=d.dot(_,y);d.multiplyByScalar(_,C,rte),d.normalize(d.subtract(y,rte,y),y),g[f]=y.x,g[h]=y.y,g[A]=y.z,d.normalize(d.cross(_,y,y),y),m[f]=y.x,m[h]=y.y,m[A]=y.z}return e.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m}),e};var ew=new k,Fd=new d,ste=new d,ate=new d,xM=new k;Kc.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let B=t.values;i=B.length/3;let v=new Float32Array(i*2),P=0;for(n=0;n<i;++n){if(d.fromArray(B,n*3,Fd),d.equals(Fd,d.ZERO)){P+=2;continue}xM=Fn.octEncodeInRange(Fd,65535,xM),v[P++]=xM.x,v[P++]=xM.y}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:v}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),A,g,m,_;s&&(A=o.values),a&&(g=r.values),f&&(m=c.values),h&&(_=u.values),i=(s?A.length:g.length)/(s?3:2);let E=i,I=a&&s?2:1;I+=f||h?1:0,E*=I;let b=new Float32Array(E),S=0;for(n=0;n<i;++n){a&&(k.fromArray(g,n*2,ew),b[S++]=Fn.compressTextureCoordinates(ew));let B=n*3;s&&l(m)&&l(_)?(d.fromArray(A,B,Fd),d.fromArray(m,B,ste),d.fromArray(_,B,ate),Fn.octPack(Fd,ste,ate,ew),b[S++]=ew.x,b[S++]=ew.y):(s&&(d.fromArray(A,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),f&&(d.fromArray(m,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),h&&(d.fromArray(_,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)))}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:I,values:b}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function UPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function GPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function zPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function VPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function HPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Me.LINES,e}function WPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Me.LINES,e}function jPe(e){switch(e.primitiveType){case Me.TRIANGLE_FAN:return GPe(e);case Me.TRIANGLE_STRIP:return zPe(e);case Me.TRIANGLES:return UPe(e);case Me.LINE_STRIP:return HPe(e);case Me.LINE_LOOP:return WPe(e);case Me.LINES:return VPe(e)}return e}function Cg(e,t){Math.abs(e.y)<D.EPSILON6&&(t?e.y=-D.EPSILON6:e.y=D.EPSILON6)}function YPe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){Cg(e,e.y<0),Cg(t,t.y<0),Cg(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=D.sign(e.y):s=D.sign(n.y):o>r?s=D.sign(t.y):s=D.sign(n.y);let a=s<0;Cg(e,a),Cg(t,a),Cg(n,a)}var cte=new d;function Cf(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,cte),e.y/(e.y-t.y),cte),n),d.clone(n,i),Cg(n,!0),Cg(i,!1)}var AC=new d,pC=new d,gC=new d,_C=new d,X9={positions:new Array(7),indices:new Array(9)};function qPe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;YPe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=X9.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=X9.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=AC,c[4]=pC,c[5]=gC,c[6]=_C,c.length=7),X9}function lte(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=q.createTypedArray(r.componentDatatype,r.values)}let i=ht.computeNumberOfVertices(e);return e.indices=Fe.createTypedArray(i,e.indices),t&&(e.boundingSphere=le.fromVertices(n.position.values)),e}function AI(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new De({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ht({attributes:n,indices:[],primitiveType:e.primitiveType})}function e6(e,t,n){let i=l(e.geometry.boundingSphere);t=lte(t,i),n=lte(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function t6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,A){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),_=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(_,c.z,_);let y=e.add(g,m,g);e.add(y,_,y),A&&e.normalize(y,y),e.pack(y,f,h*t)}}var KPe=t6(se,4),SM=t6(d,3),Ate=t6(k,2),XPe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>D.EPSILON6?1:0},tw=new d,J9=new d,Z9=new d,JPe=new d;function bM(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let y=d.fromArray(o,e*3,tw),C=d.fromArray(o,t*3,J9),E=d.fromArray(o,n*3,Z9),I=uI(i,y,C,E,JPe);if(l(I)){if(l(r)&&SM(e,t,n,I,r,h.normal.values,_,!0),l(u)){let b=d.fromArray(u,e*3,tw),S=d.fromArray(u,t*3,J9),B=d.fromArray(u,n*3,Z9);d.multiplyByScalar(b,I.x,b),d.multiplyByScalar(S,I.y,S),d.multiplyByScalar(B,I.z,B);let v;!d.equals(b,d.ZERO)||!d.equals(S,d.ZERO)||!d.equals(B,d.ZERO)?(v=d.add(b,S,b),d.add(v,B,v),d.normalize(v,v)):(v=tw,v.x=0,v.y=0,v.z=0),d.pack(v,h.extrudeDirection.values,_*3)}if(l(f)&&XPe(e,t,n,I,f,h.applyOffset.values,_),l(s)&&SM(e,t,n,I,s,h.tangent.values,_,!0),l(a)&&SM(e,t,n,I,a,h.bitangent.values,_,!0),l(c)&&Ate(e,t,n,I,c,h.st.values,_),g>0)for(let b=0;b<g;b++){let S=A[b];ZPe(e,t,n,I,_,m[S],h[S])}}}function ZPe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:KPe(e,t,n,i,c,u,o,!1);break;case 3:SM(e,t,n,i,c,u,o,!1);break;case 2:Ate(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function tm(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var $Pe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function ute(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let v in n)n.hasOwnProperty(v)&&!$Pe[v]&&l(n[v])&&h.push(v);let A=h.length,g=AI(t),m=AI(t),_,y,C,E,I,b=[];b.length=i.length/3;let S=[];for(S.length=i.length/3,I=0;I<b.length;++I)b[I]=-1,S[I]=-1;let B=f.length;for(I=0;I<B;I+=3){let v=f[I],P=f[I+1],N=f[I+2],L=d.fromArray(i,v*3),p=d.fromArray(i,P*3),x=d.fromArray(i,N*3),T=qPe(L,p,x);if(l(T)&&T.positions.length>3){let w=T.positions,M=T.indices,O=M.length;for(let U=0;U<O;++U){let Q=M[U],z=w[Q];z.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,Q<3?I+Q:-1,z),bM(v,P,N,z,i,o,s,r,a,c,u,_,h,A,n,E)}}else l(T)&&(L=T.positions[0],p=T.positions[1],x=T.positions[2]),L.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,I,L),bM(v,P,N,L,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+1,p),bM(v,P,N,p,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+2,x),bM(v,P,N,x,i,o,s,r,a,c,u,_,h,A,n,E)}e6(e,m,g)}var pte=mn.fromPointNormal(d.ZERO,d.UNIT_Y),eRe=new d,tRe=new d;function mI(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,tw);d.equalsEpsilon(a,n,D.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function fte(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=AI(t),a=AI(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let A=r[c],g=r[c+1],m=d.fromArray(i,A*3,tw),_=d.fromArray(i,g*3,J9),y;Math.abs(m.y)<D.EPSILON6&&(m.y<0?m.y=-D.EPSILON6:m.y=D.EPSILON6),Math.abs(_.y)<D.EPSILON6&&(_.y<0?_.y=-D.EPSILON6:_.y=D.EPSILON6);let C=s.attributes,E=s.indices,I=h,b=a.attributes,S=a.indices,B=f,v=Ai.lineSegmentPlane(m,_,pte,Z9);if(l(v)){let P=d.multiplyByScalar(d.UNIT_Y,5*D.EPSILON9,eRe);m.y<0&&(d.negate(P,P),C=a.attributes,E=a.indices,I=f,b=s.attributes,S=s.indices,B=h);let N=d.add(v,P,tRe);y=tm(C,E,I,r,c,m),mI(A,g,m,i,y,C,o),y=tm(C,E,I,r,-1,N),mI(A,g,N,i,y,C,o),d.negate(P,P),d.add(v,P,N),y=tm(b,S,B,r,-1,N),mI(A,g,N,i,y,b,o),y=tm(b,S,B,r,c+1,_),mI(A,g,_,i,y,b,o)}else{let P,N,L;m.y<0?(P=a.attributes,N=a.indices,L=f):(P=s.attributes,N=s.indices,L=h),y=tm(P,N,L,r,c,m),mI(A,g,m,i,y,P,o),y=tm(P,N,L,r,c+1,_),mI(A,g,_,i,y,P,o)}}e6(e,a,s)}var dte=new k,nRe=new k,gte=new d,_te=new d,$9=new d,iRe=new d,oRe=new d,rRe=new d,hte=new se;function mte(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,gte);if(a.x>0)continue;let c=d.unpack(i,s,_te);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,$9);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var sRe=5*D.EPSILON9,TM=D.EPSILON6;function aRe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=AI(t),f=AI(t),h,A,g,m=!1,_=i.length/3;for(h=0;h<_;h+=4){let y=h,C=h+2,E=d.fromArray(i,y*3,gte),I=d.fromArray(i,C*3,_te);if(Math.abs(E.y)<TM)for(E.y=TM*(I.y<0?-1:1),i[h*3+1]=E.y,i[(h+1)*3+1]=E.y,A=y*3;A<y*3+12;A+=3)o[A]=i[h*3],o[A+1]=i[h*3+1],o[A+2]=i[h*3+2];if(Math.abs(I.y)<TM)for(I.y=TM*(E.y<0?-1:1),i[(h+2)*3+1]=I.y,i[(h+3)*3+1]=I.y,A=y*3;A<y*3+12;A+=3)r[A]=i[(h+2)*3],r[A+1]=i[(h+2)*3+1],r[A+2]=i[(h+2)*3+2];let b=u.attributes,S=u.indices,B=f.attributes,v=f.indices,P=Ai.lineSegmentPlane(E,I,pte,iRe);if(l(P)){m=!0;let N=d.multiplyByScalar(d.UNIT_Y,sRe,oRe);E.y<0&&(d.negate(N,N),b=f.attributes,S=f.indices,B=u.attributes,v=u.indices);let L=d.add(P,N,rRe);b.position.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.position.values.push(L.x,L.y,L.z),b.position.values.push(L.x,L.y,L.z),b.prevPosition.values.push(o[y*3],o[y*3+1],o[y*3+2]),b.prevPosition.values.push(o[y*3+3],o[y*3+4],o[y*3+5]),b.prevPosition.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),d.negate(N,N),d.add(P,N,L),B.position.values.push(L.x,L.y,L.z),B.position.values.push(L.x,L.y,L.z),B.position.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.nextPosition.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.nextPosition.values.push(r[C*3],r[C*3+1],r[C*3+2]),B.nextPosition.values.push(r[C*3+3],r[C*3+4],r[C*3+5]);let p=k.fromArray(s,y*2,dte),x=Math.abs(p.y);b.expandAndWidth.values.push(-1,x,1,x),b.expandAndWidth.values.push(-1,-x,1,-x),B.expandAndWidth.values.push(-1,x,1,x),B.expandAndWidth.values.push(-1,-x,1,-x);let T=d.magnitudeSquared(d.subtract(P,E,$9));if(T/=d.magnitudeSquared(d.subtract(I,E,$9)),l(c)){let w=se.fromArray(c,y*4,hte),M=se.fromArray(c,C*4,hte),O=D.lerp(w.x,M.x,T),U=D.lerp(w.y,M.y,T),Q=D.lerp(w.z,M.z,T),z=D.lerp(w.w,M.w,T);for(A=y*4;A<y*4+8;++A)b.color.values.push(c[A]);for(b.color.values.push(O,U,Q,z),b.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),A=C*4;A<C*4+8;++A)B.color.values.push(c[A])}if(l(a)){let w=k.fromArray(a,y*2,dte),M=k.fromArray(a,(h+3)*2,nRe),O=D.lerp(w.x,M.x,T);for(A=y*2;A<y*2+4;++A)b.st.values.push(a[A]);for(b.st.values.push(O,w.y),b.st.values.push(O,M.y),B.st.values.push(O,w.y),B.st.values.push(O,M.y),A=C*2;A<C*2+4;++A)B.st.values.push(a[A])}g=b.position.values.length/3-4,S.push(g,g+2,g+1),S.push(g+1,g+2,g+3),g=B.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3)}else{let N,L;for(E.y<0?(N=f.attributes,L=f.indices):(N=u.attributes,L=u.indices),N.position.values.push(E.x,E.y,E.z),N.position.values.push(E.x,E.y,E.z),N.position.values.push(I.x,I.y,I.z),N.position.values.push(I.x,I.y,I.z),A=h*3;A<h*3+12;++A)N.prevPosition.values.push(o[A]),N.nextPosition.values.push(r[A]);for(A=h*2;A<h*2+8;++A)N.expandAndWidth.values.push(s[A]),l(a)&&N.st.values.push(a[A]);if(l(c))for(A=h*4;A<h*4+16;++A)N.color.values.push(c[A]);g=N.position.values.length/3-4,L.push(g,g+2,g+1),L.push(g+1,g+2,g+3)}}m&&(mte(f),mte(u)),e6(e,f,u)}Kc.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||le.intersectPlane(n,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING))return e;if(t.geometryType!==Ld.NONE)switch(t.geometryType){case Ld.POLYLINES:aRe(e);break;case Ld.TRIANGLES:ute(e);break;case Ld.LINES:fte(e);break}else jPe(t),t.primitiveType===Me.TRIANGLES?ute(e):t.primitiveType===Me.LINES&&fte(e);return e};var jn=Kc;var Si={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,HALF_FLOAT:ee.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ee.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ee.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ee.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ee.UNSIGNED_SHORT_5_6_5};Si.toWebGLConstant=function(e,t){switch(e){case Si.UNSIGNED_BYTE:return ee.UNSIGNED_BYTE;case Si.UNSIGNED_SHORT:return ee.UNSIGNED_SHORT;case Si.UNSIGNED_INT:return ee.UNSIGNED_INT;case Si.FLOAT:return ee.FLOAT;case Si.HALF_FLOAT:return t.webgl2?ee.HALF_FLOAT:ee.HALF_FLOAT_OES;case Si.UNSIGNED_INT_24_8:return ee.UNSIGNED_INT_24_8;case Si.UNSIGNED_SHORT_4_4_4_4:return ee.UNSIGNED_SHORT_4_4_4_4;case Si.UNSIGNED_SHORT_5_5_5_1:return ee.UNSIGNED_SHORT_5_5_5_1;case Si.UNSIGNED_SHORT_5_6_5:return Si.UNSIGNED_SHORT_5_6_5}};Si.isPacked=function(e){return e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.sizeInBytes=function(e){switch(e){case Si.UNSIGNED_BYTE:return 1;case Si.UNSIGNED_SHORT:case Si.UNSIGNED_SHORT_4_4_4_4:case Si.UNSIGNED_SHORT_5_5_5_1:case Si.UNSIGNED_SHORT_5_6_5:case Si.HALF_FLOAT:return 2;case Si.UNSIGNED_INT:case Si.FLOAT:case Si.UNSIGNED_INT_24_8:return 4}};Si.validate=function(e){return e===Si.UNSIGNED_BYTE||e===Si.UNSIGNED_SHORT||e===Si.UNSIGNED_INT||e===Si.FLOAT||e===Si.HALF_FLOAT||e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.getTypedArrayConstructor=function(e){let t=Si.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Si.FLOAT?Float32Array:Uint32Array};var He=Object.freeze(Si);var Je={DEPTH_COMPONENT:ee.DEPTH_COMPONENT,DEPTH_STENCIL:ee.DEPTH_STENCIL,ALPHA:ee.ALPHA,RED:ee.RED,RG:ee.RG,RGB:ee.RGB,RGBA:ee.RGBA,RED_INTEGER:ee.RED_INTEGER,RG_INTEGER:ee.RG_INTEGER,RGB_INTEGER:ee.RGB_INTEGER,RGBA_INTEGER:ee.RGBA_INTEGER,LUMINANCE:ee.LUMINANCE,LUMINANCE_ALPHA:ee.LUMINANCE_ALPHA,RGB_DXT1:ee.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ee.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ee.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ee.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ee.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ee.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ee.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ee.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ee.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ee.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ee.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ee.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ee.COMPRESSED_RGBA_BPTC_UNORM};Je.componentsLength=function(e){switch(e){case Je.RGB:case Je.RGB_INTEGER:return 3;case Je.RGBA:case Je.RGBA_INTEGER:return 4;case Je.LUMINANCE_ALPHA:case Je.RG:case Je.RG_INTEGER:return 2;case Je.ALPHA:case Je.RED:case Je.RED_INTEGER:case Je.LUMINANCE:return 1;default:return 1}};Je.validate=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL||e===Je.ALPHA||e===Je.RED||e===Je.RG||e===Je.RGB||e===Je.RGBA||e===Je.RED_INTEGER||e===Je.RG_INTEGER||e===Je.RGB_INTEGER||e===Je.RGBA_INTEGER||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA||e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isColorFormat=function(e){return e===Je.RED||e===Je.ALPHA||e===Je.RGB||e===Je.RGBA||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA};Je.isDepthFormat=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL};Je.isCompressedFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isDXTFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5};Je.isPVRTCFormat=function(e){return e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1};Je.isASTCFormat=function(e){return e===Je.RGBA_ASTC};Je.isETC1Format=function(e){return e===Je.RGB_ETC1};Je.isETC2Format=function(e){return e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC};Je.isBC7Format=function(e){return e===Je.RGBA_BC7};Je.compressedTextureSizeInBytes=function(e,t,n){switch(e){case Je.RGB_DXT1:case Je.RGBA_DXT1:case Je.RGB_ETC1:case Je.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case Je.RGBA_DXT3:case Je.RGBA_DXT5:case Je.RGBA_ASTC:case Je.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case Je.RGB_PVRTC_4BPPV1:case Je.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case Je.RGB_PVRTC_2BPPV1:case Je.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case Je.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};Je.textureSizeInBytes=function(e,t,n,i){let o=Je.componentsLength(e);return He.isPacked(t)&&(o=1),o*He.sizeInBytes(t)*n*i};Je.texture3DSizeInBytes=function(e,t,n,i,o){let r=Je.componentsLength(e);return He.isPacked(t)&&(r=1),r*He.sizeInBytes(t)*n*i*o};Je.alignmentInBytes=function(e,t,n){let i=Je.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};Je.createTypedArray=function(e,t,n,i){let o=He.getTypedArrayConstructor(t),r=Je.componentsLength(e)*n*i;return new o(r)};Je.flipY=function(e,t,n,i,o){if(o===1)return e;let r=Je.createTypedArray(t,n,i,o),s=Je.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};Je.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===Je.DEPTH_STENCIL)return ee.DEPTH24_STENCIL8;if(e===Je.DEPTH_COMPONENT){if(t===He.UNSIGNED_SHORT)return ee.DEPTH_COMPONENT16;if(t===He.UNSIGNED_INT)return ee.DEPTH_COMPONENT24}if(t===He.FLOAT)switch(e){case Je.RGBA:return ee.RGBA32F;case Je.RGB:return ee.RGB32F;case Je.RG:return ee.RG32F;case Je.RED:return ee.R32F}if(t===He.HALF_FLOAT)switch(e){case Je.RGBA:return ee.RGBA16F;case Je.RGB:return ee.RGB16F;case Je.RG:return ee.RG16F;case Je.RED:return ee.R16F}if(t===He.UNSIGNED_BYTE)switch(e){case Je.RGBA:return ee.RGBA8;case Je.RGB:return ee.RGB8;case Je.RG:return ee.RG8;case Je.RED:return ee.R8}if(t===He.INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32I;case Je.RGB_INTEGER:return ee.RGB32I;case Je.RG_INTEGER:return ee.RG32I;case Je.RED_INTEGER:return ee.R32I}if(t===He.UNSIGNED_INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32UI;case Je.RGB_INTEGER:return ee.RGB32UI;case Je.RG_INTEGER:return ee.RG32UI;case Je.RED_INTEGER:return ee.R32UI}return e};var et=Object.freeze(Je);var BM={STREAM_DRAW:ee.STREAM_DRAW,STATIC_DRAW:ee.STATIC_DRAW,DYNAMIC_DRAW:ee.DYNAMIC_DRAW,validate:function(e){return e===BM.STREAM_DRAW||e===BM.STATIC_DRAW||e===BM.DYNAMIC_DRAW}},Qe=Object.freeze(BM);var Br={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(Br,{maximumCombinedTextureImageUnits:{get:function(){return Br._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return Br._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return Br._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return Br._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return Br._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return Br._maximumTextureSize}},maximumVaryingVectors:{get:function(){return Br._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return Br._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return Br._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return Br._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return Br._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return Br._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return Br._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return Br._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return Br._maximumViewportWidth}},maximumViewportHeight:{get:function(){return Br._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return Br._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return Br._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return Br._maximumColorAttachments}},maximumSamples:{get:function(){return Br._maximumSamples}},highpFloatSupported:{get:function(){return Br._highpFloatSupported}},highpIntSupported:{get:function(){return Br._highpIntSupported}}});var qt=Br;function nw(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(nw.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});nw.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,A=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,_=this._preMultiplyAlpha,y=this._flipY,C=4;l(f)&&(C=et.alignmentInBytes(A,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,C),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let E=!1;if(!this._initialized){let I;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,h,h)),I=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),I=i),E=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),I=et.createTypedArray(A,m,h,h)),a.texImage2D(u,0,g,h,h,0,A,He.toWebGLConstant(m,this._context),I),this._initialized=!0}E||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,A,He.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),a.texSubImage2D(u,0,t,n,A,He.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};nw.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._size,r=r??this._size;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};nw.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=e??0,t=t??0,n=n??this._size,i=i??this._size,o=o??0;let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var DM=nw;function n6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function vM(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function kd(e){e=e??V.EMPTY_OBJECT;let n=e.context._gl,i=qt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e.destroyAttachments??!0,this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;n6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;vM(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;n6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;vM(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;vM(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;n6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;vM(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(kd.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});kd.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};kd.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};kd.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};kd.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};kd.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};kd.prototype.getColorTexture=function(e){return this._colorTextures[e]};kd.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};kd.prototype.isDestroyed=function(){return!1};kd.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var as=kd;var PM={DONT_CARE:ee.DONT_CARE,FASTEST:ee.FASTEST,NICEST:ee.NICEST,validate:function(e){return e===PM.DONT_CARE||e===PM.FASTEST||e===PM.NICEST}},Ud=Object.freeze(PM);var RM={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR};RM.validate=function(e){return e===RM.NEAREST||e===RM.LINEAR};var pi=Object.freeze(RM);var Eg={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR,NEAREST_MIPMAP_NEAREST:ee.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:ee.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:ee.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:ee.LINEAR_MIPMAP_LINEAR};Eg.validate=function(e){return e===Eg.NEAREST||e===Eg.LINEAR||e===Eg.NEAREST_MIPMAP_NEAREST||e===Eg.LINEAR_MIPMAP_NEAREST||e===Eg.NEAREST_MIPMAP_LINEAR||e===Eg.LINEAR_MIPMAP_LINEAR};var Zt=Object.freeze(Eg);var MM={CLAMP_TO_EDGE:ee.CLAMP_TO_EDGE,REPEAT:ee.REPEAT,MIRRORED_REPEAT:ee.MIRRORED_REPEAT,validate:function(e){return e===MM.CLAMP_TO_EDGE||e===MM.REPEAT||e===MM.MIRRORED_REPEAT}},Tn=Object.freeze(MM);function iw(e){e=e??V.EMPTY_OBJECT;let{wrapR:t=Tn.CLAMP_TO_EDGE,wrapS:n=Tn.CLAMP_TO_EDGE,wrapT:i=Tn.CLAMP_TO_EDGE,minificationFilter:o=Zt.LINEAR,magnificationFilter:r=pi.LINEAR,maximumAnisotropy:s=1}=e;this._wrapR=t,this._wrapS=n,this._wrapT=i,this._minificationFilter=o,this._magnificationFilter=r,this._maximumAnisotropy=s}Object.defineProperties(iw.prototype,{wrapR:{get:function(){return this._wrapR}},wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});iw.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapR===t._wrapR&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};iw.NEAREST=Object.freeze(new iw({wrapR:Tn.CLAMP_TO_EDGE,wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST}));var on=iw;function Ef(e){e=e??V.EMPTY_OBJECT;let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Xn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}Ef.createVertexBuffer=function(e){return new Ef({context:e.context,bufferTarget:ee.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};Ef.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Fe.getSizeInBytes(n),o=new Ef({context:t,bufferTarget:ee.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(Ef.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Ef.prototype._getBuffer=function(){return this._buffer};Ef.prototype.copyFromArrayView=function(e,t){t=t??0;let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};Ef.prototype.copyFromBuffer=function(e,t,n,i){let o=ee.COPY_READ_BUFFER,r=ee.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};Ef.prototype.getBufferData=function(e,t,n,i){t=t??0,n=n??0;let o=this._gl,r=ee.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};Ef.prototype.isDestroyed=function(){return!1};Ef.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Et=Ef;function cRe(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:t.index??n,enabled:t.enabled??!0,vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:t.componentDatatype??q.FLOAT,normalize:t.normalize??!1,offsetInBytes:t.offsetInBytes??0,strideInBytes:t.strideInBytes??0,instanceDivisor:t.instanceDivisor??0};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function Cte(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function FA(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)cRe(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let A=s[r];if(l(A.vertexBuffer)&&A.instanceDivisor===0){let g=A.strideInBytes||A.componentsPerAttribute*q.getSizeInBytes(A.componentDatatype);a=A.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),Cte(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function yte(e){return e.values.length/e.componentsPerAttribute}function lRe(e){return q.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function uRe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===q.DOUBLE&&(e[n].componentDatatype=q.FLOAT,e[n].values=q.createTypedArray(q.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=yte(e[o[0]]),t=1;t<s;++t){let u=yte(e[o[t]]);if(u!==r)throw new ce(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return q.getSizeInBytes(e[f].componentDatatype)-q.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=lRe(i);if(a>0){let u=q.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,A=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=q.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:q.createTypedArray(e[n].componentDatatype,A),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let _=i.values,y=g[n],C=y.pointer,E=i.componentsPerAttribute;for(let I=0;I<E;++I)C[y.index+I]=_[t*E+I];y.index+=y.strideInComponentType}return{buffer:A,offsetsInBytes:c,vertexSizeInBytes:a}}}FA.fromGeometry=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=e.geometry??V.EMPTY_OBJECT,i=e.bufferUsage??Qe.DYNAMIC_DRAW,o=e.attributeLocations??V.EMPTY_OBJECT,r=e.interleave??!1,s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=uRe(h);if(l(m)){u=Et.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let _=m.offsetsInBytes,y=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:_[a],strideInBytes:y}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===q.DOUBLE&&(m=q.FLOAT);let _={};u=void 0,l(c.values)&&(u=Et.createVertexBuffer({context:t,typedArray:q.createTypedArray(m,c.values),usage:i}),_={index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize}),l(c.typedArray)&&(u=Et.createVertexBuffer({context:t,typedArray:c.typedArray,usage:i}),_={index:o[a],vertexBuffer:u,value:void 0,componentDatatype:m,componentsPerAttribute:Ht.getNumberOfComponents(c.type),normalize:c.normalized,instanceDivisor:c.instanceDivisor}),f.push(_)}let A,g=n.indices;return l(g)&&(ht.computeNumberOfVertices(n)>=D.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?A=Et.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Fe.UNSIGNED_INT}):A=Et.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Fe.UNSIGNED_SHORT})),new FA({context:t,attributes:f,indexBuffer:A})};Object.defineProperties(FA.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});FA.prototype.getAttribute=function(e){return this._attributes[e]};function fRe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=qt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function dRe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}FA.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&fRe(this),this._hasConstantAttributes&&dRe(this,this._gl)):Cte(this._gl,this._attributes,this._indexBuffer)};FA.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};FA.prototype.isDestroyed=function(){return!1};FA.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var li=FA;function ir(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,c=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,A=et.textureSizeInBytes(i,o,h,h)*6,g=et.toInternalFormat(i,o,t),m=t._gl,_=m.TEXTURE_CUBE_MAP,y=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=_,this._texture=y,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=A,this._preMultiplyAlpha=c,this._flipY=r;let C=l(n);function E(I){return new DM(t,y,_,I,g,i,o,h,c,r,C)}this._positiveX=E(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=E(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=E(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=E(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,Ete(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(_,y),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let I of ir.faceNames())i6(this[I],n?.[I],0);m.bindTexture(_,null)}ir.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new as({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,i??0),r._unBind(),r.destroy()};ir.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*hRe(){yield ir.FaceName.POSITIVEX,yield ir.FaceName.NEGATIVEX,yield ir.FaceName.POSITIVEY,yield ir.FaceName.NEGATIVEY,yield ir.FaceName.POSITIVEZ,yield ir.FaceName.NEGATIVEZ}ir.faceNames=function(){return hRe()};function i6(e,t,n){n=n??0;let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),null);return}let{arrayBufferView:A}=t,g=4;l(A)&&(g=et.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(A)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(A=et.flipY(A,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),A)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,He.toWebGLConstant(s,f),t))}ir.loadFace=i6;Object.defineProperties(ir.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){Ete(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});ir.getDirection=function(e,t){switch(e){case ir.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case ir.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case ir.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case ir.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case ir.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case ir.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function Ete(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===He.FLOAT&&!r.textureFloatLinear||s===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}ir.prototype.loadMipmaps=function(e,t){t=t??!1;let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of ir.faceNames())i6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};ir.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};ir.createVertexArray=function(e){let t=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),n=this._attributeLocations=jn.createAttributeLocations(t);return li.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW})};ir.prototype.isDestroyed=function(){return!1};ir.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var jr=ir;function Gd(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=n.videoWidth??n.naturalWidth??n.width),l(u)||(u=n.videoHeight??n.naturalHeight??n.height));let f=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,h=et.toInternalFormat(i,o,t),A=et.isCompressedFormat(h),g=t._gl,m=A?et.compressedTextureSizeInBytes(i,c,u):et.textureSizeInBytes(i,o,c,u);this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new k(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Tte(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?et.isCompressedFormat(h)?mRe(this,n):Ite(this,n):l(n.framebuffer)?pRe(this,n):xte(this,n),this._initialized=!0):bte(this),g.bindTexture(this._textureTarget,null)}function mRe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=NM(c),u=NM(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function Ite(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=et.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:A}=t;if(f&&(A=et.flipY(A,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,He.toWebGLConstant(u,n),A),l(t.mipLevels)){let g=s,m=a;for(let _=0;_<t.mipLevels.length;++_)g=NM(g),m=NM(m),i.texImage2D(o,_+1,r,g,m,0,c,He.toWebGLConstant(u,n),t.mipLevels[_])}}function ARe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=et.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=et.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,He.toWebGLConstant(u,s),t)}function pRe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function xte(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,n),t)}function gRe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,o),t)}function NM(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function bte(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}Gd.create=function(e){return new Gd(e)};Gd.fromFramebuffer=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,{pixelFormat:n=et.RGB,framebufferXOffset:i=0,framebufferYOffset:o=0,width:r=t.drawingBufferWidth,height:s=t.drawingBufferHeight,framebuffer:a}=e;return new Gd({context:t,width:r,height:s,pixelFormat:n,source:{framebuffer:l(a)?a:t.defaultFramebuffer,xOffset:i,yOffset:o,width:r,height:s}})};Object.defineProperties(Gd.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Tte(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Tte(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),r.webgl2&&et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}Gd.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?Ite(this,i):xte(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),bte(this)),this._initialized=!0),f||(l(i.arrayBufferView)?ARe(this,i.arrayBufferView,t,n,c,u):gRe(this,i,t,n)),s.bindTexture(a,null)};Gd.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._width,r=r??this._height;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};Gd.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};Gd.prototype.isDestroyed=function(){return!1};Gd.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Nt=Gd;var LM=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var OM=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + vec2 centerPixel = fract(repeat * st); + float centerBump = texture(image, centerPixel).channel; + + float imageWidth = float(imageDimensions.x); + vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0))); + float rightBump = texture(image, rightPixel).channel; + + float imageHeight = float(imageDimensions.y); + vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight))); + float topBump = texture(image, leftPixel).channel; + + vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0))); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + material.diffuse = vec3(0.01); + + return material; +} +`;var FM=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0 + + // Find the distance from the closest separator (region between two colors) + float scaledWidth = fract(repeat.s * st.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(repeat.t * st.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + float value = min(scaledWidth, scaledHeight); + + vec4 currentColor = mix(lightColor, darkColor, b); + vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03); + + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var QM=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0 + + vec4 color = mix(lightColor, darkColor, b); + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var kM=`uniform sampler2D heights; +uniform sampler2D colors; + +// This material expects heights to be sorted from lowest to highest. + +float getHeight(int idx, float invTexSize) +{ + vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5); +#ifdef OES_texture_float + return texture(heights, uv).x; +#else + return czm_unpackFloat(texture(heights, uv)); +#endif +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float height = materialInput.height; + float invTexSize = 1.0 / float(heightsDimensions.x); + + float minHeight = getHeight(0, invTexSize); + float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize); + + // early-out when outside the height range + if (height < minHeight || height > maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var UM=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var GM=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var zM=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var VM=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var HM=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var WM=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var jM=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var YM=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var qM=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var KM=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var XM=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var JM=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var ZM=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var $M=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function Ye(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??Zt.LINEAR,this._magnificationFilter=e.magnificationFilter??pi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,_Re(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Ye._uniformList[this.type])||(Ye._uniformList[this.type]=Object.keys(this._uniforms))}Ye._uniformList={};Ye.fromType=function(e,t){let n=new Ye({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Ye.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};Ye.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(_){return _.bufferView}),u=u[0]);let h=new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),A;l(u.internalFormat)?A=new Nt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):A=new Nt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=A;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let _=this.uniforms[m];_.x=A._width,_.y=A._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new jr({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};Ye.prototype.isDestroyed=function(){return!1};Ye.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function _Re(e,t){e=e??V.EMPTY_OBJECT,t._strict=e.strict??!1,t._count=e.count??0,t._template=ze(e.fabric??V.EMPTY_OBJECT),t._template.uniforms=ze(t._template.uniforms??V.EMPTY_OBJECT),t._template.materials=ze(t._template.materials??V.EMPTY_OBJECT),t.type=l(t._template.type)?t._template.type:Xn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=Ye._materialCache.getMaterial(t.type);if(l(i)){let r=ze(i.fabric,!0);t._template=wt(t._template,r,!0),n=i.translucent}IRe(t),l(i)||Ye._materialCache.addMaterial(t.type,t),bRe(t),BRe(t),vRe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=n??o,n=e.translucent??n,l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function o6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function Ste(e,t){}function yRe(e,t){}var CRe=["type","materials","uniforms","components","source"],ERe=["diffuse","specular","shininess","normal","emission","alpha"];function IRe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;o6(t,CRe,Ste,!0),o6(o,ERe,Ste,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);o6(n,r,yRe,!1)}function xRe(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function bRe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&xRe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var wte={mat2:Wi,mat3:J,mat4:R},TRe=/\.ktx2$/i;function SRe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Ye.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let A=new on({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Nt({context:i,source:r,sampler:A}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Nt&&r!==c){n._texturePaths[e]=void 0;let A=n._textures[e];l(A)&&A!==n._defaultTexture&&A.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof we;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let A=h?r:we.createIfNeeded(r),g;TRe.test(A.url)?g=Iu(A.url):g=A.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function wRe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof jr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Ye.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[we.createIfNeeded(i.positiveX).fetchImage(),we.createIfNeeded(i.negativeX).fetchImage(),we.createIfNeeded(i.positiveY).fetchImage(),we.createIfNeeded(i.negativeY).fetchImage(),we.createIfNeeded(i.positiveZ).fetchImage(),we.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function BRe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&Bte(e,n)}function Bte(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=DRe(o),s;if(r==="channels")s=ow(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;PRe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},Bte(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=ow(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(SRe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(wRe(t));else if(r.indexOf("mat")!==-1){let u=new wte[r];e._uniforms[c]=function(){return wte[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function DRe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Ye.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function vRe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ye({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=wt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;ow(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=ow(e,i,a)}}function ow(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function PRe(e,t,n){return ow(e,t,t,n)}Ye._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Ye.DefaultImageId="czm_defaultImage";Ye.DefaultCubeMapId="czm_defaultCubeMap";Ye.ColorType="Color";Ye._materialCache.addMaterial(Ye.ColorType,{fabric:{type:Ye.ColorType,uniforms:{color:new G(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.ImageType="Image";Ye._materialCache.addMaterial(Ye.ImageType,{fabric:{type:Ye.ImageType,uniforms:{image:Ye.DefaultImageId,repeat:new k(1,1),color:new G(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.DiffuseMapType="DiffuseMap";Ye._materialCache.addMaterial(Ye.DiffuseMapType,{fabric:{type:Ye.DiffuseMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.AlphaMapType="AlphaMap";Ye._materialCache.addMaterial(Ye.AlphaMapType,{fabric:{type:Ye.AlphaMapType,uniforms:{image:Ye.DefaultImageId,channel:"a",repeat:new k(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ye.SpecularMapType="SpecularMap";Ye._materialCache.addMaterial(Ye.SpecularMapType,{fabric:{type:Ye.SpecularMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",repeat:new k(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ye.EmissionMapType="EmissionMap";Ye._materialCache.addMaterial(Ye.EmissionMapType,{fabric:{type:Ye.EmissionMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.BumpMapType="BumpMap";Ye._materialCache.addMaterial(Ye.BumpMapType,{fabric:{type:Ye.BumpMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",strength:.8,repeat:new k(1,1)},source:OM},translucent:!1});Ye.NormalMapType="NormalMap";Ye._materialCache.addMaterial(Ye.NormalMapType,{fabric:{type:Ye.NormalMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",strength:.8,repeat:new k(1,1)},source:HM},translucent:!1});Ye.GridType="Grid";Ye._materialCache.addMaterial(Ye.GridType,{fabric:{type:Ye.GridType,uniforms:{color:new G(0,1,0,1),cellAlpha:.1,lineCount:new k(8,8),lineThickness:new k(1,1),lineOffset:new k(0,0)},source:VM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Ye.StripeType="Stripe";Ye._materialCache.addMaterial(Ye.StripeType,{fabric:{type:Ye.StripeType,uniforms:{horizontal:!0,evenColor:new G(1,1,1,.5),oddColor:new G(0,0,1,.5),offset:0,repeat:5},source:JM},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Ye.CheckerboardType="Checkerboard";Ye._materialCache.addMaterial(Ye.CheckerboardType,{fabric:{type:Ye.CheckerboardType,uniforms:{lightColor:new G(1,1,1,.5),darkColor:new G(0,0,0,.5),repeat:new k(5,5)},source:FM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.DotType="Dot";Ye._materialCache.addMaterial(Ye.DotType,{fabric:{type:Ye.DotType,uniforms:{lightColor:new G(1,1,0,.75),darkColor:new G(0,1,1,.75),repeat:new k(5,5)},source:QM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.WaterType="Water";Ye._materialCache.addMaterial(Ye.WaterType,{fabric:{type:Ye.WaterType,uniforms:{baseWaterColor:new G(.2,.3,.6,1),blendColor:new G(0,1,.699,1),specularMap:Ye.DefaultImageId,normalMap:Ye.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:$M},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Ye.RimLightingType="RimLighting";Ye._materialCache.addMaterial(Ye.RimLightingType,{fabric:{type:Ye.RimLightingType,uniforms:{color:new G(1,0,0,.7),rimColor:new G(1,1,1,.4),width:.3},source:KM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Ye.FadeType="Fade";Ye._materialCache.addMaterial(Ye.FadeType,{fabric:{type:Ye.FadeType,uniforms:{fadeInColor:new G(1,0,0,1),fadeOutColor:new G(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new k(.5,.5)},source:zM},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Ye.PolylineArrowType="PolylineArrow";Ye._materialCache.addMaterial(Ye.PolylineArrowType,{fabric:{type:Ye.PolylineArrowType,uniforms:{color:new G(1,1,1,1)},source:WM},translucent:!0});Ye.PolylineDashType="PolylineDash";Ye._materialCache.addMaterial(Ye.PolylineDashType,{fabric:{type:Ye.PolylineDashType,uniforms:{color:new G(1,0,1,1),gapColor:new G(0,0,0,0),dashLength:16,dashPattern:255},source:jM},translucent:!0});Ye.PolylineGlowType="PolylineGlow";Ye._materialCache.addMaterial(Ye.PolylineGlowType,{fabric:{type:Ye.PolylineGlowType,uniforms:{color:new G(0,.5,1,1),glowPower:.25,taperPower:1},source:YM},translucent:!0});Ye.PolylineOutlineType="PolylineOutline";Ye._materialCache.addMaterial(Ye.PolylineOutlineType,{fabric:{type:Ye.PolylineOutlineType,uniforms:{color:new G(1,1,1,1),outlineColor:new G(1,0,0,1),outlineWidth:1},source:qM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Ye.ElevationContourType="ElevationContour";Ye._materialCache.addMaterial(Ye.ElevationContourType,{fabric:{type:Ye.ElevationContourType,uniforms:{spacing:100,color:new G(1,0,0,1),width:1},source:UM},translucent:!1});Ye.ElevationRampType="ElevationRamp";Ye._materialCache.addMaterial(Ye.ElevationRampType,{fabric:{type:Ye.ElevationRampType,uniforms:{image:Ye.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:GM},translucent:!1});Ye.SlopeRampMaterialType="SlopeRamp";Ye._materialCache.addMaterial(Ye.SlopeRampMaterialType,{fabric:{type:Ye.SlopeRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:XM},translucent:!1});Ye.AspectRampMaterialType="AspectRamp";Ye._materialCache.addMaterial(Ye.AspectRampMaterialType,{fabric:{type:Ye.AspectRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:LM},translucent:!1});Ye.ElevationBandType="ElevationBand";Ye._materialCache.addMaterial(Ye.ElevationBandType,{fabric:{type:Ye.ElevationBandType,uniforms:{heights:Ye.DefaultImageId,colors:Ye.DefaultImageId},source:kM},translucent:!0});Ye.WaterMaskType="WaterMask";Ye._materialCache.addMaterial(Ye.WaterMaskType,{fabric:{type:Ye.WaterMaskType,source:ZM,uniforms:{waterColor:new G(1,1,1,1),landColor:new G(0,0,0,0)}},translucent:!1});var ao=Ye;function yC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??yC.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(yC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});yC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;yC.prototype.isTranslucent=go.prototype.isTranslucent;yC.prototype.getRenderState=go.prototype.getRenderState;yC.MaterialSupport={BASIC:Object.freeze({vertexFormat:Pe.POSITION_AND_NORMAL,vertexShaderSource:fM,fragmentShaderSource:uM}),TEXTURED:Object.freeze({vertexFormat:Pe.POSITION_NORMAL_AND_ST,vertexShaderSource:hM,fragmentShaderSource:dM}),ALL:Object.freeze({vertexFormat:Pe.ALL,vertexShaderSource:lM,fragmentShaderSource:cM})};var Io=yC;var e1=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var t1=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var pI=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var n1=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function QA(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?n1:t1,r=i?pI:e1,s=i?QA.FLAT_VERTEX_FORMAT:QA.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(QA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});QA.VERTEX_FORMAT=Pe.POSITION_AND_NORMAL;QA.FLAT_VERTEX_FORMAT=Pe.POSITION_ONLY;QA.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;QA.prototype.isTranslucent=go.prototype.isTranslucent;QA.prototype.getRenderState=go.prototype.getRenderState;var gn=QA;function gI(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(gI.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});gI.prototype.getType=function(e){return"Color"};var RRe=new K;gI.prototype.getValue=function(e,t){return l(e)||(e=K.now(RRe)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};gI.prototype.equals=function(e){return this===e||e instanceof gI&&j.equals(this._color,e._color)};var Jt=gI;function Ig(e){e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._rectangle=e.rectangle??ae.MAX_VALUE,this._projection=new Hi(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(Ig.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});Ig.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};Ig.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};Ig.prototype.rectangleToNativeRectangle=function(e,t){let n=D.toDegrees(e.west),i=D.toDegrees(e.south),o=D.toDegrees(e.east),r=D.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};Ig.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=D.toDegrees(o.west),o.south=D.toDegrees(o.south),o.east=D.toDegrees(o.east),o.north=D.toDegrees(o.north),o};Ig.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,A=o.north-(t+1)*f;return l(i)||(i=new ae(c,A,u,h)),i.west=c,i.south=A,i.east=u,i.north=h,i};Ig.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=D.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new k(u,f)};var co=Ig;var Dte=new d,vte=new d,Pte=new Ae,r6=new d,MRe=new d,Rte=new le,NRe=new co,rw=[new Ae,new Ae,new Ae,new Ae],sw=new k,cs={};cs.initialize=function(){let e=cs._initPromise;return l(e)||(e=we.fetchJson(fn("Assets/approximateTerrainHeights.json")).then(function(t){cs._terrainHeights=t}),cs._initPromise=e),e};cs.getMinimumMaximumHeights=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMinTerrainHeight,o=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,Pte),Dte),t.cartographicToCartesian(ae.southwest(e,Pte),vte),d.midpoint(vte,Dte,r6);let a=t.scaleToGeodeticSurface(r6,MRe);if(l(a)){let c=d.distance(r6,a);i=Math.min(i,-c)}else i=cs._defaultMinTerrainHeight}return i=Math.max(cs._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};cs.getBoundingSphere=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[1])}let o=le.fromRectangle3D(e,t,0);return le.fromRectangle3D(e,t,i,Rte),le.union(o,Rte,o)};function Mte(e){Ae.fromRadians(e.east,e.north,0,rw[0]),Ae.fromRadians(e.west,e.north,0,rw[1]),Ae.fromRadians(e.east,e.south,0,rw[2]),Ae.fromRadians(e.west,e.south,0,rw[3]);let t=0,n=0,i=0,o=0,r=cs._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=rw[c];if(NRe.positionToTileXY(u,s,sw),c===0)i=sw.x,o=sw.y;else if(i!==sw.x||o!==sw.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}cs._terrainHeightsMaxLevel=6;cs._defaultMaxTerrainHeight=9e3;cs._defaultMinTerrainHeight=-1e5;cs._terrainHeights=void 0;cs._initPromise=void 0;Object.defineProperties(cs,{initialized:{get:function(){return l(cs._terrainHeights)}}});var wi=cs;function Xc(e,t,n){this.minimum=d.clone(e??d.ZERO),this.maximum=d.clone(t??d.ZERO),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}Xc.fromCorners=function(e,t,n){return l(n)||(n=new Xc),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};Xc.fromPoints=function(e,t){if(l(t)||(t=new Xc),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let A=e[h],g=A.x,m=A.y,_=A.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(_,o),a=Math.max(_,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};Xc.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new Xc(e.minimum,e.maximum,e.center)};Xc.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var i1=new d;Xc.intersectPlane=function(e,t){i1=d.subtract(e.maximum,e.minimum,i1);let n=d.multiplyByScalar(i1,.5,i1),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?nn.INSIDE:r+o<0?nn.OUTSIDE:nn.INTERSECTING};Xc.prototype.clone=function(e){return Xc.clone(this,e)};Xc.prototype.intersectPlane=function(e){return Xc.intersectPlane(this,e)};Xc.prototype.equals=function(e){return Xc.equals(this,e)};var CC=Xc;var s6=new se;function nm(e,t){t=t??te.default,e=t.scaleToGeodeticSurface(e);let n=kt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(R.getColumn(n,0,s6)),this._yAxis=d.fromCartesian4(R.getColumn(n,1,s6));let i=d.fromCartesian4(R.getColumn(n,2,s6));this._plane=mn.fromPointNormal(e,i)}Object.defineProperties(nm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var LRe=new CC;nm.fromPoints=function(e,t){let n=CC.fromPoints(e,LRe);return new nm(n.center,t)};var Nte=new In,o1=new d;nm.prototype.projectPointOntoPlane=function(e,t){let n=Nte;n.origin=e,d.normalize(e,n.direction);let i=Ai.rayPlane(n,this._plane,o1);if(l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new k(r,s)}};nm.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};nm.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new k);let n=Nte;n.origin=e,d.clone(this._plane.normal,n.direction);let i=Ai.rayPlane(n,this._plane,o1);l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};nm.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var ORe=new d;nm.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=ORe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};nm.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var xs=nm;function ji(e,t){this.center=d.clone(e??d.ZERO),this.halfAxes=J.clone(t??J.ZERO)}ji.packedLength=d.packedLength+J.packedLength;ji.pack=function(e,t,n){return n=n??0,d.pack(e.center,t,n),J.pack(e.halfAxes,t,n+d.packedLength),t};ji.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ji),d.unpack(e,t,n.center),J.unpack(e,t+d.packedLength,n.halfAxes),n};var FRe=new d,QRe=new d,kRe=new d,URe=new d,GRe=new d,zRe=new d,VRe=new J,HRe={unitary:new J,diagonal:new J};ji.fromPoints=function(e,t){if(l(t)||(t=new ji),!l(e)||e.length===0)return t.halfAxes=J.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],FRe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,A;for(n=0;n<i;n++)A=d.subtract(e[n],o,QRe),s+=A.x*A.x,a+=A.x*A.y,c+=A.x*A.z,u+=A.y*A.y,f+=A.y*A.z,h+=A.z*A.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=VRe;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=J.computeEigenDecomposition(g,HRe),_=J.clone(m.unitary,t.halfAxes),y=J.getColumn(_,0,URe),C=J.getColumn(_,1,GRe),E=J.getColumn(_,2,zRe),I=-Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE,B=Number.MAX_VALUE,v=Number.MAX_VALUE,P=Number.MAX_VALUE;for(n=0;n<i;n++)A=e[n],I=Math.max(d.dot(y,A),I),b=Math.max(d.dot(C,A),b),S=Math.max(d.dot(E,A),S),B=Math.min(d.dot(y,A),B),v=Math.min(d.dot(C,A),v),P=Math.min(d.dot(E,A),P);y=d.multiplyByScalar(y,.5*(B+I),y),C=d.multiplyByScalar(C,.5*(v+b),C),E=d.multiplyByScalar(E,.5*(P+S),E);let N=d.add(y,C,t.center);d.add(N,E,N);let L=kRe;return L.x=I-B,L.y=b-v,L.z=S-P,d.multiplyByScalar(L,.5,L),J.multiplyByScale(t.halfAxes,L,t.halfAxes),t};var Ute=new d,WRe=new d;function Lte(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new ji);let h=f.halfAxes;J.setColumn(h,0,t,h),J.setColumn(h,1,n,h),J.setColumn(h,2,i,h);let A=Ute;A.x=(o+r)/2,A.y=(s+a)/2,A.z=(c+u)/2;let g=WRe;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return A=J.multiplyByVector(h,A,A),d.add(e,A,m),J.multiplyByScale(h,g,h),f}var Ote=new Ae,jRe=new d,YRe=new Ae,qRe=new Ae,KRe=new Ae,XRe=new Ae,JRe=new Ae,ZRe=new d,Fte=new d,$Re=new d,Qte=new d,eMe=new d,tMe=new k,nMe=new k,iMe=new k,oMe=new k,rMe=new k,sMe=new d,aMe=new d,cMe=new d,lMe=new d,uMe=new k,fMe=new d,dMe=new d,hMe=new d,mMe=new mn(d.UNIT_X,0);ji.fromRectangle=function(e,t,n,i,o){t=t??0,n=n??0,i=i??te.default;let r,s,a,c,u,f,h;if(e.width<=D.PI){let v=ae.center(e,Ote),P=i.cartographicToCartesian(v,jRe),N=new xs(P,i);h=N.plane;let L=v.longitude,p=e.south<0&&e.north>0?0:v.latitude,x=Ae.fromRadians(L,e.north,n,YRe),T=Ae.fromRadians(e.west,e.north,n,qRe),w=Ae.fromRadians(e.west,p,n,KRe),M=Ae.fromRadians(e.west,e.south,n,XRe),O=Ae.fromRadians(L,e.south,n,JRe),U=i.cartographicToCartesian(x,ZRe),Q=i.cartographicToCartesian(T,Fte),z=i.cartographicToCartesian(w,$Re),F=i.cartographicToCartesian(M,Qte),H=i.cartographicToCartesian(O,eMe),W=N.projectPointToNearestOnPlane(U,tMe),Z=N.projectPointToNearestOnPlane(Q,nMe),Y=N.projectPointToNearestOnPlane(z,iMe),$=N.projectPointToNearestOnPlane(F,oMe),X=N.projectPointToNearestOnPlane(H,rMe);return r=Math.min(Z.x,Y.x,$.x),s=-r,c=Math.max(Z.y,W.y),a=Math.min($.y,X.y),T.height=M.height=t,Q=i.cartographicToCartesian(T,Fte),F=i.cartographicToCartesian(M,Qte),u=Math.min(mn.getPointDistance(h,Q),mn.getPointDistance(h,F)),f=n,Lte(N.origin,N.xAxis,N.yAxis,N.zAxis,r,s,a,c,u,f,o)}let A=e.south>0,g=e.north<0,m=A?e.south:g?e.north:0,_=ae.center(e,Ote).longitude,y=d.fromRadians(_,m,n,i,sMe);y.z=0;let E=Math.abs(y.x)<D.EPSILON10&&Math.abs(y.y)<D.EPSILON10?d.UNIT_X:d.normalize(y,aMe),I=d.UNIT_Z,b=d.cross(E,I,cMe);h=mn.fromPointNormal(y,E,mMe);let S=d.fromRadians(_+D.PI_OVER_TWO,m,n,i,lMe);s=d.dot(mn.projectPointOntoPlane(h,S,uMe),b),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,fMe).z,a=d.fromRadians(0,e.south,A?t:n,i,dMe).z;let B=d.fromRadians(e.east,m,n,i,hMe);return u=mn.getPointDistance(h,B),f=0,Lte(y,b,I,E,r,s,a,c,u,f,o)};ji.fromTransformation=function(e,t){return l(t)||(t=new ji),t.center=R.getTranslation(e,t.center),t.halfAxes=R.getMatrix3(e,t.halfAxes),t.halfAxes=J.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};ji.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),J.clone(e.halfAxes,t.halfAxes),t):new ji(e.center,e.halfAxes)};ji.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[J.COLUMN0ROW0]+s*o[J.COLUMN0ROW1]+a*o[J.COLUMN0ROW2])+Math.abs(r*o[J.COLUMN1ROW0]+s*o[J.COLUMN1ROW1]+a*o[J.COLUMN1ROW2])+Math.abs(r*o[J.COLUMN2ROW0]+s*o[J.COLUMN2ROW1]+a*o[J.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?nn.OUTSIDE:u>=c?nn.INSIDE:nn.INTERSECTING};var Gte=new d,zte=new d,Vte=new d,AMe=new d,kte=new d,pMe=new d;ji.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,Ute),i=e.halfAxes,o=J.getColumn(i,0,Gte),r=J.getColumn(i,1,zte),s=J.getColumn(i,2,Vte),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,A=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):A=!1;let g=!f+!h+!A,m,_,y;if(g===1){let b=o;m=r,_=s,h?A||(b=s,_=o):(b=r,m=o),y=d.cross(m,_,kte),b===o?o=y:b===r?r=y:b===s&&(s=y)}else if(g===2){m=o,h?m=r:A&&(m=s);let b=d.UNIT_Y;b.equalsEpsilon(m,D.EPSILON3)&&(b=d.UNIT_X),_=d.cross(m,b,AMe),d.normalize(_,_),y=d.cross(m,_,kte),d.normalize(y,y),m===o?(r=_,s=y):m===r?(s=_,o=y):m===s&&(o=_,r=y)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let C=pMe;C.x=d.dot(n,o),C.y=d.dot(n,r),C.z=d.dot(n,s);let E=0,I;return C.x<-a?(I=C.x+a,E+=I*I):C.x>a&&(I=C.x-a,E+=I*I),C.y<-c?(I=C.y+c,E+=I*I):C.y>c&&(I=C.y-c,E+=I*I),C.z<-u?(I=C.z+u,E+=I*I):C.z>u&&(I=C.z-u,E+=I*I),E};var gMe=new d,_Me=new d;ji.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=J.getColumn(a,0,Gte),u=J.getColumn(a,1,zte),f=J.getColumn(a,2,Vte),h=d.add(c,u,gMe);d.add(h,f,h),d.add(h,s,h);let A=d.subtract(h,t,_Me),g=d.dot(n,A);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var yMe=new d,CMe=new d,EMe=new d;ji.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=J.getColumn(i,0,yMe),r=J.getColumn(i,1,CMe),s=J.getColumn(i,2,EMe);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var IMe=new J;ji.computeTransformation=function(e,t){l(t)||(t=new R);let n=e.center,i=J.multiplyByUniformScale(e.halfAxes,2,IMe);return R.fromRotationTranslation(i,n,t)};var xMe=new le;ji.isOccluded=function(e,t){let n=le.fromOrientedBoundingBox(e,xMe);return!t.isBoundingSphereVisible(n)};ji.prototype.intersectPlane=function(e){return ji.intersectPlane(this,e)};ji.prototype.distanceSquaredTo=function(e){return ji.distanceSquaredTo(this,e)};ji.prototype.computePlaneDistances=function(e,t,n){return ji.computePlaneDistances(this,e,t,n)};ji.prototype.computeCorners=function(e){return ji.computeCorners(this,e)};ji.prototype.computeTransformation=function(e){return ji.computeTransformation(this,e)};ji.prototype.isOccluded=function(e){return ji.isOccluded(this,e)};ji.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&J.equals(e.halfAxes,t.halfAxes)};ji.prototype.clone=function(e){return ji.clone(this,e)};ji.prototype.equals=function(e){return ji.equals(this,e)};var Qn=ji;var r1={};r1.getHeight=function(e,t,n){return(e-n)*t+n};var bMe=new Ae;r1.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,bMe);if(!l(r))return d.clone(e,o);let s=r1.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Yr=r1;var Dr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function aw(e){e=e??V.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??Me.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Ec(e,t){return(e._flags&t)===t}function xg(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(aw.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Ec(this,Dr.CULL)},set:function(e){Ec(this,Dr.CULL)!==e&&(xg(this,Dr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Ec(this,Dr.OCCLUDE)},set:function(e){Ec(this,Dr.OCCLUDE)!==e&&(xg(this,Dr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Ec(this,Dr.CAST_SHADOWS)},set:function(e){Ec(this,Dr.CAST_SHADOWS)!==e&&(xg(this,Dr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Ec(this,Dr.RECEIVE_SHADOWS)},set:function(e){Ec(this,Dr.RECEIVE_SHADOWS)!==e&&(xg(this,Dr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(xg(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(xg(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Ec(this,Dr.PICK_ONLY)},set:function(e){Ec(this,Dr.PICK_ONLY)!==e&&(xg(this,Dr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(xg(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});aw.shallowClone=function(e,t){if(l(e))return l(t)||(t=new aw),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};aw.prototype.execute=function(e,t){e.draw(this,t)};var nt=aw;var TMe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Be=Object.freeze(TMe);var s1={CLOCKWISE:ee.CW,COUNTER_CLOCKWISE:ee.CCW};s1.validate=function(e){return e===s1.CLOCKWISE||e===s1.COUNTER_CLOCKWISE};var Gs=Object.freeze(s1);function Hte(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=Hte(e[t]));return Object.freeze(e)}var Wte=Hte;function om(e){let t=e??V.EMPTY_OBJECT,n=t.cull??V.EMPTY_OBJECT,i=t.polygonOffset??V.EMPTY_OBJECT,o=t.scissorTest??V.EMPTY_OBJECT,r=o.rectangle??V.EMPTY_OBJECT,s=t.depthRange??V.EMPTY_OBJECT,a=t.depthTest??V.EMPTY_OBJECT,c=t.colorMask??V.EMPTY_OBJECT,u=t.blending??V.EMPTY_OBJECT,f=u.color??V.EMPTY_OBJECT,h=t.stencilTest??V.EMPTY_OBJECT,A=h.frontOperation??V.EMPTY_OBJECT,g=h.backOperation??V.EMPTY_OBJECT,m=t.sampleCoverage??V.EMPTY_OBJECT,_=t.viewport;this.frontFace=t.frontFace??Gs.COUNTER_CLOCKWISE,this.cull={enabled:n.enabled??!1,face:n.face??ee.BACK},this.lineWidth=t.lineWidth??1,this.polygonOffset={enabled:i.enabled??!1,factor:i.factor??0,units:i.units??0},this.scissorTest={enabled:o.enabled??!1,rectangle:Xe.clone(r)},this.depthRange={near:s.near??0,far:s.far??1},this.depthTest={enabled:a.enabled??!1,func:a.func??ee.LESS},this.colorMask={red:c.red??!0,green:c.green??!0,blue:c.blue??!0,alpha:c.alpha??!0},this.depthMask=t.depthMask??!0,this.stencilMask=t.stencilMask??-1,this.blending={enabled:u.enabled??!1,color:new G(f.red??0,f.green??0,f.blue??0,f.alpha??0),equationRgb:u.equationRgb??ee.FUNC_ADD,equationAlpha:u.equationAlpha??ee.FUNC_ADD,functionSourceRgb:u.functionSourceRgb??ee.ONE,functionSourceAlpha:u.functionSourceAlpha??ee.ONE,functionDestinationRgb:u.functionDestinationRgb??ee.ZERO,functionDestinationAlpha:u.functionDestinationAlpha??ee.ZERO},this.stencilTest={enabled:h.enabled??!1,frontFunction:h.frontFunction??ee.ALWAYS,backFunction:h.backFunction??ee.ALWAYS,reference:h.reference??0,mask:h.mask??-1,frontOperation:{fail:A.fail??ee.KEEP,zFail:A.zFail??ee.KEEP,zPass:A.zPass??ee.KEEP},backOperation:{fail:g.fail??ee.KEEP,zFail:g.zFail??ee.KEEP,zPass:g.zPass??ee.KEEP}},this.sampleCoverage={enabled:m.enabled??!1,value:m.value??1,invert:m.invert??!1},this.viewport=l(_)?new Xe(_.x,_.y,_.width,_.height):void 0,this.id=0,this._applyFunctions=[]}var SMe=0,im={};om.fromCache=function(e){let t=JSON.stringify(e),n=im[t];if(l(n))return++n.referenceCount,n.state;let i=new om(e),o=JSON.stringify(i);return n=im[o],l(n)||(i.id=SMe++,n={referenceCount:0,state:i},im[o]=n),++n.referenceCount,im[t]={referenceCount:1,state:n.state},n.state};om.removeFromCache=function(e){let t=new om(e),n=JSON.stringify(t),i=im[n],o=JSON.stringify(e),r=im[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete im[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete im[n]};om.getCache=function(){return im};om.clearCache=function(){im={}};function EC(e,t,n){n?e.enable(t):e.disable(t)}function jte(e,t){e.frontFace(t.frontFace)}function Yte(e,t){let n=t.cull,i=n.enabled;EC(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function qte(e,t){e.lineWidth(t.lineWidth)}function Kte(e,t){let n=t.polygonOffset,i=n.enabled;EC(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function Xte(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if(EC(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function Jte(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function Zte(e,t){let n=t.depthTest,i=n.enabled;EC(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function $te(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function ene(e,t){e.depthMask(t.depthMask)}function tne(e,t){e.stencilMask(t.stencilMask)}function wMe(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function nne(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;EC(e,e.BLEND,o),o&&(wMe(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function ine(e,t){let n=t.stencilTest,i=n.enabled;if(EC(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let A=n.backOperation,g=A.fail,m=A.zFail,_=A.zPass;e.stencilOpSeparate(e.BACK,g,m,_)}}function one(e,t){let n=t.sampleCoverage,i=n.enabled;EC(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var BMe=new Xe;function rne(e,t,n){let i=t.viewport??n.viewport;l(i)||(i=BMe,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}om.apply=function(e,t,n){jte(e,t),Yte(e,t),qte(e,t),Kte(e,t),Jte(e,t),Zte(e,t),$te(e,t),ene(e,t),tne(e,t),ine(e,t),one(e,t),Xte(e,t,n),nne(e,t,n),rne(e,t,n)};function DMe(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(jte),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(Yte),e.lineWidth!==t.lineWidth&&n.push(qte),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push(Kte),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(Jte),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(Zte),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push($te),e.depthMask!==t.depthMask&&n.push(ene),e.stencilMask!==t.stencilMask&&n.push(tne),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(ine),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(one),n}om.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=DMe(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let A=0;A<h;++A)f[A](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&Xte(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&nne(e,n,o),(t!==n||i!==o||i.context!==o.context)&&rne(e,n,o)};om.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:Xe.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:G.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?Xe.clone(e.viewport):void 0}};var Ue=om;var vMe=new d;function Lt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var Ta={};Ta[ee.FLOAT]="float";Ta[ee.FLOAT_VEC2]="vec2";Ta[ee.FLOAT_VEC3]="vec3";Ta[ee.FLOAT_VEC4]="vec4";Ta[ee.INT]="int";Ta[ee.INT_VEC2]="ivec2";Ta[ee.INT_VEC3]="ivec3";Ta[ee.INT_VEC4]="ivec4";Ta[ee.BOOL]="bool";Ta[ee.BOOL_VEC2]="bvec2";Ta[ee.BOOL_VEC3]="bvec3";Ta[ee.BOOL_VEC4]="bvec4";Ta[ee.FLOAT_MAT2]="mat2";Ta[ee.FLOAT_MAT3]="mat3";Ta[ee.FLOAT_MAT4]="mat4";Ta[ee.SAMPLER_2D]="sampler2D";Ta[ee.SAMPLER_CUBE]="samplerCube";Lt.prototype.getDeclaration=function(e){let t=`uniform ${Ta[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var PMe={czm_viewport:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return R.getTranslation(e.inverseView,vMe)}}),czm_frameNumber:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Lt({size:9,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},bg=PMe;function RMe(e,t,n,i){switch(t.type){case e.FLOAT:return new sne(e,t,n,i);case e.FLOAT_VEC2:return new ane(e,t,n,i);case e.FLOAT_VEC3:return new cne(e,t,n,i);case e.FLOAT_VEC4:return new lne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a1(e,t,n,i);case e.UNSIGNED_INT_SAMPLER_2D:return new a1(e,t,n,i);case e.INT:case e.BOOL:return new une(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new fne(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new dne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new hne(e,t,n,i);case e.FLOAT_MAT2:return new mne(e,t,n,i);case e.FLOAT_MAT3:return new Ane(e,t,n,i);case e.FLOAT_MAT4:return new pne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function sne(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}sne.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}ane.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function cne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}cne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z)))};function lne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}lne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(se.equals(e,this._value)||(this._value=se.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function a1(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}a1.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;e.bindTexture(t._target,t._texture)};a1.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function une(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}une.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function fne(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}fne.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function dne(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}dne.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function hne(e,t,n,i){this.name=n,this.value=void 0,this._value=new se,this._gl=e,this._location=i}hne.prototype.set=function(){let e=this.value;se.equals(e,this._value)||(se.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var MMe=new Float32Array(4);function mne(e,t,n,i){this.name=n,this.value=void 0,this._value=new Wi,this._gl=e,this._location=i}mne.prototype.set=function(){if(!Wi.equalsArray(this.value,this._value,0)){Wi.clone(this.value,this._value);let e=Wi.toArray(this.value,MMe);this._gl.uniformMatrix2fv(this._location,!1,e)}};var NMe=new Float32Array(9);function Ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new J,this._gl=e,this._location=i}Ane.prototype.set=function(){if(!J.equalsArray(this.value,this._value,0)){J.clone(this.value,this._value);let e=J.toArray(this.value,NMe);this._gl.uniformMatrix3fv(this._location,!1,e)}};var LMe=new Float32Array(16);function pne(e,t,n,i){this.name=n,this.value=void 0,this._value=new R,this._gl=e,this._location=i}pne.prototype.set=function(){if(!R.equalsArray(this.value,this._value,0)){R.clone(this.value,this._value);let e=R.toArray(this.value,LMe);this._gl.uniformMatrix4fv(this._location,!1,e)}};var c1=RMe;function OMe(e,t,n,i){switch(t.type){case e.FLOAT:return new gne(e,t,n,i);case e.FLOAT_VEC2:return new _ne(e,t,n,i);case e.FLOAT_VEC3:return new yne(e,t,n,i);case e.FLOAT_VEC4:return new Cne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a6(e,t,n,i);case e.INT:case e.BOOL:return new Ene(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Ine(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new xne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new bne(e,t,n,i);case e.FLOAT_MAT2:return new Tne(e,t,n,i);case e.FLOAT_MAT3:return new Sne(e,t,n,i);case e.FLOAT_MAT4:return new wne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function gne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}gne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function _ne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}_ne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function yne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}yne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Cne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Cne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?G.equalsArray(s,n,o)||(G.pack(s,n,o),i=!0):l(s.x)&&(se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function a6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}a6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];e.activeTexture(t+o),e.bindTexture(r._target,r._texture)}};a6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Ene(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Ene.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Ine(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Ine.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function xne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}xne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function bne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}bne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function Tne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Tne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Wi.equalsArray(s,n,o)||(Wi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function Sne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}Sne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];J.equalsArray(s,n,o)||(J.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function wne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}wne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];R.equalsArray(s,n,o)||(R.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var l1=OMe;var FMe=0;function kA(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=QMe(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=FMe++}kA.fromCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.getShaderProgram(e)};kA.replaceCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(kA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return u1(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return u1(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return u1(this),this._uniformsByName}}});function Bne(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function QMe(e,t){let n={};if(!qt.highpFloatSupported||!qt.highpIntSupported){let i,o,r,s,a=Bne(e),c=Bne(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var rm="[Cesium WebGL] ";function kMe(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let A in a)a.hasOwnProperty(A)&&e.bindAttribLocation(s,a[A],A);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${rm}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${rm}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${rm}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${rm}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${rm}Vertex shader compile log: ${c}`),console.error(`${rm} Vertex shader source: +${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${rm}Fragment shader compile log: ${c}`),console.error(`${rm} Fragment shader source: +${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new ce(u);function h(A,g){if(!l(f))return;let m=f.getTranslatedShaderSource(A);if(m===""){console.error(`${rm}${g} shader translation failed.`);return}console.error(`${rm}Translated ${g} shaderSource: +${m}`)}}function UMe(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function GMe(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=c1(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,A,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(A=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),A.push(e.getUniform(t,g))))}else{h=[];for(let _=0;_<a.size;++_)g=e.getUniformLocation(t,`${u}[${_}]`),g!==null&&h.push(g);f=l1(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function zMe(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=bg[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function VMe(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function u1(e){l(e._program)||Dne(e)}function Dne(e){let t=e._program,n=e._gl,i=kMe(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=GMe(n,i),s=zMe(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=UMe(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=VMe(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,A=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Dne(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=A;let y=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(y?y[1]:m.message)}})}kA.prototype._bind=function(){u1(this),this._gl.useProgram(this._program)};kA.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};kA.prototype.isDestroyed=function(){return!1};kA.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};kA.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var ln=kA;var f1=`/** + * A built-in GLSL floating-point constant for converting radians to degrees. + * + * @alias czm_degreesPerRadian + * @glslConstant + * + * @see CesiumMath.DEGREES_PER_RADIAN + * + * @example + * // GLSL declaration + * const float czm_degreesPerRadian = ...; + * + * // Example + * float deg = czm_degreesPerRadian * rad; + */ +const float czm_degreesPerRadian = 57.29577951308232; +`;var d1=`/** + * A built-in GLSL vec2 constant for defining the depth range. + * This is a workaround to a bug where IE11 does not implement gl_DepthRange. + * + * @alias czm_depthRange + * @glslConstant + * + * @example + * // GLSL declaration + * float depthRangeNear = czm_depthRange.near; + * float depthRangeFar = czm_depthRange.far; + * + */ +const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0); +`;var h1=`/** + * 0.1 + * + * @name czm_epsilon1 + * @glslConstant + */ +const float czm_epsilon1 = 0.1; +`;var m1=`/** + * 0.01 + * + * @name czm_epsilon2 + * @glslConstant + */ +const float czm_epsilon2 = 0.01; +`;var A1=`/** + * 0.001 + * + * @name czm_epsilon3 + * @glslConstant + */ +const float czm_epsilon3 = 0.001; +`;var p1=`/** + * 0.0001 + * + * @name czm_epsilon4 + * @glslConstant + */ +const float czm_epsilon4 = 0.0001; +`;var g1=`/** + * 0.00001 + * + * @name czm_epsilon5 + * @glslConstant + */ +const float czm_epsilon5 = 0.00001; +`;var _1=`/** + * 0.000001 + * + * @name czm_epsilon6 + * @glslConstant + */ +const float czm_epsilon6 = 0.000001; +`;var y1=`/** + * 0.0000001 + * + * @name czm_epsilon7 + * @glslConstant + */ +const float czm_epsilon7 = 0.0000001; +`;var C1=`/** + * DOC_TBA + * + * @name czm_infinity + * @glslConstant + */ +const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp? +`;var E1=`/** + * A built-in GLSL floating-point constant for <code>1/pi</code>. + * + * @alias czm_oneOverPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverPi = ...; + * + * // Example + * float pi = 1.0 / czm_oneOverPi; + */ +const float czm_oneOverPi = 0.3183098861837907; +`;var I1=`/** + * A built-in GLSL floating-point constant for <code>1/2pi</code>. + * + * @alias czm_oneOverTwoPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_TWO_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverTwoPi = ...; + * + * // Example + * float pi = 2.0 * czm_oneOverTwoPi; + */ +const float czm_oneOverTwoPi = 0.15915494309189535; +`;var x1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE} + * + * @name czm_passCesium3DTile + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTile = 4.0; +`;var b1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION} + * + * @name czm_passCesium3DTileClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassification = 5.0; +`;var T1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW} + * + * @name czm_passCesium3DTileClassificationIgnoreShow + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; +`;var S1=`/** + * The automatic GLSL constant for {@link Pass#CLASSIFICATION} + * + * @name czm_passClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passClassification = 7.0; +`;var w1=`/** + * The automatic GLSL constant for {@link Pass#COMPUTE} + * + * @name czm_passCompute + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCompute = 1.0; +`;var B1=`/** + * The automatic GLSL constant for {@link Pass#ENVIRONMENT} + * + * @name czm_passEnvironment + * @glslConstant + * + * @see czm_pass + */ +const float czm_passEnvironment = 0.0; +`;var D1=`/** + * The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS} + * + * @name czm_passGaussianSplats + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGaussianSplats = 10.0; +`;var v1=`/** + * The automatic GLSL constant for {@link Pass#GLOBE} + * + * @name czm_passGlobe + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGlobe = 2.0; +`;var P1=`/** + * The automatic GLSL constant for {@link Pass#OPAQUE} + * + * @name czm_passOpaque + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOpaque = 7.0; +`;var R1=`/** + * The automatic GLSL constant for {@link Pass#OVERLAY} + * + * @name czm_passOverlay + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOverlay = 11.0; +`;var M1=`/** + * The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION} + * + * @name czm_passTerrainClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTerrainClassification = 3.0; +`;var N1=`/** + * The automatic GLSL constant for {@link Pass#TRANSLUCENT} + * + * @name czm_passTranslucent + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTranslucent = 8.0; +`;var L1=`/** + * The automatic GLSL constant for {@link Pass#VOXELS} + * + * @name czm_passVoxels + * @glslConstant + * + * @see czm_pass + */ +const float czm_passVoxels = 9.0; +`;var O1=`/** + * A built-in GLSL floating-point constant for <code>Math.PI</code>. + * + * @alias czm_pi + * @glslConstant + * + * @see CesiumMath.PI + * + * @example + * // GLSL declaration + * const float czm_pi = ...; + * + * // Example + * float twoPi = 2.0 * czm_pi; + */ +const float czm_pi = 3.141592653589793; +`;var F1=`/** + * A built-in GLSL floating-point constant for <code>pi/4</code>. + * + * @alias czm_piOverFour + * @glslConstant + * + * @see CesiumMath.PI_OVER_FOUR + * + * @example + * // GLSL declaration + * const float czm_piOverFour = ...; + * + * // Example + * float pi = 4.0 * czm_piOverFour; + */ +const float czm_piOverFour = 0.7853981633974483; +`;var Q1=`/** + * A built-in GLSL floating-point constant for <code>pi/6</code>. + * + * @alias czm_piOverSix + * @glslConstant + * + * @see CesiumMath.PI_OVER_SIX + * + * @example + * // GLSL declaration + * const float czm_piOverSix = ...; + * + * // Example + * float pi = 6.0 * czm_piOverSix; + */ +const float czm_piOverSix = 0.5235987755982988; +`;var k1=`/** + * A built-in GLSL floating-point constant for <code>pi/3</code>. + * + * @alias czm_piOverThree + * @glslConstant + * + * @see CesiumMath.PI_OVER_THREE + * + * @example + * // GLSL declaration + * const float czm_piOverThree = ...; + * + * // Example + * float pi = 3.0 * czm_piOverThree; + */ +const float czm_piOverThree = 1.0471975511965976; +`;var U1=`/** + * A built-in GLSL floating-point constant for <code>pi/2</code>. + * + * @alias czm_piOverTwo + * @glslConstant + * + * @see CesiumMath.PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_piOverTwo = ...; + * + * // Example + * float pi = 2.0 * czm_piOverTwo; + */ +const float czm_piOverTwo = 1.5707963267948966; +`;var G1=`/** + * A built-in GLSL floating-point constant for converting degrees to radians. + * + * @alias czm_radiansPerDegree + * @glslConstant + * + * @see CesiumMath.RADIANS_PER_DEGREE + * + * @example + * // GLSL declaration + * const float czm_radiansPerDegree = ...; + * + * // Example + * float rad = czm_radiansPerDegree * deg; + */ +const float czm_radiansPerDegree = 0.017453292519943295; +`;var z1=`/** + * The constant identifier for the 2D {@link SceneMode} + * + * @name czm_sceneMode2D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode2D = 2.0; +`;var V1=`/** + * The constant identifier for the 3D {@link SceneMode} + * + * @name czm_sceneMode3D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode3D = 3.0; +`;var H1=`/** + * The constant identifier for the Columbus View {@link SceneMode} + * + * @name czm_sceneModeColumbusView + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneModeColumbusView = 1.0; +`;var W1=`/** + * The constant identifier for the Morphing {@link SceneMode} + * + * @name czm_sceneModeMorphing + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + */ +const float czm_sceneModeMorphing = 0.0; +`;var j1=`/** + * A built-in GLSL floating-point constant for one solar radius. + * + * @alias czm_solarRadius + * @glslConstant + * + * @see CesiumMath.SOLAR_RADIUS + * + * @example + * // GLSL declaration + * const float czm_solarRadius = ...; + */ +const float czm_solarRadius = 695500000.0; +`;var Y1=`/** + * A built-in GLSL floating-point constant for <code>3pi/2</code>. + * + * @alias czm_threePiOver2 + * @glslConstant + * + * @see CesiumMath.THREE_PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_threePiOver2 = ...; + * + * // Example + * float pi = (2.0 / 3.0) * czm_threePiOver2; + */ +const float czm_threePiOver2 = 4.71238898038469; +`;var q1=`/** + * A built-in GLSL floating-point constant for <code>2pi</code>. + * + * @alias czm_twoPi + * @glslConstant + * + * @see CesiumMath.TWO_PI + * + * @example + * // GLSL declaration + * const float czm_twoPi = ...; + * + * // Example + * float pi = czm_twoPi / 2.0; + */ +const float czm_twoPi = 6.283185307179586; +`;var K1=`/** + * The maximum latitude, in radians, both North and South, supported by a Web Mercator + * (EPSG:3857) projection. Technically, the Mercator projection is defined + * for any latitude up to (but not including) 90 degrees, but it makes sense + * to cut it off sooner because it grows exponentially with increasing latitude. + * The logic behind this particular cutoff value, which is the one used by + * Google Maps, Bing Maps, and Esri, is that it makes the projection + * square. That is, the rectangle is equal in the X and Y directions. + * + * The constant value is computed as follows: + * czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi))) + * + * @name czm_webMercatorMaxLatitude + * @glslConstant + */ +const float czm_webMercatorMaxLatitude = 1.4844222297453324; +`;var X1=`/** + * @name czm_depthRangeStruct + * @glslStruct + */ +struct czm_depthRangeStruct +{ + float near; + float far; +}; +`;var J1=`/** + * Holds material information that can be used for lighting. Returned by all czm_getMaterial functions. + * + * @name czm_material + * @glslStruct + * + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} specular Intensity of incoming light reflecting in a single direction. + * @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + */ +struct czm_material +{ + vec3 diffuse; + float specular; + float shininess; + vec3 normal; + vec3 emission; + float alpha; +}; +`;var Z1=`/** + * Used as input to every material's czm_getMaterial function. + * + * @name czm_materialInput + * @glslStruct + * + * @property {float} s 1D texture coordinates. + * @property {vec2} st 2D texture coordinates. + * @property {vec3} str 3D texture coordinates. + * @property {vec3} normalEC Unperturbed surface normal in eye coordinates. + * @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space. + * @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye. + * @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials. + * @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials. + * @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials. +* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials. + */ +struct czm_materialInput +{ + float s; + vec2 st; + vec3 str; + vec3 normalEC; + mat3 tangentToEyeMatrix; + vec3 positionToEyeEC; + float height; + float slope; + float aspect; + float waterMask; +}; +`;var $1=`/** + * Struct for representing a material for a {@link Model}. The model + * rendering pipeline will pass this struct between material, custom shaders, + * and lighting stages. This is not to be confused with {@link czm_material} + * which is used by the older Fabric materials system, although they are similar. + * <p> + * All color values (diffuse, specular, emissive) are in linear color space. + * </p> + * + * @name czm_modelMaterial + * @glslStruct + * + * @property {vec4} baseColor The base color of the material. + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + * @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature. + * @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces. + * @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded. + * @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + */ +struct czm_modelMaterial { + vec4 baseColor; + vec3 diffuse; + float alpha; + vec3 specular; + float roughness; + vec3 normalEC; + float occlusion; + vec3 emissive; +#ifdef USE_SPECULAR + float specularWeight; +#endif +#ifdef USE_ANISOTROPY + vec3 anisotropicT; + vec3 anisotropicB; + float anisotropyStrength; +#endif +#ifdef USE_CLEARCOAT + float clearcoatFactor; + float clearcoatRoughness; + vec3 clearcoatNormal; + // Add clearcoatF0 when KHR_materials_ior is implemented +#endif +}; +`;var eN=`/** + * Struct for representing the output of a custom vertex shader. + * + * @name czm_modelVertexOutput + * @glslStruct + * + * @see {@link CustomShader} + * @see {@link Model} + * + * @property {vec3} positionMC The position of the vertex in model coordinates + * @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives. + */ +struct czm_modelVertexOutput { + vec3 positionMC; + float pointSize; +}; +`;var tN=`/** + * DOC_TBA + * + * @name czm_ray + * @glslStruct + */ +struct czm_ray +{ + vec3 origin; + vec3 direction; +}; +`;var nN=`/** + * DOC_TBA + * + * @name czm_raySegment + * @glslStruct + */ +struct czm_raySegment +{ + float start; + float stop; +}; + +/** + * DOC_TBA + * + * @name czm_emptyRaySegment + * @glslConstant + */ +const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity); + +/** + * DOC_TBA + * + * @name czm_fullRaySegment + * @glslConstant + */ +const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); +`;var iN=`struct czm_shadowParameters +{ +#ifdef USE_CUBE_MAP_SHADOW + vec3 texCoords; +#else + vec2 texCoords; +#endif + + float depthBias; + float depth; + float nDotL; + vec2 texelStepSize; + float normalShadingSmooth; + float darkness; +}; +`;var oN=`/** + * Converts an HSB color (hue, saturation, brightness) to RGB + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_HSBToRGB + * @glslFunction + * + * @param {vec3} hsb The color in HSB. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + +vec3 czm_HSBToRGB(vec3 hsb) +{ + vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www); + return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y); +} +`;var rN=`/** + * Converts an HSL color (hue, saturation, lightness) to RGB + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_HSLToRGB + * @glslFunction + * + * @param {vec3} rgb The color in HSL. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 hueToRGB(float hue) +{ + float r = abs(hue * 6.0 - 3.0) - 1.0; + float g = 2.0 - abs(hue * 6.0 - 2.0); + float b = 2.0 - abs(hue * 6.0 - 4.0); + return clamp(vec3(r, g, b), 0.0, 1.0); +} + +vec3 czm_HSLToRGB(vec3 hsl) +{ + vec3 rgb = hueToRGB(hsl.x); + float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y; + return (rgb - 0.5) * c + hsl.z; +} +`;var sN=`/** + * Converts an RGB color to HSB (hue, saturation, brightness) + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_RGBToHSB + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + +vec3 czm_RGBToHSB(vec3 rgb) +{ + vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g)); + vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r)); + + float d = q.x - min(q.w, q.y); + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x); +} +`;var aN=`/** + * Converts an RGB color to HSL (hue, saturation, lightness) + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_RGBToHSL + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSL. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 RGBtoHCV(vec3 rgb) +{ + // Based on work by Sam Hocevar and Emil Persson + vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0); + vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx); + float c = q.x - min(q.w, q.y); + float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z); + return vec3(h, c, q.x); +} + +vec3 czm_RGBToHSL(vec3 rgb) +{ + vec3 hcv = RGBtoHCV(rgb); + float l = hcv.z - hcv.y * 0.5; + float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7); + return vec3(hcv.x, s, l); +} +`;var cN=`/** + * Converts an RGB color to CIE Yxy. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_RGBToXYZ + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in CIE Yxy. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_RGBToXYZ(vec3 rgb) +{ + const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193, + 0.3576, 0.7152, 0.1192, + 0.1805, 0.0722, 0.9505); + vec3 xyz = RGB2XYZ * rgb; + vec3 Yxy; + Yxy.r = xyz.g; + float temp = dot(vec3(1.0), xyz); + Yxy.gb = xyz.rg / temp; + return Yxy; +} +`;var lN=`/** + * Converts a CIE Yxy color to RGB. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_XYZToRGB + * @glslFunction + * + * @param {vec3} Yxy The color in CIE Yxy. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_XYZToRGB(vec3 Yxy) +{ + const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556, + -1.5371, 1.8760, -0.2040, + -0.4985, 0.0416, 1.0572); + vec3 xyz; + xyz.r = Yxy.r * Yxy.g / Yxy.b; + xyz.g = Yxy.r; + xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b; + + return XYZ2RGB * xyz; +} +`;var uN=`// See: +// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + +vec3 czm_acesTonemapping(vec3 color) { + float g = 0.985; + float a = 0.065; + float b = 0.0001; + float c = 0.433; + float d = 0.238; + + color = (color * (color + a) - b) / (color * (g * color + c) + d); + + color = clamp(color, 0.0, 1.0); + + return color; +} +`;var fN=`/** + * @private + */ +float czm_alphaWeight(float a) +{ + float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + + // See Weighted Blended Order-Independent Transparency for examples of different weighting functions: + // http://jcgt.org/published/0002/02/09/ + return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0)))); +} +`;var dN=`/** + * Procedural anti-aliasing by blurring two colors that meet at a sharp edge. + * + * @name czm_antialias + * @glslFunction + * + * @param {vec4} color1 The color on one side of the edge. + * @param {vec4} color2 The color on the other side of the edge. + * @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>. + * @param {float} dist The distance to the edge in texture coordinates. + * @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors. + * @returns {vec4} The anti-aliased color. + * + * @example + * // GLSL declarations + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor); + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist); + * + * // get the color for a material that has a sharp edge at the line y = 0.5 in texture space + * float dist = abs(textureCoordinates.t - 0.5); + * vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t)); + * vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1); + */ +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor) +{ + float val1 = clamp(dist / fuzzFactor, 0.0, 1.0); + float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0); + val1 = val1 * (1.0 - val2); + val1 = val1 * val1 * (3.0 - (2.0 * val1)); + val1 = pow(val1, 0.5); //makes the transition nicer + + vec4 midColor = (color1 + color2) * 0.5; + return mix(midColor, currentColor, val1); +} + +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist) +{ + return czm_antialias(color1, color2, currentColor, dist, 0.1); +} +`;var hN=`/** + * Apply a HSB color shift to an RGB color. + * + * @param {vec3} rgb The color in RGB space. + * @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment + * @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects. + * + * @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range. + */ +vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) { + // Convert rgb color to hsb + vec3 hsb = czm_RGBToHSB(rgb); + + // Perform hsb shift + // Hue cycles around so no clamp is needed. + hsb.x += hsbShift.x; // hue + hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation + + // brightness + // + // Some shaders such as atmosphere-related effects need to leave black + // pixels unchanged + if (ignoreBlackPixels) { + hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0; + } else { + hsb.z = hsb.z + hsbShift.z; + } + hsb.z = clamp(hsb.z, 0.0, 1.0); + + // Convert shifted hsb back to rgb + return czm_HSBToRGB(hsb); +} +`;var mN=`/** + * Approximately computes spherical coordinates given a normal. + * Uses approximate inverse trigonometry for speed and consistency, + * since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU. + * + * @name czm_approximateSphericalCoordinates + * @glslFunction + * + * @param {vec3} normal arbitrary-length normal. + * + * @returns {vec2} Approximate latitude and longitude spherical coordinates. + */ +vec2 czm_approximateSphericalCoordinates(vec3 normal) { + // Project into plane with vertical for latitude + float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z); + float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y); + return vec2(latitudeApproximation, longitudeApproximation); +} +`;var AN=`/** + * Compute a rational approximation to tanh(x) + * + * @param {float} x A real number input + * @returns {float} An approximation for tanh(x) +*/ +float czm_approximateTanh(float x) { + float x2 = x * x; + return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2))); +} +`;var pN=`/** + * Determines if the fragment is back facing + * + * @name czm_backFacing + * @glslFunction + * + * @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>. + */ +bool czm_backFacing() +{ + // !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494. + return gl_FrontFacing == false; +} +`;var gN=`/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a float expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {float} a Value to return if the comparison is true. + * @param {float} b Value to return if the comparison is false. + * + * @returns {float} equivalent of comparison ? a : b + */ +float czm_branchFreeTernary(bool comparison, float a, float b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec2 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec2} a Value to return if the comparison is true. + * @param {vec2} b Value to return if the comparison is false. + * + * @returns {vec2} equivalent of comparison ? a : b + */ +vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec3 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec4 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} +`;var _N=` +vec4 czm_cascadeColor(vec4 weights) +{ + return vec4(1.0, 0.0, 0.0, 1.0) * weights.x + + vec4(0.0, 1.0, 0.0, 1.0) * weights.y + + vec4(0.0, 0.0, 1.0, 1.0) * weights.z + + vec4(1.0, 0.0, 1.0, 1.0) * weights.w; +} +`;var yN=` +uniform vec4 shadowMap_cascadeDistances; + +float czm_cascadeDistance(vec4 weights) +{ + return dot(shadowMap_cascadeDistances, weights); +} +`;var CN=` +uniform mat4 shadowMap_cascadeMatrices[4]; + +mat4 czm_cascadeMatrix(vec4 weights) +{ + return shadowMap_cascadeMatrices[0] * weights.x + + shadowMap_cascadeMatrices[1] * weights.y + + shadowMap_cascadeMatrices[2] * weights.z + + shadowMap_cascadeMatrices[3] * weights.w; +} +`;var EN=` +uniform vec4 shadowMap_cascadeSplits[2]; + +vec4 czm_cascadeWeights(float depthEye) +{ + // One component is set to 1.0 and all others set to 0.0. + vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye)); + vec4 far = step(depthEye, shadowMap_cascadeSplits[1]); + return near * far; +} +`;var IN=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { + float signedDistance = texture(clippingDistance, uv).r; + return (signedDistance - 0.5) * 2.0; +} + +void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) { + // Position is completely outside of polygons bounds + vec2 rectUv = clippingPosition; + if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) { + #ifdef CLIPPING_INVERSE + discard; + #endif + return; + } + + vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0)); + vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005)); + float dimension = float(extentsLength); + if (extentsLength > 2) { + dimension = ceil(log2(float(extentsLength))); + } + + vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension; + vec2 uv = textureOffset + rectUv / dimension; + + float signedDistance = getSignedDistance(uv, clippingDistance); + + #ifdef CLIPPING_INVERSE + if (signedDistance > 0.0) { + discard; + } + #else + if (signedDistance < 0.0) { + discard; + } + #endif +} +`;var xN=`/** + * DOC_TBA + * + * @name czm_columbusViewMorph + * @glslFunction + */ +vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time) +{ + // Just linear for now. + vec3 p = mix(position2D.xyz, position3D.xyz, time); + return vec4(p, 1.0); +} +`;var bN=`/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {vec3} positionWC Position of the fragment in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + czm_ray primaryRay, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + vec3 direction = normalize(primaryRay.direction); + + float cosAngle = dot(direction, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +`;var TN=`/** + * Compute atmosphere scattering for the ground atmosphere and fog. This method + * uses automatic uniforms so it is always synced with the scene settings. + * + * @name czm_computeGroundAtmosphereScattering + * @glslfunction + * + * @param {vec3} positionWC The position of the fragment in world coordinates. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + czm_computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var SN=`/** + * Returns a position in model coordinates relative to eye taking into + * account the current scene mode: 3D, 2D, or Columbus view. + * <p> + * This uses standard position attributes, <code>position3DHigh</code>, + * <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>, + * and should be used when writing a vertex shader for an {@link Appearance}. + * </p> + * + * @name czm_computePosition + * @glslFunction + * + * @returns {vec4} The position relative to eye. + * + * @example + * vec4 p = czm_computePosition(); + * v_positionEC = (czm_modelViewRelativeToEye * p).xyz; + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * + * @see czm_translateRelativeToEye + */ +vec4 czm_computePosition(); +`;var wN=`/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. This function uses automatic uniforms + * so the atmosphere settings are always synced with the current scene. + * + * @name czm_computeScattering + * @glslfunction + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. + const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. + const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = czm_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x)))); +} +`;var BN=`/** + * @private + */ +vec2 cordic(float angle) +{ +// Scale the vector by the appropriate factor for the 24 iterations to follow. + vec2 vector = vec2(6.0725293500888267e-1, 0.0); +// Iteration 1 + float sense = (angle < 0.0) ? -1.0 : 1.0; + // float factor = sense * 1.0; // 2^-0 + mat2 rotation = mat2(1.0, sense, -sense, 1.0); + vector = rotation * vector; + angle -= sense * 7.8539816339744828e-1; // atan(2^-0) +// Iteration 2 + sense = (angle < 0.0) ? -1.0 : 1.0; + float factor = sense * 5.0e-1; // 2^-1 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.6364760900080609e-1; // atan(2^-1) +// Iteration 3 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.5e-1; // 2^-2 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4497866312686414e-1; // atan(2^-2) +// Iteration 4 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.25e-1; // 2^-3 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2435499454676144e-1; // atan(2^-3) +// Iteration 5 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.25e-2; // 2^-4 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.2418809995957350e-2; // atan(2^-4) +// Iteration 6 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.125e-2; // 2^-5 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.1239833430268277e-2; // atan(2^-5) +// Iteration 7 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.5625e-2; // 2^-6 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5623728620476831e-2; // atan(2^-6) +// Iteration 8 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.8125e-3; // 2^-7 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.8123410601011111e-3; // atan(2^-7) +// Iteration 9 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.90625e-3; // 2^-8 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.9062301319669718e-3; // atan(2^-8) +// Iteration 10 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.953125e-3; // 2^-9 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9531225164788188e-3; // atan(2^-9) +// Iteration 11 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.765625e-4; // 2^-10 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.7656218955931946e-4; // atan(2^-10) +// Iteration 12 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.8828125e-4; // 2^-11 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.8828121119489829e-4; // atan(2^-11) +// Iteration 13 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.44140625e-4; // 2^-12 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4414062014936177e-4; // atan(2^-12) +// Iteration 14 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.220703125e-4; // 2^-13 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2207031189367021e-4; // atan(2^-13) +// Iteration 15 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.103515625e-5; // 2^-14 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.1035156174208773e-5; // atan(2^-14) +// Iteration 16 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.0517578125e-5; // 2^-15 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.0517578115526096e-5; // atan(2^-15) +// Iteration 17 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.52587890625e-5; // 2^-16 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5258789061315762e-5; // atan(2^-16) +// Iteration 18 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.62939453125e-6; // 2^-17 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.6293945311019700e-6; // atan(2^-17) +// Iteration 19 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.814697265625e-6; // 2^-18 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.8146972656064961e-6; // atan(2^-18) +// Iteration 20 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.9073486328125e-6; // 2^-19 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9073486328101870e-6; // atan(2^-19) +// Iteration 21 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.5367431640625e-7; // 2^-20 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.5367431640596084e-7; // atan(2^-20) +// Iteration 22 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.76837158203125e-7; // 2^-21 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.7683715820308884e-7; // atan(2^-21) +// Iteration 23 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.384185791015625e-7; // 2^-22 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.3841857910155797e-7; // atan(2^-22) +// Iteration 24 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.1920928955078125e-7; // 2^-23 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; +// angle -= sense * 1.1920928955078068e-7; // atan(2^-23) + + return vector; +} + +/** + * Computes the cosine and sine of the provided angle using the CORDIC algorithm. + * + * @name czm_cosineAndSine + * @glslFunction + * + * @param {float} angle The angle in radians. + * + * @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate). + * + * @example + * vec2 v = czm_cosineAndSine(czm_piOverSix); + * float cosine = v.x; + * float sine = v.y; + */ +vec2 czm_cosineAndSine(float angle) +{ + if (angle < -czm_piOverTwo || angle > czm_piOverTwo) + { + if (angle < 0.0) + { + return -cordic(angle + czm_pi); + } + else + { + return -cordic(angle - czm_pi); + } + } + else + { + return cordic(angle); + } +} +`;var DN=`/** + * Decompresses texture coordinates that were packed into a single float. + * + * @name czm_decompressTextureCoordinates + * @glslFunction + * + * @param {float} encoded The compressed texture coordinates. + * @returns {vec2} The decompressed texture coordinates. + */ + vec2 czm_decompressTextureCoordinates(float encoded) + { + float temp = encoded / 4096.0; + float xZeroTo4095 = floor(temp); + float stx = xZeroTo4095 / 4095.0; + float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0; + return vec2(stx, sty); + } +`;var vN=`// emulated noperspective +#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH) +out float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2. + * GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes, + * capping the shadow volume. More information here: + * https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt. + * + * When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring + * no geometry gets clipped by setting the clip space z value to 0.0 and then + * sending the unaltered screen space z value (using emulated noperspective + * interpolation) to the frag shader where it is clamped to [0,1] and then + * written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on: + * https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv. + * + * When GL_EXT_frag_depth is not available, which is the case on some mobile + * devices, we must attempt to fix this only in the vertex shader. + * The approach is to clamp the z value to the far plane, which closes the + * shadow volume but also distorts the geometry, so there can still be artifacts + * on frustum seams. + * + * @name czm_depthClamp + * @glslFunction + * + * @param {vec4} coords The vertex in clip coordinates. + * @returns {vec4} The modified vertex. + * + * @example + * gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0)); + * + * @see czm_writeDepthClamp + */ +vec4 czm_depthClamp(vec4 coords) +{ +#ifndef LOG_DEPTH +#if __VERSION__ == 300 || defined(GL_EXT_frag_depth) + v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w; + coords.z = 0.0; +#else + coords.z = min(coords.z, coords.w); +#endif +#endif + return coords; +} +`;var PN=`/** + * Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system + * to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the + * surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping. + * <br /><br /> + * The ellipsoid is assumed to be centered at the model coordinate's origin. + * + * @name czm_eastNorthUpToEyeCoordinates + * @glslFunction + * + * @param {vec3} positionMC The position on the ellipsoid in model coordinates. + * @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates. + * + * @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates. + * + * @example + * // Transform a vector defined in the east-north-up coordinate + * // system, (0, 0, 1) which is the surface normal, to eye + * // coordinates. + * mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + * vec3 normalEC = m * vec3(0.0, 0.0, 1.0); + */ +mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC) +{ + vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates + vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates + vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates + + return mat3( + tangentEC.x, tangentEC.y, tangentEC.z, + bitangentEC.x, bitangentEC.y, bitangentEC.z, + normalEC.x, normalEC.y, normalEC.z); +} +`;var RN=`/** + * DOC_TBA + * + * @name czm_ellipsoidContainsPoint + * @glslFunction + * + */ +bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point) +{ + vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz; + return (dot(scaled, scaled) <= 1.0); +} +`;var MN=`/** + * Approximate uv coordinates based on the ellipsoid normal. + * + * @name czm_ellipsoidTextureCoordinates + * @glslFunction + */ +vec2 czm_ellipsoidTextureCoordinates(vec3 normal) +{ + return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5); +} +`;var NN=`/** + * Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code> + * if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs + * <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s, + * <code>vec3</code>s, or <code>vec4</code>s. + * + * @name czm_equalsEpsilon + * @glslFunction + * + * @param {} left The first vector. + * @param {} right The second vector. + * @param {float} epsilon The epsilon to use for equality testing. + * @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise. + * + * @example + * // GLSL declarations + * bool czm_equalsEpsilon(float left, float right, float epsilon); + * bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon); + * bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon); + * bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon); + */ +bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec4(epsilon))); +} + +bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec3(epsilon))); +} + +bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec2(epsilon))); +} + +bool czm_equalsEpsilon(float left, float right, float epsilon) { + return (abs(left - right) <= epsilon); +} +`;var LN=`/** + * DOC_TBA + * + * @name czm_eyeOffset + * @glslFunction + * + * @param {vec4} positionEC DOC_TBA. + * @param {vec3} eyeOffset DOC_TBA. + * + * @returns {vec4} DOC_TBA. + */ +vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset) +{ + // This equation is approximate in x and y. + vec4 p = positionEC; + vec4 zEyeOffset = normalize(p) * eyeOffset.z; + p.xy += eyeOffset.xy + zEyeOffset.xy; + p.z += zEyeOffset.z; + return p; +} +`;var ON=`/** + * Transforms a position from eye to window coordinates. The transformation + * from eye to clip coordinates is done using {@link czm_projection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * + * @name czm_eyeToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in eye coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_projection + * @see czm_viewportTransformation + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + */ +vec4 czm_eyeToWindowCoordinates(vec4 positionEC) +{ + vec4 q = czm_projection * positionEC; // clip coordinates + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var FN=`/** + * Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input. + * + * Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on + * "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006. + * Adapted from ShaderFastLibs under MIT License. + * + * Chosen for the following characteristics over range [0, 1]: + * - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan) + * - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator) + * + * The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301); + * Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2. + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between 0 and 1 inclusive. + * + * @returns {float} Approximation of atan(x) + */ +float czm_fastApproximateAtan(float x) { + return x * (-0.1784 * x - 0.0663 * x * x + 1.0301); +} + +/** + * Approximation of atan2. + * + * Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html + * However, we replaced their atan curve with Michael Drobot's (see above). + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between -1 and 1 inclusive. + * @param {float} y Value between -1 and 1 inclusive. + * + * @returns {float} Approximation of atan2(x, y) + */ +float czm_fastApproximateAtan(float x, float y) { + // atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications. + // So range-reduce using abs and by flipping whether x or y is on top. + float t = abs(x); // t used as swap and atan result. + float opposite = abs(y); + float adjacent = max(t, opposite); + opposite = min(t, opposite); + + t = czm_fastApproximateAtan(opposite / adjacent); + + // Undo range reduction + t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var QN=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var kN=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var UN=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var GN=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var zN=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var VN=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var HN=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var WN=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var jN=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var YN=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var qN=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var KN=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var XN=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var JN=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var ZN=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var $N=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var eL=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var tL=`/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when scaling by pixel ratio. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var nL=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * <br /><br /> + * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var iL=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var oL=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var rL=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var sL=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var aL=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + * <p> + * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + * </p> + * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var cL=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var lL=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var uL=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var fL=`/** + * Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var dL=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var hL=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var mL=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var AL=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var pL=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var gL=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var _L=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var yL=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var CL=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var EL=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var IL=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + * <p> + * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + * </p> + * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var xL=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var bL=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var TL=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var SL=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var wL=`/** + * Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate <code>high</code> and <code>low</code> bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + * <p> + * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + * </p> + * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var BL=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var DL=`/** + * Returns the transpose of the matrix. The input <code>matrix</code> can be + * a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var vL=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var PL=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var RL=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var ML=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + * <p> + * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + * </p> + * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var NL=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var LL=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + * <p> + * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + * </p> + * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var OL=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of <code>czm_viewportTransformation</code>. The transformation from + * normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var FL=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var QL=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + * </p> + * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + * </p> + * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var kL=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var _I={czm_degreesPerRadian:f1,czm_depthRange:d1,czm_epsilon1:h1,czm_epsilon2:m1,czm_epsilon3:A1,czm_epsilon4:p1,czm_epsilon5:g1,czm_epsilon6:_1,czm_epsilon7:y1,czm_infinity:C1,czm_oneOverPi:E1,czm_oneOverTwoPi:I1,czm_passCesium3DTile:x1,czm_passCesium3DTileClassification:b1,czm_passCesium3DTileClassificationIgnoreShow:T1,czm_passClassification:S1,czm_passCompute:w1,czm_passEnvironment:B1,czm_passGaussianSplats:D1,czm_passGlobe:v1,czm_passOpaque:P1,czm_passOverlay:R1,czm_passTerrainClassification:M1,czm_passTranslucent:N1,czm_passVoxels:L1,czm_pi:O1,czm_piOverFour:F1,czm_piOverSix:Q1,czm_piOverThree:k1,czm_piOverTwo:U1,czm_radiansPerDegree:G1,czm_sceneMode2D:z1,czm_sceneMode3D:V1,czm_sceneModeColumbusView:H1,czm_sceneModeMorphing:W1,czm_solarRadius:j1,czm_threePiOver2:Y1,czm_twoPi:q1,czm_webMercatorMaxLatitude:K1,czm_depthRangeStruct:X1,czm_material:J1,czm_materialInput:Z1,czm_modelMaterial:$1,czm_modelVertexOutput:eN,czm_ray:tN,czm_raySegment:nN,czm_shadowParameters:iN,czm_HSBToRGB:oN,czm_HSLToRGB:rN,czm_RGBToHSB:sN,czm_RGBToHSL:aN,czm_RGBToXYZ:cN,czm_XYZToRGB:lN,czm_acesTonemapping:uN,czm_alphaWeight:fN,czm_antialias:dN,czm_applyHSBShift:hN,czm_approximateSphericalCoordinates:mN,czm_approximateTanh:AN,czm_backFacing:pN,czm_branchFreeTernary:gN,czm_cascadeColor:_N,czm_cascadeDistance:yN,czm_cascadeMatrix:CN,czm_cascadeWeights:EN,czm_clipPolygons:IN,czm_columbusViewMorph:xN,czm_computeAtmosphereColor:bN,czm_computeGroundAtmosphereScattering:TN,czm_computePosition:SN,czm_computeScattering:wN,czm_cosineAndSine:BN,czm_decompressTextureCoordinates:DN,czm_depthClamp:vN,czm_eastNorthUpToEyeCoordinates:PN,czm_ellipsoidContainsPoint:RN,czm_ellipsoidTextureCoordinates:MN,czm_equalsEpsilon:NN,czm_eyeOffset:LN,czm_eyeToWindowCoordinates:ON,czm_fastApproximateAtan:FN,czm_fog:QN,czm_gammaCorrect:kN,czm_geodeticSurfaceNormal:UN,czm_getDefaultMaterial:GN,czm_getDynamicAtmosphereLightDirection:zN,czm_getLambertDiffuse:VN,czm_getSpecular:HN,czm_getWaterNoise:WN,czm_hue:jN,czm_inverseGamma:YN,czm_isEmpty:qN,czm_isFull:KN,czm_latitudeToWebMercatorFraction:XN,czm_lineDistance:JN,czm_linearToSrgb:ZN,czm_luminance:$N,czm_maximumComponent:eL,czm_metersPerPixel:tL,czm_modelToWindowCoordinates:nL,czm_multiplyWithColorBalance:iL,czm_nearFarScalar:oL,czm_octDecode:rL,czm_packDepth:sL,czm_pbrLighting:aL,czm_pbrNeutralTonemapping:cL,czm_phong:lL,czm_planeDistance:uL,czm_pointAlongRay:fL,czm_rayEllipsoidIntersectionInterval:dL,czm_raySphereIntersectionInterval:hL,czm_readDepth:mL,czm_readNonPerspective:AL,czm_reverseLogDepth:pL,czm_round:gL,czm_saturation:_L,czm_shadowDepthCompare:yL,czm_shadowVisibility:CL,czm_signNotZero:EL,czm_sphericalHarmonics:IL,czm_srgbToLinear:xL,czm_tangentToEyeSpaceMatrix:bL,czm_textureCube:TL,czm_transformPlane:SL,czm_translateRelativeToEye:wL,czm_translucentPhong:BL,czm_transpose:DL,czm_unpackClippingExtents:vL,czm_unpackDepth:PL,czm_unpackFloat:RL,czm_unpackUint:ML,czm_valueTransform:NL,czm_vertexLogDepth:LL,czm_windowToEyeCoordinates:OL,czm_writeDepthClamp:FL,czm_writeLogDepth:QL,czm_writeNonPerspective:kL};function HMe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var UL=HMe;function vne(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=` +`;return i})}function Pne(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=vne(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Rne(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&oa._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=Pne(i,oa._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Rne(o,t)}}))}function WMe(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function jMe(e){let t=[],n=Pne("main",e,t);Rne(n,t),WMe(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function Mne(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=` +#line 0 +${s[i]}`;r=vne(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(_,y){return a=y,` +`});let c=[];r=r.replace(/#extension.*\n/gm,function(_){return c.push(_),` +`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=oa.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + precision highp int; +#else + precision mediump float; + precision mediump int; + #define highp mediump +#endif + +`);let A=e.defines;if(l(A))for(i=0,o=A.length;i<o;++i){let _=A[i];_.length!==0&&(f+=`#define ${_} +`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear + +`),n.floatingPointTexture&&(f+=`#define OES_texture_float + +`);let g="";e.includeBuiltIns&&(g=jMe(r)),f+=` +#line 0 +`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor; + +`),f+=g,f+=r,n.webgl2?f=`#version 300 es +${f}`:f=UL(f,t),f}function oa(e){e=e??V.EMPTY_OBJECT;let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=e.includeBuiltIns??!0}oa.prototype.clone=function(){return new oa({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};oa.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};oa.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(` +`);return`${t}:${n}:${i}:${o}`};oa.prototype.createCombinedVertexShader=function(e){return Mne(this,!1,e)};oa.prototype.createCombinedFragmentShader=function(e){return Mne(this,!0,e)};oa._czmBuiltinsAndUniforms={};for(let e in _I)_I.hasOwnProperty(e)&&(oa._czmBuiltinsAndUniforms[e]=_I[e]);for(let e in bg)if(bg.hasOwnProperty(e)){let t=bg[e];typeof t.getDeclaration=="function"&&(oa._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}oa.createPickVertexShaderSource=function(e){return`${oa.replaceMain(e,"czm_old_main")} +in vec4 pickColor; +out vec4 czm_pickColor; +void main() +{ + czm_old_main(); + czm_pickColor = pickColor; +}`};oa.createPickFragmentShaderSource=function(e,t){let n=oa.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor; +void main() +{ + czm_old_main(); + if (out_FragColor.a == 0.0) { + discard; + } + out_FragColor = czm_pickColor; +}`;return`${n} +${i}`};function YMe(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Nne(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function Lne(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Nne(e,o))return o}}var qMe=["v_normalEC","v_normal"];oa.findNormalVarying=function(e){return Nne(e,"#ifdef HAS_NORMALS")?YMe(e,"HAS_NORMALS")?"v_normalEC":void 0:Lne(e,qMe)};var KMe=["v_positionEC"];oa.findPositionVarying=function(e){return Lne(e,KMe)};var We=oa;var GL=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; + +#ifdef EXTRUDED_GEOMETRY +in vec3 extrudeDirection; + +uniform float u_globeMinimumAltitude; +#endif // EXTRUDED_GEOMETRY + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif // PER_INSTANCE_COLOR + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +out vec4 v_sphericalExtents; +#else // SPHERICAL +out vec2 v_inversePlaneExtents; +out vec4 v_westPlane; +out vec4 v_southPlane; +#endif // SPHERICAL +out vec3 v_uvMinAndSphericalLongitudeRotation; +out vec3 v_uMaxAndInverseDistance; +out vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +void main() +{ + vec4 position = czm_computePosition(); + +#ifdef EXTRUDED_GEOMETRY + float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz)); + delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0; + + //extrudeDirection is zero for the top layer + position = position + vec4(extrudeDirection * delta, 0.0); +#endif + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL + v_sphericalExtents = czm_batchTable_sphericalExtents(batchId); + v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId); +#else // SPHERICAL +#ifdef COLUMBUS_VIEW_2D + vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId); + vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId); + + // If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var IC=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var One={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};One.NUMBER_OF_CLASSIFICATION_TYPES=3;var Jn=Object.freeze(One);var XMe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Ja=Object.freeze(XMe);function JMe(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var zL=JMe;function UA(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=ZMe(t),o=e.floatingPointTexture,r=i===He.FLOAT&&!o,s=$Me(t,r),a=e1e(s,t,r),c=Math.floor(qt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),A=1/f,g=A*.5,m=1/h,_=m*.5;this._textureDimensions=new k(f,h),this._textureStep=new se(A,g,m,_),this._pixelDatatype=r?He.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let y=4*f*h;this._batchValues=i===He.FLOAT&&!r?new Float32Array(y):new Uint8Array(y),this._batchValuesDirty=!1}Object.defineProperties(UA.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function ZMe(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==q.UNSIGNED_BYTE){t=!0;break}return t?He.FLOAT:He.UNSIGNED_BYTE}function Qne(e,t){let n=e[t].componentsPerAttribute;return n===2?k:n===3?d:n===4?se:Number}function $Me(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==q.UNSIGNED_BYTE&&t?i+=4:++i}return n}function e1e(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==q.UNSIGNED_BYTE&&n?o+4:o+1}var cw=new se;function t1e(e,t,n){let i=se.unpack(e,t,cw),o=se.unpackFloat(i);i=se.unpack(e,t+4,cw);let r=se.unpackFloat(i);i=se.unpack(e,t+8,cw);let s=se.unpackFloat(i);i=se.unpack(e,t+12,cw);let a=se.unpackFloat(i);return se.fromElements(o,r,s,a,n)}function n1e(e,t,n){let i=se.packFloat(e.x,cw);se.pack(i,t,n),i=se.packFloat(e.y,i),se.pack(i,t,n+4),i=se.packFloat(e.z,i),se.pack(i,t,n+8),i=se.packFloat(e.w,i),se.pack(i,t,n+12)}var Fne=new se;UA.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?a=t1e(this._batchValues,s,Fne):a=se.unpack(this._batchValues,s,Fne);let c=Qne(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var i1e=[void 0,void 0,new k,new d,new se],o1e=new se;UA.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=i1e[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Qne(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=o1e;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?n1e(c,this._batchValues,h):se.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function r1e(e,t){let n=e._textureDimensions;e._texture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:on.NEAREST,flipY:!1})}function s1e(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}UA.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||r1e(this,e.context),s1e(this))};UA.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:wt(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function a1e(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float numberOfAttributes = float(${t}); + return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5); +} +`:`uniform vec4 batchTextureStep; +uniform vec2 batchTextureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float stepY = batchTextureStep.z; + float centerY = batchTextureStep.w; + float numberOfAttributes = float(${t}); + float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x); + float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}function c1e(e){return e===1?"float":`vec${e}`}function l1e(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function u1e(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=c1e(o),a=l1e(o),c=e._offsets[t],u=`${s} ${r}(float batchId) +{ + vec2 st = computeSt(batchId); + st.x += batchTextureStep.x * float(${c}); +`;return e._packFloats&&i.componentDatatype!==He.UNSIGNED_BYTE?u+=`vec4 textureValue; +textureValue.x = czm_unpackFloat(texture(batchTexture, st)); +textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0))); +textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0))); +textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0))); +`:u+=` vec4 textureValue = texture(batchTexture, st); +`,u+=` ${s} value = textureValue${a}; +`,e._pixelDatatype===He.UNSIGNED_BYTE&&i.componentDatatype===q.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0; +`:e._pixelDatatype===He.FLOAT&&i.componentDatatype===q.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0; +`),u+=` return value; +} +`,u}UA.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture; +`;t+=`${a1e(this)} +`;let n=e.length;for(let i=0;i<n;++i)t+=u1e(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r} +${t} +${s}`}};UA.prototype.isDestroyed=function(){return!1};UA.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var yI=UA;function Ml(e){this._ellipsoid=e??te.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(Ml.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Ml.mercatorAngleToGeodeticLatitude=function(e){return D.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};Ml.geodeticLatitudeToMercatorAngle=function(e){e>Ml.MaximumLatitude?e=Ml.MaximumLatitude:e<-Ml.MaximumLatitude&&(e=-Ml.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};Ml.MaximumLatitude=Ml.mercatorAngleToGeodeticLatitude(Math.PI);Ml.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=Ml.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};Ml.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=Ml.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Yi=Ml;function f1e(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!R.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&jn.transformToWorldCoordinates(e[r]);else R.multiplyTransformation(t,e[0].modelMatrix,t)}function c6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new De({componentDatatype:q.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function d1e(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?c6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(c6(i.westHemisphereGeometry,n),c6(i.eastHemisphereGeometry,n))}}function h1e(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(f1e(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&jn.splitLongitude(t[c]);if(d1e(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(jn.reorderForPostVertexCache(g.geometry),jn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(jn.reorderForPostVertexCache(g.westHemisphereGeometry),jn.reorderForPreVertexCache(g.westHemisphereGeometry),jn.reorderForPostVertexCache(g.eastHemisphereGeometry),jn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let A=jn.combineInstances(t);for(h=A.length,c=0;c<h;++c){u=A[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE&&jn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE){let _=`${m}3D`,y=`${m}2D`;jn.projectTo2D(u,m,_,y,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=le.fromVertices(u.attributes.position2D.values)),jn.encodeAttribute(u,_,`${_}High`,`${_}Low`),jn.encodeAttribute(u,y,`${y}High`,`${y}Low`)}s&&jn.compressVertices(u)}if(!i){let g=[];for(h=A.length,c=0;c<h;++c)u=A[c],g=g.concat(jn.fitToUnsignedShortIndices(u));A=g}return A}function l6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let A=h.indices.length;o+A>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:A}),o+=A}}function m1e(e,t){let n=[];return l6(e,"geometry",t,n),l6(e,"westHemisphereGeometry",t,n),l6(e,"eastHemisphereGeometry",t,n),n}var GA={};GA.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=h1e(e),t.length>0&&(n=jn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=m1e(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],A=h.geometry;l(A)&&(c[f]=A.boundingSphere,u[f]=A.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=le.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=le.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function A1e(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function p1e(e,t){let n=e.length;for(let i=0;i<n;++i)A1e(e[i],t)}function g1e(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*le.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}GA.packCreateGeometryResults=function(e,t){let n=new Float64Array(g1e(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=c.offsetAttribute??-1;let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&le.pack(c.boundingSphere,n,s),s+=le.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&le.pack(c.boundingSphereCV,n,s),s+=le.packedLength;let A=c.attributes,g=[];for(let _ in A)A.hasOwnProperty(_)&&l(A[_])&&(g.push(_),l(o[_])||(o[_]=i.length,i.push(_)));n[s++]=g.length;for(let _=0;_<g.length;_++){let y=g[_],C=A[y];n[s++]=o[y],n[s++]=C.componentDatatype,n[s++]=C.componentsPerAttribute,n[s++]=C.normalize?1:0,n[s++]=C.values.length,n.set(C.values,s),s+=C.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};GA.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,A;n[s++]===1&&(h=le.unpack(n,s)),s+=le.packedLength,n[s++]===1&&(A=le.unpack(n,s)),s+=le.packedLength;let _,y,C,E=new En,I=n[s++];for(i=0;i<I;i++){let S=t[n[s++]],B=n[s++];C=n[s++];let v=n[s++]!==0;_=n[s++],y=q.createTypedArray(B,_);for(let P=0;P<_;P++)y[P]=n[s++];E[S]=new De({componentDatatype:B,componentsPerAttribute:C,normalize:v,values:y})}let b;if(_=n[s++],_>0){let S=y.length/C;for(b=Fe.createTypedArray(S,_),i=0;i<_;i++)b[i]=n[s++]}o[r++]=new ht({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:A,indices:b,attributes:E,offsetAttribute:f})}return o};function _1e(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(R.pack(s.modelMatrix,i,o),o+=R.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function y1e(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=R.unpack(t,o),s;o+=R.packedLength,l(t[o])&&(s={offset:new ho(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}GA.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:_1e(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Hi,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};GA.unpackCombineGeometryParameters=function(e){let t=y1e(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=GA.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=t[o];A.geometry=h,++o}}let r=te.clone(e.ellipsoid),s=e.isGeographic?new Hi(r):new Yi(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:R.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function kne(e){let t=e.length,n=1+(le.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,le.pack(e[r],i,o)):i[o++]=0,o+=le.packedLength}return i}function Une(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=le.unpack(e,i)),++n,i+=le.packedLength;return t}GA.packCombineGeometryResults=function(e,t){l(e.geometries)&&p1e(e.geometries,t);let n=kne(e.boundingSpheres),i=kne(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};GA.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:Une(e.boundingSpheres),boundingSpheresCV:Une(e.boundingSpheresCV)}};var CI=GA;var C1e={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},qr=Object.freeze(C1e);var VL={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};VL.getMorphTime=function(e){return e===VL.SCENE3D?1:e===VL.MORPHING?void 0:0};var ie=Object.freeze(VL);var xu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};xu.NUMBER_OF_SHADOW_MODES=4;xu.castShadows=function(e){return e===xu.ENABLED||e===xu.CAST_ONLY};xu.receiveShadows=function(e){return e===xu.ENABLED||e===xu.RECEIVE_ONLY};xu.fromCastReceive=function(e,t){return e&&t?xu.ENABLED:e?xu.CAST_ONLY:t?xu.RECEIVE_ONLY:xu.DISABLED};var Dn=Object.freeze(xu);function vr(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.show=e.show??!0,this._vertexCacheOptimize=e.vertexCacheOptimize??!1,this._interleave=e.interleave??!1,this._releaseGeometryInstances=e.releaseGeometryInstances??!0,this._allowPicking=e.allowPicking??!0,this._asynchronous=e.asynchronous??!0,this._compressVertices=e.compressVertices??!0,this.cull=e.cull??!0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.rtcCenter=e.rtcCenter,this.shadows=e.shadows??Dn.DISABLED,this._translucent=void 0,this._state=qr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(vr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function E1e(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var I1e=new k,x1e=new d,Kne=new se;function Xne(e){let t=e.length;if(t===1)return e[0];if(t===2)return k.unpack(e,0,I1e);if(t===3)return d.unpack(e,0,x1e);if(t===4)return se.unpack(e,0,Kne)}function b1e(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=E1e(i),s=r.length,a=[],c={},u={},f,A=i[0].attributes,g,m,_;for(g=0;g<s;++g)m=r[g],_=A[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:_.componentDatatype,componentsPerAttribute:_.componentsPerAttribute,normalize:_.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:q.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:q.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let y=a.length,C=new yI(t,a,o);for(g=0;g<o;++g){let E=i[g];A=E.attributes;for(let v=0;v<s;++v){m=r[v],_=A[m];let P=Xne(_.value),N=c[m];C.setBatchedAttribute(g,N,P)}let I={primitive:E.pickPrimitive??e};l(E.id)&&(I.id=E.id);let b=t.createPickId(I);e._pickIds.push(b);let S=b.color,B=Kne;B.x=G.floatToByte(S.red),B.y=G.floatToByte(S.green),B.z=G.floatToByte(S.blue),B.w=G.floatToByte(S.alpha),C.setBatchedAttribute(g,y-1,B)}e._batchTable=C,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function T1e(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new De({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function S1e(e){let t=e.attributes,n=new En;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=T1e(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ht({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:le.clone(e.boundingSphere)})}function w1e(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:R.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var B1e=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;vr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=B1e.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c}; +`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView; +`,r+=`in vec4 position; +`,s+=`${c} +{ + return u_modifiedModelView * position; +} + +`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c} +{ + return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); +} + +`:(r+=`in vec3 ${a}2DHigh; +in vec3 ${a}2DLow; +`,s+=`${c} +{ + vec4 p; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy), + czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow), + czm_morphTime); + } + return p; +} + +`)}return[o,r,t,s].join(` +`)};vr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${We.replaceMain(t,"czm_non_show_main")} +void main() +{ + czm_non_show_main(); + gl_Position *= czm_batchTable_show(batchId); +}`:t};vr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Gne(e){return`${We.replaceMain(e,"czm_non_pick_main")} +out vec4 v_pickColor; +void main() +{ + czm_non_pick_main(); + v_pickColor = czm_batchTable_pickColor(batchId); +}`}function zne(e){return`in vec4 v_pickColor; +${e}`}vr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};vr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId; +`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition(); +`;return o+=` if (czm_sceneMode == czm_sceneMode3D) +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` } +`,o+=` else +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` } +`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};vr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=We.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main() +{ + czm_non_distanceDisplayCondition_main(); + vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId); + vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId); + vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId); + float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId); +`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); +`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId); + vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId); + vec4 centerRTE; + if (czm_morphTime == 1.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); + } + else if (czm_morphTime == 0.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy); + } + else + { + centerRTE = czm_columbusViewMorph( + czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy), + czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow), + czm_morphTime); + } +`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius; + float distanceSq; + if (czm_sceneMode == czm_sceneMode2D) + { + distanceSq = czm_eyeHeight2D.y - radiusSq; + } + else + { + distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq; + } + distanceSq = max(distanceSq, 0.0); + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function Vne(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st; +`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m}); +`}n&&o&&r?(f+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(f+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(f+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(f+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let A=t;A=A.replace(/in\s+vec3\s+normal;/g,""),A=A.replace(/in\s+vec2\s+st;/g,""),A=A.replace(/in\s+vec3\s+tangent;/g,""),A=A.replace(/in\s+vec3\s+bitangent;/g,""),A=We.replaceMain(A,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[u,f,A,g].join(` +`)}function D1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function v1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function Hne(e,t){let n=e.vertexAttributes}function P1e(e,t){return function(){return e[t]}}var u6=Math.max(jt.hardwareConcurrency-1,1),HL,R1e=new mi("combineGeometry");function M1e(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===qr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(HL))for(HL=new Array(u6),o=0;o<u6;o++)HL[o]=new mi("createGeometry");let f;for(u=zL(u,u6),o=0;o<u.length;o++){let h=0,A=u[o],g=A.length;for(r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=i.constructor.packedLength??i.packedLength);let m;if(h>0){let _=new Float64Array(h);for(m=[_.buffer],r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,_,f.offset),f.geometry=_)}c.push(HL[o].scheduleTask({subTasks:u[o]},m))}e._state=qr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=qr.CREATED}).catch(function(h){uw(e,t,qr.FAILED,h)})}else if(e._state===qr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=R1e.scheduleTask(CI.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=qr.COMBINING,Promise.resolve(f).then(function(h){let A=CI.unpackCombineGeometryResults(h);e._geometries=A.geometries,e._attributeLocations=A.attributeLocations,e.modelMatrix=R.clone(A.modelMatrix,e.modelMatrix),e._pickOffsets=A.pickOffsets,e._offsetInstanceExtend=A.offsetInstanceExtend,e._instanceBoundingSpheres=A.boundingSpheres,e._instanceBoundingSpheresCV=A.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}).catch(function(h){uw(e,t,qr.FAILED,h)})}}function N1e(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let A=s.geometry,g;l(A.attributes)&&l(A.primitiveType)?g=S1e(A):g=A.constructor.createGeometry(A),o[c++]=w1e(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=CI.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=R.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}function L1e(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new le;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let _=a[i],y=e._batchTable.getBatchedAttribute(i,n,new d);_=r[i].clone(_),eie(_,y,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let _=a[i];_.center.x-_.radius>0||le.intersectPlane(_,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING?c.push(_):(u.push(_),f.push(_))}let h=c[0],A=f[0],g=u[0];for(i=1;i<c.length;i++)h=le.union(h,c[i]);for(i=1;i<f.length;i++)A=le.union(A,f[i]);for(i=1;i<u.length;i++)g=le.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(A)&&m.push(A),l(g)&&m.push(g),i=0;i<m.length;i++){let _=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=_,e._boundingSphereCV[i]=le.projectTo2D(_,t.mapProjection,e._boundingSphereCV[i])}vr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var Wne=new ei,Jne=new Ae,Zne=new d,$ne=new le;function O1e(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,A=e._instanceBoundingSpheres,g=A.length;for(let m=0;m<g;++m){let _=A[m];if(!l(_))continue;let y=e.modelMatrix;l(y)&&(_=le.transform(_,y,$ne));let C=_.center,E=_.radius,I=ei.fromCartesian(C,Wne);if(h.setBatchedAttribute(m,o,I.high),h.setBatchedAttribute(m,r,I.low),!t.scene3DOnly){let b=f.cartesianToCartographic(C,Jne),S=u.project(b,Zne);I=ei.fromCartesian(S,Wne),h.setBatchedAttribute(m,s,I.high),h.setBatchedAttribute(m,a,I.low)}h.setBatchedAttribute(m,c,E)}e._batchTableBoundingSpheresUpdated=!0}var f6=new d,F1e=new d;function jne(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let A=e.modelMatrix;l(A)&&(f=le.transform(f,A,$ne));let g=f.center;g=r.scaleToGeodeticSurface(g,F1e);let m=r.cartesianToCartographic(g,Jne),_=o.project(m,Zne),y=d.add(h,g,f6);m=r.cartesianToCartographic(y,m);let C=o.project(m,f6),E=d.subtract(C,_,f6),I=E.x;E.x=E.z,E.z=E.y,E.y=I,s.setBatchedAttribute(u,i,E)}e._batchTableOffsetsUpdated=!0}function Q1e(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(li.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(le.clone(u.boundingSphere)),e._boundingSphereWC.push(new le),!o){let f=u.boundingSphereCV.center,h=f.x,A=f.y,g=f.z;f.x=g,f.y=h,f.z=A,e._boundingSphereCV.push(le.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new le),e._boundingSphereMorph.push(new le)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,uw(e,t,qr.COMPLETE,void 0)}function k1e(e,t,n,i){let o=n.getRenderState(),r;i?(r=ze(o,!1),r.cull={enabled:!0,face:Mi.BACK},e._frontFaceRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceRS=Ue.fromCache(r)):(e._frontFaceRS=Ue.fromCache(o),e._backFaceRS=e._frontFaceRS),r=ze(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=ze(o,!1),r.depthTest.func=Ja.GREATER,i?(r.cull={enabled:!0,face:Mi.BACK},e._frontFaceDepthFailRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceDepthFailRS=Ue.fromCache(r)):(e._frontFaceDepthFailRS=Ue.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function U1e(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=vr._appendOffsetToShader(e,r),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!1),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=zne(s),e._sp=ln.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!0),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly),r=D1e(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=zne(s),s=v1e(s),e._spDepthFail=ln.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._spDepthFail,o))}var lw=new R,Yne=new d;function qne(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=P1e(s,c));let a=wt(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return R.multiply(c,e._modelMatrix,lw),R.multiplyByPoint(lw,e.rtcCenter,Yne),R.setTranslation(lw,Yne,lw),lw}),a}function G1e(e,t,n,i,o,r,s,a){let c=qne(e,t,n,a),u;l(e._depthFailAppearance)&&(u=qne(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?Be.TRANSLUCENT:Be.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let A=r.length,g=0;for(let m=0;m<A;++m){let _;o&&(_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,++m),_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,l(e._depthFailAppearance)&&(o&&(++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++g}}vr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!R.equals(n,e._modelMatrix))for(R.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=le.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=le.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphereMorph[o]=le.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function z1e(e,t,n,i,o,r,s,a){vr._updateBoundingVolumes(e,t,o);let c;t.mode===ie.SCENE3D?c=e._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ie.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,A=Dn.castShadows(e.shadows),g=Dn.receiveShadows(e.shadows),m=n.length,_=a?2:1;_*=l(e._depthFailAppearance)?2:1;for(let y=0;y<m;++y){let C=Math.floor(y/_),E=n[y];E.modelMatrix=o,E.boundingVolume=c[C],E.cull=r,E.debugShowBoundingVolume=s,E.castShadows=A,E.receiveShadows=g,h?E.pickId="v_pickColor":E.pickId=void 0,u.push(E)}}}vr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ie.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===qr.FAILED)return;let t=e.context;if(l(this._batchTable)||b1e(this,t),this._batchTable.attributes.length>0){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==qr.COMPLETE&&this._state!==qr.COMBINED&&(this.asynchronous?M1e(this,e):N1e(this,e)),this._state===qr.COMBINED&&(O1e(this,e),jne(this,e),Q1e(this,e)),!this.show||this._state!==qr.COMPLETE)return;this._batchTableOffsetsUpdated||jne(this,e),this._recomputeBoundingSpheres&&L1e(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&(this._createRenderStatesFunction??k1e)(this,t,n,u),r&&(this._createShaderProgramFunction??U1e)(this,e,n),(o||r)&&(this._createCommandsFunction??G1e)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??z1e)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var V1e=new le,H1e=new le;function eie(e,t,n){if(n===hn.TOP){let i=le.clone(e,V1e),o=le.clone(e,H1e);o.center=d.add(o.center,t,o.center),e=le.union(i,o,e)}else n===hn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function W1e(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=q.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function j1e(e,t,n,i,o){return function(r){let s=Xne(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var Y1e=new d;function q1e(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&eie(i,d.fromArray(r.get(),0,Y1e),e._offsetInstanceExtend[n]),l(o)&&(i=le.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function K1e(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}vr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:W1e(s,n,f),set:j1e(s,n,f,this,u)}}return q1e(this,c,n),K1e(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};vr.prototype.isDestroyed=function(){return!1};vr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function uw(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===qr.COMPLETE||e._state===qr.FAILED})}var kn=vr;function X1e(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.value=e.value}var Jc=X1e;var fw=`#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +in vec4 v_sphericalExtents; +#else // SPHERICAL +in vec2 v_inversePlaneExtents; +in vec4 v_westPlane; +in vec4 v_southPlane; +#endif // SPHERICAL +in vec3 v_uvMinAndSphericalLongitudeRotation; +in vec3 v_uMaxAndInverseDistance; +in vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +#ifdef NORMAL_EC +vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth); + return eyeCoordinate.xyz / eyeCoordinate.w; +} + +vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) { + vec2 glFragCoordXY = gl_FragCoord.xy; + // Sample depths at both offset and negative offset + float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw)); + float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw)); + // Explicitly evaluate both paths + // Necessary for multifrustum and for edges of the screen + bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw); + float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function If(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new d6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new d6;if(o.requiresTextureCoordinates=e,n instanceof gn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}If.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof gn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof gn||(o=t.material.shaderSource),new We({defines:i,sources:[o,fw]})};If.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new We({defines:n,sources:[fw],pickColorQualifier:"in"})};If.prototype.createVertexShader=function(e,t,n,i){return cie(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};If.prototype.createPickVertexShader=function(e,t,n,i){return cie(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var tie=new d,nie=new Ae,iie={high:0,low:0};function cie(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=nie;u.longitude=D.PI,u.latitude=0,u.height=0;let f=s.project(u,tie),h=ei.encode(f.x,iie);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let A=nie;A.longitude=-D.PI,A.latitude=0,A.height=0;let g=s.project(A,tie);h=ei.encode(g.x,iie),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof gn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new We({defines:c,sources:[o]})}function d6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(d6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function oie(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/k.distance(t,e)}var J1e=[new k,new k,new k,new k];function lie(e,t){let n=J1e,i=k.unpack(t,0,n[0]),o=k.unpack(t,2,n[1]),r=k.unpack(t,4,n[2]);e.uMaxVmax=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/oie(i,o,r),a=1/oie(i,r,o);e.uvMinAndExtents=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var uie=new Ae,fie=new d,Z1e=new d,$1e=new d,WL={high:0,low:0};function die(e,t,n){let i=uie;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,fie);i.latitude=e.north;let r=t.project(i,Z1e);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,$1e),a=[0,0,0,0],c=[0,0,0,0],u=ei.encode(o.x,WL);a[0]=u.high,c[0]=u.low,u=ei.encode(o.y,WL),a[1]=u.high,c[1]=u.low,u=ei.encode(r.y,WL),a[2]=u.high,c[2]=u.low,u=ei.encode(s.x,WL),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var eNe=new R,tNe=new R,rie=new d,nNe=new Ae,iNe=[new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae];function oNe(e,t,n,i,o,r){let s=ae.center(e,nNe);s.height=n;let a=Ae.toCartesian(s,t,rie),c=kt.eastNorthUpToFixedFrame(a,t,eNe),u=R.inverse(c,tNe),f=e.west,h=e.east,A=e.north,g=e.south,m=iNe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=A,m[1].longitude=f,m[2].latitude=A,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let _=(f+h)*.5,y=(A+g)*.5;m[4].latitude=g,m[4].longitude=_,m[5].latitude=A,m[5].longitude=_,m[6].latitude=y,m[6].longitude=f,m[7].latitude=y,m[7].longitude=h;let C=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;for(let P=0;P<8;P++){m[P].height=n;let N=Ae.toCartesian(m[P],t,rie);R.multiplyByPoint(u,N,N),N.z=0,C=Math.min(C,N.x),E=Math.max(E,N.x),I=Math.min(I,N.y),b=Math.max(b,N.y)}let S=i;S.x=C,S.y=I,S.z=0,R.multiplyByPoint(c,S,S);let B=o;B.x=E,B.y=I,B.z=0,R.multiplyByPoint(c,B,B),d.subtract(B,S,o);let v=r;v.x=C,v.y=b,v.z=0,R.multiplyByPoint(c,v,v),d.subtract(v,S,r)}var rNe=new d,sNe=new d,aNe=new ei;If.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=fie,s=rNe,a=sNe;oNe(e,n,o??0,r,s,a);let c={};lie(c,t);let u=ei.fromCartesian(r,aNe);return c.southWest_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),die(e,i,c),c};var cNe=new d;function sie(e,t,n,i){let o=uie;o.latitude=e,o.longitude=t,o.height=0;let r=Ae.toCartesian(o,n,cNe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=D.fastApproximateAtan2(s,r.z),c=D.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var aie=new k;If.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=sie(e.south,e.west,n,aie),r=o.x,s=o.y,a=sie(e.north,e.east,n,aie),c=a.x,u=a.y,f=0;s>u&&(f=D.PI-s,s=-D.PI,u+=f),r-=D.EPSILON5,s-=D.EPSILON5,c+=D.EPSILON5,u+=D.EPSILON5;let h=1/(u-s),A=1/(c-r),g={sphericalExtents:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,A,h]}),longitudeRotation:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return lie(g,t),die(e,i,g),g};If.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};If.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function lNe(e){return Math.max(e.width,e.height)>If.MAX_WIDTH_FOR_PLANAR_EXTENTS}If.shouldUseSphericalCoordinates=function(e){return lNe(e)};If.MAX_WIDTH_FOR_PLANAR_EXTENTS=D.toRadians(1);var xf=If;var uNe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Zn=Object.freeze(uNe);var fNe={ZERO:ee.ZERO,KEEP:ee.KEEP,REPLACE:ee.REPLACE,INCREMENT:ee.INCR,DECREMENT:ee.DECR,INVERT:ee.INVERT,INCREMENT_WRAP:ee.INCR_WRAP,DECREMENT_WRAP:ee.DECR_WRAP},_t=Object.freeze(fNe);var jL={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};jL.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Zn.ALWAYS,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},backFunction:Zn.ALWAYS,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},reference:jL.CESIUM_3D_TILE_MASK,mask:jL.CESIUM_3D_TILE_MASK}};var Kt=Object.freeze(jL);function xC(e){e=e??V.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(xC.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});xC.isSupported=function(e){return e.context.stencilBuffer};function EI(e,t){let n=t?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:n,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}function m6(e){return{stencilTest:{enabled:e,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}}var dNe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function hNe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ue.fromCache(EI(o,!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(EI(o,!0)),e._rsColorPass=Ue.fromCache(m6(o,!1)),e._rsPickPass=Ue.fromCache(dNe)}function mNe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=We.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function ANe(e,t){let n=t.context,i=e._primitive,o=GL;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=kn._appendDistanceDisplayConditionToShader(i,o),o=kn._modifyShaderPosition(e,o,t.scene3DOnly),o=kn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=mNe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new We({defines:[a],sources:[o]}),u=new We({sources:[IC]}),f=e._primitive._attributeLocations,h=new xf(s,r,e.appearance);if(e._spStencil=ln.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=We.createPickVertexShaderSource(o);m=kn._appendShowToShader(i,m),m=kn._updatePickColorAttribute(m);let _=h.createPickFragmentShader(!1),y=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=ln.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f}),s){let C=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(C)){let E=h.createPickFragmentShader(!0),I=h.createPickVertexShader([a],m,!0,t.mapProjection);C=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:I,fragmentShaderSource:E,attributeLocations:f})}e._spPick2D=C}}else e._spPick=ln.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=kn._appendShowToShader(i,o),c=new We({defines:[a],sources:[o]}),e._sp=ln.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let A=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=ln.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:A,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let _=h.createFragmentShader(!0),y=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f})}e._spColor2D=m}}function pNe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=Be.TERRAIN_CLASSIFICATION,s=nt.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=Be.TERRAIN_CLASSIFICATION;let _=e.appearance.material;if(l(_)&&(c=wt(c,_._uniforms)),r.uniformMap=c,s=nt.shallowClone(r,r.derivedCommands.tileset),s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let y=nt.shallowClone(r,r.derivedCommands.appearance2D);y.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=y,y=nt.shallowClone(s,s.derivedCommands.appearance2D),y.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=y}}let f=e._commandsIgnoreShow,h=e._spStencil,A=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=nt.shallowClone(t[A],f[g]);m.shaderProgram=h,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,A+=2}}function gNe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,A=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let _=nt.shallowClone(u,u.derivedCommands.pick2D);_.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=_,_=nt.shallowClone(f,f.derivedCommands.pick2D),_.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=_}}}function _Ne(e,t,n,i,o,r,s){pNe(e,r),gNe(e,s)}function hie(e,t){return Math.floor(e%t/2)}function h6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function mie(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function yNe(e,t,n,i,o,r,s,a){let c=e._primitive;kn._updateBoundingVolumes(c,t,o);let u;t.mode===ie.SCENE3D?u=c._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ie.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN,g=t.passes,m,_,y;if(g.render){let C=n.length;for(m=0;m<C;++m)_=u[hie(m,C)],h&&(y=n[m],h6(y,t,o,r,_,s)),A&&(y=n[m].derivedCommands.tileset,h6(y,t,o,r,_,s));if(t.invertClassification){let E=e._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=u[m],y=E[m],h6(y,t,o,r,_,s)}}if(g.pick){let C=i.length,E=c._pickOffsets;for(m=0;m<C;++m){let I=E[hie(m,C)];_=u[I.index],h&&(y=i[m],mie(y,t,o,r,_)),A&&(y=i[m].derivedCommands.tileset,mie(y,t,o,r,_))}}}xC.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,A=!1,g=!1;for(r>0&&(c=o[0].attributes,A=xf.hasAttributesForSphericalExtents(c),g=xf.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let _=a.attributes.color;l(_)&&(u=!0),f=f&&l(_)&&en.equals(h,_)}if(!f&&!A&&!g)throw new me("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new gn({flat:!0}),this.appearance=t),this._usePickOffsets=!A&&!g,this._hasSphericalExtentsAttribute=A,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Rt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:this._pickPrimitive??n});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(_,y){n._createBoundingVolumeFunction(_,y)}),i._createRenderStatesFunction=function(_,y,C,E){hNe(n,y)},i._createShaderProgramFunction=function(_,y,C){ANe(n,y)},i._createCommandsFunction=function(_,y,C,E,I,b,S){_Ne(n,void 0,void 0,!0,!1,b,S)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){n._updateAndQueueCommandsFunction(_,y,C,E,I,b,S,B)}:i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){yNe(n,y,C,E,I,b,S,B)},this._primitive=new kn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ue.fromCache(EI(!1,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!1,!0)),this._rsColorPass=Ue.fromCache(m6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ue.fromCache(EI(!0,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!0,!0)),this._rsColorPass=Ue.fromCache(m6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};xC.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};xC.prototype.isDestroyed=function(){return!1};xC.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var dw=xC;var CNe={u_globeMinimumAltitude:function(){return 55e3}};function Nl(e){e=e??V.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new gn({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=wi._defaultMaxTerrainHeight,this._minTerrainHeight=wi._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:CNe}}Object.defineProperties(Nl.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});Nl.isSupported=dw.isSupported;function Aie(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function pie(e){return function(t,n){return e._minHeight}}var ENe=new d,INe=new d,xNe=new d,bNe=new Ae,TNe=new ae;function YL(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let A=d.unpack(i,h,ENe),g=d.unpack(o,h,INe),m=d.add(A,g,xNe),_=n.cartesianToCartographic(m,bNe),y=_.latitude,C=_.longitude;s=Math.min(s,y),a=Math.min(a,C),c=Math.max(c,y),u=Math.max(u,C)}let f=TNe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function SNe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function wNe(e,t,n){let i=t.mapProjection.ellipsoid,o=YL(t,n),r=Qn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=le.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function A6(e,t){return Math.floor(e%t/2)}function p6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function gie(e,t,n,i,o,r){let s=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function BNe(e,t,n,i,o,r,s,a){let c;t.mode===ie.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==Jn.CESIUM_3D_TILE,h=u!==Jn.TERRAIN,A=t.passes,g=e._primitive,m,_,y;if(A.render){let C=n.length;for(m=0;m<C;++m)_=c[A6(m,C)],f&&(y=n[m],p6(e,y,t,o,r,_,s)),h&&(y=n[m].derivedCommands.tileset,p6(e,y,t,o,r,_,s));if(t.invertClassification){let E=g._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=c[m],y=E[m],p6(e,y,t,o,r,_,s)}}if(A.pick){let C=i.length,E;for(e._useFragmentCulling||(E=g._primitive._pickOffsets),m=0;m<C;++m){if(_=c[A6(m,C)],!e._useFragmentCulling){let I=E[A6(m,C)];_=c[I.index]}f&&(y=i[m],gie(e,y,t,o,r,_)),h&&(y=i[m].derivedCommands.tileset,gie(e,y,t,o,r,_))}}}Nl.initializeTerrainHeights=function(){return wi.initialize()};Nl.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){Nl.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let _=YL(e,r);l(h)?l(_)&&ae.union(h,_,h):h=ae.clone(_);let y=o.id;if(l(y)&&l(_)){let C=wi.getBoundingSphere(_,i);this._boundingSpheresKeys.push(y),this._boundingSpheres.push(C)}s=r.constructor,!l(s)||l(s.createShadowVolume)}SNe(this,h,i);let A=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Yr.getHeight(this._minTerrainHeight,A,g),this._maxHeight=Yr.getHeight(this._maxTerrainHeight,A,g);let m=Nl._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let _,y=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=YL(e,r),xf.shouldUseSphericalCoordinates(h)){y=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let C=YL(e,r),E=r.textureCoordinateRotationPoints;y?_=xf.getPlanarTextureCoordinateAttributes(C,E,i,e.mapProjection,this._maxHeight):_=xf.getSphericalExtentGeometryInstanceAttributes(C,E,i,e.mapProjection);let I=o.attributes;for(let b in I)I.hasOwnProperty(b)&&(_[b]=I[b]);u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:_,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(_,y){wNe(t,_,y)},n._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){BNe(t,y,C,E,I,b,S,B)},this._primitive=new dw(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Nl.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};Nl.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};Nl.prototype.isDestroyed=function(){return!1};Nl.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};Nl._supportsMaterials=function(e){return e.depthTexture};Nl.supportsMaterials=function(e){return Nl._supportsMaterials(e.frameState.context)};var Ll=Nl;function II(){me.throwInstantiationError()}Object.defineProperties(II.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});II.prototype.getType=me.throwInstantiationError;II.prototype.getValue=me.throwInstantiationError;II.prototype.equals=me.throwInstantiationError;var DNe=new K;II.getValue=function(e,t,n){let i;return l(e)||(e=K.now(DNe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=ao.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==ao.ColorType)&&(n=ao.fromType(ao.ColorType)),G.clone(G.WHITE,n.uniforms.color),n)};var gr=II;function bC(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}bC.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!j.getValueOrDefault(t.show,n,!0)};bC.prototype._setOptions=me.throwInstantiationError;bC.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof Jt,h,A=t._getIsClosed(c);if(f)h=new gn({closed:A,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=gr.getValue(e,u,this._material);this._material=g,h=new Io({material:g,translucent:g.isTranslucent(),closed:A})}if(n)c.vertexFormat=gn.VERTEX_FORMAT,this._primitive=o.add(new Ll({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),j.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new kn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=j.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new kn({geometryInstances:u,appearance:new gn({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};bC.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(n)&&!n.ready||l(i)&&!i.ready?mt.PENDING:mt.FAILED};bC.prototype.isDestroyed=function(){return!1};bC.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var yi=bC;var _ie={};function hw(e,t){l(_ie[e])||(_ie[e]=!0,console.warn(t??e))}hw.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";hw.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";hw.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";hw.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var yt=hw;var vNe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},Tg=Object.freeze(vNe);var PNe={NONE:0,GEODESIC:1,RHUMB:2},un=Object.freeze(PNe);var yie=D.EPSILON10;function RNe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,yie)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],yie)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var No=RNe;function MNe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,A=h*h,g=1-A,m=Math.sqrt(g),_=t/4,y=_*_,C=y*_,E=y*y,I=1+_-3*y/4+5*C/4-175*E/64,b=1-_+15*y/8-35*C/8,S=1-3*_+35*y/4,B=1-5*_,v=I*f-b*Math.sin(2*f)*_/2-S*Math.sin(4*f)*y/16-B*Math.sin(6*f)*C/48-Math.sin(8*f)*5*E/512,P=e._constants;P.a=n,P.b=i,P.f=o,P.cosineHeading=r,P.sineHeading=s,P.tanU=a,P.cosineU=c,P.sineU=u,P.sigma=f,P.sineAlpha=h,P.sineSquaredAlpha=A,P.cosineSquaredAlpha=g,P.cosineAlpha=m,P.u2Over4=_,P.u4Over16=y,P.u6Over64=C,P.u8Over256=E,P.a0=I,P.a1=b,P.a2=S,P.a3=B,P.distanceRatio=v}function NNe(e,t){return e*t*(4+e*(4-3*t))/16}function Cie(e,t,n,i,o,r,s){let a=NNe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function LNe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),A=Math.sin(u),g=Math.cos(f),m=Math.sin(f),_=h*g,y=h*m,C=A*m,E=A*g,I=c,b=D.TWO_PI,S=Math.cos(I),B=Math.sin(I),v,P,N,L,p;do{S=Math.cos(I),B=Math.sin(I);let F=y-E*S;N=Math.sqrt(g*g*B*B+F*F),P=C+_*S,v=Math.atan2(N,P);let H;N===0?(H=0,L=1):(H=_*B/N,L=1-H*H),b=I,p=P-2*C/L,isFinite(p)||(p=0),I=c+Cie(a,H,L,v,N,P,p)}while(Math.abs(I-b)>D.EPSILON12);let x=L*(t*t-n*n)/(n*n),T=1+x*(4096+x*(x*(320-175*x)-768))/16384,w=x*(256+x*(x*(74-47*x)-128))/1024,M=p*p,O=w*N*(p+w*(P*(2*M-1)-w*p*(4*N*N-3)*(4*M-3)/6)/4),U=n*T*(v-O),Q=Math.atan2(g*B,y-E*S),z=Math.atan2(h*B,y*S-E);e._distance=U,e._startHeading=Q,e._endHeading=z,e._uSquared=x}var ONe=new d,g6=new d;function Eie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,g6),ONe),r=d.normalize(i.cartographicToCartesian(n,g6),g6);LNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=Ae.clone(t,e._start),e._end=Ae.clone(n,e._end),e._start.height=0,e._end.height=0,MNe(e)}function mw(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Eie(this,e,t,i)}Object.defineProperties(mw.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});mw.prototype.setEndPoints=function(e,t){Eie(this,e,t,this._ellipsoid)};mw.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};mw.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,A=i*h,g=n.u8Over256,m=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*A*g*o/3+i*(1-m+7*y/4-15*_/4+579*g/64-(y-15*_/4+187*g/16)*o-(5*_/4-115*g/16)*r-29*g*s/16)+(m/2-y+71*_/32-85*g/16)*a+(5*y/16-5*_/4+383*g/96)*c-h*((_-11*g/2)*a+5*g*c/2)+(29*_/96-29*g/16)*u+539*g*f/1536,E=Math.asin(Math.sin(C)*n.cosineAlpha),I=Math.atan(n.a/n.b*Math.tan(E));C=C-n.sigma;let b=Math.cos(2*n.sigma+C),S=Math.sin(C),B=Math.cos(C),v=n.cosineU*B,P=n.sineU*S,L=Math.atan2(S*n.sineHeading,v-P*n.cosineHeading)-Cie(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,S,B,b);return l(t)?(t.longitude=this._start.longitude+L,t.latitude=I,t.height=0,t):new Ae(this._start.longitude+L,I,0)};var Sg=mw;function y6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),A=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),_=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*A+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*_)}function FNe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,A=h*c,g=A*c,m=Math.sin(2*i),_=Math.cos(2*i),y=Math.sin(4*i),C=Math.cos(4*i),E=Math.sin(6*i),I=Math.cos(6*i),b=Math.sin(8*i),S=Math.cos(8*i),B=Math.sin(10*i),v=Math.cos(10*i),P=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*A/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*A/16384+i*(399985-90560*o+512*s)*g/5242880)*_+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*A/16384-i*(33152*o-112599)*g/1048576)*C+(151*i*h/4096+4681*i*A/65536+1479*i*g/16384-453*r*g/32768)*I+(1097*i*A/65536+42783*i*g/1048576)*S+8011*i*g/1048576*v+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*A/524288-33*o*A/512+s*A/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*A/4096-315*o*A/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*y+(151*f/6144+151*h/4096+5019*A/131072-453*o*A/16384+26965*g/786432-8607*o*g/131072)*E+(1097*h/131072+1097*A/65536+225797*g/10485760-1097*o*g/65536)*b+(8011*A/2621440+8011*g/1048576)*B+293393*g/251658240*P}function xI(e,t){if(e===0)return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function QNe(e,t,n,i,o){let r=xI(e._ellipticity,n),s=xI(e._ellipticity,o);return Math.atan2(D.negativePiToPi(i-t),s-r)}function kNe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(D.equalsEpsilon(Math.abs(a),D.PI_OVER_TWO,D.EPSILON8))if(t===n)u=t*Math.cos(o)*D.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*D.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=y6(e._ellipticity,t,o);u=(y6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var UNe=new d,_6=new d;function Iie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,_6),UNe),r=d.normalize(i.cartographicToCartesian(n,_6),_6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=Ae.clone(t,e._start),e._start.height=0,e._end=Ae.clone(n,e._end),e._end.height=0,e._heading=QNe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=kNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function xie(e,t,n,i,o,r){if(n===0)return Ae.clone(e,r);let s=o*o,a,c,u;if(Math.abs(D.PI_OVER_TWO-Math.abs(t))>D.EPSILON8){let f=y6(o,i,e.latitude),h=n*Math.cos(t),A=f+h;if(c=FNe(A,o,i),Math.abs(t)<D.EPSILON10)a=D.negativePiToPi(e.longitude);else{let g=xI(o,e.latitude),m=xI(o,c);u=Math.tan(t)*(m-g),a=D.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=D.negativePiToPi(e.longitude+u):a=D.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new Ae(a,c,0)}function zA(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Iie(this,e,t,i)}Object.defineProperties(zA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});zA.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??te.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=D.negativePiToPi(t);let h=xie(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new zA(e,h,r):(o.setEndPoints(e,h),o)};zA.prototype.setEndPoints=function(e,t){Iie(this,e,t,this._ellipsoid)};zA.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};zA.prototype.interpolateUsingSurfaceDistance=function(e,t){return xie(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};zA.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=D.negativePiToPi(e),D.equalsEpsilon(Math.abs(e),Math.PI,D.EPSILON14)&&(e=D.sign(r.longitude)*Math.PI),l(t)||(t=new Ae),Math.abs(D.PI_OVER_TWO-o)<=D.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(D.equalsEpsilon(Math.abs(D.PI_OVER_TWO-o),D.PI_OVER_TWO,D.EPSILON8))return D.equalsEpsilon(e,r.longitude,D.EPSILON12)?void 0:(t.longitude=e,t.latitude=D.PI_OVER_TWO*D.sign(D.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(D.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let A=n*Math.sin(h),g=(1+A)/(1-A);f=2*Math.atan(c*Math.pow(g/u,n/2))-D.PI_OVER_TWO}while(!D.equalsEpsilon(f,h,D.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};zA.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(D.equalsEpsilon(Math.abs(i),D.PI_OVER_TWO,D.EPSILON8))return;let r=xI(n,o.latitude),s=xI(n,e),a=Math.tan(i)*(s-r),c=D.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new Ae(c,e,0)};var Ic=zA;var w6=[Hi,Yi],GNe=w6.length,Vie=Math.cos(D.toRadians(30)),bie=Math.cos(D.toRadians(150)),Hie=0,Wie=1e3;function Bg(e){e=e??V.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??un.GEODESIC,this._ellipsoid=te.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Bg.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+te.packedLength+1+1}}});Bg.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<GNe;i++)if(t instanceof w6[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var zNe=new d,Tie=new d,Sie=new d;function S6(e,t,n,i,o){let r=Zc(i,e,0,zNe),s=Zc(i,e,n,Tie),a=Zc(i,t,0,Sie),c=VA(s,r,Tie),u=VA(a,r,Sie);return d.cross(u,c,o),d.normalize(o,o)}var VNe=new Ae,HNe=new d,WNe=new d,jNe=new d;function C6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===un.GEODESIC?h=new Sg(e,t,s):r===un.RHUMB&&(h=new Ic(e,t,s));let A=h.surfaceDistance;if(A<o)return;let g=S6(e,t,i,s,jNe),m=Math.ceil(A/o),_=A/m,y=_,C=m-1,E=a.length;for(let I=0;I<C;I++){let b=h.interpolateUsingSurfaceDistance(y,VNe),S=Zc(s,b,n,HNe),B=Zc(s,b,i,WNe);d.pack(g,a,E),d.pack(S,c,E),d.pack(B,u,E),f.push(b.latitude),f.push(b.longitude),E+=3,y+=_}}var E6=new Ae;function Zc(e,t,n,i){return Ae.clone(t,E6),E6.height=n,Ae.toCartesian(E6,e,i)}Bg.pack=function(e,t,n){let i=n??0,o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,te.pack(e._ellipsoid,t,i),i+=te.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};Bg.unpack=function(e,t,n){let i=t??0,o=e[i++],r=new Array(o);for(let A=0;A<o;A++)r[A]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=te.unpack(e,i);i+=te.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new Bg({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function VA(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function wie(e,t,n,i){return i=VA(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var YNe=new d,qNe=new d,KNe=new d,jie=new d,XNe=0,JNe=-1;function I6(e,t,n,i,o){let r=VA(n,t,jie),s=wie(e,t,r,YNe),a=wie(i,t,r,qNe);if(D.equalsEpsilon(d.dot(s,a),JNe,D.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,KNe);return d.dot(a,c)<XNe&&(o=d.negate(o,o)),o}var JL=mn.fromPointNormal(d.ZERO,d.UNIT_Y),ZNe=new d,$Ne=new d,eLe=new d,tLe=new d,nLe=new d,qL=new d,KL=new Ae,Bie=new Ae,Die=new Ae;Bg.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new w6[e._projectionIndex](i),a=Hie,c=Wie,u,f,h=e._positions,A=h.length;A===2&&(n=!1);let g,m,_,y,C=new Ic(void 0,void 0,i),E,I,b,S=[h[0]];for(f=0;f<A-1;f++)g=h[f],m=h[f+1],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))),S.push(m);n&&(g=h[A-1],m=h[0],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))));let B=S.length,v=new Array(B);for(f=0;f<B;f++){let W=Ae.fromCartesian(S[f],i);W.height=0,v[f]=W}if(v=No(v,Ae.equalsEpsilon),B=v.length,B<2)return;let P=[],N=[],L=[],p=[],x=ZNe,T=$Ne,w=eLe,M=tLe,O=nLe,U=v[0],Q=v[1],z=v[B-1];for(x=Zc(i,z,a,x),M=Zc(i,Q,a,M),T=Zc(i,U,a,T),w=Zc(i,U,c,w),n?O=I6(x,T,w,M,O):O=S6(U,Q,c,i,O),d.pack(O,N,0),d.pack(T,L,0),d.pack(w,p,0),P.push(U.latitude),P.push(U.longitude),C6(U,Q,a,c,o,r,i,N,L,p,P),f=1;f<B-1;++f){x=d.clone(T,x),T=d.clone(M,T);let W=v[f];Zc(i,W,c,w),Zc(i,v[f+1],a,M),I6(x,T,w,M,O),u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(W.latitude),P.push(W.longitude),C6(v[f],v[f+1],a,c,o,r,i,N,L,p,P)}let F=v[B-1],H=v[B-2];if(T=Zc(i,F,a,T),w=Zc(i,F,c,w),n){let W=v[0];x=Zc(i,H,a,x),M=Zc(i,W,a,M),O=I6(x,T,w,M,O)}else O=S6(H,F,c,i,O);if(u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(F.latitude),P.push(F.longitude),n){for(C6(F,U,a,c,o,r,i,N,L,p,P),u=N.length,f=0;f<3;++f)N[u+f]=N[f],L[u+f]=L[f],p[u+f]=p[f];P.push(U.latitude),P.push(U.longitude)}return BLe(n,s,L,p,N,P,t)};var iLe=new d,oLe=new J,rLe=new Le;function vie(e,t,n,i){let o=VA(n,t,iLe),r=d.dot(o,e);if(r>Vie||r<bie){let s=VA(i,n,jie),a=r<bie?D.PI_OVER_TWO:-D.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,rLe),u=J.fromQuaternion(c,oLe);return J.multiplyByVector(u,e,e),!0}return!1}var Pie=new Ae,sLe=new d,Rie=new d;function Aw(e,t,n,i,o){let r=Ae.toCartesian(t,e._ellipsoid,sLe),s=d.add(r,n,Rie),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,Pie);Math.abs(t.longitude-u.longitude)>D.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Rie),u=c.cartesianToCartographic(s,Pie)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var aLe=new d,Mie=new d;function Nie(e,t,n,i,o,r){let s=d.subtract(t,e,aLe);d.normalize(s,s);let a=n-Hie,c=d.multiplyByScalar(s,a,Mie);d.add(e,c,o);let u=i-Wie;c=d.multiplyByScalar(s,u,Mie),d.add(t,c,r)}var cLe=new d;function XL(e,t){let n=mn.getPointDistance(JL,e),i=mn.getPointDistance(JL,t),o=cLe;D.equalsEpsilon(n,0,D.EPSILON2)?(o=VA(t,e,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(e,o,e)):D.equalsEpsilon(i,0,D.EPSILON2)&&(o=VA(e,t,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(t,o,t))}function lLe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(D.equalsEpsilon(n,D.PI,D.EPSILON11)){let o=D.sign(t.longitude);return e.longitude=o*(n-D.EPSILON11),1}else if(D.equalsEpsilon(i,D.PI,D.EPSILON11)){let o=D.sign(e.longitude);return t.longitude=o*(i-D.EPSILON11),2}return 0}var Yie=new Ae,qie=new Ae,Lie=new d,x6=new d,Oie=new d,Fie=new d,uLe=new d,Qie=new d,fLe=[Yie,qie],dLe=new ae,hLe=new d,mLe=new d,ALe=new d,pLe=new d,gLe=new d,_Le=new d,b6=new d,T6=new d,yLe=new d,CLe=new d,ELe=new d,kie=new d,ILe=new d,xLe=new d,bLe=new ei,TLe=new ei,Uie=new d,SLe=new d,Gie=new d,wLe=[new le,new le],Kie=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],zie=Kie.length;function BLe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,A=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),_=new Float64Array(h*3),y=new Float32Array(A),C=new Float32Array(A),E=new Float32Array(A),I=new Float32Array(A),b=new Float32Array(A),S,B,v,P;s&&(S=new Float32Array(A),B=new Float32Array(A),v=new Float32Array(A),P=new Float32Array(h*2));let N=r.length/2,L=0,p=Yie;p.height=0;let x=qie;x.height=0;let T=Lie,w=x6;if(s)for(c=0,a=1;a<N;a++)p.latitude=r[c],p.longitude=r[c+1],x.latitude=r[c+2],x.longitude=r[c+3],T=t.project(p,T),w=t.project(x,w),L+=d.distance(T,w),c+=2;let M=i.length/3;w=d.unpack(i,0,w);let O=0;for(c=3,a=1;a<M;a++)T=d.clone(w,T),w=d.unpack(i,c,w),O+=d.distance(T,w),c+=3;let U;c=3;let Q=0,z=0,F=0,H=0,W=!1,Z=d.unpack(n,0,Fie),Y=d.unpack(i,0,x6),$=d.unpack(o,0,Qie);if(e){let Te=d.unpack(n,n.length-6,Oie);vie($,Te,Z,Y)&&($=d.negate($,$))}let X=0,he=0,ge=0;for(a=0;a<f;a++){let Te=d.clone(Z,Oie),ke=d.clone(Y,Lie),Ge=d.clone($,uLe);W&&(Ge=d.negate(Ge,Ge)),Z=d.unpack(n,c,Fie),Y=d.unpack(i,c,x6),$=d.unpack(o,c,Qie),W=vie($,Te,Z,Y),p.latitude=r[Q],p.longitude=r[Q+1],x.latitude=r[Q+2],x.longitude=r[Q+3];let qe,tt,$t,it;if(s){let _i=lLe(p,x);qe=t.project(p,gLe),tt=t.project(x,_Le);let _s=VA(tt,qe,Uie);_s.y=Math.abs(_s.y),$t=b6,it=T6,_i===0||d.dot(_s,d.UNIT_Y)>Vie?($t=Aw(t,p,Ge,qe,b6),it=Aw(t,x,$,tt,T6)):_i===1?(it=Aw(t,x,$,tt,T6),$t.x=0,$t.y=D.sign(p.longitude-Math.abs(x.longitude)),$t.z=0):($t=Aw(t,p,Ge,qe,b6),it.x=0,it.y=D.sign(p.longitude-x.longitude),it.z=0)}let tn=d.distance(ke,Y),Wt=ei.fromCartesian(Te,bLe),vt=d.subtract(Z,Te,yLe),bi=d.normalize(vt,kie),di=d.subtract(ke,Te,CLe);di=d.normalize(di,di);let Ot=d.cross(bi,di,kie);Ot=d.normalize(Ot,Ot);let Tt=d.cross(di,Ge,ILe);Tt=d.normalize(Tt,Tt);let ii=d.subtract(Y,Z,ELe);ii=d.normalize(ii,ii);let Ct=d.cross($,ii,xLe);Ct=d.normalize(Ct,Ct);let Ro=tn/O,Qo=X/O,ya=0,mr,Tr,Oe,lt=0,Ke=0;if(s){ya=d.distance(qe,tt),mr=ei.fromCartesian(qe,TLe),Tr=d.subtract(tt,qe,Uie),Oe=d.normalize(Tr,SLe);let _i=Oe.x;Oe.x=Oe.y,Oe.y=-_i,lt=ya/L,Ke=he/L}for(U=0;U<8;U++){let _i=H+U*4,_s=z+U*2,Wo=_i+3,Ca=U<4?1:-1,uo=U===2||U===3||U===6||U===7?1:-1;d.pack(Wt.high,y,_i),y[Wo]=vt.x,d.pack(Wt.low,C,_i),C[Wo]=vt.y,d.pack(Tt,E,_i),E[Wo]=vt.z,d.pack(Ct,I,_i),I[Wo]=Ro*Ca,d.pack(Ot,b,_i);let jo=Qo*uo;jo===0&&uo<0&&(jo=9),b[Wo]=jo,s&&(S[_i]=mr.high.x,S[_i+1]=mr.high.y,S[_i+2]=mr.low.x,S[_i+3]=mr.low.y,v[_i]=-$t.y,v[_i+1]=$t.x,v[_i+2]=it.y,v[_i+3]=-it.x,B[_i]=Tr.x,B[_i+1]=Tr.y,B[_i+2]=Oe.x,B[_i+3]=Oe.y,P[_s]=lt*Ca,jo=Ke*uo,jo===0&&uo<0&&(jo=9),P[_s+1]=jo)}let $e=ALe,pt=pLe,Xt=hLe,xn=mLe,lo=ae.fromCartographicArray(fLe,dLe),ro=wi.getMinimumMaximumHeights(lo,u),$s=ro.minimumTerrainHeight,ea=ro.maximumTerrainHeight;ge+=Math.abs($s),ge+=Math.abs(ea),Nie(Te,ke,$s,ea,$e,Xt),Nie(Z,Y,$s,ea,pt,xn);let Vn=d.multiplyByScalar(Ot,D.EPSILON5,Gie);d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F),d.pack(pt,_,F+3),d.pack(xn,_,F+6),d.pack(Xt,_,F+9),Vn=d.multiplyByScalar(Ot,-2*D.EPSILON5,Gie),d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F+12),d.pack(pt,_,F+15),d.pack(xn,_,F+18),d.pack(Xt,_,F+21),Q+=2,c+=3,z+=16,F+=24,H+=32,X+=tn,he+=ya}c=0;let fe=0;for(a=0;a<f;a++){for(U=0;U<zie;U++)m[c+U]=Kie[U]+fe;fe+=8,c+=zie}let ye=wLe;le.fromVertices(n,d.ZERO,3,ye[0]),le.fromVertices(i,d.ZERO,3,ye[1]);let Ie=le.fromBoundingSpheres(ye);Ie.radius+=ge/(f*2);let ve={position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,normalize:!1,values:_}),startHiAndForwardOffsetX:wg(y),startLoAndForwardOffsetY:wg(C),startNormalAndForwardOffsetZ:wg(E),endNormalAndTextureCoordinateNormalizationX:wg(I),rightNormalAndTextureCoordinateNormalizationY:wg(b)};return s&&(ve.startHiLo2D=wg(S),ve.offsetAndRight2D=wg(B),ve.startEndNormals2D=wg(v),ve.texcoordNormalization2D=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,normalize:!1,values:P})),new ht({attributes:ve,indices:m,boundingSphere:Ie})}function wg(e){return new De({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}Bg._projectNormal=Aw;var bI=Bg;var ZL=`in vec4 v_startPlaneNormalEcAndHalfWidth; +in vec4 v_endPlaneNormalEcAndBatchId; +in vec4 v_rightPlaneEC; // Technically can compute distance for this here +in vec4 v_endEcAndStartEcX; +in vec4 v_texcoordNormalizationAndStartEcYZ; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +void main(void) +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate); + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var $L=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var eO=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var tO=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var nO=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var bf=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var B6=`${bf} +${nO}`,DLe=pI;jt.isInternetExplorer()||(B6=`#define CLIP_POLYLINE +${B6}`);function TC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=TC.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??B6,this._fragmentShaderSource=e.fragmentShaderSource??DLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(TC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});TC.VERTEX_FORMAT=Pe.POSITION_ONLY;TC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;TC.prototype.isTranslucent=go.prototype.isTranslucent;TC.prototype.getRenderState=go.prototype.getRenderState;var bs=TC;var iO=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var TI=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var D6=`${bf} +${iO}`,vLe=TI;jt.isInternetExplorer()||(D6=`#define CLIP_POLYLINE +${D6}`);function SC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=SC.VERTEX_FORMAT;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??D6,this._fragmentShaderSource=e.fragmentShaderSource??vLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(SC.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});SC.VERTEX_FORMAT=Pe.POSITION_AND_ST;SC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;SC.prototype.isTranslucent=go.prototype.isTranslucent;SC.prototype.getRenderState=go.prototype.getRenderState;var Za=SC;function HA(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new Za),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=Xie(!1),this._renderState3DTiles=Xie(!0),this._renderStateMorph=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(HA.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});HA.initializeTerrainHeights=function(){return wi.initialize()};function PLe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(tO);s=kn._appendShowToShader(o,s),s=kn._appendDistanceDisplayConditionToShader(o,s),s=kn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(eO);a=kn._appendShowToShader(o,a),a=kn._appendDistanceDisplayConditionToShader(o,a),a=kn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(ZL),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let A=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new We({defines:u,sources:[s]}),m=new We({defines:A,sources:[h,c]});e._sp=ln.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let _=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(_)){let C=new We({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});_=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:C,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=_;let y=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(y)){let C=new We({defines:u.concat([`MAX_TERRAIN_HEIGHT ${wi._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()($L);let E=new We({defines:A,sources:[h,c]});y=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:C,fragmentShaderSource:E,attributeLocations:r})}e._spMorph=y}function Xie(e){return Ue.fromCache({cull:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function RLe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof bs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let A=s._va[h],g=o[h];l(g)||(g=o[h]=new nt({owner:e,primitiveType:s._primitiveType})),g.vertexArray=A,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=Be.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=nt.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let _=nt.shallowClone(g,g.derivedCommands.color2D);_.shaderProgram=e._sp2D,g.derivedCommands.color2D=_;let y=nt.shallowClone(m,m.derivedCommands.color2D);y.shaderProgram=e._sp2D,m.derivedCommands.color2D=y;let C=nt.shallowClone(g,g.derivedCommands.colorMorph);C.renderState=e._renderStateMorph,C.shaderProgram=e._spMorph,C.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=C}}function Jie(e,t,n,i,o,r,s){n.mode===ie.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ie.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function MLe(e,t,n,i,o,r,s){let a=e._primitive;kn._updateBoundingVolumes(a,t,o);let c;t.mode===ie.SCENE3D?c=a._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ie.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ie.MORPHING,f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let _=n.length;for(let y=0;y<_;++y){let C=c[y];h&&(g=n[y],Jie(e,g,t,o,r,C,s)),A&&(g=n[y].derivedCommands.tileset,Jie(e,g,t,o,r,C,s))}}}HA.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){HA.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Jc({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,bI.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Rt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){PLe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,A,g,m){RLe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,A,g,m,_){MLe(n,u,f,h,A,g,m)},this._primitive=new kn(i)}if(this.appearance instanceof bs&&!this._hasPerInstanceColors)throw new me("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};HA.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};HA.isSupported=function(e){return e.frameState.context.depthTexture};HA.prototype.isDestroyed=function(){return!1};HA.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var sm=HA;var NLe=new k(1,1),LLe=!1,OLe=G.WHITE;function SI(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(SI.prototype,{isConstant:{get:function(){return j.isConstant(this._image)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:de("image"),repeat:de("repeat"),color:de("color"),transparent:de("transparent")});SI.prototype.getType=function(e){return"Image"};var FLe=new K;SI.prototype.getValue=function(e,t){return l(e)||(e=K.now(FLe)),l(t)||(t={}),t.image=j.getValueOrUndefined(this._image,e),t.repeat=j.getValueOrClonedDefault(this._repeat,e,NLe,t.repeat),t.color=j.getValueOrClonedDefault(this._color,e,OLe,t.color),j.getValueOrDefault(this._transparent,e,LLe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};SI.prototype.equals=function(e){return this===e||e instanceof SI&&j.equals(this._image,e._image)&&j.equals(this._repeat,e._repeat)&&j.equals(this._color,e._color)&&j.equals(this._transparent,e._transparent)};var wC=SI;function QLe(e){if(e instanceof G)return new Jt(e);if(typeof e=="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new wC;return t.image=e,t}}function kLe(e,t){return de(e,t,QLe)}var Xo=kLe;function pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),dimensions:de("dimensions"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new pw(this)};pw.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var wI=pw;var ULe={FIXED:0,INERTIAL:1},eo=Object.freeze(ULe);function BI(){me.throwInstantiationError()}Object.defineProperties(BI.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError},referenceFrame:{get:me.throwInstantiationError}});BI.prototype.getValue=me.throwInstantiationError;BI.prototype.getValueInReferenceFrame=me.throwInstantiationError;BI.prototype.equals=me.throwInstantiationError;var Zie=new J;BI.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=kt.computeIcrfToCentralBodyFixedMatrix(e,Zie);if(n===eo.INERTIAL)return J.multiplyByVector(r,t,o);if(n===eo.FIXED)return J.multiplyByVector(J.transpose(r,Zie),t,o)};var am=BI;function BC(e,t){this._definitionChanged=new _e,this._value=d.clone(e),this._referenceFrame=t??eo.FIXED}Object.defineProperties(BC.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===eo.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var GLe=new K;BC.prototype.getValue=function(e,t){return l(e)||(e=K.now(GLe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};BC.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};BC.prototype.getValueInReferenceFrame=function(e,t,n){return am.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};BC.prototype.equals=function(e){return this===e||e instanceof BC&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var Ol=BC;function gw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(gw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});gw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new gw(this)};gw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var DI=gw;function zLe(e){return e}function VLe(e,t){return de(e,t,zLe)}var Fl=VLe;function _w(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(_w.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),length:de("length"),topRadius:de("topRadius"),bottomRadius:de("bottomRadius"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),slices:de("slices"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});_w.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new _w(this)};_w.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vI=_w;function yw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(yw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),semiMajorAxis:de("semiMajorAxis"),semiMinorAxis:de("semiMinorAxis"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});yw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new yw(this)};yw.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var PI=yw;function Cw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Cw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),radii:de("radii"),innerRadii:de("innerRadii"),minimumClock:de("minimumClock"),maximumClock:de("maximumClock"),minimumCone:de("minimumCone"),maximumCone:de("maximumCone"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),stackPartitions:de("stackPartitions"),slicePartitions:de("slicePartitions"),subdivisions:de("subdivisions"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Cw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Cw(this)};Cw.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var RI=Cw;function Ew(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Ew.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),text:de("text"),font:de("font"),style:de("style"),scale:de("scale"),showBackground:de("showBackground"),backgroundColor:de("backgroundColor"),backgroundPadding:de("backgroundPadding"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),fillColor:de("fillColor"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),scaleByDistance:de("scaleByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance")});Ew.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new Ew(this)};Ew.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var cm=Ew;var HLe=new d(1,1,1),WLe=d.ZERO,jLe=Le.IDENTITY;function $ie(e,t,n){this.translation=d.clone(e??WLe),this.rotation=Le.clone(t??jLe),this.scale=d.clone(n??HLe)}$ie.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var DC=$ie;var v6=new DC;function Iw(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(Iw.prototype,{isConstant:{get:function(){return j.isConstant(this._translation)&&j.isConstant(this._rotation)&&j.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:de("translation"),rotation:de("rotation"),scale:de("scale")});var YLe=new K;Iw.prototype.getValue=function(e,t){return l(e)||(e=K.now(YLe)),l(t)||(t=new DC),t.translation=j.getValueOrClonedDefault(this._translation,e,v6.translation,t.translation),t.rotation=j.getValueOrClonedDefault(this._rotation,e,v6.rotation,t.rotation),t.scale=j.getValueOrClonedDefault(this._scale,e,v6.scale,t.scale),t};Iw.prototype.equals=function(e){return this===e||e instanceof Iw&&j.equals(this._translation,e._translation)&&j.equals(this._rotation,e._rotation)&&j.equals(this._scale,e._scale)};var MI=Iw;function WA(e,t){this._propertyNames=[],this._definitionChanged=new _e,l(e)&&this.merge(e,t)}Object.defineProperties(WA.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!j.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});WA.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function qLe(e){return new ci(e)}WA.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,de(e,!0,n??qLe)),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};WA.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var KLe=new K;WA.prototype.getValue=function(e,t){l(e)||(e=K.now(KLe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=j.getValueOrUndefined(this[r],e,t[r])}return t};WA.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function XLe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!j.equals(e[s],t[s]))return!1}return!0}WA.prototype.equals=function(e){return this===e||e instanceof WA&&XLe(this,e)};var Ql=WA;function eoe(e){return new MI(e)}function JLe(e){return new Ql(e,eoe)}function ZLe(e){return new Ql(e)}function $Le(e){return new Ql(e)}function xw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(xw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),scale:de("scale"),enableVerticalExaggeration:de("enableVerticalExaggeration"),minimumPixelSize:de("minimumPixelSize"),maximumScale:de("maximumScale"),incrementallyLoadTextures:de("incrementallyLoadTextures"),runAnimations:de("runAnimations"),clampAnimations:de("clampAnimations"),shadows:de("shadows"),heightReference:de("heightReference"),silhouetteColor:de("silhouetteColor"),silhouetteSize:de("silhouetteSize"),color:de("color"),colorBlendMode:de("colorBlendMode"),colorBlendAmount:de("colorBlendAmount"),imageBasedLightingFactor:de("imageBasedLightingFactor"),environmentMapOptions:de("environmentMapOptions",void 0,$Le),lightColor:de("lightColor"),distanceDisplayCondition:de("distanceDisplayCondition"),nodeTransformations:de("nodeTransformations",void 0,JLe),articulations:de("articulations",void 0,ZLe),clippingPlanes:de("clippingPlanes"),customShader:de("customShader")});xw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new xw(this)};xw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.scale=this.scale??e.scale,this.enableVerticalExaggeration=this.enableVerticalExaggeration??e.enableVerticalExaggeration,this.minimumPixelSize=this.minimumPixelSize??e.minimumPixelSize,this.maximumScale=this.maximumScale??e.maximumScale,this.incrementallyLoadTextures=this.incrementallyLoadTextures??e.incrementallyLoadTextures,this.runAnimations=this.runAnimations??e.runAnimations,this.clampAnimations=this.clampAnimations??e.clampAnimations,this.shadows=this.shadows??e.shadows,this.heightReference=this.heightReference??e.heightReference,this.silhouetteColor=this.silhouetteColor??e.silhouetteColor,this.silhouetteSize=this.silhouetteSize??e.silhouetteSize,this.color=this.color??e.color,this.colorBlendMode=this.colorBlendMode??e.colorBlendMode,this.colorBlendAmount=this.colorBlendAmount??e.colorBlendAmount,this.imageBasedLightingFactor=this.imageBasedLightingFactor??e.imageBasedLightingFactor,this.environmentMapOptions=this.environmentMapOptions??e.environmentMapOptions,this.lightColor=this.lightColor??e.lightColor,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.clippingPlanes=this.clippingPlanes??e.clippingPlanes,this.customShader=this.customShader??e.customShader;let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new Ql(t,eoe)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new Ql(n)}};var Dg=xw;function bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),maximumScreenSpaceError:de("maximumScreenSpaceError")});bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new bw(this)};bw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.maximumScreenSpaceError=this.maximumScreenSpaceError??e.maximumScreenSpaceError};var NI=bw;function Tw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Tw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),leadTime:de("leadTime"),trailTime:de("trailTime"),width:de("width"),resolution:de("resolution"),material:Xo("material"),distanceDisplayCondition:de("distanceDisplayCondition")});Tw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Tw(this)};Tw.prototype.merge=function(e){this.show=this.show??e.show,this.leadTime=this.leadTime??e.leadTime,this.trailTime=this.trailTime??e.trailTime,this.width=this.width??e.width,this.resolution=this.resolution??e.resolution,this.material=this.material??e.material,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vg=Tw;function Sw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Sw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),plane:de("plane"),dimensions:de("dimensions"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Sw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Sw(this)};Sw.prototype.merge=function(e){this.show=this.show??e.show,this.plane=this.plane??e.plane,this.dimensions=this.dimensions??e.dimensions,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var oO=Sw;function ww(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(ww.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),pixelSize:de("pixelSize"),heightReference:de("heightReference"),color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});ww.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new ww(this)};ww.prototype.merge=function(e){this.show=this.show??e.show,this.pixelSize=this.pixelSize??e.pixelSize,this.heightReference=this.heightReference??e.heightReference,this.color=this.color??e.color,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var LI=ww;function eOe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var xc=eOe;function tOe(e){return Array.isArray(e)&&(e=new xc(e)),new ci(e)}function Bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),hierarchy:de("hierarchy",void 0,tOe),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),perPositionHeight:de("perPositionHeight"),closeTop:de("closeTop"),closeBottom:de("closeBottom"),arcType:de("arcType"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex"),textureCoordinates:de("textureCoordinates")});Bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new Bw(this)};Bw.prototype.merge=function(e){this.show=this.show??e.show,this.hierarchy=this.hierarchy??e.hierarchy,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.perPositionHeight=this.perPositionHeight??e.perPositionHeight,this.closeTop=this.closeTop??e.closeTop,this.closeBottom=this.closeBottom??e.closeBottom,this.arcType=this.arcType??e.arcType,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex,this.textureCoordinates=this.textureCoordinates??e.textureCoordinates};var lm=Bw;function Dw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Dw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),granularity:de("granularity"),material:Xo("material"),depthFailMaterial:Xo("depthFailMaterial"),arcType:de("arcType"),clampToGround:de("clampToGround"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Dw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Dw(this)};Dw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.granularity=this.granularity??e.granularity,this.material=this.material??e.material,this.depthFailMaterial=this.depthFailMaterial??e.depthFailMaterial,this.arcType=this.arcType??e.arcType,this.clampToGround=this.clampToGround??e.clampToGround,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var $c=Dw;function vw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(vw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),shape:de("shape"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});vw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new vw(this)};vw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.shape=this.shape??e.shape,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var OI=vw;function Pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),coordinates:de("coordinates"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Pw(this)};Pw.prototype.merge=function(e){this.show=this.show??e.show,this.coordinates=this.coordinates??e.coordinates,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var um=Pw;function Rw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Rw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),minimumHeights:de("minimumHeights"),maximumHeights:de("maximumHeights"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Rw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Rw(this)};Rw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.minimumHeights=this.minimumHeights??e.minimumHeights,this.maximumHeights=this.maximumHeights??e.maximumHeights,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var Pg=Rw;var nOe=new Ae,P6=[];function iOe(e){return new Ol(e)}function oOe(e){return de(e,void 0,iOe)}function ra(e,t){return de(e,void 0,function(n){return n instanceof t?n:new t(n)})}function Tf(e){e=e??V.EMPTY_OBJECT;let t=e.id;l(t)||(t=Xn()),this._availability=void 0,this._id=t,this._definitionChanged=new _e,this._name=e.name,this._show=e.show??!0,this._trackingReferenceFrame=e.trackingReferenceFrame??Tg.AUTODETECT,this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...P6],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function R6(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&R6(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(Tf.prototype,{availability:Fl("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:Fl("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&R6(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:Fl("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&R6(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:ra("billboard",jc),box:ra("box",wI),corridor:ra("corridor",DI),cylinder:ra("cylinder",vI),description:de("description"),ellipse:ra("ellipse",PI),ellipsoid:ra("ellipsoid",RI),label:ra("label",cm),model:ra("model",Dg),tileset:ra("tileset",NI),orientation:de("orientation"),path:ra("path",vg),plane:ra("plane",oO),point:ra("point",LI),polygon:ra("polygon",lm),polyline:ra("polyline",$c),polylineVolume:ra("polylineVolume",OI),properties:ra("properties",Ql),position:oOe("position"),rectangle:ra("rectangle",um),viewFrom:de("viewFrom"),wall:ra("wall",Pg)});Tf.registerEntityType=function(e,t){Object.defineProperties(Tf.prototype,{[e]:ra(e,t)}),P6.includes(e)||P6.push(e)};Tf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};Tf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,Fl(e,!0))};Tf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};Tf.prototype.merge=function(e){this.name=this.name??e.name,this.availability=this.availability??e.availability;let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var toe=new J,noe=new d,ioe=new Le;Tf.prototype.computeModelMatrix=function(e,t){let n=j.getValueOrUndefined(this._position,e,noe);if(!l(n))return;let i=j.getValueOrUndefined(this._orientation,e,ioe);return l(i)?t=R.fromRotationTranslation(J.fromQuaternion(i,toe),n,t):t=kt.eastNorthUpToFixedFrame(n,void 0,t),t};Tf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=j.getValueOrDefault(t,e,Ze.NONE),s=j.getValueOrUndefined(this._position,e,noe);if(r===Ze.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,D.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,nOe);_f(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=j.getValueOrUndefined(this._orientation,e,ioe);return l(c)?o=R.fromRotationTranslation(J.fromQuaternion(c,toe),s,o):o=kt.eastNorthUpToFixedFrame(s,void 0,o),o};Tf.supportsMaterialsforEntitiesOnTerrain=function(e){return Ll.supportsMaterials(e)};Tf.supportsPolylinesOnTerrain=function(e){return sm.isSupported(e)};var _r=Tf;var rOe=new Jt(G.WHITE),sOe=new ci(!0),aOe=new ci(!0),cOe=new ci(!1),lOe=new ci(G.BLACK),uOe=new ci(Dn.DISABLED),fOe=new ci(new Ut),dOe=new ci(Jn.BOTH);function el(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=_r.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(el.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});el.prototype.isOutlineVisible=function(e){let t=this._entity;return(this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e))??!1};el.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e))??!1};el.prototype.createFillGeometryInstance=me.throwInstantiationError;el.prototype.createOutlineGeometryInstance=me.throwInstantiationError;el.prototype.isDestroyed=function(){return!1};el.prototype.destroy=function(){ue(this)};el.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(je.MINIMUM_VALUE)};el.prototype._isOnTerrain=function(e,t){return!1};el.prototype._getIsClosed=function(e){return!0};el.prototype._isDynamic=me.throwInstantiationError;el.prototype._setStaticOptions=me.throwInstantiationError;el.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(je.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(je.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=o.material??rOe,this._fillProperty=r??aOe,this._showProperty=u??sOe,this._showOutlineProperty=o.outline??cOe,this._outlineColorProperty=c?o.outlineColor??lOe:void 0,this._shadowsProperty=o.shadows??uOe,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??fOe,this._classificationTypeProperty=o.classificationType??dOe,this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof Jt);if(c&&f&&(yt(yt.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(je.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};el.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var Ci=el;function FI(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(FI.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var hOe=new K;FI.prototype.getValue=function(e,t){return l(e)||(e=K.now(hOe)),this._callback(e,t)};FI.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};FI.prototype.equals=function(e){return this===e||e instanceof FI&&this._callback===e._callback&&this._isConstant===e._isConstant};var fm=FI;var ooe=new d;function QI(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new Ae,this._normal=new d,this._definitionChanged=new _e,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(je.MINIMUM_VALUE,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(QI.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});QI.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var mOe=new K;QI.prototype.getValue=function(e,t){l(e)||(e=K.now(mOe));let n=j.getValueOrDefault(this._heightReference,e,Ze.NONE),i=j.getValueOrDefault(this._extrudedHeightReference,e,Ze.NONE);if(n===Ze.NONE&&!rI(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,D.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};QI.prototype.isDestroyed=function(){return!1};QI.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var kI=QI;function AOe(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,s,r)}}var Rg=AOe;var roe=d.ZERO,soe=new d,pOe=new d,aoe=new G;function gOe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function bu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new gOe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(bu.prototype=Object.create(Ci.prototype),bu.prototype.constructor=bu);Object.defineProperties(bu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});bu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,aoe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:yc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};bu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,aoe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:$h.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};bu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};bu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};bu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};bu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};bu.prototype._onEntityPropertyChanged=Rg;bu.DynamicGeometryUpdater=UI;function UI(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(UI.prototype=Object.create(yi.prototype),UI.prototype.constructor=UI);UI.prototype._isHidden=function(e,t,n){let i=j.getValueOrUndefined(e.position,n,pOe),o=this._options.dimensions;return!l(i)||!l(o)||yi.prototype._isHidden.call(this,e,t,n)};UI.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.dimensions=j.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var rO=bu;function vC(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??eo.FIXED,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(vC.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _Oe=new K;vC.prototype.getValue=function(e,t){return l(e)||(e=K.now(_Oe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};vC.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};vC.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};vC.prototype.equals=function(e){return this===e||e instanceof vC&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var sO=vC;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:goe,setPrototypeOf:coe,isFrozen:yOe,getPrototypeOf:COe,getOwnPropertyDescriptor:EOe}=Object,{freeze:nl,seal:Sf,create:_oe}=Object,{apply:Q6,construct:k6}=typeof Reflect<"u"&&Reflect;nl||(nl=function(t){return t});Sf||(Sf=function(t){return t});Q6||(Q6=function(t,n,i){return t.apply(n,i)});k6||(k6=function(t,n){return new t(...n)});var aO=il(Array.prototype.forEach),IOe=il(Array.prototype.lastIndexOf),loe=il(Array.prototype.pop),Mw=il(Array.prototype.push),xOe=il(Array.prototype.splice),lO=il(String.prototype.toLowerCase),M6=il(String.prototype.toString),uoe=il(String.prototype.match),Nw=il(String.prototype.replace),bOe=il(String.prototype.indexOf),TOe=il(String.prototype.trim),zd=il(Object.prototype.hasOwnProperty),tl=il(RegExp.prototype.test),Lw=SOe(TypeError);function il(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return Q6(e,t,i)}}function SOe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return k6(e,n)}}function Fi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:lO;coe&&coe(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(yOe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function wOe(e){for(let t=0;t<e.length;t++)zd(e,t)||(e[t]=null);return e}function jA(e){let t=_oe(null);for(let[n,i]of goe(e))zd(e,n)&&(Array.isArray(i)?t[n]=wOe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=jA(i):t[n]=i);return t}function Ow(e,t){for(;e!==null;){let i=EOe(e,t);if(i){if(i.get)return il(i.get);if(typeof i.value=="function")return il(i.value)}e=COe(e)}function n(){return null}return n}var foe=nl(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),N6=nl(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),L6=nl(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),BOe=nl(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),O6=nl(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),DOe=nl(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),doe=nl(["#text"]),hoe=nl(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),F6=nl(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),moe=nl(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),cO=nl(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),vOe=Sf(/\{\{[\w\W]*|[\w\W]*\}\}/gm),POe=Sf(/<%[\w\W]*|[\w\W]*%>/gm),ROe=Sf(/\$\{[\w\W]*/gm),MOe=Sf(/^data-[\-\w.\u00B7-\uFFFF]+$/),NOe=Sf(/^aria-[\-\w]+$/),yoe=Sf(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),LOe=Sf(/^(?:\w+script|data):/i),OOe=Sf(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Coe=Sf(/^html$/i),FOe=Sf(/^[a-z][.\w]*(-[.\w]+)+$/i),Aoe=Object.freeze({__proto__:null,ARIA_ATTR:NOe,ATTR_WHITESPACE:OOe,CUSTOM_ELEMENT:FOe,DATA_ATTR:MOe,DOCTYPE_NAME:Coe,ERB_EXPR:POe,IS_ALLOWED_URI:yoe,IS_SCRIPT_OR_DATA:LOe,MUSTACHE_EXPR:vOe,TMPLIT_EXPR:ROe}),Fw={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},QOe=function(){return typeof window>"u"?null:window},kOe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},poe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Eoe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:QOe(),t=cn=>Eoe(cn);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==Fw.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:A,trustedTypes:g}=e,m=c.prototype,_=Ow(m,"cloneNode"),y=Ow(m,"remove"),C=Ow(m,"nextSibling"),E=Ow(m,"childNodes"),I=Ow(m,"parentNode");if(typeof s=="function"){let cn=n.createElement("template");cn.content&&cn.content.ownerDocument&&(n=cn.content.ownerDocument)}let b,S="",{implementation:B,createNodeIterator:v,createDocumentFragment:P,getElementsByTagName:N}=n,{importNode:L}=i,p=poe();t.isSupported=typeof goe=="function"&&typeof I=="function"&&B&&B.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:x,ERB_EXPR:T,TMPLIT_EXPR:w,DATA_ATTR:M,ARIA_ATTR:O,IS_SCRIPT_OR_DATA:U,ATTR_WHITESPACE:Q,CUSTOM_ELEMENT:z}=Aoe,{IS_ALLOWED_URI:F}=Aoe,H=null,W=Fi({},[...foe,...N6,...L6,...O6,...doe]),Z=null,Y=Fi({},[...hoe,...F6,...moe,...cO]),$=Object.seal(_oe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,he=null,ge=!0,fe=!0,ye=!1,Ie=!0,ve=!1,Te=!0,ke=!1,Ge=!1,qe=!1,tt=!1,$t=!1,it=!1,tn=!0,Wt=!1,vt="user-content-",bi=!0,di=!1,Ot={},Tt=null,ii=Fi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ct=null,Ro=Fi({},["audio","video","img","source","image","track"]),Qo=null,ya=Fi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mr="http://www.w3.org/1998/Math/MathML",Tr="http://www.w3.org/2000/svg",Oe="http://www.w3.org/1999/xhtml",lt=Oe,Ke=!1,$e=null,pt=Fi({},[mr,Tr,Oe],M6),Xt=Fi({},["mi","mo","mn","ms","mtext"]),xn=Fi({},["annotation-xml"]),lo=Fi({},["title","style","font","a","script"]),ro=null,$s=["application/xhtml+xml","text/html"],ea="text/html",Vn=null,_i=null,_s=n.createElement("form"),Wo=function(Se){return Se instanceof RegExp||Se instanceof Function},Ca=function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(_i&&_i===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=jA(Se),ro=$s.indexOf(Se.PARSER_MEDIA_TYPE)===-1?ea:Se.PARSER_MEDIA_TYPE,Vn=ro==="application/xhtml+xml"?M6:lO,H=zd(Se,"ALLOWED_TAGS")?Fi({},Se.ALLOWED_TAGS,Vn):W,Z=zd(Se,"ALLOWED_ATTR")?Fi({},Se.ALLOWED_ATTR,Vn):Y,$e=zd(Se,"ALLOWED_NAMESPACES")?Fi({},Se.ALLOWED_NAMESPACES,M6):pt,Qo=zd(Se,"ADD_URI_SAFE_ATTR")?Fi(jA(ya),Se.ADD_URI_SAFE_ATTR,Vn):ya,Ct=zd(Se,"ADD_DATA_URI_TAGS")?Fi(jA(Ro),Se.ADD_DATA_URI_TAGS,Vn):Ro,Tt=zd(Se,"FORBID_CONTENTS")?Fi({},Se.FORBID_CONTENTS,Vn):ii,X=zd(Se,"FORBID_TAGS")?Fi({},Se.FORBID_TAGS,Vn):jA({}),he=zd(Se,"FORBID_ATTR")?Fi({},Se.FORBID_ATTR,Vn):jA({}),Ot=zd(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ge=Se.ALLOW_ARIA_ATTR!==!1,fe=Se.ALLOW_DATA_ATTR!==!1,ye=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Ie=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ve=Se.SAFE_FOR_TEMPLATES||!1,Te=Se.SAFE_FOR_XML!==!1,ke=Se.WHOLE_DOCUMENT||!1,tt=Se.RETURN_DOM||!1,$t=Se.RETURN_DOM_FRAGMENT||!1,it=Se.RETURN_TRUSTED_TYPE||!1,qe=Se.FORCE_BODY||!1,tn=Se.SANITIZE_DOM!==!1,Wt=Se.SANITIZE_NAMED_PROPS||!1,bi=Se.KEEP_CONTENT!==!1,di=Se.IN_PLACE||!1,F=Se.ALLOWED_URI_REGEXP||yoe,lt=Se.NAMESPACE||Oe,Xt=Se.MATHML_TEXT_INTEGRATION_POINTS||Xt,xn=Se.HTML_INTEGRATION_POINTS||xn,$=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&($.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&($.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&($.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(fe=!1),$t&&(tt=!0),Ot&&(H=Fi({},doe),Z=[],Ot.html===!0&&(Fi(H,foe),Fi(Z,hoe)),Ot.svg===!0&&(Fi(H,N6),Fi(Z,F6),Fi(Z,cO)),Ot.svgFilters===!0&&(Fi(H,L6),Fi(Z,F6),Fi(Z,cO)),Ot.mathMl===!0&&(Fi(H,O6),Fi(Z,moe),Fi(Z,cO))),Se.ADD_TAGS&&(H===W&&(H=jA(H)),Fi(H,Se.ADD_TAGS,Vn)),Se.ADD_ATTR&&(Z===Y&&(Z=jA(Z)),Fi(Z,Se.ADD_ATTR,Vn)),Se.ADD_URI_SAFE_ATTR&&Fi(Qo,Se.ADD_URI_SAFE_ATTR,Vn),Se.FORBID_CONTENTS&&(Tt===ii&&(Tt=jA(Tt)),Fi(Tt,Se.FORBID_CONTENTS,Vn)),bi&&(H["#text"]=!0),ke&&Fi(H,["html","head","body"]),H.table&&(Fi(H,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');b=Se.TRUSTED_TYPES_POLICY,S=b.createHTML("")}else b===void 0&&(b=kOe(g,o)),b!==null&&typeof S=="string"&&(S=b.createHTML(""));nl&&nl(Se),_i=Se}},uo=Fi({},[...N6,...L6,...BOe]),jo=Fi({},[...O6,...DOe]),df=function(Se){let St=I(Se);(!St||!St.tagName)&&(St={namespaceURI:lt,tagName:"template"});let _n=lO(Se.tagName),er=lO(St.tagName);return $e[Se.namespaceURI]?Se.namespaceURI===Tr?St.namespaceURI===Oe?_n==="svg":St.namespaceURI===mr?_n==="svg"&&(er==="annotation-xml"||Xt[er]):!!uo[_n]:Se.namespaceURI===mr?St.namespaceURI===Oe?_n==="math":St.namespaceURI===Tr?_n==="math"&&xn[er]:!!jo[_n]:Se.namespaceURI===Oe?St.namespaceURI===Tr&&!xn[er]||St.namespaceURI===mr&&!Xt[er]?!1:!jo[_n]&&(lo[_n]||!uo[_n]):!!(ro==="application/xhtml+xml"&&$e[Se.namespaceURI]):!1},Ar=function(Se){Mw(t.removed,{element:Se});try{I(Se).removeChild(Se)}catch{y(Se)}},ys=function(Se,St){try{Mw(t.removed,{attribute:St.getAttributeNode(Se),from:St})}catch{Mw(t.removed,{attribute:null,from:St})}if(St.removeAttribute(Se),Se==="is")if(tt||$t)try{Ar(St)}catch{}else try{St.setAttribute(Se,"")}catch{}},Qs=function(Se){let St=null,_n=null;if(qe)Se="<remove></remove>"+Se;else{let Cs=uoe(Se,/^[\r\n\t ]+/);_n=Cs&&Cs[0]}ro==="application/xhtml+xml"&<===Oe&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let er=b?b.createHTML(Se):Se;if(lt===Oe)try{St=new A().parseFromString(er,ro)}catch{}if(!St||!St.documentElement){St=B.createDocument(lt,"template",null);try{St.documentElement.innerHTML=Ke?S:er}catch{}}let Ea=St.body||St.documentElement;return Se&&_n&&Ea.insertBefore(n.createTextNode(_n),Ea.childNodes[0]||null),lt===Oe?N.call(St,ke?"html":"body")[0]:ke?St.documentElement:Ea},vd=function(Se){return v.call(Se.ownerDocument||Se,Se,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},rs=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},qa=function(Se){return typeof a=="function"&&Se instanceof a};function Ka(cn,Se,St){aO(cn,_n=>{_n.call(t,Se,St,_i)})}let Sr=function(Se){let St=null;if(Ka(p.beforeSanitizeElements,Se,null),rs(Se))return Ar(Se),!0;let _n=Vn(Se.nodeName);if(Ka(p.uponSanitizeElement,Se,{tagName:_n,allowedTags:H}),Te&&Se.hasChildNodes()&&!qa(Se.firstElementChild)&&tl(/<[/\w!]/g,Se.innerHTML)&&tl(/<[/\w!]/g,Se.textContent)||Se.nodeType===Fw.progressingInstruction||Te&&Se.nodeType===Fw.comment&&tl(/<[/\w]/g,Se.data))return Ar(Se),!0;if(!H[_n]||X[_n]){if(!X[_n]&&Dl(_n)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n)))return!1;if(bi&&!Tt[_n]){let er=I(Se)||Se.parentNode,Ea=E(Se)||Se.childNodes;if(Ea&&er){let Cs=Ea.length;for(let dc=Cs-1;dc>=0;--dc){let Pd=_(Ea[dc],!0);Pd.__removalCount=(Se.__removalCount||0)+1,er.insertBefore(Pd,C(Se))}}}return Ar(Se),!0}return Se instanceof c&&!df(Se)||(_n==="noscript"||_n==="noembed"||_n==="noframes")&&tl(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Ar(Se),!0):(ve&&Se.nodeType===Fw.text&&(St=Se.textContent,aO([x,T,w],er=>{St=Nw(St,er," ")}),Se.textContent!==St&&(Mw(t.removed,{element:Se.cloneNode()}),Se.textContent=St)),Ka(p.afterSanitizeElements,Se,null),!1)},Bl=function(Se,St,_n){if(tn&&(St==="id"||St==="name")&&(_n in n||_n in _s))return!1;if(!(fe&&!he[St]&&tl(M,St))){if(!(ge&&tl(O,St))){if(!Z[St]||he[St]){if(!(Dl(Se)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,Se)||$.tagNameCheck instanceof Function&&$.tagNameCheck(Se))&&($.attributeNameCheck instanceof RegExp&&tl($.attributeNameCheck,St)||$.attributeNameCheck instanceof Function&&$.attributeNameCheck(St))||St==="is"&&$.allowCustomizedBuiltInElements&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n))))return!1}else if(!Qo[St]){if(!tl(F,Nw(_n,Q,""))){if(!((St==="src"||St==="xlink:href"||St==="href")&&Se!=="script"&&bOe(_n,"data:")===0&&Ct[Se])){if(!(ye&&!tl(U,Nw(_n,Q,"")))){if(_n)return!1}}}}}}return!0},Dl=function(Se){return Se!=="annotation-xml"&&uoe(Se,z)},ta=function(Se){Ka(p.beforeSanitizeAttributes,Se,null);let{attributes:St}=Se;if(!St||rs(Se))return;let _n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0},er=St.length;for(;er--;){let Ea=St[er],{name:Cs,namespaceURI:dc,value:Pd}=Ea,TA=Vn(Cs),LS=Pd,Ia=Cs==="value"?LS:TOe(LS);if(_n.attrName=TA,_n.attrValue=Ia,_n.keepAttr=!0,_n.forceKeepAttr=void 0,Ka(p.uponSanitizeAttribute,Se,_n),Ia=_n.attrValue,Wt&&(TA==="id"||TA==="name")&&(ys(Cs,Se),Ia=vt+Ia),Te&&tl(/((--!?|])>)|<\/(style|title)/i,Ia)){ys(Cs,Se);continue}if(_n.forceKeepAttr)continue;if(!_n.keepAttr){ys(Cs,Se);continue}if(!Ie&&tl(/\/>/i,Ia)){ys(Cs,Se);continue}ve&&aO([x,T,w],_R=>{Ia=Nw(Ia,_R," ")});let gR=Vn(Se.nodeName);if(!Bl(gR,TA,Ia)){ys(Cs,Se);continue}if(b&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!dc)switch(g.getAttributeType(gR,TA)){case"TrustedHTML":{Ia=b.createHTML(Ia);break}case"TrustedScriptURL":{Ia=b.createScriptURL(Ia);break}}if(Ia!==LS)try{dc?Se.setAttributeNS(dc,Cs,Ia):Se.setAttribute(Cs,Ia),rs(Se)?Ar(Se):loe(t.removed)}catch{ys(Cs,Se)}}Ka(p.afterSanitizeAttributes,Se,null)},wo=function cn(Se){let St=null,_n=vd(Se);for(Ka(p.beforeSanitizeShadowDOM,Se,null);St=_n.nextNode();)Ka(p.uponSanitizeShadowNode,St,null),Sr(St),ta(St),St.content instanceof r&&cn(St.content);Ka(p.afterSanitizeShadowDOM,Se,null)};return t.sanitize=function(cn){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},St=null,_n=null,er=null,Ea=null;if(Ke=!cn,Ke&&(cn="<!-->"),typeof cn!="string"&&!qa(cn))if(typeof cn.toString=="function"){if(cn=cn.toString(),typeof cn!="string")throw Lw("dirty is not a string, aborting")}else throw Lw("toString is not a function");if(!t.isSupported)return cn;if(Ge||Ca(Se),t.removed=[],typeof cn=="string"&&(di=!1),di){if(cn.nodeName){let Pd=Vn(cn.nodeName);if(!H[Pd]||X[Pd])throw Lw("root node is forbidden and cannot be sanitized in-place")}}else if(cn instanceof a)St=Qs("<!---->"),_n=St.ownerDocument.importNode(cn,!0),_n.nodeType===Fw.element&&_n.nodeName==="BODY"||_n.nodeName==="HTML"?St=_n:St.appendChild(_n);else{if(!tt&&!ve&&!ke&&cn.indexOf("<")===-1)return b&&it?b.createHTML(cn):cn;if(St=Qs(cn),!St)return tt?null:it?S:""}St&&qe&&Ar(St.firstChild);let Cs=vd(di?cn:St);for(;er=Cs.nextNode();)Sr(er),ta(er),er.content instanceof r&&wo(er.content);if(di)return cn;if(tt){if($t)for(Ea=P.call(St.ownerDocument);St.firstChild;)Ea.appendChild(St.firstChild);else Ea=St;return(Z.shadowroot||Z.shadowrootmode)&&(Ea=L.call(i,Ea,!0)),Ea}let dc=ke?St.outerHTML:St.innerHTML;return ke&&H["!doctype"]&&St.ownerDocument&&St.ownerDocument.doctype&&St.ownerDocument.doctype.name&&tl(Coe,St.ownerDocument.doctype.name)&&(dc="<!DOCTYPE "+St.ownerDocument.doctype.name+`> +`+dc),ve&&aO([x,T,w],Pd=>{dc=Nw(dc,Pd," ")}),b&&it?b.createHTML(dc):dc},t.setConfig=function(){let cn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ca(cn),Ge=!0},t.clearConfig=function(){_i=null,Ge=!1},t.isValidAttribute=function(cn,Se,St){_i||Ca({});let _n=Vn(cn),er=Vn(Se);return Bl(_n,er,St)},t.addHook=function(cn,Se){typeof Se=="function"&&Mw(p[cn],Se)},t.removeHook=function(cn,Se){if(Se!==void 0){let St=IOe(p[cn],Se);return St===-1?void 0:xOe(p[cn],St,1)[0]}return loe(p[cn])},t.removeHooks=function(cn){p[cn]=[]},t.removeAllHooks=function(){p=poe()},t}var Ioe=Eoe();var UOe=0,U6={};function dm(e,t){let n,i=e;l(U6[i])?n=U6[i]:(n=UOe++,U6[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(dm.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Ioe.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});dm.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};dm.prototype.equals=function(e){return dm.equals(this,e)};dm.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};dm.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new dm(e.html,t)};dm.clone=function(e){if(l(e))return new dm(e.html,e.showOnScreen)};var Dt=dm;function GOe(e,t){yt(e,t)}var Pr=GOe;function PC(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new _e}Object.defineProperties(PC.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});PC.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function G6(e){e._cubeMapBuffers=void 0}PC.prototype.update=function(e){let{context:t}=e;if(!PC.isSupported(t))return;if(l(this._texture)){G6(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(G6(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;Iu(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT);let o=et.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(jr.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),u=new jr({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};PC.prototype.isDestroyed=function(){return!1};PC.prototype.destroy=function(){return G6(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var hm=PC;function Qw(e){e=e??V.EMPTY_OBJECT;let t=l(e.imageBasedLightingFactor)?k.clone(e.imageBasedLightingFactor):new k(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousFrameContext=void 0,this._previousImageBasedLightingFactor=k.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(Qw.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=k.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function zOe(e,t){if(hm.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new hm(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}Qw.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;k.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(zOe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};Qw.prototype.isDestroyed=function(){return!1};Qw.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var GI=Qw;var V6=Es(_u(),1);var z6,xoe="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",uO={};uO.defaultAccessToken=xoe;uO.defaultServer=new we({url:"https://api.cesium.com/"});uO.getDefaultTokenCredit=function(e){if(e===xoe){if(!l(z6)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;z6=new Dt(t,!0)}return z6}};var mm=uO;function ol(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:VOe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new ce("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");we.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new V6.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(ol.prototype=Object.create(we.prototype),ol.prototype.constructor=ol);ol.fromAssetId=function(e,t){let n=ol._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new ol(i,n)})};Object.defineProperties(ol.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=ol.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});ol.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Dt.getIonCredit),i=mm.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Dt.clone(i)),n};ol.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new ol(t._ionEndpoint,t._ionEndpointResource)),e=we.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};ol.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return we.prototype.fetchImage.call(this,e)};ol.prototype._makeRequest=function(e){return this._isExternal||new V6.default(this.url).authority()!==this._ionEndpointDomain?we.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),we.prototype._makeRequest.call(this,e))};ol._createEndpointResource=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.server??mm.defaultServer,i=t.accessToken??mm.defaultAccessToken;n=we.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function VOe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var wf=ol;function Am(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Am.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Am.prototype.get=function(e){return this._array[e]};Am.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Am.prototype.peek=function(){return this._array[this._length-1]};Am.prototype.push=function(e){let t=this.length++;this._array[t]=e};Am.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Am.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Am.prototype.resize=function(e){this.length=e};Am.prototype.trim=function(e){e=e??this._length,this._array.length=e};var kl=Am;function fO(e){e=e??V.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}fO.ALL=Object.freeze(new fO({color:new G(0,0,0,0),depth:1,stencil:0}));fO.prototype.execute=function(e,t){e.clear(this,t)};var Ei=fO;var YA={X:0,Y:1,Z:2};YA.Y_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,1,0,-1,0]));YA.Z_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,-1,0,1,0]));YA.X_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([0,0,1,0,1,0,-1,0,0]));YA.Z_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,0,-1,0,1,0,1,0,0]));YA.X_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([0,1,0,-1,0,0,0,0,1]));YA.Y_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,-1,0,1,0,0,0,0,1]));YA.fromName=function(e){return YA[e]};var Ao=Object.freeze(YA);function Bf(e){this.planes=e??[]}var kw=[new d,new d,new d];d.clone(d.UNIT_X,kw[0]);d.clone(d.UNIT_Y,kw[1]);d.clone(d.UNIT_Z,kw[2]);var Mg=new d,HOe=new d,boe=new mn(new d(1,0,0),0);Bf.fromBoundingSphere=function(e,t){l(t)||(t=new Bf);let n=kw.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=kw[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new se),l(f)||(f=i[s+1]=new se),d.multiplyByScalar(c,-r,Mg),d.add(o,Mg,Mg),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,Mg),d.multiplyByScalar(c,r,Mg),d.add(o,Mg,Mg),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,HOe),Mg),s+=2}return t};Bf.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(mn.fromCartesian4(t[i],boe));if(r===nn.OUTSIDE)return nn.OUTSIDE;r===nn.INTERSECTING&&(n=!0)}return n?nn.INTERSECTING:nn.INSIDE};Bf.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===Bf.MASK_OUTSIDE||t===Bf.MASK_INSIDE)return t;let n=Bf.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(mn.fromCartesian4(i[o],boe));if(a===nn.OUTSIDE)return Bf.MASK_OUTSIDE;a===nn.INTERSECTING&&(n|=s)}return n};Bf.MASK_OUTSIDE=4294967295;Bf.MASK_INSIDE=0;Bf.MASK_INDETERMINATE=2147483647;var zs=Bf;function pm(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._orthographicMatrix=new R}function Toe(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=R.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(pm.prototype,{projectionMatrix:{get:function(){return Toe(this),this._orthographicMatrix}}});var WOe=new d,jOe=new d,YOe=new d,H6=new d;pm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,WOe);d.normalize(f,f);let h=jOe;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=YOe;d.multiplyByScalar(f,a,A),d.add(h,A,A);let g=i[0];return l(g)||(g=i[0]=new se),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,A),d.multiplyByScalar(f,s,A),d.add(h,A,A),g=i[1],l(g)||(g=i[1]=new se),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,H6),A),d.multiplyByScalar(n,r,A),d.add(h,A,A),g=i[2],l(g)||(g=i[2]=new se),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,A),d.multiplyByScalar(n,o,A),d.add(h,A,A),g=i[3],l(g)||(g=i[3]=new se),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,H6),A),g=i[4],l(g)||(g=i[4]=new se),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,A),d.add(e,A,A),g=i[5],l(g)||(g=i[5]=new se),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,H6),A),this._cullingVolume};pm.prototype.getPixelDimensions=function(e,t,n,i,o){Toe(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};pm.prototype.clone=function(e){return l(e)||(e=new pm),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};pm.prototype.equals=function(e){return l(e)&&e instanceof pm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};pm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof pm&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var ls=pm;function Ul(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new ls,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}Ul.packedLength=4;Ul.pack=function(e,t,n){return n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};Ul.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ul),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function Ng(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(Ul.prototype,{projectionMatrix:{get:function(){return Ng(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return Ng(this),this._offCenterFrustum}}});Ul.prototype.computeCullingVolume=function(e,t,n){return Ng(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Ul.prototype.getPixelDimensions=function(e,t,n,i,o){return Ng(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Ul.prototype.clone=function(e){return l(e)||(e=new Ul),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Ul.prototype.equals=function(e){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Ul.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),D.equalsEpsilon(this.width,e.width,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var An=Ul;function Soe(e){e=e??V.EMPTY_OBJECT,this._metadata=e.metadata}Object.defineProperties(Soe.prototype,{metadata:{get:function(){return this._metadata}}});var zI=Soe;function Lg(e,t,n){return t=t??0,n=n??e.byteLength-t,e=e.subarray(t,t+n),Lg.decode(e)}Lg.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};Lg.decodeWithFromCharCode=function(e){let t="",n=qOe(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function Uw(e,t,n){return t<=e&&e<=n}function qOe(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(Uw(u,0,127)){s.push(u);continue}if(Uw(u,194,223)){i=1,t=u&31;continue}if(Uw(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(Uw(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new ce("String decoding failed.")}if(!Uw(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?Lg.decode=Lg.decodeWithTextDecoder:Lg.decode=Lg.decodeWithFromCharCode;var Tu=Lg;function KOe(e,t){return t=t??0,Tu(e,t,Math.min(4,e.length))}var gm=KOe;function Df(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Df.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var Gw=Uint32Array.BYTES_PER_ELEMENT;Df.fromTileType=async function(e,t,n,i,o,r){o=o??0;let s=new Uint8Array(i),a=new DataView(i);o+=Gw;let c=a.getUint32(o,!0);if(c!==1)throw new ce(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=Gw,o+=Gw;let u=a.getUint32(o,!0);o+=Gw;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let _=gm(s,o),y=a.getUint32(o+Gw*2,!0),C=r[_],E=`${f}${m}`,I=n.getDerivedResource({queryParameters:{compositeIndex:E}});if(l(C))h[m]=Promise.resolve(C(e,t,I,i,o));else throw new ce(`Unknown tile content type, ${_}, inside Composite tile`);o+=y}let A=await Promise.all(h);return new Df(e,t,n,A)};Df.prototype.hasProperty=function(e,t){return!1};Df.prototype.getFeature=function(e){};Df.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Df.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Df.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Df.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Df.prototype.isDestroyed=function(){return!1};Df.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var dO=Df;function XOe(e,t,n){return JSON.parse(Tu(e,t,n))}var yr=XOe;function bc(e){this._id=Xn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,qt.maximumTextureSize),r=Math.ceil(t/qt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new k(o,r),i=new se(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(bc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});bc.DEFAULT_COLOR_VALUE=G.WHITE;bc.DEFAULT_SHOW_VALUE=!0;function woe(e){let t=e._textureDimensions;return t.x*t.y*4}function Boe(e){if(!l(e._batchValues)){let t=woe(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Doe(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}bc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Doe(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=Boe(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};bc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};bc.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var JOe=new Array(4);bc.prototype.setColor=function(e,t){if(G.equals(t,bc.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(JOe),i=n[3],o=Boe(this),r=e*4,s=Doe(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};bc.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};bc.prototype.getColor=function(e,t){if(!l(this._batchValues))return G.clone(bc.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return G.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};bc.prototype.getPickColor=function(e){return this._pickIds[e]};function voe(e,t,n){let i=e._textureDimensions;return new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:on.NEAREST})}function ZOe(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=woe(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=G.floatToByte(f.red),r[h+1]=G.floatToByte(f.green),r[h+2]=G.floatToByte(f.blue),r[h+3]=G.floatToByte(f.alpha)}e._pickTexture=voe(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function $Oe(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}bc.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&ZOe(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=voe(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),$Oe(this))};bc.prototype.isDestroyed=function(){return!1};bc.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Gl=bc;var eFe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},tFe={SCALAR:void 0,VEC2:k,VEC3:d,VEC4:se,MAT2:Wi,MAT3:J,MAT4:R};function nFe(e){let t=e.componentType,n;typeof t=="string"?n=q.fromName(t):n=t;let i=eFe[e.type],o=tFe[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return q.createArrayBufferView(n,r,s,i*a)}}}var vf=nFe;function qA(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,iFe(this,e.extension,e.binaryBody)}Object.defineProperties(qA.prototype,{byteLength:{get:function(){return this._byteLength}}});function iFe(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,A=0;l(c.byteOffset)&&(c.componentType=c.componentType??q.UNSIGNED_SHORT,c.type=Ht.SCALAR,r=vf(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),A+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=u.componentType??q.UNSIGNED_SHORT,u.type=Ht.SCALAR,r=vf(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),A+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];A+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=f.componentType??q.UNSIGNED_SHORT,f.type=Ht.SCALAR,r=vf(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),A+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let C=a[i].length,E=a[i].instances,I=oFe(C,E,n);A+=rFe(I),a[i].instances=wt(I,E)}let _=new Array(m).fill(0),y=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],y[i]=_[o],++_[o];A+=y.byteLength,e._classes=a,e._classIds=c,e._classIndexes=y,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=A}function oFe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function rFe(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var sFe=[],aFe=[],cFe=0;function lFe(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=sFe;c.length=Math.max(c.length,a);let u=++cFe,f=aFe;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let A=o[t],g=s[t];for(let m=0;m<A;++m){let _=r[g+m];_!==t&&f.push(_)}}}function uFe(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function zw(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return lFe(e,t,n)}else return n(e,t);return uFe(e,t,n)}qA.prototype.hasProperty=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};qA.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};qA.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};qA.prototype.getProperty=function(e,t){return zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?fFe(a,s):ze(a[s],!0)})};function fFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}qA.prototype.setProperty=function(e,t,n){let i=zw(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?dFe(u,c,n):u[c]=ze(n,!0),!0});return l(i)};function dFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}qA.prototype.isClass=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};qA.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var VI=qA;var hFe={HIGHLIGHT:0,REPLACE:1,MIX:2},Su=Object.freeze(hFe);function mFe(e,t){if(!l(t))return;let n=t.length;if(n===0)return;let i=e.length;e.length+=n;for(let o=0;o<n;o++)e[i+o]=t[o]}var si=mFe;var W6=Gl.DEFAULT_COLOR_VALUE,j6=Gl.DEFAULT_SHOW_VALUE;function Do(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=r??{};let s=AFe(n);this._properties=s,this._batchTableHierarchy=pFe(this,n,i);let a=Roe(t,s,i);this._binaryPropertiesByteLength=gFe(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Gl({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}Do._deprecationWarning=Pr;Object.defineProperties(Do.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function AFe(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=ze(e[n],!0));return t}function pFe(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(Do._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new VI({extension:i,binaryBody:n})}function Roe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function gFe(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}Do.getBinaryProperties=function(e,t,n){return Roe(e,t,n)};Do.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Do.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Do.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Do.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Do.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Do.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Do.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var _Fe=new G;Do.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(W6),this.setAllShow(j6);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?e.color.evaluateColor(o,_Fe)??W6:W6,s=l(e.show)?e.show.evaluate(o)??j6:j6;this.setColor(i,r),this.setShow(i,s)}};function yFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function CFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}Do.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Do.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Do.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};Do.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};Do.prototype.hasPropertyBySemantic=function(){return!1};Do.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);if(si(t,n),l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getPropertyIds(e,n);si(t,i)}return t};Do.prototype.getPropertyBySemantic=function(e,t){};Do.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return yFe(i,e)}let n=this._properties[t];if(l(n))return ze(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};Do.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){CFe(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=ze(n,!0)};function EFe(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + return vec2(centerX + (batchId * stepX), 0.5); +} +`:`uniform vec4 tile_textureStep; +uniform vec2 tile_textureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + float stepY = tile_textureStep.z; + float centerY = tile_textureStep.w; + float xId = mod(batchId, tile_textureDimensions.x); + float yId = floor(batchId / tile_textureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}Do.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Moe(o,n,!1),s;return qt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${EFe(i)}${s}`}};function Poe(e,t){return e=We.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function IFe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Moe(e,t,n){if(!l(t))return Poe(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return Poe(e,n);let r=o[0],s=o[2];e=We.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} +vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse) +{ + vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend); + vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse; + return vec4(diffuse.rgb, sourceDiffuse.a); +} +`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f}; + tile_diffuse = tile_diffuse_final(source, tile_featureColor); + tile_main(); +`}else s==="sampler2D"&&(e=IFe(e,t),u=` tile_diffuse = tile_featureColor; + tile_main(); +`);return e=`uniform float tile_colorBlend; +vec4 tile_diffuse = vec4(1.0); +${a}${r} +${e} +void tile_color(vec4 tile_featureColor) +{ +${u}`,n&&(e+=c),e+=`} +`,e}Do.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Moe(i,t,!0),qt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function xFe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===Su.HIGHLIGHT)return 0;if(n===Su.REPLACE)return 1;if(n===Su.MIX)return D.clamp(i,D.EPSILON4,1)}Do.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return wt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return xFe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};Do.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Og={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Do.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=bFe(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===Be.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=TFe(f),f.dirty=!1);let A=h.originalCommand;c!==Og.ALL_OPAQUE&&f.pass!==Be.TRANSLUCENT&&(l(h.translucent)||(h.translucent=SFe(A))),c!==Og.ALL_TRANSLUCENT&&f.pass!==Be.TRANSLUCENT&&(l(h.opaque)||(h.opaque=wFe(A)),a&&(r||(l(h.zback)||(h.zback=DFe(e.context,A)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==PFe(h.stencil))&&(f.renderState.depthMask?h.stencil=vFe(A,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==Be.TRANSLUCENT?(c===Og.ALL_OPAQUE&&(n[u]=g),c===Og.ALL_TRANSLUCENT&&(n[u]=m),c===Og.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=A}};function bFe(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?Og.ALL_OPAQUE:t===e.featuresLength?Og.ALL_TRANSLUCENT:Og.OPAQUE_AND_TRANSLUCENT}function TFe(e){let t=nt.shallowClone(e),n=t.pass===Be.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function SFe(e){let t=nt.shallowClone(e);return t.pass=Be.TRANSLUCENT,t.renderState=RFe(e.renderState),t}function wFe(e){let t=nt.shallowClone(e);return t.renderState=MFe(e.renderState),t}function BFe(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function DFe(e,t){let n=nt.shallowClone(t),i=ze(n.renderState,!0);i.cull.enabled=!0,i.cull.face=Mi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK,n.renderState=Ue.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=ze(t.uniformMap);let o=new k(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=BFe(e,t.shaderProgram),n}function vFe(e,t){let n=nt.shallowClone(e),i=ze(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Kt.SKIP_LOD_MASK,i.stencilTest.reference=Kt.CESIUM_3D_TILE_MASK|t<<Kt.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=_t.REPLACE,i.stencilTest.backFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=_t.REPLACE,i.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,n.renderState=Ue.fromCache(i),n}function PFe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function RFe(e){let t=ze(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=pn.ALPHA_BLEND,t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}function MFe(e){let t=ze(e,!0);return t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}Do.prototype.update=function(e,t){this._batchTexture.update(e,t)};Do.prototype.isDestroyed=function(){return!1};Do.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var Fg=Do;function NFe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var KA=NFe;var Vw=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;function Pf(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(Pf.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});Pf.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Pf.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Pf.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Pf.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};Pf.prototype.getPropertyInherited=function(e){return Pf.getPropertyInherited(this._content,this._batchId,e)};Pf.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Pf.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Pf.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Pf.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Sa=Pf;var Y6=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},q6=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},zl=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=` +`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},LFe=new Y6;Object.assign(zl,{hooks:LFe,plugins:new q6(zl),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});zl.max_unop_len=zl.getMaxKeyLen(zl.unary_ops);zl.max_binop_len=zl.getMaxKeyLen(zl.binary_ops);var Qg=e=>new zl(e).parse(),OFe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(zl).filter(e=>!OFe.includes(e)&&Qg[e]===void 0).forEach(e=>{Qg[e]=zl[e]});Qg.Jsep=zl;var FFe="ConditionalExpression",QFe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:FFe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};Qg.plugins.register(QFe);var kFe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},It=Object.freeze(kFe);function Vd(e,t){this._expression=e,e=ZFe(e,t),e=e2e($Fe(e)),Qg.addBinaryOp("=~",0),Qg.addBinaryOp("!~",0);let n;try{n=Qg(e)}catch(i){throw new ce(i)}this._runtimeAst=Ni(this,n)}Object.defineProperties(Vd.prototype,{expression:{get:function(){return this._expression}}});var Un={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new k],cartesian3Array:[new d],cartesian4Array:[new se],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new k),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new se),this.cartesian4Array[this.cartesian4Index++]}};Vd.prototype.evaluate=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return t instanceof G&&n instanceof se?G.fromCartesian4(n,t):n instanceof k||n instanceof d||n instanceof se?n.clone(t):n};Vd.prototype.evaluateColor=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return G.fromCartesian4(n,t)};Vd.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};Vd.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};Vd.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var UFe=["!","-","+"],Noe=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],Hw=/\${(.*?)}/g,GFe=/\\/g,zFe="@#%",VFe=/@#%/g,AO=new G,pO={abs:sa(Math.abs),sqrt:sa(Math.sqrt),cos:sa(Math.cos),sin:sa(Math.sin),tan:sa(Math.tan),acos:sa(Math.acos),asin:sa(Math.asin),atan:sa(Math.atan),radians:sa(D.toRadians),degrees:sa(D.toDegrees),sign:sa(D.sign),floor:sa(Math.floor),ceil:sa(Math.ceil),round:sa(Math.round),exp:sa(Math.exp),exp2:sa(WFe),log:sa(Math.log),log2:sa(jFe),fract:sa(HFe),length:YFe,normalize:qFe},gO={atan2:hO(Math.atan2,!1),pow:hO(Math.pow,!1),min:hO(Math.min,!0),max:hO(Math.max,!0),distance:KFe,dot:XFe,cross:JFe},J6={clamp:Loe(D.clamp,!0),mix:Loe(D.lerp,!0)};function HFe(e){return e-Math.floor(e)}function WFe(e){return Math.pow(2,e)}function jFe(e){return D.log2(e)}function sa(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof k)return k.fromElements(e(n.x),e(n.y),Un.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),Un.getCartesian3());if(n instanceof se)return se.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Un.getCartesian4());throw new ce(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function hO(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof k)return k.fromElements(e(i.x,o),e(i.y,o),Un.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Un.getCartesian3());if(i instanceof se)return se.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x),e(i.y,o.y),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function Loe(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof k&&o instanceof k&&r instanceof k)return k.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Un.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Un.getCartesian3());if(i instanceof se&&o instanceof se&&r instanceof se)return se.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function YFe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof k)return k.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof se)return se.magnitude(t);throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function qFe(e,t){if(typeof t=="number")return 1;if(t instanceof k)return k.normalize(t,Un.getCartesian2());if(t instanceof d)return d.normalize(t,Un.getCartesian3());if(t instanceof se)return se.normalize(t,Un.getCartesian4());throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function KFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof k&&n instanceof k)return k.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof se&&n instanceof se)return se.distance(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function XFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof k&&n instanceof k)return k.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof se&&n instanceof se)return se.dot(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function JFe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,Un.getCartesian3());throw new ce(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Bt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,u2e(this)}function ZFe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function $Fe(e){return e.replace(GFe,zFe)}function X6(e){return e.replace(VFe,"\\")}function e2e(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new ce("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function t2e(e){let t=typeof e.value;if(e.value===null)return new Bt(It.LITERAL_NULL,null);if(t==="boolean")return new Bt(It.LITERAL_BOOLEAN,e.value);if(t==="number")return new Bt(It.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Bt(It.VARIABLE_IN_STRING,e.value):new Bt(It.LITERAL_STRING,X6(e.value))}function n2e(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new ce(`${o} is not a function.`);return i===0?o==="test"?new Bt(It.LITERAL_BOOLEAN,!1):new Bt(It.LITERAL_NULL,null):(s=Ni(e,c),a=Ni(e,n[0]),new Bt(It.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Ni(e,c),new Bt(It.FUNCTION_CALL,o,r);throw new ce(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Bt(It.LITERAL_COLOR,o);if(r=Ni(e,n[0]),l(n[1])){let c=Ni(e,n[1]);return new Bt(It.LITERAL_COLOR,o,[r,c])}return new Bt(It.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new ce(`${o} requires three arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new ce(`${o} requires four arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2]),Ni(e,n[3])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Ni(e,n[c]);return new Bt(It.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Bt(It.LITERAL_BOOLEAN,!0):new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new ce(`${o} does not take any argument.`);return new Bt(It.UNARY,o)}else if(l(pO[o])){if(i!==1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(l(gO[o])){if(i!==2)throw new ce(`${o} requires exactly two arguments.`);return s=Ni(e,n[0]),a=Ni(e,n[1]),new Bt(It.BINARY,o,s,a)}else if(l(J6[o])){if(i!==3)throw new ce(`${o} requires exactly three arguments.`);s=Ni(e,n[0]),a=Ni(e,n[1]);let c=Ni(e,n[2]);return new Bt(It.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="Number")return i===0?new Bt(It.LITERAL_NUMBER,0):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="String")return i===0?new Bt(It.LITERAL_STRING,""):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="regExp")return i2e(e,t)}}throw new ce(`Unexpected function call "${o}".`)}function i2e(e,t){let n=t.arguments;if(n.length===0)return new Bt(It.LITERAL_REGEX,new RegExp);let i=Ni(e,n[0]),o;if(n.length>1){let r=Ni(e,n[1]);if(K6(i)&&K6(r)){try{o=new RegExp(X6(String(i._value)),r._value)}catch(s){throw new ce(s)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i,r)}if(K6(i)){try{o=new RegExp(X6(String(i._value)))}catch(r){throw new ce(r)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i)}function o2e(e){if(c2e(e.name)){let t=l2e(e.name);return t.substr(0,8)==="tiles3d_"?new Bt(It.BUILTIN_VARIABLE,t):new Bt(It.VARIABLE,t)}else{if(e.name==="NaN")return new Bt(It.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Bt(It.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Bt(It.LITERAL_UNDEFINED,void 0)}throw new ce(`${e.name} is not defined.`)}function r2e(e){let t=e.property.name;if(t==="PI")return new Bt(It.LITERAL_NUMBER,Math.PI);if(t==="E")return new Bt(It.LITERAL_NUMBER,Math.E)}function s2e(e){if(e.property.name==="POSITIVE_INFINITY")return new Bt(It.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function a2e(e,t){if(t.object.name==="Math")return r2e(t);if(t.object.name==="Number")return s2e(t);let n,i=Ni(e,t.object);return t.computed?(n=Ni(e,t.property),new Bt(It.MEMBER,"brackets",i,n)):(n=new Bt(It.LITERAL_STRING,t.property.name),new Bt(It.MEMBER,"dot",i,n))}function K6(e){return e._type>=It.LITERAL_NULL}function c2e(e){return e.substr(0,4)==="czm_"}function l2e(e){return e.substr(4)}function Ni(e,t){let n,i,o,r;if(t.type==="Literal")n=t2e(t);else if(t.type==="CallExpression")n=n2e(e,t);else if(t.type==="Identifier")n=o2e(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Ni(e,t.argument);if(UFe.indexOf(i)>-1)n=new Bt(It.UNARY,i,s);else throw new ce(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1)n=new Bt(It.BINARY,i,o,r);else throw new ce(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1&&(n=new Bt(It.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Ni(e,t.test);o=Ni(e,t.consequent),r=Ni(e,t.alternate),n=new Bt(It.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=a2e(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Ni(e,t.elements[a]);n=new Bt(It.ARRAY,s)}else throw t.type==="Compound"?new ce("Provide exactly one expression."):new ce("Cannot parse expression.");return n}function u2e(e){e._type===It.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===It.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===It.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(pO[e._value])&&(e.evaluate=d2e(e._value)):e._type===It.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(gO[e._value])&&(e.evaluate=h2e(e._value)):e._type===It.TERNARY?e.evaluate=m2e(e._value):e._type===It.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===It.ARRAY?e.evaluate=e._evaluateArray:e._type===It.VARIABLE?e.evaluate=e._evaluateVariable:e._type===It.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===It.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===It.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===It.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===It.REGEX?e.evaluate=e._evaluateRegExp:e._type===It.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=f2e):e.evaluate=e._evaluateLiteral}function f2e(e){return l(e)?e.content.tileset.timeSinceLoad:0}function d2e(e){let t=pO[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function h2e(e){let t=gO[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function m2e(e){let t=J6[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function _O(e,t){if(l(e))return e.getPropertyInherited(t)}Bt.prototype._evaluateLiteral=function(){return this._value};Bt.prototype._evaluateLiteralColor=function(e){let t=AO,n=this._left;if(this._value==="color")l(n)?n.length>1?(G.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):G.fromCssColorString(n[0].evaluate(e),t):G.fromBytes(255,255,255,255,t);else if(this._value==="rgb")G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return se.fromColor(t,Un.getCartesian4())};Bt.prototype._evaluateLiteralVector=function(e){let t=Un.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof k)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof se)t.push(c.x,c.y,c.z,c.w);else throw new ce(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new ce(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new ce(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new ce(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return k.fromArray(t,0,Un.getCartesian2());if(n==="vec3")return d.fromArray(t,0,Un.getCartesian3());if(n==="vec4")return se.fromArray(t,0,Un.getCartesian4())};Bt.prototype._evaluateLiteralString=function(){return this._value};Bt.prototype._evaluateVariableString=function(e){let t=this._value,n=Hw.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=_O(e,o);l(r)||(r=""),t=t.replace(i,r),Hw.lastIndex+=r.length-i.length,n=Hw.exec(t)}return t};Bt.prototype._evaluateVariable=function(e){return _O(e,this._value)};function RC(e){return e._value==="feature"}Bt.prototype._evaluateMemberDot=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Bt.prototype._evaluateMemberBrackets=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Bt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Bt.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Bt.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof k)return k.negate(t,Un.getCartesian2());if(t instanceof d)return d.negate(t,Un.getCartesian3());if(t instanceof se)return se.negate(t,Un.getCartesian4());if(typeof t=="number")return-t;throw new ce(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Bt.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof k||t instanceof d||t instanceof se||typeof t=="number"))throw new ce(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Bt.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Bt.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Bt.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Bt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Bt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Bt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Bt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.add(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.add(t,n,Un.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new ce(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.subtract(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.subtract(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new ce(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.multiplyComponents(t,n,Un.getCartesian2());if(n instanceof k&&typeof t=="number")return k.multiplyByScalar(n,t,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.multiplyByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,Un.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.multiplyComponents(t,n,Un.getCartesian4());if(n instanceof se&&typeof t=="number")return se.multiplyByScalar(n,t,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.multiplyByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new ce(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.divideComponents(t,n,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.divideByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.divideComponents(t,n,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.divideByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new ce(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.fromElements(t.x%n.x,t.y%n.y,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new ce(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?t.equals(n):t===n};Bt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?!t.equals(n):t!==n};Bt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new ce(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Bt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Bt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Bt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Bt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Bt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Bt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Bt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new ce(o)}return i};Bt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Bt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new ce(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new ce(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Bt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof k||t instanceof d||t instanceof se)return String(t);throw new ce(`Unexpected function call "${this._value}".`)};function Ooe(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==It.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return G.fromHsl(i,o,r,s,AO)}function Foe(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==It.LITERAL_NUMBER)return;let i=AO;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function kg(e){return e%1===0?e.toFixed(1):e.toString()}function A2e(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue);return`vec3(${t}, ${n}, ${i})`}function mO(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue),o=kg(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Qoe(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function koe(e,t){return l(t[e])?t[e]:Vd.NULL_SENTINEL}Vd.NULL_SENTINEL="czm_infinity";Bt.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Qoe(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Qoe(this._value,e,t,this));let u,f,h;switch(a){case It.VARIABLE:return RC(this)?void 0:koe(c,e);case It.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(pO[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new ce(`Error generating style shader: "${c}" is not supported.`);return c+o;case It.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(gO[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case It.TERNARY:if(l(J6[c]))return`${c}(${o}, ${r}, ${s})`;break;case It.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case It.MEMBER:return RC(this._left)?koe(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case It.FUNCTION_CALL:throw new ce(`Error generating style shader: "${c}" is not supported.`);case It.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new ce("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case It.REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.VARIABLE_IN_STRING:throw new ce("Error generating style shader: Converting a variable to a string is not supported.");case It.LITERAL_NULL:return Vd.NULL_SENTINEL;case It.LITERAL_BOOLEAN:return c?"true":"false";case It.LITERAL_NUMBER:return kg(c);case It.LITERAL_STRING:if(l(n)&&n._type===It.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||RC(n._left)))return c;if(i=G.fromCssColorString(c,AO),l(i))return A2e(i);throw new ce("Error generating style shader: String literals are not supported.");case It.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let A=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${A}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Ooe(this),l(i)?mO(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Ooe(this),l(i)?(i.alpha!==1&&(t.translucent=!0),mO(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case It.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let A=0;A<f;++A)h+=o[A],A<f-1&&(h+=", ");return h+=")",h;case It.LITERAL_REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.LITERAL_UNDEFINED:return Vd.NULL_SENTINEL;case It.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Bt.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case It.VARIABLE:RC(this)||e.push(s);break;case It.VARIABLE_IN_STRING:for(a=Hw.exec(s);a!==null;)e.push(a[1]),a=Hw.exec(s);break;case It.LITERAL_STRING:l(t)&&t._type===It.MEMBER&&RC(t._left)&&e.push(s);break}};var Hd=Vd;function XA(e){e=e??V.EMPTY_OBJECT,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=e.center??d.ZERO,this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=e.classificationType??Jn.BOTH,this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(XA.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var p2e={position:0,a_batchId:1};function g2e(e,t){if(l(e._va))return;let n=Et.createVertexBuffer({context:t,typedArray:e._positions,usage:Qe.STATIC_DRAW}),i=Et.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:Qe.STATIC_DRAW}),o=Et.createIndexBuffer({context:t,typedArray:e._indices,usage:Qe.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:q.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:q.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new li({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new li({context:t,attributes:r,indexBuffer:Et.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:Qe.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function _2e(e,t){if(l(e._sp))return;let n=e._batchTable,i=e._attributeLocations??p2e,o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=We.replaceMain(s,"czm_non_pick_main"),s=`${s}void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`,e._spPick=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(Vw),c=n.getFragmentShaderCallback(!1,void 0,!0)(IC);o=n.getPickId();let u=new We({sources:[a]}),f=new We({defines:["VECTOR_TILE"],sources:[c]});e._sp=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new We({sources:[Vw]}),f=new We({defines:["VECTOR_TILE"],sources:[IC]}),e._spStencil=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=We.replaceMain(c,"czm_non_pick_main"),c=`${c} +void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`;let h=new We({sources:[a]}),A=new We({defines:["VECTOR_TILE"],sources:[c]});e._spPick=ln.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:i})}function Uoe(e){let t=e?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:t,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var y2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},C2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function E2e(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ue.fromCache(Uoe(!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(Uoe(!0)),e._rsColorPass=Ue.fromCache(y2e),e._rsPickPass=Ue.fromCache(C2e))}var MC=new R,Goe=new d;function I2e(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return R.clone(i,MC),R.multiplyByPoint(MC,e._center,Goe),R.setTranslation(MC,Goe,MC),R.multiply(o,MC,MC),MC},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function Z6(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h],m=new e.constructor(e.buffer,a*A,g);t.set(m,n),i[h]=n,n+=g}return n}function x2e(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=Z6(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(G.equals(f.color,a.color))u=Z6(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=Z6(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function $6(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h];t.copyFromBuffer(e,A*a,n*a,g*a),i[h]=n,n+=g}return n}function b2e(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=$6(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(G.equals(h.color,r.color))u=$6(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let A=u;u=$6(a,c,u,n,i,h.batchIds,o),h.offset=A,h.count=u-A,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function T2e(e,t){return t.color.toRgba()-e.color.toRgba()}function S2e(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(T2e),t.webgl2?b2e(e,n):x2e(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function w2e(e,t){let n=S2e(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=e._modelMatrix??R.IDENTITY,f=e._uniformMap,h=e._boundingVolume;for(let A=0;A<r;++A){let g=o[A].offset,m=o[A].count,_=i[A*2];l(_)||(_=i[A*2]=new nt({owner:e})),_.vertexArray=a,_.modelMatrix=u,_.offset=g,_.count=m,_.renderState=e._rsStencilDepthPass,_.shaderProgram=c,_.uniformMap=f,_.boundingVolume=h,_.cull=!1,_.pass=Be.TERRAIN_CLASSIFICATION;let y=nt.shallowClone(_,_.derivedCommands.tileset);y.renderState=e._rsStencilDepthPass3DTiles,y.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,_.derivedCommands.tileset=y;let C=i[A*2+1];l(C)||(C=i[A*2+1]=new nt({owner:e})),C.vertexArray=a,C.modelMatrix=u,C.offset=g,C.count=m,C.renderState=e._rsColorPass,C.shaderProgram=c,C.uniformMap=f,C.boundingVolume=h,C.cull=!1,C.pass=Be.TERRAIN_CLASSIFICATION;let E=nt.shallowClone(C,C.derivedCommands.tileset);E.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,C.derivedCommands.tileset=E}e._commandsDirty=!0}function B2e(e,t){if(e.classificationType===Jn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=nt.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function D2e(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=e._modelMatrix??R.IDENTITY,a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,A=n[c*2];l(A)||(A=n[c*2]=new nt({owner:e,pickOnly:!0})),A.vertexArray=i,A.modelMatrix=s,A.offset=u,A.count=f,A.renderState=e._rsStencilDepthPass,A.shaderProgram=o,A.uniformMap=a,A.boundingVolume=h,A.pass=Be.TERRAIN_CLASSIFICATION;let g=nt.shallowClone(A,A.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,A.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new nt({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=Be.TERRAIN_CLASSIFICATION;let _=nt.shallowClone(m,m.derivedCommands.tileset);_.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=_}e._pickCommandsDirty=!1}XA.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};XA.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function v2e(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=G.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=G.clone(G.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var P2e=new G,R2e=G.WHITE,M2e=!0,N2e=/\$/;XA.prototype.applyStyle=function(e,t){if(!l(e)){v2e(this,t);return}let n=e.color,i=n instanceof Hd&&!N2e.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,P2e):R2e,c.show=l(e.show)?e.show.evaluate(c):M2e}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=G.clone(G.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};XA.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let _=c[f].offset,y=c[f].count;if(s>=_&&s<_+y)break}c.push(new KA({color:G.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],A=[],g=c[f].batchIds,m=g.length;for(let _=0;_<m;++_){let y=g[_];if(y===e)continue;let C=n[y];o[C]<s?h.push(y):A.push(y)}A.length!==0&&c.push(new KA({color:G.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:A})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function zoe(e,t,n,i){let o=e.classificationType,r=o!==Jn.CESIUM_3D_TILE,s=o!==Jn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=Be.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function L2e(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=Be.OPAQUE,n.push(r)}}function O2e(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ue.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Me.LINES):(n=e._rsColorPass,i=Me.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}XA.prototype.update=function(e){let t=e.context;g2e(this,t),_2e(this,t),E2e(this),I2e(this,t);let n=e.passes;n.render&&(w2e(this,t),B2e(this,e),O2e(this),this._debugWireframe?L2e(e,this._commands):zoe(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(D2e(this),zoe(this,e,this._pickCommands))};XA.prototype.isDestroyed=function(){return!1};XA.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var HI=XA;function wu(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(wu.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});wu.packedBoxLength=R.packedLength+d.packedLength;wu.packedCylinderLength=R.packedLength+2;wu.packedEllipsoidLength=R.packedLength+d.packedLength;wu.packedSphereLength=d.packedLength+1;function F2e(e){let t=new Float64Array(R.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,R.pack(e._modelMatrix,t,n),t}function Q2e(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=le.unpack(t,n),n+=le.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=G.unpack(t,n);n+=G.packedLength;let f=t[n++],h=t[n++],A=t[n++],g=new Array(A);for(let m=0;m<A;++m)g[m]=t[n++];a[c]=new KA({color:u,offset:f,count:h,batchIds:g})}return i}var k2e=new mi("createVectorTileGeometries",5),U2e=new G;function G2e(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let _=e._batchTable;for(let y=0;y<m;++y){let C=_.getColor(y,U2e);u[y]=C.toRgba()}f=e._packedBuffer=F2e(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let A={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=k2e.scheduleTask(A,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let _=new Float64Array(m.packedBuffer);Q2e(e,_)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),z2e(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function z2e(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}wu.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};wu.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};wu.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};wu.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};wu.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=G2e(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};wu.prototype.isDestroyed=function(){return!1};wu.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Ug=wu;function _m(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,W2e(this,i,o)}Object.defineProperties(_m.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function V2e(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function H2e(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,u=e.ELLIPSOIDS_LENGTH??0,f=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),A=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&A)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var NC=Uint32Array.BYTES_PER_ELEMENT;function W2e(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=NC;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=NC;let s=o.getUint32(n,!0);if(n+=NC,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=NC,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=NC;let u=o.getUint32(n,!0);n+=NC;let f=o.getUint32(n,!0);n+=NC;let h=yr(i,n,a);n+=a;let A=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=yr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let _=h.BOXES_LENGTH??0,y=h.CYLINDERS_LENGTH??0,C=h.ELLIPSOIDS_LENGTH??0,E=h.SPHERES_LENGTH??0,I=_+y+C+E,b=new Fg(e,I,g,m,V2e(e));if(e._batchTable=b,I===0)return;let S=e.tile.computedTransform,B;l(h.RTC_CENTER)&&(B=d.unpack(h.RTC_CENTER),R.multiplyByPoint(S,B,B));let v=H2e(h,A);if(_>0||y>0||C>0||E>0){let P,N,L,p;if(_>0){let x=A.byteOffset+h.BOXES.byteOffset;P=new Float32Array(A.buffer,x,Ug.packedBoxLength*_)}if(y>0){let x=A.byteOffset+h.CYLINDERS.byteOffset;N=new Float32Array(A.buffer,x,Ug.packedCylinderLength*y)}if(C>0){let x=A.byteOffset+h.ELLIPSOIDS.byteOffset;L=new Float32Array(A.buffer,x,Ug.packedEllipsoidLength*C)}if(E>0){let x=A.byteOffset+h.SPHERES.byteOffset;p=new Float32Array(A.buffer,x,Ug.packedSphereLength*E)}return e._geometries=new Ug({boxes:P,boxBatchIds:v.boxes,cylinders:N,cylinderBatchIds:v.cylinders,ellipsoids:L,ellipsoidBatchIds:v.ellipsoids,spheres:p,sphereBatchIds:v.spheres,center:B,modelMatrix:S,batchTable:b,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function Voe(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}_m.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};_m.prototype.getFeature=function(e){return Voe(this),this._features[e]};_m.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};_m.prototype.applyStyle=function(e){Voe(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};_m.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};_m.prototype.pick=function(e,t,n){};_m.prototype.isDestroyed=function(){return!1};_m.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var yO=_m;var eW={};eW.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),Hoe(i,o,r,s);return c};eW.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),Hoe(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function Hoe(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var Ww=eW;var LC=30,j2e=1<<LC,Y2e=1<<LC+1>>>0,tW=2*LC+1,Gg=4,Yoe=[],qoe=[],q2e=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],zg=1,WI=2,CO=[zg,0,0,zg|WI];function us(e){if(!jt.supportsBigInt())throw new ce("S2 required BigInt support");this._cellId=e,this._level=us.getLevel(e)}us.fromToken=function(e){return new us(us.getIdFromToken(e))};us.isValidId=function(e){return!(e<=0||e>>BigInt(tW)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};us.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?us.isValidId(us.getIdFromToken(e)):!1};us.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};us.getTokenFromId=function(e){let t=Math.floor(oQe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};us.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return LC-(t>>1)};us.prototype.getChild=function(e){let t=Joe(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new us(n)};us.prototype.getParent=function(){let e=Joe(this._cellId)<<BigInt(2);return new us(this._cellId&~e+BigInt(1)|e)};us.prototype.getParentAtLevel=function(e){let t=nQe(e);return new us(this._cellId&-t|t)};us.prototype.getCenter=function(e){e=e??te.WGS84;let t=K2e(this._cellId,this._level);t=d.normalize(t,t);let n=new Ae.fromCartesian(t,te.UNIT_SPHERE);return Ae.toCartesian(n,e,new d)};us.prototype.getVertex=function(e,t){t=t??te.WGS84;let n=X2e(this._cellId,this._level,e);n=d.normalize(n,n);let i=new Ae.fromCartesian(n,te.UNIT_SPHERE);return Ae.toCartesian(i,t,new d)};us.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(tW-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new us(a)};function K2e(e,t){let n=J2e(e,t);return Z2e(n[0],n[1],n[2])}function X2e(e,t,n){let i=Koe(e,t),o=$2e([i[1],i[2]],t),r=n>>1&1;return Xoe(i[0],o[0][r^n&1],o[1][r])}function J2e(e,t){let n=Koe(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function Koe(e){Yoe.length===0&&tQe();let t=Number(e>>BigInt(tW)),n=t&zg,i=(1<<Gg)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?LC-7*Gg:Gg))-1;n+=Number(e>>BigInt(s*2*Gg+1)&BigInt(c))<<2,n=qoe[n];let u=s*Gg;o+=n>>Gg+2<<u,r+=(n>>2&i)<<u,n&=zg|WI}return[t,o,r]}function Z2e(e,t,n){let i=Woe(t),o=Woe(n),r=EO(i),s=EO(o);return Xoe(e,r,s)}function Xoe(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function EO(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function Woe(e){return 1/Y2e*e}function $2e(e,t){let n=[[],[]],i=eQe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=EO(joe(r)),n[o][1]=EO(joe(s))}return n}function eQe(e){return 1<<LC-e>>>0}function joe(e){return 1/j2e*e}function Vg(e,t,n,i,o,r){if(e===Gg){let s=(t<<Gg)+n;Yoe[(s<<2)+i]=(o<<2)+r,qoe[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=q2e[r];Vg(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^CO[0]),Vg(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^CO[1]),Vg(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^CO[2]),Vg(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^CO[3])}}function tQe(){Vg(0,0,0,0,0,0),Vg(0,0,0,zg,0,zg),Vg(0,0,0,WI,0,WI),Vg(0,0,0,zg|WI,0,zg|WI)}function Joe(e){return e&~e+BigInt(1)}function nQe(e){return BigInt(1)<<BigInt(2*(LC-e))}var iQe=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function oQe(e){return iQe[(-e&e)%BigInt(67)]}var Hg=us;function rQe(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var Ii=rQe;function nW(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new ce(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=e.computeAvailableCountEnabled??!1;!l(n)&&s&&(n=sQe(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function sQe(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(nW.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});nW.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var jw=nW;function JA(e){e=e??V.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(JA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});JA.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};JA.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};JA.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};JA.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};JA.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};JA.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};JA.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var Yw=JA;var IO={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};IO.getBranchingFactor=function(e){switch(e){case IO.OCTREE:return 8;case IO.QUADTREE:return 4}};var Ts=Object.freeze(IO);function wa(){}Object.defineProperties(wa.prototype,{class:{get:function(){me.throwInstantiationError()}}});wa.prototype.hasProperty=function(e){me.throwInstantiationError()};wa.prototype.hasPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.getPropertyIds=function(e){me.throwInstantiationError()};wa.prototype.getProperty=function(e){me.throwInstantiationError()};wa.prototype.setProperty=function(e,t){me.throwInstantiationError()};wa.prototype.getPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.setPropertyBySemantic=function(e,t){me.throwInstantiationError()};wa.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};wa.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};wa.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};wa.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ze(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};wa.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};wa.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return wa.getProperty(o.id,t,n)};wa.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?wa.setProperty(r.id,t,n,i):!1};var Yn=wa;function ZA(e){e=e??V.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(ZA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ZA.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};ZA.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};ZA.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};ZA.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};ZA.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xO=ZA;var Gt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Gt.getMinimum=function(e){switch(e){case Gt.INT8:return-128;case Gt.UINT8:return 0;case Gt.INT16:return-32768;case Gt.UINT16:return 0;case Gt.INT32:return-2147483648;case Gt.UINT32:return 0;case Gt.INT64:return jt.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Gt.UINT64:return jt.supportsBigInt()?BigInt(0):0;case Gt.FLOAT32:return-34028234663852886e22;case Gt.FLOAT64:return-Number.MAX_VALUE}};Gt.getMaximum=function(e){switch(e){case Gt.INT8:return 127;case Gt.UINT8:return 255;case Gt.INT16:return 32767;case Gt.UINT16:return 65535;case Gt.INT32:return 2147483647;case Gt.UINT32:return 4294967295;case Gt.INT64:return jt.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Gt.UINT64:return jt.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Gt.FLOAT32:return 34028234663852886e22;case Gt.FLOAT64:return Number.MAX_VALUE}};Gt.isIntegerType=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.INT64:case Gt.UINT64:return!0;default:return!1}};Gt.isUnsignedIntegerType=function(e){switch(e){case Gt.UINT8:case Gt.UINT16:case Gt.UINT32:case Gt.UINT64:return!0;default:return!1}};Gt.isVectorCompatible=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.FLOAT32:case Gt.FLOAT64:return!0;default:return!1}};Gt.normalize=function(e,t){return Math.max(Number(e)/Number(Gt.getMaximum(t)),-1)};Gt.unnormalize=function(e,t){let n=Gt.getMaximum(t),i=Gt.isUnsignedIntegerType(t)?0:-n;return e=D.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Gt.INT64||t===Gt.UINT64)&&jt.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Gt.applyValueTransform=function(e,t,n){return n*e+t};Gt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Gt.getSizeInBytes=function(e){switch(e){case Gt.INT8:case Gt.UINT8:return 1;case Gt.INT16:case Gt.UINT16:return 2;case Gt.INT32:case Gt.UINT32:return 4;case Gt.INT64:case Gt.UINT64:return 8;case Gt.FLOAT32:return 4;case Gt.FLOAT64:return 8}};Gt.fromComponentDatatype=function(e){switch(e){case q.BYTE:return Gt.INT8;case q.UNSIGNED_BYTE:return Gt.UINT8;case q.SHORT:return Gt.INT16;case q.UNSIGNED_SHORT:return Gt.UINT16;case q.INT:return Gt.INT32;case q.UNSIGNED_INT:return Gt.UINT32;case q.FLOAT:return Gt.FLOAT32;case q.DOUBLE:return Gt.FLOAT64}};Gt.toComponentDatatype=function(e){switch(e){case Gt.INT8:return q.BYTE;case Gt.UINT8:return q.UNSIGNED_BYTE;case Gt.INT16:return q.SHORT;case Gt.UINT16:return q.UNSIGNED_SHORT;case Gt.INT32:return q.INT;case Gt.UINT32:return q.UNSIGNED_INT;case Gt.FLOAT32:return q.FLOAT;case Gt.FLOAT64:return q.DOUBLE}};var zt=Object.freeze(Gt);var Jo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};Jo.isVectorType=function(e){switch(e){case Jo.VEC2:case Jo.VEC3:case Jo.VEC4:return!0;default:return!1}};Jo.isMatrixType=function(e){switch(e){case Jo.MAT2:case Jo.MAT3:case Jo.MAT4:return!0;default:return!1}};Jo.getComponentCount=function(e){switch(e){case Jo.SCALAR:case Jo.STRING:case Jo.ENUM:case Jo.BOOLEAN:return 1;case Jo.VEC2:return 2;case Jo.VEC3:return 3;case Jo.VEC4:return 4;case Jo.MAT2:return 4;case Jo.MAT3:return 9;case Jo.MAT4:return 16}};Jo.getMathType=function(e){switch(e){case Jo.VEC2:return k;case Jo.VEC3:return d;case Jo.VEC4:return se;case Jo.MAT2:return Wi;case Jo.MAT3:return J;case Jo.MAT4:return R;default:return}};var gt=Object.freeze(Jo);function $a(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&zt.isIntegerType(i)&&(e.normalized??!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=e.isArray??!1,this._isVariableLengthArray=e.isVariableLengthArray??!1,this._arrayLength=e.arrayLength,this._min=ze(e.min,!0),this._max=ze(e.max,!0),this._normalized=r;let s=ze(e.offset,!0),a=ze(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=ze(e.noData,!0),this._default=ze(e.default,!0),this._required=e.required??!0,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}$a.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.property,i=aQe(n),o=cQe(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=n.required??!1:r=!1,new $a({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties($a.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function aQe(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===gt.SCALAR||gt.isMatrixType(t)||gt.isVectorType(t))return!1;if(l(zt[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function cQe(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===gt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===gt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.SCALAR||gt.isMatrixType(n)||gt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.BOOLEAN||n===gt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===gt.BOOLEAN||i===gt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(zt[i]))return{type:gt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(zt[n]))return{type:gt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}$a.prototype.normalize=function(e){return this._normalized?iW(e,this._valueType,zt.normalize):e};$a.prototype.unnormalize=function(e){return this._normalized?iW(e,this._valueType,zt.unnormalize):e};$a.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.applyValueTransform)};$a.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.unapplyValueTransform)};$a.prototype.expandConstant=function(e,t){t=t??!1;let n=this._isArray,i=this._arrayLength,o=gt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};$a.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!tre(e,t))return e};function tre(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!tre(e[n],t[n]))return!1;return!0}$a.prototype.unpackVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};$a.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};$a.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?lQe(this,e):nre(this,e)};function lQe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=nre(e,t[i]);if(l(o))return o}}function nre(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return gt.isVectorType(n)?uQe(t,n,i):gt.isMatrixType(n)?fQe(t,n,i):n===gt.STRING?dQe(t):n===gt.BOOLEAN?hQe(t):n===gt.ENUM?mQe(t,o):AQe(t,i,r)}function uQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===gt.VEC2&&!(e instanceof k))return`vector value ${e} must be a Cartesian2`;if(t===gt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===gt.VEC4&&!(e instanceof se))return`vector value ${e} must be a Cartesian4`}function fQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===gt.MAT2&&!(e instanceof Wi))return`matrix value ${e} must be a Matrix2`;if(t===gt.MAT3&&!(e instanceof J))return`matrix value ${e} must be a Matrix3`;if(t===gt.MAT4&&!(e instanceof R))return`matrix value ${e} must be a Matrix4`}function dQe(e){if(typeof e!="string")return bO(e,gt.STRING)}function hQe(e){if(typeof e!="boolean")return bO(e,gt.BOOLEAN)}function mQe(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function AQe(e,t,n){let i=typeof e;switch(t){case zt.INT8:case zt.UINT8:case zt.INT16:case zt.UINT16:case zt.INT32:case zt.UINT32:case zt.FLOAT32:case zt.FLOAT64:return i!=="number"?bO(e,t):isFinite(e)?$oe(e,t,n):ere(e,t);case zt.INT64:case zt.UINT64:return i!=="number"&&i!=="bigint"?bO(e,t):i==="number"&&!isFinite(e)?ere(e,t):$oe(e,t,n)}}function bO(e,t){return`value ${e} does not match type ${t}`}function Zoe(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function $oe(e,t,n){if(n){let i=zt.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?Zoe(e,t,n):void 0}if(e<zt.getMinimum(t)||e>zt.getMaximum(t))return Zoe(e,t,n)}function ere(e,t){return`value ${e} of type ${t} must be finite`}function iW(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=iW(e[i],t,n);return e}$a.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=$a.valueTransformInPlace(e[o],t[o],n[o],i);return e};var $A=$a;function qw(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===gt.STRING,h=r===gt.BOOLEAN,A=0,g;if(a){let p=n.arrayOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.arrayOffsets??n.arrayOffsetBufferView;g=new oW(o[x],p,t+1),A+=g.typedArray.byteLength}let m=gt.getComponentCount(r),_;a?_=g.get(t)-g.get(0):s?_=t*i.arrayLength:_=t;let y=m*_,C;if(f){let p=n.stringOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.stringOffsets??n.stringOffsetBufferView;C=new oW(o[x],p,y+1),A+=C.typedArray.byteLength}(f||h)&&(c=zt.UINT8);let E;f?E=C.get(y)-C.get(0):h?E=Math.ceil(y/8):E=y;let I=n.values??n.bufferView,b=new oW(o[I],c,E);A+=b.typedArray.byteLength;let S=n.offset,B=n.scale,v=i.hasValueTransform||l(S)||l(B);S=S??i.offset,B=B??i.scale,S=ire(S),B=ire(B);let P,N,L=this;f?P=function(p){return _Qe(p,L._values,L._stringOffsets)}:h?(P=function(p){return yQe(p,L._values)},N=function(p,x){CQe(p,L._values,x)}):l(u)?(P=function(p){let x=L._values.get(p);return u.namesByValue[x]},N=function(p,x){let T=u.valuesByName[x];L._values.set(p,T)}):(P=function(p){return L._values.get(p)},N=function(p,x){L._values.set(p,x)}),this._arrayOffsets=g,this._stringOffsets=C,this._values=b,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=S,this._scale=B,this._hasValueTransform=v,this._getValue=P,this._setValue=N,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=A}Object.defineProperties(qw.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});qw.prototype.get=function(e){let t=pQe(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=BQe(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};qw.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=DQe(this,t),t=n.unnormalize(t),gQe(this,e,t)};qw.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function ire(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?si(t,i):t.push(i)}return t}function pQe(e,t){rre(e)&&sre(e);let n=e._classProperty,i=n.isArray,o=n.type,r=gt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?ze(s,!0):s}return!i&&r===1?e._getValue(t):ore(e,n,t)}function ore(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=gt.getComponentCount(t.type);i*=s,o*=s}else{let a=(t.arrayLength??1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function gQe(e,t,n){SQe(e,t,n)&&sre(e);let i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=ze(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=(i.arrayLength??1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function _Qe(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return Tu(t.typedArray,i,o)}function yQe(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function CQe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function EQe(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function IQe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function xQe(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function bQe(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function TQe(e){switch(e){case zt.INT8:return q.BYTE;case zt.UINT8:return q.UNSIGNED_BYTE;case zt.INT16:return q.SHORT;case zt.UINT16:return q.UNSIGNED_SHORT;case zt.INT32:return q.INT;case zt.UINT32:return q.UNSIGNED_INT;case zt.FLOAT32:return q.FLOAT;case zt.FLOAT64:return q.DOUBLE}}function rre(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===gt.STRING||i===zt.INT64&&!jt.supportsBigInt64Array()||i===zt.UINT64&&!jt.supportsBigUint64Array()}function SQe(e,t,n){if(rre(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function sre(e){e._unpackedValues=wQe(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function wQe(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=ore(e,i,a);return n}function BQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.applyValueTransform)}function DQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.unapplyValueTransform)}function oW(e,t,n){let i=this,o,r,s;if(t===zt.INT64)jt.supportsBigInt()?jt.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return IQe(a,i)}):(yt("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return EQe(a,i)});else if(t===zt.UINT64)jt.supportsBigInt()?jt.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return bQe(a,i)}):(yt("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return xQe(a,i)});else{let a=TQe(t);o=q.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var TO=qw;function Wd(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new TO({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(Wd.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});Wd.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Wd.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Wd.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Wd.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=vQe(this._class,t),i};Wd.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};Wd.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};Wd.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};Wd.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};Wd.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function vQe(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=ze(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var jd=Wd;function Wg(){}Object.defineProperties(Wg.prototype,{cacheKey:{get:function(){me.throwInstantiationError()}}});Wg.prototype.load=function(){me.throwInstantiationError()};Wg.prototype.unload=function(){};Wg.prototype.process=function(e){return!1};Wg.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=` +${t.message}`);let n=new ce(e);return l(t)&&(n.stack=`Original stack: +${t.stack} +Handler stack: +${n.stack}`),n};Wg.prototype.isDestroyed=function(){return!1};Wg.prototype.destroy=function(){return this.unload(),ue(this)};var qi=Wg;var PQe={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},dt=Object.freeze(PQe);function ep(e){e=e??V.EMPTY_OBJECT;let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(ep.prototype=Object.create(qi.prototype),ep.prototype.constructor=ep);Object.defineProperties(ep.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});ep.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=RQe(this),this._promise)};async function RQe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await ep._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}ep._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};ep.prototype.unload=function(){this._typedArray=void 0};var jI=ep;var Qen=function(){var e="b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),_=0;_<g.length;++_){var y=g.charCodeAt(_);m[_]=y>96?y-97:y>64?y-39:y+4}for(var C=0,_=0;_<g.length;++_)m[C++]=m[_]<60?t[m[_]]:(m[_]-60)*64+m[++_];return m.buffer.slice(0,C)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,_,y){var C=n.exports.sbrk,E=C(m.length*4),I=C(_*4),b=new Uint8Array(n.exports.memory.buffer),S=s(m);b.set(S,E),y&&y(E,E,m.length,_);var B=g(I,E,m.length,_);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(_);new Uint8Array(v.buffer).set(b.subarray(I,I+_*4)),S.set(b.subarray(E,E+m.length*4)),C(E-C(0));for(var P=0;P<m.length;++P)m[P]=v[m[P]];return[v,B]}function c(g,m,_,y){var C=n.exports.sbrk,E=C(_*4),I=C(_*y),b=new Uint8Array(n.exports.memory.buffer);b.set(s(m),I),g(E,I,_,y),b=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return new Uint8Array(S.buffer).set(b.subarray(E,E+_*4)),C(E-C(0)),S}function u(g,m,_,y,C){var E=n.exports.sbrk,I=E(m),b=E(y*C),S=new Uint8Array(n.exports.memory.buffer);S.set(s(_),b);var B=g(I,m,b,y,C),v=new Uint8Array(B);return v.set(S.subarray(I,I+B)),E(I-E(0)),v}function f(g){for(var m=0,_=0;_<g.length;++_){var y=g[_];m=m<y?y:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var _=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(_)}function A(g,m,_,y,C,E,I){var b=n.exports.sbrk,S=b(_*y),B=b(_*E),v=new Uint8Array(n.exports.memory.buffer);v.set(s(m),B),g(S,_,y,C,B,I);var P=new Uint8Array(_*y);return P.set(v.subarray(S,S+_*y)),b(S-b(0)),P}return{ready:i,supported:!0,reorderMesh:function(g,m,_){var y=m?_?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,y)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,_){r(_>0&&_<=256),r(_%4==0);var y=n.exports.meshopt_encodeVertexBufferBound(m,_);return u(n.exports.meshopt_encodeVertexBuffer,y,g,m,_)},encodeIndexBuffer:function(g,m,_){r(_==2||_==4),r(m%3==0);var y=h(g,_),C=n.exports.meshopt_encodeIndexBufferBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexBuffer,C,y,m,4)},encodeIndexSequence:function(g,m,_){r(_==2||_==4);var y=h(g,_),C=n.exports.meshopt_encodeIndexSequenceBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexSequence,C,y,m,4)},encodeGltfBuffer:function(g,m,_,y){var C={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(C[y]),C[y](g,m,_)},encodeFilterOct:function(g,m,_,y){return r(_==4||_==8),r(y>=1&&y<=16),A(n.exports.meshopt_encodeFilterOct,g,m,_,y,16)},encodeFilterQuat:function(g,m,_,y){return r(_==8),r(y>=4&&y<=16),A(n.exports.meshopt_encodeFilterQuat,g,m,_,y,16)},encodeFilterExp:function(g,m,_,y,C){r(_>0&&_%4==0),r(y>=1&&y<=24);var E={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return A(n.exports.meshopt_encodeFilterExp,g,m,_,y,_,C?E[C]:1)}}}();var are=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(C){r=C.instance,r.exports.__wasm_call_ctors()});function a(C){for(var E=new Uint8Array(C.length),I=0;I<C.length;++I){var b=C.charCodeAt(I);E[I]=b>96?b-97:b>64?b-39:b+4}for(var S=0,I=0;I<C.length;++I)E[S++]=E[I]<60?i[E[I]]:(E[I]-60)*64+E[++I];return E.buffer.slice(0,S)}function c(C,E,I,b,S,B,v){var P=C.exports.sbrk,N=b+3&-4,L=P(N*S),p=P(B.length),x=new Uint8Array(C.exports.memory.buffer);x.set(B,p);var T=E(L,b,S,p,B.length);if(T==0&&v&&v(L,N,S),I.set(x.subarray(L,L+b*S)),P(L-P(0)),T!=0)throw new Error("Malformed buffer data: "+T)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],A=0;function g(C){var E={object:new Worker(C),pending:0,requests:{}};return E.object.onmessage=function(I){var b=I.data;E.pending-=b.count,E.requests[b.id][b.action](b.value),delete E.requests[b.id]},E}function m(C){for(var E="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+y.name+";"+c.toString()+y.toString(),I=new Blob([E],{type:"text/javascript"}),b=URL.createObjectURL(I),S=h.length;S<C;++S)h[S]=g(b);for(var S=C;S<h.length;++S)h[S].object.postMessage({});h.length=C,URL.revokeObjectURL(b)}function _(C,E,I,b,S){for(var B=h[0],v=1;v<h.length;++v)h[v].pending<B.pending&&(B=h[v]);return new Promise(function(P,N){var L=new Uint8Array(I),p=++A;B.pending+=C,B.requests[p]={resolve:P,reject:N},B.object.postMessage({id:p,count:C,size:E,source:L,mode:b,filter:S},[L.buffer])})}function y(C){var E=C.data;if(!E.id)return self.close();self.ready.then(function(I){try{var b=new Uint8Array(E.count*E.size);c(I,I.exports[E.mode],b,E.count,E.size,E.source,I.exports[E.filter]),self.postMessage({id:E.id,count:E.count,action:"resolve",value:b},[b.buffer])}catch(S){self.postMessage({id:E.id,count:E.count,action:"reject",value:S})}})}return{ready:s,supported:!0,useWorkers:function(C){m(C)},decodeVertexBuffer:function(C,E,I,b,S){c(r,r.exports.meshopt_decodeVertexBuffer,C,E,I,b,r.exports[u[S]])},decodeIndexBuffer:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexBuffer,C,E,I,b)},decodeIndexSequence:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexSequence,C,E,I,b)},decodeGltfBuffer:function(C,E,I,b,S,B){c(r,r.exports[f[S]],C,E,I,b,r.exports[u[B]])},decodeGltfBufferAsync:function(C,E,I,b,S){return h.length>0?_(C,E,I,f[b],u[S]):s.then(function(){var B=new Uint8Array(C*E);return c(r,r.exports[f[b]],B,C,E,I,r.exports[u[S]]),B})}}}();var Gen=function(){var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,_,y){var C=n.exports.sbrk,E=C(_.length*4),I=C(y*4),b=new Uint8Array(n.exports.memory.buffer),S=s(_);b.set(S,E);var B=m(I,E,_.length,y);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(y);new Uint8Array(v.buffer).set(b.subarray(I,I+y*4)),S.set(b.subarray(E,E+_.length*4)),C(E-C(0));for(var P=0;P<_.length;++P)_[P]=v[_[P]];return[v,B]}function c(m){for(var _=0,y=0;y<m.length;++y){var C=m[y];_=_<C?C:_}return _}function u(m,_,y,C,E,I,b,S,B){var v=n.exports.sbrk,P=v(4),N=v(y*4),L=v(E*I),p=v(y*4),x=new Uint8Array(n.exports.memory.buffer);x.set(s(C),L),x.set(s(_),p);var T=m(N,p,y,L,E,I,b,S,B,P);x=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(T);s(w).set(x.subarray(N,N+T*4));var M=new Float32Array(1);return s(M).set(x.subarray(P,P+4)),v(P-v(0)),[w,M[0]]}function f(m,_,y,C,E,I,b,S,B,v,P,N,L){var p=n.exports.sbrk,x=p(4),T=p(y*4),w=p(E*I),M=p(E*S),O=p(B.length*4),U=p(y*4),Q=v?p(E):0,z=new Uint8Array(n.exports.memory.buffer);z.set(s(C),w),z.set(s(b),M),z.set(s(B),O),z.set(s(_),U),v&&z.set(s(v),Q);var F=m(T,U,y,w,E,I,M,S,O,B.length,Q,P,N,L,x);z=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(F);s(H).set(z.subarray(T,T+F*4));var W=new Float32Array(1);return s(W).set(z.subarray(x,x+4)),p(x-p(0)),[H,W[0]]}function h(m,_,y,C){var E=n.exports.sbrk,I=E(y*C),b=new Uint8Array(n.exports.memory.buffer);b.set(s(_),I);var S=m(I,y,C);return E(I-E(0)),S}function A(m,_,y,C,E,I,b,S){var B=n.exports.sbrk,v=B(S*4),P=B(y*C),N=B(y*I),L=new Uint8Array(n.exports.memory.buffer);L.set(s(_),P),E&&L.set(s(E),N);var p=m(v,P,y,C,N,I,b,S);L=new Uint8Array(n.exports.memory.buffer);var x=new Uint32Array(p);return s(x).set(L.subarray(v,v+p*4)),B(v-B(0)),x}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var _=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,_,c(m)+1)},simplify:function(m,_,y,C,E,I){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C>=0&&C<=m.length),r(C%3==0),r(E>=0);for(var b=0,S=0;S<(I?I.length:0);++S)r(I[S]in g),b|=g[I[S]];var B=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),v=u(n.exports.meshopt_simplify,B,m.length,_,_.length/y,y*4,C,E,b);return v[0]=m instanceof Uint32Array?v[0]:new m.constructor(v[0]),v},simplifyWithAttributes:function(m,_,y,C,E,I,b,S,B,v){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C instanceof Float32Array),r(C.length%E==0),r(E>=0),r(b==null||b instanceof Uint8Array),r(b==null||b.length==_.length/y),r(S>=0&&S<=m.length),r(S%3==0),r(B>=0),r(Array.isArray(I)),r(E>=I.length),r(I.length<=32);for(var P=0;P<I.length;++P)r(I[P]>=0);for(var N=0,P=0;P<(v?v.length:0);++P)r(v[P]in g),N|=g[v[P]];var L=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),p=f(n.exports.meshopt_simplifyWithAttributes,L,m.length,_,_.length/y,y*4,C,E*4,new Float32Array(I),b?new Uint8Array(b):null,S,B,N);return p[0]=m instanceof Uint32Array?p[0]:new m.constructor(p[0]),p},getScale:function(m,_){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),h(n.exports.meshopt_simplifyScale,m,m.length/_,_*4)},simplifyPoints:function(m,_,y,C,E,I){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),r(y>=0&&y<=m.length/_),C?(r(C instanceof Float32Array),r(C.length%E==0),r(E>=3),r(m.length/_==C.length/E),A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,C,E*4,I,y)):A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,void 0,0,0,y)}}}();var Ven=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,_){var y=m.meshlets[_*4+0],C=m.meshlets[_*4+1],E=m.meshlets[_*4+2],I=m.meshlets[_*4+3];return{vertices:m.vertices.subarray(y,y+E),triangles:m.triangles.subarray(C,C+I*3)}}function f(m,_,y,C,E,I,b){var S=n.exports.sbrk,B=n.exports.meshopt_buildMeshletsBound(m.length,E,I),v=S(B*c),P=S(B*E*4),N=S(B*I*3),L=S(m.byteLength),p=S(_.byteLength),x=new Uint8Array(n.exports.memory.buffer);x.set(s(m),L),x.set(s(_),p);var T=n.exports.meshopt_buildMeshlets(v,P,N,L,m.length,p,y,C,E,I,b);x=new Uint8Array(n.exports.memory.buffer);for(var w=x.subarray(v,v+T*c),M=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),O=0;O<T;++O){var U=M[O*4+0],Q=M[O*4+1],y=M[O*4+2],z=M[O*4+3];n.exports.meshopt_optimizeMeshlet(P+U*4,N+Q,z,y)}var F=M[(T-1)*4+0],H=M[(T-1)*4+1],W=M[(T-1)*4+2],Z=M[(T-1)*4+3],Y=F+W,$=H+(Z*3+3&-4),X={meshlets:M,vertices:new Uint32Array(x.buffer,P,Y).slice(),triangles:new Uint8Array(x.buffer,N,$*3).slice(),meshletCount:T};return S(v-S(0)),X}function h(m){var _=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:_[0],centerY:_[1],centerZ:_[2],radius:_[3],coneApexX:_[4],coneApexY:_[5],coneApexZ:_[6],coneAxisX:_[7],coneAxisY:_[8],coneAxisZ:_[9],coneCutoff:_[10]}}function A(m,_,y,C){var E=n.exports.sbrk,I=[],b=E(_.byteLength),S=E(m.vertices.byteLength),B=E(m.triangles.byteLength),v=E(a),P=new Uint8Array(n.exports.memory.buffer);P.set(s(_),b),P.set(s(m.vertices),S),P.set(s(m.triangles),B);for(var N=0;N<m.meshletCount;++N){var L=m.meshlets[N*4+0],p=m.meshlets[N*4+0+1],x=m.meshlets[N*4+0+3];n.exports.meshopt_computeMeshletBounds(v,S+L*4,B+p,x,b,y,C),I.push(h(v))}return E(b-E(0)),I}function g(m,_,y,C){var E=n.exports.sbrk,I=E(a),b=E(m.byteLength),S=E(_.byteLength),B=new Uint8Array(n.exports.memory.buffer);B.set(s(m),b),B.set(s(_),S),n.exports.meshopt_computeClusterBounds(I,b,m.length,S,y,C);var v=h(I);return E(I-E(0)),v}return{ready:i,supported:!0,buildMeshlets:function(m,_,y,C,E,I){r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C<=256||C>0),r(E<=512),r(E%4==0),I=I||0;var b=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(b,_,_.length/y,y*4,C,E,I)},computeClusterBounds:function(m,_,y){r(m.length%3==0),r(m.length/3<=512),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3);var C=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(C,_,_.length/y,y*4)},computeMeshletBounds:function(m,_,y){return r(m.meshletCount!=0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),A(m,_,_.length/y,y*4)},extractMeshlet:function(m,_){return r(_>=0&&_<m.meshletCount),u(m,_)}}}();function OC(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,A,g,m,_;if(Ii(a,"EXT_meshopt_compression")){let C=a.extensions.EXT_meshopt_compression;c=C.buffer,u=C.byteOffset??0,f=C.byteLength,h=!0,A=C.byteStride,g=C.count,m=C.mode,_=C.filter??"NONE"}let y=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=A,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=_,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=y,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(OC.prototype=Object.create(qi.prototype),OC.prototype.constructor=OC);Object.defineProperties(OC.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function MQe(e){try{let t=NQe(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);are.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=dt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load buffer view",t)}}OC.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=MQe(this),this._promise)};function NQe(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}OC.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var Kw=OC;function Kr(){}Kr._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Kr._decoderTaskProcessor=void 0;Kr._taskProcessorReady=!1;Kr._error=void 0;Kr._getDecoderTaskProcessor=function(){if(!l(Kr._decoderTaskProcessor)){let e=new mi("decodeDraco",Kr._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?Kr._taskProcessorReady=!0:Kr._error=new ce("Draco decoder could not be initialized.")}).catch(t=>{Kr._error=t}),Kr._decoderTaskProcessor=e}return Kr._decoderTaskProcessor};Kr.decodePointCloud=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};Kr.decodeBufferView=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var jg=Kr;var zn={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function LQe(e){switch(e){case zn.POSITION:return"positionMC";case zn.NORMAL:return"normalMC";case zn.TANGENT:return"tangentMC";case zn.TEXCOORD:return"texCoord";case zn.COLOR:return"color";case zn.JOINTS:return"joints";case zn.WEIGHTS:return"weights";case zn.FEATURE_ID:return"featureId";case zn.SCALE:return"scale";case zn.ROTATION:return"rotation"}}zn.hasSetIndex=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return!1;case zn.TEXCOORD:case zn.COLOR:case zn.JOINTS:case zn.WEIGHTS:case zn.FEATURE_ID:case zn.SCALE:case zn.ROTATION:return!0}};zn.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return zn.POSITION;case"NORMAL":return zn.NORMAL;case"TANGENT":return zn.TANGENT;case"TEXCOORD":return zn.TEXCOORD;case"COLOR":return zn.COLOR;case"JOINTS":return zn.JOINTS;case"WEIGHTS":return zn.WEIGHTS;case"_FEATURE_ID":return zn.FEATURE_ID;case"_SCALE":return zn.SCALE;case"_ROTATION":return zn.ROTATION}};zn.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return zn.POSITION;case"RGBA":case"RGB":case"RGB565":return zn.COLOR;case"NORMAL":case"NORMAL_OCT16P":return zn.NORMAL;case"BATCH_ID":return zn.FEATURE_ID}};zn.getGlslType=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return"vec3";case zn.TEXCOORD:return"vec2";case zn.COLOR:return"vec4";case zn.JOINTS:return"ivec4";case zn.WEIGHTS:return"vec4";case zn.FEATURE_ID:return"int";case zn.SCALE:return"vec3";case zn.ROTATION:return"vec4";case zn.OPACITY:return"float"}};zn.getVariableName=function(e,t){let n=LQe(e);return l(t)&&(n+=`_${t}`),n};var ct=Object.freeze(zn);function Yg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(Yg.prototype=Object.create(qi.prototype),Yg.prototype.constructor=Yg);Object.defineProperties(Yg.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function OQe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;cre(e,n)}}Yg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=OQe(this),this._promise)};function cre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load Draco",t)}async function FQe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var FC={};FC[ct.POSITION]="POSITION";FC[ct.NORMAL]="NORMAL";FC[ct.COLOR]="COLOR";FC[ct.TEXCOORD]="TEX_COORD";function QQe(e){for(let t in FC)if(FC.hasOwnProperty(t)&&e.startsWith(t))return FC[t]}Yg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._dracoError)&&cre(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let A=QQe(h);l(A)&&i.accessors[n.attributes[h]].componentType===q.FLOAT&&(c.includes(A)||c.push(A))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=jg.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=FQe(this,f)};Yg.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var Xw=Yg;function kQe(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return we.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(we.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new we({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var YI=kQe;function tp(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(tp.prototype=Object.create(qi.prototype),tp.prototype.constructor=tp);Object.defineProperties(tp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});tp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=UQe(this),this._promise):(this._promise=GQe(this),this._promise)};function lre(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function UQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await VQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(n){return e.isDestroyed()?void 0:ure(e,n,"Failed to load embedded image")}}async function GQe(e){e._state=dt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await WQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(o){return e.isDestroyed()?void 0:ure(e,o,`Failed to load image: ${n}`)}}function ure(e,t,n){return e.unload(),e._state=dt.FAILED,Promise.reject(e.getError(n,t))}function zQe(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new ce("Image format is not recognized")}async function VQe(e){let t=zQe(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return Iu(n)}return tp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var HQe=/(^data:image\/ktx2)|(\.ktx2$)/i;function WQe(e){let t=e.getUrlComponent(!1,!0);return HQe.test(t)?Iu(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}tp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};tp._loadImageFromTypedArray=YI;var Jw=tp;var jQe={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},Tc=Object.freeze(jQe);function qg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=e.asynchronous??!0,f=e.loadBuffer??!1,h=e.loadTypedArray??!1,A=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=A,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(qg.prototype=Object.create(qi.prototype),qg.prototype.constructor=qg);Object.defineProperties(qg.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var YQe=new sW;qg.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=qQe(this),this._promise):(this._promise=KQe(this),this._promise)};async function qQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;rW(e,n)}}async function KQe(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=dt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=XQe(e,a),e._state=dt.PROCESSING,e}catch(s){if(e.isDestroyed())return;rW(e,s)}}function XQe(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Fe.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,A=new Uint8Array(c,u,h);c=new Uint8Array(A).buffer,u=0,Pr("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Fe.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Fe.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Fe.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function rW(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load index buffer",t)}function sW(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}sW.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};sW.prototype.execute=function(){this.buffer=fre(this.typedArray,this.indexDatatype,this.context)};function fre(e,t,n){let i=Et.createIndexBuffer({typedArray:e,context:n,usage:Qe.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}qg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=q.fromTypedArray(t),this._indexDatatype=n)}catch(o){rW(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=YQe;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,Tc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=fre(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};qg.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var Zw=qg;function JQe(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var aa=JQe;function ZQe(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Rr=ZQe;function rn(){}rn.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};rn.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};rn.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?rn.objectLegacy(i,n):rn.object(i,n)};rn.accessor=function(e,t){return rn.topLevel(e,"accessors",t)};rn.accessorWithSemantic=function(e,t,n){let i={};return rn.mesh(e,function(o){return rn.meshPrimitive(o,function(r){let s=rn.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:rn.meshPrimitiveTarget(r,function(a){return rn.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};rn.accessorContainingVertexAttributeData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=rn.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:rn.meshPrimitiveTarget(o,function(s){return rn.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};rn.accessorContainingIndexData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};rn.animation=function(e,t){return rn.topLevel(e,"animations",t)};rn.animationChannel=function(e,t){let n=e.channels;return rn.object(n,t)};rn.animationSampler=function(e,t){let n=e.samplers;return rn.object(n,t)};rn.buffer=function(e,t){return rn.topLevel(e,"buffers",t)};rn.bufferView=function(e,t){return rn.topLevel(e,"bufferViews",t)};rn.camera=function(e,t){return rn.topLevel(e,"cameras",t)};rn.image=function(e,t){return rn.topLevel(e,"images",t)};rn.material=function(e,t){return rn.topLevel(e,"materials",t)};rn.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.mesh=function(e,t){return rn.topLevel(e,"meshes",t)};rn.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};rn.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};rn.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};rn.node=function(e,t){return rn.topLevel(e,"nodes",t)};rn.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=rn.nodeInTree(e,u,n),l(c)))return c}}}};rn.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return rn.nodeInTree(e,i,n)};rn.program=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.programs,t):rn.topLevel(e,"programs",t)};rn.sampler=function(e,t){return rn.topLevel(e,"samplers",t)};rn.scene=function(e,t){return rn.topLevel(e,"scenes",t)};rn.shader=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.shaders,t):rn.topLevel(e,"shaders",t)};rn.skin=function(e,t){return rn.topLevel(e,"skins",t)};rn.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};rn.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.technique=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.techniques,t):rn.topLevel(e,"techniques",t)};rn.texture=function(e,t){return rn.topLevel(e,"textures",t)};var Re=rn;function $Qe(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var Rf=$Qe;function eke(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return q.getSizeInBytes(t.componentType)*Rf(t.type)}var Bu=eke;function tke(e){Re.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Re.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){if(i.mode=i.mode??ee.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=aa(e.materials,o)}})}),Re.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=Bu(e,i),r.target=ee.ARRAY_BUFFER}}),Re.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ee.ELEMENT_ARRAY_BUFFER}}),Re.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=u.transparency??1,c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=u.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Re.materialValue(n,function(c){l(c.index)&&QC(c)}),QC(n.emissiveTexture),QC(n.normalTexture),QC(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,QC(s.baseColorTexture),QC(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,QC(a.specularGlossinessTexture))}),Re.animation(e,function(n){Re.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=nke(e);return Re.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Re.sampler(e,function(n){n.wrapS=n.wrapS??ee.REPEAT,n.wrapT=n.wrapT??ee.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function nke(e){let t={};return Re.animation(e,function(n){Re.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function QC(e){l(e)&&(e.texCoord=e.texCoord??0)}var SO=tke;function ike(e){return Re.shader(e,function(t){wO(t)}),Re.buffer(e,function(t){wO(t)}),Re.image(e,function(t){wO(t)}),wO(e),e}function wO(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var kC=ike;function oke(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var BO=oke;function rke(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),BO(e,t),n.length===0&&delete e.extensionsUsed}}var qI=rke;var ske=4;function ake(e){if(gm(e)!=="glTF")throw new ce("File is not valid binary glTF");let n=dre(e,0,5),i=n[1];if(i!==1&&i!==2)throw new ce("Binary glTF version is not 1 or 2");return i===1?cke(e,n):lke(e,n)}function dre(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*ske,!0);return o}function cke(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new ce("Binary glTF scene format is not JSON");let r=20,s=r+i,a=Tu(e,r,i),c=JSON.parse(a);kC(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=f.binary_glTF??f.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return qI(c,"KHR_binary_glTF"),c}function lke(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=dre(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=Tu(u);o=JSON.parse(f),kC(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var DO=ake;function uke(e){return Re.shader(e,function(t){vO(t)}),Re.buffer(e,function(t){vO(t)}),Re.image(e,function(t){vO(t)}),vO(e),e}function vO(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var PO=uke;function fke(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),aa(n,t,!0)}var Yd=fke;function dke(e){switch(e){case q.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case q.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case q.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case q.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case q.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case q.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case q.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case q.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Kg=dke;function hke(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=Rf(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,A=t.count,g=Bu(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,_=t.componentType,y=q.getSizeInBytes(_),C=new DataView(h.buffer),E=new Array(r),I=Kg(_);for(let b=0;b<A;b++){I(C,m,r,y,E);for(let S=0;S<r;S++){let B=E[S];s[S]=Math.min(s[S],B),a[S]=Math.max(a[S],B)}m+=g}return{min:s,max:a}}var KI=hke;var mke=[ee.FUNC_ADD,ee.FUNC_ADD],Ake=[ee.ONE,ee.ZERO,ee.ONE,ee.ZERO];function hre(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var pke=[ee.ZERO,ee.ONE,ee.SRC_COLOR,ee.ONE_MINUS_SRC_COLOR,ee.SRC_ALPHA,ee.ONE_MINUS_SRC_ALPHA,ee.DST_ALPHA,ee.ONE_MINUS_DST_ALPHA,ee.DST_COLOR,ee.ONE_MINUS_DST_COLOR];function gke(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(pke.indexOf(e[n])===-1)return t;return e}function _ke(e){let t={},n={},i=e.techniques;return l(i)&&(Re.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(hre(s,ee.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??mke,blendFactors:gke(c.blendFuncSeparate,Ake)})}hre(s,ee.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),Yd(e,"KHR_blend")),Re.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Re.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var RO=_ke;function yke(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),aa(n,t,!0),Yd(e,t)}var MO=yke;function Cke(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Re.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Re.techniqueAttribute(a,function(h,A){f=a.parameters[h],u.attributes[A]={semantic:f.semantic}}),Re.techniqueUniform(a,function(h,A){f=a.parameters[h],u.uniforms[A]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=A}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],A={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];A.fragmentShader=aa(r.shaders,g,!0);let m=e.shaders[h.vertexShader];A.vertexShader=aa(r.shaders,m,!0),u.program=aa(r.programs,A),o[a.program]=u.program}i[c]=aa(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,Yd(e,"KHR_techniques_webgl"),MO(e,"KHR_techniques_webgl"))}return Re.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Re.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var NO=Cke;function Eke(e,t){Mo.typeOf.object("material",e),Mo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let A=t(c.index,c);if(l(A))return A}if(l(u)&&l(u.index)){let A=t(u.index,u);if(l(A))return A}if(l(f)&&l(f.index)){let A=t(f.index,f);if(l(A))return A}if(l(h)&&l(h.index)){let A=t(h.index,h);if(l(A))return A}}}let o=Re.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var $w=Eke;var mre=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function Ike(e,t){return t=t??mre,mre.forEach(function(n){t.indexOf(n)>-1&&bke(e,n)}),e}var xke={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function bke(e,t){let n=xke[t],i=e[n];if(l(i)){let o=0,r=Cm[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(ym[t](e,a-o),o++)}}function ym(){}ym.accessor=function(e,t){e.accessors.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){Re.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Re.meshPrimitiveTarget(o,function(a){Re.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Re.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Re.animation(e,function(i){Re.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};ym.buffer=function(e,t){e.buffers.splice(t,1),Re.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};ym.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Re.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Rr(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};ym.image=function(e,t){e.images.splice(t,1),Re.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};ym.mesh=function(e,t){e.meshes.splice(t,1),Re.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};ym.node=function(e,t){e.nodes.splice(t,1),Re.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Re.animation(e,function(i){Re.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Re.technique(e,function(i){Re.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Re.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Re.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};ym.material=function(e,t){e.materials.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};ym.sampler=function(e,t){e.samplers.splice(t,1),Re.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};ym.texture=function(e,t){if(e.textures.splice(t,1),Re.material(e,function(i){$w(i,function(o,r){r.index>t&&--r.index})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(r){Re.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Cm(){}Cm.accessor=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Re.meshPrimitiveTarget(i,function(r){Re.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Re.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Re.animation(e,function(n){Re.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Rr(e,"EXT_mesh_gpu_instancing")&&Re.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Rr(e,"CESIUM_primitive_outline")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Cm.buffer=function(e){let t={};return Re.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Cm.bufferView=function(e){let t={};if(Re.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Rr(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Cm.image=function(e){let t={};return Re.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Cm.mesh=function(e){let t={};return Re.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function Are(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Are(e,o,n)}).length===0}Cm.node=function(e){let t={};return Re.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Re.skinJoint(n,function(i){t[i]=!0})}),Re.animation(e,function(n){Re.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Re.technique(e,function(n){Re.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Re.node(e,function(n,i){Are(e,i,t)||(t[i]=!0)}),t};Cm.material=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Cm.texture=function(e){let t={};if(Re.material(e,function(n){$w(n,function(i){t[i]=!0})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(o){Re.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let A=c[f].featureIds.texture;t[A.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Cm.sampler=function(e){let t={};return Re.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var LO=Ike;function Tke(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:aa(e.buffers,n),byteOffset:0,byteLength:t.length};return aa(e.bufferViews,o)}var OO=Tke;function Ske(e,t){let n=Bu(e,t),i=q.getSizeInBytes(t.componentType),o=Rf(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),A=Kg(t.componentType);for(let g=0;g<r;++g){A(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var FO=Ske;function wke(e){let t;return Re.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t!==ee.UNSIGNED_BYTE&&t!==ee.UNSIGNED_SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),Re.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t===ee.SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),e}function QO(e,t,n){let i=q.createTypedArray(n,FO(e,t)),o=new Uint8Array(i.buffer);t.bufferView=OO(e,o),t.componentType=n,t.byteOffset=0}var kO=wke;function Bke(e,t){return qI(e,t),t==="CESIUM_RTC"&&Dke(e),aW(e,t)}function Dke(e){Re.technique(e,function(t){Re.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function aW(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)aW(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&aW(e[o],t);return i}}var XI=Bke;var UO={.8:Lke,"1.0":n3e,"2.0":void 0};function vke(e,t){t=t??{};let n=t.targetVersion,i=e.version;e.asset=e.asset??{version:"1.0"},e.asset.version=e.asset.version??"1.0",i=(i??e.asset.version).toString(),Object.prototype.hasOwnProperty.call(UO,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(UO,i)||(i="1.0"));let o=UO[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=UO[i];return t.keepLegacyExtensions||(r3e(e,t),s3e(e)),e}function _re(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function Pke(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.primitive??ee.TRIANGLES;a.mode=a.mode??c,delete a.primitive}}}}function Rke(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function Mke(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,A=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let _=f[m];if(_.target.path==="rotation"){let y=h[A[_.sampler].output];if(l(r[y]))continue;r[y]=!0;let C=n[y],E=i[C.bufferView],b=o[E.buffer].extras._pipeline.source,S=b.byteOffset+E.byteOffset+C.byteOffset,B=C.componentType,v=C.count,P=Rf(C.type),N=C.count*P,L=q.createArrayBufferView(B,b.buffer,S,N);for(let p=0;p<v;p++){let x=p*P;d.unpack(L,x,s);let T=L[x+3];Le.fromAxisAngle(s,T,a),Le.pack(a,L,x)}}}}}}function Nke(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=i.pass??"defaultPass";if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=i.attributes??a.attributes,i.program=i.program??a.program,i.uniforms=i.uniforms??a.uniforms,i.states=i.states??s.states}delete i.passes,delete i.pass}}}function Lke(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,_re(e),Pke(e),Rke(e),Mke(e),Nke(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=e.extensions??{};e.extensions=n;let i=n.KHR_materials_common??{};n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,Yd(e,"KHR_materials_common")}}function Oke(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function pre(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function Fke(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=pre(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Re.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Re.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Re.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Re.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Re.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Re.mesh(e,function(s){Re.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Re.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Re.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=aa(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Re.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Re.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Re.animation(e,function(s){let a={};s.samplers=pre(s.samplers,a),Re.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Re.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Re.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Re.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Re.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Re.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function Qke(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){delete n.name})})}function kke(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Re.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function Uke(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var Gke={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function zke(e){let t=e.extensionsUsed;if(e.extensionsRequired=e.extensionsRequired??[],l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(Gke[o])&&e.extensionsRequired.push(o)}}}function Vke(e){Re.buffer(e,function(t){delete t.type})}function Hke(e){Re.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function Wke(e){Re.mesh(e,function(t){Re.meshPrimitive(t,function(n){Re.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Re.technique(e,function(t){Re.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var jke={POSITION:!0,NORMAL:!0,TANGENT:!0},Yke={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function qke(e){let t={};Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=Yke[a];l(f)?(u=f+c,t[r]=u):l(jke[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Re.technique(e,function(n){Re.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function Kke(e){Re.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function lW(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:Bu(e,t)}function Xke(e){Re.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Re.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=lW(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function Jke(e){let t,n,i,o=e.bufferViews,r={};Re.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Re.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(A,g){return A.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let A=c[t],g=lW(e,A),m=A.byteOffset,_=A.count*g;delete A.byteStride;let y=t<h-1,C=y?lW(e,c[t+1]):void 0;if(g!==C){let E=ze(i,!0);r[a]&&(E.byteStride=g),E.byteOffset+=u,E.byteLength=m+_-u;let I=aa(o,E);for(n=f;n<=t;++n)A=c[n],A.bufferView=I,A.byteOffset=A.byteOffset-u;u=y?c[t+1].byteOffset:void 0,f=t+1}}}LO(e,["accessor","bufferView","buffer"])}function Zke(e){Re.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=KI(e,n);n.min=i.min,n.max=i.max}})}function yre(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||se.fromArray(e.rotation).equals(new se(0,0,0,1)))&&(!l(e.matrix)||R.fromColumnMajorArray(e.matrix).equals(R.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Cre(e,t){Re.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Re.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),yre(n)&&Cre(e,i))}}),delete e.nodes[t]}function $ke(e){return Re.node(e,function(t,n){yre(t)&&Cre(e,n)}),e}function e3e(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=KI(e,i);i.min=o.min,i.max=o.max}})})}function t3e(e){Re.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=KI(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function n3e(e){e.asset=e.asset??{},e.asset.version="2.0",_re(e),Oke(e),$ke(e),Fke(e),Qke(e),Uke(e),zke(e),Xke(e),Jke(e),Zke(e),e3e(e),t3e(e),Vke(e),Hke(e),Wke(e),qke(e),kO(e),Kke(e),RO(e),NO(e),kke(e)}var i3e=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],o3e=["u_diffuse","u_diffuse_mat"];function uW(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function fW(e){return l(e.index)}function dW(e){return Array.isArray(e)&&e.length===4}function Ere(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function r3e(e,t){t=t??{};let n=t.baseColorTextureNames??i3e,i=t.baseColorFactorNames??o3e;Re.material(e,function(o){Re.materialValue(o,function(r,s){n.indexOf(s)!==-1&&fW(r)?(uW(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&dW(r)&&(uW(o),o.pbrMetallicRoughness.baseColorFactor=Ere(r))})}),XI(e,"KHR_techniques_webgl"),XI(e,"KHR_blend")}function cW(e,t){l(t)&&(dW(t)?e.pbrMetallicRoughness.baseColorFactor=Ere(t):fW(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function gre(e,t){l(t)&&(dW(t)?e.emissiveFactor=t.slice(0,3):fW(t)&&(e.emissiveTexture=t))}function s3e(e){Re.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;uW(t),n.technique==="CONSTANT"?(Yd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},cW(t,s),cW(t,o)):(cW(t,r),gre(t,o),gre(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),XI(e,"KHR_materials_common")}var GO=vke;function Sc(){}Sc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new ce(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};Sc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:R.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};Sc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};Sc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};Sc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};Sc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};Sc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=ct.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=Ht.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":Ht.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var a3e=new d,c3e=new d;Sc.getPositionMinMax=function(e,t,n){let i=Sc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,c3e),o=d.add(o,n,a3e)),{min:r,max:o}};Sc.getAxisCorrectionMatrix=function(e,t,n){return n=R.clone(R.IDENTITY,n),e===Ao.Y?n=R.clone(Ao.Y_UP_TO_Z_UP,n):e===Ao.X&&(n=R.clone(Ao.X_UP_TO_Z_UP,n)),t===Ao.Z&&(n=R.multiplyTransformation(n,Ao.Z_UP_TO_X_UP,n)),n};var l3e=new J;Sc.getCullFace=function(e,t){if(!Me.isTriangles(t))return Mi.BACK;let n=R.getMatrix3(e,l3e);return J.determinant(n)<0?Mi.FRONT:Mi.BACK};Sc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};Sc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,KHR_gaussian_splatting:!0,KHR_spz_gaussian_splats_compression:!0,WEB3D_quantized_attributes:!0};Sc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!Sc.supportedExtensions[i])throw new ce(`Unsupported glTF Extension: ${i}`)}};var Qt=Sc;function Xg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Xg.prototype=Object.create(qi.prototype),Xg.prototype.constructor=Xg);Object.defineProperties(Xg.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});Xg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,l(this._gltfJson)?(this._promise=Ire(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=xre(this,this._typedArray),this._promise):(this._promise=u3e(this),this._promise))};async function u3e(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;hW(e,n)}return xre(e,t)}function hW(e,t){e.unload(),e._state=dt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function f3e(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!Rr(t,"KHR_techniques_webgl")&&!Rr(t,"KHR_materials_common"))return Promise.resolve();let n=[];Re.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),GO(t)}function d3e(e){let t=[];return Re.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&mg(i)&&(delete n.uri,t.push(we.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function h3e(e,t){let n=[];return Re.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function Ire(e,t){try{kC(t),await d3e(t),await f3e(e,t),SO(t),await h3e(e,t),PO(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new ce(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Qt.checkSupportedExtensions(i),e._gltf=t,e._state=dt.READY,e}catch(n){if(e.isDestroyed())return;hW(e,n)}}async function xre(e,t){let n;try{gm(t)==="glTF"?n=DO(t):n=yr(t)}catch(i){if(e.isDestroyed())return;hW(e,i)}return Ire(e,n)}Xg.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};Xg.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var eB=Xg;var m3e={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},np=Object.freeze(m3e);var Lo={};function A3e(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function p3e(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function g3e(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function _3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function y3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function C3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function E3e(){this.attributes=[]}function I3e(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0,this.modelPrimitiveImagery=void 0}function x3e(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function b3e(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function T3e(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function S3e(){this.nodes=[]}var w3e={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function B3e(){this.input=[],this.interpolation=void 0,this.output=[]}function D3e(){this.node=void 0,this.path=void 0}function v3e(){this.sampler=void 0,this.target=void 0}function P3e(){this.name=void 0,this.samplers=[],this.channels=[]}function R3e(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function M3e(){this.name=void 0,this.stages=[]}function bre(){this.credits=[]}function N3e(){this.asset=new bre,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=R.clone(R.IDENTITY),this.extensions={}}function L3e(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=J.clone(J.IDENTITY),this.scale=1,this.channels=void 0}function Jg(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=se.clone(Jg.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=Jg.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=Jg.DEFAULT_ROUGHNESS_FACTOR}Jg.DEFAULT_BASE_COLOR_FACTOR=se.ONE;Jg.DEFAULT_METALLIC_FACTOR=1;Jg.DEFAULT_ROUGHNESS_FACTOR=1;function UC(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=se.clone(UC.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(UC.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=UC.DEFAULT_GLOSSINESS_FACTOR}UC.DEFAULT_DIFFUSE_FACTOR=se.ONE;UC.DEFAULT_SPECULAR_FACTOR=d.ONE;UC.DEFAULT_GLOSSINESS_FACTOR=1;function tB(){this.specularFactor=tB.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(tB.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}tB.DEFAULT_SPECULAR_FACTOR=1;tB.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function nB(){this.anisotropyStrength=nB.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=nB.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}nB.DEFAULT_ANISOTROPY_STRENGTH=0;nB.DEFAULT_ANISOTROPY_ROTATION=0;function iB(){this.clearcoatFactor=iB.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}iB.DEFAULT_CLEARCOAT_FACTOR=0;iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function mW(){this.metallicRoughness=new Jg,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(mW.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=np.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}mW.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Lo.Quantization=A3e;Lo.Attribute=p3e;Lo.Indices=g3e;Lo.FeatureIdAttribute=_3e;Lo.FeatureIdTexture=C3e;Lo.FeatureIdImplicitRange=y3e;Lo.MorphTarget=E3e;Lo.Primitive=I3e;Lo.Instances=x3e;Lo.Skin=b3e;Lo.Node=T3e;Lo.Scene=S3e;Lo.AnimatedPropertyType=Object.freeze(w3e);Lo.AnimationSampler=B3e;Lo.AnimationTarget=D3e;Lo.AnimationChannel=v3e;Lo.Animation=P3e;Lo.ArticulationStage=R3e;Lo.Articulation=M3e;Lo.Asset=bre;Lo.Components=N3e;Lo.TextureReader=L3e;Lo.MetallicRoughness=Jg;Lo.SpecularGlossiness=UC;Lo.Specular=tB;Lo.Anisotropy=nB;Lo.Clearcoat=iB;Lo.Material=mW;var bn=Lo;var zO={};zO.getImageIdFromTexture=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};zO.createSampler=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=Tn.REPEAT,r=Tn.REPEAT,s=Zt.LINEAR,a=pi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=h.wrapS??o,r=h.wrapT??r,s=h.minFilter??s,a=h.magFilter??a}return i&&s!==Zt.LINEAR&&s!==Zt.NEAREST&&(s===Zt.NEAREST_MIPMAP_NEAREST||s===Zt.NEAREST_MIPMAP_LINEAR?s=Zt.NEAREST:s=Zt.LINEAR),new on({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var O3e=new k(1,1);zO.createModelTextureReader=function(e){e=e??V.EMPTY_OBJECT;let{textureInfo:t,channels:n,texture:i}=e,o=t.texCoord??0,r,s=t.extensions?.KHR_texture_transform;if(l(s)){o=s.texCoord??o;let c=l(s.offset)?k.unpack(s.offset):k.ZERO,u=s.rotation??0,f=l(s.scale)?k.unpack(s.scale):O3e;u=-u,r=new J(Math.cos(u)*f.x,-Math.sin(u)*f.y,c.x,Math.sin(u)*f.x,Math.cos(u)*f.y,c.y,0,0,1)}let a=new bn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var Du=zO;function F3e(e){let t=document.createElement("canvas");return t.width=D.nextPowerOfTwo(e.width),t.height=D.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var GC=F3e;function Zg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=e.asynchronous??!0,u=i.index,f=Du.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Zg.prototype=Object.create(qi.prototype),Zg.prototype.constructor=Zg);Object.defineProperties(Zg.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var Q3e=new AW;async function k3e(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load texture",n)}}Zg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=k3e(this),this._promise)};function AW(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}AW.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};AW.prototype.execute=function(){this.texture=Tre(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function Tre(e,t,n,i,o,r){let s=i.internalFormat,a=!1;et.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=Du.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,A=u===Zt.NEAREST_MIPMAP_NEAREST||u===Zt.NEAREST_MIPMAP_LINEAR||u===Zt.LINEAR_MIPMAP_NEAREST||u===Zt.LINEAR_MIPMAP_LINEAR,g=!l(s)&&A,m=g||f===Tn.REPEAT||f===Tn.MIRRORED_REPEAT||h===Tn.REPEAT||h===Tn.MIRRORED_REPEAT,_=!D.isPowerOfTwo(i.width)||!D.isPowerOfTwo(i.height),y=m&&_,C;return l(s)?(!r.webgl2&&et.isCompressedFormat(s)&&_&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),C=Nt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(y&&(i=GC(i)),C=Nt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&C.generateMipmap(),C}Zg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=dt.PROCESSING;let t;if(this._asynchronous){let n=Q3e;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,Tc.TEXTURE))return;t=n.texture}else t=Tre(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=dt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};Zg.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var oB=Zg;function $g(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=e.spz,A=e.asynchronous??!0,g=e.loadBuffer??!1,m=e.loadTypedArray??!1;this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._spz=h,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=A,this._loadBuffer=g,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&($g.prototype=Object.create(qi.prototype),$g.prototype.constructor=$g);Object.defineProperties($g.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function U3e(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}$g.prototype.load=async function(){return l(this._promise)?this._promise:l(this._spz)?(this._promise=z3e(this),this._promise):U3e(this._draco,this._attributeSemantic)?(this._promise=H3e(this),this._promise):(this._promise=j3e(this),this._promise)};function G3e(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new bn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=Ht.VEC2,a.normalizationRange=r;else{let c=Ht.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function z3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getSpzLoader({gltf:e._gltf,primitive:e._primitive,spz:e._spz,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._spzLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return}}function V3e(e){e._state=dt.PROCESSING;let n=e._spzLoader.decodedData.gcloud;if(e._attributeSemantic==="POSITION")e._typedArray=n.positions;else if(e._attributeSemantic==="_SCALE")e._typedArray=n.scales;else if(e._attributeSemantic==="_ROTATION")e._typedArray=n.rotations;else if(e._attributeSemantic==="COLOR_0"){let i=n.colors,o=n.alphas;e._typedArray=new Uint8Array(i.length/3*4);for(let r=0;r<i.length/3;r++)e._typedArray[r*4]=D.clamp(i[r*3]*255,0,255),e._typedArray[r*4+1]=D.clamp(i[r*3+1]*255,0,255),e._typedArray[r*4+2]=D.clamp(i[r*3+2]*255,0,255),e._typedArray[r*4+3]=D.clamp(o[r]*255,0,255)}}async function H3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return;VO(e)}}function W3e(e){e._state=dt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=G3e(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function j3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;VO(e,n)}}function VO(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load vertex buffer",t)}function pW(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}pW.prototype.set=function(e,t){this.typedArray=e,this.context=t};pW.prototype.execute=function(){this.buffer=Sre(this.typedArray,this.context)};function Sre(e,t){let n=Et.createVertexBuffer({typedArray:e,context:t,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var Y3e=new pW;$g.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){VO(this,i)}W3e(this)}if(l(this._spzLoader)){try{if(!this._spzLoader.process(e))return!1}catch(i){VO(this,i)}V3e(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=Y3e;if(i.set(n,e.context),!e.jobScheduler.execute(i,Tc.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=Sre(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};$g.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),l(this._spzLoader)&&e.unload(this._spzLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._spzLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var rB=$g;async function q3e(e={}){var t,n,i=e,o=typeof window=="object",r=typeof WorkerGlobalScope<"u",s=typeof process=="object"&&((t=process.versions)==null?void 0:t.node)&&process.type!="renderer";if(s){let{createRequire:oe}=await Promise.resolve().then(()=>$3e);var a=oe(import.meta.url)}var c="./this.program",u=import.meta.url,f;if(s){var h=a("fs");u.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(u)),f=oe=>(oe=y(oe)?new URL(oe):oe,h.readFileSync(oe)),1<process.argv.length&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else if(o||r){try{new URL(".",u)}catch{}r&&(f=oe=>{var ne=new XMLHttpRequest;return ne.open("GET",oe,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)})}var A=console.log.bind(console),g=console.error.bind(console),m,_=!1,y=oe=>oe.startsWith("file://"),C,E,I,b,S,B,v,P,N,L,p,x,T,w=!1;function M(){var oe=I.buffer;b=new Int8Array(oe),B=new Int16Array(oe),i.HEAPU8=S=new Uint8Array(oe),v=new Uint16Array(oe),P=new Int32Array(oe),N=new Uint32Array(oe),i.HEAPF32=L=new Float32Array(oe),p=new Float64Array(oe),x=new BigInt64Array(oe),T=new BigUint64Array(oe)}var O=0,U=null;function Q(oe){var ne;throw(ne=i.onAbort)==null||ne.call(i,oe),oe="Aborted("+oe+")",g(oe),_=!0,oe=new WebAssembly.RuntimeError(oe+". Build with -sASSERTIONS for more info."),E?.(oe),oe}var z;async function F(oe){if(!ArrayBuffer.isView(oe))if(oe==z&&m)oe=new Uint8Array(m);else if(f)oe=f(oe);else throw"both async and sync fetching of the wasm failed";return oe}async function H(oe){var ne=z;try{var Ee=await F(ne);return await WebAssembly.instantiate(Ee,oe)}catch(be){g(`failed to asynchronously prepare wasm: ${be}`),Q(be)}}async function W(oe){return H(oe)}var Z=oe=>{for(;0<oe.length;)oe.shift()(i)},Y=[],$=[],X=()=>{var oe=i.preRun.shift();$.push(oe)},he=oe=>{if(s)return oe=Buffer.from(oe,"base64"),new Uint8Array(oe.buffer,oe.byteOffset,oe.length);for(var ne,Ee,be=0,Ve=0,At=oe.length,ut=new Uint8Array((3*At>>2)-(oe[At-2]=="=")-(oe[At-1]=="="));be<At;be+=4,Ve+=3)ne=SA[oe.charCodeAt(be+1)],Ee=SA[oe.charCodeAt(be+2)],ut[Ve]=SA[oe.charCodeAt(be)]<<2|ne>>4,ut[Ve+1]=ne<<4|Ee>>2,ut[Ve+2]=Ee<<6|SA[oe.charCodeAt(be+3)];return ut},ge={},fe=oe=>{for(;oe.length;){var ne=oe.pop();oe.pop()(ne)}};function ye(oe){return this.N(N[oe>>2])}var Ie={},ve={},Te={},ke=class extends Error{constructor(oe){super(oe),this.name="InternalError"}},Ge=(oe,ne,Ee)=>{function be(xt){if(xt=Ee(xt),xt.length!==oe.length)throw new ke("Mismatched type converter count");for(var wn=0;wn<oe.length;++wn)tn(oe[wn],xt[wn])}oe.forEach(xt=>Te[xt]=ne);var Ve=Array(ne.length),At=[],ut=0;ne.forEach((xt,wn)=>{ve.hasOwnProperty(xt)?Ve[wn]=ve[xt]:(At.push(xt),Ie.hasOwnProperty(xt)||(Ie[xt]=[]),Ie[xt].push(()=>{Ve[wn]=ve[xt],++ut,ut===At.length&&be(Ve)}))}),At.length===0&&be(Ve)},qe=oe=>{for(var ne="";;){var Ee=S[oe++];if(!Ee)return ne;ne+=String.fromCharCode(Ee)}},tt=class extends Error{constructor(oe){super(oe),this.name="BindingError"}},$t=oe=>{throw new tt(oe)};function it(oe,ne,Ee={}){var be=ne.name;if(!oe)throw new tt(`type "${be}" must have a positive integer typeid pointer`);if(ve.hasOwnProperty(oe)){if(Ee.wa)return;throw new tt(`Cannot register type '${be}' twice`)}ve[oe]=ne,delete Te[oe],Ie.hasOwnProperty(oe)&&(ne=Ie[oe],delete Ie[oe],ne.forEach(Ve=>Ve()))}function tn(oe,ne,Ee={}){return it(oe,ne,Ee)}var Wt=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?be=>b[be]:be=>S[be];case 2:return Ee?be=>B[be>>1]:be=>v[be>>1];case 4:return Ee?be=>P[be>>2]:be=>N[be>>2];case 8:return Ee?be=>x[be>>3]:be=>T[be>>3];default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},vt=oe=>{throw new tt(oe.L.P.M.name+" instance already deleted")},bi=!1,di=()=>{},Ot=oe=>typeof FinalizationRegistry>"u"?(Ot=ne=>ne,oe):(bi=new FinalizationRegistry(ne=>{ne=ne.L,--ne.count.value,ne.count.value===0&&(ne.S?ne.W.Y(ne.S):ne.P.M.Y(ne.O))}),Ot=ne=>{var Ee=ne.L;return Ee.S&&bi.register(ne,{L:Ee},ne),ne},di=ne=>{bi.unregister(ne)},Ot(oe));function Tt(){}var ii=(oe,ne)=>Object.defineProperty(ne,"name",{value:oe}),Ct={},Ro=(oe,ne,Ee)=>{if(oe[ne].R===void 0){var be=oe[ne];oe[ne]=function(...Ve){if(!oe[ne].R.hasOwnProperty(Ve.length))throw new tt(`Function '${Ee}' called with an invalid number of arguments (${Ve.length}) - expects one of (${oe[ne].R})!`);return oe[ne].R[Ve.length].apply(this,Ve)},oe[ne].R=[],oe[ne].R[be.aa]=be}},Qo=(oe,ne,Ee)=>{if(i.hasOwnProperty(oe)){if(Ee===void 0||i[oe].R!==void 0&&i[oe].R[Ee]!==void 0)throw new tt(`Cannot register public name '${oe}' twice`);if(Ro(i,oe,oe),i[oe].R.hasOwnProperty(Ee))throw new tt(`Cannot register multiple overloads of a function with the same number of arguments (${Ee})!`);i[oe].R[Ee]=ne}else i[oe]=ne,i[oe].aa=Ee},ya=oe=>{oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ne=oe.charCodeAt(0);return 48<=ne&&57>=ne?`_${oe}`:oe};function mr(oe,ne,Ee,be,Ve,At,ut,xt){this.name=oe,this.constructor=ne,this.$=Ee,this.Y=be,this.U=Ve,this.ra=At,this.ea=ut,this.pa=xt,this.ya=[]}var Tr=(oe,ne,Ee)=>{for(;ne!==Ee;){if(!ne.ea)throw new tt(`Expected null or instance of ${Ee.name}, got an instance of ${ne.name}`);oe=ne.ea(oe),ne=ne.U}return oe},Oe=oe=>{if(oe===null)return"null";var ne=typeof oe;return ne==="object"||ne==="array"||ne==="function"?oe.toString():""+oe};function lt(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}function Ke(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);if(this.ga){var Ee=this.ia();return oe!==null&&oe.push(this.Y,Ee),Ee}return 0}if(!ne||!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);if(Ee=Tr(ne.L.O,ne.L.P.M,this.M),this.ga){if(ne.L.S===void 0)throw new tt("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(ne.L.W===this)Ee=ne.L.S;else throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);break;case 1:Ee=ne.L.S;break;case 2:if(ne.L.W===this)Ee=ne.L.S;else{var be=ne.clone();Ee=this.za(Ee,rs(()=>be.delete())),oe!==null&&oe.push(this.Y,Ee)}break;default:throw new tt("Unsupporting sharing policy")}}return Ee}function $e(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.P.name} to parameter type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}var pt=(oe,ne,Ee)=>ne===Ee?oe:Ee.U===void 0?null:(oe=pt(oe,ne,Ee.U),oe===null?null:Ee.pa(oe)),Xt={},xn=(oe,ne)=>{if(ne===void 0)throw new tt("ptr should not be undefined");for(;oe.U;)ne=oe.ea(ne),oe=oe.U;return Xt[ne]},lo=(oe,ne)=>{if(!ne.P||!ne.O)throw new ke("makeClassHandle requires ptr and ptrType");if(!!ne.W!=!!ne.S)throw new ke("Both smartPtrType and smartPtr must be specified");return ne.count={value:1},Ot(Object.create(oe,{L:{value:ne,writable:!0}}))};function ro(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn){this.name=oe,this.M=ne,this.ha=Ee,this.fa=be,this.ga=Ve,this.xa=At,this.Da=ut,this.na=xt,this.ia=wn,this.za=Hn,this.Y=dn,Ve||ne.U!==void 0?this.T=Ke:(this.T=be?lt:$e,this.V=null)}var $s=(oe,ne,Ee)=>{if(!i.hasOwnProperty(oe))throw new ke("Replacing nonexistent public symbol");i[oe].R!==void 0&&Ee!==void 0?i[oe].R[Ee]=ne:(i[oe]=ne,i[oe].aa=Ee)},ea,Vn=(oe,ne)=>{oe=qe(oe);var Ee=ea.get(ne);if(typeof Ee!="function")throw new tt(`unknown function pointer with signature ${oe}: ${ne}`);return Ee};class _i extends Error{}var _s=oe=>{oe=c$(oe);var ne=qe(oe);return ug(oe),ne},Wo=(oe,ne)=>{function Ee(At){Ve[At]||ve[At]||(Te[At]?Te[At].forEach(Ee):(be.push(At),Ve[At]=!0))}var be=[],Ve={};throw ne.forEach(Ee),new _i(`${oe}: `+be.map(_s).join([", "]))},Ca=(oe,ne)=>{for(var Ee=[],be=0;be<oe;be++)Ee.push(N[ne+4*be>>2]);return Ee};function uo(oe){for(var ne=1;ne<oe.length;++ne)if(oe[ne]!==null&&oe[ne].V===void 0)return!0;return!1}function jo(oe,ne,Ee,be,Ve,At){var ut=ne.length;if(2>ut)throw new tt("argTypes array size mismatch! Must at least get return value and 'this' types!");var xt=ne[1]!==null&&Ee!==null,wn=uo(ne);Ee=!ne[0].ma;var Hn=ne[0],dn=ne[1];for(be=[oe,$t,be,Ve,fe,Hn.N.bind(Hn),dn?.T.bind(dn)],Ve=2;Ve<ut;++Ve)Hn=ne[Ve],be.push(Hn.T.bind(Hn));if(!wn)for(Ve=xt?1:2;Ve<ne.length;++Ve)ne[Ve].V!==null&&be.push(ne[Ve].V);for(wn=uo(ne),Ve=ne.length-2,dn=[],Hn=["fn"],xt&&Hn.push("thisWired"),ut=0;ut<Ve;++ut)dn.push(`arg${ut}`),Hn.push(`arg${ut}Wired`);dn=dn.join(","),Hn=Hn.join(","),dn=`return function (${dn}) { +`,wn&&(dn+=`var destructors = []; +`);var ss=wn?"destructors":"null",pu="humanName throwBindingError invoker fn runDestructors fromRetWire toClassParamWire".split(" ");for(xt&&(dn+=`var thisWired = toClassParamWire(${ss}, this); +`),ut=0;ut<Ve;++ut){var Hc=`toArg${ut}Wire`;dn+=`var arg${ut}Wired = ${Hc}(${ss}, arg${ut}); +`,pu.push(Hc)}if(dn+=(Ee||At?"var rv = ":"")+`invoker(${Hn}); +`,wn)dn+=`runDestructors(destructors); +`;else for(ut=xt?1:2;ut<ne.length;++ut)At=ut===1?"thisWired":"arg"+(ut-2)+"Wired",ne[ut].V!==null&&(dn+=`${At}_dtor(${At}); +`,pu.push(`${At}_dtor`));return Ee&&(dn+=`var ret = fromRetWire(rv); +return ret; +`),ne=new Function(pu,dn+`} +`)(...be),ii(oe,ne)}for(var df=oe=>{oe=oe.trim();let ne=oe.indexOf("(");return ne===-1?oe:oe.slice(0,ne)},Ar=[],ys=[0,1,,1,null,1,!0,1,!1,1],Qs=oe=>{9<oe&&--ys[oe+1]===0&&(ys[oe]=void 0,Ar.push(oe))},vd=oe=>{if(!oe)throw new tt(`Cannot use deleted val. handle = ${oe}`);return ys[oe]},rs=oe=>{switch(oe){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let ne=Ar.pop()||ys.length;return ys[ne]=oe,ys[ne+1]=1,ne}},qa={name:"emscripten::val",N:oe=>{var ne=vd(oe);return Qs(oe),ne},T:(oe,ne)=>rs(ne),X:ye,V:null},Ka=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?function(be){return this.N(b[be])}:function(be){return this.N(S[be])};case 2:return Ee?function(be){return this.N(B[be>>1])}:function(be){return this.N(v[be>>1])};case 4:return Ee?function(be){return this.N(P[be>>2])}:function(be){return this.N(N[be>>2])};default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Sr=(oe,ne)=>{var Ee=ve[oe];if(Ee===void 0)throw oe=`${ne} has unknown type ${_s(oe)}`,new tt(oe);return Ee},Bl=(oe,ne)=>{switch(ne){case 4:return function(Ee){return this.N(L[Ee>>2])};case 8:return function(Ee){return this.N(p[Ee>>3])};default:throw new TypeError(`invalid float width (${ne}): ${oe}`)}},Dl=Object.assign({optional:!0},qa),ta=(oe,ne,Ee)=>{var be=S;if(!(0<Ee))return 0;var Ve=ne;Ee=ne+Ee-1;for(var At=0;At<oe.length;++At){var ut=oe.codePointAt(At);if(127>=ut){if(ne>=Ee)break;be[ne++]=ut}else if(2047>=ut){if(ne+1>=Ee)break;be[ne++]=192|ut>>6,be[ne++]=128|ut&63}else if(65535>=ut){if(ne+2>=Ee)break;be[ne++]=224|ut>>12,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63}else{if(ne+3>=Ee)break;be[ne++]=240|ut>>18,be[ne++]=128|ut>>12&63,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63,At++}}return be[ne]=0,ne-Ve},wo=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee){var be=oe.charCodeAt(Ee);127>=be?ne++:2047>=be?ne+=2:55296<=be&&57343>=be?(ne+=4,++Ee):ne+=3}return ne},cn=new TextDecoder,Se=(oe,ne,Ee,be)=>{if(Ee=ne+Ee,be)return Ee;for(;oe[ne]&&!(ne>=Ee);)++ne;return ne},St=new TextDecoder("utf-16le"),_n=(oe,ne,Ee)=>(oe>>=1,St.decode(v.subarray(oe,Se(v,oe,ne/2,Ee)))),er=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),2>Ee)return 0;Ee-=2;var be=ne;Ee=Ee<2*oe.length?Ee/2:oe.length;for(var Ve=0;Ve<Ee;++Ve)B[ne>>1]=oe.charCodeAt(Ve),ne+=2;return B[ne>>1]=0,ne-be},Ea=oe=>2*oe.length,Cs=(oe,ne,Ee)=>{var be="";oe>>=2;for(var Ve=0;!(Ve>=ne/4);Ve++){var At=N[oe+Ve];if(!At&&!Ee)break;be+=String.fromCodePoint(At)}return be},dc=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),4>Ee)return 0;var be=ne;Ee=be+Ee-4;for(var Ve=0;Ve<oe.length;++Ve){var At=oe.codePointAt(Ve);if(65535<At&&Ve++,P[ne>>2]=At,ne+=4,ne+4>Ee)break}return P[ne>>2]=0,ne-be},Pd=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee)65535<oe.codePointAt(Ee)&&Ee++,ne+=4;return ne},TA=[],LS=oe=>{var ne=TA.length;return TA.push(oe),ne},Ia=(oe,ne)=>{for(var Ee=Array(oe),be=0;be<oe;++be)Ee[be]=Sr(N[ne+4*be>>2],`parameter ${be}`);return Ee},gR=(oe,ne,Ee)=>{var be=[];return oe=oe(be,Ee),be.length&&(N[ne>>2]=rs(be)),oe},_R={},USe=oe=>{var ne=_R[oe];return ne===void 0?qe(oe):ne},b5={},a$=()=>{if(!T5){var oe={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},ne;for(ne in b5)b5[ne]===void 0?delete oe[ne]:oe[ne]=b5[ne];var Ee=[];for(ne in oe)Ee.push(`${ne}=${oe[ne]}`);T5=Ee}return T5},T5,GSe=[null,[],[]],SA=new Uint8Array(123),lg=25;0<=lg;--lg)SA[48+lg]=52+lg,SA[65+lg]=lg,SA[97+lg]=26+lg;SA[43]=62,SA[47]=63,(()=>{let oe=Tt.prototype;Object.assign(oe,{isAliasOf:function(Ee){if(!(this instanceof Tt&&Ee instanceof Tt))return!1;var be=this.L.P.M,Ve=this.L.O;Ee.L=Ee.L;var At=Ee.L.P.M;for(Ee=Ee.L.O;be.U;)Ve=be.ea(Ve),be=be.U;for(;At.U;)Ee=At.ea(Ee),At=At.U;return be===At&&Ve===Ee},clone:function(){if(this.L.O||vt(this),this.L.da)return this.L.count.value+=1,this;var Ee=Ot,be=Object,Ve=be.create,At=Object.getPrototypeOf(this),ut=this.L;return Ee=Ee(Ve.call(be,At,{L:{value:{count:ut.count,ba:ut.ba,da:ut.da,O:ut.O,P:ut.P,S:ut.S,W:ut.W}}})),Ee.L.count.value+=1,Ee.L.ba=!1,Ee},delete(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");di(this);var Ee=this.L;--Ee.count.value,Ee.count.value===0&&(Ee.S?Ee.W.Y(Ee.S):Ee.P.M.Y(Ee.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");return this.L.ba=!0,this}});let ne=Symbol.dispose;ne&&(oe[ne]=oe.delete)})(),Object.assign(ro.prototype,{sa(oe){return this.na&&(oe=this.na(oe)),oe},ka(oe){var ne;(ne=this.Y)==null||ne.call(this,oe)},X:ye,N:function(oe){function ne(){return this.ga?lo(this.M.$,{P:this.xa,O:Ee,W:this,S:oe}):lo(this.M.$,{P:this,O:oe})}var Ee=this.sa(oe);if(!Ee)return this.ka(oe),null;var be=xn(this.M,Ee);if(be!==void 0)return be.L.count.value===0?(be.L.O=Ee,be.L.S=oe,be.clone()):(be=be.clone(),this.ka(oe),be);if(be=this.M.ra(Ee),be=Ct[be],!be)return ne.call(this);be=this.fa?be.oa:be.pointerType;var Ve=pt(Ee,this.M,be.M);return Ve===null?ne.call(this):this.ga?lo(be.M.$,{P:be,O:Ve,W:this,S:oe}):lo(be.M.$,{P:be,O:Ve})}}),i.print&&(A=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(m=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var c$,S5,ug,zSe={x:()=>Q(""),q:oe=>{var ne=ge[oe];delete ge[oe];var Ee=ne.ia,be=ne.Y,Ve=ne.la,At=Ve.map(ut=>ut.va).concat(Ve.map(ut=>ut.Ba));Ge([oe],At,ut=>{var xt={};return Ve.forEach((wn,Hn)=>{var dn=ut[Hn],ss=wn.ta,pu=wn.ua,Hc=ut[Hn+Ve.length],Wc=wn.Aa,hf=wn.Ca;xt[wn.qa]={read:wA=>dn.N(ss(pu,wA)),write:(wA,OS)=>{var gu=[];Wc(hf,wA,Hc.T(gu,OS)),fe(gu)},optional:ut[Hn].optional}}),[{name:ne.name,N:wn=>{var Hn={},dn;for(dn in xt)Hn[dn]=xt[dn].read(wn);return be(wn),Hn},T:(wn,Hn)=>{for(var dn in xt)if(!(dn in Hn||xt[dn].optional))throw new TypeError(`Missing field: "${dn}"`);var ss=Ee();for(dn in xt)xt[dn].write(ss,Hn[dn]);return wn!==null&&wn.push(be,ss),ss},X:ye,V:be}]})},n:(oe,ne,Ee,be,Ve)=>{ne=qe(ne),be=be===0n;let At=ut=>ut;if(be){let ut=8*Ee;At=xt=>BigInt.asUintN(ut,xt),Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(ut,xt)=>(typeof xt=="number"&&(xt=BigInt(xt)),xt),X:Wt(ne,Ee,!be),V:null})},B:(oe,ne,Ee,be)=>{ne=qe(ne),tn(oe,{name:ne,N:function(Ve){return!!Ve},T:function(Ve,At){return At?Ee:be},X:function(Ve){return this.N(S[Ve])},V:null})},j:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn,ss,pu)=>{dn=qe(dn),At=Vn(Ve,At),xt&&(xt=Vn(ut,xt)),Hn&&(Hn=Vn(wn,Hn)),pu=Vn(ss,pu);var Hc=ya(dn);Qo(Hc,function(){Wo(`Cannot construct ${dn} due to unbound types`,[be])}),Ge([oe,ne,Ee],be?[be]:[],Wc=>{if(Wc=Wc[0],be)var hf=Wc.M,wA=hf.$;else wA=Tt.prototype;Wc=ii(dn,function(...B5){if(Object.getPrototypeOf(this)!==OS)throw new tt(`Use 'new' to construct ${dn}`);if(gu.Z===void 0)throw new tt(`${dn} has no accessible constructor`);var l$=gu.Z[B5.length];if(l$===void 0)throw new tt(`Tried to invoke ctor of ${dn} with invalid number of parameters (${B5.length}) - expected (${Object.keys(gu.Z).toString()}) parameters instead!`);return l$.apply(this,B5)});var OS=Object.create(wA,{constructor:{value:Wc}});Wc.prototype=OS;var gu=new mr(dn,Wc,OS,pu,hf,At,xt,Hn);if(gu.U){var FS;(FS=gu.U).ja??(FS.ja=[]),gu.U.ja.push(gu)}return hf=new ro(dn,gu,!0,!1,!1),FS=new ro(dn+"*",gu,!1,!1,!1),wA=new ro(dn+" const*",gu,!1,!0,!1),Ct[oe]={pointerType:FS,oa:wA},$s(Hc,Wc),[hf,FS,wA]})},g:(oe,ne,Ee,be,Ve,At)=>{var ut=Ca(ne,Ee);Ve=Vn(be,Ve),Ge([],[oe],xt=>{xt=xt[0];var wn=`constructor ${xt.name}`;if(xt.M.Z===void 0&&(xt.M.Z=[]),xt.M.Z[ne-1]!==void 0)throw new tt(`Cannot register multiple constructors with identical number of parameters (${ne-1}) for class '${xt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return xt.M.Z[ne-1]=()=>{Wo(`Cannot construct ${xt.name} due to unbound types`,ut)},Ge([],ut,Hn=>(Hn.splice(1,0,null),xt.M.Z[ne-1]=jo(wn,Hn,null,Ve,At),[])),[]})},b:(oe,ne,Ee,be,Ve,At,ut,xt,wn)=>{var Hn=Ca(Ee,be);ne=qe(ne),ne=df(ne),At=Vn(Ve,At),Ge([],[oe],dn=>{function ss(){Wo(`Cannot call ${pu} due to unbound types`,Hn)}dn=dn[0];var pu=`${dn.name}.${ne}`;ne.startsWith("@@")&&(ne=Symbol[ne.substring(2)]),xt&&dn.M.ya.push(ne);var Hc=dn.M.$,Wc=Hc[ne];return Wc===void 0||Wc.R===void 0&&Wc.className!==dn.name&&Wc.aa===Ee-2?(ss.aa=Ee-2,ss.className=dn.name,Hc[ne]=ss):(Ro(Hc,ne,pu),Hc[ne].R[Ee-2]=ss),Ge([],Hn,hf=>(hf=jo(pu,hf,dn,At,ut,wn),Hc[ne].R===void 0?(hf.aa=Ee-2,Hc[ne]=hf):Hc[ne].R[Ee-2]=hf,[])),[]})},z:oe=>tn(oe,qa),r:(oe,ne,Ee,be)=>{function Ve(){}ne=qe(ne),Ve.values={},tn(oe,{name:ne,constructor:Ve,N:function(At){return this.constructor.values[At]},T:(At,ut)=>ut.value,X:Ka(ne,Ee,be),V:null}),Qo(ne,Ve)},d:(oe,ne,Ee)=>{var be=Sr(oe,"enum");ne=qe(ne),oe=be.constructor,be=Object.create(be.constructor.prototype,{value:{value:Ee},constructor:{value:ii(`${be.name}_${ne}`,function(){})}}),oe.values[Ee]=be,oe[ne]=be},m:(oe,ne,Ee)=>{ne=qe(ne),tn(oe,{name:ne,N:be=>be,T:(be,Ve)=>Ve,X:Bl(ne,Ee),V:null})},l:(oe,ne,Ee,be,Ve,At,ut)=>{var xt=Ca(ne,Ee);oe=qe(oe),oe=df(oe),Ve=Vn(be,Ve),Qo(oe,function(){Wo(`Cannot call ${oe} due to unbound types`,xt)},ne-1),Ge([],xt,wn=>(wn=[wn[0],null].concat(wn.slice(1)),$s(oe,jo(oe,wn,null,Ve,At,ut),ne-1),[]))},c:(oe,ne,Ee,be,Ve)=>{ne=qe(ne);let At=xt=>xt;if(be===0){var ut=32-8*Ee;At=xt=>xt<<ut>>>ut,Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(xt,wn)=>wn,X:Wt(ne,Ee,be!==0),V:null})},a:(oe,ne,Ee)=>{function be(At){return new Ve(b.buffer,N[At+4>>2],N[At>>2])}var Ve=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][ne];Ee=qe(Ee),tn(oe,{name:Ee,N:be,X:be},{wa:!0})},h:oe=>{tn(oe,Dl)},A:(oe,ne)=>{ne=qe(ne),tn(oe,{name:ne,N(Ee){var be=(be=Ee+4)?cn.decode(S.subarray(be,Se(S,be,N[Ee>>2],!0))):"";return ug(Ee),be},T(Ee,be){be instanceof ArrayBuffer&&(be=new Uint8Array(be));var Ve=typeof be=="string";if(!(Ve||ArrayBuffer.isView(be)&&be.BYTES_PER_ELEMENT==1))throw new tt("Cannot pass non-string to std::string");var At=Ve?wo(be):be.length,ut=S5(4+At+1),xt=ut+4;return N[ut>>2]=At,Ve?ta(be,xt,At+1):S.set(be,xt),Ee!==null&&Ee.push(ug,ut),ut},X:ye,V(Ee){ug(Ee)}})},f:(oe,ne,Ee)=>{if(Ee=qe(Ee),ne===2)var be=_n,Ve=er,At=Ea;else be=Cs,Ve=dc,At=Pd;tn(oe,{name:Ee,N:ut=>{var xt=be(ut+4,N[ut>>2]*ne,!0);return ug(ut),xt},T:(ut,xt)=>{if(typeof xt!="string")throw new tt(`Cannot pass non-string to C++ string type ${Ee}`);var wn=At(xt),Hn=S5(4+wn+ne);return N[Hn>>2]=wn/ne,Ve(xt,Hn+4,wn+ne),ut!==null&&ut.push(ug,Hn),Hn},X:ye,V(ut){ug(ut)}})},i:(oe,ne,Ee,be,Ve,At)=>{ge[oe]={name:qe(ne),ia:Vn(Ee,be),Y:Vn(Ve,At),la:[]}},e:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn)=>{ge[oe].la.push({qa:qe(ne),va:Ee,ta:Vn(be,Ve),ua:At,Ba:ut,Aa:Vn(xt,wn),Ca:Hn})},C:(oe,ne)=>{ne=qe(ne),tn(oe,{ma:!0,name:ne,N:()=>{},T:()=>{}})},p:(oe,ne,Ee)=>{var[be,...Ve]=Ia(oe,ne);ne=be.T.bind(be);var At=Ve.map(wn=>wn.X.bind(wn));oe--;var ut={toValue:vd};switch(oe=At.map((wn,Hn)=>{var dn=`argFromPtr${Hn}`;return ut[dn]=wn,`${dn}(args${Hn?"+"+8*Hn:""})`}),Ee){case 0:var xt="toValue(handle)";break;case 2:xt="new (toValue(handle))";break;case 3:xt="";break;case 1:ut.getStringOrSymbol=USe,xt="toValue(handle)[getStringOrSymbol(methodName)]"}return xt+=`(${oe})`,be.ma||(ut.toReturnWire=ne,ut.emval_returnValue=gR,xt=`return emval_returnValue(toReturnWire, destructorsRef, ${xt})`),xt=`return function (handle, methodName, destructorsRef, args) { + ${xt} + }`,Ee=new Function(Object.keys(ut),xt)(...Object.values(ut)),xt=`methodCaller<(${Ve.map(wn=>wn.name)}) => ${be.name}>`,LS(ii(xt,Ee))},E:Qs,o:(oe,ne,Ee,be,Ve)=>TA[oe](ne,Ee,be,Ve),D:oe=>{var ne=vd(oe);fe(ne),Qs(oe)},s:(oe,ne,Ee,be)=>{var Ve=new Date().getFullYear(),At=new Date(Ve,0,1).getTimezoneOffset();Ve=new Date(Ve,6,1).getTimezoneOffset(),N[oe>>2]=60*Math.max(At,Ve),P[ne>>2]=+(At!=Ve),ne=ut=>{var xt=Math.abs(ut);return`UTC${0<=ut?"-":"+"}${String(Math.floor(xt/60)).padStart(2,"0")}${String(xt%60).padStart(2,"0")}`},oe=ne(At),ne=ne(Ve),Ve<At?(ta(oe,Ee,17),ta(ne,be,17)):(ta(oe,be,17),ta(ne,Ee,17))},y:oe=>{var ne=S.length;if(oe>>>=0,2147483648<oe)return!1;for(var Ee=1;4>=Ee;Ee*=2){var be=ne*(1+.2/Ee);be=Math.min(be,oe+100663296);e:{be=(Math.min(2147483648,65536*Math.ceil(Math.max(oe,be)/65536))-I.buffer.byteLength+65535)/65536|0;try{I.grow(be),M();var Ve=1;break e}catch{}Ve=void 0}if(Ve)return!0}return!1},t:(oe,ne)=>{var Ee=0,be=0,Ve;for(Ve of a$()){var At=ne+Ee;N[oe+be>>2]=At,Ee+=ta(Ve,At,1/0)+1,be+=4}return 0},u:(oe,ne)=>{var Ee=a$();N[oe>>2]=Ee.length,oe=0;for(var be of Ee)oe+=wo(be)+1;return N[ne>>2]=oe,0},v:()=>52,w:function(){return 70},k:(oe,ne,Ee,be)=>{for(var Ve=0,At=0;At<Ee;At++){var ut=N[ne>>2],xt=N[ne+4>>2];ne+=8;for(var wn=0;wn<xt;wn++){var Hn=oe,dn=S[ut+wn],ss=GSe[Hn];dn===0||dn===10?(Hn=Hn===1?A:g,dn=Se(ss,0),dn=cn.decode(ss.buffer?ss.subarray(0,dn):new Uint8Array(ss.slice(0,dn))),Hn(dn),ss.length=0):ss.push(dn)}Ve+=xt}return N[be>>2]=Ve,0}},k0=await async function(){var oe;function ne(be){var Ve;return k0=be.exports,I=k0.F,M(),ea=k0.H,be=k0,c$=be.I,i._malloc=S5=be.J,i._free=ug=be.K,O--,(Ve=i.monitorRunDependencies)==null||Ve.call(i,O),O==0&&U&&(be=U,U=null,be()),k0}O++,(oe=i.monitorRunDependencies)==null||oe.call(i,O);var Ee={a:zSe};return i.instantiateWasm?new Promise(be=>{i.instantiateWasm(Ee,(Ve,At)=>{be(ne(Ve))})}):(z??(z=he("AGFzbQEAAAAB2QM5YAF/AX9gAn9/AGABfwBgA39/fwF/YAJ/fwF/YAN/f38AYAZ/f39/f38Bf2AFf39/f38Bf2AEf39/fwBgBH9/f38Bf2AGf39/f39/AGAFf39/f38AYAAAYAh/f39/f39/fwF/YAd/f39/f39/AX9gAAF/YAV/fn5+fgBgCn9/f39/f39/f38AYAd/f39/f39/AGAFf39/f34Bf2AIf39/f39/f38AYAR/fn5/AGADf35/AX5gBX9/fn9/AGACf34AYAp/f39/f39/f39/AX9gDH9/f39/f39/f39/fwF/YAN/f38BfmAGf39/f35/AX9gD39/f39/f39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAGf3x/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/f398AX9gDX9/f39/f39/f39/f38AYAV/f39+fgBgBX9/f39/AXxgBH9+f38Bf2ACf3wAYAR+fn5+AX9gAn5/AX9gBH9/f34BfmACfn4BfGABfwF8YAN/f38BfGADf39/AX1gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2ACfH8BfGAEf39/fQF/YAR/f399AGADf399AAK7AR8BYQFhAAUBYQFiABEBYQFjAAsBYQFkAAUBYQFlABEBYQFmAAUBYQFnAAoBYQFoAAEBYQFpAAoBYQFqACQBYQFrAAkBYQFsABQBYQFtAAUBYQFuACUBYQFvACYBYQFwAAMBYQFxAAIBYQFyAAgBYQFzAAgBYQF0AAQBYQF1AAQBYQF2AAABYQF3ACcBYQF4AAwBYQF5AAABYQF6AAIBYQFBAAEBYQFCAAgBYQFDAAEBYQFEAAIBYQFFAAIDjQWLBQAAAQQAAAIAAQABAQQEAg8QAgAEBQACAwAAAAIDAQwAABAEBQgVCwAAAAAQBAAFAAEBAwQAAAQBAQEAAAwBAQADAwACBBgFBQcHAwAAKA0NCAEDAQABAAQAAAgEAQEAAAwGBAQBAQYDKQUAFQMMAAQBAAEBBQQEBwMZABkAAQABAAQBBAABACoBAAEHAQAFBAUBAAgDBAIECwEUAgIBAAACCQABBAAACQEJAwcIBA4EDgQJCQQAAQABAAACAQQAAgADAgAGAQoFCAQFAQwAAAMBBAAABAsEAgACAxoLAAMaCwgCGwArAQAJEAAEAgIDAgAABBgBACwEAQUtAQIMAAgCBBwGHAYACQkBBAwIAwECFAUFBQAEBAIABQACBQ8FAwUFAAIAAAcNDQcNDQUABw0EAAQCAgIBAAIBAQIAAwMdEQMBHREAAAADCwEeAQAABQEeAQEBCgsKCgsKCg8AAxICEgcJBxIJBwkHCRIDBgMILgwvHwkGCR8JAQUbCQAABwQCAAQEAzAxMggQEBUzNAEAAAAAAAMEAAEFAQUBAAACAQgCBAAAAgICBAAMAgQDCAAOBzUAAQMAAAkDCAU2Azc4CgoKCwsLAwgICAMCDwIAAgACAAIAAgUAAgACAAIAAgACBAACAAIAAgACAAUBAQEBAQEAAAIEAgAHAAcNDQIHBwMJAwQDBAIHAwkDBAMEAgkJCQMCAg8DCgoGIQUGIQUODgEADg4DDg4NBQYGBgYGBQ0GBgYGBgciIxMHEwcHAAciBCMTBxMJBwcGBgYGBgYGBgYGBgYGBgAGBgYIAQYDCAcDCAcDAwICAAIACAIXBAQAAAACAgAAAgACAAMAAAMIFwMCABYBIBYDDAQHAXABgAOAAwUHAQGCAoCAAgYIAX8BQfD+BQsHGwYBRgIAAUcAqQUBSAEAAUkA1gMBSgA0AUsALQm/BQEAQQEL/wKQA/sE9wTmBOEE3gT/AvsC/ATPBGvJBMUEwgT/AvsCwQS+BNcDuwS2BLUErgTPAssClQSLBIEE9gPsAzDPAssCpQLfA94DoALdA9wDpQLbA9oDoALZA9gDnALVA9QDRqgFpwWmBaUFlAKiBZMCoQWgBZ8FRkaeBZ0FnAXIA5sFyAOQAsYDmgWZBY8CwQOYBZcF2AGOApYFlAWVBZMF/AGMBY0FiwWQBY8FjgWxAYwCigWJBYgFhwWJAoYFhQWEBS3hAdICiQSHBIUEgwSABP4D/AP6A/gD9QPzA/ED7wPtA9YCtASzBNACpgSlBKQEowSiBNECoQSgBJ8E2wKdBJwEmwSaBJkERpgElwTEApYEkwSSBJEEjwSNBMMClASSBZEFkASOBIwEiQEwMLIEsQSwBK8ErQSsBKsEqgTRAqkEqASnBDDOAs4CqgHiAeIBngTiATDKAskCqgFGRsgCvgEwygLJAqoBRkbIAr4BMMcCxgKqAUZGxQK+ATDHAsYCqgFGRsUCvgGJATCDBYIFgQWJATCABf8E/gQw/QT6BPkE+ASUA5QD9gT1BPQE8wTyBDDxBPAE7wTuBIwDjAPtBOwE6wTqBOkEMOgE5wTlBOQE4wTiBOAE3wQw3QTcBNsE2gTZBNgE1wTWBIkBMPwC1QTUBNME0gTRBNAEigSGBIIE9APwA/0D+QOJATD8As4EzQTMBMsEygTIBIgEhAT/A/ID7gP7A/cD7QHCAscE7QHCAsYEMMUBxQFXV1fyAkZ0dDDFAcUBV1dX8gJGdHQwxAHEAVdXV/ECRnR0MMQBxAFXV1fxAkZ0dDDEBMMEMMAEvwQwvQS8BDC6BLkEMNwCuASTAjDcArcEkwKJAesD6wGjBaQFiQEw4QHhAawCMKwCMOoD4APjA+kDMOED5APoAzDiA+UD5wMw5gMMASoKwLAIiwUTACAAEEcEQCAAKAIEDwsgABBeCxoBAX8gABBHBEAgACgCACAAEH4aEIsCCyAAC4sBAQN/IAAQHyICIAFJBEAjAEEQayIEJAAgASACayICBEAgAiAAECgiAyAAEB8iAWtLBEAgACADIAIgA2sgAWogASABEPQBCyABIAAQIyIDaiACQQAQsgIgACABIAJqIgAQgwEgBEEAOgAPIAAgA2ogBEEPahBdCyAEQRBqJAAPCyAAIAAQIyABEMACCwkAIAAQIyABagsRACAAEEcEQCAAKAIADwsgAAsSACAAQgA3AgAgAEEANgIIIAALFgAgACgCACIAQaDxAUcEQCAAEL8BCwuLAgIDfwJ+AkAgACkDcCIEUEUgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQyQMNACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADCwwAIAAgAUEcahDVAgsZAQF/QQohASAAEEcEfyAAEH5BAWsFQQoLC3kBA38CQCABELcCIQIgABDxASEDIAAQHyEEIAIgA00EQCAAECMiAyABIAIQZSMAQRBrIgEkACAAEB8aIAAgAhCDASABQQA2AgwgAyACQQJ0aiABQQxqEFYgAUEQaiQADAELIAAgAyACIANrIARBACAEIAIgARCvAgsLDgAgACABIAEQqAEQsQILEAAgABCyAyABELIDc0EBcwsQACAAELMDIAEQswNzQQFzC4EMAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0Gc6gEoAgBJDQEgACAEaiEAAkACQAJAQaDqASgCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAygCGCEHIAEgA0cEQCADKAIIIgIgATYCDCABIAI2AggMBAsgAygCFCICBH8gA0EUagUgAygCECICRQ0DIANBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBlOoBIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdCICKAK87AEgA0YEQCACQbzsAWogATYCACABDQFBkOoBQZDqASgCAEF+IAR3cTYCAAwCCwJAIAMgBygCEEYEQCAHIAE2AhAMAQsgByABNgIUCyABRQ0BCyABIAc2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgBU8NACAFKAIEIgRBAXFFDQACQAJAAkACQCAEQQJxRQRAQaTqASgCACAFRgRAQaTqASADNgIAQZjqAUGY6gEoAgAgAGoiADYCACADIABBAXI2AgQgA0Gg6gEoAgBHDQZBlOoBQQA2AgBBoOoBQQA2AgAPC0Gg6gEoAgAiByAFRgRAQaDqASADNgIAQZTqAUGU6gEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnQiAigCvOwBIAVGBEAgAkG87AFqIAE2AgAgAQ0BQZDqAUGQ6gEoAgBBfiAEd3E2AgAMAgsCQCAFIAgoAhBGBEAgCCABNgIQDAELIAggATYCFAsgAUUNAQsgASAINgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIAMgB0cNAEGU6gEgADYCAA8LIABB/wFNBEAgAEF4cUG06gFqIQICf0GM6gEoAgAiBEEBIABBA3Z0IgBxRQRAQYzqASAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QbzsAWohBAJ/AkACf0GQ6gEoAgAiBkEBIAF0IgJxRQRAQZDqASACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBBrOoBQazqASgCAEEBayIAQX8gABs2AgALC+kCAQZ/QZzxAS0AAARAQZjxASgCAA8LIwBBIGsiAiQAAkACQANAIAJBCGoiBCAAQQJ0IgNqAn9BASAAdEH/////B3EiBUEBckUEQCADKAIADAELIABBjBZBxh8gBRsQogMLIgM2AgAgA0F/Rg0BIABBAWoiAEEGRw0AC0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkGU6gEoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEG06gFqIgIgACgCvOoBIgAoAggiBUYEQEGM6gEgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQbTqAWohAUGg6gEoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEGM6gEgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBBoOoBIAc2AgBBlOoBIAU2AgAMCwtBkOoBKAIAIgtFDQEgC2hBAnQoArzsASICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQZDqASgCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdCgCvOwBIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0KAK87AEhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBlOoBKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkGU6gEoAgAiBU0EQEGg6gEoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQZTqASABNgIAQaDqASACNgIAIABBCGohAAwJCyAGQZjqASgCACICSQRAQZjqASACIAZrIgE2AgBBpOoBQaTqASgCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QeTtASgCAARAQeztASgCAAwBC0Hw7QFCfzcCAEHo7QFCgKCAgICABDcCAEHk7QEgCkEMakFwcUHYqtWqBXM2AgBB+O0BQQA2AgBByO0BQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBxO0BKAIAIgUEQEG87QEoAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBByO0BLQAAQQRxRQRAAkACQAJAAkBBpOoBKAIAIgUEQEHM7QEhAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEKUBIgJBf0YNAyABIQRB6O0BKAIAIgBBAWsiBSACcQRAIAEgAmsgAiAFakEAIABrcWohBAsgBCAGTQ0DQcTtASgCACIABEBBvO0BKAIAIgUgBGoiByAFTSAAIAdJcg0ECyAEEKUBIgAgAkcNAQwFCyAEIAJrIAdxIgQQpQEiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtB7O0BKAIAIgIgAyAEa2pBACACa3EiAhClAUF/Rg0BIAIgBGohBCAAIQIMAwsgAkF/Rw0CC0HI7QFByO0BKAIAQQRyNgIACyABEKUBIgJBf0ZBABClASIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0G87QFBvO0BKAIAIARqIgA2AgBBwO0BKAIAIABJBEBBwO0BIAA2AgALAkBBpOoBKAIAIgMEQEHM7QEhAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQZzqASgCACIAQQAgACACTRtFBEBBnOoBIAI2AgALQQAhAEHQ7QEgBDYCAEHM7QEgAjYCAEGs6gFBfzYCAEGw6gFB5O0BKAIANgIAQdjtAUEANgIAA0AgAEEDdCIBIAFBtOoBaiIFNgK86gEgASAFNgLA6gEgAEEBaiIAQSBHDQALQZjqASAEQShrIgBBeCACa0EHcSIBayIFNgIAQaTqASABIAJqIgE2AgAgASAFQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQaTqASADQXggA2tBB3EiAGoiATYCAEGY6gFBmOoBKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQajqAUH07QEoAgA2AgAMAwtBACEADAYLQQAhAAwEC0Gc6gEoAgAgAksEQEGc6gEgAjYCAAsgAiAEaiEFQcztASEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBzO0BIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQZjqASAEQShrIgBBeCACa0EHcSIBayIHNgIAQaTqASABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGo6gFB9O0BKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQdTtASkCADcCECABQcztASkCADcCCEHU7QEgAUEIajYCAEHQ7QEgBDYCAEHM7QEgAjYCAEHY7QFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBtOoBaiEAAn9BjOoBKAIAIgFBASACQQN2dCICcUUEQEGM6gEgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QbzsAWohAQJAAkBBkOoBKAIAIgVBASAAdCIEcUUEQEGQ6gEgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQZjqASgCACIAIAZNDQBBmOoBIAAgBmsiATYCAEGk6gFBpOoBKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0GI6gFBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBpOoBKAIAIARGBEBBpOoBIAM2AgBBmOoBQZjqASgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0Gg6gEoAgAgBEYEQEGg6gEgAzYCAEGU6gFBlOoBKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEGM6gFBjOoBKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdCIBKAK87AEgBEYEQCABQbzsAWogAjYCACACDQFBkOoBQZDqASgCAEF+IAB3cTYCAAwCCwJAIAQgBigCEEYEQCAGIAI2AhAMAQsgBiACNgIUCyACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H/AU0EQCAHQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgB0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H///8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QbzsAWohAAJAAkBBkOoBKAIAIgFBASACdCIFcUUEQEGQ6gEgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdCICKAK87AEgBUYEQCACQbzsAWogADYCACAADQFBkOoBIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQbTqAWohAAJ/QYzqASgCACIBQQEgA0EDdnQiAnFFBEBBjOoBIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QbzsAWohAQJAAkAgB0EBIAB0IgJxRQRAQZDqASACIAdyNgIAIAEgBDYCACAEIAE2AhgMAQsgA0EZIABBAXZrQQAgAEEfRxt0IQAgASgCACEBA0AgASICKAIEQXhxIANGDQIgAEEddiEBIABBAXQhACACIAFBBHFqIgcoAhAiAQ0ACyAHIAQ2AhAgBCACNgIYCyAEIAQ2AgwgBCAENgIIDAELIAIoAggiACAENgIMIAIgBDYCCCAEQQA2AhggBCACNgIMIAQgADYCCAsgBUEIaiEADAELAkAgCUUNAAJAIAIoAhwiAUECdCIFKAK87AEgAkYEQCAFQbzsAWogADYCACAADQFBkOoBIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQbTqAWohAEGg6gEoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEGM6gEgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0Gg6gEgBTYCAEGU6gEgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsIACAAQQAQPAsVACAAIAE2AgAgACACKAIANgIEIAALCgAgACgCABC9AwsLACAAKAIAEMMDwAsXACAAEEcEQCAAKAIAIAAQfhCpAQsgAAs7AQJ/IwBBEGsiASQAIAEgADYCDCABKAIMIgAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0LIAFBEGokAAstACACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAAoAgQgASgCBBDQAUULIQEBfyAAKAIAIQIgACABNgIAIAIEQCACIAAoAgQRAgALCwYAEMoDAAsNACAAKAIAELwDGiAACw0AIAAoAgAQnQIaIAALdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC/////w+DIgMgAUL/////D4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC/////w+DfCIBQiCIfDcDCCAAIAVC/////w+DIAFCIIaENwMACxEAIAAgASAAKAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUNAQsLIAAgAzcDACAAIAQ3AwggBkHwAGokAAsRACAAIAEgACgCACgCLBEEAAsIACAAQYABSQsRACACBEAgACABIAL8CgAACwsJACAAECMQ9wELhAECAn8BfiMAQRBrIgMkACAAAn4gAUUEQEIADAELIAMgASABQR91IgJzIAJrIgKtQgAgAmciAkHRAGoQRCADKQMIQoCAgICAgMAAhUGegAEgAmutQjCGfEKAgICAgICAgIB/QgAgAUEASBuEIQQgAykDAAs3AwAgACAENwMIIANBEGokAAsNACAAIAFB/wBxOgALC6oMAQh/An9BACABRQ0AGiAAQX9zIQMgAkEXTwRAAkAgAUEDcUUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFrIgBFIAFBAWoiBEEDcUVyRQRAIAEtAAEgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBAmsiAEUgAUECaiIEQQNxRXJFBEAgAS0AAiADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEDayIARSABQQNqIgRBA3FFckUEQCABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyABQQRqIQEgAkEEayECDAMLIAAhAiAEIQEMAgsgACECIAQhAQwBCyAAIQIgBCEBCyACQRRuIghBbGwhCgJAIAhBAWsiCUUEQEEAIQQMAQsgASEAQQAhBANAIAAoAhAgB3MiB0EWdkH8B3EoAtBTIAdBDnZB/AdxKALQSyAHQQZ2QfwHcSgC0EMgB0H/AXFBAnQoAtA7c3NzIQcgACgCDCAGcyIGQRZ2QfwHcSgC0FMgBkEOdkH8B3EoAtBLIAZBBnZB/AdxKALQQyAGQf8BcUECdCgC0Dtzc3MhBiAAKAIIIARzIgRBFnZB/AdxKALQUyAEQQ52QfwHcSgC0EsgBEEGdkH8B3EoAtBDIARB/wFxQQJ0KALQO3NzcyEEIAAoAgQgBXMiBUEWdkH8B3EoAtBTIAVBDnZB/AdxKALQSyAFQQZ2QfwHcSgC0EMgBUH/AXFBAnQoAtA7c3NzIQUgACgCACADcyIDQRZ2QfwHcSgC0FMgA0EOdkH8B3EoAtBLIANBBnZB/AdxKALQQyADQf8BcUECdCgC0Dtzc3MhAyAAQRRqIQAgCUEBayIJDQALIAEgCEEUbGpBFGshAQsgAiAKaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACADcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgBXNzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBB/wFxQQJ0KALQMyAEc3MgAEEIdnMiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEH/AXFBAnQoAtAzIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQf8BcUECdCgC0DMgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnQoAtAzcyIAQQh2IABB/wFxQQJ0KALQM3MiAEEIdiAAQf8BcUECdCgC0DNzIgBBCHYgAEH/AXFBAnQoAtAzcyEDIAFBFGohAQsgAkEHSwRAA0AgAS0AACADc0H/AXFBAnQoAtAzIANBCHZzIgBBCHYgAS0AASAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAIgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQADIABzQf8BcUECdCgC0DNzIgBBCHYgAS0ABCAAc0H/AXFBAnQoAtAzcyIAQQh2IAEtAAUgAHNB/wFxQQJ0KALQM3MiAEEIdiABLQAGIABzQf8BcUECdCgC0DNzIgBBCHYgAS0AByAAc0H/AXFBAnQoAtAzcyEDIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACABLQAAIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQFGDQAgAS0AASADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkECRg0AIAEtAAIgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBA0YNACABLQADIANzQf8BcUECdCgC0DMgA0EIdnMhAyACQQRGDQAgAS0ABCADc0H/AXFBAnQoAtAzIANBCHZzIQMgAkEFRg0AIAEtAAUgA3NB/wFxQQJ0KALQMyADQQh2cyEDIAJBBkYNACABLQAGIANzQf8BcUECdCgC0DMgA0EIdnMhAwsgA0F/cwsL5QMBBX8jAEEQayIDJAAgAyAAKAIAIgRBCGsoAgAiAjYCDCADIAAgAmo2AgQgAyAEQQRrKAIANgIIIAMoAggiBCABQQAQOyECIAMoAgQhBQJAIAIEQCADKAIMIQAjAEFAaiIBJAAgAUFAayQAQQAgBSAAGyECDAELIwBBQGoiAiQAIAAgBU4EQCACQgA3AhwgAkIANwIkIAJCADcCLCACQgA3AhQgAkEANgIQIAIgATYCDCACIAQ2AgQgAkEANgI8IAJCgYCAgICAgIABNwI0IAIgADYCCCAEIAJBBGogBSAFQQFBACAEKAIAKAIUEQoAIABBACACKAIcGyEGCyACQUBrJAAgBiICDQAjAEFAaiICJAAgAkEANgIQIAJBlNYBNgIMIAIgADYCCCACIAE2AgRBACEAIAJBFGpBAEEn/AsAIAJBADYCPCACQQE6ADsgBCACQQRqIAVBAUEAIAQoAgAoAhgRCwACQAJAAkAgAigCKA4CAAECCyACKAIYQQAgAigCJEEBRhtBACACKAIgQQFGG0EAIAIoAixBAUYbIQAMAQsgAigCHEEBRwRAIAIoAiwNASACKAIgQQFHDQEgAigCJEEBRw0BCyACKAIUIQALIAJBQGskACAAIQILIANBEGokACACCzwBAn9BASAAIABBAU0bIQEDQAJAIAEQNCIADQBB5P4BKAIAIgJFDQAgAhEMAAwBCwsgAEUEQBDrAQsgAAsUAQF/QQQQUyIBIAAoAgA2AgAgAQsLACAAIAE2AgAgAAsMACAAIAEoAgA2AgALBwAgABAkGgsRACAAIAEgASgCACgCFBEBAAsPACAAIAAoAgAoAhARAAALBwAgABAfRQsJAEGFEBCuAgALEAAgACABQYCAgIB4cjYCCAsMACAAIAEtAAA6AAALCwAgAC0AC0H/AHELEwAgACABIAIgACgCACgCDBEDAAsiAQF/IAIQTAR/IAAoAgggAkECdGooAgAgAXFBAEcFQQALC+wBAQN/IABFBEBB0N4BKAIABEBB0N4BKAIAEGEhAQtBgOABKAIABEBBgOABKAIAEGEgAXIhAQtBwOABKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEGEgAXIhAQsgACgCOCIADQALCyABDwsgACgCTEEASCECAkACQCAAKAIUIAAoAhxGDQAgAEEAQQAgACgCJBEDABogACgCFA0AQX8hAQwBCyAAKAIEIgEgACgCCCIDRwRAIAAgASADa6xBASAAKAIoERYAGgtBACEBIABBADYCHCAAQgA3AxAgAEIANwIEIAINAAsgAQsSACAAKAIAIgAEQCAAEJwDGgsLEQAgACABKAIAEJwDNgIAIAALQQEBfyAAIAE3A3AgACAAKAIsIAAoAgQiAmusNwN4IAAgAVAgASAAKAIIIgAgAmusWXIEfyAABSACIAGnags2AmgLHgACQCACRQ0AIAJBAnQiAkUNACAAIAEgAvwKAAALCxYAIAAgASgCADYCACAAIAIoAgA2AgQLtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahArDQAaQQQgA0HAACAAEDciBhBfRQ0AGiADIAYQlAEhAQNAAkAgABA+GiABQTBrIQEgACAFQQxqECsgBEECSHINACADQcAAIAAQNyIGEF9FDQMgBEEBayEEIAMgBhCUASABQQpsaiEBDAELCyAAIAVBDGoQK0UNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELtQEBAn8jAEEQayIFJAAgBSABNgIMQQAhAQJAIAICf0EGIAAgBUEMahAsDQAaQQQgA0HAACAAEDgiBhBgRQ0AGiADIAYQlQEhAQNAAkAgABA/GiABQTBrIQEgACAFQQxqECwgBEECSHINACADQcAAIAAQOCIGEGBFDQMgBEEBayEEIAMgBhCVASABQQpsaiEBDAELCyAAIAVBDGoQLEUNAUECCyACKAIAcjYCAAsgBUEQaiQAIAELYwAgAigCBEGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgAkEwRyABIABrQQJIcg0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACy4AAkAgACgCBEHKAHEiAARAIABBwABGBEBBCA8LIABBCEcNAUEQDwtBAA8LQQoLEAAgACgCBCAAKAIAa0ECdQvOAQIEfgJ/IwBBEGsiBiQAIAG9IgVC/////////weDIQIgAAJ+IAVCNIhC/w+DIgNQRQRAIANC/w9SBEAgAkIEiCEEIANCgPgAfCEDIAJCPIYMAgsgAkIEiCEEQv//ASEDIAJCPIYMAQsgAlAEQEIAIQNCAAwBCyAGIAJCACACeaciB0ExahBEIAYpAwhCgICAgICAwACFIQRBjPgAIAdrrSEDIAYpAwALNwMAIAAgBUKAgICAgICAgIB/gyADQjCGhCAEhDcDCCAGQRBqJAALsgMBA38jAEEQayIIJAAgCCACNgIIIAggATYCDCAIQQRqIgEgAxAnIAEQSCEJIAEQJSAEQQA2AgBBACEBAkADQCAGIAdGIAFyDQECQCAIQQxqIAhBCGoQKw0AAkAgCSAGKAIAEJQBQSVGBEAgBkEEaiAHRg0CQQAhAgJ/AkAgCSAGKAIEEJQBIgFBxQBGDQBBBCEKIAFB/wFxQTBGDQAgAQwBCyAGQQhqIAdGDQNBCCEKIAEhAiAJIAYoAggQlAELIQEgCCAAIAgoAgwgCCgCCCADIAQgBSABIAIgACgCACgCJBENADYCDCAGIApqQQRqIQYMAQsgCUEBIAYoAgAQXwRAA0AgByAGQQRqIgZHBEAgCUEBIAYoAgAQXw0BCwsDQCAIQQxqIgEgCEEIahArDQIgCUEBIAEQNxBfRQ0CIAEQPhoMAAsACyAJIAhBDGoiARA3EEEgCSAGKAIAEEFGBEAgBkEEaiEGIAEQPhoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECsEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQAC7QDAQN/IwBBEGsiCCQAIAggAjYCCCAIIAE2AgwgCEEEaiIBIAMQJyABEEkhCSABECUgBEEANgIAQQAhAQJAA0AgBiAHRiABcg0BAkAgCEEMaiAIQQhqECwNAAJAIAkgBiwAABCVAUElRgRAIAZBAWogB0YNAkEAIQICfwJAIAkgBiwAARCVASIBQcUARg0AQQEhCiABQf8BcUEwRg0AIAEMAQsgBkECaiAHRg0DQQIhCiABIQIgCSAGLAACEJUBCyEBIAggACAIKAIMIAgoAgggAyAEIAUgASACIAAoAgAoAiQRDQA2AgwgBiAKakEBaiEGDAELIAlBASAGLAAAEGAEQANAIAcgBkEBaiIGRwRAIAlBASAGLAAAEGANAQsLA0AgCEEMaiIBIAhBCGoQLA0CIAlBASABEDgQYEUNAiABED8aDAALAAsgCSAIQQxqIgEQOBDOASAJIAYsAAAQzgFGBEAgBkEBaiEGIAEQPxoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqECwEQCAEIAQoAgBBAnI2AgALIAgoAgwgCEEQaiQACxYAIAAgASACIAMgACgCACgCMBEJABoLPAAgACwAC0EASARAIAAoAggaIAAoAgAQLQsgACABKQIANwIAIAAgASgCCDYCCCABQQA6AAsgAUEAOgAACxMAIAIEQCAAIAEgAvwKAAALIAALKwEBfyMAQRBrIgIkACACIAE2AgxBwN0BIAAgAUEAQQAQ0QMaIAJBEGokAAsjAQF/IwBBEGsiASQAIAEgADYCDCABQQxqEOwBIAFBEGokAAsMACAAQYKGgCA2AAALEQAgABAjIAAQH0ECdGoQ9wELDQAgACgCACABKAIARgsOACAAECMgABAfahD3AQsPACAAIAAoAgAoAgwRAAALFgAgACABIAIgAyAAKAIAKAIgEQkAGgtEAQF/IAAoAgAhAiABEDEhACACQQhqIgEQayAASwR/IAEgABCCASgCAEEARwVBAAtFBEAQPQALIAJBCGogABCCASgCAAsRACAAIAEgASgCACgCHBEBAAsRACAAIAEgASgCACgCGBEBAAsQACAAQSBGIABBCWtBBUlyCw4AIAAoAghB/////wdxC9cBAQF/AkBBjN4BKAIAIgBBAE4EQCAARQ0BQZThASgCACAAQf////8DcUcNAQsCQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADwtBwN0BEN4BDwtBjN4BQYzeASgCACIAQf////8DIAAbNgIAAkACQEGQ3gEoAgBBCkYNAEHU3QEoAgAiAEHQ3QEoAgBGDQBB1N0BIABBAWo2AgAgAEEKOgAADAELQcDdARDeAQtBjN4BKAIAGkGM3gFBADYCAAvDAQEEfyMAQRBrIgckAAJAIABFDQAgBCgCDCEJIAIgAWsiBkEASgRAIAAgASAGIAAoAgAoAjARAwAgBkcNAQsgAyABayIBIAlIBEAgB0EEaiIGIAkgAWsiASAFELACIAAgBygCBCAGIAcsAA9BAEgbIAEgACgCACgCMBEDACEFIAYQIBogASAFRw0BCyADIAJrIgFBAEoEQCAAIAIgASAAKAIAKAIwEQMAIAFHDQELIARBADYCDCAAIQgLIAdBEGokACAIC14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARBEGokAAsEACAAC1ABAX4CQCADQcAAcQRAIAIgA0FAaq2IIQFCACECDAELIANFDQAgAkHAACADa62GIAEgA60iBIiEIQEgAiAEiCECCyAAIAE3AwAgACACNwMIC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLCQBB+gsQrgIACxQBAX9BCBBTIgEgACkCADcDACABCwoAIAAgASAAa2oLGQEBfyABEMECIQIgACABNgIEIAAgAjYCAAskACAAQQJPBH8gAEECakF+cSIAIABBAWsiACAAQQJGGwVBAQsLlgEBA38CQCABELcCIQIjAEEQayIDJAAgAkH3////A00EQAJAIAIQvQEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQZSADQQA2AgQgBCACQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACwsRACAAIAEgASgCACgCLBEBAAvHAQEGfyMAQRBrIgQkACAAEPIBKAIAIQUCfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDQQQgAxshAyABKAIAIQYgACgCACEHIAVB5ABGBH9BAAUgACgCAAsgAxDcASIIBEAgBUHkAEcEQCAAEKwBGgsgBEHjADYCBCAAIARBCGogCCAEQQRqEDYiBRDrAiAFEDUgASAAKAIAIAYgB2tqNgIAIAIgACgCACADQXxxajYCACAEQRBqJAAPCxA9AAsTACAAIAFBACAAKAIAKAI0EQMACxMAIAAgAUEAIAAoAgAoAiQRAwALQgEBfyMAQRBrIgUkACAFIAI2AgwgBSAENgIIIAVBBGogBUEMahBjIAAgASADIAUoAggQ0QEhABBiIAVBEGokACAAC0EBAX8jAEEQayIDJAAgAyACNgIMQaAgIAFB7CBBzSxBHCADQQxqIgEQVEHsIEHRLEEdIAEQVBAEIANBEGokACAAC+oCAQJ/IwBBEGsiCiQAIAogADYCDAJAAkACQCADKAIAIgsgAkcNACAJKAJgIABGBH9BKwUgACAJKAJkRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUHoAGogCkEMahD5ASAJa0ECdSIFQRdKDQECQAJAAkAgAUEIaw4DAAIAAQsgASAFSg0BDAMLIAFBEEcgBUEWSHINACADKAIAIgEgAkYgASACa0ECSnINAiABQQFrLQAAQTBHDQJBACEAIARBADYCACADIAFBAWo2AgAgASAFLQDQnwE6AAAMAgsgAyADKAIAIgBBAWo2AgAgACAFQdCfAWotAAA6AAAgBCAEKAIAQQFqNgIAQQAhAAwBC0EAIQAgBEEANgIACyAKQRBqJAAgAAsKACAAQZjzARB6C+wCAQN/IwBBEGsiCiQAIAogADoADwJAAkACQCADKAIAIgsgAkcNACAAQf8BcSIMIAktABhGBH9BKwUgDCAJLQAZRw0BQS0LIQAgAyALQQFqNgIAIAsgADoAAAwBCyAGEB9FIAAgBUdyRQRAQQAhACAIKAIAIgEgB2tBnwFKDQIgBCgCACEAIAggAUEEajYCACABIAA2AgAMAQtBfyEAIAkgCUEaaiAKQQ9qEP0BIAlrIgVBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAVKDQEMAwsgAUEQRyAFQRZIcg0AIAMoAgAiASACRiABIAJrQQJKcg0CIAFBAWstAABBMEcNAkEAIQAgBEEANgIAIAMgAUEBajYCACABIAUtANCfAToAAAwCCyADIAMoAgAiAEEBajYCACAAIAVB0J8Bai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokACAACwoAIABBkPMBEHoLZgIBfwF+IwBBEGsiAiQAIAACfiABRQRAQgAMAQsgAiABrUIAQfAAIAFnIgFBH3NrEEQgAikDCEKAgICAgIDAAIVBnoABIAFrrUIwhnwhAyACKQMACzcDACAAIAM3AwggAkEQaiQACxQAIABB3wBxIAAgAEHhAGtBGkkbCywBAX8Cf0EBENYBBEAgAUEBELQCDAELIAEQUwshAiAAIAE2AgQgACACNgIACyQAIABBC08EfyAAQQhqQXhxIgAgAEEBayIAIABBC0YbBUEKCwskAQJ/IwBBEGsiAiQAIAAgARDTASEDIAJBEGokACABIAAgAxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsTAEEEENYBBEAgABAtDwsgABAtCwsAIAQgAjYCAEEDC3wBAn8jAEEQayICJAAgABBHBEAgACgCACAAEH4QqQELIAEQHxogARBHIQMgACABKAIINgIIIAAgASkCADcCACABQQAQUCACQQA2AgwgASACQQxqEFYCQCADIAAgAUYiAXJFDQALIAAQRyABckUEQCAAEF4aCyACQRBqJAALEAEBfyAAKAIAIABBADYCAAs3AQJ/IwBBEGsiAyQAIANBDGoiBCABECcgAiAEEJkBIgEQWTYCACAAIAEQWCAEECUgA0EQaiQACzUBAn8jAEEQayICJAAgAkEMaiIDIAAQJyADEEhB0J8BQeqfASABEG8gAxAlIAJBEGokACABCzcBAn8jAEEQayIDJAAgA0EMaiIEIAEQJyACIAQQmwEiARBZOgAAIAAgARBYIAQQJSADQRBqJAALkwEBA38CQCABEKgBIQIjAEEQayIDJAAgAkH3////B00EQAJAIAIQ1AEEQCAAIAIQUCAAIQQMAQsgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgAjYCBAsgBCABIAIQTSADQQA6AAcgAiAEaiADQQdqEF0gA0EQaiQADAELEFsACwtGAQF/IABB+PsAKAIAIgE2AgAgACABQQxrKAIAakGY/AAoAgA2AgAgAEGc/AAoAgA2AgggAEEMahD8ARogAEFAaxDaASAACxcAIAAgAzYCECAAIAI2AgwgACABNgIIC7kHAQV/An8gAEH//wNxIQMgAEEQdiEEIAJBAUYEQCADIAEtAABqIgBB8f8DayAAIABB8P8DSxsiACAEaiIBQRB0IgJBgIA8aiACIAFB8P8DSxsgAHIMAQsgAQR/AkACQAJAAkAgAkEQTwRAAkAgAkGvK0sEQANAQdsCIQUgASEAA0AgAyAALQAAaiIDIARqIAMgAC0AAWoiA2ogAyAALQACaiIDaiADIAAtAANqIgNqIAMgAC0ABGoiA2ogAyAALQAFaiIDaiADIAAtAAZqIgNqIAMgAC0AB2oiA2ogAyAALQAIaiIDaiADIAAtAAlqIgNqIAMgAC0ACmoiA2ogAyAALQALaiIDaiADIAAtAAxqIgNqIAMgAC0ADWoiA2ogAyAALQAOaiIDaiADIAAtAA9qIgNqIQQgAEEQaiEAIAVBAWsiBQ0ACyAEQfH/A3AhBCADQfH/A3AhAyABQbAraiEBIAJBsCtrIgJBrytLDQALIAJFDQYgAkEQSQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgBqIAAgAS0ACGoiAGogACABLQAJaiIAaiAAIAEtAApqIgBqIAAgAS0AC2oiAGogACABLQAMaiIAaiAAIAEtAA1qIgBqIAAgAS0ADmoiAGogACABLQAPaiIDaiEEIAFBEGohASACQRBrIgJBD0sNAAsgAkUNBAsgAkEDcSIHDQEgAiEADAILAkAgAkUNAAJAIAJBA3EiB0UEQCACIQAMAQsgAiEAIAEhBQNAIABBAWshACADIAUtAABqIgMgBGohBCAFQQFqIgEhBSAGQQFqIgYgB0cNAAsLIAJBBEkNAANAIAMgAS0AAGoiAiABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgAiAEampqaiEEIAFBBGohASAAQQRrIgANAAsLIARB8f8DcEEQdCADQfH/A2sgAyADQfD/A0sbcgwFCyACIQAgASEFA0AgAEEBayEAIAMgBS0AAGoiAyAEaiEEIAVBAWoiASEFIAZBAWoiBiAHRw0ACwsgAkEESQ0AA0AgAyABLQAAaiICIAEtAAFqIgUgAS0AAmoiBiABLQADaiIDIAYgBSACIARqampqIQQgAUEEaiEBIABBBGsiAA0ACwsgBEHx/wNwIQQgA0Hx/wNwIQMLIARBEHQgA3IFQQELCws6AQF/IAFBAEgEQBCMAQALQf////8HIAAoAgggACgCAGsiAEEBdCICIAEgASACSRsgAEH/////A08bCxwBAX8gACgCBCIBQQlPBEAgARAeIABBADYCBAsLPgEBfyABQYCAgIAETwRAEIwBAAtB/////wMgACgCCCAAKAIAayIAQQF1IgIgASABIAJJGyAAQfz///8HTxsLSQECfyAAKAIEIgZBCHUhBSAGQQFxBEAgAigCACAFEOgBIQULIAAoAgAiACABIAIgBWogA0ECIAZBAnEbIAQgACgCACgCGBELAAuqAQEDfyMAQRBrIgIkACACIAE6AA8CQAJAAn8gABBHIgRFBEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkACfwJAIAFFBEAgAw0BQQAPC0F+IAJFDQEaAkAgAwRAIAIhBAwBCyABLQAAIgPAIgRBAE4EQCAABEAgACADNgIACyAEQQBHDwtB3OEBKAIAKAIARQRAQQEgAEUNAxogACAEQf+/A3E2AgBBAQ8LIANBwgFrIgNBMksNASADQQJ0KAKQgQEhAyACQQFrIgRFDQMgAUEBaiEBCyABLQAAIgZBA3YiB0EQayADQRp1IAdqckEHSw0AA0AgBEEBayEEIAZB/wFxQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiASwAACIGQUBIDQALCyAFQQA2AgBBiOoBQRk2AgBBfwsPCyAFIAM2AgBBfgsNACAAKAIAIAEoAgBJCwcAIABBC0kLJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBA9AAsLBwAgAEEISwscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwwAIABBDGoQ2gEgAAsIACAAKAIQRQsIACAAEIkCGgusCwEHfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBAnFFDQEgACgCACICIAFqIQECQAJAAkAgACACayIAQaDqASgCAEcEQCAAKAIMIQMgAkH/AU0EQCADIAAoAggiBEcNAkGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAAoAhghBiAAIANHBEAgACgCCCICIAM2AgwgAyACNgIIDAQLIAAoAhQiBAR/IABBFGoFIAAoAhAiBEUNAyAAQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQZTqASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAwCC0EAIQMLIAZFDQACQCAAKAIcIgJBAnQiBCgCvOwBIABGBEAgBEG87AFqIAM2AgAgAw0BQZDqAUGQ6gEoAgBBfiACd3E2AgAMAgsCQCAAIAYoAhBGBEAgBiADNgIQDAELIAYgAzYCFAsgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGk6gEoAgAgBUYEQEGk6gEgADYCAEGY6gFBmOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBoOoBKAIARw0GQZTqAUEANgIAQaDqAUEANgIADwtBoOoBKAIAIgggBUYEQEGg6gEgADYCAEGU6gFBlOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAJBeHEgAWohASAFKAIMIQMgAkH/AU0EQCAFKAIIIgQgA0YEQEGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAQgAzYCDCADIAQ2AggMBAsgBSgCGCEGIAMgBUcEQCAFKAIIIgIgAzYCDCADIAI2AggMAwsgBSgCFCIEBH8gBUEUagUgBSgCECIERQ0CIAVBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACEDCyAGRQ0AAkAgBSgCHCICQQJ0IgQoArzsASAFRgRAIARBvOwBaiADNgIAIAMNAUGQ6gFBkOoBKAIAQX4gAndxNgIADAILAkAgBSAGKAIQRgRAIAYgAzYCEAwBCyAGIAM2AhQLIANFDQELIAMgBjYCGCAFKAIQIgIEQCADIAI2AhAgAiADNgIYCyAFKAIUIgJFDQAgAyACNgIUIAIgAzYCGAsgACABQQFyNgIEIAAgAWogATYCACAAIAhHDQBBlOoBIAE2AgAPCyABQf8BTQRAIAFBeHFBtOoBaiECAn9BjOoBKAIAIgNBASABQQN2dCIBcUUEQEGM6gEgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG87AFqIQICQAJAQZDqASgCACIEQQEgA3QiB3FFBEBBkOoBIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiBygCECICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC40IAQt/IABFBEAgARA0DwsgAUFATwRAQYjqAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBCgCBCIJQXhxIQgCQCAJQQNxRQRAIAZBgAJJDQEgBkEEaiAITQRAIAQhAiAIIAZrQeztASgCAEEBdE0NAgtBAAwCCyAEIAhqIQcCQCAGIAhNBEAgCCAGayIDQRBJDQEgBCAGIAlBAXFyQQJyNgIEIAQgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ2wEMAQtBpOoBKAIAIAdGBEBBmOoBKAIAIAhqIgggBk0NAiAEIAYgCUEBcXJBAnI2AgQgBCAGaiIDIAggBmsiAkEBcjYCBEGY6gEgAjYCAEGk6gEgAzYCAAwBC0Gg6gEoAgAgB0YEQEGU6gEoAgAgCGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBCAGIAlBAXFyQQJyNgIEIAQgBmoiCCACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAlBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECQQAhCAtBoOoBIAg2AgBBlOoBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAIaiILIAZJDQEgCyAGayEMIAcoAgwhBQJAIANB/wFNBEAgBygCCCICIAVGBEBBjOoBQYzqASgCAEF+IANBA3Z3cTYCAAwCCyACIAU2AgwgBSACNgIIDAELIAcoAhghCgJAIAUgB0cEQCAHKAIIIgIgBTYCDCAFIAI2AggMAQsCQCAHKAIUIgIEfyAHQRRqBSAHKAIQIgJFDQEgB0EQagshCANAIAghAyACIgVBFGohCCACKAIUIgINACAFQRBqIQggBSgCECICDQALIANBADYCAAwBC0EAIQULIApFDQACQCAHKAIcIgNBAnQiAigCvOwBIAdGBEAgAkG87AFqIAU2AgAgBQ0BQZDqAUGQ6gEoAgBBfiADd3E2AgAMAgsCQCAHIAooAhBGBEAgCiAFNgIQDAELIAogBTYCFAsgBUUNAQsgBSAKNgIYIAcoAhAiAgRAIAUgAjYCECACIAU2AhgLIAcoAhQiAkUNACAFIAI2AhQgAiAFNgIYCyAMQQ9NBEAgBCAJQQFxIAtyQQJyNgIEIAQgC2oiAiACKAIEQQFyNgIEDAELIAQgBiAJQQFxckECcjYCBCAEIAZqIgMgDEEDcjYCBCAEIAtqIgIgAigCBEEBcjYCBCADIAwQ2wELIAQhAgsgAgsiAgRAIAJBCGoPCyABEDQiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxBxGiAAEC0gBAsWACAARQRAQQAPC0GI6gEgADYCAEF/C30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEN8BDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAwBBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC+IBAQJ/IAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB/wFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0BBgIKECCAAKAIAIANzIgRrIARyQYCBgoR4cUGAgYKEeEcNAiAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACwIACwQAQQELoBABFn8jAEFAaiIGQgA3AzAgBkIANwM4IAZCADcDICAGQgA3AygCQAJAAn8CQAJ/IAIEQCACQQRPBEAgAUEGaiEIIAFBBGohDSABQQJqIQsgAkF8cSEMA0AgBkEgaiIPIAEgCkEBdCIJai8BAEEBdGoiESARLwEAQQFqOwEAIAkgC2ovAQBBAXQgD2oiESARLwEAQQFqOwEAIAkgDWovAQBBAXQgD2oiESARLwEAQQFqOwEAIAggCWovAQBBAXQgD2oiCSAJLwEAQQFqOwEAIApBBGohCiAOQQRqIg4gDEcNAAsLIAJBA3EiCQRAA0AgBkEgaiABIApBAXRqLwEAQQF0aiIIIAgvAQBBAWo7AQAgCkEBaiEKIAdBAWoiByAJRw0ACwsgBCgCACIKIAYvAT4iEEUNARpBDyELDAILIAQoAgALIQpBACEQIAYvATwEQEEOIQsMAQsgBi8BOgRAQQ0hCwwBCyAGLwE4BEBBDCELDAELIAYvATYEQEELIQsMAQsgBi8BNARAQQohCwwBCyAGLwEyBEBBCSELDAELIAYvATAEQEEIIQsMAQsgBi8BLgRAQQchCwwBCyAGLwEsBEBBBiELDAELIAYvASoEQEEFIQsMAQsgBi8BKARAQQQhCwwBCyAGLwEmBEBBAyELDAELIAYvASQEQEECIQsMAQsgBi8BIkUEQCADIAMoAgAiAEEEajYCACAAQcACNgEAIAMgAygCACIAQQRqNgIAIABBwAI2AQBBASEMDAMLIApBAEchCUEBIQtBASEKQQAMAQsgCiALIAogC0kbIQlBASEKAkADQCAGQSBqIApBAXRqLwEADQEgCkEBaiIKIAtHDQALIAshCgtBAQshD0F/IQcgBi8BIiIIQQJLDQFBBCAIQQF0a0H+/wNxIAYvASQiDWsiDkEASA0BIA5BAXQgBi8BJiIOayIMQQBIDQEgDEEBdCAGLwEoIgxrIhFBAEgNASARQQF0IAYvASoiEWsiGEEASA0BIBhBAXQgBi8BLCIYayISQQBIDQEgEkEBdCAGLwEuIhJrIhNBAEgNASATQQF0IAYvATAiE2siFEEASA0BIBRBAXQgBi8BMiIUayIVQQBIDQEgFUEBdCAGLwE0IhVrIhdBAEgNASAXQQF0IAYvATYiF2siFkEASA0BIBZBAXQgBi8BOCIWayIZQQBIDQEgGUEBdCAGLwE6IhlrIhpBAEgNASAaQQF0IAYvATwiGmsiG0EASA0BIBtBAXQiGyAQSSAQIBtHQQAgAEUgD3Ibcg0BIAkgCkshEEEAIQcgBkEAOwECIAYgCDsBBCAGIAggDWoiCDsBBiAGIAggDmoiCDsBCCAGIAggDGoiCDsBCiAGIAggEWoiCDsBDCAGIAggGGoiCDsBDiAGIAggEmoiCDsBECAGIAggE2oiCDsBEiAGIAggFGoiCDsBFCAGIAggFWoiCDsBFiAGIAggF2oiCDsBGCAGIAggFmoiCDsBGiAGIAggGWoiCDsBHCAGIAggGmo7AR4CQCACRQ0AIAJBAUcEQCACQX5xIQhBACEOA0AgASAHQQF0ai8BACINBEAgBiANQQF0aiINIA0vAQAiDUEBajsBACAFIA1BAXRqIAc7AQALIAEgB0EBciINQQF0ai8BACIMBEAgBiAMQQF0aiIMIAwvAQAiDEEBajsBACAFIAxBAXRqIA07AQALIAdBAmohByAOQQJqIg4gCEcNAAsLIAJBAXFFDQAgASAHQQF0ai8BACICRQ0AIAYgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAHOwEACyAJIAogEBshDEEUIRJBACEXIAUiCCERQQAhEwJAAkACQCAADgICAAELQQEhByAMQQlLDQNBgQIhEkHA7QAhEUGA7QAhCEEBIRMMAQsgAEECRiEXQQAhEkHA7gAhEUGA7gAhCCAAQQJHBEAMAQtBASEHIAxBCUsNAgtBASAMdCIUQQFrIRkgAygCACEVQQAhAiAMIQlBACEAQQAhEEF/IQ0DQEEBIAl0IRgCQANAAn9BACASIAUgAkEBdGovAQAiCUEBaksNABogCSASSQRAQQAhCUHgAAwBCyAIIAkgEmtBAXQiB2ovAQAhCSAHIBFqLQAACyEOQX8gCiAAayIPdCEaIBUgECAAdkECdGohGyAYIQcDQCAbIAcgGmoiB0ECdGoiFiAJOwECIBYgDzoAASAWIA46AAAgBw0AC0EBIApBAWt0IQ4DQCAOIgdBAXYhDiAHIBBxDQALIAZBIGogCkEBdGoiCSAJLwEAQQFrIgk7AQAgB0EBayAQcSAHakEAIAcbIRAgAkEBaiECIAlB//8DcUUEQCAKIAtGDQIgASAFIAJBAXRqLwEAQQF0ai8BACEKCyAKIAxNDQAgECAZcSIOIA1GDQALQQEgCiAAIAwgABsiAGsiCXQhDyAKIAtJBEAgAEEBaiEWIAsgAGshDSAKIQcCQANAIA8gBkEgaiAHQQF0ai8BAGsiB0EATA0BIAdBAXQhDyAJIBZqIQcgCUEBaiEJIAcgC0kNAAsgDSEJC0EBIAl0IQ8LQQEhByATIA8gFGoiFEHUBktxIBcgFEHQBEtxcg0DIAMoAgAiDSAOQQJ0aiIHIAw6AAEgByAJOgAAIAcgFSAYQQJ0aiIVIA1rQQJ2OwECIA4hDQwBCwsgEARAIBUgEEECdGoiAEEAOwECIAAgDzoAASAAQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDDYCAEEAIQcLIAcLqgEBA38gASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggPCyABKAIAIQQgASgCBCECIwBBEGsiAyQAAkACQAJAIAIQ1AEEQCAAIgEgAhBQDAELIAJB9////wdLDQEgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQTSADQRBqJAAMAQsQWwALC0sBAn8gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBhDoASEGCyAAKAIAIgAgASACIAMgBmogBEECIAdBAnEbIAUgACgCACgCFBEKAAsgAAJAIAEgACgCBEcNACAAKAIcQQFGDQAgACACNgIcCwuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsKACAAIAFqKAIAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLrQEBA38jAEEQayICJAAgAiABNgIMAkACQAJ/IAAQRyIERQRAQQEhASAAEF4MAQsgABB+QQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDoAiAAECMaDAELIAAQIxogBA0AIAAiASADQQFqEFAMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAJBDGoQViACQQA2AgggAEEEaiACQQhqEFYgAkEQaiQACwUAED0ACycBAX8gACgCACEBIwBBEGsiACQAIAAgATYCDCAAKAIMIABBEGokAAsXACAAKAIIEC5HBEAgACgCCBCgAwsgAAs0AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQYyAAIAEQlgIhABBiIANBEGokACAAC40BAQN/IAEoAgQgACgCACICIAAoAgQiA2tqIQQgAyACayIDBEAgBCACIAP8CgAACyABIAQ2AgQgACAAKAIAIgI2AgQgACABKAIENgIAIAEgAjYCBCAAKAIEIQIgACABKAIINgIEIAEgAjYCCCAAKAIIIQIgACABKAIMNgIIIAEgAjYCDCABIAEoAgQ2AgALMwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFBAnRqNgIMIAIoAgwgAkEQaiQACxkBAX9BASEBIAAQRwR/IAAQfkEBawVBAQsLBwAgAEEEagswAQF/IwBBEGsiAiQAIAIgACgCADYCDCACIAIoAgwgAWo2AgwgAigCDCACQRBqJAAL9wEBBX8jAEEQayIGJAAgBkEMaiIIIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wcgAWsgAk8EQCAAECMhByAFQQRqIgkgAUHz////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAkgBUEMahCgASgCABCfAUEBagVB9////wcLEJ4BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQTQsgAyAERwRAIAIgBGogBCAHaiADIARrEE0LIAFBCkcEQCAHEIsCCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCBC7ASAGQRBqJAALCgAgASAAa0ECdQsPACAAIAAoAgBBBGo2AgALIAEBfyMAQRBrIgEkACABQQxqIAAQVSgCACABQRBqJAALDwAgACAAKAIAQQFqNgIAC1kBAn8jAEEQayIDJAAgAigCACEEIAACfyABIABrQQJ1IgIEQANAIAAgBCAAKAIARg0CGiAAQQRqIQAgAkEBayICDQALC0EACyIAIAEgABsQjgEgA0EQaiQAC/gDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtB8ABqIAxBDGoQ+QEgC2siAEECdSIGQRtKDQEgBkHQnwFqLAAAIQUCQAJAIABBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLAAAEJ0BIAIsAAAQnQFHDQYLIAQgAUEBajYCACABIAU6AAAMAwsgAkHQADoAAAwBCyAFEJ0BIgAgAiwAAEcNACACIAAQsQM6AAAgAS0AAEEBRw0AIAFBADoAACAHEB9FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAZBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALUAECfyMAQRBrIgYkACAGQQxqIgUgARAnIAUQSEHQnwFB7J8BIAIQbyADIAUQmQEiARB4NgIAIAQgARBZNgIAIAAgARBYIAUQJSAGQRBqJAALGAAgAEGQ9wA2AgAgAEEgahAgGiAAEJQCCy8BAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDgASIAIAEgABsQjgEgA0EQaiQAC/ADAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtBHGogDEEPahD9ASALayIFQRtKDQEgBUHQnwFqLAAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQEF/IQAgAUEBaywAABCdASACLAAAEJ0BRw0GCyAEIAFBAWo2AgAgASAGOgAADAMLIAJB0AA6AAAMAQsgBhCdASIAIAIsAABHDQAgAiAAELEDOgAAIAEtAABBAUcNACABQQA6AAAgBxAfRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhACAFQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC1ABAn8jAEEQayIGJAAgBkEMaiIFIAEQJyAFEElB0J8BQeyfASACEHkgAyAFEJsBIgEQeDoAACAEIAEQWToAACAAIAEQWCAFECUgBkEQaiQAC34CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQZCAEIAUgA0EBEKgDIAQpAwghBiAEKQMAIQcgAgRAIAIgBCgCiAEgASAEKAIUIAQoAjxramo2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAsJACAAQQQQqAILDQAgACABIAJCfxCEAgucAQEDf0E1IQECQCAAKAIcIgIgACgCGCIDQQZqQQdwa0EHakEHbiADIAJrIgJB8QJqQQdwQQNJaiIDQTVHBEAgAyIBDQFBNCEBAkACQCACQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEJ0DRQ0CC0E1DwsCQAJAIAJB8wJqQQdwQQNrDgIAAgELIAAoAhQQnQMNAQtBASEBCyABC5sEAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0GI6gFBHDYCAEIAIQMMAgsgACEEAkADQCAFwBB9RQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgZBK2sOAwABAAELQX9BACAGQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkACQCAELQAAIgZBMGsiBUH/AXFBCkkNACAGQeEAa0H/AXFBGU0EQCAGQdcAayEFDAELIAZBwQBrQf8BcUEZSw0BIAZBN2shBQsgCiAFQf8BcUwNACAIIAxCACALQgAQQEEBIQYCQCAIKQMIQgBSDQAgCyAMfiINIAWtQv8BgyIOQn+FVg0AIA0gDnwhC0EBIQkgAiEGCyAEQQFqIQQgBiECDAELCyABBEAgASAEIAAgCRs2AgALAkACQCACBEBBiOoBQcQANgIAIAdBACADQgGDIgxQGyEHIAMhCwwBCyADIAtWDQEgA0IBgyEMCyAMpyAHckUEQEGI6gFBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGI6gFBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuIAQEDfyABKAIEIAAoAgQgACgCACIEayICayEDIAIEQCADIAQgAvwKAAALIAEgAzYCBCAAIAAoAgAiAjYCBCAAIAEoAgQ2AgAgASACNgIEIAAoAgQhAiAAIAEoAgg2AgQgASACNgIIIAAoAgghAiAAIAEoAgw2AgggASACNgIMIAEgASgCBDYCAAuaAwEIfwJAIAAiAUEDcQRAA0AgAS0AACICRSACQT1Gcg0CIAFBAWoiAUEDcQ0ACwsCQAJAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhHDQADQEGAgoQIIANBvfr06QNzIgJrIAJyQYCBgoR4cUGAgYKEeEcNASABKAIEIQMgAUEEaiICIQEgA0GAgoQIIANrckGAgYKEeHFBgIGChHhGDQALDAELIAEhAgsDQCACIgEtAAAiA0UNASABQQFqIQIgA0E9Rw0ACwsgACABRgRAQQAPCwJAIAAgASAAayIDai0AAA0AQYDuASgCACIERQ0AIAQoAgAiAUUNAANAAkACfyAAIQJBACADIgZFDQAaIAAtAAAiBQR/AkADQCAFIAEtAAAiB0cgB0VyDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQUgAkEBaiECIAUNAAtBACEFCyAFBUEACyABLQAAawtFBEAgBCgCACADaiIBLQAAQT1GDQELIAQoAgQhASAEQQRqIQQgAQ0BDAILCyABQQFqIQgLIAgLSgEBfyAAIAM2AhAgAEEANgIMIAEEQCABELMCIQQLIAAgBDYCACAAIAQgAkECdGoiAjYCCCAAIAQgAUECdGo2AgwgACACNgIEIAALRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQSiAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALcgECfyAAQYj+ADYCACAAKAIcBEAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAQRxqECUgACgCIBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0GI6gFBGTYCAEF/BUEBCw8LIAAgAToAAEEBCzABAX8jAEEQayICJAAgAiABKAIANgIAIAAgAhByEH9BoPEAKAIAEGEaIAJBEGokAAsRACACBEAgACABwCAC/AsACwupAQEBfEQAAAAAAADwPyEBAkAgAEGACE4EQEQAAAAAAADgfyEBIABB/w9JBEAgAEH/B2shAAwCC0QAAAAAAADwfyEBQf0XIAAgAEH9F08bQf4PayEADAELIABBgXhKDQBEAAAAAAAAYAMhASAAQbhwSwRAIABByQdqIQAMAQtEAAAAAAAAAAAhAUHwaCAAIABB8GhNG0GSD2ohAAsgASAAQf8Haq1CNIa/ogtEAQF/IwBBEGsiAiQAIAAoAgAhACACIAE2AgggAiAANgIEIAJB/BQ2AgBByAsgAhByEH9BoPEAKAIAEGEaIAJBEGokAAt4AQN/AkAgAEUNACAAKAIgRQ0AIAAoAiQiAkUNACAAKAIcIgFFDQAgASgCACAARw0AIAEoAgRBtP4Aa0EfSw0AIAEoAjgiAwRAIAAoAiggAyACEQEAIAAoAiQhAiAAKAIcIQELIAAoAiggASACEQEAIABBADYCHAsL6QMAQZTZAUGFExAcQazZAUGUDkEBQQAQG0G42QFB8QxBAUGAf0H/ABACQdDZAUHqDEEBQYB/Qf8AEAJBxNkBQegMQQFBAEH/ARACQdzZAUGjCUECQYCAfkH//wEQAkHo2QFBmglBAkEAQf//AxACQfTZAUGyCUEEQYCAgIB4Qf////8HEAJBgNoBQakJQQRBAEF/EAJBjNoBQfMPQQRBgICAgHhB/////wcQAkGY2gFB6g9BBEEAQX8QAkGk2gFB4A9BCEKAgICAgICAgIB/Qv///////////wAQDUGw2gFB1w9BCEIAQn8QDUG82gFBogpBBBAMQcjaAUGMEUEIEAxBmC1BkhAQGkHgLUEEQfgPEAVBqC5BAkGeEBAFQfQuQQRBrRAQBUHMJhAZQcAvQQBB9RkQAEHoL0EAQboaEABBkDBBAUGTGhAAQbgwQQJBwhYQAEHgMEEDQeEWEABBiDFBBEGJFxAAQbAxQQVBphcQAEHYMUEEQd8aEABBgDJBBUH9GhAAQegvQQBBjBgQAEGQMEEBQesXEABBuDBBAkHOGBAAQeAwQQNBrBgQAEGIMUEEQdQZEABBsDFBBUGyGRAAQagyQQhBkRkQAEHQMkEJQe8YEABB+DJBBkHMFxAAQaAzQQdBpBsQAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEBajYCDCABLQAAC2ABBH8gASAAKAIEIgYgA2siB2ohBCAGIQUDQCACIARNBEAgACAFNgIEIAdFIAMgBkZyRQRAIAYgB2sgASAH/AoAAAsFIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEDAELCwsQACAAKAIAIgAEQCAAEB0LCzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAAC6ABAQR/IwBBgAJrIgAkACAAIAQ3A/gBIABCJTcD8AEgAEHwAWoiB0EBckGZDiAFIAIoAgQQywEgAEHQAWoiBiAGEC4gByAAQfgBahCJAyAGaiIIIAIQaSEJIABBBGoiByACECcgBiAJIAggAEEQaiIGIABBDGogAEEIaiAHEIADIAcQJSABIAYgACgCDCAAKAIIIAIgAxCFASAAQYACaiQAC6IBAQN/IwBBkAFrIgAkACAAIAQ2AowBIABCJTcDgAEgAEGAAWoiBkEBckGgDiAFIAIoAgQQywEgAEHzAGoiBCAEQQ0QLiAGIABBjAFqEMoBIARqIgcgAhBpIQggAEEEaiIGIAIQJyAEIAggByAAQRBqIgQgAEEMaiAAQQhqIAYQgAMgBhAlIAEgBCAAKAIMIAAoAgggAiADEIUBIABBkAFqJAALnQEBBH8jAEHwAGsiACQAIAAgBDcDaCAAQiU3A2AgAEHgAGoiB0EBckGZDiAFIAIoAgQQywEgAEFAayIGIAYQLiAHIABB6ABqEIkDIAZqIgggAhBpIQkgAEEEaiIHIAIQJyAGIAkgCCAAQRBqIgYgAEEMaiAAQQhqIAcQigMgBxAlIAEgBiAAKAIMIAAoAgggAiADEIABIABB8ABqJAALngEBA38jAEHQAGsiACQAIAAgBDYCTCAAQiU3A0AgAEFAayIGQQFyQaAOIAUgAigCBBDLASAAQTNqIgQgBEENEC4gBiAAQcwAahDKASAEaiIHIAIQaSEIIABBBGoiBiACECcgBCAIIAcgAEEQaiIEIABBDGogAEEIaiAGEIoDIAYQJSABIAQgACgCDCAAKAIIIAIgAxCAASAAQdAAaiQACwcAIAARDwALQgADQCABIAJHBEAgAQJ/IAEsAAAQTARAIAMoAgAgASwAAEECdGooAgAMAQsgAS0AAAs6AAAgAUEBaiEBDAELCyABCz0AA0AgASACRwRAIAEiACAAKAIAEEwEfyADKAIAIAAoAgBBAnRqBSAACygCADYCACAAQQRqIQEMAQsLIAELPwECfyAAKAIEIQMgACgCCCECA0AgAiADRwRAIAAgAiABayICNgIIDAELCyAAKAIAIgIEQCAAKAIMGiACEC0LC0wBAX8CQCABRQ0AIAFBiNgBEFIiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQO0UNACAAKAIQIAEoAhBBABA7IQILIAILCwBBnBFBABCtAgALgQEBA38gACgCBCIEQQFxIQUCfyABLQA3QQFGBEAgBEEIdSIGIAVFDQEaIAIoAgAgBhDoAQwBCyAEQQh1IAVFDQAaIAEgACgCACgCBDYCOCAAKAIEIQRBACECQQALIQUgACgCACIAIAEgAiAFaiADQQIgBEECcRsgACgCACgCHBEIAAsKACAAIAFBABA7C/gBAQF/IwBBEGsiAiQAIAIgATYCDEGQ1gEoAgAiAiAAIAEQzQMaIAAQqAEgAGpBAWstAABBCkcEQAJAAkAgAigCTCIAQQBOBEAgAEUNAUGU4QEoAgAgAEH/////A3FHDQELAkAgAigCUEEKRg0AIAIoAhQiACACKAIQRg0AIAIgAEEBajYCFCAAQQo6AAAMAgsgAhDeAQwBCyACQcwAaiIBIgAgACgCACIAQf////8DIAAbNgIAAkACQCACKAJQQQpGDQAgAigCFCIAIAIoAhBGDQAgAiAAQQFqNgIUIABBCjoAAAwBCyACEN4BCyABEKwBGgsLEMoDAAsdAQF/IwBBEGsiASQAIAEgADYCAEG9HiABEK0CAAu5AgEDfyMAQSBrIggkAEH3////AyIJIAFBf3NqIAJPBEAgABAjIQogAUHz////AUkEQCAIIAFBAXQ2AhwgCCABIAJqNgIQIAhBEGogCEEcahCgASgCABCQAUEBaiEJCyAIQRxqIAhBGGogABBVKAIAELwBIAhBEGogCRCPASAIKAIQIQIgCCgCFBogBARAIAIgCiAEEGULIAYEQCAEQQJ0IAJqIAcgBhBlCyADIAQgBWoiCWshByADIAlHBEAgBEECdCIDIAJqIAZBAnRqIAMgCmogBUECdGogBxBlCyABQQFqIgFBAkcEQCAKIAEQqQELIAAgAjYCACAAIAgoAhQQXCAAIAQgBmogB2oiADYCBCAIQQA2AgwgAiAAQQJ0aiAIQQxqEFYgCEEcahC7ASAIQSBqJAAPCxBbAAuJAQECfyMAQRBrIgMkACABQff///8HTQRAAkAgARDUAQRAIAAgARBQIAAhBAwBCyADQQhqIAEQnwFBAWoQngEgAygCDBogACADKAIIIgQ2AgAgACADKAIMEFwgACABNgIECyAEIAEgAhCyAiADQQA6AAcgASAEaiADQQdqEF0gA0EQaiQADwsQWwALRAECfyAAECghAyAAEB8hBCACIANNBEAgABAjIgMgASACEE0gACADIAIQwAIPCyAAIAMgAiADayAEQQAgBCACIAEQuQELPQEBfyMAQRBrIgMkACADIAI6AA8DQCABBEAgACADLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAsZACAAQYCAgIAETwRAEKoCAAsgAEECdBBTC5IFAQh/QQQgASABQQRNGyEDQQEgACAAQQFNGyEHA0ACQCAHIAMgB2pBAWtBACADa3EiACAAIAdJGyEEQQAhASMAQRBrIggkAAJAIANBA3ENACAEIANwDQACfwJAQTACfyADQQhGBEAgBBA0DAELQRwhASADQQNxIANBBElyDQEgA0ECdiIAIABBAWtxDQFBMEFAIANrIARJDQIaAn9BECEBAkBBEEEQIAMgA0EQTRsiACAAQRBNGyICIAJBAWtxRQRAIAIhAAwBCwNAIAEiAEEBdCEBIAAgAkkNAAsLQUAgAGsgBE0EQEGI6gFBMDYCAEEADAELQQBBECAEQQtqQXhxIARBC0kbIgUgAGpBDGoQNCICRQ0AGiACQQhrIQECQCAAQQFrIAJxRQRAIAEhAAwBCyACQQRrIgkoAgAiBEF4cSAAIAJqQQFrQQAgAGtxQQhrIgIgAEEAIAIgAWtBD00baiIAIAFrIgZrIQIgBEEDcUUEQCABKAIAIQEgACACNgIEIAAgASAGajYCAAwBCyAAIAIgACgCBEEBcXJBAnI2AgQgACACaiICIAIoAgRBAXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAAa0ECSA0CIAAtAAFBwAFxQYABRw0CQQIMAQsgAUFvTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhAQJAAkAgBUHtAUcEQCAFQeABRw0BIAFBYHFBoH9GDQIMBQsgAUGgf04NBAwBCyABQb9/Sg0DC0HAAXFBgAFHDQJBAwwBCyADIABrQQRIIAFBdEtyDQEgAC0AAyEGIAAtAAIhCCAALAABIQECQAJAAkACQCAFQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NBAwCCyABQZB/Tg0DDAELIAFBv39KDQILIAhBwAFxQYABRyAGQcABcUGAAUdyIAZBP3EgCEEGdEHAH3EgBUESdEGAgPAAcSABQT9xQQx0cnJyQf//wwBLcg0BQQQLIQEgB0EBaiEHIAAgAWohAAwBCwsgACACawu4BAEEfyMAQRBrIgAkAAJ/IAAgAjYCDCAAIAU2AggCQAJAA0AgAiADTyAFIAZPckUEQCACLAAAIghB/wFxIQECfyAIQQBOBEAgAUH//8MASw0FQQEMAQsgCEFCSQ0EIAhBX00EQEEBIAMgAmtBAkgNBhpBAiEIIAItAAEiCUHAAXFBgAFHDQQgCUE/cSABQQZ0QcAPcXIhAUECDAELIAhBb00EQEEBIQggAyACayIKQQJIDQQgAiwAASEJAkACQCABQe0BRwRAIAFB4AFHDQEgCUFgcUGgf0YNAgwICyAJQaB/SA0BDAcLIAlBv39KDQYLIApBAkYNBCACLQACIghBwAFxQYABRw0FIAhBP3EgAUEMdEGA4ANxIAlBP3FBBnRyciEBQQMMAQsgCEF0Sw0EQQEhCCADIAJrIgpBAkgNAyACLAABIQkCQAJAAkACQCABQfABaw4FAAICAgECCyAJQfAAakH/AXFBME8NBwwCCyAJQZB/Tg0GDAELIAlBv39KDQULIApBAkYNAyACLQACIgtBwAFxQYABRw0EIApBA0YNAyACLQADIgpBwAFxQYABRw0EQQIhCCAKQT9xIAtBBnRBwB9xIAFBEnRBgIDwAHEgCUE/cUEMdHJyciIBQf//wwBLDQNBBAshCCAFIAE2AgAgACACIAhqIgI2AgwgACAFQQRqIgU2AggMAQsLIAIgA0khCAsgCAwBC0ECCyAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokAAv1AwAjAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkADQAJAIAIgA08EQEEAIQUMAQtBAiEFIAIoAgAiAUH//8MASyABQYBwcUGAsANGcg0AAkAgAUH/AE0EQEEBIQUgBiAAKAIIIgJrQQBMDQIgACACQQFqNgIIIAIgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0EIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBiAAKAIIIgJrIQUgAUH//wNNBEAgBUEDSA0EIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyAFQQRIDQMgACACQQFqNgIIIAIgAUESdkHwAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQx2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEEEaiICNgIMDAELCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC5IDAQR/IAIhAANAAkAgBCAGTSAAIANPcg0AAn8gAEEBaiAALQAAIgHAQQBODQAaIAFBwgFJDQEgAUHfAU0EQCADIABrQQJIDQIgAC0AAUHAAXFBgAFHDQIgAEECagwBCyABQe8BTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhBQJAAkAgAUHtAUcEQCABQeABRw0BIAVBYHFBoH9GDQIMBQsgBUGgf04NBAwBCyAFQb9/Sg0DC0HAAXFBgAFHDQIgAEEDagwBCyADIABrQQRIIAFB9AFLciAEIAZrQQJJcg0BIAAtAAMhByAALQACIQggACwAASEFAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUGQf04NAwwBCyAFQb9/Sg0CCyAIQcABcUGAAUcgB0HAAXFBgAFHciAHQT9xIAhBBnRBwB9xIAFBEnRBgIDwAHEgBUE/cUEMdHJyckH//8MAS3INASAGQQFqIQYgAEEEagshACAGQQFqIQYMAQsLIAAgAmsLgQUBBX8jAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkACQANAIAIgA08gBSAGT3JFBEBBAiEJIAACfyACLQAAIgHAQQBOBEAgBSABOwEAQQEMAQsgAUHCAUkNBCABQd8BTQRAQQEgAyACa0ECSA0GGiACLQABIghBwAFxQYABRw0EIAUgCEE/cSABQQZ0QcAPcXI7AQBBAgwBCyABQe8BTQRAQQEhCSADIAJrIgpBAkgNBCACLAABIQgCQAJAIAFB7QFHBEAgAUHgAUcNASAIQWBxQaB/Rw0IDAILIAhBoH9ODQcMAQsgCEG/f0oNBgsgCkECRg0EIAItAAIiCUHAAXFBgAFHDQUgBSAJQT9xIAhBP3FBBnQgAUEMdHJyOwEAQQMMAQsgAUH0AUsNBEEBIQkgAyACayIKQQJIDQMgAi0AASILwCEIAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgCEHwAGpB/wFxQTBPDQcMAgsgCEGQf04NBgwBCyAIQb9/Sg0FCyAKQQJGDQMgAi0AAiIIQcABcUGAAUcNBCAKQQNGDQMgAi0AAyIKQcABcUGAAUcNBCAGIAVrQQNIDQNBAiEJIApBP3EiCiAIQQZ0IgxBwB9xIAtBDHRBgOAPcSABQQdxIgFBEnRycnJB///DAEsNAyAFIAogDEHAB3FyQYC4A3I7AQIgBSAIQQR2QQNxIAtBAnQiCUHAAXEgAUEIdHIgCUE8cXJyQcD/AGpBgLADcjsBACAFQQJqIQVBBAsgAmoiAjYCDCAAIAVBAmoiBTYCCAwBCwsgAiADSSEJCyAJDAELQQILIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC8sFAQJ/IwBBEGsiACQAAn8gACACNgIMIAAgBTYCCAJAAkADQCACIANPBEBBACEFDAILQQIhBQJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBCAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQUgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNBSAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/twNNBEBBASEFIAMgAmtBA0gNBCACLwECIghBgPgDcUGAuANHDQIgBiAAKAIIIglrQQRIDQQgCEH/B3EgAUEKdEGA+ANxIAFBwAdxIgVBCnRyckH//z9LDQIgACACQQJqNgIMIAAgCUEBajYCCCAJIAVBBnZBAWoiAkECdkHwAXI6AAAgACAAKAIIIgVBAWo2AgggBSACQQR0QTBxIAFBAnZBD3FyQYABcjoAACAAIAAoAggiAkEBajYCCCACIAhBBnZBD3EgAUEEdEEwcXJBgAFyOgAAIAAgACgCCCIBQQFqNgIIIAEgCEE/cUGAAXI6AAAMAQsgAUGAwANJDQMgBiAAKAIIIgJrQQNIDQQgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2Qb8BcToAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBAmoiAjYCDAwBCwtBAgwCCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQACw8AIAEgACgCAGogAjYCAAs8AQJ/IwBBEGsiASQAIAEgADYCDCABQQhqIAFBDGoQY0EEQQFB3OEBKAIAKAIAGyECEGIgAUEQaiQAIAILOAEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiAFQQxqEGMgACABIAIgAxDSASEAEGIgBUEQaiQAIAALEgAgBCACNgIAIAcgBTYCAEEDCw0AIAEgACgCAGooAgALKwEBfyAAQdyhATYCAAJAIAAoAggiAUUNACAALQAMQQFxRQ0AIAEQLQsgAAsEACABCycBAX8gACgCACgCACgCAEHM8gFBzPIBKAIAQQFqIgA2AgAgADYCBAu0CgEHf0HI8gEtAABFBEAjAEEQayIFJABBwPIBLQAARQRAIwBBEGsiBiQAIAZBATYCDEGg8QEgBigCDBAyIgFByKEBNgIAIwBBEGsiAyQAIAFBCGoiAkEANgIIIAJCADcCACACQQA6AIQBIANBCGogAhBVKAIAGiADQQA6AA8jAEEQayIEJAAQvAJBHkkEQBCMAQALIARBCGogAkEMakEeELsCIAIgBCgCCCIHNgIEIAIgBzYCACACIAcgBCgCDEECdGo2AgggBEEQaiQAIAJBHhDZAiADQQE6AA8gA0EQaiQAIAFBkAFqQYwWELABIAIQ2gJBrPwBQQEQMkHotQE2AgAgAUGs/AFB+O8BEDEQM0G0/AFBARAyQYi2ATYCACABQbT8AUGA8AEQMRAzQbz8AUEBEDIiAkEAOgAMIAJBADYCCCACQdyhATYCACACQZCiATYCCCABQbz8AUHY8gEQMRAzQcz8AUEBEDJByK0BNgIAIAFBzPwBQdDyARAxEDNB1PwBQQEQMkHgrgE2AgAgAUHU/AFB4PIBEDEQM0Hc/AFBARAyIgJBmKoBNgIAIAIQLjYCCCABQdz8AUHo8gEQMRAzQej8AUEBEDJB9K8BNgIAIAFB6PwBQfDyARAxEDNB8PwBQQEQMkHcsQE2AgAgAUHw/AFBgPMBEDEQM0H4/AFBARAyQeiwATYCACABQfj8AUH48gEQMRAzQYD9AUEBEDJB0LIBNgIAIAFBgP0BQYjzARAxEDNBiP0BQQEQMiICQa7YADsBCCACQciqATYCACACQQxqECQaIAFBiP0BQZDzARAxEDNBoP0BQQEQMiICQq6AgIDABTcCCCACQfCqATYCACACQRBqECQaIAFBoP0BQZjzARAxEDNBvP0BQQEQMkGotgE2AgAgAUG8/QFBiPABEDEQM0HE/QFBARAyQaC4ATYCACABQcT9AUGQ8AEQMRAzQcz9AUEBEDJB9LkBNgIAIAFBzP0BQZjwARAxEDNB1P0BQQEQMkHguwE2AgAgAUHU/QFBoPABEDEQM0Hc/QFBARAyQcTDATYCACABQdz9AUHI8AEQMRAzQeT9AUEBEDJB2MQBNgIAIAFB5P0BQdDwARAxEDNB7P0BQQEQMkHMxQE2AgAgAUHs/QFB2PABEDEQM0H0/QFBARAyQcDGATYCACABQfT9AUHg8AEQMRAzQfz9AUEBEDJBtMcBNgIAIAFB/P0BQejwARAxEDNBhP4BQQEQMkHcyAE2AgAgAUGE/gFB8PABEDEQM0GM/gFBARAyQYTKATYCACABQYz+AUH48AEQMRAzQZT+AUEBEDJBrMsBNgIAIAFBlP4BQYDxARAxEDNBnP4BQQEQMiICQZjVATYCCCACQai9ATYCACACQdi9ATYCCCABQZz+AUGo8AEQMRAzQaj+AUEBEDIiAkG81QE2AgggAkG0vwE2AgAgAkHkvwE2AgggAUGo/gFBsPABEDEQM0G0/gFBARAyIgJBCGoQtgIgAkGkwQE2AgAgAUG0/gFBuPABEDEQM0HA/gFBARAyIgJBCGoQtgIgAkHEwgE2AgAgAUHA/gFBwPABEDEQM0HM/gFBARAyQdTMATYCACABQcz+AUGI8QEQMRAzQdT+AUEBEDJBzM0BNgIAIAFB1P4BQZDxARAxEDMgBkEQaiQAIAVBoPEBNgIIQbzyASAFKAIIEFUaQcDyAUEBOgAACyAFQRBqJABBxPIBQbzyARDVAkHI8gFBAToAAAsgAEHE8gEoAgAiADYCACAAENQCCxEAIABBoPEBRwRAIAAQ1wILCxMAIAAgASgCACIANgIAIAAQ1AILlwEBA38gAEHIoQE2AgAgAEEIaiEBA0AgARBrIAJLBEAgASACEIIBKAIABEAgASACEIIBKAIAEL8BCyACQQFqIQIMAQsLIABBkAFqECAaIwBBEGsiAiQAIAJBDGogARBVIgEoAgAiAygCAARAIAMQ2gIgASgCABogASgCACIBQQxqIAEoAgAgARC5AhC4AgsgAkEQaiQAIAALDwAgACAAKAIEQQFqNgIECyYBAX8gACgCBCECA0AgASACRwRAIAJBBGshAgwBCwsgACABNgIEC3UBAn8jAEEQayIDJAAgA0EEaiICIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIiASgCBCEAIAIoAgghAgNAIAAgAkYEQCABKAIAIAEoAgQ2AgQgA0EQaiQABSAAELoCIAEgAEEEaiIANgIEDAELCwsRACAAEGsaIAAgACgCABDYAgsgACAAQZiqATYCACAAKAIIEC5HBEAgACgCCBCgAwsgAAsEAEF/C+EBAQR/IwBBEGsiBSQAIwBBIGsiAyQAIANBGGogACABEL0CIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgRBAnUQZSABIAIgBGo2AgggA0EQaiABQQxqIAFBCGoQZiABQRBqJAAgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAgBCAAEOwBa0ECdRDwASEAIAFBEGokACADIAA2AgwgAyACIAMoAhQQjgE2AgggBUEIaiADQQxqIANBCGoQZiADQSBqJAAgBSgCDCAFQRBqJAAL9gUBCn8jAEEQayITJAAgAiAANgIAQQRBACAHGyEVIANBgARxIRYDQCAUQQRGBEAgDRAfQQFLBEAgEyANEE42AgwgAiATQQxqQQEQ8AEgDRB1IAIoAgAQ3QI2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsgE0EQaiQABQJAAkACQAJAAkACQCAIIBRqLQAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgEEshByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsgDRBaDQIgDUEAEMwBKAIAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAILIAwQWiAWRXINASACIAwQTiAMEHUgAigCABDdAjYCAAwBCyACKAIAIAQgFWoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAEF9FDQAgB0EEaiEHDAELCyAOQQBKBEAgAigCACEPIA4hEANAIBBFIAQgB09yRQRAIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCyAQBH8gBkEwEEsFQQALIREgAigCACEPA0AgEEEASgRAIAIgD0EEaiISNgIAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIAIoAgAiD0EEajYCACAPIAk2AgALAkAgBCAHRgRAIAZBMBBLIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAELIAsQWgR/QX8FIAtBABAiLAAACyESQQAhEEEAIREDQCAEIAdGDQECQCAQIBJHBEAgECEPDAELIAIgAigCACIPQQRqNgIAIA8gCjYCAEEAIQ8gCxAfIBFBAWoiEU0EQCAQIRIMAQsgCyARECItAABB/wBGBEBBfyESDAELIAsgERAiLAAAIRILIAdBBGsiBygCACEQIAIgAigCACIYQQRqNgIAIBggEDYCACAPQQFqIRAMAAsACyACKAIAEMcBCyAUQQFqIRQMAQsLC70BAQF/IwBBEGsiCiQAAn8gAARAIAIQ5gIMAQsgAhDlAgshAAJAIAEEQCAKQQRqIgEgABCSASADIAooAgQ2AAAgASAAEMIBDAELIApBBGoiASAAEOECIAMgCigCBDYAACABIAAQewsgCCABEKsBIAEQORogBCAAEHg2AgAgBSAAEFk2AgAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARCrASABEDkaIAkgABDBATYCACAKQRBqJAAL2wEBBH8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQvQIgAygCGCEEIAMoAhwhBiMAQRBrIgEkACABIAY2AgwgAiAEIAYgBGsiBBBNIAEgAiAEajYCCCADQRBqIAFBDGogAUEIahBmIAFBEGokACADKAIQIQQjAEEQayIBJAAgASAANgIMIAFBDGoiACAEIAAQ7AFrEPMBIQAgAUEQaiQAIAMgADYCDCADIAIgAygCFBCOATYCCCAFQQhqIANBDGogA0EIahBmIANBIGokACAFKAIMIAVBEGokAAsRACAAIAEgASgCACgCKBEBAAvLBQEKfyMAQRBrIhQkACACIAA2AgAgA0GABHEhFgNAIBVBBEYEQCANEB9BAUsEQCAUIA0QTjYCDCACIBRBDGpBARDzASANEHcgAigCABDgAjYCAAsgA0GwAXEiA0EQRwRAIAEgA0EgRgR/IAIoAgAFIAALNgIACyAUQRBqJAAFAkACQAJAAkACQAJAIAggFWotAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwDCyANEFoNAiANQQAQIi0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMEFogFkVyDQEgAiAMEE4gDBB3IAIoAgAQ4AI2AgAMAQsgAigCACAEIAdqIgQhEQNAAkAgBSARTQ0AIAZBwAAgESwAABBgRQ0AIBFBAWohEQwBCwsgDiIPQQBKBEADQCAPRSAEIBFPckUEQCAPQQFrIQ8gEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAADAELCyAPBH8gBkEwEEEFQQALIRIDQCACIAIoAgAiEEEBajYCACAPQQBKBEAgECASOgAAIA9BAWshDwwBCwsgECAJOgAACwJAIAQgEUYEQCAGQTAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBCyALEFoEf0F/BSALQQAQIiwAAAshEEEAIQ9BACETA0AgBCARRg0BAkAgDyAQRwRAIA8hEgwBCyACIAIoAgAiEEEBajYCACAQIAo6AABBACESIAsQHyATQQFqIhNNBEAgDyEQDAELIAsgExAiLQAAQf8ARgRAQX8hEAwBCyALIBMQIiwAACEQCyARQQFrIhEtAAAhDyACIAIoAgAiGEEBajYCACAYIA86AAAgEkEBaiEPDAALAAsgAigCABCEAQsgFUEBaiEVDAELCwu7AQEBfyMAQRBrIgokAAJ/IAAEQCACEO0CDAELIAIQ7AILIQACQCABBEAgCkEEaiIBIAAQkgEgAyAKKAIENgAAIAEgABDCAQwBCyAKQQRqIgEgABDhAiADIAooAgQ2AAAgASAAEHsLIAggARBwIAEQIBogBCAAEHg6AAAgBSAAEFk6AAAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARBwIAEQIBogCSAAEMEBNgIAIApBEGokAAsIACAAKAIARQsKACAAQdjwARB6CwoAIABB4PABEHoLFwAgAiAAIAEgAGsiAEECdRBlIAAgAmoLgwIBBX8jAEEQayIGJAAgBkEMaiIJIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wMgAWsgAk8EQCAAECMhByAFQQRqIgggAUHz////AUkEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAggBUEMahCgASgCABCQAUEBagVB9////wMLEI8BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQZQsgAyAERwRAIARBAnQiCCACaiAHIAhqIAMgBGsQZQsgAUEBaiIBQQJHBEAgByABEKkBCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCRC7ASAGQRBqJAALHwEBfyABKAIAELwDIQIgACABKAIANgIEIAAgAjYCAAuyDgEKfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahArBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQeQANgJIIAsgC0HoAGogC0HwAGogC0HIAGoiARA2Ig8oAgAiCjYCZCALIApBkANqNgJgIAEQJCERIAtBPGoQJCEMIAtBMGoQJCEOIAtBJGoQJCENIAtBGGoQJCEQIwBBEGsiASQAAkAgAgRAIAFBBGoiCiADEOYCIgIQkgEMAQsgAUEEaiIKIAMQ5QIiAhCSAQsgCyABKAIENgBcIAogAhDCASANIAoQqwEgChA5GiAKIAIQeyAOIAoQqwEgChA5GiALIAIQeDYCWCALIAIQWTYCVCAKIAIQWCARIAoQcCAKECAaIAogAhB8IAwgChCrASAKEDkaIAsgAhDBATYCFCABQRBqJAAgCSAIKAIANgIAIARBgARxIRJBACEDQQAhAQNAIAEhAgJAAkACQAJAIANBBEYNACAAIAtBjARqECsNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAEDcQXwRAIAtBDGogABDpAiAQIAsoAgwQ6gEMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahArDQYgB0EBIAAQNxBfRQ0GIAtBDGogABDpAiAQIAsoAgwQ6gEMAAsACwJAIA4QH0UNACAAEDcgDhAjKAIARw0AIAAQPhogBkEAOgAAIA4gAiAOEB9BAUsbIQEMBgsCQCANEB9FDQAgABA3IA0QIygCAEcNACAAED4aIAZBAToAACANIAIgDRAfQQFLGyEBDAYLAkAgDhAfRQ0AIA0QH0UNACAFIAUoAgBBBHI2AgBBACEADAQLIA4QH0UEQCANEB9FDQULIAYgDRAfRToAAAwECyASIAIgA0ECSXJyRQRAQQAhASADQQJGIAstAF9BAEdxRQ0FCyALIAwQTjYCCCALQQxqIAtBCGoQwwEhAQJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQdTYCCCABIAtBCGoQdg0AIAdBASABKAIAKAIAEF9FDQAgARD2AQwBCwsgCyAMEE42AgggASgCACALQQhqIgQoAgBrQQJ1IgogEBAfTQRAIAsgEBB1NgIIIARBACAKaxDwASAQEHUhCiAMEE4hEyMAQRBrIhQkABBzIQQgChBzIQogBCATEHMgCiAEa0F8cRCLAUUgFEEQaiQADQELIAsgDBBONgIEIAEgC0EIaiALQQRqEMMBKAIANgIACyALIAEoAgA2AggDQAJAIAsgDBB1NgIEIAtBCGoiASALQQRqEHYNACAAIAtBjARqECsNACAAEDcgASgCACgCAEcNACAAED4aIAEQ9gEMAQsLIBJFDQMgCyAMEHU2AgQgC0EIaiALQQRqEHYNAyAFIAUoAgBBBHI2AgBBACEADAILA0ACQCAAIAtBjARqECsNAAJ/IAdBwAAgABA3IgEQXwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQkwEgCSgCACEECyAJIARBBGo2AgAgBCABNgIAIApBAWoMAQsgERAfRSAKRXINASABIAsoAlRHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED4aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIUQQBMDQACQCAAIAtBjARqECtFBEAgABA3IAsoAlhGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAED4aIAsoAhRBAEwNAQJAIAAgC0GMBGoQK0UEQCAHQcAAIAAQNxBfDQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQkwELIAAQNyEBIAkgCSgCACIEQQRqNgIAIAQgATYCACALIAsoAhRBAWs2AhQMAAsACyACIQEgCCgCACAJKAIARw0DIAUgBSgCAEEEcjYCAEEAIQAMAQsCQCACRQ0AQQEhCgNAIAIQHyAKTQ0BAkAgACALQYwEahArRQRAIAAQNyACIAoQzAEoAgBGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABA+GiAKQQFqIQoMAAsAC0EBIQAgDygCACALKAJkRg0AQQAhACALQQA2AgwgESAPKAIAIAsoAmQgC0EMahBDIAsoAgwEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDkaIA0QORogDhA5GiAMEDkaIBEQIBogDxA1DAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAACxgAIAAgARCsARA8IAAgARDyASgCADYCBAsKACAAQcjwARB6CwoAIABB0PABEHoLxwEBBn8jAEEQayIEJAAgABDyASgCACEFQQECfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDIANBAU0bIQMgASgCACEGIAAoAgAhByAFQeQARgR/QQAFIAAoAgALIAMQ3AEiCARAIAVB5ABHBEAgABCsARoLIARB4wA2AgQgACAEQQhqIAggBEEEahA2IgUQ6wIgBRA1IAEgACgCACAGIAdrajYCACACIAMgACgCAGo2AgAgBEEQaiQADwsQPQALIAEBfyABKAIAEJ0CwCECIAAgASgCADYCBCAAIAI6AAALxA4BCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQLARAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HkADYCTCALIAtB6ABqIAtB8ABqIAtBzABqIgEQNiIPKAIAIgo2AmQgCyAKQZADajYCYCABECQhESALQUBrECQhDCALQTRqECQhDiALQShqECQhDSALQRxqECQhECMAQRBrIgEkAAJAIAIEQCABQQRqIgogAxDtAiICEJIBDAELIAFBBGoiCiADEOwCIgIQkgELIAsgASgCBDYAXCAKIAIQwgEgDSAKEHAgChAgGiAKIAIQeyAOIAoQcCAKECAaIAsgAhB4OgBbIAsgAhBZOgBaIAogAhBYIBEgChBwIAoQIBogCiACEHwgDCAKEHAgChAgGiALIAIQwQE2AhggAUEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahAsDQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLQAADgUBAAQDBQkLIANBA0YNByAHQQEgABA4EGAEQCALQRBqIAAQ7wIgECALLAAQELgBDAILIAUgBSgCAEEEcjYCAEEAIQAMBgsgA0EDRg0GCwNAIAAgC0GMBGoQLA0GIAdBASAAEDgQYEUNBiALQRBqIAAQ7wIgECALLAAQELgBDAALAAsCQCAOEB9FDQAgABA4Qf8BcSAOQQAQIi0AAEcNACAAED8aIAZBADoAACAOIAIgDhAfQQFLGyEBDAYLAkAgDRAfRQ0AIAAQOEH/AXEgDUEAECItAABHDQAgABA/GiAGQQE6AAAgDSACIA0QH0EBSxshAQwGCwJAIA4QH0UNACANEB9FDQAgBSAFKAIAQQRyNgIAQQAhAAwECyAOEB9FBEAgDRAfRQ0FCyAGIA0QH0U6AAAMBAsgEiACIANBAklyckUEQEEAIQEgA0ECRiALLQBfQQBHcUUNBQsgCyAMEE42AgwgC0EQaiALQQxqEMMBIQECQCADRQ0AIAMgC2otAFtBAUsNAANAAkAgCyAMEHc2AgwgASALQQxqEHYNACAHQQEgASgCACwAABBgRQ0AIAEQ+AEMAQsLIAsgDBBONgIMIAEoAgAgC0EMaiIEKAIAayIKIBAQH00EQCALIBAQdzYCDCAEQQAgCmsQ8wEgEBB3IQogDBBOIRMjAEEQayIUJAAQcyEEIAoQcyEKIAQgExBzIAogBGsQiwFFIBRBEGokAA0BCyALIAwQTjYCCCABIAtBDGogC0EIahDDASgCADYCAAsgCyABKAIANgIMA0ACQCALIAwQdzYCCCALQQxqIgEgC0EIahB2DQAgACALQYwEahAsDQAgABA4Qf8BcSABKAIALQAARw0AIAAQPxogARD4AQwBCwsgEkUNAyALIAwQdzYCCCALQQxqIAtBCGoQdg0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQLA0AAn8gB0HAACAAEDgiARBgBEAgCSgCACIEIAsoAogERgRAIAggCSALQYgEahDuAiAJKAIAIQQLIAkgBEEBajYCACAEIAE6AAAgCkEBagwBCyAREB9FIApFcg0BIAstAFogAUH/AXFHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED8aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqECxFBEAgABA4Qf8BcSALLQBbRg0BCyAFIAUoAgBBBHI2AgBBACEADAMLA0AgABA/GiALKAIYQQBMDQECQCAAIAtBjARqECxFBEAgB0HAACAAEDgQYA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEO4CCyAAEDghASAJIAkoAgAiBEEBajYCACAEIAE6AAAgCyALKAIYQQFrNgIYDAALAAsgAiEBIAgoAgAgCSgCAEcNAyAFIAUoAgBBBHI2AgBBACEADAELAkAgAkUNAEEBIQoDQCACEB8gCk0NAQJAIAAgC0GMBGoQLEUEQCAAEDhB/wFxIAIgChAiLQAARg0BCyAFIAUoAgBBBHI2AgBBACEADAMLIAAQPxogCkEBaiEKDAALAAtBASEAIA8oAgAgCygCZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsACyAAC7IFAQp/IwBBEGsiCyQAIAYQSCEKIAtBBGogBhCZASIOEFggBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCiAGwBBLIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAYtAABBMEcNACAGLQABQSByQfgARw0AIApBMBBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAogBiwAARBLIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIAZBAmoiCCEGA0AgAiAGTQ0CIAYsAAAQLhoQsANFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAABAuGhCvA0UNASAGQQFqIQYMAAsACwJAIAtBBGoQWgRAIAogCCAGIAUoAgAQbyAFIAUoAgAgBiAIa0ECdGo2AgAMAQsgCCAGEIQBIA4QWSEPIAghBwNAIAYgB00EQCADIAggAGtBAnRqIAUoAgAQxwEFAkAgC0EEaiIMIA0QIiwAAEEATA0AIAkgDCANECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSAPNgIAIA0gDSAMEB9BAWtJaiENQQAhCQsgCiAHLAAAEEshDCAFIAUoAgAiEEEEajYCACAQIAw2AgAgB0EBaiEHIAlBAWohCQwBCwsLAkACQANAIAIgBk0NASAGQQFqIQcgBiwAACIGQS5HBEAgCiAGEEshBiAFIAUoAgAiCEEEajYCACAIIAY2AgAgByEGDAELCyAOEHghBiAFIAUoAgAiCEEEaiIJNgIAIAggBjYCAAwBCyAFKAIAIQkgBiEHCyAKIAcgAiAJEG8gBSAFKAIAIAIgB2tBAnRqIgU2AgAgBCAFIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALDwAgAARAIAAQOgsgABAtC90DAQh/IwBBEGsiCyQAIAYQSCEKIAtBBGoiByAGEJkBIgYQWAJAIAcQWgRAIAogACACIAMQbyAFIAMgAiAAa0ECdGoiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEshByAFIAUoAgAiCEEEajYCACAIIAc2AgAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAKIAcsAAEQSyEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtBAnRqIAUoAgAQxwEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBBGo2AgAgCSANNgIAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEshDCAFIAUoAgAiDkEEajYCACAOIAw2AgAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa0ECdGogASACRhs2AgAgC0EEahAgGiALQRBqJAALRwIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgACABIAIgBRDAASAFQSBqJAALOwIBfwF+IwBBEGsiBCQAIAMpAwAhBSAEIAMpAwg3AwggBCAFNwMAIABBHiABIAIgBBCWASAEQRBqJAALSQIBfwF+IwBBIGsiBSQAIAMoAgAhAyAEKQMAIQYgBSAEKQMINwMQIAUgBjcDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBIGokAAuiBQEKfyMAQRBrIgokACAGEEkhCSAKQQRqIAYQmwEiDhBYIAUgAzYCAAJAAkAgACIILQAAIgZBK2sOAwABAAELIAkgBsAQQSEGIAUgBSgCACIHQQFqNgIAIAcgBjoAACAAQQFqIQgLAkACQCACIAgiBmtBAUwNACAGLQAAQTBHDQAgBi0AAUEgckH4AEcNACAJQTAQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAJIAYsAAEQQSEHIAUgBSgCACIIQQFqNgIAIAggBzoAACAGQQJqIgghBgNAIAIgBk0NAiAGLAAAEC4aELADRQ0CIAZBAWohBgwACwALA0AgAiAGTQ0BIAYsAAAQLhoQrwNFDQEgBkEBaiEGDAALAAsCQCAKQQRqEFoEQCAJIAggBiAFKAIAEHkgBSAFKAIAIAYgCGtqNgIADAELIAggBhCEASAOEFkhDyAIIQcDQCAGIAdNBEAgAyAIIABraiAFKAIAEIQBBQJAIApBBGoiDCANECIsAABBAEwNACALIAwgDRAiLAAARw0AIAUgBSgCACILQQFqNgIAIAsgDzoAACANIA0gDBAfQQFrSWohDUEAIQsLIAkgBywAABBBIQwgBSAFKAIAIhBBAWo2AgAgECAMOgAAIAdBAWohByALQQFqIQsMAQsLCwNAAkACQCACIAZNBEAgBiEHDAELIAZBAWohByAGLAAAIgZBLkcNASAOEHghBiAFIAUoAgAiCEEBajYCACAIIAY6AAALIAkgByACIAUoAgAQeSAFIAUoAgAgAiAHa2oiBTYCACAEIAUgAyABIABraiABIAJGGzYCACAKQQRqECAaIApBEGokAA8LIAkgBhBBIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAAIAchBgwACwALKQEBfyMAQRBrIgQkACAEIAMrAwA5AwAgACABIAIgBBDAASAEQRBqJAALNwEBfyMAQRBrIgUkACADKAIAIQMgBSAEKwMAOQMIIAUgAzYCACAAIAEgAiAFEMABIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAysDADkDACAAQR4gASACIAQQlgEgBEEQaiQACzkBAX8jAEEQayIFJAAgAygCACEDIAUgBCsDADkDCCAFIAM2AgAgAEEeIAEgAiAFEJYBIAVBEGokAAsrAQF/IwBBEGsiBCQAIAQgAykDADcDACAAQRggASACIAQQlgEgBEEQaiQAC9QDAQh/IwBBEGsiCyQAIAYQSSEKIAtBBGoiByAGEJsBIgYQWAJAIAcQWgRAIAogACACIAMQeSAFIAMgAiAAa2oiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAEEEhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAKIAcsAAEQQSEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAHQQJqIQcLIAcgAhCEAUEAIQkgBhBZIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtqIAUoAgAQhAEgBSgCAAUCQCALQQRqIgwgCBAiLQAARQ0AIAkgDCAIECIsAABHDQAgBSAFKAIAIglBAWo2AgAgCSANOgAAIAggCCAMEB9BAWtJaiEIQQAhCQsgCiAGLAAAEEEhDCAFIAUoAgAiDkEBajYCACAOIAw6AAAgBkEBaiEGIAlBAWohCQwBCwshBgsgBCAGIAMgASAAa2ogASACRhs2AgAgC0EEahAgGiALQRBqJAALQwEBfyMAQRBrIgMkACADIAI2AgxBoCAgAUH02QFBuyxBGCADQQxqIgEQVEH02QFBvyxBGSABEFQQBCADQRBqJAAgAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAtbAQF/IwBBEGsiAyQAIAMgAigCADYCACMAQRBrIgIkACACIAE2AgwgAiADNgIIIAJBBGogAkEMahBjIABB1w0gAigCCBCkAyEAEGIgAkEQaiQAIANBEGokACAAC9kCAgR+Bn8jAEEgayIIJAACQAJAAkAgASACRwRAQYjqASgCACENQYjqAUEANgIAIwBBEGsiCSQAEC4aIwBBEGsiCiQAIwBBEGsiCyQAIwBBEGsiDCQAIAwgASAIQRxqQQIQgAIgDCkDACEEIAsgDCkDCDcDCCALIAQ3AwAgDEEQaiQAIAspAwAhBCAKIAspAwg3AwggCiAENwMAIAtBEGokACAKKQMAIQQgCSAKKQMINwMIIAkgBDcDACAKQRBqJAAgCSkDACEEIAggCSkDCDcDECAIIAQ3AwggCUEQaiQAIAgpAxAhBCAIKQMIIQVBiOoBKAIAIgFFDQEgCCgCHCACRw0CIAUhBiAEIQcgAUHEAEcNAwwCCyADQQQ2AgAMAgtBiOoBIA02AgAgCCgCHCACRg0BCyADQQQ2AgAgBiEFIAchBAsgACAFNwMAIAAgBDcDCCAIQSBqJAALwAECA38BfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBARCAAiAEKQMAIAQpAwgQlQIhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtEAAAAAAAAAAAhBgsgAkEENgIACyADQRBqJAAgBgubCgEEfyMAQRBrIgIkAEGACEEEQZAgQd4gQQRBAkEAQQAQC0HtC0ECQeQgQZghQQVBA0EAQQAQCyMAQSBrIgEkAEGY4AEtAABFBEBBmOABQQE6AABBnCFBvNoBEAcLQewgQYwlQcQlQQBB+iVBBkH9JUEAQf0lQQBB1xtB/yVBBxAJQewgQQFBhCZBiCZBIkEIEAYgAUEANgIcIAFBCTYCGCABIAEpAhg3AxAjAEEQayIAJAAgACABKQIQNwIIQewgQYoPQQNBjCZBmCZBIyAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQQo2AhggASABKQIYNwMIIwBBEGsiACQAIAAgASkCCDcCCEHsIEHKEEEEQaAmQbAmQSQgAEEIahCNAUEAQQBBABABIABBEGokACABQQA2AhwgAUELNgIYIAEgASkCGDcDACMAQRBrIgAkACAAIAEpAgA3AghB7CBB4BBBAkG4JkHAJkElIABBCGoQjQFBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEEMNgIMQewgQZoKQQNB6CZB9CZBJiAAQQxqEFRBAEEAQQAQASAAQRBqJAAjAEEQayIAJAAgAEENNgIMQewgQZYKQQRBgCdBkCdBJyAAQQxqEFRBAEEAQQAQASAAQRBqJAAgAUEgaiQAIwBBIGsiASQAQaTgAS0AAEUEQEGk4AFBAToAAEGYJ0HE2QEQBwtBpCpB0CpBiCtBAEG+K0EOQf0lQQBB/SVBAEG0FUHBK0EPEAlBpCpBAUHEK0HIK0EoQRAQBiABQQA2AhwgAUERNgIYIAEgASkCGDcDECMAQRBrIgAkACAAIAEpAhA3AghBpCpBig9BA0HMK0HYK0EpIABBCGoQjQFBAEEAQQAQASAAQRBqJAAgAUEANgIcIAFBEjYCGCABIAEpAhg3AwgjAEEQayIAJAAgACABKQIINwIIQaQqQcoQQQRB4CtB8CtBKiAAQQhqEI0BQQBBAEEAEAEgAEEQaiQAIAFBADYCHCABQRM2AhggASABKQIYNwMAIwBBEGsiACQAIAAgASkCADcCCEGkKkHgEEECQfgrQYAsQSsgAEEIahCNAUEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRQ2AgxBpCpBmgpBA0GMLEGYLEEsIABBDGoQVEEAQQBBABABIABBEGokACMAQRBrIgAkACAAQRU2AgxBpCpBlgpBBEGgLEGwLEEtIABBDGoQVEEAQQBBABABIABBEGokACABQSBqJABBoCBBhhJBtixBFkG4LEEXEAggAkEPakHGCkEAEIsDQZMRQQQQiwMjAEEQayIBJAAgAUEINgIMQaAgQZ8TQazZAUHELEEaIAFBDGoiAxBUQazZAUHILEEbIAMQVBAEIAFBEGokAEHlCkEMEJcBQboLQRgQlwFB7wpBJBCXAUHBC0EwEJcBQdAKQTwQlwFBtg9ByAAQlwEaQaAgEBBB2CxB/w1BBEEBEBFB2CxBgBZBABADQdgsQZoWQQEQA0HYLEGWFkECEANB2CxBkhZBAxADQdgsQY4WQQQQA0HYLEH8FUEFEANB2CxB+BVBBhADQdgsQfAVQQcQA0HYLEHsFUEIEANBwCBB1wpB+SxBHkH7LEEfEAgjAEEQayIBJAAgAUEANgIMQcAgQe4NQdgsQf4sQSAgAUEMaiIAEFRB2CxBgi1BISAAEFQQBCABQRBqJABBwCAQECACQRBqJAALvAECA38BfSMAQRBrIgMkAAJAAkACQCAAIAFHBEBBiOoBKAIAIQVBiOoBQQA2AgAQLhojAEEQayIEJAAgBCAAIANBDGpBABCAAiAEKQMAIAQpAwgQpgMhBiAEQRBqJAACQEGI6gEoAgAiAARAIAMoAgwgAUYNAQwDC0GI6gEgBTYCACADKAIMIAFHDQIMBAsgAEHEAEcNAwwCCyACQQQ2AgAMAgtDAAAAACEGCyACQQQ2AgALIANBEGokACAGC8MBAgN/AX4jAEEQayIEJAACfgJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBAwFC0GI6gEgBjYCACAEKAIMIAFGDQQLCwsgAkEENgIAQgAMAgsgAkEENgIAQn8MAQtCACAHfSAHIAVBLUYbCyAEQRBqJAAL1AECA38BfiMAQRBrIgQkAAJ/AkACQAJAIAAgAUcEQAJAAkAgAC0AACIFQS1HDQAgAEEBaiIAIAFHDQAMAQtBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAEQQxqIAMQggIhBwJAQYjqASgCACIABEAgBCgCDCABRw0BIABBxABGDQUMBAtBiOoBIAY2AgAgBCgCDCABRg0DCwsLIAJBBDYCAEEADAMLIAdC/////w9YDQELIAJBBDYCAEF/DAELQQAgB6ciAGsgACAFQS1GGwsgBEEQaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCTAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAvZAQIDfwF+IwBBEGsiBCQAAn8CQAJAAkAgACABRwRAAkACQCAALQAAIgVBLUcNACAAQQFqIgAgAUcNAAwBC0GI6gEoAgAhBkGI6gFBADYCABAuGiAAIARBDGogAxCCAiEHAkBBiOoBKAIAIgAEQCAEKAIMIAFHDQEgAEHEAEYNBQwEC0GI6gEgBjYCACAEKAIMIAFGDQMLCwsgAkEENgIAQQAMAwsgB0L//wNYDQELIAJBBDYCAEH//wMMAQtBACAHpyIAayAAIAVBLUYbCyAEQRBqJABB//8DcQu3AQIBfgJ/IwBBEGsiBSQAAkACQCAAIAFHBEBBiOoBKAIAIQZBiOoBQQA2AgAQLhogACAFQQxqIAMQmgMhBAJAQYjqASgCACIABEAgBSgCDCABRw0BIABBxABGDQMMBAtBiOoBIAY2AgAgBSgCDCABRg0DCwsgAkEENgIAQgAhBAwBCyACQQQ2AgAgBEIAVQRAQv///////////wAhBAwBC0KAgICAgICAgIB/IQQLIAVBEGokACAEC8ABAgJ/AX4jAEEQayIEJAACfwJAAkAgACABRwRAQYjqASgCACEFQYjqAUEANgIAEC4aIAAgBEEMaiADEJoDIQYCQEGI6gEoAgAiAARAIAQoAgwgAUcNASAAQcQARg0EDAMLQYjqASAFNgIAIAQoAgwgAUYNAgsLIAJBBDYCAEEADAILIAZCgICAgHhTIAZC/////wdVcg0AIAanDAELIAJBBDYCAEH/////ByAGQgBVDQAaQYCAgIB4CyAEQRBqJAALMwEBfyABIAAoAgQiAWohAgNAIAEgAkYEQCAAIAI2AgQFIAFBADoAACABQQFqIQEMAQsLC5EBAQN/AkAgASACEPUBIQQjAEEQayIDJAAgBEH3////A00EQAJAIAQQvQEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJABQQFqEI8BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQ5wIgA0EANgIEIANBBGoQViADQRBqJAAMAQsQWwALCxYAIAAgASACQoCAgICAgICAgH8QhAILhwgBBX8gASgCACEEAkACQAJAAkACQAJAAkACfwJAAkACQAJAIANFDQAgAygCACIFRQ0AIABFBEAgAiEDDAMLIANBADYCACACIQMMAQsCQEHc4QEoAgAoAgBFBEAgAEUNASACRQ0MIAIhBQNAIAQsAAAiAwRAIAAgA0H/vwNxNgIAIABBBGohACAEQQFqIQQgBUEBayIFDQEMDgsLIABBADYCACABQQA2AgAgAiAFaw8LIAIhAyAARQ0DDAULIAQQqAEPC0EBIQYMAwtBAAwBC0EBCyEGA0AgBkUEQCAELQAAQQN2IgZBEGsgBUEadSAGanJBB0sNAwJ/IARBAWoiBiAFQYCAgBBxRQ0AGiAGLAAAQUBOBEAgBEEBayEEDAcLIARBAmoiBiAFQYCAIHFFDQAaIAYsAABBQE4EQCAEQQFrIQQMBwsgBEEDagshBCADQQFrIQNBASEGDAELA0ACQCAEQQNxIAQsAAAiBUEATHINACAEKAIAIgVBgYKECGsgBXJBgIGChHhxDQADQCADQQRrIQMgBCgCBCEFIARBBGohBCAFIAVBgYKECGtyQYCBgoR4cUUNAAsLIAXAQQBKBEAgA0EBayEDIARBAWohBAwBCwsgBUH/AXFBwgFrIgZBMksNAyAEQQFqIQQgBkECdCgCkIEBIQVBACEGDAALAAsDQCAGRQRAIANFDQcDQAJAIAQtAAAiBsAiBUEATA0AIARBA3EgA0EFSXJFBEACQANAIAQoAgAiBUGBgoQIayAFckGAgYKEeHENASAAIAVB/wFxNgIAIAAgBC0AATYCBCAAIAQtAAI2AgggACAELQADNgIMIABBEGohACAEQQRqIQQgA0EEayIDQQRLDQALIAQtAAAhBQsgBUH/AXEhBiAFwEEATA0BCyAAIAY2AgAgAEEEaiEAIARBAWohBCADQQFrIgMNAQwJCwsgBkHCAWsiBkEySw0DIARBAWohBCAGQQJ0KAKQgQEhBUEBIQYMAQsgBC0AACIGQQN2IgdBEGsgByAFQRp1anJBB0sNAQJAAkACfyAEQQFqIgcgBkGAAWsgBUEGdHIiBkEATg0AGiAHLQAAQYABayIHQT9LDQEgByAGQQZ0IghyIQYgBEECaiIHIAhBAE4NABogBy0AAEGAAWsiB0E/Sw0BIAcgBkEGdHIhBiAEQQNqCyEEIAAgBjYCACADQQFrIQMgAEEEaiEADAELQYjqAUEZNgIAIARBAWshBAwFC0EAIQYMAAsACyAEQQFrIQQgBQ0BIAQtAAAhBQsgBUH/AXENACAABEAgAEEANgIAIAFBADYCAAsgAiADaw8LQYjqAUEZNgIAIABFDQELIAEgBDYCAAtBfw8LIAEgBDYCACACCzEBAX9B3OEBKAIAIQEgAARAQdzhAUHk4AEgACAAQX9GGzYCAAtBfyABIAFB5OABRhsLOAAgAEHQD2sgACAAQZPx//8HShsiAEEDcQRAQQAPCyAAQewOaiIAQeQAbwRAQQEPCyAAQZADb0ULlxMCD38EfiMAQYABayIIJAAgAQRAAn8DQAJAAn8CQAJAAkAgAi0AACIGQSVHBEAgBg0BIAoMBwtBACEFQQEhCQJAIAItAAEiB0Etaw4EAgMDAgALIAdB3wBGDQEgBw0CCyAAIApqIAY6AAAgCkEBagwCCyAHIQUgAi0AAiEHQQIhCQtBACEOAkACfyACIAlqIAciEkErRmoiCSwAAEEwa0EJTQRAIAkgCEEMakEKQv////8PEIQCpyECIAgoAgwMAQsgCCAJNgIMQQAhAiAJCyIHLQAAIgZBwwBrIgtBFktBASALdEGZgIACcUVyDQAgAiIODQAgByAJRyEOCyAGQc8ARiAGQcUARnIEfyAHLQABIQYgB0EBagUgBwshAiAIQRBqIQcgBSEJQQAhBSMAQdAAayILJABB5QghDUEwIRBBqIAIIQwCQCAIAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAn4CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAbAIgZBJWsOViEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0BAwQnLQcICQotLS0NLS0tLRASFBYYFxweIC0tLS0tLQACJgYFLQgCLQstLQwOLQ8tJRETFS0ZGx0fLQsgAygCGCIFQQZNDSIMKgsgAygCGCIFQQZLDSkgBUGHgAhqDCILIAMoAhAiBUELSw0oIAVBjoAIagwhCyADKAIQIgVBC0sNJyAFQZqACGoMIAsgAzQCFELsDnxC5AB/IRQMIwtB3wAhEAsgAzQCDCEUDCELQa8TIQ0MHwsgAzQCFCIVQuwOfCEUAkAgAygCHCIFQQJMBEAgFCAVQusOfCADEIMCQQFGGyEUDAELIAVB6QJJDQAgFULtDnwgFCADEIMCQQFGGyEUCyAGQecARg0ZDCALIAM0AgghFAweC0ECIQUgAygCCCIGRQRAQgwhFAwgCyAGrCIUQgx9IBQgBkEMShshFAwfCyADKAIcQQFqrCEUQQMhBQweCyADKAIQQQFqrCEUDBsLIAM0AgQhFAwaCyAIQQE2AnxBwx8hBQweC0GngAhBpoAIIAMoAghBC0obDBQLQdQVIQ0MFgtBACEMQQAhESMAQRBrIg8kACADNAIUIRQCfiADKAIQIg1BDE8EQCANIA1BDG0iBkEMbGsiBUEMaiAFIAVBAEgbIQ0gBiAFQR91aqwgFHwhFAsgD0EMaiEGIBRCAn1CiAFYBEAgFKciDEHEAGtBAnUhBQJAIAYCfyAMQQNxRQRAIAVBAWshBSAGRQ0CQQEMAQsgBkUNAUEACzYCAAsgDEGA54QPbCAFQYCjBWxqQYDWr+MHaqwMAQsgFELkAH0iFCAUQpADfyIWQpADfn0iFUI/h6cgFqdqIRMCQAJAAkAgFaciBUGQA2ogBSAVQgBTGyIFBH8CfyAFQcgBTgRAIAVBrAJPBEBBAyEMIAVBrAJrDAILQQIhDCAFQcgBawwBCyAFQeQAayAFIAVB4wBKIgwbCyIFDQFBAAVBAQshBSAGDQEMAgsgBUECdiERIAVBA3FFIQUgBkUNAQsgBiAFNgIACyAUQoDnhA9+IBEgDEEYbCATQeEAbGpqIAVrrEKAowV+fEKAqrrDA3wLIRQgDUECdEGwnAFqKAIAIgVBgKMFaiAFIA8oAgwbIAUgDUEBShshBSADKAIMIQYgAzQCCCEVIAM0AgQhFiADNAIAIA9BEGokACAUIAWsfCAGQQFrrEKAowV+fCAVQpAcfnwgFkI8fnx8IAM0AiR9DAgLIAM0AgAhFAwVCyAIQQE2AnxBxR8hBQwZC0HBFSENDBILIAMoAhgiBUEHIAUbrAwECyADKAIcIAMoAhhrQQdqQQdurSEUDBELIAMoAhwgAygCGEEGakEHcGtBB2pBB26tIRQMEAsgAxCDAq0hFAwPCyADNAIYCyEUQQEhBQwPC0GpgAghDAwKC0GqgAghDAwJCyADNAIUQuwOfELkAIEiFCAUQj+HIhSFIBR9IRQMCgsgAzQCFCIVQuwOfCEUIBVCpD9TDQogCyAUNwMwIAggB0H4EiALQTBqEIYBNgJ8IAchBQwOCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDgsgCyADKAIkIgVBkBxtIgZB5ABsIAUgBkGQHGxrwUE8bcFqNgJAIAggB0H+EiALQUBrEIYBNgJ8IAchBQwNCyADKAIgQQBIBEAgCEEANgJ8QcYfIQUMDQsgAygCKEG07wEtAABBAXFFBEBBiO8BQYzvAUHA7wFB4O8BEBJBlO8BQeDvATYCAEGQ7wFBwO8BNgIAQbTvAUEBOgAACwwLCyAIQQE2AnxBux4hBQwLCyAUQuQAgSEUDAULIAVBgIAIcgsgBBCfAwwHC0GrgAghDAsgDCAEEJ8DIQ0LIAggB0HkACANIAMgBBCeAyIFNgJ8IAdBACAFGyEFDAULQQIhBQwBC0EEIQULAkAgCSAQIAkbIgZB3wBHBEAgBkEtRw0BIAsgFDcDECAIIAdB+RIgC0EQahCGATYCfCAHIQUMBAsgCyAUNwMoIAsgBTYCICAIIAdB8hIgC0EgahCGATYCfCAHIQUMAwsgCyAUNwMIIAsgBTYCACAIIAdB6xIgCxCGATYCfCAHIQUMAgtB7RsLIgUQqAE2AnwLIAtB0ABqJAAgBUUNAQJAIA5FBEAgCCgCfCEJDAELAn8CQAJAIAUtAAAiBkEraw4DAQABAAsgCCgCfAwBCyAFLQABIQYgBUEBaiEFIAgoAnxBAWsLIQkCQCAGQf8BcUEwRw0AA0AgBSwAASIHQTBrQQlLDQEgBUEBaiEFIAlBAWshCSAHQTBGDQALCyAIIAk2AnxBACEGA0AgBiIHQQFqIQYgBSAHaiwAAEEwa0EKSQ0ACyAOIAkgCSAOSRshBgJAIAAgCmogAygCFEGUcUgEf0EtBSASQStHDQEgBiAJayAHakEDQQUgCCgCDC0AAEHDAEYbSQ0BQSsLOgAAIAZBAWshBiAKQQFqIQoLIAYgCU0gASAKTXINAANAIAAgCmpBMDoAACAKQQFqIQogBkEBayIGIAlNDQEgASAKSw0ACwsgCCAJIAEgCmsiByAHIAlLGyIHNgJ8IAAgCmogBSAHEHEaIAgoAnwgCmoLIQogAkEBaiECIAEgCksNAQsLIAFBAWsgCiABIApGGyEKQQALIQYgACAKakEAOgAACyAIQYABaiQAIAYLugEBAn8gAEEORgRAQdEbQeEVIAEoAgAbDwsgAEH//wNxIgJB//8DRyAAQRB1IgNBBUpyRQRAIAEgA0ECdGooAgAiAEEIakGMFiAAGw8LQcYfIQACQAJ/AkACQAJAIANBAWsOBQABBAQCBAsgAkEBSw0DQeCcAQwCCyACQTFLDQJB8JwBDAELIAJBA0sNAUGwnwELIQAgAkUEQCAADwsDQCAALQAAIABBAWohAA0AIAJBAWsiAg0ACwsgAAsOACAAEKEDBEAgABAtCwsnACAAQQBHIABBmIMBR3EgAEGwgwFHcSAAQYzuAUdxIABBpO4BR3EL5AIBA38CQCABLQAADQBB2hUQhgIiAQRAIAEtAAANAQsgAEEMbEHQgwFqEIYCIgEEQCABLQAADQELQecVEIYCIgEEQCABLQAADQELQc8bIQELAkADQCABIAJqLQAAIgRFIARBL0ZyRQRAQRchBCACQQFqIgJBF0cNAQwCCwsgAiEEC0HPGyEDAkACQAJAAkACQCABLQAAIgJBLkYNACABIARqLQAADQAgASEDIAJBwwBHDQELIAMtAAFFDQELIANBzxsQ0AFFDQAgA0GuFRDQAQ0BCyAARQRAQfSCASECIAMtAAFBLkYNAgtBAA8LQYjuASgCACICBEADQCADIAJBCGoQ0AFFDQIgAigCICICDQALC0EkEDQiAgRAIAJB9IIBKQIANwIAIAJBCGoiASADIAQQcRogASAEakEAOgAAIAJBiO4BKAIANgIgQYjuASACNgIACyACQfSCASAAIAJyGyECCyACCyUBAX8jAEEQayICJAAgAiABNgIMIABBxhAgARCkAyACQRBqJAALwR4CD38FfiMAQZABayIDJAAgA0EAQZAB/AsAIANBfzYCTCADIAA2AiwgA0HhADYCICADIAA2AlQgASEEIAIhDyMAQbACayIFJAAgAygCTBoCQAJAIAMoAgRFBEAgAxDJAxogAygCBEUNAQsgBC0AACIBRQ0BAkACQANAAkACQCABQf8BcSIAEH0EQANAIAQiAUEBaiEEIAEtAAEQfQ0ACyADQgAQZANAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCxB9DQALIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAQgAygCLGusIAMpA3ggFHx8IRQMAQsCfwJAAkAgAEElRgRAIAQtAAEiAEEqRg0BIABBJUcNAgsgA0IAEGQCQCAELQAAQSVGBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiARB9DQALIARBAWohBAwBCyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEBDAELIAMQJiEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgAUEATiANcg0KDAkLIAMoAgQgAygCLGusIAMpA3ggFHx8IRQgBCEBDAMLQQAhByAEQQJqDAELAkAgAEEwayIAQQlLDQAgBC0AAkEkRw0AIwBBEGsiASAPNgIMIAEgDyAAQQJ0akEEayAPIABBAUsbIgBBBGo2AgggACgCACEHIARBA2oMAQsgDygCACEHIA9BBGohDyAEQQFqCyEBQQAhC0EAIQIgAS0AACIEQTBrQf8BcUEJTQRAA0AgAkEKbCAEQf8BcWpBMGshAiABLQABIQQgAUEBaiEBIARBMGtB/wFxQQpJDQALCyAEQf8BcUHtAEcEfyABBUEAIQkgB0EARyELIAEtAAEhBEEAIQogAUEBagsiBkEBaiEBQQMhAAJAAkACQAJAAkACQCAEQf8BcUHBAGsOOgQJBAkEBAQJCQkJAwkJCQkJCQQJCQkJBAkJBAkJCQkJBAkEBAQEBAAEBQkBCQQEBAkJBAIECQkECQIJCyAGQQJqIAEgBi0AAUHoAEYiABshAUF+QX8gABshAAwECyAGQQJqIAEgBi0AAUHsAEYiABshAUEDQQEgABshAAwDC0EBIQAMAgtBAiEADAELQQAhACAGIQELQQEgACABLQAAIgBBL3FBA0YiBBshEAJAIABBIHIgACAEGyIMQdsARg0AAkAgDEHuAEcEQCAMQeMARw0BQQEgAiACQQFMGyECDAILIAcgECAUEKUDDAILIANCABBkA0ACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLEH0NAAsgAygCBCEEIAMpA3BCAFkEQCADIARBAWsiBDYCBAsgBCADKAIsa6wgAykDeCAUfHwhFAsgAyACrCISEGQCQCADKAIEIgAgAygCaEcEQCADIABBAWo2AgQMAQsgAxAmQQBIDQQLIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLQRAhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAMQdgAaw4hBgsLAgsLCwsLAQsCBAEBAQsFCwsLCwsDBgsLAgsECwsGAAsgDEHBAGsiAEEGS0EBIAB0QfEAcUVyDQoLIAVBCGogAyAQQQAQqAMgAykDeEIAIAMoAgQgAygCLGusfVENDiAHRQ0JIAUpAxAhEiAFKQMIIRMgEA4DBQYHCQsgDEEQckHzAEYEQCAFQSBqQX9BgQIQmAIgBUEAOgAgIAxB8wBHDQggBUEAOgBBIAVBADoALiAFQQA2ASoMCAsgBUEgaiABLQABIgBB3gBGIgRBgQIQmAIgBUEAOgAgIAFBAmogAUEBaiAEGyEGAn8CQAJAIAFBAkEBIAQbai0AACIBQS1HBEAgAUHdAEYNASAAQd4ARyEIIAYMAwsgBSAAQd4ARyIIOgBODAELIAUgAEHeAEciCDoAfgsgBkEBagshAQNAAkAgAS0AACIAQS1HBEAgAEUNDyAAQd0ARg0KDAELQS0hACABLQABIgZFIAZB3QBGcg0AIAFBAWohDgJAIAYgAUEBay0AACIETQRAIAYhAAwBCwNAIARBAWoiBCAFQSBqaiAIOgAAIAQgDi0AACIASQ0ACwsgDiEBCyAAIAVBIGpqIAg6AAEgAUEBaiEBDAALAAtBCCEEDAILQQohBAwBC0EAIQQLQgAhEkEAIQJBACEGQQAhDiMAQRBrIggkAAJAIARBAUcgBEEkTXFFBEBBiOoBQRw2AgAMAQsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiABB9DQALAkACQCAAQStrDgMAAQABC0F/QQAgAEEtRhshDiADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AACEADAELIAMQJiEACwJAAkACQAJAIARBAEcgBEEQR3EgAEEwR3JFBEACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBX3FB2ABGBEBBECEEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAABBEEkNAyADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZAwGCyAEDQFBCCEEDAILIARBCiAEGyIEIABBgf8Aai0AAEsNACADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQZEGI6gFBHDYCAAwECyAEQQpHDQAgAEEwayICQQlNBEBBACEAA0AgAEEKbCACaiIAQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQJgtBMGsiAkEJTXENAAsgAK0hEgsgAkEJSw0CIBJCCn4hEyACrSEVA0ACQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEEwayICQQlNIBMgFXwiEkKas+bMmbPmzBlUcUUEQCACQQlNDQEMBQsgEkIKfiITIAKtIhVCf4VYDQELC0EKIQQMAQsgBCAEQQFrcQRAIABBgf8Aai0AACIGIARJBEADQCAGIAIgBGxqIgJBx+PxOEkCfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADECYLIgBBgf8Aai0AACIGIARJcQ0ACyACrSESCyAEIAZNDQEgBK0hEwNAIBIgE34iFSAGrUL/AYMiFkJ/hVYNAiAVIBZ8IRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgZNDQIgCCATQgAgEkIAEEAgCCkDCFANAAsMAQsgBEEXbEEFdkEHcSwAgYEBIREgAEGB/wBqLQAAIgIgBEkEQANAIAIgBiARdCIAciEGIABBgICAwABJAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmCyIAQYH/AGotAAAiAiAESXENAAsgBq0hEgsgAiAETw0AQn8gEa0iE4giFSASVA0AA0AgAq1C/wGDIBIgE4aEIRIgBAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiAEGB/wBqLQAAIgJNDQEgEiAVWA0ACwsgBCAAQYH/AGotAABNDQADQCAEAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxAmC0GB/wBqLQAASw0AC0GI6gFBxAA2AgBBACEOQn8hEgsgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgDkEBckUgEkJ/UXEEQEGI6gFBxAA2AgBCfiESDAELIBIgDqwiE4UgE30hEgsgCEEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQkgB0UgDEHwAEdyRQRAIAcgEj4CAAwFCyAHIBAgEhClAwwECyAHIBMgEhCmAzgCAAwDCyAHIBMgEhCVAjkDAAwCCyAHIBM3AwAgByASNwMIDAELQR8gAkEBaiAMQeMARyIGGyEIAn8gEEEBRgRAIAchAiALBEAgCEECdBA0IgJFDQULIAVCADcCqAJBACEEAkACQANAIAIhAANAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxAmCyICIAVqLQAhRQ0CIAUgAjoAGyAFQRxqIAVBG2pBASAFQagCahDSASICQX5GDQAgAkF/RgRAQQAhCQwECyAABEAgACAEQQJ0aiAFKAIcNgIAIARBAWohBAsgC0UgBCAIR3INAAsgACAIQQF0QQFyIghBAnQQ3AEiAg0AC0EAIQkgACEKQQEhCwwIC0EAIQkgACAFQagCagR/IAUoAqgCBUEAC0UNAhoLIAAhCgwGCyALBEBBACEEIAgQNCICRQ0EA0AgAiEAA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADECYLIgIgBWotACFFBEAgACEJQQAMBAsgACAEaiACOgAAIARBAWoiBCAIRw0ACyAAIAhBAXRBAXIiCBDcASICDQALQQAhCiAAIQlBASELDAYLQQAhBCAHBEADQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsiACAFai0AIQRAIAQgB2ogADoAACAEQQFqIQQMAQUgByIAIQlBAAwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQJgsgBWotACENAAtBACEAQQAhCUEACyEKIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhNQIAYgEiATUXJFcg0FIAsEQCAHIAA2AgALIAxB4wBGDQAgCgRAIAogBEECdGpBADYCAAsgCUUEQEEAIQkMAQsgBCAJakEAOgAACyADKAIEIAMoAixrrCADKQN4IBR8fCEUIA0gB0EAR2ohDQsgAUEBaiEEIAEtAAEiAQ0BDAULC0EBIQtBACEJQQAhCgsgDUF/IA0bIQ0LIAtFDQEgCRAtIAoQLQwBC0F/IQ0LIAVBsAJqJAAgA0GQAWokACANC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsL2QMCBX8CfiMAQSBrIgQkACABQv///////z+DIQcCQCABQjCIQv//AYMiCKciA0GB/wBrQf0BTQRAIAdCGYinIQICQCAAUCABQv///w+DIgdCgICACFQgB0KAgIAIURtFBEAgAkEBaiECDAELIAAgB0KAgIAIhYRCAFINACACQQFxIAJqIQILQQAgAiACQf///wNLIgUbIQJBgYF/QYCBfyAFGyADaiEDDAELIAAgB4RQIAhC//8BUnJFBEAgB0IZiKdBgICAAnIhAkH/ASEDDAELIANB/oABSwRAQf8BIQMMAQtBgP8AQYH/ACAIUCIFGyIGIANrIgJB8ABKBEBBACECQQAhAwwBCyAEQRBqIAAgByAHQoCAgICAgMAAhCAFGyIHQYABIAJrEEQgBCAAIAcgAhCKASAEKQMIIgBCGYinIQICQCAEKQMAIAMgBkcgBCkDECAEKQMYhEIAUnGthCIHUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAcgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIAJBgICABHMgAiACQf///wNLIgMbIQILIARBIGokACABQiCIp0GAgICAeHEgA0EXdHIgAnK+C4kEAgN/AX4CQAJAAn8CQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyICQStrDgMAAQABCyACQS1GIAFFAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABAmCyIDQTprIgFBdUtyDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAkE6ayEBIAIhA0EACyEEIAFBdkkNAAJAIANBMGtBCk8NAEEAIQIDQCADIAJBCmxqAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAmCyEDQTBrIQIgAkHMmbPmAEggA0EwayIBQQlNcQ0ACyACrCEFIAFBCk8NAANAIAOtIAVCCn58IQUCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLIgNBMGsiAUEJTSAFQjB9IgVCro+F18fC66MBU3ENAAsgAUEKTw0AA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAECYLQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAV9IAUgBBshBQwBC0KAgICAgICAgIB/IQUgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQuJMgMRfwd+AXwjAEEwayIMJAACQAJAIAJBAksNACACQQJ0IgIoAux+IREgAigC4H4hEANAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICEH0NAAtBASEIAkACQCACQStrDgMAAQABC0F/QQEgAkEtRhshCCABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AACECDAELIAEQJiECCwJAAkAgAkFfcUHJAEYEQANAIAZBB0YNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLACKCCAGQQFqIQYgAkEgckYNAAsLIAZBA0cEQCAGQQhGIgcNASADRSAGQQRJcg0CIAcNAQsgASkDcCIVQgBZBEAgASABKAIEQQFrNgIECyADRSAGQQRJcg0AIBVCAFMhAgNAIAJFBEAgASABKAIEQQFrNgIECyAGQQFrIgZBA0sNAAsLQgAhFSMAQRBrIgckACAIskMAAIB/lLwiA0H///8DcSEIAn8gA0EXdiICQf8BcSIBBEAgAUH/AUcEQCAIrUIZhiEVIAJB/wFxQYD/AGoMAgsgCK1CGYYhFUH//wEMAQtBACAIRQ0AGiAHIAitQgAgCGciAUHRAGoQRCAHKQMIQoCAgICAgMAAhSEVIAcpAwAhFkGJ/wAgAWsLIQEgDCAWNwMAIAwgAa1CMIYgA0Efdq1CP4aEIBWENwMIIAdBEGokACAMKQMIIRUgDCkDACEWDAILAkACQAJAAkACQAJAIAYNAEEAIQYgAkFfcUHOAEcNAANAIAZBAkYNAgJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQJgshAiAGLADnDSAGQQFqIQYgAkEgckYNAAsLIAYOBAMBAQABCwJAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmC0EoRgRAQQEhBgwBC0KAgICAgIDg//8AIRUgASkDcEIAUw0GIAEgASgCBEEBazYCBAwGCwNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyICQTBrQQpJIAJBwQBrQRpJciACQd8ARnJFIAJB4QBrQRpPcUUEQCAGQQFqIQYMAQsLQoCAgICAgOD//wAhFSACQSlGDQUgASkDcCIWQgBZBEAgASABKAIEQQFrNgIECwJAIAMEQCAGDQEMBQtBiOoBQRw2AgBCACEWDAILA0AgFkIAWQRAIAEgASgCBEEBazYCBAsgBkEBayIGDQALDAMLIAEpA3BCAFkEQCABIAEoAgRBAWs2AgQLQYjqAUEcNgIACyABQgAQZAwCCwJAIAJBMEcNAAJ/IAEoAgQiByABKAJoRwRAIAEgB0EBajYCBCAHLQAADAELIAEQJgtBX3FB2ABGBEAjAEGwA2siBSQAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARAmCyECAkACfwNAIAJBMEcEQAJAIAJBLkcNBCABKAIEIgIgASgCaEYNACABIAJBAWo2AgQgAi0AAAwDCwUgASgCBCICIAEoAmhHBH9BASEPIAEgAkEBajYCBCACLQAABUEBIQ8gARAmCyECDAELCyABECYLIgJBMEcEQEEBIQsMAQsDQCAYQgF9IRgCfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABECYLIgJBMEYNAAtBASELQQEhDwtCgICAgICAwP8/IRYDQAJAIAIhBgJAAkAgAkEwayINQQpJDQAgAkEuRyIHIAJBIHIiBkHhAGtBBUtxDQIgBw0AIAsNAkEBIQsgFSEYDAELIAZB1wBrIA0gAkE5ShshAgJAIBVCB1cEQCACIAlBBHRqIQkMAQsgFUIcWARAIAVBMGogAhBPIAVBIGogGiAWQgBCgICAgICAwP0/EC8gBUEQaiAFKQMwIAUpAzggBSkDICIaIAUpAygiFhAvIAUgBSkDECAFKQMYIBcgGRBKIAUpAwghGSAFKQMAIRcMAQsgAkUgCnINACAFQdAAaiAaIBZCAEKAgICAgICA/z8QLyAFQUBrIAUpA1AgBSkDWCAXIBkQSkEBIQogBSkDSCEZIAUpA0AhFwsgFUIBfCEVQQEhDwsgASgCBCICIAEoAmhHBH8gASACQQFqNgIEIAItAAAFIAEQJgshAgwBCwsCfiAPRQRAAkACQCABKQNwQgBZBEAgASABKAIEIgJBAWs2AgQgA0UNASABIAJBAms2AgQgC0UNAiABIAJBA2s2AgQMAgsgAw0BCyABQgAQZAsgBUHgAGpEAAAAAAAAAAAgCLemEGwgBSkDYCEXIAUpA2gMAQsgFUIHVwRAIBUhFgNAIAlBBHQhCSAWQgF8IhZCCFINAAsLAkACQAJAIAJBX3FB0ABGBEAgASADEKcDIhZCgICAgICAgICAf1INAyADBEAgASkDcEIAWQ0CDAMLQgAhFyABQgAQZEIADAQLQgAhFiABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEWCyAJRQRAIAVB8ABqRAAAAAAAAAAAIAi3phBsIAUpA3AhFyAFKQN4DAELIBggFSALG0IChiAWfEIgfSIVQQAgEWutVQRAQYjqAUHEADYCACAFQaABaiAIEE8gBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEC8gBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AEC8gBSkDgAEhFyAFKQOIAQwBCyARQeIBa6wgFVcEQCAJQQBOBEADQCAFQaADaiAXIBlCAEKAgICAgIDA/79/EEogFyAZQoCAgICAgID/PxCtAyEBIAVBkANqIBcgGSAFKQOgAyAXIAFBAE4iAhsgBSkDqAMgGSACGxBKIAIgCUEBdCIBciEJIBVCAX0hFSAFKQOYAyEZIAUpA5ADIRcgAUEATg0ACwsCfiAVQSAgEWutfCIWpyIBQQAgAUEAShsgECAWIBCtUxsiAUHxAE8EQCAFQYADaiAIEE8gBSkDiAMhFiAFKQOAAyEaQgAMAQsgBUHgAmpBkAEgAWsQmQIQbCAFQdACaiAIEE8gBSkD0AIhGiAFQfACaiAFKQPgAiAFKQPoAiAFKQPYAiIWEKwDIAUpA/gCIRsgBSkD8AILIRggBUHAAmogCSAJQQFxRSAXIBlCAEIAEIcBQQBHIAFBIElxcSIBchCcASAFQbACaiAaIBYgBSkDwAIgBSkDyAIQLyAFQZACaiAFKQOwAiAFKQO4AiAYIBsQSiAFQaACaiAaIBZCACAXIAEbQgAgGSABGxAvIAVBgAJqIAUpA6ACIAUpA6gCIAUpA5ACIAUpA5gCEEogBUHwAWogBSkDgAIgBSkDiAIgGCAbEIgCIAUpA/ABIhggBSkD+AEiFkIAQgAQhwFFBEBBiOoBQcQANgIACyAFQeABaiAYIBYgFacQqwMgBSkD4AEhFyAFKQPoAQwBC0GI6gFBxAA2AgAgBUHQAWogCBBPIAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQLyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAEC8gBSkDsAEhFyAFKQO4AQshFSAMIBc3AxAgDCAVNwMYIAVBsANqJAAgDCkDGCEVIAwpAxAhFgwECyABKQNwQgBTDQAgASABKAIEQQFrNgIECyABIQYgAiEHIAghDSADIQhBACEDIwBBkMYAayIEJABBACARayIPIBBrIRQCQAJ/A0ACQCAHQTBHBEAgB0EuRw0EIAYoAgQiASAGKAJoRg0BIAYgAUEBajYCBCABLQAADAMLIAYoAgQiASAGKAJoRwRAIAYgAUEBajYCBCABLQAAIQcFIAYQJiEHC0EBIQMMAQsLIAYQJgsiB0EwRgRAA0AgFUIBfSEVAn8gBigCBCIBIAYoAmhHBEAgBiABQQFqNgIEIAEtAAAMAQsgBhAmCyIHQTBGDQALQQEhAwtBASELCyAEQQA2ApAGAn4CQAJAAkACQCAHQS5GIgEgB0EwayICQQlNcgRAA0ACQCABQQFxBEAgC0UEQCAWIRVBASELDAILIANFIQEMBAsgFkIBfCEWIAlB/A9MBEAgDiAWpyAHQTBGGyEOIARBkAZqIAlBAnRqIgEgCgR/IAcgASgCAEEKbGpBMGsFIAILNgIAQQEhA0EAIApBAWoiASABQQlGIgEbIQogASAJaiEJDAELIAdBMEYNACAEIAQoAoBGQQFyNgKARkHcjwEhDgsCfyAGKAIEIgEgBigCaEcEQCAGIAFBAWo2AgQgAS0AAAwBCyAGECYLIgdBLkYiASAHQTBrIgJBCklyDQALCyAVIBYgCxshFSADRSAHQV9xQcUAR3JFBEACQCAGIAgQpwMiF0KAgICAgICAgIB/Ug0AIAhFDQRCACEXIAYpA3BCAFMNACAGIAYoAgRBAWs2AgQLIBUgF3whFQwECyADRSEBIAdBAEgNAQsgBikDcEIAUw0AIAYgBigCBEEBazYCBAsgAUUNAUGI6gFBHDYCAAsgBkIAEGRCACEVQgAMAQsgBCgCkAYiAUUEQCAERAAAAAAAAAAAIA23phBsIAQpAwghFSAEKQMADAELIBUgFlIgFkIJVXIgEEEeTUEAIAEgEHYbckUEQCAEQTBqIA0QTyAEQSBqIAEQnAEgBEEQaiAEKQMwIAQpAzggBCkDICAEKQMoEC8gBCkDGCEVIAQpAxAMAQsgD0EBdq0gFVMEQEGI6gFBxAA2AgAgBEHgAGogDRBPIARB0ABqIAQpA2AgBCkDaEJ/Qv///////7///wAQLyAEQUBrIAQpA1AgBCkDWEJ/Qv///////7///wAQLyAEKQNIIRUgBCkDQAwBCyARQeIBa6wgFVUEQEGI6gFBxAA2AgAgBEGQAWogDRBPIARBgAFqIAQpA5ABIAQpA5gBQgBCgICAgICAwAAQLyAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAEC8gBCkDeCEVIAQpA3AMAQsgCgRAIApBCEwEQCAEQZAGaiAJQQJ0aiIBKAIAIQYDQCAGQQpsIQYgCkEBaiIKQQlHDQALIAEgBjYCAAsgCUEBaiEJCwJAIA5BCU4gFUIRVXIgFaciCiAOSHINACAVQglRBEAgBEHAAWogDRBPIARBsAFqIAQoApAGEJwBIARBoAFqIAQpA8ABIAQpA8gBIAQpA7ABIAQpA7gBEC8gBCkDqAEhFSAEKQOgAQwCCyAVQghXBEAgBEGQAmogDRBPIARBgAJqIAQoApAGEJwBIARB8AFqIAQpA5ACIAQpA5gCIAQpA4ACIAQpA4gCEC8gBEHgAWpBCCAKa0ECdCgCwH4QTyAEQdABaiAEKQPwASAEKQP4ASAEKQPgASAEKQPoARCqAyAEKQPYASEVIAQpA9ABDAILIBAgCkF9bGpBG2oiAkEeTEEAIAQoApAGIgEgAnYbDQAgBEHgAmogDRBPIARB0AJqIAEQnAEgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQLyAEQbACaiAKQQJ0QZj+AGooAgAQTyAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhAvIAQpA6gCIRUgBCkDoAIMAQsDQCAEQZAGaiAJIgFBAWsiCUECdGooAgBFDQALQQAhDgJAIApBCW8iAkUEQEEAIQIMAQsgAkEJaiACIBVCAFMbIRICQCABRQRAQQAhAkEAIQEMAQtBgJTr3ANBACASa0ECdEHg/gBqKAIAIgVtIQtBACEHQQAhBkEAIQIDQCAEQZAGaiIPIAZBAnRqIgMgByADKAIAIgkgBW4iCGoiAzYCACACQQFqQf8PcSACIANFIAIgBkZxIgMbIQIgCkEJayAKIAMbIQogCyAJIAUgCGxrbCEHIAZBAWoiBiABRw0ACyAHRQ0AIAFBAnQgD2ogBzYCACABQQFqIQELIAogEmtBCWohCgsDQCAEQZAGaiACQQJ0aiEPIApBJEghBgJAA0AgBkUEQCAKQSRHDQIgDygCAEHR6fkETw0CCyABQf8PaiEJQQAhAwNAIAEhCCADrSAEQZAGaiAJQf8PcSILQQJ0aiIBNQIAQh2GfCIVQoGU69wDVAR/QQAFIBUgFUKAlOvcA4AiFkKAlOvcA359IRUgFqcLIQMgASAVPgIAIAggCCALIAggFVAbIAIgC0YbIAsgCEEBa0H/D3EiB0cbIQEgC0EBayEJIAIgC0cNAAsgDkEdayEOIAghASADRQ0ACyACQQFrQf8PcSICIAFGBEAgBEGQBmoiCCABQf4PakH/D3FBAnRqIgEgASgCACAHQQJ0IAhqKAIAcjYCACAHIQELIApBCWohCiAEQZAGaiACQQJ0aiADNgIADAELCwJAA0AgAUEBakH/D3EhCCAEQZAGaiABQQFrQf8PcUECdGohEgNAQQlBASAKQS1KGyETAkADQCACIQNBACEGAkADQAJAIAMgBmpB/w9xIgIgAUYNACAEQZAGaiACQQJ0aigCACIHIAZBAnQoArB+IgJJDQAgAiAHSQ0CIAZBAWoiBkEERw0BCwsgCkEkRw0AQgAhFUEAIQZCACEWA0AgASADIAZqQf8PcSICRgRAIAFBAWpB/w9xIgFBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAJBAnRqKAIAEJwBIARB8AVqIBUgFkIAQoCAgIDlmreOwAAQLyAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBKIAQpA+gFIRYgBCkD4AUhFSAGQQFqIgZBBEcNAAsgBEHQBWogDRBPIARBwAVqIBUgFiAEKQPQBSAEKQPYBRAvQgAhFSAEKQPIBSEWIAQpA8AFIRcgDkHxAGoiByARayIJQQAgCUEAShsgECAJIBBIIggbIgZB8ABNDQIMBQsgDiATaiEOIAEhAiABIANGDQALQYCU69wDIBN2IQVBfyATdEF/cyELQQAhBiADIQIDQCAEQZAGaiIPIANBAnRqIgcgBiAHKAIAIgkgE3ZqIgc2AgAgAkEBakH/D3EgAiAHRSACIANGcSIHGyECIApBCWsgCiAHGyEKIAkgC3EgBWwhBiADQQFqQf8PcSIDIAFHDQALIAZFDQEgAiAIRwRAIAFBAnQgD2ogBjYCACAIIQEMAwsgEiASKAIAQQFyNgIADAELCwsgBEGQBWpB4QEgBmsQmQIQbCAEQbAFaiAEKQOQBSAEKQOYBSAWEKwDIAQpA7gFIRogBCkDsAUhGSAEQYAFakHxACAGaxCZAhBsIARBoAVqIBcgFiAEKQOABSAEKQOIBRCpAyAEQfAEaiAXIBYgBCkDoAUiFSAEKQOoBSIYEIgCIARB4ARqIBkgGiAEKQPwBCAEKQP4BBBKIAQpA+gEIRYgBCkD4AQhFwsCQCADQQRqQf8PcSICIAFGDQACQCAEQZAGaiACQQJ0aigCACICQf/Jte4BTQRAIAJFIANBBWpB/w9xIAFGcQ0BIARB8ANqIA23RAAAAAAAANA/ohBsIARB4ANqIBUgGCAEKQPwAyAEKQP4AxBKIAQpA+gDIRggBCkD4AMhFQwBCyACQYDKte4BRwRAIARB0ARqIA23RAAAAAAAAOg/ohBsIARBwARqIBUgGCAEKQPQBCAEKQPYBBBKIAQpA8gEIRggBCkDwAQhFQwBCyANtyEcIAEgA0EFakH/D3FGBEAgBEGQBGogHEQAAAAAAADgP6IQbCAEQYAEaiAVIBggBCkDkAQgBCkDmAQQSiAEKQOIBCEYIAQpA4AEIRUMAQsgBEGwBGogHEQAAAAAAADoP6IQbCAEQaAEaiAVIBggBCkDsAQgBCkDuAQQSiAEKQOoBCEYIAQpA6AEIRULIAZB7wBLDQAgBEHQA2ogFSAYQgBCgICAgICAwP8/EKkDIAQpA9ADIAQpA9gDQgBCABCHAQ0AIARBwANqIBUgGEIAQoCAgICAgMD/PxBKIAQpA8gDIRggBCkDwAMhFQsgBEGwA2ogFyAWIBUgGBBKIARBoANqIAQpA7ADIAQpA7gDIBkgGhCIAiAEKQOoAyEWIAQpA6ADIRcCQCAUQQJrIAdB/////wdxTg0AIAQgFkL///////////8AgzcDmAMgBCAXNwOQAyAEQYADaiAXIBZCAEKAgICAgICA/z8QLyAEKQOQAyAEKQOYA0KAgICAgICAuMAAEK0DIQIgBCkDiAMgFiACQQBOIgEbIRYgBCkDgAMgFyABGyEXIAggBiAJRyACQQBIcnEgFSAYQgBCABCHAUEAR3FFIBQgASAOaiIOQe4Aak5xDQBBiOoBQcQANgIACyAEQfACaiAXIBYgDhCrAyAEKQP4AiEVIAQpA/ACCyEWIAwgFTcDKCAMIBY3AyAgBEGQxgBqJAAgDCkDKCEVIAwpAyAhFgwCC0IAIRYMAQtCACEVCyAAIBY3AwAgACAVNwMIIAxBMGokAAvDBgIEfwN+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEIcBRQ0AAn8gBEL///////8/gyEKAn8gBEIwiKdB//8BcSIHQf//AUcEQEEEIAcNARpBAkEDIAMgCoRQGwwCCyADIAqEUAsLRQ0AIAJCMIinIghB//8BcSIGQf//AUcNAQsgBUEQaiABIAIgAyAEEC8gBSAFKQMQIgIgBSkDGCIBIAIgARCqAyAFKQMIIQIgBSkDACEEDAELIAEgAkL///////////8AgyIKIAMgBEL///////////8AgyIJEIcBQQBMBEAgASAKIAMgCRCHAQRAIAEhBAwCCyAFQfAAaiABIAJCAEIAEC8gBSkDeCECIAUpA3AhBAwBCyAEQjCIp0H//wFxIQcgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQLyAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEC8gBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQsgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogC30gAyAEVq19IglCAFkEQCAJIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEC8gBSkDKCECIAUpAyAhBAwFCyAJQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiALfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQLyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ggBkEBayEGIARCAYYhBCAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAws0AQF/IAFBgICAgARPBEAQjAEACyAAIAEQswIiAjYCBCAAIAI2AgAgACACIAFBAnRqNgIICwoAIABBMGtBCkkLFwAgAEEwa0EKSSAAQSByQeEAa0EGSXILEwAgAEEgciAAIABBwQBrQRpJGwspAQF/IAAoAgAiAQRAIAEQvQNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQspAQF/IAAoAgAiAQRAIAEQwwNBf0cEQCAAKAIARQ8LIABBADYCAAtBAQsUACACIAAgASAAayIAEE0gACACagskAQJ/IwBBEGsiAiQAIAEgABDTASEDIAJBEGokACABIAAgAxsLDAAgAEEAIABBf0cbCywBAX8gAUEASARAEIwBAAsgACABEFMiAjYCBCAAIAI2AgAgACABIAJqNgIIC5EBAQN/AkAgASACEIoCIQQjAEEQayIDJAAgBEH3////B00EQAJAIAQQ1AEEQCAAIAQQUCAAIQUMAQsgA0EIaiAEEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIFNgIAIAAgAygCDBBcIAAgBDYCBAsgASACIAUQtAMgA0EAOgAHIANBB2oQXSADQRBqJAAMAQsQWwALCw8AIAAgACgCGCABajYCGAsXACAAIAI2AhwgACABNgIUIAAgATYCGAtUAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABIAIoAgAoAjQRBAAMAQsgAiADQQRqNgIYIAMgATYCACABC0F/Rw0AIABBADYCAAsLMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBBGo2AgwgASgCAAsnAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEoAgALLgEBfyMAQRBrIgEkACABIAA2AgBB6gsgARByEH9BoPEAKAIAEGEaIAFBEGokAAskAQF/AkAgACgCACICRQ0AIAIgARDCA0F/Rw0AIABBADYCAAsLPQEBfyADBEAgACADELcDIAAoAgQhAyACIAFrIgRFIAEgAkZyRQRAIAMgASAE/AoAAAsgACADIARqNgIECwsJACAAEI8CEC0LPQEBfyAAKAIYIgIgACgCHEYEQCAAIAEQowEgACgCACgCNBEEAA8LIAAgAkEBajYCGCACIAE6AAAgARCjAQsqAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAA8LIAEsAAAQowELDwAgACAAKAIAKAIYEQAAC6wCAQJ/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABIAA2AgwgAUEAOgAIIAAgACgCAEEMaygCAGoQ2QEEQCAAIAAoAgBBDGsoAgBqKAJIIgIEQCACEMUDCyABQQE6AAgLAkAgAS0ACEUNACAAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgACAAKAIAQQxrKAIAakEBENUBCwJAIAEoAgwiACAAKAIAQQxrKAIAaigCGEUNACABKAIMIgAgACgCAEEMaygCAGoQ2QFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIEQYDAAHFFDQAgASgCDCIAIAAoAgBBDGsoAgBqKAIYEMQDQX9HDQAgASgCDCIAIAAoAgBBDGsoAgBqQQEQ1QELCyABQRBqJAALCQAgABCQAhAtCy0AIABByABqEDogAEE8ahA6IABBMGoQOiAAQSRqEDogAEEYahA6IABBDGoQOgsEAEF/C3wBAn8gACAAKAJIIgFBAWsgAXI2AkggACgCFCAAKAIcRwRAIABBAEEAIAAoAiQRAwAaCyAAQQA2AhwgAEIANwMQIAAoAgAiAUEEcQRAIAAgAUEgcjYCAEF/DwsgACAAKAIsIAAoAjBqIgI2AgggACACNgIEIAFBG3RBH3ULBQAQFwALLQAgAEHMAGoQOiAAQUBrEDogAEE0ahA6IABBKGoQOiAAQRxqEDogAEEQahA6CxIAIABFBEBBAA8LIAAgARCWAgsPACAAIAEgAkE0QTUQ0QMLvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEBAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALbwEFfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH/////B3NLGyEECyAAIANBAWoiBTYCACADLAABIAQhAiAFIQNBMGsiAUEKSQ0ACyACC/oSAhN/An4jAEFAaiIIJAAgCCABNgI8IAhBKWohFyAIQSdqIRggCEEoaiERAkACQAJAAkADQEEAIQcDQCABIQ0gByAOQf////8Hc0oNAiAHIA5qIQ4CQAJAAkACQCABIgctAAAiCwRAA0ACQAJAIAtB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQsDQCALLQABQSVHBEAgCyEBDAILIAdBAWohByALLQACIAtBAmoiASELQSVGDQALCyAHIA1rIgcgDkH/////B3MiGUoNCSAABEAgACANIAcQQgsgBw0HIAggATYCPCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AjxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AjwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ/AkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AjxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AjwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQTxqEM8DIg9BAEgNCiAIKAI8IQELQQAhB0F/IQkCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACQTBrIgpBCUsNACABLQADQSRHDQAgAUEEaiEBAn8gAEUEQCAEIApBAnRqQQo2AgBBAAwBCyADIApBA3RqKAIACwwBCyASDQYgAUECaiEBQQAgAEUNABogAiACKAIAIgpBBGo2AgAgCigCAAshCSAIIAE2AjwgCUEATgwBCyAIIAFBAWo2AjwgCEE8ahDPAyEJIAgoAjwhAUEBCyEUA0AgByEVQRwhCiABIhMsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAVQTpsakHv8ABqLQAAIgdBAWtB/wFxQQhJDQALIAggATYCPAJAIAdBG0cEQCAHRQ0MIBBBAE4EQCAARQRAIAQgEEECdGogBzYCAAwMCyAIIAMgEEEDdGopAwA3AzAMAgsgAEUNCCAIQTBqIAcgAiAGEM4DDAELIBBBAE4NC0EAIQcgAEUNCAsgAC0AAEEgcQ0LIAxB//97cSILIAwgDEGAwABxGyEMQQAhEEHuCCEWIBEhCgJAAkACfwJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgEy0AACIHwCITQVNxIBMgB0EPcUEDRhsgEyAVGyIHQdgAaw4hBBYWFhYWFhYWEBYJBhAQEBYGFhYWFgIFAxYWChYBFhYEAAsCQCAHQcEAaw4HEBYLFhAQEAALIAdB0wBGDQsMFQsgCCkDMCEbQe4IDAULQQAhBwJAAkACQAJAAkACQAJAIBUOCAABAgMEHAUGHAsgCCgCMCAONgIADBsLIAgoAjAgDjYCAAwaCyAIKAIwIA6sNwMADBkLIAgoAjAgDjsBAAwYCyAIKAIwIA46AAAMFwsgCCgCMCAONgIADBYLIAgoAjAgDqw3AwAMFQtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDMCIbIhpQRQRAA0AgAUEBayIBIBqnQQ9xLQCAdSALcjoAACAaQg9WIBpCBIghGg0ACwsgASENIAxBCHFFIBtQcg0DIAdBBHZB7ghqIRZBAiEQDAMLIBEhASAIKQMwIhsiGlBFBEADQCABQQFrIgEgGqdBB3FBMHI6AAAgGkIHViAaQgOIIRoNAAsLIAEhDSAMQQhxRQ0CIAkgFyABayIBIAEgCUgbIQkMAgsgCCkDMCIbQgBTBEAgCEIAIBt9Ihs3AzBBASEQQe4IDAELIAxBgBBxBEBBASEQQe8IDAELQfAIQe4IIAxBAXEiEBsLIRYgGyAREKYBIQ0LIBQgCUEASHENESAMQf//e3EgDCAUGyEMIBtCAFIgCXJFBEAgESENQQAhCQwOCyAJIBtQIBEgDWtqIgEgASAJSBshCQwNCyAILQAwIQcMCwsgCCgCMCIBQZUcIAEbIg1BAEH/////ByAJIAlB/////wdPGyIHEOABIgEgDWsgByABGyIBIA1qIQogCUEATgRAIAshDCABIQkMDAsgCyEMIAEhCSAKLQAADQ8MCwsgCCkDMCIaUEUNAUEAIQcMCQsgCQRAIAgoAjAMAgtBACEHIABBICAPQQAgDBBFDAILIAhBADYCDCAIIBo+AgggCCAIQQhqIgc2AjBBfyEJIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEMwDIg1BAEgNDyANIAkgB2tLDQAgC0EEaiELIAcgDWoiByAJSQ0BCwtBPSEKIAdBAEgNDCAAQSAgDyAHIAwQRSAHRQRAQQAhBwwBC0EAIQogCCgCMCELA0AgCygCACINRQ0BIAhBBGoiCSANEMwDIg0gCmoiCiAHSw0BIAAgCSANEEIgC0EEaiELIAcgCksNAAsLIABBICAPIAcgDEGAwABzEEUgDyAHIAcgD0gbIQcMCAsgFCAJQQBIcQ0JQT0hCiAAIAgrAzAgDyAJIAwgByAFESAAIgdBAE4NBwwKCyAHLQABIQsgB0EBaiEHDAALAAsgAA0JIBJFDQNBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhDOA0EBIQ4gB0EBaiIHQQpHDQEMCwsLIAdBCk8EQEEBIQ4MCgsDQCAEIAdBAnRqKAIADQFBASEOIAdBAWoiB0EKRw0ACwwJC0EcIQoMBgsgCCAHOgAnQQEhCSAYIQ0gCyEMCyAJIAogDWsiCyAJIAtKGyIBIBBB/////wdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBlLDQQgAEEgIAcgCSAMEEUgACAWIBAQQiAAQTAgByAJIAxBgIAEcxBFIABBMCABIAtBABBFIAAgDSALEEIgAEEgIAcgCSAMQYDAAHMQRSAIKAI8IQEMAQsLC0EAIQ4MAwtBPSEKC0GI6gEgCjYCAAtBfyEOCyAIQUBrJAAgDgvCAgEEfyMAQdABayIFJAAgBSACNgLMASAFQaABaiICQQBBKPwLACAFIAUoAswBNgLIAQJAQQAgASAFQcgBaiAFQdAAaiACIAMgBBDQA0EASARAQX8hBAwBCyAAKAJMQQBIIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F/IAAQ3wENARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ0AMLIQIgBgRAIABBAEEAIAAoAiQRAwAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF/IAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEDQALIAVB0AFqJAAgBAt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARDSAyEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCz4BAX8jAEEQayIBJAAgASAANgIMAn8gAEEETwRAQZ0fIAFBDGoQlwJBAAwBCyAAQQJ0KAKILQsgAUEQaiQACwYAIAEQLQsJACABIAJsEDQLJQECfyAAKAIEIgAQqAFBAWoiARA0IgIEfyACIAAgARBxBUEACwsNACAAKAIEIAAoAgBrCzABAX8jAEEQayIEJAAgACgCACEAIAQgAzoADyABIAIgBEEPaiAAEQMAIARBEGokAAuNAgIBfwF8IwBBEGsiAyQAIANBDmogASACIAAoAgARBQAgAyADLwAOOwEMIwBBEGsiASQAAkAgAy0ADUEBRgRAIwBBEGsiAiQAQazgAS0AAEEBcUUEQEECQYQsQQMQDyEAQazgAUEBOgAAQajgASAANgIACyACIAMtAAw2AgggAkEANgIEQajgASgCAEEAQQAgAkEEaiACQQhqEA4hBCACIAIoAgQ2AgAgAUEIaiIAIAT8AzYCBCAAQfzgATYCACACEJ8CIAJBEGokACAAKAIEIQIgAEEANgIEIAAQtQEMAQsgAUEANgIMIAFB/OABNgIIIAFBCGoQtQFBAiECCyABQRBqJAAgA0EQaiQAIAILVAECfyMAQRBrIgQkACABIAAoAgQiBUEBdWohASAAKAIAIQAgBUEBcQRAIAEoAgAgAGooAgAhAAsgBCADOgAPIAEgAiAEQQ9qIAARBQAgBEEQaiQAC1IBAn8jAEEQayIDJAAgASAAKAIEIgRBAXVqIQEgACgCACEAIARBAXEEQCABKAIAIABqKAIAIQALIAMgAjoADyABIANBD2ogABEBACADQRBqJAALMAEBfyMAQRBrIgQkACAAKAIAIQAgBCADOAIMIAEgAiAEQQxqIAARAwAgBEEQaiQAC40CAgF/AXwjAEEQayIDJAAgA0EIaiABIAIgACgCABEFACADIAMpAgg3AwAjAEEQayIBJAACQCADLQAEQQFGBEAjAEEQayICJABBoOABLQAAQQFxRQRAQQJBxCZBAxAPIQBBoOABQQE6AABBnOABIAA2AgALIAIgAyoCADgCCCACQQA2AgRBnOABKAIAQQBBACACQQRqIAJBCGoQDiEEIAIgAigCBDYCACABQQhqIgAgBPwDNgIEIABB/OABNgIAIAIQnwIgAkEQaiQAIAAoAgQhAiAAQQA2AgQgABC1AQwBCyABQQA2AgwgAUH84AE2AgggAUEIahC1AUECIQILIAFBEGokACADQRBqJAAgAgtUAQJ/IwBBEGsiBCQAIAEgACgCBCIFQQF1aiEBIAAoAgAhACAFQQFxBEAgASgCACAAaigCACEACyAEIAM4AgwgASACIARBDGogABEFACAEQRBqJAALUgECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACOAIMIAEgA0EMaiAAEQEAIANBEGokAAsbACAAIAEoAgggBRA7BEAgASACIAMgBBDnAQsLOAAgACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRCgALkgIBBn8gACABKAIIIAUQOwRAIAEgAiADIAQQ5wEPCyABLQA1IAAoAgwhBiABQQA6ADUgAS0ANCABQQA6ADQgAEEQaiIJIAEgAiADIAQgBRDlASABLQA0IgpyIQggAS0ANSILciEHAkAgBkECSQ0AIAkgBkEDdGohCSAAQRhqIQYDQCABLQA2DQECQCAKQQFxBEAgASgCGEEBRg0DIAAtAAhBAnENAQwDCyALQQFxRQ0AIAAtAAhBAXFFDQILIAFBADsBNCAGIAEgAiADIAQgBRDlASABLQA1IgsgB3JBAXEhByABLQA0IgogCHJBAXEhCCAGQQhqIgYgCUkNAAsLIAEgB0EBcToANSABIAhBAXE6ADQLkgEAIAAgASgCCCAEEDsEQCABIAIgAxDmAQ8LAkAgACABKAIAIAQQO0UNAAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC/YBACAAIAEoAgggBBA7BEAgASACIAMQ5gEPCwJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQgACgCACgCFBEKACABLQA1QQFGBEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBELAAsLrwQBA38gACABKAIIIAQQOwRAIAEgAiADEOYBDwsCQAJAIAAgASgCACAEEDsEQAJAIAEoAhAgAkcEQCACIAEoAhRHDQELIANBAUcNAyABQQE2AiAPCyABIAM2AiAgASgCLEEERg0BIABBEGoiBSAAKAIMQQN0aiEHQQAhAwNAAkACQCABAn8CQCAFIAdPDQAgAUEAOwE0IAUgASACIAJBASAEEOUBIAEtADYNACABLQA1QQFHDQMgAS0ANEEBRgRAIAEoAhhBAUYNA0EBIQNBASEGIAAtAAhBAnFFDQMMBAtBASEDIAAtAAhBAXENA0EDDAELQQNBBCADGws2AiwgBg0FDAQLIAFBAzYCLAwECyAFQQhqIQUMAAsACyAAKAIMIQUgAEEQaiIGIAEgAiADIAQQtwEgBUECSQ0BIAYgBUEDdGohBiAAQRhqIQUCQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAyAFIAEgAiADIAQQtwEgBUEIaiIFIAZJDQALDAILIABBAXFFBEADQCABLQA2DQMgASgCJEEBRg0DIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAwDCwALA0AgAS0ANg0CIAEoAiRBAUYEQCABKAIYQQFGDQMLIAUgASACIAMgBBC3ASAFQQhqIgUgBkkNAAsMAQsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsLjgUBBH8jAEFAaiIEJAACQCABQaDZAUEAEDsEQCACQQA2AgBBASEFDAELAkAgACABIAAtAAhBGHEEf0EBBSABRQ0BIAFB9NYBEFIiA0UNASADLQAIQRhxQQBHCxA7IQYLIAYEQEEBIQUgAigCACIARQ0BIAIgACgCADYCAAwBCwJAIAFFDQAgAUGk1wEQUiIGRQ0BIAIoAgAiAQRAIAIgASgCADYCAAsgBigCCCIDIAAoAggiAUF/c3FBB3EgA0F/cyABcUHgAHFyDQFBASEFIAAoAgwgBigCDEEAEDsNASAAKAIMQZTZAUEAEDsEQCAGKAIMIgBFDQIgAEHU1wEQUkUhBQwCCyAAKAIMIgNFDQBBACEFIANBpNcBEFIiAQRAIAAtAAhBAXFFDQICfyAGKAIMIQBBACECAkADQEEAIABFDQIaIABBpNcBEFIiA0UNASADKAIIIAEoAghBf3NxDQFBASABKAIMIAMoAgxBABA7DQIaIAEtAAhBAXFFDQEgASgCDCIARQ0BIABBpNcBEFIiAQRAIAMoAgwhAAwBCwsgAEGI2AEQUiIARQ0AIAAgAygCDBCpAiECCyACCyEFDAILIANBiNgBEFIiAQRAIAAtAAhBAXFFDQIgASAGKAIMEKkCIQUMAgsgA0HE1gEQUiIBRQ0BIAYoAgwiAEUNASAAQcTWARBSIgBFDQEgAigCACEDIARBCGpBAEE4/AsAIAQgA0EARzoAOyAEQX82AhAgBCABNgIMIAQgADYCBCAEQQE2AjQgACAEQQRqIANBASAAKAIAKAIcEQgAIAQoAhwiAEEBRgRAIAIgBCgCFEEAIAMbNgIACyAAQQFGIQUMAQtBACEFCyAEQUBrJAAgBQtvAQJ/IAAgASgCCEEAEDsEQCABIAIgAxDpAQ8LIAAoAgwhBCAAQRBqIgUgASACIAMQqwICQCAEQQJJDQAgBSAEQQN0aiEEIABBGGohAANAIAAgASACIAMQqwIgAS0ANg0BIABBCGoiACAESQ0ACwsLMgAgACABKAIIQQAQOwRAIAEgAiADEOkBDwsgACgCCCIAIAEgAiADIAAoAgAoAhwRCAALGQAgACABKAIIQQAQOwRAIAEgAiADEOkBCwvIAQECfyMAQdAAayIDJAACQAJ/QQEgACABQQAQOw0AGkEAIAFFDQAaQQAgAUHE1gEQUiIBRQ0AGiACKAIAIgRFDQEgA0EYakEAQTj8CwAgA0EBOgBLIANBfzYCICADIAA2AhwgAyABNgIUIANBATYCRCABIANBFGogBEEBIAEoAgAoAhwRCAAgAygCLCIAQQFGBEAgAiADKAIkNgIACyAAQQFGCyADQdAAaiQADwsgA0GeFjYCCCADQecDNgIEIANBig02AgAQPQALAwAACxEBAX9BBBBTIgBBADYCACAACwkAQaD0ARA5GgslAEGs9AEtAABFBEBBoPQBQdisARCRAUGs9AFBAToAAAtBoPQBCwkAQZD0ARAgGgskAEGc9AEtAABFBEBBkPQBQc4NELABQZz0AUEBOgAAC0GQ9AELCQBBgPQBEDkaCyUAQYz0AS0AAEUEQEGA9AFBhKwBEJEBQYz0AUEBOgAAC0GA9AELCQBB8PMBECAaCyQAQfzzAS0AAEUEQEHw8wFBmRUQsAFB/PMBQQE6AAALQfDzAQsJAEHg8wEQORoLqQIBBH8gAiABIAAoAgBqIgBHBEACQCACKAIEIgQgAigCACIBa0ECdSIGIAAoAgggACgCACICa0ECdU0EQCAGIAAoAgQiAyACayIFQQJ1SwRAIAIgA0cEQCAFBEAgAiABIAX8CgAACyAAKAIEIQMLIAQgASAFaiIBayICRSABIARGckUEQCADIAEgAvwKAAALIAAgAiADajYCBAwCCyAEIAFrIgNFIAEgBEZyRQRAIAIgASAD/AoAAAsgACACIANqNgIEDAELIAAoAgAiAgRAIAAgAjYCBCAAKAIIGiACEC0gAEEANgIIIABCADcCAAsgACAAIAYQtgEQrgMgACgCBCECIAQgAWsiA0UgASAERnJFBEAgAiABIAP8CgAACyAAIAIgA2o2AgQLCwslAEHs8wEtAABFBEBB4PMBQeCrARCRAUHs8wFBAToAAAtB4PMBCwkAQeTeARAgGgsaAEHd8wEtAABFBEBB3fMBQQE6AAALQeTeAQsJAEHQ8wEQORoLJQBB3PMBLQAARQRAQdDzAUG8qwEQkQFB3PMBQQE6AAALQdDzAQsJAEHY3gEQIBoLGgBBzfMBLQAARQRAQc3zAUEBOgAAC0HY3gELGwBBqPwBIQADQCAAQQxrEDkiAEGQ/AFHDQALC1QAQczzAS0AAARAQcjzASgCAA8LQaj8AS0AAEUEQEGo/AFBAToAAAtBkPwBQfjUARApQZz8AUGE1QEQKUHM8wFBAToAAEHI8wFBkPwBNgIAQZD8AQsbAEGI/AEhAANAIABBDGsQICIAQfD7AUcNAAsLFQAgASAAKAIAaiEAQQwQUyAAEIEBC1IAQcTzAS0AAARAQcDzASgCAA8LQYj8AS0AAEUEQEGI/AFBAToAAAtB8PsBQdEVECpB/PsBQc4VECpBxPMBQQE6AABBwPMBQfD7ATYCAEHw+wELGwBB4PsBIQADQCAAQQxrEDkiAEHA+QFHDQALC7ACAEG88wEtAAAEQEG48wEoAgAPC0Hg+wEtAABFBEBB4PsBQQE6AAALQcD5AUHw0AEQKUHM+QFBkNEBEClB2PkBQbTRARApQeT5AUHM0QEQKUHw+QFB5NEBEClB/PkBQfTRARApQYj6AUGI0gEQKUGU+gFBnNIBEClBoPoBQbjSARApQaz6AUHg0gEQKUG4+gFBgNMBEClBxPoBQaTTARApQdD6AUHI0wEQKUHc+gFB2NMBEClB6PoBQejTARApQfT6AUH40wEQKUGA+wFB5NEBEClBjPsBQYjUARApQZj7AUGY1AEQKUGk+wFBqNQBEClBsPsBQbjUARApQbz7AUHI1AEQKUHI+wFB2NQBEClB1PsBQejUARApQbzzAUEBOgAAQbjzAUHA+QE2AgBBwPkBCxsAQbD5ASEAA0AgAEEMaxAgIgBBkPcBRw0ACwuYAgBBtPMBLQAABEBBsPMBKAIADwtBsPkBLQAARQRAQbD5AUEBOgAAC0GQ9wFBmwgQKkGc9wFBkggQKkGo9wFBzQ8QKkG09wFBnA4QKkHA9wFB4QgQKkHM9wFBhxEQKkHY9wFBowgQKkHk9wFBkwkQKkHw9wFB1QwQKkH89wFBxAwQKkGI+AFBzAwQKkGU+AFB3wwQKkGg+AFB6g0QKkGs+AFBlRUQKkG4+AFBhg0QKkHE+AFB9gsQKkHQ+AFB4QgQKkHc+AFB3g0QKkHo+AFBkA4QKkH0+AFB0w8QKkGA+QFByg0QKkGM+QFBngoQKkGY+QFBiwkQKkGk+QFB+BQQKkG08wFBAToAAEGw8wFBkPcBNgIAQZD3AQsbAEGI9wEhAANAIABBDGsQOSIAQeD1AUcNAAsLzAEAQazzAS0AAARAQajzASgCAA8LQYj3AS0AAEUEQEGI9wFBAToAAAtB4PUBQZzOARApQez1AUG4zgEQKUH49QFB1M4BEClBhPYBQfTOARApQZD2AUGczwEQKUGc9gFBwM8BEClBqPYBQdzPARApQbT2AUGA0AEQKUHA9gFBkNABEClBzPYBQaDQARApQdj2AUGw0AEQKUHk9gFBwNABEClB8PYBQdDQARApQfz2AUHg0AEQKUGs8wFBAToAAEGo8wFB4PUBNgIAQeD1AQsbAEHY9QEhAANAIABBDGsQICIAQbD0AUcNAAsLvgEAQaTzAS0AAARAQaDzASgCAA8LQdj1AS0AAEUEQEHY9QFBAToAAAtBsPQBQcwIECpBvPQBQdMIECpByPQBQbEIECpB1PQBQbkIECpB4PQBQagIECpB7PQBQdoIECpB+PQBQcMIECpBhPUBQdoNECpBkPUBQeINECpBnPUBQeoQECpBqPUBQasTECpBtPUBQY8JECpBwPUBQbIPECpBzPUBQcIKECpBpPMBQQE6AABBoPMBQbD0ATYCAEGw9AELDwAgASAAKAIAaiACOgAACwsAIABBpKsBEJEBCwoAIABB7hAQsAELCwAgAEGQqwEQkQELCgAgAEHlEBCwAQsMACAAIAFBEGoQ5AELDAAgACABQQxqEOQBCwcAIAAsAAkLBwAgACwACAsJACAAEMMCEC0LDQAgASAAKAIAai0AAAsJACAAEMQCEC0LFQAgACgCCCIARQRAQQEPCyAAEMwCC44BAQZ/A0ACQCACIANGIAQgCE1yDQBBASEGIAAoAgghByMAQRBrIgUkACAFIAc2AgwgBUEIaiAFQQxqEGNBACACIAMgAmsgAUH07wEgARsQ0gEhChBiIAVBEGokAAJAAkAgCiIFQQJqDgMCAgEACyAFIQYLIAhBAWohCCAGIAlqIQkgAiAGaiECDAELCyAJC0YBAn8gACgCCCECIwBBEGsiASQAIAEgAjYCDCABQQhqIAFBDGoQYxBiIAFBEGokACAAKAIIIgBFBEBBAQ8LIAAQzAJBAUYLiQEBAn8jAEEQayIGJAAgBCACNgIAAn9BAiAGQQxqIgVBACAAKAIIEO4BIgBBAWpBAkkNABpBASAAQQFrIgIgAyAEKAIAa0sNABoDfyACBH8gBS0AACEAIAQgBCgCACIBQQFqNgIAIAEgADoAACACQQFrIQIgBUEBaiEFDAEFQQALCwsgBkEQaiQAC7kGAQ1/IwBBEGsiESQAIAIhCANAAkAgAyAIRgRAIAMhCAwBCyAILQAARQ0AIAhBAWohCAwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YgBSAGRnINACARIAEpAgA3AwggACgCCCEJIwBBEGsiECQAIBAgCTYCDCAQQQhqIBBBDGoQYyAIIAJrIQ5BACELIwBBkAhrIgwkACAMIAQoAgAiCTYCDCAFIAxBEGogBRshDwJAAkACQCAJRSAGIAVrQQJ1QYACIAUbIg1FckUEQANAIA5BgwFLIA5BAnYiCiANT3JFBEAgCSEKDAQLIA8gDEEMaiAKIA0gCiANSRsgARCbAyESIAwoAgwhCiASQX9GBEBBACENQX8hCwwDCyANIBJBACAPIAxBEGpHGyIUayENIA8gFEECdGohDyAJIA5qIAprQQAgChshDiALIBJqIQsgCkUNAiAKIQkgDQ0ADAILAAsgCSEKCyAKRQ0BCyANRSAORXINACALIQkDQAJAAkAgDyAKIA4gARDSASILQQJqQQJNBEACQAJAIAtBAWoOAgYAAQsgDEEANgIMDAILIAFBADYCAAwBCyAMIAwoAgwgC2oiCjYCDCAJQQFqIQkgDUEBayINDQELIAkhCwwCCyAPQQRqIQ8gDiALayEOIAkhCyAODQALCyAFBEAgBCAMKAIMNgIACyAMQZAIaiQAEGIgEEEQaiQAAkACQAJAAkAgCyIJQX9GBEADQCAHIAU2AgAgAiAEKAIARg0GQQEhBgJAAkACQCAFIAIgCCACayARQQhqIAAoAggQzQIiAUECag4DBwACAQsgBCACNgIADAQLIAEhBgsgAiAGaiECIAcoAgBBBGohBQwACwALIAcgBygCACAJQQJ0aiIFNgIAIAUgBkYNAyAEKAIAIQIgAyAIRg0GIAUgAkEBIAEgACgCCBDNAkUNAQtBAgwECyAHIAcoAgBBBGoiBTYCACAEIAQoAgBBAWoiAjYCACACIQgDQCADIAhGDQUgCC0AAEUNBiAIQQFqIQgMAAsACyAEIAI2AgBBAQwCCyAEKAIAIQILIAIgA0cLIBFBEGokAA8LIAMhCAwACwALpgUBDH8jAEEQayIPJAAgAiEIA0ACQCADIAhGBEAgAyEIDAELIAgoAgBFDQAgCEEEaiEIDAELCyAHIAU2AgAgBCACNgIAAkADQAJAAkAgAiADRiAFIAZGcgR/IAIFIA8gASkCADcDCEEBIRAgBSEJIAYgBWshCyAAKAIIIQpBACENIwBBEGsiDiQAIA4gCjYCDCAOQQhqIA5BDGoQYyMAQRBrIhEkAAJAIAQoAgAiCkUgCCACa0ECdSISRXINACALQQAgBRshCwNAIBFBDGogCSALQQRJGyAKKAIAEJYCIgxBf0YEQEF/IQ0MAgsgCQR/IAtBA00EQCALIAxJDQMgCSARQQxqIAwQcRoLIAsgDGshCyAJIAxqBUEACyEJIAooAgBFBEBBACEKDAILIAwgDWohDSAKQQRqIQogEkEBayISDQALCyAJBEAgBCAKNgIACyARQRBqJAAQYiAOQRBqJAACQAJAAkACQCANIglBAWoOAgAIAQsgByAFNgIAA0AgAiAEKAIARg0CIAUgAigCACAAKAIIEO4BIgFBf0YNAiAHIAcoAgAgAWoiBTYCACACQQRqIQIMAAsACyAHIAcoAgAgCWoiBTYCACAFIAZGDQEgAyAIRgRAIAQoAgAhAiADIQgMBgsgD0EEaiICQQAgACgCCBDuASIIQX9GDQQgBiAHKAIAayAISQ0GA0AgCARAIAItAAAhBSAHIAcoAgAiCUEBajYCACAJIAU6AAAgCEEBayEIIAJBAWohAgwBCwsgBCAEKAIAQQRqIgI2AgAgAiEIA0AgAyAIRgRAIAMhCAwFCyAIKAIARQ0EIAhBBGohCAwACwALIAQgAjYCAAwDCyAEKAIACyADRyEQDAMLIAcoAgAhBQwBCwtBAiEQCyAPQRBqJAAgEAsJACAAENsCEC0LMwAjAEEQayIAJAAgACAENgIMIAAgAyACazYCCCAAQQxqIABBCGoQtQMoAgAgAEEQaiQACzsAA0AgASACRkUEQCADIQAgBCABLAAAEEwEfyABLQAABSAACzoAACAEQQFqIQQgAUEBaiEBDAELCyABCwsAIAEgAiABEEwbCyoAA0AgASACRkUEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpgILHQAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABC8ALDwAgACABIAJBmIQBEKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2IQgCQAJ/IAUQHyAAKAKoA0oEQCAFEB8hCSAAKAKoAyENIAcQHyAJIA1rQQF0aiAGEB9qIAAoAqgDakEBagwBCyAHEB8gBhAfaiAAKAKoA2pBAmoLIglB5QBJDQAgCCAJQQJ0EDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH0ECdGogCiALIABB2ANqIAAoAtQDIAAoAtADIAwgBiAHIAAoAqgDEN4CIAEgAiAAKAIEIAAoAgAgAyAEEIUBIAgQNSAHEDkaIAYQORogDBAgGiAAQdwDahAlIABB4ANqJAALvgQBC38jAEGgCGsiACQAIAAgBjcDmAggACAFNwOQCCAAIAU3AwAgACAGNwMIIAAgAEGgB2oiBzYCnAcgB0HAECAAEIYBIQcgAEHjADYCgAQgAEH4A2pBACAAQYAEaiIJEDYhDiAAQeMANgKABCAAQfADakEAIAkQNiEKAkAgB0HkAE8EQCAAQZwHahAuQcAQIABBkAhqEMgBIgdBf0YNASAOIAAoApwHEDwgCiAHQQJ0EDQQPCAKEOQCDQEgCigCACEJCyAAQewDaiIIIAMQJyAIEEgiESAAKAKcByIIIAcgCGogCRBvIAdBAEoEQCAAKAKcBy0AAEEtRiEPCyACIA8gAEHsA2ogAEHoA2ogAEHkA2ogAEHgA2ogAEHUA2oQJCIQIABByANqECQiCCAAQbwDahAkIgsgAEG4A2oQ3wIgAEHjADYCICAAQRhqQQAgAEEgaiICEDYhDAJ/IAAoArgDIg0gB0gEQCALEB8gByANa0EBdGogCBAfaiAAKAK4A2pBAWoMAQsgCxAfIAgQH2ogACgCuANqQQJqCyINQeUATwRAIAwgDUECdBA0EDwgDCgCACICRQ0BCyACIABBFGogAEEQaiADKAIEIAkgCSAHQQJ0aiARIA8gAEHoA2ogACgC5AMgACgC4AMgECAIIAsgACgCuAMQ3gIgASACIAAoAhQgACgCECADIAQQhQEgDBA1IAsQORogCBA5GiAQECAaIABB7ANqECUgChA1IA4QNSAAQaAIaiQADwsQPQALMwECfyABKAIEIAEoAgAiAWsgAksEQEEBIQQgASACai0AACEDCyAAIAQ6AAEgACADOgAAC/wCAQh/IwBBsAFrIgAkACAAQawBaiIGIAMQJyAGEEkhCiAFEB8EQCAFQQAQIi0AACAKQS0QQUH/AXFGIQsLIAIgCyAAQawBaiAAQagBaiAAQacBaiAAQaYBaiAAQZgBahAkIgwgAEGMAWoQJCIGIABBgAFqECQiByAAQfwAahDjAiAAQeMANgIQIABBCGpBACAAQRBqIgIQNiEIAkACfyAFEB8gACgCfEoEQCAFEB8hCSAAKAJ8IQ0gBxAfIAkgDWtBAXRqIAYQH2ogACgCfGpBAWoMAQsgBxAfIAYQH2ogACgCfGpBAmoLIglB5QBJDQAgCCAJEDQQPCAIKAIAIgINABA9AAsgAiAAQQRqIAAgAygCBCAFECMgBRAjIAUQH2ogCiALIABBqAFqIAAsAKcBIAAsAKYBIAwgBiAHIAAoAnwQ4gIgASACIAAoAgQgACgCACADIAQQgAEgCBA1IAcQIBogBhAgGiAMECAaIABBrAFqECUgAEGwAWokAAu1BAELfyMAQcADayIAJAAgACAGNwO4AyAAIAU3A7ADIAAgBTcDACAAIAY3AwggACAAQcACaiIHNgK8AiAHQcAQIAAQhgEhByAAQeMANgLQASAAQcgBakEAIABB0AFqIgkQNiEOIABB4wA2AtABIABBwAFqQQAgCRA2IQoCQCAHQeQATwRAIABBvAJqEC5BwBAgAEGwA2oQyAEiB0F/Rg0BIA4gACgCvAIQPCAKIAcQNBA8IAoQ5AINASAKKAIAIQkLIABBvAFqIgggAxAnIAgQSSIRIAAoArwCIgggByAIaiAJEHkgB0EASgRAIAAoArwCLQAAQS1GIQ8LIAIgDyAAQbwBaiAAQbgBaiAAQbcBaiAAQbYBaiAAQagBahAkIhAgAEGcAWoQJCIIIABBkAFqECQiCyAAQYwBahDjAiAAQeMANgIgIABBGGpBACAAQSBqIgIQNiEMAn8gACgCjAEiDSAHSARAIAsQHyAHIA1rQQF0aiAIEB9qIAAoAowBakEBagwBCyALEB8gCBAfaiAAKAKMAWpBAmoLIg1B5QBPBEAgDCANEDQQPCAMKAIAIgJFDQELIAIgAEEUaiAAQRBqIAMoAgQgCSAHIAlqIBEgDyAAQbgBaiAALAC3ASAALAC2ASAQIAggCyAAKAKMARDiAiABIAIgACgCFCAAKAIQIAMgBBCAASAMEDUgCxAgGiAIECAaIBAQIBogAEG8AWoQJSAKEDUgDhA1IABBwANqJAAPCxA9AAvtAQEDfyAAKAIEIAAoAgAiBGsiAyABSQRAIwBBIGsiBCQAAkAgASADayIDIAAoAgggACgCBCIBa00EQCADIAAoAgQiAWohAwNAIAEgA0YEQCAAIAM2AgQFIAEgAi0AADoAACABQQFqIQEMAQsLDAELIAMgBEEMaiAAIAEgA2ogACgCAGsQtAEgACgCBCAAKAIAayAAEMYBIgUoAggiAWohAwNAIAEgA0cEQCABIAItAAA6AAAgAUEBaiEBDAELCyAFIAM2AgggACAFEO8BIAUQugELIARBIGokAA8LIAEgA0kEQCAAIAEgBGo2AgQLC4EFAQR/IwBBwANrIgAkACAAIAI2ArgDIAAgATYCvAMgAEHkADYCFCAAQRhqIABBIGogAEEUaiIIEDYhCiAAQRBqIgEgBBAnIAEQSCEHIABBADoADyAAQbwDaiACIAMgASAEKAIEIAUgAEEPaiAHIAogCCAAQbADahDqAgRAIwBBEGsiASQAIAYQHxoCQCAGEEcEQCAGKAIAIAFBADYCDCABQQxqEFYgBkEANgIEDAELIAFBADYCCCAGIAFBCGoQViAGQQAQUAsgAUEQaiQAIAAtAA9BAUYEQCAGIAdBLRBLEOoBCyAHQTAQSyEBIAooAgAhAiAAKAIUIgNBBGshBANAAkAgAiAETw0AIAIoAgAgAUcNACACQQRqIQIMAQsLIwBBEGsiBCQAIAYQHyEBIAYQ8QEhBwJAIAIgAxD1ASIIRQ0AIAYQIyAGECMgBhAfQQJ0akEEaiACEL4CRQRAIAggByABa0sEQCAGIAcgASAHayAIaiABIAEQ6AILIAIgAyAGECMgAUECdGoQ5wIgBEEANgIEIARBBGoQViAGIAEgCGoQgwEMAQsgBEEEaiIBIAIgAxCZAyABECMhCCABEB8hAiMAQRBrIgckAAJAIAIgBhDxASIJIAYQHyIDa00EQCACRQ0BIAYQIyIJIANBAnRqIAggAhBlIAYgAiADaiICEIMBIAdBADYCDCAJIAJBAnRqIAdBDGoQVgwBCyAGIAkgAiAJayADaiADIANBACACIAgQrwILIAdBEGokACABEDkaCyAEQRBqJAALIABBvANqIABBuANqECsEQCAFIAUoAgBBAnI2AgALIAAoArwDIABBEGoQJSAKEDUgAEHAA2okAAvRAwEDfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABB5AA2AhAgAEHIAWogAEHQAWogAEEQaiIBEDYhByAAQcABaiIIIAQQJyAIEEghCSAAQQA6AL8BAkAgAEHsBGogAiADIAggBCgCBCAFIABBvwFqIAkgByAAQcQBaiAAQeAEahDqAkUNACAAQcsbKAAANgC3ASAAQcQbKQAANwOwASAJIABBsAFqIABBugFqIABBgAFqEG8gAEHjADYCECAAQQhqQQAgARA2IQMgASEEAkAgACgCxAEgBygCAGsiAUGJA04EQCADIAFBAnVBAmoQNBA8IAMoAgBFDQEgAygCACEECyAALQC/AUEBRgRAIARBLToAACAEQQFqIQQLIAcoAgAhAgNAIAAoAsQBIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGogABCjA0EBRw0AIAMQNQwECwUgBCAAQbABaiAAQYABaiIBIAFBKGogAhD5ASABa0ECdWotAAA6AAAgBEEBaiEEIAJBBGohAgwBCwsQPQALED0ACyAAQewEaiAAQegEahArBEAgBSAFKAIAQQJyNgIACyAAKALsBCAAQcABahAlIAcQNSAAQfAEaiQAC5ABAQJ/IAACfyAAKAIEIgIgACgCCEkEQCACIAEtAAA6AAAgAkEBagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0EBahC0ASAAKAIEIAAoAgBrIAAQxgEiAigCCCABLQAAOgAAIAIgAigCCEEBajYCCCAAIAIQ7wEgACgCBCACELoBIANBIGokAAs2AgQLBQBBpCoL0AQBA38jAEGQAWsiACQAIAAgAjYCiAEgACABNgKMASAAQeQANgIUIABBGGogAEEgaiAAQRRqIgcQNiEJIABBEGoiCCAEECcgCBBJIQEgAEEAOgAPIABBjAFqIAIgAyAIIAQoAgQgBSAAQQ9qIAEgCSAHIABBhAFqEPACBEACQCAGLAALQQBIBEAgBigCAEEAOgAAIAZBADYCBAwBCyAGQQA6AAsgBkEAOgAACyAALQAPQQFGBEAgBiABQS0QQRC4AQsgAUEwEEEgCSgCACECIAAoAhQiBEEBayEDQf8BcSEBA0ACQCACIANPDQAgAi0AACABRw0AIAJBAWohAgwBCwsjAEEQayIBJAAgBhAfIQMgBhAoIQgCQCACIAQQigIiB0UNACAGECMgBhAjIAYQH2pBAWogAhC+AkUEQCAHIAggA2tLBEAgBiAIIAMgCGsgB2ogAyADEPQBCyACIAQgBhAjIANqELQDIAFBADoADyABQQ9qEF0gBiADIAdqEIMBDAELIAEgAiAEELgDIAEQIyEIIAEQHyECIwBBEGsiBCQAAkAgAiAGECgiByAGEB8iA2tNBEAgAkUNASAGECMiByADaiAIIAIQTSAGIAIgA2oiAhCDASAEQQA6AA8gAiAHaiAEQQ9qEF0MAQsgBiAHIAIgB2sgA2ogAyADQQAgAiAIELkBCyAEQRBqJAAgARAgGgsgAUEQaiQACyAAQYwBaiAAQYgBahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMASAAQRBqECUgCRA1IABBkAFqJAALxwMBA38jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQeQANgIQIABBmAFqIABBoAFqIABBEGoiARA2IQcgAEGQAWoiCCAEECcgCBBJIQkgAEEAOgCPAQJAIABBjAJqIAIgAyAIIAQoAgQgBSAAQY8BaiAJIAcgAEGUAWogAEGEAmoQ8AJFDQAgAEHLGygAADYAhwEgAEHEGykAADcDgAEgCSAAQYABaiAAQYoBaiAAQfYAahB5IABB4wA2AhAgAEEIakEAIAEQNiEDIAEhBAJAIAAoApQBIAcoAgBrIgFB4wBOBEAgAyABQQJqEDQQPCADKAIARQ0BIAMoAgAhBAsgAC0AjwFBAUYEQCAEQS06AAAgBEEBaiEECyAHKAIAIQIDQCAAKAKUASACTQRAAkAgBEEAOgAAIAAgBjYCACAAQRBqIAAQowNBAUcNACADEDUMBAsFIAQgAEH2AGoiASABQQpqIAIQ/QEgAGsgAGotAAo6AAAgBEEBaiEEIAJBAWohAgwBCwsQPQALED0ACyAAQYwCaiAAQYgCahAsBEAgBSAFKAIAQQJyNgIACyAAKAKMAiAAQZABahAlIAcQNSAAQZACaiQACxcAIAAoAgAgAUECdGogAioCADgCAEEBC5EDAQJ/IwBBoANrIgckACAHIAdBoANqIgM2AgwjAEGQAWsiAiQAIAIgAkGEAWo2AhwgAEEIaiACQSBqIgggAkEcaiAEIAUgBhD0AiACQgA3AxAgAiAINgIMIAdBEGoiBSAHKAIMEPUBIQQgACgCCCEGIwBBEGsiACQAIAAgBjYCDCAAQQhqIABBDGoQYyAFIAJBDGogBCACQRBqEJsDIQQQYiAAQRBqJAAgBEF/RgRAED0ACyAHIAUgBEECdGo2AgwgAkGQAWokACAHKAIMIQIjAEEQayIGJAAjAEEgayIAJAAgAEEYaiAFIAIQvwIgAEEQaiAAKAIYIQIgACgCHCEIIwBBEGsiBCQAIAQgAjYCCCAEIAE2AgwDQCACIAhHBEAgBEEMaiACKAIAELsDIAQgAkEEaiICNgIIDAELCyAEQQhqIARBDGoQZiAEQRBqJAAgACAFIAAoAhAQjgE2AgwgACAAKAIUNgIIIAZBCGogAEEMaiAAQQhqEGYgAEEgaiQAIAYoAgwgBkEQaiQAIAMkAAuAAgECfyMAQYABayICJAAgAiACQfQAajYCDCAAQQhqIAJBEGoiAyACQQxqIAQgBSAGEPQCIAIoAgwhBCMAQRBrIgYkACMAQSBrIgAkACAAQRhqIAMgBBC/AiAAQRBqIAAoAhghBCAAKAIcIQgjAEEQayIFJAAgBSAENgIIIAUgATYCDANAIAQgCEcEQCAFQQxqIAQsAAAQvwMgBSAEQQFqIgQ2AggMAQsLIAVBCGogBUEMahBmIAVBEGokACAAIAMgACgCEBCOATYCDCAAIAAoAhQ2AgggBkEIaiAAQQxqIABBCGoQZiAAQSBqJAAgBigCDCAGQRBqJAAgAkGAAWokAAvdDAEBfyMAQTBrIgckACAHIAE2AiwgBEEANgIAIAcgAxAnIAcQSCEIIAcQJQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQcEAaw45AAEXBBcFFwYHFxcXChcXFxcODxAXFxcTFRcXFxcXFxcAAQIDAxcXARcIFxcJCxcMFw0XCxcXERIUFgsgACAFQRhqIAdBLGogAiAEIAgQ9wIMGAsgACAFQRBqIAdBLGogAiAEIAgQ9gIMFwsgAEEIaiAAKAIIKAIMEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwWCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBAWtBHktyRQRAIAUgADYCDAwBCyAEIAFBBHI2AgALDBULIAdBqKABKQMANwMYIAdBoKABKQMANwMQIAdBmKABKQMANwMIIAdBkKABKQMANwMAIAcgACABIAIgAyAEIAUgByAHQSBqEG02AiwMFAsgB0HIoAEpAwA3AxggB0HAoAEpAwA3AxAgB0G4oAEpAwA3AwggB0GwoAEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwTCyAHQSxqIAIgBCAIQQIQZyEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EsaiACIAQgCEEDEGchAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EsaiACIAQgCEECEGchAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EsaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECsNACAIQQEgABA3EF9FDQAgABA+GgwBCwsgACABQQxqECsEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQSxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDNASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0HQoAFBLPwKAAAgByAAIAEgAiADIAQgBSAHIAdBLGoQbTYCLAwLCyAHQZChASgCADYCECAHQYihASkDADcDCCAHQYChASkDADcDACAHIAAgASACIAMgBCAFIAcgB0EUahBtNgIsDAoLIAdBLGogAiAEIAhBAhBnIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0G4oQEpAwA3AxggB0GwoQEpAwA3AxAgB0GooQEpAwA3AwggB0GgoQEpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQbTYCLAwICyAHQSxqIAIgBCAIQQEQZyEAAkAgBCgCACIBQQRxIABBBkpyRQRAIAUgADYCGAwBCyAEIAFBBHI2AgALDAcLIAAgASACIAMgBCAFIAAoAgAoAhQRBgAMBwsgAEEIaiAAKAIIKAIYEQAAIQEgByAAIAcoAiwgAiADIAQgBSABECMgARAjIAEQH0ECdGoQbTYCLAwFCyAFQRRqIAdBLGogAiAEIAgQ9QIMBAsgB0EsaiACIAQgCEEEEGchACAELQAAQQRxRQRAIAUgAEHsDms2AhQLDAMLIAZBJUYNAQsgBCAEKAIAQQRyNgIADAELIwBBEGsiACQAIAAgAjYCDAJAIAQCf0EGIAdBLGoiASAAQQxqIgIQKw0AGkEEIAggARA3EJQBQSVHDQAaIAEQPiACECtFDQFBAgsgBCgCAHI2AgALIABBEGokAAsgBygCLAsgB0EwaiQACz0AIAACfyABKAIEIAEoAgAiAWtBAnUgAksEQCAAIAEgAkECdGoqAgA4AgBBAQwBCyAAQQA6AABBAAs6AAQLSAECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEghASAHECUgBUEUaiAGQQxqIAIgBCABEPUCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEQaiAGQQxqIAIgBCABEPYCIAYoAgwgBkEQaiQAC0oBAn8jAEEQayIGJAAgBiABNgIMIAZBCGoiByADECcgBxBIIQEgBxAlIAAgBUEYaiAGQQxqIAIgBCABEPcCIAYoAgwgBkEQaiQACzAAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAECMgABAjIAAQH0ECdGoQbQtYAQF/IwBBIGsiBiQAIAZBuKEBKQMANwMYIAZBsKEBKQMANwMQIAZBqKEBKQMANwMIIAZBoKEBKQMANwMAIAAgASACIAMgBCAFIAYgBkEgaiIBEG0gASQAC4ICAQN/IAAoAgQgACgCACIEa0ECdSIDIAFJBEAjAEEgayIEJAACQCABIANrIgMgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASADQQJ0aiEDA0AgASADRgRAIAAgAzYCBAUgASACKgIAOAIAIAFBBGohAQwBCwsMAQsgBEEMaiAAIAEgACgCAGtBAnUgA2oQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgUoAggiASADQQJ0aiEDA0AgASADRwRAIAEgAioCADgCACABQQRqIQEMAQsLIAUgAzYCCCAAIAUQhQIgBRCBAgsgBEEgaiQADwsgASADSQRAIAAgBCABQQJ0ajYCBAsL9wsBAX8jAEEQayIHJAAgByABNgIMIARBADYCACAHIAMQJyAHEEkhCCAHECUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQABFwQXBRcGBxcXFwoXFxcXDg8QFxcXExUXFxcXFxcXAAECAwMXFwEXCBcXCQsXDBcNFwsXFxESFBYLIAAgBUEYaiAHQQxqIAIgBCAIEPoCDBgLIAAgBUEQaiAHQQxqIAIgBCAIEPkCDBcLIABBCGogACgCCCgCDBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMFgsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrQR5LckUEQCAFIAA2AgwMAQsgBCABQQRyNgIACwwVCyAHQqXavanC7MuS+QA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwUCyAHQqWytanSrcuS5AA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQbjYCDAwTCyAHQQxqIAIgBCAIQQIQaCEAAkAgBCgCACIBQQRxIABBF0pyRQRAIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEEBa0ELS3JFBEAgBSAANgIIDAELIAQgAUEEcjYCAAsMEQsgB0EMaiACIAQgCEEDEGghAAJAIAQoAgAiAUEEcSAAQe0CSnJFBEAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EMaiACIAQgCEECEGghAAJAIAQoAgAiAUEEcSAAQQFrIgBBC0tyRQRAIAUgADYCEAwBCyAEIAFBBHI2AgALDA8LIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE7SnJFBEAgBSAANgIEDAELIAQgAUEEcjYCAAsMDgsgB0EMaiEAIwBBEGsiASQAIAEgAjYCDANAAkAgACABQQxqECwNACAIQQEgABA4EGBFDQAgABA/GgwBCwsgACABQQxqECwEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQQxqIQECQCAAQQhqIAAoAggoAggRAAAiABAfQQAgAEEMahAfa0YEQCAEIAQoAgBBBHI2AgAMAQsgASACIAAgAEEYaiAIIARBABDPASICIABHIAUoAggiAUEMR3JFBEAgBUEANgIIDAELIAIgAGtBDEcgAUELSnJFBEAgBSABQQxqNgIICwsMDAsgB0H4nwEoAAA2AAcgB0HxnwEpAAA3AwAgByAAIAEgAiADIAQgBSAHIAdBC2oQbjYCDAwLCyAHQYCgAS0AADoABCAHQfyfASgAADYCACAHIAAgASACIAMgBCAFIAcgB0EFahBuNgIMDAoLIAdBDGogAiAEIAhBAhBoIQACQCAEKAIAIgFBBHEgAEE8SnJFBEAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0KlkOmp0snOktMANwMAIAcgACABIAIgAyAEIAUgByAHQQhqEG42AgwMCAsgB0EMaiACIAQgCEEBEGghAAJAIAQoAgAiAUEEcSAAQQZKckUEQCAFIAA2AhgMAQsgBCABQQRyNgIACwwHCyAAIAEgAiADIAQgBSAAKAIAKAIUEQYADAcLIABBCGogACgCCCgCGBEAACEBIAcgACAHKAIMIAIgAyAEIAUgARAjIAEQIyABEB9qEG42AgwMBQsgBUEUaiAHQQxqIAIgBCAIEPgCDAQLIAdBDGogAiAEIAhBBBBoIQAgBC0AAEEEcUUEQCAFIABB7A5rNgIUCwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgwCQCAEAn9BBiAHQQxqIgEgAEEMaiICECwNABpBBCAIIAEQOBCVAUElRw0AGiABED8gAhAsRQ0BQQILIAQoAgByNgIACyAAQRBqJAALIAcoAgwLIAdBEGokAAtIAQJ/IwBBEGsiBiQAIAYgATYCDCAGQQhqIgcgAxAnIAcQSSEBIAcQJSAFQRRqIAZBDGogAiAEIAEQ+AIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRBqIAZBDGogAiAEIAEQ+QIgBigCDCAGQRBqJAALSgECfyMAQRBrIgYkACAGIAE2AgwgBkEIaiIHIAMQJyAHEEkhASAHECUgACAFQRhqIAZBDGogAiAEIAEQ+gIgBigCDCAGQRBqJAALLQAgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIUEQAAIgAQIyAAECMgABAfahBuCzsBAX8jAEEQayIGJAAgBkKlkOmp0snOktMANwMIIAAgASACIAMgBCAFIAZBCGogBkEQaiIBEG4gASQAC4MBAQR/IwBBwAFrIgAkACAAIAQ2ArwBIABBoAFqIgUgBSAFQRQQLkHXDSAAQbwBahDKASIHaiIEIAIQaSEGIAAgAhAnIAAQSCAAECUgBSAEIAAQbyABIAAgACAHQQJ0aiIBIAAgBiAFa0ECdGogBCAGRhsgASACIAMQhQEgAEHAAWokAAvRAwEHfwJ/IwBB0AJrIgYkACAGIAU3A8gCIAYgBDcDwAIgBkIlNwO4AiAGQbgCaiIHQQFyQd8VIAIoAgQQyQEhCCAGIAZBkAJqIgk2AowCEC4hAAJ/IAgEQCAGIAIoAgg2AiAgCSAAIAcgBkEgaiAGQcACahCDAwwBCyAGQZACaiAAIAZBuAJqIAZBwAJqEIIDCyEAIAZB4wA2AiAgBkGEAmpBACAGQSBqIgoQNiEJIAZBkAJqIQcCQCAAQR5OBEAQLiEAAn8gCARAIAYgAigCCDYCICAGQYwCaiAAIAZBuAJqIAogBkHAAmoQgQMMAQsgBkGMAmogACAGQbgCaiAGQcACahDIAQsiAEF/Rg0BIAkgBigCjAIQPCAGKAKMAiEHCyAHIAAgB2oiCyACEGkhDCAGQeMANgIgIAZBGGpBACAGQSBqIgcQNiEIAkAgBigCjAIiCiAGQZACakYEQCAHIQAMAQsgAEEDdBA0IgBFDQEgCCAAEDwgBigCjAIhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEP4CIAcQJSABIAAgBigCFCAGKAIQIAIgAxCFASAIEDUgCRA1IAZB0AJqJAAMAQsQPQALC8kDAQd/An8jAEHAAmsiBSQAIAUgBDkDuAIgBUIlNwOwAiAFQbACaiIGQQFyQcYfIAIoAgQQyQEhByAFIAVBkAJqIgg2AowCEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQbgCahCIAwwBCyAFQZACaiAAIAVBsAJqIAVBuAJqEIcDCyEAIAVB4wA2AiAgBUGEAmpBACAFQSBqIgkQNiEIIAVBkAJqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQYwCaiAAIAVBsAJqIAkgBUG4AmoQhgMMAQsgBUGMAmogACAFQbACaiAFQbgCahCFAwsiAEF/Rg0BIAggBSgCjAIQPCAFKAKMAiEGCyAGIAAgBmoiCiACEGkhCyAFQeMANgIgIAVBGGpBACAFQSBqIgYQNiEHAkAgBSgCjAIiCSAFQZACakYEQCAGIQAMAQsgAEEDdBA0IgBFDQEgByAAEDwgBSgCjAIhCQsgBUEMaiIGIAIQJyAJIAsgCiAAIAVBFGogBUEQaiAGEP4CIAYQJSABIAAgBSgCFCAFKAIQIAIgAxCFASAHEDUgCBA1IAVBwAJqJAAMAQsQPQALCxEAIAAgASACIAMgBEEAEKECCxEAIAAgASACIAMgBEEAEKICCxEAIAAgASACIAMgBEEBEKECCxEAIAAgASACIAMgBEEBEKICC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmQEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdTYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAEDkaBSAFQRxqIAVBDGoiACgCACgCABC7AyAAEPYBDAELCwsgBUEgaiQAIAILBQBB7CALewEEfyMAQdAAayIAJAAgACAENgJMIABBMGoiBSAFIAVBFBAuQdcNIABBzABqEMoBIgdqIgQgAhBpIQYgACACECcgABBJIAAQJSAFIAQgABB5IAEgACAAIAdqIgEgACAGIAVraiAEIAZGGyABIAIgAxCAASAAQdAAaiQAC8wDAQd/An8jAEGwAWsiBiQAIAYgBTcDqAEgBiAENwOgASAGQiU3A5gBIAZBmAFqIgdBAXJB3xUgAigCBBDJASEIIAYgBkHwAGoiCTYCbBAuIQACfyAIBEAgBiACKAIINgIgIAkgACAHIAZBIGogBkGgAWoQgwMMAQsgBkHwAGogACAGQZgBaiAGQaABahCCAwshACAGQeMANgIgIAZB5ABqQQAgBkEgaiIKEDYhCSAGQfAAaiEHAkAgAEEeTgRAEC4hAAJ/IAgEQCAGIAIoAgg2AiAgBkHsAGogACAGQZgBaiAKIAZBoAFqEIEDDAELIAZB7ABqIAAgBkGYAWogBkGgAWoQyAELIgBBf0YNASAJIAYoAmwQPCAGKAJsIQcLIAcgACAHaiILIAIQaSEMIAZB4wA2AiAgBkEYakEAIAZBIGoiBxA2IQgCQCAGKAJsIgogBkHwAGpGBEAgByEADAELIABBAXQQNCIARQ0BIAggABA8IAYoAmwhCgsgBkEMaiIHIAIQJyAKIAwgCyAAIAZBFGogBkEQaiAHEIQDIAcQJSABIAAgBigCFCAGKAIQIAIgAxCAASAIEDUgCRA1IAZBsAFqJAAMAQsQPQALCwkAIAEgABEAAAvEAwEHfwJ/IwBBoAFrIgUkACAFIAQ5A5gBIAVCJTcDkAEgBUGQAWoiBkEBckHGHyACKAIEEMkBIQcgBSAFQfAAaiIINgJsEC4hAAJ/IAcEQCAFIAIoAgg2AiAgCCAAIAYgBUEgaiAFQZgBahCIAwwBCyAFQfAAaiAAIAVBkAFqIAVBmAFqEIcDCyEAIAVB4wA2AiAgBUHkAGpBACAFQSBqIgkQNiEIIAVB8ABqIQYCQCAAQR5OBEAQLiEAAn8gBwRAIAUgAigCCDYCICAFQewAaiAAIAVBkAFqIAkgBUGYAWoQhgMMAQsgBUHsAGogACAFQZABaiAFQZgBahCFAwsiAEF/Rg0BIAggBSgCbBA8IAUoAmwhBgsgBiAAIAZqIgogAhBpIQsgBUHjADYCICAFQRhqQQAgBUEgaiIGEDYhBwJAIAUoAmwiCSAFQfAAakYEQCAGIQAMAQsgAEEBdBA0IgBFDQEgByAAEDwgBSgCbCEJCyAFQQxqIgYgAhAnIAkgCyAKIAAgBUEUaiAFQRBqIAYQhAMgBhAlIAEgACAFKAIUIAUoAhAgAiADEIABIAcQNSAIEDUgBUGgAWokAAwBCxA9AAsLEQAgACABIAIgAyAEQQAQowILEQAgACABIAIgAyAEQQAQpAILEQAgACABIAIgAyAEQQEQowILoQEBAn8jAEHgAGsiBSQAIAVBDGoiBCABIAIgAygCACAAEQgAQdQAEFMiACAEKQIANwIAIAAgBC0ACDoACCAAQQxqIARBDGoQgQEaIABBGGogBEEYahCBARogAEEkaiAEQSRqEIEBGiAAQTBqIARBMGoQgQEaIABBPGogBEE8ahCBARogAEHIAGogBEHIAGoQgQEaIAQQxwMgBUHgAGokACAACxEAIAAgASACIAMgBEEBEKQCC8kBAQF/IwBBIGsiBSQAIAUgATYCHAJAIAIoAgRBAXFFBEAgACABIAIgAyAEIAAoAgAoAhgRBwAhAgwBCyAFQRBqIgAgAhAnIAAQmwEhASAAECUCQCAEBEAgACABEHwMAQsgBUEQaiABEHsLIAUgBUEQahBONgIMA0AgBSAFQRBqIgAQdzYCCCAFQQxqIAVBCGoQdgRAIAUoAhwhAiAAECAaBSAFQRxqIAVBDGoiACgCACwAABC/AyAAEPgBDAELCwsgBUEgaiQAIAIL5gIBAX8jAEHAAmsiACQAIAAgAjYCuAIgACABNgK8AiAAQcQBahAkIQYgAEEQaiICIAMQJyACEEhB0J8BQeqfASAAQdABahBvIAIQJSAAQbgBahAkIgMgAxAoECEgACADQQAQIiIBNgK0ASAAIAI2AgwgAEEANgIIA0ACQCAAQbwCaiAAQbgCahArDQAgACgCtAEgAxAfIAFqRgRAIAMQHyECIAMgAxAfQQF0ECEgAyADECgQISAAIAIgA0EAECIiAWo2ArQBCyAAQbwCaiICEDdBECABIABBtAFqIABBCGpBACAGIABBEGogAEEMaiAAQdABahCYAQ0AIAIQPhoMAQsLIAMgACgCtAEgAWsQISADECMQLiAAIAU2AgQgAEEEahCNA0EBRwRAIARBBDYCAAsgAEG8AmogAEG4AmoQKwRAIAQgBCgCAEECcjYCAAsgACgCvAIgAxAgGiAGECAaIABBwAJqJAAL4QQCA38BfgJ/IwBB8AJrIgAkACAAIAI2AugCIAAgATYC7AIgAEHcAWogAyAAQfABaiAAQewBaiAAQegBahD7ASAAQdABahAkIgEgARAoECEgACABQQAQIiICNgLMASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWQQAhAwNAAkACQAJAIABB7AJqIABB6AJqECsNACAAKALMASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCzAELIABB7AJqEDcgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQ+gENACADDQFBACEDIAAoAswBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQdwBahAfRQ0AIAAtABdBAXFFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEEI4DIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEEMgAEHsAmogAEHoAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC7AIgARAgGiAAQdwBahAgGiAAQfACaiQADAMLQQEhAwsgAEHsAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCXAzYCACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBIIQEgBhAlIAYgAxAnIAYQmQEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzQEgBkY6AAAgBigCHCEBA0AgA0EMaxA5IgMgBkcNAAsLIAZBIGokACABC+YCAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAEHEAWoQJCEGIABBEGoiAiADECcgAhBJQdCfAUHqnwEgAEHQAWoQeSACECUgAEG4AWoQJCIDIAMQKBAhIAAgA0EAECIiATYCtAEgACACNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAMQHyABakYEQCADEB8hAiADIAMQH0EBdBAhIAMgAxAoECEgACACIANBABAiIgFqNgK0AQsgAEH8AWoiAhA4QRAgASAAQbQBaiAAQQhqQQAgBiAAQRBqIABBDGogAEHQAWoQmgENACACED8aDAELCyADIAAoArQBIAFrECEgAxAjEC4gACAFNgIEIABBBGoQjQNBAUcEQCAEQQQ2AgALIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAMQIBogBhAgGiAAQYACaiQAC+EEAgN/AX4CfyMAQZACayIAJAAgACACNgKIAiAAIAE2AowCIABB0AFqIAMgAEHgAWogAEHfAWogAEHeAWoQ/wEgAEHEAWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCwAEgACAAQSBqNgIcIABBADYCGCAAQQE6ABcgAEHFADoAFkEAIQMDQAJAAkACQCAAQYwCaiAAQYgCahAsDQAgACgCwAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2AsABCyAAQYwCahA4IABBF2ogAEEWaiACIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEP4BDQAgAw0BQQAhAyAAKALAASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHQAWoQH0UNACAALQAXQQFxRQ0AIAAoAhwiAyAAQSBqa0GfAUoNACAAIANBBGo2AhwgAyAAKAIYNgIACyAAIAIgACgCwAEgBBCOAyAAKQMAIQkgBSAAKQMINwMIIAUgCTcDACAAQdABaiAAQSBqIAAoAhwgBBBDIABBjAJqIABBiAJqECwEQCAEIAQoAgBBAnI2AgALIAAoAowCIAEQIBogAEHQAWoQIBogAEGQAmokAAwDC0EBIQMLIABBjAJqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCPAzkDACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLygQBA38CfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBwAFqIAMgAEHQAWogAEHPAWogAEHOAWoQ/wEgAEG0AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCsAEgACAAQRBqNgIMIABBADYCCCAAQQE6AAcgAEHFADoABkEAIQMDQAJAAkACQCAAQfwBaiAAQfgBahAsDQAgACgCsAEgARAfIAJqRgRAIAEQHyEGIAEgARAfQQF0ECEgASABECgQISAAIAYgAUEAECIiAmo2ArABCyAAQfwBahA4IABBB2ogAEEGaiACIABBsAFqIAAsAM8BIAAsAM4BIABBwAFqIABBEGogAEEMaiAAQQhqIABB0AFqEP4BDQAgAw0BQQAhAyAAKAKwASACayIHQQBMDQICQAJAIAItAAAiBkErayIIDgMBAAEACyAGQS5GDQJBASEDIAZBMGtB/wFxQQpJDQMMAQsgB0EBRg0CAkAgCA4DAAMAAwsgAi0AASIGQS5GDQFBASEDIAZBMGtB/wFxQQlNDQILAkAgAEHAAWoQH0UNACAALQAHQQFxRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCsAEgBBCRAzgCACAAQcABaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHAAWoQIBogAEGAAmokAAwDC0EBIQMLIABB/AFqED8aDAALAAsLiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJIDNwMAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQACwcAIAAoAgALiwMBAX8jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASADEGohBiAAQcQBaiADIABB9wFqEK8BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABB/AFqIABB+AFqECwNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABB/AFqIgMQOCAGIAIgAEG0AWogAEEIaiAALAD3ASAAQcQBaiAAQRBqIABBDGpB0J8BEJoBDQAgAxA/GgwBCwsCQCAAQcQBahAfRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEJUDOwEAIABBxAFqIABBEGogACgCDCAEEEMgAEH8AWogAEH4AWoQLARAIAQgBCgCAEECcjYCAAsgACgC/AEgARAgGiAAQcQBahAgGiAAQYACaiQAC4sDAQF/IwBBgAJrIgAkACAAIAI2AvgBIAAgATYC/AEgAxBqIQYgAEHEAWogAyAAQfcBahCvASAAQbgBahAkIgEgARAoECEgACABQQAQIiICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQfwBaiAAQfgBahAsDQAgACgCtAEgARAfIAJqRgRAIAEQHyEDIAEgARAfQQF0ECEgASABECgQISAAIAMgAUEAECIiAmo2ArQBCyAAQfwBaiIDEDggBiACIABBtAFqIABBCGogACwA9wEgAEHEAWogAEEQaiAAQQxqQdCfARCaAQ0AIAMQPxoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCWAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABB/AFqIABB+AFqECwEQCAEIAQoAgBBAnI2AgALIAAoAvwBIAEQIBogAEHEAWoQIBogAEGAAmokAAuLAwEBfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIAMQaiEGIABBxAFqIAMgAEH3AWoQrwEgAEG4AWoQJCIBIAEQKBAhIAAgAUEAECIiAjYCtAEgACAAQRBqNgIMIABBADYCCANAAkAgAEH8AWogAEH4AWoQLA0AIAAoArQBIAEQHyACakYEQCABEB8hAyABIAEQH0EBdBAhIAEgARAoECEgACADIAFBABAiIgJqNgK0AQsgAEH8AWoiAxA4IAYgAiAAQbQBaiAAQQhqIAAsAPcBIABBxAFqIABBEGogAEEMakHQnwEQmgENACADED8aDAELCwJAIABBxAFqEB9FDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEIAYQlwM2AgAgAEHEAWogAEEQaiAAKAIMIAQQQyAAQfwBaiAAQfgBahAsBEAgBCAEKAIAQQJyNgIACyAAKAL8ASABECAaIABBxAFqECAaIABBgAJqJAALmIwBAy5/BX0CfCMAQRBrIhkkACAZIAM2AgwgGUEANgIIIBlCADcCACAZIAEgASACaiICIAIgAWsQwAMjAEHgAGsiIiQAICJBCGohDSAZKAIEIBkoAgAiAWshAiMAQcABayITJAAgE0EANgKgASATQgA3A5gBIBNBADYCsAEgE0IANwKoASATQbQBaiIaQQA2AgggGkIANwIAIBpBgMAAELcDIBpBgMAAEJgDIBNBDGpBAEEw/AsAIBMgAjYCCCATIAE2AgQCQAJ/IBNBBGohAgJ/QXpB5RstAABBMUcNABpBfiACRQ0BGiACQQA2AhggAigCICIBRQRAIAJBADYCKCACQS82AiBBLyEBCyACKAIkRQRAIAJBMDYCJAtBfCACKAIoQQFB0DcgAREDACIDRQ0BGiACIAM2AhwgA0EANgI4IAMgAjYCACADQbT+ADYCBEF+IQQCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiDARAIAEoAihBD0cNAQsgAUEPNgIoIAFBBjYCDAwBCyACKAIoIAwgBREBACABQQA2AjggAigCICABQQ82AiggAUEGNgIMRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEEIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQgA3AjwgAUEANgIkIAFBgIACNgIYIAFCgICAgHA3AhAgAUK0/gA3AgQgAUKBgICAcDcCxDcgASABQbQKaiIFNgJwIAEgBTYCVCABIAU2AlALQQAgBEUNABogAigCKCADIAIoAiQRAQAgAkEANgIcIAQLC0UEQCATQQA2AqwBAkADQCATIBooAgAiATYCECATIBooAgQgAWs2AhRBACEMIwBBEGsiFyQAQX4hHAJAIBNBBGoiCkUNACAKKAIgRQ0AIAooAiRFDQAgCigCHCIGRQ0AIAYoAgAgCkcNACAGKAIEIgVBtP4Aa0EfSw0AIAooAgwiEEUNACAKKAIAIgFFBEAgCigCBA0BCyAFQb/+AEYEQCAGQcD+ADYCBEHA/gAhBQsgBkHcAGohKiAGQfQFaiEgIAZB2ABqISMgBkHwAGohISAGQbQKaiEfIAZB9ABqIRYgBigCQCEDIAYoAjwhByAKKAIEIiQhBCAKKAIQIg8hFQJAAkACQAJAAkADQEF9IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAVBtP4Aaw4fBwYKDRA5Ojs8BRUWFhcYGQQcAiUmASgAKh0eA0BCQ0QLIAYoAkwhCAwoCyAGKAJMIQgMJQsgBigCbCEIDCELIAYoAgwhBQw5CyADQQ5PDRYgBEUNPCADQQhqIQIgAUEBaiEFIARBAWshCCABLQAAIAN0IAdqIQcgA0EFTQ0VIAUhASAIIQQgAiEDDBYLIANBIE8NDiAERQ07IAFBAWohAiAEQQFrIQUgAS0AACADdCAHaiEHIANBF00NDSACIQEgBSEEDA4LIANBEE8NAiAERQ06IANBCGohAiABQQFqIQUgBEEBayEIIAEtAAAgA3QgB2ohByADQQdNDQEgBSEBIAghBCACIQMMAgsgBigCDCIJRQ0XAkAgA0EQTw0AIARFDTogA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAFIQEgCCEEIAIhAwwBCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgw8CyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAlBAnFFIAdBn5YCR3JFBEAgBigCKEUEQCAGQQ82AigLQQAhByAGQQBBAEEAEFEiAjYCHCAXQZ+WAjsADCACIBdBDGpBAhBRIQIgBkG1/gA2AgQgBiACNgIcQQAhAyAGKAIEIQUMNwsgBigCJCICBEAgAkF/NgIwCyAHQQh0QYD+A3EgB0EIdmpBH3BFIAlBAXFxRQRAIApBxw42AhggBkHR/gA2AgQgBigCBCEFDDcLIAdBD3FBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw3CyAHQQR2IgJBD3EiCEEIaiEFIAhBB00gBigCKCIJBH8gCQUgBiAFNgIoIAULIAVPcUUEQCADQQRrIQMgCkHREDYCGCAGQdH+ADYCBCACIQcgBigCBCEFDDcLQQAhAyAGQQA2AhQgBkGAAiAIdDYCGCAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBvf4AQb/+ACAHQYDAAHEbNgIEQQAhByAGKAIEIQUMNgsgCEUEQCAFIQFBACEEIAIhAyAMIQIMOgsgA0EQciEDIARBAmshBCABLQABIAJ0IAdqIQcgAUECaiEBCyAGIAc2AhQgB0H/AXFBCEcEQCAKQZcSNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAHQYDAA3EEQCAKQesJNgIYIAZB0f4ANgIEIAYoAgQhBQw1CyAGKAIkIgIEQCACIAdBCHZBAXE2AgALAkAgB0GABHFFDQAgBi0ADEEEcUUNACAXQQg6AAwgFyAHQQh2OgANIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG2/gA2AgRBACEDQQAhBwwBCyADQR9LDQELIARFDTUgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EXSwRAIAIhASAFIQQMAQsgA0EIaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDDcLIAFBAmohAiAEQQJrIQUgAS0AASAIdCAHaiEHIANBD0sEQCACIQEgBSEEDAELIANBEGohCCAFRQRAIAIhAUEAIQQgCCEDIAwhAgw3CyABQQNqIQIgBEEDayEFIAEtAAIgCHQgB2ohByADQQdLBEAgAiEBIAUhBAwBCyADQRhqIQMgBUUEQCACIQEMNgsgBEEEayEEIAEtAAMgA3QgB2ohByABQQRqIQELIAYoAiQiAgRAIAIgBzYCBAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHNgAMIAYgBigCHCAXQQxqQQQQUTYCHAsgBkG3/gA2AgRBACEDQQAhBwwBCyADQQ9LDQELIARFDTIgAUEBaiECIARBAWshBSABLQAAIAN0IAdqIQcgA0EHSwRAIAIhASAFIQQMAQsgA0EIaiEDIAVFBEAgAiEBDDMLIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGKAIkIgIEQCACIAdBCHY2AgwgAiAHQf8BcTYCCAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgFyAHOwAMIAYgBigCHCAXQQxqQQIQUTYCHAsgBkG4/gA2AgRBACEFQQAhA0EAIQcgBigCFCICQYAIcQ0BDCcLIAYoAhQiAkGACHFFBEAgAyEFDCcLIAchBSADQQ9LDQELIARFBEBBACEEIAUhByAMIQIMMQsgAUEBaiEIIARBAWshCSABLQAAIAN0IAVqIQcgA0EHSwRAIAghASAJIQQMAQsgA0EIaiEDIAlFBEAgCCEBDDALIARBAmshBCABLQABIAN0IAdqIQcgAUECaiEBCyAGIAc2AkQgBigCJCIDBEAgAyAHNgIUC0EAIQMCQCACQYAEcUUNACAGLQAMQQRxRQ0AIBcgBzsADCAGIAYoAhwgF0EMakECEFE2AhwLQQAhBwwlCyADQQhqIQggBUUEQCACIQFBACEEIAghAyAMIQIMLwsgAUECaiECIARBAmshBSABLQABIAh0IAdqIQcgA0EPSwRAIAIhASAFIQQMAQsgA0EQaiEIIAVFBEAgAiEBQQAhBCAIIQMgDCECDC8LIAFBA2ohAiAEQQNrIQUgAS0AAiAIdCAHaiEHIANBB0sEQCACIQEgBSEEDAELIANBGGohAyAFRQRAIAIhAQwuCyAEQQRrIQQgAS0AAyADdCAHaiEHIAFBBGohAQsgBiAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciICNgIcIAogAjYCMCAGQb7+ADYCBEEAIQdBACEDCyAGKAIQRQRAIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8QQIhHAwvCyAGQQBBAEEAELMBIgI2AhwgCiACNgIwIAZBv/4ANgIECwJ/AkAgBigCCEUEQCADIANBAksNAhogBA0BDC0LIAZBzv4ANgIEIAcgA0EHcXYhByADQXhxIQMgBigCBCEFDCkLIARBAWshBCABLQAAIAN0IAdqIQcgAUEBaiEBIANBCHILIAYgB0EBcTYCCEHB/gAhBQJAAkACQAJAAkAgB0EBdkEDcUEBaw4DAAECAwsgBkGA3AA2AlAgBkKJgICA0AA3AlggBkGA7AA2AlQgBkHH/gA2AgQMAwtBxP4AIQUMAQsgCkH0EDYCGEHR/gAhBQsgBiAFNgIEC0EDayEDIAdBA3YhByAGKAIEIQUMJwsgByADQQdxdiEHAn8gA0F4cSIFIANBH0sNABogBEUEQEEAIQQgBSEDIAwhAgwsCyAFQQhqIQggAUEBaiECIARBAWshCSABLQAAIAV0IAdqIQcgA0EXSwRAIAIhASAJIQQgCAwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwsCyAFQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAIhASALIQQgCQwBCyALRQRAIAIhAUEAIQQgCSEDIAwhAgwsCyAFQRhqIQUgAUEDaiECIARBA2shCCABLQACIAl0IAdqIQcgA0EHSwRAIAIhASAIIQQgBQwBCyAIRQRAIAIhAUEAIQQgBSEDIAwhAgwsCyAEQQRrIQQgAS0AAyAFdCAHaiEHIAFBBGohAUEgCyEDIAdB//8DcSICIAdBf3NBEHZHBEAgCkGdCzYCGCAGQdH+ADYCBCAGKAIEIQUMJwsgBkHC/gA2AgQgBiACNgJEQQAhB0EAIQMLIAZBw/4ANgIECyAGKAJEIgIEQCACIAQgAiAESRsiAiAPIAIgD0kbIgJFBEAgDCECDCoLIAIEQCAQIAEgAvwKAAALIAYgBigCRCACazYCRCACIBBqIRAgDyACayEPIAEgAmohASAEIAJrIQQgBigCBCEFDCULIAZBv/4ANgIEIAYoAgQhBQwkCyAIRQRAIAUhAUEAIQQgAiEDIAwhAgwoCyADQRByIQMgBEECayEEIAEtAAEgAnQgB2ohByABQQJqIQELIAYgB0EfcSICQYECajYCZCAGIAdBBXZBH3EiBUEBajYCaCAGIAdBCnZBD3FBBGoiCTYCYCADQQ5rIQMgB0EOdiEHIAVBHkkgAkEdTXFFBEAgCkH5CjYCGCAGQdH+ADYCBCAGKAIEIQUMIwsgBkHF/gA2AgRBACEFIAZBADYCbAwGCyAGKAJsIgUgBigCYCIJSQ0FDAYLIA9FDQ0gECAGKAJEOgAAIAZByP4ANgIEIA9BAWshDyAQQQFqIRAgBigCBCEFDCALIAYoAgwiBUUEQEEAIQUMAwsCQCADQR9LBEAgASEIDAELIARFDSMgA0EIaiECIAFBAWohCCAEQQFrIQkgAS0AACADdCAHaiEHIANBF0sEQCAJIQQgAiEDDAELIAlFBEAgCCEBQQAhBCACIQMgDCECDCULIANBEGohCSABQQJqIQggBEECayELIAEtAAEgAnQgB2ohByADQQ9LBEAgCyEEIAkhAwwBCyALRQRAIAghAUEAIQQgCSEDIAwhAgwlCyADQRhqIQIgAUEDaiEIIARBA2shCyABLQACIAl0IAdqIQcgA0EHSwRAIAshBCACIQMMAQsgC0UEQCAIIQFBACEEIAIhAyAMIQIMJQsgA0EgciEDIAFBBGohCCAEQQRrIQQgAS0AAyACdCAHaiEHCyAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBUEEcSICRSAPIBVGcgR/IAIFIBAgAWshAiAGKAIcIQUgBgJ/IAYoAhQEQCAFIAIgARBRDAELIAUgAiABELMBCyIBNgIcIAogATYCMCAGKAIMIgVBBHELRQ0BIAYoAhwgByAHQRh0IAdBgP4DcUEIdHIgB0EIdkGA/gNxIAdBGHZyciAGKAIUG0YNASAKQfUONgIYIAZB0f4ANgIEIAghASAPIRUgBigCBCEFDB8LIAZBwP4ANgIEDBULIAghAUEAIQdBACEDIA8hFQsgBkHP/gA2AgQMGwsDQCADQQJNBEAgBEUNICAEQQFrIQQgAS0AACADdCAHaiEHIANBCHIhAyABQQFqIQELIAYgBUEBaiICNgJsIBYgBUEBdC8B0FtBAXRqIAdBB3E7AQAgA0EDayEDIAdBA3YhByACIgUgCUcNAAsgCSEFCyAFQRJNBEBBACEIIAUiAkEDcSIMQQNHBEADQCAWIAJBAXQvAdBbQQF0akEAOwEAIAJBAWohAiAMIAhBAWoiCHNBA0cNAAsLIAVBD00EQANAIBYgAkEBdCIFLwHQW0EBdGpBADsBACAWIAVB0tsAai8BAEEBdGpBADsBACAWIAVB1NsAai8BAEEBdGpBADsBACAWIAVB1tsAai8BAEEBdGpBADsBACACQQRqIgJBE0cNAAsLIAZBEzYCbAsgBkEHNgJYIAYgHzYCUCAGIB82AnBBACEIQQAgFkETICEgIyAgEOMBIgwEQCAKQdIJNgIYIAZB0f4ANgIEIAYoAgQhBQwbCyAGQcb+ADYCBCAGQQA2AmxBACEMCyAGKAJkIh0gBigCaGoiGCAISwRAQX8gBigCWHRBf3MhGyAGKAJQIRQDQCADIQ4gBCEFIAEhAgJAAkACQAJAAkACQCAUIAcgG3EiEkECdGotAAEiCyADTQRAIAMhCQwBCwNAIAVFDQIgAi0AACAOdCELIAJBAWohAiAFQQFrIQUgDkEIaiIJIQ4gCSAUIAcgC2oiByAbcSISQQJ0ai0AASILSQ0ACwsgFCASQQJ0ai8BAiIDQQ9NBEAgBiAIQQFqIgE2AmwgFiAIQQF0aiADOwEAIAkgC2shAyAHIAt2IQcgASEIDAULAn8CfwJAAkACQCADQRBrDgIAAQILIAtBAmoiASAJSwRAA0AgBUUNHiAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2shAyAHIAt2IQkgCEUEQCAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgCSEHIAYoAgQhBQwlCyADQQJrIQMgCUECdiEHIAlBA3FBA2ohCyAIQQF0IBZqQQJrLwEADAMLIAtBA2oiASAJSwRAA0AgBUUNHSAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBA2shAyAHIAt2IgFBA3YhByABQQdxQQNqDAELIAtBB2oiASAJSwRAA0AgBUUNHCAFQQFrIQUgAi0AACAJdCAHaiEHIAJBAWohAiAJQQhqIgkgAUkNAAsLIAkgC2tBB2shAyAHIAt2IgFBB3YhByABQf8AcUELagshC0EACyEEIAggC2ogGEsNAkEAIQkgC0EDcSIORQ0BIAshAQNAIBYgCEEBdGogBDsBACAIQQFqIQggAUEBayEBIAlBAWoiCSAORw0ACwwDCyABIARqIQEgAyAEQQN0aiEDDCILIAshAQwBCyAKQagKNgIYIAZB0f4ANgIEIAIhASAFIQQgBigCBCEFDB0LIAtBBE8EQANAIBYgCEEBdGoiCSAEOwEAIAkgBDsBAiAJIAQ7AQQgCSAEOwEGIAhBBGohCCABQQRrIgENAAsLIAYgCDYCbAsgAiEBIAUhBCAIIBhJDQALCyAGLwH0BEUEQCAKQaIONgIYIAZB0f4ANgIEIAYoAgQhBQwaCyAGQQk2AlggBiAfNgJQIAYgHzYCcEEBIBYgHSAhICMgIBDjASIMBEAgCkG2CTYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkEGNgJcIAYgBigCcDYCVEECIBYgBigCZEEBdGogBigCaCAhICogIBDjASIMBEAgCkGECjYCGCAGQdH+ADYCBCAGKAIEIQUMGgsgBkHH/gA2AgRBACEMCyAGQcj+ADYCBAsgBEEGSSAPQYICSXJFBEAgCiAPNgIQIAogEDYCDCAKIAQ2AgQgCiABNgIAIAYgAzYCQCAGIAc2AjwgCigCHCIQKAI0IgtBB3EhJSALIBVqISsgCyAQKAIsIixqIS0gCigCDCIBIAooAhAiAmoiHUGBAmshJiABIAIgFWtqIS4gCigCACIIIAooAgRqQQVrISdBfyAQKAJcdEF/cyEvQX8gECgCWHRBf3MhMCAQKAJUISggECgCUCEpIBAoAkAhBSAQKAI8IQ4gECgCOCEHIBAoAjAhMQNAIAVBDk0EfyAILQAAIAV0IA5qIAgtAAEgBUEIanRqIQ4gCEECaiEIIAVBEHIFIAULICkgDiAwcUECdGoiAi0AASIDayEFIA4gA3YhDgJAAkACQAJAAkAgEAJ/IAoCfwJAA0AgAi0AACIDRQRAIAEgAi0AAjoAACABQQFqIQEMCAsgA0EQcQRAIAIvAQIhDwJ/IANBD3EiAkUEQCAIIQMgDgwBCwJ/IAIgBU0EQCAFIQQgCAwBCyAFQQhqIQQgCC0AACAFdCAOaiEOIAhBAWoLIQMgBCACayEFIA5BfyACdEF/c3EgD2ohDyAOIAJ2CyEEIAVBDk0EQCADLQAAIAV0IARqIAMtAAEgBUEIanRqIQQgBUEQciEFIANBAmohAwsgBSAoIAQgL3FBAnRqIgItAAEiCGshBSAEIAh2IQ4gAi0AACIEQRBxDQIDQCAEQcAAcUUEQCAFICggAi8BAkECdGogDkF/IAR0QX9zcUECdGoiAi0AASIEayEFIA4gBHYhDiACLQAAIgRBEHFFDQEMBAsLIAMhCEHwEQwDCyADQcAAcUUEQCAFICkgAi8BAkECdGogDkF/IAN0QX9zcUECdGoiAi0AASIDayEFIA4gA3YhDgwBCwtBv/4AIANBIHENAhpB1BEMAQsgAi8BAiEUAn8gBEEPcSICIAVNBEAgBSEEIAMMAQsgAy0AACAFdCAOaiEOIANBAWogAiAFQQhqIgRNDQAaIAMtAAEgBHQgDmohDiAFQRBqIQQgA0ECagshCCAOQX8gAnRBf3NxIRggBCACayEFIA4gAnYhDiAUIBhqIhsgASAuayICTQ0DIBsgAmsiCSAxTQ0CIBAoAsQ3RQ0CQZQPCzYCGEHR/gALNgIEDAQLAkACQCALRQRAIAcgLCAJa2ohBCAJIA9PBEAgASECDAMLQQAhEiABIQIgCSIDQQdxIh4EQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCASQQFqIhIgHkcNAAsLIBUgGCAdaiAUamsgAWpBeEsNAQNAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsMAQsgCSALSwRAIAcgLSAJa2ohBCAJIAtrIgkgD08EQCABIQIMAwtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgKyAYIB1qIBRqayABakF4TQRAA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgCyAPIAlrIg9PBEAgByEEDAMLQQAhASALIQMgByEEICUEQANAIAIgBC0AADoAACADQQFrIQMgAkEBaiECIARBAWohBCABQQFqIgEgJUcNAAsLIAtBCE8EQANAIAIgBC0AADoAACACIAQtAAE6AAEgAiAELQACOgACIAIgBC0AAzoAAyACIAQtAAQ6AAQgAiAELQAFOgAFIAIgBC0ABjoABiACIAQtAAc6AAcgAkEIaiECIARBCGohBCADQQhrIgMNAAsLIAIgG2shBCAPIAtrIQ8MAgsgByALIAlraiEEIAkgD08EQCABIQIMAgtBACESIAEhAiAJIgNBB3EiHgRAA0AgAiAELQAAOgAAIANBAWshAyACQQFqIQIgBEEBaiEEIBJBAWoiEiAeRw0ACwsgFSAYIB1qIBRqayABakF4Sw0AA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgAiAELQADOgADIAIgBC0ABDoABCACIAQtAAU6AAUgAiAELQAGOgAGIAIgBC0ABzoAByACQQhqIQIgBEEIaiEEIANBCGsiAw0ACwsgAiAbayEEIA8gCWshDwsCQCAPQQNJDQAgD0EDayIBQQNuIgNBA3FBA0cEQCADQQFqQQNxIQlBACEDA0AgAiAELQAAOgAAIAIgBC0AAToAASACIAQtAAI6AAIgD0EDayEPIAJBA2ohAiAEQQNqIQQgA0EBaiIDIAlHDQALCyABQQlJDQADQCACIAQtAAA6AAAgAiAELQABOgABIAIgBC0AAjoAAiACIAQtAAM6AAMgAiAELQAEOgAEIAIgBC0ABToABSACIAQtAAY6AAYgAiAELQAHOgAHIAIgBC0ACDoACCACIAQtAAk6AAkgAiAELQAKOgAKIAIgBC0ACzoACyACQQxqIQIgBEEMaiEEIA9BDGsiD0ECSw0ACwsgD0UEQCACIQEMAwsgAiAELQAAOgAAIA9BAkYNASACQQFqIQEMAgsgASAbayEDA0AgASICIAMiBC0AADoAACACIAMtAAE6AAEgAiADLQACOgACIAJBA2ohASADQQNqIQMgD0EDayIPQQJLDQALIA9FDQEgAiADLQAAOgADIA9BAkcEQCACQQRqIQEMAgsgAiAELQAEOgAEIAJBBWohAQwBCyACIAQtAAE6AAEgAkECaiEBCyAIICdPDQAgASAmSQ0BCwsgCiABNgIMIAogCCAFQQN2ayICNgIAIAogJiABa0GBAmo2AhAgCiAnIAJrQQVqNgIEIBAgBUEHcSIBNgJAIBAgDkF/IAF0QX9zcTYCPCAGKAJAIQMgBigCPCEHIAooAgQhBCAKKAIAIQEgCigCECEPIAooAgwhECAGKAIEQb/+AEcNDyAGQX82Asg3IAYoAgQhBQwYCyAGQQA2Asg3IAMhCCAEIQUgASECAkAgBigCUCIUIAdBfyAGKAJYdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNDSACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyAOIQMgCy8BAiESAkAgCy0AACILQQFrQf8BcUEOSwRAQQAhAyACIQEgBSEEDAELIAUhBCACIQECQCAJIgggAyAUIBJBAnRqIhQgB0F/IAMgC2p0QX9zIhhxIAN2QQJ0aiISLQABIg5qTwRAIAghCwwBCwNAIARFDQ0gAS0AACAIdCEOIAFBAWohASAEQQFrIQQgCEEIaiILIQggAyAUIAcgDmoiByAYcSADdkECdGoiEi0AASIOaiALSw0ACwsgCyADayEJIAcgA3YhByASLQAAIQsgEi8BAiESCyAGIBJB//8DcTYCRCAGIAMgDmo2Asg3IAkgDmshAyAHIA52IQcgC0H/AXEiAkUEQCAGQc3+ADYCBCAGKAIEIQUMGAsgAkEgcQRAIAZBv/4ANgIEIAZBfzYCyDcgBigCBCEFDBgLIAJBwABxBEAgCkHUETYCGCAGQdH+ADYCBCAGKAIEIQUMGAsgBkHJ/gA2AgQgBiACQQ9xIgg2AkwLIAEhCyAEIQkCQCAIRQRAIAYoAkQhAgwBCyADIQUgASECIAMgCEkEQANAIARFDQsgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCRCAHQX8gCHRBf3NxaiICNgJEIAUgCGshAyAHIAh2IQcLIAZByv4ANgIEIAYgAjYCzDcLIAMhCCAEIQUgASECAkAgBigCVCIUIAdBfyAGKAJcdEF/cyIScUECdGoiCy0AASIOIANNBEAgAyEJDAELA0AgBUUNCCACLQAAIAh0IQsgAkEBaiECIAVBAWshBSAIQQhqIgkhCCAJIBQgByALaiIHIBJxQQJ0aiILLQABIg5JDQALCyALLwECIRIgBgJ/IAstAAAiCEEQTwRAIAIhASAFIQQgDiELIAYoAsg3DAELIAUhBCACIQECQCAJIgMgDiAUIBJBAnRqIhQgB0F/IAggDmp0QX9zIhhxIA52QQJ0aiISLQABIgtqTwRAIAMhCAwBCwNAIARFDQggAS0AACADdCELIAFBAWohASAEQQFrIQQgA0EIaiIIIQMgDiAUIAcgC2oiByAYcSAOdkECdGoiEi0AASILaiAISw0ACwsgCCAOayEJIAcgDnYhByASLQAAIQggEi8BAiESIAYoAsg3IA5qCyALajYCyDcgCSALayEDIAcgC3YhByAIQcAAcQRAIApB8BE2AhggBkHR/gA2AgQgBigCBCEFDBYLIAZBy/4ANgIEIAYgCEEPcSIINgJMIAYgEkH//wNxNgJICyABIQsgBCEJIAgEQCADIQUgASECIAMgCEkEQANAIARFDQYgBEEBayEEIAItAAAgBXQgB2ohByACQQFqIgEhAiAFQQhqIgUgCEkNAAsLIAYgBigCyDcgCGo2Asg3IAYgBigCSCAHQX8gCHRBf3NxajYCSCAHIAh2IQcgBSAIayEDCyAGQcz+ADYCBAsgDw0BC0EAIQ8gDCECDBYLAn8gBigCSCICIBUgD2siBUsEQAJAIAIgBWsiAiAGKAIwTQ0AIAYoAsQ3RQ0AIApBlA82AhggBkHR/gA2AgQgBigCBCEFDBQLAn8gBigCNCIFIAJJBEAgBigCOCAGKAIsIAIgBWsiAmtqDAELIAYoAjggBSACa2oLIQUgAiAGKAJEIgggAiAISRsMAQsgECACayEFIAYoAkQiCAshAiAGIAggAiAPIAIgD0kbIglrNgJEIAlBAWshC0EAIQggCUEHcSIORQ0GIAkhAgNAIBAgBS0AADoAACACQQFrIQIgEEEBaiEQIAVBAWohBSAIQQFqIgggDkcNAAsMBwsgCSALaiEBIAMgCUEDdGohAwwTCyACIAVqIQEgCSAFQQN0aiEDDBILIAEgBGohASADIARBA3RqIQMMEQsgCSALaiEBIAMgCUEDdGohAwwQCyACIAVqIQEgCSAFQQN0aiEDDA8LIAEgBGohASADIARBA3RqIQMMDgsgCSECCyALQQdPBEADQCAQIAUtAAA6AAAgECAFLQABOgABIBAgBS0AAjoAAiAQIAUtAAM6AAMgECAFLQAEOgAEIBAgBS0ABToABSAQIAUtAAY6AAYgECAFLQAHOgAHIBBBCGohECAFQQhqIQUgAkEIayICDQALCyAPIAlrIQ8gBigCRA0AIAZByP4ANgIEIAYoAgQhBQwJCyAGKAIEIQUMCAtBACEEIAIhASAJIQMgDCECDAsLIAYoAiQiAgRAIAJBADYCEAsgBSEDCyAGQbn+ADYCBAsCQCAGKAIUIghBgAhxRQ0AIAYoAkQiBSAEIAQgBUsbIgIEQAJAIAYoAiQiCUUNACAJKAIQIg5FDQAgCSgCGCILIAkoAhQgBWsiBU0NACALIAVrIAIgAiAFaiALSxsiCARAIAUgDmogASAI/AoAAAsgBigCFCEICwJAIAhBgARxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgAhBRNgIcCyAGIAYoAkQgAmsiBTYCRCAEIAJrIQQgASACaiEBCyAFRQ0AIAwhAgwJCyAGQbr+ADYCBCAGQQA2AkQLAkAgBi0AFUEIcQRAQQAhBSAERQ0IA0AgASAFai0AACECAkAgBigCJCIIRQ0AIAgoAhwiC0UNACAGKAJEIgkgCCgCIE8NACAGIAlBAWo2AkQgCSALaiACOgAACyACQQAgBCAFQQFqIgVLGw0ACwJAIAYtABVBAnFFDQAgBi0ADEEEcUUNACAGIAYoAhwgASAFEFE2AhwLIAEgBWohASAEIAVrIQQgAkUNASAMIQIMCQsgBigCJCICRQ0AIAJBADYCHAsgBkG7/gA2AgQgBkEANgJECwJAIAYtABVBEHEEQEEAIQUgBEUNBwNAIAEgBWotAAAhAgJAIAYoAiQiCEUNACAIKAIkIgtFDQAgBigCRCIJIAgoAihPDQAgBiAJQQFqNgJEIAkgC2ogAjoAAAsgAkEAIAQgBUEBaiIFSxsNAAsCQCAGLQAVQQJxRQ0AIAYtAAxBBHFFDQAgBiAGKAIcIAEgBRBRNgIcCyABIAVqIQEgBCAFayEEIAJFDQEgDCECDAgLIAYoAiQiAkUNACACQQA2AiQLIAZBvP4ANgIECyAGKAIUIglBgARxBEACQCADQQ9LBEAgASEFDAELIARFDQYgA0EIaiECIAFBAWohBSAEQQFrIQggAS0AACADdCAHaiEHIANBB0sEQCAIIQQgAiEDDAELIAhFBEAgBSEBQQAhBCACIQMgDCECDAgLIANBEHIhAyABQQJqIQUgBEECayEEIAEtAAEgAnQgB2ohBwsCQCAGLQAMQQRxRQ0AIAcgBi8BHEYNACAKQbkPNgIYIAZB0f4ANgIEIAUhASAGKAIEIQUMAwtBACEHQQAhAyAFIQELIAYoAiQiAgRAIAJBATYCMCACIAlBCXZBAXE2AiwLIAZBAEEAQQAQUSICNgIcIAogAjYCMCAGQb/+ADYCBCAGKAIEIQUMAQsgBUUNASAGKAIURQ0BAkAgA0EfSwRAIAEhAgwBCyAERQ0EIANBCGohCCABQQFqIQIgBEEBayEJIAEtAAAgA3QgB2ohByADQRdLBEAgCSEEIAghAwwBCyAJRQRAIAIhAUEAIQQgCCEDIAwhAgwGCyADQRBqIQkgAUECaiECIARBAmshCyABLQABIAh0IAdqIQcgA0EPSwRAIAshBCAJIQMMAQsgC0UEQCACIQFBACEEIAkhAyAMIQIMBgsgA0EYaiEIIAFBA2ohAiAEQQNrIQsgAS0AAiAJdCAHaiEHIANBB0sEQCALIQQgCCEDDAELIAtFBEAgAiEBQQAhBCAIIQMgDCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAEQQBMDQIgASADIAIgAyAFahCeAiAERQ0CIAMgCSAE/AoAAAwCCyABIAMgAiADIAVqEJ4CIAVFDQEgAyAJIAX8CgAADAELIAUgCEEMaiABIAUgASgCAGsgAmoQtAEgAyABKAIAayABEMYBIgIoAggiBGohBQNAIAQgBUcEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAwBCwsgAiAFNgIIIAIoAgQaIAEoAgQgA2siBARAIAIoAgggAyAE/AoAAAsgAiACKAIIIAEoAgQgA2tqNgIIIAEgAzYCBCACKAIEIAEoAgAiBCADa2ohBSADIARrIgMEQCAFIAQgA/wKAAALIAIgBTYCBCABIAEoAgAiAzYCBCABIAIoAgQ2AgAgAiADNgIEIAEoAgQhAyABIAIoAgg2AgQgAiADNgIIIAEoAgghAyABIAIoAgw2AgggAiADNgIMIAIgAigCBDYCACACELoBCyAIQSBqJAAgHEEBRw0ACyAKEJsCIBoQOiATQZgBaiIDIBMoAqgBIgIgEygCrAEgAmsQsQIgARA6IApBADYCXCAKQfD7ADYCQCAKQcj7ADYCACAKQdz7ADYCCCAKQYD8ACgCACIBNgIAIAogAUEMaygCAGpBhPwAKAIANgIAIApBADYCBCAKIAooAgBBDGsoAgBqIgJBADYCFCACIApBDGoiATYCGCACQQA2AgwgAkKCoICA4AA3AgQgAiABRTYCECACQSBqQQBBKPwLACACQRxqENMCIAJBADoAUCACQoCAgIBwNwJIIApBiPwAKAIAIgI2AgggAkEMaygCACAKQQhqakGM/AAoAgA2AgAgCkH8+wAoAgAiAjYCACAKIAJBDGsoAgBqQZD8ACgCADYCACAKQZT8ACgCADYCCCAKQcj7ADYCACAKQdz7ADYCCCAKQfD7ADYCQCABQZj1ADYCACABQQRqENMCIAFCADcCGCABQgA3AhAgAUIANwIIIAFCADcCICABQZD3ADYCACABQRg2AjAgAUIANwIoAkAgAyABQSBqIgJGDQAgAhBHRQRAIAMQR0UEQCACEF4aIAIQXiADEF5JBEAgAxBeGiACEF4aCyACIAMpAgA3AgAgAiADKAIINgIIIAIQXhoMAgsgAxAjIQUgAxAfIQMjAEEQayIEJAAgAhBeIQwCQCADQQpNBEAgAiADEFAgAiAFIAMQTSAEQQA6AA8gAiADaiAEQQ9qEF0MAQsgAkEKIANBCmsgDEEAIAwgAyAFELkBCyAEQRBqJAAMAQsgAxAjIQwgAxAfIQMjAEEQayIEJAAgAhB+IQUgAigCBCEIAkAgAyAFSQRAIAIoAgAhBSACIAM2AgQgBSAMIAMQTSAEQQA6AA8gAyAFaiAEQQ9qEF0MAQsgAiAFQQFrIAMgBWtBAWogCEEAIAggAyAMELkBCyAEQRBqJAALIAFBADYCLCABKAIgIAFBIGoiAyABLAArIgJBAEgiBBshCSABKAIkIAIgBBshCCABKAIwIgRBCHEEQCABIAk2AgwgASAJNgIIIAEgCCAJaiIFNgIQIAEgBTYCLAsCQCAEQRBxRQ0AIAEgCCAJajYCLCADQQogASgCKEH/////B3FBAWsgAkEAThsQISABIAk2AhggASAJNgIUIAEgCSABKAIkIAEsACsiAiACQQBIG2o2AhwgAS0AMEEDcUUNAANAIAhBAEgEQCABIAlB/////wdqIgk2AhggCEH/////B2shCAwBCwsgCEUNACABIAggCWo2AhgLIwBBwAFrIgEkACABQgA3ArgBIAFCzo7NgjU3ArABIAogAUGwAWpBEBCIAQJAAkAgCiAKKAIAQQxrKAIAai0AEEEFcUUEQCABKAKwAUHOjs2CBUYNAQtBshIQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArQBQQRrQXxNBEBBthQgAUG0AWoQlwIgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAEoArgBIgJBga3iBE8EQEG4EyABQbgBahCXAiANQgA3AAUgDUIANwIAIA1BAToADSANQRBqQQBByAD8CwAMAQsgAS0AvAEiA0EETwRAIAEgAzYCAEH0EyABEHIQf0Gg8QAoAgAQYRogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIAMQ0wMhDCABKAK0ASEEIAFBAToAZSABQegAaiIFQQBByAD8CwAgASACNgJYIAEgAS0AvAE2AlwgASABLQC9ATYCYCABIAEtAL4BQQFxOgBkIAUgAkEDbCIDQQJBAyAEQQFGG2wQpwEgAUH0AGoiCCADEKcBIAEgBEECSyIEOgBlIAFBgAFqIglBBEEDIAQbIAJsEKcBIAFBjAFqIgQgAhCnASABQZgBaiIHIAMQpwEgAUGkAWoiCyADIAxsEKcBIAogASgCaCABQcwAaiAFEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCjAEgAUFAayAEEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCmAEgAUE0aiAHEKIBIgIoAgQgAigCAGsQiAEgAhA6IAogASgCdCABQShqIAgQogEiAigCBCACKAIAaxCIASACEDogCiABKAKAASABQRxqIAkQogEiAigCBCACKAIAaxCIASACEDogCiABKAKkASABQRBqIAsQogEiAigCBCACKAIAaxCIASACEDoCQCAKIAooAgBBDGsoAgBqLQAQQQVxBEBBkQwQvgMgDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsADAELIA0gAUHYAGoiAikCADcCACANIAIpAQY3AQYgDUEQaiACQRBqEKEBIA1BHGogAkEcahChASANQShqIAJBKGoQoQEgDUE0aiACQTRqEKEBIA1BQGsgAkFAaxChASANQcwAaiACQcwAahChAQsgAUHYAGoQywMLIAFBwAFqJAAgChCxARoMAgsgE0EEahCbAgsgGhA6IBNBqAFqEDogDUIANwAFIA1CADcCACANQQE6AA0gDUEQakEAQcgA/AsACyATQZgBahAgGiATQcABaiQAIwBBkAFrIgIkACANKAIAIQQgDSgCBBDTAyEBAkACQAJAIA0oAhQgDSgCEGsiBSAEQQNsIgNBAkEDIAUgDSgCACIMQQZsIghGG2xHBEAgAkH2HTYCOCACQfgANgI0IAJB/BQ2AjBByAsgAkEwahByEH9BoPEAKAIAEGEaDAELIAMgDSgCICANKAIca0cEQCACQfkANgI8IAJBPGpBxhwQmgIMAQsgDSgCLCANKAIoa0EEQQMgDS0ADSIJQQFxGyAEbEcEQCACQZ4dNgIoIAJB+gA2AiQgAkH8FDYCIEHICyACQSBqEHIQf0Gg8QAoAgAQYRoMAQsgBCANKAI4IA0oAjRrRwRAIAJB7xs2AhggAkH7ADYCFCACQfwUNgIQQcgLIAJBEGoQchB/QaDxACgCABBhGgwBCyADIA0oAkQgDSgCQGtHBEAgAkH8ADYCPCACQTxqQZwcEJoCDAELIA0oAlAgDSgCTGsiByABIANsRg0BIAJB8Bw2AgggAkH9ADYCBCACQfwUNgIAQcgLIAIQchB/QaDxACgCABBhGgsgAEIANwIAIABBADoACCAAQQxqQQBByAD8CwAMAQsgAEEMaiIBQQBByAD8CwAgACAMNgIAIAAgDSgCBDYCBCAAIA0tAAw6AAggASADEKQBIABBGGogAxCkASAAQSRqIARBAnQQpAEgAEEwaiAEEKQBIABBPGogAxCkASAAQcgAaiAHEKQBAkAgBSAIRgRAIAEoAgAhDCANKAIQIQgDQCADIBFGDQIgDCARQQJ0agJ9QwAAgD9DAACAvyAIIBFBAXRqLwEAIgHBQQBOGyEzIAFB/wdxIQUCQCABQQp2QR9xIgFBH0cEQCABDQEgM0MAAIA4lCAFs5RDAACAOpQMAgtDAADAfyAzQwAAgH+UIAUbDAELQwAAgD8hMgJAIAFBD2siAUGAAU4EQEMAAAB/ITIgAUH/AUkEQCABQf8AayEBDAILQwAAgH8hMkH9AiABIAFB/QJPG0H+AWshAQwBCyABQYF/Sg0AQwAAgAwhMiABQZt+SwRAIAFB5gBqIQEMAQtDAAAAACEyQbZ9IAEgAUG2fU0bQcwBaiEBCyAFs0MAAIA6lEMAAIA/kiAzIDIgAUEXdEGAgID8A2q+lJSUCzgCACARQQFqIREMAAsACyANKAIQIgVBAmohDCAFQQFqIQhEAAAAAAAA8D9BASANKAIIdLejtiEyIAEoAgAhBwNAIAMgEUYNASAHIBFBAnRqIDIgCCARQQNsIgFqLQAAQQh0IAEgBWotAAByIAEgDGosAAAiAUH/AXFBEHRyQYCAgHhBACABQQBIG3KylDgCACARQQFqIREMAAsACyAAKAIYIQEgDSgCHCEFQQAhEQNAIAMgEUYEQCACQdQAaiEIQQAhESAJQQFxIQcDfyAEIBFGBH8gACgCMCEFIA0oAjQhDEEABQJAIAcEQCAAKAIkIA0oAighBSACQoCAgPyDgIDAPzcCTCACQoCAgPyDgIDAPzcCRCACQoCAgPyDgIDAPzcCPCAIQcgfQTz8CgAAIBFBBHRqIQwgAkE8aiELQwAAAAAhMiAFIBFBAnRqIgEvAAAgAS0AAkEQdHIgAS0AAyIBQRh0ciEFIAFBBnYhCUEDIQEDfyABQQBIBH8gDCAJQQJ0akMAAIA/IDKTkTgCACALQQxqIQVBAAUgASAJRwRAIAwgAUECdGogBUH/A3GzQ/MENT+UQwCA/0OVIjOMIDMgBUGABHEbIjM4AgAgMyAzlCAykiEyIAVBCnYhBQsgAUEBayEBDAELCyEBA0AgAUEDRwRAIAwgAUECdCIJaiILIAUgCWoqAgAgCyoCAJQ4AgAgAUEBaiEBDAELCwwBCyAAKAIkIA0oAiggAkKAgID8g4CAwD83AkwgAkKAgID8g4CAwD83AkQgAkKAgID8g4CAwD83AjwgCEHIH0E8/AoAACMAQRBrIgEkACARQQNsaiIFLQACIQkgBS0AASELIAEgBS0AALNDgYAAPJRDAACAv5IgAioCSJQ4AgQgASALs0OBgAA8lEMAAIC/kiACKgJMlDgCCCABIAmzQ4GAADyUQwAAgL+SIAIqAlCUOAIMIBFBBHRqIgUgASkCBDcCACAFIAEoAgw2AgggBUMAAIA/IAEqAgwgASoCDJQgASoCBCABKgIElCABKgIIIAEqAgiUkpKTIjJDAAAAACAyQwAAAABeG5E4AgwgAUEQaiQACyARQQFqIREMAQsLIREDQCAEIBFHBEAgBSARQQJ0agJ9QwAAAAAgDCARai0AALNDAAB/Q5UiMkMAAIA/IDKTlSIyvCIBQYCAgPwDRg0AGgJAIAFBgICA/AdrQf///4d4TQRAIAFBAXQiCEUEQCMAQRBrIgFDAACAvzgCDCABKgIMQwAAAACVDAMLIAFBgICA/AdGDQEgCEGAgIB4SSABQQBOcUUEQCAyIDKTIjIgMpUMAwsgMkMAAABLlLxBgICA3ABrIQELQYjxACsDACABIAFBgIDM+QNrIgFBgICAfHFrvrsgAUEPdkHwAXEiCCsDgG+iRAAAAAAAAPC/oCI3IDeiIjiiQZDxACsDACA3okGY8QArAwCgoCA4oiABQRd1t0GA8QArAwCiIAgrA4hvoCA3oKC2ITILIDILOAIAIBFBAWohEQwBCwsgACgCPCEBIA0oAkAhBEEAIREDQCADIBFGBEAgDSgCUCANKAJMIgFrIQQgACgCSCEFQQAhAwNAIAMgBEYEQCAZKAIMIQwjAEHgAGsiBCQAIwBBEGsiBSQAQQEhAQJ/QQEhA0EBIAxBAEwNABogDEEBa0EDcyIMQX9zQQFxIQEgDEEEcUUhAyAMQQJxRQshDCAFIAM6AA8gBSAMOgAOIAUgAToADSAFLQAOIQEgBS0ADyEDIAUtAA0hDCAEQYCAgPwDNgJAIARBgICA/AM2AjggBEMAAIA/QwAAgL8gDBsiMzgCXCAEQwAAgD9DAACAvyADGyIyOAJYIAQgMzgCVCAEIDI4AlAgBEMAAIA/QwAAgL8gARsiNDgCTCAEIDQ4AkQgBCAzOAIsIAQgMjgCKCAEIDQ4AiQgBCAyOAIUIAQgNDgCECAEIDM4AgwgBCAzIDKUIjU4AjwgBCA0IDKUIjY4AjQgBCAzIDSUIjM4AjAgBCAzOAIgIAQgNTgCHCAEIDY4AhggBCAzIDKUOAJIIAVBEGokACAAKAIMIgFBCGohDCABQQRqIQggACgCECABa0ECdSEJQQAhAwNAIAMgCU8EQCAAKAIkIgFBCGohDCABQQRqIQggACgCKCABa0ECdSEJQQAhAwNAIAMgCU8EQAJAIAAoAkgiBUEIaiEJIAVBBGohByAAKAJMIAVrQQJ1QQNuIgsgACgCAG4hDCAEQSRqIQ5BACEAQQAhAQNAQQAhAyABIAtPDQEDQCADIAxPBEAgASAMaiEBDAIFIAUgAEECdCIIaiIPIA4gA0ECdGoqAgAiMiAPKgIAlDgCACAHIAhqIg8gMiAPKgIAlDgCACAIIAlqIgggMiAIKgIAlDgCACAAQQNqIQAgA0EBaiEDDAELAAsACwALBSABIANBAnQiBWoiByAEKgIYIAcqAgCUOAIAIAUgCGoiByAEKgIcIAcqAgCUOAIAIAUgDGoiBSAEKgIgIAUqAgCUOAIAIANBBGohAwwBCwsgBEHgAGokAAUgASADQQJ0IgVqIgcgBCoCDCAHKgIAlDgCACAFIAhqIgcgBCoCECAHKgIAlDgCACAFIAxqIgUgBCoCFCAFKgIAlDgCACADQQNqIQMMAQsLBSAFIANBAnRqIAEgA2otAACzQwAAAMOSQwAAADyUOAIAIANBAWohAwwBCwsFIAEgEUECdGogBCARai0AALNDAAB/Q5VDAAAAv5JDmpkZPpU4AgAgEUEBaiERDAELCwUgASARQQJ0aiAFIBFqLQAAs0MAAIA9lEMAACDBkjgCACARQQFqIREMAQsLCyACQZABaiQAIA0QywMgIkHgAGokACAZEDogGUEQaiQAC5UBAQN/IAACfyAAKAIEIgIgACgCCEkEQCACIAEqAgA4AgAgAkEEagwBCyMAQSBrIgMkACADQQxqIAAgACgCBCAAKAIAa0ECdUEBahC2ASAAKAIEIAAoAgBrQQJ1IAAQhwIiAigCCCIEIAEqAgA4AgAgAiAEQQRqNgIIIAAgAhCFAiAAKAIEIAIQgQIgA0EgaiQACzYCBAvqAQEBfyMAQSBrIgYkACAGIAE2AhwCQCADKAIEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQYAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADECcgBhBJIQEgBhAlIAYgAxAnIAYQmwEhACAGECUgBiAAEHwgBkEMciAAEHsgBSAGQRxqIAIgBiAGQRhqIgMgASAEQQEQzwEgBkY6AAAgBigCHCEBA0AgA0EMaxAgIgMgBkcNAAsLIAZBIGokACABC0ABAX9BACEAA38gASACRgR/IAAFIAEoAgAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBBGohAQwBCwsLCwAgACACIAMQmQMLVAECfwJAA0AgAyAERwRAQX8hACABIAJGDQIgASgCACIFIAMoAgAiBkgNAiAFIAZKBEBBAQ8FIANBBGohAyABQQRqIQEMAgsACwsgASACRyEACyAAC0ABAX9BACEAA38gASACRgR/IAAFIAEsAAAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBAWohAQwBCwsLCwAgACACIAMQuAMLXgEDfyABIAQgA2tqIQUCQANAIAMgBEcEQEF/IQAgASACRg0CIAEsAAAiBiADLAAAIgdIDQIgBiAHSgRAQQEPBSADQQFqIQMgAUEBaiEBDAILAAsLIAIgBUchAAsgAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEHEaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEHEaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC1QBAn8gASAAKAJUIgEgAUEAIAJBgAJqIgMQ4AEiBCABayADIAQbIgMgAiACIANLGyICEHEaIAAgASADaiIDNgJUIAAgAzYCCCAAIAEgAmo2AgQgAgsJACAAEIkCEC0LEwAgACAAKAIAQQxrKAIAahCMAgsTACAAIAAoAgBBDGsoAgBqELEBCwoAIABBCGsQjAILCgAgAEEIaxCxAQsaACAAIAEgAikDCEEAIAMgASgCACgCEBEXAAsJACAAEPwBEC0LlAICAX8DfiABKAIYIAEoAixLBEAgASABKAIYNgIsC0J/IQgCQCAEQRhxIgVFIANBAUYgBUEYRnFyDQAgASgCLCIFBEAgBSABQSBqECNrrCEGCwJAAkACQCADDgMCAAEDCyAEQQhxBEAgASgCDCABKAIIa6whBwwCCyABKAIYIAEoAhRrrCEHDAELIAYhBwsgAiAHfCICQgBTIAIgBlVyDQAgBEEIcSEDAkAgAlANACADBEAgASgCDEUNAgsgBEEQcUUNACABKAIYRQ0BCyADBEAgASABKAIIIAEoAgggAqdqIAEoAiwQsgELIARBEHEEQCABIAEoAhQgASgCHBC6AyABIAKnELkDCyACIQgLIAAgCBCSAgv8AQEJfyMAQRBrIgMkAAJ/IAFBf0cEQCAAKAIMIQQgACgCCCEFIAAoAhggACgCHEYEQEF/IAAtADBBEHFFDQIaIAAoAhghBiAAKAIUIQcgACgCLCEIIAAoAhQhCSAAQSBqIgJBABC4ASACIAIQKBAhIAAgAhAjIgogAhAfIApqELoDIAAgBiAHaxC5AyAAIAAoAhQgCCAJa2o2AiwLIAMgACgCGEEBajYCDCAAIANBDGogAEEsahCgASgCADYCLCAALQAwQQhxBEAgACAAQSBqECMiAiACIAQgBWtqIAAoAiwQsgELIAAgAcAQwgMMAQsgARC2AwsgA0EQaiQAC5YBACAAKAIYIAAoAixLBEAgACAAKAIYNgIsCwJAIAAoAgggACgCDE8NACABQX9GBEAgACAAKAIIIAAoAgxBAWsgACgCLBCyASABELYDDwsgAC0AMEEQcUUEQCAAKAIMQQFrLQAAIAFB/wFxRw0BCyAAIAAoAgggACgCDEEBayAAKAIsELIBIAAoAgwgAcA6AAAgAQ8LQX8LZQAgACgCGCAAKAIsSwRAIAAgACgCGDYCLAsCQCAALQAwQQhxRQ0AIAAoAhAgACgCLEkEQCAAIAAoAgggACgCDCAAKAIsELIBCyAAKAIMIAAoAhBPDQAgACgCDCwAABCjAQ8LQX8LBwAgACgCDAsHACAAKAIICxMAIAAgACgCAEEMaygCAGoQjgILCgAgAEEIaxCOAgsTACAAIAAoAgBBDGsoAgBqENgBCwoAIABBCGsQ2AELEwAgACAAKAIAQQxrKAIAahDBAwsTACAAIAAoAgBBDGsoAgBqEI8CCxMAIAAgACgCAEEMaygCAGoQxgMLEwAgACAAKAIAQQxrKAIAahCQAguuAQEEfyMAQRBrIgUkAANAAkAgAiAETA0AIAAoAhgiAyAAKAIcIgZPBEAgACABLAAAEKMBIAAoAgAoAjQRBABBf0YNASAEQQFqIQQgAUEBaiEBBSAFIAYgA2s2AgwgBSACIARrNgIIIAVBDGogBUEIahCRAiEDIAAoAhggASADKAIAIgMQTSAAIAMgACgCGGo2AhggAyAEaiEEIAEgA2ohAQsMAQsLIAVBEGokACAECy8AIAAgACgCACgCJBEAAEF/RgRAQX8PCyAAIAAoAgwiAEEBajYCDCAALAAAEKMBCwQAQX8LvQEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJAIAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIARBDGogBEEIaiAEQQRqEJECEJECIQMgASAAKAIMIAMoAgAiAxBNIAAgACgCDCADajYCDAwBCyAAIAAoAgAoAigRAAAiA0F/Rg0BIAEgA8A6AABBASEDCyABIANqIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsJACAAQn8QkgILCQAgAEJ/EJICCwQAIAALDAAgABCUAhogABAtCwwAIAAoAjwQFRDdAQs7AQF/IAAoAjwjAEEQayIAJAAgASACQf8BcSAAQQhqEBYQ3QEhAiAAKQMIIQEgAEEQaiQAQn8gASACGwspACABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAgASkDCBCVAjkDAAu5FwMSfwF8A34jAEGwBGsiCyQAIAtBADYCLAJAIAG9IhlCAFMEQEEBIRBB+AghFCABmiIBvSEZDAELIARBgBBxBEBBASEQQfsIIRQMAQtB/ghB+QggBEEBcSIQGyEUIBBFIRcLAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBBBA2oiBiAEQf//e3EQRSAAIBQgEBBCIABB5g1ByhUgBUEgcSIDG0G8EEH0FSADGyABIAFiG0EDEEIgAEEgIAIgBiAEQYDAAHMQRSACIAYgAiAGShshDQwBCyALQRBqIRECQAJAAkAgASALQSxqENIDIgEgAaAiAUQAAAAAAAAAAGIEQCALIAsoAiwiBkEBazYCLCAFQSByIhVB4QBHDQEMAwsgBUEgciIVQeEARg0CIAsoAiwhDAwBCyALIAZBHWsiDDYCLCABRAAAAAAAALBBoiEBC0EGIAMgA0EASBshCiALQTBqQaACQQAgDEEAThtqIg4hBwNAIAcgAfwDIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAxBAEwEQCAMIQkgByEGIA4hCAwBCyAOIQggDCEJA0BBHSAJIAlBHU8bIQMCQCAHQQRrIgYgCEkNACADrSEbQgAhGQNAIAYgBjUCACAbhiAZfCIaIBpCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGkKAlOvcA1QNACAIQQRrIgggGT4CAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyALIAsoAiwgA2siCTYCLCAGIQcgCUEASg0ACwsgCUEASARAIApBGWpBCW5BAWohEiAVQeYARiETA0BBCUEAIAlrIgMgA0EJTxshDQJAIAYgCE0EQEEAQQQgCCgCABshBwwBC0GAlOvcAyANdiEWQX8gDXRBf3MhD0EAIQkgCCEHA0AgByAHKAIAIgMgDXYgCWo2AgAgAyAPcSAWbCEJIAdBBGoiByAGSQ0AC0EAQQQgCCgCABshByAJRQ0AIAYgCTYCACAGQQRqIQYLIAsgCygCLCANaiIJNgIsIA4gByAIaiIIIBMbIgMgEkECdGogBiAGIANrQQJ1IBJKGyEGIAlBAEgNAAsLQQAhCQJAIAYgCE0NACAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgCiAJQQAgFUHmAEcbayAVQecARiAKQQBHcWsiAyAGIA5rQQJ1QQlsQQlrSARAIAtBMGpBhGBBpGIgDEEASBtqIANBgMgAaiIMQQltIgNBAnRqIQ1BCiEHIAwgA0EJbGsiA0EHTARAA0AgB0EKbCEHIANBAWoiA0EIRw0ACwsCQCANKAIAIgwgDCAHbiISIAdsayIPRSANQQRqIgMgBkZxDQACQCASQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCANT3INASANQQRrLQAAQQFxRQ0BC0QBAAAAAABAQyEBC0QAAAAAAADgP0QAAAAAAADwP0QAAAAAAAD4PyADIAZGG0QAAAAAAAD4PyAPIAdBAXYiA0YbIAMgD0sbIRgCQCAXDQAgFC0AAEEtRw0AIBiaIRggAZohAQsgDSAMIA9rIgM2AgAgASAYoCABYQ0AIA0gAyAHaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgCCANQQRrIg1LBEAgCEEEayIIQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAOIAhrQQJ1QQlsIQlBCiEHIAgoAgAiA0EKSQ0AA0AgCUEBaiEJIAMgB0EKbCIHTw0ACwsgDUEEaiIDIAYgAyAGSRshBgsDQCAGIgwgCE0iB0UEQCAGQQRrIgYoAgBFDQELCwJAIBVB5wBHBEAgBEEIcSETDAELIAlBf3NBfyAKQQEgChsiBiAJSiAJQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiEw0AQXchBgJAIAcNACAMQQRrKAIAIg9FDQBBCiEDQQAhBiAPQQpwDQADQCAGIgdBAWohBiAPIANBCmwiA3BFDQALIAdBf3MhBgsgDCAOa0ECdUEJbCEDIAVBX3FBxgBGBEBBACETIAogAyAGakEJayIDQQAgA0EAShsiAyADIApKGyEKDAELQQAhEyAKIAMgCWogBmpBCWsiA0EAIANBAEobIgMgAyAKShshCgtBfyENIApB/f///wdB/v///wcgCiATciIPG0oNASAKIA9BAEdqQQFqIRYCQCAFQV9xIgdBxgBGBEAgCSAWQf////8Hc0oNAyAJQQAgCUEAShshBgwBCyARIAkgCUEfdSIDcyADa60gERCmASIGa0EBTARAA0AgBkEBayIGQTA6AAAgESAGa0ECSA0ACwsgBkECayISIAU6AAAgBkEBa0EtQSsgCUEASBs6AAAgESASayIGIBZB/////wdzSg0CCyAGIBZqIgMgEEH/////B3NKDQEgAEEgIAIgAyAQaiIJIAQQRSAAIBQgEBBCIABBMCACIAkgBEGAgARzEEUCQAJAAkAgB0HGAEYEQCALQRBqQQlyIQUgDiAIIAggDksbIgMhCANAIAg1AgAgBRCmASEGAkAgAyAIRwRAIAYgC0EQak0NAQNAIAZBAWsiBkEwOgAAIAYgC0EQaksNAAsMAQsgBSAGRw0AIAZBAWsiBkEwOgAACyAAIAYgBSAGaxBCIAhBBGoiCCAOTQ0ACyAPBEAgAEHrG0EBEEILIApBAEwgCCAMT3INAQNAIAg1AgAgBRCmASIGIAtBEGpLBEADQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALCyAAIAZBCSAKIApBCU4bEEIgCkEJayEGIAhBBGoiCCAMTw0DIApBCUogBiEKDQALDAILAkAgCkEASA0AIAwgCEEEaiAIIAxJGyEDIAtBEGpBCXIhDCAIIQcDQCAMIAc1AgAgDBCmASIGRgRAIAZBAWsiBkEwOgAACwJAIAcgCEcEQCAGIAtBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAtBEGpLDQALDAELIAAgBkEBEEIgBkEBaiEGIAogE3JFDQAgAEHrG0EBEEILIAAgBiAMIAZrIgUgCiAFIApIGxBCIAogBWshCiAHQQRqIgcgA08NASAKQQBODQALCyAAQTAgCkESakESQQAQRSAAIBIgESASaxBCDAILIAohBgsgAEEwIAZBCWpBCUEAEEULIABBICACIAkgBEGAwABzEEUgAiAJIAIgCUobIQ0MAQsgFCAFQRp0QR91QQlxaiEJAkAgA0ELSw0AQQwgA2shBkQAAAAAAAAwQCEYA0AgGEQAAAAAAAAwQKIhGCAGQQFrIgYNAAsgCS0AAEEtRgRAIBggAZogGKGgmiEBDAELIAEgGKAgGKEhAQsgESALKAIsIgcgB0EfdSIGcyAGa60gERCmASIGRgRAIAZBAWsiBkEwOgAAIAsoAiwhBwsgEEECciEKIAVBIHEhDCAGQQJrIg4gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxRSADQQBMcSEIIAtBEGohBwNAIAciBSAB/AIiBkGA9QBqLQAAIAxyOgAAIAEgBrehRAAAAAAAADBAoiIBRAAAAAAAAAAAYSAIcSAHQQFqIgcgC0EQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hDSADQf3///8HIAogESAOayIIaiIGa0oNACAAQSAgAiAGIANBAmogByALQRBqIgVrIgcgB0ECayADSBsgByADGyIDaiIGIAQQRSAAIAkgChBCIABBMCACIAYgBEGAgARzEEUgACAFIAcQQiAAQTAgAyAHa0EAQQAQRSAAIA4gCBBCIABBICACIAYgBEGAwABzEEUgAiAGIAIgBkobIQ0LIAtBsARqJAAgDQsEAEIAC9YCAQd/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahAKEN0BBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABQQhBACAGIAEoAgQiCEsiCRtqIgQgBiAIQQAgCRtrIgggBCgCAGo2AgAgAUEMQQQgCRtqIgEgASgCACAIazYCACAFIAZrIQUgACgCPCAEIgEgByAJayIHIANBDGoQChDdAUUNAAsLIAVBf0cNAQsgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCECACDAELIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgB0ECRg0AGiACIAQoAgRrCyADQSBqJAALiQIBA38jAEEQayIAJAACQCAAQQxqIABBCGoQFA0AQYDuASAAKAIMQQJ0QQRqEDQiATYCACABRQ0AIAAoAggQNCIBBEBBgO4BKAIAIgIgACgCDEECdGpBADYCACACIAEQE0UNAQtBgO4BQQA2AgALIABBEGokAEGU4AFBADYCAEGQ4AFBATYCABCQA0GU4AFBsOABKAIANgIAQbDgAUGQ4AE2AgBBtOABQS42AgBBuOABQQA2AgAQnAJBuOABQbDgASgCADYCAEGw4AFBtOABNgIAQdzhAUHk4AE2AgBBtOEBQYCABDYCAEGw4QFB8P4FNgIAQZThAUEqNgIAQbjhAUG43QEoAgA2AgALC8jAASoAQYAIC4QYbG9hZF9zcHoAaW5maW5pdHkARmVicnVhcnkASmFudWFyeQBKdWx5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAACobQAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQBB1DMLoSiWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBgNwAC6IVYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAAywBNAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAC+8/h57GH2P96qjID3e9W/PYivSu1x9T/bbcCn8L7Sv7AQ8PA5lfQ/ZzpRf64e0L+FA7iwlcnzP+kkgqbYMcu/pWSIDBkN8z9Yd8AKT1fGv6COC3siXvI/AIGcxyuqwb8/NBpKSrvxP14OjM52Trq/uuWK8Fgj8T/MHGFaPJexv6cAmUE/lfA/HgzhOPRSor8AAAAAAADwPwAAAAAAAAAArEea/Yxg7j+EWfJdqqWqP6BqAh+zpOw/tC42qlNevD/m/GpXNiDrPwjbIHflJsU/LaqhY9HC6T9wRyINhsLLP+1BeAPmhug/4X6gyIsF0T9iSFP13GfnPwnutlcwBNQ/7zn6/kIu5j80g7hIow7Qv2oL4AtbV9U/I0EK8v7/37/AbgBBsPEAC0EZAAsAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkACgoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBgfIACyEOAAAAAAAAAAAZAAsNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQbvyAAsBDABBx/IACxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQfXyAAsBEABBgfMACxUPAAAABA8AAAAACRAAAAAAABAAABAAQa/zAAsBEgBBu/MACx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQfLzAAsOGgAAABoaGgAAAAAAAAkAQaP0AAsBFABBr/QACxUXAAAAABcAAAAACRQAAAAAABQAABQAQd30AAsBFgBB6fQAC5oOFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGAAAAAAA8AAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAAgAAAAAAAAAPDwAAEQAAABFAAAA+P////j///88PAAARgAAAEcAAADcOgAA8DoAAAQAAAAAAAAAhDwAAEgAAABJAAAA/P////z///+EPAAASgAAAEsAAAAMOwAAIDsAAAwAAAAAAAAAHD0AAEwAAABNAAAABAAAAPj///8cPQAATgAAAE8AAAD0////9P///xw9AABQAAAAUQAAADw7AADYPAAA7DwAAAA9AAAUPQAAZDsAAFA7AAAAAAAAbD0AAFIAAABTAAAAOAAAADkAAABUAAAAVQAAADwAAAA9AAAAPgAAAFYAAABAAAAAVwAAAEIAAABYAAAA0G0AANQ7AAAQPwAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUAAACobQAACDwAAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQAAAAAsbgAAVDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAsbgAAnDwAAAAAAAABAAAAyDsAAAP0//9OU3QzX18yMTNiYXNpY19vc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAAAMAAAAAAAAADw8AABEAAAARQAAAPT////0////PDwAAEYAAABHAAAABAAAAAAAAACEPAAASAAAAEkAAAD8/////P///4Q8AABKAAAASwAAACxuAAA8PQAAAwAAAAIAAAA8PAAAAgAAAIQ8AAACCAAATlN0M19fMjE0YmFzaWNfaW9zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAN4SBJUAAAAA////////////////YEEAABQAAABDLlVURi04AEGwgwELAnRBAEHQgwELSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTACBEAEGkiAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AEGgkAELAjBKAEG0lAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEG0nAELLYDeKACAyE0AAKd2AAA0ngCAEscAgJ/uAAB+FwGAXEABgOlnAQDIkAEAVbgBLgBB8JwBC9ICU3VuAE1vbgBUdWUAV2VkAFRodQBGcmkAU2F0AFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAEphbnVhcnkARmVicnVhcnkATWFyY2gAQXByaWwATWF5AEp1bmUASnVseQBBdWd1c3QAU2VwdGVtYmVyAE9jdG9iZXIATm92ZW1iZXIARGVjZW1iZXIAQU0AUE0AJWEgJWIgJWUgJVQgJVkAJW0vJWQvJXkAJUg6JU06JVMAJUk6JU06JVMgJXAAAAAlbS8lZC8leQAwMTIzNDU2Nzg5ACVhICViICVlICVUICVZACVIOiVNOiVTAAAAAABeW3lZXQBeW25OXQB5ZXMAbm8AQdCfAQsxMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRnhYKy1wUGlJbk4AJUk6JU06JVMgJXAlSDolTQBBkKABC4EBJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAEGgoQELZSUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAAAAAAABaAAB0AAAAdQAAAHYAAAAAAAAAZFoAAHcAAAB4AAAAdgAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAEGQogEL/QMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABABBlKoBC+0CvFkAAIEAAACCAAAAdgAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAAAAAAAAmFoAAIoAAACLAAAAdgAAAIwAAACNAAAAjgAAAI8AAACQAAAAAAAAALxaAACRAAAAkgAAAHYAAACTAAAAlAAAAJUAAACWAAAAlwAAAHQAAAByAAAAdQAAAGUAAAAAAAAAZgAAAGEAAABsAAAAcwAAAGUAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAQYytAQv9J5xWAACYAAAAmQAAAHYAAADQbQAAqFYAAOxqAABOU3QzX18yNmxvY2FsZTVmYWNldEUAAAAAAAAABFcAAJgAAACaAAAAdgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAACxuAAAkVwAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUl3RUUAAACobQAAQFcAAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAAAAAAAAAACIVwAAmAAAAKcAAAB2AAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAACxuAACoVwAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAAAAqG0AANRXAABOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAAAAAAAAHFgAAJgAAACvAAAAdgAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYAAAAsbgAAPFgAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUAAAAAAACQWAAAmAAAALcAAAB2AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAACxuAACwWAAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUAAAAAAARZAACYAAAAvwAAAHYAAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAALG4AACRZAAAAAAAAAgAAAJxWAAACAAAAzFcAAAIAAABOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAAAAAAAAeFkAAJgAAADHAAAAdgAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAAAsbgAAmFkAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFACxuAADcWQAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAAAA0G0AAAxaAACcVgAATlN0M19fMjZsb2NhbGU1X19pbXBFAAAA0G0AADBaAACcVgAATlN0M19fMjdjb2xsYXRlSWNFRQDQbQAAUFoAAJxWAABOU3QzX18yN2NvbGxhdGVJd0VFACxuAACEWgAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUljRUUAAADQbQAApFoAAJxWAABOU3QzX18yOG51bXB1bmN0SWNFRQAAAADQbQAAyFoAAJxWAABOU3QzX18yOG51bXB1bmN0SXdFRQAAAAAAAAAAJFoAAM8AAADQAAAAdgAAANEAAADSAAAA0wAAAAAAAABEWgAA1AAAANUAAAB2AAAA1gAAANcAAADYAAAAAAAAAGBbAACYAAAA2QAAAHYAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAACxuAACAWwAAAAAAAAIAAACcVgAAAgAAAMRbAAAAAAAATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAsbgAA3FsAAAAAAAABAAAA9FsAAAAAAABOU3QzX18yOV9fbnVtX2dldEljRUUAAACobQAA/FsAAE5TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQAAAAAAAAAAWFwAAJgAAADlAAAAdgAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAALG4AAHhcAAAAAAAAAgAAAJxWAAACAAAAvFwAAAAAAABOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFACxuAADUXAAAAAAAAAEAAAD0WwAAAAAAAE5TdDNfXzI5X19udW1fZ2V0SXdFRQAAAAAAAAAgXQAAmAAAAPEAAAB2AAAA8gAAAPMAAAD0AAAA9QAAAPYAAAD3AAAA+AAAAPkAAAAsbgAAQF0AAAAAAAACAAAAnFYAAAIAAACEXQAAAAAAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUALG4AAJxdAAAAAAAAAQAAALRdAAAAAAAATlN0M19fMjlfX251bV9wdXRJY0VFAAAAqG0AALxdAABOU3QzX18yMTRfX251bV9wdXRfYmFzZUUAAAAAAAAAAAxeAACYAAAA+gAAAHYAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAACxuAAAsXgAAAAAAAAIAAACcVgAAAgAAAHBeAAAAAAAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAsbgAAiF4AAAAAAAABAAAAtF0AAAAAAABOU3QzX18yOV9fbnVtX3B1dEl3RUUAAAAAAAAA9F4AAAMBAAAEAQAAdgAAAAUBAAAGAQAABwEAAAgBAAAJAQAACgEAAAsBAAD4////9F4AAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAAsbgAAHF8AAAAAAAADAAAAnFYAAAIAAABkXwAAAgAAAIBfAAAACAAATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUAAAAAqG0AAGxfAABOU3QzX18yOXRpbWVfYmFzZUUAAKhtAACIXwAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFAAAAAAAAAABgAAATAQAAFAEAAHYAAAAVAQAAFgEAABcBAAAYAQAAGQEAABoBAAAbAQAA+P///wBgAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAALG4AAChgAAAAAAAAAwAAAJxWAAACAAAAZF8AAAIAAABwYAAAAAgAAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAAAAAKhtAAB4YAAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFAAAAAAAAALRgAAAjAQAAJAEAAHYAAAAlAQAALG4AANRgAAAAAAAAAgAAAJxWAAACAAAAHGEAAAAIAABOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAACobQAAJGEAAE5TdDNfXzIxMF9fdGltZV9wdXRFAAAAAAAAAABUYQAAJgEAACcBAAB2AAAAKAEAACxuAAB0YQAAAAAAAAIAAACcVgAAAgAAABxhAAAACAAATlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUAAAAAAAAAAPRhAACYAAAAKQEAAHYAAAAqAQAAKwEAACwBAAAtAQAALgEAAC8BAAAwAQAAMQEAADIBAAAsbgAAFGIAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQCobQAAOGIAAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAAAAAAAAAACIYgAAmAAAADMBAAB2AAAANAEAADUBAAA2AQAANwEAADgBAAA5AQAAOgEAADsBAAA8AQAALG4AAKhiAAAAAAAAAgAAAJxWAAACAAAAMGIAAAIAAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUAAAAAAPxiAACYAAAAPQEAAHYAAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAAAsbgAAHGMAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQAAAAAAcGMAAJgAAABHAQAAdgAAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAACxuAACQYwAAAAAAAAIAAACcVgAAAgAAADBiAAACAAAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAAAAAADIYwAAmAAAAFEBAAB2AAAAUgEAAFMBAAAsbgAA6GMAAAAAAAACAAAAnFYAAAIAAAAwZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAAA4ZAAATlN0M19fMjExX19tb25leV9nZXRJY0VFAAAAAAAAAABwZAAAmAAAAFQBAAB2AAAAVQEAAFYBAAAsbgAAkGQAAAAAAAACAAAAnFYAAAIAAADYZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAADgZAAATlN0M19fMjExX19tb25leV9nZXRJd0VFAAAAAAAAAAAYZQAAmAAAAFcBAAB2AAAAWAEAAFkBAAAsbgAAOGUAAAAAAAACAAAAnFYAAAIAAACAZQAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAACIZQAATlN0M19fMjExX19tb25leV9wdXRJY0VFAAAAAAAAAADAZQAAmAAAAFoBAAB2AAAAWwEAAFwBAAAsbgAA4GUAAAAAAAACAAAAnFYAAAIAAAAoZgAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAAAwZgAATlN0M19fMjExX19tb25leV9wdXRJd0VFAAAAAAAAAABsZgAAmAAAAF0BAAB2AAAAXgEAAF8BAABgAQAALG4AAIxmAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSWNFRQAAAACobQAArGYAAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAAAAAADkZgAAmAAAAGEBAAB2AAAAYgEAAGMBAABkAQAALG4AAARnAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSXdFRQAAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEGU1QELnAiAXwAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAAAAAAABwYAAAHAEAAB0BAAAeAQAAHwEAACABAAAhAQAAIgEAAAAAAADsagAAZQEAAGYBAABnAQAAqG0AAPRqAABOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUAAAAAcG8AANBtAAAgawAAnG4AAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAANBtAABQawAAFGsAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAANBtAACAawAAFGsAAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQAAANBtAACwawAAdGsAAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FANBtAADgawAAFGsAAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQAAAADQbQAAFGwAAHRrAABOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAAAAAAAYGwAAGoBAABrAQAAbAEAAG0BAABuAQAA0G0AAGxsAAAUawAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAExsAACcbAAAdgAAAExsAACobAAARG4AAExsAAC0bAAAYgAAAExsAADAbAAAYwAAAExsAADMbAAAaAAAAExsAADYbAAAYQAAAExsAADkbAAAcwAAAExsAADwbAAAdAAAAExsAAD8bAAAaQAAAExsAAAIbQAAagAAAExsAAAUbQAAbAAAAExsAAAgbQAAbQAAAExsAAAsbQAAeAAAAExsAAA4bQAAeQAAAExsAABEbQAAZgAAAExsAABQbQAAZAAAAAAAAABwbQAAagEAAG8BAABsAQAAbQEAAHABAADQbQAAfG0AABRrAABOMTBfX2N4eGFiaXYxMTZfX2VudW1fdHlwZV9pbmZvRQAAAAAAAAAARGsAAGoBAABxAQAAbAEAAG0BAAByAQAAcwEAAHQBAAB1AQAAAAAAAPBtAABqAQAAdgEAAGwBAABtAQAAcgEAAHcBAAB4AQAAeQEAANBtAAD8bQAARGsAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAATG4AAGoBAAB6AQAAbAEAAG0BAAByAQAAewEAAHwBAAB9AQAA0G0AAFhuAABEawAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAACkawAAagEAAH4BAABsAQAAbQEAAH8BAACobQAApG4AAFN0OXR5cGVfaW5mbwBBud0BCwggAAAAAAAABQBBzN0BCwExAEHk3QELDjIAAAAzAAAACHEAAAAEAEH83QELAQEAQYzeAQsF/////woAQdDeAQshwG4AAHB/AQAlbS8lZC8leQAAAAglSDolTTolUwAAAAgFAEH83gELAmgBAEGU3wELCjIAAABpAQAAZH8AQazfAQsBAgBBvN8BCwj//////////wBBgOABCwJwbw==")),ne((await W(Ee)).instance))}();function w5(){function oe(){var ne;if(i.calledRun=!0,!_){if(w=!0,k0.G(),C?.(i),(ne=i.onRuntimeInitialized)==null||ne.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var Ee=i.postRun.shift();Y.push(Ee)}Z(Y)}}if(0<O)U=w5;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)X();Z($),0<O?U=w5:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),oe()},1)):oe()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();return w5(),w?n=i:n=new Promise((oe,ne)=>{C=oe,E=ne}),n}var JI=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},K3e=e=>1/(1+Math.exp(-e)),X3e=e=>t=>t*e+.5,J3e=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:JI(e,t.positions),scales:JI(e,t.scales,Math.exp),rotations:JI(e,t.rotations),alphas:JI(e,t.alphas,K3e),colors:JI(e,t.colors,X3e(i)),sh:JI(e,t.sh)}},Z3e=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},wre=async(e,t)=>{var n;let i=await q3e(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=J3e(i,a,t);return Z3e(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var $3e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function e_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(e_.prototype=Object.create(qi.prototype),e_.prototype.constructor=e_);Object.defineProperties(e_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function eUe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Bre(e,n)}}e_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=eUe(this),this._promise)};function Bre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load SPZ",t)}async function tUe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}e_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._spzError)&&Bre(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=wre(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=tUe(this,t)};e_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var HO=e_;function sB(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}sB.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=$A.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new sB({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(sB.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});sB.BATCH_TABLE_CLASS_NAME="_batchTable";var Em=sB;function WO(e){e=e??V.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}WO.fromJson=function(e){return new WO({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(WO.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var jO=WO;function YO(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=e.valueType??zt.UINT16;this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}YO.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.enum,i=n.values.map(function(o){return jO.fromJson(o)});return new YO({id:t,values:i,valueType:zt[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(YO.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var qO=YO;function KO(e){e=e??V.EMPTY_OBJECT;let t=e.classes??{},n=e.enums??{};this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}KO.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=qO.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Em.fromJson({id:i,class:e.classes[i],enums:t}));return new KO({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(KO.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var Mf=KO;function zC(e){e=e??V.EMPTY_OBJECT;let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?Mf.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(zC.prototype=Object.create(qi.prototype),zC.prototype.constructor=zC);Object.defineProperties(zC.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});zC.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=nUe(this),this._promise)};async function nUe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=Mf.fromJson(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}zC.prototype.unload=function(){this._schema=void 0};var aB=zC;var Nf={};function ZI(e){return DA(e.url)}function cB(e){let{byteOffset:t,byteLength:n}=e;if(Ii(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=i.byteOffset??0,n=i.byteLength}return`${t}-${t+n}`}function iUe(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Dre(e,t){return`${ZI(e)}-buffer-id-${t}`}function $I(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return ZI(o)}return Dre(n,t)}function gW(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function vre(e,t,n,i){let r=e.bufferViews[0],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function Pre(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let A=i.getDerivedResource({url:s});return ZI(A)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=$I(u,c,n,i),h=cB(a);return`${f}-range-${h}`}function oUe(e,t){let n=Du.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}Nf.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${ZI(n)}`};Nf.getExternalBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e;return`external-buffer:${ZI(t)}`};Nf.getEmbeddedBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Dre(t,n)}`};Nf.getGltfCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t}=e;return`gltf:${ZI(t)}`};Nf.getBufferViewCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];Ii(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=$I(a,s,i,o),u=cB(r);return`buffer-view:${c}-range-${u}`};Nf.getDracoCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${gW(t,n,i,o)}`};Nf.getSpzCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,gltfResource:i,baseResource:o}=e;return`spz:${vre(t,n,i,o)}`};Nf.getVertexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,spz:a,attributeSemantic:c,dequantize:u=!1,loadBuffer:f=!1,loadTypedArray:h=!1}=e,A="";if(u&&(A+="-dequantize"),f&&(A+="-buffer",A+=`-context-${o.context.id}`),h&&(A+="-typed-array"),l(s))return`vertex-buffer:${gW(t,s,n,i)}-draco-${c}${A}`;if(a)return`vertex-buffer:${vre(t,a,n,i)}-spz-${c}${A}`;let g=t.bufferViews[r],m=g.buffer,_=t.buffers[m],y=$I(_,m,n,i),C=cB(g);return`vertex-buffer:${y}-range-${C}${A}`};Nf.getIndexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${gW(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,A=t.bufferViews[h],g=A.buffer,m=t.buffers[g],_=$I(m,g,i,o),y=iUe(f,A);return`index-buffer:${_}-accessor-${y}${u}`};Nf.getImageCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Pre(t,n,i,o)}`};Nf.getTextureCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=Du.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Pre(t,c,i,o),f=oUe(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var Vl=Nf;function lB(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}lB.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};lB.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};lB.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};lB.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var XO=lB;function Nn(){}Nn.cacheEntries={};Nn.statistics=new XO;function rUe(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new rUe(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=e??V.EMPTY_OBJECT;let{schema:t,resource:n}=e,i=Vl.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new aB({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n,typedArray:i}=e,o=Vl.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new jI({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e,n=Vl.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new jI({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=Vl.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new eB({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=Vl.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Kw({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=Vl.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new Xw({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getSpzLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r}=e,s=Vl.getSpzCacheKey({gltf:t,primitive:n,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new HO({resourceCache:Nn,gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,asynchronous:h=!0,dequantize:A=!1,loadBuffer:g=!1,loadTypedArray:m=!1}=e,_=Vl.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,spz:c,attributeSemantic:u,dequantize:A,loadBuffer:g,loadTypedArray:m}),y=Nn.get(_);return l(y)?y:(y=new rB({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,cacheKey:_,asynchronous:h,dequantize:A,loadBuffer:g,loadTypedArray:m}),Nn.add(y))};Nn.getIndexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=Vl.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),A=Nn.get(h);return l(A)?A:(A=new Zw({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(A))};Nn.getImageLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=Vl.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Jw({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=Vl.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new oB({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[rB,Zw,Xw,oB,Jw,Kw,jI,aB,eB],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var Qi=Nn;function Ba(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(Ba.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});Ba.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};Ba.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};Ba.prototype.contentIsAvailableAtIndex=function(e,t){return t=t??0,this._contentAvailabilityBitstreams[t].getBit(e)};Ba.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};Ba.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};Ba.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};Ba.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};Ba.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===Ts.OCTREE&&(t=3),e>>t};Ba.fromSubtreeJson=async function(e,t,n,i,o){let r=new Ba(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=sUe(n);let a=s.json;r._subtreeJson=a;let c;if(Ii(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let E=a.tileMetadata;c=a.propertyTables[E]}let u=[];if(l(a.contentMetadata)){let E=a.contentMetadata.length;for(let I=0;I<E;I++){let b=a.contentMetadata[I];u.push(a.propertyTables[b])}}let f,h=i.metadataSchema,A=a.subtreeMetadata;if(l(A)){let E=A.class,I=h.classes[E];f=new xO({subtreeMetadata:A,class:I})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],Ii(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let m=aUe(a.buffers),_=cUe(a.bufferViews,m);lUe(a,_),l(c)&&Rre(c,_);for(let E=0;E<u.length;E++){let I=u[E];Rre(I,_)}let y=await uUe(r,m,s.binary),C=dUe(_,y);return hUe(r,a,i,C),l(c)&&(mUe(r,i,C),pUe(r)),AUe(r,i,C),gUe(r),r._ready=!0,r};function sUe(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=yr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function aUe(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function cUe(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function lUe(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Rre(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=r.values??r.bufferView;i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=r.stringOffsets??r.stringOffsetBufferView;l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=r.arrayOffsets??r.arrayOffsetBufferView;l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function uUe(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=fUe(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function fUe(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=Qi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function dUe(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function hUe(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=Ii(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=_W(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let A=0;A<t.contentAvailabilityHeaders.length;A++){let g=_W(t.contentAvailabilityHeaders[A],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=_W(t.childSubtreeAvailability,i,a)}function _W(e,t,n,i){if(l(e.constant))return new jw({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new jw({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function mUe(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new jd({class:a,count:o,properties:i.properties,bufferViews:n})}function AUe(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,A=r.classes[h],g=new jd({class:A,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Mre(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function pUe(e){let t=Mre(e._tileAvailability);e._tileJumpBuffer=t}function gUe(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Mre(o);t.push(r)}}Ba.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new ce("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};Ba.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new ce("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function _Ue(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function yUe(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}Ba.prototype.getTileMetadataView=function(e){let t=_Ue(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new Yw({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};Ba.prototype.getContentMetadataView=function(e,t){let n=yUe(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new Yw({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};Ba.prototype.isDestroyed=function(){return!1};Ba.prototype.destroy=function(){return l(this._bufferLoader)&&Qi.unload(this._bufferLoader),ue(this)};var ex=Ba;var CUe={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},tx=Object.freeze(CUe);var qd={};qd.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:qd.parseBoundingVolumeSemantic("TILE",e),minimumHeight:qd._parseMinimumHeight("TILE",e),maximumHeight:qd._parseMaximumHeight("TILE",e)},content:{boundingVolume:qd.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:qd._parseMinimumHeight("CONTENT",e),maximumHeight:qd._parseMaximumHeight("CONTENT",e)}}};qd.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};qd._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};qd._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var nx=qd;function rl(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(rl.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});rl.fromSubtreeJson=async function(e,t,n,i,o,r){r=r??0;let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await ex.fromSubtreeJson(n,i,s,a,c),f=new rl(e,t,n);return f._implicitSubtree=u,EUe(f,u),f._ready=!0,f};function EUe(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=xUe(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=IUe(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=RUe(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function IUe(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function xUe(e,t,n,i){let s=Nre(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let A=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let _=A+m;if(!t.tileIsAvailableAtIndex(_)){u.push(void 0);continue}let y=t.getParentMortonIndex(m),C=c[y],E=m%f.branchingFactor,I=Nre(e,t,C,E,_);C.children.push(I),a.numberOfTilesTotal++,u.push(I)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function Lre(e,t,n){let i=tx.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Nre(e,t,n,i,o,r){let s=e._implicitTileset,a;r??!1?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let B=nx.parseAllBoundingVolumeSemantics(c);u=B.tile,f=B.content}let A=t.contentPropertyTableJsons.length,g=!1;for(let B=0;B<A;B++)if(t.contentIsAvailableAtCoordinates(a,B)){g=!0;break}let m=SUe(s,a,i,r,n,u),_=[];for(let B=0;B<s.contentCount;B++){if(!t.contentIsAvailableAtIndex(o,B))continue;let N={uri:s.contentUriTemplates[B].getDerivedResource({templateValues:a.getTemplateValues()}).url},L=wUe(m,f);l(L)&&(N.boundingVolume=L),_.push(wt(N,s.contentHeaders[B]))}let y=Lre(c,s,a),C={boundingVolume:m,geometricError:y,refine:s.refine,contents:_},E=!0,I=ze(s.tileHeader,E);delete I.boundingVolume,delete I.transform,delete I.metadata;let b=wt(C,I,E),S=Ure(e,s.baseResource,b,n);return S.implicitCoordinates=a,S.implicitSubtree=t,S.metadata=c,S.hasImplicitContentMetadata=g,S}function JO(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(Ii(e,"3DTILES_bounding_volume_S2")||l(e.region))}function CW(e,t){l(t)&&(Ii(e,"3DTILES_bounding_volume_S2")?TUe(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&bUe(e.region,t.minimumHeight,t.maximumHeight))}function bUe(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function TUe(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function SUe(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!JO(r.boundingVolume,r)&&JO(e.boundingVolume,r)?s=Ore(e,t,n,i??!1,o):s=r.boundingVolume,CW(s,r),s}function wUe(e,t){let n;return l(t)&&(n=t.boundingVolume),JO(n,t)?CW(n,t):JO(e,t)&&(n=ze(e,!0),CW(n,t)),n}function Ore(e,t,n,i,o){let r=e.boundingVolume;return Ii(r,"3DTILES_bounding_volume_S2")?Fre(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:kre(r.region,t.level,t.x,t.y,t.z)}:{box:Qre(r.box,t.level,t.x,t.y,t.z)}}function Fre(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?Ww.encode2D(i,o,r):Ww.encode2D(i,r,o),f=Hg.fromFacePositionLevel(c,BigInt(u),i),h,A;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,A=n<4?g:a.maximumHeight}else h=a.minimumHeight,A=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:A}}}}var BUe=new d,DUe=new d,yW=new d,vUe=new J;function Qre(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,DUe),s=J.unpack(e,3,vUe),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,BUe);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let A=d.fromElements(c,u,f,yW);A=J.multiplyByVector(s,A,yW),A=d.add(A,r,yW);let g=J.clone(s);g=J.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(A,m),J.pack(g,m,3),m}var PUe=new ae;function kre(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,PUe),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=D.negativePiToPi(r.west+n*u),h=D.negativePiToPi(f+u),A=c*r.height,g=D.negativePiToPi(r.south+i*A),m=D.negativePiToPi(g+A),_=s,y=a;if(l(o)){let C=c*(a-s);_+=o*C,y=_+C}return[f,g,h,m,_,y]}function RUe(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=Ore(i,o,n,!1,t),s=Lre(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=Ure(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function Ure(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}rl.prototype.hasProperty=function(e,t){return!1};rl.prototype.getFeature=function(e){};rl.prototype.applyDebugSettings=function(e,t){};rl.prototype.applyStyle=function(e){};rl.prototype.update=function(e,t){};rl.prototype.pick=function(e,t,n){};rl.prototype.isDestroyed=function(){return!1};rl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};rl._deriveBoundingBox=Qre;rl._deriveBoundingRegion=kre;rl._deriveBoundingVolumeS2=Fre;var uB=rl;var MUe={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},vu=Object.freeze(MUe);function ix(e,t){this._distance=t,this._normal=new Gre(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(ix.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});ix.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new ix(e.normal,e.distance),t};ix.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new ix(e.normal,e.distance)};function Gre(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(Gre.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var ox=ix;function wc(e){e=e??V.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.edgeColor=G.clone(e.edgeColor??G.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new _e,this.planeRemoved=new _e,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?jre:Yre,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function jre(e){return e===nn.OUTSIDE}function Yre(e){return e===nn.INSIDE}Object.defineProperties(wc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?jre:Yre)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function zre(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}wc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){zre(n,i)},e.index=t,zre(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};wc.prototype.get=function(e){return this._planes[e]};function qre(e,t){let n=e.length;for(let i=0;i<n;++i)if(mn.equals(e[i],t))return i;return-1}wc.prototype.contains=function(e){return qre(this._planes,e)!==-1};wc.prototype.remove=function(e){let t=this._planes,n=qre(t,e);if(n===-1)return!1;e instanceof ox&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof ox&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};wc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof ox&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var NUe=new se,LUe=new se;function Vre(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=Fn.octEncodeToCartesian4(a.normal,LUe);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=se.packFloat(a.distance,NUe);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function Hre(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function Kre(e,t){let n=qt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var OUe=new k;wc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=wc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=Kre(o,OUe);s.y*=2,i?(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(Hre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(Vre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),Hre(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),Vre(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var FUe=new R,Wre=new mn(d.UNIT_X,0);wc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=R.multiply(t,o,FUe));let r=nn.INSIDE;!this.unionClippingRegions&&i>0&&(r=nn.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];mn.transform(a,o,Wre);let c=e.intersectPlane(Wre);if(c===nn.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};wc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};wc.useFloatTexture=function(e){return e.floatingPointTexture};wc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=wc.useFloatTexture(t)?e.length:e.length*2,r=Kre(o,n);return r.y*=2,r};wc.prototype.isDestroyed=function(){return!1};wc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Vs=wc;function xW(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Jre(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=zUe(e,t,r,n)),e.length>80*n){a=e[0],c=e[1];let f=a,h=c;for(let A=n;A<o;A+=n){let g=e[A],m=e[A+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return dB(r,s,n,a,c,u,0),s}function Jre(e,t,n,i,o){let r;if(o===$Ue(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=Xre(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=Xre(s/i|0,e[s],e[s+1],r);return r&&rx(r,r.next)&&(mB(r),r=r.next),r}function VC(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(rx(n,n.next)||Xr(n.prev,n,n.next)===0)){if(mB(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function dB(e,t,n,i,o,r,s){if(!e)return;!s&&r&&YUe(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?kUe(e,i,o,r):QUe(e)){t.push(c.i,e.i,u.i),mB(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=UUe(VC(e),t),dB(e,t,n,i,o,r,2)):s===2&&GUe(e,t,n,i,o,r):dB(VC(e),t,n,i,o,r,1);break}}}function QUe(e){let t=e.prev,n=e,i=e.next;if(Xr(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),A=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=A&&m.y>=h&&m.y<=g&&fB(o,a,r,c,s,u,m.x,m.y)&&Xr(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function kUe(e,t,n,i){let o=e.prev,r=e,s=e.next;if(Xr(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,A=s.y,g=Math.min(a,c,u),m=Math.min(f,h,A),_=Math.max(a,c,u),y=Math.max(f,h,A),C=EW(g,m,t,n,i),E=EW(_,y,t,n,i),I=e.prevZ,b=e.nextZ;for(;I&&I.z>=C&&b&&b.z<=E;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0||(I=I.prevZ,b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;I&&I.z>=C;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0)return!1;I=I.prevZ}for(;b&&b.z<=E;){if(b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function UUe(e,t){let n=e;do{let i=n.prev,o=n.next.next;!rx(i,o)&&$re(i,n,n.next,o)&&hB(i,o)&&hB(o,i)&&(t.push(i.i,n.i,o.i),mB(n),mB(n.next),n=e=o),n=n.next}while(n!==e);return VC(n)}function GUe(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&XUe(s,a)){let c=ese(s,a);s=VC(s,s.next),c=VC(c,c.next),dB(s,t,n,i,o,r,0),dB(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function zUe(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Jre(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(KUe(u))}o.sort(VUe);for(let r=0;r<o.length;r++)n=HUe(o[r],n);return n}function VUe(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function HUe(e,t){let n=WUe(e,t);if(!n)return t;let i=ese(n,e);return VC(i,i.next),VC(n,n.next)}function WUe(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(rx(e,n))return n;do{if(rx(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&Zre(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);hB(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&jUe(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function jUe(e,t){return Xr(e.prev,e,t.prev)<0&&Xr(t.next,e,e.next)<0}function YUe(e,t,n,i){let o=e;do o.z===0&&(o.z=EW(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,qUe(o)}function qUe(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function EW(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function KUe(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function Zre(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function fB(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&Zre(e,t,n,i,o,r,s,a)}function XUe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!JUe(e,t)&&(hB(e,t)&&hB(t,e)&&ZUe(e,t)&&(Xr(e.prev,e,t.prev)||Xr(e,t.prev,t))||rx(e,t)&&Xr(e.prev,e,e.next)>0&&Xr(t.prev,t,t.next)>0)}function Xr(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function rx(e,t){return e.x===t.x&&e.y===t.y}function $re(e,t,n,i){let o=$O(Xr(e,t,n)),r=$O(Xr(e,t,i)),s=$O(Xr(n,i,e)),a=$O(Xr(n,i,t));return!!(o!==r&&s!==a||o===0&&ZO(e,n,t)||r===0&&ZO(e,i,t)||s===0&&ZO(n,e,i)||a===0&&ZO(n,t,i))}function ZO(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function $O(e){return e>0?1:e<0?-1:0}function JUe(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&$re(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function hB(e,t){return Xr(e.prev,e,e.next)<0?Xr(e,t,e.next)>=0&&Xr(e,e.prev,t)>=0:Xr(e,t,e.prev)<0||Xr(e,e.next,t)<0}function ZUe(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function ese(e,t){let n=IW(e.i,e.x,e.y),i=IW(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Xre(e,t,n,i){let o=IW(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function mB(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function IW(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function $Ue(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var eGe=new d,tGe=new d,t_={};t_.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};t_.computeWindingOrder2D=function(e){return t_.computeArea2D(e)>0?Gs.COUNTER_CLOCKWISE:Gs.CLOCKWISE};t_.triangulate=function(e,t){let n=k.packArray(e);return xW(n,t,2)};var ose=new d,rse=new d,sse=new d,tse=new d,nse=new d,ise=new d,ip=new d,ase=new k,cse=new k,lse=new k,sx=new k;t_.computeSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let I=t[a];if(u[h++]=I.x,u[h++]=I.y,u[h++]=I.z,r){let b=i[a];f[A++]=b.x,f[A++]=b.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=y*y;for(;s.length>0;){let I=s.pop(),b=s.pop(),S=s.pop(),B=d.fromArray(u,S*3,ose),v=d.fromArray(u,b*3,rse),P=d.fromArray(u,I*3,sse),N,L,p;r&&(N=k.fromArray(f,S*2,ase),L=k.fromArray(f,b*2,cse),p=k.fromArray(f,I*2,lse));let x=d.multiplyByScalar(d.normalize(B,tse),_,tse),T=d.multiplyByScalar(d.normalize(v,nse),_,nse),w=d.multiplyByScalar(d.normalize(P,ise),_,ise),M=d.magnitudeSquared(d.subtract(x,T,ip)),O=d.magnitudeSquared(d.subtract(T,w,ip)),U=d.magnitudeSquared(d.subtract(w,x,ip)),Q=Math.max(M,O,U),z,F,H;Q>C?M===Q?(z=`${Math.min(S,b)} ${Math.max(S,b)}`,a=m[z],l(a)||(F=d.add(B,v,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(N,L,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(S,a,I),s.push(a,b,I)):O===Q?(z=`${Math.min(b,I)} ${Math.max(b,I)}`,a=m[z],l(a)||(F=d.add(v,P,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(L,p,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(b,a,S),s.push(a,I,S)):U===Q&&(z=`${Math.min(I,S)} ${Math.max(I,S)}`,a=m[z],l(a)||(F=d.add(P,B,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(p,N,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(I,a,b),s.push(a,S,b)):(g.push(S),g.push(b),g.push(I))}let E={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(E.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(E)};var nGe=new Ae,iGe=new Ae,oGe=new Ae,bW=new Ae;t_.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let S=t[a];if(u[h++]=S.x,u[h++]=S.y,u[h++]=S.z,r){let B=i[a];f[A++]=B.x,f[A++]=B.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=new Ic(void 0,void 0,e),E=new Ic(void 0,void 0,e),I=new Ic(void 0,void 0,e);for(;s.length>0;){let S=s.pop(),B=s.pop(),v=s.pop(),P=d.fromArray(u,v*3,ose),N=d.fromArray(u,B*3,rse),L=d.fromArray(u,S*3,sse),p,x,T;r&&(p=k.fromArray(f,v*2,ase),x=k.fromArray(f,B*2,cse),T=k.fromArray(f,S*2,lse));let w=e.cartesianToCartographic(P,nGe),M=e.cartesianToCartographic(N,iGe),O=e.cartesianToCartographic(L,oGe);C.setEndPoints(w,M);let U=C.surfaceDistance;E.setEndPoints(M,O);let Q=E.surfaceDistance;I.setEndPoints(O,w);let z=I.surfaceDistance,F=Math.max(U,Q,z),H,W,Z,Y,$;F>y?U===F?(H=`${Math.min(v,B)} ${Math.max(v,B)}`,a=m[H],l(a)||(W=C.interpolateUsingFraction(.5,bW),Z=(w.height+M.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(p,x,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(v,a,S),s.push(a,B,S)):Q===F?(H=`${Math.min(B,S)} ${Math.max(B,S)}`,a=m[H],l(a)||(W=E.interpolateUsingFraction(.5,bW),Z=(M.height+O.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(x,T,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(B,a,v),s.push(a,S,v)):z===F&&(H=`${Math.min(S,v)} ${Math.max(S,v)}`,a=m[H],l(a)||(W=I.interpolateUsingFraction(.5,bW),Z=(O.height+w.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(T,p,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(S,a,B),s.push(a,v,B)):(g.push(v),g.push(B),g.push(S))}let b={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(b.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(b)};t_.scaleToGeodeticHeight=function(e,t,n,i){n=n??te.default;let o=eGe,r=tGe;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var xi=t_;function n_(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(n_.prototype,{length:{get:function(){return this._length}}});n_.prototype.enqueue=function(e){this._array.push(e),this._length++};n_.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};n_.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};n_.prototype.contains=function(e){return this._array.indexOf(e)!==-1};n_.prototype.clear=function(){this._array.length=this._offset=this._length=0};n_.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var HC=n_;var or={};or.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};or.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};or.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=or.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var WC=new k;function dse(e,t,n,i){return k.subtract(t,e,WC),k.multiplyByScalar(WC,n/i,WC),k.add(e,WC,WC),[WC.x,WC.y]}var i_=new d;function rGe(e,t,n,i){return d.subtract(t,e,i_),d.multiplyByScalar(i_,n/i,i_),d.add(e,i_,i_),[i_.x,i_.y,i_.z]}or.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(D.log2(o)));return Math.pow(2,r)};var tF=new Ae,nF=new Ae,sGe=new Ae,aGe=new d,eF=new Ic;or.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,tF),r=e.cartesianToCartographic(n,nF),a=new Ic(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(D.log2(a)));return Math.pow(2,c)};or.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=or.subdivideLineCount(n,i,o),a=k.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let A=dse(e,t,h*c,a);u[f++]=A[0],u[f++]=A[1]}return u};or.subdivideLine=function(e,t,n,i){let o=or.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=rGe(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};or.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,tF),c=n.cartesianToCartographic(o,nF);eF.setEndPoints(a,c);let u=eF.surfaceDistance/r,f=Math.max(0,Math.ceil(D.log2(u))),h=Math.pow(2,f),A=k.distance(e,t),g=A/h,m=s;m.length=h*2;let _=0;for(let y=0;y<h;y++){let C=dse(e,t,y*g,A);m[_++]=C[0],m[_++]=C[1]}return m};or.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,tF),s=e.cartesianToCartographic(n,nF),a=new Ic(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(D.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,A=o;A.length=f*3;let g=0;for(let m=0;m<f;m++){let _=a.interpolateUsingSurfaceDistance(m*h,sGe),y=e.cartographicToCartesian(_,aGe);A[g++]=y.x,A[g++]=y.y,A[g++]=y.z}return A};var cGe=new d,lGe=new d,uGe=new d,fGe=new d;or.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=i??te.default;let r=cGe,s=lGe,a=uGe,c=fGe;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};or.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new HC;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=No(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],A=h.positions;if(t)for(a=A.length,s=0;s<a;++s)n.scaleToGeodeticSurface(A[s],A[s]);if(A=No(A,d.equalsEpsilon,!0),A.length<3)continue;i.push(A);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var dGe=new Ae;function hGe(e,t,n){let i=n.cartesianToCartographic(e,tF),o=n.cartesianToCartographic(t,nF);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;eF.setEndPoints(i,o);let r=eF.findIntersectionWithLatitude(0,dGe);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>D.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function mGe(e,t,n,i){if(i===un.RHUMB)return hGe(e,t,n);let o=Ai.lineSegmentPlane(e,t,mn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var AGe=new Ae;function pGe(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=D.sign(o.z),a=D.sign(r.z);let f=h=>t.cartesianToCartographic(h,AGe).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=mGe(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function hse(e,t,n,i,o,r,s){let a=[],c=r,u=h=>A=>A.position===h,f=[];do{let h=n[c];a.push(h);let A=i.findIndex(u(c)),g=i[A];if(!l(g)){++c;continue}let{visited:m,type:_,next:y}=g;if(g.visited=!0,_===0){if(y===0){let b=i[A-(s?1:-1)];if(b?.position===c+1)b.visited=!0;else{++c;continue}}if(!m&&s&&y>0||r===c&&!s&&y<0){++c;continue}}if(!(s?_>=0:_<=0)){++c;continue}m||f.push(c);let E=A+(s?1:-1),I=i[E];if(!l(I)){++c;continue}c=I.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=hse(e,++t,n,i,0,h,!s);return t}or.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=pGe(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=hse(i,o,s,a,1,0,c)}return i};or.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new HC;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,A=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=No(h,d.equalsEpsilon,!0)),h.length<3)continue;let _=n(h);if(!l(_))continue;let y=[],C=xi.computeWindingOrder2D(_);if(C===Gs.CLOCKWISE&&(_.reverse(),h=h.slice().reverse()),u){u=!1;let B=[h];if(B=r(B,B),B.length>1){for(let v of B)c.enqueue(new xc(v,A));continue}}let E=h.slice(),I=l(A)?A.length:0,b=[],S;for(g=0;g<I;g++){let B=A[g],v=B.positions;if(i)for(m=v.length,S=0;S<m;++S)o.scaleToGeodeticSurface(v[S],v[S]);if(t||(v=No(v,d.equalsEpsilon,!0)),v.length<3)continue;let P=n(v);if(!l(P))continue;C=xi.computeWindingOrder2D(P),C===Gs.CLOCKWISE&&(P.reverse(),v=v.slice().reverse()),b.push(v),y.push(E.length),E=E.concat(v),_=_.concat(P);let N=0;for(l(B.holes)&&(N=B.holes.length),S=0;S<N;S++)c.enqueue(B.holes[S])}s.push({outerRing:h,holes:b}),a.push({positions:E,positions2D:_,holes:y})}return{hierarchy:s,polygons:a}};var gGe=new k,_Ge=new d,yGe=new Le,CGe=new J;or.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,yGe),s=J.fromQuaternion(r,CGe),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let A=0;A<h;++A){let g=d.clone(n[A],_Ge);J.multiplyByVector(s,g,g);let m=t(g,gGe);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};or.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=xi.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,A=new Array(h*3),g=0;for(let y=0;y<h;y++){let C=c[y];A[g++]=C.x,A[g++]=C.y,A[g++]=C.z}let m={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:A})},indices:a,primitiveType:Me.TRIANGLES};u&&(m.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:k.packArray(f)}));let _=new ht(m);return r.normal?jn.computeNormal(_):_}if(s===un.GEODESIC)return xi.computeSubdivision(e,c,a,f,i);if(s===un.RHUMB)return xi.computeRhumbLineSubdivision(e,c,a,f,i)};var use=[],fse=[],EGe=new d,IGe=new d;or.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,A,g,m,_=e.length,y=0,C=0,E=l(t),I=E?t.positions:void 0;if(o)for(a=_*3*2,s=new Array(a*2),E&&(m=_*2*2,g=new Array(m*2)),c=0;c<_;c++)u=e[c],f=e[(c+1)%_],s[y]=s[y+a]=u.x,++y,s[y]=s[y+a]=u.y,++y,s[y]=s[y+a]=u.z,++y,s[y]=s[y+a]=f.x,++y,s[y]=s[y+a]=f.y,++y,s[y]=s[y+a]=f.z,++y,E&&(h=I[c],A=I[(c+1)%_],g[C]=g[C+m]=h.x,++C,g[C]=g[C+m]=h.y,++C,g[C]=g[C+m]=A.x,++C,g[C]=g[C+m]=A.y,++C);else{let P=D.chordLength(i,n.maximumRadius),N=0;if(r===un.GEODESIC)for(c=0;c<_;c++)N+=or.subdivideLineCount(e[c],e[(c+1)%_],P);else if(r===un.RHUMB)for(c=0;c<_;c++)N+=or.subdivideRhumbLineCount(n,e[c],e[(c+1)%_],P);for(a=(N+_)*3,s=new Array(a*2),E&&(m=(N+_)*2,g=new Array(m*2)),c=0;c<_;c++){u=e[c],f=e[(c+1)%_];let L,p;E&&(h=I[c],A=I[(c+1)%_]),r===un.GEODESIC?(L=or.subdivideLine(u,f,P,fse),E&&(p=or.subdivideTexcoordLine(h,A,u,f,P,use))):r===un.RHUMB&&(L=or.subdivideRhumbLine(n,u,f,P,fse),E&&(p=or.subdivideTexcoordRhumbLine(h,A,n,u,f,P,use)));let x=L.length;for(let T=0;T<x;++T,++y)s[y]=L[T],s[y+a]=L[T];if(s[y]=f.x,s[y+a]=f.x,++y,s[y]=f.y,s[y+a]=f.y,++y,s[y]=f.z,s[y+a]=f.z,++y,E){let T=p.length;for(let w=0;w<T;++w,++C)g[C]=p[w],g[C+m]=p[w];g[C]=A.x,g[C+m]=A.x,++C,g[C]=A.y,g[C+m]=A.y,++C}}}_=s.length;let b=Fe.createTypedArray(_/3,_-e.length*6),S=0;for(_/=6,c=0;c<_;c++){let P=c,N=P+1,L=P+_,p=L+1;u=d.fromArray(s,P*3,EGe),f=d.fromArray(s,N*3,IGe),!d.equalsEpsilon(u,f,D.EPSILON10,D.EPSILON10)&&(b[S++]=P,b[S++]=L,b[S++]=N,b[S++]=N,b[S++]=L,b[S++]=p)}let B={attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),indices:b,primitiveType:Me.TRIANGLES};return E&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),new ht(B)};var $n=or;function Jr(e,t){this.position=e,l(this.position)||(this.position=new k),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=Jr.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(Jr.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=k.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(D.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=D.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=D.TWO_PI),e}}});var ax=new Ae,xGe=new d;Jr.prototype.getLatitude=function(e){l(e)||(e=te.default),ax.latitude=this.conformalLatitude,ax.longitude=this.longitude,ax.height=0;let t=this.ellipsoid.cartographicToCartesian(ax,xGe);return e.cartesianToCartographic(t,ax),ax.latitude};var bGe=new In,TGe=new d,SGe=new d;Jr.fromCartesian=function(e,t){let n=D.signNotZero(e.z),i=Jr.NORTH_POLE_TANGENT_PLANE,o=Jr.SOUTH_POLE;n<0&&(i=Jr.SOUTH_POLE_TANGENT_PLANE,o=Jr.NORTH_POLE);let r=bGe;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,TGe),d.normalize(r.direction,r.direction);let s=Ai.rayPlane(r,i.plane,SGe),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new k(c,u),t.tangentPlane=i,t):new Jr(new k(c,u),i)};Jr.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=Jr.fromCartesian(e[i],t[i]);return t};Jr.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new Jr(e.position,e.tangentPlane)};Jr.HALF_UNIT_SPHERE=Object.freeze(new te(.5,.5,.5));Jr.NORTH_POLE=Object.freeze(new d(0,0,.5));Jr.SOUTH_POLE=Object.freeze(new d(0,0,-.5));Jr.NORTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.NORTH_POLE,Jr.HALF_UNIT_SPHERE));Jr.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.SOUTH_POLE,Jr.HALF_UNIT_SPHERE));var sl=Jr;var wGe=new Ae,mse=new Ae;function BGe(e,t,n,i){let r=i.cartesianToCartographic(e,wGe).height,s=i.cartesianToCartographic(t,mse);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,mse);a.height=r-100,i.cartographicToCartesian(a,n)}var Ase=new Xe,DGe=new d,vGe=new d,PGe=new d,RGe=new d,MGe=new d,NGe=new d,iF=new d,Im=new d,cx=new d,LGe=new k,OGe=new k,FGe=new d,pse=new Le,QGe=new J,kGe=new J;function TW(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,A=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,_=e.perPositionHeight,y=LGe;y.x=f.x,y.y=f.y;let C=t.st?new Float32Array(2*(s/3)):void 0,E;t.normal&&(_&&c&&!a?E=n.attributes.normal.values:E=new Float32Array(s));let I=t.tangent?new Float32Array(s):void 0,b=t.bitangent?new Float32Array(s):void 0,S=i?new Float32Array(s):void 0,B=0,v=0,P=vGe,N=PGe,L=RGe,p=!0,x=QGe,T=kGe;if(m!==0){let O=Le.fromAxisAngle(h,m,pse);x=J.fromQuaternion(O,x),O=Le.fromAxisAngle(h,-m,pse),T=J.fromQuaternion(O,T)}else x=J.clone(J.IDENTITY,x),T=J.clone(J.IDENTITY,T);let w=0,M=0;c&&u&&(w=s/2,M=s/3,s/=2);for(let O=0;O<s;O+=3){let U=d.fromArray(o,O,FGe);if(t.st&&!l(r)){let Q=J.multiplyByVector(x,U,DGe);Q=g.scaleToGeodeticSurface(Q,Q);let z=A([Q],OGe)[0];k.subtract(z,y,z);let F=D.clamp(z.x/f.width,0,1),H=D.clamp(z.y/f.height,0,1);u&&(C[B+M]=F,C[B+1+M]=H),c&&(C[B]=F,C[B+1]=H),B+=2}if(t.normal||t.tangent||t.bitangent||i){let Q=v+1,z=v+2;if(a){if(O+3<s){let F=d.fromArray(o,O+3,MGe);if(p){let H=d.fromArray(o,O+s,NGe);_&&BGe(U,F,H,g),d.subtract(F,U,F),d.subtract(H,U,H),P=d.normalize(d.cross(H,F,P),P),p=!1}d.equalsEpsilon(F,U,D.EPSILON10)&&(p=!0)}(t.tangent||t.bitangent)&&(L=g.geodeticSurfaceNormal(U,L),t.tangent&&(N=d.normalize(d.cross(L,P,N),N)))}else P=g.geodeticSurfaceNormal(U,P),(t.tangent||t.bitangent)&&(_&&(iF=d.fromArray(E,v,iF),Im=d.cross(d.UNIT_Z,iF,Im),Im=d.normalize(J.multiplyByVector(T,Im,Im),Im),t.bitangent&&(cx=d.normalize(d.cross(iF,Im,cx),cx))),N=d.cross(d.UNIT_Z,P,N),N=d.normalize(J.multiplyByVector(T,N,N),N),t.bitangent&&(L=d.normalize(d.cross(P,N,L),L)));t.normal&&(e.wall?(E[v+w]=P.x,E[Q+w]=P.y,E[z+w]=P.z):u&&(E[v+w]=-P.x,E[Q+w]=-P.y,E[z+w]=-P.z),(c&&!_||a)&&(E[v]=P.x,E[Q]=P.y,E[z]=P.z)),i&&(a&&(P=g.geodeticSurfaceNormal(U,P)),S[v+w]=-P.x,S[Q+w]=-P.y,S[z+w]=-P.z),t.tangent&&(e.wall?(I[v+w]=N.x,I[Q+w]=N.y,I[z+w]=N.z):u&&(I[v+w]=-N.x,I[Q+w]=-N.y,I[z+w]=-N.z),c&&(_?(I[v]=Im.x,I[Q]=Im.y,I[z]=Im.z):(I[v]=N.x,I[Q]=N.y,I[z]=N.z))),t.bitangent&&(u&&(b[v+w]=L.x,b[Q+w]=L.y,b[z+w]=L.z),c&&(_?(b[v]=cx.x,b[Q]=cx.y,b[z]=cx.z):(b[v]=L.x,b[Q]=L.y,b[z]=L.z))),v+=3}}t.st&&!l(r)&&(n.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C})),t.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:b})),i&&(n.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:S}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===hn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let A=e.offsetAttribute===hn.NONE?0:1;h=h.fill(A)}n.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var gse=[];function UGe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let E=$n.createGeometryFromPositions(e,t,n,i,r,c,u),I=E.attributes.position.values,b=E.indices,S,B;if(s&&a){let v=I.concat(I);S=v.length/3,B=Fe.createTypedArray(S,b.length*2),B.set(b);let P=b.length,N=S/2;for(h=0;h<P;h+=3){let L=B[h]+N,p=B[h+1]+N,x=B[h+2]+N;B[h+P]=x,B[h+1+P]=p,B[h+2+P]=L}if(E.attributes.position.values=v,r&&c.normal){let L=E.attributes.normal.values;E.attributes.normal.values=new Float32Array(v.length),E.attributes.normal.values.set(L)}if(c.st&&l(n)){let L=E.attributes.st.values;E.attributes.st.values=new Float32Array(S*2),E.attributes.st.values=L.concat(L)}E.indices=B}else if(a){for(S=I.length/3,B=Fe.createTypedArray(S,b.length),h=0;h<b.length;h+=3)B[h]=b[h+2],B[h+1]=b[h+1],B[h+2]=b[h];E.indices=B}f.topAndBottom=new Rt({geometry:E})}let A=o.outerRing,g=xs.fromPoints(A,e),m=g.projectPointsOntoPlane(A,gse),_=xi.computeWindingOrder2D(m);_===Gs.CLOCKWISE&&(A=A.slice().reverse());let y=$n.computeWallGeometry(A,n,e,i,r,u);f.walls.push(new Rt({geometry:y}));let C=o.holes;for(h=0;h<C.length;h++){let E=C[h];m=g.projectPointsOntoPlane(E,gse),_=xi.computeWindingOrder2D(m),_===Gs.COUNTER_CLOCKWISE&&(E=E.slice().reverse()),y=$n.computeWallGeometry(E,n,e,i,r,u),f.walls.push(new Rt({geometry:y}))}return f}function Of(e){let t=e.polygonHierarchy,n=e.vertexFormat??Pe.DEFAULT,i=e.ellipsoid??te.default,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.stRotation??0,s=e.textureCoordinates,a=e.perPositionHeight??!1,c=a&&l(e.extrudedHeight),u=e.height??0,f=e.extrudedHeight??u;if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Pe.clone(n),this._ellipsoid=te.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=e.closeTop??!0,this._closeBottom=e.closeBottom??!0,this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=e.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=e.arcType??un.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+Pe.packedLength+(s?$n.computeHierarchyPackedLength(s,k):1)+12}Of.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new Of(t)};Of.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=e._offsetAttribute??-1,t[n++]=e._arcType,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var GGe=te.clone(te.UNIT_SPHERE),zGe=new Pe,VGe={polygonHierarchy:{}};Of.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,GGe);t+=te.packedLength;let r=Pe.unpack(e,t,zGe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,A=e[t++]===1,g=e[t++]===1,m=e[t++]===1,_=e[t++],y=e[t++],C=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(C)?(t=C.startingIndex,delete C.startingIndex):t++;let E=e[t++];return l(n)||(n=new Of(VGe)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=A,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=_===-1?void 0:_,n._arcType=y,n._textureCoordinates=C,n.packedLength=E,n};var HGe=new k,WGe=new k,jGe=new sl;function _se(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+D.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==un.RHUMB){let A=k.subtract(t.position,e.position,HGe),g=k.dot(t.position,A)/k.dot(A,A);if(g>0&&g<1){let m=k.add(t.position,k.multiplyByScalar(A,-g,A),WGe),_=sl.clone(t,jGe);_.position=m;let y=_.getLatitude(n);r.south=Math.min(r.south,y),r.north=Math.max(r.north,y),Math.abs(c)>Math.abs(y)&&(u=y)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=k.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var yse=new sl,YGe=new sl,Lf={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};Of.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,Lf.northAngle=0,Lf.southAngle=0,Lf.westOverIdl=Number.POSITIVE_INFINITY,Lf.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=sl.fromCartesian(e[0],YGe);for(let s=1;s<o;s++){let a=sl.fromCartesian(e[s],yse);_se(a,r,t,n,Lf,i),r=sl.clone(a,r)}return _se(sl.fromCartesian(e[0],yse),r,t,n,Lf,i),i.east-i.west>Lf.eastOverIdl-Lf.westOverIdl&&(i.west=Lf.westOverIdl,i.east=Lf.eastOverIdl,i.east>D.PI&&(i.east=i.east-D.TWO_PI),i.west>D.PI&&(i.west=i.west-D.TWO_PI)),D.equalsEpsilon(Math.abs(Lf.northAngle),D.TWO_PI,D.EPSILON10)&&(i.north=D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),D.equalsEpsilon(Math.abs(Lf.southAngle),D.TWO_PI,D.EPSILON10)&&(i.south=-D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),i};var qGe=new sl;function KGe(e,t,n){return e.height>=D.PI||e.width>=D.PI?sl.fromCartesian(t[0],qGe).tangentPlane:xs.fromPoints(t,n)}var Cse=new Ae;function XGe(e,t,n){return(i,o)=>{if(e.height>=D.PI||e.width>=D.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],Cse);o[s]=new k(a.longitude/D.PI,a.latitude/D.PI_OVER_TWO)}return o.length=i.length,o}return sl.fromCartesianArray(i,o)}return xs.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function JGe(e,t,n){if(e.height>=D.PI||e.width>=D.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,Cse);return l(r)||(r=new k),r.x=s.longitude/D.PI,r.y=s.latitude/D.PI_OVER_TWO,r}return sl.fromCartesian(o,r)};let i=xs.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function ZGe(e,t,n,i){return(o,r)=>!i&&(e.height>=D.PI_OVER_TWO||e.width>=2*D.PI_OVER_THREE)?$n.splitPolygonsOnEquator(o,t,n,r):o}function $Ge(e,t,n,i){if(t.height>=D.PI||t.width>=D.PI)return Xe.fromRectangle(t,void 0,Ase);let o=e,r=xs.fromPoints(o,n);return $n.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,Ase)}Of.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),A=r.positions;if(A.length<3)return;let g=e.rectangle,m=$n.polygonsFromHierarchy(r,h,XGe(g,A,n),!s,n,ZGe(g,n,u,s)),_=m.hierarchy,y=m.polygons,C=function(w){return w},E=h?$n.polygonsFromHierarchy(f,!0,C,!1,n).polygons:void 0;if(_.length===0)return;let I=_[0].outerRing,b=$Ge(I,g,n,o),S=[],B=e._height,v=e._extrudedHeight,P=e._perPositionHeightExtrude||!D.equalsEpsilon(B,v,0,D.EPSILON2),N={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:KGe(g,I,n).plane.normal,projectTo2d:JGe(g,I,n),boundingRectangle:b,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},L;if(P)for(N.extrude=!0,N.top=a,N.bottom=c,N.shadowVolume=e._shadowVolume,N.offsetAttribute=e._offsetAttribute,L=0;L<y.length;L++){let w=UGe(n,y[L],h?E[L]:void 0,i,_[L],s,a,c,t,u),M;a&&c?(M=w.topAndBottom,N.geometry=$n.scaleToGeodeticHeightExtruded(M.geometry,B,v,n,s)):a?(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,B,n,!s),N.geometry=M.geometry):c&&(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,v,n,!0),N.geometry=M.geometry),(a||c)&&(N.wall=!1,M.geometry=TW(N),S.push(M));let O=w.walls;N.wall=!0;for(let U=0;U<O.length;U++){let Q=O[U];N.geometry=$n.scaleToGeodeticHeightExtruded(Q.geometry,B,v,n,s),Q.geometry=TW(N),S.push(Q)}}else for(L=0;L<y.length;L++){let w=new Rt({geometry:$n.createGeometryFromPositions(n,y[L],h?E[L]:void 0,i,s,t,u)});if(w.geometry.attributes.position.values=xi.scaleToGeodeticHeight(w.geometry.attributes.position.values,B,n,!s),N.geometry=w.geometry,w.geometry=TW(N),l(e._offsetAttribute)){let M=w.geometry.attributes.position.values.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}S.push(w)}let p=jn.combineInstances(S)[0];p.attributes.position.values=new Float64Array(p.attributes.position.values),p.indices=Fe.createTypedArray(p.attributes.position.values.length/3,p.indices);let x=p.attributes,T=le.fromVertices(x.position.values);return t.position||delete x.position,new ht({attributes:x,indices:p.indices,primitiveType:p.primitiveType,boundingSphere:T,offsetAttribute:e._offsetAttribute})};Of.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Of({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function eze(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ht._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(Of.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=Of.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=eze(this)),this._textureCoordinateRotationPoints}}});var o_=Of;function jC(e){this._ellipsoid=e.ellipsoid??te.default,this._positions=[...e.positions]}Object.defineProperties(jC.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});jC.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new jC({positions:e.positions,ellipsoid:e.ellipsoid})};jC.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};jC.prototype.computeRectangle=function(e){return o_.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var tze=new ae,Ese=new d;jC.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(tze),n=Ae.toCartesian(ae.southwest(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=Ae.toCartesian(ae.northeast(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var AB=jC;function Ise(e){e=e??V.EMPTY_OBJECT,this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=e.persists??!1,this.pass=Be.COMPUTE,this.owner=e.owner}Ise.prototype.execute=function(e){e.execute(this)};var Hl=Ise;var oF=`in vec2 v_textureCoordinates; + +uniform int u_polygonsLength; +uniform int u_extentsLength; +uniform highp sampler2D u_polygonTexture; +uniform highp sampler2D u_extentsTexture; + +int getPolygonIndex(float dimension, vec2 coord) { + vec2 uv = coord.xy * dimension; + return int(floor(uv.y) * dimension + floor(uv.x)); +} + +vec2 getLookupUv(ivec2 dimensions, int i) { + int pixY = i / dimensions.x; + int pixX = i - (pixY * dimensions.x); + float pixelWidth = 1.0 / float(dimensions.x); + float pixelHeight = 1.0 / float(dimensions.y); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 getExtents(int i) { + return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i)); +} + +ivec2 getPositionsLengthAndExtentsIndex(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + vec4 value = texture(u_polygonTexture, uv); + return ivec2(int(value.x), int(value.y)); +} + +vec2 getPolygonPosition(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + return texture(u_polygonTexture, uv).xy; +} + +vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) { + float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y); + float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x); + return vec2(latitude, longitude); +} + +void main() { + int lastPolygonIndex = 0; + out_FragColor = vec4(1.0); + + // Get the relevant region of the texture + float dimension = float(u_extentsLength); + if (u_extentsLength > 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function fs(e){e=e??V.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new _e,this.polygonRemoved=new _e,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(fs.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});fs.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};fs.prototype.get=function(e){return this._polygons[e]};fs.prototype.contains=function(e){return this._polygons.some(t=>AB.equals(t,e))};fs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>AB.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var nze=new ae;function ize(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let A=0;A<t.length;++A){let g=t[A];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[A];h.push(...m),m.reduce((_,y)=>ae.union(e[y].computeSphericalExtents(nze),_,_),a),t[A]=void 0,n[A]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),A=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}fs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function oze(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=ize(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let A=u.positions[h],g=Math.hypot(A.x,A.y),m=D.fastApproximateAtan2(g,A.z),_=D.fastApproximateAtan2(A.x,A.y);t[s++]=m,t[s++]=_}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var SW=new k;fs.prototype.update=function(e){let t=e.context;if(!fs.isSupported(e))throw new ce("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=fs.getTextureResolution(i,this.pixelsNeededForPolygonPositions,SW);i=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RG,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=fs.getTextureResolution(o,this.pixelsNeededForExtents,SW);o=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(oze(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=fs.getClippingDistanceTextureResolution(this,SW);r=new Nt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?et.RED:et.LUMINANCE,pixelDatatype:He.FLOAT,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=rze(this)};fs.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function rze(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Hl({fragmentShaderSource:oF,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var xse=new ae,sze=new ae;fs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=nn.OUTSIDE;this.inverse&&(o=nn.INSIDE);for(let r=0;r<i;++r){let a=n[r].computeRectangle(),c=e.rectangle;if(!l(c)&&l(e.boundingVolume?.computeCorners)){let f=e.boundingVolume.computeCorners();c=ae.fromCartesianArray(f,t,xse)}l(c)||(c=ae.fromBoundingSphere(e.boundingSphere,t,xse));let u=ae.simpleIntersection(c,a,sze);l(u)&&(o=nn.INTERSECTING)}return o};fs.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};fs.isSupported=function(e){return e?.context.webgl2};fs.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=qt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};fs.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(qt.maximumTextureSize,4096),t.y=Math.min(qt.maximumTextureSize,4096),t)};fs.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):fs.getTextureResolution(n,e.pixelsNeededForExtents,t)};fs.prototype.isDestroyed=function(){return!1};fs.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var xm=fs;var pB={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};pB.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?pB.SUNLIGHT:pB.SCENE_LIGHT:pB.NONE};var r_=Object.freeze(pB);function bse(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=r_.NONE}bse.requiresColorCorrect=function(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))};var lx=bse;var bm=`uniform vec3 u_radiiAndDynamicAtmosphereColor; + +uniform float u_atmosphereLightIntensity; +uniform float u_atmosphereRayleighScaleHeight; +uniform float u_atmosphereMieScaleHeight; +uniform float u_atmosphereMieAnisotropy; +uniform vec3 u_atmosphereRayleighCoefficient; +uniform vec3 u_atmosphereMieCoefficient; + +const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. +const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. +const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + +/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + * @glslFunction + */ +void computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var rF=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var sF=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var aF=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var cF=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function ui(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??V.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(qt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new K;let n=Math.pow(2,t-1);this._textureDimensions=new k(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??ui.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(ui.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});ui._maximumComputeCommandCount=8;ui._activeComputeCommandCount=0;ui._nextFrameCommandQueue=[];ui._queueCommand=(e,t)=>{if(ui._activeComputeCommandCount>=ui._maximumComputeCommandCount){ui._nextFrameCommandQueue.push(e);return}t.commandList.push(e),ui._activeComputeCommandCount++};ui._updateCommandQueue=e=>{if(ui._maximumComputeCommandCount=Math.log2(qt.maximumCubeMapSize),ui._nextFrameCommandQueue.length>0&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount){let t=ui._nextFrameCommandQueue.shift();for(;l(t)&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=ui._nextFrameCommandQueue.shift();continue}e.commandList.push(t),ui._activeComputeCommandCount++,t=ui._nextFrameCommandQueue.shift()}l(t)&&ui._nextFrameCommandQueue.push(t)}};ui.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};ui.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var aze=new d,cze=new d;function lze(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,cze),s=1.025,a=aze,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Tse=new d,uze=new R,fze=new se,dze=new G;function hze(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new jr({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new We({sources:[bm,sF]}),e._radianceMapFS=o),lx.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=kt.eastNorthUpToFixedFrame(r,a,uze),u=fze;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of jr.faceNames()){let A=e._radianceMapTextures[f];l(A)&&!A.isDestroyed()&&A.destroy(),A=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),e._radianceMapTextures[f]=A;let g=f,m=new Hl({fragmentShaderSource:o,outputTexture:A,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>jr.getDirection(h,Tse),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,dze)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){ui._activeComputeCommandCount--;return}let _=e._radianceMapComputeCommands;_[g]=void 0;let y=new as({context:n,colorTextures:[e._radianceMapTextures[g]]});y._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),y._unBind(),y.destroy(),ui._activeComputeCommandCount--,_.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,ui._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function mze(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,A,g,m,_)=>()=>{if(e.isDestroyed()||h.canceled){ui._activeComputeCommandCount--;return}let y=e._convolutionComputeCommands;y[A]=void 0,n.copyFace(t,g,m,_),c++,ui._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[A]=void 0;let C=e._specularMapTextures.length;c>=C&&(e._irradianceCommandDirty=!0,n.sampler=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let A of jr.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Nt({context:a,width:r,height:s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),m=e._va;l(m)||(m=jr.createVertexArray(a,A),e._va=m);let _=e._convolveSP;l(_)||(_=ln.fromCache({context:a,vertexShaderSource:cF,fragmentShaderSource:aF,attributeLocations:{positions:0}}),e._convolveSP=_);let y=new Hl({shaderProgram:_,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>jr.getDirection(A,Tse)}});y.postExecute=u(y,f,g,A,h),e._convolutionComputeCommands[f]=y,ui._queueCommand(y,t),++f}r/=2,s/=2}}var Sse=new k(3,3);function Aze(e,t){let n=t.context,i=Sse,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.FLOAT,pixelFormat:et.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new We({sources:[rF]}),e._irradianceMapFS=r);let s=new Hl({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){ui._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,ui._activeComputeCommandCount--},e._irradianceComputeCommand=s,ui._queueCommand(s,t),e._irradianceTextureDirty=!0}function pze(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new as({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Sse,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}ui.prototype.update=function(e){let t=e.mode;if(!ui.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ie.MORPHING){this._shouldRegenerateShaders=!1;return}ui._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=lze(this,e)||i===r_.SUNLIGHT&&!K.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=K.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(hze(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(mze(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(Aze(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){pze(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};ui.prototype.isDestroyed=function(){return!1};ui.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};ui.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};ui.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(G.fromCssColorString("#717145"));ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var s_=ui;var gB={HIGHLIGHT:0,REPLACE:1,MIX:2};gB.getColorBlend=function(e,t){if(e===gB.HIGHLIGHT)return 0;if(e===gB.REPLACE)return 1;if(e===gB.MIX)return D.clamp(t,D.EPSILON4,1)};var al=Object.freeze(gB);var gze={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},cl=Object.freeze(gze);var _ze={STEP:0,LINEAR:1,CUBICSPLINE:2},Tm=Object.freeze(_ze);var wse={};function _B(e){this._count=e.count,this._properties=ze(e.properties,!0)}_B.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,wse)};_B.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,wse,e)};_B.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return ze(n[e],!0)};_B.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=ze(n,!0)};var a_=_B;function Bc(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(Bc.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});Bc.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};Bc.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};Bc.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};Bc.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var wW=[];Bc.prototype.getPropertyIds=function(e,t){if(t=l(t)?t:[],t.length=0,l(this._metadataTable)){let n=this._metadataTable.getPropertyIds(wW);si(t,n)}if(l(this._batchTableHierarchy)){let n=this._batchTableHierarchy.getPropertyIds(e,wW);si(t,n)}if(l(this._jsonMetadataTable)){let n=this._jsonMetadataTable.getPropertyIds(wW);si(t,n)}return t};Bc.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};Bc.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new a_({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};Bc.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};Bc.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};Bc.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};Bc.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};Bc.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Bc.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Bc.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var Wl=Bc;function yB(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=Du.createModelTextureReader({textureInfo:r,channels:Eze(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=a??n.offset,c=c??n.scale,a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(yB.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});yB.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(yt(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(yt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==gt.SCALAR?(yt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==zt.UINT8?(yt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:gt.isVectorType(t)||t===gt.SCALAR?n!==zt.UINT8?(yt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(yt(`Property texture property ${e.id} has an unsupported type`),!1)};var yze=[void 0,"float","vec2","vec3","vec4"],Cze=[void 0,"int","ivec2","ivec3","ivec4"];yB.prototype.getGlslType=function(){let e=this._classProperty,t=gt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?yze[t]:Cze[t]};yB.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function Eze(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var lF=yB;function BW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new lF({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(BW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});BW.prototype.getProperty=function(e){return this._properties[e]};var c_=BW;function Bse(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Bse.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var uF=Bse;function DW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new uF({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(DW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});DW.prototype.getProperty=function(e){return this._properties[e]};var ux=DW;function CB(e){e=e??V.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(CB.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});CB.prototype.getPropertyTable=function(e){return this._propertyTables[e]};CB.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};CB.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var Da=CB;function Ize(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new jd({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new Wl({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new c_({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new ux({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new Da({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var fF=Ize;function xze(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new jd({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new Wl({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new c_({id:a,propertyTexture:bze(c),class:n.classes[c.class],textures:e.textures}))}return new Da({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function bze(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:Tze(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=wt(o.texture,r,!0)}return t}function Tze(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var dF=xze;function l_(e){e=e??V.EMPTY_OBJECT;let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(l_.prototype=Object.create(qi.prototype),l_.prototype.constructor=l_);Object.defineProperties(l_.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function Sze(e){try{let t=Pze(e),n=Oze(e),i=Fze(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=dt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load structural metadata",t)}}l_.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Sze(this),this._promise)};function wze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Bze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Dze(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];wze(o.properties,n)}return n}function vze(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&Bze(r,n)}}return n}async function Pze(e){let t;l(e._extension)?t=Dze(e._extension):t=vze(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=Qi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function Rze(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&Mze(r,t)}return t}function Mze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function Nze(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&Lze(r,t)}}return t}function Lze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function Oze(e){let t;l(e._extension)?t=Rze(e._extension):t=Nze(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=Qi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function Fze(e){let t=e._extension??e._extensionLegacy,n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=Qi.getSchemaLoader({resource:i})}else n=Qi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}l_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=fF({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=dF({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),Dse(this),this._state=dt.READY,!0};function Dse(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function Qze(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}l_.prototype.unload=function(){Dse(this),Qze(this),l(this._schemaLoader)&&Qi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var hF=l_;var fx={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};fx.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return fx.TRANSLATION;case"ROTATION":return fx.ROTATION;case"SCALE":return fx.SCALE;case"_FEATURE_ID":return fx.FEATURE_ID}};var Ss=Object.freeze(fx);var kze=65534,Uze=255;function mF(e){e=e??V.EMPTY_OBJECT;let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Rse(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],Gze(this)}Object.defineProperties(mF.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function Gze(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,A=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),_=vse(i,c,u,f,A,g,m);for(;l(_);){let y=s[_];if(!l(y)){y=r+o.length;let C=_;for(;C>=r;)C=o[C-r];o.push(C),s[_]=y}y>kze&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):y>Uze&&t instanceof Uint8Array&&(t=new Uint16Array(t)),_===c?(c=y,t[a]=y):_===u?(u=y,t[a+1]=y):(f=y,t[a+2]=y),_=vse(i,c,u,f,A,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function vse(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=vW(e,t,a,c,u);if(f===0)return t;let h=0,A=o?1:0,g=r?1:0,m=vW(e,n,h,A,g);if(m===0)return n;let _=s?1:0,y=0,C=r?1:0,E=vW(e,i,_,y,C);if(E===0)return i;let I=f&m&E,b,S,B;if(I&1)b=0,S=1,B=2;else if(I&2)b=0,B=1,S=2;else if(I&4)S=0,b=1,B=2;else if(I&8)S=0,B=1,b=2;else if(I&16)B=0,b=1,S=2;else if(I&32)B=0,S=1,b=2;else{let L=PW(f),p=PW(m),x=PW(E);return L<p&&L<x?t:p<x?n:i}let v=t*3;e[v+b]=a,e[v+S]=c,e[v+B]=u;let P=n*3;e[P+b]=h,e[P+S]=A,e[P+B]=g;let N=i*3;e[N+b]=_,e[N+S]=y,e[N+B]=C}function vW(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function PW(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}mF.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};mF.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,qt.maximumTextureSize),i=n,o=Pse(i),r=[];for(;i>1;)i>>=1,r.push(Pse(i));let s=new Nt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:et.LUMINANCE,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function Pse(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Rse(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Rse.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var dx=mF;function Mse(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function zze(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function AF(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0,this.needsGaussianSplats=!1}AF.prototype.postProcess=function(e){this.needsOutlines&&(Vze(this),jze(this,e)),this.needsGaussianSplats&&Wze(this,e)};function Vze(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new dx({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Fe.fromTypedArray(n.typedArray);let r=Hze(o.outlineCoordinates),s=new Mse(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function Hze(e){let t=new bn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=q.FLOAT,t.type=Ht.VEC3,t.normalized=!1,t.count=e.length/3,t}function Wze(e,t){let n=e.attributePlans,i=n.length;for(let o=0;o<i;o++){let r=n[o];r.loadBuffer=!1,r.loadTypedArray=!0}}function jze(e,t){Yze(e.attributePlans,t),l(e.indicesPlan)&&qze(e.indicesPlan,t)}function Yze(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Et.createVertexBuffer({typedArray:s,context:t,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function qze(e,t){let n=e.indices;if(e.loadBuffer){let i=Et.createIndexBuffer({typedArray:n.typedArray,context:t,usage:Qe.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}AF.AttributeLoadPlan=Mse;AF.IndicesLoadPlan=zze;var hx=AF;function Kze(e){e=e??V.EMPTY_OBJECT,this.webp=e.webp??!1,this.basis=e.basis??!1}var pF=Kze;function Nse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Nse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var gF=Nse;function Lse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties(Lse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var _F=Lse;function Ose(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(Ose.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var yF=Ose;var Xze={Direct:"Direct",Indirect:"Indirect"},YC=Object.freeze(Xze);function Fse(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(Fse.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var EB=Fse;function Qse(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(Qse.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var CF=Qse;function mx(){}function kse(e){return new J(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function Jze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new gF({position:t,adjustmentParams:n})}function Zze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=kse(e.covarianceMatrix);return new _F({position:t,adjustmentParams:n,covarianceMatrix:i})}function $ze(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new CF({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new yF({groupFlags:t,rotationThetas:n,params:i})}mx.load=function(e){let t=e.storageType;if(t===YC.Direct)return mx.loadDirect(e);if(t===YC.Indirect)return mx.loadIndirect(e);throw new ce(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};mx.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=Jze(r);t.push(s)}let i=kse(e.covarianceDirectUpperTriangle);return new EB({storageType:YC.Direct,anchorPointsDirect:t,covarianceDirect:i})};mx.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=Zze(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=$ze(s);o.push(a)}return new EB({storageType:YC.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var EF=mx;function Use(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(Use.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var IF=Use;function Gse(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(Gse.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var xF=Gse;function zse(e){this._ppeTextures=e}Object.defineProperties(zse.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var bF=zse;function Mr(e){e=e??V.EMPTY_OBJECT;let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=e.asynchronous??!0;this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Mr.prototype=Object.create(qi.prototype),Mr.prototype.constructor=Mr);Object.defineProperties(Mr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});Mr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=dt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=dt.FAILED,this.getError("Failed to load GPM data",e)}};Mr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=this._loadResources(this),this._promise)};function eVe(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}Mr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=eVe(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=Qi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};Mr.ppeTexturesMetadataSchemaCache=new Map;Mr._createPpeTextureClassJson=function(e,t){let n=e.traits,i=n.source,o=e.offset??0,r=(e.scale??1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};Mr._obtainPpeTexturesMetadataSchema=function(e){let n=Mr._collectPpeTexturePropertyIdentifiers(e).toString(),i=Mr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${Mr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=Mr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=Mf.fromJson(r),Mr.ppeTexturesMetadataSchemaCache.set(n,i),i};Mr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=Mr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};Mr._convertToStructuralMetadata=function(e,t){let n=[],i=Mr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],A={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new c_({id:s,name:a.name,propertyTexture:A,class:h,textures:t}))}return new Da({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};Mr.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,A=new xF({min:h.min,max:h.max,source:h.source}),g=new IF({traits:A,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new bF(r);this._meshPrimitiveGpmLocal=a;let c=Mr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=dt.READY,!0};Mr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)Qi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};Mr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var TF=Mr;var{Attribute:tVe,Indices:nVe,FeatureIdAttribute:Vse,FeatureIdTexture:Hse,FeatureIdImplicitRange:Wse,MorphTarget:iVe,Primitive:oVe,Instances:rVe,Skin:sVe,Node:aVe,AnimatedPropertyType:cVe,AnimationSampler:lVe,AnimationTarget:uVe,AnimationChannel:fVe,Animation:dVe,ArticulationStage:hVe,Articulation:mVe,Asset:AVe,Scene:pVe,Components:gVe,MetallicRoughness:_Ve,SpecularGlossiness:yVe,Specular:CVe,Anisotropy:RW,Clearcoat:MW,Material:EVe}=bn,Go={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function Kd(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=Ao.Y,forwardAxis:a=Ao.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:A=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:_=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=_,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Go.NOT_LOADED,this._textureState=Go.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(Kd.prototype=Object.create(qi.prototype),Kd.prototype.constructor=Kd);Object.defineProperties(Kd.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function IVe(e){e._state=Go.LOADING,e._textureState=Go.LOADING;try{let t=Qi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Go.LOADED,e._textureState=Go.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Go.FAILED,e._textureState=Go.FAILED,SF(e,t)}}async function xVe(e,t){jt.supportsWebP.initialized||await jt.supportsWebP.initialize(),e._supportedImageFormats=new pF({webp:jt.supportsWebP(),basis:t.context.supportsBasis});let n=w8e(e,t);return e._state=Go.PROCESSING,e._textureState=Go.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(Qi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}Kd.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=IVe(this),this._promise)};function SF(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function bVe(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&yt("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Go.POST_PROCESSING)}function TVe(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),(o.needsOutlines||o.needsGaussianSplats)&&SVe(e,o)}}function SVe(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}Kd.prototype._process=function(e){return this._state===Go.READY?!0:(this._state===Go.PROCESSING&&bVe(this,e),this._resourcesLoaded&&this._state===Go.POST_PROCESSING&&(TVe(this,e.context),this._state=Go.PROCESSED),this._resourcesLoaded&&this._state===Go.PROCESSED?(eae(this),this._typedArray=void 0,this._state=Go.READY,!0):!1)};Kd.prototype._processTextures=function(e){if(this._textureState===Go.READY)return!0;if(this._textureState!==Go.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Go.READY,this._texturesLoaded=!0,!0):!1};Kd.prototype.process=function(e){if(this._state===Go.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=xVe(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Go.FAILED;let o=this._processError;this._processError=void 0,SF(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Go.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Go.FAILED,SF(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Go.FAILED,SF(this,o)}return this._incrementallyLoadTextures?n:n&&i};function wVe(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,h=u.accessors[t].bufferView;return Qi.getVertexBufferLoader({gltf:u,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function BVe(e,t,n,i,o,r,s){return Qi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function DVe(e,t){let n=Qi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function jse(e,t,n){let i=t.byteOffset,o=Bu(e,t),r=t.count,s=Rf(t.type),a=t.componentType,c=q.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),q.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=q.createTypedArray(a,f),A=new DataView(n.buffer),g=new Array(s),m=Kg(t.componentType);i=n.byteOffset+i;for(let _=0;_<r;++_){m(A,i,s,c,g);for(let y=0;y<s;++y)h[_*s+y]=g[y];i+=o}return h}function vVe(e,t){let n=e.type;if(n===Ht.SCALAR)return t.fill(0);let i=Ht.getMathType(n);return t.fill(i.clone(i.ZERO))}function PVe(e,t,n,i){let o=e.type,r=e.count;if(o===Ht.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===Ht.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=Ht.getMathType(o),a=Ht.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function RVe(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=jse(r,n,t.typedArray);i=i??!1,PVe(n,s,o,i)}function wF(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=DVe(e,o),s=RVe(e,r,t,n,i);return e._loaderPromises.push(s),i}return vVe(t,i)}function Pu(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function MVe(e){return e===Number?0:new e}function NVe(e){switch(e){case q.BYTE:return 127;case q.UNSIGNED_BYTE:return 255;case q.SHORT:return 32767;case q.UNSIGNED_SHORT:return 65535;default:return 1}}var LVe={VEC2:new k(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new se(-1,-1,-1,-1)};function OVe(e,t){let n=NVe(e.componentDatatype),i=LVe[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function FVe(e,t,n){let i=e.decodeMatrix,o=Pu(n,e.decodedMin),r=Pu(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new bn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new k(i[6],i[7]),s.quantizedVolumeStepSize=new k(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new se(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new se(i[0],i[6],i[12],i[18])),t.quantization=s}function QVe(e,t,n,i,o){let r=e.accessors[t],s=Ht.getMathType(r.type),a=r.normalized??!1,c=new tVe;c.name=n,c.semantic=i,c.setIndex=o,c.constant=MVe(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=Pu(s,r.min),c.max=Pu(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=Bu(e,r),Ii(r,"WEB3D_quantized_attributes")&&FVe(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===ct.POSITION||c.semantic===ct.NORMAL||c.semantic===ct.TANGENT||c.semantic===ct.TEXCOORD||c.semantic===ct.FEATURE_ID||c.semantic===ct.SCALE||c.semantic===ct.ROTATION;return e.extensionsRequired?.includes("KHR_mesh_quantization")&&a&&u&&OVe(c,s),c}function Yse(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var kVe={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function NW(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=kVe;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function UVe(e){let t=e===ct.POSITION,n=e===ct.FEATURE_ID,i=e===ct.TEXCOORD;return t||n||i}function GVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=q.createArrayBufferView(o,t.typedArray.buffer)}}function zVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,n&&(e.buffer=t.buffer),i&&l(t.typedArray)&&(e.typedArray=q.createArrayBufferView(e.componentDatatype,t.typedArray.buffer)),e.semantic===ct.POSITION){let o=s=>{let a=1/0,c=-1/0,u=1/0,f=-1/0,h=1/0,A=-1/0;for(let g=0;g<s.length;g+=3){let m=s[g],_=s[g+1],y=s[g+2];a=Math.min(a,m),c=Math.max(c,m),u=Math.min(u,_),f=Math.max(f,_),h=Math.min(h,y),A=Math.max(A,y)}return[new d(a,u,h),new d(c,f,A)]},r=e.typedArray;[e.min,e.max]=o(r)}}function VVe(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=jse(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function qse(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,f=u.accessors[t],h=f.bufferView,A=n.gltfSemantic,g=n.renamedSemantic,m=n.modelSemantic,_=l(m)?Yse(g):void 0,C=QVe(u,t,A,m,_);if(!l(o)&&!l(h)&&!l(r))return C;let E=wVe(e,t,A,i,o,r,s,a,c),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();return e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[A])?GVe(C,E,s,a):l(r)?zVe(C,E,s,a):VVe(u,f,C,E,s,a)},C}function Kse(e,t,n,i,o,r,s,a,c){let u=n.modelSemantic,f=u===ct.POSITION,h=u===ct.FEATURE_ID,A=f&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=f&&e._enablePick&&!c.context.webgl2,m=e._loadForClassification&&h,_=e._loadAttributesAsTypedArray,y=!_,C=_||A||g||m,b=qse(e,t,n,i,o,r,a?!1:y,a?!0:C,c),S=new hx.AttributeLoadPlan(b);return S.loadBuffer=y,S.loadTypedArray=C,S}function HVe(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=NW(e,Ss,i),u=c.modelSemantic,f=u===Ss.TRANSLATION||u===Ss.ROTATION||u===Ss.SCALE,h=u===Ss.TRANSLATION,A=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!A,_=e._loadAttributesFor2D&&!o.scene3DOnly;return qse(e,t,c,void 0,void 0,void 0,m,A||h&&(!a||_||g),o)}function WVe(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new nVe;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,A=e._loadForClassification&&o,m=!f,_=f||h||A,E=BVe(e,t,n,i,r?!1:m,r?!0:_,s),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{u.indexDatatype=E.indexDatatype,u.buffer=E.buffer,u.typedArray=E.typedArray};let S=new hx.IndicesLoadPlan(u);return S.loadBuffer=m,S.loadTypedArray=_,S}function ll(e,t,n,i){let o=e.gltfJson,r=Du.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Qi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=Du.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Go.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function jVe(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new yVe;return l(i)&&(c.diffuseTexture=ll(e,i,n)),l(o)&&(c.specularGlossinessTexture=ll(e,o,n)),c.diffuseFactor=Pu(se,r),c.specularFactor=Pu(d,s),c.glossinessFactor=a,c}function YVe(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new _Ve;return l(i)&&(c.baseColorTexture=ll(e,i,n)),l(o)&&(c.metallicRoughnessTexture=ll(e,o,n)),c.baseColorFactor=Pu(se,r),c.metallicFactor=s,c.roughnessFactor=a,c}function qVe(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new CVe;return l(o)&&(a.specularTexture=ll(e,o,n)),l(s)&&(a.specularColorTexture=ll(e,s,n)),a.specularFactor=i,a.specularColorFactor=Pu(d,r),a}function KVe(e,t,n){let{anisotropyStrength:i=RW.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=RW.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new RW;return l(r)&&(s.anisotropyTexture=ll(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function XVe(e,t,n){let{clearcoatFactor:i=MW.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=MW.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new MW;return l(o)&&(c.clearcoatTexture=ll(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=ll(e,s,n)),l(a)&&(c.clearcoatNormalTexture=ll(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function JVe(e,t,n){let i=new EVe,o=t.extensions??V.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=jVe(e,r,n):(l(u)&&(i.metallicRoughness=YVe(e,u,n)),l(s)&&!i.unlit&&(i.specular=qVe(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=KVe(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=XVe(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=ll(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=ll(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=ll(e,t.occlusionTexture,n)),i.emissiveFactor=Pu(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Xse(e,t){let n=new Vse;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Jse(e,t,n,i){let o=new Vse,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=Yse(r.attribute),o.positionalLabel=i,o}function Zse(e,t){let n=new Wse;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function $se(e,t,n,i){let o=new Wse,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function ZVe(e,t,n,i){let o=new Hse;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=ll(e,r,n,on.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function $Ve(e,t,n,i,o,r){let s=new Hse,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=ll(e,c,i,on.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function e8e(e,t,n,i,o){let r=new iVe,s=void 0,a=void 0,c=void 0,u=!1;for(let f in t){if(!t.hasOwnProperty(f))continue;let h=t[f],A=NW(e,ct,f),g=Kse(e,h,A,s,a,c,u,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function t8e(e,t,n,i){let o=new oVe,r=new hx(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=JVe(e,e.gltfJson.materials[s],i));let a=t.extensions??V.EMPTY_OBJECT,c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=n8e(e,u,r));let f=a.KHR_spz_gaussian_splats_compression;l(f)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,A=a.KHR_draco_mesh_compression,g=!1,m=t.attributes;if(l(m))for(let B in m){if(!m.hasOwnProperty(B))continue;let v=m[B],P=NW(e,ct,B),N=P.modelSemantic;if(h&&!UVe(N))continue;N===ct.FEATURE_ID&&(g=!0);let L=Kse(e,v,P,t,A,f,n,c,i);r.attributePlans.push(L),o.attributes.push(L.attribute)}let _=t.targets;if(l(_)&&!h)for(let B=0;B<_.length;++B)o.morphTargets.push(e8e(e,_[B],c,r,i));let y=t.indices;if(l(y)){let B=WVe(e,y,t,A,g,c,i);l(B)&&(r.indicesPlan=B,o.indices=B.indices)}let C=a.EXT_structural_metadata,E=a.EXT_mesh_features,I=a.EXT_feature_metadata,b=l(I);l(E)?i8e(e,o,E,i):b&&o8e(e,o,I,i),l(C)?r8e(o,C):b&&s8e(e,o,I);let S=t.mode;if(h&&S!==Me.TRIANGLES)throw new ce("Only triangle meshes can be used for classification.");return o.primitiveType=S,o}function n8e(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return wF(e,i,!1)}function i8e(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=ZVe(e,s,i,a):l(s.attribute)?c=Xse(s,a):c=Zse(s,a),t.featureIds.push(c)}}function o8e(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Jse(u,h,A,g):m=$se(u,h,A,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m=$Ve(e,u,h,i,A,g);t.featureIds.push(m)}}function r8e(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function s8e(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function a8e(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new rVe,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(HVe(e,f,r,u,n))}let s=i.extensions??V.EMPTY_OBJECT,a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?c8e(o,a):l(c)&&l8e(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function c8e(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=Xse(o,r):s=Zse(o,r),e.featureIds.push(s)}}function l8e(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,A;l(a.featureIds.attribute)?A=Jse(a,u,f,h):A=$se(a,u,f,h),t.featureIds.push(A)}}function u8e(e,t,n){let i=new aVe;i.name=t.name,i.matrix=Pu(R,t.matrix),i.translation=Pu(d,t.translation),i.rotation=Pu(Le,t.rotation),i.scale=Pu(d,t.scale);let o=t.extensions??V.EMPTY_OBJECT,r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new ce("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=a8e(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let A=0;A<u.length;++A)i.primitives.push(t8e(e,u[A],l(i.instances),n));let f=t.weights??c.weights,h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function f8e(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=u8e(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function d8e(e,t,n){let i=new sVe,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=wF(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(R.IDENTITY);return i}function h8e(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=d8e(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function m8e(e,t,n,i){let o=new hF({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function A8e(e,t,n,i){let o=new TF({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function p8e(e,t){let n=new lVe,i=e.gltfJson.accessors,o=i[t.input];n.input=wF(e,o);let r=t.interpolation;n.interpolation=Tm[r]??Tm.LINEAR;let s=i[t.output];return n.output=wF(e,s,!0),n}function g8e(e,t){let n=new uVe,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=cVe[o],n}function _8e(e,t,n){let i=new fVe,o=e.sampler;return i.sampler=t[o],i.target=g8e(e.target,n),i}function y8e(e,t,n){let i=new dVe;i.name=t.name;let o=t.samplers.map(function(s,a){let c=p8e(e,s);return c.index=a,c}),r=t.channels.map(function(s){return _8e(s,o,n)});return i.samplers=o,i.channels=r,i}function C8e(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=y8e(e,o,t);return s.index=r,s})}function E8e(e){let t=new hVe;t.name=e.name;let n=e.type.toUpperCase();return t.type=cl[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function I8e(e){let t=new mVe;return t.name=e.name,t.stages=e.stages.map(E8e),t}function x8e(e){let n=(e.extensions??V.EMPTY_OBJECT).AGI_articulations?.articulations;return l(n)?n.map(I8e):[]}function b8e(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=t??e.nodes,t=l(t)?t:[],t}function T8e(e,t){let n=new pVe,i=b8e(e);return n.nodes=i.map(function(o){return t[o]}),n}var S8e=new d;function w8e(e,t){let n=e.gltfJson,i=n.extensions??V.EMPTY_OBJECT,o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let E=r.featureTables,I=r.featureTextures,b=l(E)?E:[],S=l(I)?I:[];e._sortedPropertyTableIds=Object.keys(b).sort(),e._sortedFeatureTextureIds=Object.keys(S).sort()}let a=f8e(e,t),c=h8e(e,a),u=C8e(e,a),f=x8e(n),h=T8e(n,a),A=new gVe,g=new AVe,m=n.asset.copyright;if(l(m)){let E=m.split(";").map(function(I){return new Dt(I.trim())});g.credits=E}if(A.asset=g,A.scene=h,A.nodes=a,A.skins=c,A.animations=u,A.articulations=f,A.upAxis=e._upAxis,A.forwardAxis=e._forwardAxis,l(s)){let E=d.fromArray(s.center,0,S8e);A.transform=R.fromTranslation(E,A.transform)}if(e._components=A,l(o)||l(r)){let E=m8e(e,o,r,t);e._loaderPromises.push(E)}let _=i.NGA_gpm_local;if(l(_)){let E=EF.load(_);e._components.extensions.NGA_gpm_local=E}let y=n.meshes;if(l(y))for(let E of y){let I=E.primitives;if(l(I))for(let b of I){let S=b.extensions;if(l(S)){let B=S.NGA_gpm_local;if(l(B)){let v=A8e(e,n,B,t);e._loaderPromises.push(v)}}}}let C=[];return si(C,e._loaderPromises),e._incrementallyLoadTextures||si(C,e._texturesPromises),Promise.all(C)}function B8e(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._textureLoaders.length=0}function eae(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._bufferViewLoaders.length=0}function D8e(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._geometryLoaders.length=0}function v8e(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function P8e(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function R8e(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}Kd.prototype.isUnloaded=function(){return this._state===Go.UNLOADED};Kd.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&Qi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,B8e(this),eae(this),D8e(this),v8e(this),P8e(this),R8e(this),this._components=void 0,this._typedArray=void 0,this._state=Go.UNLOADED};var Ff=Kd;function Ax(e){e=e??V.EMPTY_OBJECT;let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new me("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new me("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new as({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new as({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}Ax.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};Ax.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};Ax.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};Ax.prototype.isDestroyed=function(){return!1};Ax.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var BF=Ax;var jl={RGBA4:ee.RGBA4,RGBA8:ee.RGBA8,RGBA16F:ee.RGBA16F,RGBA32F:ee.RGBA32F,RGB5_A1:ee.RGB5_A1,RGB565:ee.RGB565,DEPTH_COMPONENT16:ee.DEPTH_COMPONENT16,STENCIL_INDEX8:ee.STENCIL_INDEX8,DEPTH_STENCIL:ee.DEPTH_STENCIL,DEPTH24_STENCIL8:ee.DEPTH24_STENCIL8,validate:function(e){return e===jl.RGBA4||e===jl.RGBA8||e===jl.RGBA16F||e===jl.RGBA32F||e===jl.RGB5_A1||e===jl.RGB565||e===jl.DEPTH_COMPONENT16||e===jl.STENCIL_INDEX8||e===jl.DEPTH_STENCIL||e===jl.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ee.FLOAT?jl.RGBA32F:e===ee.HALF_FLOAT_OES?jl.RGBA16F:jl.RGBA8}},Yl=Object.freeze(jl);function IB(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=qt.maximumRenderbufferSize,o=e.format??Yl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(IB.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});IB.prototype._getRenderbuffer=function(){return this._renderbuffer};IB.prototype.isDestroyed=function(){return!1};IB.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var Qf=IB;function Hs(e){e=e??V.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Hs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Hs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Hs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??He.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??et.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Nt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:on.NEAREST}),this._numSamples>1){let a=Yl.getColorFormat(o);this._colorRenderbuffers[s]=new Qf({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_COMPONENT,pixelDatatype:He.UNSIGNED_INT,sampler:on.NEAREST}):this._depthRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new BF({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new as({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Hs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};Hs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Hs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};Hs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Hs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Hs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Hs.prototype.getDepthTexture=function(){return this._depthTexture};Hs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Hs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Hs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Hs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Hs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Hs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Hs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Hs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Hs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var vi=Hs;var DF=`uniform sampler2D u_pointCloud_colorGBuffer; +uniform sampler2D u_pointCloud_depthGBuffer; +uniform vec2 u_distanceAndEdlStrength; +in vec2 v_textureCoordinates; + +vec2 neighborContribution(float log2Depth, vec2 offset) +{ + float dist = u_distanceAndEdlStrength.x; + vec2 texCoordOrig = v_textureCoordinates + offset * dist; + vec2 texCoord0 = v_textureCoordinates + offset * floor(dist); + vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist); + + float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0)); + float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1)); + + // ignore depth values that are the clear depth + if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) { + return vec2(0.0); + } + + // interpolate the two adjacent depth values + float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix); + return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0); +} + +void main() +{ + float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates)); + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth); + eyeCoordinate /= eyeCoordinate.w; + + float log2Depth = log2(-eyeCoordinate.z); + + if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer + { + discard; + } + + vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates); + + // sample from neighbors left, right, down, up + vec2 texelSize = 1.0 / czm_viewport.zw; + + vec2 responseAndCount = vec2(0.0); + + responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y)); + + float response = responseAndCount.x / responseAndCount.y; + float strength = u_distanceAndEdlStrength.y; + float shade = exp(-response * 300.0 * strength); + color.rgb *= shade; + out_FragColor = vec4(color); + + // Input and output depth are the same. + gl_FragDepth = depthOrLogDepth; +} +`;function px(){this._framebuffer=new vi({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(px.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function M8e(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var LW=new k;function N8e(e,t){let n=new We({defines:["LOG_DEPTH_WRITE"],sources:[DF]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return LW.x=e._radius,LW.y=e._strength,LW}},o=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:Be.CESIUM_3D_TILE,owner:e}),e._clearCommand=new Ei({framebuffer:e.framebuffer,color:new G(0,0,0,0),depth:1,renderState:Ue.fromCache(),pass:Be.CESIUM_3D_TILE,owner:e})}function L8e(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),N8e(e,t)}function tae(e){return e.drawBuffers&&e.fragmentDepth}px.isSupported=tae;function O8e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=We.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main() +{ + czm_point_cloud_post_process_main(); +#ifdef LOG_DEPTH + czm_writeLogDepth(); + out_FragData_1 = czm_packDepth(gl_FragDepth); +#else + out_FragData_1 = czm_packDepth(gl_FragCoord.z); +#endif +}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}px.prototype.update=function(e,t,n,i){if(!tae(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,L8e(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Me.POINTS||u.pass===Be.TRANSLUCENT)continue;let f,h,A=u.derivedCommands.pointCloudProcessor;l(A)&&(f=A.command,h=A.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=nt.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=O8e(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(A)||(A={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=A),A.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};px.prototype.isDestroyed=function(){return!1};px.prototype.destroy=function(){return M8e(this),ue(this)};var u_=px;function nae(e){let t=e??{};this.attenuation=t.attenuation??!1,this.geometricErrorScale=t.geometricErrorScale??1,this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=t.eyeDomeLighting??!0,this.eyeDomeLightingStrength=t.eyeDomeLightingStrength??1,this.eyeDomeLightingRadius=t.eyeDomeLightingRadius??1,this.backFaceCulling=t.backFaceCulling??!1,this.normalShading=t.normalShading??!0}nae.isSupported=function(e){return u_.isSupported(e.context)};var op=nae;var ec={},F8e=new se(0,0,0,1),Dc=new se,Q8e=new Xe,OW=new k,FW=new k;ec.worldToWindowCoordinates=function(e,t,n){return ec.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var iae=new se,oae=new d;function xB(e,t,n,i){let o=n.viewMatrix,r=R.multiplyByVector(o,se.fromElements(e.x,e.y,e.z,1,iae),iae),s=d.multiplyComponents(t,d.normalize(r,oae),oae);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,R.multiplyByVector(n.frustum.projectionMatrix,r,i)}var k8e=new Ae(Math.PI,D.PI_OVER_TWO),U8e=new d,G8e=new d;ec.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=ec.computeActualEllipsoidPosition(o,t,F8e);if(!l(r))return;let s=e.canvas,a=Q8e;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ie.SCENE2D){let f=e.mapProjection,h=k8e,A=f.project(h,U8e),g=d.clone(c.position,G8e),m=c.frustum.clone(),_=R.computeViewportTransformation(a,0,1,new R),y=c.frustum.projectionMatrix,C=c.positionWC.y,E=d.fromElements(D.sign(C)*A.x-C,0,-c.positionWC.x),I=kt.pointToGLWindowCoordinates(y,_,E);if(C===0||I.x<=0||I.x>=s.clientWidth)u=!0;else{if(I.x>s.clientWidth*.5){a.width=I.x,c.frustum.right=A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x+=I.x,c.position.x=-c.position.x;let b=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}else{a.x+=I.x,a.width-=I.x,c.frustum.left=-A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x=a.x-a.width,c.position.x=-c.position.x;let b=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}d.clone(g,c.position),c.frustum=m.clone(),i=k.clone(OW,i),(i.x<0||i.x>s.clientWidth)&&(i.x=FW.x)}}if(o.mode!==ie.SCENE2D||u){if(Dc=xB(r,n,c,Dc),Dc.z<0&&!(c.frustum instanceof An)&&!(c.frustum instanceof ls))return;i=ec.clipToGLWindowCoordinates(a,Dc,i)}return i.y=s.clientHeight-i.y,i};ec.worldToDrawingBufferCoordinates=function(e,t,n){if(n=ec.worldToWindowCoordinates(e,t,n),!!l(n))return ec.transformWindowToDrawingBuffer(e,n,n)};var rp=new d,z8e=new Ae;ec.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ie.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,z8e);if(!l(r))return;if(o.project(r,rp),i===ie.COLUMBUS_VIEW)return d.fromElements(rp.z,rp.x,rp.y,n);if(i===ie.SCENE2D)return d.fromElements(0,rp.x,rp.y,n);let s=e.morphTime;return d.fromElements(D.lerp(rp.z,t.x,s),D.lerp(rp.x,t.y,s),D.lerp(rp.y,t.z,s),n)};var rae=new d,sae=new d,aae=new R;ec.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,rae),R.computeViewportTransformation(e,0,1,aae),R.multiplyByPoint(aae,rae,sae),k.fromCartesian3(sae,n)};ec.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return k.fromElements(t.x*o,t.y*r,n)};var V8e=new se,cae=new se;ec.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=se.clone(se.UNIT_W,V8e);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,A=e.camera.frustum;if(l(A.fovy)){h=R.multiplyByVector(r.inverseViewProjection,f,cae);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=A.offCenterFrustum;l(g)&&(A=g),h=cae,h.x=(f.x*(A.right-A.left)+A.left+A.right)*.5,h.y=(f.y*(A.top-A.bottom)+A.bottom+A.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=R.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var to=ec;var gx={};gx._deprecationWarning=Pr;var sp=Uint32Array.BYTES_PER_ELEMENT;gx.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=sp;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=sp;let s=o.getUint32(t,!0);t+=sp;let a=o.getUint32(t,!0);t+=sp;let c=o.getUint32(t,!0);t+=sp;let u=o.getUint32(t,!0);t+=sp;let f=o.getUint32(t,!0);t+=sp;let h;u>=570425344?(t-=sp*2,h=a,u=c,f=0,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=sp,h=u,u=a,f=c,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let A;a===0?A={BATCH_LENGTH:h??0}:(A=yr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(gx._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{batchLength:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var vF=gx;function bB(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function lae(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=q.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function H8e(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=q.createTypedArray(n,i),o[t]=r),r}bB.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??q.UNSIGNED_INT,n=n??1,lae(this,e,t,n,1,i.byteOffset)):i};bB.prototype.hasProperty=function(e){return l(this.json[e])};bB.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=q.fromName(i.componentType)),lae(this,e,t,n,this.featuresLength,i.byteOffset)):H8e(this,e,t,i)};bB.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var Sm=bB;function TB(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=e.parseAsPropertyAttributes??!1,r=e.customAttributeOutput,s=W8e(n),a;l(s.jsonProperties)&&(a=new a_({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new VI({extension:s.hierarchy,binaryBody:i}));let u=Em.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,A,g;if(o){let y=Y8e(t,u,f,i,r);g=y.transcodedSchema,A=[new ux({propertyAttribute:y.propertyAttributeJson,class:y.transcodedClass})]}else{let y=j8e(t,u,f,i);g=y.transcodedSchema;let C=y.featureTableJson;h=new jd({count:C.count,properties:C.properties,class:y.transcodedClass,bufferViews:y.bufferViewsTypedArrays}),A=[]}let m=[];if(l(h)||l(a)||l(c)){let y=new Wl({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(y)}let _={schema:g,propertyTables:m,propertyAttributes:A,extensions:s.extensions,extras:s.extras};return new Da(_)}function W8e(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(TB._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function j8e(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new ce(`Property ${h} requires a batch table binary.`);let A=n[h],g=vf(A);r[h]={bufferView:a},o[h]=uae(A),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=Mf.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function Y8e(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let A=n[h];if(!l(i)&&!l(A.typedArray))throw new ce(`Property ${h} requires a batch table binary.`);let g=Qt.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=uae(A);m.name=h,r[g]=m;let _=g.toUpperCase();_.startsWith("_")||(_=`_${_}`);let y=A.typedArray;l(y)||(y=vf(A).createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e));let C=new bn.Attribute;C.name=_,C.count=e,C.type=A.type;let E=q.fromTypedArray(y);(E===q.INT||E===q.UNSIGNED_INT||E===q.DOUBLE)&&(TB._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${_}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),y=new Float32Array(y)),C.componentDatatype=q.fromTypedArray(y),C.typedArray=y,o.push(C),s[g]={attribute:_}}let c={classes:{}};c.classes[t]={properties:r};let u=Mf.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function uae(e){let t=q8e(e.componentType);return{type:e.type,componentType:t}}function q8e(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}TB._deprecationWarning=Pr;TB._oneTimeWarning=yt;var f_=TB;var qC={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},K8e=bn.FeatureIdAttribute;function d_(e){e=e??V.EMPTY_OBJECT;let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadAttributesFor2D??!1,A=e.enablePick??!1,g=e.loadIndicesForWireframe??!1,m=e.loadPrimitiveOutline??!0,_=e.loadForClassification??!1;n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=A,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=_,this._state=qC.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(d_.prototype=Object.create(qi.prototype),d_.prototype.constructor=d_);Object.defineProperties(d_.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});d_.prototype.load=function(){if(l(this._promise))return this._promise;let e=vF.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new Sm(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(a)&&(this._transform=R.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new Ff({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=qC.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=qC.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return X8e(u,f)}),this._promise};function X8e(e,t){return e.unload(),e._state=qC.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}d_.prototype.process=function(e){if(this._state===qC.READY)return!0;if(this._state!==qC.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=R.multiplyTransformation(this._transform,n.transform,n.transform),J8e(this,n),this._components=n,this._arrayBuffer=void 0,this._state=qC.READY,!0};function J8e(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)fae(r[a]);t.structuralMetadata=o}function fae(e){let t=e.children.length;for(let i=0;i<t;i++)fae(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Qt.getAttributeBySemantic(o,ct.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new K8e;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}d_.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var PF=d_;function h_(e){e=e??V.EMPTY_OBJECT,this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(h_.prototype=Object.create(qi.prototype),h_.prototype.constructor=h_);Object.defineProperties(h_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});h_.prototype.load=function(){return Promise.resolve(this)};h_.prototype.process=function(e){return l(this._components)||(this._components=u4e(this._geoJson,e),this._geoJson=void 0),!0};function Z8e(){this.lines=void 0,this.points=void 0,this.properties=void 0}function $8e(){this.features=[]}function QW(e){let t=e[0],n=e[1],i=e[2]??0;return new d(t,n,i)}function kW(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=QW(e[o]);return[n]}function e4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function dae(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function t4e(e){let t=e.length,n=[];for(let i=0;i<t;i++){let o=dae(e[i]);si(n,o)}return n}function n4e(e){return[QW(e)]}function i4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=QW(e[i]);return n}var o4e={LineString:kW,MultiLineString:e4e,MultiPolygon:t4e,Polygon:dae,MultiPoint:i4e,Point:n4e},r4e={LineString:Me.LINES,MultiLineString:Me.LINES,MultiPolygon:Me.LINES,Polygon:Me.LINES,MultiPoint:Me.POINTS,Point:Me.POINTS};function hae(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=o4e[n],o=r4e[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new Z8e;o===Me.LINES?s.lines=i(r):o===Me.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function s4e(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)hae(n[o],t)}var a4e={FeatureCollection:s4e,Feature:hae},RF=new d;function c4e(e,t,n){let i=0,o=0,r=e.length;for(let N=0;N<r;N++){let L=e[N];if(l(L.lines)){let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x];i+=T.length,o+=(T.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Fe.createTypedArray(i,o),u=Fe.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),A=0,g=0;for(let N=0;N<r;N++){let L=e[N];if(!l(L.lines))continue;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++){let O=T[M],U=d.fromDegrees(O.x,O.y,O.z,te.WGS84,RF),Q=R.multiplyByPoint(t,U,RF);d.minimumByComponent(f,Q,f),d.maximumByComponent(h,Q,h),d.pack(Q,s,A*3),a[A]=N,M<w-1&&(c[g*2]=A,c[g*2+1]=A+1,g++),A++}}}let m=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});m.vertexArrayDestroyable=!1;let _=Et.createVertexBuffer({typedArray:a,context:n.context,usage:Qe.STATIC_DRAW});_.vertexArrayDestroyable=!1;let y=Et.createIndexBuffer({typedArray:c,context:n.context,usage:Qe.STATIC_DRAW,indexDatatype:u});y.vertexArrayDestroyable=!1;let C=new bn.Attribute;C.semantic=ct.POSITION,C.componentDatatype=q.FLOAT,C.type=Ht.VEC3,C.count=i,C.min=f,C.max=h,C.buffer=m;let E=new bn.Attribute;E.semantic=ct.FEATURE_ID,E.setIndex=0,E.componentDatatype=q.FLOAT,E.type=Ht.SCALAR,E.count=i,E.buffer=_;let I=[C,E],b=new bn.Material;b.unlit=!0;let S=new bn.Indices;S.indexDatatype=u,S.count=c.length,S.buffer=y;let B=new bn.FeatureIdAttribute;B.featureCount=r,B.propertyTableId=0,B.setIndex=0,B.positionalLabel="featureId_0";let v=[B],P=new bn.Primitive;return P.attributes=I,P.indices=S,P.featureIds=v,P.primitiveType=Me.LINES,P.material=b,P}function l4e(e,t,n){let i=0,o=e.length;for(let I=0;I<o;I++){let b=e[I];l(b.points)&&(i+=b.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let I=0;I<o;I++){let b=e[I];if(!l(b.points))continue;let S=b.points.length;for(let B=0;B<S;B++){let v=b.points[B],P=d.fromDegrees(v.x,v.y,v.z,te.WGS84,RF),N=R.multiplyByPoint(t,P,RF);d.minimumByComponent(a,N,a),d.maximumByComponent(c,N,c),d.pack(N,r,u*3),s[u]=I,u++}}let f=Et.createVertexBuffer({typedArray:r,context:n.context,usage:Qe.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});h.vertexArrayDestroyable=!1;let A=new bn.Attribute;A.semantic=ct.POSITION,A.componentDatatype=q.FLOAT,A.type=Ht.VEC3,A.count=i,A.min=a,A.max=c,A.buffer=f;let g=new bn.Attribute;g.semantic=ct.FEATURE_ID,g.setIndex=0,g.componentDatatype=q.FLOAT,g.type=Ht.SCALAR,g.count=i,g.buffer=h;let m=[A,g],_=new bn.Material;_.unlit=!0;let y=new bn.FeatureIdAttribute;y.featureCount=o,y.propertyTableId=0,y.setIndex=0,y.positionalLabel="featureId_0";let C=[y],E=new bn.Primitive;return E.attributes=m,E.featureIds=C,E.primitiveType=Me.POINTS,E.material=_,E}function u4e(e,t){let n=new $8e,i=a4e[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new ce("GeoJSON must have at least one feature");let s={};for(let N=0;N<r;N++){let p=o[N].properties??V.EMPTY_OBJECT;for(let x in p)p.hasOwnProperty(x)&&(l(s[x])||(s[x]=new Array(r)))}for(let N=0;N<r;N++){let L=o[N];for(let p in s)if(s.hasOwnProperty(p)){let x=L.properties[p]??"";s[p][N]=x}}let a=new a_({count:r,properties:s}),u=[new Wl({id:0,count:r,jsonMetadataTable:a})],f=Mf.fromJson({}),h=new Da({schema:f,propertyTables:u}),A=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,_=!1;for(let N=0;N<r;N++){let L=o[N];if(l(L.lines)){m=!0;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++)d.minimumByComponent(A,T[M],A),d.maximumByComponent(g,T[M],g)}}if(l(L.points)){_=!0;let p=L.points.length;for(let x=0;x<p;x++){let T=L.points[x];d.minimumByComponent(A,T,A),d.maximumByComponent(g,T,g)}}}let y=d.midpoint(A,g,new d),C=d.fromDegrees(y.x,y.y,y.z,te.WGS84,new d),E=kt.eastNorthUpToFixedFrame(C,te.WGS84,new R),I=R.inverseTransformation(E,new R),b=[];m&&b.push(c4e(o,I,t)),_&&b.push(l4e(o,I,t));let S=new bn.Node;S.index=0,S.primitives=b;let B=[S],v=new bn.Scene;v.nodes=B;let P=new bn.Components;return P.scene=v,P.nodes=B,P.transform=E,P.structuralMetadata=h,P}h_.prototype.unload=function(){this._components=void 0};var MF=h_;var NF={};NF._deprecationWarning=Pr;var m_=Uint32Array.BYTES_PER_ELEMENT;NF.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=m_;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=m_;let s=o.getUint32(t,!0);t+=m_;let a=o.getUint32(t,!0);if(a===0)throw new ce("featureTableJsonByteLength is zero, the feature table must be defined.");t+=m_;let c=o.getUint32(t,!0);t+=m_;let u=o.getUint32(t,!0);t+=m_;let f=o.getUint32(t,!0);t+=m_;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new ce(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=m_;let A=yr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(NF._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{gltfFormat:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var LF=NF;var ap={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},OF=bn.Attribute,f4e=bn.FeatureIdAttribute,Aae=bn.Instances;function cp(e){e=e??V.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,A=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._enablePick=g,this._state=ap.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(cp.prototype=Object.create(qi.prototype),cp.prototype.constructor=cp);Object.defineProperties(cp.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});cp.prototype.load=function(){if(l(this._promise))return this._promise;let e=LF.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Sm(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new ce("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(c)&&(this._transform=R.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=Tu(e.gltf);h=h.replace(/[\s\0]+$/,"");let A=this._baseResource.getDerivedResource({url:h});u.gltfResource=A,u.baseResource=A}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new Ff(u);return this._gltfLoader=f,this._state=ap.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=ap.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw d4e(this,h)}),this._promise};function d4e(e,t){return e.unload(),e._state=ap.FAILED,e.getError("Failed to load i3dm",t)}cp.prototype.process=function(e){if(this._state===ap.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===ap.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=R.multiplyTransformation(this._transform,i.transform,i.transform),A4e(this,i,e),h4e(this,i),this._components=i,this._arrayBuffer=void 0,this._state=ap.READY,!0};function h4e(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var FF=new d,UW=new Array(4),m4e=new R;function A4e(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",q.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=g4e(o,r),h;c&&(h=new Float32Array(4*r));let A;u&&(A=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),_=new d,y=new d,C=new d,E=new d,I=new J,b=new Le,S=new Array(4),B=new d,v=new Array(3),P=new R;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let Q=le.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],Q.center,FF),f[3*i+0]=FF.x,f[3*i+1]=FF.y,f[3*i+2]=FF.z;let z=R.fromTranslation(Q.center,m4e);t.transform=R.multiplyTransformation(z,t.transform,t.transform)}for(i=0;i<r;i++){_=d.clone(m[i]),l(s)&&d.add(_,d.unpack(s),_),c&&(_4e(o,a,i,b,_,C,y,E,I,P),Le.pack(b,S,0),h[4*i+0]=S[0],h[4*i+1]=S[1],h[4*i+2]=S[2],h[4*i+3]=S[3]),u&&(y4e(o,i,B),d.pack(B,v,0),A[3*i+0]=v[0],A[3*i+1]=v[1],A[3*i+2]=v[2]);let Q=o.getProperty("BATCH_ID",q.UNSIGNED_SHORT,1,i);l(Q)||(Q=i),g[i]=Q}let N=new Aae;N.transformInWorldSpace=!0;let L=e._buffers,p=new OF;if(p.name="Instance Translation",p.semantic=Ss.TRANSLATION,p.componentDatatype=q.FLOAT,p.type=Ht.VEC3,p.count=r,p.typedArray=f,!c){let Q=Et.createVertexBuffer({context:n.context,typedArray:f,usage:Qe.STATIC_DRAW});Q.vertexArrayDestroyable=!1,L.push(Q),p.buffer=Q}if(N.attributes.push(p),c){let Q=new OF;Q.name="Instance Rotation",Q.semantic=Ss.ROTATION,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC4,Q.count=r,Q.typedArray=h,N.attributes.push(Q)}if(u){let Q=new OF;if(Q.name="Instance Scale",Q.semantic=Ss.SCALE,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC3,Q.count=r,c)Q.typedArray=A;else{let z=Et.createVertexBuffer({context:n.context,typedArray:A,usage:Qe.STATIC_DRAW});z.vertexArrayDestroyable=!1,L.push(z),Q.buffer=z}N.attributes.push(Q)}let x=new OF;x.name="Instance Feature ID",x.setIndex=0,x.semantic=Ss.FEATURE_ID,x.componentDatatype=q.FLOAT,x.type=Ht.SCALAR,x.count=r;let T=Et.createVertexBuffer({context:n.context,typedArray:g,usage:Qe.STATIC_DRAW});T.vertexArrayDestroyable=!1,L.push(T),x.buffer=T,N.attributes.push(x);let w=new f4e;w.propertyTableId=0,w.setIndex=0,w.positionalLabel="instanceFeatureId_0",N.featureIds.push(w);let M=t.nodes,O=M.length,U=!1;for(i=0;i<O;i++){let Q=M[i];Q.primitives.length>0&&(Q.instances=U?p4e(N):N,U=!0)}}function p4e(e){let t=new Aae;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=ze(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function g4e(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",q.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(o))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new ce("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var mae=new Array(4);function _4e(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",q.FLOAT,3,n,UW),h=e.getProperty("NORMAL_RIGHT",q.FLOAT,3,n,mae),A=!1;if(l(f)){if(!l(h))throw new ce("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),A=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",q.UNSIGNED_SHORT,2,n,UW),m=e.getProperty("NORMAL_RIGHT_OCT32P",q.UNSIGNED_SHORT,2,n,mae);if(l(g)){if(!l(m))throw new ce("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");Fn.octDecodeInRange(g[0],g[1],65535,r),Fn.octDecodeInRange(m[0],m[1],65535,s),A=!0}else t?(kt.eastNorthUpToFixedFrame(o,te.WGS84,u),R.getMatrix3(u,c)):J.clone(J.IDENTITY,c)}A&&(d.cross(s,r,a),d.normalize(a,a),J.setColumn(c,0,s,c),J.setColumn(c,1,r,c),J.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function y4e(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",q.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",q.FLOAT,3,t,UW);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function C4e(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}cp.prototype.isUnloaded=function(){return this._state===ap.UNLOADED};cp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),C4e(this),this._components=void 0,this._arrayBuffer=void 0,this._state=ap.UNLOADED};var QF=cp;var E4e={STOPPED:0,ANIMATING:1},wm=Object.freeze(E4e);function _x(){this.times=void 0,this.points=void 0,me.throwInstantiationError()}_x.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};_x.prototype.evaluate=me.throwInstantiationError;_x.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=t??0,e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};_x.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};_x.prototype.clampTime=function(e){let t=this.times;return D.clamp(e,t[0],t[t.length-1])};var _o=_x;function yx(e){this._value=e,this._valueType=_o.getPointType(e)}Object.defineProperties(yx.prototype,{value:{get:function(){return this._value}}});yx.prototype.findTimeInterval=function(e){};yx.prototype.wrapTime=function(e){return 0};yx.prototype.clampTime=function(e){return 0};yx.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var kF=yx;function Cx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Cx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Cx.prototype.findTimeInterval=_o.prototype.findTimeInterval;Cx.prototype.wrapTime=_o.prototype.wrapTime;Cx.prototype.clampTime=_o.prototype.clampTime;Cx.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var KC=Cx;var pae={};pae.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var SB=pae;var gae=[],_ae=[],yae=[],Cae=[];function I4e(e,t,n){let i=gae,o=yae,r=_ae,s=Cae;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),SB.solve(i,r,o,s)}function x4e(e){let t=gae,n=yae,i=_ae,o=Cae;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),SB.solve(t,i,n,o)}function ql(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(ql.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});ql.createC1=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createNaturalCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points;if(n.length<3)return new KC({points:n,times:t});let i=x4e(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createClampedCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=_o.getPointType(n[0]);if(n.length<3)return new KC({points:n,times:t});let s=I4e(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new ql({times:t,points:n,inTangents:c,outTangents:a})};ql.hermiteCoefficientMatrix=new R(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);ql.prototype.findTimeInterval=_o.prototype.findTimeInterval;var b4e=new se,Ex=new d;ql.prototype.wrapTime=_o.prototype.wrapTime;ql.prototype.clampTime=_o.prototype.clampTime;ql.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=b4e;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=R.multiplyByVector(ql.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,Ex),h.add(t,Ex,t),h.multiplyByScalar(r[s],f.z,Ex),h.add(t,Ex,t),h.multiplyByScalar(o[s],f.w,Ex),h.add(t,Ex,t))};var XC=ql;function Ix(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Ix.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Ix.prototype.findTimeInterval=_o.prototype.findTimeInterval;Ix.prototype.wrapTime=_o.prototype.wrapTime;Ix.prototype.clampTime=_o.prototype.clampTime;Ix.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var UF=Ix;function T4e(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function xx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=T4e(this),this._lastTimeIndex=0}Object.defineProperties(xx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});xx.prototype.findTimeInterval=_o.prototype.findTimeInterval;xx.prototype.wrapTime=_o.prototype.wrapTime;xx.prototype.clampTime=_o.prototype.clampTime;xx.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var GF=xx;var bx=bn.AnimatedPropertyType;function GW(e){e=e??V.EMPTY_OBJECT;let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,v4e(this)}Object.defineProperties(GW.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function S4e(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new XC({times:e,points:n,inTangents:i,outTangents:o})}function Eae(e,t,n,i){if(e.length===1&&t.length===1)return new kF(t[0]);switch(n){case Tm.STEP:return new UF({times:e,points:t});case Tm.CUBICSPLINE:return S4e(e,t);case Tm.LINEAR:return i===bx.ROTATION?new GF({times:e,points:t}):new KC({times:e,points:t})}}function w4e(e,t,n,i,o){let r=[];if(i===bx.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===Tm.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(Eae(e,f,n,i))}}else r.push(Eae(e,t,n,i));return r}var B4e=new d,D4e=new Le;function v4e(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=w4e(i,o,r,a,u);e._splines=f,e._path=a}GW.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===bx.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===bx.TRANSLATION||n===bx.SCALE?o[n]=r.evaluate(s,B4e):n===bx.ROTATION&&(o[n]=r.evaluate(s,D4e))}}};var zF=GW;function zW(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=K.clone(n.startTime),this._delay=n.delay??0,this._stopTime=K.clone(n.stopTime),this.removeOnStop=n.removeOnStop??!1,this._multiplier=n.multiplier??1,this._reverse=n.reverse??!1,this._loop=n.loop??vu.NONE,this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new _e,this.update=new _e,this.stop=new _e,this._state=wm.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,P4e(this)}Object.defineProperties(zW.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function P4e(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,A=i._runtimeNodes[h],g=new zF({channel:u,runtimeAnimation:e,runtimeNode:A}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}zW.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var VF=zW;function lp(e){this.animationAdded=new _e,this.animationRemoved=new _e,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(lp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function VW(e,t,n){let i=e._model,o=new VF(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}lp.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return VW(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return VW(this,n[i],e)};lp.prototype.addAll=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=VW(this,n[r],e);i.push(s)}return i};lp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};lp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};lp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};lp.prototype.get=function(e){return this._runtimeAnimations[e]};var HF=[];function R4e(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}lp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&K.equals(e.time,this._previousTime))return!1;this._previousTime=K.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=K.addSeconds(a.startTime??o,a.delay,new K)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=K.lessThanOrEquals(c,o),A=l(f)&&K.greaterThan(o,f),g=0;if(u!==0){let y=K.secondsDifference(A?f:o,c);g=l(a._animationTime)?a._animationTime(u,y):y/u}let m=a.loop===vu.REPEAT||a.loop===vu.MIRRORED_REPEAT,_=(h||m&&!l(a.startTime))&&(g<=1||m)&&!A;if(g===a._prevAnimationDelta){let y=a._state===wm.STOPPED;if(_!==y)continue}if(a._prevAnimationDelta=g,_||a._state===wm.ANIMATING){if(_&&a._state===wm.STOPPED&&(a._state=wm.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===vu.REPEAT)g=g-Math.floor(g);else if(a.loop===vu.MIRRORED_REPEAT){let C=Math.floor(g),E=g-C;g=C%2===1?1-E:E}a.reverse&&(g=1-g);let y=g*u*a.multiplier;y=D.clamp(y,a.localStartTime,a.localStopTime),a.animate(y),a.update.numberOfListeners>0&&(a._updateEventTime=y,e.afterRender.push(a._raiseUpdateEvent)),i=!0,_||(a._state=wm.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&HF.push(a))}}n=HF.length;for(let s=0;s<n;++s){let a=HF[s];t.splice(t.indexOf(a),1),e.afterRender.push(R4e(this,r,a))}return HF.length=0,i};var WF=lp;function JC(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(JC.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});JC.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};JC.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};JC.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var jF=JC;var wB={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};wB.getStyleCommandsNeeded=function(e,t){return t===0?wB.ALL_OPAQUE:t===e?wB.ALL_TRANSLUCENT:wB.OPAQUE_AND_TRANSLUCENT};var Bm=Object.freeze(wB);var A_={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};A_.is3DTiles=function(e){switch(e){case A_.TILE_GLTF:case A_.TILE_B3DM:case A_.TILE_I3DM:case A_.TILE_PNTS:case A_.TILE_GEOJSON:return!0;case A_.GLTF:return!1}};var Nr=Object.freeze(A_);function Zr(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=Bm.ALL_OPAQUE,M4e(this)}Object.defineProperties(Zr.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function M4e(e){let t=e._model,n=Nr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new Sa(s,o)}else for(o=0;o<i;o++)r[o]=new jF({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Gl({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}Zr.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=Bm.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};Zr.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Zr.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Zr.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Zr.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Zr.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Zr.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Zr.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};Zr.prototype.getFeature=function(e){return this._features[e]};Zr.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};Zr.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};Zr.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};Zr.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};Zr.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};Zr.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};Zr.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};Zr.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};Zr.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var N4e=new G;Zr.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Gl.DEFAULT_COLOR_VALUE),this.setAllShow(Gl.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?e.color.evaluateColor(n,N4e)??Gl.DEFAULT_COLOR_VALUE:Gl.DEFAULT_COLOR_VALUE,o=l(e.show)?e.show.evaluate(n)??Gl.DEFAULT_SHOW_VALUE:Gl.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};Zr.prototype.isDestroyed=function(){return!1};Zr.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var YF=Zr;var ZC={VERTEX:0,FRAGMENT:1,BOTH:2};ZC.includesVertexShader=function(e){return e===ZC.VERTEX||e===ZC.BOTH};ZC.includesFragmentShader=function(e){return e===ZC.FRAGMENT||e===ZC.BOTH};var pe=Object.freeze(ZC);var Iae={name:"TilesetPipelineStage"};Iae.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return k.ZERO}};e.uniformMap=wt(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK};var qF=Iae;var KF=`// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// +// This version uses only a single iteration for best performance. For fog +// rendering, the difference is negligible. +vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = cos(pi/4) + vec2 tTrigs = vec2(0.70710678118); + vec2 v = radii * tTrigs; + + // Find the evolute of the ellipse (center of curvature) at v. + vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs; + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + + return v * sign(pos); +} + +vec3 computeEllipsoidPositionWC(vec3 positionMC) { + // Get the world-space position and project onto a meridian plane of + // the ellipsoid + vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + + vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z); + vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz); + + // Reconstruct a 3D point in world space + return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y); +} + +void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) { + + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is dynamic lighting, apply that to the fog. + const float NONE = 0.0; + if (czm_atmosphereDynamicLighting != NONE) { + float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0); + fogColor *= darken; + } + + // Tonemap if HDR rendering is disabled + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar); + color = vec4(withFog, color.a); +} + +void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) { + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is in space, compute the position per-fragment for + // more accurate ground atmosphere. All other cases will use + // + // The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717 + if (false) { + positionWC = computeEllipsoidPositionWC(attributes.positionMC); + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + + // The fog color is derived from the ground atmosphere color + czm_computeGroundAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + } else { + positionWC = attributes.positionWC; + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + } + + //color correct rayleigh and mie colors + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels); + + vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + if (u_isInFog) { + float distanceToCamera = length(attributes.positionEC); + applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera); + } else { + // Ground atmosphere + } +} +`;var XF=`void atmosphereStage(ProcessedAttributes attributes) { + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting); + + czm_computeGroundAtmosphereScattering( + // This assumes the geometry stage came before this. + v_positionWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +} +`;var xae={name:"AtmospherePipelineStage"};xae.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([XF]),i.addFragmentLines([KF]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return D.fog(o,n.fog.density)>D.EPSILON3}};var JF=xae;var ZF=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var bae={name:"ImageBasedLightingPipelineStage"},L4e=new k;bae.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),hm.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(ZF);let c={model_iblFactor:function(){return k.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,L4e)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=wt(c,e.uniformMap)};var $F=bae;var O4e=D.EPSILON16;function WW(e){e=e??V.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(WW.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=D.clamp(e,this.minimumValue,this.maximumValue),D.equalsEpsilon(this._currentValue,e,O4e)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var F4e=new d,HW=new J;WW.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=F4e,o;switch(t){case cl.XROTATE:o=J.fromRotationX(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.YROTATE:o=J.fromRotationY(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.ZROTATE:o=J.fromRotationZ(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=R.multiplyByTranslation(e,i,e);break;case cl.XSCALE:i.x=n,i.y=1,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.YSCALE:i.x=1,i.y=n,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.ZSCALE:i.x=1,i.y=1,i.z=n,e=R.multiplyByScale(e,i,e);break;case cl.UNIFORMSCALE:e=R.multiplyByUniformScale(e,n,e);break;default:break}return e};var e2=WW;function t2(e){e=e??V.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Q4e(this)}Object.defineProperties(t2.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Q4e(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new e2({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}t2.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var k4e=new R,U4e=new R;t2.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=R.clone(R.IDENTITY,k4e),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=R.multiplyTransformation(s.originalTransform,e,U4e);s.transform=a}};var n2=t2;var i2=`void modelColorStage(inout czm_modelMaterial material) +{ + material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend); + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight); + material.alpha *= model_color.a; +} +`;var Tx={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};Tx.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(i2);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=Be.TRANSLUCENT),i.addUniform("vec4",Tx.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",Tx.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=wt(o,e.uniformMap)};var $C=Tx;var o2=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +#else +// Handle uint8 clipping texture instead +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each + int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v))); + return czm_transformPlane(plane, transform); +} +#endif + +float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float pixelWidth = czm_metersPerPixel(position); + + #ifdef UNION_CLIPPING_REGIONS + float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below. + #else + float clipAmount = 0.0; + bool clipped = true; + #endif + + for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + + #ifdef UNION_CLIPPING_REGIONS + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) { + discard; + } + #else + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + #endif + } + + #ifndef UNION_CLIPPING_REGIONS + if (clipped) { + discard; + } + #endif + + return clipAmount; +} + +void modelClippingPlanesStage(inout vec4 color) +{ + float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a; + + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Tae={name:"ModelClippingPlanesPipelineStage"},G4e=new k;Tae.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Vs.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Vs.getTextureResolution(i,o,G4e);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(o2);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=G.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=wt(a,e.uniformMap)};var r2=Tae;var s2=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var a2=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Sae={name:"ModelClippingPolygonsPipelineStage"};Sae.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(s2),o.addFragmentLines(a2);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=wt(r,e.uniformMap)};var c2=Sae;function wae(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(wae.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var l2=wae;var u2=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var f2=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var d2=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var h2=new R,z4e=new R,V4e=new R,Dae={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Nae,_transformsToTypedArray:YW};Dae.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(u2);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];oHe(e,n,i,h,u,f),aHe(e,n,i,h);let A={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),A.u_instance_modifiedModelView=function(){let g=R.multiplyTransformation(s.modelMatrix,a.components.transform,h2);return u?R.multiplyTransformation(n.context.uniformState.view3D,g,h2):(n.mode!==ie.SCENE3D&&(g=kt.basisTo2D(n.mapProjection,g,h2)),R.multiplyTransformation(n.context.uniformState.view,g,h2))},A.u_instance_nodeTransform=function(){return R.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,z4e)},r.addVertexLines(d2)):r.addVertexLines(f2),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=R.fromTranslation(c.instancingReferencePoint2D,new R);A.u_modelView2D=function(){return R.multiplyTransformation(g.uniformState.view,m,V4e)}}e.uniformMap=wt(A,e.uniformMap),e.instanceCount=o,si(e.attributes,h)};var BB=new R,H4e=new d;function W4e(e,t,n,i,o){let r=R.multiplyTransformation(t,e,BB);return r=R.multiplyTransformation(r,n,BB),o=kt.basisTo2D(i.mapProjection,r,o),o}function j4e(e,t,n,i,o){let r=R.fromTranslation(e,BB),s=R.multiplyTransformation(t,r,BB);s=R.multiplyTransformation(s,n,BB);let a=R.getTranslation(s,H4e);return o=to.computeActualEllipsoidPosition(i,a,o),o}function vae(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=R.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=R.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=R.clone(o.computedModelMatrix,t),t=R.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=R.clone(R.IDENTITY,n))}var Pae=new R,Rae=new R,Y4e=new R,q4e=new d;function K4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=W4e(f,o,r,n,Y4e),A=R.getTranslation(h,q4e),g=d.subtract(A,a,A);i[u]=R.setTranslation(h,g,i[u])}return i}function X4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=j4e(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var J4e=new d,Z4e=new d;function Mae(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=R.multiplyByPoint(i,n.instancingTranslationMin,J4e),r=to.computeActualEllipsoidPosition(t,o,o),s=R.multiplyByPoint(i,n.instancingTranslationMax,Z4e),a=to.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function YW(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function $4e(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var eHe=new d,tHe=new Le,nHe=new d;function Nae(e,t,n){let i=new Array(t),o=Qt.getAttributeBySemantic(e,Ss.TRANSLATION),r=Qt.getAttributeBySemantic(e,Ss.ROTATION),s=Qt.getAttributeBySemantic(e,Ss.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),A=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=Fn.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let y=0;y<t;y++){let C=new d(A[y*3],A[y*3+1],A[y*3+2],eHe);d.maximumByComponent(a,C,a),d.minimumByComponent(c,C,c);let E=new Le(g[y*4],g[y*4+1],g[y*4+2],f?g[y*4+3]:1,tHe),I=new d(m[y*3],m[y*3+1],m[y*3+2],nHe),b=R.fromTranslationQuaternionRotationScale(C,E,I,new R);i[y]=b}let _=n.runtimeNode;return _.instancingTranslationMin=c,_.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function iHe(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function qW(e,t){let n=Et.createVertexBuffer({context:t.context,typedArray:e,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function oHe(e,t,n,i,o,r){let s=Qt.getAttributeBySemantic(n,Ss.ROTATION);l(s)?rHe(e,n,i,t,o,r):sHe(e,n,i,t,o)}function rHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,A=u.instancingTransformsBuffer;if(!l(A)){h=Nae(t,a,e);let y=YW(h);A=qW(y,i),c._modelResources.push(A),r&&(u.transformsTypedArray=y),u.instancingTransformsBuffer=A}if(Bae(e,A,n,f),!o)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let y=K4e(h,e,g,h),C=YW(y);m=qW(C,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}Bae(e,m,n,"Transform2D")}function sHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Qt.getAttributeBySemantic(t,Ss.TRANSLATION),u=Qt.getAttributeBySemantic(t,Ss.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),jW(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=iHe(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),jW(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let E=X4e(f,e,g,f),I=$4e(E);r&&(a.transformsTypedArray=I),m=qW(I,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;jW(e,m,0,void 0,n,"Translation2D")}function Bae(e,t,n,i){let r=q.getSizeInBytes(q.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),si(n,a)}function jW(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function aHe(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===Ss.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:Ht.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var m2=Dae;var KW={};KW.name="ModelMatrixUpdateStage";KW.update=function(e,t,n){let i=n.mode!==ie.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;Lae(e,t,o,e.transformToRoot),e._transformDirty=!1}};function cHe(e,t,n){e.modelMatrix=R.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Qt.getCullFace(e.modelMatrix,e.primitiveType)}function Lae(e,t,n,i){let o;i=R.multiplyTransformation(i,e.transform,new R),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];cHe(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=R.clone(i,a._transformToRoot),Lae(a,t,n,i),a._transformDirty=!1}}var A2=KW;var Oae={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:Fae,_countGeneratedBuffers:Qae};Oae.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;Fae(i,o),Qae(i,r)};function Fae(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function Qae(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var p2=Oae;function Sx(e){e=e??V.EMPTY_OBJECT;let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=R.clone(n,this._originalTransform),this._transform=R.clone(n,this._transform),this._transformToRoot=R.clone(i,this._transformToRoot),this._computedTransform=new R,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,lHe(this)}Object.defineProperties(Sx.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=R.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),XW(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),XW(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),XW(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function lHe(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=R.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new DC(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function XW(e,t){e._transformDirty=!0,e._transform=R.fromTranslationRotationScale(t,e._transform)}Sx.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};Sx.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(m2),t.push(p2),n.push(A2)};Sx.prototype.updateComputedTransform=function(){this._computedTransform=R.multiply(this._transformToRoot,this._transform,this._computedTransform)};Sx.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new R);let r=R.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=R.inverseTransformation(r,t[o]);t[o]=R.multiplyTransformation(s,n[o],t[o])}};var g2=Sx;var kae={name:"AlphaPipelineStage"};kae.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=i.pass??o.opaquePass;let r=e.renderStateOptions;i.pass===Be.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=pn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var _2=kae;var Uae={name:"BatchTexturePipelineStage"};Uae.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return c.batchTexture??c.defaultTexture},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=wt(o,e.uniformMap)};var y2=Uae;var Gae={name:"ClassificationPipelineStage"};Gae.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||uHe(t,o)};function uHe(e,t){let n=Qt.getAttributeBySemantic(e,ct.POSITION);if(!l(n))throw new ce("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Qt.getAttributeBySemantic(e,ct.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,A=c[h],g=0;for(let _=1;_<s;_++){let y=r?i[_]:_,C=c[y];if(C!==A){let E=_-g,I=_;u.push(E),f.push(I),g=I,A=C}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var C2=Gae;var E2=`void filterByPassType(inout vec3 positionMC, vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + positionMC *= float(model_silhouettePass); + #else + positionMC *= 0.0; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + positionMC *= 0.0; + } +} + +void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature) +{ + float show = ceil(feature.color.a); + positionMC *= show; + + #if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION) + filterByPassType(positionMC, feature.color); + #endif +} +`;var I2=`void filterByPassType(vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + if(!model_silhouettePass) { + discard; + } + #else + discard; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + discard; + } +} + +void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature) +{ + vec4 featureColor = feature.color; + if (featureColor.a == 0.0) + { + discard; + } + + // If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader. + // So, we only apply in in the fragment shader if the feature ID texture is used. + #if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION) + filterByPassType(featureColor); + #endif + + featureColor = czm_gammaCorrect(featureColor); + + // Classification models compute the diffuse differently. + #ifdef HAS_CLASSIFICATION + material.diffuse = featureColor.rgb * featureColor.a; + #else + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight); + #endif + + material.alpha *= featureColor.a; +} +`;var zae={name:"CPUStylingPipelineStage"};zae.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(E2),o.addFragmentLines(I2),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",$C.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[$C.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===Be.TRANSLUCENT}};var x2=zae;var Vae={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};Vae.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var p_=Object.freeze(Vae);var b2=`void customShaderStage( + inout czm_modelVertexOutput vsOutput, + inout ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // VertexInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + VertexInput vsInput; + initializeInputStruct(vsInput, attributes); + vsInput.featureIds = featureIds; + vsInput.metadata = metadata; + vsInput.metadataClass = metadataClass; + vsInput.metadataStatistics = metadataStatistics; + vertexMain(vsInput, vsOutput); + attributes.positionMC = vsOutput.positionMC; +} +`;var T2=`void customShaderStage( + inout czm_modelMaterial material, + ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // FragmentInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + FragmentInput fsInput; + initializeInputStruct(fsInput, attributes); + fsInput.featureIds = featureIds; + fsInput.metadata = metadata; + fsInput.metadataClass = metadataClass; + fsInput.metadataStatistics = metadataStatistics; + fragmentMain(fsInput, material); +} +`;var S2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) { + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); +} +`;var w2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) +{ + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); + setFeatureIdVaryings(); +} +`;var Ki={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};Ki.process=function(e,t,n){let i=e.shaderBuilder;fHe(i);let o=e.runtimeNode.node.instances;l(o)&&dHe(e,o,n),hHe(e,t,n),i.addVertexLines(w2),i.addFragmentLines(S2)};function fHe(e){e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_VS,Ki.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_FS,Ki.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,Ki.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function dHe(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof bn.FeatureIdAttribute?mHe(e,s,a):Hae(e,s,a,o,1,n);let c=s.label;l(c)&&Wae(e,a,c,pe.BOTH)}}function hHe(e,t,n){let i=t.featureIds,r=Qt.getAttributeBySemantic(t,ct.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof bn.FeatureIdAttribute?AHe(e,a,c):a instanceof bn.FeatureIdImplicitRange?Hae(e,a,c,r,void 0,n):(pHe(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&Wae(e,c,f,u)}}function mHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function AHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function Hae(e,t,n,i,o,r){gHe(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function pHe(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return a.texture??o.context.defaultTexture};let c=a.channels,u=e.shaderBuilder;u.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,A=h,g=a.transform;if(l(g)&&!J.equals(g,J.IDENTITY)){let y=`${r}Transform`;u.addUniform("mat3",y,pe.FRAGMENT),s[y]=function(){return g},A=`vec2(${y} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${A}).${c}`,_=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[_])}function Wae(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function gHe(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=_He(t,n);s=Et.createVertexBuffer({context:o.context,typedArray:u,usage:Qe.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:q.FLOAT,strideInBytes:q.getSizeInBytes(q.FLOAT),offsetInBytes:0};e.attributes.push(c)}function _He(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var eE=Ki;var B2=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); +} +`;var D2=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); + setMetadataVaryings(); +} +`;var Li={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Li.process=function(e,t,n){let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=s?.tileset.metadataExtension?.statistics,c=yHe(r.propertyAttributes,t,a),u=EHe(r.propertyTextures,a),f=c.concat(u);xHe(i,f),SHe(i),i.addVertexLines(D2),i.addFragmentLines(B2);for(let h=0;h<c.length;h++){let A=c[h];wHe(e,A)}for(let h=0;h<u.length;h++){let A=u[h];DHe(e,A)}};function yHe(e,t,n){return l(e)?e.flatMap(i=>CHe(i,t,n)):[]}function CHe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Qt,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,A]=c[f],g=i(t,A.attribute),{glslType:m,variableName:_}=o(g);u[f]={metadataVariable:r(h),property:A,type:A.classProperty.type,glslType:m,variableName:_,propertyStatistics:a?.properties[h],shaderDestination:pe.BOTH}}return u}function EHe(e,t){return l(e)?e.flatMap(n=>IHe(n,t)):[]}function IHe(e,t){let{sanitizeGlslIdentifier:n}=Qt,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o?.properties[c],shaderDestination:pe.FRAGMENT}}return s}function xHe(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==gt.ENUM&&i.add(u)}let o=Li.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Li.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],A=u[f].type==="float"?THe(c):c;e.addStructField(a,A,h)}}}var bHe={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function THe(e){let t=bHe[e];return l(t)?t:e}function SHe(e){e.addStruct(Li.STRUCT_ID_METADATA_VS,Li.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_FS,Li.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_VS,Li.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_FS,Li.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_VS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_FS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_SET_METADATA_VARYINGS,Li.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function wHe(e,t){BHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function BHe(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=Kae({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Li.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function DHe(e,t){vHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function vHe(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,A=`u_propertyTexture_${u}`;i.hasOwnProperty(A)||(n.addUniform("sampler2D",A,pe.FRAGMENT),i[A]=()=>f),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!J.equals(h,J.IDENTITY)){let I=`${A}Transform`;n.addUniform("mat3",I,pe.FRAGMENT),i[I]=function(){return h},m=`vec2(${I} * vec3(${g}, 1.0))`}let _=`texture(${A}, ${m}).${c}`,y=s.unpackInShader(_),C=Kae({valueExpression:y,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),E=`metadata.${o} = ${C};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[E])}function jae(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=qae(Li.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Li.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Li.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function Yae(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===gt.ENUM)return;let s=Li.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=qae(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function qae(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function Kae(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var Xd=Li;var PHe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},tE=Object.freeze(PHe);var va={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:yt};va.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===tE.TRANSLUCENT?r.pass=Be.TRANSLUCENT:c===tE.OPAQUE&&(r.pass=void 0);let u=kHe(s,t);if(!u.customShaderEnabled)return;if(VHe(i,s,u),u.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let A=p_.getDefineName(s.mode);i.addDefine(A,void 0,pe.FRAGMENT)}let f=s.uniforms;for(let A in f)if(f.hasOwnProperty(A)){let g=f[A];i.addUniform(g.type,A)}let h=s.varyings;for(let A in h)if(h.hasOwnProperty(A)){let g=h[A];i.addVarying(g,A)}e.uniformMap=wt(e.uniformMap,s.uniformMap)};function RHe(e){let t={};for(let n=0;n<e.length;n++){let i=Qt.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var MHe={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},NHe={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function Xae(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=MHe[t],i=NHe[t];if(l(n))return{attributeField:[n,e],value:i}}function LHe(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Jae(t,n,!1),o=Zae(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=Xae(u);if(!l(f))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function OHe(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function FHe(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Jae(t,n,!0),o=Zae(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=Xae(f);if(!l(h))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=OHe(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var QHe={positionWC:!0,positionEC:!0};function Jae(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function Zae(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||QHe.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function kHe(e,t){let n=RHe(t.attributes),i=LHe(e,n),o=FHe(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function UHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,va.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function GHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,va.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var zHe=[];function VHe(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=zHe;i.enabled&&(UHe(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,b2),e.addVertexLines(r)),o.enabled&&(GHe(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,T2),e.addFragmentLines(r))}var v2=va;var DB={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};DB.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,DB.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===ct.POSITION,h=c.semantic===ct.TEXCOORD;if(r&&!f&&!h)continue;let A=Qt.getAttributeInfo(c);WHe(i,A),HHe(e,A)}};function HHe(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=$ae(u,0),f=$ae(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function $ae(e,t){return e instanceof se?e:new se(e.x,e.y,e.z,t)}function WHe(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=jHe(n,i):o=YHe(n),e.addFunctionLines(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function jHe(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function YHe(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var P2=DB;var R2=`void geometryStage(out ProcessedAttributes attributes) +{ + attributes.positionMC = v_positionMC; + attributes.positionEC = v_positionEC; + + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) + attributes.positionWC = v_positionWC; + #endif + + #ifdef HAS_NORMALS + // renormalize after interpolation + attributes.normalEC = normalize(v_normalEC); + #endif + + #ifdef HAS_TANGENTS + attributes.tangentEC = normalize(v_tangentEC); + #endif + + #ifdef HAS_BITANGENTS + attributes.bitangentEC = normalize(v_bitangentEC); + #endif + + // Everything else is dynamically generated in GeometryPipelineStage + setDynamicVaryings(attributes); +} +`;var M2=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal) +{ + vec4 computedPosition; + + // Compute positions in different coordinate systems + vec3 positionMC = attributes.positionMC; + v_positionMC = positionMC; + v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz; + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + vec3 position2D = attributes.position2D; + vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz; + computedPosition = czm_projection * vec4(positionEC, 1.0); + #else + computedPosition = czm_projection * vec4(v_positionEC, 1.0); + #endif + + // Sometimes the custom shader and/or style needs this + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS) + // Note that this is a 32-bit position which may result in jitter on small + // scales. + v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + #endif + + #ifdef HAS_NORMALS + v_normalEC = normalize(normal * attributes.normalMC); + #endif + + #ifdef HAS_TANGENTS + v_tangentEC = normalize(normal * attributes.tangentMC); + #endif + + #ifdef HAS_BITANGENTS + v_bitangentEC = normalize(normal * attributes.bitangentMC); + #endif + + // All other varyings need to be dynamically generated in + // GeometryPipelineStage + setDynamicVaryings(attributes); + + return computedPosition; +} +`;var vB=`vec2 computeSt(float featureId) +{ + float stepX = model_textureStep.x; + float centerX = model_textureStep.y; + + #ifdef MULTILINE_BATCH_TEXTURE + float stepY = model_textureStep.z; + float centerY = model_textureStep.w; + + float xId = mod(featureId, model_textureDimensions.x); + float yId = floor(featureId / model_textureDimensions.x); + + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); + #else + return vec2(centerX + (featureId * stepX), 0.5); + #endif +} + +void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds) +{ + int featureId = featureIds.SELECTED_FEATURE_ID; + + + if (featureId < model_featuresLength) + { + vec2 featureSt = computeSt(float(featureId)); + + feature.id = featureId; + feature.st = featureSt; + feature.color = texture(model_batchTexture, featureSt); + } + // Floating point comparisons can be unreliable in GLSL, so we + // increment the feature ID to make sure it's always greater + // then the model_featuresLength - a condition we check for in the + // pick ID, to avoid sampling the pick texture if the feature ID is + // greater than the number of features. + else + { + feature.id = model_featuresLength + 1; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + + #ifdef HAS_NULL_FEATURE_ID + if (featureId == model_nullFeatureId) { + feature.id = featureId; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + #endif +} +`;var PB={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};PB.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=qHe(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),KHe(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(vB),i.addFragmentLines(vB)};function ece(e){return e instanceof bn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function tce(e){return e instanceof bn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function qHe(e,t,n){let i,o;return l(t.instances)&&(o=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)}):(o=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)})}function KHe(e){e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var nE=PB;var ca={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};ca.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(nE.STRUCT_ID_SELECTED_FEATURE,nE.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,ca.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===Nr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=Ht.getAttributeLocationCount(f.type),A=f.semantic===ct.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):A&&!a?g=0:g=e.attributeIndex++,XHe(e,f,g,h,r,s)}r5e(i,t.attributes),t.primitiveType===Me.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(M2),i.addFragmentLines(R2)};function XHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=Qt.getAttributeInfo(t),c=o&&!r;i>1?$He(e,t,n,i):ZHe(e,t,n,c),t5e(s,a,c),e5e(s,a),l(t.semantic)&&JHe(s,t),n5e(s,a,o),i5e(s,a,c),o5e(s,a)}function JHe(e,t){let{semantic:n,setIndex:i}=t;switch(n){case ct.NORMAL:e.addDefine("HAS_NORMALS");break;case ct.TANGENT:e.addDefine("HAS_TANGENTS");break;case ct.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case ct.TEXCOORD:case ct.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function ZHe(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===ct.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===ct.POSITION,f=u?0:n,h=Ht.getNumberOfComponents(a),A={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(A),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:q.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function $He(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=Ht.getNumberOfComponents(s)/i,f=q.getSizeInBytes(a),h=u*f,A=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,_={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:A,normalize:r};e.attributes.push(_)}}function e5e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function t5e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===ct.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function n5e(e,t,n){let i=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function i5e(e,t,n){let i=ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function o5e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function r5e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===ct.NORMAL?n=!0:r.semantic===ct.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var N2=ca;function g_(e){if(e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??1,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1,this._projection=new Yi(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new k(-i,-i),this._rectangleNortheastInMeters=new k(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(g_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});g_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};g_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};g_.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};g_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};g_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new k(o.west,o.south)),a=r.unproject(new k(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};g_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),A=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=A/a|0;m>=o&&(m=o-1);let _=g/u|0;return _>=r&&(_=r-1),l(n)?(n.x=m,n.y=_,n):new k(m,_)};var ws=g_;var JW,nce="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",wx={};wx.defaultAccessToken=nce;wx.defaultWorldImageryServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});wx.defaultWorldHillshadeServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});wx.defaultWorldOceanServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});wx.getDefaultTokenCredit=function(e){if(e===nce){if(!l(JW)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';JW=new Dt(t,!0)}return JW}};var kf=wx;function ZW(e){e=e??V.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=we.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=qh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let A=u[f],g=A.x*4+A.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}ZW.prototype.isReady=function(){return this._isReady};ZW.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=qh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var L2=ZW;function $W(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}$W.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};$W.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var Dm=$W;function Bx(){me.throwInstantiationError()}Object.defineProperties(Bx.prototype,{rectangle:{get:me.throwInstantiationError},tileWidth:{get:me.throwInstantiationError},tileHeight:{get:me.throwInstantiationError},maximumLevel:{get:me.throwInstantiationError},minimumLevel:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},tileDiscardPolicy:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},proxy:{get:me.throwInstantiationError},hasAlphaChannel:{get:me.throwInstantiationError}});Bx.prototype.getTileCredits=function(e,t,n){me.throwInstantiationError()};Bx.prototype.requestImage=function(e,t,n,i){me.throwInstantiationError()};Bx.prototype.pickFeatures=function(e,t,n,i,o){me.throwInstantiationError()};var s5e=/\.ktx2$/i;Bx.loadImage=function(e,t){let n=we.createIfNeeded(t);return s5e.test(n.url)?Iu(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Kl=Bx;var a5e={SATELLITE:1,OCEANS:2,HILLSHADE:3},vm=Object.freeze(a5e);function ice(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new co({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}ice.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new L2({missingImageUrl:oce(e,0,0,this.maximumLevel).url,pixelsToCheck:[new k(0,0),new k(200,20),new k(20,200),new k(80,110),new k(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function c5e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new ws({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new co({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new ce(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Yi,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new ce(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Dt(e.copyrightText)]:t.credit=new Dt(e.copyrightText))}function l5e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new ce(n)}async function u5e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();c5e(i,t)}catch(i){l5e(e,i)}}function Pm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new co({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new _e}Pm.fromBasemapType=async function(e,t){t=t??V.EMPTY_OBJECT;let n,i,o;switch(e){case vm.SATELLITE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldImageryServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.OCEANS:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldOceanServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.HILLSHADE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldHillshadeServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;default:}return Pm.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function oce(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Hi?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(Pm.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});Pm.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new Pm(t);i._resource=n;let o=new ice(t);return(t.usePreCachedTilesIfAvailable??!0)&&await u5e(n,o),o.build(i),i};Pm.prototype.getTileCredits=function(e,t,n){return this._tileCredits};Pm.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,oce(this,e,t,n,i))};Pm.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Hi)s=D.toDegrees(i),a=D.toDegrees(o),c="4326";else{let A=this._tilingScheme.projection.project(new Ae(i,o,0));s=A.x,a=A.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(A){let g=[],m=A.results;if(!l(m))return g;for(let _=0;_<m.length;++_){let y=m[_],C=new Dm;if(C.data=y,C.name=y.value,C.properties=y.attributes,C.configureDescriptionFromProperties(y.attributes),y.geometryType==="esriGeometryPoint"&&y.geometry){let E=y.geometry.spatialReference&&y.geometry.spatialReference.wkid?y.geometry.spatialReference.wkid:4326;if(E===4326||E===4283)C.position=Ae.fromDegrees(y.geometry.x,y.geometry.y,y.geometry.z);else if(E===102100||E===900913||E===3857){let I=new Yi;C.position=I.unproject(new d(y.geometry.x,y.geometry.y,y.geometry.z))}}g.push(C)}return g})};Pm._metadataCache={};var __=Pm;function f5e(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=` +${o}`),t}var up=f5e;function O2(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=r??0,this.retry=!1,this.error=s}O2.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new O2(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${up(i)}`),c};O2.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var zo=O2;var d5e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},RB=Object.freeze(d5e);function MB(e){}MB.prototype.isReady=function(){return!0};MB.prototype.shouldDiscardImage=function(e){return MB.EMPTY_IMAGE===e};var F2;Object.defineProperties(MB,{EMPTY_IMAGE:{get:function(){return l(F2)||(F2=new Image,F2.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),F2}}});var NB=MB;function rce(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}rce.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof Dt)break;o.credit=new Dt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(D.toRadians(u[1]),D.toRadians(u[0]),D.toRadians(u[3]),D.toRadians(u[2]))}}};function h5e(e,t){if(e.resourceSets.length!==1)throw new ce("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>o.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function m5e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new ce(i)}async function A5e(e,t,n){let i=e.url,o=Ws._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Ws._metadataCache[i]=o);try{let r=await o;return h5e(r,t)}catch(r){m5e(e,r,n)}}function Ws(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??RB.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new NB),this._proxy=e.proxy,this._credit=new Dt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Ws.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new _e}Object.defineProperties(Ws.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Ws.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??RB.AERIAL,o=we.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Ws(t);a._resource=o;let c=new rce(t);return await A5e(s,c),c.build(a),a};var p5e=new ae;Ws.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,p5e);return y5e(this._attributionList,n,i)};Ws.prototype.requestImage=function(e,t,n,i){let o=Kl.loadImage(this,g5e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?NB.EMPTY_IMAGE:Promise.reject(r)})};Ws.prototype.pickFeatures=function(e,t,n,i,o){};Ws.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Ws.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Ws._logoUrl=void 0;Object.defineProperties(Ws,{logoUrl:{get:function(){return l(Ws._logoUrl)||(Ws._logoUrl=fn("Assets/Images/bing_maps_credit.png")),Ws._logoUrl},set:function(e){Ws._logoUrl=e}}});function g5e(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Ws.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var _5e=new ae;function y5e(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let A=ae.intersection(n,h.bbox,_5e);l(A)&&(c=!0)}}c&&i.push(s.credit)}return i}Ws._metadataCache={};var Q2=Ws;var sce=/{[^}]+}/g,ace={x:x5e,y:T5e,z:B5e,s:D5e,reverseX:b5e,reverseY:S5e,reverseZ:w5e,westDegrees:v5e,southDegrees:P5e,eastDegrees:R5e,northDegrees:M5e,westProjected:N5e,southProjected:L5e,eastProjected:O5e,northProjected:F5e,width:Q5e,height:k5e},C5e=wt(ace,{i:U5e,j:G5e,reverseI:z5e,reverseJ:V5e,longitudeDegrees:W5e,latitudeDegrees:j5e,longitudeProjected:Y5e,latitudeProjected:q5e,format:X5e});function LB(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new ws({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Dt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=wt(ace,r),a=wt(C5e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(LB.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});LB.prototype.getTileCredits=function(e,t,n){};LB.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,E5e(this,e,t,n,i))};LB.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=I5e(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var k2=!1,Ru=new ae,U2=!1,OB=new ae;function E5e(e,t,n,i,o){k2=!1,U2=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(sce);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var ej=!1,vx=new k,tj=!1;function I5e(e,t,n,i,o,r,s){k2=!1,U2=!1,ej=!1,tj=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(sce);return l(h)&&h.forEach(function(A){let g=A.substring(1,A.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function Px(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function x5e(e,t,n,i){return Px(e,"{x}",t)}function b5e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return Px(e,"{reverseX}",o)}function T5e(e,t,n,i){return Px(e,"{y}",n)}function S5e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return Px(e,"{reverseY}",o)}function w5e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return Px(e,"{reverseZ}",r)}function B5e(e,t,n,i){return Px(e,"{z}",i)}function D5e(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function G2(e,t,n,i){k2||(e.tilingScheme.tileXYToRectangle(t,n,i,Ru),Ru.west=D.toDegrees(Ru.west),Ru.south=D.toDegrees(Ru.south),Ru.east=D.toDegrees(Ru.east),Ru.north=D.toDegrees(Ru.north),k2=!0)}function v5e(e,t,n,i){return G2(e,t,n,i),Ru.west}function P5e(e,t,n,i){return G2(e,t,n,i),Ru.south}function R5e(e,t,n,i){return G2(e,t,n,i),Ru.east}function M5e(e,t,n,i){return G2(e,t,n,i),Ru.north}function z2(e,t,n,i){U2||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,OB),U2=!0)}function N5e(e,t,n,i){return z2(e,t,n,i),OB.west}function L5e(e,t,n,i){return z2(e,t,n,i),OB.south}function O5e(e,t,n,i){return z2(e,t,n,i),OB.east}function F5e(e,t,n,i){return z2(e,t,n,i),OB.north}function Q5e(e,t,n,i){return e.tileWidth}function k5e(e,t,n,i){return e.tileHeight}function U5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.x}function G5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.y}function z5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileWidth-vx.x-1}function V5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileHeight-vx.y-1}var H5e=new ae,Dx=new d;function V2(e,t,n,i,o,r,s){if(ej)return;nj(e,t,n,i,o,r);let a=Dx,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,H5e);vx.x=e.tileWidth*(a.x-c.west)/c.width|0,vx.y=e.tileHeight*(c.north-a.y)/c.height|0,ej=!0}function W5e(e,t,n,i,o,r,s){return D.toDegrees(o)}function j5e(e,t,n,i,o,r,s){return D.toDegrees(r)}function Y5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.x}function q5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.y}var K5e=new Ae;function nj(e,t,n,i,o,r,s){if(!tj){if(e.tilingScheme.projection instanceof Hi)Dx.x=D.toDegrees(o),Dx.y=D.toDegrees(r);else{let a=K5e;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,Dx)}tj=!0}}function X5e(e,t,n,i,o,r,s){return s}var vc=LB;function Uf(e){vc.call(this,e)}Uf._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return Uf._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof vA)return Uf._metadataFailure(e,t);throw o}};Uf.fromUrl=async function(e,t){let n=we.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=t??V.EMPTY_OBJECT;let r=await Uf._requestMetadata(t,i,o);return new Uf(r)};l(Object.create)&&(Uf.prototype=Object.create(vc.prototype),Uf.prototype.constructor=Uf);function cce(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function lce(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}Uf._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,A=[],g=e.childNodes[0].childNodes;for(let P=0;P<g.length;P++)if(r.test(g.item(P).nodeName))u=g.item(P);else if(a.test(g.item(P).nodeName)){h=g.item(P);let N=g.item(P).childNodes;for(let L=0;L<N.length;L++)s.test(N.item(L).nodeName)&&A.push(N.item(L))}else c.test(g.item(P).nodeName)&&(f=g.item(P));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let _=t.fileExtension??u.getAttribute("extension"),y=t.tileWidth??parseInt(u.getAttribute("width"),10),C=t.tileHeight??parseInt(u.getAttribute("height"),10),E=t.minimumLevel??parseInt(A[0].getAttribute("order"),10),I=t.maximumLevel??parseInt(A[A.length-1].getAttribute("order"),10),b=h.getAttribute("profile"),S=t.tilingScheme;if(!l(S))if(b==="geodetic"||b==="global-geodetic")S=new co({ellipsoid:t.ellipsoid});else if(b==="mercator"||b==="global-mercator")S=new ws({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${b}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let B=ae.clone(t.rectangle);if(!l(B)){let P,N,L,p;t.flipXY??!1?(L=new k(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),p=new k(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(L=new k(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),p=new k(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let T=b==="geodetic"||b==="mercator";if(S.projection instanceof Hi||T)P=Ae.fromDegrees(L.x,L.y),N=Ae.fromDegrees(p.x,p.y);else{let w=S.projection;P=w.unproject(L),N=w.unproject(p)}B=new ae(P.longitude,P.latitude,N.longitude,N.latitude)}return B=cce(B,S),E=lce(S,B,E),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${_}`}),tilingScheme:S,rectangle:B,tileWidth:y,tileHeight:C,minimumLevel:E,maximumLevel:I,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};Uf._metadataFailure=function(e,t){let n=e.fileExtension??"png",i=e.tileWidth??256,o=e.tileHeight??256,r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),a=e.rectangle??s.rectangle;a=cce(a,s);let c=lce(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var iE=Uf;function uce(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}uce.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function J5e(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new ce(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new ce(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new ce(o)}return!0}function Z5e(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function $5e(e,t,n){try{let i=await e.fetchText();J5e(i,t)}catch(i){Z5e(i,e,n)}}function Xl(e){e=e??{},this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new Dt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${Xl.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new _e}Object.defineProperties(Xl.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});Xl.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=we.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new uce(n);s.channel=t,await $5e(r,s);let a=new Xl(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};Xl.prototype.getTileCredits=function(e,t,n){};Xl.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Kl.loadImage(this,o)};Xl.prototype.pickFeatures=function(e,t,n,i,o){};Xl._logoUrl=void 0;Object.defineProperties(Xl,{logoUrl:{get:function(){return l(Xl._logoUrl)||(Xl._logoUrl=fn("Assets/Images/google_earth_credit.png")),Xl._logoUrl},set:function(e){Xl._logoUrl=e}}});var H2=Xl;var e9e=/\/$/,fce=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function Rx(e){e=e??V.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();e9e.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Dt(s))):s=fce,this._resource=i,this._imageryProvider=new vc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(Rx.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});Rx.prototype.getTileCredits=function(e,t,n){};Rx.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rx.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rx._defaultCredit=fce;var W2=Rx;function oE(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??ae.MAX_VALUE,n=new co({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new _e;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i;let o=we.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(oE.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function t9e(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=zo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return ij(e,n,r);throw l(n)&&(n._hasError=!0),new ce(o)}async function ij(e,t,n){try{return await Kl.loadImage(null,e)}catch(i){return t9e(e,i,t,n)}}oE.fromUrl=async function(e,t){let n=we.createIfNeeded(e),i=await ij(n);t=t??V.EMPTY_OBJECT;let o=new oE({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};oE.prototype.getTileCredits=function(e,t,n){};oE.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await ij(this._resource,this);return this._image=o,zo.reportSuccess(this._errorEvent),o}return this._image};oE.prototype.pickFeatures=function(e,t,n,i,o){};var j2=oE;function n9e(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=i9e:e==="xml"?n=a9e:(e==="html"||e==="text")&&(n=dce)),this.callback=n}function i9e(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new Dm;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=Ae.fromDegrees(s,a)}t.push(r)}return t}var oj="http://www.mapinfo.com/mxp",o9e="http://www.esri.com/wms",r9e="http://www.opengis.net/wfs",s9e="http://www.opengis.net/gml";function a9e(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===oj)return c9e(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===o9e)return l9e(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===r9e)return u9e(e);if(t.localName==="ServiceExceptionReport")throw new ce(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?f9e(e):d9e(e)}function c9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(oj,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(oj,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),A=f.textContent.trim();s[h]=A}}let c=new Dm;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function l9e(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(Y2(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(Y2(a,i))}}return n}function u9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(s9e,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};rj(r,s),t.push(Y2(r,s))}return t}function f9e(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new ce("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};rj(s,a),t.push(Y2(s,a))}}return t}function rj(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&rj(o,t)&&(t[o.localName]=o.textContent)}return n}function Y2(e,t){let n=new Dm;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function d9e(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new Dm;return o.data=e,o.description=n.innerHTML,[o]}var h9e=/<body>\s*<\/body>/im,m9e=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,A9e=/<title>([\s\S]*)<\/title>/im;function dce(e){if(h9e.test(e)||m9e.test(e))return;let t,n=A9e.exec(e);n&&n.length>1&&(t=n[1]);let i=new Dm;return i.name=t,i.description=e,i.data=e,[i]}var Mx=n9e;function FB(e){e=e??V.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(FB.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});FB.prototype.getFromCache=function(e,t,n,i){let o=hce(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};FB.prototype.checkApproachingInterval=function(e,t,n,i){let o=hce(e,t,n),r=this._tilesRequestedForInterval,s=mce(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Ace(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};FB.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=mce(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Ace(this,c,r),a||s.push(c)}}};function hce(e,t,n){return`${e}-${t}-${n}`}function p9e(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function mce(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=K.secondsDifference(c.stop,i),++a):(s=K.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Ace(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=p9e(s),c=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var Nx=FB;var g9e=[3034,3035,3042,3043,3044],_9e=[4471,4559];function Jd(e){if(e=e??V.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new me("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Jd.DefaultParameters,!0),n.setQueryParameters(Jd.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(pce(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(pce(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return gce(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!_9e.includes(a)||g9e.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new vc({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new co({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Jd.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function gce(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function y9e(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Jd.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Jd.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Jd.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=gce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Jd.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return y9e(this,e,t,n,i,o,s)};Jd.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Jd.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Jd.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new Mx("json","application/json")),Object.freeze(new Mx("xml","text/xml")),Object.freeze(new Mx("text","text/html"))]);function pce(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var q2=Jd;var C9e=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function QB(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=we.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(C9e),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(h,A,g,m,_){return _ce(s,h,A,g,m,_)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new _e;let f=e.credit;this._credit=typeof f=="string"?new Dt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function _ce(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,A;if(!e._useKvp)A={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(A),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=wt(g,u)),l(f)&&(g=wt(g,f)),A={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(A)}return Kl.loadImage(e,h)}Object.defineProperties(QB.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});QB.prototype.getTileCredits=function(e,t,n){};QB.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=_ce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};QB.prototype.pickFeatures=function(e,t,n,i,o){};var K2=QB;var E9e={ARCGIS_MAPSERVER:__.fromUrl,BING:async(e,t)=>Q2.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,H2.fromUrl(e,n,t)},MAPBOX:(e,t)=>new W2({url:e,...t}),SINGLE_TILE:j2.fromUrl,TMS:iE.fromUrl,URL_TEMPLATE:(e,t)=>new vc({url:e,...t}),WMS:(e,t)=>new q2({url:e,...t}),WMTS:(e,t)=>new K2({url:e,...t})};function Rm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new _e}Object.defineProperties(Rm.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Rm.fromAssetId=async function(e,t){t=t??V.EMPTY_OBJECT;let n=wf._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Rm._endpointCache[i];l(o)||(o=n.fetchJson(),Rm._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new ce(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await iE.fromUrl(new wf(r,n));else{let u=E9e[a];if(!l(u))throw new ce(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new Rm(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=wf.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Rm.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Rm.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rm.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rm._endpointCache={};var y_=Rm;var I9e={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},C_=Object.freeze(I9e);function x9e(e){e=e??V.EMPTY_OBJECT;let t=e.style??C_.AERIAL;return y_.fromAssetId(t)}var E_=x9e;function ul(){me.throwInstantiationError()}Object.defineProperties(ul.prototype,{errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},hasWaterMask:{get:me.throwInstantiationError},hasVertexNormals:{get:me.throwInstantiationError},availability:{get:me.throwInstantiationError}});var yce=[];ul.getRegularGridIndices=function(e,t){let n=yce[e];l(n)||(yce[e]=n=[]);let i=n[t];return l(i)||(e*t<D.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),xce(e,t,i,0)),i};var Cce=[];ul.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=Cce[e];l(n)||(Cce[e]=n=[]);let i=n[t];if(!l(i)){let o=ul.getRegularGridIndices(e,t),r=Ice(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var Ece=[];ul.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=Ece[e];l(n)||(Ece[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=Ice(e,t),h=f.westIndicesSouthToNorth,A=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,_=Fe.createTypedArray(c,u);xce(e,t,_,0),ul.addSkirtIndices(h,A,g,m,o,_,r),i=n[t]={indices:_,westIndicesSouthToNorth:h,southIndicesEastToWest:A,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};ul.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=X2(e,a,r,s),a+=e.length,s=X2(t,a,r,s),a+=t.length,s=X2(n,a,r,s),a+=n.length,X2(i,a,r,s)};function Ice(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function xce(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function X2(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}ul.heightmapTerrainQuality=.25;ul.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*ul.heightmapTerrainQuality/(t*n)};ul.prototype.requestTileGeometry=me.throwInstantiationError;ul.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;ul.prototype.getTileDataAvailable=me.throwInstantiationError;ul.prototype.loadTileDataAvailability=me.throwInstantiationError;var Bs=ul;var J2=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var Z2=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var b9e={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},qn=Object.freeze(b9e);function Lx(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=qn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}Lx.createPlaceholder=function(e){let t=new Lx(e,0,0,0);return t.addReference(),t.state=qn.PLACEHOLDER,t};Lx.prototype.addReference=function(){++this.referenceCount};Lx.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};Lx.prototype.processStateMachine=function(e,t,n){this.state===qn.UNLOADED&&!n&&(this.state=qn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===qn.RECEIVED&&(this.state=qn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===qn.READY&&t&&!this.texture;(this.state===qn.TEXTURE_LOADED||i)&&(this.state=qn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var kB=Lx;function sj(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}sj.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};sj.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===qn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==qn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==qn.FAILED&&r.state!==qn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===qn.FAILED||i.state===qn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var UB=sj;function Pi(e,t){this._imageryProvider=e,this._readyEvent=new _e,this._errorEvent=new _e,t=t??V.EMPTY_OBJECT,e=e??V.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Pi.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Pi.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Pi.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Pi.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Pi.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Pi.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Pi.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Pi.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??ae.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new UB(kB.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Pi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Pi.DEFAULT_BRIGHTNESS=1;Pi.DEFAULT_CONTRAST=1;Pi.DEFAULT_HUE=0;Pi.DEFAULT_SATURATION=1;Pi.DEFAULT_GAMMA=1;Pi.DEFAULT_SPLIT=wr.NONE;Pi.DEFAULT_MINIFICATION_FILTER=Zt.LINEAR;Pi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Pi.fromProviderAsync=function(e,t){let n=new Pi(void 0,t);return D9e(n,Promise.resolve(e)),n};Pi.fromWorldImagery=function(e){return e=e??V.EMPTY_OBJECT,Pi.fromProviderAsync(E_({style:e.style}),e)};Pi.prototype.isBaseLayer=function(){return this._isBaseLayer};Pi.prototype.isDestroyed=function(){return!1};Pi.prototype.destroy=function(){return ue(this)};var Sce=new ae,bce=new ae,aj=new ae,wce=new ae;Pi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};Pi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Yi&&e.rectangle.north<Yi.MaximumLatitude&&e.rectangle.south>-Yi.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Sce),a=ae.intersection(e.rectangle,s,bce);if(!l(a)){if(!this.isBaseLayer())return!1;let T=s,w=e.rectangle;a=bce,w.south>=T.north?a.north=a.south=T.north:w.north<=T.south?a.north=a.south=T.south:(a.south=Math.max(w.south,T.south),a.north=Math.min(w.north,T.north)),w.west>=T.east?a.west=a.east=T.east:w.east<=T.west?a.west=a.east=T.west:(a.west=Math.max(w.west,T.west),a.east=Math.min(w.east,T.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=w9e(this,f,c);h=Math.max(0,h);let A=o.maximumLevel;if(h>A&&(h=A),l(o.minimumLevel)){let T=o.minimumLevel;h<T&&(h=T)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),_=g.positionToTileXY(ae.southeast(a),h),y=e.rectangle.width/512,C=e.rectangle.height/512,E=g.tileXYToRectangle(m.x,m.y,h);Math.abs(E.south-e.rectangle.north)<C&&m.y<_.y&&++m.y,Math.abs(E.east-e.rectangle.west)<y&&m.x<_.x&&++m.x;let I=g.tileXYToRectangle(_.x,_.y,h);Math.abs(I.north-e.rectangle.south)<C&&_.y>m.y&&--_.y,Math.abs(I.west-e.rectangle.east)<y&&_.x>m.x&&--_.x;let b=ae.clone(e.rectangle,wce),S=g.tileXYToRectangle(m.x,m.y,h),B=ae.intersection(S,s,aj),v;r?(g.rectangleToNativeRectangle(b,b),g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(B,B),g.rectangleToNativeRectangle(s,s),v=g.tileXYToNativeRectangle.bind(g),y=b.width/512,C=b.height/512):v=g.tileXYToRectangle.bind(g);let P,N=0,L=1,p;!this.isBaseLayer()&&Math.abs(B.west-b.west)>=y&&(N=Math.min(1,(B.west-b.west)/b.width)),!this.isBaseLayer()&&Math.abs(B.north-b.north)>=C&&(L=Math.max(0,(B.north-b.south)/b.height));let x=L;for(let T=m.x;T<=_.x;T++)if(P=N,S=v(T,m.y,h),B=ae.simpleIntersection(S,s,aj),!!l(B)){N=Math.min(1,(B.east-b.west)/b.width),T===_.x&&(this.isBaseLayer()||Math.abs(B.east-b.east)<y)&&(N=1),L=x;for(let w=m.y;w<=_.y;w++){if(p=L,S=v(T,w,h),B=ae.simpleIntersection(S,s,aj),!l(B))continue;L=Math.max(0,(B.south-b.south)/b.height),w===_.y&&(this.isBaseLayer()||Math.abs(B.south-b.south)<C)&&(L=0);let M=new se(P,L,N,p),O=this.getImageryFromCache(T,w,h);i.imagery.splice(n,0,new UB(O,M,r)),++n}}return!0};Pi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Sce),i=c.rectangleToNativeRectangle(i,wce)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new se(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Pi.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=qn.RECEIVED,e.request=void 0,zo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===hi.CANCELLED){e.state=qn.UNLOADED,e.request=void 0;return}e.state=qn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=zo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY});e.request=s,e.state=qn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=qn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Pi.prototype._createTextureWebGL=function(e,t){let n=new on({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Nt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Nt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?et.RGBA:et.RGB,sampler:n})};Pi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=qn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=qn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Yi?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=qn.TEXTURE_LOADED};function Tce(e,t,n){return`${e}:${t}:${n}`}Pi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===Zt.LINEAR&&i===pi.LINEAR&&!et.isCompressedFormat(t.pixelFormat)&&D.isPowerOfTwo(t.width)&&D.isPowerOfTwo(t.height)){n=Zt.LINEAR_MIPMAP_LINEAR;let r=qt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Tce(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Ud.NICEST),t.sampler=u}else{let r=Tce(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Pi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Hi)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Hl({persists:!0,owner:this,preExecute:function(c){S9e(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=qn.READY,t.releaseReference()},canceled:function(){t.state=qn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=qn.READY};Pi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Pi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Pi.prototype.getImageryFromCache=function(e,t,n,i){let o=Bce(e,t,n),r=this._imageryCache[o];return l(r)||(r=new kB(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Pi.prototype.removeImageryFromCache=function(e){let t=Bce(e.x,e.y,e.level);delete this._imageryCache[t]};function Bce(e,t,n){return JSON.stringify([e,t,n])}var $2={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new k,texture:void 0},T9e=jt.supportsTypedArrays()?new Float32Array(128):void 0;function S9e(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let y=new Float32Array(256),C=0;for(let B=0;B<64;++B){let v=B/63;y[C++]=0,y[C++]=v,y[C++]=1,y[C++]=v}let E={position:0,webMercatorT:1},I=Bs.getRegularGridIndices(2,64),b=Et.createIndexBuffer({context:t,typedArray:I,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});o.vertexArray=new li({context:t,attributes:[{index:E.position,vertexBuffer:Et.createVertexBuffer({context:t,typedArray:y,usage:Qe.STATIC_DRAW}),componentsPerAttribute:2},{index:E.webMercatorT,vertexBuffer:Et.createVertexBuffer({context:t,sizeInBytes:512,usage:Qe.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:b});let S=new We({sources:[Z2]});o.shaderProgram=ln.fromCache({context:t,vertexShaderSource:S,fragmentShaderSource:J2,attributeLocations:E}),o.sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;$2.textureDimensions.x=r,$2.textureDimensions.y=s,$2.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Nt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});D.isPowerOfTwo(r)&&D.isPowerOfTwo(s)&&h.generateMipmap(Ud.NICEST);let A=i.south,g=i.north,m=T9e,_=0;for(let y=0;y<64;++y){let C=y/63,E=D.lerp(A,g,C);a=Math.sin(E);let b=(.5*Math.log((1+a)/(1-a))-c)*f;m[_++]=b,m[_++]=b}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=$2,e.vertexArray=o.vertexArray}function w9e(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Hi?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function B9e(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function D9e(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){B9e(e._errorEvent,i)}}var ds=Pi;var cj=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},eQ=cj;var lj=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},GB=lj;var v9e=new ae,Dce=new ae,P9e=new ae,R9e=new ae,M9e=new ae,N9e=new ae,uj=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=ae.intersection(o.rectangle,n.rectangle,v9e),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),u=R9e;a.rectangleToNativeRectangle(t,u);let f=M9e;a.rectangleToNativeRectangle(s,f);let h=(g,m,_)=>{let y=a.tileXYToRectangle(g,m,_),C=ae.intersection(y,s,P9e);if(!l(C))return;let E=N9e;return a.rectangleToNativeRectangle(C,E),E};return e._computeImageryCoverages(n,c,r,u,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(ae.northwest(r),o),a=i.positionToTileXY(ae.southeast(r),o),c=new GB;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let u=t.width/512,f=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<f&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<u&&c.minX<c.maxX&&++c.minX;let m=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(m.north-t.south)<f&&c.maxY>c.minY&&--c.maxY,Math.abs(m.west-t.east)<u&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new ae),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=ae.intersection(t,n,Dce);return l(i)?i:e._clampRectangle(t,n,Dce)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let u=n.minY;u<=n.maxY;u++){let f=r(a,u,i);if(!l(f))continue;let h=e._localizeToCartesianRectangle(f,o,void 0),A=t.getImageryFromCache(a,u,i),g=new e(a,u,i,h,A);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new GB);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},zB=uj;var fj=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=Fn.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=Ht.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,u=t.byteOffset,f=t.byteStride,h=q.getSizeInBytes(s),A=o*h;if(!l(f)||f===A){let I=q.createTypedArray(s,r);return c.getBufferData(I,u),I}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let m=q.createTypedArray(s,r),_=f??A,y=new DataView(g.buffer,g.byteOffset,g.byteLength),C=new Array(o),E=e.createComponentsReader(s);for(let I=0;I<i;++I){let b=u+I*_;E(y,b,o,C);for(let S=0;S<o;++S)m[I*o+S]=C[S]}return m}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===Ht.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===Ht.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===Ht.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===Ht.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new me(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new d;for(let s=0;s<n;s++)d.unpack(t,s*3,r),Fn.octDecodeInRange(r,i,r),d.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new k;for(let a=0;a<n;a++)k.unpack(t,a*2,s),k.multiplyComponents(s,i,s),k.add(s,o,s),k.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new d;for(let a=0;a<n;a++)d.unpack(t,a*3,s),d.multiplyComponents(s,i,s),d.add(s,o,s),d.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new se;for(let a=0;a<n;a++)se.unpack(t,a*4,s),se.multiplyComponents(s,i,s),se.add(s,o,s),se.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=q.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let u=0;u<s;++u)a[u]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case q.BYTE:return function(n,i){return n.getInt8(i)};case q.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case q.SHORT:return function(n,i){return n.getInt16(i,!0)};case q.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case q.INT:return function(n,i){return n.getInt32(i,!0)};case q.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case q.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case q.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new me(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new d,r=t.length/3;for(let s=0;s<r;s++)d.unpack(t,s*3,o),R.multiplyByPoint(n,o,o),d.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===Me.TRIANGLES)return i;if(n===Me.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===Me.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new me(`The primitiveType must be TRIANGLES (${Me.TRIANGLES}, TRIANGLE_STRIP (${Me.TRIANGLE_STRIP}, or TRIANGLE_FAN (${Me.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Fe.UNSIGNED_BYTE:return new Uint8Array(n);case Fe.UNSIGNED_SHORT:return new Uint16Array(n);case Fe.UNSIGNED_INT:return new Uint32Array(n)}throw new me(`The indexDatatype must be UNSIGNED_BYTE (${Fe.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Fe.UNSIGNED_SHORT}, or UNSIGNED_INT (${Fe.UNSIGNED_INT}, but is ${t}`)}},tQ=fj;var dj=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Xe;Xe.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=tQ.readAttributeAsTypedArray(t),r=t.type,s=Ht.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new d,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new ae);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new d;return e.map(t,r=>(R.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new Ae;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new d;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new k,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,u=(a.y-n.y)*r,f=Math.min(Math.max(c,0),1),h=Math.min(Math.max(u,0),1);return i.x=f,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:ct.TEXCOORD,setIndex:0,componentDatatype:q.FLOAT,type:Ht.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new k(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},Ox=dj;var hj=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},nQ=hj;var mj=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new R,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new me("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new me("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=Et.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!R.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=Ox.createCartographicPositions(o,s,h),g=Ox.computeCartographicBoundingRectangle(A),m=new nQ(A,r,g,h);a.push(m)}return R.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=Ox.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return zB.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let u=Math.log2(s*c/a);return zB._clampImageryLevel(i,u)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let u=0;u<c;u++){let h=a[u].imagery;h.state===qn.READY||h.state===qn.FAILED||h.state===qn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new me("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new me(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new me("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),ue(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new R);let o=t.sceneGraph;return R.clone(R.IDENTITY,i),R.multiply(i,t.modelMatrix,i),R.multiply(i,o.components.transform,i),R.multiply(i,o.axisCorrectionMatrix,i),R.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Qt.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new me("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},Fx=mj;var Aj=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},iQ=Aj;var L9e=!1,O9e=new ae,F9e=new ae,pj=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=Fx._extractProjections(s),c=[...new Set(a)],u=e._computeIndexMapping(a,c),f=e._createImageryInputs(s,r,u);if(f.length===0)return;f.length>10&&(yt("imagery-texture-units",`Warning: Draped imagery requires ${f.length} texture units, truncating`),f.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let A=0;A<s.length;A++)h.push(s.get(A));e._processImageryInputs(h,t,f,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=Ht.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,u=e._createImageryUniforms(i);e._setImageryUniforms(c,u)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,pe.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new eQ;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==ds.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==ds.DEFAULT_CONTRAST,n.hue|=o.hue!==ds.DEFAULT_HUE,n.saturation|=o.saturation!==ds.DEFAULT_SATURATION,n.gamma|=o.gamma!==ds.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,pe.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),L9e&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",pe.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,u=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=u,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let f=i.imageryTextureColorToAlpha[o];if(l(f)||(f=new se,i.imageryTextureColorToAlpha[o]=f),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let A=s.colorToAlpha;f.x=A.red,f.y=A.green,f.z=A.blue,f.w=s.colorToAlphaThreshold}else f.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],u=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,f=n.coveragesForImageryLayer(s);for(let h=0;h<f.length;h++){let A=f[h],g=e._createImageryInput(s,A,u,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===qn.FAILED||r.state===qn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===qn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,u=new se(c.minX,c.minY,c.maxX,c.maxY);return new iQ(t,s,a,u,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,O9e),s=o.rectangleToNativeRectangle(i,F9e);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,u=t.width*i,f=t.height*o;return new se(a,c,u,f)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},oQ=pj;var rQ=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var Q9e={UNLIT:0,PBR:1},fp=Object.freeze(Q9e);var vce={name:"LightingPipelineStage"};vce.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===fp.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(rQ)};var sQ=vce;var aQ=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:k9e,MetallicRoughness:gj,SpecularGlossiness:_j,Specular:Pce,Clearcoat:Rce}=bn,Mce={name:"MaterialPipelineStage",_processTexture:Jl,_processTextureTransform:Nce};Mce.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;G9e(i,r,s,u,f,h,c),l(i.specularGlossiness)?z9e(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Qt.supportedExtensions.KHR_materials_specular&&V9e(i.specular,r,s,u,c),l(i.anisotropy)&&Qt.supportedExtensions.KHR_materials_anisotropy&&W9e(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Qt.supportedExtensions.KHR_materials_clearcoat&&j9e(i.clearcoat,r,s,u,c),Y9e(i.metallicRoughness,r,s,u,c));let A=Qt.getAttributeBySemantic(t,ct.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,m=e.lightingOptions;i.unlit||!A||a||g?m.lightingModel=fp.UNLIT:m.lightingModel=fp.PBR;let _=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=_;let y=e.alphaOptions;i.alphaMode===np.BLEND?y.pass=Be.TRANSLUCENT:i.alphaMode===np.MASK&&(y.alphaCutoff=i.alphaCutoff),s.addFragmentLines(aQ),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function Nce(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function U9e(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function Jl(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!J.equals(f,J.IDENTITY)&&Nce(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&U9e(e,t,n,i,o)}function G9e(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,k9e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&Jl(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&Jl(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&Jl(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function z9e(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!se.equals(s,_j.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,_j.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==_j.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function V9e(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==Pce.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,Pce.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var H9e=new d;function W9e(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&Jl(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,H9e)}}function j9e(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==Rce.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&Jl(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==Rce.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&Jl(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&Jl(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function Y9e(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&Jl(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!se.equals(s,gj.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&Jl(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==gj.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==gj.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var cQ=Mce;var fl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};fl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(fl.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${fl.METADATA_PICKING_VALUE_TYPE} value = ${fl.METADATA_PICKING_VALUE_TYPE}(${fl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${fl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${fl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${fl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${fl.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var Gf=fl;var lQ=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var tc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};tc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),$9e(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],A=h.semantic;A!==ct.POSITION&&A!==ct.NORMAL&&A!==ct.TANGENT||(K9e(e,h,e.attributeIndex,a),e.attributeIndex++)}}e6e(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(lQ);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=wt(s,e.uniformMap)};var q9e={attributeString:void 0,functionId:void 0};function K9e(e,t,n,i){let o=e.shaderBuilder;X9e(e,t,n);let r=J9e(t,q9e);Z9e(o,r,i)}function X9e(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:Ht.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function J9e(e,t){switch(e.semantic){case ct.POSITION:t.attributeString="Position",t.functionId=tc.FUNCTION_ID_GET_MORPHED_POSITION;break;case ct.NORMAL:t.attributeString="Normal",t.functionId=tc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case ct.TANGENT:t.attributeString="Tangent",t.functionId=tc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function Z9e(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function $9e(e){e.addFunction(tc.FUNCTION_ID_GET_MORPHED_POSITION,tc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_NORMAL,tc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_TANGENT,tc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function e6e(e){e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var uQ=tc;var Lce={name:"PickingPipelineStage"};Lce.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)t6e(e,t,a,i);else if(l(a))n6e(e,i);else{let c=Oce(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function Oce(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(Nr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function t6e(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Qt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Qt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return f.pickTexture??f.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function n6e(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let A=Oce(e,h),g=t.createPickId(A);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=G.floatToByte(m.red),o[h*4+1]=G.floatToByte(m.green),o[h*4+2]=G.floatToByte(m.blue),o[h*4+3]=G.floatToByte(m.alpha)}r._pickIds=i;let a=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var fQ=Lce;var i6e={ADD:0,REPLACE:1},rr=Object.freeze(i6e);var dQ=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var o6e=new se,Qce={name:"PointCloudStylingPipelineStage"};Qce.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let _=c6e(a),y=l6e(r,_);u6e(i,y);let E=f6e(y).indexOf("normalMC")>=0,I=Qt.getAttributeBySemantic(t,ct.NORMAL);if(E&&!I)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),y.styleTranslucent&&(e.alphaOptions.pass=Be.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,A,g;Nr.is3DTiles(o.type)&&(A=!0,h=o.content,g=h.tile.refine===rr.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(dQ);let m=e.uniformMap;m.model_pointCloudParameters=function(){let _=o6e,y=1;A&&(y=g?5:h.tileset.memoryAdjustedScreenSpaceError),_.x=f.maximumAttenuation??y,_.x*=n.pixelRatio;let C=r6e(e,t,f,h);_.y=C*f.geometricErrorScale;let E=n.context,I=n.camera.frustum,b;return n.mode===ie.SCENE2D||I instanceof An?b=Number.POSITIVE_INFINITY:b=E.drawingBufferHeight/n.camera.frustum.sseDenominator,_.z=b,A&&(_.w=h.tileset.timeSinceLoad),_}};var Fce=new d;function r6e(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Qt.getAttributeBySemantic(t,ct.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,Fce);a=R.multiplyByPointAsVector(s,a,Fce);let c=a.x*a.y*a.z;return D.cbrt(c/r)}var s6e={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},a6e={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function c6e(e){let t=ze(a6e);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var yj="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function l6e(e,t){let n=s6e,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${yj})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${yj})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${yj})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function u6e(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function Cj(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function f6e(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&Cj(t,o),l(n)&&Cj(n,o),l(i)&&Cj(i,o),o}var hQ=Qce;var mQ=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var AQ=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var kce={name:"PrimitiveOutlinePipelineStage"};kce.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:Ht.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=dx.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(mQ),i.addFragmentLines(AQ)};var pQ=kce;var Uce={name:"PrimitiveStatisticsPipelineStage",_countGeometry:Gce,_count2DPositions:zce,_countMorphTargetAttributes:Vce,_countMaterialTextures:Hce,_countFeatureIdTextures:Wce,_countBinaryMetadata:jce};Uce.process=function(e,t,n){let i=e.model,o=i.statistics;Gce(o,t),zce(o,e.runtimePrimitive),Vce(o,t),Hce(o,t.material),Wce(o,t.featureIds),jce(o,i)};function Gce(e,t){let n=l(t.indices)?t.indices.count:Qt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Me.POINTS?e.pointsLength+=n:Me.isTriangles(i)&&(e.trianglesLength+=d6e(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function d6e(e,t){switch(e){case Me.TRIANGLES:return t/3;case Me.TRIANGLE_STRIP:case Me.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function zce(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function Vce(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function Hce(e,t){let n=h6e(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function h6e(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function Wce(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof bn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function jce(e,t){let n=t.structuralMetadata;l(n)&&(m6e(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function m6e(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var gQ=Uce;var A6e=new R,p6e=new R,Yce={name:"SceneMode2DPipelineStage"};Yce.process=function(e,t,n){let i=Qt.getAttributeBySemantic(t,ct.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=R.multiplyTransformation(s,a,A6e),u=y6e(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let _=I6e(i,c,u,n);f.positionBuffer2D=_,r._modelResources.push(_),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let A=R.fromTranslation(u.center,new R),g=n.context,m={u_modelView2D:function(){return R.multiplyTransformation(g.uniformState.view,A,p6e)}};e.uniformMap=wt(m,e.uniformMap)};var g6e=new d,_6e=new d;function y6e(e,t,n){let i=R.multiplyByPoint(t,e.positionMin,g6e),o=to.computeActualEllipsoidPosition(n,i,i),r=R.multiplyByPoint(t,e.positionMax,_6e),s=to.computeActualEllipsoidPosition(n,r,r);return le.fromCornerPoints(o,s,new le)}var qce=new d;function C6e(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,qce),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function E6e(e,t,n,i){let o;l(e.quantization)?o=C6e(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,qce);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=R.multiplyByPoint(t,u,u),h=to.computeActualEllipsoidPosition(i,f,f),A=d.subtract(h,n,h);o[c]=A.x,o[c+1]=A.y,o[c+2]=A.z}return o}function I6e(e,t,n,i){let o=ze(i);o.mode=ie.COLUMBUS_VIEW;let r=n.center,s=E6e(e,t,r,o),a=Et.createVertexBuffer({context:i.context,typedArray:s,usage:Qe.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var _Q=Yce;var yQ=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var rE={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};rE.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),b6e(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(yQ);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=wt(r,e.uniformMap)};function x6e(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===ct.JOINTS||r.semantic===ct.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function b6e(e,t){e.addFunction(rE.FUNCTION_ID_GET_SKINNING_MATRIX,rE.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=x6e(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var CQ=rE;var EQ=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var Kce={name:"VerticalExaggerationPipelineStage"},T6e=new k;Kce.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(EQ),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return k.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,T6e)}};var IQ=Kce;var Ej={};function S6e(e){let t=Fe.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function w6e(e,t){let n=t.length,i=Fe.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function B6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function D6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function v6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function P6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}Ej.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Me.TRIANGLES)return i?w6e(t,n):S6e(t);if(e===Me.TRIANGLE_STRIP)return i?D6e(t,n):B6e(t);if(e===Me.TRIANGLE_FAN)return i?P6e(t,n):v6e(t)};Ej.getWireframeIndicesCount=function(e,t){return e===Me.TRIANGLES?t*2:e===Me.TRIANGLE_STRIP||e===Me.TRIANGLE_FAN?2+(t-2)*4:t};var VB=Ej;var Xce={name:"WireframePipelineStage"};Xce.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=R6e(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Me.LINES,e.count=VB.getWireframeIndicesCount(a,c)};function R6e(e,t,n){let o=Qt.getAttributeBySemantic(e,ct.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Fe.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=VB.createWireframeIndices(a,o,s),u=Fe.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Et.createIndexBuffer({context:n.context,typedArray:c,usage:Qe.STATIC_DRAW,indexDatatype:u})}var xQ=Xce;function Jce(e){e=e??V.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Jce.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,u=e.mode!==ie.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,A=l(i.skin),g=l(o.imageryLayers),m=l(r),y=!(m&&l(r.fragmentShaderText))||r.mode!==p_.REPLACE_MATERIAL,C=Qt.hasQuantizedAttributes(n.attributes),E=o.debugWireframe&&Me.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),I=o.pointCloudShading,b=l(I)&&I.attenuation,S=l(I)&&I.backFaceCulling,B=n.primitiveType===Me.POINTS&&(l(s)||b||S),v=o._enableShowOutline&&l(n.outlineCoordinates),P=M6e(o,i,n),N=l(o.classificationType);u&&t.push(_Q),t.push(N2),E&&t.push(xQ),N&&t.push(C2),h&&t.push(uQ),A&&t.push(CQ),B&&t.push(hQ),C&&t.push(P2),g&&(v?yt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(oQ)),y&&t.push(cQ),t.push(eE),t.push(Xd),t.push(Gf),P.hasPropertyTable&&(t.push(nE),t.push(y2),t.push(x2)),f&&t.push(IQ),m&&t.push(v2),t.push(sQ),o.allowPicking&&t.push(fQ),v&&t.push(pQ),t.push(_2),t.push(gQ)};function M6e(e,t,n){let i;return l(t.instances)&&(i=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var bQ=Jce;function Ij(e){e=e??V.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],N6e(this)}Object.defineProperties(Ij.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function N6e(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],A=Zce(f,h,new R);a.push(A)}}function Zce(e,t,n){let i=R.multiplyTransformation(e.transformToRoot,e.transform,n);return n=R.multiplyTransformation(i,t,n),n}Ij.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Zce(i,o,e[n])}};var TQ=Ij;function L6e(){this.pass=void 0,this.alphaCutoff=void 0}var Qx=L6e;function xj(e){this.name=e,this.fields=[]}xj.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};xj.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var SQ=xj;function bj(e){this.signature=e,this.body=[]}bj.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};bj.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var wQ=bj;function dl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(dl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});dl.prototype.addDefine=function(e,t,n){n=n??pe.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};dl.prototype.addStruct=function(e,t,n){this._structs[e]=new SQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};dl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};dl.prototype.addFunction=function(e,t,n){this._functions[e]=new wQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};dl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};dl.prototype.addUniform=function(e,t,n){n=n??pe.BOTH;let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};dl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};dl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=F6e(e),i};dl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};dl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=O6e(this),i=Q6e(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new We({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new We({defines:this._fragmentShaderParts.defineLines,sources:[s]});return ln.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};dl.prototype.clone=function(){return ze(this,!0)};function O6e(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}function F6e(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function Q6e(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}var I_=dl;function k6e(e){this.shaderBuilder=new I_,this.model=e,this.uniformMap={},this.alphaOptions=new Qx,this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var BQ=k6e;var DQ=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var vQ=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var PQ={name:"ModelSilhouettePipelineStage"};PQ.silhouettesLength=0;PQ.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++PQ.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(vQ),i.addFragmentLines(DQ),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=wt(o,e.uniformMap),e.hasSilhouette=!0};var RQ=PQ;var MQ=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var NQ={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};NQ.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(MQ);let o={};i.addUniform("float",NQ.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[NQ.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=wt(o,e.uniformMap)};var LQ=NQ;function U6e(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var OQ=U6e;function G6e(e){e=e??V.EMPTY_OBJECT,this.lightingModel=e.lightingModel??fp.UNLIT}var FQ=G6e;function z6e(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Qt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Qt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=le.fromCornerPoints(this.positionMin,this.positionMax,new le),this.lightingOptions=new FQ,this.pickId=void 0}var QQ=z6e;function Sj(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==Jn.CESIUM_3D_TILE,this._classifies3DTiles=o!==Jn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],j6e(this)}function V6e(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:e,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var H6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},W6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},tle=[];function j6e(e){let t=e._command,n=tle;if(e._useDebugWireframe){t.pass=Be.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=HB(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Be.TERRAIN_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandListTerrain=HB(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=ele(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Be.CESIUM_3D_TILE_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=HB(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=ele(e,n,e._commandList3DTilesPicking))}}function HB(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let A=t[h],g=nt.shallowClone(A);g.count=u,g.offset=f,n.push(g)}}return n}function Tj(e,t){let n=nt.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Be.TERRAIN_CLASSIFICATION?Zn.ALWAYS:Zn.EQUAL,o=V6e(i);return n.renderState=Ue.fromCache(o),n}function $ce(e,t){let n=nt.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ue.fromCache(H6e),n}var Y6e=[];function ele(e,t,n){let i=Ue.fromCache(W6e),o=t[0],r=t[1],s=nt.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=nt.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=Y6e;return c.length=0,c.push(s,a),HB(e,c,n)}Object.defineProperties(Sj.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=le.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});Sj.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){si(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&si(t,this._commandListTerrain),this._classifies3DTiles&&si(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=Tj(this._command,o),s=tle;s.length=0,s.push(r),this._commandListIgnoreShow=HB(this,s,this._commandListIgnoreShow)}si(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&si(t,this._commandListTerrainPicking),this._classifies3DTiles&&si(t,this._commandList3DTilesPicking)),t};var kQ=Sj;function UQ(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Be.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=R.clone(t.modelMatrix),this._boundingVolume=le.clone(t.boundingVolume),this._modelMatrix2D=new R,this._boundingVolume2D=new le,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,q6e(this)}function dp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}dp.clone=function(e){return new dp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function q6e(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new dp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new dp({command:tWe(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new dp({command:aWe(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new dp({command:cWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new dp({command:nWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new dp({command:iWe(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(UQ.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=le.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,X6e(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,J6e(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,Z6e(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,$6e(this))}}});function K6e(e,t){let n=e._modelMatrix;e._modelMatrix2D=R.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=D.sign(n[13])*2*D.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=le.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function X6e(e){let t=e.shadows,n=Dn.castShadows(t),i=Dn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function J6e(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ze(r.renderState,!0);s.cull.enabled=t,r.renderState=Ue.fromCache(s)}}}function Z6e(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ze(r.renderState,!0);s.cull.face=t,r.renderState=Ue.fromCache(s)}}}function $6e(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}UQ.prototype.pushCommands=function(e,t){let n=nle(this,e);n&&!this._has2DCommands&&(eWe(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(K6e(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Bm.ALL_OPAQUE&&Ux(t,this._translucentCommand,n),i===Bm.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||Ux(o._backfaceCommands,this._skipLodBackfaceCommand,n),oWe(this,r,n),Ux(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){Ux(t,this._silhouetteModelCommand,n);return}return Ux(t,this._originalCommand,n),t}};UQ.prototype.pushSilhouetteCommands=function(e,t){let n=nle(this,e);return Ux(t,this._silhouetteColorCommand,n),t};function Ux(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function nle(e,t){if(t.mode!==ie.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*D.PI;return o<s&&r>s||o<-s&&r>-s}function kx(e,t){if(!l(t))return;let n=dp.clone(t),i=nt.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function eWe(e){kx(e,e._originalCommand),kx(e,e._translucentCommand),kx(e,e._skipLodBackfaceCommand),kx(e,e._skipLodStencilCommand),kx(e,e._silhouetteModelCommand),kx(e,e._silhouetteColorCommand)}function tWe(e){let t=nt.shallowClone(e);t.pass=Be.TRANSLUCENT;let n=ze(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=pn.ALPHA_BLEND,t.renderState=Ue.fromCache(n),t}function nWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ee.ALWAYS,backFunction:ee.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ue.fromCache(o),i}function iWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);o.cull.enabled=!1,(e.pass===Be.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Be.TRANSLUCENT,o.depthMask=!1,o.blending=pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ee.NOTEQUAL,backFunction:ee.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP}};let s=ze(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ue.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function oWe(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=rWe(o);if(r!==s){let a=sWe(r),c=ze(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ue.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function rWe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function sWe(e){return Kt.CESIUM_3D_TILE_MASK|e<<Kt.SKIP_LOD_BIT_SHIFT}function aWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Mi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ze(t.uniformMap),o=new k(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ue.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function cWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Kt.SKIP_LOD_MASK,i.reference=Kt.CESIUM_3D_TILE_MASK,i.frontFunction=Zn.GREATER_OR_EQUAL,i.frontOperation.zPass=_t.REPLACE,i.backFunction=Zn.GREATER_OR_EQUAL,i.backOperation.zPass=_t.REPLACE,n.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,t.renderState=Ue.fromCache(n),t}var GQ=UQ;var zQ=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var VQ=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function ile(){}ile.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=lWe(e,n,t),o=uWe(e,i,t),r=e.model;return l(r.classificationType)?new kQ({primitiveRenderResources:e,command:o}):new GQ({primitiveRenderResources:e,command:o})};function lWe(e,t,n){t.addVertexLines(zQ),t.addFragmentLines(VQ);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function uWe(e,t,n){let i=fWe(e),o=new li({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ie.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=R.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new R),f=e.runtimePrimitive.boundingSphere2D;else{let C=c?a._computedModelMatrix:a._computedModelMatrix2D;u=R.multiplyTransformation(C,e.runtimeNode.computedTransform,new R),f=le.transform(e.boundingSphere,u)}let h=ze(Ue.fromCache(e.renderStateOptions),!0);h.cull.face=Qt.getCullFace(u,e.primitiveType),h=Ue.fromCache(h);let A=l(r.classificationType),g=A?!1:Dn.castShadows(r.shadows),m=A?!1:Dn.receiveShadows(r.shadows),_=A?void 0:e.pickId;return new nt({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:_,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function fWe(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var HQ=ile;function Pc(e){e=e??V.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=R.clone(R.IDENTITY),this._computedModelMatrix2D=R.clone(R.IDENTITY),this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new R),this._runtimeArticulations={},dWe(this)}Object.defineProperties(Pc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function dWe(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;ole(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let E=0;E<s;E++){let I=r[E],b=new n2({articulation:I,sceneGraph:e}),S=b.name;a[S]=b}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,A=R.IDENTITY;for(let E=0;E<h;E++){let I=n.nodes[E],b=rle(e,I,A);e._rootNodes.push(b)}let g=t.skins,m=e._runtimeSkins,_=g.length;for(let E=0;E<_;E++){let I=g[E];m.push(new TQ({skin:I,sceneGraph:e}))}let y=e._skinnedNodes,C=y.length;for(let E=0;E<C;E++){let I=y[E],b=e._runtimeNodes[I],B=c[I].skin.index;b._runtimeSkin=m[B],b.updateJointMatrices()}e.applyArticulations()}function ole(e,t){let n=e._components,i=e._model;e._computedModelMatrix=R.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=R.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=R.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var hWe=new d;function mWe(e,t){let n=e._computedModelMatrix,i=R.getTranslation(n,hWe);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=kt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=kt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=R.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=le.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function rle(e,t,n){let i=[],o=Qt.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],A=R.multiplyTransformation(n,o,new R),g=rle(e,h,A);i.push(g)}let s=new g2({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new bQ({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new l2(f,s);f._nodesByName[u]=h}return c}var AWe=new d,pWe=new d,gWe=new d,_We=new d;Pc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};Pc.prototype.buildRenderResources=function(e){let t=this._model,n=new BQ(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new OQ(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c];u.configurePipeline(e);let f=u.pipelineStages,h=new QQ(a,u);a.primitiveRenderResources[c]=h;for(let A=0;A<f.length;A++)f[A].process(h,u.primitive,e)}}return n};Pc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,AWe),i=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,pWe);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c],f=s.primitiveRenderResources[c];u.boundingSphere=le.clone(f.boundingSphere,new le);let h=R.multiplyByPoint(a,f.positionMin,gWe),A=R.multiplyByPoint(a,f.positionMax,_We);d.minimumByComponent(n,h,n),d.maximumByComponent(i,A,i)}}this._boundingSphere=le.fromCornerPoints(n,i,new le),this._boundingSphere=le.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=le.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=le.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};Pc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=HQ.buildModelDrawCommand(a,t);s.drawCommand=c}}};Pc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push($C),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push($F),n.isClippingEnabled()&&t.push(r2),n.isClippingPolygonsEnabled()&&t.push(c2),n.hasSilhouette(e)&&t.push(RQ),l(n.splitDirection)&&n.splitDirection!==wr.NONE&&t.push(LQ),Nr.is3DTiles(n.type)&&t.push(qF),i&&t.push(JF))};Pc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ie.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};Pc.prototype.updateModelMatrix=function(e,t){ole(this,e),t.mode!==ie.SCENE3D&&mWe(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};Pc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function sle(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);sle(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function WQ(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];sle(e,c,t,n,i)}}var yWe={backFaceCulling:void 0};Pc.prototype.updateBackFaceCulling=function(e){let t=yWe;t.backFaceCulling=e,WQ(this,!1,CWe,t)};function CWe(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var EWe={shadowMode:void 0};Pc.prototype.updateShadows=function(e){let t=EWe;t.shadowMode=e,WQ(this,!1,IWe,t)};function IWe(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var xWe={debugShowBoundingVolume:void 0};Pc.prototype.updateShowBoundingVolume=function(e){let t=xWe;t.debugShowBoundingVolume=e,WQ(this,!1,bWe,t)};function bWe(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var ale=[],TWe={frameState:void 0,hasSilhouette:void 0};Pc.prototype.pushDrawCommands=function(e){let t=ale;t.length=0;let n=TWe;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,WQ(this,!0,SWe,n),si(e.commandList,t)};function SWe(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=ale,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}Pc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};Pc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var jQ=Pc;function x_(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new Pt}Object.defineProperties(x_.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});x_.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};x_.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};x_.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};x_.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};x_.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};x_.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var YQ=x_;var fle=Es(CR(),1);var cle={},sE=Uint32Array.BYTES_PER_ELEMENT;cle.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=sE;let o=i.getUint32(t,!0);if(o!==1)throw new ce(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=sE,t+=sE;let r=i.getUint32(t,!0);if(r===0)throw new ce("Feature table must have a byte length greater than zero");t+=sE;let s=i.getUint32(t,!0);t+=sE;let a=i.getUint32(t,!0);t+=sE;let c=i.getUint32(t,!0);t+=sE;let u=yr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,A;a>0&&(h=yr(n,t,a),t+=a,c>0&&(A=new Uint8Array(e,t,c),t+=c));let g=new Sm(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new ce("Feature table global property: POINTS_LENGTH must be defined");let _=g.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(_)&&(_=d.unpack(_));let y=wWe(g,h);if(y.rtcCenter=_,y.pointsLength=m,!y.hasPositions){let C=BWe(g);y.positions=C,y.hasPositions=y.hasPositions||l(C)}if(!y.hasPositions)throw new ce("Either POSITION or POSITION_QUANTIZED must be defined.");if(!y.hasNormals){let C=vWe(g);y.normals=C,y.hasNormals=y.hasNormals||l(C)}if(!y.hasColors){let C=DWe(g);y.colors=C,y.hasColors=y.hasColors||l(C),y.hasConstantColor=l(y.constantColor),y.isTranslucent=l(C)&&C.isTranslucent}if(!y.hasBatchIds){let C=PWe(g);y.batchIds=C,y.hasBatchIds=y.hasBatchIds||l(C)}if(y.hasBatchIds){let C=g.getGlobalProperty("BATCH_LENGTH");if(!l(C))throw new ce("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");y.batchLength=C}return l(A)&&(A=new Uint8Array(A),y.batchTableJson=h,y.batchTableBinary=A),y};function wWe(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,A;if(l(s)){o=s.properties;let m=s.byteOffset,_=s.byteLength;if(!l(o)||!l(m)||!l(_))throw new ce("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+_),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),A=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:wt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:A,hasNormals:f,hasBatchIds:h}}function BWe(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",q.FLOAT,3),{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(r))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!0,componentDatatype:q.FLOAT,type:Ht.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:q.UNSIGNED_SHORT,quantizedType:Ht.VEC3}}}function DWe(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",q.UNSIGNED_BYTE,4),{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",q.UNSIGNED_BYTE,3),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",q.UNSIGNED_SHORT,1),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.FLOAT,type:Ht.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",q.UNSIGNED_BYTE,4),o=i[3],r=G.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:r,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:s}}}function vWe(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",q.FLOAT,3),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",q.UNSIGNED_BYTE,2),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:Ht.VEC2,quantizedComponentDatatype:q.UNSIGNED_BYTE,componentDatatype:q.FLOAT,type:Ht.VEC3}}function PWe(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",q.UNSIGNED_SHORT,1);return{name:ct.FEATURE_ID,semantic:ct.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:q.fromTypedArray(n),type:Ht.SCALAR}}}var Gx=cle;var RWe=bn.Components,MWe=bn.Scene,NWe=bn.Node,LWe=bn.Primitive,OWe=bn.Attribute,lle=bn.Quantization,FWe=bn.FeatureIdAttribute,QWe=bn.Material,kWe=bn.MetallicRoughness;function b_(e){e=e??V.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=dt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(b_.prototype=Object.create(qi.prototype),b_.prototype.constructor=b_);Object.defineProperties(b_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});b_.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=Gx.parse(this._arrayBuffer,this._byteOffset),this._state=dt.PROCESSING,this._promise=Promise.resolve(this)};b_.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===dt.READY)return!0;if(this._state===dt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=UWe(this,e.context)}return!1};function UWe(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=jg.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&GWe(e,i,r),ZWe(e,t),e._state=dt.READY,e}).catch(function(r){e.unload(),e._state=dt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function GWe(e,t,n){e._state=dt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:ct.POSITION,typedArray:n.POSITION.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT,o.quantizedType=Ht.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:ct.NORMAL,typedArray:n.NORMAL.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=q.UNSIGNED_BYTE,o.quantizedType=Ht.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:ct.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:q.fromTypedArray(a),type:Ht.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:zWe(u.componentsPerAttribute),componentType:VWe(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function zWe(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function VWe(e){switch(e){case ee.BYTE:return"BYTE";case ee.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ee.SHORT:return"SHORT";case ee.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ee.INT:return"INT";case ee.UNSIGNED_INT:return"UNSIGNED_INT";case ee.DOUBLE:return"DOUBLE";case ee.FLOAT:return"FLOAT"}}function WB(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new lle,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new lle;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new OWe;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Fn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=G.pack(t.constantColor,a)}else{let a=Et.createVertexBuffer({typedArray:i,context:n,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===ct.POSITION&&s&&(r.typedArray=i),r}var ule,qQ;function HWe(e){if(!l(qQ)){ule=new fle.default(0),qQ=new Array(e);for(let t=0;t<e;++t)qQ[t]=ule.random()}return qQ}var WWe=new d,jWe=new d,YWe=new d;function qWe(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=HWe(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,WWe),u=d.fromElements(a,a,a,jWe),f,h,A;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),A=d.unpack(t,h*3,YWe),d.minimumByComponent(c,A,c),d.maximumByComponent(u,A,u);e.min=d.clone(c),e.max=d.clone(u)}var KWe={name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:G.DARKGRAY,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:!1};function XWe(e,t,n){let i=[],o,r=t.positions;return l(r)&&(qWe(r),o=WB(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=WB(e,t.normals,n),i.push(o)),l(t.colors)?(o=WB(e,t.colors,n),i.push(o)):(o=WB(e,KWe,n),i.push(o)),l(t.batchIds)&&(o=WB(e,t.batchIds,n),i.push(o)),i}function JWe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?f_({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new Da({schema:{},propertyTables:[]})}function ZWe(e,t){let n=e._parsedContent,i=new kWe;i.metallicFactor=0,i.roughnessFactor=.9;let o=new QWe;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=np.BLEND);let s=!l(n.normals);o.unlit=s;let a=new LWe;if(a.attributes=XWe(e,n,t),a.primitiveType=Me.POINTS,a.material=o,l(n.batchIds)){let g=new FWe;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new NWe;c.index=0,c.primitives=[a];let u=new MWe;u.nodes=[c],u.upAxis=Ao.Z,u.forwardAxis=Ao.X;let f=new RWe;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=JWe(n,h),h.length>0&&$We(e,a,h,t),l(n.rtcCenter)&&(f.transform=R.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let A=n.positions;l(A)&&A.isQuantized&&(f.transform=R.multiplyByTranslation(f.transform,A.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function $We(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Et.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Qe.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}b_.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var KQ=b_;var eje=new d,tje=new d,nje=new d,ije=new R,oje=new R,rje=new R,sje=new Ae,aje=new le;function jB(e,t,n,i,o,r,s){if(!e._ready||n.mode===ie.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],A=h.node,g=R.clone(h.computedTransform,ije),m=R.clone(c.computedModelMatrix,oje),_=A.instances;l(_)&&_.transformInWorldSpace&&(m=R.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=R.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let y=R.multiplyTransformation(m,g,rje);n.mode!==ie.SCENE3D&&(y=kt.basisTo2D(n.mapProjection,y,y));let C=[];if(l(_)){let I=_.attributes[0].count,b=_.attributes[0].componentDatatype,S=12,B=h.transformsTypedArray;if(!l(B)){let v=h.instancingTransformsBuffer;l(v)&&n.context.webgl2&&(B=q.createTypedArray(b,I*S),v.getBufferData(B))}if(l(B))for(let v=0;v<I;v++){let P=v*S,N=new R(B[P],B[P+1],B[P+2],B[P+3],B[P+4],B[P+5],B[P+6],B[P+7],B[P+8],B[P+9],B[P+10],B[P+11],0,0,0,1);_.transformInWorldSpace?(R.multiplyTransformation(N,g,N),R.multiplyTransformation(m,N,N)):R.multiplyTransformation(N,y,N),C.push(N)}}C.length===0&&C.push(y);let E=h.runtimePrimitives.length;for(let I=0;I<E;I++){let b=h.runtimePrimitives[I],S=b.primitive;if(l(b.boundingSphere)&&!l(_)){let W=le.transform(b.boundingSphere,y,aje),Z=Ai.raySphere(t,W);if(!l(Z))continue}let B=Qt.getAttributeBySemantic(S,ct.POSITION),v=B.byteOffset,P=B.byteStride,N=B.count;if(!l(S.indices))continue;let L=S.indices.typedArray;if(!l(L)){let W=S.indices.buffer,Z=S.indices.count,Y=S.indices.indexDatatype;l(W)&&n.context.webgl2&&(Y===Fe.UNSIGNED_BYTE?L=new Uint8Array(Z):Y===Fe.UNSIGNED_SHORT?L=new Uint16Array(Z):Y===Fe.UNSIGNED_INT&&(L=new Uint32Array(Z)),W.getBufferData(L))}let p=B.typedArray,x=B.componentDatatype,T=B.type,w=B.quantization;l(w)&&(x=B.quantization.componentDatatype,T=B.quantization.type);let M=Ht.getNumberOfComponents(T),O=q.getSizeInBytes(x),U=!l(p)&&l(P)&&P!==M*O,Q=M,z=0;U&&(Q=P/O,z=v/O);let F=N*Q;if(!l(p)){let W=B.buffer;l(W)&&n.context.webgl2&&(p=q.createTypedArray(x,F),W.getBufferData(p,U?0:v,0,F)),w&&B.normalized&&(p=Fn.dequantize(p,x,T,N))}if(!l(L)||!l(p))return;r=r??te.default,i=i??1,o=o??0;let H=L.length;for(let W=0;W<H;W+=3){let Z=L[W],Y=L[W+1],$=L[W+2];for(let X of C){let he=wj(p,Z,z,Q,w,X,i,o,r,eje),ge=wj(p,Y,z,Q,w,X,i,o,r,tje),fe=wj(p,$,z,Q,w,X,i,o,r,nje),ye=Ai.rayTriangleParametric(t,he,ge,fe,e.backFaceCulling??!0);l(ye)&&ye<a&&ye>=0&&(a=ye)}}}}if(a!==Number.MAX_VALUE){if(s=In.getPoint(t,a,s),n.mode!==ie.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,A=f.unproject(s,sje);h.cartographicToCartesian(A,s)}return s}}function wj(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=Fn.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=R.multiplyByPoint(r,u,u),s!==1&&Yr.getPosition(u,c,s,a,u),u}var Bj=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},XQ=Bj;var Dj=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,u=new Fx(t,a,c);c.primitive.modelPrimitiveImagery=u,i.push(u)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new me("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new XQ(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),ue(this)}},JQ=Dj;function yo(e){e=e??V.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??Nr.GLTF,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=J.clone(J.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new WF(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=G.clone(e.color),this._colorBlendMode=e.colorBlendMode??al.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??G.RED;this._silhouetteColor=G.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Be.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new le,this._initialRadius=void 0,this._heightReference=e.heightReference??Ze.NONE,this._heightDirty=this._heightReference!==Ze.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new op(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Vs.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=R.clone(R.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?xm.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new JQ(this),this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new GI,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new s_(e.environmentMapOptions);s_.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Dn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new Dt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??wr.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this._classificationType=e.classificationType,this._statistics=new YQ,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new _e,this._readyEvent=new _e,this._texturesReadyEvent=new _e,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function vj(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function cje(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new YF({model:e,propertyTable:s});n.push(a)}return n}function lje(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Qt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Qt.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function Mj(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(yo.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){Mj(e,this._color)&&this.resetDrawCommands(),this._color=G.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!G.equals(e,this._silhouetteColor)){let t=Mj(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=G.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return mle(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Vs.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(xm.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(s_.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});yo.prototype.getNode=function(e){return this._nodesByName[e]};yo.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};yo.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};yo.prototype.getExtension=function(e){return this._loader.components.extensions[e]};yo.prototype.makeStyleDirty=function(){this._styleDirty=!0};yo.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var uje=new R,fje=new J,dje=new R;yo.prototype.update=function(e){let t=!1;try{t=hje(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")vj(this,i);else{let o=Qt.getError("model",this._resource,i);vj(this,o)}}if(mje(this,e),Aje(this,e),pje(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Qt.getError("model",this._resource,new ce("Failed to load model."));vj(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&cje(this,o);let r=new jQ({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===ie.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(gje(this),_je(this),yje(this,e),Cje(this),Eje(this,e),Ije(this,e),xje(this,e),bje(this,e),Tje(this,e),Sje(this,e),wje(this,e),this._defaultTexture=e.context.defaultTexture,Bje(this,e),Dje(this,e),vje(this),Pje(this,e),Lje(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),Mje(this),Oje(this,e),Fje(this),Qje(this,e)}};function hje(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function mje(e,t){l(e._customShader)&&e._customShader.update(t)}function Aje(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function pje(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function gje(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=lje(t,e),e._styleDirty=!0,e.resetDrawCommands())}function _je(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function yje(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&hle(e)}function hle(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Bm.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function Cje(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function Eje(e,t){e._silhouetteDirty&&(Ale(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function Ije(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function xje(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function bje(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function Tje(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function Sje(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function wje(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function Bje(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function Dje(e,t){R.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=R.clone(e.modelMatrix,e._modelMatrix))}var T_=new d,Pj=new Ae;function vje(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===Ze.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??te.default,i=e.modelMatrix;T_.x=i[12],T_.y=i[13],T_.z=i[14];let o=n.cartesianToCartographic(T_);l(e._clampedModelMatrix)||(e._clampedModelMatrix=R.clone(i,new R)),e._removeUpdateHeightCallback=t.updateHeight(o,dle(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=dle(e,n,o);Ae.clone(o,Pj),Pj.height=r,s(Pj)}e._heightDirty=!1,e._updateModelMatrix=!0}function Pje(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;mle(e,n),Rje(e,n,t)}function mle(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=le.transform(e._boundingSphere,t,e._boundingSphere)}function Rje(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);R.getTranslation(t,T_),e._sceneMode!==ie.SCENE3D&&to.computeActualEllipsoidPosition(n,T_,T_);let s=e._boundingSphere.radius,a=kje(T_,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function Mje(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var Nje=new J(1,0,0,0,0,1,0,-1,0);function Lje(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=fje,s=uje;if(s=R.multiply(o.uniformState.view3D,i,s),r=R.getRotation(s,r),r=J.transpose(r,r),e._iblReferenceFrameMatrix=J.multiply(Nje,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=dje;a=R.multiply(o.uniformState.view3D,i,a),a=R.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=R.inverseTranspose(a,e._clippingPlanesMatrix)}}function Oje(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function Fje(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Dt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Dt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Dt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function Qje(e,t){let n=Gje(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(zje(e,t),e._sceneGraph.pushDrawCommands(t))}var Rj=new le;function kje(e,t,n){return Rj.center=e,Rj.radius=t,n.camera.getPixelSize(Rj,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var ZQ=new d;function dle(e,t,n){return function(i){rI(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,ZQ);let o=e._clampedModelMatrix;R.clone(e.modelMatrix,o),o[12]=ZQ.x,o[13]=ZQ.y,o[14]=ZQ.z,e._heightDirty=!0}}var Uje=new d;function Gje(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ie.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=R.getTranslation(e.modelMatrix,Uje);to.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function zje(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}yo.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};yo.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Ale(e){return e.context.stencilBuffer}yo.prototype.hasSilhouette=function(e){return Ale(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};yo.prototype.hasSkipLevelOfDetail=function(e){if(!Nr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};yo.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};yo.prototype.pick=function(e,t,n,i,o){return jB(this,e,t,n,i,o)};yo.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};yo.prototype.isDestroyed=function(){return!1};yo.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};yo.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};yo.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};yo.fromGltfAsync=async function(e){e=e??V.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=we.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=we.createIfNeeded(t);let r=new Ff(n),a=l(e.content)?Nr.TILE_GLTF:Nr.GLTF,c=n.gltfResource,u=YB(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Qt.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new yo(u),A=h._resource.credits;if(l(A)){let g=A.length;for(let m=0;m<g;m++)h._resourceCredits.push(Dt.clone(A[m]))}return h};yo.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new PF(t);try{await n.load();let i=YB(n,Nr.TILE_B3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new KQ(t);try{await n.load();let i=YB(n,Nr.TILE_PNTS,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new QF(t);try{await n.load();let i=YB(n,Nr.TILE_I3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new MF(t),i=YB(n,Nr.TILE_GEOJSON,e);return new yo(i)};var Vje=new G;yo.prototype.applyColorAndShow=function(e){let t=G.clone(this._color,Vje),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):G.clone(G.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,Mj(t,this._color)&&this.resetDrawCommands()};yo.prototype.applyStyle=function(e){let t=this.type===Nr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),hle(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function YB(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Mm=yo;function $r(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties($r.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});$r.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};$r.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};$r.prototype.getExtension=function(e){return this._model.getExtension(e)};$r.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};$r.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};$r.prototype.applyDebugSettings=function(e,t){t=e?t:G.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};$r.prototype.applyStyle=function(e){this._model.style=e};$r.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:vu.REPEAT}),this._ready=!0)};$r.prototype.isDestroyed=function(){return!1};$r.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};$r.fromGltf=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Mm.fromGltfAsync(s);return o._model=c,o};$r.fromB3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await Mm.fromB3dm(a);return r._model=u,r};$r.fromI3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromI3dm(a);return r._model=c,r};$r.fromPnts=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromPnts(a);return r._model=c,r};$r.fromGeoJson=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{geoJson:i,resource:n}),a=await Mm.fromGeoJson(s);return o._model=a,o};$r.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,te.WGS84,n)};function qB(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Be.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return wt(i,o)}var zf=$r;function Vf(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Vf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Vf.fromJson=function(e,t,n,i){let o=new Vf(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};Vf.prototype.hasProperty=function(e,t){return!1};Vf.prototype.getFeature=function(e){};Vf.prototype.applyDebugSettings=function(e,t){};Vf.prototype.applyStyle=function(e){};Vf.prototype.update=function(e,t){};Vf.prototype.pick=function(e,t,n){};Vf.prototype.isDestroyed=function(){return!1};Vf.prototype.destroy=function(){return ue(this)};var $Q=Vf;function la(e,t,n,i){let o=la._verifyAttributes(t);n=n??0;let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let A=o[h];if(A.vertexBuffer){r.push(A);continue}c=A.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(A)}function f(h,A){return q.getSizeInBytes(A.componentDatatype)-q.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=la._vertexSizeInBytes(a),A=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:A,needsCommit:!1,arrayBuffer:void 0,arrayViews:la._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}la._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??q.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Qe.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};la._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*q.getSizeInBytes(a.componentDatatype)}let i=n>0?q.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};la._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/q.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*q.getSizeInBytes(a)}return n};la.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];la._resize(o,this._size),la._appendWriters(this.writers,o)}Nj(this)};la._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=q.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var Hje=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];la._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=Hje[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};la.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=Wje(this,i)||t;if(t||!l(this.va)){Nj(this);let s=this.va=[],a=D.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);la._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new li({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function Wje(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Et.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}la._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};la.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)jje(n[i],e,t)};function jje(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}la.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function Nj(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}la.prototype.isDestroyed=function(){return!1};la.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return Nj(this),ue(this)};var S_=la;var ek=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var tk=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var Yje=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),Ds=Yje;function hp(e){this._billboardCollection=e,this._id=void 0,this._loadState=Ds.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(hp.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===Ds.LOADED}},hasImage:{get:function(){return this._loadState!==Ds.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});hp.prototype.unload=async function(){this._loadState!==Ds.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=Ds.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};hp.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===Ds.LOADING||t.loadState===Ds.LOADED){hp.clone(o,this);return}l(o)||(o=new hp(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=Ds.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=Ds.ERROR,o._loadError=c,this._id!==e)return;this._loadState=Ds.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=Ds.FAILED,o._index=-1,this._id!==e)return;this._loadState=Ds.FAILED,this._index=-1;return}o._index=r,o._loadState=Ds.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=Ds.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};hp.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=Ds.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=Ds.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=Ds.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=Ds.LOADED,this.dirty=!0};hp.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};hp.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var w_=hp;function Bi(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._translate=new k(0,0),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._heightReference=e.heightReference??Ze.NONE,this._verticalOrigin=e.verticalOrigin??Wn.CENTER,this._horizontalOrigin=e.horizontalOrigin??Ri.CENTER,this._scale=e.scale??1,this._color=G.clone(e.color??G.WHITE),this._rotation=e.rotation??0,this._alignedAxis=d.clone(e.alignedAxis??d.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new w_(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Xn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ie.SCENE3D,this._clusterShow=!0,this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??wr.NONE}var ple=Bi.SHOW_INDEX=0,ik=Bi.POSITION_INDEX=1,Ele=Bi.PIXEL_OFFSET_INDEX=2,qje=Bi.EYE_OFFSET_INDEX=3,Kje=Bi.HORIZONTAL_ORIGIN_INDEX=4,Xje=Bi.VERTICAL_ORIGIN_INDEX=5,Jje=Bi.SCALE_INDEX=6,gle=Bi.IMAGE_INDEX_INDEX=7,_le=Bi.COLOR_INDEX=8,Zje=Bi.ROTATION_INDEX=9,$je=Bi.ALIGNED_AXIS_INDEX=10,eYe=Bi.SCALE_BY_DISTANCE_INDEX=11,tYe=Bi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,nYe=Bi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,iYe=Bi.DISTANCE_DISPLAY_CONDITION=14,oYe=Bi.DISABLE_DEPTH_DISTANCE=15;Bi.TEXTURE_COORDINATE_BOUNDS=16;var yle=Bi.SDF_INDEX=17,rYe=Bi.SPLIT_DIRECTION_INDEX=18;Bi.NUMBER_OF_PROPERTIES=19;function sr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(Bi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,sr(this,ple))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),sr(this,ik))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),sr(this,ik))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),sr(this,eYe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),sr(this,tYe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;Yt.equals(t,e)||(this._pixelOffsetScaleByDistance=Yt.clone(e,t),sr(this,nYe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),sr(this,qje))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,sr(this,Kje))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,sr(this,Xje))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,sr(this,Jje))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),sr(this,_le))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,sr(this,Zje))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),sr(this,$je))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,sr(this,gle))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,sr(this,gle))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,sr(this,_le))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),sr(this,iYe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,sr(this,oYe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof we?t=e._url:l(e.src)?t=e.src:t=Xn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),sr(this,ik)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,sr(this,ple))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),sr(this,yle))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,sr(this,yle))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,sr(this,rYe))}}});Bi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Bi.prototype._updateClamping=function(){Bi._updateClamping(this._billboardCollection,this)};var ok=new Ae;Bi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??te.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===Ze.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===Ze.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);rI(t._heightReference)&&(t._mode===ie.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),Ae.clone(s,ok);let c=n.getHeight(s,t._heightReference);l(c)&&(ok.height=c),a(ok)};Bi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};Bi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};Bi.prototype.setImageTexture=function(e){w_.clone(e,this._imageTexture)};Bi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};Bi.prototype._setTranslate=function(e){let t=this._translate;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))};Bi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};Bi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),sr(this,ik)};var Cle=new se;Bi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ie.SCENE3D?t:(R.multiplyByPoint(i,t,Cle),to.computeActualEllipsoidPosition(n,Cle))};var Ile=new d;Bi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=R.multiplyByPoint(e,t,Ile),a=to.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return k.add(a,i,a),a};var nk=new k(0,0);Bi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new k),k.clone(this._pixelOffset,nk),k.add(nk,this._translate,nk);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ie.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,ok);o=a.cartographicToCartesian(c,Ile),i=R.IDENTITY}return Bi._computeScreenSpacePosition(i,o,this._eyeOffset,nk,e,t)};Bi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===Ri.RIGHT?s-=i:e.horizontalOrigin===Ri.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?a-=o:e.verticalOrigin===Wn.CENTER&&(a-=o*.5),l(n)||(n=new Xe),n.x=s,n.y=a,n.width=i,n.height=o,n};Bi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&G.equals(this._color,e._color)&&k.equals(this._pixelOffset,e._pixelOffset)&&k.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Bi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var xo=Bi;var sYe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Vo=Object.freeze(sYe);var aYe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},Pa=Object.freeze(aYe);function KB({x:e,y:t,width:n,height:i}){this.rectangle=new Xe(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function Lj({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new KB({x:n,y:n,width:e-2*n,height:t-2*n})}Lj.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};Lj.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new KB({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new KB({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new KB({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new KB({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var XB=Lj;var xle=16;function Zl(e){e=e??V.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new k(xle,xle);this._pixelFormat=e.pixelFormat??et.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Xn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(Zl.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});Zl.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Xe),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};Zl.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Nt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new as({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,A=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],_=h[g];if(!l(m)||!l(_)||l(A.get(g)))continue;let{x:y,y:C,width:E,height:I}=m;a.copyTexSubImage2D(c,0,y,C,_.x,_.y,E,I)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};Zl.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((E,I)=>new ble({index:I,image:E})).filter((E,I)=>l(E.image)&&!l(c.get(I))),f=0,h=0,A=0;for(let E=t;E<o.length;++E){let{width:I,height:b}=o[E].image;f=Math.max(f,I),h=Math.max(h,b),A+=I*b,u.push(o[E])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=D.nextPowerOfTwo(s),a=D.nextPowerOfTwo(a));let g=A,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:E},{image:I})=>I.height*I.width-E.height*E.width);let _=new Array(this._nextIndex);for(let E of this._subRegions.keys())l(c.get(E))&&(_[E]=i[E]);let y,C=!1;for(;!C;){y=new XB({height:a,width:s,borderPadding:n});let E;for(E=0;E<u.length;++E){let{index:I,image:b}=u[E];if(!l(b))continue;let S=y.pack(I,b);if(!l(S)){s>a?a*=2:s*=2;break}_[I]=S.rectangle}C=E===u.length}this._texturePacker=y,this._texture=this._copyFromTexture(e,s,a,_),r.destroy(),this._rectangles=_,this._guid=Xn()};Zl.prototype.getImageIndex=function(e){return this._indexById.get(e)};Zl.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function ble({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}Zl.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new ble({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};Zl.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};Zl.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Nt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new XB({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function cYe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof we)&&(e=we.createIfNeeded(e).fetchImage()),e}Zl.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await cYe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};Zl.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new ce(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};Zl.prototype.isDestroyed=function(){return!1};Zl.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var zx=Zl;var lYe=xo.SHOW_INDEX,JB=xo.POSITION_INDEX,Tle=xo.PIXEL_OFFSET_INDEX,Sle=xo.EYE_OFFSET_INDEX,uYe=xo.HORIZONTAL_ORIGIN_INDEX,fYe=xo.VERTICAL_ORIGIN_INDEX,dYe=xo.SCALE_INDEX,aE=xo.IMAGE_INDEX_INDEX,wle=xo.COLOR_INDEX,hYe=xo.ROTATION_INDEX,mYe=xo.ALIGNED_AXIS_INDEX,Ble=xo.SCALE_BY_DISTANCE_INDEX,Dle=xo.TRANSLUCENCY_BY_DISTANCE_INDEX,vle=xo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,Ple=xo.DISTANCE_DISPLAY_CONDITION,AYe=xo.DISABLE_DEPTH_DISTANCE,pYe=xo.TEXTURE_COORDINATE_BOUNDS,Rle=xo.SDF_INDEX,Mle=xo.SPLIT_DIRECTION_INDEX,zj=xo.NUMBER_OF_PROPERTIES,Co,gYe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},_Ye={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function Wf(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new zx),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(zj),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW],this._highlightColor=G.clone(G.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(Wf.prototype,{length:{get:function(){return Vj(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function Nle(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Wf.prototype.add=function(e){let t=new xo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};Wf.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Wf.prototype.removeAll=function(){Nle(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function Vj(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}Wf.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};Wf.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};Wf.prototype.get=function(e){return Vj(this),this._billboards[e]};var Oj;function yYe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function CYe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function EYe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}Wf.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<zj;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function IYe(e,t,n,i,o,r){let s=[{index:Co.positionHighAndScale,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Tle]},{index:Co.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dle]},{index:Co.compressedAttribute2,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[wle]},{index:Co.eyeOffset,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Sle]},{index:Co.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ble]},{index:Co.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vle]},{index:Co.compressedAttribute3,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ple]},{index:Co.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[pYe]},{index:Co.splitDirection,componentsPerAttribute:1,componentDatatype:q.FLOAT,usage:n[Mle]}];i&&s.push({index:Co.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:EYe(e)}),l(o)&&s.push({index:Co.a_batchId,componentsPerAttribute:1,componentDatatype:q.FLOAT,bufferUsage:Qe.STATIC_DRAW}),r&&s.push({index:Co.sdf,componentsPerAttribute:2,componentDatatype:q.FLOAT,usage:n[Rle]});let a=i?t:4*t;return new S_(e,s,a,i)}var Fj=new ei;function Lle(e,t,n,i){let o,r=n[Co.positionHighAndScale],s=n[Co.positionLowAndRotation],a=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(a,Fj);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=Fj.high,h=Fj.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var $l=new k,Hf=32768,Vx=65536,Qj=4096,Nm=256,xYe=128,bYe=32,TYe=8,Ole=4,SYe=1/256,Fle=0,Qle=2,kle=3,Ule=1,Hj=new Xe;function Gle(e,t,n,i){let o,r=n[Co.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let A=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===Wn.BASELINE&&(g=Wn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&A===Ri.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===Wn.CENTER;let _=0,y=0,C=0,E=0;if(i.ready){let M=i.computeTextureCoordinates(Hj);_=M.x,y=M.y,C=M.width,E=M.height}let I=_+C,b=y+E,S=Math.floor(D.clamp(a,-Hf,Hf)+Hf)*xYe;S+=(A+1)*bYe,S+=(g+1)*TYe,S+=(m?1:0)*Ole;let B=Math.floor(D.clamp(c,-Hf,Hf)+Hf)*Nm,v=Math.floor(D.clamp(f,-Hf,Hf)+Hf)*Nm,P=(D.clamp(h,-Hf,Hf)+Hf)*SYe,N=Math.floor(P),L=Math.floor((P-N)*Nm);B+=N,v+=L,$l.x=_,$l.y=y;let p=Fn.compressTextureCoordinates($l);$l.x=I;let x=Fn.compressTextureCoordinates($l);$l.y=b;let T=Fn.compressTextureCoordinates($l);$l.x=_;let w=Fn.compressTextureCoordinates($l);e._instanced?(o=i._index,r(o,S,B,v,p)):(o=i._index*4,r(o+0,S+Fle,B,v,p),r(o+1,S+Qle,B,v,x),r(o+2,S+kle,B,v,T),r(o+3,S+Ule,B,v,w))}function zle(e,t,n,i){let o,r=n[Co.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let A=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,A);let g=D.clamp(A,0,Vx),m=0;Math.abs(d.magnitudeSquared(s)-1)<D.EPSILON6&&(m=Fn.octEncodeFloat(s)),c=D.clamp(c,0,1),c=c===1?255:c*255|0,g=g*Nm+c,f=D.clamp(f,0,1),f=f===1?255:f*255|0,m=m*Nm+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function Uj(e,t,n,i){let o,r=n[Co.compressedAttribute2],s=i.color,a=l(e._batchTable)?G.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<D.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=i.height??0;e._maxSize=Math.max(e._maxSize,f);let h=i._labelHorizontalOrigin??-2;h+=2;let A=f*Ole+h,g=G.floatToByte(s.red),m=G.floatToByte(s.green),_=G.floatToByte(s.blue),y=g*Vx+m*Nm+_;g=G.floatToByte(a.red),m=G.floatToByte(a.green),_=G.floatToByte(a.blue);let C=g*Vx+m*Nm+_,E=G.floatToByte(s.alpha)*Vx+G.floatToByte(a.alpha)*Nm;E+=c*2+u,e._instanced?(o=i._index,r(o,y,C,E,A)):(o=i._index*4,r(o+0,y,C,E,A),r(o+1,y,C,E,A),r(o+2,y,C,E,A),r(o+3,y,C,E,A))}function Gj(e,t,n,i){let o,r=n[Co.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==Ze.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if($l.x=0,$l.y=0,i.ready){let u=i.computeTextureCoordinates(Hj);$l.x=u.width,$l.y=u.height}let c=Fn.compressTextureCoordinates($l);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function Vle(e,t,n,i){let o,r=n[Co.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Hle(e,t,n,i){let o,r=n[Co.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Wle(e,t,n,i){let o,r=n[Co.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=_f(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,A;l(i._labelDimensions)?(A=i._labelDimensions.x,h=i._labelDimensions.y):(A=i.width??0,h=i.height??0);let g=Math.floor(D.clamp(A,0,Qj)),m=Math.floor(D.clamp(h,0,Qj)),_=g*Qj+m;e._instanced?(o=i._index,r(o,s,a,u,_)):(o=i._index*4,r(o+0,s,a,u,_),r(o+1,s,a,u,_),r(o+2,s,a,u,_),r(o+3,s,a,u,_))}function jle(e,t,n,i){if(_f(i.heightReference)){let A=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,_=l(A.globe)&&A.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&_}let o,r=n[Co.textureCoordinateBoundsOrLabelTranslate];if(qt.maximumVertexTextureImageUnits>0){let A=0,g=0;l(i._labelTranslate)&&(A=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,A,g,0,0)):(o=i._index*4,r(o+0,A,g,0,0),r(o+1,A,g,0,0),r(o+2,A,g,0,0),r(o+3,A,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let A=i.computeTextureCoordinates(Hj);s=A.x,a=A.y,c=A.width,u=A.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function wYe(e,t,n,i){if(!l(e._batchTable))return;let o=n[Co.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function Yle(e,t,n,i){if(!e._sdf)return;let o,r=n[Co.sdf],s=i.outlineColor,a=i.outlineWidth,c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue),h=c*Vx+u*Nm+f,A=a/Pa.RADIUS,g=G.floatToByte(s.alpha)*Vx+G.floatToByte(A)*Nm;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+Fle,g),r(o+1,h+Qle,g),r(o+2,h+kle,g),r(o+3,h+Ule,g))}function qle(e,t,n,i){let o=n[Co.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function BYe(e,t,n,i){Lle(e,t,n,i),Gle(e,t,n,i),zle(e,t,n,i),Uj(e,t,n,i),Gj(e,t,n,i),Vle(e,t,n,i),Hle(e,t,n,i),Wle(e,t,n,i),jle(e,t,n,i),wYe(e,t,n,i),Yle(e,t,n,i),qle(e,t,n,i)}function kj(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=xo._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DYe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,i,i.length,t,r,!0)):n===ie.MORPHING?kj(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,o,e._billboardsToUpdateIndex,t,r,!1)}function vYe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function PYe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Be.OVERLAY,i}var RYe=[];Wf.prototype.update=function(e){if(Vj(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,Co=this._instanced?_Ye:gYe,Oj=this._instanced?CYe:yYe;let n=this._billboards,i=n.length,o=!0;for(let P=0;P<i;++P){let N=n[P];l(N.loadError)&&(console.error(`Error loading image for billboard: ${N.loadError}`),N.image=void 0),N.textureDirty&&this._updateBillboard(N,aE),N.show&&(o=o&&N.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;DYe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,A=e.passes,g=A.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let P=0;P<zj;++P)c[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=IYe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let P=0;P<i;++P){let N=this._billboards[P];N._dirty=!1,N.textureDirty=!1,BYe(this,e,h,N)}this._vaf.commit(Oj(t))}this._billboardsToUpdateIndex=0}else if(a>0){let P=RYe;P.length=0,(c[JB]||c[hYe]||c[dYe])&&P.push(Lle),(c[aE]||c[Tle]||c[uYe]||c[fYe]||c[lYe])&&(P.push(Gle),this._instanced&&P.push(Gj)),(c[aE]||c[mYe]||c[Dle])&&(P.push(zle),P.push(Uj)),(c[aE]||c[wle])&&P.push(Uj),(c[aE]||c[Sle])&&P.push(Gj),c[Ble]&&P.push(Vle),c[vle]&&P.push(Hle),(c[Ple]||c[AYe]||c[aE]||c[JB])&&P.push(Wle),(c[aE]||c[JB])&&P.push(jle),c[Rle]&&P.push(Yle),c[Mle]&&P.push(qle);let N=P.length;if(h=this._vaf.writers,a/i>.1){for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p)}this._vaf.commit(Oj(t))}else{for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p);this._instanced?this._vaf.subCommit(p._index,1):this._vaf.subCommit(p._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,_=R.IDENTITY;e.mode===ie.SCENE3D?(_=this.modelMatrix,m=le.clone(this._baseVolumeWC,this._boundingVolume)):m=le.clone(this._baseVolume2D,this._boundingVolume),vYe(this,e,m);let y=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,y){this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!0}):this._rsOpaque=void 0;let P=this._blendOption===Vo.TRANSLUCENT;this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:P?ee.LEQUAL:ee.LESS},depthMask:P,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let C,E,I,b,S,B=qt.maximumVertexTextureImageUnits>0;if(y||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){C=tk,E=ek,S=[],l(this._batchTable)&&(S.push("VECTOR_TILE"),C=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(C),E=this._batchTable.getFragmentShaderCallback(!1,void 0)(E)),I=new We({defines:S,sources:[C]}),this._instanced&&I.defines.push("INSTANCED"),this._shaderRotation&&I.defines.push("ROTATION"),this._shaderAlignedAxis&&I.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&I.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&I.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&I.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&I.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&I.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(B?I.defines.push("VERTEX_DEPTH_CHECK"):I.defines.push("FRAGMENT_DEPTH_CHECK"));let P=1-Pa.CUTOFF;this._sdf&&I.defines.push("SDF");let N=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(b=new We({defines:["OPAQUE",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co}),b=new We({defines:["TRANSLUCENT",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.OPAQUE&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.TRANSLUCENT&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let v=e.commandList;if(A.render||A.pick){let P=this._colorCommands,N=this._blendOption===Vo.OPAQUE,L=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT,p=this._vaf.va,x=p.length,T=this._uniforms,w;l(this._batchTable)?(T=this._batchTable.getUniformMapCallback()(T),w=this._batchTable.getPickId()):w="v_pickColor",P.length=x;let M=L?x*2:x;for(let O=0;O<M;++O){let U=P[O];l(U)||(U=P[O]=new nt);let Q=N||L&&O%2===0;U.pass=Q||!L?Be.OPAQUE:Be.TRANSLUCENT,U.owner=this;let z=L?Math.floor(O/2):O;U.boundingVolume=m,U.modelMatrix=_,U.count=p[z].indicesCount,U.shaderProgram=Q?this._sp:this._spTranslucent,U.uniformMap=T,U.vertexArray=p[z].va,U.renderState=Q?this._rsOpaque:this._rsTranslucent,U.debugShowBoundingVolume=this.debugShowBoundingVolume,U.pickId=w,this._instanced&&(U.count=6,U.instanceCount=i),v.push(U)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=PYe(this,e.context)),v.push(this.debugCommand))}this._allBillboardsReady=o};Wf.prototype.isDestroyed=function(){return!1};Wf.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Nle(this._billboards),ue(this)};var jf=Wf;function MYe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var Hx=MYe;function Ra(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),Wx(this)}var NYe=new Ae;Object.defineProperties(Ra.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=G.clone(e,this._color),Wx(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,Wx(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=G.clone(e,this._pointOutlineColor),Wx(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,Wx(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,NYe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=G.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&Wx(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Ra.defaultColor=G.WHITE;Ra.defaultPointOutlineColor=G.BLACK;Ra.defaultPointOutlineWidth=0;Ra.defaultPointSize=8;function Wx(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Ra.defaultColor,i=e._pointOutlineColor??Ra.defaultPointOutlineColor,o=e._pointOutlineWidth??Ra.defaultPointOutlineWidth,r=e._pointSize??Ra.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(G.equals(n,s)&&G.equals(i,a)&&o===c&&r===u)return;e._billboardColor=G.clone(n,e._billboardColor),e._billboardOutlineColor=G.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),A=i.toCssColorString(),g=JSON.stringify([h,r,A,o]);t.setImage(g,Hx(f,h,A,o,r))}Ra.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Ra.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Ra.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Ra.prototype.getPropertyInherited=function(e){return Sa.getPropertyInherited(this._content,this._batchId,e)};Ra.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Ra.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Ra.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Ra.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var B_=Ra;function LYe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,A=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,A)),o&&(g.fillStyle="black",g.fillText(t,u/2,A));let m=g.getImageData(0,0,f,h).data,_=m.length,y=f*4,C,E,I,b;for(C=0;C<_;++C)if(m[C]!==255){I=C/y|0;break}for(C=_-1;C>=0;--C)if(m[C]!==255){b=C/y|0;break}let S=-1;for(C=0;C<f&&S===-1;++C)for(E=0;E<h;++E){let B=C*4+E*y;if(m[B]!==255||m[B+1]!==255||m[B+2]!==255||m[B+3]!==255){S=C;break}}return{width:r.width,height:b-I,ascent:A-I,descent:b-A,minx:S-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var cE;function OYe(e,t){if(e==="")return;t=t??V.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??G.TRANSPARENT,a=t.padding??0,c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(cE)||(l(f.imageSmoothingEnabled)?cE="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?cE="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?cE="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(cE="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=LYe(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let A=-h.minx,g=Math.ceil(h.width)+A+c,m=h.height+c,_=m-h.ascent+a,y=m-_+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,s!==G.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let C=t.strokeColor??G.BLACK;f.strokeStyle=C.toCssColorString(),f.strokeText(e,A+a,y)}if(o){let C=t.fillColor??G.WHITE;f.fillStyle=C.toCssColorString(),f.fillText(e,A+a,y)}return u}var jx=OYe;var sue=Es(Zle(),1);var QYe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},ar=Object.freeze(QYe);var $le={},eue=0,kYe=256,UYe=new G(.165,.165,.165,.8),GYe=new k(7,5),vs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function lE(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function $B(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function eD(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function nue(e){let t=$le[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(eD(n,"line-height"));isNaN(i)&&(i=void 0),t={family:eD(n,"font-family"),size:eD(n,"font-size").replace("px",""),style:eD(n,"font-style"),weight:eD(n,"font-weight"),lineHeight:i},document.body.removeChild(n),eue<kYe&&($le[e._font]=t,eue++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Zd(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=G.clone(e.fillColor??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=G.clone(e.backgroundColor??UYe),this._backgroundPadding=k.clone(e.backgroundPadding??GYe),this._style=e.style??ar.FILL,this._verticalOrigin=e.verticalOrigin??Wn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??Ri.LEFT,this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._position=d.clone(e.position??d.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??Ze.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,nue(this),this._updateClamping()}Object.defineProperties(Zd.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),$B(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Zd.filterUnsupportedCharacters(e);this._renderedText=Zd.enableRightToLeftDetection?YYe(t):t,lE(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,lE(this),nue(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,lE(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,lE(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!G.equals(t,e)){G.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;k.equals(t,e)||(k.clone(e,t),$B(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,lE(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!k.equals(t,e)){k.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!Yt.equals(t,e)){this._translucencyByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!Yt.equals(t,e)){this._pixelOffsetScaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!Yt.equals(t,e)){this._scaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,$B(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),$B(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),$B(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Ut.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Zd.prototype._updateClamping=function(){xo._updateClamping(this._labelCollection,this)};Zd.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new k);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return xo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Zd.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?o-=s:e.verticalOrigin===Wn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,A=h.length;for(let g=0;g<A;++g){let m=h[g],_=m.billboard;if(!l(_))continue;let y=t.x+_._translate.x,C=t.y-_._translate.y,E=m.dimensions.width*a,I=m.dimensions.height*a;e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?C-=I:e.verticalOrigin===Wn.CENTER&&(C-=I*.5),e._verticalOrigin===Wn.TOP?C+=Pa.PADDING*a:(e._verticalOrigin===Wn.BOTTOM||e._verticalOrigin===Wn.BASELINE)&&(C-=Pa.PADDING*a),i=Math.min(i,y),o=Math.min(o,C),u=Math.max(u,y+E),f=Math.max(f,C+I)}r=u-i,s=f-o}return l(n)||(n=new Xe),n.x=i,n.y=o,n.width=r,n.height=s,n};Zd.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Zd.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&G.equals(this._fillColor,e._fillColor)&&G.equals(this._outlineColor,e._outlineColor)&&G.equals(this._backgroundColor,e._backgroundColor)&&k.equals(this._backgroundPadding,e._backgroundPadding)&&k.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Zd.prototype.isDestroyed=function(){return!1};Zd.enableRightToLeftDetection=!1;function zYe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=vs.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=vs.RTL:n.test(f)?a=vs.LTR:i.test(f)?a=vs.BRACKETS:a=vs.WEAK,u===0&&(s=a),s===a&&a!==vs.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function VYe(e){return e.split("").reverse().join("")}function tD(e,t,n){return e.slice(0,t)+n+e.slice(t)}function HYe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var WYe="\u05D0-\u05EA",jYe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",tue=new RegExp(`[${WYe}${jYe}]`);function YYe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=tue.test(o.charAt(0)),s=zYe(o,tue),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===vs.BRACKETS?HYe(f.Word):VYe(f.Word);r?f.Type===vs.RTL?(c=h+c,a=0):f.Type===vs.LTR?(c=tD(c,a,f.Word),a+=f.Word.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(f.Type===vs.WEAK&&s[u-1].Type===vs.BRACKETS?c=h+c:s[u-1].Type===vs.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===vs.RTL?(c=h+c,a=0):(c=tD(c,a,f.Word),a+=f.Word.length):c=tD(c,0,h)):f.Type===vs.RTL?c=tD(c,a,h):f.Type===vs.LTR?(c+=f.Word,a=c.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(u>0&&s[u-1].Type===vs.RTL?s.length>u+1?s[u+1].Type===vs.RTL?c=tD(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var uE=Zd;var aue=Es(iue(),1);function KYe(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var XYe=1.2,oue="ID_WHITE_PIXEL",Wj=new k(4,4),JYe=new Xe(1,1,1,1);function ZYe(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=Wj.x,o.height=Wj.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(oue,o),n.addImageSubRegion(oue,JYe)}let i=e.add({collection:t});return i.setImageTexture(n),i}var mp={};function $Ye(e,t,n,i,o,r){return mp.font=t,mp.fillColor=n,mp.strokeColor=i,mp.strokeWidth=o,mp.padding=Pa.PADDING,mp.fill=r===ar.FILL||r===ar.FILL_AND_OUTLINE,mp.stroke=r===ar.OUTLINE||r===ar.FILL_AND_OUTLINE,mp.backgroundColor=G.BLACK,jx(e,mp)}function jj(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var eqe=new aue.default,tqe=/\s/;function nqe(e,t){let n=t._renderedText,i=eqe.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/Pa.FONT_SIZE,o<s)for(let g=o;g<s;++g)jj(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=ZYe(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=Ri.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,A=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],_=t._verticalOrigin,y=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+_]),C=A[y],E=h.get(y);if(!l(E)||!l(C)){E=new w_(f),h.set(y,E);let B=`${t._fontStyle} ${t._fontWeight} ${Pa.FONT_SIZE}px ${t._fontFamily}`,v=$Ye(m,B,G.WHITE,G.WHITE,0,ar.FILL);if(C=v.dimensions,A[y]=C,v.width>0&&v.height>0&&!tqe.test(m)){let P=(0,sue.default)(v,{cutoff:Pa.CUTOFF,radius:Pa.RADIUS}),N=v.getContext("2d"),L=v.width,p=v.height,x=N.getImageData(0,0,L,p);for(let T=0;T<L;T++)for(let w=0;w<p;w++){let M=w*L+T,O=P[M]*255,U=M*4;x.data[U+0]=O,x.data[U+1]=O,x.data[U+2]=O,x.data[U+3]=O}N.putImageData(x,0,0),E.loadImage(y,v)}}let I=r[g];if(l(I)||(I=new KYe,I.dimensions=C,I.billboardTexture=E,r[g]=I),I.billboardTexture.id!==y&&(I.billboardTexture=E,I.dimensions=C),!E.hasImage){jj(e,I);continue}let b=I.billboard,S=e._spareBillboards;l(b)||(S.length>0?b=S.pop():(b=f.add({collection:e}),b._labelDimensions=new k,b._labelTranslate=new k),I.billboard=b),b.setImageTexture(E),b.show=t._show,b.position=t._position,b.eyeOffset=t._eyeOffset,b.pixelOffset=t._pixelOffset,b.horizontalOrigin=Ri.LEFT,b.verticalOrigin=t._verticalOrigin,b.heightReference=t._heightReference,b.scale=t.totalScale,b.pickPrimitive=t,b.id=t._id,b.translucencyByDistance=t._translucencyByDistance,b.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,b.scaleByDistance=t._scaleByDistance,b.distanceDisplayCondition=t._distanceDisplayCondition,b.disableDepthTestDistance=t._disableDepthTestDistance,b._batchIndex=t._batchIndex,b.outlineColor=t.outlineColor,t.style===ar.FILL_AND_OUTLINE?(b.color=t._fillColor,b.outlineWidth=t.outlineWidth):t.style===ar.FILL?(b.color=t._fillColor,b.outlineWidth=0):t.style===ar.OUTLINE&&(b.color=G.TRANSPARENT,b.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function rue(e,t,n){return t===Ri.CENTER?-e/2:t===Ri.RIGHT?-(e+n.x):n.x}var Cr=new k,iqe=new k;function oqe(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=k.clone(l(f)?e._backgroundPadding:k.ZERO,iqe);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let N=0;N<u;++N){if(n.charAt(N)===` +`){r.push(i),++c,i=0;continue}let p=t[N].dimensions;l(p)&&(a=Math.max(a,p.height-p.descent),s=Math.max(s,p.descent),i+=p.width-p.minx,N<u-1&&(i+=t[N+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let A=a+s,g=e.totalScale,m=e._horizontalOrigin,_=e._verticalOrigin,y=0,C=r[y],E=rue(C,m,h),I=(l(e._lineHeight)?e._lineHeight:XYe*e._fontSize)/e._relativeSize,b=I*(c-1),S=o,B=A+b;l(f)&&(S+=h.x*2,B+=h.y*2,f._labelHorizontalOrigin=m),Cr.x=E*g,Cr.y=0;let v=!0,P=0;for(let N=0;N<u;++N){if(n.charAt(N)===` +`){++y,P+=I,C=r[y],E=rue(C,m,h),Cr.x=E*g,v=!0;continue}let L=t[N],p=L.dimensions;if(l(p)&&(_===Wn.TOP?(Cr.y=p.height-a-h.y,Cr.y+=Pa.PADDING):_===Wn.CENTER?Cr.y=(b+p.height-a)/2:_===Wn.BASELINE?(Cr.y=b,Cr.y-=Pa.PADDING):(Cr.y=b+s+h.y,Cr.y-=Pa.PADDING),Cr.y=(Cr.y-p.descent-P)*g,v&&(Cr.x-=Pa.PADDING*g,v=!1),l(L.billboard)&&(L.billboard._setTranslate(Cr),L.billboard._labelDimensions.x=S,L.billboard._labelDimensions.y=B,L.billboard._labelHorizontalOrigin=m),N<u-1)){let x=t[N+1];Cr.x+=(p.width-p.minx+x.dimensions.minx)*g}}if(l(f)&&n.split(` +`).join("").length>0&&(m===Ri.CENTER?E=-o/2-h.x:m===Ri.RIGHT?E=-(o+h.x*2):E=0,Cr.x=E*g,_===Wn.TOP?Cr.y=A-a-s:_===Wn.CENTER?Cr.y=(A-a)/2-s:_===Wn.BASELINE?Cr.y=-h.y-s:Cr.y=0,Cr.y=Cr.y*g,f.width=S,f.height=B,f._setTranslate(Cr),f._labelTranslate=k.clone(Cr,f._labelTranslate)),_f(e.heightReference))for(let N=0;N<u;++N){let p=t[N].billboard;l(p)&&(p._labelTranslate=k.clone(Cr,p._labelTranslate))}}function cue(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)jj(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function Lm(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new jf({scene:this._scene,textureAtlas:new zx({initialSize:Wj})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new w_(t),this._glyphBillboardCollection=new jf({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=G.clone(G.WHITE),this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT}Object.defineProperties(Lm.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});Lm.prototype.add=function(e){let t=new uE(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};Lm.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),cue(this,e),!0}return!1};Lm.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)cue(this,e[t]);e.length=0};Lm.prototype.contains=function(e){return l(e)&&e._labelCollection===this};Lm.prototype.get=function(e){return this._labels[e]};Lm.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(nqe(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(oqe(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Vo.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};Lm.prototype.isDestroyed=function(){return!1};Lm.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var Ap=Lm;var sk=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var hl={};hl.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};hl.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var rqe=new Ae;hl.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,rqe).height}return i};var sqe=new R,aqe=new d,lue=new d,cqe=new mn(d.UNIT_X,0),uue=new d,lqe=new mn(d.UNIT_X,0),uqe=new d,fqe=new d,qj=[];function due(e,t,n){let i=qj;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var ck=new Ae,ak=new Ae,D_=new d,Kj=new d,dqe=new d,Yj=new Sg,nD=new Ic;function hqe(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,Kj),u=i.scaleToGeodeticSurface(t,dqe),f=hl.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,ck),A=i.cartesianToCartographic(u,ak),g=due(f,o,r);Yj.setEndPoints(h,A);let m=Yj.surfaceDistance/f,_=a;h.height=o;let y=i.cartographicToCartesian(h,D_);d.pack(y,s,_),_+=3;for(let C=1;C<f;C++){let E=Yj.interpolateUsingSurfaceDistance(C*m,ak);E.height=g[C],y=i.cartographicToCartesian(E,D_),d.pack(y,s,_),_+=3}return _}function mqe(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,ck),u=i.cartesianToCartographic(t,ak),f=hl.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=due(f,o,r);nD.ellipsoid.equals(i)||(nD=new Ic(void 0,void 0,i)),nD.setEndPoints(c,u);let A=nD.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,D_);d.pack(m,s,g),g+=3;for(let _=1;_<f;_++){let y=nD.interpolateUsingSurfaceDistance(_*A,ak);y.height=h[_],m=i.cartographicToCartesian(y,D_),d.pack(m,s,g),g+=3}return g}hl.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??R.IDENTITY;let o=R.inverseTransformation(t,sqe),r=R.multiplyByPoint(o,d.ZERO,aqe),s=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_Y,lue),lue),a=mn.fromPointNormal(r,s,cqe),c=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_X,uue),uue),u=mn.fromPointNormal(r,c,lqe),f=1;n.push(d.clone(e[0]));let h=n[0],A=e.length;for(let g=1;g<A;++g){let m=e[g];if(mn.getPointDistance(u,h)<0||mn.getPointDistance(u,m)<0){let _=Ai.lineSegmentPlane(h,m,a,uqe);if(l(_)){let y=d.multiplyByScalar(s,5e-9,fqe);mn.getPointDistance(a,h)<0&&d.negate(y,y),n.push(d.add(_,y,new d)),i.push(f+1),d.negate(y,y),n.push(d.add(_,y,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};hl.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let _=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let y=i.geodeticSurfaceNormal(_,D_);d.multiplyByScalar(y,o,y),d.add(_,y,_)}return[_.x,_.y,_.z]}let s=e.minDistance;if(!l(s)){let _=e.granularity??D.RADIANS_PER_DEGREE;s=D.chordLength(_,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=hl.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let _=t[c],y=t[c+1],C=r?o[c]:o,E=r?o[c+1]:o;h=hqe(_,y,s,i,C,E,f,h)}qj.length=0;let A=t[n-1],g=i.cartesianToCartographic(A,ck);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,D_);return d.pack(m,f,u-3),f};var fue=new Ae,Aqe=new Ae;hl.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let C=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let E=i.geodeticSurfaceNormal(C,D_);d.multiplyByScalar(E,o,E),d.add(C,E,C)}return[C.x,C.y,C.z]}let s=e.granularity??D.RADIANS_PER_DEGREE,a=0,c,u=i.cartesianToCartographic(t[0],fue),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],Aqe),a+=hl.numberOfPointsRhumbLine(u,f,s),u=Ae.clone(f,fue);let h=(a+1)*3,A=new Array(h),g=0;for(c=0;c<n-1;c++){let C=t[c],E=t[c+1],I=r?o[c]:o,b=r?o[c+1]:o;g=mqe(C,E,s,i,I,b,A,g)}qj.length=0;let m=t[n-1],_=i.cartesianToCartographic(m,ck);_.height=r?o[n-1]:o;let y=i.cartographicToCartesian(_,D_);return d.pack(y,A,h-3),A};hl.generateCartesianArc=function(e){let t=hl.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};hl.generateCartesianRhumbArc=function(e){let t=hl.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Xi=hl;function Mu(e,t){e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=No(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=R.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Xi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(mue),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=le.fromPoints(this._actualPositions),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new le}var hue=Mu.POSITION_INDEX=0,pqe=Mu.SHOW_INDEX=1,gqe=Mu.WIDTH_INDEX=2,_qe=Mu.MATERIAL_INDEX=3,iD=Mu.POSITION_SIZE_INDEX=4,yqe=Mu.DISTANCE_DISPLAY_CONDITION=5,mue=Mu.NUMBER_OF_PROPERTIES=6;function pp(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(Mu.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,pp(this,pqe))}},positions:{get:function(){return this._positions},set:function(e){let t=No(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&pp(this,iD),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=le.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),pp(this,hue),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,pp(this,_qe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,pp(this,gqe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,pp(this,iD)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),pp(this,yqe))}}});Mu.prototype.update=function(){let e=R.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[hue]>0||this._propertiesChanged[iD]>0;if((!R.equals(e,this._modelMatrix)||i)&&(this._segments=Xi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=le.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=R.clone(e,this._modelMatrix),this._segments.positions.length!==t)pp(this,iD);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){pp(this,iD);break}}};Mu.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};Mu.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<mue-1;++t)e[t]=0};Mu.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var $d=Mu;var Cqe=$d.SHOW_INDEX,Eqe=$d.WIDTH_INDEX,Jj=$d.POSITION_INDEX,Iqe=$d.MATERIAL_INDEX,Aue=$d.POSITION_SIZE_INDEX,xqe=$d.DISTANCE_DISPLAY_CONDITION,Iue=$d.NUMBER_OF_PROPERTIES,eu={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function eh(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Iue),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Qe.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=G.clone(G.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(eh.prototype,{length:{get:function(){return Zj(this),this._polylines.length}}});eh.prototype.add=function(e){let t=new $d(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};eh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};eh.prototype.removeAll=function(){$j(this),wue(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};eh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};eh.prototype.get=function(e){return Zj(this),this._polylines[e]};function bqe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:q.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:q.FLOAT,componentsPerAttribute:2}];e._batchTable=new yI(t,n,e._polylines.length)}var xue=new ei,bue=new se,Tue=new k;eh.prototype.update=function(e){if(Zj(this),this._polylines.length===0||!this.show)return;vqe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");bqe(this,t),this._createBatchTable=!1}if(this._createVertexArray||Sqe(this))_ue(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ie.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Aue]||o[Iqe])_ue(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let A=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===A){o[Jj]&&A.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[Cqe]||o[Eqe])&&this._batchTable.setBatchedAttribute(i._index,0,new k(i._width,i._show)),this._batchTable.attributes.length>2){if(o[Jj]||o[Aue]){let m=e.mode===ie.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,_=ei.fromCartesian(m.center,xue),y=se.fromElements(_.low.x,_.low.y,_.low.z,m.radius,bue);this._batchTable.setBatchedAttribute(i._index,2,_.high),this._batchTable.setBatchedAttribute(i._index,3,y)}if(o[xqe]){let m=Tue;m.x=0,m.y=Number.MAX_VALUE;let _=i.distanceDisplayCondition;l(_)&&(m.x=_.near,m.y=_.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Iue;++c)o[c]=0;let r=R.IDENTITY;e.mode===ie.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ue.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;Tqe(this,e,c,r)}};var oD=new le,pue=new le;function Tqe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,A=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let _=u[m],y=_.buckets,C=y.length;for(let E=0;E<C;++E){let I=y[E],b=I.offset,S=I.bucket.shaderProgram,B=I.bucket.polylines,v=B.length,P,N,L=0,p,x;for(let T=0;T<v;++T){let w=B[T],M=Bqe(w._material);if(M!==P){if(l(P)&&L>0){let z=N.isTranslucent();a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=z?e._translucentRS:e._opaqueRS,p.pass=z?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,b+=L,L=0,c=!0,r.push(p)}N=w._material,N.update(o),P=M}let O=w._locatorBuckets,U=O.length;for(let z=0;z<U;++z){let F=O[z];F.locator===I&&(L+=F.count)}let Q;t.mode===ie.SCENE3D?Q=w._boundingVolumeWC:t.mode===ie.COLUMBUS_VIEW?Q=w._boundingVolume2D:t.mode===ie.SCENE2D?l(w._boundingVolume2D)&&(Q=le.clone(w._boundingVolume2D,pue),Q.center.x=0):l(w._boundingVolumeWC)&&l(w._boundingVolume2D)&&(Q=le.union(w._boundingVolumeWC,w._boundingVolume2D,pue)),c?(c=!1,le.clone(Q,oD)):le.union(Q,oD,oD)}l(P)&&L>0&&(a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=N.isTranslucent()?e._translucentRS:e._opaqueRS,p.pass=N.isTranslucent()?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,c=!0,r.push(p)),P=void 0}}n.length=a}eh.prototype.isDestroyed=function(){return!1};eh.prototype.destroy=function(){return Sue(this),$j(this),wue(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function Sqe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[Jj]?(i.bufferUsage!==Qe.STREAM_DRAW&&(t=!0,i.bufferUsage=Qe.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Qe.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Qe.STATIC_DRAW):i.frameCount--),t}var gue=[0,0,0];function _ue(e,t,n){e._createVertexArray=!1,$j(e),Sue(e),Dqe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,A,g;for(A in h)h.hasOwnProperty(A)&&(g=h[A],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,_=new Float32Array(6*f*3),y=new Float32Array(f*4),C,E=0,I=0,b=0;for(A in h)if(h.hasOwnProperty(A)){g=h[A],g.write(_,y,E,I,b,r,t,n),m===ie.MORPHING&&(l(C)||(C=new Float32Array(6*f*3)),g.writeForMorph(C,E));let x=g.lengthOfPositions;E+=6*x*3,I+=x*4,b+=x*4,c=g.updateIndices(i,a,u,c)}let S=e._positionBufferUsage.bufferUsage,B=Qe.STATIC_DRAW;e._positionBuffer=Et.createVertexBuffer({context:t,typedArray:_,usage:S});let v;l(C)&&(v=Et.createVertexBuffer({context:t,typedArray:C,usage:S})),e._texCoordExpandAndBatchIndexBuffer=Et.createVertexBuffer({context:t,typedArray:y,usage:B});let P=3*Float32Array.BYTES_PER_ELEMENT,N=4*Float32Array.BYTES_PER_ELEMENT,L=0,p=i.length;for(let x=0;x<p;++x)if(o=i[x],o.length>0){let T=new Uint16Array(o),w=Et.createIndexBuffer({context:t,typedArray:T,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});L+=a[x];let M=6*(x*(P*D.SIXTY_FOUR_KILOBYTES)-L*P),O=P+M,U=P+O,Q=P+U,z=P+Q,F=P+z,H=x*(N*D.SIXTY_FOUR_KILOBYTES)-L*N,W=[{index:eu.position3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.position2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:q.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:H}],Z,Y,$,X;m===ie.SCENE3D?(Y=e._positionBuffer,Z="vertexBuffer",$=gue,X="value"):m===ie.SCENE2D||m===ie.COLUMBUS_VIEW?(Y=gue,Z="value",$=e._positionBuffer,X="vertexBuffer"):(Y=v,Z="vertexBuffer",$=e._positionBuffer,X="vertexBuffer"),W[0][Z]=Y,W[1][Z]=Y,W[2][X]=$,W[3][X]=$,W[4][Z]=Y,W[5][Z]=Y,W[6][X]=$,W[7][X]=$,W[8][Z]=Y,W[9][Z]=Y,W[10][X]=$,W[11][X]=$;let he=new li({context:t,attributes:W,indexBuffer:w});e._vertexArrays.push({va:he,buckets:u[x]})}}}function wqe(e,t){return t instanceof Nt?t.id:t}var lk=[];function Bqe(e){let t=ao._uniformList[e.type],n=t.length;lk.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];lk[i]=r,lk[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(lk,wqe)}`}function Dqe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new Om(c,t,n)),u.addPolyline(a)}}}function vqe(e,t){let n=t.mode;(e._mode!==n||!R.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=R.clone(e.modelMatrix),e._createVertexArray=!0)}function Zj(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function $j(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Sue(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}eh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function wue(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function Xj(e,t,n){this.count=e,this.offset=t,this.bucket=n}function Om(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}Om.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};Om.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),jt.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new We({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,TI]}),r=t.getVertexShaderCallback()(sk),s=new We({defines:i,sources:[bf,r]});this.shaderProgram=ln.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:eu})};function Bue(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(mn.ORIGIN_ZX_PLANE)===nn.INTERSECTING}Om.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ie.SCENE3D||!Bue(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var js=new d,Yf=new d,qf=new d,uk=new d,Pqe=new se,Rqe=new k;Om.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*D.PI,f=this.polylines,h=f.length;for(let A=0;A<h;++A){let g=f[A],m=g.width,_=g.show&&m>0,y=g._index,C=this.getSegments(g,a),E=C.positions,I=C.lengths,b=E.length,S=g.getPickId(s).color,B=0,v=0,P;for(let U=0;U<b;++U){U===0?g._loop?P=E[b-2]:(P=uk,d.subtract(E[0],E[1],P),d.add(E[0],P,P)):P=E[U-1],d.clone(P,Yf),d.clone(E[U],js),U===b-1?g._loop?P=E[1]:(P=uk,d.subtract(E[b-1],E[b-2],P),d.add(E[b-1],P,P)):P=E[U+1],d.clone(P,qf);let Q=I[B];U===v+Q&&(v+=Q,++B);let z=U-v===0,F=U===v+I[B]-1;c===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(c===ie.SCENE2D||c===ie.MORPHING)&&(z||F)&&u-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let H=z?2:0,W=F?2:4;for(let Z=H;Z<W;++Z){ei.writeElements(js,e,n),ei.writeElements(Yf,e,n+6),ei.writeElements(qf,e,n+12);let Y=Z-2<0?-1:1;t[o]=U/(b-1),t[o+1]=2*(Z%2)-1,t[o+2]=Y,t[o+3]=y,n+=18,o+=4}}let N=Pqe;N.x=G.floatToByte(S.red),N.y=G.floatToByte(S.green),N.z=G.floatToByte(S.blue),N.w=G.floatToByte(S.alpha);let L=Rqe;L.x=m,L.y=_?1:0;let p=c===ie.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,x=ei.fromCartesian(p.center,xue),T=x.high,w=se.fromElements(x.low.x,x.low.y,x.low.z,p.radius,bue),M=Tue;M.x=0,M.y=Number.MAX_VALUE;let O=g.distanceDisplayCondition;l(O)&&(M.x=O.near,M.y=O.far),r.setBatchedAttribute(y,0,L),r.setBatchedAttribute(y,1,N),r.attributes.length>2&&(r.setBatchedAttribute(y,2,T),r.setBatchedAttribute(y,3,w),r.setBatchedAttribute(y,4,M))}};var Mqe=new d,Nqe=new d,Lqe=new d,yue=new d;Om.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let A=0;A<u;++A){let g;A===0?s._loop?g=a[u-2]:(g=yue,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[A-1],g=R.multiplyByPoint(n,g,Nqe);let m=R.multiplyByPoint(n,a[A],Mqe),_;A===u-1?s._loop?_=a[1]:(_=yue,d.subtract(a[u-1],a[u-2],_),d.add(a[u-1],_,_)):_=a[A+1],_=R.multiplyByPoint(n,_,Lqe);let y=c[f];A===h+y&&(h+=y,++f);let C=A-h===0,E=A===h+c[f]-1,I=C?2:0,b=E?2:4;for(let S=I;S<b;++S)ei.writeElements(m,e,t),ei.writeElements(g,e,t+6),ei.writeElements(_,e,t+12),t+=18}}};var Oqe=new Array(1);Om.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new Xj(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let A=u[h];A._locatorBuckets=[];let g;if(this.mode===ie.SCENE3D){g=Oqe;let _=A._actualPositions.length;if(_>0)g[0]=_;else continue}else g=A._segments.lengths;let m=g.length;if(m>0){let _=0;for(let y=0;y<m;++y){let C=g[y]-1;for(let E=0;E<C;++E)c+4>D.SIXTY_FOUR_KILOBYTES&&(A._locatorBuckets.push({locator:r,count:_}),_=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new Xj(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),_+=6,s+=6,i+=6,c+=4}A._locatorBuckets.push({locator:r,count:_}),c+4>D.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new Xj(0,0,this),n[++o]=[r])}A._clean()}return r.count=s,i};Om.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var Yx={positions:void 0,lengths:void 0},Cue=new Array(1),Fqe=new d,Qqe=new Ae;Om.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ie.SCENE3D)return Cue[0]=n.length,Yx.positions=n,Yx.lengths=Cue,Yx;Bue(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=Fqe;for(let u=0;u<s;++u)a=n[u],c=R.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,Qqe)));if(o.length>0){e._boundingVolume2D=le.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return Yx.positions=o,Yx.lengths=e._segments.lengths,Yx};var Eue;Om.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*D.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Eue,c=6*s*3;!l(a)||a.length<c?a=Eue=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,A=0,g=0,m=0,_;s=f.length;for(let y=0;y<s;++y){y===0?t._loop?_=f[s-2]:(_=uk,d.subtract(f[0],f[1],_),d.add(f[0],_,_)):_=f[y-1],d.clone(_,Yf),d.clone(f[y],js),y===s-1?t._loop?_=f[1]:(_=uk,d.subtract(f[s-1],f[s-2],_),d.add(f[s-1],_,_)):_=f[y+1],d.clone(_,qf);let C=h[g];y===m+C&&(m+=C,++g);let E=y-m===0,I=y===m+h[g]-1;o===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(o===ie.SCENE2D||o===ie.MORPHING)&&(E||I)&&r-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let b=E?2:0,S=I?2:4;for(let B=b;B<S;++B)ei.writeElements(js,a,A),ei.writeElements(Yf,a,A+6),ei.writeElements(qf,a,A+12),A+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Fm=eh;function v_(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new jf({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new Ap({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Fm,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(v_.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function kqe(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+te.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,te.pack(t,s,a),s}var Uqe=new mi("createVectorTilePoints",5),Gqe=new d;function zqe(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=kqe(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=Uqe.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,A=n.length/3,g=e._heightReference??Ze.NONE;for(let m=0;m<A;++m){let _=h[m],y=d.unpack(n,m*3,Gqe),C=c.add();C.position=y,C._batchIndex=_,C.heightReference=g;let E=u.add();E.text=" ",E.position=y,E._batchIndex=_,E.heightReference=g;let I=f.add();I.positions=[d.clone(y),d.clone(y)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}v_.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new B_(e,c,u,f,h)}};v_.prototype.applyDebugSettings=function(e,t){e?(G.clone(t,this._billboardCollection._highlightColor),G.clone(t,this._labelCollection._highlightColor),G.clone(t,this._polylineCollection._highlightColor)):(G.clone(G.WHITE,this._billboardCollection._highlightColor),G.clone(G.WHITE,this._labelCollection._highlightColor),G.clone(G.WHITE,this._polylineCollection._highlightColor))};function Vqe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=B_.defaultPointSize,s.color=B_.defaultColor,s.pointOutlineColor=B_.defaultPointOutlineColor,s.pointOutlineWidth=B_.defaultPointOutlineWidth,s.labelColor=G.WHITE,s.labelOutlineColor=G.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=ar.FILL,s.labelText=void 0,s.backgroundColor=new G(.165,.165,.165,.8),s.backgroundPadding=new k(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=G.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=Ri.CENTER,s.verticalOrigin=Wn.CENTER,s.labelHorizontalOrigin=Ri.RIGHT,s.labelVerticalOrigin=Wn.BASELINE}}var Hqe=new G,Wqe=new G,jqe=new G,Yqe=new G,qqe=new G,Kqe=new G,rD=new Yt,sD=new Yt,eY=new Ut;v_.prototype.applyStyle=function(e,t){if(!l(e)){Vqe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,Hqe)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,Wqe)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,jqe)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,Yqe)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,qqe)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(rD.near=a.x,rD.nearValue=a.y,rD.far=a.z,rD.farValue=a.w,s.scaleByDistance=rD):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(sD.near=a.x,sD.nearValue=a.y,sD.far=a.z,sD.farValue=a.w,s.translucencyByDistance=sD):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(eY.near=a.x,eY.far=a.y,s.distanceDisplayCondition=eY):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,Kqe)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};v_.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=zqe(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};v_.prototype.isDestroyed=function(){return!1};v_.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var fk=v_;function gp(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??d.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(gp.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function Xqe(e){let t=new Float64Array(3+d.packedLength+te.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,ae.pack(e._rectangle,t,n),t}function Jqe(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Qn.unpack(t,n),n+=Qn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=G.unpack(t,n);n+=G.packedLength;let u=t[n++],f=t[n++],h=t[n++],A=new Array(h);for(let g=0;g<h;++g)A[g]=t[n++];s[a]=new KA({color:c,offset:u,count:f,batchIds:A})}}var Zqe=new mi("createVectorTilePolygons",5),$qe=new G;function eKe(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let _=0;_<m;++_){let y=g.getColor(_,$qe);s[_]=y.toRgba()}a=e._packedBuffer=Xqe(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let A=Zqe.scheduleTask(u,c);if(l(A))return A.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),_=m[0];Jqe(e,m),e._indices=Fe.getSizeInBytes(_)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),tKe(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function tKe(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}gp.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};gp.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};gp.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};gp.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};gp.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=eKe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};gp.prototype.isDestroyed=function(){return!1};gp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var dk=gp;var hk=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function th(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(th.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function nKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var iKe=new mi("createVectorTilePolylines",5),qx={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function oKe(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=nKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=iKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),rKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function rKe(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),f=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),h=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),m=Et.createIndexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),_=[{index:qx.previousPosition,vertexBuffer:u,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.currentPosition,vertexBuffer:f,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.nextPosition,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.expandAndWidth,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:2},{index:qx.a_batchId,vertexBuffer:g,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:_,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var aD=new R,Due=new d;function sKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,aD),R.multiplyByPoint(aD,e._center,Due),R.setTranslation(aD,Due,aD),aD},u_highlightColor:function(){return e._highlightColor}})}function aKe(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var cKe=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function lKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(hk),o=n.getFragmentShaderCallback(!1,void 0,!1)(cKe),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:qx})}function uKe(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Be.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}th.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],A=o[r+1]-h;for(s=0;s<A;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};th.prototype.getPositions=function(e){return th.getPolylinePositions(this,e)};th.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};th.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function fKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var dKe=new G,hKe=G.WHITE,mKe=!0;th.prototype.applyStyle=function(e,t){if(!l(e)){fKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,dKe):hKe,s.show=l(e.show)?e.show.evaluate(s):mKe}};th.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=oKe(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}sKe(this,t),lKe(this,t),aKe(this);let n=e.passes;(n.render||n.pick)&&uKe(this,e)};th.prototype.isDestroyed=function(){return!1};th.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var Kx=th;var mk=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var Ak=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function _p(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new k(wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight),this._boundingVolume=Qn.fromRectangle(e.rectangle,wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(_p.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function AKe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Qn.fromRectangle(c,o,r,n,a)}function pKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var gKe=new mi("createVectorTileClampedPolylines"),P_={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function _Ke(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=pKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=gKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),yKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function yKe(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),m=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),_=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),y=Et.createVertexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW}),C=Et.createVertexBuffer({context:t,typedArray:c,usage:Qe.STATIC_DRAW}),E=Et.createIndexBuffer({context:t,typedArray:u,usage:Qe.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),I=[{index:P_.startEllipsoidNormal,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.endEllipsoidNormal,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.startPositionAndHeight,vertexBuffer:g,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endPositionAndHeight,vertexBuffer:m,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.startFaceNormalAndVertexCorner,vertexBuffer:_,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endFaceNormalAndHalfWidth,vertexBuffer:y,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.a_batchId,vertexBuffer:C,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:I,indexBuffer:E}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var cD=new R,vue=new d;function CKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,cD),R.multiplyByPoint(cD,e._center,vue),R.setTranslation(cD,vue,cD),cD},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function Pue(e){return Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function EKe(e){l(e._rs)||(e._rs=Pue(!1),e._rs3DTiles=Pue(!0))}function IKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(mk),o=n.getFragmentShaderCallback(!1,void 0,!0)(Ak),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:P_})}function xKe(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Be.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=nt.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===Jn.TERRAIN||i===Jn.BOTH)&&t.commandList.push(n),(i===Jn.CESIUM_3D_TILE||i===Jn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}_p.prototype.getPositions=function(e){return Kx.getPolylinePositions(this,e)};_p.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};_p.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function bKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var TKe=new G,SKe=G.WHITE,wKe=!0;_p.prototype.applyStyle=function(e,t){if(!l(e)){bKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,TKe):SKe,s.show=l(e.show)?e.show.evaluate(s):wKe}};function BKe(e){return wi.initialize().then(function(){AKe(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}_p.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=BKe(this).then(_Ke(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}CKe(this,t),IKe(this,t),EKe(this);let n=e.passes;(n.render||n.pick)&&xKe(this,e)};_p.prototype.isDestroyed=function(){return!1};_p.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var pk=_p;var tY=32767,DKe=new Ae,vKe=new d;function PKe(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Fn.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],A=a[f],g=c[f],m=D.lerp(t.west,t.east,h/tY),_=D.lerp(t.south,t.north,A/tY),y=D.lerp(n,i,g/tY),C=Ae.fromRadians(m,_,y,DKe),E=o.cartographicToCartesian(C,vKe);d.pack(E,u,f*3)}return u}var gk=PKe;function ih(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,OKe(this,i,o)}Object.defineProperties(ih.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function RKe(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function MKe(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let A=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,A,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let A=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,A,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let A=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,A,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let A=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=A++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=A++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=A++}return{polygons:n,polylines:i,points:o}}var nh=Uint32Array.BYTES_PER_ELEMENT;function NKe(e){return new Kx(e)}function LKe(e){return new pk(e)}function OKe(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=nh;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=nh;let s=o.getUint32(n,!0);if(n+=nh,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=nh,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=nh;let u=o.getUint32(n,!0);n+=nh;let f=o.getUint32(n,!0);n+=nh;let h=o.getUint32(n,!0);n+=nh;let A=o.getUint32(n,!0);n+=nh;let g=o.getUint32(n,!0);n+=nh;let m=o.getUint32(n,!0);n+=nh;let _=yr(i,n,a);n+=a;let y=new Uint8Array(t,n,c);n+=c;let C,E;u>0&&(C=yr(i,n,u),n+=u,f>0&&(E=new Uint8Array(t,n,f),E=new Uint8Array(E),n+=f));let I=_.POLYGONS_LENGTH??0,b=_.POLYLINES_LENGTH??0,S=_.POINTS_LENGTH??0,B=I+b+S,v=new Fg(e,B,C,E,RKe(e));if(e._batchTable=v,B===0)return;let P=new Sm(_,y),N=P.getGlobalProperty("REGION");if(!l(N))throw new ce("Feature table global property: REGION must be defined");let L=ae.unpack(N),p=N[4],x=N[5],T=e._tile.computedTransform,w=P.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(w)?(w=d.unpack(w),R.multiplyByPoint(T,w,w)):(w=ae.center(L),w.height=D.lerp(p,x,.5),w=te.WGS84.cartographicToCartesian(w));let M=MKe(_,y);if(n+=(4-n%4)%4,I>0){P.featuresLength=I;let U=P.getPropertyArray("POLYGON_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYGON_INDEX_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_INDEX_COUNT",q.UNSIGNED_INT,1);if(!l(Q))throw new ce("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let z=U.reduce(function($,X){return $+X*2},0),F=Q.reduce(function($,X){return $+X},0),H=new Uint32Array(t,n,F);n+=h;let W=new Uint16Array(t,n,z);n+=A;let Z,Y;l(_.POLYGON_MINIMUM_HEIGHTS)&&l(_.POLYGON_MAXIMUM_HEIGHTS)&&(Z=P.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",q.FLOAT,1),Y=P.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",q.FLOAT,1)),e._polygons=new dk({positions:W,counts:U,indexCounts:Q,indices:H,minimumHeight:p,maximumHeight:x,polygonMinimumHeights:Z,polygonMaximumHeights:Y,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,batchIds:M.polygons,modelMatrix:T})}let O=e._tileset;if(b>0){P.featuresLength=b;let U=P.getPropertyArray("POLYLINE_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYLINE_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYLINE_WIDTHS",q.UNSIGNED_SHORT,1);if(!l(Q)){Q=new Uint16Array(b);for(let Z=0;Z<b;++Z)Q[Z]=2}let z=U.reduce(function(Z,Y){return Z+Y*3},0),F=new Uint16Array(t,n,z);n+=g;let H=O.examineVectorLinesFunction;if(l(H)){let Z=gk(new Uint16Array(F),L,p,x,te.WGS84);FKe(Z,U,M.polylines,v,e.url,H)}let W=NKe;l(O.classificationType)&&(W=LKe),e._polylines=W({positions:F,widths:Q,counts:U,batchIds:M.polylines,minimumHeight:p,maximumHeight:x,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,classificationType:O.classificationType,keepDecodedPositions:O.vectorKeepDecodedPositions})}if(S>0){let U=new Uint16Array(t,n,S*3);n+=m,e._points=new fk({positions:U,batchIds:M.points,minimumHeight:p,maximumHeight:x,rectangle:L,batchTable:v,heightReference:O.heightReference,scene:O.scene})}}function nY(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}ih.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};ih.prototype.getFeature=function(e){return l(this._features)||nY(this),this._features[e]};ih.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};ih.prototype.applyStyle=function(e){l(this._features)||nY(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};ih.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||nY(this),this._batchTable.update(e,t),this._ready=!0)};ih.prototype.pick=function(e,t,n){};ih.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};ih.prototype.isDestroyed=function(){return!1};ih.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function FKe(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var _k=ih;function Ma(){}Ma._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Ma._sorterTaskProcessor=void 0;Ma._taskProcessorReady=!1;Ma._error=void 0;Ma._getSorterTaskProcessor=function(){if(!l(Ma._sorterTaskProcessor)){let e=new mi("gaussianSplatSorter",Ma._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ma._taskProcessorReady=!0:Ma._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ma._error=t}),Ma._sorterTaskProcessor=e}return Ma._sorterTaskProcessor};Ma.radixSortIndexes=function(e){let t=Ma._getSorterTaskProcessor();if(l(Ma._error))throw Ma._error;if(Ma._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var lD=Ma;function Na(){}Na._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Na._textureTaskProcessor=void 0;Na._taskProcessorReady=!1;Na._error=void 0;Na._getTextureTaskProcessor=function(){if(!l(Na._textureTaskProcessor)){let e=new mi("gaussianSplatTextureGenerator",Na._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Na._taskProcessorReady=!0:Na._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Na._error=t}),Na._textureTaskProcessor=e}return Na._textureTaskProcessor};Na.generateFromAttributes=function(e){let t=Na._getTextureTaskProcessor();if(l(Na._error))throw Na._error;if(!Na._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var yk=Na;function QKe(e){let t=new I_;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.alphaOptions=new Qx,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT)}var Ck=QKe;var Ek=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var Ik=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var uD=new R,Mue=new R,fE=new R,tu={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function Rue(e,t){return new Nt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:et.RGBA_INTEGER,pixelDatatype:He.UNSIGNED_INT,flipY:!1,sampler:on.NEAREST})}function Nu(e){e=e??V.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new R,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=wr.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(Ao.Y,Ao.X,new R),this._isDestroyed=!1,this._sorterState=tu.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(Nu.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});Nu.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};Nu.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),ue(this)};Nu.prototype.isDestroyed=function(){return this._isDestroyed};Nu.prototype.onTileLoad=function(e){this._dirty=!0};Nu.prototype.onTileVisible=function(e){};Nu.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=R.multiplyTransformation(t,i._axisCorrectionMatrix,uD);R.multiplyTransformation(o,e.content.worldTransform,o);let r=R.multiply(e.tileset.modelMatrix,R.fromArray(e.tileset.root.transform),Mue),s=R.inverse(r,fE),a=R.multiplyTransformation(s,o,uD),c=e.content._originalPositions,u=e.content._originalRotations,f=e.content._originalScales,h=Qt.getAttributeBySemantic(n,ct.POSITION).typedArray,A=Qt.getAttributeBySemantic(n,ct.ROTATION).typedArray,g=Qt.getAttributeBySemantic(n,ct.SCALE).typedArray,m=new d,_=new Le,y=new d;for(let C=0;C<c.length/3;++C)m.x=c[C*3],m.y=c[C*3+1],m.z=c[C*3+2],_.x=u[C*4],_.y=u[C*4+1],_.z=u[C*4+2],_.w=u[C*4+3],y.x=f[C*3],y.y=f[C*3+1],y.z=f[C*3+2],R.fromTranslationQuaternionRotationScale(m,_,y,fE),R.multiplyTransformation(a,fE,fE),R.getTranslation(fE,m),R.getRotation(fE,_),R.getScale(fE,y),h[C*3]=m.x,h[C*3+1]=m.y,h[C*3+2]=m.z,A[C*4]=_.x,A[C*4+1]=_.y,A[C*4+2]=_.z,A[C*4+3]=_.w,g[C*3]=y.x,g[C*3+1]=y.y,g[C*3+2]=y.z};Nu.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=yk.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=Rue(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=Rue(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};Nu.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new Ck(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=pn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Be.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",pe.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",pe.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=Me.TRIANGLE_STRIP,o.addVertexLines(Ek),o.addFragmentLines(Ik);let a=o.buildShaderProgram(t.context),c=ze(Ue.fromCache(i.renderStateOptions),!0);c.cull.face=Qt.getCullFace(n.modelMatrix,Me.TRIANGLE_STRIP),c=Ue.fromCache(c);let u={screenQuadPosition:0,splatIndex:2},f=new bn.Attribute;if(f.name="_SPLAT_INDEXES",f.typedArray=e._indexes,f.componentDatatype=q.UNSIGNED_INT,f.type=Ht.SCALAR,f.normalized=!1,f.count=i.instanceCount,f.constant=0,f.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new ht({attributes:{screenQuadPosition:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...f,variableName:"splatIndex"}},primitiveType:Me.TRIANGLE_STRIP});e._vertexArray=li.fromGeometry({context:t.context,geometry:g,attributeLocations:u,bufferUsage:Qe.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=R.multiply(n.modelMatrix,R.fromArray(n.root.transform),Mue),A=new nt({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Be.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:Me.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=A};Nu.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===tu.IDLE){if(!this._dirty&&R.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let u of n){let f=u.content.splatPrimitive,h=s(f);l(a)||(a=q.createTypedArray(r,i*Ht.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.POSITION)),this._scales=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.SCALE)),this._rotations=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.ROTATION)),this._colors=o(q.UNSIGNED_BYTE,r=>Qt.getAttributeBySemantic(r,ct.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||Nu.generateSplatTexture(this,e);return}if(R.clone(e.camera.viewMatrix,this._prevViewMatrix),R.multiply(e.camera.viewMatrix,this._rootTransform,uD),l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED})}else if(this._sorterState===tu.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED}),this._sorterState=tu.SORTING}else{if(this._sorterState===tu.SORTING)return;if(this._sorterState===tu.SORTED)Nu.buildGSplatDrawCommand(this,e),this._sorterState=tu.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===tu.ERROR)throw this._sorterError}this._dirty=!1}};var fD=Nu;function Kf(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new fD({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(Kf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Kf.fromGltf=async function(e,t,n,i){let o=n,r=we.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:Ao.Y,forwardAxis:Ao.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=we.createIfNeeded(i);let a=new Ff(s);try{await a.load()}catch(c){throw a.destroy(),new ce(`Failed to load glTF: ${c.message}`)}return new Kf(a,e,t,n)};Kf.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(fD.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.POSITION).typedArray),this._originalRotations=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.ROTATION).typedArray),this._originalScales=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};Kf.prototype.hasProperty=function(e,t){return!1};Kf.prototype.getFeature=function(e){};Kf.prototype.applyDebugSettings=function(e,t){};Kf.prototype.applyStyle=function(e){};Kf.prototype.pick=function(e,t,n){};Kf.prototype.isDestroyed=function(){return this.isDestroyed};Kf.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),ue(this)};var dD=Kf;var Nue={b3dm:function(e,t,n,i,o){return zf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return zf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return zf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return dO.fromTileType(e,t,n,i,o,Nue)},externalTileset:function(e,t,n,i){return $Q.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new yO(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new _k(e,t,n,i,o)},subt:function(e,t,n,i,o){return uB.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return uB.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new ce("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),u=!1;return e.isGltfExtensionRequired instanceof Function&&(u=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),u?dD.fromGltf(e,t,n,c):zf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?dD.fromGltf(e,t,n,i):zf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return zf.fromGeoJson(e,t,n,i)}},Xx=Nue;var kKe={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},cr=Object.freeze(kKe);var oh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};oh.isBinaryFormat=function(e){switch(e){case oh.BATCHED_3D_MODEL:case oh.INSTANCED_3D_MODEL:case oh.COMPOSITE:case oh.POINT_CLOUD:case oh.VECTOR:case oh.GEOMETRY:case oh.IMPLICIT_SUBTREE:case oh.VOXEL_BINARY:case oh.GLTF_BINARY:return!0;default:return!1}};var ua=Object.freeze(oh);var UKe={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},rh=Object.freeze(UKe);var fa={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},yp=new Array(fa.NUMBER_OF_PASSES);yp[fa.RENDER]=Object.freeze({pass:fa.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});yp[fa.PICK]=Object.freeze({pass:fa.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});yp[fa.SHADOW]=Object.freeze({pass:fa.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});yp[fa.PRELOAD]=Object.freeze({pass:fa.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.PRELOAD_FLIGHT]=Object.freeze({pass:fa.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:fa.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PRELOAD]=Object.freeze({pass:fa.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PICK]=Object.freeze({pass:fa.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});fa.getPassOptions=function(e){return yp[e]};var Zo=Object.freeze(fa);function Qm(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(Qm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});Qm.prototype.hasProperty=function(e,t){return!1};Qm.prototype.getFeature=function(e){};Qm.prototype.applyDebugSettings=function(e,t){};Qm.prototype.applyStyle=function(e){};Qm.prototype.update=function(e,t){};Qm.prototype.pick=function(e,t,n){};Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){return ue(this)};var hD=Qm;function Cp(e){e=e??V.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Cp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Cp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Cp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Cp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Cp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Cp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xk=Cp;function iY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){iY._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new xk({content:n,class:o})}}iY._oneTimeWarning=yt;var Jx=iY;function GKe(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var Zx=GKe;function Ep(e){e=e??V.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Ep.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Ep.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Ep.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Ep.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Ep.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Ep.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var bk=Ep;function oY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){oY._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new bk({tile:n,class:o})}}oY._oneTimeWarning=yt;var Tk=oY;function zKe(e){let t=new Uint8Array(e),n=gm(t);if(n==="glTF"&&(n="glb"),ua.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=VKe(t);if(l(i.root))return{contentType:ua.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:ua.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:ua.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:ua.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:ua.VOXEL_JSON,jsonPayload:i};throw new ce("Invalid tile content.")}function VKe(e){let t;try{t=yr(e)}catch{throw new ce("Invalid tile content.")}return t}var R_=zKe;function Xf(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Yc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(Xf.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function rY(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function Lue(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}Xf.prototype.requestInnerContents=function(){if(!HKe(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;rY(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=WKe(this,n,t,this._tile._contentState);return jKe(this)};function HKe(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Yc.serverHasOpenSlots(n,t[n]))return!1;return Yc.heapHasOpenSlots(e.length)}function WKe(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}return rY(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}rY(e,-1),Oue(e,t,f)}})}async function jKe(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>YKe(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function YKe(e,t,n){if(l(t))try{let i=R_(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===ua.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===ua.GEOMETRY||i.contentType===ua.VECTOR;let a,c=Xx[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,A=s.implicitCoordinates;a.metadata=h.getContentMetadataView(A,n)}else s.hasImplicitContent||(a.metadata=Jx(o,u));let f=Zx(o,u);return l(f)&&(a.group=new zI({metadata:f})),a}catch(i){Oue(e,n,i)}}function Oue(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}Xf.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};Xf.prototype.hasProperty=function(e,t){return!1};Xf.prototype.getFeature=function(e){};Xf.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Xf.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Xf.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Xf.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Xf.prototype.isDestroyed=function(){return!1};Xf.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Sk=Xf;var Fue=Math.cos,Que=Math.sin,qKe=Math.sqrt,sY={};sY.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=Fue(f),A=Que(f),g=a.z*A,m=c.longitude+i*e.granYSin+o*e.granXCos,_=h*Fue(m),y=h*Que(m),C=a.x*_,E=a.y*y,I=qKe(C*_+E*y+g*A);if(r.x=C/I,r.y=E/I,r.z=g/I,n){let b=e.stNwCorner;l(b)?(f=b.latitude-e.stGranYCos*i+o*e.stGranXSin,m=b.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var KKe=new Wi,Jf=new d,XKe=new Ae,wk=new d,mD=new Hi;function kue(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,A=n*f;mD._ellipsoid=te.default,Jf=mD.project(e,Jf),Jf=d.subtract(Jf,wk,Jf);let g=Wi.fromRotation(t,KKe);Jf=Wi.multiplyByVector(g,Jf,Jf),Jf=d.add(Jf,wk,Jf),e=mD.unproject(Jf,e),r-=1,s-=1;let m=e.latitude,_=m+r*A,y=m-c*s,C=m-c*s+r*A,E=Math.max(m,_,y,C),I=Math.min(m,_,y,C),b=e.longitude,S=b+r*u,B=b+s*h,v=b+s*h+r*u,P=Math.max(b,S,B,v),N=Math.min(b,S,B,v);return{north:E,south:I,east:P,west:N,granYCos:c,granYSin:h,granXCos:u,granXSin:A,nwCorner:e}}sY.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,A=!1;u===D.PI_OVER_TWO&&(h=!0),f===-D.PI_OVER_TWO&&(A=!0);let g,m=u-f;c>a?g=D.TWO_PI-c+a:g=a-c;let _=Math.ceil(g/t)+1,y=Math.ceil(m/t)+1,C=g/(_-1),E=m/(y-1),I=ae.northwest(e,r),b=ae.center(e,XKe);(n!==0||i!==0)&&(b.longitude<I.longitude&&(b.longitude+=D.TWO_PI),mD._ellipsoid=te.default,wk=mD.project(b,wk));let S=E,B=C,v=0,P=0,N=ae.clone(e,o),L={granYCos:S,granYSin:v,granXCos:B,granXSin:P,nwCorner:I,boundingRectangle:N,width:_,height:y,northCap:h,southCap:A};if(n!==0){let p=kue(I,n,C,E,b,_,y);u=p.north,f=p.south,a=p.east,c=p.west,L.granYCos=p.granYCos,L.granYSin=p.granYSin,L.granXCos=p.granXCos,L.granXSin=p.granXSin,N.north=u,N.south=f,N.east=a,N.west=c}if(i!==0){n=n-i;let p=ae.northwest(N,s),x=kue(p,n,C,E,b,_,y);L.stGranYCos=x.granYCos,L.stGranXCos=x.granXCos,L.stGranYSin=x.granYSin,L.stGranXSin=x.granXSin,L.stNwCorner=p,L.stWest=x.west,L.stSouth=x.south}return L};var da=sY;var JKe=new le,ZKe=new le,$Ke=new d,e7e=new ae;function Uue(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),A=0,g=0,m,_=$Ke;if(r)da.computePosition(t,n,!1,g,0,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;else for(m=0;m<o;m++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=o-1,g=1;g<i;g++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=0,g=i-2;g>0;g--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;let y=h.length/3*2,C=Fe.createTypedArray(h.length/3,y),E=0;for(let b=0;b<h.length/3-1;b++)C[E++]=b,C[E++]=b+1;C[E++]=h.length/3-1,C[E++]=0;let I=new ht({attributes:new En,primitiveType:Me.LINES});return I.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),I.indices=C,I}function t7e(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=Uue(e,t),s=t.height,a=t.width,c=xi.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=xi.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let A=t.northCap,g=t.southCap,m=4;A&&(m-=1),g&&(m-=1);let _=(f.length/3+m)*2,y=Fe.createTypedArray(f.length/3,_);u=f.length/6;let C=0;for(let I=0;I<u-1;I++)y[C++]=I,y[C++]=I+1,y[C++]=I+u,y[C++]=I+u+1;y[C++]=u-1,y[C++]=0,y[C++]=u+u-1,y[C++]=u,y[C++]=0,y[C++]=u;let E;if(A)E=s-1;else{let I=a-1;y[C++]=I,y[C++]=I+u,E=a+s-2}if(y[C++]=E,y[C++]=E+u,!g){let I=a+E-1;y[C++]=I,y[C]=I+u}return r.indices=y,r}function eb(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??D.RADIANS_PER_DEGREE,i=e.ellipsoid??te.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}eb.packedLength=ae.packedLength+te.packedLength+5;eb.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var Gue=new ae,zue=te.clone(te.UNIT_SPHERE),$x={rectangle:Gue,ellipsoid:zue,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};eb.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Gue);t+=ae.packedLength;let o=te.unpack(e,t,zue);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):($x.granularity=r,$x.height=s,$x.rotation=a,$x.extrudedHeight=c,$x.offsetAttribute=u===-1?void 0:u,new eb($x))};var n7e=new Ae;eb.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=da.computeOptions(t,e._granularity,e._rotation,0,e7e,n7e),o,r;if(D.equalsEpsilon(t.north,t.south,D.EPSILON10)||D.equalsEpsilon(t.east,t.west,D.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!D.equalsEpsilon(s,a,0,D.EPSILON2),u;if(c){if(o=t7e(e,i),l(e._offsetAttribute)){let A=o.attributes.position.values.length/3,g=new Uint8Array(A);e._offsetAttribute===hn.TOP?g=g.fill(1,0,A/2):(u=e._offsetAttribute===hn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=le.fromRectangle3D(t,n,s,ZKe),h=le.fromRectangle3D(t,n,a,JKe);r=le.union(f,h)}else{if(o=Uue(e,i),o.attributes.position.values=xi.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===hn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=le.fromRectangle3D(t,n,s)}return new ht({attributes:o.attributes,indices:o.indices,primitiveType:Me.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var tb=eb;function ib(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=e.ellipsoid??te.WGS84;a7e(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(ib.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});ib.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Qn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)};var Vue=new d,Bk=new d,Hue=new d,i7e=new d,o7e=new d,r7e=new d,s7e=new d,Zf=new Ae,Wue=new mn(d.UNIT_X,0),nb=new In;function a7e(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Zf.longitude=t.west,Zf.latitude=(t.south+t.north)*.5,Zf.height=0;let i=n.cartographicToCartesian(Zf,r7e),o=d.cross(i,d.UNIT_Z,i7e);d.normalize(o,e.westNormal),Zf.longitude=t.east;let r=n.cartographicToCartesian(Zf,s7e),s=d.cross(d.UNIT_Z,r,Vue);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,Vue);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,o7e),u=t.south,f;if(u>0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=u;let _=n.cartographicToCartesian(Zf,nb.origin);d.clone(c,nb.direction);let y=mn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Wue);Ai.rayPlane(nb,y,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(_,Bk)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),Bk);let h=d.cross(f,a,Hue);d.normalize(h,e.southNormal);let A=t.north,g;if(A<0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=A;let _=n.cartographicToCartesian(Zf,nb.origin);d.negate(c,nb.direction);let y=mn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Wue);Ai.rayPlane(nb,y,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(_,Bk)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),Bk);let m=d.cross(a,g,Hue);d.normalize(m,e.northNormal)}var c7e=new d,l7e=new d,u7e=new d(0,-1,0),f7e=new d(0,0,-1),jue=new d;function d7e(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,A=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ie.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),c7e),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),l7e),f.z=f.y,f.y=f.x,f.x=0,h=u7e,g=d.UNIT_Y,A=f7e,m=d.UNIT_Z);let _=d.subtract(i,u,jue),y=d.dot(_,h),C=d.dot(_,A),E=d.subtract(i,f,jue),I=d.dot(E,g),b=d.dot(E,m);y>0?r+=y*y:I>0&&(r+=I*I),C>0?r+=C*C:b>0&&(r+=b*b)}let s,a,c;if(t.mode===ie.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}ib.prototype.distanceToCamera=function(e){let t=d7e(this,e);if(e.mode===ie.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};ib.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};ib.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new tb({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Rt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var $f=ib;var AD={},h7e=new d,Yue=new d,que=new d,Kue=new d,Xue=new Qn;AD.validOutline=function(e){let n=Qn.fromPoints(e,Xue).halfAxes,i=J.getColumn(n,0,Yue),o=J.getColumn(n,1,que),r=J.getColumn(n,2,Kue),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};AD.computeProjectTo2DArguments=function(e,t,n,i){let o=Qn.fromPoints(e,Xue),r=o.halfAxes,s=J.getColumn(r,0,Yue),a=J.getColumn(r,1,que),c=J.getColumn(r,2,Kue),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),A=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(A===f||A===h)&&(g=s),A===u?g=a:A===h&&(m=a),(A===u||A===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Jue(e,t,n,i,o){let r=d.subtract(e,t,h7e),s=d.dot(n,r),a=d.dot(i,r);return k.fromElements(s,a,o)}AD.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Jue(i[r],e,t,n);return o}};AD.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Jue(i,e,t,n,o)}};var M_=AD;function m7e(e){let t=e.length,n=new Float64Array(t*3),i=Fe.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n})});return new ht({attributes:s,indices:i,primitiveType:Me.LINES})}function dE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+1}dE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new dE(t)};dE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var A7e={polygonHierarchy:{}};dE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new dE(A7e)),n._polygonHierarchy=i,n.packedLength=o,n};dE.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=No(n,d.equalsEpsilon,!0),n.length<3||!M_.validOutline(n))return;let o=$n.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Rt({geometry:m7e(o[c])});r.push(u)}let s=jn.combineInstances(r)[0],a=le.fromPoints(t.positions);return new ht({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var sh=dE;var Dk=new Ae;function pD(e){let t=Hg.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??te.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=b7e(t,n,i,o);this._boundingPlanes=r;let s=B7e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=mY(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=mY(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=mY(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();Dk=o.cartesianToCartographic(c,Dk),Dk.height=(i+n)/2,this.center=o.cartographicToCartesian(Dk,c),this._boundingSphere=le.fromPoints(s)}var p7e=new d,g7e=new Ae,_7e=new d,y7e=new Ae,C7e=new d,E7e=new d,I7e=new d,x7e=new d;function b7e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,p7e),a=i.cartesianToCartographic(r,g7e);a.height=n;let c=i.cartographicToCartesian(a,_7e),u=mn.fromPointNormal(c,s);o[0]=u;let f=0,h,A=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),A[h]=g,m=i.cartesianToCartographic(g,y7e),m.height=t;let y=mn.getPointDistance(u,i.cartographicToCartesian(m,C7e));y<f&&(f=y)}let _=mn.clone(u);for(_.normal=d.negate(_.normal,_.normal),_.distance=_.distance*-1+f,o[1]=_,h=0;h<4;h++){g=A[h];let y=A[(h+1)%4],C=i.geodeticSurfaceNormal(g,E7e),E=d.subtract(y,g,x7e),I=d.cross(E,C,I7e);I=d.normalize(I,I),o[2+h]=mn.fromPointNormal(g,I)}return o}var hE=new d,mE=new d,AE=new d,aY=new d,cY=new d,lY=new d,T7e=new d,S7e=new d,w7e=new d,uY=new d,fY=new d,dY=new d,N_=new d,km=new J;function Zue(e,t,n){hE=e.normal,mE=t.normal,AE=n.normal,aY=d.multiplyByScalar(e.normal,-e.distance,aY),cY=d.multiplyByScalar(t.normal,-t.distance,cY),lY=d.multiplyByScalar(n.normal,-n.distance,lY),uY=d.multiplyByScalar(d.cross(mE,AE,T7e),d.dot(aY,hE),uY),fY=d.multiplyByScalar(d.cross(AE,hE,S7e),d.dot(cY,mE),fY),dY=d.multiplyByScalar(d.cross(hE,mE,w7e),d.dot(lY,AE),dY),km[0]=hE.x,km[1]=mE.x,km[2]=AE.x,km[3]=hE.y,km[4]=mE.y,km[5]=AE.y,km[6]=hE.z,km[7]=mE.z,km[8]=AE.z;let i=J.determinant(km);return N_=d.add(uY,fY,N_),N_=d.add(N_,dY,N_),new d(N_.x/i,N_.y/i,N_.z/i)}function B7e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Zue(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Zue(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var hY=new d,ob=new d;function mY(e,t){let n=[];for(let i=0;i<4;i++)hY=d.subtract(t[(i+1)%4],t[i],hY),ob=d.cross(e.normal,hY,ob),ob=d.normalize(ob,ob),n[i]=d.clone(ob);return n}Object.defineProperties(pD.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var AY=new d;pD.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;mn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):mn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,mn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let A=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=$ue(t,A[0],A[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=pY(mn.projectPointOntoPlane(this._boundingPlanes[1],t,AY),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var D7e=new d,v7e=new d;function $ue(e,t,n){let i=d.subtract(n,t,D7e),o=d.subtract(e,t,v7e),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var P7e=new mn(d.UNIT_X,0);function pY(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=mn.fromPointNormal(t[c],i[c],P7e);mn.getPointDistance(u,e)<0||(a=$ue(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}pD.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?nn.INSIDE:n===this._vertices.length?nn.OUTSIDE:nn.INTERSECTING};pD.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new sh({polygonHierarchy:{positions:this._planeVertices[0]}}),i=sh.createGeometry(n),o=new Rt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),r=new sh({polygonHierarchy:{positions:this._planeVertices[1]}}),s=sh.createGeometry(r),a=new Rt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new sh({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=sh.createGeometry(f);c[u]=new Rt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}})}return new kn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var vk=pD;var R7e=new d(1,1,1),Pk=Math.cos,Rk=Math.sin;function rb(e){e=e??V.EMPTY_OBJECT;let t=e.radii??R7e,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),u=Math.round(e.subdivisions??128);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}rb.packedLength=2*d.packedLength+8;rb.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var efe=new d,tfe=new d,Ip={radii:efe,innerRadii:tfe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};rb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,efe);t+=d.packedLength;let o=d.unpack(e,t,tfe);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=A===-1?void 0:A,n):(Ip.minimumClock=r,Ip.maximumClock=s,Ip.minimumCone=a,Ip.maximumCone=c,Ip.stackPartitions=u,Ip.slicePartitions=f,Ip.subdivisions=h,Ip.offsetAttribute=A===-1?void 0:A,new rb(Ip))};rb.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=te.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/D.TWO_PI),f=Math.round(f*Math.abs(s-r)/D.PI),u<2&&(u=2),f<2&&(f=2);let h=0,A=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,_=!1;g&&(A=2,r>0&&(m=!0,h+=u),s<Math.PI&&(_=!0,h+=u));let y=a*A*(f+u),C=new Float64Array(y*3),E=2*(y+h-(u+f)*A),I=Fe.createTypedArray(y,E),b,S,B,v,P=0,N=new Array(f),L=new Array(f);for(b=0;b<f;b++)v=r+b*(s-r)/(f-1),N[b]=Rk(v),L[b]=Pk(v);let p=new Array(a),x=new Array(a);for(b=0;b<a;b++)B=i+b*(o-i)/(a-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(N.length=a,L.length=a,b=0;b<a;b++)v=r+b*(s-r)/(a-1),N[b]=Rk(v),L[b]=Pk(v);for(p.length=u,x.length=u,b=0;b<u;b++)B=i+b*(o-i)/(u-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(P=0,b=0;b<f*A;b++){let M=b*a;for(S=0;S<a-1;S++)I[P++]=M+S,I[P++]=M+S+1}let T=f*a*A;for(b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g)for(T=f*a*A+u*a,b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g){let M=f*a*A,O=M+a*u;if(m)for(b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b;if(_)for(M+=a*u-u,O+=a*u-u,b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b}let w=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C})});if(l(e._offsetAttribute)){let M=C.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}return new ht({attributes:w,indices:I,primitiveType:Me.LINES,boundingSphere:le.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var ed=rb;function sb(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new ed(i),this._workerName="createSphereOutlineGeometry"}sb.packedLength=ed.packedLength;sb.pack=function(e,t,n){return ed.pack(e._ellipsoidGeometry,t,n)};var M7e=new ed,pE={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};sb.unpack=function(e,t,n){let i=ed.unpack(e,t,M7e);return pE.stackPartitions=i._stackPartitions,pE.slicePartitions=i._slicePartitions,pE.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,pE.radii),n._ellipsoidGeometry=new ed(pE),n):(pE.radius=i._radii.x,new sb(pE))};sb.createGeometry=function(e){return ed.createGeometry(e._ellipsoidGeometry)};var L_=sb;function ab(e,t){t===0&&(t=D.EPSILON7),this._boundingSphere=new le(e,t)}Object.defineProperties(ab.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});ab.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};ab.prototype.intersectPlane=function(e){return le.intersectPlane(this._boundingSphere,e)};ab.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};ab.prototype.createDebugVolume=function(e){let t=new L_({radius:this.radius}),n=R.fromTranslation(this.center,new R.clone(R.IDENTITY)),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var O_=ab;var N7e=new d,L7e=new d,O7e=new d,F7e=new d;function gE(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,D.EPSILON7/i,n)}function gY(e,t){let n=d.normalize(e,F7e),i=d.equalsEpsilon(n,d.UNIT_X,D.EPSILON6)?d.UNIT_Y:d.UNIT_X;return gE(e,i,t)}function nfe(e){let t=J.getColumn(e,0,N7e),n=J.getColumn(e,1,L7e),i=J.getColumn(e,2,O7e),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=D.EPSILON7,e[4]=D.EPSILON7,e[8]=D.EPSILON7,e):(o&&!r&&!s?t=gE(n,i,t):!o&&r&&!s?n=gE(t,i,n):!o&&!r&&s?i=gE(n,t,i):o?r?s||(t=gY(i,t),n=gE(i,t,n)):(t=gY(n,t),i=gE(n,t,i)):(n=gY(t,n),i=gE(n,t,i)),J.setColumn(e,0,t,e),J.setColumn(e,1,n,e),J.setColumn(e,2,i,e),e)}function cb(e,t){t=nfe(t),this._orientedBoundingBox=new Qn(e,t),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(cb.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});cb.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};cb.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};cb.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=nfe(t),J.clone(t,this._orientedBoundingBox.halfAxes),le.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};cb.prototype.createDebugVolume=function(e){let t=new $h({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=R.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var Lu=cb;function lr(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ii(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?R.unpack(n.transform):R.clone(R.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=R.multiply(a,this.transform,new R),u=l(i)?i._initialTransform:R.IDENTITY;this._initialTransform=R.multiply(u,this.transform,new R),this.computedTransform=c,this.metadata=Tk(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,lr._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let A;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&lr._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),A=n.refine.toUpperCase()==="REPLACE"?rr.REPLACE:rr.ADD):l(i)?A=i.refine:A=rr.REPLACE,this.refine=A,this.children=[],this.parent=i;let g,m=!1,_,y,C;if(t=we.createIfNeeded(t),r)_=cr.UNLOADED,y=t.clone();else if(l(s)){let S=s.uri;l(s.url)&&(lr._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),S=s.url),S===""?(lr._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new hD(e,this),m=!0,_=cr.READY):(_=cr.UNLOADED,y=t.getDerivedResource({url:S}),C=Yc.getServerKey(y.getUrlComponent()))}else g=new hD(e,this),m=!0,_=cr.READY;this._content=g,this._contentResource=y,this._contentState=_,this._expiredContent=void 0,this._serverKey=C,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let E=n.expire,I,b;l(E)&&(I=E.duration,l(E.date)&&(b=K.fromIso8601(E.date))),this.expireDuration=I,this.expireDate=b,this.lastStyleTime=0,this._optimChildrenWithinParent=rh.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=G.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new K,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}lr._deprecationWarning=Pr;Object.defineProperties(lr.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new G),G.clone(this._color)},set:function(e){this._color=G.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===cr.READY}},contentUnloaded:{get:function(){return this._contentState===cr.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===cr.EXPIRED}},contentFailed:{get:function(){return this._contentState===cr.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var F_=new d;function Q7e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,F_),c=d.add(s.positionWC,a,F_),u=d.subtract(c,r,F_);if(d.magnitude(u)>o){let b=d.normalize(u,F_),S=d.multiplyByScalar(b,o,F_),B=d.add(r,S,F_),v=d.subtract(B,s.positionWC,F_),P=d.normalize(v,F_);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,P))}else e._foveatedFactor=0;let A=e.refine===rr.REPLACE,g=n.isSkippingLevelOfDetail;if(A&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&A&&g||n._pass===Zo.PRELOAD_FLIGHT||n._pass===Zo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),_=n.foveatedConeSize*m;if(e._foveatedFactor<=_)return!1;let y=m-_,C=D.clamp((e._foveatedFactor-_)/y,0,1),E=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,C),I=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-E<=I}var afe=new K;lr.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,A;if(e.mode===ie.SCENE2D||u instanceof An){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);A=s/m}else{let g=Math.max(this._distanceToCamera,D.EPSILON7),m=u.sseDenominator;if(A=s*h/(g*m),i.dynamicScreenSpaceError){let _=i._dynamicScreenSpaceErrorComputedDensity,y=i.dynamicScreenSpaceErrorFactor,C=D.fog(g,_)*y;A-=C}}return A/=e.pixelRatio,A};function k7e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function U7e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}lr.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:zs.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==zs.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=U7e(n,this),this._priorityProgressiveResolution=k7e(n,this),this.priorityDeferred=Q7e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};lr.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=K.now(afe);K.lessThan(this.expireDate,e)&&(this._contentState=cr.EXPIRED,this._expiredContent=this._content)}};function G7e(e){if(!l(e.expireDuration))return;let t=K.now(afe);K.addSeconds(t,e.expireDuration,t),l(e.expireDate)?K.lessThan(e.expireDate,t)&&K.clone(t,e.expireDate):e.expireDate=K.clone(t)}function z7e(e){return function(){return e._priority}}lr.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?V7e(this):W7e(this)};function V7e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ii(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new Sk(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=cr.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=cr.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=cr.FAILED,o})}async function H7e(e,t,n,i,o){let r=e._contentState;e._contentState=cr.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=cr.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await j7e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=cr.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=cr.FAILED,a}}function W7e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:z7e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return H7e(e,o,i,n,r)}async function j7e(e,t){let n=R_(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===ua.GEOMETRY||n.contentType===ua.VECTOR,(n.contentType===ua.IMPLICIT_SUBTREE||n.contentType===ua.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===ua.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=Xx[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=Jx(i,s));let a=Zx(i,s);return l(a)&&(o.group=new zI({metadata:a})),o}lr.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};lr.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=cr.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var cfe=new le;function yY(e,t){if(t.mode!==ie.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._boundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._boundingVolume2D:e._boundingVolume}function Y7e(e,t){if(t.mode!==ie.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._contentBoundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}lr.prototype.visibility=function(e,t){let n=e.cullingVolume,i=yY(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==nn.INSIDE,a===nn.OUTSIDE)return zs.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==nn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};lr.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return nn.INSIDE;if(this._visibilityPlaneMask===zs.MASK_INSIDE)return nn.INSIDE;let t=e.cullingVolume,n=Y7e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==nn.INSIDE,s===nn.OUTSIDE)return nn.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==nn.OUTSIDE,s===nn.INSIDE)return nn.OUTSIDE}return t.computeVisibility(n)};lr.prototype.distanceToTile=function(e){return yY(this,e).distanceToCamera(e)};var q7e=new d;lr.prototype.distanceToTileCenter=function(e){let n=yY(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,q7e);return d.dot(e.camera.directionWC,i)};lr.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var lfe=new J,ufe=new d,K7e=new J,CY=new d,ffe=new ae,dfe=new Qn,_Y=new R;function X7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=J.fromArray(e,3,K7e);i=R.multiplyByPoint(t,i,i);let r=R.getMatrix3(t,lfe);return o=J.multiply(r,o,o),l(n)?(n.update(i,o),n):new Lu(i,o)}function ife(e,t,n,i){let o=ae.unpack(e,0,ffe),r=e[4],s=e[5],a=Qn.fromRectangle(o,r,s,te.WGS84,dfe),c=a.center,u=a.halfAxes;t=R.multiplyTransformation(t,R.inverseTransformation(n,_Y),_Y),c=R.multiplyByPoint(t,c,c);let f=R.getMatrix3(t,lfe);return u=J.multiply(f,u,u),l(i)&&i instanceof Lu?(i.update(c,u),i):new Lu(c,u)}function J7e(e,t,n,i){if(!R.equalsEpsilon(t,n,D.EPSILON8))return i instanceof Lu?ife(e,t,n,i):ife(e,t,n,void 0);let o=ae.unpack(e,0,ffe);return i instanceof $f?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(te.WGS84),i):new $f({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function Z7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=e[3];i=R.multiplyByPoint(t,i,i);let r=R.getScale(t,ufe),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new O_(i,o)}lr.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=nx.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new ce("boundingVolume must be defined");if(Ii(e,"3DTILES_bounding_volume_S2"))return new vk(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=X7e(r,t,n);return this._verticalExaggeration!==1&&ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=J7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof Lu?ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Yr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Yr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(te.WGS84))),c}if(l(a)){let c=Z7e(a,t,n);if(this._verticalExaggeration!==1){let u=Yr.getPosition(c.center,te.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,CY),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new ce("boundingVolume must contain a sphere, region, or box")};var $7e=d.unpackArray(new Array(24).fill(0));function ofe(e,t,n){let i=e.boundingVolume.computeCorners($7e).map(r=>Yr.getPosition(r,te.WGS84,t,n,r)),o=Qn.fromPoints(i,dfe);e.update(o.center,o.halfAxes)}lr.prototype.updateTransform=function(e,t){e=e??R.IDENTITY;let n=R.multiplyTransformation(e,this.transform,_Y),i=!R.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&R.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};lr.prototype.updateGeometricErrorScale=function(){let e=R.getScale(this.computedTransform,ufe),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function eXe(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=G.WHITE:c=G.DARKGRAY:c=G.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=en.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(G.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(G.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=G.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function tXe(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=cr.FAILED,o}}function nXe(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function iXe(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}lr.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;nXe(this,e),iXe(this,e),eXe(this,e,t,n),tXe(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Be.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var rfe=[];lr.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(G7e(this),this._selectedFrame=0,this.lastStyleTime=0,K.now(this._loadTimestamp),this._contentState=cr.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=rfe;try{this._content.update(e,t)}catch(i){throw this._contentState=cr.FAILED,i}rfe.length=0,t.commandList=n};function sfe(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function Mk(e,t,n){return Math.max(D.normalize(e,t,n)-D.EPSILON7,0)}lr.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,A=Math.pow(10,f),g=f+h,m=r,_=Math.pow(10,g),y=g+m,C=Math.pow(10,y),E=Mk(this._depth,n.depth,i.depth);E=t?1-E:E;let b=!e.isSkippingLevelOfDetail&&this.refine===rr.REPLACE?Mk(this._priorityHolder._distanceToCamera,n.distance,i.distance):Mk(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),S=sfe(b,a,s),B=this._priorityProgressiveResolution?0:A,v=Mk(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),P=sfe(v,u,c),N=this.priorityDeferred?_:0,L=e._pass===Zo.PRELOAD_FLIGHT?0:C;this._priority=E+S+B+P+N+L};lr.prototype.isDestroyed=function(){return!1};lr.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var ah=lr;function xp(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(xp.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});xp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};xp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};xp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};xp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};xp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};xp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};xp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var gD=xp;function bp(e){e=e??V.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(bp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});bp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};bp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};bp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};bp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};bp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};bp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};bp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var Nk=bp;function hfe(e){e=e??V.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new Nk({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new gD({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new gD({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(hfe.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var lb=hfe;var mfe={},oXe=new d;mfe.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof Lu||i instanceof $f){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=rh.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof Lu||a instanceof $f)){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,oXe),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),A=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=A+f){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===rh.USE_OPTIMIZATION};var Lk=mfe;function _D(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(_D.prototype,{length:{get:function(){return this._length}}});function rXe(e,t,n){this.item=e,this.previous=t,this.next=n}_D.prototype.add=function(e){let t=new rXe(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Afe(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}_D.prototype.remove=function(e){l(e)&&(Afe(this,e),--this._length)};_D.prototype.splice=function(e,t){if(e===t)return;Afe(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var Ok=_D;function _E(){this._list=new Ok,this._sentinel=this._list.add(),this._trimTiles=!1}_E.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};_E.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};_E.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};_E.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};_E.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};_E.prototype.trim=function(){this._trimTiles=!0};var Fk=_E;function Qk(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function IY(e,t){let n;return t==="_loadTimestamp"?n=K.toDate(e).getTime():n=e,n}Qk.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=IY(e,n),this._referenceMaximum[n]=IY(t,n)};function sXe(e,t){let n=e.tilePropertyName;if(l(n)){let i=IY(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var EY=[new G(.1,.1,.1,1),new G(.153,.278,.878,1),new G(.827,.231,.49,1),new G(.827,.188,.22,1),new G(1,.592,.259,1),new G(1,.843,0,1)];Qk.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=sXe(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+D.EPSILON7,c=D.clamp(i-o,0,s)/s,u=EY.length-1,f=c*u,h=Math.floor(f),A=Math.ceil(f),g=f-h,m=EY[h],_=EY[A],y=G.clone(G.WHITE);y.red=D.lerp(m.red,_.red,g),y.green=D.lerp(m.green,_.green,g),y.blue=D.lerp(m.blue,_.blue,g),e._debugColor=y};Qk.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var kk=Qk;function ub(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}ub.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};ub.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};ub.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};ub.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};ub.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Um=ub;function yD(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(yD.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});yD.prototype.makeDirty=function(){this._styleDirty=!0};yD.prototype.resetDirty=function(){this._styleDirty=!1};yD.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var Uk=yD;function aXe(e,t,n){let i=Ii(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ii(o,"3DTILES_bounding_volume_S2")&&!Ii(o,"3DTILES_bounding_volume_cylinder"))throw new ce("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new we({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=cXe(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ze(a,!0));let c=new we({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=lXe(t),this.subdivisionScheme=Ts[i.subdivisionScheme],this.branchingFactor=Ts.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function cXe(e){if(Ii(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function lXe(e){let t=ze(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var fb=aXe;var CD={};function pfe(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function xY(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function gfe(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function bY(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}CD.encode2D=function(e,t){return(pfe(e)|pfe(t)<<1)>>>0};CD.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=gfe(e),t[1]=gfe(e>>1),t};CD.encode3D=function(e,t,n){return xY(e)|xY(t)<<1|xY(n)<<2};CD.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=bY(e),t[1]=bY(e>>1),t[2]=bY(e>>2),t};var yE=CD;function $o(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Ts.OCTREE&&(this.z=e.z)}Object.defineProperties($o.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Ts.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Ts.OCTREE?yE.encode3D(this.x,this.y,this.z):yE.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Ts.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});$o.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Ts.OCTREE){let o=(this.z<<e.level)+e.z;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Ts.OCTREE){let r=Math.floor(this.z/t);return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};$o.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Ts.OCTREE){let r=e.z%n;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};$o.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Ts.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};$o.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};$o.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Ts.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};$o.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Ts.OCTREE?this.z===e.z:!0)};$o.prototype.isImplicitTilesetRoot=function(){return this.level===0};$o.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};$o.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};$o.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Ts.OCTREE&&(e.z=this.z),e};var _fe=[0,0,0];$o.fromMortonIndex=function(e,t,n,i){let o;return e===Ts.OCTREE?(o=yE.decode3D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=yE.decode2D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};$o.fromTileIndex=function(e,t,n){let i,o,r;return e===Ts.OCTREE?(i=Math.floor(D.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(D.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),$o.fromMortonIndex(e,t,i,r)};var db=$o;function Tp(){}Tp.selectTiles=function(e,t){me.throwInstantiationError()};Tp.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};Tp.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};Tp.selectTile=function(e,t){if(e.contentVisibility(t)===nn.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};Tp.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};Tp.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};Tp.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!uXe(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function uXe(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}Tp.updateTile=function(e,t){yfe(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,hXe(e),e._shouldSelect=!1,e._finalResolution=!0};function yfe(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];yfe(r,t),e._visible=r._visible;return}if(fXe(e,t)){e._visible=!1;return}let i=e.refine===rr.REPLACE,o=e._optimChildrenWithinParent===rh.USE_OPTIMIZATION;if(i&&o&&n&&!dXe(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function fXe(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==rr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function dXe(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function hXe(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var La=Tp;function Cfe(){}var ED={stack:new kl,stackMaximumLength:0};Cfe.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=La,s=ED.stack;for(s.push(i);s.length>0;){ED.stackMaximumLength=Math.max(ED.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===rr.ADD,u=a.refine===rr.REPLACE,f=mXe(a);f&&AXe(a,s,t),(c||u&&!f)&&(pXe(e,a),o(a,t),gXe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return ED.stack.trim(ED.stackMaximumLength),n};function mXe(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function AXe(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function pXe(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function gXe(e,t){e.contentAvailable&&e.contentVisibility(t)!==nn.OUTSIDE&&e.tileset._selectedTiles.push(e)}var Gk=Cfe;function Efe(){}var ID={stack:new kl,stackMaximumLength:0},xD={stack:new kl,stackMaximumLength:0};Efe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;yXe(n,t),ID.stack.trim(ID.stackMaximumLength),xD.stack.trim(xD.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function TY(e,t){e.contentAvailable&&La.selectTile(e,t)}function _Xe(e,t,n){let i=e.refine===rr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=La;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(La.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,A=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let _=r[m];if(_.isVisible?(t.push(_),_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),h=!0):(u||o.loadSiblings)&&(_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),a(_,n),c(_,n)),u){let y;_._inRequestVolume?_.hasRenderableContent?y=_.contentAvailable:y=CXe(_,n):y=!1,f=f&&y}}if(h||(f=!1),A!==-1&&i){let m=r[A];m._wasMinPriorityChild=!0;let _=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;_._foveatedFactor=Math.min(m._foveatedFactor,_._foveatedFactor),_._distanceToCamera=Math.min(m._distanceToCamera,_._distanceToCamera);for(let y=0;y<r.length;++y)r[y]._priorityHolder=_}return f}function yXe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=La,a=ID.stack;for(a.push(e);a.length>0;){ID.stackMaximumLength=Math.max(ID.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?_Xe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===rr.ADD?(TY(c,t),o(c,t)):c.refine===rr.REPLACE&&(o(c,t),h&&TY(c,t)):(n._emptyTiles.push(c),o(c,t),h&&TY(c,t)),r(c,t),s(c,t)}}function CXe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=La,s=!0,a=xD.stack;for(a.push(e);a.length>0;){xD.stackMaximumLength=Math.max(xD.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let A=0;A<f;++A){let g=u[A];a.push(g)}}return e.hasEmptyContent||s}var zk=Efe;function Ife(){}var bD={stack:new kl,stackMaximumLength:0},TD={stack:new kl,stackMaximumLength:0},Sp={stack:new kl,stackMaximumLength:0,ancestorStack:new kl,ancestorStackMaximumLength:0},EXe=2;Ife.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;wXe(n,t),BXe(n,t),bD.stack.trim(bD.stackMaximumLength),TD.stack.trim(TD.stackMaximumLength),Sp.stack.trim(Sp.stackMaximumLength),Sp.ancestorStack.trim(Sp.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function IXe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=La,r=TD.stack;for(r.push(e);r.length>0;){TD.stackMaximumLength=Math.max(TD.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<EXe&&r.push(u))}}}function Vk(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:IXe(e,t)}function xXe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function bXe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function TXe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=La;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(La.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function SXe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function wXe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=La,c=bD.stack;for(c.push(e);c.length>0;){bD.stackMaximumLength=Math.max(bD.stackMaximumLength,c.length);let u=c.pop();xXe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?TXe(u,c,t)&&h:!1;let A=!u._refines&&h;u.hasRenderableContent?u.refine===rr.ADD?(Vk(u,t),r(u,t)):u.refine===rr.REPLACE&&(SXe(u,i)?(r(u,t),A&&Vk(u,t)):A?(Vk(u,t),r(u,t)):bXe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),A&&Vk(u,t)),s(u,t),a(u,t)}}function BXe(e,t){let{selectTile:n,canTraverse:i}=La,{stack:o,ancestorStack:r}=Sp,s;for(o.push(e);o.length>0||r.length>0;){if(Sp.stackMaximumLength=Math.max(Sp.stackMaximumLength,o.length),Sp.ancestorStackMaximumLength=Math.max(Sp.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===rr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var Hk=Ife;function Ys(){this._layers=[],this.layerAdded=new _e,this.layerRemoved=new _e,this.layerMoved=new _e,this.layerShownOrHidden=new _e}Object.defineProperties(Ys.prototype,{length:{get:function(){return this._layers.length}}});Ys.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};Ys.prototype.addImageryProvider=function(e,t){let n=new ds(e);return this.add(n,t),n};Ys.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};Ys.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};Ys.prototype.contains=function(e){return this.indexOf(e)!==-1};Ys.prototype.indexOf=function(e){return this._layers.indexOf(e)};Ys.prototype.get=function(e){return this._layers[e]};function Wk(e,t){return e.indexOf(t)}function xfe(e,t,n){let i=e._layers;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}Ys.prototype.raise=function(e){let t=Wk(this._layers,e);xfe(this,t,t+1)};Ys.prototype.lower=function(e){let t=Wk(this._layers,e);xfe(this,t,t-1)};Ys.prototype.raiseToTop=function(e){let t=Wk(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};Ys.prototype.lowerToBottom=function(e){let t=Wk(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var DXe=new ae;function bfe(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=DXe,A=1/1024;h.west=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-A),h.east=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+A),h.south=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-A),h.north=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+A),ae.contains(h,t)&&i(u)}}Ys.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(bfe(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};Ys.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(bfe(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let A=u[h];A.imageryLayer=f,l(A.position)||(A.position=i),a.push(A)}}return a})};Ys.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};Ys.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};Ys.prototype.isDestroyed=function(){return!1};Ys.prototype.destroy=function(){return this.removeAll(!0),ue(this)};Ys.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var hb=Ys;function Ho(e){e=e??V.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new Fk,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new kl,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new Uk,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?R.clone(e.modelMatrix):R.clone(R.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Um,this._statisticsLast=new Um,this._statisticsPerPass=new Array(Zo.NUMBER_OF_PASSES);for(let o=0;o<Zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Um;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new kk(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=D.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??te.WGS84,this._initialClippingPlanesOriginMatrix=R.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new hb(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??D.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Dn.ENABLED,this.show=e.show??!0,this.colorBlendMode=Su.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new op(e.pointCloudShading),this._pointCloudEyeDomeLighting=new u_,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e,this.tileLoad=new _e,this.tileUnload=new _e,this.tileFailed=new _e,this.tileVisible=new _e,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Vs.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&xm.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new GI,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new s_(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this.splitDirection=e.splitDirection??wr.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&yt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ho.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Pr("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(R.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):R.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,Rfe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ho.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return Ho.fromUrl(n,t)};Ho.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ho.loadJson(n),r=await vXe(n,o),s=new Ho(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Rfe(s);let c=l(o.asset.gltfUpAxis)?Ao.fromName(o.asset.gltfUpAxis):Ao.Y,u=t.modelUpAxis??c,f=t.modelForwardAxis??Ao.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let A=s._root.createBoundingVolume(o.root.boundingVolume,R.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(A);return l(g)&&g.height>wi._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=kt.eastNorthUpToFixedFrame(A)),s._clippingPlanesOriginMatrix=R.clone(s._initialClippingPlanesOriginMatrix),s};Ho.loadJson=function(e){return we.createIfNeeded(e).fetchJson()};Ho.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ho.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new ce("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new ce("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ho.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Tfe(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===rr.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],A=Tfe(this,e,h,c);c.children.push(A),A._depth=c._depth+1,a.push(A)}this._cullWithChildrenBounds&&Lk.checkChildrenWithinParent(c)}return s};function Tfe(e,t,n,i){if(!(l(n.implicitTiling)||Ii(n,"3DTILES_implicit_tiling")))return new ah(e,t,n,i);let r=e.schema,s=new fb(t,n,r),a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=ze(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new ah(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function vXe(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Qi.getSchemaLoader({resource:e});else if(l(n.schema))i=Qi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new lb({schema:i.schema,metadataJson:n});return Qi.unload(i),o}var Sfe=new d,PXe=new Ae,RXe=new R,MXe=new d,NXe=new d,LXe=new d,OXe=new d;function FXe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof $f)n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let _=R.inverseTransformation(c.computedTransform,RXe),y=t.mapProjection.ellipsoid,C=u.boundingVolume,E=R.multiplyByPoint(_,C.center,MXe);if(d.magnitude(E)>y.minimumRadius){let I=Ae.fromCartesian(E,y,PXe);n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=0,s=I.height*2}else{let I=R.multiplyByPoint(_,a.positionWC,NXe);if(n=d.UNIT_Z,i=R.multiplyByPointAsVector(_,a.directionWC,LXe),i=d.normalize(i,i),o=I.z,u instanceof Lu){let b=J.getColumn(C.halfAxes,2,OXe),S=d.magnitude(b);r=E.z-S,s=E.z+S}else if(u instanceof O_){let b=C.radius;r=E.z-b,s=E.z+b}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,A=s,g=D.clamp((o-h)/(A-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function QXe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Dfe(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?ZXe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function Bfe(e,t){return e._priority-t._priority}Ho.prototype.postPassesUpdate=function(e){l(this._root)&&(kXe(this,e),eJe(this,e),this._cache.unloadTiles(this,Pfe),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ho.prototype.prePassesUpdate=function(e){if(!l(this._root))return;jXe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time)),this._timeSinceLoad=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&FXe(this,e),e.newFrame&&this._cache.reset()};function kXe(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==cr.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function UXe(e){let t=e._requestedTiles;t.sort(Bfe);for(let n=0;n<t.length;++n)QXe(e,t[n])}function Dfe(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function GXe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==cr.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var zXe=new Ae,VXe=new Ae,HXe=new d;function WXe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=Ae.clone(r.positionCartographic,zXe),c=Ae.fromCartesian(o.center,s,VXe);l(c)&&(a.height=c.height);let u=Ae.toCartesian(a,s,HXe);d.distance(u,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function jXe(e,t){GXe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Dfe(f,e,u)}}e.totalMemoryUsageInBytes<i?qXe(e):a&&n.length>0&&YXe(e)}function YXe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(Bfe)}function qXe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var jk=new d,KXe={maximumFractionDigits:3};function wfe(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,KXe):Math.round(t).toLocaleString()}function SY(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,jk);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,jk);r=d.multiplyByScalar(r,.75*n,jk),o=d.add(r,i,jk)}return o}function wY(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${wfe(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${wfe(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function XXe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:SY(e.debugPickedTile),a=wY(e.debugPickedTile,e,s);a.pixelOffset=new k(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];wY(a,e,SY(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&wY(a,e,SY(a))}}e._tileDebugLabels.update(t)}function JXe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new Ei({stencil:0,pass:Be.CESIUM_3D_TILE,renderState:Ue.fromCache({stencilMask:Kt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let _=s[m];f&&u.raiseEvent(_),WXe(e,_,t),_.update(e,t,n),c.incrementSelectionCounts(_.content),++c.selected}let A=e._emptyTiles;for(let m=0;m<A.length;++m)A[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,_=m.length;i.length+=_;for(let y=g-1;y>=0;--y)i[h+_+y]=i[h+y];for(let y=0;y<_;++y)i[h+y]=m[y]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new Ap),XXe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var vfe=[];function ZXe(e,t){let n=t,i=vfe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&($Xe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function Pfe(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function $Xe(e,t){e._cache.unloadTile(e,t,Pfe),t.destroy()}Ho.prototype.trimLoadedTiles=function(){this._cache.trim()};function eJe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Um.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function tJe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function nJe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!R.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=R.clone(e.modelMatrix,e._previousModelMatrix)))}function iJe(e,t,n,i){if(t.mode===ie.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,tJe(e),nJe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&UXe(e),JXe(e,t,i),Um.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function Rfe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Dt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Dt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ho.prototype.getTraversal=function(e){let{pass:t}=e;return t===Zo.MOST_DETAILED_PRELOAD||t===Zo.MOST_DETAILED_PICK?Gk:this.isSkippingLevelOfDetail?Hk:zk};Ho.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ho.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===Zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===Zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===Zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=Zo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,u=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let A=this._environmentMapManager;l(this._root)&&(A.position=this.boundingSphere.center),A.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=iJe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};Ho.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ho.prototype.isDestroyed=function(){return!1};Ho.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=vfe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,ue(this)};Ho.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ho.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ho.supportedExtensions[e[t]])throw new ce(`Unsupported 3D Tiles Extension: ${e[t]}`)};var oJe=new In,rJe=new d,sJe=new Ae;Ho.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=te.WGS84);let i=oJe,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,rJe);if(l(r))return n.cartesianToCartographic(r,sJe)?.height};Ho.prototype.updateHeight=function(e,t,n){n=n??te.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var aJe=new _c,cJe=new d;Ho.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=Ai.raySphere(e,u.contentBoundingVolume.boundingSphere,aJe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=le.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=le.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,cJe);if(l(f))return a=d.clone(f,n),a}};Ho.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ho.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var qs=Ho;var lJe=new R;function Q_(e,t){t.collectionChanged.addEventListener(Q_.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}Q_.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,lJe),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)));let A=l(u)?u.tilesetPrimitive:void 0;if(!f){l(A)&&(A.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(A)&&i.removeAndDestroy(A),delete n[s.id],uJe(c,n,s,i)),l(A)&&(A.show=!0,l(h)&&(A.modelMatrix=h),A.maximumScreenSpaceError=j.getValueOrDefault(a.maximumScreenSpaceError,e,A.maximumScreenSpaceError))}return!0};Q_.prototype.isDestroyed=function(){return!1};Q_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Q_.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)BY(this,e[i],t,n);return ue(this)};Q_.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return mt.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(le.clone(i.boundingSphere,t),mt.DONE):mt.FAILED:mt.PENDING};Q_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(BY(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],BY(this,r,a,c),s.remove(r.id)};function BY(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function uJe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await qs.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var Yk=Q_;var fJe=G.WHITE,dJe=G.BLACK,hJe=new k(2,2);function mb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(mb.prototype,{isConstant:{get:function(){return j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:de("evenColor"),oddColor:de("oddColor"),repeat:de("repeat")});mb.prototype.getType=function(e){return"Checkerboard"};var mJe=new K;mb.prototype.getValue=function(e,t){return l(e)||(e=K.now(mJe)),l(t)||(t={}),t.lightColor=j.getValueOrClonedDefault(this._evenColor,e,fJe,t.lightColor),t.darkColor=j.getValueOrClonedDefault(this._oddColor,e,dJe,t.darkColor),t.repeat=j.getValueOrDefault(this._repeat,e,hJe),t};mb.prototype.equals=function(e){return this===e||e instanceof mb&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._repeat,e._repeat)};var SD=mb;var Mfe={id:void 0};function wD(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Rc(e){this._owner=e,this._entities=new Pt,this._addedEntities=new Pt,this._removedEntities=new Pt,this._changedEntities=new Pt,this._suspendCount=0,this._collectionChanged=new _e,this._id=Xn(),this._show=!0,this._firing=!1,this._refire=!1}Rc.prototype.suspendEvents=function(){this._suspendCount++};Rc.prototype.resumeEvents=function(){this._suspendCount--,wD(this)};Object.defineProperties(Rc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Rc.prototype.computeAvailability=function(){let e=je.MAXIMUM_VALUE,t=je.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;K.lessThan(a,e)&&!a.equals(je.MINIMUM_VALUE)&&(e=a),K.greaterThan(c,t)&&!c.equals(je.MAXIMUM_VALUE)&&(t=c)}}return je.MAXIMUM_VALUE.equals(e)&&(e=je.MINIMUM_VALUE),je.MINIMUM_VALUE.equals(t)&&(t=je.MAXIMUM_VALUE),new Rn({start:e,stop:t})};Rc.prototype.add=function(e){e instanceof _r||(e=new _r(e));let t=e.id,n=this._entities;if(n.contains(t))throw new me(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),e};Rc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Rc.prototype.contains=function(e){return this._entities.get(e.id)===e};Rc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),!0):!1};Rc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),wD(this)};Rc.prototype.getById=function(e){return this._entities.get(e)};Rc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(Mfe.id=e,t=new _r(Mfe),this.add(t)),t};Rc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),wD(this)};var Oa=Rc;var qk={id:void 0},Ab=new Array(2);function DY(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function Nfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id,t[JSON.stringify(Ab)]=i.definitionChanged.addEventListener(es.prototype._onDefinitionChanged,e)}function Lfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id;let o=JSON.stringify(Ab);t[o](),t[o]=void 0}function k_(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new Oa(e),A=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],Lfe(e,A,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],Nfe(e,A,g,s);let _=h.getById(s.id);l(_)||(_=f.getById(s.id),l(_)?DY(_):(qk.id=s.id,_=new _r(qk)),h.add(_)),_.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function es(e,t){this._owner=t,this._composite=new Oa(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Xn(),this._eventHash={},k_(this),this._shouldRecomposite=!1}Object.defineProperties(es.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});es.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),k_(this)};es.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),k_(this),!0):!1};es.prototype.removeAllCollections=function(){this._collections.length=0,k_(this)};es.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};es.prototype.contains=function(e){return this._composite.contains(e)};es.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};es.prototype.getCollection=function(e){return this._collections[e]};es.prototype.getCollectionsLength=function(){return this._collections.length};function Kk(e,t){return e.indexOf(t)}function Ofe(e,t,n){let i=e._collections;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,k_(e)}es.prototype.raiseCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t+1)};es.prototype.lowerCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t-1)};es.prototype.raiseCollectionToTop=function(e){let t=Kk(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),k_(this))};es.prototype.lowerCollectionToBottom=function(e){let t=Kk(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),k_(this))};es.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};es.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(k_(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};es.prototype.computeAvailability=function(){return this._composite.computeAvailability()};es.prototype.getById=function(e){return this._composite.getById(e)};es.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,A=e.id;for(s=0;s<f;s++){let m=n[s];Lfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),DY(u)),u.merge(c));l(u)||r.removeById(_),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];Nfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),l(u)?DY(u):(qk.id=_,u=new _r(qk),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};es.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let A=s-1;A>=0;A--){let g=o[A].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var Ffe=es;function vY(){this._removalFunctions=[]}vY.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};vY.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Lr=vY;function MY(e,t){return K.compare(e.start,t.start)}function ts(e){if(this._intervals=[],this._changedEvent=new _e,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(ts.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});ts.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof ts))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!Rn.equals(n[r],i[r],t))return!1;return!0};ts.prototype.get=function(e){return this._intervals[e]};ts.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};ts.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};ts.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};ts.prototype.contains=function(e){return this.indexOf(e)>=0};var PY=new Rn;ts.prototype.indexOf=function(e){let t=this._intervals;PY.start=e,PY.stop=e;let n=qo(t,PY,MY);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&Rn.contains(t[n-1],e)?n-1:~n)};ts.prototype.findInterval=function(e){e=e??V.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};ts.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||K.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=qo(n,e,MY);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=K.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(K.greaterThan(e.stop,n[i-1].stop)?e=new Rn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new Rn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=K.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new Rn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new Rn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=K.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new Rn({start:e.start,stop:K.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:K.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new Rn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};ts.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=qo(t,e,MY);n<0&&(n=~n);let i=!1;for(n>0&&(K.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(K.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new Rn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new Rn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new Rn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&K.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new Rn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new Rn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(K.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new Rn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};ts.prototype.intersect=function(e,t,n){let i=new ts,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if(K.lessThan(c.stop,u.start))++o;else if(K.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=Rn.intersect(c,u,new Rn,n);f.isEmpty||i.addInterval(f,t)}K.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};ts.fromJulianDateArray=function(e,t){l(t)||(t=new ts);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,u,f=0;a&&(++f,u=new Rn({start:je.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let A=n[h],g=n[h+1];u=new Rn({start:A,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),A=g}return c&&(u=new Rn({start:n[i-1],stop:je.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var Mc=new dg,BD=[0,31,28,31,30,31,30,31,31,30,31,30,31];function RY(e,t,n){l(n)||(n=new K),K.toGregorianDate(e,Mc);let i=Mc.millisecond+t.millisecond,o=Mc.second+t.second,r=Mc.minute+t.minute,s=Mc.hour+t.hour,a=Mc.day+t.day,c=Mc.month+t.month,u=Mc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),BD[2]=Yh(u)?29:28;a>BD[c]||c>=13;)a>BD[c]&&(a-=BD[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),BD[2]=Yh(u)?29:28;return Mc.millisecond=i,Mc.second=o,Mc.minute=r,Mc.hour=s,Mc.day=a,Mc.month=c,Mc.year=u,K.fromGregorianDate(Mc,n)}var AJe=new K,pJe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function Qfe(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(pJe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),K.toGregorianDate(K.fromIso8601(e,AJe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var DD=new dg;ts.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=[];if(!Qfe(n[2],DD))r.push(i,o);else{let s=K.clone(i);for(r.push(s);K.compare(s,o)<0;)s=RY(s,DD),K.compare(o,s)<=0&&K.clone(o,s),r.push(s)}return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DateArray=function(e,t){return ts.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return K.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let u=0;u<c;++u)(Qfe(i[u],DD)||u===0)&&(o&&l(a)?s=RY(a,DD):s=RY(n,DD),r.push(s),a=s);return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var hs=ts;function gJe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function CE(){this._eventHelper=new Lr,this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(CE.prototype._intervalsChanged,this)}Object.defineProperties(CE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var _Je=new K;CE.prototype.getValue=function(e,t){l(e)||(e=K.now(_Je));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};CE.prototype.equals=function(e){return this===e||e instanceof CE&&this._intervals.equals(e._intervals,j.equals)};CE.prototype._intervalsChanged=function(){gJe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var ml=CE;function U_(){this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(U_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(U_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});U_.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var yJe=new K;U_.prototype.getValue=function(e,t){l(e)||(e=K.now(yJe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};U_.prototype.equals=function(e){return this===e||e instanceof U_&&this._composite.equals(e._composite,j.equals)};U_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var vD=U_;function G_(e){this._referenceFrame=e??eo.FIXED,this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(G_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(G_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var CJe=new K;G_.prototype.getValue=function(e,t){return l(e)||(e=K.now(CJe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};G_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};G_.prototype.equals=function(e){return this===e||e instanceof G_&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,j.equals)};G_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var nc=G_;var EJe={ROUNDED:0,MITERED:1,BEVELED:2},Ji=Object.freeze(EJe);var Fa=[new d,new d],IJe=new d,xJe=new d,bJe=new d,TJe=new d,SJe=new d,wJe=new d,BJe=new d,DJe=new d,vJe=new d,pb=new d,Xk=new d,PD={},NY=new Ae;function PJe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];NY=t.cartesianToCartographic(o,NY),n[i]=NY.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function LY(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let A=t+u*h;c[u]=A}return c[0]=t,c.push(n),c}var Jk=new d,Zk=new d;function RJe(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk),a=k.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var MJe=new d(-1,0,0),EE=new R,NJe=new R,OY=new J,LJe=J.IDENTITY.clone(),OJe=new d,FJe=new se,kfe=new d;function wp(e,t,n,i,o,r,s,a){let c=OJe,u=FJe;EE=kt.eastNorthUpToFixedFrame(e,o,EE),c=R.multiplyByPointAsVector(EE,MJe,c),c=d.normalize(c,c);let f=RJe(c,t,e,o);OY=J.fromRotationZ(f,OY),kfe.z=r,EE=R.multiplyTransformation(EE,R.fromRotationTranslation(OY,kfe,NJe),EE);let h=LJe;h[0]=s;for(let A=0;A<a;A++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=J.multiplyByVector(h,u,u),u=R.multiplyByPoint(EE,u,u),i.push(u.x,u.y,u.z);return i}var QJe=new d;function FY(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,QJe);i=wp(c,t,n,i,o,r[a/3],s,1)}return i}function kJe(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function Ufe(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var Gfe=new Le,zfe=new d,Vfe=new J;function Hfe(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,pb),d.subtract(n,e,Xk)),h=i===Ji.BEVELED?0:Math.ceil(f/D.toRadians(5)),A;o?A=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,pb),f/(h+1),Gfe),Vfe):A=J.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),Gfe),Vfe);let g,m;if(t=d.clone(t,zfe),h>0){let _=u?2:1;for(let y=0;y<h;y++)t=J.multiplyByVector(A,t,t),g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,_)}else g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,1),n=d.clone(n,zfe),g=d.subtract(n,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,Xk),s=wp(m,g,a,s,r,c,1,1);return s}PD.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];k.equals(r,s)||n.push(s)}return n};PD.angleIsGreaterThanPi=function(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk);return s.x*r.y-s.y*r.x>=0};var UJe=new d,GJe=new d;PD.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=PJe(e,r),a=i._granularity,c=i._cornerType,u=o?kJe(t,n):Ufe(t,n),f=o?Ufe(t,n):void 0,h=n.height/2,A=n.width/2,g=e.length,m=[],_=o?[]:void 0,y=IJe,C=xJe,E=bJe,I=TJe,b=SJe,S=wJe,B=BJe,v=DJe,P=vJe,N=e[0],L=e[1];I=r.geodeticSurfaceNormal(N,I),y=d.subtract(L,N,y),y=d.normalize(y,y),v=d.cross(I,y,v),v=d.normalize(v,v);let p=s[0],x=s[1];o&&(_=wp(N,v,f,_,r,p+h,1,1)),P=d.clone(N,P),N=L,C=d.negate(y,C);let T,w;for(let U=1;U<g-1;U++){let Q=o?2:1;if(L=e[U+1],N.equals(L)){yt("Positions are too close and are considered equivalent with rounding error.");continue}y=d.subtract(L,N,y),y=d.normalize(y,y),I=r.geodeticSurfaceNormal(N,I);let z=d.multiplyByScalar(I,d.dot(y,I),UJe);d.subtract(y,z,z),d.normalize(z,z);let F=d.multiplyByScalar(I,d.dot(C,I),GJe);if(d.subtract(C,F,F),d.normalize(F,F),!D.equalsEpsilon(Math.abs(d.dot(z,F)),1,D.EPSILON7)){E=d.add(y,C,E),E=d.normalize(E,E),E=d.cross(E,I,E),E=d.cross(I,E,E),E=d.normalize(E,E);let W=1/Math.max(.25,d.magnitude(d.cross(E,C,pb))),Z=PD.angleIsGreaterThanPi(y,C,N,r);Z?(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):(E=d.negate(E,E),m=wp(N,E,u,m,r,x+h,W,Q)),P=d.clone(B,P)):(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,-A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,-A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):m=wp(N,E,u,m,r,x+h,W,Q),P=d.clone(B,P)),C=d.negate(y,C)}else m=wp(P,v,u,m,r,p+h,1,1),P=N;p=x,x=s[U+1],N=L}Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(N,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),o&&(_=wp(N,v,f,_,r,x+h,1,1)),g=m.length;let M=o?g+_.length:g,O=new Float64Array(M);return O.set(m),o&&O.set(_,g),O};var Gm=PD;var kY={},gb=new d,Kfe=new d,zJe=new d,Wfe=new d,Al=[new d,new d],Xfe=new d,Jfe=new d,Zfe=new d,VJe=new d,HJe=new d,WJe=new d,jJe=new d,YJe=new d,qJe=new d,KJe=new d,jfe=new Le,Yfe=new J;function $k(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,gb),d.subtract(n,e,Kfe)),s=i===Ji.BEVELED?1:Math.ceil(r/D.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,gb),r/s,jfe),Yfe):u=J.fromQuaternion(Le.fromAxisAngle(e,r/s,jfe),Yfe);let f=0;t=d.clone(t,gb);for(let h=0;h<s;h++)t=J.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function XJe(e){let t=Xfe,n=Jfe,i=Zfe,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=$k(t,n,i,Ji.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=$k(t,n,i,Ji.ROUNDED,!1);return[r,c]}function qfe(e,t,n,i){let o=gb;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function QY(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,gb),a=d.negate(s,Kfe),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,zJe),A=d.add(h,a,Wfe);o[c++]=A.x,o[c++]=A.y,o[c++]=A.z;let g=d.add(h,s,Wfe);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}kY.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var JJe=new d,ZJe=new d;kY.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=Xfe,c=Jfe,u=Zfe,f=VJe,h=HJe,A=WJe,g=jJe,m=YJe,_=qJe,y=KJe,C=[],E=s?[]:void 0,I=s?[]:void 0,b=n[0],S=n[1];c=d.normalize(d.subtract(S,b,c),c),a=i.geodeticSurfaceNormal(b,a),f=d.normalize(d.cross(a,c,f),f),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),g=d.clone(b,g),b=S,u=d.negate(c,u);let B,v=[],P,N=n.length;for(P=1;P<N-1;P++){a=i.geodeticSurfaceNormal(b,a),S=n[P+1],c=d.normalize(d.subtract(S,b,c),c);let p=d.multiplyByScalar(a,d.dot(c,a),JJe);d.subtract(c,p,p),d.normalize(p,p);let x=d.multiplyByScalar(a,d.dot(u,a),ZJe);if(d.subtract(u,x,x),d.normalize(x,x),!D.equalsEpsilon(Math.abs(d.dot(p,x)),1,D.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let w=o/Math.max(.25,d.magnitude(d.cross(h,u,gb))),M=Gm.angleIsGreaterThanPi(c,u,b,i);h=d.multiplyByScalar(h,w,h),M?(m=d.add(b,h,m),y=d.add(m,d.multiplyByScalar(f,o,y),y),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(_,A),f=d.normalize(d.cross(a,c,f),f),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({leftPositions:$k(m,A,_,r,M)}):v.push({leftPositions:qfe(b,d.negate(h,h),_,M)})):(_=d.add(b,h,_),y=d.add(_,d.negate(d.multiplyByScalar(f,o,y),y),y),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(m,A),f=d.normalize(d.cross(a,c,f),f),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(_,d.negate(d.multiplyByScalar(f,o,g),g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({rightPositions:$k(_,A,m,r,M)}):v.push({rightPositions:qfe(b,h,m,M)})),u=d.negate(c,u)}b=S}a=i.geodeticSurfaceNormal(b,a),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(b,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z));let L;return r===Ji.ROUNDED&&(L=XJe(C)),{positions:C,corners:v,lefts:E,normals:I,endPositions:L}};var no=kY;var tde=new d,nde=new d,e3=new d,t3=new d,$Je=new d,ide=new d,z_=new d,_b=new d;function ode(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function ch(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,z_),z_);r.normal&&no.addAttribute(s,t,i,o),r.tangent&&no.addAttribute(a,u,i,o),r.bitangent&&no.addAttribute(c,n,i,o)}function rde(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new En,u,f=0,h=0,A,g=0,m;for(A=0;A<i.length;A+=2)m=i[A].length-3,f+=m,g+=m*2,h+=i[A+1].length-3;for(f+=3,h+=3,A=0;A<o.length;A++){u=o[A];let X=o[A].leftPositions;l(X)?(m=X.length,f+=m,g+=m):(m=o[A].rightPositions.length,h+=m,g+=m)}let _=l(r),y;_&&(y=r[0].length-3,f+=y,h+=y,y/=3,g+=y*6);let C=f+h,E=new Float64Array(C),I=t.normal?new Float32Array(C):void 0,b=t.tangent?new Float32Array(C):void 0,S=t.bitangent?new Float32Array(C):void 0,B={normals:I,tangents:b,bitangents:S},v=0,P=C-1,N,L,p,x,T=tde,w=nde,M,O,U=y/2,Q=Fe.createTypedArray(C/3,g),z=0;if(_){O=e3,M=t3;let X=r[0];for(T=d.fromArray(a,0,T),w=d.fromArray(s,0,w),A=0;A<U;A++)O=d.fromArray(X,(U-1-A)*3,O),M=d.fromArray(X,(U+A)*3,M),no.addAttribute(E,M,v),no.addAttribute(E,O,void 0,P),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}let F=0,H=0,W=i[F++],Z=i[F++];E.set(W,v),E.set(Z,P-Z.length+1),w=d.fromArray(s,H,w);let Y,$;for(m=Z.length-3,A=0;A<m;A+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,A,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-A,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;for(Y=n.geodeticSurfaceNormal(d.fromArray(W,m,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m,_b),_b),T=d.normalize(d.add(Y,$,T),T),H+=3,A=0;A<o.length;A++){let X;u=o[A];let he=u.leftPositions,ge=u.rightPositions,fe,ye,Ie=ide,ve=e3,Te=t3;if(T=d.fromArray(a,H,T),l(he)){for(ch(B,T,w,void 0,P,t),P-=3,fe=x,ye=p,X=0;X<he.length/3;X++)Ie=d.fromArray(he,X*3,Ie),Q[z++]=fe,Q[z++]=ye-X-1,Q[z++]=ye-X,no.addAttribute(E,Ie,void 0,P),ve=d.fromArray(E,(ye-X-1)*3,ve),Te=d.fromArray(E,fe*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,void 0,P,t),P-=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,ye*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,(ye-X)*3,Te),Ie,Te),w=d.normalize(d.add(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3}else{for(ch(B,T,w,v,void 0,t),v+=3,fe=p,ye=x,X=0;X<ge.length/3;X++)Ie=d.fromArray(ge,X*3,Ie),Q[z++]=fe,Q[z++]=ye+X,Q[z++]=ye+X+1,no.addAttribute(E,Ie,v),ve=d.fromArray(E,fe*3,ve),Te=d.fromArray(E,(ye+X)*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,(ye+X)*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,ye*3,Te),Ie,Te),w=d.normalize(d.negate(d.add(Te,ve,w),w),w),ch(B,T,w,void 0,P,t),P-=3}for(W=i[F++],Z=i[F++],W.splice(0,3),Z.splice(Z.length-3,3),E.set(W,v),E.set(Z,P-Z.length+1),m=Z.length-3,H+=3,w=d.fromArray(s,H,w),X=0;X<Z.length;X+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,X,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-X,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;v-=3,P+=3}if(T=d.fromArray(a,a.length-3,T),ch(B,T,w,v,P,t),_){v+=3,P-=3,O=e3,M=t3;let X=r[1];for(A=0;A<U;A++)O=d.fromArray(X,(y-A-1)*3,O),M=d.fromArray(X,A*3,M),no.addAttribute(E,O,void 0,P),no.addAttribute(E,M,v),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}if(c.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:E}),t.st){let X=new Float32Array(C/3*2),he,ge,fe=0;if(_){f/=3,h/=3;let ye=Math.PI/(y+1);ge=1/(f-y+1),he=1/(h-y+1);let Ie,ve=y/2;for(A=ve+1;A<y+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=1;A<h-y+1;A++)X[fe++]=A*he,X[fe++]=0;for(A=y;A>ve;A--)Ie=D.PI_OVER_TWO-A*ye,X[fe++]=1-he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=ve;A>0;A--)Ie=D.PI_OVER_TWO-ye*A,X[fe++]=1-ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=f-y;A>0;A--)X[fe++]=A*ge,X[fe++]=1;for(A=1;A<ve+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie))}else{for(f/=3,h/=3,ge=1/(f-1),he=1/(h-1),A=0;A<h;A++)X[fe++]=A*he,X[fe++]=0;for(A=f;A>0;A--)X[fe++]=(A-1)*ge,X[fe++]=1}c.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:X})}return t.normal&&(c.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.normals})),t.tangent&&(c.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.tangents})),t.bitangent&&(c.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.bitangents})),{attributes:c,indices:Q}}function eZe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,A=t.bitangent?new Float32Array(s*6):void 0,g=tde,m=nde,_=e3,y=t3,C=$Je,E=ide,I=c;for(u=0;u<s;u+=3){let b=I+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),_=d.fromArray(n,(u+3)%s,_),m=d.subtract(m,g,m),_=d.subtract(_,g,_),y=d.normalize(d.cross(m,_,y),y),t.normal&&(no.addAttribute(f,y,b),no.addAttribute(f,y,b+3),no.addAttribute(f,y,I),no.addAttribute(f,y,I+3)),(t.tangent||t.bitangent)&&(E=d.fromArray(i,u,E),t.bitangent&&(no.addAttribute(A,E,b),no.addAttribute(A,E,b+3),no.addAttribute(A,E,I),no.addAttribute(A,E,I+3)),t.tangent&&(C=d.normalize(d.cross(E,y,C),C),no.addAttribute(h,C,b),no.addAttribute(h,C,b+3),no.addAttribute(h,C,I),no.addAttribute(h,C,I+3))),I+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(A.set(o),A.set(o,s),e.bitangent.values=A):e.bitangent=void 0,t.tangent){let b=e.tangent.values;h.set(b),h.set(b,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let A=a*2;for(let g=0;g<2;g++){for(h[A++]=f[0],h[A++]=f[1],u=2;u<a;u+=2){let m=f[u],_=f[u+1];h[A++]=m,h[A++]=_,h[A++]=m,h[A++]=_}h[A++]=f[0],h[A++]=f[1]}e.st.values=h}return e}function UY(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function tZe(e,t){let n=new Pe({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=no.computePositions(e),r=rde(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,A=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=xi.scaleToGeodeticHeight(f,s,i),m=UY(f,0,m),g=xi.scaleToGeodeticHeight(g,a,i),m=UY(g,h*2,m),A.set(f),A.set(g,h),A.set(m,h*2),c.position.values=A,c=eZe(c,t);let _,y=h/3;if(e.shadowVolume){let N=c.normal.values;h=N.length;let L=new Float32Array(h*6);for(_=0;_<h;_++)N[_]=-N[_];L.set(N,h),L=UY(N,h*4,L),c.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:L}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let N=new Uint8Array(y*6);if(e.offsetAttribute===hn.TOP)N=N.fill(1,0,y).fill(1,y*2,y*4);else{let L=e.offsetAttribute===hn.NONE?0:1;N=N.fill(L)}c.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:N})}let C=u.length,E=y+y,I=Fe.createTypedArray(A.length/3,C*2+E*3);I.set(u);let b=C;for(_=0;_<C;_+=3){let N=u[_],L=u[_+1],p=u[_+2];I[b++]=p+y,I[b++]=L+y,I[b++]=N+y}let S,B,v,P;for(_=0;_<E;_+=2)S=_+E,B=S+E,v=S+1,P=B+1,I[b++]=S,I[b++]=B,I[b++]=v,I[b++]=v,I[b++]=B,I[b++]=P;return{attributes:c,indices:I}}var $fe=new d,RD=new d,nd=new Ae;function ede(e,t,n,i,o,r){let s=d.subtract(t,e,$fe);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,RD),c=d.cross(s,a,$fe);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,A=r.longitude;d.add(e,c,RD),n.cartesianToCartographic(RD,nd);let g=nd.latitude,m=nd.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),d.subtract(e,c,RD),n.cartesianToCartographic(RD,nd),g=nd.latitude,m=nd.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=A}var td=new d,MD=new d,nu=new Ae,iu=new Ae;function sde(e,t,n,i,o){e=ode(e,t);let r=No(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;nu.latitude=Number.POSITIVE_INFINITY,nu.longitude=Number.POSITIVE_INFINITY,iu.latitude=Number.NEGATIVE_INFINITY,iu.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===Ji.ROUNDED){let A=r[0];d.subtract(A,r[1],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(A,td,MD),t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u)}for(let A=0;A<s-1;++A)ede(r[A],r[A+1],t,a,nu,iu);let f=r[s-1];d.subtract(f,r[s-2],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(f,td,MD),ede(f,MD,t,a,nu,iu),i===Ji.ROUNDED&&(t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u));let h=l(o)?o:new ae;return h.north=iu.latitude,h.south=nu.latitude,h.east=iu.longitude,h.west=nu.longitude,h}function Dp(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+te.packedLength+Pe.packedLength+7}Dp.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var ade=te.clone(te.UNIT_SPHERE),cde=new Pe,Bp={positions:void 0,ellipsoid:ade,vertexFormat:cde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Dp.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=te.unpack(e,t,ade);t+=te.packedLength;let s=Pe.unpack(e,t,cde);t+=Pe.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._vertexFormat=Pe.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=A,n._offsetAttribute=g===-1?void 0:g,n):(Bp.positions=o,Bp.width=a,Bp.height=c,Bp.extrudedHeight=u,Bp.cornerType=f,Bp.granularity=h,Bp.shadowVolume=A,Bp.offsetAttribute=g===-1?void 0:g,new Dp(Bp))};Dp.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??te.default,r=e.cornerType??Ji.ROUNDED;return sde(n,o,i,r,t)};Dp.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=ode(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=tZe(u,c);else{let g=no.computePositions(u);if(f=rde(g,c,i),f.attributes.position.values=xi.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===hn.NONE?0:1,_=f.attributes.position.values.length,y=new Uint8Array(_/3).fill(m);f.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}}let h=f.attributes,A=le.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ht({attributes:h,indices:f.indices,primitiveType:Me.TRIANGLES,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Dp.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Dp({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Dp.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=sde(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var yb=Dp;var lde=new d,ude=new d,nZe=new d;function iZe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function fde(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new En,a,c=0,u=0,f,h=0,A;for(f=0;f<i.length;f+=2)A=i[f].length-3,c+=A,h+=A/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let M=o[f].leftPositions;l(M)?(A=M.length,c+=A,h+=A/3*2):(A=o[f].rightPositions.length,u+=A,h+=A/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let _=c+u,y=new Float64Array(_),C=0,E=_-1,I,b,S,B,v,P,N=m/2,L=Fe.createTypedArray(_/3,h+4),p=0;if(L[p++]=C/3,L[p++]=(E-2)/3,g){n.push(C/3),P=lde,v=ude;let M=r[0];for(f=0;f<N;f++)P=d.fromArray(M,(N-1-f)*3,P),v=d.fromArray(M,(N+f)*3,v),no.addAttribute(y,v,C),no.addAttribute(y,P,void 0,E),b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3}let x=0,T=i[x++],w=i[x++];for(y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,n.push(C/3,(E-2)/3),f=0;f<A;f+=3)b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;for(f=0;f<o.length;f++){let M;a=o[f];let O=a.leftPositions,U=a.rightPositions,Q,z=nZe;if(l(O)){for(E-=3,Q=S,n.push(B),M=0;M<O.length/3;M++)z=d.fromArray(O,M*3,z),L[p++]=Q-M-1,L[p++]=Q-M,no.addAttribute(y,z,void 0,E),E-=3;n.push(Q-Math.floor(O.length/6)),t===Ji.BEVELED&&n.push((E-2)/3+1),C+=3}else{for(C+=3,Q=B,n.push(S),M=0;M<U.length/3;M++)z=d.fromArray(U,M*3,z),L[p++]=Q+M,L[p++]=Q+M+1,no.addAttribute(y,z,C),C+=3;n.push(Q+Math.floor(U.length/6)),t===Ji.BEVELED&&n.push(C/3-1),E-=3}for(T=i[x++],w=i[x++],T.splice(0,3),w.splice(w.length-3,3),y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,M=0;M<w.length;M+=3)B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;C-=3,E+=3,n.push(C/3,(E-2)/3)}if(g){C+=3,E-=3,P=lde,v=ude;let M=r[1];for(f=0;f<N;f++)P=d.fromArray(M,(m-f-1)*3,P),v=d.fromArray(M,f*3,v),no.addAttribute(y,P,void 0,E),no.addAttribute(y,v,C),B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;n.push(C/3)}else n.push(C/3,(E-2)/3);return L[p++]=C/3,L[p++]=(E-2)/3,s.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),{attributes:s,indices:L,wallIndices:n}}function oZe(e){let t=e.ellipsoid,n=no.computePositions(e),i=fde(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let A=new Float64Array(f*2);if(u=xi.scaleToGeodeticHeight(u,r,t),h=xi.scaleToGeodeticHeight(h,s,t),A.set(u),A.set(h,f),a.position.values=A,f/=3,l(e.offsetAttribute)){let I=new Uint8Array(f*2);if(e.offsetAttribute===hn.TOP)I=I.fill(1,0,f);else{let b=e.offsetAttribute===hn.NONE?0:1;I=I.fill(b)}a.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}let g,m=c.length,_=Fe.createTypedArray(A.length/3,(m+o.length)*2);_.set(c);let y=m;for(g=0;g<m;g+=2){let I=c[g],b=c[g+1];_[y++]=I+f,_[y++]=b+f}let C,E;for(g=0;g<o.length;g++)C=o[g],E=C+f,_[y++]=C,_[y++]=E;return{attributes:a,indices:_}}function ND(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+te.packedLength+6}ND.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var dde=te.clone(te.UNIT_SPHERE),V_={positions:void 0,ellipsoid:dde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};ND.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let A=0;A<i;++A,t+=d.packedLength)o[A]=d.unpack(e,t);let r=te.unpack(e,t,dde);t+=te.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(V_.positions=o,V_.width=s,V_.height=a,V_.extrudedHeight=c,V_.cornerType=u,V_.granularity=f,V_.offsetAttribute=h===-1?void 0:h,new ND(V_))};ND.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=iZe(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=oZe(c);else{let A=no.computePositions(c);if(u=fde(A,c.cornerType),u.attributes.position.values=xi.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}}let f=u.attributes,h=le.fromVertices(f.position.values,void 0,3);return new ht({attributes:f,indices:u.indices,primitiveType:Me.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var n3=ND;var rZe=new ci(0);function pl(e){Ci.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(pl.prototype=Object.create(Ci.prototype),pl.prototype.constructor=pl);Object.defineProperties(pl.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pl.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&Ll.isSupported(this._scene)};pl.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};pl.prototype._computeCenter=me.throwInstantiationError;pl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&yt(yt.geometryZIndex),this._zIndex=o.zIndex??rZe,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,a,r,s)}};pl.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),Ci.prototype.destroy.call(this)};pl.getGeometryHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryHeightReference);return}return _f(t)?0:e};pl.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryExtrudedHeightReference);return}return _f(t)?pl.CLAMP_TO_GROUND:e};pl.CLAMP_TO_GROUND="clamp";pl.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=Ze.NONE),(!l(n)||!l(i))&&(i=Ze.NONE);let o=0;if(t!==Ze.NONE&&o++,i===Ze.RELATIVE_TO_GROUND&&o++,o===2)return hn.ALL;if(o===1)return hn.TOP};var ti=pl;var hde=new G,mde=d.ZERO,Ade=new d,pde=new ae;function sZe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function lh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new sZe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(lh.prototype=Object.create(ti.prototype),lh.prototype.constructor=lh);lh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,hde)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new yb(this._options),attributes:i})};lh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hde),o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new n3(this._options),attributes:o})};lh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};lh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||Ci.prototype._isHidden.call(this,e,t)};lh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.width)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};lh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.cornerType=j.getValueOrUndefined(t.cornerType,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(yb.computeRectangle(s,pde)).minimumTerrainHeight),s.extrudedHeight=o};lh.DynamicGeometryUpdater=Cb;function Cb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Cb.prototype=Object.create(yi.prototype),Cb.prototype.constructor=Cb);Cb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||yi.prototype._isHidden.call(this,e,t,n)};Cb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.positions=j.getValueOrUndefined(t.positions,n),i.width=j.getValueOrUndefined(t.width,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(yb.computeRectangle(i,pde)).minimumTerrainHeight),i.extrudedHeight=s};var i3=lh;function o3(){me.throwInstantiationError()}Object.defineProperties(o3.prototype,{name:{get:me.throwInstantiationError},clock:{get:me.throwInstantiationError},entities:{get:me.throwInstantiationError},isLoading:{get:me.throwInstantiationError},changedEvent:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},loadingEvent:{get:me.throwInstantiationError},show:{get:me.throwInstantiationError},clustering:{get:me.throwInstantiationError}});o3.prototype.update=function(e){me.throwInstantiationError()};o3.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var ms=o3;function zm(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(zm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var gde=new d;zm.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,gde);return zY(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};zm.prototype.isScaledSpacePointVisible=function(e){return zY(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var aZe=new d;zm.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=aZe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),zY(e,o,i)};zm.prototype.computeHorizonCullingPoint=function(e,t,n){return Cde(this._ellipsoid,e,t,n)};var _de=te.clone(te.UNIT_SPHERE);zm.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=yde(this._ellipsoid,n,_de);return Cde(o,e,t,i)};zm.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Ede(this._ellipsoid,e,t,n,i,o)};zm.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=yde(this._ellipsoid,o,_de);return Ede(s,e,t,n,i,r)};var cZe=[];zm.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,cZe),o=le.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var lZe=new d;function yde(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,lZe);e=te.fromCartesian3(i,n)}return e}function Cde(e,t,n,i){l(i)||(i=new d);let o=bde(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=Ide(e,c,o);if(u<0)return;r=Math.max(r,u)}return xde(o,r,i)}var r3=new d;function Ede(e,t,n,i,o,r){l(r)||(r=new d),i=i??3,o=o??d.ZERO;let s=bde(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){r3.x=n[c]+o.x,r3.y=n[c+1]+o.y,r3.z=n[c+2]+o.z;let f=Ide(e,r3,s);if(f<0)return;a=Math.max(a,f)}return xde(s,a,r)}function zY(e,t,n){let i=t,o=n,r=d.subtract(e,i,gde),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var uZe=new d,fZe=new d;function Ide(e,t,n){let i=e.transformPositionToScaledSpace(t,uZe),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,fZe);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function xde(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var GY=new d;function bde(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,GY),d.normalize(GY,GY))}var H_=zm;function Or(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Ut.clone(o)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._color=G.clone(e.color??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??wr.NONE}var Tde=Or.SHOW_INDEX=0,Bde=Or.POSITION_INDEX=1,dZe=Or.COLOR_INDEX=2,hZe=Or.OUTLINE_COLOR_INDEX=3,mZe=Or.OUTLINE_WIDTH_INDEX=4,AZe=Or.PIXEL_SIZE_INDEX=5,pZe=Or.SCALE_BY_DISTANCE_INDEX=6,gZe=Or.TRANSLUCENCY_BY_DISTANCE_INDEX=7,_Ze=Or.DISTANCE_DISPLAY_CONDITION_INDEX=8,yZe=Or.DISABLE_DEPTH_DISTANCE_INDEX=9,CZe=Or.SPLIT_DIRECTION_INDEX=10;Or.NUMBER_OF_PROPERTIES=11;function Ou(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Or.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,Ou(this,Tde))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),Ou(this,Bde))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),Ou(this,pZe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),Ou(this,gZe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,Ou(this,AZe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),Ou(this,dZe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),Ou(this,hZe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,Ou(this,mZe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),Ou(this,_Ze))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,Ou(this,yZe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,Ou(this,Tde))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,Ou(this,CZe))}}});Or.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Or.prototype._getActualPosition=function(){return this._actualPosition};Or.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),Ou(this,Bde)};var Sde=new se;Or._computeActualPosition=function(e,t,n){return t.mode===ie.SCENE3D?e:(R.multiplyByPoint(n,e,Sde),to.computeActualEllipsoidPosition(t,Sde))};var wde=new se;Or._computeScreenSpacePosition=function(e,t,n,i){let o=R.multiplyByVector(e,se.fromElements(t.x,t.y,t.z,1,wde),wde);return to.worldToWindowCoordinates(n,o,i)};Or.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new k);let i=n.modelMatrix,o=Or._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Or.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Xe),n.x=r,n.y=s,n.width=a,n.height=c,n};Or.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&G.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&G.equals(this._outlineColor,e._outlineColor)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Or.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var ha=Or;var IE=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var s3=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var EZe=ha.SHOW_INDEX,WY=ha.POSITION_INDEX,Dde=ha.COLOR_INDEX,IZe=ha.OUTLINE_COLOR_INDEX,xZe=ha.OUTLINE_WIDTH_INDEX,bZe=ha.PIXEL_SIZE_INDEX,vde=ha.SCALE_BY_DISTANCE_INDEX,Pde=ha.TRANSLUCENCY_BY_DISTANCE_INDEX,Rde=ha.DISTANCE_DISPLAY_CONDITION_INDEX,TZe=ha.DISABLE_DEPTH_DISTANCE_INDEX,SZe=ha.SPLIT_DIRECTION_INDEX,jY=ha.NUMBER_OF_PROPERTIES,Nc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function id(e){e=e??V.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(jY),this._maxPixelSize=1,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(id.prototype,{length:{get:function(){return YY(this),this._pointPrimitives.length}}});function Mde(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}id.prototype.add=function(e){let t=new ha(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};id.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};id.prototype.removeAll=function(){Mde(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function YY(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}id.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};id.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};id.prototype.get=function(e){return YY(this),this._pointPrimitives[e]};id.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<jY;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function wZe(e,t,n){return new S_(e,[{index:Nc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dde]},{index:Nc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Pde]},{index:Nc.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vde]},{index:Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Rde]}],t)}var VY=new ei;function Nde(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(r,VY);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[Nc.positionHighAndSize],u=VY.high;c(o,u.x,u.y,u.z,s);let f=n[Nc.positionLowAndOutline],h=VY.low;f(o,h.x,h.y,h.z,a)}var a3=65536,LD=256;function Lde(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=G.floatToByte(r.red),u=G.floatToByte(r.green),f=G.floatToByte(r.blue),h=c*a3+u*LD+f;c=G.floatToByte(a.red),u=G.floatToByte(a.green),f=G.floatToByte(a.blue);let A=c*a3+u*LD+f;c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue);let g=c*a3+u*LD+f,m=G.floatToByte(r.alpha)*a3+G.floatToByte(a.alpha)*LD+G.floatToByte(s.alpha),_=n[Nc.compressedAttribute0];_(o,h,A,g,m)}function Ode(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=D.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*LD+s;c=D.clamp(c,0,1),c=c===1?255:c*255|0;let A=c,g=n[Nc.compressedAttribute1];g(o,h,A,r,a)}function Fde(e,t,n,i){let o=i._index,r=n[Nc.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function Qde(e,t,n,i){let o=i._index,r=n[Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function BZe(e,t,n,i){Nde(e,t,n,i),Lde(e,t,n,i),Ode(e,t,n,i),Fde(e,t,n,i),Qde(e,t,n,i)}function HY(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ha._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DZe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,i,i.length,t,r,!0)):n===ie.MORPHING?HY(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function vZe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var PZe=[];id.prototype.update=function(e){if(YY(this),!this.show)return;this._maxTotalPointSize=qt.maximumAliasedPointSize,DZe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let S=0;S<jY;++S)r[S]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=wZe(c,n,this._buffersUsage),a=this._vaf.writers;for(let S=0;S<n;++S){let B=this._pointPrimitives[S];B._dirty=!1,BZe(this,c,a,B)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let S=PZe;S.length=0,(r[WY]||r[xZe]||r[bZe])&&S.push(Nde),(r[Dde]||r[IZe])&&S.push(Lde),(r[EZe]||r[Pde])&&S.push(Ode),r[vde]&&S.push(Fde),(r[Rde]||r[TZe]||r[SZe])&&S.push(Qde);let B=S.length;if(a=this._vaf.writers,o/n>.1){for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P)}this._vaf.commit()}else{for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P);this._vaf.subCommit(P._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,A=R.IDENTITY;e.mode===ie.SCENE3D?(A=this.modelMatrix,h=le.clone(this._baseVolumeWC,this._boundingVolume)):h=le.clone(this._baseVolume2D,this._boundingVolume),vZe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!1,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,_;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new We({sources:[s3]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(_=new We({defines:["OPAQUE"],sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc}),_=new We({defines:["TRANSLUCENT"],sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.OPAQUE&&(_=new We({sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.TRANSLUCENT&&(_=new We({sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let y,C,E,I,b=e.commandList;if(u.render||f){let S=this._colorCommands,B=this._blendOption===Vo.OPAQUE,v=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT;y=this._vaf.va,C=y.length,S.length=C;let P=v?C*2:C;for(I=0;I<P;++I){let N=B||v&&I%2===0;E=S[I],l(E)||(E=S[I]=new nt),E.primitiveType=Me.POINTS,E.pass=N||!v?Be.OPAQUE:Be.TRANSLUCENT,E.owner=this;let L=v?Math.floor(I/2):I;E.boundingVolume=h,E.modelMatrix=A,E.shaderProgram=N?this._sp:this._spTranslucent,E.uniformMap=this._uniforms,E.vertexArray=y[L].va,E.renderState=N?this._rsOpaque:this._rsTranslucent,E.debugShowBoundingVolume=this.debugShowBoundingVolume,E.pickId="v_pickColor",b.push(E)}}};id.prototype.isDestroyed=function(){return!1};id.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Mde(this._pointPrimitives),ue(this)};var OD=id;var kde=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],qY=1,FD=8,kD=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==qY)throw new Error(`Got v${o} data when expected v${qY}.`);let r=kde[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=kde.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(FD+s+a+c),this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(qY<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return XY(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,A=c.pop()||0;if(h-A<=a){for(let y=A;y<=h;y++){let C=s[2*y],E=s[2*y+1];C>=t&&C<=i&&E>=n&&E<=o&&u.push(r[y])}continue}let g=A+h>>1,m=s[2*g],_=s[2*g+1];m>=t&&m<=i&&_>=n&&_<=o&&u.push(r[g]),(f===0?t<=m:n<=_)&&(c.push(A),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=_)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,A=a.pop()||0;if(h-A<=s){for(let y=A;y<=h;y++)Ude(r[2*y],r[2*y+1],t,n)<=u&&c.push(o[y]);continue}let g=A+h>>1,m=r[2*g],_=r[2*g+1];Ude(m,_,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=_)&&(a.push(A),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=_)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function XY(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;Gde(e,t,s,i,o,r),XY(e,t,n,i,s-1,1-r),XY(e,t,n,s+1,o,1-r)}function Gde(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),A=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*A*(u-A)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*A/u+g)),_=Math.min(o,Math.floor(n+(u-f)*A/u+g));Gde(e,t,n,m,_,r)}let s=t[2*n+r],a=i,c=o;for(QD(e,t,i,n),t[2*o+r]>s&&QD(e,t,i,o);a<c;){for(QD(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?QD(e,t,i,c):(c++,QD(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function QD(e,t,n,i){KY(e,n,i),KY(t,2*n,2*i),KY(t,2*n+1,2*i+1)}function KY(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ude(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function uh(e){e=e??V.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new _e,this.show=e.show??!0}function zde(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var RZe=new Xe;function Vde(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=uE.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=xo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=ha.getScreenSpaceBoundingBox(e,t,o)),zde(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&Wde(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=uE.getScreenSpaceBoundingBox(s,t,RZe);zde(a,n),o=Xe.union(o,a,o)}return o}function MZe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&Wde(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function Hde(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function Wde(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function JY(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ie.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var NZe=new Xe,LZe=new Xe,OZe=new Xe;function FZe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new Ap({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new jf({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new OD;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,A=[],g=e._previousHeight,m=n.camera.positionCartographic.height,_=n.ellipsoid,y=n.camera.positionWC,C=new H_(_,y),E=[];e._clusterLabels&&JY(i,E,n,C,e),e._clusterBillboards&&JY(o,E,n,C,e),e._clusterPoints&&JY(r,E,n,C,e);let I,b,S,B,v,P,N,L,p,x,T,w;if(E.length>0){let M=new kD(E.length,64,Uint32Array);for(let O=0;O<E.length;++O)M.add(E[O].coord.x,E[O].coord.y);if(M.finish(),m<g)for(S=h.length,I=0;I<S;++I){let O=h[I];if(!C.isPointVisible(O.position))continue;let U=xo._computeScreenSpacePosition(R.IDENTITY,O.position,d.ZERO,k.ZERO,n);if(!l(U))continue;let Q=1-m/g,z=O.width=O.width*Q,F=O.height=O.height*Q;z=Math.max(z,O.minimumWidth),F=Math.max(F,O.minimumHeight);let H=U.x-z*.5,W=U.y-F*.5,Z=U.x+z,Y=U.y+F;for(v=M.range(H,W,Z,Y),P=v.length,x=0,p=[],b=0;b<P;++b)N=v[b],L=E[N],L.clustered||(++x,T=L.collection,w=L.index,p.push(T.get(w).id));if(x>=f)for(Hde(O.position,x,p,e),A.push(O),b=0;b<P;++b)E[v[b]].clustered=!0}for(S=E.length,I=0;I<S;++I){let O=E[I];if(O.clustered)continue;O.clustered=!0,T=O.collection,w=O.index;let U=T.get(w);B=Vde(U,O.coord,u,e,NZe);let Q=Xe.clone(B,LZe);v=M.range(B.x,B.y,B.x+B.width,B.y+B.height),P=v.length;let z=d.clone(U.position);for(x=1,p=[U.id],b=0;b<P;++b)if(N=v[b],L=E[N],!L.clustered){let F=L.collection.get(L.index),H=Vde(F,L.coord,u,e,OZe);d.add(F.position,z,z),Xe.union(Q,H,Q),++x,p.push(F.id)}if(x>=f){let F=d.multiplyByScalar(z,1/x,z);for(Hde(F,x,p,e),A.push({position:F,width:Q.width,height:Q.height,minimumWidth:B.width,minimumHeight:B.height}),b=0;b<P;++b)E[v[b]].clustered=!0}else MZe(U,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=A,e._previousHeight=m}}uh.prototype._initialize=function(e){this._scene=e;let t=FZe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(uh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function $Y(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function eq(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}uh.prototype.getLabel=$Y("_labelCollection",Ap,"_unusedLabelIndices","labelIndex");uh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,eq(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};uh.prototype.getBillboard=$Y("_billboardCollection",jf,"_unusedBillboardIndices","billboardIndex");uh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,eq(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};uh.prototype.getPoint=$Y("_pointCollection",OD,"_unusedPointIndices","pointIndex");uh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,eq(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function ZY(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function QZe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,ZY(e._labelCollection),ZY(e._billboardCollection),ZY(e._pointCollection))}uh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,QZe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};uh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var od=uh;function tq(e){this._name=e,this._clock=void 0,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._entityCluster=new od}Object.defineProperties(tq.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){ms.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});tq.prototype.update=function(e){return!0};var c3=tq;var jde={};jde.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,A=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let _=f/i*D.TWO_PI,y=Math.cos(_),C=Math.sin(_),E=y*n,I=C*n,b=y*t,S=C*t;u[A+g]=E,u[A+g+1]=I,u[A+g+2]=s,u[A+m]=b,u[A+m+1]=S,u[A+m+2]=r,A+=3,o&&(u[h++]=E,u[h++]=I,u[h++]=s,u[h++]=b,u[h++]=S,u[h++]=r)}return u};var Eb=jde;var nq=new k,kZe=new d,UZe=new d,GZe=new d,zZe=new d;function vp(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??Pe.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Pe.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}vp.packedLength=Pe.packedLength+5;vp.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var Yde=new Pe,Ib={vertexFormat:Yde,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};vp.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,Yde);t+=Pe.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(Ib.length=o,Ib.topRadius=r,Ib.bottomRadius=s,Ib.slices=a,Ib.offsetAttribute=c===-1?void 0:c,new vp(Ib))};vp.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=Eb.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,A=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,_=o.normal||o.tangent||o.bitangent;if(_){let v=o.tangent||o.bitangent,P=0,N=0,L=0,p=Math.atan2(i-n,t),x=kZe;x.z=Math.sin(p);let T=Math.cos(p),w=GZe,M=UZe;for(m=0;m<r;m++){let O=m/r*D.TWO_PI,U=T*Math.cos(O),Q=T*Math.sin(O);_&&(x.x=U,x.y=Q,v&&(w=d.normalize(d.cross(d.UNIT_Z,x,w),w)),o.normal&&(h[P++]=x.x,h[P++]=x.y,h[P++]=x.z,h[P++]=x.x,h[P++]=x.y,h[P++]=x.z),o.tangent&&(A[N++]=w.x,A[N++]=w.y,A[N++]=w.z,A[N++]=w.x,A[N++]=w.y,A[N++]=w.z),o.bitangent&&(M=d.normalize(d.cross(x,w,M),M),g[L++]=M.x,g[L++]=M.y,g[L++]=M.z,g[L++]=M.x,g[L++]=M.y,g[L++]=M.z))}for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=-1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=-1,g[L++]=0);for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=1,g[L++]=0)}let y=12*r-12,C=Fe.createTypedArray(c,y),E=0,I=0;for(m=0;m<r-1;m++)C[E++]=I,C[E++]=I+2,C[E++]=I+3,C[E++]=I,C[E++]=I+3,C[E++]=I+1,I+=2;for(C[E++]=s-2,C[E++]=0,C[E++]=1,C[E++]=s-2,C[E++]=1,C[E++]=s-1,m=1;m<r-1;m++)C[E++]=s+m+1,C[E++]=s+m,C[E++]=s;for(m=1;m<r-1;m++)C[E++]=a,C[E++]=a+m,C[E++]=a+m+1;let b=0;if(o.st){let v=Math.max(n,i);for(m=0;m<c;m++){let P=d.fromArray(u,m*3,zZe);f[b++]=(P.x+v)/(2*v),f[b++]=(P.y+v)/(2*v)}}let S=new En;o.position&&(S.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(S.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(S.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),o.bitangent&&(S.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(S.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),nq.x=t*.5,nq.y=Math.max(i,n);let B=new le(d.ZERO,k.magnitude(nq));if(l(e._offsetAttribute)){t=u.length;let v=e._offsetAttribute===hn.NONE?0:1,P=new Uint8Array(t/3).fill(v);S.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:P})}return new ht({attributes:S,indices:C,primitiveType:Me.TRIANGLES,boundingSphere:B,offsetAttribute:e._offsetAttribute})};var iq;vp.getUnitCylinder=function(){return l(iq)||(iq=vp.createGeometry(new vp({topRadius:1,bottomRadius:1,length:1,vertexFormat:Pe.POSITION_ONLY}))),iq};var l3=vp;var oq=new k;function xb(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}xb.packedLength=6;xb.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var xE={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};xb.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(xE.length=i,xE.topRadius=o,xE.bottomRadius=r,xE.slices=s,xE.numberOfVerticalLines=a,xE.offsetAttribute=c===-1?void 0:c,new xb(xE))};xb.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=Eb.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let _=Math.min(r,o);u=Math.round(o/_),c+=_}let f=Fe.createTypedArray(s,c*2),h=0,A;for(A=0;A<o-1;A++)f[h++]=A,f[h++]=A+1,f[h++]=A+o,f[h++]=A+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(A=0;A<o;A+=u)f[h++]=A,f[h++]=A+o;let g=new En;g.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:a}),oq.x=t*.5,oq.y=Math.max(i,n);let m=new le(d.ZERO,k.magnitude(oq));if(l(e._offsetAttribute)){t=a.length;let _=e._offsetAttribute===hn.NONE?0:1,y=new Uint8Array(t/3).fill(_);g.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}return new ht({attributes:g,indices:f,primitiveType:Me.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var u3=xb;var qde=d.ZERO,Kde=new d,VZe=new d,Xde=new G;function HZe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function Fu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new HZe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(Fu.prototype=Object.create(Ci.prototype),Fu.prototype.constructor=Fu);Object.defineProperties(Fu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Fu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Xde)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new l3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};Fu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Xde),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new u3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};Fu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Fu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||Ci.prototype._isHidden.call(this,e,t)};Fu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!j.isConstant(t.slices)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)};Fu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(je.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(je.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(je.MINIMUM_VALUE),i.slices=j.getValueOrUndefined(t.slices,je.MINIMUM_VALUE),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Fu.prototype._onEntityPropertyChanged=Rg;Fu.DynamicGeometryUpdater=bb;function bb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(bb.prototype=Object.create(yi.prototype),bb.prototype.constructor=bb);bb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,VZe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||yi.prototype._isHidden.call(this,e,t,n)};bb.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.length=j.getValueOrUndefined(t.length,n),o.topRadius=j.getValueOrUndefined(t.topRadius,n),o.bottomRadius=j.getValueOrUndefined(t.bottomRadius,n),o.slices=j.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var f3=Fu;var WZe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},As=Object.freeze(WZe);var jZe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},vo=Object.freeze(jZe);var YZe={NONE:0,HOLD:1,EXTRAPOLATE:2},rd=Object.freeze(YZe);var Jde=Es(_u(),1);function qZe(e){let t=new Jde.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var W_=qZe;var KZe=D.factorial;function rq(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=rq(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var d3={type:"Hermite"};d3.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};d3.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,A=new Array(i);for(r=0;r<i;r++){o[r]=0;let y=new Array(h);for(A[r]=y,s=0;s<h;s++)y[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let _=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,A[c][0].push(n[f]);for(r=1;r<g;r++){let y=!1;for(s=0;s<g-r;s++){let C=t[m[s]],E=t[m[s+r]],I;E-C<=0?(f=m[s]*i+i*r+c,I=n[f],A[c][r].push(I/KZe(r))):(I=A[c][r-1][s+1]-A[c][r-1][s],A[c][r].push(I/(E-C))),y=y||I!==0}y||(_=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=_;r++){let y=rq(e,m,t,a,r,[]);for(c=0;c<i;c++){let C=A[c][r][0];o[c+a*i]+=C*y}}return o};var XZe=[];d3.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let C=0;C<a;C++)s[C]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let C=0;C<o+1;C++)u[f*(o+1)+C]=f;let h=u.length,A=XZe,g=JZe(A,u,t,n,i,o),m=[],_=h*(h+1)/2,y=Math.min(g,r);for(let C=0;C<=y;C++)for(f=C;f<=g;f++){m.length=0;let E=rq(e,u,t,C,f,m),I=Math.floor(f*(1-f)/2)+h*f;for(let b=0;b<i;b++){let S=Math.floor(b*_),B=A[S+I];s[b+C*i]+=B*E}}return s};function JZe(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let A=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[A+s]=i[a];for(let g=1;g<u;g++){let m=0,_=Math.floor(g*(1-g)/2)+u*g,y=!1;for(s=0;s<u-g;s++){let C=n[t[s]],E=n[t[s+g]],I,b;if(E-C<=0)a=t[s]*o*(r+1)+o*g+h,I=i[a],b=I/D.factorial(g),e[A+_+m]=b,m++;else{let S=Math.floor((g-1)*(2-g)/2)+u*(g-1);I=e[A+S+s+1]-e[A+S+s],b=I/(E-C),e[A+_+m]=b,m++}y=y||I!==0}y&&(c=Math.max(c,g))}}return c}var h3=d3;var sq={type:"Lagrange"};sq.getRequiredDataPoints=function(e){return Math.max(e+1,2)};sq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var m3=sq;var aq={type:"Linear"};aq.getRequiredDataPoints=function(e){return 2};aq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var Tb=aq;function Lc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Lc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Lc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Lc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Lc(e.clock,e.cone,e.magnitude)};Lc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Lc(e.clock,e.cone,1)};Lc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Lc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Lc.prototype.equals=function(e){return Lc.equals(this,e)};Lc.prototype.clone=function(e){return Lc.clone(this,e)};Lc.prototype.equalsEpsilon=function(e,t){return Lc.equalsEpsilon(this,e,t)};Lc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var A3=Lc;var XD=Es(_u(),1);var cq;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?cq=function(){return performance.now()}:cq=function(){return Date.now()};var Oi=cq;function lq(e){e=e??V.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=K.clone(t):l(n)?t=K.clone(n):l(i)?t=K.addDays(i,-1,new K):t=K.now(),l(n)?n=K.clone(n):n=K.clone(t),l(i)?i=K.clone(i):i=K.addDays(n,1,new K),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??As.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new _e,this.onStop=new _e,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Oi(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??vo.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(lq.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){K.equals(this._currentTime,e)||(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===vo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=K.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});lq.prototype.tick=function(){let e=Oi(),t=K.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===vo.SYSTEM_CLOCK)t=K.now(t);else{let i=this._multiplier;if(n===vo.TICK_DEPENDENT)t=K.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=K.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===As.CLAMPED)K.lessThan(t,r)?t=K.clone(r,t):K.greaterThan(t,s)&&(t=K.clone(s,t),this.onStop.raiseEvent(this));else if(o===As.LOOP_STOP)for(K.lessThan(t,r)&&(t=K.clone(r,t));K.greaterThan(t,s);)t=K.addSeconds(r,K.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Vm=lq;function bE(){this._definitionChanged=new _e,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(bE.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:Fl("startTime"),stopTime:Fl("stopTime"),currentTime:Fl("currentTime"),clockRange:Fl("clockRange"),clockStep:Fl("clockStep"),multiplier:Fl("multiplier")});bE.prototype.clone=function(e){return l(e)||(e=new bE),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};bE.prototype.equals=function(e){return this===e||l(e)&&K.equals(this.startTime,e.startTime)&&K.equals(this.stopTime,e.stopTime)&&K.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};bE.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};bE.prototype.getValue=function(e){return l(e)||(e=new Vm),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Hm=bE;var ZZe=G.WHITE,$Ze=.1,e$e=new k(8,8),t$e=new k(0,0),n$e=new k(1,1);function Sb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(Sb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._cellAlpha)&&j.isConstant(this._lineCount)&&j.isConstant(this._lineThickness)&&j.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),cellAlpha:de("cellAlpha"),lineCount:de("lineCount"),lineThickness:de("lineThickness"),lineOffset:de("lineOffset")});Sb.prototype.getType=function(e){return"Grid"};var i$e=new K;Sb.prototype.getValue=function(e,t){return l(e)||(e=K.now(i$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,ZZe,t.color),t.cellAlpha=j.getValueOrDefault(this._cellAlpha,e,$Ze),t.lineCount=j.getValueOrClonedDefault(this._lineCount,e,e$e,t.lineCount),t.lineThickness=j.getValueOrClonedDefault(this._lineThickness,e,n$e,t.lineThickness),t.lineOffset=j.getValueOrClonedDefault(this._lineOffset,e,t$e,t.lineOffset),t};Sb.prototype.equals=function(e){return this===e||e instanceof Sb&&j.equals(this._color,e._color)&&j.equals(this._cellAlpha,e._cellAlpha)&&j.equals(this._lineCount,e._lineCount)&&j.equals(this._lineThickness,e._lineThickness)&&j.equals(this._lineOffset,e._lineOffset)};var UD=Sb;function wb(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(wb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});wb.prototype.getType=function(e){return"PolylineArrow"};var o$e=new K;wb.prototype.getValue=function(e,t){return l(e)||(e=K.now(o$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};wb.prototype.equals=function(e){return this===e||e instanceof wb&&j.equals(this._color,e._color)};var GD=wb;var r$e=G.WHITE,s$e=G.TRANSPARENT,a$e=16,c$e=255;function Bb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(Bb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._gapColor)&&j.isConstant(this._dashLength)&&j.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),gapColor:de("gapColor"),dashLength:de("dashLength"),dashPattern:de("dashPattern")});Bb.prototype.getType=function(e){return"PolylineDash"};var l$e=new K;Bb.prototype.getValue=function(e,t){return l(e)||(e=K.now(l$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,r$e,t.color),t.gapColor=j.getValueOrClonedDefault(this._gapColor,e,s$e,t.gapColor),t.dashLength=j.getValueOrDefault(this._dashLength,e,a$e,t.dashLength),t.dashPattern=j.getValueOrDefault(this._dashPattern,e,c$e,t.dashPattern),t};Bb.prototype.equals=function(e){return this===e||e instanceof Bb&&j.equals(this._color,e._color)&&j.equals(this._gapColor,e._gapColor)&&j.equals(this._dashLength,e._dashLength)&&j.equals(this._dashPattern,e._dashPattern)};var zD=Bb;var u$e=G.WHITE,f$e=.25,d$e=1;function Db(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(Db.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),glowPower:de("glowPower"),taperPower:de("taperPower")});Db.prototype.getType=function(e){return"PolylineGlow"};var h$e=new K;Db.prototype.getValue=function(e,t){return l(e)||(e=K.now(h$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,u$e,t.color),t.glowPower=j.getValueOrDefault(this._glowPower,e,f$e,t.glowPower),t.taperPower=j.getValueOrDefault(this._taperPower,e,d$e,t.taperPower),t};Db.prototype.equals=function(e){return this===e||e instanceof Db&&j.equals(this._color,e._color)&&j.equals(this._glowPower,e._glowPower)&&j.equals(this._taperPower,e._taperPower)};var VD=Db;var m$e=G.WHITE,A$e=G.BLACK,p$e=1;function vb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(vb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._outlineColor)&&j.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth")});vb.prototype.getType=function(e){return"PolylineOutline"};var g$e=new K;vb.prototype.getValue=function(e,t){return l(e)||(e=K.now(g$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,m$e,t.color),t.outlineColor=j.getValueOrClonedDefault(this._outlineColor,e,A$e,t.outlineColor),t.outlineWidth=j.getValueOrDefault(this._outlineWidth,e,p$e),t};vb.prototype.equals=function(e){return this===e||e instanceof vb&&j.equals(this._color,e._color)&&j.equals(this._outlineColor,e._outlineColor)&&j.equals(this._outlineWidth,e._outlineWidth)};var TE=vb;function Pp(e,t){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this._referenceFrame=t??eo.FIXED,this.setValue(e)}Object.defineProperties(Pp.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _$e=new K;Pp.prototype.getValue=function(e,t){return l(e)||(e=K.now(_$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Pp.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};Pp.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Pp.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Pp.prototype.equals=function(e){return this===e||e instanceof Pp&&this._referenceFrame===e._referenceFrame&&j.arrayEquals(this._value,e._value)};Pp.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var j_=Pp;function Y_(e){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this.setValue(e)}Object.defineProperties(Y_.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var y$e=new K;Y_.prototype.getValue=function(e,t){l(e)||(e=K.now(y$e));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};Y_.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Y_.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Y_.prototype.equals=function(e){return this===e||e instanceof Y_&&j.arrayEquals(this._value,e._value)};Y_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var HD=Y_;function SE(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(Qu.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function Qu(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new _e,e.collectionChanged.addEventListener(Qu.prototype._onCollectionChanged,this)}Object.defineProperties(Qu.prototype,{isConstant:{get:function(){return j.isConstant(SE(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=SE(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return SE(this)}}});Qu.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new Qu(e,n,i)};var C$e=new K;Qu.prototype.getValue=function(e,t){let n=SE(this);return l(e)||(e=K.now(C$e)),l(n)?n.getValue(e,t):void 0};Qu.prototype.getValueInReferenceFrame=function(e,t,n){let i=SE(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};Qu.prototype.getType=function(e){let t=SE(this);return l(t)?t.getType(e):void 0};Qu.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};Qu.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};Qu.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(Qu.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=SE(this),l(i)&&this._definitionChanged.raiseEvent(this))};var q_=Qu;var E$e={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-D.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+D.TWO_PI:o}},fh=E$e;var Zde={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function $de(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function ehe(e,t){return e instanceof K?e:typeof e=="string"?K.fromIso8601(e):K.addSeconds(t,e,new K)}var uq=[],fq=[];function p3(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=ehe(i[r],e),c=qo(t,f,K.compare);let A=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=ehe(i[r],e),!(l(a)&&K.compare(a,f)>=0||l(h)&&K.compare(f,h)>=0));){for(uq[A++]=f,r=r+1,s=0;s<o;s++)fq[g++]=i[r],r=r+1;a=f}A>0&&(fq.length=g,$de(n,u,fq),uq.length=A,$de(t,c,uq))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function sd(e,t){let n=e;n===Number&&(n=Zde);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=Zde);let f=u.packedLength;i+=f,o+=u.packedInterpolationLength??f,s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=Tb,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new _e,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=rd.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=rd.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(sd.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var I$e=new K;sd.prototype.getValue=function(e,t){l(e)||(e=K.now(I$e));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=qo(n,e,K.compare);if(a<0){if(a=~a,a===0){let b=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(b,e)>o)return;if(this._backwardExtrapolationType===rd.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let b=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(e,b)>o)return;if(this._forwardExtrapolationType===rd.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,A=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let b=Math.min(f.getRequiredDataPoints(this._interpolationDegree,A),i);b!==this._numberOfPoints&&(this._numberOfPoints=b,c.length=b,u.length=b*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,_=i-1;if(_-m+1>=g+1){let b=a-(g/2|0)-1;b<m&&(b=m);let S=b+g;S>_&&(S=_,b=S-g,b<m&&(b=m)),m=b,_=S}let C=_-m+1;for(let b=0;b<C;++b)c[b]=K.secondsDifference(n[m+b],n[_]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,_,u);else{let b=0,S=this._packedLength,B=m*S,v=(_+1)*S;for(;B<v;)u[b]=s[B],B++,b++}let E=K.secondsDifference(e,n[_]),I;if(A===0||!l(f.interpolate))I=f.interpolateOrderZero(E,c,u,h,this._interpolationResult);else{let b=Math.floor(h/(A+1));I=f.interpolate(E,c,u,b,A,A,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(I,s,m,_,t):r.unpack(I,0,t)}return r.unpack(s,a*this._packedLength,t)};sd.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};sd.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}p3(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}p3(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};sd.prototype.addSamplesPackedArray=function(e,t){p3(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.removeSample=function(e){let t=qo(this._times,e,K.compare);return t<0?!1:(the(this,t,1),!0)};function the(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}sd.prototype.removeSamples=function(e){let t=this._times,n=qo(t,e.start,K.compare);n<0?n=~n:e.isStartIncluded||++n;let i=qo(t,e.stop,K.compare);i<0?i=~i:e.isStopIncluded&&++i,the(this,n,i-n)};sd.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!K.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};sd._mergeNewSamples=p3;var ad=sd;function cd(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new ad(d,n),this._definitionChanged=new _e,this._referenceFrame=e??eo.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(cd.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var x$e=new K;cd.prototype.getValue=function(e,t){return l(e)||(e=K.now(x$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};cd.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return am.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};cd.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};cd.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};cd.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};cd.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};cd.prototype.removeSample=function(e){return this._property.removeSample(e)};cd.prototype.removeSamples=function(e){this._property.removeSamples(e)};cd.prototype.equals=function(e){return this===e||e instanceof cd&&j.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var ic=cd;var b$e={HORIZONTAL:0,VERTICAL:1},Wm=Object.freeze(b$e);var T$e=Wm.HORIZONTAL,S$e=G.WHITE,w$e=G.BLACK,B$e=0,D$e=1;function Pb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(Pb.prototype,{isConstant:{get:function(){return j.isConstant(this._orientation)&&j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._offset)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:de("orientation"),evenColor:de("evenColor"),oddColor:de("oddColor"),offset:de("offset"),repeat:de("repeat")});Pb.prototype.getType=function(e){return"Stripe"};var v$e=new K;Pb.prototype.getValue=function(e,t){return l(e)||(e=K.now(v$e)),l(t)||(t={}),t.horizontal=j.getValueOrDefault(this._orientation,e,T$e)===Wm.HORIZONTAL,t.evenColor=j.getValueOrClonedDefault(this._evenColor,e,S$e,t.evenColor),t.oddColor=j.getValueOrClonedDefault(this._oddColor,e,w$e,t.oddColor),t.offset=j.getValueOrDefault(this._offset,e,B$e),t.repeat=j.getValueOrDefault(this._repeat,e,D$e),t};Pb.prototype.equals=function(e){return this===e||e instanceof Pb&&j.equals(this._orientation,e._orientation)&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._offset,e._offset)&&j.equals(this._repeat,e._repeat)};var WD=Pb;function K_(e){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(K_.prototype._intervalsChanged,this),this._referenceFrame=e??eo.FIXED}Object.defineProperties(K_.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var P$e=new K;K_.prototype.getValue=function(e,t){return l(e)||(e=K.now(P$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};K_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};K_.prototype.equals=function(e){return this===e||e instanceof K_&&this._intervals.equals(e._intervals,j.equals)&&this._referenceFrame===e._referenceFrame};K_.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var X_=K_;function wE(){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(wE.prototype._intervalsChanged,this)}Object.defineProperties(wE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var R$e=new K;wE.prototype.getValue=function(e,t){l(e)||(e=K.now(R$e));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};wE.prototype.equals=function(e){return this===e||e instanceof wE&&this._intervals.equals(e._intervals,j.equals)};wE.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var J_=wE;function Rb(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new _e,this._normalize=t??!0,this.position=e}Object.defineProperties(Rb.prototype,{isConstant:{get:function(){return j.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var M$e=new d,nhe=new d,ihe=new K,N$e=new K,dq=1/60;Rb.prototype.getValue=function(e,t){return this._getValue(e,t)};Rb.prototype._getValue=function(e,t,n){l(e)||(e=K.now(N$e)),l(t)||(t=new d);let i=this._position;if(j.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,M$e),r=i.getValue(K.addSeconds(e,dq,ihe),nhe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(K.addSeconds(e,-dq,ihe),nhe),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,dq,t)};Rb.prototype.equals=function(e){return this===e||e instanceof Rb&&j.equals(this._position,e._position)};var Z_=Rb;function jD(e,t){this._velocityVectorProperty=new Z_(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new _e,this.ellipsoid=t??te.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(jD.prototype,{isConstant:{get:function(){return j.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var ohe=new d,L$e=new d,rhe=new J,O$e=new K;jD.prototype.getValue=function(e,t){l(e)||(e=K.now(O$e));let n=this._velocityVectorProperty._getValue(e,L$e,ohe);if(l(n))return kt.rotationMatrixFromPositionVelocity(ohe,n,this._ellipsoid,rhe),Le.fromRotationMatrix(rhe,t)};jD.prototype.equals=function(e){return this===e||e instanceof jD&&j.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var g3=jD;var Rp={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};Rp.validate=function(e){return e===Rp.COMPLETE||e===Rp.BELOW_ELLIPSOID_HORIZON||e===Rp.ABOVE_ELLIPSOID_HORIZON};Rp.toString=function(e){switch(e){case Rp.COMPLETE:return"COMPLETE";case Rp.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case Rp.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new me("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var YD=Rp;function $_(){}$_.packedLength=d.packedLength;$_.unpack=d.unpack;$_.pack=d.pack;var hq;function qD(e,t){return t[0]==="#"&&(t=hq+t),q_.fromString(e,t)}function she(e,t,n){if(l(n.reference))return qD(t,n.reference);if(l(n.velocityReference)){let i=qD(t,n.velocityReference);switch(e){case d:case $_:return new Z_(i,e===$_);case Le:return new g3(i)}}throw new ce(`${JSON.stringify(n)} is not valid CZML.`)}function F$e(e,t){return new fm(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var Zi=new d,gl=new A3,Oc=new Ae,BE=new Rn,_3=new Le;function Q$e(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===G.packedLength)return[G.byteToFloat(n[0]),G.byteToFloat(n[1]),G.byteToFloat(n[2]),G.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=G.byteToFloat(n[o+1]),t[o+2]=G.byteToFloat(n[o+2]),t[o+3]=G.byteToFloat(n[o+3]),t[o+4]=G.byteToFloat(n[o+4]);return t}function ahe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):we.createIfNeeded(n)}function k$e(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[D.toRadians(n[0]),D.toRadians(n[1]),D.toRadians(n[2]),D.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=D.toRadians(n[o+1]),t[o+2]=D.toRadians(n[o+2]),t[o+3]=D.toRadians(n[o+3]),t[o+4]=D.toRadians(n[o+4]);return t}function U$e(e){let t=e.length;if(gl.magnitude=1,t===2)return gl.clock=e[0],gl.cone=e[1],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],d.fromSpherical(gl,Zi),n[o+1]=Zi.x,n[o+2]=Zi.y,n[o+3]=Zi.z;return n}function G$e(e){let t=e.length;if(t===3)return gl.clock=e[0],gl.cone=e[1],gl.magnitude=e[2],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],gl.magnitude=e[i+3],d.fromSpherical(gl,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function z$e(e){let t=e.length;if(t===3)return Oc.longitude=e[0],Oc.latitude=e[1],Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=e[i+1],Oc.latitude=e[i+2],Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function V$e(e){let t=e.length;if(t===3)return Oc.longitude=D.toRadians(e[0]),Oc.latitude=D.toRadians(e[1]),Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=D.toRadians(e[i+1]),Oc.latitude=D.toRadians(e[i+2]),Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function mq(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return U$e(o);let r=e.spherical;if(l(r))return G$e(r);let s=e.cartographicRadians;if(l(s))return z$e(s);let a=e.cartographicDegrees;if(l(a))return V$e(a);throw new ce(`${JSON.stringify(e)} is not a valid CZML interval.`)}function che(e,t){d.unpack(e,t,Zi),d.normalize(Zi,Zi),d.pack(Zi,e,t)}function H$e(e){let t=mq(e);if(t.length===3)return che(t,0),t;for(let n=1;n<t.length;n+=4)che(t,n);return t}function lhe(e,t){Le.unpack(e,t,_3),Le.normalize(_3,_3),Le.pack(_3,e,t)}function W$e(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return lhe(t,0),t;for(let n=1;n<t.length;n+=5)lhe(t,n)}return t}function uhe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Xe:e.hasOwnProperty("cartesian2")?k:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?$_:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?G:e.hasOwnProperty("arcType")?un:e.hasOwnProperty("classificationType")?Jn:e.hasOwnProperty("colorBlendMode")?al:e.hasOwnProperty("cornerType")?Ji:e.hasOwnProperty("heightReference")?Ze:e.hasOwnProperty("horizontalOrigin")?Ri:e.hasOwnProperty("date")?K:e.hasOwnProperty("labelStyle")?ar:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?Yt:e.hasOwnProperty("distanceDisplayCondition")?Ut:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?Dn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Wm:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?XD.default:e.hasOwnProperty("verticalOrigin")?Wn:Object}function j$e(e,t,n){switch(e){case un:return un[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Xe:return t.boundingRectangle;case k:return t.cartesian2;case d:return mq(t);case $_:return H$e(t);case G:return Q$e(t);case Jn:return Jn[t.classificationType??t];case al:return al[t.colorBlendMode??t];case Ji:return Ji[t.cornerType??t];case Ze:return Ze[t.heightReference??t];case Ri:return Ri[t.horizontalOrigin??t];case Image:return ahe(t,n);case K:return K.fromIso8601(t.date??t);case ar:return ar[t.labelStyle??t];case Number:return t.number??t;case Yt:return t.nearFarScalar;case Ut:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Le:return W$e(t);case fh:return t.number??t;case YD:return YD[t.portionToDisplay??t];case Dn:return Dn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Wm:return Wm[t.stripeOrientation??t];case ae:return k$e(t);case XD.default:return ahe(t,n);case Wn:return Wn[t.verticalOrigin??t];default:throw new ce(`Unknown CzmlDataSource interval type: ${e}`)}}var Y$e={HERMITE:h3,LAGRANGE:m3,LINEAR:Tb};function y3(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:Y$e[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=rd[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=rd[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var fhe={iso8601:void 0};function Er(e){if(l(e))return fhe.iso8601=e,Rn.fromIso8601(fhe)}function Aq(e){let t=je.MAXIMUM_INTERVAL.clone();return t.data=e,t}function dhe(e){let t=new ml;return t.intervals.addInterval(Aq(e)),t}function hhe(e){let t=new nc(e.referenceFrame);return t.intervals.addInterval(Aq(e)),t}function C3(e,t,n,i,o,r,s){let a=Er(i.interval);l(o)&&(l(a)?a=Rn.intersect(a,o,BE):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),A=l(a)&&!a.equals(je.MAXIMUM_INTERVAL);if(i.delete===!0){if(!A){t[n]=void 0;return}return bhe(t[n],a)}let g=!1;if(h){if(u=j$e(e,i,r),!l(u))return;c=e.packedLength??1,f=u.length??1,g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==fh;if(!g&&!A){h?t[n]=new ci(m?e.unpack(u,0):u):t[n]=she(e,s,i);return}let _=t[n],y,C=i.epoch;if(l(C)&&(y=K.fromIso8601(C)),g&&!A){_ instanceof ad||(t[n]=_=new ad(e)),_.addSamplesPackedArray(u,y),y3(i,_);return}let E;if(!g&&A){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=she(e,s,i),l(_)||(t[n]=_=h?new J_:new ml),h&&_ instanceof J_?_.intervals.addInterval(a):_ instanceof ml?(h&&(a.data=new ci(a.data)),_.intervals.addInterval(a)):(t[n]=_=dhe(_),h&&(a.data=new ci(a.data)),_.intervals.addInterval(a));return}l(_)||(t[n]=_=new ml),_ instanceof ml||(t[n]=_=dhe(_));let I=_.intervals;E=I.findInterval(a),(!l(E)||!(E.data instanceof ad))&&(E=a.clone(),E.data=new ad(e),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(i,E.data)}function bhe(e,t){if(e instanceof ad){e.removeSamples(t);return}else if(e instanceof J_){e.intervals.removeInterval(t);return}else if(e instanceof ml){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||bhe(o.data,t)}n.removeInterval(t);return}}function Ce(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)C3(e,t,n,i[a],o,r,s);else C3(e,t,n,i,o,r,s)}function mhe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),A=l(s)&&!s.equals(je.MAXIMUM_INTERVAL);if(n.delete===!0){if(!A){e[t]=void 0;return}return The(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=eo[n.referenceFrame]),g=g??eo.FIXED,u=mq(n),f=u.length??1,m=f>c),!m&&!A){h?e[t]=new Ol(d.unpack(u),g):e[t]=qD(r,n.reference);return}let _=e[t],y,C=n.epoch;if(l(C)&&(y=K.fromIso8601(C)),m&&!A){(!(_ instanceof ic)||l(g)&&_.referenceFrame!==g)&&(e[t]=_=new ic(g,a)),_.addSamplesPackedArray(u,y),y3(n,_);return}let E;if(!m&&A){s=s.clone(),h?s.data=d.unpack(u):s.data=qD(r,n.reference),l(_)||(h?_=new X_(g):_=new nc(g),e[t]=_),h&&_ instanceof X_&&l(g)&&_.referenceFrame===g?_.intervals.addInterval(s):_ instanceof nc?(h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s)):(e[t]=_=hhe(_),h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s));return}l(_)?_ instanceof nc||(e[t]=_=hhe(_)):e[t]=_=new nc(g);let I=_.intervals;E=I.findInterval(s),(!l(E)||!(E.data instanceof ic)||l(g)&&E.data.referenceFrame!==g)&&(E=s.clone(),E.data=new ic(g,a),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(n,E.data)}function The(e,t){if(e instanceof ic){e.removeSamples(t);return}else if(e instanceof X_){e.intervals.removeInterval(t);return}else if(e instanceof nc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||The(o.data,t)}n.removeInterval(t);return}}function She(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)mhe(e,t,n[s],i,o,r);else mhe(e,t,n,i,o,r)}function Ahe(e,t,n,i){l(n.references)?E3(e,t,n.references,n.interval,i,HD,ml):(l(n.cartesian2)?n.array=k.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=k.unpackArray(n.cartesian)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function phe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=e[t],c,u;if(l(s)){a instanceof vD||(a=new vD,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof Jt||(c=new Jt),f=n.solidColor,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof UD||(c=new UD),f=n.grid,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),Ce(k,c,"lineCount",f.lineCount,void 0,o,r),Ce(k,c,"lineThickness",f.lineThickness,void 0,o,r),Ce(k,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof wC||(c=new wC),f=n.image,Ce(Image,c,"image",f.image,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r),Ce(G,c,"color",f.color,void 0,o,r),Ce(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof WD||(c=new WD),f=n.stripe,Ce(Wm,c,"orientation",f.orientation,void 0,o,r),Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(Number,c,"offset",f.offset,void 0,o,r),Ce(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof TE||(c=new TE),f=n.polylineOutline,Ce(G,c,"color",f.color,void 0,o,r),Ce(G,c,"outlineColor",f.outlineColor,void 0,o,r),Ce(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof VD||(c=new VD),f=n.polylineGlow,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"glowPower",f.glowPower,void 0,o,r),Ce(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof GD||(c=new GD),f=n.polylineArrow,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof zD||(c=new zD),f=n.polylineDash,Ce(G,c,"color",f.color,void 0,void 0,r),Ce(G,c,"gapColor",f.gapColor,void 0,void 0,r),Ce(Number,c,"dashLength",f.dashLength,void 0,o,r),Ce(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof SD||(c=new SD),f=n.checkerboard,Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function ku(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)phe(e,t,n[s],i,o,r);else phe(e,t,n,i,o,r)}function q$e(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function K$e(e,t,n,i){let o=t.description;l(o)&&Ce(String,e,"description",o,void 0,i,n)}function X$e(e,t,n,i){let o=t.position;l(o)&&She(e,"position",o,void 0,i,n)}function J$e(e,t,n,i){let o=t.viewFrom;l(o)&&Ce(d,e,"viewFrom",o,void 0,i,n)}function Z$e(e,t,n,i){let o=t.orientation;l(o)&&Ce(Le,e,"orientation",o,void 0,i,n)}function $$e(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new Ql);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)C3(uhe(s[a]),e.properties,r,s[a],void 0,i,n);else C3(uhe(s),e.properties,r,s,void 0,i,n)}}}function E3(e,t,n,i,o,r,s){let a=n.map(function(c){return qD(o,c)});if(l(i)){i=Er(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval(Aq(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function ghe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,HD,ml):Ce(Array,e,t,n,void 0,void 0,i)}function _he(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)ghe(e,t,n[o],i);else ghe(e,t,n,i)}function yhe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,j_,nc):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,te.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,te.default)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function JD(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)yhe(e,t,n[o],i);else yhe(e,t,n,i)}function eet(e){return d.unpackArray(e)}function tet(e){return d.fromRadiansArrayHeights(e,te.default)}function net(e){return d.fromDegreesArrayHeights(e,te.default)}function Che(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return E3(a,"positions",s,n.interval,i,j_,nc),a.positions});e[t]=new j_(r)}else l(n.cartesian)?n.array=n.cartesian.map(eet):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(tet):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(net)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i)}function iet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Che(e,t,n[o],i);else Che(e,t,n,i)}function oet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Ahe(e,t,n[o],i);else Ahe(e,t,n,i)}function ret(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new hs),r.addInterval(Er(o[s]));else r=new hs,r.addInterval(Er(o));e.availability=r}function set(e,t,n,i,o){l(t)&&Ce($_,e,"alignedAxis",t,n,i,o)}function aet(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=Er(o.interval),s=e.billboard;l(s)||(e.billboard=s=new jc),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Image,s,"image",o.image,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),set(s,o.alignedAxis,r,i,n),Ce(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Xe,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function cet(e,t,n,i){let o=t.box;if(!l(o))return;let r=Er(o.interval),s=e.box;l(s)||(e.box=s=new wI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"dimensions",o.dimensions,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function uet(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=Er(o.interval),s=e.corridor;l(s)||(e.corridor=s=new DI),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function fet(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=Er(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new vI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"length",o.length,r,i,n),Ce(Number,s,"topRadius",o.topRadius,r,i,n),Ce(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Number,s,"slices",o.slices,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function det(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new ce("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new ce("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function het(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=Er(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new PI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ce(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function met(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=Er(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new RI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"radii",o.radii,r,i,n),Ce(d,s,"innerRadii",o.innerRadii,r,i,n),Ce(Number,s,"minimumClock",o.minimumClock,r,i,n),Ce(Number,s,"maximumClock",o.maximumClock,r,i,n),Ce(Number,s,"minimumCone",o.minimumCone,r,i,n),Ce(Number,s,"maximumCone",o.maximumCone,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ce(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ce(Number,s,"subdivisions",o.subdivisions,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Aet(e,t,n,i){let o=t.label;if(!l(o))return;let r=Er(o.interval),s=e.label;l(s)||(e.label=s=new cm),Ce(Boolean,s,"show",o.show,r,i,n),Ce(String,s,"text",o.text,r,i,n),Ce(String,s,"font",o.font,r,i,n),Ce(ar,s,"style",o.style,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Boolean,s,"showBackground",o.showBackground,r,i,n),Ce(G,s,"backgroundColor",o.backgroundColor,r,i,n),Ce(k,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"fillColor",o.fillColor,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function pet(e,t,n,i){let o=t.model;if(!l(o))return;let r=Er(o.interval),s=e.model;l(s)||(e.model=s=new Dg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.gltf,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ce(Number,s,"maximumScale",o.maximumScale,r,i,n),Ce(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ce(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ce(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ce(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(al,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ce(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)Ehe(s,u[a],r,i,n);else Ehe(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)Ihe(s,f[a],r,i,n);else Ihe(s,f,r,i,n)}function Ehe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new Ql),s.hasProperty(f)||s.addProperty(f);let A=s[f];l(A)||(s[f]=A=new MI),Ce(d,A,"translation",h.translation,r,i,o),Ce(Le,A,"rotation",h.rotation,r,i,o),Ce(d,A,"scale",h.scale,r,i,o)}}function Ihe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new Ql),s.hasProperty(f)||s.addProperty(f),Ce(Number,s,f,h,r,i,o))}}function get(e,t,n,i){let o=t.path;if(!l(o))return;let r=Er(o.interval),s=e.path;l(s)||(e.path=s=new vg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"leadTime",o.leadTime,r,i,n),Ce(Number,s,"trailTime",o.trailTime,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"resolution",o.resolution,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function _et(e,t,n,i){let o=t.point;if(!l(o))return;let r=Er(o.interval),s=e.point;l(s)||(e.point=s=new LI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"pixelSize",o.pixelSize,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function KD(e){this.polygon=e,this._definitionChanged=new _e}Object.defineProperties(KD.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});KD.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new xc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new xc(n,i)};KD.prototype.equals=function(e){return this===e||e instanceof KD&&j.equals(this.polygon._positions,e.polygon._positions)&&j.equals(this.polygon._holes,e.polygon._holes)};function yet(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=Er(o.interval),s=e.polygon;l(s)||(e.polygon=s=new lm),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"_positions",o.positions,n),iet(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new KD(s)),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ce(Boolean,s,"closeTop",o.closeTop,r,i,n),Ce(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Cet(e){return e?un.GEODESIC:un.NONE}function Eet(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=Er(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new $c),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),ku(s,"material",o.material,r,i,n),ku(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ce(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=F$e(a.followSurface,Cet)}}function Iet(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=Er(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new OI),JD(s,"positions",o.positions,n),oet(s,"shape",o.shape,n),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xet(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=Er(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new um),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ae,s,"coordinates",o.coordinates,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function bet(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=Er(o.interval),s=e.tileset;l(s)||(e.tileset=s=new NI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.uri,r,i,n),Ce(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Tet(e,t,n,i){let o=t.wall;if(!l(o))return;let r=Er(o.interval),s=e.wall;l(s)||(e.wall=s=new Pg),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),_he(s,"minimumHeights",o.minimumHeights,n),_he(s,"maximumHeights",o.maximumHeights,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xhe(e,t,n,i,o){let r=e.id;if(l(r)||(r=Xn()),hq=r,!l(o._version)&&r!=="document")throw new ce("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")det(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}hq=void 0}function wet(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(je.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=K.secondsDifference(s,r),c=Math.round(a/120);return t=new Hm,t.startTime=K.clone(r),t.stopTime=K.clone(s),t.clockRange=As.LOOP_STOP,t.multiplier=c,t.currentTime=K.clone(r),t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Hm,t.startTime=je.MINIMUM_VALUE.clone(),t.stopTime=je.MAXIMUM_VALUE.clone(),t.currentTime=je.MINIMUM_VALUE.clone(),t.clockRange=As.LOOP_STOP,t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=Er(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=K.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=As[n.range]??As.LOOP_STOP),l(n.step)&&(t.clockStep=vo[n.step]??vo.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function whe(e,t,n,i){n=n??V.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Dt(s)),e._credit=s,typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=we.createIfNeeded(r),ms.setLoading(e,!0),Promise.resolve(o).then(function(a){return Bet(e,a,r,i)}).catch(function(a){return ms.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function Bet(e,t,n,i){ms.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new Bhe,o.removeAll()),Ps._processCzml(t,o,n,void 0,e);let r=wet(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=W_(n.getUrlComponent()),r=!0),ms.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function Bhe(){this.name=void 0,this.clock=void 0}function Ps(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._clock=void 0,this._documentPacket=new Bhe,this._version=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}Ps.load=function(e,t){return new Ps().load(e,t)};Object.defineProperties(Ps.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Ps.updaters=[aet,cet,uet,fet,het,met,Aet,pet,q$e,K$e,get,_et,yet,Eet,Iet,$$e,xet,X$e,bet,J$e,Tet,Z$e,ret];Ps.registerUpdater=function(e){Ps.updaters.includes(e)||Ps.updaters.push(e)};Ps.unregisterUpdater=function(e){if(Ps.updaters.includes(e)){let t=Ps.updaters.indexOf(e);Ps.updaters.splice(t,1)}};Ps.prototype.process=function(e,t){return whe(this,e,t,!1)};Ps.prototype.load=function(e,t){return whe(this,e,t,!0)};Ps.prototype.update=function(e){return!0};Ps.processPacketData=Ce;Ps.processPositionPacketData=She;Ps.processMaterialPacketData=ku;Ps._processCzml=function(e,t,n,i,o){if(i=i??Ps.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)xhe(e[r],t,i,n,o);else xhe(e,t,i,n,o)};var I3=Ps;function _l(){this._dataSources=[],this._dataSourceAdded=new _e,this._dataSourceRemoved=new _e,this._dataSourceMoved=new _e}Object.defineProperties(_l.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});_l.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};_l.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};_l.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};_l.prototype.contains=function(e){return this.indexOf(e)!==-1};_l.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};_l.prototype.get=function(e){return this._dataSources[e]};_l.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function x3(e,t){return e.indexOf(t)}function Dhe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=D.clamp(t,0,o),n=D.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}_l.prototype.raise=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t+1)};_l.prototype.lower=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t-1)};_l.prototype.raiseToTop=function(e){let t=x3(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};_l.prototype.lowerToBottom=function(e){let t=x3(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};_l.prototype.isDestroyed=function(){return!1};_l.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var b3=_l;function Qa(e){e=e??V.EMPTY_OBJECT,this._primitives=[],this._guid=Xn(),this._primitiveAdded=new _e,this._primitiveRemoved=new _e,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Qa.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Qa.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Qa.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Qa.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Qa.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Qa.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function T3(e,t){return e._primitives.indexOf(t)}Qa.prototype.raise=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Qa.prototype.raiseToTop=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Qa.prototype.lower=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Qa.prototype.lowerToBottom=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Qa.prototype.get=function(e){return this._primitives[e]};Qa.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Qa.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Qa.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Qa.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Qa.prototype.isDestroyed=function(){return!1};Qa.prototype.destroy=function(){return this.removeAll(),ue(this)};var ou=Qa;function jm(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(jm.prototype,{length:{get:function(){return this._length}}});jm.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new ou({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};jm.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};jm.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};jm.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};jm.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};jm.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};jm.prototype.isDestroyed=function(){return!1};jm.prototype.destroy=function(){return this.removeAll(),ue(this)};var S3=jm;function Mb(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new Pt}Mb.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};Mb.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};Mb.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};Mb.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};Mb.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):mt.FAILED};var Nb=Mb;var gq={},w3=new d,vhe=new d,Phe=new Le,Rhe=new J;function Lb(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),w3),d.multiplyByScalar(n,Math.sin(f),vhe),d.add(w3,vhe,w3);let h=Math.cos(e);h=h*h;let A=Math.sin(e);A=A*A;let m=r/Math.sqrt(s*h+o*A)/a;return Le.fromAxisAngle(w3,m,Phe),J.fromQuaternion(Phe,Rhe),J.multiplyByVector(Rhe,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var Mhe=new d,Nhe=new d,pq=new d,Det=new d;gq.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,A=f+2,g=d.fromArray(e,f,Mhe);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,Nhe),_=i.geodeticSurfaceNormal(g,Det),y=d.multiplyByScalar(_,o,pq);d.add(g,y,g),n&&(d.multiplyByScalar(_,r,y),d.add(m,y,m),a[f+u]=m.x,a[h+u]=m.y,a[A+u]=m.z),a[f]=g.x,a[h]=g.y,a[A]=g.z}return a};var vet=new d,Pet=new d,Ret=new d;gq.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),A=d.normalize(s,vet),g=d.cross(d.UNIT_Z,s,Pet);g=d.normalize(g,g);let m=d.cross(A,g,Ret),_=1+Math.ceil(D.PI_OVER_TWO/a),y=D.PI_OVER_TWO/(_-1),C=D.PI_OVER_TWO-_*y;C<0&&(_-=Math.ceil(Math.abs(C)/y));let E=2*(_*(_+2)),I=t?new Array(E*3):void 0,b=0,S=Mhe,B=Nhe,v=_*4*3,P=v-1,N=0,L=n?new Array(v):void 0,p,x,T,w,M;for(C=D.PI_OVER_TWO,S=Lb(C,r,m,g,c,f,u,h,A,S),t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x),C=D.PI_OVER_TWO-y,p=1;p<_+1;++p){if(S=Lb(C,r,m,g,c,f,u,h,A,S),B=Lb(Math.PI-C,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*p+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z),C=D.PI_OVER_TWO-(p+1)*y}for(p=_;p>1;--p){if(C=D.PI_OVER_TWO-(p-1)*y,S=Lb(-C,r,m,g,c,f,u,h,A,S),B=Lb(C+Math.PI,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*(p-1)+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z)}C=D.PI_OVER_TWO,S=Lb(-C,r,m,g,c,f,u,h,A,S);let O={};return t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,O.positions=I,O.numPts=_),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,O.outerPositions=L),O};var Uu=gq;var Ob=new d,_q=new d,yq=new d,Lhe=new d,Ks=new k,Ohe=new J,Met=new J,Cq=new Le,Fhe=new d,Qhe=new d,khe=new d,v3=new Ae,Uhe=new d,Ghe=new k,zhe=new k;function Vhe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,A=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,_=f?new Float32Array(u*3):void 0,y=0,C=Fhe,E=Qhe,I=khe,b=new Hi(a),S=b.project(a.cartesianToCartographic(o,v3),Uhe),B=a.scaleToGeodeticSurface(o,Ob);a.geodeticSurfaceNormal(B,B);let v=Ohe,P=Met;if(c!==0){let M=Le.fromAxisAngle(B,c,Cq);v=J.fromQuaternion(M,v),M=Le.fromAxisAngle(B,-c,Cq),P=J.fromQuaternion(M,P)}else v=J.clone(J.IDENTITY,v),P=J.clone(J.IDENTITY,P);let N=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),L=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),p=e.length,x=n?p:0,T=x/3*2;for(let M=0;M<p;M+=3){let O=M+1,U=M+2,Q=d.fromArray(e,M,Ob);if(i.st){let z=J.multiplyByVector(v,Q,_q),F=b.project(a.cartesianToCartographic(z,v3),yq);d.subtract(F,S,F),Ks.x=(F.x+r)/(2*r),Ks.y=(F.y+s)/(2*s),N.x=Math.min(Ks.x,N.x),N.y=Math.min(Ks.y,N.y),L.x=Math.max(Ks.x,L.x),L.y=Math.max(Ks.y,L.y),n&&(h[y+T]=Ks.x,h[y+1+T]=Ks.y),h[y++]=Ks.x,h[y++]=Ks.y}(i.normal||i.tangent||i.bitangent||f)&&(C=a.geodeticSurfaceNormal(Q,C),f&&(_[M+x]=-C.x,_[O+x]=-C.y,_[U+x]=-C.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(E=d.normalize(d.cross(d.UNIT_Z,C,E),E),J.multiplyByVector(P,E,E)),i.normal&&(A[M]=C.x,A[O]=C.y,A[U]=C.z,n&&(A[M+x]=-C.x,A[O+x]=-C.y,A[U+x]=-C.z)),i.tangent&&(g[M]=E.x,g[O]=E.y,g[U]=E.z,n&&(g[M+x]=-E.x,g[O+x]=-E.y,g[U+x]=-E.z)),i.bitangent&&(I=d.normalize(d.cross(C,E,I),I),m[M]=I.x,m[O]=I.y,m[U]=I.z,n&&(m[M+x]=I.x,m[O+x]=I.y,m[U+x]=I.z))))}if(i.st){p=h.length;for(let M=0;M<p;M+=2)h[M]=(h[M]-N.x)/(L.x-N.x),h[M+1]=(h[M+1]-N.y)/(L.y-N.y)}let w=new En;if(i.position){let M=Uu.raisePositionsToHeight(e,t,n);w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:M})}if(i.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),i.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),f&&(w.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),n&&l(t.offsetAttribute)){let M=new Uint8Array(u);if(t.offsetAttribute===hn.TOP)M=M.fill(1,0,u/2);else{let O=t.offsetAttribute===hn.NONE?0:1;M=M.fill(O)}w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}return w}function Hhe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var DE=new d;function Net(e){let t=e.center;DE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,DE),e.height,DE),DE=d.add(t,DE,DE);let n=new le(DE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=Vhe(o,e,!1),a=Hhe(r);return a=Fe.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Let(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),A=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,_=n.bitangent?new Float32Array(f*3):void 0,y=t.shadowVolume,C=y?new Float32Array(f*3):void 0,E=0,I=Fhe,b=Qhe,S=khe,B=new Hi(s),v=B.project(s.cartesianToCartographic(i,v3),Uhe),P=s.scaleToGeodeticSurface(i,Ob);s.geodeticSurfaceNormal(P,P);let N=Le.fromAxisAngle(P,u,Cq),L=J.fromQuaternion(N,Ohe),p=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),x=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),T=e.length,w=T/3*2;for(let O=0;O<T;O+=3){let U=O+1,Q=O+2,z=d.fromArray(e,O,Ob),F;if(n.st){let W=J.multiplyByVector(L,z,_q),Z=B.project(s.cartesianToCartographic(W,v3),yq);d.subtract(Z,v,Z),Ks.x=(Z.x+o)/(2*o),Ks.y=(Z.y+r)/(2*r),p.x=Math.min(Ks.x,p.x),p.y=Math.min(Ks.y,p.y),x.x=Math.max(Ks.x,x.x),x.y=Math.max(Ks.y,x.y),A[E+w]=Ks.x,A[E+1+w]=Ks.y,A[E++]=Ks.x,A[E++]=Ks.y}z=s.scaleToGeodeticSurface(z,z),F=d.clone(z,_q),I=s.geodeticSurfaceNormal(z,I),y&&(C[O+T]=-I.x,C[U+T]=-I.y,C[Q+T]=-I.z);let H=d.multiplyByScalar(I,a,Lhe);if(z=d.add(z,H,z),H=d.multiplyByScalar(I,c,H),F=d.add(F,H,F),n.position&&(h[O+T]=F.x,h[U+T]=F.y,h[Q+T]=F.z,h[O]=z.x,h[U]=z.y,h[Q]=z.z),n.normal||n.tangent||n.bitangent){S=d.clone(I,S);let W=d.fromArray(e,(O+3)%T,Lhe);d.subtract(W,z,W);let Z=d.subtract(F,z,yq);I=d.normalize(d.cross(Z,W,I),I),n.normal&&(g[O]=I.x,g[U]=I.y,g[Q]=I.z,g[O+T]=I.x,g[U+T]=I.y,g[Q+T]=I.z),n.tangent&&(b=d.normalize(d.cross(S,I,b),b),m[O]=b.x,m[U]=b.y,m[Q]=b.z,m[O+T]=b.x,m[O+1+T]=b.y,m[O+2+T]=b.z),n.bitangent&&(_[O]=S.x,_[U]=S.y,_[Q]=S.z,_[O+T]=S.x,_[U+T]=S.y,_[Q+T]=S.z)}}if(n.st){T=A.length;for(let O=0;O<T;O+=2)A[O]=(A[O]-p.x)/(x.x-p.x),A[O+1]=(A[O+1]-p.y)/(x.y-p.y)}let M=new En;if(n.position&&(M.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(M.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:A})),n.normal&&(M.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(M.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(M.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),y&&(M.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),l(t.offsetAttribute)){let O=new Uint8Array(f);if(t.offsetAttribute===hn.TOP)O=O.fill(1,0,f/2);else{let U=t.offsetAttribute===hn.NONE?0:1;O=O.fill(U)}M.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return M}function Oet(e){let t=e.length/3,n=Fe.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var B3=new le,D3=new le;function Fet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Ob),e.height,Ob);B3.center=d.add(t,o,B3.center),B3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),D3.center=d.add(t,o,D3.center),D3.radius=i;let r=Uu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=le.union(B3,D3),f=Vhe(s,e,!0),h=Hhe(a),A=h.length;h.length=A*2;let g=s.length/3;for(let b=0;b<A;b+=3)h[b+A]=h[b+2]+g,h[b+1+A]=h[b+1]+g,h[b+2+A]=h[b]+g;let m=Fe.createTypedArray(g*2/3,h),_=new ht({attributes:f,indices:m,primitiveType:Me.TRIANGLES}),y=Let(c,e);h=Oet(c);let C=Fe.createTypedArray(c.length*2/3,h),E=new ht({attributes:y,indices:C,primitiveType:Me.TRIANGLES}),I=jn.combineInstances([new Rt({geometry:_}),new Rt({geometry:E})]);return{boundingSphere:u,attributes:I[0].attributes,indices:I[0].indices}}function Whe(e,t,n,i,o,r,s){let c=Uu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let A=0;A<u;++A)f[A]=d.fromArray(c,A*3);let h=ae.fromCartesianArray(f,r,s);return h.width>D.PI&&(h.north=h.north>0?D.PI_OVER_TWO-D.EPSILON7:h.north,h.south=h.south<0?D.EPSILON7-D.PI_OVER_TWO:h.south,h.east=D.PI,h.west=-D.PI),h}function qm(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.vertexFormat??Pe.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Pe.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}qm.packedLength=d.packedLength+te.packedLength+Pe.packedLength+9;qm.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var jhe=new d,Yhe=new te,qhe=new Pe,Ym={center:jhe,ellipsoid:Yhe,vertexFormat:qhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};qm.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,jhe);t+=d.packedLength;let o=te.unpack(e,t,Yhe);t+=te.packedLength;let r=Pe.unpack(e,t,qhe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=A,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(Ym.height=f,Ym.extrudedHeight=A,Ym.granularity=h,Ym.stRotation=u,Ym.rotation=c,Ym.semiMajorAxis=s,Ym.semiMinorAxis=a,Ym.shadowVolume=g,Ym.offsetAttribute=m===-1?void 0:m,new qm(Ym))};qm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??te.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??D.RADIANS_PER_DEGREE,a=e.rotation??0;return Whe(n,o,r,a,s,i,t)};qm.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Fet(o);else if(r=Net(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};qm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new qm({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};function Qet(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Uu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ht._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(qm.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Whe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Qet(this)),this._textureCoordinateRotationPoints}}});var ru=qm;var Khe=new d,vE=new d;function ket(e){let t=e.center;vE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,vE),e.height,vE),vE=d.add(t,vE,vE);let n=new le(vE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!1,!0).outerPositions,o=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Fe.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var P3=new le,R3=new le;function Uet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Khe),e.height,Khe);P3.center=d.add(t,o,P3.center),P3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),R3.center=d.add(t,o,R3.center),R3.radius=i;let r=Uu.computeEllipsePositions(e,!1,!0).outerPositions,s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=le.union(P3,R3),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===hn.TOP)m=m.fill(1,0,c/2);else{let _=e.offsetAttribute===hn.NONE?0:1;m=m.fill(_)}s.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=e.numberOfVerticalLines??16;u=D.clamp(u,0,c/2);let f=Fe.createTypedArray(c,c*2+u*2);c/=2;let h=0,A;for(A=0;A<c;++A)f[h++]=A,f[h++]=(A+1)%c,f[h++]=A+c,f[h++]=(A+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let _=Math.min(g*u,c);for(A=0;A<_;A+=g)f[h++]=A,f[h++]=A+c}return{boundingSphere:a,attributes:s,indices:f}}function Fb(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}Fb.packedLength=d.packedLength+te.packedLength+8;Fb.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var Xhe=new d,Jhe=new te,Mp={center:Xhe,ellipsoid:Jhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};Fb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Xhe);t+=d.packedLength;let o=te.unpack(e,t,Jhe);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=A===-1?void 0:A,n):(Mp.height=c,Mp.extrudedHeight=f,Mp.granularity=u,Mp.rotation=a,Mp.semiMajorAxis=r,Mp.semiMinorAxis=s,Mp.numberOfVerticalLines=h,Mp.offsetAttribute=A===-1?void 0:A,new Fb(Mp))};Fb.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=Uet(o);else if(r=ket(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var ld=Fb;var Zhe=new G,$he=d.ZERO,eme=new d,tme=new ae;function Get(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function dh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Get(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(dh.prototype=Object.create(ti.prototype),dh.prototype.constructor=dh);dh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Zhe)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ru(this._options),attributes:i})};dh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Zhe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ld(this._options),attributes:r})};dh.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};dh.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||Ci.prototype._isHidden.call(this,e,t)};dh.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!j.isConstant(t.rotation)||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};dh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(je.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(je.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(je.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),s.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(ru.computeRectangle(s,tme)).minimumTerrainHeight),s.extrudedHeight=o};dh.DynamicGeometryUpdater=Qb;function Qb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Qb.prototype=Object.create(yi.prototype),Qb.prototype.constructor=Qb);Qb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t,n)};Qb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.center=j.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=j.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=j.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(ru.computeRectangle(i,tme)).minimumTerrainHeight),i.extrudedHeight=s};var M3=dh;var zet=new d,Vet=new d,Het=new d,Wet=new d,jet=new d,Yet=new d(1,1,1),nme=Math.cos,ime=Math.sin;function Np(e){e=e??V.EMPTY_OBJECT;let t=e.radii??Yet,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),u=e.vertexFormat??Pe.DEFAULT;this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Pe.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Np.packedLength=2*d.packedLength+Pe.packedLength+7;Np.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var ome=new d,rme=new d,sme=new Pe,ey={radii:ome,innerRadii:rme,vertexFormat:sme,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Np.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,ome);t+=d.packedLength;let o=d.unpack(e,t,rme);t+=d.packedLength;let r=Pe.unpack(e,t,sme);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=A===-1?void 0:A,n):(ey.minimumClock=s,ey.maximumClock=a,ey.minimumCone=c,ey.maximumCone=u,ey.stackPartitions=f,ey.slicePartitions=h,ey.offsetAttribute=A===-1?void 0:A,new Np(ey))};Np.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/D.TWO_PI),u=Math.round(u*Math.abs(s-r)/D.PI),c<2&&(c=2),u<2&&(u=2);let f,h,A=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let _=g.length,y=m.length,C=0,E=1,I=n.x!==t.x||n.y!==t.y||n.z!==t.z,b=!1,S=!1,B=!1;I&&(E=2,r>0&&(b=!0,C+=c-1),s<Math.PI&&(S=!0,C+=c-1),(o-i)%D.TWO_PI?(B=!0,C+=(u-1)*2+1):C+=1);let v=y*_*E,P=new Float64Array(v*3),N=new Array(v).fill(!1),L=new Array(v).fill(!1),p=c*u*E,x=6*(p+C+1-(c+u)*E),T=Fe.createTypedArray(p,x),w=a.normal?new Float32Array(v*3):void 0,M=a.tangent?new Float32Array(v*3):void 0,O=a.bitangent?new Float32Array(v*3):void 0,U=a.st?new Float32Array(v*2):void 0,Q=new Array(_),z=new Array(_);for(f=0;f<_;f++)Q[f]=ime(g[f]),z[f]=nme(g[f]);let F=new Array(y),H=new Array(y);for(h=0;h<y;h++)H[h]=nme(m[h]),F[h]=ime(m[h]);for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=t.x*Q[f]*H[h],P[A++]=t.y*Q[f]*F[h],P[A++]=t.z*z[f];let W=v/2;if(I)for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=n.x*Q[f]*H[h],P[A++]=n.y*Q[f]*F[h],P[A++]=n.z*z[f],N[W]=!0,f>0&&f!==_-1&&h!==0&&h!==y-1&&(L[W]=!0),W++;A=0;let Z,Y;for(f=1;f<_-2;f++)for(Z=f*y,Y=(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Y+h+1,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Z+h;if(I){let qe=_*y;for(f=1;f<_-2;f++)for(Z=qe+f*y,Y=qe+(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Z+h,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Y+h+1}let $,X;if(I){if(b)for(X=_*y,f=1;f<y-2;f++)T[A++]=f,T[A++]=f+1,T[A++]=X+f+1,T[A++]=f,T[A++]=X+f+1,T[A++]=X+f;if(S)for($=_*y-y,X=_*y*E-y,f=1;f<y-2;f++)T[A++]=$+f+1,T[A++]=$+f,T[A++]=X+f,T[A++]=$+f+1,T[A++]=X+f,T[A++]=X+f+1}if(B){for(f=1;f<_-2;f++)X=y*_+y*f,$=y*f,T[A++]=X,T[A++]=$+y,T[A++]=$,T[A++]=X,T[A++]=X+y,T[A++]=$+y;for(f=1;f<_-2;f++)X=y*_+y*(f+1)-1,$=y*(f+1)-1,T[A++]=$+y,T[A++]=X,T[A++]=$,T[A++]=$+y,T[A++]=X+y,T[A++]=X}let he=new En;a.position&&(he.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:P}));let ge=0,fe=0,ye=0,Ie=0,ve=v/2,Te,ke=te.fromCartesian3(t),Ge=te.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<v;f++){Te=N[f]?Ge:ke;let qe=d.fromArray(P,f*3,zet),tt=Te.geodeticSurfaceNormal(qe,Vet);if(L[f]&&d.negate(tt,tt),a.st){let $t=k.negate(tt,jet);U[ge++]=Math.atan2($t.y,$t.x)/D.TWO_PI+.5,U[ge++]=Math.asin(tt.z)/Math.PI+.5}if(a.normal&&(w[fe++]=tt.x,w[fe++]=tt.y,w[fe++]=tt.z),a.tangent||a.bitangent){let $t=Het,it=0,tn;if(N[f]&&(it=ve),!b&&f>=it&&f<it+y*2?tn=d.UNIT_X:tn=d.UNIT_Z,d.cross(tn,tt,$t),d.normalize($t,$t),a.tangent&&(M[ye++]=$t.x,M[ye++]=$t.y,M[ye++]=$t.z),a.bitangent){let Wt=d.cross(tt,$t,Wet);d.normalize(Wt,Wt),O[Ie++]=Wt.x,O[Ie++]=Wt.y,O[Ie++]=Wt.z}}}a.st&&(he.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:U})),a.normal&&(he.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:w})),a.tangent&&(he.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:M})),a.bitangent&&(he.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:O}))}if(l(e._offsetAttribute)){let qe=P.length,tt=e._offsetAttribute===hn.NONE?0:1,$t=new Uint8Array(qe/3).fill(tt);he.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:$t})}return new ht({attributes:he,indices:T,primitiveType:Me.TRIANGLES,boundingSphere:le.fromEllipsoid(ke),offsetAttribute:e._offsetAttribute})};var Eq;Np.getUnitEllipsoid=function(){return l(Eq)||(Eq=Np.createGeometry(new Np({radii:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),Eq};var ka=Np;var qet=new Jt(G.WHITE),Iq=d.ZERO,xq=new d,Ket=new d,Xet=new d,bq=new G,Jet=new d(1,1,1);function Zet(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function Gu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Zet(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(Gu.prototype=Object.create(Ci.prototype),Gu.prototype.constructor=Gu);Object.defineProperties(Gu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Gu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Kn.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,bq)),l(f)||(f=G.WHITE),r=en.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ka(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};Gu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,bq),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(r),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ed(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};Gu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Gu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||Ci.prototype._isHidden.call(this,e,t)};Gu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.radii.isConstant||!j.isConstant(t.innerRadii)||!j.isConstant(t.stackPartitions)||!j.isConstant(t.slicePartitions)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.minimumClock)||!j.isConstant(t.maximumClock)||!j.isConstant(t.minimumCone)||!j.isConstant(t.maximumCone)||!j.isConstant(t.subdivisions)};Gu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(je.MINIMUM_VALUE,i.radii),i.innerRadii=j.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=j.getValueOrUndefined(t.minimumClock,je.MINIMUM_VALUE),i.maximumClock=j.getValueOrUndefined(t.maximumClock,je.MINIMUM_VALUE),i.minimumCone=j.getValueOrUndefined(t.minimumCone,je.MINIMUM_VALUE),i.maximumCone=j.getValueOrUndefined(t.maximumCone,je.MINIMUM_VALUE),i.stackPartitions=j.getValueOrUndefined(t.stackPartitions,je.MINIMUM_VALUE),i.slicePartitions=j.getValueOrUndefined(t.slicePartitions,je.MINIMUM_VALUE),i.subdivisions=j.getValueOrUndefined(t.subdivisions,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Gu.prototype._onEntityPropertyChanged=Rg;Gu.DynamicGeometryUpdater=ZD;function ZD(e,t,n){yi.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new R,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&(ZD.prototype=Object.create(yi.prototype),ZD.prototype.constructor=ZD);ZD.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!j.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=j.getValueOrUndefined(n.radii,e,Ket),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=j.getValueOrDefault(n.fill,e,!0),s=j.getValueOrDefault(n.outline,e,!1),a=j.getValueOrClonedDefault(n.outlineColor,e,G.BLACK,bq),c=gr.getValue(e,n.material??qet,this._material),u=j.getValueOrUndefined(n.innerRadii,e,Xet),f=j.getValueOrUndefined(n.minimumClock,e),h=j.getValueOrUndefined(n.maximumClock,e),A=j.getValueOrUndefined(n.minimumCone,e),g=j.getValueOrUndefined(n.maximumCone,e),m=j.getValueOrUndefined(n.stackPartitions,e),_=j.getValueOrUndefined(n.slicePartitions,e),y=j.getValueOrUndefined(n.subdivisions,e),C=j.getValueOrDefault(n.outlineWidth,e,1),E=j.getValueOrDefault(n.heightReference,e,Ze.NONE),I=E!==Ze.NONE?hn.ALL:void 0,b=this._scene.mode,S=b===ie.SCENE3D&&E===Ze.NONE,B=this._options,v=this._geometryUpdater.shadowsProperty.getValue(e),N=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),L=j.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,Iq,xq);if(!S||this._lastSceneMode!==b||!l(this._primitive)||B.stackPartitions!==m||B.slicePartitions!==_||l(u)&&!d.equals(B.innerRadii!==u)||B.minimumClock!==f||B.maximumClock!==h||B.minimumCone!==A||B.maximumCone!==g||B.subdivisions!==y||this._lastOutlineWidth!==C||B.offsetAttribute!==I){let x=this._primitives;x.removeAndDestroy(this._primitive),x.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=b,this._lastOutlineWidth=C,B.stackPartitions=m,B.slicePartitions=_,B.subdivisions=y,B.offsetAttribute=I,B.radii=d.clone(S?Jet:i,B.radii),l(u)?S?B.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,B.innerRadii):B.innerRadii=d.clone(u,B.innerRadii):B.innerRadii=void 0,B.minimumClock=f,B.maximumClock=h,B.minimumCone=A,B.maximumCone=g;let T=new Io({material:c,translucent:c.isTranslucent(),closed:!0});B.vertexFormat=T.vertexFormat;let w=this._geometryUpdater.createFillGeometryInstance(e,S,this._modelMatrix);this._primitive=x.add(new kn({geometryInstances:w,appearance:T,asynchronous:!1,shadows:v}));let M=this._geometryUpdater.createOutlineGeometryInstance(e,S,this._modelMatrix);this._outlinePrimitive=x.add(new kn({geometryInstances:M,appearance:new gn({flat:!0,translucent:M.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(C)}}),asynchronous:!1,shadows:v})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=G.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=N,this._lastOffset=d.clone(L,this._lastOffset)}else if(this._primitive.ready){let x=this._primitive,T=this._outlinePrimitive;x.show=!0,T.show=!0,x.appearance.material=c;let w=this._attributes;l(w)||(w=x.getGeometryInstanceAttributes(t),this._attributes=w),r!==this._lastShow&&(w.show=Bn.toValue(r,w.show),this._lastShow=r);let M=this._outlineAttributes;l(M)||(M=T.getGeometryInstanceAttributes(t),this._outlineAttributes=M),s!==this._lastOutlineShow&&(M.show=Bn.toValue(s,M.show),this._lastOutlineShow=s),G.equals(a,this._lastOutlineColor)||(M.color=en.toValue(a,M.color),G.clone(a,this._lastOutlineColor)),Ut.equals(N,this._lastDistanceDisplayCondition)||(w.distanceDisplayCondition=Kn.toValue(N,w.distanceDisplayCondition),M.distanceDisplayCondition=Kn.toValue(N,M.distanceDisplayCondition),Ut.clone(N,this._lastDistanceDisplayCondition)),d.equals(L,this._lastOffset)||(w.offset=ho.toValue(L,w.offset),M.offset=ho.toValue(L,w.offset),d.clone(L,this._lastOffset))}S&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=R.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var N3=Gu;function kb(e){e=e??V.EMPTY_OBJECT;let t=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}kb.packedLength=Pe.packedLength;kb.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),t};var ame=new Pe,$et={vertexFormat:ame};kb.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,ame);return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n):new kb($et)};var L3=new d(-.5,-.5,0),O3=new d(.5,.5,0);kb.createGeometry=function(e){let t=e._vertexFormat,n=new En,i,o;if(t.position){if(o=new Float64Array(12),o[0]=L3.x,o[1]=L3.y,o[2]=0,o[3]=O3.x,o[4]=L3.y,o[5]=0,o[6]=O3.x,o[7]=O3.y,o[8]=0,o[9]=L3.x,o[10]=O3.y,o[11]=0,n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ht({attributes:n,indices:i,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var F3=kb;function Ub(){this._workerName="createPlaneOutlineGeometry"}Ub.packedLength=0;Ub.pack=function(e,t){return t};Ub.unpack=function(e,t,n){return l(n)?n:new Ub};var ty=new d(-.5,-.5,0),Q3=new d(.5,.5,0);Ub.createGeometry=function(){let e=new En,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=ty.x,n[1]=ty.y,n[2]=ty.z,n[3]=Q3.x,n[4]=ty.y,n[5]=ty.z,n[6]=Q3.x,n[7]=Q3.y,n[8]=ty.z,n[9]=ty.x,n[10]=Q3.y,n[11]=ty.z,e.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ht({attributes:e,indices:t,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var k3=Ub;var ett=new d,cme=new G;function ttt(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function ud(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new ttt(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(ud.prototype=Object.create(Ci.prototype),ud.prototype.constructor=ud);ud.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,cme)),l(g)||(g=G.WHITE),o=en.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=j.getValueOrDefault(c.plane,e,u.plane),A=j.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=A,f=Tq(h,A,f,f),new Rt({id:t,geometry:new F3(this._options),modelMatrix:f,attributes:i})};ud.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,cme),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=j.getValueOrDefault(r.plane,e,s.plane),u=j.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=Tq(c,u,a,a),new Rt({id:t,geometry:new k3,modelMatrix:a,attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};ud.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};ud.prototype._getIsClosed=function(e){return!1};ud.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};ud.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(je.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions)};ud.DynamicGeometryUpdater=Gb;function Gb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Gb.prototype=Object.create(yi.prototype),Gb.prototype.constructor=Gb);Gb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,ett);return!l(o)||!l(i.plane)||!l(i.dimensions)||yi.prototype._isHidden.call(this,e,t,n)};Gb.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=j.getValueOrDefault(t.plane,n,i.plane),i.dimensions=j.getValueOrUndefined(t.dimensions,n,i.dimensions)};var ntt=new d,itt=new d,ott=new d,rtt=new d,stt=new J,att=new J,ctt=new R;function Tq(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,ott),a=d.clone(d.UNIT_Z,itt);D.equalsEpsilon(Math.abs(d.dot(a,o)),1,D.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,ntt);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=stt;J.setColumn(u,0,c,u),J.setColumn(u,1,a,u),J.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,rtt),h=J.multiplyByScale(u,f,att),A=R.fromRotationTranslation(h,s,ctt);return R.multiplyTransformation(n,A,i)}ud.createPrimitiveMatrix=Tq;var U3=ud;var ltt=new d,utt=new Xe,ftt=new k,dtt=new k,htt=new d,mtt=new d,Att=new d,$D=new d,ptt=new d,gtt=new d,lme=new Le,_tt=new J,ytt=new J,Ctt=new d;function Ett(e,t,n,i,o,r,s,a,c){let u=e.positions,f=xi.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Fe.createTypedArray(u.length,f.length);h.set(f);let A=_tt;if(i!==0){let p=Le.fromAxisAngle(s,i,lme);if(A=J.fromQuaternion(p,A),t.tangent||t.bitangent){p=Le.fromAxisAngle(s,-i,lme);let x=J.fromQuaternion(p,ytt);a=d.normalize(J.multiplyByVector(x,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else A=J.clone(J.IDENTITY,A);let g=dtt;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,_=m*3,y=new Float64Array(_),C=t.normal?new Float32Array(_):void 0,E=t.tangent?new Float32Array(_):void 0,I=t.bitangent?new Float32Array(_):void 0,b=t.st?new Float32Array(m*2):void 0,S=0,B=0,v=0,P=0,N=0;for(let p=0;p<m;p++){let x=u[p];if(y[S++]=x.x,y[S++]=x.y,y[S++]=x.z,t.st)if(l(o)&&o.positions.length===m)b[N++]=o.positions[p].x,b[N++]=o.positions[p].y;else{let T=J.multiplyByVector(A,x,ltt),w=r(T,ftt);k.subtract(w,g,w);let M=D.clamp(w.x/n.width,0,1),O=D.clamp(w.y/n.height,0,1);b[N++]=M,b[N++]=O}t.normal&&(C[B++]=s.x,C[B++]=s.y,C[B++]=s.z),t.tangent&&(E[P++]=a.x,E[P++]=a.y,E[P++]=a.z),t.bitangent&&(I[v++]=c.x,I[v++]=c.y,I[v++]=c.z)}let L=new En;return t.position&&(L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y})),t.normal&&(L.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(L.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.bitangent&&(L.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:b})),new ht({attributes:L,indices:h,primitiveType:Me.TRIANGLES})}function PE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=Pe.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=$n.computeHierarchyPackedLength(t,d)+Pe.packedLength+te.packedLength+(l(n)?$n.computeHierarchyPackedLength(n,k):1)+2}PE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new PE(t)};PE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var Itt=te.clone(te.UNIT_SPHERE),xtt=new Pe,btt={polygonHierarchy:{}};PE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Itt);t+=te.packedLength;let r=Pe.unpack(e,t,xtt);t+=Pe.packedLength;let s=e[t++],a=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new PE(btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};PE.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=No(s,d.equalsEpsilon,!0),s.length<3)return;let a=htt,c=mtt,u=Att,f=ptt,h=gtt;if(!M_.computeProjectTo2DArguments(s,$D,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon($D,d.ZERO,D.EPSILON6)){let N=e._ellipsoid.geodeticSurfaceNormal($D,Ctt);d.dot(a,N)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=M_.createProjectPointsTo2DFunction($D,f,h),m=M_.createProjectPointTo2DFunction($D,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let _=$n.polygonsFromHierarchy(n,r,g,!1),y=_.hierarchy,C=_.polygons,E=function(N){return N},I=r?$n.polygonsFromHierarchy(o,!0,E,!1).polygons:void 0;if(y.length===0)return;s=y[0].outerRing;let b=le.fromPoints(s),S=$n.computeBoundingRectangle(a,m,s,i,utt),B=[];for(let N=0;N<C.length;N++){let L=new Rt({geometry:Ett(C[N],t,S,i,r?I[N]:void 0,m,a,c,u)});B.push(L)}let v=jn.combineInstances(B)[0];v.attributes.position.values=new Float64Array(v.attributes.position.values),v.indices=Fe.createTypedArray(v.attributes.position.values.length/3,v.indices);let P=v.attributes;return t.position||delete P.position,new ht({attributes:P,indices:v.indices,primitiveType:v.primitiveType,boundingSphere:b})};var G3=PE;var ume=[],z3=[];function Ttt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],_=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=_.x,c[h++]=_.y,c[h++]=_.z}else{let m=0;if(o===un.GEODESIC)for(u=0;u<f;u++)m+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)m+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let _;o===un.GEODESIC?_=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(_=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let y=_.length;for(let C=0;C<y;++C)c[h++]=_[C]}}f=c.length/3;let A=f*2,g=Fe.createTypedArray(f,A);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Me.LINES})})}function Stt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),A=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=A/3;let y=t[u],C=t[(u+1)%f];c[A++]=y.x,c[A++]=y.y,c[A++]=y.z,c[A++]=C.x,c[A++]=C.y,c[A++]=C.z}else{let y=0;if(o===un.GEODESIC)for(u=0;u<f;u++)y+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)y+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(y*3*2),u=0;u<f;++u){h[u]=A/3;let C;o===un.GEODESIC?C=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(C=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let E=C.length;for(let I=0;I<E;++I)c[A++]=C[I]}}f=c.length/6;let g=h.length,m=(f*2+g)*2,_=Fe.createTypedArray(f+g,m);for(A=0,u=0;u<f;++u)_[A++]=u,_[A++]=(u+1)%f,_[A++]=u+f,_[A++]=(u+1)%f+f;for(u=0;u<g;u++){let y=h[u];_[A++]=y,_[A++]=y+f}return new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:_,primitiveType:Me.LINES})})}function RE(e){let t=e.polygonHierarchy,n=e.ellipsoid??te.default,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??un.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=te.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+8}RE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var wtt=te.clone(te.UNIT_SPHERE),Btt={polygonHierarchy:{}};RE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,wtt);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],A=e[t];return l(n)||(n=new RE(Btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=A,n};RE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new RE(t)};RE.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=$n.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=D.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,A=e._perPositionHeightExtrude||!D.equalsEpsilon(f,h,0,D.EPSILON2),g,m;if(A)for(m=0;m<s.length;m++){if(a=Stt(t,s[m],u,o,r),a.geometry=$n.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length/3,E=new Uint8Array(C);e._offsetAttribute===hn.TOP?E=E.fill(1,0,C/2):(g=e._offsetAttribute===hn.NONE?0:1,E=E.fill(g)),a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}else for(m=0;m<s.length;m++){if(a=Ttt(t,s[m],u,o,r),a.geometry.attributes.position.values=xi.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length;g=e._offsetAttribute===hn.NONE?0:1;let E=new Uint8Array(C/3).fill(g);a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}let _=jn.combineInstances(c)[0],y=le.fromVertices(_.attributes.position.values);return new ht({attributes:_.attributes,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:y,offsetAttribute:e._offsetAttribute})};var V3=RE;var fme="Entity polygons cannot have both height and perPositionHeight. height will be ignored",dme="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",hme=new G,mme=d.ZERO,Ame=new d,pme=new ae,Dtt=[],vtt=new k;function Ptt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function zu(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Ptt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(zu.prototype=Object.create(ti.prototype),zu.prototype.constructor=zu);zu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,hme)),l(s)||(s=G.WHITE),o.color=en.fromColor(s)}l(i.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new G3(i):r=new o_(i),new Rt({id:t,geometry:r,attributes:o})};zu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hme),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(o),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new sh(i):a=new V3(i),new Rt({id:t,geometry:a,attributes:s})};zu.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=xs.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Dtt),a=s.length,c=0,u=a-1,f=new k;for(let A=0;A<a;u=A++){let g=s[A],m=s[u],_=g.x*m.y-m.x*g.y,y=k.add(g,m,vtt);y=k.multiplyByScalar(y,_,y),f=k.add(f,y,f),c+=_}let h=1/(c*3);return f=k.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};zu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||Ci.prototype._isHidden.call(this,e,t)};zu.prototype._isOnTerrain=function(e,t){let n=ti.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(je.MINIMUM_VALUE):!0);return n&&!o};zu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.textureCoordinates)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.perPositionHeight)||!j.isConstant(t.closeTop)||!j.isConstant(t.closeBottom)||!j.isConstant(t.zIndex)||!j.isConstant(t.arcType)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};zu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(je.MINIMUM_VALUE),r=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),c=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE),u=j.getValueOrDefault(t.perPositionHeight,je.MINIMUM_VALUE,!1);r=ti.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,yt(fme)),s!==Ze.NONE&&u&&(r=void 0,yt(dme))):(l(a)&&!l(r)&&(r=0),f=ti.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),i.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=j.getValueOrDefault(t.closeTop,je.MINIMUM_VALUE,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,je.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=j.getValueOrDefault(t.arcType,je.MINIMUM_VALUE,un.GEODESIC),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,je.MINIMUM_VALUE),a=ti.getGeometryExtrudedHeight(a,c),a===ti.CLAMP_TO_GROUND){let h=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};zu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};zu.DynamicGeometryUpdater=zb;function zb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(zb.prototype=Object.create(yi.prototype),zb.prototype.constructor=zb);zb.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||yi.prototype._isHidden.call(this,e,t,n)};zb.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=j.getValueOrUndefined(t.hierarchy,n);let o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,n),c=j.getValueOrUndefined(t.perPositionHeight,n);o=ti.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,yt(fme)),r!==Ze.NONE&&c&&(o=void 0,yt(dme))):(l(a)&&!l(o)&&(o=0),u=ti.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=j.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=j.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=j.getValueOrDefault(t.arcType,n,un.GEODESIC),a=ti.getGeometryExtrudedHeight(a,s),a===ti.CLAMP_TO_GROUND){let f=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var H3=zu;function Rtt(e,t,n,i){let o=new En;i.position&&(o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=xi.triangulate(t),u=(a-1)*r*6+c.length*2,f=Fe.createTypedArray(s,u),h,A,g,m,_,y,C=r*2,E=0;for(h=0;h<a-1;h++){for(A=0;A<r-1;A++)g=A*2+h*r*2,y=g+C,m=g+1,_=m+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y;g=r*2-2+h*r*2,m=g+1,_=m+C,y=g+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y}if(i.st||i.tangent||i.bitangent){let S=new Float32Array(s*2),B=1/(a-1),v=1/n.height,P=n.height/2,N,L,p=0;for(h=0;h<a;h++){for(N=h*B,L=v*(t[0].y+P),S[p++]=N,S[p++]=L,A=1;A<r;A++)L=v*(t[A].y+P),S[p++]=N,S[p++]=L,S[p++]=N,S[p++]=L;L=v*(t[0].y+P),S[p++]=N,S[p++]=L}for(A=0;A<r;A++)N=0,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;for(A=0;A<r;A++)N=(a-1)*B,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:new Float32Array(S)})}let I=s-r*2;for(h=0;h<c.length;h+=3){let S=c[h]+I,B=c[h+1]+I,v=c[h+2]+I;f[E++]=S,f[E++]=B,f[E++]=v,f[E++]=v+r,f[E++]=B+r,f[E++]=S+r}let b=new ht({attributes:o,indices:f,boundingSphere:le.fromVertices(e),primitiveType:Me.TRIANGLES});if(i.normal&&(b=jn.computeNormal(b)),i.tangent||i.bitangent){try{b=jn.computeTangentAndBitangent(b)}catch{yt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(b.attributes.tangent=void 0),i.bitangent||(b.attributes.bitangent=void 0),i.st||(b.attributes.st=void 0)}return b}function tv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+Pe.packedLength+2}tv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var gme=te.clone(te.UNIT_SPHERE),_me=new Pe,ev={polylinePositions:void 0,shapePositions:void 0,ellipsoid:gme,vertexFormat:_me,cornerType:void 0,granularity:void 0};tv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,gme);t+=te.packedLength;let c=Pe.unpack(e,t,_me);t+=Pe.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(ev.polylinePositions=r,ev.shapePositions=s,ev.cornerType=u,ev.granularity=f,new tv(ev))};var Mtt=new Xe;tv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Mtt),r=Gm.computePositions(n,i,o,e,!0);return Rtt(r,i,o,e._vertexFormat)};var W3=tv;function Ntt(e,t){let n=new En;n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Fe.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ht({attributes:n,indices:Fe.createTypedArray(o,a),boundingSphere:le.fromVertices(e),primitiveType:Me.LINES})}function iv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+2}iv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var yme=te.clone(te.UNIT_SPHERE),nv={polylinePositions:void 0,shapePositions:void 0,ellipsoid:yme,height:void 0,cornerType:void 0,granularity:void 0};iv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,yme);t+=te.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(nv.polylinePositions=r,nv.shapePositions=s,nv.cornerType=c,nv.granularity=u,new iv(nv))};var Ltt=new Xe;iv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Ltt),r=Gm.computePositions(n,i,o,e,!1);return Ntt(r,i)};var j3=iv;var Cme=new G;function Ott(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function Km(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Ott(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(Km.prototype=Object.create(Ci.prototype),Km.prototype.constructor=Km);Km.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Cme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new W3(this._options),attributes:i})};Km.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Cme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new j3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};Km.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||Ci.prototype._isHidden.call(this,e,t)};Km.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!j.isConstant(t.granularity)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)};Km.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof Jt;o.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(je.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(je.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(je.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(je.MINIMUM_VALUE):void 0};Km.DynamicGeometryUpdater=Vb;function Vb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Vb.prototype=Object.create(yi.prototype),Vb.prototype.constructor=Vb);Vb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||yi.prototype._isHidden.call(this,e,t,n)};Vb.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=j.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=j.getValueOrUndefined(t.shape,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n)};var Y3=Km;var Sq=new d,xme=new d,bme=new d,Tme=new d,Sme=new ae,Ftt=new k,Qtt=new le,ktt=new le;function wme(e,t){let n=new ht({attributes:new En,primitiveType:Me.TRIANGLES});return n.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function Utt(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=Tme,f=bme,h=xme;if(t.normal||t.tangent||t.bitangent)for(let A=0;A<o;A+=3){let g=d.fromArray(e,A,Sq),m=c+1,_=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),J.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[_]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[_]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[_]=u.z),c+=3}return wme(t,{positions:e,normals:r,tangents:s,bitangents:a})}var wq=new d,Bme=new d;function Gtt(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=Tme,A=bme,g=xme;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let _=d.fromArray(e,m,Sq),y=d.fromArray(e,(m+6)%i,wq);if(f){let C=d.fromArray(e,(m+3)%i,Bme);d.subtract(y,_,y),d.subtract(C,_,C),g=d.normalize(d.cross(C,y,g),g),f=!1}d.equalsEpsilon(y,_,D.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(_,h),t.tangent&&(A=d.normalize(d.cross(h,g,A),A))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=A.x,r[c++]=A.y,r[c++]=A.z,r[c++]=A.x,r[c++]=A.y,r[c++]=A.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return wme(t,{positions:e,normals:o,tangents:r,bitangents:s})}function Dme(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let A=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,_=0,y=Sq,C=Ftt,E=Number.MAX_VALUE,I=Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE;for(let x=c;x<u;++x)for(let T=0;T<r;++T)da.computePosition(t,i,n.st,x,T,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y));if(s&&(da.computePosition(t,i,n.st,0,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=C.x,I=C.y,b=C.x,S=C.y)),a&&(da.computePosition(t,i,n.st,o-1,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m]=y.z,n.st&&(g[_++]=C.x,g[_]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y))),n.st&&(E<0||I<0||b>1||S>1))for(let x=0;x<g.length;x+=2)g[x]=(g[x]-E)/(b-E),g[x+1]=(g[x+1]-I)/(S-I);let B=Utt(A,n,i,t.tangentRotationMatrix),v=6*(r-1)*(f-1);s&&(v+=3*(r-1)),a&&(v+=3*(r-1));let P=Fe.createTypedArray(h,v),N=0,L=0,p;for(p=0;p<f-1;++p){for(let x=0;x<r-1;++x){let T=N,w=T+r,M=w+1,O=T+1;P[L++]=T,P[L++]=w,P[L++]=O,P[L++]=O,P[L++]=w,P[L++]=M,++N}++N}if(s||a){let x=h-1,T=h-1;s&&a&&(x=h-2);let w,M;if(N=0,s)for(p=0;p<r-1;p++)w=N,M=w+1,P[L++]=x,P[L++]=w,P[L++]=M,++N;if(a)for(N=(f-1)*r,p=0;p<r-1;p++)w=N,M=w+1,P[L++]=w,P[L++]=T,P[L++]=M,++N}return B.indices=P,n.st&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),B}function Hb(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function Wb(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var Bq=new Pe;function ztt(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let it=Pe.clone(o,Bq);it.normal=!0,e._vertexFormat=it}let h=Dme(e,t);n&&(e._vertexFormat=o);let A=xi.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);A=new Float64Array(A);let g=A.length,m=g*2,_=new Float64Array(m);_.set(A);let y=xi.scaleToGeodeticHeight(h.attributes.position.values,r,a);_.set(y,g),h.attributes.position.values=_;let C=o.normal?new Float32Array(m):void 0,E=o.tangent?new Float32Array(m):void 0,I=o.bitangent?new Float32Array(m):void 0,b=o.st?new Float32Array(m/3*2):void 0,S,B;if(o.normal){for(B=h.attributes.normal.values,C.set(B),f=0;f<g;f++)B[f]=-B[f];C.set(B,g),h.attributes.normal.values=C}if(n){B=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let it=new Float32Array(m);for(f=0;f<g;f++)B[f]=-B[f];it.set(B,g),h.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:it})}let v,P=l(i);if(P){let it=g/3*2,tn=new Uint8Array(it);i===hn.TOP?tn=tn.fill(1,0,it/2):(v=i===hn.NONE?0:1,tn=tn.fill(v)),h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:tn})}if(o.tangent){let it=h.attributes.tangent.values;for(E.set(it),f=0;f<g;f++)it[f]=-it[f];E.set(it,g),h.attributes.tangent.values=E}if(o.bitangent){let it=h.attributes.bitangent.values;I.set(it),I.set(it,g),h.attributes.bitangent.values=I}o.st&&(S=h.attributes.st.values,b.set(S),b.set(S,g/3*2),h.attributes.st.values=b);let N=h.indices,L=N.length,p=g/3,x=Fe.createTypedArray(m/3,L*2);for(x.set(N),f=0;f<L;f+=3)x[f+L]=N[f+2]+p,x[f+1+L]=N[f+1]+p,x[f+2+L]=N[f]+p;h.indices=x;let T=t.northCap,w=t.southCap,M=c,O=2,U=0,Q=4,z=4;T&&(O-=1,M-=1,U+=1,Q-=2,z-=1),w&&(O-=1,M-=1,U+=1,Q-=2,z-=1),U+=O*u+2*M-Q;let F=(U+z)*2,H=new Float64Array(F*3),W=n?new Float32Array(F*3):void 0,Z=P?new Uint8Array(F):void 0,Y=o.st?new Float32Array(F*2):void 0,$=i===hn.TOP;P&&!$&&(v=i===hn.ALL?1:0,Z=Z.fill(v));let X=0,he=0,ge=0,fe=0,ye=u*M,Ie;for(f=0;f<ye;f+=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(w){let it=T?ye+1:ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=ye-u;f<ye;f++)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);for(f=ye-1;f>0;f-=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(T){let it=ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=u-1;f>=0;f--)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);let ve=Gtt(H,o,a);o.st&&(ve.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:Y})),n&&(ve.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:W})),P&&(ve.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:Z}));let Te=Fe.createTypedArray(F,U*6),ke,Ge,qe,tt;g=H.length/3;let $t=0;for(f=0;f<g-1;f+=2){ke=f,tt=(ke+2)%g;let it=d.fromArray(H,ke*3,wq),tn=d.fromArray(H,tt*3,Bme);d.equalsEpsilon(it,tn,D.EPSILON10)||(Ge=(ke+1)%g,qe=(Ge+2)%g,Te[$t++]=ke,Te[$t++]=Ge,Te[$t++]=tt,Te[$t++]=tt,Te[$t++]=Ge,Te[$t++]=qe)}return ve.indices=Te,ve=jn.combineInstances([new Rt({geometry:h}),new Rt({geometry:ve})]),ve[0]}var Vtt=[new d,new d,new d,new d],vme=new Ae,Htt=new Ae;function Dq(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=da.computeOptions(e,t,n,0,Sme,vme),s=r.height,a=r.width,c=Vtt;return da.computePosition(r,i,!1,0,0,c[0]),da.computePosition(r,i,!1,0,a-1,c[1]),da.computePosition(r,i,!1,s-1,0,c[2]),da.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function Xm(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=ae.clone(t),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}Xm.packedLength=ae.packedLength+te.packedLength+Pe.packedLength+7;Xm.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var Pme=new ae,Rme=te.clone(te.UNIT_SPHERE),ny={rectangle:Pme,ellipsoid:Rme,vertexFormat:Bq,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Xm.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Pme);t+=ae.packedLength;let o=te.unpack(e,t,Rme);t+=te.packedLength;let r=Pe.unpack(e,t,Bq);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,A=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=A===-1?void 0:A,n):(ny.granularity=s,ny.height=a,ny.rotation=c,ny.stRotation=u,ny.extrudedHeight=f,ny.shadowVolume=h,ny.offsetAttribute=A===-1?void 0:A,new Xm(ny))};Xm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.ellipsoid??te.default,r=e.rotation??0;return Dq(n,i,r,o,t)};var Wtt=new J,Eme=new Le,jtt=new Ae;Xm.createGeometry=function(e){if(D.equalsEpsilon(e._rectangle.north,e._rectangle.south,D.EPSILON10)||D.equalsEpsilon(e._rectangle.east,e._rectangle.west,D.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=da.computeOptions(t,e._granularity,i,o,Sme,vme,Htt),a=Wtt;if(o!==0||i!==0){let g=ae.center(t,jtt),m=n.geodeticSurfaceNormalCartographic(g,wq);Le.fromAxisAngle(m,-o,Eme),J.fromQuaternion(Eme,a)}else J.clone(J.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!D.equalsEpsilon(c,u,0,D.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,A;if(t=e._rectangle,f){h=ztt(e,s);let g=le.fromRectangle3D(t,n,c,ktt),m=le.fromRectangle3D(t,n,u,Qtt);A=le.union(g,m)}else{if(h=Dme(e,s),h.attributes.position.values=xi.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}A=le.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ht({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Xm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Xm({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};var Ime=new ae,Ytt=[new k,new k,new k],qtt=new Wi,Ktt=new Ae;function Xtt(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,Ime),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=Dq(t,n,o,i,Ime),s=Ytt;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Wi.fromRotation(e._stRotation,qtt),u=ae.center(a,Ktt);for(let m=0;m<3;++m){let _=s[m];_.x-=u.longitude,_.y-=u.latitude,Wi.multiplyByVector(c,_,_),_.x+=u.longitude,_.y+=u.latitude,_.x=(_.x-a.west)/a.width,_.y=(_.y-a.south)/a.height}let f=s[0],h=s[1],A=s[2],g=new Array(6);return k.pack(f,g),k.pack(h,g,2),k.pack(A,g,4),g}Object.defineProperties(Xm.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=Dq(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Xtt(this)),this._textureCoordinateRotationPoints}}});var jb=Xm;var Mme=new G,Nme=d.ZERO,Lme=new d,Ome=new ae,Jtt=new ae,Ztt=new Ae;function $tt(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function hh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new $tt(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(hh.prototype=Object.create(ti.prototype),hh.prototype.constructor=hh);hh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Mme)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new jb(this._options),attributes:i})};hh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Mme),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new tb(this._options),attributes:r})};hh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.rectangle.coordinates,e,Jtt);if(!l(n))return;let i=ae.center(n,Ztt);return Ae.toCartesian(i,te.default,t)};hh.prototype._isHidden=function(e,t){return!l(t.coordinates)||Ci.prototype._isHidden.call(this,e,t)};hh.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.rotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};hh.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),o=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),r=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(je.MINIMUM_VALUE,a.rectangle),a.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),a.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),a.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),a.offsetAttribute=ti.computeGeometryOffsetAttribute(i,o,r,s),a.height=ti.getGeometryHeight(i,o),r=ti.getGeometryExtrudedHeight(r,s),r===ti.CLAMP_TO_GROUND&&(r=wi.getMinimumMaximumHeights(jb.computeRectangle(a,Ome)).minimumTerrainHeight),a.extrudedHeight=r};hh.DynamicGeometryUpdater=Yb;function Yb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Yb.prototype=Object.create(yi.prototype),Yb.prototype.constructor=Yb);Yb.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||yi.prototype._isHidden.call(this,e,t,n)};Yb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=j.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(jb.computeRectangle(i,Ome)).minimumTerrainHeight),i.extrudedHeight=s};var q3=hh;var Fme={};function ent(e,t){return D.equalsEpsilon(e.latitude,t.latitude,D.EPSILON10)&&D.equalsEpsilon(e.longitude,t.longitude,D.EPSILON10)}var tnt=new Ae,nnt=new Ae;function int(e,t,n,i){t=No(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,tnt);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let A=c[0],g=u[0],m=A===g,_=1;for(let y=1;y<o;++y){let C=t[y],E=e.cartesianToCartographic(C,nnt);s&&(E.height=n[y]),m=m&&E.height===0,ent(h,E)?h.height<E.height&&(c[_-1]=E.height):(a[_]=C,c[_]=E.height,r?u[_]=i[y]:u[_]=0,m=m&&c[_]===u[_],Ae.clone(E,h),++_)}if(!(m||_<2))return a.length=_,c.length=_,u.length=_,{positions:a,topHeights:c,bottomHeights:u}}var ont=new Array(2),rnt=new Array(2),snt={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};Fme.computePositions=function(e,t,n,i,o,r){let s=int(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=D.chordLength(o,e.maximumRadius),A=snt;if(A.minDistance=h,A.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Xi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let _=ont,y=rnt;A.positions=_,A.height=y;let C=0;for(m=0;m<a-1;m++){_[0]=t[m],_[1]=t[m+1],y[0]=n[m],y[1]=n[m+1];let E=Xi.generateArc(A);u.set(E,C),y[0]=i[m],y[1]=i[m+1],f.set(Xi.generateArc(A),C),C+=E.length}}else A.positions=t,A.height=n,u=new Float64Array(Xi.generateArc(A)),A.height=i,f=new Float64Array(Xi.generateArc(A));return{bottomPositions:f,topPositions:u,numCorners:c}};var qb=Fme;var vq=new d,K3=new d,ant=new d,Qme=new d,cnt=new d,lnt=new d,unt=new d;function ME(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??Pe.DEFAULT,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Pe.clone(o),this._granularity=r,this._ellipsoid=te.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+te.packedLength+Pe.packedLength+1}ME.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._granularity,t};var kme=te.clone(te.UNIT_SPHERE),Ume=new Pe,ov={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:kme,vertexFormat:Ume,granularity:void 0};ME.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,kme);t+=te.packedLength;let u=Pe.unpack(e,t,Ume);t+=Pe.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._vertexFormat=Pe.clone(u,n._vertexFormat),n._granularity=f,n):(ov.positions=r,ov.minimumHeights=s,ov.maximumHeights=a,ov.granularity=f,new ME(ov))};ME.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new ME(c)};ME.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=qb.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,A=h*2,g=o.position?new Float64Array(A):void 0,m=o.normal?new Float32Array(A):void 0,_=o.tangent?new Float32Array(A):void 0,y=o.bitangent?new Float32Array(A):void 0,C=o.st?new Float32Array(A/3*2):void 0,E=0,I=0,b=0,S=0,B=0,v=unt,P=lnt,N=cnt,L=!0;h/=3;let p,x=0,T=1/(h-f-1);for(p=0;p<h;++p){let Q=p*3,z=d.fromArray(u,Q,vq),F=d.fromArray(c,Q,K3);if(o.position&&(g[E++]=F.x,g[E++]=F.y,g[E++]=F.z,g[E++]=z.x,g[E++]=z.y,g[E++]=z.z),o.st&&(C[B++]=x,C[B++]=0,C[B++]=x,C[B++]=1),o.normal||o.tangent||o.bitangent){let H=d.clone(d.ZERO,Qme),W=d.subtract(z,s.geodeticSurfaceNormal(z,K3),K3);if(p+1<h&&(H=d.fromArray(u,Q+3,Qme)),L){let Z=d.subtract(H,z,ant),Y=d.subtract(W,z,vq);v=d.normalize(d.cross(Y,Z,v),v),L=!1}d.equalsEpsilon(z,H,D.EPSILON10)?L=!0:(x+=T,o.tangent&&(P=d.normalize(d.subtract(H,z,P),P)),o.bitangent&&(N=d.normalize(d.cross(v,P,N),N))),o.normal&&(m[I++]=v.x,m[I++]=v.y,m[I++]=v.z,m[I++]=v.x,m[I++]=v.y,m[I++]=v.z),o.tangent&&(_[S++]=P.x,_[S++]=P.y,_[S++]=P.z,_[S++]=P.x,_[S++]=P.y,_[S++]=P.z),o.bitangent&&(y[b++]=N.x,y[b++]=N.y,y[b++]=N.z,y[b++]=N.x,y[b++]=N.y,y[b++]=N.z)}}let w=new En;o.position&&(w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),o.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:y})),o.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C}));let M=A/3;A-=6*(f+1);let O=Fe.createTypedArray(M,A),U=0;for(p=0;p<M-2;p+=2){let Q=p,z=p+2,F=d.fromArray(g,Q*3,vq),H=d.fromArray(g,z*3,K3);if(d.equalsEpsilon(F,H,D.EPSILON10))continue;let W=p+1,Z=p+3;O[U++]=W,O[U++]=Q,O[U++]=Z,O[U++]=Z,O[U++]=Q,O[U++]=z}return new ht({attributes:w,indices:O,primitiveType:Me.TRIANGLES,boundingSphere:new le.fromVertices(g)})};var X3=ME;var Gme=new d,zme=new d;function NE(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=te.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+te.packedLength+1}NE.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n]=e._granularity,t};var Vme=te.clone(te.UNIT_SPHERE),rv={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:Vme,granularity:void 0};NE.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,Vme);t+=te.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._granularity=u,n):(rv.positions=r,rv.minimumHeights=s,rv.maximumHeights=a,rv.granularity=u,new NE(rv))};NE.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new NE(c)};NE.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=qb.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),A=0;u/=3;let g;for(g=0;g<u;++g){let E=g*3,I=d.fromArray(c,E,Gme),b=d.fromArray(a,E,zme);h[A++]=b.x,h[A++]=b.y,h[A++]=b.z,h[A++]=I.x,h[A++]=I.y,h[A++]=I.z}let m=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})}),_=f/3;f=2*_-4+_;let y=Fe.createTypedArray(_,f),C=0;for(g=0;g<_-2;g+=2){let E=g,I=g+2,b=d.fromArray(h,E*3,Gme),S=d.fromArray(h,I*3,zme);if(d.equalsEpsilon(b,S,D.EPSILON10))continue;let B=g+1,v=g+3;y[C++]=B,y[C++]=E,y[C++]=B,y[C++]=v,y[C++]=E,y[C++]=I}return y[C++]=_-2,y[C++]=_-1,new ht({attributes:m,indices:y,primitiveType:Me.LINES,boundingSphere:new le.fromVertices(h)})};var J3=NE;var Hme=new G;function fnt(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function mh(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new fnt(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(mh.prototype=Object.create(Ci.prototype),mh.prototype.constructor=mh);mh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Hme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new X3(this._options),attributes:i})};mh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Hme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new J3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};mh.prototype._isHidden=function(e,t){return!l(t.positions)||Ci.prototype._isHidden.call(this,e,t)};mh.prototype._getIsClosed=function(e){return!1};mh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.minimumHeights)||!j.isConstant(t.maximumHeights)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.granularity)};mh.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof Jt,s=this._options;s.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(je.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(je.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(je.MINIMUM_VALUE):void 0};mh.DynamicGeometryUpdater=Kb;function Kb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Kb.prototype=Object.create(yi.prototype),Kb.prototype.constructor=Kb);Kb.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||yi.prototype._isHidden.call(this,e,t,n)};Kb.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=j.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=j.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=j.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=j.getValueOrUndefined(t.granularity,n)};var Z3=mh;var LE=[rO,f3,i3,M3,N3,U3,H3,Y3,q3,Z3];function OE(e,t){this.entity=e,this.scene=t;let n=new Array(LE.length),i=new _e,o=new Lr;for(let r=0;r<n.length;r++){let s=new LE[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(OE.prototype._onEntityPropertyChanged,this)}OE.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};OE.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};OE.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};OE.registerUpdater=function(e){LE.includes(e)||LE.push(e)};OE.unregisterUpdater=function(e){if(LE.includes(e)){let t=LE.indexOf(e);LE.splice(t,1)}};var Xb=OE;var Wme=new G,dnt=new Ut,hnt=new Ut,mnt=d.ZERO,Ant=new d;function Ah(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(Ah.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}Ah.prototype.onMaterialChanged=function(){this.invalidated=!0};Ah.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};Ah.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Ah.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Ah.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let y=u.fillMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof Jt&&(!u.depthFailMaterialProperty.isConstant||c)){let y=u.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,hnt,dnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,mnt,Ant);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Ah.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Ah.prototype.contains=function(e){return this.updaters.contains(e.id)};Ah.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ah.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function Jb(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Jb.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new Ah(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function jme(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}Jb.prototype.remove=function(e){jme(this._solidItems,e)||jme(this._translucentItems,e)};function Yme(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function $3(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}Jb.prototype.update=function(e){let t=$3(this,this._solidItems,e,!0);t=$3(this,this._translucentItems,e,t)&&t;let n=Yme(this,this._solidItems,e),i=Yme(this,this._translucentItems,e);return(n||i)&&(t=$3(this,this._solidItems,e,t)&&t,t=$3(this,this._translucentItems,e,t)&&t),t};function qme(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return mt.FAILED}Jb.prototype.getBoundingSphere=function(e,t){let n=qme(this._solidItems,e,t);return n===mt.FAILED?qme(this._translucentItems,e,t):n};function Kme(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}Jb.prototype.removeAllPrimitives=function(){Kme(this._solidItems),Kme(this._translucentItems)};var ph=Jb;var pnt=new Ut,gnt=new Ut,_nt=d.ZERO,ynt=new d;function gh(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(gh.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt}gh.prototype.onMaterialChanged=function(){this.invalidated=!0};gh.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};gh.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty)||!j.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};gh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Cnt=new G;gh.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new kn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof Jt&&!c.depthFailMaterialProperty.isConstant){let y=c.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Cnt);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,gnt,pnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=c.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,_nt,ynt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};gh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};gh.prototype.contains=function(e){return this.updaters.contains(e.id)};gh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};gh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function Zb(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Zb.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new gh(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};Zb.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};Zb.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};Zb.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};Zb.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var _h=Zb;function eU(e,t,n=0,i=e.length-1,o=Ent){for(;i>n;){if(i-n>600){let c=i-n+1,u=t-n+1,f=Math.log(c),h=.5*Math.exp(2*f/3),A=.5*Math.sqrt(f*h*(c-h)/c)*(u-c/2<0?-1:1),g=Math.max(n,Math.floor(t-u*h/c+A)),m=Math.min(i,Math.floor(t+(c-u)*h/c+A));eU(e,t,g,m,o)}let r=e[t],s=n,a=i;for(sv(e,n,t),o(e[i],r)>0&&sv(e,n,i);s<a;){for(sv(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?sv(e,n,a):(a++,sv(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function sv(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ent(e,t){return e<t?-1:e>t?1:0}var lv=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!nU(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;nU(t,c)&&(n.leaf?i.push(a):Rq(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!nU(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(nU(t,s)){if(n.leaf||Rq(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=eT([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,u;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),u=!0),i.leaf){let f=Int(t,i.children,n);if(f!==-1)return i.children.splice(f,1),r.push(i),this._condense(r),this}!u&&!i.leaf&&Rq(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],u=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=eT(t.slice(n,i+1)),$b(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=eT([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),u=c*Math.ceil(Math.sqrt(s));Xme(t,n,i,u,this.compareMinX);for(let f=n;f<=i;f+=u){let h=Math.min(f+u-1,i);Xme(t,f,h,c,this.compareMinY);for(let A=f;A<=h;A+=c){let g=Math.min(A+c-1,h);a.children.push(this._build(t,A,g,o-1))}}return $b(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let u=n.children[c],f=Pq(u),h=Tnt(t,u)-f;h<s?(s=h,r=f<r?f:r,a=u):h===s&&f<r&&(r=f,a=u)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),cv(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=eT(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,$b(i,this.toBBox),$b(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=eT([t,n]),this.data.height=t.height+1,this.data.leaf=!1,$b(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=av(t,0,a,this.toBBox),u=av(t,a,i,this.toBBox),f=Snt(c,u),h=Pq(c)+Pq(u);f<r?(r=f,o=a,s=h<s?h:s):f===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:xnt,r=t.leaf?this.compareMinY:bnt,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=av(t,0,n,r),a=av(t,i-n,i,r),c=tU(s)+tU(a);for(let u=n;u<i-n;u++){let f=t.children[u];cv(s,t.leaf?r(f):f),c+=tU(s)}for(let u=i-n-1;u>=n;u--){let f=t.children[u];cv(a,t.leaf?r(f):f),c+=tU(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)cv(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():$b(t[n],this.toBBox)}};function Int(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function $b(e,t){av(e,0,e.children.length,t,e)}function av(e,t,n,i,o){o||(o=eT(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];cv(o,e.leaf?i(s):s)}return o}function cv(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function xnt(e,t){return e.minX-t.minX}function bnt(e,t){return e.minY-t.minY}function Pq(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function tU(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Tnt(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Snt(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function Rq(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function nU(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function eT(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Xme(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;eU(e,s,t,n,o),r.push(t,s,s,n)}}function iU(){this._tree=new lv}function FE(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}FE.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};iU.prototype.insert=function(e,t){let n=FE.fromRectangleAndId(e,t,new FE);this._tree.insert(n)};function wnt(e,t){return e.id===t.id}var Bnt=new FE;iU.prototype.remove=function(e,t){let n=FE.fromRectangleAndId(e,t,Bnt);this._tree.remove(n,wnt)};var Dnt=new FE;iU.prototype.collides=function(e){let t=FE.fromRectangleAndId("",e,Dnt);return this._tree.collides(t)};var tT=iU;var vnt=new G,Pnt=new Ut,Rnt=new Ut;function Lp(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new tT}Lp.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Lp.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Lp.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Lp.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Ll({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let _=u.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,vnt);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Rnt,Pnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Lp.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Lp.prototype.contains=function(e){return this.updaters.contains(e.id)};Lp.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),mt.DONE):mt.FAILED};Lp.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function nT(e,t){this._batches=[],this._primitives=e,this._classificationType=t}nT.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=j.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Lp(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};nT.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};nT.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};nT.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};nT.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var uv=nT;var Mnt=new Ut,Nnt=new Ut;function Jm(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new tT}Jm.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Jm.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Jm.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Jm.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};Jm.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material),n=new Ll({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Nnt,Mnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Jm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Jm.prototype.contains=function(e){return this.updaters.contains(e.id)};Jm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Jm.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function iT(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}iT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=xf.shouldUseSphericalCoordinates(o.geometry.rectangle),s=j.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new Jm(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};iT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};iT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};iT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};iT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var oU=iT;var Lnt=new G,Ont=new Ut,Fnt=new Ut,Qnt=d.ZERO,knt=new d;function Op(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.itemsToRemove=[],this.subscriptions=new Pt,this.showsUpdated=new Pt}Op.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Op.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Op.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new gn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let y=u.outlineColorProperty,C=j.getValueOrDefault(y,e,G.WHITE,Lnt);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let A=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Fnt,Ont);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Qnt,knt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Op.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Op.prototype.contains=function(e){return this.updaters.contains(e.id)};Op.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Op.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function oT(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new Pt,this._translucentBatches=new Pt}oT.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};oT.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};oT.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};oT.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return mt.FAILED};oT.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var fv=oT;var Unt=[];function su(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o=Dn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=_r.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new fv(n,e,s,!1),this._outlineBatches[o+s]=new fv(n,e,s,!0),this._closedColorBatches[s]=new ph(n,gn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new ph(n,gn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new _h(n,Io,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new _h(n,Io,void 0,!0,s,!1),this._openColorBatches[s]=new ph(n,gn,void 0,!1,s,!0),this._openColorBatches[o+s]=new ph(n,gn,void 0,!1,s,!1),this._openMaterialBatches[s]=new _h(n,Io,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new _h(n,Io,void 0,!1,s,!1);let a=Jn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new oU(i,s,Io)),c[s]=new uv(i,s);else for(s=0;s<a;++s)c[s]=new uv(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new Nb(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new Pt,this._updaterSets=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(su.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,Unt)}su.registerUpdater=function(e){Xb.registerUpdater(e)};su.unregisterUpdater=function(e){Xb.unregisterUpdater(e)};su.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(_){h._removeUpdater(_),h._insertUpdaterIntoBatch(e,_)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new Xb(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(_){h._insertUpdaterIntoBatch(e,_)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(su._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let A=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)A=g[a].update(e)&&A;return A};var Gnt=[],znt=new le;su.prototype.getBoundingSphere=function(e,t){let n=Gnt,i=znt,o=0,r=mt.DONE,s=this._batches,a=s.length,c=e.id,u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let A=0;A<a;A++){if(r=s[A].getBoundingSphere(h,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};su.prototype.isDestroyed=function(){return!1};su.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(su.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};su.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};su.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Dn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof Jt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};su._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};su.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var rU=su;var Vnt=1,Hnt="30px sans-serif",Wnt=ar.FILL,jnt=G.WHITE,Ynt=G.BLACK,qnt=1,Knt=!1,Xnt=new G(.165,.165,.165,.8),Jnt=new k(7,5),Znt=k.ZERO,$nt=d.ZERO,eit=Ze.NONE,tit=Ri.CENTER,nit=Wn.CENTER,iit=new d,oit=new G,rit=new G,sit=new G,ait=new k,cit=new d,lit=new k,uit=new Yt,fit=new Yt,dit=new Yt,hit=new Ut;function Jme(e){this.entity=e,this.label=void 0,this.index=void 0}function iy(e,t){t.collectionChanged.addEventListener(iy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}iy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,iit),c=j.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){Mq(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let A=!1,g=j.getValueOrDefault(a._heightReference,e,eit);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,A=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=j.getValueOrDefault(a._scale,e,Vnt),u.font=j.getValueOrDefault(a._font,e,Hnt),u.style=j.getValueOrDefault(a._style,e,Wnt),u.fillColor=j.getValueOrDefault(a._fillColor,e,jnt,oit),u.outlineColor=j.getValueOrDefault(a._outlineColor,e,Ynt,rit),u.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,qnt),u.showBackground=j.getValueOrDefault(a._showBackground,e,Knt),u.backgroundColor=j.getValueOrDefault(a._backgroundColor,e,Xnt,sit),u.backgroundPadding=j.getValueOrDefault(a._backgroundPadding,e,Jnt,ait),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,Znt,lit),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,$nt,cit),u.heightReference=g,u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,tit),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,nit),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,uit),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,fit),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,dit),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,hit),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),A&&u._updateClamping()}return!0};iy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return mt.FAILED;let i=n.label;return t.center=d.clone(i._clampedPosition??i.position,t.center),t.radius=0,mt.DONE};iy.prototype.isDestroyed=function(){return!1};iy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(iy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};iy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new Jme(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Jme(r)):(Mq(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Mq(s.get(r.id),r,a),s.remove(r.id)};function Mq(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var sU=iy;var mit=1,Ait=!0,pit=0,git=!0,_it=!0,yit=Dn.ENABLED,Cit=Ze.NONE,Eit=G.RED,Iit=0,xit=G.WHITE,bit=al.HIGHLIGHT,Tit=.5,Sit=new k(1,1),Zme={maximumPositionEpsilon:Number.POSITIVE_INFINITY},wit=new R,Bit=new R,$me=new G,eAe=new Array(4),Dit=new d;function oy(e,t){t.collectionChanged.addEventListener(oy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}async function vit(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Mm.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}oy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,wit),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u?.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...Zme}},n[s.id]=u;let m=j.getValueOrDefault(a._incrementallyLoadTextures,e,git),_=j.getValueOrDefault(a._environmentMapOptions,e,Zme,u.environmentMapOptionsScratch);vit(this,s,c,m,_)}let A=u.modelPrimitive;if(!l(A))continue;A.show=!0,A.scale=j.getValueOrDefault(a._scale,e,mit),A.enableVerticalExaggeration=j.getValueOrDefault(a._enableVerticalExaggeration,e,Ait),A.minimumPixelSize=j.getValueOrDefault(a._minimumPixelSize,e,pit),A.maximumScale=j.getValueOrUndefined(a._maximumScale,e),A.modelMatrix=R.clone(h,A.modelMatrix),A.shadows=j.getValueOrDefault(a._shadows,e,yit),A.heightReference=j.getValueOrDefault(a._heightReference,e,Cit),A.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e),A.silhouetteColor=j.getValueOrDefault(a._silhouetteColor,e,Eit,$me),A.silhouetteSize=j.getValueOrDefault(a._silhouetteSize,e,Iit),A.color=j.getValueOrDefault(a._color,e,xit,$me),A.colorBlendMode=j.getValueOrDefault(a._colorBlendMode,e,bit),A.colorBlendAmount=j.getValueOrDefault(a._colorBlendAmount,e,Tit),A.clippingPlanes=j.getValueOrUndefined(a._clippingPlanes,e),A.clampAnimations=j.getValueOrDefault(a._clampAnimations,e,_it),A.imageBasedLighting.imageBasedLightingFactor=j.getValueOrDefault(a._imageBasedLightingFactor,e,Sit);let g=j.getValueOrUndefined(a._lightColor,e);if(l(g)&&(G.pack(g,eAe,0),g=d.unpack(eAe,0,Dit)),A.lightColor=g,A.customShader=j.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,A.ready){let m=j.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?A.activeAnimations.addAll({loop:vu.REPEAT}):A.activeAnimations.removeAll(),u.animationsRunning=m);let _=j.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(_)){let E=Object.keys(_);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=_[S];if(!l(B))continue;let v=A.getNode(S);if(!l(v))continue;let P=R.fromTranslationRotationScale(B,Bit);v.matrix=R.multiply(v.originalMatrix,P,P)}}let y=!1,C=j.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(C)){let E=Object.keys(C);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=C[S];l(B)&&(y=!0,A.setArticulationStage(S,B))}}y&&A.applyArticulations()}}return!0};oy.prototype.isDestroyed=function(){return!1};oy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(oy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)Nq(this,e[i],t,n);return ue(this)};var aU=new d,Pit=new Ae;oy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return mt.FAILED;if(n.loadFailed)return mt.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return mt.PENDING;if(!i.ready||!n.modelUpdated)return mt.PENDING;let o=this._scene,r=o.ellipsoid??te.default;if(i.heightReference!==Ze.NONE){let a=i.modelMatrix;aU.x=a[12],aU.y=a[13],aU.z=a[14];let c=r.cartesianToCartographic(aU,Pit),u=o.getHeight(c,i.heightReference);return l(u)&&(_f(i.heightReference)?c.height=u:c.height+=u),le.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),mt.DONE}return le.clone(i.boundingSphere,t),mt.DONE};oy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(Rit(r,a),s.set(r.id,r)):(Nq(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Nq(this,r,a,c),s.remove(r.id)};function Nq(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function Rit(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var cU=oy;function ry(e){this._definitionChanged=new _e,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(ry.prototype,{isConstant:{get:function(){return j.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:eo.FIXED}}});var Mit=new K;ry.prototype.getValue=function(e,t){return l(e)||(e=K.now(Mit)),this.getValueInReferenceFrame(e,eo.FIXED,t)};ry.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};ry.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?te.default.scaleToGeodeticSurface(n,n):void 0};ry.prototype.equals=function(e){return this===e||e instanceof ry&&this._value===e._value};ry.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Fp=ry;var Nit=60,Lit=1,nAe=new Rn,Lq=new Rn,Oq=new Rn;function tAe(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Oit(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||K.lessThanOrEquals(o,t)||K.greaterThanOrEquals(o,n),A=0,g=i.length,m=i[A],_=n,y=!1,C,E,I;for(;A<g;){if(!h&&K.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),K.greaterThan(m,t)&&K.lessThan(m,_)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),A<g-1){if(s>0&&!y){let b=i[A+1],S=K.secondsDifference(b,m);y=S>s,y&&(C=Math.ceil(S/s),E=0,I=S/Math.max(C,2),C=Math.max(C-1,1))}if(y&&E<C){m=K.addSeconds(m,I,new K),E++;continue}}y=!1,A++,m=i[A]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function Fit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!A&&K.greaterThanOrEquals(h,i)&&(A=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,r*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function Qit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=Math.max(r,60),g=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!g&&K.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,A*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function kit(e,t,n,i,o,r,s,a){Oq.start=t,Oq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Oq,nAe).isEmpty){let A=h.start;h.isStartIncluded||(h.isStopIncluded?A=h.stop:A=K.addSeconds(h.start,K.secondsDifference(h.stop,h.start)/2,new K));let g=e.getValueInReferenceFrame(A,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function Uit(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function Git(e,t,n,i,o,r,s,a){Lq.start=t,Lq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Lq,nAe).isEmpty){let A=h.start,g=h.stop,m=t;K.greaterThan(A,m)&&(m=A);let _=n;K.lessThan(g,_)&&(_=g),c=iAe(h.data,m,_,i,o,r,c,a)}}return c}function iAe(e,t,n,i,o,r,s,a){for(;e instanceof q_;)e=e.resolvedProperty;if(e instanceof ic){let c=e._property._times;s=Oit(e,t,n,c,i,o,r,s,a)}else e instanceof sO?s=Fit(e,t,n,i,o,r,s,a):e instanceof nc?s=Git(e,t,n,i,o,r,s,a):e instanceof X_?s=kit(e,t,n,i,o,r,s,a):e instanceof Ol||e instanceof Fp&&j.isConstant(e)?s=Uit(e,t,n,i,o,r,s,a):s=Qit(e,t,n,i,o,r,s,a);return s}function oAe(e,t,n,i,o,r,s){l(s)||(s=[]);let a=iAe(e,t,n,i,o,r,0,s);return s.length=a,s}var zit=new J;function dv(e,t){this._unusedIndexes=[],this._polylineCollection=new Fm,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}dv.prototype.update=function(e){if(this._referenceFrame===eo.INERTIAL){let t=kt.computeIcrfToCentralBodyFixedMatrix(e,zit);R.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};dv.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=j.getValueOrUndefined(i._leadTime,e),A=j.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),_=l(h),y=l(A);if(u=m||_&&y,u){if(y&&(r=K.addSeconds(e,-A,new K)),_&&(s=K.addSeconds(e,h,new K)),m){let C=g.start,E=g.stop;(!y||K.greaterThan(C,r))&&(r=C),(!_||K.lessThan(E,s))&&(s=E)}u=K.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=j.getValueOrDefault(i._resolution,e,Nit);c.show=!0,c.positions=oAe(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=gr.getValue(e,i._material,c.material),c.width=j.getValueOrDefault(i._width,e,Lit),c.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};dv.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};dv.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function sy(e,t){t.collectionChanged.addEventListener(sy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}sy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=eo.FIXED;this._scene.mode===ie.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new dv(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};sy.prototype.isDestroyed=function(){return!1};sy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(sy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};sy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new tAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new tAe(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};sy._subSample=oAe;var lU=sy;var rAe=G.WHITE,sAe=G.BLACK,aAe=0,cAe=1,lAe=0,uAe=wr.NONE,fAe=new G,Vit=new d,dAe=new G,hAe=new Yt,mAe=new Yt,AAe=new Ut;function pAe(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function ay(e,t){t.collectionChanged.addEventListener(ay.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}ay.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=j.getValueOrDefault(a._heightReference,e,Ze.NONE),h=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),A;if(h&&(A=j.getValueOrUndefined(s._position,e,Vit),h=l(A)),!h){hv(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==Ze.NONE&&!l(u)?(l(c)&&(hv(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,A)&&u.heightReference===f):f===Ze.NONE&&!l(c)&&(l(u)&&(hv(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=A,c.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),c.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),c.color=j.getValueOrDefault(a._color,e,rAe,fAe),c.outlineColor=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),c.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,aAe),c.pixelSize=j.getValueOrDefault(a._pixelSize,e,cAe),c.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),c.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),c.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe);else if(l(u)){u.show=!0,u.position=A,u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),u.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe),u.heightReference=f;let _=j.getValueOrDefault(a._color,e,rAe,fAe),y=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),C=Math.round(j.getValueOrDefault(a._outlineWidth,e,aAe)),E=Math.max(1,Math.round(j.getValueOrDefault(a._pixelSize,e,cAe)));if(C>0?(u.scale=1,g=g||C!==r.outlineWidth||E!==r.pixelSize||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)):(u.scale=E/50,E=50,g=g||C!==r.outlineWidth||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)),g){r.color=G.clone(_,r.color),r.outlineColor=G.clone(y,r.outlineColor),r.pixelSize=E,r.outlineWidth=C;let I=_.alpha,b=_.toCssColorString(),S=y.toCssColorString(),B=JSON.stringify([b,E,S,C]);u.setImage(B,Hx(I,b,S,C,E))}m&&u._updateClamping()}}return!0};ay.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return mt.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};ay.prototype.isDestroyed=function(){return!1};ay.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(ay.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};ay.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new pAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new pAe(r)):(hv(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],hv(s.get(r.id),r,a),s.remove(r.id)};function hv(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var uU=ay;var EAe=[];function Hit(e,t,n,i,o){let r=EAe;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,A=i.green,g=i.blue,m=i.alpha;if(G.equals(n,i)){for(s=0;s<o;s++)r[s]=G.clone(n);return r}let _=(h-a)/o,y=(A-c)/o,C=(g-u)/o,E=(m-f)/o;for(s=0;s<o;s++)r[s]=new G(a+s*_,c+s*y,u+s*C,f+s*E);return r}function mv(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*G.packedLength:1,this.packedLength=r+te.packedLength+Pe.packedLength+4}mv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var IAe=te.clone(te.UNIT_SPHERE),xAe=new Pe,QE={positions:void 0,colors:void 0,ellipsoid:IAe,vertexFormat:xAe,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};mv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t,IAe);t+=te.packedLength;let c=Pe.unpack(e,t,xAe);t+=Pe.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],A=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=A,n):(QE.positions=r,QE.colors=s,QE.width=u,QE.colorsPerVertex=f,QE.arcType=h,QE.granularity=A,new mv(QE))};var gAe=new d,_Ae=new d,yAe=new d,CAe=new d;mv.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],A=No(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let M=0,O=h[0];i=i.filter(function(U,Q){let z=!1;return o?z=Q===O||Q===0&&O===1:z=Q+1===O,z?(M++,O=h[M],!1):!0})}let g=A.length;if(g<2||t<=0)return;if(r===un.GEODESIC||r===un.RHUMB){let M,O;r===un.GEODESIC?(M=D.chordLength(s,a.maximumRadius),O=Xi.numberOfPoints):(M=s,O=Xi.numberOfPointsRhumbLine);let U=Xi.extractHeights(A,a);if(l(i)){let Q=1;for(c=0;c<g-1;++c)Q+=O(A[c],A[c+1],M);let z=new Array(Q),F=0;for(c=0;c<g-1;++c){let H=A[c],W=A[c+1],Z=i[c],Y=O(H,W,M);if(o&&c<Q){let $=i[c+1],X=Hit(H,W,Z,$,Y),he=X.length;for(u=0;u<he;++u)z[F++]=X[u]}else for(u=0;u<Y;++u)z[F++]=G.clone(Z)}z[F]=G.clone(i[i.length-1]),i=z,EAe.length=0}r===un.GEODESIC?A=Xi.generateCartesianArc({positions:A,minDistance:M,ellipsoid:a,height:U}):A=Xi.generateCartesianRhumbArc({positions:A,granularity:M,ellipsoid:a,height:U})}g=A.length;let m=g*4-4,_=new Float64Array(m*3),y=new Float64Array(m*3),C=new Float64Array(m*3),E=new Float32Array(m*2),I=n.st?new Float32Array(m*2):void 0,b=l(i)?new Uint8Array(m*4):void 0,S=0,B=0,v=0,P=0,N;for(u=0;u<g;++u){u===0?(N=gAe,d.subtract(A[0],A[1],N),d.add(A[0],N,N)):N=A[u-1],d.clone(N,yAe),d.clone(A[u],_Ae),u===g-1?(N=gAe,d.subtract(A[g-1],A[g-2],N),d.add(A[g-1],N,N)):N=A[u+1],d.clone(N,CAe);let M,O;l(b)&&(u!==0&&!o?M=i[u-1]:M=i[u],u!==g-1&&(O=i[u]));let U=u===0?2:0,Q=u===g-1?2:4;for(f=U;f<Q;++f){d.pack(_Ae,_,S),d.pack(yAe,y,S),d.pack(CAe,C,S),S+=3;let z=f-2<0?-1:1;if(E[B++]=2*(f%2)-1,E[B++]=z*t,n.st&&(I[v++]=u/(g-1),I[v++]=Math.max(E[B-2],0)),l(b)){let F=f<2?M:O;b[P++]=G.floatToByte(F.red),b[P++]=G.floatToByte(F.green),b[P++]=G.floatToByte(F.blue),b[P++]=G.floatToByte(F.alpha)}}}let L=new En;L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:_}),L.prevPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),L.nextPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C}),L.expandAndWidth=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:E}),n.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:I})),l(b)&&(L.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0}));let p=Fe.createTypedArray(m,g*6-6),x=0,T=0,w=g-1;for(u=0;u<w;++u)p[T++]=x,p[T++]=x+2,p[T++]=x+1,p[T++]=x+1,p[T++]=x+2,p[T++]=x+3,x+=4;return new ht({attributes:L,indices:p,primitiveType:Me.TRIANGLES,boundingSphere:le.fromPoints(A),geometryType:Ld.POLYLINES})};var cy=mv;var Wit=new ci(0),fU={},bAe=new G,jit=new Jt(G.WHITE),Yit=new ci(!0),qit=new ci(Dn.DISABLED),Kit=new ci(new Ut),Xit=new ci(Jn.BOTH);function Jit(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function Zit(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function yh(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(yh.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new Jit,this._groundGeometryOptions=new Zit,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=_r.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(yh.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});yh.prototype.isOutlineVisible=function(e){return!1};yh.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};yh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof Jt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)),this.clampToGround?new Rt({id:t,geometry:new bI(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof Jt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.depthFailColor=en.fromColor(a)),new Rt({id:t,geometry:new cy(this._geometryOptions),attributes:s}))};yh.prototype.createOutlineGeometryInstance=function(e){};yh.prototype.isDestroyed=function(){return!1};yh.prototype.destroy=function(){this._entitySubscription(),ue(this)};yh.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(je.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??jit,u=c instanceof Jt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??Yit,this._shadowsProperty=o.shadows??qit,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??Kit,this._classificationTypeProperty=o.classificationType??Xit,this._fillEnabled=!0,this._zIndex=a??Wit;let f=o.width,h=o.arcType,A=o.clampToGround,g=o.granularity;if(!r.isConstant||!j.isConstant(f)||!j.isConstant(h)||!j.isConstant(g)||!j.isConstant(A)||!j.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,_=r.getValue(je.MINIMUM_VALUE,m.positions);if(!l(_)||_.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let y;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof Jt)?y=bs.VERTEX_FORMAT:y=Za.VERTEX_FORMAT,m.vertexFormat=y,m.positions=_,m.width=l(f)?f.getValue(je.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(je.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(je.MINIMUM_VALUE):void 0;let C=this._groundGeometryOptions;C.positions=_,C.width=m.width,C.arcType=m.arcType,C.granularity=m.granularity,this._clampToGround=l(A)?A.getValue(je.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&yt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};yh.prototype.createDynamicUpdater=function(e,t){return new Av(e,t,this)};var rT={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function Av(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function TAe(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=fU[n];!l(i)||i.isDestroyed()?(i=new Fm,fU[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}Av.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=j.getValueOrUndefined(o,e,this._positions);t._clampToGround=j.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=j.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=j.getValueOrDefault(i._arcType,e,un.GEODESIC),t._groundGeometryOptions.granularity=j.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,A;if(h instanceof Jt)A=new bs;else{let g=gr.getValue(e,h,this._material);A=new Za({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new sm({geometryInstances:t.createFillGeometryInstance(e),appearance:A,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),j.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=TAe(this);if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=un.GEODESIC;c=j.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==un.NONE&&l(u)&&(rT.ellipsoid=f,rT.positions=r,rT.granularity=j.getValueOrUndefined(i._granularity,e),rT.height=Xi.extractHeights(r,f),c===un.GEODESIC?r=Xi.generateCartesianArc(rT):r=Xi.generateCartesianRhumbArc(rT)),a.show=!0,a.positions=r.slice(),a.material=gr.getValue(e,t.fillMaterialProperty,a.material),a.width=j.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};Av.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return le.clone(n.boundingSphere,e),mt.DONE}return l(t)&&!t.ready?mt.PENDING:mt.DONE}else{let t=TAe(this);if(t.show&&t.positions.length>0)return le.fromPoints(t.positions,e),mt.DONE}return mt.FAILED};Av.prototype.isDestroyed=function(){return!1};Av.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=fU[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete fU[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var dU=yh;var $it=new G,eot=new Ut,tot=new Ut;function Ch(e,t,n,i,o){let r;n instanceof Jt?r=bs:r=Za,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Ch.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt,this.zIndex=i,this._asynchronous=o}Ch.prototype.onMaterialChanged=function(){this.invalidated=!0};Ch.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Ch.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Ch.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};Ch.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new sm({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let _=c.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,$it);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,tot,eot);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Ch.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Ch.prototype.contains=function(e){return this.updaters.contains(e.id)};Ch.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ch.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function sT(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}sT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=j.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new Ch(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};sT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};sT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};sT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};sT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var hU=sT;var not=[];function SAe(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function wAe(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof Jt?1:2);let r;l(i)&&(r=i+o*Dn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof Jt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function Zm(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o,r=Dn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new ph(n,bs,void 0,!1,o),this._materialBatches[o]=new _h(n,Za,void 0,!1,o),this._colorBatches[o+r]=new ph(n,bs,bs,!1,o),this._materialBatches[o+r]=new _h(n,Za,bs,!1,o),this._colorBatches[o+r*2]=new ph(n,bs,Za,!1,o),this._materialBatches[o+r*2]=new _h(n,Za,Za,!1,o);this._dynamicBatch=new Nb(n,i);let s=Jn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new hU(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new Pt,this._updaters=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(Zm.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,not)}Zm.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(SAe(this,f),wAe(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),SAe(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new dU(c,this._scene),this._updaters.set(u,f),wAe(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(Zm._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,A=this._batches,g=A.length;for(a=0;a<g;a++)h=A[a].update(e)&&h;return h};var iot=[],oot=new le;Zm.prototype.getBoundingSphere=function(e,t){let n=iot,i=oot,o=0,r=mt.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};Zm.prototype.isDestroyed=function(){return!1};Zm.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Zm.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};Zm._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Zm.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var mU=Zm;function au(e){Ll.initializeTerrainHeights(),sm.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Lr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??au.defaultVisualizersCallback;let i=!1,o=new ou,r=new ou;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new c3;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var aT=[];au.registerVisualizer=function(e){aT.includes(e)||aT.push(e)};au.unregisterVisualizer=function(e){if(aT.includes(e)){let t=aT.indexOf(e);aT.splice(t,1)}};au.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new sM(t,i),new rU(e,i,n._primitives,n._groundPrimitives),new sU(t,i),new cU(e,i),new Yk(e,i),new uU(t,i),new lU(e,i),new mU(e,i,n._primitives,n._groundPrimitives),...aT.map(o=>new o(e,i))]};Object.defineProperties(au.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});au.prototype.isDestroyed=function(){return!1};au.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};au.prototype.update=function(e){if(!wi.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};au.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var rot=[],sot=new le;au.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return mt.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let A=this._dataSourceCollection;for(o=A.length,i=0;i<o;i++){let g=A.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return mt.FAILED;let s=rot,a=sot,c=0,u=mt.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let A=f[i];if(l(A.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===mt.PENDING)return mt.PENDING;u===mt.DONE&&(s[c]=le.clone(a,s[c]),c++)}}return c===0?mt.FAILED:(s.length=c,le.fromBoundingSpheres(s,n),mt.DONE)};au.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new ou),s=o.add(new S3);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};au.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};au.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var AU=au;function Fq(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}Fq.clone=function(e,t){if(l(e))return l(t)||(t=new Fq),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Eh=Fq;var BAe=new J,DAe=new J,vAe=new J,aot=new R,pU=new d,PAe=new d,Qq=new d,kq=new d,RAe=new d,MAe=new d,cot=new Le,lot=new d,uot=new J,cT=new K,fot=1.25;function dot(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let A=!1,g=!1,m,_,y;if(f===ie.SCENE3D){K.addSeconds(c,.001,cT);let v=o.getValue(cT,pU);if(l(v)||(K.addSeconds(c,-.001,cT),v=o.getValue(cT,pU),g=!0),l(v)){let P=kt.computeFixedToIcrfMatrix(c,BAe),N=kt.computeFixedToIcrfMatrix(cT,DAe),L;!l(P)||!l(N)?(L=kt.computeTemeToPseudoFixedMatrix(c,vAe),P=J.transpose(L,BAe),N=kt.computeTemeToPseudoFixedMatrix(cT,DAe),J.transpose(N,N)):L=J.transpose(P,vAe);let p=J.multiplyByVector(P,h,RAe),x=J.multiplyByVector(N,v,MAe);d.subtract(p,x,kq);let T=d.magnitude(kq)*1e3,w=D.GRAVITATIONALPARAMETER,M=-w/(T*T-2*w/d.magnitude(p));M<0||M>fot*u.maximumRadius?(m=PAe,d.normalize(h,m),d.negate(m,m),y=d.clone(d.UNIT_Z,Qq),_=d.cross(y,m,pU),d.magnitude(_)>D.EPSILON7&&(d.normalize(m,m),d.normalize(_,_),y=d.cross(m,_,Qq),d.normalize(y,y),A=!0)):d.equalsEpsilon(h,v,D.EPSILON7)||(y=PAe,d.normalize(p,y),d.normalize(x,x),_=d.cross(y,x,Qq),g&&(_=d.multiplyByScalar(_,-1,_)),d.equalsEpsilon(_,d.ZERO,D.EPSILON7)||(m=d.cross(_,y,pU),J.multiplyByVector(L,m,m),J.multiplyByVector(L,_,_),J.multiplyByVector(L,y,y),d.normalize(m,m),d.normalize(_,_),d.normalize(y,y),A=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let C,E,I;i&&(C=d.clone(t.position,kq),E=d.clone(t.direction,RAe),I=d.clone(t.up,MAe));let b=aot,S;l(s)&&(S=s.getValue(c,cot));let B=r.getValue(c,lot);if(a===Tg.INERTIAL&&l(S))R.fromTranslationQuaternionRotationScale(h,S,d.ONE,b);else if(a===Tg.VELOCITY&&l(B)){let v=kt.rotationMatrixFromPositionVelocity(h,B,u,uot);R.fromRotationTranslation(v,h,b)}else a===Tg.ENU||!A?kt.eastNorthUpToFixedFrame(h,u,b):(b[0]=m.x,b[1]=m.y,b[2]=m.z,b[3]=0,b[4]=_.x,b[5]=_.y,b[6]=_.z,b[7]=0,b[8]=y.x,b[9]=y.y,b[10]=y.z,b[11]=0,b[12]=h.x,b[13]=h.y,b[14]=h.z,b[15]=0);t._setTransform(b),i&&(d.clone(C,t.position),d.clone(E,t.direction),d.clone(I,t.up),d.cross(E,I,t.right))}if(n){let A=f===ie.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,A)}}function pv(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??te.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Z_(e.position,!0),this._offset3D=new d}Object.defineProperties(pv,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});pv.defaultOffset3D=new d(-14e3,3500,3500);var gU=new Eh,hot=new d;pv.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ie.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,A=n.camera,g=f||h,m=!0;if(f){let _=r.viewFrom,y=l(_);if(!y&&l(t)){gU.pitch=-D.PI_OVER_FOUR,gU.range=0;let C=a.getValue(e,hot);if(l(C)){let E=2-1/Math.max(1,d.magnitude(C)/i.maximumRadius);gU.pitch*=E}A.viewBoundingSphere(t,gU),this.boundingSphere=t,g=!1,m=!1}else(!y||!l(_.getValue(e,this._offset3D)))&&d.clone(pv._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ie.SCENE2D&&d.clone(A.position,this._offset3D);this._lastEntity=r,this._mode=o,dot(this,A,g,m,a,c,u,s,e,i)};var _U=pv;function _v(){this._cache={}}_v.prototype.fromColor=function(e,t){return yU(void 0,void 0,e,t,this._cache)};_v.prototype.fromUrl=function(e,t,n){return yU(e,void 0,t,n,this._cache)};_v.prototype.fromMakiIconId=function(e,t,n){return yU(fn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};_v.prototype.fromText=function(e,t,n){return yU(void 0,e,t,n,this._cache)};var mot=new G;function Aot(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,mot).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function NAe(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var gv=new Array(4);function yU(e,t,n,i,o){gv[0]=e,gv[1]=t,gv[2]=n,gv[3]=i;let r=JSON.stringify(gv),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Aot(c,n,i),l(e)){let f=we.createIfNeeded(e).fetchImage().then(function(h){return NAe(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=jx(t,{font:`bold ${i}px sans-serif`});NAe(c,u,i)}return o[r]=a,a}var ly=_v;function Uq(e){return e}function CU(e){if(e==null)return Uq;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var u=2,f=a.length,h=new Array(f);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;u<f;)h[u]=a[u],++u;return h}}function LAe(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Gq(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return OAe(e,n)})}:OAe(e,t)}function OAe(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=zq(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function zq(e,t){var n=CU(e.transform),i=e.arcs;function o(f,h){h.length&&h.pop();for(var A=i[f<0?~f:f],g=0,m=A.length;g<m;++g)h.push(n(A[g],g));f<0&&LAe(h,m)}function r(f){return n(f)}function s(f){for(var h=[],A=0,g=f.length;A<g;++A)o(f[A],h);return h.length<2&&h.push(h[0]),h}function a(f){for(var h=s(f);h.length<4;)h.push(h[0]);return h}function c(f){return f.map(a)}function u(f){var h=f.type,A;switch(h){case"GeometryCollection":return{type:h,geometries:f.geometries.map(u)};case"Point":A=r(f.coordinates);break;case"MultiPoint":A=f.coordinates.map(r);break;case"LineString":A=s(f.arcs);break;case"MultiLineString":A=f.arcs.map(s);break;case"Polygon":A=c(f.arcs);break;case"MultiPolygon":A=f.arcs.map(c);break;default:return null}return{type:h,coordinates:A}}return u(t)}function EU(e){return d.fromDegrees(e[0],e[1],e[2])}var Vq={"urn:ogc:def:crs:OGC:1.3:CRS84":EU,"EPSG:4326":EU,"urn:ogc:def:crs:EPSG::4326":EU},FAe={},QAe={},Hq=48,Wq,jq=G.ROYALBLUE,Yq=G.YELLOW,qq=2,Kq=G.fromBytes(255,255,0,100),Xq=!1,Cot={small:24,medium:48,large:64},Eot=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function kAe(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Eot.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${kAe(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Iot(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function xot(e,t){return new fm(Iot(kAe,e,t),!0)}function IU(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Xn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new ci(c):n(r,s))}return o}function Jq(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var UAe={Feature:zAe,FeatureCollection:bot,GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae},GAe={GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae};function zAe(e,t,n,i,o){if(t.geometry===null){IU(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new ce("feature.geometry is required.");let r=t.geometry.type,s=GAe[r];if(!l(s))throw new ce(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function bot(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)zAe(e,r[s],void 0,i,o)}function VAe(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=GAe[u];if(!l(f))throw new ce(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function HAe(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=G.fromCssColorString(g)),a=Cot[c["marker-size"]]??a;let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new jc;f.verticalOrigin=new ci(Wn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=Ze.CLAMP_TO_GROUND);let h=IU(t,e._entityCollection,o.describe);h.billboard=f,h.position=new Ol(n(i));let A=Promise.resolve(u).then(function(g){f.image=new ci(g)}).catch(function(){f.image=new ci(e._pinBuilder.fromColor(s,a))});e._promises.push(A)}function WAe(e,t,n,i,o){HAe(e,t,i,n.coordinates,o)}function jAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)HAe(e,t,i,r[s],o)}function YAe(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new ci(f));let h,A=a.stroke;l(A)&&(h=G.fromCssColorString(A));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new Jt(h))}let c=IU(t,e._entityCollection,o.describe),u=new $c;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new ci(Jq(i,n)),u.arcType=un.RHUMB}function qAe(e,t,n,i,o){YAe(e,t,i,n.coordinates,o)}function KAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)YAe(e,t,i,r[s],o)}function XAe(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new ci(g));let m,_=c.stroke;l(_)&&(m=G.fromCssColorString(_));let y=c["stroke-opacity"];l(y)&&y!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=y),l(m)&&(r=new ci(m));let C,E=c.fill,I=s.color.getValue();l(E)&&(C=G.fromCssColorString(E),C.alpha=I.alpha),y=c["fill-opacity"],l(y)&&y!==I.alpha&&(l(C)||(C=I.clone()),C.alpha=y),l(C)&&(s=new Jt(C))}let u=new lm;u.outline=new ci(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=un.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new xc(Jq(i[g],n)));let h=i[0];u.hierarchy=new ci(new xc(Jq(h,n),f)),h[0].length>2?u.perPositionHeight=new ci(!0):o.clampToGround||(u.height=0);let A=IU(t,e._entityCollection,o.describe);A.polygon=u}function JAe(e,t,n,i,o){XAe(e,t,i,n.coordinates,o)}function ZAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)XAe(e,t,i,r[s],o)}function $Ae(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Gq(n,n.objects[r]),a=UAe[s.type];a(e,s,s,i,o)}}function uy(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._promises=[],this._pinBuilder=new ly,this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}uy.load=function(e,t){return new uy().load(e,t)};Object.defineProperties(uy,{markerSize:{get:function(){return Hq},set:function(e){Hq=e}},markerSymbol:{get:function(){return Wq},set:function(e){Wq=e}},markerColor:{get:function(){return jq},set:function(e){jq=e}},stroke:{get:function(){return Yq},set:function(e){Yq=e}},strokeWidth:{get:function(){return qq},set:function(e){qq=e}},fill:{get:function(){return Kq},set:function(e){Kq=e}},clampToGround:{get:function(){return Xq},set:function(e){Xq=e}},crsNames:{get:function(){return Vq}},crsLinkHrefs:{get:function(){return FAe}},crsLinkTypes:{get:function(){return QAe}}});Object.defineProperties(uy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});uy.prototype.load=function(e,t){return epe(this,e,t,!0)};uy.prototype.process=function(e,t){return epe(this,e,t,!1)};function epe(e,t,n,i){ms.setLoading(e,!0),n=n??V.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Dt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:n.describe??xot,markerSize:n.markerSize??Hq,markerSymbol:n.markerSymbol??Wq,markerColor:n.markerColor??jq,strokeWidthProperty:new ci(n.strokeWidth??qq),strokeMaterialProperty:new Jt(n.stroke??Yq),fillMaterialProperty:new Jt(n.fill??Kq),clampToGround:n.clampToGround??Xq},Promise.resolve(r).then(function(a){return Tot(e,a,n,s,i)}).catch(function(a){throw ms.setLoading(e,!1),e._error.raiseEvent(e,a),a})}uy.prototype.update=function(e){return!0};function Tot(e,t,n,i,o){let r;l(i)&&(r=W_(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=UAe[t.type];if(!l(s))throw new ce(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?EU:null;if(l(a)){if(!l(a.properties))throw new ce("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=Vq[u.name],!l(c))throw new ce(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=FAe[u.href];if(l(f)||(f=QAe[u.type]),!l(f))throw new ce(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=Vq[`EPSG:${u.code}`],!l(c))throw new ce(`Unknown crs EPSG code: ${u.code}`)}else throw new ce(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,ms.setLoading(e,!1),e})})}var kE=uy;var Zq=function(e,t){return Zq=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},Zq(e,t)};function $m(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Zq(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Rs=function(){return Rs=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Rs.apply(this,arguments)};function tpe(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function npe(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var ipe="4.1.5";var ope=Object.prototype.hasOwnProperty;function Vu(e){return typeof e=="boolean"}function rpe(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function fy(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function Ih(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var xU=/\s+/,bU=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)ope.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();function ape(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=Sot(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=spe(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=spe(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):$q(c,r,n).substr(0,r+i);var u="";if(s.path&&(u+="/"+s.path),s.query&&(u+="?"+s.query),u)if((c+u).length>=r){if((c+u).length==t)return(c+u).substr(0,t);var f=r-c.length;return(c+$q(u,f,n)).substr(0,r+i)}else c+=u;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var A=r-c.length;return(c+$q(h,A,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var m="";return r>0&&(m=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+m).substr(0,r+i)}function Sot(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function spe(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function $q(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}function cpe(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}function lpe(e,t,n){return rpe(e,t,n)}var upe=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new bU({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?ape(t,i):o==="middle"?cpe(t,i):lpe(t,i)},e}();var eA=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();function fpe(e){return e>=0&&e<=31||e==127}function Qp(e){return e>=65&&e<=90||e>=97&&e<=122}function Ms(e){return e>=48&&e<=57}function TU(e){return e==34||e==39}function dy(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function xh(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function dpe(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function hpe(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function SU(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function mpe(e){return e<91?e==40:e==91||e==123}function eK(e){return e<93?e==41:e==93||e==125}var Ape=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/;var tK=/https?:\/\//i,ppe=new RegExp("^"+tK.source,"i"),wot=/^(javascript|vbscript):/i,Bot=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Dot=/^(?:\/\/)?([^/#?:]+)/,lT=Qp;function nK(e){return Qp(e)||Ms(e)||e===43||e===45||e===46}var kp=xh;function wU(e){return e===95||kp(e)}function iK(e){return xh(e)||hpe(e)||SU(e)}function BU(e){return e===47||e===63||e===35}function oK(e){return Ape.test(e.toLowerCase())}function gpe(e){if(wot.test(e))return!1;var t=e.match(Bot);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function _pe(e){var t=e.match(Dot);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!oK(o)}var vot=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Pot=/[:/?#]/;function ype(e){var t=e.split(Pot,1)[0];return vot.test(t)}var Rot=/^(https?:\/\/)?(?:www\.)?/i,Mot=/^\/\//,Cpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Oot(n)),this.stripPrefix.scheme&&(n=Not(n)),this.stripPrefix.www&&(n=Lot(n)),this.stripTrailingSlash&&(n=Fot(n)),this.decodePercentEncoding&&(n=Qot(n)),n},t}(eA);function Not(e){return e.replace(ppe,"")}function Lot(e){return e.includes("www.")?e.replace(Rot,"$1"):e}function Oot(e){return e.replace(Mot,"")}function Fot(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Qot(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}var Epe=/^mailto:/i,rK=xh;function DU(e){return rK(e)||dpe(e)}function Ipe(e){var t=e.split(".").pop();return oK(t)}var xpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(eA);function sK(e){return e===95||xh(e)}function bpe(e){return e.length<=140}var Tpe=["twitter","facebook","instagram","tiktok","youtube"];var Spe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:Ih(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var kot={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function aK(e){return e===45||e===46||e===95||Qp(e)||Ms(e)}function wpe(e,t){var n=kot[t];return n.test(e)}var Bpe=["twitter","instagram","soundcloud","tiktok","youtube"];var Dpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:Ih(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var Uot=/[-. ()]/,Got=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,zot=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,Vot=new RegExp("^".concat(Got.source,"|").concat(zot.source,"$"));function cK(e){return e===45||e===46||e===32}function vU(e){return e===44||e===59}function vpe(e){var t=e.charAt(0)==="+"||Uot.test(e);return t&&Vot.test(e)}var Ppe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(eA);var Hot=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),Mpe(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),Mpe(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function Npe(e,t){for(var n=new Hot(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)PU(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:Xot(n,s,o);break;case 12:Jot(n,s,o);break;case 0:Wot(n,s,o);break;case 1:jot(n,s,o);break;case 2:Yot(n,s,o);break;case 3:qot(n,s,o);break;case 4:Kot(n,s,i,o);break;case 5:Zot(n,s,o);break;case 6:$ot(n,s,i,o);break;case 7:ert(n,s,i,o);break;case 13:trt(n,s,o);break;case 14:nrt(n,s,o);break;case 8:irt(n,s,o);break;case 9:ort(n,s,o);break;case 10:rrt(n,s,o);break;case 15:srt(n,s,i,o);break;case 16:art(n,s,i,o);break;case 17:crt(n,s,i,o);break;case 18:lrt(n,s,i,o);break;case 19:urt(n,s,i,o);break;case 20:frt(n,s,o);break;case 21:drt(n,s,o);break;case 22:UE(n,s,o);break;case 23:hrt(n,s,o);break;case 24:mrt(n,s,o);break;case 25:Art(n,s,o);break;case 26:prt(n,s,o);break;case 27:grt(n,s,o);break;case 28:_rt(n,s,o);break;case 29:yrt(n,s,o);break;case 30:Crt(n,s,o);break;case 31:Ert(n,s,o);break;case 32:xrt(n,s,i,o);break;case 33:brt(n,s,o);break;case 34:Trt(n,s,o);break;case 35:Srt(n,s,o);break;case 36:wrt(n,s,i,o);break;case 37:Irt(n,s,i,o);break;case 38:Brt(n,s,i,o);break;case 39:Drt(n,s,i,o);break;case 40:vrt(n,s,o);break;case 41:Prt(n,s,o);break;default:Ih(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&lT(o)){var a=n.text.charCodeAt(n.charIdx-1);lT(a)||n.addMachine(RU(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(u){return ns(n,u)});return n.matches}function PU(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(Ort(i,28));else if(n===64)e.addMachine(Frt(i,30));else if(n===47)e.addMachine(uK(i,11));else if(n===43)e.addMachine(lK(i,37));else if(n===40)e.addMachine(lK(i,32));else{if(Ms(n)&&(e.addMachine(lK(i,38)),e.addMachine(Nrt(i,13))),rK(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(Lrt(i,o))}lT(n)&&e.addMachine(RU(i,0)),xh(n)&&e.addMachine(uK(i,5))}}function Wot(e,t,n){n===58?t.state=2:n===45?t.state=1:nK(n)||e.removeMachine(t)}function jot(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(uK(i,11))):nK(n)?t.state=0:e.removeMachine(t))}function Yot(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):kp(n)?(t.state=5,lT(n)&&e.addMachine(RU(i,0))):e.removeMachine(t)}function qot(e,t,n){n===47?t.state=4:iK(n)?(t.state=10,t.acceptStateReached=!0):ns(e,t)}function Kot(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):kp(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function Xot(e,t,n){n===47?t.state=12:e.removeMachine(t)}function Jot(e,t,n){kp(n)?t.state=5:e.removeMachine(t)}function Zot(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:BU(n)?t.state=10:wU(n)||ns(e,t)}function $ot(e,t,n,i){i===45||(i===46?ns(e,t):kp(i)?t.state=5:ns(e,t))}function ert(e,t,n,i){i===46?ns(e,t):kp(i)?(t.state=5,t.acceptStateReached=!0):ns(e,t)}function trt(e,t,n){n===46?t.state=14:n===58?t.state=8:Ms(n)||(BU(n)?t.state=10:xh(n)?e.removeMachine(t):ns(e,t))}function nrt(e,t,n){Ms(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ns(e,t)}function irt(e,t,n){Ms(n)?t.state=9:ns(e,t)}function ort(e,t,n){Ms(n)||(BU(n)?t.state=10:ns(e,t))}function rrt(e,t,n){iK(n)||ns(e,t)}function srt(e,t,n,i){n.toLowerCase()==="a"?t.state=16:UE(e,t,i)}function art(e,t,n,i){n.toLowerCase()==="i"?t.state=17:UE(e,t,i)}function crt(e,t,n,i){n.toLowerCase()==="l"?t.state=18:UE(e,t,i)}function lrt(e,t,n,i){n.toLowerCase()==="t"?t.state=19:UE(e,t,i)}function urt(e,t,n,i){n.toLowerCase()==="o"?t.state=20:UE(e,t,i)}function frt(e,t,n){n===58?t.state=21:UE(e,t,n)}function drt(e,t,n){DU(n)?t.state=22:e.removeMachine(t)}function UE(e,t,n){n===46?t.state=23:n===64?t.state=24:DU(n)?t.state=22:e.removeMachine(t)}function hrt(e,t,n){n===46||n===64?e.removeMachine(t):DU(n)?t.state=22:e.removeMachine(t)}function mrt(e,t,n){kp(n)?t.state=25:e.removeMachine(t)}function Art(e,t,n){n===46?t.state=27:n===45?t.state=26:wU(n)||ns(e,t)}function prt(e,t,n){n===45||n===46?ns(e,t):wU(n)?t.state=25:ns(e,t)}function grt(e,t,n){n===46||n===45?ns(e,t):kp(n)?(t.state=25,t.acceptStateReached=!0):ns(e,t)}function _rt(e,t,n){sK(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function yrt(e,t,n){sK(n)||ns(e,t)}function Crt(e,t,n){aK(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Ert(e,t,n){aK(n)||(xh(n)?e.removeMachine(t):ns(e,t))}function Irt(e,t,n,i){Ms(i)?t.state=38:(e.removeMachine(t),PU(e,n,i))}function xrt(e,t,n,i){Ms(i)?t.state=33:e.removeMachine(t),PU(e,n,i)}function brt(e,t,n){Ms(n)?t.state=34:e.removeMachine(t)}function Trt(e,t,n){Ms(n)?t.state=35:e.removeMachine(t)}function Srt(e,t,n){n===41?t.state=36:e.removeMachine(t)}function wrt(e,t,n,i){Ms(i)?t.state=38:cK(i)?t.state=39:e.removeMachine(t)}function Brt(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,vU(i)?t.state=40:i===35?t.state=41:Ms(i)||(i===40?t.state=32:cK(i)?t.state=39:(ns(e,t),lT(i)&&e.addMachine(RU(o,0))))}function Drt(e,t,n,i){Ms(i)?t.state=38:i===40?t.state=32:(ns(e,t),PU(e,n,i))}function vrt(e,t,n){vU(n)||(n===35?t.state=41:Ms(n)?t.state=38:ns(e,t))}function Prt(e,t,n){vU(n)?t.state=40:Ms(n)?e.removeMachine(t):ns(e,t)}function ns(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,f=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,A=i.slice(t.startIdx,o);switch(A=Mrt(A),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var m=tK.exec(A);if(m&&(h=h+m.index,A=A.slice(m.index)),!gpe(A))return;break}case 1:{if(!_pe(A))return;break}case 2:{if(!ype(A))return;break}default:Ih(t)}n.push(new Cpe({tagBuilder:r,matchedText:A,offset:h,urlMatchType:Rrt(t.matchType),url:A,protocolRelativeMatch:A.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{Ipe(A)&&n.push(new xpe({tagBuilder:r,matchedText:A,offset:h,email:A.replace(Epe,"")}));break}case 2:{bpe(A)&&n.push(new Spe({tagBuilder:r,matchedText:A,offset:h,serviceName:u,hashtag:A.slice(1)}));break}case 3:{wpe(A,f)&&n.push(new Dpe({tagBuilder:r,matchedText:A,offset:h,serviceName:f,mention:A.slice(1)}));break}case 4:{if(A=A.replace(/ +$/g,""),vpe(A)){var _=A.replace(/[^0-9,;#]/g,"");n.push(new Ppe({tagBuilder:r,matchedText:A,offset:h,number:_,plusSign:A.charAt(0)==="+"}))}break}default:Ih(t)}}}function Rrt(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:Ih(e)}}var Rpe={")":"(","}":"{","]":"["};function Mrt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);mpe(o)?t[i]++:eK(o)&&t[Rpe[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if(eK(o)){var s=Rpe[i];if(t[s]<0)t[s]++,r--;else break}else if(SU(o))r--;else break}return e.slice(0,r+1)}function RU(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function uK(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function Nrt(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function Lrt(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function Ort(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function Frt(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function lK(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function Mpe(e){return e.type===0&&e.matchType===0}var tA=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),dK=new tA,Qrt=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=dK,this.html=t,this.callbacks=n}return e}();function Lpe(e,t){for(var n=new Qrt(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:krt(n,o);break;case 1:Urt(n,o,r);break;case 2:zrt(n,o,r);break;case 3:Grt(n,o,r);break;case 4:Vrt(n,o,r);break;case 5:Hrt(n,o,r);break;case 6:Wrt(n,o,r);break;case 7:jrt(n,o,r);break;case 8:Yrt(n,o);break;case 9:qrt(n,o);break;case 10:Krt(n,o,r);break;case 11:Xrt(n,o,r);break;case 12:Jrt(n,o);break;case 13:Zrt(n);break;case 14:$rt(n,o);break;case 15:est(n,o);break;case 16:tst(n,o);break;case 17:nst(n,o);break;case 18:ist(n,o);break;case 19:ost(n,o);break;case 20:rst(n,o);break;default:Ih(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&sst(n)}function krt(e,t){t==="<"&&nA(e)}function Urt(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0}))):t==="<"?nA(e):Qp(n)?(e.state=3,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=dK)}function Grt(e,t,n){dy(n)?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=4):t==="<"?nA(e):t==="/"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=12):t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),iA(e)):!Qp(n)&&!Ms(n)&&t!==":"&&fd(e)}function zrt(e,t,n){t===">"?fd(e):Qp(n)?e.state=3:fd(e)}function Vrt(e,t,n){dy(n)||(t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):t==="="||TU(n)||fpe(n)?fd(e):e.state=5)}function Hrt(e,t,n){dy(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)&&fd(e)}function Wrt(e,t,n){dy(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)?fd(e):e.state=5)}function jrt(e,t,n){dy(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?fd(e):t==="<"?nA(e):e.state=10)}function Yrt(e,t){t==='"'&&(e.state=11)}function qrt(e,t){t==="'"&&(e.state=11)}function Krt(e,t,n){dy(n)?e.state=4:t===">"?iA(e):t==="<"&&nA(e)}function Xrt(e,t,n){dy(n)?e.state=4:t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):(e.state=4,ast(e))}function Jrt(e,t){t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0})),iA(e)):fd(e)}function Zrt(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"doctype"})),e.state=20):fd(e)}function $rt(e,t){t==="-"?e.state=15:t===">"?fd(e):e.state=16}function est(e,t){t==="-"?e.state=18:t===">"?fd(e):e.state=16}function tst(e,t){t==="-"&&(e.state=17)}function nst(e,t){t==="-"?e.state=18:e.state=16}function ist(e,t){t===">"?iA(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function ost(e,t){t==="-"?e.state=17:t===">"?iA(e):e.state=16}function rst(e,t){t===">"?iA(e):t==="<"&&nA(e)}function fd(e){e.state=0,e.currentTag=dK}function nA(e){e.state=1,e.currentTag=new tA({idx:e.charIdx})}function iA(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),fd(e),e.currentDataIdx=e.charIdx+1}function sst(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function fK(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function ast(e){e.charIdx--}var cst=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=lst(t.urls),this.email=Vu(t.email)?t.email:this.email,this.phone=Vu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=Vu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=ust(t.stripPrefix),this.stripTrailingSlash=Vu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Vu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&Bpe.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Tpe.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=fst(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return Lpe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,u=s.split(c),f=a;u.forEach(function(h,A){if(A%2===0){var g=n.parseText(h,f);r.push.apply(r,npe([],tpe(g),!1))}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(dst);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||fy(t,function(n){return n.getType()==="hashtag"}),this.email||fy(t,function(n){return n.getType()==="email"}),this.phone||fy(t,function(n){return n.getType()==="phone"}),this.mention||fy(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=Npe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof bU)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new upe({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=ipe,e}(),Ope=cst;function lst(e){return e==null&&(e=!0),Vu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:Vu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:Vu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:Vu(e.ipV4Matches)?e.ipV4Matches:!0}}function ust(e){return e==null&&(e=!0),Vu(e)?{scheme:e,www:e}:{scheme:Vu(e.scheme)?e.scheme:!0,www:Vu(e.www)?e.www:!0}}function fst(e){return typeof e=="number"?{length:e,location:"end"}:Rs({length:Number.POSITIVE_INFINITY,location:"end"},e)}function dst(e,t){return e.getOffset()-t.getOffset()}var MU=Ope;var Wpe;typeof DOMParser<"u"&&(Wpe=new DOMParser);var hst=new MU({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),NU=32,Fpe=2414016,Qpe=1,kpe=16093e3,Upe=.1,mst=[null,void 0,"http://www.topografix.com/GPX/1/1"],Oo={gpx:mst};function Ast(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function hK(e,t){let n=Ev(e,"id");return n=l(n)?n:Xn(),t.getOrCreateEntity(n)}function mK(e){let t=Gpe(e,"lon"),n=Gpe(e,"lat"),i=yv(e,"ele",Oo.gpx);return d.fromDegrees(t,n,i)}function Gpe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Ev(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function hy(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function AK(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function yv(e,t,n){let i=hy(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function cu(e,t,n){let i=hy(e,t,n);if(l(i))return i.textContent.trim()}function jpe(e){let t=new jc;return t.width=NU,t.height=NU,t.scaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.pixelOffsetScaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.verticalOrigin=new ci(Wn.BOTTOM),t.image=e,t}function pst(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function Ype(e){let t=new $c;return t.width=4,t.material=new TE,t.material.color=l(e)?e:G.RED,t.material.outlineWidth=2,t.material.outlineColor=G.BLACK,t}var zpe={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},Cv;typeof document<"u"&&(Cv=document.createElement("div"));function pK(e,t){let n,i="",o=Object.keys(zpe),r=o.length;for(n=0;n<r;n++){let f=o[n],h=zpe[f];h.value=cu(e,h.tag,Oo.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=hst.link(i),Cv.innerHTML=i;let s=Cv.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=G.WHITE,c=G.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${Cv.innerHTML}</div>`,Cv.innerHTML="",u}function qpe(e,t,n,i){let o=mK(t),r=hK(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);r.billboard=jpe(s);let a=cu(t,"name",Oo.gpx);r.name=a,r.label=pst(),r.label.text=a,r.description=pK(t,r),i.clampToGround&&(r.billboard.heightReference=Ze.CLAMP_TO_GROUND,r.label.heightReference=Ze.CLAMP_TO_GROUND)}function gst(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"rtept",Oo.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)qpe(e,r[a],n,i),s[a]=mK(r[a]);o.polyline=Ype(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function _st(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"trkseg",Oo.gpx),s=[],a=[],c,u=!0,f=new ic;for(let h=0;h<r.length;h++)c=yst(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);o.billboard=jpe(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=Ze.CLAMP_TO_GROUND),o.availability=new hs,o.availability.addInterval(new Rn({start:a[0],stop:a[a.length-1]}))}o.polyline=Ype(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function yst(e){let t={positions:[],times:[]},n=AK(e,"trkpt",Oo.gpx),i;for(let o=0;o<n.length;o++){let r=mK(n[o]);t.positions.push(r),i=cu(n[o],"time",Oo.gpx),l(i)&&t.times.push(K.fromIso8601(i))}return t}function Cst(e){let t=hy(e,"metadata",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),desc:cu(t,"desc",Oo.gpx),author:Est(t),copyright:xst(t),link:Kpe(t),time:cu(t,"time",Oo.gpx),keywords:cu(t,"keywords",Oo.gpx),bounds:bst(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Est(e){let t=hy(e,"author",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),email:Ist(t),link:Kpe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Ist(e){let t=hy(e,"email",Oo.gpx);if(l(t)){let n=cu(t,"id",Oo.gpx),i=cu(t,"domain",Oo.gpx);return`${n}@${i}`}}function Kpe(e){let t=hy(e,"link",Oo.gpx);if(l(t)){let n={href:Ev(t,"href"),text:cu(t,"text",Oo.gpx),mimeType:cu(t,"type",Oo.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function xst(e){let t=hy(e,"copyright",Oo.gpx);if(l(t)){let n={author:Ev(t,"author"),year:cu(t,"year",Oo.gpx),license:cu(t,"license",Oo.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function bst(e){let t=hy(e,"bounds",Oo.gpx);if(l(t)){let n={minLat:yv(t,"minlat",Oo.gpx),maxLat:yv(t,"maxlat",Oo.gpx),minLon:yv(t,"minlon",Oo.gpx),maxLon:yv(t,"maxlon",Oo.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var Vpe={wpt:qpe,rte:gst,trk:_st};function Tst(e,t,n,i){let o=Object.keys(Vpe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Vpe[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let A=u[h];A.localName===a&&Oo.gpx.indexOf(A.namespaceURI)!==-1&&c(e,A,n,i)}}}function Hpe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=Ev(o,"version"),s=Ev(o,"creator"),a,c=Cst(o);l(c)&&(a=c.name),o.localName==="gpx"?Tst(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,A=f.stop,g=K.equals(h,je.MINIMUM_VALUE),m=K.equals(A,je.MAXIMUM_VALUE);if(!g||!m){let y;g&&(y=new Date,y.setHours(0,0,0,0),h=K.fromDate(y)),m&&(y=new Date,y.setHours(24,0,0,0),A=K.fromDate(y)),u=new Hm,u.startTime=h,u.stopTime=A,u.currentTime=K.clone(h),u.clockRange=As.LOOP_STOP,u.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(A,h)/60,1),31556900))}let _=!1;return e._name!==a&&(e._name=a,_=!0),e._creator!==s&&(e._creator=s,_=!0),Sst(e._metadata,c)&&(e._metadata=c,_=!0),e._version!==r&&(e._version=r,_=!0),u!==e._clock&&(_=!0,e._clock=u),_&&e._changed.raiseEvent(e),ms.setLoading(e,!1),e}function Sst(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function wst(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Ast(r).then(function(s){let a,c;try{a=Wpe.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new ce(u)}return Hpe(e,a,i)}):Hpe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function uT(){this._changed=new _e,this._error=new _e,this._loading=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new ly}uT.load=function(e,t){return new uT().load(e,t)};Object.defineProperties(uT.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});uT.prototype.update=function(e){return!0};uT.prototype.load=function(e,t){if(!l(e))throw new me("data is required.");t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name,i=this;return wst(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var LU=uT;function Bst(e,t){this.position=e,this.headingPitchRoll=t}var OU=Bst;var jv=Es(_u(),1);function VU(e){return HU(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function HU(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?HU(n):n),[])}var Xpe=[0,1,2,3].concat(...VU([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Ir(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,A,g,m,_,y=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,y++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),_=r[h*2],o.opt_len+=_*(g+m),s&&(o.static_len+=_*(s[h*2+1]+m)));if(y!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,y-=2}while(y>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)A=o.heap[--f],!(A>e.max_code)&&(r[A*2+1]!=g&&(o.opt_len+=(g-r[A*2+1])*r[A*2],r[A*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Ir._length_code=[0,1,2,3,4,5,6,7].concat(...VU([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Ir.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Ir.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Ir.d_code=function(e){return e<256?Xpe[e]:Xpe[256+(e>>>7)]};Ir.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Ir.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Ir.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Ir.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function oc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var Dst=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],vst=VU([[144,8],[112,9],[24,7],[8,8]]);oc.static_ltree=HU(Dst.map((e,t)=>[e,vst[t]]));var Pst=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],Rst=VU([[30,5]]);oc.static_dtree=HU(Pst.map((e,t)=>[e,Rst[t]]));oc.static_l_desc=new oc(oc.static_ltree,Ir.extra_lbits,257,286,15);oc.static_d_desc=new oc(oc.static_dtree,Ir.extra_dbits,0,30,15);oc.static_bl_desc=new oc(null,Ir.extra_blbits,0,19,7);var Mst=9,Nst=8;function oA(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var Zpe=0,GU=1,GE=2,bh=[new oA(0,0,0,0,Zpe),new oA(4,4,8,4,GU),new oA(4,5,16,8,GU),new oA(4,6,32,32,GU),new oA(4,4,16,16,GE),new oA(8,16,32,32,GE),new oA(8,16,128,128,GE),new oA(8,32,128,256,GE),new oA(32,128,258,1024,GE),new oA(32,258,258,4096,GE)],FU=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],dd=0,QU=1,Iv=2,kU=3,Lst=32,gK=42,UU=113,xv=666,_K=8,Ost=0,yK=1,Fst=2,Fr=3,zU=258,Hu=zU+Fr+1;function Jpe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function Qst(){let e=this,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_,y,C,E,I,b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q=new Ir,z=new Ir,F=new Ir;e.depth=[];let H,W,Z,Y,$,X;e.bl_count=[],e.heap=[],M=[],O=[],U=[];function he(){u=2*r,h[g-1]=0;for(let Oe=0;Oe<g-1;Oe++)h[Oe]=0;L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain,S=0,C=0,v=0,E=P=Fr-1,b=0,A=0}function ge(){let Oe;for(Oe=0;Oe<286;Oe++)M[Oe*2]=0;for(Oe=0;Oe<30;Oe++)O[Oe*2]=0;for(Oe=0;Oe<19;Oe++)U[Oe*2]=0;M[256*2]=1,e.opt_len=e.static_len=0,W=Z=0}function fe(){Q.dyn_tree=M,Q.stat_desc=oc.static_l_desc,z.dyn_tree=O,z.stat_desc=oc.static_d_desc,F.dyn_tree=U,F.stat_desc=oc.static_bl_desc,$=0,X=0,Y=8,ge()}e.pqdownheap=function(Oe,lt){let Ke=e.heap,$e=Ke[lt],pt=lt<<1;for(;pt<=e.heap_len&&(pt<e.heap_len&&Jpe(Oe,Ke[pt+1],Ke[pt],e.depth)&&pt++,!Jpe(Oe,$e,Ke[pt],e.depth));)Ke[lt]=Ke[pt],lt=pt,pt<<=1;Ke[lt]=$e};function ye(Oe,lt){let Ke=-1,$e,pt=Oe[1],Xt=0,xn=7,lo=4;pt===0&&(xn=138,lo=3),Oe[(lt+1)*2+1]=65535;for(let ro=0;ro<=lt;ro++)$e=pt,pt=Oe[(ro+1)*2+1],!(++Xt<xn&&$e==pt)&&(Xt<lo?U[$e*2]+=Xt:$e!==0?($e!=Ke&&U[$e*2]++,U[32]++):Xt<=10?U[34]++:U[36]++,Xt=0,Ke=$e,pt===0?(xn=138,lo=3):$e==pt?(xn=6,lo=3):(xn=7,lo=4))}function Ie(){let Oe;for(ye(M,Q.max_code),ye(O,z.max_code),F.build_tree(e),Oe=18;Oe>=3&&U[Ir.bl_order[Oe]*2+1]===0;Oe--);return e.opt_len+=3*(Oe+1)+5+5+4,Oe}function ve(Oe){e.pending_buf[e.pending++]=Oe}function Te(Oe){ve(Oe&255),ve(Oe>>>8&255)}function ke(Oe){ve(Oe>>8&255),ve(Oe&255&255)}function Ge(Oe,lt){let Ke,$e=lt;X>16-$e?(Ke=Oe,$|=Ke<<X&65535,Te($),$=Ke>>>16-X,X+=$e-16):($|=Oe<<X&65535,X+=$e)}function qe(Oe,lt){let Ke=Oe*2;Ge(lt[Ke]&65535,lt[Ke+1]&65535)}function tt(Oe,lt){let Ke,$e=-1,pt,Xt=Oe[1],xn=0,lo=7,ro=4;for(Xt===0&&(lo=138,ro=3),Ke=0;Ke<=lt;Ke++)if(pt=Xt,Xt=Oe[(Ke+1)*2+1],!(++xn<lo&&pt==Xt)){if(xn<ro)do qe(pt,U);while(--xn!==0);else pt!==0?(pt!=$e&&(qe(pt,U),xn--),qe(16,U),Ge(xn-3,2)):xn<=10?(qe(17,U),Ge(xn-3,3)):(qe(18,U),Ge(xn-11,7));xn=0,$e=pt,Xt===0?(lo=138,ro=3):pt==Xt?(lo=6,ro=3):(lo=7,ro=4)}}function $t(Oe,lt,Ke){let $e;for(Ge(Oe-257,5),Ge(lt-1,5),Ge(Ke-4,4),$e=0;$e<Ke;$e++)Ge(U[Ir.bl_order[$e]*2+1],3);tt(M,Oe-1),tt(O,lt-1)}function it(){X==16?(Te($),$=0,X=0):X>=8&&(ve($&255),$>>>=8,X-=8)}function tn(){Ge(yK<<1,3),qe(256,oc.static_ltree),it(),1+Y+10-X<9&&(Ge(yK<<1,3),qe(256,oc.static_ltree),it()),Y=7}function Wt(Oe,lt){let Ke,$e,pt;if(e.dist_buf[W]=Oe,e.lc_buf[W]=lt&255,W++,Oe===0?M[lt*2]++:(Z++,Oe--,M[(Ir._length_code[lt]+256+1)*2]++,O[Ir.d_code(Oe)*2]++),(W&8191)===0&&p>2){for(Ke=W*8,$e=S-C,pt=0;pt<30;pt++)Ke+=O[pt*2]*(5+Ir.extra_dbits[pt]);if(Ke>>>=3,Z<Math.floor(W/2)&&Ke<Math.floor($e/2))return!0}return W==H-1}function vt(Oe,lt){let Ke,$e,pt=0,Xt,xn;if(W!==0)do Ke=e.dist_buf[pt],$e=e.lc_buf[pt],pt++,Ke===0?qe($e,Oe):(Xt=Ir._length_code[$e],qe(Xt+256+1,Oe),xn=Ir.extra_lbits[Xt],xn!==0&&($e-=Ir.base_length[Xt],Ge($e,xn)),Ke--,Xt=Ir.d_code(Ke),qe(Xt,lt),xn=Ir.extra_dbits[Xt],xn!==0&&(Ke-=Ir.base_dist[Xt],Ge(Ke,xn)));while(pt<W);qe(256,Oe),Y=Oe[256*2+1]}function bi(){X>8?Te($):X>0&&ve($&255),$=0,X=0}function di(Oe,lt,Ke){bi(),Y=8,Ke&&(Te(lt),Te(~lt)),e.pending_buf.set(c.subarray(Oe,Oe+lt),e.pending),e.pending+=lt}function Ot(Oe,lt,Ke){Ge((Ost<<1)+(Ke?1:0),3),di(Oe,lt,!0)}function Tt(Oe,lt,Ke){let $e,pt,Xt=0;p>0?(Q.build_tree(e),z.build_tree(e),Xt=Ie(),$e=e.opt_len+3+7>>>3,pt=e.static_len+3+7>>>3,pt<=$e&&($e=pt)):$e=pt=lt+5,lt+4<=$e&&Oe!=-1?Ot(Oe,lt,Ke):pt==$e?(Ge((yK<<1)+(Ke?1:0),3),vt(oc.static_ltree,oc.static_dtree)):(Ge((Fst<<1)+(Ke?1:0),3),$t(Q.max_code+1,z.max_code+1,Xt+1),vt(M,O)),ge(),Ke&&bi()}function ii(Oe){Tt(C>=0?C:-1,S-C,Oe),C=S,t.flush_pending()}function Ct(){let Oe,lt,Ke,$e;do{if($e=u-v-S,$e===0&&S===0&&v===0)$e=r;else if($e==-1)$e--;else if(S>=r+r-Hu){c.set(c.subarray(r,r+r),0),B-=r,S-=r,C-=r,Oe=g,Ke=Oe;do lt=h[--Ke]&65535,h[Ke]=lt>=r?lt-r:0;while(--Oe!==0);Oe=r,Ke=Oe;do lt=f[--Ke]&65535,f[Ke]=lt>=r?lt-r:0;while(--Oe!==0);$e+=r}if(t.avail_in===0)return;Oe=t.read_buf(c,S+v,$e),v+=Oe,v>=Fr&&(A=c[S]&255,A=(A<<y^c[S+1]&255)&_)}while(v<Hu&&t.avail_in!==0)}function Ro(Oe){let lt=65535,Ke;for(lt>i-5&&(lt=i-5);;){if(v<=1){if(Ct(),v===0&&Oe==0)return dd;if(v===0)break}if(S+=v,v=0,Ke=C+lt,(S===0||S>=Ke)&&(v=S-Ke,S=Ke,ii(!1),t.avail_out===0)||S-C>=r-Hu&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Qo(Oe){let lt=N,Ke=S,$e,pt,Xt=P,xn=S>r-Hu?S-(r-Hu):0,lo=w,ro=a,$s=S+zU,ea=c[Ke+Xt-1],Vn=c[Ke+Xt];P>=T&&(lt>>=2),lo>v&&(lo=v);do if($e=Oe,!(c[$e+Xt]!=Vn||c[$e+Xt-1]!=ea||c[$e]!=c[Ke]||c[++$e]!=c[Ke+1])){Ke+=2,$e++;do;while(c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&Ke<$s);if(pt=zU-($s-Ke),Ke=$s-zU,pt>Xt){if(B=Oe,Xt=pt,pt>=lo)break;ea=c[Ke+Xt-1],Vn=c[Ke+Xt]}}while((Oe=f[Oe&ro]&65535)>xn&&--lt!==0);return Xt<=v?Xt:v}function ya(Oe){let lt=0,Ke;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),lt!==0&&(S-lt&65535)<=r-Hu&&x!=2&&(E=Qo(lt)),E>=Fr)if(Ke=Wt(S-B,E-Fr),v-=E,E<=L&&v>=Fr){E--;do S++,A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S;while(--E!==0);S++}else S+=E,E=0,A=c[S]&255,A=(A<<y^c[S+1]&255)&_;else Ke=Wt(0,c[S]&255),v--,S++;if(Ke&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function mr(Oe){let lt=0,Ke,$e;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),P=E,I=B,E=Fr-1,lt!==0&&P<L&&(S-lt&65535)<=r-Hu&&(x!=2&&(E=Qo(lt)),E<=5&&(x==1||E==Fr&&S-B>4096)&&(E=Fr-1)),P>=Fr&&E<=P){$e=S+v-Fr,Ke=Wt(S-1-I,P-Fr),v-=P-1,P-=2;do++S<=$e&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S);while(--P!==0);if(b=0,E=Fr-1,S++,Ke&&(ii(!1),t.avail_out===0))return dd}else if(b!==0){if(Ke=Wt(0,c[S-1]&255),Ke&&ii(!1),S++,v--,t.avail_out===0)return dd}else b=1,S++,v--}return b!==0&&(Ke=Wt(0,c[S-1]&255),b=0),ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Tr(Oe){return Oe.total_in=Oe.total_out=0,Oe.msg=null,e.pending=0,e.pending_out=0,n=UU,o=0,fe(),he(),0}e.deflateInit=function(Oe,lt,Ke,$e,pt,Xt){return $e||($e=_K),pt||(pt=Nst),Xt||(Xt=0),Oe.msg=null,lt==-1&&(lt=6),pt<1||pt>Mst||$e!=_K||Ke<9||Ke>15||lt<0||lt>9||Xt<0||Xt>2?-2:(Oe.dstate=e,s=Ke,r=1<<s,a=r-1,m=pt+7,g=1<<m,_=g-1,y=Math.floor((m+Fr-1)/Fr),c=new Uint8Array(r*2),f=[],h=[],H=1<<pt+6,e.pending_buf=new Uint8Array(H*4),i=H*4,e.dist_buf=new Uint16Array(H),e.lc_buf=new Uint8Array(H),p=lt,x=Xt,Tr(Oe))},e.deflateEnd=function(){return n!=gK&&n!=UU&&n!=xv?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==UU?-3:0)},e.deflateParams=function(Oe,lt,Ke){let $e=0;return lt==-1&&(lt=6),lt<0||lt>9||Ke<0||Ke>2?-2:(bh[p].func!=bh[lt].func&&Oe.total_in!==0&&($e=Oe.deflate(1)),p!=lt&&(p=lt,L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain),x=Ke,$e)},e.deflateSetDictionary=function(Oe,lt,Ke){let $e=Ke,pt,Xt=0;if(!lt||n!=gK)return-2;if($e<Fr)return 0;for($e>r-Hu&&($e=r-Hu,Xt=Ke-$e),c.set(lt.subarray(Xt,Xt+$e),0),S=$e,C=$e,A=c[0]&255,A=(A<<y^c[1]&255)&_,pt=0;pt<=$e-Fr;pt++)A=(A<<y^c[pt+(Fr-1)]&255)&_,f[pt&a]=h[A],h[A]=pt;return 0},e.deflate=function(Oe,lt){let Ke,$e,pt,Xt,xn;if(lt>4||lt<0)return-2;if(!Oe.next_out||!Oe.next_in&&Oe.avail_in!==0||n==xv&<!=4)return Oe.msg=FU[4],-2;if(Oe.avail_out===0)return Oe.msg=FU[7],-5;if(t=Oe,Xt=o,o=lt,n==gK&&($e=_K+(s-8<<4)<<8,pt=(p-1&255)>>1,pt>3&&(pt=3),$e|=pt<<6,S!==0&&($e|=Lst),$e+=31-$e%31,n=UU,ke($e)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&<<=Xt&<!=4)return t.msg=FU[7],-5;if(n==xv&&t.avail_in!==0)return Oe.msg=FU[7],-5;if(t.avail_in!==0||v!==0||lt!=0&&n!=xv){switch(xn=-1,bh[p].func){case Zpe:xn=Ro(lt);break;case GU:xn=ya(lt);break;case GE:xn=mr(lt);break;default:}if((xn==Iv||xn==kU)&&(n=xv),xn==dd||xn==Iv)return t.avail_out===0&&(o=-1),0;if(xn==QU){if(lt==1)tn();else if(Ot(0,0,!1),lt==3)for(Ke=0;Ke<g;Ke++)h[Ke]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return lt!=4?0:1}}function $pe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}$pe.prototype={deflateInit(e,t){let n=this;return n.dstate=new Qst,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function ege(e){let t=this,n=new $pe,i=kst(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,A=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(_){f.set(_,A),A+=_.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(A){c.set(A,u),u+=A.length}),c}}function kst(e){return e+5*(Math.floor(e/16383)+1)}var Wu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Cge=1440,Ust=0,Gst=4,zst=9,Vst=5,Hst=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Wst=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],jst=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Yst=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],qst=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],Kst=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],my=15;function xK(){let e=this,t,n,i,o,r,s;function a(u,f,h,A,g,m,_,y,C,E,I){let b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q;T=0,P=h;do i[u[f+T]]++,T++,P--;while(P!==0);if(i[0]==h)return _[0]=-1,y[0]=0,0;for(p=y[0],N=1;N<=my&&i[N]===0;N++);for(L=N,p<N&&(p=N),P=my;P!==0&&i[P]===0;P--);for(B=P,p>P&&(p=P),y[0]=p,U=1<<N;N<P;N++,U<<=1)if((U-=i[N])<0)return-3;if((U-=i[P])<0)return-3;for(i[P]+=U,s[1]=N=0,T=1,O=2;--P!==0;)s[O]=N+=i[T],O++,T++;P=0,T=0;do(N=u[f+T])!==0&&(I[s[N]++]=P),T++;while(++P<h);for(h=s[B],s[0]=P=0,T=0,v=-1,M=-p,r[0]=0,w=0,Q=0;L<=B;L++)for(b=i[L];b--!==0;){for(;L>M+p;){if(v++,M+=p,Q=B-M,Q=Q>p?p:Q,(S=1<<(N=L-M))>b+1&&(S-=b+1,O=L,N<Q))for(;++N<Q&&!((S<<=1)<=i[++O]);)S-=i[O];if(Q=1<<N,E[0]+Q>Cge)return-3;r[v]=w=E[0],E[0]+=Q,v!==0?(s[v]=P,o[0]=N,o[1]=p,N=P>>>M-p,o[2]=w-r[v-1]-N,C.set(o,(r[v-1]+N)*3)):_[0]=w}for(o[1]=L-M,T>=h?o[0]=192:I[T]<A?(o[0]=I[T]<256?0:96,o[2]=I[T++]):(o[0]=m[I[T]-A]+16+64,o[2]=g[I[T++]-A]),S=1<<L-M,N=P>>>M;N<Q;N+=S)C.set(o,(w+N)*3);for(N=1<<L-1;(P&N)!==0;N>>>=1)P^=N;for(P^=N,x=(1<<M)-1;(P&x)!=s[v];)v--,M-=p,x=(1<<M)-1}return U!==0&&B!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(my+1),o=[],r=new Int32Array(my),s=new Int32Array(my+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<my+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,my),0),s.set(i.subarray(0,my+1),0)}e.inflate_trees_bits=function(u,f,h,A,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,A,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,A,g,m,_,y,C){let E;return c(288),t[0]=0,E=a(h,0,u,257,jst,Yst,m,A,y,t,n),E!=0||A[0]===0?(E==-3?C.msg="oversubscribed literal/length tree":E!=-4&&(C.msg="incomplete literal/length tree",E=-3),E):(c(288),E=a(h,u,f,0,qst,Kst,_,g,y,t,n),E!=0||g[0]===0&&u>257?(E==-3?C.msg="oversubscribed distance tree":E==-5?(C.msg="incomplete distance tree",E=-3):E!=-4&&(C.msg="empty distance tree with lengths",E=-3),E):0)}}xK.inflate_trees_fixed=function(e,t,n,i){return e[0]=zst,t[0]=Vst,n[0]=Hst,i[0]=Wst,0};var WU=0,tge=1,nge=2,ige=3,oge=4,rge=5,sge=6,CK=7,age=8,jU=9;function Xst(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,A=0,g,m=0;function _(y,C,E,I,b,S,B,v){let P,N,L,p,x,T,w,M,O,U,Q,z,F,H,W,Z;w=v.next_in_index,M=v.avail_in,x=B.bitb,T=B.bitk,O=B.write,U=O<B.read?B.read-O-1:B.end-O,Q=Wu[y],z=Wu[C];do{for(;T<20;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(P=x&Q,N=E,L=I,Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;continue}do{if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15,F=N[Z+2]+(x&Wu[p]),x>>=p,T-=p;T<15;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;P=x&z,N=b,L=S,Z=(L+P)*3,p=N[Z];do if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15;T<p;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(H=N[Z+2]+(x&Wu[p]),x>>=p,T-=p,U-=F,O>=H)W=O-H,O-W>0&&2>O-W?(B.win[O++]=B.win[W++],B.win[O++]=B.win[W++],F-=2):(B.win.set(B.win.subarray(W,W+2),O),O+=2,W+=2,F-=2);else{W=O-H;do W+=B.end;while(W<0);if(p=B.end-W,F>p){if(F-=p,O-W>0&&p>O-W)do B.win[O++]=B.win[W++];while(--p!==0);else B.win.set(B.win.subarray(W,W+p),O),O+=p,W+=p,p=0;W=0}}if(O-W>0&&F>O-W)do B.win[O++]=B.win[W++];while(--F!==0);else B.win.set(B.win.subarray(W,W+F),O),O+=F,W+=F,F=0;break}else if((p&64)===0)P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,p=N[Z];else return v.msg="invalid distance code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3;while(!0);break}if((p&64)===0){if(P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;break}}else return(p&32)!==0?(F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,1):(v.msg="invalid literal/length code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3)}while(!0)}while(U>=258&&M>=10);return F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,0}e.init=function(y,C,E,I,b,S){t=WU,u=y,f=C,h=E,A=I,g=b,m=S,i=null},e.proc=function(y,C,E){let I,b,S,B=0,v=0,P=0,N,L,p,x;for(P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L;;)switch(t){case WU:if(p>=258&&N>=10&&(y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,E=_(u,f,h,A,g,m,y,C),P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L,E!=0)){t=E==1?CK:jU;break}r=u,i=h,o=A,t=tge;case tge:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>>=i[b+1],v-=i[b+1],S=i[b],S===0){s=i[b+2],t=sge;break}if((S&16)!==0){a=S&15,n=i[b+2],t=nge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}if((S&32)!==0){t=CK;break}return t=jU,C.msg="invalid literal/length code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case nge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}n+=B&Wu[I],B>>=I,v-=I,r=f,i=g,o=m,t=ige;case ige:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>=i[b+1],v-=i[b+1],S=i[b],(S&16)!==0){a=S&15,c=i[b+2],t=oge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}return t=jU,C.msg="invalid distance code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case oge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}c+=B&Wu[I],B>>=I,v-=I,t=rge;case rge:for(x=L-c;x<0;)x+=y.end;for(;n!==0;){if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);y.win[L++]=y.win[x++],p--,x==y.end&&(x=0),n--}t=WU;break;case sge:if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);E=0,y.win[L++]=s,p--,t=WU;break;case CK:if(v>7&&(v-=8,N++,P--),y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,y.read!=y.write)return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);t=age;case age:return E=1,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case jU:return E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);default:return E=-2,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E)}},e.free=function(){}}var cge=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fT=0,EK=1,lge=2,uge=3,fge=4,dge=5,YU=6,qU=7,hge=8,zE=9;function Jst(e,t){let n=this,i=fT,o=0,r=0,s=0,a,c=[0],u=[0],f=new Xst,h=0,A=new Int32Array(Cge*3),g=0,m=new xK;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(_,y){y&&(y[0]=g),i==YU&&f.free(_),i=fT,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(_,y){let C,E,I;return E=_.next_out_index,I=n.read,C=(I<=n.write?n.write:n.end)-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C,I==n.end&&(I=0,n.write==n.end&&(n.write=0),C=n.write-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C),_.next_out_index=E,n.read=I,y},n.proc=function(_,y){let C,E,I,b,S,B,v,P;for(b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B;;){let N,L,p,x,T,w,M,O;switch(i){case fT:for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}switch(C=E&7,h=C&1,C>>>1){case 0:E>>>=3,I-=3,C=I&7,E>>>=C,I-=C,i=EK;break;case 1:N=[],L=[],p=[[]],x=[[]],xK.inflate_trees_fixed(N,L,p,x),f.init(N[0],L[0],p[0],0,x[0],0),E>>>=3,I-=3,i=YU;break;case 2:E>>>=3,I-=3,i=uge;break;case 3:return E>>>=3,I-=3,i=zE,_.msg="invalid block type",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}break;case EK:for(;I<32;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if((~E>>>16&65535)!=(E&65535))return i=zE,_.msg="invalid stored block lengths",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);o=E&65535,E=I=0,i=o!==0?lge:h!==0?qU:fT;break;case lge:if(S===0||v===0&&(B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0&&(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0)))return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(y=0,C=o,C>S&&(C=S),C>v&&(C=v),n.win.set(_.read_buf(b,C),B),b+=C,S-=C,B+=C,v-=C,(o-=C)!==0)break;i=h!==0?qU:fT;break;case uge:for(;I<14;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(r=C=E&16383,(C&31)>29||(C>>5&31)>29)return i=zE,_.msg="too many length or distance symbols",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(C=258+(C&31)+(C>>5&31),!a||a.length<C)a=[];else for(P=0;P<C;P++)a[P]=0;E>>>=14,I-=14,s=0,i=fge;case fge:for(;s<4+(r>>>10);){for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}a[cge[s++]]=E&7,E>>>=3,I-=3}for(;s<19;)a[cge[s++]]=0;if(c[0]=7,C=m.inflate_trees_bits(a,c,u,A,_),C!=0)return y=C,y==-3&&(a=null,i=zE),n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);s=0,i=dge;case dge:for(;C=r,!(s>=258+(C&31)+(C>>5&31));){let U,Q;for(C=c[0];I<C;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(C=A[(u[0]+(E&Wu[C]))*3+1],Q=A[(u[0]+(E&Wu[C]))*3+2],Q<16)E>>>=C,I-=C,a[s++]=Q;else{for(P=Q==18?7:Q-14,U=Q==18?11:3;I<C+P;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(E>>>=C,I-=C,U+=E&Wu[P],E>>>=P,I-=P,P=s,C=r,P+U>258+(C&31)+(C>>5&31)||Q==16&&P<1)return a=null,i=zE,_.msg="invalid bit length repeat",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);Q=Q==16?a[P-1]:0;do a[P++]=Q;while(--U!==0);s=P}}if(u[0]=-1,T=[],w=[],M=[],O=[],T[0]=9,w[0]=6,C=r,C=m.inflate_trees_dynamic(257+(C&31),1+(C>>5&31),a,T,w,M,O,A,_),C!=0)return C==-3&&(a=null,i=zE),y=C,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);f.init(T[0],w[0],A,M[0],A,O[0]),i=YU;case YU:if(n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,(y=f.proc(n,_,y))!=1)return n.inflate_flush(_,y);if(y=0,f.free(_),b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B,h===0){i=fT;break}i=qU;case qU:if(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,n.read!=n.write)return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);i=hge;case hge:return y=1,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);case zE:return y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);default:return y=-2,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}}},n.free=function(_){n.reset(_,null),n.win=null,A=null},n.set_dictionary=function(_,y,C){n.win.set(_.subarray(y,y+C),0),n.read=n.write=C},n.sync_point=function(){return i==EK?1:0}}var Zst=32,$st=8,eat=0,mge=1,Age=2,pge=3,gge=4,_ge=5,IK=6,bv=7,yge=12,Ay=13,tat=[0,0,255,255];function nat(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=bv,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new Jst(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Gst?-5:0,o=-5;;)switch(s.mode){case eat:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=$st){s.mode=Ay,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=Ay,n.msg="invalid win size",s.marker=5;break}s.mode=mge;case mge:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=Ay,n.msg="incorrect header check",s.marker=5;break}if((r&Zst)===0){s.mode=bv;break}s.mode=Age;case Age:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=pge;case pge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=gge;case gge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=_ge;case _ge:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=IK,2);case IK:return s.mode=Ay,n.msg="need dictionary",s.marker=0,-2;case bv:if(o=s.blocks.proc(n,o),o==-3){s.mode=Ay,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=yge;case yge:return n.avail_in=0,1;case Ay:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=IK)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=bv,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=Ay&&(c.mode=Ay,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==tat[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=bv,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function Ege(){}Ege.prototype={inflateInit(e){let t=this;return t.istate=new nat,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function Ige(e){let t=this,n=new Ege,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Ust,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,A=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=A&&(c(n.next_in_index),A=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(_){h.set(_,g),g+=_.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var bK=new Date(2107,11,31),TK=new Date(1980,0,1),ni=void 0,ju="undefined",Up="function";var Tv=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var iat=64,xge=2;try{typeof navigator!=ju&&navigator.hardwareConcurrency&&(xge=navigator.hardwareConcurrency)}catch{}var oat={chunkSize:512*1024,maxWorkers:xge,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ni,CompressionStreamNative:typeof CompressionStream!=ju&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=ju&&DecompressionStream},gy=Object.assign({},oat);function Sv(){return gy}function KU(e){return Math.max(e.chunkSize,iat)}function dT(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(py("baseURL",t),py("chunkSize",n),py("maxWorkers",i),py("terminateWorkerTimeout",o),py("useCompressionStream",r),py("useWebWorkers",s),a&&(gy.CompressionStream=new Tv(a)),c&&(gy.DecompressionStream=new Tv(c)),py("CompressionStream",u),py("DecompressionStream",f),h!==ni){let{deflate:A,inflate:g}=h;if((A||g)&&(gy.workerScripts||(gy.workerScripts={})),A){if(!Array.isArray(A))throw new Error("workerScripts.deflate must be an array");gy.workerScripts.deflate=A}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");gy.workerScripts.inflate=g}}}function py(e,t){t!==ni&&(gy[e]=t)}var bge=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;bge[e]=t}var Gp=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^bge[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var wv=class extends TransformStream{constructor(){let t,n=new Gp;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function hT(e){if(typeof TextEncoder==ju){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var yl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=yl.getPartial(n);return i===32?e.concat(t):yl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+yl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=yl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=yl.getPartial(o);return i.push(yl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},Bv={bytes:{fromBits(e){let n=yl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(yl.partial(8*(n&3),i)),t}}},Tge={};Tge.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=Bv.utf8String.toBits(e));let n=t._buffer=yl.concat(t._buffer,e),i=t._length,o=t._length=i+yl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=yl.concat(t,[yl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var SK={};SK.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let A=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=A=A<<24^A>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],A=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],_=4,y,C,E;for(let I=0;I<i;I++)y=s[h>>>24]^a[A>>16&255]^c[g>>8&255]^u[m&255]^n[_],C=s[A>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[_+1],E=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[A&255]^n[_+2],m=s[m>>>24]^a[h>>16&255]^c[A>>8&255]^u[g&255]^n[_+3],_+=4,h=y,A=C,g=E;for(let I=0;I<4;I++)o[t?3&-I:I]=f[h>>>24]<<24^f[A>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[_++],y=h,h=A,A=g,g=m,m=y;return o}};var Sge={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},wK={};wK.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=yl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return yl.clamp(t,o)}};var _y={importKey(e){return new _y.hmacSha1(Bv.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),A=0,g=yl;for(t=Bv.bytes.toBits(t),u=1;A<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;A<(o||1)&&a<r.length;a++)h.setInt32(A,r[a]),A+=4}return f.slice(0,i/8)}};_y.hmacSha1=class{constructor(e){let t=this,n=t._hash=Tge.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var rat=typeof crypto!=ju&&typeof crypto.getRandomValues==Up,yy="Invalid password",VE="Invalid signature",zp="zipjs-abort-check-password";function XU(e){return rat?crypto.getRandomValues(e):Sge.getRandomValues(e)}var mT=16,sat="raw",Dge={name:"PBKDF2"},aat={name:"HMAC"},cat="SHA-1",lat=Object.assign({hash:aat},Dge),BK=Object.assign({iterations:1e3,hash:{name:cat}},Dge),uat=["deriveBits"],vv=[8,12,16],Dv=[16,24,32],Cy=10,fat=[0,0,0,0],$U=typeof crypto!=ju,Mv=$U&&crypto.subtle,vge=$U&&typeof Mv!=ju,rA=Bv.bytes,dat=SK.aes,hat=wK.ctrGladman,mat=_y.hmacSha1,wge=$U&&vge&&typeof Mv.importKey==Up,Bge=$U&&vge&&typeof Mv.deriveBits==Up,JU=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:Mge(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:A}=c;u?(await Aat(c,f,u,hd(s,0,vv[f]+2)),s=hd(s,vv[f]+2),r?a.error(new Error(zp)):h()):await A;let g=new Uint8Array(s.length-Cy-(s.length-Cy)%mT);a.enqueue(Pge(c,s,g,0,Cy,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let A=hd(f,0,f.length-Cy),g=hd(f,f.length-Cy),m=new Uint8Array;if(A.length){let _=Rv(rA,A);u.update(_);let y=c.update(_);m=Pv(rA,y)}if(a){let _=hd(Pv(rA,u.digest()),0,Cy);for(let y=0;y<Cy;y++)if(_[y]!=g[y])throw new Error(VE)}s.enqueue(m)}}})}},ZU=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:Mge(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,A=new Uint8Array;c?(A=await pat(a,u,c),f()):await h;let g=new Uint8Array(A.length+r.length-r.length%mT);g.set(A,0),s.enqueue(Pge(a,r,g,A.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(Rv(rA,c));a.update(h),f=Pv(rA,h)}o.signature=Pv(rA,a.digest()).slice(0,Cy),r.enqueue(DK(f,o.signature))}}}),o=this}};function Pge(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=DK(c,t),n=yat(n,u-u%mT));let f;for(f=0;f<=u-mT;f+=mT){let h=Rv(rA,hd(t,f,f+mT));r&&a.update(h);let A=s.update(h);r||a.update(A),n.set(Pv(rA,A),f+i)}return e.pending=hd(t,f),n}async function Aat(e,t,n,i){let o=await Rge(e,t,n,hd(i,0,vv[t])),r=hd(i,vv[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(yy)}async function pat(e,t,n){let i=XU(new Uint8Array(vv[t])),o=await Rge(e,t,n,i);return DK(i,o)}async function Rge(e,t,n,i){e.password=null;let o=await gat(sat,n,lat,!1,uat),r=await _at(Object.assign({salt:i},BK),o,8*(Dv[t]*2+2)),s=new Uint8Array(r),a=Rv(rA,hd(s,0,Dv[t])),c=Rv(rA,hd(s,Dv[t],Dv[t]*2)),u=hd(s,Dv[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new hat(new dat(a),Array.from(fat)),hmac:new mat(c)}),u}async function gat(e,t,n,i,o){if(wge)try{return await Mv.importKey(e,t,n,i,o)}catch{return wge=!1,_y.importKey(t)}else return _y.importKey(t)}async function _at(e,t,n){if(Bge)try{return await Mv.deriveBits(e,t,n)}catch{return Bge=!1,_y.pbkdf2(t,e.salt,BK.iterations,n)}else return _y.pbkdf2(t,e.salt,BK.iterations,n)}function Mge(e,t){return t===ni?hT(e):t}function DK(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function yat(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function hd(e,t,n){return e.subarray(t,n)}function Pv(e,t){return e.fromBits(t)}function Rv(e,t){return e.toBits(t)}var AT=12,eG=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(o,r){let s=this;if(s.password){let a=Nge(s,o.subarray(0,AT));if(s.password=null,a[AT-1]!=s.passwordVerification)throw new Error(yy);o=o.subarray(AT)}i?r.error(new Error(zp)):r.enqueue(Nge(s,o))}})}},tG=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=XU(new Uint8Array(AT));c[AT-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(Lge(r,c),0),a=AT}else s=new Uint8Array(i.length),a=0;s.set(Lge(r,i),a),o.enqueue(s)}})}};function Nge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,n[i]);return n}function Lge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,t[i]);return n}function Fge(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Gp(n[0]),crcKey2:new Gp(n[2])});for(let i=0;i<t.length;i++)vK(e,t.charCodeAt(i))}function vK(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=Oge(Math.imul(Oge(i+kge(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function Qge(e){let t=e.keys[2]|2;return kge(Math.imul(t,t^1)>>>8)}function kge(e){return e&255}function Oge(e){return e&4294967295}var Nv="Invalid uncompressed size",Cat="deflate-raw",nG=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,A,g,m=super.readable;(!s||c)&&u&&(A=new wv,m=Ey(m,A)),r&&(m=Gge(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=Ey(m,new tG(t)):(g=new ZU(t),m=Ey(m,g))),Uge(h,m,()=>{let _;s&&!c&&(_=g.signature),(!s||c)&&u&&(_=new DataView(A.value.buffer).getUint32(0)),h.signature=_})}},iG=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,A,g=super.readable;s&&(r?g=Ey(g,new eG(t)):(A=new JU(t),g=Ey(g,A))),u&&(g=Gge(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new wv,g=Ey(g,h)),Uge(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(VE)}})}};function Uge(e,t,n){t=Ey(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function Gge(e,t,n,i,o){let r=t&&i?i:o;return Ey(e,new r(Cat,n))}function Ey(e,t){return e.pipeThrough(t)}var zge="message",Vge="start",Hge="pull",PK="data",Wge="ack",RK="close",sG="deflate",aG="inflate";var oG=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(sG)?r=nG:o.startsWith(aG)&&(r=iG),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,u=new TransformStream({transform(h,A){h&&h.length&&(s+=h.length,A.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),f=new TransformStream({transform(h,A){if(h&&h.length&&(A.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(Nv)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(u).pipeThrough(a).pipeThrough(f)}})}},rG=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var qge=typeof Worker!=ju;var pT=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new rG(r.chunkSize)).pipeThrough(new NK(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(A=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=A:(g.terminate(),A()),t.interface=null):A()})},onTaskFinished(){let{resolveTerminated:A}=t;A&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),A()),t.busy=!1,f(t)}}),(a&&qge?Eat:Kge)(t,r)}},NK=class extends TransformStream{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await MK(t,i)},async transform(s,a){r+=s.length,n&&await MK(n,r,i),a.enqueue(s)},async flush(){o&&await MK(o,r)}})}};async function MK(e,...t){try{await e(...t)}catch{}}function Kge(e,t){return{run:()=>Iat(e,t)}}function Eat(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Tat(e.scripts[0],n,e)}catch{return qge=!1,Kge(e,t)}Object.assign(e,{worker:o,interface:{run:()=>xat(e,{chunkSize:i})}})}return e.interface}async function Iat({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new oG(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function xat(e,t){let n,i,o=new Promise((A,g)=>{n=A,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=bat(e.writable),f=cG({type:Vge,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function bat(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var jge=!0,Yge=!0;function Tat(e,t,n){let i={type:"module"},o,r;typeof e==Up&&(e=e());try{o=new URL(e,t)}catch{o=e}if(jge)try{r=new Worker(o)}catch{jge=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(zge,s=>Sat(s,n)),r}function cG(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&Yge?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{Yge=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Sat({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:_,name:y,outputSize:C}=s,E=new Error(g);Object.assign(E,{stack:m,code:_,name:y,outputSize:C}),A(E)}else{if(n==Hge){let{value:g,done:m}=await a.read();cG({type:PK,value:g,done:m,messageId:o},t)}n==PK&&(await c.ready,await c.write(new Uint8Array(i)),cG({type:Wge,messageId:o},t)),n==RK&&A(null,r)}}catch(g){cG({type:RK,messageId:o},t),A(g)}function A(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var HE=[],LK=[];var Xge=0;async function lG(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:A}=i;t.transferStreams=o||o===ni;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ni&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ni&&i.useCompressionStream,(await m()).run();async function m(){let y=HE.find(C=>!C.busy);if(y)return Jge(y),new pT(y,e,t,_);if(HE.length<A){let C={indexWorker:Xge};return Xge++,HE.push(C),new pT(C,e,t,_)}else return new Promise(C=>LK.push({resolve:C,stream:e,workerOptions:t}))}function _(y){if(LK.length){let[{resolve:C,stream:E,workerOptions:I}]=LK.splice(0,1);C(new pT(y,E,I,_))}else y.worker?(Jge(y),wat(y,t)):HE=HE.filter(C=>C!=y)}}function wat(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{HE=HE.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function Jge(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var Bat="Writer iterator completed too soon",Dat="Writer not initialized",vat="text/plain";var Pat="Content-Type";var Rat=64*1024,QK="writable",gT=class{constructor(){this.size=0}init(){this.initialized=!0}},uG=class extends gT{get readable(){let t=this,{chunkSize:n=Rat}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,u=s===ni?n:Math.min(n,s-c),f=await Ua(t,r+c,u,a);o.enqueue(f),c+n>s||s===ni&&!f.length&&u?o.close():this.chunkOffset+=n}});return i}},OK=class extends gT{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(Dat);return t.writeUint8Array(i)}});Object.defineProperty(t,QK,{get(){return n}})}writeUint8Array(){}};var fG=class extends OK{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},Vp=class extends uG{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},Lv=class extends gT{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Pat,t]),Object.defineProperty(n,QK,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},dG=class extends Vp{constructor(t){super(new Blob([t],{type:vat}))}},hG=class extends Lv{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var FK=class extends uG{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let u=r[a];if(u){let f=u.size;if(c+n<=f)s=await Ua(u,c,n);else{let h=f-c;s=new Uint8Array(n);let A=await Ua(u,c,h);s.set(A,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),A.length+g.length<n&&(s=s.subarray(0,A.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},mG=class extends gT{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.subarray(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.subarray(h))):await c(f);else{let{value:A,done:g}=await t.next();if(g&&!A)throw new Error(Bat);o=A,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await aA(o),r=A.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,QK,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){await s.close()}}},WE=class{constructor(t){return Array.isArray(t)&&(t=new FK(t)),t instanceof ReadableStream&&(t={readable:t}),t}},_T=class{constructor(t){return t.writable===ni&&typeof t.next==Up&&(t=new mG(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ni&&(t.size=0),t instanceof mG||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function aA(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function Ua(e,t,n,i){return e.readUint8Array(t,n,i)}var Zge="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Mat=Zge.length==256;function $ge(e){if(Mat){let t="";for(let n=0;n<e.length;n++)t+=Zge[e[n]];return t}else return new TextDecoder().decode(e)}function Ov(e,t){return t&&t.trim().toLowerCase()=="cp437"?$ge(e):new TextDecoder(t).decode(e)}var kK="filename",UK="rawFilename",Fv="comment",GK="rawComment",Qv="uncompressedSize",zK="compressedSize",VK="offset",AG="diskNumberStart",yT="lastModDate",pG="rawLastModDate",kv="lastAccessDate",e_e="rawLastAccessDate",Uv="creationDate",t_e="rawCreationDate",HK="internalFileAttribute",WK="internalFileAttributes",jK="externalFileAttribute",YK="externalFileAttributes",qK="msDosCompatible",gG="zip64",KK="encrypted",XK="version",JK="versionMadeBy",ZK="zipCrypto",Gv="directory",$K="executable",e7="compressionMethod",t7="signature",n7="extraField",Nat=[kK,UK,zK,Qv,yT,pG,Fv,GK,kv,Uv,VK,AG,AG,HK,WK,jK,YK,qK,gG,KK,XK,JK,ZK,Gv,$K,e7,t7,n7,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],Iy=class{constructor(t){Nat.forEach(n=>this[n]=t[n])}};var n_e="filenameEncoding",i_e="commentEncoding",o_e="decodeText",r_e="extractPrependedData",s_e="extractAppendedData",_G="password",yG="rawPassword",CG="passThrough",EG="signal",a_e="checkPasswordOnly",c_e="checkOverlappingEntryOnly",l_e="checkOverlappingEntry",u_e="checkSignature",IG="useWebWorkers",xG="useCompressionStream",f_e="transferStreams",bG="preventClose",d_e="encryptionStrength",h_e="extendedTimestamp",m_e="keepOrder",A_e="level",p_e="bufferedWrite",g_e="dataDescriptorSignature",__e="useUnicodeFileNames",y_e="dataDescriptor",i7="supportZip64SplitFile",C_e="encodeText",o7="offset",r7="usdz";var s7="File format is not recognized",kat="End of central directory not found",Uat="End of Zip64 central directory locator not found",Gat="Central directory header not found",zat="Local file header not found",Vat="Zip64 extra field not found",Hat="File contains encrypted entry",Wat="Encryption method not supported",E_e="Compression method not supported",I_e="Split zip file",jat="Overlapping entry found",x_e="utf-8",b_e="cp437",Yat=[[Qv,4294967295],[zK,4294967295],[VK,4294967295],[AG,65535]],qat={65535:{getValue:xr,bytes:4},4294967295:{getValue:ET,bytes:8}},xT=class{constructor(t,n={}){Object.assign(this,{reader:new WE(t),options:n,config:Sv(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await aA(i),(i.size===ni||!i.readUint8Array)&&(i=new Vp(await new Response(i.readable).blob()),await aA(i)),i.size<22)throw new Error(s7);i.chunkSize=KU(o);let r=await ect(i,101010256,i.size,22,65535*16);if(!r){let L=await Ua(i,0,4),p=Qr(L);throw xr(p)==134695760?new Error(I_e):new Error(kat)}let s=Qr(r),a=xr(s,12),c=xr(s,16),u=r.offset,f=Ga(s,20),h=u+22+f,A=Ga(s,4),g=i.lastDiskNumber||0,m=Ga(s,6),_=Ga(s,8),y=0,C=0;if(c==4294967295||a==4294967295||_==65535||m==65535){let L=await Ua(i,r.offset-20,20),p=Qr(L);if(xr(p,0)==117853008){c=ET(p,8);let x=await Ua(i,c,56,-1),T=Qr(x),w=r.offset-20-56;if(xr(T,0)!=101075792&&c!=w){let M=c;c=w,c>M&&(y=c-M),x=await Ua(i,c,56,-1),T=Qr(x)}if(xr(T,0)!=101075792)throw new Error(Uat);A==65535&&(A=xr(T,16)),m==65535&&(m=xr(T,20)),_==65535&&(_=ET(T,32)),a==4294967295&&(a=ET(T,40)),c-=a}}if(c>=i.size&&(y=i.size-c-a-22,c=i.size-a-22),g!=A)throw new Error(I_e);if(c<0)throw new Error(s7);let E=0,I=await Ua(i,c,a,m),b=Qr(I);if(a){let L=r.offset-a;if(xr(b,E)!=33639248&&c!=L){let p=c;c=L,c>p&&(y+=c-p),I=await Ua(i,c,a,m),b=Qr(I)}}let S=r.offset-c-(i.lastDiskOffset||0);if(a!=S&&S>=0&&(a=S,I=await Ua(i,c,a,m),b=Qr(I)),c<0||c>=i.size)throw new Error(s7);let B=rc(n,t,n_e),v=rc(n,t,i_e);for(let L=0;L<_;L++){let p=new c7(i,o,n.options);if(xr(b,E)!=33639248)throw new Error(Gat);S_e(p,b,E+6);let x=!!p.bitFlag.languageEncodingFlag,T=E+46,w=T+p.filenameLength,M=w+p.extraFieldLength,O=Ga(b,E+4),U=O>>8==0,Q=O>>8==3,z=I.subarray(T,w),F=Ga(b,E+32),H=M+F,W=I.subarray(M,H),Z=x,Y=x,$=xr(b,E+38),X=U&&(CT(b,E+38)&16)==16||Q&&($>>16&61440)==16384||z.length&&z[z.length-1]=="/".charCodeAt(0),he=Q&&($>>16&73)!=0,ge=xr(b,E+42)+y;Object.assign(p,{versionMadeBy:O,msDosCompatible:U,compressedSize:0,uncompressedSize:0,commentLength:F,directory:X,offset:ge,diskNumberStart:Ga(b,E+34),internalFileAttributes:Ga(b,E+36),externalFileAttributes:$,rawFilename:z,filenameUTF8:Z,commentUTF8:Y,rawExtraField:I.subarray(w,M),executable:he}),p.internalFileAttribute=p.internalFileAttributes,p.externalFileAttribute=p.externalFileAttributes;let fe=rc(n,t,o_e)||Ov,ye=Z?x_e:B||b_e,Ie=Y?x_e:v||b_e,ve=fe(z,ye);ve===ni&&(ve=Ov(z,ye));let Te=fe(W,Ie);Te===ni&&(Te=Ov(W,Ie)),Object.assign(p,{rawComment:W,filename:ve,comment:Te,directory:X||ve.endsWith("/")}),C=Math.max(ge,C),w_e(p,p,b,E+6),p.zipCrypto=p.encrypted&&!p.extraFieldAES;let ke=new Iy(p);ke.getData=(qe,tt)=>p.getData(qe,ke,n.readRanges,tt),ke.arrayBuffer=async qe=>{let tt=new TransformStream,[$t]=await Promise.all([new Response(tt.readable).arrayBuffer(),p.getData(tt,ke,n.readRanges,qe)]);return $t},E=H;let{onprogress:Ge}=t;if(Ge)try{await Ge(L+1,_,new Iy(p))}catch{}yield ke}let P=rc(n,t,r_e),N=rc(n,t,s_e);return P&&(n.prependedData=C>0?await Ua(i,0,C):new Uint8Array),n.comment=f?await Ua(i,u+22,f):new Uint8Array,N&&(n.appendedData=h<i.size?await Ua(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var c7=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:u,extraFieldZip64:f,compressionMethod:h,config:A,bitFlag:g,signature:m,rawLastModDate:_,uncompressedSize:y,compressedSize:C}=r,{dataDescriptor:E}=g,I=n.localDirectory={},b=await Ua(s,a,30,c),S=Qr(b),B=rc(r,o,_G),v=rc(r,o,yG),P=rc(r,o,CG);if(B=B&&B.length&&B,v=v&&v.length&&v,u&&u.originalCompressionMethod!=99)throw new Error(E_e);if(h!=0&&h!=8&&!P)throw new Error(E_e);if(xr(S,0)!=67324752)throw new Error(zat);S_e(I,S,4);let{extraFieldLength:N,filenameLength:L,lastAccessDate:p,creationDate:x}=I;I.rawExtraField=N?await Ua(s,a+30+L,N,c):new Uint8Array,w_e(r,I,S,4,!0),Object.assign(n,{lastAccessDate:p,creationDate:x});let T=r.encrypted&&I.encrypted&&!P,w=T&&!u;if(P||(n.zipCrypto=w),T){if(!w&&u.strength===ni)throw new Error(Wat);if(!B&&!v)throw new Error(Hat)}let M=a+30+L+N,O=C,U=s.readable;Object.assign(U,{diskNumberStart:c,offset:M,size:O});let Q=rc(r,o,EG),z=rc(r,o,a_e),F=rc(r,o,l_e),H=rc(r,o,c_e);H&&(F=!0);let{onstart:W,onprogress:Z,onend:Y}=o,$={options:{codecType:aG,password:B,rawPassword:v,zipCrypto:w,encryptionStrength:u&&u.strength,signed:rc(r,o,u_e)&&!P,passwordVerification:w&&(E?_>>>8&255:m>>>24&255),outputSize:y,signature:m,compressed:h!=0&&!P,encrypted:r.encrypted&&!P,useWebWorkers:rc(r,o,IG),useCompressionStream:rc(r,o,xG),transferStreams:rc(r,o,f_e),checkPasswordOnly:z},config:A,streamOptions:{signal:Q,size:O,onstart:W,onprogress:Z,onend:Y}};F&&await $at({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:m,compressedSize:C,uncompressedSize:y,dataOffset:M,dataDescriptor:E||I.bitFlag.dataDescriptor,extraFieldZip64:f||I.extraFieldZip64,readRanges:i});let X;try{if(!H){z&&(t=new WritableStream),t=new _T(t),await aA(t,P?C:y),{writable:X}=t;let{outputSize:he}=await lG({readable:U,writable:X},$);if(t.size+=he,he!=(P?C:y))throw new Error(Nv)}}catch(he){if(he.outputSize!==ni&&(t.size+=he.outputSize),!z||he.message!=zp)throw he}finally{!rc(r,o,bG)&&X&&!X.locked&&await X.getWriter().close()}return z||H?ni:t.getData?t.getData():X}};function S_e(e,t,n){let i=e.rawBitFlag=Ga(t,n+2),o=(i&1)==1,r=xr(t,n+6);Object.assign(e,{encrypted:o,version:Ga(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:tct(r),filenameLength:Ga(t,n+22),extraFieldLength:Ga(t,n+24)})}function w_e(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Qr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let C=Ga(a,c),E=Ga(a,c+2);s.set(C,{type:C,data:r.slice(c+4,c+4+E)}),c+=4+E}}catch{}let u=Ga(n,i+4);Object.assign(t,{signature:xr(n,i+10),compressedSize:xr(n,i+14),uncompressedSize:xr(n,i+18)});let f=s.get(1);f&&(Kat(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(T_e(h,kK,UK,t,e),t.extraFieldUnicodePath=h);let A=s.get(25461);A&&(T_e(A,Fv,GK,t,e),t.extraFieldUnicodeComment=A);let g=s.get(39169);g?(Xat(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(Jat(m,t),t.extraFieldNTFS=m);let _=s.get(21589);_&&(Zat(_,t,o),t.extraFieldExtendedTimestamp=_);let y=s.get(6534);y&&(t.extraFieldUSDZ=y)}function Kat(e,t){t.zip64=!0;let n=Qr(e.data),i=Yat.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=qat[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(Vat)}}function T_e(e,t,n,i,o){let r=Qr(e.data),s=new Gp;s.append(o[n]);let a=Qr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=xr(r,1);Object.assign(e,{version:CT(r,0),[t]:Ov(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==xr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Xat(e,t,n){let i=Qr(e.data),o=CT(i,4);Object.assign(e,{vendorVersion:CT(i,0),vendorId:CT(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ga(i,5)}),t.compressionMethod=e.compressionMethod}function Jat(e,t){let n=Qr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ga(n,i),s=Ga(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Qr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=a7(s),f=a7(a),h=a7(c),A={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,A),Object.assign(t,A)}}catch{}}function Zat(e,t,n){let i=Qr(e.data),o=CT(i,0),r=[],s=[];n?((o&1)==1&&(r.push(yT),s.push(pG)),(o&2)==2&&(r.push(kv),s.push(e_e)),(o&4)==4&&(r.push(Uv),s.push(t_e))):e.data.length>=5&&(r.push(yT),s.push(pG));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=xr(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function $at({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:u,readRanges:f}){let h=0;if(i)for(let m=0;m<i;m++){let _=e.readers[m];h+=_.size}let A=0;if(c&&(u?A=20:A=12),A){let m=await Ua(e,a+r,A+4,i);if(xr(Qr(m),0)==134695760){let y=xr(Qr(m),4),C,E;u?(C=ET(Qr(m),8),E=ET(Qr(m),16)):(C=xr(Qr(m),8),E=xr(Qr(m),12)),(t.encrypted&&!t.zipCrypto||y==o)&&C==r&&E==s&&(A+=4)}}let g={start:h+n,end:h+a+r+A,fileEntry:t};for(let m of f)if(m.fileEntry!=t&&g.start>=m.start&&g.start<m.end){let _=new Error(jat);throw _.overlappingEntry=m.fileEntry,_}f.push(g)}async function ect(e,t,n,i,o){let r=new Uint8Array(4),s=Qr(r);nct(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await Ua(e,f,u);for(let A=h.length-i;A>=0;A--)if(h[A]==r[0]&&h[A+1]==r[1]&&h[A+2]==r[2]&&h[A+3]==r[3])return{offset:f+A,buffer:h.slice(A,A+i).buffer}}}function rc(e,t,n){return t[n]===ni?e.options[n]:t[n]}function tct(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function a7(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function CT(e,t){return e.getUint8(t)}function Ga(e,t){return e.getUint16(t,!0)}function xr(e,t){return e.getUint32(t,!0)}function ET(e,t){return Number(e.getBigUint64(t,!0))}function nct(e,t,n){e.setUint32(t,n,!0)}function Qr(e){return new DataView(e.buffer)}var lct="File already exists",uct="Zip file comment exceeds 64KB",fct="File entry comment exceeds 64KB",dct="File entry name exceeds 64KB",v_e="Version exceeds 65535",hct="The strength must equal 1, 2, or 3",mct="Extra field type exceeds 65535",Act="Extra field data exceeds 64KB",B7="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",pct="Undefined uncompressed size",gct="Zip file not empty",P_e=new Uint8Array([7,0,2,0,65,69,3,0,0]),T7=0,R_e=[],LG=class{constructor(t,n={}){t=new _T(t);let i=t.availableSize!==ni&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ni&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:Sv(),files:new Map,filenames:new Set,offset:n[o7]===ni?t.size||t.writable.size||0:n[o7],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(gct);t=new WE(t);let n=new xT(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:u,rawFilename:f,bitFlag:h,encrypted:A,uncompressedSize:g,compressedSize:m,diskOffset:_,diskNumber:y,zip64:C}=o,{rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B}=o,{level:v,languageEncodingFlag:P,dataDescriptor:N}=h;E=E||new Uint8Array,I=I||new Uint8Array,b=b||new Uint8Array,S=S||new Uint8Array,B=B||new Uint8Array;let L=Ui(E,I,b,S,B),p=C&&g>4294967295,x=C&&m>4294967295,{headerArray:T,headerView:w}=L_e({version:r,bitFlag:O_e(v,P,N,A,s),compressionMethod:s,uncompressedSize:g,compressedSize:m,lastModDate:a,rawFilename:f,zip64CompressedSize:x,zip64UncompressedSize:p,extraFieldLength:L});return Object.assign(o,{zip64UncompressedSize:p,zip64CompressedSize:x,zip64Offset:C&&this.offset-_>4294967295,zip64DiskNumberStart:C&&y>65535,rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B,extendedTimestamp:b.length>0||S.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(u?4:0),headerArray:T,headerView:w}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;T7<s.maxWorkers?T7++:await new Promise(c=>R_e.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(lct);return o.filenames.add(t),a=_ct(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=R_e.shift();c?c():T7--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ni){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Sct(this,t,n),io(i,n,bG)||await s.getWriter().close(),r.getData?r.getData():s}};async function _ct(e,t,n,i){t=t.trim();let o=io(e,i,qK),r=io(e,i,JK,o?20:768),s=io(e,i,$K);if(r>65535)throw new Error(v_e);let a=io(e,i,YK,0);a===0&&(a=io(e,i,jK,0)),!i[Gv]&&t.endsWith("/")&&(i[Gv]=!0),io(e,i,Gv)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=io(e,i,C_e,hT),f=u(t);if(f===ni&&(f=hT(t)),Ui(f)>65535)throw new Error(dct);let h=i[Fv]||"",A=u(h);if(A===ni&&(A=hT(h)),Ui(A)>65535)throw new Error(fct);let g=io(e,i,XK,20);if(g>65535)throw new Error(v_e);let m=io(e,i,yT,new Date),_=io(e,i,kv),y=io(e,i,Uv),C=io(e,i,WK,0);C===0&&(C=io(e,i,HK,0));let E=io(e,i,CG),I,b;E||(I=io(e,i,_G),b=io(e,i,yG));let S=io(e,i,d_e,3),B=io(e,i,ZK),v=io(e,i,h_e,!0),P=io(e,i,m_e,!0),N=io(e,i,A_e),L=io(e,i,IG),p=io(e,i,p_e),x=io(e,i,g_e,!1),T=io(e,i,EG),w=io(e,i,__e,!0),M=io(e,i,xG),O=io(e,i,e7),U=io(e,i,y_e);p&&U===ni&&(U=!1),(U===ni||B)&&(U=!0);let Q=io(e,i,gG);if(!B&&(I!==ni||b!==ni)&&!(S>=1&&S<=3))throw new Error(hct);let z=new Uint8Array,F=i[n7];if(F){let $t=0,it=0;F.forEach(tn=>$t+=4+Ui(tn)),z=new Uint8Array($t),F.forEach((tn,Wt)=>{if(Wt>65535)throw new Error(mct);if(Ui(tn)>65535)throw new Error(Act);Ns(z,new Uint16Array([Wt]),it),Ns(z,new Uint16Array([Ui(tn)]),it+2),Ns(z,tn,it+4),it+=4+Ui(tn)})}let H=0,W=0,Z=0;if(E&&(Z=i[Qv],Z===ni))throw new Error(pct);let Y=Q===!0;n&&(n=new WE(n),await aA(n),E?(i.uncompressedSize=Z,H=N_e(Z)):n.size===ni?(U=!0,(Q||Q===ni)&&(Q=!0,Z=H=4294967296)):(i.uncompressedSize=Z=n.size,H=N_e(Z)));let{diskOffset:$,diskNumber:X,maxSize:he}=e.writer,ge=Y||Z>4294967295,fe=Y||H>4294967295,ye=Y||e.offset+e.pendingEntriesSize-$>4294967295,ve=io(e,i,i7,!0)&&Y||X+Math.ceil(e.pendingEntriesSize/he)>65535;if(ye||ge||fe||ve){if(Q===!1||!P)throw new Error(B7);Q=!0}Q=Q||!1;let Te=io(e,i,KK);i=Object.assign({},i,{rawFilename:f,rawComment:A,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:_,creationDate:y,rawExtraField:z,zip64:Q,zip64UncompressedSize:ge,zip64CompressedSize:fe,zip64Offset:ye,zip64DiskNumberStart:ve,password:I,rawPassword:b,level:!M&&e.config.CompressionStream===ni&&e.config.CompressionStreamNative===ni?0:N,useWebWorkers:L,encryptionStrength:S,extendedTimestamp:v,zipCrypto:B,bufferedWrite:p,keepOrder:P,useUnicodeFileNames:w,dataDescriptor:U,dataDescriptorSignature:x,signal:T,msDosCompatible:o,internalFileAttribute:C,internalFileAttributes:C,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:M,passThrough:E,encrypted:!!(I&&Ui(I)||b&&Ui(b))||E&&Te,signature:i[t7],compressionMethod:O,uncompressedSize:Z,offset:e.offset-$,diskNumberStart:X});let ke=Ect(i),Ge=xct(i),qe=Ui(ke.localHeaderArray,Ge.dataDescriptorArray);W=qe+H,e.options[r7]&&(W+=W+64),e.pendingEntriesSize+=W;let tt;try{tt=await yct(e,t,n,{headerInfo:ke,dataDescriptorInfo:Ge,metadataSize:qe},i)}finally{e.pendingEntriesSize-=W}return Object.assign(tt,{name:t,comment:h,extraField:F}),new Iy(tt)}async function yct(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,h=e.options[r7],A=Array.from(r.values()).pop(),g={},m,_,y,C,E,I,b;r.set(t,g);try{let P;a&&(P=A&&A.lock,S()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(I=new TransformStream,I.size=0,m=!0,e.bufferedWrites++,await aA(s)):(I=s,await B()),await aA(I);let{writable:N,diskOffset:L}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let M=new Uint8Array(4),O=sc(M);ki(O,0,134695760),await Hp(s,M),e.offset+=4}h&&Ict(i,e.offset-L);let{localHeaderView:p,localHeaderArray:x}=f;m||(await P,await v(N));let{diskNumber:T}=s;E=!0,g.diskNumberStart=T,m?b=new Response(I.readable).blob():await Hp(I,x),g=await Cct(n,I,g,i,e.config,o);let{zip64:w}=g;if(E=!1,r.set(t,g),g.filename=t,m){let[M]=await Promise.all([b,I.writable.getWriter().close(),P]);await B(),C=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,w&&M_e(g),Tct(g,p,o),await v(N),await Hp(s,x),await M.stream().pipeTo(N,{preventClose:!0,preventAbort:!0,signal:u}),s.size+=I.size,C=!1}else g.offset=e.offset-L,w&&M_e(g);if(g.offset>4294967295&&!w)throw new Error(B7);return e.offset+=g.size,g}catch(P){if(m&&C||!m&&E){if(e.hasCorruptedEntries=!0,P)try{P.corruptedEntry=!0}catch{}m?e.offset+=I.size:e.offset=I.size}throw r.delete(t),P}finally{m&&e.bufferedWrites--,y&&y(),_&&_()}function S(){g.lock=new Promise(P=>y=P)}async function B(){e.writerLocked=!0;let{lockWriter:P}=e;e.lockWriter=new Promise(N=>_=()=>{e.writerLocked=!1,N()}),await P}async function v(P){Ui(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Hp(P,new Uint8Array))}}async function Cct(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{headerArray:f,headerView:h,lastModDate:A,rawLastModDate:g,encrypted:m,compressed:_,version:y,compressionMethod:C,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:B,rawExtraFieldAES:v}=a,{dataDescriptorArray:P}=c,{rawFilename:N,lastAccessDate:L,creationDate:p,password:x,rawPassword:T,level:w,zip64:M,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z,zipCrypto:F,dataDescriptor:H,directory:W,executable:Z,versionMadeBy:Y,rawComment:$,rawExtraField:X,useWebWorkers:he,onstart:ge,onprogress:fe,onend:ye,signal:Ie,encryptionStrength:ve,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,useCompressionStream:tt,passThrough:$t}=s,it={lock:i,versionMadeBy:Y,zip64:M,directory:!!W,executable:!!Z,filenameUTF8:!0,rawFilename:N,commentUTF8:!0,rawComment:$,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:B,rawExtraFieldAES:v,rawExtraField:X,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,diskNumberStart:n},{signature:tn,uncompressedSize:Wt}=s,vt=0;$t||(Wt=0);let{writable:bi}=t;if(e){e.chunkSize=KU(r);let di=e.readable,Ot=e.size,Tt={options:{codecType:sG,level:w,rawPassword:T,password:x,encryptionStrength:ve,zipCrypto:m&&F,passwordVerification:m&&F&&g>>8&255,signed:!$t,compressed:_&&!$t,encrypted:m&&!$t,useWebWorkers:he,useCompressionStream:tt,transferStreams:!1},config:r,streamOptions:{signal:Ie,size:Ot,onstart:ge,onprogress:fe,onend:ye}};try{let ii=await lG({readable:di,writable:bi},Tt);vt=ii.outputSize,t.size+=vt,$t||(Wt=ii.inputSize,tn=ii.signature)}catch(ii){throw ii.outputSize!==ni&&(t.size+=ii.outputSize),ii}}return bct({signature:tn,compressedSize:vt,uncompressedSize:Wt,headerInfo:a,dataDescriptorInfo:c},s),H&&await Hp(t,P),Object.assign(it,{uncompressedSize:Wt,compressedSize:vt,lastModDate:A,rawLastModDate:g,creationDate:p,lastAccessDate:L,encrypted:m,zipCrypto:F,size:u+vt,compressionMethod:C,version:y,headerArray:f,headerView:h,signature:tn,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z}),it}function Ect(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:A,extendedTimestamp:g,passThrough:m,encrypted:_,zip64UncompressedSize:y,zip64CompressedSize:C,zip64Offset:E,zip64DiskNumberStart:I,uncompressedSize:b,offset:S,diskNumberStart:B}=e,{version:v,compressionMethod:P}=e,N=!f&&(r>0||r===ni&&P!==0),L,p=m||!N,x=s&&(e.bufferedWrite||!y&&!C||p);if(s){let $=4;y&&($+=8),C&&($+=8),E&&($+=8),I&&($+=4),L=new Uint8Array($);let X=sc(L);if(po(X,0,1),po(X,2,Ui(L)-4),x){let he=sc(L),ge=4;y&&(Xs(he,ge,BigInt(b)),ge+=8),C&&p&&(Xs(he,ge,BigInt(b)),ge+=8),E&&(Xs(he,ge,BigInt(S)),ge+=8),I&&(ki(he,ge,B),ge+=4)}}else L=new Uint8Array;let T;if(_&&!a){T=new Uint8Array(Ui(P_e)+2);let $=sc(T);po($,0,39169),Ns(T,P_e,2),w7($,8,A)}else T=new Uint8Array;let w,M,O;if(g){M=new Uint8Array(9+(i?4:0)+(o?4:0));let $=sc(M);po($,0,21589),po($,2,Ui(M)-4),O=1+(i?2:0)+(o?4:0),w7($,4,O);let X=5;ki($,X,Math.floor(n.getTime()/1e3)),X+=4,i&&(ki($,X,Math.floor(i.getTime()/1e3)),X+=4),o&&ki($,X,Math.floor(o.getTime()/1e3));try{w=new Uint8Array(36);let he=sc(w),ge=S7(n);po(he,0,10),po(he,2,32),po(he,8,1),po(he,10,24),Xs(he,12,ge),Xs(he,20,S7(i)||ge),Xs(he,28,S7(o)||ge)}catch{w=new Uint8Array}}else w=M=new Uint8Array;P===ni&&(P=N?8:0),s&&(v=v>45?v:45),_&&!a&&(v=v>51?v:51,T[9]=P,P=99);let U=x?Ui(L):0,Q=U+Ui(T,M,w,h),{headerArray:z,headerView:F,rawLastModDate:H}=L_e({version:v,bitFlag:O_e(r,c,u,_,P),compressionMethod:P,uncompressedSize:b,lastModDate:n<TK?TK:n>bK?bK:n,rawFilename:t,zip64CompressedSize:C,zip64UncompressedSize:y,extraFieldLength:Q}),W=30,Z=new Uint8Array(W+Ui(t)+Q),Y=sc(Z);return ki(Y,0,67324752),Ns(Z,z,4),Ns(Z,t,W),W+=Ui(t),x&&Ns(Z,L,W),W+=U,Ns(Z,T,W),W+=Ui(T),Ns(Z,M,W),W+=Ui(M),Ns(Z,w,W),W+=Ui(w),Ns(Z,h,W),u&&(ki(Y,18,0),ki(Y,22,0)),{localHeaderArray:Z,localHeaderView:Y,headerArray:z,headerView:F,lastModDate:n,rawLastModDate:H,encrypted:_,compressed:N,version:v,compressionMethod:P,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:L,localExtraFieldZip64Length:U,rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:w,rawExtraFieldAES:T,extraFieldLength:Q}}function Ict(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=sc(i),s=64-(t+Ui(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=sc(a);po(c,0,6534),po(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(Ui(u)+s),Ns(i,u),Ns(i,a,Ui(u)),r=sc(i),po(r,28,o+s),e.metadataSize+=s}function xct({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=sc(i),n&&(r=4,ki(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function bct({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:u}=i,{dataDescriptorView:f,dataDescriptorOffset:h}=o;(!u||s)&&e!==ni&&(ki(c,10,e),a&&ki(f,h,e)),r?a&&(Xs(f,h+4,BigInt(t)),Xs(f,h+12,BigInt(n))):(ki(c,14,t),ki(c,18,n),a&&(ki(f,h+4,t),ki(f,h+8,n)))}function Tct({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:u,zip64CompressedSize:f,zip64Offset:h,zip64DiskNumberStart:A},g,{dataDescriptor:m}){if(m||(t||ki(g,14,o),n||(ki(g,18,r),ki(g,22,s))),n&&i){let _=30+Ui(e)+4;u&&(Xs(g,_,BigInt(s)),_+=8),f&&(Xs(g,_,BigInt(r)),_+=8),h&&(Xs(g,_,BigInt(a)),_+=8),A&&ki(g,_,c)}}function M_e({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let u=sc(c),f=4;o&&(Xs(u,f,BigInt(t)),f+=8),r&&(Xs(u,f,BigInt(e)),f+=8),s&&(Xs(u,f,BigInt(n)),f+=8),a&&ki(u,f,i)}async function Sct(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,u=e.offset-r,f=i.size;for(let[,b]of i){let{rawFilename:S,rawExtraFieldZip64:B,rawExtraFieldAES:v,rawComment:P,rawExtraFieldNTFS:N,rawExtraField:L,extendedTimestamp:p,extraFieldExtendedTimestampFlag:x,lastModDate:T}=b,w;if(p){w=new Uint8Array(9);let M=sc(w);po(M,0,21589),po(M,2,5),w7(M,4,x),ki(M,5,Math.floor(T.getTime()/1e3))}else w=new Uint8Array;b.rawExtraFieldExtendedTimestamp=w,c+=46+Ui(S,P,B,v,N,w,L)}let h=new Uint8Array(c),A=sc(h);await aA(o);let g=0;for(let[b,S]of Array.from(i.values()).entries()){let{offset:B,rawFilename:v,rawExtraFieldZip64:P,rawExtraFieldAES:N,rawExtraFieldExtendedTimestamp:L,rawExtraFieldNTFS:p,rawExtraField:x,rawComment:T,versionMadeBy:w,headerArray:M,headerView:O,zip64:U,zip64UncompressedSize:Q,zip64CompressedSize:z,zip64DiskNumberStart:F,zip64Offset:H,internalFileAttributes:W,externalFileAttributes:Z,diskNumberStart:Y,uncompressedSize:$,compressedSize:X}=S,he=Ui(P,N,L,p,x);ki(A,a,33639248),po(A,a+4,w),Q||ki(O,18,$),z||ki(O,14,X),Ns(h,M,a+6);let ge=a+30;if(po(A,ge,he),ge+=2,po(A,ge,Ui(T)),ge+=2,po(A,ge,U&&F?65535:Y),ge+=2,po(A,ge,W),ge+=2,Z&&ki(A,ge,Z),ge+=4,ki(A,ge,U&&H?4294967295:B),ge+=4,Ns(h,v,ge),ge+=Ui(v),Ns(h,P,ge),ge+=Ui(P),Ns(h,N,ge),ge+=Ui(N),Ns(h,L,ge),ge+=Ui(L),Ns(h,p,ge),ge+=Ui(p),Ns(h,x,ge),ge+=Ui(x),Ns(h,T,ge),a-g>o.availableSize&&(o.availableSize=0,await Hp(o,h.slice(g,a)),g=a),a=ge,n.onprogress)try{await n.onprogress(b+1,i.size,new Iy(S))}catch{}}await Hp(o,g?h.slice(g):h);let m=o.diskNumber,{availableSize:_}=o;_<22&&m++;let y=io(e,n,gG);if(u>4294967295||c>4294967295||f>65535||m>65535){if(y===!1)throw new Error(B7);y=!0}let C=new Uint8Array(y?98:22),E=sc(C);a=0,y&&(ki(E,0,101075792),Xs(E,4,BigInt(44)),po(E,12,45),po(E,14,45),ki(E,16,m),ki(E,20,s),Xs(E,24,BigInt(f)),Xs(E,32,BigInt(f)),Xs(E,40,BigInt(c)),Xs(E,48,BigInt(u)),ki(E,56,117853008),Xs(E,64,BigInt(u)+BigInt(c)),ki(E,72,m+1),io(e,n,i7,!0)&&(m=65535,s=65535),f=65535,u=4294967295,c=4294967295,a+=76),ki(E,a,101010256),po(E,a+4,m),po(E,a+6,s),po(E,a+8,f),po(E,a+10,f),ki(E,a+12,c),ki(E,a+16,u);let I=Ui(t);if(I)if(I<=65535)po(E,a+20,I);else throw new Error(uct);await Hp(o,C),I&&await Hp(o,t)}async function Hp(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=Ui(t),await i.write(t)}finally{i.releaseLock()}}function S7(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function io(e,t,n,i){let o=t[n]===ni?e.options[n]:t[n];return o===ni?i:o}function N_e(e){return e+5*(Math.floor(e/16383)+1)}function w7(e,t,n){e.setUint8(t,n)}function po(e,t,n){e.setUint16(t,n,!0)}function ki(e,t,n){e.setUint32(t,n,!0)}function Xs(e,t,n){e.setBigUint64(t,n,!0)}function Ns(e,t,n){e.set(t,n)}function sc(e){return new DataView(e.buffer)}function Ui(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function L_e({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:u}){let f=new Uint8Array(26),h=sc(f);po(h,0,e),po(h,2,t),po(h,4,n);let A=new Uint32Array(1),g=sc(A);po(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),po(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let m=A[0];return ki(h,6,m),(a||o!==ni)&&ki(h,14,a?4294967295:o),(c||i!==ni)&&ki(h,18,c?4294967295:i),po(h,22,Ui(s)),po(h,24,u),{headerArray:f,headerView:h,rawLastModDate:m}}function O_e(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}dT({Deflate:ege,Inflate:Ige});function wct(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Gn=wct;function Bct(e,t){this.position=e,this.headingPitchRange=t}var OG=Bct;function FG(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new _e,this.tourEnd=new _e,this.entryStart=new _e,this.entryEnd=new _e,this._activeEntries=[]}FG.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};FG.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;k_e.call(this,e,t,function(i){n.playlistIndex=0,i||Q_e(n._activeEntries),n.tourEnd.raiseEvent(i)})};FG.prototype.stop=function(){Q_e(this._activeEntries)};function Q_e(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function k_e(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=Dct.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function Dct(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,k_e.call(this,e,t,n)}}var QG=FG;var Gi=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Gi.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Gi.Bounce.In(e*2)*.5:Gi.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),Wv=function(){return performance.now()},vct=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=Wv()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),bT={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=bT.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=bT.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},U_e=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),D7=new vct,G_e=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Gi.Linear.None,this._interpolationFunction=bT.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=U_e.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=D7,D7.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=Wv()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var A=[a],g=0,m=h.length;g<m;g+=1){var _=this._handleRelativeValue(a,h[g]);if(isNaN(_)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}A.push(_)}f&&(i[s]=A)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var y=a;for(var C in y)n[s][C]=y[C];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var E={};for(var C in h)E[C]=h[C];i[s]=h=E}this._setupProperties(y,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=Wv()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=Wv()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Gi.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=bT.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=Wv()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var _=Math.trunc(s/a),y=s-_*a,C=Math.min(y/i._duration,1);return C===0&&s===i._duration?1:C},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var A=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=A);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*A,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var xui=U_e.nextId,cA=D7,bui=cA.getAll.bind(cA),Tui=cA.removeAll.bind(cA),Sui=cA.add.bind(cA),wui=cA.remove.bind(cA),Bui=cA.update.bind(cA);var Pct={LINEAR_NONE:Gi.Linear.None,QUADRATIC_IN:Gi.Quadratic.In,QUADRATIC_OUT:Gi.Quadratic.Out,QUADRATIC_IN_OUT:Gi.Quadratic.InOut,CUBIC_IN:Gi.Cubic.In,CUBIC_OUT:Gi.Cubic.Out,CUBIC_IN_OUT:Gi.Cubic.InOut,QUARTIC_IN:Gi.Quartic.In,QUARTIC_OUT:Gi.Quartic.Out,QUARTIC_IN_OUT:Gi.Quartic.InOut,QUINTIC_IN:Gi.Quintic.In,QUINTIC_OUT:Gi.Quintic.Out,QUINTIC_IN_OUT:Gi.Quintic.InOut,SINUSOIDAL_IN:Gi.Sinusoidal.In,SINUSOIDAL_OUT:Gi.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Gi.Sinusoidal.InOut,EXPONENTIAL_IN:Gi.Exponential.In,EXPONENTIAL_OUT:Gi.Exponential.Out,EXPONENTIAL_IN_OUT:Gi.Exponential.InOut,CIRCULAR_IN:Gi.Circular.In,CIRCULAR_OUT:Gi.Circular.Out,CIRCULAR_IN_OUT:Gi.Circular.InOut,ELASTIC_IN:Gi.Elastic.In,ELASTIC_OUT:Gi.Elastic.Out,ELASTIC_IN_OUT:Gi.Elastic.InOut,BACK_IN:Gi.Back.In,BACK_OUT:Gi.Back.Out,BACK_IN_OUT:Gi.Back.InOut,BOUNCE_IN:Gi.Bounce.In,BOUNCE_OUT:Gi.Bounce.Out,BOUNCE_IN_OUT:Gi.Bounce.InOut},ps=Object.freeze(Pct);function kG(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}kG.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new le(this.view.position);t.flyToBoundingSphere(o,i)}};kG.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};kG.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ps.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=wt(t,e)),t};var UG=kG;function v7(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}v7.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};v7.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var GG=v7;var J_e={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=j0(t),J_e[t]}},F7;typeof DOMParser<"u"&&(F7=new DOMParser);var Rct=new MU({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),by=32,z_e=2414016,V_e=1,H_e=16093e3,W_e=.1,j_e=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],Y_e=["http://www.google.com/kml/ext/2.2"],Mct=["http://www.w3.org/2005/Atom"],Ne={kml:j_e,gx:Y_e,atom:Mct,kmlgx:j_e.concat(Y_e)},Q7={Document:aye,Folder:Zct,Placemark:$ct,NetworkLink:clt,GroundOverlay:rlt,PhotoOverlay:uye,ScreenOverlay:olt,Tour:tlt};function lA(e){this._dataSource=e,this._deferred=yu(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(lA.prototype,{dataSource:{get:function(){return this._dataSource}}});lA.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};lA.prototype.addPromise=function(e){this._promises.push(e)};lA.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};lA.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=Ku._getTimestamp()),this._process(e)};lA.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=Ku._getTimestamp(),e._process(!0)},0)};lA.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};lA.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};lA.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=Q7[i.localName];if(l(o)&&(Ne.kml.indexOf(i.namespaceURI)!==-1||Ne.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||Ku._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function Nct(e){let t=e.slice(0,Math.min(4,e.size)),n=yu(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function Lct(e){let t=yu(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function Z_e(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function $_e(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function Oct(e,t){return Promise.resolve(e.getData(new hG)).then(function(n){n=Z_e(n),n=$_e(n),t.kml=F7.parseFromString(n,"application/xml")})}function P7(e,t){let n=J_e.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new fG(n))).then(function(i){t[e.filename]=i})}function Yu(e,t,n,i){let o=i.keys,r=new jv.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new jv.default(u).absoluteTo(r).toString(),A=o.indexOf(h);if(A!==-1){let g=o[A];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function qu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=k7(a,i);l(c)&&s.setAttribute(n,c.url)}}function eye(e,t,n){let i=Js(e,"id");i=l(i)&&i.length!==0?i:Xn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Xn(),l(n)&&(i=n+i)),o=t.add(new _r({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new dlt),o}function Yv(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function WG(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function zG(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=WG(n[s],t);return o}function Ty(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Js(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function zi(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function q_e(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function Th(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function fi(e,t,n){let i=zi(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function On(e,t,n){let i=zi(e,t,n);if(l(i))return i.textContent.trim()}function Sh(e,t,n){let i=zi(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function k7(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new we({url:o});else{let r=new jv.default(t.getUrlComponent()),s=new jv.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new we({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var lu={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function L7(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(lu.maximumRed=r,lu.red=void 0):(lu.maximumRed=void 0,lu.red=0),o>0?(lu.maximumGreen=o,lu.green=void 0):(lu.maximumGreen=void 0,lu.green=0),i>0?(lu.maximumBlue=i,lu.blue=void 0):(lu.maximumBlue=void 0,lu.blue=0),lu.alpha=n,G.fromRandom(lu)):new G(r,o,i,n)}function qE(e,t,n){let i=On(e,t,n);if(l(i))return L7(i,On(e,"colorMode",n)==="random")}function Fct(e){let t=zi(e,"TimeStamp",Ne.kmlgx),n=On(t,"when",Ne.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=K.fromIso8601(n),o=new hs;return o.addInterval(new Rn({start:i,stop:je.MAXIMUM_VALUE})),o}function Qct(e){let t=zi(e,"TimeSpan",Ne.kmlgx);if(!l(t))return;let n,i=zi(t,"begin",Ne.kmlgx),o=l(i)?K.fromIso8601(i.textContent):void 0,r=zi(t,"end",Ne.kmlgx),s=l(r)?K.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(K.lessThan(s,o)){let a=o;o=s,s=a}n=new hs,n.addInterval(new Rn({start:o,stop:s}))}else l(o)?(n=new hs,n.addInterval(new Rn({start:o,stop:je.MAXIMUM_VALUE}))):l(s)&&(n=new hs,n.addInterval(new Rn({start:je.MINIMUM_VALUE,stop:s})));return n}function tye(){let e=new jc;return e.width=by,e.height=by,e.scaleByDistance=new Yt(z_e,V_e,H_e,W_e),e.pixelOffsetScaleByDistance=new Yt(z_e,V_e,H_e,W_e),e}function U7(){let e=new lm;return e.outline=!0,e.outlineColor=G.WHITE,e}function nye(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function G7(e,t,n,i,o){let r=On(e,"href",Ne.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=fi(e,"x",Ne.gx)??0,u=fi(e,"y",Ne.gx)??0;c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=k7(r,n,i);if(o){let a=On(e,"refreshMode",Ne.kml),c=On(e,"viewRefreshMode",Ne.kml);a==="onInterval"||a==="onExpire"?yt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&yt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=On(e,"viewBoundScale",Ne.kml)??1,f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=On(e,"viewFormat",Ne.kml)??f,A=On(e,"httpQuery",Ne.kml);l(h)&&s.setQueryParameters(Af(HG(h))),l(A)&&s.setQueryParameters(Af(HG(A)));let g=t._ellipsoid;return V7(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function kct(e,t,n,i,o){let r=fi(t,"scale",Ne.kml),s=fi(t,"heading",Ne.kml),a=qE(t,"color",Ne.kml),c=zi(t,"Icon",Ne.kml),u=G7(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=fi(c,"x",Ne.gx),h=fi(c,"y",Ne.gx),A=fi(c,"w",Ne.gx),g=fi(c,"h",Ne.gx),m=zi(t,"hotSpot",Ne.kml),_=Ty(m,"x"),y=Ty(m,"y"),C=Js(m,"xunits"),E=Js(m,"yunits"),I=n.billboard;l(I)||(I=tye(),n.billboard=I),I.image=u,I.scale=r,I.color=a,(l(f)||l(h)||l(A)||l(g))&&(I.imageSubRegion=new Xe(f,h,A,g)),l(s)&&s!==0&&(I.rotation=D.toRadians(-s),I.alignedAxis=d.UNIT_Z),r=r??1;let b,S;l(_)&&(C==="pixels"?b=-_*r:C==="insetPixels"?b=(_-by)*r:C==="fraction"&&(b=-_*by*r),b+=by*.5*r),l(y)&&(E==="pixels"?S=y*r:E==="insetPixels"?S=(-y+by)*r:E==="fraction"&&(S=y*by*r),S-=by*.5*r),(l(b)||l(S))&&(I.pixelOffset=new k(b,S))}function VG(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")kct(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=nye(),n.label=c),c.scale=fi(a,"scale",Ne.kml)??c.scale,c.fillColor=qE(a,"color",Ne.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new $c,n.polyline=c),c.width=fi(a,"width",Ne.kml),c.material=qE(a,"color",Ne.kml),l(qE(a,"outerColor",Ne.gx))&&yt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(fi(a,"outerWidth",Ne.gx))&&yt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(fi(a,"physicalWidth",Ne.gx))&&yt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(Sh(a,"labelVisibility",Ne.gx))&&yt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=U7(),n.polygon=c),c.material=qE(a,"color",Ne.kml)??c.material,c.fill=Sh(a,"fill",Ne.kml)??c.fill,c.outline=Sh(a,"outline",Ne.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=L7(On(a,"bgColor",Ne.kml))??G.WHITE,u=L7(On(a,"textColor",Ne.kml))??G.BLACK,f=On(a,"text",Ne.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=On(a,"listItemType",Ne.kml);(c==="radioFolder"||c==="checkOffOnly")&&yt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Uct(e,t,n,i,o){let r=new _r,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let A=c[h];(A.localName==="Style"||A.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")VG(e,h,r,i,o);else{let A=Th(h,"Pair",Ne.kml);for(let g=0;g<A.length;g++){let m=A[g],_=On(m,"key",Ne.kml);if(_==="normal"){let y=On(m,"styleUrl",Ne.kml);if(l(y))s=n.getById(y),l(s)||(s=n.getById(`#${y}`)),l(s)&&r.merge(s);else{let C=zi(m,"Style",Ne.kml);VG(e,C,r,i,o)}}else yt(`kml-styleMap-${_}`,`KML - Unsupported StyleMap key: ${_}`)}}}let f=On(t,"styleUrl",Ne.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let A=f.split("#"),g=A[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${A[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Gct(e,t,n){return t.fetchXML().then(function(i){return iye(e,i,n,t,!0)})}function iye(e,t,n,i,o,r){let s,a,c,u,f=q_e(t,"Style",Ne.kml);if(l(f)){let _=f.length;for(s=0;s<_;s++)u=f[s],a=Js(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new _r({id:a}),n.add(c),VG(e,u,c,i,r)))}let h=q_e(t,"StyleMap",Ne.kml);if(l(h)){let _=h.length;for(s=0;s<_;s++){let y=h[s];if(a=Js(y,"id"),l(a)){let C=Th(y,"Pair",Ne.kml);for(let E=0;E<C.length;E++){let I=C[E],b=On(I,"key",Ne.kml);if(b==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let S=On(I,"styleUrl",Ne.kml);if(l(S)){S[0]!=="#"&&(S=`#${S}`),o&&l(i)&&(S=i.getUrlComponent()+S);let B=n.getById(S);l(B)&&c.merge(B)}else u=zi(I,"Style",Ne.kml),VG(e,u,c,i,r)}}else yt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}}let A=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let _=g[s].textContent;if(_[0]!=="#"){let y=_.split("#");if(y.length===2){let C=y[0],E=i.getDerivedResource({url:C});A.push(Gct(e,E,n))}}}return A}function z7(e,t,n){let i=new q_(e,t.id,["position"]),o=new Fp(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new $c,t.polyline.positions=new j_([i,o])}function oye(e,t){return!l(e)&&!l(t)||e==="clampToGround"?Ze.CLAMP_TO_GROUND:e==="relativeToGround"?Ze.RELATIVE_TO_GROUND:e==="absolute"?Ze.NONE:t==="clampToSeaFloor"?(yt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),Ze.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(yt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),Ze.RELATIVE_TO_GROUND):(l(e)?yt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):yt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),Ze.CLAMP_TO_GROUND)}function zct(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new Fp(e))}function Vct(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function jG(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():nye(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():tye(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(G.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new k(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function rye(e,t){let n=e.path;l(n)||(n=new vg,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Hct(e,t,n,i,o){let r=On(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=e._ellipsoid,f=WG(r,u);return i.position=f,jG(e,i,o,oye(s,a)),c&&Yv(s,a)&&z7(t,i,o),!0}function K_e(e,t,n,i,o){let r=zi(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=Sh(n,"tessellate",Ne.kml),f=Yv(s,a),h=fi(n,"drawOrder",Ne.gx),A=e._ellipsoid,g=zG(r,A),m=o.polyline;if(f&&c){let _=new Pg;i.wall=_,_.positions=g;let y=o.polygon;l(y)&&(_.fill=y.fill,_.material=y.material),_.outline=!0,l(m)?(_.outlineColor=l(m.material)?m.material.color:G.WHITE,_.outlineWidth=m.width):l(y)&&(_.outlineColor=l(y.material)?y.material.color:G.WHITE)}else if(e._clampToGround&&!f&&u){let _=new $c;_.clampToGround=!0,i.polyline=_,_.positions=g,l(m)?(_.material=l(m.material)?m.material.color.getValue(je.MINIMUM_VALUE):G.WHITE,_.width=m.width??1):(_.material=G.WHITE,_.width=1),_.zIndex=h}else l(h)&&yt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&yt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new $c,i.polyline=m,m.positions=Vct(g,s,a,A),(!u||f)&&(m.arcType=un.NONE);return!0}function Wct(e,t,n,i,o){let r=zi(n,"outerBoundaryIs",Ne.kml),s=zi(r,"LinearRing",Ne.kml),a=zi(s,"coordinates",Ne.kml),c=e._ellipsoid,u=zG(a,c),f=Sh(n,"extrude",Ne.kml),h=On(n,"altitudeMode",Ne.kml),A=On(n,"altitudeMode",Ne.gx),g=Yv(h,A),m=l(o.polygon)?o.polygon.clone():U7(),_=o.polyline;if(l(_)&&(m.outlineColor=l(_.material)?_.material.color:G.WHITE,m.outlineWidth=_.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let y=new xc(u),C=Th(n,"innerBoundaryIs",Ne.kml);for(let E=0;E<C.length;E++){s=Th(C[E],"LinearRing",Ne.kml);for(let I=0;I<s.length;I++)a=zi(s[I],"coordinates",Ne.kml),u=zG(a,c),l(u)&&y.holes.push(new xc(u))}m.hierarchy=y}return!0}function jct(e,t,n,i,o){let r=On(n,"altitudeMode",Ne.kml),s=On(n,"altitudeMode",Ne.gx),a=Th(n,"coord",Ne.gx),c=Th(n,"angles",Ne.gx),u=Th(n,"when",Ne.kml),f=Sh(n,"extrude",Ne.kml),h=Yv(r,s),A=e._ellipsoid;c.length>0&&yt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],_=[];for(let C=0;C<g;C++){let E=WG(a[C].textContent,A);m.push(E),_.push(K.fromIso8601(u[C].textContent))}let y=new ic;return y.addSamples(_,m),i.position=y,jG(e,i,o,oye(r,s)),rye(i,o),i.availability=new hs,u.length>0&&i.availability.addInterval(new Rn({start:_[0],stop:_[_.length-1]})),h&&f&&z7(t,i,o),!0}function X_e(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new ic;h.addSamples(e,t),n.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:zct(h,s,a)})),i.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Yct(e,t,n,i,o){let r=Sh(n,"interpolate",Ne.gx),s=Th(n,"Track",Ne.gx),a,c,u,f=!1,h=new J_,A=new hs,g=new nc,m=e._ellipsoid;for(let _=0,y=s.length;_<y;_++){let C=s[_],E=Th(C,"when",Ne.kml),I=Th(C,"coord",Ne.gx),b=On(C,"altitudeMode",Ne.kml),S=On(C,"altitudeMode",Ne.gx),B=Yv(b,S),v=Sh(C,"extrude",Ne.kml),P=Math.min(I.length,E.length),N=[];a=[];for(let L=0;L<P;L++){let p=WG(I[L].textContent,m);N.push(p),a.push(K.fromIso8601(E[L].textContent))}r&&(l(c)&&X_e([c,a[0]],[u,N[0]],g,A,h,!1,"absolute",void 0,!1),c=a[P-1],u=N[N.length-1]),X_e(a,N,g,A,h,B&&v,b,S,!0),f=f||B&&v}return i.availability=A,i.position=g,jG(e,i,o),rye(i,o),f&&(z7(t,i,o),i.polyline.show=h),!0}var sye={Point:Hct,LineString:K_e,LinearRing:K_e,Polygon:Wct,Track:jct,MultiTrack:Yct,MultiGeometry:qct,Model:Kct};function qct(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=sye[f.localName];if(l(h)){let A=eye(f,t,r);A.parent=i,A.name=i.name,A.availability=i.availability,A.description=i.description,A.kml=i.kml,h(e,t,f,A,o)&&(a=!0)}}return a}function Kct(e,t,n,i,o){return yt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function Xct(e,t){let n=zi(e,"ExtendedData",Ne.kml);if(!l(n))return;l(zi(n,"SchemaData",Ne.kml))&&yt("kml-schemaData","KML - SchemaData is unsupported"),l(Js(n,"xmlns:prefix"))&&yt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=Th(n,"Data",Ne.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Js(a,"name");l(c)&&(i[c]={displayName:On(a,"displayName",Ne.kml),value:On(a,"value",Ne.kml)})}}t.kml.extendedData=i}var bo;typeof document<"u"&&(bo=document.createElement("div"));function Jct(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=On(e,"description",Ne.kml),h=t.balloonStyle??n.balloonStyle,A=G.WHITE,g=G.BLACK,m=f;l(h)&&(A=h.bgColor??G.WHITE,g=h.textColor??G.BLACK,m=h.text??f);let _;if(l(m)){if(m=m.replace("$[name]",t.name??""),m=m.replace("$[description]",f??""),m=m.replace("$[address]",c.address??""),m=m.replace("$[Snippet]",c.snippet??""),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let E=m.match(/\$\[.+?\]/g);if(E!==null)for(r=0;r<E.length;r++){let I=E[r],b=I.substr(2,I.length-3),S=/\/displayName$/.test(b);b=b.replace(/\/displayName$/,""),_=u[b],l(_)&&(_=S?_.displayName:_.value),l(_)&&(m=m.replace(I,_??""))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],_=u[s],m+=`<tr><th>${_.displayName??s}</th><td>${_.value??""}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=Rct.link(m),bo.innerHTML=m;let y=bo.querySelectorAll("a");for(r=0;r<y.length;r++)y[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(Yu(bo,"a","href",i),Yu(bo,"link","href",i),Yu(bo,"area","href",i),Yu(bo,"img","src",i),Yu(bo,"iframe","src",i),Yu(bo,"video","src",i),Yu(bo,"audio","src",i),Yu(bo,"source","src",i),Yu(bo,"track","src",i),Yu(bo,"input","src",i),Yu(bo,"embed","src",i),Yu(bo,"script","src",i),Yu(bo,"video","poster",i)),qu(bo,"a","href",o),qu(bo,"link","href",o),qu(bo,"area","href",o),qu(bo,"img","src",o),qu(bo,"iframe","src",o),qu(bo,"video","src",o),qu(bo,"audio","src",o),qu(bo,"source","src",o),qu(bo,"track","src",o),qu(bo,"input","src",o),qu(bo,"embed","src",o),qu(bo,"script","src",o),qu(bo,"video","poster",o);let C='<div class="cesium-infoBox-description-lighter" style="';C+="overflow:auto;",C+="word-wrap:break-word;",C+=`background-color:${A.toCssColorString()};`,C+=`color:${g.toCssColorString()};`,C+='">',C+=`${bo.innerHTML}</div>`,bo.innerHTML="",t.description=C}function YG(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=eye(t,i,n.context),c=a.kml,u=Uct(e,t,n.styleCollection,r,s),f=On(t,"name",Ne.kml);a.name=f,a.parent=o;let h=Qct(t);l(h)||(h=Fct(t)),a.availability=h,W7(a);function A(I){return I?I.show&&A(I.parent):!0}let g=Sh(t,"visibility",Ne.kml);a.show=A(o)&&(g??!0);let m=zi(t,"author",Ne.atom),_=c.author;_.name=On(m,"name",Ne.atom),_.uri=On(m,"uri",Ne.atom),_.email=On(m,"email",Ne.atom);let y=zi(t,"link",Ne.atom),C=c.link;C.href=Js(y,"href"),C.hreflang=Js(y,"hreflang"),C.rel=Js(y,"rel"),C.type=Js(y,"type"),C.title=Js(y,"title"),C.length=Js(y,"length"),c.address=On(t,"address",Ne.kml),c.phoneNumber=On(t,"phoneNumber",Ne.kml),c.snippet=On(t,"Snippet",Ne.kml),Xct(t,a),Jct(t,a,u,s,r);let E=e._ellipsoid;return lye(t,a,E),cye(t,a,E),l(zi(t,"Region",Ne.kml))&&yt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function aye(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Zct(e,t,n,i){let o=YG(e,t,n),r=ze(n);r.parentEntity=o.entity,aye(e,t,r,i)}function $ct(e,t,n,i){let o=YG(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),A=sye[h.localName];l(A)&&(A(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),jG(e,r,s))}var elt={FlyTo:ilt,Wait:nlt,SoundCue:R7,AnimatedUpdate:R7,TourControl:R7};function tlt(e,t,n,i){let o=On(t,"name",Ne.kml),r=Js(t,"id"),s=new QG(o,r),a=zi(t,"Playlist",Ne.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let A=elt[h.localName];A?A(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function R7(e,t){yt(`KML Tour unsupported node ${t.localName}`)}function nlt(e,t){let n=fi(t,"duration",Ne.gx);e.addPlaylistEntry(new GG(n))}function ilt(e,t,n){let i=fi(t,"duration",Ne.gx),o=On(t,"flyToMode",Ne.gx),r={kml:{}};lye(t,r,n),cye(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new UG(i,o,s);e.addPlaylistEntry(a)}function cye(e,t,n){let i=zi(e,"Camera",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml)??0,c=fi(i,"tilt",Ne.kml)??0,u=fi(i,"roll",Ne.kml)??0,f=d.fromDegrees(o,r,s,n),h=pc.fromDegrees(a,c-90,u);t.kml.camera=new OU(f,h)}}function lye(e,t,n){let i=zi(e,"LookAt",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml),c=fi(i,"tilt",Ne.kml),u=fi(i,"range",Ne.kml)??0;c=D.toRadians(c??0),a=D.toRadians(a??0);let f=new Eh(a,c-D.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new OG(h,f)}}function olt(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=zi(t,"Icon",Ne.kml),c=G7(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=zi(t,"screenXY",Ne.kml),A=zi(t,"overlayXY",Ne.kml),g=zi(t,"size",Ne.kml),m,_,y,C,E,I;l(g)&&(m=Ty(g,"x"),_=Ty(g,"y"),y=Js(g,"xunits"),C=Js(g,"yunits"),l(m)&&m!==-1&&m!==0&&(y==="fraction"?E=`width: ${Math.floor(m*100)}%`:y==="pixels"&&(E=`width: ${m}px`),f.push(E)),l(_)&&_!==-1&&_!==0&&(C==="fraction"?I=`height: ${Math.floor(_*100)}%`:C==="pixels"&&(I=`height: ${_}px`),f.push(I))),u.style=f.join(";");let b=0,S=u.height;l(A)&&(m=Ty(A,"x"),_=Ty(A,"y"),y=Js(A,"xunits"),C=Js(A,"yunits"),l(m)&&(y==="fraction"?b=m*u.width:(y==="pixels"||y==="insetPixels")&&(b=m)),l(_)&&(C==="fraction"?S=_*u.height:(C==="pixels"||C==="insetPixels")&&(S=_))),l(h)&&(m=Ty(h,"x"),_=Ty(h,"y"),y=Js(h,"xunits"),C=Js(h,"yunits"),l(m)&&(y==="fraction"?E=`left: calc(${Math.floor(m*100)}% - ${b}px)`:y==="pixels"?E=`left: ${m-b}px`:y==="insetPixels"&&(E=`right: ${m-b}px`),f.push(E)),l(_)&&(C==="fraction"?I=`bottom: calc(${Math.floor(_*100)}% - ${S}px)`:C==="pixels"?I=`bottom: ${_-S}px`:C==="insetPixels"&&(I=`top: ${_-S}px`),f.push(I))),u.style=f.join(";")},o.appendChild(u)}function rlt(e,t,n,i){let r=YG(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=zG(zi(t,"LatLonQuad",Ne.gx),c),f=fi(t,"drawOrder",Ne.kml);if(l(u))s=U7(),s.hierarchy=new xc(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new um,s.zIndex=f,r.rectangle=s;let m=zi(t,"LatLonBox",Ne.kml);if(l(m)){let _=fi(m,"west",Ne.kml),y=fi(m,"south",Ne.kml),C=fi(m,"east",Ne.kml),E=fi(m,"north",Ne.kml);l(_)&&(_=D.negativePiToPi(D.toRadians(_))),l(y)&&(y=D.clampToLatitudeRange(D.toRadians(y))),l(C)&&(C=D.negativePiToPi(D.toRadians(C))),l(E)&&(E=D.clampToLatitudeRange(D.toRadians(E))),s.coordinates=new ae(_,y,C,E);let I=fi(m,"rotation",Ne.kml);if(l(I)){let b=D.toRadians(I);s.rotation=b,s.stRotation=b}}}let h=zi(t,"Icon",Ne.kml),A=G7(h,e,n.sourceResource,n.uriResolver,!0);if(l(A)){a&&yt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=fi(h,"x",Ne.gx),_=fi(h,"y",Ne.gx),y=fi(h,"w",Ne.gx),C=fi(h,"h",Ne.gx);(l(m)||l(_)||l(y)||l(C))&&yt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=A,s.material.color=qE(t,"color",Ne.kml),s.material.transparent=!0}else s.material=qE(t,"color",Ne.kml);let g=On(t,"altitudeMode",Ne.kml);l(g)?g==="absolute"?(s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g!=="clampToGround"&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=On(t,"altitudeMode",Ne.gx),g==="relativeToSeaFloor"?(yt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g==="clampToSeaFloor"?yt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function uye(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),yt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var Sy={INTERVAL:0,EXPIRE:1,STOP:2};function HG(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var slt=new ae,TT=new Ae,M7=new k,alt=new d;function V7(e,t,n,i,o,r){function s(u){return u<-D.PI_OVER_TWO?-D.PI_OVER_TWO:u>D.PI_OVER_TWO?D.PI_OVER_TWO:u}function a(u){return u>D.PI?u-D.TWO_PI:u<-D.PI?u+D.TWO_PI:u}let c=K0(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ie.MORPHING){let u,f;if(o=o??slt,l(n)&&(M7.x=n.clientWidth*.5,M7.y=n.clientHeight*.5,u=t.pickEllipsoid(M7,r,alt)),l(u)?f=r.cartesianToCartographic(u,TT):(f=ae.center(o,TT),u=r.cartographicToCartesian(f)),l(i)&&!D.equalsEpsilon(i,1,D.EPSILON9)){let C=o.width*i*.5,E=o.height*i*.5;o=new ae(a(f.longitude-C),s(f.latitude-E),a(f.longitude+C),s(f.latitude+E))}c=c.replace("[bboxWest]",D.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",D.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",D.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",D.toDegrees(o.north).toString());let h=D.toDegrees(f.longitude).toString(),A=D.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",A),c=c.replace("[lookatTilt]",D.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",D.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",A),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,TT),c=c.replace("[cameraLon]",D.toDegrees(TT.longitude).toString()),c=c.replace("[cameraLat]",D.toDegrees(TT.latitude).toString()),c=c.replace("[cameraAlt]",D.toDegrees(TT.height).toString());let g=t.frustum,m=g.aspectRatio,_="",y="";if(l(m)){let C=D.toDegrees(g.fov);m>1?(_=C,y=C/m):(y=C,_=C*m)}c=c.replace("[horizFov]",_.toString()),c=c.replace("[vertFov]",y.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Af(c))}function clt(e,t,n,i){let r=YG(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=zi(t,"Link",Ne.kml);if(l(c)||(c=zi(t,"Url",Ne.kml)),l(c)){let u=On(c,"href",Ne.kml),f,h;if(l(u)){let A=u;if(u=k7(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(A=s.getDerivedResource({url:A}));else{if(A=u.clone(),f=On(c,"viewRefreshMode",Ne.kml),f==="onRegion"){yt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=On(c,"viewBoundScale",Ne.kml)??1;let y=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",C=On(c,"viewFormat",Ne.kml)??y,E=On(c,"httpQuery",Ne.kml);l(C)&&u.setQueryParameters(Af(HG(C))),l(E)&&u.setQueryParameters(Af(HG(E)));let I=e._ellipsoid;V7(u,e.camera,e.canvas,h,e._lastCameraView.bbox,I)}let g={sourceUri:A,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new Oa,_=H7(e,m,u,g).then(function(y){let C=e._entityCollection,E=m.values;C.suspendEvents();for(let S=0;S<E.length;S++){let B=E[S];l(B.parent)||(B.parent=r,W7(B)),C.add(B)}C.resumeEvents();let I=On(c,"refreshMode",Ne.kml),b=fi(c,"refreshInterval",Ne.kml)??0;if(I==="onInterval"&&b>0||I==="onExpire"||f==="onStop"){let S=zi(y,"NetworkLinkControl",Ne.kml),B=l(S),v=K.now(),P={id:Xn(),href:u,cookie:{},lastUpdated:v,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:v},N=0;if(B&&(P.cookie=Af(On(S,"cookie",Ne.kml)??""),N=fi(S,"minRefreshPeriod",Ne.kml)??0),I==="onInterval")B&&(b=Math.max(N,b)),P.refreshMode=Sy.INTERVAL,P.time=b;else if(I==="onExpire"){let L;if(B&&(L=On(S,"expires",Ne.kml)),l(L))try{let p=K.fromIso8601(L),x=K.secondsDifference(p,v);x>0&&x<N&&K.addSeconds(v,N,p),P.refreshMode=Sy.EXPIRE,P.time=p}catch{yt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(P.refreshMode=Sy.STOP,P.time=fi(c,"viewRefreshTime",Ne.kml)??0):yt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(P.refreshMode)&&e._networkLinks.set(P.id,P)}}).catch(function(y){yt(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,y)});i.addPromise(_)}}}function llt(e,t,n,i){let o=Q7[t.localName];return l(o)?o(e,t,n,i):uye(e,t,n,i)}function O7(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:zi(a,"Document",Ne.kml),u=On(c,"name",Ne.kml);l(u)||(u=W_(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new Ku._DeferredLoading(e),h=new Oa(e);return Promise.all(iye(e,n,h,i,!1,o)).then(function(){let A=n.documentElement;if(A.localName==="kml"){let m=A.childNodes;for(let _=0;_<m.length;_++){let y=m[_];if(l(Q7[y.localName])){A=y;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),llt(e,A,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function ult(e,t,n,i,o){let r=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new xT(new Vp(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let A=a[h];A.directory||(/\.kml$/i.test(A.filename)&&(!l(f)||!/\//i.test(A.filename))?(l(f)&&c.push(P7(f,u)),f=A):c.push(P7(A,u)))}return l(f)&&c.push(Oct(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new ce("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),O7(e,t,u.kml,i,u,o)})})}function H7(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let A=0;A<h;A++)u.push(f[A])}}else o=o??we.DEFAULT.clone();return o=we.createIfNeeded(o),l(a)&&(a=Gn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?Nct(u).then(function(f){return f?ult(e,t,u,o,a):Lct(u).then(function(h){h=Z_e(h),h=$_e(h);let A,g;try{A=F7.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||A.body||A.documentElement.tagName==="parsererror"){let m=l(g)?g:A.documentElement.firstChild.nodeValue;throw m||(m=A.body.innerText),new ce(m)}return O7(e,t,A,o,r,a,s)})}):O7(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function Ku(e){e=e??V.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new _e,this._error=new _e,this._loading=new _e,this._refresh=new _e,this._unsupportedNode=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new ly,this._networkLinks=new Pt,this._entityCluster=new od,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=e.ellipsoid??te.default;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}Ku.load=function(e,t){return t=t??V.EMPTY_OBJECT,new Ku(t).load(e,t)};Object.defineProperties(Ku.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});Ku.prototype.load=function(e,t){t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return H7(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};Ku.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function W7(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function flt(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=zi(r,"NetworkLinkControl",Ne.kml),c=l(a),u=0;if(c){if(l(zi(a,"Update",Ne.kml))){yt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Af(On(a,"cookie",Ne.kml)??""),u=fi(a,"minRefreshPeriod",Ne.kml)??0}let f=K.now(),h=t.refreshMode;if(h===Sy.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===Sy.EXPIRE){let v;if(l(a)&&(v=On(a,"expires",Ne.kml)),l(v))try{let P=K.fromIso8601(v),N=K.secondsDifference(P,f);N>0&&N<u&&K.addSeconds(f,u,P),t.time=P}catch{yt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let A=t.entity,g=e._entityCollection,m=n.values;function _(v){g.remove(v);let P=v._children,N=P.length;for(let L=0;L<N;++L)_(P[L])}g.suspendEvents();let y=g.values.slice(),C;for(C=0;C<y.length;++C){let v=y[C];v.parent===A&&(v.parent=void 0,_(v))}for(g.resumeEvents(),g.suspendEvents(),C=0;C<m.length;C++){let v=m[C];l(v.parent)||(v.parent=A,W7(v)),g.add(v)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let E=g.computeAvailability(),I=E.start,b=E.stop,S=K.equals(I,je.MINIMUM_VALUE),B=K.equals(b,je.MAXIMUM_VALUE);if(!S||!B){let v=e._clock;(v.startTime!==I||v.stopTime!==b)&&(v.startTime=I,v.stopTime=b,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var N7=new Pt;Ku.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=K.now(),i=this;N7.removeAll();function o(f){let h=f._children,A=h.length;for(let g=0;g<A;++g){let m=h[g];N7.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,D.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,D.EPSILON7)&&a.upWC.equalsEpsilon(s.up,D.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new Pt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!N7.contains(h.id)){if(!f.updating){let A=!1;if(f.refreshMode===Sy.INTERVAL?K.secondsDifference(n,f.lastUpdated)>f.time&&(A=!0):f.refreshMode===Sy.EXPIRE?K.greaterThan(n,f.time)&&(A=!0):f.refreshMode===Sy.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&K.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(A=!0)),A){o(h),f.updating=!0;let g=new Oa,m=f.href.clone();m.setQueryParameters(f.cookie);let _=i._ellipsoid??te.default;V7(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,_),H7(i,g,m,{context:h.id}).then(flt(i,f,g,c,m)).catch(function(y){let C=`NetworkLink ${f.href} refresh failed: ${y}`;console.log(C),i._error.raiseEvent(i,C)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function dlt(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}Ku._DeferredLoading=lA;Ku._getTimestamp=Oi;var ST=Ku;function qv(){me.throwInstantiationError()}qv.prototype.update=me.throwInstantiationError;qv.prototype.getBoundingSphere=me.throwInstantiationError;qv.prototype.isDestroyed=me.throwInstantiationError;qv.prototype.destroy=me.throwInstantiationError;var fye=qv;var j7=32,hlt="http://www.opengis.net/kml/2.2",Bh="http://www.google.com/kml/ext/2.2",mlt="http://www.w3.org/2000/xmlns/";function qG(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Alt=/^data:image\/([^,;]+)/;qG.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof we){if(e=we.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Alt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function plt(e,t){return function(n){e._files[t]=n}}qG.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new ce("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(plt(this,r))}return o};Object.defineProperties(qG.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function KG(e){this._time=e}KG.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};KG.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return XE(n)};KG.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function Y7(){this._ids={},this._styles={},this._count=0}Y7.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};Y7.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function mye(){this._ids={}}mye.prototype.get=function(e){if(!l(e))return this.get(Xn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function q7(e){e=e??V.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=q7._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(mlt,"xmlns:gx",Bh);let a=r.createElement("Document");s.appendChild(a),pye(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?glt(f,c.files):{kml:f,externalFiles:c.files}})}function glt(e,t){let n=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new Lv,o=new LG(i);return o.add("doc.kml",new dG(e)).then(function(){let r=Object.keys(t);return Aye(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function Aye(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new Vp(n[o])).then(function(){return Aye(e,t,n,i+1)})}q7._createState=function(e){let t=e.entities,n=new Y7,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===je.MINIMUM_VALUE?r.stop===je.MAXIMUM_VALUE?r=new Rn:K.addSeconds(r.stop,-10*s,r.start):r.stop===je.MAXIMUM_VALUE&&K.addSeconds(r.start,10*s,r.stop);let a=new qG(e.modelCallback);return{kmlDoc:document.implementation.createDocument(hlt,"kml"),ellipsoid:e.ellipsoid??te.default,idManager:new mye,styleCache:n,externalFileHandler:a,time:o,valueGetter:new KG(o),sampleDuration:s,defaultAvailability:new hs([r])}};function pye(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let A=n[h];c=[],u=[],f=[],_lt(e,A,u,f),ylt(e,A.polyline,u,f),hye(e,A.rectangle,u,f,c),hye(e,A.polygon,u,f,c),xlt(e,A,A.model,u,f);let g,m=A.availability;l(m)&&(g=i.createElement("TimeSpan"),K.equals(m.start,je.MINIMUM_VALUE)||g.appendChild(yn(i,"begin",K.toIso8601(m.start))),K.equals(m.stop,je.MAXIMUM_VALUE)||g.appendChild(yn(i,"end",K.toIso8601(m.stop))));for(let C=0;C<c.length;++C){let E=c[C];E.setAttribute("id",s.get(A.id)),E.appendChild(yn(i,"name",A.name)),E.appendChild(yn(i,"visibility",A.show)),E.appendChild(yn(i,"description",A.description)),l(g)&&E.appendChild(g),t.appendChild(E)}let _=u.length;if(_>0){let C=i.createElement("Placemark");C.setAttribute("id",s.get(A.id));let E=A.name,I=A.label;if(l(I)){let S=i.createElement("LabelStyle"),B=r.get(I.text);E=l(B)&&B.length>0?B:E;let v=r.getColor(I.fillColor);l(v)&&(S.appendChild(yn(i,"color",v)),S.appendChild(yn(i,"colorMode","normal")));let P=r.get(I.scale);l(P)&&S.appendChild(yn(i,"scale",P)),f.push(S)}C.appendChild(yn(i,"name",E)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),l(g)&&C.appendChild(g),t.appendChild(C);let b=f.length;if(b>0){let S=i.createElement("Style");for(let B=0;B<b;++B)S.appendChild(f[B]);C.appendChild(yn(i,"styleUrl",o.get(S)))}if(u.length===1)C.appendChild(u[0]);else if(u.length>1){let S=i.createElement("MultiGeometry");for(let B=0;B<_;++B)S.appendChild(u[B]);C.appendChild(S)}}let y=A._children;if(y.length>0){let C=i.createElement("Folder");C.setAttribute("id",s.get(A.id)),C.appendChild(yn(i,"name",A.name)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),t.appendChild(C),pye(e,C,y)}}}var uu=new d,Cl=new Ae,wh=new K;function _lt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){gye(e,t,a,n,i);return}s.get(c,void 0,uu);let u=yn(o,"coordinates",KE(uu,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(JE(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let A=a instanceof jc?yye(e,a):_ye(e,a);i.push(A)}function gye(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof nc?(c=u.intervals,f=!1):c=t.availability??e.defaultAvailability;let h=n instanceof Dg,A,g,m,_=[];for(A=0;A<c.length;++A){let C=c.get(A),E=f?u:C.data,I=r.createElement("altitudeMode");E instanceof Fp?(E=E._value,I.appendChild(JE(e,Ze.CLAMP_TO_GROUND))):l(n)?I.appendChild(JE(e,n.heightReference)):I.appendChild(JE(e,Ze.NONE));let b=[],S=[];if(E.isConstant){a.get(E,void 0,uu);let v=yn(r,"coordinates",KE(uu,s));b.push(K.toIso8601(C.start)),S.push(v),b.push(K.toIso8601(C.stop)),S.push(v)}else if(E instanceof ic)for(m=E._property._times,g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),E.getValueInReferenceFrame(m[g],eo.FIXED,uu),S.push(KE(uu,s));else if(E instanceof ad){m=E._times;let v=E._values;for(g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),d.fromArray(v,g*3,uu),S.push(KE(uu,s))}else{let v=e.sampleDuration;C.start.clone(wh),C.isStartIncluded||K.addSeconds(wh,v,wh);let P=C.stop;for(;K.lessThan(wh,P);)E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)),K.addSeconds(wh,v,wh);C.isStopIncluded&&K.equals(wh,P)&&(E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)))}let B=r.createElementNS(Bh,"Track");B.appendChild(I);for(let v=0;v<b.length;++v){let P=yn(r,"when",b[v]),N=yn(r,"coord",S[v],Bh);B.appendChild(P),B.appendChild(N)}h&&B.appendChild(Cye(e,n)),_.push(B)}if(_.length===1)i.push(_[0]);else if(_.length>1){let C=r.createElementNS(Bh,"MultiTrack");for(A=0;A<_.length;++A)C.appendChild(_[A]);i.push(C)}if(l(n)&&!h){let C=n instanceof jc?yye(e,n):_ye(e,n);o.push(C)}let y=t.path;if(l(y)){let C=a.get(y.width),E=y.material;if(l(E)||l(C)){let I=r.createElement("LineStyle");l(C)&&I.appendChild(yn(r,"width",C)),K7(e,E,I),o.push(I)}}}function _ye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(yn(n,"color",r)),o.appendChild(yn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(yn(n,"scale",s/j7)),o}function yye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let A=n.createElement("Icon");A.appendChild(yn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(A.appendChild(yn(n,"x",g.x,Bh)),A.appendChild(yn(n,"y",g.y,Bh)),A.appendChild(yn(n,"w",g.width,Bh)),A.appendChild(yn(n,"h",g.height,Bh))),r.appendChild(A)}let a=i.getColor(t.color);l(a)&&(r.appendChild(yn(n,"color",a)),r.appendChild(yn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(yn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=c??1,k.divideByScalar(u,c,u);let A=i.get(t.width,j7),g=i.get(t.height,j7),m=i.get(t.horizontalOrigin,Ri.CENTER);m===Ri.CENTER?u.x-=A*.5:m===Ri.RIGHT&&(u.x-=A);let _=i.get(t.verticalOrigin,Wn.CENTER);_===Wn.TOP?u.y+=g:_===Wn.CENTER&&(u.y+=g*.5);let y=n.createElement("hotSpot");y.setAttribute("x",-u.x),y.setAttribute("y",u.y),y.setAttribute("xunits","pixels"),y.setAttribute("yunits","pixels"),r.appendChild(y)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=D.toDegrees(-f),f===0&&(f=360),r.appendChild(yn(n,"heading",f))),r}function ylt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(yn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,A=s.get(h),g=yn(o,"coordinates",KE(A,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(yn(o,"drawOrder",m,Bh)),n.push(a);let _=o.createElement("LineStyle"),y=s.get(t.width);l(y)&&_.appendChild(yn(o,"width",y)),K7(e,t.material,_),i.push(_)}function Clt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,Cl),c.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${r}`);let f=yn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),A=i.createElement("LinearRing");return A.appendChild(f),h.appendChild(A),[h]}function dye(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)Ae.fromCartesian(t[f],r,Cl),s.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${i?Cl.height:n}`);let c=yn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function Elt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(dye(e,f,r,s)),a.push(h);let A=u.holes;if(l(A)){let g=A.length;for(let m=0;m<g;++m){let _=i.createElement("innerBoundaryIs");_.appendChild(dye(e,A[m].positions,r,s)),a.push(_)}}return a}function hye(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof um;if(a&&s.getMaterialType(t.material)==="Image"){Ilt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(yn(r,"extrude",!0));let f=a?Clt(e,t,u):Elt(e,t,u),h=f.length;for(let y=0;y<h;++y)c.appendChild(f[y]);let A=r.createElement("altitudeMode");A.appendChild(JE(e,t.heightReference)),c.appendChild(A),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(yn(r,"fill",m)),K7(e,t.material,g);let _=s.get(t.outline,!1);if(_){g.appendChild(yn(r,"outline",_));let y=r.createElement("LineStyle"),C=s.get(t.outlineWidth,1);y.appendChild(yn(r,"width",C));let E=s.getColor(t.outlineColor,G.BLACK);y.appendChild(yn(r,"color",E)),y.appendChild(yn(r,"colorMode","normal")),i.push(y)}i.push(g)}function Ilt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(JE(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(yn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(yn(i,"north",D.toDegrees(u.north))),f.appendChild(yn(i,"south",D.toDegrees(u.south))),f.appendChild(yn(i,"east",D.toDegrees(u.east))),f.appendChild(yn(i,"west",D.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),A=r.texture(h.image),g=i.createElement("Icon");g.appendChild(yn(i,"href",A)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(yn(i,"color",XE(h.color))),n.push(s)}function Cye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(yn(n,"x",s)),u.appendChild(yn(n,"y",s)),u.appendChild(yn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(yn(n,"href",c)),r.appendChild(a),r}function xlt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){gye(e,t,n,i,o);return}let u=Cye(e,n),f=r.createElement("altitudeMode");f.appendChild(JE(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,uu),Ae.fromCartesian(uu,s,Cl);let h=r.createElement("Location");h.appendChild(yn(r,"longitude",D.toDegrees(Cl.longitude))),h.appendChild(yn(r,"latitude",D.toDegrees(Cl.latitude))),h.appendChild(yn(r,"altitude",Cl.height)),u.appendChild(h),i.push(u)}function K7(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=XE(G.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=XE(r.color);break;case"PolylineOutline":s=XE(r.color),c=XE(r.outlineColor),u=r.outlineWidth,n.appendChild(yn(i,"outerColor",c,Bh)),n.appendChild(yn(i,"outerWidth",u,Bh));break;case"Stripe":s=XE(r.oddColor);break}l(s)&&(n.appendChild(yn(i,"color",s)),n.appendChild(yn(i,"colorMode","normal")))}function JE(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,Ze.NONE),r;switch(o){case Ze.NONE:r=n.createTextNode("absolute");break;case Ze.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case Ze.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function KE(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)Ae.fromCartesian(e[o],t,Cl),i.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${Cl.height}`);return i.join(" ")}function yn(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function XE(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var Eye=q7;var wT=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function XG(e){this._context=e}var Kv,blt=new nt({primitiveType:Me.TRIANGLES}),Tlt=new Ei({color:new G(0,0,0,0)});function Slt(e,t){return new as({context:e,colorTextures:[t],destroyAttachments:!1})}function wlt(e,t){return ln.fromCache({context:e,vertexShaderSource:wT,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function Blt(e,t){return(!l(Kv)||Kv.viewport.width!==e||Kv.viewport.height!==t)&&(Kv=Ue.fromCache({viewport:new Xe(0,0,e,t)})),Kv}XG.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:wlt(o,e.fragmentShaderSource),a=Slt(o,t),c=Blt(n,i),u=e.uniformMap,f=Tlt;f.framebuffer=a,f.renderState=c,f.execute(o);let h=blt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};XG.prototype.isDestroyed=function(){return!1};XG.prototype.destroy=function(){return ue(this)};var JG=XG;function Dlt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var El=Dlt;function Dh(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(Dh.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});Dh.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function vlt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}Dh.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new We({sources:[t]})),typeof n=="string"&&(n=new We({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?vlt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),A=new ln({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:A,keyword:a,derivedKeywords:[],count:0},A._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};Dh.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){X7(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};Dh.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};Dh.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new We({sources:[r]})),typeof s=="string"&&(s=new We({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new ln({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),A={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=A,this._shaders[o]=A,h};function X7(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];X7(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}Dh.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];X7(this,n),--this._numberOfShaders}this._shadersToRelease={}};Dh.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};Dh.prototype.isDestroyed=function(){return!1};Dh.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var ZG=Dh;function ZE(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(ZE.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});ZE.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};ZE.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};ZE.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};ZE.prototype.isDestroyed=function(){return!1};ZE.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var $G=ZE;var J7={};function Plt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Rlt=32.184,Mlt=2451545;function Uye(e,t){t=K.addSeconds(e,Rlt,t);let n=K.totalDays(t)-Mlt;return t=K.addSeconds(t,Plt(n),t),t}var ez=new K(2451545,0,oi.TAI),Nlt=1e3,md=D.RADIANS_PER_DEGREE,Xu=D.RADIANS_PER_ARCSECOND,ac=14959787e4,Iye=new J;function Gye(e,t,n,i,o,r,s){n<0&&(n=-n,o+=D.PI);let a=e*(1-t),c=i-o,u=o,f=Olt(r-i,t),h=Llt(t,0);Glt(c,n,u,Iye);let A=a*(1+t),g=Math.cos(f),m=Math.sin(f),_=1+t*g,y=A/_;return l(s)?(s.x=y*g,s.y=y*m,s.z=0):s=new d(y*g,y*m,0),J.multiplyByVector(Iye,s,s)}function Llt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function Olt(e,t){let n=klt(e,t);return Ult(n,t)}var Flt=50,Qlt=D.EPSILON8;function klt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<Flt&&Math.abs(o-i)>Qlt;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*D.TWO_PI,o}function Ult(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=D.zeroToTwoPi(r),e<0&&(r-=D.TWO_PI),r+=n*D.TWO_PI,r}function Glt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new J(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var zlt=1.0000010178*ac,Vlt=100.46645683*md,Hlt=129597742283429e-5*Xu,xye=16002,bye=21863,Tye=32004,Sye=10931,wye=14529,Bye=16368,Dye=15318,vye=32794,Wlt=64*1e-7*ac,jlt=-152*1e-7*ac,Ylt=62*1e-7*ac,qlt=-8*1e-7*ac,Klt=32*1e-7*ac,Xlt=-41*1e-7*ac,Jlt=19*1e-7*ac,Zlt=-11*1e-7*ac,$lt=-150*1e-7*ac,eut=-46*1e-7*ac,tut=68*1e-7*ac,nut=54*1e-7*ac,iut=14*1e-7*ac,out=24*1e-7*ac,rut=-28*1e-7*ac,sut=22*1e-7*ac,Pye=10,Rye=16002,Mye=21863,Nye=10931,Lye=1473,Oye=32004,Fye=4387,Qye=73,aut=-325*1e-7,cut=-322*1e-7,lut=-79*1e-7,uut=232*1e-7,fut=-52*1e-7,dut=97*1e-7,hut=55*1e-7,mut=-41*1e-7,Aut=-105*1e-7,put=-137*1e-7,gut=258*1e-7,_ut=35*1e-7,yut=-116*1e-7,Cut=-88*1e-7,Eut=-112*1e-7,Iut=-80*1e-7,BT=new K(0,0,oi.TAI);function xut(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/(ri.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=zlt+Wlt*Math.cos(xye*o)+$lt*Math.sin(xye*o)+jlt*Math.cos(bye*o)+eut*Math.sin(bye*o)+Ylt*Math.cos(Tye*o)+tut*Math.sin(Tye*o)+qlt*Math.cos(Sye*o)+nut*Math.sin(Sye*o)+Klt*Math.cos(wye*o)+iut*Math.sin(wye*o)+Xlt*Math.cos(Bye*o)+out*Math.sin(Bye*o)+Jlt*Math.cos(Dye*o)+rut*Math.sin(Dye*o)+Zlt*Math.cos(vye*o)+sut*Math.sin(vye*o),s=Vlt+Hlt*i+aut*Math.cos(Pye*o)+Aut*Math.sin(Pye*o)+cut*Math.cos(Rye*o)+put*Math.sin(Rye*o)+lut*Math.cos(Mye*o)+gut*Math.sin(Mye*o)+uut*Math.cos(Nye*o)+_ut*Math.sin(Nye*o)+fut*Math.cos(Lye*o)+yut*Math.sin(Lye*o)+dut*Math.cos(Oye*o)+Cut*Math.sin(Oye*o)+hut*Math.cos(Fye*o)+Eut*Math.sin(Fye*o)+mut*Math.cos(Qye*o)+Iut*Math.sin(Qye*o),a=.0167086342-.0004203654*i,c=102.93734808*md+11612.3529*Xu*i,u=469.97289*Xu*i,f=174.87317577*md-8679.27034*Xu*i;return Gye(r,a,u,c,f,s,t)}function zye(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/ri.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*md,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*md,A=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*md,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,_=218.31664563*md,y=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,C=297.85019547*md+Xu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),E=93.27209062*md+Xu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),I=134.96340251*md+Xu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),b=357.52910918*md+Xu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),S=310.17137918*md-Xu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),B=2*C,v=4*C,P=6*C,N=2*I,L=3*I,p=4*I,x=2*E;a+=3400.4*Math.cos(B)-635.6*Math.cos(B-I)-235.6*Math.cos(I)+218.1*Math.cos(B-b)+181*Math.cos(B+I),c+=.014216*Math.cos(B-I)+.008551*Math.cos(B-N)-.001383*Math.cos(I)+.001356*Math.cos(B+I)-.001147*Math.cos(v-L)-914e-6*Math.cos(v-N)+869e-6*Math.cos(B-b-I)-627e-6*Math.cos(B)-394e-6*Math.cos(v-p)+282e-6*Math.cos(B-b-N)-279e-6*Math.cos(C-I)-236e-6*Math.cos(N)+231e-6*Math.cos(v)+229e-6*Math.cos(P-p)-201e-6*Math.cos(N-x),f+=486.26*Math.cos(B-x)-40.13*Math.cos(B)+37.51*Math.cos(x)+25.73*Math.cos(N-x)+19.97*Math.cos(B-b-x),A+=-55609*Math.sin(B-I)-34711*Math.sin(B-N)-9792*Math.sin(I)+9385*Math.sin(v-L)+7505*Math.sin(v-N)+5318*Math.sin(B+I)+3484*Math.sin(v-p)-3417*Math.sin(B-b-I)-2530*Math.sin(P-p)-2376*Math.sin(B)-2075*Math.sin(B-L)-1883*Math.sin(N)-1736*Math.sin(P-5*I)+1626*Math.sin(b)-1370*Math.sin(P-L),m+=-5392*Math.sin(B-x)-540*Math.sin(b)-441*Math.sin(B)+423*Math.sin(x)-288*Math.sin(N-x),y+=-3332.9*Math.sin(B)+1197.4*Math.sin(B-I)-662.5*Math.sin(b)+396.3*Math.sin(I)-218*Math.sin(B-b);let T=2*S,w=3*S;f+=46.997*Math.cos(S)*i-.614*Math.cos(B-x+S)*i+.614*Math.cos(B-x-S)*i-.0297*Math.cos(T)*o-.0335*Math.cos(S)*o+.0012*Math.cos(B-x+T)*o-16e-5*Math.cos(S)*r+4e-5*Math.cos(w)*r+4e-5*Math.cos(T)*r;let M=2.116*Math.sin(S)*i-.111*Math.sin(B-x-S)*i-.0015*Math.sin(S)*o;A+=M,y+=M,m+=-520.77*Math.sin(S)*i+13.66*Math.sin(B-x+S)*i+1.12*Math.sin(B-S)*i-1.06*Math.sin(x-S)*i+.66*Math.sin(T)*o+.371*Math.sin(S)*o-.035*Math.sin(B-x+T)*o-.015*Math.sin(B-x+S)*o+.0014*Math.sin(S)*r-.0011*Math.sin(w)*r-9e-4*Math.sin(T)*r,a*=Nlt;let O=u+f*Xu,U=h+A*Xu,Q=_+y*Xu,z=g+m*Xu;return Gye(a,c,O,U,z,Q,t)}var kye=.012300034,but=kye/(kye+1)*-1;function Tut(e,t){return t=zye(e,t),d.multiplyByScalar(t,but,t)}var Vye=new J(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),Xv=new d;J7.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),l(t)||(t=new d),Xv=xut(e,Xv),t=d.negate(Xv,t),Tut(e,Xv),d.subtract(t,Xv,t),J.multiplyByVector(Vye,t,t),t};J7.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),t=zye(e,t),J.multiplyByVector(Vye,t,t),t};var $E=J7;function Sut(e){e=e??V.EMPTY_OBJECT,this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??2}var wy=Sut;function DT(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Xe,this._viewportCartesian4=new se,this._viewportDirty=!1,this._viewportOrthographicMatrix=R.clone(R.IDENTITY),this._viewportTransformation=R.clone(R.IDENTITY),this._model=R.clone(R.IDENTITY),this._view=R.clone(R.IDENTITY),this._inverseView=R.clone(R.IDENTITY),this._projection=R.clone(R.IDENTITY),this._infiniteProjection=R.clone(R.IDENTITY),this._entireFrustum=new k,this._currentFrustum=new k,this._frustumPlanes=new se,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=J.clone(R.IDENTITY),this._view3DDirty=!0,this._view3D=new R,this._inverseView3DDirty=!0,this._inverseView3D=new R,this._inverseModelDirty=!0,this._inverseModel=new R,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new J,this._viewRotation=new J,this._inverseViewRotation=new J,this._viewRotation3D=new J,this._inverseViewRotation3D=new J,this._inverseProjectionDirty=!0,this._inverseProjection=new R,this._modelViewDirty=!0,this._modelView=new R,this._modelView3DDirty=!0,this._modelView3D=new R,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new R,this._inverseModelViewDirty=!0,this._inverseModelView=new R,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new R,this._viewProjectionDirty=!0,this._viewProjection=new R,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new R,this._modelViewProjectionDirty=!0,this._modelViewProjection=new R,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new R,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new R,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new R,this._normalDirty=!0,this._normal=new J,this._normal3DDirty=!0,this._normal3D=new J,this._inverseNormalDirty=!0,this._inverseNormal=new J,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new J,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ei,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new k,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new k,this._modelToEnu=new R,this._enuToModel=new R,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new G,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(DT.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Xe.equals(e,this._viewport)){Xe.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return Wye(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return Wye(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){R.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,R.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,R.getMatrix3(this.inverseModel,e),J.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return $7(this),this._view3D}},viewRotation:{get:function(){return $7(this),this._viewRotation}},viewRotation3D:{get:function(){return $7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return qye(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return qye(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return Fut(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return Qut(this),this._modelView}},modelView3D:{get:function(){return kut(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Wut(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Uut(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Gut(this),this._inverseModelView3D}},viewProjection:{get:function(){return zut(this),this._viewProjection}},inverseViewProjection:{get:function(){return Vut(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Hut(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return jut(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return Yut(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return qut(this),this._modelViewInfiniteProjection}},normal:{get:function(){return Kut(this),this._normal}},normal3D:{get:function(){return Xut(this),this._normal3D}},inverseNormal:{get:function(){return Jut(this),this._inverseNormal}},inverseNormal3D:{get:function(){return Zut(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return Yye(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return Yye(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??te.default}}});function wut(e,t){R.clone(t,e._view),R.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function But(e,t){R.clone(t,e._inverseView),R.getMatrix3(t,e._inverseViewRotation)}function Dut(e,t){R.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function vut(e,t){R.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var Hye=new d,Put=new R;function Rut(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,Hye)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,Hye)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=J.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=kt.eastNorthUpToFixedFrame(i,n,Put);e._enuToModel=R.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=R.inverseTransformation(e._enuToModel,e._modelToEnu),D.equalsEpsilon(n._radii.x,n._radii.y,D.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var Z7=new J,Mut=new Ae;function Nut(e,t){kt.computeIcrfToCentralBodyFixedMatrix(t.time,Z7);let n=$E.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);J.multiplyByVector(Z7,n,n),d.normalize(n,e._sunDirectionWC),n=J.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=$E.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),J.multiplyByVector(Z7,n,n),J.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Mut);i.project(r,e._sunPositionColumbusView)}DT.prototype.updateCamera=function(e){wut(this,e.viewMatrix),But(this,e.inverseViewMatrix),Rut(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ie.SCENE2D&&e.frustum instanceof An};DT.prototype.updateFrustum=function(e){Dut(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&vut(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=D.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};DT.prototype.updatePass=function(e){this._pass=e};var Lut=[],Out=new wy;DT.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ie.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),Nut(this,e);let n=e.light??Out;n instanceof wy?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=J.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??Lut,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=kt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,G.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function Wye(e){if(e._viewportDirty){let t=e._viewport;R.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),R.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function Fut(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ie.SCENE2D&&e._mode!==ie.MORPHING&&!e._orthographicIn3D?R.inverse(e._projection,e._inverseProjection):R.clone(R.ZERO,e._inverseProjection))}function Qut(e){e._modelViewDirty&&(e._modelViewDirty=!1,R.multiplyTransformation(e._view,e._model,e._modelView))}function kut(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,R.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Uut(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,R.inverse(e.modelView,e._inverseModelView))}function Gut(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,R.inverse(e.modelView3D,e._inverseModelView3D))}function zut(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,R.multiply(e._projection,e._view,e._viewProjection))}function Vut(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,R.inverse(e.viewProjection,e._inverseViewProjection))}function Hut(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,R.multiply(e._projection,e.modelView,e._modelViewProjection))}function Wut(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function jut(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,R.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function Yut(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,R.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function qut(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,R.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function Kut(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;R.getMatrix3(e.inverseModelView,t),J.transpose(t,t)}}function Xut(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;R.getMatrix3(e.inverseModelView3D,t),J.transpose(t,t)}}function Jut(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;R.getMatrix3(e.modelView,t),J.transpose(t,t)}}function Zut(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;R.getMatrix3(e.modelView3D,t),J.transpose(t,t)}}var jye=new d;function Yye(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,R.multiplyByPoint(e.inverseModel,e._cameraPosition,jye),ei.fromCartesian(jye,e._encodedCameraPositionMC))}var $ut=new d,eft=new d,tft=new d,nft=new d,ift=new Ae,oft=new d,rft=new R;function sft(e,t,n,i,o,r,s,a){let c=$ut;c.x=e.y,c.y=e.z,c.z=e.x;let u=eft;u.x=n.y,u.y=n.z,u.z=n.x;let f=tft;f.x=i.y,f.y=i.z,f.z=i.x;let h=nft;h.x=t.y,h.y=t.z,h.z=t.x,r===ie.SCENE2D&&(c.z=o*.5);let A=s.unproject(c,ift);A.longitude=D.clamp(A.longitude,-Math.PI,Math.PI),A.latitude=D.clamp(A.latitude,-D.PI_OVER_TWO,D.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(A,oft),_=kt.eastNorthUpToFixedFrame(m,g,rft);return R.multiplyByPointAsVector(_,u,u),R.multiplyByPointAsVector(_,f,f),R.multiplyByPointAsVector(_,h,h),l(a)||(a=new R),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function $7(e){e._view3DDirty&&(e._mode===ie.SCENE3D?R.clone(e._view,e._view3D):sft(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),R.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function qye(e){e._inverseView3DDirty&&(R.inverseTransformation(e.view3D,e._inverseView3D),R.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var tz=DT;function Ju(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):aft(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Xn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new ZG(this),this._textureCache=new $G;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),qt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),qt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),qt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),qt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),qt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),qt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),qt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),qt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),qt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),qt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),qt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);qt._minimumAliasedLineWidth=f[0],qt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);qt._minimumAliasedPointSize=h[0],qt._maximumAliasedPointSize=h[1];let A=u.getParameter(u.MAX_VIEWPORT_DIMS);qt._maximumViewportWidth=A[0],qt._maximumViewportHeight=A[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);qt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);qt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Ur(u,["OES_standard_derivatives"]),this._blendMinmax=!!Ur(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Ur(u,["OES_element_index_uint"]),this._depthTexture=!!Ur(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Ur(u,["EXT_frag_depth"]),this._debugShaders=Ur(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Ur(u,["OES_texture_float"]),this._textureHalfFloat=!!Ur(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Ur(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Ur(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Ur(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Ur(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Ur(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Ur(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Ur(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Ur(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Ur(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Ur(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Ur(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Ur(u,["EXT_texture_compression_bptc"]),Iu.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let _=r?Ur(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=_,qt._maximumTextureFilterAnisotropy=l(_)?u.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let y,C,E,I,b,S,B,v,P,N;if(c){let T=this;y=function(){return T._gl.createVertexArray()},C=function(w){T._gl.bindVertexArray(w)},E=function(w){T._gl.deleteVertexArray(w)},I=function(w,M,O,U,Q){u.drawElementsInstanced(w,M,O,U,Q)},b=function(w,M,O,U){u.drawArraysInstanced(w,M,O,U)},S=function(w,M){u.vertexAttribDivisor(w,M)},B=function(w){u.drawBuffers(w)}}else v=Ur(u,["OES_vertex_array_object"]),l(v)&&(y=function(){return v.createVertexArrayOES()},C=function(T){v.bindVertexArrayOES(T)},E=function(T){v.deleteVertexArrayOES(T)}),P=Ur(u,["ANGLE_instanced_arrays"]),l(P)&&(I=function(T,w,M,O,U){P.drawElementsInstancedANGLE(T,w,M,O,U)},b=function(T,w,M,O){P.drawArraysInstancedANGLE(T,w,M,O)},S=function(T,w){P.vertexAttribDivisorANGLE(T,w)}),N=Ur(u,["WEBGL_draw_buffers"]),l(N)&&(B=function(T){N.drawBuffersWEBGL(T)});this.glCreateVertexArray=y,this.glBindVertexArray=C,this.glDeleteVertexArray=E,this.glDrawElementsInstanced=I,this.glDrawArraysInstanced=b,this.glVertexAttribDivisor=S,this.glDrawBuffers=B,this._vertexArrayObject=!!v,this._instancedArrays=!!P,this._drawBuffers=!!N,qt._maximumDrawBuffers=this.drawBuffers?u.getParameter(ee.MAX_DRAW_BUFFERS):1,qt._maximumColorAttachments=this.drawBuffers?u.getParameter(ee.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new G(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let L=new tz,p=new El(this),x=Ue.fromCache();this._defaultPassState=p,this._defaultRenderState=x,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=L,this._currentRenderState=x,this._currentPassState=p,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let T=0;T<qt._maximumVertexAttributes;T++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ue.apply(u,x,p)}function aft(e,t,n){if(typeof WebGLRenderingContext>"u")throw new ce("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new ce("The browser supports WebGL, but initialization failed.");return r}function cft(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function lft(e,t,n,i){let o=`${cft(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function uft(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new ce(lft(e,t,n,i))}function fft(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function dft(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,fft(e,o,t))}return i}function Ur(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var hft={};Object.defineProperties(Ju.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=dft(this._originalGLContext,e?uft:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Nt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new jr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return hft}}});function Kye(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ue.partialApply(e._gl,o,t,r,n,i)}var eX;typeof WebGLRenderingContext<"u"&&(eX=[ee.BACK]);function tX(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=eX;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var mft=new Ei;Ju.prototype.clear=function(e,t){e=e??mft,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(G.equals(this._clearColor,o)||(G.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;Kye(this,a,t,!0);let c=e.framebuffer??t.framebuffer;tX(this,c),n.clear(i)};function Aft(e,t,n,i,o){tX(e,t),Kye(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function pft(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??R.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}Ju.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Aft(this,o,t,n,r),pft(this,e,n,i)};Ju.prototype.beginFrame=function(){};Ju.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=eX;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};Ju.prototype.readPixels=function(e){let t=this._gl;e=e??V.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=He.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=et.createTypedArray(et.RGBA,a,o,r);return tX(this,s),t.readPixels(n,i,o,r,et.RGBA,He.toWebGLConstant(a,this),c),c};var Xye={position:0,textureCoordinates:1};Ju.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Me.TRIANGLES});e=li.fromGeometry({context:this,geometry:t,attributeLocations:Xye,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};Ju.prototype.createViewportQuadCommand=function(e,t){return t=t??V.EMPTY_OBJECT,new nt({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Me.TRIANGLES,renderState:t.renderState,shaderProgram:ln.fromCache({context:this,vertexShaderSource:wT,fragmentShaderSource:e,attributeLocations:Xye}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};Ju.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function nX(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(nX.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});nX.prototype.destroy=function(){delete this._pickObjects[this.key]};Ju.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new ce("Out of unique Pick IDs.");return this._pickObjects[t]=e,new nX(this._pickObjects,t,G.fromRgba(t))};Ju.prototype.isDestroyed=function(){return!1};Ju.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var vT=Ju;function nz(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new vT(this._canvas,ze(e?.contextOptions)),this._canvases=[]}nz.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,u=this.drawingBufferWidth;c.width<u&&(c.width=u);let f=this.drawingBufferHeight;c.height<f&&(c.height=f)},s=function(){let c=this.drawingBufferWidth,u=this.drawingBufferHeight,f=n._context.canvas.height-u;t.drawImage(n._context.canvas,0,f,c,u,0,0,c,u),n._context.endFrame()};return new Proxy(this._context,{get(c,u,f){if(u==="isDestroyed")return function(){return i};switch(u){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,u,f)}}})};nz.prototype.destroy=function(){this._context.destroy(),ue(this)};nz.prototype.isDestroyed=function(){return!1};var iz=nz;function e0(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e;if(!t.webgl2)throw new me("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:u,depth:f}=e;l(n)&&(l(c)||(c=n.width),l(u)||(u=n.height),l(f)||(f=n.depth));let h=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,A=et.toInternalFormat(i,o,t),g=et.isCompressedFormat(A),m=t._gl,_=et.texture3DSizeInBytes(i,o,c,u,f);if(this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=m.TEXTURE_3D,this._texture=m.createTexture(),this._internalFormat=A,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._depth=f,this._dimensions=new d(c,u,f),this._hasMipmap=!1,this._sizeInBytes=_,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Jye(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(this._textureTarget,this._texture),l(n)){if(s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new me("For Texture3D, options.source.arrayBufferView must be defined");gft(this,n),this._initialized=!0}else _ft(this);m.bindTexture(this._textureTarget,null)}function gft(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:u,pixelDatatype:f,flipY:h}=e,A=et.alignmentInBytes(u,f,s);i.pixelStorei(i.UNPACK_ALIGNMENT,A),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let m=1;if(t.mipLevels&&t.mipLevels.length&&(m=t.mipLevels.length+1),i.texStorage3D(o,m,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,u,He.toWebGLConstant(f,n),g),m>1){let _=s,y=a,C=c;for(let E=0;E<t.mipLevels.length;++E)_=iX(_),y=iX(y),C=iX(C),i.texSubImage3D(o,E+1,0,0,0,_,y,C,u,He.toWebGLConstant(f,n),t.mipLevels[E])}}function iX(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function _ft(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}e0.create=function(e){return new e0(e)};Object.defineProperties(e0.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Jye(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Jye(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}e0.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};e0.prototype.isDestroyed=function(){return!1};e0.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Zye=e0;function yft(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[we.createIfNeeded(t.positiveX).fetchImage(i),we.createIfNeeded(t.negativeX).fetchImage(i),we.createIfNeeded(t.positiveY).fetchImage(i),we.createIfNeeded(t.negativeY).fetchImage(i),we.createIfNeeded(t.positiveZ).fetchImage(i),we.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new jr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var oz=yft;var Jv=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var rz=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var sz=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var az=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var cz=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var lz=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var uz=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var fz=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var dz=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var hz=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var Zv=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var $v=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var mz=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var Az=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var pz=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var eP=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var tP=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var gz=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var _z=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var yz=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var Cz=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var Ez=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var Iz=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var xz=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var bz=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;async function Cft(e,t,n,i){return l(i)||(i=!1),xft(e,t,n,i)}function Eft(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(eCe(i)):r=o.then(eCe(i)).catch(bft(i)),e.shift(),t.push(r),!0}function Ift(e){return new Promise(function(t){setTimeout(t,e)})}function oX(e,t,n){return e.length?Eft(e,t,n)?oX(e,t,n):Ift(100).then(()=>oX(e,t,n)):Promise.resolve()}function xft(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return oX(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function $ye(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function eCe(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!$ye(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];$ye(s,i,n)}}):Promise.resolve()}}function bft(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var Tz=Cft;var rX=new k;async function tCe(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,rX);let A=e.loadTileDataAvailability(rX.x,rX.y,1);l(A)&&s.push(A)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return Tz(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await tCe(e,a,n),t}var PT=tCe;async function sX(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ie.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ie.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await sX._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),A=r;return f&&(A.height+=h),A}sX._sampleTerrainMostDetailed=PT;var RT=sX;var Tft={NONE:0,LERC:1},vh=Object.freeze(Tft);var Sft={NONE:0,BITS12:1},za=Object.freeze(Sft);var t0=new d,wft=new d,Ad=new k,Sz=new R,Bft=new R,Dft=Math.pow(2,12);function Fc(e,t,n,i,o,r,s,a,c,u){let f=za.NONE,h,A;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,_=d.subtract(m,g,wft),y=i-n;Math.max(d.maximumComponent(_),y)<Dft-1?f=za.BITS12:f=za.NONE,h=R.inverseTransformation(o,new R);let E=d.negate(g,t0);R.multiply(R.fromTranslation(E,Sz),h,h);let I=t0;I.x=1/_.x,I.y=1/_.y,I.z=1/_.z,R.multiply(R.fromScale(I,Sz),h,h),A=R.clone(o),R.setTranslation(A,d.ZERO,A),o=R.clone(o,new R);let b=R.fromTranslation(g,Sz),S=R.fromScale(_,Bft),B=R.multiply(b,S,Sz);R.multiply(o,B,o),R.multiply(A,B,A)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=A,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=u??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}Fc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===za.BITS12){n=R.multiplyByPoint(this.toScaledENU,n,t0),n.x=D.clamp(n.x,0,1),n.y=D.clamp(n.y,0,1),n.z=D.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=D.clamp((o-this.minimumHeight)/f,0,1);k.fromElements(n.x,n.y,Ad);let A=Fn.compressTextureCoordinates(Ad);k.fromElements(n.z,h,Ad);let g=Fn.compressTextureCoordinates(Ad);k.fromElements(c,u,Ad);let m=Fn.compressTextureCoordinates(Ad);if(e[t++]=A,e[t++]=g,e[t++]=m,this.hasWebMercatorT){k.fromElements(s,0,Ad);let _=Fn.compressTextureCoordinates(Ad);e[t++]=_}}else d.subtract(n,this.center,t0),e[t++]=t0.x,e[t++]=t0.y,e[t++]=t0.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Fn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var vft=new d,nCe=new d;Fc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,A=s*r+f;t[A]=e[h]}let a=this.decodePosition(t,s,vft),c=n.geodeticSurfaceNormal(a,nCe),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};Fc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};Fc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===za.BITS12){let i=Fn.decompressTextureCoordinates(e[t],Ad);n.x=i.x,n.y=i.y;let o=Fn.decompressTextureCoordinates(e[t+1],Ad);return n.z=o.x,R.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};Fc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,nCe),a=this.decodeHeight(e,t),c=Yr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};Fc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new k),t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+2],n):k.fromElements(e[t+4],e[t+5],n)};Fc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+1],Ad).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};Fc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+3],Ad).x:e[t+6]};Fc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return k.fromElements(o,r,n)};Fc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};Fc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case za.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var wz={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},Bz={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};Fc.prototype.getAttributes=function(e){let t=q.FLOAT,n=q.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===za.NONE){s(wz.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(wz.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(wz.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(Bz.compressed0,a?4:3),c&&s(Bz.compressed1,1),this.hasGeodeticSurfaceNormals&&s(Bz.geodeticSurfaceNormal,3)}return r};Fc.prototype.getAttributeLocations=function(){return this.quantization===za.NONE?wz:Bz};Fc.clone=function(e,t){if(l(e))return l(t)||(t=new Fc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=R.clone(e.toScaledENU),t.fromScaledENU=R.clone(e.fromScaledENU),t.matrix=R.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Il=Fc;var uA={};uA.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var aX=new d,Pft=new R,Rft=new d,Mft=new d;uA.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=D.PI_OVER_TWO,a=D.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,A=h>0,g=e.isGeographic??!0,m=e.ellipsoid??te.default,_=1/m.maximumRadius,y=ae.clone(e.nativeRectangle),C=ae.clone(e.rectangle),E,I,b,S;l(C)?(E=C.west,I=C.south,b=C.east,S=C.north):g?(E=a(y.west),I=a(y.south),b=a(y.east),S=a(y.north)):(E=y.west*_,I=s-2*o(r(-y.south*_)),b=y.east*_,S=s-2*o(r(-y.north*_)));let B=e.relativeToCenter,v=l(B);B=v?B:d.ZERO;let P=e.includeWebMercatorT??!1,N=e.exaggeration??1,L=e.exaggerationRelativeHeight??0,x=N!==1,T=e.structure??uA.DEFAULT_STRUCTURE,w=T.heightScale??uA.DEFAULT_STRUCTURE.heightScale,M=T.heightOffset??uA.DEFAULT_STRUCTURE.heightOffset,O=T.elementsPerHeight??uA.DEFAULT_STRUCTURE.elementsPerHeight,U=T.stride??uA.DEFAULT_STRUCTURE.stride,Q=T.elementMultiplier??uA.DEFAULT_STRUCTURE.elementMultiplier,z=T.isBigEndian??uA.DEFAULT_STRUCTURE.isBigEndian,F=ae.computeWidth(y),H=ae.computeHeight(y),W=F/(u-1),Z=H/(f-1);g||(F*=_,H*=_);let Y=m.radiiSquared,$=Y.x,X=Y.y,he=Y.z,ge=65536,fe=-65536,ye=kt.eastNorthUpToFixedFrame(B,m),Ie=R.inverseTransformation(ye,Pft),ve,Te;P&&(ve=Yi.geodeticLatitudeToMercatorAngle(I),Te=1/(Yi.geodeticLatitudeToMercatorAngle(S)-ve));let ke=Rft;ke.x=Number.POSITIVE_INFINITY,ke.y=Number.POSITIVE_INFINITY,ke.z=Number.POSITIVE_INFINITY;let Ge=Mft;Ge.x=Number.NEGATIVE_INFINITY,Ge.y=Number.NEGATIVE_INFINITY,Ge.z=Number.NEGATIVE_INFINITY;let qe=Number.POSITIVE_INFINITY,tt=u*f,$t=h>0?u*2+f*2:0,it=tt+$t,tn=new Array(it),Wt=new Array(it),vt=new Array(it),bi=P?new Array(it):[],di=x?new Array(it):[],Ot=0,Tt=f,ii=0,Ct=u;A&&(--Ot,++Tt,--ii,++Ct);let Ro=1e-5;for(let $e=Ot;$e<Tt;++$e){let pt=$e;pt<0&&(pt=0),pt>=f&&(pt=f-1);let Xt=y.north-Z*pt;g?Xt=a(Xt):Xt=s-2*o(r(-Xt*_));let xn=(Xt-I)/(S-I);xn=D.clamp(xn,0,1);let lo=$e===Ot,ro=$e===Tt-1;h>0&&(lo?Xt+=Ro*H:ro&&(Xt-=Ro*H));let $s=t(Xt),ea=n(Xt),Vn=he*ea,_i;P&&(_i=(Yi.geodeticLatitudeToMercatorAngle(Xt)-ve)*Te);for(let _s=ii;_s<Ct;++_s){let Wo=_s;Wo<0&&(Wo=0),Wo>=u&&(Wo=u-1);let Ca=pt*(u*U)+Wo*U,uo;if(O===1)uo=c[Ca];else{uo=0;let wo;if(z)for(wo=0;wo<O;++wo)uo=uo*Q+c[Ca+wo];else for(wo=O-1;wo>=0;--wo)uo=uo*Q+c[Ca+wo]}uo=uo*w+M,fe=Math.max(fe,uo),ge=Math.min(ge,uo);let jo=y.west+W*Wo;g?jo=a(jo):jo=jo*_;let df=(jo-E)/(b-E);df=D.clamp(df,0,1);let Ar=pt*u+Wo;if(h>0){let wo=_s===ii,cn=_s===Ct-1,Se=lo||ro||wo||cn;if((lo||ro)&&(wo||cn))continue;Se&&(uo-=h,wo?(Ar=tt+(f-pt-1),jo-=Ro*F):ro?Ar=tt+f+(u-Wo-1):cn?(Ar=tt+f+u+pt,jo+=Ro*F):lo&&(Ar=tt+f+u+f+Wo))}let ys=$s*t(jo),Qs=$s*n(jo),vd=$*ys,rs=X*Qs,Ka=1/i(vd*ys+rs*Qs+Vn*ea),Sr=vd*Ka,Bl=rs*Ka,Dl=Vn*Ka,ta=new d;ta.x=Sr+ys*uo,ta.y=Bl+Qs*uo,ta.z=Dl+ea*uo,R.multiplyByPoint(Ie,ta,aX),d.minimumByComponent(aX,ke,ke),d.maximumByComponent(aX,Ge,Ge),qe=Math.min(qe,uo),tn[Ar]=ta,vt[Ar]=new k(df,xn),Wt[Ar]=uo,P&&(bi[Ar]=_i),x&&(di[Ar]=m.geodeticSurfaceNormal(ta))}}let Qo=le.fromPoints(tn),ya;l(C)&&(ya=Qn.fromRectangle(C,ge,fe,m));let mr;v&&(mr=new H_(m).computeHorizonCullingPointPossiblyUnderEllipsoid(B,tn,ge));let Tr=new CC(ke,Ge,B),Oe=new Il(B,Tr,qe,fe,ye,!1,P,x,N,L),lt=new Float32Array(it*Oe.stride),Ke=0;for(let $e=0;$e<it;++$e)Ke=Oe.encode(lt,Ke,tn[$e],vt[$e],Wt[$e],void 0,bi[$e],di[$e]);return{vertices:lt,maximumHeight:fe,minimumHeight:ge,encoding:Oe,boundingSphere3D:Qo,orientedBoundingBox:ya,occludeePointInScaledSpace:mr}};var nP=uA;function By(){me.throwInstantiationError()}Object.defineProperties(By.prototype,{credits:{get:me.throwInstantiationError},waterMask:{get:me.throwInstantiationError}});By.prototype.interpolateHeight=me.throwInstantiationError;By.prototype.isChildAvailable=me.throwInstantiationError;By.prototype.createMesh=me.throwInstantiationError;By.prototype.upsample=me.throwInstantiationError;By.prototype.wasCreatedByUpsampling=me.throwInstantiationError;By.maximumAsynchronousTasks=5;var fA=By;function Nft(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this.center=e,this.vertices=t,this.stride=u??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=A,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=_}var Ph=Nft;function Wp(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??vh.NONE;let t=nP.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===vh.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Wp.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var iCe="createVerticesFromHeightmap",Lft=new mi(iCe),Oft=new mi(iCe,fA.maximumAsynchronousTasks);Wp.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),A=this._structure,m=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let y=(a?Oft:Lft).scheduleTask({heightmap:this._buffer,structure:A,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(y))return;let C=this;return Promise.resolve(y).then(function(E){let I;C._skirtHeight>0?I=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(E.gridWidth,E.gridHeight):I=Bs.getRegularGridIndicesAndEdgeIndices(E.gridWidth,E.gridHeight);let b=E.gridWidth*E.gridHeight;return C._mesh=new Ph(h,new Float32Array(E.vertices),I.indices,I.indexCountWithoutSkirts,b,E.minimumHeight,E.maximumHeight,le.clone(E.boundingSphere3D),d.clone(E.occludeePointInScaledSpace),E.numberOfAttributes,Qn.clone(E.orientedBoundingBox),Il.clone(E.encoding),I.westIndicesSouthToNorth,I.southIndicesEastToWest,I.eastIndicesNorthToSouth,I.northIndicesWestToEast),C._buffer=void 0,C._mesh})};Wp.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=nP.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let _;this._skirtHeight>0?_=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):_=Bs.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let y=m.gridWidth*m.gridHeight;return this._mesh=new Ph(f,m.vertices,_.indices,_.indexCountWithoutSkirts,y,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),this._mesh};Wp.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,A=l(this._mesh),g=this._encoding===vh.LERC;if(!A&&g)return;let _;if(A){let y=this._mesh.vertices,C=this._mesh.encoding;_=oCe(y,C,f,h,e,i,o,t,n)}else _=Fft(this._buffer,a,c,s,u,e,i,o,t,n),_=_*h+f;return _};Wp.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,A=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,_=e.tileXYToRectangle(t,n,i),y=e.tileXYToRectangle(o,r,s),C=f.heightOffset,E=f.heightScale,I=f.elementsPerHeight,b=f.elementMultiplier,S=f.isBigEndian,B=Math.pow(b,I-1);for(let v=0;v<u;++v){let P=D.lerp(y.north,y.south,v/(u-1));for(let N=0;N<c;++N){let L=D.lerp(y.west,y.east,N/(c-1)),p=oCe(g,m,C,E,_,c,u,L,P);p=p<f.lowestEncodedHeight?f.lowestEncodedHeight:p,p=p>f.highestEncodedHeight?f.highestEncodedHeight:p,Qft(A,I,b,B,h,S,v*c+N,p)}}return Promise.resolve(new Wp({buffer:A,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Wp.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Wp.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function Fft(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),A=f|0,g=A+1;g>=s&&(g=s-1,A=s-2);let m=h|0,_=m+1;_>=a&&(_=a-1,m=a-2);let y=f-A,C=h-m;m=a-1-m,_=a-1-_;let E=Dz(e,t,n,i,o,m*s+A),I=Dz(e,t,n,i,o,m*s+g),b=Dz(e,t,n,i,o,_*s+A),S=Dz(e,t,n,i,o,_*s+g);return rCe(y,C,E,I,b,S)}function oCe(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,A=h+1;A>=r&&(A=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let _=u-h,y=f-g;g=s-1-g,m=s-1-m;let C=(t.decodeHeight(e,g*r+h)-n)/i,E=(t.decodeHeight(e,g*r+A)-n)/i,I=(t.decodeHeight(e,m*r+h)-n)/i,b=(t.decodeHeight(e,m*r+A)-n)/i;return rCe(_,y,C,E,I,b)}function rCe(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function Dz(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function Qft(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var Qc=Wp;function MT(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e}Object.defineProperties(MT.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});MT.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}))};MT.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};MT.prototype.getTileDataAvailable=function(e,t,n){};MT.prototype.loadTileDataAvailability=function(e,t,n){};var jp=MT;var kft=new k;function Uft(e,t){let n=e.unionClippingRegions,i=e.length,o=Vs.useFloatTexture(t),r=Vs.getTextureResolution(e,t,kft),s=r.x,a=r.y,c=o?Vft(s,a):Hft(s,a);return c+=` +`,c+=n?Gft(i):zft(i),c}function Gft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function zft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function Vft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Hft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var Dy=Uft;function Wft(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function cX(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function jft(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ie.SCENE3D:o=t;break;case ie.SCENE2D:case ie.COLUMBUS_VIEW:o=n;break;case ie.MORPHING:o=i;break}return o}function Yft(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function qft(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function Kft(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}cX.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,A=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,_=e.enableLighting,y=e.dynamicAtmosphereLighting,C=e.dynamicAtmosphereLightingFromSun,E=e.showGroundAtmosphere,I=e.perFragmentGroundAtmosphere,b=e.hasVertexNormals,S=e.useWebMercatorProjection,B=e.enableFog,v=e.enableClippingPlanes,P=e.clippingPlanes,N=e.enableClippingPolygons,L=e.clippingPolygons,p=e.clippedByBoundaries,x=e.hasImageryLayerCutout,T=e.colorCorrect,w=e.highlightFillTile,M=e.colorToAlpha,O=e.hasGeodeticSurfaceNormals,U=e.hasExaggeration,Q=e.showUndergroundColor,z=e.translucent,F=0,H="",Z=n.renderedMesh.encoding;Z.quantization===za.BITS12&&(F=1,H="QUANTIZATION_BITS12");let $=0,X="";p&&($=1,X="TILE_LIMIT_RECTANGLE");let he=0,ge="";x&&(he=1,ge="APPLY_IMAGERY_CUTOUT");let fe=t.mode,ye=fe|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|A<<8|g<<9|m<<10|_<<11|y<<12|C<<13|E<<14|I<<15|b<<16|S<<17|B<<18|F<<19|h<<20|v<<21|N<<22|$<<23|he<<24|T<<25|w<<26|M<<27|O<<28|U<<29|Q<<30|z<<31|f<<32,Ie=0;l(P)&&P.length>0&&(Ie=v?P.clippingPlanesState:0);let ve=0;l(L)&&L.length>0&&(ve=N?L.clippingPolygonsState:0);let Te=n.surfaceShader;if(l(Te)&&Te.numberOfDayTextures===i&&Te.flags===ye&&Te.material===this.material&&Te.clippingShaderState===Ie&&Te.clippingPolygonShaderState===ve)return Te.shaderProgram;let ke=this._shadersByTexturesFlags[i];if(l(ke)||(ke=this._shadersByTexturesFlags[i]=[]),Te=ke[ye],!l(Te)||Te.material!==this.material||Te.clippingShaderState!==Ie||Te.clippingPolygonShaderState!==ve){let Ge=this.baseVertexShaderSource.clone(),qe=this.baseFragmentShaderSource.clone();Ie!==0&&qe.sources.unshift(Dy(P,t.context)),ve!==0&&(qe.sources.unshift(Yft(t.context)),Ge.sources.unshift(qft(t.context))),Ge.defines.push(H),qe.defines.push(`TEXTURE_UNITS ${i}`,X,ge),o&&qe.defines.push("APPLY_BRIGHTNESS"),r&&qe.defines.push("APPLY_CONTRAST"),s&&qe.defines.push("APPLY_HUE"),a&&qe.defines.push("APPLY_SATURATION"),c&&qe.defines.push("APPLY_GAMMA"),u&&qe.defines.push("APPLY_ALPHA"),f&&qe.defines.push("APPLY_DAY_NIGHT_ALPHA"),A&&qe.defines.push("HAS_WATER_MASK"),g&&(qe.defines.push("SHOW_REFLECTIVE_OCEAN"),Ge.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&qe.defines.push("SHOW_OCEAN_WAVES"),M&&qe.defines.push("APPLY_COLOR_TO_ALPHA"),Q&&(Ge.defines.push("UNDERGROUND_COLOR"),qe.defines.push("UNDERGROUND_COLOR")),z&&(Ge.defines.push("TRANSLUCENT"),qe.defines.push("TRANSLUCENT")),_&&(b?(Ge.defines.push("ENABLE_VERTEX_LIGHTING"),qe.defines.push("ENABLE_VERTEX_LIGHTING")):(Ge.defines.push("ENABLE_DAYNIGHT_SHADING"),qe.defines.push("ENABLE_DAYNIGHT_SHADING"))),y&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),C&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),E&&(Ge.defines.push("GROUND_ATMOSPHERE"),qe.defines.push("GROUND_ATMOSPHERE"),I&&(Ge.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),qe.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ge.defines.push("INCLUDE_WEB_MERCATOR_Y"),qe.defines.push("INCLUDE_WEB_MERCATOR_Y"),B&&(Ge.defines.push("FOG"),qe.defines.push("FOG")),h&&qe.defines.push("APPLY_SPLIT"),v&&qe.defines.push("ENABLE_CLIPPING_PLANES"),N&&(qe.defines.push("ENABLE_CLIPPING_POLYGONS"),Ge.defines.push("ENABLE_CLIPPING_POLYGONS"),L.inverse&&qe.defines.push("CLIPPING_INVERSE"),qe.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`),Ge.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`)),T&&qe.defines.push("COLOR_CORRECT"),w&&qe.defines.push("HIGHLIGHT_FILL_TILE"),O&&Ge.defines.push("GEODETIC_SURFACE_NORMALS"),U&&Ge.defines.push("EXAGGERATION");let tt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;x&&(tt+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let it=0;it<i;++it)x?tt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${it}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:tt+=` color = sampleAndBlend( +`,tt+=` color, + u_dayTextures[${it}], + u_dayTextureUseWebMercatorT[${it}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${it}], + u_dayTextureTranslationAndScale[${it}], + ${u?`u_dayTextureAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureNightAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureDayAlpha[${it}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${it}]`:"0.0"}, + ${r?`u_dayTextureContrast[${it}]`:"0.0"}, + ${s?`u_dayTextureHue[${it}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${it}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${it}]`:"0.0"}, + ${h?`u_dayTextureSplit[${it}]`:"0.0"}, + ${M?`u_colorsToAlpha[${it}]`:"vec4(0.0)"}, + nightBlend); +`,x&&(tt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);tt+=` return color; + }`,qe.sources.push(tt),Ge.sources.push(jft(fe)),Ge.sources.push(Kft(S));let $t=ln.fromCache({context:t.context,vertexShaderSource:Ge,fragmentShaderSource:qe,attributeLocations:Z.getAttributeLocations()});Te=ke[ye]=new Wft(i,ye,this.material,$t,Ie,ve)}return n.surfaceShader=Te,Te.shaderProgram};cX.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var vz=cX;var Xft={NONE:-1,PARTIAL:0,FULL:1},Gr=Object.freeze(Xft);var Jft={START:0,LOADING:1,DONE:2,FAILED:3},Va=Object.freeze(Jft);var Zft={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},To=Object.freeze(Zft);function ur(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new le,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(ur.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===To.RECEIVING||e===To.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==qn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var $ft=new Ae;function lX(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ie.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,$ft);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var edt=new d,tdt=new d,ndt=new d;ur.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let A=a[h],g=a[h+1],m=a[h+2],_=lX(c,t,n,s,A,edt),y=lX(c,t,n,s,g,tdt),C=lX(c,t,n,s,m,ndt),E=Ai.rayTriangleParametric(e,_,y,C,i);l(E)&&E<f&&E>=0&&(f=E)}return f!==Number.MAX_VALUE?In.getPoint(e,f,o):void 0};ur.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};ur.prototype.freeVertexArray=function(){ur._freeVertexArray(this.vertexArray),this.vertexArray=void 0,ur._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};ur.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new ur),e.state===Va.START&&(idt(e,t,n),e.state=Va.LOADING)};ur.processStateMachine=function(e,t,n,i,o,r,s){ur.initialize(e,n,i);let a=e.data;if(e.state===Va.LOADING&&odt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===To.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,A={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(A[g]=h[g]));e._loadedCallbacks=A,e.state=Va.DONE}c&&(e.renderable=!0)};ur.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===qn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let A=h.processStateMachine(e,n,i);a=a&&A,s=s||A||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===qn.FAILED||h.loadingImagery.state===qn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function sCe(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Il.clone(s);c.hasGeodeticSurfaceNormals=t,c=Il.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(ur._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=ur._createVertexArrayForMesh(i.context,o)):(ur._freeVertexArray(e.vertexArray),e.vertexArray=ur._createVertexArrayForMesh(i.context,o)),ur._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}ur.prototype.addGeodeticSurfaceNormals=function(e,t){sCe(this,!0,e,t)};ur.prototype.removeGeodeticSurfaceNormals=function(e){sCe(this,!1,void 0,e)};ur.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,A=h.length;for(let g=0;g<A;g++){let m=h[g];m.level=-1}}}};function idt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=To.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function odt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===To.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||ur.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===To.FAILED&&rdt(s,e,t,n,e.x,e.y,e.level),s.terrainState===To.UNLOADED&&sdt(s,n,e.x,e.y,e.level),s.terrainState===To.RECEIVED&&cdt(s,t,n,e.x,e.y,e.level),s.terrainState===To.TRANSFORMED&&(ldt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=To.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)fdt(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function rdt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=Va.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let A=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(A)&&(e.terrainState=To.RECEIVING,Promise.resolve(A).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=To.RECEIVED)}).catch(function(){e.terrainState=To.FAILED}))}function sdt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=To.RECEIVED,e.request=void 0}function s(c){if(e.request.state===hi.CANCELLED){e.terrainData=void 0,e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainState=To.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=zo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=To.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=To.UNLOADED,e.request=void 0)}a()}var adt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function cdt(e,t,n,i,o,r){let s=n.tilingScheme,a=adt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=To.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=To.TRANSFORMED}).catch(function(){e.terrainState=To.FAILED}))}ur._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Et.createVertexBuffer({context:e,typedArray:n,usage:Qe.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Et.createIndexBuffer({context:e,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new li({context:e,attributes:o,indexBuffer:s})};ur._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function ldt(e,t,n,i,o,r,s){e.vertexArray=ur._createVertexArrayForMesh(t,e.mesh),e.terrainState=To.READY,e.fill=e.fill&&e.fill.destroy(s)}function udt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function fdt(e,t){let n=t.terrainData.waterMask,i=udt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,se.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}ur.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};ur.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Rh=ur;var ddt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Sn=ddt;var aCe={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=aCe.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},ai=aCe;function LT(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se}LT.prototype.update=function(e,t,n){this.changedThisFrame&&(mCe(e,t,this.tile,n),this.changedThisFrame=!1)};LT.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};LT.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Rh._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var hdt=new HC;LT.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=hdt;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),A=c.findTileToNorth(r);Zs(e,n,c,u,s,Sn.EAST,!1,a,i),Zs(e,n,c,f,s,Sn.NORTH,!1,a,i),Zs(e,n,c,h,s,Sn.WEST,!1,a,i),Zs(e,n,c,A,s,Sn.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),_=h.findTileToNorth(r),y=h.findTileToSouth(r);Zs(e,n,c,g,s,Sn.SOUTHEAST,!1,a,i),Zs(e,n,c,_,s,Sn.SOUTHWEST,!1,a,i),Zs(e,n,c,m,s,Sn.NORTHEAST,!1,a,i),Zs(e,n,c,y,s,Sn.NORTHWEST,!1,a,i),c=a.dequeue()}};function Zs(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||ai.wasKicked(u._lastSelectionResult)||ai.originalResult(u._lastSelectionResult)===ai.CULLED);){if(s)return;let f=u.parent;if(r>=Sn.NORTHWEST&&f!==void 0)switch(r){case Sn.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case Sn.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case Sn.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case Sn.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===ai.RENDERED){if(l(u.data.vertexArray))return;mdt(e,t,n,u,r,o,a,c);return}if(ai.originalResult(i._lastSelectionResult)!==ai.CULLED)switch(r){case Sn.WEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c),Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.EAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c),Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTH:Zs(e,t,n,i.southwestChild,o,r,!0,a,c),Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Sn.NORTH:Zs(e,t,n,i.northeastChild,o,r,!0,a,c),Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHWEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHEAST:Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTHWEST:Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.SOUTHEAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new me("Invalid edge")}}}function mdt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new LT(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Adt(e,t,n,i,o,a)}function Adt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(mCe(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case Sn.WEST:u=s.westMeshes,f=s.westTiles;break;case Sn.SOUTH:u=s.southMeshes,f=s.southTiles;break;case Sn.EAST:u=s.eastMeshes,f=s.eastTiles;break;case Sn.NORTH:u=s.northMeshes,f=s.northTiles;break;case Sn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Sn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Sn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Sn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,A,g,m,_=n.rectangle,y,C=i.rectangle;switch(o){case Sn.WEST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.north,m.south,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.south,m.north,y));++A);break;case Sn.SOUTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.west,m.east,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.east,m.west,y));++A);break;case Sn.EAST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.south,m.north,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.north,m.south,y));++A);break;case Sn.NORTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.east,m.west,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.west,m.east,y));++A);break}A-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,A-h,a),f.splice(h,A-h,n))}var n0=new Ae,pdt=new Ae,NT=new d,hX=new d,uX=new k,fX=new k,Zu=new k;function Fz(){this.height=0,this.encodedNormal=new k}function Pz(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,A=0,g=0;l(h)&&(A=h.minimumHeight,g=h.maximumHeight),u=(A+g)*.5}return ACe(e,t,n,i,u,c),c}var gdt={minimumHeight:0,maximumHeight:0},_dt=new d,cCe=new Fz,lCe=new Fz,uCe=new Fz,fCe=new Fz,ydt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,Cdt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function mCe(e,t,n,i){Rh.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=Mz(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,uCe),A=Mz(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,cCe),g=Mz(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,lCe),m=Mz(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,fCe);h=Pz(r,f,0,1,h,A,m,g,uCe),A=Pz(r,f,0,0,A,h,g,m,cCe),g=Pz(r,f,1,1,g,A,m,h,lCe),m=Pz(r,f,1,1,m,g,h,A,fCe);let _=A.height,y=g.height,C=h.height,E=m.height,I=Math.min(_,y,C,E),b=Math.max(_,y,C,E),S=(I+b)*.5,B,v,P=e.getLevelMaximumGeometricError(n.level),N=f.maximumRadius-P,L=Math.acos(N/f.maximumRadius)*4;if(L*=1.5,s.width>L&&b-I<=P){let T=new Qc({width:9,height:9,buffer:ydt,structure:{heightOffset:b}}),w=Cdt;w.tilingScheme=n.tilingScheme,w.x=n.x,w.y=n.y,w.level=n.level,w.exaggeration=a,w.exaggerationRelativeHeight=c,r.mesh=T._createMeshSync(w)}else{let T=u,w=ae.center(s,pdt);w.height=S;let M=f.cartographicToCartesian(w,_dt),O=new Il(M,void 0,void 0,void 0,void 0,!0,!0,T,a,c),U=5,Q;for(Q=r.westMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].eastIndicesNorthToSouth.length;for(Q=r.southMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].northIndicesWestToEast.length;for(Q=r.eastMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].westIndicesSouthToNorth.length;for(Q=r.northMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].southIndicesEastToWest.length;let z=gdt;z.minimumHeight=I,z.maximumHeight=b;let F=O.stride,H=new Float32Array(U*F),W=0,Z=W;W=Rz(f,s,O,H,W,0,1,h.height,h.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.westTiles,r.westMeshes,Sn.EAST,z);let Y=W;W=Rz(f,s,O,H,W,0,0,A.height,A.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.southTiles,r.southMeshes,Sn.NORTH,z);let $=W;W=Rz(f,s,O,H,W,1,0,g.height,g.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.eastTiles,r.eastMeshes,Sn.WEST,z);let X=W;W=Rz(f,s,O,H,W,1,1,m.height,m.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.northTiles,r.northMeshes,Sn.SOUTH,z),I=z.minimumHeight,b=z.maximumHeight;let he=Qn.fromRectangle(s,I,b,n.tilingScheme.ellipsoid),ge=Yi.geodeticLatitudeToMercatorAngle(s.south),fe=1/(Yi.geodeticLatitudeToMercatorAngle(s.north)-ge),ye=(Yi.geodeticLatitudeToMercatorAngle(w.latitude)-ge)*fe,Ie=f.geodeticSurfaceNormalCartographic(n0,hX),ve=Fn.octEncode(Ie,uX),Te=W;O.encode(H,W*F,he.center,k.fromElements(.5,.5,Zu),S,ve,ye,Ie),++W;let ke=W,Ge=ke<256?1:2,qe=(ke-1)*3,tt=qe*Ge,$t=(H.length-ke*F)*Float32Array.BYTES_PER_ELEMENT,it;if($t>=tt){let Ot=ke*F*Float32Array.BYTES_PER_ELEMENT;it=ke<256?new Uint8Array(H.buffer,Ot,qe):new Uint16Array(H.buffer,Ot,qe)}else it=ke<256?new Uint8Array(qe):new Uint16Array(qe);H=new Float32Array(H.buffer,0,ke*F);let tn=0;for(B=0;B<ke-2;++B)it[tn++]=Te,it[tn++]=B,it[tn++]=B+1;it[tn++]=Te,it[tn++]=B,it[tn++]=0;let Wt=[];for(B=Y;B>=Z;--B)Wt.push(B);let vt=[];for(B=$;B>=Y;--B)vt.push(B);let bi=[];for(B=X;B>=$;--B)bi.push(B);let di=[];for(di.push(0),B=Te-1;B>=X;--B)di.push(B);r.mesh=new Ph(O.center,H,it,qe,ke,I,b,le.fromOrientedBoundingBox(he),wdt(e,he.center,s,I,b),O.stride,he,O,Wt,vt,bi,di)}let p=t.context;r._destroyVertexArray(i),r.vertexArray=Rh._createVertexArrayForMesh(p,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let x=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let T=o._findAncestorTileWithTerrainData(n);l(T)&&l(T.data.waterMaskTexture)&&(r.waterMaskTexture=T.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,T,r.waterMaskTranslationAndScale))}l(x)&&(--x.referenceCount,x.referenceCount===0&&x.destroy())}function Rz(e,t,n,i,o,r,s,a,c,u,f){let h=n0;h.longitude=D.lerp(t.west,t.east,r),h.latitude=D.lerp(t.south,t.north,s),h.height=a;let A=e.cartographicToCartesian(h,NT),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(A,hX));let m=fX;return m.x=r,m.y=s,n.encode(i,o*n.stride,A,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var Oz=new ae;function iP(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,Oz),o.west-=D.TWO_PI,o.east-=D.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,Oz),o.west+=D.TWO_PI,o.east+=D.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,A=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(A)<Math.EPSILON5?A=0:Math.abs(A-1)<Math.EPSILON5&&(A=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=A,i.y=g,i}var Edt=new k;function dX(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var Idt=new k,xdt=new d;function bdt(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,A=iP(t,n,f.decodeTextureCoordinates(h,o,Zu),Zu),g=iP(t,n,f.decodeTextureCoordinates(h,r,fX),fX),m;c?m=(s-A.x)/(g.x-A.x):m=(a-A.y)/(g.y-A.y);let _=f.decodeHeight(h,o),y=f.decodeHeight(h,r),C=n.rectangle;n0.longitude=D.lerp(C.west,C.east,s),n0.latitude=D.lerp(C.south,C.north,a),u.height=n0.height=D.lerp(_,y,m);let E;if(f.hasVertexNormals){let I=f.getOctEncodedNormal(h,o,Edt),b=f.getOctEncodedNormal(h,r,Idt),S=Fn.octDecode(I.x,I.y,NT),B=Fn.octDecode(b.x,b.y,xdt);E=d.lerp(S,B,m,NT),d.normalize(E,E),Fn.octEncode(E,u.encodedNormal)}else E=e.geodeticSurfaceNormalCartographic(n0,NT),Fn.octEncode(E,u.encodedNormal)}function ACe(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(n0,NT);Fn.octEncode(s,r.encodedNormal)}function Mz(e,t,n,i,o,r,s,a,c,u,f){if(hCe(e,t,a,s,!1,n,i,f)||hCe(e,t,u,c,!0,n,i,f))return f;let A;if(mX(o,r))return n===0?i===0?A=r.eastIndicesNorthToSouth[0]:A=r.southIndicesEastToWest[0]:i===0?A=r.northIndicesWestToEast[0]:A=r.westIndicesSouthToNorth[0],dX(r,A,n,i,f),f;let g;if(n===0?i===0?g=Nz(e.westMeshes,e.westTiles,Sn.EAST,e.southMeshes,e.southTiles,Sn.NORTH,n,i):g=Nz(e.northMeshes,e.northTiles,Sn.SOUTH,e.westMeshes,e.westTiles,Sn.EAST,n,i):i===0?g=Nz(e.southMeshes,e.southTiles,Sn.NORTH,e.eastMeshes,e.eastTiles,Sn.WEST,n,i):g=Nz(e.eastMeshes,e.eastTiles,Sn.WEST,e.northMeshes,e.northTiles,Sn.SOUTH,n,i),l(g))return ACe(e,t,n,i,g,f),f}function Nz(e,t,n,i,o,r,s,a){let c=dCe(e,t,!1,n,s,a),u=dCe(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function Lz(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=Tdt(e,t,n,i,o,r[u],s[u],a,c);return o}function Tdt(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===Sn.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,Oz),u.west-=D.TWO_PI,u.east-=D.TWO_PI):a===Sn.WEST&&r.x===0&&(u=ae.clone(r.rectangle,Oz),u.west+=D.TWO_PI,u.east+=D.TWO_PI);let f=e.tile.rectangle,h,A;o>0&&(n.decodeTextureCoordinates(i,o-1,Zu),h=Zu.x,A=Zu.y);let g,m;switch(a){case Sn.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case Sn.NORTH:g=s.northIndicesWestToEast,m=!0;break;case Sn.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case Sn.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let _=r,y=e.tile,C=s.encoding,E=s.vertices,I=n.stride,b,S;C.hasWebMercatorT&&(b=Yi.geodeticLatitudeToMercatorAngle(f.south),S=1/(Yi.geodeticLatitudeToMercatorAngle(f.north)-b));for(let B=0;B<g.length;++B){let v=g[B],P=C.decodeTextureCoordinates(E,v,Zu);iP(_,y,P,P);let N=P.x,L=P.y,p=m?N:L;if(p<0||p>1||Math.abs(N-h)<D.EPSILON5&&Math.abs(L-A)<D.EPSILON5)continue;let x=Math.abs(N)<D.EPSILON5||Math.abs(N-1)<D.EPSILON5,T=Math.abs(L)<D.EPSILON5||Math.abs(L-1)<D.EPSILON5;if(x&&T)continue;let w=C.decodePosition(E,v,NT),M=C.decodeHeight(E,v),O;C.hasVertexNormals?O=C.getOctEncodedNormal(E,v,uX):(O=uX,O.x=0,O.y=0);let U=L;if(C.hasWebMercatorT){let z=D.lerp(f.south,f.north,L);U=(Yi.geodeticLatitudeToMercatorAngle(z)-b)*S}let Q;n.hasGeodeticSurfaceNormals&&(Q=t.geodeticSurfaceNormal(w,hX)),n.encode(i,o*I,w,P,M,O,U,Q),c.minimumHeight=Math.min(c.minimumHeight,M),c.maximumHeight=Math.max(c.maximumHeight,M),++o}return o}function dCe(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!mX(h,f))continue;let A;switch(i){case Sn.WEST:A=f.westIndicesSouthToNorth;break;case Sn.SOUTH:A=f.southIndicesEastToWest;break;case Sn.EAST:A=f.eastIndicesNorthToSouth;break;case Sn.NORTH:A=f.northIndicesWestToEast;break}let g=A[n?0:A.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function mX(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function hCe(e,t,n,i,o,r,s,a){let c,u,f,h,A,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(mX(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,A=c[h],m.encoding.decodeTextureCoordinates(m.vertices,A,Zu);let _=iP(g,e.tile,Zu,Zu);if(_.x===r&&_.y===s)return dX(m,A,r,s,a),!0;if(h=qo(c,u?r:s,function(y,C){m.encoding.decodeTextureCoordinates(m.vertices,y,Zu);let E=iP(g,e.tile,Zu,Zu);return f?u?E.x-r:E.y-s:u?r-E.x:s-E.y}),h<0){if(h=~h,h>0&&h<c.length)return bdt(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return dX(m,c[h],r,s,a),!0}return!1}var Sdt=[new d,new d,new d,new d];function wdt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Sdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var oP=LT;function fr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Dn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new _e,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(fr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(fr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(fr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(fr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new _e,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new G(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(fr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=se.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}}});function Bdt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}fr.prototype.update=function(e){this._imageryLayers._update()};function Ddt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}fr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(Bdt)})),Ddt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Rh._freeVertexArray(t[i]);t.length=0};fr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};fr.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS}}),this._blendRenderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},blending:pn.ALPHA_BLEND});let s=ze(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Ue.fromCache(s),s=ze(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Ue.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&oP.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let u=0,f=c.length;u<f;++u){let h=c[u],A=h.data.tileBoundingRegion;$dt(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,A.minimumHeight)}}};function CCe(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}fr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)CCe(t[n],e)};fr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};fr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};fr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===ai.CULLED_BUT_NEEDED,o=n.terrainState),Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Gr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var vdt=new le,ECe=new ae,Pdt=new ae,Rdt=new Ae;function kz(e,t){if(t.west<t.east)return t;let n=ae.clone(t,Pdt);return ae.center(e,Rdt).longitude>0?n.east=D.PI:n.west=-D.PI,n}function ICe(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}fr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=ICe(this,t);if(t.fog.enabled&&!o&&D.fog(i,t.fog.density)>=1)return Gr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Gr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=kz(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,ECe);if(!l(f))return Gr.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ie.SCENE3D&&(c=vdt,le.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ie.MORPHING&&l(r.renderedMesh)&&(c=le.union(s.boundingSphere,c,c))),!l(c))return Gr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let y=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=y!==nn.INSIDE,y===nn.OUTSIDE)return Gr.NONE}let A=this._clippingPolygons;if(l(A)&&A.enabled){let y=A.computeIntersectionWithBoundingVolume(s);e.isClipped=y!==nn.OUTSIDE}let g,m=a.computeVisibility(c);if(m===nn.OUTSIDE?g=Gr.NONE:m===nn.INTERSECTING?g=Gr.PARTIAL:m===nn.INSIDE&&(g=Gr.FULL),g===Gr.NONE)return g;let _=t.mode===ie.SCENE3D&&t.camera.frustum instanceof An;if(t.mode===ie.SCENE3D&&!_&&l(n)&&!o){let y=r.occludeePointInScaledSpace;return!l(y)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(y,s.minimumHeight)?g:Gr.NONE}return g};fr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Mdt=[],Ndt=[];fr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Mdt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===To.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],A=h.loadingImagery,g=!l(A)||A.state===qn.FAILED||A.state===qn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=Ndt;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),A=h._lastSelectionResultFrame===u?h._lastSelectionResult:ai.NONE;if(A===ai.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===To.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let _=m[a],y=_.loadingImagery,C=!l(y)||y.state===qn.FAILED||y.state===qn.INVALID,E=(_.loadingImagery||_.readyImagery).imageryLayer._layerIndex;if(C&&!i[E])return!1}}else A===ai.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Ldt=new d;fr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,Ldt),a=d.magnitude(s);return a<D.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var pCe=new R,Qz=new R,Odt=new se,Fdt=new se,Qdt=new se,kdt=new d,gCe=new d,Udt=new d,Gdt=new d;fr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var zdt=[new d,new d,new d,new d];function _Ce(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=zdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}fr.prototype.computeDistanceToTile=function(e,t){Vdt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function Vdt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Rh);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new $f({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=i.mesh,h=i.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0)r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let g=A.data;if(g!==void 0){let m=g.mesh,_=g.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0){r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight;break}else if(_!==void 0&&_._minimumHeight!==void 0&&_._maximumHeight!==void 0){r.minimumHeight=_._minimumHeight,r.maximumHeight=_._maximumHeight;break}}A=A.parent}u=A}if(u!==void 0){let A=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(A!==1&&(c=!1,r.minimumHeight=Yr.getHeight(r.minimumHeight,A,g),r.maximumHeight=Yr.getHeight(r.maximumHeight,A,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Qn.clone(f.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=le.clone(f.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(f.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let _=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||_)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}fr.prototype.isDestroyed=function(){return!1};fr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function Hdt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}fr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let A=f+h;e._createTileImagerySkeletons(s,n,A)&&(s._loadedCallbacks[e._layerIndex]=Hdt(h,e,n),s.state=Va.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=Va.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==ai.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};fr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Wdt=new R,jdt=new R;function yCe(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,o,pCe),pCe},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,r,Qz),R.multiply(o,Qz,Qz),Qz},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?R.multiply(e.context.uniformState.view,i.modelMatrix,Wdt):R.IDENTITY;return R.inverseTranspose(o,jdt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new se(0,0,.5,1),fillHighlightColor:new G(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new k(65e5,9e6),nightFadeDistance:new k(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new R,tileRectangle:new se,verticalExaggerationAndRelativeHeight:new k(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new k,southMercatorYAndOneOverHeight:new k,waterMask:void 0,waterMaskTranslationAndScale:new se,minMaxHeight:new k,scaleAndBias:new R,clippingPlanesEdgeColor:G.clone(G.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new se,frontFaceAlphaByDistance:new se,backFaceAlphaByDistance:new se,localizedTranslucencyRectangle:new se,undergroundColor:G.clone(G.TRANSPARENT),undergroundColorAlphaByDistance:new se,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?wt(n,t.materialUniformMap):n}function Ydt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=qdt(e,r,o),i.wireframeVertexArray.mesh=o}}function qdt(e,t,n){let o={indices:n.indices,primitiveType:Me.TRIANGLES};jn.toWireframe(o);let r=o.indices,s=Et.createIndexBuffer({context:e,typedArray:r,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new li({context:e,attributes:t._attributes,indexBuffer:s})}var xCe,bCe,Uz;(function(){let e=new Rt({geometry:$h.fromDimensions({dimensions:new d(2,2,2)})}),t=new Rt({geometry:new L_({radius:1})}),n=new R,i,o;function r(s){return new kn({geometryInstances:s,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}xCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=en.fromColor(a),o=r(e)),o},bCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromTranslation(s.center,n),n=R.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=en.fromColor(a),o=r(t)),o},Uz=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var Kdt=new se(0,0,0,0),Xdt={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},Jdt=G.TRANSPARENT,Zdt=new Yt;function $dt(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new oP(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let Ot=r.credits;for(let Tt=0,ii=Ot.length;Tt<ii;++Tt)o.addCreditToNextFrame(Ot[Tt])}let s=qt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let u=n.cameraUnderground,f=n.globeTranslucencyState,h=f.translucent,A=f.frontFaceAlphaByDistance,g=f.backFaceAlphaByDistance,m=f.rectangle,_=e.undergroundColor??Jdt,y=e.undergroundColorAlphaByDistance??Zdt,C=ICe(e,n)&&n.mode===ie.SCENE3D&&_.alpha>0&&(y.nearValue>0||y.farValue>0),E=e.lambertDiffuseMultiplier,I=e.vertexShadowDarkness,b=e.hasWaterMask&&l(a),S=b&&e.showWaterEffect,B=e.oceanNormalMap,v=S&&l(B),P=e.terrainProvider,N=l(P)&&e.terrainProvider.hasVertexNormals,L=n.fog.enabled&&n.fog.renderable&&!u,p=e.showGroundAtmosphere&&n.mode===ie.SCENE3D,x=Dn.castShadows(e.shadows)&&!h,T=Dn.receiveShadows(e.shadows)&&!h,w=e.hueShift,M=e.saturationShift,O=e.brightnessShift,U=!(D.equalsEpsilon(w,0,D.EPSILON7)&&D.equalsEpsilon(M,0,D.EPSILON7)&&D.equalsEpsilon(O,0,D.EPSILON7)),Q=!1;if(p){let Ot=d.magnitude(n.camera.positionWC),Tt=e.nightFadeOutDistance;Q=Ot>Tt}b&&--s,v&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=f.numberOfTextureUniforms;let z=i.renderedMesh,F=z.center,H=z.encoding,W=i.tileBoundingRegion,Z=n.verticalExaggeration,Y=n.verticalExaggerationRelativeHeight,$=Z!==1,X=H.hasGeodeticSurfaceNormals,he=Odt,ge=0,fe=0,ye=0,Ie=0,ve=!1;if(n.mode!==ie.SCENE3D){let Ot=n.mapProjection,Tt=Ot.project(ae.southwest(t.rectangle),Udt),ii=Ot.project(ae.northeast(t.rectangle),Gdt);if(he.x=Tt.x,he.y=Tt.y,he.z=ii.x,he.w=ii.y,n.mode!==ie.MORPHING&&(F=kdt,F.x=0,F.y=(he.z+he.x)*.5,F.z=(he.w+he.y)*.5,he.x-=F.y,he.y-=F.z,he.z-=F.y,he.w-=F.z),n.mode===ie.SCENE2D&&H.quantization===za.BITS12){let Ct=1/(Math.pow(2,12)-1)*.5,Ro=(he.z-he.x)*Ct,Qo=(he.w-he.y)*Ct;he.x-=Ro,he.y-=Qo,he.z+=Ro,he.w+=Qo}Ot instanceof Yi&&(ge=t.rectangle.south,fe=t.rectangle.north,ye=Yi.geodeticLatitudeToMercatorAngle(ge),Ie=1/(Yi.geodeticLatitudeToMercatorAngle(fe)-ye),ve=!0)}let Te=Xdt;Te.frameState=n,Te.surfaceTile=i,Te.hasWaterMask=b,Te.showReflectiveOcean=S,Te.showOceanWaves=v,Te.enableLighting=e.enableLighting,Te.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Te.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Te.showGroundAtmosphere=p,Te.atmosphereLightIntensity=e.atmosphereLightIntensity,Te.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Te.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Te.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Te.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Te.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Te.perFragmentGroundAtmosphere=Q,Te.hasVertexNormals=N,Te.useWebMercatorProjection=ve,Te.clippedByBoundaries=i.clippedByBoundaries,Te.hasGeodeticSurfaceNormals=X,Te.hasExaggeration=$;let ke=i.imagery,Ge=0,qe=ke.length,tt=e.showSkirts&&!u&&!h,$t=e.backFaceCulling&&!u&&!h,it=$t?e._renderState:e._disableCullingRenderState,tn=$t?e._blendRenderState:e._disableCullingBlendRenderState,Wt=it,vt=e._firstPassInitialColor,bi=n.context;if(l(e._debug.boundingSphereTile)||Uz(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let Ot=e._drawCommands.length;for(let Tt=0;Tt<Ot;++Tt)e._uniformMaps[Tt]=yCe(n,e)}do{let Ot=0,Tt,ii;if(e._drawCommands.length<=e._usedDrawCommands?(Tt=new nt,Tt.owner=t,Tt.cull=!1,Tt.boundingVolume=new le,Tt.orientedBoundingBox=void 0,ii=yCe(n,e),e._drawCommands.push(Tt),e._uniformMaps.push(ii)):(Tt=e._drawCommands[e._usedDrawCommands],ii=e._uniformMaps[e._usedDrawCommands]),Tt.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let rs=W.boundingVolume,qa=W.boundingSphere;l(rs)?xCe(rs,G.RED).update(n):l(qa)&&bCe(qa,G.RED).update(n)}let Ct=ii.properties;se.clone(vt,Ct.initialColor),Ct.oceanNormalMap=B,Ct.lightingFadeDistance.x=e.lightingFadeOutDistance,Ct.lightingFadeDistance.y=e.lightingFadeInDistance,Ct.nightFadeDistance.x=e.nightFadeOutDistance,Ct.nightFadeDistance.y=e.nightFadeInDistance,Ct.atmosphereLightIntensity=e.atmosphereLightIntensity,Ct.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Ct.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Ct.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Ct.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Ct.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Ct.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Ro=u?g:A,Qo=u?A:g;l(Ro)&&(se.fromElements(Ro.near,Ro.nearValue,Ro.far,Ro.farValue,Ct.frontFaceAlphaByDistance),se.fromElements(Qo.near,Qo.nearValue,Qo.far,Qo.farValue,Ct.backFaceAlphaByDistance)),se.fromElements(y.near,y.nearValue,y.far,y.farValue,Ct.undergroundColorAlphaByDistance),G.clone(_,Ct.undergroundColor),Ct.lambertDiffuseMultiplier=E,Ct.vertexShadowDarkness=I;let ya=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;ya&&G.clone(e.fillHighlightColor,Ct.fillHighlightColor),Ct.verticalExaggerationAndRelativeHeight.x=Z,Ct.verticalExaggerationAndRelativeHeight.y=Y,Ct.center3D=z.center,d.clone(F,Ct.rtc),se.clone(he,Ct.tileRectangle),Ct.southAndNorthLatitude.x=ge,Ct.southAndNorthLatitude.y=fe,Ct.southMercatorYAndOneOverHeight.x=ye,Ct.southMercatorYAndOneOverHeight.y=Ie;let mr=Fdt,Tr=kz(t.rectangle,e.cartographicLimitRectangle),Oe=Qdt,lt=kz(t.rectangle,m);d.fromElements(w,M,O,Ct.hsbShift);let Ke=t.rectangle,$e=1/Ke.width,pt=1/Ke.height;mr.x=(Tr.west-Ke.west)*$e,mr.y=(Tr.south-Ke.south)*pt,mr.z=(Tr.east-Ke.west)*$e,mr.w=(Tr.north-Ke.south)*pt,se.clone(mr,Ct.localizedCartographicLimitRectangle),Oe.x=(lt.west-Ke.west)*$e,Oe.y=(lt.south-Ke.south)*pt,Oe.z=(lt.east-Ke.west)*$e,Oe.w=(lt.north-Ke.south)*pt,se.clone(Oe,Ct.localizedTranslucencyRectangle);let Xt=L&&D.fog(t._distance,n.fog.density)>D.EPSILON3;U=U&&(Xt||p);let xn=!1,lo=!1,ro=!1,$s=!1,ea=!1,Vn=!1,_i=!1,_s=!1,Wo=!1,Ca=!1;for(;Ot<s&&Ge<qe;){let rs=ke[Ge],qa=rs.readyImagery;if(++Ge,!l(qa)||qa.imageryLayer.alpha===0)continue;let Ka=rs.useWebMercatorT?qa.textureWebMercator:qa.texture,Sr=qa.imageryLayer;l(rs.textureTranslationAndScale)||(rs.textureTranslationAndScale=Sr._calculateTextureTranslationAndScale(t,rs)),Ct.dayTextures[Ot]=Ka,Ct.dayTextureTranslationAndScale[Ot]=rs.textureTranslationAndScale,Ct.dayTextureTexCoordsRectangle[Ot]=rs.textureCoordinateRectangle,Ct.dayTextureUseWebMercatorT[Ot]=rs.useWebMercatorT,Ct.dayTextureAlpha[Ot]=Sr.alpha,Vn=Vn||Ct.dayTextureAlpha[Ot]!==1,Ct.dayTextureNightAlpha[Ot]=Sr.nightAlpha,_i=_i||Ct.dayTextureNightAlpha[Ot]!==1,Ct.dayTextureDayAlpha[Ot]=Sr.dayAlpha,_i=_i||Ct.dayTextureDayAlpha[Ot]!==1,Ct.dayTextureBrightness[Ot]=Sr.brightness,xn=xn||Ct.dayTextureBrightness[Ot]!==ds.DEFAULT_BRIGHTNESS,Ct.dayTextureContrast[Ot]=Sr.contrast,lo=lo||Ct.dayTextureContrast[Ot]!==ds.DEFAULT_CONTRAST,Ct.dayTextureHue[Ot]=Sr.hue,ro=ro||Ct.dayTextureHue[Ot]!==ds.DEFAULT_HUE,Ct.dayTextureSaturation[Ot]=Sr.saturation,$s=$s||Ct.dayTextureSaturation[Ot]!==ds.DEFAULT_SATURATION,Ct.dayTextureOneOverGamma[Ot]=1/Sr.gamma,ea=ea||Ct.dayTextureOneOverGamma[Ot]!==1/ds.DEFAULT_GAMMA,Ct.dayTextureSplit[Ot]=Sr.splitDirection,_s=_s||Ct.dayTextureSplit[Ot]!==0;let Bl=Ct.dayTextureCutoutRectangles[Ot];if(l(Bl)||(Bl=Ct.dayTextureCutoutRectangles[Ot]=new se),se.clone(se.ZERO,Bl),l(Sr.cutoutRectangle)){let wo=kz(Ke,Sr.cutoutRectangle),cn=ae.simpleIntersection(wo,Ke,ECe);Wo=l(cn)||Wo,Bl.x=(wo.west-Ke.west)*$e,Bl.y=(wo.south-Ke.south)*pt,Bl.z=(wo.east-Ke.west)*$e,Bl.w=(wo.north-Ke.south)*pt}let Dl=Ct.colorsToAlpha[Ot];l(Dl)||(Dl=Ct.colorsToAlpha[Ot]=new se);let ta=l(Sr.colorToAlpha)&&Sr.colorToAlphaThreshold>0;if(Ca=Ca||ta,ta){let wo=Sr.colorToAlpha;Dl.x=wo.red,Dl.y=wo.green,Dl.z=wo.blue,Dl.w=Sr.colorToAlphaThreshold}else Dl.w=-1;if(l(qa.credits)){let wo=qa.credits;for(let cn=0,Se=wo.length;cn<Se;++cn)o.addCreditToNextFrame(wo[cn])}++Ot}Ct.dayTextures.length=Ot,Ct.waterMask=a,se.clone(c,Ct.waterMaskTranslationAndScale),Ct.minMaxHeight.x=H.minimumHeight,Ct.minMaxHeight.y=H.maximumHeight,R.clone(H.matrix,Ct.scaleAndBias);let uo=e._clippingPlanes,jo=l(uo)&&uo.enabled&&t.isClipped;jo&&(Ct.clippingPlanesEdgeColor=G.clone(uo.edgeColor,Ct.clippingPlanesEdgeColor),Ct.clippingPlanesEdgeWidth=uo.edgeWidth);let df=e._clippingPolygons,Ar=l(df)&&df.enabled&&t.isClipped;Te.numberOfDayTextures=Ot,Te.applyBrightness=xn,Te.applyContrast=lo,Te.applyHue=ro,Te.applySaturation=$s,Te.applyGamma=ea,Te.applyAlpha=Vn,Te.applyDayNightAlpha=_i,Te.applySplit=_s,Te.enableFog=Xt,Te.enableClippingPlanes=jo,Te.clippingPlanes=uo,Te.enableClippingPolygons=Ar,Te.clippingPolygons=df,Te.hasImageryLayerCutout=Wo,Te.colorCorrect=U,Te.highlightFillTile=ya,Te.colorToAlpha=Ca,Te.showUndergroundColor=C,Te.translucent=h;let ys=i.renderedMesh.indices.length;tt||(ys=i.renderedMesh.indexCountWithoutSkirts),Tt.shaderProgram=e._surfaceShaderSet.getShaderProgram(Te),Tt.castShadows=x,Tt.receiveShadows=T,Tt.renderState=Wt,Tt.primitiveType=Me.TRIANGLES,Tt.vertexArray=i.vertexArray||i.fill.vertexArray,Tt.count=ys,Tt.uniformMap=ii,Tt.pass=Be.GLOBE,e._debug.wireframe&&(Ydt(bi,e,t),l(i.wireframeVertexArray)&&(Tt.vertexArray=i.wireframeVertexArray,Tt.primitiveType=Me.LINES,Tt.count=ys*2));let Qs=Tt.boundingVolume,vd=Tt.orientedBoundingBox;n.mode!==ie.SCENE3D?(le.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,W.minimumHeight,W.maximumHeight,Qs),d.fromElements(Qs.center.z,Qs.center.x,Qs.center.y,Qs.center),n.mode===ie.MORPHING&&(Qs=le.union(W.boundingSphere,Qs,Qs))):(Tt.boundingVolume=le.clone(W.boundingSphere,Qs),Tt.orientedBoundingBox=Qn.clone(W.boundingVolume,vd)),Tt.dirty=!0,h&&f.updateDerivedCommands(Tt,n),CCe(Tt,n),Wt=tn,vt=Kdt}while(Ge<qe)}var Gz=fr;function TCe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(TCe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=Yt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=Yt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var zz=TCe;function SCe(e){this._ellipsoid=new H_(e.ellipsoid,d.ZERO)}Object.defineProperties(SCe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Vz=SCe;var AX=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},eht=1e3;function ma(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=ai.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new AX(eht),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}ma.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new ma({tilingScheme:e,x:s,y:r,level:0});return i};var tht=256;function nht(e,t,n,i){let o=n.width/tht*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}ma.prototype._getCacheKey=function(e,t){return nht(e.longitude,e.latitude,this._rectangle,t)};ma.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};ma.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};ma.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};ma.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(ma.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Va.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});ma.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};ma.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};ma.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};ma.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};ma.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};ma.prototype.freeResources=function(){this.clearPositionCache(),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),Hz(this._southwestChild),this._southwestChild=void 0,Hz(this._southeastChild),this._southeastChild=void 0,Hz(this._northwestChild),this._northwestChild=void 0,Hz(this._northeastChild),this._northeastChild=void 0};function Hz(e){l(e)&&e.freeResources()}var Wz=ma;function jz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}jz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};jz.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),wCe(this,t)),t=i}};function wCe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}jz.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&wCe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var Yz=jz;function pd(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new Yz,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new Vz({ellipsoid:n}),this._tileLoadProgressEvent=new _e,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(pd.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});pd.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function iht(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,DCe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}pd.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==Va.START&&e(t),t=t.replacementNext};pd.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};pd.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};pd.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function DCe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}pd.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(iht(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),DCe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};pd.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),aht(this,e),ght(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function oht(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=_e.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}pd.prototype.endFrame=function(e){!e.passes.render||e.mode===ie.MORPHING||(hht(this,e),pht(this,e),oht(this,e))};pd.prototype.isDestroyed=function(){return!1};pd.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var sP,BCe=new Ae;function rht(e,t){let n=ae.center(e.rectangle,BCe),i=n.longitude-sP.longitude,o=n.latitude-sP.latitude;n=ae.center(t.rectangle,BCe);let r=n.longitude-sP.longitude,s=n.latitude-sP.latitude;return i*i+o*o-(r*r+s*s)}var sht=new d,rP=[];function aht(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let _=r.tilingScheme;if(l(_)){let y=r.tilingScheme;e._levelZeroTiles=Wz.createLevelZeroTiles(y);let C=e._levelZeroTiles.length;if(rP.length<C)for(rP=new Array(C),o=0;o<C;++o)rP[o]===void 0&&(rP[o]=new aP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;sP=t.camera.positionCartographic,a.sort(rht);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,A;if(u.length>0||f.length>0){for(o=0,A=a.length;o<A;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=R.getTranslation(g.transform,sht);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,A=a.length;o<A;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?cc(e,s,r,t,c,!1,rP[o]):(Yp(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Yp(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function aP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function vCe(){this.southwest=new aP,this.southeast=new aP,this.northwest=new aP,this.northeast=new aP}vCe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var gX=new Array(31);for(let e=0;e<gX.length;++e)gX[e]=new vCe;function cht(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=fht(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,A=n._lastSelectionResultFrame===h?n._lastSelectionResult:ai.NONE,g=e.tileProvider;if(s||i){let m=ai.originalResult(A)===ai.RENDERED,_=ai.originalResult(A)===ai.CULLED||A===ai.NONE,y=n.state===Va.DONE,C=m||_||y;if(C||l(g.canRenderWithoutLosingDetail)&&(C=g.canRenderWithoutLosingDetail(n)),C){s&&Yp(e,e._tileLoadQueueMedium,n,t),qz(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Yp(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){qz(e,n),Yp(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.REFINED;let _=e._tilesToRender.length,y=e._tileLoadQueueLow.length,C=e._tileLoadQueueMedium.length,E=e._tileLoadQueueHigh.length,I=e._tileToUpdateHeights.length;if(lht(e,a,c,u,f,t,i,o),_!==e._tilesToRender.length){let b=o.allAreRenderable,S=o.anyWereRenderedLastFrame,B=o.notYetRenderableCount,v=!1;if(!b&&!S){let P=e._tilesToRender;for(let L=_;L<P.length;++L){let p=P[L];for(;p!==void 0&&p._lastSelectionResult!==ai.KICKED&&p!==n;)p._lastSelectionResult=ai.kick(p._lastSelectionResult),p=p.parent}e._tilesToRender.length=_,e._tileToUpdateHeights.length=I,qz(e,n),n._lastSelectionResult=ai.RENDERED;let N=A===ai.RENDERED;!N&&B>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=y,e._tileLoadQueueMedium.length=C,e._tileLoadQueueHigh.length=E,Yp(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,v=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=N,N||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!v&&Yp(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,qz(e,n),Yp(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function lht(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=gX[t.level],A=h.southwest,g=h.southeast,m=h.northwest,_=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(cc(e,t,u,r,f,s,A),cc(e,n,u,r,f,s,g),cc(e,i,u,r,f,s,m),cc(e,o,u,r,f,s,_)):(cc(e,i,u,r,f,s,m),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m)):(cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m),cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A)),h.combine(a)}function uht(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function cc(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Gr.NONE)return cht(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,uht(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Yp(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:ai.NONE;c!==ai.CULLED_BUT_NEEDED&&c!==ai.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=ai.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Yp(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=ai.CULLED):t._lastSelectionResult=ai.CULLED;t._lastSelectionResultFrame=i.frameNumber}function fht(e,t,n){if(t.mode===ie.SCENE2D||t.camera.frustum instanceof An||t.camera.frustum instanceof ls)return dht(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=D.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function dht(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ie.SCENE2D&&(h-=D.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function qz(e,t){e._tilesToRender.push(t)}function hht(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Oi()+e._loadQueueTimeSlice,s=e._tileProvider,a=pX(e,t,s,r,n,!1);a=pX(e,t,s,r,i,a),pX(e,t,s,r,o,a)}function mht(e,t){return e._loadPriority-t._loadPriority}function pX(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(mht);for(let s=0,a=o.length;s<a&&(Oi()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var OT=new In,Kz=new Ae,vy=new d,Aht=[];function pht(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=Aht;n.length=0;let i=e._tileToUpdateHeights,o=Oi(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let _=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:ai.NONE;(_===ai.RENDERED||_===ai.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let A=h.customData,g=A.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let _=A[f],y=h.data.terrainData,C=l(y)&&y.wasCreatedByUpsampling();if(h.level>_.level&&!C){let E,I=h.getPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError);if(l(I))E=I;else{if(l(_.positionOnEllipsoidSurface)||(_.positionOnEllipsoidSurface=d.fromRadians(_.positionCartographic.longitude,_.positionCartographic.latitude,0,u)),a===ie.SCENE3D){let b=u.geodeticSurfaceNormal(_.positionOnEllipsoidSurface,OT.direction),S=u.getSurfaceNormalIntersectionWithZAxis(_.positionOnEllipsoidSurface,11500,OT.origin);if(!l(S)){let B=0;l(h.data.tileBoundingRegion)&&(B=h.data.tileBoundingRegion.minimumHeight);let v=Math.min(B,-11500),P=d.multiplyByScalar(b,Math.abs(v)+1,vy);d.subtract(_.positionOnEllipsoidSurface,P,OT.origin)}}else Ae.clone(_.positionCartographic,Kz),Kz.height=-11500,c.project(Kz,vy),d.fromElements(vy.z,vy.x,vy.y,vy),d.clone(vy,OT.origin),d.clone(d.UNIT_X,OT.direction);E=h.data.pick(OT,a,c,!1,vy),l(E)&&h.setPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError,E)}if(l(E)){if(l(_.callback)){let b=u.cartesianToCartographic(E,Kz);_.callback(b)}_.level=h.level}}if(Oi()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function ght(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var Xz=pd;function Mh(e){e=e??te.default;let t=new jp({ellipsoid:e}),n=new hb;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new vz,this._material=void 0,this._surface=new Xz({tileProvider:new Gz({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new _e,this._undergroundColor=G.clone(G.BLACK),this._undergroundColorAlphaByDistance=new Yt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new zz,yX(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new we({url:fn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=te.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=D.PI*e.minimumRadius,this.nightFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*D.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Dn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(Mh.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&yX(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,yX(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=G.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=Yt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function yX(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[bm,eP];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(Az),e._surfaceShaderSet.baseVertexShaderSource=new We({sources:[bm,eP,pz],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new We({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function _ht(e){return function(t,n){let i=le.distanceSquaredTo(t.pickBoundingSphere,e),o=le.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var yht=[],Cht={start:0,stop:0};Mh.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=yht;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let A=u.data;if(!l(A))continue;let g=A.pickBoundingSphere;if(o!==ie.SCENE3D)A.pickBoundingSphere=g=le.fromRectangleWithHeights2D(u.rectangle,r,A.tileBoundingRegion.minimumHeight,A.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(A.renderedMesh))le.clone(A.tileBoundingRegion.boundingSphere,g);else continue;let m=Ai.raySphere(e,g,Cht);l(m)&&s.push(A)}s.sort(_ht(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var Eht=new Ae;Mh.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ie.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,Eht);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var Iht=new d,PCe=new d,xht=new Ae,bht=new In;function _X(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}Mh.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=_X(n._southwestChild,e)||_X(n._southeastChild,e)||_X(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,Iht),u=bht,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(g??0,-11500),_=d.multiplyByScalar(f,Math.abs(m)+1,PCe);d.subtract(c,_,u.origin)}let A=n.data.pick(u,void 0,s,!1,PCe);if(l(A))return a.cartesianToCartographic(A,xht).height};Mh.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};Mh.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Nt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ie.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};Mh.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};Mh.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};Mh.prototype.isDestroyed=function(){return!1};Mh.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var Jz=Mh;function Tht(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var Zz=Tht;var WCe={},Sht=32.184,wht=2451545,RCe=-.0529921,MCe=-.1059842,NCe=13.0120009,LCe=13.3407154,OCe=.9856003,FCe=26.4057084,QCe=13.064993,kCe=.3287146,UCe=1.7484877,GCe=-.1589763,zCe=.0036096,VCe=.1643573,HCe=12.9590088,CX=new K;WCe.ComputeMoon=function(e,t){l(e)||(e=K.now()),CX=K.addSeconds(e,Sht,CX);let n=K.totalDays(CX)-wht,i=n/ri.DAYS_PER_JULIAN_CENTURY,o=(125.045+RCe*n)*D.RADIANS_PER_DEGREE,r=(250.089+MCe*n)*D.RADIANS_PER_DEGREE,s=(260.008+NCe*n)*D.RADIANS_PER_DEGREE,a=(176.625+LCe*n)*D.RADIANS_PER_DEGREE,c=(357.529+OCe*n)*D.RADIANS_PER_DEGREE,u=(311.589+FCe*n)*D.RADIANS_PER_DEGREE,f=(134.963+QCe*n)*D.RADIANS_PER_DEGREE,h=(276.617+kCe*n)*D.RADIANS_PER_DEGREE,A=(34.226+UCe*n)*D.RADIANS_PER_DEGREE,g=(15.134+GCe*n)*D.RADIANS_PER_DEGREE,m=(119.743+zCe*n)*D.RADIANS_PER_DEGREE,_=(239.961+VCe*n)*D.RADIANS_PER_DEGREE,y=(25.053+HCe*n)*D.RADIANS_PER_DEGREE,C=Math.sin(o),E=Math.sin(r),I=Math.sin(s),b=Math.sin(a),S=Math.sin(c),B=Math.sin(u),v=Math.sin(f),P=Math.sin(h),N=Math.sin(A),L=Math.sin(g),p=Math.sin(m),x=Math.sin(_),T=Math.sin(y),w=Math.cos(o),M=Math.cos(r),O=Math.cos(s),U=Math.cos(a),Q=Math.cos(c),z=Math.cos(u),F=Math.cos(f),H=Math.cos(h),W=Math.cos(A),Z=Math.cos(g),Y=Math.cos(m),$=Math.cos(_),X=Math.cos(y),he=(269.9949+.0031*i-3.8787*C-.1204*E+.07*I-.0172*b+.0072*B-.0052*L+.0043*T)*D.RADIANS_PER_DEGREE,ge=(66.5392+.013*i+1.5419*w+.0239*M-.0278*O+.0068*U-.0029*z+9e-4*F+8e-4*Z-9e-4*X)*D.RADIANS_PER_DEGREE,fe=(38.3213+13.17635815*n-14e-13*n*n+3.561*C+.1208*E-.0642*I+.0158*b+.0252*S-.0066*B-.0047*v-.0046*P+.0028*N+.0052*L+.004*p+.0019*x-.0044*T)*D.RADIANS_PER_DEGREE,ye=(13.17635815-14e-13*(2*n)+3.561*w*RCe+.1208*M*MCe-.0642*O*NCe+.0158*U*LCe+.0252*Q*OCe-.0066*z*FCe-.0047*F*QCe-.0046*H*kCe+.0028*W*UCe+.0052*Z*GCe+.004*Y*zCe+.0019*$*VCe-.0044*X*HCe)/86400*D.RADIANS_PER_DEGREE;return l(t)||(t=new Zz),t.rightAscension=he,t.declination=ge,t.rotation=fe,t.rotationRate=ye,t};var $z=WCe;function jCe(e){(!l(e)||typeof e!="function")&&(e=$z.ComputeMoon),this._computeFunction=e}var Bht=new d,Dht=new d,vht=new d;function Pht(e,t,n){let i=Bht;i.x=Math.cos(e+D.PI_OVER_TWO),i.y=Math.sin(e+D.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=vht;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,Dht);return l(n)||(n=new J),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var Rht=new J,Mht=new Le;jCe.prototype.evaluate=function(e,t){l(e)||(e=K.now());let n=this._computeFunction(e),i=Pht(n.rightAscension,n.declination,t),o=D.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,Mht),s=J.fromQuaternion(Le.conjugate(r,r),Rht);return J.multiply(s,i,i)};var eV=jCe;var EX={position:0};function tV(e){e=e??V.EMPTY_OBJECT,this.center=d.clone(e.center??d.ZERO),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new le,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this._computedModelMatrix=new R,this.show=e.show??!0,this.material=e.material??ao.fromType(ao.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new nt({owner:e._owner??this}),this._pickCommand=new nt({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function Nht(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY}));return t=li.fromGeometry({context:e,geometry:n,attributeLocations:EX,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}tV.prototype.update=function(e){if(!this.show||e.mode!==ie.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?pn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=Nht(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let _=this._oneOverEllipsoidRadiiSquared;_.x=1/(r.x*r.x),_.y=1/(r.y*r.y),_.z=1/(r.z*r.z),o=!0}(!R.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(R.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),R.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),le.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,A;(s||a||i||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv]}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=wt(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(f)),m.pick){let _=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv],pickColorQualifier:"uniform"}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._pickSP=ln.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),_.vertexArray=this._va,_.renderState=this._rs,_.shaderProgram=this._pickSP,_.uniformMap=wt(wt(this._uniforms,this._pickUniforms),this.material._uniforms),_.executeInClosestFrustum=n),_.boundingVolume=this._boundingSphere,_.modelMatrix=this._computedModelMatrix,_.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(_)}};tV.prototype.isDestroyed=function(){return!1};tV.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var nV=tV;function cP(e){e=e??V.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=fn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??te.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new nV({radii:this.ellipsoid.radii,material:ao.fromType(ao.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new eV}Object.defineProperties(cP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var iV=new J,Lht=new J,Oht=new d,oV=[];cP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(kt.computeIcrfToFixedMatrix(n,iV))||kt.computeTemeToPseudoFixedMatrix(n,iV);let i=this._axes.evaluate(n,Lht);J.transpose(i,i),J.multiply(iV,i,i);let o=$E.computeMoonPositionInEarthInertialFrame(n,Oht);J.multiplyByVector(iV,o,o),R.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=oV,oV.length=0,t.update(e),e.commandList=r,oV.length===1?oV[0]:void 0};cP.prototype.isDestroyed=function(){return!1};cP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var rV=cP;var IX=[],xX=[];function Fht(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=IX,u=xX,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let A=i;A<=r;++A){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[A]=g,++f):h<a&&(e[A]=m,++h)}}function bX(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);bX(e,t,n,i,r),bX(e,t,n,r+1,o),Fht(e,t,n,i,r,o)}function Qht(e,t,n){let i=e.length,o=Math.ceil(i*.5);IX.length=o,xX.length=o,bX(e,t,n,0,i-1),IX.length=0,xX.length=0}var qp=Qht;function kc(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var sV=new d;Object.defineProperties(kc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,sV),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,sV);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,sV),sV)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});kc.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new kc(e,t)};var qCe=new d;kc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,qCe),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var kht=new d;kc.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,kht),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,qCe),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Uht=new d;kc.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Gr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Uht),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Gr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Gr.FULL:Gr.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Gr.PARTIAL:Gr.FULL))}}return Gr.NONE};var aV=new d;kc.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,aV),aV),c=-d.dot(a,o),u=kc._anyRotationVector(o,a,c),f=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let A=r/f;return d.add(o,d.multiplyByScalar(a,A,aV),aV)};var Ght=[];kc.computeOccludeePointFromRectangle=function(e,t){t=t??te.default;let n=ae.subsample(e,t,0,Ght),i=le.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return kc.computeOccludeePoint(new le(o,t.minimumRadius),i.center,n)};var zht=new d;kc._anyRotationVector=function(e,t,n){let i=d.abs(t,zht),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var Vht=new d;kc._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,Vht);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>D.EPSILON13)return d.normalize(s,new d)}return o};var TX=new d,Hht=new d,cV=new d,YCe=new d;kc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,TX),s=d.clone(e.center,Hht),a=e.radius,c=d.subtract(s,r,cV),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,A=Math.sqrt(h),m=1/Math.sqrt(u),y=A*m*A;c=d.normalize(c,c);let C=d.add(r,d.multiplyByScalar(c,y,YCe),YCe),E=Math.sqrt(h-y*y),I=this._rotationVector(s,t,n,r,i),b=d.fromElements(I.x*I.x*c.x+(I.x*I.y-I.z)*c.y+(I.x*I.z+I.y)*c.z,(I.x*I.y+I.z)*c.x+I.y*I.y*c.y+(I.y*I.z-I.x)*c.z,(I.x*I.z-I.y)*c.x+(I.y*I.z+I.x)*c.y+I.z*I.z*c.z,TX);b=d.normalize(b,b);let S=d.multiplyByScalar(b,E,TX);I=d.normalize(d.subtract(d.add(C,S,cV),s,cV),cV);let B=d.dot(t,I);I=d.normalize(d.subtract(d.subtract(C,S,I),s,I),I);let v=d.dot(t,I);return B<v?B:v};var lV=kc;function dA(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._perspectiveMatrix=new R,this._infinitePerspective=new R}function SX(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=R.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=R.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(dA.prototype,{projectionMatrix:{get:function(){return SX(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return SX(this),this._infinitePerspective}}});var Wht=new d,jht=new d,Yht=new d,qht=new d;dA.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Wht),h=jht;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=Yht;d.multiplyByScalar(t,u,A),d.add(e,A,A);let g=qht;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new se),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,A),this._cullingVolume};dA.prototype.getPixelDimensions=function(e,t,n,i,o){SX(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};dA.prototype.clone=function(e){return l(e)||(e=new dA),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};dA.prototype.equals=function(e){return l(e)&&e instanceof dA&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};dA.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof dA&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var fu=dA;function du(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new fu,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}du.packedLength=6;du.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};du.unpack=function(e,t,n){return t=t??0,l(n)||(n=new du),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function Nh(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(du.prototype,{projectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return Nh(this),this._fovy}},sseDenominator:{get:function(){return Nh(this),this._sseDenominator}},offCenterFrustum:{get:function(){return Nh(this),this._offCenterFrustum}}});du.prototype.computeCullingVolume=function(e,t,n){return Nh(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};du.prototype.getPixelDimensions=function(e,t,n,i,o){return Nh(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};du.prototype.clone=function(e){return l(e)||(e=new du),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};du.prototype.equals=function(e){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};du.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),D.equalsEpsilon(this.fov,e.fov,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Vi=du;function lP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(lP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function Kht(e,t,n){let i=t.createViewportQuadCommand(rz,{framebuffer:n,renderState:Ue.fromCache({viewport:new Xe(0,0,256,256)})});e._drawCommand=i}lP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Nt({context:t,width:256,height:256,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST});this._colorTexture=n;let i=new as({context:t,colorTextures:[n],destroyAttachments:!1});Kht(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};lP.prototype.isDestroyed=function(){return!1};lP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var uV=lP;var ZCe={};function Xht(e,t,n){let i,o,r;if(e instanceof Vi){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof fu)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Jht=new d,KCe=new d;function $Ce(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let A=(f-o)/a;return D.lerp(e,-D.PI_OVER_TWO,A)}let h=(f-r)/c;return D.lerp(-D.PI_OVER_TWO,t,1-h)}}return function(o){return D.lerp(e,t,o)}}function BX(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,A=d.subtract(a,c,Jht),g=d.magnitude(d.multiplyByScalar(u,d.dot(A,u),KCe)),m=d.magnitude(d.multiplyByScalar(f,d.dot(A,f),KCe));r=Math.min(Xht(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let A=h*(f-u)+u;return-Math.pow(A,8)/1e6+r}}return function(a){return D.lerp(n,i,a)}}function uP(e,t){return D.equalsEpsilon(e,D.TWO_PI,D.EPSILON11)&&(e=0),t>e+Math.PI?e+=D.TWO_PI:t<e-Math.PI&&(e-=D.TWO_PI),e}var eEe=new d;function Zht(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,eEe),f=c.pitch,h=uP(c.heading,i),A=uP(c.roll,r),g=BX(c,n,u.z,n.z,s),m=$Ce(f,o,g,a);function _(y){let C=y.time/t;c.setView({orientation:{heading:D.lerp(h,i,C),pitch:m(C),roll:D.lerp(A,r,C)}}),k.lerp(u,n,C,c.position),c.position.z=g(C)}return _}function $ht(e,t){e.longitude<t.longitude?e.longitude+=D.TWO_PI:t.longitude+=D.TWO_PI}function emt(e,t){let n=e.longitude-t.longitude;n<-D.PI?e.longitude+=D.TWO_PI:n>D.PI&&(t.longitude+=D.TWO_PI)}var tmt=new Ae,nmt=new Ae;function imt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,A=e.mapProjection.ellipsoid,g=Ae.clone(f.positionCartographic,tmt),m=f.pitch,_=uP(f.heading,i),y=uP(f.roll,r),C=A.cartesianToCartographic(n,nmt);g.longitude=D.zeroToTwoPi(g.longitude),C.longitude=D.zeroToTwoPi(C.longitude);let E=!1;if(l(a)){let B=D.zeroToTwoPi(a),v=Math.min(g.longitude,C.longitude),P=Math.max(g.longitude,C.longitude),N=B>=v&&B<=P;if(l(c)){let L=Math.abs(g.longitude-C.longitude),p=D.TWO_PI-L;(N?L:p)<(N?p:L)*c&&!N&&(E=!0)}else N||(E=!0)}E?$ht(g,C):emt(g,C);let I=BX(f,n,g.height,C.height,s),b=$Ce(m,o,I,u);function S(){let B=g.longitude,v=C.longitude,P=g.latitude,N=C.latitude;return function(p){let x=p.time/t,T=d.fromRadians(D.lerp(B,v,x),D.lerp(P,N,x),I(x),A);f.setView({destination:T,orientation:{heading:D.lerp(_,i,x),pitch:b(x),roll:D.lerp(y,r,x)}})}}return S()}function omt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,eEe),u=uP(a.heading,i),f=a.frustum.right-a.frustum.left,h=BX(a,n,f,n.z,s);function A(g){let m=g.time/t;a.setView({orientation:{heading:D.lerp(u,i,m)}}),k.lerp(c,n,m,a.position);let _=h(m),y=a.frustum,C=y.top/y.right,E=(_-(y.right-y.left))*.5;y.right+=E,y.left-=E,y.top=C*y.right,y.bottom=-y.top}return A}var XCe=new Ae,rmt=new d;function wX(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function JCe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}ZCe.createTween=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===ie.MORPHING)return wX();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ie.SCENE3D&&(s.cartesianToCartographic(n,XCe),n=r.project(XCe,rmt));let A=e.camera,g=t.endTransform;l(g)&&A._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(A.position,n)/1e6)+2,m=Math.min(m,3));let _=t.heading??0,y=t.pitch??-D.PI_OVER_TWO,C=t.roll??0,E=e.screenSpaceCameraController;E.enableInputs=!1;let I=JCe(E,t.complete),b=JCe(E,t.cancel),S=A.frustum,B=e.mode===ie.SCENE2D;if(B=B&&k.equalsEpsilon(A.position,n,D.EPSILON6),B=B&&D.equalsEpsilon(Math.max(S.right-S.left,S.top-S.bottom),n.z,D.EPSILON6),B=B||e.mode!==ie.SCENE2D&&d.equalsEpsilon(n,A.position,D.EPSILON10),B=B&&D.equalsEpsilon(D.negativePiToPi(_),D.negativePiToPi(A.heading),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(y),D.negativePiToPi(A.pitch),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(C),D.negativePiToPi(A.roll),D.EPSILON10),B)return wX(I,b);let v=new Array(4);if(v[ie.SCENE2D]=omt,v[ie.SCENE3D]=imt,v[ie.COLUMBUS_VIEW]=Zht,m<=0)return wX(function(){v[i](e,1,n,_,y,C,a,c,u,f)({time:1}),typeof I=="function"&&I()},b);let P=v[i](e,m,n,_,y,C,a,c,u,f);if(!l(h)){let N=A.positionCartographic.height,L=i===ie.SCENE3D?s.cartesianToCartographic(n).height:n.z;N>L&&N>11500?h=ps.CUBIC_OUT:h=ps.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:P,complete:I,cancel:b}};var fV=ZCe;var smt={ROTATE:0,INFINITE_SCROLL:1},$u=Object.freeze(smt);function an(e){this._scene=e,this._transform=R.clone(R.IDENTITY),this._invTransform=R.clone(R.IDENTITY),this._actualTransform=R.clone(R.IDENTITY),this._actualInvTransform=R.clone(R.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new Ae,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new _e,this._moveEnd=new _e,this._changed=new _e,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new R,this._invViewMatrix=new R,cEe(this),this._mode=ie.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._max2Dfrustum=void 0,CEe(this,an.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*an.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}an.TRANSFORM_2D=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);an.TRANSFORM_2D_INVERSE=R.inverseTransformation(an.TRANSFORM_2D,new R);an.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);an.DEFAULT_VIEW_FACTOR=.5;an.DEFAULT_OFFSET=new Eh(0,-D.PI_OVER_FOUR,0);function cEe(e){R.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),R.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),R.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function amt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Oi()):e.timeSinceMoved=Math.max(Oi()-e._lastMovedTimestamp,0)/1e3}}an.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ie.SCENE2D};an.prototype._updateCameraChanged=function(){let e=this;if(amt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%D.TWO_PI;i=i>D.PI?D.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%D.TWO_PI;s=s>D.PI?D.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ie.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let A=e.position,g=e._changedPosition,m=e.frustum,_=e._changedFrustum,y=A.x+m.left,C=A.x+m.right,E=g.x+_.left,I=g.x+_.right,b=A.y+m.bottom,S=A.y+m.top,B=g.y+_.bottom,v=g.y+_.top,P=Math.max(y,E),N=Math.min(C,I),L=Math.max(b,B),p=Math.min(S,v),x;if(P>=N||L>=S)x=1;else{let T=_;y<E&&C>I&&b<B&&S>v&&(T=m),x=1-(N-P)*(p-L)/((T.right-T.left)*(T.top-T.bottom))}x>t&&(e._changed.raiseEvent(x),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=D.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function cmt(e){kt.basisTo2D(e._projection,e._transform,e._actualTransform)}var lmt=new Ae,umt=new d,dV=new d,fmt=new se,dmt=new se,hmt=new se,mmt=new se,Amt=new se;function pmt(e){let t=e._projection,n=t.ellipsoid,i=R.getColumn(e._transform,3,fmt),o=n.cartesianToCartographic(i,lmt),r=t.project(o,umt),s=dmt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=se.clone(se.UNIT_X,Amt),c=se.add(R.getColumn(e._transform,0,dV),i,dV);n.cartesianToCartographic(c,o),t.project(o,r);let u=hmt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=mmt;if(d.magnitudeSquared(u)>D.EPSILON10)d.cross(a,u,f);else{let h=se.add(R.getColumn(e._transform,1,dV),i,dV);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<D.EPSILON10&&(se.clone(se.UNIT_Y,u),se.clone(se.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),R.setColumn(e._actualTransform,0,u,e._actualTransform),R.setColumn(e._actualTransform,1,f,e._actualTransform),R.setColumn(e._actualTransform,2,a,e._actualTransform),R.setColumn(e._actualTransform,3,s,e._actualTransform)}var DX=new d;function Gc(e){let t=e._mode,n=!1,i=0;t===ie.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let A=e._transformChanged||e._modeChanged;e._transformChanged=!1,A&&(R.inverseTransformation(e._transform,e._invTransform),e._mode===ie.COLUMBUS_VIEW||e._mode===ie.SCENE2D?R.equals(R.IDENTITY,e._transform)?R.clone(an.TRANSFORM_2D,e._actualTransform):e._mode===ie.COLUMBUS_VIEW?cmt(e):pmt(e):R.clone(e._transform,e._actualTransform),R.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||A)if(e._positionWC=R.multiplyByPoint(g,o,e._positionWC),t===ie.SCENE3D||t===ie.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=DX;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ie.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,DX));if(Math.abs(1-m)>D.EPSILON2){let _=1/d.magnitudeSquared(c),y=d.dot(c,s)*_,C=d.multiplyByScalar(s,y,DX);c=d.normalize(d.subtract(c,C,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||A)&&(e._directionWC=R.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||A)&&(e._upWC=R.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||A)&&(e._rightWC=R.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||A)&&cEe(e)}function lEe(e,t){let n;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)?n=Math.atan2(t.y,t.x)-D.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-D.PI_OVER_TWO,D.TWO_PI-D.zeroToTwoPi(n)}function uEe(e){return D.PI_OVER_TWO-D.acosClamped(e.z)}function fEe(e,t,n){let i=0;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=D.zeroToTwoPi(i+D.TWO_PI)),i}var AV=new R,pV=new R;Object.defineProperties(an.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return Gc(this),this._invTransform}},viewMatrix:{get:function(){return Gc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return Gc(this),this._invViewMatrix}},positionCartographic:{get:function(){return Gc(this),this._positionCartographic}},positionWC:{get:function(){return Gc(this),this._positionWC}},directionWC:{get:function(){return Gc(this),this._directionWC}},upWC:{get:function(){return Gc(this),this._upWC}},rightWC:{get:function(){return Gc(this),this._rightWC}},heading:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=lEe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=uEe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=fEe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});an.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ie.MORPHING,t=this._mode===ie.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ie.SCENE2D&&AEe(this,this.position)};var gmt=new d,_mt=new d,ymt=new d;an.prototype._setTransform=function(e){let t=d.clone(this.positionWC,gmt),n=d.clone(this.upWC,_mt),i=d.clone(this.directionWC,ymt);R.clone(e,this._transform),this._transformChanged=!0,Gc(this);let o=this._actualInvTransform;R.multiplyByPoint(o,t,this.position),R.multiplyByPointAsVector(o,i,this.direction),R.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),Gc(this)};var Cmt=new k,Emt=new In,Imt=new d,xmt=new d;function dEe(e){if(!R.equals(R.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=Cmt;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,Emt);o=n.pickWorldCoordinates(a,t,!0,Imt)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,xmt));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}an.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof An&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=dEe(this)))};var gV=new d,NX=new R,bmt=new R,LX=new Le,OX=new J,hEe=new Ae;function Tmt(e,t,n){let i=R.clone(e.transform,NX),o=kt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,bmt);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function Smt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,hEe);t=a.project(c,gV)}d.clone(t,e.position)}n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function wmt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,hEe);t=c.project(u,gV)}k.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===$u.ROTATE){n.heading=n.heading-D.PI_OVER_TWO,n.pitch=-D.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var Bmt=new d,Dmt=new d,vmt=new d;function mEe(e,t,n,i){let o=d.clone(n.direction,Bmt),r=d.clone(n.up,Dmt);if(e._scene.mode===ie.SCENE3D){let a=e._projection.ellipsoid,c=kt.eastNorthUpToFixedFrame(t,a,AV),u=R.inverseTransformation(c,pV);R.multiplyByPointAsVector(u,o,o),R.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,vmt);return i.heading=lEe(o,r),i.pitch=uEe(o),i.roll=fEe(o,r,s),i}var MX={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},FT=new pc;an.prototype.setView=function(e){e=e??V.EMPTY_OBJECT;let t=e.orientation??V.EMPTY_OBJECT,n=this._mode;if(n===ie.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??d.clone(this.positionWC,gV);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,gV),i=!1),l(t.direction)&&(t=mEe(this,o,t,MX.orientation)),FT.heading=t.heading??0,FT.pitch=t.pitch??-D.PI_OVER_TWO,FT.roll=t.roll??0,n===ie.SCENE3D?Tmt(this,o,FT):n===ie.SCENE2D?wmt(this,o,FT,i):Smt(this,o,FT,i)};var Pmt=new d;an.prototype.flyHome=function(e){let t=this._mode;if(t===ie.MORPHING&&this._scene.completeMorph(),t===ie.SCENE2D)this.flyTo({destination:an.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:R.IDENTITY});else if(t===ie.SCENE3D){let n=this.getRectangleCameraCoordinates(an.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*an.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:R.IDENTITY})}else if(t===ie.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,Pmt).z),roll:0},endTransform:R.IDENTITY,convert:!1})}};an.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualInvTransform,e,t)};an.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualTransform,e,t)};function AEe(e,t){let n=e._scene.mapMode2D===$u.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var tEe=new d;an.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,tEe),d.add(n,tEe,n),this._mode===ie.SCENE2D&&AEe(this,n),this._adjustOrthographicFrustum(!0)};an.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,e):this.move(this.direction,e)};an.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,-e):this.move(this.direction,-e)};an.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};an.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};an.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};an.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};an.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,-e)};an.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,e)};an.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,-e)};an.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,e)};var Rmt=new Le,Mmt=new J;an.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Le.fromAxisAngle(e,-n,Rmt),o=J.fromQuaternion(i,Mmt),r=this.direction,s=this.up,a=this.right;J.multiplyByVector(o,r,r),J.multiplyByVector(o,s,s),J.multiplyByVector(o,a,a)};an.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};an.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var Nmt=new Le,Lmt=new J;an.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Le.fromAxisAngle(e,-n,Nmt),o=J.fromQuaternion(i,Lmt);J.multiplyByVector(o,this.position,this.position),J.multiplyByVector(o,this.direction,this.direction),J.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};an.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,pEe(this,e)};an.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,pEe(this,-e)};var Omt=new d,Fmt=new d,Qmt=new d,nEe=new d;function pEe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,D.EPSILON2)){let i=d.normalize(n,Omt),o=d.equalsEpsilon(i,e.constrainedAxis,D.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,nEe),D.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,Fmt),a=d.dot(i,s),c=D.acosClamped(a);t>0&&t>c&&(t=c-D.EPSILON4),a=d.dot(i,d.negate(s,nEe)),c=D.acosClamped(a),t<0&&-t>c&&(t=-c+D.EPSILON4);let u=d.cross(s,i,Qmt);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}an.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,gEe(this,-e)};an.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,gEe(this,e)};function gEe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function _V(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function _Ee(e,t){e.move(e.direction,t)}an.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,e):_Ee(this,e)};an.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,-e):_Ee(this,-e)};an.prototype.getMagnitude=function(){if(this._mode===ie.SCENE3D)return d.magnitude(this.position);if(this._mode===ie.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ie.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var kmt=new R;an.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??te.default,o=kt.eastNorthUpToFixedFrame(e,i,kmt);this.lookAtTransform(o,t)};var Umt=new d,Gmt=new Le,zmt=new Le,Vmt=new J;function yEe(e,t,n){t=D.clamp(t,-D.PI_OVER_TWO,D.PI_OVER_TWO),e=D.zeroToTwoPi(e)-D.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,Gmt),o=Le.fromAxisAngle(d.UNIT_Z,-e,zmt),r=Le.multiply(o,i,o),s=J.fromQuaternion(r,Vmt),a=d.clone(d.UNIT_X,Umt);return J.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}an.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=yEe(t.heading,t.pitch,t.range):n=t,this._mode===ie.SCENE2D){k.clone(k.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<D.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(R.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<D.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var fP=new Ae,Hmt=new Ae,Wmt=new d,jmt=new d,Ymt=new d,qmt=new d,Kmt=new d,Xmt=new d,Jmt=new d,vX=new d,Zmt={direction:new d,right:new d,up:new d},iEe;function Uc(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function CEe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:Zmt,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=D.TWO_PI);let f=(c+u)*.5,h;if(a<-D.PI_OVER_TWO+D.RADIANS_PER_DEGREE&&s>D.PI_OVER_TWO-D.RADIANS_PER_DEGREE)h=0;else{let N=fP;N.longitude=f,N.latitude=s,N.height=0;let L=Hmt;L.longitude=f,L.latitude=a,L.height=0;let p=iEe;(!l(p)||p.ellipsoid!==o)&&(iEe=p=new Sg(void 0,void 0,o)),p.setEndPoints(N,L),h=p.interpolateUsingFraction(.5,fP).latitude}let A=fP;A.longitude=f,A.latitude=h,A.height=0;let g=o.cartographicToCartesian(A,Jmt),m=fP;m.longitude=u,m.latitude=s;let _=o.cartographicToCartesian(m,Wmt);m.longitude=c;let y=o.cartographicToCartesian(m,Ymt);m.longitude=f;let C=o.cartographicToCartesian(m,Kmt);m.latitude=a;let E=o.cartographicToCartesian(m,Xmt);m.longitude=u;let I=o.cartographicToCartesian(m,qmt);m.longitude=c;let b=o.cartographicToCartesian(m,jmt);d.subtract(y,g,y),d.subtract(I,g,I),d.subtract(_,g,_),d.subtract(b,g,b),d.subtract(C,g,C),d.subtract(E,g,E);let S=o.geodeticSurfaceNormal(g,r.direction);d.negate(S,S);let B=d.cross(S,d.UNIT_Z,r.right);d.normalize(B,B);let v=d.cross(B,S,r.up),P;if(e.frustum instanceof An){let N=Math.max(d.distance(_,y),d.distance(I,b)),L=Math.max(d.distance(_,I),d.distance(y,b)),p,x,T=e.frustum._offCenterFrustum,w=T.right/T.top,M=L*w;N>M?(p=N,x=p/w):(x=L,p=M),P=Math.max(p,x)}else{let N=Math.tan(e.frustum.fovy*.5),L=e.frustum.aspectRatio*N;if(P=Math.max(Uc(S,v,y,N),Uc(S,v,I,N),Uc(S,v,_,N),Uc(S,v,b,N),Uc(S,v,C,N),Uc(S,v,E,N),Uc(S,B,y,L),Uc(S,B,I,L),Uc(S,B,_,L),Uc(S,B,b,L),Uc(S,B,C,L),Uc(S,B,E,L)),a<0&&s>0){let p=fP;p.longitude=c,p.latitude=0,p.height=0;let x=o.cartographicToCartesian(p,vX);d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L)),p.longitude=u,x=o.cartographicToCartesian(p,vX),d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L))}}return d.add(g,d.multiplyByScalar(S,-P,vX),n)}var $mt=new Ae,eAt=new d,tAt=new d;function nAt(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=$mt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,eAt);R.multiplyByPoint(o,a,a),R.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,tAt);if(R.multiplyByPoint(o,c,c),R.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var iAt=new Ae,oAt=new d,rAt=new d;function sAt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===$u.INFINITE_SCROLL?o+=D.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=iAt;r.longitude=o,r.latitude=t.north;let s=i.project(r,oAt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,rAt),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,A=e.frustum.right/e.frustum.top,g=u*A;return c>g?(f=c,h=f/A):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}an.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ie.SCENE3D)return CEe(this,e,t);if(n===ie.COLUMBUS_VIEW)return nAt(this,e,t);if(n===ie.SCENE2D)return sAt(this,e,t)};var aAt=new In;function cAt(e,t,n,i){n=n??te.default;let o=e.getPickRay(t,aAt),r=Ai.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return In.getPoint(o,s,i)}var lAt=new In;function uAt(e,t,n,i){let r=e.getPickRay(t,lAt).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var fAt=new In;function dAt(e,t,n,i){let o=e.getPickRay(t,fAt),r=-o.origin.x/o.direction.x;In.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}an.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=t??te.default,this._mode===ie.SCENE3D)n=cAt(this,e,t,n);else if(this._mode===ie.SCENE2D)n=uAt(this,e,this._projection,n);else if(this._mode===ie.COLUMBUS_VIEW)n=dAt(this,e,this._projection,n);else return;return n}};var hAt=new d,mAt=new d,AAt=new d;function pAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let A=d.multiplyByScalar(e.directionWC,c,hAt);d.add(h,A,A);let g=d.multiplyByScalar(e.rightWC,u*c*a,mAt),m=d.multiplyByScalar(e.upWC,f*c*s,AAt),_=d.add(A,g,n.direction);return d.add(_,m,_),d.subtract(_,h,_),d.normalize(_,_),n}var hV=new d;function gAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.positionWC,f),d.multiplyByScalar(e.rightWC,c,hV),d.add(hV,f,f),d.multiplyByScalar(e.upWC,u,hV),d.add(hV,f,f),d.clone(e.directionWC,n.direction),n}an.prototype.getPickRay=function(e,t){l(t)||(t=new In);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?pAt(this,e,t):gAt(this,e,t)};var _At=new d,yAt=new d;an.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,_At),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),yAt);return Math.max(0,d.magnitude(n)-e.radius)};var CAt=new k;an.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,CAt);return Math.max(o.x,o.y)};function EAt(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:ps.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var IAt=new d,oEe=new d,xAt=new d,bAt=new d;function TAt(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,IAt),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,oEe),oEe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,xAt);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,bAt)),f=c*u,h=a*u,A=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-A,A),_=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-_||n.y>_){let y=s.y<-m||s.y>m,C=s.z<-_||s.z>_;if(y||C)return EAt(e,n,s,m,_,t)}}an.prototype.createCorrectPositionTween=function(e){if(this._mode===ie.COLUMBUS_VIEW)return TAt(this,e)};var SAt=new d,Aa={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};an.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};an.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=Aa.destination,e.orientation.heading=Aa.heading,e.orientation.pitch=Aa.pitch,e.orientation.roll=Aa.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};an.prototype.flyTo=function(e){e=e??V.EMPTY_OBJECT;let t=e.destination;if(this._mode===ie.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,SAt));let o=e.orientation??V.EMPTY_OBJECT;if(l(o.direction)&&(o=mEe(this,t,o,MX.orientation)),l(e.duration)&&e.duration<=0){let f=MX;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;Aa.destination=t,Aa.heading=o.heading,Aa.pitch=o.pitch,Aa.roll=o.roll,Aa.duration=e.duration,Aa.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},Aa.cancel=e.cancel,Aa.endTransform=e.endTransform,Aa.convert=i?!1:e.convert,Aa.maximumHeight=e.maximumHeight,Aa.pitchAdjustHeight=e.pitchAdjustHeight,Aa.flyOverLongitude=e.flyOverLongitude,Aa.flyOverLongitudeWeight=e.flyOverLongitudeWeight,Aa.easingFunction=e.easingFunction;let a=this._scene,c=fV.createTween(a,Aa);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ie.SCENE2D&&(l(u)||(u=an.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function wAt(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function BAt(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var DAt=100;function EEe(e,t,n){n=Eh.clone(l(n)?n:an.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=DAt:e.frustum instanceof An||e._mode===ie.SCENE2D?n.range=BAt(e,s):n.range=wAt(e,s),n.range=D.clamp(n.range,i,o)}return n}an.prototype.viewBoundingSphere=function(e,t){t=EEe(this,e,t),this.lookAt(e.center,t)};var vAt=new R,PAt=new d,RAt=new d,MAt=new d,NAt=new d,LAt=new se,OAt=new Le,FAt=new J;an.prototype.flyToBoundingSphere=function(e,t){t=t??V.EMPTY_OBJECT;let n=this._mode===ie.SCENE2D||this._mode===ie.COLUMBUS_VIEW;this._setTransform(R.IDENTITY);let i=EEe(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,PAt):o=yEe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??te.default,a=kt.eastNorthUpToFixedFrame(e.center,s,vAt);R.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,RAt),d.normalize(c,c),u=R.multiplyByPointAsVector(a,d.UNIT_Z,MAt),1-Math.abs(d.dot(c,u))<D.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,OAt),A=J.fromQuaternion(h,FAt);d.fromCartesian4(R.getColumn(a,1,LAt),u),J.multiplyByVector(A,u,u)}let f=d.cross(c,u,NAt);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var rEe=new d,sEe=new d,PX=new d,aEe=new d,dP=[new d,new d,new d,new d];function QAt(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,rEe),r=d.magnitude(o),s=d.normalize(o,sEe),a,c;d.equalsEpsilon(s,d.UNIT_Z,D.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,PX),PX),c=d.normalize(d.cross(s,a,aEe),aEe));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,rEe),h=u/r,A=d.multiplyByScalar(a,h,sEe),g=d.multiplyByScalar(c,h,PX),m=d.add(f,g,dP[0]);d.subtract(m,A,m),d.multiplyComponents(n,m,m);let _=d.subtract(f,g,dP[1]);d.subtract(_,A,_),d.multiplyComponents(n,_,_);let y=d.subtract(f,g,dP[2]);d.add(y,A,y),d.multiplyComponents(n,y,y);let C=d.add(f,g,dP[3]);return d.add(C,A,C),d.multiplyComponents(n,C,C),dP}var RX=new k,kAt=new d,Py=[new Ae,new Ae,new Ae,new Ae];function mV(e,t,n,i,o,r){RX.x=e,RX.y=t;let s=i.pickEllipsoid(RX,o,kAt);return l(s)?(Py[n]=o.cartesianToCartographic(s,Py[n]),1):(Py[n]=o.cartesianToCartographic(r[n],Py[n]),0)}an.prototype.computeViewRectangle=function(e,t){e=e??te.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new le(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===nn.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=QAt(this,e);if(c+=mV(0,0,0,this,e,u),c+=mV(0,a,1,this,e,u),c+=mV(s,a,2,this,e,u),c+=mV(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(Py,t);let f=0,h=Py[3].longitude;for(let A=0;A<4;++A){let g=Py[A].longitude,m=Math.abs(g-h);m>D.PI?f+=D.TWO_PI-m:f+=m,h=g}return D.equalsEpsilon(Math.abs(f),D.TWO_PI,D.EPSILON9)&&(t.west=-D.PI,t.east=D.PI,Py[0].latitude>=0?t.north=D.PI_OVER_TWO:t.south=-D.PI_OVER_TWO),t};an.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof Vi)return;let e=this._scene;this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60)};an.prototype.switchToOrthographicFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof An)return;let e=dEe(this),t=this._scene;this.frustum=new An,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};an.clone=function(e,t){return l(t)||(t=new an(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),R.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var Eo=an;function UAt(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var Lh=UAt;var SEe=Es(_u(),1),IEe=576,GAt=100,hP="#ffffff",yV="#48b";function wEe(e,t){this.credit=e,this.count=t??1}function zAt(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Dt.equals(o,t))return!0}return!1}function VAt(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Dt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var BEe="cesium-credit-delimiter";function xEe(e){let t=document.createElement("span");return t.textContent=e,t.className=BEe,t}function bEe(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function TEe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(xEe(n));else{let f=o[u];f.className!==BEe&&e.replaceChild(xEe(n),f)}}let c=a.element;if(o.length<=r)e.appendChild(bEe(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild(bEe(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function HAt(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<IEe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=IEe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function WAt(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${hP}; + position: relative; + min-height: ${GAt}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${hP}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${yV}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${hP}; +} +.cesium-credit-lightbox-close:hover { + color: ${yV}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${hP}; +} +.cesium-credit-expand-link:hover { + color: ${yV}; +} + +.cesium-credit-text { + color: ${hP}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${yV} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function br(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let A=document.createElement("a");A.className="cesium-credit-expand-link",A.onclick=this.showLightbox.bind(this),A.textContent="Data attribution",e.appendChild(A),WAt(e);let g=Dt.clone(br.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=A,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new Pt,lightboxCredits:new Pt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function DEe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new wEe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}br.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Dt.clone(vEe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,DEe(this,t,e)};br.prototype.addStaticCredit=function(e){let t=this._staticCredits;zAt(t,e)||t.push(e)};br.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};br.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};br.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};br.prototype.update=function(){this._expanded&&HAt(this)};br.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Dt.equals(br.cesiumCredit,this._cesiumCredit)||DEe(this,s,r,Number.MAX_VALUE)}Dt.equals(br.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Dt.clone(br.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};br.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;TEe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",TEe(this._creditList,t,void 0,"li"),VAt(this)};br.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};br.prototype.isDestroyed=function(){return!1};br._cesiumCredit=void 0;br._cesiumCreditInitialized=!1;var CV;function vEe(){if(!l(CV)){let e=fn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new SEe.default(e).path()),CV=new Dt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return br._cesiumCreditInitialized||(br._cesiumCredit=CV,br._cesiumCreditInitialized=!0),CV}Object.defineProperties(br,{cesiumCredit:{get:function(){return vEe(),br._cesiumCredit},set:function(e){br._cesiumCredit=e,br._cesiumCreditInitialized=!0}}});br.CreditDisplayElement=wEe;var EV=br;var IV=0,jAt=1;function i0(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??Pe.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof Vi?(s=IV,a=Vi.packedLength):t instanceof An&&(s=jAt,a=An.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Pe.packedLength}i0.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===IV?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var YAt=new Vi,qAt=new An,KAt=new Le,XAt=new d,JAt=new Pe;i0.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===IV?(o=Vi.unpack(e,t,YAt),t+=Vi.packedLength):(o=An.unpack(e,t,qAt),t+=An.packedLength);let r=d.unpack(e,t,XAt);t+=d.packedLength;let s=Le.unpack(e,t,KAt);t+=Le.packedLength;let a=Pe.unpack(e,t,JAt);t+=Pe.packedLength;let c=e[t]===1;if(!l(n))return new i0({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Pe.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function QT(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var ZAt=new J,$At=new R,FX=new R,PEe=new d,REe=new d,MEe=new d,ept=new d,tpt=new d,npt=new d,Ry=new Array(3),mP=new Array(4);mP[0]=new se(-1,-1,1,1);mP[1]=new se(1,-1,1,1);mP[2]=new se(1,1,1,1);mP[3]=new se(-1,1,1,1);var NEe=new Array(4);for(let e=0;e<4;++e)NEe[e]=new se;i0._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=J.fromQuaternion(t,ZAt),u=r??PEe,f=s??REe,h=a??MEe;u=J.getColumn(c,0,u),f=J.getColumn(c,1,f),h=J.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let A=R.computeView(e,h,f,u,$At),g,m,_=i.projectionMatrix;if(n===IV){let y=R.multiply(_,A,FX);m=R.inverse(y,FX)}else g=R.inverseTransformation(A,FX);l(m)?(Ry[0]=i.near,Ry[1]=i.far):(Ry[0]=0,Ry[1]=i.near,Ry[2]=i.far);for(let y=0;y<2;++y)for(let C=0;C<4;++C){let E=se.clone(mP[C],NEe[C]);if(l(m)){E=R.multiplyByVector(m,E,E);let I=1/E.w;d.multiplyByScalar(E,I,E),d.subtract(E,e,E),d.normalize(E,E);let b=d.dot(h,E);d.multiplyByScalar(E,Ry[y]/b,E),d.add(E,e,E)}else{let I=i.offCenterFrustum;l(I)&&(i=I);let b=Ry[y],S=Ry[y+1];E.x=(E.x*(i.right-i.left)+i.left+i.right)*.5,E.y=(E.y*(i.top-i.bottom)+i.bottom+i.top)*.5,E.z=(E.z*(b-S)-b-S)*.5,E.w=1,R.multiplyByVector(g,E,E)}o[12*y+C*3]=E.x,o[12*y+C*3+1]=E.y,o[12*y+C*3+2]=E.z}};i0.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);i0._computeNearFarPlanes(i,o,t,n,c);let u=24;c[u]=c[12],c[u+1]=c[13],c[u+2]=c[14],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[9],c[u+7]=c[10],c[u+8]=c[11],c[u+9]=c[21],c[u+10]=c[22],c[u+11]=c[23],u+=12,c[u]=c[15],c[u+1]=c[16],c[u+2]=c[17],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[12],c[u+10]=c[13],c[u+11]=c[14],u+=12,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[15],c[u+4]=c[16],c[u+5]=c[17],c[u+6]=c[18],c[u+7]=c[19],c[u+8]=c[20],c[u+9]=c[6],c[u+10]=c[7],c[u+11]=c[8],u+=12,c[u]=c[6],c[u+1]=c[7],c[u+2]=c[8],c[u+3]=c[18],c[u+4]=c[19],c[u+5]=c[20],c[u+6]=c[21],c[u+7]=c[22],c[u+8]=c[23],c[u+9]=c[9],c[u+10]=c[10],c[u+11]=c[11],r||(c=c.subarray(12));let f=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let A=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,m=l(s.bitangent)?new Float32Array(12*a):void 0,_=l(s.st)?new Float32Array(8*a):void 0,y=PEe,C=REe,E=MEe,I=d.negate(y,ept),b=d.negate(C,tpt),S=d.negate(E,npt);u=0,r&&(QT(u,A,g,m,_,S,y,C),u+=12),QT(u,A,g,m,_,E,I,C),u+=12,QT(u,A,g,m,_,I,S,C),u+=12,QT(u,A,g,m,_,b,S,I),u+=12,QT(u,A,g,m,_,y,E,C),u+=12,QT(u,A,g,m,_,C,E,I),l(A)&&(f.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),l(g)&&(f.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),l(_)&&(f.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:_}))}let h=new Uint16Array(6*a);for(let A=0;A<a;++A){let g=A*6,m=A*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ht({attributes:f,indices:h,primitiveType:Me.TRIANGLES,boundingSphere:le.fromVertices(c)})};var kT=i0;var QX=0,ipt=1;function AP(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof Vi?(r=QX,s=Vi.packedLength):t instanceof An&&(r=ipt,s=An.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}AP.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===QX?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var opt=new Vi,rpt=new An,spt=new Le,apt=new d;AP.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===QX?(o=Vi.unpack(e,t,opt),t+=Vi.packedLength):(o=An.unpack(e,t,rpt),t+=An.packedLength);let r=d.unpack(e,t,apt);t+=d.packedLength;let s=Le.unpack(e,t,spt);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new AP({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};AP.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);kT._computeNearFarPlanes(i,o,t,n,s);let a=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),A=r?0:1;for(;A<2;++A)c=r?A*8:0,u=A*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(A=0;A<2;++A)c=(f+A)*8,u=A*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ht({attributes:a,indices:h,primitiveType:Me.LINES,boundingSphere:le.fromVertices(s)})};var xV=AP;function bV(e){e=e??V.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??G.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var cpt=new d,lpt=new J,upt=new Le,fpt=new Vi,dpt=new fu,hpt=new An,mpt=new ls,Apt=new G,ppt=[1,1e5];bV.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Vi?a=fpt:s instanceof fu?a=dpt:s instanceof An?a=hpt:a=mpt,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=ppt,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,A=r.upWC,g=r.rightWC;g=d.negate(g,cpt);let m=lpt;J.setColumn(m,0,g,m),J.setColumn(m,1,A,m),J.setColumn(m,2,h,m);let _=Le.fromRotationMatrix(m,upt);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new kn({geometryInstances:new Rt({geometry:new kT({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(G.fromAlpha(this._color,.1,Apt))},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new kn({geometryInstances:new Rt({geometry:new xV({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};bV.prototype.isDestroyed=function(){return!1};bV.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var Kp=bV;function gP(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var pP=jt.supportsTypedArrays()?new Float32Array(12):[],LEe=new d,OEe=new d,kX=new d,FEe=new d,TV=new d;function gpt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof An)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,A=d.multiplyComponents(e.oneOverRadii,h,LEe),g=d.normalize(A,OEe),m=d.normalize(d.cross(d.UNIT_Z,A,kX),kX),_=d.normalize(d.cross(g,m,FEe),FEe),y=d.magnitude(A),C=Math.sqrt(y*y-1);o=d.multiplyByScalar(g,1/y,LEe);let E=C/y;r=d.multiplyByScalar(m,E,OEe),s=d.multiplyByScalar(_,E,kX)}let a=d.add(o,s,TV);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,pP,0);let c=d.subtract(o,s,TV);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,pP,3);let u=d.add(o,s,TV);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,pP,6);let f=d.subtract(o,s,TV);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,pP,9),pP}gP.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ie.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new te(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new nt({renderState:this._rs,boundingVolume:new le(d.ZERO,i.maximumRadius),pass:Be.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new We({sources:[hz]}),a=new We({sources:[dz]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=gpt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Me.TRIANGLES});this._va=li.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Qe.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};gP.prototype.execute=function(e,t){this._mode===ie.SCENE3D&&this._command.execute(e,t)};gP.prototype.isDestroyed=function(){return!1};gP.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var SV=gP;function GT(){}var _pt=/\bgl_FragDepth\b/,ypt=/\bdiscard\b/;function Cpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(_pt.test(r[a])||ypt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new We({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new We({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function Ept(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=nt.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=Cpt(n,t.shaderProgram),i.depthOnlyCommand.renderState=Ept(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var Ipt=/\s+czm_writeLogDepth\(/,xpt=/\s+czm_vertexLogDepth\(/;function bpt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(xpt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=We.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)Ipt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=We.replaceMain(c[f],"czm_log_depth_main");u=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}GT.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=bpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function Tpt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=We.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let A=new We({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:A,attributeLocations:o})}function QEe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=nt.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=Tpt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function UT(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function kEe(e){return e.isArray?e.arrayLength:gt.getComponentCount(e.type)}function Spt(e){let t=kEe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function UEe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function GEe(e,t){let n=zt.getMaximum(t);return`(${e}) / float(${n})`}function wpt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=UEe(n,i,o)}return e.normalized||(n=GEe(n,e.componentType)),n}function Bpt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=UEe(o,r,s)}return e.normalized||(o=GEe(o,e.componentType)),o}function Dpt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=Spt(u),h=["0.0","0.0","0.0","0.0"],A=kEe(u);if(A===1)h[0]=wpt(u,c);else{let y=["x","y","z","w"];for(let C=0;C<A;C++)h[C]=Bpt(u,c,y[C])}let g=t.fragmentShaderSource.defines.slice();g.push(Gf.METADATA_PICKING_ENABLED),UT(g,Gf.METADATA_PICKING_VALUE_TYPE,f),UT(g,Gf.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new We({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}GT.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=nt.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=Dpt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function vpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}GT.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=vpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var Xp=GT;function wV(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=D.toRadians(o),t._beta=D.toRadians(i.beta),t._gamma=D.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var Ppt=new Le,zEe=new Le,Rpt=new J;function Mpt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,zEe),c=Le.fromAxisAngle(r,i,Ppt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,zEe);Le.multiply(f,u,u);let h=J.fromQuaternion(u,Rpt);J.multiplyByVector(h,r,r),J.multiplyByVector(h,s,s),J.multiplyByVector(h,o,o)}wV.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;Mpt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};wV.prototype.isDestroyed=function(){return!1};wV.prototype.destroy=function(){return this._removeListener(),ue(this)};var BV=wV;function UX(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(UX.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var Npt=new d;UX.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ie.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,D.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,Npt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var DV=UX;function Lpt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ie.SCENE3D,this.morphTime=ie.getMorphTime(ie.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var vV=Lpt;var Ha={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},o0=Ha.DERIVED_COMMANDS_MAXIMUM_LENGTH,ZEe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function r0(){this._frontFaceAlphaByDistance=new Yt(0,1,0,1),this._backFaceAlphaByDistance=new Yt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(o0),this._derivedBlendCommandTypes=new Array(o0),this._derivedPickCommandTypes=new Array(o0),this._derivedCommandTypesToUpdate=new Array(o0),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(r0.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});r0.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=HEe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=HEe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=kpt(this,e,t),this._sunVisibleThroughGlobe=Opt(this,e),this._environmentVisible=Fpt(this,e),this._useDepthPlane=Qpt(this,e),this._numberOfTextureUniforms=Upt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),Gpt(this,e)};function VEe(e,t,n,i){return e?l(n)?(Yt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function HEe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function Opt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function Fpt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function Qpt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function kpt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ie.SCENE2D&&t.context.depthTexture}function Upt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function Gpt(e,t){e._derivedCommandsLength=GX(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=GX(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=GX(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<o0;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=ngt())}function GX(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Ha.PICK_FRONT_FACE:u?Ha.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_FRONT_FACE,h=i?Ha.PICK_BACK_FACE:u?Ha.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_BACK_FACE;return t.mode===ie.SCENE2D?(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Ha.DEPTH_ONLY_BACK_FACE),o[r++]=Ha.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE),o[r++]=Ha.OPAQUE_BACK_FACE,o[r++]=f),r)}function gd(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function WEe(e,t){return e.indexOf(t)>-1}function zpt(e,t){gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function Vpt(e,t){gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG"),gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function zX(e,t){if(WEe(t.defines,"TILE_LIMIT_RECTANGLE")||WEe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function VX(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=We.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function $Ee(e,t){VX(e,t),gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG")}function Hpt(e,t){VX(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Wpt(e,t){$Ee(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function jEe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function jpt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Ypt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0}function qpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0}function Kpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Xpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Jpt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function YEe(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function qEe(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function Zpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function $pt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function egt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ue.getState(e);i(s),r=Ue.fromCache(s),o[e.id]=r}return r}function zT(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function tgt(e,t,n,i,o){return l(o)?!i&&l(n)?n:wt(t,o(e),!1):t}function Oh(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function ngt(){return[new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zpt,getRenderStateFunction:Ypt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:Vpt,getRenderStateFunction:qpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Kpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Xpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Jpt,getUniformMapFunction:void 0}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:VX,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:$Ee,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Hpt,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Wpt,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:Zpt,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:$pt,getUniformMapFunction:zT})]}var KEe=new Array(o0),XEe=new Array(o0);r0.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)XEe[o]=this._derivedCommandPacks[n[o]],KEe[o]=ZEe[n[o]];igt(this,e,i,n,KEe,XEe,t)}};function igt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,A=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,_=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),_&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let y=0;y<n;++y){let C=r[y],E=i[y],I=o[y],b=a[I],S,B,v;l(b)?(S=b.uniformMap,B=b.shaderProgram,v=b.renderState):(S=void 0,B=void 0,v=void 0),b=nt.shallowClone(t,b),a[I]=b;let P=b.derivedCommands.uniformMapDirtyFrame??0,N=b.derivedCommands.shaderProgramDirtyFrame??0,L=b.derivedCommands.renderStateDirtyFrame??0,p=g||P<f,x=m||N<h,T=_||L<A;p&&(b.derivedCommands.uniformMapDirtyFrame=u),x&&(b.derivedCommands.shaderProgramDirtyFrame=u),T&&(b.derivedCommands.renderStateDirtyFrame=u),b.derivedCommands.type=E,b.pass=C.pass,b.pickOnly=C.pickOnly,b.uniformMap=tgt(e,t.uniformMap,S,p,C.getUniformMapFunction),b.shaderProgram=jpt(s.context,t.shaderProgram,B,x,C.getShaderProgramFunction,I),b.renderState=egt(t.renderState,v,T,C.getRenderStateFunction,C.renderStateCache)}}}r0.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=ZEe[o[a]];n.commandList.push(s[c])}};function e0e(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function JEe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var ogt=[Ha.OPAQUE_FRONT_FACE,Ha.OPAQUE_BACK_FACE],rgt=[Ha.DEPTH_ONLY_FRONT_FACE,Ha.DEPTH_ONLY_BACK_FACE,Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE];r0.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Be.GLOBE],a=e.indices[Be.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),e0e(s,a,t,i,o,ogt))};r0.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Be.GLOBE],c=e.indices[Be.GLOBE],u=e.commands[Be.TERRAIN_CLASSIFICATION],f=e.indices[Be.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,A=this._backFaceTranslucent;if((!h||!A)&&JEe(u,f,t,i,o),!h&&!A)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,e0e(a,c,t,i,o,rgt),r.depthTexture){let _=n.packDepth(r,o);s.globeDepthTexture=_}JEe(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var PV=r0;var ef=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function hA(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new vi({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new vi({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(hA.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});hA.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var sgt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},agt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},cgt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK,blending:pn.ALPHA_BLEND},lgt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,ugt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;hA.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Nt({context:e,width:s,height:a,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:s,height:a,format:Yl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ue.fromCache(sgt),this._rsClassified=Ue.fromCache(agt),this._rsDefault=Ue.fromCache(cgt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?ugt:lgt,f=new We({defines:["UNCLASSIFIED"],sources:[u]}),h=new We({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(ef,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};hA.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};hA.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};hA.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};hA.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};hA.prototype.isDestroyed=function(){return!1};hA.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var _P=hA;function RV(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(RV.prototype,{total:{get:function(){return this._total}}});function My(e){let t=new Array(Tc.NUMBER_OF_JOB_TYPES);t[Tc.TEXTURE]=new RV(l(e)?e[Tc.TEXTURE]:10),t[Tc.PROGRAM]=new RV(l(e)?e[Tc.PROGRAM]:10),t[Tc.BUFFER]=new RV(l(e)?e[Tc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}My.getTimestamp=Oi;Object.defineProperties(My.prototype,{totalBudget:{get:function(){return this._totalBudget}}});My.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};My.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};My.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=My.getTimestamp();e.execute();let a=My.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var MV=My;function NV(e){e=e??V.EMPTY_OBJECT;let t=Gn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Oi(),this._lastMsSampleTime=Oi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(NV.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});NV.prototype.update=function(e){let t=Oi(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};NV.prototype.destroy=function(){return ue(this)};var Ny=NV;var Wa={};Wa.decodeRawMetadataValue=function(e,t,n){switch(e){case zt.INT8:return t.getInt8(n);case zt.UINT8:return t.getUint8(n);case zt.INT16:return t.getInt16(n,!0);case zt.UINT16:return t.getUint16(n,!0);case zt.INT32:return t.getInt32(n,!0);case zt.UINT32:return t.getUint32(n,!0);case zt.INT64:return t.getBigInt64(n,!0);case zt.UINT64:return t.getBigUint64(n,!0);case zt.FLOAT32:return t.getFloat32(n,!0);case zt.FLOAT64:return t.getFloat64(n,!0)}throw new ce(`Invalid component type: ${e}`)};Wa.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=Wa.decodeRawMetadataValue(i,t,n);return e.normalized?zt.normalize(o,i):o};Wa.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=zt.getSizeInBytes(i),r=e.type,s=gt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let A=n*a+h*o,g=Wa.decodeRawMetadataValueComponent(e,t,A);f[h]=g}return f}let c=n*a;return Wa.decodeRawMetadataValueComponent(e,t,c)};Wa.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=Wa.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return Wa.decodeRawMetadataValueElement(e,n,0)};Wa.convertToObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case gt.VEC2:return k.unpack(n,0,new k);case gt.VEC3:return d.unpack(n,0,new d);case gt.VEC4:return se.unpack(n,0,new se);case gt.MAT2:return Wi.unpack(n,0,new Wi);case gt.MAT3:return J.unpack(n,0,new J);case gt.MAT4:return R.unpack(n,0,new R)}throw new ce(`Invalid metadata object type: ${e}`)};Wa.convertFromObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;switch(e){case gt.VEC2:return k.pack(t,Array(2));case gt.VEC3:return d.pack(t,Array(3));case gt.VEC4:return se.pack(t,Array(4));case gt.MAT2:return Wi.pack(t,Array(4));case gt.MAT3:return J.pack(t,Array(9));case gt.MAT4:return R.pack(t,Array(16))}throw new ce(`Invalid metadata object type: ${e}`)};Wa.decodeMetadataValues=function(e,t,n){let i=Wa.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=Wa.convertFromObjectType(e.type,t.offset),s=Wa.convertFromObjectType(e.type,t.scale);i=$A.valueTransformInPlace(i,r,s,zt.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=Wa.convertToObjectType(e.type,c);s[a]=u}return s}return Wa.convertToObjectType(e.type,i)};var LV=Object.freeze(Wa);function s0(){this._framebuffer=new vi,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(s0.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function fgt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function dgt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Ue.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}s0.prototype.update=function(e,t){fgt(this,e,t),dgt(this,e,t)};var hgt=new se,mgt=new se(1,1/255,1/65025,1/16581375);s0.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=se.unpack(i,0,hgt);return se.divideByScalar(o,255,o),se.dot(o,mgt)};s0.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};s0.prototype.isDestroyed=function(){return!1};s0.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var OV=s0;function Agt(e,t){this.near=e??0,this.far=t??0;let n=Be.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var FV=Agt;var a0=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function mA(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new vi,this._tempCopyDepthFramebuffer=new vi,this._updateDepthFramebuffer=new vi({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(mA.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function t0e(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Xe.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Xe.equals(r,e._rs.viewport)||a)&&(e._rs=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND}),e._rsUpdate=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new Ei({color:new G(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}mA.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),t0e(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};mA.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};mA.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};mA.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),t0e(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};mA.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};mA.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(G.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};mA.prototype.isDestroyed=function(){return!1};mA.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var QV=mA;function c0(){this._framebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new vi,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Xe,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(c0.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function pgt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function ggt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function _gt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Xe.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Xe.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}c0.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;ggt(this,n,o,r,e),_gt(this,n,o,r,i),this._useHdr=e};c0.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};c0.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};c0.prototype.isDestroyed=function(){return!1};c0.prototype.destroy=function(){return pgt(this),ue(this)};var kV=c0;function Jp(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new vi({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new vi({createColorAttachments:!1}),this._opaqueClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new Ei({color:new G(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._alphaClearCommand=new Ei({color:new G(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function n0e(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function HX(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function i0e(e){n0e(e),HX(e)}function ygt(e,t,n,i){n0e(e),e._accumulationTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT}),e._revealageTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,width:n,height:i,flipY:!1})}function Cgt(e,t){HX(e);let n=ee.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(HX(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(i0e(e),e._translucentMultipassSupport=!1,i=!1)}return i}Jp.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,ygt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!Cgt(this,e))return;this._useHDR=i;let f=this,h,A;l(this._compositeCommand)||(h=new We({sources:[fz]}),this._translucentMRTSupport&&h.defines.push("MRT"),A={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new We({defines:["MRT"],sources:[Jv]}),A={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})):this._translucentMultipassSupport&&(h=new We({sources:[Jv]}),A={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}),A={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Xe.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,Xe.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Xe.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!Xe.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ue.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var Egt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA},Igt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationAlpha:Uo.ONE},xgt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ZERO,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA};function WX(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ue.getState(i);r.depthMask=!1,r.blending=t,o=Ue.fromCache(r),n[i.id]=o}return o}function bgt(e,t,n){return WX(t,Egt,e._translucentRenderStateCache,n)}function Tgt(e,t,n){return WX(t,Igt,e._translucentRenderStateCache,n)}function Sgt(e,t,n){return WX(t,xgt,e._alphaRenderStateCache,n)}var wgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,Bgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,Dgt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function jX(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return We.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${u}`}return a.sources.push(u),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function vgt(e,t){return jX(e,t,"translucentMRT",wgt)}function Pgt(e,t){return jX(e,t,"translucentMultipass",Bgt)}function Rgt(e,t){return jX(e,t,"alphaMultipass",Dgt)}Jp.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=vgt(t,e.shaderProgram),n.translucentCommand.renderState=bgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),n.alphaCommand=nt.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Pgt(t,e.shaderProgram),n.translucentCommand.renderState=Tgt(this,t,e.renderState),n.alphaCommand.shaderProgram=Rgt(t,e.shaderProgram),n.alphaCommand.renderState=Sgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function Mgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.alphaCommand:_.derivedCommands.oit.alphaCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(_,t,i,g)}i.framebuffer=h}function Ngt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=h}Jp.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){Ngt(this,e,t,n,i,o);return}Mgt(this,e,t,n,i,o)};Jp.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Jp.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,G.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Jp.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Jp.prototype.isDestroyed=function(){return!1};Jp.prototype.destroy=function(){return i0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var UV=Jp;function yP(){this._framebuffer=new vi({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(yP.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Lgt(e){e._framebuffer.destroy()}function Ogt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new El(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Xe},o.viewport=new Xe,e._passState=o}yP.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Ogt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};yP.prototype.isDestroyed=function(){return!1};yP.prototype.destroy=function(){return Lgt(this),ue(this)};var GV=yP;function VT(e){let t=new El(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Xe},t.viewport=new Xe,this._context=e,this._fb=new vi({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}VT.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Xe.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var CP=new G;VT.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,A=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);CP.red=G.byteToFloat(o[m]),CP.green=G.byteToFloat(o[m+1]),CP.blue=G.byteToFloat(o[m+2]),CP.alpha=G.byteToFloat(o[m+3]);let _=i.getObjectByPickColor(CP);if(l(_))return _}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-A,A=m}u+=h,f+=A}};VT.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};VT.prototype.isDestroyed=function(){return!1};VT.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var zV=VT;function Zp(){this._numSamples=1,this._colorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new G(0,0,0,0),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,owner:this})}function Fgt(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Zp.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Zp.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Zp.prototype.clear=function(e,t,n){G.clone(n,this._clearCommand.color),G.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Zp.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Zp.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Zp.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Zp.prototype.isDestroyed=function(){return!1};Zp.prototype.destroy=function(){return Fgt(this),ue(this)};var HT=Zp;function l0(){}l0.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};l0.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=We.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=We.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new We({defines:i,sources:o})};l0.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=We.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=We.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC; +`),u+=`uniform vec4 shadowMap_lightPositionEC; +`),i?u+=`void main() +{ +`:u+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?u+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?u+=` out_FragColor = vec4(1.0); +`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,u+=`} +`,r.push(u),new We({defines:o,sources:r})};l0.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};l0.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new We({defines:i,sources:o})};l0.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=We.findNormalVarying(e),s=!i&&l(r)||i&&o,a=We.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,A=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,_=t.softShadows,y=h?t._pointBias:i?t._terrainBias:t._primitiveBias,C=e.defines.slice(0),E=e.sources.slice(0),I=E.length;for(let B=0;B<I;++B)E[B]=We.replaceMain(E[B],"czm_shadow_receive_main");h?C.push("USE_CUBE_MAP_SHADOW"):u&&C.push("USE_SHADOW_DEPTH_TEXTURE"),_&&!h&&C.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?C.push("ENABLE_VERTEX_LIGHTING"):C.push("ENABLE_DAYNIGHT_SHADING")),n&&y.normalShading&&s&&(C.push("USE_NORMAL_SHADING"),y.normalShadingSmooth>0&&C.push("USE_NORMAL_SHADING_SMOOTH"));let b="";h?b+=`uniform samplerCube shadowMap_textureCube; +`:b+=`uniform sampler2D shadowMap_texture; +`;let S;return c?S=` return vec4(${a}, 1.0); +`:S=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,b+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${S}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${y.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,b+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,b+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?b+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:f||(b+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?b+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:A?b+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?b+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${m?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:b+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,b+=` out_FragColor.rgb *= visibility; +} +`,E.push(b),new We({defines:C,sources:E})};var $p=l0;function AA(e){e=e??V.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(jt.isInternetExplorer()||jt.isEdge()||(jt.isChrome()||jt.isFirefox())&&jt.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new R,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new se,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new VV,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new le,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new k,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new ls:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new se,new se],this._cascadeMatrices=[new R,new R,new R,new R],this._cascadeDistances=new se;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new Qgt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,qX(this),this._clearCommand=new Ei({depth:1,color:new G}),this._clearPassState=new El(t),this._size=e.size??2048,this.size=this._size}AA.MAXIMUM_DISTANCE=2e4;function Qgt(e){this.camera=new VV,this.passState=new El(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function YX(e,t){return Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function qX(e){let t=!e._usesDepthTexture;e._primitiveRenderState=YX(t,e._primitiveBias),e._terrainRenderState=YX(t,e._terrainBias),e._pointRenderState=YX(t,e._pointBias)}AA.prototype.debugCreateRenderStates=function(){qX(this)};Object.defineProperties(AA.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Hgt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function KX(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function kgt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=new as({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Ugt(e,t){let n=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),i=new as({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function Ggt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new jr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new as({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function s0e(e,t){e._isPointLight?Ggt(e,t):e._usesDepthTexture?Ugt(e,t):kgt(e,t)}function zgt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ee.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,qX(e),KX(e),s0e(e,t))}function Vgt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(KX(e),s0e(e,t),zgt(e,t),a0e(e,t))}function a0e(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Hgt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=qt.maximumCubeMapSize>=t?t:qt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Xe(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=qt.maximumTextureSize>=t?t:qt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Xe(0,0,t,t)):i===4&&(t=qt.maximumTextureSize>=t*2?t:qt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Xe(0,0,t,t),n[1].passState.viewport=new Xe(t,0,t,t),n[2].passState.viewport=new Xe(0,t,t,t),n[3].passState.viewport=new Xe(t,t,t,t));e._clearPassState.viewport=new Xe(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new R(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var Wgt=new Xe;function jgt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Be.OVERLAY,i}function Ygt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Wgt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=jgt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Xe.equals(a.renderState.viewport,s))&&(a.renderState=Ue.fromCache({viewport:Xe.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var pA=new Array(8);pA[0]=new se(-1,-1,-1,1);pA[1]=new se(1,-1,-1,1);pA[2]=new se(1,1,-1,1);pA[3]=new se(-1,1,-1,1);pA[4]=new se(-1,-1,1,1);pA[5]=new se(1,-1,1,1);pA[6]=new se(1,1,1,1);pA[7]=new se(-1,1,1,1);var Ly=new R,XX=new Array(8);for(let e=0;e<8;++e)XX[e]=new se;function qgt(e,t){let n=new Rt({geometry:new $h({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:en.fromColor(t)}}),i=new Rt({geometry:new L_({radius:.5}),attributes:{color:en.fromColor(t)}});return new kn({geometryInstances:[n,i],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var Kgt=[G.RED,G.GREEN,G.BLUE,G.MAGENTA],Xgt=new d;function Jgt(e,t){Ygt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new Kp({camera:e._sceneCamera,color:G.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new Kp({camera:e._passes[i].camera,color:Kgt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,Xgt),a=R.fromTranslationQuaternionRotationScale(i,o,s,Ly);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=qgt(a,G.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function VV(){this.viewMatrix=new R,this.inverseViewMatrix=new R,this.frustum=void 0,this.positionCartographic=new Ae,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new R}VV.prototype.clone=function(e){R.clone(e.viewMatrix,this.viewMatrix),R.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),Ae.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var Zgt=new R(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);VV.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return R.multiply(t,e,this.viewProjectionMatrix),R.multiply(Zgt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var $gt=new Array(5),e_t=new Vi,t_t=new Array(4),c0e=new d,l0e=new d;function n_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let A=t_t,g=$gt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let L=(a+1)/s,p=o*Math.pow(u,L),x=o+c*L,T=D.lerp(x,p,f);g[a+1]=T,A[a]=T-g[a]}if(h){for(a=0;a<s;++a)A[a]=Math.min(A[a],e._maximumCascadeDistances[a]);let L=g[0];for(a=0;a<s-1;++a)L+=A[a],g[a+1]=L}se.unpack(g,0,e._cascadeSplits[0]),se.unpack(g,1,e._cascadeSplits[1]),se.unpack(A,0,e._cascadeDistances);let m=n.frustum,_=m.left,y=m.right,C=m.bottom,E=m.top,I=m.near,b=m.far,S=n.positionWC,B=n.directionWC,v=n.upWC,P=i.frustum.clone(e_t),N=n.getViewProjection();for(a=0;a<s;++a){P.near=g[a],P.far=g[a+1];let L=R.multiply(P.projectionMatrix,i.viewMatrix,Ly),p=R.inverse(L,Ly),x=R.multiply(N,p,Ly),T=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),w=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let z=0;z<8;++z){let F=se.clone(pA[z],XX[z]);R.multiplyByVector(x,F,F),d.divideByScalar(F,F.w,F),d.minimumByComponent(F,T,T),d.maximumByComponent(F,w,w)}T.x=Math.max(T.x,0),T.y=Math.max(T.y,0),T.z=0,w.x=Math.min(w.x,1),w.y=Math.min(w.y,1),w.z=Math.min(w.z,1);let M=e._passes[a],O=M.camera;O.clone(n);let U=O.frustum;U.left=_+T.x*(y-_),U.right=_+w.x*(y-_),U.bottom=C+T.y*(E-C),U.top=C+w.y*(E-C),U.near=I+T.z*(b-I),U.far=I+w.z*(b-I),M.cullingVolume=O.frustum.computeCullingVolume(S,B,v);let Q=e._cascadeMatrices[a];R.multiply(O.getViewProjection(),i.inverseViewMatrix,Q),R.multiply(M.textureOffsets,Q,Q)}}var i_t=new R,o_t=new d,r_t=new d,o0e=new d;function s_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=R.multiply(i.frustum.projectionMatrix,i.viewMatrix,Ly),r=R.inverse(o,Ly),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,D.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,o_t);a=d.cross(c,s,r_t),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,o0e),f=R.computeView(u,s,a,c,i_t),h=R.multiply(f,r,Ly),A=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let b=0;b<8;++b){let S=se.clone(pA[b],XX[b]);R.multiplyByVector(h,S,S),d.divideByScalar(S,S.w,S),d.minimumByComponent(S,A,A),d.maximumByComponent(S,g,g)}g.z+=1e3,A.z-=10;let m=o0e;m.x=-(.5*(A.x+g.x)),m.y=-(.5*(A.y+g.y)),m.z=-g.z;let _=R.fromTranslation(m,Ly);f=R.multiply(_,f,f);let y=.5*(g.x-A.x),C=.5*(g.y-A.y),E=g.z-A.z,I=n.frustum;I.left=-y,I.right=y,I.bottom=-C,I.top=C,I.near=.01,I.far=E,R.clone(f,n.viewMatrix),R.inverse(f,n.inverseViewMatrix),R.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var a_t=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],c_t=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],l_t=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function u_t(e,t){let n=new Vi;n.fov=D.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=a_t[i],o.upWC=c_t[i],o.rightWC=l_t[i],R.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),R.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var f_t=new d,d_t=new d,u0e=new le,r0e=u0e.center;function h_t(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=u0e;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,f_t),s=d.negate(i.directionWC,d_t),a=d.dot(r,s);if(e.fadingEnabled){let c=D.clamp(a/.1,0,1);e._darkness=D.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,r0e),r0e);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere)}}function m_t(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;R.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),R.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=Eo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,h_t(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}AA.prototype.update=function(e){if(m_t(this,e),this._needsUpdate)if(Vgt(this,e.context),this._isPointLight&&u_t(this,e),this._cascadesEnabled&&(s_t(this,e),this._numberOfCascades>1&&n_t(this,e)),this._isPointLight)this._shadowMapCullingVolume=zs.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;R.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&Jgt(this,e)};AA.prototype.updatePass=function(e,t){a0e(this,e,t)};var A_t=new k;function f0e(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=A_t;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,se.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return se.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new se,combinedUniforms2:new se};return wt(t,o,!1)}function p_t(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=nt.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===Be.GLOBE,h=n.pass!==Be.TRANSLUCENT,A=e._isPointLight,g=e._usesDepthTexture,m=$p.getShadowCastShaderKeyword(A,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let y=u.vertexShaderSource,C=u.fragmentShaderSource,E=$p.createShadowCastVertexShader(y,A,f),I=$p.createShadowCastFragmentShader(C,A,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:E,fragmentShaderSource:I,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,A?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ze(a,!1),a.cull=ze(a.cull,!1),a.cull.enabled=!1,a=Ue.fromCache(a)),c=f0e(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}AA.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===Be.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,A;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,A=o.receiveCommand.uniformMap),o.receiveCommand=nt.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let _=$p.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,_),!l(h)){let y=$p.createShadowReceiveVertexShader(a,u,f),C=$p.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,_,{vertexShaderSource:y,fragmentShaderSource:C,attributeLocations:s._attributeLocations})}A=f0e(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=A,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};AA.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=p_t(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};AA.prototype.isDestroyed=function(){return!1};AA.prototype.destroy=function(){KX(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var Oy=AA;var WT=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var g_t=!1;function Fy(e){this._drawClassificationFBO=new vi({createDepthAttachments:!1}),this._accumulationFBO=new vi({createDepthAttachments:!1}),this._packFBO=new vi,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new Ei({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Xe,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(Fy.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function d0e(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function h0e(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function __t(e,t,n,i){d0e(e),e._translucentDepthStencilTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST})}function y_t(e,t,n,i){h0e(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function C_t(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(__t(e,t,o,r),y_t(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new We({sources:[uz]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new We({sources:[WT]}),a={colorTexture:function(){return e._textureToComposite}},g_t&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,A=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new We({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=nt.shallowClone(f);g.shaderProgram=A,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Xe.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,Xe.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Xe.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!Xe.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Xe.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,reference:Kt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Xe.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}Fy.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){C_t(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};Fy.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Be.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Be.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[Be.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};Fy.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),E_t(this,e,t)};function E_t(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}Fy.prototype.isSupported=function(){return this._supported};Fy.prototype.isDestroyed=function(){return!1};Fy.prototype.destroy=function(){return d0e(this),h0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var HV=Fy;function I_t(){this.command=void 0,this.near=void 0,this.far=void 0}function WV(e,t,n){let i=e.context,o;i.depthTexture&&(o=new QV);let r;e._useOIT&&i.depthTexture&&(r=new UV(i));let s=new El(i);s.viewport=Xe.clone(n),this.camera=t,this._cameraClone=Eo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new zV(i),this.pickDepthFramebuffer=new GV,this.sceneFramebuffer=new HT,this.globeDepth=o,this.globeTranslucencyFramebuffer=new kV,this.oit=r,this.translucentTileClassification=new HV(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var JX=new d,ZX=new d;function x_t(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,JX)),d.maximumComponent(d.abs(t.position,ZX))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,JX),d.multiplyByScalar(t.position,o,ZX),d.equalsEpsilon(JX,ZX,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&R.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}WV.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return x_t(t,n,D.EPSILON15)?(this._cameraStartFired&&Oi()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Oi(),Eo.clone(t,n),!0)};function b_t(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ie.SCENE2D,u=t.nearToFarDistance2D;i*=1+D.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let A=0;A<f;++A){let g,m;c?(g=Math.min(i-u,n+A*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,A)*n),m=Math.min(i,a*g));let _=h[A];l(_)?(_.near=g,_.far=m):_=h[A]=new FV(g,m)}}function T_t(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var m0e=new zs,S_t=new _c;WV.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let N=0;N<f.length;++N)for(let L=0;L<Be.NUMBER_OF_PASSES;++L)f[N].indices[L]=0;c.length=0,u.length=0;let h=this._commandExtents,A=h.length,g=0,m=+Number.MAX_VALUE,_=-Number.MAX_VALUE,{shadowsEnabled:y}=o,C=+Number.MAX_VALUE,E=-Number.MAX_VALUE,I=Number.MAX_VALUE,b=t.mode===ie.SCENE3D?t.occluder:void 0,{cullingVolume:S}=t,B=m0e.planes;for(let N=0;N<5;++N)B[N]=S.planes[N];S=m0e;for(let N=0;N<i.length;++N){let L=i[N],{pass:p,boundingVolume:x}=L;if(p===Be.COMPUTE)c.push(L);else if(p===Be.OVERLAY)u.push(L);else{let T,w;if(l(x)){if(!e.isVisible(S,L,b))continue;let O=x.computePlaneDistances(r,s,S_t);if(T=O.start,w=O.stop,m=Math.min(m,T),_=Math.max(_,w),y&&L.receiveShadows&&T<Oy.MAXIMUM_DISTANCE&&!(p===Be.GLOBE&&T<-100&&w>100)){let U=w-T;p!==Be.GLOBE&&T<100&&(I=Math.min(I,U)),C=Math.min(C,T),E=Math.max(E,w)}}else L instanceof Ei?(T=a.near,w=a.far):(T=a.near,w=a.far,m=Math.min(m,T),_=Math.max(_,w));let M=h[g];l(M)||(M=h[g]=new I_t),M.command=L,M.near=T,M.far=w,g++}}y&&(C=Math.min(Math.max(C,a.near),a.far),E=Math.max(Math.min(E,a.far),C),o.nearPlane=C,o.farPlane=E,o.closestObjectSize=I),b_t(this,e,m,_);for(let N=0;N<g;N++)T_t(this,e,h[N]);if(g<A)for(let N=g;N<A;N++){let L=h[N];if(!l(L.command))break;L.command=void 0}let v=f.length,{frustumSplits:P}=t;P.length=v+1;for(let N=0;N<v;++N)P[N]=f[N].near,N===v-1&&(P[N+1]=f[N].far)};WV.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var jT=WV;var p0e=.1,w_t=new Lh({pass:Zo.MOST_DETAILED_PRELOAD}),B_t=new Lh({pass:Zo.MOST_DETAILED_PICK}),EP=new Lh({pass:Zo.PICK});function pa(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Xe(0,0,1,1),n=new Eo(e);n.frustum=new An({width:p0e,aspectRatio:1,near:.1}),this._pickOffscreenView=new jT(e,n,t)}pa.prototype.update=function(){this._pickPositionCacheDirty=!0};pa.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new OV,n[t]=i),i};var D_t=new ls,v_t=new d,jV=new d,P_t=new k,R_t=new R;function M_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=R.clone(r.transform,R_t);r._setTransform(R.IDENTITY);let h=d.clone(r.position,v_t);d.multiplyByScalar(r.right,c,jV),d.add(jV,h,h),d.multiplyByScalar(r.up,u,jV),d.add(jV,h,h),r._setTransform(f),e.mode===ie.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let A=s.getPixelDimensions(o.width,o.height,1,1,P_t),g=D_t;return g.right=A.x*.5,g.left=-g.right,g.top=A.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var N_t=new fu,L_t=new k;function O_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,A=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,L_t),_=m.x*n*.5,y=m.y*i*.5,C=N_t;return C.top=g+y,C.bottom=g-y,C.right=A+_,C.left=A-_,C.near=a,C.far=s.far,C.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function YV(e,t,n,i,o){let r=e.camera.frustum;return r instanceof An||r instanceof ls?M_t(e,t,n,i,o):O_t(e,t,n,i,o)}var qV=new Xe(0,0,3,3),KV=new k,IP=new G(0,0,0,0);function $X(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}pa.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.end(h);return o.endFrame(),A};pa.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.readCenterPixel(h);return o.endFrame(),A};pa.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Xe.clone(s,c.viewport);let u=to.transformWindowToDrawingBuffer(e,t,KV),f=$X(i.drawingBufferHeight,u,1,1,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=YV(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=EP,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,IP);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let A=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,LV.decodeMetadataValues(n.classProperty,n.metadataProperty,A)};function F_t(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Xe.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=YV(e,t,1,1,s),o.tilesetPassState=EP,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,IP),e.resolveFramebuffers(c),i.endFrame()}var Q_t=new Vi,k_t=new fu,U_t=new An,G_t=new ls;pa.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=to.transformWindowToDrawingBuffer(e,t,KV);e.pickTranslucentDepth?F_t(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(Q_t):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(k_t):l(s.frustum.width)?f=s.frustum.clone(U_t):f=s.frustum.clone(G_t);let{frustumCommandsList:h}=a,A=h.length;for(let g=0;g<A;++g){let _=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(_)&&_>0&&_<1){let y=h[g],C;return e.mode===ie.SCENE2D?(C=s.position.z,s.position.z=C-y.near+1,f.far=Math.max(1,y.far-y.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=y.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=y.far,c.updateFrustum(f)),n=to.drawingBufferToWorldCoordinates(e,u,_,n),e.mode===ie.SCENE2D&&(s.position.z=C,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var z_t=new Ae;pa.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ie.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,z_t);o.cartographicToCartesian(r,n)}return n};function g0e(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let A=u.primitive,g=!1;typeof A.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=A.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=Bn.toValue(!1,i.show),s.push(i))),u instanceof Sa&&(g=!0,u.show=!1,a.push(u)),g||(A.show=!1,r.push(A)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=Bn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}pa.prototype.drillPick=function(e,t,n,i,o){let r=this;return g0e(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var A0e=new d,V_t=new d;function H_t(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function _0e(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,A0e),s=d.cross(o,r,A0e),a=d.cross(o,s,V_t);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??p0e,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function W_t(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=_0e(e,o,r,a),u=w_t;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let A=0;A<h;++A){let g=s[A];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}pa.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)W_t(this,e,t[n])&&t.splice(n--,1)};function y0e(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof ou&&y0e(o,t,n))}}function XV(e,t,n,i,o,r){let s=[];if(y0e(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new H_t(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function j_t(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function Y_t(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,_0e(e,n,o,f.camera);let h=Xe.clone(f.viewport,qV),A=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=B_t:c.tilesetPassState=EP,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(A,IP),t.resolveFramebuffers(A);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:_}=f,y=_.length;for(let C=0;C<y;++C){let I=e.getPickDepth(t,C).getDepth(a,0,0);if(l(I)&&I>0&&I<1){let b=_[C],S=b.near*(C!==0?t.opaqueFrustumNearOffset:1),B=b.far,v=S+I*(B-S);g=In.getPoint(n,v);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||j_t(m,i)}}function C0e(e,t,n,i,o,r,s,a){return g0e(i,function(){return Y_t(e,t,n,o,r,s,a)})}function YT(e,t,n,i,o,r,s){let a=C0e(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function E0e(e,t,n,i,o,r,s,a){return C0e(e,t,n,i,o,r,s,a)}function JV(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}pa.prototype.pickFromRay=function(e,t,n,i){return YT(this,e,t,n,i,!1,!1)};pa.prototype.drillPickFromRay=function(e,t,n,i,o){return E0e(this,e,t,n,i,o,!1,!1)};pa.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=In.clone(t),n=l(n)?n.slice():n,JV(e,XV(o,e,t,n,i,function(){return YT(o,e,t,n,i,!1,!0)}))};pa.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=In.clone(t),i=l(i)?i.slice():i,JV(e,XV(r,e,t,i,o,function(){return E0e(r,e,t,n,i,o,!1,!0)}))};var q_t=new d,K_t=new d,X_t=new In,I0e=new Ae;function eJ(e,t){let n=e.ellipsoid,i=wi._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,K_t),r=Ae.toCartesian(t,n,q_t),s=X_t;s.origin=r,s.direction=o;let a=new In;return In.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function x0e(e,t){let n=e.ellipsoid,i=Ae.fromCartesian(t,n,I0e);return eJ(e,i)}function b0e(e,t){let n=e.ellipsoid;return Ae.fromCartesian(t,n,I0e).height}function J_t(e,t,n,i,o){let r=eJ(t,n);return XV(e,t,r,i,o,function(){let s=YT(e,t,r,i,o,!0,!0);if(l(s))return b0e(t,s.position)})}function Z_t(e,t,n,i,o,r){let s=x0e(t,n);return XV(e,t,s,i,o,function(){let a=YT(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}pa.prototype.sampleHeight=function(e,t,n,i){let o=eJ(e,t),r=YT(this,e,o,n,i,!0,!1);if(l(r))return b0e(e,r.position)};pa.prototype.clampToHeight=function(e,t,n,i,o){let r=x0e(e,t),s=YT(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};pa.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=J_t(this,e,t[s],n,i);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};pa.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=Z_t(this,e,t[s],n,i,t[s]);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};pa.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var ZV=pa;var $V=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var e8=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var t8=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var n8=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var i8=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var o8=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var r8=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var s8=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var a8=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var c8=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var l8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var u8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var f8=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var u0=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var d8=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var h8=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var m8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var A8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var p8=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;function f0(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new vi,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new k,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(f0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function T0e(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function $_t(e,t){T0e(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new vi,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function S0e(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function eyt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function tyt(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function nyt(e,t){S0e(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(tyt(r,i),{framebuffer:n[r].framebuffer,uniformMap:eyt(e,r)});e._commands=o}f0.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new Ei({color:new G(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};f0.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,$_t(this,e),nyt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};f0.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};f0.prototype.isDestroyed=function(){return!1};f0.prototype.destroy=function(){return T0e(this),S0e(this),ue(this)};var g8=f0;var iyt={NEAREST:0,LINEAR:1},_d=iyt;function d0(e){e=e??V.EMPTY_OBJECT;let{name:t=Xn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=_d.NEAREST,pixelFormat:a=et.RGBA,pixelDatatype:c=He.UNSIGNED_BYTE,clearColor:u=G.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new El;h.scissorTest={enabled:!0,rectangle:l(f)?Xe.clone(f):new Xe},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(d0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var oyt=/uniform\s+sampler2D\s+depthTexture/g;d0.prototype._isSupported=function(e){return!oyt.test(this._fragmentShader)||e.depthTexture};function ryt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Nt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Nt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function syt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function ayt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function cyt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=syt(e,r),n[r]=ryt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Nt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=ayt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=wt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function lyt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function uyt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=lyt(n,o)}let i=new We({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function fyt(e){let t=e._sampleMode,n,i;t===_d.LINEAR?(n=Zt.LINEAR,i=pi.LINEAR):(n=Zt.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function dyt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function hyt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function myt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Nt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=hyt(e,u);else if(typeof u=="string"){let h=new we({url:u});s.push(h.fetchImage().then(dyt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function w0e(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Nt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function Ayt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function pyt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:on.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=G.floatToByte(h.red),r[o+1]=G.floatToByte(h.green),r[o+2]=G.floatToByte(h.blue),r[o+3]=G.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=G.floatToByte(c.red),r[o+1]=G.floatToByte(c.green),r[o+2]=G.floatToByte(c.blue),r[o+3]=G.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:on.NEAREST})}d0.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&w0e(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=Ayt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,pyt(this,e),cyt(this),myt(this,e),uyt(this,e),fyt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ue.fromCache({viewport:new Xe(0,0,i.width,i.height)}))),this._command.renderState=o};d0.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,on.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};d0.prototype.isDestroyed=function(){return!1};d0.prototype.destroy=function(){return w0e(this),ue(this)};var So=d0;function h0(e){e=e??V.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=Xn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(h0.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});h0.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};h0.prototype.get=function(e){return this._stages[e]};function gyt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}h0.prototype.update=function(e,t){this._selectedDirty=gyt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};h0.prototype.isDestroyed=function(){return!1};h0.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var tf=h0;var zr={};function tJ(e){let o=`#define USE_STEP_SIZE +${u0}`,r=new So({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:_d.LINEAR}),s=new So({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:_d.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new tf({name:e,stages:[r,s],uniforms:a})}zr.createBlurStage=function(){return tJ("czm_blur")};zr.createDepthOfFieldStage=function(){let e=tJ("czm_depth_of_field_blur"),t=new So({name:"czm_depth_of_field_composite",fragmentShader:s8,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new tf({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};zr.createEdgeDetectionStage=function(){let e=Xn();return new So({name:`czm_edge_detection_${e}`,fragmentShader:c8,uniforms:{length:.25,color:G.clone(G.BLACK)}})};zr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function _yt(e){if(!l(e))return zr.createEdgeDetectionStage();let t=new tf({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new So({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new tf({name:"czm_edge_detection_composite",stages:[t,s]})}zr.createSilhouetteStage=function(e){let t=_yt(e),n=new So({name:"czm_silhouette_color_edges",fragmentShader:p8,uniforms:{silhouetteTexture:t.name}});return new tf({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};zr.isSilhouetteSupported=function(e){return e.context.depthTexture};zr.createBloomStage=function(){let e=new So({name:"czm_bloom_contrast_bias",fragmentShader:r8,uniforms:{contrast:128,brightness:-.3}}),t=tJ("czm_bloom_blur"),n=new tf({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new So({name:"czm_bloom_generate_composite",fragmentShader:i8,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new tf({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};zr.createAmbientOcclusionStage=function(){let e=new So({name:"czm_ambient_occlusion_generate",fragmentShader:e8,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new So({name:"czm_ambient_occlusion_composite",fragmentShader:t8,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new tf({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var yyt=`#define FXAA_QUALITY_PRESET 39 +${mz} +${f8}`;zr.createFXAAStage=function(){return new So({name:"czm_FXAA",fragmentShader:yyt,sampleMode:_d.LINEAR})};zr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=$V,new So({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=l8,new So({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=u8,new So({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=A8,new So({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=h8,new So({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:G.WHITE,autoExposure:void 0,exposure:1}})};zr.createAutoExposureStage=function(){return new g8};zr.createBlackAndWhiteStage=function(){return new So({name:"czm_black_and_white",fragmentShader:n8,uniforms:{gradations:5}})};zr.createBrightnessStage=function(){return new So({name:"czm_brightness",fragmentShader:o8,uniforms:{brightness:.5}})};zr.createNightVisionStage=function(){return new So({name:"czm_night_vision",fragmentShader:m8})};zr.createDepthViewStage=function(){return new So({name:"czm_depth_view",fragmentShader:a8})};zr.createLensFlareStage=function(){return new So({name:"czm_lens_flare",fragmentShader:d8,uniforms:{dirtTexture:fn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:fn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:te.WGS84.maximumRadius}})};var yd=zr;function eg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function bP(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function nJ(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[bP(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[bP(h)]=!0)}}}return i.name}function xP(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let A=i.get(h);l(A.length)?a=xP(e,t,n,A,o):a=nJ(e,t,n,A,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=bP(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=bP(i.get(u));let h=n[f];for(let A=0;A<u;++A)h[bP(i.get(A))]=!0}return a}function Cyt(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=xP(e,t,n,i,void 0);a=xP(e,t,n,o,a),a=nJ(e,t,n,r,a),a=xP(e,t,n,e,a),nJ(e,t,n,s,a)}else xP(e,t,n,e,void 0);return n}function Eyt(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,A=e._framebuffers,g=A.length;for(f=0;f<g;++f){if(h=A[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!G.equals(u,h.clearColor))continue;let m=h.stages,_=m.length,y=!1;for(let C=0;C<_;++C)if(n[m[C]]){y=!0;break}if(!y)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new vi({pixelFormat:a,pixelDatatype:c}),clear:void 0},A.push(h),h)}function Iyt(e,t){let n=Cyt(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=Eyt(e,i,n[i]))}function iJ(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function xyt(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(D.isPowerOfTwo(h)||(h=D.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new Ei({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}eg.prototype.updateDependencies=function(){this._updateDependencies=!0};eg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(iJ(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&Iyt(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,iJ(this),xyt(this,e))};eg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};eg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};eg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};eg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};eg.prototype.isDestroyed=function(){return!1};eg.prototype.destroy=function(){return iJ(this),ue(this)};var qT=eg;var byt={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var Qy=Object.freeze(byt);var oJ=[];function xl(){let e=yd.createFXAAStage(),t=yd.createAmbientOcclusionStage(),n=yd.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=yd.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=Qy.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new qT(this),r={},s=oJ;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(xl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return rJ(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case Qy.REINHARD:n=yd.createReinhardTonemappingStage(t);break;case Qy.MODIFIED_REINHARD:n=yd.createModifiedReinhardTonemappingStage(t);break;case Qy.FILMIC:n=yd.createFilmicTonemappingStage(t);break;case Qy.PBR_NEUTRAL:n=yd.createPbrNeutralTonemappingStage(t);break;default:n=yd.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function rJ(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}xl.prototype.add=function(e){let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};xl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};xl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};xl.prototype.get=function(e){return rJ(this),this._stages[e]};xl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};xl.prototype.getStageByName=function(e){return this._stageNames[e]};xl.prototype.update=function(e,t,n){rJ(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&(o[s++]=E)}o.length=s;let a=s!==i.length;if(!a){for(let C=0;C<s;++C)if(o[C]!==i[C]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,A=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),_=h.enabled&&h._isSupported(e),y=A.enabled&&A._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||_!==this._tonemappingEnabled||y!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=_,this._fxaaEnabled=y,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let E=new Uint8Array(196608);for(let I=0;I<196608;I+=3)E[I]=Math.floor(Math.random()*255);this._randomTexture=new Nt({context:e,pixelFormat:et.RGB,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:E,width:256,height:256},sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),A.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let C=0;C<r.length;++C)r[C].update(e,t);s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};xl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function m0(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}xl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return m0(t)};function gA(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){gA(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)gA(e.get(r),t,m0(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)gA(e.get(r),t,n,i,o)}xl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),A=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),_=s.enabled&&s._isSupported(e);if(!_&&!h&&!A&&!m&&r===0)return;let y=t;h&&a.ready&&(gA(a,e,y,n,i),y=m0(a)),A&&c.ready&&(gA(c,e,y,n,i),y=m0(c)),g&&u.ready&&gA(u,e,y,n,i),m&&f.ready&&(gA(f,e,y,n,i),y=m0(f));let C=y;if(r>0){gA(o[0],e,y,n,i);for(let E=1;E<r;++E)gA(o[E],e,m0(o[E-1]),n,i);C=m0(o[r-1])}_&&s.ready&&gA(s,e,C,n,i)};xl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};xl.prototype.isDestroyed=function(){return!1};xl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var _8=xl;var Tyt={SHIFT:0,CTRL:1,ALT:2},ja=Object.freeze(Tyt);var Syt={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},vn=Object.freeze(Syt);function ky(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function fJ(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function A0(e){if(e.shiftKey)return ja.SHIFT;if(e.ctrlKey)return ja.CTRL;if(e.altKey)return ja.ALT}var os={LEFT:0,MIDDLE:1,RIGHT:2};function nf(e,t,n,i){function o(r){i(e,r)}jt.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function wyt(e){let t=e._element,n=l(t.disableRootEvents)?t:document;jt.supportsPointerEvents()?(nf(e,"pointerdown",t,Myt),nf(e,"pointerup",t,F0e),nf(e,"pointermove",t,Nyt),nf(e,"pointercancel",t,F0e)):(nf(e,"mousedown",t,Q0e),nf(e,"mouseup",n,k0e),nf(e,"mousemove",n,U0e),nf(e,"touchstart",t,Pyt),nf(e,"touchend",n,R0e),nf(e,"touchmove",n,Ryt),nf(e,"touchcancel",n,R0e)),nf(e,"dblclick",t,Dyt);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",nf(e,i,t,vyt)}function Byt(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var B0e={position:new k};function dJ(e){e._lastSeenTouchEvent=Oi()}function hJ(e){return Oi()-e._lastSeenTouchEvent>Fh.mouseEmulationIgnoreMilliseconds}function uJ(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function Q0e(e,t){if(!hJ(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===os.LEFT)i=vn.LEFT_DOWN;else if(n===os.MIDDLE)i=vn.MIDDLE_DOWN;else if(n===os.RIGHT)i=vn.RIGHT_DOWN;else return;let o=ky(e,t,e._primaryPosition);k.clone(o,e._primaryStartPosition),k.clone(o,e._primaryPreviousPosition);let r=A0(t),s=e.getInputAction(i,r);l(s)&&(k.clone(o,B0e.position),s(B0e),t.preventDefault())}var D0e={position:new k},v0e={position:new k};function sJ(e,t,n,i){let o=A0(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=ky(e,i,e._primaryPosition);if(l(r)&&(k.clone(a,D0e.position),r(D0e)),l(s)){let c=e._primaryStartPosition;uJ(c,a,e._clickPixelTolerance)&&(k.clone(a,v0e.position),s(v0e))}}}function k0e(e,t){if(!hJ(e))return;let n=t.button;n!==os.LEFT&&n!==os.MIDDLE&&n!==os.RIGHT||(e._buttonDown[os.LEFT]&&(sJ(e,vn.LEFT_UP,vn.LEFT_CLICK,t),e._buttonDown[os.LEFT]=!1),e._buttonDown[os.MIDDLE]&&(sJ(e,vn.MIDDLE_UP,vn.MIDDLE_CLICK,t),e._buttonDown[os.MIDDLE]=!1),e._buttonDown[os.RIGHT]&&(sJ(e,vn.RIGHT_UP,vn.RIGHT_CLICK,t),e._buttonDown[os.RIGHT]=!1))}var aJ={startPosition:new k,endPosition:new k};function U0e(e,t){if(!hJ(e))return;let n=A0(t),i=ky(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(vn.MOUSE_MOVE,n);l(r)&&(k.clone(o,aJ.startPosition),k.clone(i,aJ.endPosition),r(aJ)),k.clone(i,o),(e._buttonDown[os.LEFT]||e._buttonDown[os.MIDDLE]||e._buttonDown[os.RIGHT])&&t.preventDefault()}var P0e={position:new k};function Dyt(e,t){let n=t.button,i;if(n===os.LEFT)i=vn.LEFT_DOUBLE_CLICK;else return;let o=A0(t),r=e.getInputAction(i,o);l(r)&&(ky(e,t,P0e.position),r(P0e))}function vyt(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=A0(t),o=e.getInputAction(vn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function Pyt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,ky(e,r,new k));y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,k.clone(a.get(s)))}function R0e(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var M0e={position:new k},cJ={position1:new k,position2:new k},N0e={position:new k},L0e={position:new k},O0e={position:new k};function y8(e,t){let n=A0(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[os.LEFT]){if(e._buttonDown[os.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(vn.LEFT_UP,n),l(r)&&(k.clone(e._primaryPosition,N0e.position),r(N0e)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(vn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];uJ(c,u,e._clickPixelTolerance)&&(k.clone(e._primaryPosition,L0e.position),s(L0e))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(vn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];k.clone(c,e._primaryPosition),k.clone(c,e._primaryStartPosition),k.clone(c,e._primaryPreviousPosition),e._buttonDown[os.LEFT]=!0,r=e.getInputAction(vn.LEFT_DOWN,n),l(r)&&(k.clone(c,M0e.position),r(M0e)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(vn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];uJ(u,f,e._holdPixelTolerance)&&(k.clone(e._primaryPosition,O0e.position),s(O0e))}},Fh.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(vn.PINCH_START,n),l(r)&&(k.clone(i.values[0],cJ.position1),k.clone(i.values[1],cJ.position2),r(cJ),t.preventDefault()))}function Ryt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&ky(e,r,u)}G0e(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,k.clone(a.get(s),c.get(s))}var lJ={startPosition:new k,endPosition:new k},TP={distance:{startPosition:new k,endPosition:new k},angleAndHeight:{startPosition:new k,endPosition:new k}};function G0e(e,t){let n=A0(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[os.LEFT]){let a=i.values[0];k.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(vn.MOUSE_MOVE,n),l(s)&&(k.clone(c,lJ.startPosition),k.clone(a,lJ.endPosition),s(lJ)),k.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(vn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,A=c.y-a.y,g=Math.sqrt(h*h+A*A)*.25,m=f.x-u.x,_=f.y-u.y,y=Math.sqrt(m*m+_*_)*.25,C=(c.y+a.y)*.125,E=(f.y+u.y)*.125,I=Math.atan2(A,h),b=Math.atan2(_,m);k.fromElements(0,y,TP.distance.startPosition),k.fromElements(0,g,TP.distance.endPosition),k.fromElements(b,E,TP.angleAndHeight.startPosition),k.fromElements(I,C,TP.angleAndHeight.endPosition),s(TP)}}function Myt(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,ky(e,t,new k)),y8(e,t),e._previousPositions.set(i,k.clone(n.get(i)))}else Q0e(e,t)}function F0e(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),y8(e,t),e._previousPositions.remove(i)}else k0e(e,t)}function Nyt(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;ky(e,t,o),G0e(e,t);let r=e._previousPositions;k.clone(n.get(i),r.get(i))}else U0e(e,t)}function Fh(e){this._inputEvents={},this._buttonDown={[os.LEFT]:!1,[os.MIDDLE]:!1,[os.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-Fh.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new k,this._primaryPosition=new k,this._primaryPreviousPosition=new k,this._positions=new Pt,this._previousPositions=new Pt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,wyt(this)}Fh.prototype.setInputAction=function(e,t,n){let i=fJ(t,n);this._inputEvents[i]=e};Fh.prototype.getInputAction=function(e,t){let n=fJ(e,t);return this._inputEvents[n]};Fh.prototype.removeInputAction=function(e,t){let n=fJ(e,t);delete this._inputEvents[n]};Fh.prototype.isDestroyed=function(){return!1};Fh.prototype.destroy=function(){return Byt(this),ue(this)};Fh.mouseEmulationIgnoreMilliseconds=800;Fh.touchHoldDelayMilliseconds=1500;var Cd=Fh;function p0(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}p0.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};p0.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof An,!(this._previousMode===ie.SCENE2D||this._previousMode===ie.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE2D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.COLUMBUS_VIEW?hCt(this,e):CCt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var Lyt=new d,Oyt=new d,Fyt=new d,Qyt=new d,kyt=new d,Uyt=new d,Gyt=new d,zyt=new Ae,Vyt=new R,Hyt=new Vi,Wyt=new An,jyt={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};p0.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ie.COLUMBUS_VIEW||this._previousMode===ie.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ie.COLUMBUS_VIEW,!0),n.camera._setTransform(R.IDENTITY);let i=Lyt,o=Oyt,r=Fyt;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ie.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,Gyt),h=kt.eastNorthUpToFixedFrame(f,t,Vyt);R.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,zyt),i),R.multiplyByPointAsVector(h,o,o),R.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=Wyt,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=Hyt,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=D.toRadians(60));let a=jyt;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=ICt(a);SP(this,c),this._previousMode===ie.SCENE2D?ECt(this,e,a,c):(a.position2D=R.multiplyByPoint(Eo.TRANSFORM_2D,i,Qyt),a.direction2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,o,kyt),a.up2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,Uyt),n._mode=ie.MORPHING,Z0e(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var pJ={position:new d,direction:new d,up:new d,frustum:void 0},V0e=new Vi;p0.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ie.SCENE3D||this._previousMode===ie.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE3D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.SCENE2D)iCt(this,e,t);else{let i;e>0?(i=pJ,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=H0e(this,t);let o,r=n.camera;r.frustum instanceof An?o=r.frustum.clone():(o=V0e,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=D.toRadians(60)),i.frustum=o;let s=eIe(i);SP(this,s),AJ(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};p0.prototype.isDestroyed=function(){return!1};p0.prototype.destroy=function(){return C8(this),ue(this)};function SP(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Cd(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,vn.LEFT_DOWN),e._morphHandler.setInputAction(n,vn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,vn.RIGHT_DOWN),e._morphHandler.setInputAction(n,vn.WHEEL)}}function C8(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var Yyt=new Ae,qyt=new d,Kyt=new R;function H0e(e,t){let n=e._scene,i=n.camera,o=pJ,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,Yyt);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,qyt),f=kt.eastNorthUpToFixedFrame(u,t,Kyt);return R.multiplyByPointAsVector(f,i.direction,s),R.multiplyByPointAsVector(f,i.up,a),o}var Xyt=new d,Jyt=new d,Zyt=new d,$yt=new d,eCt=new d,tCt=new d;function AJ(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,Xyt),a=d.clone(r.direction,Jyt),c=d.clone(r.up,Zyt),u=R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,n.position,$yt),f=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.direction,eCt),h=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.up,tCt);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,0,1,t,i)}});e._currentTweens.push(g)}var nCt=new An,W0e=new d,j0e=new d,Y0e=new d,gJ=new d,q0e=new d,K0e=new d;function iCt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=pJ,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=H0e(e,n));let s;e._morphToOrthographic?(s=nCt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=V0e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=D.toRadians(60)),r.frustum=s;let a=eIe(r);SP(e,a);let c;e._morphToOrthographic?c=function(){AJ(e,t,r,a)}:c=function(){J0e(e,t,r,function(){AJ(e,t,r,a)})},t>0?(i._mode=ie.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,gJ),complete:function(){i._mode=ie.MORPHING,c()}})):c()}function Ed(e,t,n,i){return d.lerp(e,t,n,i)}function X0e(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof An)return;let a=s.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(A){s.frustum.fov=D.lerp(a,c,A.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var oCt=new d,rCt=new d,sCt=new d,mJ=new d,aCt=new d,cCt=new d,lCt=new ls,uCt=new In,fCt=new d,dCt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function hCt(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,oCt),r=d.clone(i.direction,rCt),s=d.clone(i.up,sCt),a=d.negate(d.UNIT_Z,aCt),c=d.clone(d.UNIT_Y,cCt),u=mJ;if(t>0)d.clone(d.ZERO,mJ),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,mJ);let y=uCt;R.multiplyByPoint(Eo.TRANSFORM_2D,o,y.origin),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,y.direction);let C=n.globe;if(l(C)){let E=C.pickWorldCoordinates(y,n,!0,fCt);l(E)&&(R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,E,u),u.z+=d.distance(o,u))}}let f=lCt;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=dCt;h.position=u,h.direction=a,h.up=c,h.frustum=f;let A=tIe(h);SP(e,A);function g(y){Ed(o,u,y.time,i.position),Ed(r,a,y.time,i.direction),Ed(s,c,y.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(y,C){y.position.z=C}let _=n.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){X0e(e,t,h,m,A)}});e._currentTweens.push(_)}var z0e=new Ae,mCt={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new ls},ACt={position:new d,direction:new d,up:new d,frustum:void 0},pCt=new d,gCt=new In,_Ct=new R,yCt=new d;function CCt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=mCt;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,z0e),i.mapProjection.project(z0e,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=gCt;d.clone(r.position2D,h.origin);let A=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,yCt),m=kt.eastNorthUpToFixedFrame(g,n,_Ct);R.inverseTransformation(m,m),R.multiplyByPointAsVector(m,A,A),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,A,A);let _=i.globe;if(l(_)){let y=_.pickWorldCoordinates(h,i,!0,pCt);if(l(y)){let C=d.distance(r.position2D,y);y.x+=C,d.clone(y,r.position2D)}}}function s(h,A){h.position.x=A}R.multiplyByPoint(Eo.TRANSFORM_2D,r.position,r.position2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.direction,r.direction2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=ACt;R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=tIe(c);SP(e,u);function f(){X0e(e,t,r,s,u)}Z0e(e,t,r,f)}function J0e(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(A){r.frustum.fov=D.lerp(c,a,A.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function ECt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,gJ),a=d.clone(n.direction,q0e),c=d.clone(n.up,K0e);o._mode=ie.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,W0e),h=d.clone(r.direction,j0e),A=d.clone(r.up,Y0e);f.z=s.z;function g(_){Ed(f,s,_.time,r.position),Ed(h,a,_.time,r.direction),Ed(A,c,_.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():J0e(e,0,n,u)}function Z0e(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,W0e),a=d.clone(r.direction,j0e),c=d.clone(r.up,Y0e),u=d.clone(n.position2D,gJ),f=d.clone(n.direction2D,q0e),h=d.clone(n.up2D,K0e);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,1,0,t,i)}});e._currentTweens.push(g)}function $0e(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ps.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function eIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE3D,n.morphTime=ie.getMorphTime(ie.SCENE3D),C8(t);let i=n.camera;(t._previousMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE3D,r)}}function tIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE2D,n.morphTime=ie.getMorphTime(ie.SCENE2D),C8(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE2D,o)}}function ICt(e){return function(t){let n=t._scene;n._mode=ie.COLUMBUS_VIEW,n.morphTime=ie.getMorphTime(ie.COLUMBUS_VIEW),C8(t);let i=n.camera;(t._previousModeMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.COLUMBUS_VIEW,r)}}var E8=p0;var xCt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},$i=Object.freeze(xCt);function ga(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function bCt(e,t){k.clone(e.distance.startPosition,t.distance.startPosition),k.clone(e.distance.endPosition,t.distance.endPosition),k.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),k.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function nIe(e,t,n){let i=ga($i.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new k;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new k,endPosition:new k},u.angleAndHeight={startPosition:new k,endPosition:new k},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,k.lerp(f.position1,f.position2,.5,s[i])},vn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},vn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(bCt(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(k.clone(f.distance.endPosition,u.distance.endPosition),k.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,A=u.prevAngle,g=Math.PI*2;for(;h>=A+Math.PI;)h-=g;for(;h<A-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-A*n.clientWidth/12}},vn.PINCH_MOVE,t)}function iIe(e,t){let n=ga($i.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new k,endPosition:new k,valid:!1}),s.startPosition=new k,k.clone(k.ZERO,s.startPosition),s.endPosition=new k,e._eventHandler.setInputAction(function(c){let u=7.5*D.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,k.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},vn.WHEEL,t)}function KT(e,t,n){let i=ga(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new k;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new k,endPosition:new k,valid:!1});let c,u;n===$i.LEFT_DRAG?(c=vn.LEFT_DOWN,u=vn.LEFT_UP):n===$i.RIGHT_DRAG?(c=vn.RIGHT_DOWN,u=vn.RIGHT_UP):n===$i.MIDDLE_DRAG&&(c=vn.MIDDLE_DOWN,u=vn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,k.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){_J(ga(n,void 0),e);for(let f of Object.values(ja)){let h=ga(n,f);_J(h,e)}},u,t)}function _J(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function oIe(e,t){k.clone(e.startPosition,t.startPosition),k.clone(e.endPosition,t.endPosition)}function TCt(e,t,n){let i=n._isDown,o=!1,r=ga(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,_J(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new k,endPosition:new k,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function rIe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in $i)if($i.hasOwnProperty(s)){let a=$i[s];if(l(a)){let c=ga(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new k,endPosition:new k,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new k,endPosition:new k})}}e._eventHandler.setInputAction(function(s){for(let a in $i)if($i.hasOwnProperty(a)){let c=$i[a];if(l(c)){let u=ga(c,t);TCt(c,t,e),r[u]&&(n[u]?(oIe(i[u],o[u]),o[u].valid=!0,oIe(s,i[u]),n[u]=!1):k.clone(s.endPosition,i[u].endPosition))}}k.clone(s.endPosition,e._currentMousePosition)},vn.MOUSE_MOVE,t)}function Id(e){this._eventHandler=new Cd(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new k,iIe(this,void 0),nIe(this,void 0,e),KT(this,void 0,$i.LEFT_DRAG),KT(this,void 0,$i.RIGHT_DRAG),KT(this,void 0,$i.MIDDLE_DRAG),rIe(this,void 0);for(let t in ja)if(ja.hasOwnProperty(t)){let n=ja[t];l(n)&&(iIe(this,n),nIe(this,n,e),KT(this,n,$i.LEFT_DRAG),KT(this,n,$i.RIGHT_DRAG),KT(this,n,$i.MIDDLE_DRAG),rIe(this,n))}}Object.defineProperties(Id.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[ga($i.WHEEL)]||!this._update[ga($i.WHEEL,ja.SHIFT)]||!this._update[ga($i.WHEEL,ja.CTRL)]||!this._update[ga($i.WHEEL,ja.ALT)];return this._buttonsDown>0||e}}});Id.prototype.isMoving=function(e,t){let n=ga(e,t);return!this._update[n]};Id.prototype.getMovement=function(e,t){let n=ga(e,t);return this._movement[n]};Id.prototype.getLastMovement=function(e,t){let n=ga(e,t),i=this._lastMovement[n];if(i.valid)return i};Id.prototype.isButtonDown=function(e,t){let n=ga(e,t);return this._isDown[n]};Id.prototype.getStartMousePosition=function(e,t){if(e===$i.WHEEL)return this._currentMousePosition;let n=ga(e,t);return this._eventStartPosition[n]};Id.prototype.getButtonPressTime=function(e,t){let n=ga(e,t);return this._pressTime[n]};Id.prototype.getButtonReleaseTime=function(e,t){let n=ga(e,t);return this._releaseTime[n]};Id.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};Id.prototype.isDestroyed=function(){return!1};Id.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var I8=Id;function x8(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=ze(n),this._stopObject=ze(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(x8.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});x8.prototype.cancelTween=function(){this._tweens.remove(this)};function Qh(){this._tweens=[]}Object.defineProperties(Qh.prototype,{length:{get:function(){return this._tweens.length}}});Qh.prototype.add=function(e){if(e=e??V.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new x8(this);let t=e.duration/ri.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ri.SECONDS_PER_MILLISECOND,o=e.easingFunction??ps.LINEAR_NONE,r=e.startObject,s=new G_e(r);s.to(ze(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new x8(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};Qh.prototype.addProperty=function(e){e=e??V.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};Qh.prototype.addAlpha=function(e){e=e??V.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};Qh.prototype.addOffsetIncrement=function(e){e=e??V.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};Qh.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};Qh.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};Qh.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};Qh.prototype.get=function(e){return this._tweens[e]};Qh.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ri.SECONDS_PER_MILLISECOND:Oi();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var XT=Qh;function BP(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=$i.LEFT_DRAG,this.zoomEventTypes=[$i.RIGHT_DRAG,$i.WHEEL,$i.PINCH],this.rotateEventTypes=$i.LEFT_DRAG,this.tiltEventTypes=[$i.MIDDLE_DRAG,$i.PINCH,{eventType:$i.LEFT_DRAG,modifier:ja.CTRL},{eventType:$i.RIGHT_DRAG,modifier:ja.CTRL}],this.lookEventTypes={eventType:$i.LEFT_DRAG,modifier:ja.SHIFT};let t=e.ellipsoid??te.default;this.minimumPickingTerrainHeight=te.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=te.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=te.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=te.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new I8(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new XT,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new k(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new k(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new k,this._strafeEndMousePosition=new k,this._zoomMouseStart=new k(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new k,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function SCt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function wCt(e){return k.equalsEpsilon(e.startPosition,e.endPosition,D.EPSILON14)}var BCt=.4;function DCt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new k,endPosition:new k,motion:new k,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,A=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<BCt){let g=SCt(A,i),m=e.getLastMovement(t,n);if(!l(m)||wCt(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=k.clone(m.startPosition,a.startPosition),a.endPosition=k.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=k.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||k.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let _=e.getStartMousePosition(t,n);o(r,_,a)}}}function vCt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var sIe=[];function bl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(sIe[0]=n,n=sIe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,A=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(A?(i(e,g,A),vCt(e,r)):o<1&&DCt(s,f,h,o,i,e,r))}}var b8=new In,PCt=new d,RCt=new k,MCt=new d,NCt=new k,LCt=new d,OCt=new d,FCt=new d,QCt=new d,_Ie=new d,kCt=new d,UCt=new d,GCt=new d,zCt=new d,VCt=new d,HCt=new d,WCt=new d,jCt=new d,YCt=new d,qCt=new d,g0=new d,aIe=new d,cIe=new d,yJ={orientation:new pc};function wJ(e,t,n,i,o,r){let s=1;l(r)&&(s=D.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,A=i*h;A=D.clamp(A,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=A*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let _=e._scene,y=_.camera,C=_.mode,E=yJ.orientation;E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll;let I=n.inertiaEnabled??k.equals(t,e._zoomMouseStart),b=e._zoomingOnVector,S=e._rotatingZoom,B;if(I||(e._zoomMouseStart=k.clone(t,e._zoomMouseStart),l(e._globe)&&C===ie.SCENE2D?(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x)):l(e._globe)&&(B=tg(e,t,PCt)),l(B)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,b=e._zoomingOnVector=!1,S=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){y.zoomIn(m);return}let v=C===ie.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!I||S){if(C===ie.SCENE2D){let P=e._zoomWorldPosition,N=y.position;if(!d.equals(P,N)&&y.positionCartographic.height<e._maxCoord.x*2){let L=y.position.x,p=d.subtract(P,N,MCt);d.normalize(p,p);let x=d.distance(P,N)*m/(y.getMagnitude()*.5);y.move(p,x*.5),(y.position.x<0&&L>0||y.position.x>0&&L<0)&&(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x),e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition))}}else if(C===ie.SCENE3D){let P=d.normalize(y.position,_Ie);if(e._cameraUnderground||e._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(d.dot(y.direction,P))<.6)v=!0;else{let N=_.canvas,L=NCt;L.x=N.clientWidth/2,L.y=N.clientHeight/2;let p=tg(e,L,LCt);if(!l(p))v=!0;else if(y.positionCartographic.height<1e6)if(d.dot(y.direction,P)>=-.5)v=!0;else{let x=UCt;d.clone(y.position,x);let T=e._zoomWorldPosition,w=kCt;if(w=d.normalize(T,w),d.dot(w,P)<0)return;let M=qCt,O=VCt;d.clone(y.direction,O),d.add(x,d.multiplyByScalar(O,1e3,g0),M);let U=HCt,Q=WCt;d.subtract(T,x,U),d.normalize(U,Q);let z=d.dot(P,Q);if(z>=0){e._zoomMouseStart.x=-1;return}let F=Math.acos(-z),H=d.magnitude(x),W=d.magnitude(T),Z=H-m,Y=d.magnitude(U),$=Math.asin(D.clamp(Y/W*Math.sin(F),-1,1)),X=Math.asin(D.clamp(Z/W*Math.sin(F),-1,1)),he=$-X+F,ge=GCt;d.normalize(x,ge);let fe=zCt;fe=d.cross(Q,ge,fe),fe=d.normalize(fe,fe),d.normalize(d.cross(ge,fe,g0),O),d.multiplyByScalar(d.normalize(M,g0),d.magnitude(M)-m,M),d.normalize(x,x),d.multiplyByScalar(x,Z,x);let ye=jCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),Z,ye),d.add(x,ye,x),d.normalize(M,ge),d.normalize(d.cross(ge,fe,g0),O);let Ie=YCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),d.magnitude(M),Ie),d.add(M,Ie,M),d.clone(x,y.position),d.normalize(d.subtract(M,x,g0),y.direction),d.clone(y.direction,y.direction),d.cross(y.direction,y.up,y.right),d.cross(y.right,y.direction,y.up),y.setView(yJ);return}else{let x=d.normalize(p,OCt),T=d.normalize(e._zoomWorldPosition,FCt),w=d.dot(T,x);if(w>0&&w<1){let M=D.acosClamped(w),O=d.cross(T,x,QCt),U=Math.abs(M)>D.toRadians(20)?y.positionCartographic.height*.75:y.positionCartographic.height-m,Q=m/U;y.rotate(O,M*Q)}}}}e._rotatingZoom=!v}if(!I&&v||b){let P,N=to.worldToWindowCoordinates(_,e._zoomWorldPosition,RCt);C!==ie.COLUMBUS_VIEW&&k.equals(t,e._zoomMouseStart)&&l(N)?P=y.getPickRay(N,b8):P=y.getPickRay(t,b8);let L=P.direction;(C===ie.COLUMBUS_VIEW||C===ie.SCENE2D)&&d.fromElements(L.y,L.z,L.x,L),y.move(L,m),e._zoomingOnVector=!0}else y.zoomIn(m);e._cameraUnderground||y.setView(yJ)}var KCt=new In,XCt=new In,JCt=new d;function ZCt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,KCt).origin,s=o.getPickRay(n.endPosition,XCt).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,JCt),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function lIe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;wJ(e,t,n,e.zoomFactor,o.getMagnitude())}var $Ct=new k,eEt=new k;function uIe(e,t,n){if(l(n.angleAndHeight)){tEt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=$Ct;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=k.normalize(c,c);let u=eEt;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=k.normalize(u,u);let f=D.acosClamped(c.x);c.y<0&&(f=D.TWO_PI-f);let h=D.acosClamped(u.x);u.y<0&&(h=D.TWO_PI-h);let A=h-f;o.twistRight(A)}function tEt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function nEt(e){let t=e._scene.mapMode2D===$u.ROTATE;R.equals(R.IDENTITY,e._scene.camera.transform)?(bl(e,e.enableTranslate,e.translateEventTypes,ZCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.tiltEventTypes,uIe,e.inertiaSpin,"_lastInertiaTiltMovement")):(bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.translateEventTypes,uIe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var yIe=new In,iEt=new d,oEt=new d;function tg(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,iEt)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,yIe),u=o.pickWorldCoordinates(c,i,a,oEt),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var rEt=new Ae;function P8(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ie.SCENE3D){let c=t.cartesianToCartographic(i.position,rEt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var sEt=new d;function CIe(e,t){let n=t.origin,i=t.direction,o=P8(e),r=d.normalize(n,sEt),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function EIe(e,t,n,i){let o=d.distance(t.origin,n),r=P8(e),s=D.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),In.getPoint(t,o,i)}function IIe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=P8(e))):o=P8(e),In.getPoint(t,o,i)}var aEt=new k;function xIe(e,t){let n=t.endPosition,i=k.subtract(t.endPosition,t.startPosition,aEt),o=e._strafeEndMousePosition;k.add(o,i,o),t.endPosition=o,BJ(e,t,e._strafeStartPosition),t.endPosition=n}var fIe=new In,cEt=new In,CJ=new d,lEt=new d,uEt=new d,fEt=new d,dEt=new mn(d.UNIT_X,0),hEt=new k,mEt=new k;function AEt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){rf(e,t,n);return}if(e._strafing){xIe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=k.clone(n.startPosition,hEt),a=k.clone(n.endPosition,mEt),c=o.getPickRay(s,fIe),u=d.clone(d.ZERO,fEt),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=tg(e,s,CJ),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let I=h;r&&(I=IIe(e,c,h,CJ)),k.clone(t,e._strafeMousePosition),k.clone(t,e._strafeEndMousePosition),d.clone(I,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition);return}let A=mn.fromPointNormal(u,f,dEt);c=o.getPickRay(s,fIe);let g=Ai.rayPlane(c,A,CJ),m=o.getPickRay(a,cEt),_=Ai.rayPlane(m,A,lEt);if(!l(g)||!l(_)){e._looking=!0,rf(e,t,n),k.clone(t,e._translateMousePosition);return}let y=d.subtract(g,_,uEt),C=y.x;y.x=y.y,y.y=y.z,y.z=C;let E=d.magnitude(y);E>D.EPSILON6&&(d.normalize(y,y),o.move(y,E))}var bIe=new k,w8=new In,B8=new d,pEt=new d,TIe=new R,gEt=new R,_Et=new d,yEt=new mn(d.UNIT_X,0),EJ=new d,bJ=new Ae,SIe=new R,CEt=new Le,EEt=new J,D8=new d;function IEt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){rf(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,xEt(e,t,n)):bEt(e,t,n)}function xEt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=bIe;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,w8),c=d.UNIT_X,u=a.origin,f=a.direction,h,A=d.dot(c,f);if(Math.abs(A)>D.EPSILON6&&(h=-d.dot(c,u)/A),!l(h)||h<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,B8);d.add(u,g,g);let m=i.mapProjection,_=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let y=m.unproject(g,bJ);_.cartographicToCartesian(y,g);let C=kt.eastNorthUpToFixedFrame(g,_,TIe),E=e._globe,I=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=R.clone(o.transform,SIe);o._setTransform(C),of(e,t,n,d.UNIT_Z),o._setTransform(b),e._globe=E,e._ellipsoid=I;let S=I.maximumRadius;e._rotateFactor=1/S,e._rotateRateRangeAdjustment=S}function bEt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(k.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,B8);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=tg(e,t,B8)),!l(s)){a=o.getPickRay(t,w8);let p=a.origin,x=a.direction,T,w=d.dot(c,x);if(Math.abs(w)>D.EPSILON6&&(T=-d.dot(c,p)/w),!l(T)||T<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(x,T,B8),d.add(p,s,s)}r&&(l(a)||(a=o.getPickRay(t,w8)),EIe(e,a,s,s)),k.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=bIe;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,w8);let h=d.clone(d.ZERO,_Et);h.x=s.x;let A=mn.fromPointNormal(h,c,yEt),g=Ai.rayPlane(a,A,pEt),m=o._projection,_=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let y=m.unproject(s,bJ);_.cartographicToCartesian(y,s);let C=kt.eastNorthUpToFixedFrame(s,_,TIe),E;l(g)?(d.fromElements(g.y,g.z,g.x,g),y=m.unproject(g,bJ),_.cartographicToCartesian(y,g),E=kt.eastNorthUpToFixedFrame(g,_,gEt)):E=C;let I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(o.transform,SIe);o._setTransform(C);let v=d.cross(d.UNIT_Z,d.normalize(o.position,EJ),EJ),P=d.dot(o.right,v);if(of(e,t,n,S,!1,!0),o._setTransform(E),P<0){let p=n.startPosition.y-n.endPosition.y;(r&&p<0||!r&&p>0)&&(S=void 0);let x=o.constrainedAxis;o.constrainedAxis=void 0,of(e,t,n,S,!0,!1),o.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(l(o.constrainedAxis)){let p=d.cross(o.direction,o.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,o.right)<0&&d.negate(p,p),d.cross(p,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(o.positionWC,EJ);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(o.positionWC,L)){o._setTransform(E),o.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(o.position)>p&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(p),o.position));let x=d.angleBetween(L,o.position),T=d.cross(L,o.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,CEt),M=J.fromQuaternion(w,EEt);J.multiplyByVector(M,o.direction,o.direction),J.multiplyByVector(M,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(B)}}var wIe=new k,BIe=new In,DIe=new d;function TEt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=wIe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,BIe),u=c.origin,f=c.direction,h=o.position.z,A;h<e._minimumPickingTerrainHeight&&(A=tg(e,a,DIe));let g;if(l(A)&&(g=d.distance(u,A)),s){let m=CIe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}wJ(e,t,n,e.zoomFactor,g)}function SEt(e){let n=e._scene.camera;if(!R.equals(R.IDENTITY,n.transform))bl(e,e.enableRotate,e.rotateEventTypes,of,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),bl(e,e.enableTilt,e.tiltEventTypes,IEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableTranslate,e.translateEventTypes,AEt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,TEt,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableLook,e.lookEventTypes,rf),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var wEt=new In,BEt=new mn(d.UNIT_X,0),DEt=new d,vEt=new d;function BJ(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,wEt),s=d.clone(o.direction,vEt);i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=mn.fromPointNormal(n,s,BEt),c=Ai.rayPlane(r,a,DEt);l(c)&&(s=d.subtract(n,c,s),i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var dIe=new d,vIe=new Ae,TJ=new d,SJ=new te,PEt=new d,REt=new d,MEt=new d;function NEt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!R.equals(o.transform,R.IDENTITY)){of(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,PEt);if(k.equals(t,e._rotateMousePosition)){if(e._looking)rf(e,t,n,u);else if(e._rotating)of(e,t,n);else if(e._strafing)xIe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,vIe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let A=tg(e,n.startPosition,MEt);if(l(A)){let g=!1,m=o.getPickRay(n.startPosition,yIe);if(r)g=!0,IIe(e,m,A,A);else{let _=s.geodeticSurfaceNormal(A,REt);Math.abs(d.dot(m.direction,_))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(A)}g?(k.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition)):(a=d.magnitude(A),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s),d.clone(A,e._rotateStartPosition))}else e._looking=!0,rf(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,dIe))?(xJ(e,t,n,e._ellipsoid),d.clone(dIe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,of(e,t,n)):(e._looking=!0,rf(e,t,n,u));k.clone(t,e._rotateMousePosition)}function of(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let A=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;A=Math.min(A,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*A*Math.PI*2,_=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let y=e.maximumTiltAngle,C=d.dot(a.direction,i),E=Math.PI-Math.acos(C)+_;E>y&&(_-=E-y)}o||a.rotateRight(m),r||a.rotateUp(_),a.constrainedAxis=u}var IJ=se.clone(se.UNIT_W),hIe=se.clone(se.UNIT_W),T8=new d,JT=new d,S8=new d,mIe=new d,LEt=new k,OEt=new k,FEt=new k,QEt=new k,kEt=new In;function xJ(e,t,n,i){let o=e._scene,r=o.camera,s=k.clone(n.startPosition,LEt),a=k.clone(n.endPosition,OEt),c=i.cartesianToCartographic(r.positionWC,vIe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,IJ),!l(e._globe)&&!k.equalsEpsilon(s,e._panLastMousePosition)&&(u=tg(e,s,IJ)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,JT),A=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),JT),g=d.magnitude(A),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,QEt),_=k.subtract(a,s,FEt),y=d.multiplyByScalar(r.rightWC,_.x*m.x,JT),C=d.normalize(r.positionWC,_Ie),E=r.getPickRay(a,kEt).direction,I=d.subtract(E,d.projectVector(E,r.rightWC,S8),S8),b=d.angleBetween(I,r.directionWC),S=1;l(r.frustum.fov)&&(S=Math.max(Math.tan(b),.1));let B=Math.abs(d.dot(r.directionWC,C)),v=-_.y*m.y*2/Math.sqrt(S)*(1-B),P=d.multiplyByScalar(E,v,S8);B=Math.abs(d.dot(r.upWC,C));let N=d.multiplyByScalar(r.upWC,-_.y*(1-B)*m.y,mIe);f=d.add(u,y,hIe),f=d.add(f,P,f),f=d.add(f,N,f),d.clone(f,e._panLastWorldPosition),k.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,IJ),f=r.pickEllipsoid(a,i,hIe)),!l(u)||!l(f)){e._rotating=!0,of(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,A=d.mostOrthogonalAxis(h,T8);d.cross(A,h,A),d.normalize(A,A);let g=d.cross(h,A,JT),m=d.magnitude(u),_=d.dot(h,u),y=Math.acos(_/m),C=d.multiplyByScalar(h,_,S8);d.subtract(u,C,C),d.normalize(C,C);let E=d.magnitude(f),I=d.dot(h,f),b=Math.acos(I/E),S=d.multiplyByScalar(h,I,mIe);d.subtract(f,S,S),d.normalize(S,S);let B=Math.acos(d.dot(C,A));d.dot(C,g)<0&&(B=D.TWO_PI-B);let v=Math.acos(d.dot(S,A));d.dot(S,g)<0&&(v=D.TWO_PI-v);let P=B-v,N;d.equalsEpsilon(h,r.position,D.EPSILON2)?N=r.right:N=d.cross(h,r.position,T8);let L=d.cross(h,N,T8),p=d.dot(L,d.subtract(u,h,JT)),x=d.dot(L,d.subtract(f,h,JT)),T;p>0&&x>0?T=b-y:p>0&&x<=0?d.dot(r.position,h)>0?T=-y-b:T=y+b:T=y-b,r.rotateRight(P),r.rotateUp(T)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),A=d.cross(u,f,T8);if(h<1&&!d.equalsEpsilon(A,d.ZERO,D.EPSILON14)){let g=Math.acos(h);r.rotate(A,g)}}}var UEt=new d,GEt=new Ae,AIe=0;function PIe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=wIe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,BIe),h,A=o.cartesianToCartographic(s.position,GEt).height,g=Math.abs(AIe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:A<e._minimumPickingTerrainHeight)&&(h=tg(e,u,DIe));let _;if(l(h)&&(_=d.distance(f.origin,h),AIe=_),c){let C=CIe(e,f,A);l(_)?_=Math.min(_,C):_=C}l(_)||(_=A);let y=d.normalize(s.position,UEt);wJ(e,t,n,e.zoomFactor,_,d.dot(y,s.direction))}var RIe=new k,v8=new In,wP=new d,zEt=new d,MIe=new R,VEt=new R,NIe=new R,HEt=new Le,WEt=new J,DJ=new Ae,vJ=new d;function jEt(e,t,n){let o=e._scene.camera;if(!R.equals(o.transform,R.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,vJ);rf(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,DJ);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,qEt(e,t,n)):KEt(e,t,n)}var YEt=new Ae;function qEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,YEt).height;if(a-s-1<D.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=RIe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,v8),h,A=Ai.rayEllipsoid(f,i);if(l(A))h=In.getPoint(f,A.start,wP);else if(a>e._minimumTrackBallHeight){let E=Ai.grazingAltitudeLocation(f,i);if(!l(E))return;let I=i.cartesianToCartographic(E,DJ);I.height=0,h=i.cartographicToCartesian(I,wP)}else{e._looking=!0;let E=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,E),k.clone(t,e._tiltCenterMousePosition);return}let g=kt.eastNorthUpToFixedFrame(h,i,MIe),m=e._globe,_=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let y=R.clone(r.transform,NIe);r._setTransform(g),of(e,t,n,d.UNIT_Z),r._setTransform(y),e._globe=m,e._ellipsoid=_;let C=_.maximumRadius;e._rotateFactor=1/C,e._rotateRateRangeAdjustment=C}function KEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(k.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,wP);else{if(a=tg(e,t,wP),!l(a)){if(c=r.getPickRay(t,v8),u=Ai.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,DJ).height<=e._minimumTrackBallHeight){e._looking=!0;let x=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,x),k.clone(t,e._tiltCenterMousePosition)}return}a=In.getPoint(c,u.start,wP)}s&&(l(c)||(c=r.getPickRay(t,v8)),EIe(e,c,a,a)),k.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=RIe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,v8);let A=d.magnitude(a),g=d.fromElements(A,A,A,TJ),m=te.fromCartesian3(g,SJ);if(u=Ai.rayEllipsoid(c,m),!l(u))return;let _=d.magnitude(c.origin)>A?u.start:u.stop,y=In.getPoint(c,_,zEt),C=kt.eastNorthUpToFixedFrame(a,i,MIe),E=kt.eastNorthUpToFixedFrame(y,m,VEt),I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(r.transform,NIe);r._setTransform(E);let v=d.cross(y,r.positionWC,D8);if(d.dot(r.rightWC,v)<0){let p=n.startPosition.y-n.endPosition.y;(s&&p<0||!s&&p>0)&&(S=void 0);let x=r.constrainedAxis;r.constrainedAxis=void 0,of(e,t,n,S,!0,!1),r.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(r._setTransform(C),of(e,t,n,S,!1,!0),l(r.constrainedAxis)){let p=d.cross(r.direction,r.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,r.right)<0&&d.negate(p,p),d.cross(p,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(r.positionWC,D8);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(r.positionWC,L)){r._setTransform(E),r.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(r.position)>p&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(p),r.position));let x=d.angleBetween(L,r.position),T=d.cross(L,r.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,HEt),M=J.fromQuaternion(w,WEt);J.multiplyByVector(M,r.direction,r.direction),J.multiplyByVector(M,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(B)}}var XEt=new k,JEt=new k,pIe=new In,gIe=new In,ZEt=new d,$Et=new d;function rf(e,t,n,i){let r=e._scene.camera,s=XEt;s.x=n.startPosition.x,s.y=0;let a=JEt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,h,A;r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction);let g=d.dot(h,A);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction),g=d.dot(h,A),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=i??m,l(i)){let _=r.direction,y=d.negate(i,ZEt),C=d.equalsEpsilon(_,i,D.EPSILON2),E=d.equalsEpsilon(_,y,D.EPSILON2);if(!C&&!E){g=d.dot(_,i);let I=D.acosClamped(g);f>0&&f>I&&(f=I-D.EPSILON4),g=d.dot(_,y),I=D.acosClamped(g),f<0&&-f>I&&(f=-I+D.EPSILON4);let b=d.cross(i,_,$Et);r.look(b,f)}else(C&&f<0||E&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function e0t(e){bl(e,e.enableRotate,e.rotateEventTypes,NEt,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableTilt,e.tiltEventTypes,jEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableLook,e.lookEventTypes,rf)}var t0t=new R,n0t=new Ae;function PJ(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ie.SCENE2D||i===ie.MORPHING)return;let o=n.camera,r=n.ellipsoid??te.WGS84,s=n.mapProjection,a,c;R.equals(o.transform,R.IDENTITY)||(a=R.clone(o.transform,t0t),c=d.magnitude(o.position),o._setTransform(R.IDENTITY));let u=n0t;i===ie.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let A=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<A&&(t||Math.abs(m)<=.1)&&(u.height=A,i===ie.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}BP.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ie.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var i0t=new d,o0t=new d;BP.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;R.equals(t.transform,R.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??te.default):(this._globe=void 0,this._ellipsoid=te.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Yr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Yr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Yr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,i0t),c=d.clone(t.directionWC,o0t);if(i===ie.SCENE2D?nEt(this):i===ie.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,SEt(this)):i===ie.SCENE3D&&(this._horizontalRotationAxis=void 0,e0t(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);PJ(this,u)}this._aggregator.reset()};BP.prototype.isDestroyed=function(){return!1};BP.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var R8=BP;var M8=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var N8=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function ng(){this._sceneFramebuffer=new HT;let e=.125,t=new Array(6);t[0]=new So({fragmentShader:ef,textureScale:e,forcePowerOfTwo:!0,sampleMode:_d.LINEAR});let n=t[1]=new So({fragmentShader:N8,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new k,t[2]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new So({fragmentShader:ef,sampleMode:_d.LINEAR}),this._uCenter=new k,this._uRadius=void 0,t[5]=new So({fragmentShader:M8,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new tf({stages:t});let o=new qT(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}ng.prototype.get=function(e){return this._stages.get(e)};ng.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var r0t=new se,LIe=new k,s0t=new k,OIe=new R;function a0t(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=R.computeViewportTransformation(n,0,1,OIe),u=R.multiplyByPoint(r,o,r0t),f=kt.pointToGLWindowCoordinates(s,c,o,LIe);u.x+=D.SOLAR_RADIUS;let h=kt.pointToGLWindowCoordinates(a,c,u,u),A=k.magnitude(k.subtract(h,f,h))*30*2,g=s0t;g.x=A,g.y=A,e._uCenter=k.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,_=t.drawingBufferHeight,y=e._stages,C=y.get(0),E=C.outputTexture.width,I=C.outputTexture.height,b=new Xe;b.width=E,b.height=I,c=R.computeViewportTransformation(b,0,1,OIe),f=kt.pointToGLWindowCoordinates(s,c,o,LIe),g.x*=E/m,g.y*=I/_;let S=C.scissorRectangle;S.x=Math.max(f.x-g.x*.5,0),S.y=Math.max(f.y-g.y*.5,0),S.width=Math.min(g.x,m),S.height=Math.min(g.y,_);for(let B=1;B<4;++B)Xe.clone(S,y.get(B).scissorRectangle)}ng.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};ng.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),a0t(this,t,n),o};ng.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};ng.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};ng.prototype.isDestroyed=function(){return!1};ng.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var L8=ng;function FIe(){this._cachedShowFrustumsShaders={}}function c0t(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function l0t(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=We.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,A;for(;(A=h.exec(f))!==null;)r.indexOf(A[1])===-1&&r.push(A[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let u=c0t(i);return ln.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var DP=new G;function u0t(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=G.fromRandom()),t._debugColor):G.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(DP.red=t.debugOverlappingFrustums&1?1:0,DP.green=t.debugOverlappingFrustums&2?1:0,DP.blue=t.debugOverlappingFrustums&4?1:0,DP.alpha=1,DP):G.WHITE}),n}var f0t=new nt;FIe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=l0t(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=nt.shallowClone(t,f0t);r.shaderProgram=o,r.uniformMap=u0t(e,t),r.execute(e.context,n)};var O8=FIe;function _0(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Qn}_0.fromKeyframeNode=function(e,t,n,i){let o=new _0(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=d0t(e,s,n),o._orientedBoundingBox=m0t(e,r,n,o._orientedBoundingBox),o};function d0t(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=gt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var QIe=new d,h0t=new d;function m0t(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,QIe),h=d.divideComponents(d.subtract(f,e._paddingBefore,QIe),e.dimensions,h0t);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(_0.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});_0.prototype.hasProperty=function(e){return l(this._metadata[e])};_0.prototype.getNames=function(){return Object.keys(this._metadata)};_0.prototype.getProperty=function(e){return this._metadata[e]};var F8=_0;var Q8=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var k8=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var U8=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var G8=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var z8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var V8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var vP=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var H8=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var W8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var j8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var ZT=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var Y8=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var q8=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var K8=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var X8=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var J8=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var A0t={Z_UP:0,Y_UP:1},kh=Object.freeze(A0t);function p0t(e){let t=new I_;this.shaderBuilder=t;let n=e._customShader,i=wt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let A in o)if(o.hasOwnProperty(A)){let g=o[A];t.addUniform(g.type,A,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([U8]),e.provider.metadataOrder===kh.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,pe.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",X8,Q8,G8,J8]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([V8])),t.addFragmentLines([z8]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),a==="BOX"?t.addFragmentLines([Y8,H8,ZT]):a==="CYLINDER"?t.addFragmentLines([q8,vP,W8,ZT]):a==="ELLIPSOID"&&t.addFragmentLines([K8,vP,j8,ZT]),t.addFragmentLines([k8]);let c=e._shape,u=c.shaderDefines;for(let A in u)if(u.hasOwnProperty(A)){let g=u[A];l(g)&&(g=g===!0?void 0:g,t.addDefine(A,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var Z8=p0t;function g0t(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=$8(o[p]),w=`PropertyStatistics_${x}`,M=`PropertyStatistics_${x}`;n.addStruct(w,M,pe.FRAGMENT),n.addStructField(w,T,"min"),n.addStructField(w,T,"max")}let f="MetadataStatistics",h="MetadataStatistics",A="metadataStatistics";n.addStruct(f,h,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=`PropertyStatistics_${x}`,w=x;n.addStructField(f,T,w)}let g="Metadata",m="Metadata",_="metadata";n.addStruct(g,m,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(g,x,i[p])}let y="Attributes",C="Attributes",E="attributes";n.addStruct(y,C,pe.FRAGMENT),n.addStructField(y,"vec3","positionEC"),n.addStructField(y,"vec3","normalEC");let I="Voxel",b="Voxel",S="voxel";n.addStruct(I,b,pe.FRAGMENT),n.addStructField(I,"vec3","viewDirUv"),n.addStructField(I,"float","travelDistance"),n.addStructField(I,"int","stepCount"),n.addStructField(I,"int","tileIndex"),n.addStructField(I,"int","sampleIndex"),n.addStructField(I,"float","distanceToDepthBuffer");let B="FragmentInput";n.addStruct(B,"FragmentInput",pe.FRAGMENT),n.addStructField(B,h,A),n.addStructField(B,m,_),n.addStructField(B,C,E),n.addStructField(B,b,S);let P="Properties",N="Properties",L="properties";n.addStruct(P,N,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(P,x,i[p])}{let p="clearProperties";n.addFunction(p,`${N} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=$8(o[x],r[x]);n.addFunctionLines(p,[`${L}.${i[x]} = ${T}(0.0);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="sumProperties";n.addFunction(p,`${N} sumProperties(${N} propertiesA, ${N} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = propertiesA.${T} + propertiesB.${T};`])}n.addFunctionLines(p,[`return ${L};`])}{let p="scaleProperties";n.addFunction(p,`${N} scaleProperties(${N} ${L}, float scale)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} scaledProperties = ${L};`]);for(let x=0;x<c;x++)n.addFunctionLines(p,[`scaledProperties.${i[x]} *= scale;`]);n.addFunctionLines(p,["return scaledProperties;"])}{let p="mixProperties";n.addFunction(p,`${N} mixProperties(${N} propertiesA, ${N} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = mix(propertiesA.${T}, propertiesB.${T}, mixFactor);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="copyPropertiesToMetadata";n.addFunction(p,`void copyPropertiesToMetadata(in ${N} ${L}, inout ${m} ${_})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${_}.${T} = ${L}.${T};`])}}if(u){let p="setStatistics";n.addFunction(p,`void setStatistics(inout ${h} ${A})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x],w=o[x],M=gt.getComponentCount(w);for(let O=0;O<M;O++){let U=y0t(w,O),Q=s[x][O],z=a[x][O];!l(Q)||!l(z)||n.addFunctionLines(p,[`${A}.${T}.min${U} = ${kIe(Q)};`,`${A}.${T}.max${U} = ${kIe(z)};`])}}}{let p="getPropertiesFromMegatextureAtUv";n.addFunction(p,`${N} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=o[x],w=r[x],M=_0t(T,w);n.addFunctionLines(p,[`properties.${i[x]} = texture(u_megatextureTextures[${x}], texcoord)${M};`])}n.addFunctionLines(p,[`return ${L};`])}}function $8(e){if(e===gt.SCALAR)return"float";if(e===gt.VEC2)return"vec2";if(e===gt.VEC3)return"vec3";if(e===gt.VEC4)return"vec4"}function _0t(e){if(e===gt.SCALAR)return".r";if(e===gt.VEC2)return".ra";if(e===gt.VEC3)return".rgb";if(e===gt.VEC4)return""}function kIe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function y0t(e,t){return e===gt.SCALAR?"":`[${t}]`}var e4=g0t;function C0t(e,t){let n=new Z8(e);e4(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let C="getClippingPlane",E=Dy(o,t),I=0,b=E.indexOf(")")+1,S=E.indexOf("{",b)+1,B=E.indexOf("}",S),v=E.slice(I,b),P=E.slice(S,B);i.addFunction(C,v,pe.FRAGMENT),i.addFunctionLines(C,[P])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}),A=t.getViewportQuadVertexArray(),g=e._depthTest,m=new nt({vertexArray:A,primitiveType:Me.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Be.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),_=nt.shallowClone(m,new nt);_.shaderProgram=u,_.pickOnly=!0;let y=nt.shallowClone(m,new nt);if(y.shaderProgram=f,y.pickOnly=!0,l(e._drawCommand)){let C=e._drawCommand;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPick)){let C=e._drawCommandPick;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let C=e._drawCommandPickVoxel;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=_,e._drawCommandPickVoxel=y}var t4=C0t;var E0t={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},PP=Object.freeze(E0t);function I0t(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var n4=I0t;function $T(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}$T.prototype.getTexture=function(e){return this._textures[e]};function x0t(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}$T.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):x0t(this,e,t)};function b0t(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?i4(o,r,n):T0t(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function i4(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?GIe(e,n):new Nt({context:n,source:t,sampler:o});return UIe(o)&&r.generateMipmap(),r}function T0t(e,t,n){let{typedArray:i,sampler:o}=e,r=UIe(o),s=o.wrapS===Tn.REPEAT||o.wrapS===Tn.MIRRORED_REPEAT||o.wrapT===Tn.REPEAT||o.wrapT===Tn.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(D.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===He.UNSIGNED_BYTE){let h=n4(i,a,c),A=GC(h);return i4({sampler:o},A,n)}}else{let h=GC(t);return i4(e,h,n)}else return i4(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),GIe(e,n)}function UIe(e){return[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function GIe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Nt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}$T.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];b0t(this,o,t)}n.length=0};$T.prototype.isDestroyed=function(){return!1};$T.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var o4=$T;function RP(e){e=e??V.EMPTY_OBJECT,this.mode=e.mode??p_.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??V.EMPTY_OBJECT,this.varyings=e.varyings??V.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??tE.INHERIT,this._textureManager=new o4,this._defaultTexture=void 0,this.uniformMap=S0t(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},D0t(this),v0t(this)}function S0t(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===PP.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=w0t(e,i)):n[i]=B0t(e,i)}return n}function w0t(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function B0t(e,t){return function(){return e.uniforms[t].value}}function y0(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function D0t(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,y0(r,t,o),o=e.usedVariablesVertex.featureIdSet,y0(r,n,o),o=e.usedVariablesVertex.metadataSet,y0(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,y0(s,t,o),o=e.usedVariablesFragment.featureIdSet,y0(s,n,o),o=e.usedVariablesFragment.metadataSet,y0(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;y0(s,a,c)}}function zIe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function zc(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${zIe(t)} is not available in the ${i} shader. Did you mean ${zIe(n)} instead?`;throw new me(o)}}function v0t(e){let t=e.usedVariablesVertex.attributeSet;zc(t,"position","positionMC","vertex"),zc(t,"normal","normalMC","vertex"),zc(t,"tangent","tangentMC","vertex"),zc(t,"bitangent","bitangentMC","vertex"),zc(t,"positionWC","positionMC","vertex"),zc(t,"positionEC","positionMC","vertex"),zc(t,"normalEC","normalMC","vertex"),zc(t,"tangentEC","tangentMC","vertex"),zc(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;zc(n,"position","positionEC","fragment"),zc(n,"normal","normalEC","fragment"),zc(n,"tangent","tangentEC","fragment"),zc(n,"bitangent","bitangentEC","fragment"),zc(n,"normalMC","normalEC","fragment"),zc(n,"tangentMC","tangentEC","fragment"),zc(n,"bitangentMC","bitangentEC","fragment")}RP.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===PP.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};RP.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};RP.prototype.isDestroyed=function(){return!1};RP.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var eS=RP;function ig(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(ig.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});ig.fromMetadataArray=function(e){return new ig({metadata:e})};ig.fromGltf=async function(e){let t=new Ff({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new ig({loader:t})};ig.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=P0t(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function P0t(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,A=e.find(y=>y.name===h);if(!l(A))continue;let g=zt.toComponentDatatype(s[f]),m=gt.getComponentCount(r[f]),_=A.count*m;u[f]=q.createArrayBufferView(g,A.typedArray.buffer,A.typedArray.byteOffset+A.byteOffset,_)}return u}ig.prototype.isDestroyed=function(){return!1};ig.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var tS=ig;function _A(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=_A.DefaultMinBounds.clone(),this._maxBounds=_A.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var R0t=new d,RJ=new d,M0t=new J,N0t=new d,L0t=new d,O0t=new d,F0t=new d,VIe=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R);_A.prototype.update=function(e,t,n,i,o){i=i??t.clone(N0t),o=o??n.clone(L0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let r=d.clamp(t,i,o,O0t),s=d.clamp(n,i,o,F0t),a=R.getScale(e,RJ);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=NJ(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:u}=this;for(let g in u)u.hasOwnProperty(g)&&(u[g]=void 0);let f=0;u.BOX_INTERSECTION_INDEX=f,f+=1,c.renderMinBounds=R.multiplyByPoint(VIe,r,c.renderMinBounds),c.renderMaxBounds=R.multiplyByPoint(VIe,s,c.renderMaxBounds),u.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,A=n;return c.boxUvToShapeUvScale=d.fromElements(2/(h.x===A.x?1:A.x-h.x),2/(h.y===A.y?1:A.y-h.y),2/(h.z===A.z?1:A.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=d.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=f,!0};var r4=new d,MJ=new d;_A.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,a*t),D.lerp(r.y,s.y,a*n),D.lerp(r.z,s.z,a*i),r4),u=d.fromElements(D.lerp(r.x,s.x,a*(t+1)),D.lerp(r.y,s.y,a*(n+1)),D.lerp(r.z,s.z,a*(i+1)),MJ);return NJ(c,u,this.shapeTransform,o)};var HIe=new d;_A.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,HIe),s=d.multiplyByScalar(r,o,HIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,r4),o,r4),c=d.add(a,s,MJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),r4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),MJ);return NJ(h,A,this.shapeTransform,i)};_A.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));_A.DefaultMaxBounds=Object.freeze(new d(1,1,1));function NJ(e,t,n,i){let o=_A.DefaultMinBounds,r=_A.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=R.getTranslation(n,i.center),i.halfAxes=R.getMatrix3(n,i.halfAxes);else{let a=R.getScale(n,RJ),c=d.midpoint(e,t,R0t);i.center=R.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),RJ);let u=R.getRotation(n,M0t);i.halfAxes=J.setScale(u,a,i.halfAxes)}return i}var nS=_A;function og(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=og.DefaultMinBounds.clone(),this._maxBounds=og.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new k,cylinderRenderAngleMinMax:new k,cylinderRenderHeightMinMax:new k,cylinderUvToShapeUvRadius:new k,cylinderUvToShapeUvAngle:new k,cylinderUvToShapeUvHeight:new k,cylinderShapeUvAngleMinMax:new k,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var YIe=new d,Q0t=new d,k0t=new d,U0t=new d,G0t=new d;og.prototype.update=function(e,t,n,i,o){i=i??t.clone(Q0t),o=o??n.clone(k0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=og,a=s.y-r.y,c=.5*a,u=D.EPSILON10,f=D.EPSILON3,h=D.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=D.negativePiToPi(t.y),n.y=D.negativePiToPi(n.y),i.y=D.negativePiToPi(i.y),o.y=D.negativePiToPi(o.y);let A=d.maximumByComponent(t,i,U0t),g=d.minimumByComponent(n,o,G0t),m=R.getScale(e,YIe);if(g.x===0||A.x>g.x||A.z>g.z||D.equalsEpsilon(m.x,0,void 0,u)||D.equalsEpsilon(m.y,0,void 0,u)||D.equalsEpsilon(m.z,0,void 0,u))return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=FJ(A,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let _=t.x===r.x&&n.x===s.x,y=n.y<t.y,C=n.y-t.y+y*a,E=C>c+h&&C<a-h,I=C<c-h,b=C>=c-h&&C<=c+h,S=E||I||b,B=D.equalsEpsilon(t.y,r.y,void 0,f),v=D.equalsEpsilon(n.y,s.y,void 0,f),P=t.z===r.z&&n.z===s.z,N=A.x===r.x,L=g.y<A.y,p=g.y-A.y+L*a,x=p>=c-h&&p<a-h,T=p>h&&p<c-h,w=p<=h,M=x||T||w,{shaderUniforms:O,shaderDefines:U}=this;for(let z in U)U.hasOwnProperty(z)&&(U[z]=void 0);let Q=0;if(U.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=Q,Q+=1,N||(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,U.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=Q,Q+=1),O.cylinderRenderRadiusMinMax=k.fromElements(A.x,g.x,O.cylinderRenderRadiusMinMax),A.x===g.x&&(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!_){U.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let z=n.x-t.x,F=0,H=1;z!==0&&(F=1/z,H=-t.x/z),O.cylinderUvToShapeUvRadius=k.fromElements(F,H,O.cylinderUvToShapeUvRadius)}if(!P){U.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let z=n.z-t.z,F=0,H=1;z!==0&&(F=2/z,H=-(t.z+1)/z),O.cylinderUvToShapeUvHeight=k.fromElements(F,H,O.cylinderUvToShapeUvHeight)}if(O.cylinderRenderHeightMinMax=k.fromElements(A.z,g.z,O.cylinderRenderHeightMinMax),y&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),M&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,U.CYLINDER_INTERSECTION_INDEX_ANGLE=Q,x?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,Q+=1):T?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,Q+=2):w&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,Q+=2),O.cylinderRenderAngleMinMax=k.fromElements(A.y,g.y,O.cylinderRenderAngleMinMax)),S){U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,B&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),v&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let z=(t.y-r.y)/a,F=(n.y-r.y)/a,H=1-C/a;if(O.cylinderShapeUvAngleMinMax=k.fromElements(z,F,O.cylinderShapeUvAngleMinMax),O.cylinderShapeUvAngleRangeZeroMid=(F+.5*H)%1,C<=h)O.cylinderUvToShapeUvAngle=k.fromElements(0,1,O.cylinderUvToShapeUvAngle);else{let W=a/C,Z=-(t.y-r.y)/C;O.cylinderUvToShapeUvAngle=k.fromElements(W,Z,O.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=Q,!0};var s4=new d,OJ=new d;og.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,t*a),D.lerp(r.y,s.y,n*a),D.lerp(r.z,s.z,i*a),s4),u=d.fromElements(D.lerp(r.x,s.x,(t+1)*a),D.lerp(r.y,s.y,(n+1)*a),D.lerp(r.z,s.z,(i+1)*a),OJ);return FJ(c,u,this.shapeTransform,o)};var WIe=new d;og.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,WIe),s=d.multiplyByScalar(r,o,WIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,s4),o,s4),c=d.add(a,s,OJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),s4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),OJ);return FJ(h,A,this.shapeTransform,i)};og.DefaultMinBounds=Object.freeze(new d(0,-D.PI,-1));og.DefaultMaxBounds=Object.freeze(new d(1,+D.PI,1));var z0t=5,V0t=new Array(z0t),H0t=new d,W0t=new J,j0t=new R,Y0t=new R,q0t=new R,LJ=new R,K0t=new d,X0t=new d,J0t=new d,qIe=new Array(8);for(let e=0;e<8;e++)qIe[e]=new d;function jIe(e,t,n){return Math.abs(se.dot(e,t))<n}function Z0t(e){let t=R.getColumn(e,0,K0t),n=R.getColumn(e,1,X0t),i=R.getColumn(e,2,J0t),o=D.EPSILON4;return jIe(t,n,o)&&jIe(n,i,o)}function $0t(e,t){let n=qIe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)R.multiplyByPoint(e,n[i],n[i]);return Qn.fromPoints(n,t)}function FJ(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+D.TWO_PI:t.y,c=e.z,u=t.z,f=a-s,h=s+f*.5,A=V0t,g=0;A[g++]=s,A[g++]=a,A[g++]=h,f>D.PI&&(A[g++]=h-D.PI_OVER_TWO,A[g++]=h+D.PI_OVER_TWO);let m=Number.POSITIVE_INFINITY,_=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(let O=0;O<g;++O){let U=A[O]-h,Q=Math.cos(U),z=Math.sin(U),F=Q*o,H=z*o,W=Q*r,Z=z*r;m=Math.min(m,F,W),_=Math.min(_,H,Z),y=Math.max(y,F,W),C=Math.max(C,H,Z)}let E=y-m,I=C-_,b=u-c,S=(m+y)*.5,B=(_+C)*.5,v=(c+u)*.5,P=d.fromElements(S,B,v,H0t),N=J.fromRotationZ(h,W0t),L=d.fromElements(E,I,b,YIe),p=R.fromScale(L,q0t),x=R.fromRotation(N,Y0t),T=R.fromTranslation(P,j0t),w=R.multiplyTransformation(x,R.multiplyTransformation(T,p,LJ),LJ),M=R.multiplyTransformation(n,w,LJ);return Z0t(M)?Qn.fromTransformation(M,i):$0t(M,i)}var iS=og;function rg(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._rectangle=new ae,this._minimumHeight=rg.DefaultMinBounds.z,this._maximumHeight=rg.DefaultMaxBounds.z,this._ellipsoid=new te,this._translation=new d,this._rotation=new J,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new k,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new k,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new k,ellipsoidUvToShapeUvLatitude:new k,ellipsoidRenderLatitudeSinMinMax:new k,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new k},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var eIt=new d,tIt=new d,nIt=new d,iIt=new d,oIt=new d,rIt=new d,sIt=new d,aIt=new d,cIt=new J,KIe=new d,XIe=new d,lIt=new ae;rg.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=rg;i=i??r,o=o??s;let a=D.EPSILON10,c=D.EPSILON3,u=D.EPSILON10,f=D.EPSILON10,h=D.EPSILON3,A=R.getScale(e,aIt),g=d.clone(r,eIt);g.z=-d.minimumComponent(A);let m=d.clamp(t,g,s,tIt),_=d.clamp(n,g,s,nIt),y=d.clamp(i,g,s,iIt),C=d.clamp(o,g,s,oIt),E=d.maximumByComponent(m,y,rIt),I=d.minimumByComponent(_,C,sIt),b=d.add(A,d.fromElements(_.z,_.z,_.z,KIe),KIe),S=d.maximumComponent(b),B=d.add(A,d.fromElements(I.z,I.z,I.z,XIe),XIe);if(E.y>I.y||E.y===s.y||I.y===r.y||E.z>I.z||D.equalsEpsilon(B,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,_.x,_.y),this._translation=R.getTranslation(e,this._translation),this._rotation=R.getRotation(e,this._rotation),this._ellipsoid=te.fromCartesian3(A,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=_.z;let v=ae.fromRadians(E.x,E.y,I.x,I.y,lIt);this.orientedBoundingBox=QJ(v,E.z,I.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=R.fromRotationTranslation(J.setScale(this._rotation,b,cIt),this._translation,this.shapeTransform),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let P=s.x-r.x,N=.5*P,L=I.x<E.x,p=I.x-E.x+L*P,x=p<=u,T=p>=N-u&&p<P-u,w=p>u&&p<N-u,M=x||T||w,O=_.x<m.x,U=_.x-m.x+O*P,Q=U>N+u&&U<P-u,z=U>=N-u&&U<=N+u,F=U<N-u,H=Q||z||F,W=I.y<-h,Z=I.y>=-h&&I.y<=+h,Y=I.y>+h&&I.y<s.y-f,$=W||Z||Y,X=E.y>r.y+f&&E.y<-h,he=E.y>=-h&&E.y<=+h,ge=E.y>+h,fe=X||he||ge,ye=$||fe,Ie=_.y-m.y,ve=_.y<-h,Te=_.y>=-h&&_.y<=+h,ke=_.y>+h&&_.y<s.y-f,Ge=ve||Te||ke,qe=m.y>r.y+f&&m.y<-h,tt=m.y>=-h&&m.y<=+h,$t=m.y>+h,tn=Ge||(qe||tt||$t),{shaderUniforms:Wt,shaderDefines:vt}=this;for(let Ct in vt)vt.hasOwnProperty(Ct)&&(vt[Ct]=void 0);Wt.ellipsoidRadiiUv=d.divideByScalar(b,S,Wt.ellipsoidRadiiUv);let{x:bi,z:di}=Wt.ellipsoidRadiiUv,Ot=di/bi;Wt.eccentricitySquared=1-Ot*Ot,Wt.evoluteScale=k.fromElements((bi*bi-di*di)/bi,(di*di-bi*bi)/di,Wt.evoluteScale),Wt.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(Wt.ellipsoidRadiiUv,Wt.ellipsoidRadiiUv,Wt.ellipsoidInverseRadiiSquaredUv),Wt.ellipsoidInverseRadiiSquaredUv);let Tt=0;vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Tt,Tt+=1,vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Tt,Tt+=1,Wt.clipMinMaxHeight=k.fromElements((E.z-_.z)/S,(I.z-_.z)/S,Wt.clipMinMaxHeight);let ii=(_.z-m.z)/S;if(Wt.ellipsoidInverseHeightDifferenceUv=1/ii,m.z===_.z&&(Wt.ellipsoidInverseHeightDifferenceUv=0),M&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Tt,T?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Tt+=1):w?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Tt+=2):x&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Tt+=2),Wt.ellipsoidRenderLongitudeMinMax=k.fromElements(E.x,I.x,Wt.ellipsoidRenderLongitudeMinMax)),H)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,_.x<m.x&&(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),U<=u)Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLongitude);else{let Ro=P/U,Qo=-(m.x-r.x)/U;Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLongitude)}if(M){let Ct=D.equalsEpsilon(E.x,r.x,void 0,c),Ro=D.equalsEpsilon(I.x,s.x,void 0,c);Ct&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Ro&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Qo=(m.x-r.x)/P,ya=(_.x-r.x)/P,mr=(I.x-r.x)/P,Tr=1-p/P,Oe=(mr+.5*Tr)%1;Wt.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Qo,ya,Oe,Wt.ellipsoidShapeUvLongitudeMinMaxMid)}if(ye&&(fe&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Tt,X?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Tt+=1):he?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Tt+=1):ge&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Tt+=2)),$&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Tt,W?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Tt+=2):Z?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Tt+=1):Y&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Tt+=1)),Wt.ellipsoidRenderLatitudeSinMinMax=k.fromElements(Math.sin(E.y),Math.sin(I.y),Wt.ellipsoidRenderLatitudeSinMinMax)),tn)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,Ie<f)Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLatitude);else{let Ro=(s.y-r.y)/Ie,Qo=(r.y-m.y)/Ie;Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Tt,!0};var $Ie=new ae;rg.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,A=ae.subsection(this._rectangle,s,c,a,u,$Ie),g=D.lerp(this._minimumHeight,this._maximumHeight,f),m=D.lerp(this._minimumHeight,this._maximumHeight,h);return QJ(A,g,m,this._ellipsoid,this._translation,this._rotation,o)};var JIe=new d,ZIe=new d,uIt=new d;rg.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,JIe),s=d.multiplyByScalar(r,o,JIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,ZIe),o,ZIe),c=d.add(a,s,uIt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,$Ie),f=D.lerp(this._minimumHeight,this._maximumHeight,a.z),h=D.lerp(this._minimumHeight,this._maximumHeight,c.z);return QJ(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function QJ(e,t,n,i,o,r,s){return s=Qn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=J.multiply(s.halfAxes,r,s.halfAxes),s}rg.DefaultMinBounds=Object.freeze(new d(-D.PI,-D.PI_OVER_TWO,-te.WGS84.minimumRadius));rg.DefaultMaxBounds=Object.freeze(new d(D.PI,D.PI_OVER_TWO,10*te.WGS84.maximumRadius));var oS=rg;var sf={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};sf.getMinBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMinBounds;case sf.ELLIPSOID:return oS.DefaultMinBounds;case sf.CYLINDER:return iS.DefaultMinBounds}};sf.getMaxBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMaxBounds;case sf.ELLIPSOID:return oS.DefaultMaxBounds;case sf.CYLINDER:return iS.DefaultMaxBounds}};sf.getShapeConstructor=function(e){switch(e){case sf.BOX:return nS;case sf.ELLIPSOID:return oS;case sf.CYLINDER:return iS}};var lc=Object.freeze(sf);function Uh(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Uh.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Uh.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Uh({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Uh.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Uh.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)exe(this,t)};Uh.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,exe(this,i),t};Uh.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],txe(this,0)),this._array[e-1]=void 0,t};Uh.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=kJ(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&txe(this,n)}return this._array[e-1]=void 0,t};Uh.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Uh.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[kJ(this,1,2)?1:2]};function a4(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function MP(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function kJ(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function exe(e,t){if(t===0)return;let n=Math.floor(D.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=MP(e,t,i);for(o!==n&&(a4(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(MP(e,t,r)!==o)break;a4(e,t,r),t=r}}function txe(e,t){let n=e._length,i=Math.floor(D.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){MP(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;MP(e,f,r)===i&&(r=f)}}if(MP(e,r,t)===i&&(a4(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);kJ(e,r,a)===i&&a4(e,r,a)}t=r}}var rS=Uh;var UJ=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function NP(e,t){this.spatialNode=e,this.keyframe=t,this.state=UJ.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}NP.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=UJ.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};NP.priorityComparator=function(e,t){return e.priority-t.priority};NP.searchComparator=function(e,t){return e.keyframe-t.keyframe};NP.LoadState=UJ;var Po=NP;function Uy(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32),i===zt.FLOAT32&&!e.floatingPointTexture)throw new ce("Floating point texture not supported");let s=fIt(i),a=dIt(n,e.webgl2),c=zt.getSizeInBytes(i),u=hIt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),A=f*t.x,g=h*t.y,m=Math.floor(u/A),_=Math.floor(u/g);if(m===0||_===0)throw new ce("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*_,this.regionCountPerMegatexture=new k(m,_),this.voxelCountPerRegion=new k(A,g),this.sliceCountPerRegion=new k(f,h),this.voxelSizeUv=new k(1/u,1/u),this.sliceSizeUv=new k(t.x/u,t.y/u),this.regionSizeUv=new k(A/u,g/u),this.texture=new Nt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});let y=zt.toComponentDatatype(i);this.tileVoxelDataTemp=q.createTypedArray(y,A*g*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new mIt(C);for(let C=0;C<this.maximumTileCount;C++){let E=this.nodes[C];E.previousNode=C>0?this.nodes[C-1]:void 0,E.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function fIt(e){if(e===zt.FLOAT32||e===zt.FLOAT64)return He.FLOAT;if(e===zt.UINT8)return He.UNSIGNED_BYTE}function dIt(e,t){if(e===1)return t?et.RED:et.LUMINANCE;if(e===2)return t?et.RG:et.LUMINANCE_ALPHA;if(e===3)return et.RGB;if(e===4)return et.RGBA}function hIt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(qt.maximumTextureSize,D.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function mIt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}Uy.prototype.add=function(e){if(this.isFull())throw new me("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};Uy.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new me("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};Uy.prototype.isFull=function(){return this.emptyList===void 0};Uy.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32);let o=zt.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=D.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let A=Math.floor(f/c),g=Math.floor(f/u);if(A*g>=e)break;f*=2}return f*f*n*o};Uy.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,_=Math.floor(g/r.x)*o.y;for(let y=0;y<o.y;y++){let C=AIt(o,y,g),E=(_+y)*s.x+m;for(let I=0;I<o.x;I++){let b=C+I,S=E+I;for(let B=0;B<a;B++)i[S*a+B]=n[b*a+B]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,A={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(A)};function AIt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}Uy.prototype.isDestroyed=function(){return!1};Uy.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var LP=Uy;function xd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Qn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var pIt=new d;xd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=J.getScale(this.orientedBoundingBox.halfAxes,pIt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};xd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,A=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=A.map(([g,m,_,y])=>new xd(g,m,_,y,this,e,this.dimensions))};xd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};xd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,D.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var nxe={keyframe:0};function OP(e,t){return nxe.keyframe=e,qo(t,nxe,Po.searchComparator)}xd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let A=gIt(i,h),g=h[A],m=o===i||i<g.keyframe?A:Math.min(A+1,h.length-1),_=h[m],y=i-g.keyframe,C=ixe(n-t.level,y);C<a&&(a=C,r=g);let E=_.keyframe-o,I=ixe(n-t.level,E);if(I<c&&(c=I,s=_),y===0&&E===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:D.clamp((e-u)/(f-u),0,1)};function gIt(e,t){let n=OP(e,t);return n<0?D.clamp(~n-1,0,t.length-1):n}function ixe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}xd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};xd.prototype.createKeyframeNode=function(e){let t=OP(e,this.keyframeNodes);if(t<0){t=~t;let n=new Po(this,e);this.keyframeNodes.splice(t,0,n)}};xd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=OP(n,this.keyframeNodes);if(i<0)throw new me("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=OP(n,this.renderableKeyframeNodes);if(o<0)throw new me("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};xd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new me("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=OP(e.keyframe,i);if(o>=0)throw new me("Keyframe already renderable");o=~o,i.splice(o,0,e)};xd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var c4=xd;function Gy(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===kh.Y_UP){let I=h.y;h.y=h.z,h.z=I}!l(i)&&l(o.maximumTileCount)&&(i=vIt(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let I=0;I<c.length;I++){let b=c[I],S=gt.getComponentCount(b),B=u[I];this.megatextures[I]=new LP(t,h,S,B,i),this.textureMemoryByteLength+=this.megatextures[I].textureMemoryByteLength}let A=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new c4(0,0,0,0,void 0,g,r),this._priorityQueue=new rS({maximumLength:A,comparator:Po.priorityComparator}),this._highPriorityKeyframeNodes=new Array(A),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(A),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,GJ(m,1,n-2,0);let _=9,y=2048,C=Math.floor(y/_),E=Math.ceil(A/C);this.internalNodeTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:y,height:E,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=C,this.internalNodeTexelSizeUv=new k(1/y,1/E),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new k}Gy.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function GJ(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,GJ(e,t,o-1,i+1),GJ(e,o+1,n,i+1)}Gy.simultaneousRequestCountMaximum=50;Gy.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let A=h>=2;if(A&&!l(this.leafNodeTexture)){let I=Math.floor(512),b=Math.ceil(s/I);this.leafNodeTexture=new Nt({context:r,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:1024,height:b,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=k.fromElements(1/1024,1/b,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=I}else!A&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=D.clamp(t,0,a-1),n&&oxe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Oi();CIt(this,e),EIt(this,e);let m=Oi();SIt(this,h,c);let _=Oi(),y=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||y){let C=m-g,E=_-m,I=_-g;TIt(this,e,C,E,I)}};Gy.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};Gy.prototype.isDestroyed=function(){return!1};Gy.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function oxe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];oxe(e,i)}}function _It(e,t){if(e._simultaneousRequestCount>=Gy.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?Po.LoadState.PROCESSING:Po.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=Po.LoadState.RECEIVING,u.then(s).catch(a))}function yIt(e){return e/(1+e)}function CIt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),rxe(e.rootNode,zs.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function EIt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(IIt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===Po.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===Po.LoadState.UNLOADED&&_It(e,f),f.state===Po.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!xIt(h.metadata,e)){f.content=void 0,f.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let A=0;if(n.isFull()){A=i-1-a,a++;let g=o[A];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else A=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=Po.LoadState.LOADED,o[A]=f,e._primitive.tileLoad.raiseEvent()}}}function IIt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function xIt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],A=f*s;if(h.length!==A)return!1}return!0}function rxe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===zs.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let A=n._primitive,g=A._shape,m=A.screenSpaceError,_=n._priorityQueue,y=n._keyframeCount,C=D.clamp(Math.floor(n._keyframeLocation),0,y-2),E=C+1;if(y===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==y)for(let v=0;v<y;v++)e.createKeyframeNode(v);let{screenSpaceError:I,keyframeNodes:b}=e,S=yIt(I),B=!1;for(let v=0;v<b.length;v++){let P=b[v];P.priority=10*S+bIt(C,P.keyframe,E,n),P.state!==Po.LoadState.UNAVAILABLE&&P.state!==Po.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&_.insert(P),P.state===Po.LoadState.LOADED&&(B=!0)}if(I<m||!B){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let v=0;v<8;v++){let P=e.children[v];rxe(P,t,n,i)}}function bIt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return D.lerp(a,s,.15+.85*s)}function TIt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Po.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let B=0;B<a;B++){let v=new Array(r).fill(0);c[B]=v,u[B]=0}function h(B){let v=B.keyframeNodes;for(let P=0;P<v.length;P++){let N=v[P],L=N.keyframe,p=N.state;c[p][L]+=1,u[p]+=1,f++}if(l(B.children))for(let P=0;P<8;P++){let N=B.children[P];h(N)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[Po.LoadState.LOADED],e._primitive.statistics.visited=f;let A=u[Po.LoadState.RECEIVING],g=u[Po.LoadState.PROCESSING],m=A!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(A,g),!0}),e._primitive.statistics.numberOfPendingRequests=A,e._primitive.statistics.numberOfTilesProcessing=g,m&&(A===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let y=`KEYFRAMES: ${c[Po.LoadState.LOADED]}`,C=`UNLOADED: ${u[Po.LoadState.UNLOADED]} | RECEIVING: ${u[Po.LoadState.RECEIVING]} | PROCESSING: ${u[Po.LoadState.PROCESSING]} | LOADED: ${u[Po.LoadState.LOADED]} | FAILED: ${u[Po.LoadState.FAILED]} | UNAVAILABLE: ${u[Po.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,E=Math.round(n*100)/100,I=Math.round(i*100)/100,b=Math.round(o*100)/100,S=`LOAD: ${E} | OCT: ${I} | ALL: ${b}`;console.log(`${y} || ${C} || ${S}`)}var l4={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function SIt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,_,y,C){let E=!1;if(l(g.children))for(let I=0;I<8;I++){let b=g.children[I];b.computeSurroundingRenderableKeyframeNodes(o),b.isRenderable(r)&&(E=!0)}if(E){u[C]=l4.INTERNAL<<16|m,u[_]=y,a++,y=m,C=y*9+1;for(let I=0;I<8;I++){let b=g.children[I];m=a,_=m*9+0,h(b,m,_,y,C+I)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let I=c*5,b=g.renderableKeyframeNodePrevious,S=g.level-b.spatialNode.level,B=b.spatialNode.parent,v=l(B)?B.renderableKeyframeNodePrevious:b,P=wIt(g,i,n),N=S,L=1,p=b.megatextureIndex,x=v.megatextureIndex;f[I+0]=P,f[I+1]=N,f[I+2]=L,f[I+3]=p,f[I+4]=x,u[C]=l4.LEAF<<16|c}else{let I=g.renderableKeyframeNodePrevious,S=g.level-I.spatialNode.level===0?l4.LEAF:l4.PACKED_LEAF_FROM_PARENT;u[C]=S<<16|I.megatextureIndex}c++}}let A=e.rootNode;A.computeSurroundingRenderableKeyframeNodes(o),A.isRenderable(r)&&h(A,0,0,0,0),BIt(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&DIt(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function wIt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return D.clamp(s,0,1)}function BIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let A=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=A>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function DIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let A=0;A<s;A++){let g=e[A*r+0],m=e[A*r+1],_=e[A*r+2],y=e[A*r+3],C=e[A*r+4],E=D.clamp(Math.floor(65536*g),0,65535);u[A*8+0]=E>>>0&255,u[A*8+1]=E>>>8&255,u[A*8+2]=m&255,u[A*8+3]=_&255,u[A*8+4]=y>>>0&255,u[A*8+5]=y>>>8&255,u[A*8+6]=C>>>0&255,u[A*8+7]=C>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function vIt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=gt.getComponentCount(a);o+=LP.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var u4=Gy;function yA(e){e=e??V.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??yA.DefaultProvider,this._traversal=void 0,this._statistics=new Um,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._exaggeratedModelMatrix=R.clone(this._modelMatrix),this._compoundModelMatrix=new R,this._compoundModelMatrixOld=new R,this._customShader=e.customShader??yA.DefaultCustomShader,this._customShaderCompilationEvent=new _e,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new R,this._transformDirectionWorldToUv=new J,this._transformPositionUvToWorld=new R,this._transformDirectionWorldToLocal=new J,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Fm,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new k,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new k,megatextureTextures:[],megatextureSliceDimensions:new k,megatextureTileDimensions:new k,megatextureVoxelSizeUv:new k,megatextureSliceSizeUv:new k,megatextureTileSizeUv:new k,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new R,transformPositionUvToView:new R,transformDirectionViewToLocal:new J,cameraPositionUv:new d,cameraDirectionUv:new d,ndcSpaceAxisAlignedBoundingBox:new se,clippingPlanesTexture:void 0,clippingPlanesMatrix:new R,stepSize:0,pickColor:new G},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new _e,this.tileVisible=new _e,this.tileFailed=new _e,this.tileUnload=new _e,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e;let i=this._provider;PIt(this,i)}function PIt(e,t){let{shape:n,minBounds:i=lc.getMinBounds(n),maxBounds:o=lc.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=R.clone(e._modelMatrix,e._exaggeratedModelMatrix),axe(e,t);let r=lc.getShapeConstructor(n);e._shape=new r,e._shapeVisible=cxe(e,e._shape,t)}Object.defineProperties(yA.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=D.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=yA.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var RIt=new se,MIt=new se,NIt=new R,LIt=new R,OIt=new R,FIt=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R),QIt=R.fromRotationTranslation(J.fromUniformScale(2,new J),new d(-1,-1,-1),new R);yA.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){HIt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}zIt(this,e);let i=axe(this,t),o=this._shape;if(i&&(this._shapeVisible=cxe(this,o,t),jIt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=YIt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&txt(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),qIt(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=k.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(t4(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,A=o.orientedBoundingBox,g=JIt(A,h,MIt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=se.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let _=n.uniformState.inverseView;f.transformPositionViewToUv=R.multiplyTransformation(this._transformPositionWorldToUv,_,f.transformPositionViewToUv);let y=n.uniformState.view;f.transformPositionUvToView=R.multiplyTransformation(y,this._transformPositionUvToWorld,f.transformPositionUvToView);let C=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=J.multiply(this._transformDirectionWorldToLocal,C,f.transformDirectionViewToLocal),f.cameraPositionUv=R.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,f.cameraPositionUv),f.cameraDirectionUv=J.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,f.cameraDirectionUv),f.cameraDirectionUv=d.normalize(f.cameraDirectionUv,f.cameraDirectionUv),f.stepSize=this._stepSizeMultiplier;let E=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;E.boundingVolume=o.boundingSphere,e.commandList.push(E)};var kIt=new d,zJ=new d,UIt=new Ae,GIt=new d;function zIt(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===lc.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=d.fromElements(1,1,t.verticalExaggeration,kIt);e._exaggeratedModelMatrix=R.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=R.multiplyByTranslation(e._exaggeratedModelMatrix,VIt(e,t),e._exaggeratedModelMatrix)}}function VIt(e,t){let{shapeTransform:n=R.IDENTITY,globalTransform:i=R.IDENTITY}=e._provider,o=R.getTranslation(n,zJ),r=R.multiplyByPoint(e._modelMatrix,o,zJ),s=R.multiplyByPoint(i,r,zJ),c=te.WGS84.cartesianToCartographic(s,UIt),u=0;l(c)&&(u=c.height);let f=Yr.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,GIt)}function HIt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=G.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ze(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(t.paddingBefore??d.ZERO,e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(t.paddingAfter??d.ZERO,e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===kh.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new u4(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,WIt(e._traversal,i)}function axe(e,t){let n=t.shapeTransform??R.IDENTITY,i=t.globalTransform??R.IDENTITY;return R.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),R.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),C0(e,"_compoundModelMatrix","_compoundModelMatrixOld")+C0(e,"_minBounds","_minBoundsOld")+C0(e,"_maxBounds","_maxBoundsOld")+C0(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+C0(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+C0(e,"_minClippingBounds","_minClippingBoundsOld")+C0(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function C0(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function cxe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=R.inverse(o,NIt);return e._transformPositionWorldToUv=R.multiplyTransformation(FIt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=R.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=R.multiplyTransformation(o,QIt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=R.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function WIt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=k.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=k.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=k.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=k.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=k.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=k.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function jIt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ze(n,!0)),i}function YIt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=K.secondsDifference(i.stop,i.start),a=K.secondsDifference(n,i.start)/r;return o+a}function qIt(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=R.transpose(R.multiplyTransformation(R.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}yA.prototype.isDestroyed=function(){return!1};yA.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var sxe=new Array(new se(-1,-1,-1,1),new se(1,-1,-1,1),new se(-1,1,-1,1),new se(1,1,-1,1),new se(-1,-1,1,1),new se(1,-1,1,1),new se(-1,1,1,1),new se(1,1,1,1)),KIt=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),XIt=new Array(new se,new se,new se,new se,new se,new se,new se,new se);function JIt(e,t,n){let i=R.fromRotationTranslation(e.halfAxes,e.center,LIt),o=R.multiply(t,i,OIt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=XIt,h=sxe.length;for(u=0;u<h;u++)R.multiplyByVector(o,sxe[u],f[u]);for(u=0;u<h;u++){let A=f[u];if(A.z>=-A.w){let g=A.x/A.w,m=A.y/A.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=KIt[u*3+g],_=f[m];if(_.z>=-_.w){let y=A.z+A.w,C=_.z+_.w,E=y/(y-C),I=se.lerp(A,_,E,RIt),b=I.x/I.w,S=I.y/I.w;r=Math.min(r,b),s=Math.max(s,b),a=Math.min(a,S),c=Math.max(c,S)}}}return r=D.clamp(r,-1,1),a=D.clamp(a,-1,1),s=D.clamp(s,-1,1),c=D.clamp(c,-1,1),n=se.fromElements(r,a,s,c,n),n}var VJ=3e7,ZIt=new d(VJ,0,0),$It=new d(0,VJ,0),ext=new d(0,0,VJ);function txt(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:ao.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[G.RED,G.LIME,G.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,G.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,ZIt,G.RED,a),o(d.ZERO,$It,G.LIME,a),o(d.ZERO,ext,G.BLUE,a),i.update(t)}yA.DefaultCustomShader=new eS({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function lxe(){this.ready=!0,this.shape=lc.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[gt.SCALAR],this.componentTypes=[zt.FLOAT32],this.maximumTileCount=1}lxe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new tS({metadata:[new Float32Array(1)]});return Promise.resolve(n)};yA.DefaultProvider=new lxe;var E0=yA;function nxt(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var f4=nxt;function ixt(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var d4=ixt;function oxt(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var h4=oxt;var A4=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function gi(e){e=e??V.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof iz;if(o)this._context=e.contextOptions.createSceneContext(t);else{let u=ze(e.contextOptions);this._context=new vT(t,u)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Xn(),this._jobScheduler=new MV,this._frameState=new vV(r,new EV(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new JG(r),this._ellipsoid=e.ellipsoid??te.default,this._globe=void 0,this._globeTranslucencyState=new PV,this._primitives=new ou({countReferences:o}),this._groundPrimitives=new ou({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=gi.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new XT,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new SV(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new Ei({color:new G,stencil:0,owner:this}),this._depthClearCommand=new Ei({depth:1,owner:this}),this._stencilClearCommand=new Ei({stencil:0}),this._classificationStencilClearCommand=new Ei({stencil:0,renderState:Ue.fromCache({stencilMask:Kt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new E8(this),this._preUpdate=new _e,this._postUpdate=new _e,this._renderError=new _e,this._preRender=new _e,this._postRender=new _e,this._minimumDisableDepthTestDistance=0,this._debugInspector=new O8,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new _e,this.morphComplete=new _e,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=G.clone(G.BLACK),this._mode=ie.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Hi(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new lx,this.fog=new DV,this.fog.enabled=te.WGS84.equals(this._ellipsoid),te.WGS84.equals(this._ellipsoid)||(Eo.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new Eo(this),this.shadowMap=new Oy({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=G.clone(G.WHITE),this._actualInvertClassificationColor=G.clone(this._invertClassificationColor),this._invertClassification=new _P,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new _8,this._brdfLutGenerator=new uV,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new R8(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??$u.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Yc.requestCompletedEvent.addEventListener(A4(this)),this._removeTaskProcessorListenerCallback=mi.taskCompletedEvent.addEventListener(A4(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Xe(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new Eo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new Eo(this),this.preloadFlightCullingVolume=void 0,this._picking=new ZV(this),this._defaultView=new jT(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new wy,Axe(this,0,K.now()),this.updateFrameState(),this.initializeFrame()}gi.defaultLogDepthBuffer=!0;function rxt(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(A4(e))),n.push(t.terrainProviderChanged.addEventListener(A4(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(gi.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return qt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return qt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return hm.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,rxt(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ie.SCENE2D?this.morphTo2D(0):e===ie.SCENE3D?this.morphTo3D(0):e===ie.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Eo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new BV(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,qt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});gi.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function sxt(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function uxe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=Xp.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=Xp.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=Xp.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=Xp.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Oy.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Be.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}gi.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),A=o&&!u,g=c&&!f,m=(!o||!c)&&!h,_=n.pickingMetadata&&sxt(e,n);if(e.dirty=e.dirty||A||g||m||_,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:y,shadowMaps:C}=i;y&&e.castShadows&&(t.shadows=Oy.createCastDerivedCommand(C,e,s,r,t.shadows)),(u||A)&&(t.logDepth=Xp.createLogDepthCommand(e,r,t.logDepth),uxe(this,t.logDepth.command,s)),(h||m)&&uxe(this,e,s)};var axt=new Lh({pass:Zo.RENDER}),HJ=new Lh({pass:Zo.PRELOAD}),WJ=new Lh({pass:Zo.PRELOAD_FLIGHT}),cxt=new Lh({pass:Zo.REQUEST_RENDER_MODE_DEFER_CHECK}),fxe=new le,jJ;function lxt(e){if(!(e._mode!==ie.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return fxe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,jJ=lV.fromBoundingSphere(fxe,e.camera.positionWC,jJ),jJ}gi.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function Axe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=K.clone(n,i.time)}gi.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=lxt(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof An||this.camera.frustum instanceof ls),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=G.clone(this.invertClassificationColor,this._actualInvertClassificationColor),_P.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};gi.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===nn.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var m4=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);m4=R.inverseTransformation(m4,m4);function uxt(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ie.SCENE3D){a=R.multiplyByPoint(m4,a,a);let m=o.mapProjection,_=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(_)}let c,u,{radius:f}=s;l(f)?(c=ka.createGeometry(new ka({radii:new d(f,f,f),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromTranslation(a)):(c=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromRotationTranslation(s.halfAxes,a,new R)),t._debugVolume=new kn({geometryInstances:new Rt({geometry:jn.toWireframe(c),modelMatrix:u,attributes:{color:new en(1,0,0,1)}}),appearance:new gn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,A=o.commandList=[];t._debugVolume.update(o),e=A[0],o.useLogDepth&&(e=Xp.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Gh(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof Ei){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&uxt(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function dxe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function pxe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var fxt=new d;function hxe(e,t){let n=d.subtract(e,t,fxt),i=Math.max(0,d.magnitude(n));return i*i}function dxt(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return hxe(o.center,n)-hxe(i.center,n)}function hxt(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+D.EPSILON12}function mxt(e,t,n,i,o){qp(i,pxe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function Axt(e,t,n,i,o){qp(i,hxt,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function pxt(e,t,n){e.context.uniformState.updatePass(Be.VOXELS);let i=n.commands[Be.VOXELS];i.length=n.indices[Be.VOXELS],qp(i,pxe,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}function gxt(e,t,n){e.context.uniformState.updatePass(Be.GAUSSIAN_SPLATS);let i=n.commands[Be.GAUSSIAN_SPLATS];i.length=n.indices[Be.GAUSSIAN_SPLATS],qp(i,dxt,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}var _xt=new Vi,yxt=new fu,Cxt=new An,Ext=new ls;function Ixt(e){let{frustum:t}=e;return l(t.fov)?t.clone(_xt):l(t.infiniteProjectionMatrix)?t.clone(yxt):l(t.width)?t.clone(Cxt):t.clone(Ext)}function xxt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?mxt:Axt}function bxt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=xxt(e);o.uniformState.updatePass(Be.TRANSLUCENT);let f=n.commands[Be.TRANSLUCENT];f.length=n.indices[Be.TRANSLUCENT],u(e,Gh,t,f,c)}function Txt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Be.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Be.TRANSLUCENT];i.executeTranslucentCommands(e,Gh,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Gh,t,n)}function qJ(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=Ixt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||Sxt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:A,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:_,globeTranslucencyFramebuffer:y,sceneFramebuffer:C,frustumCommandsList:E}=e._view,I=E.length,b=e._globeTranslucencyState,S=e._depthClearCommand,B=e._stencilClearCommand,v=e._classificationStencilClearCommand,P=e._depthPlane,N=n.position.z;function L(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)Gh(w[O],e,t);return M}function p(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)dxe(w[O],e,t)}for(let x=0;x<I;++x){let T=I-x-1,w=E[T];e.mode===ie.SCENE2D?(n.position.z=N-w.near+1,s.far=Math.max(1,w.far-w.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s)),S.execute(i,t),i.stencilBuffer&&B.execute(i,t),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,Gh,y,e,t)):L(w,Be.GLOBE),A&&_.executeCopyDepth(i,t),f||(b.translucent?(r.updatePass(Be.TERRAIN_CLASSIFICATION),b.executeGlobeClassificationCommands(w,Gh,y,e,t)):L(w,Be.TERRAIN_CLASSIFICATION)),u&&(S.execute(i,t),h&&P.execute(i,t));let M;if(!g||c||f)M=L(w,Be.CESIUM_3D_TILE),M>0&&(A&&(_.prepareColorTextures(i,u),_.executeUpdateDepth(i,t,_.depthStencilTexture)),f||(M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let U=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,M=L(w,Be.CESIUM_3D_TILE),A&&(e._invertClassification.prepareTextures(i),_.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=U,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),M>0&&i.stencilBuffer&&v.execute(i,t),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)}if(M>0&&i.stencilBuffer&&B.execute(i,t),pxt(e,t,w),L(w,Be.OPAQUE),gxt(e,t,w),T!==0&&e.mode!==ie.SCENE2D&&(s.near=w.near,r.updateFrustum(s)),bxt(e,t,w),Txt(e,t,w),i.depthTexture&&e.useDepthPicking&&(A||f)){let U=e._picking.getPickDepth(e,T);U.update(i,_.depthStencilTexture),U.executeCopyDepth(i,t)}if(c||!m)continue;let O=t.framebuffer;t.framebuffer=C.getIdFramebuffer(),s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,dxe,y,e,t)):p(w,Be.GLOBE),u&&(S.framebuffer=t.framebuffer,S.execute(i,t),S.framebuffer=void 0),u&&h&&P.execute(i,t),p(w,Be.CESIUM_3D_TILE),p(w,Be.OPAQUE),p(w,Be.TRANSLUCENT),t.framebuffer=O}}function Sxt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Be.ENVIRONMENT),l(i.skyBoxCommand)&&Gh(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Gh(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function gxe(e){e.context.uniformState.updatePass(Be.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function wxt(e,t){e.context.uniformState.updatePass(Be.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function Bxt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Be.GLOBE,Be.CESIUM_3D_TILE,Be.OPAQUE,Be.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let A=r[h].cullingVolume;if(e.isVisible(A,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function _xe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;Bxt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:A,commandList:g}=h;s.updateCamera(A),c.updatePass(r,f);for(let m=0;m<g.length;++m){let _=g[m];s.updatePass(_.pass);let y=_.derivedCommands.shadows.castCommands[a];Gh(y,e,h.passState)}}}}var Dxt=new d;gi.prototype.updateAndExecuteCommands=function(e,t){zxt(this,e,t),this._environmentState.useWebVR?vxt(this,e,t):this._frameState.mode!==ie.SCENE2D||this._mapMode2D===$u.ROTATE?zy(!0,this,e):kxt(this,e)};function vxt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;yxe(e),n.createPotentiallyVisibleSet(e),gxe(e),r||_xe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=Eo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*(e.focalLength??5),f=e.eyeSeparation??u/30,h=d.multiplyByScalar(a.right,f*.5,Dxt);i.frustum.aspectRatio=s.width/s.height;let A=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=A,qJ(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-A,qJ(e,t),Eo.clone(a,i)}var Pxt=new Ae(Math.PI,D.PI_OVER_TWO),Rxt=new d,Mxt=new d,Nxt=new R,Lxt=new R,Oxt=new d,Fxt=new d,Qxt=new Xe;function kxt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Xe.clone(r,Qxt);t.viewport=s;let a=Pxt,c=Rxt;e.mapProjection.project(a,c);let f=d.clone(i.position,Mxt),h=R.clone(i.transform,Lxt),A=i.frustum.clone();i._setTransform(R.IDENTITY);let g=R.computeViewportTransformation(s,0,1,Nxt),m=i.frustum.projectionMatrix,_=i.positionWC.y,y=d.fromElements(D.sign(_)*c.x-_,0,-i.positionWC.x,Oxt),C=kt.pointToGLWindowCoordinates(m,g,y,Fxt);C.x=Math.floor(C.x);let E=s.x,I=s.width;if(_===0||C.x<=E||C.x>=E+I)zy(!0,e,t);else if(Math.abs(E+I*.5-C.x)<1)s.width=C.x-s.x,i.position.x*=D.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t);else if(C.x>E+I*.5){s.width=C.x-E;let b=i.frustum.right;i.frustum.right=c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,s.width=E+I-C.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=b-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}else{s.x=C.x,s.width=E+I-C.x;let b=i.frustum.left;i.frustum.left=-c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=E,s.width=C.x-E,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=b-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=A.clone(),t.viewport=r}function zy(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),yxe(t),i.createPotentiallyVisibleSet(t),e&&(gxe(t),o||_xe(t)),qJ(t,n)}var mxe=new zs;gi.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ie.SCENE2D&&t.camera.frustum instanceof An||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(r_.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let C=r.dynamicLighting;s.setDynamicLighting(C),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let y=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(y)?y.drawCommand:void 0,n.sunComputeCommand=l(y)?y.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ie.SCENE2D);(n.useDepthPlane=u&&this.mode===ie.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ie.SCENE2D&&!o;let h=e.mode===ie.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,A=e.cullingVolume,g=mxe.planes;for(let y=0;y<5;++y)g[y]=A.planes[y];A=mxe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(A,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(A,n.moonCommand,h);let m=this.specularEnvironmentMaps,_=this._specularEnvironmentCubeMap;l(m)&&_?.url!==m?(_=_&&_.destroy(),this._specularEnvironmentCubeMap=new hm(m)):!l(m)&&l(_)&&(_.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Uxt(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new Kp({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function Gxt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ie.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function yxe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Uxt(e),Gxt(e),e._globe&&e._globe.render(t)}function zxt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new L8:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;G.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let A=s.oit,g=r.useOIT=!c&&l(A)&&A.isSupported();g&&(A.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),A.clear(i,t,n),r.useOIT=A.isSupported());let m=e.postProcessStages,_=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,_&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),_=r.usePostProcess=m.ready,r.usePostProcessSelected=_&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:_&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let C;if(o.invertClassificationColor.alpha===1&&h&&(C=s.globeDepth.framebuffer),l(C)||i.depthTexture){if(e._invertClassification.previousFramebuffer=C,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let E=e._invertClassification.unclassifiedCommand,I=E.derivedCommands;I.oit=A.createDerivedCommands(E,i,I.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}gi.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,A=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,_=g.getColorTexture(0),y=A.getColorTexture(0),C=(f??h).getDepthStencilTexture();m.execute(t,_,C,y),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function Vxt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function Hxt(e){if(e.mode===ie.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function Cxe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof ou){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=Cxe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}gi.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===Ze.CLAMP_TO_TERRAIN||t===Ze.RELATIVE_TO_TERRAIN,i=t===Ze.CLAMP_TO_3D_TILE||t===Ze.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=Cxe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var YJ=new Ae;gi.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{Ae.clone(e,YJ);let m;l(g)&&(m=g.height),l(m)||(m=this.getHeight(e,n)),l(m)&&(YJ.height=m,t(YJ))},r=n===Ze.CLAMP_TO_TERRAIN||n===Ze.RELATIVE_TO_TERRAIN,s=n===Ze.CLAMP_TO_3D_TILE||n===Ze.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},u=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,o,i);c[g.id]=m};if(!r){let g=this.primitives.length;for(let m=0;m<g;++m){let _=this.primitives.get(m);u(_)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},f(),h()}};function Wxt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ie.SCENE2D||n===ie.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}gi.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=Hxt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=Wxt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function jxt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new Ny({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function Yxt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function qxt(e){e.primitives.postPassesUpdate(e._frameState),Yc.update()}var Kxt=new G;function Xxt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=axt;let r=e.backgroundColor??G.BLACK;e._hdr&&(r=G.clone(r,Kxt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof wy?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Xe.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,wxt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function I0(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function Jxt(e){return e._picking.updateMostDetailedRayPicks(e)}gi.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=K.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ie.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(K.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=K.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=D.incrementWrap(t.frameNumber,15e6,1);Axe(this,o,e),t.newFrame=!0}I0(this,Yxt),this.primitives.show&&(I0(this,Jxt),I0(this,Zxt),I0(this,$xt),i||I0(this,ebt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),I0(this,Xxt)),jxt(this,i),I0(this,qxt),Vxt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};gi.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};gi.prototype.requestRender=function(){this._renderRequested=!0};gi.prototype.clampLineWidth=function(e){return Math.max(qt.minimumAliasedLineWidth,Math.min(e,qt.maximumAliasedLineWidth))};gi.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};gi.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof E0))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return F8.fromKeyframeNode(o,s,c,a)};gi.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=f4(s,t,n,i);if(!l(a))return;let c=h4(r,n,i);if(!l(c))return;let u=new d4(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};gi.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};gi.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};gi.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};gi.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function Zxt(e){let t=e._frameState;HJ.camera=t.camera,HJ.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,HJ)}function $xt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;WJ.camera=e.preloadFlightCamera,WJ.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,WJ)}function ebt(e){e.primitives.updateForPass(e._frameState,cxt)}gi.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};gi.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};gi.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};gi.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};gi.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};gi.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};gi.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};gi.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};gi.prototype.cartesianToCanvasCoordinates=function(e,t){return to.worldToWindowCoordinates(this,e,t)};gi.prototype.completeMorph=function(){this._transitioner.completeMorph()};gi.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};gi.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};gi.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function tbt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}gi.prototype.setTerrain=function(e){return tbt(this,e),e};gi.prototype.isDestroyed=function(){return!1};gi.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var p4=gi;function sS(e){e=e??te.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=R.fromScale(n),this._modelMatrix=new R,this._command=new nt({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(sS.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});sS.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var KJ=new R;sS.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ie.SCENE3D&&n!==ie.MORPHING||!e.passes.render)return;let i=R.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,KJ),o=R.multiplyTransformation(i,Ao.Y_UP_TO_Z_UP,KJ),r=R.multiply(this._scaleMatrix,o,KJ);R.clone(r,this._modelMatrix);let s=e.context,a=nbt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let A=ka.createGeometry(new ka({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Pe.POSITION_ONLY}));f.vertexArray=li.fromGeometry({context:s,geometry:A,attributeLocations:jn.createAttributeLocations(A),bufferUsage:Qe.STATIC_DRAW}),f.renderState=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let A=[];a&&A.push("COLOR_CORRECT"),u&&A.push("PER_FRAGMENT_ATMOSPHERE"),c&&A.push("GLOBE_TRANSLUCENT");let g=new We({defines:A,sources:[bm,tP,_z]}),m=new We({defines:A,sources:[bm,tP,gz]});this._spSkyAtmosphere=ln.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function nbt(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))}sS.prototype.isDestroyed=function(){return!1};sS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var g4=sS;function cS(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new nt({modelMatrix:R.clone(R.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}cS.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ie.SCENE3D&&i!==ie.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?oz(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new jr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),c=this._attributeLocations=jn.createAttributeLocations(a);s.vertexArray=li.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Qe.STATIC_DRAW}),s.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new We({defines:[t?"HDR":""],sources:[yz]});s.shaderProgram=ln.fromCache({context:r,vertexShaderSource:Cz,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};cS.prototype.isDestroyed=function(){return!1};cS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function aS(e){return fn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}cS.createEarthSkyBox=function(){return new cS({sources:{positiveX:aS("px"),negativeX:aS("mx"),positiveY:aS("py"),negativeY:aS("my"),positiveZ:aS("pz"),negativeZ:aS("mz")}})};var _4=cS;function QP(){this.show=!0,this._drawCommand=new nt({primitiveType:Me.TRIANGLES,boundingVolume:new le,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new le,this._boundingVolume2D=new le,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(QP.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var ibt=new k,obt=new k,rbt=new se,FP=new se;QP.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ie.SCENE2D||i===ie.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let b=Math.max(r,s);b=Math.pow(2,Math.ceil(Math.log(b)/Math.log(2))-2),b=Math.max(1,b);let S=n?o.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._texture=new Nt({context:o,width:b,height:b,pixelFormat:et.RGBA,pixelDatatype:S}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let B=this,v={u_radiusTS:function(){return B._radiusTS}};this._commands.computeCommand=new Hl({fragmentShaderSource:Iz,outputTexture:this._texture,uniformMap:v,persists:!1,owner:this,postExecute:function(){B._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let b={direction:0},S=new Uint8Array(8);S[0]=0,S[1]=0,S[2]=255,S[3]=0,S[4]=255,S[5]=255,S[6]=0,S[7]=255;let B=Et.createVertexBuffer({context:o,typedArray:S,usage:Qe.STATIC_DRAW}),v=[{index:b.direction,vertexBuffer:B,componentsPerAttribute:2,normalize:!0,componentDatatype:q.UNSIGNED_BYTE}],P=Et.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});a.vertexArray=new li({context:o,attributes:v,indexBuffer:P}),a.shaderProgram=ln.fromCache({context:o,vertexShaderSource:xz,fragmentShaderSource:Ez,attributeLocations:b}),a.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=D.SOLAR_RADIUS+D.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ie.SCENE3D?le.clone(f,a.boundingVolume):i===ie.COLUMBUS_VIEW&&le.clone(h,a.boundingVolume);let A=to.computeActualEllipsoidPosition(e,c,FP),g=d.magnitude(d.subtract(A,e.camera.position,FP)),m=o.uniformState.projection,_=rbt;_.x=0,_.y=0,_.z=-g,_.w=1;let y=R.multiplyByVector(m,_,FP),C=to.clipToGLWindowCoordinates(t.viewport,y,ibt);_.x=D.SOLAR_RADIUS;let E=R.multiplyByVector(m,_,FP),I=to.clipToGLWindowCoordinates(t.viewport,E,obt);return this._size=k.magnitude(k.subtract(I,C,FP)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};QP.prototype.isDestroyed=function(){return!1};QP.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var y4=QP;var xxe=Es(CR(),1);function sbt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var C4=sbt;var abt={modifyFragmentShader:function(t){return t=We.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},kP=abt;var x0={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function UP(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=G.clone(G.DARKGRAY),this._highlightColor=G.clone(G.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=x0.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Be.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=R.clone(R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.time=0,this.shadows=Dn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??wr.NONE,this._splittingEnabled=!1,this._error=void 0,cbt(this,e)}Object.defineProperties(UP.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return G.clone(this._highlightColor)},set:function(e){this._highlightColor=G.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=le.clone(e,this._boundingSphere)}}});function cbt(e,t){let n=Gx.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=Fg.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=x0.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=G.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var lbt=new d,ubt=new d,fbt=new d,Exe,E4;function dbt(e){if(!l(E4)){Exe=new xxe.default(0),E4=new Array(e);for(let t=0;t<e;++t)E4[t]=Exe.random()}return E4}function hbt(e){let n=e.length/3,i=Math.min(n,20),o=dbt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,lbt),c=d.fromElements(s,s,s,ubt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),A=d.unpack(e,h*3,fbt);d.minimumByComponent(a,A,a),d.maximumByComponent(c,A,c)}let u=le.fromCornerPoints(a,c);return u.radius+=D.EPSILON2,u}function Ixe(e,t){let n=q.fromTypedArray(e);return n===q.INT||n===q.UNSIGNED_INT||n===q.DOUBLE?(yt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var mbt=new se,Abt=new se,pbt=new G,bxe=0,I4=1,eZ=2,Txe=3,gbt=4,XJ=new R,_bt=new R;function ybt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,A=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,_=e._quantizedRange,y=e._octEncodedRange,C=e._isRGB565,E=e._isTranslucent,I=e._hasColors,b=e._hasNormals,S=e._hasBatchIds,B,v,P=[],N={};if(e._styleableShaderAttributes=N,f){let Q=gbt;for(let z in u)if(u.hasOwnProperty(z)){let F=u[z],H=Ixe(F.typedArray,z);B=F.componentCount,v=q.fromTypedArray(H);let W=Et.createVertexBuffer({context:n,typedArray:H,usage:Qe.STATIC_DRAW});e._geometryByteLength+=W.sizeInBytes;let Z={index:Q,vertexBuffer:W,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0};P.push(Z),N[z]={location:Q,componentCount:B},++Q}}let L=Et.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});e._geometryByteLength+=L.sizeInBytes;let p;I&&(p=Et.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=p.sizeInBytes);let x;b&&(x=Et.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=x.sizeInBytes);let T;S&&(c.typedArray=Ixe(c.typedArray,"batchIds"),T=Et.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let w=[];if(h?v=q.UNSIGNED_SHORT:A?v=_<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT:v=q.FLOAT,w.push({index:bxe,vertexBuffer:L,componentsPerAttribute:3,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||A?e._boundingSphere=le.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=hbt(r.typedArray)),I)if(C)w.push({index:I4,vertexBuffer:p,componentsPerAttribute:1,componentDatatype:q.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let Q=E?4:3;w.push({index:I4,vertexBuffer:p,componentsPerAttribute:Q,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}b&&(g?(B=2,v=q.UNSIGNED_BYTE):m?(B=2,v=y<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT):(B=3,v=q.FLOAT),w.push({index:eZ,vertexBuffer:x,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0})),S&&w.push({index:Txe,vertexBuffer:T,componentsPerAttribute:1,componentDatatype:q.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(w=w.concat(P));let M=new li({context:n,attributes:w}),O={depthTest:{enabled:!0}},U={depthTest:{enabled:!0},depthMask:!1,blending:pn.ALPHA_BLEND};e._opaquePass===Be.CESIUM_3D_TILE&&(O.stencilTest=Kt.setCesium3DTileBit(),O.stencilMask=Kt.CESIUM_3D_TILE_MASK,U.stencilTest=Kt.setCesium3DTileBit(),U.stencilMask=Kt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ue.fromCache(O),e._translucentRenderState=Ue.fromCache(U),e._drawCommand=new nt({boundingVolume:new le,cull:e._cull,modelMatrix:new R,primitiveType:Me.POINTS,vertexArray:M,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:E?e._translucentRenderState:e._opaqueRenderState,pass:E?Be.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function Cbt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=mbt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ie.SCENE2D||c instanceof An?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return G.TRANSPARENT;let c=G.clone(a.edgeColor,pbt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return R.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;R.multiply(n.uniformState.view3D,c,XJ);let u=R.multiply(XJ,a.modelMatrix,XJ);return R.inverseTranspose(u,_bt)}};kP.addUniforms(e,s),(i||o||r)&&(s=wt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=Abt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function JJ(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function ZJ(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function $J(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var Ebt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function Ibt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,A=e._isRGB565,g=e._isTranslucent,m=e._hasColors,_=e._hasNormals,y=e._hasBatchIds,C=e._backFaceCulling,E=e._normalShading,I=e._drawCommand.vertexArray,b=e.clippingPlanes,S=e._attenuation,B,v,P,N=g,L=ze(Ebt),p={},x=e._styleableShaderAttributes;for(o in x)x.hasOwnProperty(o)&&(r=x[o],L[o]=`czm_3dtiles_property_${r.location}`,p[r.location]=r);if(a){let fe={translucent:!1},ye="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";B=n.getColorShaderFunction(`getColorFromStyle${ye}`,L,fe),v=n.getShowShaderFunction(`getShowFromStyle${ye}`,L,fe),P=n.getPointSizeShaderFunction(`getPointSizeFromStyle${ye}`,L,fe),l(B)&&fe.translucent&&(N=!0)}e._styleTranslucent=N;let T=l(B),w=l(v),M=l(P),O=e.isClipped,U=[],Q=[];T&&(JJ(B,U),ZJ(B,Q)),w&&(JJ(v,U),ZJ(v,Q)),M&&(JJ(P,U),ZJ(P,Q));let z=Q.indexOf("COLOR")>=0,F=Q.indexOf("NORMAL")>=0;if(F&&!_)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");for(o in x)if(x.hasOwnProperty(o)){r=x[o];let fe=U.indexOf(r.location)>=0,ye=$J(I,r.location);ye.enabled=fe}let H=m&&(!T||z);if(m){let fe=$J(I,I4);fe.enabled=H}let W=_&&(E||C||F);if(_){let fe=$J(I,eZ);fe.enabled=W}let Z={a_position:bxe};H&&(Z.a_color=I4),W&&(Z.a_normal=eZ),y&&(Z.a_batchId=Txe);let Y="",$=U.length;for(i=0;i<$;++i){let fe=U[i];r=p[fe];let ye=r.componentCount,Ie=`czm_3dtiles_property_${fe}`,ve;ye===1?ve="float":ve=`vec${ye}`,Y+=`in ${ve} ${Ie}; +`,Z[Ie]=r.location}Cbt(e,t);let X=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;X+=`float u_pointSize; +float tiles3d_tileset_time; +`,S&&(X+=`float u_geometricError; +float u_depthMultiplier; +`),X+=Y,H&&(g?X+=`in vec4 a_color; +`:A?X+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:X+=`in vec3 a_color; +`),W&&(f||h?X+=`in vec2 a_normal; +`:X+=`in vec3 a_normal; +`),y&&(X+=`in float a_batchId; +`),(c||u||h)&&(X+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),T&&(X+=B),w&&(X+=v),M&&(X+=P),X+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,S&&(X+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),H?g?X+=` vec4 color = a_color; +`:A?X+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:X+=` vec4 color = vec4(a_color, 1.0); +`:X+=` vec4 color = u_constantColor; +`,c||u?X+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:X+=` vec3 position = a_position; +`,X+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,W?(f?X+=` vec3 normal = czm_octDecode(a_normal); +`:h?X+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:X+=` vec3 normal = a_normal; +`,X+=` vec3 normalEC = czm_normal * normal; +`):X+=` vec3 normal = vec3(1.0); +`,T&&(X+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),w&&(X+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),M?X+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:S?X+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:X+=` gl_PointSize = u_pointSize; +`,X+=` color = color * u_highlightColor; +`,W&&E&&(X+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),X+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,W&&C&&(X+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),w&&(X+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),X+=`} +`;let he=`in vec4 v_color; +`;O&&(he+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,he+=` +`,he+=Dy(b,s),he+=` +`),he+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,O&&(he+=C4("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`} +`,e.splitDirection!==wr.NONE&&(he=kP.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(X=e._vertexShaderLoaded(X)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ge=e._drawCommand;l(ge.shaderProgram)&&ge.shaderProgram.destroy(),ge.shaderProgram=ln.fromCache({context:s,vertexShaderSource:X,fragmentShaderSource:he,attributeLocations:Z});try{ge.shaderProgram._bind()}catch{throw new ce("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function xbt(e,t){if(e._decodingState===x0.READY)return!1;if(e._decodingState===x0.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=jg.decodePointCloud(i,t);l(o)&&(e._decodingState=x0.DECODING,o.then(function(r){e._decodingState=x0.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),A=l(u)&&l(r.NORMAL.data.quantization);if(h){let y=r.POSITION.data.quantization,C=y.range;e._quantizedVolumeScale=d.fromElements(C,C,C),e._quantizedVolumeOffset=d.unpack(y.minValues),e._quantizedRange=(1<<y.quantizationBits)-1,e._isQuantizedDraco=!0}A&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let y in m)if(m.hasOwnProperty(y)){let C=r[y];l(g)||(g={}),g[y]={typedArray:C.array,componentCount:C.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let _=c??a;l(_)&&(n.colors={typedArray:_}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=x0.FAILED,e._error=r}))}return!0}var bbt=new se,Tbt=new d;UP.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(xbt(this,t))return;let i=!1,o=!R.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ybt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){R.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(R.clone(this._modelMatrix,u),l(this._rtcCenter)&&R.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&R.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ie.SCENE3D){let h=e.mapProjection,A=R.getColumn(u,3,bbt);se.equals(A,se.UNIT_W)||kt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(le.clone(this._boundingSphere,f),this._cull){let h=f.center;R.multiplyByPoint(u,h,h);let A=R.getScale(u,Tbt);f.radius*=d.maximumComponent(A)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==wr.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&Ibt(this,e,this._style),this._drawCommand.castShadows=Dn.castShadows(this.shadows),this._drawCommand.receiveShadows=Dn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Be.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};UP.prototype.isDestroyed=function(){return!1};UP.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var x4=UP;function T0(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.shadows=e.shadows??Dn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new op(e.shading),this.style=e.style,this.frameFailed=new _e,this.frameChanged=new _e,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new u_,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(T0.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function Sbt(e){return`uniform vec4 czm_pickColor; +${e}`}function wbt(e){return function(t){return wt(t,{czm_pickColor:function(){return e._pickId.color}})}}function Bbt(){return"czm_pickColor"}T0.prototype.makeStyleDirty=function(){this._styleDirty=!0};T0.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var Dbt=new K;function nZ(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function b0(e,t){return e._intervals.indexOf(t.start)}function vbt(e,t){let n=e._intervals,i=e._clock,o=nZ(e);if(o===0)return;let r=e._getAverageLoadTime(),s=K.addSeconds(i.currentTime,r*o,Dbt),a=n.indexOf(s),c=b0(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function Pbt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function Rbt(e,t,n){let i=nZ(e),o=b0(e,t),r=b0(e,n);return i>=0?o>=r:o<=r}function wxe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function Mbt(e,t,n){let i=b0(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?R.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Oi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,we.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new x4({arrayBuffer:u,cull:!0,fragmentShaderLoaded:Sbt,uniformMapLoaded:wbt(e),pickIdLoaded:Bbt})}).catch(wxe(e,c))}return r}function Nbt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function Lbt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(Bxe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Oi()-t.timestamp)/1e3;Nbt(e,a)}}t.touchedFrameNumber=i.frameNumber}var Obt=new R;function Fbt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?D.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function Qbt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var kbt=new op;function Bxe(e,t,n,i){let o=e.shading??kbt,r=t.pointCloud,s=t.transform??R.IDENTITY;r.modelMatrix=R.multiplyTransformation(e.modelMatrix,s,Obt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=Fbt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=Qbt(e);try{r.update(i)}catch(a){wxe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function tZ(e,t,n,i){let o=Mbt(e,t,i);Lbt(e,o,n,i)}function Ubt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function Dxe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Gbt(e,t){let n=b0(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function Sxe(e,t,n,i,o){return l(n)?n.ready?!0:(tZ(e,t,i,o),n.ready):!1}function zbt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=b0(e,n),h=b0(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s;return t}function Vbt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var lS={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};T0.prototype.update=function(e){if(e.mode===ie.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time));let t=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&Vbt(this,o,s),lS.timeSinceLoad=t,lS.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,A=this._nextInterval,g=Pbt(this);if(!l(g))return;let m=!1,_=nZ(this),y=_===0;_!==this._clockMultiplier&&(m=!0,this._clockMultiplier=_),(!l(h)||y)&&(h=g),(!l(A)||m||Rbt(this,g,A))&&(A=vbt(this,g)),h=zbt(this,h,g,lS,e);let C=Gbt(this,h);l(C)||(tZ(this,h,lS,e),C=this._lastRenderedFrame),l(C)&&Bxe(this,C,lS,e),l(A)&&tZ(this,A,lS,e);let E=this;l(C)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(C)&&C!==this._lastRenderedFrame&&E.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return E.frameChanged.raiseEvent(E),!0}),this._previousInterval=h,this._nextInterval=A,this._lastRenderedFrame=C;let I=this._totalMemoryUsageInBytes,b=this.maximumMemoryUsage*1024*1024;I>b&&Dxe(this,Ubt(e));let B=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&B>0&&c.update(e,f,a,this.boundingSphere)};T0.prototype.isDestroyed=function(){return!1};T0.prototype.destroy=function(){return Dxe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var GP=T0;function Rxe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Hbt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function Mxe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function Nxe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=Mxe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function Lxe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Fo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=jt.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=jt.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Gn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?Gn(t.creditViewport):n,f=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new _e,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Vm,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),Nxe(this);try{let A=t.ellipsoid??te.default,g=new p4({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:A,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=d.UNIT_Z,Mxe(this),Lxe(this);let m=t.globe;l(m)||(m=new Jz(A)),m!==!1&&(g.globe=m,g.globe.shadows=t.terrainShadows??Dn.RECEIVE_ONLY);let _=t.skyBox;!l(_)&&te.WGS84.equals(A)&&(_=_4.createEarthSkyBox()),_!==!1&&(g.skyBox=_,g.sun=new y4,te.WGS84.equals(A)&&(g.moon=new rV));let y=t.skyAtmosphere;!l(y)&&te.WGS84.equals(A)&&(y=new g4(A),y.show=t.globe!==!1&&m.show),y!==!1&&(g.skyAtmosphere=y);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=ds.fromWorldImagery()),g.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Cd(i),l(t.sceneMode)&&(t.sceneMode===ie.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ie.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let E=this;this._onRenderError=function(P,N){E._useDefaultRenderLoop=!1,E._renderLoopRunning=!1,E._showRenderLoopErrors&&E.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,N)},g.renderError.addEventListener(this._onRenderError);let I=t.dataSources,b=!1;l(I)||(I=new b3,b=!0);let S=new AU({scene:g,dataSourceCollection:I}),B=new Lr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=I,this._destroyDataSourceCollection=b,this._dataSourceDisplay=S,this._eventHelper=B,this._canAnimateUpdateCallback=this._updateCanAnimate,B.add(this._clock.onTick,Fo.prototype._onTick,this),B.add(g.morphStart,Fo.prototype._clearTrackedObject,this),B.add(I.dataSourceAdded,Fo.prototype._onDataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._onDataSourceRemoved,this),B.add(g.postRender,Fo.prototype._postRender,this);let v=I.length;for(let P=0;P<v;P++)this._dataSourceAdded(I,I.get(P));this._dataSourceAdded(void 0,S.defaultDataSource),B.add(I.dataSourceAdded,Fo.prototype._dataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._dataSourceRemoved,this)}catch(A){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',A),A}}Object.defineProperties(Fo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Hbt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,iZ(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ie.COLUMBUS_VIEW||n===ie.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ie.COLUMBUS_VIEW||n===ie.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(R.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,Rxe(this.clock,e))}}});Fo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=up(n);u||(typeof n=="string"&&(n=new Error(n)),t=up({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${m}`);let _=document.createElement("div");_.className="cesium-widget-errorPanel-message-details collapsed";let y=document.createElement("span");y.className="cesium-widget-errorPanel-more-details",y.appendChild(document.createTextNode("See more...")),_.appendChild(y),_.onclick=function(C){_.removeChild(y),_.appendChild(document.createTextNode(m)),_.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",_.onclick=void 0},a.appendChild(_)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let A=document.createElement("button");A.setAttribute("type","button"),A.className="cesium-button",A.appendChild(document.createTextNode("OK")),A.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(A),i.appendChild(o)};Fo.prototype.isDestroyed=function(){return!1};Fo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Fo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,Nxe(this),Lxe(this),this._scene.requestRender())};Fo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Fo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Fo.prototype._onEntityCollectionChanged,this)};Fo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Fo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Fo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var Wbt=new le;Fo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??Wbt)===mt.DONE&&i.update(t)}};Fo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Fo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Fo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&Rxe(this.clock,e)};Fo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Fo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Fo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Fo.prototype.zoomTo=function(e,t){return Oxe(this,e,{offset:t},!1)};Fo.prototype.flyTo=function(e,t){return Oxe(this,e,t,!0)};function Oxe(e,t,n,i){iZ(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof ds){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return RT(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof qs||r instanceof GP||r instanceof E0){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function zP(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function iZ(e){let t=e._zoomPromise;l(t)&&(zP(e),e._completeZoom(!1))}Fo.prototype._postRender=function(){jbt(this),Ybt(this)};var vxe=new le;function jbt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===ie.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(f){l(o.offset)||(o.offset=new Eh(0,-.5,f.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(f,o.offset),i.lookAtTransform(R.IDENTITY),e._completeZoom(!0)),zP(e)}if(t instanceof GP){if(l(t.boundingSphere)){s(t.boundingSphere);return}let f=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),f()});return}if(t instanceof qs||t instanceof E0){s(t.boundingSphere);return}if(t instanceof Ae){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),zP(e);return}let a=t,c=[];for(let f=0,h=a.length;f<h;f++){let A=e._dataSourceDisplay.getBoundingSphere(a[f],!1,vxe);if(A===mt.PENDING)return;A!==mt.FAILED&&c.push(le.clone(vxe))}if(c.length===0){iZ(e);return}e.trackedEntity=void 0;let u=le.fromBoundingSpheres(c);e._zoomIsFlight?(zP(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(R.IDENTITY),zP(e),e._completeZoom(!0))}var Pxe=new le;function Ybt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=j.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,Pxe);if(r===mt.PENDING)return;let s=o.mode;(s===ie.COLUMBUS_VIEW||s===ie.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ie.COLUMBUS_VIEW||s===ie.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==mt.FAILED?Pxe:void 0;e._entityView=new _U(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var b4=Fo;function dS(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var S0=new ae;function qbt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}dS.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let A=n;A<=o;++A)for(let g=t;g<=i;++g)qbt(e,g,A,s)||s.push(new uS(r,void 0,0,g,A));r.tileXYToRectangle(t,n,e,S0);let a=S0.west,c=S0.north;r.tileXYToRectangle(i,o,e,S0);let u=S0.east,f=S0.south,h=new $bt(e,a,f,u,c);for(let A=0;A<s.length;++A){let g=s[A];oZ(g.extent,h)&&eTt(this._maximumLevel,g,h)}};dS.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(fS(i.extent,e)){t=i;break}}return l(t)?VP(void 0,t,e):-1};var Kbt=[],Xbt=[],Jbt=new ae,Zbt=new ae;dS.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=Kbt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Jbt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Zbt))):t.push(e);let n=Xbt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)HP(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var Fxe=new Ae;dS.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,S0);return ae.center(i,Fxe),this.computeMaximumLevelAtPosition(Fxe)>=e};dS.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function uS(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(uS.prototype,{nw:{get:function(){return this._nw||(this._nw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function $bt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function oZ(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function eTt(e,t,n){for(;t.level<e;)if(T4(t.nw.extent,n))t=t.nw;else if(T4(t.ne.extent,n))t=t.ne;else if(T4(t.sw.extent,n))t=t.sw;else if(T4(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=qo(t.rectangles,n.level,tTt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function tTt(e,t){return e.level-t}function T4(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function fS(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function VP(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&fS(t._nw.extent,n),s=t._ne&&fS(t._ne.extent,n),a=t._sw&&fS(t._sw.extent,n),c=t._se&&fS(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,VP(t,t._nw,n))),s&&(i=Math.max(i,VP(t,t._ne,n))),a&&(i=Math.max(i,VP(t,t._sw,n))),c&&(i=Math.max(i,VP(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];fS(a,n)&&(i=a.level)}t=t.parent}return i}function HP(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||oZ(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=nTt(e[s.level],s)}HP(e,t._nw,n),HP(e,t._ne,n),HP(e,t._sw,n),HP(e,t._se,n)}function nTt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];oZ(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var CA=dS;var iTt=15;function Qxe(e){this.ellipsoid=e.ellipsoid??te.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}Qxe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function oTt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Dt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new co(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new k(r.xmin,r.ymin),s.rectangleNortheastInMeters=new k(r.xmax,r.ymax),e.tilingScheme=new ws(s)}else throw new ce("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new ce("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?vh.LERC:vh.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new CA(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new CA(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function rTt(e,t,n){try{let i=await t.fetchJson();oTt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function Vy(e){e=e??V.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new _e}Object.defineProperties(Vy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});Vy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new Qxe(t);await rTt(o,i);let r=new Vy(t);return o.build(r),r._resource=n,r};Vy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(rZ(this,n+1,e*2,t*2))){let h=kxe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new Qc({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):iTt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){if(l(a)&&a.state===hi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=hi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function rZ(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}Vy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Vy.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=rZ(this,n,e,t);if(l(i))return i;kxe(this,n,e,t)};Vy.prototype.loadTileDataAvailability=function(e,t,n){};function sTt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new k(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let A=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new k(u.x,e.y)),--u.x,--A,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let _=e.x;_<=A;++_)if(i[m+_]!==s){h=!0;break}h?(a.push(new k(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function aTt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new k(0,0)];for(;a.length>0;){let c=a.pop(),u=sTt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function kxe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(A){let g=aTt(o,r,s,s,A.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let _=0;_<g.length;++_){let y=g[_];m.addAvailableTileRange(t,y.startX,y.startY,y.endX,y.endY)}return rZ(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(A){return delete c[a],A}),{promise:h,request:u}):{}}var Uxe=Vy;var Gxe="https://dev.virtualearth.net/REST/v1/Locations";function sZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new we({url:Gxe,queryParameters:n}),this._credit=new Dt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(sZ.prototype,{url:{get:function(){return Gxe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});sZ.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var zxe=sZ;function aZ(){}Object.defineProperties(aZ.prototype,{credit:{get:function(){}}});aZ.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var Vxe=aZ;var cTt=new se,Hxe=new d,hS=new d;function lTt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=cTt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,A;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,Hxe),d.multiplyByScalar(h,.5,h),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],Hxe),d.multiplyByScalar(f,.5,f),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],A=R.multiplyByVector(Hy.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,A.x,o),d.multiplyByScalar(u,A.y,hS),d.add(o,hS,o),d.multiplyByScalar(f,A.z,hS),d.add(o,hS,o),d.multiplyByScalar(h,A.w,hS),d.add(o,hS,o)}}var uTt=new d,fTt=new d;function Hy(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=uTt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=fTt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=lTt(this),this._lastTimeIndex=0}Object.defineProperties(Hy.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});Hy.catmullRomCoefficientMatrix=new R(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);Hy.prototype.findTimeInterval=_o.prototype.findTimeInterval;Hy.prototype.wrapTime=_o.prototype.wrapTime;Hy.prototype.clampTime=_o.prototype.clampTime;Hy.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var Wxe=Hy;var S4={};S4.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,A,g,m,_;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(A=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),A!==1&&(r.push(-1),r.push(1),r.push(2),r.push(A))):c&&(m=(e-o)/(n-o),_=(e-o)/(i-o),r.push(0),r.push(1),_!==1&&(r.push(-1),r.push(2),r.push(1),r.push(_)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(_=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(_),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),A=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(A)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};S4.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,A=i-a,g=1/(h*u+f*A),m=t-a,_=e-s,y=(h*_+f*m)*g,C=(-A*_+u*m)*g,E=1-y-C;return l(c)?(c.x=y,c.y=C,c.z=E,c):new d(y,C,E)};S4.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let A=u/h,g=f/h;if(A>=0&&A<=1&&g>=0&&g<=1)return l(c)||(c=new k),c.x=e+A*(n-e),c.y=t+A*(i-t),c};var Wy=S4;function jy(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=B4(e.westIndices,o,t),this._southIndices=B4(e.southIndices,r,t),this._eastIndices=B4(e.eastIndices,o,t),this._northIndices=B4(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(jy.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var w4=[];function B4(e,t,n){w4.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)w4[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(w4.sort(t),Fe.createTypedArray(n,w4)):e}var jxe="createVerticesFromQuantizedTerrainMesh",dTt=new mi(jxe),hTt=new mi(jxe,fA.maximumAsynchronousTasks);jy.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?hTt:dTt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let A=this;return Promise.resolve(h).then(function(g){let m=A._quantizedVertices.length/3,_=m+A._westIndices.length+A._southIndices.length+A._eastIndices.length+A._northIndices.length,y=Fe.createTypedArray(_,g.indices),C=new Float32Array(g.vertices),E=g.center,I=g.minimumHeight,b=g.maximumHeight,S=A._boundingSphere,B=A._orientedBoundingBox,v=d.clone(g.occludeePointInScaledSpace)??A._horizonOcclusionPoint,P=g.vertexStride,N=Il.clone(g.encoding);return A._mesh=new Ph(E,C,y,g.indexCountWithoutSkirts,m,I,b,S,v,P,B,N,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),A._quantizedVertices=void 0,A._encodedNormals=void 0,A._indices=void 0,A._uValues=void 0,A._vValues=void 0,A._heightValues=void 0,A._westIndices=void 0,A._southIndices=void 0,A._eastIndices=void 0,A._northIndices=void 0,A._mesh})};var mTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);jy.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=mTt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,_=u?g*.5:this._southSkirtHeight,y=c?this._eastSkirtHeight:g*.5,C=u?this._northSkirtHeight:g*.5,E=this._credits;return Promise.resolve(A).then(function(I){let b=new Uint16Array(I.vertices),S=Fe.createTypedArray(b.length/3,I.indices),B;return l(I.encodedNormals)&&(B=new Uint8Array(I.encodedNormals)),new jy({quantizedVertices:b,indices:S,encodedNormals:B,minimumHeight:I.minimumHeight,maximumHeight:I.maximumHeight,boundingSphere:le.clone(I.boundingSphere),orientedBoundingBox:Qn.clone(I.orientedBoundingBox),horizonOcclusionPoint:d.clone(I.horizonOcclusionPoint),westIndices:I.westIndices,southIndices:I.southIndices,eastIndices:I.eastIndices,northIndices:I.northIndices,westSkirtHeight:m,southSkirtHeight:_,eastSkirtHeight:y,northSkirtHeight:C,childTileMask:0,credits:E,createdByUpsampling:!0})})};var cZ=32767,Yxe=new d;jy.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1);i*=cZ;let o=D.clamp((n-e.south)/e.height,0,1);return o*=cZ,l(this._mesh)?_Tt(this,i,o):yTt(this,i,o)};function qxe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var ATt=new k,pTt=new k,gTt=new k;function _Tt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,ATt),g=r.decodeTextureCoordinates(o,f,pTt),m=r.decodeTextureCoordinates(o,h,gTt);if(qxe(t,n,A.x,A.y,g.x,g.y,m.x,m.y)){let _=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,Yxe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}}function yTt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=i[u],g=i[f],m=i[h],_=o[u],y=o[f],C=o[h];if(qxe(t,n,A,_,g,y,m,C)){let E=Wy.computeBarycentricCoordinates(t,n,A,_,g,y,m,C,Yxe);if(E.x>=-1e-15&&E.y>=-1e-15&&E.z>=-1e-15){let I=E.x*r[u]+E.y*r[f]+E.z*r[h];return D.lerp(e._minimumHeight,e._maximumHeight,I/cZ)}}}}jy.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};jy.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var mS=jy;function CTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function Xxe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??te.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}Xxe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function Jxe(e,t,n){if(!t.format){let _="The tile format is not specified in the layer.json file.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(!t.tiles||t.tiles.length===0){let _="The layer.json file does not specify any tile URL templates.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let _=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new ws({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let _=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let _=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,A=t.available,g;if(l(A)&&!l(h)){g=new CA(e.tilingScheme,A.length);for(let _=0;_<A.length;++_){let y=A[_],C=e.tilingScheme.getNumberOfYTilesAtLevel(_);l(e.overallAvailability[_])||(e.overallAvailability[_]=[]);for(let E=0;E<y.length;++E){let I=y[E],b=C-I.endY-1,S=C-I.startY-1;e.overallAvailability[_].push([I.startX,b,I.endX,S]),g.addAvailableTileRange(_,I.startX,b,I.endX,S)}}}else l(h)&&(f=new CA(e.tilingScheme,u),g=new CA(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new CTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await fZ(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function ETt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return fZ(e,n);throw new ce(i)}async function ITt(e,t,n){await Jxe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new CA(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Dt(e.attribution);e.tileCredits.push(o)}return!0}async function fZ(e,t){try{let n=await e.layerJsonResource.fetchJson();return ITt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await Jxe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):ETt(e,n,t)}}function zh(e){e=e??V.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new _e;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var lZ={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function Kxe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function xTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new Qc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function bTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,_=Uint16Array.BYTES_PER_ELEMENT,y=_*m,C=new DataView(t),E=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let I=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let b=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=new le(new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0)),C.getFloat64(a+f,!0));a+=h;let B=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let v=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let P=new Uint16Array(t,a,v*3);a+=v*g,v>64*1024&&(_=Uint32Array.BYTES_PER_ELEMENT,y=_*m);let N=P.subarray(0,v),L=P.subarray(v,2*v),p=P.subarray(v*2,3*v);Fn.zigZagDeltaDecode(N,L,p),a%_!==0&&(a+=_-a%_);let x=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let T=Fe.createTypedArrayFromArrayBuffer(v,t,a,x*m);a+=x*y;let w=0,M=T.length;for(let fe=0;fe<M;++fe){let ye=T[fe];T[fe]=w-ye,ye===0&&++w}let O=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let U=Fe.createTypedArrayFromArrayBuffer(v,t,a,O);a+=O*_;let Q=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let z=Fe.createTypedArrayFromArrayBuffer(v,t,a,Q);a+=Q*_;let F=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Fe.createTypedArrayFromArrayBuffer(v,t,a,F);a+=F*_;let W=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Z=Fe.createTypedArrayFromArrayBuffer(v,t,a,W);a+=W*_;let Y,$;for(;a<C.byteLength;){let fe=C.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let ye=C.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,fe===lZ.OCT_VERTEX_NORMALS&&e._requestVertexNormals)Y=new Uint8Array(t,a,v*2);else if(fe===lZ.WATER_MASK&&e._requestWaterMask)$=new Uint8Array(t,a,ye);else if(fe===lZ.METADATA&&e._requestMetadata){let Ie=C.getUint32(a,!0);if(Ie>0){let Te=yr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,Ie).available;if(l(Te))for(let ke=0;ke<Te.length;++ke){let Ge=n+ke+1,qe=Te[ke],tt=e._tilingScheme.getNumberOfYTilesAtLevel(Ge);for(let $t=0;$t<qe.length;++$t){let it=qe[$t],tn=tt-it.endY-1,Wt=tt-it.startY-1;e.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt),r.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=ye}let X=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ge=Qn.fromRectangle(he,I,b,e._tilingScheme.ellipsoid);return new mS({center:E,minimumHeight:I,maximumHeight:b,boundingSphere:S,orientedBoundingBox:ge,horizonOcclusionPoint:B,quantizedVertices:P,encodedNormals:Y,indices:T,westIndices:U,southIndices:z,eastIndices:H,northIndices:Z,westSkirtHeight:X,southSkirtHeight:X,eastSkirtHeight:X,northSkirtHeight:X,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:$,credits:e._tileCredits})}zh.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=dZ(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):Zxe(this,e,t,n,r,i)};function Zxe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new ce("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],A=o.resource;l(A._ionEndpoint)&&!l(A._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=Kxe(void 0)):u=Kxe(c);let g=A.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?xTt(e,m,i,t,n):bTt(e,m,i,t,n,o):Promise.reject(new ce("Mesh buffer doesn't exist."))})}Object.defineProperties(zh.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});zh.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};zh.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return zh.fromUrl(n,t)};zh.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash();let i=new Xxe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await fZ(i);let o=new zh(t);return i.build(o),o};zh.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(dZ(this,e,t,n,i[r],r===0).result)return;return!1};zh.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=dZ(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function uZ(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function dZ(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=uZ(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let A=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});h=Zxe(e,f.x,f.y,f.level,o,A),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=uZ(o,f.x,f.y,f.level)}return{result:!1}}zh._getAvailabilityTile=uZ;var AS=zh;function sg(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new ru(n),this._workerName="createCircleGeometry"}sg.packedLength=ru.packedLength;sg.pack=function(e,t,n){return ru.pack(e._ellipseGeometry,t,n)};var $xe=new ru({center:new d,semiMajorAxis:1,semiMinorAxis:1}),uc={center:new d,radius:void 0,ellipsoid:te.clone(te.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Pe,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};sg.unpack=function(e,t,n){let i=ru.unpack(e,t,$xe);return uc.center=d.clone(i._center,uc.center),uc.ellipsoid=te.clone(i._ellipsoid,uc.ellipsoid),uc.ellipsoid=te.clone(i._ellipsoid,$xe._ellipsoid),uc.height=i._height,uc.extrudedHeight=i._extrudedHeight,uc.granularity=i._granularity,uc.vertexFormat=Pe.clone(i._vertexFormat,uc.vertexFormat),uc.stRotation=i._stRotation,uc.shadowVolume=i._shadowVolume,l(n)?(uc.semiMajorAxis=i._semiMajorAxis,uc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ru(uc),n):(uc.radius=i._semiMajorAxis,new sg(uc))};sg.createGeometry=function(e){return ru.createGeometry(e._ellipseGeometry)};sg.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new sg({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(sg.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var ebe=sg;function pS(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new ld(n),this._workerName="createCircleOutlineGeometry"}pS.packedLength=ld.packedLength;pS.pack=function(e,t,n){return ld.pack(e._ellipseGeometry,t,n)};var TTt=new ld({center:new d,semiMajorAxis:1,semiMinorAxis:1}),af={center:new d,radius:void 0,ellipsoid:te.clone(te.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};pS.unpack=function(e,t,n){let i=ld.unpack(e,t,TTt);return af.center=d.clone(i._center,af.center),af.ellipsoid=te.clone(i._ellipsoid,af.ellipsoid),af.height=i._height,af.extrudedHeight=i._extrudedHeight,af.granularity=i._granularity,af.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(af.semiMajorAxis=i._semiMajorAxis,af.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ld(af),n):(af.radius=i._semiMajorAxis,new pS(af))};pS.createGeometry=function(e){return ld.createGeometry(e._ellipseGeometry)};var tbe=pS;function gS(e){e=e??V.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this._credit=n}Object.defineProperties(gS.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});gS.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new Qc({buffer:c,width:r,height:s})})};gS.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};gS.prototype.getTileDataAvailable=function(e,t,n){};gS.prototype.loadTileDataAvailability=function(e,t,n){};var nbe=gS;function ibe(e){this.proxy=e}ibe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var obe=ibe;var STt={SEARCH:0,AUTOCOMPLETE:1},w0=Object.freeze(STt);function D4(){me.throwInstantiationError()}Object.defineProperties(D4.prototype,{credit:{get:me.throwInstantiationError}});D4.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Dt.getIonCredit)};D4.prototype.geocode=me.throwInstantiationError;var WP=D4;function rbe(){me.throwInstantiationError()}rbe.createGeometry=function(e){me.throwInstantiationError()};var sbe=rbe;var RTt=Es(hZ(),1);function wTt(e,t){return(e&t)!==0}var Tl=wTt;var BTt=[1,2,4,8],abe=15,DTt=16,vTt=64,PTt=128;function EA(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}EA.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new EA(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};EA.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};EA.prototype.hasSubtree=function(){return Tl(this._bits,DTt)};EA.prototype.hasImagery=function(){return Tl(this._bits,vTt)};EA.prototype.hasTerrain=function(){return Tl(this._bits,PTt)};EA.prototype.hasChildren=function(){return Tl(this._bits,abe)};EA.prototype.hasChild=function(e){return Tl(this._bits,BTt[e])};EA.prototype.getChildBitmask=function(){return this._bits&abe};var v4=EA;function MTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var NTt=MTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function cf(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=D.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(cf.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});cf.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof we)&&(t=e.url);let n=we.createIfNeeded(t);n.appendForwardSlash();let i=new cf;i._resource=n;try{await LTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${lbe(i,"",1).url}: ${o}`;throw new ce(r)}return i};cf.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;Tl(t,r)?Tl(e,r)&&(s|=1):(s|=2,Tl(e,r)||(s|=1)),i+=s}return i};cf.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];Tl(s,2)?Tl(s,1)||(t|=r):(n|=r,Tl(s,1)&&(t|=r))}return{x:t,y:n,level:i}};cf.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var cbe=new mi("decodeGoogleEarthEnterprisePacket");cf.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=lbe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return cbe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let A=Object.keys(u);A.sort(function(m,_){return m.length-_.length});let g=A.length;for(let m=0;m<g;++m){let _=A[m];if(u[_]!==null){let C=v4.clone(u[_]),E=_.length;if(E===h)C.setParent(f);else if(E>1){let I=r[_.substring(0,_.length-1)];C.setParent(I)}r[_]=C}else r[_]=null}})})};cf.prototype.populateSubtree=function(e,t,n,i){let o=cf.tileXYToQuadKey(e,t,n);return pZ(this,o,i)};function pZ(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new ce(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)}).finally(function(){delete a[o]})}cf.prototype.getTileInformation=function(e,t,n){let i=cf.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};cf.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function lbe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var mZ,AZ;function LTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(AZ)){let n=fn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;AZ=q0(n).then(function(){mZ=window.cesiumGoogleEarthDbRootParser(RTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return AZ.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=mZ.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return cbe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=mZ.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new Dt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=NTt})}var Yy=cf;function B0(e){e=e??V.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(B0.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var dbe="createVerticesFromGoogleEarthEnterpriseBuffer",OTt=new mi(dbe),FTt=new mi(dbe,fA.maximumAsynchronousTasks),ube=new ae,gZ=new ae;B0.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,ube),t.tileXYToRectangle(n,i,o,gZ);let u=c.cartographicToCartesian(ae.center(gZ)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?FTt:OTt).scheduleTask({buffer:this._buffer,nativeRectangle:ube,rectangle:gZ,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(_){return m._mesh=new Ph(u,new Float32Array(_.vertices),new Uint16Array(_.indices),_.indexCountWithoutSkirts,_.vertexCountWithoutSkirts,_.minimumHeight,_.maximumHeight,le.clone(_.boundingSphere3D),d.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,Qn.clone(_.orientedBoundingBox),Il.clone(_.encoding),_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),m._minimumHeight=_.minimumHeight,m._maximumHeight=_.maximumHeight,m._buffer=void 0,m._mesh})};B0.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1),o=D.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?zTt(this,i,o):WTt(this,i,o,e)};var QTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);B0.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=QTt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=this;return A.then(function(m){let _=new Uint16Array(m.vertices),y=Fe.createTypedArray(_.length/3,m.indices),C=g._skirtHeight;return new mS({quantizedVertices:_,indices:y,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:le.clone(m.boundingSphere),orientedBoundingBox:Qn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:C,southSkirtHeight:C,eastSkirtHeight:C,northSkirtHeight:C,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};B0.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};B0.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var kTt=new k,UTt=new k,GTt=new k,hbe=new d;function zTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,kTt),g=r.decodeTextureCoordinates(o,f,UTt),m=r.decodeTextureCoordinates(o,h,GTt),_=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,hbe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}var VTt=Uint16Array.BYTES_PER_ELEMENT,fbe=Uint32Array.BYTES_PER_ELEMENT,_Z=Int32Array.BYTES_PER_ELEMENT,HTt=Float32Array.BYTES_PER_ELEMENT,yZ=Float64Array.BYTES_PER_ELEMENT;function WTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let S=0;S<r;++S)u+=c.getUint32(u,!0),u+=fbe;u+=fbe,u+=2*yZ;let f=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let h=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let A=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=_Z;let _=c.getInt32(u,!0)*3;u+=_Z,u+=_Z;let y=new Array(m),C=new Array(m),E=new Array(m),I;for(I=0;I<m;++I)y[I]=s+c.getUint8(u++)*A,C[I]=a+c.getUint8(u++)*g,E[I]=c.getFloat32(u,!0)*6371010,u+=HTt;let b=new Array(_);for(I=0;I<_;++I)b[I]=c.getUint16(u,!0),u+=VTt;for(I=0;I<_;I+=3){let S=b[I],B=b[I+1],v=b[I+2],P=y[S],N=y[B],L=y[v],p=C[S],x=C[B],T=C[v],w=Wy.computeBarycentricCoordinates(t,n,P,p,N,x,L,T,hbe);if(w.x>=-1e-15&&w.y>=-1e-15&&w.z>=-1e-15)return w.x*E[S]+w.y*E[B]+w.z*E[v]}}var jP=B0;var bd={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},P4=new K;function R4(){this._terrainCache={},this._lastTidy=K.now()}R4.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:K.now()}};R4.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};R4.prototype.tidy=function(){if(K.now(P4),K.secondsDifference(P4,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];K.secondsDifference(P4,r.timestamp)>10&&delete e[o]}K.clone(P4,this._lastTidy)}};function qy(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new R4,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new _e}Object.defineProperties(qy.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});qy.fromMetadata=function(e,t){if(!e.terrainPresent)throw new ce(`The server ${e.url} doesn't have terrain`);let n=new qy(t);return n._metadata=e,n};var jTt=new mi("decodeGoogleEarthEnterprisePacket");function mbe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===bd.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}qy.prototype.requestTileGeometry=function(e,t,n,i){let o=Yy.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new ce("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=bd.UNKNOWN);let u=r.get(o);if(l(u)){let C=s.providers[a.terrainProvider];return Promise.resolve(new jP({buffer:u,childTileMask:mbe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===bd.NONE)return Promise.reject(new ce("Terrain tile doesn't exist"))}else return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}));let f,h=o,A=-1;switch(c){case bd.SELF:A=a.terrainVersion;break;case bd.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),A=f.terrainVersion;break;case bd.UNKNOWN:a.hasTerrain()?A=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(A=f.terrainVersion));break}if(A<0)return Promise.reject(new ce("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,_,y;if(l(g[h]))_=g[h],y=m[h];else{y=i;let C=YTt(this,h,A,y).fetchArrayBuffer();if(!l(C))return;_=C.then(function(E){return l(E)?jTt.scheduleTask({buffer:E,type:"Terrain",key:s.key},[E]).then(function(I){let b=s.getTileInformationFromQuadKey(h);b.terrainState=bd.SELF,r.add(h,I[0]);let S=b.terrainProvider,B=I.length-1;for(let v=0;v<B;++v){let P=h+v.toString(),N=s.getTileInformationFromQuadKey(P);l(N)&&(r.add(P,I[v+1]),N.terrainState=bd.PARENT,N.terrainProvider===0&&(N.terrainProvider=S))}}):Promise.reject(new ce("Failed to load terrain."))}),g[h]=_,m[h]=y,_=_.finally(function(){delete g[h],delete m[h]})}return _.then(function(){let C=r.get(o);if(l(C)){let E=s.providers[a.terrainProvider];return new jP({buffer:C,childTileMask:mbe(o,a,s),credits:l(E)?[E]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new ce("Failed to load terrain."))}).catch(function(C){return y.state===hi.CANCELLED?(i.state=y.state,Promise.reject(C)):(a.terrainState=bd.NONE,Promise.reject(C))})};qy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};qy.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=Yy.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===bd.NONE)return!1;if((!l(s)||s===bd.UNKNOWN)&&(r.terrainState=bd.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};qy.prototype.loadTileDataAvailability=function(e,t,n){};function YTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var Abe=qy;var qTt="https://maps.googleapis.com/maps/api/geocode/json",pbe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function CZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._resource=new we({url:qTt,queryParameters:{key:t}}),this._credit=new Dt(pbe,!0)}Object.defineProperties(CZ.prototype,{credit:{get:function(){return this._credit}}});CZ.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new ce(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:pbe,collapsible:!1}}})};var gbe=CZ;var M4={};M4.defaultApiKey=void 0;M4.mapTilesApiEndpoint=new we({url:"https://tile.googleapis.com/v1/"});M4.getDefaultCredit=function(){return new Dt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var _S=M4;var Ls={};Ls.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Ls.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Ls.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Ls.defaultAccessToken=void 0;Ls.defaultShareKey=void 0;Ls._getAuthorizationHeader=function(){return l(Ls.defaultShareKey)?`Basic ${Ls.defaultShareKey}`:`Bearer ${Ls.defaultAccessToken}`};Ls.apiEndpoint=new we({url:"https://api.bentley.com"});Ls.getExports=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}mesh-export`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Ls.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataMetadata=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataURL=async function(e,t,n){let i=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new ce("Not allowed, forbidden");if(o.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new ce(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${o.statusCode}`)}};var _a=Ls;var YP={};YP.type=void 0;YP.getRequiredDataPoints=me.throwInstantiationError;YP.interpolateOrderZero=me.throwInstantiationError;YP.interpolate=me.throwInstantiationError;var _be=YP;var KTt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},Ky=Object.freeze(KTt);function EZ(e){this._url=we.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(EZ.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});EZ.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===w0.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var N4=EZ;function XTt(e){if(!Object.values(Ky).some(t=>t===e))throw new me(`Invalid geocodeProviderType: "${e}"`)}var ybe=Object.freeze({[Ky.GOOGLE]:"google",[Ky.BING]:"bing",[Ky.DEFAULT]:void 0});function JTt(e){return ybe[e]}function ZTt(e){return Object.entries(ybe).find(t=>t[1]===e)[0]}function IZ(e){e=e??V.EMPTY_OBJECT;let t=e.geocodeProviderType??Ky.DEFAULT,n=e.accessToken??mm.defaultAccessToken,i=we.createIfNeeded(e.server??mm.defaultServer);i.appendForwardSlash();let o=mm.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Dt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new N4(r),this.geocodeProviderType=t}Object.defineProperties(IZ.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return ZTt(this._pelias.url.queryParameters.geocoder)},set:function(e){XTt(e);let t={...this._pelias.url.queryParameters,geocoder:JTt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});IZ.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var yS=IZ;function L4(){me.throwInstantiationError()}Object.defineProperties(L4.prototype,{ellipsoid:{get:me.throwInstantiationError}});L4.prototype.project=me.throwInstantiationError;L4.prototype.unproject=me.throwInstantiationError;var Cbe=L4;function CS(e){e=e??V.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(CS.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});CS.prototype.findTimeInterval=_o.prototype.findTimeInterval;CS.prototype.wrapTime=_o.prototype.wrapTime;CS.prototype.clampTime=_o.prototype.clampTime;CS.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var Ebe=CS;function xZ(e,t,n){e=we.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Dt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(xZ.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});xZ.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:wt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var Ibe=xZ;var $Tt={packedLength:void 0,pack:me.throwInstantiationError,unpack:me.throwInstantiationError},xbe=$Tt;var eSt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:me.throwInstantiationError,unpackInterpolationResult:me.throwInstantiationError},bbe=eSt;function Tbe(){me.throwInstantiationError()}Tbe.prototype.getURL=me.throwInstantiationError;var Sbe=Tbe;function tSt(e,t,n,i,o,r,s){let a=Xi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,A=n.alpha,g=i.red,m=i.green,_=i.blue,y=i.alpha;if(G.equals(n,i)){for(c=0;c<a;c++)r[s++]=G.floatToByte(u),r[s++]=G.floatToByte(f),r[s++]=G.floatToByte(h),r[s++]=G.floatToByte(A);return s}let C=(g-u)/a,E=(m-f)/a,I=(_-h)/a,b=(y-A)/a,S=s;for(c=0;c<a;c++)r[S++]=G.floatToByte(u+c*C),r[S++]=G.floatToByte(f+c*E),r[S++]=G.floatToByte(h+c*I),r[S++]=G.floatToByte(A+c*b);return S}function qP(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??te.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*G.packedLength:1,this.packedLength=o+te.packedLength+3}qP.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};qP.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t);t+=te.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new qP({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var O4=new Array(2),F4=new Array(2),nSt={positions:O4,height:F4,ellipsoid:void 0,minDistance:void 0,granularity:void 0};qP.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=D.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,A,g,m,_=0;if(o===un.GEODESIC||o===un.RHUMB){let b,S,B;o===un.GEODESIC?(b=D.chordLength(r,s.maximumRadius),S=Xi.numberOfPoints,B=Xi.generateArc):(b=r,S=Xi.numberOfPointsRhumbLine,B=Xi.generateRhumbArc);let v=Xi.extractHeights(t,s),P=nSt;if(o===un.GEODESIC?P.minDistance=a:P.granularity=r,P.ellipsoid=s,c){let N=0;for(u=0;u<f-1;u++)N+=S(t[u],t[u+1],b)+1;h=new Float64Array(N*3),g=new Uint8Array(N*4),P.positions=O4,P.height=F4;let L=0;for(u=0;u<f-1;++u){O4[0]=t[u],O4[1]=t[u+1],F4[0]=v[u],F4[1]=v[u+1];let p=B(P);if(l(n)){let x=p.length/3;m=n[u];for(let T=0;T<x;++T)g[L++]=G.floatToByte(m.red),g[L++]=G.floatToByte(m.green),g[L++]=G.floatToByte(m.blue),g[L++]=G.floatToByte(m.alpha)}h.set(p,_),_+=p.length}}else if(P.positions=t,P.height=v,h=new Float64Array(B(P)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let L=t[u],p=t[u+1],x=n[u],T=n[u+1];_=tSt(L,p,x,T,a,g,_)}let N=n[f-1];g[_++]=G.floatToByte(N.red),g[_++]=G.floatToByte(N.green),g[_++]=G.floatToByte(N.blue),g[_++]=G.floatToByte(N.alpha)}}else{A=c?f*2-2:f,h=new Float64Array(A*3),g=l(n)?new Uint8Array(A*4):void 0;let b=0,S=0;for(u=0;u<f;++u){let B=t[u];if(c&&u>0&&(d.pack(B,h,b),b+=3,m=n[u-1],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(B,h,b),b+=3,l(n)&&(m=n[u],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha))}}let y=new En;y.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(y.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),A=h.length/3;let C=(A-1)*2,E=Fe.createTypedArray(A,C),I=0;for(u=0;u<A-1;++u)E[I++]=u,E[I++]=u+1;return new ht({attributes:y,indices:E,primitiveType:Me.LINES,boundingSphere:le.fromPoints(t)})};var wbe=qP;function ES(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new ka(i),this._workerName="createSphereGeometry"}ES.packedLength=ka.packedLength;ES.pack=function(e,t,n){return ka.pack(e._ellipsoidGeometry,t,n)};var iSt=new ka,Xy={radius:void 0,radii:new d,vertexFormat:new Pe,stackPartitions:void 0,slicePartitions:void 0};ES.unpack=function(e,t,n){let i=ka.unpack(e,t,iSt);return Xy.vertexFormat=Pe.clone(i._vertexFormat,Xy.vertexFormat),Xy.stackPartitions=i._stackPartitions,Xy.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,Xy.radii),n._ellipsoidGeometry=new ka(Xy),n):(Xy.radius=i._radii.x,new ES(Xy))};ES.createGeometry=function(e){return ka.createGeometry(e._ellipsoidGeometry)};var Bbe=ES;function Jy(e){}Object.defineProperties(Jy.prototype,{ellipsoid:{get:me.throwInstantiationError},rectangle:{get:me.throwInstantiationError},projection:{get:me.throwInstantiationError}});Jy.prototype.getNumberOfXTilesAtLevel=me.throwInstantiationError;Jy.prototype.getNumberOfYTilesAtLevel=me.throwInstantiationError;Jy.prototype.rectangleToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToRectangle=me.throwInstantiationError;Jy.prototype.positionToTileXY=me.throwInstantiationError;var Dbe=Jy;function oSt(e,t){this.rectangle=e,this.maxLevel=t}function vbe(e){this.ellipsoid=e.ellipsoid??te.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}vbe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function rSt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new co({ellipsoid:e.ellipsoid});else throw new ce(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=D.toRadians(parseFloat(s.getAttribute("minx"))),c=D.toRadians(parseFloat(s.getAttribute("miny"))),u=D.toRadians(parseFloat(s.getAttribute("maxx"))),f=D.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new oSt(new ae(a,c,u,f),h))}}function sSt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function aSt(e,t,n){try{let i=await t.fetchXML();rSt(e,i)}catch(i){sSt(t,i,n)}}function Zy(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(Zy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Zy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=new vbe(t),i=we.createIfNeeded(e);await aSt(n,i);let o=new Zy(t);return n.build(o),o._resource=i,o};Zy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new Qc({buffer:qh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:cSt(a,e,t,n),structure:a._terrainDataStructure})})};Zy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var Pbe=new ae;function cSt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,Pbe);l(h)&&(Q4(o,f,t*2,n*2,i+1)&&(a|=4),Q4(o,f,t*2+1,n*2,i+1)&&(a|=8),Q4(o,f,t*2,n*2+1,i+1)&&(a|=1),Q4(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function Q4(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,Pbe))}Zy.prototype.getTileDataAvailable=function(e,t,n){};Zy.prototype.loadTileDataAvailability=function(e,t,n){};var Rbe=Zy;function D0(e){e=e??V.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??je.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(D0.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(D0.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=lSt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});D0.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};D0.prototype.isDestroyed=function(){return!1};D0.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};D0.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??je.MINIMUM_VALUE,s=K.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?this.tolerance??1:.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function lSt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var Mbe=D0;var uSt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},Nbe=Object.freeze(uSt);function fSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var k4=fSt;function dSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:te.WGS84})}var IS=dSt;var hSt=1953029805,mSt=2917034100;function bZ(e,t){if(bZ.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new ce("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===hSt||o===mSt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}bZ.passThroughDataForTesting=!1;var U4=bZ;function Lbe(e,t){return Pr("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(Lbe,"EMPTY_OBJECT",{get:function(){return Pr("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),V.EMPTY_OBJECT}});var Obe=Lbe;var ASt=new d;function pSt(e,t,n,i){let o=uI(e,t,n,i,ASt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var Fbe=pSt;function gSt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var xS=gSt;function _St(e){switch(e){case ee.FLOAT:return"float";case ee.FLOAT_VEC2:return"vec2";case ee.FLOAT_VEC3:return"vec3";case ee.FLOAT_VEC4:return"vec4";case ee.FLOAT_MAT2:return"mat2";case ee.FLOAT_MAT3:return"mat3";case ee.FLOAT_MAT4:return"mat4";case ee.SAMPLER_2D:return"sampler2D";case ee.BOOL:return"bool"}}var Qbe=_St;function ySt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var G4=ySt;var CSt=new d(1,1,1);function TZ(e){e=e??CSt,this._dimensions=d.clone(e)}Object.defineProperties(TZ.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var ESt=new d;TZ.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,ESt),i=D.randomBetween(-n.x,n.x),o=D.randomBetween(-n.y,n.y),r=D.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var kbe=TZ;function IA(){this.featurePropertiesDirty=!1}Object.defineProperties(IA.prototype,{featuresLength:{get:function(){me.throwInstantiationError()}},pointsLength:{get:function(){me.throwInstantiationError()}},trianglesLength:{get:function(){me.throwInstantiationError()}},geometryByteLength:{get:function(){me.throwInstantiationError()}},texturesByteLength:{get:function(){me.throwInstantiationError()}},batchTableByteLength:{get:function(){me.throwInstantiationError()}},innerContents:{get:function(){me.throwInstantiationError()}},ready:{get:function(){me.throwInstantiationError()}},tileset:{get:function(){me.throwInstantiationError()}},tile:{get:function(){me.throwInstantiationError()}},url:{get:function(){me.throwInstantiationError()}},batchTable:{get:function(){me.throwInstantiationError()}},metadata:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}},group:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}}});IA.prototype.hasProperty=function(e,t){me.throwInstantiationError()};IA.prototype.getFeature=function(e){me.throwInstantiationError()};IA.prototype.applyDebugSettings=function(e,t){me.throwInstantiationError()};IA.prototype.applyStyle=function(e){me.throwInstantiationError()};IA.prototype.update=function(e,t){me.throwInstantiationError()};IA.prototype.pick=function(e,t,n){me.throwInstantiationError()};IA.prototype.isDestroyed=function(){me.throwInstantiationError()};IA.prototype.destroy=function(){me.throwInstantiationError()};var Ube=IA;function bS(e,t){this._conditionsExpression=ze(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,xSt(this,t)}Object.defineProperties(bS.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function ISt(e,t){this.condition=e,this.expression=t}function xSt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new ISt(new Hd(a,t),new Hd(c,t)))}e._runtimeConditions=n}bS.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};bS.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};bS.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u}) + { + return ${f}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};bS.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];si(e,o.condition.getVariables()),si(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var z4=bS;function $y(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,bSt(this,e)}function bSt(e,t){t=ze(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??V.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new Hd(o[r],i))}e._meta=n,e._ready=!0}function dr(e,t){let n=(e._style??V.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new Hd(String(t));if(typeof t=="string")return new Hd(t,n);if(l(t.conditions))return new z4(t,n)}else return;return t}function hr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ze(e.conditionsExpression,!0)}else return;return e}Object.defineProperties($y.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=dr(this,e),this._style.show=hr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=dr(this,e),this._style.color=hr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=dr(this,e),this._style.pointSize=hr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=dr(this,e),this._style.pointOutlineColor=hr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=dr(this,e),this._style.pointOutlineWidth=hr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=dr(this,e),this._style.labelColor=hr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=dr(this,e),this._style.labelOutlineColor=hr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=dr(this,e),this._style.labelOutlineWidth=hr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=dr(this,e),this._style.font=hr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=dr(this,e),this._style.labelStyle=hr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=dr(this,e),this._style.labelText=hr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=dr(this,e),this._style.backgroundColor=hr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=dr(this,e),this._style.backgroundPadding=hr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=dr(this,e),this._style.backgroundEnabled=hr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=dr(this,e),this._style.scaleByDistance=hr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=dr(this,e),this._style.translucencyByDistance=hr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=dr(this,e),this._style.distanceDisplayCondition=hr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=dr(this,e),this._style.heightOffset=hr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=dr(this,e),this._style.anchorLineEnabled=hr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=dr(this,e),this._style.anchorLineColor=hr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=dr(this,e),this._style.image=hr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=dr(this,e),this._style.disableDepthTestDistance=hr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=dr(this,e),this._style.horizontalOrigin=hr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=dr(this,e),this._style.verticalOrigin=hr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=dr(this,e),this._style.labelHorizontalOrigin=hr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=dr(this,e),this._style.labelVerticalOrigin=hr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});$y.fromUrl=function(e){return we.createIfNeeded(e).fetchJson(e).then(function(n){return new $y(n)})};$y.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};$y.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};$y.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};$y.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&si(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&si(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&si(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var TS=$y;function KP(e){e=e??V.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new rS({comparator:KP.comparator})}KP.prototype.addSubtree=function(e){let t=new TSt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};KP.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};KP.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function TSt(e,t){this.subtree=e,this.stamp=t}var V4=KP;function XP(e){e=e??V.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=R.IDENTITY.clone(),shapeTransform:f=R.IDENTITY.clone(),minBounds:h,maxBounds:A,minimumValues:g,maximumValues:m,maximumTileCount:_}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=A,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===lc.ELLIPSOID?kh.Z_UP:kh.Y_UP,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=_,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new V4}Object.defineProperties(XP.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});XP.fromUrl=async function(e){let t=we.createIfNeeded(e),n=await t.fetchJson();wSt(n);let i=NSt(n,t);await i.load();let{root:o}=n,r=Ii(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new lb({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=LSt(s,c);Object.assign(u,BSt(o)),l(o.transform)?u.globalTransform=R.unpack(o.transform):u.globalTransform=R.clone(R.IDENTITY),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=SSt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new XP(u),h=new fb(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,Qi.unload(i),f};function SSt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(tx.TILESET_TILE_COUNT)}function wSt(e){let t=e.root;if(!l(t.content))throw new ce("Root must have content");if(!Ii(t.content,"3DTILES_content_voxels"))throw new ce("Root tile content must have 3DTILES_content_voxels extension");if(!Ii(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new ce("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ii(e,"3DTILES_metadata"))throw new ce("Tileset must have a metadata schema")}function BSt(e){let t=e.boundingVolume;if(l(t.box))return RSt(t.box);if(l(t.region))return DSt(t.region);if(Ii(t,"3DTILES_bounding_volume_cylinder"))return MSt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new ce("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function DSt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=R.fromScale(te.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:lc.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a}}var vSt=new d,PSt=new J;function RSt(e){let t=Qn.unpack(e),n=J.getScale(t.halfAxes,vSt),i=J.getRotation(t.halfAxes,PSt);return{shape:lc.BOX,minBounds:d.negate(n,new d),maxBounds:d.clone(n),shapeTransform:R.fromRotationTranslation(i,t.center)}}function MSt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-D.PI,maxAngle:r=D.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],u=.5*i+s[2],f=R.fromTranslationQuaternionRotationScale(d.unpack(s),Le.unpack(a),d.ONE);return{shape:lc.CYLINDER,minBounds:d.fromElements(t,o,c),maxBounds:d.fromElements(n,r,u),shapeTransform:f}}function NSt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Qi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Qi.getSchemaLoader({schema:i})}function LSt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:_,componentType:y}=m,C=o?.properties[g].min,E=o?.properties[g].max,I=gt.getComponentCount(_),b=Gbe(C,I),S=Gbe(E,I);return{id:g,type:_,componentType:y,minValue:b,maxValue:S}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),A=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:A?f:void 0,maximumValues:A?h:void 0}}function Gbe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function OSt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=R_(a);return o=await ex.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}XP.prototype.requestData=async function(e){e=e??V.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await OSt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:_}=s,y=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),C=_.getDerivedResource({url:y.url});return tS.fromGltf(C)};var zbe=XP;function SZ(e){e=e??1,this._radius=e??1}Object.defineProperties(SZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});SZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var H4=SZ;var wZ={CUMULUS:0};wZ.validate=function(e){return e===wZ.CUMULUS};var JP=Object.freeze(wZ);function Vh(e,t){if(e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new k(this._maximumSize.x,this._maximumSize.y);else{this._scale=k.clone(e.scale??new k(20,12));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=G.clone(e.color??G.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var FSt=Vh.SHOW_INDEX=0,QSt=Vh.POSITION_INDEX=1,kSt=Vh.SCALE_INDEX=2,USt=Vh.MAXIMUM_SIZE_INDEX=3,GSt=Vh.SLICE_INDEX=4,zSt=Vh.BRIGHTNESS_INDEX=5,VSt=Vh.COLOR_INDEX=6;Vh.NUMBER_OF_PROPERTIES=7;function v0(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Vh.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,v0(this,FSt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),v0(this,QSt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;k.equals(t,e)||(k.clone(e,t),v0(this,kSt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),v0(this,USt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),v0(this,VSt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,v0(this,GSt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,v0(this,zSt))}}});Vh.prototype._destroy=function(){this._cloudCollection=void 0};var Td=Vh;var lf,W4=new d,HSt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},WSt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},jSt=Td.SHOW_INDEX,YSt=Td.POSITION_INDEX,qSt=Td.SCALE_INDEX,KSt=Td.MAXIMUM_SIZE_INDEX,XSt=Td.SLICE_INDEX,JSt=Td.BRIGHTNESS_INDEX,ZSt=Td.NUMBER_OF_PROPERTIES,$St=Td.COLOR_INDEX;function Hh(e){e=e??V.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(ZSt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=d.clone(e.noiseOffset??d.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:Vbe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function Vbe(e){return function(){return W4.x=e._textureSliceWidth,W4.y=e._noiseTextureRows,W4.z=1/e._noiseTextureRows,W4}}Object.defineProperties(Hh.prototype,{length:{get:function(){return DZ(this),this._clouds.length}}});function Hbe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Hh.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let t=e.cloudType??JP.CUMULUS,n;return t===JP.CUMULUS&&(n=new Td(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};Hh.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Hh.prototype.removeAll=function(){Hbe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function DZ(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}Hh.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};Hh.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};Hh.prototype.get=function(e){return DZ(this),this._clouds[e]};var ewt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),twt=new Uint16Array([0,1,2,0,2,3]);function nwt(e){let t=Et.createVertexBuffer({context:e,typedArray:ewt,usage:Qe.STATIC_DRAW}),n=Et.createIndexBuffer({context:e,typedArray:twt,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:q.FLOAT}];return new li({context:e,attributes:i,indexBuffer:n})}var vZ;function iwt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function owt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function rwt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function swt(e,t,n){let i=[{index:lf.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.color,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,usage:Qe.STATIC_DRAW}];n&&i.push({index:lf.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:rwt(e)});let o=n?t:4*t;return new S_(e,i,o,n)}var BZ=new ei;function Wbe(e,t,n,i){let o,r=n[lf.positionHighAndScaleX],s=n[lf.positionLowAndScaleY],a=i.position;ei.fromCartesian(a,BZ);let c=i.scale,u=BZ.high,f=BZ.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function jbe(e,t,n,i){let o,r=n[lf.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function Ybe(e,t,n,i){let o,r=n[lf.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function qbe(e,t,n,i){let o,r=n[lf.color],s=i.color,a=G.floatToByte(s.red),c=G.floatToByte(s.green),u=G.floatToByte(s.blue),f=G.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function awt(e,t,n,i){Wbe(e,t,n,i),jbe(e,t,n,i),Ybe(e,t,n,i),qbe(e,t,n,i)}function cwt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=nwt(a),o._spNoise=ln.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Nt({context:a,width:r*r/s,height:r*s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA,sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})});let f=new Hl({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:Vbe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function lwt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=swt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];awt(e,t,s,c)}n._vaf.commit(vZ(i))}}var uwt=[];function fwt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=uwt;u.length=0,(c[YSt]||c[qSt])&&u.push(Wbe),(c[jSt]||c[JSt])&&u.push(jbe),(c[KSt]||c[XSt])&&u.push(Ybe),c[$St]&&u.push(qbe);let f=u.length,h=i._vaf.writers,A,g,m;if(a/r>.1){for(A=0;A<a;++A)for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(vZ(n))}else{for(A=0;A<a;++A){for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function dwt(e,t,n,i){let o=t.context,r=e,s=new We({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new We({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=ln.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:lf}),r._rs=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!1,blending:pn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function hwt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new nt),f.pass=Be.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}Hh.prototype.update=function(e){if(DZ(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&cwt(this,e,lz,cz),this._instanced=e.context.instancedArrays,lf=this._instanced?WSt:HSt,vZ=this._instanced?owt:iwt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?lwt(this,e):r>0&&fwt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&dwt(this,e,az,sz),hwt(this,e))};Hh.prototype.isDestroyed=function(){return!1};Hh.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Hbe(this._clouds),ue(this)};var Kbe=Hh;var mwt=D.toRadians(30);function PZ(e){this._angle=e??mwt}Object.defineProperties(PZ.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});PZ.prototype.emit=function(e){let t=Math.tan(this._angle),n=D.randomBetween(0,D.TWO_PI),i=D.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var Xbe=PZ;function ZP(e){e=e??V.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=go.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(ZP.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});ZP.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;ZP.prototype.isTranslucent=go.prototype.isTranslucent;ZP.prototype.getRenderState=go.prototype.getRenderState;var Jbe=ZP;function j4(e){e=e??V.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.id=e.id,this._id=void 0,this._primitive=void 0}j4.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!R.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=R.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.RED,G.RED],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),n=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.GREEN,G.GREEN],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),i=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.BLUE,G.BLUE],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this});this._primitive=new kn({geometryInstances:[t,n,i],appearance:new bs,asynchronous:!1})}this._primitive.update(e)}};j4.prototype.isDestroyed=function(){return!1};j4.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Y4=j4;function Awt(e){this.direction=d.clone(e.direction),this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??1}var Zbe=Awt;var q4=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var K4=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function P0(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??K4,this._fragmentShaderSource=e.fragmentShaderSource??q4,this._renderState=go.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(P0.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return P0.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});P0.VERTEX_FORMAT=Pe.POSITION_AND_ST;P0.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;P0.prototype.isTranslucent=go.prototype.isTranslucent;P0.prototype.getRenderState=go.prototype.getRenderState;var $be=P0;function hu(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??hu.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??hu.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??hu.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??hu.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??hu.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new _e,this._nominalFrameRate=new _e,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){pwt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){gwt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}hu.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};hu.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new hu({scene:e})),e._frameRateMonitor};Object.defineProperties(hu.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});hu.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};hu.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};hu.prototype.isDestroyed=function(){return!1};hu.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function pwt(e,t){if(e._pauseCount>0)return;let n=Oi();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ri.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ri.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ri.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function gwt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var X4=hu;var eTe=Es(hZ(),1);function RZ(){this._image=new Image}RZ.prototype.isReady=function(){return!0};RZ.prototype.shouldDiscardImage=function(e){return e===this._image};function R0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new RZ),this._errorEvent=new _e}Object.defineProperties(R0.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});R0.fromMetadata=function(e,t){if(!e.imageryPresent)throw new ce(`The server ${e.url} doesn't have imagery`);let n=new R0(t);return n._metadata=e,n};R0.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};R0.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=Yy.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new pr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=_wt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){U4(r.key,u);let f=new Uint8Array(u),h,A=r.protoImagery;if((!l(A)||!A)&&(h=ywt(f)),!l(h)&&(!l(A)||A)){let g=Cwt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:YI({uint8Array:f,format:h,flipY:!0})})};R0.prototype.pickFeatures=function(e,t,n,i,o){};function _wt(e,t,n,i,o,r){let s=Yy.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function ywt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function Cwt(e){let t=eTe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new ce("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var tTe=R0;var Ewt=new G(1,1,1,.4),Iwt=new G(0,1,0,.05),xwt=new G(0,.5,0,.2);function M0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??Ewt,this._glowColor=e.glowColor??Iwt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??xwt,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(M0.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});M0.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};M0.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};M0.prototype.getTileCredits=function(e,t,n){};M0.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};M0.prototype.pickFeatures=function(e,t,n,i,o){};var nTe=M0;function Wh(){}Wh._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Wh._decodeTaskProcessor=new mi("decodeI3S",Wh._maxDecodingConcurrency);Wh._promise=void 0;async function bwt(){if(await Wh._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return Wh._decodeTaskProcessor;throw new ce("I3S decoder could not be initialized.")}Wh.decode=async function(e,t,n,i,o){return l(Wh._promise)||(Wh._promise=bwt()),Wh._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=J.fromRotationX(-D.PI_OVER_TWO),A=new J;J.multiply(h,a,A);let g=Ae.fromDegrees(c,u,f),m=te.WGS84.cartographicToCartesian(g),_={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:te.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:A,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(_)})};var J4=Wh;function MZ(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(MZ.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});MZ.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};var Z4=MZ;function ag(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(ag.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function $4(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function Twt(e){return e==="String"?1:$4(e)}async function Swt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}ag.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=Swt(this).catch(function(e){console.error(e)}),this._loadPromise)};ag.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};ag.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};ag.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};ag.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=$4(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=$4(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};ag.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=Twt(i.valueType)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};ag.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new ce(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=$4(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new ce(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new ce(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var eH=ag;function $P(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties($P.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});$P.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var wwt=new d,Bwt=new d,Dwt=new d,vwt=new d,Pwt=new d;function NZ(e,t,n,i){let o=d.subtract(i,n,wwt),r=d.cross(o,d.subtract(e,n,Bwt),vwt),s=d.cross(o,d.subtract(t,n,Dwt),Pwt);return d.dot(r,s)>=0}var Rwt=new d,Mwt=new d,Nwt=new d,Lwt=new d,Owt=new d,Fwt=new d,Qwt=new d,kwt=new d,Uwt=new d,Gwt=new d;$P.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,J.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let A=0;A<h;A++){let g,m,_;l(f)?(g=f[A],m=f[A+1],_=f[A+2]):(g=A*3,m=A*3+1,_=A*3+2);let y=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],Rwt),C=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],Mwt),E=new d(u[_*3],u[_*3+1],u[_*3+2],Nwt);if(!NZ(i,y,C,E)||!NZ(i,C,y,E)||!NZ(i,E,y,C))continue;let I=d.subtract(C,y,Lwt),b=d.subtract(E,y,Owt),S=d.cross(I,b,Fwt);if(d.magnitude(S)===0)continue;let B=d.normalize(S,Qwt),v=d.subtract(i,y,kwt),P=Math.abs(d.dot(v,B));if(P<o){o=P,r=A;let N=d.magnitudeSquared(d.subtract(i,y,v)),L=d.magnitudeSquared(d.subtract(i,C,Uwt)),p=d.magnitudeSquared(d.subtract(i,E,Gwt));N<L&&N<p?(a=g,c=y,s=N):L<p?(a=m,c=C,s=L):(a=_,c=E,s=p)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function iTe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(xS(e[i])):t.push(e[i]);return t}$P.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let I=this._parent._data.mesh.material.definition;if(I>=0&&I<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[I],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let b="0";if(l(this._layer._data.textureSetDefinitions))for(let S=0;S<this._layer._data.textureSetDefinitions.length;S++){let B=this._layer._data.textureSetDefinitions[S];for(let v=0;v<B.formats.length;v++){let P=B.formats[v];if(P.format==="jpg"){b=P.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${b}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=iTe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=iTe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let A=[],g=[],m=[];u&&(A=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let _=[],y=n.length;for(let E=0;E<y;E++){let I=n[E].primitives,b=I.length;for(let S=0;S<b;S++){let B=I[S];if(l(B.material)){for(;B.material>=_.length;){let P=ze(c,!0);_.push(P)}let v=_[B.material];l(B.extra)&&B.extra.isTransparent?l(v.alphaMode)||(v.alphaMode="BLEND"):v.alphaMode==="BLEND"&&(v.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:_,textures:A,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var eR=$P;function Vc(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(Vc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});Vc.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new ah(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await xA.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function oTe(e,t){let n=new eH(e,t);return e._fields[t.name]=n,n.load()}Vc.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(oTe(this,i))}return Promise.all(t)};Vc.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return oTe(this,o)}return Promise.resolve()};Vc.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};Vc.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};Vc.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new Vc(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};Vc.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new eR(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new eR(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};Vc.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new Z4(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};Vc.prototype._clearGeometryData=function(){this._geometryData=[]};Vc.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=Ae.fromDegrees(e.center[0],e.center[1],e.center[2]):n=Ae.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let C=0;C<this._dataProvider._geoidDataList.length;C++){let E=this._dataProvider._geoidDataList[C],I=E.projection.project(n);if(I.x>E.nativeExtent.west&&I.x<E.nativeExtent.east&&I.y>E.nativeExtent.south&&I.y<E.nativeExtent.north){n.height+=Wwt(I.x,I.y,E);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=te.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=te.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let C=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/C}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let C=this._data.lodThreshold;s=r/C}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let C=0;C<this._data.lodSelection.length;C++)this._data.lodSelection[C].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[C].maxError);s===1/0&&(s=1e5);let a=s*16,c=new pc(0,0,0),u=kt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=J.fromQuaternion(u),h=J.inverse(f,new J),A=new R(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=R.inverse(A,new R),m=R.clone(A);l(this._parent._globalTransform)&&R.multiply(A,this._parent._inverseGlobalTransform,m),this._globalTransform=A,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let _=[];for(let C=0;C<this._children.length;C++)_.push(this._children[C]._create3DTileDefinition());return{children:_,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};Vc.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};Vc.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await J4.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function zwt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function Vwt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function rTe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await zwt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!Vwt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}Vc.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=rTe(this,t);e.push(n)}return Promise.all(e)};ah.prototype._hookedRequestContent=ah.prototype.requestContent;ah.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new we({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{rTe(e._i3sNode,n)})),e._isLoading=!1,t})}};function Hwt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function tH(e,t,n,i){let o=e+t*n;return i[o]}function Wwt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=tH(s,a,n.width,n.buffer),h=tH(c,a,n.width,n.buffer),A=tH(s,u,n.width,n.buffer),g=tH(c,u,n.width,n.buffer),m=Hwt(o,r,f,h,A,g);return m=m*n.scale+n.offset,m}Object.defineProperties(ah.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var tR=Vc;function nH(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(nH.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function LZ(e,t){let n=[];for(let i=0;i<e.length;i++){let o=G.byteToFloat(e[i]);i<3?n.push(xS(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function SS(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=LZ(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=LZ(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=LZ(a.color,a.transparency)))}break}}return n}function jwt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=SS(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let A=u[h];h===u.length-1?f[A]=s:(l(f[A])||(f[A]={}),f=f[A])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=SS(o.symbol,t)}return n}}function Ywt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(SS(r.symbol,t)))}return i.symbols.push(void 0),i}}nH.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=SS(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=jwt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=Ywt(i,n))}};function sTe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?sTe(s,t,n,i):s}}function qwt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function Kwt(e,t,n){let i=t[n],o=qwt(e.ranges,i);return e.symbols[o]}nH.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>sTe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>Kwt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var iH=nH;function mu(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new we({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(mu.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});mu.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new ce(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new iH(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};mu.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};mu.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};mu.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new tR(this,t,!0)}else this._rootNode=new tR(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};mu.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};mu._fetchJson=function(e){return e.fetchJson()};mu.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=mu._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};mu.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};mu.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ze(e):{},e.outlineColor=G.fromCartesian4(se.fromArray(o))),this._tileset=await qs.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};mu.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};mu.prototype.filterByAttributes=function(e){this._filters=l(e)?ze(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var wS=mu;function oH(e,t){this._dataProvider=e,this._resource=new we({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(oH.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});oH.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};oH.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var rH=oH;function nR(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(nR.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});nR._fromData=async function(e,t,n,i){let o=new nR(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=nR._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new we({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await xA.loadJson(o._resource),c=new wS(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var sH=nR;var lTe=Es(aTe(),1);function Os(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??V.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Os.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Os.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};Os.prototype.isDestroyed=function(){return!1};Os.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Os.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Os.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Os.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function Xwt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function cTe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=Xwt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=sH._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new rH(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new wS(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Os.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Os.loadJson(n),o=new Os(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=cTe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await cTe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Os._fetchJson=function(e){return e.fetchJson()};Os.loadJson=async function(e){let t=await Os._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new ce(t.error)}return t};Os.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new ce(`Failed to load binary: ${e.url}`);return t};Os.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Jwt=new k;function Zwt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=Ae.fromRadians(t.west,t.north),a=Ae.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let A=c.y;A<=u.y;A++){let g=k.fromElements(h,A,Jwt),m=g.toString();if(!o.hasOwnProperty(m)){let _={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=_,i.push(_)}}let f=[];for(let h=0;h<i.length;++h){let A=i[h],g=A.terrainProvider.requestTileGeometry(A.x,A.y,A.level);f.push(g)}return Promise.all(f).then(function(h){let A=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},_=h[g],y="Geographic";n._projection instanceof Yi&&(y="WebMercator");let C={projectionType:y,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:_._height,width:_._width,scale:_._structure.heightScale,offset:_._structure.heightOffset};if(_._encoding===vh.LERC){let E=lTe.default.decode(_._buffer);C.buffer=E.pixels[0]}else C.buffer=_._buffer;A.push(C)}return A})}async function $wt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await Zwt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Os.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=$wt(this),this._geoidDataPromise)};Os.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};Os.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Os.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Os.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var xA=Os;var iR={};iR.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await _a.getExports(n,i);if(r.length>0&&r.every(f=>f.status===_a.ExportStatus.Invalid))throw new ce(`All exports for this iModel are Invalid: ${n}`);let s=r.find(f=>f.status===_a.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),u=new we({url:c});return qs.fromUrl(u,o)};iR.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.Cesium3DTiles,_a.RealityDataType.PNTS,_a.RealityDataType.RealityMesh3DTiles,_a.RealityDataType.Terrain3DTiles].includes(o))throw new ce(`Reality data type is not a mesh type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return qs.fromUrl(a,{maximumScreenSpaceError:4})};iR.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.KML,_a.RealityDataType.GeoJSON].includes(o))throw new ce(`Reality data type is not a data source type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return o===_a.RealityDataType.GeoJSON?kE.load(a):ST.load(a)};iR.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${_a.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new we({url:s,headers:{Authorization:_a._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return kE.load(a)};var uTe=iR;function fTe(){}Object.defineProperties(fTe.prototype,{color:{get:me.throwInstantiationError},intensity:{get:me.throwInstantiationError}});var dTe=fTe;var eBt=/\/$/,hTe=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function BS(e){e=e??V.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();eBt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Dt(c))):c=hTe,this._resource=i,this._imageryProvider=new vc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(BS.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});BS.prototype.getTileCredits=function(e,t,n){};BS.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};BS.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};BS._defaultCredit=hTe;var mTe=BS;function OZ(e){}OZ.prototype.isReady=function(){return!0};OZ.prototype.shouldDiscardImage=function(e){return!1};var ATe=OZ;var tBt=new Dt("MapQuest, Open Street Map and contributors, CC-BY-SA");function cH(e){e=e??V.EMPTY_OBJECT;let t=we.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new ws({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=e.credit??tBt;typeof h=="string"&&(h=new Dt(h)),vc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(cH.prototype=Object.create(vc.prototype),cH.prototype.constructor=cH);var eC=cH;var nBt=new k(1,1);function FZ(e){e=e??V.EMPTY_OBJECT,this.mass=e.mass??1,this.position=d.clone(e.position??d.ZERO),this.velocity=d.clone(e.velocity??d.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=G.clone(e.startColor??G.WHITE),this.endColor=G.clone(e.endColor??G.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=k.clone(e.imageSize??nBt),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(FZ.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var pTe=new d;FZ.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,pTe),d.add(this.position,pTe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var oR=FZ;function gTe(e){e=e??V.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(gTe.prototype,{complete:{get:function(){return this._complete}}});var _Te=gTe;function yTe(e){}yTe.prototype.emit=function(e){me.throwInstantiationError()};var CTe=yTe;var ETe=new k(1,1);function rR(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new H4(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._emitterModelMatrix=R.clone(e.emitterModelMatrix??R.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new R,this._startColor=G.clone(e.color??e.startColor??G.WHITE),this._endColor=G.clone(e.color??e.endColor??G.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=k.clone(e.imageSize??e.minimumImageSize??ETe),this._maximumImageSize=k.clone(e.imageSize??e.maximumImageSize??ETe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new _e,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(rR.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._modelMatrix,e),R.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._emitterModelMatrix,e),R.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){G.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){G.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function iBt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let A=0;A<h;++A)i+=o[A].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let A=new oR;A._billboard=r.add({image:s,show:!1}),u.push(A)}e._particleEstimate=a}function oBt(e){let t=e._particlePool.pop();return l(t)||(t=new oR),t}function rBt(e,t){e._particlePool.push(t)}function sBt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function aBt(e){l(e._billboard)&&(e._billboard.show=!1)}function ITe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=D.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=D.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=D.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=D.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new G(i,o,r,s),n.scale=D.lerp(t.startScale,t.endScale,t.normalizedAge)}function cBt(e,t){t.startColor=G.clone(e._startColor,t.startColor),t.endColor=G.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=D.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=D.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=D.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=D.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=D.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function lBt(e,t){if(e._isComplete)return 0;t=D.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=D.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var lH=new d;rR.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new jf),this._updateParticlePool&&(iBt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=K.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?ITe(this,s):(aBt(s),rBt(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=lBt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=R.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=oBt(this),this._emitter.emit(s),d.add(s.position,s.velocity,lH),R.multiplyByPoint(u,lH,lH),s.position=R.multiplyByPoint(u,s.position,s.position),d.subtract(lH,s.position,s.velocity),d.normalize(s.velocity,s.velocity),cBt(this,s),ITe(this,s)}if(this._billboardCollection.update(e),this._previousTime=K.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=D.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&sBt(this)};rR.prototype.isDestroyed=function(){return!1};rR.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var xTe=rR;function uf(){me.throwInstantiationError()}uf.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(uf.prototype,{quadtree:{get:me.throwInstantiationError,set:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError}});uf.prototype.update=me.throwInstantiationError;uf.prototype.beginUpdate=me.throwInstantiationError;uf.prototype.endUpdate=me.throwInstantiationError;uf.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;uf.prototype.loadTile=me.throwInstantiationError;uf.prototype.computeTileVisibility=me.throwInstantiationError;uf.prototype.showTileThisFrame=me.throwInstantiationError;uf.prototype.computeDistanceToTile=me.throwInstantiationError;uf.prototype.isDestroyed=me.throwInstantiationError;uf.prototype.destroy=me.throwInstantiationError;var bTe=uf;function QZ(e){e=e??1,this._radius=e??1}Object.defineProperties(QZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});QZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,D.PI),i=D.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var TTe=QZ;function sR(){}sR.prototype.evaluate=function(e,t){me.throwInstantiationError()};sR.prototype.evaluateColor=function(e,t){me.throwInstantiationError()};sR.prototype.getShaderFunction=function(e,t,n,i){me.throwInstantiationError()};sR.prototype.getVariables=function(){me.throwInstantiationError()};var STe=sR;function DS(e){this._ready=!1,this._provider=void 0,this._errorEvent=new _e,this._readyEvent=new _e,fBt(this,e)}Object.defineProperties(DS.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});DS.fromWorldTerrain=function(e){return new DS(IS(e))};DS.fromWorldBathymetry=function(e){return new DS(k4(e))};function uBt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function fBt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){uBt(e._errorEvent,i)}}var uH=DS;function vS(){}vS.prototype.boundingVolume=void 0;vS.prototype.boundingSphere=void 0;vS.prototype.distanceToCamera=function(e){me.throwInstantiationError()};vS.prototype.intersectPlane=function(e){me.throwInstantiationError()};vS.prototype.createDebugVolume=function(e){me.throwInstantiationError()};var wTe=vS;function aR(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._color=e.color??G.YELLOW,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(aR.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});aR.prototype.getTileCredits=function(e,t,n){};aR.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};aR.prototype.pickFeatures=function(e,t,n,i,o){};var fH=aR;function kZ(e){me.throwInstantiationError()}kZ.prototype.isReady=me.throwInstantiationError;kZ.prototype.shouldDiscardImage=me.throwInstantiationError;var BTe=kZ;var dBt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},DTe=Object.freeze(dBt);function dH(e,t){this.show=!0,l(e)||(e=new Xe),this.rectangle=Xe.clone(e),l(t)||(t=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}dH.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Xe.equals(t.viewport,this.rectangle))&&(this._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new We({sources:[this._material.shaderSource,bz]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Be.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};dH.prototype.isDestroyed=function(){return!1};dH.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var vTe=dH;function UZ(){me.throwInstantiationError()}Object.defineProperties(UZ.prototype,{globalTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shape:{get:me.throwInstantiationError},minBounds:{get:me.throwInstantiationError},maxBounds:{get:me.throwInstantiationError},dimensions:{get:me.throwInstantiationError},paddingBefore:{get:me.throwInstantiationError},paddingAfter:{get:me.throwInstantiationError},names:{get:me.throwInstantiationError},types:{get:me.throwInstantiationError},componentTypes:{get:me.throwInstantiationError},minimumValues:{get:me.throwInstantiationError},maximumValues:{get:me.throwInstantiationError},maximumTileCount:{get:me.throwInstantiationError},availableLevels:{get:me.throwInstantiationError},keyframeCount:{get:me.throwInstantiationError},timeIntervalCollection:{get:me.throwInstantiationError}});UZ.prototype.requestData=function(e){me.throwInstantiationError()};var PTe=UZ;function N0(){me.throwInstantiationError()}Object.defineProperties(N0.prototype,{orientedBoundingBox:{get:me.throwInstantiationError},boundingSphere:{get:me.throwInstantiationError},boundTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shaderUniforms:{get:me.throwInstantiationError},shaderDefines:{get:me.throwInstantiationError},shaderMaximumIntersectionsLength:{get:me.throwInstantiationError}});N0.prototype.update=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForTile=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForSample=me.throwInstantiationError;N0.DefaultMinBounds=me.throwInstantiationError;N0.DefaultMaxBounds=me.throwInstantiationError;var RTe=N0;var hBt=new G,mBt=new G,ABt=new G,pBt=new G,MTe=new se,cR=new Uint8Array(4);function NTe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return G.lerp(t.color,n.color,o,i)}function hH(e,t){return{height:e,color:G.clone(t)}}function LTe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?G.equals(t.color,i[n-1].color):!1,a=r?G.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?G.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function gBt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=D.clamp(g.height,Au._minimumHeight,Au._maximumHeight),_=G.clone(g.color,hBt);_.red*=_.alpha,_.green*=_.alpha,_.blue*=_.alpha,c.push(hH(m,_))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||qp(c,function(g,m){return D.sign(g.height-m.height)});let h=r.extendDownwards??!1,A=r.extendUpwards??!1;c.length===1&&!h&&!A&&(h=!0,A=!0),h&&c.splice(0,0,hH(Au._minimumHeight,c[0].color)),A&&c.splice(c.length,0,hH(Au._maximumHeight,c[c.length-1].color)),c=LTe(c),i.push(c)}return i}function _Bt(e){let t=gBt(e),n=[],i=[],o;function r(u,f){n.push(hH(u,f))}function s(u,f,h){let A=G.multiplyByScalar(h,1-f.alpha,pBt);A=G.add(A,f,A),r(u,A)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let A=u.length,g=i.length;for(;f<A||h<g;){let m=f<A?u[f]:void 0,_=f>0?u[f-1]:void 0,y=f<A-1?u[f+1]:void 0,C=h<g?i[h]:void 0,E=h>0?i[h-1]:void 0,I=h<g-1?i[h+1]:void 0;if(l(m)&&l(C)&&m.height===C.height){let b=l(I)&&C.height===I.height,S=!l(E),B=!l(I),v=l(y)&&m.height===y.height,P=!l(_),N=!l(y);b?v?(s(m.height,m.color,C.color),s(m.height,y.color,I.color)):P?(r(m.height,C.color),s(m.height,m.color,I.color)):N?(s(m.height,m.color,C.color),r(m.height,I.color)):(s(m.height,m.color,C.color),s(m.height,m.color,I.color)):S?v?(r(m.height,m.color),s(m.height,y.color,C.color)):N?(r(m.height,m.color),r(m.height,C.color)):(P||r(m.height,m.color),s(m.height,m.color,C.color)):B?v?(s(m.height,m.color,C.color),r(m.height,y.color)):P?(r(m.height,C.color),r(m.height,m.color)):N?s(m.height,m.color,C.color):(s(m.height,m.color,C.color),r(m.height,m.color)):v?(s(m.height,m.color,C.color),s(m.height,y.color,C.color)):P?(r(m.height,C.color),s(m.height,m.color,C.color)):N?(s(m.height,m.color,C.color),r(m.height,C.color)):s(m.height,m.color,C.color),f+=v?2:1,h+=b?2:1}else if(l(m)&&l(C)&&l(E)&&m.height<C.height){let b=NTe(m.height,E,C,ABt);l(_)?l(y)?s(m.height,m.color,b):(s(m.height,m.color,b),r(m.height,b)):(r(m.height,b),s(m.height,m.color,b)),f++}else if(l(C)&&l(m)&&l(_)&&C.height<m.height){let b=NTe(C.height,_,m,mBt);l(E)?l(I)?s(C.height,b,C.color):(s(C.height,b,C.color),r(C.height,b)):(r(C.height,b),s(C.height,b,C.color)),h++}else l(m)&&(!l(C)||m.height<C.height)?(l(C)&&!l(E)&&!l(y)?(r(m.height,m.color),r(m.height,Au._emptyColor),r(C.height,Au._emptyColor)):(!l(C)&&l(E)&&!l(_)&&(r(E.height,Au._emptyColor),r(m.height,Au._emptyColor)),r(m.height,m.color)),f++):l(C)&&(!l(m)||C.height<m.height)&&(r(C.height,C.color),h++)}}return LTe(n)}function Au(e){let{scene:t,layers:n}=e??V.EMPTY_OBJECT,{context:i}=t,o=_Bt(n),r=o.length,s,a,c;if(!Au._useFloatTexture(i)){a=He.UNSIGNED_BYTE,c=et.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)se.packFloat(o[g].height,MTe),se.pack(MTe,s,g*4)}else{a=He.FLOAT,c=i.webgl2?et.RED:et.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Nt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(cR),h[g*4+0]=cR[0],h[g*4+1]=cR[1],h[g*4+2]=cR[2],h[g*4+3]=cR[3];let A=Nt.create({context:i,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});return ao.fromType("ElevationBand",{heights:f,colors:A})}Au._useFloatTexture=function(e){return e.floatingPointTexture};Au._maximumHeight=5906376425472;Au._minimumHeight=-5906376425472;Au._emptyColor=new G(0,0,0,0);var OTe=Au;async function yBt(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??V.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||yt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??_S.defaultApiKey;if(!l(n))return CBt(t);let i,o=_S.getDefaultCredit();l(o)&&(i=[o]);let r=new we({url:`${_S.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return qs.fromUrl(r,t)}var FTe={};async function CBt(e){let i=FTe[2275207];l(i)||(i=wf.fromAssetId(2275207),FTe[2275207]=i);let o=await i;return qs.fromUrl(o,e)}var QTe=yBt;async function EBt(e){let t=await qs.fromIonAssetId(96188,e);e=e??V.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??G.WHITE).toCssColorString();n=new TS({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var kTe=EBt;function IBt(e){e=e??V.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=R.clone(e.modelMatrix??R.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new en(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new en(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new en(0,0,1,1)},modelMatrix:o})),t.length>0)return new kn({asynchronous:!1,geometryInstances:t,appearance:new gn({flat:!0,translucent:!1})})}var UTe=IBt;var GTe=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;function xBt(e){e=e??V.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??et.RGBA,this.pixelDatatype=e.pixelDatatype??He.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=we.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Tn.REPEAT:Tn.CLAMP_TO_EDGE;this.sampler=new on({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var zTe=xBt;var bBt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},VTe=Object.freeze(bBt);var TBt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},HTe=Object.freeze(TBt);function SBt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${up(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var WTe=SBt;globalThis.CESIUM_VERSION="1.132";var lR;typeof ko<"u"&&(lR=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(p,x){return p===null||typeof p in _?p===x:!1}function u(p,x){var T;return function(){T||(T=m.a.setTimeout(function(){T=e,p()},x))}}function f(p,x){var T;return function(){clearTimeout(T),T=m.a.setTimeout(p,x)}}function h(p,x){x&&x!=="change"?x==="beforeChange"?this.pc(p):this.gb(p,x):this.qc(p)}function A(p,x){x!==null&&x.s&&x.s()}function g(p,x){var T=this.qd,w=T[b];w.ra||(this.Qb&&this.mb[x]?(T.uc(x,p,this.mb[x]),this.mb[x]=null,--this.Qb):w.I[x]||T.uc(x,p,w.J?{da:p}:T.$c(p)),p.Ja&&p.gd())}var m=typeof s<"u"?s:{};m.b=function(p,x){for(var T=p.split("."),w=m,M=0;M<T.length-1;M++)w=w[T[M]];w[T[T.length-1]]=x},m.L=function(p,x,T){p[x]=T},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function p(Y,$){for(var X in Y)M.call(Y,X)&&$(X,Y[X])}function x(Y,$){if($)for(var X in $)M.call($,X)&&(Y[X]=$[X]);return Y}function T(Y,$){return Y.__proto__=$,Y}function w(Y,$,X,he){var ge=Y[$].match(W)||[];m.a.D(X.match(W),function(fe){m.a.Na(ge,fe,he)}),Y[$]=ge.join(" ")}var M=Object.prototype.hasOwnProperty,O={__proto__:[]}instanceof Array,U=typeof Symbol=="function",Q={},z={};Q[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],Q.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),p(Q,function(Y,$){if($.length)for(var X=0,he=$.length;X<he;X++)z[$[X]]=Y});var F={propertychange:!0},H=n&&function(){for(var Y=3,$=n.createElement("div"),X=$.getElementsByTagName("i");$.innerHTML="<!--[if gt IE "+ ++Y+"]><i></i><![endif]-->",X[0];);return 4<Y?Y:e}(),W=/\S+/g,Z;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)$.call(X,Y[he],he,Y)},A:typeof Array.prototype.indexOf=="function"?function(Y,$){return Array.prototype.indexOf.call(Y,$)}:function(Y,$){for(var X=0,he=Y.length;X<he;X++)if(Y[X]===$)return X;return-1},Lb:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)if($.call(X,Y[he],he,Y))return Y[he];return e},Pa:function(Y,$){var X=m.a.A(Y,$);0<X?Y.splice(X,1):X===0&&Y.shift()},wc:function(Y){var $=[];return Y&&m.a.D(Y,function(X){0>m.a.A($,X)&&$.push(X)}),$},Mb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)he.push($.call(X,Y[ge],ge));return he},jb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)$.call(X,Y[ge],ge)&&he.push(Y[ge]);return he},Nb:function(Y,$){if($ instanceof Array)Y.push.apply(Y,$);else for(var X=0,he=$.length;X<he;X++)Y.push($[X]);return Y},Na:function(Y,$,X){var he=m.a.A(m.a.bc(Y),$);0>he?X&&Y.push($):X||Y.splice(he,1)},Ba:O,extend:x,setPrototypeOf:T,Ab:O?T:x,P:p,Ga:function(Y,$,X){if(!Y)return Y;var he={},ge;for(ge in Y)M.call(Y,ge)&&(he[ge]=$.call(X,Y[ge],ge,Y));return he},Tb:function(Y){for(;Y.firstChild;)m.removeNode(Y.firstChild)},Yb:function(Y){Y=m.a.la(Y);for(var $=(Y[0]&&Y[0].ownerDocument||n).createElement("div"),X=0,he=Y.length;X<he;X++)$.appendChild(m.oa(Y[X]));return $},Ca:function(Y,$){for(var X=0,he=Y.length,ge=[];X<he;X++){var fe=Y[X].cloneNode(!0);ge.push($?m.oa(fe):fe)}return ge},va:function(Y,$){if(m.a.Tb(Y),$)for(var X=0,he=$.length;X<he;X++)Y.appendChild($[X])},Xc:function(Y,$){var X=Y.nodeType?[Y]:Y;if(0<X.length){for(var he=X[0],ge=he.parentNode,fe=0,ye=$.length;fe<ye;fe++)ge.insertBefore($[fe],he);for(fe=0,ye=X.length;fe<ye;fe++)m.removeNode(X[fe])}},Ua:function(Y,$){if(Y.length){for($=$.nodeType===8&&$.parentNode||$;Y.length&&Y[0].parentNode!==$;)Y.splice(0,1);for(;1<Y.length&&Y[Y.length-1].parentNode!==$;)Y.length--;if(1<Y.length){var X=Y[0],he=Y[Y.length-1];for(Y.length=0;X!==he;)Y.push(X),X=X.nextSibling;Y.push(he)}}return Y},Zc:function(Y,$){7>H?Y.setAttribute("selected",$):Y.selected=$},Db:function(Y){return Y===null||Y===e?"":Y.trim?Y.trim():Y.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(Y,$){return Y=Y||"",$.length>Y.length?!1:Y.substring(0,$.length)===$},vd:function(Y,$){if(Y===$)return!0;if(Y.nodeType===11)return!1;if($.contains)return $.contains(Y.nodeType!==1?Y.parentNode:Y);if($.compareDocumentPosition)return($.compareDocumentPosition(Y)&16)==16;for(;Y&&Y!=$;)Y=Y.parentNode;return!!Y},Sb:function(Y){return m.a.vd(Y,Y.ownerDocument.documentElement)},kd:function(Y){return!!m.a.Lb(Y,m.a.Sb)},R:function(Y){return Y&&Y.tagName&&Y.tagName.toLowerCase()},Ac:function(Y){return m.onError?function(){try{return Y.apply(this,arguments)}catch($){throw m.onError&&m.onError($),$}}:Y},setTimeout:function(Y,$){return setTimeout(m.a.Ac(Y),$)},Gc:function(Y){setTimeout(function(){throw m.onError&&m.onError(Y),Y},0)},B:function(Y,$,X){var he=m.a.Ac(X);if(X=F[$],m.options.useOnlyNativeEvents||X||!o)if(X||typeof Y.addEventListener!="function")if(typeof Y.attachEvent<"u"){var ge=function(ye){he.call(Y,ye)},fe="on"+$;Y.attachEvent(fe,ge),m.a.K.za(Y,function(){Y.detachEvent(fe,ge)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else Y.addEventListener($,he,!1);else Z||(Z=typeof o(Y).on=="function"?"on":"bind"),o(Y)[Z]($,he)},Fb:function(Y,$){if(!Y||!Y.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var X;if(m.a.R(Y)==="input"&&Y.type&&$.toLowerCase()=="click"?(X=Y.type,X=X=="checkbox"||X=="radio"):X=!1,m.options.useOnlyNativeEvents||!o||X)if(typeof n.createEvent=="function")if(typeof Y.dispatchEvent=="function")X=n.createEvent(z[$]||"HTMLEvents"),X.initEvent($,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,Y),Y.dispatchEvent(X);else throw Error("The supplied element doesn't support dispatchEvent");else if(X&&Y.click)Y.click();else if(typeof Y.fireEvent<"u")Y.fireEvent("on"+$);else throw Error("Browser doesn't support triggering events");else o(Y).trigger($)},f:function(Y){return m.O(Y)?Y():Y},bc:function(Y){return m.O(Y)?Y.v():Y},Eb:function(Y,$,X){var he;$&&(typeof Y.classList=="object"?(he=Y.classList[X?"add":"remove"],m.a.D($.match(W),function(ge){he.call(Y.classList,ge)})):typeof Y.className.baseVal=="string"?w(Y.className,"baseVal",$,X):w(Y,"className",$,X))},Bb:function(Y,$){var X=m.a.f($);(X===null||X===e)&&(X="");var he=m.h.firstChild(Y);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(Y,[Y.ownerDocument.createTextNode(X)]):he.data=X,m.a.Ad(Y)},Yc:function(Y,$){if(Y.name=$,7>=H)try{var X=Y.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});Y.mergeAttributes(n.createElement("<input name='"+X+"'/>"),!1)}catch{}},Ad:function(Y){9<=H&&(Y=Y.nodeType==1?Y:Y.parentNode,Y.style&&(Y.style.zoom=Y.style.zoom))},wd:function(Y){if(H){var $=Y.style.width;Y.style.width=0,Y.style.width=$}},Pd:function(Y,$){Y=m.a.f(Y),$=m.a.f($);for(var X=[],he=Y;he<=$;he++)X.push(he);return X},la:function(Y){for(var $=[],X=0,he=Y.length;X<he;X++)$.push(Y[X]);return $},Da:function(Y){return U?Symbol(Y):Y},Zd:H===6,$d:H===7,W:H,Lc:function(Y,$){for(var X=m.a.la(Y.getElementsByTagName("input")).concat(m.a.la(Y.getElementsByTagName("textarea"))),he=typeof $=="string"?function(ye){return ye.name===$}:function(ye){return $.test(ye.name)},ge=[],fe=X.length-1;0<=fe;fe--)he(X[fe])&&ge.push(X[fe]);return ge},Nd:function(Y){return typeof Y=="string"&&(Y=m.a.Db(Y))?r&&r.parse?r.parse(Y):new Function("return "+Y)():null},hc:function(Y,$,X){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(Y),$,X)},Od:function(Y,$,X){X=X||{};var he=X.params||{},ge=X.includeFields||this.Jc,fe=Y;if(typeof Y=="object"&&m.a.R(Y)==="form")for(var fe=Y.action,ye=ge.length-1;0<=ye;ye--)for(var Ie=m.a.Lc(Y,ge[ye]),ve=Ie.length-1;0<=ve;ve--)he[Ie[ve].name]=Ie[ve].value;$=m.a.f($);var Te=n.createElement("form");Te.style.display="none",Te.action=fe,Te.method="post";for(var ke in $)Y=n.createElement("input"),Y.type="hidden",Y.name=ke,Y.value=m.a.hc(m.a.f($[ke])),Te.appendChild(Y);p(he,function(Ge,qe){var tt=n.createElement("input");tt.type="hidden",tt.name=Ge,tt.value=qe,Te.appendChild(tt)}),n.body.appendChild(Te),X.submitter?X.submitter(Te):Te.submit(),setTimeout(function(){Te.parentNode.removeChild(Te)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(p){var x=this;if(arguments.length===1)return function(){return x.apply(p,arguments)};var T=Array.prototype.slice.call(arguments,1);return function(){var w=T.slice(0);return w.push.apply(w,arguments),x.apply(p,w)}}),m.a.g=new function(){var p=0,x="__ko__"+new Date().getTime(),T={},w,M;return m.a.W?(w=function(O,U){var Q=O[x];if(!Q||Q==="null"||!T[Q]){if(!U)return e;Q=O[x]="ko"+p++,T[Q]={}}return T[Q]},M=function(O){var U=O[x];return U?(delete T[U],O[x]=null,!0):!1}):(w=function(O,U){var Q=O[x];return!Q&&U&&(Q=O[x]={}),Q},M=function(O){return O[x]?(delete O[x],!0):!1}),{get:function(O,U){var Q=w(O,!1);return Q&&Q[U]},set:function(O,U,Q){(O=w(O,Q!==e))&&(O[U]=Q)},Ub:function(O,U,Q){return O=w(O,!0),O[U]||(O[U]=Q)},clear:M,Z:function(){return p+++x}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function p(U,Q){var z=m.a.g.get(U,w);return z===e&&Q&&(z=[],m.a.g.set(U,w,z)),z}function x(U){var Q=p(U,!1);if(Q)for(var Q=Q.slice(0),z=0;z<Q.length;z++)Q[z](U);m.a.g.clear(U),m.a.K.cleanExternalData(U),O[U.nodeType]&&T(U.childNodes,!0)}function T(U,Q){for(var z=[],F,H=0;H<U.length;H++)if((!Q||U[H].nodeType===8)&&(x(z[z.length]=F=U[H]),U[H]!==F))for(;H--&&m.a.A(z,U[H])==-1;);}var w=m.a.g.Z(),M={1:!0,8:!0,9:!0},O={1:!0,9:!0};return{za:function(U,Q){if(typeof Q!="function")throw Error("Callback must be a function");p(U,!0).push(Q)},yb:function(U,Q){var z=p(U,!1);z&&(m.a.Pa(z,Q),z.length==0&&m.a.g.set(U,w,e))},oa:function(U){return m.u.G(function(){M[U.nodeType]&&(x(U),O[U.nodeType]&&T(U.getElementsByTagName("*")))}),U},removeNode:function(U){m.oa(U),U.parentNode&&U.parentNode.removeChild(U)},cleanExternalData:function(U){o&&typeof o.cleanData=="function"&&o.cleanData([U])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var p=[0,"",""],x=[1,"<table>","</table>"],T=[3,"<table><tbody><tr>","</tr></tbody></table>"],w=[1,"<select multiple='multiple'>","</select>"],M={thead:x,tbody:x,tfoot:x,tr:[2,"<table><tbody>","</tbody></table>"],td:T,th:T,option:w,optgroup:w},O=8>=m.a.W;m.a.ua=function(U,Q){var z;if(o){if(o.parseHTML)z=o.parseHTML(U,Q)||[];else if((z=o.clean([U],Q))&&z[0]){for(var F=z[0];F.parentNode&&F.parentNode.nodeType!==11;)F=F.parentNode;F.parentNode&&F.parentNode.removeChild(F)}}else{(z=Q)||(z=n);var F=z.parentWindow||z.defaultView||t,H=m.a.Db(U).toLowerCase(),W=z.createElement("div"),Z;for(Z=(H=H.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&M[H[1]]||p,H=Z[0],Z="ignored<div>"+Z[1]+U+Z[2]+"</div>",typeof F.innerShiv=="function"?W.appendChild(F.innerShiv(Z)):(O&&z.body.appendChild(W),W.innerHTML=Z,O&&W.parentNode.removeChild(W));H--;)W=W.lastChild;z=m.a.la(W.lastChild.childNodes)}return z},m.a.Md=function(U,Q){var z=m.a.ua(U,Q);return z.length&&z[0].parentElement||m.a.Yb(z)},m.a.fc=function(U,Q){if(m.a.Tb(U),Q=m.a.f(Q),Q!==null&&Q!==e)if(typeof Q!="string"&&(Q=Q.toString()),o)o(U).html(Q);else for(var z=m.a.ua(Q,U.ownerDocument),F=0;F<z.length;F++)U.appendChild(z[F])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function p(T,w){if(T){if(T.nodeType==8){var M=m.aa.Uc(T.nodeValue);M!=null&&w.push({ud:T,Kd:M})}else if(T.nodeType==1)for(var M=0,O=T.childNodes,U=O.length;M<U;M++)p(O[M],w)}}var x={};return{Xb:function(T){if(typeof T!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var w=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return x[w]=T,"<!--[ko_memo:"+w+"]-->"},bd:function(T,w){var M=x[T];if(M===e)throw Error("Couldn't find any memo with ID "+T+". Perhaps it's already been unmemoized.");try{return M.apply(null,w||[]),!0}finally{delete x[T]}},cd:function(T,w){var M=[];p(T,M);for(var O=0,U=M.length;O<U;O++){var Q=M[O].ud,z=[Q];w&&m.a.Nb(z,w),m.aa.bd(M[O].Kd,z),Q.nodeValue="",Q.parentNode&&Q.parentNode.removeChild(Q)}},Uc:function(T){return(T=T.match(/^\[ko_memo\:(.*?)\]$/))?T[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function p(){if(M){for(var Q=M,z=0,F;U<M;)if(F=w[U++]){if(U>Q){if(5e3<=++z){U=M,m.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}Q=M}try{F()}catch(H){m.a.Gc(H)}}}}function x(){p(),U=M=w.length=0}var T,w=[],M=0,O=1,U=0;return t.MutationObserver?T=function(Q){var z=n.createElement("div");return new MutationObserver(Q).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(x):T=n&&"onreadystatechange"in n.createElement("script")?function(Q){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,Q()},n.documentElement.appendChild(z)}:function(Q){setTimeout(Q,0)},{scheduler:T,zb:function(Q){return M||m.na.scheduler(x),w[M++]=Q,O++},cancel:function(Q){Q=Q-(O-M),Q>=U&&Q<M&&(w[Q]=null)},resetForTesting:function(){var Q=M-U;return U=M=w.length=0,Q},Sd:p}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(p,x){p.throttleEvaluation=x;var T=null;return m.$({read:p,write:function(w){clearTimeout(T),T=m.a.setTimeout(function(){p(w)},x)}})},rateLimit:function(p,x){var T,w,M;typeof x=="number"?T=x:(T=x.timeout,w=x.method),p.Hb=!1,M=typeof w=="function"?w:w=="notifyWhenChangesStop"?f:u,p.ub(function(O){return M(O,T,x)})},deferred:function(p,x){if(x!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");p.Hb||(p.Hb=!0,p.ub(function(T){var w,M=!1;return function(){if(!M){m.na.cancel(w),w=m.na.zb(T);try{M=!0,p.notifySubscribers(e,"dirty")}finally{M=!1}}}}))},notify:function(p,x){p.equalityComparer=x=="always"?null:c}};var _={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(p,x,T){this.da=p,this.lc=x,this.mc=T,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(p){this.Jb=p,m.a.K.za(p,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,y),y.qb(this)};var y={qb:function(p){p.U={change:[]},p.sc=1},subscribe:function(p,x,T){var w=this;T=T||"change";var M=new m.ic(w,x?p.bind(x):p,function(){m.a.Pa(w.U[T],M),w.hb&&w.hb(T)});return w.Qa&&w.Qa(T),w.U[T]||(w.U[T]=[]),w.U[T].push(M),M},notifySubscribers:function(p,x){if(x=x||"change",x==="change"&&this.Gb(),this.Wa(x)){var T=x==="change"&&this.ed||this.U[x].slice(0);try{m.u.xc();for(var w=0,M;M=T[w];++w)M.Ib||M.lc(p)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(p){return this.ob()!==p},Gb:function(){++this.sc},ub:function(p){var x=this,T=m.O(x),w,M,O,U,Q;x.gb||(x.gb=x.notifySubscribers,x.notifySubscribers=h);var z=p(function(){x.Ja=!1,T&&U===x&&(U=x.nc?x.nc():x());var F=M||Q&&x.sb(O,U);Q=M=w=!1,F&&x.gb(O=U)});x.qc=function(F,H){H&&x.Ja||(Q=!H),x.ed=x.U.change.slice(0),x.Ja=w=!0,U=F,z()},x.pc=function(F){w||(O=F,x.gb(F,"beforeChange"))},x.rc=function(){Q=!0},x.gd=function(){x.sb(O,x.v(!0))&&(M=!0)}},Wa:function(p){return this.U[p]&&this.U[p].length},Bd:function(p){if(p)return this.U[p]&&this.U[p].length||0;var x=0;return m.a.P(this.U,function(T,w){T!=="dirty"&&(x+=w.length)}),x},sb:function(p,x){return!this.equalityComparer||!this.equalityComparer(p,x)},toString:function(){return"[object Object]"},extend:function(p){var x=this;return p&&m.a.P(p,function(T,w){var M=m.Ta[T];typeof M=="function"&&(x=M(x,w)||x)}),x}};m.L(y,"init",y.qb),m.L(y,"subscribe",y.subscribe),m.L(y,"extend",y.extend),m.L(y,"getSubscriptionsCount",y.Bd),m.a.Ba&&m.a.setPrototypeOf(y,Function.prototype),m.T.fn=y,m.Qc=function(p){return p!=null&&typeof p.subscribe=="function"&&typeof p.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function p(O){T.push(w),w=O}function x(){w=T.pop()}var T=[],w,M=0;return{xc:p,end:x,cc:function(O){if(w){if(!m.Qc(O))throw Error("Only subscribable things can act as dependencies");w.od.call(w.pd,O,O.fd||(O.fd=++M))}},G:function(O,U,Q){try{return p(),O.apply(U,Q||[])}finally{x()}},qa:function(){if(w)return w.o.qa()},Va:function(){if(w)return w.o.Va()},Ya:function(){if(w)return w.Ya},o:function(){if(w)return w.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var C=m.a.Da("_latestValue");m.ta=function(p){function x(){return 0<arguments.length?(x.sb(x[C],arguments[0])&&(x.ya(),x[C]=arguments[0],x.xa()),this):(m.u.cc(x),x[C])}return x[C]=p,m.a.Ba||m.a.extend(x,m.T.fn),m.T.fn.qb(x),m.a.Ab(x,E),m.options.deferUpdates&&m.Ta.deferred(x,!0),x};var E={equalityComparer:c,v:function(){return this[C]},xa:function(){this.notifySubscribers(this[C],"spectate"),this.notifySubscribers(this[C])},ya:function(){this.notifySubscribers(this[C],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(E,m.T.fn);var I=m.ta.Ma="__ko_proto__";E[I]=m.ta,m.O=function(p){if((p=typeof p=="function"&&p[I])&&p!==E[I]&&p!==m.o.fn[I])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!p},m.Za=function(p){return typeof p=="function"&&(p[I]===E[I]||p[I]===m.o.fn[I]&&p.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",E),m.L(E,"peek",E.v),m.L(E,"valueHasMutated",E.xa),m.L(E,"valueWillMutate",E.ya),m.Ha=function(p){if(p=p||[],typeof p!="object"||!("length"in p))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return p=m.ta(p),m.a.Ab(p,m.Ha.fn),p.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(p){for(var x=this.v(),T=[],w=typeof p!="function"||m.O(p)?function(U){return U===p}:p,M=0;M<x.length;M++){var O=x[M];if(w(O)){if(T.length===0&&this.ya(),x[M]!==O)throw Error("Array modified during remove; cannot remove item");T.push(O),x.splice(M,1),M--}}return T.length&&this.xa(),T},removeAll:function(p){if(p===e){var x=this.v(),T=x.slice(0);return this.ya(),x.splice(0,x.length),this.xa(),T}return p?this.remove(function(w){return 0<=m.a.A(p,w)}):[]},destroy:function(p){var x=this.v(),T=typeof p!="function"||m.O(p)?function(O){return O===p}:p;this.ya();for(var w=x.length-1;0<=w;w--){var M=x[w];T(M)&&(M._destroy=!0)}this.xa()},destroyAll:function(p){return p===e?this.destroy(function(){return!0}):p?this.destroy(function(x){return 0<=m.a.A(p,x)}):[]},indexOf:function(p){var x=this();return m.a.A(x,p)},replace:function(p,x){var T=this.indexOf(p);0<=T&&(this.ya(),this.v()[T]=x,this.xa())},sorted:function(p){var x=this().slice(0);return p?x.sort(p):x.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(p){m.Ha.fn[p]=function(){var x=this.v();this.ya(),this.zc(x,p,arguments);var T=x[p].apply(x,arguments);return this.xa(),T===x?this:T}}),m.a.D(["slice"],function(p){m.Ha.fn[p]=function(){var x=this();return x[p].apply(x,arguments)}}),m.Pc=function(p){return m.O(p)&&typeof p.remove=="function"&&typeof p.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(p,x){function T(){function W(){if(Q){var Z=[].concat(p.v()||[]),Y;p.Wa("arrayChange")&&((!M||1<Q)&&(M=m.a.Pb(z,Z,p.Ob)),Y=M),z=Z,M=null,Q=0,Y&&Y.length&&p.notifySubscribers(Y,"arrayChange")}}w?W():(w=!0,U=p.subscribe(function(){++Q},null,"spectate"),z=[].concat(p.v()||[]),M=null,O=p.subscribe(W))}if(p.Ob={},x&&typeof x=="object"&&m.a.extend(p.Ob,x),p.Ob.sparse=!0,!p.zc){var w=!1,M=null,O,U,Q=0,z,F=p.Qa,H=p.hb;p.Qa=function(W){F&&F.call(p,W),W==="arrayChange"&&T()},p.hb=function(W){H&&H.call(p,W),W!=="arrayChange"||p.Wa("arrayChange")||(O&&O.s(),U&&U.s(),U=O=null,w=!1,z=e)},p.zc=function(W,Z,Y){function $(Te,ke,Ge){return X[X.length]={status:Te,value:ke,index:Ge}}if(w&&!Q){var X=[],he=W.length,ge=Y.length,fe=0;switch(Z){case"push":fe=he;case"unshift":for(Z=0;Z<ge;Z++)$("added",Y[Z],fe+Z);break;case"pop":fe=he-1;case"shift":he&&$("deleted",W[fe],fe);break;case"splice":Z=Math.min(Math.max(0,0>Y[0]?he+Y[0]:Y[0]),he);for(var he=ge===1?he:Math.min(Z+(Y[1]||0),he),ge=Z+ge-2,fe=Math.max(he,ge),ye=[],Ie=[],ve=2;Z<fe;++Z,++ve)Z<he&&Ie.push($("deleted",W[Z],Z)),Z<ge&&ye.push($("added",Y[ve],Z));m.a.Kc(Ie,ye);break;default:return}M=X}}}};var b=m.a.Da("_state");m.o=m.$=function(p,x,T){function w(){if(0<arguments.length){if(typeof M=="function")M.apply(O.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return O.ra||m.u.cc(w),(O.ka||O.J&&w.Xa())&&w.ha(),O.X}if(typeof p=="object"?T=p:(T=T||{},p&&(T.read=p)),typeof T.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var M=T.write,O={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:T.read,nb:x||T.owner,l:T.disposeWhenNodeIsRemoved||T.l||null,Sa:T.disposeWhen||T.Sa,Rb:null,I:{},V:0,Ic:null};return w[b]=O,w.Nc=typeof M=="function",m.a.Ba||m.a.extend(w,m.T.fn),m.T.fn.qb(w),m.a.Ab(w,S),T.pure?(O.wb=!0,O.J=!0,m.a.extend(w,B)):T.deferEvaluation&&m.a.extend(w,v),m.options.deferUpdates&&m.Ta.deferred(w,!0),O.l&&(O.jc=!0,O.l.nodeType||(O.l=null)),O.J||T.deferEvaluation||w.ha(),O.l&&w.ja()&&m.a.K.za(O.l,O.Rb=function(){w.s()}),w};var S={equalityComparer:c,qa:function(){return this[b].V},Va:function(){var p=[];return m.a.P(this[b].I,function(x,T){p[T.Ka]=T.da}),p},Vb:function(p){if(!this[b].V)return!1;var x=this.Va();return m.a.A(x,p)!==-1?!0:!!m.a.Lb(x,function(T){return T.Vb&&T.Vb(p)})},uc:function(p,x,T){if(this[b].wb&&x===this)throw Error("A 'pure' computed must not be called recursively");this[b].I[p]=T,T.Ka=this[b].V++,T.La=x.ob()},Xa:function(){var p,x,T=this[b].I;for(p in T)if(Object.prototype.hasOwnProperty.call(T,p)&&(x=T[p],this.Ia&&x.da.Ja||x.da.Dd(x.La)))return!0},Jd:function(){this.Ia&&!this[b].rb&&this.Ia(!1)},ja:function(){var p=this[b];return p.ka||0<p.V},Rd:function(){this.Ja?this[b].ka&&(this[b].sa=!0):this.Hc()},$c:function(p){if(p.Hb){var x=p.subscribe(this.Jd,this,"dirty"),T=p.subscribe(this.Rd,this);return{da:p,s:function(){x.s(),T.s()}}}return p.subscribe(this.Hc,this)},Hc:function(){var p=this,x=p.throttleEvaluation;x&&0<=x?(clearTimeout(this[b].Ic),this[b].Ic=m.a.setTimeout(function(){p.ha(!0)},x)):p.Ia?p.Ia(!0):p.ha(!0)},ha:function(p){var x=this[b],T=x.Sa,w=!1;if(!x.rb&&!x.ra){if(x.l&&!m.a.Sb(x.l)||T&&T()){if(!x.jc){this.s();return}}else x.jc=!1;x.rb=!0;try{w=this.zd(p)}finally{x.rb=!1}return w}},zd:function(p){var x=this[b],w=!1,T=x.wb?e:!x.V,w={qd:this,mb:x.I,Qb:x.V};m.u.xc({pd:w,od:g,o:this,Ya:T}),x.I={},x.V=0;var M=this.yd(x,w);return x.V?w=this.sb(x.X,M):(this.s(),w=!0),w&&(x.J?this.Gb():this.notifySubscribers(x.X,"beforeChange"),x.X=M,this.notifySubscribers(x.X,"spectate"),!x.J&&p&&this.notifySubscribers(x.X),this.rc&&this.rc()),T&&this.notifySubscribers(x.X,"awake"),w},yd:function(p,x){try{var T=p.Wc;return p.nb?T.call(p.nb):T()}finally{m.u.end(),x.Qb&&!p.J&&m.a.P(x.mb,A),p.sa=p.ka=!1}},v:function(p){var x=this[b];return(x.ka&&(p||!x.V)||x.J&&this.Xa())&&this.ha(),x.X},ub:function(p){m.T.fn.ub.call(this,p),this.nc=function(){return this[b].J||(this[b].sa?this.ha():this[b].ka=!1),this[b].X},this.Ia=function(x){this.pc(this[b].X),this[b].ka=!0,x&&(this[b].sa=!0),this.qc(this,!x)}},s:function(){var p=this[b];!p.J&&p.I&&m.a.P(p.I,function(x,T){T.s&&T.s()}),p.l&&p.Rb&&m.a.K.yb(p.l,p.Rb),p.I=e,p.V=0,p.ra=!0,p.sa=!1,p.ka=!1,p.J=!1,p.l=e,p.Sa=e,p.Wc=e,this.Nc||(p.nb=e)}},B={Qa:function(p){var x=this,T=x[b];if(!T.ra&&T.J&&p=="change"){if(T.J=!1,T.sa||x.Xa())T.I=null,T.V=0,x.ha()&&x.Gb();else{var w=[];m.a.P(T.I,function(M,O){w[O.Ka]=M}),m.a.D(w,function(M,O){var U=T.I[M],Q=x.$c(U.da);Q.Ka=O,Q.La=U.La,T.I[M]=Q}),x.Xa()&&x.ha()&&x.Gb()}T.ra||x.notifySubscribers(T.X,"awake")}},hb:function(p){var x=this[b];x.ra||p!="change"||this.Wa("change")||(m.a.P(x.I,function(T,w){w.s&&(x.I[T]={da:w.da,Ka:w.Ka,La:w.La},w.s())}),x.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var p=this[b];return p.J&&(p.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},v={Qa:function(p){p!="change"&&p!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(S,m.T.fn);var P=m.ta.Ma;S[P]=m.o,m.Oc=function(p){return typeof p=="function"&&p[P]===S[P]},m.Fd=function(p){return m.Oc(p)&&p[b]&&p[b].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",S),m.L(S,"peek",S.v),m.L(S,"dispose",S.s),m.L(S,"isActive",S.ja),m.L(S,"getDependenciesCount",S.qa),m.L(S,"getDependencies",S.Va),m.xb=function(p,x){return typeof p=="function"?m.o(p,x,{pure:!0}):(p=m.a.extend({},p),p.pure=!0,m.o(p,x))},m.b("pureComputed",m.xb),function(){function p(w,M,O){if(O=O||new T,w=M(w),typeof w!="object"||w===null||w===e||w instanceof RegExp||w instanceof Date||w instanceof String||w instanceof Number||w instanceof Boolean)return w;var U=w instanceof Array?[]:{};return O.save(w,U),x(w,function(Q){var z=M(w[Q]);switch(typeof z){case"boolean":case"number":case"string":case"function":U[Q]=z;break;case"object":case"undefined":var F=O.get(z);U[Q]=F!==e?F:p(z,M,O)}}),U}function x(w,M){if(w instanceof Array){for(var O=0;O<w.length;O++)M(O);typeof w.toJSON=="function"&&M("toJSON")}else for(O in w)M(O)}function T(){this.keys=[],this.values=[]}m.ad=function(w){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return p(w,function(M){for(var O=0;m.O(M)&&10>O;O++)M=M();return M})},m.toJSON=function(w,M,O){return w=m.ad(w),m.a.hc(w,M,O)},T.prototype={constructor:T,save:function(w,M){var O=m.a.A(this.keys,w);0<=O?this.values[O]=M:(this.keys.push(w),this.values.push(M))},get:function(w){return w=m.a.A(this.keys,w),0<=w?this.values[w]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(p,x,T){function w(M){var O=m.xb(p,T).extend({ma:"always"}),U=O.subscribe(function(Q){Q&&(U.s(),M(Q))});return O.notifySubscribers(O.v()),U}return typeof Promise!="function"||x?w(x.bind(T)):new Promise(w)},m.b("when",m.Wd),function(){m.w={M:function(p){switch(m.a.R(p)){case"option":return p.__ko__hasDomDataOptionValue__===!0?m.a.g.get(p,m.c.options.$b):7>=m.a.W?p.getAttributeNode("value")&&p.getAttributeNode("value").specified?p.value:p.text:p.value;case"select":return 0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex]):e;default:return p.value}},cb:function(p,x,T){switch(m.a.R(p)){case"option":typeof x=="string"?(m.a.g.set(p,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in p&&delete p.__ko__hasDomDataOptionValue__,p.value=x):(m.a.g.set(p,m.c.options.$b,x),p.__ko__hasDomDataOptionValue__=!0,p.value=typeof x=="number"?x:"");break;case"select":(x===""||x===null)&&(x=e);for(var w=-1,M=0,O=p.options.length,U;M<O;++M)if(U=m.w.M(p.options[M]),U==x||U===""&&x===e){w=M;break}(T||0<=w||x===e&&1<p.size)&&(p.selectedIndex=w,m.a.W===6&&m.a.setTimeout(function(){p.selectedIndex=w},0));break;default:(x===null||x===e)&&(x=""),p.value=x}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function p(Q){Q=m.a.Db(Q),Q.charCodeAt(0)===123&&(Q=Q.slice(1,-1)),Q+=` +,`;var z=[],F=Q.match(w),H,W=[],Z=0;if(1<F.length){for(var Y=0,$;$=F[Y];++Y){var X=$.charCodeAt(0);if(X===44){if(0>=Z){z.push(H&&W.length?{key:H,value:W.join("")}:{unknown:H||W.join("")}),H=Z=0,W=[];continue}}else if(X===58){if(!Z&&!H&&W.length===1){H=W.pop();continue}}else{if(X===47&&1<$.length&&($.charCodeAt(1)===47||$.charCodeAt(1)===42))continue;X===47&&Y&&1<$.length?(X=F[Y-1].match(M))&&!O[X[0]]&&(Q=Q.substr(Q.indexOf($)+1),F=Q.match(w),Y=-1,$="/"):X===40||X===123||X===91?++Z:X===41||X===125||X===93?--Z:H||W.length||X!==34&&X!==39||($=$.slice(1,-1))}W.push($)}if(0<Z)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var x=["true","false","null","undefined"],T=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,w=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),M=/[\])"'A-Za-z0-9_$]+$/,O={in:1,return:1,typeof:1},U={};return{Ra:[],wa:U,ac:p,vb:function(Q,z){function F(X,he){var ge;if(!Y){var fe=m.getBindingHandler(X);if(fe&&fe.preprocess&&!(he=fe.preprocess(he,X,F)))return;(fe=U[X])&&(ge=he,0<=m.a.A(x,ge)?ge=!1:(fe=ge.match(T),ge=fe===null?!1:fe[1]?"Object("+fe[1]+")"+fe[2]:ge),fe=ge),fe&&W.push("'"+(typeof U[X]=="string"?U[X]:X)+"':function(_z){"+ge+"=_z}")}Z&&(he="function(){return "+he+" }"),H.push("'"+X+"':"+he)}z=z||{};var H=[],W=[],Z=z.valueAccessors,Y=z.bindingParams,$=typeof Q=="string"?p(Q):Q;return m.a.D($,function(X){F(X.key||X.unknown,X.value)}),W.length&&F("_ko_property_writers","{"+W.join(",")+" }"),H.join(",")},Id:function(Q,z){for(var F=0;F<Q.length;F++)if(Q[F].key==z)return!0;return!1},eb:function(Q,z,F,H,W){Q&&m.O(Q)?!m.Za(Q)||W&&Q.v()===H||Q(H):(Q=z.get("_ko_property_writers"))&&Q[F]&&Q[F](H)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function p(F){return F.nodeType==8&&O.test(M?F.text:F.nodeValue)}function x(F){return F.nodeType==8&&U.test(M?F.text:F.nodeValue)}function T(F,H){for(var W=F,Z=1,Y=[];W=W.nextSibling;){if(x(W)&&(m.a.g.set(W,z,!0),Z--,Z===0))return Y;Y.push(W),p(W)&&Z++}if(!H)throw Error("Cannot find closing comment tag to match: "+F.nodeValue);return null}function w(F,H){var W=T(F,H);return W?0<W.length?W[W.length-1].nextSibling:F.nextSibling:null}var M=n&&n.createComment("test").text==="<!--test-->",O=M?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,U=M?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,Q={ul:!0,ol:!0},z="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(F){return p(F)?T(F):F.childNodes},Ea:function(F){if(p(F)){F=m.h.childNodes(F);for(var H=0,W=F.length;H<W;H++)m.removeNode(F[H])}else m.a.Tb(F)},va:function(F,H){if(p(F)){m.h.Ea(F);for(var W=F.nextSibling,Z=0,Y=H.length;Z<Y;Z++)W.parentNode.insertBefore(H[Z],W)}else m.a.va(F,H)},Vc:function(F,H){var W;p(F)?(W=F.nextSibling,F=F.parentNode):W=F.firstChild,W?H!==W&&F.insertBefore(H,W):F.appendChild(H)},Wb:function(F,H,W){W?(W=W.nextSibling,p(F)&&(F=F.parentNode),W?H!==W&&F.insertBefore(H,W):F.appendChild(H)):m.h.Vc(F,H)},firstChild:function(F){if(p(F))return!F.nextSibling||x(F.nextSibling)?null:F.nextSibling;if(F.firstChild&&x(F.firstChild))throw Error("Found invalid end comment, as the first child of "+F);return F.firstChild},nextSibling:function(F){if(p(F)&&(F=w(F)),F.nextSibling&&x(F.nextSibling)){var H=F.nextSibling;if(x(H)&&!m.a.g.get(H,z))throw Error("Found end comment without a matching opening comment, as child of "+F);return null}return F.nextSibling},Cd:p,Vd:function(F){return(F=(M?F.text:F.nodeValue).match(O))?F[1]:null},Sc:function(F){if(Q[m.a.R(F)]){var H=F.firstChild;if(H)do if(H.nodeType===1){var W;W=H.firstChild;var Z=null;if(W)do if(Z)Z.push(W);else if(p(W)){var Y=w(W,!0);Y?W=Y:Z=[W]}else x(W)&&(Z=[W]);while(W=W.nextSibling);if(W=Z)for(Z=H.nextSibling,Y=0;Y<W.length;Y++)Z?F.insertBefore(W[Y],Z):F.appendChild(W[Y])}while(H=H.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(p);case 8:return m.h.Cd(p);default:return!1}},getBindings:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p):null;return m.j.tc(T,p,x,!1)},getBindingAccessors:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p,{valueAccessors:!0}):null;return m.j.tc(T,p,x,!0)},getBindingsString:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind");case 8:return m.h.Vd(p);default:return null}},parseBindingsString:function(p,x,T,w){try{var M=this.nd,O=p+(w&&w.valueAccessors||""),U;if(!(U=M[O])){var Q,z="with($context){with($data||{}){return{"+m.m.vb(p,w)+"}}}";Q=new Function("$context","$element",z),U=M[O]=Q}return U(x,T)}catch(F){throw F.message=`Unable to parse bindings. +Bindings value: `+p+` +Message: `+F.message,F}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function p(fe){var ye=(fe=m.a.g.get(fe,ge))&&fe.N;ye&&(fe.N=null,ye.Tc())}function x(fe,ye,Ie){this.node=fe,this.yc=ye,this.kb=[],this.H=!1,ye.N||m.a.K.za(fe,p),Ie&&Ie.N&&(Ie.N.kb.push(fe),this.Kb=Ie)}function T(fe){return function(){return fe}}function w(fe){return fe()}function M(fe){return m.a.Ga(m.u.G(fe),function(ye,Ie){return function(){return fe()[Ie]}})}function O(fe,ye,Ie){return typeof fe=="function"?M(fe.bind(null,ye,Ie)):m.a.Ga(fe,T)}function U(fe,ye){return M(this.getBindings.bind(this,fe,ye))}function Q(fe,ye){var Ie=m.h.firstChild(ye);if(Ie){var ve,Te=m.ga.instance,ke=Te.preprocessNode;if(ke){for(;ve=Ie;)Ie=m.h.nextSibling(ve),ke.call(Te,ve);Ie=m.h.firstChild(ye)}for(;ve=Ie;)Ie=m.h.nextSibling(ve),z(fe,ve)}m.i.ma(ye,m.i.H)}function z(fe,ye){var Ie=fe,ve=ye.nodeType===1;ve&&m.h.Sc(ye),(ve||m.ga.instance.nodeHasBindings(ye))&&(Ie=H(ye,null,fe).bindingContextForDescendants),Ie&&!X[m.a.R(ye)]&&Q(Ie,ye)}function F(fe){var ye=[],Ie={},ve=[];return m.a.P(fe,function Te(ke){if(!Ie[ke]){var Ge=m.getBindingHandler(ke);Ge&&(Ge.after&&(ve.push(ke),m.a.D(Ge.after,function(qe){if(fe[qe]){if(m.a.A(ve,qe)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+ve.join(", "));Te(qe)}}),ve.length--),ye.push({key:ke,Mc:Ge})),Ie[ke]=!0}}),ye}function H(fe,ye,Ie){var ve=m.a.g.Ub(fe,ge,{}),Te=ve.hd;if(!ye){if(Te)throw Error("You cannot apply bindings multiple times to the same element.");ve.hd=!0}Te||(ve.context=Ie),ve.Zb||(ve.Zb={});var ke;if(ye&&typeof ye!="function")ke=ye;else{var Ge=m.ga.instance,qe=Ge.getBindingAccessors||U,tt=m.$(function(){return(ke=ye?ye(Ie,fe):qe.call(Ge,fe,Ie))&&(Ie[Z]&&Ie[Z](),Ie[$]&&Ie[$]()),ke},null,{l:fe});ke&&tt.ja()||(tt=null)}var $t=Ie,it;if(ke){var tn=function(){return m.a.Ga(tt?tt():ke,w)},Wt=tt?function(vt){return function(){return w(tt()[vt])}}:function(vt){return ke[vt]};tn.get=function(vt){return ke[vt]&&w(Wt(vt))},tn.has=function(vt){return vt in ke},m.i.H in ke&&m.i.subscribe(fe,m.i.H,function(){var vt=(0,ke[m.i.H])();if(vt){var bi=m.h.childNodes(fe);bi.length&&vt(bi,m.Ec(bi[0]))}}),m.i.pa in ke&&($t=m.i.Cb(fe,Ie),m.i.subscribe(fe,m.i.pa,function(){var vt=(0,ke[m.i.pa])();vt&&m.h.firstChild(fe)&&vt(fe)})),ve=F(ke),m.a.D(ve,function(vt){var bi=vt.Mc.init,di=vt.Mc.update,Ot=vt.key;if(fe.nodeType===8&&!m.h.ea[Ot])throw Error("The binding '"+Ot+"' cannot be used with virtual elements");try{typeof bi=="function"&&m.u.G(function(){var Tt=bi(fe,Wt(Ot),tn,$t.$data,$t);if(Tt&&Tt.controlsDescendantBindings){if(it!==e)throw Error("Multiple bindings ("+it+" and "+Ot+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");it=Ot}}),typeof di=="function"&&m.$(function(){di(fe,Wt(Ot),tn,$t.$data,$t)},null,{l:fe})}catch(Tt){throw Tt.message='Unable to process binding "'+Ot+": "+ke[Ot]+`" +Message: `+Tt.message,Tt}})}return ve=it===e,{shouldBindDescendants:ve,bindingContextForDescendants:ve&&$t}}function W(fe,ye){return fe&&fe instanceof m.fa?fe:new m.fa(fe,e,e,ye)}var Z=m.a.Da("_subscribable"),Y=m.a.Da("_ancestorBindingInfo"),$=m.a.Da("_dataDependency");m.c={};var X={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(fe){return m.c[fe]};var he={};m.fa=function(fe,ye,Ie,ve,Te){function ke(){var Wt=$t?tt():tt,vt=m.a.f(Wt);return ye?(m.a.extend(Ge,ye),Y in ye&&(Ge[Y]=ye[Y])):(Ge.$parents=[],Ge.$root=vt,Ge.ko=m),Ge[Z]=it,qe?vt=Ge.$data:(Ge.$rawData=Wt,Ge.$data=vt),Ie&&(Ge[Ie]=vt),ve&&ve(Ge,ye,vt),ye&&ye[Z]&&!m.S.o().Vb(ye[Z])&&ye[Z](),tn&&(Ge[$]=tn),Ge.$data}var Ge=this,qe=fe===he,tt=qe?e:fe,$t=typeof tt=="function"&&!m.O(tt),it,tn=Te&&Te.dataDependency;Te&&Te.exportDependencies?ke():(it=m.xb(ke),it.v(),it.ja()?it.equalityComparer=null:Ge[Z]=e)},m.fa.prototype.createChildContext=function(fe,ye,Ie,ve){if(!ve&&ye&&typeof ye=="object"&&(ve=ye,ye=ve.as,Ie=ve.extend),ye&&ve&&ve.noChildContext){var Te=typeof fe=="function"&&!m.O(fe);return new m.fa(he,this,null,function(ke){Ie&&Ie(ke),ke[ye]=Te?fe():fe},ve)}return new m.fa(fe,this,ye,function(ke,Ge){ke.$parentContext=Ge,ke.$parent=Ge.$data,ke.$parents=(Ge.$parents||[]).slice(0),ke.$parents.unshift(ke.$parent),Ie&&Ie(ke)},ve)},m.fa.prototype.extend=function(fe,ye){return new m.fa(he,this,null,function(Ie){m.a.extend(Ie,typeof fe=="function"?fe(Ie):fe)},ye)};var ge=m.a.g.Z();x.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},x.prototype.sd=function(fe){m.a.Pa(this.kb,fe),!this.kb.length&&this.H&&this.Cc()},x.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,p),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(fe,ye,Ie,ve,Te){var ke=m.a.g.Ub(fe,ge,{});return ke.Fa||(ke.Fa=new m.T),Te&&Te.notifyImmediately&&ke.Zb[ye]&&m.u.G(Ie,ve,[fe]),ke.Fa.subscribe(Ie,ve,ye)},ma:function(fe,ye){var Ie=m.a.g.get(fe,ge);if(Ie&&(Ie.Zb[ye]=!0,Ie.Fa&&Ie.Fa.notifySubscribers(fe,ye),ye==m.i.H)){if(Ie.N)Ie.N.Cc();else if(Ie.N===e&&Ie.Fa&&Ie.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(fe,ye){var Ie=m.a.g.Ub(fe,ge,{});return Ie.N||(Ie.N=new x(fe,Ie,ye[Y])),ye[Y]==Ie?ye:ye.extend(function(ve){ve[Y]=Ie})}},m.Td=function(fe){return(fe=m.a.g.get(fe,ge))&&fe.context},m.ib=function(fe,ye,Ie){return fe.nodeType===1&&m.h.Sc(fe),H(fe,ye,W(Ie))},m.ld=function(fe,ye,Ie){return Ie=W(Ie),m.ib(fe,O(ye,Ie,fe),Ie)},m.Oa=function(fe,ye){ye.nodeType!==1&&ye.nodeType!==8||Q(W(fe),ye)},m.vc=function(fe,ye,Ie){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(ye=n.body,!ye)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!ye||ye.nodeType!==1&&ye.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z(W(fe,Ie),ye)},m.Dc=function(fe){return!fe||fe.nodeType!==1&&fe.nodeType!==8?e:m.Td(fe)},m.Ec=function(fe){return(fe=m.Dc(fe))?fe.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(p){function x(U,Q){var z=Object.prototype.hasOwnProperty.call(M,U)?M[U]:p,F;z?z.subscribe(Q):(z=M[U]=new m.T,z.subscribe(Q),T(U,function(H,W){var Z=!(!W||!W.synchronous);O[U]={definition:H,Gd:Z},delete M[U],F||Z?z.notifySubscribers(H):m.na.zb(function(){z.notifySubscribers(H)})}),F=!0)}function T(U,Q){w("getConfig",[U],function(z){z?w("loadComponent",[U,z],function(F){Q(F,z)}):Q(null,null)})}function w(U,Q,z,F){F||(F=m.j.loaders.slice(0));var H=F.shift();if(H){var W=H[U];if(W){var Z=!1;if(W.apply(H,Q.concat(function(Y){Z?z(null):Y!==null?z(Y):w(U,Q,z,F)}))!==p&&(Z=!0,!H.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else w(U,Q,z,F)}else z(null)}var M={},O={};m.j={get:function(U,Q){var z=Object.prototype.hasOwnProperty.call(O,U)?O[U]:p;z?z.Gd?m.u.G(function(){Q(z.definition)}):m.na.zb(function(){Q(z.definition)}):x(U,Q)},Bc:function(U){delete O[U]},oc:w},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function p(z,F,H,W){function Z(){--$===0&&W(Y)}var Y={},$=2,X=H.template;H=H.viewModel,X?M(F,X,function(he){m.j.oc("loadTemplate",[z,he],function(ge){Y.template=ge,Z()})}):Z(),H?M(F,H,function(he){m.j.oc("loadViewModel",[z,he],function(ge){Y[Q]=ge,Z()})}):Z()}function x(z,F,H){if(typeof F=="function")H(function(Z){return new F(Z)});else if(typeof F[Q]=="function")H(F[Q]);else if("instance"in F){var W=F.instance;H(function(){return W})}else"viewModel"in F?x(z,F.viewModel,H):z("Unknown viewModel value: "+F)}function T(z){switch(m.a.R(z)){case"script":return m.a.ua(z.text);case"textarea":return m.a.ua(z.value);case"template":if(w(z.content))return m.a.Ca(z.content.childNodes)}return m.a.Ca(z.childNodes)}function w(z){return t.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function M(z,F,H){typeof F.require=="string"?a||t.require?(a||t.require)([F.require],function(W){W&&typeof W=="object"&&W.Xd&&W.default&&(W=W.default),H(W)}):z("Uses require, but no AMD loader is present"):H(F)}function O(z){return function(F){throw Error("Component '"+z+"': "+F)}}var U={};m.j.register=function(z,F){if(!F)throw Error("Invalid configuration for "+z);if(m.j.tb(z))throw Error("Component "+z+" is already registered");U[z]=F},m.j.tb=function(z){return Object.prototype.hasOwnProperty.call(U,z)},m.j.unregister=function(z){delete U[z],m.j.Bc(z)},m.j.Fc={getConfig:function(z,F){F(m.j.tb(z)?U[z]:null)},loadComponent:function(z,F,H){var W=O(z);M(W,F,function(Z){p(z,W,Z,H)})},loadTemplate:function(z,F,H){if(z=O(z),typeof F=="string")H(m.a.ua(F));else if(F instanceof Array)H(F);else if(w(F))H(m.a.la(F.childNodes));else if(F.element)if(F=F.element,t.HTMLElement?F instanceof HTMLElement:F&&F.tagName&&F.nodeType===1)H(T(F));else if(typeof F=="string"){var W=n.getElementById(F);W?H(T(W)):z("Cannot find element with ID "+F)}else z("Unknown element type: "+F);else z("Unknown template value: "+F)},loadViewModel:function(z,F,H){x(O(z),F,H)}};var Q="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=U}(),function(){function p(T,w){var M=T.getAttribute("params");if(M){var M=x.parseBindingsString(M,w,T,{valueAccessors:!0,bindingParams:!0}),M=m.a.Ga(M,function(Q){return m.o(Q,null,{l:T})}),O=m.a.Ga(M,function(Q){var z=Q.v();return Q.ja()?m.o({read:function(){return m.a.f(Q())},write:m.Za(z)&&function(F){Q()(F)},l:T}):z});return Object.prototype.hasOwnProperty.call(O,"$raw")||(O.$raw=M),O}return{$raw:{}}}m.j.getComponentNameForNode=function(T){var w=m.a.R(T);if(m.j.tb(w)&&(w.indexOf("-")!=-1||""+T=="[object HTMLUnknownElement]"||8>=m.a.W&&T.tagName===w))return w},m.j.tc=function(T,w,M,O){if(w.nodeType===1){var U=m.j.getComponentNameForNode(w);if(U){if(T=T||{},T.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var Q={name:U,params:p(w,M)};T.component=O?function(){return Q}:Q}}return T};var x=new m.ga;9>m.a.W&&(m.j.register=function(T){return function(w){return T.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(T){return function(){var w=T(),M=m.j.dd,O;for(O in M);return w}}(n.createDocumentFragment))}(),function(){function p(w,M,O){if(M=M.template,!M)throw Error("Component '"+w+"' has no template");w=m.a.Ca(M),m.h.va(O,w)}function x(w,M,O){var U=w.createViewModel;return U?U.call(w,M,O):M}var T=0;m.c.component={init:function(w,M,O,U,Q){function z(){var Y=F&&F.dispose;typeof Y=="function"&&Y.call(F),W&&W.s(),H=F=W=null}var F,H,W,Z=m.a.la(m.h.childNodes(w));return m.h.Ea(w),m.a.K.za(w,z),m.o(function(){var Y=m.a.f(M()),$,X;if(typeof Y=="string"?$=Y:($=m.a.f(Y.name),X=m.a.f(Y.params)),!$)throw Error("No component name specified");var he=m.i.Cb(w,Q),ge=H=++T;m.j.get($,function(fe){if(H===ge){if(z(),!fe)throw Error("Unknown component '"+$+"'");p($,fe,w);var ye=x(fe,X,{element:w,templateNodes:Z});fe=he.createChildContext(ye,{extend:function(Ie){Ie.$component=ye,Ie.$componentTemplateNodes=Z}}),ye&&ye.koDescendantsComplete&&(W=m.i.subscribe(w,m.i.pa,ye.koDescendantsComplete,ye)),F=ye,m.Oa(fe,w)}})},null,{l:w}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var N={class:"className",for:"htmlFor"};m.c.attr={update:function(p,x){var T=m.a.f(x())||{};m.a.P(T,function(w,M){M=m.a.f(M);var O=w.indexOf(":"),O="lookupNamespaceURI"in p&&0<O&&p.lookupNamespaceURI(w.substr(0,O)),U=M===!1||M===null||M===e;U?O?p.removeAttributeNS(O,w):p.removeAttribute(w):M=M.toString(),8>=m.a.W&&w in N?(w=N[w],U?p.removeAttribute(w):p[w]=M):U||(O?p.setAttributeNS(O,w,M):p.setAttribute(w,M)),w==="name"&&m.a.Yc(p,U?"":M)})}},function(){m.c.checked={after:["value","attr"],init:function(p,x,T){function w(){var Y=p.checked,$=O();if(!m.S.Ya()&&(Y||!Q&&!m.S.qa())){var X=m.u.G(x);if(F){var he=H?X.v():X,ge=Z;Z=$,ge!==$?Y&&(m.a.Na(he,$,!0),m.a.Na(he,ge,!1)):m.a.Na(he,$,Y),H&&m.Za(X)&&X(he)}else U&&($===e?$=Y:Y||($=e)),m.m.eb(X,T,"checked",$,!0)}}function M(){var Y=m.a.f(x()),$=O();F?(p.checked=0<=m.a.A(Y,$),Z=$):p.checked=U&&$===e?!!Y:O()===Y}var O=m.xb(function(){if(T.has("checkedValue"))return m.a.f(T.get("checkedValue"));if(W)return T.has("value")?m.a.f(T.get("value")):p.value}),U=p.type=="checkbox",Q=p.type=="radio";if(U||Q){var z=x(),F=U&&m.a.f(z)instanceof Array,H=!(F&&z.push&&z.splice),W=Q||F,Z=F?O():e;Q&&!p.name&&m.c.uniqueName.init(p,function(){return!0}),m.o(w,null,{l:p}),m.a.B(p,"click",w),m.o(M,null,{l:p}),z=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(p,x){p.value=m.a.f(x())}}}(),m.c.class={update:function(p,x){var T=m.a.Db(m.a.f(x()));m.a.Eb(p,p.__ko__cssValue,!1),p.__ko__cssValue=T,m.a.Eb(p,T,!0)}},m.c.css={update:function(p,x){var T=m.a.f(x());T!==null&&typeof T=="object"?m.a.P(T,function(w,M){M=m.a.f(M),m.a.Eb(p,w,M)}):m.c.class.update(p,x)}},m.c.enable={update:function(p,x){var T=m.a.f(x());T&&p.disabled?p.removeAttribute("disabled"):T||p.disabled||(p.disabled=!0)}},m.c.disable={update:function(p,x){m.c.enable.update(p,function(){return!m.a.f(x())})}},m.c.event={init:function(p,x,T,w,M){var O=x()||{};m.a.P(O,function(U){typeof U=="string"&&m.a.B(p,U,function(Q){var z,F=x()[U];if(F){try{var H=m.a.la(arguments);w=M.$data,H.unshift(w),z=F.apply(w,H)}finally{z!==!0&&(Q.preventDefault?Q.preventDefault():Q.returnValue=!1)}T.get(U+"Bubble")===!1&&(Q.cancelBubble=!0,Q.stopPropagation&&Q.stopPropagation())}})})}},m.c.foreach={Rc:function(p){return function(){var x=p(),T=m.a.bc(x);return!T||typeof T.length=="number"?{foreach:x,templateEngine:m.ba.Ma}:(m.a.f(x),{foreach:T.data,as:T.as,noChildContext:T.noChildContext,includeDestroyed:T.includeDestroyed,afterAdd:T.afterAdd,beforeRemove:T.beforeRemove,afterRender:T.afterRender,beforeMove:T.beforeMove,afterMove:T.afterMove,templateEngine:m.ba.Ma})}},init:function(p,x){return m.c.template.init(p,m.c.foreach.Rc(x))},update:function(p,x,T,w,M){return m.c.template.update(p,m.c.foreach.Rc(x),T,w,M)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(p,x,T){function w(U){p.__ko_hasfocusUpdating=!0;var Q=p.ownerDocument;if("activeElement"in Q){var z;try{z=Q.activeElement}catch{z=Q.body}U=z===p}Q=x(),m.m.eb(Q,T,"hasfocus",U,!0),p.__ko_hasfocusLastValue=U,p.__ko_hasfocusUpdating=!1}var M=w.bind(null,!0),O=w.bind(null,!1);m.a.B(p,"focus",M),m.a.B(p,"focusin",M),m.a.B(p,"blur",O),m.a.B(p,"focusout",O),p.__ko_hasfocusLastValue=!1},update:function(p,x){var T=!!m.a.f(x());p.__ko_hasfocusUpdating||p.__ko_hasfocusLastValue===T||(T?p.focus():p.blur(),!T&&p.__ko_hasfocusLastValue&&p.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[p,T?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.fc(p,x())}},function(){function p(x,T,w){m.c[x]={init:function(M,O,U,Q,z){var F,H,W={},Z,Y,$;if(T){Q=U.get("as");var X=U.get("noChildContext");$=!(Q&&X),W={as:Q,noChildContext:X,exportDependencies:$}}return Y=(Z=U.get("completeOn")=="render")||U.has(m.i.pa),m.o(function(){var he=m.a.f(O()),ge=!w!=!he,fe=!H,ye;($||ge!==F)&&(Y&&(z=m.i.Cb(M,z)),ge&&((!T||$)&&(W.dataDependency=m.S.o()),ye=T?z.createChildContext(typeof he=="function"?he:O,W):m.S.qa()?z.extend(null,W):z),fe&&m.S.qa()&&(H=m.a.Ca(m.h.childNodes(M),!0)),ge?(fe||m.h.va(M,m.a.Ca(H)),m.Oa(ye,M)):(m.h.Ea(M),Z||m.i.ma(M,m.i.H)),F=ge)},null,{l:M}),{controlsDescendantBindings:!0}}},m.m.Ra[x]=!1,m.h.ea[x]=!0}p("if"),p("ifnot",!1,!0),p("with",!0)}(),m.c.let={init:function(p,x,T,w,M){return x=M.extend(x),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var L={};m.c.options={init:function(p){if(m.a.R(p)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<p.length;)p.remove(0);return{controlsDescendantBindings:!0}},update:function(p,x,T){function w(){return m.a.jb(p.options,function(X){return X.selected})}function M(X,he,ge){var fe=typeof he;return fe=="function"?he(X):fe=="string"?X[he]:ge}function O(X,he){if(Y&&F)m.i.ma(p,m.i.H);else if(Z.length){var ge=0<=m.a.A(Z,m.w.M(he[0]));m.a.Zc(he[0],ge),Y&&!ge&&m.u.G(m.a.Fb,null,[p,"change"])}}var U=p.multiple,Q=p.length!=0&&U?p.scrollTop:null,z=m.a.f(x()),F=T.get("valueAllowUnset")&&T.has("value"),H=T.get("optionsIncludeDestroyed");x={};var W,Z=[];F||(U?Z=m.a.Mb(w(),m.w.M):0<=p.selectedIndex&&Z.push(m.w.M(p.options[p.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),W=m.a.jb(z,function(X){return H||X===e||X===null||!m.a.f(X._destroy)}),T.has("optionsCaption")&&(z=m.a.f(T.get("optionsCaption")),z!==null&&z!==e&&W.unshift(L)));var Y=!1;if(x.beforeRemove=function(X){p.removeChild(X)},z=O,T.has("optionsAfterRender")&&typeof T.get("optionsAfterRender")=="function"&&(z=function(X,he){O(0,he),m.u.G(T.get("optionsAfterRender"),null,[he[0],X!==L?X:e])}),m.a.ec(p,W,function(X,he,ge){return ge.length&&(Z=!F&&ge[0].selected?[m.w.M(ge[0])]:[],Y=!0),he=p.ownerDocument.createElement("option"),X===L?(m.a.Bb(he,T.get("optionsCaption")),m.w.cb(he,e)):(ge=M(X,T.get("optionsValue"),X),m.w.cb(he,m.a.f(ge)),X=M(X,T.get("optionsText"),ge),m.a.Bb(he,X)),[he]},x,z),!F){var $;U?$=Z.length&&w().length<Z.length:$=Z.length&&0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex])!==Z[0]:Z.length||0<=p.selectedIndex,$&&m.u.G(m.a.Fb,null,[p,"change"])}(F||m.S.Ya())&&m.i.ma(p,m.i.H),m.a.wd(p),Q&&20<Math.abs(Q-p.scrollTop)&&(p.scrollTop=Q)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(p,x,T){function w(){var U=x(),Q=[];m.a.D(p.getElementsByTagName("option"),function(z){z.selected&&Q.push(m.w.M(z))}),m.m.eb(U,T,"selectedOptions",Q)}function M(){var U=m.a.f(x()),Q=p.scrollTop;U&&typeof U.length=="number"&&m.a.D(p.getElementsByTagName("option"),function(z){var F=0<=m.a.A(U,m.w.M(z));z.selected!=F&&m.a.Zc(z,F)}),p.scrollTop=Q}if(m.a.R(p)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var O;m.i.subscribe(p,m.i.H,function(){O?w():(m.a.B(p,"change",w),O=m.o(M,null,{l:p}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(p,x){var T=m.a.f(x()||{});m.a.P(T,function(w,M){if(M=m.a.f(M),(M===null||M===e||M===!1)&&(M=""),o)o(p).css(w,M);else if(/^--/.test(w))p.style.setProperty(w,M);else{w=w.replace(/-(\w)/g,function(U,Q){return Q.toUpperCase()});var O=p.style[w];p.style[w]=M,M===O||p.style[w]!=O||isNaN(M)||(p.style[w]=M+"px")}})}},m.c.submit={init:function(p,x,T,w,M){if(typeof x()!="function")throw Error("The value for a submit binding must be a function");m.a.B(p,"submit",function(O){var U,Q=x();try{U=Q.call(M.$data,p)}finally{U!==!0&&(O.preventDefault?O.preventDefault():O.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.Bb(p,x())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var p=function(W){if(W)return parseFloat(W[1])},x=t.navigator.userAgent,T,w,M,O,U;(T=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(U=p(x.match(/Edge\/([^ ]+)$/)))||p(x.match(/Chrome\/([^ ]+)/))||(w=p(x.match(/Version\/([^ ]+) Safari/)))||(M=p(x.match(/Firefox\/([^ ]+)/)))||(O=m.a.W||p(x.match(/MSIE ([^ ]+)/)))||(O=p(x.match(/rv:([^ )]+)/)))}if(8<=O&&10>O)var Q=m.a.g.Z(),z=m.a.g.Z(),F=function(W){var Z=this.activeElement;(Z=Z&&m.a.g.get(Z,z))&&Z(W)},H=function(W,Z){var Y=W.ownerDocument;m.a.g.get(Y,Q)||(m.a.g.set(Y,Q,!0),m.a.B(Y,"selectionchange",F)),m.a.g.set(W,z,Z)};m.c.textInput={init:function(W,Z,Y){function $(ke,Ge){m.a.B(W,ke,Ge)}function X(){var ke=m.a.f(Z());(ke===null||ke===e)&&(ke=""),Ie!==e&&ke===Ie?m.a.setTimeout(X,4):W.value!==ke&&(Te=!0,W.value=ke,Te=!1,fe=W.value)}function he(){ye||(Ie=W.value,ye=m.a.setTimeout(ge,4))}function ge(){clearTimeout(ye),Ie=ye=e;var ke=W.value;fe!==ke&&(fe=ke,m.m.eb(Z(),Y,"textInput",ke))}var fe=W.value,ye,Ie,ve=m.a.W==9?he:ge,Te=!1;O&&$("keypress",ge),11>O&&$("propertychange",function(ke){Te||ke.propertyName!=="value"||ve(ke)}),O==8&&($("keyup",ge),$("keydown",ge)),H&&(H(W,ve),$("dragend",he)),(!O||9<=O)&&$("input",ve),5>w&&m.a.R(W)==="textarea"?($("keydown",he),$("paste",he),$("cut",he)):11>T?$("keydown",he):4>M?($("DOMAutoComplete",ge),$("dragdrop",ge),$("drop",ge)):U&&W.type==="number"&&$("keydown",he),$("change",ge),$("blur",ge),m.o(X,null,{l:W})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(W,Z,Y){Y("textInput",W)}}}(),m.c.uniqueName={init:function(p,x){if(x()){var T="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(p,T)}}},m.c.uniqueName.rd=0,m.c.using={init:function(p,x,T,w,M){var O;return T.has("as")&&(O={as:T.get("as"),noChildContext:T.get("noChildContext")}),x=M.createChildContext(x,O),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(p,x,T){var w=m.a.R(p),M=w=="input";if(!M||p.type!="checkbox"&&p.type!="radio"){var O=[],U=T.get("valueUpdate"),Q=!1,z=null;U&&(typeof U=="string"?O=[U]:O=m.a.wc(U),m.a.Pa(O,"change"));var F=function(){z=null,Q=!1;var Z=x(),Y=m.w.M(p);m.m.eb(Z,T,"value",Y)};!m.a.W||!M||p.type!="text"||p.autocomplete=="off"||p.form&&p.form.autocomplete=="off"||m.a.A(O,"propertychange")!=-1||(m.a.B(p,"propertychange",function(){Q=!0}),m.a.B(p,"focus",function(){Q=!1}),m.a.B(p,"blur",function(){Q&&F()})),m.a.D(O,function(Z){var Y=F;m.a.Ud(Z,"after")&&(Y=function(){z=m.w.M(p),m.a.setTimeout(F,0)},Z=Z.substring(5)),m.a.B(p,Z,Y)});var H;if(H=M&&p.type=="file"?function(){var Z=m.a.f(x());Z===null||Z===e||Z===""?p.value="":m.u.G(F)}:function(){var Z=m.a.f(x()),Y=m.w.M(p);z!==null&&Z===z?m.a.setTimeout(H,0):(Z!==Y||Y===e)&&(w==="select"?(Y=T.get("valueAllowUnset"),m.w.cb(p,Z,Y),Y||Z===m.w.M(p)||m.u.G(F)):m.w.cb(p,Z))},w==="select"){var W;m.i.subscribe(p,m.i.H,function(){W?T.get("valueAllowUnset")?H():F():(m.a.B(p,"change",F),W=m.o(H,null,{l:p}))},null,{notifyImmediately:!0})}else m.a.B(p,"change",F),m.o(H,null,{l:p})}else m.ib(p,{checkedValue:x})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(p,x){var T=m.a.f(x()),w=p.style.display!="none";T&&!w?p.style.display="":!T&&w&&(p.style.display="none")}},m.c.hidden={update:function(p,x){m.c.visible.update(p,function(){return!m.a.f(x())})}},function(p){m.c[p]={init:function(x,T,w,M,O){return m.c.event.init.call(this,x,function(){var U={};return U[p]=T(),U},w,M,O)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(p,x){if(typeof p=="string"){x=x||n;var T=x.getElementById(p);if(!T)throw Error("Cannot find template with ID "+p);return new m.C.F(T)}if(p.nodeType==1||p.nodeType==8)return new m.C.ia(p);throw Error("Unknown template type: "+p)},m.ca.prototype.renderTemplate=function(p,x,T,w){return p=this.makeTemplateSource(p,w),this.renderTemplateSource(p,x,T,w)},m.ca.prototype.isTemplateRewritten=function(p,x){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(p,x).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(p,x,T){p=this.makeTemplateSource(p,T),x=x(p.text()),p.text(x),p.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function p(w,M,O,U){w=m.m.ac(w);for(var Q=m.m.Ra,z=0;z<w.length;z++){var F=w[z].key;if(Object.prototype.hasOwnProperty.call(Q,F)){var H=Q[F];if(typeof H=="function"){if(F=H(w[z].value))throw Error(F)}else if(!H)throw Error("This template engine does not support the '"+F+"' binding within its templates")}}return O="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(w,{valueAccessors:!0})+" } })()},'"+O.toLowerCase()+"')",U.createJavaScriptEvaluatorBlock(O)+M}var x=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,T=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(w,M,O){M.isTemplateRewritten(w,O)||M.rewriteTemplate(w,function(U){return m.kc.Ld(U,M)},O)},Ld:function(w,M){return w.replace(x,function(O,U,Q,z,F){return p(F,U,Q,M)}).replace(T,function(O,U){return p(U,"<!-- ko -->","#comment",M)})},md:function(w,M){return m.aa.Xb(function(O,U){var Q=O.nextSibling;Q&&Q.nodeName.toLowerCase()===M&&m.ib(Q,w,U)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(T){if(this.F=T){var w=m.a.R(T);this.ab=w==="script"?1:w==="textarea"?2:w=="template"&&T.content&&T.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var T=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[T];var w=arguments[0];T==="innerHTML"?m.a.fc(this.F,w):this.F[T]=w};var p=m.a.g.Z()+"_";m.C.F.prototype.data=function(T){if(arguments.length===1)return m.a.g.get(this.F,p+T);m.a.g.set(this.F,p+T,arguments[1])};var x=m.a.g.Z();m.C.F.prototype.nodes=function(){var T=this.F;if(arguments.length==0){var w=m.a.g.get(T,x)||{},M=w.lb||(this.ab===3?T.content:this.ab===4?T:e);if(!M||w.jd){var O=this.text();O&&O!==w.bb&&(M=m.a.Md(O,T.ownerDocument),m.a.g.set(T,x,{lb:M,bb:O,jd:!0}))}return M}w=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(T,x,{lb:w})},m.C.ia=function(T){this.F=T},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var T=m.a.g.get(this.F,x)||{};return T.bb===e&&T.lb&&(T.bb=T.lb.innerHTML),T.bb}m.a.g.set(this.F,x,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function p(z,F,H){var W;for(F=m.h.nextSibling(F);z&&(W=z)!==F;)z=m.h.nextSibling(W),H(W,z)}function x(z,F){if(z.length){var H=z[0],W=z[z.length-1],Z=H.parentNode,Y=m.ga.instance,$=Y.preprocessNode;if($){if(p(H,W,function(X,he){var ge=X.previousSibling,fe=$.call(Y,X);fe&&(X===H&&(H=fe[0]||he),X===W&&(W=fe[fe.length-1]||ge))}),z.length=0,!H)return;H===W?z.push(H):(z.push(H,W),m.a.Ua(z,Z))}p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.vc(F,X)}),p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.aa.cd(X,[F])}),m.a.Ua(z,Z)}}function T(z){return z.nodeType?z:0<z.length?z[0]:null}function w(z,F,H,W,Z){Z=Z||{};var Y=(z&&T(z)||H||{}).ownerDocument,$=Z.templateEngine||O;if(m.kc.xd(H,$,Y),H=$.renderTemplate(H,W,Z,Y),typeof H.length!="number"||0<H.length&&typeof H[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(Y=!1,F){case"replaceChildren":m.h.va(z,H),Y=!0;break;case"replaceNode":m.a.Xc(z,H),Y=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+F)}return Y&&(x(H,W),Z.afterRender&&m.u.G(Z.afterRender,null,[H,W[Z.as||"$data"]]),F=="replaceChildren"&&m.i.ma(z,m.i.H)),H}function M(z,F,H){return m.O(z)?z():typeof z=="function"?z(F,H):z}var O;m.gc=function(z){if(z!=e&&!(z instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");O=z},m.dc=function(z,F,H,W,Z){if(H=H||{},(H.templateEngine||O)==e)throw Error("Set a template engine before calling renderTemplate");if(Z=Z||"replaceChildren",W){var Y=T(W);return m.$(function(){var X=F&&F instanceof m.fa?F:new m.fa(F,null,null,null,{exportDependencies:!0}),$=M(z,X.$data,X),X=w(W,Z,$,X,H);Z=="replaceNode"&&(W=X,Y=T(W))},null,{Sa:function(){return!Y||!m.a.Sb(Y)},l:Y&&Z=="replaceNode"?Y.parentNode:Y})}return m.aa.Xb(function($){m.dc(z,F,H,$,"replaceNode")})},m.Qd=function(z,F,H,W,Z){function Y(Ie,ve){m.u.G(m.a.ec,null,[W,Ie,X,H,$,ve]),m.i.ma(W,m.i.H)}function $(Ie,ve){x(ve,he),H.afterRender&&H.afterRender(ve,Ie),he=null}function X(Ie,ve){he=Z.createChildContext(Ie,{as:ge,noChildContext:H.noChildContext,extend:function(ke){ke.$index=ve,ge&&(ke[ge+"Index"]=ve)}});var Te=M(z,Ie,he);return w(W,"ignoreTargetNode",Te,he,H)}var he,ge=H.as,fe=H.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!H.includeDestroyed;if(fe||H.beforeRemove||!m.Pc(F))return m.$(function(){var Ie=m.a.f(F)||[];typeof Ie.length>"u"&&(Ie=[Ie]),fe&&(Ie=m.a.jb(Ie,function(ve){return ve===e||ve===null||!m.a.f(ve._destroy)})),Y(Ie)},null,{l:W});Y(F.v());var ye=F.subscribe(function(Ie){Y(F(),Ie)},null,"arrayChange");return ye.l(W),ye};var U=m.a.g.Z(),Q=m.a.g.Z();m.c.template={init:function(z,F){var H=m.a.f(F());if(typeof H=="string"||"name"in H)m.h.Ea(z);else if("nodes"in H){if(H=H.nodes||[],m.O(H))throw Error('The "nodes" option must be a plain, non-observable array.');var W=H[0]&&H[0].parentNode;W&&m.a.g.get(W,Q)||(W=m.a.Yb(H),m.a.g.set(W,Q,!0)),new m.C.ia(z).nodes(W)}else if(H=m.h.childNodes(z),0<H.length)W=m.a.Yb(H),new m.C.ia(z).nodes(W);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,F,H,W,Z){var Y=F();F=m.a.f(Y),H=!0,W=null,typeof F=="string"?F={}:(Y="name"in F?F.name:z,"if"in F&&(H=m.a.f(F.if)),H&&"ifnot"in F&&(H=!m.a.f(F.ifnot)),H&&!Y&&(H=!1)),"foreach"in F?W=m.Qd(Y,H&&F.foreach||[],F,z,Z):H?(H=Z,"data"in F&&(H=Z.createChildContext(F.data,{as:F.as,noChildContext:F.noChildContext,exportDependencies:!0})),W=m.dc(Y,H,F,z)):m.h.Ea(z),Z=W,(F=m.a.g.get(z,U))&&typeof F.s=="function"&&F.s(),m.a.g.set(z,U,!Z||Z.ja&&!Z.ja()?e:Z)}},m.m.Ra.template=function(z){return z=m.m.ac(z),z.length==1&&z[0].unknown||m.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(p,x,T){if(p.length&&x.length){var w,M,O,U,Q;for(w=M=0;(!T||w<T)&&(U=p[M]);++M){for(O=0;Q=x[O];++O)if(U.value===Q.value){U.moved=Q.index,Q.moved=U.index,x.splice(O,1),w=O=0;break}w+=O}}},m.a.Pb=function(){function p(x,T,w,M,O){var U=Math.min,Q=Math.max,z=[],F,H=x.length,W,Z=T.length,Y=Z-H||1,$=H+Z+1,X,he,ge;for(F=0;F<=H;F++)for(he=X,z.push(X=[]),ge=U(Z,F+Y),W=Q(0,F-1);W<=ge;W++)X[W]=W?F?x[F-1]===T[W-1]?he[W-1]:U(he[W]||$,X[W-1]||$)+1:W+1:F+1;for(U=[],Q=[],Y=[],F=H,W=Z;F||W;)Z=z[F][W]-1,W&&Z===z[F][W-1]?Q.push(U[U.length]={status:w,value:T[--W],index:W}):F&&Z===z[F-1][W]?Y.push(U[U.length]={status:M,value:x[--F],index:F}):(--W,--F,O.sparse||U.push({status:"retained",value:T[W]}));return m.a.Kc(Y,Q,!O.dontLimitMoves&&10*H),U.reverse()}return function(x,T,w){return w=typeof w=="boolean"?{dontLimitMoves:w}:w||{},x=x||[],T=T||[],x.length<T.length?p(x,T,"added","deleted",w):p(T,x,"deleted","added",w)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function p(w,M,O,U,Q){var z=[],F=m.$(function(){var H=M(O,Q,m.a.Ua(z,w))||[];0<z.length&&(m.a.Xc(z,H),U&&m.u.G(U,null,[O,H,Q])),z.length=0,m.a.Nb(z,H)},null,{l:w,Sa:function(){return!m.a.kd(z)}});return{Y:z,$:F.ja()?F:e}}var x=m.a.g.Z(),T=m.a.g.Z();m.a.ec=function(w,M,O,U,Q,z){function F(vt){Te={Aa:vt,pb:m.ta(he++)},$.push(Te),Y||ve.push(Te)}function H(vt){Te=Z[vt],he!==Te.pb.v()&&Ie.push(Te),Te.pb(he++),m.a.Ua(Te.Y,w),$.push(Te)}function W(vt,bi){if(vt)for(var di=0,Ot=bi.length;di<Ot;di++)m.a.D(bi[di].Y,function(Tt){vt(Tt,di,bi[di].Aa)})}M=M||[],typeof M.length>"u"&&(M=[M]),U=U||{};var Z=m.a.g.get(w,x),Y=!Z,$=[],X=0,he=0,ge=[],fe=[],ye=[],Ie=[],ve=[],Te,ke=0;if(Y)m.a.D(M,F);else{if(!z||Z&&Z._countWaitingForRemove){var Ge=m.a.Mb(Z,function(vt){return vt.Aa});z=m.a.Pb(Ge,M,{dontLimitMoves:U.dontLimitMoves,sparse:!0})}for(var Ge=0,qe,tt,$t;qe=z[Ge];Ge++)switch(tt=qe.moved,$t=qe.index,qe.status){case"deleted":for(;X<$t;)H(X++);tt===e&&(Te=Z[X],Te.$&&(Te.$.s(),Te.$=e),m.a.Ua(Te.Y,w).length&&(U.beforeRemove&&($.push(Te),ke++,Te.Aa===T?Te=null:ye.push(Te)),Te&&ge.push.apply(ge,Te.Y))),X++;break;case"added":for(;he<$t;)H(X++);tt!==e?(fe.push($.length),H(tt)):F(qe.value)}for(;he<M.length;)H(X++);$._countWaitingForRemove=ke}m.a.g.set(w,x,$),W(U.beforeMove,Ie),m.a.D(ge,U.beforeRemove?m.oa:m.removeNode);var it,tn,Wt;try{Wt=w.ownerDocument.activeElement}catch{}if(fe.length)for(;(Ge=fe.shift())!=e;){for(Te=$[Ge],it=e;Ge;)if((tn=$[--Ge].Y)&&tn.length){it=tn[tn.length-1];break}for(M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it)}for(Ge=0;Te=$[Ge];Ge++){for(Te.Y||m.a.extend(Te,p(w,O,Te.Aa,Q,Te.pb)),M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it);!Te.Ed&&Q&&(Q(Te.Aa,Te.Y,Te.pb),Te.Ed=!0,it=Te.Y[Te.Y.length-1])}for(Wt&&w.ownerDocument.activeElement!=Wt&&Wt.focus(),W(U.beforeRemove,ye),Ge=0;Ge<ye.length;++Ge)ye[Ge].Aa=T;W(U.afterMove,Ie),W(U.afterAdd,ve)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(p,x,T,w){return(x=!(9>m.a.W)&&p.nodes?p.nodes():null)?m.a.la(x.cloneNode(!0).childNodes):(p=p.text(),m.a.ua(p,w))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var x=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(T,w,M,O){if(O=O||n,M=M||{},2>x)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var U=T.data("precompiled");return U||(U=T.text()||"",U=o.template(null,"{{ko_with $item.koBindingContext}}"+U+"{{/ko_with}}"),T.data("precompiled",U)),T=[w.$data],w=o.extend({koBindingContext:w},M.templateOptions),w=o.tmpl(U,T,w),w.appendTo(O.createElement("div")),o.fragments={},w},this.createJavaScriptEvaluatorBlock=function(T){return"{{ko_code ((function() { return "+T+" })()) }}"},this.addTemplate=function(T,w){n.write("<script type='text/html' id='"+T+"'>"+w+"<\/script>")},0<x&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var p=new m.$a;0<p.Hd&&m.gc(p),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var wBt=ko;typeof window<"u"?(ko=window.ko,typeof lR<"u"?window.ko=lR:delete window.ko):(ko=global.ko,typeof lR<"u"?global.ko=lR:delete global.ko);var PS=wBt;/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var GZ="__knockoutObservables",zZ="__knockoutSubscribable";function jTe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=YTe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===GZ||o===zZ)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&DBt(n,a)}}),e}function YTe(e,t){var n=e[GZ];return!n&&t&&(n={},Object.defineProperty(e,GZ,{value:n})),n}function BBt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),jTe.call(i,e,[t]),e}function DBt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=vBt(e,t,i))})}function vBt(e,t,n){var i=PBt(e,n);return i.subscribe(t)}function PBt(e,t){var n=t[zZ];if(!n){n=new e.subscribable,Object.defineProperty(t,zZ,{value:n});var i={};RBt(t,n,i),MBt(e,t,n,i)}return n}function RBt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function MBt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function qTe(e,t){if(!e)return null;var n=YTe(e,!1);return n&&n[t]||null}function NBt(e,t){var n=qTe(e,t);n&&n.valueHasMutated()}function LBt(e){e.track=jTe,e.getObservable=qTe,e.valueHasMutated=NBt,e.defineProperty=BBt}var mH={attachToKo:LBt};var KTe="http://www.w3.org/2000/svg",XTe="cesium-svgPath-svg",OBt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(KTe,"svg:svg");i.setAttribute("class",XTe);let o=document.createElementNS(KTe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${XTe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},AH=OBt;mH.attachToKo(PS);AH.register(PS);var xe=PS;function uR(e){l(e)||(e=new Vm),this._clock=e,this._eventHelper=new Lr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=xe.observable(K.now()),this.systemTime.equalityComparer=K.equals,this.startTime=xe.observable(e.startTime),this.startTime.equalityComparer=K.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=xe.observable(e.stopTime),this.stopTime.equalityComparer=K.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=xe.observable(e.currentTime),this.currentTime.equalityComparer=K.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=xe.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=xe.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=xe.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=xe.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=xe.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),xe.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(uR.prototype,{clock:{get:function(){return this._clock}}});uR.prototype.synchronize=function(){let e=this._clock;this.systemTime=K.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};uR.prototype.isDestroyed=function(){return!1};uR.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var pH=uR;function FBt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,me.throwInstantiationError()}var JTe=FBt;var RS={};RS.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};RS.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};RS.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};RS.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};RS.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var ff=RS;function ZTe(e,t){this._command=e,t=t??V.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",xe.track(this,["toggled","tooltip"])}Object.defineProperties(ZTe.prototype,{command:{get:function(){return this._command}}});var L0=ZTe;function QBt(e,t){t=t??!0;let n=new _e,i=new _e;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,xe.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Mn=QBt;function kBt(e,t,n,i,o){return n.call(i,e[t]),xe.getObservable(e,t).subscribe(n,i,o)}var fc=kBt;var O0="http://www.w3.org/2000/svg",tSe="http://www.w3.org/1999/xlink",gH,fR=G.fromCssColorString("rgba(247,250,255,0.384)"),_H=G.fromCssColorString("rgba(143,191,255,0.216)"),VZ=G.fromCssColorString("rgba(153,197,255,0.098)"),yH=G.fromCssColorString("rgba(255,255,255,0.086)"),UBt=G.fromCssColorString("rgba(255,255,255,0.267)"),GBt=G.fromCssColorString("rgba(255,255,255,0)"),$Te=G.fromCssColorString("rgba(66,67,68,0.3)"),eSe=G.fromCssColorString("rgba(0,0,0,0.5)");function tC(e){return G.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var dR={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function jh(e){let t=document.createElementNS(O0,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(jh(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(tSe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function HZ(e,t,n){let i=document.createElementNS(O0,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(O0,"tspan");return o.textContent=n,i.appendChild(o),i}function zBt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var CH=new G;function gs(e,t){let n=t.alpha,i=1-n;return CH.red=e.red*i+t.red*n,CH.green=e.green*i+t.green*n,CH.blue=e.blue*i+t.blue*n,CH.toCssColorString()}function WZ(e,t,n){let i=dR[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(o)}function VBt(e,t,n){let i=dR[n],o=dR.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(r)}function HBt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&gH!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,A=u-r-a.top,g=Math.atan2(A,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(gH=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===gH&&(gH=void 0),n.shuttleRingDragging=!1}function cg(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[fc(t,"toggled",this.setToggled,this),fc(t,"tooltip",this.setTooltip,this),fc(t.command,"canExecute",this.setEnabled,this)]}cg.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};cg.prototype.isDestroyed=function(){return!1};cg.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};cg.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};cg.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function MS(e,t){e=Gn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(O0,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",tSe);let s=document.createElementNS(O0,"g");this._topG=s,this._realtimeSVG=new cg(VBt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new cg(WZ(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new cg(WZ(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new cg(WZ(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(O0,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=jh({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=dR.animation_pathSwooshFX,f=dR.animation_pathPointer,h=jh({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=jh({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let A=jh({tagName:"g",transform:"translate(100,100)"});this._knobOuter=jh({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=jh({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=HZ(0,-24,""),this._knobTime=HZ(0,-7,""),this._knobStatus=HZ(0,-41,"");let _=jh({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),y=document.createElementNS(O0,"g");y.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(y),s.appendChild(A),s.appendChild(a),y.appendChild(c),y.appendChild(h),y.appendChild(this._shuttleRingPointer),A.appendChild(this._knobOuter),A.appendChild(m),A.appendChild(this._knobDate),A.appendChild(this._knobTime),A.appendChild(this._knobStatus),A.appendChild(_),r.appendChild(s),e.appendChild(r);let C=this;function E(v){HBt(C,v)}this._mouseCallback=E,c.addEventListener("mousedown",E,!0),c.addEventListener("touchstart",E,!0),h.addEventListener("mousedown",E,!0),h.addEventListener("touchstart",E,!0),n.addEventListener("mousemove",E,!0),n.addEventListener("touchmove",E,!0),n.addEventListener("mouseup",E,!0),n.addEventListener("touchend",E,!0),n.addEventListener("touchcancel",E,!0),this._shuttleRingPointer.addEventListener("mousedown",E,!0),this._shuttleRingPointer.addEventListener("touchstart",E,!0),this._knobOuter.addEventListener("mousedown",E,!0),this._knobOuter.addEventListener("touchstart",E,!0);let I=this._knobTime.childNodes[0],b=this._knobDate.childNodes[0],S=this._knobStatus.childNodes[0],B;this._subscriptions=[fc(t.pauseViewModel,"toggled",function(v){B!==v&&(B=v,B?C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),fc(t,"shuttleRingAngle",function(v){zBt(C._shuttleRingPointer,C._knobOuter,v)}),fc(t,"dateLabel",function(v){b.textContent!==v&&(b.textContent=v)}),fc(t,"timeLabel",function(v){I.textContent!==v&&(I.textContent=v)}),fc(t,"multiplierLabel",function(v){S.textContent!==v&&(S.textContent=v)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(MS.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MS.prototype.isDestroyed=function(){return!1};MS.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};MS.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};MS.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=tC(this._themeNormal),n=tC(this._themeHover),i=tC(this._themeSelect),o=tC(this._themeDisabled),r=tC(this._themeKnob),s=tC(this._themePointer),a=tC(this._themeSwoosh),c=tC(this._themeSwooshHover),u=jh({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(t,fR)},{tagName:"stop",offset:"12%","stop-color":gs(t,_H)},{tagName:"stop",offset:"46%","stop-color":gs(t,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(t,yH)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(n,fR)},{tagName:"stop",offset:"12%","stop-color":gs(n,_H)},{tagName:"stop",offset:"46%","stop-color":gs(n,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(n,yH)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(i,fR)},{tagName:"stop",offset:"12%","stop-color":gs(i,_H)},{tagName:"stop",offset:"46%","stop-color":gs(i,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(i,yH)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(o,UBt)},{tagName:"stop",offset:"75%","stop-color":gs(o,GBt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":gs(s,eSe)},{tagName:"stop",offset:"100%","stop-color":gs(s,eSe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,fR)},{tagName:"stop",offset:"60%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"85%","stop-color":gs(r,_H)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"60%","stop-color":gs(r,fR)},{tagName:"stop",offset:"85%","stop-color":gs(r,yH)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var EH=MS;var WBt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nC=15,NS=105;function nSe(e,t){return e-t}function jZ(e,t){let n=qo(t,e,nSe);return n<0?~n:n}function jBt(e,t){if(Math.abs(e)<=nC)return e/nC;let n=nC,i=NS,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function YBt(e,t,n){if(n.clockStep===vo.SYSTEM_CLOCK)return nC;if(Math.abs(e)<=1)return e*nC;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=nC,r=NS,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Sd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Sd.defaultDateFormatter,this._timeFormatter=Sd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,xe.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Sd.defaultTicks),this.timeLabel=void 0,xe.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,xe.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,xe.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===vo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,xe.defineProperty(this,"shuttleRingAngle",{get:function(){return YBt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,NS),-NS);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===NS){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=jBt(s,a);if(t.snapToTicks)u=a[jZ(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,A=Math.pow(10,h);u=Math.round(u/A)*A|0}else f>nC?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,xe.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===As.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===As.LOOP_STOP)h=K.greaterThan(u,f)||u.equals(f)&&c>0;else{let A=s.stopTime;h=K.greaterThan(u,f)&&K.lessThan(u,A)||u.equals(f)&&c>0||u.equals(A)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,xe.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===As.UNBOUNDED)return!0;let c=s.systemTime;return K.greaterThanOrEquals(c,s.startTime)&&K.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,xe.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Mn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new L0(n,{toggled:xe.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new L0(i,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new L0(o,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==vo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Mn(function(){t._clockViewModel.clockStep=vo.SYSTEM_CLOCK},xe.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new L0(r,{toggled:xe.computed(function(){return e.clockStep===vo.SYSTEM_CLOCK}),tooltip:xe.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)+1;u<a.length&&(s.multiplier=a[u])})}Sd.defaultDateFormatter=function(e,t){let n=K.toGregorianDate(e);return`${WBt[n.month-1]} ${n.day} ${n.year}`};Sd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Sd.defaultTimeFormatter=function(e,t){let n=K.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Sd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Sd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(nSe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);si(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Sd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Sd._maxShuttleRingAngle=NS;Sd._realtimeShuttleRingAngle=nC;var IH=Sd;function iSe(e){e=e??V.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??V.EMPTY_ARRAY,i=e.terrainProviderViewModels??V.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,xe.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=xe.getObservable(this,"imageryProviderViewModels"),r=xe.pureComputed(function(){let h=o(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._imageryProviders=r;let s=xe.getObservable(this,"terrainProviderViewModels"),a=xe.pureComputed(function(){let h=s(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._terrainProviders=a,this.buttonTooltip=void 0,xe.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,A=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(A)?A.name:void 0;return l(g)&&l(m)?`${g} +${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,xe.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=xe.observable();this._currentImageryLayers=[],xe.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let A,g=this._currentImageryLayers,m=g.length,_=this._globe.imageryLayers,y=!1;for(A=0;A<m;A++){let C=_.length;for(let E=0;E<C;E++){let I=_.get(E);if(I===g[A]){_.remove(I),y=!0;break}}}if(l(h)){let C=h.creationCommand();if(Array.isArray(C)){let E=C.length;for(this._currentImageryLayers=[],A=E-1;A>=0;A--){let I=ds.fromProviderAsync(C[A]);_.add(I,0),this._currentImageryLayers.push(I)}}else{this._currentImageryLayers=[];let E=ds.fromProviderAsync(C);if(E.name=h.name,y)_.add(E,0);else{let I=_.get(0);l(I)&&_.remove(I),_.add(E,0)}this._currentImageryLayers.push(E)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=xe.observable();xe.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let A;if(l(h)&&(A=h.creationCommand()),l(A)&&!l(A.then))this._globe.depthTestAgainstTerrain=!(A instanceof jp),this._globe.terrainProvider=A;else if(l(A)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),y=new uH(A).readyEvent.addEventListener(C=>{g||(this._globe.depthTestAgainstTerrain=!(C instanceof jp),this._globe.terrainProvider=C,y())})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Mn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(iSe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var xH=iSe;function bH(e,t){e=Gn(e);let n=new xH(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let A=document.createElement("img");A.className="cesium-baseLayerPicker-itemIcon",A.setAttribute("data-bind","attr: { src: iconUrl }"),A.setAttribute("draggable","false"),h.appendChild(A);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let _=document.createElement("div");_.className="cesium-baseLayerPicker-section",_.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(_);let y=document.createElement("div");y.className="cesium-baseLayerPicker-category",_.appendChild(y);let C=document.createElement("div");C.className="cesium-baseLayerPicker-categoryTitle",C.setAttribute("data-bind","text: name"),y.appendChild(C);let E=document.createElement("div");E.className="cesium-baseLayerPicker-choices",E.setAttribute("data-bind","foreach: providers"),y.appendChild(E);let I=document.createElement("div");I.className="cesium-baseLayerPicker-item",I.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),E.appendChild(I);let b=document.createElement("img");b.className="cesium-baseLayerPicker-itemIcon",b.setAttribute("data-bind","attr: { src: iconUrl }"),b.setAttribute("draggable","false"),I.appendChild(b);let S=document.createElement("div");S.className="cesium-baseLayerPicker-itemLabel",S.setAttribute("data-bind","text: name"),I.appendChild(S),xe.applyBindings(n,i),xe.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(B){i.contains(B.target)||r.contains(B.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(bH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});bH.prototype.isDestroyed=function(){return!1};bH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._element),xe.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var TH=bH;function oSe(e){let t=e.creationFunction;l(t.canExecute)||(t=Mn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",xe.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(oSe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Fs=oSe;function qBt(){let e=[],t=devicePixelRatio>=2;return e.push(new Fs({name:"Bing Maps Aerial",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL})}})),e.push(new Fs({name:"Bing Maps Aerial with Labels",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL_WITH_LABELS})}})),e.push(new Fs({name:"Bing Maps Roads",iconUrl:fn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.ROAD})}})),e.push(new Fs({name:"ArcGIS World Imagery",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"ArcGIS World Hillshade",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Esri World Ocean",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.OCEANS,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Open\xADStreet\xADMap",iconUrl:fn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new eC({url:"https://tile.openstreetmap.org/"})}})),e.push(new Fs({name:"Stadia x Stamen Watercolor",iconUrl:fn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia x Stamen Toner",iconUrl:fn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth Dark",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Sentinel-2",iconUrl:fn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3954)}})),e.push(new Fs({name:"Blue Marble",iconUrl:fn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3845)}})),e.push(new Fs({name:"Earth at night",iconUrl:fn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3812)}})),e.push(new Fs({name:"Natural Earth\xA0II",iconUrl:fn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return iE.fromUrl(fn("Assets/Textures/NaturalEarthII"))}})),e}var SH=qBt;function KBt(){let e=[];return e.push(new Fs({name:"WGS84 Ellipsoid",iconUrl:fn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new jp({ellipsoid:te.WGS84})}})),e.push(new Fs({name:"Cesium World Terrain",iconUrl:fn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return IS({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var wH=KBt;function XBt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof qs&&(e.tileset=n.primitive),e.pickActive=!1}}function sSe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof qs&&(e.tileset=i.primitive)},vn.MOUSE_MOVE):(e._eventHandler.removeInputAction(vn.MOUSE_MOVE),e.picking=e.picking)}var JBt={maximumFractionDigits:3};function hR(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,JBt):Math.round(t).toLocaleString()}function mR(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[Zo.PICK]:e._statisticsPerPass[Zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${hR(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${hR(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${hR(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function aSe(){let e=Qi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${hR(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${hR(e.texturesByteLength)}</li> + </ul> + `}var ZBt=[{text:"Highlight",value:Su.HIGHLIGHT},{text:"Replace",value:Su.REPLACE},{text:"Mix",value:Su.MIX}],rSe=new G(1,1,0,.4),$Bt=new G,BH=new G;function Ya(e,t){let n=this,i=e.canvas;this._eventHandler=new Cd(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new Ny({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,xe.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=xe.observable({}),this.properties=[],xe.defineProperty(this,"properties",function(){let F=[],H=n._properties();for(let W in H)H.hasOwnProperty(W)&&F.push(W);return F});let o=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(F){o(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=F)}}),this.dynamicScreenSpaceError=!1;let r=xe.observable();xe.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(F){r(F),l(n._tileset)&&(n._tileset.colorBlendMode=F,n._scene.requestRender())}}),this.colorBlendMode=Su.HIGHLIGHT;let s=xe.observable(),a=xe.observable();xe.defineProperty(this,"picking",{get:function(){return a()},set:function(F){a(F),F?n._eventHandler.setInputAction(function(H){let W=e.pick(H.endPosition);if(W instanceof Sa?(n.feature=W,n.tile=W.content.tile):l(W)&&l(W.content)?(n.feature=void 0,n.tile=W.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(W)&&l(W.content)){let Z;e.pickPositionSupported&&(Z=e.pickPosition(H.endPosition),l(Z)&&(n._tileset.debugPickPosition=Z)),n._tileset.debugPickedTile=W.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},vn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(vn.MOUSE_MOVE))}}),this.picking=!0;let c=xe.observable();xe.defineProperty(this,"colorize",{get:function(){return c()},set:function(F){c(F),l(n._tileset)&&(n._tileset.debugColorizeTiles=F,n._scene.requestRender())}}),this.colorize=!1;let u=xe.observable();xe.defineProperty(this,"wireframe",{get:function(){return u()},set:function(F){u(F),l(n._tileset)&&(n._tileset.debugWireframe=F,n._scene.requestRender())}}),this.wireframe=!1;let f=xe.observable();xe.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(F){f(F),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=F,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=xe.observable();xe.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(F){h(F),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=F,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let A=xe.observable();xe.defineProperty(this,"showRequestVolumes",{get:function(){return A()},set:function(F){A(F),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=F,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=xe.observable();xe.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(F){g(F),l(n._tileset)&&(n._tileset.debugFreezeFrame=F,n._scene.debugShowFrustumPlanes=F,n._scene.requestRender())}}),this.freezeFrame=!1,xe.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(F){s(F),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=F,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=xe.observable();xe.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(F){m(F),l(n._tileset)&&(n._tileset.debugShowGeometricError=F,n._scene.requestRender())}}),this.showGeometricError=!1;let _=xe.observable();xe.defineProperty(this,"showRenderingStatistics",{get:function(){return _()},set:function(F){_(F),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=F,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let y=xe.observable();xe.defineProperty(this,"showMemoryUsage",{get:function(){return y()},set:function(F){y(F),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=F,n._scene.requestRender())}}),this.showMemoryUsage=!1;let C=xe.observable();xe.defineProperty(this,"showUrl",{get:function(){return C()},set:function(F){C(F),l(n._tileset)&&(n._tileset.debugShowUrl=F,n._scene.requestRender())}}),this.showUrl=!1;let E=xe.observable();xe.defineProperty(this,"maximumScreenSpaceError",{get:function(){return E()},set:function(F){F=Number(F),isNaN(F)||(E(F),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=F))}}),this.maximumScreenSpaceError=16;let I=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return I()},set:function(F){F=Number(F),isNaN(F)||(I(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=F))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,xe.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(I(),1/6)},set:function(F){let H=Math.pow(F,6);I(H),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H)}});let b=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return b()},set:function(F){F=Number(F),isNaN(F)||(b(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=F))}}),this.dynamicScreenSpaceErrorFactor=24;let S=XBt(this),B=xe.observable();xe.defineProperty(this,"pickActive",{get:function(){return B()},set:function(F){B(F),F?n._eventHandler.setInputAction(S,vn.LEFT_CLICK):n._eventHandler.removeInputAction(vn.LEFT_CLICK)}});let v=xe.observable();xe.defineProperty(this,"pointCloudShading",{get:function(){return v()},set:function(F){v(F),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=F)}}),this.pointCloudShading=!1;let P=xe.observable();xe.defineProperty(this,"geometricErrorScale",{get:function(){return P()},set:function(F){F=Number(F),isNaN(F)||(P(F),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=F))}}),this.geometricErrorScale=1;let N=xe.observable();xe.defineProperty(this,"maximumAttenuation",{get:function(){return N()},set:function(F){F=Number(F),isNaN(F)||(N(F),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=F===0?void 0:F))}}),this.maximumAttenuation=0;let L=xe.observable();xe.defineProperty(this,"baseResolution",{get:function(){return L()},set:function(F){F=Number(F),isNaN(F)||(L(F),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=F===0?void 0:F))}}),this.baseResolution=0;let p=xe.observable();xe.defineProperty(this,"eyeDomeLighting",{get:function(){return p()},set:function(F){p(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=F)}}),this.eyeDomeLighting=!1;let x=xe.observable();xe.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return x()},set:function(F){F=Number(F),isNaN(F)||(x(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=F))}}),this.eyeDomeLightingStrength=1;let T=xe.observable();xe.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return T()},set:function(F){F=Number(F),isNaN(F)||(T(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=F))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let w=xe.observable();xe.defineProperty(this,"skipLevelOfDetail",{get:function(){return w()},set:function(F){w(F),l(n._tileset)&&(n._tileset.skipLevelOfDetail=F)}}),this.skipLevelOfDetail=!0;let M=xe.observable();xe.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return M()},set:function(F){F=Number(F),isNaN(F)||(M(F),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=F))}}),this.skipScreenSpaceErrorFactor=16;let O=xe.observable();xe.defineProperty(this,"baseScreenSpaceError",{get:function(){return O()},set:function(F){F=Number(F),isNaN(F)||(O(F),l(n._tileset)&&(n._tileset.baseScreenSpaceError=F))}}),this.baseScreenSpaceError=1024;let U=xe.observable();xe.defineProperty(this,"skipLevels",{get:function(){return U()},set:function(F){F=Number(F),isNaN(F)||(U(F),l(n._tileset)&&(n._tileset.skipLevels=F))}}),this.skipLevels=1;let Q=xe.observable();xe.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return Q()},set:function(F){Q(F),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=F)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=xe.observable();xe.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(F){z(F),l(n._tileset)&&(n._tileset.loadSiblings=F)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||sSe(this,!0)}Object.defineProperties(Ya.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return ZBt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe(),sSe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,$Bt):G.WHITE:t.color=BH,this._scene.requestRender()),l(e)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!YZ(t.content)&&(t.color=BH,this._scene.requestRender()),l(e)&&!YZ(e.content)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._tile=e}}});function YZ(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!YZ(t[i]))return!1;return!0}return!1}Ya.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};Ya.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Ya.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};Ya.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Ya.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};Ya.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};Ya.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};Ya.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};Ya.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};Ya.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};Ya.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new TS(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};Ya.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};Ya.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe())};Ya.prototype.isDestroyed=function(){return!1};Ya.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};Ya.getStatistics=mR;var DH=Ya;function vH(e,t){e=Gn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new DH(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=ff.createRangeInput,f=ff.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),A=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),_=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),y=a(s,"Style","styleVisible","toggleStyle"),C=a(s,"Optimization","optimizationVisible","toggleOptimization"),E=document.createElement("div");E.className="field-group";let I=document.createElement("label");I.className="field-label",I.appendChild(document.createTextNode("Properties: "));let b=document.createElement("div");b.setAttribute("data-bind","text: properties"),E.appendChild(I),E.appendChild(b),h.appendChild(E),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),A.appendChild(c("Colorize","colorize"));let S=A.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),B=document.createElement("p");B.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),B.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),B.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",S.appendChild(B),A.appendChild(c("Bounding Volumes","showBoundingVolumes")),A.appendChild(c("Content Volumes","showContentBoundingVolumes")),A.appendChild(c("Request Volumes","showRequestVolumes")),A.appendChild(c("Point Cloud Shading","pointCloudShading"));let v=document.createElement("div");v.setAttribute("data-bind","visible: pointCloudShading"),v.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),v.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),v.appendChild(u("Base Resolution","baseResolution",0,1,.01)),v.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),A.appendChild(v);let P=document.createElement("div");P.setAttribute("data-bind","visible: eyeDomeLighting"),P.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),P.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),v.appendChild(P),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let N=document.createElement("div");N.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(N);let L=document.createElement("div");L.setAttribute("data-bind","visible: dynamicScreenSpaceError"),L.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),L.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(L),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let p=document.createElement("div");p.className="cesium-3dTilesInspector-statistics",p.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(p),m.appendChild(c("Pick Statistics","showPickStatistics"));let x=document.createElement("div");x.className="cesium-3dTilesInspector-statistics",x.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(x),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(T);let w=document.createElement("div");y.appendChild(w),w.appendChild(document.createTextNode("Color Blend Mode: "));let M=document.createElement("select");M.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),w.appendChild(M);let O=document.createElement("textarea");O.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),w.className="cesium-cesiumInspector-styleEditor",w.appendChild(O);let U=f("Compile (Ctrl+Enter)","compileStyle");w.appendChild(U);let Q=document.createElement("div");Q.className="cesium-cesiumInspector-error",Q.setAttribute("data-bind","text: editorError"),w.appendChild(Q),_.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),_.appendChild(c("Geometric Error","showGeometricError")),_.appendChild(c("Rendering Statistics","showRenderingStatistics")),_.appendChild(c("Memory Usage (MB)","showMemoryUsage")),_.appendChild(c("Url","showUrl")),C.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),C.appendChild(z);let F=document.createElement("div");F.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),C.appendChild(F);let H=document.createElement("div");H.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),C.appendChild(H),C.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),C.appendChild(c("Load siblings of visible tiles","loadSiblings")),xe.applyBindings(o,n)}Object.defineProperties(vH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});vH.prototype.isDestroyed=function(){return!1};vH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var PH=vH;function eDt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function qZ(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var tDt=new In,nDt=new d;function AR(e,t){let n=this,i=e.canvas,o=new Cd(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",xe.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Mn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Mn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Mn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=xe.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=xe.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=xe.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new Ny({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Mn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=xe.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Mn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new Y4({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=xe.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Mn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=xe.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=xe.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=xe.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Mn(function(){let u=n.depthFrustum+1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Mn(function(){let u=n.depthFrustum-1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=xe.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Mn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new fH({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=xe.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=xe.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Mn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Mn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=xe.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Mn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=xe.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,A=n._scene.camera.getPickRay(u.position,tDt),g=r.pick(A,n._scene,nDt);if(l(g)){let m=h.cartesianToCartographic(g),_=r._surface.tileProvider._tilesToRenderByTextureCount;for(let y=0;!f&&y<_.length;++y){let C=_[y];if(l(C))for(let E=0;!f&&E<C.length;++E){let I=C[E];ae.contains(I.rectangle,m)&&(f=I)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Mn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=xe.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(AR.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});AR.prototype._update=function(){this.frustums&&(this.frustumStatisticText=eDt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=qZ(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};AR.prototype.isDestroyed=function(){return!1};AR.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var RH=AR;function MH(e,t){e=Gn(e);let n=document.createElement("div"),i=new RH(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let A=document.createElement("div");A.className="cesium-cesiumInspector-shaderCache",A.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(A);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(m);let _=document.createElement("span");_.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(_);let y=document.createElement("input");y.type="button",y.value="-",y.className="cesium-cesiumInspector-pickButton",y.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(y);let C=document.createElement("input");C.type="button",C.value="+",C.className="cesium-cesiumInspector-pickButton",C.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(C);let E=a(s,"Primitives","primitivesVisible","togglePrimitives"),I=document.createElement("div");I.className="cesium-cesiumInspector-pickSection",E.appendChild(I);let b=document.createElement("input");b.type="button",b.value="Pick a primitive",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let S=document.createElement("div");S.className="cesium-cesiumInspector-center",S.appendChild(b),I.appendChild(S),I.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),I.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),I.appendChild(this._primitiveOnly);let B=a(s,"Terrain","terrainVisible","toggleTerrain"),v=document.createElement("div");v.className="cesium-cesiumInspector-pickSection",B.appendChild(v);let P=document.createElement("input");P.type="button",P.value="Pick a tile",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),S=document.createElement("div"),S.appendChild(P),S.className="cesium-cesiumInspector-center",v.appendChild(S);let N=document.createElement("div");v.appendChild(N);let L=document.createElement("input");L.type="button",L.value="Parent",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectParent");let p=document.createElement("input");p.type="button",p.value="NW",p.className="cesium-cesiumInspector-pickButton",p.setAttribute("data-bind","click: selectNW");let x=document.createElement("input");x.type="button",x.value="NE",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: selectNE");let T=document.createElement("input");T.type="button",T.value="SW",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectSW");let w=document.createElement("input");w.type="button",w.value="SE",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSE");let M=document.createElement("div");M.className="cesium-cesiumInspector-tileText",N.className="cesium-cesiumInspector-frustumStatistics",N.appendChild(M),N.setAttribute("data-bind","visible: hasPickedTile"),M.setAttribute("data-bind","html: tileText");let O=document.createElement("div");O.className="cesium-cesiumInspector-relativeText",O.textContent="Select relative:",N.appendChild(O);let U=document.createElement("table"),Q=document.createElement("tr"),z=document.createElement("tr"),F=document.createElement("td");F.appendChild(L);let H=document.createElement("td");H.appendChild(p);let W=document.createElement("td");W.appendChild(x),Q.appendChild(F),Q.appendChild(H),Q.appendChild(W);let Z=document.createElement("td"),Y=document.createElement("td");Y.appendChild(T);let $=document.createElement("td");$.appendChild(w),z.appendChild(Z),z.appendChild(Y),z.appendChild($),U.appendChild(Q),U.appendChild(z),N.appendChild(U),v.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),v.appendChild(c("Show only selected","filterTile","hasPickedTile")),B.appendChild(c("Wireframe","wireframe")),B.appendChild(c("Suspend LOD update","suspendUpdates")),B.appendChild(c("Show tile coordinates","tileCoordinates")),xe.applyBindings(i,this._element)}Object.defineProperties(MH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MH.prototype.isDestroyed=function(){return!1};MH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var NH=MH;function LH(e,t){l(t)||(t=document.body),t=Gn(t);let n=this,i=xe.observable(Hr.fullscreen),o=xe.observable(Hr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,xe.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,xe.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Mn(function(){Hr.fullscreen?Hr.exitFullscreen():Hr.requestFullscreen(n._fullscreenElement)},xe.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=Gn(e)??r.body,this._callback=function(){i(Hr.fullscreen)},r.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(LH.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});LH.prototype.isDestroyed=function(){return!1};LH.prototype.destroy=function(){document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var OH=LH;var iDt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",oDt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function FH(e,t){e=Gn(e);let n=new OH(t,e);n._exitFullScreenPath=oDt,n._enterFullScreenPath=iDt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),xe.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(FH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});FH.prototype.isDestroyed=function(){return!1};FH.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var QH=FH;var cSe=1e3;function wd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new yS({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new _e,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=uSe,this._handleArrowUp=lSe;let t=this;this._suggestionsVisible=xe.pureComputed(function(){let o=xe.getObservable(t,"_suggestions")().length>0,r=xe.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Mn(function(i){if(i=i??w0.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)uDt(t);else return cDt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?lSe(t):r?uSe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;hSe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??wd.flyToDestination,this._focusTextbox=!1,xe.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=xe.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){wd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,xe.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,xe.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,xe.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(wd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});wd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function lSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],wd._adjustSuggestionsScroll(e,n)}function uSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],wd._adjustSuggestionsScroll(e,i)}function rDt(e,t){let n=l(t)?t.availability:void 0;return l(n)?PT(t,[e]).then(function(i){return e=i[0],e.height+=cSe,e}):(e.height+=cSe,Promise.resolve(e))}function sDt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?D.equalsEpsilon(t.south,t.north,D.EPSILON7)&&D.equalsEpsilon(t.east,t.west,D.EPSILON7)?t=ae.center(t):a=RT(t,n):t=i.cartesianToCartographic(t),l(a)||(a=rDt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:R.IDENTITY})})}async function aDt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function cDt(e,t,n){let i=e._searchText;if(dSe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await aDt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,XZ(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=fSe(e,WP.getCreditsFromResult(s[0]));l(a)||KZ(e,t[o].credit);return}e._searchText=`${i} (not found)`}function KZ(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function fSe(e,t){return l(t)&&t.forEach(n=>KZ(e,n)),t}function XZ(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function lDt(e,t){let n=Gn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function uDt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function dSe(e){return/^\s*$/.test(e)}function hSe(e){xe.getObservable(e,"_suggestions").removeAll()}async function fDt(e){if(!e.autoComplete)return;let t=e._searchText;if(hSe(e),XZ(e),!dSe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,w0.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=WP.getCreditsFromResult(r);o=o&&!l(s),fSe(e,s)}),o&&KZ(e,n.credit)}if(e._suggestions.length>=5)return}}wd.flyToDestination=sDt;wd._updateSearchSuggestions=fDt;wd._adjustSuggestionsScroll=lDt;wd.prototype.isDestroyed=function(){return!1};wd.prototype.destroy=function(){return XZ(this),ue(this)};var kH=wd;var dDt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",hDt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function UH(e){let t=Gn(e.container),n=new kH(e);n._startSearchPath=dDt,n._stopSearchPath=hDt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),xe.applyBindings(n,i),xe.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},jt.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(UH.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});UH.prototype.isDestroyed=function(){return!1};UH.prototype.destroy=function(){let e=this._container;return jt.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),xe.cleanNode(this._form),xe.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var GH=UH;function mSe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Mn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",xe.track(this,["tooltip"])}Object.defineProperties(mSe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var zH=mSe;function VH(e,t,n){e=Gn(e);let i=new zH(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(VH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});VH.prototype.isDestroyed=function(){return!1};VH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var HH=VH;function mDt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function pSe(e,t){xe.track(e);for(let n=0;n<e.sublayers.length;n++)pSe(e.sublayers[n],t)}function WH(e){return e.modelName==="FullModel"}function gSe(e){return e.modelName==="Overview"}function _Se(e){return gSe(e)||WH(e)}function ASe(e,t){if(_Se(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:xe.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function ADt(e,t){if(_Se(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");WH(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function pDt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function gDt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:xe.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:xe.observable(!0),index:-1}],currentLayer:xe.observable(),expandClickHandler:mDt,setOptionDisable:function(i,o){xe.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){ADt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){pSe(n[i],this.viewModel);let o=ASe(n[i],this.viewModel);l(o)&&(gSe(o)||!l(this.viewModel.defaultLayer)&&WH(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=ASe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=WH(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return pDt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var jH=gDt;function _Dt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new jH(t);xe.track(o),xe.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var ySe=_Dt;var yDt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",CDt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function JZ(){this._cameraClicked=new _e,this._closeClicked=new _e,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",xe.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,xe.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?CDt:yDt}}),xe.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}JZ.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(JZ.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var YH=JZ;function qH(e){e=Gn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new YH;xe.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=fn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=fc(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let A=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let _=window.getComputedStyle(g);if(_!==null){let y=_["background-color"],C=G.fromCssColorString(y);l(C)&&C.alpha!==0&&(A=_["background-color"])}}t.style["background-color"]=A;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(qH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});qH.prototype.isDestroyed=function(){return!1};qH.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var KH=qH;function CSe(){this.showInstructions=!1;let e=this;this._command=Mn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Mn(function(){e._touch=!1}),this._showTouch=Mn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",xe.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(CSe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var XH=CSe;function JH(e){let t=Gn(e.container),n=new XH,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=fn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=fn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let A=document.createElement("div");A.className="cesium-touch-navigation-help cesium-navigation-help-instructions",A.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),A.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(A),xe.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(JH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});JH.prototype.isDestroyed=function(){return!1};JH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var ZH=JH;function ZZ(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,xe.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Mn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=X4.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(ZZ.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});ZZ.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var $H=ZZ;function e5(e){let t=Gn(e.container),n=new $H(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),xe.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(e5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});e5.prototype.isDestroyed=function(){return!1};e5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var t5=e5;function n5(e){this._scene=e,this._orthographic=e.camera.frustum instanceof An,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,xe.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;xe.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Mn(function(){t.sceneMode===ie.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Lr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ie.SCENE2D||t._scene.camera.frustum instanceof An}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ie}Object.defineProperties(n5.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});n5.prototype.isDestroyed=function(){return!1};n5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var i5=n5;var EDt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",IDt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function o5(e,t){e=Gn(e);let n=new i5(t);n._perspectivePath=EDt,n._orthographicPath=IDt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),xe.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(o5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});o5.prototype.isDestroyed=function(){return!1};o5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var r5=o5;function s5(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Lr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",xe.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,xe.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ie.SCENE2D?n.tooltip2D:o===ie.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Mn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Mn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Mn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ie}Object.defineProperties(s5.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});s5.prototype.isDestroyed=function(){return!1};s5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var a5=s5;var xDt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",bDt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",TDt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function c5(e,t,n){e=Gn(e);let i=new a5(t,n);i._globePath=xDt,i._flatMapPath=bDt,i._columbusViewPath=TDt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),xe.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(c5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});c5.prototype.isDestroyed=function(){return!1};c5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var l5=c5;var SDt=new k,u5="-1000px";function pR(e,t,n){this._scene=e,this._screenPositionX=u5,this._screenPositionY=u5,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,xe.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,xe.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),xe.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return to.worldToWindowCoordinates(e,i,o)}}pR.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,SDt);if(!l(e))this._screenPositionX=u5,this._screenPositionY=u5;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};pR.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};pR.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};Object.defineProperties(pR.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var f5=pR;function d5(e,t){e=Gn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new f5(t,this._element,this._container);this._viewModel=c,xe.applyBindings(this._viewModel,this._element)}Object.defineProperties(d5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});d5.prototype.isDestroyed=function(){return!1};d5.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),ue(this)};var h5=d5;function F0(e,t,n){this._color=e,this._height=t,this._base=n??0}F0.prototype.getHeight=function(){return this._height};F0.prototype.getBase=function(){return this._base};F0.prototype.getStartTime=function(){return this._start};F0.prototype.getStopTime=function(){return this._stop};F0.prototype.setRange=function(e,t){this._start=e,this._stop=t};F0.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=K.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=K.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var m5=F0;function ESe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new G(.5,.5,.5,1),this.backgroundColor=i||new G(0,0,0,0)}ESe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=K.addSeconds(t.startJulian,t.duration,new K);if(K.lessThan(n,o)&&K.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(K.lessThanOrEquals(n,r)&&K.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=K.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new K);!l(a)&&K.greaterThanOrEquals(u,n)?a=s:!l(c)&&K.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var A5=ESe;var $Z=1e12,Bd={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},Sl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},iC=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],wDt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function wl(e,t){e=Gn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=Bd.none,this._touchMode=Sl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=BDt(this),this._onMouseUp=DDt(this),this._onMouseMove=vDt(this),this._onMouseWheel=PDt(this),this._onTouchStart=RDt(this),this._onTouchMove=NDt(this),this._onTouchEnd=MDt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}wl.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};wl.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};wl.prototype.isDestroyed=function(){return!1};wl.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};wl.prototype.addHighlightRange=function(e,t,n){let i=new m5(e,t,n);return this._highlightRanges.push(i),this.resize(),i};wl.prototype.addTrack=function(e,t,n,i){let o=new A5(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};wl.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=K.secondsDifference(t,e),this._clock&&this._clock.clockRange!==As.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=K.secondsDifference(o,i),s=K.secondsDifference(i,this._startJulian),a=K.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=K.addSeconds(this._endJulian,s,new K),this._startJulian=i,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=K.addSeconds(this._startJulian,a,new K),this._endJulian=o,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};wl.prototype.zoomFrom=function(e){let t=K.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(K.addSeconds(this._startJulian,t-t*e,new K),K.addSeconds(this._endJulian,n*e-n,new K))};function e$(e){return e<10?`0${e.toString()}`:e.toString()}wl.prototype.makeLabel=function(e){let t=K.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${wDt[t.month-1]} ${t.day} ${t.year} ${e$(t.hour)}:${e$(t.minute)}:${e$(t.second)}${i}`};wl.prototype.smallestTicInPixels=7;wl.prototype._makeTics=function(){let e=this._timeBarEle,t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=K.addSeconds(this._startJulian,a,new K)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=K.addSeconds(this._startJulian,c,new K));let A=this._timeBarEle.clientWidth;A<10&&(A=10);let g=this._startJulian,m=Math.min(h/A*1e-5,.4),_,y=K.toGregorianDate(g);h>31536e4?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/100)*100,0))):h>31536e3?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/10)*10,0))):h>86400?_=K.fromDate(new Date(Date.UTC(y.year,0))):_=K.fromDate(new Date(Date.UTC(y.year,y.month,y.day)));let C=K.secondsDifference(this._startJulian,K.addSeconds(_,m,new K)),E=C+h;this._epochJulian=_;function I(F){return Math.floor(C/F)*F}function b(F,H){return Math.ceil(F/H+.5)*H}function S(F){return(F-C)/h}function B(F,H){return F-H*Math.round(F/H)}this._rulerEle.innerHTML=this.makeLabel(K.addSeconds(this._endJulian,-a,new K));let v=this._rulerEle.offsetWidth+20;v<30&&(v=180);let P=f;f-=u;let N={startTime:C,startJulian:g,epochJulian:_,duration:h,timeBarWidth:A,getAlpha:S};this._highlightRanges.forEach(function(F){s+=F.render(N)});let L=0,p=0,x=0,T=v/A;T>1&&(T=1),T*=this._timeBarSecondsSpan;let w=-1,M=-1,O=iC.length,U;for(U=0;U<O;++U){let F=iC[U];if(++w,L=F,F>T&&F>f)break;M<0&&A*(F/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(M=w)}if(w>0){for(;w>0;)if(--w,Math.abs(B(L,iC[w]))<1e-5){iC[w]>=f&&(p=iC[w]);break}if(M>=0)for(;M<w;){if(Math.abs(B(p,iC[M]))<1e-5&&iC[M]>=f){x=iC[M];break}++M}}f=P,f>u&&x<1e-5&&Math.abs(f-L)>u&&(x=f,f<=L+u&&(p=0));let Q=-999999,z;if(A*(x/this._timeBarSecondsSpan)>=3)for(o=I(x);o<=E;o=b(o,x))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(p/this._timeBarSecondsSpan)>=3)for(o=I(p);o<=E;o=b(o,p))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(L/this._timeBarSecondsSpan)>=2){this._mainTicSpan=L,E+=L,o=I(L);let F=K.computeTaiMinusUtc(_);for(;o<=E;){let H=K.addSeconds(g,o-C,new K);if(L>2.1){let $=K.computeTaiMinusUtc(H);Math.abs($-F)>.1&&(o+=$-F,H=K.addSeconds(g,o-C,new K))}let W=Math.round(A*S(o)),Z=this.makeLabel(H);this._rulerEle.innerHTML=Z,z=this._rulerEle.offsetWidth,z<10&&(z=v);let Y=W-(z/2-1);Y>Q?(Q=Y+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${W.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${Y.toString()}px;">${Z}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${W.toString()}px;"></span>`,o=b(o,L)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),N.y=0,this._trackList.forEach(function(F){F.render(r._context,N),N.y+=F.height})};wl.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(K.addSeconds(this._startJulian,this._timelineDrag,new K),K.addSeconds(this._endJulian,this._timelineDrag,new K)))};wl.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=K.addSeconds(this._startJulian,t,new K),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function BDt(e){return function(t){e._mouseMode!==Bd.touchOnly&&(t.button===0?(e._mouseMode=Bd.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=Bd.zoom:e._mouseMode=Bd.slide)),t.preventDefault()}}function DDt(e){return function(t){e._mouseMode=Bd.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function vDt(e){return function(t){let n;if(e._mouseMode===Bd.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===Bd.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(K.addSeconds(e._startJulian,i,new K),K.addSeconds(e._endJulian,i,new K))}}else e._mouseMode===Bd.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function PDt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;$Z=Math.max(Math.min(Math.abs(n),$Z),1),n/=$Z,e.zoomFrom(Math.pow(1.05,-n))}}function RDt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=Bd.touchOnly,n===1?(i=K.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=Sl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=Sl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=Sl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=Sl.ignore}}function MDt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap?(e._touchMode=Sl.scrub,e._onTouchMove(t)):e._touchMode===Sl.scrub&&e._onTouchMove(t),e._mouseMode=Bd.touchOnly,n!==1?e._touchMode=n>0?Sl.ignore:Sl.none:e._touchMode===Sl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function NDt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap&&(e._touchMode=Sl.slideZoom),e._mouseMode=Bd.touchOnly,e._touchMode===Sl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===Sl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=K.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new K)):(n=e._touchState.centerX-r,a=K.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new K)),e.zoomTo(a,K.addSeconds(a,e._timeBarSecondsSpan*c,new K)),e._touchState.centerX=r,e._touchState.spanX=s))}}wl.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var p5=wl;var SSe=Es(TSe(),1);function FDt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function wSe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function QDt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(wSe(),e._locked=!1),e._noSleep.disable(),Hr.exitFullscreen(),n(!1)):(Hr.fullscreen||Hr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=FDt("landscape")),t.useWebVR=!0,n(!0)))}function g5(e,t){let n=this,i=xe.observable(Hr.enabled),o=xe.observable(!1);this.isVRMode=void 0,xe.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,xe.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=xe.observable(!1);this._isOrthographic=void 0,xe.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Lr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof An)}),this._locked=!1,this._noSleep=new SSe.default,this._command=Mn(function(){QDt(n,e,o,r)},xe.getObservable(this,"isVREnabled")),this._vrElement=Gn(t)??document.body,this._callback=function(){!Hr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(wSe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(g5.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});g5.prototype.isDestroyed=function(){return!1};g5.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var _5=g5;var kDt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",UDt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function y5(e,t,n){e=Gn(e);let i=new _5(t,n);i._exitVRPath=UDt,i._enterVRPath=kDt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(y5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});y5.prototype.isDestroyed=function(){return!1};y5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var C5=y5;var BSe=new le;function PSe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function GDt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function zDt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function DSe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof _r)return i;if(n instanceof Sa)return new _r({name:zDt(n),description:GDt(n),feature:n})}if(l(e.scene.globe))return WDt(e,t.position)}var VDt=new K;function o$(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;K.equals(i,o)&&(o=K.addSeconds(i,D.EPSILON2,VDt)),e.updateFromClock(),e.zoomTo(i,o)}}}var HDt=new d;function WDt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new _r({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=vSe();return}let a=s[0],c=new _r({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,HDt);c.position=new Ol(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=vSe())}),r}function vSe(){return new _r({id:"None",description:"No features found."})}function jDt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,A=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=A),l(i)&&(i.container.style.visibility=A),l(o)&&(o.container.style.visibility=A),l(r)&&(r.container.style.visibility=A),l(s)&&(s.container.style.visibility=A),l(a)&&(a.container.style.visibility=A),l(c)&&(c.container.style.visibility=A),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=A),l(f)&&(f.container.style.visibility=A),l(h)&&(h.container.style.visibility=A),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function oo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new Vm,u=new pH(c),f=!0);let h=new b4(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),A=h.scene,g=new Lr;g.add(c.onTick,oo.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let H=document.createElement("div");H.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(H),m=new h5(H,A)}let _;if(!l(t.infoBox)||t.infoBox!==!1){let H=document.createElement("div");H.className="cesium-viewer-infoBoxContainer",o.appendChild(H),_=new KH(H);let W=_.viewModel;g.add(W.cameraClicked,oo.prototype._onInfoBoxCameraClicked,this),g.add(W.closeClicked,oo.prototype._onInfoBoxClockClicked,this)}let y=document.createElement("div");y.className="cesium-viewer-toolbar",o.appendChild(y);let C;if(!l(t.geocoder)||t.geocoder!==!1){let H=document.createElement("div");H.className="cesium-viewer-geocoderContainer",y.appendChild(H);let W;typeof t.geocoder=="string"?W=[new yS({scene:A,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(W=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),C=new GH({container:H,geocoderServices:W,scene:A}),g.add(C.viewModel.search.beforeExecute,oo.prototype._clearObjects,this)}let E;(!l(t.homeButton)||t.homeButton!==!1)&&(E=new HH(y,A),l(C)&&g.add(E.viewModel.command.afterExecute,function(){let H=C.viewModel;H.searchText="",H.isSearchInProgress&&H.search()}),g.add(E.viewModel.command.beforeExecute,oo.prototype._clearTrackedObject,this));let I;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(I=new l5(y,A));let b;t.projectionPicker&&(b=new r5(y,A));let S,B;if(n){let H=t.imageryProviderViewModels??SH(),W=t.terrainProviderViewModels??wH();S=new TH(y,{globe:A.globe,imageryProviderViewModels:H,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:W,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),B=y.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(S.viewModel.selectedImagery=void 0),A.imageryLayers.removeAll(),A.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(S.viewModel.selectedTerrain=void 0),A.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(A.globe.depthTestAgainstTerrain=!0),A.setTerrain(t.terrain));let v;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let H=!0;try{if(l(window.localStorage)){let W=window.localStorage.getItem("cesium-hasSeenNavHelp");l(W)&&W?H=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}v=new ZH({container:y,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??H})}let P;if(!l(t.animation)||t.animation!==!1){let H=document.createElement("div");H.className="cesium-viewer-animationContainer",o.appendChild(H),P=new EH(H,new IH(u))}let N;if(!l(t.timeline)||t.timeline!==!1){let H=document.createElement("div");H.className="cesium-viewer-timelineContainer",o.appendChild(H),N=new p5(H,c),N.addEventListener("settime",PSe,!1),N.zoomTo(c.startTime,c.stopTime)}let L,p,x;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(x=document.createElement("div"),x.className="cesium-viewer-fullscreenContainer",o.appendChild(x),L=new QH(x,t.fullscreenElement),p=fc(L.viewModel,"isFullscreenEnabled",function(H){x.style.display=H?"block":"none",l(N)&&(N.container.style.right=`${x.clientWidth}px`,N.resize())}));let T,w,M;if(t.vrButton){let H=document.createElement("div");H.className="cesium-viewer-vrContainer",o.appendChild(H),T=new C5(H,A,t.fullScreenElement),w=fc(T.viewModel,"isVREnabled",function(W){H.style.display=W?"block":"none",l(L)&&(H.style.right=`${x.clientWidth}px`),l(N)&&(N.container.style.right=`${H.clientWidth}px`,N.resize())}),M=fc(T.viewModel,"isVRMode",function(W){jDt(i,W)})}this._baseLayerPickerDropDown=B,this._fullscreenSubscription=p,this._vrSubscription=w,this._vrModeSubscription=M,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=_,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=y,this._homeButton=E,this._sceneModePicker=I,this._projectionPicker=b,this._baseLayerPicker=S,this._navigationHelpButton=v,this._animation=P,this._timeline=N,this._fullscreenButton=L,this._vrButton=T,this._geocoder=C,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(_)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new _e;let O=this._cesiumWidget.dataSources,U=this._cesiumWidget.dataSourceDisplay;g.add(O.dataSourceAdded,oo.prototype._onDataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._onDataSourceRemoved,this),g.add(A.postUpdate,oo.prototype.resize,this);let Q=O.length;for(let H=0;H<Q;H++)this._dataSourceAdded(O,O.get(H));this._dataSourceAdded(void 0,U.defaultDataSource),g.add(O.dataSourceAdded,oo.prototype._dataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._dataSourceRemoved,this);function z(H){let W=DSe(i,H);l(W)?j.getValueOrUndefined(W.position,i.clock.currentTime)?i.trackedEntity=W:i.zoomTo(W):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function F(H){i.selectedEntity=DSe(i,H)}h.screenSpaceEventHandler.setInputAction(F,vn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(z,vn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(oo.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,o$(this._timeline,e))}}});oo.prototype.extend=function(e,t){e(this,t)};oo.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,A=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,_=this._vrButton,y=c.container,C=y.style;A=y.clientHeight+3,C.left=`${f}px`;let E=0;l(m)&&(E+=m.container.clientWidth),l(_)&&(E+=_.container.clientWidth),C.right=`${E}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${A}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};oo.prototype.forceResize=function(){this._lastWidth=0,this.resize()};oo.prototype.render=function(){this._cesiumWidget.render()};oo.prototype.isDestroyed=function(){return!1};oo.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(vn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(vn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",PSe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};oo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(oo.prototype._onEntityCollectionChanged,this)};oo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(oo.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};oo.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};oo.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,BSe)!==mt.FAILED?n=BSe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=j.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};oo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};oo.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};oo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};oo.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};oo.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};oo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&o$(this.timeline,e)};oo.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&o$(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,oo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};oo.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};oo.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};oo.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var RSe=oo;function YDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new PH(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var MSe=YDt;function qDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new NH(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var NSe=qDt;function KDt(e,t){t=t??V.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new _e,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=Gn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){LSe(s,u),s=f,r$(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?r$(s,u):LSe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){Q0(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,A=h.length;for(let g=0;g<A;g++){let m=h[g],_=new FileReader;_.onload=XDt(e,m,c,a),_.onerror=JDt(e,m),_.readAsText(m)}}r$(s,u),e.destroy=G4(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function Q0(e){e.stopPropagation(),e.preventDefault()}function LSe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",Q0,!1),n.removeEventListener("dragover",Q0,!1),n.removeEventListener("dragexit",Q0,!1))}function r$(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",Q0,!1),e.addEventListener("dragover",Q0,!1),e.addEventListener("dragexit",Q0,!1)}function XDt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=I3.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=kE.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=ST.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=LU.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function JDt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var OSe=KDt;function ZDt(e,t){t=t??V.EMPTY_OBJECT;let n=new t5({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var FSe=ZDt;function QSe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function Dd(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=xe.observable();return xe.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===lc.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===lc.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===lc.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-D.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:D.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationX=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationY=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationZ=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleX=R.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleY=R.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleZ=R.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}})}var $Dt=new d,evt=new d,tvt=new pc,nvt=new J;function bA(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,$Dt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,evt),i=tvt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=J.fromHeadingPitchRoll(i,nvt),r=J.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=R.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(Dd.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,bA(t)}}});Dd.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Dd.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Dd.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Dd.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Dd.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Dd.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Dd.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new eS({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Dd.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};Dd.prototype.isDestroyed=function(){return!1};Dd.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};var E5=Dd;function I5(e,t){e=Gn(e);let n=document.createElement("div"),i=new E5(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:u}=ff,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),A=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let m=10,_=10,y=D.PI;h.appendChild(c("Translation X","translationX",-m,+m)),h.appendChild(c("Translation Y","translationY",-m,+m)),h.appendChild(c("Translation Z","translationZ",-m,+m)),h.appendChild(c("Scale X","scaleX",0,+_)),h.appendChild(c("Scale Y","scaleY",0,+_)),h.appendChild(c("Scale Z","scaleZ",0,+_)),h.appendChild(c("Heading","angleX",-y,+y)),h.appendChild(c("Pitch","angleY",-y,+y)),h.appendChild(c("Roll","angleZ",-y,+y)),s$("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",A),s$("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",A),s$("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",A);let C=document.createElement("div");g.appendChild(C);let E=document.createElement("textarea");E.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),C.className="cesium-cesiumInspector-styleEditor",C.appendChild(E);let I=u("Compile (Ctrl+Enter)","compileShader");C.appendChild(I);let b=document.createElement("label");b.style.display="block",b.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),C.appendChild(b),xe.applyBindings(i,n)}Object.defineProperties(I5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I5.prototype.isDestroyed=function(){return!1};I5.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function s$(e,t,n,i,o,r,s,a,c,u,f,h,A,g){let m=ff.createRangeInputWithDynamicMinMax,_=g.appendChild(document.createElement("div"));_.setAttribute("data-bind",`if: ${A}`),_.appendChild(m(e,s)),_.appendChild(m(t,a)),_.appendChild(m(n,c)),_.appendChild(m(i,u)),_.appendChild(m(o,f)),_.appendChild(m(r,h))}var x5=I5;function ivt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new x5(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var kSe=ivt;globalThis.CESIUM_VERSION="1.132";var KAo="1.132";export{np as AlphaMode,_2 as AlphaPipelineStage,gF as AnchorPointDirect,_F as AnchorPointIndirect,EH as Animation,IH as AnimationViewModel,go as Appearance,wi as ApproximateTerrainHeights,Uxe as ArcGISTiledElevationTerrainProvider,vm as ArcGisBaseMapType,__ as ArcGisMapServerImageryProvider,kf as ArcGisMapService,un as ArcType,cl as ArticulationStageType,Pt as AssociativeArray,lx as Atmosphere,JF as AtmospherePipelineStage,Fn as AttributeCompression,Ht as AttributeType,g8 as AutoExposure,bg as AutomaticUniforms,Ao as Axis,CC as AxisAlignedBoundingBox,PF as B3dmLoader,vF as B3dmParser,TH as BaseLayerPicker,xH as BaseLayerPickerViewModel,yI as BatchTable,VI as BatchTableHierarchy,Gl as BatchTexture,y2 as BatchTexturePipelineStage,xo as Billboard,jf as BillboardCollection,jc as BillboardGraphics,Ds as BillboardLoadState,w_ as BillboardTexture,sM as BillboardVisualizer,zxe as BingMapsGeocoderService,Q2 as BingMapsImageryProvider,RB as BingMapsStyle,Cc as BlendEquation,Uo as BlendFunction,Vo as BlendOption,pn as BlendingState,Xe as BoundingRectangle,le as BoundingSphere,mt as BoundingSphereState,nx as BoundingVolumeSemantics,kbe as BoxEmitter,yc as BoxGeometry,rO as BoxGeometryUpdater,wI as BoxGraphics,$h as BoxOutlineGeometry,uV as BrdfLutGenerator,Et as Buffer,jI as BufferLoader,Qe as BufferUsage,x2 as CPUStylingPipelineStage,sO as CallbackPositionProperty,fm as CallbackProperty,Eo as Camera,I8 as CameraEventAggregator,$i as CameraEventType,fV as CameraFlightPath,k as Cartesian2,d as Cartesian3,se as Cartesian4,GB as CartesianRectangle,Ae as Cartographic,Vxe as CartographicGeocoderService,Wxe as CatmullRomSpline,zI as Cesium3DContentGroup,ah as Cesium3DTile,Fg as Cesium3DTileBatchTable,Su as Cesium3DTileColorBlendMode,Ube as Cesium3DTileContent,Xx as Cesium3DTileContentFactory,cr as Cesium3DTileContentState,ua as Cesium3DTileContentType,Sa as Cesium3DTileFeature,Sm as Cesium3DTileFeatureTable,rh as Cesium3DTileOptimizationHint,Lk as Cesium3DTileOptimizations,Zo as Cesium3DTilePass,Lh as Cesium3DTilePassState,B_ as Cesium3DTilePointFeature,rr as Cesium3DTileRefine,TS as Cesium3DTileStyle,Uk as Cesium3DTileStyleEngine,PH as Cesium3DTilesInspector,DH as Cesium3DTilesInspectorViewModel,zbe as Cesium3DTilesVoxelProvider,qs as Cesium3DTileset,zk as Cesium3DTilesetBaseTraversal,Fk as Cesium3DTilesetCache,NI as Cesium3DTilesetGraphics,kk as Cesium3DTilesetHeatmap,lb as Cesium3DTilesetMetadata,Gk as Cesium3DTilesetMostDetailedTraversal,Hk as Cesium3DTilesetSkipTraversal,Um as Cesium3DTilesetStatistics,La as Cesium3DTilesetTraversal,Yk as Cesium3DTilesetVisualizer,NH as CesiumInspector,RH as CesiumInspectorViewModel,AS as CesiumTerrainProvider,b4 as CesiumWidget,Mo as Check,SD as CheckerboardMaterialProperty,H4 as CircleEmitter,ebe as CircleGeometry,tbe as CircleOutlineGeometry,kQ as ClassificationModelDrawCommand,C2 as ClassificationPipelineStage,dw as ClassificationPrimitive,Jn as ClassificationType,Ei as ClearCommand,ox as ClippingPlane,Vs as ClippingPlaneCollection,AB as ClippingPolygon,xm as ClippingPolygonCollection,Vm as Clock,As as ClockRange,vo as ClockStep,pH as ClockViewModel,Kbe as CloudCollection,JP as CloudType,G as Color,al as ColorBlendMode,en as ColorGeometryInstanceAttribute,Jt as ColorMaterialProperty,JTe as Command,q as ComponentDatatype,dO as Composite3DTileContent,Ffe as CompositeEntityCollection,vD as CompositeMaterialProperty,nc as CompositePositionProperty,ml as CompositeProperty,mM as CompressedTextureBuffer,Hl as ComputeCommand,JG as ComputeEngine,z4 as ConditionsExpression,Xbe as ConeEmitter,Ol as ConstantPositionProperty,ci as ConstantProperty,kF as ConstantSpline,xk as ContentMetadata,vT as Context,qt as ContextLimits,G3 as CoplanarPolygonGeometry,M_ as CoplanarPolygonGeometryLibrary,sh as CoplanarPolygonOutlineGeometry,Ji as CornerType,yF as CorrelationGroup,yb as CorridorGeometry,no as CorridorGeometryLibrary,i3 as CorridorGeometryUpdater,DI as CorridorGraphics,n3 as CorridorOutlineGeometry,Dt as Credit,EV as CreditDisplay,jr as CubeMap,DM as CubeMapFace,fI as CubicRealPolynomial,Mi as CullFace,zs as CullingVolume,Td as CumulusCloud,c3 as CustomDataSource,nbe as CustomHeightmapTerrainProvider,eS as CustomShader,p_ as CustomShaderMode,v2 as CustomShaderPipelineStage,tE as CustomShaderTranslucencyMode,l3 as CylinderGeometry,Eb as CylinderGeometryLibrary,f3 as CylinderGeometryUpdater,vI as CylinderGraphics,u3 as CylinderOutlineGeometry,I3 as CzmlDataSource,ms as DataSource,Hm as DataSourceClock,b3 as DataSourceCollection,AU as DataSourceDisplay,Jbe as DebugAppearance,Kp as DebugCameraPrimitive,O8 as DebugInspector,Y4 as DebugModelMatrixPrimitive,obe as DefaultProxy,Ja as DepthFunction,SV as DepthPlane,P2 as DequantizationPipelineStage,Xp as DerivedCommand,me as DeveloperError,BV as DeviceOrientationCameraController,Zbe as DirectionalLight,NB as DiscardEmptyTileImagePolicy,L2 as DiscardMissingTileImagePolicy,Ut as DistanceDisplayCondition,Kn as DistanceDisplayConditionGeometryInstanceAttribute,rS as DoubleEndedPriorityQueue,Ok as DoublyLinkedList,jg as DracoLoader,nt as DrawCommand,r_ as DynamicAtmosphereLightingType,s_ as DynamicEnvironmentMapManager,Nb as DynamicGeometryBatch,yi as DynamicGeometryUpdater,GR as EarthOrientationParameters,sC as EarthOrientationParametersSample,ps as EasingFunction,ru as EllipseGeometry,Uu as EllipseGeometryLibrary,M3 as EllipseGeometryUpdater,PI as EllipseGraphics,ld as EllipseOutlineGeometry,te as Ellipsoid,Sg as EllipsoidGeodesic,ka as EllipsoidGeometry,N3 as EllipsoidGeometryUpdater,RI as EllipsoidGraphics,ed as EllipsoidOutlineGeometry,nV as EllipsoidPrimitive,Ic as EllipsoidRhumbLine,$be as EllipsoidSurfaceAppearance,xs as EllipsoidTangentPlane,jp as EllipsoidTerrainProvider,H_ as EllipsoidalOccluder,hD as Empty3DTileContent,ei as EncodedCartesian3,_r as Entity,od as EntityCluster,Oa as EntityCollection,_U as EntityView,_e as Event,Lr as EventHelper,Hd as Expression,It as ExpressionNodeType,rd as ExtrapolationType,jt as FeatureDetection,eE as FeatureIdPipelineStage,DV as Fog,Re as ForEach,X4 as FrameRateMonitor,vV as FrameState,as as Framebuffer,vi as FramebufferManager,V as Frozen,FV as FrustumCommands,kT as FrustumGeometry,xV as FrustumOutlineGeometry,Hr as Fullscreen,QH as FullscreenButton,OH as FullscreenButtonViewModel,dD as GaussianSplat3DTileContent,fD as GaussianSplatPrimitive,Ck as GaussianSplatRenderResources,lD as GaussianSplatSorter,yk as GaussianSplatTextureGenerator,kE as GeoJsonDataSource,MF as GeoJsonLoader,w0 as GeocodeType,GH as Geocoder,WP as GeocoderService,kH as GeocoderViewModel,Hi as GeographicProjection,co as GeographicTilingScheme,ht as Geometry,yO as Geometry3DTileContent,De as GeometryAttribute,En as GeometryAttributes,sbe as GeometryFactory,Rt as GeometryInstance,Jc as GeometryInstanceAttribute,hn as GeometryOffsetAttribute,jn as GeometryPipeline,N2 as GeometryPipelineStage,Ld as GeometryType,Ci as GeometryUpdater,Xb as GeometryUpdaterSet,rU as GeometryVisualizer,Mx as GetFeatureInfoFormat,Jz as Globe,QV as GlobeDepth,vz as GlobeSurfaceShaderSet,Rh as GlobeSurfaceTile,Gz as GlobeSurfaceTileProvider,zz as GlobeTranslucency,kV as GlobeTranslucencyFramebuffer,PV as GlobeTranslucencyState,Kw as GltfBufferViewLoader,Xw as GltfDracoLoader,EF as GltfGpmLoader,EB as GltfGpmLocal,Jw as GltfImageLoader,Zw as GltfIndexBufferLoader,eB as GltfJsonLoader,Ff as GltfLoader,Du as GltfLoaderUtil,TF as GltfMeshPrimitiveGpmLoader,HO as GltfSpzLoader,hF as GltfStructuralMetadataLoader,oB as GltfTextureLoader,rB as GltfVertexBufferLoader,tTe as GoogleEarthEnterpriseImageryProvider,H2 as GoogleEarthEnterpriseMapsProvider,Yy as GoogleEarthEnterpriseMetadata,jP as GoogleEarthEnterpriseTerrainData,Abe as GoogleEarthEnterpriseTerrainProvider,v4 as GoogleEarthEnterpriseTileInformation,gbe as GoogleGeocoderService,_S as GoogleMaps,LU as GpxDataSource,dg as GregorianDate,nTe as GridImageryProvider,UD as GridMaterialProperty,ti as GroundGeometryUpdater,bI as GroundPolylineGeometry,sm as GroundPolylinePrimitive,Ll as GroundPrimitive,gD as GroupMetadata,Eh as HeadingPitchRange,pc as HeadingPitchRoll,OR as Heap,Ze as HeightReference,vh as HeightmapEncoding,Qc as HeightmapTerrainData,nP as HeightmapTessellator,h3 as HermitePolynomialApproximation,XC as HermiteSpline,Ww as HilbertOrder,HH as HomeButton,zH as HomeButtonViewModel,Ri as HorizontalOrigin,ySe as I3SBuildingSceneLayerExplorer,jH as I3SBuildingSceneLayerExplorerViewModel,xA as I3SDataProvider,J4 as I3SDecoder,Z4 as I3SFeature,eH as I3SField,eR as I3SGeometry,wS as I3SLayer,tR as I3SNode,rH as I3SStatistics,sH as I3SSublayer,iH as I3SSymbology,QF as I3dmLoader,LF as I3dmParser,uTe as ITwinData,_a as ITwinPlatform,$z as Iau2000Orientation,HR as Iau2006XysData,$0 as Iau2006XysSample,eV as IauOrientationAxes,Zz as IauOrientationParameters,GI as ImageBasedLighting,$F as ImageBasedLightingPipelineStage,wC as ImageMaterialProperty,kB as Imagery,XQ as ImageryConfiguration,zB as ImageryCoverage,eQ as ImageryFlags,iQ as ImageryInput,ds as ImageryLayer,hb as ImageryLayerCollection,Dm as ImageryLayerFeatureInfo,oQ as ImageryPipelineStage,Kl as ImageryProvider,qn as ImageryState,uB as Implicit3DTileContent,jw as ImplicitAvailabilityBitstream,Yw as ImplicitMetadataView,Ts as ImplicitSubdivisionScheme,ex as ImplicitSubtree,V4 as ImplicitSubtreeCache,xO as ImplicitSubtreeMetadata,db as ImplicitTileCoordinates,fb as ImplicitTileset,Fe as IndexDatatype,KH as InfoBox,YH as InfoBoxViewModel,ff as InspectorShared,Ss as InstanceAttributeSemantic,m2 as InstancingPipelineStage,_be as InterpolationAlgorithm,Tm as InterpolationType,nn as Intersect,Ai as IntersectionTests,Wy as Intersections2D,_c as Interval,_P as InvertClassification,mm as Ion,Ky as IonGeocodeProviderType,yS as IonGeocoderService,y_ as IonImageryProvider,wf as IonResource,C_ as IonWorldImageryStyle,je as Iso8601,MV as JobScheduler,Tc as JobType,a_ as JsonMetadataTable,K as JulianDate,AM as KTX2Transcoder,ja as KeyboardEventModifier,Po as KeyframeNode,OU as KmlCamera,ST as KmlDataSource,OG as KmlLookAt,QG as KmlTour,UG as KmlTourFlyTo,GG as KmlTourWait,uE as Label,Ap as LabelCollection,cm as LabelGraphics,ar as LabelStyle,sU as LabelVisualizer,m3 as LagrangePolynomialApproximation,so as LeapSecond,dTe as Light,fp as LightingModel,sQ as LightingPipelineStage,Tb as LinearApproximation,KC as LinearSpline,kl as ManagedArray,$u as MapMode2D,Cbe as MapProjection,W2 as MapboxImageryProvider,mTe as MapboxStyleImageryProvider,nQ as MappedPositions,ao as Material,Io as MaterialAppearance,cQ as MaterialPipelineStage,gr as MaterialProperty,D as Math,Wi as Matrix2,J as Matrix3,R as Matrix4,LP as Megatexture,bF as MeshPrimitiveGpmLocal,Em as MetadataClass,$A as MetadataClassProperty,zt as MetadataComponentType,Yn as MetadataEntity,qO as MetadataEnum,jO as MetadataEnumValue,LV as MetadataPicking,Gf as MetadataPickingPipelineStage,Xd as MetadataPipelineStage,Mf as MetadataSchema,aB as MetadataSchemaLoader,tx as MetadataSemantic,jd as MetadataTable,TO as MetadataTableProperty,gt as MetadataType,Ud as MipmapHint,Mm as Model,zf as Model3DTileContent,Qx as ModelAlphaOptions,VF as ModelAnimation,zF as ModelAnimationChannel,WF as ModelAnimationCollection,vu as ModelAnimationLoop,wm as ModelAnimationState,n2 as ModelArticulation,e2 as ModelArticulationStage,r2 as ModelClippingPlanesPipelineStage,c2 as ModelClippingPolygonsPipelineStage,$C as ModelColorPipelineStage,bn as ModelComponents,GQ as ModelDrawCommand,HQ as ModelDrawCommands,jF as ModelFeature,YF as ModelFeatureTable,Dg as ModelGraphics,JQ as ModelImagery,Ox as ModelImageryMapping,FQ as ModelLightingOptions,A2 as ModelMatrixUpdateStage,l2 as ModelNode,Fx as ModelPrimitiveImagery,tQ as ModelReader,BQ as ModelRenderResources,g2 as ModelRuntimeNode,bQ as ModelRuntimePrimitive,jQ as ModelSceneGraph,RQ as ModelSilhouettePipelineStage,TQ as ModelSkin,LQ as ModelSplitterPipelineStage,YQ as ModelStatistics,Nr as ModelType,Qt as ModelUtility,cU as ModelVisualizer,rV as Moon,uQ as MorphTargetsPipelineStage,Ebe as MorphWeightSpline,yE as MortonOrder,Sk as Multiple3DTileContent,BF as MultisampleFramebuffer,ZH as NavigationHelpButton,XH as NavigationHelpButtonViewModel,Yt as NearFarScalar,ATe as NeverTileDiscardPolicy,OQ as NodeRenderResources,p2 as NodeStatisticsPipelineStage,MI as NodeTransformationProperty,UV as OIT,lV as Occluder,ho as OffsetGeometryInstanceAttribute,Ibe as OpenCageGeocoderService,eC as OpenStreetMapImageryProvider,S3 as OrderedGroundPrimitiveCollection,Qn as OrientedBoundingBox,An as OrthographicFrustum,ls as OrthographicOffCenterFrustum,xbe as Packable,bbe as PackableForInterpolation,oR as Particle,_Te as ParticleBurst,CTe as ParticleEmitter,xTe as ParticleSystem,Be as Pass,El as PassState,vg as PathGraphics,lU as PathVisualizer,N4 as PeliasGeocoderService,gn as PerInstanceColorAppearance,Ny as PerformanceDisplay,t5 as PerformanceWatchdog,$H as PerformanceWatchdogViewModel,Vi as PerspectiveFrustum,fu as PerspectiveOffCenterFrustum,OV as PickDepth,GV as PickDepthFramebuffer,zV as PickFramebuffer,d4 as PickedMetadataInfo,ZV as Picking,fQ as PickingPipelineStage,ly as PinBuilder,He as PixelDatatype,et as PixelFormat,mn as Plane,F3 as PlaneGeometry,U3 as PlaneGeometryUpdater,oO as PlaneGraphics,k3 as PlaneOutlineGeometry,KQ as PntsLoader,Gx as PntsParser,x4 as PointCloud,u_ as PointCloudEyeDomeLighting,op as PointCloudShading,hQ as PointCloudStylingPipelineStage,LI as PointGraphics,ha as PointPrimitive,OD as PointPrimitiveCollection,uU as PointVisualizer,o_ as PolygonGeometry,$n as PolygonGeometryLibrary,H3 as PolygonGeometryUpdater,lm as PolygonGraphics,xc as PolygonHierarchy,V3 as PolygonOutlineGeometry,xi as PolygonPipeline,$d as Polyline,GD as PolylineArrowMaterialProperty,Fm as PolylineCollection,bs as PolylineColorAppearance,zD as PolylineDashMaterialProperty,cy as PolylineGeometry,dU as PolylineGeometryUpdater,VD as PolylineGlowMaterialProperty,$c as PolylineGraphics,Za as PolylineMaterialAppearance,TE as PolylineOutlineMaterialProperty,Xi as PolylinePipeline,mU as PolylineVisualizer,W3 as PolylineVolumeGeometry,Gm as PolylineVolumeGeometryLibrary,Y3 as PolylineVolumeGeometryUpdater,OI as PolylineVolumeGraphics,j3 as PolylineVolumeOutlineGeometry,am as PositionProperty,j_ as PositionPropertyArray,So as PostProcessStage,_8 as PostProcessStageCollection,tf as PostProcessStageComposite,yd as PostProcessStageLibrary,_d as PostProcessStageSampleMode,qT as PostProcessStageTextureCache,xF as PpeMetadata,HTe as PpeSource,IF as PpeTexture,kn as Primitive,ou as PrimitiveCollection,hx as PrimitiveLoadPlan,dx as PrimitiveOutlineGenerator,pQ as PrimitiveOutlinePipelineStage,CI as PrimitivePipeline,QQ as PrimitiveRenderResources,qr as PrimitiveState,gQ as PrimitiveStatisticsPipelineStage,Me as PrimitiveType,r5 as ProjectionPicker,i5 as ProjectionPickerViewModel,j as Property,HD as PropertyArray,ux as PropertyAttribute,uF as PropertyAttributeProperty,Ql as PropertyBag,Wl as PropertyTable,c_ as PropertyTexture,lF as PropertyTextureProperty,Fs as ProviderViewModel,Sbe as Proxy,Rl as QuadraticRealPolynomial,Vz as QuadtreeOccluders,Xz as QuadtreePrimitive,Wz as QuadtreeTile,Va as QuadtreeTileLoadState,bTe as QuadtreeTileProvider,mS as QuantizedMeshTerrainData,gM as QuarticRealPolynomial,Le as Quaternion,GF as QuaternionSpline,HC as Queue,In as Ray,ae as Rectangle,tT as RectangleCollisionChecker,jb as RectangleGeometry,da as RectangleGeometryLibrary,q3 as RectangleGeometryUpdater,um as RectangleGraphics,tb as RectangleOutlineGeometry,eo as ReferenceFrame,q_ as ReferenceProperty,Ue as RenderState,Qf as Renderbuffer,Yl as RenderbufferFormat,pr as Request,vA as RequestErrorEvent,Yc as RequestScheduler,hi as RequestState,Us as RequestType,we as Resource,Qi as ResourceCache,Vl as ResourceCacheKey,XO as ResourceCacheStatistics,qi as ResourceLoader,dt as ResourceLoaderState,fh as Rotation,ce as RuntimeError,Hg as S2Cell,Pa as SDFSettings,ic as SampledPositionProperty,ad as SampledProperty,on as Sampler,Fp as ScaledPositionProperty,p4 as Scene,HT as SceneFramebuffer,ie as SceneMode,_Q as SceneMode2DPipelineStage,l5 as SceneModePicker,a5 as SceneModePickerViewModel,to as SceneTransforms,E8 as SceneTransitioner,R8 as ScreenSpaceCameraController,Cd as ScreenSpaceEventHandler,vn as ScreenSpaceEventType,nE as SelectedFeatureIdPipelineStage,h5 as SelectionIndicator,f5 as SelectionIndicatorViewModel,YD as SensorVolumePortionToDisplay,I_ as ShaderBuilder,ZG as ShaderCache,pe as ShaderDestination,wQ as ShaderFunction,ln as ShaderProgram,We as ShaderSource,SQ as ShaderStruct,Oy as ShadowMap,$p as ShadowMapShader,Dn as ShadowMode,xf as ShadowVolumeAppearance,iz as SharedContext,Bn as ShowGeometryInstanceAttribute,$E as Simon1994PlanetaryPositions,wbe as SimplePolylineGeometry,j2 as SingleTileImageryProvider,CQ as SkinningPipelineStage,g4 as SkyAtmosphere,_4 as SkyBox,c4 as SpatialNode,CF as Spdcf,hm as SpecularEnvironmentCubeMap,TTe as SphereEmitter,Bbe as SphereGeometry,L_ as SphereOutlineGeometry,A3 as Spherical,_o as Spline,wr as SplitDirection,kP as Splitter,ph as StaticGeometryColorBatch,_h as StaticGeometryPerMaterialBatch,uv as StaticGroundGeometryColorBatch,oU as StaticGroundGeometryPerMaterialBatch,hU as StaticGroundPolylinePerMaterialBatch,fv as StaticOutlineGeometryBatch,Kt as StencilConstants,Zn as StencilFunction,_t as StencilOperation,UF as SteppedSpline,sl as Stereographic,YC as StorageType,WD as StripeMaterialProperty,Wm as StripeOrientation,Da as StructuralMetadata,Bm as StyleCommandsNeeded,STe as StyleExpression,y4 as Sun,wy as SunLight,L8 as SunPostProcess,pF as SupportedImageFormats,AH as SvgPathBindingHandler,mi as TaskProcessor,uH as Terrain,fA as TerrainData,Il as TerrainEncoding,oP as TerrainFillMesh,Ph as TerrainMesh,kI as TerrainOffsetProperty,Bs as TerrainProvider,za as TerrainQuantization,To as TerrainState,Nt as Texture,Zye as Texture3D,zx as TextureAtlas,$G as TextureCache,pi as TextureMagnificationFilter,o4 as TextureManager,Zt as TextureMinificationFilter,XB as TexturePacker,zTe as TextureUniform,Tn as TextureWrap,CA as TileAvailability,$f as TileBoundingRegion,vk as TileBoundingS2Cell,O_ as TileBoundingSphere,wTe as TileBoundingVolume,fH as TileCoordinatesImageryProvider,BTe as TileDiscardPolicy,Sn as TileEdge,UB as TileImagery,iE as TileMapServiceImageryProvider,bk as TileMetadata,Lu as TileOrientedBoundingBox,zo as TileProviderError,Yz as TileReplacementQueue,ai as TileSelectionResult,DTe as TileState,$Q as Tileset3DTileContent,Nk as TilesetMetadata,qF as TilesetPipelineStage,Dbe as TilingScheme,ri as TimeConstants,Nx as TimeDynamicImagery,GP as TimeDynamicPointCloud,Rn as TimeInterval,hs as TimeIntervalCollection,X_ as TimeIntervalCollectionPositionProperty,J_ as TimeIntervalCollectionProperty,oi as TimeStandard,p5 as Timeline,m5 as TimelineHighlightRange,A5 as TimelineTrack,CM as Tipsify,L0 as ToggleButtonViewModel,Qy as Tonemapper,Tg as TrackingReferenceFrame,kt as Transforms,DC as TranslationRotationScale,HV as TranslucentTileClassification,SB as TridiagonalSystemSolver,zS as TrustedServers,XT as TweenCollection,tz as UniformState,PP as UniformType,vc as UrlTemplateImageryProvider,KAo as VERSION,C5 as VRButton,_5 as VRButtonViewModel,Rbe as VRTheWorldTerrainProvider,VTe as VaryingType,KA as Vector3DTileBatch,pk as Vector3DTileClampedPolylines,_k as Vector3DTileContent,Ug as Vector3DTileGeometry,fk as Vector3DTilePoints,dk as Vector3DTilePolygons,Kx as Vector3DTilePolylines,HI as Vector3DTilePrimitive,g3 as VelocityOrientationProperty,Z_ as VelocityVectorProperty,li as VertexArray,S_ as VertexArrayFacade,ct as VertexAttributeSemantic,Pe as VertexFormat,Yr as VerticalExaggeration,IQ as VerticalExaggerationPipelineStage,Wn as VerticalOrigin,Mbe as VideoSynchronizer,jT as View,RSe as Viewer,vTe as ViewportQuad,Gr as Visibility,fye as Visualizer,nS as VoxelBoxShape,F8 as VoxelCell,tS as VoxelContent,iS as VoxelCylinderShape,oS as VoxelEllipsoidShape,x5 as VoxelInspector,E5 as VoxelInspectorViewModel,kh as VoxelMetadataOrder,E0 as VoxelPrimitive,PTe as VoxelProvider,Z8 as VoxelRenderResources,RTe as VoxelShape,lc as VoxelShapeType,u4 as VoxelTraversal,Nbe as VulkanConstants,X3 as WallGeometry,qb as WallGeometryLibrary,Z3 as WallGeometryUpdater,Pg as WallGraphics,J3 as WallOutlineGeometry,ee as WebGLConstants,q2 as WebMapServiceImageryProvider,K2 as WebMapTileServiceImageryProvider,Yi as WebMercatorProjection,ws as WebMercatorTilingScheme,Gs as WindingOrder,VB as WireframeIndexGenerator,xQ as WireframePipelineStage,$V as _shadersAcesTonemappingStage,M8 as _shadersAdditiveBlend,Jv as _shadersAdjustTranslucentFS,cM as _shadersAllMaterialAppearanceFS,lM as _shadersAllMaterialAppearanceVS,e8 as _shadersAmbientOcclusionGenerate,t8 as _shadersAmbientOcclusionModulate,LM as _shadersAspectRampMaterial,bm as _shadersAtmosphereCommon,KF as _shadersAtmosphereStageFS,XF as _shadersAtmosphereStageVS,uM as _shadersBasicMaterialAppearanceFS,fM as _shadersBasicMaterialAppearanceVS,ek as _shadersBillboardCollectionFS,tk as _shadersBillboardCollectionVS,n8 as _shadersBlackAndWhite,i8 as _shadersBloomComposite,rz as _shadersBrdfLutGeneratorFS,N8 as _shadersBrightPass,o8 as _shadersBrightness,OM as _shadersBumpMapMaterial,I2 as _shadersCPUStylingStageFS,E2 as _shadersCPUStylingStageVS,FM as _shadersCheckerboardMaterial,sz as _shadersCloudCollectionFS,az as _shadersCloudCollectionVS,cz as _shadersCloudNoiseFS,lz as _shadersCloudNoiseVS,uz as _shadersCompareAndPackTranslucentDepth,fz as _shadersCompositeOITFS,WT as _shadersCompositeTranslucentClassification,rF as _shadersComputeIrradianceFS,sF as _shadersComputeRadianceMapFS,r8 as _shadersContrastBias,aF as _shadersConvolveSpecularMapFS,cF as _shadersConvolveSpecularMapVS,T2 as _shadersCustomShaderStageFS,b2 as _shadersCustomShaderStageVS,_I as _shadersCzmBuiltins,s8 as _shadersDepthOfField,dz as _shadersDepthPlaneFS,hz as _shadersDepthPlaneVS,a8 as _shadersDepthView,GTe as _shadersDepthViewPacked,QM as _shadersDotMaterial,c8 as _shadersEdgeDetection,kM as _shadersElevationBandMaterial,UM as _shadersElevationContourMaterial,GM as _shadersElevationRampMaterial,Zv as _shadersEllipsoidFS,q4 as _shadersEllipsoidSurfaceAppearanceFS,K4 as _shadersEllipsoidSurfaceAppearanceVS,$v as _shadersEllipsoidVS,f8 as _shadersFXAA,mz as _shadersFXAA3_11,zM as _shadersFadeMaterial,S2 as _shadersFeatureIdStageFS,w2 as _shadersFeatureIdStageVS,l8 as _shadersFilmicTonemapping,u0 as _shadersGaussianBlur1D,R2 as _shadersGeometryStageFS,M2 as _shadersGeometryStageVS,Az as _shadersGlobeFS,pz as _shadersGlobeVS,VM as _shadersGridMaterial,eP as _shadersGroundAtmosphere,oN as _shadersHSBToRGB,rN as _shadersHSLToRGB,ZF as _shadersImageBasedLightingStageFS,u2 as _shadersInstancingStageCommon,f2 as _shadersInstancingStageVS,H8 as _shadersIntersectBox,V8 as _shadersIntersectClippingPlanes,W8 as _shadersIntersectCylinder,z8 as _shadersIntersectDepth,j8 as _shadersIntersectEllipsoid,vP as _shadersIntersectLongitude,ZT as _shadersIntersection,G8 as _shadersIntersectionUtils,d2 as _shadersLegacyInstancingStageVS,d8 as _shadersLensFlare,rQ as _shadersLightingStageFS,aQ as _shadersMaterialStageFS,J8 as _shadersMegatexture,B2 as _shadersMetadataStageFS,D2 as _shadersMetadataStageVS,o2 as _shadersModelClippingPlanesStageFS,a2 as _shadersModelClippingPolygonsStageFS,s2 as _shadersModelClippingPolygonsStageVS,i2 as _shadersModelColorStageFS,VQ as _shadersModelFS,DQ as _shadersModelSilhouetteStageFS,vQ as _shadersModelSilhouetteStageVS,MQ as _shadersModelSplitterStageFS,zQ as _shadersModelVS,h8 as _shadersModifiedReinhardTonemapping,lQ as _shadersMorphTargetsStageVS,m8 as _shadersNightVision,HM as _shadersNormalMapMaterial,X8 as _shadersOctree,ef as _shadersPassThrough,a0 as _shadersPassThroughDepth,u8 as _shadersPbrNeutralTonemapping,e1 as _shadersPerInstanceColorAppearanceFS,t1 as _shadersPerInstanceColorAppearanceVS,pI as _shadersPerInstanceFlatColorAppearanceFS,n1 as _shadersPerInstanceFlatColorAppearanceVS,DF as _shadersPointCloudEyeDomeLighting,dQ as _shadersPointCloudStylingStageVS,IE as _shadersPointPrimitiveCollectionFS,s3 as _shadersPointPrimitiveCollectionVS,oF as _shadersPolygonSignedDistanceFS,WM as _shadersPolylineArrowMaterial,nO as _shadersPolylineColorAppearanceVS,bf as _shadersPolylineCommon,jM as _shadersPolylineDashMaterial,TI as _shadersPolylineFS,YM as _shadersPolylineGlowMaterial,iO as _shadersPolylineMaterialAppearanceVS,qM as _shadersPolylineOutlineMaterial,ZL as _shadersPolylineShadowVolumeFS,$L as _shadersPolylineShadowVolumeMorphFS,eO as _shadersPolylineShadowVolumeMorphVS,tO as _shadersPolylineShadowVolumeVS,sk as _shadersPolylineVS,Ik as _shadersPrimitiveGaussianSplatFS,Ek as _shadersPrimitiveGaussianSplatVS,AQ as _shadersPrimitiveOutlineStageFS,mQ as _shadersPrimitiveOutlineStageVS,sN as _shadersRGBToHSB,aN as _shadersRGBToHSL,cN as _shadersRGBToXYZ,A8 as _shadersReinhardTonemapping,J2 as _shadersReprojectWebMercatorFS,Z2 as _shadersReprojectWebMercatorVS,KM as _shadersRimLightingMaterial,vB as _shadersSelectedFeatureIdStageCommon,fw as _shadersShadowVolumeAppearanceFS,GL as _shadersShadowVolumeAppearanceVS,IC as _shadersShadowVolumeFS,p8 as _shadersSilhouette,yQ as _shadersSkinningStageVS,tP as _shadersSkyAtmosphereCommon,gz as _shadersSkyAtmosphereFS,_z as _shadersSkyAtmosphereVS,yz as _shadersSkyBoxFS,Cz as _shadersSkyBoxVS,XM as _shadersSlopeRampMaterial,JM as _shadersStripeMaterial,Ez as _shadersSunFS,Iz as _shadersSunTextureFS,xz as _shadersSunVS,dM as _shadersTexturedMaterialAppearanceFS,hM as _shadersTexturedMaterialAppearanceVS,Ak as _shadersVector3DTileClampedPolylinesFS,mk as _shadersVector3DTileClampedPolylinesVS,hk as _shadersVector3DTilePolylinesVS,Vw as _shadersVectorTileVS,EQ as _shadersVerticalExaggerationStageVS,bz as _shadersViewportQuadFS,wT as _shadersViewportQuadVS,k8 as _shadersVoxelFS,Q8 as _shadersVoxelUtils,U8 as _shadersVoxelVS,$M as _shadersWater,ZM as _shadersWaterMaskMaterial,lN as _shadersXYZToRGB,uN as _shadersacesTonemapping,fN as _shadersalphaWeight,dN as _shadersantialias,hN as _shadersapplyHSBShift,mN as _shadersapproximateSphericalCoordinates,AN as _shadersapproximateTanh,pN as _shadersbackFacing,gN as _shadersbranchFreeTernary,_N as _shaderscascadeColor,yN as _shaderscascadeDistance,CN as _shaderscascadeMatrix,EN as _shaderscascadeWeights,IN as _shadersclipPolygons,xN as _shaderscolumbusViewMorph,bN as _shaderscomputeAtmosphereColor,TN as _shaderscomputeGroundAtmosphereScattering,SN as _shaderscomputePosition,wN as _shaderscomputeScattering,Y8 as _shadersconvertUvToBox,q8 as _shadersconvertUvToCylinder,K8 as _shadersconvertUvToEllipsoid,BN as _shaderscosineAndSine,DN as _shadersdecompressTextureCoordinates,f1 as _shadersdegreesPerRadian,vN as _shadersdepthClamp,d1 as _shadersdepthRange,X1 as _shadersdepthRangeStruct,PN as _shaderseastNorthUpToEyeCoordinates,RN as _shadersellipsoidContainsPoint,MN as _shadersellipsoidTextureCoordinates,h1 as _shadersepsilon1,m1 as _shadersepsilon2,A1 as _shadersepsilon3,p1 as _shadersepsilon4,g1 as _shadersepsilon5,_1 as _shadersepsilon6,y1 as _shadersepsilon7,NN as _shadersequalsEpsilon,LN as _shaderseyeOffset,ON as _shaderseyeToWindowCoordinates,FN as _shadersfastApproximateAtan,QN as _shadersfog,kN as _shadersgammaCorrect,UN as _shadersgeodeticSurfaceNormal,GN as _shadersgetDefaultMaterial,zN as _shadersgetDynamicAtmosphereLightDirection,VN as _shadersgetLambertDiffuse,HN as _shadersgetSpecular,WN as _shadersgetWaterNoise,jN as _shadershue,C1 as _shadersinfinity,YN as _shadersinverseGamma,qN as _shadersisEmpty,KN as _shadersisFull,XN as _shaderslatitudeToWebMercatorFraction,JN as _shaderslineDistance,ZN as _shaderslinearToSrgb,$N as _shadersluminance,J1 as _shadersmaterial,Z1 as _shadersmaterialInput,eL as _shadersmaximumComponent,tL as _shadersmetersPerPixel,$1 as _shadersmodelMaterial,nL as _shadersmodelToWindowCoordinates,eN as _shadersmodelVertexOutput,iL as _shadersmultiplyWithColorBalance,oL as _shadersnearFarScalar,rL as _shadersoctDecode,E1 as _shadersoneOverPi,I1 as _shadersoneOverTwoPi,sL as _shaderspackDepth,x1 as _shaderspassCesium3DTile,b1 as _shaderspassCesium3DTileClassification,T1 as _shaderspassCesium3DTileClassificationIgnoreShow,S1 as _shaderspassClassification,w1 as _shaderspassCompute,B1 as _shaderspassEnvironment,D1 as _shaderspassGaussianSplats,v1 as _shaderspassGlobe,P1 as _shaderspassOpaque,R1 as _shaderspassOverlay,M1 as _shaderspassTerrainClassification,N1 as _shaderspassTranslucent,L1 as _shaderspassVoxels,aL as _shaderspbrLighting,cL as _shaderspbrNeutralTonemapping,lL as _shadersphong,O1 as _shaderspi,F1 as _shaderspiOverFour,Q1 as _shaderspiOverSix,k1 as _shaderspiOverThree,U1 as _shaderspiOverTwo,uL as _shadersplaneDistance,fL as _shaderspointAlongRay,G1 as _shadersradiansPerDegree,tN as _shadersray,dL as _shadersrayEllipsoidIntersectionInterval,nN as _shadersraySegment,hL as _shadersraySphereIntersectionInterval,mL as _shadersreadDepth,AL as _shadersreadNonPerspective,pL as _shadersreverseLogDepth,gL as _shadersround,_L as _shaderssaturation,z1 as _shaderssceneMode2D,V1 as _shaderssceneMode3D,H1 as _shaderssceneModeColumbusView,W1 as _shaderssceneModeMorphing,yL as _shadersshadowDepthCompare,iN as _shadersshadowParameters,CL as _shadersshadowVisibility,EL as _shaderssignNotZero,j1 as _shaderssolarRadius,IL as _shaderssphericalHarmonics,xL as _shaderssrgbToLinear,bL as _shaderstangentToEyeSpaceMatrix,TL as _shaderstextureCube,Y1 as _shadersthreePiOver2,SL as _shaderstransformPlane,wL as _shaderstranslateRelativeToEye,BL as _shaderstranslucentPhong,DL as _shaderstranspose,q1 as _shaderstwoPi,vL as _shadersunpackClippingExtents,PL as _shadersunpackDepth,RL as _shadersunpackFloat,ML as _shadersunpackUint,NL as _shadersvalueTransform,LL as _shadersvertexLogDepth,K1 as _shaderswebMercatorMaxLatitude,OL as _shaderswindowToEyeCoordinates,FL as _shaderswriteDepthClamp,QL as _shaderswriteLogDepth,kL as _shaderswriteNonPerspective,si as addAllToArray,OO as addBuffer,SO as addDefaults,MO as addExtensionsRequired,Yd as addExtensionsUsed,kC as addPipelineExtras,aa as addToArray,RR as appendForwardSlash,No as arrayRemoveDuplicates,uI as barycentricCoordinates,qo as binarySearch,fn as buildModuleUrl,t4 as buildVoxelDrawCommands,ze as clone,wt as combine,RT as computeFlyToLocationForRectangle,Hx as createBillboardPointCallback,Mn as createCommand,SH as createDefaultImageryProviderViewModels,wH as createDefaultTerrainProviderViewModels,OTe as createElevationBandMaterial,QTe as createGooglePhotorealistic3DTileset,Xn as createGuid,Xo as createMaterialPropertyDescriptor,kTe as createOsmBuildingsAsync,de as createPropertyDescriptor,Fl as createRawPropertyDescriptor,UTe as createTangentSpaceDebugPrimitive,WTe as createTaskProcessorWorker,c1 as createUniform,l1 as createUniformArray,k4 as createWorldBathymetryAsync,E_ as createWorldImageryAsync,IS as createWorldTerrainAsync,U4 as decodeGoogleEarthEnterpriseData,gk as decodeVectorPolylinePositions,Obe as defaultValue,yu as defer,l as defined,UL as demodernizeShader,Pr as deprecationWarning,ue as destroyObject,Eye as exportKml,KI as findAccessorMinMax,Jx as findContentMetadata,Zx as findGroupMetadata,Tk as findTileMetadata,$w as forEachTextureInMaterial,up as formatError,Wte as freezeRenderState,DA as getAbsoluteUri,Bu as getAccessorByteStride,MR as getBaseUri,vf as getBinaryAccessor,C4 as getClipAndStyleCode,Dy as getClippingFunction,Kg as getComponentReader,Gn as getElement,j0 as getExtensionFromUri,W_ as getFilenameFromUri,n4 as getImageFromTypedArray,qh as getImagePixels,yr as getJsonFromTypedArray,gm as getMagic,f4 as getMetadataClassProperty,h4 as getMetadataProperty,Tu as getStringFromTypedArray,Oi as getTimestamp,Ii as hasExtension,Rg as heightReferenceOnEntityPropertyChanged,Tl as isBitSet,Y0 as isBlobUri,aC as isCrossOriginUrl,mg as isDataUri,Yh as isLeapYear,xe as knockout,PS as knockout_3_5_1,mH as knockout_es5,q0 as loadAndExecuteScript,oz as loadCubeMap,YI as loadImageFromTypedArray,Iu as loadKTX2,qp as mergeSort,RO as moveTechniqueRenderStates,NO as moveTechniquesToExtension,Rf as numberOfComponentsForType,K0 as objectToQuery,yt as oneTimeWarning,f_ as parseBatchTable,dF as parseFeatureMetadataLegacy,DO as parseGlb,LR as parseResponseHeaders,fF as parseStructuralMetadata,jB as pickModel,Fbe as pointInsideTriangle,R_ as preprocess3DTileContent,e4 as processVoxelProperties,Af as queryToObject,FO as readAccessorPacked,XI as removeExtension,BO as removeExtensionsRequired,qI as removeExtensionsUsed,PO as removePipelineExtras,LO as removeUnusedElements,GC as resizeImageToNextPowerOfTwo,Tz as sampleTerrain,PT as sampleTerrainMostDetailed,z0 as scaleToGeodeticSurface,xS as srgbToLinear,zL as subdivideArray,fc as subscribeAndEvaluate,kO as updateAccessorComponentTypes,GO as updateVersion,Rr as usesExtension,MSe as viewerCesium3DTilesInspectorMixin,NSe as viewerCesiumInspectorMixin,OSe as viewerDragDropMixin,FSe as viewerPerformanceWatchdogMixin,kSe as viewerVoxelInspectorMixin,Qbe as webGLConstantToGlslType,G4 as wrapFunction,jx as writeTextToCanvas}; diff --git a/public/models/dam/license.txt b/public/models/dam/license.txt new file mode 100644 index 000000000..09c075d18 --- /dev/null +++ b/public/models/dam/license.txt @@ -0,0 +1,11 @@ +Model Information: +* title: El Pontón de la Oliva | PATONES, MADRID +* source: https://sketchfab.com/3d-models/el-ponton-de-la-oliva-patones-madrid-eb3cb2b70a8d439aa8abf598989315c3 +* author: Arqueomodel3D (https://sketchfab.com/juanbrualla) + +Model License: +* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) +* requirements: Author must be credited. Commercial use is allowed. + +If you use this 3D model in your project be sure to copy paste this credit wherever you share it: +This work is based on "El Pontón de la Oliva | PATONES, MADRID" (https://sketchfab.com/3d-models/el-ponton-de-la-oliva-patones-madrid-eb3cb2b70a8d439aa8abf598989315c3) by Arqueomodel3D (https://sketchfab.com/juanbrualla) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/public/models/dam/scene.bin b/public/models/dam/scene.bin new file mode 100644 index 000000000..d4c3d50e4 Binary files /dev/null and b/public/models/dam/scene.bin differ diff --git a/public/models/dam/scene.gltf b/public/models/dam/scene.gltf new file mode 100644 index 000000000..d6c73043f --- /dev/null +++ b/public/models/dam/scene.gltf @@ -0,0 +1,1178 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 65532, + "max": [ + 7.228588104248047, + 2.396691083908081, + 7.609867095947266 + ], + "min": [ + -4.782299041748047, + -3.659363031387329, + -6.167201995849609 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 786384, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999881386756897, + 0.9999984502792358, + 0.9999969005584717 + ], + "min": [ + -0.9999757409095764, + -0.9999995231628418, + -1.0 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9995819926261902, + 0.9999489784240723 + ], + "min": [ + 0.0005879999953322113, + 0.0005489999894052744 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 351609, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 1572768, + "componentType": 5126, + "count": 65532, + "max": [ + 5.5598859786987305, + 1.697877049446106, + 1.4050649404525757 + ], + "min": [ + -0.8243420124053955, + -0.6033750176429749, + -6.2631731033325195 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 2359152, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9997668862342834, + 0.9998711347579956, + 0.9999791383743286 + ], + "min": [ + -0.9999803304672241, + -0.9999992251396179, + -0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 524256, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9992820024490356, + 1.0 + ], + "min": [ + 0.0005709999823011458, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 1406436, + "componentType": 5125, + "count": 350400, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 3145536, + "componentType": 5126, + "count": 65532, + "max": [ + 8.76727294921875, + 1.6879830360412598, + 8.209447860717773 + ], + "min": [ + -2.1708641052246094, + -3.4628450870513916, + -3.1766650676727295 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 3931920, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999905228614807, + 0.9973353743553162, + 0.9999971389770508 + ], + "min": [ + -1.0, + -0.9999983310699463, + -0.9999632239341736 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 1048512, + "componentType": 5126, + "count": 65532, + "max": [ + 0.951587975025177, + 0.9994109869003296 + ], + "min": [ + 0.07398699969053268, + 0.0007130000158213079 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 2808036, + "componentType": 5125, + "count": 349677, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 4718304, + "componentType": 5126, + "count": 65532, + "max": [ + 7.611456871032715, + 2.396691083908081, + 7.994133949279785 + ], + "min": [ + -3.163243055343628, + -1.5143589973449707, + -4.516446113586426 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 5504688, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999498724937439, + 0.9999886155128479, + 0.9999978542327881 + ], + "min": [ + -0.9999684691429138, + -1.0, + -0.9999997615814209 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 1572768, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9995139837265015, + 0.9999169707298279 + ], + "min": [ + 0.0, + 0.0001429999974789098 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 4206744, + "componentType": 5125, + "count": 343413, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 6291072, + "componentType": 5126, + "count": 65532, + "max": [ + 2.1048738956451416, + 1.6362370252609253, + 8.012207984924316 + ], + "min": [ + -6.12764310836792, + -1.5727620124816895, + 1.3507009744644165 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 7077456, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999962449073792, + 0.9998409748077393, + 0.9999837875366211 + ], + "min": [ + -0.9999193549156189, + -0.9999967813491821, + -0.9999938607215881 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 2097024, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9991509914398193, + 0.9997580051422119 + ], + "min": [ + 0.0005070000188425183, + 0.0005559999844990671 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 5580396, + "componentType": 5125, + "count": 339954, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 7863840, + "componentType": 5126, + "count": 65532, + "max": [ + 2.6502509117126465, + 1.6362370252609253, + 7.877142906188965 + ], + "min": [ + -7.352717876434326, + -3.6342859268188477, + 1.4288300275802612 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 8650224, + "componentType": 5126, + "count": 65532, + "max": [ + 0.999995768070221, + 0.9999988675117493, + 0.9999202489852905 + ], + "min": [ + -0.9999966621398926, + -0.9999986290931702, + -0.9999309778213501 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 2621280, + "componentType": 5126, + "count": 65532, + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.00045900000259280205, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 6940212, + "componentType": 5125, + "count": 332151, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 9436608, + "componentType": 5126, + "count": 65532, + "max": [ + 2.2556679248809814, + 2.33524489402771, + 7.175140857696533 + ], + "min": [ + -7.535966873168945, + -3.401179075241089, + -6.286098003387451 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 10222992, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999972581863403, + 0.9999823570251465, + 0.9999995231628418 + ], + "min": [ + -0.9998458623886108, + -0.9999980926513672, + -0.9999995231628418 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 3145536, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9994009733200073, + 0.9997779726982117 + ], + "min": [ + 0.000514000013936311, + 0.00044299999717622995 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 8268816, + "componentType": 5125, + "count": 330759, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 11009376, + "componentType": 5126, + "count": 65532, + "max": [ + 0.44926801323890686, + 1.761849045753479, + -0.576960027217865 + ], + "min": [ + -5.3822150230407715, + -1.451185941696167, + -6.1891770362854 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 11795760, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999989867210388, + 0.999997615814209, + 0.9999439716339111 + ], + "min": [ + -0.9995949864387512, + -0.9999989867210388, + -0.9999986290931702 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 3669792, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9993810057640076, + 0.9995290040969849 + ], + "min": [ + 0.0005089999758638442, + 0.000446999998530373 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 9591852, + "componentType": 5125, + "count": 338880, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 12582144, + "componentType": 5126, + "count": 65532, + "max": [ + 5.489595890045166, + 1.6774729490280151, + 3.4012489318847656 + ], + "min": [ + -7.078560829162598, + -2.8832099437713623, + -6.1722187995910645 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 13368528, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999984502792358, + 0.9999983310699463, + 0.9999035000801086 + ], + "min": [ + -0.9999775290489197, + -0.9999983310699463, + -0.9999998807907104 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 4194048, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9995099902153015, + 1.0 + ], + "min": [ + 0.0005039999959990382, + 0.00040600000647827983 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 10947372, + "componentType": 5125, + "count": 297705, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 14154912, + "componentType": 5126, + "count": 65532, + "max": [ + 8.7686767578125, + 1.6917630434036255, + 7.016080856323242 + ], + "min": [ + -7.340764045715332, + -3.636810064315796, + -3.7149651050567627 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 14941296, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999998807907104, + 0.9999969005584717, + 0.9999971389770508 + ], + "min": [ + -0.9999996423721313, + -0.999999463558197, + -0.999987006187439 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 4718304, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9995250105857849, + 1.0 + ], + "min": [ + 0.0004180000105407089, + 0.00034500000765547156 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 12138192, + "componentType": 5125, + "count": 315075, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 15727680, + "componentType": 5126, + "count": 65532, + "max": [ + -1.4035530090332031, + 1.4025880098342896, + 7.977602005004883 + ], + "min": [ + -7.538508892059326, + -3.6379239559173584, + -6.172128200531006 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 16514064, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999960064888, + 0.9999986290931702, + 0.9999996423721313 + ], + "min": [ + -0.9999709725379944, + -0.9999969005584717, + -0.9999996423721313 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 5242560, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9998160004615784, + 0.9999809861183167 + ], + "min": [ + 0.00011700000322889537, + 0.0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 13398492, + "componentType": 5125, + "count": 289467, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 17300448, + "componentType": 5126, + "count": 65532, + "max": [ + 1.9054700136184692, + 2.410862922668457, + 4.684869766235352 + ], + "min": [ + -6.900275230407715, + -2.871273994445801, + -6.330479145050049 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 18086832, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999984502792358, + 0.9997667670249939, + 0.999974250793457 + ], + "min": [ + -0.9997938871383667, + -0.9999954700469971, + -0.9999998807907104 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 5766816, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9994490146636963, + 1.0 + ], + "min": [ + 0.0, + 3.7999998312443495e-05 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 14556360, + "componentType": 5125, + "count": 279339, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 18873216, + "componentType": 5126, + "count": 65532, + "max": [ + 4.196692943572998, + 2.1428310871124268, + 8.11807632446289 + ], + "min": [ + -5.7700300216674805, + -0.611981987953186, + -1.4684109687805176 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 19659600, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9999961256980896, + 0.9999984502792358, + 0.9999971389770508 + ], + "min": [ + -0.9999961256980896, + -0.9999996423721313, + -0.9999972581863403 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 6291072, + "componentType": 5126, + "count": 65532, + "max": [ + 0.9995700120925903, + 0.9999520182609558 + ], + "min": [ + 1.700000029813964e-05, + 0.00011100000119768083 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 15673716, + "componentType": 5125, + "count": 299742, + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 20445984, + "componentType": 5126, + "count": 63875, + "max": [ + 8.716240882873535, + 0.9815379977226257, + 8.043383598327637 + ], + "min": [ + -2.2740559577941895, + -3.659363031387329, + -4.552610874176025 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 21212484, + "componentType": 5126, + "count": 63875, + "max": [ + 0.9999963641166687, + 0.9999983310699463, + 0.9999978542327881 + ], + "min": [ + -0.9999969005584717, + -0.9999983310699463, + -0.9999971389770508 + ], + "type": "VEC3" + }, + { + "bufferView": 1, + "byteOffset": 6815328, + "componentType": 5126, + "count": 63875, + "max": [ + 0.999002993106842, + 0.9999430179595947 + ], + "min": [ + 0.00021699999342672527, + 0.0005339999916031957 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 16872684, + "componentType": 5125, + "count": 289122, + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "Arqueomodel3D (https://sketchfab.com/juanbrualla)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/el-ponton-de-la-oliva-patones-madrid-eb3cb2b70a8d439aa8abf598989315c3", + "title": "El Pontón de la Oliva | PATONES, MADRID" + }, + "generator": "Sketchfab-14.20.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 18029172, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 7326328, + "byteOffset": 18029172, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 21978984, + "byteOffset": 25355500, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 47334484, + "uri": "scene.bin" + } + ], + "images": [ + { + "uri": "textures/PONTON_OLIVA.1001_baseColor.jpeg" + } + ], + "materials": [ + { + "doubleSided": true, + "name": "PONTON_OLIVA.1001", + "pbrMetallicRoughness": { + "baseColorTexture": { + "index": 0 + }, + "metallicFactor": 0.0 + } + } + ], + "meshes": [ + { + "name": "Object_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 2 + }, + "indices": 3, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_1", + "primitives": [ + { + "attributes": { + "NORMAL": 5, + "POSITION": 4, + "TEXCOORD_0": 6 + }, + "indices": 7, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_2", + "primitives": [ + { + "attributes": { + "NORMAL": 9, + "POSITION": 8, + "TEXCOORD_0": 10 + }, + "indices": 11, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_3", + "primitives": [ + { + "attributes": { + "NORMAL": 13, + "POSITION": 12, + "TEXCOORD_0": 14 + }, + "indices": 15, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_4", + "primitives": [ + { + "attributes": { + "NORMAL": 17, + "POSITION": 16, + "TEXCOORD_0": 18 + }, + "indices": 19, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_5", + "primitives": [ + { + "attributes": { + "NORMAL": 21, + "POSITION": 20, + "TEXCOORD_0": 22 + }, + "indices": 23, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_6", + "primitives": [ + { + "attributes": { + "NORMAL": 25, + "POSITION": 24, + "TEXCOORD_0": 26 + }, + "indices": 27, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_7", + "primitives": [ + { + "attributes": { + "NORMAL": 29, + "POSITION": 28, + "TEXCOORD_0": 30 + }, + "indices": 31, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_8", + "primitives": [ + { + "attributes": { + "NORMAL": 33, + "POSITION": 32, + "TEXCOORD_0": 34 + }, + "indices": 35, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_9", + "primitives": [ + { + "attributes": { + "NORMAL": 37, + "POSITION": 36, + "TEXCOORD_0": 38 + }, + "indices": 39, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_10", + "primitives": [ + { + "attributes": { + "NORMAL": 41, + "POSITION": 40, + "TEXCOORD_0": 42 + }, + "indices": 43, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_11", + "primitives": [ + { + "attributes": { + "NORMAL": 45, + "POSITION": 44, + "TEXCOORD_0": 46 + }, + "indices": 47, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_12", + "primitives": [ + { + "attributes": { + "NORMAL": 49, + "POSITION": 48, + "TEXCOORD_0": 50 + }, + "indices": 51, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "Object_13", + "primitives": [ + { + "attributes": { + "NORMAL": 53, + "POSITION": 52, + "TEXCOORD_0": 54 + }, + "indices": 55, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "matrix": [ + 0.9998416900634766, + 0.017383158206939697, + 0.0037915932480245868, + 0.0, + 0.017549198120832443, + -0.998627245426178, + -0.049352873116731866, + 0.0, + 0.0029284795746207237, + 0.04941160231828712, + -0.9987742304801941, + 0.0, + 0.0, + 0.0, + 0.0, + 1.0 + ], + "name": "Sketchfab_model" + }, + { + "children": [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "name": "PONTON_OLIVA.obj.cleaner.materialmerger.gles" + }, + { + "mesh": 0, + "name": "Object_2" + }, + { + "mesh": 1, + "name": "Object_3" + }, + { + "mesh": 2, + "name": "Object_4" + }, + { + "mesh": 3, + "name": "Object_5" + }, + { + "mesh": 4, + "name": "Object_6" + }, + { + "mesh": 5, + "name": "Object_7" + }, + { + "mesh": 6, + "name": "Object_8" + }, + { + "mesh": 7, + "name": "Object_9" + }, + { + "mesh": 8, + "name": "Object_10" + }, + { + "mesh": 9, + "name": "Object_11" + }, + { + "mesh": 10, + "name": "Object_12" + }, + { + "mesh": 11, + "name": "Object_13" + }, + { + "mesh": 12, + "name": "Object_14" + }, + { + "mesh": 13, + "name": "Object_15" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "Sketchfab_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} diff --git a/public/models/dam/textures/PONTON_OLIVA.1001_baseColor.jpeg b/public/models/dam/textures/PONTON_OLIVA.1001_baseColor.jpeg new file mode 100644 index 000000000..9d84f2fdc Binary files /dev/null and b/public/models/dam/textures/PONTON_OLIVA.1001_baseColor.jpeg differ diff --git a/public/models/waternormals.jpg b/public/models/waternormals.jpg new file mode 100644 index 000000000..9dfe03ce4 Binary files /dev/null and b/public/models/waternormals.jpg differ diff --git a/public/terrain/0/0/0.terrain b/public/terrain/0/0/0.terrain new file mode 100644 index 000000000..d069b03ff Binary files /dev/null and b/public/terrain/0/0/0.terrain differ diff --git a/public/terrain/0/1/0.terrain b/public/terrain/0/1/0.terrain new file mode 100644 index 000000000..6b36e9585 Binary files /dev/null and b/public/terrain/0/1/0.terrain differ diff --git a/public/terrain/1/3/1.terrain b/public/terrain/1/3/1.terrain new file mode 100644 index 000000000..ec5e9311c Binary files /dev/null and b/public/terrain/1/3/1.terrain differ diff --git a/public/terrain/10/1676/690.terrain b/public/terrain/10/1676/690.terrain new file mode 100644 index 000000000..1abefbd36 Binary files /dev/null and b/public/terrain/10/1676/690.terrain differ diff --git a/public/terrain/10/1676/691.terrain b/public/terrain/10/1676/691.terrain new file mode 100644 index 000000000..1e61263da Binary files /dev/null and b/public/terrain/10/1676/691.terrain differ diff --git a/public/terrain/11/3353/1381.terrain b/public/terrain/11/3353/1381.terrain new file mode 100644 index 000000000..f9cd3f02f Binary files /dev/null and b/public/terrain/11/3353/1381.terrain differ diff --git a/public/terrain/11/3353/1382.terrain b/public/terrain/11/3353/1382.terrain new file mode 100644 index 000000000..bdff02be9 Binary files /dev/null and b/public/terrain/11/3353/1382.terrain differ diff --git a/public/terrain/11/3353/1383.terrain b/public/terrain/11/3353/1383.terrain new file mode 100644 index 000000000..1e2996cfd Binary files /dev/null and b/public/terrain/11/3353/1383.terrain differ diff --git a/public/terrain/12/6706/2763.terrain b/public/terrain/12/6706/2763.terrain new file mode 100644 index 000000000..ee0404057 Binary files /dev/null and b/public/terrain/12/6706/2763.terrain differ diff --git a/public/terrain/12/6706/2764.terrain b/public/terrain/12/6706/2764.terrain new file mode 100644 index 000000000..a5dbb1bdf Binary files /dev/null and b/public/terrain/12/6706/2764.terrain differ diff --git a/public/terrain/12/6706/2765.terrain b/public/terrain/12/6706/2765.terrain new file mode 100644 index 000000000..9753e4eac Binary files /dev/null and b/public/terrain/12/6706/2765.terrain differ diff --git a/public/terrain/12/6706/2766.terrain b/public/terrain/12/6706/2766.terrain new file mode 100644 index 000000000..cb3a5c215 Binary files /dev/null and b/public/terrain/12/6706/2766.terrain differ diff --git a/public/terrain/12/6707/2763.terrain b/public/terrain/12/6707/2763.terrain new file mode 100644 index 000000000..2f3e2cfea Binary files /dev/null and b/public/terrain/12/6707/2763.terrain differ diff --git a/public/terrain/12/6707/2764.terrain b/public/terrain/12/6707/2764.terrain new file mode 100644 index 000000000..97467b3b6 Binary files /dev/null and b/public/terrain/12/6707/2764.terrain differ diff --git a/public/terrain/12/6707/2765.terrain b/public/terrain/12/6707/2765.terrain new file mode 100644 index 000000000..51f5f6f7e Binary files /dev/null and b/public/terrain/12/6707/2765.terrain differ diff --git a/public/terrain/12/6707/2766.terrain b/public/terrain/12/6707/2766.terrain new file mode 100644 index 000000000..a6e51029d Binary files /dev/null and b/public/terrain/12/6707/2766.terrain differ diff --git a/public/terrain/13/13413/5527.terrain b/public/terrain/13/13413/5527.terrain new file mode 100644 index 000000000..23cbbe531 Binary files /dev/null and b/public/terrain/13/13413/5527.terrain differ diff --git a/public/terrain/13/13413/5528.terrain b/public/terrain/13/13413/5528.terrain new file mode 100644 index 000000000..609f3b062 Binary files /dev/null and b/public/terrain/13/13413/5528.terrain differ diff --git a/public/terrain/13/13413/5529.terrain b/public/terrain/13/13413/5529.terrain new file mode 100644 index 000000000..66ca40435 Binary files /dev/null and b/public/terrain/13/13413/5529.terrain differ diff --git a/public/terrain/13/13413/5530.terrain b/public/terrain/13/13413/5530.terrain new file mode 100644 index 000000000..e70a802c2 Binary files /dev/null and b/public/terrain/13/13413/5530.terrain differ diff --git a/public/terrain/13/13413/5531.terrain b/public/terrain/13/13413/5531.terrain new file mode 100644 index 000000000..b2ecbf023 Binary files /dev/null and b/public/terrain/13/13413/5531.terrain differ diff --git a/public/terrain/13/13413/5532.terrain b/public/terrain/13/13413/5532.terrain new file mode 100644 index 000000000..3faf06cfc Binary files /dev/null and b/public/terrain/13/13413/5532.terrain differ diff --git a/public/terrain/13/13414/5527.terrain b/public/terrain/13/13414/5527.terrain new file mode 100644 index 000000000..77d994eea Binary files /dev/null and b/public/terrain/13/13414/5527.terrain differ diff --git a/public/terrain/13/13414/5528.terrain b/public/terrain/13/13414/5528.terrain new file mode 100644 index 000000000..0c054502b Binary files /dev/null and b/public/terrain/13/13414/5528.terrain differ diff --git a/public/terrain/13/13414/5529.terrain b/public/terrain/13/13414/5529.terrain new file mode 100644 index 000000000..c3e200e1f Binary files /dev/null and b/public/terrain/13/13414/5529.terrain differ diff --git a/public/terrain/13/13414/5530.terrain b/public/terrain/13/13414/5530.terrain new file mode 100644 index 000000000..304ac7c87 Binary files /dev/null and b/public/terrain/13/13414/5530.terrain differ diff --git a/public/terrain/13/13414/5531.terrain b/public/terrain/13/13414/5531.terrain new file mode 100644 index 000000000..e8126910c Binary files /dev/null and b/public/terrain/13/13414/5531.terrain differ diff --git a/public/terrain/13/13414/5532.terrain b/public/terrain/13/13414/5532.terrain new file mode 100644 index 000000000..8b931bed1 Binary files /dev/null and b/public/terrain/13/13414/5532.terrain differ diff --git a/public/terrain/13/13415/5527.terrain b/public/terrain/13/13415/5527.terrain new file mode 100644 index 000000000..f8f9ac1fd Binary files /dev/null and b/public/terrain/13/13415/5527.terrain differ diff --git a/public/terrain/13/13415/5528.terrain b/public/terrain/13/13415/5528.terrain new file mode 100644 index 000000000..5f76d74c1 Binary files /dev/null and b/public/terrain/13/13415/5528.terrain differ diff --git a/public/terrain/13/13415/5529.terrain b/public/terrain/13/13415/5529.terrain new file mode 100644 index 000000000..b8f845491 Binary files /dev/null and b/public/terrain/13/13415/5529.terrain differ diff --git a/public/terrain/13/13415/5530.terrain b/public/terrain/13/13415/5530.terrain new file mode 100644 index 000000000..c6cf20ce3 Binary files /dev/null and b/public/terrain/13/13415/5530.terrain differ diff --git a/public/terrain/13/13415/5531.terrain b/public/terrain/13/13415/5531.terrain new file mode 100644 index 000000000..57ac5574f Binary files /dev/null and b/public/terrain/13/13415/5531.terrain differ diff --git a/public/terrain/13/13415/5532.terrain b/public/terrain/13/13415/5532.terrain new file mode 100644 index 000000000..6c9fbe8a6 Binary files /dev/null and b/public/terrain/13/13415/5532.terrain differ diff --git a/public/terrain/14/26827/11054.terrain b/public/terrain/14/26827/11054.terrain new file mode 100644 index 000000000..08e6694fc Binary files /dev/null and b/public/terrain/14/26827/11054.terrain differ diff --git a/public/terrain/14/26827/11055.terrain b/public/terrain/14/26827/11055.terrain new file mode 100644 index 000000000..eb82ef57a Binary files /dev/null and b/public/terrain/14/26827/11055.terrain differ diff --git a/public/terrain/14/26827/11056.terrain b/public/terrain/14/26827/11056.terrain new file mode 100644 index 000000000..0dcf09934 Binary files /dev/null and b/public/terrain/14/26827/11056.terrain differ diff --git a/public/terrain/14/26827/11057.terrain b/public/terrain/14/26827/11057.terrain new file mode 100644 index 000000000..7b7dcf9f6 Binary files /dev/null and b/public/terrain/14/26827/11057.terrain differ diff --git a/public/terrain/14/26827/11058.terrain b/public/terrain/14/26827/11058.terrain new file mode 100644 index 000000000..575109237 Binary files /dev/null and b/public/terrain/14/26827/11058.terrain differ diff --git a/public/terrain/14/26827/11059.terrain b/public/terrain/14/26827/11059.terrain new file mode 100644 index 000000000..145c94943 Binary files /dev/null and b/public/terrain/14/26827/11059.terrain differ diff --git a/public/terrain/14/26827/11060.terrain b/public/terrain/14/26827/11060.terrain new file mode 100644 index 000000000..f70b8fc78 Binary files /dev/null and b/public/terrain/14/26827/11060.terrain differ diff --git a/public/terrain/14/26827/11061.terrain b/public/terrain/14/26827/11061.terrain new file mode 100644 index 000000000..d19108bcb Binary files /dev/null and b/public/terrain/14/26827/11061.terrain differ diff --git a/public/terrain/14/26827/11062.terrain b/public/terrain/14/26827/11062.terrain new file mode 100644 index 000000000..3a4813217 Binary files /dev/null and b/public/terrain/14/26827/11062.terrain differ diff --git a/public/terrain/14/26827/11063.terrain b/public/terrain/14/26827/11063.terrain new file mode 100644 index 000000000..7973f31e0 Binary files /dev/null and b/public/terrain/14/26827/11063.terrain differ diff --git a/public/terrain/14/26827/11064.terrain b/public/terrain/14/26827/11064.terrain new file mode 100644 index 000000000..f50625cf1 Binary files /dev/null and b/public/terrain/14/26827/11064.terrain differ diff --git a/public/terrain/14/26828/11054.terrain b/public/terrain/14/26828/11054.terrain new file mode 100644 index 000000000..00968cdc4 Binary files /dev/null and b/public/terrain/14/26828/11054.terrain differ diff --git a/public/terrain/14/26828/11055.terrain b/public/terrain/14/26828/11055.terrain new file mode 100644 index 000000000..2e4d30138 Binary files /dev/null and b/public/terrain/14/26828/11055.terrain differ diff --git a/public/terrain/14/26828/11056.terrain b/public/terrain/14/26828/11056.terrain new file mode 100644 index 000000000..d0e50a1aa Binary files /dev/null and b/public/terrain/14/26828/11056.terrain differ diff --git a/public/terrain/14/26828/11057.terrain b/public/terrain/14/26828/11057.terrain new file mode 100644 index 000000000..bc40a0263 Binary files /dev/null and b/public/terrain/14/26828/11057.terrain differ diff --git a/public/terrain/14/26828/11058.terrain b/public/terrain/14/26828/11058.terrain new file mode 100644 index 000000000..25dc16c9f Binary files /dev/null and b/public/terrain/14/26828/11058.terrain differ diff --git a/public/terrain/14/26828/11059.terrain b/public/terrain/14/26828/11059.terrain new file mode 100644 index 000000000..06475b367 Binary files /dev/null and b/public/terrain/14/26828/11059.terrain differ diff --git a/public/terrain/14/26828/11060.terrain b/public/terrain/14/26828/11060.terrain new file mode 100644 index 000000000..cb3e8104d Binary files /dev/null and b/public/terrain/14/26828/11060.terrain differ diff --git a/public/terrain/14/26828/11061.terrain b/public/terrain/14/26828/11061.terrain new file mode 100644 index 000000000..cce4d7414 Binary files /dev/null and b/public/terrain/14/26828/11061.terrain differ diff --git a/public/terrain/14/26828/11062.terrain b/public/terrain/14/26828/11062.terrain new file mode 100644 index 000000000..ffdc511fd Binary files /dev/null and b/public/terrain/14/26828/11062.terrain differ diff --git a/public/terrain/14/26828/11063.terrain b/public/terrain/14/26828/11063.terrain new file mode 100644 index 000000000..c27ce7862 Binary files /dev/null and b/public/terrain/14/26828/11063.terrain differ diff --git a/public/terrain/14/26828/11064.terrain b/public/terrain/14/26828/11064.terrain new file mode 100644 index 000000000..1cd4356d7 Binary files /dev/null and b/public/terrain/14/26828/11064.terrain differ diff --git a/public/terrain/14/26829/11054.terrain b/public/terrain/14/26829/11054.terrain new file mode 100644 index 000000000..f5e29a81c Binary files /dev/null and b/public/terrain/14/26829/11054.terrain differ diff --git a/public/terrain/14/26829/11055.terrain b/public/terrain/14/26829/11055.terrain new file mode 100644 index 000000000..347cff0e4 Binary files /dev/null and b/public/terrain/14/26829/11055.terrain differ diff --git a/public/terrain/14/26829/11056.terrain b/public/terrain/14/26829/11056.terrain new file mode 100644 index 000000000..effdd14be Binary files /dev/null and b/public/terrain/14/26829/11056.terrain differ diff --git a/public/terrain/14/26829/11057.terrain b/public/terrain/14/26829/11057.terrain new file mode 100644 index 000000000..f6d62e3c4 Binary files /dev/null and b/public/terrain/14/26829/11057.terrain differ diff --git a/public/terrain/14/26829/11058.terrain b/public/terrain/14/26829/11058.terrain new file mode 100644 index 000000000..8d2a77b89 Binary files /dev/null and b/public/terrain/14/26829/11058.terrain differ diff --git a/public/terrain/14/26829/11059.terrain b/public/terrain/14/26829/11059.terrain new file mode 100644 index 000000000..13053479f Binary files /dev/null and b/public/terrain/14/26829/11059.terrain differ diff --git a/public/terrain/14/26829/11060.terrain b/public/terrain/14/26829/11060.terrain new file mode 100644 index 000000000..d9574c1e5 Binary files /dev/null and b/public/terrain/14/26829/11060.terrain differ diff --git a/public/terrain/14/26829/11061.terrain b/public/terrain/14/26829/11061.terrain new file mode 100644 index 000000000..2710d455a Binary files /dev/null and b/public/terrain/14/26829/11061.terrain differ diff --git a/public/terrain/14/26829/11062.terrain b/public/terrain/14/26829/11062.terrain new file mode 100644 index 000000000..abd1386a2 Binary files /dev/null and b/public/terrain/14/26829/11062.terrain differ diff --git a/public/terrain/14/26829/11063.terrain b/public/terrain/14/26829/11063.terrain new file mode 100644 index 000000000..ca1c77b26 Binary files /dev/null and b/public/terrain/14/26829/11063.terrain differ diff --git a/public/terrain/14/26829/11064.terrain b/public/terrain/14/26829/11064.terrain new file mode 100644 index 000000000..bda219be5 Binary files /dev/null and b/public/terrain/14/26829/11064.terrain differ diff --git a/public/terrain/14/26830/11054.terrain b/public/terrain/14/26830/11054.terrain new file mode 100644 index 000000000..eb8a53413 Binary files /dev/null and b/public/terrain/14/26830/11054.terrain differ diff --git a/public/terrain/14/26830/11055.terrain b/public/terrain/14/26830/11055.terrain new file mode 100644 index 000000000..9aa477af9 Binary files /dev/null and b/public/terrain/14/26830/11055.terrain differ diff --git a/public/terrain/14/26830/11056.terrain b/public/terrain/14/26830/11056.terrain new file mode 100644 index 000000000..8e1762570 Binary files /dev/null and b/public/terrain/14/26830/11056.terrain differ diff --git a/public/terrain/14/26830/11057.terrain b/public/terrain/14/26830/11057.terrain new file mode 100644 index 000000000..60383f7d8 Binary files /dev/null and b/public/terrain/14/26830/11057.terrain differ diff --git a/public/terrain/14/26830/11058.terrain b/public/terrain/14/26830/11058.terrain new file mode 100644 index 000000000..7cd7baa51 Binary files /dev/null and b/public/terrain/14/26830/11058.terrain differ diff --git a/public/terrain/14/26830/11059.terrain b/public/terrain/14/26830/11059.terrain new file mode 100644 index 000000000..735789e8a Binary files /dev/null and b/public/terrain/14/26830/11059.terrain differ diff --git a/public/terrain/14/26830/11060.terrain b/public/terrain/14/26830/11060.terrain new file mode 100644 index 000000000..7763231e4 Binary files /dev/null and b/public/terrain/14/26830/11060.terrain differ diff --git a/public/terrain/14/26830/11061.terrain b/public/terrain/14/26830/11061.terrain new file mode 100644 index 000000000..0fcfd3f62 Binary files /dev/null and b/public/terrain/14/26830/11061.terrain differ diff --git a/public/terrain/14/26830/11062.terrain b/public/terrain/14/26830/11062.terrain new file mode 100644 index 000000000..c29469ba7 Binary files /dev/null and b/public/terrain/14/26830/11062.terrain differ diff --git a/public/terrain/14/26830/11063.terrain b/public/terrain/14/26830/11063.terrain new file mode 100644 index 000000000..c7eef98cb Binary files /dev/null and b/public/terrain/14/26830/11063.terrain differ diff --git a/public/terrain/14/26830/11064.terrain b/public/terrain/14/26830/11064.terrain new file mode 100644 index 000000000..3e8588a21 Binary files /dev/null and b/public/terrain/14/26830/11064.terrain differ diff --git a/public/terrain/14/26831/11054.terrain b/public/terrain/14/26831/11054.terrain new file mode 100644 index 000000000..85ccad67f Binary files /dev/null and b/public/terrain/14/26831/11054.terrain differ diff --git a/public/terrain/14/26831/11055.terrain b/public/terrain/14/26831/11055.terrain new file mode 100644 index 000000000..80f648d4d Binary files /dev/null and b/public/terrain/14/26831/11055.terrain differ diff --git a/public/terrain/14/26831/11056.terrain b/public/terrain/14/26831/11056.terrain new file mode 100644 index 000000000..bd0c8cc4b Binary files /dev/null and b/public/terrain/14/26831/11056.terrain differ diff --git a/public/terrain/14/26831/11057.terrain b/public/terrain/14/26831/11057.terrain new file mode 100644 index 000000000..e1cd2b8bf Binary files /dev/null and b/public/terrain/14/26831/11057.terrain differ diff --git a/public/terrain/14/26831/11058.terrain b/public/terrain/14/26831/11058.terrain new file mode 100644 index 000000000..4088dc51b Binary files /dev/null and b/public/terrain/14/26831/11058.terrain differ diff --git a/public/terrain/14/26831/11059.terrain b/public/terrain/14/26831/11059.terrain new file mode 100644 index 000000000..297a5dafe Binary files /dev/null and b/public/terrain/14/26831/11059.terrain differ diff --git a/public/terrain/14/26831/11060.terrain b/public/terrain/14/26831/11060.terrain new file mode 100644 index 000000000..ece6a7076 Binary files /dev/null and b/public/terrain/14/26831/11060.terrain differ diff --git a/public/terrain/14/26831/11061.terrain b/public/terrain/14/26831/11061.terrain new file mode 100644 index 000000000..8a63ceaf7 Binary files /dev/null and b/public/terrain/14/26831/11061.terrain differ diff --git a/public/terrain/14/26831/11062.terrain b/public/terrain/14/26831/11062.terrain new file mode 100644 index 000000000..f47614b17 Binary files /dev/null and b/public/terrain/14/26831/11062.terrain differ diff --git a/public/terrain/14/26831/11063.terrain b/public/terrain/14/26831/11063.terrain new file mode 100644 index 000000000..6ddcc25c6 Binary files /dev/null and b/public/terrain/14/26831/11063.terrain differ diff --git a/public/terrain/14/26831/11064.terrain b/public/terrain/14/26831/11064.terrain new file mode 100644 index 000000000..181744b8e Binary files /dev/null and b/public/terrain/14/26831/11064.terrain differ diff --git a/public/terrain/15/53654/22108.terrain b/public/terrain/15/53654/22108.terrain new file mode 100644 index 000000000..f3d7e4ee3 Binary files /dev/null and b/public/terrain/15/53654/22108.terrain differ diff --git a/public/terrain/15/53654/22109.terrain b/public/terrain/15/53654/22109.terrain new file mode 100644 index 000000000..4844bd3c1 Binary files /dev/null and b/public/terrain/15/53654/22109.terrain differ diff --git a/public/terrain/15/53654/22110.terrain b/public/terrain/15/53654/22110.terrain new file mode 100644 index 000000000..5930e8fbc Binary files /dev/null and b/public/terrain/15/53654/22110.terrain differ diff --git a/public/terrain/15/53654/22111.terrain b/public/terrain/15/53654/22111.terrain new file mode 100644 index 000000000..56c55bb9d Binary files /dev/null and b/public/terrain/15/53654/22111.terrain differ diff --git a/public/terrain/15/53654/22112.terrain b/public/terrain/15/53654/22112.terrain new file mode 100644 index 000000000..5648b4ea8 Binary files /dev/null and b/public/terrain/15/53654/22112.terrain differ diff --git a/public/terrain/15/53654/22113.terrain b/public/terrain/15/53654/22113.terrain new file mode 100644 index 000000000..3c8c732a0 Binary files /dev/null and b/public/terrain/15/53654/22113.terrain differ diff --git a/public/terrain/15/53654/22114.terrain b/public/terrain/15/53654/22114.terrain new file mode 100644 index 000000000..18d56645b Binary files /dev/null and b/public/terrain/15/53654/22114.terrain differ diff --git a/public/terrain/15/53654/22115.terrain b/public/terrain/15/53654/22115.terrain new file mode 100644 index 000000000..57f51a311 Binary files /dev/null and b/public/terrain/15/53654/22115.terrain differ diff --git a/public/terrain/15/53654/22116.terrain b/public/terrain/15/53654/22116.terrain new file mode 100644 index 000000000..401b68145 Binary files /dev/null and b/public/terrain/15/53654/22116.terrain differ diff --git a/public/terrain/15/53654/22117.terrain b/public/terrain/15/53654/22117.terrain new file mode 100644 index 000000000..7edf206c3 Binary files /dev/null and b/public/terrain/15/53654/22117.terrain differ diff --git a/public/terrain/15/53654/22118.terrain b/public/terrain/15/53654/22118.terrain new file mode 100644 index 000000000..e934add60 Binary files /dev/null and b/public/terrain/15/53654/22118.terrain differ diff --git a/public/terrain/15/53654/22119.terrain b/public/terrain/15/53654/22119.terrain new file mode 100644 index 000000000..bca52f38c Binary files /dev/null and b/public/terrain/15/53654/22119.terrain differ diff --git a/public/terrain/15/53654/22120.terrain b/public/terrain/15/53654/22120.terrain new file mode 100644 index 000000000..06f666059 Binary files /dev/null and b/public/terrain/15/53654/22120.terrain differ diff --git a/public/terrain/15/53654/22121.terrain b/public/terrain/15/53654/22121.terrain new file mode 100644 index 000000000..bd0fe3336 Binary files /dev/null and b/public/terrain/15/53654/22121.terrain differ diff --git a/public/terrain/15/53654/22122.terrain b/public/terrain/15/53654/22122.terrain new file mode 100644 index 000000000..dd4106b4c Binary files /dev/null and b/public/terrain/15/53654/22122.terrain differ diff --git a/public/terrain/15/53654/22123.terrain b/public/terrain/15/53654/22123.terrain new file mode 100644 index 000000000..61df111fe Binary files /dev/null and b/public/terrain/15/53654/22123.terrain differ diff --git a/public/terrain/15/53654/22124.terrain b/public/terrain/15/53654/22124.terrain new file mode 100644 index 000000000..9a1be795d Binary files /dev/null and b/public/terrain/15/53654/22124.terrain differ diff --git a/public/terrain/15/53654/22125.terrain b/public/terrain/15/53654/22125.terrain new file mode 100644 index 000000000..10225595d Binary files /dev/null and b/public/terrain/15/53654/22125.terrain differ diff --git a/public/terrain/15/53654/22126.terrain b/public/terrain/15/53654/22126.terrain new file mode 100644 index 000000000..fdf8af3cc Binary files /dev/null and b/public/terrain/15/53654/22126.terrain differ diff --git a/public/terrain/15/53654/22127.terrain b/public/terrain/15/53654/22127.terrain new file mode 100644 index 000000000..de8098d46 Binary files /dev/null and b/public/terrain/15/53654/22127.terrain differ diff --git a/public/terrain/15/53654/22128.terrain b/public/terrain/15/53654/22128.terrain new file mode 100644 index 000000000..05dd6346e Binary files /dev/null and b/public/terrain/15/53654/22128.terrain differ diff --git a/public/terrain/15/53655/22108.terrain b/public/terrain/15/53655/22108.terrain new file mode 100644 index 000000000..f86d8b061 Binary files /dev/null and b/public/terrain/15/53655/22108.terrain differ diff --git a/public/terrain/15/53655/22109.terrain b/public/terrain/15/53655/22109.terrain new file mode 100644 index 000000000..42b767d50 Binary files /dev/null and b/public/terrain/15/53655/22109.terrain differ diff --git a/public/terrain/15/53655/22110.terrain b/public/terrain/15/53655/22110.terrain new file mode 100644 index 000000000..fd1d7b338 Binary files /dev/null and b/public/terrain/15/53655/22110.terrain differ diff --git a/public/terrain/15/53655/22111.terrain b/public/terrain/15/53655/22111.terrain new file mode 100644 index 000000000..9183f853e Binary files /dev/null and b/public/terrain/15/53655/22111.terrain differ diff --git a/public/terrain/15/53655/22112.terrain b/public/terrain/15/53655/22112.terrain new file mode 100644 index 000000000..70cf6c6ec Binary files /dev/null and b/public/terrain/15/53655/22112.terrain differ diff --git a/public/terrain/15/53655/22113.terrain b/public/terrain/15/53655/22113.terrain new file mode 100644 index 000000000..11b976553 Binary files /dev/null and b/public/terrain/15/53655/22113.terrain differ diff --git a/public/terrain/15/53655/22114.terrain b/public/terrain/15/53655/22114.terrain new file mode 100644 index 000000000..0b402f923 Binary files /dev/null and b/public/terrain/15/53655/22114.terrain differ diff --git a/public/terrain/15/53655/22115.terrain b/public/terrain/15/53655/22115.terrain new file mode 100644 index 000000000..1b14df149 Binary files /dev/null and b/public/terrain/15/53655/22115.terrain differ diff --git a/public/terrain/15/53655/22116.terrain b/public/terrain/15/53655/22116.terrain new file mode 100644 index 000000000..63a0b8e51 Binary files /dev/null and b/public/terrain/15/53655/22116.terrain differ diff --git a/public/terrain/15/53655/22117.terrain b/public/terrain/15/53655/22117.terrain new file mode 100644 index 000000000..ded03ba8b Binary files /dev/null and b/public/terrain/15/53655/22117.terrain differ diff --git a/public/terrain/15/53655/22118.terrain b/public/terrain/15/53655/22118.terrain new file mode 100644 index 000000000..8c5a3b76a Binary files /dev/null and b/public/terrain/15/53655/22118.terrain differ diff --git a/public/terrain/15/53655/22119.terrain b/public/terrain/15/53655/22119.terrain new file mode 100644 index 000000000..0e0f47614 Binary files /dev/null and b/public/terrain/15/53655/22119.terrain differ diff --git a/public/terrain/15/53655/22120.terrain b/public/terrain/15/53655/22120.terrain new file mode 100644 index 000000000..3a4aa013a Binary files /dev/null and b/public/terrain/15/53655/22120.terrain differ diff --git a/public/terrain/15/53655/22121.terrain b/public/terrain/15/53655/22121.terrain new file mode 100644 index 000000000..1f25c1e10 Binary files /dev/null and b/public/terrain/15/53655/22121.terrain differ diff --git a/public/terrain/15/53655/22122.terrain b/public/terrain/15/53655/22122.terrain new file mode 100644 index 000000000..24f6b686d Binary files /dev/null and b/public/terrain/15/53655/22122.terrain differ diff --git a/public/terrain/15/53655/22123.terrain b/public/terrain/15/53655/22123.terrain new file mode 100644 index 000000000..94888a6cf Binary files /dev/null and b/public/terrain/15/53655/22123.terrain differ diff --git a/public/terrain/15/53655/22124.terrain b/public/terrain/15/53655/22124.terrain new file mode 100644 index 000000000..d47006041 Binary files /dev/null and b/public/terrain/15/53655/22124.terrain differ diff --git a/public/terrain/15/53655/22125.terrain b/public/terrain/15/53655/22125.terrain new file mode 100644 index 000000000..7d99ed443 Binary files /dev/null and b/public/terrain/15/53655/22125.terrain differ diff --git a/public/terrain/15/53655/22126.terrain b/public/terrain/15/53655/22126.terrain new file mode 100644 index 000000000..105874252 Binary files /dev/null and b/public/terrain/15/53655/22126.terrain differ diff --git a/public/terrain/15/53655/22127.terrain b/public/terrain/15/53655/22127.terrain new file mode 100644 index 000000000..a7d320d1b Binary files /dev/null and b/public/terrain/15/53655/22127.terrain differ diff --git a/public/terrain/15/53655/22128.terrain b/public/terrain/15/53655/22128.terrain new file mode 100644 index 000000000..a29413b0c Binary files /dev/null and b/public/terrain/15/53655/22128.terrain differ diff --git a/public/terrain/15/53656/22108.terrain b/public/terrain/15/53656/22108.terrain new file mode 100644 index 000000000..7865d53fe Binary files /dev/null and b/public/terrain/15/53656/22108.terrain differ diff --git a/public/terrain/15/53656/22109.terrain b/public/terrain/15/53656/22109.terrain new file mode 100644 index 000000000..aaf18eaf1 Binary files /dev/null and b/public/terrain/15/53656/22109.terrain differ diff --git a/public/terrain/15/53656/22110.terrain b/public/terrain/15/53656/22110.terrain new file mode 100644 index 000000000..18a256b82 Binary files /dev/null and b/public/terrain/15/53656/22110.terrain differ diff --git a/public/terrain/15/53656/22111.terrain b/public/terrain/15/53656/22111.terrain new file mode 100644 index 000000000..ded2adff4 Binary files /dev/null and b/public/terrain/15/53656/22111.terrain differ diff --git a/public/terrain/15/53656/22112.terrain b/public/terrain/15/53656/22112.terrain new file mode 100644 index 000000000..12db374ae Binary files /dev/null and b/public/terrain/15/53656/22112.terrain differ diff --git a/public/terrain/15/53656/22113.terrain b/public/terrain/15/53656/22113.terrain new file mode 100644 index 000000000..ef5fd0416 Binary files /dev/null and b/public/terrain/15/53656/22113.terrain differ diff --git a/public/terrain/15/53656/22114.terrain b/public/terrain/15/53656/22114.terrain new file mode 100644 index 000000000..44c65ba05 Binary files /dev/null and b/public/terrain/15/53656/22114.terrain differ diff --git a/public/terrain/15/53656/22115.terrain b/public/terrain/15/53656/22115.terrain new file mode 100644 index 000000000..47e0ca1bf Binary files /dev/null and b/public/terrain/15/53656/22115.terrain differ diff --git a/public/terrain/15/53656/22116.terrain b/public/terrain/15/53656/22116.terrain new file mode 100644 index 000000000..2df80a5c2 Binary files /dev/null and b/public/terrain/15/53656/22116.terrain differ diff --git a/public/terrain/15/53656/22117.terrain b/public/terrain/15/53656/22117.terrain new file mode 100644 index 000000000..9eeb08d0c Binary files /dev/null and b/public/terrain/15/53656/22117.terrain differ diff --git a/public/terrain/15/53656/22118.terrain b/public/terrain/15/53656/22118.terrain new file mode 100644 index 000000000..5783af4b5 Binary files /dev/null and b/public/terrain/15/53656/22118.terrain differ diff --git a/public/terrain/15/53656/22119.terrain b/public/terrain/15/53656/22119.terrain new file mode 100644 index 000000000..1364b6bab Binary files /dev/null and b/public/terrain/15/53656/22119.terrain differ diff --git a/public/terrain/15/53656/22120.terrain b/public/terrain/15/53656/22120.terrain new file mode 100644 index 000000000..0e19fd06b Binary files /dev/null and b/public/terrain/15/53656/22120.terrain differ diff --git a/public/terrain/15/53656/22121.terrain b/public/terrain/15/53656/22121.terrain new file mode 100644 index 000000000..b1245de16 Binary files /dev/null and b/public/terrain/15/53656/22121.terrain differ diff --git a/public/terrain/15/53656/22122.terrain b/public/terrain/15/53656/22122.terrain new file mode 100644 index 000000000..1f5b42ad8 Binary files /dev/null and b/public/terrain/15/53656/22122.terrain differ diff --git a/public/terrain/15/53656/22123.terrain b/public/terrain/15/53656/22123.terrain new file mode 100644 index 000000000..ec54fc596 Binary files /dev/null and b/public/terrain/15/53656/22123.terrain differ diff --git a/public/terrain/15/53656/22124.terrain b/public/terrain/15/53656/22124.terrain new file mode 100644 index 000000000..8a80a8f3e Binary files /dev/null and b/public/terrain/15/53656/22124.terrain differ diff --git a/public/terrain/15/53656/22125.terrain b/public/terrain/15/53656/22125.terrain new file mode 100644 index 000000000..2398bba5b Binary files /dev/null and b/public/terrain/15/53656/22125.terrain differ diff --git a/public/terrain/15/53656/22126.terrain b/public/terrain/15/53656/22126.terrain new file mode 100644 index 000000000..e2e7933cf Binary files /dev/null and b/public/terrain/15/53656/22126.terrain differ diff --git a/public/terrain/15/53656/22127.terrain b/public/terrain/15/53656/22127.terrain new file mode 100644 index 000000000..7eb04da96 Binary files /dev/null and b/public/terrain/15/53656/22127.terrain differ diff --git a/public/terrain/15/53656/22128.terrain b/public/terrain/15/53656/22128.terrain new file mode 100644 index 000000000..654dcde10 Binary files /dev/null and b/public/terrain/15/53656/22128.terrain differ diff --git a/public/terrain/15/53657/22108.terrain b/public/terrain/15/53657/22108.terrain new file mode 100644 index 000000000..63bf5f5fc Binary files /dev/null and b/public/terrain/15/53657/22108.terrain differ diff --git a/public/terrain/15/53657/22109.terrain b/public/terrain/15/53657/22109.terrain new file mode 100644 index 000000000..3227c9104 Binary files /dev/null and b/public/terrain/15/53657/22109.terrain differ diff --git a/public/terrain/15/53657/22110.terrain b/public/terrain/15/53657/22110.terrain new file mode 100644 index 000000000..106402830 Binary files /dev/null and b/public/terrain/15/53657/22110.terrain differ diff --git a/public/terrain/15/53657/22111.terrain b/public/terrain/15/53657/22111.terrain new file mode 100644 index 000000000..7e9de2778 Binary files /dev/null and b/public/terrain/15/53657/22111.terrain differ diff --git a/public/terrain/15/53657/22112.terrain b/public/terrain/15/53657/22112.terrain new file mode 100644 index 000000000..69a403dd6 Binary files /dev/null and b/public/terrain/15/53657/22112.terrain differ diff --git a/public/terrain/15/53657/22113.terrain b/public/terrain/15/53657/22113.terrain new file mode 100644 index 000000000..c840295aa Binary files /dev/null and b/public/terrain/15/53657/22113.terrain differ diff --git a/public/terrain/15/53657/22114.terrain b/public/terrain/15/53657/22114.terrain new file mode 100644 index 000000000..50e4a597e Binary files /dev/null and b/public/terrain/15/53657/22114.terrain differ diff --git a/public/terrain/15/53657/22115.terrain b/public/terrain/15/53657/22115.terrain new file mode 100644 index 000000000..b3a5a668d Binary files /dev/null and b/public/terrain/15/53657/22115.terrain differ diff --git a/public/terrain/15/53657/22116.terrain b/public/terrain/15/53657/22116.terrain new file mode 100644 index 000000000..f8f5362fb Binary files /dev/null and b/public/terrain/15/53657/22116.terrain differ diff --git a/public/terrain/15/53657/22117.terrain b/public/terrain/15/53657/22117.terrain new file mode 100644 index 000000000..61ef3119a Binary files /dev/null and b/public/terrain/15/53657/22117.terrain differ diff --git a/public/terrain/15/53657/22118.terrain b/public/terrain/15/53657/22118.terrain new file mode 100644 index 000000000..22f1a3618 Binary files /dev/null and b/public/terrain/15/53657/22118.terrain differ diff --git a/public/terrain/15/53657/22119.terrain b/public/terrain/15/53657/22119.terrain new file mode 100644 index 000000000..20dd76946 Binary files /dev/null and b/public/terrain/15/53657/22119.terrain differ diff --git a/public/terrain/15/53657/22120.terrain b/public/terrain/15/53657/22120.terrain new file mode 100644 index 000000000..7f94f4e6b Binary files /dev/null and b/public/terrain/15/53657/22120.terrain differ diff --git a/public/terrain/15/53657/22121.terrain b/public/terrain/15/53657/22121.terrain new file mode 100644 index 000000000..ce77f48da Binary files /dev/null and b/public/terrain/15/53657/22121.terrain differ diff --git a/public/terrain/15/53657/22122.terrain b/public/terrain/15/53657/22122.terrain new file mode 100644 index 000000000..4af99b4ec Binary files /dev/null and b/public/terrain/15/53657/22122.terrain differ diff --git a/public/terrain/15/53657/22123.terrain b/public/terrain/15/53657/22123.terrain new file mode 100644 index 000000000..e4d16dd30 Binary files /dev/null and b/public/terrain/15/53657/22123.terrain differ diff --git a/public/terrain/15/53657/22124.terrain b/public/terrain/15/53657/22124.terrain new file mode 100644 index 000000000..bf71fe4f1 Binary files /dev/null and b/public/terrain/15/53657/22124.terrain differ diff --git a/public/terrain/15/53657/22125.terrain b/public/terrain/15/53657/22125.terrain new file mode 100644 index 000000000..39d292dcc Binary files /dev/null and b/public/terrain/15/53657/22125.terrain differ diff --git a/public/terrain/15/53657/22126.terrain b/public/terrain/15/53657/22126.terrain new file mode 100644 index 000000000..1ecbac0a9 Binary files /dev/null and b/public/terrain/15/53657/22126.terrain differ diff --git a/public/terrain/15/53657/22127.terrain b/public/terrain/15/53657/22127.terrain new file mode 100644 index 000000000..35fd070b2 Binary files /dev/null and b/public/terrain/15/53657/22127.terrain differ diff --git a/public/terrain/15/53657/22128.terrain b/public/terrain/15/53657/22128.terrain new file mode 100644 index 000000000..a0e26cdde Binary files /dev/null and b/public/terrain/15/53657/22128.terrain differ diff --git a/public/terrain/15/53658/22108.terrain b/public/terrain/15/53658/22108.terrain new file mode 100644 index 000000000..458043275 Binary files /dev/null and b/public/terrain/15/53658/22108.terrain differ diff --git a/public/terrain/15/53658/22109.terrain b/public/terrain/15/53658/22109.terrain new file mode 100644 index 000000000..d40a80de3 Binary files /dev/null and b/public/terrain/15/53658/22109.terrain differ diff --git a/public/terrain/15/53658/22110.terrain b/public/terrain/15/53658/22110.terrain new file mode 100644 index 000000000..8e70c6b85 Binary files /dev/null and b/public/terrain/15/53658/22110.terrain differ diff --git a/public/terrain/15/53658/22111.terrain b/public/terrain/15/53658/22111.terrain new file mode 100644 index 000000000..0581b6329 Binary files /dev/null and b/public/terrain/15/53658/22111.terrain differ diff --git a/public/terrain/15/53658/22112.terrain b/public/terrain/15/53658/22112.terrain new file mode 100644 index 000000000..3e9c611a1 Binary files /dev/null and b/public/terrain/15/53658/22112.terrain differ diff --git a/public/terrain/15/53658/22113.terrain b/public/terrain/15/53658/22113.terrain new file mode 100644 index 000000000..706a26fa8 Binary files /dev/null and b/public/terrain/15/53658/22113.terrain differ diff --git a/public/terrain/15/53658/22114.terrain b/public/terrain/15/53658/22114.terrain new file mode 100644 index 000000000..28cb654b3 Binary files /dev/null and b/public/terrain/15/53658/22114.terrain differ diff --git a/public/terrain/15/53658/22115.terrain b/public/terrain/15/53658/22115.terrain new file mode 100644 index 000000000..8d257c548 Binary files /dev/null and b/public/terrain/15/53658/22115.terrain differ diff --git a/public/terrain/15/53658/22116.terrain b/public/terrain/15/53658/22116.terrain new file mode 100644 index 000000000..bd8575e5d Binary files /dev/null and b/public/terrain/15/53658/22116.terrain differ diff --git a/public/terrain/15/53658/22117.terrain b/public/terrain/15/53658/22117.terrain new file mode 100644 index 000000000..69f399105 Binary files /dev/null and b/public/terrain/15/53658/22117.terrain differ diff --git a/public/terrain/15/53658/22118.terrain b/public/terrain/15/53658/22118.terrain new file mode 100644 index 000000000..d63f8589e Binary files /dev/null and b/public/terrain/15/53658/22118.terrain differ diff --git a/public/terrain/15/53658/22119.terrain b/public/terrain/15/53658/22119.terrain new file mode 100644 index 000000000..c535c24ac Binary files /dev/null and b/public/terrain/15/53658/22119.terrain differ diff --git a/public/terrain/15/53658/22120.terrain b/public/terrain/15/53658/22120.terrain new file mode 100644 index 000000000..d6e80820a Binary files /dev/null and b/public/terrain/15/53658/22120.terrain differ diff --git a/public/terrain/15/53658/22121.terrain b/public/terrain/15/53658/22121.terrain new file mode 100644 index 000000000..8ee4a2046 Binary files /dev/null and b/public/terrain/15/53658/22121.terrain differ diff --git a/public/terrain/15/53658/22122.terrain b/public/terrain/15/53658/22122.terrain new file mode 100644 index 000000000..f1705db1b Binary files /dev/null and b/public/terrain/15/53658/22122.terrain differ diff --git a/public/terrain/15/53658/22123.terrain b/public/terrain/15/53658/22123.terrain new file mode 100644 index 000000000..1798627c3 Binary files /dev/null and b/public/terrain/15/53658/22123.terrain differ diff --git a/public/terrain/15/53658/22124.terrain b/public/terrain/15/53658/22124.terrain new file mode 100644 index 000000000..86ad35ec6 Binary files /dev/null and b/public/terrain/15/53658/22124.terrain differ diff --git a/public/terrain/15/53658/22125.terrain b/public/terrain/15/53658/22125.terrain new file mode 100644 index 000000000..620db33f9 Binary files /dev/null and b/public/terrain/15/53658/22125.terrain differ diff --git a/public/terrain/15/53658/22126.terrain b/public/terrain/15/53658/22126.terrain new file mode 100644 index 000000000..521bafdb6 Binary files /dev/null and b/public/terrain/15/53658/22126.terrain differ diff --git a/public/terrain/15/53658/22127.terrain b/public/terrain/15/53658/22127.terrain new file mode 100644 index 000000000..15c8fe0cd Binary files /dev/null and b/public/terrain/15/53658/22127.terrain differ diff --git a/public/terrain/15/53658/22128.terrain b/public/terrain/15/53658/22128.terrain new file mode 100644 index 000000000..29e4d6d49 Binary files /dev/null and b/public/terrain/15/53658/22128.terrain differ diff --git a/public/terrain/15/53659/22108.terrain b/public/terrain/15/53659/22108.terrain new file mode 100644 index 000000000..4bef85ebf Binary files /dev/null and b/public/terrain/15/53659/22108.terrain differ diff --git a/public/terrain/15/53659/22109.terrain b/public/terrain/15/53659/22109.terrain new file mode 100644 index 000000000..bb1cb375c Binary files /dev/null and b/public/terrain/15/53659/22109.terrain differ diff --git a/public/terrain/15/53659/22110.terrain b/public/terrain/15/53659/22110.terrain new file mode 100644 index 000000000..0e51e8c15 Binary files /dev/null and b/public/terrain/15/53659/22110.terrain differ diff --git a/public/terrain/15/53659/22111.terrain b/public/terrain/15/53659/22111.terrain new file mode 100644 index 000000000..025518a32 Binary files /dev/null and b/public/terrain/15/53659/22111.terrain differ diff --git a/public/terrain/15/53659/22112.terrain b/public/terrain/15/53659/22112.terrain new file mode 100644 index 000000000..851635227 Binary files /dev/null and b/public/terrain/15/53659/22112.terrain differ diff --git a/public/terrain/15/53659/22113.terrain b/public/terrain/15/53659/22113.terrain new file mode 100644 index 000000000..e1d7389a0 Binary files /dev/null and b/public/terrain/15/53659/22113.terrain differ diff --git a/public/terrain/15/53659/22114.terrain b/public/terrain/15/53659/22114.terrain new file mode 100644 index 000000000..8fac637ed Binary files /dev/null and b/public/terrain/15/53659/22114.terrain differ diff --git a/public/terrain/15/53659/22115.terrain b/public/terrain/15/53659/22115.terrain new file mode 100644 index 000000000..1fe7a207b Binary files /dev/null and b/public/terrain/15/53659/22115.terrain differ diff --git a/public/terrain/15/53659/22116.terrain b/public/terrain/15/53659/22116.terrain new file mode 100644 index 000000000..41b8fa07e Binary files /dev/null and b/public/terrain/15/53659/22116.terrain differ diff --git a/public/terrain/15/53659/22117.terrain b/public/terrain/15/53659/22117.terrain new file mode 100644 index 000000000..1dffd1e59 Binary files /dev/null and b/public/terrain/15/53659/22117.terrain differ diff --git a/public/terrain/15/53659/22118.terrain b/public/terrain/15/53659/22118.terrain new file mode 100644 index 000000000..68a1aa34d Binary files /dev/null and b/public/terrain/15/53659/22118.terrain differ diff --git a/public/terrain/15/53659/22119.terrain b/public/terrain/15/53659/22119.terrain new file mode 100644 index 000000000..bd139ca62 Binary files /dev/null and b/public/terrain/15/53659/22119.terrain differ diff --git a/public/terrain/15/53659/22120.terrain b/public/terrain/15/53659/22120.terrain new file mode 100644 index 000000000..dd22fda31 Binary files /dev/null and b/public/terrain/15/53659/22120.terrain differ diff --git a/public/terrain/15/53659/22121.terrain b/public/terrain/15/53659/22121.terrain new file mode 100644 index 000000000..091649417 Binary files /dev/null and b/public/terrain/15/53659/22121.terrain differ diff --git a/public/terrain/15/53659/22122.terrain b/public/terrain/15/53659/22122.terrain new file mode 100644 index 000000000..df02d2167 Binary files /dev/null and b/public/terrain/15/53659/22122.terrain differ diff --git a/public/terrain/15/53659/22123.terrain b/public/terrain/15/53659/22123.terrain new file mode 100644 index 000000000..c8e51a1f9 Binary files /dev/null and b/public/terrain/15/53659/22123.terrain differ diff --git a/public/terrain/15/53659/22124.terrain b/public/terrain/15/53659/22124.terrain new file mode 100644 index 000000000..d53d891eb Binary files /dev/null and b/public/terrain/15/53659/22124.terrain differ diff --git a/public/terrain/15/53659/22125.terrain b/public/terrain/15/53659/22125.terrain new file mode 100644 index 000000000..f16f1004a Binary files /dev/null and b/public/terrain/15/53659/22125.terrain differ diff --git a/public/terrain/15/53659/22126.terrain b/public/terrain/15/53659/22126.terrain new file mode 100644 index 000000000..0129a5d4b Binary files /dev/null and b/public/terrain/15/53659/22126.terrain differ diff --git a/public/terrain/15/53659/22127.terrain b/public/terrain/15/53659/22127.terrain new file mode 100644 index 000000000..c804d6150 Binary files /dev/null and b/public/terrain/15/53659/22127.terrain differ diff --git a/public/terrain/15/53659/22128.terrain b/public/terrain/15/53659/22128.terrain new file mode 100644 index 000000000..435a017b6 Binary files /dev/null and b/public/terrain/15/53659/22128.terrain differ diff --git a/public/terrain/15/53660/22108.terrain b/public/terrain/15/53660/22108.terrain new file mode 100644 index 000000000..d8475451c Binary files /dev/null and b/public/terrain/15/53660/22108.terrain differ diff --git a/public/terrain/15/53660/22109.terrain b/public/terrain/15/53660/22109.terrain new file mode 100644 index 000000000..9f2c964e0 Binary files /dev/null and b/public/terrain/15/53660/22109.terrain differ diff --git a/public/terrain/15/53660/22110.terrain b/public/terrain/15/53660/22110.terrain new file mode 100644 index 000000000..b1c820d77 Binary files /dev/null and b/public/terrain/15/53660/22110.terrain differ diff --git a/public/terrain/15/53660/22111.terrain b/public/terrain/15/53660/22111.terrain new file mode 100644 index 000000000..e50000c10 Binary files /dev/null and b/public/terrain/15/53660/22111.terrain differ diff --git a/public/terrain/15/53660/22112.terrain b/public/terrain/15/53660/22112.terrain new file mode 100644 index 000000000..14d06dcce Binary files /dev/null and b/public/terrain/15/53660/22112.terrain differ diff --git a/public/terrain/15/53660/22113.terrain b/public/terrain/15/53660/22113.terrain new file mode 100644 index 000000000..2c5e4504e Binary files /dev/null and b/public/terrain/15/53660/22113.terrain differ diff --git a/public/terrain/15/53660/22114.terrain b/public/terrain/15/53660/22114.terrain new file mode 100644 index 000000000..56fc3c6a0 Binary files /dev/null and b/public/terrain/15/53660/22114.terrain differ diff --git a/public/terrain/15/53660/22115.terrain b/public/terrain/15/53660/22115.terrain new file mode 100644 index 000000000..7262d7833 Binary files /dev/null and b/public/terrain/15/53660/22115.terrain differ diff --git a/public/terrain/15/53660/22116.terrain b/public/terrain/15/53660/22116.terrain new file mode 100644 index 000000000..40b25704f Binary files /dev/null and b/public/terrain/15/53660/22116.terrain differ diff --git a/public/terrain/15/53660/22117.terrain b/public/terrain/15/53660/22117.terrain new file mode 100644 index 000000000..a15ce6153 Binary files /dev/null and b/public/terrain/15/53660/22117.terrain differ diff --git a/public/terrain/15/53660/22118.terrain b/public/terrain/15/53660/22118.terrain new file mode 100644 index 000000000..3a281f610 Binary files /dev/null and b/public/terrain/15/53660/22118.terrain differ diff --git a/public/terrain/15/53660/22119.terrain b/public/terrain/15/53660/22119.terrain new file mode 100644 index 000000000..7dcfe8339 Binary files /dev/null and b/public/terrain/15/53660/22119.terrain differ diff --git a/public/terrain/15/53660/22120.terrain b/public/terrain/15/53660/22120.terrain new file mode 100644 index 000000000..c3516e914 Binary files /dev/null and b/public/terrain/15/53660/22120.terrain differ diff --git a/public/terrain/15/53660/22121.terrain b/public/terrain/15/53660/22121.terrain new file mode 100644 index 000000000..deacf5379 Binary files /dev/null and b/public/terrain/15/53660/22121.terrain differ diff --git a/public/terrain/15/53660/22122.terrain b/public/terrain/15/53660/22122.terrain new file mode 100644 index 000000000..322d3ecaf Binary files /dev/null and b/public/terrain/15/53660/22122.terrain differ diff --git a/public/terrain/15/53660/22123.terrain b/public/terrain/15/53660/22123.terrain new file mode 100644 index 000000000..f73544df7 Binary files /dev/null and b/public/terrain/15/53660/22123.terrain differ diff --git a/public/terrain/15/53660/22124.terrain b/public/terrain/15/53660/22124.terrain new file mode 100644 index 000000000..479a9b73f Binary files /dev/null and b/public/terrain/15/53660/22124.terrain differ diff --git a/public/terrain/15/53660/22125.terrain b/public/terrain/15/53660/22125.terrain new file mode 100644 index 000000000..3f462041a Binary files /dev/null and b/public/terrain/15/53660/22125.terrain differ diff --git a/public/terrain/15/53660/22126.terrain b/public/terrain/15/53660/22126.terrain new file mode 100644 index 000000000..3e7e1fc4b Binary files /dev/null and b/public/terrain/15/53660/22126.terrain differ diff --git a/public/terrain/15/53660/22127.terrain b/public/terrain/15/53660/22127.terrain new file mode 100644 index 000000000..dcc9d2aa5 Binary files /dev/null and b/public/terrain/15/53660/22127.terrain differ diff --git a/public/terrain/15/53660/22128.terrain b/public/terrain/15/53660/22128.terrain new file mode 100644 index 000000000..3b84478f8 Binary files /dev/null and b/public/terrain/15/53660/22128.terrain differ diff --git a/public/terrain/15/53661/22108.terrain b/public/terrain/15/53661/22108.terrain new file mode 100644 index 000000000..ba77cfd3d Binary files /dev/null and b/public/terrain/15/53661/22108.terrain differ diff --git a/public/terrain/15/53661/22109.terrain b/public/terrain/15/53661/22109.terrain new file mode 100644 index 000000000..d5399a2ca Binary files /dev/null and b/public/terrain/15/53661/22109.terrain differ diff --git a/public/terrain/15/53661/22110.terrain b/public/terrain/15/53661/22110.terrain new file mode 100644 index 000000000..1acc7acf1 Binary files /dev/null and b/public/terrain/15/53661/22110.terrain differ diff --git a/public/terrain/15/53661/22111.terrain b/public/terrain/15/53661/22111.terrain new file mode 100644 index 000000000..5adde3289 Binary files /dev/null and b/public/terrain/15/53661/22111.terrain differ diff --git a/public/terrain/15/53661/22112.terrain b/public/terrain/15/53661/22112.terrain new file mode 100644 index 000000000..db71fe74a Binary files /dev/null and b/public/terrain/15/53661/22112.terrain differ diff --git a/public/terrain/15/53661/22113.terrain b/public/terrain/15/53661/22113.terrain new file mode 100644 index 000000000..cceab25d5 Binary files /dev/null and b/public/terrain/15/53661/22113.terrain differ diff --git a/public/terrain/15/53661/22114.terrain b/public/terrain/15/53661/22114.terrain new file mode 100644 index 000000000..d796552b4 Binary files /dev/null and b/public/terrain/15/53661/22114.terrain differ diff --git a/public/terrain/15/53661/22115.terrain b/public/terrain/15/53661/22115.terrain new file mode 100644 index 000000000..b8d137412 Binary files /dev/null and b/public/terrain/15/53661/22115.terrain differ diff --git a/public/terrain/15/53661/22116.terrain b/public/terrain/15/53661/22116.terrain new file mode 100644 index 000000000..dc71c92a5 Binary files /dev/null and b/public/terrain/15/53661/22116.terrain differ diff --git a/public/terrain/15/53661/22117.terrain b/public/terrain/15/53661/22117.terrain new file mode 100644 index 000000000..e95356c0b Binary files /dev/null and b/public/terrain/15/53661/22117.terrain differ diff --git a/public/terrain/15/53661/22118.terrain b/public/terrain/15/53661/22118.terrain new file mode 100644 index 000000000..0a0cdd7a4 Binary files /dev/null and b/public/terrain/15/53661/22118.terrain differ diff --git a/public/terrain/15/53661/22119.terrain b/public/terrain/15/53661/22119.terrain new file mode 100644 index 000000000..646dc612a Binary files /dev/null and b/public/terrain/15/53661/22119.terrain differ diff --git a/public/terrain/15/53661/22120.terrain b/public/terrain/15/53661/22120.terrain new file mode 100644 index 000000000..aac91a0b4 Binary files /dev/null and b/public/terrain/15/53661/22120.terrain differ diff --git a/public/terrain/15/53661/22121.terrain b/public/terrain/15/53661/22121.terrain new file mode 100644 index 000000000..f7a360961 Binary files /dev/null and b/public/terrain/15/53661/22121.terrain differ diff --git a/public/terrain/15/53661/22122.terrain b/public/terrain/15/53661/22122.terrain new file mode 100644 index 000000000..ba33d5ee2 Binary files /dev/null and b/public/terrain/15/53661/22122.terrain differ diff --git a/public/terrain/15/53661/22123.terrain b/public/terrain/15/53661/22123.terrain new file mode 100644 index 000000000..c9afe676e Binary files /dev/null and b/public/terrain/15/53661/22123.terrain differ diff --git a/public/terrain/15/53661/22124.terrain b/public/terrain/15/53661/22124.terrain new file mode 100644 index 000000000..68d730a73 Binary files /dev/null and b/public/terrain/15/53661/22124.terrain differ diff --git a/public/terrain/15/53661/22125.terrain b/public/terrain/15/53661/22125.terrain new file mode 100644 index 000000000..8ffb73616 Binary files /dev/null and b/public/terrain/15/53661/22125.terrain differ diff --git a/public/terrain/15/53661/22126.terrain b/public/terrain/15/53661/22126.terrain new file mode 100644 index 000000000..f8dcc29e4 Binary files /dev/null and b/public/terrain/15/53661/22126.terrain differ diff --git a/public/terrain/15/53661/22127.terrain b/public/terrain/15/53661/22127.terrain new file mode 100644 index 000000000..e5b39417b Binary files /dev/null and b/public/terrain/15/53661/22127.terrain differ diff --git a/public/terrain/15/53661/22128.terrain b/public/terrain/15/53661/22128.terrain new file mode 100644 index 000000000..4672c69aa Binary files /dev/null and b/public/terrain/15/53661/22128.terrain differ diff --git a/public/terrain/15/53662/22108.terrain b/public/terrain/15/53662/22108.terrain new file mode 100644 index 000000000..3e666175b Binary files /dev/null and b/public/terrain/15/53662/22108.terrain differ diff --git a/public/terrain/15/53662/22109.terrain b/public/terrain/15/53662/22109.terrain new file mode 100644 index 000000000..e1b95a08f Binary files /dev/null and b/public/terrain/15/53662/22109.terrain differ diff --git a/public/terrain/15/53662/22110.terrain b/public/terrain/15/53662/22110.terrain new file mode 100644 index 000000000..30a1214bc Binary files /dev/null and b/public/terrain/15/53662/22110.terrain differ diff --git a/public/terrain/15/53662/22111.terrain b/public/terrain/15/53662/22111.terrain new file mode 100644 index 000000000..182f7ca98 Binary files /dev/null and b/public/terrain/15/53662/22111.terrain differ diff --git a/public/terrain/15/53662/22112.terrain b/public/terrain/15/53662/22112.terrain new file mode 100644 index 000000000..bd5acef70 Binary files /dev/null and b/public/terrain/15/53662/22112.terrain differ diff --git a/public/terrain/15/53662/22113.terrain b/public/terrain/15/53662/22113.terrain new file mode 100644 index 000000000..472e835f9 Binary files /dev/null and b/public/terrain/15/53662/22113.terrain differ diff --git a/public/terrain/15/53662/22114.terrain b/public/terrain/15/53662/22114.terrain new file mode 100644 index 000000000..ca881564f Binary files /dev/null and b/public/terrain/15/53662/22114.terrain differ diff --git a/public/terrain/15/53662/22115.terrain b/public/terrain/15/53662/22115.terrain new file mode 100644 index 000000000..46ab8eb32 Binary files /dev/null and b/public/terrain/15/53662/22115.terrain differ diff --git a/public/terrain/15/53662/22116.terrain b/public/terrain/15/53662/22116.terrain new file mode 100644 index 000000000..14476b0a7 Binary files /dev/null and b/public/terrain/15/53662/22116.terrain differ diff --git a/public/terrain/15/53662/22117.terrain b/public/terrain/15/53662/22117.terrain new file mode 100644 index 000000000..753c3609d Binary files /dev/null and b/public/terrain/15/53662/22117.terrain differ diff --git a/public/terrain/15/53662/22118.terrain b/public/terrain/15/53662/22118.terrain new file mode 100644 index 000000000..adf882c81 Binary files /dev/null and b/public/terrain/15/53662/22118.terrain differ diff --git a/public/terrain/15/53662/22119.terrain b/public/terrain/15/53662/22119.terrain new file mode 100644 index 000000000..e47e29934 Binary files /dev/null and b/public/terrain/15/53662/22119.terrain differ diff --git a/public/terrain/15/53662/22120.terrain b/public/terrain/15/53662/22120.terrain new file mode 100644 index 000000000..7212b99ce Binary files /dev/null and b/public/terrain/15/53662/22120.terrain differ diff --git a/public/terrain/15/53662/22121.terrain b/public/terrain/15/53662/22121.terrain new file mode 100644 index 000000000..61c400232 Binary files /dev/null and b/public/terrain/15/53662/22121.terrain differ diff --git a/public/terrain/15/53662/22122.terrain b/public/terrain/15/53662/22122.terrain new file mode 100644 index 000000000..6b60cce79 Binary files /dev/null and b/public/terrain/15/53662/22122.terrain differ diff --git a/public/terrain/15/53662/22123.terrain b/public/terrain/15/53662/22123.terrain new file mode 100644 index 000000000..bc25706f2 Binary files /dev/null and b/public/terrain/15/53662/22123.terrain differ diff --git a/public/terrain/15/53662/22124.terrain b/public/terrain/15/53662/22124.terrain new file mode 100644 index 000000000..e6d9f7ec6 Binary files /dev/null and b/public/terrain/15/53662/22124.terrain differ diff --git a/public/terrain/15/53662/22125.terrain b/public/terrain/15/53662/22125.terrain new file mode 100644 index 000000000..33907de00 Binary files /dev/null and b/public/terrain/15/53662/22125.terrain differ diff --git a/public/terrain/15/53662/22126.terrain b/public/terrain/15/53662/22126.terrain new file mode 100644 index 000000000..47b5f1cb3 Binary files /dev/null and b/public/terrain/15/53662/22126.terrain differ diff --git a/public/terrain/15/53662/22127.terrain b/public/terrain/15/53662/22127.terrain new file mode 100644 index 000000000..9cf2e2f3f Binary files /dev/null and b/public/terrain/15/53662/22127.terrain differ diff --git a/public/terrain/15/53662/22128.terrain b/public/terrain/15/53662/22128.terrain new file mode 100644 index 000000000..3a1f2aec2 Binary files /dev/null and b/public/terrain/15/53662/22128.terrain differ diff --git a/public/terrain/15/53663/22108.terrain b/public/terrain/15/53663/22108.terrain new file mode 100644 index 000000000..c0d605150 Binary files /dev/null and b/public/terrain/15/53663/22108.terrain differ diff --git a/public/terrain/15/53663/22109.terrain b/public/terrain/15/53663/22109.terrain new file mode 100644 index 000000000..e59bf50fa Binary files /dev/null and b/public/terrain/15/53663/22109.terrain differ diff --git a/public/terrain/15/53663/22110.terrain b/public/terrain/15/53663/22110.terrain new file mode 100644 index 000000000..1db13c7c3 Binary files /dev/null and b/public/terrain/15/53663/22110.terrain differ diff --git a/public/terrain/15/53663/22111.terrain b/public/terrain/15/53663/22111.terrain new file mode 100644 index 000000000..916fa08ea Binary files /dev/null and b/public/terrain/15/53663/22111.terrain differ diff --git a/public/terrain/15/53663/22112.terrain b/public/terrain/15/53663/22112.terrain new file mode 100644 index 000000000..317832387 Binary files /dev/null and b/public/terrain/15/53663/22112.terrain differ diff --git a/public/terrain/15/53663/22113.terrain b/public/terrain/15/53663/22113.terrain new file mode 100644 index 000000000..290880a8c Binary files /dev/null and b/public/terrain/15/53663/22113.terrain differ diff --git a/public/terrain/15/53663/22114.terrain b/public/terrain/15/53663/22114.terrain new file mode 100644 index 000000000..f0e70dd34 Binary files /dev/null and b/public/terrain/15/53663/22114.terrain differ diff --git a/public/terrain/15/53663/22115.terrain b/public/terrain/15/53663/22115.terrain new file mode 100644 index 000000000..87344b43f Binary files /dev/null and b/public/terrain/15/53663/22115.terrain differ diff --git a/public/terrain/15/53663/22116.terrain b/public/terrain/15/53663/22116.terrain new file mode 100644 index 000000000..752b55ef8 Binary files /dev/null and b/public/terrain/15/53663/22116.terrain differ diff --git a/public/terrain/15/53663/22117.terrain b/public/terrain/15/53663/22117.terrain new file mode 100644 index 000000000..268732fb5 Binary files /dev/null and b/public/terrain/15/53663/22117.terrain differ diff --git a/public/terrain/15/53663/22118.terrain b/public/terrain/15/53663/22118.terrain new file mode 100644 index 000000000..571e54b7b Binary files /dev/null and b/public/terrain/15/53663/22118.terrain differ diff --git a/public/terrain/15/53663/22119.terrain b/public/terrain/15/53663/22119.terrain new file mode 100644 index 000000000..f3625e5b2 Binary files /dev/null and b/public/terrain/15/53663/22119.terrain differ diff --git a/public/terrain/15/53663/22120.terrain b/public/terrain/15/53663/22120.terrain new file mode 100644 index 000000000..335c67da9 Binary files /dev/null and b/public/terrain/15/53663/22120.terrain differ diff --git a/public/terrain/15/53663/22121.terrain b/public/terrain/15/53663/22121.terrain new file mode 100644 index 000000000..93b219099 Binary files /dev/null and b/public/terrain/15/53663/22121.terrain differ diff --git a/public/terrain/15/53663/22122.terrain b/public/terrain/15/53663/22122.terrain new file mode 100644 index 000000000..4646d82e8 Binary files /dev/null and b/public/terrain/15/53663/22122.terrain differ diff --git a/public/terrain/15/53663/22123.terrain b/public/terrain/15/53663/22123.terrain new file mode 100644 index 000000000..9259df1b6 Binary files /dev/null and b/public/terrain/15/53663/22123.terrain differ diff --git a/public/terrain/15/53663/22124.terrain b/public/terrain/15/53663/22124.terrain new file mode 100644 index 000000000..06dfbede3 Binary files /dev/null and b/public/terrain/15/53663/22124.terrain differ diff --git a/public/terrain/15/53663/22125.terrain b/public/terrain/15/53663/22125.terrain new file mode 100644 index 000000000..6210e6ae6 Binary files /dev/null and b/public/terrain/15/53663/22125.terrain differ diff --git a/public/terrain/15/53663/22126.terrain b/public/terrain/15/53663/22126.terrain new file mode 100644 index 000000000..31d9fe813 Binary files /dev/null and b/public/terrain/15/53663/22126.terrain differ diff --git a/public/terrain/15/53663/22127.terrain b/public/terrain/15/53663/22127.terrain new file mode 100644 index 000000000..bf5781aba Binary files /dev/null and b/public/terrain/15/53663/22127.terrain differ diff --git a/public/terrain/15/53663/22128.terrain b/public/terrain/15/53663/22128.terrain new file mode 100644 index 000000000..d9c86d680 Binary files /dev/null and b/public/terrain/15/53663/22128.terrain differ diff --git a/public/terrain/16/107308/44217.terrain b/public/terrain/16/107308/44217.terrain new file mode 100644 index 000000000..008723ccb Binary files /dev/null and b/public/terrain/16/107308/44217.terrain differ diff --git a/public/terrain/16/107308/44218.terrain b/public/terrain/16/107308/44218.terrain new file mode 100644 index 000000000..183e9192f Binary files /dev/null and b/public/terrain/16/107308/44218.terrain differ diff --git a/public/terrain/16/107308/44219.terrain b/public/terrain/16/107308/44219.terrain new file mode 100644 index 000000000..21701b9a4 Binary files /dev/null and b/public/terrain/16/107308/44219.terrain differ diff --git a/public/terrain/16/107308/44220.terrain b/public/terrain/16/107308/44220.terrain new file mode 100644 index 000000000..09dae4517 Binary files /dev/null and b/public/terrain/16/107308/44220.terrain differ diff --git a/public/terrain/16/107308/44221.terrain b/public/terrain/16/107308/44221.terrain new file mode 100644 index 000000000..a07b7dba3 Binary files /dev/null and b/public/terrain/16/107308/44221.terrain differ diff --git a/public/terrain/16/107308/44222.terrain b/public/terrain/16/107308/44222.terrain new file mode 100644 index 000000000..b55d991e7 Binary files /dev/null and b/public/terrain/16/107308/44222.terrain differ diff --git a/public/terrain/16/107308/44223.terrain b/public/terrain/16/107308/44223.terrain new file mode 100644 index 000000000..a6b9f6d81 Binary files /dev/null and b/public/terrain/16/107308/44223.terrain differ diff --git a/public/terrain/16/107308/44224.terrain b/public/terrain/16/107308/44224.terrain new file mode 100644 index 000000000..ff2c3c588 Binary files /dev/null and b/public/terrain/16/107308/44224.terrain differ diff --git a/public/terrain/16/107308/44225.terrain b/public/terrain/16/107308/44225.terrain new file mode 100644 index 000000000..ce43f6973 Binary files /dev/null and b/public/terrain/16/107308/44225.terrain differ diff --git a/public/terrain/16/107308/44226.terrain b/public/terrain/16/107308/44226.terrain new file mode 100644 index 000000000..6f373be03 Binary files /dev/null and b/public/terrain/16/107308/44226.terrain differ diff --git a/public/terrain/16/107308/44227.terrain b/public/terrain/16/107308/44227.terrain new file mode 100644 index 000000000..676423291 Binary files /dev/null and b/public/terrain/16/107308/44227.terrain differ diff --git a/public/terrain/16/107308/44228.terrain b/public/terrain/16/107308/44228.terrain new file mode 100644 index 000000000..9b8809739 Binary files /dev/null and b/public/terrain/16/107308/44228.terrain differ diff --git a/public/terrain/16/107308/44229.terrain b/public/terrain/16/107308/44229.terrain new file mode 100644 index 000000000..953f69896 Binary files /dev/null and b/public/terrain/16/107308/44229.terrain differ diff --git a/public/terrain/16/107308/44230.terrain b/public/terrain/16/107308/44230.terrain new file mode 100644 index 000000000..6a845d431 Binary files /dev/null and b/public/terrain/16/107308/44230.terrain differ diff --git a/public/terrain/16/107308/44231.terrain b/public/terrain/16/107308/44231.terrain new file mode 100644 index 000000000..86cc56b17 Binary files /dev/null and b/public/terrain/16/107308/44231.terrain differ diff --git a/public/terrain/16/107308/44232.terrain b/public/terrain/16/107308/44232.terrain new file mode 100644 index 000000000..168f7748a Binary files /dev/null and b/public/terrain/16/107308/44232.terrain differ diff --git a/public/terrain/16/107308/44233.terrain b/public/terrain/16/107308/44233.terrain new file mode 100644 index 000000000..5a54a861f Binary files /dev/null and b/public/terrain/16/107308/44233.terrain differ diff --git a/public/terrain/16/107308/44234.terrain b/public/terrain/16/107308/44234.terrain new file mode 100644 index 000000000..3f2ee6946 Binary files /dev/null and b/public/terrain/16/107308/44234.terrain differ diff --git a/public/terrain/16/107308/44235.terrain b/public/terrain/16/107308/44235.terrain new file mode 100644 index 000000000..19502e84c Binary files /dev/null and b/public/terrain/16/107308/44235.terrain differ diff --git a/public/terrain/16/107308/44236.terrain b/public/terrain/16/107308/44236.terrain new file mode 100644 index 000000000..1d3d379b0 Binary files /dev/null and b/public/terrain/16/107308/44236.terrain differ diff --git a/public/terrain/16/107308/44237.terrain b/public/terrain/16/107308/44237.terrain new file mode 100644 index 000000000..f40114330 Binary files /dev/null and b/public/terrain/16/107308/44237.terrain differ diff --git a/public/terrain/16/107308/44238.terrain b/public/terrain/16/107308/44238.terrain new file mode 100644 index 000000000..7a72f6af3 Binary files /dev/null and b/public/terrain/16/107308/44238.terrain differ diff --git a/public/terrain/16/107308/44239.terrain b/public/terrain/16/107308/44239.terrain new file mode 100644 index 000000000..1255c3693 Binary files /dev/null and b/public/terrain/16/107308/44239.terrain differ diff --git a/public/terrain/16/107308/44240.terrain b/public/terrain/16/107308/44240.terrain new file mode 100644 index 000000000..f1765315d Binary files /dev/null and b/public/terrain/16/107308/44240.terrain differ diff --git a/public/terrain/16/107308/44241.terrain b/public/terrain/16/107308/44241.terrain new file mode 100644 index 000000000..b66e60991 Binary files /dev/null and b/public/terrain/16/107308/44241.terrain differ diff --git a/public/terrain/16/107308/44242.terrain b/public/terrain/16/107308/44242.terrain new file mode 100644 index 000000000..7515b11fc Binary files /dev/null and b/public/terrain/16/107308/44242.terrain differ diff --git a/public/terrain/16/107308/44243.terrain b/public/terrain/16/107308/44243.terrain new file mode 100644 index 000000000..880fcab16 Binary files /dev/null and b/public/terrain/16/107308/44243.terrain differ diff --git a/public/terrain/16/107308/44244.terrain b/public/terrain/16/107308/44244.terrain new file mode 100644 index 000000000..9473418bc Binary files /dev/null and b/public/terrain/16/107308/44244.terrain differ diff --git a/public/terrain/16/107308/44245.terrain b/public/terrain/16/107308/44245.terrain new file mode 100644 index 000000000..10e5658f7 Binary files /dev/null and b/public/terrain/16/107308/44245.terrain differ diff --git a/public/terrain/16/107308/44246.terrain b/public/terrain/16/107308/44246.terrain new file mode 100644 index 000000000..fd4360214 Binary files /dev/null and b/public/terrain/16/107308/44246.terrain differ diff --git a/public/terrain/16/107308/44247.terrain b/public/terrain/16/107308/44247.terrain new file mode 100644 index 000000000..56943f706 Binary files /dev/null and b/public/terrain/16/107308/44247.terrain differ diff --git a/public/terrain/16/107308/44248.terrain b/public/terrain/16/107308/44248.terrain new file mode 100644 index 000000000..eecf63d7b Binary files /dev/null and b/public/terrain/16/107308/44248.terrain differ diff --git a/public/terrain/16/107308/44249.terrain b/public/terrain/16/107308/44249.terrain new file mode 100644 index 000000000..0764face0 Binary files /dev/null and b/public/terrain/16/107308/44249.terrain differ diff --git a/public/terrain/16/107308/44250.terrain b/public/terrain/16/107308/44250.terrain new file mode 100644 index 000000000..32cd1b94e Binary files /dev/null and b/public/terrain/16/107308/44250.terrain differ diff --git a/public/terrain/16/107308/44251.terrain b/public/terrain/16/107308/44251.terrain new file mode 100644 index 000000000..5b9aabed0 Binary files /dev/null and b/public/terrain/16/107308/44251.terrain differ diff --git a/public/terrain/16/107308/44252.terrain b/public/terrain/16/107308/44252.terrain new file mode 100644 index 000000000..fd0c26718 Binary files /dev/null and b/public/terrain/16/107308/44252.terrain differ diff --git a/public/terrain/16/107308/44253.terrain b/public/terrain/16/107308/44253.terrain new file mode 100644 index 000000000..e44aa8c73 Binary files /dev/null and b/public/terrain/16/107308/44253.terrain differ diff --git a/public/terrain/16/107308/44254.terrain b/public/terrain/16/107308/44254.terrain new file mode 100644 index 000000000..d4f2e417b Binary files /dev/null and b/public/terrain/16/107308/44254.terrain differ diff --git a/public/terrain/16/107308/44255.terrain b/public/terrain/16/107308/44255.terrain new file mode 100644 index 000000000..da994a56f Binary files /dev/null and b/public/terrain/16/107308/44255.terrain differ diff --git a/public/terrain/16/107308/44256.terrain b/public/terrain/16/107308/44256.terrain new file mode 100644 index 000000000..4ce90ffab Binary files /dev/null and b/public/terrain/16/107308/44256.terrain differ diff --git a/public/terrain/16/107308/44257.terrain b/public/terrain/16/107308/44257.terrain new file mode 100644 index 000000000..d7e02bb42 Binary files /dev/null and b/public/terrain/16/107308/44257.terrain differ diff --git a/public/terrain/16/107309/44217.terrain b/public/terrain/16/107309/44217.terrain new file mode 100644 index 000000000..a2fa617f3 Binary files /dev/null and b/public/terrain/16/107309/44217.terrain differ diff --git a/public/terrain/16/107309/44218.terrain b/public/terrain/16/107309/44218.terrain new file mode 100644 index 000000000..581579fe6 Binary files /dev/null and b/public/terrain/16/107309/44218.terrain differ diff --git a/public/terrain/16/107309/44219.terrain b/public/terrain/16/107309/44219.terrain new file mode 100644 index 000000000..02a0d015f Binary files /dev/null and b/public/terrain/16/107309/44219.terrain differ diff --git a/public/terrain/16/107309/44220.terrain b/public/terrain/16/107309/44220.terrain new file mode 100644 index 000000000..68a4bc6c8 Binary files /dev/null and b/public/terrain/16/107309/44220.terrain differ diff --git a/public/terrain/16/107309/44221.terrain b/public/terrain/16/107309/44221.terrain new file mode 100644 index 000000000..c8b45537a Binary files /dev/null and b/public/terrain/16/107309/44221.terrain differ diff --git a/public/terrain/16/107309/44222.terrain b/public/terrain/16/107309/44222.terrain new file mode 100644 index 000000000..72f7d2638 Binary files /dev/null and b/public/terrain/16/107309/44222.terrain differ diff --git a/public/terrain/16/107309/44223.terrain b/public/terrain/16/107309/44223.terrain new file mode 100644 index 000000000..5d6afe8f7 Binary files /dev/null and b/public/terrain/16/107309/44223.terrain differ diff --git a/public/terrain/16/107309/44224.terrain b/public/terrain/16/107309/44224.terrain new file mode 100644 index 000000000..797bb5d1b Binary files /dev/null and b/public/terrain/16/107309/44224.terrain differ diff --git a/public/terrain/16/107309/44225.terrain b/public/terrain/16/107309/44225.terrain new file mode 100644 index 000000000..7b8ad0290 Binary files /dev/null and b/public/terrain/16/107309/44225.terrain differ diff --git a/public/terrain/16/107309/44226.terrain b/public/terrain/16/107309/44226.terrain new file mode 100644 index 000000000..ffcc76b8c Binary files /dev/null and b/public/terrain/16/107309/44226.terrain differ diff --git a/public/terrain/16/107309/44227.terrain b/public/terrain/16/107309/44227.terrain new file mode 100644 index 000000000..c44c9fc18 Binary files /dev/null and b/public/terrain/16/107309/44227.terrain differ diff --git a/public/terrain/16/107309/44228.terrain b/public/terrain/16/107309/44228.terrain new file mode 100644 index 000000000..b943333fe Binary files /dev/null and b/public/terrain/16/107309/44228.terrain differ diff --git a/public/terrain/16/107309/44229.terrain b/public/terrain/16/107309/44229.terrain new file mode 100644 index 000000000..0341674db Binary files /dev/null and b/public/terrain/16/107309/44229.terrain differ diff --git a/public/terrain/16/107309/44230.terrain b/public/terrain/16/107309/44230.terrain new file mode 100644 index 000000000..460eb60d5 Binary files /dev/null and b/public/terrain/16/107309/44230.terrain differ diff --git a/public/terrain/16/107309/44231.terrain b/public/terrain/16/107309/44231.terrain new file mode 100644 index 000000000..6ed427bfa Binary files /dev/null and b/public/terrain/16/107309/44231.terrain differ diff --git a/public/terrain/16/107309/44232.terrain b/public/terrain/16/107309/44232.terrain new file mode 100644 index 000000000..2cb4f4611 Binary files /dev/null and b/public/terrain/16/107309/44232.terrain differ diff --git a/public/terrain/16/107309/44233.terrain b/public/terrain/16/107309/44233.terrain new file mode 100644 index 000000000..c4c8e713f Binary files /dev/null and b/public/terrain/16/107309/44233.terrain differ diff --git a/public/terrain/16/107309/44234.terrain b/public/terrain/16/107309/44234.terrain new file mode 100644 index 000000000..a43d15e5d Binary files /dev/null and b/public/terrain/16/107309/44234.terrain differ diff --git a/public/terrain/16/107309/44235.terrain b/public/terrain/16/107309/44235.terrain new file mode 100644 index 000000000..056a31ce4 Binary files /dev/null and b/public/terrain/16/107309/44235.terrain differ diff --git a/public/terrain/16/107309/44236.terrain b/public/terrain/16/107309/44236.terrain new file mode 100644 index 000000000..244afb9df Binary files /dev/null and b/public/terrain/16/107309/44236.terrain differ diff --git a/public/terrain/16/107309/44237.terrain b/public/terrain/16/107309/44237.terrain new file mode 100644 index 000000000..5459eb7d9 Binary files /dev/null and b/public/terrain/16/107309/44237.terrain differ diff --git a/public/terrain/16/107309/44238.terrain b/public/terrain/16/107309/44238.terrain new file mode 100644 index 000000000..c03783c3a Binary files /dev/null and b/public/terrain/16/107309/44238.terrain differ diff --git a/public/terrain/16/107309/44239.terrain b/public/terrain/16/107309/44239.terrain new file mode 100644 index 000000000..8e15c8ef3 Binary files /dev/null and b/public/terrain/16/107309/44239.terrain differ diff --git a/public/terrain/16/107309/44240.terrain b/public/terrain/16/107309/44240.terrain new file mode 100644 index 000000000..c473e2495 Binary files /dev/null and b/public/terrain/16/107309/44240.terrain differ diff --git a/public/terrain/16/107309/44241.terrain b/public/terrain/16/107309/44241.terrain new file mode 100644 index 000000000..f49d06b58 Binary files /dev/null and b/public/terrain/16/107309/44241.terrain differ diff --git a/public/terrain/16/107309/44242.terrain b/public/terrain/16/107309/44242.terrain new file mode 100644 index 000000000..b82592200 Binary files /dev/null and b/public/terrain/16/107309/44242.terrain differ diff --git a/public/terrain/16/107309/44243.terrain b/public/terrain/16/107309/44243.terrain new file mode 100644 index 000000000..7f8f5cafd Binary files /dev/null and b/public/terrain/16/107309/44243.terrain differ diff --git a/public/terrain/16/107309/44244.terrain b/public/terrain/16/107309/44244.terrain new file mode 100644 index 000000000..4f0e920a5 Binary files /dev/null and b/public/terrain/16/107309/44244.terrain differ diff --git a/public/terrain/16/107309/44245.terrain b/public/terrain/16/107309/44245.terrain new file mode 100644 index 000000000..ddb5d554d Binary files /dev/null and b/public/terrain/16/107309/44245.terrain differ diff --git a/public/terrain/16/107309/44246.terrain b/public/terrain/16/107309/44246.terrain new file mode 100644 index 000000000..55595c629 Binary files /dev/null and b/public/terrain/16/107309/44246.terrain differ diff --git a/public/terrain/16/107309/44247.terrain b/public/terrain/16/107309/44247.terrain new file mode 100644 index 000000000..66874d366 Binary files /dev/null and b/public/terrain/16/107309/44247.terrain differ diff --git a/public/terrain/16/107309/44248.terrain b/public/terrain/16/107309/44248.terrain new file mode 100644 index 000000000..68f991813 Binary files /dev/null and b/public/terrain/16/107309/44248.terrain differ diff --git a/public/terrain/16/107309/44249.terrain b/public/terrain/16/107309/44249.terrain new file mode 100644 index 000000000..ce532ef37 Binary files /dev/null and b/public/terrain/16/107309/44249.terrain differ diff --git a/public/terrain/16/107309/44250.terrain b/public/terrain/16/107309/44250.terrain new file mode 100644 index 000000000..6c6f33541 Binary files /dev/null and b/public/terrain/16/107309/44250.terrain differ diff --git a/public/terrain/16/107309/44251.terrain b/public/terrain/16/107309/44251.terrain new file mode 100644 index 000000000..97edb2507 Binary files /dev/null and b/public/terrain/16/107309/44251.terrain differ diff --git a/public/terrain/16/107309/44252.terrain b/public/terrain/16/107309/44252.terrain new file mode 100644 index 000000000..225c5e17b Binary files /dev/null and b/public/terrain/16/107309/44252.terrain differ diff --git a/public/terrain/16/107309/44253.terrain b/public/terrain/16/107309/44253.terrain new file mode 100644 index 000000000..1786e1c32 Binary files /dev/null and b/public/terrain/16/107309/44253.terrain differ diff --git a/public/terrain/16/107309/44254.terrain b/public/terrain/16/107309/44254.terrain new file mode 100644 index 000000000..3b76cd64d Binary files /dev/null and b/public/terrain/16/107309/44254.terrain differ diff --git a/public/terrain/16/107309/44255.terrain b/public/terrain/16/107309/44255.terrain new file mode 100644 index 000000000..45c9122d6 Binary files /dev/null and b/public/terrain/16/107309/44255.terrain differ diff --git a/public/terrain/16/107309/44256.terrain b/public/terrain/16/107309/44256.terrain new file mode 100644 index 000000000..68f0a671d Binary files /dev/null and b/public/terrain/16/107309/44256.terrain differ diff --git a/public/terrain/16/107309/44257.terrain b/public/terrain/16/107309/44257.terrain new file mode 100644 index 000000000..dacf6ba06 Binary files /dev/null and b/public/terrain/16/107309/44257.terrain differ diff --git a/public/terrain/16/107310/44217.terrain b/public/terrain/16/107310/44217.terrain new file mode 100644 index 000000000..338e663cc Binary files /dev/null and b/public/terrain/16/107310/44217.terrain differ diff --git a/public/terrain/16/107310/44218.terrain b/public/terrain/16/107310/44218.terrain new file mode 100644 index 000000000..88694f340 Binary files /dev/null and b/public/terrain/16/107310/44218.terrain differ diff --git a/public/terrain/16/107310/44219.terrain b/public/terrain/16/107310/44219.terrain new file mode 100644 index 000000000..7d44c67ba Binary files /dev/null and b/public/terrain/16/107310/44219.terrain differ diff --git a/public/terrain/16/107310/44220.terrain b/public/terrain/16/107310/44220.terrain new file mode 100644 index 000000000..f90f583d5 Binary files /dev/null and b/public/terrain/16/107310/44220.terrain differ diff --git a/public/terrain/16/107310/44221.terrain b/public/terrain/16/107310/44221.terrain new file mode 100644 index 000000000..61ec1c767 Binary files /dev/null and b/public/terrain/16/107310/44221.terrain differ diff --git a/public/terrain/16/107310/44222.terrain b/public/terrain/16/107310/44222.terrain new file mode 100644 index 000000000..0fd21d1a8 Binary files /dev/null and b/public/terrain/16/107310/44222.terrain differ diff --git a/public/terrain/16/107310/44223.terrain b/public/terrain/16/107310/44223.terrain new file mode 100644 index 000000000..5f02be86e Binary files /dev/null and b/public/terrain/16/107310/44223.terrain differ diff --git a/public/terrain/16/107310/44224.terrain b/public/terrain/16/107310/44224.terrain new file mode 100644 index 000000000..7aceaa043 Binary files /dev/null and b/public/terrain/16/107310/44224.terrain differ diff --git a/public/terrain/16/107310/44225.terrain b/public/terrain/16/107310/44225.terrain new file mode 100644 index 000000000..5eda34576 Binary files /dev/null and b/public/terrain/16/107310/44225.terrain differ diff --git a/public/terrain/16/107310/44226.terrain b/public/terrain/16/107310/44226.terrain new file mode 100644 index 000000000..f896711a4 Binary files /dev/null and b/public/terrain/16/107310/44226.terrain differ diff --git a/public/terrain/16/107310/44227.terrain b/public/terrain/16/107310/44227.terrain new file mode 100644 index 000000000..2addd6eb2 Binary files /dev/null and b/public/terrain/16/107310/44227.terrain differ diff --git a/public/terrain/16/107310/44228.terrain b/public/terrain/16/107310/44228.terrain new file mode 100644 index 000000000..ee481ed70 Binary files /dev/null and b/public/terrain/16/107310/44228.terrain differ diff --git a/public/terrain/16/107310/44229.terrain b/public/terrain/16/107310/44229.terrain new file mode 100644 index 000000000..011adf274 Binary files /dev/null and b/public/terrain/16/107310/44229.terrain differ diff --git a/public/terrain/16/107310/44230.terrain b/public/terrain/16/107310/44230.terrain new file mode 100644 index 000000000..6330e77c3 Binary files /dev/null and b/public/terrain/16/107310/44230.terrain differ diff --git a/public/terrain/16/107310/44231.terrain b/public/terrain/16/107310/44231.terrain new file mode 100644 index 000000000..45daa905e Binary files /dev/null and b/public/terrain/16/107310/44231.terrain differ diff --git a/public/terrain/16/107310/44232.terrain b/public/terrain/16/107310/44232.terrain new file mode 100644 index 000000000..38fac8f5e Binary files /dev/null and b/public/terrain/16/107310/44232.terrain differ diff --git a/public/terrain/16/107310/44233.terrain b/public/terrain/16/107310/44233.terrain new file mode 100644 index 000000000..c61be239a Binary files /dev/null and b/public/terrain/16/107310/44233.terrain differ diff --git a/public/terrain/16/107310/44234.terrain b/public/terrain/16/107310/44234.terrain new file mode 100644 index 000000000..ca1f64cc7 Binary files /dev/null and b/public/terrain/16/107310/44234.terrain differ diff --git a/public/terrain/16/107310/44235.terrain b/public/terrain/16/107310/44235.terrain new file mode 100644 index 000000000..289175e66 Binary files /dev/null and b/public/terrain/16/107310/44235.terrain differ diff --git a/public/terrain/16/107310/44236.terrain b/public/terrain/16/107310/44236.terrain new file mode 100644 index 000000000..80fa0f4e3 Binary files /dev/null and b/public/terrain/16/107310/44236.terrain differ diff --git a/public/terrain/16/107310/44237.terrain b/public/terrain/16/107310/44237.terrain new file mode 100644 index 000000000..b931c8706 Binary files /dev/null and b/public/terrain/16/107310/44237.terrain differ diff --git a/public/terrain/16/107310/44238.terrain b/public/terrain/16/107310/44238.terrain new file mode 100644 index 000000000..0145ea2b8 Binary files /dev/null and b/public/terrain/16/107310/44238.terrain differ diff --git a/public/terrain/16/107310/44239.terrain b/public/terrain/16/107310/44239.terrain new file mode 100644 index 000000000..00df41399 Binary files /dev/null and b/public/terrain/16/107310/44239.terrain differ diff --git a/public/terrain/16/107310/44240.terrain b/public/terrain/16/107310/44240.terrain new file mode 100644 index 000000000..3983febcb Binary files /dev/null and b/public/terrain/16/107310/44240.terrain differ diff --git a/public/terrain/16/107310/44241.terrain b/public/terrain/16/107310/44241.terrain new file mode 100644 index 000000000..0eb4dc153 Binary files /dev/null and b/public/terrain/16/107310/44241.terrain differ diff --git a/public/terrain/16/107310/44242.terrain b/public/terrain/16/107310/44242.terrain new file mode 100644 index 000000000..9d5f818c5 Binary files /dev/null and b/public/terrain/16/107310/44242.terrain differ diff --git a/public/terrain/16/107310/44243.terrain b/public/terrain/16/107310/44243.terrain new file mode 100644 index 000000000..76c16567e Binary files /dev/null and b/public/terrain/16/107310/44243.terrain differ diff --git a/public/terrain/16/107310/44244.terrain b/public/terrain/16/107310/44244.terrain new file mode 100644 index 000000000..53628359d Binary files /dev/null and b/public/terrain/16/107310/44244.terrain differ diff --git a/public/terrain/16/107310/44245.terrain b/public/terrain/16/107310/44245.terrain new file mode 100644 index 000000000..8f117b19c Binary files /dev/null and b/public/terrain/16/107310/44245.terrain differ diff --git a/public/terrain/16/107310/44246.terrain b/public/terrain/16/107310/44246.terrain new file mode 100644 index 000000000..f73164c43 Binary files /dev/null and b/public/terrain/16/107310/44246.terrain differ diff --git a/public/terrain/16/107310/44247.terrain b/public/terrain/16/107310/44247.terrain new file mode 100644 index 000000000..79f576f6d Binary files /dev/null and b/public/terrain/16/107310/44247.terrain differ diff --git a/public/terrain/16/107310/44248.terrain b/public/terrain/16/107310/44248.terrain new file mode 100644 index 000000000..794c6951e Binary files /dev/null and b/public/terrain/16/107310/44248.terrain differ diff --git a/public/terrain/16/107310/44249.terrain b/public/terrain/16/107310/44249.terrain new file mode 100644 index 000000000..1c8428e68 Binary files /dev/null and b/public/terrain/16/107310/44249.terrain differ diff --git a/public/terrain/16/107310/44250.terrain b/public/terrain/16/107310/44250.terrain new file mode 100644 index 000000000..f971c2a16 Binary files /dev/null and b/public/terrain/16/107310/44250.terrain differ diff --git a/public/terrain/16/107310/44251.terrain b/public/terrain/16/107310/44251.terrain new file mode 100644 index 000000000..aaea9390e Binary files /dev/null and b/public/terrain/16/107310/44251.terrain differ diff --git a/public/terrain/16/107310/44252.terrain b/public/terrain/16/107310/44252.terrain new file mode 100644 index 000000000..a1b9e3f9a Binary files /dev/null and b/public/terrain/16/107310/44252.terrain differ diff --git a/public/terrain/16/107310/44253.terrain b/public/terrain/16/107310/44253.terrain new file mode 100644 index 000000000..b7a427dc1 Binary files /dev/null and b/public/terrain/16/107310/44253.terrain differ diff --git a/public/terrain/16/107310/44254.terrain b/public/terrain/16/107310/44254.terrain new file mode 100644 index 000000000..d73e14746 Binary files /dev/null and b/public/terrain/16/107310/44254.terrain differ diff --git a/public/terrain/16/107310/44255.terrain b/public/terrain/16/107310/44255.terrain new file mode 100644 index 000000000..69cb0ddc5 Binary files /dev/null and b/public/terrain/16/107310/44255.terrain differ diff --git a/public/terrain/16/107310/44256.terrain b/public/terrain/16/107310/44256.terrain new file mode 100644 index 000000000..60fb93ac8 Binary files /dev/null and b/public/terrain/16/107310/44256.terrain differ diff --git a/public/terrain/16/107310/44257.terrain b/public/terrain/16/107310/44257.terrain new file mode 100644 index 000000000..1c591bbf2 Binary files /dev/null and b/public/terrain/16/107310/44257.terrain differ diff --git a/public/terrain/16/107311/44217.terrain b/public/terrain/16/107311/44217.terrain new file mode 100644 index 000000000..d31379a95 Binary files /dev/null and b/public/terrain/16/107311/44217.terrain differ diff --git a/public/terrain/16/107311/44218.terrain b/public/terrain/16/107311/44218.terrain new file mode 100644 index 000000000..0cdf10ff6 Binary files /dev/null and b/public/terrain/16/107311/44218.terrain differ diff --git a/public/terrain/16/107311/44219.terrain b/public/terrain/16/107311/44219.terrain new file mode 100644 index 000000000..c401ec3e3 Binary files /dev/null and b/public/terrain/16/107311/44219.terrain differ diff --git a/public/terrain/16/107311/44220.terrain b/public/terrain/16/107311/44220.terrain new file mode 100644 index 000000000..e81b935b5 Binary files /dev/null and b/public/terrain/16/107311/44220.terrain differ diff --git a/public/terrain/16/107311/44221.terrain b/public/terrain/16/107311/44221.terrain new file mode 100644 index 000000000..2f227f8d4 Binary files /dev/null and b/public/terrain/16/107311/44221.terrain differ diff --git a/public/terrain/16/107311/44222.terrain b/public/terrain/16/107311/44222.terrain new file mode 100644 index 000000000..4b1bd98b7 Binary files /dev/null and b/public/terrain/16/107311/44222.terrain differ diff --git a/public/terrain/16/107311/44223.terrain b/public/terrain/16/107311/44223.terrain new file mode 100644 index 000000000..6f7c28270 Binary files /dev/null and b/public/terrain/16/107311/44223.terrain differ diff --git a/public/terrain/16/107311/44224.terrain b/public/terrain/16/107311/44224.terrain new file mode 100644 index 000000000..3693e0dc6 Binary files /dev/null and b/public/terrain/16/107311/44224.terrain differ diff --git a/public/terrain/16/107311/44225.terrain b/public/terrain/16/107311/44225.terrain new file mode 100644 index 000000000..6621d13bb Binary files /dev/null and b/public/terrain/16/107311/44225.terrain differ diff --git a/public/terrain/16/107311/44226.terrain b/public/terrain/16/107311/44226.terrain new file mode 100644 index 000000000..a2427ab1d Binary files /dev/null and b/public/terrain/16/107311/44226.terrain differ diff --git a/public/terrain/16/107311/44227.terrain b/public/terrain/16/107311/44227.terrain new file mode 100644 index 000000000..95a12370b Binary files /dev/null and b/public/terrain/16/107311/44227.terrain differ diff --git a/public/terrain/16/107311/44228.terrain b/public/terrain/16/107311/44228.terrain new file mode 100644 index 000000000..c699534bb Binary files /dev/null and b/public/terrain/16/107311/44228.terrain differ diff --git a/public/terrain/16/107311/44229.terrain b/public/terrain/16/107311/44229.terrain new file mode 100644 index 000000000..f7437b5f6 Binary files /dev/null and b/public/terrain/16/107311/44229.terrain differ diff --git a/public/terrain/16/107311/44230.terrain b/public/terrain/16/107311/44230.terrain new file mode 100644 index 000000000..74836b5e0 Binary files /dev/null and b/public/terrain/16/107311/44230.terrain differ diff --git a/public/terrain/16/107311/44231.terrain b/public/terrain/16/107311/44231.terrain new file mode 100644 index 000000000..12fad4170 Binary files /dev/null and b/public/terrain/16/107311/44231.terrain differ diff --git a/public/terrain/16/107311/44232.terrain b/public/terrain/16/107311/44232.terrain new file mode 100644 index 000000000..f8aea41a7 Binary files /dev/null and b/public/terrain/16/107311/44232.terrain differ diff --git a/public/terrain/16/107311/44233.terrain b/public/terrain/16/107311/44233.terrain new file mode 100644 index 000000000..e392752b2 Binary files /dev/null and b/public/terrain/16/107311/44233.terrain differ diff --git a/public/terrain/16/107311/44234.terrain b/public/terrain/16/107311/44234.terrain new file mode 100644 index 000000000..d63821dce Binary files /dev/null and b/public/terrain/16/107311/44234.terrain differ diff --git a/public/terrain/16/107311/44235.terrain b/public/terrain/16/107311/44235.terrain new file mode 100644 index 000000000..b74ebec0c Binary files /dev/null and b/public/terrain/16/107311/44235.terrain differ diff --git a/public/terrain/16/107311/44236.terrain b/public/terrain/16/107311/44236.terrain new file mode 100644 index 000000000..dc646b3d6 Binary files /dev/null and b/public/terrain/16/107311/44236.terrain differ diff --git a/public/terrain/16/107311/44237.terrain b/public/terrain/16/107311/44237.terrain new file mode 100644 index 000000000..74cc1868c Binary files /dev/null and b/public/terrain/16/107311/44237.terrain differ diff --git a/public/terrain/16/107311/44238.terrain b/public/terrain/16/107311/44238.terrain new file mode 100644 index 000000000..0c2c06e65 Binary files /dev/null and b/public/terrain/16/107311/44238.terrain differ diff --git a/public/terrain/16/107311/44239.terrain b/public/terrain/16/107311/44239.terrain new file mode 100644 index 000000000..e9266d7cb Binary files /dev/null and b/public/terrain/16/107311/44239.terrain differ diff --git a/public/terrain/16/107311/44240.terrain b/public/terrain/16/107311/44240.terrain new file mode 100644 index 000000000..8a4b3a9a3 Binary files /dev/null and b/public/terrain/16/107311/44240.terrain differ diff --git a/public/terrain/16/107311/44241.terrain b/public/terrain/16/107311/44241.terrain new file mode 100644 index 000000000..b1a462068 Binary files /dev/null and b/public/terrain/16/107311/44241.terrain differ diff --git a/public/terrain/16/107311/44242.terrain b/public/terrain/16/107311/44242.terrain new file mode 100644 index 000000000..3d9abcf76 Binary files /dev/null and b/public/terrain/16/107311/44242.terrain differ diff --git a/public/terrain/16/107311/44243.terrain b/public/terrain/16/107311/44243.terrain new file mode 100644 index 000000000..35bb06853 Binary files /dev/null and b/public/terrain/16/107311/44243.terrain differ diff --git a/public/terrain/16/107311/44244.terrain b/public/terrain/16/107311/44244.terrain new file mode 100644 index 000000000..59f688648 Binary files /dev/null and b/public/terrain/16/107311/44244.terrain differ diff --git a/public/terrain/16/107311/44245.terrain b/public/terrain/16/107311/44245.terrain new file mode 100644 index 000000000..852ee826c Binary files /dev/null and b/public/terrain/16/107311/44245.terrain differ diff --git a/public/terrain/16/107311/44246.terrain b/public/terrain/16/107311/44246.terrain new file mode 100644 index 000000000..77b0d6ee3 Binary files /dev/null and b/public/terrain/16/107311/44246.terrain differ diff --git a/public/terrain/16/107311/44247.terrain b/public/terrain/16/107311/44247.terrain new file mode 100644 index 000000000..364bb42ea Binary files /dev/null and b/public/terrain/16/107311/44247.terrain differ diff --git a/public/terrain/16/107311/44248.terrain b/public/terrain/16/107311/44248.terrain new file mode 100644 index 000000000..fe00f46e1 Binary files /dev/null and b/public/terrain/16/107311/44248.terrain differ diff --git a/public/terrain/16/107311/44249.terrain b/public/terrain/16/107311/44249.terrain new file mode 100644 index 000000000..db06a7f55 Binary files /dev/null and b/public/terrain/16/107311/44249.terrain differ diff --git a/public/terrain/16/107311/44250.terrain b/public/terrain/16/107311/44250.terrain new file mode 100644 index 000000000..c9376b3b6 Binary files /dev/null and b/public/terrain/16/107311/44250.terrain differ diff --git a/public/terrain/16/107311/44251.terrain b/public/terrain/16/107311/44251.terrain new file mode 100644 index 000000000..0093721c9 Binary files /dev/null and b/public/terrain/16/107311/44251.terrain differ diff --git a/public/terrain/16/107311/44252.terrain b/public/terrain/16/107311/44252.terrain new file mode 100644 index 000000000..2e6ef603c Binary files /dev/null and b/public/terrain/16/107311/44252.terrain differ diff --git a/public/terrain/16/107311/44253.terrain b/public/terrain/16/107311/44253.terrain new file mode 100644 index 000000000..0a6ce87cd Binary files /dev/null and b/public/terrain/16/107311/44253.terrain differ diff --git a/public/terrain/16/107311/44254.terrain b/public/terrain/16/107311/44254.terrain new file mode 100644 index 000000000..8541bdd5c Binary files /dev/null and b/public/terrain/16/107311/44254.terrain differ diff --git a/public/terrain/16/107311/44255.terrain b/public/terrain/16/107311/44255.terrain new file mode 100644 index 000000000..3b0ba5d6d Binary files /dev/null and b/public/terrain/16/107311/44255.terrain differ diff --git a/public/terrain/16/107311/44256.terrain b/public/terrain/16/107311/44256.terrain new file mode 100644 index 000000000..9fb66b23d Binary files /dev/null and b/public/terrain/16/107311/44256.terrain differ diff --git a/public/terrain/16/107311/44257.terrain b/public/terrain/16/107311/44257.terrain new file mode 100644 index 000000000..0e9ab4c47 Binary files /dev/null and b/public/terrain/16/107311/44257.terrain differ diff --git a/public/terrain/16/107312/44217.terrain b/public/terrain/16/107312/44217.terrain new file mode 100644 index 000000000..d0800d32b Binary files /dev/null and b/public/terrain/16/107312/44217.terrain differ diff --git a/public/terrain/16/107312/44218.terrain b/public/terrain/16/107312/44218.terrain new file mode 100644 index 000000000..6584c0e35 Binary files /dev/null and b/public/terrain/16/107312/44218.terrain differ diff --git a/public/terrain/16/107312/44219.terrain b/public/terrain/16/107312/44219.terrain new file mode 100644 index 000000000..f9bcb6a0c Binary files /dev/null and b/public/terrain/16/107312/44219.terrain differ diff --git a/public/terrain/16/107312/44220.terrain b/public/terrain/16/107312/44220.terrain new file mode 100644 index 000000000..f9f0c480a Binary files /dev/null and b/public/terrain/16/107312/44220.terrain differ diff --git a/public/terrain/16/107312/44221.terrain b/public/terrain/16/107312/44221.terrain new file mode 100644 index 000000000..402ca3215 Binary files /dev/null and b/public/terrain/16/107312/44221.terrain differ diff --git a/public/terrain/16/107312/44222.terrain b/public/terrain/16/107312/44222.terrain new file mode 100644 index 000000000..04f74d1af Binary files /dev/null and b/public/terrain/16/107312/44222.terrain differ diff --git a/public/terrain/16/107312/44223.terrain b/public/terrain/16/107312/44223.terrain new file mode 100644 index 000000000..4869e051e Binary files /dev/null and b/public/terrain/16/107312/44223.terrain differ diff --git a/public/terrain/16/107312/44224.terrain b/public/terrain/16/107312/44224.terrain new file mode 100644 index 000000000..ceab003c9 Binary files /dev/null and b/public/terrain/16/107312/44224.terrain differ diff --git a/public/terrain/16/107312/44225.terrain b/public/terrain/16/107312/44225.terrain new file mode 100644 index 000000000..24a3529de Binary files /dev/null and b/public/terrain/16/107312/44225.terrain differ diff --git a/public/terrain/16/107312/44226.terrain b/public/terrain/16/107312/44226.terrain new file mode 100644 index 000000000..e24149681 Binary files /dev/null and b/public/terrain/16/107312/44226.terrain differ diff --git a/public/terrain/16/107312/44227.terrain b/public/terrain/16/107312/44227.terrain new file mode 100644 index 000000000..3c5e3bcbf Binary files /dev/null and b/public/terrain/16/107312/44227.terrain differ diff --git a/public/terrain/16/107312/44228.terrain b/public/terrain/16/107312/44228.terrain new file mode 100644 index 000000000..901e898a4 Binary files /dev/null and b/public/terrain/16/107312/44228.terrain differ diff --git a/public/terrain/16/107312/44229.terrain b/public/terrain/16/107312/44229.terrain new file mode 100644 index 000000000..6462f766d Binary files /dev/null and b/public/terrain/16/107312/44229.terrain differ diff --git a/public/terrain/16/107312/44230.terrain b/public/terrain/16/107312/44230.terrain new file mode 100644 index 000000000..768b02692 Binary files /dev/null and b/public/terrain/16/107312/44230.terrain differ diff --git a/public/terrain/16/107312/44231.terrain b/public/terrain/16/107312/44231.terrain new file mode 100644 index 000000000..41d81189c Binary files /dev/null and b/public/terrain/16/107312/44231.terrain differ diff --git a/public/terrain/16/107312/44232.terrain b/public/terrain/16/107312/44232.terrain new file mode 100644 index 000000000..b3ee7b83e Binary files /dev/null and b/public/terrain/16/107312/44232.terrain differ diff --git a/public/terrain/16/107312/44233.terrain b/public/terrain/16/107312/44233.terrain new file mode 100644 index 000000000..aed51ecf2 Binary files /dev/null and b/public/terrain/16/107312/44233.terrain differ diff --git a/public/terrain/16/107312/44234.terrain b/public/terrain/16/107312/44234.terrain new file mode 100644 index 000000000..6abc3707a Binary files /dev/null and b/public/terrain/16/107312/44234.terrain differ diff --git a/public/terrain/16/107312/44235.terrain b/public/terrain/16/107312/44235.terrain new file mode 100644 index 000000000..c534a13fa Binary files /dev/null and b/public/terrain/16/107312/44235.terrain differ diff --git a/public/terrain/16/107312/44236.terrain b/public/terrain/16/107312/44236.terrain new file mode 100644 index 000000000..44b87188e Binary files /dev/null and b/public/terrain/16/107312/44236.terrain differ diff --git a/public/terrain/16/107312/44237.terrain b/public/terrain/16/107312/44237.terrain new file mode 100644 index 000000000..44eb630bb Binary files /dev/null and b/public/terrain/16/107312/44237.terrain differ diff --git a/public/terrain/16/107312/44238.terrain b/public/terrain/16/107312/44238.terrain new file mode 100644 index 000000000..06bd4cba3 Binary files /dev/null and b/public/terrain/16/107312/44238.terrain differ diff --git a/public/terrain/16/107312/44239.terrain b/public/terrain/16/107312/44239.terrain new file mode 100644 index 000000000..fb7790f52 Binary files /dev/null and b/public/terrain/16/107312/44239.terrain differ diff --git a/public/terrain/16/107312/44240.terrain b/public/terrain/16/107312/44240.terrain new file mode 100644 index 000000000..7309b5cfd Binary files /dev/null and b/public/terrain/16/107312/44240.terrain differ diff --git a/public/terrain/16/107312/44241.terrain b/public/terrain/16/107312/44241.terrain new file mode 100644 index 000000000..71cf777ad Binary files /dev/null and b/public/terrain/16/107312/44241.terrain differ diff --git a/public/terrain/16/107312/44242.terrain b/public/terrain/16/107312/44242.terrain new file mode 100644 index 000000000..dcce572ee Binary files /dev/null and b/public/terrain/16/107312/44242.terrain differ diff --git a/public/terrain/16/107312/44243.terrain b/public/terrain/16/107312/44243.terrain new file mode 100644 index 000000000..e85cee179 Binary files /dev/null and b/public/terrain/16/107312/44243.terrain differ diff --git a/public/terrain/16/107312/44244.terrain b/public/terrain/16/107312/44244.terrain new file mode 100644 index 000000000..08e823c76 Binary files /dev/null and b/public/terrain/16/107312/44244.terrain differ diff --git a/public/terrain/16/107312/44245.terrain b/public/terrain/16/107312/44245.terrain new file mode 100644 index 000000000..de417687a Binary files /dev/null and b/public/terrain/16/107312/44245.terrain differ diff --git a/public/terrain/16/107312/44246.terrain b/public/terrain/16/107312/44246.terrain new file mode 100644 index 000000000..529586ad5 Binary files /dev/null and b/public/terrain/16/107312/44246.terrain differ diff --git a/public/terrain/16/107312/44247.terrain b/public/terrain/16/107312/44247.terrain new file mode 100644 index 000000000..3912ce7dc Binary files /dev/null and b/public/terrain/16/107312/44247.terrain differ diff --git a/public/terrain/16/107312/44248.terrain b/public/terrain/16/107312/44248.terrain new file mode 100644 index 000000000..cca876ff4 Binary files /dev/null and b/public/terrain/16/107312/44248.terrain differ diff --git a/public/terrain/16/107312/44249.terrain b/public/terrain/16/107312/44249.terrain new file mode 100644 index 000000000..2d3901b35 Binary files /dev/null and b/public/terrain/16/107312/44249.terrain differ diff --git a/public/terrain/16/107312/44250.terrain b/public/terrain/16/107312/44250.terrain new file mode 100644 index 000000000..4c5a9ccf9 Binary files /dev/null and b/public/terrain/16/107312/44250.terrain differ diff --git a/public/terrain/16/107312/44251.terrain b/public/terrain/16/107312/44251.terrain new file mode 100644 index 000000000..790ac2b7f Binary files /dev/null and b/public/terrain/16/107312/44251.terrain differ diff --git a/public/terrain/16/107312/44252.terrain b/public/terrain/16/107312/44252.terrain new file mode 100644 index 000000000..a748cc693 Binary files /dev/null and b/public/terrain/16/107312/44252.terrain differ diff --git a/public/terrain/16/107312/44253.terrain b/public/terrain/16/107312/44253.terrain new file mode 100644 index 000000000..af19e977c Binary files /dev/null and b/public/terrain/16/107312/44253.terrain differ diff --git a/public/terrain/16/107312/44254.terrain b/public/terrain/16/107312/44254.terrain new file mode 100644 index 000000000..05af62f6a Binary files /dev/null and b/public/terrain/16/107312/44254.terrain differ diff --git a/public/terrain/16/107312/44255.terrain b/public/terrain/16/107312/44255.terrain new file mode 100644 index 000000000..c496b12b1 Binary files /dev/null and b/public/terrain/16/107312/44255.terrain differ diff --git a/public/terrain/16/107312/44256.terrain b/public/terrain/16/107312/44256.terrain new file mode 100644 index 000000000..72fe2afb7 Binary files /dev/null and b/public/terrain/16/107312/44256.terrain differ diff --git a/public/terrain/16/107312/44257.terrain b/public/terrain/16/107312/44257.terrain new file mode 100644 index 000000000..4f24461a7 Binary files /dev/null and b/public/terrain/16/107312/44257.terrain differ diff --git a/public/terrain/16/107313/44217.terrain b/public/terrain/16/107313/44217.terrain new file mode 100644 index 000000000..0a9bf2d89 Binary files /dev/null and b/public/terrain/16/107313/44217.terrain differ diff --git a/public/terrain/16/107313/44218.terrain b/public/terrain/16/107313/44218.terrain new file mode 100644 index 000000000..43f41d764 Binary files /dev/null and b/public/terrain/16/107313/44218.terrain differ diff --git a/public/terrain/16/107313/44219.terrain b/public/terrain/16/107313/44219.terrain new file mode 100644 index 000000000..6296590b8 Binary files /dev/null and b/public/terrain/16/107313/44219.terrain differ diff --git a/public/terrain/16/107313/44220.terrain b/public/terrain/16/107313/44220.terrain new file mode 100644 index 000000000..3b513988f Binary files /dev/null and b/public/terrain/16/107313/44220.terrain differ diff --git a/public/terrain/16/107313/44221.terrain b/public/terrain/16/107313/44221.terrain new file mode 100644 index 000000000..9eda72c22 Binary files /dev/null and b/public/terrain/16/107313/44221.terrain differ diff --git a/public/terrain/16/107313/44222.terrain b/public/terrain/16/107313/44222.terrain new file mode 100644 index 000000000..3d6a4c1f1 Binary files /dev/null and b/public/terrain/16/107313/44222.terrain differ diff --git a/public/terrain/16/107313/44223.terrain b/public/terrain/16/107313/44223.terrain new file mode 100644 index 000000000..6b9ddf1e0 Binary files /dev/null and b/public/terrain/16/107313/44223.terrain differ diff --git a/public/terrain/16/107313/44224.terrain b/public/terrain/16/107313/44224.terrain new file mode 100644 index 000000000..260f887c6 Binary files /dev/null and b/public/terrain/16/107313/44224.terrain differ diff --git a/public/terrain/16/107313/44225.terrain b/public/terrain/16/107313/44225.terrain new file mode 100644 index 000000000..b25eea9b0 Binary files /dev/null and b/public/terrain/16/107313/44225.terrain differ diff --git a/public/terrain/16/107313/44226.terrain b/public/terrain/16/107313/44226.terrain new file mode 100644 index 000000000..33afea7e1 Binary files /dev/null and b/public/terrain/16/107313/44226.terrain differ diff --git a/public/terrain/16/107313/44227.terrain b/public/terrain/16/107313/44227.terrain new file mode 100644 index 000000000..535e57198 Binary files /dev/null and b/public/terrain/16/107313/44227.terrain differ diff --git a/public/terrain/16/107313/44228.terrain b/public/terrain/16/107313/44228.terrain new file mode 100644 index 000000000..7b53efc01 Binary files /dev/null and b/public/terrain/16/107313/44228.terrain differ diff --git a/public/terrain/16/107313/44229.terrain b/public/terrain/16/107313/44229.terrain new file mode 100644 index 000000000..8252301cb Binary files /dev/null and b/public/terrain/16/107313/44229.terrain differ diff --git a/public/terrain/16/107313/44230.terrain b/public/terrain/16/107313/44230.terrain new file mode 100644 index 000000000..864da55f7 Binary files /dev/null and b/public/terrain/16/107313/44230.terrain differ diff --git a/public/terrain/16/107313/44231.terrain b/public/terrain/16/107313/44231.terrain new file mode 100644 index 000000000..502791454 Binary files /dev/null and b/public/terrain/16/107313/44231.terrain differ diff --git a/public/terrain/16/107313/44232.terrain b/public/terrain/16/107313/44232.terrain new file mode 100644 index 000000000..fc60664c1 Binary files /dev/null and b/public/terrain/16/107313/44232.terrain differ diff --git a/public/terrain/16/107313/44233.terrain b/public/terrain/16/107313/44233.terrain new file mode 100644 index 000000000..22fa813db Binary files /dev/null and b/public/terrain/16/107313/44233.terrain differ diff --git a/public/terrain/16/107313/44234.terrain b/public/terrain/16/107313/44234.terrain new file mode 100644 index 000000000..841605845 Binary files /dev/null and b/public/terrain/16/107313/44234.terrain differ diff --git a/public/terrain/16/107313/44235.terrain b/public/terrain/16/107313/44235.terrain new file mode 100644 index 000000000..dba11b121 Binary files /dev/null and b/public/terrain/16/107313/44235.terrain differ diff --git a/public/terrain/16/107313/44236.terrain b/public/terrain/16/107313/44236.terrain new file mode 100644 index 000000000..29ee1a0dc Binary files /dev/null and b/public/terrain/16/107313/44236.terrain differ diff --git a/public/terrain/16/107313/44237.terrain b/public/terrain/16/107313/44237.terrain new file mode 100644 index 000000000..95cada494 Binary files /dev/null and b/public/terrain/16/107313/44237.terrain differ diff --git a/public/terrain/16/107313/44238.terrain b/public/terrain/16/107313/44238.terrain new file mode 100644 index 000000000..1972e7ab2 Binary files /dev/null and b/public/terrain/16/107313/44238.terrain differ diff --git a/public/terrain/16/107313/44239.terrain b/public/terrain/16/107313/44239.terrain new file mode 100644 index 000000000..4beb10098 Binary files /dev/null and b/public/terrain/16/107313/44239.terrain differ diff --git a/public/terrain/16/107313/44240.terrain b/public/terrain/16/107313/44240.terrain new file mode 100644 index 000000000..f607476ee Binary files /dev/null and b/public/terrain/16/107313/44240.terrain differ diff --git a/public/terrain/16/107313/44241.terrain b/public/terrain/16/107313/44241.terrain new file mode 100644 index 000000000..1686de226 Binary files /dev/null and b/public/terrain/16/107313/44241.terrain differ diff --git a/public/terrain/16/107313/44242.terrain b/public/terrain/16/107313/44242.terrain new file mode 100644 index 000000000..ab5ab0d33 Binary files /dev/null and b/public/terrain/16/107313/44242.terrain differ diff --git a/public/terrain/16/107313/44243.terrain b/public/terrain/16/107313/44243.terrain new file mode 100644 index 000000000..3e589f864 Binary files /dev/null and b/public/terrain/16/107313/44243.terrain differ diff --git a/public/terrain/16/107313/44244.terrain b/public/terrain/16/107313/44244.terrain new file mode 100644 index 000000000..e2afed98b Binary files /dev/null and b/public/terrain/16/107313/44244.terrain differ diff --git a/public/terrain/16/107313/44245.terrain b/public/terrain/16/107313/44245.terrain new file mode 100644 index 000000000..399e59d77 Binary files /dev/null and b/public/terrain/16/107313/44245.terrain differ diff --git a/public/terrain/16/107313/44246.terrain b/public/terrain/16/107313/44246.terrain new file mode 100644 index 000000000..99bf2b527 Binary files /dev/null and b/public/terrain/16/107313/44246.terrain differ diff --git a/public/terrain/16/107313/44247.terrain b/public/terrain/16/107313/44247.terrain new file mode 100644 index 000000000..80c323754 Binary files /dev/null and b/public/terrain/16/107313/44247.terrain differ diff --git a/public/terrain/16/107313/44248.terrain b/public/terrain/16/107313/44248.terrain new file mode 100644 index 000000000..d258a811e Binary files /dev/null and b/public/terrain/16/107313/44248.terrain differ diff --git a/public/terrain/16/107313/44249.terrain b/public/terrain/16/107313/44249.terrain new file mode 100644 index 000000000..32df73c55 Binary files /dev/null and b/public/terrain/16/107313/44249.terrain differ diff --git a/public/terrain/16/107313/44250.terrain b/public/terrain/16/107313/44250.terrain new file mode 100644 index 000000000..a6520e0f2 Binary files /dev/null and b/public/terrain/16/107313/44250.terrain differ diff --git a/public/terrain/16/107313/44251.terrain b/public/terrain/16/107313/44251.terrain new file mode 100644 index 000000000..22eb2f4aa Binary files /dev/null and b/public/terrain/16/107313/44251.terrain differ diff --git a/public/terrain/16/107313/44252.terrain b/public/terrain/16/107313/44252.terrain new file mode 100644 index 000000000..5867b1e45 Binary files /dev/null and b/public/terrain/16/107313/44252.terrain differ diff --git a/public/terrain/16/107313/44253.terrain b/public/terrain/16/107313/44253.terrain new file mode 100644 index 000000000..169347771 Binary files /dev/null and b/public/terrain/16/107313/44253.terrain differ diff --git a/public/terrain/16/107313/44254.terrain b/public/terrain/16/107313/44254.terrain new file mode 100644 index 000000000..7db215b5c Binary files /dev/null and b/public/terrain/16/107313/44254.terrain differ diff --git a/public/terrain/16/107313/44255.terrain b/public/terrain/16/107313/44255.terrain new file mode 100644 index 000000000..4123a1090 Binary files /dev/null and b/public/terrain/16/107313/44255.terrain differ diff --git a/public/terrain/16/107313/44256.terrain b/public/terrain/16/107313/44256.terrain new file mode 100644 index 000000000..923b070ca Binary files /dev/null and b/public/terrain/16/107313/44256.terrain differ diff --git a/public/terrain/16/107313/44257.terrain b/public/terrain/16/107313/44257.terrain new file mode 100644 index 000000000..a1c222a09 Binary files /dev/null and b/public/terrain/16/107313/44257.terrain differ diff --git a/public/terrain/16/107314/44217.terrain b/public/terrain/16/107314/44217.terrain new file mode 100644 index 000000000..6629d3d8a Binary files /dev/null and b/public/terrain/16/107314/44217.terrain differ diff --git a/public/terrain/16/107314/44218.terrain b/public/terrain/16/107314/44218.terrain new file mode 100644 index 000000000..fb262a2e2 Binary files /dev/null and b/public/terrain/16/107314/44218.terrain differ diff --git a/public/terrain/16/107314/44219.terrain b/public/terrain/16/107314/44219.terrain new file mode 100644 index 000000000..f971c6fc2 Binary files /dev/null and b/public/terrain/16/107314/44219.terrain differ diff --git a/public/terrain/16/107314/44220.terrain b/public/terrain/16/107314/44220.terrain new file mode 100644 index 000000000..bb7302fb9 Binary files /dev/null and b/public/terrain/16/107314/44220.terrain differ diff --git a/public/terrain/16/107314/44221.terrain b/public/terrain/16/107314/44221.terrain new file mode 100644 index 000000000..ef3bab9fc Binary files /dev/null and b/public/terrain/16/107314/44221.terrain differ diff --git a/public/terrain/16/107314/44222.terrain b/public/terrain/16/107314/44222.terrain new file mode 100644 index 000000000..51da68ce2 Binary files /dev/null and b/public/terrain/16/107314/44222.terrain differ diff --git a/public/terrain/16/107314/44223.terrain b/public/terrain/16/107314/44223.terrain new file mode 100644 index 000000000..da0b2ec9d Binary files /dev/null and b/public/terrain/16/107314/44223.terrain differ diff --git a/public/terrain/16/107314/44224.terrain b/public/terrain/16/107314/44224.terrain new file mode 100644 index 000000000..32151ee79 Binary files /dev/null and b/public/terrain/16/107314/44224.terrain differ diff --git a/public/terrain/16/107314/44225.terrain b/public/terrain/16/107314/44225.terrain new file mode 100644 index 000000000..90f9cbdde Binary files /dev/null and b/public/terrain/16/107314/44225.terrain differ diff --git a/public/terrain/16/107314/44226.terrain b/public/terrain/16/107314/44226.terrain new file mode 100644 index 000000000..72dd64c97 Binary files /dev/null and b/public/terrain/16/107314/44226.terrain differ diff --git a/public/terrain/16/107314/44227.terrain b/public/terrain/16/107314/44227.terrain new file mode 100644 index 000000000..29d7047a9 Binary files /dev/null and b/public/terrain/16/107314/44227.terrain differ diff --git a/public/terrain/16/107314/44228.terrain b/public/terrain/16/107314/44228.terrain new file mode 100644 index 000000000..bae18a631 Binary files /dev/null and b/public/terrain/16/107314/44228.terrain differ diff --git a/public/terrain/16/107314/44229.terrain b/public/terrain/16/107314/44229.terrain new file mode 100644 index 000000000..5adb5de58 Binary files /dev/null and b/public/terrain/16/107314/44229.terrain differ diff --git a/public/terrain/16/107314/44230.terrain b/public/terrain/16/107314/44230.terrain new file mode 100644 index 000000000..c477995be Binary files /dev/null and b/public/terrain/16/107314/44230.terrain differ diff --git a/public/terrain/16/107314/44231.terrain b/public/terrain/16/107314/44231.terrain new file mode 100644 index 000000000..04cbd7e34 Binary files /dev/null and b/public/terrain/16/107314/44231.terrain differ diff --git a/public/terrain/16/107314/44232.terrain b/public/terrain/16/107314/44232.terrain new file mode 100644 index 000000000..b6856d4a6 Binary files /dev/null and b/public/terrain/16/107314/44232.terrain differ diff --git a/public/terrain/16/107314/44233.terrain b/public/terrain/16/107314/44233.terrain new file mode 100644 index 000000000..c514fc9fc Binary files /dev/null and b/public/terrain/16/107314/44233.terrain differ diff --git a/public/terrain/16/107314/44234.terrain b/public/terrain/16/107314/44234.terrain new file mode 100644 index 000000000..1651fc150 Binary files /dev/null and b/public/terrain/16/107314/44234.terrain differ diff --git a/public/terrain/16/107314/44235.terrain b/public/terrain/16/107314/44235.terrain new file mode 100644 index 000000000..27f3c9884 Binary files /dev/null and b/public/terrain/16/107314/44235.terrain differ diff --git a/public/terrain/16/107314/44236.terrain b/public/terrain/16/107314/44236.terrain new file mode 100644 index 000000000..2f17a799c Binary files /dev/null and b/public/terrain/16/107314/44236.terrain differ diff --git a/public/terrain/16/107314/44237.terrain b/public/terrain/16/107314/44237.terrain new file mode 100644 index 000000000..d1da0775a Binary files /dev/null and b/public/terrain/16/107314/44237.terrain differ diff --git a/public/terrain/16/107314/44238.terrain b/public/terrain/16/107314/44238.terrain new file mode 100644 index 000000000..911824f8d Binary files /dev/null and b/public/terrain/16/107314/44238.terrain differ diff --git a/public/terrain/16/107314/44239.terrain b/public/terrain/16/107314/44239.terrain new file mode 100644 index 000000000..804fed5cb Binary files /dev/null and b/public/terrain/16/107314/44239.terrain differ diff --git a/public/terrain/16/107314/44240.terrain b/public/terrain/16/107314/44240.terrain new file mode 100644 index 000000000..f930b2841 Binary files /dev/null and b/public/terrain/16/107314/44240.terrain differ diff --git a/public/terrain/16/107314/44241.terrain b/public/terrain/16/107314/44241.terrain new file mode 100644 index 000000000..61feb5726 Binary files /dev/null and b/public/terrain/16/107314/44241.terrain differ diff --git a/public/terrain/16/107314/44242.terrain b/public/terrain/16/107314/44242.terrain new file mode 100644 index 000000000..a42dc8998 Binary files /dev/null and b/public/terrain/16/107314/44242.terrain differ diff --git a/public/terrain/16/107314/44243.terrain b/public/terrain/16/107314/44243.terrain new file mode 100644 index 000000000..01f65e83c Binary files /dev/null and b/public/terrain/16/107314/44243.terrain differ diff --git a/public/terrain/16/107314/44244.terrain b/public/terrain/16/107314/44244.terrain new file mode 100644 index 000000000..af553673b Binary files /dev/null and b/public/terrain/16/107314/44244.terrain differ diff --git a/public/terrain/16/107314/44245.terrain b/public/terrain/16/107314/44245.terrain new file mode 100644 index 000000000..112a0bfb5 Binary files /dev/null and b/public/terrain/16/107314/44245.terrain differ diff --git a/public/terrain/16/107314/44246.terrain b/public/terrain/16/107314/44246.terrain new file mode 100644 index 000000000..a9509bbaf Binary files /dev/null and b/public/terrain/16/107314/44246.terrain differ diff --git a/public/terrain/16/107314/44247.terrain b/public/terrain/16/107314/44247.terrain new file mode 100644 index 000000000..622964c90 Binary files /dev/null and b/public/terrain/16/107314/44247.terrain differ diff --git a/public/terrain/16/107314/44248.terrain b/public/terrain/16/107314/44248.terrain new file mode 100644 index 000000000..4646f41b4 Binary files /dev/null and b/public/terrain/16/107314/44248.terrain differ diff --git a/public/terrain/16/107314/44249.terrain b/public/terrain/16/107314/44249.terrain new file mode 100644 index 000000000..2197dff31 Binary files /dev/null and b/public/terrain/16/107314/44249.terrain differ diff --git a/public/terrain/16/107314/44250.terrain b/public/terrain/16/107314/44250.terrain new file mode 100644 index 000000000..4af22d7cb Binary files /dev/null and b/public/terrain/16/107314/44250.terrain differ diff --git a/public/terrain/16/107314/44251.terrain b/public/terrain/16/107314/44251.terrain new file mode 100644 index 000000000..0d39f2e17 Binary files /dev/null and b/public/terrain/16/107314/44251.terrain differ diff --git a/public/terrain/16/107314/44252.terrain b/public/terrain/16/107314/44252.terrain new file mode 100644 index 000000000..7c11af725 Binary files /dev/null and b/public/terrain/16/107314/44252.terrain differ diff --git a/public/terrain/16/107314/44253.terrain b/public/terrain/16/107314/44253.terrain new file mode 100644 index 000000000..b76875e34 Binary files /dev/null and b/public/terrain/16/107314/44253.terrain differ diff --git a/public/terrain/16/107314/44254.terrain b/public/terrain/16/107314/44254.terrain new file mode 100644 index 000000000..75a3edcd9 Binary files /dev/null and b/public/terrain/16/107314/44254.terrain differ diff --git a/public/terrain/16/107314/44255.terrain b/public/terrain/16/107314/44255.terrain new file mode 100644 index 000000000..fac88ac90 Binary files /dev/null and b/public/terrain/16/107314/44255.terrain differ diff --git a/public/terrain/16/107314/44256.terrain b/public/terrain/16/107314/44256.terrain new file mode 100644 index 000000000..4a706092a Binary files /dev/null and b/public/terrain/16/107314/44256.terrain differ diff --git a/public/terrain/16/107314/44257.terrain b/public/terrain/16/107314/44257.terrain new file mode 100644 index 000000000..9596503bc Binary files /dev/null and b/public/terrain/16/107314/44257.terrain differ diff --git a/public/terrain/16/107315/44217.terrain b/public/terrain/16/107315/44217.terrain new file mode 100644 index 000000000..680d4d96e Binary files /dev/null and b/public/terrain/16/107315/44217.terrain differ diff --git a/public/terrain/16/107315/44218.terrain b/public/terrain/16/107315/44218.terrain new file mode 100644 index 000000000..07d77c8d1 Binary files /dev/null and b/public/terrain/16/107315/44218.terrain differ diff --git a/public/terrain/16/107315/44219.terrain b/public/terrain/16/107315/44219.terrain new file mode 100644 index 000000000..f2aa93db6 Binary files /dev/null and b/public/terrain/16/107315/44219.terrain differ diff --git a/public/terrain/16/107315/44220.terrain b/public/terrain/16/107315/44220.terrain new file mode 100644 index 000000000..6a75ce0d9 Binary files /dev/null and b/public/terrain/16/107315/44220.terrain differ diff --git a/public/terrain/16/107315/44221.terrain b/public/terrain/16/107315/44221.terrain new file mode 100644 index 000000000..0102ff825 Binary files /dev/null and b/public/terrain/16/107315/44221.terrain differ diff --git a/public/terrain/16/107315/44222.terrain b/public/terrain/16/107315/44222.terrain new file mode 100644 index 000000000..20e36b508 Binary files /dev/null and b/public/terrain/16/107315/44222.terrain differ diff --git a/public/terrain/16/107315/44223.terrain b/public/terrain/16/107315/44223.terrain new file mode 100644 index 000000000..ddc07766d Binary files /dev/null and b/public/terrain/16/107315/44223.terrain differ diff --git a/public/terrain/16/107315/44224.terrain b/public/terrain/16/107315/44224.terrain new file mode 100644 index 000000000..ba81e1e3c Binary files /dev/null and b/public/terrain/16/107315/44224.terrain differ diff --git a/public/terrain/16/107315/44225.terrain b/public/terrain/16/107315/44225.terrain new file mode 100644 index 000000000..f039932e3 Binary files /dev/null and b/public/terrain/16/107315/44225.terrain differ diff --git a/public/terrain/16/107315/44226.terrain b/public/terrain/16/107315/44226.terrain new file mode 100644 index 000000000..f23c31b2e Binary files /dev/null and b/public/terrain/16/107315/44226.terrain differ diff --git a/public/terrain/16/107315/44227.terrain b/public/terrain/16/107315/44227.terrain new file mode 100644 index 000000000..4e3dcb845 Binary files /dev/null and b/public/terrain/16/107315/44227.terrain differ diff --git a/public/terrain/16/107315/44228.terrain b/public/terrain/16/107315/44228.terrain new file mode 100644 index 000000000..ea5c2af09 Binary files /dev/null and b/public/terrain/16/107315/44228.terrain differ diff --git a/public/terrain/16/107315/44229.terrain b/public/terrain/16/107315/44229.terrain new file mode 100644 index 000000000..27336839e Binary files /dev/null and b/public/terrain/16/107315/44229.terrain differ diff --git a/public/terrain/16/107315/44230.terrain b/public/terrain/16/107315/44230.terrain new file mode 100644 index 000000000..4043c00a9 Binary files /dev/null and b/public/terrain/16/107315/44230.terrain differ diff --git a/public/terrain/16/107315/44231.terrain b/public/terrain/16/107315/44231.terrain new file mode 100644 index 000000000..504e2bd86 Binary files /dev/null and b/public/terrain/16/107315/44231.terrain differ diff --git a/public/terrain/16/107315/44232.terrain b/public/terrain/16/107315/44232.terrain new file mode 100644 index 000000000..3d04400e3 Binary files /dev/null and b/public/terrain/16/107315/44232.terrain differ diff --git a/public/terrain/16/107315/44233.terrain b/public/terrain/16/107315/44233.terrain new file mode 100644 index 000000000..1af3258b6 Binary files /dev/null and b/public/terrain/16/107315/44233.terrain differ diff --git a/public/terrain/16/107315/44234.terrain b/public/terrain/16/107315/44234.terrain new file mode 100644 index 000000000..70f26a2fe Binary files /dev/null and b/public/terrain/16/107315/44234.terrain differ diff --git a/public/terrain/16/107315/44235.terrain b/public/terrain/16/107315/44235.terrain new file mode 100644 index 000000000..0a33360a9 Binary files /dev/null and b/public/terrain/16/107315/44235.terrain differ diff --git a/public/terrain/16/107315/44236.terrain b/public/terrain/16/107315/44236.terrain new file mode 100644 index 000000000..d98eafa10 Binary files /dev/null and b/public/terrain/16/107315/44236.terrain differ diff --git a/public/terrain/16/107315/44237.terrain b/public/terrain/16/107315/44237.terrain new file mode 100644 index 000000000..a8df78d77 Binary files /dev/null and b/public/terrain/16/107315/44237.terrain differ diff --git a/public/terrain/16/107315/44238.terrain b/public/terrain/16/107315/44238.terrain new file mode 100644 index 000000000..8873e930d Binary files /dev/null and b/public/terrain/16/107315/44238.terrain differ diff --git a/public/terrain/16/107315/44239.terrain b/public/terrain/16/107315/44239.terrain new file mode 100644 index 000000000..4587ce682 Binary files /dev/null and b/public/terrain/16/107315/44239.terrain differ diff --git a/public/terrain/16/107315/44240.terrain b/public/terrain/16/107315/44240.terrain new file mode 100644 index 000000000..17d21a608 Binary files /dev/null and b/public/terrain/16/107315/44240.terrain differ diff --git a/public/terrain/16/107315/44241.terrain b/public/terrain/16/107315/44241.terrain new file mode 100644 index 000000000..772bc265c Binary files /dev/null and b/public/terrain/16/107315/44241.terrain differ diff --git a/public/terrain/16/107315/44242.terrain b/public/terrain/16/107315/44242.terrain new file mode 100644 index 000000000..3645d9545 Binary files /dev/null and b/public/terrain/16/107315/44242.terrain differ diff --git a/public/terrain/16/107315/44243.terrain b/public/terrain/16/107315/44243.terrain new file mode 100644 index 000000000..794193450 Binary files /dev/null and b/public/terrain/16/107315/44243.terrain differ diff --git a/public/terrain/16/107315/44244.terrain b/public/terrain/16/107315/44244.terrain new file mode 100644 index 000000000..ba4c4dd85 Binary files /dev/null and b/public/terrain/16/107315/44244.terrain differ diff --git a/public/terrain/16/107315/44245.terrain b/public/terrain/16/107315/44245.terrain new file mode 100644 index 000000000..099788c79 Binary files /dev/null and b/public/terrain/16/107315/44245.terrain differ diff --git a/public/terrain/16/107315/44246.terrain b/public/terrain/16/107315/44246.terrain new file mode 100644 index 000000000..3f14b20b1 Binary files /dev/null and b/public/terrain/16/107315/44246.terrain differ diff --git a/public/terrain/16/107315/44247.terrain b/public/terrain/16/107315/44247.terrain new file mode 100644 index 000000000..609d81cc0 Binary files /dev/null and b/public/terrain/16/107315/44247.terrain differ diff --git a/public/terrain/16/107315/44248.terrain b/public/terrain/16/107315/44248.terrain new file mode 100644 index 000000000..c043948cc Binary files /dev/null and b/public/terrain/16/107315/44248.terrain differ diff --git a/public/terrain/16/107315/44249.terrain b/public/terrain/16/107315/44249.terrain new file mode 100644 index 000000000..8e8a485bc Binary files /dev/null and b/public/terrain/16/107315/44249.terrain differ diff --git a/public/terrain/16/107315/44250.terrain b/public/terrain/16/107315/44250.terrain new file mode 100644 index 000000000..cbce82090 Binary files /dev/null and b/public/terrain/16/107315/44250.terrain differ diff --git a/public/terrain/16/107315/44251.terrain b/public/terrain/16/107315/44251.terrain new file mode 100644 index 000000000..3497623b2 Binary files /dev/null and b/public/terrain/16/107315/44251.terrain differ diff --git a/public/terrain/16/107315/44252.terrain b/public/terrain/16/107315/44252.terrain new file mode 100644 index 000000000..43bd3b8a5 Binary files /dev/null and b/public/terrain/16/107315/44252.terrain differ diff --git a/public/terrain/16/107315/44253.terrain b/public/terrain/16/107315/44253.terrain new file mode 100644 index 000000000..368b62c8e Binary files /dev/null and b/public/terrain/16/107315/44253.terrain differ diff --git a/public/terrain/16/107315/44254.terrain b/public/terrain/16/107315/44254.terrain new file mode 100644 index 000000000..115368712 Binary files /dev/null and b/public/terrain/16/107315/44254.terrain differ diff --git a/public/terrain/16/107315/44255.terrain b/public/terrain/16/107315/44255.terrain new file mode 100644 index 000000000..1ed525d19 Binary files /dev/null and b/public/terrain/16/107315/44255.terrain differ diff --git a/public/terrain/16/107315/44256.terrain b/public/terrain/16/107315/44256.terrain new file mode 100644 index 000000000..357fcea9f Binary files /dev/null and b/public/terrain/16/107315/44256.terrain differ diff --git a/public/terrain/16/107315/44257.terrain b/public/terrain/16/107315/44257.terrain new file mode 100644 index 000000000..322766f0c Binary files /dev/null and b/public/terrain/16/107315/44257.terrain differ diff --git a/public/terrain/16/107316/44217.terrain b/public/terrain/16/107316/44217.terrain new file mode 100644 index 000000000..f55a17a5f Binary files /dev/null and b/public/terrain/16/107316/44217.terrain differ diff --git a/public/terrain/16/107316/44218.terrain b/public/terrain/16/107316/44218.terrain new file mode 100644 index 000000000..13fab5d71 Binary files /dev/null and b/public/terrain/16/107316/44218.terrain differ diff --git a/public/terrain/16/107316/44219.terrain b/public/terrain/16/107316/44219.terrain new file mode 100644 index 000000000..7d693cc9f Binary files /dev/null and b/public/terrain/16/107316/44219.terrain differ diff --git a/public/terrain/16/107316/44220.terrain b/public/terrain/16/107316/44220.terrain new file mode 100644 index 000000000..5003ac8e6 Binary files /dev/null and b/public/terrain/16/107316/44220.terrain differ diff --git a/public/terrain/16/107316/44221.terrain b/public/terrain/16/107316/44221.terrain new file mode 100644 index 000000000..579f8a9d8 Binary files /dev/null and b/public/terrain/16/107316/44221.terrain differ diff --git a/public/terrain/16/107316/44222.terrain b/public/terrain/16/107316/44222.terrain new file mode 100644 index 000000000..f3878d68f Binary files /dev/null and b/public/terrain/16/107316/44222.terrain differ diff --git a/public/terrain/16/107316/44223.terrain b/public/terrain/16/107316/44223.terrain new file mode 100644 index 000000000..59022d6f1 Binary files /dev/null and b/public/terrain/16/107316/44223.terrain differ diff --git a/public/terrain/16/107316/44224.terrain b/public/terrain/16/107316/44224.terrain new file mode 100644 index 000000000..962955a83 Binary files /dev/null and b/public/terrain/16/107316/44224.terrain differ diff --git a/public/terrain/16/107316/44225.terrain b/public/terrain/16/107316/44225.terrain new file mode 100644 index 000000000..57f14ad5c Binary files /dev/null and b/public/terrain/16/107316/44225.terrain differ diff --git a/public/terrain/16/107316/44226.terrain b/public/terrain/16/107316/44226.terrain new file mode 100644 index 000000000..50dd43948 Binary files /dev/null and b/public/terrain/16/107316/44226.terrain differ diff --git a/public/terrain/16/107316/44227.terrain b/public/terrain/16/107316/44227.terrain new file mode 100644 index 000000000..26e6f7a14 Binary files /dev/null and b/public/terrain/16/107316/44227.terrain differ diff --git a/public/terrain/16/107316/44228.terrain b/public/terrain/16/107316/44228.terrain new file mode 100644 index 000000000..e4ca3964f Binary files /dev/null and b/public/terrain/16/107316/44228.terrain differ diff --git a/public/terrain/16/107316/44229.terrain b/public/terrain/16/107316/44229.terrain new file mode 100644 index 000000000..5b91c113d Binary files /dev/null and b/public/terrain/16/107316/44229.terrain differ diff --git a/public/terrain/16/107316/44230.terrain b/public/terrain/16/107316/44230.terrain new file mode 100644 index 000000000..f1d475200 Binary files /dev/null and b/public/terrain/16/107316/44230.terrain differ diff --git a/public/terrain/16/107316/44231.terrain b/public/terrain/16/107316/44231.terrain new file mode 100644 index 000000000..c3725bb92 Binary files /dev/null and b/public/terrain/16/107316/44231.terrain differ diff --git a/public/terrain/16/107316/44232.terrain b/public/terrain/16/107316/44232.terrain new file mode 100644 index 000000000..d412377fa Binary files /dev/null and b/public/terrain/16/107316/44232.terrain differ diff --git a/public/terrain/16/107316/44233.terrain b/public/terrain/16/107316/44233.terrain new file mode 100644 index 000000000..512b7b142 Binary files /dev/null and b/public/terrain/16/107316/44233.terrain differ diff --git a/public/terrain/16/107316/44234.terrain b/public/terrain/16/107316/44234.terrain new file mode 100644 index 000000000..a13a347e5 Binary files /dev/null and b/public/terrain/16/107316/44234.terrain differ diff --git a/public/terrain/16/107316/44235.terrain b/public/terrain/16/107316/44235.terrain new file mode 100644 index 000000000..c76c4c715 Binary files /dev/null and b/public/terrain/16/107316/44235.terrain differ diff --git a/public/terrain/16/107316/44236.terrain b/public/terrain/16/107316/44236.terrain new file mode 100644 index 000000000..9f2a3acaa Binary files /dev/null and b/public/terrain/16/107316/44236.terrain differ diff --git a/public/terrain/16/107316/44237.terrain b/public/terrain/16/107316/44237.terrain new file mode 100644 index 000000000..e6ed76091 Binary files /dev/null and b/public/terrain/16/107316/44237.terrain differ diff --git a/public/terrain/16/107316/44238.terrain b/public/terrain/16/107316/44238.terrain new file mode 100644 index 000000000..01d405643 Binary files /dev/null and b/public/terrain/16/107316/44238.terrain differ diff --git a/public/terrain/16/107316/44239.terrain b/public/terrain/16/107316/44239.terrain new file mode 100644 index 000000000..ee176b71c Binary files /dev/null and b/public/terrain/16/107316/44239.terrain differ diff --git a/public/terrain/16/107316/44240.terrain b/public/terrain/16/107316/44240.terrain new file mode 100644 index 000000000..fb4133523 Binary files /dev/null and b/public/terrain/16/107316/44240.terrain differ diff --git a/public/terrain/16/107316/44241.terrain b/public/terrain/16/107316/44241.terrain new file mode 100644 index 000000000..dc3abba8e Binary files /dev/null and b/public/terrain/16/107316/44241.terrain differ diff --git a/public/terrain/16/107316/44242.terrain b/public/terrain/16/107316/44242.terrain new file mode 100644 index 000000000..bcaf51d67 Binary files /dev/null and b/public/terrain/16/107316/44242.terrain differ diff --git a/public/terrain/16/107316/44243.terrain b/public/terrain/16/107316/44243.terrain new file mode 100644 index 000000000..f38adde7b Binary files /dev/null and b/public/terrain/16/107316/44243.terrain differ diff --git a/public/terrain/16/107316/44244.terrain b/public/terrain/16/107316/44244.terrain new file mode 100644 index 000000000..8a33f6bcd Binary files /dev/null and b/public/terrain/16/107316/44244.terrain differ diff --git a/public/terrain/16/107316/44245.terrain b/public/terrain/16/107316/44245.terrain new file mode 100644 index 000000000..468d7d2fe Binary files /dev/null and b/public/terrain/16/107316/44245.terrain differ diff --git a/public/terrain/16/107316/44246.terrain b/public/terrain/16/107316/44246.terrain new file mode 100644 index 000000000..fc5ba1947 Binary files /dev/null and b/public/terrain/16/107316/44246.terrain differ diff --git a/public/terrain/16/107316/44247.terrain b/public/terrain/16/107316/44247.terrain new file mode 100644 index 000000000..1be3ad1e9 Binary files /dev/null and b/public/terrain/16/107316/44247.terrain differ diff --git a/public/terrain/16/107316/44248.terrain b/public/terrain/16/107316/44248.terrain new file mode 100644 index 000000000..d55946801 Binary files /dev/null and b/public/terrain/16/107316/44248.terrain differ diff --git a/public/terrain/16/107316/44249.terrain b/public/terrain/16/107316/44249.terrain new file mode 100644 index 000000000..1add58643 Binary files /dev/null and b/public/terrain/16/107316/44249.terrain differ diff --git a/public/terrain/16/107316/44250.terrain b/public/terrain/16/107316/44250.terrain new file mode 100644 index 000000000..5d70df2a1 Binary files /dev/null and b/public/terrain/16/107316/44250.terrain differ diff --git a/public/terrain/16/107316/44251.terrain b/public/terrain/16/107316/44251.terrain new file mode 100644 index 000000000..1a2ac7feb Binary files /dev/null and b/public/terrain/16/107316/44251.terrain differ diff --git a/public/terrain/16/107316/44252.terrain b/public/terrain/16/107316/44252.terrain new file mode 100644 index 000000000..c5d8e8379 Binary files /dev/null and b/public/terrain/16/107316/44252.terrain differ diff --git a/public/terrain/16/107316/44253.terrain b/public/terrain/16/107316/44253.terrain new file mode 100644 index 000000000..1308c4ef6 Binary files /dev/null and b/public/terrain/16/107316/44253.terrain differ diff --git a/public/terrain/16/107316/44254.terrain b/public/terrain/16/107316/44254.terrain new file mode 100644 index 000000000..e7297851c Binary files /dev/null and b/public/terrain/16/107316/44254.terrain differ diff --git a/public/terrain/16/107316/44255.terrain b/public/terrain/16/107316/44255.terrain new file mode 100644 index 000000000..55f05252e Binary files /dev/null and b/public/terrain/16/107316/44255.terrain differ diff --git a/public/terrain/16/107316/44256.terrain b/public/terrain/16/107316/44256.terrain new file mode 100644 index 000000000..835e8ad64 Binary files /dev/null and b/public/terrain/16/107316/44256.terrain differ diff --git a/public/terrain/16/107316/44257.terrain b/public/terrain/16/107316/44257.terrain new file mode 100644 index 000000000..acacedaa3 Binary files /dev/null and b/public/terrain/16/107316/44257.terrain differ diff --git a/public/terrain/16/107317/44217.terrain b/public/terrain/16/107317/44217.terrain new file mode 100644 index 000000000..8d569ab79 Binary files /dev/null and b/public/terrain/16/107317/44217.terrain differ diff --git a/public/terrain/16/107317/44218.terrain b/public/terrain/16/107317/44218.terrain new file mode 100644 index 000000000..a44c0839b Binary files /dev/null and b/public/terrain/16/107317/44218.terrain differ diff --git a/public/terrain/16/107317/44219.terrain b/public/terrain/16/107317/44219.terrain new file mode 100644 index 000000000..fe3446a79 Binary files /dev/null and b/public/terrain/16/107317/44219.terrain differ diff --git a/public/terrain/16/107317/44220.terrain b/public/terrain/16/107317/44220.terrain new file mode 100644 index 000000000..158a8d409 Binary files /dev/null and b/public/terrain/16/107317/44220.terrain differ diff --git a/public/terrain/16/107317/44221.terrain b/public/terrain/16/107317/44221.terrain new file mode 100644 index 000000000..0028d1e3e Binary files /dev/null and b/public/terrain/16/107317/44221.terrain differ diff --git a/public/terrain/16/107317/44222.terrain b/public/terrain/16/107317/44222.terrain new file mode 100644 index 000000000..5c0fc2bb0 Binary files /dev/null and b/public/terrain/16/107317/44222.terrain differ diff --git a/public/terrain/16/107317/44223.terrain b/public/terrain/16/107317/44223.terrain new file mode 100644 index 000000000..204810ae0 Binary files /dev/null and b/public/terrain/16/107317/44223.terrain differ diff --git a/public/terrain/16/107317/44224.terrain b/public/terrain/16/107317/44224.terrain new file mode 100644 index 000000000..cacc211ab Binary files /dev/null and b/public/terrain/16/107317/44224.terrain differ diff --git a/public/terrain/16/107317/44225.terrain b/public/terrain/16/107317/44225.terrain new file mode 100644 index 000000000..3c6873a48 Binary files /dev/null and b/public/terrain/16/107317/44225.terrain differ diff --git a/public/terrain/16/107317/44226.terrain b/public/terrain/16/107317/44226.terrain new file mode 100644 index 000000000..c681df951 Binary files /dev/null and b/public/terrain/16/107317/44226.terrain differ diff --git a/public/terrain/16/107317/44227.terrain b/public/terrain/16/107317/44227.terrain new file mode 100644 index 000000000..aba96dccd Binary files /dev/null and b/public/terrain/16/107317/44227.terrain differ diff --git a/public/terrain/16/107317/44228.terrain b/public/terrain/16/107317/44228.terrain new file mode 100644 index 000000000..254f7f947 Binary files /dev/null and b/public/terrain/16/107317/44228.terrain differ diff --git a/public/terrain/16/107317/44229.terrain b/public/terrain/16/107317/44229.terrain new file mode 100644 index 000000000..d65d801a5 Binary files /dev/null and b/public/terrain/16/107317/44229.terrain differ diff --git a/public/terrain/16/107317/44230.terrain b/public/terrain/16/107317/44230.terrain new file mode 100644 index 000000000..acbadd29c Binary files /dev/null and b/public/terrain/16/107317/44230.terrain differ diff --git a/public/terrain/16/107317/44231.terrain b/public/terrain/16/107317/44231.terrain new file mode 100644 index 000000000..d782f47f7 Binary files /dev/null and b/public/terrain/16/107317/44231.terrain differ diff --git a/public/terrain/16/107317/44232.terrain b/public/terrain/16/107317/44232.terrain new file mode 100644 index 000000000..96bb27798 Binary files /dev/null and b/public/terrain/16/107317/44232.terrain differ diff --git a/public/terrain/16/107317/44233.terrain b/public/terrain/16/107317/44233.terrain new file mode 100644 index 000000000..4253c9913 Binary files /dev/null and b/public/terrain/16/107317/44233.terrain differ diff --git a/public/terrain/16/107317/44234.terrain b/public/terrain/16/107317/44234.terrain new file mode 100644 index 000000000..40f9aabe3 Binary files /dev/null and b/public/terrain/16/107317/44234.terrain differ diff --git a/public/terrain/16/107317/44235.terrain b/public/terrain/16/107317/44235.terrain new file mode 100644 index 000000000..9a89d67ff Binary files /dev/null and b/public/terrain/16/107317/44235.terrain differ diff --git a/public/terrain/16/107317/44236.terrain b/public/terrain/16/107317/44236.terrain new file mode 100644 index 000000000..5b2a4c836 Binary files /dev/null and b/public/terrain/16/107317/44236.terrain differ diff --git a/public/terrain/16/107317/44237.terrain b/public/terrain/16/107317/44237.terrain new file mode 100644 index 000000000..66201f93d Binary files /dev/null and b/public/terrain/16/107317/44237.terrain differ diff --git a/public/terrain/16/107317/44238.terrain b/public/terrain/16/107317/44238.terrain new file mode 100644 index 000000000..93ff8acdf Binary files /dev/null and b/public/terrain/16/107317/44238.terrain differ diff --git a/public/terrain/16/107317/44239.terrain b/public/terrain/16/107317/44239.terrain new file mode 100644 index 000000000..66a27a022 Binary files /dev/null and b/public/terrain/16/107317/44239.terrain differ diff --git a/public/terrain/16/107317/44240.terrain b/public/terrain/16/107317/44240.terrain new file mode 100644 index 000000000..5cd49dd51 Binary files /dev/null and b/public/terrain/16/107317/44240.terrain differ diff --git a/public/terrain/16/107317/44241.terrain b/public/terrain/16/107317/44241.terrain new file mode 100644 index 000000000..f9e00a847 Binary files /dev/null and b/public/terrain/16/107317/44241.terrain differ diff --git a/public/terrain/16/107317/44242.terrain b/public/terrain/16/107317/44242.terrain new file mode 100644 index 000000000..e622834ee Binary files /dev/null and b/public/terrain/16/107317/44242.terrain differ diff --git a/public/terrain/16/107317/44243.terrain b/public/terrain/16/107317/44243.terrain new file mode 100644 index 000000000..9dcc93caa Binary files /dev/null and b/public/terrain/16/107317/44243.terrain differ diff --git a/public/terrain/16/107317/44244.terrain b/public/terrain/16/107317/44244.terrain new file mode 100644 index 000000000..5e0a6f4d5 Binary files /dev/null and b/public/terrain/16/107317/44244.terrain differ diff --git a/public/terrain/16/107317/44245.terrain b/public/terrain/16/107317/44245.terrain new file mode 100644 index 000000000..eab39545e Binary files /dev/null and b/public/terrain/16/107317/44245.terrain differ diff --git a/public/terrain/16/107317/44246.terrain b/public/terrain/16/107317/44246.terrain new file mode 100644 index 000000000..312c7d1d0 Binary files /dev/null and b/public/terrain/16/107317/44246.terrain differ diff --git a/public/terrain/16/107317/44247.terrain b/public/terrain/16/107317/44247.terrain new file mode 100644 index 000000000..22891bfcf Binary files /dev/null and b/public/terrain/16/107317/44247.terrain differ diff --git a/public/terrain/16/107317/44248.terrain b/public/terrain/16/107317/44248.terrain new file mode 100644 index 000000000..20636eb4a Binary files /dev/null and b/public/terrain/16/107317/44248.terrain differ diff --git a/public/terrain/16/107317/44249.terrain b/public/terrain/16/107317/44249.terrain new file mode 100644 index 000000000..17da4281d Binary files /dev/null and b/public/terrain/16/107317/44249.terrain differ diff --git a/public/terrain/16/107317/44250.terrain b/public/terrain/16/107317/44250.terrain new file mode 100644 index 000000000..8f90b76c6 Binary files /dev/null and b/public/terrain/16/107317/44250.terrain differ diff --git a/public/terrain/16/107317/44251.terrain b/public/terrain/16/107317/44251.terrain new file mode 100644 index 000000000..d4555c06f Binary files /dev/null and b/public/terrain/16/107317/44251.terrain differ diff --git a/public/terrain/16/107317/44252.terrain b/public/terrain/16/107317/44252.terrain new file mode 100644 index 000000000..18632c67e Binary files /dev/null and b/public/terrain/16/107317/44252.terrain differ diff --git a/public/terrain/16/107317/44253.terrain b/public/terrain/16/107317/44253.terrain new file mode 100644 index 000000000..4a1413822 Binary files /dev/null and b/public/terrain/16/107317/44253.terrain differ diff --git a/public/terrain/16/107317/44254.terrain b/public/terrain/16/107317/44254.terrain new file mode 100644 index 000000000..1dc6994da Binary files /dev/null and b/public/terrain/16/107317/44254.terrain differ diff --git a/public/terrain/16/107317/44255.terrain b/public/terrain/16/107317/44255.terrain new file mode 100644 index 000000000..ca6911a54 Binary files /dev/null and b/public/terrain/16/107317/44255.terrain differ diff --git a/public/terrain/16/107317/44256.terrain b/public/terrain/16/107317/44256.terrain new file mode 100644 index 000000000..3d3f108b4 Binary files /dev/null and b/public/terrain/16/107317/44256.terrain differ diff --git a/public/terrain/16/107317/44257.terrain b/public/terrain/16/107317/44257.terrain new file mode 100644 index 000000000..d887d1f87 Binary files /dev/null and b/public/terrain/16/107317/44257.terrain differ diff --git a/public/terrain/16/107318/44217.terrain b/public/terrain/16/107318/44217.terrain new file mode 100644 index 000000000..b3186c5c5 Binary files /dev/null and b/public/terrain/16/107318/44217.terrain differ diff --git a/public/terrain/16/107318/44218.terrain b/public/terrain/16/107318/44218.terrain new file mode 100644 index 000000000..b456bfd5c Binary files /dev/null and b/public/terrain/16/107318/44218.terrain differ diff --git a/public/terrain/16/107318/44219.terrain b/public/terrain/16/107318/44219.terrain new file mode 100644 index 000000000..0af335dcd Binary files /dev/null and b/public/terrain/16/107318/44219.terrain differ diff --git a/public/terrain/16/107318/44220.terrain b/public/terrain/16/107318/44220.terrain new file mode 100644 index 000000000..01a7dc466 Binary files /dev/null and b/public/terrain/16/107318/44220.terrain differ diff --git a/public/terrain/16/107318/44221.terrain b/public/terrain/16/107318/44221.terrain new file mode 100644 index 000000000..328ff5d69 Binary files /dev/null and b/public/terrain/16/107318/44221.terrain differ diff --git a/public/terrain/16/107318/44222.terrain b/public/terrain/16/107318/44222.terrain new file mode 100644 index 000000000..120d139a8 Binary files /dev/null and b/public/terrain/16/107318/44222.terrain differ diff --git a/public/terrain/16/107318/44223.terrain b/public/terrain/16/107318/44223.terrain new file mode 100644 index 000000000..4c35444a9 Binary files /dev/null and b/public/terrain/16/107318/44223.terrain differ diff --git a/public/terrain/16/107318/44224.terrain b/public/terrain/16/107318/44224.terrain new file mode 100644 index 000000000..492b7dba2 Binary files /dev/null and b/public/terrain/16/107318/44224.terrain differ diff --git a/public/terrain/16/107318/44225.terrain b/public/terrain/16/107318/44225.terrain new file mode 100644 index 000000000..adb54b5a3 Binary files /dev/null and b/public/terrain/16/107318/44225.terrain differ diff --git a/public/terrain/16/107318/44226.terrain b/public/terrain/16/107318/44226.terrain new file mode 100644 index 000000000..35f717d37 Binary files /dev/null and b/public/terrain/16/107318/44226.terrain differ diff --git a/public/terrain/16/107318/44227.terrain b/public/terrain/16/107318/44227.terrain new file mode 100644 index 000000000..73ee0d20d Binary files /dev/null and b/public/terrain/16/107318/44227.terrain differ diff --git a/public/terrain/16/107318/44228.terrain b/public/terrain/16/107318/44228.terrain new file mode 100644 index 000000000..0e82e3abe Binary files /dev/null and b/public/terrain/16/107318/44228.terrain differ diff --git a/public/terrain/16/107318/44229.terrain b/public/terrain/16/107318/44229.terrain new file mode 100644 index 000000000..a2a7b20a1 Binary files /dev/null and b/public/terrain/16/107318/44229.terrain differ diff --git a/public/terrain/16/107318/44230.terrain b/public/terrain/16/107318/44230.terrain new file mode 100644 index 000000000..3087ff62d Binary files /dev/null and b/public/terrain/16/107318/44230.terrain differ diff --git a/public/terrain/16/107318/44231.terrain b/public/terrain/16/107318/44231.terrain new file mode 100644 index 000000000..7e1c1b79e Binary files /dev/null and b/public/terrain/16/107318/44231.terrain differ diff --git a/public/terrain/16/107318/44232.terrain b/public/terrain/16/107318/44232.terrain new file mode 100644 index 000000000..b2af4dd39 Binary files /dev/null and b/public/terrain/16/107318/44232.terrain differ diff --git a/public/terrain/16/107318/44233.terrain b/public/terrain/16/107318/44233.terrain new file mode 100644 index 000000000..f2f1b3b41 Binary files /dev/null and b/public/terrain/16/107318/44233.terrain differ diff --git a/public/terrain/16/107318/44234.terrain b/public/terrain/16/107318/44234.terrain new file mode 100644 index 000000000..cfd03add6 Binary files /dev/null and b/public/terrain/16/107318/44234.terrain differ diff --git a/public/terrain/16/107318/44235.terrain b/public/terrain/16/107318/44235.terrain new file mode 100644 index 000000000..4e56f5f8f Binary files /dev/null and b/public/terrain/16/107318/44235.terrain differ diff --git a/public/terrain/16/107318/44236.terrain b/public/terrain/16/107318/44236.terrain new file mode 100644 index 000000000..fb04fcbca Binary files /dev/null and b/public/terrain/16/107318/44236.terrain differ diff --git a/public/terrain/16/107318/44237.terrain b/public/terrain/16/107318/44237.terrain new file mode 100644 index 000000000..1e46d5caf Binary files /dev/null and b/public/terrain/16/107318/44237.terrain differ diff --git a/public/terrain/16/107318/44238.terrain b/public/terrain/16/107318/44238.terrain new file mode 100644 index 000000000..4a7ac1672 Binary files /dev/null and b/public/terrain/16/107318/44238.terrain differ diff --git a/public/terrain/16/107318/44239.terrain b/public/terrain/16/107318/44239.terrain new file mode 100644 index 000000000..dda414bd5 Binary files /dev/null and b/public/terrain/16/107318/44239.terrain differ diff --git a/public/terrain/16/107318/44240.terrain b/public/terrain/16/107318/44240.terrain new file mode 100644 index 000000000..61de0bd6a Binary files /dev/null and b/public/terrain/16/107318/44240.terrain differ diff --git a/public/terrain/16/107318/44241.terrain b/public/terrain/16/107318/44241.terrain new file mode 100644 index 000000000..3ba1ccd59 Binary files /dev/null and b/public/terrain/16/107318/44241.terrain differ diff --git a/public/terrain/16/107318/44242.terrain b/public/terrain/16/107318/44242.terrain new file mode 100644 index 000000000..5f6a10a00 Binary files /dev/null and b/public/terrain/16/107318/44242.terrain differ diff --git a/public/terrain/16/107318/44243.terrain b/public/terrain/16/107318/44243.terrain new file mode 100644 index 000000000..8429f124c Binary files /dev/null and b/public/terrain/16/107318/44243.terrain differ diff --git a/public/terrain/16/107318/44244.terrain b/public/terrain/16/107318/44244.terrain new file mode 100644 index 000000000..179a84341 Binary files /dev/null and b/public/terrain/16/107318/44244.terrain differ diff --git a/public/terrain/16/107318/44245.terrain b/public/terrain/16/107318/44245.terrain new file mode 100644 index 000000000..4f12bb6ad Binary files /dev/null and b/public/terrain/16/107318/44245.terrain differ diff --git a/public/terrain/16/107318/44246.terrain b/public/terrain/16/107318/44246.terrain new file mode 100644 index 000000000..2687b2d31 Binary files /dev/null and b/public/terrain/16/107318/44246.terrain differ diff --git a/public/terrain/16/107318/44247.terrain b/public/terrain/16/107318/44247.terrain new file mode 100644 index 000000000..b3c7a99d6 Binary files /dev/null and b/public/terrain/16/107318/44247.terrain differ diff --git a/public/terrain/16/107318/44248.terrain b/public/terrain/16/107318/44248.terrain new file mode 100644 index 000000000..60c794eae Binary files /dev/null and b/public/terrain/16/107318/44248.terrain differ diff --git a/public/terrain/16/107318/44249.terrain b/public/terrain/16/107318/44249.terrain new file mode 100644 index 000000000..938b5eec5 Binary files /dev/null and b/public/terrain/16/107318/44249.terrain differ diff --git a/public/terrain/16/107318/44250.terrain b/public/terrain/16/107318/44250.terrain new file mode 100644 index 000000000..b03e5fd3c Binary files /dev/null and b/public/terrain/16/107318/44250.terrain differ diff --git a/public/terrain/16/107318/44251.terrain b/public/terrain/16/107318/44251.terrain new file mode 100644 index 000000000..cde4d90c1 Binary files /dev/null and b/public/terrain/16/107318/44251.terrain differ diff --git a/public/terrain/16/107318/44252.terrain b/public/terrain/16/107318/44252.terrain new file mode 100644 index 000000000..ae26fc428 Binary files /dev/null and b/public/terrain/16/107318/44252.terrain differ diff --git a/public/terrain/16/107318/44253.terrain b/public/terrain/16/107318/44253.terrain new file mode 100644 index 000000000..275e1043a Binary files /dev/null and b/public/terrain/16/107318/44253.terrain differ diff --git a/public/terrain/16/107318/44254.terrain b/public/terrain/16/107318/44254.terrain new file mode 100644 index 000000000..8ef8c9ab4 Binary files /dev/null and b/public/terrain/16/107318/44254.terrain differ diff --git a/public/terrain/16/107318/44255.terrain b/public/terrain/16/107318/44255.terrain new file mode 100644 index 000000000..7cc74bb83 Binary files /dev/null and b/public/terrain/16/107318/44255.terrain differ diff --git a/public/terrain/16/107318/44256.terrain b/public/terrain/16/107318/44256.terrain new file mode 100644 index 000000000..3259995be Binary files /dev/null and b/public/terrain/16/107318/44256.terrain differ diff --git a/public/terrain/16/107318/44257.terrain b/public/terrain/16/107318/44257.terrain new file mode 100644 index 000000000..d4a98fecd Binary files /dev/null and b/public/terrain/16/107318/44257.terrain differ diff --git a/public/terrain/16/107319/44217.terrain b/public/terrain/16/107319/44217.terrain new file mode 100644 index 000000000..15d0b44cb Binary files /dev/null and b/public/terrain/16/107319/44217.terrain differ diff --git a/public/terrain/16/107319/44218.terrain b/public/terrain/16/107319/44218.terrain new file mode 100644 index 000000000..cb85908f5 Binary files /dev/null and b/public/terrain/16/107319/44218.terrain differ diff --git a/public/terrain/16/107319/44219.terrain b/public/terrain/16/107319/44219.terrain new file mode 100644 index 000000000..9722aaf3c Binary files /dev/null and b/public/terrain/16/107319/44219.terrain differ diff --git a/public/terrain/16/107319/44220.terrain b/public/terrain/16/107319/44220.terrain new file mode 100644 index 000000000..cd309f178 Binary files /dev/null and b/public/terrain/16/107319/44220.terrain differ diff --git a/public/terrain/16/107319/44221.terrain b/public/terrain/16/107319/44221.terrain new file mode 100644 index 000000000..d550a64ee Binary files /dev/null and b/public/terrain/16/107319/44221.terrain differ diff --git a/public/terrain/16/107319/44222.terrain b/public/terrain/16/107319/44222.terrain new file mode 100644 index 000000000..4da36b7fb Binary files /dev/null and b/public/terrain/16/107319/44222.terrain differ diff --git a/public/terrain/16/107319/44223.terrain b/public/terrain/16/107319/44223.terrain new file mode 100644 index 000000000..0e97db7d3 Binary files /dev/null and b/public/terrain/16/107319/44223.terrain differ diff --git a/public/terrain/16/107319/44224.terrain b/public/terrain/16/107319/44224.terrain new file mode 100644 index 000000000..39004fc80 Binary files /dev/null and b/public/terrain/16/107319/44224.terrain differ diff --git a/public/terrain/16/107319/44225.terrain b/public/terrain/16/107319/44225.terrain new file mode 100644 index 000000000..5bfa5b733 Binary files /dev/null and b/public/terrain/16/107319/44225.terrain differ diff --git a/public/terrain/16/107319/44226.terrain b/public/terrain/16/107319/44226.terrain new file mode 100644 index 000000000..a064cf52e Binary files /dev/null and b/public/terrain/16/107319/44226.terrain differ diff --git a/public/terrain/16/107319/44227.terrain b/public/terrain/16/107319/44227.terrain new file mode 100644 index 000000000..90d00b05c Binary files /dev/null and b/public/terrain/16/107319/44227.terrain differ diff --git a/public/terrain/16/107319/44228.terrain b/public/terrain/16/107319/44228.terrain new file mode 100644 index 000000000..f9a717ae5 Binary files /dev/null and b/public/terrain/16/107319/44228.terrain differ diff --git a/public/terrain/16/107319/44229.terrain b/public/terrain/16/107319/44229.terrain new file mode 100644 index 000000000..deeb95fe2 Binary files /dev/null and b/public/terrain/16/107319/44229.terrain differ diff --git a/public/terrain/16/107319/44230.terrain b/public/terrain/16/107319/44230.terrain new file mode 100644 index 000000000..d766956ae Binary files /dev/null and b/public/terrain/16/107319/44230.terrain differ diff --git a/public/terrain/16/107319/44231.terrain b/public/terrain/16/107319/44231.terrain new file mode 100644 index 000000000..4a1edf3c3 Binary files /dev/null and b/public/terrain/16/107319/44231.terrain differ diff --git a/public/terrain/16/107319/44232.terrain b/public/terrain/16/107319/44232.terrain new file mode 100644 index 000000000..b74fb0b24 Binary files /dev/null and b/public/terrain/16/107319/44232.terrain differ diff --git a/public/terrain/16/107319/44233.terrain b/public/terrain/16/107319/44233.terrain new file mode 100644 index 000000000..ef2cae976 Binary files /dev/null and b/public/terrain/16/107319/44233.terrain differ diff --git a/public/terrain/16/107319/44234.terrain b/public/terrain/16/107319/44234.terrain new file mode 100644 index 000000000..0852c3e6d Binary files /dev/null and b/public/terrain/16/107319/44234.terrain differ diff --git a/public/terrain/16/107319/44235.terrain b/public/terrain/16/107319/44235.terrain new file mode 100644 index 000000000..2bfc280fe Binary files /dev/null and b/public/terrain/16/107319/44235.terrain differ diff --git a/public/terrain/16/107319/44236.terrain b/public/terrain/16/107319/44236.terrain new file mode 100644 index 000000000..5616fc17d Binary files /dev/null and b/public/terrain/16/107319/44236.terrain differ diff --git a/public/terrain/16/107319/44237.terrain b/public/terrain/16/107319/44237.terrain new file mode 100644 index 000000000..4fbc85b69 Binary files /dev/null and b/public/terrain/16/107319/44237.terrain differ diff --git a/public/terrain/16/107319/44238.terrain b/public/terrain/16/107319/44238.terrain new file mode 100644 index 000000000..da0b2aef3 Binary files /dev/null and b/public/terrain/16/107319/44238.terrain differ diff --git a/public/terrain/16/107319/44239.terrain b/public/terrain/16/107319/44239.terrain new file mode 100644 index 000000000..bca4289f2 Binary files /dev/null and b/public/terrain/16/107319/44239.terrain differ diff --git a/public/terrain/16/107319/44240.terrain b/public/terrain/16/107319/44240.terrain new file mode 100644 index 000000000..33a92b5e3 Binary files /dev/null and b/public/terrain/16/107319/44240.terrain differ diff --git a/public/terrain/16/107319/44241.terrain b/public/terrain/16/107319/44241.terrain new file mode 100644 index 000000000..631c73d81 Binary files /dev/null and b/public/terrain/16/107319/44241.terrain differ diff --git a/public/terrain/16/107319/44242.terrain b/public/terrain/16/107319/44242.terrain new file mode 100644 index 000000000..29a9ec07a Binary files /dev/null and b/public/terrain/16/107319/44242.terrain differ diff --git a/public/terrain/16/107319/44243.terrain b/public/terrain/16/107319/44243.terrain new file mode 100644 index 000000000..f88d87697 Binary files /dev/null and b/public/terrain/16/107319/44243.terrain differ diff --git a/public/terrain/16/107319/44244.terrain b/public/terrain/16/107319/44244.terrain new file mode 100644 index 000000000..f6a877892 Binary files /dev/null and b/public/terrain/16/107319/44244.terrain differ diff --git a/public/terrain/16/107319/44245.terrain b/public/terrain/16/107319/44245.terrain new file mode 100644 index 000000000..8b2a0c858 Binary files /dev/null and b/public/terrain/16/107319/44245.terrain differ diff --git a/public/terrain/16/107319/44246.terrain b/public/terrain/16/107319/44246.terrain new file mode 100644 index 000000000..be2306de6 Binary files /dev/null and b/public/terrain/16/107319/44246.terrain differ diff --git a/public/terrain/16/107319/44247.terrain b/public/terrain/16/107319/44247.terrain new file mode 100644 index 000000000..552b697fa Binary files /dev/null and b/public/terrain/16/107319/44247.terrain differ diff --git a/public/terrain/16/107319/44248.terrain b/public/terrain/16/107319/44248.terrain new file mode 100644 index 000000000..4828661d6 Binary files /dev/null and b/public/terrain/16/107319/44248.terrain differ diff --git a/public/terrain/16/107319/44249.terrain b/public/terrain/16/107319/44249.terrain new file mode 100644 index 000000000..79b6960b4 Binary files /dev/null and b/public/terrain/16/107319/44249.terrain differ diff --git a/public/terrain/16/107319/44250.terrain b/public/terrain/16/107319/44250.terrain new file mode 100644 index 000000000..e4a3b6c30 Binary files /dev/null and b/public/terrain/16/107319/44250.terrain differ diff --git a/public/terrain/16/107319/44251.terrain b/public/terrain/16/107319/44251.terrain new file mode 100644 index 000000000..9d8b69298 Binary files /dev/null and b/public/terrain/16/107319/44251.terrain differ diff --git a/public/terrain/16/107319/44252.terrain b/public/terrain/16/107319/44252.terrain new file mode 100644 index 000000000..a76119a0b Binary files /dev/null and b/public/terrain/16/107319/44252.terrain differ diff --git a/public/terrain/16/107319/44253.terrain b/public/terrain/16/107319/44253.terrain new file mode 100644 index 000000000..5bc3732c3 Binary files /dev/null and b/public/terrain/16/107319/44253.terrain differ diff --git a/public/terrain/16/107319/44254.terrain b/public/terrain/16/107319/44254.terrain new file mode 100644 index 000000000..a9541c70e Binary files /dev/null and b/public/terrain/16/107319/44254.terrain differ diff --git a/public/terrain/16/107319/44255.terrain b/public/terrain/16/107319/44255.terrain new file mode 100644 index 000000000..ea936fcb4 Binary files /dev/null and b/public/terrain/16/107319/44255.terrain differ diff --git a/public/terrain/16/107319/44256.terrain b/public/terrain/16/107319/44256.terrain new file mode 100644 index 000000000..533fb2fa3 Binary files /dev/null and b/public/terrain/16/107319/44256.terrain differ diff --git a/public/terrain/16/107319/44257.terrain b/public/terrain/16/107319/44257.terrain new file mode 100644 index 000000000..e8c07a547 Binary files /dev/null and b/public/terrain/16/107319/44257.terrain differ diff --git a/public/terrain/16/107320/44217.terrain b/public/terrain/16/107320/44217.terrain new file mode 100644 index 000000000..3be46cbef Binary files /dev/null and b/public/terrain/16/107320/44217.terrain differ diff --git a/public/terrain/16/107320/44218.terrain b/public/terrain/16/107320/44218.terrain new file mode 100644 index 000000000..c262961a4 Binary files /dev/null and b/public/terrain/16/107320/44218.terrain differ diff --git a/public/terrain/16/107320/44219.terrain b/public/terrain/16/107320/44219.terrain new file mode 100644 index 000000000..4585928ca Binary files /dev/null and b/public/terrain/16/107320/44219.terrain differ diff --git a/public/terrain/16/107320/44220.terrain b/public/terrain/16/107320/44220.terrain new file mode 100644 index 000000000..5cf19a674 Binary files /dev/null and b/public/terrain/16/107320/44220.terrain differ diff --git a/public/terrain/16/107320/44221.terrain b/public/terrain/16/107320/44221.terrain new file mode 100644 index 000000000..efc8bc3c7 Binary files /dev/null and b/public/terrain/16/107320/44221.terrain differ diff --git a/public/terrain/16/107320/44222.terrain b/public/terrain/16/107320/44222.terrain new file mode 100644 index 000000000..03ccb81d3 Binary files /dev/null and b/public/terrain/16/107320/44222.terrain differ diff --git a/public/terrain/16/107320/44223.terrain b/public/terrain/16/107320/44223.terrain new file mode 100644 index 000000000..90ac82664 Binary files /dev/null and b/public/terrain/16/107320/44223.terrain differ diff --git a/public/terrain/16/107320/44224.terrain b/public/terrain/16/107320/44224.terrain new file mode 100644 index 000000000..cc1814f04 Binary files /dev/null and b/public/terrain/16/107320/44224.terrain differ diff --git a/public/terrain/16/107320/44225.terrain b/public/terrain/16/107320/44225.terrain new file mode 100644 index 000000000..d4f954227 Binary files /dev/null and b/public/terrain/16/107320/44225.terrain differ diff --git a/public/terrain/16/107320/44226.terrain b/public/terrain/16/107320/44226.terrain new file mode 100644 index 000000000..cd118b429 Binary files /dev/null and b/public/terrain/16/107320/44226.terrain differ diff --git a/public/terrain/16/107320/44227.terrain b/public/terrain/16/107320/44227.terrain new file mode 100644 index 000000000..9303c957d Binary files /dev/null and b/public/terrain/16/107320/44227.terrain differ diff --git a/public/terrain/16/107320/44228.terrain b/public/terrain/16/107320/44228.terrain new file mode 100644 index 000000000..c72347f34 Binary files /dev/null and b/public/terrain/16/107320/44228.terrain differ diff --git a/public/terrain/16/107320/44229.terrain b/public/terrain/16/107320/44229.terrain new file mode 100644 index 000000000..737618bf4 Binary files /dev/null and b/public/terrain/16/107320/44229.terrain differ diff --git a/public/terrain/16/107320/44230.terrain b/public/terrain/16/107320/44230.terrain new file mode 100644 index 000000000..a31a61585 Binary files /dev/null and b/public/terrain/16/107320/44230.terrain differ diff --git a/public/terrain/16/107320/44231.terrain b/public/terrain/16/107320/44231.terrain new file mode 100644 index 000000000..ad75d818c Binary files /dev/null and b/public/terrain/16/107320/44231.terrain differ diff --git a/public/terrain/16/107320/44232.terrain b/public/terrain/16/107320/44232.terrain new file mode 100644 index 000000000..e46741e5a Binary files /dev/null and b/public/terrain/16/107320/44232.terrain differ diff --git a/public/terrain/16/107320/44233.terrain b/public/terrain/16/107320/44233.terrain new file mode 100644 index 000000000..a3a7e941e Binary files /dev/null and b/public/terrain/16/107320/44233.terrain differ diff --git a/public/terrain/16/107320/44234.terrain b/public/terrain/16/107320/44234.terrain new file mode 100644 index 000000000..a8d54c12a Binary files /dev/null and b/public/terrain/16/107320/44234.terrain differ diff --git a/public/terrain/16/107320/44235.terrain b/public/terrain/16/107320/44235.terrain new file mode 100644 index 000000000..739dfd32c Binary files /dev/null and b/public/terrain/16/107320/44235.terrain differ diff --git a/public/terrain/16/107320/44236.terrain b/public/terrain/16/107320/44236.terrain new file mode 100644 index 000000000..145bbe142 Binary files /dev/null and b/public/terrain/16/107320/44236.terrain differ diff --git a/public/terrain/16/107320/44237.terrain b/public/terrain/16/107320/44237.terrain new file mode 100644 index 000000000..67113288e Binary files /dev/null and b/public/terrain/16/107320/44237.terrain differ diff --git a/public/terrain/16/107320/44238.terrain b/public/terrain/16/107320/44238.terrain new file mode 100644 index 000000000..3c5c66e00 Binary files /dev/null and b/public/terrain/16/107320/44238.terrain differ diff --git a/public/terrain/16/107320/44239.terrain b/public/terrain/16/107320/44239.terrain new file mode 100644 index 000000000..6a11af511 Binary files /dev/null and b/public/terrain/16/107320/44239.terrain differ diff --git a/public/terrain/16/107320/44240.terrain b/public/terrain/16/107320/44240.terrain new file mode 100644 index 000000000..738a38d6a Binary files /dev/null and b/public/terrain/16/107320/44240.terrain differ diff --git a/public/terrain/16/107320/44241.terrain b/public/terrain/16/107320/44241.terrain new file mode 100644 index 000000000..32f253c24 Binary files /dev/null and b/public/terrain/16/107320/44241.terrain differ diff --git a/public/terrain/16/107320/44242.terrain b/public/terrain/16/107320/44242.terrain new file mode 100644 index 000000000..ccdcd538c Binary files /dev/null and b/public/terrain/16/107320/44242.terrain differ diff --git a/public/terrain/16/107320/44243.terrain b/public/terrain/16/107320/44243.terrain new file mode 100644 index 000000000..c51afeec4 Binary files /dev/null and b/public/terrain/16/107320/44243.terrain differ diff --git a/public/terrain/16/107320/44244.terrain b/public/terrain/16/107320/44244.terrain new file mode 100644 index 000000000..60a1bfc93 Binary files /dev/null and b/public/terrain/16/107320/44244.terrain differ diff --git a/public/terrain/16/107320/44245.terrain b/public/terrain/16/107320/44245.terrain new file mode 100644 index 000000000..aeed608a1 Binary files /dev/null and b/public/terrain/16/107320/44245.terrain differ diff --git a/public/terrain/16/107320/44246.terrain b/public/terrain/16/107320/44246.terrain new file mode 100644 index 000000000..8961565fe Binary files /dev/null and b/public/terrain/16/107320/44246.terrain differ diff --git a/public/terrain/16/107320/44247.terrain b/public/terrain/16/107320/44247.terrain new file mode 100644 index 000000000..86f57b156 Binary files /dev/null and b/public/terrain/16/107320/44247.terrain differ diff --git a/public/terrain/16/107320/44248.terrain b/public/terrain/16/107320/44248.terrain new file mode 100644 index 000000000..0c1410d16 Binary files /dev/null and b/public/terrain/16/107320/44248.terrain differ diff --git a/public/terrain/16/107320/44249.terrain b/public/terrain/16/107320/44249.terrain new file mode 100644 index 000000000..0936d1f22 Binary files /dev/null and b/public/terrain/16/107320/44249.terrain differ diff --git a/public/terrain/16/107320/44250.terrain b/public/terrain/16/107320/44250.terrain new file mode 100644 index 000000000..58d4d9f98 Binary files /dev/null and b/public/terrain/16/107320/44250.terrain differ diff --git a/public/terrain/16/107320/44251.terrain b/public/terrain/16/107320/44251.terrain new file mode 100644 index 000000000..4bd1b7101 Binary files /dev/null and b/public/terrain/16/107320/44251.terrain differ diff --git a/public/terrain/16/107320/44252.terrain b/public/terrain/16/107320/44252.terrain new file mode 100644 index 000000000..9b0152d71 Binary files /dev/null and b/public/terrain/16/107320/44252.terrain differ diff --git a/public/terrain/16/107320/44253.terrain b/public/terrain/16/107320/44253.terrain new file mode 100644 index 000000000..a4b3af1ff Binary files /dev/null and b/public/terrain/16/107320/44253.terrain differ diff --git a/public/terrain/16/107320/44254.terrain b/public/terrain/16/107320/44254.terrain new file mode 100644 index 000000000..65816afa1 Binary files /dev/null and b/public/terrain/16/107320/44254.terrain differ diff --git a/public/terrain/16/107320/44255.terrain b/public/terrain/16/107320/44255.terrain new file mode 100644 index 000000000..d7bbd97d1 Binary files /dev/null and b/public/terrain/16/107320/44255.terrain differ diff --git a/public/terrain/16/107320/44256.terrain b/public/terrain/16/107320/44256.terrain new file mode 100644 index 000000000..9c2260ff6 Binary files /dev/null and b/public/terrain/16/107320/44256.terrain differ diff --git a/public/terrain/16/107320/44257.terrain b/public/terrain/16/107320/44257.terrain new file mode 100644 index 000000000..56ca0924e Binary files /dev/null and b/public/terrain/16/107320/44257.terrain differ diff --git a/public/terrain/16/107321/44217.terrain b/public/terrain/16/107321/44217.terrain new file mode 100644 index 000000000..3d12db6d2 Binary files /dev/null and b/public/terrain/16/107321/44217.terrain differ diff --git a/public/terrain/16/107321/44218.terrain b/public/terrain/16/107321/44218.terrain new file mode 100644 index 000000000..f3563fe9a Binary files /dev/null and b/public/terrain/16/107321/44218.terrain differ diff --git a/public/terrain/16/107321/44219.terrain b/public/terrain/16/107321/44219.terrain new file mode 100644 index 000000000..96c5f466f Binary files /dev/null and b/public/terrain/16/107321/44219.terrain differ diff --git a/public/terrain/16/107321/44220.terrain b/public/terrain/16/107321/44220.terrain new file mode 100644 index 000000000..5359b9ca7 Binary files /dev/null and b/public/terrain/16/107321/44220.terrain differ diff --git a/public/terrain/16/107321/44221.terrain b/public/terrain/16/107321/44221.terrain new file mode 100644 index 000000000..35b1ce717 Binary files /dev/null and b/public/terrain/16/107321/44221.terrain differ diff --git a/public/terrain/16/107321/44222.terrain b/public/terrain/16/107321/44222.terrain new file mode 100644 index 000000000..433f8956b Binary files /dev/null and b/public/terrain/16/107321/44222.terrain differ diff --git a/public/terrain/16/107321/44223.terrain b/public/terrain/16/107321/44223.terrain new file mode 100644 index 000000000..be29e116c Binary files /dev/null and b/public/terrain/16/107321/44223.terrain differ diff --git a/public/terrain/16/107321/44224.terrain b/public/terrain/16/107321/44224.terrain new file mode 100644 index 000000000..64ca2c083 Binary files /dev/null and b/public/terrain/16/107321/44224.terrain differ diff --git a/public/terrain/16/107321/44225.terrain b/public/terrain/16/107321/44225.terrain new file mode 100644 index 000000000..e7c984bef Binary files /dev/null and b/public/terrain/16/107321/44225.terrain differ diff --git a/public/terrain/16/107321/44226.terrain b/public/terrain/16/107321/44226.terrain new file mode 100644 index 000000000..972874d9f Binary files /dev/null and b/public/terrain/16/107321/44226.terrain differ diff --git a/public/terrain/16/107321/44227.terrain b/public/terrain/16/107321/44227.terrain new file mode 100644 index 000000000..4efb499d9 Binary files /dev/null and b/public/terrain/16/107321/44227.terrain differ diff --git a/public/terrain/16/107321/44228.terrain b/public/terrain/16/107321/44228.terrain new file mode 100644 index 000000000..ae2af6e5a Binary files /dev/null and b/public/terrain/16/107321/44228.terrain differ diff --git a/public/terrain/16/107321/44229.terrain b/public/terrain/16/107321/44229.terrain new file mode 100644 index 000000000..9838ceb32 Binary files /dev/null and b/public/terrain/16/107321/44229.terrain differ diff --git a/public/terrain/16/107321/44230.terrain b/public/terrain/16/107321/44230.terrain new file mode 100644 index 000000000..408d6af53 Binary files /dev/null and b/public/terrain/16/107321/44230.terrain differ diff --git a/public/terrain/16/107321/44231.terrain b/public/terrain/16/107321/44231.terrain new file mode 100644 index 000000000..6b652f6f9 Binary files /dev/null and b/public/terrain/16/107321/44231.terrain differ diff --git a/public/terrain/16/107321/44232.terrain b/public/terrain/16/107321/44232.terrain new file mode 100644 index 000000000..5f598a432 Binary files /dev/null and b/public/terrain/16/107321/44232.terrain differ diff --git a/public/terrain/16/107321/44233.terrain b/public/terrain/16/107321/44233.terrain new file mode 100644 index 000000000..4a72a6258 Binary files /dev/null and b/public/terrain/16/107321/44233.terrain differ diff --git a/public/terrain/16/107321/44234.terrain b/public/terrain/16/107321/44234.terrain new file mode 100644 index 000000000..26eaf781f Binary files /dev/null and b/public/terrain/16/107321/44234.terrain differ diff --git a/public/terrain/16/107321/44235.terrain b/public/terrain/16/107321/44235.terrain new file mode 100644 index 000000000..30ccba9c8 Binary files /dev/null and b/public/terrain/16/107321/44235.terrain differ diff --git a/public/terrain/16/107321/44236.terrain b/public/terrain/16/107321/44236.terrain new file mode 100644 index 000000000..84044bab6 Binary files /dev/null and b/public/terrain/16/107321/44236.terrain differ diff --git a/public/terrain/16/107321/44237.terrain b/public/terrain/16/107321/44237.terrain new file mode 100644 index 000000000..10487ecc7 Binary files /dev/null and b/public/terrain/16/107321/44237.terrain differ diff --git a/public/terrain/16/107321/44238.terrain b/public/terrain/16/107321/44238.terrain new file mode 100644 index 000000000..1d5d27a91 Binary files /dev/null and b/public/terrain/16/107321/44238.terrain differ diff --git a/public/terrain/16/107321/44239.terrain b/public/terrain/16/107321/44239.terrain new file mode 100644 index 000000000..0dfd0e21f Binary files /dev/null and b/public/terrain/16/107321/44239.terrain differ diff --git a/public/terrain/16/107321/44240.terrain b/public/terrain/16/107321/44240.terrain new file mode 100644 index 000000000..f5c7916f6 Binary files /dev/null and b/public/terrain/16/107321/44240.terrain differ diff --git a/public/terrain/16/107321/44241.terrain b/public/terrain/16/107321/44241.terrain new file mode 100644 index 000000000..1d9b72fda Binary files /dev/null and b/public/terrain/16/107321/44241.terrain differ diff --git a/public/terrain/16/107321/44242.terrain b/public/terrain/16/107321/44242.terrain new file mode 100644 index 000000000..4d4c65e3f Binary files /dev/null and b/public/terrain/16/107321/44242.terrain differ diff --git a/public/terrain/16/107321/44243.terrain b/public/terrain/16/107321/44243.terrain new file mode 100644 index 000000000..9d4140876 Binary files /dev/null and b/public/terrain/16/107321/44243.terrain differ diff --git a/public/terrain/16/107321/44244.terrain b/public/terrain/16/107321/44244.terrain new file mode 100644 index 000000000..974c82182 Binary files /dev/null and b/public/terrain/16/107321/44244.terrain differ diff --git a/public/terrain/16/107321/44245.terrain b/public/terrain/16/107321/44245.terrain new file mode 100644 index 000000000..ae6595848 Binary files /dev/null and b/public/terrain/16/107321/44245.terrain differ diff --git a/public/terrain/16/107321/44246.terrain b/public/terrain/16/107321/44246.terrain new file mode 100644 index 000000000..e3223cd5d Binary files /dev/null and b/public/terrain/16/107321/44246.terrain differ diff --git a/public/terrain/16/107321/44247.terrain b/public/terrain/16/107321/44247.terrain new file mode 100644 index 000000000..1ddc27b42 Binary files /dev/null and b/public/terrain/16/107321/44247.terrain differ diff --git a/public/terrain/16/107321/44248.terrain b/public/terrain/16/107321/44248.terrain new file mode 100644 index 000000000..60f4fe400 Binary files /dev/null and b/public/terrain/16/107321/44248.terrain differ diff --git a/public/terrain/16/107321/44249.terrain b/public/terrain/16/107321/44249.terrain new file mode 100644 index 000000000..f71d00312 Binary files /dev/null and b/public/terrain/16/107321/44249.terrain differ diff --git a/public/terrain/16/107321/44250.terrain b/public/terrain/16/107321/44250.terrain new file mode 100644 index 000000000..319bde7c1 Binary files /dev/null and b/public/terrain/16/107321/44250.terrain differ diff --git a/public/terrain/16/107321/44251.terrain b/public/terrain/16/107321/44251.terrain new file mode 100644 index 000000000..dd8f26884 Binary files /dev/null and b/public/terrain/16/107321/44251.terrain differ diff --git a/public/terrain/16/107321/44252.terrain b/public/terrain/16/107321/44252.terrain new file mode 100644 index 000000000..10f99222f Binary files /dev/null and b/public/terrain/16/107321/44252.terrain differ diff --git a/public/terrain/16/107321/44253.terrain b/public/terrain/16/107321/44253.terrain new file mode 100644 index 000000000..5d613bb11 Binary files /dev/null and b/public/terrain/16/107321/44253.terrain differ diff --git a/public/terrain/16/107321/44254.terrain b/public/terrain/16/107321/44254.terrain new file mode 100644 index 000000000..73ab882a4 Binary files /dev/null and b/public/terrain/16/107321/44254.terrain differ diff --git a/public/terrain/16/107321/44255.terrain b/public/terrain/16/107321/44255.terrain new file mode 100644 index 000000000..394e1eb7d Binary files /dev/null and b/public/terrain/16/107321/44255.terrain differ diff --git a/public/terrain/16/107321/44256.terrain b/public/terrain/16/107321/44256.terrain new file mode 100644 index 000000000..47ea8820e Binary files /dev/null and b/public/terrain/16/107321/44256.terrain differ diff --git a/public/terrain/16/107321/44257.terrain b/public/terrain/16/107321/44257.terrain new file mode 100644 index 000000000..1eee50781 Binary files /dev/null and b/public/terrain/16/107321/44257.terrain differ diff --git a/public/terrain/16/107322/44217.terrain b/public/terrain/16/107322/44217.terrain new file mode 100644 index 000000000..66b8e15a6 Binary files /dev/null and b/public/terrain/16/107322/44217.terrain differ diff --git a/public/terrain/16/107322/44218.terrain b/public/terrain/16/107322/44218.terrain new file mode 100644 index 000000000..e14ebe8f4 Binary files /dev/null and b/public/terrain/16/107322/44218.terrain differ diff --git a/public/terrain/16/107322/44219.terrain b/public/terrain/16/107322/44219.terrain new file mode 100644 index 000000000..128a9eaba Binary files /dev/null and b/public/terrain/16/107322/44219.terrain differ diff --git a/public/terrain/16/107322/44220.terrain b/public/terrain/16/107322/44220.terrain new file mode 100644 index 000000000..41fbf9f7e Binary files /dev/null and b/public/terrain/16/107322/44220.terrain differ diff --git a/public/terrain/16/107322/44221.terrain b/public/terrain/16/107322/44221.terrain new file mode 100644 index 000000000..f2a1487d2 Binary files /dev/null and b/public/terrain/16/107322/44221.terrain differ diff --git a/public/terrain/16/107322/44222.terrain b/public/terrain/16/107322/44222.terrain new file mode 100644 index 000000000..3924f9204 Binary files /dev/null and b/public/terrain/16/107322/44222.terrain differ diff --git a/public/terrain/16/107322/44223.terrain b/public/terrain/16/107322/44223.terrain new file mode 100644 index 000000000..3ebfd54e8 Binary files /dev/null and b/public/terrain/16/107322/44223.terrain differ diff --git a/public/terrain/16/107322/44224.terrain b/public/terrain/16/107322/44224.terrain new file mode 100644 index 000000000..e1dd0883b Binary files /dev/null and b/public/terrain/16/107322/44224.terrain differ diff --git a/public/terrain/16/107322/44225.terrain b/public/terrain/16/107322/44225.terrain new file mode 100644 index 000000000..8d5f02980 Binary files /dev/null and b/public/terrain/16/107322/44225.terrain differ diff --git a/public/terrain/16/107322/44226.terrain b/public/terrain/16/107322/44226.terrain new file mode 100644 index 000000000..08b3117a9 Binary files /dev/null and b/public/terrain/16/107322/44226.terrain differ diff --git a/public/terrain/16/107322/44227.terrain b/public/terrain/16/107322/44227.terrain new file mode 100644 index 000000000..72532f764 Binary files /dev/null and b/public/terrain/16/107322/44227.terrain differ diff --git a/public/terrain/16/107322/44228.terrain b/public/terrain/16/107322/44228.terrain new file mode 100644 index 000000000..5f6bde9f7 Binary files /dev/null and b/public/terrain/16/107322/44228.terrain differ diff --git a/public/terrain/16/107322/44229.terrain b/public/terrain/16/107322/44229.terrain new file mode 100644 index 000000000..6b734a55c Binary files /dev/null and b/public/terrain/16/107322/44229.terrain differ diff --git a/public/terrain/16/107322/44230.terrain b/public/terrain/16/107322/44230.terrain new file mode 100644 index 000000000..946339ead Binary files /dev/null and b/public/terrain/16/107322/44230.terrain differ diff --git a/public/terrain/16/107322/44231.terrain b/public/terrain/16/107322/44231.terrain new file mode 100644 index 000000000..de8d74e93 Binary files /dev/null and b/public/terrain/16/107322/44231.terrain differ diff --git a/public/terrain/16/107322/44232.terrain b/public/terrain/16/107322/44232.terrain new file mode 100644 index 000000000..d5d89b245 Binary files /dev/null and b/public/terrain/16/107322/44232.terrain differ diff --git a/public/terrain/16/107322/44233.terrain b/public/terrain/16/107322/44233.terrain new file mode 100644 index 000000000..28aa9b08e Binary files /dev/null and b/public/terrain/16/107322/44233.terrain differ diff --git a/public/terrain/16/107322/44234.terrain b/public/terrain/16/107322/44234.terrain new file mode 100644 index 000000000..8a6e4a888 Binary files /dev/null and b/public/terrain/16/107322/44234.terrain differ diff --git a/public/terrain/16/107322/44235.terrain b/public/terrain/16/107322/44235.terrain new file mode 100644 index 000000000..540cbdb7b Binary files /dev/null and b/public/terrain/16/107322/44235.terrain differ diff --git a/public/terrain/16/107322/44236.terrain b/public/terrain/16/107322/44236.terrain new file mode 100644 index 000000000..28bebe8b1 Binary files /dev/null and b/public/terrain/16/107322/44236.terrain differ diff --git a/public/terrain/16/107322/44237.terrain b/public/terrain/16/107322/44237.terrain new file mode 100644 index 000000000..0072b69a8 Binary files /dev/null and b/public/terrain/16/107322/44237.terrain differ diff --git a/public/terrain/16/107322/44238.terrain b/public/terrain/16/107322/44238.terrain new file mode 100644 index 000000000..b3d205987 Binary files /dev/null and b/public/terrain/16/107322/44238.terrain differ diff --git a/public/terrain/16/107322/44239.terrain b/public/terrain/16/107322/44239.terrain new file mode 100644 index 000000000..a12127257 Binary files /dev/null and b/public/terrain/16/107322/44239.terrain differ diff --git a/public/terrain/16/107322/44240.terrain b/public/terrain/16/107322/44240.terrain new file mode 100644 index 000000000..00b30861e Binary files /dev/null and b/public/terrain/16/107322/44240.terrain differ diff --git a/public/terrain/16/107322/44241.terrain b/public/terrain/16/107322/44241.terrain new file mode 100644 index 000000000..6a70ab949 Binary files /dev/null and b/public/terrain/16/107322/44241.terrain differ diff --git a/public/terrain/16/107322/44242.terrain b/public/terrain/16/107322/44242.terrain new file mode 100644 index 000000000..2ad68f97d Binary files /dev/null and b/public/terrain/16/107322/44242.terrain differ diff --git a/public/terrain/16/107322/44243.terrain b/public/terrain/16/107322/44243.terrain new file mode 100644 index 000000000..9d2357ad1 Binary files /dev/null and b/public/terrain/16/107322/44243.terrain differ diff --git a/public/terrain/16/107322/44244.terrain b/public/terrain/16/107322/44244.terrain new file mode 100644 index 000000000..2f8678b2e Binary files /dev/null and b/public/terrain/16/107322/44244.terrain differ diff --git a/public/terrain/16/107322/44245.terrain b/public/terrain/16/107322/44245.terrain new file mode 100644 index 000000000..9941a10d1 Binary files /dev/null and b/public/terrain/16/107322/44245.terrain differ diff --git a/public/terrain/16/107322/44246.terrain b/public/terrain/16/107322/44246.terrain new file mode 100644 index 000000000..3e3996d7f Binary files /dev/null and b/public/terrain/16/107322/44246.terrain differ diff --git a/public/terrain/16/107322/44247.terrain b/public/terrain/16/107322/44247.terrain new file mode 100644 index 000000000..7e450d2db Binary files /dev/null and b/public/terrain/16/107322/44247.terrain differ diff --git a/public/terrain/16/107322/44248.terrain b/public/terrain/16/107322/44248.terrain new file mode 100644 index 000000000..f261a21b3 Binary files /dev/null and b/public/terrain/16/107322/44248.terrain differ diff --git a/public/terrain/16/107322/44249.terrain b/public/terrain/16/107322/44249.terrain new file mode 100644 index 000000000..8fe779b25 Binary files /dev/null and b/public/terrain/16/107322/44249.terrain differ diff --git a/public/terrain/16/107322/44250.terrain b/public/terrain/16/107322/44250.terrain new file mode 100644 index 000000000..9137b82b3 Binary files /dev/null and b/public/terrain/16/107322/44250.terrain differ diff --git a/public/terrain/16/107322/44251.terrain b/public/terrain/16/107322/44251.terrain new file mode 100644 index 000000000..dc46ec9a2 Binary files /dev/null and b/public/terrain/16/107322/44251.terrain differ diff --git a/public/terrain/16/107322/44252.terrain b/public/terrain/16/107322/44252.terrain new file mode 100644 index 000000000..4e167fa25 Binary files /dev/null and b/public/terrain/16/107322/44252.terrain differ diff --git a/public/terrain/16/107322/44253.terrain b/public/terrain/16/107322/44253.terrain new file mode 100644 index 000000000..25adfe92e Binary files /dev/null and b/public/terrain/16/107322/44253.terrain differ diff --git a/public/terrain/16/107322/44254.terrain b/public/terrain/16/107322/44254.terrain new file mode 100644 index 000000000..8c724608c Binary files /dev/null and b/public/terrain/16/107322/44254.terrain differ diff --git a/public/terrain/16/107322/44255.terrain b/public/terrain/16/107322/44255.terrain new file mode 100644 index 000000000..e87ed30ec Binary files /dev/null and b/public/terrain/16/107322/44255.terrain differ diff --git a/public/terrain/16/107322/44256.terrain b/public/terrain/16/107322/44256.terrain new file mode 100644 index 000000000..4db82117b Binary files /dev/null and b/public/terrain/16/107322/44256.terrain differ diff --git a/public/terrain/16/107322/44257.terrain b/public/terrain/16/107322/44257.terrain new file mode 100644 index 000000000..0845c76aa Binary files /dev/null and b/public/terrain/16/107322/44257.terrain differ diff --git a/public/terrain/16/107323/44217.terrain b/public/terrain/16/107323/44217.terrain new file mode 100644 index 000000000..8dddbbd56 Binary files /dev/null and b/public/terrain/16/107323/44217.terrain differ diff --git a/public/terrain/16/107323/44218.terrain b/public/terrain/16/107323/44218.terrain new file mode 100644 index 000000000..85dee7881 Binary files /dev/null and b/public/terrain/16/107323/44218.terrain differ diff --git a/public/terrain/16/107323/44219.terrain b/public/terrain/16/107323/44219.terrain new file mode 100644 index 000000000..82a182f55 Binary files /dev/null and b/public/terrain/16/107323/44219.terrain differ diff --git a/public/terrain/16/107323/44220.terrain b/public/terrain/16/107323/44220.terrain new file mode 100644 index 000000000..ad2588f79 Binary files /dev/null and b/public/terrain/16/107323/44220.terrain differ diff --git a/public/terrain/16/107323/44221.terrain b/public/terrain/16/107323/44221.terrain new file mode 100644 index 000000000..20b62f93a Binary files /dev/null and b/public/terrain/16/107323/44221.terrain differ diff --git a/public/terrain/16/107323/44222.terrain b/public/terrain/16/107323/44222.terrain new file mode 100644 index 000000000..22a155e30 Binary files /dev/null and b/public/terrain/16/107323/44222.terrain differ diff --git a/public/terrain/16/107323/44223.terrain b/public/terrain/16/107323/44223.terrain new file mode 100644 index 000000000..de9dc0cfd Binary files /dev/null and b/public/terrain/16/107323/44223.terrain differ diff --git a/public/terrain/16/107323/44224.terrain b/public/terrain/16/107323/44224.terrain new file mode 100644 index 000000000..389810bd5 Binary files /dev/null and b/public/terrain/16/107323/44224.terrain differ diff --git a/public/terrain/16/107323/44225.terrain b/public/terrain/16/107323/44225.terrain new file mode 100644 index 000000000..c8ec486dc Binary files /dev/null and b/public/terrain/16/107323/44225.terrain differ diff --git a/public/terrain/16/107323/44226.terrain b/public/terrain/16/107323/44226.terrain new file mode 100644 index 000000000..abba61ea8 Binary files /dev/null and b/public/terrain/16/107323/44226.terrain differ diff --git a/public/terrain/16/107323/44227.terrain b/public/terrain/16/107323/44227.terrain new file mode 100644 index 000000000..2c905c21a Binary files /dev/null and b/public/terrain/16/107323/44227.terrain differ diff --git a/public/terrain/16/107323/44228.terrain b/public/terrain/16/107323/44228.terrain new file mode 100644 index 000000000..c37f1f2d5 Binary files /dev/null and b/public/terrain/16/107323/44228.terrain differ diff --git a/public/terrain/16/107323/44229.terrain b/public/terrain/16/107323/44229.terrain new file mode 100644 index 000000000..10aecc656 Binary files /dev/null and b/public/terrain/16/107323/44229.terrain differ diff --git a/public/terrain/16/107323/44230.terrain b/public/terrain/16/107323/44230.terrain new file mode 100644 index 000000000..e8f8f0b3f Binary files /dev/null and b/public/terrain/16/107323/44230.terrain differ diff --git a/public/terrain/16/107323/44231.terrain b/public/terrain/16/107323/44231.terrain new file mode 100644 index 000000000..a8224517a Binary files /dev/null and b/public/terrain/16/107323/44231.terrain differ diff --git a/public/terrain/16/107323/44232.terrain b/public/terrain/16/107323/44232.terrain new file mode 100644 index 000000000..c244cf7d5 Binary files /dev/null and b/public/terrain/16/107323/44232.terrain differ diff --git a/public/terrain/16/107323/44233.terrain b/public/terrain/16/107323/44233.terrain new file mode 100644 index 000000000..7b75cdb6c Binary files /dev/null and b/public/terrain/16/107323/44233.terrain differ diff --git a/public/terrain/16/107323/44234.terrain b/public/terrain/16/107323/44234.terrain new file mode 100644 index 000000000..c8cd8b658 Binary files /dev/null and b/public/terrain/16/107323/44234.terrain differ diff --git a/public/terrain/16/107323/44235.terrain b/public/terrain/16/107323/44235.terrain new file mode 100644 index 000000000..fc05f3f3e Binary files /dev/null and b/public/terrain/16/107323/44235.terrain differ diff --git a/public/terrain/16/107323/44236.terrain b/public/terrain/16/107323/44236.terrain new file mode 100644 index 000000000..69ce89d23 Binary files /dev/null and b/public/terrain/16/107323/44236.terrain differ diff --git a/public/terrain/16/107323/44237.terrain b/public/terrain/16/107323/44237.terrain new file mode 100644 index 000000000..e3d734b92 Binary files /dev/null and b/public/terrain/16/107323/44237.terrain differ diff --git a/public/terrain/16/107323/44238.terrain b/public/terrain/16/107323/44238.terrain new file mode 100644 index 000000000..7adf097d1 Binary files /dev/null and b/public/terrain/16/107323/44238.terrain differ diff --git a/public/terrain/16/107323/44239.terrain b/public/terrain/16/107323/44239.terrain new file mode 100644 index 000000000..92f5334f0 Binary files /dev/null and b/public/terrain/16/107323/44239.terrain differ diff --git a/public/terrain/16/107323/44240.terrain b/public/terrain/16/107323/44240.terrain new file mode 100644 index 000000000..757b3e3c5 Binary files /dev/null and b/public/terrain/16/107323/44240.terrain differ diff --git a/public/terrain/16/107323/44241.terrain b/public/terrain/16/107323/44241.terrain new file mode 100644 index 000000000..b7c41d23a Binary files /dev/null and b/public/terrain/16/107323/44241.terrain differ diff --git a/public/terrain/16/107323/44242.terrain b/public/terrain/16/107323/44242.terrain new file mode 100644 index 000000000..f616a8fb2 Binary files /dev/null and b/public/terrain/16/107323/44242.terrain differ diff --git a/public/terrain/16/107323/44243.terrain b/public/terrain/16/107323/44243.terrain new file mode 100644 index 000000000..7fecbac89 Binary files /dev/null and b/public/terrain/16/107323/44243.terrain differ diff --git a/public/terrain/16/107323/44244.terrain b/public/terrain/16/107323/44244.terrain new file mode 100644 index 000000000..366433f73 Binary files /dev/null and b/public/terrain/16/107323/44244.terrain differ diff --git a/public/terrain/16/107323/44245.terrain b/public/terrain/16/107323/44245.terrain new file mode 100644 index 000000000..5b11ceb4d Binary files /dev/null and b/public/terrain/16/107323/44245.terrain differ diff --git a/public/terrain/16/107323/44246.terrain b/public/terrain/16/107323/44246.terrain new file mode 100644 index 000000000..3a5ab6da8 Binary files /dev/null and b/public/terrain/16/107323/44246.terrain differ diff --git a/public/terrain/16/107323/44247.terrain b/public/terrain/16/107323/44247.terrain new file mode 100644 index 000000000..186a48ad0 Binary files /dev/null and b/public/terrain/16/107323/44247.terrain differ diff --git a/public/terrain/16/107323/44248.terrain b/public/terrain/16/107323/44248.terrain new file mode 100644 index 000000000..b3d8b2d97 Binary files /dev/null and b/public/terrain/16/107323/44248.terrain differ diff --git a/public/terrain/16/107323/44249.terrain b/public/terrain/16/107323/44249.terrain new file mode 100644 index 000000000..ca691636a Binary files /dev/null and b/public/terrain/16/107323/44249.terrain differ diff --git a/public/terrain/16/107323/44250.terrain b/public/terrain/16/107323/44250.terrain new file mode 100644 index 000000000..ffa4f4984 Binary files /dev/null and b/public/terrain/16/107323/44250.terrain differ diff --git a/public/terrain/16/107323/44251.terrain b/public/terrain/16/107323/44251.terrain new file mode 100644 index 000000000..bbd2bc61a Binary files /dev/null and b/public/terrain/16/107323/44251.terrain differ diff --git a/public/terrain/16/107323/44252.terrain b/public/terrain/16/107323/44252.terrain new file mode 100644 index 000000000..2e9bbf880 Binary files /dev/null and b/public/terrain/16/107323/44252.terrain differ diff --git a/public/terrain/16/107323/44253.terrain b/public/terrain/16/107323/44253.terrain new file mode 100644 index 000000000..465095bf0 Binary files /dev/null and b/public/terrain/16/107323/44253.terrain differ diff --git a/public/terrain/16/107323/44254.terrain b/public/terrain/16/107323/44254.terrain new file mode 100644 index 000000000..5c1924c6b Binary files /dev/null and b/public/terrain/16/107323/44254.terrain differ diff --git a/public/terrain/16/107323/44255.terrain b/public/terrain/16/107323/44255.terrain new file mode 100644 index 000000000..3a48f4763 Binary files /dev/null and b/public/terrain/16/107323/44255.terrain differ diff --git a/public/terrain/16/107323/44256.terrain b/public/terrain/16/107323/44256.terrain new file mode 100644 index 000000000..7a5b9de51 Binary files /dev/null and b/public/terrain/16/107323/44256.terrain differ diff --git a/public/terrain/16/107323/44257.terrain b/public/terrain/16/107323/44257.terrain new file mode 100644 index 000000000..1a753ede5 Binary files /dev/null and b/public/terrain/16/107323/44257.terrain differ diff --git a/public/terrain/16/107324/44217.terrain b/public/terrain/16/107324/44217.terrain new file mode 100644 index 000000000..64876bf97 Binary files /dev/null and b/public/terrain/16/107324/44217.terrain differ diff --git a/public/terrain/16/107324/44218.terrain b/public/terrain/16/107324/44218.terrain new file mode 100644 index 000000000..48f651c2a Binary files /dev/null and b/public/terrain/16/107324/44218.terrain differ diff --git a/public/terrain/16/107324/44219.terrain b/public/terrain/16/107324/44219.terrain new file mode 100644 index 000000000..12bc523d7 Binary files /dev/null and b/public/terrain/16/107324/44219.terrain differ diff --git a/public/terrain/16/107324/44220.terrain b/public/terrain/16/107324/44220.terrain new file mode 100644 index 000000000..a283cae10 Binary files /dev/null and b/public/terrain/16/107324/44220.terrain differ diff --git a/public/terrain/16/107324/44221.terrain b/public/terrain/16/107324/44221.terrain new file mode 100644 index 000000000..69eb21af1 Binary files /dev/null and b/public/terrain/16/107324/44221.terrain differ diff --git a/public/terrain/16/107324/44222.terrain b/public/terrain/16/107324/44222.terrain new file mode 100644 index 000000000..a37643602 Binary files /dev/null and b/public/terrain/16/107324/44222.terrain differ diff --git a/public/terrain/16/107324/44223.terrain b/public/terrain/16/107324/44223.terrain new file mode 100644 index 000000000..b4136bb3a Binary files /dev/null and b/public/terrain/16/107324/44223.terrain differ diff --git a/public/terrain/16/107324/44224.terrain b/public/terrain/16/107324/44224.terrain new file mode 100644 index 000000000..4a693ab40 Binary files /dev/null and b/public/terrain/16/107324/44224.terrain differ diff --git a/public/terrain/16/107324/44225.terrain b/public/terrain/16/107324/44225.terrain new file mode 100644 index 000000000..0728d150a Binary files /dev/null and b/public/terrain/16/107324/44225.terrain differ diff --git a/public/terrain/16/107324/44226.terrain b/public/terrain/16/107324/44226.terrain new file mode 100644 index 000000000..62b97ecdc Binary files /dev/null and b/public/terrain/16/107324/44226.terrain differ diff --git a/public/terrain/16/107324/44227.terrain b/public/terrain/16/107324/44227.terrain new file mode 100644 index 000000000..ce6e43402 Binary files /dev/null and b/public/terrain/16/107324/44227.terrain differ diff --git a/public/terrain/16/107324/44228.terrain b/public/terrain/16/107324/44228.terrain new file mode 100644 index 000000000..dd9e601ec Binary files /dev/null and b/public/terrain/16/107324/44228.terrain differ diff --git a/public/terrain/16/107324/44229.terrain b/public/terrain/16/107324/44229.terrain new file mode 100644 index 000000000..44a6c5c5e Binary files /dev/null and b/public/terrain/16/107324/44229.terrain differ diff --git a/public/terrain/16/107324/44230.terrain b/public/terrain/16/107324/44230.terrain new file mode 100644 index 000000000..4e7a06888 Binary files /dev/null and b/public/terrain/16/107324/44230.terrain differ diff --git a/public/terrain/16/107324/44231.terrain b/public/terrain/16/107324/44231.terrain new file mode 100644 index 000000000..b82267478 Binary files /dev/null and b/public/terrain/16/107324/44231.terrain differ diff --git a/public/terrain/16/107324/44232.terrain b/public/terrain/16/107324/44232.terrain new file mode 100644 index 000000000..7503fbdbe Binary files /dev/null and b/public/terrain/16/107324/44232.terrain differ diff --git a/public/terrain/16/107324/44233.terrain b/public/terrain/16/107324/44233.terrain new file mode 100644 index 000000000..7ec05383e Binary files /dev/null and b/public/terrain/16/107324/44233.terrain differ diff --git a/public/terrain/16/107324/44234.terrain b/public/terrain/16/107324/44234.terrain new file mode 100644 index 000000000..7c8d48cf1 Binary files /dev/null and b/public/terrain/16/107324/44234.terrain differ diff --git a/public/terrain/16/107324/44235.terrain b/public/terrain/16/107324/44235.terrain new file mode 100644 index 000000000..cd97d282a Binary files /dev/null and b/public/terrain/16/107324/44235.terrain differ diff --git a/public/terrain/16/107324/44236.terrain b/public/terrain/16/107324/44236.terrain new file mode 100644 index 000000000..29f64a9c4 Binary files /dev/null and b/public/terrain/16/107324/44236.terrain differ diff --git a/public/terrain/16/107324/44237.terrain b/public/terrain/16/107324/44237.terrain new file mode 100644 index 000000000..51419b044 Binary files /dev/null and b/public/terrain/16/107324/44237.terrain differ diff --git a/public/terrain/16/107324/44238.terrain b/public/terrain/16/107324/44238.terrain new file mode 100644 index 000000000..ce98eae7e Binary files /dev/null and b/public/terrain/16/107324/44238.terrain differ diff --git a/public/terrain/16/107324/44239.terrain b/public/terrain/16/107324/44239.terrain new file mode 100644 index 000000000..e50c46c23 Binary files /dev/null and b/public/terrain/16/107324/44239.terrain differ diff --git a/public/terrain/16/107324/44240.terrain b/public/terrain/16/107324/44240.terrain new file mode 100644 index 000000000..dea2d6499 Binary files /dev/null and b/public/terrain/16/107324/44240.terrain differ diff --git a/public/terrain/16/107324/44241.terrain b/public/terrain/16/107324/44241.terrain new file mode 100644 index 000000000..4c380fb45 Binary files /dev/null and b/public/terrain/16/107324/44241.terrain differ diff --git a/public/terrain/16/107324/44242.terrain b/public/terrain/16/107324/44242.terrain new file mode 100644 index 000000000..450532997 Binary files /dev/null and b/public/terrain/16/107324/44242.terrain differ diff --git a/public/terrain/16/107324/44243.terrain b/public/terrain/16/107324/44243.terrain new file mode 100644 index 000000000..957cbfbf1 Binary files /dev/null and b/public/terrain/16/107324/44243.terrain differ diff --git a/public/terrain/16/107324/44244.terrain b/public/terrain/16/107324/44244.terrain new file mode 100644 index 000000000..6c3ba1abb Binary files /dev/null and b/public/terrain/16/107324/44244.terrain differ diff --git a/public/terrain/16/107324/44245.terrain b/public/terrain/16/107324/44245.terrain new file mode 100644 index 000000000..3a6ce3a0e Binary files /dev/null and b/public/terrain/16/107324/44245.terrain differ diff --git a/public/terrain/16/107324/44246.terrain b/public/terrain/16/107324/44246.terrain new file mode 100644 index 000000000..3f90eab47 Binary files /dev/null and b/public/terrain/16/107324/44246.terrain differ diff --git a/public/terrain/16/107324/44247.terrain b/public/terrain/16/107324/44247.terrain new file mode 100644 index 000000000..bf10bee34 Binary files /dev/null and b/public/terrain/16/107324/44247.terrain differ diff --git a/public/terrain/16/107324/44248.terrain b/public/terrain/16/107324/44248.terrain new file mode 100644 index 000000000..0c479a579 Binary files /dev/null and b/public/terrain/16/107324/44248.terrain differ diff --git a/public/terrain/16/107324/44249.terrain b/public/terrain/16/107324/44249.terrain new file mode 100644 index 000000000..9e9238f22 Binary files /dev/null and b/public/terrain/16/107324/44249.terrain differ diff --git a/public/terrain/16/107324/44250.terrain b/public/terrain/16/107324/44250.terrain new file mode 100644 index 000000000..6f975d155 Binary files /dev/null and b/public/terrain/16/107324/44250.terrain differ diff --git a/public/terrain/16/107324/44251.terrain b/public/terrain/16/107324/44251.terrain new file mode 100644 index 000000000..1624c4ac6 Binary files /dev/null and b/public/terrain/16/107324/44251.terrain differ diff --git a/public/terrain/16/107324/44252.terrain b/public/terrain/16/107324/44252.terrain new file mode 100644 index 000000000..ea19217ae Binary files /dev/null and b/public/terrain/16/107324/44252.terrain differ diff --git a/public/terrain/16/107324/44253.terrain b/public/terrain/16/107324/44253.terrain new file mode 100644 index 000000000..066837da1 Binary files /dev/null and b/public/terrain/16/107324/44253.terrain differ diff --git a/public/terrain/16/107324/44254.terrain b/public/terrain/16/107324/44254.terrain new file mode 100644 index 000000000..824edbb1d Binary files /dev/null and b/public/terrain/16/107324/44254.terrain differ diff --git a/public/terrain/16/107324/44255.terrain b/public/terrain/16/107324/44255.terrain new file mode 100644 index 000000000..6df502fe7 Binary files /dev/null and b/public/terrain/16/107324/44255.terrain differ diff --git a/public/terrain/16/107324/44256.terrain b/public/terrain/16/107324/44256.terrain new file mode 100644 index 000000000..67a2cd3f0 Binary files /dev/null and b/public/terrain/16/107324/44256.terrain differ diff --git a/public/terrain/16/107324/44257.terrain b/public/terrain/16/107324/44257.terrain new file mode 100644 index 000000000..929348f1b Binary files /dev/null and b/public/terrain/16/107324/44257.terrain differ diff --git a/public/terrain/16/107325/44217.terrain b/public/terrain/16/107325/44217.terrain new file mode 100644 index 000000000..1274fb2cc Binary files /dev/null and b/public/terrain/16/107325/44217.terrain differ diff --git a/public/terrain/16/107325/44218.terrain b/public/terrain/16/107325/44218.terrain new file mode 100644 index 000000000..aea3e53d8 Binary files /dev/null and b/public/terrain/16/107325/44218.terrain differ diff --git a/public/terrain/16/107325/44219.terrain b/public/terrain/16/107325/44219.terrain new file mode 100644 index 000000000..f50cf2f7b Binary files /dev/null and b/public/terrain/16/107325/44219.terrain differ diff --git a/public/terrain/16/107325/44220.terrain b/public/terrain/16/107325/44220.terrain new file mode 100644 index 000000000..7cb96f70d Binary files /dev/null and b/public/terrain/16/107325/44220.terrain differ diff --git a/public/terrain/16/107325/44221.terrain b/public/terrain/16/107325/44221.terrain new file mode 100644 index 000000000..03da62326 Binary files /dev/null and b/public/terrain/16/107325/44221.terrain differ diff --git a/public/terrain/16/107325/44222.terrain b/public/terrain/16/107325/44222.terrain new file mode 100644 index 000000000..d067480c4 Binary files /dev/null and b/public/terrain/16/107325/44222.terrain differ diff --git a/public/terrain/16/107325/44223.terrain b/public/terrain/16/107325/44223.terrain new file mode 100644 index 000000000..9d761014c Binary files /dev/null and b/public/terrain/16/107325/44223.terrain differ diff --git a/public/terrain/16/107325/44224.terrain b/public/terrain/16/107325/44224.terrain new file mode 100644 index 000000000..542a0d6c9 Binary files /dev/null and b/public/terrain/16/107325/44224.terrain differ diff --git a/public/terrain/16/107325/44225.terrain b/public/terrain/16/107325/44225.terrain new file mode 100644 index 000000000..d30706405 Binary files /dev/null and b/public/terrain/16/107325/44225.terrain differ diff --git a/public/terrain/16/107325/44226.terrain b/public/terrain/16/107325/44226.terrain new file mode 100644 index 000000000..aa00482c2 Binary files /dev/null and b/public/terrain/16/107325/44226.terrain differ diff --git a/public/terrain/16/107325/44227.terrain b/public/terrain/16/107325/44227.terrain new file mode 100644 index 000000000..538238630 Binary files /dev/null and b/public/terrain/16/107325/44227.terrain differ diff --git a/public/terrain/16/107325/44228.terrain b/public/terrain/16/107325/44228.terrain new file mode 100644 index 000000000..780199adc Binary files /dev/null and b/public/terrain/16/107325/44228.terrain differ diff --git a/public/terrain/16/107325/44229.terrain b/public/terrain/16/107325/44229.terrain new file mode 100644 index 000000000..62d95dd99 Binary files /dev/null and b/public/terrain/16/107325/44229.terrain differ diff --git a/public/terrain/16/107325/44230.terrain b/public/terrain/16/107325/44230.terrain new file mode 100644 index 000000000..b9ff622ca Binary files /dev/null and b/public/terrain/16/107325/44230.terrain differ diff --git a/public/terrain/16/107325/44231.terrain b/public/terrain/16/107325/44231.terrain new file mode 100644 index 000000000..845b77503 Binary files /dev/null and b/public/terrain/16/107325/44231.terrain differ diff --git a/public/terrain/16/107325/44232.terrain b/public/terrain/16/107325/44232.terrain new file mode 100644 index 000000000..7be0b0343 Binary files /dev/null and b/public/terrain/16/107325/44232.terrain differ diff --git a/public/terrain/16/107325/44233.terrain b/public/terrain/16/107325/44233.terrain new file mode 100644 index 000000000..412ebc7be Binary files /dev/null and b/public/terrain/16/107325/44233.terrain differ diff --git a/public/terrain/16/107325/44234.terrain b/public/terrain/16/107325/44234.terrain new file mode 100644 index 000000000..4ffb9781b Binary files /dev/null and b/public/terrain/16/107325/44234.terrain differ diff --git a/public/terrain/16/107325/44235.terrain b/public/terrain/16/107325/44235.terrain new file mode 100644 index 000000000..a4c20da39 Binary files /dev/null and b/public/terrain/16/107325/44235.terrain differ diff --git a/public/terrain/16/107325/44236.terrain b/public/terrain/16/107325/44236.terrain new file mode 100644 index 000000000..25855dfb6 Binary files /dev/null and b/public/terrain/16/107325/44236.terrain differ diff --git a/public/terrain/16/107325/44237.terrain b/public/terrain/16/107325/44237.terrain new file mode 100644 index 000000000..0a87f34f3 Binary files /dev/null and b/public/terrain/16/107325/44237.terrain differ diff --git a/public/terrain/16/107325/44238.terrain b/public/terrain/16/107325/44238.terrain new file mode 100644 index 000000000..2bc9b9673 Binary files /dev/null and b/public/terrain/16/107325/44238.terrain differ diff --git a/public/terrain/16/107325/44239.terrain b/public/terrain/16/107325/44239.terrain new file mode 100644 index 000000000..b406060b7 Binary files /dev/null and b/public/terrain/16/107325/44239.terrain differ diff --git a/public/terrain/16/107325/44240.terrain b/public/terrain/16/107325/44240.terrain new file mode 100644 index 000000000..7b1c95075 Binary files /dev/null and b/public/terrain/16/107325/44240.terrain differ diff --git a/public/terrain/16/107325/44241.terrain b/public/terrain/16/107325/44241.terrain new file mode 100644 index 000000000..cb279ae9c Binary files /dev/null and b/public/terrain/16/107325/44241.terrain differ diff --git a/public/terrain/16/107325/44242.terrain b/public/terrain/16/107325/44242.terrain new file mode 100644 index 000000000..2a8d5f5a4 Binary files /dev/null and b/public/terrain/16/107325/44242.terrain differ diff --git a/public/terrain/16/107325/44243.terrain b/public/terrain/16/107325/44243.terrain new file mode 100644 index 000000000..c3dce8c41 Binary files /dev/null and b/public/terrain/16/107325/44243.terrain differ diff --git a/public/terrain/16/107325/44244.terrain b/public/terrain/16/107325/44244.terrain new file mode 100644 index 000000000..600860989 Binary files /dev/null and b/public/terrain/16/107325/44244.terrain differ diff --git a/public/terrain/16/107325/44245.terrain b/public/terrain/16/107325/44245.terrain new file mode 100644 index 000000000..63d6b899e Binary files /dev/null and b/public/terrain/16/107325/44245.terrain differ diff --git a/public/terrain/16/107325/44246.terrain b/public/terrain/16/107325/44246.terrain new file mode 100644 index 000000000..c1c001329 Binary files /dev/null and b/public/terrain/16/107325/44246.terrain differ diff --git a/public/terrain/16/107325/44247.terrain b/public/terrain/16/107325/44247.terrain new file mode 100644 index 000000000..7f4d672b3 Binary files /dev/null and b/public/terrain/16/107325/44247.terrain differ diff --git a/public/terrain/16/107325/44248.terrain b/public/terrain/16/107325/44248.terrain new file mode 100644 index 000000000..7d41faaeb Binary files /dev/null and b/public/terrain/16/107325/44248.terrain differ diff --git a/public/terrain/16/107325/44249.terrain b/public/terrain/16/107325/44249.terrain new file mode 100644 index 000000000..c75d28386 Binary files /dev/null and b/public/terrain/16/107325/44249.terrain differ diff --git a/public/terrain/16/107325/44250.terrain b/public/terrain/16/107325/44250.terrain new file mode 100644 index 000000000..81c41573b Binary files /dev/null and b/public/terrain/16/107325/44250.terrain differ diff --git a/public/terrain/16/107325/44251.terrain b/public/terrain/16/107325/44251.terrain new file mode 100644 index 000000000..27ce01363 Binary files /dev/null and b/public/terrain/16/107325/44251.terrain differ diff --git a/public/terrain/16/107325/44252.terrain b/public/terrain/16/107325/44252.terrain new file mode 100644 index 000000000..75dbdbf32 Binary files /dev/null and b/public/terrain/16/107325/44252.terrain differ diff --git a/public/terrain/16/107325/44253.terrain b/public/terrain/16/107325/44253.terrain new file mode 100644 index 000000000..ab9dc1901 Binary files /dev/null and b/public/terrain/16/107325/44253.terrain differ diff --git a/public/terrain/16/107325/44254.terrain b/public/terrain/16/107325/44254.terrain new file mode 100644 index 000000000..55d09da5c Binary files /dev/null and b/public/terrain/16/107325/44254.terrain differ diff --git a/public/terrain/16/107325/44255.terrain b/public/terrain/16/107325/44255.terrain new file mode 100644 index 000000000..e23755ed5 Binary files /dev/null and b/public/terrain/16/107325/44255.terrain differ diff --git a/public/terrain/16/107325/44256.terrain b/public/terrain/16/107325/44256.terrain new file mode 100644 index 000000000..13fd087b4 Binary files /dev/null and b/public/terrain/16/107325/44256.terrain differ diff --git a/public/terrain/16/107325/44257.terrain b/public/terrain/16/107325/44257.terrain new file mode 100644 index 000000000..347ccf05b Binary files /dev/null and b/public/terrain/16/107325/44257.terrain differ diff --git a/public/terrain/16/107326/44217.terrain b/public/terrain/16/107326/44217.terrain new file mode 100644 index 000000000..051917d03 Binary files /dev/null and b/public/terrain/16/107326/44217.terrain differ diff --git a/public/terrain/16/107326/44218.terrain b/public/terrain/16/107326/44218.terrain new file mode 100644 index 000000000..d87c9b1bf Binary files /dev/null and b/public/terrain/16/107326/44218.terrain differ diff --git a/public/terrain/16/107326/44219.terrain b/public/terrain/16/107326/44219.terrain new file mode 100644 index 000000000..ea0bf9c80 Binary files /dev/null and b/public/terrain/16/107326/44219.terrain differ diff --git a/public/terrain/16/107326/44220.terrain b/public/terrain/16/107326/44220.terrain new file mode 100644 index 000000000..341bfb39e Binary files /dev/null and b/public/terrain/16/107326/44220.terrain differ diff --git a/public/terrain/16/107326/44221.terrain b/public/terrain/16/107326/44221.terrain new file mode 100644 index 000000000..efaff4f9c Binary files /dev/null and b/public/terrain/16/107326/44221.terrain differ diff --git a/public/terrain/16/107326/44222.terrain b/public/terrain/16/107326/44222.terrain new file mode 100644 index 000000000..c25d2d75a Binary files /dev/null and b/public/terrain/16/107326/44222.terrain differ diff --git a/public/terrain/16/107326/44223.terrain b/public/terrain/16/107326/44223.terrain new file mode 100644 index 000000000..c731b7cec Binary files /dev/null and b/public/terrain/16/107326/44223.terrain differ diff --git a/public/terrain/16/107326/44224.terrain b/public/terrain/16/107326/44224.terrain new file mode 100644 index 000000000..3dbaf4ee5 Binary files /dev/null and b/public/terrain/16/107326/44224.terrain differ diff --git a/public/terrain/16/107326/44225.terrain b/public/terrain/16/107326/44225.terrain new file mode 100644 index 000000000..e6e511c57 Binary files /dev/null and b/public/terrain/16/107326/44225.terrain differ diff --git a/public/terrain/16/107326/44226.terrain b/public/terrain/16/107326/44226.terrain new file mode 100644 index 000000000..dd05f62cf Binary files /dev/null and b/public/terrain/16/107326/44226.terrain differ diff --git a/public/terrain/16/107326/44227.terrain b/public/terrain/16/107326/44227.terrain new file mode 100644 index 000000000..30e081a2b Binary files /dev/null and b/public/terrain/16/107326/44227.terrain differ diff --git a/public/terrain/16/107326/44228.terrain b/public/terrain/16/107326/44228.terrain new file mode 100644 index 000000000..712de9950 Binary files /dev/null and b/public/terrain/16/107326/44228.terrain differ diff --git a/public/terrain/16/107326/44229.terrain b/public/terrain/16/107326/44229.terrain new file mode 100644 index 000000000..0ebc9703a Binary files /dev/null and b/public/terrain/16/107326/44229.terrain differ diff --git a/public/terrain/16/107326/44230.terrain b/public/terrain/16/107326/44230.terrain new file mode 100644 index 000000000..1e8021674 Binary files /dev/null and b/public/terrain/16/107326/44230.terrain differ diff --git a/public/terrain/16/107326/44231.terrain b/public/terrain/16/107326/44231.terrain new file mode 100644 index 000000000..195377dd8 Binary files /dev/null and b/public/terrain/16/107326/44231.terrain differ diff --git a/public/terrain/16/107326/44232.terrain b/public/terrain/16/107326/44232.terrain new file mode 100644 index 000000000..0b6eb07d5 Binary files /dev/null and b/public/terrain/16/107326/44232.terrain differ diff --git a/public/terrain/16/107326/44233.terrain b/public/terrain/16/107326/44233.terrain new file mode 100644 index 000000000..b44f90488 Binary files /dev/null and b/public/terrain/16/107326/44233.terrain differ diff --git a/public/terrain/16/107326/44234.terrain b/public/terrain/16/107326/44234.terrain new file mode 100644 index 000000000..29b13fa89 Binary files /dev/null and b/public/terrain/16/107326/44234.terrain differ diff --git a/public/terrain/16/107326/44235.terrain b/public/terrain/16/107326/44235.terrain new file mode 100644 index 000000000..11e315517 Binary files /dev/null and b/public/terrain/16/107326/44235.terrain differ diff --git a/public/terrain/16/107326/44236.terrain b/public/terrain/16/107326/44236.terrain new file mode 100644 index 000000000..04144e62c Binary files /dev/null and b/public/terrain/16/107326/44236.terrain differ diff --git a/public/terrain/16/107326/44237.terrain b/public/terrain/16/107326/44237.terrain new file mode 100644 index 000000000..336f781a7 Binary files /dev/null and b/public/terrain/16/107326/44237.terrain differ diff --git a/public/terrain/16/107326/44238.terrain b/public/terrain/16/107326/44238.terrain new file mode 100644 index 000000000..959b3017b Binary files /dev/null and b/public/terrain/16/107326/44238.terrain differ diff --git a/public/terrain/16/107326/44239.terrain b/public/terrain/16/107326/44239.terrain new file mode 100644 index 000000000..3dbd03cca Binary files /dev/null and b/public/terrain/16/107326/44239.terrain differ diff --git a/public/terrain/16/107326/44240.terrain b/public/terrain/16/107326/44240.terrain new file mode 100644 index 000000000..11ae4b1bf Binary files /dev/null and b/public/terrain/16/107326/44240.terrain differ diff --git a/public/terrain/16/107326/44241.terrain b/public/terrain/16/107326/44241.terrain new file mode 100644 index 000000000..31b9128b3 Binary files /dev/null and b/public/terrain/16/107326/44241.terrain differ diff --git a/public/terrain/16/107326/44242.terrain b/public/terrain/16/107326/44242.terrain new file mode 100644 index 000000000..ce05303f4 Binary files /dev/null and b/public/terrain/16/107326/44242.terrain differ diff --git a/public/terrain/16/107326/44243.terrain b/public/terrain/16/107326/44243.terrain new file mode 100644 index 000000000..f79ee50fc Binary files /dev/null and b/public/terrain/16/107326/44243.terrain differ diff --git a/public/terrain/16/107326/44244.terrain b/public/terrain/16/107326/44244.terrain new file mode 100644 index 000000000..f8a16d531 Binary files /dev/null and b/public/terrain/16/107326/44244.terrain differ diff --git a/public/terrain/16/107326/44245.terrain b/public/terrain/16/107326/44245.terrain new file mode 100644 index 000000000..4679e5182 Binary files /dev/null and b/public/terrain/16/107326/44245.terrain differ diff --git a/public/terrain/16/107326/44246.terrain b/public/terrain/16/107326/44246.terrain new file mode 100644 index 000000000..03d7fee2a Binary files /dev/null and b/public/terrain/16/107326/44246.terrain differ diff --git a/public/terrain/16/107326/44247.terrain b/public/terrain/16/107326/44247.terrain new file mode 100644 index 000000000..681c14b97 Binary files /dev/null and b/public/terrain/16/107326/44247.terrain differ diff --git a/public/terrain/16/107326/44248.terrain b/public/terrain/16/107326/44248.terrain new file mode 100644 index 000000000..9151bcd17 Binary files /dev/null and b/public/terrain/16/107326/44248.terrain differ diff --git a/public/terrain/16/107326/44249.terrain b/public/terrain/16/107326/44249.terrain new file mode 100644 index 000000000..4698bce1f Binary files /dev/null and b/public/terrain/16/107326/44249.terrain differ diff --git a/public/terrain/16/107326/44250.terrain b/public/terrain/16/107326/44250.terrain new file mode 100644 index 000000000..890fb931a Binary files /dev/null and b/public/terrain/16/107326/44250.terrain differ diff --git a/public/terrain/16/107326/44251.terrain b/public/terrain/16/107326/44251.terrain new file mode 100644 index 000000000..39794e4fe Binary files /dev/null and b/public/terrain/16/107326/44251.terrain differ diff --git a/public/terrain/16/107326/44252.terrain b/public/terrain/16/107326/44252.terrain new file mode 100644 index 000000000..0b147aa15 Binary files /dev/null and b/public/terrain/16/107326/44252.terrain differ diff --git a/public/terrain/16/107326/44253.terrain b/public/terrain/16/107326/44253.terrain new file mode 100644 index 000000000..40c0623da Binary files /dev/null and b/public/terrain/16/107326/44253.terrain differ diff --git a/public/terrain/16/107326/44254.terrain b/public/terrain/16/107326/44254.terrain new file mode 100644 index 000000000..cea01af64 Binary files /dev/null and b/public/terrain/16/107326/44254.terrain differ diff --git a/public/terrain/16/107326/44255.terrain b/public/terrain/16/107326/44255.terrain new file mode 100644 index 000000000..f294245b4 Binary files /dev/null and b/public/terrain/16/107326/44255.terrain differ diff --git a/public/terrain/16/107326/44256.terrain b/public/terrain/16/107326/44256.terrain new file mode 100644 index 000000000..40f54cac6 Binary files /dev/null and b/public/terrain/16/107326/44256.terrain differ diff --git a/public/terrain/16/107326/44257.terrain b/public/terrain/16/107326/44257.terrain new file mode 100644 index 000000000..244d37d86 Binary files /dev/null and b/public/terrain/16/107326/44257.terrain differ diff --git a/public/terrain/17/214617/88435.terrain b/public/terrain/17/214617/88435.terrain new file mode 100644 index 000000000..7b06530bb Binary files /dev/null and b/public/terrain/17/214617/88435.terrain differ diff --git a/public/terrain/17/214617/88436.terrain b/public/terrain/17/214617/88436.terrain new file mode 100644 index 000000000..28696632c Binary files /dev/null and b/public/terrain/17/214617/88436.terrain differ diff --git a/public/terrain/17/214617/88437.terrain b/public/terrain/17/214617/88437.terrain new file mode 100644 index 000000000..3cf4b93cd Binary files /dev/null and b/public/terrain/17/214617/88437.terrain differ diff --git a/public/terrain/17/214617/88438.terrain b/public/terrain/17/214617/88438.terrain new file mode 100644 index 000000000..3bc55ca83 Binary files /dev/null and b/public/terrain/17/214617/88438.terrain differ diff --git a/public/terrain/17/214617/88439.terrain b/public/terrain/17/214617/88439.terrain new file mode 100644 index 000000000..2ef878279 Binary files /dev/null and b/public/terrain/17/214617/88439.terrain differ diff --git a/public/terrain/17/214617/88440.terrain b/public/terrain/17/214617/88440.terrain new file mode 100644 index 000000000..8a876b23c Binary files /dev/null and b/public/terrain/17/214617/88440.terrain differ diff --git a/public/terrain/17/214617/88441.terrain b/public/terrain/17/214617/88441.terrain new file mode 100644 index 000000000..feaca7fd0 Binary files /dev/null and b/public/terrain/17/214617/88441.terrain differ diff --git a/public/terrain/17/214617/88442.terrain b/public/terrain/17/214617/88442.terrain new file mode 100644 index 000000000..bda7c13a1 Binary files /dev/null and b/public/terrain/17/214617/88442.terrain differ diff --git a/public/terrain/17/214617/88443.terrain b/public/terrain/17/214617/88443.terrain new file mode 100644 index 000000000..db302308b Binary files /dev/null and b/public/terrain/17/214617/88443.terrain differ diff --git a/public/terrain/17/214617/88444.terrain b/public/terrain/17/214617/88444.terrain new file mode 100644 index 000000000..8aef322fe Binary files /dev/null and b/public/terrain/17/214617/88444.terrain differ diff --git a/public/terrain/17/214617/88445.terrain b/public/terrain/17/214617/88445.terrain new file mode 100644 index 000000000..da87fc52f Binary files /dev/null and b/public/terrain/17/214617/88445.terrain differ diff --git a/public/terrain/17/214617/88446.terrain b/public/terrain/17/214617/88446.terrain new file mode 100644 index 000000000..c1378cc64 Binary files /dev/null and b/public/terrain/17/214617/88446.terrain differ diff --git a/public/terrain/17/214617/88447.terrain b/public/terrain/17/214617/88447.terrain new file mode 100644 index 000000000..8e2f49a3e Binary files /dev/null and b/public/terrain/17/214617/88447.terrain differ diff --git a/public/terrain/17/214617/88448.terrain b/public/terrain/17/214617/88448.terrain new file mode 100644 index 000000000..23e9a5e01 Binary files /dev/null and b/public/terrain/17/214617/88448.terrain differ diff --git a/public/terrain/17/214617/88449.terrain b/public/terrain/17/214617/88449.terrain new file mode 100644 index 000000000..636a11373 Binary files /dev/null and b/public/terrain/17/214617/88449.terrain differ diff --git a/public/terrain/17/214617/88450.terrain b/public/terrain/17/214617/88450.terrain new file mode 100644 index 000000000..6735b4eb4 Binary files /dev/null and b/public/terrain/17/214617/88450.terrain differ diff --git a/public/terrain/17/214617/88451.terrain b/public/terrain/17/214617/88451.terrain new file mode 100644 index 000000000..3dcdb828a Binary files /dev/null and b/public/terrain/17/214617/88451.terrain differ diff --git a/public/terrain/17/214617/88452.terrain b/public/terrain/17/214617/88452.terrain new file mode 100644 index 000000000..4fe29bbfe Binary files /dev/null and b/public/terrain/17/214617/88452.terrain differ diff --git a/public/terrain/17/214617/88453.terrain b/public/terrain/17/214617/88453.terrain new file mode 100644 index 000000000..11ea218e2 Binary files /dev/null and b/public/terrain/17/214617/88453.terrain differ diff --git a/public/terrain/17/214617/88454.terrain b/public/terrain/17/214617/88454.terrain new file mode 100644 index 000000000..96cb827c9 Binary files /dev/null and b/public/terrain/17/214617/88454.terrain differ diff --git a/public/terrain/17/214617/88455.terrain b/public/terrain/17/214617/88455.terrain new file mode 100644 index 000000000..e643c2ebd Binary files /dev/null and b/public/terrain/17/214617/88455.terrain differ diff --git a/public/terrain/17/214617/88456.terrain b/public/terrain/17/214617/88456.terrain new file mode 100644 index 000000000..f44ac7344 Binary files /dev/null and b/public/terrain/17/214617/88456.terrain differ diff --git a/public/terrain/17/214617/88457.terrain b/public/terrain/17/214617/88457.terrain new file mode 100644 index 000000000..78aa607e5 Binary files /dev/null and b/public/terrain/17/214617/88457.terrain differ diff --git a/public/terrain/17/214617/88458.terrain b/public/terrain/17/214617/88458.terrain new file mode 100644 index 000000000..300c8283f Binary files /dev/null and b/public/terrain/17/214617/88458.terrain differ diff --git a/public/terrain/17/214617/88459.terrain b/public/terrain/17/214617/88459.terrain new file mode 100644 index 000000000..8c32bb35e Binary files /dev/null and b/public/terrain/17/214617/88459.terrain differ diff --git a/public/terrain/17/214617/88460.terrain b/public/terrain/17/214617/88460.terrain new file mode 100644 index 000000000..149bc5099 Binary files /dev/null and b/public/terrain/17/214617/88460.terrain differ diff --git a/public/terrain/17/214617/88461.terrain b/public/terrain/17/214617/88461.terrain new file mode 100644 index 000000000..10b47c884 Binary files /dev/null and b/public/terrain/17/214617/88461.terrain differ diff --git a/public/terrain/17/214617/88462.terrain b/public/terrain/17/214617/88462.terrain new file mode 100644 index 000000000..eb7eb329e Binary files /dev/null and b/public/terrain/17/214617/88462.terrain differ diff --git a/public/terrain/17/214617/88463.terrain b/public/terrain/17/214617/88463.terrain new file mode 100644 index 000000000..df5aa1118 Binary files /dev/null and b/public/terrain/17/214617/88463.terrain differ diff --git a/public/terrain/17/214617/88464.terrain b/public/terrain/17/214617/88464.terrain new file mode 100644 index 000000000..b0afd5b12 Binary files /dev/null and b/public/terrain/17/214617/88464.terrain differ diff --git a/public/terrain/17/214617/88465.terrain b/public/terrain/17/214617/88465.terrain new file mode 100644 index 000000000..b5fb9e627 Binary files /dev/null and b/public/terrain/17/214617/88465.terrain differ diff --git a/public/terrain/17/214617/88466.terrain b/public/terrain/17/214617/88466.terrain new file mode 100644 index 000000000..02e2ab83e Binary files /dev/null and b/public/terrain/17/214617/88466.terrain differ diff --git a/public/terrain/17/214617/88467.terrain b/public/terrain/17/214617/88467.terrain new file mode 100644 index 000000000..14d529dc7 Binary files /dev/null and b/public/terrain/17/214617/88467.terrain differ diff --git a/public/terrain/17/214617/88468.terrain b/public/terrain/17/214617/88468.terrain new file mode 100644 index 000000000..d1b1fd8d1 Binary files /dev/null and b/public/terrain/17/214617/88468.terrain differ diff --git a/public/terrain/17/214617/88469.terrain b/public/terrain/17/214617/88469.terrain new file mode 100644 index 000000000..a095661b6 Binary files /dev/null and b/public/terrain/17/214617/88469.terrain differ diff --git a/public/terrain/17/214617/88470.terrain b/public/terrain/17/214617/88470.terrain new file mode 100644 index 000000000..531d5f892 Binary files /dev/null and b/public/terrain/17/214617/88470.terrain differ diff --git a/public/terrain/17/214617/88471.terrain b/public/terrain/17/214617/88471.terrain new file mode 100644 index 000000000..3eed618fa Binary files /dev/null and b/public/terrain/17/214617/88471.terrain differ diff --git a/public/terrain/17/214617/88472.terrain b/public/terrain/17/214617/88472.terrain new file mode 100644 index 000000000..7d729345a Binary files /dev/null and b/public/terrain/17/214617/88472.terrain differ diff --git a/public/terrain/17/214617/88473.terrain b/public/terrain/17/214617/88473.terrain new file mode 100644 index 000000000..23f4a569f Binary files /dev/null and b/public/terrain/17/214617/88473.terrain differ diff --git a/public/terrain/17/214617/88474.terrain b/public/terrain/17/214617/88474.terrain new file mode 100644 index 000000000..5a98a7b89 Binary files /dev/null and b/public/terrain/17/214617/88474.terrain differ diff --git a/public/terrain/17/214617/88475.terrain b/public/terrain/17/214617/88475.terrain new file mode 100644 index 000000000..92b4bab45 Binary files /dev/null and b/public/terrain/17/214617/88475.terrain differ diff --git a/public/terrain/17/214617/88476.terrain b/public/terrain/17/214617/88476.terrain new file mode 100644 index 000000000..8e928d2f9 Binary files /dev/null and b/public/terrain/17/214617/88476.terrain differ diff --git a/public/terrain/17/214617/88477.terrain b/public/terrain/17/214617/88477.terrain new file mode 100644 index 000000000..3a2e249f4 Binary files /dev/null and b/public/terrain/17/214617/88477.terrain differ diff --git a/public/terrain/17/214617/88478.terrain b/public/terrain/17/214617/88478.terrain new file mode 100644 index 000000000..3b7a74002 Binary files /dev/null and b/public/terrain/17/214617/88478.terrain differ diff --git a/public/terrain/17/214617/88479.terrain b/public/terrain/17/214617/88479.terrain new file mode 100644 index 000000000..0a2376314 Binary files /dev/null and b/public/terrain/17/214617/88479.terrain differ diff --git a/public/terrain/17/214617/88480.terrain b/public/terrain/17/214617/88480.terrain new file mode 100644 index 000000000..847bad8fd Binary files /dev/null and b/public/terrain/17/214617/88480.terrain differ diff --git a/public/terrain/17/214617/88481.terrain b/public/terrain/17/214617/88481.terrain new file mode 100644 index 000000000..0322c8d2d Binary files /dev/null and b/public/terrain/17/214617/88481.terrain differ diff --git a/public/terrain/17/214617/88482.terrain b/public/terrain/17/214617/88482.terrain new file mode 100644 index 000000000..eb2dc57ae Binary files /dev/null and b/public/terrain/17/214617/88482.terrain differ diff --git a/public/terrain/17/214617/88483.terrain b/public/terrain/17/214617/88483.terrain new file mode 100644 index 000000000..4ce93f3fe Binary files /dev/null and b/public/terrain/17/214617/88483.terrain differ diff --git a/public/terrain/17/214617/88484.terrain b/public/terrain/17/214617/88484.terrain new file mode 100644 index 000000000..f90acc10f Binary files /dev/null and b/public/terrain/17/214617/88484.terrain differ diff --git a/public/terrain/17/214617/88485.terrain b/public/terrain/17/214617/88485.terrain new file mode 100644 index 000000000..0d405129f Binary files /dev/null and b/public/terrain/17/214617/88485.terrain differ diff --git a/public/terrain/17/214617/88486.terrain b/public/terrain/17/214617/88486.terrain new file mode 100644 index 000000000..62e73e430 Binary files /dev/null and b/public/terrain/17/214617/88486.terrain differ diff --git a/public/terrain/17/214617/88487.terrain b/public/terrain/17/214617/88487.terrain new file mode 100644 index 000000000..f2782aeb5 Binary files /dev/null and b/public/terrain/17/214617/88487.terrain differ diff --git a/public/terrain/17/214617/88488.terrain b/public/terrain/17/214617/88488.terrain new file mode 100644 index 000000000..e274feca3 Binary files /dev/null and b/public/terrain/17/214617/88488.terrain differ diff --git a/public/terrain/17/214617/88489.terrain b/public/terrain/17/214617/88489.terrain new file mode 100644 index 000000000..d5987319e Binary files /dev/null and b/public/terrain/17/214617/88489.terrain differ diff --git a/public/terrain/17/214617/88490.terrain b/public/terrain/17/214617/88490.terrain new file mode 100644 index 000000000..127d27ec6 Binary files /dev/null and b/public/terrain/17/214617/88490.terrain differ diff --git a/public/terrain/17/214617/88491.terrain b/public/terrain/17/214617/88491.terrain new file mode 100644 index 000000000..2538600c4 Binary files /dev/null and b/public/terrain/17/214617/88491.terrain differ diff --git a/public/terrain/17/214617/88492.terrain b/public/terrain/17/214617/88492.terrain new file mode 100644 index 000000000..75e86f878 Binary files /dev/null and b/public/terrain/17/214617/88492.terrain differ diff --git a/public/terrain/17/214617/88493.terrain b/public/terrain/17/214617/88493.terrain new file mode 100644 index 000000000..fc4f31680 Binary files /dev/null and b/public/terrain/17/214617/88493.terrain differ diff --git a/public/terrain/17/214617/88494.terrain b/public/terrain/17/214617/88494.terrain new file mode 100644 index 000000000..3cb25cbcf Binary files /dev/null and b/public/terrain/17/214617/88494.terrain differ diff --git a/public/terrain/17/214617/88495.terrain b/public/terrain/17/214617/88495.terrain new file mode 100644 index 000000000..2f295c27b Binary files /dev/null and b/public/terrain/17/214617/88495.terrain differ diff --git a/public/terrain/17/214617/88496.terrain b/public/terrain/17/214617/88496.terrain new file mode 100644 index 000000000..9879d1fb9 Binary files /dev/null and b/public/terrain/17/214617/88496.terrain differ diff --git a/public/terrain/17/214617/88497.terrain b/public/terrain/17/214617/88497.terrain new file mode 100644 index 000000000..d4198ce2a Binary files /dev/null and b/public/terrain/17/214617/88497.terrain differ diff --git a/public/terrain/17/214617/88498.terrain b/public/terrain/17/214617/88498.terrain new file mode 100644 index 000000000..fdb7ee3ed Binary files /dev/null and b/public/terrain/17/214617/88498.terrain differ diff --git a/public/terrain/17/214617/88499.terrain b/public/terrain/17/214617/88499.terrain new file mode 100644 index 000000000..9b059c7dd Binary files /dev/null and b/public/terrain/17/214617/88499.terrain differ diff --git a/public/terrain/17/214617/88500.terrain b/public/terrain/17/214617/88500.terrain new file mode 100644 index 000000000..3a8990a93 Binary files /dev/null and b/public/terrain/17/214617/88500.terrain differ diff --git a/public/terrain/17/214617/88501.terrain b/public/terrain/17/214617/88501.terrain new file mode 100644 index 000000000..1b6c2c5dd Binary files /dev/null and b/public/terrain/17/214617/88501.terrain differ diff --git a/public/terrain/17/214617/88502.terrain b/public/terrain/17/214617/88502.terrain new file mode 100644 index 000000000..7d24c5ed5 Binary files /dev/null and b/public/terrain/17/214617/88502.terrain differ diff --git a/public/terrain/17/214617/88503.terrain b/public/terrain/17/214617/88503.terrain new file mode 100644 index 000000000..228a3004e Binary files /dev/null and b/public/terrain/17/214617/88503.terrain differ diff --git a/public/terrain/17/214617/88504.terrain b/public/terrain/17/214617/88504.terrain new file mode 100644 index 000000000..d62cfcf4f Binary files /dev/null and b/public/terrain/17/214617/88504.terrain differ diff --git a/public/terrain/17/214617/88505.terrain b/public/terrain/17/214617/88505.terrain new file mode 100644 index 000000000..d236cec5f Binary files /dev/null and b/public/terrain/17/214617/88505.terrain differ diff --git a/public/terrain/17/214617/88506.terrain b/public/terrain/17/214617/88506.terrain new file mode 100644 index 000000000..2429d5eb6 Binary files /dev/null and b/public/terrain/17/214617/88506.terrain differ diff --git a/public/terrain/17/214617/88507.terrain b/public/terrain/17/214617/88507.terrain new file mode 100644 index 000000000..f16796717 Binary files /dev/null and b/public/terrain/17/214617/88507.terrain differ diff --git a/public/terrain/17/214617/88508.terrain b/public/terrain/17/214617/88508.terrain new file mode 100644 index 000000000..9be4688b8 Binary files /dev/null and b/public/terrain/17/214617/88508.terrain differ diff --git a/public/terrain/17/214617/88509.terrain b/public/terrain/17/214617/88509.terrain new file mode 100644 index 000000000..71049ebe2 Binary files /dev/null and b/public/terrain/17/214617/88509.terrain differ diff --git a/public/terrain/17/214617/88510.terrain b/public/terrain/17/214617/88510.terrain new file mode 100644 index 000000000..ac1bf7f5f Binary files /dev/null and b/public/terrain/17/214617/88510.terrain differ diff --git a/public/terrain/17/214617/88511.terrain b/public/terrain/17/214617/88511.terrain new file mode 100644 index 000000000..50d4de20e Binary files /dev/null and b/public/terrain/17/214617/88511.terrain differ diff --git a/public/terrain/17/214617/88512.terrain b/public/terrain/17/214617/88512.terrain new file mode 100644 index 000000000..af1ee8c11 Binary files /dev/null and b/public/terrain/17/214617/88512.terrain differ diff --git a/public/terrain/17/214617/88513.terrain b/public/terrain/17/214617/88513.terrain new file mode 100644 index 000000000..c69bd34ef Binary files /dev/null and b/public/terrain/17/214617/88513.terrain differ diff --git a/public/terrain/17/214617/88514.terrain b/public/terrain/17/214617/88514.terrain new file mode 100644 index 000000000..597662d6e Binary files /dev/null and b/public/terrain/17/214617/88514.terrain differ diff --git a/public/terrain/17/214618/88435.terrain b/public/terrain/17/214618/88435.terrain new file mode 100644 index 000000000..2b3be336c Binary files /dev/null and b/public/terrain/17/214618/88435.terrain differ diff --git a/public/terrain/17/214618/88436.terrain b/public/terrain/17/214618/88436.terrain new file mode 100644 index 000000000..fb204668d Binary files /dev/null and b/public/terrain/17/214618/88436.terrain differ diff --git a/public/terrain/17/214618/88437.terrain b/public/terrain/17/214618/88437.terrain new file mode 100644 index 000000000..7ae65c019 Binary files /dev/null and b/public/terrain/17/214618/88437.terrain differ diff --git a/public/terrain/17/214618/88438.terrain b/public/terrain/17/214618/88438.terrain new file mode 100644 index 000000000..d428f7b1b Binary files /dev/null and b/public/terrain/17/214618/88438.terrain differ diff --git a/public/terrain/17/214618/88439.terrain b/public/terrain/17/214618/88439.terrain new file mode 100644 index 000000000..bc0768b34 Binary files /dev/null and b/public/terrain/17/214618/88439.terrain differ diff --git a/public/terrain/17/214618/88440.terrain b/public/terrain/17/214618/88440.terrain new file mode 100644 index 000000000..42c8c2f85 Binary files /dev/null and b/public/terrain/17/214618/88440.terrain differ diff --git a/public/terrain/17/214618/88441.terrain b/public/terrain/17/214618/88441.terrain new file mode 100644 index 000000000..4fc9df8b5 Binary files /dev/null and b/public/terrain/17/214618/88441.terrain differ diff --git a/public/terrain/17/214618/88442.terrain b/public/terrain/17/214618/88442.terrain new file mode 100644 index 000000000..2af74a829 Binary files /dev/null and b/public/terrain/17/214618/88442.terrain differ diff --git a/public/terrain/17/214618/88443.terrain b/public/terrain/17/214618/88443.terrain new file mode 100644 index 000000000..9687dad72 Binary files /dev/null and b/public/terrain/17/214618/88443.terrain differ diff --git a/public/terrain/17/214618/88444.terrain b/public/terrain/17/214618/88444.terrain new file mode 100644 index 000000000..1451d12cb Binary files /dev/null and b/public/terrain/17/214618/88444.terrain differ diff --git a/public/terrain/17/214618/88445.terrain b/public/terrain/17/214618/88445.terrain new file mode 100644 index 000000000..f86ace341 Binary files /dev/null and b/public/terrain/17/214618/88445.terrain differ diff --git a/public/terrain/17/214618/88446.terrain b/public/terrain/17/214618/88446.terrain new file mode 100644 index 000000000..1af4cb523 Binary files /dev/null and b/public/terrain/17/214618/88446.terrain differ diff --git a/public/terrain/17/214618/88447.terrain b/public/terrain/17/214618/88447.terrain new file mode 100644 index 000000000..cde26dbf9 Binary files /dev/null and b/public/terrain/17/214618/88447.terrain differ diff --git a/public/terrain/17/214618/88448.terrain b/public/terrain/17/214618/88448.terrain new file mode 100644 index 000000000..1ba4e47da Binary files /dev/null and b/public/terrain/17/214618/88448.terrain differ diff --git a/public/terrain/17/214618/88449.terrain b/public/terrain/17/214618/88449.terrain new file mode 100644 index 000000000..4d91cec95 Binary files /dev/null and b/public/terrain/17/214618/88449.terrain differ diff --git a/public/terrain/17/214618/88450.terrain b/public/terrain/17/214618/88450.terrain new file mode 100644 index 000000000..e6a44c2a7 Binary files /dev/null and b/public/terrain/17/214618/88450.terrain differ diff --git a/public/terrain/17/214618/88451.terrain b/public/terrain/17/214618/88451.terrain new file mode 100644 index 000000000..9fdcc9846 Binary files /dev/null and b/public/terrain/17/214618/88451.terrain differ diff --git a/public/terrain/17/214618/88452.terrain b/public/terrain/17/214618/88452.terrain new file mode 100644 index 000000000..ef94f351c Binary files /dev/null and b/public/terrain/17/214618/88452.terrain differ diff --git a/public/terrain/17/214618/88453.terrain b/public/terrain/17/214618/88453.terrain new file mode 100644 index 000000000..3d62fd31e Binary files /dev/null and b/public/terrain/17/214618/88453.terrain differ diff --git a/public/terrain/17/214618/88454.terrain b/public/terrain/17/214618/88454.terrain new file mode 100644 index 000000000..e981937fd Binary files /dev/null and b/public/terrain/17/214618/88454.terrain differ diff --git a/public/terrain/17/214618/88455.terrain b/public/terrain/17/214618/88455.terrain new file mode 100644 index 000000000..a6c286669 Binary files /dev/null and b/public/terrain/17/214618/88455.terrain differ diff --git a/public/terrain/17/214618/88456.terrain b/public/terrain/17/214618/88456.terrain new file mode 100644 index 000000000..6208decda Binary files /dev/null and b/public/terrain/17/214618/88456.terrain differ diff --git a/public/terrain/17/214618/88457.terrain b/public/terrain/17/214618/88457.terrain new file mode 100644 index 000000000..0f7bc115d Binary files /dev/null and b/public/terrain/17/214618/88457.terrain differ diff --git a/public/terrain/17/214618/88458.terrain b/public/terrain/17/214618/88458.terrain new file mode 100644 index 000000000..910bfba3a Binary files /dev/null and b/public/terrain/17/214618/88458.terrain differ diff --git a/public/terrain/17/214618/88459.terrain b/public/terrain/17/214618/88459.terrain new file mode 100644 index 000000000..74d3125ba Binary files /dev/null and b/public/terrain/17/214618/88459.terrain differ diff --git a/public/terrain/17/214618/88460.terrain b/public/terrain/17/214618/88460.terrain new file mode 100644 index 000000000..e1f255ea9 Binary files /dev/null and b/public/terrain/17/214618/88460.terrain differ diff --git a/public/terrain/17/214618/88461.terrain b/public/terrain/17/214618/88461.terrain new file mode 100644 index 000000000..94b2f520c Binary files /dev/null and b/public/terrain/17/214618/88461.terrain differ diff --git a/public/terrain/17/214618/88462.terrain b/public/terrain/17/214618/88462.terrain new file mode 100644 index 000000000..964c1510c Binary files /dev/null and b/public/terrain/17/214618/88462.terrain differ diff --git a/public/terrain/17/214618/88463.terrain b/public/terrain/17/214618/88463.terrain new file mode 100644 index 000000000..c05c93f1b Binary files /dev/null and b/public/terrain/17/214618/88463.terrain differ diff --git a/public/terrain/17/214618/88464.terrain b/public/terrain/17/214618/88464.terrain new file mode 100644 index 000000000..fb3c29ecc Binary files /dev/null and b/public/terrain/17/214618/88464.terrain differ diff --git a/public/terrain/17/214618/88465.terrain b/public/terrain/17/214618/88465.terrain new file mode 100644 index 000000000..f77f8ebb0 Binary files /dev/null and b/public/terrain/17/214618/88465.terrain differ diff --git a/public/terrain/17/214618/88466.terrain b/public/terrain/17/214618/88466.terrain new file mode 100644 index 000000000..88b69fa68 Binary files /dev/null and b/public/terrain/17/214618/88466.terrain differ diff --git a/public/terrain/17/214618/88467.terrain b/public/terrain/17/214618/88467.terrain new file mode 100644 index 000000000..435f3d353 Binary files /dev/null and b/public/terrain/17/214618/88467.terrain differ diff --git a/public/terrain/17/214618/88468.terrain b/public/terrain/17/214618/88468.terrain new file mode 100644 index 000000000..011dcf638 Binary files /dev/null and b/public/terrain/17/214618/88468.terrain differ diff --git a/public/terrain/17/214618/88469.terrain b/public/terrain/17/214618/88469.terrain new file mode 100644 index 000000000..44f815d78 Binary files /dev/null and b/public/terrain/17/214618/88469.terrain differ diff --git a/public/terrain/17/214618/88470.terrain b/public/terrain/17/214618/88470.terrain new file mode 100644 index 000000000..6f9fe9425 Binary files /dev/null and b/public/terrain/17/214618/88470.terrain differ diff --git a/public/terrain/17/214618/88471.terrain b/public/terrain/17/214618/88471.terrain new file mode 100644 index 000000000..c7d5943c1 Binary files /dev/null and b/public/terrain/17/214618/88471.terrain differ diff --git a/public/terrain/17/214618/88472.terrain b/public/terrain/17/214618/88472.terrain new file mode 100644 index 000000000..c09a19c26 Binary files /dev/null and b/public/terrain/17/214618/88472.terrain differ diff --git a/public/terrain/17/214618/88473.terrain b/public/terrain/17/214618/88473.terrain new file mode 100644 index 000000000..979524a49 Binary files /dev/null and b/public/terrain/17/214618/88473.terrain differ diff --git a/public/terrain/17/214618/88474.terrain b/public/terrain/17/214618/88474.terrain new file mode 100644 index 000000000..5cf3ee716 Binary files /dev/null and b/public/terrain/17/214618/88474.terrain differ diff --git a/public/terrain/17/214618/88475.terrain b/public/terrain/17/214618/88475.terrain new file mode 100644 index 000000000..3a6d73fc2 Binary files /dev/null and b/public/terrain/17/214618/88475.terrain differ diff --git a/public/terrain/17/214618/88476.terrain b/public/terrain/17/214618/88476.terrain new file mode 100644 index 000000000..a89141712 Binary files /dev/null and b/public/terrain/17/214618/88476.terrain differ diff --git a/public/terrain/17/214618/88477.terrain b/public/terrain/17/214618/88477.terrain new file mode 100644 index 000000000..7f873f541 Binary files /dev/null and b/public/terrain/17/214618/88477.terrain differ diff --git a/public/terrain/17/214618/88478.terrain b/public/terrain/17/214618/88478.terrain new file mode 100644 index 000000000..8f559812a Binary files /dev/null and b/public/terrain/17/214618/88478.terrain differ diff --git a/public/terrain/17/214618/88479.terrain b/public/terrain/17/214618/88479.terrain new file mode 100644 index 000000000..a2ee2c007 Binary files /dev/null and b/public/terrain/17/214618/88479.terrain differ diff --git a/public/terrain/17/214618/88480.terrain b/public/terrain/17/214618/88480.terrain new file mode 100644 index 000000000..cabcaa973 Binary files /dev/null and b/public/terrain/17/214618/88480.terrain differ diff --git a/public/terrain/17/214618/88481.terrain b/public/terrain/17/214618/88481.terrain new file mode 100644 index 000000000..71317afd1 Binary files /dev/null and b/public/terrain/17/214618/88481.terrain differ diff --git a/public/terrain/17/214618/88482.terrain b/public/terrain/17/214618/88482.terrain new file mode 100644 index 000000000..d1aac9986 Binary files /dev/null and b/public/terrain/17/214618/88482.terrain differ diff --git a/public/terrain/17/214618/88483.terrain b/public/terrain/17/214618/88483.terrain new file mode 100644 index 000000000..ab8fa5672 Binary files /dev/null and b/public/terrain/17/214618/88483.terrain differ diff --git a/public/terrain/17/214618/88484.terrain b/public/terrain/17/214618/88484.terrain new file mode 100644 index 000000000..c2af8cebc Binary files /dev/null and b/public/terrain/17/214618/88484.terrain differ diff --git a/public/terrain/17/214618/88485.terrain b/public/terrain/17/214618/88485.terrain new file mode 100644 index 000000000..59b520f28 Binary files /dev/null and b/public/terrain/17/214618/88485.terrain differ diff --git a/public/terrain/17/214618/88486.terrain b/public/terrain/17/214618/88486.terrain new file mode 100644 index 000000000..c944af981 Binary files /dev/null and b/public/terrain/17/214618/88486.terrain differ diff --git a/public/terrain/17/214618/88487.terrain b/public/terrain/17/214618/88487.terrain new file mode 100644 index 000000000..8db97d02c Binary files /dev/null and b/public/terrain/17/214618/88487.terrain differ diff --git a/public/terrain/17/214618/88488.terrain b/public/terrain/17/214618/88488.terrain new file mode 100644 index 000000000..e962109cf Binary files /dev/null and b/public/terrain/17/214618/88488.terrain differ diff --git a/public/terrain/17/214618/88489.terrain b/public/terrain/17/214618/88489.terrain new file mode 100644 index 000000000..2e6e9ab98 Binary files /dev/null and b/public/terrain/17/214618/88489.terrain differ diff --git a/public/terrain/17/214618/88490.terrain b/public/terrain/17/214618/88490.terrain new file mode 100644 index 000000000..f46994dad Binary files /dev/null and b/public/terrain/17/214618/88490.terrain differ diff --git a/public/terrain/17/214618/88491.terrain b/public/terrain/17/214618/88491.terrain new file mode 100644 index 000000000..3f0f65e33 Binary files /dev/null and b/public/terrain/17/214618/88491.terrain differ diff --git a/public/terrain/17/214618/88492.terrain b/public/terrain/17/214618/88492.terrain new file mode 100644 index 000000000..d9e5d35dd Binary files /dev/null and b/public/terrain/17/214618/88492.terrain differ diff --git a/public/terrain/17/214618/88493.terrain b/public/terrain/17/214618/88493.terrain new file mode 100644 index 000000000..24b487e4c Binary files /dev/null and b/public/terrain/17/214618/88493.terrain differ diff --git a/public/terrain/17/214618/88494.terrain b/public/terrain/17/214618/88494.terrain new file mode 100644 index 000000000..3080ef824 Binary files /dev/null and b/public/terrain/17/214618/88494.terrain differ diff --git a/public/terrain/17/214618/88495.terrain b/public/terrain/17/214618/88495.terrain new file mode 100644 index 000000000..70929c449 Binary files /dev/null and b/public/terrain/17/214618/88495.terrain differ diff --git a/public/terrain/17/214618/88496.terrain b/public/terrain/17/214618/88496.terrain new file mode 100644 index 000000000..0dae39af5 Binary files /dev/null and b/public/terrain/17/214618/88496.terrain differ diff --git a/public/terrain/17/214618/88497.terrain b/public/terrain/17/214618/88497.terrain new file mode 100644 index 000000000..fec422305 Binary files /dev/null and b/public/terrain/17/214618/88497.terrain differ diff --git a/public/terrain/17/214618/88498.terrain b/public/terrain/17/214618/88498.terrain new file mode 100644 index 000000000..a8a0350f5 Binary files /dev/null and b/public/terrain/17/214618/88498.terrain differ diff --git a/public/terrain/17/214618/88499.terrain b/public/terrain/17/214618/88499.terrain new file mode 100644 index 000000000..6068a8687 Binary files /dev/null and b/public/terrain/17/214618/88499.terrain differ diff --git a/public/terrain/17/214618/88500.terrain b/public/terrain/17/214618/88500.terrain new file mode 100644 index 000000000..b76edfb93 Binary files /dev/null and b/public/terrain/17/214618/88500.terrain differ diff --git a/public/terrain/17/214618/88501.terrain b/public/terrain/17/214618/88501.terrain new file mode 100644 index 000000000..3f75e1764 Binary files /dev/null and b/public/terrain/17/214618/88501.terrain differ diff --git a/public/terrain/17/214618/88502.terrain b/public/terrain/17/214618/88502.terrain new file mode 100644 index 000000000..0c28d7b24 Binary files /dev/null and b/public/terrain/17/214618/88502.terrain differ diff --git a/public/terrain/17/214618/88503.terrain b/public/terrain/17/214618/88503.terrain new file mode 100644 index 000000000..3a687cca6 Binary files /dev/null and b/public/terrain/17/214618/88503.terrain differ diff --git a/public/terrain/17/214618/88504.terrain b/public/terrain/17/214618/88504.terrain new file mode 100644 index 000000000..4bdd1338c Binary files /dev/null and b/public/terrain/17/214618/88504.terrain differ diff --git a/public/terrain/17/214618/88505.terrain b/public/terrain/17/214618/88505.terrain new file mode 100644 index 000000000..3841e71d5 Binary files /dev/null and b/public/terrain/17/214618/88505.terrain differ diff --git a/public/terrain/17/214618/88506.terrain b/public/terrain/17/214618/88506.terrain new file mode 100644 index 000000000..9e42631ea Binary files /dev/null and b/public/terrain/17/214618/88506.terrain differ diff --git a/public/terrain/17/214618/88507.terrain b/public/terrain/17/214618/88507.terrain new file mode 100644 index 000000000..d3f4c6ae9 Binary files /dev/null and b/public/terrain/17/214618/88507.terrain differ diff --git a/public/terrain/17/214618/88508.terrain b/public/terrain/17/214618/88508.terrain new file mode 100644 index 000000000..866e22425 Binary files /dev/null and b/public/terrain/17/214618/88508.terrain differ diff --git a/public/terrain/17/214618/88509.terrain b/public/terrain/17/214618/88509.terrain new file mode 100644 index 000000000..bfdd5303e Binary files /dev/null and b/public/terrain/17/214618/88509.terrain differ diff --git a/public/terrain/17/214618/88510.terrain b/public/terrain/17/214618/88510.terrain new file mode 100644 index 000000000..c1d7bd83a Binary files /dev/null and b/public/terrain/17/214618/88510.terrain differ diff --git a/public/terrain/17/214618/88511.terrain b/public/terrain/17/214618/88511.terrain new file mode 100644 index 000000000..ed2fe44e6 Binary files /dev/null and b/public/terrain/17/214618/88511.terrain differ diff --git a/public/terrain/17/214618/88512.terrain b/public/terrain/17/214618/88512.terrain new file mode 100644 index 000000000..80a96652b Binary files /dev/null and b/public/terrain/17/214618/88512.terrain differ diff --git a/public/terrain/17/214618/88513.terrain b/public/terrain/17/214618/88513.terrain new file mode 100644 index 000000000..ed54a98b9 Binary files /dev/null and b/public/terrain/17/214618/88513.terrain differ diff --git a/public/terrain/17/214618/88514.terrain b/public/terrain/17/214618/88514.terrain new file mode 100644 index 000000000..6f73b7724 Binary files /dev/null and b/public/terrain/17/214618/88514.terrain differ diff --git a/public/terrain/17/214619/88435.terrain b/public/terrain/17/214619/88435.terrain new file mode 100644 index 000000000..8b7ff08a3 Binary files /dev/null and b/public/terrain/17/214619/88435.terrain differ diff --git a/public/terrain/17/214619/88436.terrain b/public/terrain/17/214619/88436.terrain new file mode 100644 index 000000000..dd08d3dfe Binary files /dev/null and b/public/terrain/17/214619/88436.terrain differ diff --git a/public/terrain/17/214619/88437.terrain b/public/terrain/17/214619/88437.terrain new file mode 100644 index 000000000..78d6b8de7 Binary files /dev/null and b/public/terrain/17/214619/88437.terrain differ diff --git a/public/terrain/17/214619/88438.terrain b/public/terrain/17/214619/88438.terrain new file mode 100644 index 000000000..e9dbfb654 Binary files /dev/null and b/public/terrain/17/214619/88438.terrain differ diff --git a/public/terrain/17/214619/88439.terrain b/public/terrain/17/214619/88439.terrain new file mode 100644 index 000000000..3b7402619 Binary files /dev/null and b/public/terrain/17/214619/88439.terrain differ diff --git a/public/terrain/17/214619/88440.terrain b/public/terrain/17/214619/88440.terrain new file mode 100644 index 000000000..25b35e0fa Binary files /dev/null and b/public/terrain/17/214619/88440.terrain differ diff --git a/public/terrain/17/214619/88441.terrain b/public/terrain/17/214619/88441.terrain new file mode 100644 index 000000000..ff2058080 Binary files /dev/null and b/public/terrain/17/214619/88441.terrain differ diff --git a/public/terrain/17/214619/88442.terrain b/public/terrain/17/214619/88442.terrain new file mode 100644 index 000000000..f7793b005 Binary files /dev/null and b/public/terrain/17/214619/88442.terrain differ diff --git a/public/terrain/17/214619/88443.terrain b/public/terrain/17/214619/88443.terrain new file mode 100644 index 000000000..127f26953 Binary files /dev/null and b/public/terrain/17/214619/88443.terrain differ diff --git a/public/terrain/17/214619/88444.terrain b/public/terrain/17/214619/88444.terrain new file mode 100644 index 000000000..37e97c21e Binary files /dev/null and b/public/terrain/17/214619/88444.terrain differ diff --git a/public/terrain/17/214619/88445.terrain b/public/terrain/17/214619/88445.terrain new file mode 100644 index 000000000..7a57cab65 Binary files /dev/null and b/public/terrain/17/214619/88445.terrain differ diff --git a/public/terrain/17/214619/88446.terrain b/public/terrain/17/214619/88446.terrain new file mode 100644 index 000000000..a5472fc85 Binary files /dev/null and b/public/terrain/17/214619/88446.terrain differ diff --git a/public/terrain/17/214619/88447.terrain b/public/terrain/17/214619/88447.terrain new file mode 100644 index 000000000..fa28e0b6e Binary files /dev/null and b/public/terrain/17/214619/88447.terrain differ diff --git a/public/terrain/17/214619/88448.terrain b/public/terrain/17/214619/88448.terrain new file mode 100644 index 000000000..1df1db4ba Binary files /dev/null and b/public/terrain/17/214619/88448.terrain differ diff --git a/public/terrain/17/214619/88449.terrain b/public/terrain/17/214619/88449.terrain new file mode 100644 index 000000000..221e726c9 Binary files /dev/null and b/public/terrain/17/214619/88449.terrain differ diff --git a/public/terrain/17/214619/88450.terrain b/public/terrain/17/214619/88450.terrain new file mode 100644 index 000000000..fb2412881 Binary files /dev/null and b/public/terrain/17/214619/88450.terrain differ diff --git a/public/terrain/17/214619/88451.terrain b/public/terrain/17/214619/88451.terrain new file mode 100644 index 000000000..ec0299d2a Binary files /dev/null and b/public/terrain/17/214619/88451.terrain differ diff --git a/public/terrain/17/214619/88452.terrain b/public/terrain/17/214619/88452.terrain new file mode 100644 index 000000000..9426b038a Binary files /dev/null and b/public/terrain/17/214619/88452.terrain differ diff --git a/public/terrain/17/214619/88453.terrain b/public/terrain/17/214619/88453.terrain new file mode 100644 index 000000000..7ddf7d920 Binary files /dev/null and b/public/terrain/17/214619/88453.terrain differ diff --git a/public/terrain/17/214619/88454.terrain b/public/terrain/17/214619/88454.terrain new file mode 100644 index 000000000..9f5f55959 Binary files /dev/null and b/public/terrain/17/214619/88454.terrain differ diff --git a/public/terrain/17/214619/88455.terrain b/public/terrain/17/214619/88455.terrain new file mode 100644 index 000000000..9e0e87c99 Binary files /dev/null and b/public/terrain/17/214619/88455.terrain differ diff --git a/public/terrain/17/214619/88456.terrain b/public/terrain/17/214619/88456.terrain new file mode 100644 index 000000000..bf75989ee Binary files /dev/null and b/public/terrain/17/214619/88456.terrain differ diff --git a/public/terrain/17/214619/88457.terrain b/public/terrain/17/214619/88457.terrain new file mode 100644 index 000000000..0d47d4457 Binary files /dev/null and b/public/terrain/17/214619/88457.terrain differ diff --git a/public/terrain/17/214619/88458.terrain b/public/terrain/17/214619/88458.terrain new file mode 100644 index 000000000..70d8cdbdd Binary files /dev/null and b/public/terrain/17/214619/88458.terrain differ diff --git a/public/terrain/17/214619/88459.terrain b/public/terrain/17/214619/88459.terrain new file mode 100644 index 000000000..c2c607606 Binary files /dev/null and b/public/terrain/17/214619/88459.terrain differ diff --git a/public/terrain/17/214619/88460.terrain b/public/terrain/17/214619/88460.terrain new file mode 100644 index 000000000..055d39374 Binary files /dev/null and b/public/terrain/17/214619/88460.terrain differ diff --git a/public/terrain/17/214619/88461.terrain b/public/terrain/17/214619/88461.terrain new file mode 100644 index 000000000..cead56c7d Binary files /dev/null and b/public/terrain/17/214619/88461.terrain differ diff --git a/public/terrain/17/214619/88462.terrain b/public/terrain/17/214619/88462.terrain new file mode 100644 index 000000000..086d62a87 Binary files /dev/null and b/public/terrain/17/214619/88462.terrain differ diff --git a/public/terrain/17/214619/88463.terrain b/public/terrain/17/214619/88463.terrain new file mode 100644 index 000000000..b9e0bcdee Binary files /dev/null and b/public/terrain/17/214619/88463.terrain differ diff --git a/public/terrain/17/214619/88464.terrain b/public/terrain/17/214619/88464.terrain new file mode 100644 index 000000000..a9971891d Binary files /dev/null and b/public/terrain/17/214619/88464.terrain differ diff --git a/public/terrain/17/214619/88465.terrain b/public/terrain/17/214619/88465.terrain new file mode 100644 index 000000000..a84ce4229 Binary files /dev/null and b/public/terrain/17/214619/88465.terrain differ diff --git a/public/terrain/17/214619/88466.terrain b/public/terrain/17/214619/88466.terrain new file mode 100644 index 000000000..f5f491588 Binary files /dev/null and b/public/terrain/17/214619/88466.terrain differ diff --git a/public/terrain/17/214619/88467.terrain b/public/terrain/17/214619/88467.terrain new file mode 100644 index 000000000..8c40f743d Binary files /dev/null and b/public/terrain/17/214619/88467.terrain differ diff --git a/public/terrain/17/214619/88468.terrain b/public/terrain/17/214619/88468.terrain new file mode 100644 index 000000000..bbffaa2a3 Binary files /dev/null and b/public/terrain/17/214619/88468.terrain differ diff --git a/public/terrain/17/214619/88469.terrain b/public/terrain/17/214619/88469.terrain new file mode 100644 index 000000000..0e92d4f98 Binary files /dev/null and b/public/terrain/17/214619/88469.terrain differ diff --git a/public/terrain/17/214619/88470.terrain b/public/terrain/17/214619/88470.terrain new file mode 100644 index 000000000..36d85be6d Binary files /dev/null and b/public/terrain/17/214619/88470.terrain differ diff --git a/public/terrain/17/214619/88471.terrain b/public/terrain/17/214619/88471.terrain new file mode 100644 index 000000000..9e28344e5 Binary files /dev/null and b/public/terrain/17/214619/88471.terrain differ diff --git a/public/terrain/17/214619/88472.terrain b/public/terrain/17/214619/88472.terrain new file mode 100644 index 000000000..c14a5c87a Binary files /dev/null and b/public/terrain/17/214619/88472.terrain differ diff --git a/public/terrain/17/214619/88473.terrain b/public/terrain/17/214619/88473.terrain new file mode 100644 index 000000000..0e383d9c1 Binary files /dev/null and b/public/terrain/17/214619/88473.terrain differ diff --git a/public/terrain/17/214619/88474.terrain b/public/terrain/17/214619/88474.terrain new file mode 100644 index 000000000..c6f2c2990 Binary files /dev/null and b/public/terrain/17/214619/88474.terrain differ diff --git a/public/terrain/17/214619/88475.terrain b/public/terrain/17/214619/88475.terrain new file mode 100644 index 000000000..c3275ffe2 Binary files /dev/null and b/public/terrain/17/214619/88475.terrain differ diff --git a/public/terrain/17/214619/88476.terrain b/public/terrain/17/214619/88476.terrain new file mode 100644 index 000000000..29557bbf0 Binary files /dev/null and b/public/terrain/17/214619/88476.terrain differ diff --git a/public/terrain/17/214619/88477.terrain b/public/terrain/17/214619/88477.terrain new file mode 100644 index 000000000..8e4b144e4 Binary files /dev/null and b/public/terrain/17/214619/88477.terrain differ diff --git a/public/terrain/17/214619/88478.terrain b/public/terrain/17/214619/88478.terrain new file mode 100644 index 000000000..c61ff4632 Binary files /dev/null and b/public/terrain/17/214619/88478.terrain differ diff --git a/public/terrain/17/214619/88479.terrain b/public/terrain/17/214619/88479.terrain new file mode 100644 index 000000000..a46df6b59 Binary files /dev/null and b/public/terrain/17/214619/88479.terrain differ diff --git a/public/terrain/17/214619/88480.terrain b/public/terrain/17/214619/88480.terrain new file mode 100644 index 000000000..d875bb31f Binary files /dev/null and b/public/terrain/17/214619/88480.terrain differ diff --git a/public/terrain/17/214619/88481.terrain b/public/terrain/17/214619/88481.terrain new file mode 100644 index 000000000..b3a691be9 Binary files /dev/null and b/public/terrain/17/214619/88481.terrain differ diff --git a/public/terrain/17/214619/88482.terrain b/public/terrain/17/214619/88482.terrain new file mode 100644 index 000000000..ea8e5278f Binary files /dev/null and b/public/terrain/17/214619/88482.terrain differ diff --git a/public/terrain/17/214619/88483.terrain b/public/terrain/17/214619/88483.terrain new file mode 100644 index 000000000..ddcf92590 Binary files /dev/null and b/public/terrain/17/214619/88483.terrain differ diff --git a/public/terrain/17/214619/88484.terrain b/public/terrain/17/214619/88484.terrain new file mode 100644 index 000000000..05bbcb378 Binary files /dev/null and b/public/terrain/17/214619/88484.terrain differ diff --git a/public/terrain/17/214619/88485.terrain b/public/terrain/17/214619/88485.terrain new file mode 100644 index 000000000..a22bb5f93 Binary files /dev/null and b/public/terrain/17/214619/88485.terrain differ diff --git a/public/terrain/17/214619/88486.terrain b/public/terrain/17/214619/88486.terrain new file mode 100644 index 000000000..97914c7ad Binary files /dev/null and b/public/terrain/17/214619/88486.terrain differ diff --git a/public/terrain/17/214619/88487.terrain b/public/terrain/17/214619/88487.terrain new file mode 100644 index 000000000..f8f088856 Binary files /dev/null and b/public/terrain/17/214619/88487.terrain differ diff --git a/public/terrain/17/214619/88488.terrain b/public/terrain/17/214619/88488.terrain new file mode 100644 index 000000000..4f3337153 Binary files /dev/null and b/public/terrain/17/214619/88488.terrain differ diff --git a/public/terrain/17/214619/88489.terrain b/public/terrain/17/214619/88489.terrain new file mode 100644 index 000000000..cde36f688 Binary files /dev/null and b/public/terrain/17/214619/88489.terrain differ diff --git a/public/terrain/17/214619/88490.terrain b/public/terrain/17/214619/88490.terrain new file mode 100644 index 000000000..12eb6cc77 Binary files /dev/null and b/public/terrain/17/214619/88490.terrain differ diff --git a/public/terrain/17/214619/88491.terrain b/public/terrain/17/214619/88491.terrain new file mode 100644 index 000000000..eb97e98e8 Binary files /dev/null and b/public/terrain/17/214619/88491.terrain differ diff --git a/public/terrain/17/214619/88492.terrain b/public/terrain/17/214619/88492.terrain new file mode 100644 index 000000000..2de3bff51 Binary files /dev/null and b/public/terrain/17/214619/88492.terrain differ diff --git a/public/terrain/17/214619/88493.terrain b/public/terrain/17/214619/88493.terrain new file mode 100644 index 000000000..a8c85c632 Binary files /dev/null and b/public/terrain/17/214619/88493.terrain differ diff --git a/public/terrain/17/214619/88494.terrain b/public/terrain/17/214619/88494.terrain new file mode 100644 index 000000000..30b7f2adf Binary files /dev/null and b/public/terrain/17/214619/88494.terrain differ diff --git a/public/terrain/17/214619/88495.terrain b/public/terrain/17/214619/88495.terrain new file mode 100644 index 000000000..4a0536330 Binary files /dev/null and b/public/terrain/17/214619/88495.terrain differ diff --git a/public/terrain/17/214619/88496.terrain b/public/terrain/17/214619/88496.terrain new file mode 100644 index 000000000..5fec574cd Binary files /dev/null and b/public/terrain/17/214619/88496.terrain differ diff --git a/public/terrain/17/214619/88497.terrain b/public/terrain/17/214619/88497.terrain new file mode 100644 index 000000000..64af201a8 Binary files /dev/null and b/public/terrain/17/214619/88497.terrain differ diff --git a/public/terrain/17/214619/88498.terrain b/public/terrain/17/214619/88498.terrain new file mode 100644 index 000000000..d357e08e6 Binary files /dev/null and b/public/terrain/17/214619/88498.terrain differ diff --git a/public/terrain/17/214619/88499.terrain b/public/terrain/17/214619/88499.terrain new file mode 100644 index 000000000..8fb6f0197 Binary files /dev/null and b/public/terrain/17/214619/88499.terrain differ diff --git a/public/terrain/17/214619/88500.terrain b/public/terrain/17/214619/88500.terrain new file mode 100644 index 000000000..c772910d7 Binary files /dev/null and b/public/terrain/17/214619/88500.terrain differ diff --git a/public/terrain/17/214619/88501.terrain b/public/terrain/17/214619/88501.terrain new file mode 100644 index 000000000..d46548cfc Binary files /dev/null and b/public/terrain/17/214619/88501.terrain differ diff --git a/public/terrain/17/214619/88502.terrain b/public/terrain/17/214619/88502.terrain new file mode 100644 index 000000000..ca1bf6452 Binary files /dev/null and b/public/terrain/17/214619/88502.terrain differ diff --git a/public/terrain/17/214619/88503.terrain b/public/terrain/17/214619/88503.terrain new file mode 100644 index 000000000..4c1ceb943 Binary files /dev/null and b/public/terrain/17/214619/88503.terrain differ diff --git a/public/terrain/17/214619/88504.terrain b/public/terrain/17/214619/88504.terrain new file mode 100644 index 000000000..c3e0ea611 Binary files /dev/null and b/public/terrain/17/214619/88504.terrain differ diff --git a/public/terrain/17/214619/88505.terrain b/public/terrain/17/214619/88505.terrain new file mode 100644 index 000000000..fd8dee75a Binary files /dev/null and b/public/terrain/17/214619/88505.terrain differ diff --git a/public/terrain/17/214619/88506.terrain b/public/terrain/17/214619/88506.terrain new file mode 100644 index 000000000..c8b4ba0d5 Binary files /dev/null and b/public/terrain/17/214619/88506.terrain differ diff --git a/public/terrain/17/214619/88507.terrain b/public/terrain/17/214619/88507.terrain new file mode 100644 index 000000000..c2559699c Binary files /dev/null and b/public/terrain/17/214619/88507.terrain differ diff --git a/public/terrain/17/214619/88508.terrain b/public/terrain/17/214619/88508.terrain new file mode 100644 index 000000000..65b0bfce8 Binary files /dev/null and b/public/terrain/17/214619/88508.terrain differ diff --git a/public/terrain/17/214619/88509.terrain b/public/terrain/17/214619/88509.terrain new file mode 100644 index 000000000..088674ce7 Binary files /dev/null and b/public/terrain/17/214619/88509.terrain differ diff --git a/public/terrain/17/214619/88510.terrain b/public/terrain/17/214619/88510.terrain new file mode 100644 index 000000000..6eea3c33b Binary files /dev/null and b/public/terrain/17/214619/88510.terrain differ diff --git a/public/terrain/17/214619/88511.terrain b/public/terrain/17/214619/88511.terrain new file mode 100644 index 000000000..35a9b844b Binary files /dev/null and b/public/terrain/17/214619/88511.terrain differ diff --git a/public/terrain/17/214619/88512.terrain b/public/terrain/17/214619/88512.terrain new file mode 100644 index 000000000..f6b1b5eab Binary files /dev/null and b/public/terrain/17/214619/88512.terrain differ diff --git a/public/terrain/17/214619/88513.terrain b/public/terrain/17/214619/88513.terrain new file mode 100644 index 000000000..65871c767 Binary files /dev/null and b/public/terrain/17/214619/88513.terrain differ diff --git a/public/terrain/17/214619/88514.terrain b/public/terrain/17/214619/88514.terrain new file mode 100644 index 000000000..3f561ab45 Binary files /dev/null and b/public/terrain/17/214619/88514.terrain differ diff --git a/public/terrain/17/214620/88435.terrain b/public/terrain/17/214620/88435.terrain new file mode 100644 index 000000000..7eb115055 Binary files /dev/null and b/public/terrain/17/214620/88435.terrain differ diff --git a/public/terrain/17/214620/88436.terrain b/public/terrain/17/214620/88436.terrain new file mode 100644 index 000000000..ab1c062ed Binary files /dev/null and b/public/terrain/17/214620/88436.terrain differ diff --git a/public/terrain/17/214620/88437.terrain b/public/terrain/17/214620/88437.terrain new file mode 100644 index 000000000..687524a4c Binary files /dev/null and b/public/terrain/17/214620/88437.terrain differ diff --git a/public/terrain/17/214620/88438.terrain b/public/terrain/17/214620/88438.terrain new file mode 100644 index 000000000..2afcb5fe8 Binary files /dev/null and b/public/terrain/17/214620/88438.terrain differ diff --git a/public/terrain/17/214620/88439.terrain b/public/terrain/17/214620/88439.terrain new file mode 100644 index 000000000..60866eef7 Binary files /dev/null and b/public/terrain/17/214620/88439.terrain differ diff --git a/public/terrain/17/214620/88440.terrain b/public/terrain/17/214620/88440.terrain new file mode 100644 index 000000000..ddcd8338b Binary files /dev/null and b/public/terrain/17/214620/88440.terrain differ diff --git a/public/terrain/17/214620/88441.terrain b/public/terrain/17/214620/88441.terrain new file mode 100644 index 000000000..2fe05e5cd Binary files /dev/null and b/public/terrain/17/214620/88441.terrain differ diff --git a/public/terrain/17/214620/88442.terrain b/public/terrain/17/214620/88442.terrain new file mode 100644 index 000000000..ed3f8432d Binary files /dev/null and b/public/terrain/17/214620/88442.terrain differ diff --git a/public/terrain/17/214620/88443.terrain b/public/terrain/17/214620/88443.terrain new file mode 100644 index 000000000..7b310d3d6 Binary files /dev/null and b/public/terrain/17/214620/88443.terrain differ diff --git a/public/terrain/17/214620/88444.terrain b/public/terrain/17/214620/88444.terrain new file mode 100644 index 000000000..36de62b9f Binary files /dev/null and b/public/terrain/17/214620/88444.terrain differ diff --git a/public/terrain/17/214620/88445.terrain b/public/terrain/17/214620/88445.terrain new file mode 100644 index 000000000..0a81ba4e8 Binary files /dev/null and b/public/terrain/17/214620/88445.terrain differ diff --git a/public/terrain/17/214620/88446.terrain b/public/terrain/17/214620/88446.terrain new file mode 100644 index 000000000..41bf2e6bc Binary files /dev/null and b/public/terrain/17/214620/88446.terrain differ diff --git a/public/terrain/17/214620/88447.terrain b/public/terrain/17/214620/88447.terrain new file mode 100644 index 000000000..cc4390ebe Binary files /dev/null and b/public/terrain/17/214620/88447.terrain differ diff --git a/public/terrain/17/214620/88448.terrain b/public/terrain/17/214620/88448.terrain new file mode 100644 index 000000000..19f6e715c Binary files /dev/null and b/public/terrain/17/214620/88448.terrain differ diff --git a/public/terrain/17/214620/88449.terrain b/public/terrain/17/214620/88449.terrain new file mode 100644 index 000000000..17283440d Binary files /dev/null and b/public/terrain/17/214620/88449.terrain differ diff --git a/public/terrain/17/214620/88450.terrain b/public/terrain/17/214620/88450.terrain new file mode 100644 index 000000000..b34dabc51 Binary files /dev/null and b/public/terrain/17/214620/88450.terrain differ diff --git a/public/terrain/17/214620/88451.terrain b/public/terrain/17/214620/88451.terrain new file mode 100644 index 000000000..b9236385a Binary files /dev/null and b/public/terrain/17/214620/88451.terrain differ diff --git a/public/terrain/17/214620/88452.terrain b/public/terrain/17/214620/88452.terrain new file mode 100644 index 000000000..35b51d8ba Binary files /dev/null and b/public/terrain/17/214620/88452.terrain differ diff --git a/public/terrain/17/214620/88453.terrain b/public/terrain/17/214620/88453.terrain new file mode 100644 index 000000000..96130e29d Binary files /dev/null and b/public/terrain/17/214620/88453.terrain differ diff --git a/public/terrain/17/214620/88454.terrain b/public/terrain/17/214620/88454.terrain new file mode 100644 index 000000000..514a1bf4b Binary files /dev/null and b/public/terrain/17/214620/88454.terrain differ diff --git a/public/terrain/17/214620/88455.terrain b/public/terrain/17/214620/88455.terrain new file mode 100644 index 000000000..0e0f1f8fd Binary files /dev/null and b/public/terrain/17/214620/88455.terrain differ diff --git a/public/terrain/17/214620/88456.terrain b/public/terrain/17/214620/88456.terrain new file mode 100644 index 000000000..3984f2799 Binary files /dev/null and b/public/terrain/17/214620/88456.terrain differ diff --git a/public/terrain/17/214620/88457.terrain b/public/terrain/17/214620/88457.terrain new file mode 100644 index 000000000..df0f99a1d Binary files /dev/null and b/public/terrain/17/214620/88457.terrain differ diff --git a/public/terrain/17/214620/88458.terrain b/public/terrain/17/214620/88458.terrain new file mode 100644 index 000000000..e5cf67c23 Binary files /dev/null and b/public/terrain/17/214620/88458.terrain differ diff --git a/public/terrain/17/214620/88459.terrain b/public/terrain/17/214620/88459.terrain new file mode 100644 index 000000000..299b2e5f8 Binary files /dev/null and b/public/terrain/17/214620/88459.terrain differ diff --git a/public/terrain/17/214620/88460.terrain b/public/terrain/17/214620/88460.terrain new file mode 100644 index 000000000..660f4c61d Binary files /dev/null and b/public/terrain/17/214620/88460.terrain differ diff --git a/public/terrain/17/214620/88461.terrain b/public/terrain/17/214620/88461.terrain new file mode 100644 index 000000000..9c6b4f0e6 Binary files /dev/null and b/public/terrain/17/214620/88461.terrain differ diff --git a/public/terrain/17/214620/88462.terrain b/public/terrain/17/214620/88462.terrain new file mode 100644 index 000000000..6566d0cde Binary files /dev/null and b/public/terrain/17/214620/88462.terrain differ diff --git a/public/terrain/17/214620/88463.terrain b/public/terrain/17/214620/88463.terrain new file mode 100644 index 000000000..54f24832f Binary files /dev/null and b/public/terrain/17/214620/88463.terrain differ diff --git a/public/terrain/17/214620/88464.terrain b/public/terrain/17/214620/88464.terrain new file mode 100644 index 000000000..8934c500b Binary files /dev/null and b/public/terrain/17/214620/88464.terrain differ diff --git a/public/terrain/17/214620/88465.terrain b/public/terrain/17/214620/88465.terrain new file mode 100644 index 000000000..fa5b04d06 Binary files /dev/null and b/public/terrain/17/214620/88465.terrain differ diff --git a/public/terrain/17/214620/88466.terrain b/public/terrain/17/214620/88466.terrain new file mode 100644 index 000000000..891e951ec Binary files /dev/null and b/public/terrain/17/214620/88466.terrain differ diff --git a/public/terrain/17/214620/88467.terrain b/public/terrain/17/214620/88467.terrain new file mode 100644 index 000000000..2d0021599 Binary files /dev/null and b/public/terrain/17/214620/88467.terrain differ diff --git a/public/terrain/17/214620/88468.terrain b/public/terrain/17/214620/88468.terrain new file mode 100644 index 000000000..658a30cb2 Binary files /dev/null and b/public/terrain/17/214620/88468.terrain differ diff --git a/public/terrain/17/214620/88469.terrain b/public/terrain/17/214620/88469.terrain new file mode 100644 index 000000000..9cf779965 Binary files /dev/null and b/public/terrain/17/214620/88469.terrain differ diff --git a/public/terrain/17/214620/88470.terrain b/public/terrain/17/214620/88470.terrain new file mode 100644 index 000000000..1e7c24e65 Binary files /dev/null and b/public/terrain/17/214620/88470.terrain differ diff --git a/public/terrain/17/214620/88471.terrain b/public/terrain/17/214620/88471.terrain new file mode 100644 index 000000000..247f3825a Binary files /dev/null and b/public/terrain/17/214620/88471.terrain differ diff --git a/public/terrain/17/214620/88472.terrain b/public/terrain/17/214620/88472.terrain new file mode 100644 index 000000000..d31196242 Binary files /dev/null and b/public/terrain/17/214620/88472.terrain differ diff --git a/public/terrain/17/214620/88473.terrain b/public/terrain/17/214620/88473.terrain new file mode 100644 index 000000000..f53f4d73d Binary files /dev/null and b/public/terrain/17/214620/88473.terrain differ diff --git a/public/terrain/17/214620/88474.terrain b/public/terrain/17/214620/88474.terrain new file mode 100644 index 000000000..2c8ea54d3 Binary files /dev/null and b/public/terrain/17/214620/88474.terrain differ diff --git a/public/terrain/17/214620/88475.terrain b/public/terrain/17/214620/88475.terrain new file mode 100644 index 000000000..302de80d4 Binary files /dev/null and b/public/terrain/17/214620/88475.terrain differ diff --git a/public/terrain/17/214620/88476.terrain b/public/terrain/17/214620/88476.terrain new file mode 100644 index 000000000..da104e9ef Binary files /dev/null and b/public/terrain/17/214620/88476.terrain differ diff --git a/public/terrain/17/214620/88477.terrain b/public/terrain/17/214620/88477.terrain new file mode 100644 index 000000000..1605e7135 Binary files /dev/null and b/public/terrain/17/214620/88477.terrain differ diff --git a/public/terrain/17/214620/88478.terrain b/public/terrain/17/214620/88478.terrain new file mode 100644 index 000000000..44e979f00 Binary files /dev/null and b/public/terrain/17/214620/88478.terrain differ diff --git a/public/terrain/17/214620/88479.terrain b/public/terrain/17/214620/88479.terrain new file mode 100644 index 000000000..f47554004 Binary files /dev/null and b/public/terrain/17/214620/88479.terrain differ diff --git a/public/terrain/17/214620/88480.terrain b/public/terrain/17/214620/88480.terrain new file mode 100644 index 000000000..4c2a36c58 Binary files /dev/null and b/public/terrain/17/214620/88480.terrain differ diff --git a/public/terrain/17/214620/88481.terrain b/public/terrain/17/214620/88481.terrain new file mode 100644 index 000000000..8ab67fdab Binary files /dev/null and b/public/terrain/17/214620/88481.terrain differ diff --git a/public/terrain/17/214620/88482.terrain b/public/terrain/17/214620/88482.terrain new file mode 100644 index 000000000..24dd1423c Binary files /dev/null and b/public/terrain/17/214620/88482.terrain differ diff --git a/public/terrain/17/214620/88483.terrain b/public/terrain/17/214620/88483.terrain new file mode 100644 index 000000000..026ad93b1 Binary files /dev/null and b/public/terrain/17/214620/88483.terrain differ diff --git a/public/terrain/17/214620/88484.terrain b/public/terrain/17/214620/88484.terrain new file mode 100644 index 000000000..7e2f8a24d Binary files /dev/null and b/public/terrain/17/214620/88484.terrain differ diff --git a/public/terrain/17/214620/88485.terrain b/public/terrain/17/214620/88485.terrain new file mode 100644 index 000000000..c38d485ff Binary files /dev/null and b/public/terrain/17/214620/88485.terrain differ diff --git a/public/terrain/17/214620/88486.terrain b/public/terrain/17/214620/88486.terrain new file mode 100644 index 000000000..a501e6241 Binary files /dev/null and b/public/terrain/17/214620/88486.terrain differ diff --git a/public/terrain/17/214620/88487.terrain b/public/terrain/17/214620/88487.terrain new file mode 100644 index 000000000..ee1c0cef8 Binary files /dev/null and b/public/terrain/17/214620/88487.terrain differ diff --git a/public/terrain/17/214620/88488.terrain b/public/terrain/17/214620/88488.terrain new file mode 100644 index 000000000..4a5756004 Binary files /dev/null and b/public/terrain/17/214620/88488.terrain differ diff --git a/public/terrain/17/214620/88489.terrain b/public/terrain/17/214620/88489.terrain new file mode 100644 index 000000000..37191d2e2 Binary files /dev/null and b/public/terrain/17/214620/88489.terrain differ diff --git a/public/terrain/17/214620/88490.terrain b/public/terrain/17/214620/88490.terrain new file mode 100644 index 000000000..a88ed989e Binary files /dev/null and b/public/terrain/17/214620/88490.terrain differ diff --git a/public/terrain/17/214620/88491.terrain b/public/terrain/17/214620/88491.terrain new file mode 100644 index 000000000..850f44de5 Binary files /dev/null and b/public/terrain/17/214620/88491.terrain differ diff --git a/public/terrain/17/214620/88492.terrain b/public/terrain/17/214620/88492.terrain new file mode 100644 index 000000000..411a830b9 Binary files /dev/null and b/public/terrain/17/214620/88492.terrain differ diff --git a/public/terrain/17/214620/88493.terrain b/public/terrain/17/214620/88493.terrain new file mode 100644 index 000000000..907749ca3 Binary files /dev/null and b/public/terrain/17/214620/88493.terrain differ diff --git a/public/terrain/17/214620/88494.terrain b/public/terrain/17/214620/88494.terrain new file mode 100644 index 000000000..6603acbf3 Binary files /dev/null and b/public/terrain/17/214620/88494.terrain differ diff --git a/public/terrain/17/214620/88495.terrain b/public/terrain/17/214620/88495.terrain new file mode 100644 index 000000000..2ac754fc0 Binary files /dev/null and b/public/terrain/17/214620/88495.terrain differ diff --git a/public/terrain/17/214620/88496.terrain b/public/terrain/17/214620/88496.terrain new file mode 100644 index 000000000..b0bdd8384 Binary files /dev/null and b/public/terrain/17/214620/88496.terrain differ diff --git a/public/terrain/17/214620/88497.terrain b/public/terrain/17/214620/88497.terrain new file mode 100644 index 000000000..f15fa629a Binary files /dev/null and b/public/terrain/17/214620/88497.terrain differ diff --git a/public/terrain/17/214620/88498.terrain b/public/terrain/17/214620/88498.terrain new file mode 100644 index 000000000..a43ae6f72 Binary files /dev/null and b/public/terrain/17/214620/88498.terrain differ diff --git a/public/terrain/17/214620/88499.terrain b/public/terrain/17/214620/88499.terrain new file mode 100644 index 000000000..361413479 Binary files /dev/null and b/public/terrain/17/214620/88499.terrain differ diff --git a/public/terrain/17/214620/88500.terrain b/public/terrain/17/214620/88500.terrain new file mode 100644 index 000000000..e851058e1 Binary files /dev/null and b/public/terrain/17/214620/88500.terrain differ diff --git a/public/terrain/17/214620/88501.terrain b/public/terrain/17/214620/88501.terrain new file mode 100644 index 000000000..6727dbe40 Binary files /dev/null and b/public/terrain/17/214620/88501.terrain differ diff --git a/public/terrain/17/214620/88502.terrain b/public/terrain/17/214620/88502.terrain new file mode 100644 index 000000000..ac4fa06ce Binary files /dev/null and b/public/terrain/17/214620/88502.terrain differ diff --git a/public/terrain/17/214620/88503.terrain b/public/terrain/17/214620/88503.terrain new file mode 100644 index 000000000..c7f6ce66c Binary files /dev/null and b/public/terrain/17/214620/88503.terrain differ diff --git a/public/terrain/17/214620/88504.terrain b/public/terrain/17/214620/88504.terrain new file mode 100644 index 000000000..547c036b8 Binary files /dev/null and b/public/terrain/17/214620/88504.terrain differ diff --git a/public/terrain/17/214620/88505.terrain b/public/terrain/17/214620/88505.terrain new file mode 100644 index 000000000..e191b393b Binary files /dev/null and b/public/terrain/17/214620/88505.terrain differ diff --git a/public/terrain/17/214620/88506.terrain b/public/terrain/17/214620/88506.terrain new file mode 100644 index 000000000..78a27e12d Binary files /dev/null and b/public/terrain/17/214620/88506.terrain differ diff --git a/public/terrain/17/214620/88507.terrain b/public/terrain/17/214620/88507.terrain new file mode 100644 index 000000000..b05983db2 Binary files /dev/null and b/public/terrain/17/214620/88507.terrain differ diff --git a/public/terrain/17/214620/88508.terrain b/public/terrain/17/214620/88508.terrain new file mode 100644 index 000000000..a171a20f4 Binary files /dev/null and b/public/terrain/17/214620/88508.terrain differ diff --git a/public/terrain/17/214620/88509.terrain b/public/terrain/17/214620/88509.terrain new file mode 100644 index 000000000..5906ca421 Binary files /dev/null and b/public/terrain/17/214620/88509.terrain differ diff --git a/public/terrain/17/214620/88510.terrain b/public/terrain/17/214620/88510.terrain new file mode 100644 index 000000000..01ef71ddb Binary files /dev/null and b/public/terrain/17/214620/88510.terrain differ diff --git a/public/terrain/17/214620/88511.terrain b/public/terrain/17/214620/88511.terrain new file mode 100644 index 000000000..ea8ec1daf Binary files /dev/null and b/public/terrain/17/214620/88511.terrain differ diff --git a/public/terrain/17/214620/88512.terrain b/public/terrain/17/214620/88512.terrain new file mode 100644 index 000000000..6c5190192 Binary files /dev/null and b/public/terrain/17/214620/88512.terrain differ diff --git a/public/terrain/17/214620/88513.terrain b/public/terrain/17/214620/88513.terrain new file mode 100644 index 000000000..9df276c1e Binary files /dev/null and b/public/terrain/17/214620/88513.terrain differ diff --git a/public/terrain/17/214620/88514.terrain b/public/terrain/17/214620/88514.terrain new file mode 100644 index 000000000..2a6b20c01 Binary files /dev/null and b/public/terrain/17/214620/88514.terrain differ diff --git a/public/terrain/17/214621/88435.terrain b/public/terrain/17/214621/88435.terrain new file mode 100644 index 000000000..e13fe05c6 Binary files /dev/null and b/public/terrain/17/214621/88435.terrain differ diff --git a/public/terrain/17/214621/88436.terrain b/public/terrain/17/214621/88436.terrain new file mode 100644 index 000000000..73d3dec7d Binary files /dev/null and b/public/terrain/17/214621/88436.terrain differ diff --git a/public/terrain/17/214621/88437.terrain b/public/terrain/17/214621/88437.terrain new file mode 100644 index 000000000..2dab12f06 Binary files /dev/null and b/public/terrain/17/214621/88437.terrain differ diff --git a/public/terrain/17/214621/88438.terrain b/public/terrain/17/214621/88438.terrain new file mode 100644 index 000000000..f7d64e828 Binary files /dev/null and b/public/terrain/17/214621/88438.terrain differ diff --git a/public/terrain/17/214621/88439.terrain b/public/terrain/17/214621/88439.terrain new file mode 100644 index 000000000..b84f94efa Binary files /dev/null and b/public/terrain/17/214621/88439.terrain differ diff --git a/public/terrain/17/214621/88440.terrain b/public/terrain/17/214621/88440.terrain new file mode 100644 index 000000000..5b1adcf5a Binary files /dev/null and b/public/terrain/17/214621/88440.terrain differ diff --git a/public/terrain/17/214621/88441.terrain b/public/terrain/17/214621/88441.terrain new file mode 100644 index 000000000..a897b635a Binary files /dev/null and b/public/terrain/17/214621/88441.terrain differ diff --git a/public/terrain/17/214621/88442.terrain b/public/terrain/17/214621/88442.terrain new file mode 100644 index 000000000..0ec11d9d0 Binary files /dev/null and b/public/terrain/17/214621/88442.terrain differ diff --git a/public/terrain/17/214621/88443.terrain b/public/terrain/17/214621/88443.terrain new file mode 100644 index 000000000..eeaf17f6a Binary files /dev/null and b/public/terrain/17/214621/88443.terrain differ diff --git a/public/terrain/17/214621/88444.terrain b/public/terrain/17/214621/88444.terrain new file mode 100644 index 000000000..bcd7604ce Binary files /dev/null and b/public/terrain/17/214621/88444.terrain differ diff --git a/public/terrain/17/214621/88445.terrain b/public/terrain/17/214621/88445.terrain new file mode 100644 index 000000000..d9661c1ff Binary files /dev/null and b/public/terrain/17/214621/88445.terrain differ diff --git a/public/terrain/17/214621/88446.terrain b/public/terrain/17/214621/88446.terrain new file mode 100644 index 000000000..4863b264e Binary files /dev/null and b/public/terrain/17/214621/88446.terrain differ diff --git a/public/terrain/17/214621/88447.terrain b/public/terrain/17/214621/88447.terrain new file mode 100644 index 000000000..18981b4d2 Binary files /dev/null and b/public/terrain/17/214621/88447.terrain differ diff --git a/public/terrain/17/214621/88448.terrain b/public/terrain/17/214621/88448.terrain new file mode 100644 index 000000000..ecc0e6fb4 Binary files /dev/null and b/public/terrain/17/214621/88448.terrain differ diff --git a/public/terrain/17/214621/88449.terrain b/public/terrain/17/214621/88449.terrain new file mode 100644 index 000000000..77b344e55 Binary files /dev/null and b/public/terrain/17/214621/88449.terrain differ diff --git a/public/terrain/17/214621/88450.terrain b/public/terrain/17/214621/88450.terrain new file mode 100644 index 000000000..94b78c9b2 Binary files /dev/null and b/public/terrain/17/214621/88450.terrain differ diff --git a/public/terrain/17/214621/88451.terrain b/public/terrain/17/214621/88451.terrain new file mode 100644 index 000000000..4b06fe724 Binary files /dev/null and b/public/terrain/17/214621/88451.terrain differ diff --git a/public/terrain/17/214621/88452.terrain b/public/terrain/17/214621/88452.terrain new file mode 100644 index 000000000..28f9050e3 Binary files /dev/null and b/public/terrain/17/214621/88452.terrain differ diff --git a/public/terrain/17/214621/88453.terrain b/public/terrain/17/214621/88453.terrain new file mode 100644 index 000000000..0f63b3253 Binary files /dev/null and b/public/terrain/17/214621/88453.terrain differ diff --git a/public/terrain/17/214621/88454.terrain b/public/terrain/17/214621/88454.terrain new file mode 100644 index 000000000..8b1c2a4a7 Binary files /dev/null and b/public/terrain/17/214621/88454.terrain differ diff --git a/public/terrain/17/214621/88455.terrain b/public/terrain/17/214621/88455.terrain new file mode 100644 index 000000000..7cb5bfc6c Binary files /dev/null and b/public/terrain/17/214621/88455.terrain differ diff --git a/public/terrain/17/214621/88456.terrain b/public/terrain/17/214621/88456.terrain new file mode 100644 index 000000000..5803661dd Binary files /dev/null and b/public/terrain/17/214621/88456.terrain differ diff --git a/public/terrain/17/214621/88457.terrain b/public/terrain/17/214621/88457.terrain new file mode 100644 index 000000000..7b82654dd Binary files /dev/null and b/public/terrain/17/214621/88457.terrain differ diff --git a/public/terrain/17/214621/88458.terrain b/public/terrain/17/214621/88458.terrain new file mode 100644 index 000000000..2bec74880 Binary files /dev/null and b/public/terrain/17/214621/88458.terrain differ diff --git a/public/terrain/17/214621/88459.terrain b/public/terrain/17/214621/88459.terrain new file mode 100644 index 000000000..c4eeec013 Binary files /dev/null and b/public/terrain/17/214621/88459.terrain differ diff --git a/public/terrain/17/214621/88460.terrain b/public/terrain/17/214621/88460.terrain new file mode 100644 index 000000000..26abef7de Binary files /dev/null and b/public/terrain/17/214621/88460.terrain differ diff --git a/public/terrain/17/214621/88461.terrain b/public/terrain/17/214621/88461.terrain new file mode 100644 index 000000000..5855dee8c Binary files /dev/null and b/public/terrain/17/214621/88461.terrain differ diff --git a/public/terrain/17/214621/88462.terrain b/public/terrain/17/214621/88462.terrain new file mode 100644 index 000000000..20a7f1ca2 Binary files /dev/null and b/public/terrain/17/214621/88462.terrain differ diff --git a/public/terrain/17/214621/88463.terrain b/public/terrain/17/214621/88463.terrain new file mode 100644 index 000000000..afe647c8c Binary files /dev/null and b/public/terrain/17/214621/88463.terrain differ diff --git a/public/terrain/17/214621/88464.terrain b/public/terrain/17/214621/88464.terrain new file mode 100644 index 000000000..e7d6262f5 Binary files /dev/null and b/public/terrain/17/214621/88464.terrain differ diff --git a/public/terrain/17/214621/88465.terrain b/public/terrain/17/214621/88465.terrain new file mode 100644 index 000000000..ef2e946df Binary files /dev/null and b/public/terrain/17/214621/88465.terrain differ diff --git a/public/terrain/17/214621/88466.terrain b/public/terrain/17/214621/88466.terrain new file mode 100644 index 000000000..23f84662c Binary files /dev/null and b/public/terrain/17/214621/88466.terrain differ diff --git a/public/terrain/17/214621/88467.terrain b/public/terrain/17/214621/88467.terrain new file mode 100644 index 000000000..d3b86064b Binary files /dev/null and b/public/terrain/17/214621/88467.terrain differ diff --git a/public/terrain/17/214621/88468.terrain b/public/terrain/17/214621/88468.terrain new file mode 100644 index 000000000..465724ab5 Binary files /dev/null and b/public/terrain/17/214621/88468.terrain differ diff --git a/public/terrain/17/214621/88469.terrain b/public/terrain/17/214621/88469.terrain new file mode 100644 index 000000000..9e7a8c926 Binary files /dev/null and b/public/terrain/17/214621/88469.terrain differ diff --git a/public/terrain/17/214621/88470.terrain b/public/terrain/17/214621/88470.terrain new file mode 100644 index 000000000..8c4def227 Binary files /dev/null and b/public/terrain/17/214621/88470.terrain differ diff --git a/public/terrain/17/214621/88471.terrain b/public/terrain/17/214621/88471.terrain new file mode 100644 index 000000000..e471246ee Binary files /dev/null and b/public/terrain/17/214621/88471.terrain differ diff --git a/public/terrain/17/214621/88472.terrain b/public/terrain/17/214621/88472.terrain new file mode 100644 index 000000000..57e7084a6 Binary files /dev/null and b/public/terrain/17/214621/88472.terrain differ diff --git a/public/terrain/17/214621/88473.terrain b/public/terrain/17/214621/88473.terrain new file mode 100644 index 000000000..875c8dedf Binary files /dev/null and b/public/terrain/17/214621/88473.terrain differ diff --git a/public/terrain/17/214621/88474.terrain b/public/terrain/17/214621/88474.terrain new file mode 100644 index 000000000..89588fdf3 Binary files /dev/null and b/public/terrain/17/214621/88474.terrain differ diff --git a/public/terrain/17/214621/88475.terrain b/public/terrain/17/214621/88475.terrain new file mode 100644 index 000000000..63d0d9f11 Binary files /dev/null and b/public/terrain/17/214621/88475.terrain differ diff --git a/public/terrain/17/214621/88476.terrain b/public/terrain/17/214621/88476.terrain new file mode 100644 index 000000000..b39f7f342 Binary files /dev/null and b/public/terrain/17/214621/88476.terrain differ diff --git a/public/terrain/17/214621/88477.terrain b/public/terrain/17/214621/88477.terrain new file mode 100644 index 000000000..0a7a5a76f Binary files /dev/null and b/public/terrain/17/214621/88477.terrain differ diff --git a/public/terrain/17/214621/88478.terrain b/public/terrain/17/214621/88478.terrain new file mode 100644 index 000000000..f30e8745f Binary files /dev/null and b/public/terrain/17/214621/88478.terrain differ diff --git a/public/terrain/17/214621/88479.terrain b/public/terrain/17/214621/88479.terrain new file mode 100644 index 000000000..8065d01df Binary files /dev/null and b/public/terrain/17/214621/88479.terrain differ diff --git a/public/terrain/17/214621/88480.terrain b/public/terrain/17/214621/88480.terrain new file mode 100644 index 000000000..f06b92111 Binary files /dev/null and b/public/terrain/17/214621/88480.terrain differ diff --git a/public/terrain/17/214621/88481.terrain b/public/terrain/17/214621/88481.terrain new file mode 100644 index 000000000..4dbbcc4d7 Binary files /dev/null and b/public/terrain/17/214621/88481.terrain differ diff --git a/public/terrain/17/214621/88482.terrain b/public/terrain/17/214621/88482.terrain new file mode 100644 index 000000000..0589f556e Binary files /dev/null and b/public/terrain/17/214621/88482.terrain differ diff --git a/public/terrain/17/214621/88483.terrain b/public/terrain/17/214621/88483.terrain new file mode 100644 index 000000000..3e199144c Binary files /dev/null and b/public/terrain/17/214621/88483.terrain differ diff --git a/public/terrain/17/214621/88484.terrain b/public/terrain/17/214621/88484.terrain new file mode 100644 index 000000000..091665b56 Binary files /dev/null and b/public/terrain/17/214621/88484.terrain differ diff --git a/public/terrain/17/214621/88485.terrain b/public/terrain/17/214621/88485.terrain new file mode 100644 index 000000000..09b8af841 Binary files /dev/null and b/public/terrain/17/214621/88485.terrain differ diff --git a/public/terrain/17/214621/88486.terrain b/public/terrain/17/214621/88486.terrain new file mode 100644 index 000000000..8b865e573 Binary files /dev/null and b/public/terrain/17/214621/88486.terrain differ diff --git a/public/terrain/17/214621/88487.terrain b/public/terrain/17/214621/88487.terrain new file mode 100644 index 000000000..6f5bfa01e Binary files /dev/null and b/public/terrain/17/214621/88487.terrain differ diff --git a/public/terrain/17/214621/88488.terrain b/public/terrain/17/214621/88488.terrain new file mode 100644 index 000000000..be3ff527a Binary files /dev/null and b/public/terrain/17/214621/88488.terrain differ diff --git a/public/terrain/17/214621/88489.terrain b/public/terrain/17/214621/88489.terrain new file mode 100644 index 000000000..82bbd1c4b Binary files /dev/null and b/public/terrain/17/214621/88489.terrain differ diff --git a/public/terrain/17/214621/88490.terrain b/public/terrain/17/214621/88490.terrain new file mode 100644 index 000000000..1d64d45f7 Binary files /dev/null and b/public/terrain/17/214621/88490.terrain differ diff --git a/public/terrain/17/214621/88491.terrain b/public/terrain/17/214621/88491.terrain new file mode 100644 index 000000000..7f52f7c50 Binary files /dev/null and b/public/terrain/17/214621/88491.terrain differ diff --git a/public/terrain/17/214621/88492.terrain b/public/terrain/17/214621/88492.terrain new file mode 100644 index 000000000..0b538c3bd Binary files /dev/null and b/public/terrain/17/214621/88492.terrain differ diff --git a/public/terrain/17/214621/88493.terrain b/public/terrain/17/214621/88493.terrain new file mode 100644 index 000000000..30a152ac9 Binary files /dev/null and b/public/terrain/17/214621/88493.terrain differ diff --git a/public/terrain/17/214621/88494.terrain b/public/terrain/17/214621/88494.terrain new file mode 100644 index 000000000..884437d19 Binary files /dev/null and b/public/terrain/17/214621/88494.terrain differ diff --git a/public/terrain/17/214621/88495.terrain b/public/terrain/17/214621/88495.terrain new file mode 100644 index 000000000..f673678d2 Binary files /dev/null and b/public/terrain/17/214621/88495.terrain differ diff --git a/public/terrain/17/214621/88496.terrain b/public/terrain/17/214621/88496.terrain new file mode 100644 index 000000000..2ae560b0e Binary files /dev/null and b/public/terrain/17/214621/88496.terrain differ diff --git a/public/terrain/17/214621/88497.terrain b/public/terrain/17/214621/88497.terrain new file mode 100644 index 000000000..0d0c9b560 Binary files /dev/null and b/public/terrain/17/214621/88497.terrain differ diff --git a/public/terrain/17/214621/88498.terrain b/public/terrain/17/214621/88498.terrain new file mode 100644 index 000000000..f79f1c16b Binary files /dev/null and b/public/terrain/17/214621/88498.terrain differ diff --git a/public/terrain/17/214621/88499.terrain b/public/terrain/17/214621/88499.terrain new file mode 100644 index 000000000..2b247b6b8 Binary files /dev/null and b/public/terrain/17/214621/88499.terrain differ diff --git a/public/terrain/17/214621/88500.terrain b/public/terrain/17/214621/88500.terrain new file mode 100644 index 000000000..a32178205 Binary files /dev/null and b/public/terrain/17/214621/88500.terrain differ diff --git a/public/terrain/17/214621/88501.terrain b/public/terrain/17/214621/88501.terrain new file mode 100644 index 000000000..20bb705de Binary files /dev/null and b/public/terrain/17/214621/88501.terrain differ diff --git a/public/terrain/17/214621/88502.terrain b/public/terrain/17/214621/88502.terrain new file mode 100644 index 000000000..30ab97c2a Binary files /dev/null and b/public/terrain/17/214621/88502.terrain differ diff --git a/public/terrain/17/214621/88503.terrain b/public/terrain/17/214621/88503.terrain new file mode 100644 index 000000000..9dcc7da73 Binary files /dev/null and b/public/terrain/17/214621/88503.terrain differ diff --git a/public/terrain/17/214621/88504.terrain b/public/terrain/17/214621/88504.terrain new file mode 100644 index 000000000..8c58b173b Binary files /dev/null and b/public/terrain/17/214621/88504.terrain differ diff --git a/public/terrain/17/214621/88505.terrain b/public/terrain/17/214621/88505.terrain new file mode 100644 index 000000000..a20242046 Binary files /dev/null and b/public/terrain/17/214621/88505.terrain differ diff --git a/public/terrain/17/214621/88506.terrain b/public/terrain/17/214621/88506.terrain new file mode 100644 index 000000000..b72f81e82 Binary files /dev/null and b/public/terrain/17/214621/88506.terrain differ diff --git a/public/terrain/17/214621/88507.terrain b/public/terrain/17/214621/88507.terrain new file mode 100644 index 000000000..7cfd2040a Binary files /dev/null and b/public/terrain/17/214621/88507.terrain differ diff --git a/public/terrain/17/214621/88508.terrain b/public/terrain/17/214621/88508.terrain new file mode 100644 index 000000000..0c6c97b8d Binary files /dev/null and b/public/terrain/17/214621/88508.terrain differ diff --git a/public/terrain/17/214621/88509.terrain b/public/terrain/17/214621/88509.terrain new file mode 100644 index 000000000..e94edefe5 Binary files /dev/null and b/public/terrain/17/214621/88509.terrain differ diff --git a/public/terrain/17/214621/88510.terrain b/public/terrain/17/214621/88510.terrain new file mode 100644 index 000000000..97bff83c1 Binary files /dev/null and b/public/terrain/17/214621/88510.terrain differ diff --git a/public/terrain/17/214621/88511.terrain b/public/terrain/17/214621/88511.terrain new file mode 100644 index 000000000..d7b61e50d Binary files /dev/null and b/public/terrain/17/214621/88511.terrain differ diff --git a/public/terrain/17/214621/88512.terrain b/public/terrain/17/214621/88512.terrain new file mode 100644 index 000000000..706be0cbf Binary files /dev/null and b/public/terrain/17/214621/88512.terrain differ diff --git a/public/terrain/17/214621/88513.terrain b/public/terrain/17/214621/88513.terrain new file mode 100644 index 000000000..aba21a995 Binary files /dev/null and b/public/terrain/17/214621/88513.terrain differ diff --git a/public/terrain/17/214621/88514.terrain b/public/terrain/17/214621/88514.terrain new file mode 100644 index 000000000..02c0b1fd6 Binary files /dev/null and b/public/terrain/17/214621/88514.terrain differ diff --git a/public/terrain/17/214622/88435.terrain b/public/terrain/17/214622/88435.terrain new file mode 100644 index 000000000..d9f8e4def Binary files /dev/null and b/public/terrain/17/214622/88435.terrain differ diff --git a/public/terrain/17/214622/88436.terrain b/public/terrain/17/214622/88436.terrain new file mode 100644 index 000000000..4ebbaa229 Binary files /dev/null and b/public/terrain/17/214622/88436.terrain differ diff --git a/public/terrain/17/214622/88437.terrain b/public/terrain/17/214622/88437.terrain new file mode 100644 index 000000000..da7ceff60 Binary files /dev/null and b/public/terrain/17/214622/88437.terrain differ diff --git a/public/terrain/17/214622/88438.terrain b/public/terrain/17/214622/88438.terrain new file mode 100644 index 000000000..b814c6e1b Binary files /dev/null and b/public/terrain/17/214622/88438.terrain differ diff --git a/public/terrain/17/214622/88439.terrain b/public/terrain/17/214622/88439.terrain new file mode 100644 index 000000000..9bb788e62 Binary files /dev/null and b/public/terrain/17/214622/88439.terrain differ diff --git a/public/terrain/17/214622/88440.terrain b/public/terrain/17/214622/88440.terrain new file mode 100644 index 000000000..50e4291ff Binary files /dev/null and b/public/terrain/17/214622/88440.terrain differ diff --git a/public/terrain/17/214622/88441.terrain b/public/terrain/17/214622/88441.terrain new file mode 100644 index 000000000..e897840c1 Binary files /dev/null and b/public/terrain/17/214622/88441.terrain differ diff --git a/public/terrain/17/214622/88442.terrain b/public/terrain/17/214622/88442.terrain new file mode 100644 index 000000000..367dda376 Binary files /dev/null and b/public/terrain/17/214622/88442.terrain differ diff --git a/public/terrain/17/214622/88443.terrain b/public/terrain/17/214622/88443.terrain new file mode 100644 index 000000000..dbf305d43 Binary files /dev/null and b/public/terrain/17/214622/88443.terrain differ diff --git a/public/terrain/17/214622/88444.terrain b/public/terrain/17/214622/88444.terrain new file mode 100644 index 000000000..4e7698d2c Binary files /dev/null and b/public/terrain/17/214622/88444.terrain differ diff --git a/public/terrain/17/214622/88445.terrain b/public/terrain/17/214622/88445.terrain new file mode 100644 index 000000000..dda3a88d1 Binary files /dev/null and b/public/terrain/17/214622/88445.terrain differ diff --git a/public/terrain/17/214622/88446.terrain b/public/terrain/17/214622/88446.terrain new file mode 100644 index 000000000..f6b7ed8a1 Binary files /dev/null and b/public/terrain/17/214622/88446.terrain differ diff --git a/public/terrain/17/214622/88447.terrain b/public/terrain/17/214622/88447.terrain new file mode 100644 index 000000000..de17bf395 Binary files /dev/null and b/public/terrain/17/214622/88447.terrain differ diff --git a/public/terrain/17/214622/88448.terrain b/public/terrain/17/214622/88448.terrain new file mode 100644 index 000000000..0897d73f3 Binary files /dev/null and b/public/terrain/17/214622/88448.terrain differ diff --git a/public/terrain/17/214622/88449.terrain b/public/terrain/17/214622/88449.terrain new file mode 100644 index 000000000..eddc7dc57 Binary files /dev/null and b/public/terrain/17/214622/88449.terrain differ diff --git a/public/terrain/17/214622/88450.terrain b/public/terrain/17/214622/88450.terrain new file mode 100644 index 000000000..eb343a99d Binary files /dev/null and b/public/terrain/17/214622/88450.terrain differ diff --git a/public/terrain/17/214622/88451.terrain b/public/terrain/17/214622/88451.terrain new file mode 100644 index 000000000..eb7848753 Binary files /dev/null and b/public/terrain/17/214622/88451.terrain differ diff --git a/public/terrain/17/214622/88452.terrain b/public/terrain/17/214622/88452.terrain new file mode 100644 index 000000000..5f70bf042 Binary files /dev/null and b/public/terrain/17/214622/88452.terrain differ diff --git a/public/terrain/17/214622/88453.terrain b/public/terrain/17/214622/88453.terrain new file mode 100644 index 000000000..574d051be Binary files /dev/null and b/public/terrain/17/214622/88453.terrain differ diff --git a/public/terrain/17/214622/88454.terrain b/public/terrain/17/214622/88454.terrain new file mode 100644 index 000000000..76e9b4de0 Binary files /dev/null and b/public/terrain/17/214622/88454.terrain differ diff --git a/public/terrain/17/214622/88455.terrain b/public/terrain/17/214622/88455.terrain new file mode 100644 index 000000000..a77e2fb12 Binary files /dev/null and b/public/terrain/17/214622/88455.terrain differ diff --git a/public/terrain/17/214622/88456.terrain b/public/terrain/17/214622/88456.terrain new file mode 100644 index 000000000..787732dbe Binary files /dev/null and b/public/terrain/17/214622/88456.terrain differ diff --git a/public/terrain/17/214622/88457.terrain b/public/terrain/17/214622/88457.terrain new file mode 100644 index 000000000..b27fcbb9f Binary files /dev/null and b/public/terrain/17/214622/88457.terrain differ diff --git a/public/terrain/17/214622/88458.terrain b/public/terrain/17/214622/88458.terrain new file mode 100644 index 000000000..d672cc70d Binary files /dev/null and b/public/terrain/17/214622/88458.terrain differ diff --git a/public/terrain/17/214622/88459.terrain b/public/terrain/17/214622/88459.terrain new file mode 100644 index 000000000..8054470ae Binary files /dev/null and b/public/terrain/17/214622/88459.terrain differ diff --git a/public/terrain/17/214622/88460.terrain b/public/terrain/17/214622/88460.terrain new file mode 100644 index 000000000..c26a4a066 Binary files /dev/null and b/public/terrain/17/214622/88460.terrain differ diff --git a/public/terrain/17/214622/88461.terrain b/public/terrain/17/214622/88461.terrain new file mode 100644 index 000000000..20ee313e3 Binary files /dev/null and b/public/terrain/17/214622/88461.terrain differ diff --git a/public/terrain/17/214622/88462.terrain b/public/terrain/17/214622/88462.terrain new file mode 100644 index 000000000..e2a56eb0e Binary files /dev/null and b/public/terrain/17/214622/88462.terrain differ diff --git a/public/terrain/17/214622/88463.terrain b/public/terrain/17/214622/88463.terrain new file mode 100644 index 000000000..c950dfa95 Binary files /dev/null and b/public/terrain/17/214622/88463.terrain differ diff --git a/public/terrain/17/214622/88464.terrain b/public/terrain/17/214622/88464.terrain new file mode 100644 index 000000000..4cce8c81b Binary files /dev/null and b/public/terrain/17/214622/88464.terrain differ diff --git a/public/terrain/17/214622/88465.terrain b/public/terrain/17/214622/88465.terrain new file mode 100644 index 000000000..3592bfb7a Binary files /dev/null and b/public/terrain/17/214622/88465.terrain differ diff --git a/public/terrain/17/214622/88466.terrain b/public/terrain/17/214622/88466.terrain new file mode 100644 index 000000000..87c6bf5d1 Binary files /dev/null and b/public/terrain/17/214622/88466.terrain differ diff --git a/public/terrain/17/214622/88467.terrain b/public/terrain/17/214622/88467.terrain new file mode 100644 index 000000000..22b0ae051 Binary files /dev/null and b/public/terrain/17/214622/88467.terrain differ diff --git a/public/terrain/17/214622/88468.terrain b/public/terrain/17/214622/88468.terrain new file mode 100644 index 000000000..707b91c09 Binary files /dev/null and b/public/terrain/17/214622/88468.terrain differ diff --git a/public/terrain/17/214622/88469.terrain b/public/terrain/17/214622/88469.terrain new file mode 100644 index 000000000..6ef3dfb98 Binary files /dev/null and b/public/terrain/17/214622/88469.terrain differ diff --git a/public/terrain/17/214622/88470.terrain b/public/terrain/17/214622/88470.terrain new file mode 100644 index 000000000..319590155 Binary files /dev/null and b/public/terrain/17/214622/88470.terrain differ diff --git a/public/terrain/17/214622/88471.terrain b/public/terrain/17/214622/88471.terrain new file mode 100644 index 000000000..d3f5f0cf3 Binary files /dev/null and b/public/terrain/17/214622/88471.terrain differ diff --git a/public/terrain/17/214622/88472.terrain b/public/terrain/17/214622/88472.terrain new file mode 100644 index 000000000..04a120499 Binary files /dev/null and b/public/terrain/17/214622/88472.terrain differ diff --git a/public/terrain/17/214622/88473.terrain b/public/terrain/17/214622/88473.terrain new file mode 100644 index 000000000..a0c05603d Binary files /dev/null and b/public/terrain/17/214622/88473.terrain differ diff --git a/public/terrain/17/214622/88474.terrain b/public/terrain/17/214622/88474.terrain new file mode 100644 index 000000000..678e2799e Binary files /dev/null and b/public/terrain/17/214622/88474.terrain differ diff --git a/public/terrain/17/214622/88475.terrain b/public/terrain/17/214622/88475.terrain new file mode 100644 index 000000000..649eb0582 Binary files /dev/null and b/public/terrain/17/214622/88475.terrain differ diff --git a/public/terrain/17/214622/88476.terrain b/public/terrain/17/214622/88476.terrain new file mode 100644 index 000000000..6f5a817a9 Binary files /dev/null and b/public/terrain/17/214622/88476.terrain differ diff --git a/public/terrain/17/214622/88477.terrain b/public/terrain/17/214622/88477.terrain new file mode 100644 index 000000000..3bd683dd6 Binary files /dev/null and b/public/terrain/17/214622/88477.terrain differ diff --git a/public/terrain/17/214622/88478.terrain b/public/terrain/17/214622/88478.terrain new file mode 100644 index 000000000..a1e9ad2a2 Binary files /dev/null and b/public/terrain/17/214622/88478.terrain differ diff --git a/public/terrain/17/214622/88479.terrain b/public/terrain/17/214622/88479.terrain new file mode 100644 index 000000000..b7f52a41b Binary files /dev/null and b/public/terrain/17/214622/88479.terrain differ diff --git a/public/terrain/17/214622/88480.terrain b/public/terrain/17/214622/88480.terrain new file mode 100644 index 000000000..f56224126 Binary files /dev/null and b/public/terrain/17/214622/88480.terrain differ diff --git a/public/terrain/17/214622/88481.terrain b/public/terrain/17/214622/88481.terrain new file mode 100644 index 000000000..4d0059be5 Binary files /dev/null and b/public/terrain/17/214622/88481.terrain differ diff --git a/public/terrain/17/214622/88482.terrain b/public/terrain/17/214622/88482.terrain new file mode 100644 index 000000000..56d544309 Binary files /dev/null and b/public/terrain/17/214622/88482.terrain differ diff --git a/public/terrain/17/214622/88483.terrain b/public/terrain/17/214622/88483.terrain new file mode 100644 index 000000000..c0cfb11bc Binary files /dev/null and b/public/terrain/17/214622/88483.terrain differ diff --git a/public/terrain/17/214622/88484.terrain b/public/terrain/17/214622/88484.terrain new file mode 100644 index 000000000..9ed8de092 Binary files /dev/null and b/public/terrain/17/214622/88484.terrain differ diff --git a/public/terrain/17/214622/88485.terrain b/public/terrain/17/214622/88485.terrain new file mode 100644 index 000000000..7a91ce5e8 Binary files /dev/null and b/public/terrain/17/214622/88485.terrain differ diff --git a/public/terrain/17/214622/88486.terrain b/public/terrain/17/214622/88486.terrain new file mode 100644 index 000000000..01ddcf5f1 Binary files /dev/null and b/public/terrain/17/214622/88486.terrain differ diff --git a/public/terrain/17/214622/88487.terrain b/public/terrain/17/214622/88487.terrain new file mode 100644 index 000000000..f8d726193 Binary files /dev/null and b/public/terrain/17/214622/88487.terrain differ diff --git a/public/terrain/17/214622/88488.terrain b/public/terrain/17/214622/88488.terrain new file mode 100644 index 000000000..c446906e7 Binary files /dev/null and b/public/terrain/17/214622/88488.terrain differ diff --git a/public/terrain/17/214622/88489.terrain b/public/terrain/17/214622/88489.terrain new file mode 100644 index 000000000..c0dfc6346 Binary files /dev/null and b/public/terrain/17/214622/88489.terrain differ diff --git a/public/terrain/17/214622/88490.terrain b/public/terrain/17/214622/88490.terrain new file mode 100644 index 000000000..0657a4526 Binary files /dev/null and b/public/terrain/17/214622/88490.terrain differ diff --git a/public/terrain/17/214622/88491.terrain b/public/terrain/17/214622/88491.terrain new file mode 100644 index 000000000..bfd6896dc Binary files /dev/null and b/public/terrain/17/214622/88491.terrain differ diff --git a/public/terrain/17/214622/88492.terrain b/public/terrain/17/214622/88492.terrain new file mode 100644 index 000000000..c59cb9a79 Binary files /dev/null and b/public/terrain/17/214622/88492.terrain differ diff --git a/public/terrain/17/214622/88493.terrain b/public/terrain/17/214622/88493.terrain new file mode 100644 index 000000000..836c9b038 Binary files /dev/null and b/public/terrain/17/214622/88493.terrain differ diff --git a/public/terrain/17/214622/88494.terrain b/public/terrain/17/214622/88494.terrain new file mode 100644 index 000000000..e58fabf4b Binary files /dev/null and b/public/terrain/17/214622/88494.terrain differ diff --git a/public/terrain/17/214622/88495.terrain b/public/terrain/17/214622/88495.terrain new file mode 100644 index 000000000..fbfeb7489 Binary files /dev/null and b/public/terrain/17/214622/88495.terrain differ diff --git a/public/terrain/17/214622/88496.terrain b/public/terrain/17/214622/88496.terrain new file mode 100644 index 000000000..4d994086e Binary files /dev/null and b/public/terrain/17/214622/88496.terrain differ diff --git a/public/terrain/17/214622/88497.terrain b/public/terrain/17/214622/88497.terrain new file mode 100644 index 000000000..8f8aa12dc Binary files /dev/null and b/public/terrain/17/214622/88497.terrain differ diff --git a/public/terrain/17/214622/88498.terrain b/public/terrain/17/214622/88498.terrain new file mode 100644 index 000000000..56f261d17 Binary files /dev/null and b/public/terrain/17/214622/88498.terrain differ diff --git a/public/terrain/17/214622/88499.terrain b/public/terrain/17/214622/88499.terrain new file mode 100644 index 000000000..5a178e690 Binary files /dev/null and b/public/terrain/17/214622/88499.terrain differ diff --git a/public/terrain/17/214622/88500.terrain b/public/terrain/17/214622/88500.terrain new file mode 100644 index 000000000..28bf57084 Binary files /dev/null and b/public/terrain/17/214622/88500.terrain differ diff --git a/public/terrain/17/214622/88501.terrain b/public/terrain/17/214622/88501.terrain new file mode 100644 index 000000000..922ccc7ec Binary files /dev/null and b/public/terrain/17/214622/88501.terrain differ diff --git a/public/terrain/17/214622/88502.terrain b/public/terrain/17/214622/88502.terrain new file mode 100644 index 000000000..9feed94cb Binary files /dev/null and b/public/terrain/17/214622/88502.terrain differ diff --git a/public/terrain/17/214622/88503.terrain b/public/terrain/17/214622/88503.terrain new file mode 100644 index 000000000..d6832afd0 Binary files /dev/null and b/public/terrain/17/214622/88503.terrain differ diff --git a/public/terrain/17/214622/88504.terrain b/public/terrain/17/214622/88504.terrain new file mode 100644 index 000000000..646bcb803 Binary files /dev/null and b/public/terrain/17/214622/88504.terrain differ diff --git a/public/terrain/17/214622/88505.terrain b/public/terrain/17/214622/88505.terrain new file mode 100644 index 000000000..9c90f2736 Binary files /dev/null and b/public/terrain/17/214622/88505.terrain differ diff --git a/public/terrain/17/214622/88506.terrain b/public/terrain/17/214622/88506.terrain new file mode 100644 index 000000000..6c70846f0 Binary files /dev/null and b/public/terrain/17/214622/88506.terrain differ diff --git a/public/terrain/17/214622/88507.terrain b/public/terrain/17/214622/88507.terrain new file mode 100644 index 000000000..a00ba1637 Binary files /dev/null and b/public/terrain/17/214622/88507.terrain differ diff --git a/public/terrain/17/214622/88508.terrain b/public/terrain/17/214622/88508.terrain new file mode 100644 index 000000000..da134b4b4 Binary files /dev/null and b/public/terrain/17/214622/88508.terrain differ diff --git a/public/terrain/17/214622/88509.terrain b/public/terrain/17/214622/88509.terrain new file mode 100644 index 000000000..efeddf5ee Binary files /dev/null and b/public/terrain/17/214622/88509.terrain differ diff --git a/public/terrain/17/214622/88510.terrain b/public/terrain/17/214622/88510.terrain new file mode 100644 index 000000000..7aa11890d Binary files /dev/null and b/public/terrain/17/214622/88510.terrain differ diff --git a/public/terrain/17/214622/88511.terrain b/public/terrain/17/214622/88511.terrain new file mode 100644 index 000000000..4ce5c96d8 Binary files /dev/null and b/public/terrain/17/214622/88511.terrain differ diff --git a/public/terrain/17/214622/88512.terrain b/public/terrain/17/214622/88512.terrain new file mode 100644 index 000000000..c358da1c3 Binary files /dev/null and b/public/terrain/17/214622/88512.terrain differ diff --git a/public/terrain/17/214622/88513.terrain b/public/terrain/17/214622/88513.terrain new file mode 100644 index 000000000..9393e0b3f Binary files /dev/null and b/public/terrain/17/214622/88513.terrain differ diff --git a/public/terrain/17/214622/88514.terrain b/public/terrain/17/214622/88514.terrain new file mode 100644 index 000000000..51857f024 Binary files /dev/null and b/public/terrain/17/214622/88514.terrain differ diff --git a/public/terrain/17/214623/88435.terrain b/public/terrain/17/214623/88435.terrain new file mode 100644 index 000000000..8a7735e4b Binary files /dev/null and b/public/terrain/17/214623/88435.terrain differ diff --git a/public/terrain/17/214623/88436.terrain b/public/terrain/17/214623/88436.terrain new file mode 100644 index 000000000..7de716ab8 Binary files /dev/null and b/public/terrain/17/214623/88436.terrain differ diff --git a/public/terrain/17/214623/88437.terrain b/public/terrain/17/214623/88437.terrain new file mode 100644 index 000000000..ae46f78df Binary files /dev/null and b/public/terrain/17/214623/88437.terrain differ diff --git a/public/terrain/17/214623/88438.terrain b/public/terrain/17/214623/88438.terrain new file mode 100644 index 000000000..73ea66c9c Binary files /dev/null and b/public/terrain/17/214623/88438.terrain differ diff --git a/public/terrain/17/214623/88439.terrain b/public/terrain/17/214623/88439.terrain new file mode 100644 index 000000000..c5cdaa087 Binary files /dev/null and b/public/terrain/17/214623/88439.terrain differ diff --git a/public/terrain/17/214623/88440.terrain b/public/terrain/17/214623/88440.terrain new file mode 100644 index 000000000..d062c1ddd Binary files /dev/null and b/public/terrain/17/214623/88440.terrain differ diff --git a/public/terrain/17/214623/88441.terrain b/public/terrain/17/214623/88441.terrain new file mode 100644 index 000000000..0b6721016 Binary files /dev/null and b/public/terrain/17/214623/88441.terrain differ diff --git a/public/terrain/17/214623/88442.terrain b/public/terrain/17/214623/88442.terrain new file mode 100644 index 000000000..229efa91a Binary files /dev/null and b/public/terrain/17/214623/88442.terrain differ diff --git a/public/terrain/17/214623/88443.terrain b/public/terrain/17/214623/88443.terrain new file mode 100644 index 000000000..a1d860555 Binary files /dev/null and b/public/terrain/17/214623/88443.terrain differ diff --git a/public/terrain/17/214623/88444.terrain b/public/terrain/17/214623/88444.terrain new file mode 100644 index 000000000..58984539b Binary files /dev/null and b/public/terrain/17/214623/88444.terrain differ diff --git a/public/terrain/17/214623/88445.terrain b/public/terrain/17/214623/88445.terrain new file mode 100644 index 000000000..be5561c77 Binary files /dev/null and b/public/terrain/17/214623/88445.terrain differ diff --git a/public/terrain/17/214623/88446.terrain b/public/terrain/17/214623/88446.terrain new file mode 100644 index 000000000..83402ed47 Binary files /dev/null and b/public/terrain/17/214623/88446.terrain differ diff --git a/public/terrain/17/214623/88447.terrain b/public/terrain/17/214623/88447.terrain new file mode 100644 index 000000000..59333c8cb Binary files /dev/null and b/public/terrain/17/214623/88447.terrain differ diff --git a/public/terrain/17/214623/88448.terrain b/public/terrain/17/214623/88448.terrain new file mode 100644 index 000000000..c05905867 Binary files /dev/null and b/public/terrain/17/214623/88448.terrain differ diff --git a/public/terrain/17/214623/88449.terrain b/public/terrain/17/214623/88449.terrain new file mode 100644 index 000000000..903ab69f7 Binary files /dev/null and b/public/terrain/17/214623/88449.terrain differ diff --git a/public/terrain/17/214623/88450.terrain b/public/terrain/17/214623/88450.terrain new file mode 100644 index 000000000..d92c4d314 Binary files /dev/null and b/public/terrain/17/214623/88450.terrain differ diff --git a/public/terrain/17/214623/88451.terrain b/public/terrain/17/214623/88451.terrain new file mode 100644 index 000000000..c0bd559a0 Binary files /dev/null and b/public/terrain/17/214623/88451.terrain differ diff --git a/public/terrain/17/214623/88452.terrain b/public/terrain/17/214623/88452.terrain new file mode 100644 index 000000000..fe23456a4 Binary files /dev/null and b/public/terrain/17/214623/88452.terrain differ diff --git a/public/terrain/17/214623/88453.terrain b/public/terrain/17/214623/88453.terrain new file mode 100644 index 000000000..967238996 Binary files /dev/null and b/public/terrain/17/214623/88453.terrain differ diff --git a/public/terrain/17/214623/88454.terrain b/public/terrain/17/214623/88454.terrain new file mode 100644 index 000000000..42ca4074e Binary files /dev/null and b/public/terrain/17/214623/88454.terrain differ diff --git a/public/terrain/17/214623/88455.terrain b/public/terrain/17/214623/88455.terrain new file mode 100644 index 000000000..2410c3bf7 Binary files /dev/null and b/public/terrain/17/214623/88455.terrain differ diff --git a/public/terrain/17/214623/88456.terrain b/public/terrain/17/214623/88456.terrain new file mode 100644 index 000000000..b3dd9fcc4 Binary files /dev/null and b/public/terrain/17/214623/88456.terrain differ diff --git a/public/terrain/17/214623/88457.terrain b/public/terrain/17/214623/88457.terrain new file mode 100644 index 000000000..88b4bbdc7 Binary files /dev/null and b/public/terrain/17/214623/88457.terrain differ diff --git a/public/terrain/17/214623/88458.terrain b/public/terrain/17/214623/88458.terrain new file mode 100644 index 000000000..0ae8d8fe6 Binary files /dev/null and b/public/terrain/17/214623/88458.terrain differ diff --git a/public/terrain/17/214623/88459.terrain b/public/terrain/17/214623/88459.terrain new file mode 100644 index 000000000..ea88ec192 Binary files /dev/null and b/public/terrain/17/214623/88459.terrain differ diff --git a/public/terrain/17/214623/88460.terrain b/public/terrain/17/214623/88460.terrain new file mode 100644 index 000000000..6630bb6f0 Binary files /dev/null and b/public/terrain/17/214623/88460.terrain differ diff --git a/public/terrain/17/214623/88461.terrain b/public/terrain/17/214623/88461.terrain new file mode 100644 index 000000000..6d1c230b1 Binary files /dev/null and b/public/terrain/17/214623/88461.terrain differ diff --git a/public/terrain/17/214623/88462.terrain b/public/terrain/17/214623/88462.terrain new file mode 100644 index 000000000..d08301785 Binary files /dev/null and b/public/terrain/17/214623/88462.terrain differ diff --git a/public/terrain/17/214623/88463.terrain b/public/terrain/17/214623/88463.terrain new file mode 100644 index 000000000..8996ca584 Binary files /dev/null and b/public/terrain/17/214623/88463.terrain differ diff --git a/public/terrain/17/214623/88464.terrain b/public/terrain/17/214623/88464.terrain new file mode 100644 index 000000000..aa3864856 Binary files /dev/null and b/public/terrain/17/214623/88464.terrain differ diff --git a/public/terrain/17/214623/88465.terrain b/public/terrain/17/214623/88465.terrain new file mode 100644 index 000000000..ace595451 Binary files /dev/null and b/public/terrain/17/214623/88465.terrain differ diff --git a/public/terrain/17/214623/88466.terrain b/public/terrain/17/214623/88466.terrain new file mode 100644 index 000000000..c5eef58a5 Binary files /dev/null and b/public/terrain/17/214623/88466.terrain differ diff --git a/public/terrain/17/214623/88467.terrain b/public/terrain/17/214623/88467.terrain new file mode 100644 index 000000000..8bfa2602e Binary files /dev/null and b/public/terrain/17/214623/88467.terrain differ diff --git a/public/terrain/17/214623/88468.terrain b/public/terrain/17/214623/88468.terrain new file mode 100644 index 000000000..23dc69b79 Binary files /dev/null and b/public/terrain/17/214623/88468.terrain differ diff --git a/public/terrain/17/214623/88469.terrain b/public/terrain/17/214623/88469.terrain new file mode 100644 index 000000000..1fdad1736 Binary files /dev/null and b/public/terrain/17/214623/88469.terrain differ diff --git a/public/terrain/17/214623/88470.terrain b/public/terrain/17/214623/88470.terrain new file mode 100644 index 000000000..46e6abfc4 Binary files /dev/null and b/public/terrain/17/214623/88470.terrain differ diff --git a/public/terrain/17/214623/88471.terrain b/public/terrain/17/214623/88471.terrain new file mode 100644 index 000000000..5c41b895a Binary files /dev/null and b/public/terrain/17/214623/88471.terrain differ diff --git a/public/terrain/17/214623/88472.terrain b/public/terrain/17/214623/88472.terrain new file mode 100644 index 000000000..e8ca8eae4 Binary files /dev/null and b/public/terrain/17/214623/88472.terrain differ diff --git a/public/terrain/17/214623/88473.terrain b/public/terrain/17/214623/88473.terrain new file mode 100644 index 000000000..210b599f4 Binary files /dev/null and b/public/terrain/17/214623/88473.terrain differ diff --git a/public/terrain/17/214623/88474.terrain b/public/terrain/17/214623/88474.terrain new file mode 100644 index 000000000..27e60c77b Binary files /dev/null and b/public/terrain/17/214623/88474.terrain differ diff --git a/public/terrain/17/214623/88475.terrain b/public/terrain/17/214623/88475.terrain new file mode 100644 index 000000000..4f2c13a5c Binary files /dev/null and b/public/terrain/17/214623/88475.terrain differ diff --git a/public/terrain/17/214623/88476.terrain b/public/terrain/17/214623/88476.terrain new file mode 100644 index 000000000..8b4b5ba28 Binary files /dev/null and b/public/terrain/17/214623/88476.terrain differ diff --git a/public/terrain/17/214623/88477.terrain b/public/terrain/17/214623/88477.terrain new file mode 100644 index 000000000..75873e728 Binary files /dev/null and b/public/terrain/17/214623/88477.terrain differ diff --git a/public/terrain/17/214623/88478.terrain b/public/terrain/17/214623/88478.terrain new file mode 100644 index 000000000..70aa49984 Binary files /dev/null and b/public/terrain/17/214623/88478.terrain differ diff --git a/public/terrain/17/214623/88479.terrain b/public/terrain/17/214623/88479.terrain new file mode 100644 index 000000000..a379dd121 Binary files /dev/null and b/public/terrain/17/214623/88479.terrain differ diff --git a/public/terrain/17/214623/88480.terrain b/public/terrain/17/214623/88480.terrain new file mode 100644 index 000000000..4d1e06211 Binary files /dev/null and b/public/terrain/17/214623/88480.terrain differ diff --git a/public/terrain/17/214623/88481.terrain b/public/terrain/17/214623/88481.terrain new file mode 100644 index 000000000..48f7ca83b Binary files /dev/null and b/public/terrain/17/214623/88481.terrain differ diff --git a/public/terrain/17/214623/88482.terrain b/public/terrain/17/214623/88482.terrain new file mode 100644 index 000000000..2daa38674 Binary files /dev/null and b/public/terrain/17/214623/88482.terrain differ diff --git a/public/terrain/17/214623/88483.terrain b/public/terrain/17/214623/88483.terrain new file mode 100644 index 000000000..c8fc0a0e5 Binary files /dev/null and b/public/terrain/17/214623/88483.terrain differ diff --git a/public/terrain/17/214623/88484.terrain b/public/terrain/17/214623/88484.terrain new file mode 100644 index 000000000..099ba23a5 Binary files /dev/null and b/public/terrain/17/214623/88484.terrain differ diff --git a/public/terrain/17/214623/88485.terrain b/public/terrain/17/214623/88485.terrain new file mode 100644 index 000000000..c952de7fb Binary files /dev/null and b/public/terrain/17/214623/88485.terrain differ diff --git a/public/terrain/17/214623/88486.terrain b/public/terrain/17/214623/88486.terrain new file mode 100644 index 000000000..c218abc5a Binary files /dev/null and b/public/terrain/17/214623/88486.terrain differ diff --git a/public/terrain/17/214623/88487.terrain b/public/terrain/17/214623/88487.terrain new file mode 100644 index 000000000..f19c36e98 Binary files /dev/null and b/public/terrain/17/214623/88487.terrain differ diff --git a/public/terrain/17/214623/88488.terrain b/public/terrain/17/214623/88488.terrain new file mode 100644 index 000000000..d4a36598e Binary files /dev/null and b/public/terrain/17/214623/88488.terrain differ diff --git a/public/terrain/17/214623/88489.terrain b/public/terrain/17/214623/88489.terrain new file mode 100644 index 000000000..fe072d208 Binary files /dev/null and b/public/terrain/17/214623/88489.terrain differ diff --git a/public/terrain/17/214623/88490.terrain b/public/terrain/17/214623/88490.terrain new file mode 100644 index 000000000..29c6d6adb Binary files /dev/null and b/public/terrain/17/214623/88490.terrain differ diff --git a/public/terrain/17/214623/88491.terrain b/public/terrain/17/214623/88491.terrain new file mode 100644 index 000000000..3600c6487 Binary files /dev/null and b/public/terrain/17/214623/88491.terrain differ diff --git a/public/terrain/17/214623/88492.terrain b/public/terrain/17/214623/88492.terrain new file mode 100644 index 000000000..9d447fc40 Binary files /dev/null and b/public/terrain/17/214623/88492.terrain differ diff --git a/public/terrain/17/214623/88493.terrain b/public/terrain/17/214623/88493.terrain new file mode 100644 index 000000000..f79e08b7b Binary files /dev/null and b/public/terrain/17/214623/88493.terrain differ diff --git a/public/terrain/17/214623/88494.terrain b/public/terrain/17/214623/88494.terrain new file mode 100644 index 000000000..75f52b3bd Binary files /dev/null and b/public/terrain/17/214623/88494.terrain differ diff --git a/public/terrain/17/214623/88495.terrain b/public/terrain/17/214623/88495.terrain new file mode 100644 index 000000000..663f0ca1e Binary files /dev/null and b/public/terrain/17/214623/88495.terrain differ diff --git a/public/terrain/17/214623/88496.terrain b/public/terrain/17/214623/88496.terrain new file mode 100644 index 000000000..26d9a6493 Binary files /dev/null and b/public/terrain/17/214623/88496.terrain differ diff --git a/public/terrain/17/214623/88497.terrain b/public/terrain/17/214623/88497.terrain new file mode 100644 index 000000000..6a45eb996 Binary files /dev/null and b/public/terrain/17/214623/88497.terrain differ diff --git a/public/terrain/17/214623/88498.terrain b/public/terrain/17/214623/88498.terrain new file mode 100644 index 000000000..20d965a4a Binary files /dev/null and b/public/terrain/17/214623/88498.terrain differ diff --git a/public/terrain/17/214623/88499.terrain b/public/terrain/17/214623/88499.terrain new file mode 100644 index 000000000..25e1f3b6c Binary files /dev/null and b/public/terrain/17/214623/88499.terrain differ diff --git a/public/terrain/17/214623/88500.terrain b/public/terrain/17/214623/88500.terrain new file mode 100644 index 000000000..f0dec515f Binary files /dev/null and b/public/terrain/17/214623/88500.terrain differ diff --git a/public/terrain/17/214623/88501.terrain b/public/terrain/17/214623/88501.terrain new file mode 100644 index 000000000..3b9a5b38d Binary files /dev/null and b/public/terrain/17/214623/88501.terrain differ diff --git a/public/terrain/17/214623/88502.terrain b/public/terrain/17/214623/88502.terrain new file mode 100644 index 000000000..7a1041344 Binary files /dev/null and b/public/terrain/17/214623/88502.terrain differ diff --git a/public/terrain/17/214623/88503.terrain b/public/terrain/17/214623/88503.terrain new file mode 100644 index 000000000..c716488eb Binary files /dev/null and b/public/terrain/17/214623/88503.terrain differ diff --git a/public/terrain/17/214623/88504.terrain b/public/terrain/17/214623/88504.terrain new file mode 100644 index 000000000..cb1127ea5 Binary files /dev/null and b/public/terrain/17/214623/88504.terrain differ diff --git a/public/terrain/17/214623/88505.terrain b/public/terrain/17/214623/88505.terrain new file mode 100644 index 000000000..714e31119 Binary files /dev/null and b/public/terrain/17/214623/88505.terrain differ diff --git a/public/terrain/17/214623/88506.terrain b/public/terrain/17/214623/88506.terrain new file mode 100644 index 000000000..5b230aac6 Binary files /dev/null and b/public/terrain/17/214623/88506.terrain differ diff --git a/public/terrain/17/214623/88507.terrain b/public/terrain/17/214623/88507.terrain new file mode 100644 index 000000000..9ec024168 Binary files /dev/null and b/public/terrain/17/214623/88507.terrain differ diff --git a/public/terrain/17/214623/88508.terrain b/public/terrain/17/214623/88508.terrain new file mode 100644 index 000000000..a47ccce0c Binary files /dev/null and b/public/terrain/17/214623/88508.terrain differ diff --git a/public/terrain/17/214623/88509.terrain b/public/terrain/17/214623/88509.terrain new file mode 100644 index 000000000..ad06c3381 Binary files /dev/null and b/public/terrain/17/214623/88509.terrain differ diff --git a/public/terrain/17/214623/88510.terrain b/public/terrain/17/214623/88510.terrain new file mode 100644 index 000000000..16d3b8eca Binary files /dev/null and b/public/terrain/17/214623/88510.terrain differ diff --git a/public/terrain/17/214623/88511.terrain b/public/terrain/17/214623/88511.terrain new file mode 100644 index 000000000..74e54bf87 Binary files /dev/null and b/public/terrain/17/214623/88511.terrain differ diff --git a/public/terrain/17/214623/88512.terrain b/public/terrain/17/214623/88512.terrain new file mode 100644 index 000000000..18e50ec4e Binary files /dev/null and b/public/terrain/17/214623/88512.terrain differ diff --git a/public/terrain/17/214623/88513.terrain b/public/terrain/17/214623/88513.terrain new file mode 100644 index 000000000..60c6b20d9 Binary files /dev/null and b/public/terrain/17/214623/88513.terrain differ diff --git a/public/terrain/17/214623/88514.terrain b/public/terrain/17/214623/88514.terrain new file mode 100644 index 000000000..9f6ef9241 Binary files /dev/null and b/public/terrain/17/214623/88514.terrain differ diff --git a/public/terrain/17/214624/88435.terrain b/public/terrain/17/214624/88435.terrain new file mode 100644 index 000000000..594414f31 Binary files /dev/null and b/public/terrain/17/214624/88435.terrain differ diff --git a/public/terrain/17/214624/88436.terrain b/public/terrain/17/214624/88436.terrain new file mode 100644 index 000000000..01c3cbc37 Binary files /dev/null and b/public/terrain/17/214624/88436.terrain differ diff --git a/public/terrain/17/214624/88437.terrain b/public/terrain/17/214624/88437.terrain new file mode 100644 index 000000000..277318c67 Binary files /dev/null and b/public/terrain/17/214624/88437.terrain differ diff --git a/public/terrain/17/214624/88438.terrain b/public/terrain/17/214624/88438.terrain new file mode 100644 index 000000000..a740924f3 Binary files /dev/null and b/public/terrain/17/214624/88438.terrain differ diff --git a/public/terrain/17/214624/88439.terrain b/public/terrain/17/214624/88439.terrain new file mode 100644 index 000000000..a8446ac91 Binary files /dev/null and b/public/terrain/17/214624/88439.terrain differ diff --git a/public/terrain/17/214624/88440.terrain b/public/terrain/17/214624/88440.terrain new file mode 100644 index 000000000..40703f79c Binary files /dev/null and b/public/terrain/17/214624/88440.terrain differ diff --git a/public/terrain/17/214624/88441.terrain b/public/terrain/17/214624/88441.terrain new file mode 100644 index 000000000..b73d3f8b5 Binary files /dev/null and b/public/terrain/17/214624/88441.terrain differ diff --git a/public/terrain/17/214624/88442.terrain b/public/terrain/17/214624/88442.terrain new file mode 100644 index 000000000..71c0f6800 Binary files /dev/null and b/public/terrain/17/214624/88442.terrain differ diff --git a/public/terrain/17/214624/88443.terrain b/public/terrain/17/214624/88443.terrain new file mode 100644 index 000000000..068f410bd Binary files /dev/null and b/public/terrain/17/214624/88443.terrain differ diff --git a/public/terrain/17/214624/88444.terrain b/public/terrain/17/214624/88444.terrain new file mode 100644 index 000000000..326b0f9e7 Binary files /dev/null and b/public/terrain/17/214624/88444.terrain differ diff --git a/public/terrain/17/214624/88445.terrain b/public/terrain/17/214624/88445.terrain new file mode 100644 index 000000000..bcf87aa3a Binary files /dev/null and b/public/terrain/17/214624/88445.terrain differ diff --git a/public/terrain/17/214624/88446.terrain b/public/terrain/17/214624/88446.terrain new file mode 100644 index 000000000..fb23d7bb7 Binary files /dev/null and b/public/terrain/17/214624/88446.terrain differ diff --git a/public/terrain/17/214624/88447.terrain b/public/terrain/17/214624/88447.terrain new file mode 100644 index 000000000..84738ae92 Binary files /dev/null and b/public/terrain/17/214624/88447.terrain differ diff --git a/public/terrain/17/214624/88448.terrain b/public/terrain/17/214624/88448.terrain new file mode 100644 index 000000000..4c6183f6d Binary files /dev/null and b/public/terrain/17/214624/88448.terrain differ diff --git a/public/terrain/17/214624/88449.terrain b/public/terrain/17/214624/88449.terrain new file mode 100644 index 000000000..b74b92366 Binary files /dev/null and b/public/terrain/17/214624/88449.terrain differ diff --git a/public/terrain/17/214624/88450.terrain b/public/terrain/17/214624/88450.terrain new file mode 100644 index 000000000..7193b6b93 Binary files /dev/null and b/public/terrain/17/214624/88450.terrain differ diff --git a/public/terrain/17/214624/88451.terrain b/public/terrain/17/214624/88451.terrain new file mode 100644 index 000000000..4a754691b Binary files /dev/null and b/public/terrain/17/214624/88451.terrain differ diff --git a/public/terrain/17/214624/88452.terrain b/public/terrain/17/214624/88452.terrain new file mode 100644 index 000000000..c33ae71af Binary files /dev/null and b/public/terrain/17/214624/88452.terrain differ diff --git a/public/terrain/17/214624/88453.terrain b/public/terrain/17/214624/88453.terrain new file mode 100644 index 000000000..63544e163 Binary files /dev/null and b/public/terrain/17/214624/88453.terrain differ diff --git a/public/terrain/17/214624/88454.terrain b/public/terrain/17/214624/88454.terrain new file mode 100644 index 000000000..2131f20af Binary files /dev/null and b/public/terrain/17/214624/88454.terrain differ diff --git a/public/terrain/17/214624/88455.terrain b/public/terrain/17/214624/88455.terrain new file mode 100644 index 000000000..838a526c5 Binary files /dev/null and b/public/terrain/17/214624/88455.terrain differ diff --git a/public/terrain/17/214624/88456.terrain b/public/terrain/17/214624/88456.terrain new file mode 100644 index 000000000..484b1b164 Binary files /dev/null and b/public/terrain/17/214624/88456.terrain differ diff --git a/public/terrain/17/214624/88457.terrain b/public/terrain/17/214624/88457.terrain new file mode 100644 index 000000000..a5ada6f04 Binary files /dev/null and b/public/terrain/17/214624/88457.terrain differ diff --git a/public/terrain/17/214624/88458.terrain b/public/terrain/17/214624/88458.terrain new file mode 100644 index 000000000..2a99b94c8 Binary files /dev/null and b/public/terrain/17/214624/88458.terrain differ diff --git a/public/terrain/17/214624/88459.terrain b/public/terrain/17/214624/88459.terrain new file mode 100644 index 000000000..902ecaae4 Binary files /dev/null and b/public/terrain/17/214624/88459.terrain differ diff --git a/public/terrain/17/214624/88460.terrain b/public/terrain/17/214624/88460.terrain new file mode 100644 index 000000000..d257f3e5e Binary files /dev/null and b/public/terrain/17/214624/88460.terrain differ diff --git a/public/terrain/17/214624/88461.terrain b/public/terrain/17/214624/88461.terrain new file mode 100644 index 000000000..aacd9296c Binary files /dev/null and b/public/terrain/17/214624/88461.terrain differ diff --git a/public/terrain/17/214624/88462.terrain b/public/terrain/17/214624/88462.terrain new file mode 100644 index 000000000..4680d88b2 Binary files /dev/null and b/public/terrain/17/214624/88462.terrain differ diff --git a/public/terrain/17/214624/88463.terrain b/public/terrain/17/214624/88463.terrain new file mode 100644 index 000000000..e1662ebed Binary files /dev/null and b/public/terrain/17/214624/88463.terrain differ diff --git a/public/terrain/17/214624/88464.terrain b/public/terrain/17/214624/88464.terrain new file mode 100644 index 000000000..06cf049ee Binary files /dev/null and b/public/terrain/17/214624/88464.terrain differ diff --git a/public/terrain/17/214624/88465.terrain b/public/terrain/17/214624/88465.terrain new file mode 100644 index 000000000..778699a85 Binary files /dev/null and b/public/terrain/17/214624/88465.terrain differ diff --git a/public/terrain/17/214624/88466.terrain b/public/terrain/17/214624/88466.terrain new file mode 100644 index 000000000..bbaa978c9 Binary files /dev/null and b/public/terrain/17/214624/88466.terrain differ diff --git a/public/terrain/17/214624/88467.terrain b/public/terrain/17/214624/88467.terrain new file mode 100644 index 000000000..fc92b9b10 Binary files /dev/null and b/public/terrain/17/214624/88467.terrain differ diff --git a/public/terrain/17/214624/88468.terrain b/public/terrain/17/214624/88468.terrain new file mode 100644 index 000000000..38ed735b1 Binary files /dev/null and b/public/terrain/17/214624/88468.terrain differ diff --git a/public/terrain/17/214624/88469.terrain b/public/terrain/17/214624/88469.terrain new file mode 100644 index 000000000..3f8de4c39 Binary files /dev/null and b/public/terrain/17/214624/88469.terrain differ diff --git a/public/terrain/17/214624/88470.terrain b/public/terrain/17/214624/88470.terrain new file mode 100644 index 000000000..e4bb798e5 Binary files /dev/null and b/public/terrain/17/214624/88470.terrain differ diff --git a/public/terrain/17/214624/88471.terrain b/public/terrain/17/214624/88471.terrain new file mode 100644 index 000000000..51d9d0324 Binary files /dev/null and b/public/terrain/17/214624/88471.terrain differ diff --git a/public/terrain/17/214624/88472.terrain b/public/terrain/17/214624/88472.terrain new file mode 100644 index 000000000..57f368715 Binary files /dev/null and b/public/terrain/17/214624/88472.terrain differ diff --git a/public/terrain/17/214624/88473.terrain b/public/terrain/17/214624/88473.terrain new file mode 100644 index 000000000..18d74fd68 Binary files /dev/null and b/public/terrain/17/214624/88473.terrain differ diff --git a/public/terrain/17/214624/88474.terrain b/public/terrain/17/214624/88474.terrain new file mode 100644 index 000000000..ce55ba1bd Binary files /dev/null and b/public/terrain/17/214624/88474.terrain differ diff --git a/public/terrain/17/214624/88475.terrain b/public/terrain/17/214624/88475.terrain new file mode 100644 index 000000000..099030229 Binary files /dev/null and b/public/terrain/17/214624/88475.terrain differ diff --git a/public/terrain/17/214624/88476.terrain b/public/terrain/17/214624/88476.terrain new file mode 100644 index 000000000..ce5259c86 Binary files /dev/null and b/public/terrain/17/214624/88476.terrain differ diff --git a/public/terrain/17/214624/88477.terrain b/public/terrain/17/214624/88477.terrain new file mode 100644 index 000000000..e6642998e Binary files /dev/null and b/public/terrain/17/214624/88477.terrain differ diff --git a/public/terrain/17/214624/88478.terrain b/public/terrain/17/214624/88478.terrain new file mode 100644 index 000000000..8bdfc8e16 Binary files /dev/null and b/public/terrain/17/214624/88478.terrain differ diff --git a/public/terrain/17/214624/88479.terrain b/public/terrain/17/214624/88479.terrain new file mode 100644 index 000000000..f7fc3b956 Binary files /dev/null and b/public/terrain/17/214624/88479.terrain differ diff --git a/public/terrain/17/214624/88480.terrain b/public/terrain/17/214624/88480.terrain new file mode 100644 index 000000000..8e3e49350 Binary files /dev/null and b/public/terrain/17/214624/88480.terrain differ diff --git a/public/terrain/17/214624/88481.terrain b/public/terrain/17/214624/88481.terrain new file mode 100644 index 000000000..b31aa7046 Binary files /dev/null and b/public/terrain/17/214624/88481.terrain differ diff --git a/public/terrain/17/214624/88482.terrain b/public/terrain/17/214624/88482.terrain new file mode 100644 index 000000000..96e32434f Binary files /dev/null and b/public/terrain/17/214624/88482.terrain differ diff --git a/public/terrain/17/214624/88483.terrain b/public/terrain/17/214624/88483.terrain new file mode 100644 index 000000000..0bf166b04 Binary files /dev/null and b/public/terrain/17/214624/88483.terrain differ diff --git a/public/terrain/17/214624/88484.terrain b/public/terrain/17/214624/88484.terrain new file mode 100644 index 000000000..6bc833cd8 Binary files /dev/null and b/public/terrain/17/214624/88484.terrain differ diff --git a/public/terrain/17/214624/88485.terrain b/public/terrain/17/214624/88485.terrain new file mode 100644 index 000000000..6ad7fc913 Binary files /dev/null and b/public/terrain/17/214624/88485.terrain differ diff --git a/public/terrain/17/214624/88486.terrain b/public/terrain/17/214624/88486.terrain new file mode 100644 index 000000000..5d88ded92 Binary files /dev/null and b/public/terrain/17/214624/88486.terrain differ diff --git a/public/terrain/17/214624/88487.terrain b/public/terrain/17/214624/88487.terrain new file mode 100644 index 000000000..95e51fd25 Binary files /dev/null and b/public/terrain/17/214624/88487.terrain differ diff --git a/public/terrain/17/214624/88488.terrain b/public/terrain/17/214624/88488.terrain new file mode 100644 index 000000000..fc1de05c2 Binary files /dev/null and b/public/terrain/17/214624/88488.terrain differ diff --git a/public/terrain/17/214624/88489.terrain b/public/terrain/17/214624/88489.terrain new file mode 100644 index 000000000..9e3ced864 Binary files /dev/null and b/public/terrain/17/214624/88489.terrain differ diff --git a/public/terrain/17/214624/88490.terrain b/public/terrain/17/214624/88490.terrain new file mode 100644 index 000000000..199ac86c0 Binary files /dev/null and b/public/terrain/17/214624/88490.terrain differ diff --git a/public/terrain/17/214624/88491.terrain b/public/terrain/17/214624/88491.terrain new file mode 100644 index 000000000..53aa9921c Binary files /dev/null and b/public/terrain/17/214624/88491.terrain differ diff --git a/public/terrain/17/214624/88492.terrain b/public/terrain/17/214624/88492.terrain new file mode 100644 index 000000000..2ee0321ce Binary files /dev/null and b/public/terrain/17/214624/88492.terrain differ diff --git a/public/terrain/17/214624/88493.terrain b/public/terrain/17/214624/88493.terrain new file mode 100644 index 000000000..a13273492 Binary files /dev/null and b/public/terrain/17/214624/88493.terrain differ diff --git a/public/terrain/17/214624/88494.terrain b/public/terrain/17/214624/88494.terrain new file mode 100644 index 000000000..fb1b68c62 Binary files /dev/null and b/public/terrain/17/214624/88494.terrain differ diff --git a/public/terrain/17/214624/88495.terrain b/public/terrain/17/214624/88495.terrain new file mode 100644 index 000000000..cb187df39 Binary files /dev/null and b/public/terrain/17/214624/88495.terrain differ diff --git a/public/terrain/17/214624/88496.terrain b/public/terrain/17/214624/88496.terrain new file mode 100644 index 000000000..49b2df343 Binary files /dev/null and b/public/terrain/17/214624/88496.terrain differ diff --git a/public/terrain/17/214624/88497.terrain b/public/terrain/17/214624/88497.terrain new file mode 100644 index 000000000..387b90cfc Binary files /dev/null and b/public/terrain/17/214624/88497.terrain differ diff --git a/public/terrain/17/214624/88498.terrain b/public/terrain/17/214624/88498.terrain new file mode 100644 index 000000000..3f727c4eb Binary files /dev/null and b/public/terrain/17/214624/88498.terrain differ diff --git a/public/terrain/17/214624/88499.terrain b/public/terrain/17/214624/88499.terrain new file mode 100644 index 000000000..ae9f6fa3f Binary files /dev/null and b/public/terrain/17/214624/88499.terrain differ diff --git a/public/terrain/17/214624/88500.terrain b/public/terrain/17/214624/88500.terrain new file mode 100644 index 000000000..7add4b6b1 Binary files /dev/null and b/public/terrain/17/214624/88500.terrain differ diff --git a/public/terrain/17/214624/88501.terrain b/public/terrain/17/214624/88501.terrain new file mode 100644 index 000000000..088f540ea Binary files /dev/null and b/public/terrain/17/214624/88501.terrain differ diff --git a/public/terrain/17/214624/88502.terrain b/public/terrain/17/214624/88502.terrain new file mode 100644 index 000000000..dbb385ab9 Binary files /dev/null and b/public/terrain/17/214624/88502.terrain differ diff --git a/public/terrain/17/214624/88503.terrain b/public/terrain/17/214624/88503.terrain new file mode 100644 index 000000000..51bd73937 Binary files /dev/null and b/public/terrain/17/214624/88503.terrain differ diff --git a/public/terrain/17/214624/88504.terrain b/public/terrain/17/214624/88504.terrain new file mode 100644 index 000000000..291bebf98 Binary files /dev/null and b/public/terrain/17/214624/88504.terrain differ diff --git a/public/terrain/17/214624/88505.terrain b/public/terrain/17/214624/88505.terrain new file mode 100644 index 000000000..cde1c7d45 Binary files /dev/null and b/public/terrain/17/214624/88505.terrain differ diff --git a/public/terrain/17/214624/88506.terrain b/public/terrain/17/214624/88506.terrain new file mode 100644 index 000000000..a9218f228 Binary files /dev/null and b/public/terrain/17/214624/88506.terrain differ diff --git a/public/terrain/17/214624/88507.terrain b/public/terrain/17/214624/88507.terrain new file mode 100644 index 000000000..0007da1db Binary files /dev/null and b/public/terrain/17/214624/88507.terrain differ diff --git a/public/terrain/17/214624/88508.terrain b/public/terrain/17/214624/88508.terrain new file mode 100644 index 000000000..ffb675abc Binary files /dev/null and b/public/terrain/17/214624/88508.terrain differ diff --git a/public/terrain/17/214624/88509.terrain b/public/terrain/17/214624/88509.terrain new file mode 100644 index 000000000..d6a128a57 Binary files /dev/null and b/public/terrain/17/214624/88509.terrain differ diff --git a/public/terrain/17/214624/88510.terrain b/public/terrain/17/214624/88510.terrain new file mode 100644 index 000000000..ccc638aa3 Binary files /dev/null and b/public/terrain/17/214624/88510.terrain differ diff --git a/public/terrain/17/214624/88511.terrain b/public/terrain/17/214624/88511.terrain new file mode 100644 index 000000000..0ff66d2e9 Binary files /dev/null and b/public/terrain/17/214624/88511.terrain differ diff --git a/public/terrain/17/214624/88512.terrain b/public/terrain/17/214624/88512.terrain new file mode 100644 index 000000000..257ce467e Binary files /dev/null and b/public/terrain/17/214624/88512.terrain differ diff --git a/public/terrain/17/214624/88513.terrain b/public/terrain/17/214624/88513.terrain new file mode 100644 index 000000000..16ae044c8 Binary files /dev/null and b/public/terrain/17/214624/88513.terrain differ diff --git a/public/terrain/17/214624/88514.terrain b/public/terrain/17/214624/88514.terrain new file mode 100644 index 000000000..792ca1444 Binary files /dev/null and b/public/terrain/17/214624/88514.terrain differ diff --git a/public/terrain/17/214625/88435.terrain b/public/terrain/17/214625/88435.terrain new file mode 100644 index 000000000..d2abf61c2 Binary files /dev/null and b/public/terrain/17/214625/88435.terrain differ diff --git a/public/terrain/17/214625/88436.terrain b/public/terrain/17/214625/88436.terrain new file mode 100644 index 000000000..2a75829d8 Binary files /dev/null and b/public/terrain/17/214625/88436.terrain differ diff --git a/public/terrain/17/214625/88437.terrain b/public/terrain/17/214625/88437.terrain new file mode 100644 index 000000000..39af345e7 Binary files /dev/null and b/public/terrain/17/214625/88437.terrain differ diff --git a/public/terrain/17/214625/88438.terrain b/public/terrain/17/214625/88438.terrain new file mode 100644 index 000000000..60441fbcc Binary files /dev/null and b/public/terrain/17/214625/88438.terrain differ diff --git a/public/terrain/17/214625/88439.terrain b/public/terrain/17/214625/88439.terrain new file mode 100644 index 000000000..601641cde Binary files /dev/null and b/public/terrain/17/214625/88439.terrain differ diff --git a/public/terrain/17/214625/88440.terrain b/public/terrain/17/214625/88440.terrain new file mode 100644 index 000000000..44d0f9737 Binary files /dev/null and b/public/terrain/17/214625/88440.terrain differ diff --git a/public/terrain/17/214625/88441.terrain b/public/terrain/17/214625/88441.terrain new file mode 100644 index 000000000..ab058a7a2 Binary files /dev/null and b/public/terrain/17/214625/88441.terrain differ diff --git a/public/terrain/17/214625/88442.terrain b/public/terrain/17/214625/88442.terrain new file mode 100644 index 000000000..a7dcea707 Binary files /dev/null and b/public/terrain/17/214625/88442.terrain differ diff --git a/public/terrain/17/214625/88443.terrain b/public/terrain/17/214625/88443.terrain new file mode 100644 index 000000000..df8255fb5 Binary files /dev/null and b/public/terrain/17/214625/88443.terrain differ diff --git a/public/terrain/17/214625/88444.terrain b/public/terrain/17/214625/88444.terrain new file mode 100644 index 000000000..acc4b9c23 Binary files /dev/null and b/public/terrain/17/214625/88444.terrain differ diff --git a/public/terrain/17/214625/88445.terrain b/public/terrain/17/214625/88445.terrain new file mode 100644 index 000000000..5f5484329 Binary files /dev/null and b/public/terrain/17/214625/88445.terrain differ diff --git a/public/terrain/17/214625/88446.terrain b/public/terrain/17/214625/88446.terrain new file mode 100644 index 000000000..ccaa19896 Binary files /dev/null and b/public/terrain/17/214625/88446.terrain differ diff --git a/public/terrain/17/214625/88447.terrain b/public/terrain/17/214625/88447.terrain new file mode 100644 index 000000000..f86c28d74 Binary files /dev/null and b/public/terrain/17/214625/88447.terrain differ diff --git a/public/terrain/17/214625/88448.terrain b/public/terrain/17/214625/88448.terrain new file mode 100644 index 000000000..f52416aec Binary files /dev/null and b/public/terrain/17/214625/88448.terrain differ diff --git a/public/terrain/17/214625/88449.terrain b/public/terrain/17/214625/88449.terrain new file mode 100644 index 000000000..99e5f3367 Binary files /dev/null and b/public/terrain/17/214625/88449.terrain differ diff --git a/public/terrain/17/214625/88450.terrain b/public/terrain/17/214625/88450.terrain new file mode 100644 index 000000000..13d63cb7b Binary files /dev/null and b/public/terrain/17/214625/88450.terrain differ diff --git a/public/terrain/17/214625/88451.terrain b/public/terrain/17/214625/88451.terrain new file mode 100644 index 000000000..c8954f613 Binary files /dev/null and b/public/terrain/17/214625/88451.terrain differ diff --git a/public/terrain/17/214625/88452.terrain b/public/terrain/17/214625/88452.terrain new file mode 100644 index 000000000..9c9e898ee Binary files /dev/null and b/public/terrain/17/214625/88452.terrain differ diff --git a/public/terrain/17/214625/88453.terrain b/public/terrain/17/214625/88453.terrain new file mode 100644 index 000000000..b1f6b3a8e Binary files /dev/null and b/public/terrain/17/214625/88453.terrain differ diff --git a/public/terrain/17/214625/88454.terrain b/public/terrain/17/214625/88454.terrain new file mode 100644 index 000000000..1fbe9703e Binary files /dev/null and b/public/terrain/17/214625/88454.terrain differ diff --git a/public/terrain/17/214625/88455.terrain b/public/terrain/17/214625/88455.terrain new file mode 100644 index 000000000..c479ee679 Binary files /dev/null and b/public/terrain/17/214625/88455.terrain differ diff --git a/public/terrain/17/214625/88456.terrain b/public/terrain/17/214625/88456.terrain new file mode 100644 index 000000000..a979d8219 Binary files /dev/null and b/public/terrain/17/214625/88456.terrain differ diff --git a/public/terrain/17/214625/88457.terrain b/public/terrain/17/214625/88457.terrain new file mode 100644 index 000000000..29657c791 Binary files /dev/null and b/public/terrain/17/214625/88457.terrain differ diff --git a/public/terrain/17/214625/88458.terrain b/public/terrain/17/214625/88458.terrain new file mode 100644 index 000000000..7999eabc5 Binary files /dev/null and b/public/terrain/17/214625/88458.terrain differ diff --git a/public/terrain/17/214625/88459.terrain b/public/terrain/17/214625/88459.terrain new file mode 100644 index 000000000..a34ab43cd Binary files /dev/null and b/public/terrain/17/214625/88459.terrain differ diff --git a/public/terrain/17/214625/88460.terrain b/public/terrain/17/214625/88460.terrain new file mode 100644 index 000000000..aeb3edcda Binary files /dev/null and b/public/terrain/17/214625/88460.terrain differ diff --git a/public/terrain/17/214625/88461.terrain b/public/terrain/17/214625/88461.terrain new file mode 100644 index 000000000..7457159b1 Binary files /dev/null and b/public/terrain/17/214625/88461.terrain differ diff --git a/public/terrain/17/214625/88462.terrain b/public/terrain/17/214625/88462.terrain new file mode 100644 index 000000000..d3dbd8618 Binary files /dev/null and b/public/terrain/17/214625/88462.terrain differ diff --git a/public/terrain/17/214625/88463.terrain b/public/terrain/17/214625/88463.terrain new file mode 100644 index 000000000..be29579b1 Binary files /dev/null and b/public/terrain/17/214625/88463.terrain differ diff --git a/public/terrain/17/214625/88464.terrain b/public/terrain/17/214625/88464.terrain new file mode 100644 index 000000000..38865ffe9 Binary files /dev/null and b/public/terrain/17/214625/88464.terrain differ diff --git a/public/terrain/17/214625/88465.terrain b/public/terrain/17/214625/88465.terrain new file mode 100644 index 000000000..4ee83bfc9 Binary files /dev/null and b/public/terrain/17/214625/88465.terrain differ diff --git a/public/terrain/17/214625/88466.terrain b/public/terrain/17/214625/88466.terrain new file mode 100644 index 000000000..1e341eb77 Binary files /dev/null and b/public/terrain/17/214625/88466.terrain differ diff --git a/public/terrain/17/214625/88467.terrain b/public/terrain/17/214625/88467.terrain new file mode 100644 index 000000000..2d3fe369b Binary files /dev/null and b/public/terrain/17/214625/88467.terrain differ diff --git a/public/terrain/17/214625/88468.terrain b/public/terrain/17/214625/88468.terrain new file mode 100644 index 000000000..967950557 Binary files /dev/null and b/public/terrain/17/214625/88468.terrain differ diff --git a/public/terrain/17/214625/88469.terrain b/public/terrain/17/214625/88469.terrain new file mode 100644 index 000000000..ecbfc3f62 Binary files /dev/null and b/public/terrain/17/214625/88469.terrain differ diff --git a/public/terrain/17/214625/88470.terrain b/public/terrain/17/214625/88470.terrain new file mode 100644 index 000000000..125ffb08a Binary files /dev/null and b/public/terrain/17/214625/88470.terrain differ diff --git a/public/terrain/17/214625/88471.terrain b/public/terrain/17/214625/88471.terrain new file mode 100644 index 000000000..76093e730 Binary files /dev/null and b/public/terrain/17/214625/88471.terrain differ diff --git a/public/terrain/17/214625/88472.terrain b/public/terrain/17/214625/88472.terrain new file mode 100644 index 000000000..6ee35eb0d Binary files /dev/null and b/public/terrain/17/214625/88472.terrain differ diff --git a/public/terrain/17/214625/88473.terrain b/public/terrain/17/214625/88473.terrain new file mode 100644 index 000000000..0740a1c88 Binary files /dev/null and b/public/terrain/17/214625/88473.terrain differ diff --git a/public/terrain/17/214625/88474.terrain b/public/terrain/17/214625/88474.terrain new file mode 100644 index 000000000..50113111e Binary files /dev/null and b/public/terrain/17/214625/88474.terrain differ diff --git a/public/terrain/17/214625/88475.terrain b/public/terrain/17/214625/88475.terrain new file mode 100644 index 000000000..b7bced4b9 Binary files /dev/null and b/public/terrain/17/214625/88475.terrain differ diff --git a/public/terrain/17/214625/88476.terrain b/public/terrain/17/214625/88476.terrain new file mode 100644 index 000000000..74a09bbac Binary files /dev/null and b/public/terrain/17/214625/88476.terrain differ diff --git a/public/terrain/17/214625/88477.terrain b/public/terrain/17/214625/88477.terrain new file mode 100644 index 000000000..dcf58ea52 Binary files /dev/null and b/public/terrain/17/214625/88477.terrain differ diff --git a/public/terrain/17/214625/88478.terrain b/public/terrain/17/214625/88478.terrain new file mode 100644 index 000000000..941f5b59c Binary files /dev/null and b/public/terrain/17/214625/88478.terrain differ diff --git a/public/terrain/17/214625/88479.terrain b/public/terrain/17/214625/88479.terrain new file mode 100644 index 000000000..b35aba754 Binary files /dev/null and b/public/terrain/17/214625/88479.terrain differ diff --git a/public/terrain/17/214625/88480.terrain b/public/terrain/17/214625/88480.terrain new file mode 100644 index 000000000..769f8e9cf Binary files /dev/null and b/public/terrain/17/214625/88480.terrain differ diff --git a/public/terrain/17/214625/88481.terrain b/public/terrain/17/214625/88481.terrain new file mode 100644 index 000000000..2bf592ef9 Binary files /dev/null and b/public/terrain/17/214625/88481.terrain differ diff --git a/public/terrain/17/214625/88482.terrain b/public/terrain/17/214625/88482.terrain new file mode 100644 index 000000000..b24d812ea Binary files /dev/null and b/public/terrain/17/214625/88482.terrain differ diff --git a/public/terrain/17/214625/88483.terrain b/public/terrain/17/214625/88483.terrain new file mode 100644 index 000000000..eb4192d2b Binary files /dev/null and b/public/terrain/17/214625/88483.terrain differ diff --git a/public/terrain/17/214625/88484.terrain b/public/terrain/17/214625/88484.terrain new file mode 100644 index 000000000..fb6e67f75 Binary files /dev/null and b/public/terrain/17/214625/88484.terrain differ diff --git a/public/terrain/17/214625/88485.terrain b/public/terrain/17/214625/88485.terrain new file mode 100644 index 000000000..22fc23a26 Binary files /dev/null and b/public/terrain/17/214625/88485.terrain differ diff --git a/public/terrain/17/214625/88486.terrain b/public/terrain/17/214625/88486.terrain new file mode 100644 index 000000000..4b63a62e9 Binary files /dev/null and b/public/terrain/17/214625/88486.terrain differ diff --git a/public/terrain/17/214625/88487.terrain b/public/terrain/17/214625/88487.terrain new file mode 100644 index 000000000..592241521 Binary files /dev/null and b/public/terrain/17/214625/88487.terrain differ diff --git a/public/terrain/17/214625/88488.terrain b/public/terrain/17/214625/88488.terrain new file mode 100644 index 000000000..3ca1cbc51 Binary files /dev/null and b/public/terrain/17/214625/88488.terrain differ diff --git a/public/terrain/17/214625/88489.terrain b/public/terrain/17/214625/88489.terrain new file mode 100644 index 000000000..8c83db998 Binary files /dev/null and b/public/terrain/17/214625/88489.terrain differ diff --git a/public/terrain/17/214625/88490.terrain b/public/terrain/17/214625/88490.terrain new file mode 100644 index 000000000..817ad3c3d Binary files /dev/null and b/public/terrain/17/214625/88490.terrain differ diff --git a/public/terrain/17/214625/88491.terrain b/public/terrain/17/214625/88491.terrain new file mode 100644 index 000000000..796ac2c26 Binary files /dev/null and b/public/terrain/17/214625/88491.terrain differ diff --git a/public/terrain/17/214625/88492.terrain b/public/terrain/17/214625/88492.terrain new file mode 100644 index 000000000..06d246be4 Binary files /dev/null and b/public/terrain/17/214625/88492.terrain differ diff --git a/public/terrain/17/214625/88493.terrain b/public/terrain/17/214625/88493.terrain new file mode 100644 index 000000000..f1b244fd8 Binary files /dev/null and b/public/terrain/17/214625/88493.terrain differ diff --git a/public/terrain/17/214625/88494.terrain b/public/terrain/17/214625/88494.terrain new file mode 100644 index 000000000..9ce64a882 Binary files /dev/null and b/public/terrain/17/214625/88494.terrain differ diff --git a/public/terrain/17/214625/88495.terrain b/public/terrain/17/214625/88495.terrain new file mode 100644 index 000000000..6a4c98a88 Binary files /dev/null and b/public/terrain/17/214625/88495.terrain differ diff --git a/public/terrain/17/214625/88496.terrain b/public/terrain/17/214625/88496.terrain new file mode 100644 index 000000000..c78a91907 Binary files /dev/null and b/public/terrain/17/214625/88496.terrain differ diff --git a/public/terrain/17/214625/88497.terrain b/public/terrain/17/214625/88497.terrain new file mode 100644 index 000000000..a19540050 Binary files /dev/null and b/public/terrain/17/214625/88497.terrain differ diff --git a/public/terrain/17/214625/88498.terrain b/public/terrain/17/214625/88498.terrain new file mode 100644 index 000000000..a133c5670 Binary files /dev/null and b/public/terrain/17/214625/88498.terrain differ diff --git a/public/terrain/17/214625/88499.terrain b/public/terrain/17/214625/88499.terrain new file mode 100644 index 000000000..27602376a Binary files /dev/null and b/public/terrain/17/214625/88499.terrain differ diff --git a/public/terrain/17/214625/88500.terrain b/public/terrain/17/214625/88500.terrain new file mode 100644 index 000000000..ce6492435 Binary files /dev/null and b/public/terrain/17/214625/88500.terrain differ diff --git a/public/terrain/17/214625/88501.terrain b/public/terrain/17/214625/88501.terrain new file mode 100644 index 000000000..4536b54b2 Binary files /dev/null and b/public/terrain/17/214625/88501.terrain differ diff --git a/public/terrain/17/214625/88502.terrain b/public/terrain/17/214625/88502.terrain new file mode 100644 index 000000000..9217f127e Binary files /dev/null and b/public/terrain/17/214625/88502.terrain differ diff --git a/public/terrain/17/214625/88503.terrain b/public/terrain/17/214625/88503.terrain new file mode 100644 index 000000000..266fe13ea Binary files /dev/null and b/public/terrain/17/214625/88503.terrain differ diff --git a/public/terrain/17/214625/88504.terrain b/public/terrain/17/214625/88504.terrain new file mode 100644 index 000000000..5cd700c07 Binary files /dev/null and b/public/terrain/17/214625/88504.terrain differ diff --git a/public/terrain/17/214625/88505.terrain b/public/terrain/17/214625/88505.terrain new file mode 100644 index 000000000..938f1ed27 Binary files /dev/null and b/public/terrain/17/214625/88505.terrain differ diff --git a/public/terrain/17/214625/88506.terrain b/public/terrain/17/214625/88506.terrain new file mode 100644 index 000000000..1b83e5549 Binary files /dev/null and b/public/terrain/17/214625/88506.terrain differ diff --git a/public/terrain/17/214625/88507.terrain b/public/terrain/17/214625/88507.terrain new file mode 100644 index 000000000..ea8340965 Binary files /dev/null and b/public/terrain/17/214625/88507.terrain differ diff --git a/public/terrain/17/214625/88508.terrain b/public/terrain/17/214625/88508.terrain new file mode 100644 index 000000000..f1c81a964 Binary files /dev/null and b/public/terrain/17/214625/88508.terrain differ diff --git a/public/terrain/17/214625/88509.terrain b/public/terrain/17/214625/88509.terrain new file mode 100644 index 000000000..1685acd4b Binary files /dev/null and b/public/terrain/17/214625/88509.terrain differ diff --git a/public/terrain/17/214625/88510.terrain b/public/terrain/17/214625/88510.terrain new file mode 100644 index 000000000..50b295586 Binary files /dev/null and b/public/terrain/17/214625/88510.terrain differ diff --git a/public/terrain/17/214625/88511.terrain b/public/terrain/17/214625/88511.terrain new file mode 100644 index 000000000..1c8246f3f Binary files /dev/null and b/public/terrain/17/214625/88511.terrain differ diff --git a/public/terrain/17/214625/88512.terrain b/public/terrain/17/214625/88512.terrain new file mode 100644 index 000000000..75d79cbb1 Binary files /dev/null and b/public/terrain/17/214625/88512.terrain differ diff --git a/public/terrain/17/214625/88513.terrain b/public/terrain/17/214625/88513.terrain new file mode 100644 index 000000000..32d90d912 Binary files /dev/null and b/public/terrain/17/214625/88513.terrain differ diff --git a/public/terrain/17/214625/88514.terrain b/public/terrain/17/214625/88514.terrain new file mode 100644 index 000000000..9c9047aad Binary files /dev/null and b/public/terrain/17/214625/88514.terrain differ diff --git a/public/terrain/17/214626/88435.terrain b/public/terrain/17/214626/88435.terrain new file mode 100644 index 000000000..319237e90 Binary files /dev/null and b/public/terrain/17/214626/88435.terrain differ diff --git a/public/terrain/17/214626/88436.terrain b/public/terrain/17/214626/88436.terrain new file mode 100644 index 000000000..1cab2a14a Binary files /dev/null and b/public/terrain/17/214626/88436.terrain differ diff --git a/public/terrain/17/214626/88437.terrain b/public/terrain/17/214626/88437.terrain new file mode 100644 index 000000000..250a4f3ca Binary files /dev/null and b/public/terrain/17/214626/88437.terrain differ diff --git a/public/terrain/17/214626/88438.terrain b/public/terrain/17/214626/88438.terrain new file mode 100644 index 000000000..43189f90f Binary files /dev/null and b/public/terrain/17/214626/88438.terrain differ diff --git a/public/terrain/17/214626/88439.terrain b/public/terrain/17/214626/88439.terrain new file mode 100644 index 000000000..0449a19c5 Binary files /dev/null and b/public/terrain/17/214626/88439.terrain differ diff --git a/public/terrain/17/214626/88440.terrain b/public/terrain/17/214626/88440.terrain new file mode 100644 index 000000000..776308ba8 Binary files /dev/null and b/public/terrain/17/214626/88440.terrain differ diff --git a/public/terrain/17/214626/88441.terrain b/public/terrain/17/214626/88441.terrain new file mode 100644 index 000000000..cf23265e1 Binary files /dev/null and b/public/terrain/17/214626/88441.terrain differ diff --git a/public/terrain/17/214626/88442.terrain b/public/terrain/17/214626/88442.terrain new file mode 100644 index 000000000..b46ffabb9 Binary files /dev/null and b/public/terrain/17/214626/88442.terrain differ diff --git a/public/terrain/17/214626/88443.terrain b/public/terrain/17/214626/88443.terrain new file mode 100644 index 000000000..4a2a09e6b Binary files /dev/null and b/public/terrain/17/214626/88443.terrain differ diff --git a/public/terrain/17/214626/88444.terrain b/public/terrain/17/214626/88444.terrain new file mode 100644 index 000000000..dbfd3a654 Binary files /dev/null and b/public/terrain/17/214626/88444.terrain differ diff --git a/public/terrain/17/214626/88445.terrain b/public/terrain/17/214626/88445.terrain new file mode 100644 index 000000000..9d9f50c2f Binary files /dev/null and b/public/terrain/17/214626/88445.terrain differ diff --git a/public/terrain/17/214626/88446.terrain b/public/terrain/17/214626/88446.terrain new file mode 100644 index 000000000..311ea4e03 Binary files /dev/null and b/public/terrain/17/214626/88446.terrain differ diff --git a/public/terrain/17/214626/88447.terrain b/public/terrain/17/214626/88447.terrain new file mode 100644 index 000000000..ae714c397 Binary files /dev/null and b/public/terrain/17/214626/88447.terrain differ diff --git a/public/terrain/17/214626/88448.terrain b/public/terrain/17/214626/88448.terrain new file mode 100644 index 000000000..28b23914a Binary files /dev/null and b/public/terrain/17/214626/88448.terrain differ diff --git a/public/terrain/17/214626/88449.terrain b/public/terrain/17/214626/88449.terrain new file mode 100644 index 000000000..4cde676a0 Binary files /dev/null and b/public/terrain/17/214626/88449.terrain differ diff --git a/public/terrain/17/214626/88450.terrain b/public/terrain/17/214626/88450.terrain new file mode 100644 index 000000000..25f525956 Binary files /dev/null and b/public/terrain/17/214626/88450.terrain differ diff --git a/public/terrain/17/214626/88451.terrain b/public/terrain/17/214626/88451.terrain new file mode 100644 index 000000000..3fc6ff987 Binary files /dev/null and b/public/terrain/17/214626/88451.terrain differ diff --git a/public/terrain/17/214626/88452.terrain b/public/terrain/17/214626/88452.terrain new file mode 100644 index 000000000..1e75e978a Binary files /dev/null and b/public/terrain/17/214626/88452.terrain differ diff --git a/public/terrain/17/214626/88453.terrain b/public/terrain/17/214626/88453.terrain new file mode 100644 index 000000000..c39343611 Binary files /dev/null and b/public/terrain/17/214626/88453.terrain differ diff --git a/public/terrain/17/214626/88454.terrain b/public/terrain/17/214626/88454.terrain new file mode 100644 index 000000000..d41fc8bab Binary files /dev/null and b/public/terrain/17/214626/88454.terrain differ diff --git a/public/terrain/17/214626/88455.terrain b/public/terrain/17/214626/88455.terrain new file mode 100644 index 000000000..576f4f243 Binary files /dev/null and b/public/terrain/17/214626/88455.terrain differ diff --git a/public/terrain/17/214626/88456.terrain b/public/terrain/17/214626/88456.terrain new file mode 100644 index 000000000..ace42ce1d Binary files /dev/null and b/public/terrain/17/214626/88456.terrain differ diff --git a/public/terrain/17/214626/88457.terrain b/public/terrain/17/214626/88457.terrain new file mode 100644 index 000000000..b3569cef8 Binary files /dev/null and b/public/terrain/17/214626/88457.terrain differ diff --git a/public/terrain/17/214626/88458.terrain b/public/terrain/17/214626/88458.terrain new file mode 100644 index 000000000..7c98bea57 Binary files /dev/null and b/public/terrain/17/214626/88458.terrain differ diff --git a/public/terrain/17/214626/88459.terrain b/public/terrain/17/214626/88459.terrain new file mode 100644 index 000000000..269e2e66f Binary files /dev/null and b/public/terrain/17/214626/88459.terrain differ diff --git a/public/terrain/17/214626/88460.terrain b/public/terrain/17/214626/88460.terrain new file mode 100644 index 000000000..5a1d02d52 Binary files /dev/null and b/public/terrain/17/214626/88460.terrain differ diff --git a/public/terrain/17/214626/88461.terrain b/public/terrain/17/214626/88461.terrain new file mode 100644 index 000000000..e89c1885b Binary files /dev/null and b/public/terrain/17/214626/88461.terrain differ diff --git a/public/terrain/17/214626/88462.terrain b/public/terrain/17/214626/88462.terrain new file mode 100644 index 000000000..3da721915 Binary files /dev/null and b/public/terrain/17/214626/88462.terrain differ diff --git a/public/terrain/17/214626/88463.terrain b/public/terrain/17/214626/88463.terrain new file mode 100644 index 000000000..0b0523d2d Binary files /dev/null and b/public/terrain/17/214626/88463.terrain differ diff --git a/public/terrain/17/214626/88464.terrain b/public/terrain/17/214626/88464.terrain new file mode 100644 index 000000000..713b82f8f Binary files /dev/null and b/public/terrain/17/214626/88464.terrain differ diff --git a/public/terrain/17/214626/88465.terrain b/public/terrain/17/214626/88465.terrain new file mode 100644 index 000000000..c8af39026 Binary files /dev/null and b/public/terrain/17/214626/88465.terrain differ diff --git a/public/terrain/17/214626/88466.terrain b/public/terrain/17/214626/88466.terrain new file mode 100644 index 000000000..c4b03096f Binary files /dev/null and b/public/terrain/17/214626/88466.terrain differ diff --git a/public/terrain/17/214626/88467.terrain b/public/terrain/17/214626/88467.terrain new file mode 100644 index 000000000..979e442fc Binary files /dev/null and b/public/terrain/17/214626/88467.terrain differ diff --git a/public/terrain/17/214626/88468.terrain b/public/terrain/17/214626/88468.terrain new file mode 100644 index 000000000..2d70b5652 Binary files /dev/null and b/public/terrain/17/214626/88468.terrain differ diff --git a/public/terrain/17/214626/88469.terrain b/public/terrain/17/214626/88469.terrain new file mode 100644 index 000000000..e122c8ded Binary files /dev/null and b/public/terrain/17/214626/88469.terrain differ diff --git a/public/terrain/17/214626/88470.terrain b/public/terrain/17/214626/88470.terrain new file mode 100644 index 000000000..e7fb0fc21 Binary files /dev/null and b/public/terrain/17/214626/88470.terrain differ diff --git a/public/terrain/17/214626/88471.terrain b/public/terrain/17/214626/88471.terrain new file mode 100644 index 000000000..cc4d23085 Binary files /dev/null and b/public/terrain/17/214626/88471.terrain differ diff --git a/public/terrain/17/214626/88472.terrain b/public/terrain/17/214626/88472.terrain new file mode 100644 index 000000000..840ef432a Binary files /dev/null and b/public/terrain/17/214626/88472.terrain differ diff --git a/public/terrain/17/214626/88473.terrain b/public/terrain/17/214626/88473.terrain new file mode 100644 index 000000000..e24263055 Binary files /dev/null and b/public/terrain/17/214626/88473.terrain differ diff --git a/public/terrain/17/214626/88474.terrain b/public/terrain/17/214626/88474.terrain new file mode 100644 index 000000000..d9b38b1c3 Binary files /dev/null and b/public/terrain/17/214626/88474.terrain differ diff --git a/public/terrain/17/214626/88475.terrain b/public/terrain/17/214626/88475.terrain new file mode 100644 index 000000000..82dd4e0f0 Binary files /dev/null and b/public/terrain/17/214626/88475.terrain differ diff --git a/public/terrain/17/214626/88476.terrain b/public/terrain/17/214626/88476.terrain new file mode 100644 index 000000000..f7fe612af Binary files /dev/null and b/public/terrain/17/214626/88476.terrain differ diff --git a/public/terrain/17/214626/88477.terrain b/public/terrain/17/214626/88477.terrain new file mode 100644 index 000000000..1a90ea1e6 Binary files /dev/null and b/public/terrain/17/214626/88477.terrain differ diff --git a/public/terrain/17/214626/88478.terrain b/public/terrain/17/214626/88478.terrain new file mode 100644 index 000000000..48044b104 Binary files /dev/null and b/public/terrain/17/214626/88478.terrain differ diff --git a/public/terrain/17/214626/88479.terrain b/public/terrain/17/214626/88479.terrain new file mode 100644 index 000000000..5c8c80a0f Binary files /dev/null and b/public/terrain/17/214626/88479.terrain differ diff --git a/public/terrain/17/214626/88480.terrain b/public/terrain/17/214626/88480.terrain new file mode 100644 index 000000000..e95f0fcab Binary files /dev/null and b/public/terrain/17/214626/88480.terrain differ diff --git a/public/terrain/17/214626/88481.terrain b/public/terrain/17/214626/88481.terrain new file mode 100644 index 000000000..428448ec0 Binary files /dev/null and b/public/terrain/17/214626/88481.terrain differ diff --git a/public/terrain/17/214626/88482.terrain b/public/terrain/17/214626/88482.terrain new file mode 100644 index 000000000..d66854502 Binary files /dev/null and b/public/terrain/17/214626/88482.terrain differ diff --git a/public/terrain/17/214626/88483.terrain b/public/terrain/17/214626/88483.terrain new file mode 100644 index 000000000..f249ad2cc Binary files /dev/null and b/public/terrain/17/214626/88483.terrain differ diff --git a/public/terrain/17/214626/88484.terrain b/public/terrain/17/214626/88484.terrain new file mode 100644 index 000000000..8b6368361 Binary files /dev/null and b/public/terrain/17/214626/88484.terrain differ diff --git a/public/terrain/17/214626/88485.terrain b/public/terrain/17/214626/88485.terrain new file mode 100644 index 000000000..831f7dfa0 Binary files /dev/null and b/public/terrain/17/214626/88485.terrain differ diff --git a/public/terrain/17/214626/88486.terrain b/public/terrain/17/214626/88486.terrain new file mode 100644 index 000000000..70bb400fa Binary files /dev/null and b/public/terrain/17/214626/88486.terrain differ diff --git a/public/terrain/17/214626/88487.terrain b/public/terrain/17/214626/88487.terrain new file mode 100644 index 000000000..3fd2ff564 Binary files /dev/null and b/public/terrain/17/214626/88487.terrain differ diff --git a/public/terrain/17/214626/88488.terrain b/public/terrain/17/214626/88488.terrain new file mode 100644 index 000000000..78c5db51a Binary files /dev/null and b/public/terrain/17/214626/88488.terrain differ diff --git a/public/terrain/17/214626/88489.terrain b/public/terrain/17/214626/88489.terrain new file mode 100644 index 000000000..5458bbfd2 Binary files /dev/null and b/public/terrain/17/214626/88489.terrain differ diff --git a/public/terrain/17/214626/88490.terrain b/public/terrain/17/214626/88490.terrain new file mode 100644 index 000000000..33d38683a Binary files /dev/null and b/public/terrain/17/214626/88490.terrain differ diff --git a/public/terrain/17/214626/88491.terrain b/public/terrain/17/214626/88491.terrain new file mode 100644 index 000000000..979b09a3d Binary files /dev/null and b/public/terrain/17/214626/88491.terrain differ diff --git a/public/terrain/17/214626/88492.terrain b/public/terrain/17/214626/88492.terrain new file mode 100644 index 000000000..1d6a5db4d Binary files /dev/null and b/public/terrain/17/214626/88492.terrain differ diff --git a/public/terrain/17/214626/88493.terrain b/public/terrain/17/214626/88493.terrain new file mode 100644 index 000000000..507ec4490 Binary files /dev/null and b/public/terrain/17/214626/88493.terrain differ diff --git a/public/terrain/17/214626/88494.terrain b/public/terrain/17/214626/88494.terrain new file mode 100644 index 000000000..ac4482a9b Binary files /dev/null and b/public/terrain/17/214626/88494.terrain differ diff --git a/public/terrain/17/214626/88495.terrain b/public/terrain/17/214626/88495.terrain new file mode 100644 index 000000000..4e379a585 Binary files /dev/null and b/public/terrain/17/214626/88495.terrain differ diff --git a/public/terrain/17/214626/88496.terrain b/public/terrain/17/214626/88496.terrain new file mode 100644 index 000000000..91028d69d Binary files /dev/null and b/public/terrain/17/214626/88496.terrain differ diff --git a/public/terrain/17/214626/88497.terrain b/public/terrain/17/214626/88497.terrain new file mode 100644 index 000000000..d996f63a5 Binary files /dev/null and b/public/terrain/17/214626/88497.terrain differ diff --git a/public/terrain/17/214626/88498.terrain b/public/terrain/17/214626/88498.terrain new file mode 100644 index 000000000..d7dbc1bf0 Binary files /dev/null and b/public/terrain/17/214626/88498.terrain differ diff --git a/public/terrain/17/214626/88499.terrain b/public/terrain/17/214626/88499.terrain new file mode 100644 index 000000000..a5f70fbfc Binary files /dev/null and b/public/terrain/17/214626/88499.terrain differ diff --git a/public/terrain/17/214626/88500.terrain b/public/terrain/17/214626/88500.terrain new file mode 100644 index 000000000..fd3e97e4a Binary files /dev/null and b/public/terrain/17/214626/88500.terrain differ diff --git a/public/terrain/17/214626/88501.terrain b/public/terrain/17/214626/88501.terrain new file mode 100644 index 000000000..ca6e2a64c Binary files /dev/null and b/public/terrain/17/214626/88501.terrain differ diff --git a/public/terrain/17/214626/88502.terrain b/public/terrain/17/214626/88502.terrain new file mode 100644 index 000000000..3574df52e Binary files /dev/null and b/public/terrain/17/214626/88502.terrain differ diff --git a/public/terrain/17/214626/88503.terrain b/public/terrain/17/214626/88503.terrain new file mode 100644 index 000000000..f86cef0b3 Binary files /dev/null and b/public/terrain/17/214626/88503.terrain differ diff --git a/public/terrain/17/214626/88504.terrain b/public/terrain/17/214626/88504.terrain new file mode 100644 index 000000000..09a3784b0 Binary files /dev/null and b/public/terrain/17/214626/88504.terrain differ diff --git a/public/terrain/17/214626/88505.terrain b/public/terrain/17/214626/88505.terrain new file mode 100644 index 000000000..6d6ca8f96 Binary files /dev/null and b/public/terrain/17/214626/88505.terrain differ diff --git a/public/terrain/17/214626/88506.terrain b/public/terrain/17/214626/88506.terrain new file mode 100644 index 000000000..82539aca7 Binary files /dev/null and b/public/terrain/17/214626/88506.terrain differ diff --git a/public/terrain/17/214626/88507.terrain b/public/terrain/17/214626/88507.terrain new file mode 100644 index 000000000..eeeab7066 Binary files /dev/null and b/public/terrain/17/214626/88507.terrain differ diff --git a/public/terrain/17/214626/88508.terrain b/public/terrain/17/214626/88508.terrain new file mode 100644 index 000000000..c9d240dd4 Binary files /dev/null and b/public/terrain/17/214626/88508.terrain differ diff --git a/public/terrain/17/214626/88509.terrain b/public/terrain/17/214626/88509.terrain new file mode 100644 index 000000000..6c56fb13f Binary files /dev/null and b/public/terrain/17/214626/88509.terrain differ diff --git a/public/terrain/17/214626/88510.terrain b/public/terrain/17/214626/88510.terrain new file mode 100644 index 000000000..1ccea7623 Binary files /dev/null and b/public/terrain/17/214626/88510.terrain differ diff --git a/public/terrain/17/214626/88511.terrain b/public/terrain/17/214626/88511.terrain new file mode 100644 index 000000000..05bd3419c Binary files /dev/null and b/public/terrain/17/214626/88511.terrain differ diff --git a/public/terrain/17/214626/88512.terrain b/public/terrain/17/214626/88512.terrain new file mode 100644 index 000000000..48937a9ac Binary files /dev/null and b/public/terrain/17/214626/88512.terrain differ diff --git a/public/terrain/17/214626/88513.terrain b/public/terrain/17/214626/88513.terrain new file mode 100644 index 000000000..2291187d3 Binary files /dev/null and b/public/terrain/17/214626/88513.terrain differ diff --git a/public/terrain/17/214626/88514.terrain b/public/terrain/17/214626/88514.terrain new file mode 100644 index 000000000..118b3830f Binary files /dev/null and b/public/terrain/17/214626/88514.terrain differ diff --git a/public/terrain/17/214627/88435.terrain b/public/terrain/17/214627/88435.terrain new file mode 100644 index 000000000..a4079c320 Binary files /dev/null and b/public/terrain/17/214627/88435.terrain differ diff --git a/public/terrain/17/214627/88436.terrain b/public/terrain/17/214627/88436.terrain new file mode 100644 index 000000000..e89839a75 Binary files /dev/null and b/public/terrain/17/214627/88436.terrain differ diff --git a/public/terrain/17/214627/88437.terrain b/public/terrain/17/214627/88437.terrain new file mode 100644 index 000000000..3bfc991c1 Binary files /dev/null and b/public/terrain/17/214627/88437.terrain differ diff --git a/public/terrain/17/214627/88438.terrain b/public/terrain/17/214627/88438.terrain new file mode 100644 index 000000000..fca2ea7a9 Binary files /dev/null and b/public/terrain/17/214627/88438.terrain differ diff --git a/public/terrain/17/214627/88439.terrain b/public/terrain/17/214627/88439.terrain new file mode 100644 index 000000000..19c09f659 Binary files /dev/null and b/public/terrain/17/214627/88439.terrain differ diff --git a/public/terrain/17/214627/88440.terrain b/public/terrain/17/214627/88440.terrain new file mode 100644 index 000000000..ebb6d9199 Binary files /dev/null and b/public/terrain/17/214627/88440.terrain differ diff --git a/public/terrain/17/214627/88441.terrain b/public/terrain/17/214627/88441.terrain new file mode 100644 index 000000000..926238ba7 Binary files /dev/null and b/public/terrain/17/214627/88441.terrain differ diff --git a/public/terrain/17/214627/88442.terrain b/public/terrain/17/214627/88442.terrain new file mode 100644 index 000000000..a2754288d Binary files /dev/null and b/public/terrain/17/214627/88442.terrain differ diff --git a/public/terrain/17/214627/88443.terrain b/public/terrain/17/214627/88443.terrain new file mode 100644 index 000000000..1c5c103e9 Binary files /dev/null and b/public/terrain/17/214627/88443.terrain differ diff --git a/public/terrain/17/214627/88444.terrain b/public/terrain/17/214627/88444.terrain new file mode 100644 index 000000000..2502005e4 Binary files /dev/null and b/public/terrain/17/214627/88444.terrain differ diff --git a/public/terrain/17/214627/88445.terrain b/public/terrain/17/214627/88445.terrain new file mode 100644 index 000000000..59de1b573 Binary files /dev/null and b/public/terrain/17/214627/88445.terrain differ diff --git a/public/terrain/17/214627/88446.terrain b/public/terrain/17/214627/88446.terrain new file mode 100644 index 000000000..a0548fd67 Binary files /dev/null and b/public/terrain/17/214627/88446.terrain differ diff --git a/public/terrain/17/214627/88447.terrain b/public/terrain/17/214627/88447.terrain new file mode 100644 index 000000000..08b0b5610 Binary files /dev/null and b/public/terrain/17/214627/88447.terrain differ diff --git a/public/terrain/17/214627/88448.terrain b/public/terrain/17/214627/88448.terrain new file mode 100644 index 000000000..7ca7aa4c2 Binary files /dev/null and b/public/terrain/17/214627/88448.terrain differ diff --git a/public/terrain/17/214627/88449.terrain b/public/terrain/17/214627/88449.terrain new file mode 100644 index 000000000..d5d57f0e1 Binary files /dev/null and b/public/terrain/17/214627/88449.terrain differ diff --git a/public/terrain/17/214627/88450.terrain b/public/terrain/17/214627/88450.terrain new file mode 100644 index 000000000..9a944944a Binary files /dev/null and b/public/terrain/17/214627/88450.terrain differ diff --git a/public/terrain/17/214627/88451.terrain b/public/terrain/17/214627/88451.terrain new file mode 100644 index 000000000..817b344a9 Binary files /dev/null and b/public/terrain/17/214627/88451.terrain differ diff --git a/public/terrain/17/214627/88452.terrain b/public/terrain/17/214627/88452.terrain new file mode 100644 index 000000000..8a9413bbb Binary files /dev/null and b/public/terrain/17/214627/88452.terrain differ diff --git a/public/terrain/17/214627/88453.terrain b/public/terrain/17/214627/88453.terrain new file mode 100644 index 000000000..60ddf9cc2 Binary files /dev/null and b/public/terrain/17/214627/88453.terrain differ diff --git a/public/terrain/17/214627/88454.terrain b/public/terrain/17/214627/88454.terrain new file mode 100644 index 000000000..99a94221c Binary files /dev/null and b/public/terrain/17/214627/88454.terrain differ diff --git a/public/terrain/17/214627/88455.terrain b/public/terrain/17/214627/88455.terrain new file mode 100644 index 000000000..3181d0fc8 Binary files /dev/null and b/public/terrain/17/214627/88455.terrain differ diff --git a/public/terrain/17/214627/88456.terrain b/public/terrain/17/214627/88456.terrain new file mode 100644 index 000000000..83a06a662 Binary files /dev/null and b/public/terrain/17/214627/88456.terrain differ diff --git a/public/terrain/17/214627/88457.terrain b/public/terrain/17/214627/88457.terrain new file mode 100644 index 000000000..b0504be0f Binary files /dev/null and b/public/terrain/17/214627/88457.terrain differ diff --git a/public/terrain/17/214627/88458.terrain b/public/terrain/17/214627/88458.terrain new file mode 100644 index 000000000..fdb4c93f8 Binary files /dev/null and b/public/terrain/17/214627/88458.terrain differ diff --git a/public/terrain/17/214627/88459.terrain b/public/terrain/17/214627/88459.terrain new file mode 100644 index 000000000..bd2532409 Binary files /dev/null and b/public/terrain/17/214627/88459.terrain differ diff --git a/public/terrain/17/214627/88460.terrain b/public/terrain/17/214627/88460.terrain new file mode 100644 index 000000000..88a547891 Binary files /dev/null and b/public/terrain/17/214627/88460.terrain differ diff --git a/public/terrain/17/214627/88461.terrain b/public/terrain/17/214627/88461.terrain new file mode 100644 index 000000000..7be1ed500 Binary files /dev/null and b/public/terrain/17/214627/88461.terrain differ diff --git a/public/terrain/17/214627/88462.terrain b/public/terrain/17/214627/88462.terrain new file mode 100644 index 000000000..89ceb4711 Binary files /dev/null and b/public/terrain/17/214627/88462.terrain differ diff --git a/public/terrain/17/214627/88463.terrain b/public/terrain/17/214627/88463.terrain new file mode 100644 index 000000000..1ec8a5fa2 Binary files /dev/null and b/public/terrain/17/214627/88463.terrain differ diff --git a/public/terrain/17/214627/88464.terrain b/public/terrain/17/214627/88464.terrain new file mode 100644 index 000000000..a4f9f33e3 Binary files /dev/null and b/public/terrain/17/214627/88464.terrain differ diff --git a/public/terrain/17/214627/88465.terrain b/public/terrain/17/214627/88465.terrain new file mode 100644 index 000000000..2313878ce Binary files /dev/null and b/public/terrain/17/214627/88465.terrain differ diff --git a/public/terrain/17/214627/88466.terrain b/public/terrain/17/214627/88466.terrain new file mode 100644 index 000000000..44cd2eb74 Binary files /dev/null and b/public/terrain/17/214627/88466.terrain differ diff --git a/public/terrain/17/214627/88467.terrain b/public/terrain/17/214627/88467.terrain new file mode 100644 index 000000000..523c1b420 Binary files /dev/null and b/public/terrain/17/214627/88467.terrain differ diff --git a/public/terrain/17/214627/88468.terrain b/public/terrain/17/214627/88468.terrain new file mode 100644 index 000000000..eace83d90 Binary files /dev/null and b/public/terrain/17/214627/88468.terrain differ diff --git a/public/terrain/17/214627/88469.terrain b/public/terrain/17/214627/88469.terrain new file mode 100644 index 000000000..d0bd105f9 Binary files /dev/null and b/public/terrain/17/214627/88469.terrain differ diff --git a/public/terrain/17/214627/88470.terrain b/public/terrain/17/214627/88470.terrain new file mode 100644 index 000000000..2c33e1873 Binary files /dev/null and b/public/terrain/17/214627/88470.terrain differ diff --git a/public/terrain/17/214627/88471.terrain b/public/terrain/17/214627/88471.terrain new file mode 100644 index 000000000..0fbcf63fe Binary files /dev/null and b/public/terrain/17/214627/88471.terrain differ diff --git a/public/terrain/17/214627/88472.terrain b/public/terrain/17/214627/88472.terrain new file mode 100644 index 000000000..7b5bb2426 Binary files /dev/null and b/public/terrain/17/214627/88472.terrain differ diff --git a/public/terrain/17/214627/88473.terrain b/public/terrain/17/214627/88473.terrain new file mode 100644 index 000000000..7a18339fc Binary files /dev/null and b/public/terrain/17/214627/88473.terrain differ diff --git a/public/terrain/17/214627/88474.terrain b/public/terrain/17/214627/88474.terrain new file mode 100644 index 000000000..0b591a481 Binary files /dev/null and b/public/terrain/17/214627/88474.terrain differ diff --git a/public/terrain/17/214627/88475.terrain b/public/terrain/17/214627/88475.terrain new file mode 100644 index 000000000..d8e3da97a Binary files /dev/null and b/public/terrain/17/214627/88475.terrain differ diff --git a/public/terrain/17/214627/88476.terrain b/public/terrain/17/214627/88476.terrain new file mode 100644 index 000000000..65a574ca2 Binary files /dev/null and b/public/terrain/17/214627/88476.terrain differ diff --git a/public/terrain/17/214627/88477.terrain b/public/terrain/17/214627/88477.terrain new file mode 100644 index 000000000..2aa2daed0 Binary files /dev/null and b/public/terrain/17/214627/88477.terrain differ diff --git a/public/terrain/17/214627/88478.terrain b/public/terrain/17/214627/88478.terrain new file mode 100644 index 000000000..2f09afe2b Binary files /dev/null and b/public/terrain/17/214627/88478.terrain differ diff --git a/public/terrain/17/214627/88479.terrain b/public/terrain/17/214627/88479.terrain new file mode 100644 index 000000000..de5f63138 Binary files /dev/null and b/public/terrain/17/214627/88479.terrain differ diff --git a/public/terrain/17/214627/88480.terrain b/public/terrain/17/214627/88480.terrain new file mode 100644 index 000000000..24840b3d4 Binary files /dev/null and b/public/terrain/17/214627/88480.terrain differ diff --git a/public/terrain/17/214627/88481.terrain b/public/terrain/17/214627/88481.terrain new file mode 100644 index 000000000..d28fd7c53 Binary files /dev/null and b/public/terrain/17/214627/88481.terrain differ diff --git a/public/terrain/17/214627/88482.terrain b/public/terrain/17/214627/88482.terrain new file mode 100644 index 000000000..17960b3f0 Binary files /dev/null and b/public/terrain/17/214627/88482.terrain differ diff --git a/public/terrain/17/214627/88483.terrain b/public/terrain/17/214627/88483.terrain new file mode 100644 index 000000000..68ce80641 Binary files /dev/null and b/public/terrain/17/214627/88483.terrain differ diff --git a/public/terrain/17/214627/88484.terrain b/public/terrain/17/214627/88484.terrain new file mode 100644 index 000000000..81be549f4 Binary files /dev/null and b/public/terrain/17/214627/88484.terrain differ diff --git a/public/terrain/17/214627/88485.terrain b/public/terrain/17/214627/88485.terrain new file mode 100644 index 000000000..aaf58d8c3 Binary files /dev/null and b/public/terrain/17/214627/88485.terrain differ diff --git a/public/terrain/17/214627/88486.terrain b/public/terrain/17/214627/88486.terrain new file mode 100644 index 000000000..4e8e2d0c9 Binary files /dev/null and b/public/terrain/17/214627/88486.terrain differ diff --git a/public/terrain/17/214627/88487.terrain b/public/terrain/17/214627/88487.terrain new file mode 100644 index 000000000..4b31ab996 Binary files /dev/null and b/public/terrain/17/214627/88487.terrain differ diff --git a/public/terrain/17/214627/88488.terrain b/public/terrain/17/214627/88488.terrain new file mode 100644 index 000000000..91f9502e0 Binary files /dev/null and b/public/terrain/17/214627/88488.terrain differ diff --git a/public/terrain/17/214627/88489.terrain b/public/terrain/17/214627/88489.terrain new file mode 100644 index 000000000..72b410b19 Binary files /dev/null and b/public/terrain/17/214627/88489.terrain differ diff --git a/public/terrain/17/214627/88490.terrain b/public/terrain/17/214627/88490.terrain new file mode 100644 index 000000000..fc63c1c70 Binary files /dev/null and b/public/terrain/17/214627/88490.terrain differ diff --git a/public/terrain/17/214627/88491.terrain b/public/terrain/17/214627/88491.terrain new file mode 100644 index 000000000..5d895492c Binary files /dev/null and b/public/terrain/17/214627/88491.terrain differ diff --git a/public/terrain/17/214627/88492.terrain b/public/terrain/17/214627/88492.terrain new file mode 100644 index 000000000..33156236c Binary files /dev/null and b/public/terrain/17/214627/88492.terrain differ diff --git a/public/terrain/17/214627/88493.terrain b/public/terrain/17/214627/88493.terrain new file mode 100644 index 000000000..699d9d93b Binary files /dev/null and b/public/terrain/17/214627/88493.terrain differ diff --git a/public/terrain/17/214627/88494.terrain b/public/terrain/17/214627/88494.terrain new file mode 100644 index 000000000..3706bd603 Binary files /dev/null and b/public/terrain/17/214627/88494.terrain differ diff --git a/public/terrain/17/214627/88495.terrain b/public/terrain/17/214627/88495.terrain new file mode 100644 index 000000000..496da4570 Binary files /dev/null and b/public/terrain/17/214627/88495.terrain differ diff --git a/public/terrain/17/214627/88496.terrain b/public/terrain/17/214627/88496.terrain new file mode 100644 index 000000000..9a8071f07 Binary files /dev/null and b/public/terrain/17/214627/88496.terrain differ diff --git a/public/terrain/17/214627/88497.terrain b/public/terrain/17/214627/88497.terrain new file mode 100644 index 000000000..d5a2dee91 Binary files /dev/null and b/public/terrain/17/214627/88497.terrain differ diff --git a/public/terrain/17/214627/88498.terrain b/public/terrain/17/214627/88498.terrain new file mode 100644 index 000000000..d96392db8 Binary files /dev/null and b/public/terrain/17/214627/88498.terrain differ diff --git a/public/terrain/17/214627/88499.terrain b/public/terrain/17/214627/88499.terrain new file mode 100644 index 000000000..f02e5e9f0 Binary files /dev/null and b/public/terrain/17/214627/88499.terrain differ diff --git a/public/terrain/17/214627/88500.terrain b/public/terrain/17/214627/88500.terrain new file mode 100644 index 000000000..79b0a104b Binary files /dev/null and b/public/terrain/17/214627/88500.terrain differ diff --git a/public/terrain/17/214627/88501.terrain b/public/terrain/17/214627/88501.terrain new file mode 100644 index 000000000..496771392 Binary files /dev/null and b/public/terrain/17/214627/88501.terrain differ diff --git a/public/terrain/17/214627/88502.terrain b/public/terrain/17/214627/88502.terrain new file mode 100644 index 000000000..cd00c3f46 Binary files /dev/null and b/public/terrain/17/214627/88502.terrain differ diff --git a/public/terrain/17/214627/88503.terrain b/public/terrain/17/214627/88503.terrain new file mode 100644 index 000000000..eedceb316 Binary files /dev/null and b/public/terrain/17/214627/88503.terrain differ diff --git a/public/terrain/17/214627/88504.terrain b/public/terrain/17/214627/88504.terrain new file mode 100644 index 000000000..ccc73b7d7 Binary files /dev/null and b/public/terrain/17/214627/88504.terrain differ diff --git a/public/terrain/17/214627/88505.terrain b/public/terrain/17/214627/88505.terrain new file mode 100644 index 000000000..e9373dda9 Binary files /dev/null and b/public/terrain/17/214627/88505.terrain differ diff --git a/public/terrain/17/214627/88506.terrain b/public/terrain/17/214627/88506.terrain new file mode 100644 index 000000000..66f621bde Binary files /dev/null and b/public/terrain/17/214627/88506.terrain differ diff --git a/public/terrain/17/214627/88507.terrain b/public/terrain/17/214627/88507.terrain new file mode 100644 index 000000000..6f25f20ec Binary files /dev/null and b/public/terrain/17/214627/88507.terrain differ diff --git a/public/terrain/17/214627/88508.terrain b/public/terrain/17/214627/88508.terrain new file mode 100644 index 000000000..e84d6af41 Binary files /dev/null and b/public/terrain/17/214627/88508.terrain differ diff --git a/public/terrain/17/214627/88509.terrain b/public/terrain/17/214627/88509.terrain new file mode 100644 index 000000000..1ec7174fe Binary files /dev/null and b/public/terrain/17/214627/88509.terrain differ diff --git a/public/terrain/17/214627/88510.terrain b/public/terrain/17/214627/88510.terrain new file mode 100644 index 000000000..c4155a6ab Binary files /dev/null and b/public/terrain/17/214627/88510.terrain differ diff --git a/public/terrain/17/214627/88511.terrain b/public/terrain/17/214627/88511.terrain new file mode 100644 index 000000000..5f4a8d3d8 Binary files /dev/null and b/public/terrain/17/214627/88511.terrain differ diff --git a/public/terrain/17/214627/88512.terrain b/public/terrain/17/214627/88512.terrain new file mode 100644 index 000000000..e4c5e0894 Binary files /dev/null and b/public/terrain/17/214627/88512.terrain differ diff --git a/public/terrain/17/214627/88513.terrain b/public/terrain/17/214627/88513.terrain new file mode 100644 index 000000000..35e82a911 Binary files /dev/null and b/public/terrain/17/214627/88513.terrain differ diff --git a/public/terrain/17/214627/88514.terrain b/public/terrain/17/214627/88514.terrain new file mode 100644 index 000000000..a3232692a Binary files /dev/null and b/public/terrain/17/214627/88514.terrain differ diff --git a/public/terrain/17/214628/88435.terrain b/public/terrain/17/214628/88435.terrain new file mode 100644 index 000000000..829b463ed Binary files /dev/null and b/public/terrain/17/214628/88435.terrain differ diff --git a/public/terrain/17/214628/88436.terrain b/public/terrain/17/214628/88436.terrain new file mode 100644 index 000000000..f6ebc76e3 Binary files /dev/null and b/public/terrain/17/214628/88436.terrain differ diff --git a/public/terrain/17/214628/88437.terrain b/public/terrain/17/214628/88437.terrain new file mode 100644 index 000000000..db1462e18 Binary files /dev/null and b/public/terrain/17/214628/88437.terrain differ diff --git a/public/terrain/17/214628/88438.terrain b/public/terrain/17/214628/88438.terrain new file mode 100644 index 000000000..10df8c94b Binary files /dev/null and b/public/terrain/17/214628/88438.terrain differ diff --git a/public/terrain/17/214628/88439.terrain b/public/terrain/17/214628/88439.terrain new file mode 100644 index 000000000..8d87de183 Binary files /dev/null and b/public/terrain/17/214628/88439.terrain differ diff --git a/public/terrain/17/214628/88440.terrain b/public/terrain/17/214628/88440.terrain new file mode 100644 index 000000000..2cca7fcf3 Binary files /dev/null and b/public/terrain/17/214628/88440.terrain differ diff --git a/public/terrain/17/214628/88441.terrain b/public/terrain/17/214628/88441.terrain new file mode 100644 index 000000000..0f4655866 Binary files /dev/null and b/public/terrain/17/214628/88441.terrain differ diff --git a/public/terrain/17/214628/88442.terrain b/public/terrain/17/214628/88442.terrain new file mode 100644 index 000000000..f4e3a36cb Binary files /dev/null and b/public/terrain/17/214628/88442.terrain differ diff --git a/public/terrain/17/214628/88443.terrain b/public/terrain/17/214628/88443.terrain new file mode 100644 index 000000000..6bd26e8df Binary files /dev/null and b/public/terrain/17/214628/88443.terrain differ diff --git a/public/terrain/17/214628/88444.terrain b/public/terrain/17/214628/88444.terrain new file mode 100644 index 000000000..59159a02c Binary files /dev/null and b/public/terrain/17/214628/88444.terrain differ diff --git a/public/terrain/17/214628/88445.terrain b/public/terrain/17/214628/88445.terrain new file mode 100644 index 000000000..6374d6d2d Binary files /dev/null and b/public/terrain/17/214628/88445.terrain differ diff --git a/public/terrain/17/214628/88446.terrain b/public/terrain/17/214628/88446.terrain new file mode 100644 index 000000000..d1ccc065a Binary files /dev/null and b/public/terrain/17/214628/88446.terrain differ diff --git a/public/terrain/17/214628/88447.terrain b/public/terrain/17/214628/88447.terrain new file mode 100644 index 000000000..39fe4c108 Binary files /dev/null and b/public/terrain/17/214628/88447.terrain differ diff --git a/public/terrain/17/214628/88448.terrain b/public/terrain/17/214628/88448.terrain new file mode 100644 index 000000000..568075f75 Binary files /dev/null and b/public/terrain/17/214628/88448.terrain differ diff --git a/public/terrain/17/214628/88449.terrain b/public/terrain/17/214628/88449.terrain new file mode 100644 index 000000000..0067c9573 Binary files /dev/null and b/public/terrain/17/214628/88449.terrain differ diff --git a/public/terrain/17/214628/88450.terrain b/public/terrain/17/214628/88450.terrain new file mode 100644 index 000000000..fb43db068 Binary files /dev/null and b/public/terrain/17/214628/88450.terrain differ diff --git a/public/terrain/17/214628/88451.terrain b/public/terrain/17/214628/88451.terrain new file mode 100644 index 000000000..d19c21aaa Binary files /dev/null and b/public/terrain/17/214628/88451.terrain differ diff --git a/public/terrain/17/214628/88452.terrain b/public/terrain/17/214628/88452.terrain new file mode 100644 index 000000000..f6ade5da8 Binary files /dev/null and b/public/terrain/17/214628/88452.terrain differ diff --git a/public/terrain/17/214628/88453.terrain b/public/terrain/17/214628/88453.terrain new file mode 100644 index 000000000..bb503c222 Binary files /dev/null and b/public/terrain/17/214628/88453.terrain differ diff --git a/public/terrain/17/214628/88454.terrain b/public/terrain/17/214628/88454.terrain new file mode 100644 index 000000000..fa0b5cd1a Binary files /dev/null and b/public/terrain/17/214628/88454.terrain differ diff --git a/public/terrain/17/214628/88455.terrain b/public/terrain/17/214628/88455.terrain new file mode 100644 index 000000000..22819139c Binary files /dev/null and b/public/terrain/17/214628/88455.terrain differ diff --git a/public/terrain/17/214628/88456.terrain b/public/terrain/17/214628/88456.terrain new file mode 100644 index 000000000..7c42d7f27 Binary files /dev/null and b/public/terrain/17/214628/88456.terrain differ diff --git a/public/terrain/17/214628/88457.terrain b/public/terrain/17/214628/88457.terrain new file mode 100644 index 000000000..bd54cb408 Binary files /dev/null and b/public/terrain/17/214628/88457.terrain differ diff --git a/public/terrain/17/214628/88458.terrain b/public/terrain/17/214628/88458.terrain new file mode 100644 index 000000000..3acbd9b63 Binary files /dev/null and b/public/terrain/17/214628/88458.terrain differ diff --git a/public/terrain/17/214628/88459.terrain b/public/terrain/17/214628/88459.terrain new file mode 100644 index 000000000..337fe0b7b Binary files /dev/null and b/public/terrain/17/214628/88459.terrain differ diff --git a/public/terrain/17/214628/88460.terrain b/public/terrain/17/214628/88460.terrain new file mode 100644 index 000000000..8b5a5900b Binary files /dev/null and b/public/terrain/17/214628/88460.terrain differ diff --git a/public/terrain/17/214628/88461.terrain b/public/terrain/17/214628/88461.terrain new file mode 100644 index 000000000..d1d1b6c61 Binary files /dev/null and b/public/terrain/17/214628/88461.terrain differ diff --git a/public/terrain/17/214628/88462.terrain b/public/terrain/17/214628/88462.terrain new file mode 100644 index 000000000..ff1607368 Binary files /dev/null and b/public/terrain/17/214628/88462.terrain differ diff --git a/public/terrain/17/214628/88463.terrain b/public/terrain/17/214628/88463.terrain new file mode 100644 index 000000000..c16e71834 Binary files /dev/null and b/public/terrain/17/214628/88463.terrain differ diff --git a/public/terrain/17/214628/88464.terrain b/public/terrain/17/214628/88464.terrain new file mode 100644 index 000000000..c930b2928 Binary files /dev/null and b/public/terrain/17/214628/88464.terrain differ diff --git a/public/terrain/17/214628/88465.terrain b/public/terrain/17/214628/88465.terrain new file mode 100644 index 000000000..e6afd995e Binary files /dev/null and b/public/terrain/17/214628/88465.terrain differ diff --git a/public/terrain/17/214628/88466.terrain b/public/terrain/17/214628/88466.terrain new file mode 100644 index 000000000..1227fe092 Binary files /dev/null and b/public/terrain/17/214628/88466.terrain differ diff --git a/public/terrain/17/214628/88467.terrain b/public/terrain/17/214628/88467.terrain new file mode 100644 index 000000000..2beda9ea9 Binary files /dev/null and b/public/terrain/17/214628/88467.terrain differ diff --git a/public/terrain/17/214628/88468.terrain b/public/terrain/17/214628/88468.terrain new file mode 100644 index 000000000..9cf48f6d2 Binary files /dev/null and b/public/terrain/17/214628/88468.terrain differ diff --git a/public/terrain/17/214628/88469.terrain b/public/terrain/17/214628/88469.terrain new file mode 100644 index 000000000..68ab41c32 Binary files /dev/null and b/public/terrain/17/214628/88469.terrain differ diff --git a/public/terrain/17/214628/88470.terrain b/public/terrain/17/214628/88470.terrain new file mode 100644 index 000000000..a24c9f842 Binary files /dev/null and b/public/terrain/17/214628/88470.terrain differ diff --git a/public/terrain/17/214628/88471.terrain b/public/terrain/17/214628/88471.terrain new file mode 100644 index 000000000..93d4709fa Binary files /dev/null and b/public/terrain/17/214628/88471.terrain differ diff --git a/public/terrain/17/214628/88472.terrain b/public/terrain/17/214628/88472.terrain new file mode 100644 index 000000000..6bdf34c2e Binary files /dev/null and b/public/terrain/17/214628/88472.terrain differ diff --git a/public/terrain/17/214628/88473.terrain b/public/terrain/17/214628/88473.terrain new file mode 100644 index 000000000..665275e66 Binary files /dev/null and b/public/terrain/17/214628/88473.terrain differ diff --git a/public/terrain/17/214628/88474.terrain b/public/terrain/17/214628/88474.terrain new file mode 100644 index 000000000..30e95e351 Binary files /dev/null and b/public/terrain/17/214628/88474.terrain differ diff --git a/public/terrain/17/214628/88475.terrain b/public/terrain/17/214628/88475.terrain new file mode 100644 index 000000000..70dce3e11 Binary files /dev/null and b/public/terrain/17/214628/88475.terrain differ diff --git a/public/terrain/17/214628/88476.terrain b/public/terrain/17/214628/88476.terrain new file mode 100644 index 000000000..8bdf5c310 Binary files /dev/null and b/public/terrain/17/214628/88476.terrain differ diff --git a/public/terrain/17/214628/88477.terrain b/public/terrain/17/214628/88477.terrain new file mode 100644 index 000000000..99099a11f Binary files /dev/null and b/public/terrain/17/214628/88477.terrain differ diff --git a/public/terrain/17/214628/88478.terrain b/public/terrain/17/214628/88478.terrain new file mode 100644 index 000000000..a0ff43d8e Binary files /dev/null and b/public/terrain/17/214628/88478.terrain differ diff --git a/public/terrain/17/214628/88479.terrain b/public/terrain/17/214628/88479.terrain new file mode 100644 index 000000000..401dee179 Binary files /dev/null and b/public/terrain/17/214628/88479.terrain differ diff --git a/public/terrain/17/214628/88480.terrain b/public/terrain/17/214628/88480.terrain new file mode 100644 index 000000000..b70ced2df Binary files /dev/null and b/public/terrain/17/214628/88480.terrain differ diff --git a/public/terrain/17/214628/88481.terrain b/public/terrain/17/214628/88481.terrain new file mode 100644 index 000000000..a617df5ee Binary files /dev/null and b/public/terrain/17/214628/88481.terrain differ diff --git a/public/terrain/17/214628/88482.terrain b/public/terrain/17/214628/88482.terrain new file mode 100644 index 000000000..8c1c1902e Binary files /dev/null and b/public/terrain/17/214628/88482.terrain differ diff --git a/public/terrain/17/214628/88483.terrain b/public/terrain/17/214628/88483.terrain new file mode 100644 index 000000000..f933f8d7e Binary files /dev/null and b/public/terrain/17/214628/88483.terrain differ diff --git a/public/terrain/17/214628/88484.terrain b/public/terrain/17/214628/88484.terrain new file mode 100644 index 000000000..1cdd60a6f Binary files /dev/null and b/public/terrain/17/214628/88484.terrain differ diff --git a/public/terrain/17/214628/88485.terrain b/public/terrain/17/214628/88485.terrain new file mode 100644 index 000000000..74ff3a8a6 Binary files /dev/null and b/public/terrain/17/214628/88485.terrain differ diff --git a/public/terrain/17/214628/88486.terrain b/public/terrain/17/214628/88486.terrain new file mode 100644 index 000000000..0a2de138f Binary files /dev/null and b/public/terrain/17/214628/88486.terrain differ diff --git a/public/terrain/17/214628/88487.terrain b/public/terrain/17/214628/88487.terrain new file mode 100644 index 000000000..c8c35814c Binary files /dev/null and b/public/terrain/17/214628/88487.terrain differ diff --git a/public/terrain/17/214628/88488.terrain b/public/terrain/17/214628/88488.terrain new file mode 100644 index 000000000..d90b65bee Binary files /dev/null and b/public/terrain/17/214628/88488.terrain differ diff --git a/public/terrain/17/214628/88489.terrain b/public/terrain/17/214628/88489.terrain new file mode 100644 index 000000000..b25ee815e Binary files /dev/null and b/public/terrain/17/214628/88489.terrain differ diff --git a/public/terrain/17/214628/88490.terrain b/public/terrain/17/214628/88490.terrain new file mode 100644 index 000000000..6ede457bb Binary files /dev/null and b/public/terrain/17/214628/88490.terrain differ diff --git a/public/terrain/17/214628/88491.terrain b/public/terrain/17/214628/88491.terrain new file mode 100644 index 000000000..1324f1da9 Binary files /dev/null and b/public/terrain/17/214628/88491.terrain differ diff --git a/public/terrain/17/214628/88492.terrain b/public/terrain/17/214628/88492.terrain new file mode 100644 index 000000000..4ec3b2535 Binary files /dev/null and b/public/terrain/17/214628/88492.terrain differ diff --git a/public/terrain/17/214628/88493.terrain b/public/terrain/17/214628/88493.terrain new file mode 100644 index 000000000..e9ae648ae Binary files /dev/null and b/public/terrain/17/214628/88493.terrain differ diff --git a/public/terrain/17/214628/88494.terrain b/public/terrain/17/214628/88494.terrain new file mode 100644 index 000000000..8433021b3 Binary files /dev/null and b/public/terrain/17/214628/88494.terrain differ diff --git a/public/terrain/17/214628/88495.terrain b/public/terrain/17/214628/88495.terrain new file mode 100644 index 000000000..608236945 Binary files /dev/null and b/public/terrain/17/214628/88495.terrain differ diff --git a/public/terrain/17/214628/88496.terrain b/public/terrain/17/214628/88496.terrain new file mode 100644 index 000000000..b883909b2 Binary files /dev/null and b/public/terrain/17/214628/88496.terrain differ diff --git a/public/terrain/17/214628/88497.terrain b/public/terrain/17/214628/88497.terrain new file mode 100644 index 000000000..54eae19f5 Binary files /dev/null and b/public/terrain/17/214628/88497.terrain differ diff --git a/public/terrain/17/214628/88498.terrain b/public/terrain/17/214628/88498.terrain new file mode 100644 index 000000000..6541d4d77 Binary files /dev/null and b/public/terrain/17/214628/88498.terrain differ diff --git a/public/terrain/17/214628/88499.terrain b/public/terrain/17/214628/88499.terrain new file mode 100644 index 000000000..094a5c58b Binary files /dev/null and b/public/terrain/17/214628/88499.terrain differ diff --git a/public/terrain/17/214628/88500.terrain b/public/terrain/17/214628/88500.terrain new file mode 100644 index 000000000..00423a7cb Binary files /dev/null and b/public/terrain/17/214628/88500.terrain differ diff --git a/public/terrain/17/214628/88501.terrain b/public/terrain/17/214628/88501.terrain new file mode 100644 index 000000000..e5d20fcc6 Binary files /dev/null and b/public/terrain/17/214628/88501.terrain differ diff --git a/public/terrain/17/214628/88502.terrain b/public/terrain/17/214628/88502.terrain new file mode 100644 index 000000000..9b6fdde0c Binary files /dev/null and b/public/terrain/17/214628/88502.terrain differ diff --git a/public/terrain/17/214628/88503.terrain b/public/terrain/17/214628/88503.terrain new file mode 100644 index 000000000..a02013d17 Binary files /dev/null and b/public/terrain/17/214628/88503.terrain differ diff --git a/public/terrain/17/214628/88504.terrain b/public/terrain/17/214628/88504.terrain new file mode 100644 index 000000000..aaa3e30d2 Binary files /dev/null and b/public/terrain/17/214628/88504.terrain differ diff --git a/public/terrain/17/214628/88505.terrain b/public/terrain/17/214628/88505.terrain new file mode 100644 index 000000000..8525da667 Binary files /dev/null and b/public/terrain/17/214628/88505.terrain differ diff --git a/public/terrain/17/214628/88506.terrain b/public/terrain/17/214628/88506.terrain new file mode 100644 index 000000000..2a27e3f97 Binary files /dev/null and b/public/terrain/17/214628/88506.terrain differ diff --git a/public/terrain/17/214628/88507.terrain b/public/terrain/17/214628/88507.terrain new file mode 100644 index 000000000..700903225 Binary files /dev/null and b/public/terrain/17/214628/88507.terrain differ diff --git a/public/terrain/17/214628/88508.terrain b/public/terrain/17/214628/88508.terrain new file mode 100644 index 000000000..ae787996d Binary files /dev/null and b/public/terrain/17/214628/88508.terrain differ diff --git a/public/terrain/17/214628/88509.terrain b/public/terrain/17/214628/88509.terrain new file mode 100644 index 000000000..10e18b598 Binary files /dev/null and b/public/terrain/17/214628/88509.terrain differ diff --git a/public/terrain/17/214628/88510.terrain b/public/terrain/17/214628/88510.terrain new file mode 100644 index 000000000..3f1edd3f2 Binary files /dev/null and b/public/terrain/17/214628/88510.terrain differ diff --git a/public/terrain/17/214628/88511.terrain b/public/terrain/17/214628/88511.terrain new file mode 100644 index 000000000..f9b7a4945 Binary files /dev/null and b/public/terrain/17/214628/88511.terrain differ diff --git a/public/terrain/17/214628/88512.terrain b/public/terrain/17/214628/88512.terrain new file mode 100644 index 000000000..a27b02634 Binary files /dev/null and b/public/terrain/17/214628/88512.terrain differ diff --git a/public/terrain/17/214628/88513.terrain b/public/terrain/17/214628/88513.terrain new file mode 100644 index 000000000..be54c9a61 Binary files /dev/null and b/public/terrain/17/214628/88513.terrain differ diff --git a/public/terrain/17/214628/88514.terrain b/public/terrain/17/214628/88514.terrain new file mode 100644 index 000000000..fefa10a72 Binary files /dev/null and b/public/terrain/17/214628/88514.terrain differ diff --git a/public/terrain/17/214629/88435.terrain b/public/terrain/17/214629/88435.terrain new file mode 100644 index 000000000..2e61095d5 Binary files /dev/null and b/public/terrain/17/214629/88435.terrain differ diff --git a/public/terrain/17/214629/88436.terrain b/public/terrain/17/214629/88436.terrain new file mode 100644 index 000000000..0cb763cde Binary files /dev/null and b/public/terrain/17/214629/88436.terrain differ diff --git a/public/terrain/17/214629/88437.terrain b/public/terrain/17/214629/88437.terrain new file mode 100644 index 000000000..6ee22a748 Binary files /dev/null and b/public/terrain/17/214629/88437.terrain differ diff --git a/public/terrain/17/214629/88438.terrain b/public/terrain/17/214629/88438.terrain new file mode 100644 index 000000000..2d3020034 Binary files /dev/null and b/public/terrain/17/214629/88438.terrain differ diff --git a/public/terrain/17/214629/88439.terrain b/public/terrain/17/214629/88439.terrain new file mode 100644 index 000000000..5c6481732 Binary files /dev/null and b/public/terrain/17/214629/88439.terrain differ diff --git a/public/terrain/17/214629/88440.terrain b/public/terrain/17/214629/88440.terrain new file mode 100644 index 000000000..8592d34b9 Binary files /dev/null and b/public/terrain/17/214629/88440.terrain differ diff --git a/public/terrain/17/214629/88441.terrain b/public/terrain/17/214629/88441.terrain new file mode 100644 index 000000000..ce4504e78 Binary files /dev/null and b/public/terrain/17/214629/88441.terrain differ diff --git a/public/terrain/17/214629/88442.terrain b/public/terrain/17/214629/88442.terrain new file mode 100644 index 000000000..e872ea2ed Binary files /dev/null and b/public/terrain/17/214629/88442.terrain differ diff --git a/public/terrain/17/214629/88443.terrain b/public/terrain/17/214629/88443.terrain new file mode 100644 index 000000000..db7d58273 Binary files /dev/null and b/public/terrain/17/214629/88443.terrain differ diff --git a/public/terrain/17/214629/88444.terrain b/public/terrain/17/214629/88444.terrain new file mode 100644 index 000000000..147b26d2e Binary files /dev/null and b/public/terrain/17/214629/88444.terrain differ diff --git a/public/terrain/17/214629/88445.terrain b/public/terrain/17/214629/88445.terrain new file mode 100644 index 000000000..28a36ced2 Binary files /dev/null and b/public/terrain/17/214629/88445.terrain differ diff --git a/public/terrain/17/214629/88446.terrain b/public/terrain/17/214629/88446.terrain new file mode 100644 index 000000000..1028fbf6c Binary files /dev/null and b/public/terrain/17/214629/88446.terrain differ diff --git a/public/terrain/17/214629/88447.terrain b/public/terrain/17/214629/88447.terrain new file mode 100644 index 000000000..86f95c720 Binary files /dev/null and b/public/terrain/17/214629/88447.terrain differ diff --git a/public/terrain/17/214629/88448.terrain b/public/terrain/17/214629/88448.terrain new file mode 100644 index 000000000..e0331318f Binary files /dev/null and b/public/terrain/17/214629/88448.terrain differ diff --git a/public/terrain/17/214629/88449.terrain b/public/terrain/17/214629/88449.terrain new file mode 100644 index 000000000..19e222f38 Binary files /dev/null and b/public/terrain/17/214629/88449.terrain differ diff --git a/public/terrain/17/214629/88450.terrain b/public/terrain/17/214629/88450.terrain new file mode 100644 index 000000000..96b4053e4 Binary files /dev/null and b/public/terrain/17/214629/88450.terrain differ diff --git a/public/terrain/17/214629/88451.terrain b/public/terrain/17/214629/88451.terrain new file mode 100644 index 000000000..dc749ea3d Binary files /dev/null and b/public/terrain/17/214629/88451.terrain differ diff --git a/public/terrain/17/214629/88452.terrain b/public/terrain/17/214629/88452.terrain new file mode 100644 index 000000000..cba844465 Binary files /dev/null and b/public/terrain/17/214629/88452.terrain differ diff --git a/public/terrain/17/214629/88453.terrain b/public/terrain/17/214629/88453.terrain new file mode 100644 index 000000000..309bcddda Binary files /dev/null and b/public/terrain/17/214629/88453.terrain differ diff --git a/public/terrain/17/214629/88454.terrain b/public/terrain/17/214629/88454.terrain new file mode 100644 index 000000000..0188a5675 Binary files /dev/null and b/public/terrain/17/214629/88454.terrain differ diff --git a/public/terrain/17/214629/88455.terrain b/public/terrain/17/214629/88455.terrain new file mode 100644 index 000000000..51e8cf1a8 Binary files /dev/null and b/public/terrain/17/214629/88455.terrain differ diff --git a/public/terrain/17/214629/88456.terrain b/public/terrain/17/214629/88456.terrain new file mode 100644 index 000000000..1c3409210 Binary files /dev/null and b/public/terrain/17/214629/88456.terrain differ diff --git a/public/terrain/17/214629/88457.terrain b/public/terrain/17/214629/88457.terrain new file mode 100644 index 000000000..c2f1d7385 Binary files /dev/null and b/public/terrain/17/214629/88457.terrain differ diff --git a/public/terrain/17/214629/88458.terrain b/public/terrain/17/214629/88458.terrain new file mode 100644 index 000000000..a74038cbc Binary files /dev/null and b/public/terrain/17/214629/88458.terrain differ diff --git a/public/terrain/17/214629/88459.terrain b/public/terrain/17/214629/88459.terrain new file mode 100644 index 000000000..510a78a4a Binary files /dev/null and b/public/terrain/17/214629/88459.terrain differ diff --git a/public/terrain/17/214629/88460.terrain b/public/terrain/17/214629/88460.terrain new file mode 100644 index 000000000..87ea1d08e Binary files /dev/null and b/public/terrain/17/214629/88460.terrain differ diff --git a/public/terrain/17/214629/88461.terrain b/public/terrain/17/214629/88461.terrain new file mode 100644 index 000000000..ff0f23f4f Binary files /dev/null and b/public/terrain/17/214629/88461.terrain differ diff --git a/public/terrain/17/214629/88462.terrain b/public/terrain/17/214629/88462.terrain new file mode 100644 index 000000000..619a7b24a Binary files /dev/null and b/public/terrain/17/214629/88462.terrain differ diff --git a/public/terrain/17/214629/88463.terrain b/public/terrain/17/214629/88463.terrain new file mode 100644 index 000000000..547dc8feb Binary files /dev/null and b/public/terrain/17/214629/88463.terrain differ diff --git a/public/terrain/17/214629/88464.terrain b/public/terrain/17/214629/88464.terrain new file mode 100644 index 000000000..53e9b2d82 Binary files /dev/null and b/public/terrain/17/214629/88464.terrain differ diff --git a/public/terrain/17/214629/88465.terrain b/public/terrain/17/214629/88465.terrain new file mode 100644 index 000000000..f37a78566 Binary files /dev/null and b/public/terrain/17/214629/88465.terrain differ diff --git a/public/terrain/17/214629/88466.terrain b/public/terrain/17/214629/88466.terrain new file mode 100644 index 000000000..0136c379e Binary files /dev/null and b/public/terrain/17/214629/88466.terrain differ diff --git a/public/terrain/17/214629/88467.terrain b/public/terrain/17/214629/88467.terrain new file mode 100644 index 000000000..bceef03e0 Binary files /dev/null and b/public/terrain/17/214629/88467.terrain differ diff --git a/public/terrain/17/214629/88468.terrain b/public/terrain/17/214629/88468.terrain new file mode 100644 index 000000000..5a1e7f4f5 Binary files /dev/null and b/public/terrain/17/214629/88468.terrain differ diff --git a/public/terrain/17/214629/88469.terrain b/public/terrain/17/214629/88469.terrain new file mode 100644 index 000000000..4664b1ede Binary files /dev/null and b/public/terrain/17/214629/88469.terrain differ diff --git a/public/terrain/17/214629/88470.terrain b/public/terrain/17/214629/88470.terrain new file mode 100644 index 000000000..8e5fcacf5 Binary files /dev/null and b/public/terrain/17/214629/88470.terrain differ diff --git a/public/terrain/17/214629/88471.terrain b/public/terrain/17/214629/88471.terrain new file mode 100644 index 000000000..8a74f5ec6 Binary files /dev/null and b/public/terrain/17/214629/88471.terrain differ diff --git a/public/terrain/17/214629/88472.terrain b/public/terrain/17/214629/88472.terrain new file mode 100644 index 000000000..09802bdb1 Binary files /dev/null and b/public/terrain/17/214629/88472.terrain differ diff --git a/public/terrain/17/214629/88473.terrain b/public/terrain/17/214629/88473.terrain new file mode 100644 index 000000000..da5bf53aa Binary files /dev/null and b/public/terrain/17/214629/88473.terrain differ diff --git a/public/terrain/17/214629/88474.terrain b/public/terrain/17/214629/88474.terrain new file mode 100644 index 000000000..950f73c48 Binary files /dev/null and b/public/terrain/17/214629/88474.terrain differ diff --git a/public/terrain/17/214629/88475.terrain b/public/terrain/17/214629/88475.terrain new file mode 100644 index 000000000..c053fba23 Binary files /dev/null and b/public/terrain/17/214629/88475.terrain differ diff --git a/public/terrain/17/214629/88476.terrain b/public/terrain/17/214629/88476.terrain new file mode 100644 index 000000000..a0eeed309 Binary files /dev/null and b/public/terrain/17/214629/88476.terrain differ diff --git a/public/terrain/17/214629/88477.terrain b/public/terrain/17/214629/88477.terrain new file mode 100644 index 000000000..65bef9092 Binary files /dev/null and b/public/terrain/17/214629/88477.terrain differ diff --git a/public/terrain/17/214629/88478.terrain b/public/terrain/17/214629/88478.terrain new file mode 100644 index 000000000..998b7e9c1 Binary files /dev/null and b/public/terrain/17/214629/88478.terrain differ diff --git a/public/terrain/17/214629/88479.terrain b/public/terrain/17/214629/88479.terrain new file mode 100644 index 000000000..776f5d605 Binary files /dev/null and b/public/terrain/17/214629/88479.terrain differ diff --git a/public/terrain/17/214629/88480.terrain b/public/terrain/17/214629/88480.terrain new file mode 100644 index 000000000..fad4c96c7 Binary files /dev/null and b/public/terrain/17/214629/88480.terrain differ diff --git a/public/terrain/17/214629/88481.terrain b/public/terrain/17/214629/88481.terrain new file mode 100644 index 000000000..9a0edc353 Binary files /dev/null and b/public/terrain/17/214629/88481.terrain differ diff --git a/public/terrain/17/214629/88482.terrain b/public/terrain/17/214629/88482.terrain new file mode 100644 index 000000000..d2aeef818 Binary files /dev/null and b/public/terrain/17/214629/88482.terrain differ diff --git a/public/terrain/17/214629/88483.terrain b/public/terrain/17/214629/88483.terrain new file mode 100644 index 000000000..bb802a676 Binary files /dev/null and b/public/terrain/17/214629/88483.terrain differ diff --git a/public/terrain/17/214629/88484.terrain b/public/terrain/17/214629/88484.terrain new file mode 100644 index 000000000..6c0cc8ace Binary files /dev/null and b/public/terrain/17/214629/88484.terrain differ diff --git a/public/terrain/17/214629/88485.terrain b/public/terrain/17/214629/88485.terrain new file mode 100644 index 000000000..721fb816b Binary files /dev/null and b/public/terrain/17/214629/88485.terrain differ diff --git a/public/terrain/17/214629/88486.terrain b/public/terrain/17/214629/88486.terrain new file mode 100644 index 000000000..eb61755b5 Binary files /dev/null and b/public/terrain/17/214629/88486.terrain differ diff --git a/public/terrain/17/214629/88487.terrain b/public/terrain/17/214629/88487.terrain new file mode 100644 index 000000000..bff84ea0f Binary files /dev/null and b/public/terrain/17/214629/88487.terrain differ diff --git a/public/terrain/17/214629/88488.terrain b/public/terrain/17/214629/88488.terrain new file mode 100644 index 000000000..978678df9 Binary files /dev/null and b/public/terrain/17/214629/88488.terrain differ diff --git a/public/terrain/17/214629/88489.terrain b/public/terrain/17/214629/88489.terrain new file mode 100644 index 000000000..91aa0efa8 Binary files /dev/null and b/public/terrain/17/214629/88489.terrain differ diff --git a/public/terrain/17/214629/88490.terrain b/public/terrain/17/214629/88490.terrain new file mode 100644 index 000000000..5d3f53c12 Binary files /dev/null and b/public/terrain/17/214629/88490.terrain differ diff --git a/public/terrain/17/214629/88491.terrain b/public/terrain/17/214629/88491.terrain new file mode 100644 index 000000000..5a1f37759 Binary files /dev/null and b/public/terrain/17/214629/88491.terrain differ diff --git a/public/terrain/17/214629/88492.terrain b/public/terrain/17/214629/88492.terrain new file mode 100644 index 000000000..40f18ef60 Binary files /dev/null and b/public/terrain/17/214629/88492.terrain differ diff --git a/public/terrain/17/214629/88493.terrain b/public/terrain/17/214629/88493.terrain new file mode 100644 index 000000000..6fd6aa58d Binary files /dev/null and b/public/terrain/17/214629/88493.terrain differ diff --git a/public/terrain/17/214629/88494.terrain b/public/terrain/17/214629/88494.terrain new file mode 100644 index 000000000..ae0eeb855 Binary files /dev/null and b/public/terrain/17/214629/88494.terrain differ diff --git a/public/terrain/17/214629/88495.terrain b/public/terrain/17/214629/88495.terrain new file mode 100644 index 000000000..ee64f8e51 Binary files /dev/null and b/public/terrain/17/214629/88495.terrain differ diff --git a/public/terrain/17/214629/88496.terrain b/public/terrain/17/214629/88496.terrain new file mode 100644 index 000000000..5037512c8 Binary files /dev/null and b/public/terrain/17/214629/88496.terrain differ diff --git a/public/terrain/17/214629/88497.terrain b/public/terrain/17/214629/88497.terrain new file mode 100644 index 000000000..af6018e8f Binary files /dev/null and b/public/terrain/17/214629/88497.terrain differ diff --git a/public/terrain/17/214629/88498.terrain b/public/terrain/17/214629/88498.terrain new file mode 100644 index 000000000..c1fed9d8e Binary files /dev/null and b/public/terrain/17/214629/88498.terrain differ diff --git a/public/terrain/17/214629/88499.terrain b/public/terrain/17/214629/88499.terrain new file mode 100644 index 000000000..0b05a8abd Binary files /dev/null and b/public/terrain/17/214629/88499.terrain differ diff --git a/public/terrain/17/214629/88500.terrain b/public/terrain/17/214629/88500.terrain new file mode 100644 index 000000000..e08519d99 Binary files /dev/null and b/public/terrain/17/214629/88500.terrain differ diff --git a/public/terrain/17/214629/88501.terrain b/public/terrain/17/214629/88501.terrain new file mode 100644 index 000000000..118eba800 Binary files /dev/null and b/public/terrain/17/214629/88501.terrain differ diff --git a/public/terrain/17/214629/88502.terrain b/public/terrain/17/214629/88502.terrain new file mode 100644 index 000000000..8d604d22a Binary files /dev/null and b/public/terrain/17/214629/88502.terrain differ diff --git a/public/terrain/17/214629/88503.terrain b/public/terrain/17/214629/88503.terrain new file mode 100644 index 000000000..2f715c2c7 Binary files /dev/null and b/public/terrain/17/214629/88503.terrain differ diff --git a/public/terrain/17/214629/88504.terrain b/public/terrain/17/214629/88504.terrain new file mode 100644 index 000000000..ad69bb42f Binary files /dev/null and b/public/terrain/17/214629/88504.terrain differ diff --git a/public/terrain/17/214629/88505.terrain b/public/terrain/17/214629/88505.terrain new file mode 100644 index 000000000..10949d393 Binary files /dev/null and b/public/terrain/17/214629/88505.terrain differ diff --git a/public/terrain/17/214629/88506.terrain b/public/terrain/17/214629/88506.terrain new file mode 100644 index 000000000..0ad31997b Binary files /dev/null and b/public/terrain/17/214629/88506.terrain differ diff --git a/public/terrain/17/214629/88507.terrain b/public/terrain/17/214629/88507.terrain new file mode 100644 index 000000000..ecfce94d4 Binary files /dev/null and b/public/terrain/17/214629/88507.terrain differ diff --git a/public/terrain/17/214629/88508.terrain b/public/terrain/17/214629/88508.terrain new file mode 100644 index 000000000..ff64595db Binary files /dev/null and b/public/terrain/17/214629/88508.terrain differ diff --git a/public/terrain/17/214629/88509.terrain b/public/terrain/17/214629/88509.terrain new file mode 100644 index 000000000..d8763cbd0 Binary files /dev/null and b/public/terrain/17/214629/88509.terrain differ diff --git a/public/terrain/17/214629/88510.terrain b/public/terrain/17/214629/88510.terrain new file mode 100644 index 000000000..3c3b29234 Binary files /dev/null and b/public/terrain/17/214629/88510.terrain differ diff --git a/public/terrain/17/214629/88511.terrain b/public/terrain/17/214629/88511.terrain new file mode 100644 index 000000000..09cb0eb02 Binary files /dev/null and b/public/terrain/17/214629/88511.terrain differ diff --git a/public/terrain/17/214629/88512.terrain b/public/terrain/17/214629/88512.terrain new file mode 100644 index 000000000..e42be9be7 Binary files /dev/null and b/public/terrain/17/214629/88512.terrain differ diff --git a/public/terrain/17/214629/88513.terrain b/public/terrain/17/214629/88513.terrain new file mode 100644 index 000000000..115b68707 Binary files /dev/null and b/public/terrain/17/214629/88513.terrain differ diff --git a/public/terrain/17/214629/88514.terrain b/public/terrain/17/214629/88514.terrain new file mode 100644 index 000000000..2d2e2943b Binary files /dev/null and b/public/terrain/17/214629/88514.terrain differ diff --git a/public/terrain/17/214630/88435.terrain b/public/terrain/17/214630/88435.terrain new file mode 100644 index 000000000..0e29fbaef Binary files /dev/null and b/public/terrain/17/214630/88435.terrain differ diff --git a/public/terrain/17/214630/88436.terrain b/public/terrain/17/214630/88436.terrain new file mode 100644 index 000000000..bd1d220e7 Binary files /dev/null and b/public/terrain/17/214630/88436.terrain differ diff --git a/public/terrain/17/214630/88437.terrain b/public/terrain/17/214630/88437.terrain new file mode 100644 index 000000000..73b93affb Binary files /dev/null and b/public/terrain/17/214630/88437.terrain differ diff --git a/public/terrain/17/214630/88438.terrain b/public/terrain/17/214630/88438.terrain new file mode 100644 index 000000000..860e9dc05 Binary files /dev/null and b/public/terrain/17/214630/88438.terrain differ diff --git a/public/terrain/17/214630/88439.terrain b/public/terrain/17/214630/88439.terrain new file mode 100644 index 000000000..03b8a92f1 Binary files /dev/null and b/public/terrain/17/214630/88439.terrain differ diff --git a/public/terrain/17/214630/88440.terrain b/public/terrain/17/214630/88440.terrain new file mode 100644 index 000000000..eac93d5b6 Binary files /dev/null and b/public/terrain/17/214630/88440.terrain differ diff --git a/public/terrain/17/214630/88441.terrain b/public/terrain/17/214630/88441.terrain new file mode 100644 index 000000000..ed10d9806 Binary files /dev/null and b/public/terrain/17/214630/88441.terrain differ diff --git a/public/terrain/17/214630/88442.terrain b/public/terrain/17/214630/88442.terrain new file mode 100644 index 000000000..2a457f2ce Binary files /dev/null and b/public/terrain/17/214630/88442.terrain differ diff --git a/public/terrain/17/214630/88443.terrain b/public/terrain/17/214630/88443.terrain new file mode 100644 index 000000000..6084611fd Binary files /dev/null and b/public/terrain/17/214630/88443.terrain differ diff --git a/public/terrain/17/214630/88444.terrain b/public/terrain/17/214630/88444.terrain new file mode 100644 index 000000000..487e107a4 Binary files /dev/null and b/public/terrain/17/214630/88444.terrain differ diff --git a/public/terrain/17/214630/88445.terrain b/public/terrain/17/214630/88445.terrain new file mode 100644 index 000000000..8af5a0fba Binary files /dev/null and b/public/terrain/17/214630/88445.terrain differ diff --git a/public/terrain/17/214630/88446.terrain b/public/terrain/17/214630/88446.terrain new file mode 100644 index 000000000..07dd46ed7 Binary files /dev/null and b/public/terrain/17/214630/88446.terrain differ diff --git a/public/terrain/17/214630/88447.terrain b/public/terrain/17/214630/88447.terrain new file mode 100644 index 000000000..3e90666c3 Binary files /dev/null and b/public/terrain/17/214630/88447.terrain differ diff --git a/public/terrain/17/214630/88448.terrain b/public/terrain/17/214630/88448.terrain new file mode 100644 index 000000000..f645b62cd Binary files /dev/null and b/public/terrain/17/214630/88448.terrain differ diff --git a/public/terrain/17/214630/88449.terrain b/public/terrain/17/214630/88449.terrain new file mode 100644 index 000000000..1b5c75ea0 Binary files /dev/null and b/public/terrain/17/214630/88449.terrain differ diff --git a/public/terrain/17/214630/88450.terrain b/public/terrain/17/214630/88450.terrain new file mode 100644 index 000000000..41250459d Binary files /dev/null and b/public/terrain/17/214630/88450.terrain differ diff --git a/public/terrain/17/214630/88451.terrain b/public/terrain/17/214630/88451.terrain new file mode 100644 index 000000000..8161a473c Binary files /dev/null and b/public/terrain/17/214630/88451.terrain differ diff --git a/public/terrain/17/214630/88452.terrain b/public/terrain/17/214630/88452.terrain new file mode 100644 index 000000000..4e8e7e7ce Binary files /dev/null and b/public/terrain/17/214630/88452.terrain differ diff --git a/public/terrain/17/214630/88453.terrain b/public/terrain/17/214630/88453.terrain new file mode 100644 index 000000000..b0630b52f Binary files /dev/null and b/public/terrain/17/214630/88453.terrain differ diff --git a/public/terrain/17/214630/88454.terrain b/public/terrain/17/214630/88454.terrain new file mode 100644 index 000000000..d42f3a32b Binary files /dev/null and b/public/terrain/17/214630/88454.terrain differ diff --git a/public/terrain/17/214630/88455.terrain b/public/terrain/17/214630/88455.terrain new file mode 100644 index 000000000..639777a2a Binary files /dev/null and b/public/terrain/17/214630/88455.terrain differ diff --git a/public/terrain/17/214630/88456.terrain b/public/terrain/17/214630/88456.terrain new file mode 100644 index 000000000..87ba84734 Binary files /dev/null and b/public/terrain/17/214630/88456.terrain differ diff --git a/public/terrain/17/214630/88457.terrain b/public/terrain/17/214630/88457.terrain new file mode 100644 index 000000000..ffdbbc95a Binary files /dev/null and b/public/terrain/17/214630/88457.terrain differ diff --git a/public/terrain/17/214630/88458.terrain b/public/terrain/17/214630/88458.terrain new file mode 100644 index 000000000..1ac827e25 Binary files /dev/null and b/public/terrain/17/214630/88458.terrain differ diff --git a/public/terrain/17/214630/88459.terrain b/public/terrain/17/214630/88459.terrain new file mode 100644 index 000000000..ea7a832bd Binary files /dev/null and b/public/terrain/17/214630/88459.terrain differ diff --git a/public/terrain/17/214630/88460.terrain b/public/terrain/17/214630/88460.terrain new file mode 100644 index 000000000..e1d1408cf Binary files /dev/null and b/public/terrain/17/214630/88460.terrain differ diff --git a/public/terrain/17/214630/88461.terrain b/public/terrain/17/214630/88461.terrain new file mode 100644 index 000000000..245bc8134 Binary files /dev/null and b/public/terrain/17/214630/88461.terrain differ diff --git a/public/terrain/17/214630/88462.terrain b/public/terrain/17/214630/88462.terrain new file mode 100644 index 000000000..7e07fe139 Binary files /dev/null and b/public/terrain/17/214630/88462.terrain differ diff --git a/public/terrain/17/214630/88463.terrain b/public/terrain/17/214630/88463.terrain new file mode 100644 index 000000000..aeb341fda Binary files /dev/null and b/public/terrain/17/214630/88463.terrain differ diff --git a/public/terrain/17/214630/88464.terrain b/public/terrain/17/214630/88464.terrain new file mode 100644 index 000000000..2d56db20d Binary files /dev/null and b/public/terrain/17/214630/88464.terrain differ diff --git a/public/terrain/17/214630/88465.terrain b/public/terrain/17/214630/88465.terrain new file mode 100644 index 000000000..27539ce6f Binary files /dev/null and b/public/terrain/17/214630/88465.terrain differ diff --git a/public/terrain/17/214630/88466.terrain b/public/terrain/17/214630/88466.terrain new file mode 100644 index 000000000..65df861a2 Binary files /dev/null and b/public/terrain/17/214630/88466.terrain differ diff --git a/public/terrain/17/214630/88467.terrain b/public/terrain/17/214630/88467.terrain new file mode 100644 index 000000000..70d80645a Binary files /dev/null and b/public/terrain/17/214630/88467.terrain differ diff --git a/public/terrain/17/214630/88468.terrain b/public/terrain/17/214630/88468.terrain new file mode 100644 index 000000000..0da760814 Binary files /dev/null and b/public/terrain/17/214630/88468.terrain differ diff --git a/public/terrain/17/214630/88469.terrain b/public/terrain/17/214630/88469.terrain new file mode 100644 index 000000000..1707feee7 Binary files /dev/null and b/public/terrain/17/214630/88469.terrain differ diff --git a/public/terrain/17/214630/88470.terrain b/public/terrain/17/214630/88470.terrain new file mode 100644 index 000000000..dd9be0c38 Binary files /dev/null and b/public/terrain/17/214630/88470.terrain differ diff --git a/public/terrain/17/214630/88471.terrain b/public/terrain/17/214630/88471.terrain new file mode 100644 index 000000000..bb9f1608b Binary files /dev/null and b/public/terrain/17/214630/88471.terrain differ diff --git a/public/terrain/17/214630/88472.terrain b/public/terrain/17/214630/88472.terrain new file mode 100644 index 000000000..a2f7c8d1a Binary files /dev/null and b/public/terrain/17/214630/88472.terrain differ diff --git a/public/terrain/17/214630/88473.terrain b/public/terrain/17/214630/88473.terrain new file mode 100644 index 000000000..ed2559e0e Binary files /dev/null and b/public/terrain/17/214630/88473.terrain differ diff --git a/public/terrain/17/214630/88474.terrain b/public/terrain/17/214630/88474.terrain new file mode 100644 index 000000000..2c695622f Binary files /dev/null and b/public/terrain/17/214630/88474.terrain differ diff --git a/public/terrain/17/214630/88475.terrain b/public/terrain/17/214630/88475.terrain new file mode 100644 index 000000000..b55c37476 Binary files /dev/null and b/public/terrain/17/214630/88475.terrain differ diff --git a/public/terrain/17/214630/88476.terrain b/public/terrain/17/214630/88476.terrain new file mode 100644 index 000000000..e993a235d Binary files /dev/null and b/public/terrain/17/214630/88476.terrain differ diff --git a/public/terrain/17/214630/88477.terrain b/public/terrain/17/214630/88477.terrain new file mode 100644 index 000000000..1796061e0 Binary files /dev/null and b/public/terrain/17/214630/88477.terrain differ diff --git a/public/terrain/17/214630/88478.terrain b/public/terrain/17/214630/88478.terrain new file mode 100644 index 000000000..3f0c93a99 Binary files /dev/null and b/public/terrain/17/214630/88478.terrain differ diff --git a/public/terrain/17/214630/88479.terrain b/public/terrain/17/214630/88479.terrain new file mode 100644 index 000000000..2adfe66e2 Binary files /dev/null and b/public/terrain/17/214630/88479.terrain differ diff --git a/public/terrain/17/214630/88480.terrain b/public/terrain/17/214630/88480.terrain new file mode 100644 index 000000000..547df652d Binary files /dev/null and b/public/terrain/17/214630/88480.terrain differ diff --git a/public/terrain/17/214630/88481.terrain b/public/terrain/17/214630/88481.terrain new file mode 100644 index 000000000..63a8c03a6 Binary files /dev/null and b/public/terrain/17/214630/88481.terrain differ diff --git a/public/terrain/17/214630/88482.terrain b/public/terrain/17/214630/88482.terrain new file mode 100644 index 000000000..f3fa3cc4d Binary files /dev/null and b/public/terrain/17/214630/88482.terrain differ diff --git a/public/terrain/17/214630/88483.terrain b/public/terrain/17/214630/88483.terrain new file mode 100644 index 000000000..e7114a995 Binary files /dev/null and b/public/terrain/17/214630/88483.terrain differ diff --git a/public/terrain/17/214630/88484.terrain b/public/terrain/17/214630/88484.terrain new file mode 100644 index 000000000..48b0c4bdb Binary files /dev/null and b/public/terrain/17/214630/88484.terrain differ diff --git a/public/terrain/17/214630/88485.terrain b/public/terrain/17/214630/88485.terrain new file mode 100644 index 000000000..675d7e198 Binary files /dev/null and b/public/terrain/17/214630/88485.terrain differ diff --git a/public/terrain/17/214630/88486.terrain b/public/terrain/17/214630/88486.terrain new file mode 100644 index 000000000..74d027320 Binary files /dev/null and b/public/terrain/17/214630/88486.terrain differ diff --git a/public/terrain/17/214630/88487.terrain b/public/terrain/17/214630/88487.terrain new file mode 100644 index 000000000..5f30fb91a Binary files /dev/null and b/public/terrain/17/214630/88487.terrain differ diff --git a/public/terrain/17/214630/88488.terrain b/public/terrain/17/214630/88488.terrain new file mode 100644 index 000000000..edcc586fb Binary files /dev/null and b/public/terrain/17/214630/88488.terrain differ diff --git a/public/terrain/17/214630/88489.terrain b/public/terrain/17/214630/88489.terrain new file mode 100644 index 000000000..b4e01cc78 Binary files /dev/null and b/public/terrain/17/214630/88489.terrain differ diff --git a/public/terrain/17/214630/88490.terrain b/public/terrain/17/214630/88490.terrain new file mode 100644 index 000000000..b8139f98c Binary files /dev/null and b/public/terrain/17/214630/88490.terrain differ diff --git a/public/terrain/17/214630/88491.terrain b/public/terrain/17/214630/88491.terrain new file mode 100644 index 000000000..201a94dc7 Binary files /dev/null and b/public/terrain/17/214630/88491.terrain differ diff --git a/public/terrain/17/214630/88492.terrain b/public/terrain/17/214630/88492.terrain new file mode 100644 index 000000000..82215bb65 Binary files /dev/null and b/public/terrain/17/214630/88492.terrain differ diff --git a/public/terrain/17/214630/88493.terrain b/public/terrain/17/214630/88493.terrain new file mode 100644 index 000000000..1e8448223 Binary files /dev/null and b/public/terrain/17/214630/88493.terrain differ diff --git a/public/terrain/17/214630/88494.terrain b/public/terrain/17/214630/88494.terrain new file mode 100644 index 000000000..70c3f6b94 Binary files /dev/null and b/public/terrain/17/214630/88494.terrain differ diff --git a/public/terrain/17/214630/88495.terrain b/public/terrain/17/214630/88495.terrain new file mode 100644 index 000000000..8ff48ec13 Binary files /dev/null and b/public/terrain/17/214630/88495.terrain differ diff --git a/public/terrain/17/214630/88496.terrain b/public/terrain/17/214630/88496.terrain new file mode 100644 index 000000000..3e8f13549 Binary files /dev/null and b/public/terrain/17/214630/88496.terrain differ diff --git a/public/terrain/17/214630/88497.terrain b/public/terrain/17/214630/88497.terrain new file mode 100644 index 000000000..2c4921ace Binary files /dev/null and b/public/terrain/17/214630/88497.terrain differ diff --git a/public/terrain/17/214630/88498.terrain b/public/terrain/17/214630/88498.terrain new file mode 100644 index 000000000..85c26b7ab Binary files /dev/null and b/public/terrain/17/214630/88498.terrain differ diff --git a/public/terrain/17/214630/88499.terrain b/public/terrain/17/214630/88499.terrain new file mode 100644 index 000000000..01b6b39eb Binary files /dev/null and b/public/terrain/17/214630/88499.terrain differ diff --git a/public/terrain/17/214630/88500.terrain b/public/terrain/17/214630/88500.terrain new file mode 100644 index 000000000..d3f6f8968 Binary files /dev/null and b/public/terrain/17/214630/88500.terrain differ diff --git a/public/terrain/17/214630/88501.terrain b/public/terrain/17/214630/88501.terrain new file mode 100644 index 000000000..147ea6f26 Binary files /dev/null and b/public/terrain/17/214630/88501.terrain differ diff --git a/public/terrain/17/214630/88502.terrain b/public/terrain/17/214630/88502.terrain new file mode 100644 index 000000000..b049524df Binary files /dev/null and b/public/terrain/17/214630/88502.terrain differ diff --git a/public/terrain/17/214630/88503.terrain b/public/terrain/17/214630/88503.terrain new file mode 100644 index 000000000..3efaffd0a Binary files /dev/null and b/public/terrain/17/214630/88503.terrain differ diff --git a/public/terrain/17/214630/88504.terrain b/public/terrain/17/214630/88504.terrain new file mode 100644 index 000000000..161b66d45 Binary files /dev/null and b/public/terrain/17/214630/88504.terrain differ diff --git a/public/terrain/17/214630/88505.terrain b/public/terrain/17/214630/88505.terrain new file mode 100644 index 000000000..a2303c33b Binary files /dev/null and b/public/terrain/17/214630/88505.terrain differ diff --git a/public/terrain/17/214630/88506.terrain b/public/terrain/17/214630/88506.terrain new file mode 100644 index 000000000..5f43dfb05 Binary files /dev/null and b/public/terrain/17/214630/88506.terrain differ diff --git a/public/terrain/17/214630/88507.terrain b/public/terrain/17/214630/88507.terrain new file mode 100644 index 000000000..817b805a1 Binary files /dev/null and b/public/terrain/17/214630/88507.terrain differ diff --git a/public/terrain/17/214630/88508.terrain b/public/terrain/17/214630/88508.terrain new file mode 100644 index 000000000..4f82b9ab0 Binary files /dev/null and b/public/terrain/17/214630/88508.terrain differ diff --git a/public/terrain/17/214630/88509.terrain b/public/terrain/17/214630/88509.terrain new file mode 100644 index 000000000..c1e121485 Binary files /dev/null and b/public/terrain/17/214630/88509.terrain differ diff --git a/public/terrain/17/214630/88510.terrain b/public/terrain/17/214630/88510.terrain new file mode 100644 index 000000000..211c6a5fb Binary files /dev/null and b/public/terrain/17/214630/88510.terrain differ diff --git a/public/terrain/17/214630/88511.terrain b/public/terrain/17/214630/88511.terrain new file mode 100644 index 000000000..0a383326f Binary files /dev/null and b/public/terrain/17/214630/88511.terrain differ diff --git a/public/terrain/17/214630/88512.terrain b/public/terrain/17/214630/88512.terrain new file mode 100644 index 000000000..b09cd95e7 Binary files /dev/null and b/public/terrain/17/214630/88512.terrain differ diff --git a/public/terrain/17/214630/88513.terrain b/public/terrain/17/214630/88513.terrain new file mode 100644 index 000000000..975d5cda7 Binary files /dev/null and b/public/terrain/17/214630/88513.terrain differ diff --git a/public/terrain/17/214630/88514.terrain b/public/terrain/17/214630/88514.terrain new file mode 100644 index 000000000..abea451c5 Binary files /dev/null and b/public/terrain/17/214630/88514.terrain differ diff --git a/public/terrain/17/214631/88435.terrain b/public/terrain/17/214631/88435.terrain new file mode 100644 index 000000000..eb580a5bd Binary files /dev/null and b/public/terrain/17/214631/88435.terrain differ diff --git a/public/terrain/17/214631/88436.terrain b/public/terrain/17/214631/88436.terrain new file mode 100644 index 000000000..2798910c0 Binary files /dev/null and b/public/terrain/17/214631/88436.terrain differ diff --git a/public/terrain/17/214631/88437.terrain b/public/terrain/17/214631/88437.terrain new file mode 100644 index 000000000..3b9608bd6 Binary files /dev/null and b/public/terrain/17/214631/88437.terrain differ diff --git a/public/terrain/17/214631/88438.terrain b/public/terrain/17/214631/88438.terrain new file mode 100644 index 000000000..bcae6338f Binary files /dev/null and b/public/terrain/17/214631/88438.terrain differ diff --git a/public/terrain/17/214631/88439.terrain b/public/terrain/17/214631/88439.terrain new file mode 100644 index 000000000..4aad39bd8 Binary files /dev/null and b/public/terrain/17/214631/88439.terrain differ diff --git a/public/terrain/17/214631/88440.terrain b/public/terrain/17/214631/88440.terrain new file mode 100644 index 000000000..363d1cc99 Binary files /dev/null and b/public/terrain/17/214631/88440.terrain differ diff --git a/public/terrain/17/214631/88441.terrain b/public/terrain/17/214631/88441.terrain new file mode 100644 index 000000000..d4cf3836b Binary files /dev/null and b/public/terrain/17/214631/88441.terrain differ diff --git a/public/terrain/17/214631/88442.terrain b/public/terrain/17/214631/88442.terrain new file mode 100644 index 000000000..382597a08 Binary files /dev/null and b/public/terrain/17/214631/88442.terrain differ diff --git a/public/terrain/17/214631/88443.terrain b/public/terrain/17/214631/88443.terrain new file mode 100644 index 000000000..9c61d21d7 Binary files /dev/null and b/public/terrain/17/214631/88443.terrain differ diff --git a/public/terrain/17/214631/88444.terrain b/public/terrain/17/214631/88444.terrain new file mode 100644 index 000000000..a45e964fe Binary files /dev/null and b/public/terrain/17/214631/88444.terrain differ diff --git a/public/terrain/17/214631/88445.terrain b/public/terrain/17/214631/88445.terrain new file mode 100644 index 000000000..3b7ea607b Binary files /dev/null and b/public/terrain/17/214631/88445.terrain differ diff --git a/public/terrain/17/214631/88446.terrain b/public/terrain/17/214631/88446.terrain new file mode 100644 index 000000000..8e078ff27 Binary files /dev/null and b/public/terrain/17/214631/88446.terrain differ diff --git a/public/terrain/17/214631/88447.terrain b/public/terrain/17/214631/88447.terrain new file mode 100644 index 000000000..cf564eb01 Binary files /dev/null and b/public/terrain/17/214631/88447.terrain differ diff --git a/public/terrain/17/214631/88448.terrain b/public/terrain/17/214631/88448.terrain new file mode 100644 index 000000000..969ed031a Binary files /dev/null and b/public/terrain/17/214631/88448.terrain differ diff --git a/public/terrain/17/214631/88449.terrain b/public/terrain/17/214631/88449.terrain new file mode 100644 index 000000000..6ffdab036 Binary files /dev/null and b/public/terrain/17/214631/88449.terrain differ diff --git a/public/terrain/17/214631/88450.terrain b/public/terrain/17/214631/88450.terrain new file mode 100644 index 000000000..218edd374 Binary files /dev/null and b/public/terrain/17/214631/88450.terrain differ diff --git a/public/terrain/17/214631/88451.terrain b/public/terrain/17/214631/88451.terrain new file mode 100644 index 000000000..bfd256dd6 Binary files /dev/null and b/public/terrain/17/214631/88451.terrain differ diff --git a/public/terrain/17/214631/88452.terrain b/public/terrain/17/214631/88452.terrain new file mode 100644 index 000000000..11603fa08 Binary files /dev/null and b/public/terrain/17/214631/88452.terrain differ diff --git a/public/terrain/17/214631/88453.terrain b/public/terrain/17/214631/88453.terrain new file mode 100644 index 000000000..1e7c3f7f6 Binary files /dev/null and b/public/terrain/17/214631/88453.terrain differ diff --git a/public/terrain/17/214631/88454.terrain b/public/terrain/17/214631/88454.terrain new file mode 100644 index 000000000..168466152 Binary files /dev/null and b/public/terrain/17/214631/88454.terrain differ diff --git a/public/terrain/17/214631/88455.terrain b/public/terrain/17/214631/88455.terrain new file mode 100644 index 000000000..e2b823491 Binary files /dev/null and b/public/terrain/17/214631/88455.terrain differ diff --git a/public/terrain/17/214631/88456.terrain b/public/terrain/17/214631/88456.terrain new file mode 100644 index 000000000..3d26f50a2 Binary files /dev/null and b/public/terrain/17/214631/88456.terrain differ diff --git a/public/terrain/17/214631/88457.terrain b/public/terrain/17/214631/88457.terrain new file mode 100644 index 000000000..60b7aef30 Binary files /dev/null and b/public/terrain/17/214631/88457.terrain differ diff --git a/public/terrain/17/214631/88458.terrain b/public/terrain/17/214631/88458.terrain new file mode 100644 index 000000000..67487728f Binary files /dev/null and b/public/terrain/17/214631/88458.terrain differ diff --git a/public/terrain/17/214631/88459.terrain b/public/terrain/17/214631/88459.terrain new file mode 100644 index 000000000..8f9bc43a6 Binary files /dev/null and b/public/terrain/17/214631/88459.terrain differ diff --git a/public/terrain/17/214631/88460.terrain b/public/terrain/17/214631/88460.terrain new file mode 100644 index 000000000..a9b9d484d Binary files /dev/null and b/public/terrain/17/214631/88460.terrain differ diff --git a/public/terrain/17/214631/88461.terrain b/public/terrain/17/214631/88461.terrain new file mode 100644 index 000000000..cf0dd51c9 Binary files /dev/null and b/public/terrain/17/214631/88461.terrain differ diff --git a/public/terrain/17/214631/88462.terrain b/public/terrain/17/214631/88462.terrain new file mode 100644 index 000000000..1bf68643f Binary files /dev/null and b/public/terrain/17/214631/88462.terrain differ diff --git a/public/terrain/17/214631/88463.terrain b/public/terrain/17/214631/88463.terrain new file mode 100644 index 000000000..7f7cf297e Binary files /dev/null and b/public/terrain/17/214631/88463.terrain differ diff --git a/public/terrain/17/214631/88464.terrain b/public/terrain/17/214631/88464.terrain new file mode 100644 index 000000000..49082a61e Binary files /dev/null and b/public/terrain/17/214631/88464.terrain differ diff --git a/public/terrain/17/214631/88465.terrain b/public/terrain/17/214631/88465.terrain new file mode 100644 index 000000000..1f247ab50 Binary files /dev/null and b/public/terrain/17/214631/88465.terrain differ diff --git a/public/terrain/17/214631/88466.terrain b/public/terrain/17/214631/88466.terrain new file mode 100644 index 000000000..7354601be Binary files /dev/null and b/public/terrain/17/214631/88466.terrain differ diff --git a/public/terrain/17/214631/88467.terrain b/public/terrain/17/214631/88467.terrain new file mode 100644 index 000000000..1097f83d8 Binary files /dev/null and b/public/terrain/17/214631/88467.terrain differ diff --git a/public/terrain/17/214631/88468.terrain b/public/terrain/17/214631/88468.terrain new file mode 100644 index 000000000..5bfa6774d Binary files /dev/null and b/public/terrain/17/214631/88468.terrain differ diff --git a/public/terrain/17/214631/88469.terrain b/public/terrain/17/214631/88469.terrain new file mode 100644 index 000000000..3809fb3e0 Binary files /dev/null and b/public/terrain/17/214631/88469.terrain differ diff --git a/public/terrain/17/214631/88470.terrain b/public/terrain/17/214631/88470.terrain new file mode 100644 index 000000000..13ec71794 Binary files /dev/null and b/public/terrain/17/214631/88470.terrain differ diff --git a/public/terrain/17/214631/88471.terrain b/public/terrain/17/214631/88471.terrain new file mode 100644 index 000000000..1abc5700b Binary files /dev/null and b/public/terrain/17/214631/88471.terrain differ diff --git a/public/terrain/17/214631/88472.terrain b/public/terrain/17/214631/88472.terrain new file mode 100644 index 000000000..e10eeec23 Binary files /dev/null and b/public/terrain/17/214631/88472.terrain differ diff --git a/public/terrain/17/214631/88473.terrain b/public/terrain/17/214631/88473.terrain new file mode 100644 index 000000000..a4eedc321 Binary files /dev/null and b/public/terrain/17/214631/88473.terrain differ diff --git a/public/terrain/17/214631/88474.terrain b/public/terrain/17/214631/88474.terrain new file mode 100644 index 000000000..8ffa2322c Binary files /dev/null and b/public/terrain/17/214631/88474.terrain differ diff --git a/public/terrain/17/214631/88475.terrain b/public/terrain/17/214631/88475.terrain new file mode 100644 index 000000000..f2a481446 Binary files /dev/null and b/public/terrain/17/214631/88475.terrain differ diff --git a/public/terrain/17/214631/88476.terrain b/public/terrain/17/214631/88476.terrain new file mode 100644 index 000000000..aca7efb09 Binary files /dev/null and b/public/terrain/17/214631/88476.terrain differ diff --git a/public/terrain/17/214631/88477.terrain b/public/terrain/17/214631/88477.terrain new file mode 100644 index 000000000..8fafcf133 Binary files /dev/null and b/public/terrain/17/214631/88477.terrain differ diff --git a/public/terrain/17/214631/88478.terrain b/public/terrain/17/214631/88478.terrain new file mode 100644 index 000000000..0a62b84ca Binary files /dev/null and b/public/terrain/17/214631/88478.terrain differ diff --git a/public/terrain/17/214631/88479.terrain b/public/terrain/17/214631/88479.terrain new file mode 100644 index 000000000..56f3316a5 Binary files /dev/null and b/public/terrain/17/214631/88479.terrain differ diff --git a/public/terrain/17/214631/88480.terrain b/public/terrain/17/214631/88480.terrain new file mode 100644 index 000000000..1d41fe610 Binary files /dev/null and b/public/terrain/17/214631/88480.terrain differ diff --git a/public/terrain/17/214631/88481.terrain b/public/terrain/17/214631/88481.terrain new file mode 100644 index 000000000..e0ff3ac41 Binary files /dev/null and b/public/terrain/17/214631/88481.terrain differ diff --git a/public/terrain/17/214631/88482.terrain b/public/terrain/17/214631/88482.terrain new file mode 100644 index 000000000..10342d413 Binary files /dev/null and b/public/terrain/17/214631/88482.terrain differ diff --git a/public/terrain/17/214631/88483.terrain b/public/terrain/17/214631/88483.terrain new file mode 100644 index 000000000..52280a6f8 Binary files /dev/null and b/public/terrain/17/214631/88483.terrain differ diff --git a/public/terrain/17/214631/88484.terrain b/public/terrain/17/214631/88484.terrain new file mode 100644 index 000000000..98d96fbb2 Binary files /dev/null and b/public/terrain/17/214631/88484.terrain differ diff --git a/public/terrain/17/214631/88485.terrain b/public/terrain/17/214631/88485.terrain new file mode 100644 index 000000000..16fc2c2bc Binary files /dev/null and b/public/terrain/17/214631/88485.terrain differ diff --git a/public/terrain/17/214631/88486.terrain b/public/terrain/17/214631/88486.terrain new file mode 100644 index 000000000..03ebabfe9 Binary files /dev/null and b/public/terrain/17/214631/88486.terrain differ diff --git a/public/terrain/17/214631/88487.terrain b/public/terrain/17/214631/88487.terrain new file mode 100644 index 000000000..f3fd1262a Binary files /dev/null and b/public/terrain/17/214631/88487.terrain differ diff --git a/public/terrain/17/214631/88488.terrain b/public/terrain/17/214631/88488.terrain new file mode 100644 index 000000000..086e0aebb Binary files /dev/null and b/public/terrain/17/214631/88488.terrain differ diff --git a/public/terrain/17/214631/88489.terrain b/public/terrain/17/214631/88489.terrain new file mode 100644 index 000000000..42efd84e0 Binary files /dev/null and b/public/terrain/17/214631/88489.terrain differ diff --git a/public/terrain/17/214631/88490.terrain b/public/terrain/17/214631/88490.terrain new file mode 100644 index 000000000..9c4a65d2b Binary files /dev/null and b/public/terrain/17/214631/88490.terrain differ diff --git a/public/terrain/17/214631/88491.terrain b/public/terrain/17/214631/88491.terrain new file mode 100644 index 000000000..9bd6d1f8f Binary files /dev/null and b/public/terrain/17/214631/88491.terrain differ diff --git a/public/terrain/17/214631/88492.terrain b/public/terrain/17/214631/88492.terrain new file mode 100644 index 000000000..ff65e3727 Binary files /dev/null and b/public/terrain/17/214631/88492.terrain differ diff --git a/public/terrain/17/214631/88493.terrain b/public/terrain/17/214631/88493.terrain new file mode 100644 index 000000000..bfbd39641 Binary files /dev/null and b/public/terrain/17/214631/88493.terrain differ diff --git a/public/terrain/17/214631/88494.terrain b/public/terrain/17/214631/88494.terrain new file mode 100644 index 000000000..cb2fd3245 Binary files /dev/null and b/public/terrain/17/214631/88494.terrain differ diff --git a/public/terrain/17/214631/88495.terrain b/public/terrain/17/214631/88495.terrain new file mode 100644 index 000000000..cb9a00e56 Binary files /dev/null and b/public/terrain/17/214631/88495.terrain differ diff --git a/public/terrain/17/214631/88496.terrain b/public/terrain/17/214631/88496.terrain new file mode 100644 index 000000000..41cc367c3 Binary files /dev/null and b/public/terrain/17/214631/88496.terrain differ diff --git a/public/terrain/17/214631/88497.terrain b/public/terrain/17/214631/88497.terrain new file mode 100644 index 000000000..e9557c48f Binary files /dev/null and b/public/terrain/17/214631/88497.terrain differ diff --git a/public/terrain/17/214631/88498.terrain b/public/terrain/17/214631/88498.terrain new file mode 100644 index 000000000..9305e93db Binary files /dev/null and b/public/terrain/17/214631/88498.terrain differ diff --git a/public/terrain/17/214631/88499.terrain b/public/terrain/17/214631/88499.terrain new file mode 100644 index 000000000..2214d6b3c Binary files /dev/null and b/public/terrain/17/214631/88499.terrain differ diff --git a/public/terrain/17/214631/88500.terrain b/public/terrain/17/214631/88500.terrain new file mode 100644 index 000000000..c5f23a996 Binary files /dev/null and b/public/terrain/17/214631/88500.terrain differ diff --git a/public/terrain/17/214631/88501.terrain b/public/terrain/17/214631/88501.terrain new file mode 100644 index 000000000..21613bbc6 Binary files /dev/null and b/public/terrain/17/214631/88501.terrain differ diff --git a/public/terrain/17/214631/88502.terrain b/public/terrain/17/214631/88502.terrain new file mode 100644 index 000000000..64d74fe08 Binary files /dev/null and b/public/terrain/17/214631/88502.terrain differ diff --git a/public/terrain/17/214631/88503.terrain b/public/terrain/17/214631/88503.terrain new file mode 100644 index 000000000..65ee1d2bd Binary files /dev/null and b/public/terrain/17/214631/88503.terrain differ diff --git a/public/terrain/17/214631/88504.terrain b/public/terrain/17/214631/88504.terrain new file mode 100644 index 000000000..eeeda2f59 Binary files /dev/null and b/public/terrain/17/214631/88504.terrain differ diff --git a/public/terrain/17/214631/88505.terrain b/public/terrain/17/214631/88505.terrain new file mode 100644 index 000000000..cb6805ea4 Binary files /dev/null and b/public/terrain/17/214631/88505.terrain differ diff --git a/public/terrain/17/214631/88506.terrain b/public/terrain/17/214631/88506.terrain new file mode 100644 index 000000000..768d2f9f9 Binary files /dev/null and b/public/terrain/17/214631/88506.terrain differ diff --git a/public/terrain/17/214631/88507.terrain b/public/terrain/17/214631/88507.terrain new file mode 100644 index 000000000..9af345d47 Binary files /dev/null and b/public/terrain/17/214631/88507.terrain differ diff --git a/public/terrain/17/214631/88508.terrain b/public/terrain/17/214631/88508.terrain new file mode 100644 index 000000000..214e0d6e0 Binary files /dev/null and b/public/terrain/17/214631/88508.terrain differ diff --git a/public/terrain/17/214631/88509.terrain b/public/terrain/17/214631/88509.terrain new file mode 100644 index 000000000..7ea3f3792 Binary files /dev/null and b/public/terrain/17/214631/88509.terrain differ diff --git a/public/terrain/17/214631/88510.terrain b/public/terrain/17/214631/88510.terrain new file mode 100644 index 000000000..c13db4b1c Binary files /dev/null and b/public/terrain/17/214631/88510.terrain differ diff --git a/public/terrain/17/214631/88511.terrain b/public/terrain/17/214631/88511.terrain new file mode 100644 index 000000000..045aa4185 Binary files /dev/null and b/public/terrain/17/214631/88511.terrain differ diff --git a/public/terrain/17/214631/88512.terrain b/public/terrain/17/214631/88512.terrain new file mode 100644 index 000000000..2e278ab16 Binary files /dev/null and b/public/terrain/17/214631/88512.terrain differ diff --git a/public/terrain/17/214631/88513.terrain b/public/terrain/17/214631/88513.terrain new file mode 100644 index 000000000..c4c4bd57a Binary files /dev/null and b/public/terrain/17/214631/88513.terrain differ diff --git a/public/terrain/17/214631/88514.terrain b/public/terrain/17/214631/88514.terrain new file mode 100644 index 000000000..084cdd216 Binary files /dev/null and b/public/terrain/17/214631/88514.terrain differ diff --git a/public/terrain/17/214632/88435.terrain b/public/terrain/17/214632/88435.terrain new file mode 100644 index 000000000..936f63c31 Binary files /dev/null and b/public/terrain/17/214632/88435.terrain differ diff --git a/public/terrain/17/214632/88436.terrain b/public/terrain/17/214632/88436.terrain new file mode 100644 index 000000000..ebe182512 Binary files /dev/null and b/public/terrain/17/214632/88436.terrain differ diff --git a/public/terrain/17/214632/88437.terrain b/public/terrain/17/214632/88437.terrain new file mode 100644 index 000000000..a6cef712b Binary files /dev/null and b/public/terrain/17/214632/88437.terrain differ diff --git a/public/terrain/17/214632/88438.terrain b/public/terrain/17/214632/88438.terrain new file mode 100644 index 000000000..046b177e7 Binary files /dev/null and b/public/terrain/17/214632/88438.terrain differ diff --git a/public/terrain/17/214632/88439.terrain b/public/terrain/17/214632/88439.terrain new file mode 100644 index 000000000..ece5f5f6f Binary files /dev/null and b/public/terrain/17/214632/88439.terrain differ diff --git a/public/terrain/17/214632/88440.terrain b/public/terrain/17/214632/88440.terrain new file mode 100644 index 000000000..b0acb288e Binary files /dev/null and b/public/terrain/17/214632/88440.terrain differ diff --git a/public/terrain/17/214632/88441.terrain b/public/terrain/17/214632/88441.terrain new file mode 100644 index 000000000..3cee1b8cb Binary files /dev/null and b/public/terrain/17/214632/88441.terrain differ diff --git a/public/terrain/17/214632/88442.terrain b/public/terrain/17/214632/88442.terrain new file mode 100644 index 000000000..8c3b1e71c Binary files /dev/null and b/public/terrain/17/214632/88442.terrain differ diff --git a/public/terrain/17/214632/88443.terrain b/public/terrain/17/214632/88443.terrain new file mode 100644 index 000000000..859fc3b2c Binary files /dev/null and b/public/terrain/17/214632/88443.terrain differ diff --git a/public/terrain/17/214632/88444.terrain b/public/terrain/17/214632/88444.terrain new file mode 100644 index 000000000..14a8c405f Binary files /dev/null and b/public/terrain/17/214632/88444.terrain differ diff --git a/public/terrain/17/214632/88445.terrain b/public/terrain/17/214632/88445.terrain new file mode 100644 index 000000000..cba68fe0d Binary files /dev/null and b/public/terrain/17/214632/88445.terrain differ diff --git a/public/terrain/17/214632/88446.terrain b/public/terrain/17/214632/88446.terrain new file mode 100644 index 000000000..cce5b7eca Binary files /dev/null and b/public/terrain/17/214632/88446.terrain differ diff --git a/public/terrain/17/214632/88447.terrain b/public/terrain/17/214632/88447.terrain new file mode 100644 index 000000000..daec78733 Binary files /dev/null and b/public/terrain/17/214632/88447.terrain differ diff --git a/public/terrain/17/214632/88448.terrain b/public/terrain/17/214632/88448.terrain new file mode 100644 index 000000000..73260ade3 Binary files /dev/null and b/public/terrain/17/214632/88448.terrain differ diff --git a/public/terrain/17/214632/88449.terrain b/public/terrain/17/214632/88449.terrain new file mode 100644 index 000000000..f355b1174 Binary files /dev/null and b/public/terrain/17/214632/88449.terrain differ diff --git a/public/terrain/17/214632/88450.terrain b/public/terrain/17/214632/88450.terrain new file mode 100644 index 000000000..5653d7bc9 Binary files /dev/null and b/public/terrain/17/214632/88450.terrain differ diff --git a/public/terrain/17/214632/88451.terrain b/public/terrain/17/214632/88451.terrain new file mode 100644 index 000000000..a5f08a2e3 Binary files /dev/null and b/public/terrain/17/214632/88451.terrain differ diff --git a/public/terrain/17/214632/88452.terrain b/public/terrain/17/214632/88452.terrain new file mode 100644 index 000000000..b490be58e Binary files /dev/null and b/public/terrain/17/214632/88452.terrain differ diff --git a/public/terrain/17/214632/88453.terrain b/public/terrain/17/214632/88453.terrain new file mode 100644 index 000000000..168bb91c3 Binary files /dev/null and b/public/terrain/17/214632/88453.terrain differ diff --git a/public/terrain/17/214632/88454.terrain b/public/terrain/17/214632/88454.terrain new file mode 100644 index 000000000..d9ed0c9e0 Binary files /dev/null and b/public/terrain/17/214632/88454.terrain differ diff --git a/public/terrain/17/214632/88455.terrain b/public/terrain/17/214632/88455.terrain new file mode 100644 index 000000000..f9af10c42 Binary files /dev/null and b/public/terrain/17/214632/88455.terrain differ diff --git a/public/terrain/17/214632/88456.terrain b/public/terrain/17/214632/88456.terrain new file mode 100644 index 000000000..9367f4dcd Binary files /dev/null and b/public/terrain/17/214632/88456.terrain differ diff --git a/public/terrain/17/214632/88457.terrain b/public/terrain/17/214632/88457.terrain new file mode 100644 index 000000000..a50f86ee1 Binary files /dev/null and b/public/terrain/17/214632/88457.terrain differ diff --git a/public/terrain/17/214632/88458.terrain b/public/terrain/17/214632/88458.terrain new file mode 100644 index 000000000..39a952349 Binary files /dev/null and b/public/terrain/17/214632/88458.terrain differ diff --git a/public/terrain/17/214632/88459.terrain b/public/terrain/17/214632/88459.terrain new file mode 100644 index 000000000..45e410469 Binary files /dev/null and b/public/terrain/17/214632/88459.terrain differ diff --git a/public/terrain/17/214632/88460.terrain b/public/terrain/17/214632/88460.terrain new file mode 100644 index 000000000..26af930b6 Binary files /dev/null and b/public/terrain/17/214632/88460.terrain differ diff --git a/public/terrain/17/214632/88461.terrain b/public/terrain/17/214632/88461.terrain new file mode 100644 index 000000000..a0fc4d6e6 Binary files /dev/null and b/public/terrain/17/214632/88461.terrain differ diff --git a/public/terrain/17/214632/88462.terrain b/public/terrain/17/214632/88462.terrain new file mode 100644 index 000000000..c65b92a3b Binary files /dev/null and b/public/terrain/17/214632/88462.terrain differ diff --git a/public/terrain/17/214632/88463.terrain b/public/terrain/17/214632/88463.terrain new file mode 100644 index 000000000..862774325 Binary files /dev/null and b/public/terrain/17/214632/88463.terrain differ diff --git a/public/terrain/17/214632/88464.terrain b/public/terrain/17/214632/88464.terrain new file mode 100644 index 000000000..65ed16b35 Binary files /dev/null and b/public/terrain/17/214632/88464.terrain differ diff --git a/public/terrain/17/214632/88465.terrain b/public/terrain/17/214632/88465.terrain new file mode 100644 index 000000000..6e8891eab Binary files /dev/null and b/public/terrain/17/214632/88465.terrain differ diff --git a/public/terrain/17/214632/88466.terrain b/public/terrain/17/214632/88466.terrain new file mode 100644 index 000000000..43692b1c0 Binary files /dev/null and b/public/terrain/17/214632/88466.terrain differ diff --git a/public/terrain/17/214632/88467.terrain b/public/terrain/17/214632/88467.terrain new file mode 100644 index 000000000..1484c584f Binary files /dev/null and b/public/terrain/17/214632/88467.terrain differ diff --git a/public/terrain/17/214632/88468.terrain b/public/terrain/17/214632/88468.terrain new file mode 100644 index 000000000..ab195eecb Binary files /dev/null and b/public/terrain/17/214632/88468.terrain differ diff --git a/public/terrain/17/214632/88469.terrain b/public/terrain/17/214632/88469.terrain new file mode 100644 index 000000000..2dd9ee965 Binary files /dev/null and b/public/terrain/17/214632/88469.terrain differ diff --git a/public/terrain/17/214632/88470.terrain b/public/terrain/17/214632/88470.terrain new file mode 100644 index 000000000..eae1311cc Binary files /dev/null and b/public/terrain/17/214632/88470.terrain differ diff --git a/public/terrain/17/214632/88471.terrain b/public/terrain/17/214632/88471.terrain new file mode 100644 index 000000000..f8a6c3061 Binary files /dev/null and b/public/terrain/17/214632/88471.terrain differ diff --git a/public/terrain/17/214632/88472.terrain b/public/terrain/17/214632/88472.terrain new file mode 100644 index 000000000..9892fa6f8 Binary files /dev/null and b/public/terrain/17/214632/88472.terrain differ diff --git a/public/terrain/17/214632/88473.terrain b/public/terrain/17/214632/88473.terrain new file mode 100644 index 000000000..ec36e0ecb Binary files /dev/null and b/public/terrain/17/214632/88473.terrain differ diff --git a/public/terrain/17/214632/88474.terrain b/public/terrain/17/214632/88474.terrain new file mode 100644 index 000000000..f29b48ce5 Binary files /dev/null and b/public/terrain/17/214632/88474.terrain differ diff --git a/public/terrain/17/214632/88475.terrain b/public/terrain/17/214632/88475.terrain new file mode 100644 index 000000000..6ee419c06 Binary files /dev/null and b/public/terrain/17/214632/88475.terrain differ diff --git a/public/terrain/17/214632/88476.terrain b/public/terrain/17/214632/88476.terrain new file mode 100644 index 000000000..6191d5880 Binary files /dev/null and b/public/terrain/17/214632/88476.terrain differ diff --git a/public/terrain/17/214632/88477.terrain b/public/terrain/17/214632/88477.terrain new file mode 100644 index 000000000..1b5027343 Binary files /dev/null and b/public/terrain/17/214632/88477.terrain differ diff --git a/public/terrain/17/214632/88478.terrain b/public/terrain/17/214632/88478.terrain new file mode 100644 index 000000000..c0ee9fd78 Binary files /dev/null and b/public/terrain/17/214632/88478.terrain differ diff --git a/public/terrain/17/214632/88479.terrain b/public/terrain/17/214632/88479.terrain new file mode 100644 index 000000000..01776035e Binary files /dev/null and b/public/terrain/17/214632/88479.terrain differ diff --git a/public/terrain/17/214632/88480.terrain b/public/terrain/17/214632/88480.terrain new file mode 100644 index 000000000..dc74bd45b Binary files /dev/null and b/public/terrain/17/214632/88480.terrain differ diff --git a/public/terrain/17/214632/88481.terrain b/public/terrain/17/214632/88481.terrain new file mode 100644 index 000000000..7ef35b64e Binary files /dev/null and b/public/terrain/17/214632/88481.terrain differ diff --git a/public/terrain/17/214632/88482.terrain b/public/terrain/17/214632/88482.terrain new file mode 100644 index 000000000..cd1286182 Binary files /dev/null and b/public/terrain/17/214632/88482.terrain differ diff --git a/public/terrain/17/214632/88483.terrain b/public/terrain/17/214632/88483.terrain new file mode 100644 index 000000000..7dd59fbdb Binary files /dev/null and b/public/terrain/17/214632/88483.terrain differ diff --git a/public/terrain/17/214632/88484.terrain b/public/terrain/17/214632/88484.terrain new file mode 100644 index 000000000..12ec776d8 Binary files /dev/null and b/public/terrain/17/214632/88484.terrain differ diff --git a/public/terrain/17/214632/88485.terrain b/public/terrain/17/214632/88485.terrain new file mode 100644 index 000000000..bf22e1664 Binary files /dev/null and b/public/terrain/17/214632/88485.terrain differ diff --git a/public/terrain/17/214632/88486.terrain b/public/terrain/17/214632/88486.terrain new file mode 100644 index 000000000..0693d7b9f Binary files /dev/null and b/public/terrain/17/214632/88486.terrain differ diff --git a/public/terrain/17/214632/88487.terrain b/public/terrain/17/214632/88487.terrain new file mode 100644 index 000000000..b3e037157 Binary files /dev/null and b/public/terrain/17/214632/88487.terrain differ diff --git a/public/terrain/17/214632/88488.terrain b/public/terrain/17/214632/88488.terrain new file mode 100644 index 000000000..da7d96067 Binary files /dev/null and b/public/terrain/17/214632/88488.terrain differ diff --git a/public/terrain/17/214632/88489.terrain b/public/terrain/17/214632/88489.terrain new file mode 100644 index 000000000..1e4151479 Binary files /dev/null and b/public/terrain/17/214632/88489.terrain differ diff --git a/public/terrain/17/214632/88490.terrain b/public/terrain/17/214632/88490.terrain new file mode 100644 index 000000000..cc165aa72 Binary files /dev/null and b/public/terrain/17/214632/88490.terrain differ diff --git a/public/terrain/17/214632/88491.terrain b/public/terrain/17/214632/88491.terrain new file mode 100644 index 000000000..1f13eac1c Binary files /dev/null and b/public/terrain/17/214632/88491.terrain differ diff --git a/public/terrain/17/214632/88492.terrain b/public/terrain/17/214632/88492.terrain new file mode 100644 index 000000000..11290d776 Binary files /dev/null and b/public/terrain/17/214632/88492.terrain differ diff --git a/public/terrain/17/214632/88493.terrain b/public/terrain/17/214632/88493.terrain new file mode 100644 index 000000000..4215e8a7a Binary files /dev/null and b/public/terrain/17/214632/88493.terrain differ diff --git a/public/terrain/17/214632/88494.terrain b/public/terrain/17/214632/88494.terrain new file mode 100644 index 000000000..6681d5672 Binary files /dev/null and b/public/terrain/17/214632/88494.terrain differ diff --git a/public/terrain/17/214632/88495.terrain b/public/terrain/17/214632/88495.terrain new file mode 100644 index 000000000..3a0c69090 Binary files /dev/null and b/public/terrain/17/214632/88495.terrain differ diff --git a/public/terrain/17/214632/88496.terrain b/public/terrain/17/214632/88496.terrain new file mode 100644 index 000000000..baf37c48a Binary files /dev/null and b/public/terrain/17/214632/88496.terrain differ diff --git a/public/terrain/17/214632/88497.terrain b/public/terrain/17/214632/88497.terrain new file mode 100644 index 000000000..a0dace17f Binary files /dev/null and b/public/terrain/17/214632/88497.terrain differ diff --git a/public/terrain/17/214632/88498.terrain b/public/terrain/17/214632/88498.terrain new file mode 100644 index 000000000..ce66001aa Binary files /dev/null and b/public/terrain/17/214632/88498.terrain differ diff --git a/public/terrain/17/214632/88499.terrain b/public/terrain/17/214632/88499.terrain new file mode 100644 index 000000000..559a9595a Binary files /dev/null and b/public/terrain/17/214632/88499.terrain differ diff --git a/public/terrain/17/214632/88500.terrain b/public/terrain/17/214632/88500.terrain new file mode 100644 index 000000000..bfa13fe4a Binary files /dev/null and b/public/terrain/17/214632/88500.terrain differ diff --git a/public/terrain/17/214632/88501.terrain b/public/terrain/17/214632/88501.terrain new file mode 100644 index 000000000..a225321b1 Binary files /dev/null and b/public/terrain/17/214632/88501.terrain differ diff --git a/public/terrain/17/214632/88502.terrain b/public/terrain/17/214632/88502.terrain new file mode 100644 index 000000000..bd73649b0 Binary files /dev/null and b/public/terrain/17/214632/88502.terrain differ diff --git a/public/terrain/17/214632/88503.terrain b/public/terrain/17/214632/88503.terrain new file mode 100644 index 000000000..292fe1501 Binary files /dev/null and b/public/terrain/17/214632/88503.terrain differ diff --git a/public/terrain/17/214632/88504.terrain b/public/terrain/17/214632/88504.terrain new file mode 100644 index 000000000..8af1f3a23 Binary files /dev/null and b/public/terrain/17/214632/88504.terrain differ diff --git a/public/terrain/17/214632/88505.terrain b/public/terrain/17/214632/88505.terrain new file mode 100644 index 000000000..4c4b5cb7e Binary files /dev/null and b/public/terrain/17/214632/88505.terrain differ diff --git a/public/terrain/17/214632/88506.terrain b/public/terrain/17/214632/88506.terrain new file mode 100644 index 000000000..5f63c9e04 Binary files /dev/null and b/public/terrain/17/214632/88506.terrain differ diff --git a/public/terrain/17/214632/88507.terrain b/public/terrain/17/214632/88507.terrain new file mode 100644 index 000000000..a997f6248 Binary files /dev/null and b/public/terrain/17/214632/88507.terrain differ diff --git a/public/terrain/17/214632/88508.terrain b/public/terrain/17/214632/88508.terrain new file mode 100644 index 000000000..54835ec98 Binary files /dev/null and b/public/terrain/17/214632/88508.terrain differ diff --git a/public/terrain/17/214632/88509.terrain b/public/terrain/17/214632/88509.terrain new file mode 100644 index 000000000..13c826080 Binary files /dev/null and b/public/terrain/17/214632/88509.terrain differ diff --git a/public/terrain/17/214632/88510.terrain b/public/terrain/17/214632/88510.terrain new file mode 100644 index 000000000..7dab1869b Binary files /dev/null and b/public/terrain/17/214632/88510.terrain differ diff --git a/public/terrain/17/214632/88511.terrain b/public/terrain/17/214632/88511.terrain new file mode 100644 index 000000000..04c93a316 Binary files /dev/null and b/public/terrain/17/214632/88511.terrain differ diff --git a/public/terrain/17/214632/88512.terrain b/public/terrain/17/214632/88512.terrain new file mode 100644 index 000000000..8c4202fa4 Binary files /dev/null and b/public/terrain/17/214632/88512.terrain differ diff --git a/public/terrain/17/214632/88513.terrain b/public/terrain/17/214632/88513.terrain new file mode 100644 index 000000000..9719a747c Binary files /dev/null and b/public/terrain/17/214632/88513.terrain differ diff --git a/public/terrain/17/214632/88514.terrain b/public/terrain/17/214632/88514.terrain new file mode 100644 index 000000000..c53c2be5b Binary files /dev/null and b/public/terrain/17/214632/88514.terrain differ diff --git a/public/terrain/17/214633/88435.terrain b/public/terrain/17/214633/88435.terrain new file mode 100644 index 000000000..7dccead30 Binary files /dev/null and b/public/terrain/17/214633/88435.terrain differ diff --git a/public/terrain/17/214633/88436.terrain b/public/terrain/17/214633/88436.terrain new file mode 100644 index 000000000..3a1dcce29 Binary files /dev/null and b/public/terrain/17/214633/88436.terrain differ diff --git a/public/terrain/17/214633/88437.terrain b/public/terrain/17/214633/88437.terrain new file mode 100644 index 000000000..79996d678 Binary files /dev/null and b/public/terrain/17/214633/88437.terrain differ diff --git a/public/terrain/17/214633/88438.terrain b/public/terrain/17/214633/88438.terrain new file mode 100644 index 000000000..c1c2ded2d Binary files /dev/null and b/public/terrain/17/214633/88438.terrain differ diff --git a/public/terrain/17/214633/88439.terrain b/public/terrain/17/214633/88439.terrain new file mode 100644 index 000000000..75319ab31 Binary files /dev/null and b/public/terrain/17/214633/88439.terrain differ diff --git a/public/terrain/17/214633/88440.terrain b/public/terrain/17/214633/88440.terrain new file mode 100644 index 000000000..0dd36b59d Binary files /dev/null and b/public/terrain/17/214633/88440.terrain differ diff --git a/public/terrain/17/214633/88441.terrain b/public/terrain/17/214633/88441.terrain new file mode 100644 index 000000000..178068ef6 Binary files /dev/null and b/public/terrain/17/214633/88441.terrain differ diff --git a/public/terrain/17/214633/88442.terrain b/public/terrain/17/214633/88442.terrain new file mode 100644 index 000000000..0f1082089 Binary files /dev/null and b/public/terrain/17/214633/88442.terrain differ diff --git a/public/terrain/17/214633/88443.terrain b/public/terrain/17/214633/88443.terrain new file mode 100644 index 000000000..692fe9878 Binary files /dev/null and b/public/terrain/17/214633/88443.terrain differ diff --git a/public/terrain/17/214633/88444.terrain b/public/terrain/17/214633/88444.terrain new file mode 100644 index 000000000..63cc30bca Binary files /dev/null and b/public/terrain/17/214633/88444.terrain differ diff --git a/public/terrain/17/214633/88445.terrain b/public/terrain/17/214633/88445.terrain new file mode 100644 index 000000000..51e273e78 Binary files /dev/null and b/public/terrain/17/214633/88445.terrain differ diff --git a/public/terrain/17/214633/88446.terrain b/public/terrain/17/214633/88446.terrain new file mode 100644 index 000000000..bc52856ea Binary files /dev/null and b/public/terrain/17/214633/88446.terrain differ diff --git a/public/terrain/17/214633/88447.terrain b/public/terrain/17/214633/88447.terrain new file mode 100644 index 000000000..360615f0e Binary files /dev/null and b/public/terrain/17/214633/88447.terrain differ diff --git a/public/terrain/17/214633/88448.terrain b/public/terrain/17/214633/88448.terrain new file mode 100644 index 000000000..e42ea7e78 Binary files /dev/null and b/public/terrain/17/214633/88448.terrain differ diff --git a/public/terrain/17/214633/88449.terrain b/public/terrain/17/214633/88449.terrain new file mode 100644 index 000000000..0f8816686 Binary files /dev/null and b/public/terrain/17/214633/88449.terrain differ diff --git a/public/terrain/17/214633/88450.terrain b/public/terrain/17/214633/88450.terrain new file mode 100644 index 000000000..1a35b969a Binary files /dev/null and b/public/terrain/17/214633/88450.terrain differ diff --git a/public/terrain/17/214633/88451.terrain b/public/terrain/17/214633/88451.terrain new file mode 100644 index 000000000..ad8f209d1 Binary files /dev/null and b/public/terrain/17/214633/88451.terrain differ diff --git a/public/terrain/17/214633/88452.terrain b/public/terrain/17/214633/88452.terrain new file mode 100644 index 000000000..03dec36fd Binary files /dev/null and b/public/terrain/17/214633/88452.terrain differ diff --git a/public/terrain/17/214633/88453.terrain b/public/terrain/17/214633/88453.terrain new file mode 100644 index 000000000..bf64a4716 Binary files /dev/null and b/public/terrain/17/214633/88453.terrain differ diff --git a/public/terrain/17/214633/88454.terrain b/public/terrain/17/214633/88454.terrain new file mode 100644 index 000000000..ab46710d8 Binary files /dev/null and b/public/terrain/17/214633/88454.terrain differ diff --git a/public/terrain/17/214633/88455.terrain b/public/terrain/17/214633/88455.terrain new file mode 100644 index 000000000..7d9b1374e Binary files /dev/null and b/public/terrain/17/214633/88455.terrain differ diff --git a/public/terrain/17/214633/88456.terrain b/public/terrain/17/214633/88456.terrain new file mode 100644 index 000000000..8ae5eade1 Binary files /dev/null and b/public/terrain/17/214633/88456.terrain differ diff --git a/public/terrain/17/214633/88457.terrain b/public/terrain/17/214633/88457.terrain new file mode 100644 index 000000000..44a067f52 Binary files /dev/null and b/public/terrain/17/214633/88457.terrain differ diff --git a/public/terrain/17/214633/88458.terrain b/public/terrain/17/214633/88458.terrain new file mode 100644 index 000000000..532997816 Binary files /dev/null and b/public/terrain/17/214633/88458.terrain differ diff --git a/public/terrain/17/214633/88459.terrain b/public/terrain/17/214633/88459.terrain new file mode 100644 index 000000000..a147b95b5 Binary files /dev/null and b/public/terrain/17/214633/88459.terrain differ diff --git a/public/terrain/17/214633/88460.terrain b/public/terrain/17/214633/88460.terrain new file mode 100644 index 000000000..4f000e65a Binary files /dev/null and b/public/terrain/17/214633/88460.terrain differ diff --git a/public/terrain/17/214633/88461.terrain b/public/terrain/17/214633/88461.terrain new file mode 100644 index 000000000..3fb6cbc17 Binary files /dev/null and b/public/terrain/17/214633/88461.terrain differ diff --git a/public/terrain/17/214633/88462.terrain b/public/terrain/17/214633/88462.terrain new file mode 100644 index 000000000..3ba0af50c Binary files /dev/null and b/public/terrain/17/214633/88462.terrain differ diff --git a/public/terrain/17/214633/88463.terrain b/public/terrain/17/214633/88463.terrain new file mode 100644 index 000000000..4188eaaba Binary files /dev/null and b/public/terrain/17/214633/88463.terrain differ diff --git a/public/terrain/17/214633/88464.terrain b/public/terrain/17/214633/88464.terrain new file mode 100644 index 000000000..836e6a9b4 Binary files /dev/null and b/public/terrain/17/214633/88464.terrain differ diff --git a/public/terrain/17/214633/88465.terrain b/public/terrain/17/214633/88465.terrain new file mode 100644 index 000000000..f58618cec Binary files /dev/null and b/public/terrain/17/214633/88465.terrain differ diff --git a/public/terrain/17/214633/88466.terrain b/public/terrain/17/214633/88466.terrain new file mode 100644 index 000000000..df923c412 Binary files /dev/null and b/public/terrain/17/214633/88466.terrain differ diff --git a/public/terrain/17/214633/88467.terrain b/public/terrain/17/214633/88467.terrain new file mode 100644 index 000000000..e77980cb2 Binary files /dev/null and b/public/terrain/17/214633/88467.terrain differ diff --git a/public/terrain/17/214633/88468.terrain b/public/terrain/17/214633/88468.terrain new file mode 100644 index 000000000..ad01b6bbc Binary files /dev/null and b/public/terrain/17/214633/88468.terrain differ diff --git a/public/terrain/17/214633/88469.terrain b/public/terrain/17/214633/88469.terrain new file mode 100644 index 000000000..17b1df6b9 Binary files /dev/null and b/public/terrain/17/214633/88469.terrain differ diff --git a/public/terrain/17/214633/88470.terrain b/public/terrain/17/214633/88470.terrain new file mode 100644 index 000000000..d564e48f6 Binary files /dev/null and b/public/terrain/17/214633/88470.terrain differ diff --git a/public/terrain/17/214633/88471.terrain b/public/terrain/17/214633/88471.terrain new file mode 100644 index 000000000..0e94b0f74 Binary files /dev/null and b/public/terrain/17/214633/88471.terrain differ diff --git a/public/terrain/17/214633/88472.terrain b/public/terrain/17/214633/88472.terrain new file mode 100644 index 000000000..be740c26c Binary files /dev/null and b/public/terrain/17/214633/88472.terrain differ diff --git a/public/terrain/17/214633/88473.terrain b/public/terrain/17/214633/88473.terrain new file mode 100644 index 000000000..400e7b3af Binary files /dev/null and b/public/terrain/17/214633/88473.terrain differ diff --git a/public/terrain/17/214633/88474.terrain b/public/terrain/17/214633/88474.terrain new file mode 100644 index 000000000..9f2303e3e Binary files /dev/null and b/public/terrain/17/214633/88474.terrain differ diff --git a/public/terrain/17/214633/88475.terrain b/public/terrain/17/214633/88475.terrain new file mode 100644 index 000000000..98f164d7c Binary files /dev/null and b/public/terrain/17/214633/88475.terrain differ diff --git a/public/terrain/17/214633/88476.terrain b/public/terrain/17/214633/88476.terrain new file mode 100644 index 000000000..94b5675d4 Binary files /dev/null and b/public/terrain/17/214633/88476.terrain differ diff --git a/public/terrain/17/214633/88477.terrain b/public/terrain/17/214633/88477.terrain new file mode 100644 index 000000000..681a72dcf Binary files /dev/null and b/public/terrain/17/214633/88477.terrain differ diff --git a/public/terrain/17/214633/88478.terrain b/public/terrain/17/214633/88478.terrain new file mode 100644 index 000000000..1228ac8a8 Binary files /dev/null and b/public/terrain/17/214633/88478.terrain differ diff --git a/public/terrain/17/214633/88479.terrain b/public/terrain/17/214633/88479.terrain new file mode 100644 index 000000000..566b228be Binary files /dev/null and b/public/terrain/17/214633/88479.terrain differ diff --git a/public/terrain/17/214633/88480.terrain b/public/terrain/17/214633/88480.terrain new file mode 100644 index 000000000..ee5cbf8b4 Binary files /dev/null and b/public/terrain/17/214633/88480.terrain differ diff --git a/public/terrain/17/214633/88481.terrain b/public/terrain/17/214633/88481.terrain new file mode 100644 index 000000000..2d9044049 Binary files /dev/null and b/public/terrain/17/214633/88481.terrain differ diff --git a/public/terrain/17/214633/88482.terrain b/public/terrain/17/214633/88482.terrain new file mode 100644 index 000000000..8ebc393f3 Binary files /dev/null and b/public/terrain/17/214633/88482.terrain differ diff --git a/public/terrain/17/214633/88483.terrain b/public/terrain/17/214633/88483.terrain new file mode 100644 index 000000000..0c71c466d Binary files /dev/null and b/public/terrain/17/214633/88483.terrain differ diff --git a/public/terrain/17/214633/88484.terrain b/public/terrain/17/214633/88484.terrain new file mode 100644 index 000000000..9fdcba1cd Binary files /dev/null and b/public/terrain/17/214633/88484.terrain differ diff --git a/public/terrain/17/214633/88485.terrain b/public/terrain/17/214633/88485.terrain new file mode 100644 index 000000000..ef2ecff5a Binary files /dev/null and b/public/terrain/17/214633/88485.terrain differ diff --git a/public/terrain/17/214633/88486.terrain b/public/terrain/17/214633/88486.terrain new file mode 100644 index 000000000..6de2f08f0 Binary files /dev/null and b/public/terrain/17/214633/88486.terrain differ diff --git a/public/terrain/17/214633/88487.terrain b/public/terrain/17/214633/88487.terrain new file mode 100644 index 000000000..e6934c6bb Binary files /dev/null and b/public/terrain/17/214633/88487.terrain differ diff --git a/public/terrain/17/214633/88488.terrain b/public/terrain/17/214633/88488.terrain new file mode 100644 index 000000000..28f99558a Binary files /dev/null and b/public/terrain/17/214633/88488.terrain differ diff --git a/public/terrain/17/214633/88489.terrain b/public/terrain/17/214633/88489.terrain new file mode 100644 index 000000000..846b23188 Binary files /dev/null and b/public/terrain/17/214633/88489.terrain differ diff --git a/public/terrain/17/214633/88490.terrain b/public/terrain/17/214633/88490.terrain new file mode 100644 index 000000000..7a129c002 Binary files /dev/null and b/public/terrain/17/214633/88490.terrain differ diff --git a/public/terrain/17/214633/88491.terrain b/public/terrain/17/214633/88491.terrain new file mode 100644 index 000000000..f37517dcf Binary files /dev/null and b/public/terrain/17/214633/88491.terrain differ diff --git a/public/terrain/17/214633/88492.terrain b/public/terrain/17/214633/88492.terrain new file mode 100644 index 000000000..f7b3be37e Binary files /dev/null and b/public/terrain/17/214633/88492.terrain differ diff --git a/public/terrain/17/214633/88493.terrain b/public/terrain/17/214633/88493.terrain new file mode 100644 index 000000000..2e225adc1 Binary files /dev/null and b/public/terrain/17/214633/88493.terrain differ diff --git a/public/terrain/17/214633/88494.terrain b/public/terrain/17/214633/88494.terrain new file mode 100644 index 000000000..af13a8b88 Binary files /dev/null and b/public/terrain/17/214633/88494.terrain differ diff --git a/public/terrain/17/214633/88495.terrain b/public/terrain/17/214633/88495.terrain new file mode 100644 index 000000000..defc83c32 Binary files /dev/null and b/public/terrain/17/214633/88495.terrain differ diff --git a/public/terrain/17/214633/88496.terrain b/public/terrain/17/214633/88496.terrain new file mode 100644 index 000000000..fe40b3f9f Binary files /dev/null and b/public/terrain/17/214633/88496.terrain differ diff --git a/public/terrain/17/214633/88497.terrain b/public/terrain/17/214633/88497.terrain new file mode 100644 index 000000000..553d27450 Binary files /dev/null and b/public/terrain/17/214633/88497.terrain differ diff --git a/public/terrain/17/214633/88498.terrain b/public/terrain/17/214633/88498.terrain new file mode 100644 index 000000000..35d3f9a9d Binary files /dev/null and b/public/terrain/17/214633/88498.terrain differ diff --git a/public/terrain/17/214633/88499.terrain b/public/terrain/17/214633/88499.terrain new file mode 100644 index 000000000..9a2289718 Binary files /dev/null and b/public/terrain/17/214633/88499.terrain differ diff --git a/public/terrain/17/214633/88500.terrain b/public/terrain/17/214633/88500.terrain new file mode 100644 index 000000000..d1d96cffc Binary files /dev/null and b/public/terrain/17/214633/88500.terrain differ diff --git a/public/terrain/17/214633/88501.terrain b/public/terrain/17/214633/88501.terrain new file mode 100644 index 000000000..4000b6721 Binary files /dev/null and b/public/terrain/17/214633/88501.terrain differ diff --git a/public/terrain/17/214633/88502.terrain b/public/terrain/17/214633/88502.terrain new file mode 100644 index 000000000..7c58308c9 Binary files /dev/null and b/public/terrain/17/214633/88502.terrain differ diff --git a/public/terrain/17/214633/88503.terrain b/public/terrain/17/214633/88503.terrain new file mode 100644 index 000000000..5dfbc8e4e Binary files /dev/null and b/public/terrain/17/214633/88503.terrain differ diff --git a/public/terrain/17/214633/88504.terrain b/public/terrain/17/214633/88504.terrain new file mode 100644 index 000000000..4ee501d64 Binary files /dev/null and b/public/terrain/17/214633/88504.terrain differ diff --git a/public/terrain/17/214633/88505.terrain b/public/terrain/17/214633/88505.terrain new file mode 100644 index 000000000..d238c6462 Binary files /dev/null and b/public/terrain/17/214633/88505.terrain differ diff --git a/public/terrain/17/214633/88506.terrain b/public/terrain/17/214633/88506.terrain new file mode 100644 index 000000000..3e6e11fff Binary files /dev/null and b/public/terrain/17/214633/88506.terrain differ diff --git a/public/terrain/17/214633/88507.terrain b/public/terrain/17/214633/88507.terrain new file mode 100644 index 000000000..416b4ef6c Binary files /dev/null and b/public/terrain/17/214633/88507.terrain differ diff --git a/public/terrain/17/214633/88508.terrain b/public/terrain/17/214633/88508.terrain new file mode 100644 index 000000000..712a8e968 Binary files /dev/null and b/public/terrain/17/214633/88508.terrain differ diff --git a/public/terrain/17/214633/88509.terrain b/public/terrain/17/214633/88509.terrain new file mode 100644 index 000000000..1fd451876 Binary files /dev/null and b/public/terrain/17/214633/88509.terrain differ diff --git a/public/terrain/17/214633/88510.terrain b/public/terrain/17/214633/88510.terrain new file mode 100644 index 000000000..805a064ff Binary files /dev/null and b/public/terrain/17/214633/88510.terrain differ diff --git a/public/terrain/17/214633/88511.terrain b/public/terrain/17/214633/88511.terrain new file mode 100644 index 000000000..680ddf6d6 Binary files /dev/null and b/public/terrain/17/214633/88511.terrain differ diff --git a/public/terrain/17/214633/88512.terrain b/public/terrain/17/214633/88512.terrain new file mode 100644 index 000000000..2ea282445 Binary files /dev/null and b/public/terrain/17/214633/88512.terrain differ diff --git a/public/terrain/17/214633/88513.terrain b/public/terrain/17/214633/88513.terrain new file mode 100644 index 000000000..4377f44b1 Binary files /dev/null and b/public/terrain/17/214633/88513.terrain differ diff --git a/public/terrain/17/214633/88514.terrain b/public/terrain/17/214633/88514.terrain new file mode 100644 index 000000000..8b802afa4 Binary files /dev/null and b/public/terrain/17/214633/88514.terrain differ diff --git a/public/terrain/17/214634/88435.terrain b/public/terrain/17/214634/88435.terrain new file mode 100644 index 000000000..0fc368f69 Binary files /dev/null and b/public/terrain/17/214634/88435.terrain differ diff --git a/public/terrain/17/214634/88436.terrain b/public/terrain/17/214634/88436.terrain new file mode 100644 index 000000000..766985eed Binary files /dev/null and b/public/terrain/17/214634/88436.terrain differ diff --git a/public/terrain/17/214634/88437.terrain b/public/terrain/17/214634/88437.terrain new file mode 100644 index 000000000..659559435 Binary files /dev/null and b/public/terrain/17/214634/88437.terrain differ diff --git a/public/terrain/17/214634/88438.terrain b/public/terrain/17/214634/88438.terrain new file mode 100644 index 000000000..0faa1ef1f Binary files /dev/null and b/public/terrain/17/214634/88438.terrain differ diff --git a/public/terrain/17/214634/88439.terrain b/public/terrain/17/214634/88439.terrain new file mode 100644 index 000000000..2e0c6c7a5 Binary files /dev/null and b/public/terrain/17/214634/88439.terrain differ diff --git a/public/terrain/17/214634/88440.terrain b/public/terrain/17/214634/88440.terrain new file mode 100644 index 000000000..91fdebf51 Binary files /dev/null and b/public/terrain/17/214634/88440.terrain differ diff --git a/public/terrain/17/214634/88441.terrain b/public/terrain/17/214634/88441.terrain new file mode 100644 index 000000000..9f7c02fc2 Binary files /dev/null and b/public/terrain/17/214634/88441.terrain differ diff --git a/public/terrain/17/214634/88442.terrain b/public/terrain/17/214634/88442.terrain new file mode 100644 index 000000000..633e6dfc4 Binary files /dev/null and b/public/terrain/17/214634/88442.terrain differ diff --git a/public/terrain/17/214634/88443.terrain b/public/terrain/17/214634/88443.terrain new file mode 100644 index 000000000..6e64390ab Binary files /dev/null and b/public/terrain/17/214634/88443.terrain differ diff --git a/public/terrain/17/214634/88444.terrain b/public/terrain/17/214634/88444.terrain new file mode 100644 index 000000000..4b83985cf Binary files /dev/null and b/public/terrain/17/214634/88444.terrain differ diff --git a/public/terrain/17/214634/88445.terrain b/public/terrain/17/214634/88445.terrain new file mode 100644 index 000000000..425a99158 Binary files /dev/null and b/public/terrain/17/214634/88445.terrain differ diff --git a/public/terrain/17/214634/88446.terrain b/public/terrain/17/214634/88446.terrain new file mode 100644 index 000000000..abdf4c017 Binary files /dev/null and b/public/terrain/17/214634/88446.terrain differ diff --git a/public/terrain/17/214634/88447.terrain b/public/terrain/17/214634/88447.terrain new file mode 100644 index 000000000..a7dfda36c Binary files /dev/null and b/public/terrain/17/214634/88447.terrain differ diff --git a/public/terrain/17/214634/88448.terrain b/public/terrain/17/214634/88448.terrain new file mode 100644 index 000000000..4bc9de64d Binary files /dev/null and b/public/terrain/17/214634/88448.terrain differ diff --git a/public/terrain/17/214634/88449.terrain b/public/terrain/17/214634/88449.terrain new file mode 100644 index 000000000..5dcdac0eb Binary files /dev/null and b/public/terrain/17/214634/88449.terrain differ diff --git a/public/terrain/17/214634/88450.terrain b/public/terrain/17/214634/88450.terrain new file mode 100644 index 000000000..10ca86e14 Binary files /dev/null and b/public/terrain/17/214634/88450.terrain differ diff --git a/public/terrain/17/214634/88451.terrain b/public/terrain/17/214634/88451.terrain new file mode 100644 index 000000000..58fcac7c7 Binary files /dev/null and b/public/terrain/17/214634/88451.terrain differ diff --git a/public/terrain/17/214634/88452.terrain b/public/terrain/17/214634/88452.terrain new file mode 100644 index 000000000..68df39b8a Binary files /dev/null and b/public/terrain/17/214634/88452.terrain differ diff --git a/public/terrain/17/214634/88453.terrain b/public/terrain/17/214634/88453.terrain new file mode 100644 index 000000000..8779063fd Binary files /dev/null and b/public/terrain/17/214634/88453.terrain differ diff --git a/public/terrain/17/214634/88454.terrain b/public/terrain/17/214634/88454.terrain new file mode 100644 index 000000000..5629fb504 Binary files /dev/null and b/public/terrain/17/214634/88454.terrain differ diff --git a/public/terrain/17/214634/88455.terrain b/public/terrain/17/214634/88455.terrain new file mode 100644 index 000000000..af773b603 Binary files /dev/null and b/public/terrain/17/214634/88455.terrain differ diff --git a/public/terrain/17/214634/88456.terrain b/public/terrain/17/214634/88456.terrain new file mode 100644 index 000000000..56a30a87d Binary files /dev/null and b/public/terrain/17/214634/88456.terrain differ diff --git a/public/terrain/17/214634/88457.terrain b/public/terrain/17/214634/88457.terrain new file mode 100644 index 000000000..9f30340d6 Binary files /dev/null and b/public/terrain/17/214634/88457.terrain differ diff --git a/public/terrain/17/214634/88458.terrain b/public/terrain/17/214634/88458.terrain new file mode 100644 index 000000000..2f31bdf2d Binary files /dev/null and b/public/terrain/17/214634/88458.terrain differ diff --git a/public/terrain/17/214634/88459.terrain b/public/terrain/17/214634/88459.terrain new file mode 100644 index 000000000..9f40fb1c8 Binary files /dev/null and b/public/terrain/17/214634/88459.terrain differ diff --git a/public/terrain/17/214634/88460.terrain b/public/terrain/17/214634/88460.terrain new file mode 100644 index 000000000..fef71977b Binary files /dev/null and b/public/terrain/17/214634/88460.terrain differ diff --git a/public/terrain/17/214634/88461.terrain b/public/terrain/17/214634/88461.terrain new file mode 100644 index 000000000..42580ce9d Binary files /dev/null and b/public/terrain/17/214634/88461.terrain differ diff --git a/public/terrain/17/214634/88462.terrain b/public/terrain/17/214634/88462.terrain new file mode 100644 index 000000000..cb6ab2598 Binary files /dev/null and b/public/terrain/17/214634/88462.terrain differ diff --git a/public/terrain/17/214634/88463.terrain b/public/terrain/17/214634/88463.terrain new file mode 100644 index 000000000..d7dffb27e Binary files /dev/null and b/public/terrain/17/214634/88463.terrain differ diff --git a/public/terrain/17/214634/88464.terrain b/public/terrain/17/214634/88464.terrain new file mode 100644 index 000000000..03e50a5be Binary files /dev/null and b/public/terrain/17/214634/88464.terrain differ diff --git a/public/terrain/17/214634/88465.terrain b/public/terrain/17/214634/88465.terrain new file mode 100644 index 000000000..1fa6fa617 Binary files /dev/null and b/public/terrain/17/214634/88465.terrain differ diff --git a/public/terrain/17/214634/88466.terrain b/public/terrain/17/214634/88466.terrain new file mode 100644 index 000000000..88f8ba6e9 Binary files /dev/null and b/public/terrain/17/214634/88466.terrain differ diff --git a/public/terrain/17/214634/88467.terrain b/public/terrain/17/214634/88467.terrain new file mode 100644 index 000000000..b565eb64d Binary files /dev/null and b/public/terrain/17/214634/88467.terrain differ diff --git a/public/terrain/17/214634/88468.terrain b/public/terrain/17/214634/88468.terrain new file mode 100644 index 000000000..5fd0b05dd Binary files /dev/null and b/public/terrain/17/214634/88468.terrain differ diff --git a/public/terrain/17/214634/88469.terrain b/public/terrain/17/214634/88469.terrain new file mode 100644 index 000000000..d091c8b9b Binary files /dev/null and b/public/terrain/17/214634/88469.terrain differ diff --git a/public/terrain/17/214634/88470.terrain b/public/terrain/17/214634/88470.terrain new file mode 100644 index 000000000..e15cea6da Binary files /dev/null and b/public/terrain/17/214634/88470.terrain differ diff --git a/public/terrain/17/214634/88471.terrain b/public/terrain/17/214634/88471.terrain new file mode 100644 index 000000000..1c5b7daf4 Binary files /dev/null and b/public/terrain/17/214634/88471.terrain differ diff --git a/public/terrain/17/214634/88472.terrain b/public/terrain/17/214634/88472.terrain new file mode 100644 index 000000000..5d23a0392 Binary files /dev/null and b/public/terrain/17/214634/88472.terrain differ diff --git a/public/terrain/17/214634/88473.terrain b/public/terrain/17/214634/88473.terrain new file mode 100644 index 000000000..02cf6d2d6 Binary files /dev/null and b/public/terrain/17/214634/88473.terrain differ diff --git a/public/terrain/17/214634/88474.terrain b/public/terrain/17/214634/88474.terrain new file mode 100644 index 000000000..14cd93733 Binary files /dev/null and b/public/terrain/17/214634/88474.terrain differ diff --git a/public/terrain/17/214634/88475.terrain b/public/terrain/17/214634/88475.terrain new file mode 100644 index 000000000..643bd2d8d Binary files /dev/null and b/public/terrain/17/214634/88475.terrain differ diff --git a/public/terrain/17/214634/88476.terrain b/public/terrain/17/214634/88476.terrain new file mode 100644 index 000000000..5b25d32ba Binary files /dev/null and b/public/terrain/17/214634/88476.terrain differ diff --git a/public/terrain/17/214634/88477.terrain b/public/terrain/17/214634/88477.terrain new file mode 100644 index 000000000..250651876 Binary files /dev/null and b/public/terrain/17/214634/88477.terrain differ diff --git a/public/terrain/17/214634/88478.terrain b/public/terrain/17/214634/88478.terrain new file mode 100644 index 000000000..c08703e78 Binary files /dev/null and b/public/terrain/17/214634/88478.terrain differ diff --git a/public/terrain/17/214634/88479.terrain b/public/terrain/17/214634/88479.terrain new file mode 100644 index 000000000..c653b1f38 Binary files /dev/null and b/public/terrain/17/214634/88479.terrain differ diff --git a/public/terrain/17/214634/88480.terrain b/public/terrain/17/214634/88480.terrain new file mode 100644 index 000000000..d1139a2a1 Binary files /dev/null and b/public/terrain/17/214634/88480.terrain differ diff --git a/public/terrain/17/214634/88481.terrain b/public/terrain/17/214634/88481.terrain new file mode 100644 index 000000000..4a6545383 Binary files /dev/null and b/public/terrain/17/214634/88481.terrain differ diff --git a/public/terrain/17/214634/88482.terrain b/public/terrain/17/214634/88482.terrain new file mode 100644 index 000000000..588373d4c Binary files /dev/null and b/public/terrain/17/214634/88482.terrain differ diff --git a/public/terrain/17/214634/88483.terrain b/public/terrain/17/214634/88483.terrain new file mode 100644 index 000000000..ce85cfaf1 Binary files /dev/null and b/public/terrain/17/214634/88483.terrain differ diff --git a/public/terrain/17/214634/88484.terrain b/public/terrain/17/214634/88484.terrain new file mode 100644 index 000000000..91815973a Binary files /dev/null and b/public/terrain/17/214634/88484.terrain differ diff --git a/public/terrain/17/214634/88485.terrain b/public/terrain/17/214634/88485.terrain new file mode 100644 index 000000000..a5cfd1777 Binary files /dev/null and b/public/terrain/17/214634/88485.terrain differ diff --git a/public/terrain/17/214634/88486.terrain b/public/terrain/17/214634/88486.terrain new file mode 100644 index 000000000..3c6528297 Binary files /dev/null and b/public/terrain/17/214634/88486.terrain differ diff --git a/public/terrain/17/214634/88487.terrain b/public/terrain/17/214634/88487.terrain new file mode 100644 index 000000000..a0f6b51f3 Binary files /dev/null and b/public/terrain/17/214634/88487.terrain differ diff --git a/public/terrain/17/214634/88488.terrain b/public/terrain/17/214634/88488.terrain new file mode 100644 index 000000000..793dc0224 Binary files /dev/null and b/public/terrain/17/214634/88488.terrain differ diff --git a/public/terrain/17/214634/88489.terrain b/public/terrain/17/214634/88489.terrain new file mode 100644 index 000000000..ac547ecce Binary files /dev/null and b/public/terrain/17/214634/88489.terrain differ diff --git a/public/terrain/17/214634/88490.terrain b/public/terrain/17/214634/88490.terrain new file mode 100644 index 000000000..0e0ffc1af Binary files /dev/null and b/public/terrain/17/214634/88490.terrain differ diff --git a/public/terrain/17/214634/88491.terrain b/public/terrain/17/214634/88491.terrain new file mode 100644 index 000000000..eb379d414 Binary files /dev/null and b/public/terrain/17/214634/88491.terrain differ diff --git a/public/terrain/17/214634/88492.terrain b/public/terrain/17/214634/88492.terrain new file mode 100644 index 000000000..b030d8b3e Binary files /dev/null and b/public/terrain/17/214634/88492.terrain differ diff --git a/public/terrain/17/214634/88493.terrain b/public/terrain/17/214634/88493.terrain new file mode 100644 index 000000000..7da8bbedd Binary files /dev/null and b/public/terrain/17/214634/88493.terrain differ diff --git a/public/terrain/17/214634/88494.terrain b/public/terrain/17/214634/88494.terrain new file mode 100644 index 000000000..ede63cf9f Binary files /dev/null and b/public/terrain/17/214634/88494.terrain differ diff --git a/public/terrain/17/214634/88495.terrain b/public/terrain/17/214634/88495.terrain new file mode 100644 index 000000000..a01d25dd0 Binary files /dev/null and b/public/terrain/17/214634/88495.terrain differ diff --git a/public/terrain/17/214634/88496.terrain b/public/terrain/17/214634/88496.terrain new file mode 100644 index 000000000..a10f6a29a Binary files /dev/null and b/public/terrain/17/214634/88496.terrain differ diff --git a/public/terrain/17/214634/88497.terrain b/public/terrain/17/214634/88497.terrain new file mode 100644 index 000000000..893df6366 Binary files /dev/null and b/public/terrain/17/214634/88497.terrain differ diff --git a/public/terrain/17/214634/88498.terrain b/public/terrain/17/214634/88498.terrain new file mode 100644 index 000000000..4c168c7ba Binary files /dev/null and b/public/terrain/17/214634/88498.terrain differ diff --git a/public/terrain/17/214634/88499.terrain b/public/terrain/17/214634/88499.terrain new file mode 100644 index 000000000..4f76f702c Binary files /dev/null and b/public/terrain/17/214634/88499.terrain differ diff --git a/public/terrain/17/214634/88500.terrain b/public/terrain/17/214634/88500.terrain new file mode 100644 index 000000000..7dcac8976 Binary files /dev/null and b/public/terrain/17/214634/88500.terrain differ diff --git a/public/terrain/17/214634/88501.terrain b/public/terrain/17/214634/88501.terrain new file mode 100644 index 000000000..b7ba3ce66 Binary files /dev/null and b/public/terrain/17/214634/88501.terrain differ diff --git a/public/terrain/17/214634/88502.terrain b/public/terrain/17/214634/88502.terrain new file mode 100644 index 000000000..6e678f360 Binary files /dev/null and b/public/terrain/17/214634/88502.terrain differ diff --git a/public/terrain/17/214634/88503.terrain b/public/terrain/17/214634/88503.terrain new file mode 100644 index 000000000..0cb8454c4 Binary files /dev/null and b/public/terrain/17/214634/88503.terrain differ diff --git a/public/terrain/17/214634/88504.terrain b/public/terrain/17/214634/88504.terrain new file mode 100644 index 000000000..5cba29222 Binary files /dev/null and b/public/terrain/17/214634/88504.terrain differ diff --git a/public/terrain/17/214634/88505.terrain b/public/terrain/17/214634/88505.terrain new file mode 100644 index 000000000..a6ba53bbc Binary files /dev/null and b/public/terrain/17/214634/88505.terrain differ diff --git a/public/terrain/17/214634/88506.terrain b/public/terrain/17/214634/88506.terrain new file mode 100644 index 000000000..46bef682d Binary files /dev/null and b/public/terrain/17/214634/88506.terrain differ diff --git a/public/terrain/17/214634/88507.terrain b/public/terrain/17/214634/88507.terrain new file mode 100644 index 000000000..385c8872d Binary files /dev/null and b/public/terrain/17/214634/88507.terrain differ diff --git a/public/terrain/17/214634/88508.terrain b/public/terrain/17/214634/88508.terrain new file mode 100644 index 000000000..976c35aea Binary files /dev/null and b/public/terrain/17/214634/88508.terrain differ diff --git a/public/terrain/17/214634/88509.terrain b/public/terrain/17/214634/88509.terrain new file mode 100644 index 000000000..c27b906d2 Binary files /dev/null and b/public/terrain/17/214634/88509.terrain differ diff --git a/public/terrain/17/214634/88510.terrain b/public/terrain/17/214634/88510.terrain new file mode 100644 index 000000000..de9d1fcf4 Binary files /dev/null and b/public/terrain/17/214634/88510.terrain differ diff --git a/public/terrain/17/214634/88511.terrain b/public/terrain/17/214634/88511.terrain new file mode 100644 index 000000000..3a3a1b3fe Binary files /dev/null and b/public/terrain/17/214634/88511.terrain differ diff --git a/public/terrain/17/214634/88512.terrain b/public/terrain/17/214634/88512.terrain new file mode 100644 index 000000000..a8e155c3b Binary files /dev/null and b/public/terrain/17/214634/88512.terrain differ diff --git a/public/terrain/17/214634/88513.terrain b/public/terrain/17/214634/88513.terrain new file mode 100644 index 000000000..d575d2026 Binary files /dev/null and b/public/terrain/17/214634/88513.terrain differ diff --git a/public/terrain/17/214634/88514.terrain b/public/terrain/17/214634/88514.terrain new file mode 100644 index 000000000..9f18db8ea Binary files /dev/null and b/public/terrain/17/214634/88514.terrain differ diff --git a/public/terrain/17/214635/88435.terrain b/public/terrain/17/214635/88435.terrain new file mode 100644 index 000000000..f71a1d821 Binary files /dev/null and b/public/terrain/17/214635/88435.terrain differ diff --git a/public/terrain/17/214635/88436.terrain b/public/terrain/17/214635/88436.terrain new file mode 100644 index 000000000..ee96403c7 Binary files /dev/null and b/public/terrain/17/214635/88436.terrain differ diff --git a/public/terrain/17/214635/88437.terrain b/public/terrain/17/214635/88437.terrain new file mode 100644 index 000000000..6a925e632 Binary files /dev/null and b/public/terrain/17/214635/88437.terrain differ diff --git a/public/terrain/17/214635/88438.terrain b/public/terrain/17/214635/88438.terrain new file mode 100644 index 000000000..ab664426b Binary files /dev/null and b/public/terrain/17/214635/88438.terrain differ diff --git a/public/terrain/17/214635/88439.terrain b/public/terrain/17/214635/88439.terrain new file mode 100644 index 000000000..98fe5c93c Binary files /dev/null and b/public/terrain/17/214635/88439.terrain differ diff --git a/public/terrain/17/214635/88440.terrain b/public/terrain/17/214635/88440.terrain new file mode 100644 index 000000000..2aeb9e331 Binary files /dev/null and b/public/terrain/17/214635/88440.terrain differ diff --git a/public/terrain/17/214635/88441.terrain b/public/terrain/17/214635/88441.terrain new file mode 100644 index 000000000..3876ca847 Binary files /dev/null and b/public/terrain/17/214635/88441.terrain differ diff --git a/public/terrain/17/214635/88442.terrain b/public/terrain/17/214635/88442.terrain new file mode 100644 index 000000000..af7879966 Binary files /dev/null and b/public/terrain/17/214635/88442.terrain differ diff --git a/public/terrain/17/214635/88443.terrain b/public/terrain/17/214635/88443.terrain new file mode 100644 index 000000000..7f646bf64 Binary files /dev/null and b/public/terrain/17/214635/88443.terrain differ diff --git a/public/terrain/17/214635/88444.terrain b/public/terrain/17/214635/88444.terrain new file mode 100644 index 000000000..6959bfaf2 Binary files /dev/null and b/public/terrain/17/214635/88444.terrain differ diff --git a/public/terrain/17/214635/88445.terrain b/public/terrain/17/214635/88445.terrain new file mode 100644 index 000000000..76f2fcd39 Binary files /dev/null and b/public/terrain/17/214635/88445.terrain differ diff --git a/public/terrain/17/214635/88446.terrain b/public/terrain/17/214635/88446.terrain new file mode 100644 index 000000000..76f1f87ee Binary files /dev/null and b/public/terrain/17/214635/88446.terrain differ diff --git a/public/terrain/17/214635/88447.terrain b/public/terrain/17/214635/88447.terrain new file mode 100644 index 000000000..378e2c5c6 Binary files /dev/null and b/public/terrain/17/214635/88447.terrain differ diff --git a/public/terrain/17/214635/88448.terrain b/public/terrain/17/214635/88448.terrain new file mode 100644 index 000000000..072dfa920 Binary files /dev/null and b/public/terrain/17/214635/88448.terrain differ diff --git a/public/terrain/17/214635/88449.terrain b/public/terrain/17/214635/88449.terrain new file mode 100644 index 000000000..550866f04 Binary files /dev/null and b/public/terrain/17/214635/88449.terrain differ diff --git a/public/terrain/17/214635/88450.terrain b/public/terrain/17/214635/88450.terrain new file mode 100644 index 000000000..027544052 Binary files /dev/null and b/public/terrain/17/214635/88450.terrain differ diff --git a/public/terrain/17/214635/88451.terrain b/public/terrain/17/214635/88451.terrain new file mode 100644 index 000000000..43881fadc Binary files /dev/null and b/public/terrain/17/214635/88451.terrain differ diff --git a/public/terrain/17/214635/88452.terrain b/public/terrain/17/214635/88452.terrain new file mode 100644 index 000000000..a093d28d4 Binary files /dev/null and b/public/terrain/17/214635/88452.terrain differ diff --git a/public/terrain/17/214635/88453.terrain b/public/terrain/17/214635/88453.terrain new file mode 100644 index 000000000..9de4075f3 Binary files /dev/null and b/public/terrain/17/214635/88453.terrain differ diff --git a/public/terrain/17/214635/88454.terrain b/public/terrain/17/214635/88454.terrain new file mode 100644 index 000000000..fd4c035e4 Binary files /dev/null and b/public/terrain/17/214635/88454.terrain differ diff --git a/public/terrain/17/214635/88455.terrain b/public/terrain/17/214635/88455.terrain new file mode 100644 index 000000000..087f1fdb7 Binary files /dev/null and b/public/terrain/17/214635/88455.terrain differ diff --git a/public/terrain/17/214635/88456.terrain b/public/terrain/17/214635/88456.terrain new file mode 100644 index 000000000..1eed5700d Binary files /dev/null and b/public/terrain/17/214635/88456.terrain differ diff --git a/public/terrain/17/214635/88457.terrain b/public/terrain/17/214635/88457.terrain new file mode 100644 index 000000000..9d8084f80 Binary files /dev/null and b/public/terrain/17/214635/88457.terrain differ diff --git a/public/terrain/17/214635/88458.terrain b/public/terrain/17/214635/88458.terrain new file mode 100644 index 000000000..10e21152d Binary files /dev/null and b/public/terrain/17/214635/88458.terrain differ diff --git a/public/terrain/17/214635/88459.terrain b/public/terrain/17/214635/88459.terrain new file mode 100644 index 000000000..e26ac5357 Binary files /dev/null and b/public/terrain/17/214635/88459.terrain differ diff --git a/public/terrain/17/214635/88460.terrain b/public/terrain/17/214635/88460.terrain new file mode 100644 index 000000000..e34c9839f Binary files /dev/null and b/public/terrain/17/214635/88460.terrain differ diff --git a/public/terrain/17/214635/88461.terrain b/public/terrain/17/214635/88461.terrain new file mode 100644 index 000000000..6cf8198bb Binary files /dev/null and b/public/terrain/17/214635/88461.terrain differ diff --git a/public/terrain/17/214635/88462.terrain b/public/terrain/17/214635/88462.terrain new file mode 100644 index 000000000..aa62412d9 Binary files /dev/null and b/public/terrain/17/214635/88462.terrain differ diff --git a/public/terrain/17/214635/88463.terrain b/public/terrain/17/214635/88463.terrain new file mode 100644 index 000000000..96e413c4a Binary files /dev/null and b/public/terrain/17/214635/88463.terrain differ diff --git a/public/terrain/17/214635/88464.terrain b/public/terrain/17/214635/88464.terrain new file mode 100644 index 000000000..941c6ab33 Binary files /dev/null and b/public/terrain/17/214635/88464.terrain differ diff --git a/public/terrain/17/214635/88465.terrain b/public/terrain/17/214635/88465.terrain new file mode 100644 index 000000000..46b8eba4c Binary files /dev/null and b/public/terrain/17/214635/88465.terrain differ diff --git a/public/terrain/17/214635/88466.terrain b/public/terrain/17/214635/88466.terrain new file mode 100644 index 000000000..fd3acc26b Binary files /dev/null and b/public/terrain/17/214635/88466.terrain differ diff --git a/public/terrain/17/214635/88467.terrain b/public/terrain/17/214635/88467.terrain new file mode 100644 index 000000000..8729f748f Binary files /dev/null and b/public/terrain/17/214635/88467.terrain differ diff --git a/public/terrain/17/214635/88468.terrain b/public/terrain/17/214635/88468.terrain new file mode 100644 index 000000000..1f3086707 Binary files /dev/null and b/public/terrain/17/214635/88468.terrain differ diff --git a/public/terrain/17/214635/88469.terrain b/public/terrain/17/214635/88469.terrain new file mode 100644 index 000000000..5f8075c20 Binary files /dev/null and b/public/terrain/17/214635/88469.terrain differ diff --git a/public/terrain/17/214635/88470.terrain b/public/terrain/17/214635/88470.terrain new file mode 100644 index 000000000..2125e47e0 Binary files /dev/null and b/public/terrain/17/214635/88470.terrain differ diff --git a/public/terrain/17/214635/88471.terrain b/public/terrain/17/214635/88471.terrain new file mode 100644 index 000000000..7928c8650 Binary files /dev/null and b/public/terrain/17/214635/88471.terrain differ diff --git a/public/terrain/17/214635/88472.terrain b/public/terrain/17/214635/88472.terrain new file mode 100644 index 000000000..b2632e999 Binary files /dev/null and b/public/terrain/17/214635/88472.terrain differ diff --git a/public/terrain/17/214635/88473.terrain b/public/terrain/17/214635/88473.terrain new file mode 100644 index 000000000..56fe6bac2 Binary files /dev/null and b/public/terrain/17/214635/88473.terrain differ diff --git a/public/terrain/17/214635/88474.terrain b/public/terrain/17/214635/88474.terrain new file mode 100644 index 000000000..f57787237 Binary files /dev/null and b/public/terrain/17/214635/88474.terrain differ diff --git a/public/terrain/17/214635/88475.terrain b/public/terrain/17/214635/88475.terrain new file mode 100644 index 000000000..8bd846362 Binary files /dev/null and b/public/terrain/17/214635/88475.terrain differ diff --git a/public/terrain/17/214635/88476.terrain b/public/terrain/17/214635/88476.terrain new file mode 100644 index 000000000..9742cb7c4 Binary files /dev/null and b/public/terrain/17/214635/88476.terrain differ diff --git a/public/terrain/17/214635/88477.terrain b/public/terrain/17/214635/88477.terrain new file mode 100644 index 000000000..074cc6e69 Binary files /dev/null and b/public/terrain/17/214635/88477.terrain differ diff --git a/public/terrain/17/214635/88478.terrain b/public/terrain/17/214635/88478.terrain new file mode 100644 index 000000000..142c39699 Binary files /dev/null and b/public/terrain/17/214635/88478.terrain differ diff --git a/public/terrain/17/214635/88479.terrain b/public/terrain/17/214635/88479.terrain new file mode 100644 index 000000000..6061e5651 Binary files /dev/null and b/public/terrain/17/214635/88479.terrain differ diff --git a/public/terrain/17/214635/88480.terrain b/public/terrain/17/214635/88480.terrain new file mode 100644 index 000000000..2d488a005 Binary files /dev/null and b/public/terrain/17/214635/88480.terrain differ diff --git a/public/terrain/17/214635/88481.terrain b/public/terrain/17/214635/88481.terrain new file mode 100644 index 000000000..ff6735031 Binary files /dev/null and b/public/terrain/17/214635/88481.terrain differ diff --git a/public/terrain/17/214635/88482.terrain b/public/terrain/17/214635/88482.terrain new file mode 100644 index 000000000..ca87261e3 Binary files /dev/null and b/public/terrain/17/214635/88482.terrain differ diff --git a/public/terrain/17/214635/88483.terrain b/public/terrain/17/214635/88483.terrain new file mode 100644 index 000000000..81acce1d2 Binary files /dev/null and b/public/terrain/17/214635/88483.terrain differ diff --git a/public/terrain/17/214635/88484.terrain b/public/terrain/17/214635/88484.terrain new file mode 100644 index 000000000..ab086ff0d Binary files /dev/null and b/public/terrain/17/214635/88484.terrain differ diff --git a/public/terrain/17/214635/88485.terrain b/public/terrain/17/214635/88485.terrain new file mode 100644 index 000000000..6e6cd0316 Binary files /dev/null and b/public/terrain/17/214635/88485.terrain differ diff --git a/public/terrain/17/214635/88486.terrain b/public/terrain/17/214635/88486.terrain new file mode 100644 index 000000000..67021d886 Binary files /dev/null and b/public/terrain/17/214635/88486.terrain differ diff --git a/public/terrain/17/214635/88487.terrain b/public/terrain/17/214635/88487.terrain new file mode 100644 index 000000000..a5db365cd Binary files /dev/null and b/public/terrain/17/214635/88487.terrain differ diff --git a/public/terrain/17/214635/88488.terrain b/public/terrain/17/214635/88488.terrain new file mode 100644 index 000000000..645dd46e8 Binary files /dev/null and b/public/terrain/17/214635/88488.terrain differ diff --git a/public/terrain/17/214635/88489.terrain b/public/terrain/17/214635/88489.terrain new file mode 100644 index 000000000..d9b7aaf0f Binary files /dev/null and b/public/terrain/17/214635/88489.terrain differ diff --git a/public/terrain/17/214635/88490.terrain b/public/terrain/17/214635/88490.terrain new file mode 100644 index 000000000..964362766 Binary files /dev/null and b/public/terrain/17/214635/88490.terrain differ diff --git a/public/terrain/17/214635/88491.terrain b/public/terrain/17/214635/88491.terrain new file mode 100644 index 000000000..194acb4bb Binary files /dev/null and b/public/terrain/17/214635/88491.terrain differ diff --git a/public/terrain/17/214635/88492.terrain b/public/terrain/17/214635/88492.terrain new file mode 100644 index 000000000..922675526 Binary files /dev/null and b/public/terrain/17/214635/88492.terrain differ diff --git a/public/terrain/17/214635/88493.terrain b/public/terrain/17/214635/88493.terrain new file mode 100644 index 000000000..6a6833874 Binary files /dev/null and b/public/terrain/17/214635/88493.terrain differ diff --git a/public/terrain/17/214635/88494.terrain b/public/terrain/17/214635/88494.terrain new file mode 100644 index 000000000..6b3b8ec84 Binary files /dev/null and b/public/terrain/17/214635/88494.terrain differ diff --git a/public/terrain/17/214635/88495.terrain b/public/terrain/17/214635/88495.terrain new file mode 100644 index 000000000..a7df86261 Binary files /dev/null and b/public/terrain/17/214635/88495.terrain differ diff --git a/public/terrain/17/214635/88496.terrain b/public/terrain/17/214635/88496.terrain new file mode 100644 index 000000000..869c453e5 Binary files /dev/null and b/public/terrain/17/214635/88496.terrain differ diff --git a/public/terrain/17/214635/88497.terrain b/public/terrain/17/214635/88497.terrain new file mode 100644 index 000000000..ac1fad5cb Binary files /dev/null and b/public/terrain/17/214635/88497.terrain differ diff --git a/public/terrain/17/214635/88498.terrain b/public/terrain/17/214635/88498.terrain new file mode 100644 index 000000000..6db3526f8 Binary files /dev/null and b/public/terrain/17/214635/88498.terrain differ diff --git a/public/terrain/17/214635/88499.terrain b/public/terrain/17/214635/88499.terrain new file mode 100644 index 000000000..555eb9047 Binary files /dev/null and b/public/terrain/17/214635/88499.terrain differ diff --git a/public/terrain/17/214635/88500.terrain b/public/terrain/17/214635/88500.terrain new file mode 100644 index 000000000..58ab9664d Binary files /dev/null and b/public/terrain/17/214635/88500.terrain differ diff --git a/public/terrain/17/214635/88501.terrain b/public/terrain/17/214635/88501.terrain new file mode 100644 index 000000000..22321547e Binary files /dev/null and b/public/terrain/17/214635/88501.terrain differ diff --git a/public/terrain/17/214635/88502.terrain b/public/terrain/17/214635/88502.terrain new file mode 100644 index 000000000..b723fe5b0 Binary files /dev/null and b/public/terrain/17/214635/88502.terrain differ diff --git a/public/terrain/17/214635/88503.terrain b/public/terrain/17/214635/88503.terrain new file mode 100644 index 000000000..3a4209f41 Binary files /dev/null and b/public/terrain/17/214635/88503.terrain differ diff --git a/public/terrain/17/214635/88504.terrain b/public/terrain/17/214635/88504.terrain new file mode 100644 index 000000000..69e697517 Binary files /dev/null and b/public/terrain/17/214635/88504.terrain differ diff --git a/public/terrain/17/214635/88505.terrain b/public/terrain/17/214635/88505.terrain new file mode 100644 index 000000000..ec02203c7 Binary files /dev/null and b/public/terrain/17/214635/88505.terrain differ diff --git a/public/terrain/17/214635/88506.terrain b/public/terrain/17/214635/88506.terrain new file mode 100644 index 000000000..4a1da06a6 Binary files /dev/null and b/public/terrain/17/214635/88506.terrain differ diff --git a/public/terrain/17/214635/88507.terrain b/public/terrain/17/214635/88507.terrain new file mode 100644 index 000000000..b490e17b9 Binary files /dev/null and b/public/terrain/17/214635/88507.terrain differ diff --git a/public/terrain/17/214635/88508.terrain b/public/terrain/17/214635/88508.terrain new file mode 100644 index 000000000..4459c5663 Binary files /dev/null and b/public/terrain/17/214635/88508.terrain differ diff --git a/public/terrain/17/214635/88509.terrain b/public/terrain/17/214635/88509.terrain new file mode 100644 index 000000000..ad2052dc3 Binary files /dev/null and b/public/terrain/17/214635/88509.terrain differ diff --git a/public/terrain/17/214635/88510.terrain b/public/terrain/17/214635/88510.terrain new file mode 100644 index 000000000..646da8b6b Binary files /dev/null and b/public/terrain/17/214635/88510.terrain differ diff --git a/public/terrain/17/214635/88511.terrain b/public/terrain/17/214635/88511.terrain new file mode 100644 index 000000000..1f62bb065 Binary files /dev/null and b/public/terrain/17/214635/88511.terrain differ diff --git a/public/terrain/17/214635/88512.terrain b/public/terrain/17/214635/88512.terrain new file mode 100644 index 000000000..80a38f832 Binary files /dev/null and b/public/terrain/17/214635/88512.terrain differ diff --git a/public/terrain/17/214635/88513.terrain b/public/terrain/17/214635/88513.terrain new file mode 100644 index 000000000..9cf5b5828 Binary files /dev/null and b/public/terrain/17/214635/88513.terrain differ diff --git a/public/terrain/17/214635/88514.terrain b/public/terrain/17/214635/88514.terrain new file mode 100644 index 000000000..afae8c530 Binary files /dev/null and b/public/terrain/17/214635/88514.terrain differ diff --git a/public/terrain/17/214636/88435.terrain b/public/terrain/17/214636/88435.terrain new file mode 100644 index 000000000..c21c16ba3 Binary files /dev/null and b/public/terrain/17/214636/88435.terrain differ diff --git a/public/terrain/17/214636/88436.terrain b/public/terrain/17/214636/88436.terrain new file mode 100644 index 000000000..d9a03fa18 Binary files /dev/null and b/public/terrain/17/214636/88436.terrain differ diff --git a/public/terrain/17/214636/88437.terrain b/public/terrain/17/214636/88437.terrain new file mode 100644 index 000000000..ec7d0b18b Binary files /dev/null and b/public/terrain/17/214636/88437.terrain differ diff --git a/public/terrain/17/214636/88438.terrain b/public/terrain/17/214636/88438.terrain new file mode 100644 index 000000000..609fd83bf Binary files /dev/null and b/public/terrain/17/214636/88438.terrain differ diff --git a/public/terrain/17/214636/88439.terrain b/public/terrain/17/214636/88439.terrain new file mode 100644 index 000000000..d4cd27cf9 Binary files /dev/null and b/public/terrain/17/214636/88439.terrain differ diff --git a/public/terrain/17/214636/88440.terrain b/public/terrain/17/214636/88440.terrain new file mode 100644 index 000000000..de5a2047e Binary files /dev/null and b/public/terrain/17/214636/88440.terrain differ diff --git a/public/terrain/17/214636/88441.terrain b/public/terrain/17/214636/88441.terrain new file mode 100644 index 000000000..f3e9a5fe1 Binary files /dev/null and b/public/terrain/17/214636/88441.terrain differ diff --git a/public/terrain/17/214636/88442.terrain b/public/terrain/17/214636/88442.terrain new file mode 100644 index 000000000..e11a3f530 Binary files /dev/null and b/public/terrain/17/214636/88442.terrain differ diff --git a/public/terrain/17/214636/88443.terrain b/public/terrain/17/214636/88443.terrain new file mode 100644 index 000000000..a52d9e492 Binary files /dev/null and b/public/terrain/17/214636/88443.terrain differ diff --git a/public/terrain/17/214636/88444.terrain b/public/terrain/17/214636/88444.terrain new file mode 100644 index 000000000..a7407ccec Binary files /dev/null and b/public/terrain/17/214636/88444.terrain differ diff --git a/public/terrain/17/214636/88445.terrain b/public/terrain/17/214636/88445.terrain new file mode 100644 index 000000000..43c0b2e2f Binary files /dev/null and b/public/terrain/17/214636/88445.terrain differ diff --git a/public/terrain/17/214636/88446.terrain b/public/terrain/17/214636/88446.terrain new file mode 100644 index 000000000..5aaf7939f Binary files /dev/null and b/public/terrain/17/214636/88446.terrain differ diff --git a/public/terrain/17/214636/88447.terrain b/public/terrain/17/214636/88447.terrain new file mode 100644 index 000000000..afc0ab16c Binary files /dev/null and b/public/terrain/17/214636/88447.terrain differ diff --git a/public/terrain/17/214636/88448.terrain b/public/terrain/17/214636/88448.terrain new file mode 100644 index 000000000..33bfd13c3 Binary files /dev/null and b/public/terrain/17/214636/88448.terrain differ diff --git a/public/terrain/17/214636/88449.terrain b/public/terrain/17/214636/88449.terrain new file mode 100644 index 000000000..05af43e81 Binary files /dev/null and b/public/terrain/17/214636/88449.terrain differ diff --git a/public/terrain/17/214636/88450.terrain b/public/terrain/17/214636/88450.terrain new file mode 100644 index 000000000..936d5143e Binary files /dev/null and b/public/terrain/17/214636/88450.terrain differ diff --git a/public/terrain/17/214636/88451.terrain b/public/terrain/17/214636/88451.terrain new file mode 100644 index 000000000..d661f33d2 Binary files /dev/null and b/public/terrain/17/214636/88451.terrain differ diff --git a/public/terrain/17/214636/88452.terrain b/public/terrain/17/214636/88452.terrain new file mode 100644 index 000000000..fbfd29d4f Binary files /dev/null and b/public/terrain/17/214636/88452.terrain differ diff --git a/public/terrain/17/214636/88453.terrain b/public/terrain/17/214636/88453.terrain new file mode 100644 index 000000000..aa76b6773 Binary files /dev/null and b/public/terrain/17/214636/88453.terrain differ diff --git a/public/terrain/17/214636/88454.terrain b/public/terrain/17/214636/88454.terrain new file mode 100644 index 000000000..7c221de79 Binary files /dev/null and b/public/terrain/17/214636/88454.terrain differ diff --git a/public/terrain/17/214636/88455.terrain b/public/terrain/17/214636/88455.terrain new file mode 100644 index 000000000..a3c771cd2 Binary files /dev/null and b/public/terrain/17/214636/88455.terrain differ diff --git a/public/terrain/17/214636/88456.terrain b/public/terrain/17/214636/88456.terrain new file mode 100644 index 000000000..4f58d1545 Binary files /dev/null and b/public/terrain/17/214636/88456.terrain differ diff --git a/public/terrain/17/214636/88457.terrain b/public/terrain/17/214636/88457.terrain new file mode 100644 index 000000000..2860c4bc7 Binary files /dev/null and b/public/terrain/17/214636/88457.terrain differ diff --git a/public/terrain/17/214636/88458.terrain b/public/terrain/17/214636/88458.terrain new file mode 100644 index 000000000..9a2bf6e29 Binary files /dev/null and b/public/terrain/17/214636/88458.terrain differ diff --git a/public/terrain/17/214636/88459.terrain b/public/terrain/17/214636/88459.terrain new file mode 100644 index 000000000..b78a6999e Binary files /dev/null and b/public/terrain/17/214636/88459.terrain differ diff --git a/public/terrain/17/214636/88460.terrain b/public/terrain/17/214636/88460.terrain new file mode 100644 index 000000000..8c9853303 Binary files /dev/null and b/public/terrain/17/214636/88460.terrain differ diff --git a/public/terrain/17/214636/88461.terrain b/public/terrain/17/214636/88461.terrain new file mode 100644 index 000000000..53972948e Binary files /dev/null and b/public/terrain/17/214636/88461.terrain differ diff --git a/public/terrain/17/214636/88462.terrain b/public/terrain/17/214636/88462.terrain new file mode 100644 index 000000000..9a44699ef Binary files /dev/null and b/public/terrain/17/214636/88462.terrain differ diff --git a/public/terrain/17/214636/88463.terrain b/public/terrain/17/214636/88463.terrain new file mode 100644 index 000000000..ba1e4b662 Binary files /dev/null and b/public/terrain/17/214636/88463.terrain differ diff --git a/public/terrain/17/214636/88464.terrain b/public/terrain/17/214636/88464.terrain new file mode 100644 index 000000000..145f99873 Binary files /dev/null and b/public/terrain/17/214636/88464.terrain differ diff --git a/public/terrain/17/214636/88465.terrain b/public/terrain/17/214636/88465.terrain new file mode 100644 index 000000000..903c1e7c0 Binary files /dev/null and b/public/terrain/17/214636/88465.terrain differ diff --git a/public/terrain/17/214636/88466.terrain b/public/terrain/17/214636/88466.terrain new file mode 100644 index 000000000..c35e963ea Binary files /dev/null and b/public/terrain/17/214636/88466.terrain differ diff --git a/public/terrain/17/214636/88467.terrain b/public/terrain/17/214636/88467.terrain new file mode 100644 index 000000000..a7014c28c Binary files /dev/null and b/public/terrain/17/214636/88467.terrain differ diff --git a/public/terrain/17/214636/88468.terrain b/public/terrain/17/214636/88468.terrain new file mode 100644 index 000000000..952772f7b Binary files /dev/null and b/public/terrain/17/214636/88468.terrain differ diff --git a/public/terrain/17/214636/88469.terrain b/public/terrain/17/214636/88469.terrain new file mode 100644 index 000000000..db29afd23 Binary files /dev/null and b/public/terrain/17/214636/88469.terrain differ diff --git a/public/terrain/17/214636/88470.terrain b/public/terrain/17/214636/88470.terrain new file mode 100644 index 000000000..b42f3aa7a Binary files /dev/null and b/public/terrain/17/214636/88470.terrain differ diff --git a/public/terrain/17/214636/88471.terrain b/public/terrain/17/214636/88471.terrain new file mode 100644 index 000000000..56b4f3ae6 Binary files /dev/null and b/public/terrain/17/214636/88471.terrain differ diff --git a/public/terrain/17/214636/88472.terrain b/public/terrain/17/214636/88472.terrain new file mode 100644 index 000000000..9728f76e4 Binary files /dev/null and b/public/terrain/17/214636/88472.terrain differ diff --git a/public/terrain/17/214636/88473.terrain b/public/terrain/17/214636/88473.terrain new file mode 100644 index 000000000..9be9e7ea9 Binary files /dev/null and b/public/terrain/17/214636/88473.terrain differ diff --git a/public/terrain/17/214636/88474.terrain b/public/terrain/17/214636/88474.terrain new file mode 100644 index 000000000..19fa7123b Binary files /dev/null and b/public/terrain/17/214636/88474.terrain differ diff --git a/public/terrain/17/214636/88475.terrain b/public/terrain/17/214636/88475.terrain new file mode 100644 index 000000000..9ebf2c851 Binary files /dev/null and b/public/terrain/17/214636/88475.terrain differ diff --git a/public/terrain/17/214636/88476.terrain b/public/terrain/17/214636/88476.terrain new file mode 100644 index 000000000..a4fe50439 Binary files /dev/null and b/public/terrain/17/214636/88476.terrain differ diff --git a/public/terrain/17/214636/88477.terrain b/public/terrain/17/214636/88477.terrain new file mode 100644 index 000000000..0cd54ac70 Binary files /dev/null and b/public/terrain/17/214636/88477.terrain differ diff --git a/public/terrain/17/214636/88478.terrain b/public/terrain/17/214636/88478.terrain new file mode 100644 index 000000000..723b665a6 Binary files /dev/null and b/public/terrain/17/214636/88478.terrain differ diff --git a/public/terrain/17/214636/88479.terrain b/public/terrain/17/214636/88479.terrain new file mode 100644 index 000000000..1bd5d4784 Binary files /dev/null and b/public/terrain/17/214636/88479.terrain differ diff --git a/public/terrain/17/214636/88480.terrain b/public/terrain/17/214636/88480.terrain new file mode 100644 index 000000000..21cf6c1d8 Binary files /dev/null and b/public/terrain/17/214636/88480.terrain differ diff --git a/public/terrain/17/214636/88481.terrain b/public/terrain/17/214636/88481.terrain new file mode 100644 index 000000000..30c4340d5 Binary files /dev/null and b/public/terrain/17/214636/88481.terrain differ diff --git a/public/terrain/17/214636/88482.terrain b/public/terrain/17/214636/88482.terrain new file mode 100644 index 000000000..54a72d56a Binary files /dev/null and b/public/terrain/17/214636/88482.terrain differ diff --git a/public/terrain/17/214636/88483.terrain b/public/terrain/17/214636/88483.terrain new file mode 100644 index 000000000..2e41875df Binary files /dev/null and b/public/terrain/17/214636/88483.terrain differ diff --git a/public/terrain/17/214636/88484.terrain b/public/terrain/17/214636/88484.terrain new file mode 100644 index 000000000..d9677031c Binary files /dev/null and b/public/terrain/17/214636/88484.terrain differ diff --git a/public/terrain/17/214636/88485.terrain b/public/terrain/17/214636/88485.terrain new file mode 100644 index 000000000..57f670563 Binary files /dev/null and b/public/terrain/17/214636/88485.terrain differ diff --git a/public/terrain/17/214636/88486.terrain b/public/terrain/17/214636/88486.terrain new file mode 100644 index 000000000..f5d1ae46f Binary files /dev/null and b/public/terrain/17/214636/88486.terrain differ diff --git a/public/terrain/17/214636/88487.terrain b/public/terrain/17/214636/88487.terrain new file mode 100644 index 000000000..97756e7e0 Binary files /dev/null and b/public/terrain/17/214636/88487.terrain differ diff --git a/public/terrain/17/214636/88488.terrain b/public/terrain/17/214636/88488.terrain new file mode 100644 index 000000000..c33d1c7f5 Binary files /dev/null and b/public/terrain/17/214636/88488.terrain differ diff --git a/public/terrain/17/214636/88489.terrain b/public/terrain/17/214636/88489.terrain new file mode 100644 index 000000000..58a07cd17 Binary files /dev/null and b/public/terrain/17/214636/88489.terrain differ diff --git a/public/terrain/17/214636/88490.terrain b/public/terrain/17/214636/88490.terrain new file mode 100644 index 000000000..04ad7e0e1 Binary files /dev/null and b/public/terrain/17/214636/88490.terrain differ diff --git a/public/terrain/17/214636/88491.terrain b/public/terrain/17/214636/88491.terrain new file mode 100644 index 000000000..a8d7f48dc Binary files /dev/null and b/public/terrain/17/214636/88491.terrain differ diff --git a/public/terrain/17/214636/88492.terrain b/public/terrain/17/214636/88492.terrain new file mode 100644 index 000000000..007146e4b Binary files /dev/null and b/public/terrain/17/214636/88492.terrain differ diff --git a/public/terrain/17/214636/88493.terrain b/public/terrain/17/214636/88493.terrain new file mode 100644 index 000000000..ed8816e7e Binary files /dev/null and b/public/terrain/17/214636/88493.terrain differ diff --git a/public/terrain/17/214636/88494.terrain b/public/terrain/17/214636/88494.terrain new file mode 100644 index 000000000..65155d804 Binary files /dev/null and b/public/terrain/17/214636/88494.terrain differ diff --git a/public/terrain/17/214636/88495.terrain b/public/terrain/17/214636/88495.terrain new file mode 100644 index 000000000..9732e54f8 Binary files /dev/null and b/public/terrain/17/214636/88495.terrain differ diff --git a/public/terrain/17/214636/88496.terrain b/public/terrain/17/214636/88496.terrain new file mode 100644 index 000000000..62d5563dc Binary files /dev/null and b/public/terrain/17/214636/88496.terrain differ diff --git a/public/terrain/17/214636/88497.terrain b/public/terrain/17/214636/88497.terrain new file mode 100644 index 000000000..584084710 Binary files /dev/null and b/public/terrain/17/214636/88497.terrain differ diff --git a/public/terrain/17/214636/88498.terrain b/public/terrain/17/214636/88498.terrain new file mode 100644 index 000000000..1cc3032d5 Binary files /dev/null and b/public/terrain/17/214636/88498.terrain differ diff --git a/public/terrain/17/214636/88499.terrain b/public/terrain/17/214636/88499.terrain new file mode 100644 index 000000000..4067f416c Binary files /dev/null and b/public/terrain/17/214636/88499.terrain differ diff --git a/public/terrain/17/214636/88500.terrain b/public/terrain/17/214636/88500.terrain new file mode 100644 index 000000000..06f1cf187 Binary files /dev/null and b/public/terrain/17/214636/88500.terrain differ diff --git a/public/terrain/17/214636/88501.terrain b/public/terrain/17/214636/88501.terrain new file mode 100644 index 000000000..687521e2c Binary files /dev/null and b/public/terrain/17/214636/88501.terrain differ diff --git a/public/terrain/17/214636/88502.terrain b/public/terrain/17/214636/88502.terrain new file mode 100644 index 000000000..4fc243c93 Binary files /dev/null and b/public/terrain/17/214636/88502.terrain differ diff --git a/public/terrain/17/214636/88503.terrain b/public/terrain/17/214636/88503.terrain new file mode 100644 index 000000000..2093c8fda Binary files /dev/null and b/public/terrain/17/214636/88503.terrain differ diff --git a/public/terrain/17/214636/88504.terrain b/public/terrain/17/214636/88504.terrain new file mode 100644 index 000000000..b2985e513 Binary files /dev/null and b/public/terrain/17/214636/88504.terrain differ diff --git a/public/terrain/17/214636/88505.terrain b/public/terrain/17/214636/88505.terrain new file mode 100644 index 000000000..bbb631df9 Binary files /dev/null and b/public/terrain/17/214636/88505.terrain differ diff --git a/public/terrain/17/214636/88506.terrain b/public/terrain/17/214636/88506.terrain new file mode 100644 index 000000000..a8e212fa3 Binary files /dev/null and b/public/terrain/17/214636/88506.terrain differ diff --git a/public/terrain/17/214636/88507.terrain b/public/terrain/17/214636/88507.terrain new file mode 100644 index 000000000..b05360e5b Binary files /dev/null and b/public/terrain/17/214636/88507.terrain differ diff --git a/public/terrain/17/214636/88508.terrain b/public/terrain/17/214636/88508.terrain new file mode 100644 index 000000000..5947c0e66 Binary files /dev/null and b/public/terrain/17/214636/88508.terrain differ diff --git a/public/terrain/17/214636/88509.terrain b/public/terrain/17/214636/88509.terrain new file mode 100644 index 000000000..00a2385ec Binary files /dev/null and b/public/terrain/17/214636/88509.terrain differ diff --git a/public/terrain/17/214636/88510.terrain b/public/terrain/17/214636/88510.terrain new file mode 100644 index 000000000..d0a9b83cd Binary files /dev/null and b/public/terrain/17/214636/88510.terrain differ diff --git a/public/terrain/17/214636/88511.terrain b/public/terrain/17/214636/88511.terrain new file mode 100644 index 000000000..dbf73b8c1 Binary files /dev/null and b/public/terrain/17/214636/88511.terrain differ diff --git a/public/terrain/17/214636/88512.terrain b/public/terrain/17/214636/88512.terrain new file mode 100644 index 000000000..b1807e980 Binary files /dev/null and b/public/terrain/17/214636/88512.terrain differ diff --git a/public/terrain/17/214636/88513.terrain b/public/terrain/17/214636/88513.terrain new file mode 100644 index 000000000..99c700ea3 Binary files /dev/null and b/public/terrain/17/214636/88513.terrain differ diff --git a/public/terrain/17/214636/88514.terrain b/public/terrain/17/214636/88514.terrain new file mode 100644 index 000000000..1ea6743a5 Binary files /dev/null and b/public/terrain/17/214636/88514.terrain differ diff --git a/public/terrain/17/214637/88435.terrain b/public/terrain/17/214637/88435.terrain new file mode 100644 index 000000000..b89eda0e3 Binary files /dev/null and b/public/terrain/17/214637/88435.terrain differ diff --git a/public/terrain/17/214637/88436.terrain b/public/terrain/17/214637/88436.terrain new file mode 100644 index 000000000..e4ae72bed Binary files /dev/null and b/public/terrain/17/214637/88436.terrain differ diff --git a/public/terrain/17/214637/88437.terrain b/public/terrain/17/214637/88437.terrain new file mode 100644 index 000000000..d264e9ba6 Binary files /dev/null and b/public/terrain/17/214637/88437.terrain differ diff --git a/public/terrain/17/214637/88438.terrain b/public/terrain/17/214637/88438.terrain new file mode 100644 index 000000000..2e937cbe0 Binary files /dev/null and b/public/terrain/17/214637/88438.terrain differ diff --git a/public/terrain/17/214637/88439.terrain b/public/terrain/17/214637/88439.terrain new file mode 100644 index 000000000..51bada27f Binary files /dev/null and b/public/terrain/17/214637/88439.terrain differ diff --git a/public/terrain/17/214637/88440.terrain b/public/terrain/17/214637/88440.terrain new file mode 100644 index 000000000..936eae3ae Binary files /dev/null and b/public/terrain/17/214637/88440.terrain differ diff --git a/public/terrain/17/214637/88441.terrain b/public/terrain/17/214637/88441.terrain new file mode 100644 index 000000000..c7f3a8325 Binary files /dev/null and b/public/terrain/17/214637/88441.terrain differ diff --git a/public/terrain/17/214637/88442.terrain b/public/terrain/17/214637/88442.terrain new file mode 100644 index 000000000..42db25b73 Binary files /dev/null and b/public/terrain/17/214637/88442.terrain differ diff --git a/public/terrain/17/214637/88443.terrain b/public/terrain/17/214637/88443.terrain new file mode 100644 index 000000000..22977843f Binary files /dev/null and b/public/terrain/17/214637/88443.terrain differ diff --git a/public/terrain/17/214637/88444.terrain b/public/terrain/17/214637/88444.terrain new file mode 100644 index 000000000..3463da5ea Binary files /dev/null and b/public/terrain/17/214637/88444.terrain differ diff --git a/public/terrain/17/214637/88445.terrain b/public/terrain/17/214637/88445.terrain new file mode 100644 index 000000000..de35b531b Binary files /dev/null and b/public/terrain/17/214637/88445.terrain differ diff --git a/public/terrain/17/214637/88446.terrain b/public/terrain/17/214637/88446.terrain new file mode 100644 index 000000000..5856d83da Binary files /dev/null and b/public/terrain/17/214637/88446.terrain differ diff --git a/public/terrain/17/214637/88447.terrain b/public/terrain/17/214637/88447.terrain new file mode 100644 index 000000000..36247fd7a Binary files /dev/null and b/public/terrain/17/214637/88447.terrain differ diff --git a/public/terrain/17/214637/88448.terrain b/public/terrain/17/214637/88448.terrain new file mode 100644 index 000000000..274265931 Binary files /dev/null and b/public/terrain/17/214637/88448.terrain differ diff --git a/public/terrain/17/214637/88449.terrain b/public/terrain/17/214637/88449.terrain new file mode 100644 index 000000000..5f7207825 Binary files /dev/null and b/public/terrain/17/214637/88449.terrain differ diff --git a/public/terrain/17/214637/88450.terrain b/public/terrain/17/214637/88450.terrain new file mode 100644 index 000000000..0ba1bde36 Binary files /dev/null and b/public/terrain/17/214637/88450.terrain differ diff --git a/public/terrain/17/214637/88451.terrain b/public/terrain/17/214637/88451.terrain new file mode 100644 index 000000000..bbe058241 Binary files /dev/null and b/public/terrain/17/214637/88451.terrain differ diff --git a/public/terrain/17/214637/88452.terrain b/public/terrain/17/214637/88452.terrain new file mode 100644 index 000000000..c2fd40d8d Binary files /dev/null and b/public/terrain/17/214637/88452.terrain differ diff --git a/public/terrain/17/214637/88453.terrain b/public/terrain/17/214637/88453.terrain new file mode 100644 index 000000000..4335b9654 Binary files /dev/null and b/public/terrain/17/214637/88453.terrain differ diff --git a/public/terrain/17/214637/88454.terrain b/public/terrain/17/214637/88454.terrain new file mode 100644 index 000000000..0ce10a8e3 Binary files /dev/null and b/public/terrain/17/214637/88454.terrain differ diff --git a/public/terrain/17/214637/88455.terrain b/public/terrain/17/214637/88455.terrain new file mode 100644 index 000000000..868a810c9 Binary files /dev/null and b/public/terrain/17/214637/88455.terrain differ diff --git a/public/terrain/17/214637/88456.terrain b/public/terrain/17/214637/88456.terrain new file mode 100644 index 000000000..2a72348e1 Binary files /dev/null and b/public/terrain/17/214637/88456.terrain differ diff --git a/public/terrain/17/214637/88457.terrain b/public/terrain/17/214637/88457.terrain new file mode 100644 index 000000000..92f6cd2ad Binary files /dev/null and b/public/terrain/17/214637/88457.terrain differ diff --git a/public/terrain/17/214637/88458.terrain b/public/terrain/17/214637/88458.terrain new file mode 100644 index 000000000..c51a3f1f9 Binary files /dev/null and b/public/terrain/17/214637/88458.terrain differ diff --git a/public/terrain/17/214637/88459.terrain b/public/terrain/17/214637/88459.terrain new file mode 100644 index 000000000..bcccc1c4c Binary files /dev/null and b/public/terrain/17/214637/88459.terrain differ diff --git a/public/terrain/17/214637/88460.terrain b/public/terrain/17/214637/88460.terrain new file mode 100644 index 000000000..52522b0eb Binary files /dev/null and b/public/terrain/17/214637/88460.terrain differ diff --git a/public/terrain/17/214637/88461.terrain b/public/terrain/17/214637/88461.terrain new file mode 100644 index 000000000..0f0787d35 Binary files /dev/null and b/public/terrain/17/214637/88461.terrain differ diff --git a/public/terrain/17/214637/88462.terrain b/public/terrain/17/214637/88462.terrain new file mode 100644 index 000000000..3410c3e66 Binary files /dev/null and b/public/terrain/17/214637/88462.terrain differ diff --git a/public/terrain/17/214637/88463.terrain b/public/terrain/17/214637/88463.terrain new file mode 100644 index 000000000..f357d7696 Binary files /dev/null and b/public/terrain/17/214637/88463.terrain differ diff --git a/public/terrain/17/214637/88464.terrain b/public/terrain/17/214637/88464.terrain new file mode 100644 index 000000000..58af9551d Binary files /dev/null and b/public/terrain/17/214637/88464.terrain differ diff --git a/public/terrain/17/214637/88465.terrain b/public/terrain/17/214637/88465.terrain new file mode 100644 index 000000000..6509c0f8c Binary files /dev/null and b/public/terrain/17/214637/88465.terrain differ diff --git a/public/terrain/17/214637/88466.terrain b/public/terrain/17/214637/88466.terrain new file mode 100644 index 000000000..d04403d90 Binary files /dev/null and b/public/terrain/17/214637/88466.terrain differ diff --git a/public/terrain/17/214637/88467.terrain b/public/terrain/17/214637/88467.terrain new file mode 100644 index 000000000..8fa81c260 Binary files /dev/null and b/public/terrain/17/214637/88467.terrain differ diff --git a/public/terrain/17/214637/88468.terrain b/public/terrain/17/214637/88468.terrain new file mode 100644 index 000000000..4a6dc0213 Binary files /dev/null and b/public/terrain/17/214637/88468.terrain differ diff --git a/public/terrain/17/214637/88469.terrain b/public/terrain/17/214637/88469.terrain new file mode 100644 index 000000000..9413781e5 Binary files /dev/null and b/public/terrain/17/214637/88469.terrain differ diff --git a/public/terrain/17/214637/88470.terrain b/public/terrain/17/214637/88470.terrain new file mode 100644 index 000000000..1c959d454 Binary files /dev/null and b/public/terrain/17/214637/88470.terrain differ diff --git a/public/terrain/17/214637/88471.terrain b/public/terrain/17/214637/88471.terrain new file mode 100644 index 000000000..75493f8dc Binary files /dev/null and b/public/terrain/17/214637/88471.terrain differ diff --git a/public/terrain/17/214637/88472.terrain b/public/terrain/17/214637/88472.terrain new file mode 100644 index 000000000..b6ee65e15 Binary files /dev/null and b/public/terrain/17/214637/88472.terrain differ diff --git a/public/terrain/17/214637/88473.terrain b/public/terrain/17/214637/88473.terrain new file mode 100644 index 000000000..26db25eca Binary files /dev/null and b/public/terrain/17/214637/88473.terrain differ diff --git a/public/terrain/17/214637/88474.terrain b/public/terrain/17/214637/88474.terrain new file mode 100644 index 000000000..e3704191e Binary files /dev/null and b/public/terrain/17/214637/88474.terrain differ diff --git a/public/terrain/17/214637/88475.terrain b/public/terrain/17/214637/88475.terrain new file mode 100644 index 000000000..4ddc5a612 Binary files /dev/null and b/public/terrain/17/214637/88475.terrain differ diff --git a/public/terrain/17/214637/88476.terrain b/public/terrain/17/214637/88476.terrain new file mode 100644 index 000000000..b1e4cc3a0 Binary files /dev/null and b/public/terrain/17/214637/88476.terrain differ diff --git a/public/terrain/17/214637/88477.terrain b/public/terrain/17/214637/88477.terrain new file mode 100644 index 000000000..5f620d67d Binary files /dev/null and b/public/terrain/17/214637/88477.terrain differ diff --git a/public/terrain/17/214637/88478.terrain b/public/terrain/17/214637/88478.terrain new file mode 100644 index 000000000..9d692a01f Binary files /dev/null and b/public/terrain/17/214637/88478.terrain differ diff --git a/public/terrain/17/214637/88479.terrain b/public/terrain/17/214637/88479.terrain new file mode 100644 index 000000000..e61d6693d Binary files /dev/null and b/public/terrain/17/214637/88479.terrain differ diff --git a/public/terrain/17/214637/88480.terrain b/public/terrain/17/214637/88480.terrain new file mode 100644 index 000000000..0bc5e610c Binary files /dev/null and b/public/terrain/17/214637/88480.terrain differ diff --git a/public/terrain/17/214637/88481.terrain b/public/terrain/17/214637/88481.terrain new file mode 100644 index 000000000..d3c4f7ce7 Binary files /dev/null and b/public/terrain/17/214637/88481.terrain differ diff --git a/public/terrain/17/214637/88482.terrain b/public/terrain/17/214637/88482.terrain new file mode 100644 index 000000000..94eeec9e2 Binary files /dev/null and b/public/terrain/17/214637/88482.terrain differ diff --git a/public/terrain/17/214637/88483.terrain b/public/terrain/17/214637/88483.terrain new file mode 100644 index 000000000..a75532f14 Binary files /dev/null and b/public/terrain/17/214637/88483.terrain differ diff --git a/public/terrain/17/214637/88484.terrain b/public/terrain/17/214637/88484.terrain new file mode 100644 index 000000000..8bda6cab7 Binary files /dev/null and b/public/terrain/17/214637/88484.terrain differ diff --git a/public/terrain/17/214637/88485.terrain b/public/terrain/17/214637/88485.terrain new file mode 100644 index 000000000..bba72352d Binary files /dev/null and b/public/terrain/17/214637/88485.terrain differ diff --git a/public/terrain/17/214637/88486.terrain b/public/terrain/17/214637/88486.terrain new file mode 100644 index 000000000..dd2ab122f Binary files /dev/null and b/public/terrain/17/214637/88486.terrain differ diff --git a/public/terrain/17/214637/88487.terrain b/public/terrain/17/214637/88487.terrain new file mode 100644 index 000000000..f36b64ecf Binary files /dev/null and b/public/terrain/17/214637/88487.terrain differ diff --git a/public/terrain/17/214637/88488.terrain b/public/terrain/17/214637/88488.terrain new file mode 100644 index 000000000..074c3004e Binary files /dev/null and b/public/terrain/17/214637/88488.terrain differ diff --git a/public/terrain/17/214637/88489.terrain b/public/terrain/17/214637/88489.terrain new file mode 100644 index 000000000..17a2d7614 Binary files /dev/null and b/public/terrain/17/214637/88489.terrain differ diff --git a/public/terrain/17/214637/88490.terrain b/public/terrain/17/214637/88490.terrain new file mode 100644 index 000000000..66612a5e9 Binary files /dev/null and b/public/terrain/17/214637/88490.terrain differ diff --git a/public/terrain/17/214637/88491.terrain b/public/terrain/17/214637/88491.terrain new file mode 100644 index 000000000..4e25e28f2 Binary files /dev/null and b/public/terrain/17/214637/88491.terrain differ diff --git a/public/terrain/17/214637/88492.terrain b/public/terrain/17/214637/88492.terrain new file mode 100644 index 000000000..5f58e0878 Binary files /dev/null and b/public/terrain/17/214637/88492.terrain differ diff --git a/public/terrain/17/214637/88493.terrain b/public/terrain/17/214637/88493.terrain new file mode 100644 index 000000000..7f94334ee Binary files /dev/null and b/public/terrain/17/214637/88493.terrain differ diff --git a/public/terrain/17/214637/88494.terrain b/public/terrain/17/214637/88494.terrain new file mode 100644 index 000000000..4c2c48fcc Binary files /dev/null and b/public/terrain/17/214637/88494.terrain differ diff --git a/public/terrain/17/214637/88495.terrain b/public/terrain/17/214637/88495.terrain new file mode 100644 index 000000000..b28bd537c Binary files /dev/null and b/public/terrain/17/214637/88495.terrain differ diff --git a/public/terrain/17/214637/88496.terrain b/public/terrain/17/214637/88496.terrain new file mode 100644 index 000000000..8188336f7 Binary files /dev/null and b/public/terrain/17/214637/88496.terrain differ diff --git a/public/terrain/17/214637/88497.terrain b/public/terrain/17/214637/88497.terrain new file mode 100644 index 000000000..98bdf8e47 Binary files /dev/null and b/public/terrain/17/214637/88497.terrain differ diff --git a/public/terrain/17/214637/88498.terrain b/public/terrain/17/214637/88498.terrain new file mode 100644 index 000000000..93bb5178e Binary files /dev/null and b/public/terrain/17/214637/88498.terrain differ diff --git a/public/terrain/17/214637/88499.terrain b/public/terrain/17/214637/88499.terrain new file mode 100644 index 000000000..84c289f45 Binary files /dev/null and b/public/terrain/17/214637/88499.terrain differ diff --git a/public/terrain/17/214637/88500.terrain b/public/terrain/17/214637/88500.terrain new file mode 100644 index 000000000..3d1d230c2 Binary files /dev/null and b/public/terrain/17/214637/88500.terrain differ diff --git a/public/terrain/17/214637/88501.terrain b/public/terrain/17/214637/88501.terrain new file mode 100644 index 000000000..e00d0cdfc Binary files /dev/null and b/public/terrain/17/214637/88501.terrain differ diff --git a/public/terrain/17/214637/88502.terrain b/public/terrain/17/214637/88502.terrain new file mode 100644 index 000000000..55b8cbad8 Binary files /dev/null and b/public/terrain/17/214637/88502.terrain differ diff --git a/public/terrain/17/214637/88503.terrain b/public/terrain/17/214637/88503.terrain new file mode 100644 index 000000000..1724758aa Binary files /dev/null and b/public/terrain/17/214637/88503.terrain differ diff --git a/public/terrain/17/214637/88504.terrain b/public/terrain/17/214637/88504.terrain new file mode 100644 index 000000000..9616e73a5 Binary files /dev/null and b/public/terrain/17/214637/88504.terrain differ diff --git a/public/terrain/17/214637/88505.terrain b/public/terrain/17/214637/88505.terrain new file mode 100644 index 000000000..fe5aac203 Binary files /dev/null and b/public/terrain/17/214637/88505.terrain differ diff --git a/public/terrain/17/214637/88506.terrain b/public/terrain/17/214637/88506.terrain new file mode 100644 index 000000000..3deb34f9d Binary files /dev/null and b/public/terrain/17/214637/88506.terrain differ diff --git a/public/terrain/17/214637/88507.terrain b/public/terrain/17/214637/88507.terrain new file mode 100644 index 000000000..78ab7884f Binary files /dev/null and b/public/terrain/17/214637/88507.terrain differ diff --git a/public/terrain/17/214637/88508.terrain b/public/terrain/17/214637/88508.terrain new file mode 100644 index 000000000..338089e9b Binary files /dev/null and b/public/terrain/17/214637/88508.terrain differ diff --git a/public/terrain/17/214637/88509.terrain b/public/terrain/17/214637/88509.terrain new file mode 100644 index 000000000..dd9217ce1 Binary files /dev/null and b/public/terrain/17/214637/88509.terrain differ diff --git a/public/terrain/17/214637/88510.terrain b/public/terrain/17/214637/88510.terrain new file mode 100644 index 000000000..90518e660 Binary files /dev/null and b/public/terrain/17/214637/88510.terrain differ diff --git a/public/terrain/17/214637/88511.terrain b/public/terrain/17/214637/88511.terrain new file mode 100644 index 000000000..404c022fa Binary files /dev/null and b/public/terrain/17/214637/88511.terrain differ diff --git a/public/terrain/17/214637/88512.terrain b/public/terrain/17/214637/88512.terrain new file mode 100644 index 000000000..1661f253f Binary files /dev/null and b/public/terrain/17/214637/88512.terrain differ diff --git a/public/terrain/17/214637/88513.terrain b/public/terrain/17/214637/88513.terrain new file mode 100644 index 000000000..9abb325ed Binary files /dev/null and b/public/terrain/17/214637/88513.terrain differ diff --git a/public/terrain/17/214637/88514.terrain b/public/terrain/17/214637/88514.terrain new file mode 100644 index 000000000..3a7bd2b95 Binary files /dev/null and b/public/terrain/17/214637/88514.terrain differ diff --git a/public/terrain/17/214638/88435.terrain b/public/terrain/17/214638/88435.terrain new file mode 100644 index 000000000..92bc994c4 Binary files /dev/null and b/public/terrain/17/214638/88435.terrain differ diff --git a/public/terrain/17/214638/88436.terrain b/public/terrain/17/214638/88436.terrain new file mode 100644 index 000000000..8911d807f Binary files /dev/null and b/public/terrain/17/214638/88436.terrain differ diff --git a/public/terrain/17/214638/88437.terrain b/public/terrain/17/214638/88437.terrain new file mode 100644 index 000000000..6e9930488 Binary files /dev/null and b/public/terrain/17/214638/88437.terrain differ diff --git a/public/terrain/17/214638/88438.terrain b/public/terrain/17/214638/88438.terrain new file mode 100644 index 000000000..7b9db8037 Binary files /dev/null and b/public/terrain/17/214638/88438.terrain differ diff --git a/public/terrain/17/214638/88439.terrain b/public/terrain/17/214638/88439.terrain new file mode 100644 index 000000000..00ba60269 Binary files /dev/null and b/public/terrain/17/214638/88439.terrain differ diff --git a/public/terrain/17/214638/88440.terrain b/public/terrain/17/214638/88440.terrain new file mode 100644 index 000000000..3f0b7f5e0 Binary files /dev/null and b/public/terrain/17/214638/88440.terrain differ diff --git a/public/terrain/17/214638/88441.terrain b/public/terrain/17/214638/88441.terrain new file mode 100644 index 000000000..b124cd1f3 Binary files /dev/null and b/public/terrain/17/214638/88441.terrain differ diff --git a/public/terrain/17/214638/88442.terrain b/public/terrain/17/214638/88442.terrain new file mode 100644 index 000000000..f479d8d42 Binary files /dev/null and b/public/terrain/17/214638/88442.terrain differ diff --git a/public/terrain/17/214638/88443.terrain b/public/terrain/17/214638/88443.terrain new file mode 100644 index 000000000..c4d428264 Binary files /dev/null and b/public/terrain/17/214638/88443.terrain differ diff --git a/public/terrain/17/214638/88444.terrain b/public/terrain/17/214638/88444.terrain new file mode 100644 index 000000000..c4de4ffb2 Binary files /dev/null and b/public/terrain/17/214638/88444.terrain differ diff --git a/public/terrain/17/214638/88445.terrain b/public/terrain/17/214638/88445.terrain new file mode 100644 index 000000000..64acd9285 Binary files /dev/null and b/public/terrain/17/214638/88445.terrain differ diff --git a/public/terrain/17/214638/88446.terrain b/public/terrain/17/214638/88446.terrain new file mode 100644 index 000000000..fd2c0dee1 Binary files /dev/null and b/public/terrain/17/214638/88446.terrain differ diff --git a/public/terrain/17/214638/88447.terrain b/public/terrain/17/214638/88447.terrain new file mode 100644 index 000000000..0799173ca Binary files /dev/null and b/public/terrain/17/214638/88447.terrain differ diff --git a/public/terrain/17/214638/88448.terrain b/public/terrain/17/214638/88448.terrain new file mode 100644 index 000000000..056e11fae Binary files /dev/null and b/public/terrain/17/214638/88448.terrain differ diff --git a/public/terrain/17/214638/88449.terrain b/public/terrain/17/214638/88449.terrain new file mode 100644 index 000000000..32fe95728 Binary files /dev/null and b/public/terrain/17/214638/88449.terrain differ diff --git a/public/terrain/17/214638/88450.terrain b/public/terrain/17/214638/88450.terrain new file mode 100644 index 000000000..3db766d43 Binary files /dev/null and b/public/terrain/17/214638/88450.terrain differ diff --git a/public/terrain/17/214638/88451.terrain b/public/terrain/17/214638/88451.terrain new file mode 100644 index 000000000..ba7f3d3f6 Binary files /dev/null and b/public/terrain/17/214638/88451.terrain differ diff --git a/public/terrain/17/214638/88452.terrain b/public/terrain/17/214638/88452.terrain new file mode 100644 index 000000000..b85227753 Binary files /dev/null and b/public/terrain/17/214638/88452.terrain differ diff --git a/public/terrain/17/214638/88453.terrain b/public/terrain/17/214638/88453.terrain new file mode 100644 index 000000000..891c476dd Binary files /dev/null and b/public/terrain/17/214638/88453.terrain differ diff --git a/public/terrain/17/214638/88454.terrain b/public/terrain/17/214638/88454.terrain new file mode 100644 index 000000000..398910d93 Binary files /dev/null and b/public/terrain/17/214638/88454.terrain differ diff --git a/public/terrain/17/214638/88455.terrain b/public/terrain/17/214638/88455.terrain new file mode 100644 index 000000000..0d017a422 Binary files /dev/null and b/public/terrain/17/214638/88455.terrain differ diff --git a/public/terrain/17/214638/88456.terrain b/public/terrain/17/214638/88456.terrain new file mode 100644 index 000000000..ed6a83b4f Binary files /dev/null and b/public/terrain/17/214638/88456.terrain differ diff --git a/public/terrain/17/214638/88457.terrain b/public/terrain/17/214638/88457.terrain new file mode 100644 index 000000000..7c31acbf2 Binary files /dev/null and b/public/terrain/17/214638/88457.terrain differ diff --git a/public/terrain/17/214638/88458.terrain b/public/terrain/17/214638/88458.terrain new file mode 100644 index 000000000..be1158706 Binary files /dev/null and b/public/terrain/17/214638/88458.terrain differ diff --git a/public/terrain/17/214638/88459.terrain b/public/terrain/17/214638/88459.terrain new file mode 100644 index 000000000..5d16cb0d0 Binary files /dev/null and b/public/terrain/17/214638/88459.terrain differ diff --git a/public/terrain/17/214638/88460.terrain b/public/terrain/17/214638/88460.terrain new file mode 100644 index 000000000..1c6408664 Binary files /dev/null and b/public/terrain/17/214638/88460.terrain differ diff --git a/public/terrain/17/214638/88461.terrain b/public/terrain/17/214638/88461.terrain new file mode 100644 index 000000000..25e9dbb91 Binary files /dev/null and b/public/terrain/17/214638/88461.terrain differ diff --git a/public/terrain/17/214638/88462.terrain b/public/terrain/17/214638/88462.terrain new file mode 100644 index 000000000..adf8738b3 Binary files /dev/null and b/public/terrain/17/214638/88462.terrain differ diff --git a/public/terrain/17/214638/88463.terrain b/public/terrain/17/214638/88463.terrain new file mode 100644 index 000000000..08eb3ae39 Binary files /dev/null and b/public/terrain/17/214638/88463.terrain differ diff --git a/public/terrain/17/214638/88464.terrain b/public/terrain/17/214638/88464.terrain new file mode 100644 index 000000000..d693cbdc5 Binary files /dev/null and b/public/terrain/17/214638/88464.terrain differ diff --git a/public/terrain/17/214638/88465.terrain b/public/terrain/17/214638/88465.terrain new file mode 100644 index 000000000..1bf1c1930 Binary files /dev/null and b/public/terrain/17/214638/88465.terrain differ diff --git a/public/terrain/17/214638/88466.terrain b/public/terrain/17/214638/88466.terrain new file mode 100644 index 000000000..56b89a860 Binary files /dev/null and b/public/terrain/17/214638/88466.terrain differ diff --git a/public/terrain/17/214638/88467.terrain b/public/terrain/17/214638/88467.terrain new file mode 100644 index 000000000..517f97fb0 Binary files /dev/null and b/public/terrain/17/214638/88467.terrain differ diff --git a/public/terrain/17/214638/88468.terrain b/public/terrain/17/214638/88468.terrain new file mode 100644 index 000000000..1096adbbb Binary files /dev/null and b/public/terrain/17/214638/88468.terrain differ diff --git a/public/terrain/17/214638/88469.terrain b/public/terrain/17/214638/88469.terrain new file mode 100644 index 000000000..5dc78f771 Binary files /dev/null and b/public/terrain/17/214638/88469.terrain differ diff --git a/public/terrain/17/214638/88470.terrain b/public/terrain/17/214638/88470.terrain new file mode 100644 index 000000000..246145011 Binary files /dev/null and b/public/terrain/17/214638/88470.terrain differ diff --git a/public/terrain/17/214638/88471.terrain b/public/terrain/17/214638/88471.terrain new file mode 100644 index 000000000..ea5c2a7c0 Binary files /dev/null and b/public/terrain/17/214638/88471.terrain differ diff --git a/public/terrain/17/214638/88472.terrain b/public/terrain/17/214638/88472.terrain new file mode 100644 index 000000000..168fa5321 Binary files /dev/null and b/public/terrain/17/214638/88472.terrain differ diff --git a/public/terrain/17/214638/88473.terrain b/public/terrain/17/214638/88473.terrain new file mode 100644 index 000000000..56a1e354a Binary files /dev/null and b/public/terrain/17/214638/88473.terrain differ diff --git a/public/terrain/17/214638/88474.terrain b/public/terrain/17/214638/88474.terrain new file mode 100644 index 000000000..24c6d867c Binary files /dev/null and b/public/terrain/17/214638/88474.terrain differ diff --git a/public/terrain/17/214638/88475.terrain b/public/terrain/17/214638/88475.terrain new file mode 100644 index 000000000..bfa8684d9 Binary files /dev/null and b/public/terrain/17/214638/88475.terrain differ diff --git a/public/terrain/17/214638/88476.terrain b/public/terrain/17/214638/88476.terrain new file mode 100644 index 000000000..58f438cd8 Binary files /dev/null and b/public/terrain/17/214638/88476.terrain differ diff --git a/public/terrain/17/214638/88477.terrain b/public/terrain/17/214638/88477.terrain new file mode 100644 index 000000000..fc4580834 Binary files /dev/null and b/public/terrain/17/214638/88477.terrain differ diff --git a/public/terrain/17/214638/88478.terrain b/public/terrain/17/214638/88478.terrain new file mode 100644 index 000000000..724cbb068 Binary files /dev/null and b/public/terrain/17/214638/88478.terrain differ diff --git a/public/terrain/17/214638/88479.terrain b/public/terrain/17/214638/88479.terrain new file mode 100644 index 000000000..034bac8e5 Binary files /dev/null and b/public/terrain/17/214638/88479.terrain differ diff --git a/public/terrain/17/214638/88480.terrain b/public/terrain/17/214638/88480.terrain new file mode 100644 index 000000000..b74bd709c Binary files /dev/null and b/public/terrain/17/214638/88480.terrain differ diff --git a/public/terrain/17/214638/88481.terrain b/public/terrain/17/214638/88481.terrain new file mode 100644 index 000000000..33ac2db07 Binary files /dev/null and b/public/terrain/17/214638/88481.terrain differ diff --git a/public/terrain/17/214638/88482.terrain b/public/terrain/17/214638/88482.terrain new file mode 100644 index 000000000..51b694089 Binary files /dev/null and b/public/terrain/17/214638/88482.terrain differ diff --git a/public/terrain/17/214638/88483.terrain b/public/terrain/17/214638/88483.terrain new file mode 100644 index 000000000..54cfa8deb Binary files /dev/null and b/public/terrain/17/214638/88483.terrain differ diff --git a/public/terrain/17/214638/88484.terrain b/public/terrain/17/214638/88484.terrain new file mode 100644 index 000000000..7d6f152ab Binary files /dev/null and b/public/terrain/17/214638/88484.terrain differ diff --git a/public/terrain/17/214638/88485.terrain b/public/terrain/17/214638/88485.terrain new file mode 100644 index 000000000..5270f8ee8 Binary files /dev/null and b/public/terrain/17/214638/88485.terrain differ diff --git a/public/terrain/17/214638/88486.terrain b/public/terrain/17/214638/88486.terrain new file mode 100644 index 000000000..7c7ed9640 Binary files /dev/null and b/public/terrain/17/214638/88486.terrain differ diff --git a/public/terrain/17/214638/88487.terrain b/public/terrain/17/214638/88487.terrain new file mode 100644 index 000000000..88d8ac7b3 Binary files /dev/null and b/public/terrain/17/214638/88487.terrain differ diff --git a/public/terrain/17/214638/88488.terrain b/public/terrain/17/214638/88488.terrain new file mode 100644 index 000000000..04ff0f326 Binary files /dev/null and b/public/terrain/17/214638/88488.terrain differ diff --git a/public/terrain/17/214638/88489.terrain b/public/terrain/17/214638/88489.terrain new file mode 100644 index 000000000..e0ab02910 Binary files /dev/null and b/public/terrain/17/214638/88489.terrain differ diff --git a/public/terrain/17/214638/88490.terrain b/public/terrain/17/214638/88490.terrain new file mode 100644 index 000000000..347b0b08a Binary files /dev/null and b/public/terrain/17/214638/88490.terrain differ diff --git a/public/terrain/17/214638/88491.terrain b/public/terrain/17/214638/88491.terrain new file mode 100644 index 000000000..18752daa9 Binary files /dev/null and b/public/terrain/17/214638/88491.terrain differ diff --git a/public/terrain/17/214638/88492.terrain b/public/terrain/17/214638/88492.terrain new file mode 100644 index 000000000..fd227f89b Binary files /dev/null and b/public/terrain/17/214638/88492.terrain differ diff --git a/public/terrain/17/214638/88493.terrain b/public/terrain/17/214638/88493.terrain new file mode 100644 index 000000000..b6e158799 Binary files /dev/null and b/public/terrain/17/214638/88493.terrain differ diff --git a/public/terrain/17/214638/88494.terrain b/public/terrain/17/214638/88494.terrain new file mode 100644 index 000000000..4b35251d1 Binary files /dev/null and b/public/terrain/17/214638/88494.terrain differ diff --git a/public/terrain/17/214638/88495.terrain b/public/terrain/17/214638/88495.terrain new file mode 100644 index 000000000..3ea00efb2 Binary files /dev/null and b/public/terrain/17/214638/88495.terrain differ diff --git a/public/terrain/17/214638/88496.terrain b/public/terrain/17/214638/88496.terrain new file mode 100644 index 000000000..500b39116 Binary files /dev/null and b/public/terrain/17/214638/88496.terrain differ diff --git a/public/terrain/17/214638/88497.terrain b/public/terrain/17/214638/88497.terrain new file mode 100644 index 000000000..ac97cb90d Binary files /dev/null and b/public/terrain/17/214638/88497.terrain differ diff --git a/public/terrain/17/214638/88498.terrain b/public/terrain/17/214638/88498.terrain new file mode 100644 index 000000000..c4a79ef87 Binary files /dev/null and b/public/terrain/17/214638/88498.terrain differ diff --git a/public/terrain/17/214638/88499.terrain b/public/terrain/17/214638/88499.terrain new file mode 100644 index 000000000..731049ad8 Binary files /dev/null and b/public/terrain/17/214638/88499.terrain differ diff --git a/public/terrain/17/214638/88500.terrain b/public/terrain/17/214638/88500.terrain new file mode 100644 index 000000000..49420ccce Binary files /dev/null and b/public/terrain/17/214638/88500.terrain differ diff --git a/public/terrain/17/214638/88501.terrain b/public/terrain/17/214638/88501.terrain new file mode 100644 index 000000000..5efb8fdba Binary files /dev/null and b/public/terrain/17/214638/88501.terrain differ diff --git a/public/terrain/17/214638/88502.terrain b/public/terrain/17/214638/88502.terrain new file mode 100644 index 000000000..c4421844d Binary files /dev/null and b/public/terrain/17/214638/88502.terrain differ diff --git a/public/terrain/17/214638/88503.terrain b/public/terrain/17/214638/88503.terrain new file mode 100644 index 000000000..41d31dd76 Binary files /dev/null and b/public/terrain/17/214638/88503.terrain differ diff --git a/public/terrain/17/214638/88504.terrain b/public/terrain/17/214638/88504.terrain new file mode 100644 index 000000000..442d94fbf Binary files /dev/null and b/public/terrain/17/214638/88504.terrain differ diff --git a/public/terrain/17/214638/88505.terrain b/public/terrain/17/214638/88505.terrain new file mode 100644 index 000000000..12ded4aea Binary files /dev/null and b/public/terrain/17/214638/88505.terrain differ diff --git a/public/terrain/17/214638/88506.terrain b/public/terrain/17/214638/88506.terrain new file mode 100644 index 000000000..a28a48f4d Binary files /dev/null and b/public/terrain/17/214638/88506.terrain differ diff --git a/public/terrain/17/214638/88507.terrain b/public/terrain/17/214638/88507.terrain new file mode 100644 index 000000000..186405a50 Binary files /dev/null and b/public/terrain/17/214638/88507.terrain differ diff --git a/public/terrain/17/214638/88508.terrain b/public/terrain/17/214638/88508.terrain new file mode 100644 index 000000000..88ff0f467 Binary files /dev/null and b/public/terrain/17/214638/88508.terrain differ diff --git a/public/terrain/17/214638/88509.terrain b/public/terrain/17/214638/88509.terrain new file mode 100644 index 000000000..74486df18 Binary files /dev/null and b/public/terrain/17/214638/88509.terrain differ diff --git a/public/terrain/17/214638/88510.terrain b/public/terrain/17/214638/88510.terrain new file mode 100644 index 000000000..090fdb26c Binary files /dev/null and b/public/terrain/17/214638/88510.terrain differ diff --git a/public/terrain/17/214638/88511.terrain b/public/terrain/17/214638/88511.terrain new file mode 100644 index 000000000..a96814f32 Binary files /dev/null and b/public/terrain/17/214638/88511.terrain differ diff --git a/public/terrain/17/214638/88512.terrain b/public/terrain/17/214638/88512.terrain new file mode 100644 index 000000000..08638f791 Binary files /dev/null and b/public/terrain/17/214638/88512.terrain differ diff --git a/public/terrain/17/214638/88513.terrain b/public/terrain/17/214638/88513.terrain new file mode 100644 index 000000000..d3133a568 Binary files /dev/null and b/public/terrain/17/214638/88513.terrain differ diff --git a/public/terrain/17/214638/88514.terrain b/public/terrain/17/214638/88514.terrain new file mode 100644 index 000000000..432b1b6a1 Binary files /dev/null and b/public/terrain/17/214638/88514.terrain differ diff --git a/public/terrain/17/214639/88435.terrain b/public/terrain/17/214639/88435.terrain new file mode 100644 index 000000000..d46d1a23b Binary files /dev/null and b/public/terrain/17/214639/88435.terrain differ diff --git a/public/terrain/17/214639/88436.terrain b/public/terrain/17/214639/88436.terrain new file mode 100644 index 000000000..bd98396d1 Binary files /dev/null and b/public/terrain/17/214639/88436.terrain differ diff --git a/public/terrain/17/214639/88437.terrain b/public/terrain/17/214639/88437.terrain new file mode 100644 index 000000000..d20978f54 Binary files /dev/null and b/public/terrain/17/214639/88437.terrain differ diff --git a/public/terrain/17/214639/88438.terrain b/public/terrain/17/214639/88438.terrain new file mode 100644 index 000000000..09a16c5f4 Binary files /dev/null and b/public/terrain/17/214639/88438.terrain differ diff --git a/public/terrain/17/214639/88439.terrain b/public/terrain/17/214639/88439.terrain new file mode 100644 index 000000000..898811ee1 Binary files /dev/null and b/public/terrain/17/214639/88439.terrain differ diff --git a/public/terrain/17/214639/88440.terrain b/public/terrain/17/214639/88440.terrain new file mode 100644 index 000000000..dbc3cbfc0 Binary files /dev/null and b/public/terrain/17/214639/88440.terrain differ diff --git a/public/terrain/17/214639/88441.terrain b/public/terrain/17/214639/88441.terrain new file mode 100644 index 000000000..773dbf065 Binary files /dev/null and b/public/terrain/17/214639/88441.terrain differ diff --git a/public/terrain/17/214639/88442.terrain b/public/terrain/17/214639/88442.terrain new file mode 100644 index 000000000..153388975 Binary files /dev/null and b/public/terrain/17/214639/88442.terrain differ diff --git a/public/terrain/17/214639/88443.terrain b/public/terrain/17/214639/88443.terrain new file mode 100644 index 000000000..bb4d774b5 Binary files /dev/null and b/public/terrain/17/214639/88443.terrain differ diff --git a/public/terrain/17/214639/88444.terrain b/public/terrain/17/214639/88444.terrain new file mode 100644 index 000000000..fa15453fe Binary files /dev/null and b/public/terrain/17/214639/88444.terrain differ diff --git a/public/terrain/17/214639/88445.terrain b/public/terrain/17/214639/88445.terrain new file mode 100644 index 000000000..596027726 Binary files /dev/null and b/public/terrain/17/214639/88445.terrain differ diff --git a/public/terrain/17/214639/88446.terrain b/public/terrain/17/214639/88446.terrain new file mode 100644 index 000000000..d1598f720 Binary files /dev/null and b/public/terrain/17/214639/88446.terrain differ diff --git a/public/terrain/17/214639/88447.terrain b/public/terrain/17/214639/88447.terrain new file mode 100644 index 000000000..ccf4ae9d2 Binary files /dev/null and b/public/terrain/17/214639/88447.terrain differ diff --git a/public/terrain/17/214639/88448.terrain b/public/terrain/17/214639/88448.terrain new file mode 100644 index 000000000..7db4b3100 Binary files /dev/null and b/public/terrain/17/214639/88448.terrain differ diff --git a/public/terrain/17/214639/88449.terrain b/public/terrain/17/214639/88449.terrain new file mode 100644 index 000000000..66c35d1c4 Binary files /dev/null and b/public/terrain/17/214639/88449.terrain differ diff --git a/public/terrain/17/214639/88450.terrain b/public/terrain/17/214639/88450.terrain new file mode 100644 index 000000000..f5056b681 Binary files /dev/null and b/public/terrain/17/214639/88450.terrain differ diff --git a/public/terrain/17/214639/88451.terrain b/public/terrain/17/214639/88451.terrain new file mode 100644 index 000000000..847c1b6b9 Binary files /dev/null and b/public/terrain/17/214639/88451.terrain differ diff --git a/public/terrain/17/214639/88452.terrain b/public/terrain/17/214639/88452.terrain new file mode 100644 index 000000000..b6189428a Binary files /dev/null and b/public/terrain/17/214639/88452.terrain differ diff --git a/public/terrain/17/214639/88453.terrain b/public/terrain/17/214639/88453.terrain new file mode 100644 index 000000000..cdfc92cb9 Binary files /dev/null and b/public/terrain/17/214639/88453.terrain differ diff --git a/public/terrain/17/214639/88454.terrain b/public/terrain/17/214639/88454.terrain new file mode 100644 index 000000000..dc3f1d357 Binary files /dev/null and b/public/terrain/17/214639/88454.terrain differ diff --git a/public/terrain/17/214639/88455.terrain b/public/terrain/17/214639/88455.terrain new file mode 100644 index 000000000..5108ff7a2 Binary files /dev/null and b/public/terrain/17/214639/88455.terrain differ diff --git a/public/terrain/17/214639/88456.terrain b/public/terrain/17/214639/88456.terrain new file mode 100644 index 000000000..25632c346 Binary files /dev/null and b/public/terrain/17/214639/88456.terrain differ diff --git a/public/terrain/17/214639/88457.terrain b/public/terrain/17/214639/88457.terrain new file mode 100644 index 000000000..6f79da716 Binary files /dev/null and b/public/terrain/17/214639/88457.terrain differ diff --git a/public/terrain/17/214639/88458.terrain b/public/terrain/17/214639/88458.terrain new file mode 100644 index 000000000..e2d7a831a Binary files /dev/null and b/public/terrain/17/214639/88458.terrain differ diff --git a/public/terrain/17/214639/88459.terrain b/public/terrain/17/214639/88459.terrain new file mode 100644 index 000000000..6f140e862 Binary files /dev/null and b/public/terrain/17/214639/88459.terrain differ diff --git a/public/terrain/17/214639/88460.terrain b/public/terrain/17/214639/88460.terrain new file mode 100644 index 000000000..2c2b9bb5b Binary files /dev/null and b/public/terrain/17/214639/88460.terrain differ diff --git a/public/terrain/17/214639/88461.terrain b/public/terrain/17/214639/88461.terrain new file mode 100644 index 000000000..de4c3e101 Binary files /dev/null and b/public/terrain/17/214639/88461.terrain differ diff --git a/public/terrain/17/214639/88462.terrain b/public/terrain/17/214639/88462.terrain new file mode 100644 index 000000000..66ca536f1 Binary files /dev/null and b/public/terrain/17/214639/88462.terrain differ diff --git a/public/terrain/17/214639/88463.terrain b/public/terrain/17/214639/88463.terrain new file mode 100644 index 000000000..20192a994 Binary files /dev/null and b/public/terrain/17/214639/88463.terrain differ diff --git a/public/terrain/17/214639/88464.terrain b/public/terrain/17/214639/88464.terrain new file mode 100644 index 000000000..c59035519 Binary files /dev/null and b/public/terrain/17/214639/88464.terrain differ diff --git a/public/terrain/17/214639/88465.terrain b/public/terrain/17/214639/88465.terrain new file mode 100644 index 000000000..3afe7a46d Binary files /dev/null and b/public/terrain/17/214639/88465.terrain differ diff --git a/public/terrain/17/214639/88466.terrain b/public/terrain/17/214639/88466.terrain new file mode 100644 index 000000000..e991fe08c Binary files /dev/null and b/public/terrain/17/214639/88466.terrain differ diff --git a/public/terrain/17/214639/88467.terrain b/public/terrain/17/214639/88467.terrain new file mode 100644 index 000000000..936d36f02 Binary files /dev/null and b/public/terrain/17/214639/88467.terrain differ diff --git a/public/terrain/17/214639/88468.terrain b/public/terrain/17/214639/88468.terrain new file mode 100644 index 000000000..8d2704e7e Binary files /dev/null and b/public/terrain/17/214639/88468.terrain differ diff --git a/public/terrain/17/214639/88469.terrain b/public/terrain/17/214639/88469.terrain new file mode 100644 index 000000000..0688d9319 Binary files /dev/null and b/public/terrain/17/214639/88469.terrain differ diff --git a/public/terrain/17/214639/88470.terrain b/public/terrain/17/214639/88470.terrain new file mode 100644 index 000000000..6a98ed88b Binary files /dev/null and b/public/terrain/17/214639/88470.terrain differ diff --git a/public/terrain/17/214639/88471.terrain b/public/terrain/17/214639/88471.terrain new file mode 100644 index 000000000..30def2612 Binary files /dev/null and b/public/terrain/17/214639/88471.terrain differ diff --git a/public/terrain/17/214639/88472.terrain b/public/terrain/17/214639/88472.terrain new file mode 100644 index 000000000..1663f69c6 Binary files /dev/null and b/public/terrain/17/214639/88472.terrain differ diff --git a/public/terrain/17/214639/88473.terrain b/public/terrain/17/214639/88473.terrain new file mode 100644 index 000000000..4cef65cb9 Binary files /dev/null and b/public/terrain/17/214639/88473.terrain differ diff --git a/public/terrain/17/214639/88474.terrain b/public/terrain/17/214639/88474.terrain new file mode 100644 index 000000000..a8011e4e6 Binary files /dev/null and b/public/terrain/17/214639/88474.terrain differ diff --git a/public/terrain/17/214639/88475.terrain b/public/terrain/17/214639/88475.terrain new file mode 100644 index 000000000..6c70d28a0 Binary files /dev/null and b/public/terrain/17/214639/88475.terrain differ diff --git a/public/terrain/17/214639/88476.terrain b/public/terrain/17/214639/88476.terrain new file mode 100644 index 000000000..b3ba2ecd4 Binary files /dev/null and b/public/terrain/17/214639/88476.terrain differ diff --git a/public/terrain/17/214639/88477.terrain b/public/terrain/17/214639/88477.terrain new file mode 100644 index 000000000..45254ad9b Binary files /dev/null and b/public/terrain/17/214639/88477.terrain differ diff --git a/public/terrain/17/214639/88478.terrain b/public/terrain/17/214639/88478.terrain new file mode 100644 index 000000000..8f3b261ad Binary files /dev/null and b/public/terrain/17/214639/88478.terrain differ diff --git a/public/terrain/17/214639/88479.terrain b/public/terrain/17/214639/88479.terrain new file mode 100644 index 000000000..90dea8916 Binary files /dev/null and b/public/terrain/17/214639/88479.terrain differ diff --git a/public/terrain/17/214639/88480.terrain b/public/terrain/17/214639/88480.terrain new file mode 100644 index 000000000..9db4c541b Binary files /dev/null and b/public/terrain/17/214639/88480.terrain differ diff --git a/public/terrain/17/214639/88481.terrain b/public/terrain/17/214639/88481.terrain new file mode 100644 index 000000000..a7e17347c Binary files /dev/null and b/public/terrain/17/214639/88481.terrain differ diff --git a/public/terrain/17/214639/88482.terrain b/public/terrain/17/214639/88482.terrain new file mode 100644 index 000000000..f2fc1f9b0 Binary files /dev/null and b/public/terrain/17/214639/88482.terrain differ diff --git a/public/terrain/17/214639/88483.terrain b/public/terrain/17/214639/88483.terrain new file mode 100644 index 000000000..b8c751e01 Binary files /dev/null and b/public/terrain/17/214639/88483.terrain differ diff --git a/public/terrain/17/214639/88484.terrain b/public/terrain/17/214639/88484.terrain new file mode 100644 index 000000000..a03428ca0 Binary files /dev/null and b/public/terrain/17/214639/88484.terrain differ diff --git a/public/terrain/17/214639/88485.terrain b/public/terrain/17/214639/88485.terrain new file mode 100644 index 000000000..e962e4653 Binary files /dev/null and b/public/terrain/17/214639/88485.terrain differ diff --git a/public/terrain/17/214639/88486.terrain b/public/terrain/17/214639/88486.terrain new file mode 100644 index 000000000..762c2883c Binary files /dev/null and b/public/terrain/17/214639/88486.terrain differ diff --git a/public/terrain/17/214639/88487.terrain b/public/terrain/17/214639/88487.terrain new file mode 100644 index 000000000..4dcf1294d Binary files /dev/null and b/public/terrain/17/214639/88487.terrain differ diff --git a/public/terrain/17/214639/88488.terrain b/public/terrain/17/214639/88488.terrain new file mode 100644 index 000000000..26a749661 Binary files /dev/null and b/public/terrain/17/214639/88488.terrain differ diff --git a/public/terrain/17/214639/88489.terrain b/public/terrain/17/214639/88489.terrain new file mode 100644 index 000000000..7ee9eb4b1 Binary files /dev/null and b/public/terrain/17/214639/88489.terrain differ diff --git a/public/terrain/17/214639/88490.terrain b/public/terrain/17/214639/88490.terrain new file mode 100644 index 000000000..314fea336 Binary files /dev/null and b/public/terrain/17/214639/88490.terrain differ diff --git a/public/terrain/17/214639/88491.terrain b/public/terrain/17/214639/88491.terrain new file mode 100644 index 000000000..c050f1da6 Binary files /dev/null and b/public/terrain/17/214639/88491.terrain differ diff --git a/public/terrain/17/214639/88492.terrain b/public/terrain/17/214639/88492.terrain new file mode 100644 index 000000000..e003055a5 Binary files /dev/null and b/public/terrain/17/214639/88492.terrain differ diff --git a/public/terrain/17/214639/88493.terrain b/public/terrain/17/214639/88493.terrain new file mode 100644 index 000000000..064aded20 Binary files /dev/null and b/public/terrain/17/214639/88493.terrain differ diff --git a/public/terrain/17/214639/88494.terrain b/public/terrain/17/214639/88494.terrain new file mode 100644 index 000000000..151586f0f Binary files /dev/null and b/public/terrain/17/214639/88494.terrain differ diff --git a/public/terrain/17/214639/88495.terrain b/public/terrain/17/214639/88495.terrain new file mode 100644 index 000000000..febaa2aea Binary files /dev/null and b/public/terrain/17/214639/88495.terrain differ diff --git a/public/terrain/17/214639/88496.terrain b/public/terrain/17/214639/88496.terrain new file mode 100644 index 000000000..e6ff516b5 Binary files /dev/null and b/public/terrain/17/214639/88496.terrain differ diff --git a/public/terrain/17/214639/88497.terrain b/public/terrain/17/214639/88497.terrain new file mode 100644 index 000000000..05f69083d Binary files /dev/null and b/public/terrain/17/214639/88497.terrain differ diff --git a/public/terrain/17/214639/88498.terrain b/public/terrain/17/214639/88498.terrain new file mode 100644 index 000000000..1aed154e2 Binary files /dev/null and b/public/terrain/17/214639/88498.terrain differ diff --git a/public/terrain/17/214639/88499.terrain b/public/terrain/17/214639/88499.terrain new file mode 100644 index 000000000..0727bbe7c Binary files /dev/null and b/public/terrain/17/214639/88499.terrain differ diff --git a/public/terrain/17/214639/88500.terrain b/public/terrain/17/214639/88500.terrain new file mode 100644 index 000000000..92dd4d2aa Binary files /dev/null and b/public/terrain/17/214639/88500.terrain differ diff --git a/public/terrain/17/214639/88501.terrain b/public/terrain/17/214639/88501.terrain new file mode 100644 index 000000000..007e76b3d Binary files /dev/null and b/public/terrain/17/214639/88501.terrain differ diff --git a/public/terrain/17/214639/88502.terrain b/public/terrain/17/214639/88502.terrain new file mode 100644 index 000000000..b28dca1a0 Binary files /dev/null and b/public/terrain/17/214639/88502.terrain differ diff --git a/public/terrain/17/214639/88503.terrain b/public/terrain/17/214639/88503.terrain new file mode 100644 index 000000000..874a567e8 Binary files /dev/null and b/public/terrain/17/214639/88503.terrain differ diff --git a/public/terrain/17/214639/88504.terrain b/public/terrain/17/214639/88504.terrain new file mode 100644 index 000000000..c5869e80f Binary files /dev/null and b/public/terrain/17/214639/88504.terrain differ diff --git a/public/terrain/17/214639/88505.terrain b/public/terrain/17/214639/88505.terrain new file mode 100644 index 000000000..d62b8a24f Binary files /dev/null and b/public/terrain/17/214639/88505.terrain differ diff --git a/public/terrain/17/214639/88506.terrain b/public/terrain/17/214639/88506.terrain new file mode 100644 index 000000000..a876111f8 Binary files /dev/null and b/public/terrain/17/214639/88506.terrain differ diff --git a/public/terrain/17/214639/88507.terrain b/public/terrain/17/214639/88507.terrain new file mode 100644 index 000000000..b973ebbed Binary files /dev/null and b/public/terrain/17/214639/88507.terrain differ diff --git a/public/terrain/17/214639/88508.terrain b/public/terrain/17/214639/88508.terrain new file mode 100644 index 000000000..22a4f005d Binary files /dev/null and b/public/terrain/17/214639/88508.terrain differ diff --git a/public/terrain/17/214639/88509.terrain b/public/terrain/17/214639/88509.terrain new file mode 100644 index 000000000..a8331f252 Binary files /dev/null and b/public/terrain/17/214639/88509.terrain differ diff --git a/public/terrain/17/214639/88510.terrain b/public/terrain/17/214639/88510.terrain new file mode 100644 index 000000000..8f60b7f22 Binary files /dev/null and b/public/terrain/17/214639/88510.terrain differ diff --git a/public/terrain/17/214639/88511.terrain b/public/terrain/17/214639/88511.terrain new file mode 100644 index 000000000..ad7262650 Binary files /dev/null and b/public/terrain/17/214639/88511.terrain differ diff --git a/public/terrain/17/214639/88512.terrain b/public/terrain/17/214639/88512.terrain new file mode 100644 index 000000000..6006f0282 Binary files /dev/null and b/public/terrain/17/214639/88512.terrain differ diff --git a/public/terrain/17/214639/88513.terrain b/public/terrain/17/214639/88513.terrain new file mode 100644 index 000000000..784d4216c Binary files /dev/null and b/public/terrain/17/214639/88513.terrain differ diff --git a/public/terrain/17/214639/88514.terrain b/public/terrain/17/214639/88514.terrain new file mode 100644 index 000000000..60bc3fe70 Binary files /dev/null and b/public/terrain/17/214639/88514.terrain differ diff --git a/public/terrain/17/214640/88435.terrain b/public/terrain/17/214640/88435.terrain new file mode 100644 index 000000000..e9a67fe14 Binary files /dev/null and b/public/terrain/17/214640/88435.terrain differ diff --git a/public/terrain/17/214640/88436.terrain b/public/terrain/17/214640/88436.terrain new file mode 100644 index 000000000..d6984e12d Binary files /dev/null and b/public/terrain/17/214640/88436.terrain differ diff --git a/public/terrain/17/214640/88437.terrain b/public/terrain/17/214640/88437.terrain new file mode 100644 index 000000000..7ff81e474 Binary files /dev/null and b/public/terrain/17/214640/88437.terrain differ diff --git a/public/terrain/17/214640/88438.terrain b/public/terrain/17/214640/88438.terrain new file mode 100644 index 000000000..6d34ac3f9 Binary files /dev/null and b/public/terrain/17/214640/88438.terrain differ diff --git a/public/terrain/17/214640/88439.terrain b/public/terrain/17/214640/88439.terrain new file mode 100644 index 000000000..d95b4fd0e Binary files /dev/null and b/public/terrain/17/214640/88439.terrain differ diff --git a/public/terrain/17/214640/88440.terrain b/public/terrain/17/214640/88440.terrain new file mode 100644 index 000000000..5d4482d3b Binary files /dev/null and b/public/terrain/17/214640/88440.terrain differ diff --git a/public/terrain/17/214640/88441.terrain b/public/terrain/17/214640/88441.terrain new file mode 100644 index 000000000..dd4c1cc78 Binary files /dev/null and b/public/terrain/17/214640/88441.terrain differ diff --git a/public/terrain/17/214640/88442.terrain b/public/terrain/17/214640/88442.terrain new file mode 100644 index 000000000..f46370009 Binary files /dev/null and b/public/terrain/17/214640/88442.terrain differ diff --git a/public/terrain/17/214640/88443.terrain b/public/terrain/17/214640/88443.terrain new file mode 100644 index 000000000..2844e2d0d Binary files /dev/null and b/public/terrain/17/214640/88443.terrain differ diff --git a/public/terrain/17/214640/88444.terrain b/public/terrain/17/214640/88444.terrain new file mode 100644 index 000000000..c34d93639 Binary files /dev/null and b/public/terrain/17/214640/88444.terrain differ diff --git a/public/terrain/17/214640/88445.terrain b/public/terrain/17/214640/88445.terrain new file mode 100644 index 000000000..187719149 Binary files /dev/null and b/public/terrain/17/214640/88445.terrain differ diff --git a/public/terrain/17/214640/88446.terrain b/public/terrain/17/214640/88446.terrain new file mode 100644 index 000000000..6e6a191b2 Binary files /dev/null and b/public/terrain/17/214640/88446.terrain differ diff --git a/public/terrain/17/214640/88447.terrain b/public/terrain/17/214640/88447.terrain new file mode 100644 index 000000000..6051a0204 Binary files /dev/null and b/public/terrain/17/214640/88447.terrain differ diff --git a/public/terrain/17/214640/88448.terrain b/public/terrain/17/214640/88448.terrain new file mode 100644 index 000000000..63413b095 Binary files /dev/null and b/public/terrain/17/214640/88448.terrain differ diff --git a/public/terrain/17/214640/88449.terrain b/public/terrain/17/214640/88449.terrain new file mode 100644 index 000000000..242837a67 Binary files /dev/null and b/public/terrain/17/214640/88449.terrain differ diff --git a/public/terrain/17/214640/88450.terrain b/public/terrain/17/214640/88450.terrain new file mode 100644 index 000000000..55823f6c2 Binary files /dev/null and b/public/terrain/17/214640/88450.terrain differ diff --git a/public/terrain/17/214640/88451.terrain b/public/terrain/17/214640/88451.terrain new file mode 100644 index 000000000..5633326a6 Binary files /dev/null and b/public/terrain/17/214640/88451.terrain differ diff --git a/public/terrain/17/214640/88452.terrain b/public/terrain/17/214640/88452.terrain new file mode 100644 index 000000000..d9b7cb29b Binary files /dev/null and b/public/terrain/17/214640/88452.terrain differ diff --git a/public/terrain/17/214640/88453.terrain b/public/terrain/17/214640/88453.terrain new file mode 100644 index 000000000..876837e36 Binary files /dev/null and b/public/terrain/17/214640/88453.terrain differ diff --git a/public/terrain/17/214640/88454.terrain b/public/terrain/17/214640/88454.terrain new file mode 100644 index 000000000..799bbe8c9 Binary files /dev/null and b/public/terrain/17/214640/88454.terrain differ diff --git a/public/terrain/17/214640/88455.terrain b/public/terrain/17/214640/88455.terrain new file mode 100644 index 000000000..2e229cb6f Binary files /dev/null and b/public/terrain/17/214640/88455.terrain differ diff --git a/public/terrain/17/214640/88456.terrain b/public/terrain/17/214640/88456.terrain new file mode 100644 index 000000000..3054e21a8 Binary files /dev/null and b/public/terrain/17/214640/88456.terrain differ diff --git a/public/terrain/17/214640/88457.terrain b/public/terrain/17/214640/88457.terrain new file mode 100644 index 000000000..962a91c5c Binary files /dev/null and b/public/terrain/17/214640/88457.terrain differ diff --git a/public/terrain/17/214640/88458.terrain b/public/terrain/17/214640/88458.terrain new file mode 100644 index 000000000..71d9eeabd Binary files /dev/null and b/public/terrain/17/214640/88458.terrain differ diff --git a/public/terrain/17/214640/88459.terrain b/public/terrain/17/214640/88459.terrain new file mode 100644 index 000000000..0e7186e36 Binary files /dev/null and b/public/terrain/17/214640/88459.terrain differ diff --git a/public/terrain/17/214640/88460.terrain b/public/terrain/17/214640/88460.terrain new file mode 100644 index 000000000..6c896110c Binary files /dev/null and b/public/terrain/17/214640/88460.terrain differ diff --git a/public/terrain/17/214640/88461.terrain b/public/terrain/17/214640/88461.terrain new file mode 100644 index 000000000..025c091c4 Binary files /dev/null and b/public/terrain/17/214640/88461.terrain differ diff --git a/public/terrain/17/214640/88462.terrain b/public/terrain/17/214640/88462.terrain new file mode 100644 index 000000000..8f2dd1e39 Binary files /dev/null and b/public/terrain/17/214640/88462.terrain differ diff --git a/public/terrain/17/214640/88463.terrain b/public/terrain/17/214640/88463.terrain new file mode 100644 index 000000000..b0ed385e7 Binary files /dev/null and b/public/terrain/17/214640/88463.terrain differ diff --git a/public/terrain/17/214640/88464.terrain b/public/terrain/17/214640/88464.terrain new file mode 100644 index 000000000..934b84d6d Binary files /dev/null and b/public/terrain/17/214640/88464.terrain differ diff --git a/public/terrain/17/214640/88465.terrain b/public/terrain/17/214640/88465.terrain new file mode 100644 index 000000000..562ea9eaf Binary files /dev/null and b/public/terrain/17/214640/88465.terrain differ diff --git a/public/terrain/17/214640/88466.terrain b/public/terrain/17/214640/88466.terrain new file mode 100644 index 000000000..a4a37d9bf Binary files /dev/null and b/public/terrain/17/214640/88466.terrain differ diff --git a/public/terrain/17/214640/88467.terrain b/public/terrain/17/214640/88467.terrain new file mode 100644 index 000000000..c76808975 Binary files /dev/null and b/public/terrain/17/214640/88467.terrain differ diff --git a/public/terrain/17/214640/88468.terrain b/public/terrain/17/214640/88468.terrain new file mode 100644 index 000000000..5aecdd38b Binary files /dev/null and b/public/terrain/17/214640/88468.terrain differ diff --git a/public/terrain/17/214640/88469.terrain b/public/terrain/17/214640/88469.terrain new file mode 100644 index 000000000..05bda88cc Binary files /dev/null and b/public/terrain/17/214640/88469.terrain differ diff --git a/public/terrain/17/214640/88470.terrain b/public/terrain/17/214640/88470.terrain new file mode 100644 index 000000000..3034ca459 Binary files /dev/null and b/public/terrain/17/214640/88470.terrain differ diff --git a/public/terrain/17/214640/88471.terrain b/public/terrain/17/214640/88471.terrain new file mode 100644 index 000000000..01805dea6 Binary files /dev/null and b/public/terrain/17/214640/88471.terrain differ diff --git a/public/terrain/17/214640/88472.terrain b/public/terrain/17/214640/88472.terrain new file mode 100644 index 000000000..daa81c656 Binary files /dev/null and b/public/terrain/17/214640/88472.terrain differ diff --git a/public/terrain/17/214640/88473.terrain b/public/terrain/17/214640/88473.terrain new file mode 100644 index 000000000..ec6f3787f Binary files /dev/null and b/public/terrain/17/214640/88473.terrain differ diff --git a/public/terrain/17/214640/88474.terrain b/public/terrain/17/214640/88474.terrain new file mode 100644 index 000000000..bbc019a95 Binary files /dev/null and b/public/terrain/17/214640/88474.terrain differ diff --git a/public/terrain/17/214640/88475.terrain b/public/terrain/17/214640/88475.terrain new file mode 100644 index 000000000..6122792cb Binary files /dev/null and b/public/terrain/17/214640/88475.terrain differ diff --git a/public/terrain/17/214640/88476.terrain b/public/terrain/17/214640/88476.terrain new file mode 100644 index 000000000..75e40d03c Binary files /dev/null and b/public/terrain/17/214640/88476.terrain differ diff --git a/public/terrain/17/214640/88477.terrain b/public/terrain/17/214640/88477.terrain new file mode 100644 index 000000000..c15d78be0 Binary files /dev/null and b/public/terrain/17/214640/88477.terrain differ diff --git a/public/terrain/17/214640/88478.terrain b/public/terrain/17/214640/88478.terrain new file mode 100644 index 000000000..aac78718c Binary files /dev/null and b/public/terrain/17/214640/88478.terrain differ diff --git a/public/terrain/17/214640/88479.terrain b/public/terrain/17/214640/88479.terrain new file mode 100644 index 000000000..24356dd31 Binary files /dev/null and b/public/terrain/17/214640/88479.terrain differ diff --git a/public/terrain/17/214640/88480.terrain b/public/terrain/17/214640/88480.terrain new file mode 100644 index 000000000..7e334ccde Binary files /dev/null and b/public/terrain/17/214640/88480.terrain differ diff --git a/public/terrain/17/214640/88481.terrain b/public/terrain/17/214640/88481.terrain new file mode 100644 index 000000000..ebab7d9d8 Binary files /dev/null and b/public/terrain/17/214640/88481.terrain differ diff --git a/public/terrain/17/214640/88482.terrain b/public/terrain/17/214640/88482.terrain new file mode 100644 index 000000000..0f5fcfd35 Binary files /dev/null and b/public/terrain/17/214640/88482.terrain differ diff --git a/public/terrain/17/214640/88483.terrain b/public/terrain/17/214640/88483.terrain new file mode 100644 index 000000000..dafa14045 Binary files /dev/null and b/public/terrain/17/214640/88483.terrain differ diff --git a/public/terrain/17/214640/88484.terrain b/public/terrain/17/214640/88484.terrain new file mode 100644 index 000000000..ea5b68f9a Binary files /dev/null and b/public/terrain/17/214640/88484.terrain differ diff --git a/public/terrain/17/214640/88485.terrain b/public/terrain/17/214640/88485.terrain new file mode 100644 index 000000000..f7b33b3ce Binary files /dev/null and b/public/terrain/17/214640/88485.terrain differ diff --git a/public/terrain/17/214640/88486.terrain b/public/terrain/17/214640/88486.terrain new file mode 100644 index 000000000..2df6458f0 Binary files /dev/null and b/public/terrain/17/214640/88486.terrain differ diff --git a/public/terrain/17/214640/88487.terrain b/public/terrain/17/214640/88487.terrain new file mode 100644 index 000000000..6be2e5cc8 Binary files /dev/null and b/public/terrain/17/214640/88487.terrain differ diff --git a/public/terrain/17/214640/88488.terrain b/public/terrain/17/214640/88488.terrain new file mode 100644 index 000000000..0efc38040 Binary files /dev/null and b/public/terrain/17/214640/88488.terrain differ diff --git a/public/terrain/17/214640/88489.terrain b/public/terrain/17/214640/88489.terrain new file mode 100644 index 000000000..2a0b4f281 Binary files /dev/null and b/public/terrain/17/214640/88489.terrain differ diff --git a/public/terrain/17/214640/88490.terrain b/public/terrain/17/214640/88490.terrain new file mode 100644 index 000000000..c67665267 Binary files /dev/null and b/public/terrain/17/214640/88490.terrain differ diff --git a/public/terrain/17/214640/88491.terrain b/public/terrain/17/214640/88491.terrain new file mode 100644 index 000000000..628cbf441 Binary files /dev/null and b/public/terrain/17/214640/88491.terrain differ diff --git a/public/terrain/17/214640/88492.terrain b/public/terrain/17/214640/88492.terrain new file mode 100644 index 000000000..aecc195f2 Binary files /dev/null and b/public/terrain/17/214640/88492.terrain differ diff --git a/public/terrain/17/214640/88493.terrain b/public/terrain/17/214640/88493.terrain new file mode 100644 index 000000000..dace1e524 Binary files /dev/null and b/public/terrain/17/214640/88493.terrain differ diff --git a/public/terrain/17/214640/88494.terrain b/public/terrain/17/214640/88494.terrain new file mode 100644 index 000000000..6c1dcc28d Binary files /dev/null and b/public/terrain/17/214640/88494.terrain differ diff --git a/public/terrain/17/214640/88495.terrain b/public/terrain/17/214640/88495.terrain new file mode 100644 index 000000000..bc324fbaa Binary files /dev/null and b/public/terrain/17/214640/88495.terrain differ diff --git a/public/terrain/17/214640/88496.terrain b/public/terrain/17/214640/88496.terrain new file mode 100644 index 000000000..0b0a821b1 Binary files /dev/null and b/public/terrain/17/214640/88496.terrain differ diff --git a/public/terrain/17/214640/88497.terrain b/public/terrain/17/214640/88497.terrain new file mode 100644 index 000000000..0f3beb43f Binary files /dev/null and b/public/terrain/17/214640/88497.terrain differ diff --git a/public/terrain/17/214640/88498.terrain b/public/terrain/17/214640/88498.terrain new file mode 100644 index 000000000..7ba29c830 Binary files /dev/null and b/public/terrain/17/214640/88498.terrain differ diff --git a/public/terrain/17/214640/88499.terrain b/public/terrain/17/214640/88499.terrain new file mode 100644 index 000000000..a3267bd58 Binary files /dev/null and b/public/terrain/17/214640/88499.terrain differ diff --git a/public/terrain/17/214640/88500.terrain b/public/terrain/17/214640/88500.terrain new file mode 100644 index 000000000..1cb02e2f0 Binary files /dev/null and b/public/terrain/17/214640/88500.terrain differ diff --git a/public/terrain/17/214640/88501.terrain b/public/terrain/17/214640/88501.terrain new file mode 100644 index 000000000..d486c8809 Binary files /dev/null and b/public/terrain/17/214640/88501.terrain differ diff --git a/public/terrain/17/214640/88502.terrain b/public/terrain/17/214640/88502.terrain new file mode 100644 index 000000000..04ba4d64e Binary files /dev/null and b/public/terrain/17/214640/88502.terrain differ diff --git a/public/terrain/17/214640/88503.terrain b/public/terrain/17/214640/88503.terrain new file mode 100644 index 000000000..9ca9f1d68 Binary files /dev/null and b/public/terrain/17/214640/88503.terrain differ diff --git a/public/terrain/17/214640/88504.terrain b/public/terrain/17/214640/88504.terrain new file mode 100644 index 000000000..9a3cff411 Binary files /dev/null and b/public/terrain/17/214640/88504.terrain differ diff --git a/public/terrain/17/214640/88505.terrain b/public/terrain/17/214640/88505.terrain new file mode 100644 index 000000000..3a31bd159 Binary files /dev/null and b/public/terrain/17/214640/88505.terrain differ diff --git a/public/terrain/17/214640/88506.terrain b/public/terrain/17/214640/88506.terrain new file mode 100644 index 000000000..cbbe978a0 Binary files /dev/null and b/public/terrain/17/214640/88506.terrain differ diff --git a/public/terrain/17/214640/88507.terrain b/public/terrain/17/214640/88507.terrain new file mode 100644 index 000000000..61166a26d Binary files /dev/null and b/public/terrain/17/214640/88507.terrain differ diff --git a/public/terrain/17/214640/88508.terrain b/public/terrain/17/214640/88508.terrain new file mode 100644 index 000000000..fbc069d09 Binary files /dev/null and b/public/terrain/17/214640/88508.terrain differ diff --git a/public/terrain/17/214640/88509.terrain b/public/terrain/17/214640/88509.terrain new file mode 100644 index 000000000..c552a36b3 Binary files /dev/null and b/public/terrain/17/214640/88509.terrain differ diff --git a/public/terrain/17/214640/88510.terrain b/public/terrain/17/214640/88510.terrain new file mode 100644 index 000000000..71ade9fd4 Binary files /dev/null and b/public/terrain/17/214640/88510.terrain differ diff --git a/public/terrain/17/214640/88511.terrain b/public/terrain/17/214640/88511.terrain new file mode 100644 index 000000000..8f00f9491 Binary files /dev/null and b/public/terrain/17/214640/88511.terrain differ diff --git a/public/terrain/17/214640/88512.terrain b/public/terrain/17/214640/88512.terrain new file mode 100644 index 000000000..417aa9d09 Binary files /dev/null and b/public/terrain/17/214640/88512.terrain differ diff --git a/public/terrain/17/214640/88513.terrain b/public/terrain/17/214640/88513.terrain new file mode 100644 index 000000000..86e96e5f2 Binary files /dev/null and b/public/terrain/17/214640/88513.terrain differ diff --git a/public/terrain/17/214640/88514.terrain b/public/terrain/17/214640/88514.terrain new file mode 100644 index 000000000..453c8b6be Binary files /dev/null and b/public/terrain/17/214640/88514.terrain differ diff --git a/public/terrain/17/214641/88435.terrain b/public/terrain/17/214641/88435.terrain new file mode 100644 index 000000000..50f001844 Binary files /dev/null and b/public/terrain/17/214641/88435.terrain differ diff --git a/public/terrain/17/214641/88436.terrain b/public/terrain/17/214641/88436.terrain new file mode 100644 index 000000000..8f562c5ba Binary files /dev/null and b/public/terrain/17/214641/88436.terrain differ diff --git a/public/terrain/17/214641/88437.terrain b/public/terrain/17/214641/88437.terrain new file mode 100644 index 000000000..0a92722ac Binary files /dev/null and b/public/terrain/17/214641/88437.terrain differ diff --git a/public/terrain/17/214641/88438.terrain b/public/terrain/17/214641/88438.terrain new file mode 100644 index 000000000..3761701eb Binary files /dev/null and b/public/terrain/17/214641/88438.terrain differ diff --git a/public/terrain/17/214641/88439.terrain b/public/terrain/17/214641/88439.terrain new file mode 100644 index 000000000..24b537074 Binary files /dev/null and b/public/terrain/17/214641/88439.terrain differ diff --git a/public/terrain/17/214641/88440.terrain b/public/terrain/17/214641/88440.terrain new file mode 100644 index 000000000..e6071a610 Binary files /dev/null and b/public/terrain/17/214641/88440.terrain differ diff --git a/public/terrain/17/214641/88441.terrain b/public/terrain/17/214641/88441.terrain new file mode 100644 index 000000000..1d2b9778b Binary files /dev/null and b/public/terrain/17/214641/88441.terrain differ diff --git a/public/terrain/17/214641/88442.terrain b/public/terrain/17/214641/88442.terrain new file mode 100644 index 000000000..dbc877a78 Binary files /dev/null and b/public/terrain/17/214641/88442.terrain differ diff --git a/public/terrain/17/214641/88443.terrain b/public/terrain/17/214641/88443.terrain new file mode 100644 index 000000000..31211fbab Binary files /dev/null and b/public/terrain/17/214641/88443.terrain differ diff --git a/public/terrain/17/214641/88444.terrain b/public/terrain/17/214641/88444.terrain new file mode 100644 index 000000000..43c6d2638 Binary files /dev/null and b/public/terrain/17/214641/88444.terrain differ diff --git a/public/terrain/17/214641/88445.terrain b/public/terrain/17/214641/88445.terrain new file mode 100644 index 000000000..7ebb7581a Binary files /dev/null and b/public/terrain/17/214641/88445.terrain differ diff --git a/public/terrain/17/214641/88446.terrain b/public/terrain/17/214641/88446.terrain new file mode 100644 index 000000000..0739ea6cd Binary files /dev/null and b/public/terrain/17/214641/88446.terrain differ diff --git a/public/terrain/17/214641/88447.terrain b/public/terrain/17/214641/88447.terrain new file mode 100644 index 000000000..7356be39e Binary files /dev/null and b/public/terrain/17/214641/88447.terrain differ diff --git a/public/terrain/17/214641/88448.terrain b/public/terrain/17/214641/88448.terrain new file mode 100644 index 000000000..ceda05ab0 Binary files /dev/null and b/public/terrain/17/214641/88448.terrain differ diff --git a/public/terrain/17/214641/88449.terrain b/public/terrain/17/214641/88449.terrain new file mode 100644 index 000000000..ea10739e1 Binary files /dev/null and b/public/terrain/17/214641/88449.terrain differ diff --git a/public/terrain/17/214641/88450.terrain b/public/terrain/17/214641/88450.terrain new file mode 100644 index 000000000..63ea3d034 Binary files /dev/null and b/public/terrain/17/214641/88450.terrain differ diff --git a/public/terrain/17/214641/88451.terrain b/public/terrain/17/214641/88451.terrain new file mode 100644 index 000000000..c71e0d06d Binary files /dev/null and b/public/terrain/17/214641/88451.terrain differ diff --git a/public/terrain/17/214641/88452.terrain b/public/terrain/17/214641/88452.terrain new file mode 100644 index 000000000..8943abf7f Binary files /dev/null and b/public/terrain/17/214641/88452.terrain differ diff --git a/public/terrain/17/214641/88453.terrain b/public/terrain/17/214641/88453.terrain new file mode 100644 index 000000000..0a5d95425 Binary files /dev/null and b/public/terrain/17/214641/88453.terrain differ diff --git a/public/terrain/17/214641/88454.terrain b/public/terrain/17/214641/88454.terrain new file mode 100644 index 000000000..7a35c3489 Binary files /dev/null and b/public/terrain/17/214641/88454.terrain differ diff --git a/public/terrain/17/214641/88455.terrain b/public/terrain/17/214641/88455.terrain new file mode 100644 index 000000000..24e5683a0 Binary files /dev/null and b/public/terrain/17/214641/88455.terrain differ diff --git a/public/terrain/17/214641/88456.terrain b/public/terrain/17/214641/88456.terrain new file mode 100644 index 000000000..651df9a4d Binary files /dev/null and b/public/terrain/17/214641/88456.terrain differ diff --git a/public/terrain/17/214641/88457.terrain b/public/terrain/17/214641/88457.terrain new file mode 100644 index 000000000..320cba4de Binary files /dev/null and b/public/terrain/17/214641/88457.terrain differ diff --git a/public/terrain/17/214641/88458.terrain b/public/terrain/17/214641/88458.terrain new file mode 100644 index 000000000..839e1e221 Binary files /dev/null and b/public/terrain/17/214641/88458.terrain differ diff --git a/public/terrain/17/214641/88459.terrain b/public/terrain/17/214641/88459.terrain new file mode 100644 index 000000000..7f6d1fdeb Binary files /dev/null and b/public/terrain/17/214641/88459.terrain differ diff --git a/public/terrain/17/214641/88460.terrain b/public/terrain/17/214641/88460.terrain new file mode 100644 index 000000000..e82c1a599 Binary files /dev/null and b/public/terrain/17/214641/88460.terrain differ diff --git a/public/terrain/17/214641/88461.terrain b/public/terrain/17/214641/88461.terrain new file mode 100644 index 000000000..24d8ed77a Binary files /dev/null and b/public/terrain/17/214641/88461.terrain differ diff --git a/public/terrain/17/214641/88462.terrain b/public/terrain/17/214641/88462.terrain new file mode 100644 index 000000000..cba4165f7 Binary files /dev/null and b/public/terrain/17/214641/88462.terrain differ diff --git a/public/terrain/17/214641/88463.terrain b/public/terrain/17/214641/88463.terrain new file mode 100644 index 000000000..e39de6c54 Binary files /dev/null and b/public/terrain/17/214641/88463.terrain differ diff --git a/public/terrain/17/214641/88464.terrain b/public/terrain/17/214641/88464.terrain new file mode 100644 index 000000000..b3b3a2256 Binary files /dev/null and b/public/terrain/17/214641/88464.terrain differ diff --git a/public/terrain/17/214641/88465.terrain b/public/terrain/17/214641/88465.terrain new file mode 100644 index 000000000..ce5288080 Binary files /dev/null and b/public/terrain/17/214641/88465.terrain differ diff --git a/public/terrain/17/214641/88466.terrain b/public/terrain/17/214641/88466.terrain new file mode 100644 index 000000000..6998a7de3 Binary files /dev/null and b/public/terrain/17/214641/88466.terrain differ diff --git a/public/terrain/17/214641/88467.terrain b/public/terrain/17/214641/88467.terrain new file mode 100644 index 000000000..5cb707c56 Binary files /dev/null and b/public/terrain/17/214641/88467.terrain differ diff --git a/public/terrain/17/214641/88468.terrain b/public/terrain/17/214641/88468.terrain new file mode 100644 index 000000000..b276826d8 Binary files /dev/null and b/public/terrain/17/214641/88468.terrain differ diff --git a/public/terrain/17/214641/88469.terrain b/public/terrain/17/214641/88469.terrain new file mode 100644 index 000000000..7a025581b Binary files /dev/null and b/public/terrain/17/214641/88469.terrain differ diff --git a/public/terrain/17/214641/88470.terrain b/public/terrain/17/214641/88470.terrain new file mode 100644 index 000000000..9e9767ec8 Binary files /dev/null and b/public/terrain/17/214641/88470.terrain differ diff --git a/public/terrain/17/214641/88471.terrain b/public/terrain/17/214641/88471.terrain new file mode 100644 index 000000000..2c6c7d2d1 Binary files /dev/null and b/public/terrain/17/214641/88471.terrain differ diff --git a/public/terrain/17/214641/88472.terrain b/public/terrain/17/214641/88472.terrain new file mode 100644 index 000000000..a41c12c66 Binary files /dev/null and b/public/terrain/17/214641/88472.terrain differ diff --git a/public/terrain/17/214641/88473.terrain b/public/terrain/17/214641/88473.terrain new file mode 100644 index 000000000..b397672ed Binary files /dev/null and b/public/terrain/17/214641/88473.terrain differ diff --git a/public/terrain/17/214641/88474.terrain b/public/terrain/17/214641/88474.terrain new file mode 100644 index 000000000..30307f034 Binary files /dev/null and b/public/terrain/17/214641/88474.terrain differ diff --git a/public/terrain/17/214641/88475.terrain b/public/terrain/17/214641/88475.terrain new file mode 100644 index 000000000..7df2aae22 Binary files /dev/null and b/public/terrain/17/214641/88475.terrain differ diff --git a/public/terrain/17/214641/88476.terrain b/public/terrain/17/214641/88476.terrain new file mode 100644 index 000000000..a8d9a17e7 Binary files /dev/null and b/public/terrain/17/214641/88476.terrain differ diff --git a/public/terrain/17/214641/88477.terrain b/public/terrain/17/214641/88477.terrain new file mode 100644 index 000000000..5f1f8b96a Binary files /dev/null and b/public/terrain/17/214641/88477.terrain differ diff --git a/public/terrain/17/214641/88478.terrain b/public/terrain/17/214641/88478.terrain new file mode 100644 index 000000000..4df380dad Binary files /dev/null and b/public/terrain/17/214641/88478.terrain differ diff --git a/public/terrain/17/214641/88479.terrain b/public/terrain/17/214641/88479.terrain new file mode 100644 index 000000000..fb7f8b9c5 Binary files /dev/null and b/public/terrain/17/214641/88479.terrain differ diff --git a/public/terrain/17/214641/88480.terrain b/public/terrain/17/214641/88480.terrain new file mode 100644 index 000000000..3888d0303 Binary files /dev/null and b/public/terrain/17/214641/88480.terrain differ diff --git a/public/terrain/17/214641/88481.terrain b/public/terrain/17/214641/88481.terrain new file mode 100644 index 000000000..6fb4b8fb7 Binary files /dev/null and b/public/terrain/17/214641/88481.terrain differ diff --git a/public/terrain/17/214641/88482.terrain b/public/terrain/17/214641/88482.terrain new file mode 100644 index 000000000..40e415f3b Binary files /dev/null and b/public/terrain/17/214641/88482.terrain differ diff --git a/public/terrain/17/214641/88483.terrain b/public/terrain/17/214641/88483.terrain new file mode 100644 index 000000000..5c913a5b8 Binary files /dev/null and b/public/terrain/17/214641/88483.terrain differ diff --git a/public/terrain/17/214641/88484.terrain b/public/terrain/17/214641/88484.terrain new file mode 100644 index 000000000..80bed9a34 Binary files /dev/null and b/public/terrain/17/214641/88484.terrain differ diff --git a/public/terrain/17/214641/88485.terrain b/public/terrain/17/214641/88485.terrain new file mode 100644 index 000000000..de8a94ca2 Binary files /dev/null and b/public/terrain/17/214641/88485.terrain differ diff --git a/public/terrain/17/214641/88486.terrain b/public/terrain/17/214641/88486.terrain new file mode 100644 index 000000000..9a47ebf0f Binary files /dev/null and b/public/terrain/17/214641/88486.terrain differ diff --git a/public/terrain/17/214641/88487.terrain b/public/terrain/17/214641/88487.terrain new file mode 100644 index 000000000..923db46b2 Binary files /dev/null and b/public/terrain/17/214641/88487.terrain differ diff --git a/public/terrain/17/214641/88488.terrain b/public/terrain/17/214641/88488.terrain new file mode 100644 index 000000000..9ac7e620b Binary files /dev/null and b/public/terrain/17/214641/88488.terrain differ diff --git a/public/terrain/17/214641/88489.terrain b/public/terrain/17/214641/88489.terrain new file mode 100644 index 000000000..d2951e630 Binary files /dev/null and b/public/terrain/17/214641/88489.terrain differ diff --git a/public/terrain/17/214641/88490.terrain b/public/terrain/17/214641/88490.terrain new file mode 100644 index 000000000..2de317dd8 Binary files /dev/null and b/public/terrain/17/214641/88490.terrain differ diff --git a/public/terrain/17/214641/88491.terrain b/public/terrain/17/214641/88491.terrain new file mode 100644 index 000000000..25eae4626 Binary files /dev/null and b/public/terrain/17/214641/88491.terrain differ diff --git a/public/terrain/17/214641/88492.terrain b/public/terrain/17/214641/88492.terrain new file mode 100644 index 000000000..4b9739409 Binary files /dev/null and b/public/terrain/17/214641/88492.terrain differ diff --git a/public/terrain/17/214641/88493.terrain b/public/terrain/17/214641/88493.terrain new file mode 100644 index 000000000..528737309 Binary files /dev/null and b/public/terrain/17/214641/88493.terrain differ diff --git a/public/terrain/17/214641/88494.terrain b/public/terrain/17/214641/88494.terrain new file mode 100644 index 000000000..b5d0e08fe Binary files /dev/null and b/public/terrain/17/214641/88494.terrain differ diff --git a/public/terrain/17/214641/88495.terrain b/public/terrain/17/214641/88495.terrain new file mode 100644 index 000000000..d18f2eaf2 Binary files /dev/null and b/public/terrain/17/214641/88495.terrain differ diff --git a/public/terrain/17/214641/88496.terrain b/public/terrain/17/214641/88496.terrain new file mode 100644 index 000000000..a853cf3ea Binary files /dev/null and b/public/terrain/17/214641/88496.terrain differ diff --git a/public/terrain/17/214641/88497.terrain b/public/terrain/17/214641/88497.terrain new file mode 100644 index 000000000..944b6428a Binary files /dev/null and b/public/terrain/17/214641/88497.terrain differ diff --git a/public/terrain/17/214641/88498.terrain b/public/terrain/17/214641/88498.terrain new file mode 100644 index 000000000..124420906 Binary files /dev/null and b/public/terrain/17/214641/88498.terrain differ diff --git a/public/terrain/17/214641/88499.terrain b/public/terrain/17/214641/88499.terrain new file mode 100644 index 000000000..5bfc2c001 Binary files /dev/null and b/public/terrain/17/214641/88499.terrain differ diff --git a/public/terrain/17/214641/88500.terrain b/public/terrain/17/214641/88500.terrain new file mode 100644 index 000000000..1a601edb1 Binary files /dev/null and b/public/terrain/17/214641/88500.terrain differ diff --git a/public/terrain/17/214641/88501.terrain b/public/terrain/17/214641/88501.terrain new file mode 100644 index 000000000..227a7af63 Binary files /dev/null and b/public/terrain/17/214641/88501.terrain differ diff --git a/public/terrain/17/214641/88502.terrain b/public/terrain/17/214641/88502.terrain new file mode 100644 index 000000000..e7dcb86dc Binary files /dev/null and b/public/terrain/17/214641/88502.terrain differ diff --git a/public/terrain/17/214641/88503.terrain b/public/terrain/17/214641/88503.terrain new file mode 100644 index 000000000..36a934c7e Binary files /dev/null and b/public/terrain/17/214641/88503.terrain differ diff --git a/public/terrain/17/214641/88504.terrain b/public/terrain/17/214641/88504.terrain new file mode 100644 index 000000000..a15193820 Binary files /dev/null and b/public/terrain/17/214641/88504.terrain differ diff --git a/public/terrain/17/214641/88505.terrain b/public/terrain/17/214641/88505.terrain new file mode 100644 index 000000000..b04d23a96 Binary files /dev/null and b/public/terrain/17/214641/88505.terrain differ diff --git a/public/terrain/17/214641/88506.terrain b/public/terrain/17/214641/88506.terrain new file mode 100644 index 000000000..eedd03682 Binary files /dev/null and b/public/terrain/17/214641/88506.terrain differ diff --git a/public/terrain/17/214641/88507.terrain b/public/terrain/17/214641/88507.terrain new file mode 100644 index 000000000..cefb7e017 Binary files /dev/null and b/public/terrain/17/214641/88507.terrain differ diff --git a/public/terrain/17/214641/88508.terrain b/public/terrain/17/214641/88508.terrain new file mode 100644 index 000000000..372ce2e33 Binary files /dev/null and b/public/terrain/17/214641/88508.terrain differ diff --git a/public/terrain/17/214641/88509.terrain b/public/terrain/17/214641/88509.terrain new file mode 100644 index 000000000..b3fedabf3 Binary files /dev/null and b/public/terrain/17/214641/88509.terrain differ diff --git a/public/terrain/17/214641/88510.terrain b/public/terrain/17/214641/88510.terrain new file mode 100644 index 000000000..82bde72cf Binary files /dev/null and b/public/terrain/17/214641/88510.terrain differ diff --git a/public/terrain/17/214641/88511.terrain b/public/terrain/17/214641/88511.terrain new file mode 100644 index 000000000..66a73bea0 Binary files /dev/null and b/public/terrain/17/214641/88511.terrain differ diff --git a/public/terrain/17/214641/88512.terrain b/public/terrain/17/214641/88512.terrain new file mode 100644 index 000000000..6b83bd3f2 Binary files /dev/null and b/public/terrain/17/214641/88512.terrain differ diff --git a/public/terrain/17/214641/88513.terrain b/public/terrain/17/214641/88513.terrain new file mode 100644 index 000000000..6c55a7303 Binary files /dev/null and b/public/terrain/17/214641/88513.terrain differ diff --git a/public/terrain/17/214641/88514.terrain b/public/terrain/17/214641/88514.terrain new file mode 100644 index 000000000..dab8e79aa Binary files /dev/null and b/public/terrain/17/214641/88514.terrain differ diff --git a/public/terrain/17/214642/88435.terrain b/public/terrain/17/214642/88435.terrain new file mode 100644 index 000000000..cab6b339d Binary files /dev/null and b/public/terrain/17/214642/88435.terrain differ diff --git a/public/terrain/17/214642/88436.terrain b/public/terrain/17/214642/88436.terrain new file mode 100644 index 000000000..d88631d89 Binary files /dev/null and b/public/terrain/17/214642/88436.terrain differ diff --git a/public/terrain/17/214642/88437.terrain b/public/terrain/17/214642/88437.terrain new file mode 100644 index 000000000..171ba903a Binary files /dev/null and b/public/terrain/17/214642/88437.terrain differ diff --git a/public/terrain/17/214642/88438.terrain b/public/terrain/17/214642/88438.terrain new file mode 100644 index 000000000..2834843e9 Binary files /dev/null and b/public/terrain/17/214642/88438.terrain differ diff --git a/public/terrain/17/214642/88439.terrain b/public/terrain/17/214642/88439.terrain new file mode 100644 index 000000000..44f19dc94 Binary files /dev/null and b/public/terrain/17/214642/88439.terrain differ diff --git a/public/terrain/17/214642/88440.terrain b/public/terrain/17/214642/88440.terrain new file mode 100644 index 000000000..7f5943723 Binary files /dev/null and b/public/terrain/17/214642/88440.terrain differ diff --git a/public/terrain/17/214642/88441.terrain b/public/terrain/17/214642/88441.terrain new file mode 100644 index 000000000..b3454b1d9 Binary files /dev/null and b/public/terrain/17/214642/88441.terrain differ diff --git a/public/terrain/17/214642/88442.terrain b/public/terrain/17/214642/88442.terrain new file mode 100644 index 000000000..7d8431715 Binary files /dev/null and b/public/terrain/17/214642/88442.terrain differ diff --git a/public/terrain/17/214642/88443.terrain b/public/terrain/17/214642/88443.terrain new file mode 100644 index 000000000..27c9ea3ce Binary files /dev/null and b/public/terrain/17/214642/88443.terrain differ diff --git a/public/terrain/17/214642/88444.terrain b/public/terrain/17/214642/88444.terrain new file mode 100644 index 000000000..1cfc59fda Binary files /dev/null and b/public/terrain/17/214642/88444.terrain differ diff --git a/public/terrain/17/214642/88445.terrain b/public/terrain/17/214642/88445.terrain new file mode 100644 index 000000000..d4f2bc690 Binary files /dev/null and b/public/terrain/17/214642/88445.terrain differ diff --git a/public/terrain/17/214642/88446.terrain b/public/terrain/17/214642/88446.terrain new file mode 100644 index 000000000..7725d93bc Binary files /dev/null and b/public/terrain/17/214642/88446.terrain differ diff --git a/public/terrain/17/214642/88447.terrain b/public/terrain/17/214642/88447.terrain new file mode 100644 index 000000000..31cd69992 Binary files /dev/null and b/public/terrain/17/214642/88447.terrain differ diff --git a/public/terrain/17/214642/88448.terrain b/public/terrain/17/214642/88448.terrain new file mode 100644 index 000000000..67ffb4a2b Binary files /dev/null and b/public/terrain/17/214642/88448.terrain differ diff --git a/public/terrain/17/214642/88449.terrain b/public/terrain/17/214642/88449.terrain new file mode 100644 index 000000000..afc28621c Binary files /dev/null and b/public/terrain/17/214642/88449.terrain differ diff --git a/public/terrain/17/214642/88450.terrain b/public/terrain/17/214642/88450.terrain new file mode 100644 index 000000000..492aa264e Binary files /dev/null and b/public/terrain/17/214642/88450.terrain differ diff --git a/public/terrain/17/214642/88451.terrain b/public/terrain/17/214642/88451.terrain new file mode 100644 index 000000000..9b209093b Binary files /dev/null and b/public/terrain/17/214642/88451.terrain differ diff --git a/public/terrain/17/214642/88452.terrain b/public/terrain/17/214642/88452.terrain new file mode 100644 index 000000000..5ac9a398f Binary files /dev/null and b/public/terrain/17/214642/88452.terrain differ diff --git a/public/terrain/17/214642/88453.terrain b/public/terrain/17/214642/88453.terrain new file mode 100644 index 000000000..90f08f705 Binary files /dev/null and b/public/terrain/17/214642/88453.terrain differ diff --git a/public/terrain/17/214642/88454.terrain b/public/terrain/17/214642/88454.terrain new file mode 100644 index 000000000..0f48b699c Binary files /dev/null and b/public/terrain/17/214642/88454.terrain differ diff --git a/public/terrain/17/214642/88455.terrain b/public/terrain/17/214642/88455.terrain new file mode 100644 index 000000000..e5a84cd94 Binary files /dev/null and b/public/terrain/17/214642/88455.terrain differ diff --git a/public/terrain/17/214642/88456.terrain b/public/terrain/17/214642/88456.terrain new file mode 100644 index 000000000..aaa66cff2 Binary files /dev/null and b/public/terrain/17/214642/88456.terrain differ diff --git a/public/terrain/17/214642/88457.terrain b/public/terrain/17/214642/88457.terrain new file mode 100644 index 000000000..6786208fa Binary files /dev/null and b/public/terrain/17/214642/88457.terrain differ diff --git a/public/terrain/17/214642/88458.terrain b/public/terrain/17/214642/88458.terrain new file mode 100644 index 000000000..2b305752a Binary files /dev/null and b/public/terrain/17/214642/88458.terrain differ diff --git a/public/terrain/17/214642/88459.terrain b/public/terrain/17/214642/88459.terrain new file mode 100644 index 000000000..7f7801cea Binary files /dev/null and b/public/terrain/17/214642/88459.terrain differ diff --git a/public/terrain/17/214642/88460.terrain b/public/terrain/17/214642/88460.terrain new file mode 100644 index 000000000..b6450089e Binary files /dev/null and b/public/terrain/17/214642/88460.terrain differ diff --git a/public/terrain/17/214642/88461.terrain b/public/terrain/17/214642/88461.terrain new file mode 100644 index 000000000..9c06325bf Binary files /dev/null and b/public/terrain/17/214642/88461.terrain differ diff --git a/public/terrain/17/214642/88462.terrain b/public/terrain/17/214642/88462.terrain new file mode 100644 index 000000000..613808465 Binary files /dev/null and b/public/terrain/17/214642/88462.terrain differ diff --git a/public/terrain/17/214642/88463.terrain b/public/terrain/17/214642/88463.terrain new file mode 100644 index 000000000..faf47b8ac Binary files /dev/null and b/public/terrain/17/214642/88463.terrain differ diff --git a/public/terrain/17/214642/88464.terrain b/public/terrain/17/214642/88464.terrain new file mode 100644 index 000000000..ceb9f88d0 Binary files /dev/null and b/public/terrain/17/214642/88464.terrain differ diff --git a/public/terrain/17/214642/88465.terrain b/public/terrain/17/214642/88465.terrain new file mode 100644 index 000000000..1ec94579e Binary files /dev/null and b/public/terrain/17/214642/88465.terrain differ diff --git a/public/terrain/17/214642/88466.terrain b/public/terrain/17/214642/88466.terrain new file mode 100644 index 000000000..2c8f521e3 Binary files /dev/null and b/public/terrain/17/214642/88466.terrain differ diff --git a/public/terrain/17/214642/88467.terrain b/public/terrain/17/214642/88467.terrain new file mode 100644 index 000000000..6278be653 Binary files /dev/null and b/public/terrain/17/214642/88467.terrain differ diff --git a/public/terrain/17/214642/88468.terrain b/public/terrain/17/214642/88468.terrain new file mode 100644 index 000000000..47a70baae Binary files /dev/null and b/public/terrain/17/214642/88468.terrain differ diff --git a/public/terrain/17/214642/88469.terrain b/public/terrain/17/214642/88469.terrain new file mode 100644 index 000000000..64b0711b9 Binary files /dev/null and b/public/terrain/17/214642/88469.terrain differ diff --git a/public/terrain/17/214642/88470.terrain b/public/terrain/17/214642/88470.terrain new file mode 100644 index 000000000..88424dac7 Binary files /dev/null and b/public/terrain/17/214642/88470.terrain differ diff --git a/public/terrain/17/214642/88471.terrain b/public/terrain/17/214642/88471.terrain new file mode 100644 index 000000000..8b9dbe153 Binary files /dev/null and b/public/terrain/17/214642/88471.terrain differ diff --git a/public/terrain/17/214642/88472.terrain b/public/terrain/17/214642/88472.terrain new file mode 100644 index 000000000..7f7000256 Binary files /dev/null and b/public/terrain/17/214642/88472.terrain differ diff --git a/public/terrain/17/214642/88473.terrain b/public/terrain/17/214642/88473.terrain new file mode 100644 index 000000000..94a5f0f4b Binary files /dev/null and b/public/terrain/17/214642/88473.terrain differ diff --git a/public/terrain/17/214642/88474.terrain b/public/terrain/17/214642/88474.terrain new file mode 100644 index 000000000..2d2465769 Binary files /dev/null and b/public/terrain/17/214642/88474.terrain differ diff --git a/public/terrain/17/214642/88475.terrain b/public/terrain/17/214642/88475.terrain new file mode 100644 index 000000000..96aa6676b Binary files /dev/null and b/public/terrain/17/214642/88475.terrain differ diff --git a/public/terrain/17/214642/88476.terrain b/public/terrain/17/214642/88476.terrain new file mode 100644 index 000000000..e427b3a63 Binary files /dev/null and b/public/terrain/17/214642/88476.terrain differ diff --git a/public/terrain/17/214642/88477.terrain b/public/terrain/17/214642/88477.terrain new file mode 100644 index 000000000..3d928fff1 Binary files /dev/null and b/public/terrain/17/214642/88477.terrain differ diff --git a/public/terrain/17/214642/88478.terrain b/public/terrain/17/214642/88478.terrain new file mode 100644 index 000000000..a98f2dca5 Binary files /dev/null and b/public/terrain/17/214642/88478.terrain differ diff --git a/public/terrain/17/214642/88479.terrain b/public/terrain/17/214642/88479.terrain new file mode 100644 index 000000000..bb5a9d27c Binary files /dev/null and b/public/terrain/17/214642/88479.terrain differ diff --git a/public/terrain/17/214642/88480.terrain b/public/terrain/17/214642/88480.terrain new file mode 100644 index 000000000..bc596fc07 Binary files /dev/null and b/public/terrain/17/214642/88480.terrain differ diff --git a/public/terrain/17/214642/88481.terrain b/public/terrain/17/214642/88481.terrain new file mode 100644 index 000000000..563a0c131 Binary files /dev/null and b/public/terrain/17/214642/88481.terrain differ diff --git a/public/terrain/17/214642/88482.terrain b/public/terrain/17/214642/88482.terrain new file mode 100644 index 000000000..e900c95a4 Binary files /dev/null and b/public/terrain/17/214642/88482.terrain differ diff --git a/public/terrain/17/214642/88483.terrain b/public/terrain/17/214642/88483.terrain new file mode 100644 index 000000000..c4e81aac9 Binary files /dev/null and b/public/terrain/17/214642/88483.terrain differ diff --git a/public/terrain/17/214642/88484.terrain b/public/terrain/17/214642/88484.terrain new file mode 100644 index 000000000..085de34f7 Binary files /dev/null and b/public/terrain/17/214642/88484.terrain differ diff --git a/public/terrain/17/214642/88485.terrain b/public/terrain/17/214642/88485.terrain new file mode 100644 index 000000000..390eb7e64 Binary files /dev/null and b/public/terrain/17/214642/88485.terrain differ diff --git a/public/terrain/17/214642/88486.terrain b/public/terrain/17/214642/88486.terrain new file mode 100644 index 000000000..1397f9e34 Binary files /dev/null and b/public/terrain/17/214642/88486.terrain differ diff --git a/public/terrain/17/214642/88487.terrain b/public/terrain/17/214642/88487.terrain new file mode 100644 index 000000000..9a7883a67 Binary files /dev/null and b/public/terrain/17/214642/88487.terrain differ diff --git a/public/terrain/17/214642/88488.terrain b/public/terrain/17/214642/88488.terrain new file mode 100644 index 000000000..39757e382 Binary files /dev/null and b/public/terrain/17/214642/88488.terrain differ diff --git a/public/terrain/17/214642/88489.terrain b/public/terrain/17/214642/88489.terrain new file mode 100644 index 000000000..d25c50f5f Binary files /dev/null and b/public/terrain/17/214642/88489.terrain differ diff --git a/public/terrain/17/214642/88490.terrain b/public/terrain/17/214642/88490.terrain new file mode 100644 index 000000000..b5eec170f Binary files /dev/null and b/public/terrain/17/214642/88490.terrain differ diff --git a/public/terrain/17/214642/88491.terrain b/public/terrain/17/214642/88491.terrain new file mode 100644 index 000000000..261ffe723 Binary files /dev/null and b/public/terrain/17/214642/88491.terrain differ diff --git a/public/terrain/17/214642/88492.terrain b/public/terrain/17/214642/88492.terrain new file mode 100644 index 000000000..d096f2a65 Binary files /dev/null and b/public/terrain/17/214642/88492.terrain differ diff --git a/public/terrain/17/214642/88493.terrain b/public/terrain/17/214642/88493.terrain new file mode 100644 index 000000000..cf6eaa145 Binary files /dev/null and b/public/terrain/17/214642/88493.terrain differ diff --git a/public/terrain/17/214642/88494.terrain b/public/terrain/17/214642/88494.terrain new file mode 100644 index 000000000..67c28e9fc Binary files /dev/null and b/public/terrain/17/214642/88494.terrain differ diff --git a/public/terrain/17/214642/88495.terrain b/public/terrain/17/214642/88495.terrain new file mode 100644 index 000000000..8c7293421 Binary files /dev/null and b/public/terrain/17/214642/88495.terrain differ diff --git a/public/terrain/17/214642/88496.terrain b/public/terrain/17/214642/88496.terrain new file mode 100644 index 000000000..82cd3963d Binary files /dev/null and b/public/terrain/17/214642/88496.terrain differ diff --git a/public/terrain/17/214642/88497.terrain b/public/terrain/17/214642/88497.terrain new file mode 100644 index 000000000..72a39fb6f Binary files /dev/null and b/public/terrain/17/214642/88497.terrain differ diff --git a/public/terrain/17/214642/88498.terrain b/public/terrain/17/214642/88498.terrain new file mode 100644 index 000000000..947e5233b Binary files /dev/null and b/public/terrain/17/214642/88498.terrain differ diff --git a/public/terrain/17/214642/88499.terrain b/public/terrain/17/214642/88499.terrain new file mode 100644 index 000000000..3c6e5499c Binary files /dev/null and b/public/terrain/17/214642/88499.terrain differ diff --git a/public/terrain/17/214642/88500.terrain b/public/terrain/17/214642/88500.terrain new file mode 100644 index 000000000..32cdf1bae Binary files /dev/null and b/public/terrain/17/214642/88500.terrain differ diff --git a/public/terrain/17/214642/88501.terrain b/public/terrain/17/214642/88501.terrain new file mode 100644 index 000000000..84fb74bdc Binary files /dev/null and b/public/terrain/17/214642/88501.terrain differ diff --git a/public/terrain/17/214642/88502.terrain b/public/terrain/17/214642/88502.terrain new file mode 100644 index 000000000..344cea232 Binary files /dev/null and b/public/terrain/17/214642/88502.terrain differ diff --git a/public/terrain/17/214642/88503.terrain b/public/terrain/17/214642/88503.terrain new file mode 100644 index 000000000..e7278aaab Binary files /dev/null and b/public/terrain/17/214642/88503.terrain differ diff --git a/public/terrain/17/214642/88504.terrain b/public/terrain/17/214642/88504.terrain new file mode 100644 index 000000000..b91ce6381 Binary files /dev/null and b/public/terrain/17/214642/88504.terrain differ diff --git a/public/terrain/17/214642/88505.terrain b/public/terrain/17/214642/88505.terrain new file mode 100644 index 000000000..14cf4dacf Binary files /dev/null and b/public/terrain/17/214642/88505.terrain differ diff --git a/public/terrain/17/214642/88506.terrain b/public/terrain/17/214642/88506.terrain new file mode 100644 index 000000000..7945e9d0b Binary files /dev/null and b/public/terrain/17/214642/88506.terrain differ diff --git a/public/terrain/17/214642/88507.terrain b/public/terrain/17/214642/88507.terrain new file mode 100644 index 000000000..e0cb29082 Binary files /dev/null and b/public/terrain/17/214642/88507.terrain differ diff --git a/public/terrain/17/214642/88508.terrain b/public/terrain/17/214642/88508.terrain new file mode 100644 index 000000000..6887085b2 Binary files /dev/null and b/public/terrain/17/214642/88508.terrain differ diff --git a/public/terrain/17/214642/88509.terrain b/public/terrain/17/214642/88509.terrain new file mode 100644 index 000000000..0e3758113 Binary files /dev/null and b/public/terrain/17/214642/88509.terrain differ diff --git a/public/terrain/17/214642/88510.terrain b/public/terrain/17/214642/88510.terrain new file mode 100644 index 000000000..37c13e4db Binary files /dev/null and b/public/terrain/17/214642/88510.terrain differ diff --git a/public/terrain/17/214642/88511.terrain b/public/terrain/17/214642/88511.terrain new file mode 100644 index 000000000..bf2716b04 Binary files /dev/null and b/public/terrain/17/214642/88511.terrain differ diff --git a/public/terrain/17/214642/88512.terrain b/public/terrain/17/214642/88512.terrain new file mode 100644 index 000000000..3669b02b8 Binary files /dev/null and b/public/terrain/17/214642/88512.terrain differ diff --git a/public/terrain/17/214642/88513.terrain b/public/terrain/17/214642/88513.terrain new file mode 100644 index 000000000..a4ac1f2e1 Binary files /dev/null and b/public/terrain/17/214642/88513.terrain differ diff --git a/public/terrain/17/214642/88514.terrain b/public/terrain/17/214642/88514.terrain new file mode 100644 index 000000000..3b6629cd5 Binary files /dev/null and b/public/terrain/17/214642/88514.terrain differ diff --git a/public/terrain/17/214643/88435.terrain b/public/terrain/17/214643/88435.terrain new file mode 100644 index 000000000..034abfe6d Binary files /dev/null and b/public/terrain/17/214643/88435.terrain differ diff --git a/public/terrain/17/214643/88436.terrain b/public/terrain/17/214643/88436.terrain new file mode 100644 index 000000000..edd7a5211 Binary files /dev/null and b/public/terrain/17/214643/88436.terrain differ diff --git a/public/terrain/17/214643/88437.terrain b/public/terrain/17/214643/88437.terrain new file mode 100644 index 000000000..37e1bd1b6 Binary files /dev/null and b/public/terrain/17/214643/88437.terrain differ diff --git a/public/terrain/17/214643/88438.terrain b/public/terrain/17/214643/88438.terrain new file mode 100644 index 000000000..bca8375cf Binary files /dev/null and b/public/terrain/17/214643/88438.terrain differ diff --git a/public/terrain/17/214643/88439.terrain b/public/terrain/17/214643/88439.terrain new file mode 100644 index 000000000..d86a359b6 Binary files /dev/null and b/public/terrain/17/214643/88439.terrain differ diff --git a/public/terrain/17/214643/88440.terrain b/public/terrain/17/214643/88440.terrain new file mode 100644 index 000000000..175166886 Binary files /dev/null and b/public/terrain/17/214643/88440.terrain differ diff --git a/public/terrain/17/214643/88441.terrain b/public/terrain/17/214643/88441.terrain new file mode 100644 index 000000000..abe16fdc6 Binary files /dev/null and b/public/terrain/17/214643/88441.terrain differ diff --git a/public/terrain/17/214643/88442.terrain b/public/terrain/17/214643/88442.terrain new file mode 100644 index 000000000..f06590f23 Binary files /dev/null and b/public/terrain/17/214643/88442.terrain differ diff --git a/public/terrain/17/214643/88443.terrain b/public/terrain/17/214643/88443.terrain new file mode 100644 index 000000000..ec8488796 Binary files /dev/null and b/public/terrain/17/214643/88443.terrain differ diff --git a/public/terrain/17/214643/88444.terrain b/public/terrain/17/214643/88444.terrain new file mode 100644 index 000000000..ae900bf37 Binary files /dev/null and b/public/terrain/17/214643/88444.terrain differ diff --git a/public/terrain/17/214643/88445.terrain b/public/terrain/17/214643/88445.terrain new file mode 100644 index 000000000..5e9e073fd Binary files /dev/null and b/public/terrain/17/214643/88445.terrain differ diff --git a/public/terrain/17/214643/88446.terrain b/public/terrain/17/214643/88446.terrain new file mode 100644 index 000000000..28a2f2000 Binary files /dev/null and b/public/terrain/17/214643/88446.terrain differ diff --git a/public/terrain/17/214643/88447.terrain b/public/terrain/17/214643/88447.terrain new file mode 100644 index 000000000..3c30c9be4 Binary files /dev/null and b/public/terrain/17/214643/88447.terrain differ diff --git a/public/terrain/17/214643/88448.terrain b/public/terrain/17/214643/88448.terrain new file mode 100644 index 000000000..d13948d79 Binary files /dev/null and b/public/terrain/17/214643/88448.terrain differ diff --git a/public/terrain/17/214643/88449.terrain b/public/terrain/17/214643/88449.terrain new file mode 100644 index 000000000..4270bbf80 Binary files /dev/null and b/public/terrain/17/214643/88449.terrain differ diff --git a/public/terrain/17/214643/88450.terrain b/public/terrain/17/214643/88450.terrain new file mode 100644 index 000000000..5768c30ba Binary files /dev/null and b/public/terrain/17/214643/88450.terrain differ diff --git a/public/terrain/17/214643/88451.terrain b/public/terrain/17/214643/88451.terrain new file mode 100644 index 000000000..39dd1e8dd Binary files /dev/null and b/public/terrain/17/214643/88451.terrain differ diff --git a/public/terrain/17/214643/88452.terrain b/public/terrain/17/214643/88452.terrain new file mode 100644 index 000000000..1c6b1a0de Binary files /dev/null and b/public/terrain/17/214643/88452.terrain differ diff --git a/public/terrain/17/214643/88453.terrain b/public/terrain/17/214643/88453.terrain new file mode 100644 index 000000000..f12b8e474 Binary files /dev/null and b/public/terrain/17/214643/88453.terrain differ diff --git a/public/terrain/17/214643/88454.terrain b/public/terrain/17/214643/88454.terrain new file mode 100644 index 000000000..be6e73cd4 Binary files /dev/null and b/public/terrain/17/214643/88454.terrain differ diff --git a/public/terrain/17/214643/88455.terrain b/public/terrain/17/214643/88455.terrain new file mode 100644 index 000000000..cc948a749 Binary files /dev/null and b/public/terrain/17/214643/88455.terrain differ diff --git a/public/terrain/17/214643/88456.terrain b/public/terrain/17/214643/88456.terrain new file mode 100644 index 000000000..61834dd7c Binary files /dev/null and b/public/terrain/17/214643/88456.terrain differ diff --git a/public/terrain/17/214643/88457.terrain b/public/terrain/17/214643/88457.terrain new file mode 100644 index 000000000..3bce82094 Binary files /dev/null and b/public/terrain/17/214643/88457.terrain differ diff --git a/public/terrain/17/214643/88458.terrain b/public/terrain/17/214643/88458.terrain new file mode 100644 index 000000000..e391284a0 Binary files /dev/null and b/public/terrain/17/214643/88458.terrain differ diff --git a/public/terrain/17/214643/88459.terrain b/public/terrain/17/214643/88459.terrain new file mode 100644 index 000000000..e62e9fc75 Binary files /dev/null and b/public/terrain/17/214643/88459.terrain differ diff --git a/public/terrain/17/214643/88460.terrain b/public/terrain/17/214643/88460.terrain new file mode 100644 index 000000000..2e640f83d Binary files /dev/null and b/public/terrain/17/214643/88460.terrain differ diff --git a/public/terrain/17/214643/88461.terrain b/public/terrain/17/214643/88461.terrain new file mode 100644 index 000000000..60298171e Binary files /dev/null and b/public/terrain/17/214643/88461.terrain differ diff --git a/public/terrain/17/214643/88462.terrain b/public/terrain/17/214643/88462.terrain new file mode 100644 index 000000000..b15349c34 Binary files /dev/null and b/public/terrain/17/214643/88462.terrain differ diff --git a/public/terrain/17/214643/88463.terrain b/public/terrain/17/214643/88463.terrain new file mode 100644 index 000000000..f385325cb Binary files /dev/null and b/public/terrain/17/214643/88463.terrain differ diff --git a/public/terrain/17/214643/88464.terrain b/public/terrain/17/214643/88464.terrain new file mode 100644 index 000000000..d7ef43723 Binary files /dev/null and b/public/terrain/17/214643/88464.terrain differ diff --git a/public/terrain/17/214643/88465.terrain b/public/terrain/17/214643/88465.terrain new file mode 100644 index 000000000..5bc2389c9 Binary files /dev/null and b/public/terrain/17/214643/88465.terrain differ diff --git a/public/terrain/17/214643/88466.terrain b/public/terrain/17/214643/88466.terrain new file mode 100644 index 000000000..ea4781aa0 Binary files /dev/null and b/public/terrain/17/214643/88466.terrain differ diff --git a/public/terrain/17/214643/88467.terrain b/public/terrain/17/214643/88467.terrain new file mode 100644 index 000000000..8dc4bffe1 Binary files /dev/null and b/public/terrain/17/214643/88467.terrain differ diff --git a/public/terrain/17/214643/88468.terrain b/public/terrain/17/214643/88468.terrain new file mode 100644 index 000000000..2900ba35b Binary files /dev/null and b/public/terrain/17/214643/88468.terrain differ diff --git a/public/terrain/17/214643/88469.terrain b/public/terrain/17/214643/88469.terrain new file mode 100644 index 000000000..7fb2c87ca Binary files /dev/null and b/public/terrain/17/214643/88469.terrain differ diff --git a/public/terrain/17/214643/88470.terrain b/public/terrain/17/214643/88470.terrain new file mode 100644 index 000000000..b37b2abf7 Binary files /dev/null and b/public/terrain/17/214643/88470.terrain differ diff --git a/public/terrain/17/214643/88471.terrain b/public/terrain/17/214643/88471.terrain new file mode 100644 index 000000000..1bcf62b24 Binary files /dev/null and b/public/terrain/17/214643/88471.terrain differ diff --git a/public/terrain/17/214643/88472.terrain b/public/terrain/17/214643/88472.terrain new file mode 100644 index 000000000..61d1bd206 Binary files /dev/null and b/public/terrain/17/214643/88472.terrain differ diff --git a/public/terrain/17/214643/88473.terrain b/public/terrain/17/214643/88473.terrain new file mode 100644 index 000000000..523cd3aca Binary files /dev/null and b/public/terrain/17/214643/88473.terrain differ diff --git a/public/terrain/17/214643/88474.terrain b/public/terrain/17/214643/88474.terrain new file mode 100644 index 000000000..454b47561 Binary files /dev/null and b/public/terrain/17/214643/88474.terrain differ diff --git a/public/terrain/17/214643/88475.terrain b/public/terrain/17/214643/88475.terrain new file mode 100644 index 000000000..0bf3f3ea1 Binary files /dev/null and b/public/terrain/17/214643/88475.terrain differ diff --git a/public/terrain/17/214643/88476.terrain b/public/terrain/17/214643/88476.terrain new file mode 100644 index 000000000..d68ab6adf Binary files /dev/null and b/public/terrain/17/214643/88476.terrain differ diff --git a/public/terrain/17/214643/88477.terrain b/public/terrain/17/214643/88477.terrain new file mode 100644 index 000000000..e341faeee Binary files /dev/null and b/public/terrain/17/214643/88477.terrain differ diff --git a/public/terrain/17/214643/88478.terrain b/public/terrain/17/214643/88478.terrain new file mode 100644 index 000000000..cca864a91 Binary files /dev/null and b/public/terrain/17/214643/88478.terrain differ diff --git a/public/terrain/17/214643/88479.terrain b/public/terrain/17/214643/88479.terrain new file mode 100644 index 000000000..6d4872698 Binary files /dev/null and b/public/terrain/17/214643/88479.terrain differ diff --git a/public/terrain/17/214643/88480.terrain b/public/terrain/17/214643/88480.terrain new file mode 100644 index 000000000..b5b9253e2 Binary files /dev/null and b/public/terrain/17/214643/88480.terrain differ diff --git a/public/terrain/17/214643/88481.terrain b/public/terrain/17/214643/88481.terrain new file mode 100644 index 000000000..8095d0267 Binary files /dev/null and b/public/terrain/17/214643/88481.terrain differ diff --git a/public/terrain/17/214643/88482.terrain b/public/terrain/17/214643/88482.terrain new file mode 100644 index 000000000..fb85d2164 Binary files /dev/null and b/public/terrain/17/214643/88482.terrain differ diff --git a/public/terrain/17/214643/88483.terrain b/public/terrain/17/214643/88483.terrain new file mode 100644 index 000000000..aa0acf67c Binary files /dev/null and b/public/terrain/17/214643/88483.terrain differ diff --git a/public/terrain/17/214643/88484.terrain b/public/terrain/17/214643/88484.terrain new file mode 100644 index 000000000..f597d5ba1 Binary files /dev/null and b/public/terrain/17/214643/88484.terrain differ diff --git a/public/terrain/17/214643/88485.terrain b/public/terrain/17/214643/88485.terrain new file mode 100644 index 000000000..4432d0838 Binary files /dev/null and b/public/terrain/17/214643/88485.terrain differ diff --git a/public/terrain/17/214643/88486.terrain b/public/terrain/17/214643/88486.terrain new file mode 100644 index 000000000..d5cfc51cd Binary files /dev/null and b/public/terrain/17/214643/88486.terrain differ diff --git a/public/terrain/17/214643/88487.terrain b/public/terrain/17/214643/88487.terrain new file mode 100644 index 000000000..598db1751 Binary files /dev/null and b/public/terrain/17/214643/88487.terrain differ diff --git a/public/terrain/17/214643/88488.terrain b/public/terrain/17/214643/88488.terrain new file mode 100644 index 000000000..3cbc5b1d5 Binary files /dev/null and b/public/terrain/17/214643/88488.terrain differ diff --git a/public/terrain/17/214643/88489.terrain b/public/terrain/17/214643/88489.terrain new file mode 100644 index 000000000..ec51b2f1f Binary files /dev/null and b/public/terrain/17/214643/88489.terrain differ diff --git a/public/terrain/17/214643/88490.terrain b/public/terrain/17/214643/88490.terrain new file mode 100644 index 000000000..223ea8a3b Binary files /dev/null and b/public/terrain/17/214643/88490.terrain differ diff --git a/public/terrain/17/214643/88491.terrain b/public/terrain/17/214643/88491.terrain new file mode 100644 index 000000000..23a831713 Binary files /dev/null and b/public/terrain/17/214643/88491.terrain differ diff --git a/public/terrain/17/214643/88492.terrain b/public/terrain/17/214643/88492.terrain new file mode 100644 index 000000000..76c93b50e Binary files /dev/null and b/public/terrain/17/214643/88492.terrain differ diff --git a/public/terrain/17/214643/88493.terrain b/public/terrain/17/214643/88493.terrain new file mode 100644 index 000000000..0c7385c35 Binary files /dev/null and b/public/terrain/17/214643/88493.terrain differ diff --git a/public/terrain/17/214643/88494.terrain b/public/terrain/17/214643/88494.terrain new file mode 100644 index 000000000..84fa166e9 Binary files /dev/null and b/public/terrain/17/214643/88494.terrain differ diff --git a/public/terrain/17/214643/88495.terrain b/public/terrain/17/214643/88495.terrain new file mode 100644 index 000000000..7f98c8436 Binary files /dev/null and b/public/terrain/17/214643/88495.terrain differ diff --git a/public/terrain/17/214643/88496.terrain b/public/terrain/17/214643/88496.terrain new file mode 100644 index 000000000..673b2b61a Binary files /dev/null and b/public/terrain/17/214643/88496.terrain differ diff --git a/public/terrain/17/214643/88497.terrain b/public/terrain/17/214643/88497.terrain new file mode 100644 index 000000000..f6b7832fc Binary files /dev/null and b/public/terrain/17/214643/88497.terrain differ diff --git a/public/terrain/17/214643/88498.terrain b/public/terrain/17/214643/88498.terrain new file mode 100644 index 000000000..fe96d0416 Binary files /dev/null and b/public/terrain/17/214643/88498.terrain differ diff --git a/public/terrain/17/214643/88499.terrain b/public/terrain/17/214643/88499.terrain new file mode 100644 index 000000000..26e995d12 Binary files /dev/null and b/public/terrain/17/214643/88499.terrain differ diff --git a/public/terrain/17/214643/88500.terrain b/public/terrain/17/214643/88500.terrain new file mode 100644 index 000000000..903b9c743 Binary files /dev/null and b/public/terrain/17/214643/88500.terrain differ diff --git a/public/terrain/17/214643/88501.terrain b/public/terrain/17/214643/88501.terrain new file mode 100644 index 000000000..aed2a4f24 Binary files /dev/null and b/public/terrain/17/214643/88501.terrain differ diff --git a/public/terrain/17/214643/88502.terrain b/public/terrain/17/214643/88502.terrain new file mode 100644 index 000000000..75e749df3 Binary files /dev/null and b/public/terrain/17/214643/88502.terrain differ diff --git a/public/terrain/17/214643/88503.terrain b/public/terrain/17/214643/88503.terrain new file mode 100644 index 000000000..c3f805041 Binary files /dev/null and b/public/terrain/17/214643/88503.terrain differ diff --git a/public/terrain/17/214643/88504.terrain b/public/terrain/17/214643/88504.terrain new file mode 100644 index 000000000..6a2b39ebd Binary files /dev/null and b/public/terrain/17/214643/88504.terrain differ diff --git a/public/terrain/17/214643/88505.terrain b/public/terrain/17/214643/88505.terrain new file mode 100644 index 000000000..1fec99573 Binary files /dev/null and b/public/terrain/17/214643/88505.terrain differ diff --git a/public/terrain/17/214643/88506.terrain b/public/terrain/17/214643/88506.terrain new file mode 100644 index 000000000..f9574c596 Binary files /dev/null and b/public/terrain/17/214643/88506.terrain differ diff --git a/public/terrain/17/214643/88507.terrain b/public/terrain/17/214643/88507.terrain new file mode 100644 index 000000000..84d1547d6 Binary files /dev/null and b/public/terrain/17/214643/88507.terrain differ diff --git a/public/terrain/17/214643/88508.terrain b/public/terrain/17/214643/88508.terrain new file mode 100644 index 000000000..41ae33fb3 Binary files /dev/null and b/public/terrain/17/214643/88508.terrain differ diff --git a/public/terrain/17/214643/88509.terrain b/public/terrain/17/214643/88509.terrain new file mode 100644 index 000000000..5e02c12e2 Binary files /dev/null and b/public/terrain/17/214643/88509.terrain differ diff --git a/public/terrain/17/214643/88510.terrain b/public/terrain/17/214643/88510.terrain new file mode 100644 index 000000000..0c3d478c2 Binary files /dev/null and b/public/terrain/17/214643/88510.terrain differ diff --git a/public/terrain/17/214643/88511.terrain b/public/terrain/17/214643/88511.terrain new file mode 100644 index 000000000..39a6b72f0 Binary files /dev/null and b/public/terrain/17/214643/88511.terrain differ diff --git a/public/terrain/17/214643/88512.terrain b/public/terrain/17/214643/88512.terrain new file mode 100644 index 000000000..0cb7af435 Binary files /dev/null and b/public/terrain/17/214643/88512.terrain differ diff --git a/public/terrain/17/214643/88513.terrain b/public/terrain/17/214643/88513.terrain new file mode 100644 index 000000000..c14d29565 Binary files /dev/null and b/public/terrain/17/214643/88513.terrain differ diff --git a/public/terrain/17/214643/88514.terrain b/public/terrain/17/214643/88514.terrain new file mode 100644 index 000000000..07b9e7b1b Binary files /dev/null and b/public/terrain/17/214643/88514.terrain differ diff --git a/public/terrain/17/214644/88435.terrain b/public/terrain/17/214644/88435.terrain new file mode 100644 index 000000000..74364041a Binary files /dev/null and b/public/terrain/17/214644/88435.terrain differ diff --git a/public/terrain/17/214644/88436.terrain b/public/terrain/17/214644/88436.terrain new file mode 100644 index 000000000..c648842fb Binary files /dev/null and b/public/terrain/17/214644/88436.terrain differ diff --git a/public/terrain/17/214644/88437.terrain b/public/terrain/17/214644/88437.terrain new file mode 100644 index 000000000..84d6fefa3 Binary files /dev/null and b/public/terrain/17/214644/88437.terrain differ diff --git a/public/terrain/17/214644/88438.terrain b/public/terrain/17/214644/88438.terrain new file mode 100644 index 000000000..fb134104b Binary files /dev/null and b/public/terrain/17/214644/88438.terrain differ diff --git a/public/terrain/17/214644/88439.terrain b/public/terrain/17/214644/88439.terrain new file mode 100644 index 000000000..bc38d9057 Binary files /dev/null and b/public/terrain/17/214644/88439.terrain differ diff --git a/public/terrain/17/214644/88440.terrain b/public/terrain/17/214644/88440.terrain new file mode 100644 index 000000000..86a8d4f37 Binary files /dev/null and b/public/terrain/17/214644/88440.terrain differ diff --git a/public/terrain/17/214644/88441.terrain b/public/terrain/17/214644/88441.terrain new file mode 100644 index 000000000..8cccd425c Binary files /dev/null and b/public/terrain/17/214644/88441.terrain differ diff --git a/public/terrain/17/214644/88442.terrain b/public/terrain/17/214644/88442.terrain new file mode 100644 index 000000000..a7cfd2f11 Binary files /dev/null and b/public/terrain/17/214644/88442.terrain differ diff --git a/public/terrain/17/214644/88443.terrain b/public/terrain/17/214644/88443.terrain new file mode 100644 index 000000000..f9f09d347 Binary files /dev/null and b/public/terrain/17/214644/88443.terrain differ diff --git a/public/terrain/17/214644/88444.terrain b/public/terrain/17/214644/88444.terrain new file mode 100644 index 000000000..67281f601 Binary files /dev/null and b/public/terrain/17/214644/88444.terrain differ diff --git a/public/terrain/17/214644/88445.terrain b/public/terrain/17/214644/88445.terrain new file mode 100644 index 000000000..c1861ab89 Binary files /dev/null and b/public/terrain/17/214644/88445.terrain differ diff --git a/public/terrain/17/214644/88446.terrain b/public/terrain/17/214644/88446.terrain new file mode 100644 index 000000000..b42e080df Binary files /dev/null and b/public/terrain/17/214644/88446.terrain differ diff --git a/public/terrain/17/214644/88447.terrain b/public/terrain/17/214644/88447.terrain new file mode 100644 index 000000000..c2e404973 Binary files /dev/null and b/public/terrain/17/214644/88447.terrain differ diff --git a/public/terrain/17/214644/88448.terrain b/public/terrain/17/214644/88448.terrain new file mode 100644 index 000000000..5fdc326e5 Binary files /dev/null and b/public/terrain/17/214644/88448.terrain differ diff --git a/public/terrain/17/214644/88449.terrain b/public/terrain/17/214644/88449.terrain new file mode 100644 index 000000000..8d2402e29 Binary files /dev/null and b/public/terrain/17/214644/88449.terrain differ diff --git a/public/terrain/17/214644/88450.terrain b/public/terrain/17/214644/88450.terrain new file mode 100644 index 000000000..b89fa6fe3 Binary files /dev/null and b/public/terrain/17/214644/88450.terrain differ diff --git a/public/terrain/17/214644/88451.terrain b/public/terrain/17/214644/88451.terrain new file mode 100644 index 000000000..f00e06f5a Binary files /dev/null and b/public/terrain/17/214644/88451.terrain differ diff --git a/public/terrain/17/214644/88452.terrain b/public/terrain/17/214644/88452.terrain new file mode 100644 index 000000000..cb225e4fc Binary files /dev/null and b/public/terrain/17/214644/88452.terrain differ diff --git a/public/terrain/17/214644/88453.terrain b/public/terrain/17/214644/88453.terrain new file mode 100644 index 000000000..3602b1bcb Binary files /dev/null and b/public/terrain/17/214644/88453.terrain differ diff --git a/public/terrain/17/214644/88454.terrain b/public/terrain/17/214644/88454.terrain new file mode 100644 index 000000000..dda9e6f66 Binary files /dev/null and b/public/terrain/17/214644/88454.terrain differ diff --git a/public/terrain/17/214644/88455.terrain b/public/terrain/17/214644/88455.terrain new file mode 100644 index 000000000..6ebe2ab29 Binary files /dev/null and b/public/terrain/17/214644/88455.terrain differ diff --git a/public/terrain/17/214644/88456.terrain b/public/terrain/17/214644/88456.terrain new file mode 100644 index 000000000..0209bd56d Binary files /dev/null and b/public/terrain/17/214644/88456.terrain differ diff --git a/public/terrain/17/214644/88457.terrain b/public/terrain/17/214644/88457.terrain new file mode 100644 index 000000000..1b98bd1bb Binary files /dev/null and b/public/terrain/17/214644/88457.terrain differ diff --git a/public/terrain/17/214644/88458.terrain b/public/terrain/17/214644/88458.terrain new file mode 100644 index 000000000..b2c6844c4 Binary files /dev/null and b/public/terrain/17/214644/88458.terrain differ diff --git a/public/terrain/17/214644/88459.terrain b/public/terrain/17/214644/88459.terrain new file mode 100644 index 000000000..a4d4880c5 Binary files /dev/null and b/public/terrain/17/214644/88459.terrain differ diff --git a/public/terrain/17/214644/88460.terrain b/public/terrain/17/214644/88460.terrain new file mode 100644 index 000000000..c869b31f6 Binary files /dev/null and b/public/terrain/17/214644/88460.terrain differ diff --git a/public/terrain/17/214644/88461.terrain b/public/terrain/17/214644/88461.terrain new file mode 100644 index 000000000..cadf9dcce Binary files /dev/null and b/public/terrain/17/214644/88461.terrain differ diff --git a/public/terrain/17/214644/88462.terrain b/public/terrain/17/214644/88462.terrain new file mode 100644 index 000000000..ce902f49f Binary files /dev/null and b/public/terrain/17/214644/88462.terrain differ diff --git a/public/terrain/17/214644/88463.terrain b/public/terrain/17/214644/88463.terrain new file mode 100644 index 000000000..c1cc41cf0 Binary files /dev/null and b/public/terrain/17/214644/88463.terrain differ diff --git a/public/terrain/17/214644/88464.terrain b/public/terrain/17/214644/88464.terrain new file mode 100644 index 000000000..a80a4e6b9 Binary files /dev/null and b/public/terrain/17/214644/88464.terrain differ diff --git a/public/terrain/17/214644/88465.terrain b/public/terrain/17/214644/88465.terrain new file mode 100644 index 000000000..d9e2429b1 Binary files /dev/null and b/public/terrain/17/214644/88465.terrain differ diff --git a/public/terrain/17/214644/88466.terrain b/public/terrain/17/214644/88466.terrain new file mode 100644 index 000000000..71c35f970 Binary files /dev/null and b/public/terrain/17/214644/88466.terrain differ diff --git a/public/terrain/17/214644/88467.terrain b/public/terrain/17/214644/88467.terrain new file mode 100644 index 000000000..89b20d71d Binary files /dev/null and b/public/terrain/17/214644/88467.terrain differ diff --git a/public/terrain/17/214644/88468.terrain b/public/terrain/17/214644/88468.terrain new file mode 100644 index 000000000..91c7c81e0 Binary files /dev/null and b/public/terrain/17/214644/88468.terrain differ diff --git a/public/terrain/17/214644/88469.terrain b/public/terrain/17/214644/88469.terrain new file mode 100644 index 000000000..6c7e669c5 Binary files /dev/null and b/public/terrain/17/214644/88469.terrain differ diff --git a/public/terrain/17/214644/88470.terrain b/public/terrain/17/214644/88470.terrain new file mode 100644 index 000000000..fb0786ae8 Binary files /dev/null and b/public/terrain/17/214644/88470.terrain differ diff --git a/public/terrain/17/214644/88471.terrain b/public/terrain/17/214644/88471.terrain new file mode 100644 index 000000000..a4dfdbd55 Binary files /dev/null and b/public/terrain/17/214644/88471.terrain differ diff --git a/public/terrain/17/214644/88472.terrain b/public/terrain/17/214644/88472.terrain new file mode 100644 index 000000000..b7c901358 Binary files /dev/null and b/public/terrain/17/214644/88472.terrain differ diff --git a/public/terrain/17/214644/88473.terrain b/public/terrain/17/214644/88473.terrain new file mode 100644 index 000000000..15d59a3c2 Binary files /dev/null and b/public/terrain/17/214644/88473.terrain differ diff --git a/public/terrain/17/214644/88474.terrain b/public/terrain/17/214644/88474.terrain new file mode 100644 index 000000000..3f5b6335d Binary files /dev/null and b/public/terrain/17/214644/88474.terrain differ diff --git a/public/terrain/17/214644/88475.terrain b/public/terrain/17/214644/88475.terrain new file mode 100644 index 000000000..fe251b794 Binary files /dev/null and b/public/terrain/17/214644/88475.terrain differ diff --git a/public/terrain/17/214644/88476.terrain b/public/terrain/17/214644/88476.terrain new file mode 100644 index 000000000..198944430 Binary files /dev/null and b/public/terrain/17/214644/88476.terrain differ diff --git a/public/terrain/17/214644/88477.terrain b/public/terrain/17/214644/88477.terrain new file mode 100644 index 000000000..db4cb2422 Binary files /dev/null and b/public/terrain/17/214644/88477.terrain differ diff --git a/public/terrain/17/214644/88478.terrain b/public/terrain/17/214644/88478.terrain new file mode 100644 index 000000000..3edaed2ba Binary files /dev/null and b/public/terrain/17/214644/88478.terrain differ diff --git a/public/terrain/17/214644/88479.terrain b/public/terrain/17/214644/88479.terrain new file mode 100644 index 000000000..844ef56e1 Binary files /dev/null and b/public/terrain/17/214644/88479.terrain differ diff --git a/public/terrain/17/214644/88480.terrain b/public/terrain/17/214644/88480.terrain new file mode 100644 index 000000000..75b4901ec Binary files /dev/null and b/public/terrain/17/214644/88480.terrain differ diff --git a/public/terrain/17/214644/88481.terrain b/public/terrain/17/214644/88481.terrain new file mode 100644 index 000000000..be80aa607 Binary files /dev/null and b/public/terrain/17/214644/88481.terrain differ diff --git a/public/terrain/17/214644/88482.terrain b/public/terrain/17/214644/88482.terrain new file mode 100644 index 000000000..e8bf02527 Binary files /dev/null and b/public/terrain/17/214644/88482.terrain differ diff --git a/public/terrain/17/214644/88483.terrain b/public/terrain/17/214644/88483.terrain new file mode 100644 index 000000000..a4c52afe6 Binary files /dev/null and b/public/terrain/17/214644/88483.terrain differ diff --git a/public/terrain/17/214644/88484.terrain b/public/terrain/17/214644/88484.terrain new file mode 100644 index 000000000..636cbe69a Binary files /dev/null and b/public/terrain/17/214644/88484.terrain differ diff --git a/public/terrain/17/214644/88485.terrain b/public/terrain/17/214644/88485.terrain new file mode 100644 index 000000000..4b1cdf924 Binary files /dev/null and b/public/terrain/17/214644/88485.terrain differ diff --git a/public/terrain/17/214644/88486.terrain b/public/terrain/17/214644/88486.terrain new file mode 100644 index 000000000..624c99e77 Binary files /dev/null and b/public/terrain/17/214644/88486.terrain differ diff --git a/public/terrain/17/214644/88487.terrain b/public/terrain/17/214644/88487.terrain new file mode 100644 index 000000000..56faa6bb1 Binary files /dev/null and b/public/terrain/17/214644/88487.terrain differ diff --git a/public/terrain/17/214644/88488.terrain b/public/terrain/17/214644/88488.terrain new file mode 100644 index 000000000..aa08b95d8 Binary files /dev/null and b/public/terrain/17/214644/88488.terrain differ diff --git a/public/terrain/17/214644/88489.terrain b/public/terrain/17/214644/88489.terrain new file mode 100644 index 000000000..950786586 Binary files /dev/null and b/public/terrain/17/214644/88489.terrain differ diff --git a/public/terrain/17/214644/88490.terrain b/public/terrain/17/214644/88490.terrain new file mode 100644 index 000000000..45ec6a1e5 Binary files /dev/null and b/public/terrain/17/214644/88490.terrain differ diff --git a/public/terrain/17/214644/88491.terrain b/public/terrain/17/214644/88491.terrain new file mode 100644 index 000000000..05ae8d712 Binary files /dev/null and b/public/terrain/17/214644/88491.terrain differ diff --git a/public/terrain/17/214644/88492.terrain b/public/terrain/17/214644/88492.terrain new file mode 100644 index 000000000..0c6b643a8 Binary files /dev/null and b/public/terrain/17/214644/88492.terrain differ diff --git a/public/terrain/17/214644/88493.terrain b/public/terrain/17/214644/88493.terrain new file mode 100644 index 000000000..340c8e492 Binary files /dev/null and b/public/terrain/17/214644/88493.terrain differ diff --git a/public/terrain/17/214644/88494.terrain b/public/terrain/17/214644/88494.terrain new file mode 100644 index 000000000..4c86e283a Binary files /dev/null and b/public/terrain/17/214644/88494.terrain differ diff --git a/public/terrain/17/214644/88495.terrain b/public/terrain/17/214644/88495.terrain new file mode 100644 index 000000000..3d6ddbe94 Binary files /dev/null and b/public/terrain/17/214644/88495.terrain differ diff --git a/public/terrain/17/214644/88496.terrain b/public/terrain/17/214644/88496.terrain new file mode 100644 index 000000000..df8750533 Binary files /dev/null and b/public/terrain/17/214644/88496.terrain differ diff --git a/public/terrain/17/214644/88497.terrain b/public/terrain/17/214644/88497.terrain new file mode 100644 index 000000000..c8c0fab15 Binary files /dev/null and b/public/terrain/17/214644/88497.terrain differ diff --git a/public/terrain/17/214644/88498.terrain b/public/terrain/17/214644/88498.terrain new file mode 100644 index 000000000..136a67a38 Binary files /dev/null and b/public/terrain/17/214644/88498.terrain differ diff --git a/public/terrain/17/214644/88499.terrain b/public/terrain/17/214644/88499.terrain new file mode 100644 index 000000000..637c49c95 Binary files /dev/null and b/public/terrain/17/214644/88499.terrain differ diff --git a/public/terrain/17/214644/88500.terrain b/public/terrain/17/214644/88500.terrain new file mode 100644 index 000000000..aed6427c3 Binary files /dev/null and b/public/terrain/17/214644/88500.terrain differ diff --git a/public/terrain/17/214644/88501.terrain b/public/terrain/17/214644/88501.terrain new file mode 100644 index 000000000..a52e1e953 Binary files /dev/null and b/public/terrain/17/214644/88501.terrain differ diff --git a/public/terrain/17/214644/88502.terrain b/public/terrain/17/214644/88502.terrain new file mode 100644 index 000000000..6331e4a80 Binary files /dev/null and b/public/terrain/17/214644/88502.terrain differ diff --git a/public/terrain/17/214644/88503.terrain b/public/terrain/17/214644/88503.terrain new file mode 100644 index 000000000..7a3cd81eb Binary files /dev/null and b/public/terrain/17/214644/88503.terrain differ diff --git a/public/terrain/17/214644/88504.terrain b/public/terrain/17/214644/88504.terrain new file mode 100644 index 000000000..0d79f37b9 Binary files /dev/null and b/public/terrain/17/214644/88504.terrain differ diff --git a/public/terrain/17/214644/88505.terrain b/public/terrain/17/214644/88505.terrain new file mode 100644 index 000000000..6d8177d9c Binary files /dev/null and b/public/terrain/17/214644/88505.terrain differ diff --git a/public/terrain/17/214644/88506.terrain b/public/terrain/17/214644/88506.terrain new file mode 100644 index 000000000..35e7cfe9c Binary files /dev/null and b/public/terrain/17/214644/88506.terrain differ diff --git a/public/terrain/17/214644/88507.terrain b/public/terrain/17/214644/88507.terrain new file mode 100644 index 000000000..7235a3432 Binary files /dev/null and b/public/terrain/17/214644/88507.terrain differ diff --git a/public/terrain/17/214644/88508.terrain b/public/terrain/17/214644/88508.terrain new file mode 100644 index 000000000..68b357154 Binary files /dev/null and b/public/terrain/17/214644/88508.terrain differ diff --git a/public/terrain/17/214644/88509.terrain b/public/terrain/17/214644/88509.terrain new file mode 100644 index 000000000..110c27064 Binary files /dev/null and b/public/terrain/17/214644/88509.terrain differ diff --git a/public/terrain/17/214644/88510.terrain b/public/terrain/17/214644/88510.terrain new file mode 100644 index 000000000..ea44f0803 Binary files /dev/null and b/public/terrain/17/214644/88510.terrain differ diff --git a/public/terrain/17/214644/88511.terrain b/public/terrain/17/214644/88511.terrain new file mode 100644 index 000000000..f51264e31 Binary files /dev/null and b/public/terrain/17/214644/88511.terrain differ diff --git a/public/terrain/17/214644/88512.terrain b/public/terrain/17/214644/88512.terrain new file mode 100644 index 000000000..d2fd23937 Binary files /dev/null and b/public/terrain/17/214644/88512.terrain differ diff --git a/public/terrain/17/214644/88513.terrain b/public/terrain/17/214644/88513.terrain new file mode 100644 index 000000000..88a151004 Binary files /dev/null and b/public/terrain/17/214644/88513.terrain differ diff --git a/public/terrain/17/214644/88514.terrain b/public/terrain/17/214644/88514.terrain new file mode 100644 index 000000000..9dea10a2d Binary files /dev/null and b/public/terrain/17/214644/88514.terrain differ diff --git a/public/terrain/17/214645/88435.terrain b/public/terrain/17/214645/88435.terrain new file mode 100644 index 000000000..3237d21a1 Binary files /dev/null and b/public/terrain/17/214645/88435.terrain differ diff --git a/public/terrain/17/214645/88436.terrain b/public/terrain/17/214645/88436.terrain new file mode 100644 index 000000000..6024b6a38 Binary files /dev/null and b/public/terrain/17/214645/88436.terrain differ diff --git a/public/terrain/17/214645/88437.terrain b/public/terrain/17/214645/88437.terrain new file mode 100644 index 000000000..38b602e1b Binary files /dev/null and b/public/terrain/17/214645/88437.terrain differ diff --git a/public/terrain/17/214645/88438.terrain b/public/terrain/17/214645/88438.terrain new file mode 100644 index 000000000..9e2936d3c Binary files /dev/null and b/public/terrain/17/214645/88438.terrain differ diff --git a/public/terrain/17/214645/88439.terrain b/public/terrain/17/214645/88439.terrain new file mode 100644 index 000000000..d9311d309 Binary files /dev/null and b/public/terrain/17/214645/88439.terrain differ diff --git a/public/terrain/17/214645/88440.terrain b/public/terrain/17/214645/88440.terrain new file mode 100644 index 000000000..a4245c9af Binary files /dev/null and b/public/terrain/17/214645/88440.terrain differ diff --git a/public/terrain/17/214645/88441.terrain b/public/terrain/17/214645/88441.terrain new file mode 100644 index 000000000..ad1b521b4 Binary files /dev/null and b/public/terrain/17/214645/88441.terrain differ diff --git a/public/terrain/17/214645/88442.terrain b/public/terrain/17/214645/88442.terrain new file mode 100644 index 000000000..ead773f93 Binary files /dev/null and b/public/terrain/17/214645/88442.terrain differ diff --git a/public/terrain/17/214645/88443.terrain b/public/terrain/17/214645/88443.terrain new file mode 100644 index 000000000..b80bbcc4f Binary files /dev/null and b/public/terrain/17/214645/88443.terrain differ diff --git a/public/terrain/17/214645/88444.terrain b/public/terrain/17/214645/88444.terrain new file mode 100644 index 000000000..a3706c929 Binary files /dev/null and b/public/terrain/17/214645/88444.terrain differ diff --git a/public/terrain/17/214645/88445.terrain b/public/terrain/17/214645/88445.terrain new file mode 100644 index 000000000..718f15557 Binary files /dev/null and b/public/terrain/17/214645/88445.terrain differ diff --git a/public/terrain/17/214645/88446.terrain b/public/terrain/17/214645/88446.terrain new file mode 100644 index 000000000..ae75c3c32 Binary files /dev/null and b/public/terrain/17/214645/88446.terrain differ diff --git a/public/terrain/17/214645/88447.terrain b/public/terrain/17/214645/88447.terrain new file mode 100644 index 000000000..ff9bc4dfc Binary files /dev/null and b/public/terrain/17/214645/88447.terrain differ diff --git a/public/terrain/17/214645/88448.terrain b/public/terrain/17/214645/88448.terrain new file mode 100644 index 000000000..e08990c1a Binary files /dev/null and b/public/terrain/17/214645/88448.terrain differ diff --git a/public/terrain/17/214645/88449.terrain b/public/terrain/17/214645/88449.terrain new file mode 100644 index 000000000..d822192f4 Binary files /dev/null and b/public/terrain/17/214645/88449.terrain differ diff --git a/public/terrain/17/214645/88450.terrain b/public/terrain/17/214645/88450.terrain new file mode 100644 index 000000000..3f9e51319 Binary files /dev/null and b/public/terrain/17/214645/88450.terrain differ diff --git a/public/terrain/17/214645/88451.terrain b/public/terrain/17/214645/88451.terrain new file mode 100644 index 000000000..0ca918fb6 Binary files /dev/null and b/public/terrain/17/214645/88451.terrain differ diff --git a/public/terrain/17/214645/88452.terrain b/public/terrain/17/214645/88452.terrain new file mode 100644 index 000000000..4ca86553e Binary files /dev/null and b/public/terrain/17/214645/88452.terrain differ diff --git a/public/terrain/17/214645/88453.terrain b/public/terrain/17/214645/88453.terrain new file mode 100644 index 000000000..b0c590943 Binary files /dev/null and b/public/terrain/17/214645/88453.terrain differ diff --git a/public/terrain/17/214645/88454.terrain b/public/terrain/17/214645/88454.terrain new file mode 100644 index 000000000..38fda2faa Binary files /dev/null and b/public/terrain/17/214645/88454.terrain differ diff --git a/public/terrain/17/214645/88455.terrain b/public/terrain/17/214645/88455.terrain new file mode 100644 index 000000000..cd102b51b Binary files /dev/null and b/public/terrain/17/214645/88455.terrain differ diff --git a/public/terrain/17/214645/88456.terrain b/public/terrain/17/214645/88456.terrain new file mode 100644 index 000000000..3c7153fbe Binary files /dev/null and b/public/terrain/17/214645/88456.terrain differ diff --git a/public/terrain/17/214645/88457.terrain b/public/terrain/17/214645/88457.terrain new file mode 100644 index 000000000..e2c7a6b78 Binary files /dev/null and b/public/terrain/17/214645/88457.terrain differ diff --git a/public/terrain/17/214645/88458.terrain b/public/terrain/17/214645/88458.terrain new file mode 100644 index 000000000..e9437a075 Binary files /dev/null and b/public/terrain/17/214645/88458.terrain differ diff --git a/public/terrain/17/214645/88459.terrain b/public/terrain/17/214645/88459.terrain new file mode 100644 index 000000000..0f583d934 Binary files /dev/null and b/public/terrain/17/214645/88459.terrain differ diff --git a/public/terrain/17/214645/88460.terrain b/public/terrain/17/214645/88460.terrain new file mode 100644 index 000000000..93e30f34b Binary files /dev/null and b/public/terrain/17/214645/88460.terrain differ diff --git a/public/terrain/17/214645/88461.terrain b/public/terrain/17/214645/88461.terrain new file mode 100644 index 000000000..6a4366b13 Binary files /dev/null and b/public/terrain/17/214645/88461.terrain differ diff --git a/public/terrain/17/214645/88462.terrain b/public/terrain/17/214645/88462.terrain new file mode 100644 index 000000000..6fbf09d13 Binary files /dev/null and b/public/terrain/17/214645/88462.terrain differ diff --git a/public/terrain/17/214645/88463.terrain b/public/terrain/17/214645/88463.terrain new file mode 100644 index 000000000..d1b997ab3 Binary files /dev/null and b/public/terrain/17/214645/88463.terrain differ diff --git a/public/terrain/17/214645/88464.terrain b/public/terrain/17/214645/88464.terrain new file mode 100644 index 000000000..a97476a2b Binary files /dev/null and b/public/terrain/17/214645/88464.terrain differ diff --git a/public/terrain/17/214645/88465.terrain b/public/terrain/17/214645/88465.terrain new file mode 100644 index 000000000..56945d59c Binary files /dev/null and b/public/terrain/17/214645/88465.terrain differ diff --git a/public/terrain/17/214645/88466.terrain b/public/terrain/17/214645/88466.terrain new file mode 100644 index 000000000..4723fb998 Binary files /dev/null and b/public/terrain/17/214645/88466.terrain differ diff --git a/public/terrain/17/214645/88467.terrain b/public/terrain/17/214645/88467.terrain new file mode 100644 index 000000000..7ac29e0e3 Binary files /dev/null and b/public/terrain/17/214645/88467.terrain differ diff --git a/public/terrain/17/214645/88468.terrain b/public/terrain/17/214645/88468.terrain new file mode 100644 index 000000000..541675a6d Binary files /dev/null and b/public/terrain/17/214645/88468.terrain differ diff --git a/public/terrain/17/214645/88469.terrain b/public/terrain/17/214645/88469.terrain new file mode 100644 index 000000000..b730326d2 Binary files /dev/null and b/public/terrain/17/214645/88469.terrain differ diff --git a/public/terrain/17/214645/88470.terrain b/public/terrain/17/214645/88470.terrain new file mode 100644 index 000000000..f76883c6a Binary files /dev/null and b/public/terrain/17/214645/88470.terrain differ diff --git a/public/terrain/17/214645/88471.terrain b/public/terrain/17/214645/88471.terrain new file mode 100644 index 000000000..7550d02bf Binary files /dev/null and b/public/terrain/17/214645/88471.terrain differ diff --git a/public/terrain/17/214645/88472.terrain b/public/terrain/17/214645/88472.terrain new file mode 100644 index 000000000..0457d2287 Binary files /dev/null and b/public/terrain/17/214645/88472.terrain differ diff --git a/public/terrain/17/214645/88473.terrain b/public/terrain/17/214645/88473.terrain new file mode 100644 index 000000000..f6e92b3d5 Binary files /dev/null and b/public/terrain/17/214645/88473.terrain differ diff --git a/public/terrain/17/214645/88474.terrain b/public/terrain/17/214645/88474.terrain new file mode 100644 index 000000000..baa5f272e Binary files /dev/null and b/public/terrain/17/214645/88474.terrain differ diff --git a/public/terrain/17/214645/88475.terrain b/public/terrain/17/214645/88475.terrain new file mode 100644 index 000000000..c8988c9c8 Binary files /dev/null and b/public/terrain/17/214645/88475.terrain differ diff --git a/public/terrain/17/214645/88476.terrain b/public/terrain/17/214645/88476.terrain new file mode 100644 index 000000000..7856db83b Binary files /dev/null and b/public/terrain/17/214645/88476.terrain differ diff --git a/public/terrain/17/214645/88477.terrain b/public/terrain/17/214645/88477.terrain new file mode 100644 index 000000000..3537058fa Binary files /dev/null and b/public/terrain/17/214645/88477.terrain differ diff --git a/public/terrain/17/214645/88478.terrain b/public/terrain/17/214645/88478.terrain new file mode 100644 index 000000000..374d5aca7 Binary files /dev/null and b/public/terrain/17/214645/88478.terrain differ diff --git a/public/terrain/17/214645/88479.terrain b/public/terrain/17/214645/88479.terrain new file mode 100644 index 000000000..30c3f58cd Binary files /dev/null and b/public/terrain/17/214645/88479.terrain differ diff --git a/public/terrain/17/214645/88480.terrain b/public/terrain/17/214645/88480.terrain new file mode 100644 index 000000000..662b8f933 Binary files /dev/null and b/public/terrain/17/214645/88480.terrain differ diff --git a/public/terrain/17/214645/88481.terrain b/public/terrain/17/214645/88481.terrain new file mode 100644 index 000000000..472d94676 Binary files /dev/null and b/public/terrain/17/214645/88481.terrain differ diff --git a/public/terrain/17/214645/88482.terrain b/public/terrain/17/214645/88482.terrain new file mode 100644 index 000000000..851f45991 Binary files /dev/null and b/public/terrain/17/214645/88482.terrain differ diff --git a/public/terrain/17/214645/88483.terrain b/public/terrain/17/214645/88483.terrain new file mode 100644 index 000000000..c694b6a92 Binary files /dev/null and b/public/terrain/17/214645/88483.terrain differ diff --git a/public/terrain/17/214645/88484.terrain b/public/terrain/17/214645/88484.terrain new file mode 100644 index 000000000..d7caec283 Binary files /dev/null and b/public/terrain/17/214645/88484.terrain differ diff --git a/public/terrain/17/214645/88485.terrain b/public/terrain/17/214645/88485.terrain new file mode 100644 index 000000000..084008d0f Binary files /dev/null and b/public/terrain/17/214645/88485.terrain differ diff --git a/public/terrain/17/214645/88486.terrain b/public/terrain/17/214645/88486.terrain new file mode 100644 index 000000000..b151b2c19 Binary files /dev/null and b/public/terrain/17/214645/88486.terrain differ diff --git a/public/terrain/17/214645/88487.terrain b/public/terrain/17/214645/88487.terrain new file mode 100644 index 000000000..0723c4d2a Binary files /dev/null and b/public/terrain/17/214645/88487.terrain differ diff --git a/public/terrain/17/214645/88488.terrain b/public/terrain/17/214645/88488.terrain new file mode 100644 index 000000000..1db144266 Binary files /dev/null and b/public/terrain/17/214645/88488.terrain differ diff --git a/public/terrain/17/214645/88489.terrain b/public/terrain/17/214645/88489.terrain new file mode 100644 index 000000000..08d1c1fc3 Binary files /dev/null and b/public/terrain/17/214645/88489.terrain differ diff --git a/public/terrain/17/214645/88490.terrain b/public/terrain/17/214645/88490.terrain new file mode 100644 index 000000000..4876e5dec Binary files /dev/null and b/public/terrain/17/214645/88490.terrain differ diff --git a/public/terrain/17/214645/88491.terrain b/public/terrain/17/214645/88491.terrain new file mode 100644 index 000000000..06e672564 Binary files /dev/null and b/public/terrain/17/214645/88491.terrain differ diff --git a/public/terrain/17/214645/88492.terrain b/public/terrain/17/214645/88492.terrain new file mode 100644 index 000000000..fbcdce6df Binary files /dev/null and b/public/terrain/17/214645/88492.terrain differ diff --git a/public/terrain/17/214645/88493.terrain b/public/terrain/17/214645/88493.terrain new file mode 100644 index 000000000..c72780ce2 Binary files /dev/null and b/public/terrain/17/214645/88493.terrain differ diff --git a/public/terrain/17/214645/88494.terrain b/public/terrain/17/214645/88494.terrain new file mode 100644 index 000000000..954ed64cc Binary files /dev/null and b/public/terrain/17/214645/88494.terrain differ diff --git a/public/terrain/17/214645/88495.terrain b/public/terrain/17/214645/88495.terrain new file mode 100644 index 000000000..628d4fd9f Binary files /dev/null and b/public/terrain/17/214645/88495.terrain differ diff --git a/public/terrain/17/214645/88496.terrain b/public/terrain/17/214645/88496.terrain new file mode 100644 index 000000000..af2e19555 Binary files /dev/null and b/public/terrain/17/214645/88496.terrain differ diff --git a/public/terrain/17/214645/88497.terrain b/public/terrain/17/214645/88497.terrain new file mode 100644 index 000000000..8adadda11 Binary files /dev/null and b/public/terrain/17/214645/88497.terrain differ diff --git a/public/terrain/17/214645/88498.terrain b/public/terrain/17/214645/88498.terrain new file mode 100644 index 000000000..cae079ce2 Binary files /dev/null and b/public/terrain/17/214645/88498.terrain differ diff --git a/public/terrain/17/214645/88499.terrain b/public/terrain/17/214645/88499.terrain new file mode 100644 index 000000000..1e2796b8c Binary files /dev/null and b/public/terrain/17/214645/88499.terrain differ diff --git a/public/terrain/17/214645/88500.terrain b/public/terrain/17/214645/88500.terrain new file mode 100644 index 000000000..cf5430e0f Binary files /dev/null and b/public/terrain/17/214645/88500.terrain differ diff --git a/public/terrain/17/214645/88501.terrain b/public/terrain/17/214645/88501.terrain new file mode 100644 index 000000000..1943f5dba Binary files /dev/null and b/public/terrain/17/214645/88501.terrain differ diff --git a/public/terrain/17/214645/88502.terrain b/public/terrain/17/214645/88502.terrain new file mode 100644 index 000000000..77e770470 Binary files /dev/null and b/public/terrain/17/214645/88502.terrain differ diff --git a/public/terrain/17/214645/88503.terrain b/public/terrain/17/214645/88503.terrain new file mode 100644 index 000000000..5cad39a2d Binary files /dev/null and b/public/terrain/17/214645/88503.terrain differ diff --git a/public/terrain/17/214645/88504.terrain b/public/terrain/17/214645/88504.terrain new file mode 100644 index 000000000..ac66230aa Binary files /dev/null and b/public/terrain/17/214645/88504.terrain differ diff --git a/public/terrain/17/214645/88505.terrain b/public/terrain/17/214645/88505.terrain new file mode 100644 index 000000000..e2a41dfd5 Binary files /dev/null and b/public/terrain/17/214645/88505.terrain differ diff --git a/public/terrain/17/214645/88506.terrain b/public/terrain/17/214645/88506.terrain new file mode 100644 index 000000000..46a2051f0 Binary files /dev/null and b/public/terrain/17/214645/88506.terrain differ diff --git a/public/terrain/17/214645/88507.terrain b/public/terrain/17/214645/88507.terrain new file mode 100644 index 000000000..800171667 Binary files /dev/null and b/public/terrain/17/214645/88507.terrain differ diff --git a/public/terrain/17/214645/88508.terrain b/public/terrain/17/214645/88508.terrain new file mode 100644 index 000000000..8c3df8583 Binary files /dev/null and b/public/terrain/17/214645/88508.terrain differ diff --git a/public/terrain/17/214645/88509.terrain b/public/terrain/17/214645/88509.terrain new file mode 100644 index 000000000..db0bbaa77 Binary files /dev/null and b/public/terrain/17/214645/88509.terrain differ diff --git a/public/terrain/17/214645/88510.terrain b/public/terrain/17/214645/88510.terrain new file mode 100644 index 000000000..ff973db0b Binary files /dev/null and b/public/terrain/17/214645/88510.terrain differ diff --git a/public/terrain/17/214645/88511.terrain b/public/terrain/17/214645/88511.terrain new file mode 100644 index 000000000..555187372 Binary files /dev/null and b/public/terrain/17/214645/88511.terrain differ diff --git a/public/terrain/17/214645/88512.terrain b/public/terrain/17/214645/88512.terrain new file mode 100644 index 000000000..58d4d1aa4 Binary files /dev/null and b/public/terrain/17/214645/88512.terrain differ diff --git a/public/terrain/17/214645/88513.terrain b/public/terrain/17/214645/88513.terrain new file mode 100644 index 000000000..52be40020 Binary files /dev/null and b/public/terrain/17/214645/88513.terrain differ diff --git a/public/terrain/17/214645/88514.terrain b/public/terrain/17/214645/88514.terrain new file mode 100644 index 000000000..88eb50b54 Binary files /dev/null and b/public/terrain/17/214645/88514.terrain differ diff --git a/public/terrain/17/214646/88435.terrain b/public/terrain/17/214646/88435.terrain new file mode 100644 index 000000000..906757b1d Binary files /dev/null and b/public/terrain/17/214646/88435.terrain differ diff --git a/public/terrain/17/214646/88436.terrain b/public/terrain/17/214646/88436.terrain new file mode 100644 index 000000000..baf246e83 Binary files /dev/null and b/public/terrain/17/214646/88436.terrain differ diff --git a/public/terrain/17/214646/88437.terrain b/public/terrain/17/214646/88437.terrain new file mode 100644 index 000000000..bb9d639e2 Binary files /dev/null and b/public/terrain/17/214646/88437.terrain differ diff --git a/public/terrain/17/214646/88438.terrain b/public/terrain/17/214646/88438.terrain new file mode 100644 index 000000000..33220169b Binary files /dev/null and b/public/terrain/17/214646/88438.terrain differ diff --git a/public/terrain/17/214646/88439.terrain b/public/terrain/17/214646/88439.terrain new file mode 100644 index 000000000..dc7c799ca Binary files /dev/null and b/public/terrain/17/214646/88439.terrain differ diff --git a/public/terrain/17/214646/88440.terrain b/public/terrain/17/214646/88440.terrain new file mode 100644 index 000000000..e674721a0 Binary files /dev/null and b/public/terrain/17/214646/88440.terrain differ diff --git a/public/terrain/17/214646/88441.terrain b/public/terrain/17/214646/88441.terrain new file mode 100644 index 000000000..3bfcb0f77 Binary files /dev/null and b/public/terrain/17/214646/88441.terrain differ diff --git a/public/terrain/17/214646/88442.terrain b/public/terrain/17/214646/88442.terrain new file mode 100644 index 000000000..28083b85e Binary files /dev/null and b/public/terrain/17/214646/88442.terrain differ diff --git a/public/terrain/17/214646/88443.terrain b/public/terrain/17/214646/88443.terrain new file mode 100644 index 000000000..d4cb2456d Binary files /dev/null and b/public/terrain/17/214646/88443.terrain differ diff --git a/public/terrain/17/214646/88444.terrain b/public/terrain/17/214646/88444.terrain new file mode 100644 index 000000000..c7169d242 Binary files /dev/null and b/public/terrain/17/214646/88444.terrain differ diff --git a/public/terrain/17/214646/88445.terrain b/public/terrain/17/214646/88445.terrain new file mode 100644 index 000000000..f2016e2d3 Binary files /dev/null and b/public/terrain/17/214646/88445.terrain differ diff --git a/public/terrain/17/214646/88446.terrain b/public/terrain/17/214646/88446.terrain new file mode 100644 index 000000000..fae8ca94b Binary files /dev/null and b/public/terrain/17/214646/88446.terrain differ diff --git a/public/terrain/17/214646/88447.terrain b/public/terrain/17/214646/88447.terrain new file mode 100644 index 000000000..291b8fbdb Binary files /dev/null and b/public/terrain/17/214646/88447.terrain differ diff --git a/public/terrain/17/214646/88448.terrain b/public/terrain/17/214646/88448.terrain new file mode 100644 index 000000000..3381baaa8 Binary files /dev/null and b/public/terrain/17/214646/88448.terrain differ diff --git a/public/terrain/17/214646/88449.terrain b/public/terrain/17/214646/88449.terrain new file mode 100644 index 000000000..fa18f50ec Binary files /dev/null and b/public/terrain/17/214646/88449.terrain differ diff --git a/public/terrain/17/214646/88450.terrain b/public/terrain/17/214646/88450.terrain new file mode 100644 index 000000000..ff9c8d326 Binary files /dev/null and b/public/terrain/17/214646/88450.terrain differ diff --git a/public/terrain/17/214646/88451.terrain b/public/terrain/17/214646/88451.terrain new file mode 100644 index 000000000..aa36b30aa Binary files /dev/null and b/public/terrain/17/214646/88451.terrain differ diff --git a/public/terrain/17/214646/88452.terrain b/public/terrain/17/214646/88452.terrain new file mode 100644 index 000000000..da7705c3f Binary files /dev/null and b/public/terrain/17/214646/88452.terrain differ diff --git a/public/terrain/17/214646/88453.terrain b/public/terrain/17/214646/88453.terrain new file mode 100644 index 000000000..c05423878 Binary files /dev/null and b/public/terrain/17/214646/88453.terrain differ diff --git a/public/terrain/17/214646/88454.terrain b/public/terrain/17/214646/88454.terrain new file mode 100644 index 000000000..dcaf91a71 Binary files /dev/null and b/public/terrain/17/214646/88454.terrain differ diff --git a/public/terrain/17/214646/88455.terrain b/public/terrain/17/214646/88455.terrain new file mode 100644 index 000000000..34403ec1e Binary files /dev/null and b/public/terrain/17/214646/88455.terrain differ diff --git a/public/terrain/17/214646/88456.terrain b/public/terrain/17/214646/88456.terrain new file mode 100644 index 000000000..ff5b4ed94 Binary files /dev/null and b/public/terrain/17/214646/88456.terrain differ diff --git a/public/terrain/17/214646/88457.terrain b/public/terrain/17/214646/88457.terrain new file mode 100644 index 000000000..3a3344f3f Binary files /dev/null and b/public/terrain/17/214646/88457.terrain differ diff --git a/public/terrain/17/214646/88458.terrain b/public/terrain/17/214646/88458.terrain new file mode 100644 index 000000000..cace84ca5 Binary files /dev/null and b/public/terrain/17/214646/88458.terrain differ diff --git a/public/terrain/17/214646/88459.terrain b/public/terrain/17/214646/88459.terrain new file mode 100644 index 000000000..4da96c880 Binary files /dev/null and b/public/terrain/17/214646/88459.terrain differ diff --git a/public/terrain/17/214646/88460.terrain b/public/terrain/17/214646/88460.terrain new file mode 100644 index 000000000..a58f04beb Binary files /dev/null and b/public/terrain/17/214646/88460.terrain differ diff --git a/public/terrain/17/214646/88461.terrain b/public/terrain/17/214646/88461.terrain new file mode 100644 index 000000000..e0560a115 Binary files /dev/null and b/public/terrain/17/214646/88461.terrain differ diff --git a/public/terrain/17/214646/88462.terrain b/public/terrain/17/214646/88462.terrain new file mode 100644 index 000000000..7e9fb7db0 Binary files /dev/null and b/public/terrain/17/214646/88462.terrain differ diff --git a/public/terrain/17/214646/88463.terrain b/public/terrain/17/214646/88463.terrain new file mode 100644 index 000000000..03990e829 Binary files /dev/null and b/public/terrain/17/214646/88463.terrain differ diff --git a/public/terrain/17/214646/88464.terrain b/public/terrain/17/214646/88464.terrain new file mode 100644 index 000000000..881fbf51e Binary files /dev/null and b/public/terrain/17/214646/88464.terrain differ diff --git a/public/terrain/17/214646/88465.terrain b/public/terrain/17/214646/88465.terrain new file mode 100644 index 000000000..38d184021 Binary files /dev/null and b/public/terrain/17/214646/88465.terrain differ diff --git a/public/terrain/17/214646/88466.terrain b/public/terrain/17/214646/88466.terrain new file mode 100644 index 000000000..9b02c4d4e Binary files /dev/null and b/public/terrain/17/214646/88466.terrain differ diff --git a/public/terrain/17/214646/88467.terrain b/public/terrain/17/214646/88467.terrain new file mode 100644 index 000000000..7bf1cb7b5 Binary files /dev/null and b/public/terrain/17/214646/88467.terrain differ diff --git a/public/terrain/17/214646/88468.terrain b/public/terrain/17/214646/88468.terrain new file mode 100644 index 000000000..f802f9a73 Binary files /dev/null and b/public/terrain/17/214646/88468.terrain differ diff --git a/public/terrain/17/214646/88469.terrain b/public/terrain/17/214646/88469.terrain new file mode 100644 index 000000000..189908445 Binary files /dev/null and b/public/terrain/17/214646/88469.terrain differ diff --git a/public/terrain/17/214646/88470.terrain b/public/terrain/17/214646/88470.terrain new file mode 100644 index 000000000..34c8b7af0 Binary files /dev/null and b/public/terrain/17/214646/88470.terrain differ diff --git a/public/terrain/17/214646/88471.terrain b/public/terrain/17/214646/88471.terrain new file mode 100644 index 000000000..3c063f67c Binary files /dev/null and b/public/terrain/17/214646/88471.terrain differ diff --git a/public/terrain/17/214646/88472.terrain b/public/terrain/17/214646/88472.terrain new file mode 100644 index 000000000..f4954c679 Binary files /dev/null and b/public/terrain/17/214646/88472.terrain differ diff --git a/public/terrain/17/214646/88473.terrain b/public/terrain/17/214646/88473.terrain new file mode 100644 index 000000000..fa4ea14ee Binary files /dev/null and b/public/terrain/17/214646/88473.terrain differ diff --git a/public/terrain/17/214646/88474.terrain b/public/terrain/17/214646/88474.terrain new file mode 100644 index 000000000..24762c428 Binary files /dev/null and b/public/terrain/17/214646/88474.terrain differ diff --git a/public/terrain/17/214646/88475.terrain b/public/terrain/17/214646/88475.terrain new file mode 100644 index 000000000..f0f412cde Binary files /dev/null and b/public/terrain/17/214646/88475.terrain differ diff --git a/public/terrain/17/214646/88476.terrain b/public/terrain/17/214646/88476.terrain new file mode 100644 index 000000000..816609a70 Binary files /dev/null and b/public/terrain/17/214646/88476.terrain differ diff --git a/public/terrain/17/214646/88477.terrain b/public/terrain/17/214646/88477.terrain new file mode 100644 index 000000000..15f4ef8b4 Binary files /dev/null and b/public/terrain/17/214646/88477.terrain differ diff --git a/public/terrain/17/214646/88478.terrain b/public/terrain/17/214646/88478.terrain new file mode 100644 index 000000000..5bc7d9c1a Binary files /dev/null and b/public/terrain/17/214646/88478.terrain differ diff --git a/public/terrain/17/214646/88479.terrain b/public/terrain/17/214646/88479.terrain new file mode 100644 index 000000000..939e0161c Binary files /dev/null and b/public/terrain/17/214646/88479.terrain differ diff --git a/public/terrain/17/214646/88480.terrain b/public/terrain/17/214646/88480.terrain new file mode 100644 index 000000000..20ca6f243 Binary files /dev/null and b/public/terrain/17/214646/88480.terrain differ diff --git a/public/terrain/17/214646/88481.terrain b/public/terrain/17/214646/88481.terrain new file mode 100644 index 000000000..ef570f0e2 Binary files /dev/null and b/public/terrain/17/214646/88481.terrain differ diff --git a/public/terrain/17/214646/88482.terrain b/public/terrain/17/214646/88482.terrain new file mode 100644 index 000000000..4e506a958 Binary files /dev/null and b/public/terrain/17/214646/88482.terrain differ diff --git a/public/terrain/17/214646/88483.terrain b/public/terrain/17/214646/88483.terrain new file mode 100644 index 000000000..9ff872093 Binary files /dev/null and b/public/terrain/17/214646/88483.terrain differ diff --git a/public/terrain/17/214646/88484.terrain b/public/terrain/17/214646/88484.terrain new file mode 100644 index 000000000..6bc79287e Binary files /dev/null and b/public/terrain/17/214646/88484.terrain differ diff --git a/public/terrain/17/214646/88485.terrain b/public/terrain/17/214646/88485.terrain new file mode 100644 index 000000000..a731bf53e Binary files /dev/null and b/public/terrain/17/214646/88485.terrain differ diff --git a/public/terrain/17/214646/88486.terrain b/public/terrain/17/214646/88486.terrain new file mode 100644 index 000000000..f60cc5f4d Binary files /dev/null and b/public/terrain/17/214646/88486.terrain differ diff --git a/public/terrain/17/214646/88487.terrain b/public/terrain/17/214646/88487.terrain new file mode 100644 index 000000000..cd760e399 Binary files /dev/null and b/public/terrain/17/214646/88487.terrain differ diff --git a/public/terrain/17/214646/88488.terrain b/public/terrain/17/214646/88488.terrain new file mode 100644 index 000000000..ae60295ce Binary files /dev/null and b/public/terrain/17/214646/88488.terrain differ diff --git a/public/terrain/17/214646/88489.terrain b/public/terrain/17/214646/88489.terrain new file mode 100644 index 000000000..025c4718c Binary files /dev/null and b/public/terrain/17/214646/88489.terrain differ diff --git a/public/terrain/17/214646/88490.terrain b/public/terrain/17/214646/88490.terrain new file mode 100644 index 000000000..9698a9698 Binary files /dev/null and b/public/terrain/17/214646/88490.terrain differ diff --git a/public/terrain/17/214646/88491.terrain b/public/terrain/17/214646/88491.terrain new file mode 100644 index 000000000..d5ee79159 Binary files /dev/null and b/public/terrain/17/214646/88491.terrain differ diff --git a/public/terrain/17/214646/88492.terrain b/public/terrain/17/214646/88492.terrain new file mode 100644 index 000000000..5ffa8510d Binary files /dev/null and b/public/terrain/17/214646/88492.terrain differ diff --git a/public/terrain/17/214646/88493.terrain b/public/terrain/17/214646/88493.terrain new file mode 100644 index 000000000..6ca1047cf Binary files /dev/null and b/public/terrain/17/214646/88493.terrain differ diff --git a/public/terrain/17/214646/88494.terrain b/public/terrain/17/214646/88494.terrain new file mode 100644 index 000000000..a8b51cc5b Binary files /dev/null and b/public/terrain/17/214646/88494.terrain differ diff --git a/public/terrain/17/214646/88495.terrain b/public/terrain/17/214646/88495.terrain new file mode 100644 index 000000000..7eb24f010 Binary files /dev/null and b/public/terrain/17/214646/88495.terrain differ diff --git a/public/terrain/17/214646/88496.terrain b/public/terrain/17/214646/88496.terrain new file mode 100644 index 000000000..2560307ed Binary files /dev/null and b/public/terrain/17/214646/88496.terrain differ diff --git a/public/terrain/17/214646/88497.terrain b/public/terrain/17/214646/88497.terrain new file mode 100644 index 000000000..152d44dcd Binary files /dev/null and b/public/terrain/17/214646/88497.terrain differ diff --git a/public/terrain/17/214646/88498.terrain b/public/terrain/17/214646/88498.terrain new file mode 100644 index 000000000..32b4b1f68 Binary files /dev/null and b/public/terrain/17/214646/88498.terrain differ diff --git a/public/terrain/17/214646/88499.terrain b/public/terrain/17/214646/88499.terrain new file mode 100644 index 000000000..d75815f65 Binary files /dev/null and b/public/terrain/17/214646/88499.terrain differ diff --git a/public/terrain/17/214646/88500.terrain b/public/terrain/17/214646/88500.terrain new file mode 100644 index 000000000..ad22736e4 Binary files /dev/null and b/public/terrain/17/214646/88500.terrain differ diff --git a/public/terrain/17/214646/88501.terrain b/public/terrain/17/214646/88501.terrain new file mode 100644 index 000000000..c0ee1d752 Binary files /dev/null and b/public/terrain/17/214646/88501.terrain differ diff --git a/public/terrain/17/214646/88502.terrain b/public/terrain/17/214646/88502.terrain new file mode 100644 index 000000000..7d348dd04 Binary files /dev/null and b/public/terrain/17/214646/88502.terrain differ diff --git a/public/terrain/17/214646/88503.terrain b/public/terrain/17/214646/88503.terrain new file mode 100644 index 000000000..59b2dafc3 Binary files /dev/null and b/public/terrain/17/214646/88503.terrain differ diff --git a/public/terrain/17/214646/88504.terrain b/public/terrain/17/214646/88504.terrain new file mode 100644 index 000000000..a3b6737a2 Binary files /dev/null and b/public/terrain/17/214646/88504.terrain differ diff --git a/public/terrain/17/214646/88505.terrain b/public/terrain/17/214646/88505.terrain new file mode 100644 index 000000000..670e1af3f Binary files /dev/null and b/public/terrain/17/214646/88505.terrain differ diff --git a/public/terrain/17/214646/88506.terrain b/public/terrain/17/214646/88506.terrain new file mode 100644 index 000000000..d18f9003d Binary files /dev/null and b/public/terrain/17/214646/88506.terrain differ diff --git a/public/terrain/17/214646/88507.terrain b/public/terrain/17/214646/88507.terrain new file mode 100644 index 000000000..8e571a04f Binary files /dev/null and b/public/terrain/17/214646/88507.terrain differ diff --git a/public/terrain/17/214646/88508.terrain b/public/terrain/17/214646/88508.terrain new file mode 100644 index 000000000..b48e2d889 Binary files /dev/null and b/public/terrain/17/214646/88508.terrain differ diff --git a/public/terrain/17/214646/88509.terrain b/public/terrain/17/214646/88509.terrain new file mode 100644 index 000000000..fb5892e4a Binary files /dev/null and b/public/terrain/17/214646/88509.terrain differ diff --git a/public/terrain/17/214646/88510.terrain b/public/terrain/17/214646/88510.terrain new file mode 100644 index 000000000..532d49f71 Binary files /dev/null and b/public/terrain/17/214646/88510.terrain differ diff --git a/public/terrain/17/214646/88511.terrain b/public/terrain/17/214646/88511.terrain new file mode 100644 index 000000000..32b676f0b Binary files /dev/null and b/public/terrain/17/214646/88511.terrain differ diff --git a/public/terrain/17/214646/88512.terrain b/public/terrain/17/214646/88512.terrain new file mode 100644 index 000000000..474a57b3a Binary files /dev/null and b/public/terrain/17/214646/88512.terrain differ diff --git a/public/terrain/17/214646/88513.terrain b/public/terrain/17/214646/88513.terrain new file mode 100644 index 000000000..690d671c9 Binary files /dev/null and b/public/terrain/17/214646/88513.terrain differ diff --git a/public/terrain/17/214646/88514.terrain b/public/terrain/17/214646/88514.terrain new file mode 100644 index 000000000..834239263 Binary files /dev/null and b/public/terrain/17/214646/88514.terrain differ diff --git a/public/terrain/17/214647/88435.terrain b/public/terrain/17/214647/88435.terrain new file mode 100644 index 000000000..2125589f7 Binary files /dev/null and b/public/terrain/17/214647/88435.terrain differ diff --git a/public/terrain/17/214647/88436.terrain b/public/terrain/17/214647/88436.terrain new file mode 100644 index 000000000..1a707a260 Binary files /dev/null and b/public/terrain/17/214647/88436.terrain differ diff --git a/public/terrain/17/214647/88437.terrain b/public/terrain/17/214647/88437.terrain new file mode 100644 index 000000000..0121ab907 Binary files /dev/null and b/public/terrain/17/214647/88437.terrain differ diff --git a/public/terrain/17/214647/88438.terrain b/public/terrain/17/214647/88438.terrain new file mode 100644 index 000000000..ae3f43239 Binary files /dev/null and b/public/terrain/17/214647/88438.terrain differ diff --git a/public/terrain/17/214647/88439.terrain b/public/terrain/17/214647/88439.terrain new file mode 100644 index 000000000..0bb05c9a2 Binary files /dev/null and b/public/terrain/17/214647/88439.terrain differ diff --git a/public/terrain/17/214647/88440.terrain b/public/terrain/17/214647/88440.terrain new file mode 100644 index 000000000..6f4896aff Binary files /dev/null and b/public/terrain/17/214647/88440.terrain differ diff --git a/public/terrain/17/214647/88441.terrain b/public/terrain/17/214647/88441.terrain new file mode 100644 index 000000000..5077f9cef Binary files /dev/null and b/public/terrain/17/214647/88441.terrain differ diff --git a/public/terrain/17/214647/88442.terrain b/public/terrain/17/214647/88442.terrain new file mode 100644 index 000000000..4b0db88b2 Binary files /dev/null and b/public/terrain/17/214647/88442.terrain differ diff --git a/public/terrain/17/214647/88443.terrain b/public/terrain/17/214647/88443.terrain new file mode 100644 index 000000000..89831fa4c Binary files /dev/null and b/public/terrain/17/214647/88443.terrain differ diff --git a/public/terrain/17/214647/88444.terrain b/public/terrain/17/214647/88444.terrain new file mode 100644 index 000000000..7fac6443c Binary files /dev/null and b/public/terrain/17/214647/88444.terrain differ diff --git a/public/terrain/17/214647/88445.terrain b/public/terrain/17/214647/88445.terrain new file mode 100644 index 000000000..7a3433c3e Binary files /dev/null and b/public/terrain/17/214647/88445.terrain differ diff --git a/public/terrain/17/214647/88446.terrain b/public/terrain/17/214647/88446.terrain new file mode 100644 index 000000000..66f0fa2c3 Binary files /dev/null and b/public/terrain/17/214647/88446.terrain differ diff --git a/public/terrain/17/214647/88447.terrain b/public/terrain/17/214647/88447.terrain new file mode 100644 index 000000000..e13083ed5 Binary files /dev/null and b/public/terrain/17/214647/88447.terrain differ diff --git a/public/terrain/17/214647/88448.terrain b/public/terrain/17/214647/88448.terrain new file mode 100644 index 000000000..4f4c5d0dd Binary files /dev/null and b/public/terrain/17/214647/88448.terrain differ diff --git a/public/terrain/17/214647/88449.terrain b/public/terrain/17/214647/88449.terrain new file mode 100644 index 000000000..5dcc30e03 Binary files /dev/null and b/public/terrain/17/214647/88449.terrain differ diff --git a/public/terrain/17/214647/88450.terrain b/public/terrain/17/214647/88450.terrain new file mode 100644 index 000000000..8060ae11a Binary files /dev/null and b/public/terrain/17/214647/88450.terrain differ diff --git a/public/terrain/17/214647/88451.terrain b/public/terrain/17/214647/88451.terrain new file mode 100644 index 000000000..1b61b4a28 Binary files /dev/null and b/public/terrain/17/214647/88451.terrain differ diff --git a/public/terrain/17/214647/88452.terrain b/public/terrain/17/214647/88452.terrain new file mode 100644 index 000000000..34cd49f74 Binary files /dev/null and b/public/terrain/17/214647/88452.terrain differ diff --git a/public/terrain/17/214647/88453.terrain b/public/terrain/17/214647/88453.terrain new file mode 100644 index 000000000..89740a2c5 Binary files /dev/null and b/public/terrain/17/214647/88453.terrain differ diff --git a/public/terrain/17/214647/88454.terrain b/public/terrain/17/214647/88454.terrain new file mode 100644 index 000000000..ad8e1a9e5 Binary files /dev/null and b/public/terrain/17/214647/88454.terrain differ diff --git a/public/terrain/17/214647/88455.terrain b/public/terrain/17/214647/88455.terrain new file mode 100644 index 000000000..2e3de775d Binary files /dev/null and b/public/terrain/17/214647/88455.terrain differ diff --git a/public/terrain/17/214647/88456.terrain b/public/terrain/17/214647/88456.terrain new file mode 100644 index 000000000..ceb6f92e0 Binary files /dev/null and b/public/terrain/17/214647/88456.terrain differ diff --git a/public/terrain/17/214647/88457.terrain b/public/terrain/17/214647/88457.terrain new file mode 100644 index 000000000..c1db3c464 Binary files /dev/null and b/public/terrain/17/214647/88457.terrain differ diff --git a/public/terrain/17/214647/88458.terrain b/public/terrain/17/214647/88458.terrain new file mode 100644 index 000000000..c5f9bf822 Binary files /dev/null and b/public/terrain/17/214647/88458.terrain differ diff --git a/public/terrain/17/214647/88459.terrain b/public/terrain/17/214647/88459.terrain new file mode 100644 index 000000000..b304af228 Binary files /dev/null and b/public/terrain/17/214647/88459.terrain differ diff --git a/public/terrain/17/214647/88460.terrain b/public/terrain/17/214647/88460.terrain new file mode 100644 index 000000000..6b569c5ea Binary files /dev/null and b/public/terrain/17/214647/88460.terrain differ diff --git a/public/terrain/17/214647/88461.terrain b/public/terrain/17/214647/88461.terrain new file mode 100644 index 000000000..e72bbc553 Binary files /dev/null and b/public/terrain/17/214647/88461.terrain differ diff --git a/public/terrain/17/214647/88462.terrain b/public/terrain/17/214647/88462.terrain new file mode 100644 index 000000000..706283292 Binary files /dev/null and b/public/terrain/17/214647/88462.terrain differ diff --git a/public/terrain/17/214647/88463.terrain b/public/terrain/17/214647/88463.terrain new file mode 100644 index 000000000..f310962a4 Binary files /dev/null and b/public/terrain/17/214647/88463.terrain differ diff --git a/public/terrain/17/214647/88464.terrain b/public/terrain/17/214647/88464.terrain new file mode 100644 index 000000000..363403a4e Binary files /dev/null and b/public/terrain/17/214647/88464.terrain differ diff --git a/public/terrain/17/214647/88465.terrain b/public/terrain/17/214647/88465.terrain new file mode 100644 index 000000000..e4d4b0b11 Binary files /dev/null and b/public/terrain/17/214647/88465.terrain differ diff --git a/public/terrain/17/214647/88466.terrain b/public/terrain/17/214647/88466.terrain new file mode 100644 index 000000000..e8ecdd3d0 Binary files /dev/null and b/public/terrain/17/214647/88466.terrain differ diff --git a/public/terrain/17/214647/88467.terrain b/public/terrain/17/214647/88467.terrain new file mode 100644 index 000000000..f008b2003 Binary files /dev/null and b/public/terrain/17/214647/88467.terrain differ diff --git a/public/terrain/17/214647/88468.terrain b/public/terrain/17/214647/88468.terrain new file mode 100644 index 000000000..9447ba2e7 Binary files /dev/null and b/public/terrain/17/214647/88468.terrain differ diff --git a/public/terrain/17/214647/88469.terrain b/public/terrain/17/214647/88469.terrain new file mode 100644 index 000000000..a2c9a24f9 Binary files /dev/null and b/public/terrain/17/214647/88469.terrain differ diff --git a/public/terrain/17/214647/88470.terrain b/public/terrain/17/214647/88470.terrain new file mode 100644 index 000000000..0eb37af33 Binary files /dev/null and b/public/terrain/17/214647/88470.terrain differ diff --git a/public/terrain/17/214647/88471.terrain b/public/terrain/17/214647/88471.terrain new file mode 100644 index 000000000..07a5711aa Binary files /dev/null and b/public/terrain/17/214647/88471.terrain differ diff --git a/public/terrain/17/214647/88472.terrain b/public/terrain/17/214647/88472.terrain new file mode 100644 index 000000000..c42b4e809 Binary files /dev/null and b/public/terrain/17/214647/88472.terrain differ diff --git a/public/terrain/17/214647/88473.terrain b/public/terrain/17/214647/88473.terrain new file mode 100644 index 000000000..040a1e3f3 Binary files /dev/null and b/public/terrain/17/214647/88473.terrain differ diff --git a/public/terrain/17/214647/88474.terrain b/public/terrain/17/214647/88474.terrain new file mode 100644 index 000000000..010c65b3c Binary files /dev/null and b/public/terrain/17/214647/88474.terrain differ diff --git a/public/terrain/17/214647/88475.terrain b/public/terrain/17/214647/88475.terrain new file mode 100644 index 000000000..8169c7081 Binary files /dev/null and b/public/terrain/17/214647/88475.terrain differ diff --git a/public/terrain/17/214647/88476.terrain b/public/terrain/17/214647/88476.terrain new file mode 100644 index 000000000..2d9f05a3f Binary files /dev/null and b/public/terrain/17/214647/88476.terrain differ diff --git a/public/terrain/17/214647/88477.terrain b/public/terrain/17/214647/88477.terrain new file mode 100644 index 000000000..0172fcc96 Binary files /dev/null and b/public/terrain/17/214647/88477.terrain differ diff --git a/public/terrain/17/214647/88478.terrain b/public/terrain/17/214647/88478.terrain new file mode 100644 index 000000000..c059a4000 Binary files /dev/null and b/public/terrain/17/214647/88478.terrain differ diff --git a/public/terrain/17/214647/88479.terrain b/public/terrain/17/214647/88479.terrain new file mode 100644 index 000000000..4a9b7c68d Binary files /dev/null and b/public/terrain/17/214647/88479.terrain differ diff --git a/public/terrain/17/214647/88480.terrain b/public/terrain/17/214647/88480.terrain new file mode 100644 index 000000000..f07e80695 Binary files /dev/null and b/public/terrain/17/214647/88480.terrain differ diff --git a/public/terrain/17/214647/88481.terrain b/public/terrain/17/214647/88481.terrain new file mode 100644 index 000000000..26d240710 Binary files /dev/null and b/public/terrain/17/214647/88481.terrain differ diff --git a/public/terrain/17/214647/88482.terrain b/public/terrain/17/214647/88482.terrain new file mode 100644 index 000000000..ed28dd177 Binary files /dev/null and b/public/terrain/17/214647/88482.terrain differ diff --git a/public/terrain/17/214647/88483.terrain b/public/terrain/17/214647/88483.terrain new file mode 100644 index 000000000..bc9ffedb3 Binary files /dev/null and b/public/terrain/17/214647/88483.terrain differ diff --git a/public/terrain/17/214647/88484.terrain b/public/terrain/17/214647/88484.terrain new file mode 100644 index 000000000..29d9ca314 Binary files /dev/null and b/public/terrain/17/214647/88484.terrain differ diff --git a/public/terrain/17/214647/88485.terrain b/public/terrain/17/214647/88485.terrain new file mode 100644 index 000000000..e95ead643 Binary files /dev/null and b/public/terrain/17/214647/88485.terrain differ diff --git a/public/terrain/17/214647/88486.terrain b/public/terrain/17/214647/88486.terrain new file mode 100644 index 000000000..064227952 Binary files /dev/null and b/public/terrain/17/214647/88486.terrain differ diff --git a/public/terrain/17/214647/88487.terrain b/public/terrain/17/214647/88487.terrain new file mode 100644 index 000000000..00ff1f943 Binary files /dev/null and b/public/terrain/17/214647/88487.terrain differ diff --git a/public/terrain/17/214647/88488.terrain b/public/terrain/17/214647/88488.terrain new file mode 100644 index 000000000..91910a417 Binary files /dev/null and b/public/terrain/17/214647/88488.terrain differ diff --git a/public/terrain/17/214647/88489.terrain b/public/terrain/17/214647/88489.terrain new file mode 100644 index 000000000..f250d2e89 Binary files /dev/null and b/public/terrain/17/214647/88489.terrain differ diff --git a/public/terrain/17/214647/88490.terrain b/public/terrain/17/214647/88490.terrain new file mode 100644 index 000000000..030e7af03 Binary files /dev/null and b/public/terrain/17/214647/88490.terrain differ diff --git a/public/terrain/17/214647/88491.terrain b/public/terrain/17/214647/88491.terrain new file mode 100644 index 000000000..3659e3e24 Binary files /dev/null and b/public/terrain/17/214647/88491.terrain differ diff --git a/public/terrain/17/214647/88492.terrain b/public/terrain/17/214647/88492.terrain new file mode 100644 index 000000000..b189abe18 Binary files /dev/null and b/public/terrain/17/214647/88492.terrain differ diff --git a/public/terrain/17/214647/88493.terrain b/public/terrain/17/214647/88493.terrain new file mode 100644 index 000000000..3ce737b7c Binary files /dev/null and b/public/terrain/17/214647/88493.terrain differ diff --git a/public/terrain/17/214647/88494.terrain b/public/terrain/17/214647/88494.terrain new file mode 100644 index 000000000..1a9a9ea53 Binary files /dev/null and b/public/terrain/17/214647/88494.terrain differ diff --git a/public/terrain/17/214647/88495.terrain b/public/terrain/17/214647/88495.terrain new file mode 100644 index 000000000..013d6d1cd Binary files /dev/null and b/public/terrain/17/214647/88495.terrain differ diff --git a/public/terrain/17/214647/88496.terrain b/public/terrain/17/214647/88496.terrain new file mode 100644 index 000000000..576b8c955 Binary files /dev/null and b/public/terrain/17/214647/88496.terrain differ diff --git a/public/terrain/17/214647/88497.terrain b/public/terrain/17/214647/88497.terrain new file mode 100644 index 000000000..eed3374d2 Binary files /dev/null and b/public/terrain/17/214647/88497.terrain differ diff --git a/public/terrain/17/214647/88498.terrain b/public/terrain/17/214647/88498.terrain new file mode 100644 index 000000000..ae7109f7f Binary files /dev/null and b/public/terrain/17/214647/88498.terrain differ diff --git a/public/terrain/17/214647/88499.terrain b/public/terrain/17/214647/88499.terrain new file mode 100644 index 000000000..cd7ffa5fe Binary files /dev/null and b/public/terrain/17/214647/88499.terrain differ diff --git a/public/terrain/17/214647/88500.terrain b/public/terrain/17/214647/88500.terrain new file mode 100644 index 000000000..17c5d3a4e Binary files /dev/null and b/public/terrain/17/214647/88500.terrain differ diff --git a/public/terrain/17/214647/88501.terrain b/public/terrain/17/214647/88501.terrain new file mode 100644 index 000000000..a1e354bf0 Binary files /dev/null and b/public/terrain/17/214647/88501.terrain differ diff --git a/public/terrain/17/214647/88502.terrain b/public/terrain/17/214647/88502.terrain new file mode 100644 index 000000000..703274f7d Binary files /dev/null and b/public/terrain/17/214647/88502.terrain differ diff --git a/public/terrain/17/214647/88503.terrain b/public/terrain/17/214647/88503.terrain new file mode 100644 index 000000000..13d7a913f Binary files /dev/null and b/public/terrain/17/214647/88503.terrain differ diff --git a/public/terrain/17/214647/88504.terrain b/public/terrain/17/214647/88504.terrain new file mode 100644 index 000000000..9a59387a6 Binary files /dev/null and b/public/terrain/17/214647/88504.terrain differ diff --git a/public/terrain/17/214647/88505.terrain b/public/terrain/17/214647/88505.terrain new file mode 100644 index 000000000..a0b13b27f Binary files /dev/null and b/public/terrain/17/214647/88505.terrain differ diff --git a/public/terrain/17/214647/88506.terrain b/public/terrain/17/214647/88506.terrain new file mode 100644 index 000000000..3a35a96a6 Binary files /dev/null and b/public/terrain/17/214647/88506.terrain differ diff --git a/public/terrain/17/214647/88507.terrain b/public/terrain/17/214647/88507.terrain new file mode 100644 index 000000000..1cf17e979 Binary files /dev/null and b/public/terrain/17/214647/88507.terrain differ diff --git a/public/terrain/17/214647/88508.terrain b/public/terrain/17/214647/88508.terrain new file mode 100644 index 000000000..715ac707b Binary files /dev/null and b/public/terrain/17/214647/88508.terrain differ diff --git a/public/terrain/17/214647/88509.terrain b/public/terrain/17/214647/88509.terrain new file mode 100644 index 000000000..bb1bf2941 Binary files /dev/null and b/public/terrain/17/214647/88509.terrain differ diff --git a/public/terrain/17/214647/88510.terrain b/public/terrain/17/214647/88510.terrain new file mode 100644 index 000000000..b7d1650a5 Binary files /dev/null and b/public/terrain/17/214647/88510.terrain differ diff --git a/public/terrain/17/214647/88511.terrain b/public/terrain/17/214647/88511.terrain new file mode 100644 index 000000000..efd08838c Binary files /dev/null and b/public/terrain/17/214647/88511.terrain differ diff --git a/public/terrain/17/214647/88512.terrain b/public/terrain/17/214647/88512.terrain new file mode 100644 index 000000000..cfa833f27 Binary files /dev/null and b/public/terrain/17/214647/88512.terrain differ diff --git a/public/terrain/17/214647/88513.terrain b/public/terrain/17/214647/88513.terrain new file mode 100644 index 000000000..6e9915f90 Binary files /dev/null and b/public/terrain/17/214647/88513.terrain differ diff --git a/public/terrain/17/214647/88514.terrain b/public/terrain/17/214647/88514.terrain new file mode 100644 index 000000000..88596ea0f Binary files /dev/null and b/public/terrain/17/214647/88514.terrain differ diff --git a/public/terrain/17/214648/88435.terrain b/public/terrain/17/214648/88435.terrain new file mode 100644 index 000000000..3ae6ed2f8 Binary files /dev/null and b/public/terrain/17/214648/88435.terrain differ diff --git a/public/terrain/17/214648/88436.terrain b/public/terrain/17/214648/88436.terrain new file mode 100644 index 000000000..f02a7a2dd Binary files /dev/null and b/public/terrain/17/214648/88436.terrain differ diff --git a/public/terrain/17/214648/88437.terrain b/public/terrain/17/214648/88437.terrain new file mode 100644 index 000000000..7c1955c87 Binary files /dev/null and b/public/terrain/17/214648/88437.terrain differ diff --git a/public/terrain/17/214648/88438.terrain b/public/terrain/17/214648/88438.terrain new file mode 100644 index 000000000..1af4cb1b3 Binary files /dev/null and b/public/terrain/17/214648/88438.terrain differ diff --git a/public/terrain/17/214648/88439.terrain b/public/terrain/17/214648/88439.terrain new file mode 100644 index 000000000..cfd74a316 Binary files /dev/null and b/public/terrain/17/214648/88439.terrain differ diff --git a/public/terrain/17/214648/88440.terrain b/public/terrain/17/214648/88440.terrain new file mode 100644 index 000000000..700851c9e Binary files /dev/null and b/public/terrain/17/214648/88440.terrain differ diff --git a/public/terrain/17/214648/88441.terrain b/public/terrain/17/214648/88441.terrain new file mode 100644 index 000000000..1f97a236e Binary files /dev/null and b/public/terrain/17/214648/88441.terrain differ diff --git a/public/terrain/17/214648/88442.terrain b/public/terrain/17/214648/88442.terrain new file mode 100644 index 000000000..e16bad217 Binary files /dev/null and b/public/terrain/17/214648/88442.terrain differ diff --git a/public/terrain/17/214648/88443.terrain b/public/terrain/17/214648/88443.terrain new file mode 100644 index 000000000..f9881b9b2 Binary files /dev/null and b/public/terrain/17/214648/88443.terrain differ diff --git a/public/terrain/17/214648/88444.terrain b/public/terrain/17/214648/88444.terrain new file mode 100644 index 000000000..3a4e0c7a1 Binary files /dev/null and b/public/terrain/17/214648/88444.terrain differ diff --git a/public/terrain/17/214648/88445.terrain b/public/terrain/17/214648/88445.terrain new file mode 100644 index 000000000..f1e3a277f Binary files /dev/null and b/public/terrain/17/214648/88445.terrain differ diff --git a/public/terrain/17/214648/88446.terrain b/public/terrain/17/214648/88446.terrain new file mode 100644 index 000000000..efbcf0887 Binary files /dev/null and b/public/terrain/17/214648/88446.terrain differ diff --git a/public/terrain/17/214648/88447.terrain b/public/terrain/17/214648/88447.terrain new file mode 100644 index 000000000..f69335edc Binary files /dev/null and b/public/terrain/17/214648/88447.terrain differ diff --git a/public/terrain/17/214648/88448.terrain b/public/terrain/17/214648/88448.terrain new file mode 100644 index 000000000..e0a9d344c Binary files /dev/null and b/public/terrain/17/214648/88448.terrain differ diff --git a/public/terrain/17/214648/88449.terrain b/public/terrain/17/214648/88449.terrain new file mode 100644 index 000000000..7f4b756b7 Binary files /dev/null and b/public/terrain/17/214648/88449.terrain differ diff --git a/public/terrain/17/214648/88450.terrain b/public/terrain/17/214648/88450.terrain new file mode 100644 index 000000000..1528bce71 Binary files /dev/null and b/public/terrain/17/214648/88450.terrain differ diff --git a/public/terrain/17/214648/88451.terrain b/public/terrain/17/214648/88451.terrain new file mode 100644 index 000000000..69fb4ba60 Binary files /dev/null and b/public/terrain/17/214648/88451.terrain differ diff --git a/public/terrain/17/214648/88452.terrain b/public/terrain/17/214648/88452.terrain new file mode 100644 index 000000000..36b1e11d0 Binary files /dev/null and b/public/terrain/17/214648/88452.terrain differ diff --git a/public/terrain/17/214648/88453.terrain b/public/terrain/17/214648/88453.terrain new file mode 100644 index 000000000..9bf71444f Binary files /dev/null and b/public/terrain/17/214648/88453.terrain differ diff --git a/public/terrain/17/214648/88454.terrain b/public/terrain/17/214648/88454.terrain new file mode 100644 index 000000000..320df4603 Binary files /dev/null and b/public/terrain/17/214648/88454.terrain differ diff --git a/public/terrain/17/214648/88455.terrain b/public/terrain/17/214648/88455.terrain new file mode 100644 index 000000000..dbb257099 Binary files /dev/null and b/public/terrain/17/214648/88455.terrain differ diff --git a/public/terrain/17/214648/88456.terrain b/public/terrain/17/214648/88456.terrain new file mode 100644 index 000000000..f958e05dd Binary files /dev/null and b/public/terrain/17/214648/88456.terrain differ diff --git a/public/terrain/17/214648/88457.terrain b/public/terrain/17/214648/88457.terrain new file mode 100644 index 000000000..276ed68bb Binary files /dev/null and b/public/terrain/17/214648/88457.terrain differ diff --git a/public/terrain/17/214648/88458.terrain b/public/terrain/17/214648/88458.terrain new file mode 100644 index 000000000..e0a8da7df Binary files /dev/null and b/public/terrain/17/214648/88458.terrain differ diff --git a/public/terrain/17/214648/88459.terrain b/public/terrain/17/214648/88459.terrain new file mode 100644 index 000000000..81bedcf90 Binary files /dev/null and b/public/terrain/17/214648/88459.terrain differ diff --git a/public/terrain/17/214648/88460.terrain b/public/terrain/17/214648/88460.terrain new file mode 100644 index 000000000..944eebb9a Binary files /dev/null and b/public/terrain/17/214648/88460.terrain differ diff --git a/public/terrain/17/214648/88461.terrain b/public/terrain/17/214648/88461.terrain new file mode 100644 index 000000000..e9b31c628 Binary files /dev/null and b/public/terrain/17/214648/88461.terrain differ diff --git a/public/terrain/17/214648/88462.terrain b/public/terrain/17/214648/88462.terrain new file mode 100644 index 000000000..5b6846504 Binary files /dev/null and b/public/terrain/17/214648/88462.terrain differ diff --git a/public/terrain/17/214648/88463.terrain b/public/terrain/17/214648/88463.terrain new file mode 100644 index 000000000..4cc90420f Binary files /dev/null and b/public/terrain/17/214648/88463.terrain differ diff --git a/public/terrain/17/214648/88464.terrain b/public/terrain/17/214648/88464.terrain new file mode 100644 index 000000000..7ee6bb734 Binary files /dev/null and b/public/terrain/17/214648/88464.terrain differ diff --git a/public/terrain/17/214648/88465.terrain b/public/terrain/17/214648/88465.terrain new file mode 100644 index 000000000..38241fe65 Binary files /dev/null and b/public/terrain/17/214648/88465.terrain differ diff --git a/public/terrain/17/214648/88466.terrain b/public/terrain/17/214648/88466.terrain new file mode 100644 index 000000000..51f545b89 Binary files /dev/null and b/public/terrain/17/214648/88466.terrain differ diff --git a/public/terrain/17/214648/88467.terrain b/public/terrain/17/214648/88467.terrain new file mode 100644 index 000000000..3bd0e9646 Binary files /dev/null and b/public/terrain/17/214648/88467.terrain differ diff --git a/public/terrain/17/214648/88468.terrain b/public/terrain/17/214648/88468.terrain new file mode 100644 index 000000000..5cd27287b Binary files /dev/null and b/public/terrain/17/214648/88468.terrain differ diff --git a/public/terrain/17/214648/88469.terrain b/public/terrain/17/214648/88469.terrain new file mode 100644 index 000000000..52184a58b Binary files /dev/null and b/public/terrain/17/214648/88469.terrain differ diff --git a/public/terrain/17/214648/88470.terrain b/public/terrain/17/214648/88470.terrain new file mode 100644 index 000000000..18ca992ae Binary files /dev/null and b/public/terrain/17/214648/88470.terrain differ diff --git a/public/terrain/17/214648/88471.terrain b/public/terrain/17/214648/88471.terrain new file mode 100644 index 000000000..94440cf96 Binary files /dev/null and b/public/terrain/17/214648/88471.terrain differ diff --git a/public/terrain/17/214648/88472.terrain b/public/terrain/17/214648/88472.terrain new file mode 100644 index 000000000..2ae3293d5 Binary files /dev/null and b/public/terrain/17/214648/88472.terrain differ diff --git a/public/terrain/17/214648/88473.terrain b/public/terrain/17/214648/88473.terrain new file mode 100644 index 000000000..c352e1ed9 Binary files /dev/null and b/public/terrain/17/214648/88473.terrain differ diff --git a/public/terrain/17/214648/88474.terrain b/public/terrain/17/214648/88474.terrain new file mode 100644 index 000000000..be67e6d83 Binary files /dev/null and b/public/terrain/17/214648/88474.terrain differ diff --git a/public/terrain/17/214648/88475.terrain b/public/terrain/17/214648/88475.terrain new file mode 100644 index 000000000..58e45ccc2 Binary files /dev/null and b/public/terrain/17/214648/88475.terrain differ diff --git a/public/terrain/17/214648/88476.terrain b/public/terrain/17/214648/88476.terrain new file mode 100644 index 000000000..2874ce3d0 Binary files /dev/null and b/public/terrain/17/214648/88476.terrain differ diff --git a/public/terrain/17/214648/88477.terrain b/public/terrain/17/214648/88477.terrain new file mode 100644 index 000000000..c95105e14 Binary files /dev/null and b/public/terrain/17/214648/88477.terrain differ diff --git a/public/terrain/17/214648/88478.terrain b/public/terrain/17/214648/88478.terrain new file mode 100644 index 000000000..d61728671 Binary files /dev/null and b/public/terrain/17/214648/88478.terrain differ diff --git a/public/terrain/17/214648/88479.terrain b/public/terrain/17/214648/88479.terrain new file mode 100644 index 000000000..e6f7650c8 Binary files /dev/null and b/public/terrain/17/214648/88479.terrain differ diff --git a/public/terrain/17/214648/88480.terrain b/public/terrain/17/214648/88480.terrain new file mode 100644 index 000000000..0aab5bbbc Binary files /dev/null and b/public/terrain/17/214648/88480.terrain differ diff --git a/public/terrain/17/214648/88481.terrain b/public/terrain/17/214648/88481.terrain new file mode 100644 index 000000000..106fa99e7 Binary files /dev/null and b/public/terrain/17/214648/88481.terrain differ diff --git a/public/terrain/17/214648/88482.terrain b/public/terrain/17/214648/88482.terrain new file mode 100644 index 000000000..8d166d1e8 Binary files /dev/null and b/public/terrain/17/214648/88482.terrain differ diff --git a/public/terrain/17/214648/88483.terrain b/public/terrain/17/214648/88483.terrain new file mode 100644 index 000000000..ff5cd6c4a Binary files /dev/null and b/public/terrain/17/214648/88483.terrain differ diff --git a/public/terrain/17/214648/88484.terrain b/public/terrain/17/214648/88484.terrain new file mode 100644 index 000000000..27d0df737 Binary files /dev/null and b/public/terrain/17/214648/88484.terrain differ diff --git a/public/terrain/17/214648/88485.terrain b/public/terrain/17/214648/88485.terrain new file mode 100644 index 000000000..7eb1beea1 Binary files /dev/null and b/public/terrain/17/214648/88485.terrain differ diff --git a/public/terrain/17/214648/88486.terrain b/public/terrain/17/214648/88486.terrain new file mode 100644 index 000000000..755159e3c Binary files /dev/null and b/public/terrain/17/214648/88486.terrain differ diff --git a/public/terrain/17/214648/88487.terrain b/public/terrain/17/214648/88487.terrain new file mode 100644 index 000000000..4a74083a0 Binary files /dev/null and b/public/terrain/17/214648/88487.terrain differ diff --git a/public/terrain/17/214648/88488.terrain b/public/terrain/17/214648/88488.terrain new file mode 100644 index 000000000..fa93160ac Binary files /dev/null and b/public/terrain/17/214648/88488.terrain differ diff --git a/public/terrain/17/214648/88489.terrain b/public/terrain/17/214648/88489.terrain new file mode 100644 index 000000000..eaab0fec0 Binary files /dev/null and b/public/terrain/17/214648/88489.terrain differ diff --git a/public/terrain/17/214648/88490.terrain b/public/terrain/17/214648/88490.terrain new file mode 100644 index 000000000..382b1633a Binary files /dev/null and b/public/terrain/17/214648/88490.terrain differ diff --git a/public/terrain/17/214648/88491.terrain b/public/terrain/17/214648/88491.terrain new file mode 100644 index 000000000..ac05cd042 Binary files /dev/null and b/public/terrain/17/214648/88491.terrain differ diff --git a/public/terrain/17/214648/88492.terrain b/public/terrain/17/214648/88492.terrain new file mode 100644 index 000000000..ebfbecec4 Binary files /dev/null and b/public/terrain/17/214648/88492.terrain differ diff --git a/public/terrain/17/214648/88493.terrain b/public/terrain/17/214648/88493.terrain new file mode 100644 index 000000000..a3b8313ec Binary files /dev/null and b/public/terrain/17/214648/88493.terrain differ diff --git a/public/terrain/17/214648/88494.terrain b/public/terrain/17/214648/88494.terrain new file mode 100644 index 000000000..01a4ef32e Binary files /dev/null and b/public/terrain/17/214648/88494.terrain differ diff --git a/public/terrain/17/214648/88495.terrain b/public/terrain/17/214648/88495.terrain new file mode 100644 index 000000000..9c461f8fa Binary files /dev/null and b/public/terrain/17/214648/88495.terrain differ diff --git a/public/terrain/17/214648/88496.terrain b/public/terrain/17/214648/88496.terrain new file mode 100644 index 000000000..2fc8f9821 Binary files /dev/null and b/public/terrain/17/214648/88496.terrain differ diff --git a/public/terrain/17/214648/88497.terrain b/public/terrain/17/214648/88497.terrain new file mode 100644 index 000000000..1515e299b Binary files /dev/null and b/public/terrain/17/214648/88497.terrain differ diff --git a/public/terrain/17/214648/88498.terrain b/public/terrain/17/214648/88498.terrain new file mode 100644 index 000000000..8cec31c7c Binary files /dev/null and b/public/terrain/17/214648/88498.terrain differ diff --git a/public/terrain/17/214648/88499.terrain b/public/terrain/17/214648/88499.terrain new file mode 100644 index 000000000..513c913f3 Binary files /dev/null and b/public/terrain/17/214648/88499.terrain differ diff --git a/public/terrain/17/214648/88500.terrain b/public/terrain/17/214648/88500.terrain new file mode 100644 index 000000000..c2f0e986b Binary files /dev/null and b/public/terrain/17/214648/88500.terrain differ diff --git a/public/terrain/17/214648/88501.terrain b/public/terrain/17/214648/88501.terrain new file mode 100644 index 000000000..85ab9363b Binary files /dev/null and b/public/terrain/17/214648/88501.terrain differ diff --git a/public/terrain/17/214648/88502.terrain b/public/terrain/17/214648/88502.terrain new file mode 100644 index 000000000..5c0ebc7fb Binary files /dev/null and b/public/terrain/17/214648/88502.terrain differ diff --git a/public/terrain/17/214648/88503.terrain b/public/terrain/17/214648/88503.terrain new file mode 100644 index 000000000..25041d189 Binary files /dev/null and b/public/terrain/17/214648/88503.terrain differ diff --git a/public/terrain/17/214648/88504.terrain b/public/terrain/17/214648/88504.terrain new file mode 100644 index 000000000..618c5f615 Binary files /dev/null and b/public/terrain/17/214648/88504.terrain differ diff --git a/public/terrain/17/214648/88505.terrain b/public/terrain/17/214648/88505.terrain new file mode 100644 index 000000000..39e9b1535 Binary files /dev/null and b/public/terrain/17/214648/88505.terrain differ diff --git a/public/terrain/17/214648/88506.terrain b/public/terrain/17/214648/88506.terrain new file mode 100644 index 000000000..f51d0edb5 Binary files /dev/null and b/public/terrain/17/214648/88506.terrain differ diff --git a/public/terrain/17/214648/88507.terrain b/public/terrain/17/214648/88507.terrain new file mode 100644 index 000000000..d3c586076 Binary files /dev/null and b/public/terrain/17/214648/88507.terrain differ diff --git a/public/terrain/17/214648/88508.terrain b/public/terrain/17/214648/88508.terrain new file mode 100644 index 000000000..d617332ec Binary files /dev/null and b/public/terrain/17/214648/88508.terrain differ diff --git a/public/terrain/17/214648/88509.terrain b/public/terrain/17/214648/88509.terrain new file mode 100644 index 000000000..36ad3e675 Binary files /dev/null and b/public/terrain/17/214648/88509.terrain differ diff --git a/public/terrain/17/214648/88510.terrain b/public/terrain/17/214648/88510.terrain new file mode 100644 index 000000000..99b90c6d7 Binary files /dev/null and b/public/terrain/17/214648/88510.terrain differ diff --git a/public/terrain/17/214648/88511.terrain b/public/terrain/17/214648/88511.terrain new file mode 100644 index 000000000..bbe684983 Binary files /dev/null and b/public/terrain/17/214648/88511.terrain differ diff --git a/public/terrain/17/214648/88512.terrain b/public/terrain/17/214648/88512.terrain new file mode 100644 index 000000000..71754639d Binary files /dev/null and b/public/terrain/17/214648/88512.terrain differ diff --git a/public/terrain/17/214648/88513.terrain b/public/terrain/17/214648/88513.terrain new file mode 100644 index 000000000..363ef373a Binary files /dev/null and b/public/terrain/17/214648/88513.terrain differ diff --git a/public/terrain/17/214648/88514.terrain b/public/terrain/17/214648/88514.terrain new file mode 100644 index 000000000..94c2e6612 Binary files /dev/null and b/public/terrain/17/214648/88514.terrain differ diff --git a/public/terrain/17/214649/88435.terrain b/public/terrain/17/214649/88435.terrain new file mode 100644 index 000000000..2282b1924 Binary files /dev/null and b/public/terrain/17/214649/88435.terrain differ diff --git a/public/terrain/17/214649/88436.terrain b/public/terrain/17/214649/88436.terrain new file mode 100644 index 000000000..35f8c4f95 Binary files /dev/null and b/public/terrain/17/214649/88436.terrain differ diff --git a/public/terrain/17/214649/88437.terrain b/public/terrain/17/214649/88437.terrain new file mode 100644 index 000000000..1066e0f20 Binary files /dev/null and b/public/terrain/17/214649/88437.terrain differ diff --git a/public/terrain/17/214649/88438.terrain b/public/terrain/17/214649/88438.terrain new file mode 100644 index 000000000..9ae8df621 Binary files /dev/null and b/public/terrain/17/214649/88438.terrain differ diff --git a/public/terrain/17/214649/88439.terrain b/public/terrain/17/214649/88439.terrain new file mode 100644 index 000000000..7185e0d87 Binary files /dev/null and b/public/terrain/17/214649/88439.terrain differ diff --git a/public/terrain/17/214649/88440.terrain b/public/terrain/17/214649/88440.terrain new file mode 100644 index 000000000..7ff3534b8 Binary files /dev/null and b/public/terrain/17/214649/88440.terrain differ diff --git a/public/terrain/17/214649/88441.terrain b/public/terrain/17/214649/88441.terrain new file mode 100644 index 000000000..9c4762810 Binary files /dev/null and b/public/terrain/17/214649/88441.terrain differ diff --git a/public/terrain/17/214649/88442.terrain b/public/terrain/17/214649/88442.terrain new file mode 100644 index 000000000..6513e029b Binary files /dev/null and b/public/terrain/17/214649/88442.terrain differ diff --git a/public/terrain/17/214649/88443.terrain b/public/terrain/17/214649/88443.terrain new file mode 100644 index 000000000..5b1d6ebfa Binary files /dev/null and b/public/terrain/17/214649/88443.terrain differ diff --git a/public/terrain/17/214649/88444.terrain b/public/terrain/17/214649/88444.terrain new file mode 100644 index 000000000..a6b923a9b Binary files /dev/null and b/public/terrain/17/214649/88444.terrain differ diff --git a/public/terrain/17/214649/88445.terrain b/public/terrain/17/214649/88445.terrain new file mode 100644 index 000000000..894a4c981 Binary files /dev/null and b/public/terrain/17/214649/88445.terrain differ diff --git a/public/terrain/17/214649/88446.terrain b/public/terrain/17/214649/88446.terrain new file mode 100644 index 000000000..69d0d44f1 Binary files /dev/null and b/public/terrain/17/214649/88446.terrain differ diff --git a/public/terrain/17/214649/88447.terrain b/public/terrain/17/214649/88447.terrain new file mode 100644 index 000000000..29295d643 Binary files /dev/null and b/public/terrain/17/214649/88447.terrain differ diff --git a/public/terrain/17/214649/88448.terrain b/public/terrain/17/214649/88448.terrain new file mode 100644 index 000000000..2f884f054 Binary files /dev/null and b/public/terrain/17/214649/88448.terrain differ diff --git a/public/terrain/17/214649/88449.terrain b/public/terrain/17/214649/88449.terrain new file mode 100644 index 000000000..fd15a0b9d Binary files /dev/null and b/public/terrain/17/214649/88449.terrain differ diff --git a/public/terrain/17/214649/88450.terrain b/public/terrain/17/214649/88450.terrain new file mode 100644 index 000000000..c95ed92b7 Binary files /dev/null and b/public/terrain/17/214649/88450.terrain differ diff --git a/public/terrain/17/214649/88451.terrain b/public/terrain/17/214649/88451.terrain new file mode 100644 index 000000000..eac92742a Binary files /dev/null and b/public/terrain/17/214649/88451.terrain differ diff --git a/public/terrain/17/214649/88452.terrain b/public/terrain/17/214649/88452.terrain new file mode 100644 index 000000000..521538ee0 Binary files /dev/null and b/public/terrain/17/214649/88452.terrain differ diff --git a/public/terrain/17/214649/88453.terrain b/public/terrain/17/214649/88453.terrain new file mode 100644 index 000000000..0954e1e1b Binary files /dev/null and b/public/terrain/17/214649/88453.terrain differ diff --git a/public/terrain/17/214649/88454.terrain b/public/terrain/17/214649/88454.terrain new file mode 100644 index 000000000..e60c70f4c Binary files /dev/null and b/public/terrain/17/214649/88454.terrain differ diff --git a/public/terrain/17/214649/88455.terrain b/public/terrain/17/214649/88455.terrain new file mode 100644 index 000000000..8b46bd915 Binary files /dev/null and b/public/terrain/17/214649/88455.terrain differ diff --git a/public/terrain/17/214649/88456.terrain b/public/terrain/17/214649/88456.terrain new file mode 100644 index 000000000..6c67d1e3d Binary files /dev/null and b/public/terrain/17/214649/88456.terrain differ diff --git a/public/terrain/17/214649/88457.terrain b/public/terrain/17/214649/88457.terrain new file mode 100644 index 000000000..143c40559 Binary files /dev/null and b/public/terrain/17/214649/88457.terrain differ diff --git a/public/terrain/17/214649/88458.terrain b/public/terrain/17/214649/88458.terrain new file mode 100644 index 000000000..7163a7759 Binary files /dev/null and b/public/terrain/17/214649/88458.terrain differ diff --git a/public/terrain/17/214649/88459.terrain b/public/terrain/17/214649/88459.terrain new file mode 100644 index 000000000..5a75676fb Binary files /dev/null and b/public/terrain/17/214649/88459.terrain differ diff --git a/public/terrain/17/214649/88460.terrain b/public/terrain/17/214649/88460.terrain new file mode 100644 index 000000000..f4c072fc2 Binary files /dev/null and b/public/terrain/17/214649/88460.terrain differ diff --git a/public/terrain/17/214649/88461.terrain b/public/terrain/17/214649/88461.terrain new file mode 100644 index 000000000..2ba3782f5 Binary files /dev/null and b/public/terrain/17/214649/88461.terrain differ diff --git a/public/terrain/17/214649/88462.terrain b/public/terrain/17/214649/88462.terrain new file mode 100644 index 000000000..e0bfbf2b8 Binary files /dev/null and b/public/terrain/17/214649/88462.terrain differ diff --git a/public/terrain/17/214649/88463.terrain b/public/terrain/17/214649/88463.terrain new file mode 100644 index 000000000..7cbbeed6e Binary files /dev/null and b/public/terrain/17/214649/88463.terrain differ diff --git a/public/terrain/17/214649/88464.terrain b/public/terrain/17/214649/88464.terrain new file mode 100644 index 000000000..17ff5de3c Binary files /dev/null and b/public/terrain/17/214649/88464.terrain differ diff --git a/public/terrain/17/214649/88465.terrain b/public/terrain/17/214649/88465.terrain new file mode 100644 index 000000000..8db68692e Binary files /dev/null and b/public/terrain/17/214649/88465.terrain differ diff --git a/public/terrain/17/214649/88466.terrain b/public/terrain/17/214649/88466.terrain new file mode 100644 index 000000000..72413d0ce Binary files /dev/null and b/public/terrain/17/214649/88466.terrain differ diff --git a/public/terrain/17/214649/88467.terrain b/public/terrain/17/214649/88467.terrain new file mode 100644 index 000000000..bf2be3514 Binary files /dev/null and b/public/terrain/17/214649/88467.terrain differ diff --git a/public/terrain/17/214649/88468.terrain b/public/terrain/17/214649/88468.terrain new file mode 100644 index 000000000..d0390eeff Binary files /dev/null and b/public/terrain/17/214649/88468.terrain differ diff --git a/public/terrain/17/214649/88469.terrain b/public/terrain/17/214649/88469.terrain new file mode 100644 index 000000000..90d9ba6e1 Binary files /dev/null and b/public/terrain/17/214649/88469.terrain differ diff --git a/public/terrain/17/214649/88470.terrain b/public/terrain/17/214649/88470.terrain new file mode 100644 index 000000000..e336bd409 Binary files /dev/null and b/public/terrain/17/214649/88470.terrain differ diff --git a/public/terrain/17/214649/88471.terrain b/public/terrain/17/214649/88471.terrain new file mode 100644 index 000000000..84cf3fd9e Binary files /dev/null and b/public/terrain/17/214649/88471.terrain differ diff --git a/public/terrain/17/214649/88472.terrain b/public/terrain/17/214649/88472.terrain new file mode 100644 index 000000000..dfd127576 Binary files /dev/null and b/public/terrain/17/214649/88472.terrain differ diff --git a/public/terrain/17/214649/88473.terrain b/public/terrain/17/214649/88473.terrain new file mode 100644 index 000000000..9b933767d Binary files /dev/null and b/public/terrain/17/214649/88473.terrain differ diff --git a/public/terrain/17/214649/88474.terrain b/public/terrain/17/214649/88474.terrain new file mode 100644 index 000000000..ea0ae64fe Binary files /dev/null and b/public/terrain/17/214649/88474.terrain differ diff --git a/public/terrain/17/214649/88475.terrain b/public/terrain/17/214649/88475.terrain new file mode 100644 index 000000000..21a1a3865 Binary files /dev/null and b/public/terrain/17/214649/88475.terrain differ diff --git a/public/terrain/17/214649/88476.terrain b/public/terrain/17/214649/88476.terrain new file mode 100644 index 000000000..db1c6c989 Binary files /dev/null and b/public/terrain/17/214649/88476.terrain differ diff --git a/public/terrain/17/214649/88477.terrain b/public/terrain/17/214649/88477.terrain new file mode 100644 index 000000000..2e83a651f Binary files /dev/null and b/public/terrain/17/214649/88477.terrain differ diff --git a/public/terrain/17/214649/88478.terrain b/public/terrain/17/214649/88478.terrain new file mode 100644 index 000000000..a27ad1ee6 Binary files /dev/null and b/public/terrain/17/214649/88478.terrain differ diff --git a/public/terrain/17/214649/88479.terrain b/public/terrain/17/214649/88479.terrain new file mode 100644 index 000000000..e1223f70c Binary files /dev/null and b/public/terrain/17/214649/88479.terrain differ diff --git a/public/terrain/17/214649/88480.terrain b/public/terrain/17/214649/88480.terrain new file mode 100644 index 000000000..56cfe215d Binary files /dev/null and b/public/terrain/17/214649/88480.terrain differ diff --git a/public/terrain/17/214649/88481.terrain b/public/terrain/17/214649/88481.terrain new file mode 100644 index 000000000..e3222e2ca Binary files /dev/null and b/public/terrain/17/214649/88481.terrain differ diff --git a/public/terrain/17/214649/88482.terrain b/public/terrain/17/214649/88482.terrain new file mode 100644 index 000000000..98a55daeb Binary files /dev/null and b/public/terrain/17/214649/88482.terrain differ diff --git a/public/terrain/17/214649/88483.terrain b/public/terrain/17/214649/88483.terrain new file mode 100644 index 000000000..2d211a9fe Binary files /dev/null and b/public/terrain/17/214649/88483.terrain differ diff --git a/public/terrain/17/214649/88484.terrain b/public/terrain/17/214649/88484.terrain new file mode 100644 index 000000000..b167ded56 Binary files /dev/null and b/public/terrain/17/214649/88484.terrain differ diff --git a/public/terrain/17/214649/88485.terrain b/public/terrain/17/214649/88485.terrain new file mode 100644 index 000000000..25a1f93ba Binary files /dev/null and b/public/terrain/17/214649/88485.terrain differ diff --git a/public/terrain/17/214649/88486.terrain b/public/terrain/17/214649/88486.terrain new file mode 100644 index 000000000..2e18d70d3 Binary files /dev/null and b/public/terrain/17/214649/88486.terrain differ diff --git a/public/terrain/17/214649/88487.terrain b/public/terrain/17/214649/88487.terrain new file mode 100644 index 000000000..41aa8e740 Binary files /dev/null and b/public/terrain/17/214649/88487.terrain differ diff --git a/public/terrain/17/214649/88488.terrain b/public/terrain/17/214649/88488.terrain new file mode 100644 index 000000000..d609e9ef3 Binary files /dev/null and b/public/terrain/17/214649/88488.terrain differ diff --git a/public/terrain/17/214649/88489.terrain b/public/terrain/17/214649/88489.terrain new file mode 100644 index 000000000..452f1e9ad Binary files /dev/null and b/public/terrain/17/214649/88489.terrain differ diff --git a/public/terrain/17/214649/88490.terrain b/public/terrain/17/214649/88490.terrain new file mode 100644 index 000000000..fac4d9515 Binary files /dev/null and b/public/terrain/17/214649/88490.terrain differ diff --git a/public/terrain/17/214649/88491.terrain b/public/terrain/17/214649/88491.terrain new file mode 100644 index 000000000..6a4442f2f Binary files /dev/null and b/public/terrain/17/214649/88491.terrain differ diff --git a/public/terrain/17/214649/88492.terrain b/public/terrain/17/214649/88492.terrain new file mode 100644 index 000000000..b3b90d667 Binary files /dev/null and b/public/terrain/17/214649/88492.terrain differ diff --git a/public/terrain/17/214649/88493.terrain b/public/terrain/17/214649/88493.terrain new file mode 100644 index 000000000..baca8f4d5 Binary files /dev/null and b/public/terrain/17/214649/88493.terrain differ diff --git a/public/terrain/17/214649/88494.terrain b/public/terrain/17/214649/88494.terrain new file mode 100644 index 000000000..e1e574e19 Binary files /dev/null and b/public/terrain/17/214649/88494.terrain differ diff --git a/public/terrain/17/214649/88495.terrain b/public/terrain/17/214649/88495.terrain new file mode 100644 index 000000000..25a561692 Binary files /dev/null and b/public/terrain/17/214649/88495.terrain differ diff --git a/public/terrain/17/214649/88496.terrain b/public/terrain/17/214649/88496.terrain new file mode 100644 index 000000000..c4e89a6ab Binary files /dev/null and b/public/terrain/17/214649/88496.terrain differ diff --git a/public/terrain/17/214649/88497.terrain b/public/terrain/17/214649/88497.terrain new file mode 100644 index 000000000..adf5a9031 Binary files /dev/null and b/public/terrain/17/214649/88497.terrain differ diff --git a/public/terrain/17/214649/88498.terrain b/public/terrain/17/214649/88498.terrain new file mode 100644 index 000000000..62faa741f Binary files /dev/null and b/public/terrain/17/214649/88498.terrain differ diff --git a/public/terrain/17/214649/88499.terrain b/public/terrain/17/214649/88499.terrain new file mode 100644 index 000000000..d52bf887c Binary files /dev/null and b/public/terrain/17/214649/88499.terrain differ diff --git a/public/terrain/17/214649/88500.terrain b/public/terrain/17/214649/88500.terrain new file mode 100644 index 000000000..72992b8b2 Binary files /dev/null and b/public/terrain/17/214649/88500.terrain differ diff --git a/public/terrain/17/214649/88501.terrain b/public/terrain/17/214649/88501.terrain new file mode 100644 index 000000000..93f6d700b Binary files /dev/null and b/public/terrain/17/214649/88501.terrain differ diff --git a/public/terrain/17/214649/88502.terrain b/public/terrain/17/214649/88502.terrain new file mode 100644 index 000000000..2db639884 Binary files /dev/null and b/public/terrain/17/214649/88502.terrain differ diff --git a/public/terrain/17/214649/88503.terrain b/public/terrain/17/214649/88503.terrain new file mode 100644 index 000000000..41cb72e5b Binary files /dev/null and b/public/terrain/17/214649/88503.terrain differ diff --git a/public/terrain/17/214649/88504.terrain b/public/terrain/17/214649/88504.terrain new file mode 100644 index 000000000..f0ac0fd15 Binary files /dev/null and b/public/terrain/17/214649/88504.terrain differ diff --git a/public/terrain/17/214649/88505.terrain b/public/terrain/17/214649/88505.terrain new file mode 100644 index 000000000..e92576122 Binary files /dev/null and b/public/terrain/17/214649/88505.terrain differ diff --git a/public/terrain/17/214649/88506.terrain b/public/terrain/17/214649/88506.terrain new file mode 100644 index 000000000..62c9ae5b2 Binary files /dev/null and b/public/terrain/17/214649/88506.terrain differ diff --git a/public/terrain/17/214649/88507.terrain b/public/terrain/17/214649/88507.terrain new file mode 100644 index 000000000..ee8420c75 Binary files /dev/null and b/public/terrain/17/214649/88507.terrain differ diff --git a/public/terrain/17/214649/88508.terrain b/public/terrain/17/214649/88508.terrain new file mode 100644 index 000000000..4e21d5cff Binary files /dev/null and b/public/terrain/17/214649/88508.terrain differ diff --git a/public/terrain/17/214649/88509.terrain b/public/terrain/17/214649/88509.terrain new file mode 100644 index 000000000..c30312d51 Binary files /dev/null and b/public/terrain/17/214649/88509.terrain differ diff --git a/public/terrain/17/214649/88510.terrain b/public/terrain/17/214649/88510.terrain new file mode 100644 index 000000000..23d22cffb Binary files /dev/null and b/public/terrain/17/214649/88510.terrain differ diff --git a/public/terrain/17/214649/88511.terrain b/public/terrain/17/214649/88511.terrain new file mode 100644 index 000000000..358f1ea3d Binary files /dev/null and b/public/terrain/17/214649/88511.terrain differ diff --git a/public/terrain/17/214649/88512.terrain b/public/terrain/17/214649/88512.terrain new file mode 100644 index 000000000..39b6d9ae1 Binary files /dev/null and b/public/terrain/17/214649/88512.terrain differ diff --git a/public/terrain/17/214649/88513.terrain b/public/terrain/17/214649/88513.terrain new file mode 100644 index 000000000..cfafbd5d8 Binary files /dev/null and b/public/terrain/17/214649/88513.terrain differ diff --git a/public/terrain/17/214649/88514.terrain b/public/terrain/17/214649/88514.terrain new file mode 100644 index 000000000..c54c6ce27 Binary files /dev/null and b/public/terrain/17/214649/88514.terrain differ diff --git a/public/terrain/17/214650/88435.terrain b/public/terrain/17/214650/88435.terrain new file mode 100644 index 000000000..eedd1a7f8 Binary files /dev/null and b/public/terrain/17/214650/88435.terrain differ diff --git a/public/terrain/17/214650/88436.terrain b/public/terrain/17/214650/88436.terrain new file mode 100644 index 000000000..d61a58d26 Binary files /dev/null and b/public/terrain/17/214650/88436.terrain differ diff --git a/public/terrain/17/214650/88437.terrain b/public/terrain/17/214650/88437.terrain new file mode 100644 index 000000000..aa403ccbb Binary files /dev/null and b/public/terrain/17/214650/88437.terrain differ diff --git a/public/terrain/17/214650/88438.terrain b/public/terrain/17/214650/88438.terrain new file mode 100644 index 000000000..6006640dd Binary files /dev/null and b/public/terrain/17/214650/88438.terrain differ diff --git a/public/terrain/17/214650/88439.terrain b/public/terrain/17/214650/88439.terrain new file mode 100644 index 000000000..1b09a2ad0 Binary files /dev/null and b/public/terrain/17/214650/88439.terrain differ diff --git a/public/terrain/17/214650/88440.terrain b/public/terrain/17/214650/88440.terrain new file mode 100644 index 000000000..ec6ff8a4f Binary files /dev/null and b/public/terrain/17/214650/88440.terrain differ diff --git a/public/terrain/17/214650/88441.terrain b/public/terrain/17/214650/88441.terrain new file mode 100644 index 000000000..97064744e Binary files /dev/null and b/public/terrain/17/214650/88441.terrain differ diff --git a/public/terrain/17/214650/88442.terrain b/public/terrain/17/214650/88442.terrain new file mode 100644 index 000000000..0015a2702 Binary files /dev/null and b/public/terrain/17/214650/88442.terrain differ diff --git a/public/terrain/17/214650/88443.terrain b/public/terrain/17/214650/88443.terrain new file mode 100644 index 000000000..0d148bbbc Binary files /dev/null and b/public/terrain/17/214650/88443.terrain differ diff --git a/public/terrain/17/214650/88444.terrain b/public/terrain/17/214650/88444.terrain new file mode 100644 index 000000000..588fea8e1 Binary files /dev/null and b/public/terrain/17/214650/88444.terrain differ diff --git a/public/terrain/17/214650/88445.terrain b/public/terrain/17/214650/88445.terrain new file mode 100644 index 000000000..6c1974323 Binary files /dev/null and b/public/terrain/17/214650/88445.terrain differ diff --git a/public/terrain/17/214650/88446.terrain b/public/terrain/17/214650/88446.terrain new file mode 100644 index 000000000..19822d268 Binary files /dev/null and b/public/terrain/17/214650/88446.terrain differ diff --git a/public/terrain/17/214650/88447.terrain b/public/terrain/17/214650/88447.terrain new file mode 100644 index 000000000..3a5353b3f Binary files /dev/null and b/public/terrain/17/214650/88447.terrain differ diff --git a/public/terrain/17/214650/88448.terrain b/public/terrain/17/214650/88448.terrain new file mode 100644 index 000000000..6cdd55eb2 Binary files /dev/null and b/public/terrain/17/214650/88448.terrain differ diff --git a/public/terrain/17/214650/88449.terrain b/public/terrain/17/214650/88449.terrain new file mode 100644 index 000000000..464d6ed41 Binary files /dev/null and b/public/terrain/17/214650/88449.terrain differ diff --git a/public/terrain/17/214650/88450.terrain b/public/terrain/17/214650/88450.terrain new file mode 100644 index 000000000..9f202af42 Binary files /dev/null and b/public/terrain/17/214650/88450.terrain differ diff --git a/public/terrain/17/214650/88451.terrain b/public/terrain/17/214650/88451.terrain new file mode 100644 index 000000000..f28d4e54a Binary files /dev/null and b/public/terrain/17/214650/88451.terrain differ diff --git a/public/terrain/17/214650/88452.terrain b/public/terrain/17/214650/88452.terrain new file mode 100644 index 000000000..3403f5745 Binary files /dev/null and b/public/terrain/17/214650/88452.terrain differ diff --git a/public/terrain/17/214650/88453.terrain b/public/terrain/17/214650/88453.terrain new file mode 100644 index 000000000..bc323610c Binary files /dev/null and b/public/terrain/17/214650/88453.terrain differ diff --git a/public/terrain/17/214650/88454.terrain b/public/terrain/17/214650/88454.terrain new file mode 100644 index 000000000..43a0bdd35 Binary files /dev/null and b/public/terrain/17/214650/88454.terrain differ diff --git a/public/terrain/17/214650/88455.terrain b/public/terrain/17/214650/88455.terrain new file mode 100644 index 000000000..60d84a76a Binary files /dev/null and b/public/terrain/17/214650/88455.terrain differ diff --git a/public/terrain/17/214650/88456.terrain b/public/terrain/17/214650/88456.terrain new file mode 100644 index 000000000..61ddd4735 Binary files /dev/null and b/public/terrain/17/214650/88456.terrain differ diff --git a/public/terrain/17/214650/88457.terrain b/public/terrain/17/214650/88457.terrain new file mode 100644 index 000000000..921f4231b Binary files /dev/null and b/public/terrain/17/214650/88457.terrain differ diff --git a/public/terrain/17/214650/88458.terrain b/public/terrain/17/214650/88458.terrain new file mode 100644 index 000000000..282e5804c Binary files /dev/null and b/public/terrain/17/214650/88458.terrain differ diff --git a/public/terrain/17/214650/88459.terrain b/public/terrain/17/214650/88459.terrain new file mode 100644 index 000000000..fabca7d29 Binary files /dev/null and b/public/terrain/17/214650/88459.terrain differ diff --git a/public/terrain/17/214650/88460.terrain b/public/terrain/17/214650/88460.terrain new file mode 100644 index 000000000..27429428c Binary files /dev/null and b/public/terrain/17/214650/88460.terrain differ diff --git a/public/terrain/17/214650/88461.terrain b/public/terrain/17/214650/88461.terrain new file mode 100644 index 000000000..8fd14e3d3 Binary files /dev/null and b/public/terrain/17/214650/88461.terrain differ diff --git a/public/terrain/17/214650/88462.terrain b/public/terrain/17/214650/88462.terrain new file mode 100644 index 000000000..2ba2da395 Binary files /dev/null and b/public/terrain/17/214650/88462.terrain differ diff --git a/public/terrain/17/214650/88463.terrain b/public/terrain/17/214650/88463.terrain new file mode 100644 index 000000000..4f1fe6692 Binary files /dev/null and b/public/terrain/17/214650/88463.terrain differ diff --git a/public/terrain/17/214650/88464.terrain b/public/terrain/17/214650/88464.terrain new file mode 100644 index 000000000..bf267ee4b Binary files /dev/null and b/public/terrain/17/214650/88464.terrain differ diff --git a/public/terrain/17/214650/88465.terrain b/public/terrain/17/214650/88465.terrain new file mode 100644 index 000000000..df34e1bce Binary files /dev/null and b/public/terrain/17/214650/88465.terrain differ diff --git a/public/terrain/17/214650/88466.terrain b/public/terrain/17/214650/88466.terrain new file mode 100644 index 000000000..00d0ef427 Binary files /dev/null and b/public/terrain/17/214650/88466.terrain differ diff --git a/public/terrain/17/214650/88467.terrain b/public/terrain/17/214650/88467.terrain new file mode 100644 index 000000000..d1dad2830 Binary files /dev/null and b/public/terrain/17/214650/88467.terrain differ diff --git a/public/terrain/17/214650/88468.terrain b/public/terrain/17/214650/88468.terrain new file mode 100644 index 000000000..90ccd2bf1 Binary files /dev/null and b/public/terrain/17/214650/88468.terrain differ diff --git a/public/terrain/17/214650/88469.terrain b/public/terrain/17/214650/88469.terrain new file mode 100644 index 000000000..3666a3b38 Binary files /dev/null and b/public/terrain/17/214650/88469.terrain differ diff --git a/public/terrain/17/214650/88470.terrain b/public/terrain/17/214650/88470.terrain new file mode 100644 index 000000000..d23826e6d Binary files /dev/null and b/public/terrain/17/214650/88470.terrain differ diff --git a/public/terrain/17/214650/88471.terrain b/public/terrain/17/214650/88471.terrain new file mode 100644 index 000000000..4f81bd697 Binary files /dev/null and b/public/terrain/17/214650/88471.terrain differ diff --git a/public/terrain/17/214650/88472.terrain b/public/terrain/17/214650/88472.terrain new file mode 100644 index 000000000..bfd9be93b Binary files /dev/null and b/public/terrain/17/214650/88472.terrain differ diff --git a/public/terrain/17/214650/88473.terrain b/public/terrain/17/214650/88473.terrain new file mode 100644 index 000000000..27940e081 Binary files /dev/null and b/public/terrain/17/214650/88473.terrain differ diff --git a/public/terrain/17/214650/88474.terrain b/public/terrain/17/214650/88474.terrain new file mode 100644 index 000000000..1c78a9c3c Binary files /dev/null and b/public/terrain/17/214650/88474.terrain differ diff --git a/public/terrain/17/214650/88475.terrain b/public/terrain/17/214650/88475.terrain new file mode 100644 index 000000000..3adf0dfa7 Binary files /dev/null and b/public/terrain/17/214650/88475.terrain differ diff --git a/public/terrain/17/214650/88476.terrain b/public/terrain/17/214650/88476.terrain new file mode 100644 index 000000000..ffe931ae3 Binary files /dev/null and b/public/terrain/17/214650/88476.terrain differ diff --git a/public/terrain/17/214650/88477.terrain b/public/terrain/17/214650/88477.terrain new file mode 100644 index 000000000..bd5aa9752 Binary files /dev/null and b/public/terrain/17/214650/88477.terrain differ diff --git a/public/terrain/17/214650/88478.terrain b/public/terrain/17/214650/88478.terrain new file mode 100644 index 000000000..29b68289f Binary files /dev/null and b/public/terrain/17/214650/88478.terrain differ diff --git a/public/terrain/17/214650/88479.terrain b/public/terrain/17/214650/88479.terrain new file mode 100644 index 000000000..b48ba46c8 Binary files /dev/null and b/public/terrain/17/214650/88479.terrain differ diff --git a/public/terrain/17/214650/88480.terrain b/public/terrain/17/214650/88480.terrain new file mode 100644 index 000000000..49077cf0b Binary files /dev/null and b/public/terrain/17/214650/88480.terrain differ diff --git a/public/terrain/17/214650/88481.terrain b/public/terrain/17/214650/88481.terrain new file mode 100644 index 000000000..bb0305f3f Binary files /dev/null and b/public/terrain/17/214650/88481.terrain differ diff --git a/public/terrain/17/214650/88482.terrain b/public/terrain/17/214650/88482.terrain new file mode 100644 index 000000000..cf522e86d Binary files /dev/null and b/public/terrain/17/214650/88482.terrain differ diff --git a/public/terrain/17/214650/88483.terrain b/public/terrain/17/214650/88483.terrain new file mode 100644 index 000000000..fb51fc479 Binary files /dev/null and b/public/terrain/17/214650/88483.terrain differ diff --git a/public/terrain/17/214650/88484.terrain b/public/terrain/17/214650/88484.terrain new file mode 100644 index 000000000..d9a5adf28 Binary files /dev/null and b/public/terrain/17/214650/88484.terrain differ diff --git a/public/terrain/17/214650/88485.terrain b/public/terrain/17/214650/88485.terrain new file mode 100644 index 000000000..509b5ad22 Binary files /dev/null and b/public/terrain/17/214650/88485.terrain differ diff --git a/public/terrain/17/214650/88486.terrain b/public/terrain/17/214650/88486.terrain new file mode 100644 index 000000000..697d8b370 Binary files /dev/null and b/public/terrain/17/214650/88486.terrain differ diff --git a/public/terrain/17/214650/88487.terrain b/public/terrain/17/214650/88487.terrain new file mode 100644 index 000000000..d63da0267 Binary files /dev/null and b/public/terrain/17/214650/88487.terrain differ diff --git a/public/terrain/17/214650/88488.terrain b/public/terrain/17/214650/88488.terrain new file mode 100644 index 000000000..ef2a840d4 Binary files /dev/null and b/public/terrain/17/214650/88488.terrain differ diff --git a/public/terrain/17/214650/88489.terrain b/public/terrain/17/214650/88489.terrain new file mode 100644 index 000000000..1ebb9ba9e Binary files /dev/null and b/public/terrain/17/214650/88489.terrain differ diff --git a/public/terrain/17/214650/88490.terrain b/public/terrain/17/214650/88490.terrain new file mode 100644 index 000000000..a79e4e2a9 Binary files /dev/null and b/public/terrain/17/214650/88490.terrain differ diff --git a/public/terrain/17/214650/88491.terrain b/public/terrain/17/214650/88491.terrain new file mode 100644 index 000000000..d21b0acd9 Binary files /dev/null and b/public/terrain/17/214650/88491.terrain differ diff --git a/public/terrain/17/214650/88492.terrain b/public/terrain/17/214650/88492.terrain new file mode 100644 index 000000000..a577fb69d Binary files /dev/null and b/public/terrain/17/214650/88492.terrain differ diff --git a/public/terrain/17/214650/88493.terrain b/public/terrain/17/214650/88493.terrain new file mode 100644 index 000000000..34d570654 Binary files /dev/null and b/public/terrain/17/214650/88493.terrain differ diff --git a/public/terrain/17/214650/88494.terrain b/public/terrain/17/214650/88494.terrain new file mode 100644 index 000000000..1789743a6 Binary files /dev/null and b/public/terrain/17/214650/88494.terrain differ diff --git a/public/terrain/17/214650/88495.terrain b/public/terrain/17/214650/88495.terrain new file mode 100644 index 000000000..8d8ace051 Binary files /dev/null and b/public/terrain/17/214650/88495.terrain differ diff --git a/public/terrain/17/214650/88496.terrain b/public/terrain/17/214650/88496.terrain new file mode 100644 index 000000000..2e850d2c0 Binary files /dev/null and b/public/terrain/17/214650/88496.terrain differ diff --git a/public/terrain/17/214650/88497.terrain b/public/terrain/17/214650/88497.terrain new file mode 100644 index 000000000..58ddf38f6 Binary files /dev/null and b/public/terrain/17/214650/88497.terrain differ diff --git a/public/terrain/17/214650/88498.terrain b/public/terrain/17/214650/88498.terrain new file mode 100644 index 000000000..d47c065cd Binary files /dev/null and b/public/terrain/17/214650/88498.terrain differ diff --git a/public/terrain/17/214650/88499.terrain b/public/terrain/17/214650/88499.terrain new file mode 100644 index 000000000..4c8eb097b Binary files /dev/null and b/public/terrain/17/214650/88499.terrain differ diff --git a/public/terrain/17/214650/88500.terrain b/public/terrain/17/214650/88500.terrain new file mode 100644 index 000000000..9558069c4 Binary files /dev/null and b/public/terrain/17/214650/88500.terrain differ diff --git a/public/terrain/17/214650/88501.terrain b/public/terrain/17/214650/88501.terrain new file mode 100644 index 000000000..58d4aaacb Binary files /dev/null and b/public/terrain/17/214650/88501.terrain differ diff --git a/public/terrain/17/214650/88502.terrain b/public/terrain/17/214650/88502.terrain new file mode 100644 index 000000000..f24cb6761 Binary files /dev/null and b/public/terrain/17/214650/88502.terrain differ diff --git a/public/terrain/17/214650/88503.terrain b/public/terrain/17/214650/88503.terrain new file mode 100644 index 000000000..40fda3276 Binary files /dev/null and b/public/terrain/17/214650/88503.terrain differ diff --git a/public/terrain/17/214650/88504.terrain b/public/terrain/17/214650/88504.terrain new file mode 100644 index 000000000..f29ca5dc9 Binary files /dev/null and b/public/terrain/17/214650/88504.terrain differ diff --git a/public/terrain/17/214650/88505.terrain b/public/terrain/17/214650/88505.terrain new file mode 100644 index 000000000..5b9559f1a Binary files /dev/null and b/public/terrain/17/214650/88505.terrain differ diff --git a/public/terrain/17/214650/88506.terrain b/public/terrain/17/214650/88506.terrain new file mode 100644 index 000000000..336101b71 Binary files /dev/null and b/public/terrain/17/214650/88506.terrain differ diff --git a/public/terrain/17/214650/88507.terrain b/public/terrain/17/214650/88507.terrain new file mode 100644 index 000000000..b96915a12 Binary files /dev/null and b/public/terrain/17/214650/88507.terrain differ diff --git a/public/terrain/17/214650/88508.terrain b/public/terrain/17/214650/88508.terrain new file mode 100644 index 000000000..0c0a75f37 Binary files /dev/null and b/public/terrain/17/214650/88508.terrain differ diff --git a/public/terrain/17/214650/88509.terrain b/public/terrain/17/214650/88509.terrain new file mode 100644 index 000000000..b7d9305d5 Binary files /dev/null and b/public/terrain/17/214650/88509.terrain differ diff --git a/public/terrain/17/214650/88510.terrain b/public/terrain/17/214650/88510.terrain new file mode 100644 index 000000000..9cfcee5a9 Binary files /dev/null and b/public/terrain/17/214650/88510.terrain differ diff --git a/public/terrain/17/214650/88511.terrain b/public/terrain/17/214650/88511.terrain new file mode 100644 index 000000000..911abd72c Binary files /dev/null and b/public/terrain/17/214650/88511.terrain differ diff --git a/public/terrain/17/214650/88512.terrain b/public/terrain/17/214650/88512.terrain new file mode 100644 index 000000000..a8391fe9f Binary files /dev/null and b/public/terrain/17/214650/88512.terrain differ diff --git a/public/terrain/17/214650/88513.terrain b/public/terrain/17/214650/88513.terrain new file mode 100644 index 000000000..af651352e Binary files /dev/null and b/public/terrain/17/214650/88513.terrain differ diff --git a/public/terrain/17/214650/88514.terrain b/public/terrain/17/214650/88514.terrain new file mode 100644 index 000000000..c0ecce81e Binary files /dev/null and b/public/terrain/17/214650/88514.terrain differ diff --git a/public/terrain/17/214651/88435.terrain b/public/terrain/17/214651/88435.terrain new file mode 100644 index 000000000..461fa7fec Binary files /dev/null and b/public/terrain/17/214651/88435.terrain differ diff --git a/public/terrain/17/214651/88436.terrain b/public/terrain/17/214651/88436.terrain new file mode 100644 index 000000000..33349923d Binary files /dev/null and b/public/terrain/17/214651/88436.terrain differ diff --git a/public/terrain/17/214651/88437.terrain b/public/terrain/17/214651/88437.terrain new file mode 100644 index 000000000..a5bf41348 Binary files /dev/null and b/public/terrain/17/214651/88437.terrain differ diff --git a/public/terrain/17/214651/88438.terrain b/public/terrain/17/214651/88438.terrain new file mode 100644 index 000000000..ca439ca94 Binary files /dev/null and b/public/terrain/17/214651/88438.terrain differ diff --git a/public/terrain/17/214651/88439.terrain b/public/terrain/17/214651/88439.terrain new file mode 100644 index 000000000..912c2bb90 Binary files /dev/null and b/public/terrain/17/214651/88439.terrain differ diff --git a/public/terrain/17/214651/88440.terrain b/public/terrain/17/214651/88440.terrain new file mode 100644 index 000000000..500379637 Binary files /dev/null and b/public/terrain/17/214651/88440.terrain differ diff --git a/public/terrain/17/214651/88441.terrain b/public/terrain/17/214651/88441.terrain new file mode 100644 index 000000000..ec58d44af Binary files /dev/null and b/public/terrain/17/214651/88441.terrain differ diff --git a/public/terrain/17/214651/88442.terrain b/public/terrain/17/214651/88442.terrain new file mode 100644 index 000000000..7ebc21719 Binary files /dev/null and b/public/terrain/17/214651/88442.terrain differ diff --git a/public/terrain/17/214651/88443.terrain b/public/terrain/17/214651/88443.terrain new file mode 100644 index 000000000..43e321479 Binary files /dev/null and b/public/terrain/17/214651/88443.terrain differ diff --git a/public/terrain/17/214651/88444.terrain b/public/terrain/17/214651/88444.terrain new file mode 100644 index 000000000..092d7a65b Binary files /dev/null and b/public/terrain/17/214651/88444.terrain differ diff --git a/public/terrain/17/214651/88445.terrain b/public/terrain/17/214651/88445.terrain new file mode 100644 index 000000000..2b49b2018 Binary files /dev/null and b/public/terrain/17/214651/88445.terrain differ diff --git a/public/terrain/17/214651/88446.terrain b/public/terrain/17/214651/88446.terrain new file mode 100644 index 000000000..a89bbeb2c Binary files /dev/null and b/public/terrain/17/214651/88446.terrain differ diff --git a/public/terrain/17/214651/88447.terrain b/public/terrain/17/214651/88447.terrain new file mode 100644 index 000000000..1e26fc280 Binary files /dev/null and b/public/terrain/17/214651/88447.terrain differ diff --git a/public/terrain/17/214651/88448.terrain b/public/terrain/17/214651/88448.terrain new file mode 100644 index 000000000..edc06b272 Binary files /dev/null and b/public/terrain/17/214651/88448.terrain differ diff --git a/public/terrain/17/214651/88449.terrain b/public/terrain/17/214651/88449.terrain new file mode 100644 index 000000000..fa51f1bcb Binary files /dev/null and b/public/terrain/17/214651/88449.terrain differ diff --git a/public/terrain/17/214651/88450.terrain b/public/terrain/17/214651/88450.terrain new file mode 100644 index 000000000..4d19f2a1e Binary files /dev/null and b/public/terrain/17/214651/88450.terrain differ diff --git a/public/terrain/17/214651/88451.terrain b/public/terrain/17/214651/88451.terrain new file mode 100644 index 000000000..93cac49e9 Binary files /dev/null and b/public/terrain/17/214651/88451.terrain differ diff --git a/public/terrain/17/214651/88452.terrain b/public/terrain/17/214651/88452.terrain new file mode 100644 index 000000000..656c36543 Binary files /dev/null and b/public/terrain/17/214651/88452.terrain differ diff --git a/public/terrain/17/214651/88453.terrain b/public/terrain/17/214651/88453.terrain new file mode 100644 index 000000000..28b105f7d Binary files /dev/null and b/public/terrain/17/214651/88453.terrain differ diff --git a/public/terrain/17/214651/88454.terrain b/public/terrain/17/214651/88454.terrain new file mode 100644 index 000000000..efa506979 Binary files /dev/null and b/public/terrain/17/214651/88454.terrain differ diff --git a/public/terrain/17/214651/88455.terrain b/public/terrain/17/214651/88455.terrain new file mode 100644 index 000000000..eb028c075 Binary files /dev/null and b/public/terrain/17/214651/88455.terrain differ diff --git a/public/terrain/17/214651/88456.terrain b/public/terrain/17/214651/88456.terrain new file mode 100644 index 000000000..ba85e9229 Binary files /dev/null and b/public/terrain/17/214651/88456.terrain differ diff --git a/public/terrain/17/214651/88457.terrain b/public/terrain/17/214651/88457.terrain new file mode 100644 index 000000000..082e1a5d3 Binary files /dev/null and b/public/terrain/17/214651/88457.terrain differ diff --git a/public/terrain/17/214651/88458.terrain b/public/terrain/17/214651/88458.terrain new file mode 100644 index 000000000..37cf1a764 Binary files /dev/null and b/public/terrain/17/214651/88458.terrain differ diff --git a/public/terrain/17/214651/88459.terrain b/public/terrain/17/214651/88459.terrain new file mode 100644 index 000000000..1ba5a8be2 Binary files /dev/null and b/public/terrain/17/214651/88459.terrain differ diff --git a/public/terrain/17/214651/88460.terrain b/public/terrain/17/214651/88460.terrain new file mode 100644 index 000000000..35dceb2a0 Binary files /dev/null and b/public/terrain/17/214651/88460.terrain differ diff --git a/public/terrain/17/214651/88461.terrain b/public/terrain/17/214651/88461.terrain new file mode 100644 index 000000000..a86eac159 Binary files /dev/null and b/public/terrain/17/214651/88461.terrain differ diff --git a/public/terrain/17/214651/88462.terrain b/public/terrain/17/214651/88462.terrain new file mode 100644 index 000000000..cf361f71a Binary files /dev/null and b/public/terrain/17/214651/88462.terrain differ diff --git a/public/terrain/17/214651/88463.terrain b/public/terrain/17/214651/88463.terrain new file mode 100644 index 000000000..f3aed8df9 Binary files /dev/null and b/public/terrain/17/214651/88463.terrain differ diff --git a/public/terrain/17/214651/88464.terrain b/public/terrain/17/214651/88464.terrain new file mode 100644 index 000000000..95d87b9b3 Binary files /dev/null and b/public/terrain/17/214651/88464.terrain differ diff --git a/public/terrain/17/214651/88465.terrain b/public/terrain/17/214651/88465.terrain new file mode 100644 index 000000000..6866633d0 Binary files /dev/null and b/public/terrain/17/214651/88465.terrain differ diff --git a/public/terrain/17/214651/88466.terrain b/public/terrain/17/214651/88466.terrain new file mode 100644 index 000000000..ce197806a Binary files /dev/null and b/public/terrain/17/214651/88466.terrain differ diff --git a/public/terrain/17/214651/88467.terrain b/public/terrain/17/214651/88467.terrain new file mode 100644 index 000000000..356b276ed Binary files /dev/null and b/public/terrain/17/214651/88467.terrain differ diff --git a/public/terrain/17/214651/88468.terrain b/public/terrain/17/214651/88468.terrain new file mode 100644 index 000000000..315799f85 Binary files /dev/null and b/public/terrain/17/214651/88468.terrain differ diff --git a/public/terrain/17/214651/88469.terrain b/public/terrain/17/214651/88469.terrain new file mode 100644 index 000000000..44be33a1b Binary files /dev/null and b/public/terrain/17/214651/88469.terrain differ diff --git a/public/terrain/17/214651/88470.terrain b/public/terrain/17/214651/88470.terrain new file mode 100644 index 000000000..9e9180b2c Binary files /dev/null and b/public/terrain/17/214651/88470.terrain differ diff --git a/public/terrain/17/214651/88471.terrain b/public/terrain/17/214651/88471.terrain new file mode 100644 index 000000000..337afea21 Binary files /dev/null and b/public/terrain/17/214651/88471.terrain differ diff --git a/public/terrain/17/214651/88472.terrain b/public/terrain/17/214651/88472.terrain new file mode 100644 index 000000000..303e42c25 Binary files /dev/null and b/public/terrain/17/214651/88472.terrain differ diff --git a/public/terrain/17/214651/88473.terrain b/public/terrain/17/214651/88473.terrain new file mode 100644 index 000000000..284ca75d6 Binary files /dev/null and b/public/terrain/17/214651/88473.terrain differ diff --git a/public/terrain/17/214651/88474.terrain b/public/terrain/17/214651/88474.terrain new file mode 100644 index 000000000..cfc6df0ea Binary files /dev/null and b/public/terrain/17/214651/88474.terrain differ diff --git a/public/terrain/17/214651/88475.terrain b/public/terrain/17/214651/88475.terrain new file mode 100644 index 000000000..ed390c6da Binary files /dev/null and b/public/terrain/17/214651/88475.terrain differ diff --git a/public/terrain/17/214651/88476.terrain b/public/terrain/17/214651/88476.terrain new file mode 100644 index 000000000..d2df883b2 Binary files /dev/null and b/public/terrain/17/214651/88476.terrain differ diff --git a/public/terrain/17/214651/88477.terrain b/public/terrain/17/214651/88477.terrain new file mode 100644 index 000000000..e35ee8fb2 Binary files /dev/null and b/public/terrain/17/214651/88477.terrain differ diff --git a/public/terrain/17/214651/88478.terrain b/public/terrain/17/214651/88478.terrain new file mode 100644 index 000000000..fe3a75b1d Binary files /dev/null and b/public/terrain/17/214651/88478.terrain differ diff --git a/public/terrain/17/214651/88479.terrain b/public/terrain/17/214651/88479.terrain new file mode 100644 index 000000000..44b451f6b Binary files /dev/null and b/public/terrain/17/214651/88479.terrain differ diff --git a/public/terrain/17/214651/88480.terrain b/public/terrain/17/214651/88480.terrain new file mode 100644 index 000000000..c424c8cb6 Binary files /dev/null and b/public/terrain/17/214651/88480.terrain differ diff --git a/public/terrain/17/214651/88481.terrain b/public/terrain/17/214651/88481.terrain new file mode 100644 index 000000000..8a17baee3 Binary files /dev/null and b/public/terrain/17/214651/88481.terrain differ diff --git a/public/terrain/17/214651/88482.terrain b/public/terrain/17/214651/88482.terrain new file mode 100644 index 000000000..71b7f98f6 Binary files /dev/null and b/public/terrain/17/214651/88482.terrain differ diff --git a/public/terrain/17/214651/88483.terrain b/public/terrain/17/214651/88483.terrain new file mode 100644 index 000000000..7c87ceb5c Binary files /dev/null and b/public/terrain/17/214651/88483.terrain differ diff --git a/public/terrain/17/214651/88484.terrain b/public/terrain/17/214651/88484.terrain new file mode 100644 index 000000000..cf82571f9 Binary files /dev/null and b/public/terrain/17/214651/88484.terrain differ diff --git a/public/terrain/17/214651/88485.terrain b/public/terrain/17/214651/88485.terrain new file mode 100644 index 000000000..a019428ca Binary files /dev/null and b/public/terrain/17/214651/88485.terrain differ diff --git a/public/terrain/17/214651/88486.terrain b/public/terrain/17/214651/88486.terrain new file mode 100644 index 000000000..224c02af5 Binary files /dev/null and b/public/terrain/17/214651/88486.terrain differ diff --git a/public/terrain/17/214651/88487.terrain b/public/terrain/17/214651/88487.terrain new file mode 100644 index 000000000..e19ad9f2b Binary files /dev/null and b/public/terrain/17/214651/88487.terrain differ diff --git a/public/terrain/17/214651/88488.terrain b/public/terrain/17/214651/88488.terrain new file mode 100644 index 000000000..c7b00cc36 Binary files /dev/null and b/public/terrain/17/214651/88488.terrain differ diff --git a/public/terrain/17/214651/88489.terrain b/public/terrain/17/214651/88489.terrain new file mode 100644 index 000000000..776f1e667 Binary files /dev/null and b/public/terrain/17/214651/88489.terrain differ diff --git a/public/terrain/17/214651/88490.terrain b/public/terrain/17/214651/88490.terrain new file mode 100644 index 000000000..a1edc28a3 Binary files /dev/null and b/public/terrain/17/214651/88490.terrain differ diff --git a/public/terrain/17/214651/88491.terrain b/public/terrain/17/214651/88491.terrain new file mode 100644 index 000000000..d68f0061a Binary files /dev/null and b/public/terrain/17/214651/88491.terrain differ diff --git a/public/terrain/17/214651/88492.terrain b/public/terrain/17/214651/88492.terrain new file mode 100644 index 000000000..28bae498e Binary files /dev/null and b/public/terrain/17/214651/88492.terrain differ diff --git a/public/terrain/17/214651/88493.terrain b/public/terrain/17/214651/88493.terrain new file mode 100644 index 000000000..b737f8e32 Binary files /dev/null and b/public/terrain/17/214651/88493.terrain differ diff --git a/public/terrain/17/214651/88494.terrain b/public/terrain/17/214651/88494.terrain new file mode 100644 index 000000000..40081a4da Binary files /dev/null and b/public/terrain/17/214651/88494.terrain differ diff --git a/public/terrain/17/214651/88495.terrain b/public/terrain/17/214651/88495.terrain new file mode 100644 index 000000000..aded7aa70 Binary files /dev/null and b/public/terrain/17/214651/88495.terrain differ diff --git a/public/terrain/17/214651/88496.terrain b/public/terrain/17/214651/88496.terrain new file mode 100644 index 000000000..307fd395c Binary files /dev/null and b/public/terrain/17/214651/88496.terrain differ diff --git a/public/terrain/17/214651/88497.terrain b/public/terrain/17/214651/88497.terrain new file mode 100644 index 000000000..d2cfca32b Binary files /dev/null and b/public/terrain/17/214651/88497.terrain differ diff --git a/public/terrain/17/214651/88498.terrain b/public/terrain/17/214651/88498.terrain new file mode 100644 index 000000000..e105c39d8 Binary files /dev/null and b/public/terrain/17/214651/88498.terrain differ diff --git a/public/terrain/17/214651/88499.terrain b/public/terrain/17/214651/88499.terrain new file mode 100644 index 000000000..b07dd3b10 Binary files /dev/null and b/public/terrain/17/214651/88499.terrain differ diff --git a/public/terrain/17/214651/88500.terrain b/public/terrain/17/214651/88500.terrain new file mode 100644 index 000000000..827c99077 Binary files /dev/null and b/public/terrain/17/214651/88500.terrain differ diff --git a/public/terrain/17/214651/88501.terrain b/public/terrain/17/214651/88501.terrain new file mode 100644 index 000000000..7497998c5 Binary files /dev/null and b/public/terrain/17/214651/88501.terrain differ diff --git a/public/terrain/17/214651/88502.terrain b/public/terrain/17/214651/88502.terrain new file mode 100644 index 000000000..c90693c40 Binary files /dev/null and b/public/terrain/17/214651/88502.terrain differ diff --git a/public/terrain/17/214651/88503.terrain b/public/terrain/17/214651/88503.terrain new file mode 100644 index 000000000..a431940ad Binary files /dev/null and b/public/terrain/17/214651/88503.terrain differ diff --git a/public/terrain/17/214651/88504.terrain b/public/terrain/17/214651/88504.terrain new file mode 100644 index 000000000..99b8f815a Binary files /dev/null and b/public/terrain/17/214651/88504.terrain differ diff --git a/public/terrain/17/214651/88505.terrain b/public/terrain/17/214651/88505.terrain new file mode 100644 index 000000000..060efab0b Binary files /dev/null and b/public/terrain/17/214651/88505.terrain differ diff --git a/public/terrain/17/214651/88506.terrain b/public/terrain/17/214651/88506.terrain new file mode 100644 index 000000000..d3f532a5f Binary files /dev/null and b/public/terrain/17/214651/88506.terrain differ diff --git a/public/terrain/17/214651/88507.terrain b/public/terrain/17/214651/88507.terrain new file mode 100644 index 000000000..d141b5c4d Binary files /dev/null and b/public/terrain/17/214651/88507.terrain differ diff --git a/public/terrain/17/214651/88508.terrain b/public/terrain/17/214651/88508.terrain new file mode 100644 index 000000000..2b22dfe83 Binary files /dev/null and b/public/terrain/17/214651/88508.terrain differ diff --git a/public/terrain/17/214651/88509.terrain b/public/terrain/17/214651/88509.terrain new file mode 100644 index 000000000..8cc0dc873 Binary files /dev/null and b/public/terrain/17/214651/88509.terrain differ diff --git a/public/terrain/17/214651/88510.terrain b/public/terrain/17/214651/88510.terrain new file mode 100644 index 000000000..ed2440742 Binary files /dev/null and b/public/terrain/17/214651/88510.terrain differ diff --git a/public/terrain/17/214651/88511.terrain b/public/terrain/17/214651/88511.terrain new file mode 100644 index 000000000..232d5812e Binary files /dev/null and b/public/terrain/17/214651/88511.terrain differ diff --git a/public/terrain/17/214651/88512.terrain b/public/terrain/17/214651/88512.terrain new file mode 100644 index 000000000..cd85210d8 Binary files /dev/null and b/public/terrain/17/214651/88512.terrain differ diff --git a/public/terrain/17/214651/88513.terrain b/public/terrain/17/214651/88513.terrain new file mode 100644 index 000000000..1b71e1f66 Binary files /dev/null and b/public/terrain/17/214651/88513.terrain differ diff --git a/public/terrain/17/214651/88514.terrain b/public/terrain/17/214651/88514.terrain new file mode 100644 index 000000000..461deea79 Binary files /dev/null and b/public/terrain/17/214651/88514.terrain differ diff --git a/public/terrain/17/214652/88435.terrain b/public/terrain/17/214652/88435.terrain new file mode 100644 index 000000000..318032371 Binary files /dev/null and b/public/terrain/17/214652/88435.terrain differ diff --git a/public/terrain/17/214652/88436.terrain b/public/terrain/17/214652/88436.terrain new file mode 100644 index 000000000..f44024a29 Binary files /dev/null and b/public/terrain/17/214652/88436.terrain differ diff --git a/public/terrain/17/214652/88437.terrain b/public/terrain/17/214652/88437.terrain new file mode 100644 index 000000000..59446a453 Binary files /dev/null and b/public/terrain/17/214652/88437.terrain differ diff --git a/public/terrain/17/214652/88438.terrain b/public/terrain/17/214652/88438.terrain new file mode 100644 index 000000000..f454da0b3 Binary files /dev/null and b/public/terrain/17/214652/88438.terrain differ diff --git a/public/terrain/17/214652/88439.terrain b/public/terrain/17/214652/88439.terrain new file mode 100644 index 000000000..f3ac2a1a7 Binary files /dev/null and b/public/terrain/17/214652/88439.terrain differ diff --git a/public/terrain/17/214652/88440.terrain b/public/terrain/17/214652/88440.terrain new file mode 100644 index 000000000..759b5dff3 Binary files /dev/null and b/public/terrain/17/214652/88440.terrain differ diff --git a/public/terrain/17/214652/88441.terrain b/public/terrain/17/214652/88441.terrain new file mode 100644 index 000000000..da2a5cc53 Binary files /dev/null and b/public/terrain/17/214652/88441.terrain differ diff --git a/public/terrain/17/214652/88442.terrain b/public/terrain/17/214652/88442.terrain new file mode 100644 index 000000000..2ad3cfb0d Binary files /dev/null and b/public/terrain/17/214652/88442.terrain differ diff --git a/public/terrain/17/214652/88443.terrain b/public/terrain/17/214652/88443.terrain new file mode 100644 index 000000000..4f3ae4399 Binary files /dev/null and b/public/terrain/17/214652/88443.terrain differ diff --git a/public/terrain/17/214652/88444.terrain b/public/terrain/17/214652/88444.terrain new file mode 100644 index 000000000..117068cd1 Binary files /dev/null and b/public/terrain/17/214652/88444.terrain differ diff --git a/public/terrain/17/214652/88445.terrain b/public/terrain/17/214652/88445.terrain new file mode 100644 index 000000000..5615d1dc2 Binary files /dev/null and b/public/terrain/17/214652/88445.terrain differ diff --git a/public/terrain/17/214652/88446.terrain b/public/terrain/17/214652/88446.terrain new file mode 100644 index 000000000..4681067aa Binary files /dev/null and b/public/terrain/17/214652/88446.terrain differ diff --git a/public/terrain/17/214652/88447.terrain b/public/terrain/17/214652/88447.terrain new file mode 100644 index 000000000..5255b37ca Binary files /dev/null and b/public/terrain/17/214652/88447.terrain differ diff --git a/public/terrain/17/214652/88448.terrain b/public/terrain/17/214652/88448.terrain new file mode 100644 index 000000000..3c3f13ae4 Binary files /dev/null and b/public/terrain/17/214652/88448.terrain differ diff --git a/public/terrain/17/214652/88449.terrain b/public/terrain/17/214652/88449.terrain new file mode 100644 index 000000000..397c94831 Binary files /dev/null and b/public/terrain/17/214652/88449.terrain differ diff --git a/public/terrain/17/214652/88450.terrain b/public/terrain/17/214652/88450.terrain new file mode 100644 index 000000000..0ac25b929 Binary files /dev/null and b/public/terrain/17/214652/88450.terrain differ diff --git a/public/terrain/17/214652/88451.terrain b/public/terrain/17/214652/88451.terrain new file mode 100644 index 000000000..dcaae8a00 Binary files /dev/null and b/public/terrain/17/214652/88451.terrain differ diff --git a/public/terrain/17/214652/88452.terrain b/public/terrain/17/214652/88452.terrain new file mode 100644 index 000000000..fd40d7af7 Binary files /dev/null and b/public/terrain/17/214652/88452.terrain differ diff --git a/public/terrain/17/214652/88453.terrain b/public/terrain/17/214652/88453.terrain new file mode 100644 index 000000000..80dcbe1d5 Binary files /dev/null and b/public/terrain/17/214652/88453.terrain differ diff --git a/public/terrain/17/214652/88454.terrain b/public/terrain/17/214652/88454.terrain new file mode 100644 index 000000000..8094693b7 Binary files /dev/null and b/public/terrain/17/214652/88454.terrain differ diff --git a/public/terrain/17/214652/88455.terrain b/public/terrain/17/214652/88455.terrain new file mode 100644 index 000000000..0a0574f71 Binary files /dev/null and b/public/terrain/17/214652/88455.terrain differ diff --git a/public/terrain/17/214652/88456.terrain b/public/terrain/17/214652/88456.terrain new file mode 100644 index 000000000..53acb184d Binary files /dev/null and b/public/terrain/17/214652/88456.terrain differ diff --git a/public/terrain/17/214652/88457.terrain b/public/terrain/17/214652/88457.terrain new file mode 100644 index 000000000..e8f62504a Binary files /dev/null and b/public/terrain/17/214652/88457.terrain differ diff --git a/public/terrain/17/214652/88458.terrain b/public/terrain/17/214652/88458.terrain new file mode 100644 index 000000000..fc6fc4d25 Binary files /dev/null and b/public/terrain/17/214652/88458.terrain differ diff --git a/public/terrain/17/214652/88459.terrain b/public/terrain/17/214652/88459.terrain new file mode 100644 index 000000000..3e0b49868 Binary files /dev/null and b/public/terrain/17/214652/88459.terrain differ diff --git a/public/terrain/17/214652/88460.terrain b/public/terrain/17/214652/88460.terrain new file mode 100644 index 000000000..ec49eeda6 Binary files /dev/null and b/public/terrain/17/214652/88460.terrain differ diff --git a/public/terrain/17/214652/88461.terrain b/public/terrain/17/214652/88461.terrain new file mode 100644 index 000000000..4b2c971fd Binary files /dev/null and b/public/terrain/17/214652/88461.terrain differ diff --git a/public/terrain/17/214652/88462.terrain b/public/terrain/17/214652/88462.terrain new file mode 100644 index 000000000..782a7fab4 Binary files /dev/null and b/public/terrain/17/214652/88462.terrain differ diff --git a/public/terrain/17/214652/88463.terrain b/public/terrain/17/214652/88463.terrain new file mode 100644 index 000000000..1b4340a65 Binary files /dev/null and b/public/terrain/17/214652/88463.terrain differ diff --git a/public/terrain/17/214652/88464.terrain b/public/terrain/17/214652/88464.terrain new file mode 100644 index 000000000..9636c6b8d Binary files /dev/null and b/public/terrain/17/214652/88464.terrain differ diff --git a/public/terrain/17/214652/88465.terrain b/public/terrain/17/214652/88465.terrain new file mode 100644 index 000000000..4fe730101 Binary files /dev/null and b/public/terrain/17/214652/88465.terrain differ diff --git a/public/terrain/17/214652/88466.terrain b/public/terrain/17/214652/88466.terrain new file mode 100644 index 000000000..80ef98579 Binary files /dev/null and b/public/terrain/17/214652/88466.terrain differ diff --git a/public/terrain/17/214652/88467.terrain b/public/terrain/17/214652/88467.terrain new file mode 100644 index 000000000..472894bb6 Binary files /dev/null and b/public/terrain/17/214652/88467.terrain differ diff --git a/public/terrain/17/214652/88468.terrain b/public/terrain/17/214652/88468.terrain new file mode 100644 index 000000000..d9dfe3efb Binary files /dev/null and b/public/terrain/17/214652/88468.terrain differ diff --git a/public/terrain/17/214652/88469.terrain b/public/terrain/17/214652/88469.terrain new file mode 100644 index 000000000..2e14ffb8a Binary files /dev/null and b/public/terrain/17/214652/88469.terrain differ diff --git a/public/terrain/17/214652/88470.terrain b/public/terrain/17/214652/88470.terrain new file mode 100644 index 000000000..9885df5a9 Binary files /dev/null and b/public/terrain/17/214652/88470.terrain differ diff --git a/public/terrain/17/214652/88471.terrain b/public/terrain/17/214652/88471.terrain new file mode 100644 index 000000000..0aa22453f Binary files /dev/null and b/public/terrain/17/214652/88471.terrain differ diff --git a/public/terrain/17/214652/88472.terrain b/public/terrain/17/214652/88472.terrain new file mode 100644 index 000000000..ac85db693 Binary files /dev/null and b/public/terrain/17/214652/88472.terrain differ diff --git a/public/terrain/17/214652/88473.terrain b/public/terrain/17/214652/88473.terrain new file mode 100644 index 000000000..e40a89e70 Binary files /dev/null and b/public/terrain/17/214652/88473.terrain differ diff --git a/public/terrain/17/214652/88474.terrain b/public/terrain/17/214652/88474.terrain new file mode 100644 index 000000000..c3016c6f7 Binary files /dev/null and b/public/terrain/17/214652/88474.terrain differ diff --git a/public/terrain/17/214652/88475.terrain b/public/terrain/17/214652/88475.terrain new file mode 100644 index 000000000..98befd432 Binary files /dev/null and b/public/terrain/17/214652/88475.terrain differ diff --git a/public/terrain/17/214652/88476.terrain b/public/terrain/17/214652/88476.terrain new file mode 100644 index 000000000..761183377 Binary files /dev/null and b/public/terrain/17/214652/88476.terrain differ diff --git a/public/terrain/17/214652/88477.terrain b/public/terrain/17/214652/88477.terrain new file mode 100644 index 000000000..1be6754f6 Binary files /dev/null and b/public/terrain/17/214652/88477.terrain differ diff --git a/public/terrain/17/214652/88478.terrain b/public/terrain/17/214652/88478.terrain new file mode 100644 index 000000000..4fd6de275 Binary files /dev/null and b/public/terrain/17/214652/88478.terrain differ diff --git a/public/terrain/17/214652/88479.terrain b/public/terrain/17/214652/88479.terrain new file mode 100644 index 000000000..aaa2e9c00 Binary files /dev/null and b/public/terrain/17/214652/88479.terrain differ diff --git a/public/terrain/17/214652/88480.terrain b/public/terrain/17/214652/88480.terrain new file mode 100644 index 000000000..0d2f14f81 Binary files /dev/null and b/public/terrain/17/214652/88480.terrain differ diff --git a/public/terrain/17/214652/88481.terrain b/public/terrain/17/214652/88481.terrain new file mode 100644 index 000000000..4a9c8ae2b Binary files /dev/null and b/public/terrain/17/214652/88481.terrain differ diff --git a/public/terrain/17/214652/88482.terrain b/public/terrain/17/214652/88482.terrain new file mode 100644 index 000000000..fe071f350 Binary files /dev/null and b/public/terrain/17/214652/88482.terrain differ diff --git a/public/terrain/17/214652/88483.terrain b/public/terrain/17/214652/88483.terrain new file mode 100644 index 000000000..a1be81d97 Binary files /dev/null and b/public/terrain/17/214652/88483.terrain differ diff --git a/public/terrain/17/214652/88484.terrain b/public/terrain/17/214652/88484.terrain new file mode 100644 index 000000000..812ac0cc9 Binary files /dev/null and b/public/terrain/17/214652/88484.terrain differ diff --git a/public/terrain/17/214652/88485.terrain b/public/terrain/17/214652/88485.terrain new file mode 100644 index 000000000..65c895a8b Binary files /dev/null and b/public/terrain/17/214652/88485.terrain differ diff --git a/public/terrain/17/214652/88486.terrain b/public/terrain/17/214652/88486.terrain new file mode 100644 index 000000000..530ad0227 Binary files /dev/null and b/public/terrain/17/214652/88486.terrain differ diff --git a/public/terrain/17/214652/88487.terrain b/public/terrain/17/214652/88487.terrain new file mode 100644 index 000000000..d8e1a92b3 Binary files /dev/null and b/public/terrain/17/214652/88487.terrain differ diff --git a/public/terrain/17/214652/88488.terrain b/public/terrain/17/214652/88488.terrain new file mode 100644 index 000000000..60be83419 Binary files /dev/null and b/public/terrain/17/214652/88488.terrain differ diff --git a/public/terrain/17/214652/88489.terrain b/public/terrain/17/214652/88489.terrain new file mode 100644 index 000000000..3e03b7eda Binary files /dev/null and b/public/terrain/17/214652/88489.terrain differ diff --git a/public/terrain/17/214652/88490.terrain b/public/terrain/17/214652/88490.terrain new file mode 100644 index 000000000..a185318fc Binary files /dev/null and b/public/terrain/17/214652/88490.terrain differ diff --git a/public/terrain/17/214652/88491.terrain b/public/terrain/17/214652/88491.terrain new file mode 100644 index 000000000..4581848b1 Binary files /dev/null and b/public/terrain/17/214652/88491.terrain differ diff --git a/public/terrain/17/214652/88492.terrain b/public/terrain/17/214652/88492.terrain new file mode 100644 index 000000000..7868bb0c5 Binary files /dev/null and b/public/terrain/17/214652/88492.terrain differ diff --git a/public/terrain/17/214652/88493.terrain b/public/terrain/17/214652/88493.terrain new file mode 100644 index 000000000..f20a6ecdd Binary files /dev/null and b/public/terrain/17/214652/88493.terrain differ diff --git a/public/terrain/17/214652/88494.terrain b/public/terrain/17/214652/88494.terrain new file mode 100644 index 000000000..e97494f9a Binary files /dev/null and b/public/terrain/17/214652/88494.terrain differ diff --git a/public/terrain/17/214652/88495.terrain b/public/terrain/17/214652/88495.terrain new file mode 100644 index 000000000..858972a09 Binary files /dev/null and b/public/terrain/17/214652/88495.terrain differ diff --git a/public/terrain/17/214652/88496.terrain b/public/terrain/17/214652/88496.terrain new file mode 100644 index 000000000..57ef42dfa Binary files /dev/null and b/public/terrain/17/214652/88496.terrain differ diff --git a/public/terrain/17/214652/88497.terrain b/public/terrain/17/214652/88497.terrain new file mode 100644 index 000000000..20899c134 Binary files /dev/null and b/public/terrain/17/214652/88497.terrain differ diff --git a/public/terrain/17/214652/88498.terrain b/public/terrain/17/214652/88498.terrain new file mode 100644 index 000000000..a843e6fa3 Binary files /dev/null and b/public/terrain/17/214652/88498.terrain differ diff --git a/public/terrain/17/214652/88499.terrain b/public/terrain/17/214652/88499.terrain new file mode 100644 index 000000000..b36058508 Binary files /dev/null and b/public/terrain/17/214652/88499.terrain differ diff --git a/public/terrain/17/214652/88500.terrain b/public/terrain/17/214652/88500.terrain new file mode 100644 index 000000000..d2d21ce7c Binary files /dev/null and b/public/terrain/17/214652/88500.terrain differ diff --git a/public/terrain/17/214652/88501.terrain b/public/terrain/17/214652/88501.terrain new file mode 100644 index 000000000..362527efc Binary files /dev/null and b/public/terrain/17/214652/88501.terrain differ diff --git a/public/terrain/17/214652/88502.terrain b/public/terrain/17/214652/88502.terrain new file mode 100644 index 000000000..a280aecd5 Binary files /dev/null and b/public/terrain/17/214652/88502.terrain differ diff --git a/public/terrain/17/214652/88503.terrain b/public/terrain/17/214652/88503.terrain new file mode 100644 index 000000000..4c754f60f Binary files /dev/null and b/public/terrain/17/214652/88503.terrain differ diff --git a/public/terrain/17/214652/88504.terrain b/public/terrain/17/214652/88504.terrain new file mode 100644 index 000000000..6d5fd198e Binary files /dev/null and b/public/terrain/17/214652/88504.terrain differ diff --git a/public/terrain/17/214652/88505.terrain b/public/terrain/17/214652/88505.terrain new file mode 100644 index 000000000..f4b649551 Binary files /dev/null and b/public/terrain/17/214652/88505.terrain differ diff --git a/public/terrain/17/214652/88506.terrain b/public/terrain/17/214652/88506.terrain new file mode 100644 index 000000000..a61d33af7 Binary files /dev/null and b/public/terrain/17/214652/88506.terrain differ diff --git a/public/terrain/17/214652/88507.terrain b/public/terrain/17/214652/88507.terrain new file mode 100644 index 000000000..0a420296a Binary files /dev/null and b/public/terrain/17/214652/88507.terrain differ diff --git a/public/terrain/17/214652/88508.terrain b/public/terrain/17/214652/88508.terrain new file mode 100644 index 000000000..073302403 Binary files /dev/null and b/public/terrain/17/214652/88508.terrain differ diff --git a/public/terrain/17/214652/88509.terrain b/public/terrain/17/214652/88509.terrain new file mode 100644 index 000000000..7f66576eb Binary files /dev/null and b/public/terrain/17/214652/88509.terrain differ diff --git a/public/terrain/17/214652/88510.terrain b/public/terrain/17/214652/88510.terrain new file mode 100644 index 000000000..9c00e273b Binary files /dev/null and b/public/terrain/17/214652/88510.terrain differ diff --git a/public/terrain/17/214652/88511.terrain b/public/terrain/17/214652/88511.terrain new file mode 100644 index 000000000..163896a84 Binary files /dev/null and b/public/terrain/17/214652/88511.terrain differ diff --git a/public/terrain/17/214652/88512.terrain b/public/terrain/17/214652/88512.terrain new file mode 100644 index 000000000..dbe992b22 Binary files /dev/null and b/public/terrain/17/214652/88512.terrain differ diff --git a/public/terrain/17/214652/88513.terrain b/public/terrain/17/214652/88513.terrain new file mode 100644 index 000000000..fc041d1fb Binary files /dev/null and b/public/terrain/17/214652/88513.terrain differ diff --git a/public/terrain/17/214652/88514.terrain b/public/terrain/17/214652/88514.terrain new file mode 100644 index 000000000..fa8110f41 Binary files /dev/null and b/public/terrain/17/214652/88514.terrain differ diff --git a/public/terrain/18/429234/176871.terrain b/public/terrain/18/429234/176871.terrain new file mode 100644 index 000000000..1853542e7 Binary files /dev/null and b/public/terrain/18/429234/176871.terrain differ diff --git a/public/terrain/18/429234/176872.terrain b/public/terrain/18/429234/176872.terrain new file mode 100644 index 000000000..00f85e720 Binary files /dev/null and b/public/terrain/18/429234/176872.terrain differ diff --git a/public/terrain/18/429234/176873.terrain b/public/terrain/18/429234/176873.terrain new file mode 100644 index 000000000..599bbdce2 Binary files /dev/null and b/public/terrain/18/429234/176873.terrain differ diff --git a/public/terrain/18/429234/176874.terrain b/public/terrain/18/429234/176874.terrain new file mode 100644 index 000000000..937160454 Binary files /dev/null and b/public/terrain/18/429234/176874.terrain differ diff --git a/public/terrain/18/429234/176875.terrain b/public/terrain/18/429234/176875.terrain new file mode 100644 index 000000000..df790d5ec Binary files /dev/null and b/public/terrain/18/429234/176875.terrain differ diff --git a/public/terrain/18/429234/176876.terrain b/public/terrain/18/429234/176876.terrain new file mode 100644 index 000000000..696bd1740 Binary files /dev/null and b/public/terrain/18/429234/176876.terrain differ diff --git a/public/terrain/18/429234/176877.terrain b/public/terrain/18/429234/176877.terrain new file mode 100644 index 000000000..acf6d1306 Binary files /dev/null and b/public/terrain/18/429234/176877.terrain differ diff --git a/public/terrain/18/429234/176878.terrain b/public/terrain/18/429234/176878.terrain new file mode 100644 index 000000000..fe4b45b7d Binary files /dev/null and b/public/terrain/18/429234/176878.terrain differ diff --git a/public/terrain/18/429234/176879.terrain b/public/terrain/18/429234/176879.terrain new file mode 100644 index 000000000..18af61f2a Binary files /dev/null and b/public/terrain/18/429234/176879.terrain differ diff --git a/public/terrain/18/429234/176880.terrain b/public/terrain/18/429234/176880.terrain new file mode 100644 index 000000000..787656d38 Binary files /dev/null and b/public/terrain/18/429234/176880.terrain differ diff --git a/public/terrain/18/429234/176881.terrain b/public/terrain/18/429234/176881.terrain new file mode 100644 index 000000000..ca4e13f03 Binary files /dev/null and b/public/terrain/18/429234/176881.terrain differ diff --git a/public/terrain/18/429234/176882.terrain b/public/terrain/18/429234/176882.terrain new file mode 100644 index 000000000..a8c954170 Binary files /dev/null and b/public/terrain/18/429234/176882.terrain differ diff --git a/public/terrain/18/429234/176883.terrain b/public/terrain/18/429234/176883.terrain new file mode 100644 index 000000000..5bb1ebd5e Binary files /dev/null and b/public/terrain/18/429234/176883.terrain differ diff --git a/public/terrain/18/429234/176884.terrain b/public/terrain/18/429234/176884.terrain new file mode 100644 index 000000000..13034e8d3 Binary files /dev/null and b/public/terrain/18/429234/176884.terrain differ diff --git a/public/terrain/18/429234/176885.terrain b/public/terrain/18/429234/176885.terrain new file mode 100644 index 000000000..1c9b39456 Binary files /dev/null and b/public/terrain/18/429234/176885.terrain differ diff --git a/public/terrain/18/429234/176886.terrain b/public/terrain/18/429234/176886.terrain new file mode 100644 index 000000000..b6ea75382 Binary files /dev/null and b/public/terrain/18/429234/176886.terrain differ diff --git a/public/terrain/18/429234/176887.terrain b/public/terrain/18/429234/176887.terrain new file mode 100644 index 000000000..86f71ad32 Binary files /dev/null and b/public/terrain/18/429234/176887.terrain differ diff --git a/public/terrain/18/429234/176888.terrain b/public/terrain/18/429234/176888.terrain new file mode 100644 index 000000000..e5ac60449 Binary files /dev/null and b/public/terrain/18/429234/176888.terrain differ diff --git a/public/terrain/18/429234/176889.terrain b/public/terrain/18/429234/176889.terrain new file mode 100644 index 000000000..c86b0dbab Binary files /dev/null and b/public/terrain/18/429234/176889.terrain differ diff --git a/public/terrain/18/429234/176890.terrain b/public/terrain/18/429234/176890.terrain new file mode 100644 index 000000000..9930432b8 Binary files /dev/null and b/public/terrain/18/429234/176890.terrain differ diff --git a/public/terrain/18/429234/176891.terrain b/public/terrain/18/429234/176891.terrain new file mode 100644 index 000000000..9344a6c6e Binary files /dev/null and b/public/terrain/18/429234/176891.terrain differ diff --git a/public/terrain/18/429234/176892.terrain b/public/terrain/18/429234/176892.terrain new file mode 100644 index 000000000..d0e88014c Binary files /dev/null and b/public/terrain/18/429234/176892.terrain differ diff --git a/public/terrain/18/429234/176893.terrain b/public/terrain/18/429234/176893.terrain new file mode 100644 index 000000000..28b2e94e1 Binary files /dev/null and b/public/terrain/18/429234/176893.terrain differ diff --git a/public/terrain/18/429234/176894.terrain b/public/terrain/18/429234/176894.terrain new file mode 100644 index 000000000..a2fd636c5 Binary files /dev/null and b/public/terrain/18/429234/176894.terrain differ diff --git a/public/terrain/18/429234/176895.terrain b/public/terrain/18/429234/176895.terrain new file mode 100644 index 000000000..aac3c740d Binary files /dev/null and b/public/terrain/18/429234/176895.terrain differ diff --git a/public/terrain/18/429234/176896.terrain b/public/terrain/18/429234/176896.terrain new file mode 100644 index 000000000..a84e8e2cc Binary files /dev/null and b/public/terrain/18/429234/176896.terrain differ diff --git a/public/terrain/18/429234/176897.terrain b/public/terrain/18/429234/176897.terrain new file mode 100644 index 000000000..06103b869 Binary files /dev/null and b/public/terrain/18/429234/176897.terrain differ diff --git a/public/terrain/18/429234/176898.terrain b/public/terrain/18/429234/176898.terrain new file mode 100644 index 000000000..7235b2161 Binary files /dev/null and b/public/terrain/18/429234/176898.terrain differ diff --git a/public/terrain/18/429234/176899.terrain b/public/terrain/18/429234/176899.terrain new file mode 100644 index 000000000..cacb20996 Binary files /dev/null and b/public/terrain/18/429234/176899.terrain differ diff --git a/public/terrain/18/429234/176900.terrain b/public/terrain/18/429234/176900.terrain new file mode 100644 index 000000000..e79947858 Binary files /dev/null and b/public/terrain/18/429234/176900.terrain differ diff --git a/public/terrain/18/429234/176901.terrain b/public/terrain/18/429234/176901.terrain new file mode 100644 index 000000000..5465d297b Binary files /dev/null and b/public/terrain/18/429234/176901.terrain differ diff --git a/public/terrain/18/429234/176902.terrain b/public/terrain/18/429234/176902.terrain new file mode 100644 index 000000000..e4af9d936 Binary files /dev/null and b/public/terrain/18/429234/176902.terrain differ diff --git a/public/terrain/18/429234/176903.terrain b/public/terrain/18/429234/176903.terrain new file mode 100644 index 000000000..408e71f6e Binary files /dev/null and b/public/terrain/18/429234/176903.terrain differ diff --git a/public/terrain/18/429234/176904.terrain b/public/terrain/18/429234/176904.terrain new file mode 100644 index 000000000..f3120e050 Binary files /dev/null and b/public/terrain/18/429234/176904.terrain differ diff --git a/public/terrain/18/429234/176905.terrain b/public/terrain/18/429234/176905.terrain new file mode 100644 index 000000000..cf2d710a8 Binary files /dev/null and b/public/terrain/18/429234/176905.terrain differ diff --git a/public/terrain/18/429234/176906.terrain b/public/terrain/18/429234/176906.terrain new file mode 100644 index 000000000..be23a2632 Binary files /dev/null and b/public/terrain/18/429234/176906.terrain differ diff --git a/public/terrain/18/429234/176907.terrain b/public/terrain/18/429234/176907.terrain new file mode 100644 index 000000000..39aa68419 Binary files /dev/null and b/public/terrain/18/429234/176907.terrain differ diff --git a/public/terrain/18/429234/176908.terrain b/public/terrain/18/429234/176908.terrain new file mode 100644 index 000000000..61586b83e Binary files /dev/null and b/public/terrain/18/429234/176908.terrain differ diff --git a/public/terrain/18/429234/176909.terrain b/public/terrain/18/429234/176909.terrain new file mode 100644 index 000000000..1e8f9cb10 Binary files /dev/null and b/public/terrain/18/429234/176909.terrain differ diff --git a/public/terrain/18/429234/176910.terrain b/public/terrain/18/429234/176910.terrain new file mode 100644 index 000000000..997285746 Binary files /dev/null and b/public/terrain/18/429234/176910.terrain differ diff --git a/public/terrain/18/429234/176911.terrain b/public/terrain/18/429234/176911.terrain new file mode 100644 index 000000000..fdfaf7ca6 Binary files /dev/null and b/public/terrain/18/429234/176911.terrain differ diff --git a/public/terrain/18/429234/176912.terrain b/public/terrain/18/429234/176912.terrain new file mode 100644 index 000000000..5479d76fd Binary files /dev/null and b/public/terrain/18/429234/176912.terrain differ diff --git a/public/terrain/18/429234/176913.terrain b/public/terrain/18/429234/176913.terrain new file mode 100644 index 000000000..abc99fe07 Binary files /dev/null and b/public/terrain/18/429234/176913.terrain differ diff --git a/public/terrain/18/429234/176914.terrain b/public/terrain/18/429234/176914.terrain new file mode 100644 index 000000000..fa6090041 Binary files /dev/null and b/public/terrain/18/429234/176914.terrain differ diff --git a/public/terrain/18/429234/176915.terrain b/public/terrain/18/429234/176915.terrain new file mode 100644 index 000000000..16fe58e0c Binary files /dev/null and b/public/terrain/18/429234/176915.terrain differ diff --git a/public/terrain/18/429234/176916.terrain b/public/terrain/18/429234/176916.terrain new file mode 100644 index 000000000..94678889c Binary files /dev/null and b/public/terrain/18/429234/176916.terrain differ diff --git a/public/terrain/18/429234/176917.terrain b/public/terrain/18/429234/176917.terrain new file mode 100644 index 000000000..26bd0b758 Binary files /dev/null and b/public/terrain/18/429234/176917.terrain differ diff --git a/public/terrain/18/429234/176918.terrain b/public/terrain/18/429234/176918.terrain new file mode 100644 index 000000000..96b900cc9 Binary files /dev/null and b/public/terrain/18/429234/176918.terrain differ diff --git a/public/terrain/18/429234/176919.terrain b/public/terrain/18/429234/176919.terrain new file mode 100644 index 000000000..1ed91098e Binary files /dev/null and b/public/terrain/18/429234/176919.terrain differ diff --git a/public/terrain/18/429234/176920.terrain b/public/terrain/18/429234/176920.terrain new file mode 100644 index 000000000..64c55c997 Binary files /dev/null and b/public/terrain/18/429234/176920.terrain differ diff --git a/public/terrain/18/429234/176921.terrain b/public/terrain/18/429234/176921.terrain new file mode 100644 index 000000000..c51ccc178 Binary files /dev/null and b/public/terrain/18/429234/176921.terrain differ diff --git a/public/terrain/18/429234/176922.terrain b/public/terrain/18/429234/176922.terrain new file mode 100644 index 000000000..b3da28d8d Binary files /dev/null and b/public/terrain/18/429234/176922.terrain differ diff --git a/public/terrain/18/429234/176923.terrain b/public/terrain/18/429234/176923.terrain new file mode 100644 index 000000000..6934fc087 Binary files /dev/null and b/public/terrain/18/429234/176923.terrain differ diff --git a/public/terrain/18/429234/176924.terrain b/public/terrain/18/429234/176924.terrain new file mode 100644 index 000000000..a02a1e0e2 Binary files /dev/null and b/public/terrain/18/429234/176924.terrain differ diff --git a/public/terrain/18/429234/176925.terrain b/public/terrain/18/429234/176925.terrain new file mode 100644 index 000000000..2c31619c9 Binary files /dev/null and b/public/terrain/18/429234/176925.terrain differ diff --git a/public/terrain/18/429234/176926.terrain b/public/terrain/18/429234/176926.terrain new file mode 100644 index 000000000..eb10095b8 Binary files /dev/null and b/public/terrain/18/429234/176926.terrain differ diff --git a/public/terrain/18/429234/176927.terrain b/public/terrain/18/429234/176927.terrain new file mode 100644 index 000000000..76f282a35 Binary files /dev/null and b/public/terrain/18/429234/176927.terrain differ diff --git a/public/terrain/18/429234/176928.terrain b/public/terrain/18/429234/176928.terrain new file mode 100644 index 000000000..336c4befd Binary files /dev/null and b/public/terrain/18/429234/176928.terrain differ diff --git a/public/terrain/18/429234/176929.terrain b/public/terrain/18/429234/176929.terrain new file mode 100644 index 000000000..4a5dbff0e Binary files /dev/null and b/public/terrain/18/429234/176929.terrain differ diff --git a/public/terrain/18/429234/176930.terrain b/public/terrain/18/429234/176930.terrain new file mode 100644 index 000000000..0c30e5abd Binary files /dev/null and b/public/terrain/18/429234/176930.terrain differ diff --git a/public/terrain/18/429234/176931.terrain b/public/terrain/18/429234/176931.terrain new file mode 100644 index 000000000..3512885ca Binary files /dev/null and b/public/terrain/18/429234/176931.terrain differ diff --git a/public/terrain/18/429234/176932.terrain b/public/terrain/18/429234/176932.terrain new file mode 100644 index 000000000..2d8d7f4b0 Binary files /dev/null and b/public/terrain/18/429234/176932.terrain differ diff --git a/public/terrain/18/429234/176933.terrain b/public/terrain/18/429234/176933.terrain new file mode 100644 index 000000000..00e4b4134 Binary files /dev/null and b/public/terrain/18/429234/176933.terrain differ diff --git a/public/terrain/18/429234/176934.terrain b/public/terrain/18/429234/176934.terrain new file mode 100644 index 000000000..5a45b024b Binary files /dev/null and b/public/terrain/18/429234/176934.terrain differ diff --git a/public/terrain/18/429234/176935.terrain b/public/terrain/18/429234/176935.terrain new file mode 100644 index 000000000..5f74eee96 Binary files /dev/null and b/public/terrain/18/429234/176935.terrain differ diff --git a/public/terrain/18/429234/176936.terrain b/public/terrain/18/429234/176936.terrain new file mode 100644 index 000000000..b0c2f8006 Binary files /dev/null and b/public/terrain/18/429234/176936.terrain differ diff --git a/public/terrain/18/429234/176937.terrain b/public/terrain/18/429234/176937.terrain new file mode 100644 index 000000000..944ed6462 Binary files /dev/null and b/public/terrain/18/429234/176937.terrain differ diff --git a/public/terrain/18/429234/176938.terrain b/public/terrain/18/429234/176938.terrain new file mode 100644 index 000000000..52d620d4c Binary files /dev/null and b/public/terrain/18/429234/176938.terrain differ diff --git a/public/terrain/18/429234/176939.terrain b/public/terrain/18/429234/176939.terrain new file mode 100644 index 000000000..9e021b95d Binary files /dev/null and b/public/terrain/18/429234/176939.terrain differ diff --git a/public/terrain/18/429234/176940.terrain b/public/terrain/18/429234/176940.terrain new file mode 100644 index 000000000..72995e454 Binary files /dev/null and b/public/terrain/18/429234/176940.terrain differ diff --git a/public/terrain/18/429234/176941.terrain b/public/terrain/18/429234/176941.terrain new file mode 100644 index 000000000..a460b8629 Binary files /dev/null and b/public/terrain/18/429234/176941.terrain differ diff --git a/public/terrain/18/429234/176942.terrain b/public/terrain/18/429234/176942.terrain new file mode 100644 index 000000000..1fba3b08f Binary files /dev/null and b/public/terrain/18/429234/176942.terrain differ diff --git a/public/terrain/18/429234/176943.terrain b/public/terrain/18/429234/176943.terrain new file mode 100644 index 000000000..b74522025 Binary files /dev/null and b/public/terrain/18/429234/176943.terrain differ diff --git a/public/terrain/18/429234/176944.terrain b/public/terrain/18/429234/176944.terrain new file mode 100644 index 000000000..d1ad083cb Binary files /dev/null and b/public/terrain/18/429234/176944.terrain differ diff --git a/public/terrain/18/429234/176945.terrain b/public/terrain/18/429234/176945.terrain new file mode 100644 index 000000000..9371f8c4c Binary files /dev/null and b/public/terrain/18/429234/176945.terrain differ diff --git a/public/terrain/18/429234/176946.terrain b/public/terrain/18/429234/176946.terrain new file mode 100644 index 000000000..911f4dd17 Binary files /dev/null and b/public/terrain/18/429234/176946.terrain differ diff --git a/public/terrain/18/429234/176947.terrain b/public/terrain/18/429234/176947.terrain new file mode 100644 index 000000000..5868d2c99 Binary files /dev/null and b/public/terrain/18/429234/176947.terrain differ diff --git a/public/terrain/18/429234/176948.terrain b/public/terrain/18/429234/176948.terrain new file mode 100644 index 000000000..b894a53b3 Binary files /dev/null and b/public/terrain/18/429234/176948.terrain differ diff --git a/public/terrain/18/429234/176949.terrain b/public/terrain/18/429234/176949.terrain new file mode 100644 index 000000000..2e5e3d59b Binary files /dev/null and b/public/terrain/18/429234/176949.terrain differ diff --git a/public/terrain/18/429234/176950.terrain b/public/terrain/18/429234/176950.terrain new file mode 100644 index 000000000..f03f5d2d5 Binary files /dev/null and b/public/terrain/18/429234/176950.terrain differ diff --git a/public/terrain/18/429234/176951.terrain b/public/terrain/18/429234/176951.terrain new file mode 100644 index 000000000..62935326c Binary files /dev/null and b/public/terrain/18/429234/176951.terrain differ diff --git a/public/terrain/18/429234/176952.terrain b/public/terrain/18/429234/176952.terrain new file mode 100644 index 000000000..106552062 Binary files /dev/null and b/public/terrain/18/429234/176952.terrain differ diff --git a/public/terrain/18/429234/176953.terrain b/public/terrain/18/429234/176953.terrain new file mode 100644 index 000000000..253b3898e Binary files /dev/null and b/public/terrain/18/429234/176953.terrain differ diff --git a/public/terrain/18/429234/176954.terrain b/public/terrain/18/429234/176954.terrain new file mode 100644 index 000000000..7340384bc Binary files /dev/null and b/public/terrain/18/429234/176954.terrain differ diff --git a/public/terrain/18/429234/176955.terrain b/public/terrain/18/429234/176955.terrain new file mode 100644 index 000000000..3ac714fe2 Binary files /dev/null and b/public/terrain/18/429234/176955.terrain differ diff --git a/public/terrain/18/429234/176956.terrain b/public/terrain/18/429234/176956.terrain new file mode 100644 index 000000000..bb0766832 Binary files /dev/null and b/public/terrain/18/429234/176956.terrain differ diff --git a/public/terrain/18/429234/176957.terrain b/public/terrain/18/429234/176957.terrain new file mode 100644 index 000000000..5faa1ae6f Binary files /dev/null and b/public/terrain/18/429234/176957.terrain differ diff --git a/public/terrain/18/429234/176958.terrain b/public/terrain/18/429234/176958.terrain new file mode 100644 index 000000000..32753d278 Binary files /dev/null and b/public/terrain/18/429234/176958.terrain differ diff --git a/public/terrain/18/429234/176959.terrain b/public/terrain/18/429234/176959.terrain new file mode 100644 index 000000000..07b654c55 Binary files /dev/null and b/public/terrain/18/429234/176959.terrain differ diff --git a/public/terrain/18/429234/176960.terrain b/public/terrain/18/429234/176960.terrain new file mode 100644 index 000000000..bbec900b1 Binary files /dev/null and b/public/terrain/18/429234/176960.terrain differ diff --git a/public/terrain/18/429234/176961.terrain b/public/terrain/18/429234/176961.terrain new file mode 100644 index 000000000..8a64321a9 Binary files /dev/null and b/public/terrain/18/429234/176961.terrain differ diff --git a/public/terrain/18/429234/176962.terrain b/public/terrain/18/429234/176962.terrain new file mode 100644 index 000000000..aef05167e Binary files /dev/null and b/public/terrain/18/429234/176962.terrain differ diff --git a/public/terrain/18/429234/176963.terrain b/public/terrain/18/429234/176963.terrain new file mode 100644 index 000000000..543bb1ce6 Binary files /dev/null and b/public/terrain/18/429234/176963.terrain differ diff --git a/public/terrain/18/429234/176964.terrain b/public/terrain/18/429234/176964.terrain new file mode 100644 index 000000000..a35b18010 Binary files /dev/null and b/public/terrain/18/429234/176964.terrain differ diff --git a/public/terrain/18/429234/176965.terrain b/public/terrain/18/429234/176965.terrain new file mode 100644 index 000000000..abe2bb04f Binary files /dev/null and b/public/terrain/18/429234/176965.terrain differ diff --git a/public/terrain/18/429234/176966.terrain b/public/terrain/18/429234/176966.terrain new file mode 100644 index 000000000..783d6f066 Binary files /dev/null and b/public/terrain/18/429234/176966.terrain differ diff --git a/public/terrain/18/429234/176967.terrain b/public/terrain/18/429234/176967.terrain new file mode 100644 index 000000000..eafc116e0 Binary files /dev/null and b/public/terrain/18/429234/176967.terrain differ diff --git a/public/terrain/18/429234/176968.terrain b/public/terrain/18/429234/176968.terrain new file mode 100644 index 000000000..98ab068ac Binary files /dev/null and b/public/terrain/18/429234/176968.terrain differ diff --git a/public/terrain/18/429234/176969.terrain b/public/terrain/18/429234/176969.terrain new file mode 100644 index 000000000..c4b51a694 Binary files /dev/null and b/public/terrain/18/429234/176969.terrain differ diff --git a/public/terrain/18/429234/176970.terrain b/public/terrain/18/429234/176970.terrain new file mode 100644 index 000000000..3bb78bc02 Binary files /dev/null and b/public/terrain/18/429234/176970.terrain differ diff --git a/public/terrain/18/429234/176971.terrain b/public/terrain/18/429234/176971.terrain new file mode 100644 index 000000000..d596699a5 Binary files /dev/null and b/public/terrain/18/429234/176971.terrain differ diff --git a/public/terrain/18/429234/176972.terrain b/public/terrain/18/429234/176972.terrain new file mode 100644 index 000000000..ed0d58482 Binary files /dev/null and b/public/terrain/18/429234/176972.terrain differ diff --git a/public/terrain/18/429234/176973.terrain b/public/terrain/18/429234/176973.terrain new file mode 100644 index 000000000..aa90ffd39 Binary files /dev/null and b/public/terrain/18/429234/176973.terrain differ diff --git a/public/terrain/18/429234/176974.terrain b/public/terrain/18/429234/176974.terrain new file mode 100644 index 000000000..7794c167a Binary files /dev/null and b/public/terrain/18/429234/176974.terrain differ diff --git a/public/terrain/18/429234/176975.terrain b/public/terrain/18/429234/176975.terrain new file mode 100644 index 000000000..a638618f9 Binary files /dev/null and b/public/terrain/18/429234/176975.terrain differ diff --git a/public/terrain/18/429234/176976.terrain b/public/terrain/18/429234/176976.terrain new file mode 100644 index 000000000..ab91926fa Binary files /dev/null and b/public/terrain/18/429234/176976.terrain differ diff --git a/public/terrain/18/429234/176977.terrain b/public/terrain/18/429234/176977.terrain new file mode 100644 index 000000000..62aa633da Binary files /dev/null and b/public/terrain/18/429234/176977.terrain differ diff --git a/public/terrain/18/429234/176978.terrain b/public/terrain/18/429234/176978.terrain new file mode 100644 index 000000000..42075a450 Binary files /dev/null and b/public/terrain/18/429234/176978.terrain differ diff --git a/public/terrain/18/429234/176979.terrain b/public/terrain/18/429234/176979.terrain new file mode 100644 index 000000000..fcfc60734 Binary files /dev/null and b/public/terrain/18/429234/176979.terrain differ diff --git a/public/terrain/18/429234/176980.terrain b/public/terrain/18/429234/176980.terrain new file mode 100644 index 000000000..8b7826e01 Binary files /dev/null and b/public/terrain/18/429234/176980.terrain differ diff --git a/public/terrain/18/429234/176981.terrain b/public/terrain/18/429234/176981.terrain new file mode 100644 index 000000000..e4beb882a Binary files /dev/null and b/public/terrain/18/429234/176981.terrain differ diff --git a/public/terrain/18/429234/176982.terrain b/public/terrain/18/429234/176982.terrain new file mode 100644 index 000000000..9004663a0 Binary files /dev/null and b/public/terrain/18/429234/176982.terrain differ diff --git a/public/terrain/18/429234/176983.terrain b/public/terrain/18/429234/176983.terrain new file mode 100644 index 000000000..793dc1a04 Binary files /dev/null and b/public/terrain/18/429234/176983.terrain differ diff --git a/public/terrain/18/429234/176984.terrain b/public/terrain/18/429234/176984.terrain new file mode 100644 index 000000000..79b0ed8e7 Binary files /dev/null and b/public/terrain/18/429234/176984.terrain differ diff --git a/public/terrain/18/429234/176985.terrain b/public/terrain/18/429234/176985.terrain new file mode 100644 index 000000000..0b9e12333 Binary files /dev/null and b/public/terrain/18/429234/176985.terrain differ diff --git a/public/terrain/18/429234/176986.terrain b/public/terrain/18/429234/176986.terrain new file mode 100644 index 000000000..e41d780e1 Binary files /dev/null and b/public/terrain/18/429234/176986.terrain differ diff --git a/public/terrain/18/429234/176987.terrain b/public/terrain/18/429234/176987.terrain new file mode 100644 index 000000000..7f7257246 Binary files /dev/null and b/public/terrain/18/429234/176987.terrain differ diff --git a/public/terrain/18/429234/176988.terrain b/public/terrain/18/429234/176988.terrain new file mode 100644 index 000000000..5e6e4fea6 Binary files /dev/null and b/public/terrain/18/429234/176988.terrain differ diff --git a/public/terrain/18/429234/176989.terrain b/public/terrain/18/429234/176989.terrain new file mode 100644 index 000000000..5b35df51c Binary files /dev/null and b/public/terrain/18/429234/176989.terrain differ diff --git a/public/terrain/18/429234/176990.terrain b/public/terrain/18/429234/176990.terrain new file mode 100644 index 000000000..13738e8dc Binary files /dev/null and b/public/terrain/18/429234/176990.terrain differ diff --git a/public/terrain/18/429234/176991.terrain b/public/terrain/18/429234/176991.terrain new file mode 100644 index 000000000..e3562b4c2 Binary files /dev/null and b/public/terrain/18/429234/176991.terrain differ diff --git a/public/terrain/18/429234/176992.terrain b/public/terrain/18/429234/176992.terrain new file mode 100644 index 000000000..e0e80af81 Binary files /dev/null and b/public/terrain/18/429234/176992.terrain differ diff --git a/public/terrain/18/429234/176993.terrain b/public/terrain/18/429234/176993.terrain new file mode 100644 index 000000000..310909747 Binary files /dev/null and b/public/terrain/18/429234/176993.terrain differ diff --git a/public/terrain/18/429234/176994.terrain b/public/terrain/18/429234/176994.terrain new file mode 100644 index 000000000..eb0f0b34c Binary files /dev/null and b/public/terrain/18/429234/176994.terrain differ diff --git a/public/terrain/18/429234/176995.terrain b/public/terrain/18/429234/176995.terrain new file mode 100644 index 000000000..3cb560dae Binary files /dev/null and b/public/terrain/18/429234/176995.terrain differ diff --git a/public/terrain/18/429234/176996.terrain b/public/terrain/18/429234/176996.terrain new file mode 100644 index 000000000..3c6d34ab3 Binary files /dev/null and b/public/terrain/18/429234/176996.terrain differ diff --git a/public/terrain/18/429234/176997.terrain b/public/terrain/18/429234/176997.terrain new file mode 100644 index 000000000..24732a00f Binary files /dev/null and b/public/terrain/18/429234/176997.terrain differ diff --git a/public/terrain/18/429234/176998.terrain b/public/terrain/18/429234/176998.terrain new file mode 100644 index 000000000..8663971c1 Binary files /dev/null and b/public/terrain/18/429234/176998.terrain differ diff --git a/public/terrain/18/429234/176999.terrain b/public/terrain/18/429234/176999.terrain new file mode 100644 index 000000000..3dfc307fb Binary files /dev/null and b/public/terrain/18/429234/176999.terrain differ diff --git a/public/terrain/18/429234/177000.terrain b/public/terrain/18/429234/177000.terrain new file mode 100644 index 000000000..5952c54d1 Binary files /dev/null and b/public/terrain/18/429234/177000.terrain differ diff --git a/public/terrain/18/429234/177001.terrain b/public/terrain/18/429234/177001.terrain new file mode 100644 index 000000000..26b296d7a Binary files /dev/null and b/public/terrain/18/429234/177001.terrain differ diff --git a/public/terrain/18/429234/177002.terrain b/public/terrain/18/429234/177002.terrain new file mode 100644 index 000000000..8455c7ccd Binary files /dev/null and b/public/terrain/18/429234/177002.terrain differ diff --git a/public/terrain/18/429234/177003.terrain b/public/terrain/18/429234/177003.terrain new file mode 100644 index 000000000..5a0555538 Binary files /dev/null and b/public/terrain/18/429234/177003.terrain differ diff --git a/public/terrain/18/429234/177004.terrain b/public/terrain/18/429234/177004.terrain new file mode 100644 index 000000000..788409be6 Binary files /dev/null and b/public/terrain/18/429234/177004.terrain differ diff --git a/public/terrain/18/429234/177005.terrain b/public/terrain/18/429234/177005.terrain new file mode 100644 index 000000000..64ec990a8 Binary files /dev/null and b/public/terrain/18/429234/177005.terrain differ diff --git a/public/terrain/18/429234/177006.terrain b/public/terrain/18/429234/177006.terrain new file mode 100644 index 000000000..175c70a86 Binary files /dev/null and b/public/terrain/18/429234/177006.terrain differ diff --git a/public/terrain/18/429234/177007.terrain b/public/terrain/18/429234/177007.terrain new file mode 100644 index 000000000..4e052ed67 Binary files /dev/null and b/public/terrain/18/429234/177007.terrain differ diff --git a/public/terrain/18/429234/177008.terrain b/public/terrain/18/429234/177008.terrain new file mode 100644 index 000000000..674eca390 Binary files /dev/null and b/public/terrain/18/429234/177008.terrain differ diff --git a/public/terrain/18/429234/177009.terrain b/public/terrain/18/429234/177009.terrain new file mode 100644 index 000000000..78031d605 Binary files /dev/null and b/public/terrain/18/429234/177009.terrain differ diff --git a/public/terrain/18/429234/177010.terrain b/public/terrain/18/429234/177010.terrain new file mode 100644 index 000000000..1bea6e658 Binary files /dev/null and b/public/terrain/18/429234/177010.terrain differ diff --git a/public/terrain/18/429234/177011.terrain b/public/terrain/18/429234/177011.terrain new file mode 100644 index 000000000..d7cee01c5 Binary files /dev/null and b/public/terrain/18/429234/177011.terrain differ diff --git a/public/terrain/18/429234/177012.terrain b/public/terrain/18/429234/177012.terrain new file mode 100644 index 000000000..3bff3b6ba Binary files /dev/null and b/public/terrain/18/429234/177012.terrain differ diff --git a/public/terrain/18/429234/177013.terrain b/public/terrain/18/429234/177013.terrain new file mode 100644 index 000000000..e28f8c8d2 Binary files /dev/null and b/public/terrain/18/429234/177013.terrain differ diff --git a/public/terrain/18/429234/177014.terrain b/public/terrain/18/429234/177014.terrain new file mode 100644 index 000000000..71ae65a19 Binary files /dev/null and b/public/terrain/18/429234/177014.terrain differ diff --git a/public/terrain/18/429234/177015.terrain b/public/terrain/18/429234/177015.terrain new file mode 100644 index 000000000..03fc6236b Binary files /dev/null and b/public/terrain/18/429234/177015.terrain differ diff --git a/public/terrain/18/429234/177016.terrain b/public/terrain/18/429234/177016.terrain new file mode 100644 index 000000000..97e7a1a42 Binary files /dev/null and b/public/terrain/18/429234/177016.terrain differ diff --git a/public/terrain/18/429234/177017.terrain b/public/terrain/18/429234/177017.terrain new file mode 100644 index 000000000..8caf7c6ab Binary files /dev/null and b/public/terrain/18/429234/177017.terrain differ diff --git a/public/terrain/18/429234/177018.terrain b/public/terrain/18/429234/177018.terrain new file mode 100644 index 000000000..437bfa69d Binary files /dev/null and b/public/terrain/18/429234/177018.terrain differ diff --git a/public/terrain/18/429234/177019.terrain b/public/terrain/18/429234/177019.terrain new file mode 100644 index 000000000..a768717df Binary files /dev/null and b/public/terrain/18/429234/177019.terrain differ diff --git a/public/terrain/18/429234/177020.terrain b/public/terrain/18/429234/177020.terrain new file mode 100644 index 000000000..25f34f625 Binary files /dev/null and b/public/terrain/18/429234/177020.terrain differ diff --git a/public/terrain/18/429234/177021.terrain b/public/terrain/18/429234/177021.terrain new file mode 100644 index 000000000..4a2456988 Binary files /dev/null and b/public/terrain/18/429234/177021.terrain differ diff --git a/public/terrain/18/429234/177022.terrain b/public/terrain/18/429234/177022.terrain new file mode 100644 index 000000000..2c5d60d64 Binary files /dev/null and b/public/terrain/18/429234/177022.terrain differ diff --git a/public/terrain/18/429234/177023.terrain b/public/terrain/18/429234/177023.terrain new file mode 100644 index 000000000..aa8764319 Binary files /dev/null and b/public/terrain/18/429234/177023.terrain differ diff --git a/public/terrain/18/429234/177024.terrain b/public/terrain/18/429234/177024.terrain new file mode 100644 index 000000000..4435970a0 Binary files /dev/null and b/public/terrain/18/429234/177024.terrain differ diff --git a/public/terrain/18/429234/177025.terrain b/public/terrain/18/429234/177025.terrain new file mode 100644 index 000000000..641ffa661 Binary files /dev/null and b/public/terrain/18/429234/177025.terrain differ diff --git a/public/terrain/18/429234/177026.terrain b/public/terrain/18/429234/177026.terrain new file mode 100644 index 000000000..8b6349ea9 Binary files /dev/null and b/public/terrain/18/429234/177026.terrain differ diff --git a/public/terrain/18/429234/177027.terrain b/public/terrain/18/429234/177027.terrain new file mode 100644 index 000000000..0106fbab4 Binary files /dev/null and b/public/terrain/18/429234/177027.terrain differ diff --git a/public/terrain/18/429234/177028.terrain b/public/terrain/18/429234/177028.terrain new file mode 100644 index 000000000..bcba76944 Binary files /dev/null and b/public/terrain/18/429234/177028.terrain differ diff --git a/public/terrain/18/429234/177029.terrain b/public/terrain/18/429234/177029.terrain new file mode 100644 index 000000000..b139816ae Binary files /dev/null and b/public/terrain/18/429234/177029.terrain differ diff --git a/public/terrain/18/429235/176871.terrain b/public/terrain/18/429235/176871.terrain new file mode 100644 index 000000000..4a50fee20 Binary files /dev/null and b/public/terrain/18/429235/176871.terrain differ diff --git a/public/terrain/18/429235/176872.terrain b/public/terrain/18/429235/176872.terrain new file mode 100644 index 000000000..1367a1516 Binary files /dev/null and b/public/terrain/18/429235/176872.terrain differ diff --git a/public/terrain/18/429235/176873.terrain b/public/terrain/18/429235/176873.terrain new file mode 100644 index 000000000..11303a2a3 Binary files /dev/null and b/public/terrain/18/429235/176873.terrain differ diff --git a/public/terrain/18/429235/176874.terrain b/public/terrain/18/429235/176874.terrain new file mode 100644 index 000000000..333f254fe Binary files /dev/null and b/public/terrain/18/429235/176874.terrain differ diff --git a/public/terrain/18/429235/176875.terrain b/public/terrain/18/429235/176875.terrain new file mode 100644 index 000000000..a566827a6 Binary files /dev/null and b/public/terrain/18/429235/176875.terrain differ diff --git a/public/terrain/18/429235/176876.terrain b/public/terrain/18/429235/176876.terrain new file mode 100644 index 000000000..9057b8271 Binary files /dev/null and b/public/terrain/18/429235/176876.terrain differ diff --git a/public/terrain/18/429235/176877.terrain b/public/terrain/18/429235/176877.terrain new file mode 100644 index 000000000..5f5d27389 Binary files /dev/null and b/public/terrain/18/429235/176877.terrain differ diff --git a/public/terrain/18/429235/176878.terrain b/public/terrain/18/429235/176878.terrain new file mode 100644 index 000000000..b2a0194fd Binary files /dev/null and b/public/terrain/18/429235/176878.terrain differ diff --git a/public/terrain/18/429235/176879.terrain b/public/terrain/18/429235/176879.terrain new file mode 100644 index 000000000..7f2bdf44e Binary files /dev/null and b/public/terrain/18/429235/176879.terrain differ diff --git a/public/terrain/18/429235/176880.terrain b/public/terrain/18/429235/176880.terrain new file mode 100644 index 000000000..51950ae91 Binary files /dev/null and b/public/terrain/18/429235/176880.terrain differ diff --git a/public/terrain/18/429235/176881.terrain b/public/terrain/18/429235/176881.terrain new file mode 100644 index 000000000..6158f4a18 Binary files /dev/null and b/public/terrain/18/429235/176881.terrain differ diff --git a/public/terrain/18/429235/176882.terrain b/public/terrain/18/429235/176882.terrain new file mode 100644 index 000000000..54465e09e Binary files /dev/null and b/public/terrain/18/429235/176882.terrain differ diff --git a/public/terrain/18/429235/176883.terrain b/public/terrain/18/429235/176883.terrain new file mode 100644 index 000000000..850cf3721 Binary files /dev/null and b/public/terrain/18/429235/176883.terrain differ diff --git a/public/terrain/18/429235/176884.terrain b/public/terrain/18/429235/176884.terrain new file mode 100644 index 000000000..0c25b4530 Binary files /dev/null and b/public/terrain/18/429235/176884.terrain differ diff --git a/public/terrain/18/429235/176885.terrain b/public/terrain/18/429235/176885.terrain new file mode 100644 index 000000000..ed0d289e8 Binary files /dev/null and b/public/terrain/18/429235/176885.terrain differ diff --git a/public/terrain/18/429235/176886.terrain b/public/terrain/18/429235/176886.terrain new file mode 100644 index 000000000..0bb42e024 Binary files /dev/null and b/public/terrain/18/429235/176886.terrain differ diff --git a/public/terrain/18/429235/176887.terrain b/public/terrain/18/429235/176887.terrain new file mode 100644 index 000000000..21da7d9eb Binary files /dev/null and b/public/terrain/18/429235/176887.terrain differ diff --git a/public/terrain/18/429235/176888.terrain b/public/terrain/18/429235/176888.terrain new file mode 100644 index 000000000..e08ee5e19 Binary files /dev/null and b/public/terrain/18/429235/176888.terrain differ diff --git a/public/terrain/18/429235/176889.terrain b/public/terrain/18/429235/176889.terrain new file mode 100644 index 000000000..51bf0dd1e Binary files /dev/null and b/public/terrain/18/429235/176889.terrain differ diff --git a/public/terrain/18/429235/176890.terrain b/public/terrain/18/429235/176890.terrain new file mode 100644 index 000000000..44ffa8f3c Binary files /dev/null and b/public/terrain/18/429235/176890.terrain differ diff --git a/public/terrain/18/429235/176891.terrain b/public/terrain/18/429235/176891.terrain new file mode 100644 index 000000000..b80b812bc Binary files /dev/null and b/public/terrain/18/429235/176891.terrain differ diff --git a/public/terrain/18/429235/176892.terrain b/public/terrain/18/429235/176892.terrain new file mode 100644 index 000000000..67564da12 Binary files /dev/null and b/public/terrain/18/429235/176892.terrain differ diff --git a/public/terrain/18/429235/176893.terrain b/public/terrain/18/429235/176893.terrain new file mode 100644 index 000000000..320bbed20 Binary files /dev/null and b/public/terrain/18/429235/176893.terrain differ diff --git a/public/terrain/18/429235/176894.terrain b/public/terrain/18/429235/176894.terrain new file mode 100644 index 000000000..e84a73fa3 Binary files /dev/null and b/public/terrain/18/429235/176894.terrain differ diff --git a/public/terrain/18/429235/176895.terrain b/public/terrain/18/429235/176895.terrain new file mode 100644 index 000000000..40d14c3cb Binary files /dev/null and b/public/terrain/18/429235/176895.terrain differ diff --git a/public/terrain/18/429235/176896.terrain b/public/terrain/18/429235/176896.terrain new file mode 100644 index 000000000..1d470e616 Binary files /dev/null and b/public/terrain/18/429235/176896.terrain differ diff --git a/public/terrain/18/429235/176897.terrain b/public/terrain/18/429235/176897.terrain new file mode 100644 index 000000000..169485798 Binary files /dev/null and b/public/terrain/18/429235/176897.terrain differ diff --git a/public/terrain/18/429235/176898.terrain b/public/terrain/18/429235/176898.terrain new file mode 100644 index 000000000..31151afd1 Binary files /dev/null and b/public/terrain/18/429235/176898.terrain differ diff --git a/public/terrain/18/429235/176899.terrain b/public/terrain/18/429235/176899.terrain new file mode 100644 index 000000000..973125294 Binary files /dev/null and b/public/terrain/18/429235/176899.terrain differ diff --git a/public/terrain/18/429235/176900.terrain b/public/terrain/18/429235/176900.terrain new file mode 100644 index 000000000..8193c1920 Binary files /dev/null and b/public/terrain/18/429235/176900.terrain differ diff --git a/public/terrain/18/429235/176901.terrain b/public/terrain/18/429235/176901.terrain new file mode 100644 index 000000000..7ff0b2583 Binary files /dev/null and b/public/terrain/18/429235/176901.terrain differ diff --git a/public/terrain/18/429235/176902.terrain b/public/terrain/18/429235/176902.terrain new file mode 100644 index 000000000..f208c1992 Binary files /dev/null and b/public/terrain/18/429235/176902.terrain differ diff --git a/public/terrain/18/429235/176903.terrain b/public/terrain/18/429235/176903.terrain new file mode 100644 index 000000000..7ce491d37 Binary files /dev/null and b/public/terrain/18/429235/176903.terrain differ diff --git a/public/terrain/18/429235/176904.terrain b/public/terrain/18/429235/176904.terrain new file mode 100644 index 000000000..495c61447 Binary files /dev/null and b/public/terrain/18/429235/176904.terrain differ diff --git a/public/terrain/18/429235/176905.terrain b/public/terrain/18/429235/176905.terrain new file mode 100644 index 000000000..47ebfd177 Binary files /dev/null and b/public/terrain/18/429235/176905.terrain differ diff --git a/public/terrain/18/429235/176906.terrain b/public/terrain/18/429235/176906.terrain new file mode 100644 index 000000000..e62d4fadf Binary files /dev/null and b/public/terrain/18/429235/176906.terrain differ diff --git a/public/terrain/18/429235/176907.terrain b/public/terrain/18/429235/176907.terrain new file mode 100644 index 000000000..feb58084e Binary files /dev/null and b/public/terrain/18/429235/176907.terrain differ diff --git a/public/terrain/18/429235/176908.terrain b/public/terrain/18/429235/176908.terrain new file mode 100644 index 000000000..48cb76006 Binary files /dev/null and b/public/terrain/18/429235/176908.terrain differ diff --git a/public/terrain/18/429235/176909.terrain b/public/terrain/18/429235/176909.terrain new file mode 100644 index 000000000..dc7911dce Binary files /dev/null and b/public/terrain/18/429235/176909.terrain differ diff --git a/public/terrain/18/429235/176910.terrain b/public/terrain/18/429235/176910.terrain new file mode 100644 index 000000000..4825a66a5 Binary files /dev/null and b/public/terrain/18/429235/176910.terrain differ diff --git a/public/terrain/18/429235/176911.terrain b/public/terrain/18/429235/176911.terrain new file mode 100644 index 000000000..f9fd383f5 Binary files /dev/null and b/public/terrain/18/429235/176911.terrain differ diff --git a/public/terrain/18/429235/176912.terrain b/public/terrain/18/429235/176912.terrain new file mode 100644 index 000000000..f99e4e0b2 Binary files /dev/null and b/public/terrain/18/429235/176912.terrain differ diff --git a/public/terrain/18/429235/176913.terrain b/public/terrain/18/429235/176913.terrain new file mode 100644 index 000000000..96824a080 Binary files /dev/null and b/public/terrain/18/429235/176913.terrain differ diff --git a/public/terrain/18/429235/176914.terrain b/public/terrain/18/429235/176914.terrain new file mode 100644 index 000000000..3d171a54f Binary files /dev/null and b/public/terrain/18/429235/176914.terrain differ diff --git a/public/terrain/18/429235/176915.terrain b/public/terrain/18/429235/176915.terrain new file mode 100644 index 000000000..676b5e50a Binary files /dev/null and b/public/terrain/18/429235/176915.terrain differ diff --git a/public/terrain/18/429235/176916.terrain b/public/terrain/18/429235/176916.terrain new file mode 100644 index 000000000..6f6804048 Binary files /dev/null and b/public/terrain/18/429235/176916.terrain differ diff --git a/public/terrain/18/429235/176917.terrain b/public/terrain/18/429235/176917.terrain new file mode 100644 index 000000000..470c88930 Binary files /dev/null and b/public/terrain/18/429235/176917.terrain differ diff --git a/public/terrain/18/429235/176918.terrain b/public/terrain/18/429235/176918.terrain new file mode 100644 index 000000000..e199c3f7c Binary files /dev/null and b/public/terrain/18/429235/176918.terrain differ diff --git a/public/terrain/18/429235/176919.terrain b/public/terrain/18/429235/176919.terrain new file mode 100644 index 000000000..a5636f129 Binary files /dev/null and b/public/terrain/18/429235/176919.terrain differ diff --git a/public/terrain/18/429235/176920.terrain b/public/terrain/18/429235/176920.terrain new file mode 100644 index 000000000..a9053b772 Binary files /dev/null and b/public/terrain/18/429235/176920.terrain differ diff --git a/public/terrain/18/429235/176921.terrain b/public/terrain/18/429235/176921.terrain new file mode 100644 index 000000000..ed0ada45b Binary files /dev/null and b/public/terrain/18/429235/176921.terrain differ diff --git a/public/terrain/18/429235/176922.terrain b/public/terrain/18/429235/176922.terrain new file mode 100644 index 000000000..2bb5f7e39 Binary files /dev/null and b/public/terrain/18/429235/176922.terrain differ diff --git a/public/terrain/18/429235/176923.terrain b/public/terrain/18/429235/176923.terrain new file mode 100644 index 000000000..6f7351528 Binary files /dev/null and b/public/terrain/18/429235/176923.terrain differ diff --git a/public/terrain/18/429235/176924.terrain b/public/terrain/18/429235/176924.terrain new file mode 100644 index 000000000..b582d7f6b Binary files /dev/null and b/public/terrain/18/429235/176924.terrain differ diff --git a/public/terrain/18/429235/176925.terrain b/public/terrain/18/429235/176925.terrain new file mode 100644 index 000000000..bcea85a59 Binary files /dev/null and b/public/terrain/18/429235/176925.terrain differ diff --git a/public/terrain/18/429235/176926.terrain b/public/terrain/18/429235/176926.terrain new file mode 100644 index 000000000..3fdfdb30c Binary files /dev/null and b/public/terrain/18/429235/176926.terrain differ diff --git a/public/terrain/18/429235/176927.terrain b/public/terrain/18/429235/176927.terrain new file mode 100644 index 000000000..362ac6d61 Binary files /dev/null and b/public/terrain/18/429235/176927.terrain differ diff --git a/public/terrain/18/429235/176928.terrain b/public/terrain/18/429235/176928.terrain new file mode 100644 index 000000000..e81eb8dbc Binary files /dev/null and b/public/terrain/18/429235/176928.terrain differ diff --git a/public/terrain/18/429235/176929.terrain b/public/terrain/18/429235/176929.terrain new file mode 100644 index 000000000..1ed6278df Binary files /dev/null and b/public/terrain/18/429235/176929.terrain differ diff --git a/public/terrain/18/429235/176930.terrain b/public/terrain/18/429235/176930.terrain new file mode 100644 index 000000000..3b79119ae Binary files /dev/null and b/public/terrain/18/429235/176930.terrain differ diff --git a/public/terrain/18/429235/176931.terrain b/public/terrain/18/429235/176931.terrain new file mode 100644 index 000000000..b1d772c01 Binary files /dev/null and b/public/terrain/18/429235/176931.terrain differ diff --git a/public/terrain/18/429235/176932.terrain b/public/terrain/18/429235/176932.terrain new file mode 100644 index 000000000..d2f2bb884 Binary files /dev/null and b/public/terrain/18/429235/176932.terrain differ diff --git a/public/terrain/18/429235/176933.terrain b/public/terrain/18/429235/176933.terrain new file mode 100644 index 000000000..25759480e Binary files /dev/null and b/public/terrain/18/429235/176933.terrain differ diff --git a/public/terrain/18/429235/176934.terrain b/public/terrain/18/429235/176934.terrain new file mode 100644 index 000000000..bc13b1db5 Binary files /dev/null and b/public/terrain/18/429235/176934.terrain differ diff --git a/public/terrain/18/429235/176935.terrain b/public/terrain/18/429235/176935.terrain new file mode 100644 index 000000000..5b71034e1 Binary files /dev/null and b/public/terrain/18/429235/176935.terrain differ diff --git a/public/terrain/18/429235/176936.terrain b/public/terrain/18/429235/176936.terrain new file mode 100644 index 000000000..b8dac1743 Binary files /dev/null and b/public/terrain/18/429235/176936.terrain differ diff --git a/public/terrain/18/429235/176937.terrain b/public/terrain/18/429235/176937.terrain new file mode 100644 index 000000000..9b784578f Binary files /dev/null and b/public/terrain/18/429235/176937.terrain differ diff --git a/public/terrain/18/429235/176938.terrain b/public/terrain/18/429235/176938.terrain new file mode 100644 index 000000000..e603f215b Binary files /dev/null and b/public/terrain/18/429235/176938.terrain differ diff --git a/public/terrain/18/429235/176939.terrain b/public/terrain/18/429235/176939.terrain new file mode 100644 index 000000000..8c1a00fdd Binary files /dev/null and b/public/terrain/18/429235/176939.terrain differ diff --git a/public/terrain/18/429235/176940.terrain b/public/terrain/18/429235/176940.terrain new file mode 100644 index 000000000..e9967c746 Binary files /dev/null and b/public/terrain/18/429235/176940.terrain differ diff --git a/public/terrain/18/429235/176941.terrain b/public/terrain/18/429235/176941.terrain new file mode 100644 index 000000000..c7cfc2138 Binary files /dev/null and b/public/terrain/18/429235/176941.terrain differ diff --git a/public/terrain/18/429235/176942.terrain b/public/terrain/18/429235/176942.terrain new file mode 100644 index 000000000..79f19dd73 Binary files /dev/null and b/public/terrain/18/429235/176942.terrain differ diff --git a/public/terrain/18/429235/176943.terrain b/public/terrain/18/429235/176943.terrain new file mode 100644 index 000000000..1f91fcf91 Binary files /dev/null and b/public/terrain/18/429235/176943.terrain differ diff --git a/public/terrain/18/429235/176944.terrain b/public/terrain/18/429235/176944.terrain new file mode 100644 index 000000000..f9853b571 Binary files /dev/null and b/public/terrain/18/429235/176944.terrain differ diff --git a/public/terrain/18/429235/176945.terrain b/public/terrain/18/429235/176945.terrain new file mode 100644 index 000000000..58138be27 Binary files /dev/null and b/public/terrain/18/429235/176945.terrain differ diff --git a/public/terrain/18/429235/176946.terrain b/public/terrain/18/429235/176946.terrain new file mode 100644 index 000000000..fdba99702 Binary files /dev/null and b/public/terrain/18/429235/176946.terrain differ diff --git a/public/terrain/18/429235/176947.terrain b/public/terrain/18/429235/176947.terrain new file mode 100644 index 000000000..900f96706 Binary files /dev/null and b/public/terrain/18/429235/176947.terrain differ diff --git a/public/terrain/18/429235/176948.terrain b/public/terrain/18/429235/176948.terrain new file mode 100644 index 000000000..2fe96475c Binary files /dev/null and b/public/terrain/18/429235/176948.terrain differ diff --git a/public/terrain/18/429235/176949.terrain b/public/terrain/18/429235/176949.terrain new file mode 100644 index 000000000..7e21b567d Binary files /dev/null and b/public/terrain/18/429235/176949.terrain differ diff --git a/public/terrain/18/429235/176950.terrain b/public/terrain/18/429235/176950.terrain new file mode 100644 index 000000000..29a6007ab Binary files /dev/null and b/public/terrain/18/429235/176950.terrain differ diff --git a/public/terrain/18/429235/176951.terrain b/public/terrain/18/429235/176951.terrain new file mode 100644 index 000000000..5a7b15439 Binary files /dev/null and b/public/terrain/18/429235/176951.terrain differ diff --git a/public/terrain/18/429235/176952.terrain b/public/terrain/18/429235/176952.terrain new file mode 100644 index 000000000..8b9a30e35 Binary files /dev/null and b/public/terrain/18/429235/176952.terrain differ diff --git a/public/terrain/18/429235/176953.terrain b/public/terrain/18/429235/176953.terrain new file mode 100644 index 000000000..34b0c46d6 Binary files /dev/null and b/public/terrain/18/429235/176953.terrain differ diff --git a/public/terrain/18/429235/176954.terrain b/public/terrain/18/429235/176954.terrain new file mode 100644 index 000000000..34098908a Binary files /dev/null and b/public/terrain/18/429235/176954.terrain differ diff --git a/public/terrain/18/429235/176955.terrain b/public/terrain/18/429235/176955.terrain new file mode 100644 index 000000000..982073a63 Binary files /dev/null and b/public/terrain/18/429235/176955.terrain differ diff --git a/public/terrain/18/429235/176956.terrain b/public/terrain/18/429235/176956.terrain new file mode 100644 index 000000000..0ffa8663e Binary files /dev/null and b/public/terrain/18/429235/176956.terrain differ diff --git a/public/terrain/18/429235/176957.terrain b/public/terrain/18/429235/176957.terrain new file mode 100644 index 000000000..838c52090 Binary files /dev/null and b/public/terrain/18/429235/176957.terrain differ diff --git a/public/terrain/18/429235/176958.terrain b/public/terrain/18/429235/176958.terrain new file mode 100644 index 000000000..a16e25b06 Binary files /dev/null and b/public/terrain/18/429235/176958.terrain differ diff --git a/public/terrain/18/429235/176959.terrain b/public/terrain/18/429235/176959.terrain new file mode 100644 index 000000000..ace2e3a00 Binary files /dev/null and b/public/terrain/18/429235/176959.terrain differ diff --git a/public/terrain/18/429235/176960.terrain b/public/terrain/18/429235/176960.terrain new file mode 100644 index 000000000..2a1b8ba45 Binary files /dev/null and b/public/terrain/18/429235/176960.terrain differ diff --git a/public/terrain/18/429235/176961.terrain b/public/terrain/18/429235/176961.terrain new file mode 100644 index 000000000..02647491f Binary files /dev/null and b/public/terrain/18/429235/176961.terrain differ diff --git a/public/terrain/18/429235/176962.terrain b/public/terrain/18/429235/176962.terrain new file mode 100644 index 000000000..2e4213a7b Binary files /dev/null and b/public/terrain/18/429235/176962.terrain differ diff --git a/public/terrain/18/429235/176963.terrain b/public/terrain/18/429235/176963.terrain new file mode 100644 index 000000000..80aa8c04a Binary files /dev/null and b/public/terrain/18/429235/176963.terrain differ diff --git a/public/terrain/18/429235/176964.terrain b/public/terrain/18/429235/176964.terrain new file mode 100644 index 000000000..8702a37d9 Binary files /dev/null and b/public/terrain/18/429235/176964.terrain differ diff --git a/public/terrain/18/429235/176965.terrain b/public/terrain/18/429235/176965.terrain new file mode 100644 index 000000000..515eb4632 Binary files /dev/null and b/public/terrain/18/429235/176965.terrain differ diff --git a/public/terrain/18/429235/176966.terrain b/public/terrain/18/429235/176966.terrain new file mode 100644 index 000000000..51b7f9834 Binary files /dev/null and b/public/terrain/18/429235/176966.terrain differ diff --git a/public/terrain/18/429235/176967.terrain b/public/terrain/18/429235/176967.terrain new file mode 100644 index 000000000..200caa3b7 Binary files /dev/null and b/public/terrain/18/429235/176967.terrain differ diff --git a/public/terrain/18/429235/176968.terrain b/public/terrain/18/429235/176968.terrain new file mode 100644 index 000000000..420140bca Binary files /dev/null and b/public/terrain/18/429235/176968.terrain differ diff --git a/public/terrain/18/429235/176969.terrain b/public/terrain/18/429235/176969.terrain new file mode 100644 index 000000000..d41fc5b24 Binary files /dev/null and b/public/terrain/18/429235/176969.terrain differ diff --git a/public/terrain/18/429235/176970.terrain b/public/terrain/18/429235/176970.terrain new file mode 100644 index 000000000..ad42762b9 Binary files /dev/null and b/public/terrain/18/429235/176970.terrain differ diff --git a/public/terrain/18/429235/176971.terrain b/public/terrain/18/429235/176971.terrain new file mode 100644 index 000000000..f8e56ddd7 Binary files /dev/null and b/public/terrain/18/429235/176971.terrain differ diff --git a/public/terrain/18/429235/176972.terrain b/public/terrain/18/429235/176972.terrain new file mode 100644 index 000000000..b8a5ab9c1 Binary files /dev/null and b/public/terrain/18/429235/176972.terrain differ diff --git a/public/terrain/18/429235/176973.terrain b/public/terrain/18/429235/176973.terrain new file mode 100644 index 000000000..d4632e3ca Binary files /dev/null and b/public/terrain/18/429235/176973.terrain differ diff --git a/public/terrain/18/429235/176974.terrain b/public/terrain/18/429235/176974.terrain new file mode 100644 index 000000000..62c41c5c9 Binary files /dev/null and b/public/terrain/18/429235/176974.terrain differ diff --git a/public/terrain/18/429235/176975.terrain b/public/terrain/18/429235/176975.terrain new file mode 100644 index 000000000..9722e5233 Binary files /dev/null and b/public/terrain/18/429235/176975.terrain differ diff --git a/public/terrain/18/429235/176976.terrain b/public/terrain/18/429235/176976.terrain new file mode 100644 index 000000000..d2bb70498 Binary files /dev/null and b/public/terrain/18/429235/176976.terrain differ diff --git a/public/terrain/18/429235/176977.terrain b/public/terrain/18/429235/176977.terrain new file mode 100644 index 000000000..b4364dfc3 Binary files /dev/null and b/public/terrain/18/429235/176977.terrain differ diff --git a/public/terrain/18/429235/176978.terrain b/public/terrain/18/429235/176978.terrain new file mode 100644 index 000000000..0ce4a1926 Binary files /dev/null and b/public/terrain/18/429235/176978.terrain differ diff --git a/public/terrain/18/429235/176979.terrain b/public/terrain/18/429235/176979.terrain new file mode 100644 index 000000000..aa44b6935 Binary files /dev/null and b/public/terrain/18/429235/176979.terrain differ diff --git a/public/terrain/18/429235/176980.terrain b/public/terrain/18/429235/176980.terrain new file mode 100644 index 000000000..298426dd1 Binary files /dev/null and b/public/terrain/18/429235/176980.terrain differ diff --git a/public/terrain/18/429235/176981.terrain b/public/terrain/18/429235/176981.terrain new file mode 100644 index 000000000..2023613dd Binary files /dev/null and b/public/terrain/18/429235/176981.terrain differ diff --git a/public/terrain/18/429235/176982.terrain b/public/terrain/18/429235/176982.terrain new file mode 100644 index 000000000..9f3889b8b Binary files /dev/null and b/public/terrain/18/429235/176982.terrain differ diff --git a/public/terrain/18/429235/176983.terrain b/public/terrain/18/429235/176983.terrain new file mode 100644 index 000000000..5f25a0f16 Binary files /dev/null and b/public/terrain/18/429235/176983.terrain differ diff --git a/public/terrain/18/429235/176984.terrain b/public/terrain/18/429235/176984.terrain new file mode 100644 index 000000000..aaf0368b8 Binary files /dev/null and b/public/terrain/18/429235/176984.terrain differ diff --git a/public/terrain/18/429235/176985.terrain b/public/terrain/18/429235/176985.terrain new file mode 100644 index 000000000..23b6eb965 Binary files /dev/null and b/public/terrain/18/429235/176985.terrain differ diff --git a/public/terrain/18/429235/176986.terrain b/public/terrain/18/429235/176986.terrain new file mode 100644 index 000000000..ae62b65b6 Binary files /dev/null and b/public/terrain/18/429235/176986.terrain differ diff --git a/public/terrain/18/429235/176987.terrain b/public/terrain/18/429235/176987.terrain new file mode 100644 index 000000000..1b025d78c Binary files /dev/null and b/public/terrain/18/429235/176987.terrain differ diff --git a/public/terrain/18/429235/176988.terrain b/public/terrain/18/429235/176988.terrain new file mode 100644 index 000000000..4d0fcfa8a Binary files /dev/null and b/public/terrain/18/429235/176988.terrain differ diff --git a/public/terrain/18/429235/176989.terrain b/public/terrain/18/429235/176989.terrain new file mode 100644 index 000000000..41f75918b Binary files /dev/null and b/public/terrain/18/429235/176989.terrain differ diff --git a/public/terrain/18/429235/176990.terrain b/public/terrain/18/429235/176990.terrain new file mode 100644 index 000000000..2dd643677 Binary files /dev/null and b/public/terrain/18/429235/176990.terrain differ diff --git a/public/terrain/18/429235/176991.terrain b/public/terrain/18/429235/176991.terrain new file mode 100644 index 000000000..9ff3ec6fc Binary files /dev/null and b/public/terrain/18/429235/176991.terrain differ diff --git a/public/terrain/18/429235/176992.terrain b/public/terrain/18/429235/176992.terrain new file mode 100644 index 000000000..efb4e286f Binary files /dev/null and b/public/terrain/18/429235/176992.terrain differ diff --git a/public/terrain/18/429235/176993.terrain b/public/terrain/18/429235/176993.terrain new file mode 100644 index 000000000..d057d46d8 Binary files /dev/null and b/public/terrain/18/429235/176993.terrain differ diff --git a/public/terrain/18/429235/176994.terrain b/public/terrain/18/429235/176994.terrain new file mode 100644 index 000000000..923470b5d Binary files /dev/null and b/public/terrain/18/429235/176994.terrain differ diff --git a/public/terrain/18/429235/176995.terrain b/public/terrain/18/429235/176995.terrain new file mode 100644 index 000000000..79172e9a8 Binary files /dev/null and b/public/terrain/18/429235/176995.terrain differ diff --git a/public/terrain/18/429235/176996.terrain b/public/terrain/18/429235/176996.terrain new file mode 100644 index 000000000..9d4a47976 Binary files /dev/null and b/public/terrain/18/429235/176996.terrain differ diff --git a/public/terrain/18/429235/176997.terrain b/public/terrain/18/429235/176997.terrain new file mode 100644 index 000000000..16e13ba57 Binary files /dev/null and b/public/terrain/18/429235/176997.terrain differ diff --git a/public/terrain/18/429235/176998.terrain b/public/terrain/18/429235/176998.terrain new file mode 100644 index 000000000..e004e05ba Binary files /dev/null and b/public/terrain/18/429235/176998.terrain differ diff --git a/public/terrain/18/429235/176999.terrain b/public/terrain/18/429235/176999.terrain new file mode 100644 index 000000000..0a1b1faa7 Binary files /dev/null and b/public/terrain/18/429235/176999.terrain differ diff --git a/public/terrain/18/429235/177000.terrain b/public/terrain/18/429235/177000.terrain new file mode 100644 index 000000000..3301703d0 Binary files /dev/null and b/public/terrain/18/429235/177000.terrain differ diff --git a/public/terrain/18/429235/177001.terrain b/public/terrain/18/429235/177001.terrain new file mode 100644 index 000000000..228daa451 Binary files /dev/null and b/public/terrain/18/429235/177001.terrain differ diff --git a/public/terrain/18/429235/177002.terrain b/public/terrain/18/429235/177002.terrain new file mode 100644 index 000000000..66f7a07ef Binary files /dev/null and b/public/terrain/18/429235/177002.terrain differ diff --git a/public/terrain/18/429235/177003.terrain b/public/terrain/18/429235/177003.terrain new file mode 100644 index 000000000..61f413756 Binary files /dev/null and b/public/terrain/18/429235/177003.terrain differ diff --git a/public/terrain/18/429235/177004.terrain b/public/terrain/18/429235/177004.terrain new file mode 100644 index 000000000..a80d9dd93 Binary files /dev/null and b/public/terrain/18/429235/177004.terrain differ diff --git a/public/terrain/18/429235/177005.terrain b/public/terrain/18/429235/177005.terrain new file mode 100644 index 000000000..e3437e7b0 Binary files /dev/null and b/public/terrain/18/429235/177005.terrain differ diff --git a/public/terrain/18/429235/177006.terrain b/public/terrain/18/429235/177006.terrain new file mode 100644 index 000000000..4414ce3ba Binary files /dev/null and b/public/terrain/18/429235/177006.terrain differ diff --git a/public/terrain/18/429235/177007.terrain b/public/terrain/18/429235/177007.terrain new file mode 100644 index 000000000..7dc0f3f32 Binary files /dev/null and b/public/terrain/18/429235/177007.terrain differ diff --git a/public/terrain/18/429235/177008.terrain b/public/terrain/18/429235/177008.terrain new file mode 100644 index 000000000..953d8cc76 Binary files /dev/null and b/public/terrain/18/429235/177008.terrain differ diff --git a/public/terrain/18/429235/177009.terrain b/public/terrain/18/429235/177009.terrain new file mode 100644 index 000000000..68b2091d1 Binary files /dev/null and b/public/terrain/18/429235/177009.terrain differ diff --git a/public/terrain/18/429235/177010.terrain b/public/terrain/18/429235/177010.terrain new file mode 100644 index 000000000..7f0d22ce5 Binary files /dev/null and b/public/terrain/18/429235/177010.terrain differ diff --git a/public/terrain/18/429235/177011.terrain b/public/terrain/18/429235/177011.terrain new file mode 100644 index 000000000..773957869 Binary files /dev/null and b/public/terrain/18/429235/177011.terrain differ diff --git a/public/terrain/18/429235/177012.terrain b/public/terrain/18/429235/177012.terrain new file mode 100644 index 000000000..55260a599 Binary files /dev/null and b/public/terrain/18/429235/177012.terrain differ diff --git a/public/terrain/18/429235/177013.terrain b/public/terrain/18/429235/177013.terrain new file mode 100644 index 000000000..f982dff6f Binary files /dev/null and b/public/terrain/18/429235/177013.terrain differ diff --git a/public/terrain/18/429235/177014.terrain b/public/terrain/18/429235/177014.terrain new file mode 100644 index 000000000..dde14cb23 Binary files /dev/null and b/public/terrain/18/429235/177014.terrain differ diff --git a/public/terrain/18/429235/177015.terrain b/public/terrain/18/429235/177015.terrain new file mode 100644 index 000000000..e4f35fb3d Binary files /dev/null and b/public/terrain/18/429235/177015.terrain differ diff --git a/public/terrain/18/429235/177016.terrain b/public/terrain/18/429235/177016.terrain new file mode 100644 index 000000000..4821070e2 Binary files /dev/null and b/public/terrain/18/429235/177016.terrain differ diff --git a/public/terrain/18/429235/177017.terrain b/public/terrain/18/429235/177017.terrain new file mode 100644 index 000000000..68205f6f1 Binary files /dev/null and b/public/terrain/18/429235/177017.terrain differ diff --git a/public/terrain/18/429235/177018.terrain b/public/terrain/18/429235/177018.terrain new file mode 100644 index 000000000..a1d285d36 Binary files /dev/null and b/public/terrain/18/429235/177018.terrain differ diff --git a/public/terrain/18/429235/177019.terrain b/public/terrain/18/429235/177019.terrain new file mode 100644 index 000000000..b3416fe29 Binary files /dev/null and b/public/terrain/18/429235/177019.terrain differ diff --git a/public/terrain/18/429235/177020.terrain b/public/terrain/18/429235/177020.terrain new file mode 100644 index 000000000..befc6e932 Binary files /dev/null and b/public/terrain/18/429235/177020.terrain differ diff --git a/public/terrain/18/429235/177021.terrain b/public/terrain/18/429235/177021.terrain new file mode 100644 index 000000000..4fa6fbc0d Binary files /dev/null and b/public/terrain/18/429235/177021.terrain differ diff --git a/public/terrain/18/429235/177022.terrain b/public/terrain/18/429235/177022.terrain new file mode 100644 index 000000000..e19a98f9f Binary files /dev/null and b/public/terrain/18/429235/177022.terrain differ diff --git a/public/terrain/18/429235/177023.terrain b/public/terrain/18/429235/177023.terrain new file mode 100644 index 000000000..4cb9e4a22 Binary files /dev/null and b/public/terrain/18/429235/177023.terrain differ diff --git a/public/terrain/18/429235/177024.terrain b/public/terrain/18/429235/177024.terrain new file mode 100644 index 000000000..219d94078 Binary files /dev/null and b/public/terrain/18/429235/177024.terrain differ diff --git a/public/terrain/18/429235/177025.terrain b/public/terrain/18/429235/177025.terrain new file mode 100644 index 000000000..cb1e47be8 Binary files /dev/null and b/public/terrain/18/429235/177025.terrain differ diff --git a/public/terrain/18/429235/177026.terrain b/public/terrain/18/429235/177026.terrain new file mode 100644 index 000000000..312037f5c Binary files /dev/null and b/public/terrain/18/429235/177026.terrain differ diff --git a/public/terrain/18/429235/177027.terrain b/public/terrain/18/429235/177027.terrain new file mode 100644 index 000000000..a892ab758 Binary files /dev/null and b/public/terrain/18/429235/177027.terrain differ diff --git a/public/terrain/18/429235/177028.terrain b/public/terrain/18/429235/177028.terrain new file mode 100644 index 000000000..ad264bc8a Binary files /dev/null and b/public/terrain/18/429235/177028.terrain differ diff --git a/public/terrain/18/429235/177029.terrain b/public/terrain/18/429235/177029.terrain new file mode 100644 index 000000000..a42d678b2 Binary files /dev/null and b/public/terrain/18/429235/177029.terrain differ diff --git a/public/terrain/18/429236/176871.terrain b/public/terrain/18/429236/176871.terrain new file mode 100644 index 000000000..a662346ff Binary files /dev/null and b/public/terrain/18/429236/176871.terrain differ diff --git a/public/terrain/18/429236/176872.terrain b/public/terrain/18/429236/176872.terrain new file mode 100644 index 000000000..49d7216b4 Binary files /dev/null and b/public/terrain/18/429236/176872.terrain differ diff --git a/public/terrain/18/429236/176873.terrain b/public/terrain/18/429236/176873.terrain new file mode 100644 index 000000000..ff72b7c9a Binary files /dev/null and b/public/terrain/18/429236/176873.terrain differ diff --git a/public/terrain/18/429236/176874.terrain b/public/terrain/18/429236/176874.terrain new file mode 100644 index 000000000..80290a3ce Binary files /dev/null and b/public/terrain/18/429236/176874.terrain differ diff --git a/public/terrain/18/429236/176875.terrain b/public/terrain/18/429236/176875.terrain new file mode 100644 index 000000000..9417e4f85 Binary files /dev/null and b/public/terrain/18/429236/176875.terrain differ diff --git a/public/terrain/18/429236/176876.terrain b/public/terrain/18/429236/176876.terrain new file mode 100644 index 000000000..5ac60070b Binary files /dev/null and b/public/terrain/18/429236/176876.terrain differ diff --git a/public/terrain/18/429236/176877.terrain b/public/terrain/18/429236/176877.terrain new file mode 100644 index 000000000..26cbb9f2c Binary files /dev/null and b/public/terrain/18/429236/176877.terrain differ diff --git a/public/terrain/18/429236/176878.terrain b/public/terrain/18/429236/176878.terrain new file mode 100644 index 000000000..086b239b7 Binary files /dev/null and b/public/terrain/18/429236/176878.terrain differ diff --git a/public/terrain/18/429236/176879.terrain b/public/terrain/18/429236/176879.terrain new file mode 100644 index 000000000..2f56e02f8 Binary files /dev/null and b/public/terrain/18/429236/176879.terrain differ diff --git a/public/terrain/18/429236/176880.terrain b/public/terrain/18/429236/176880.terrain new file mode 100644 index 000000000..b48bd8526 Binary files /dev/null and b/public/terrain/18/429236/176880.terrain differ diff --git a/public/terrain/18/429236/176881.terrain b/public/terrain/18/429236/176881.terrain new file mode 100644 index 000000000..abf9b443a Binary files /dev/null and b/public/terrain/18/429236/176881.terrain differ diff --git a/public/terrain/18/429236/176882.terrain b/public/terrain/18/429236/176882.terrain new file mode 100644 index 000000000..7bb430731 Binary files /dev/null and b/public/terrain/18/429236/176882.terrain differ diff --git a/public/terrain/18/429236/176883.terrain b/public/terrain/18/429236/176883.terrain new file mode 100644 index 000000000..111a30b8e Binary files /dev/null and b/public/terrain/18/429236/176883.terrain differ diff --git a/public/terrain/18/429236/176884.terrain b/public/terrain/18/429236/176884.terrain new file mode 100644 index 000000000..c8a5a0dd1 Binary files /dev/null and b/public/terrain/18/429236/176884.terrain differ diff --git a/public/terrain/18/429236/176885.terrain b/public/terrain/18/429236/176885.terrain new file mode 100644 index 000000000..546882153 Binary files /dev/null and b/public/terrain/18/429236/176885.terrain differ diff --git a/public/terrain/18/429236/176886.terrain b/public/terrain/18/429236/176886.terrain new file mode 100644 index 000000000..b416d90a8 Binary files /dev/null and b/public/terrain/18/429236/176886.terrain differ diff --git a/public/terrain/18/429236/176887.terrain b/public/terrain/18/429236/176887.terrain new file mode 100644 index 000000000..69058269c Binary files /dev/null and b/public/terrain/18/429236/176887.terrain differ diff --git a/public/terrain/18/429236/176888.terrain b/public/terrain/18/429236/176888.terrain new file mode 100644 index 000000000..05dbad1f5 Binary files /dev/null and b/public/terrain/18/429236/176888.terrain differ diff --git a/public/terrain/18/429236/176889.terrain b/public/terrain/18/429236/176889.terrain new file mode 100644 index 000000000..0430f9338 Binary files /dev/null and b/public/terrain/18/429236/176889.terrain differ diff --git a/public/terrain/18/429236/176890.terrain b/public/terrain/18/429236/176890.terrain new file mode 100644 index 000000000..46c1f4973 Binary files /dev/null and b/public/terrain/18/429236/176890.terrain differ diff --git a/public/terrain/18/429236/176891.terrain b/public/terrain/18/429236/176891.terrain new file mode 100644 index 000000000..df6bf22dc Binary files /dev/null and b/public/terrain/18/429236/176891.terrain differ diff --git a/public/terrain/18/429236/176892.terrain b/public/terrain/18/429236/176892.terrain new file mode 100644 index 000000000..c1fc9b3c6 Binary files /dev/null and b/public/terrain/18/429236/176892.terrain differ diff --git a/public/terrain/18/429236/176893.terrain b/public/terrain/18/429236/176893.terrain new file mode 100644 index 000000000..1bd3e13cb Binary files /dev/null and b/public/terrain/18/429236/176893.terrain differ diff --git a/public/terrain/18/429236/176894.terrain b/public/terrain/18/429236/176894.terrain new file mode 100644 index 000000000..22e2d9aa9 Binary files /dev/null and b/public/terrain/18/429236/176894.terrain differ diff --git a/public/terrain/18/429236/176895.terrain b/public/terrain/18/429236/176895.terrain new file mode 100644 index 000000000..65f997927 Binary files /dev/null and b/public/terrain/18/429236/176895.terrain differ diff --git a/public/terrain/18/429236/176896.terrain b/public/terrain/18/429236/176896.terrain new file mode 100644 index 000000000..e06d324be Binary files /dev/null and b/public/terrain/18/429236/176896.terrain differ diff --git a/public/terrain/18/429236/176897.terrain b/public/terrain/18/429236/176897.terrain new file mode 100644 index 000000000..c6e9287ba Binary files /dev/null and b/public/terrain/18/429236/176897.terrain differ diff --git a/public/terrain/18/429236/176898.terrain b/public/terrain/18/429236/176898.terrain new file mode 100644 index 000000000..e0c379ff6 Binary files /dev/null and b/public/terrain/18/429236/176898.terrain differ diff --git a/public/terrain/18/429236/176899.terrain b/public/terrain/18/429236/176899.terrain new file mode 100644 index 000000000..5fab44993 Binary files /dev/null and b/public/terrain/18/429236/176899.terrain differ diff --git a/public/terrain/18/429236/176900.terrain b/public/terrain/18/429236/176900.terrain new file mode 100644 index 000000000..853a3dd39 Binary files /dev/null and b/public/terrain/18/429236/176900.terrain differ diff --git a/public/terrain/18/429236/176901.terrain b/public/terrain/18/429236/176901.terrain new file mode 100644 index 000000000..70c6edb55 Binary files /dev/null and b/public/terrain/18/429236/176901.terrain differ diff --git a/public/terrain/18/429236/176902.terrain b/public/terrain/18/429236/176902.terrain new file mode 100644 index 000000000..19ced5eb9 Binary files /dev/null and b/public/terrain/18/429236/176902.terrain differ diff --git a/public/terrain/18/429236/176903.terrain b/public/terrain/18/429236/176903.terrain new file mode 100644 index 000000000..3dbe18e10 Binary files /dev/null and b/public/terrain/18/429236/176903.terrain differ diff --git a/public/terrain/18/429236/176904.terrain b/public/terrain/18/429236/176904.terrain new file mode 100644 index 000000000..032886e67 Binary files /dev/null and b/public/terrain/18/429236/176904.terrain differ diff --git a/public/terrain/18/429236/176905.terrain b/public/terrain/18/429236/176905.terrain new file mode 100644 index 000000000..ddc0b5d03 Binary files /dev/null and b/public/terrain/18/429236/176905.terrain differ diff --git a/public/terrain/18/429236/176906.terrain b/public/terrain/18/429236/176906.terrain new file mode 100644 index 000000000..8f90f7449 Binary files /dev/null and b/public/terrain/18/429236/176906.terrain differ diff --git a/public/terrain/18/429236/176907.terrain b/public/terrain/18/429236/176907.terrain new file mode 100644 index 000000000..da388881b Binary files /dev/null and b/public/terrain/18/429236/176907.terrain differ diff --git a/public/terrain/18/429236/176908.terrain b/public/terrain/18/429236/176908.terrain new file mode 100644 index 000000000..e44e7ee5c Binary files /dev/null and b/public/terrain/18/429236/176908.terrain differ diff --git a/public/terrain/18/429236/176909.terrain b/public/terrain/18/429236/176909.terrain new file mode 100644 index 000000000..6575f6b51 Binary files /dev/null and b/public/terrain/18/429236/176909.terrain differ diff --git a/public/terrain/18/429236/176910.terrain b/public/terrain/18/429236/176910.terrain new file mode 100644 index 000000000..a00b0feeb Binary files /dev/null and b/public/terrain/18/429236/176910.terrain differ diff --git a/public/terrain/18/429236/176911.terrain b/public/terrain/18/429236/176911.terrain new file mode 100644 index 000000000..ef4dd601d Binary files /dev/null and b/public/terrain/18/429236/176911.terrain differ diff --git a/public/terrain/18/429236/176912.terrain b/public/terrain/18/429236/176912.terrain new file mode 100644 index 000000000..ff2e1aca3 Binary files /dev/null and b/public/terrain/18/429236/176912.terrain differ diff --git a/public/terrain/18/429236/176913.terrain b/public/terrain/18/429236/176913.terrain new file mode 100644 index 000000000..1f834502c Binary files /dev/null and b/public/terrain/18/429236/176913.terrain differ diff --git a/public/terrain/18/429236/176914.terrain b/public/terrain/18/429236/176914.terrain new file mode 100644 index 000000000..b9b8c809a Binary files /dev/null and b/public/terrain/18/429236/176914.terrain differ diff --git a/public/terrain/18/429236/176915.terrain b/public/terrain/18/429236/176915.terrain new file mode 100644 index 000000000..2abd78a32 Binary files /dev/null and b/public/terrain/18/429236/176915.terrain differ diff --git a/public/terrain/18/429236/176916.terrain b/public/terrain/18/429236/176916.terrain new file mode 100644 index 000000000..26aa514e2 Binary files /dev/null and b/public/terrain/18/429236/176916.terrain differ diff --git a/public/terrain/18/429236/176917.terrain b/public/terrain/18/429236/176917.terrain new file mode 100644 index 000000000..528b0e997 Binary files /dev/null and b/public/terrain/18/429236/176917.terrain differ diff --git a/public/terrain/18/429236/176918.terrain b/public/terrain/18/429236/176918.terrain new file mode 100644 index 000000000..bf3391aee Binary files /dev/null and b/public/terrain/18/429236/176918.terrain differ diff --git a/public/terrain/18/429236/176919.terrain b/public/terrain/18/429236/176919.terrain new file mode 100644 index 000000000..86e903aae Binary files /dev/null and b/public/terrain/18/429236/176919.terrain differ diff --git a/public/terrain/18/429236/176920.terrain b/public/terrain/18/429236/176920.terrain new file mode 100644 index 000000000..41a5093bc Binary files /dev/null and b/public/terrain/18/429236/176920.terrain differ diff --git a/public/terrain/18/429236/176921.terrain b/public/terrain/18/429236/176921.terrain new file mode 100644 index 000000000..6b4da98b6 Binary files /dev/null and b/public/terrain/18/429236/176921.terrain differ diff --git a/public/terrain/18/429236/176922.terrain b/public/terrain/18/429236/176922.terrain new file mode 100644 index 000000000..1494b651e Binary files /dev/null and b/public/terrain/18/429236/176922.terrain differ diff --git a/public/terrain/18/429236/176923.terrain b/public/terrain/18/429236/176923.terrain new file mode 100644 index 000000000..8cf129ed0 Binary files /dev/null and b/public/terrain/18/429236/176923.terrain differ diff --git a/public/terrain/18/429236/176924.terrain b/public/terrain/18/429236/176924.terrain new file mode 100644 index 000000000..1112776ea Binary files /dev/null and b/public/terrain/18/429236/176924.terrain differ diff --git a/public/terrain/18/429236/176925.terrain b/public/terrain/18/429236/176925.terrain new file mode 100644 index 000000000..d69c8d21d Binary files /dev/null and b/public/terrain/18/429236/176925.terrain differ diff --git a/public/terrain/18/429236/176926.terrain b/public/terrain/18/429236/176926.terrain new file mode 100644 index 000000000..c7a5c8060 Binary files /dev/null and b/public/terrain/18/429236/176926.terrain differ diff --git a/public/terrain/18/429236/176927.terrain b/public/terrain/18/429236/176927.terrain new file mode 100644 index 000000000..829d38147 Binary files /dev/null and b/public/terrain/18/429236/176927.terrain differ diff --git a/public/terrain/18/429236/176928.terrain b/public/terrain/18/429236/176928.terrain new file mode 100644 index 000000000..22ba40b69 Binary files /dev/null and b/public/terrain/18/429236/176928.terrain differ diff --git a/public/terrain/18/429236/176929.terrain b/public/terrain/18/429236/176929.terrain new file mode 100644 index 000000000..64551bdb5 Binary files /dev/null and b/public/terrain/18/429236/176929.terrain differ diff --git a/public/terrain/18/429236/176930.terrain b/public/terrain/18/429236/176930.terrain new file mode 100644 index 000000000..8b1925e10 Binary files /dev/null and b/public/terrain/18/429236/176930.terrain differ diff --git a/public/terrain/18/429236/176931.terrain b/public/terrain/18/429236/176931.terrain new file mode 100644 index 000000000..8dd8ee2dd Binary files /dev/null and b/public/terrain/18/429236/176931.terrain differ diff --git a/public/terrain/18/429236/176932.terrain b/public/terrain/18/429236/176932.terrain new file mode 100644 index 000000000..95fd88a9f Binary files /dev/null and b/public/terrain/18/429236/176932.terrain differ diff --git a/public/terrain/18/429236/176933.terrain b/public/terrain/18/429236/176933.terrain new file mode 100644 index 000000000..9e5554cb6 Binary files /dev/null and b/public/terrain/18/429236/176933.terrain differ diff --git a/public/terrain/18/429236/176934.terrain b/public/terrain/18/429236/176934.terrain new file mode 100644 index 000000000..a511fa218 Binary files /dev/null and b/public/terrain/18/429236/176934.terrain differ diff --git a/public/terrain/18/429236/176935.terrain b/public/terrain/18/429236/176935.terrain new file mode 100644 index 000000000..6fb3022c7 Binary files /dev/null and b/public/terrain/18/429236/176935.terrain differ diff --git a/public/terrain/18/429236/176936.terrain b/public/terrain/18/429236/176936.terrain new file mode 100644 index 000000000..099de3859 Binary files /dev/null and b/public/terrain/18/429236/176936.terrain differ diff --git a/public/terrain/18/429236/176937.terrain b/public/terrain/18/429236/176937.terrain new file mode 100644 index 000000000..e5714cf0e Binary files /dev/null and b/public/terrain/18/429236/176937.terrain differ diff --git a/public/terrain/18/429236/176938.terrain b/public/terrain/18/429236/176938.terrain new file mode 100644 index 000000000..e757b6f27 Binary files /dev/null and b/public/terrain/18/429236/176938.terrain differ diff --git a/public/terrain/18/429236/176939.terrain b/public/terrain/18/429236/176939.terrain new file mode 100644 index 000000000..7dae25779 Binary files /dev/null and b/public/terrain/18/429236/176939.terrain differ diff --git a/public/terrain/18/429236/176940.terrain b/public/terrain/18/429236/176940.terrain new file mode 100644 index 000000000..3f573bd10 Binary files /dev/null and b/public/terrain/18/429236/176940.terrain differ diff --git a/public/terrain/18/429236/176941.terrain b/public/terrain/18/429236/176941.terrain new file mode 100644 index 000000000..1997e7b1a Binary files /dev/null and b/public/terrain/18/429236/176941.terrain differ diff --git a/public/terrain/18/429236/176942.terrain b/public/terrain/18/429236/176942.terrain new file mode 100644 index 000000000..85beba5fd Binary files /dev/null and b/public/terrain/18/429236/176942.terrain differ diff --git a/public/terrain/18/429236/176943.terrain b/public/terrain/18/429236/176943.terrain new file mode 100644 index 000000000..207815b79 Binary files /dev/null and b/public/terrain/18/429236/176943.terrain differ diff --git a/public/terrain/18/429236/176944.terrain b/public/terrain/18/429236/176944.terrain new file mode 100644 index 000000000..4e7e91ee2 Binary files /dev/null and b/public/terrain/18/429236/176944.terrain differ diff --git a/public/terrain/18/429236/176945.terrain b/public/terrain/18/429236/176945.terrain new file mode 100644 index 000000000..42e4b9501 Binary files /dev/null and b/public/terrain/18/429236/176945.terrain differ diff --git a/public/terrain/18/429236/176946.terrain b/public/terrain/18/429236/176946.terrain new file mode 100644 index 000000000..c3fd97397 Binary files /dev/null and b/public/terrain/18/429236/176946.terrain differ diff --git a/public/terrain/18/429236/176947.terrain b/public/terrain/18/429236/176947.terrain new file mode 100644 index 000000000..bf8cc5876 Binary files /dev/null and b/public/terrain/18/429236/176947.terrain differ diff --git a/public/terrain/18/429236/176948.terrain b/public/terrain/18/429236/176948.terrain new file mode 100644 index 000000000..a45de0870 Binary files /dev/null and b/public/terrain/18/429236/176948.terrain differ diff --git a/public/terrain/18/429236/176949.terrain b/public/terrain/18/429236/176949.terrain new file mode 100644 index 000000000..84e0d3c86 Binary files /dev/null and b/public/terrain/18/429236/176949.terrain differ diff --git a/public/terrain/18/429236/176950.terrain b/public/terrain/18/429236/176950.terrain new file mode 100644 index 000000000..c3749fa9e Binary files /dev/null and b/public/terrain/18/429236/176950.terrain differ diff --git a/public/terrain/18/429236/176951.terrain b/public/terrain/18/429236/176951.terrain new file mode 100644 index 000000000..4e7789b6b Binary files /dev/null and b/public/terrain/18/429236/176951.terrain differ diff --git a/public/terrain/18/429236/176952.terrain b/public/terrain/18/429236/176952.terrain new file mode 100644 index 000000000..cfd3dbc1c Binary files /dev/null and b/public/terrain/18/429236/176952.terrain differ diff --git a/public/terrain/18/429236/176953.terrain b/public/terrain/18/429236/176953.terrain new file mode 100644 index 000000000..ae3ce7358 Binary files /dev/null and b/public/terrain/18/429236/176953.terrain differ diff --git a/public/terrain/18/429236/176954.terrain b/public/terrain/18/429236/176954.terrain new file mode 100644 index 000000000..71a53cc40 Binary files /dev/null and b/public/terrain/18/429236/176954.terrain differ diff --git a/public/terrain/18/429236/176955.terrain b/public/terrain/18/429236/176955.terrain new file mode 100644 index 000000000..5fa33027e Binary files /dev/null and b/public/terrain/18/429236/176955.terrain differ diff --git a/public/terrain/18/429236/176956.terrain b/public/terrain/18/429236/176956.terrain new file mode 100644 index 000000000..08abdb9ba Binary files /dev/null and b/public/terrain/18/429236/176956.terrain differ diff --git a/public/terrain/18/429236/176957.terrain b/public/terrain/18/429236/176957.terrain new file mode 100644 index 000000000..44e72f35d Binary files /dev/null and b/public/terrain/18/429236/176957.terrain differ diff --git a/public/terrain/18/429236/176958.terrain b/public/terrain/18/429236/176958.terrain new file mode 100644 index 000000000..0c9d23709 Binary files /dev/null and b/public/terrain/18/429236/176958.terrain differ diff --git a/public/terrain/18/429236/176959.terrain b/public/terrain/18/429236/176959.terrain new file mode 100644 index 000000000..d6fef0b3b Binary files /dev/null and b/public/terrain/18/429236/176959.terrain differ diff --git a/public/terrain/18/429236/176960.terrain b/public/terrain/18/429236/176960.terrain new file mode 100644 index 000000000..f28eb0471 Binary files /dev/null and b/public/terrain/18/429236/176960.terrain differ diff --git a/public/terrain/18/429236/176961.terrain b/public/terrain/18/429236/176961.terrain new file mode 100644 index 000000000..1277282ed Binary files /dev/null and b/public/terrain/18/429236/176961.terrain differ diff --git a/public/terrain/18/429236/176962.terrain b/public/terrain/18/429236/176962.terrain new file mode 100644 index 000000000..95e5d59c4 Binary files /dev/null and b/public/terrain/18/429236/176962.terrain differ diff --git a/public/terrain/18/429236/176963.terrain b/public/terrain/18/429236/176963.terrain new file mode 100644 index 000000000..511989b85 Binary files /dev/null and b/public/terrain/18/429236/176963.terrain differ diff --git a/public/terrain/18/429236/176964.terrain b/public/terrain/18/429236/176964.terrain new file mode 100644 index 000000000..e12117e42 Binary files /dev/null and b/public/terrain/18/429236/176964.terrain differ diff --git a/public/terrain/18/429236/176965.terrain b/public/terrain/18/429236/176965.terrain new file mode 100644 index 000000000..dba6706cd Binary files /dev/null and b/public/terrain/18/429236/176965.terrain differ diff --git a/public/terrain/18/429236/176966.terrain b/public/terrain/18/429236/176966.terrain new file mode 100644 index 000000000..2b900e2ba Binary files /dev/null and b/public/terrain/18/429236/176966.terrain differ diff --git a/public/terrain/18/429236/176967.terrain b/public/terrain/18/429236/176967.terrain new file mode 100644 index 000000000..1c240536d Binary files /dev/null and b/public/terrain/18/429236/176967.terrain differ diff --git a/public/terrain/18/429236/176968.terrain b/public/terrain/18/429236/176968.terrain new file mode 100644 index 000000000..fb97eaa1b Binary files /dev/null and b/public/terrain/18/429236/176968.terrain differ diff --git a/public/terrain/18/429236/176969.terrain b/public/terrain/18/429236/176969.terrain new file mode 100644 index 000000000..30b89973c Binary files /dev/null and b/public/terrain/18/429236/176969.terrain differ diff --git a/public/terrain/18/429236/176970.terrain b/public/terrain/18/429236/176970.terrain new file mode 100644 index 000000000..bca945bd4 Binary files /dev/null and b/public/terrain/18/429236/176970.terrain differ diff --git a/public/terrain/18/429236/176971.terrain b/public/terrain/18/429236/176971.terrain new file mode 100644 index 000000000..ec9960bfe Binary files /dev/null and b/public/terrain/18/429236/176971.terrain differ diff --git a/public/terrain/18/429236/176972.terrain b/public/terrain/18/429236/176972.terrain new file mode 100644 index 000000000..bdb777396 Binary files /dev/null and b/public/terrain/18/429236/176972.terrain differ diff --git a/public/terrain/18/429236/176973.terrain b/public/terrain/18/429236/176973.terrain new file mode 100644 index 000000000..c8d9138d2 Binary files /dev/null and b/public/terrain/18/429236/176973.terrain differ diff --git a/public/terrain/18/429236/176974.terrain b/public/terrain/18/429236/176974.terrain new file mode 100644 index 000000000..365ac1d8c Binary files /dev/null and b/public/terrain/18/429236/176974.terrain differ diff --git a/public/terrain/18/429236/176975.terrain b/public/terrain/18/429236/176975.terrain new file mode 100644 index 000000000..634a57499 Binary files /dev/null and b/public/terrain/18/429236/176975.terrain differ diff --git a/public/terrain/18/429236/176976.terrain b/public/terrain/18/429236/176976.terrain new file mode 100644 index 000000000..71a8718d3 Binary files /dev/null and b/public/terrain/18/429236/176976.terrain differ diff --git a/public/terrain/18/429236/176977.terrain b/public/terrain/18/429236/176977.terrain new file mode 100644 index 000000000..d1d265c27 Binary files /dev/null and b/public/terrain/18/429236/176977.terrain differ diff --git a/public/terrain/18/429236/176978.terrain b/public/terrain/18/429236/176978.terrain new file mode 100644 index 000000000..8f5328e95 Binary files /dev/null and b/public/terrain/18/429236/176978.terrain differ diff --git a/public/terrain/18/429236/176979.terrain b/public/terrain/18/429236/176979.terrain new file mode 100644 index 000000000..8f2c91c79 Binary files /dev/null and b/public/terrain/18/429236/176979.terrain differ diff --git a/public/terrain/18/429236/176980.terrain b/public/terrain/18/429236/176980.terrain new file mode 100644 index 000000000..6e44bf440 Binary files /dev/null and b/public/terrain/18/429236/176980.terrain differ diff --git a/public/terrain/18/429236/176981.terrain b/public/terrain/18/429236/176981.terrain new file mode 100644 index 000000000..69782ab37 Binary files /dev/null and b/public/terrain/18/429236/176981.terrain differ diff --git a/public/terrain/18/429236/176982.terrain b/public/terrain/18/429236/176982.terrain new file mode 100644 index 000000000..5140abb3c Binary files /dev/null and b/public/terrain/18/429236/176982.terrain differ diff --git a/public/terrain/18/429236/176983.terrain b/public/terrain/18/429236/176983.terrain new file mode 100644 index 000000000..a104d9660 Binary files /dev/null and b/public/terrain/18/429236/176983.terrain differ diff --git a/public/terrain/18/429236/176984.terrain b/public/terrain/18/429236/176984.terrain new file mode 100644 index 000000000..62c735c5c Binary files /dev/null and b/public/terrain/18/429236/176984.terrain differ diff --git a/public/terrain/18/429236/176985.terrain b/public/terrain/18/429236/176985.terrain new file mode 100644 index 000000000..f118999c8 Binary files /dev/null and b/public/terrain/18/429236/176985.terrain differ diff --git a/public/terrain/18/429236/176986.terrain b/public/terrain/18/429236/176986.terrain new file mode 100644 index 000000000..8cf7b295c Binary files /dev/null and b/public/terrain/18/429236/176986.terrain differ diff --git a/public/terrain/18/429236/176987.terrain b/public/terrain/18/429236/176987.terrain new file mode 100644 index 000000000..d4080bcf0 Binary files /dev/null and b/public/terrain/18/429236/176987.terrain differ diff --git a/public/terrain/18/429236/176988.terrain b/public/terrain/18/429236/176988.terrain new file mode 100644 index 000000000..66c8c80d9 Binary files /dev/null and b/public/terrain/18/429236/176988.terrain differ diff --git a/public/terrain/18/429236/176989.terrain b/public/terrain/18/429236/176989.terrain new file mode 100644 index 000000000..10b90354e Binary files /dev/null and b/public/terrain/18/429236/176989.terrain differ diff --git a/public/terrain/18/429236/176990.terrain b/public/terrain/18/429236/176990.terrain new file mode 100644 index 000000000..426c015c5 Binary files /dev/null and b/public/terrain/18/429236/176990.terrain differ diff --git a/public/terrain/18/429236/176991.terrain b/public/terrain/18/429236/176991.terrain new file mode 100644 index 000000000..49b625688 Binary files /dev/null and b/public/terrain/18/429236/176991.terrain differ diff --git a/public/terrain/18/429236/176992.terrain b/public/terrain/18/429236/176992.terrain new file mode 100644 index 000000000..c3b76d5d9 Binary files /dev/null and b/public/terrain/18/429236/176992.terrain differ diff --git a/public/terrain/18/429236/176993.terrain b/public/terrain/18/429236/176993.terrain new file mode 100644 index 000000000..1abcf776b Binary files /dev/null and b/public/terrain/18/429236/176993.terrain differ diff --git a/public/terrain/18/429236/176994.terrain b/public/terrain/18/429236/176994.terrain new file mode 100644 index 000000000..201d999fc Binary files /dev/null and b/public/terrain/18/429236/176994.terrain differ diff --git a/public/terrain/18/429236/176995.terrain b/public/terrain/18/429236/176995.terrain new file mode 100644 index 000000000..7372beee6 Binary files /dev/null and b/public/terrain/18/429236/176995.terrain differ diff --git a/public/terrain/18/429236/176996.terrain b/public/terrain/18/429236/176996.terrain new file mode 100644 index 000000000..9565e52c9 Binary files /dev/null and b/public/terrain/18/429236/176996.terrain differ diff --git a/public/terrain/18/429236/176997.terrain b/public/terrain/18/429236/176997.terrain new file mode 100644 index 000000000..3de915aa3 Binary files /dev/null and b/public/terrain/18/429236/176997.terrain differ diff --git a/public/terrain/18/429236/176998.terrain b/public/terrain/18/429236/176998.terrain new file mode 100644 index 000000000..095481550 Binary files /dev/null and b/public/terrain/18/429236/176998.terrain differ diff --git a/public/terrain/18/429236/176999.terrain b/public/terrain/18/429236/176999.terrain new file mode 100644 index 000000000..e07573bbb Binary files /dev/null and b/public/terrain/18/429236/176999.terrain differ diff --git a/public/terrain/18/429236/177000.terrain b/public/terrain/18/429236/177000.terrain new file mode 100644 index 000000000..f1aa5beaf Binary files /dev/null and b/public/terrain/18/429236/177000.terrain differ diff --git a/public/terrain/18/429236/177001.terrain b/public/terrain/18/429236/177001.terrain new file mode 100644 index 000000000..50446bc1a Binary files /dev/null and b/public/terrain/18/429236/177001.terrain differ diff --git a/public/terrain/18/429236/177002.terrain b/public/terrain/18/429236/177002.terrain new file mode 100644 index 000000000..a92316907 Binary files /dev/null and b/public/terrain/18/429236/177002.terrain differ diff --git a/public/terrain/18/429236/177003.terrain b/public/terrain/18/429236/177003.terrain new file mode 100644 index 000000000..d042cfcd9 Binary files /dev/null and b/public/terrain/18/429236/177003.terrain differ diff --git a/public/terrain/18/429236/177004.terrain b/public/terrain/18/429236/177004.terrain new file mode 100644 index 000000000..38c51ff07 Binary files /dev/null and b/public/terrain/18/429236/177004.terrain differ diff --git a/public/terrain/18/429236/177005.terrain b/public/terrain/18/429236/177005.terrain new file mode 100644 index 000000000..f6cbdacfe Binary files /dev/null and b/public/terrain/18/429236/177005.terrain differ diff --git a/public/terrain/18/429236/177006.terrain b/public/terrain/18/429236/177006.terrain new file mode 100644 index 000000000..2c53ac6bd Binary files /dev/null and b/public/terrain/18/429236/177006.terrain differ diff --git a/public/terrain/18/429236/177007.terrain b/public/terrain/18/429236/177007.terrain new file mode 100644 index 000000000..ecd45a065 Binary files /dev/null and b/public/terrain/18/429236/177007.terrain differ diff --git a/public/terrain/18/429236/177008.terrain b/public/terrain/18/429236/177008.terrain new file mode 100644 index 000000000..57926450f Binary files /dev/null and b/public/terrain/18/429236/177008.terrain differ diff --git a/public/terrain/18/429236/177009.terrain b/public/terrain/18/429236/177009.terrain new file mode 100644 index 000000000..45e481567 Binary files /dev/null and b/public/terrain/18/429236/177009.terrain differ diff --git a/public/terrain/18/429236/177010.terrain b/public/terrain/18/429236/177010.terrain new file mode 100644 index 000000000..2e73f59e3 Binary files /dev/null and b/public/terrain/18/429236/177010.terrain differ diff --git a/public/terrain/18/429236/177011.terrain b/public/terrain/18/429236/177011.terrain new file mode 100644 index 000000000..076fcc93a Binary files /dev/null and b/public/terrain/18/429236/177011.terrain differ diff --git a/public/terrain/18/429236/177012.terrain b/public/terrain/18/429236/177012.terrain new file mode 100644 index 000000000..49f02dcc3 Binary files /dev/null and b/public/terrain/18/429236/177012.terrain differ diff --git a/public/terrain/18/429236/177013.terrain b/public/terrain/18/429236/177013.terrain new file mode 100644 index 000000000..2dc9dcc8c Binary files /dev/null and b/public/terrain/18/429236/177013.terrain differ diff --git a/public/terrain/18/429236/177014.terrain b/public/terrain/18/429236/177014.terrain new file mode 100644 index 000000000..31dbed33a Binary files /dev/null and b/public/terrain/18/429236/177014.terrain differ diff --git a/public/terrain/18/429236/177015.terrain b/public/terrain/18/429236/177015.terrain new file mode 100644 index 000000000..1115bfc0e Binary files /dev/null and b/public/terrain/18/429236/177015.terrain differ diff --git a/public/terrain/18/429236/177016.terrain b/public/terrain/18/429236/177016.terrain new file mode 100644 index 000000000..9ddb2c7e1 Binary files /dev/null and b/public/terrain/18/429236/177016.terrain differ diff --git a/public/terrain/18/429236/177017.terrain b/public/terrain/18/429236/177017.terrain new file mode 100644 index 000000000..5ce9a59b6 Binary files /dev/null and b/public/terrain/18/429236/177017.terrain differ diff --git a/public/terrain/18/429236/177018.terrain b/public/terrain/18/429236/177018.terrain new file mode 100644 index 000000000..fc8defe03 Binary files /dev/null and b/public/terrain/18/429236/177018.terrain differ diff --git a/public/terrain/18/429236/177019.terrain b/public/terrain/18/429236/177019.terrain new file mode 100644 index 000000000..e4a646e4e Binary files /dev/null and b/public/terrain/18/429236/177019.terrain differ diff --git a/public/terrain/18/429236/177020.terrain b/public/terrain/18/429236/177020.terrain new file mode 100644 index 000000000..4cde48630 Binary files /dev/null and b/public/terrain/18/429236/177020.terrain differ diff --git a/public/terrain/18/429236/177021.terrain b/public/terrain/18/429236/177021.terrain new file mode 100644 index 000000000..91cc970c8 Binary files /dev/null and b/public/terrain/18/429236/177021.terrain differ diff --git a/public/terrain/18/429236/177022.terrain b/public/terrain/18/429236/177022.terrain new file mode 100644 index 000000000..aa52333d8 Binary files /dev/null and b/public/terrain/18/429236/177022.terrain differ diff --git a/public/terrain/18/429236/177023.terrain b/public/terrain/18/429236/177023.terrain new file mode 100644 index 000000000..b1e9f0983 Binary files /dev/null and b/public/terrain/18/429236/177023.terrain differ diff --git a/public/terrain/18/429236/177024.terrain b/public/terrain/18/429236/177024.terrain new file mode 100644 index 000000000..e23054227 Binary files /dev/null and b/public/terrain/18/429236/177024.terrain differ diff --git a/public/terrain/18/429236/177025.terrain b/public/terrain/18/429236/177025.terrain new file mode 100644 index 000000000..706cabfd3 Binary files /dev/null and b/public/terrain/18/429236/177025.terrain differ diff --git a/public/terrain/18/429236/177026.terrain b/public/terrain/18/429236/177026.terrain new file mode 100644 index 000000000..d338fd85f Binary files /dev/null and b/public/terrain/18/429236/177026.terrain differ diff --git a/public/terrain/18/429236/177027.terrain b/public/terrain/18/429236/177027.terrain new file mode 100644 index 000000000..2f2042e9c Binary files /dev/null and b/public/terrain/18/429236/177027.terrain differ diff --git a/public/terrain/18/429236/177028.terrain b/public/terrain/18/429236/177028.terrain new file mode 100644 index 000000000..e5bf4cc32 Binary files /dev/null and b/public/terrain/18/429236/177028.terrain differ diff --git a/public/terrain/18/429236/177029.terrain b/public/terrain/18/429236/177029.terrain new file mode 100644 index 000000000..5f8fb5549 Binary files /dev/null and b/public/terrain/18/429236/177029.terrain differ diff --git a/public/terrain/18/429237/176871.terrain b/public/terrain/18/429237/176871.terrain new file mode 100644 index 000000000..ebb14ab68 Binary files /dev/null and b/public/terrain/18/429237/176871.terrain differ diff --git a/public/terrain/18/429237/176872.terrain b/public/terrain/18/429237/176872.terrain new file mode 100644 index 000000000..54ec4b894 Binary files /dev/null and b/public/terrain/18/429237/176872.terrain differ diff --git a/public/terrain/18/429237/176873.terrain b/public/terrain/18/429237/176873.terrain new file mode 100644 index 000000000..2caac097c Binary files /dev/null and b/public/terrain/18/429237/176873.terrain differ diff --git a/public/terrain/18/429237/176874.terrain b/public/terrain/18/429237/176874.terrain new file mode 100644 index 000000000..b6fa9a5de Binary files /dev/null and b/public/terrain/18/429237/176874.terrain differ diff --git a/public/terrain/18/429237/176875.terrain b/public/terrain/18/429237/176875.terrain new file mode 100644 index 000000000..a4fcac285 Binary files /dev/null and b/public/terrain/18/429237/176875.terrain differ diff --git a/public/terrain/18/429237/176876.terrain b/public/terrain/18/429237/176876.terrain new file mode 100644 index 000000000..cbf71da93 Binary files /dev/null and b/public/terrain/18/429237/176876.terrain differ diff --git a/public/terrain/18/429237/176877.terrain b/public/terrain/18/429237/176877.terrain new file mode 100644 index 000000000..06df01198 Binary files /dev/null and b/public/terrain/18/429237/176877.terrain differ diff --git a/public/terrain/18/429237/176878.terrain b/public/terrain/18/429237/176878.terrain new file mode 100644 index 000000000..d3a7addf2 Binary files /dev/null and b/public/terrain/18/429237/176878.terrain differ diff --git a/public/terrain/18/429237/176879.terrain b/public/terrain/18/429237/176879.terrain new file mode 100644 index 000000000..e8a1d76c1 Binary files /dev/null and b/public/terrain/18/429237/176879.terrain differ diff --git a/public/terrain/18/429237/176880.terrain b/public/terrain/18/429237/176880.terrain new file mode 100644 index 000000000..06472df9d Binary files /dev/null and b/public/terrain/18/429237/176880.terrain differ diff --git a/public/terrain/18/429237/176881.terrain b/public/terrain/18/429237/176881.terrain new file mode 100644 index 000000000..14be1c143 Binary files /dev/null and b/public/terrain/18/429237/176881.terrain differ diff --git a/public/terrain/18/429237/176882.terrain b/public/terrain/18/429237/176882.terrain new file mode 100644 index 000000000..e8bd6735e Binary files /dev/null and b/public/terrain/18/429237/176882.terrain differ diff --git a/public/terrain/18/429237/176883.terrain b/public/terrain/18/429237/176883.terrain new file mode 100644 index 000000000..02381afc2 Binary files /dev/null and b/public/terrain/18/429237/176883.terrain differ diff --git a/public/terrain/18/429237/176884.terrain b/public/terrain/18/429237/176884.terrain new file mode 100644 index 000000000..ffb29d325 Binary files /dev/null and b/public/terrain/18/429237/176884.terrain differ diff --git a/public/terrain/18/429237/176885.terrain b/public/terrain/18/429237/176885.terrain new file mode 100644 index 000000000..31478a39b Binary files /dev/null and b/public/terrain/18/429237/176885.terrain differ diff --git a/public/terrain/18/429237/176886.terrain b/public/terrain/18/429237/176886.terrain new file mode 100644 index 000000000..2d82d27a0 Binary files /dev/null and b/public/terrain/18/429237/176886.terrain differ diff --git a/public/terrain/18/429237/176887.terrain b/public/terrain/18/429237/176887.terrain new file mode 100644 index 000000000..093d3fb7e Binary files /dev/null and b/public/terrain/18/429237/176887.terrain differ diff --git a/public/terrain/18/429237/176888.terrain b/public/terrain/18/429237/176888.terrain new file mode 100644 index 000000000..60a1a7f2e Binary files /dev/null and b/public/terrain/18/429237/176888.terrain differ diff --git a/public/terrain/18/429237/176889.terrain b/public/terrain/18/429237/176889.terrain new file mode 100644 index 000000000..98fd6796b Binary files /dev/null and b/public/terrain/18/429237/176889.terrain differ diff --git a/public/terrain/18/429237/176890.terrain b/public/terrain/18/429237/176890.terrain new file mode 100644 index 000000000..1072e9cea Binary files /dev/null and b/public/terrain/18/429237/176890.terrain differ diff --git a/public/terrain/18/429237/176891.terrain b/public/terrain/18/429237/176891.terrain new file mode 100644 index 000000000..d2aa63b5d Binary files /dev/null and b/public/terrain/18/429237/176891.terrain differ diff --git a/public/terrain/18/429237/176892.terrain b/public/terrain/18/429237/176892.terrain new file mode 100644 index 000000000..1a9049e14 Binary files /dev/null and b/public/terrain/18/429237/176892.terrain differ diff --git a/public/terrain/18/429237/176893.terrain b/public/terrain/18/429237/176893.terrain new file mode 100644 index 000000000..b49679e8c Binary files /dev/null and b/public/terrain/18/429237/176893.terrain differ diff --git a/public/terrain/18/429237/176894.terrain b/public/terrain/18/429237/176894.terrain new file mode 100644 index 000000000..3191af1dc Binary files /dev/null and b/public/terrain/18/429237/176894.terrain differ diff --git a/public/terrain/18/429237/176895.terrain b/public/terrain/18/429237/176895.terrain new file mode 100644 index 000000000..fbb6570c4 Binary files /dev/null and b/public/terrain/18/429237/176895.terrain differ diff --git a/public/terrain/18/429237/176896.terrain b/public/terrain/18/429237/176896.terrain new file mode 100644 index 000000000..2efa5a3d1 Binary files /dev/null and b/public/terrain/18/429237/176896.terrain differ diff --git a/public/terrain/18/429237/176897.terrain b/public/terrain/18/429237/176897.terrain new file mode 100644 index 000000000..2eb9a5a5c Binary files /dev/null and b/public/terrain/18/429237/176897.terrain differ diff --git a/public/terrain/18/429237/176898.terrain b/public/terrain/18/429237/176898.terrain new file mode 100644 index 000000000..1a0642455 Binary files /dev/null and b/public/terrain/18/429237/176898.terrain differ diff --git a/public/terrain/18/429237/176899.terrain b/public/terrain/18/429237/176899.terrain new file mode 100644 index 000000000..5e53ed124 Binary files /dev/null and b/public/terrain/18/429237/176899.terrain differ diff --git a/public/terrain/18/429237/176900.terrain b/public/terrain/18/429237/176900.terrain new file mode 100644 index 000000000..1368dbe93 Binary files /dev/null and b/public/terrain/18/429237/176900.terrain differ diff --git a/public/terrain/18/429237/176901.terrain b/public/terrain/18/429237/176901.terrain new file mode 100644 index 000000000..85bf58a2a Binary files /dev/null and b/public/terrain/18/429237/176901.terrain differ diff --git a/public/terrain/18/429237/176902.terrain b/public/terrain/18/429237/176902.terrain new file mode 100644 index 000000000..939fdf3f2 Binary files /dev/null and b/public/terrain/18/429237/176902.terrain differ diff --git a/public/terrain/18/429237/176903.terrain b/public/terrain/18/429237/176903.terrain new file mode 100644 index 000000000..10fb4222e Binary files /dev/null and b/public/terrain/18/429237/176903.terrain differ diff --git a/public/terrain/18/429237/176904.terrain b/public/terrain/18/429237/176904.terrain new file mode 100644 index 000000000..f7f9883b3 Binary files /dev/null and b/public/terrain/18/429237/176904.terrain differ diff --git a/public/terrain/18/429237/176905.terrain b/public/terrain/18/429237/176905.terrain new file mode 100644 index 000000000..88a12965f Binary files /dev/null and b/public/terrain/18/429237/176905.terrain differ diff --git a/public/terrain/18/429237/176906.terrain b/public/terrain/18/429237/176906.terrain new file mode 100644 index 000000000..abc06ffea Binary files /dev/null and b/public/terrain/18/429237/176906.terrain differ diff --git a/public/terrain/18/429237/176907.terrain b/public/terrain/18/429237/176907.terrain new file mode 100644 index 000000000..6badb34b3 Binary files /dev/null and b/public/terrain/18/429237/176907.terrain differ diff --git a/public/terrain/18/429237/176908.terrain b/public/terrain/18/429237/176908.terrain new file mode 100644 index 000000000..ab0524d28 Binary files /dev/null and b/public/terrain/18/429237/176908.terrain differ diff --git a/public/terrain/18/429237/176909.terrain b/public/terrain/18/429237/176909.terrain new file mode 100644 index 000000000..98155ab5d Binary files /dev/null and b/public/terrain/18/429237/176909.terrain differ diff --git a/public/terrain/18/429237/176910.terrain b/public/terrain/18/429237/176910.terrain new file mode 100644 index 000000000..48dddfa8f Binary files /dev/null and b/public/terrain/18/429237/176910.terrain differ diff --git a/public/terrain/18/429237/176911.terrain b/public/terrain/18/429237/176911.terrain new file mode 100644 index 000000000..39233b65c Binary files /dev/null and b/public/terrain/18/429237/176911.terrain differ diff --git a/public/terrain/18/429237/176912.terrain b/public/terrain/18/429237/176912.terrain new file mode 100644 index 000000000..a4469a7f2 Binary files /dev/null and b/public/terrain/18/429237/176912.terrain differ diff --git a/public/terrain/18/429237/176913.terrain b/public/terrain/18/429237/176913.terrain new file mode 100644 index 000000000..d0eb92ec3 Binary files /dev/null and b/public/terrain/18/429237/176913.terrain differ diff --git a/public/terrain/18/429237/176914.terrain b/public/terrain/18/429237/176914.terrain new file mode 100644 index 000000000..cbed4147e Binary files /dev/null and b/public/terrain/18/429237/176914.terrain differ diff --git a/public/terrain/18/429237/176915.terrain b/public/terrain/18/429237/176915.terrain new file mode 100644 index 000000000..9eb36ea62 Binary files /dev/null and b/public/terrain/18/429237/176915.terrain differ diff --git a/public/terrain/18/429237/176916.terrain b/public/terrain/18/429237/176916.terrain new file mode 100644 index 000000000..179c666b0 Binary files /dev/null and b/public/terrain/18/429237/176916.terrain differ diff --git a/public/terrain/18/429237/176917.terrain b/public/terrain/18/429237/176917.terrain new file mode 100644 index 000000000..e245609d4 Binary files /dev/null and b/public/terrain/18/429237/176917.terrain differ diff --git a/public/terrain/18/429237/176918.terrain b/public/terrain/18/429237/176918.terrain new file mode 100644 index 000000000..ede47c9de Binary files /dev/null and b/public/terrain/18/429237/176918.terrain differ diff --git a/public/terrain/18/429237/176919.terrain b/public/terrain/18/429237/176919.terrain new file mode 100644 index 000000000..a647b6757 Binary files /dev/null and b/public/terrain/18/429237/176919.terrain differ diff --git a/public/terrain/18/429237/176920.terrain b/public/terrain/18/429237/176920.terrain new file mode 100644 index 000000000..10712c658 Binary files /dev/null and b/public/terrain/18/429237/176920.terrain differ diff --git a/public/terrain/18/429237/176921.terrain b/public/terrain/18/429237/176921.terrain new file mode 100644 index 000000000..d9d065dac Binary files /dev/null and b/public/terrain/18/429237/176921.terrain differ diff --git a/public/terrain/18/429237/176922.terrain b/public/terrain/18/429237/176922.terrain new file mode 100644 index 000000000..894ca2080 Binary files /dev/null and b/public/terrain/18/429237/176922.terrain differ diff --git a/public/terrain/18/429237/176923.terrain b/public/terrain/18/429237/176923.terrain new file mode 100644 index 000000000..0e314aae6 Binary files /dev/null and b/public/terrain/18/429237/176923.terrain differ diff --git a/public/terrain/18/429237/176924.terrain b/public/terrain/18/429237/176924.terrain new file mode 100644 index 000000000..05ba4ac9b Binary files /dev/null and b/public/terrain/18/429237/176924.terrain differ diff --git a/public/terrain/18/429237/176925.terrain b/public/terrain/18/429237/176925.terrain new file mode 100644 index 000000000..8156015fb Binary files /dev/null and b/public/terrain/18/429237/176925.terrain differ diff --git a/public/terrain/18/429237/176926.terrain b/public/terrain/18/429237/176926.terrain new file mode 100644 index 000000000..e53a853e3 Binary files /dev/null and b/public/terrain/18/429237/176926.terrain differ diff --git a/public/terrain/18/429237/176927.terrain b/public/terrain/18/429237/176927.terrain new file mode 100644 index 000000000..74ed069d8 Binary files /dev/null and b/public/terrain/18/429237/176927.terrain differ diff --git a/public/terrain/18/429237/176928.terrain b/public/terrain/18/429237/176928.terrain new file mode 100644 index 000000000..202526bbe Binary files /dev/null and b/public/terrain/18/429237/176928.terrain differ diff --git a/public/terrain/18/429237/176929.terrain b/public/terrain/18/429237/176929.terrain new file mode 100644 index 000000000..596faf302 Binary files /dev/null and b/public/terrain/18/429237/176929.terrain differ diff --git a/public/terrain/18/429237/176930.terrain b/public/terrain/18/429237/176930.terrain new file mode 100644 index 000000000..0aedd1890 Binary files /dev/null and b/public/terrain/18/429237/176930.terrain differ diff --git a/public/terrain/18/429237/176931.terrain b/public/terrain/18/429237/176931.terrain new file mode 100644 index 000000000..521f1642c Binary files /dev/null and b/public/terrain/18/429237/176931.terrain differ diff --git a/public/terrain/18/429237/176932.terrain b/public/terrain/18/429237/176932.terrain new file mode 100644 index 000000000..26e846241 Binary files /dev/null and b/public/terrain/18/429237/176932.terrain differ diff --git a/public/terrain/18/429237/176933.terrain b/public/terrain/18/429237/176933.terrain new file mode 100644 index 000000000..d0cf5edb3 Binary files /dev/null and b/public/terrain/18/429237/176933.terrain differ diff --git a/public/terrain/18/429237/176934.terrain b/public/terrain/18/429237/176934.terrain new file mode 100644 index 000000000..dc7228c3a Binary files /dev/null and b/public/terrain/18/429237/176934.terrain differ diff --git a/public/terrain/18/429237/176935.terrain b/public/terrain/18/429237/176935.terrain new file mode 100644 index 000000000..616c9fc34 Binary files /dev/null and b/public/terrain/18/429237/176935.terrain differ diff --git a/public/terrain/18/429237/176936.terrain b/public/terrain/18/429237/176936.terrain new file mode 100644 index 000000000..ad1f64b34 Binary files /dev/null and b/public/terrain/18/429237/176936.terrain differ diff --git a/public/terrain/18/429237/176937.terrain b/public/terrain/18/429237/176937.terrain new file mode 100644 index 000000000..0f8c45f9a Binary files /dev/null and b/public/terrain/18/429237/176937.terrain differ diff --git a/public/terrain/18/429237/176938.terrain b/public/terrain/18/429237/176938.terrain new file mode 100644 index 000000000..03712c56c Binary files /dev/null and b/public/terrain/18/429237/176938.terrain differ diff --git a/public/terrain/18/429237/176939.terrain b/public/terrain/18/429237/176939.terrain new file mode 100644 index 000000000..419624a76 Binary files /dev/null and b/public/terrain/18/429237/176939.terrain differ diff --git a/public/terrain/18/429237/176940.terrain b/public/terrain/18/429237/176940.terrain new file mode 100644 index 000000000..118052206 Binary files /dev/null and b/public/terrain/18/429237/176940.terrain differ diff --git a/public/terrain/18/429237/176941.terrain b/public/terrain/18/429237/176941.terrain new file mode 100644 index 000000000..bffd3c044 Binary files /dev/null and b/public/terrain/18/429237/176941.terrain differ diff --git a/public/terrain/18/429237/176942.terrain b/public/terrain/18/429237/176942.terrain new file mode 100644 index 000000000..50b6b66ab Binary files /dev/null and b/public/terrain/18/429237/176942.terrain differ diff --git a/public/terrain/18/429237/176943.terrain b/public/terrain/18/429237/176943.terrain new file mode 100644 index 000000000..425d9f47e Binary files /dev/null and b/public/terrain/18/429237/176943.terrain differ diff --git a/public/terrain/18/429237/176944.terrain b/public/terrain/18/429237/176944.terrain new file mode 100644 index 000000000..f3fc29780 Binary files /dev/null and b/public/terrain/18/429237/176944.terrain differ diff --git a/public/terrain/18/429237/176945.terrain b/public/terrain/18/429237/176945.terrain new file mode 100644 index 000000000..b42103372 Binary files /dev/null and b/public/terrain/18/429237/176945.terrain differ diff --git a/public/terrain/18/429237/176946.terrain b/public/terrain/18/429237/176946.terrain new file mode 100644 index 000000000..6483f4e7f Binary files /dev/null and b/public/terrain/18/429237/176946.terrain differ diff --git a/public/terrain/18/429237/176947.terrain b/public/terrain/18/429237/176947.terrain new file mode 100644 index 000000000..ca85d304c Binary files /dev/null and b/public/terrain/18/429237/176947.terrain differ diff --git a/public/terrain/18/429237/176948.terrain b/public/terrain/18/429237/176948.terrain new file mode 100644 index 000000000..cfe37657a Binary files /dev/null and b/public/terrain/18/429237/176948.terrain differ diff --git a/public/terrain/18/429237/176949.terrain b/public/terrain/18/429237/176949.terrain new file mode 100644 index 000000000..77b7365e4 Binary files /dev/null and b/public/terrain/18/429237/176949.terrain differ diff --git a/public/terrain/18/429237/176950.terrain b/public/terrain/18/429237/176950.terrain new file mode 100644 index 000000000..ca10f50ce Binary files /dev/null and b/public/terrain/18/429237/176950.terrain differ diff --git a/public/terrain/18/429237/176951.terrain b/public/terrain/18/429237/176951.terrain new file mode 100644 index 000000000..2003cbdf4 Binary files /dev/null and b/public/terrain/18/429237/176951.terrain differ diff --git a/public/terrain/18/429237/176952.terrain b/public/terrain/18/429237/176952.terrain new file mode 100644 index 000000000..cd4c049e1 Binary files /dev/null and b/public/terrain/18/429237/176952.terrain differ diff --git a/public/terrain/18/429237/176953.terrain b/public/terrain/18/429237/176953.terrain new file mode 100644 index 000000000..0707f283f Binary files /dev/null and b/public/terrain/18/429237/176953.terrain differ diff --git a/public/terrain/18/429237/176954.terrain b/public/terrain/18/429237/176954.terrain new file mode 100644 index 000000000..51961d8d7 Binary files /dev/null and b/public/terrain/18/429237/176954.terrain differ diff --git a/public/terrain/18/429237/176955.terrain b/public/terrain/18/429237/176955.terrain new file mode 100644 index 000000000..f27b41cf3 Binary files /dev/null and b/public/terrain/18/429237/176955.terrain differ diff --git a/public/terrain/18/429237/176956.terrain b/public/terrain/18/429237/176956.terrain new file mode 100644 index 000000000..78a55dad1 Binary files /dev/null and b/public/terrain/18/429237/176956.terrain differ diff --git a/public/terrain/18/429237/176957.terrain b/public/terrain/18/429237/176957.terrain new file mode 100644 index 000000000..9c654e54e Binary files /dev/null and b/public/terrain/18/429237/176957.terrain differ diff --git a/public/terrain/18/429237/176958.terrain b/public/terrain/18/429237/176958.terrain new file mode 100644 index 000000000..02ce52b2a Binary files /dev/null and b/public/terrain/18/429237/176958.terrain differ diff --git a/public/terrain/18/429237/176959.terrain b/public/terrain/18/429237/176959.terrain new file mode 100644 index 000000000..cbefe388c Binary files /dev/null and b/public/terrain/18/429237/176959.terrain differ diff --git a/public/terrain/18/429237/176960.terrain b/public/terrain/18/429237/176960.terrain new file mode 100644 index 000000000..666f33b36 Binary files /dev/null and b/public/terrain/18/429237/176960.terrain differ diff --git a/public/terrain/18/429237/176961.terrain b/public/terrain/18/429237/176961.terrain new file mode 100644 index 000000000..9cf580d7c Binary files /dev/null and b/public/terrain/18/429237/176961.terrain differ diff --git a/public/terrain/18/429237/176962.terrain b/public/terrain/18/429237/176962.terrain new file mode 100644 index 000000000..df8af5e9c Binary files /dev/null and b/public/terrain/18/429237/176962.terrain differ diff --git a/public/terrain/18/429237/176963.terrain b/public/terrain/18/429237/176963.terrain new file mode 100644 index 000000000..d2fdbef5a Binary files /dev/null and b/public/terrain/18/429237/176963.terrain differ diff --git a/public/terrain/18/429237/176964.terrain b/public/terrain/18/429237/176964.terrain new file mode 100644 index 000000000..1826512cb Binary files /dev/null and b/public/terrain/18/429237/176964.terrain differ diff --git a/public/terrain/18/429237/176965.terrain b/public/terrain/18/429237/176965.terrain new file mode 100644 index 000000000..e060022dc Binary files /dev/null and b/public/terrain/18/429237/176965.terrain differ diff --git a/public/terrain/18/429237/176966.terrain b/public/terrain/18/429237/176966.terrain new file mode 100644 index 000000000..d99354f61 Binary files /dev/null and b/public/terrain/18/429237/176966.terrain differ diff --git a/public/terrain/18/429237/176967.terrain b/public/terrain/18/429237/176967.terrain new file mode 100644 index 000000000..f2c8bda5e Binary files /dev/null and b/public/terrain/18/429237/176967.terrain differ diff --git a/public/terrain/18/429237/176968.terrain b/public/terrain/18/429237/176968.terrain new file mode 100644 index 000000000..03d16097d Binary files /dev/null and b/public/terrain/18/429237/176968.terrain differ diff --git a/public/terrain/18/429237/176969.terrain b/public/terrain/18/429237/176969.terrain new file mode 100644 index 000000000..ed520f3d7 Binary files /dev/null and b/public/terrain/18/429237/176969.terrain differ diff --git a/public/terrain/18/429237/176970.terrain b/public/terrain/18/429237/176970.terrain new file mode 100644 index 000000000..27c3bb006 Binary files /dev/null and b/public/terrain/18/429237/176970.terrain differ diff --git a/public/terrain/18/429237/176971.terrain b/public/terrain/18/429237/176971.terrain new file mode 100644 index 000000000..067da3d5b Binary files /dev/null and b/public/terrain/18/429237/176971.terrain differ diff --git a/public/terrain/18/429237/176972.terrain b/public/terrain/18/429237/176972.terrain new file mode 100644 index 000000000..890aae640 Binary files /dev/null and b/public/terrain/18/429237/176972.terrain differ diff --git a/public/terrain/18/429237/176973.terrain b/public/terrain/18/429237/176973.terrain new file mode 100644 index 000000000..f48e285f9 Binary files /dev/null and b/public/terrain/18/429237/176973.terrain differ diff --git a/public/terrain/18/429237/176974.terrain b/public/terrain/18/429237/176974.terrain new file mode 100644 index 000000000..54d7cd770 Binary files /dev/null and b/public/terrain/18/429237/176974.terrain differ diff --git a/public/terrain/18/429237/176975.terrain b/public/terrain/18/429237/176975.terrain new file mode 100644 index 000000000..05fee287e Binary files /dev/null and b/public/terrain/18/429237/176975.terrain differ diff --git a/public/terrain/18/429237/176976.terrain b/public/terrain/18/429237/176976.terrain new file mode 100644 index 000000000..1131c1800 Binary files /dev/null and b/public/terrain/18/429237/176976.terrain differ diff --git a/public/terrain/18/429237/176977.terrain b/public/terrain/18/429237/176977.terrain new file mode 100644 index 000000000..b0b33d278 Binary files /dev/null and b/public/terrain/18/429237/176977.terrain differ diff --git a/public/terrain/18/429237/176978.terrain b/public/terrain/18/429237/176978.terrain new file mode 100644 index 000000000..420ae91b8 Binary files /dev/null and b/public/terrain/18/429237/176978.terrain differ diff --git a/public/terrain/18/429237/176979.terrain b/public/terrain/18/429237/176979.terrain new file mode 100644 index 000000000..b8b727958 Binary files /dev/null and b/public/terrain/18/429237/176979.terrain differ diff --git a/public/terrain/18/429237/176980.terrain b/public/terrain/18/429237/176980.terrain new file mode 100644 index 000000000..3b16847e0 Binary files /dev/null and b/public/terrain/18/429237/176980.terrain differ diff --git a/public/terrain/18/429237/176981.terrain b/public/terrain/18/429237/176981.terrain new file mode 100644 index 000000000..2a526d741 Binary files /dev/null and b/public/terrain/18/429237/176981.terrain differ diff --git a/public/terrain/18/429237/176982.terrain b/public/terrain/18/429237/176982.terrain new file mode 100644 index 000000000..b1012fd62 Binary files /dev/null and b/public/terrain/18/429237/176982.terrain differ diff --git a/public/terrain/18/429237/176983.terrain b/public/terrain/18/429237/176983.terrain new file mode 100644 index 000000000..74fe30c6e Binary files /dev/null and b/public/terrain/18/429237/176983.terrain differ diff --git a/public/terrain/18/429237/176984.terrain b/public/terrain/18/429237/176984.terrain new file mode 100644 index 000000000..31b73dc8f Binary files /dev/null and b/public/terrain/18/429237/176984.terrain differ diff --git a/public/terrain/18/429237/176985.terrain b/public/terrain/18/429237/176985.terrain new file mode 100644 index 000000000..c19dee96e Binary files /dev/null and b/public/terrain/18/429237/176985.terrain differ diff --git a/public/terrain/18/429237/176986.terrain b/public/terrain/18/429237/176986.terrain new file mode 100644 index 000000000..9cb0fbdce Binary files /dev/null and b/public/terrain/18/429237/176986.terrain differ diff --git a/public/terrain/18/429237/176987.terrain b/public/terrain/18/429237/176987.terrain new file mode 100644 index 000000000..ba0d69ef2 Binary files /dev/null and b/public/terrain/18/429237/176987.terrain differ diff --git a/public/terrain/18/429237/176988.terrain b/public/terrain/18/429237/176988.terrain new file mode 100644 index 000000000..d6f3d3b16 Binary files /dev/null and b/public/terrain/18/429237/176988.terrain differ diff --git a/public/terrain/18/429237/176989.terrain b/public/terrain/18/429237/176989.terrain new file mode 100644 index 000000000..0af721288 Binary files /dev/null and b/public/terrain/18/429237/176989.terrain differ diff --git a/public/terrain/18/429237/176990.terrain b/public/terrain/18/429237/176990.terrain new file mode 100644 index 000000000..ae10bfd0d Binary files /dev/null and b/public/terrain/18/429237/176990.terrain differ diff --git a/public/terrain/18/429237/176991.terrain b/public/terrain/18/429237/176991.terrain new file mode 100644 index 000000000..c29367113 Binary files /dev/null and b/public/terrain/18/429237/176991.terrain differ diff --git a/public/terrain/18/429237/176992.terrain b/public/terrain/18/429237/176992.terrain new file mode 100644 index 000000000..fa8094346 Binary files /dev/null and b/public/terrain/18/429237/176992.terrain differ diff --git a/public/terrain/18/429237/176993.terrain b/public/terrain/18/429237/176993.terrain new file mode 100644 index 000000000..9c9a6f27c Binary files /dev/null and b/public/terrain/18/429237/176993.terrain differ diff --git a/public/terrain/18/429237/176994.terrain b/public/terrain/18/429237/176994.terrain new file mode 100644 index 000000000..138b6098f Binary files /dev/null and b/public/terrain/18/429237/176994.terrain differ diff --git a/public/terrain/18/429237/176995.terrain b/public/terrain/18/429237/176995.terrain new file mode 100644 index 000000000..ff1f068d1 Binary files /dev/null and b/public/terrain/18/429237/176995.terrain differ diff --git a/public/terrain/18/429237/176996.terrain b/public/terrain/18/429237/176996.terrain new file mode 100644 index 000000000..885c6ac73 Binary files /dev/null and b/public/terrain/18/429237/176996.terrain differ diff --git a/public/terrain/18/429237/176997.terrain b/public/terrain/18/429237/176997.terrain new file mode 100644 index 000000000..f351c9350 Binary files /dev/null and b/public/terrain/18/429237/176997.terrain differ diff --git a/public/terrain/18/429237/176998.terrain b/public/terrain/18/429237/176998.terrain new file mode 100644 index 000000000..50f4295b2 Binary files /dev/null and b/public/terrain/18/429237/176998.terrain differ diff --git a/public/terrain/18/429237/176999.terrain b/public/terrain/18/429237/176999.terrain new file mode 100644 index 000000000..bf41f80f4 Binary files /dev/null and b/public/terrain/18/429237/176999.terrain differ diff --git a/public/terrain/18/429237/177000.terrain b/public/terrain/18/429237/177000.terrain new file mode 100644 index 000000000..f84fb47bc Binary files /dev/null and b/public/terrain/18/429237/177000.terrain differ diff --git a/public/terrain/18/429237/177001.terrain b/public/terrain/18/429237/177001.terrain new file mode 100644 index 000000000..169a0fd62 Binary files /dev/null and b/public/terrain/18/429237/177001.terrain differ diff --git a/public/terrain/18/429237/177002.terrain b/public/terrain/18/429237/177002.terrain new file mode 100644 index 000000000..468c6db5e Binary files /dev/null and b/public/terrain/18/429237/177002.terrain differ diff --git a/public/terrain/18/429237/177003.terrain b/public/terrain/18/429237/177003.terrain new file mode 100644 index 000000000..0820fe771 Binary files /dev/null and b/public/terrain/18/429237/177003.terrain differ diff --git a/public/terrain/18/429237/177004.terrain b/public/terrain/18/429237/177004.terrain new file mode 100644 index 000000000..7d8eba85b Binary files /dev/null and b/public/terrain/18/429237/177004.terrain differ diff --git a/public/terrain/18/429237/177005.terrain b/public/terrain/18/429237/177005.terrain new file mode 100644 index 000000000..891a87130 Binary files /dev/null and b/public/terrain/18/429237/177005.terrain differ diff --git a/public/terrain/18/429237/177006.terrain b/public/terrain/18/429237/177006.terrain new file mode 100644 index 000000000..7c606da16 Binary files /dev/null and b/public/terrain/18/429237/177006.terrain differ diff --git a/public/terrain/18/429237/177007.terrain b/public/terrain/18/429237/177007.terrain new file mode 100644 index 000000000..7c7f1df60 Binary files /dev/null and b/public/terrain/18/429237/177007.terrain differ diff --git a/public/terrain/18/429237/177008.terrain b/public/terrain/18/429237/177008.terrain new file mode 100644 index 000000000..82be7f6a7 Binary files /dev/null and b/public/terrain/18/429237/177008.terrain differ diff --git a/public/terrain/18/429237/177009.terrain b/public/terrain/18/429237/177009.terrain new file mode 100644 index 000000000..078abf31a Binary files /dev/null and b/public/terrain/18/429237/177009.terrain differ diff --git a/public/terrain/18/429237/177010.terrain b/public/terrain/18/429237/177010.terrain new file mode 100644 index 000000000..de87efa41 Binary files /dev/null and b/public/terrain/18/429237/177010.terrain differ diff --git a/public/terrain/18/429237/177011.terrain b/public/terrain/18/429237/177011.terrain new file mode 100644 index 000000000..4512423f8 Binary files /dev/null and b/public/terrain/18/429237/177011.terrain differ diff --git a/public/terrain/18/429237/177012.terrain b/public/terrain/18/429237/177012.terrain new file mode 100644 index 000000000..7ca23f5f6 Binary files /dev/null and b/public/terrain/18/429237/177012.terrain differ diff --git a/public/terrain/18/429237/177013.terrain b/public/terrain/18/429237/177013.terrain new file mode 100644 index 000000000..418556bda Binary files /dev/null and b/public/terrain/18/429237/177013.terrain differ diff --git a/public/terrain/18/429237/177014.terrain b/public/terrain/18/429237/177014.terrain new file mode 100644 index 000000000..531472bb6 Binary files /dev/null and b/public/terrain/18/429237/177014.terrain differ diff --git a/public/terrain/18/429237/177015.terrain b/public/terrain/18/429237/177015.terrain new file mode 100644 index 000000000..e27ccabb2 Binary files /dev/null and b/public/terrain/18/429237/177015.terrain differ diff --git a/public/terrain/18/429237/177016.terrain b/public/terrain/18/429237/177016.terrain new file mode 100644 index 000000000..a8165eda9 Binary files /dev/null and b/public/terrain/18/429237/177016.terrain differ diff --git a/public/terrain/18/429237/177017.terrain b/public/terrain/18/429237/177017.terrain new file mode 100644 index 000000000..e51cb6dda Binary files /dev/null and b/public/terrain/18/429237/177017.terrain differ diff --git a/public/terrain/18/429237/177018.terrain b/public/terrain/18/429237/177018.terrain new file mode 100644 index 000000000..cded1ced3 Binary files /dev/null and b/public/terrain/18/429237/177018.terrain differ diff --git a/public/terrain/18/429237/177019.terrain b/public/terrain/18/429237/177019.terrain new file mode 100644 index 000000000..6ba95e449 Binary files /dev/null and b/public/terrain/18/429237/177019.terrain differ diff --git a/public/terrain/18/429237/177020.terrain b/public/terrain/18/429237/177020.terrain new file mode 100644 index 000000000..faf1f0045 Binary files /dev/null and b/public/terrain/18/429237/177020.terrain differ diff --git a/public/terrain/18/429237/177021.terrain b/public/terrain/18/429237/177021.terrain new file mode 100644 index 000000000..4ef7c43be Binary files /dev/null and b/public/terrain/18/429237/177021.terrain differ diff --git a/public/terrain/18/429237/177022.terrain b/public/terrain/18/429237/177022.terrain new file mode 100644 index 000000000..4d6323c1c Binary files /dev/null and b/public/terrain/18/429237/177022.terrain differ diff --git a/public/terrain/18/429237/177023.terrain b/public/terrain/18/429237/177023.terrain new file mode 100644 index 000000000..c26c24fbf Binary files /dev/null and b/public/terrain/18/429237/177023.terrain differ diff --git a/public/terrain/18/429237/177024.terrain b/public/terrain/18/429237/177024.terrain new file mode 100644 index 000000000..9c9db91f1 Binary files /dev/null and b/public/terrain/18/429237/177024.terrain differ diff --git a/public/terrain/18/429237/177025.terrain b/public/terrain/18/429237/177025.terrain new file mode 100644 index 000000000..4c61cf87b Binary files /dev/null and b/public/terrain/18/429237/177025.terrain differ diff --git a/public/terrain/18/429237/177026.terrain b/public/terrain/18/429237/177026.terrain new file mode 100644 index 000000000..908f00e0e Binary files /dev/null and b/public/terrain/18/429237/177026.terrain differ diff --git a/public/terrain/18/429237/177027.terrain b/public/terrain/18/429237/177027.terrain new file mode 100644 index 000000000..7d9c06092 Binary files /dev/null and b/public/terrain/18/429237/177027.terrain differ diff --git a/public/terrain/18/429237/177028.terrain b/public/terrain/18/429237/177028.terrain new file mode 100644 index 000000000..e61f6d46c Binary files /dev/null and b/public/terrain/18/429237/177028.terrain differ diff --git a/public/terrain/18/429237/177029.terrain b/public/terrain/18/429237/177029.terrain new file mode 100644 index 000000000..697a3d397 Binary files /dev/null and b/public/terrain/18/429237/177029.terrain differ diff --git a/public/terrain/18/429238/176871.terrain b/public/terrain/18/429238/176871.terrain new file mode 100644 index 000000000..fbf423bca Binary files /dev/null and b/public/terrain/18/429238/176871.terrain differ diff --git a/public/terrain/18/429238/176872.terrain b/public/terrain/18/429238/176872.terrain new file mode 100644 index 000000000..1502fefff Binary files /dev/null and b/public/terrain/18/429238/176872.terrain differ diff --git a/public/terrain/18/429238/176873.terrain b/public/terrain/18/429238/176873.terrain new file mode 100644 index 000000000..2d90e2521 Binary files /dev/null and b/public/terrain/18/429238/176873.terrain differ diff --git a/public/terrain/18/429238/176874.terrain b/public/terrain/18/429238/176874.terrain new file mode 100644 index 000000000..60dff9b9a Binary files /dev/null and b/public/terrain/18/429238/176874.terrain differ diff --git a/public/terrain/18/429238/176875.terrain b/public/terrain/18/429238/176875.terrain new file mode 100644 index 000000000..adab1ca50 Binary files /dev/null and b/public/terrain/18/429238/176875.terrain differ diff --git a/public/terrain/18/429238/176876.terrain b/public/terrain/18/429238/176876.terrain new file mode 100644 index 000000000..1a28d70b6 Binary files /dev/null and b/public/terrain/18/429238/176876.terrain differ diff --git a/public/terrain/18/429238/176877.terrain b/public/terrain/18/429238/176877.terrain new file mode 100644 index 000000000..06b33bbee Binary files /dev/null and b/public/terrain/18/429238/176877.terrain differ diff --git a/public/terrain/18/429238/176878.terrain b/public/terrain/18/429238/176878.terrain new file mode 100644 index 000000000..af965afcc Binary files /dev/null and b/public/terrain/18/429238/176878.terrain differ diff --git a/public/terrain/18/429238/176879.terrain b/public/terrain/18/429238/176879.terrain new file mode 100644 index 000000000..8f947d769 Binary files /dev/null and b/public/terrain/18/429238/176879.terrain differ diff --git a/public/terrain/18/429238/176880.terrain b/public/terrain/18/429238/176880.terrain new file mode 100644 index 000000000..6bdff93a3 Binary files /dev/null and b/public/terrain/18/429238/176880.terrain differ diff --git a/public/terrain/18/429238/176881.terrain b/public/terrain/18/429238/176881.terrain new file mode 100644 index 000000000..7e8f790bf Binary files /dev/null and b/public/terrain/18/429238/176881.terrain differ diff --git a/public/terrain/18/429238/176882.terrain b/public/terrain/18/429238/176882.terrain new file mode 100644 index 000000000..53f842323 Binary files /dev/null and b/public/terrain/18/429238/176882.terrain differ diff --git a/public/terrain/18/429238/176883.terrain b/public/terrain/18/429238/176883.terrain new file mode 100644 index 000000000..dbe72f43c Binary files /dev/null and b/public/terrain/18/429238/176883.terrain differ diff --git a/public/terrain/18/429238/176884.terrain b/public/terrain/18/429238/176884.terrain new file mode 100644 index 000000000..ece9d807d Binary files /dev/null and b/public/terrain/18/429238/176884.terrain differ diff --git a/public/terrain/18/429238/176885.terrain b/public/terrain/18/429238/176885.terrain new file mode 100644 index 000000000..4fe3be42b Binary files /dev/null and b/public/terrain/18/429238/176885.terrain differ diff --git a/public/terrain/18/429238/176886.terrain b/public/terrain/18/429238/176886.terrain new file mode 100644 index 000000000..2a29e544e Binary files /dev/null and b/public/terrain/18/429238/176886.terrain differ diff --git a/public/terrain/18/429238/176887.terrain b/public/terrain/18/429238/176887.terrain new file mode 100644 index 000000000..938a8b79e Binary files /dev/null and b/public/terrain/18/429238/176887.terrain differ diff --git a/public/terrain/18/429238/176888.terrain b/public/terrain/18/429238/176888.terrain new file mode 100644 index 000000000..b13adc79b Binary files /dev/null and b/public/terrain/18/429238/176888.terrain differ diff --git a/public/terrain/18/429238/176889.terrain b/public/terrain/18/429238/176889.terrain new file mode 100644 index 000000000..2c581b9b2 Binary files /dev/null and b/public/terrain/18/429238/176889.terrain differ diff --git a/public/terrain/18/429238/176890.terrain b/public/terrain/18/429238/176890.terrain new file mode 100644 index 000000000..a81eb1014 Binary files /dev/null and b/public/terrain/18/429238/176890.terrain differ diff --git a/public/terrain/18/429238/176891.terrain b/public/terrain/18/429238/176891.terrain new file mode 100644 index 000000000..316c514ce Binary files /dev/null and b/public/terrain/18/429238/176891.terrain differ diff --git a/public/terrain/18/429238/176892.terrain b/public/terrain/18/429238/176892.terrain new file mode 100644 index 000000000..174fe35e9 Binary files /dev/null and b/public/terrain/18/429238/176892.terrain differ diff --git a/public/terrain/18/429238/176893.terrain b/public/terrain/18/429238/176893.terrain new file mode 100644 index 000000000..90cd85d01 Binary files /dev/null and b/public/terrain/18/429238/176893.terrain differ diff --git a/public/terrain/18/429238/176894.terrain b/public/terrain/18/429238/176894.terrain new file mode 100644 index 000000000..0ef594a79 Binary files /dev/null and b/public/terrain/18/429238/176894.terrain differ diff --git a/public/terrain/18/429238/176895.terrain b/public/terrain/18/429238/176895.terrain new file mode 100644 index 000000000..b84675941 Binary files /dev/null and b/public/terrain/18/429238/176895.terrain differ diff --git a/public/terrain/18/429238/176896.terrain b/public/terrain/18/429238/176896.terrain new file mode 100644 index 000000000..4dc5798d2 Binary files /dev/null and b/public/terrain/18/429238/176896.terrain differ diff --git a/public/terrain/18/429238/176897.terrain b/public/terrain/18/429238/176897.terrain new file mode 100644 index 000000000..e3ae72697 Binary files /dev/null and b/public/terrain/18/429238/176897.terrain differ diff --git a/public/terrain/18/429238/176898.terrain b/public/terrain/18/429238/176898.terrain new file mode 100644 index 000000000..2d3e1f652 Binary files /dev/null and b/public/terrain/18/429238/176898.terrain differ diff --git a/public/terrain/18/429238/176899.terrain b/public/terrain/18/429238/176899.terrain new file mode 100644 index 000000000..9be4ba8ad Binary files /dev/null and b/public/terrain/18/429238/176899.terrain differ diff --git a/public/terrain/18/429238/176900.terrain b/public/terrain/18/429238/176900.terrain new file mode 100644 index 000000000..c6b841ab0 Binary files /dev/null and b/public/terrain/18/429238/176900.terrain differ diff --git a/public/terrain/18/429238/176901.terrain b/public/terrain/18/429238/176901.terrain new file mode 100644 index 000000000..afe5df970 Binary files /dev/null and b/public/terrain/18/429238/176901.terrain differ diff --git a/public/terrain/18/429238/176902.terrain b/public/terrain/18/429238/176902.terrain new file mode 100644 index 000000000..09e7845cc Binary files /dev/null and b/public/terrain/18/429238/176902.terrain differ diff --git a/public/terrain/18/429238/176903.terrain b/public/terrain/18/429238/176903.terrain new file mode 100644 index 000000000..1524153dc Binary files /dev/null and b/public/terrain/18/429238/176903.terrain differ diff --git a/public/terrain/18/429238/176904.terrain b/public/terrain/18/429238/176904.terrain new file mode 100644 index 000000000..389c70dae Binary files /dev/null and b/public/terrain/18/429238/176904.terrain differ diff --git a/public/terrain/18/429238/176905.terrain b/public/terrain/18/429238/176905.terrain new file mode 100644 index 000000000..f21171256 Binary files /dev/null and b/public/terrain/18/429238/176905.terrain differ diff --git a/public/terrain/18/429238/176906.terrain b/public/terrain/18/429238/176906.terrain new file mode 100644 index 000000000..23bb04e9e Binary files /dev/null and b/public/terrain/18/429238/176906.terrain differ diff --git a/public/terrain/18/429238/176907.terrain b/public/terrain/18/429238/176907.terrain new file mode 100644 index 000000000..ca3efeef9 Binary files /dev/null and b/public/terrain/18/429238/176907.terrain differ diff --git a/public/terrain/18/429238/176908.terrain b/public/terrain/18/429238/176908.terrain new file mode 100644 index 000000000..5e412b807 Binary files /dev/null and b/public/terrain/18/429238/176908.terrain differ diff --git a/public/terrain/18/429238/176909.terrain b/public/terrain/18/429238/176909.terrain new file mode 100644 index 000000000..673acf540 Binary files /dev/null and b/public/terrain/18/429238/176909.terrain differ diff --git a/public/terrain/18/429238/176910.terrain b/public/terrain/18/429238/176910.terrain new file mode 100644 index 000000000..2164b5696 Binary files /dev/null and b/public/terrain/18/429238/176910.terrain differ diff --git a/public/terrain/18/429238/176911.terrain b/public/terrain/18/429238/176911.terrain new file mode 100644 index 000000000..68fa7e167 Binary files /dev/null and b/public/terrain/18/429238/176911.terrain differ diff --git a/public/terrain/18/429238/176912.terrain b/public/terrain/18/429238/176912.terrain new file mode 100644 index 000000000..754652097 Binary files /dev/null and b/public/terrain/18/429238/176912.terrain differ diff --git a/public/terrain/18/429238/176913.terrain b/public/terrain/18/429238/176913.terrain new file mode 100644 index 000000000..f4d4aa02e Binary files /dev/null and b/public/terrain/18/429238/176913.terrain differ diff --git a/public/terrain/18/429238/176914.terrain b/public/terrain/18/429238/176914.terrain new file mode 100644 index 000000000..a8ed5d011 Binary files /dev/null and b/public/terrain/18/429238/176914.terrain differ diff --git a/public/terrain/18/429238/176915.terrain b/public/terrain/18/429238/176915.terrain new file mode 100644 index 000000000..72bee3c65 Binary files /dev/null and b/public/terrain/18/429238/176915.terrain differ diff --git a/public/terrain/18/429238/176916.terrain b/public/terrain/18/429238/176916.terrain new file mode 100644 index 000000000..1ecb6d4a0 Binary files /dev/null and b/public/terrain/18/429238/176916.terrain differ diff --git a/public/terrain/18/429238/176917.terrain b/public/terrain/18/429238/176917.terrain new file mode 100644 index 000000000..878645eab Binary files /dev/null and b/public/terrain/18/429238/176917.terrain differ diff --git a/public/terrain/18/429238/176918.terrain b/public/terrain/18/429238/176918.terrain new file mode 100644 index 000000000..e9f579d06 Binary files /dev/null and b/public/terrain/18/429238/176918.terrain differ diff --git a/public/terrain/18/429238/176919.terrain b/public/terrain/18/429238/176919.terrain new file mode 100644 index 000000000..988a89887 Binary files /dev/null and b/public/terrain/18/429238/176919.terrain differ diff --git a/public/terrain/18/429238/176920.terrain b/public/terrain/18/429238/176920.terrain new file mode 100644 index 000000000..f9bb6899b Binary files /dev/null and b/public/terrain/18/429238/176920.terrain differ diff --git a/public/terrain/18/429238/176921.terrain b/public/terrain/18/429238/176921.terrain new file mode 100644 index 000000000..ae0a8a70f Binary files /dev/null and b/public/terrain/18/429238/176921.terrain differ diff --git a/public/terrain/18/429238/176922.terrain b/public/terrain/18/429238/176922.terrain new file mode 100644 index 000000000..2ed38a3ed Binary files /dev/null and b/public/terrain/18/429238/176922.terrain differ diff --git a/public/terrain/18/429238/176923.terrain b/public/terrain/18/429238/176923.terrain new file mode 100644 index 000000000..99e808862 Binary files /dev/null and b/public/terrain/18/429238/176923.terrain differ diff --git a/public/terrain/18/429238/176924.terrain b/public/terrain/18/429238/176924.terrain new file mode 100644 index 000000000..89f4e07ec Binary files /dev/null and b/public/terrain/18/429238/176924.terrain differ diff --git a/public/terrain/18/429238/176925.terrain b/public/terrain/18/429238/176925.terrain new file mode 100644 index 000000000..bf5b483a7 Binary files /dev/null and b/public/terrain/18/429238/176925.terrain differ diff --git a/public/terrain/18/429238/176926.terrain b/public/terrain/18/429238/176926.terrain new file mode 100644 index 000000000..7db419ac4 Binary files /dev/null and b/public/terrain/18/429238/176926.terrain differ diff --git a/public/terrain/18/429238/176927.terrain b/public/terrain/18/429238/176927.terrain new file mode 100644 index 000000000..bd63603ea Binary files /dev/null and b/public/terrain/18/429238/176927.terrain differ diff --git a/public/terrain/18/429238/176928.terrain b/public/terrain/18/429238/176928.terrain new file mode 100644 index 000000000..157f407e1 Binary files /dev/null and b/public/terrain/18/429238/176928.terrain differ diff --git a/public/terrain/18/429238/176929.terrain b/public/terrain/18/429238/176929.terrain new file mode 100644 index 000000000..608de2a72 Binary files /dev/null and b/public/terrain/18/429238/176929.terrain differ diff --git a/public/terrain/18/429238/176930.terrain b/public/terrain/18/429238/176930.terrain new file mode 100644 index 000000000..f3467ca6f Binary files /dev/null and b/public/terrain/18/429238/176930.terrain differ diff --git a/public/terrain/18/429238/176931.terrain b/public/terrain/18/429238/176931.terrain new file mode 100644 index 000000000..3325a6156 Binary files /dev/null and b/public/terrain/18/429238/176931.terrain differ diff --git a/public/terrain/18/429238/176932.terrain b/public/terrain/18/429238/176932.terrain new file mode 100644 index 000000000..2ca3f4f9f Binary files /dev/null and b/public/terrain/18/429238/176932.terrain differ diff --git a/public/terrain/18/429238/176933.terrain b/public/terrain/18/429238/176933.terrain new file mode 100644 index 000000000..787fc1add Binary files /dev/null and b/public/terrain/18/429238/176933.terrain differ diff --git a/public/terrain/18/429238/176934.terrain b/public/terrain/18/429238/176934.terrain new file mode 100644 index 000000000..0c5f2107b Binary files /dev/null and b/public/terrain/18/429238/176934.terrain differ diff --git a/public/terrain/18/429238/176935.terrain b/public/terrain/18/429238/176935.terrain new file mode 100644 index 000000000..6f14ca9d9 Binary files /dev/null and b/public/terrain/18/429238/176935.terrain differ diff --git a/public/terrain/18/429238/176936.terrain b/public/terrain/18/429238/176936.terrain new file mode 100644 index 000000000..376b5a030 Binary files /dev/null and b/public/terrain/18/429238/176936.terrain differ diff --git a/public/terrain/18/429238/176937.terrain b/public/terrain/18/429238/176937.terrain new file mode 100644 index 000000000..4af4721ca Binary files /dev/null and b/public/terrain/18/429238/176937.terrain differ diff --git a/public/terrain/18/429238/176938.terrain b/public/terrain/18/429238/176938.terrain new file mode 100644 index 000000000..0255c2b6b Binary files /dev/null and b/public/terrain/18/429238/176938.terrain differ diff --git a/public/terrain/18/429238/176939.terrain b/public/terrain/18/429238/176939.terrain new file mode 100644 index 000000000..db271df97 Binary files /dev/null and b/public/terrain/18/429238/176939.terrain differ diff --git a/public/terrain/18/429238/176940.terrain b/public/terrain/18/429238/176940.terrain new file mode 100644 index 000000000..d496aa59f Binary files /dev/null and b/public/terrain/18/429238/176940.terrain differ diff --git a/public/terrain/18/429238/176941.terrain b/public/terrain/18/429238/176941.terrain new file mode 100644 index 000000000..bd1f3f98b Binary files /dev/null and b/public/terrain/18/429238/176941.terrain differ diff --git a/public/terrain/18/429238/176942.terrain b/public/terrain/18/429238/176942.terrain new file mode 100644 index 000000000..003d7db64 Binary files /dev/null and b/public/terrain/18/429238/176942.terrain differ diff --git a/public/terrain/18/429238/176943.terrain b/public/terrain/18/429238/176943.terrain new file mode 100644 index 000000000..6c0b7516e Binary files /dev/null and b/public/terrain/18/429238/176943.terrain differ diff --git a/public/terrain/18/429238/176944.terrain b/public/terrain/18/429238/176944.terrain new file mode 100644 index 000000000..f6cbd016f Binary files /dev/null and b/public/terrain/18/429238/176944.terrain differ diff --git a/public/terrain/18/429238/176945.terrain b/public/terrain/18/429238/176945.terrain new file mode 100644 index 000000000..4b989a227 Binary files /dev/null and b/public/terrain/18/429238/176945.terrain differ diff --git a/public/terrain/18/429238/176946.terrain b/public/terrain/18/429238/176946.terrain new file mode 100644 index 000000000..b64330141 Binary files /dev/null and b/public/terrain/18/429238/176946.terrain differ diff --git a/public/terrain/18/429238/176947.terrain b/public/terrain/18/429238/176947.terrain new file mode 100644 index 000000000..9d828ce75 Binary files /dev/null and b/public/terrain/18/429238/176947.terrain differ diff --git a/public/terrain/18/429238/176948.terrain b/public/terrain/18/429238/176948.terrain new file mode 100644 index 000000000..958e460c5 Binary files /dev/null and b/public/terrain/18/429238/176948.terrain differ diff --git a/public/terrain/18/429238/176949.terrain b/public/terrain/18/429238/176949.terrain new file mode 100644 index 000000000..97dff73f4 Binary files /dev/null and b/public/terrain/18/429238/176949.terrain differ diff --git a/public/terrain/18/429238/176950.terrain b/public/terrain/18/429238/176950.terrain new file mode 100644 index 000000000..7cc02057e Binary files /dev/null and b/public/terrain/18/429238/176950.terrain differ diff --git a/public/terrain/18/429238/176951.terrain b/public/terrain/18/429238/176951.terrain new file mode 100644 index 000000000..00b74fbc0 Binary files /dev/null and b/public/terrain/18/429238/176951.terrain differ diff --git a/public/terrain/18/429238/176952.terrain b/public/terrain/18/429238/176952.terrain new file mode 100644 index 000000000..75e318952 Binary files /dev/null and b/public/terrain/18/429238/176952.terrain differ diff --git a/public/terrain/18/429238/176953.terrain b/public/terrain/18/429238/176953.terrain new file mode 100644 index 000000000..97b6ccce4 Binary files /dev/null and b/public/terrain/18/429238/176953.terrain differ diff --git a/public/terrain/18/429238/176954.terrain b/public/terrain/18/429238/176954.terrain new file mode 100644 index 000000000..b77b71426 Binary files /dev/null and b/public/terrain/18/429238/176954.terrain differ diff --git a/public/terrain/18/429238/176955.terrain b/public/terrain/18/429238/176955.terrain new file mode 100644 index 000000000..f15c17356 Binary files /dev/null and b/public/terrain/18/429238/176955.terrain differ diff --git a/public/terrain/18/429238/176956.terrain b/public/terrain/18/429238/176956.terrain new file mode 100644 index 000000000..68f52d66c Binary files /dev/null and b/public/terrain/18/429238/176956.terrain differ diff --git a/public/terrain/18/429238/176957.terrain b/public/terrain/18/429238/176957.terrain new file mode 100644 index 000000000..179f92a46 Binary files /dev/null and b/public/terrain/18/429238/176957.terrain differ diff --git a/public/terrain/18/429238/176958.terrain b/public/terrain/18/429238/176958.terrain new file mode 100644 index 000000000..2cefaa549 Binary files /dev/null and b/public/terrain/18/429238/176958.terrain differ diff --git a/public/terrain/18/429238/176959.terrain b/public/terrain/18/429238/176959.terrain new file mode 100644 index 000000000..4dbb32695 Binary files /dev/null and b/public/terrain/18/429238/176959.terrain differ diff --git a/public/terrain/18/429238/176960.terrain b/public/terrain/18/429238/176960.terrain new file mode 100644 index 000000000..207101045 Binary files /dev/null and b/public/terrain/18/429238/176960.terrain differ diff --git a/public/terrain/18/429238/176961.terrain b/public/terrain/18/429238/176961.terrain new file mode 100644 index 000000000..36182eb6f Binary files /dev/null and b/public/terrain/18/429238/176961.terrain differ diff --git a/public/terrain/18/429238/176962.terrain b/public/terrain/18/429238/176962.terrain new file mode 100644 index 000000000..aaec1dbc9 Binary files /dev/null and b/public/terrain/18/429238/176962.terrain differ diff --git a/public/terrain/18/429238/176963.terrain b/public/terrain/18/429238/176963.terrain new file mode 100644 index 000000000..489dd06a8 Binary files /dev/null and b/public/terrain/18/429238/176963.terrain differ diff --git a/public/terrain/18/429238/176964.terrain b/public/terrain/18/429238/176964.terrain new file mode 100644 index 000000000..90e1862b4 Binary files /dev/null and b/public/terrain/18/429238/176964.terrain differ diff --git a/public/terrain/18/429238/176965.terrain b/public/terrain/18/429238/176965.terrain new file mode 100644 index 000000000..bd727c701 Binary files /dev/null and b/public/terrain/18/429238/176965.terrain differ diff --git a/public/terrain/18/429238/176966.terrain b/public/terrain/18/429238/176966.terrain new file mode 100644 index 000000000..f0dea0f5e Binary files /dev/null and b/public/terrain/18/429238/176966.terrain differ diff --git a/public/terrain/18/429238/176967.terrain b/public/terrain/18/429238/176967.terrain new file mode 100644 index 000000000..92b2387fb Binary files /dev/null and b/public/terrain/18/429238/176967.terrain differ diff --git a/public/terrain/18/429238/176968.terrain b/public/terrain/18/429238/176968.terrain new file mode 100644 index 000000000..e973a691c Binary files /dev/null and b/public/terrain/18/429238/176968.terrain differ diff --git a/public/terrain/18/429238/176969.terrain b/public/terrain/18/429238/176969.terrain new file mode 100644 index 000000000..e612179b8 Binary files /dev/null and b/public/terrain/18/429238/176969.terrain differ diff --git a/public/terrain/18/429238/176970.terrain b/public/terrain/18/429238/176970.terrain new file mode 100644 index 000000000..0a49cae47 Binary files /dev/null and b/public/terrain/18/429238/176970.terrain differ diff --git a/public/terrain/18/429238/176971.terrain b/public/terrain/18/429238/176971.terrain new file mode 100644 index 000000000..6c59dcdbe Binary files /dev/null and b/public/terrain/18/429238/176971.terrain differ diff --git a/public/terrain/18/429238/176972.terrain b/public/terrain/18/429238/176972.terrain new file mode 100644 index 000000000..7f18cf768 Binary files /dev/null and b/public/terrain/18/429238/176972.terrain differ diff --git a/public/terrain/18/429238/176973.terrain b/public/terrain/18/429238/176973.terrain new file mode 100644 index 000000000..f372b8f45 Binary files /dev/null and b/public/terrain/18/429238/176973.terrain differ diff --git a/public/terrain/18/429238/176974.terrain b/public/terrain/18/429238/176974.terrain new file mode 100644 index 000000000..394cc9a63 Binary files /dev/null and b/public/terrain/18/429238/176974.terrain differ diff --git a/public/terrain/18/429238/176975.terrain b/public/terrain/18/429238/176975.terrain new file mode 100644 index 000000000..e56189934 Binary files /dev/null and b/public/terrain/18/429238/176975.terrain differ diff --git a/public/terrain/18/429238/176976.terrain b/public/terrain/18/429238/176976.terrain new file mode 100644 index 000000000..075a46442 Binary files /dev/null and b/public/terrain/18/429238/176976.terrain differ diff --git a/public/terrain/18/429238/176977.terrain b/public/terrain/18/429238/176977.terrain new file mode 100644 index 000000000..f440e7aa9 Binary files /dev/null and b/public/terrain/18/429238/176977.terrain differ diff --git a/public/terrain/18/429238/176978.terrain b/public/terrain/18/429238/176978.terrain new file mode 100644 index 000000000..879ae0636 Binary files /dev/null and b/public/terrain/18/429238/176978.terrain differ diff --git a/public/terrain/18/429238/176979.terrain b/public/terrain/18/429238/176979.terrain new file mode 100644 index 000000000..dcbdcd5fb Binary files /dev/null and b/public/terrain/18/429238/176979.terrain differ diff --git a/public/terrain/18/429238/176980.terrain b/public/terrain/18/429238/176980.terrain new file mode 100644 index 000000000..9fcf3e43b Binary files /dev/null and b/public/terrain/18/429238/176980.terrain differ diff --git a/public/terrain/18/429238/176981.terrain b/public/terrain/18/429238/176981.terrain new file mode 100644 index 000000000..85cd8caf6 Binary files /dev/null and b/public/terrain/18/429238/176981.terrain differ diff --git a/public/terrain/18/429238/176982.terrain b/public/terrain/18/429238/176982.terrain new file mode 100644 index 000000000..2063070e1 Binary files /dev/null and b/public/terrain/18/429238/176982.terrain differ diff --git a/public/terrain/18/429238/176983.terrain b/public/terrain/18/429238/176983.terrain new file mode 100644 index 000000000..2ce971390 Binary files /dev/null and b/public/terrain/18/429238/176983.terrain differ diff --git a/public/terrain/18/429238/176984.terrain b/public/terrain/18/429238/176984.terrain new file mode 100644 index 000000000..2a8a226bc Binary files /dev/null and b/public/terrain/18/429238/176984.terrain differ diff --git a/public/terrain/18/429238/176985.terrain b/public/terrain/18/429238/176985.terrain new file mode 100644 index 000000000..a55cd0927 Binary files /dev/null and b/public/terrain/18/429238/176985.terrain differ diff --git a/public/terrain/18/429238/176986.terrain b/public/terrain/18/429238/176986.terrain new file mode 100644 index 000000000..09d6e6c97 Binary files /dev/null and b/public/terrain/18/429238/176986.terrain differ diff --git a/public/terrain/18/429238/176987.terrain b/public/terrain/18/429238/176987.terrain new file mode 100644 index 000000000..a0b664e04 Binary files /dev/null and b/public/terrain/18/429238/176987.terrain differ diff --git a/public/terrain/18/429238/176988.terrain b/public/terrain/18/429238/176988.terrain new file mode 100644 index 000000000..b07ef84f1 Binary files /dev/null and b/public/terrain/18/429238/176988.terrain differ diff --git a/public/terrain/18/429238/176989.terrain b/public/terrain/18/429238/176989.terrain new file mode 100644 index 000000000..5b16c5a32 Binary files /dev/null and b/public/terrain/18/429238/176989.terrain differ diff --git a/public/terrain/18/429238/176990.terrain b/public/terrain/18/429238/176990.terrain new file mode 100644 index 000000000..90f1b539a Binary files /dev/null and b/public/terrain/18/429238/176990.terrain differ diff --git a/public/terrain/18/429238/176991.terrain b/public/terrain/18/429238/176991.terrain new file mode 100644 index 000000000..511203e90 Binary files /dev/null and b/public/terrain/18/429238/176991.terrain differ diff --git a/public/terrain/18/429238/176992.terrain b/public/terrain/18/429238/176992.terrain new file mode 100644 index 000000000..01e2a4c9c Binary files /dev/null and b/public/terrain/18/429238/176992.terrain differ diff --git a/public/terrain/18/429238/176993.terrain b/public/terrain/18/429238/176993.terrain new file mode 100644 index 000000000..21edd3dea Binary files /dev/null and b/public/terrain/18/429238/176993.terrain differ diff --git a/public/terrain/18/429238/176994.terrain b/public/terrain/18/429238/176994.terrain new file mode 100644 index 000000000..098e50f37 Binary files /dev/null and b/public/terrain/18/429238/176994.terrain differ diff --git a/public/terrain/18/429238/176995.terrain b/public/terrain/18/429238/176995.terrain new file mode 100644 index 000000000..3efa801cc Binary files /dev/null and b/public/terrain/18/429238/176995.terrain differ diff --git a/public/terrain/18/429238/176996.terrain b/public/terrain/18/429238/176996.terrain new file mode 100644 index 000000000..b2d5d49be Binary files /dev/null and b/public/terrain/18/429238/176996.terrain differ diff --git a/public/terrain/18/429238/176997.terrain b/public/terrain/18/429238/176997.terrain new file mode 100644 index 000000000..49c3c6419 Binary files /dev/null and b/public/terrain/18/429238/176997.terrain differ diff --git a/public/terrain/18/429238/176998.terrain b/public/terrain/18/429238/176998.terrain new file mode 100644 index 000000000..d614b8fdf Binary files /dev/null and b/public/terrain/18/429238/176998.terrain differ diff --git a/public/terrain/18/429238/176999.terrain b/public/terrain/18/429238/176999.terrain new file mode 100644 index 000000000..429a5253f Binary files /dev/null and b/public/terrain/18/429238/176999.terrain differ diff --git a/public/terrain/18/429238/177000.terrain b/public/terrain/18/429238/177000.terrain new file mode 100644 index 000000000..a955ef97a Binary files /dev/null and b/public/terrain/18/429238/177000.terrain differ diff --git a/public/terrain/18/429238/177001.terrain b/public/terrain/18/429238/177001.terrain new file mode 100644 index 000000000..e10fb5f5c Binary files /dev/null and b/public/terrain/18/429238/177001.terrain differ diff --git a/public/terrain/18/429238/177002.terrain b/public/terrain/18/429238/177002.terrain new file mode 100644 index 000000000..18c777d50 Binary files /dev/null and b/public/terrain/18/429238/177002.terrain differ diff --git a/public/terrain/18/429238/177003.terrain b/public/terrain/18/429238/177003.terrain new file mode 100644 index 000000000..379d948de Binary files /dev/null and b/public/terrain/18/429238/177003.terrain differ diff --git a/public/terrain/18/429238/177004.terrain b/public/terrain/18/429238/177004.terrain new file mode 100644 index 000000000..43b920243 Binary files /dev/null and b/public/terrain/18/429238/177004.terrain differ diff --git a/public/terrain/18/429238/177005.terrain b/public/terrain/18/429238/177005.terrain new file mode 100644 index 000000000..6ea312dbb Binary files /dev/null and b/public/terrain/18/429238/177005.terrain differ diff --git a/public/terrain/18/429238/177006.terrain b/public/terrain/18/429238/177006.terrain new file mode 100644 index 000000000..29ab60ed8 Binary files /dev/null and b/public/terrain/18/429238/177006.terrain differ diff --git a/public/terrain/18/429238/177007.terrain b/public/terrain/18/429238/177007.terrain new file mode 100644 index 000000000..0f456bc71 Binary files /dev/null and b/public/terrain/18/429238/177007.terrain differ diff --git a/public/terrain/18/429238/177008.terrain b/public/terrain/18/429238/177008.terrain new file mode 100644 index 000000000..d08169873 Binary files /dev/null and b/public/terrain/18/429238/177008.terrain differ diff --git a/public/terrain/18/429238/177009.terrain b/public/terrain/18/429238/177009.terrain new file mode 100644 index 000000000..c11df80c1 Binary files /dev/null and b/public/terrain/18/429238/177009.terrain differ diff --git a/public/terrain/18/429238/177010.terrain b/public/terrain/18/429238/177010.terrain new file mode 100644 index 000000000..530d2c3be Binary files /dev/null and b/public/terrain/18/429238/177010.terrain differ diff --git a/public/terrain/18/429238/177011.terrain b/public/terrain/18/429238/177011.terrain new file mode 100644 index 000000000..b69ed9231 Binary files /dev/null and b/public/terrain/18/429238/177011.terrain differ diff --git a/public/terrain/18/429238/177012.terrain b/public/terrain/18/429238/177012.terrain new file mode 100644 index 000000000..0212411b2 Binary files /dev/null and b/public/terrain/18/429238/177012.terrain differ diff --git a/public/terrain/18/429238/177013.terrain b/public/terrain/18/429238/177013.terrain new file mode 100644 index 000000000..f293d7ff4 Binary files /dev/null and b/public/terrain/18/429238/177013.terrain differ diff --git a/public/terrain/18/429238/177014.terrain b/public/terrain/18/429238/177014.terrain new file mode 100644 index 000000000..1a41359c1 Binary files /dev/null and b/public/terrain/18/429238/177014.terrain differ diff --git a/public/terrain/18/429238/177015.terrain b/public/terrain/18/429238/177015.terrain new file mode 100644 index 000000000..bfc6d9b05 Binary files /dev/null and b/public/terrain/18/429238/177015.terrain differ diff --git a/public/terrain/18/429238/177016.terrain b/public/terrain/18/429238/177016.terrain new file mode 100644 index 000000000..a101b1aad Binary files /dev/null and b/public/terrain/18/429238/177016.terrain differ diff --git a/public/terrain/18/429238/177017.terrain b/public/terrain/18/429238/177017.terrain new file mode 100644 index 000000000..092bab12c Binary files /dev/null and b/public/terrain/18/429238/177017.terrain differ diff --git a/public/terrain/18/429238/177018.terrain b/public/terrain/18/429238/177018.terrain new file mode 100644 index 000000000..dfce05d28 Binary files /dev/null and b/public/terrain/18/429238/177018.terrain differ diff --git a/public/terrain/18/429238/177019.terrain b/public/terrain/18/429238/177019.terrain new file mode 100644 index 000000000..184251f43 Binary files /dev/null and b/public/terrain/18/429238/177019.terrain differ diff --git a/public/terrain/18/429238/177020.terrain b/public/terrain/18/429238/177020.terrain new file mode 100644 index 000000000..7b0daf4bd Binary files /dev/null and b/public/terrain/18/429238/177020.terrain differ diff --git a/public/terrain/18/429238/177021.terrain b/public/terrain/18/429238/177021.terrain new file mode 100644 index 000000000..6cf4e2ff2 Binary files /dev/null and b/public/terrain/18/429238/177021.terrain differ diff --git a/public/terrain/18/429238/177022.terrain b/public/terrain/18/429238/177022.terrain new file mode 100644 index 000000000..8bbd6a0f5 Binary files /dev/null and b/public/terrain/18/429238/177022.terrain differ diff --git a/public/terrain/18/429238/177023.terrain b/public/terrain/18/429238/177023.terrain new file mode 100644 index 000000000..b01eefc0f Binary files /dev/null and b/public/terrain/18/429238/177023.terrain differ diff --git a/public/terrain/18/429238/177024.terrain b/public/terrain/18/429238/177024.terrain new file mode 100644 index 000000000..8dd5d6ee6 Binary files /dev/null and b/public/terrain/18/429238/177024.terrain differ diff --git a/public/terrain/18/429238/177025.terrain b/public/terrain/18/429238/177025.terrain new file mode 100644 index 000000000..baf7f0b8f Binary files /dev/null and b/public/terrain/18/429238/177025.terrain differ diff --git a/public/terrain/18/429238/177026.terrain b/public/terrain/18/429238/177026.terrain new file mode 100644 index 000000000..3b6ebe924 Binary files /dev/null and b/public/terrain/18/429238/177026.terrain differ diff --git a/public/terrain/18/429238/177027.terrain b/public/terrain/18/429238/177027.terrain new file mode 100644 index 000000000..4b8495c38 Binary files /dev/null and b/public/terrain/18/429238/177027.terrain differ diff --git a/public/terrain/18/429238/177028.terrain b/public/terrain/18/429238/177028.terrain new file mode 100644 index 000000000..ba6c2a053 Binary files /dev/null and b/public/terrain/18/429238/177028.terrain differ diff --git a/public/terrain/18/429238/177029.terrain b/public/terrain/18/429238/177029.terrain new file mode 100644 index 000000000..bf17a1c1b Binary files /dev/null and b/public/terrain/18/429238/177029.terrain differ diff --git a/public/terrain/18/429239/176871.terrain b/public/terrain/18/429239/176871.terrain new file mode 100644 index 000000000..855985b8c Binary files /dev/null and b/public/terrain/18/429239/176871.terrain differ diff --git a/public/terrain/18/429239/176872.terrain b/public/terrain/18/429239/176872.terrain new file mode 100644 index 000000000..578e8d18f Binary files /dev/null and b/public/terrain/18/429239/176872.terrain differ diff --git a/public/terrain/18/429239/176873.terrain b/public/terrain/18/429239/176873.terrain new file mode 100644 index 000000000..b3eee8187 Binary files /dev/null and b/public/terrain/18/429239/176873.terrain differ diff --git a/public/terrain/18/429239/176874.terrain b/public/terrain/18/429239/176874.terrain new file mode 100644 index 000000000..d98b4a202 Binary files /dev/null and b/public/terrain/18/429239/176874.terrain differ diff --git a/public/terrain/18/429239/176875.terrain b/public/terrain/18/429239/176875.terrain new file mode 100644 index 000000000..300f6436c Binary files /dev/null and b/public/terrain/18/429239/176875.terrain differ diff --git a/public/terrain/18/429239/176876.terrain b/public/terrain/18/429239/176876.terrain new file mode 100644 index 000000000..624214390 Binary files /dev/null and b/public/terrain/18/429239/176876.terrain differ diff --git a/public/terrain/18/429239/176877.terrain b/public/terrain/18/429239/176877.terrain new file mode 100644 index 000000000..d74873a7b Binary files /dev/null and b/public/terrain/18/429239/176877.terrain differ diff --git a/public/terrain/18/429239/176878.terrain b/public/terrain/18/429239/176878.terrain new file mode 100644 index 000000000..89913fcc9 Binary files /dev/null and b/public/terrain/18/429239/176878.terrain differ diff --git a/public/terrain/18/429239/176879.terrain b/public/terrain/18/429239/176879.terrain new file mode 100644 index 000000000..0a05f188d Binary files /dev/null and b/public/terrain/18/429239/176879.terrain differ diff --git a/public/terrain/18/429239/176880.terrain b/public/terrain/18/429239/176880.terrain new file mode 100644 index 000000000..57fdb6aa1 Binary files /dev/null and b/public/terrain/18/429239/176880.terrain differ diff --git a/public/terrain/18/429239/176881.terrain b/public/terrain/18/429239/176881.terrain new file mode 100644 index 000000000..23c0404ce Binary files /dev/null and b/public/terrain/18/429239/176881.terrain differ diff --git a/public/terrain/18/429239/176882.terrain b/public/terrain/18/429239/176882.terrain new file mode 100644 index 000000000..bb00083e1 Binary files /dev/null and b/public/terrain/18/429239/176882.terrain differ diff --git a/public/terrain/18/429239/176883.terrain b/public/terrain/18/429239/176883.terrain new file mode 100644 index 000000000..22df08e54 Binary files /dev/null and b/public/terrain/18/429239/176883.terrain differ diff --git a/public/terrain/18/429239/176884.terrain b/public/terrain/18/429239/176884.terrain new file mode 100644 index 000000000..9beec0ce7 Binary files /dev/null and b/public/terrain/18/429239/176884.terrain differ diff --git a/public/terrain/18/429239/176885.terrain b/public/terrain/18/429239/176885.terrain new file mode 100644 index 000000000..38ed95e44 Binary files /dev/null and b/public/terrain/18/429239/176885.terrain differ diff --git a/public/terrain/18/429239/176886.terrain b/public/terrain/18/429239/176886.terrain new file mode 100644 index 000000000..154dbfce0 Binary files /dev/null and b/public/terrain/18/429239/176886.terrain differ diff --git a/public/terrain/18/429239/176887.terrain b/public/terrain/18/429239/176887.terrain new file mode 100644 index 000000000..20ddbdf3f Binary files /dev/null and b/public/terrain/18/429239/176887.terrain differ diff --git a/public/terrain/18/429239/176888.terrain b/public/terrain/18/429239/176888.terrain new file mode 100644 index 000000000..063777796 Binary files /dev/null and b/public/terrain/18/429239/176888.terrain differ diff --git a/public/terrain/18/429239/176889.terrain b/public/terrain/18/429239/176889.terrain new file mode 100644 index 000000000..e55fce7b9 Binary files /dev/null and b/public/terrain/18/429239/176889.terrain differ diff --git a/public/terrain/18/429239/176890.terrain b/public/terrain/18/429239/176890.terrain new file mode 100644 index 000000000..e857a1719 Binary files /dev/null and b/public/terrain/18/429239/176890.terrain differ diff --git a/public/terrain/18/429239/176891.terrain b/public/terrain/18/429239/176891.terrain new file mode 100644 index 000000000..33c4a1cdd Binary files /dev/null and b/public/terrain/18/429239/176891.terrain differ diff --git a/public/terrain/18/429239/176892.terrain b/public/terrain/18/429239/176892.terrain new file mode 100644 index 000000000..58c62fee1 Binary files /dev/null and b/public/terrain/18/429239/176892.terrain differ diff --git a/public/terrain/18/429239/176893.terrain b/public/terrain/18/429239/176893.terrain new file mode 100644 index 000000000..c97de914b Binary files /dev/null and b/public/terrain/18/429239/176893.terrain differ diff --git a/public/terrain/18/429239/176894.terrain b/public/terrain/18/429239/176894.terrain new file mode 100644 index 000000000..1a99ecaf9 Binary files /dev/null and b/public/terrain/18/429239/176894.terrain differ diff --git a/public/terrain/18/429239/176895.terrain b/public/terrain/18/429239/176895.terrain new file mode 100644 index 000000000..d32242162 Binary files /dev/null and b/public/terrain/18/429239/176895.terrain differ diff --git a/public/terrain/18/429239/176896.terrain b/public/terrain/18/429239/176896.terrain new file mode 100644 index 000000000..3c2686501 Binary files /dev/null and b/public/terrain/18/429239/176896.terrain differ diff --git a/public/terrain/18/429239/176897.terrain b/public/terrain/18/429239/176897.terrain new file mode 100644 index 000000000..99a305b21 Binary files /dev/null and b/public/terrain/18/429239/176897.terrain differ diff --git a/public/terrain/18/429239/176898.terrain b/public/terrain/18/429239/176898.terrain new file mode 100644 index 000000000..d113856a5 Binary files /dev/null and b/public/terrain/18/429239/176898.terrain differ diff --git a/public/terrain/18/429239/176899.terrain b/public/terrain/18/429239/176899.terrain new file mode 100644 index 000000000..e2c22f82f Binary files /dev/null and b/public/terrain/18/429239/176899.terrain differ diff --git a/public/terrain/18/429239/176900.terrain b/public/terrain/18/429239/176900.terrain new file mode 100644 index 000000000..37ab3bfe3 Binary files /dev/null and b/public/terrain/18/429239/176900.terrain differ diff --git a/public/terrain/18/429239/176901.terrain b/public/terrain/18/429239/176901.terrain new file mode 100644 index 000000000..0ba72358e Binary files /dev/null and b/public/terrain/18/429239/176901.terrain differ diff --git a/public/terrain/18/429239/176902.terrain b/public/terrain/18/429239/176902.terrain new file mode 100644 index 000000000..dfbc1c839 Binary files /dev/null and b/public/terrain/18/429239/176902.terrain differ diff --git a/public/terrain/18/429239/176903.terrain b/public/terrain/18/429239/176903.terrain new file mode 100644 index 000000000..861019b1c Binary files /dev/null and b/public/terrain/18/429239/176903.terrain differ diff --git a/public/terrain/18/429239/176904.terrain b/public/terrain/18/429239/176904.terrain new file mode 100644 index 000000000..5adeb2d00 Binary files /dev/null and b/public/terrain/18/429239/176904.terrain differ diff --git a/public/terrain/18/429239/176905.terrain b/public/terrain/18/429239/176905.terrain new file mode 100644 index 000000000..71e849e36 Binary files /dev/null and b/public/terrain/18/429239/176905.terrain differ diff --git a/public/terrain/18/429239/176906.terrain b/public/terrain/18/429239/176906.terrain new file mode 100644 index 000000000..e89fa365f Binary files /dev/null and b/public/terrain/18/429239/176906.terrain differ diff --git a/public/terrain/18/429239/176907.terrain b/public/terrain/18/429239/176907.terrain new file mode 100644 index 000000000..a9c0bf31f Binary files /dev/null and b/public/terrain/18/429239/176907.terrain differ diff --git a/public/terrain/18/429239/176908.terrain b/public/terrain/18/429239/176908.terrain new file mode 100644 index 000000000..8057c0dad Binary files /dev/null and b/public/terrain/18/429239/176908.terrain differ diff --git a/public/terrain/18/429239/176909.terrain b/public/terrain/18/429239/176909.terrain new file mode 100644 index 000000000..9af30f213 Binary files /dev/null and b/public/terrain/18/429239/176909.terrain differ diff --git a/public/terrain/18/429239/176910.terrain b/public/terrain/18/429239/176910.terrain new file mode 100644 index 000000000..479fc2221 Binary files /dev/null and b/public/terrain/18/429239/176910.terrain differ diff --git a/public/terrain/18/429239/176911.terrain b/public/terrain/18/429239/176911.terrain new file mode 100644 index 000000000..1e53341a9 Binary files /dev/null and b/public/terrain/18/429239/176911.terrain differ diff --git a/public/terrain/18/429239/176912.terrain b/public/terrain/18/429239/176912.terrain new file mode 100644 index 000000000..22f3f20b2 Binary files /dev/null and b/public/terrain/18/429239/176912.terrain differ diff --git a/public/terrain/18/429239/176913.terrain b/public/terrain/18/429239/176913.terrain new file mode 100644 index 000000000..c49e13171 Binary files /dev/null and b/public/terrain/18/429239/176913.terrain differ diff --git a/public/terrain/18/429239/176914.terrain b/public/terrain/18/429239/176914.terrain new file mode 100644 index 000000000..668cbc6ea Binary files /dev/null and b/public/terrain/18/429239/176914.terrain differ diff --git a/public/terrain/18/429239/176915.terrain b/public/terrain/18/429239/176915.terrain new file mode 100644 index 000000000..b844f98c1 Binary files /dev/null and b/public/terrain/18/429239/176915.terrain differ diff --git a/public/terrain/18/429239/176916.terrain b/public/terrain/18/429239/176916.terrain new file mode 100644 index 000000000..412f50fef Binary files /dev/null and b/public/terrain/18/429239/176916.terrain differ diff --git a/public/terrain/18/429239/176917.terrain b/public/terrain/18/429239/176917.terrain new file mode 100644 index 000000000..96dfff373 Binary files /dev/null and b/public/terrain/18/429239/176917.terrain differ diff --git a/public/terrain/18/429239/176918.terrain b/public/terrain/18/429239/176918.terrain new file mode 100644 index 000000000..223eb9382 Binary files /dev/null and b/public/terrain/18/429239/176918.terrain differ diff --git a/public/terrain/18/429239/176919.terrain b/public/terrain/18/429239/176919.terrain new file mode 100644 index 000000000..203f8b276 Binary files /dev/null and b/public/terrain/18/429239/176919.terrain differ diff --git a/public/terrain/18/429239/176920.terrain b/public/terrain/18/429239/176920.terrain new file mode 100644 index 000000000..aeb3ca80d Binary files /dev/null and b/public/terrain/18/429239/176920.terrain differ diff --git a/public/terrain/18/429239/176921.terrain b/public/terrain/18/429239/176921.terrain new file mode 100644 index 000000000..7191874c8 Binary files /dev/null and b/public/terrain/18/429239/176921.terrain differ diff --git a/public/terrain/18/429239/176922.terrain b/public/terrain/18/429239/176922.terrain new file mode 100644 index 000000000..a4d8caf79 Binary files /dev/null and b/public/terrain/18/429239/176922.terrain differ diff --git a/public/terrain/18/429239/176923.terrain b/public/terrain/18/429239/176923.terrain new file mode 100644 index 000000000..ef884d5ea Binary files /dev/null and b/public/terrain/18/429239/176923.terrain differ diff --git a/public/terrain/18/429239/176924.terrain b/public/terrain/18/429239/176924.terrain new file mode 100644 index 000000000..67e8e6a39 Binary files /dev/null and b/public/terrain/18/429239/176924.terrain differ diff --git a/public/terrain/18/429239/176925.terrain b/public/terrain/18/429239/176925.terrain new file mode 100644 index 000000000..541623b26 Binary files /dev/null and b/public/terrain/18/429239/176925.terrain differ diff --git a/public/terrain/18/429239/176926.terrain b/public/terrain/18/429239/176926.terrain new file mode 100644 index 000000000..c4625df22 Binary files /dev/null and b/public/terrain/18/429239/176926.terrain differ diff --git a/public/terrain/18/429239/176927.terrain b/public/terrain/18/429239/176927.terrain new file mode 100644 index 000000000..da94a3498 Binary files /dev/null and b/public/terrain/18/429239/176927.terrain differ diff --git a/public/terrain/18/429239/176928.terrain b/public/terrain/18/429239/176928.terrain new file mode 100644 index 000000000..ebfff1bd7 Binary files /dev/null and b/public/terrain/18/429239/176928.terrain differ diff --git a/public/terrain/18/429239/176929.terrain b/public/terrain/18/429239/176929.terrain new file mode 100644 index 000000000..75d7e06b5 Binary files /dev/null and b/public/terrain/18/429239/176929.terrain differ diff --git a/public/terrain/18/429239/176930.terrain b/public/terrain/18/429239/176930.terrain new file mode 100644 index 000000000..adc833032 Binary files /dev/null and b/public/terrain/18/429239/176930.terrain differ diff --git a/public/terrain/18/429239/176931.terrain b/public/terrain/18/429239/176931.terrain new file mode 100644 index 000000000..520d2bda9 Binary files /dev/null and b/public/terrain/18/429239/176931.terrain differ diff --git a/public/terrain/18/429239/176932.terrain b/public/terrain/18/429239/176932.terrain new file mode 100644 index 000000000..56f22f367 Binary files /dev/null and b/public/terrain/18/429239/176932.terrain differ diff --git a/public/terrain/18/429239/176933.terrain b/public/terrain/18/429239/176933.terrain new file mode 100644 index 000000000..3b75eea31 Binary files /dev/null and b/public/terrain/18/429239/176933.terrain differ diff --git a/public/terrain/18/429239/176934.terrain b/public/terrain/18/429239/176934.terrain new file mode 100644 index 000000000..2beeaa355 Binary files /dev/null and b/public/terrain/18/429239/176934.terrain differ diff --git a/public/terrain/18/429239/176935.terrain b/public/terrain/18/429239/176935.terrain new file mode 100644 index 000000000..9e42638c3 Binary files /dev/null and b/public/terrain/18/429239/176935.terrain differ diff --git a/public/terrain/18/429239/176936.terrain b/public/terrain/18/429239/176936.terrain new file mode 100644 index 000000000..45b069bc5 Binary files /dev/null and b/public/terrain/18/429239/176936.terrain differ diff --git a/public/terrain/18/429239/176937.terrain b/public/terrain/18/429239/176937.terrain new file mode 100644 index 000000000..663a439b8 Binary files /dev/null and b/public/terrain/18/429239/176937.terrain differ diff --git a/public/terrain/18/429239/176938.terrain b/public/terrain/18/429239/176938.terrain new file mode 100644 index 000000000..665dbef0d Binary files /dev/null and b/public/terrain/18/429239/176938.terrain differ diff --git a/public/terrain/18/429239/176939.terrain b/public/terrain/18/429239/176939.terrain new file mode 100644 index 000000000..f2bccc8be Binary files /dev/null and b/public/terrain/18/429239/176939.terrain differ diff --git a/public/terrain/18/429239/176940.terrain b/public/terrain/18/429239/176940.terrain new file mode 100644 index 000000000..3fe214cb8 Binary files /dev/null and b/public/terrain/18/429239/176940.terrain differ diff --git a/public/terrain/18/429239/176941.terrain b/public/terrain/18/429239/176941.terrain new file mode 100644 index 000000000..7713739f2 Binary files /dev/null and b/public/terrain/18/429239/176941.terrain differ diff --git a/public/terrain/18/429239/176942.terrain b/public/terrain/18/429239/176942.terrain new file mode 100644 index 000000000..cbb3a8cdf Binary files /dev/null and b/public/terrain/18/429239/176942.terrain differ diff --git a/public/terrain/18/429239/176943.terrain b/public/terrain/18/429239/176943.terrain new file mode 100644 index 000000000..40ab0545a Binary files /dev/null and b/public/terrain/18/429239/176943.terrain differ diff --git a/public/terrain/18/429239/176944.terrain b/public/terrain/18/429239/176944.terrain new file mode 100644 index 000000000..27a0249b4 Binary files /dev/null and b/public/terrain/18/429239/176944.terrain differ diff --git a/public/terrain/18/429239/176945.terrain b/public/terrain/18/429239/176945.terrain new file mode 100644 index 000000000..fc81d52d5 Binary files /dev/null and b/public/terrain/18/429239/176945.terrain differ diff --git a/public/terrain/18/429239/176946.terrain b/public/terrain/18/429239/176946.terrain new file mode 100644 index 000000000..d994563bc Binary files /dev/null and b/public/terrain/18/429239/176946.terrain differ diff --git a/public/terrain/18/429239/176947.terrain b/public/terrain/18/429239/176947.terrain new file mode 100644 index 000000000..db268b5f8 Binary files /dev/null and b/public/terrain/18/429239/176947.terrain differ diff --git a/public/terrain/18/429239/176948.terrain b/public/terrain/18/429239/176948.terrain new file mode 100644 index 000000000..22bce1eef Binary files /dev/null and b/public/terrain/18/429239/176948.terrain differ diff --git a/public/terrain/18/429239/176949.terrain b/public/terrain/18/429239/176949.terrain new file mode 100644 index 000000000..925f3d923 Binary files /dev/null and b/public/terrain/18/429239/176949.terrain differ diff --git a/public/terrain/18/429239/176950.terrain b/public/terrain/18/429239/176950.terrain new file mode 100644 index 000000000..4824d0e94 Binary files /dev/null and b/public/terrain/18/429239/176950.terrain differ diff --git a/public/terrain/18/429239/176951.terrain b/public/terrain/18/429239/176951.terrain new file mode 100644 index 000000000..c0d8c8929 Binary files /dev/null and b/public/terrain/18/429239/176951.terrain differ diff --git a/public/terrain/18/429239/176952.terrain b/public/terrain/18/429239/176952.terrain new file mode 100644 index 000000000..d05b44aff Binary files /dev/null and b/public/terrain/18/429239/176952.terrain differ diff --git a/public/terrain/18/429239/176953.terrain b/public/terrain/18/429239/176953.terrain new file mode 100644 index 000000000..7bc293eea Binary files /dev/null and b/public/terrain/18/429239/176953.terrain differ diff --git a/public/terrain/18/429239/176954.terrain b/public/terrain/18/429239/176954.terrain new file mode 100644 index 000000000..cda860752 Binary files /dev/null and b/public/terrain/18/429239/176954.terrain differ diff --git a/public/terrain/18/429239/176955.terrain b/public/terrain/18/429239/176955.terrain new file mode 100644 index 000000000..7b5ed032d Binary files /dev/null and b/public/terrain/18/429239/176955.terrain differ diff --git a/public/terrain/18/429239/176956.terrain b/public/terrain/18/429239/176956.terrain new file mode 100644 index 000000000..77f228429 Binary files /dev/null and b/public/terrain/18/429239/176956.terrain differ diff --git a/public/terrain/18/429239/176957.terrain b/public/terrain/18/429239/176957.terrain new file mode 100644 index 000000000..dd74b05e6 Binary files /dev/null and b/public/terrain/18/429239/176957.terrain differ diff --git a/public/terrain/18/429239/176958.terrain b/public/terrain/18/429239/176958.terrain new file mode 100644 index 000000000..c464ffb7a Binary files /dev/null and b/public/terrain/18/429239/176958.terrain differ diff --git a/public/terrain/18/429239/176959.terrain b/public/terrain/18/429239/176959.terrain new file mode 100644 index 000000000..74c2f3d93 Binary files /dev/null and b/public/terrain/18/429239/176959.terrain differ diff --git a/public/terrain/18/429239/176960.terrain b/public/terrain/18/429239/176960.terrain new file mode 100644 index 000000000..09ed304b2 Binary files /dev/null and b/public/terrain/18/429239/176960.terrain differ diff --git a/public/terrain/18/429239/176961.terrain b/public/terrain/18/429239/176961.terrain new file mode 100644 index 000000000..d157e52a7 Binary files /dev/null and b/public/terrain/18/429239/176961.terrain differ diff --git a/public/terrain/18/429239/176962.terrain b/public/terrain/18/429239/176962.terrain new file mode 100644 index 000000000..6571a8cfb Binary files /dev/null and b/public/terrain/18/429239/176962.terrain differ diff --git a/public/terrain/18/429239/176963.terrain b/public/terrain/18/429239/176963.terrain new file mode 100644 index 000000000..a9358b630 Binary files /dev/null and b/public/terrain/18/429239/176963.terrain differ diff --git a/public/terrain/18/429239/176964.terrain b/public/terrain/18/429239/176964.terrain new file mode 100644 index 000000000..ed6422d93 Binary files /dev/null and b/public/terrain/18/429239/176964.terrain differ diff --git a/public/terrain/18/429239/176965.terrain b/public/terrain/18/429239/176965.terrain new file mode 100644 index 000000000..db28feb80 Binary files /dev/null and b/public/terrain/18/429239/176965.terrain differ diff --git a/public/terrain/18/429239/176966.terrain b/public/terrain/18/429239/176966.terrain new file mode 100644 index 000000000..f0fa69a61 Binary files /dev/null and b/public/terrain/18/429239/176966.terrain differ diff --git a/public/terrain/18/429239/176967.terrain b/public/terrain/18/429239/176967.terrain new file mode 100644 index 000000000..43d2a7843 Binary files /dev/null and b/public/terrain/18/429239/176967.terrain differ diff --git a/public/terrain/18/429239/176968.terrain b/public/terrain/18/429239/176968.terrain new file mode 100644 index 000000000..0a9511ea9 Binary files /dev/null and b/public/terrain/18/429239/176968.terrain differ diff --git a/public/terrain/18/429239/176969.terrain b/public/terrain/18/429239/176969.terrain new file mode 100644 index 000000000..7c2a535d8 Binary files /dev/null and b/public/terrain/18/429239/176969.terrain differ diff --git a/public/terrain/18/429239/176970.terrain b/public/terrain/18/429239/176970.terrain new file mode 100644 index 000000000..c86cb93e0 Binary files /dev/null and b/public/terrain/18/429239/176970.terrain differ diff --git a/public/terrain/18/429239/176971.terrain b/public/terrain/18/429239/176971.terrain new file mode 100644 index 000000000..77150710a Binary files /dev/null and b/public/terrain/18/429239/176971.terrain differ diff --git a/public/terrain/18/429239/176972.terrain b/public/terrain/18/429239/176972.terrain new file mode 100644 index 000000000..ac18f0a0c Binary files /dev/null and b/public/terrain/18/429239/176972.terrain differ diff --git a/public/terrain/18/429239/176973.terrain b/public/terrain/18/429239/176973.terrain new file mode 100644 index 000000000..9b063a47e Binary files /dev/null and b/public/terrain/18/429239/176973.terrain differ diff --git a/public/terrain/18/429239/176974.terrain b/public/terrain/18/429239/176974.terrain new file mode 100644 index 000000000..c89b7eafc Binary files /dev/null and b/public/terrain/18/429239/176974.terrain differ diff --git a/public/terrain/18/429239/176975.terrain b/public/terrain/18/429239/176975.terrain new file mode 100644 index 000000000..69eea301a Binary files /dev/null and b/public/terrain/18/429239/176975.terrain differ diff --git a/public/terrain/18/429239/176976.terrain b/public/terrain/18/429239/176976.terrain new file mode 100644 index 000000000..008bc5558 Binary files /dev/null and b/public/terrain/18/429239/176976.terrain differ diff --git a/public/terrain/18/429239/176977.terrain b/public/terrain/18/429239/176977.terrain new file mode 100644 index 000000000..e985a07f3 Binary files /dev/null and b/public/terrain/18/429239/176977.terrain differ diff --git a/public/terrain/18/429239/176978.terrain b/public/terrain/18/429239/176978.terrain new file mode 100644 index 000000000..48a44d287 Binary files /dev/null and b/public/terrain/18/429239/176978.terrain differ diff --git a/public/terrain/18/429239/176979.terrain b/public/terrain/18/429239/176979.terrain new file mode 100644 index 000000000..76d455fdc Binary files /dev/null and b/public/terrain/18/429239/176979.terrain differ diff --git a/public/terrain/18/429239/176980.terrain b/public/terrain/18/429239/176980.terrain new file mode 100644 index 000000000..43d438bd5 Binary files /dev/null and b/public/terrain/18/429239/176980.terrain differ diff --git a/public/terrain/18/429239/176981.terrain b/public/terrain/18/429239/176981.terrain new file mode 100644 index 000000000..80317dec4 Binary files /dev/null and b/public/terrain/18/429239/176981.terrain differ diff --git a/public/terrain/18/429239/176982.terrain b/public/terrain/18/429239/176982.terrain new file mode 100644 index 000000000..acc46de72 Binary files /dev/null and b/public/terrain/18/429239/176982.terrain differ diff --git a/public/terrain/18/429239/176983.terrain b/public/terrain/18/429239/176983.terrain new file mode 100644 index 000000000..750ba9e3c Binary files /dev/null and b/public/terrain/18/429239/176983.terrain differ diff --git a/public/terrain/18/429239/176984.terrain b/public/terrain/18/429239/176984.terrain new file mode 100644 index 000000000..6c5fbe9e2 Binary files /dev/null and b/public/terrain/18/429239/176984.terrain differ diff --git a/public/terrain/18/429239/176985.terrain b/public/terrain/18/429239/176985.terrain new file mode 100644 index 000000000..580f7be17 Binary files /dev/null and b/public/terrain/18/429239/176985.terrain differ diff --git a/public/terrain/18/429239/176986.terrain b/public/terrain/18/429239/176986.terrain new file mode 100644 index 000000000..1444c0a53 Binary files /dev/null and b/public/terrain/18/429239/176986.terrain differ diff --git a/public/terrain/18/429239/176987.terrain b/public/terrain/18/429239/176987.terrain new file mode 100644 index 000000000..b2db26de3 Binary files /dev/null and b/public/terrain/18/429239/176987.terrain differ diff --git a/public/terrain/18/429239/176988.terrain b/public/terrain/18/429239/176988.terrain new file mode 100644 index 000000000..2f6256a9a Binary files /dev/null and b/public/terrain/18/429239/176988.terrain differ diff --git a/public/terrain/18/429239/176989.terrain b/public/terrain/18/429239/176989.terrain new file mode 100644 index 000000000..e5cdb67bb Binary files /dev/null and b/public/terrain/18/429239/176989.terrain differ diff --git a/public/terrain/18/429239/176990.terrain b/public/terrain/18/429239/176990.terrain new file mode 100644 index 000000000..70adfc74f Binary files /dev/null and b/public/terrain/18/429239/176990.terrain differ diff --git a/public/terrain/18/429239/176991.terrain b/public/terrain/18/429239/176991.terrain new file mode 100644 index 000000000..e2f65f944 Binary files /dev/null and b/public/terrain/18/429239/176991.terrain differ diff --git a/public/terrain/18/429239/176992.terrain b/public/terrain/18/429239/176992.terrain new file mode 100644 index 000000000..a3a7dc052 Binary files /dev/null and b/public/terrain/18/429239/176992.terrain differ diff --git a/public/terrain/18/429239/176993.terrain b/public/terrain/18/429239/176993.terrain new file mode 100644 index 000000000..b5feae885 Binary files /dev/null and b/public/terrain/18/429239/176993.terrain differ diff --git a/public/terrain/18/429239/176994.terrain b/public/terrain/18/429239/176994.terrain new file mode 100644 index 000000000..94a55cffe Binary files /dev/null and b/public/terrain/18/429239/176994.terrain differ diff --git a/public/terrain/18/429239/176995.terrain b/public/terrain/18/429239/176995.terrain new file mode 100644 index 000000000..aae3b9e2e Binary files /dev/null and b/public/terrain/18/429239/176995.terrain differ diff --git a/public/terrain/18/429239/176996.terrain b/public/terrain/18/429239/176996.terrain new file mode 100644 index 000000000..2e7b73808 Binary files /dev/null and b/public/terrain/18/429239/176996.terrain differ diff --git a/public/terrain/18/429239/176997.terrain b/public/terrain/18/429239/176997.terrain new file mode 100644 index 000000000..7d15945e2 Binary files /dev/null and b/public/terrain/18/429239/176997.terrain differ diff --git a/public/terrain/18/429239/176998.terrain b/public/terrain/18/429239/176998.terrain new file mode 100644 index 000000000..fee0bba14 Binary files /dev/null and b/public/terrain/18/429239/176998.terrain differ diff --git a/public/terrain/18/429239/176999.terrain b/public/terrain/18/429239/176999.terrain new file mode 100644 index 000000000..670f98b73 Binary files /dev/null and b/public/terrain/18/429239/176999.terrain differ diff --git a/public/terrain/18/429239/177000.terrain b/public/terrain/18/429239/177000.terrain new file mode 100644 index 000000000..acc6bb81c Binary files /dev/null and b/public/terrain/18/429239/177000.terrain differ diff --git a/public/terrain/18/429239/177001.terrain b/public/terrain/18/429239/177001.terrain new file mode 100644 index 000000000..2ebb37d25 Binary files /dev/null and b/public/terrain/18/429239/177001.terrain differ diff --git a/public/terrain/18/429239/177002.terrain b/public/terrain/18/429239/177002.terrain new file mode 100644 index 000000000..ac8ff0b37 Binary files /dev/null and b/public/terrain/18/429239/177002.terrain differ diff --git a/public/terrain/18/429239/177003.terrain b/public/terrain/18/429239/177003.terrain new file mode 100644 index 000000000..dde56729e Binary files /dev/null and b/public/terrain/18/429239/177003.terrain differ diff --git a/public/terrain/18/429239/177004.terrain b/public/terrain/18/429239/177004.terrain new file mode 100644 index 000000000..a1533b773 Binary files /dev/null and b/public/terrain/18/429239/177004.terrain differ diff --git a/public/terrain/18/429239/177005.terrain b/public/terrain/18/429239/177005.terrain new file mode 100644 index 000000000..36cd59dcc Binary files /dev/null and b/public/terrain/18/429239/177005.terrain differ diff --git a/public/terrain/18/429239/177006.terrain b/public/terrain/18/429239/177006.terrain new file mode 100644 index 000000000..f21d5c672 Binary files /dev/null and b/public/terrain/18/429239/177006.terrain differ diff --git a/public/terrain/18/429239/177007.terrain b/public/terrain/18/429239/177007.terrain new file mode 100644 index 000000000..7c0d7046d Binary files /dev/null and b/public/terrain/18/429239/177007.terrain differ diff --git a/public/terrain/18/429239/177008.terrain b/public/terrain/18/429239/177008.terrain new file mode 100644 index 000000000..ca6cb6e8f Binary files /dev/null and b/public/terrain/18/429239/177008.terrain differ diff --git a/public/terrain/18/429239/177009.terrain b/public/terrain/18/429239/177009.terrain new file mode 100644 index 000000000..cb9d776fd Binary files /dev/null and b/public/terrain/18/429239/177009.terrain differ diff --git a/public/terrain/18/429239/177010.terrain b/public/terrain/18/429239/177010.terrain new file mode 100644 index 000000000..e7912240c Binary files /dev/null and b/public/terrain/18/429239/177010.terrain differ diff --git a/public/terrain/18/429239/177011.terrain b/public/terrain/18/429239/177011.terrain new file mode 100644 index 000000000..3f7d5498a Binary files /dev/null and b/public/terrain/18/429239/177011.terrain differ diff --git a/public/terrain/18/429239/177012.terrain b/public/terrain/18/429239/177012.terrain new file mode 100644 index 000000000..683f754c6 Binary files /dev/null and b/public/terrain/18/429239/177012.terrain differ diff --git a/public/terrain/18/429239/177013.terrain b/public/terrain/18/429239/177013.terrain new file mode 100644 index 000000000..d11af8055 Binary files /dev/null and b/public/terrain/18/429239/177013.terrain differ diff --git a/public/terrain/18/429239/177014.terrain b/public/terrain/18/429239/177014.terrain new file mode 100644 index 000000000..1bc67fb15 Binary files /dev/null and b/public/terrain/18/429239/177014.terrain differ diff --git a/public/terrain/18/429239/177015.terrain b/public/terrain/18/429239/177015.terrain new file mode 100644 index 000000000..d8d279a6e Binary files /dev/null and b/public/terrain/18/429239/177015.terrain differ diff --git a/public/terrain/18/429239/177016.terrain b/public/terrain/18/429239/177016.terrain new file mode 100644 index 000000000..62ef6f5a8 Binary files /dev/null and b/public/terrain/18/429239/177016.terrain differ diff --git a/public/terrain/18/429239/177017.terrain b/public/terrain/18/429239/177017.terrain new file mode 100644 index 000000000..79b93d926 Binary files /dev/null and b/public/terrain/18/429239/177017.terrain differ diff --git a/public/terrain/18/429239/177018.terrain b/public/terrain/18/429239/177018.terrain new file mode 100644 index 000000000..ae83482d5 Binary files /dev/null and b/public/terrain/18/429239/177018.terrain differ diff --git a/public/terrain/18/429239/177019.terrain b/public/terrain/18/429239/177019.terrain new file mode 100644 index 000000000..3e0d99849 Binary files /dev/null and b/public/terrain/18/429239/177019.terrain differ diff --git a/public/terrain/18/429239/177020.terrain b/public/terrain/18/429239/177020.terrain new file mode 100644 index 000000000..efe49fb44 Binary files /dev/null and b/public/terrain/18/429239/177020.terrain differ diff --git a/public/terrain/18/429239/177021.terrain b/public/terrain/18/429239/177021.terrain new file mode 100644 index 000000000..00a162013 Binary files /dev/null and b/public/terrain/18/429239/177021.terrain differ diff --git a/public/terrain/18/429239/177022.terrain b/public/terrain/18/429239/177022.terrain new file mode 100644 index 000000000..56cf4fdca Binary files /dev/null and b/public/terrain/18/429239/177022.terrain differ diff --git a/public/terrain/18/429239/177023.terrain b/public/terrain/18/429239/177023.terrain new file mode 100644 index 000000000..de6ae98ed Binary files /dev/null and b/public/terrain/18/429239/177023.terrain differ diff --git a/public/terrain/18/429239/177024.terrain b/public/terrain/18/429239/177024.terrain new file mode 100644 index 000000000..74dddfd4e Binary files /dev/null and b/public/terrain/18/429239/177024.terrain differ diff --git a/public/terrain/18/429239/177025.terrain b/public/terrain/18/429239/177025.terrain new file mode 100644 index 000000000..41e94d7ec Binary files /dev/null and b/public/terrain/18/429239/177025.terrain differ diff --git a/public/terrain/18/429239/177026.terrain b/public/terrain/18/429239/177026.terrain new file mode 100644 index 000000000..f158db323 Binary files /dev/null and b/public/terrain/18/429239/177026.terrain differ diff --git a/public/terrain/18/429239/177027.terrain b/public/terrain/18/429239/177027.terrain new file mode 100644 index 000000000..edd855f98 Binary files /dev/null and b/public/terrain/18/429239/177027.terrain differ diff --git a/public/terrain/18/429239/177028.terrain b/public/terrain/18/429239/177028.terrain new file mode 100644 index 000000000..729da8332 Binary files /dev/null and b/public/terrain/18/429239/177028.terrain differ diff --git a/public/terrain/18/429239/177029.terrain b/public/terrain/18/429239/177029.terrain new file mode 100644 index 000000000..053143372 Binary files /dev/null and b/public/terrain/18/429239/177029.terrain differ diff --git a/public/terrain/18/429240/176871.terrain b/public/terrain/18/429240/176871.terrain new file mode 100644 index 000000000..acf3055cb Binary files /dev/null and b/public/terrain/18/429240/176871.terrain differ diff --git a/public/terrain/18/429240/176872.terrain b/public/terrain/18/429240/176872.terrain new file mode 100644 index 000000000..fed7175ff Binary files /dev/null and b/public/terrain/18/429240/176872.terrain differ diff --git a/public/terrain/18/429240/176873.terrain b/public/terrain/18/429240/176873.terrain new file mode 100644 index 000000000..4ebafaaa8 Binary files /dev/null and b/public/terrain/18/429240/176873.terrain differ diff --git a/public/terrain/18/429240/176874.terrain b/public/terrain/18/429240/176874.terrain new file mode 100644 index 000000000..70dcf13a6 Binary files /dev/null and b/public/terrain/18/429240/176874.terrain differ diff --git a/public/terrain/18/429240/176875.terrain b/public/terrain/18/429240/176875.terrain new file mode 100644 index 000000000..17196e6e2 Binary files /dev/null and b/public/terrain/18/429240/176875.terrain differ diff --git a/public/terrain/18/429240/176876.terrain b/public/terrain/18/429240/176876.terrain new file mode 100644 index 000000000..965880f88 Binary files /dev/null and b/public/terrain/18/429240/176876.terrain differ diff --git a/public/terrain/18/429240/176877.terrain b/public/terrain/18/429240/176877.terrain new file mode 100644 index 000000000..68fdaa5e5 Binary files /dev/null and b/public/terrain/18/429240/176877.terrain differ diff --git a/public/terrain/18/429240/176878.terrain b/public/terrain/18/429240/176878.terrain new file mode 100644 index 000000000..8f52202f6 Binary files /dev/null and b/public/terrain/18/429240/176878.terrain differ diff --git a/public/terrain/18/429240/176879.terrain b/public/terrain/18/429240/176879.terrain new file mode 100644 index 000000000..d46470ac1 Binary files /dev/null and b/public/terrain/18/429240/176879.terrain differ diff --git a/public/terrain/18/429240/176880.terrain b/public/terrain/18/429240/176880.terrain new file mode 100644 index 000000000..1b9eba3b6 Binary files /dev/null and b/public/terrain/18/429240/176880.terrain differ diff --git a/public/terrain/18/429240/176881.terrain b/public/terrain/18/429240/176881.terrain new file mode 100644 index 000000000..d3b843e3b Binary files /dev/null and b/public/terrain/18/429240/176881.terrain differ diff --git a/public/terrain/18/429240/176882.terrain b/public/terrain/18/429240/176882.terrain new file mode 100644 index 000000000..8d1d7e262 Binary files /dev/null and b/public/terrain/18/429240/176882.terrain differ diff --git a/public/terrain/18/429240/176883.terrain b/public/terrain/18/429240/176883.terrain new file mode 100644 index 000000000..b645badf4 Binary files /dev/null and b/public/terrain/18/429240/176883.terrain differ diff --git a/public/terrain/18/429240/176884.terrain b/public/terrain/18/429240/176884.terrain new file mode 100644 index 000000000..dd80b5cb1 Binary files /dev/null and b/public/terrain/18/429240/176884.terrain differ diff --git a/public/terrain/18/429240/176885.terrain b/public/terrain/18/429240/176885.terrain new file mode 100644 index 000000000..8d4ceb6d7 Binary files /dev/null and b/public/terrain/18/429240/176885.terrain differ diff --git a/public/terrain/18/429240/176886.terrain b/public/terrain/18/429240/176886.terrain new file mode 100644 index 000000000..475ff029f Binary files /dev/null and b/public/terrain/18/429240/176886.terrain differ diff --git a/public/terrain/18/429240/176887.terrain b/public/terrain/18/429240/176887.terrain new file mode 100644 index 000000000..ae7f32e05 Binary files /dev/null and b/public/terrain/18/429240/176887.terrain differ diff --git a/public/terrain/18/429240/176888.terrain b/public/terrain/18/429240/176888.terrain new file mode 100644 index 000000000..591e7e220 Binary files /dev/null and b/public/terrain/18/429240/176888.terrain differ diff --git a/public/terrain/18/429240/176889.terrain b/public/terrain/18/429240/176889.terrain new file mode 100644 index 000000000..c8b677b43 Binary files /dev/null and b/public/terrain/18/429240/176889.terrain differ diff --git a/public/terrain/18/429240/176890.terrain b/public/terrain/18/429240/176890.terrain new file mode 100644 index 000000000..485a53a15 Binary files /dev/null and b/public/terrain/18/429240/176890.terrain differ diff --git a/public/terrain/18/429240/176891.terrain b/public/terrain/18/429240/176891.terrain new file mode 100644 index 000000000..00cde4cc1 Binary files /dev/null and b/public/terrain/18/429240/176891.terrain differ diff --git a/public/terrain/18/429240/176892.terrain b/public/terrain/18/429240/176892.terrain new file mode 100644 index 000000000..a7a783c7e Binary files /dev/null and b/public/terrain/18/429240/176892.terrain differ diff --git a/public/terrain/18/429240/176893.terrain b/public/terrain/18/429240/176893.terrain new file mode 100644 index 000000000..5862148d0 Binary files /dev/null and b/public/terrain/18/429240/176893.terrain differ diff --git a/public/terrain/18/429240/176894.terrain b/public/terrain/18/429240/176894.terrain new file mode 100644 index 000000000..c1d8b88a7 Binary files /dev/null and b/public/terrain/18/429240/176894.terrain differ diff --git a/public/terrain/18/429240/176895.terrain b/public/terrain/18/429240/176895.terrain new file mode 100644 index 000000000..109ae59ab Binary files /dev/null and b/public/terrain/18/429240/176895.terrain differ diff --git a/public/terrain/18/429240/176896.terrain b/public/terrain/18/429240/176896.terrain new file mode 100644 index 000000000..08cec4ee5 Binary files /dev/null and b/public/terrain/18/429240/176896.terrain differ diff --git a/public/terrain/18/429240/176897.terrain b/public/terrain/18/429240/176897.terrain new file mode 100644 index 000000000..cc17069e6 Binary files /dev/null and b/public/terrain/18/429240/176897.terrain differ diff --git a/public/terrain/18/429240/176898.terrain b/public/terrain/18/429240/176898.terrain new file mode 100644 index 000000000..404608503 Binary files /dev/null and b/public/terrain/18/429240/176898.terrain differ diff --git a/public/terrain/18/429240/176899.terrain b/public/terrain/18/429240/176899.terrain new file mode 100644 index 000000000..f0dd4558d Binary files /dev/null and b/public/terrain/18/429240/176899.terrain differ diff --git a/public/terrain/18/429240/176900.terrain b/public/terrain/18/429240/176900.terrain new file mode 100644 index 000000000..d69ee6c46 Binary files /dev/null and b/public/terrain/18/429240/176900.terrain differ diff --git a/public/terrain/18/429240/176901.terrain b/public/terrain/18/429240/176901.terrain new file mode 100644 index 000000000..14ad1c056 Binary files /dev/null and b/public/terrain/18/429240/176901.terrain differ diff --git a/public/terrain/18/429240/176902.terrain b/public/terrain/18/429240/176902.terrain new file mode 100644 index 000000000..bf95f0f16 Binary files /dev/null and b/public/terrain/18/429240/176902.terrain differ diff --git a/public/terrain/18/429240/176903.terrain b/public/terrain/18/429240/176903.terrain new file mode 100644 index 000000000..42dea168c Binary files /dev/null and b/public/terrain/18/429240/176903.terrain differ diff --git a/public/terrain/18/429240/176904.terrain b/public/terrain/18/429240/176904.terrain new file mode 100644 index 000000000..4faac0d43 Binary files /dev/null and b/public/terrain/18/429240/176904.terrain differ diff --git a/public/terrain/18/429240/176905.terrain b/public/terrain/18/429240/176905.terrain new file mode 100644 index 000000000..6da55bd55 Binary files /dev/null and b/public/terrain/18/429240/176905.terrain differ diff --git a/public/terrain/18/429240/176906.terrain b/public/terrain/18/429240/176906.terrain new file mode 100644 index 000000000..a45572619 Binary files /dev/null and b/public/terrain/18/429240/176906.terrain differ diff --git a/public/terrain/18/429240/176907.terrain b/public/terrain/18/429240/176907.terrain new file mode 100644 index 000000000..bd4a3716c Binary files /dev/null and b/public/terrain/18/429240/176907.terrain differ diff --git a/public/terrain/18/429240/176908.terrain b/public/terrain/18/429240/176908.terrain new file mode 100644 index 000000000..64b308192 Binary files /dev/null and b/public/terrain/18/429240/176908.terrain differ diff --git a/public/terrain/18/429240/176909.terrain b/public/terrain/18/429240/176909.terrain new file mode 100644 index 000000000..04b30db75 Binary files /dev/null and b/public/terrain/18/429240/176909.terrain differ diff --git a/public/terrain/18/429240/176910.terrain b/public/terrain/18/429240/176910.terrain new file mode 100644 index 000000000..95aa32dad Binary files /dev/null and b/public/terrain/18/429240/176910.terrain differ diff --git a/public/terrain/18/429240/176911.terrain b/public/terrain/18/429240/176911.terrain new file mode 100644 index 000000000..2da75d794 Binary files /dev/null and b/public/terrain/18/429240/176911.terrain differ diff --git a/public/terrain/18/429240/176912.terrain b/public/terrain/18/429240/176912.terrain new file mode 100644 index 000000000..a28076393 Binary files /dev/null and b/public/terrain/18/429240/176912.terrain differ diff --git a/public/terrain/18/429240/176913.terrain b/public/terrain/18/429240/176913.terrain new file mode 100644 index 000000000..e6dc83ab6 Binary files /dev/null and b/public/terrain/18/429240/176913.terrain differ diff --git a/public/terrain/18/429240/176914.terrain b/public/terrain/18/429240/176914.terrain new file mode 100644 index 000000000..cc80ed4ff Binary files /dev/null and b/public/terrain/18/429240/176914.terrain differ diff --git a/public/terrain/18/429240/176915.terrain b/public/terrain/18/429240/176915.terrain new file mode 100644 index 000000000..3ed23119e Binary files /dev/null and b/public/terrain/18/429240/176915.terrain differ diff --git a/public/terrain/18/429240/176916.terrain b/public/terrain/18/429240/176916.terrain new file mode 100644 index 000000000..f403f7fe7 Binary files /dev/null and b/public/terrain/18/429240/176916.terrain differ diff --git a/public/terrain/18/429240/176917.terrain b/public/terrain/18/429240/176917.terrain new file mode 100644 index 000000000..82d055d44 Binary files /dev/null and b/public/terrain/18/429240/176917.terrain differ diff --git a/public/terrain/18/429240/176918.terrain b/public/terrain/18/429240/176918.terrain new file mode 100644 index 000000000..a5916a22f Binary files /dev/null and b/public/terrain/18/429240/176918.terrain differ diff --git a/public/terrain/18/429240/176919.terrain b/public/terrain/18/429240/176919.terrain new file mode 100644 index 000000000..4a43b20a5 Binary files /dev/null and b/public/terrain/18/429240/176919.terrain differ diff --git a/public/terrain/18/429240/176920.terrain b/public/terrain/18/429240/176920.terrain new file mode 100644 index 000000000..5d7619581 Binary files /dev/null and b/public/terrain/18/429240/176920.terrain differ diff --git a/public/terrain/18/429240/176921.terrain b/public/terrain/18/429240/176921.terrain new file mode 100644 index 000000000..8256b2437 Binary files /dev/null and b/public/terrain/18/429240/176921.terrain differ diff --git a/public/terrain/18/429240/176922.terrain b/public/terrain/18/429240/176922.terrain new file mode 100644 index 000000000..236bae99c Binary files /dev/null and b/public/terrain/18/429240/176922.terrain differ diff --git a/public/terrain/18/429240/176923.terrain b/public/terrain/18/429240/176923.terrain new file mode 100644 index 000000000..b9b045fc9 Binary files /dev/null and b/public/terrain/18/429240/176923.terrain differ diff --git a/public/terrain/18/429240/176924.terrain b/public/terrain/18/429240/176924.terrain new file mode 100644 index 000000000..1594f31fc Binary files /dev/null and b/public/terrain/18/429240/176924.terrain differ diff --git a/public/terrain/18/429240/176925.terrain b/public/terrain/18/429240/176925.terrain new file mode 100644 index 000000000..d2e6159e7 Binary files /dev/null and b/public/terrain/18/429240/176925.terrain differ diff --git a/public/terrain/18/429240/176926.terrain b/public/terrain/18/429240/176926.terrain new file mode 100644 index 000000000..6d16a0690 Binary files /dev/null and b/public/terrain/18/429240/176926.terrain differ diff --git a/public/terrain/18/429240/176927.terrain b/public/terrain/18/429240/176927.terrain new file mode 100644 index 000000000..9735458d0 Binary files /dev/null and b/public/terrain/18/429240/176927.terrain differ diff --git a/public/terrain/18/429240/176928.terrain b/public/terrain/18/429240/176928.terrain new file mode 100644 index 000000000..8082ad5ba Binary files /dev/null and b/public/terrain/18/429240/176928.terrain differ diff --git a/public/terrain/18/429240/176929.terrain b/public/terrain/18/429240/176929.terrain new file mode 100644 index 000000000..441b81b2c Binary files /dev/null and b/public/terrain/18/429240/176929.terrain differ diff --git a/public/terrain/18/429240/176930.terrain b/public/terrain/18/429240/176930.terrain new file mode 100644 index 000000000..355a81090 Binary files /dev/null and b/public/terrain/18/429240/176930.terrain differ diff --git a/public/terrain/18/429240/176931.terrain b/public/terrain/18/429240/176931.terrain new file mode 100644 index 000000000..d683ea052 Binary files /dev/null and b/public/terrain/18/429240/176931.terrain differ diff --git a/public/terrain/18/429240/176932.terrain b/public/terrain/18/429240/176932.terrain new file mode 100644 index 000000000..f22bafffc Binary files /dev/null and b/public/terrain/18/429240/176932.terrain differ diff --git a/public/terrain/18/429240/176933.terrain b/public/terrain/18/429240/176933.terrain new file mode 100644 index 000000000..bd9330fcb Binary files /dev/null and b/public/terrain/18/429240/176933.terrain differ diff --git a/public/terrain/18/429240/176934.terrain b/public/terrain/18/429240/176934.terrain new file mode 100644 index 000000000..95c3bae09 Binary files /dev/null and b/public/terrain/18/429240/176934.terrain differ diff --git a/public/terrain/18/429240/176935.terrain b/public/terrain/18/429240/176935.terrain new file mode 100644 index 000000000..0d4a2a154 Binary files /dev/null and b/public/terrain/18/429240/176935.terrain differ diff --git a/public/terrain/18/429240/176936.terrain b/public/terrain/18/429240/176936.terrain new file mode 100644 index 000000000..9f65b84db Binary files /dev/null and b/public/terrain/18/429240/176936.terrain differ diff --git a/public/terrain/18/429240/176937.terrain b/public/terrain/18/429240/176937.terrain new file mode 100644 index 000000000..2b73ee20b Binary files /dev/null and b/public/terrain/18/429240/176937.terrain differ diff --git a/public/terrain/18/429240/176938.terrain b/public/terrain/18/429240/176938.terrain new file mode 100644 index 000000000..1b3809655 Binary files /dev/null and b/public/terrain/18/429240/176938.terrain differ diff --git a/public/terrain/18/429240/176939.terrain b/public/terrain/18/429240/176939.terrain new file mode 100644 index 000000000..de2e38365 Binary files /dev/null and b/public/terrain/18/429240/176939.terrain differ diff --git a/public/terrain/18/429240/176940.terrain b/public/terrain/18/429240/176940.terrain new file mode 100644 index 000000000..e7a8698cd Binary files /dev/null and b/public/terrain/18/429240/176940.terrain differ diff --git a/public/terrain/18/429240/176941.terrain b/public/terrain/18/429240/176941.terrain new file mode 100644 index 000000000..d1606ce31 Binary files /dev/null and b/public/terrain/18/429240/176941.terrain differ diff --git a/public/terrain/18/429240/176942.terrain b/public/terrain/18/429240/176942.terrain new file mode 100644 index 000000000..2fd3e54e7 Binary files /dev/null and b/public/terrain/18/429240/176942.terrain differ diff --git a/public/terrain/18/429240/176943.terrain b/public/terrain/18/429240/176943.terrain new file mode 100644 index 000000000..474149780 Binary files /dev/null and b/public/terrain/18/429240/176943.terrain differ diff --git a/public/terrain/18/429240/176944.terrain b/public/terrain/18/429240/176944.terrain new file mode 100644 index 000000000..4e522ee59 Binary files /dev/null and b/public/terrain/18/429240/176944.terrain differ diff --git a/public/terrain/18/429240/176945.terrain b/public/terrain/18/429240/176945.terrain new file mode 100644 index 000000000..a5d542e01 Binary files /dev/null and b/public/terrain/18/429240/176945.terrain differ diff --git a/public/terrain/18/429240/176946.terrain b/public/terrain/18/429240/176946.terrain new file mode 100644 index 000000000..3aa3c4fff Binary files /dev/null and b/public/terrain/18/429240/176946.terrain differ diff --git a/public/terrain/18/429240/176947.terrain b/public/terrain/18/429240/176947.terrain new file mode 100644 index 000000000..4c2d9d5fd Binary files /dev/null and b/public/terrain/18/429240/176947.terrain differ diff --git a/public/terrain/18/429240/176948.terrain b/public/terrain/18/429240/176948.terrain new file mode 100644 index 000000000..72c5e13a2 Binary files /dev/null and b/public/terrain/18/429240/176948.terrain differ diff --git a/public/terrain/18/429240/176949.terrain b/public/terrain/18/429240/176949.terrain new file mode 100644 index 000000000..a629523d4 Binary files /dev/null and b/public/terrain/18/429240/176949.terrain differ diff --git a/public/terrain/18/429240/176950.terrain b/public/terrain/18/429240/176950.terrain new file mode 100644 index 000000000..a060a1762 Binary files /dev/null and b/public/terrain/18/429240/176950.terrain differ diff --git a/public/terrain/18/429240/176951.terrain b/public/terrain/18/429240/176951.terrain new file mode 100644 index 000000000..902ff155b Binary files /dev/null and b/public/terrain/18/429240/176951.terrain differ diff --git a/public/terrain/18/429240/176952.terrain b/public/terrain/18/429240/176952.terrain new file mode 100644 index 000000000..1d97657ab Binary files /dev/null and b/public/terrain/18/429240/176952.terrain differ diff --git a/public/terrain/18/429240/176953.terrain b/public/terrain/18/429240/176953.terrain new file mode 100644 index 000000000..cde8642d3 Binary files /dev/null and b/public/terrain/18/429240/176953.terrain differ diff --git a/public/terrain/18/429240/176954.terrain b/public/terrain/18/429240/176954.terrain new file mode 100644 index 000000000..1a99f1a21 Binary files /dev/null and b/public/terrain/18/429240/176954.terrain differ diff --git a/public/terrain/18/429240/176955.terrain b/public/terrain/18/429240/176955.terrain new file mode 100644 index 000000000..9f4ebcf2f Binary files /dev/null and b/public/terrain/18/429240/176955.terrain differ diff --git a/public/terrain/18/429240/176956.terrain b/public/terrain/18/429240/176956.terrain new file mode 100644 index 000000000..2d20dbf36 Binary files /dev/null and b/public/terrain/18/429240/176956.terrain differ diff --git a/public/terrain/18/429240/176957.terrain b/public/terrain/18/429240/176957.terrain new file mode 100644 index 000000000..5bfb97d19 Binary files /dev/null and b/public/terrain/18/429240/176957.terrain differ diff --git a/public/terrain/18/429240/176958.terrain b/public/terrain/18/429240/176958.terrain new file mode 100644 index 000000000..4104d2b91 Binary files /dev/null and b/public/terrain/18/429240/176958.terrain differ diff --git a/public/terrain/18/429240/176959.terrain b/public/terrain/18/429240/176959.terrain new file mode 100644 index 000000000..e52fa8a3f Binary files /dev/null and b/public/terrain/18/429240/176959.terrain differ diff --git a/public/terrain/18/429240/176960.terrain b/public/terrain/18/429240/176960.terrain new file mode 100644 index 000000000..9ab94da8e Binary files /dev/null and b/public/terrain/18/429240/176960.terrain differ diff --git a/public/terrain/18/429240/176961.terrain b/public/terrain/18/429240/176961.terrain new file mode 100644 index 000000000..d41c6090d Binary files /dev/null and b/public/terrain/18/429240/176961.terrain differ diff --git a/public/terrain/18/429240/176962.terrain b/public/terrain/18/429240/176962.terrain new file mode 100644 index 000000000..1622e2d58 Binary files /dev/null and b/public/terrain/18/429240/176962.terrain differ diff --git a/public/terrain/18/429240/176963.terrain b/public/terrain/18/429240/176963.terrain new file mode 100644 index 000000000..4eabbd1b4 Binary files /dev/null and b/public/terrain/18/429240/176963.terrain differ diff --git a/public/terrain/18/429240/176964.terrain b/public/terrain/18/429240/176964.terrain new file mode 100644 index 000000000..d33ae8b9f Binary files /dev/null and b/public/terrain/18/429240/176964.terrain differ diff --git a/public/terrain/18/429240/176965.terrain b/public/terrain/18/429240/176965.terrain new file mode 100644 index 000000000..0692d03e5 Binary files /dev/null and b/public/terrain/18/429240/176965.terrain differ diff --git a/public/terrain/18/429240/176966.terrain b/public/terrain/18/429240/176966.terrain new file mode 100644 index 000000000..db2457258 Binary files /dev/null and b/public/terrain/18/429240/176966.terrain differ diff --git a/public/terrain/18/429240/176967.terrain b/public/terrain/18/429240/176967.terrain new file mode 100644 index 000000000..df4d1da6c Binary files /dev/null and b/public/terrain/18/429240/176967.terrain differ diff --git a/public/terrain/18/429240/176968.terrain b/public/terrain/18/429240/176968.terrain new file mode 100644 index 000000000..ddd88e05f Binary files /dev/null and b/public/terrain/18/429240/176968.terrain differ diff --git a/public/terrain/18/429240/176969.terrain b/public/terrain/18/429240/176969.terrain new file mode 100644 index 000000000..000f87453 Binary files /dev/null and b/public/terrain/18/429240/176969.terrain differ diff --git a/public/terrain/18/429240/176970.terrain b/public/terrain/18/429240/176970.terrain new file mode 100644 index 000000000..4e8826317 Binary files /dev/null and b/public/terrain/18/429240/176970.terrain differ diff --git a/public/terrain/18/429240/176971.terrain b/public/terrain/18/429240/176971.terrain new file mode 100644 index 000000000..5afd5cc79 Binary files /dev/null and b/public/terrain/18/429240/176971.terrain differ diff --git a/public/terrain/18/429240/176972.terrain b/public/terrain/18/429240/176972.terrain new file mode 100644 index 000000000..3cde7348e Binary files /dev/null and b/public/terrain/18/429240/176972.terrain differ diff --git a/public/terrain/18/429240/176973.terrain b/public/terrain/18/429240/176973.terrain new file mode 100644 index 000000000..e933967e6 Binary files /dev/null and b/public/terrain/18/429240/176973.terrain differ diff --git a/public/terrain/18/429240/176974.terrain b/public/terrain/18/429240/176974.terrain new file mode 100644 index 000000000..4f698bb85 Binary files /dev/null and b/public/terrain/18/429240/176974.terrain differ diff --git a/public/terrain/18/429240/176975.terrain b/public/terrain/18/429240/176975.terrain new file mode 100644 index 000000000..1ca511dde Binary files /dev/null and b/public/terrain/18/429240/176975.terrain differ diff --git a/public/terrain/18/429240/176976.terrain b/public/terrain/18/429240/176976.terrain new file mode 100644 index 000000000..7e8a6163e Binary files /dev/null and b/public/terrain/18/429240/176976.terrain differ diff --git a/public/terrain/18/429240/176977.terrain b/public/terrain/18/429240/176977.terrain new file mode 100644 index 000000000..a54bdaebe Binary files /dev/null and b/public/terrain/18/429240/176977.terrain differ diff --git a/public/terrain/18/429240/176978.terrain b/public/terrain/18/429240/176978.terrain new file mode 100644 index 000000000..4248a1451 Binary files /dev/null and b/public/terrain/18/429240/176978.terrain differ diff --git a/public/terrain/18/429240/176979.terrain b/public/terrain/18/429240/176979.terrain new file mode 100644 index 000000000..916172cff Binary files /dev/null and b/public/terrain/18/429240/176979.terrain differ diff --git a/public/terrain/18/429240/176980.terrain b/public/terrain/18/429240/176980.terrain new file mode 100644 index 000000000..533ba1d66 Binary files /dev/null and b/public/terrain/18/429240/176980.terrain differ diff --git a/public/terrain/18/429240/176981.terrain b/public/terrain/18/429240/176981.terrain new file mode 100644 index 000000000..6abd58e02 Binary files /dev/null and b/public/terrain/18/429240/176981.terrain differ diff --git a/public/terrain/18/429240/176982.terrain b/public/terrain/18/429240/176982.terrain new file mode 100644 index 000000000..fc125037f Binary files /dev/null and b/public/terrain/18/429240/176982.terrain differ diff --git a/public/terrain/18/429240/176983.terrain b/public/terrain/18/429240/176983.terrain new file mode 100644 index 000000000..797a8e6ad Binary files /dev/null and b/public/terrain/18/429240/176983.terrain differ diff --git a/public/terrain/18/429240/176984.terrain b/public/terrain/18/429240/176984.terrain new file mode 100644 index 000000000..faf0397dc Binary files /dev/null and b/public/terrain/18/429240/176984.terrain differ diff --git a/public/terrain/18/429240/176985.terrain b/public/terrain/18/429240/176985.terrain new file mode 100644 index 000000000..1c2bd5445 Binary files /dev/null and b/public/terrain/18/429240/176985.terrain differ diff --git a/public/terrain/18/429240/176986.terrain b/public/terrain/18/429240/176986.terrain new file mode 100644 index 000000000..20f26c90e Binary files /dev/null and b/public/terrain/18/429240/176986.terrain differ diff --git a/public/terrain/18/429240/176987.terrain b/public/terrain/18/429240/176987.terrain new file mode 100644 index 000000000..41cb86362 Binary files /dev/null and b/public/terrain/18/429240/176987.terrain differ diff --git a/public/terrain/18/429240/176988.terrain b/public/terrain/18/429240/176988.terrain new file mode 100644 index 000000000..296033c85 Binary files /dev/null and b/public/terrain/18/429240/176988.terrain differ diff --git a/public/terrain/18/429240/176989.terrain b/public/terrain/18/429240/176989.terrain new file mode 100644 index 000000000..994128a5f Binary files /dev/null and b/public/terrain/18/429240/176989.terrain differ diff --git a/public/terrain/18/429240/176990.terrain b/public/terrain/18/429240/176990.terrain new file mode 100644 index 000000000..e8f1835e1 Binary files /dev/null and b/public/terrain/18/429240/176990.terrain differ diff --git a/public/terrain/18/429240/176991.terrain b/public/terrain/18/429240/176991.terrain new file mode 100644 index 000000000..17998e6e4 Binary files /dev/null and b/public/terrain/18/429240/176991.terrain differ diff --git a/public/terrain/18/429240/176992.terrain b/public/terrain/18/429240/176992.terrain new file mode 100644 index 000000000..00bc0537a Binary files /dev/null and b/public/terrain/18/429240/176992.terrain differ diff --git a/public/terrain/18/429240/176993.terrain b/public/terrain/18/429240/176993.terrain new file mode 100644 index 000000000..f69cc1243 Binary files /dev/null and b/public/terrain/18/429240/176993.terrain differ diff --git a/public/terrain/18/429240/176994.terrain b/public/terrain/18/429240/176994.terrain new file mode 100644 index 000000000..25f78d41f Binary files /dev/null and b/public/terrain/18/429240/176994.terrain differ diff --git a/public/terrain/18/429240/176995.terrain b/public/terrain/18/429240/176995.terrain new file mode 100644 index 000000000..567a3f69c Binary files /dev/null and b/public/terrain/18/429240/176995.terrain differ diff --git a/public/terrain/18/429240/176996.terrain b/public/terrain/18/429240/176996.terrain new file mode 100644 index 000000000..0484e6dd2 Binary files /dev/null and b/public/terrain/18/429240/176996.terrain differ diff --git a/public/terrain/18/429240/176997.terrain b/public/terrain/18/429240/176997.terrain new file mode 100644 index 000000000..259742bd9 Binary files /dev/null and b/public/terrain/18/429240/176997.terrain differ diff --git a/public/terrain/18/429240/176998.terrain b/public/terrain/18/429240/176998.terrain new file mode 100644 index 000000000..2d732d1f3 Binary files /dev/null and b/public/terrain/18/429240/176998.terrain differ diff --git a/public/terrain/18/429240/176999.terrain b/public/terrain/18/429240/176999.terrain new file mode 100644 index 000000000..1a128ed96 Binary files /dev/null and b/public/terrain/18/429240/176999.terrain differ diff --git a/public/terrain/18/429240/177000.terrain b/public/terrain/18/429240/177000.terrain new file mode 100644 index 000000000..8c20eb4c0 Binary files /dev/null and b/public/terrain/18/429240/177000.terrain differ diff --git a/public/terrain/18/429240/177001.terrain b/public/terrain/18/429240/177001.terrain new file mode 100644 index 000000000..514d2039f Binary files /dev/null and b/public/terrain/18/429240/177001.terrain differ diff --git a/public/terrain/18/429240/177002.terrain b/public/terrain/18/429240/177002.terrain new file mode 100644 index 000000000..0525f837a Binary files /dev/null and b/public/terrain/18/429240/177002.terrain differ diff --git a/public/terrain/18/429240/177003.terrain b/public/terrain/18/429240/177003.terrain new file mode 100644 index 000000000..df7ef8177 Binary files /dev/null and b/public/terrain/18/429240/177003.terrain differ diff --git a/public/terrain/18/429240/177004.terrain b/public/terrain/18/429240/177004.terrain new file mode 100644 index 000000000..ebba69809 Binary files /dev/null and b/public/terrain/18/429240/177004.terrain differ diff --git a/public/terrain/18/429240/177005.terrain b/public/terrain/18/429240/177005.terrain new file mode 100644 index 000000000..7415736f4 Binary files /dev/null and b/public/terrain/18/429240/177005.terrain differ diff --git a/public/terrain/18/429240/177006.terrain b/public/terrain/18/429240/177006.terrain new file mode 100644 index 000000000..47cfd8faf Binary files /dev/null and b/public/terrain/18/429240/177006.terrain differ diff --git a/public/terrain/18/429240/177007.terrain b/public/terrain/18/429240/177007.terrain new file mode 100644 index 000000000..fd64751cc Binary files /dev/null and b/public/terrain/18/429240/177007.terrain differ diff --git a/public/terrain/18/429240/177008.terrain b/public/terrain/18/429240/177008.terrain new file mode 100644 index 000000000..a15e9b622 Binary files /dev/null and b/public/terrain/18/429240/177008.terrain differ diff --git a/public/terrain/18/429240/177009.terrain b/public/terrain/18/429240/177009.terrain new file mode 100644 index 000000000..d7d5bc102 Binary files /dev/null and b/public/terrain/18/429240/177009.terrain differ diff --git a/public/terrain/18/429240/177010.terrain b/public/terrain/18/429240/177010.terrain new file mode 100644 index 000000000..ca5505374 Binary files /dev/null and b/public/terrain/18/429240/177010.terrain differ diff --git a/public/terrain/18/429240/177011.terrain b/public/terrain/18/429240/177011.terrain new file mode 100644 index 000000000..893550890 Binary files /dev/null and b/public/terrain/18/429240/177011.terrain differ diff --git a/public/terrain/18/429240/177012.terrain b/public/terrain/18/429240/177012.terrain new file mode 100644 index 000000000..e2f79f6da Binary files /dev/null and b/public/terrain/18/429240/177012.terrain differ diff --git a/public/terrain/18/429240/177013.terrain b/public/terrain/18/429240/177013.terrain new file mode 100644 index 000000000..aa8a1d8a0 Binary files /dev/null and b/public/terrain/18/429240/177013.terrain differ diff --git a/public/terrain/18/429240/177014.terrain b/public/terrain/18/429240/177014.terrain new file mode 100644 index 000000000..70418fefc Binary files /dev/null and b/public/terrain/18/429240/177014.terrain differ diff --git a/public/terrain/18/429240/177015.terrain b/public/terrain/18/429240/177015.terrain new file mode 100644 index 000000000..e17af8470 Binary files /dev/null and b/public/terrain/18/429240/177015.terrain differ diff --git a/public/terrain/18/429240/177016.terrain b/public/terrain/18/429240/177016.terrain new file mode 100644 index 000000000..096d89541 Binary files /dev/null and b/public/terrain/18/429240/177016.terrain differ diff --git a/public/terrain/18/429240/177017.terrain b/public/terrain/18/429240/177017.terrain new file mode 100644 index 000000000..474e50331 Binary files /dev/null and b/public/terrain/18/429240/177017.terrain differ diff --git a/public/terrain/18/429240/177018.terrain b/public/terrain/18/429240/177018.terrain new file mode 100644 index 000000000..83b5d97e1 Binary files /dev/null and b/public/terrain/18/429240/177018.terrain differ diff --git a/public/terrain/18/429240/177019.terrain b/public/terrain/18/429240/177019.terrain new file mode 100644 index 000000000..67d784ec8 Binary files /dev/null and b/public/terrain/18/429240/177019.terrain differ diff --git a/public/terrain/18/429240/177020.terrain b/public/terrain/18/429240/177020.terrain new file mode 100644 index 000000000..066a39204 Binary files /dev/null and b/public/terrain/18/429240/177020.terrain differ diff --git a/public/terrain/18/429240/177021.terrain b/public/terrain/18/429240/177021.terrain new file mode 100644 index 000000000..6978e0aa8 Binary files /dev/null and b/public/terrain/18/429240/177021.terrain differ diff --git a/public/terrain/18/429240/177022.terrain b/public/terrain/18/429240/177022.terrain new file mode 100644 index 000000000..11351e043 Binary files /dev/null and b/public/terrain/18/429240/177022.terrain differ diff --git a/public/terrain/18/429240/177023.terrain b/public/terrain/18/429240/177023.terrain new file mode 100644 index 000000000..3b361bf98 Binary files /dev/null and b/public/terrain/18/429240/177023.terrain differ diff --git a/public/terrain/18/429240/177024.terrain b/public/terrain/18/429240/177024.terrain new file mode 100644 index 000000000..b069108f0 Binary files /dev/null and b/public/terrain/18/429240/177024.terrain differ diff --git a/public/terrain/18/429240/177025.terrain b/public/terrain/18/429240/177025.terrain new file mode 100644 index 000000000..8d812e267 Binary files /dev/null and b/public/terrain/18/429240/177025.terrain differ diff --git a/public/terrain/18/429240/177026.terrain b/public/terrain/18/429240/177026.terrain new file mode 100644 index 000000000..83a07ed31 Binary files /dev/null and b/public/terrain/18/429240/177026.terrain differ diff --git a/public/terrain/18/429240/177027.terrain b/public/terrain/18/429240/177027.terrain new file mode 100644 index 000000000..1bf5887ed Binary files /dev/null and b/public/terrain/18/429240/177027.terrain differ diff --git a/public/terrain/18/429240/177028.terrain b/public/terrain/18/429240/177028.terrain new file mode 100644 index 000000000..5d2f5c87d Binary files /dev/null and b/public/terrain/18/429240/177028.terrain differ diff --git a/public/terrain/18/429240/177029.terrain b/public/terrain/18/429240/177029.terrain new file mode 100644 index 000000000..fb87aa69e Binary files /dev/null and b/public/terrain/18/429240/177029.terrain differ diff --git a/public/terrain/18/429241/176871.terrain b/public/terrain/18/429241/176871.terrain new file mode 100644 index 000000000..fd5130050 Binary files /dev/null and b/public/terrain/18/429241/176871.terrain differ diff --git a/public/terrain/18/429241/176872.terrain b/public/terrain/18/429241/176872.terrain new file mode 100644 index 000000000..38f42f427 Binary files /dev/null and b/public/terrain/18/429241/176872.terrain differ diff --git a/public/terrain/18/429241/176873.terrain b/public/terrain/18/429241/176873.terrain new file mode 100644 index 000000000..5971b40da Binary files /dev/null and b/public/terrain/18/429241/176873.terrain differ diff --git a/public/terrain/18/429241/176874.terrain b/public/terrain/18/429241/176874.terrain new file mode 100644 index 000000000..cf998fbe0 Binary files /dev/null and b/public/terrain/18/429241/176874.terrain differ diff --git a/public/terrain/18/429241/176875.terrain b/public/terrain/18/429241/176875.terrain new file mode 100644 index 000000000..bc87df2b6 Binary files /dev/null and b/public/terrain/18/429241/176875.terrain differ diff --git a/public/terrain/18/429241/176876.terrain b/public/terrain/18/429241/176876.terrain new file mode 100644 index 000000000..ff3f50cd6 Binary files /dev/null and b/public/terrain/18/429241/176876.terrain differ diff --git a/public/terrain/18/429241/176877.terrain b/public/terrain/18/429241/176877.terrain new file mode 100644 index 000000000..d775b7a81 Binary files /dev/null and b/public/terrain/18/429241/176877.terrain differ diff --git a/public/terrain/18/429241/176878.terrain b/public/terrain/18/429241/176878.terrain new file mode 100644 index 000000000..d2bc9fced Binary files /dev/null and b/public/terrain/18/429241/176878.terrain differ diff --git a/public/terrain/18/429241/176879.terrain b/public/terrain/18/429241/176879.terrain new file mode 100644 index 000000000..f0fa3ce28 Binary files /dev/null and b/public/terrain/18/429241/176879.terrain differ diff --git a/public/terrain/18/429241/176880.terrain b/public/terrain/18/429241/176880.terrain new file mode 100644 index 000000000..baf030ea7 Binary files /dev/null and b/public/terrain/18/429241/176880.terrain differ diff --git a/public/terrain/18/429241/176881.terrain b/public/terrain/18/429241/176881.terrain new file mode 100644 index 000000000..a8b048815 Binary files /dev/null and b/public/terrain/18/429241/176881.terrain differ diff --git a/public/terrain/18/429241/176882.terrain b/public/terrain/18/429241/176882.terrain new file mode 100644 index 000000000..9b24459ca Binary files /dev/null and b/public/terrain/18/429241/176882.terrain differ diff --git a/public/terrain/18/429241/176883.terrain b/public/terrain/18/429241/176883.terrain new file mode 100644 index 000000000..0f08273bc Binary files /dev/null and b/public/terrain/18/429241/176883.terrain differ diff --git a/public/terrain/18/429241/176884.terrain b/public/terrain/18/429241/176884.terrain new file mode 100644 index 000000000..3d9c891ab Binary files /dev/null and b/public/terrain/18/429241/176884.terrain differ diff --git a/public/terrain/18/429241/176885.terrain b/public/terrain/18/429241/176885.terrain new file mode 100644 index 000000000..f4b5c2337 Binary files /dev/null and b/public/terrain/18/429241/176885.terrain differ diff --git a/public/terrain/18/429241/176886.terrain b/public/terrain/18/429241/176886.terrain new file mode 100644 index 000000000..29131f1a8 Binary files /dev/null and b/public/terrain/18/429241/176886.terrain differ diff --git a/public/terrain/18/429241/176887.terrain b/public/terrain/18/429241/176887.terrain new file mode 100644 index 000000000..171c04314 Binary files /dev/null and b/public/terrain/18/429241/176887.terrain differ diff --git a/public/terrain/18/429241/176888.terrain b/public/terrain/18/429241/176888.terrain new file mode 100644 index 000000000..10a468c06 Binary files /dev/null and b/public/terrain/18/429241/176888.terrain differ diff --git a/public/terrain/18/429241/176889.terrain b/public/terrain/18/429241/176889.terrain new file mode 100644 index 000000000..455ba6757 Binary files /dev/null and b/public/terrain/18/429241/176889.terrain differ diff --git a/public/terrain/18/429241/176890.terrain b/public/terrain/18/429241/176890.terrain new file mode 100644 index 000000000..3752f301c Binary files /dev/null and b/public/terrain/18/429241/176890.terrain differ diff --git a/public/terrain/18/429241/176891.terrain b/public/terrain/18/429241/176891.terrain new file mode 100644 index 000000000..113b20b07 Binary files /dev/null and b/public/terrain/18/429241/176891.terrain differ diff --git a/public/terrain/18/429241/176892.terrain b/public/terrain/18/429241/176892.terrain new file mode 100644 index 000000000..ae98739d8 Binary files /dev/null and b/public/terrain/18/429241/176892.terrain differ diff --git a/public/terrain/18/429241/176893.terrain b/public/terrain/18/429241/176893.terrain new file mode 100644 index 000000000..b134f6f6b Binary files /dev/null and b/public/terrain/18/429241/176893.terrain differ diff --git a/public/terrain/18/429241/176894.terrain b/public/terrain/18/429241/176894.terrain new file mode 100644 index 000000000..d5234021f Binary files /dev/null and b/public/terrain/18/429241/176894.terrain differ diff --git a/public/terrain/18/429241/176895.terrain b/public/terrain/18/429241/176895.terrain new file mode 100644 index 000000000..f7460a2c1 Binary files /dev/null and b/public/terrain/18/429241/176895.terrain differ diff --git a/public/terrain/18/429241/176896.terrain b/public/terrain/18/429241/176896.terrain new file mode 100644 index 000000000..5dd3fa677 Binary files /dev/null and b/public/terrain/18/429241/176896.terrain differ diff --git a/public/terrain/18/429241/176897.terrain b/public/terrain/18/429241/176897.terrain new file mode 100644 index 000000000..6794b48d7 Binary files /dev/null and b/public/terrain/18/429241/176897.terrain differ diff --git a/public/terrain/18/429241/176898.terrain b/public/terrain/18/429241/176898.terrain new file mode 100644 index 000000000..8fd49e554 Binary files /dev/null and b/public/terrain/18/429241/176898.terrain differ diff --git a/public/terrain/18/429241/176899.terrain b/public/terrain/18/429241/176899.terrain new file mode 100644 index 000000000..38d14fe14 Binary files /dev/null and b/public/terrain/18/429241/176899.terrain differ diff --git a/public/terrain/18/429241/176900.terrain b/public/terrain/18/429241/176900.terrain new file mode 100644 index 000000000..31faf3ea7 Binary files /dev/null and b/public/terrain/18/429241/176900.terrain differ diff --git a/public/terrain/18/429241/176901.terrain b/public/terrain/18/429241/176901.terrain new file mode 100644 index 000000000..14d10fa6a Binary files /dev/null and b/public/terrain/18/429241/176901.terrain differ diff --git a/public/terrain/18/429241/176902.terrain b/public/terrain/18/429241/176902.terrain new file mode 100644 index 000000000..4b14877d0 Binary files /dev/null and b/public/terrain/18/429241/176902.terrain differ diff --git a/public/terrain/18/429241/176903.terrain b/public/terrain/18/429241/176903.terrain new file mode 100644 index 000000000..6b56cb6cb Binary files /dev/null and b/public/terrain/18/429241/176903.terrain differ diff --git a/public/terrain/18/429241/176904.terrain b/public/terrain/18/429241/176904.terrain new file mode 100644 index 000000000..408410def Binary files /dev/null and b/public/terrain/18/429241/176904.terrain differ diff --git a/public/terrain/18/429241/176905.terrain b/public/terrain/18/429241/176905.terrain new file mode 100644 index 000000000..42490ebe1 Binary files /dev/null and b/public/terrain/18/429241/176905.terrain differ diff --git a/public/terrain/18/429241/176906.terrain b/public/terrain/18/429241/176906.terrain new file mode 100644 index 000000000..b18a735d2 Binary files /dev/null and b/public/terrain/18/429241/176906.terrain differ diff --git a/public/terrain/18/429241/176907.terrain b/public/terrain/18/429241/176907.terrain new file mode 100644 index 000000000..9052009fe Binary files /dev/null and b/public/terrain/18/429241/176907.terrain differ diff --git a/public/terrain/18/429241/176908.terrain b/public/terrain/18/429241/176908.terrain new file mode 100644 index 000000000..de3b639f2 Binary files /dev/null and b/public/terrain/18/429241/176908.terrain differ diff --git a/public/terrain/18/429241/176909.terrain b/public/terrain/18/429241/176909.terrain new file mode 100644 index 000000000..610c6f483 Binary files /dev/null and b/public/terrain/18/429241/176909.terrain differ diff --git a/public/terrain/18/429241/176910.terrain b/public/terrain/18/429241/176910.terrain new file mode 100644 index 000000000..38d0ace39 Binary files /dev/null and b/public/terrain/18/429241/176910.terrain differ diff --git a/public/terrain/18/429241/176911.terrain b/public/terrain/18/429241/176911.terrain new file mode 100644 index 000000000..5774e13d9 Binary files /dev/null and b/public/terrain/18/429241/176911.terrain differ diff --git a/public/terrain/18/429241/176912.terrain b/public/terrain/18/429241/176912.terrain new file mode 100644 index 000000000..0b1b58604 Binary files /dev/null and b/public/terrain/18/429241/176912.terrain differ diff --git a/public/terrain/18/429241/176913.terrain b/public/terrain/18/429241/176913.terrain new file mode 100644 index 000000000..31b0f2191 Binary files /dev/null and b/public/terrain/18/429241/176913.terrain differ diff --git a/public/terrain/18/429241/176914.terrain b/public/terrain/18/429241/176914.terrain new file mode 100644 index 000000000..85cdb5dd5 Binary files /dev/null and b/public/terrain/18/429241/176914.terrain differ diff --git a/public/terrain/18/429241/176915.terrain b/public/terrain/18/429241/176915.terrain new file mode 100644 index 000000000..6159887f0 Binary files /dev/null and b/public/terrain/18/429241/176915.terrain differ diff --git a/public/terrain/18/429241/176916.terrain b/public/terrain/18/429241/176916.terrain new file mode 100644 index 000000000..7b43f83ca Binary files /dev/null and b/public/terrain/18/429241/176916.terrain differ diff --git a/public/terrain/18/429241/176917.terrain b/public/terrain/18/429241/176917.terrain new file mode 100644 index 000000000..19279bbe2 Binary files /dev/null and b/public/terrain/18/429241/176917.terrain differ diff --git a/public/terrain/18/429241/176918.terrain b/public/terrain/18/429241/176918.terrain new file mode 100644 index 000000000..2a4ea90c4 Binary files /dev/null and b/public/terrain/18/429241/176918.terrain differ diff --git a/public/terrain/18/429241/176919.terrain b/public/terrain/18/429241/176919.terrain new file mode 100644 index 000000000..f7992a320 Binary files /dev/null and b/public/terrain/18/429241/176919.terrain differ diff --git a/public/terrain/18/429241/176920.terrain b/public/terrain/18/429241/176920.terrain new file mode 100644 index 000000000..6d0af67c2 Binary files /dev/null and b/public/terrain/18/429241/176920.terrain differ diff --git a/public/terrain/18/429241/176921.terrain b/public/terrain/18/429241/176921.terrain new file mode 100644 index 000000000..d5e8ccb0b Binary files /dev/null and b/public/terrain/18/429241/176921.terrain differ diff --git a/public/terrain/18/429241/176922.terrain b/public/terrain/18/429241/176922.terrain new file mode 100644 index 000000000..c5f5f9f02 Binary files /dev/null and b/public/terrain/18/429241/176922.terrain differ diff --git a/public/terrain/18/429241/176923.terrain b/public/terrain/18/429241/176923.terrain new file mode 100644 index 000000000..085f73426 Binary files /dev/null and b/public/terrain/18/429241/176923.terrain differ diff --git a/public/terrain/18/429241/176924.terrain b/public/terrain/18/429241/176924.terrain new file mode 100644 index 000000000..93efa61d3 Binary files /dev/null and b/public/terrain/18/429241/176924.terrain differ diff --git a/public/terrain/18/429241/176925.terrain b/public/terrain/18/429241/176925.terrain new file mode 100644 index 000000000..2c91a39c1 Binary files /dev/null and b/public/terrain/18/429241/176925.terrain differ diff --git a/public/terrain/18/429241/176926.terrain b/public/terrain/18/429241/176926.terrain new file mode 100644 index 000000000..bf1e2c357 Binary files /dev/null and b/public/terrain/18/429241/176926.terrain differ diff --git a/public/terrain/18/429241/176927.terrain b/public/terrain/18/429241/176927.terrain new file mode 100644 index 000000000..80d1bea87 Binary files /dev/null and b/public/terrain/18/429241/176927.terrain differ diff --git a/public/terrain/18/429241/176928.terrain b/public/terrain/18/429241/176928.terrain new file mode 100644 index 000000000..d8bab1bfd Binary files /dev/null and b/public/terrain/18/429241/176928.terrain differ diff --git a/public/terrain/18/429241/176929.terrain b/public/terrain/18/429241/176929.terrain new file mode 100644 index 000000000..184beda53 Binary files /dev/null and b/public/terrain/18/429241/176929.terrain differ diff --git a/public/terrain/18/429241/176930.terrain b/public/terrain/18/429241/176930.terrain new file mode 100644 index 000000000..6b7fae1a2 Binary files /dev/null and b/public/terrain/18/429241/176930.terrain differ diff --git a/public/terrain/18/429241/176931.terrain b/public/terrain/18/429241/176931.terrain new file mode 100644 index 000000000..6d24b3cc3 Binary files /dev/null and b/public/terrain/18/429241/176931.terrain differ diff --git a/public/terrain/18/429241/176932.terrain b/public/terrain/18/429241/176932.terrain new file mode 100644 index 000000000..7cb805867 Binary files /dev/null and b/public/terrain/18/429241/176932.terrain differ diff --git a/public/terrain/18/429241/176933.terrain b/public/terrain/18/429241/176933.terrain new file mode 100644 index 000000000..02e550f6d Binary files /dev/null and b/public/terrain/18/429241/176933.terrain differ diff --git a/public/terrain/18/429241/176934.terrain b/public/terrain/18/429241/176934.terrain new file mode 100644 index 000000000..beb654fe0 Binary files /dev/null and b/public/terrain/18/429241/176934.terrain differ diff --git a/public/terrain/18/429241/176935.terrain b/public/terrain/18/429241/176935.terrain new file mode 100644 index 000000000..64f423ca4 Binary files /dev/null and b/public/terrain/18/429241/176935.terrain differ diff --git a/public/terrain/18/429241/176936.terrain b/public/terrain/18/429241/176936.terrain new file mode 100644 index 000000000..aa883d190 Binary files /dev/null and b/public/terrain/18/429241/176936.terrain differ diff --git a/public/terrain/18/429241/176937.terrain b/public/terrain/18/429241/176937.terrain new file mode 100644 index 000000000..21610f7bc Binary files /dev/null and b/public/terrain/18/429241/176937.terrain differ diff --git a/public/terrain/18/429241/176938.terrain b/public/terrain/18/429241/176938.terrain new file mode 100644 index 000000000..9abee01ed Binary files /dev/null and b/public/terrain/18/429241/176938.terrain differ diff --git a/public/terrain/18/429241/176939.terrain b/public/terrain/18/429241/176939.terrain new file mode 100644 index 000000000..adcaf37e8 Binary files /dev/null and b/public/terrain/18/429241/176939.terrain differ diff --git a/public/terrain/18/429241/176940.terrain b/public/terrain/18/429241/176940.terrain new file mode 100644 index 000000000..91048d94d Binary files /dev/null and b/public/terrain/18/429241/176940.terrain differ diff --git a/public/terrain/18/429241/176941.terrain b/public/terrain/18/429241/176941.terrain new file mode 100644 index 000000000..653d0fb21 Binary files /dev/null and b/public/terrain/18/429241/176941.terrain differ diff --git a/public/terrain/18/429241/176942.terrain b/public/terrain/18/429241/176942.terrain new file mode 100644 index 000000000..4b6c33bd2 Binary files /dev/null and b/public/terrain/18/429241/176942.terrain differ diff --git a/public/terrain/18/429241/176943.terrain b/public/terrain/18/429241/176943.terrain new file mode 100644 index 000000000..7015e44eb Binary files /dev/null and b/public/terrain/18/429241/176943.terrain differ diff --git a/public/terrain/18/429241/176944.terrain b/public/terrain/18/429241/176944.terrain new file mode 100644 index 000000000..75a3400e5 Binary files /dev/null and b/public/terrain/18/429241/176944.terrain differ diff --git a/public/terrain/18/429241/176945.terrain b/public/terrain/18/429241/176945.terrain new file mode 100644 index 000000000..fccf7a227 Binary files /dev/null and b/public/terrain/18/429241/176945.terrain differ diff --git a/public/terrain/18/429241/176946.terrain b/public/terrain/18/429241/176946.terrain new file mode 100644 index 000000000..b5603d63a Binary files /dev/null and b/public/terrain/18/429241/176946.terrain differ diff --git a/public/terrain/18/429241/176947.terrain b/public/terrain/18/429241/176947.terrain new file mode 100644 index 000000000..c0d680381 Binary files /dev/null and b/public/terrain/18/429241/176947.terrain differ diff --git a/public/terrain/18/429241/176948.terrain b/public/terrain/18/429241/176948.terrain new file mode 100644 index 000000000..70c71c169 Binary files /dev/null and b/public/terrain/18/429241/176948.terrain differ diff --git a/public/terrain/18/429241/176949.terrain b/public/terrain/18/429241/176949.terrain new file mode 100644 index 000000000..b301026f0 Binary files /dev/null and b/public/terrain/18/429241/176949.terrain differ diff --git a/public/terrain/18/429241/176950.terrain b/public/terrain/18/429241/176950.terrain new file mode 100644 index 000000000..d6b98cb1d Binary files /dev/null and b/public/terrain/18/429241/176950.terrain differ diff --git a/public/terrain/18/429241/176951.terrain b/public/terrain/18/429241/176951.terrain new file mode 100644 index 000000000..a35823788 Binary files /dev/null and b/public/terrain/18/429241/176951.terrain differ diff --git a/public/terrain/18/429241/176952.terrain b/public/terrain/18/429241/176952.terrain new file mode 100644 index 000000000..f1501b9d3 Binary files /dev/null and b/public/terrain/18/429241/176952.terrain differ diff --git a/public/terrain/18/429241/176953.terrain b/public/terrain/18/429241/176953.terrain new file mode 100644 index 000000000..ccf2a76f0 Binary files /dev/null and b/public/terrain/18/429241/176953.terrain differ diff --git a/public/terrain/18/429241/176954.terrain b/public/terrain/18/429241/176954.terrain new file mode 100644 index 000000000..1aa29ef55 Binary files /dev/null and b/public/terrain/18/429241/176954.terrain differ diff --git a/public/terrain/18/429241/176955.terrain b/public/terrain/18/429241/176955.terrain new file mode 100644 index 000000000..ab7b3dc1b Binary files /dev/null and b/public/terrain/18/429241/176955.terrain differ diff --git a/public/terrain/18/429241/176956.terrain b/public/terrain/18/429241/176956.terrain new file mode 100644 index 000000000..6a673e902 Binary files /dev/null and b/public/terrain/18/429241/176956.terrain differ diff --git a/public/terrain/18/429241/176957.terrain b/public/terrain/18/429241/176957.terrain new file mode 100644 index 000000000..2fbed9443 Binary files /dev/null and b/public/terrain/18/429241/176957.terrain differ diff --git a/public/terrain/18/429241/176958.terrain b/public/terrain/18/429241/176958.terrain new file mode 100644 index 000000000..3f7cb6ebf Binary files /dev/null and b/public/terrain/18/429241/176958.terrain differ diff --git a/public/terrain/18/429241/176959.terrain b/public/terrain/18/429241/176959.terrain new file mode 100644 index 000000000..0b702f1b2 Binary files /dev/null and b/public/terrain/18/429241/176959.terrain differ diff --git a/public/terrain/18/429241/176960.terrain b/public/terrain/18/429241/176960.terrain new file mode 100644 index 000000000..08e7c9357 Binary files /dev/null and b/public/terrain/18/429241/176960.terrain differ diff --git a/public/terrain/18/429241/176961.terrain b/public/terrain/18/429241/176961.terrain new file mode 100644 index 000000000..e2d168fd6 Binary files /dev/null and b/public/terrain/18/429241/176961.terrain differ diff --git a/public/terrain/18/429241/176962.terrain b/public/terrain/18/429241/176962.terrain new file mode 100644 index 000000000..0aac1b6ef Binary files /dev/null and b/public/terrain/18/429241/176962.terrain differ diff --git a/public/terrain/18/429241/176963.terrain b/public/terrain/18/429241/176963.terrain new file mode 100644 index 000000000..552af6540 Binary files /dev/null and b/public/terrain/18/429241/176963.terrain differ diff --git a/public/terrain/18/429241/176964.terrain b/public/terrain/18/429241/176964.terrain new file mode 100644 index 000000000..68e60bed2 Binary files /dev/null and b/public/terrain/18/429241/176964.terrain differ diff --git a/public/terrain/18/429241/176965.terrain b/public/terrain/18/429241/176965.terrain new file mode 100644 index 000000000..6637d01c8 Binary files /dev/null and b/public/terrain/18/429241/176965.terrain differ diff --git a/public/terrain/18/429241/176966.terrain b/public/terrain/18/429241/176966.terrain new file mode 100644 index 000000000..a00c9766b Binary files /dev/null and b/public/terrain/18/429241/176966.terrain differ diff --git a/public/terrain/18/429241/176967.terrain b/public/terrain/18/429241/176967.terrain new file mode 100644 index 000000000..606c86fc8 Binary files /dev/null and b/public/terrain/18/429241/176967.terrain differ diff --git a/public/terrain/18/429241/176968.terrain b/public/terrain/18/429241/176968.terrain new file mode 100644 index 000000000..eb82c3064 Binary files /dev/null and b/public/terrain/18/429241/176968.terrain differ diff --git a/public/terrain/18/429241/176969.terrain b/public/terrain/18/429241/176969.terrain new file mode 100644 index 000000000..9d04b56d5 Binary files /dev/null and b/public/terrain/18/429241/176969.terrain differ diff --git a/public/terrain/18/429241/176970.terrain b/public/terrain/18/429241/176970.terrain new file mode 100644 index 000000000..3429c7c7c Binary files /dev/null and b/public/terrain/18/429241/176970.terrain differ diff --git a/public/terrain/18/429241/176971.terrain b/public/terrain/18/429241/176971.terrain new file mode 100644 index 000000000..04b2f10eb Binary files /dev/null and b/public/terrain/18/429241/176971.terrain differ diff --git a/public/terrain/18/429241/176972.terrain b/public/terrain/18/429241/176972.terrain new file mode 100644 index 000000000..f03900b1f Binary files /dev/null and b/public/terrain/18/429241/176972.terrain differ diff --git a/public/terrain/18/429241/176973.terrain b/public/terrain/18/429241/176973.terrain new file mode 100644 index 000000000..93026ac90 Binary files /dev/null and b/public/terrain/18/429241/176973.terrain differ diff --git a/public/terrain/18/429241/176974.terrain b/public/terrain/18/429241/176974.terrain new file mode 100644 index 000000000..7fa229cce Binary files /dev/null and b/public/terrain/18/429241/176974.terrain differ diff --git a/public/terrain/18/429241/176975.terrain b/public/terrain/18/429241/176975.terrain new file mode 100644 index 000000000..2cc1736e4 Binary files /dev/null and b/public/terrain/18/429241/176975.terrain differ diff --git a/public/terrain/18/429241/176976.terrain b/public/terrain/18/429241/176976.terrain new file mode 100644 index 000000000..58bd2bd29 Binary files /dev/null and b/public/terrain/18/429241/176976.terrain differ diff --git a/public/terrain/18/429241/176977.terrain b/public/terrain/18/429241/176977.terrain new file mode 100644 index 000000000..ec55bbc54 Binary files /dev/null and b/public/terrain/18/429241/176977.terrain differ diff --git a/public/terrain/18/429241/176978.terrain b/public/terrain/18/429241/176978.terrain new file mode 100644 index 000000000..485e29ffe Binary files /dev/null and b/public/terrain/18/429241/176978.terrain differ diff --git a/public/terrain/18/429241/176979.terrain b/public/terrain/18/429241/176979.terrain new file mode 100644 index 000000000..b086d6e76 Binary files /dev/null and b/public/terrain/18/429241/176979.terrain differ diff --git a/public/terrain/18/429241/176980.terrain b/public/terrain/18/429241/176980.terrain new file mode 100644 index 000000000..4bb1e3c72 Binary files /dev/null and b/public/terrain/18/429241/176980.terrain differ diff --git a/public/terrain/18/429241/176981.terrain b/public/terrain/18/429241/176981.terrain new file mode 100644 index 000000000..c48ce5336 Binary files /dev/null and b/public/terrain/18/429241/176981.terrain differ diff --git a/public/terrain/18/429241/176982.terrain b/public/terrain/18/429241/176982.terrain new file mode 100644 index 000000000..e368816f4 Binary files /dev/null and b/public/terrain/18/429241/176982.terrain differ diff --git a/public/terrain/18/429241/176983.terrain b/public/terrain/18/429241/176983.terrain new file mode 100644 index 000000000..af3dc8086 Binary files /dev/null and b/public/terrain/18/429241/176983.terrain differ diff --git a/public/terrain/18/429241/176984.terrain b/public/terrain/18/429241/176984.terrain new file mode 100644 index 000000000..d49c1bef9 Binary files /dev/null and b/public/terrain/18/429241/176984.terrain differ diff --git a/public/terrain/18/429241/176985.terrain b/public/terrain/18/429241/176985.terrain new file mode 100644 index 000000000..7233f767f Binary files /dev/null and b/public/terrain/18/429241/176985.terrain differ diff --git a/public/terrain/18/429241/176986.terrain b/public/terrain/18/429241/176986.terrain new file mode 100644 index 000000000..0c1c9b883 Binary files /dev/null and b/public/terrain/18/429241/176986.terrain differ diff --git a/public/terrain/18/429241/176987.terrain b/public/terrain/18/429241/176987.terrain new file mode 100644 index 000000000..0f28b9650 Binary files /dev/null and b/public/terrain/18/429241/176987.terrain differ diff --git a/public/terrain/18/429241/176988.terrain b/public/terrain/18/429241/176988.terrain new file mode 100644 index 000000000..c75f7bb73 Binary files /dev/null and b/public/terrain/18/429241/176988.terrain differ diff --git a/public/terrain/18/429241/176989.terrain b/public/terrain/18/429241/176989.terrain new file mode 100644 index 000000000..0abe9be67 Binary files /dev/null and b/public/terrain/18/429241/176989.terrain differ diff --git a/public/terrain/18/429241/176990.terrain b/public/terrain/18/429241/176990.terrain new file mode 100644 index 000000000..cf542f63e Binary files /dev/null and b/public/terrain/18/429241/176990.terrain differ diff --git a/public/terrain/18/429241/176991.terrain b/public/terrain/18/429241/176991.terrain new file mode 100644 index 000000000..f7319c803 Binary files /dev/null and b/public/terrain/18/429241/176991.terrain differ diff --git a/public/terrain/18/429241/176992.terrain b/public/terrain/18/429241/176992.terrain new file mode 100644 index 000000000..55e78e684 Binary files /dev/null and b/public/terrain/18/429241/176992.terrain differ diff --git a/public/terrain/18/429241/176993.terrain b/public/terrain/18/429241/176993.terrain new file mode 100644 index 000000000..96fe238da Binary files /dev/null and b/public/terrain/18/429241/176993.terrain differ diff --git a/public/terrain/18/429241/176994.terrain b/public/terrain/18/429241/176994.terrain new file mode 100644 index 000000000..9850be4b7 Binary files /dev/null and b/public/terrain/18/429241/176994.terrain differ diff --git a/public/terrain/18/429241/176995.terrain b/public/terrain/18/429241/176995.terrain new file mode 100644 index 000000000..b84f57639 Binary files /dev/null and b/public/terrain/18/429241/176995.terrain differ diff --git a/public/terrain/18/429241/176996.terrain b/public/terrain/18/429241/176996.terrain new file mode 100644 index 000000000..286fda0ef Binary files /dev/null and b/public/terrain/18/429241/176996.terrain differ diff --git a/public/terrain/18/429241/176997.terrain b/public/terrain/18/429241/176997.terrain new file mode 100644 index 000000000..99974e3dc Binary files /dev/null and b/public/terrain/18/429241/176997.terrain differ diff --git a/public/terrain/18/429241/176998.terrain b/public/terrain/18/429241/176998.terrain new file mode 100644 index 000000000..a56e1359b Binary files /dev/null and b/public/terrain/18/429241/176998.terrain differ diff --git a/public/terrain/18/429241/176999.terrain b/public/terrain/18/429241/176999.terrain new file mode 100644 index 000000000..be13c16a1 Binary files /dev/null and b/public/terrain/18/429241/176999.terrain differ diff --git a/public/terrain/18/429241/177000.terrain b/public/terrain/18/429241/177000.terrain new file mode 100644 index 000000000..fbd5664c2 Binary files /dev/null and b/public/terrain/18/429241/177000.terrain differ diff --git a/public/terrain/18/429241/177001.terrain b/public/terrain/18/429241/177001.terrain new file mode 100644 index 000000000..69520bd4b Binary files /dev/null and b/public/terrain/18/429241/177001.terrain differ diff --git a/public/terrain/18/429241/177002.terrain b/public/terrain/18/429241/177002.terrain new file mode 100644 index 000000000..b12d6b162 Binary files /dev/null and b/public/terrain/18/429241/177002.terrain differ diff --git a/public/terrain/18/429241/177003.terrain b/public/terrain/18/429241/177003.terrain new file mode 100644 index 000000000..9da121e75 Binary files /dev/null and b/public/terrain/18/429241/177003.terrain differ diff --git a/public/terrain/18/429241/177004.terrain b/public/terrain/18/429241/177004.terrain new file mode 100644 index 000000000..49d95c3eb Binary files /dev/null and b/public/terrain/18/429241/177004.terrain differ diff --git a/public/terrain/18/429241/177005.terrain b/public/terrain/18/429241/177005.terrain new file mode 100644 index 000000000..887592f55 Binary files /dev/null and b/public/terrain/18/429241/177005.terrain differ diff --git a/public/terrain/18/429241/177006.terrain b/public/terrain/18/429241/177006.terrain new file mode 100644 index 000000000..8c2290354 Binary files /dev/null and b/public/terrain/18/429241/177006.terrain differ diff --git a/public/terrain/18/429241/177007.terrain b/public/terrain/18/429241/177007.terrain new file mode 100644 index 000000000..25a2f0abe Binary files /dev/null and b/public/terrain/18/429241/177007.terrain differ diff --git a/public/terrain/18/429241/177008.terrain b/public/terrain/18/429241/177008.terrain new file mode 100644 index 000000000..c05c01afd Binary files /dev/null and b/public/terrain/18/429241/177008.terrain differ diff --git a/public/terrain/18/429241/177009.terrain b/public/terrain/18/429241/177009.terrain new file mode 100644 index 000000000..df2722f30 Binary files /dev/null and b/public/terrain/18/429241/177009.terrain differ diff --git a/public/terrain/18/429241/177010.terrain b/public/terrain/18/429241/177010.terrain new file mode 100644 index 000000000..c7c3011ae Binary files /dev/null and b/public/terrain/18/429241/177010.terrain differ diff --git a/public/terrain/18/429241/177011.terrain b/public/terrain/18/429241/177011.terrain new file mode 100644 index 000000000..6516a4138 Binary files /dev/null and b/public/terrain/18/429241/177011.terrain differ diff --git a/public/terrain/18/429241/177012.terrain b/public/terrain/18/429241/177012.terrain new file mode 100644 index 000000000..dca6fecad Binary files /dev/null and b/public/terrain/18/429241/177012.terrain differ diff --git a/public/terrain/18/429241/177013.terrain b/public/terrain/18/429241/177013.terrain new file mode 100644 index 000000000..e30da5dec Binary files /dev/null and b/public/terrain/18/429241/177013.terrain differ diff --git a/public/terrain/18/429241/177014.terrain b/public/terrain/18/429241/177014.terrain new file mode 100644 index 000000000..c8e5fffc7 Binary files /dev/null and b/public/terrain/18/429241/177014.terrain differ diff --git a/public/terrain/18/429241/177015.terrain b/public/terrain/18/429241/177015.terrain new file mode 100644 index 000000000..ce697f555 Binary files /dev/null and b/public/terrain/18/429241/177015.terrain differ diff --git a/public/terrain/18/429241/177016.terrain b/public/terrain/18/429241/177016.terrain new file mode 100644 index 000000000..b044b6dc2 Binary files /dev/null and b/public/terrain/18/429241/177016.terrain differ diff --git a/public/terrain/18/429241/177017.terrain b/public/terrain/18/429241/177017.terrain new file mode 100644 index 000000000..258db6abc Binary files /dev/null and b/public/terrain/18/429241/177017.terrain differ diff --git a/public/terrain/18/429241/177018.terrain b/public/terrain/18/429241/177018.terrain new file mode 100644 index 000000000..b7d224867 Binary files /dev/null and b/public/terrain/18/429241/177018.terrain differ diff --git a/public/terrain/18/429241/177019.terrain b/public/terrain/18/429241/177019.terrain new file mode 100644 index 000000000..0429a59b0 Binary files /dev/null and b/public/terrain/18/429241/177019.terrain differ diff --git a/public/terrain/18/429241/177020.terrain b/public/terrain/18/429241/177020.terrain new file mode 100644 index 000000000..668e49c60 Binary files /dev/null and b/public/terrain/18/429241/177020.terrain differ diff --git a/public/terrain/18/429241/177021.terrain b/public/terrain/18/429241/177021.terrain new file mode 100644 index 000000000..e0aecfb03 Binary files /dev/null and b/public/terrain/18/429241/177021.terrain differ diff --git a/public/terrain/18/429241/177022.terrain b/public/terrain/18/429241/177022.terrain new file mode 100644 index 000000000..b1c28b3da Binary files /dev/null and b/public/terrain/18/429241/177022.terrain differ diff --git a/public/terrain/18/429241/177023.terrain b/public/terrain/18/429241/177023.terrain new file mode 100644 index 000000000..82d5ce2a8 Binary files /dev/null and b/public/terrain/18/429241/177023.terrain differ diff --git a/public/terrain/18/429241/177024.terrain b/public/terrain/18/429241/177024.terrain new file mode 100644 index 000000000..01b66f03c Binary files /dev/null and b/public/terrain/18/429241/177024.terrain differ diff --git a/public/terrain/18/429241/177025.terrain b/public/terrain/18/429241/177025.terrain new file mode 100644 index 000000000..cd15fe7e8 Binary files /dev/null and b/public/terrain/18/429241/177025.terrain differ diff --git a/public/terrain/18/429241/177026.terrain b/public/terrain/18/429241/177026.terrain new file mode 100644 index 000000000..bbcc815aa Binary files /dev/null and b/public/terrain/18/429241/177026.terrain differ diff --git a/public/terrain/18/429241/177027.terrain b/public/terrain/18/429241/177027.terrain new file mode 100644 index 000000000..4678749d2 Binary files /dev/null and b/public/terrain/18/429241/177027.terrain differ diff --git a/public/terrain/18/429241/177028.terrain b/public/terrain/18/429241/177028.terrain new file mode 100644 index 000000000..1acccd748 Binary files /dev/null and b/public/terrain/18/429241/177028.terrain differ diff --git a/public/terrain/18/429241/177029.terrain b/public/terrain/18/429241/177029.terrain new file mode 100644 index 000000000..c9dd6c7e8 Binary files /dev/null and b/public/terrain/18/429241/177029.terrain differ diff --git a/public/terrain/18/429242/176871.terrain b/public/terrain/18/429242/176871.terrain new file mode 100644 index 000000000..d4dfff97e Binary files /dev/null and b/public/terrain/18/429242/176871.terrain differ diff --git a/public/terrain/18/429242/176872.terrain b/public/terrain/18/429242/176872.terrain new file mode 100644 index 000000000..0a7545fa6 Binary files /dev/null and b/public/terrain/18/429242/176872.terrain differ diff --git a/public/terrain/18/429242/176873.terrain b/public/terrain/18/429242/176873.terrain new file mode 100644 index 000000000..d63e308b1 Binary files /dev/null and b/public/terrain/18/429242/176873.terrain differ diff --git a/public/terrain/18/429242/176874.terrain b/public/terrain/18/429242/176874.terrain new file mode 100644 index 000000000..bab7a30a0 Binary files /dev/null and b/public/terrain/18/429242/176874.terrain differ diff --git a/public/terrain/18/429242/176875.terrain b/public/terrain/18/429242/176875.terrain new file mode 100644 index 000000000..d5ae1465c Binary files /dev/null and b/public/terrain/18/429242/176875.terrain differ diff --git a/public/terrain/18/429242/176876.terrain b/public/terrain/18/429242/176876.terrain new file mode 100644 index 000000000..50433b85f Binary files /dev/null and b/public/terrain/18/429242/176876.terrain differ diff --git a/public/terrain/18/429242/176877.terrain b/public/terrain/18/429242/176877.terrain new file mode 100644 index 000000000..499eba7ce Binary files /dev/null and b/public/terrain/18/429242/176877.terrain differ diff --git a/public/terrain/18/429242/176878.terrain b/public/terrain/18/429242/176878.terrain new file mode 100644 index 000000000..90ed10622 Binary files /dev/null and b/public/terrain/18/429242/176878.terrain differ diff --git a/public/terrain/18/429242/176879.terrain b/public/terrain/18/429242/176879.terrain new file mode 100644 index 000000000..0eaa690e1 Binary files /dev/null and b/public/terrain/18/429242/176879.terrain differ diff --git a/public/terrain/18/429242/176880.terrain b/public/terrain/18/429242/176880.terrain new file mode 100644 index 000000000..4de42444e Binary files /dev/null and b/public/terrain/18/429242/176880.terrain differ diff --git a/public/terrain/18/429242/176881.terrain b/public/terrain/18/429242/176881.terrain new file mode 100644 index 000000000..ed1fc2bb4 Binary files /dev/null and b/public/terrain/18/429242/176881.terrain differ diff --git a/public/terrain/18/429242/176882.terrain b/public/terrain/18/429242/176882.terrain new file mode 100644 index 000000000..d31400cad Binary files /dev/null and b/public/terrain/18/429242/176882.terrain differ diff --git a/public/terrain/18/429242/176883.terrain b/public/terrain/18/429242/176883.terrain new file mode 100644 index 000000000..e57aba924 Binary files /dev/null and b/public/terrain/18/429242/176883.terrain differ diff --git a/public/terrain/18/429242/176884.terrain b/public/terrain/18/429242/176884.terrain new file mode 100644 index 000000000..494db9dd0 Binary files /dev/null and b/public/terrain/18/429242/176884.terrain differ diff --git a/public/terrain/18/429242/176885.terrain b/public/terrain/18/429242/176885.terrain new file mode 100644 index 000000000..fb73561ad Binary files /dev/null and b/public/terrain/18/429242/176885.terrain differ diff --git a/public/terrain/18/429242/176886.terrain b/public/terrain/18/429242/176886.terrain new file mode 100644 index 000000000..f3f94b9c3 Binary files /dev/null and b/public/terrain/18/429242/176886.terrain differ diff --git a/public/terrain/18/429242/176887.terrain b/public/terrain/18/429242/176887.terrain new file mode 100644 index 000000000..45f9ccb04 Binary files /dev/null and b/public/terrain/18/429242/176887.terrain differ diff --git a/public/terrain/18/429242/176888.terrain b/public/terrain/18/429242/176888.terrain new file mode 100644 index 000000000..ddb03181f Binary files /dev/null and b/public/terrain/18/429242/176888.terrain differ diff --git a/public/terrain/18/429242/176889.terrain b/public/terrain/18/429242/176889.terrain new file mode 100644 index 000000000..8993b1155 Binary files /dev/null and b/public/terrain/18/429242/176889.terrain differ diff --git a/public/terrain/18/429242/176890.terrain b/public/terrain/18/429242/176890.terrain new file mode 100644 index 000000000..682b1361d Binary files /dev/null and b/public/terrain/18/429242/176890.terrain differ diff --git a/public/terrain/18/429242/176891.terrain b/public/terrain/18/429242/176891.terrain new file mode 100644 index 000000000..4392165aa Binary files /dev/null and b/public/terrain/18/429242/176891.terrain differ diff --git a/public/terrain/18/429242/176892.terrain b/public/terrain/18/429242/176892.terrain new file mode 100644 index 000000000..bdb0f400e Binary files /dev/null and b/public/terrain/18/429242/176892.terrain differ diff --git a/public/terrain/18/429242/176893.terrain b/public/terrain/18/429242/176893.terrain new file mode 100644 index 000000000..2eec22311 Binary files /dev/null and b/public/terrain/18/429242/176893.terrain differ diff --git a/public/terrain/18/429242/176894.terrain b/public/terrain/18/429242/176894.terrain new file mode 100644 index 000000000..f1f860d14 Binary files /dev/null and b/public/terrain/18/429242/176894.terrain differ diff --git a/public/terrain/18/429242/176895.terrain b/public/terrain/18/429242/176895.terrain new file mode 100644 index 000000000..7a327d509 Binary files /dev/null and b/public/terrain/18/429242/176895.terrain differ diff --git a/public/terrain/18/429242/176896.terrain b/public/terrain/18/429242/176896.terrain new file mode 100644 index 000000000..52ff9d521 Binary files /dev/null and b/public/terrain/18/429242/176896.terrain differ diff --git a/public/terrain/18/429242/176897.terrain b/public/terrain/18/429242/176897.terrain new file mode 100644 index 000000000..b077bcea8 Binary files /dev/null and b/public/terrain/18/429242/176897.terrain differ diff --git a/public/terrain/18/429242/176898.terrain b/public/terrain/18/429242/176898.terrain new file mode 100644 index 000000000..5fa5fa905 Binary files /dev/null and b/public/terrain/18/429242/176898.terrain differ diff --git a/public/terrain/18/429242/176899.terrain b/public/terrain/18/429242/176899.terrain new file mode 100644 index 000000000..bf7daf532 Binary files /dev/null and b/public/terrain/18/429242/176899.terrain differ diff --git a/public/terrain/18/429242/176900.terrain b/public/terrain/18/429242/176900.terrain new file mode 100644 index 000000000..134d1e12d Binary files /dev/null and b/public/terrain/18/429242/176900.terrain differ diff --git a/public/terrain/18/429242/176901.terrain b/public/terrain/18/429242/176901.terrain new file mode 100644 index 000000000..348df31b1 Binary files /dev/null and b/public/terrain/18/429242/176901.terrain differ diff --git a/public/terrain/18/429242/176902.terrain b/public/terrain/18/429242/176902.terrain new file mode 100644 index 000000000..154ca0e76 Binary files /dev/null and b/public/terrain/18/429242/176902.terrain differ diff --git a/public/terrain/18/429242/176903.terrain b/public/terrain/18/429242/176903.terrain new file mode 100644 index 000000000..42e98c68c Binary files /dev/null and b/public/terrain/18/429242/176903.terrain differ diff --git a/public/terrain/18/429242/176904.terrain b/public/terrain/18/429242/176904.terrain new file mode 100644 index 000000000..acd9ff376 Binary files /dev/null and b/public/terrain/18/429242/176904.terrain differ diff --git a/public/terrain/18/429242/176905.terrain b/public/terrain/18/429242/176905.terrain new file mode 100644 index 000000000..d710feb10 Binary files /dev/null and b/public/terrain/18/429242/176905.terrain differ diff --git a/public/terrain/18/429242/176906.terrain b/public/terrain/18/429242/176906.terrain new file mode 100644 index 000000000..b9fc8b6dc Binary files /dev/null and b/public/terrain/18/429242/176906.terrain differ diff --git a/public/terrain/18/429242/176907.terrain b/public/terrain/18/429242/176907.terrain new file mode 100644 index 000000000..8cba70ea7 Binary files /dev/null and b/public/terrain/18/429242/176907.terrain differ diff --git a/public/terrain/18/429242/176908.terrain b/public/terrain/18/429242/176908.terrain new file mode 100644 index 000000000..182b5ca4e Binary files /dev/null and b/public/terrain/18/429242/176908.terrain differ diff --git a/public/terrain/18/429242/176909.terrain b/public/terrain/18/429242/176909.terrain new file mode 100644 index 000000000..40f23cbc7 Binary files /dev/null and b/public/terrain/18/429242/176909.terrain differ diff --git a/public/terrain/18/429242/176910.terrain b/public/terrain/18/429242/176910.terrain new file mode 100644 index 000000000..b85384bff Binary files /dev/null and b/public/terrain/18/429242/176910.terrain differ diff --git a/public/terrain/18/429242/176911.terrain b/public/terrain/18/429242/176911.terrain new file mode 100644 index 000000000..9cbe15e6b Binary files /dev/null and b/public/terrain/18/429242/176911.terrain differ diff --git a/public/terrain/18/429242/176912.terrain b/public/terrain/18/429242/176912.terrain new file mode 100644 index 000000000..a50feb278 Binary files /dev/null and b/public/terrain/18/429242/176912.terrain differ diff --git a/public/terrain/18/429242/176913.terrain b/public/terrain/18/429242/176913.terrain new file mode 100644 index 000000000..a1cea70a2 Binary files /dev/null and b/public/terrain/18/429242/176913.terrain differ diff --git a/public/terrain/18/429242/176914.terrain b/public/terrain/18/429242/176914.terrain new file mode 100644 index 000000000..df411dc66 Binary files /dev/null and b/public/terrain/18/429242/176914.terrain differ diff --git a/public/terrain/18/429242/176915.terrain b/public/terrain/18/429242/176915.terrain new file mode 100644 index 000000000..0b2145c90 Binary files /dev/null and b/public/terrain/18/429242/176915.terrain differ diff --git a/public/terrain/18/429242/176916.terrain b/public/terrain/18/429242/176916.terrain new file mode 100644 index 000000000..2eed92512 Binary files /dev/null and b/public/terrain/18/429242/176916.terrain differ diff --git a/public/terrain/18/429242/176917.terrain b/public/terrain/18/429242/176917.terrain new file mode 100644 index 000000000..04bc585ad Binary files /dev/null and b/public/terrain/18/429242/176917.terrain differ diff --git a/public/terrain/18/429242/176918.terrain b/public/terrain/18/429242/176918.terrain new file mode 100644 index 000000000..91bda8685 Binary files /dev/null and b/public/terrain/18/429242/176918.terrain differ diff --git a/public/terrain/18/429242/176919.terrain b/public/terrain/18/429242/176919.terrain new file mode 100644 index 000000000..d62c590c3 Binary files /dev/null and b/public/terrain/18/429242/176919.terrain differ diff --git a/public/terrain/18/429242/176920.terrain b/public/terrain/18/429242/176920.terrain new file mode 100644 index 000000000..6db82118f Binary files /dev/null and b/public/terrain/18/429242/176920.terrain differ diff --git a/public/terrain/18/429242/176921.terrain b/public/terrain/18/429242/176921.terrain new file mode 100644 index 000000000..3ef33c8c5 Binary files /dev/null and b/public/terrain/18/429242/176921.terrain differ diff --git a/public/terrain/18/429242/176922.terrain b/public/terrain/18/429242/176922.terrain new file mode 100644 index 000000000..3c9af0ee0 Binary files /dev/null and b/public/terrain/18/429242/176922.terrain differ diff --git a/public/terrain/18/429242/176923.terrain b/public/terrain/18/429242/176923.terrain new file mode 100644 index 000000000..8beefccea Binary files /dev/null and b/public/terrain/18/429242/176923.terrain differ diff --git a/public/terrain/18/429242/176924.terrain b/public/terrain/18/429242/176924.terrain new file mode 100644 index 000000000..ca6761efa Binary files /dev/null and b/public/terrain/18/429242/176924.terrain differ diff --git a/public/terrain/18/429242/176925.terrain b/public/terrain/18/429242/176925.terrain new file mode 100644 index 000000000..6ebd61189 Binary files /dev/null and b/public/terrain/18/429242/176925.terrain differ diff --git a/public/terrain/18/429242/176926.terrain b/public/terrain/18/429242/176926.terrain new file mode 100644 index 000000000..02d0767a0 Binary files /dev/null and b/public/terrain/18/429242/176926.terrain differ diff --git a/public/terrain/18/429242/176927.terrain b/public/terrain/18/429242/176927.terrain new file mode 100644 index 000000000..f12ab6088 Binary files /dev/null and b/public/terrain/18/429242/176927.terrain differ diff --git a/public/terrain/18/429242/176928.terrain b/public/terrain/18/429242/176928.terrain new file mode 100644 index 000000000..d89c66fc1 Binary files /dev/null and b/public/terrain/18/429242/176928.terrain differ diff --git a/public/terrain/18/429242/176929.terrain b/public/terrain/18/429242/176929.terrain new file mode 100644 index 000000000..9d24e3a2f Binary files /dev/null and b/public/terrain/18/429242/176929.terrain differ diff --git a/public/terrain/18/429242/176930.terrain b/public/terrain/18/429242/176930.terrain new file mode 100644 index 000000000..fbb8a9b07 Binary files /dev/null and b/public/terrain/18/429242/176930.terrain differ diff --git a/public/terrain/18/429242/176931.terrain b/public/terrain/18/429242/176931.terrain new file mode 100644 index 000000000..c6291dca3 Binary files /dev/null and b/public/terrain/18/429242/176931.terrain differ diff --git a/public/terrain/18/429242/176932.terrain b/public/terrain/18/429242/176932.terrain new file mode 100644 index 000000000..9510904f0 Binary files /dev/null and b/public/terrain/18/429242/176932.terrain differ diff --git a/public/terrain/18/429242/176933.terrain b/public/terrain/18/429242/176933.terrain new file mode 100644 index 000000000..2bf5187bf Binary files /dev/null and b/public/terrain/18/429242/176933.terrain differ diff --git a/public/terrain/18/429242/176934.terrain b/public/terrain/18/429242/176934.terrain new file mode 100644 index 000000000..88eaa4134 Binary files /dev/null and b/public/terrain/18/429242/176934.terrain differ diff --git a/public/terrain/18/429242/176935.terrain b/public/terrain/18/429242/176935.terrain new file mode 100644 index 000000000..d796b583f Binary files /dev/null and b/public/terrain/18/429242/176935.terrain differ diff --git a/public/terrain/18/429242/176936.terrain b/public/terrain/18/429242/176936.terrain new file mode 100644 index 000000000..d754374ce Binary files /dev/null and b/public/terrain/18/429242/176936.terrain differ diff --git a/public/terrain/18/429242/176937.terrain b/public/terrain/18/429242/176937.terrain new file mode 100644 index 000000000..8b19cf777 Binary files /dev/null and b/public/terrain/18/429242/176937.terrain differ diff --git a/public/terrain/18/429242/176938.terrain b/public/terrain/18/429242/176938.terrain new file mode 100644 index 000000000..0c78b3014 Binary files /dev/null and b/public/terrain/18/429242/176938.terrain differ diff --git a/public/terrain/18/429242/176939.terrain b/public/terrain/18/429242/176939.terrain new file mode 100644 index 000000000..822aa1f5a Binary files /dev/null and b/public/terrain/18/429242/176939.terrain differ diff --git a/public/terrain/18/429242/176940.terrain b/public/terrain/18/429242/176940.terrain new file mode 100644 index 000000000..041cbfb16 Binary files /dev/null and b/public/terrain/18/429242/176940.terrain differ diff --git a/public/terrain/18/429242/176941.terrain b/public/terrain/18/429242/176941.terrain new file mode 100644 index 000000000..0d3c9669c Binary files /dev/null and b/public/terrain/18/429242/176941.terrain differ diff --git a/public/terrain/18/429242/176942.terrain b/public/terrain/18/429242/176942.terrain new file mode 100644 index 000000000..2e092e286 Binary files /dev/null and b/public/terrain/18/429242/176942.terrain differ diff --git a/public/terrain/18/429242/176943.terrain b/public/terrain/18/429242/176943.terrain new file mode 100644 index 000000000..434e5baef Binary files /dev/null and b/public/terrain/18/429242/176943.terrain differ diff --git a/public/terrain/18/429242/176944.terrain b/public/terrain/18/429242/176944.terrain new file mode 100644 index 000000000..1f97b2321 Binary files /dev/null and b/public/terrain/18/429242/176944.terrain differ diff --git a/public/terrain/18/429242/176945.terrain b/public/terrain/18/429242/176945.terrain new file mode 100644 index 000000000..c9a16b299 Binary files /dev/null and b/public/terrain/18/429242/176945.terrain differ diff --git a/public/terrain/18/429242/176946.terrain b/public/terrain/18/429242/176946.terrain new file mode 100644 index 000000000..91ee8b2f3 Binary files /dev/null and b/public/terrain/18/429242/176946.terrain differ diff --git a/public/terrain/18/429242/176947.terrain b/public/terrain/18/429242/176947.terrain new file mode 100644 index 000000000..502ee4b21 Binary files /dev/null and b/public/terrain/18/429242/176947.terrain differ diff --git a/public/terrain/18/429242/176948.terrain b/public/terrain/18/429242/176948.terrain new file mode 100644 index 000000000..8f6ee416e Binary files /dev/null and b/public/terrain/18/429242/176948.terrain differ diff --git a/public/terrain/18/429242/176949.terrain b/public/terrain/18/429242/176949.terrain new file mode 100644 index 000000000..cf7ade6e6 Binary files /dev/null and b/public/terrain/18/429242/176949.terrain differ diff --git a/public/terrain/18/429242/176950.terrain b/public/terrain/18/429242/176950.terrain new file mode 100644 index 000000000..206ebd99b Binary files /dev/null and b/public/terrain/18/429242/176950.terrain differ diff --git a/public/terrain/18/429242/176951.terrain b/public/terrain/18/429242/176951.terrain new file mode 100644 index 000000000..19a56fe7b Binary files /dev/null and b/public/terrain/18/429242/176951.terrain differ diff --git a/public/terrain/18/429242/176952.terrain b/public/terrain/18/429242/176952.terrain new file mode 100644 index 000000000..898923d8a Binary files /dev/null and b/public/terrain/18/429242/176952.terrain differ diff --git a/public/terrain/18/429242/176953.terrain b/public/terrain/18/429242/176953.terrain new file mode 100644 index 000000000..5ac24211a Binary files /dev/null and b/public/terrain/18/429242/176953.terrain differ diff --git a/public/terrain/18/429242/176954.terrain b/public/terrain/18/429242/176954.terrain new file mode 100644 index 000000000..5bbc6e13b Binary files /dev/null and b/public/terrain/18/429242/176954.terrain differ diff --git a/public/terrain/18/429242/176955.terrain b/public/terrain/18/429242/176955.terrain new file mode 100644 index 000000000..7ec231874 Binary files /dev/null and b/public/terrain/18/429242/176955.terrain differ diff --git a/public/terrain/18/429242/176956.terrain b/public/terrain/18/429242/176956.terrain new file mode 100644 index 000000000..c98b7cd6c Binary files /dev/null and b/public/terrain/18/429242/176956.terrain differ diff --git a/public/terrain/18/429242/176957.terrain b/public/terrain/18/429242/176957.terrain new file mode 100644 index 000000000..70f0786c5 Binary files /dev/null and b/public/terrain/18/429242/176957.terrain differ diff --git a/public/terrain/18/429242/176958.terrain b/public/terrain/18/429242/176958.terrain new file mode 100644 index 000000000..11e962d51 Binary files /dev/null and b/public/terrain/18/429242/176958.terrain differ diff --git a/public/terrain/18/429242/176959.terrain b/public/terrain/18/429242/176959.terrain new file mode 100644 index 000000000..a44d268c5 Binary files /dev/null and b/public/terrain/18/429242/176959.terrain differ diff --git a/public/terrain/18/429242/176960.terrain b/public/terrain/18/429242/176960.terrain new file mode 100644 index 000000000..923e72e48 Binary files /dev/null and b/public/terrain/18/429242/176960.terrain differ diff --git a/public/terrain/18/429242/176961.terrain b/public/terrain/18/429242/176961.terrain new file mode 100644 index 000000000..3a30e0abe Binary files /dev/null and b/public/terrain/18/429242/176961.terrain differ diff --git a/public/terrain/18/429242/176962.terrain b/public/terrain/18/429242/176962.terrain new file mode 100644 index 000000000..a1b136194 Binary files /dev/null and b/public/terrain/18/429242/176962.terrain differ diff --git a/public/terrain/18/429242/176963.terrain b/public/terrain/18/429242/176963.terrain new file mode 100644 index 000000000..edc2db1b3 Binary files /dev/null and b/public/terrain/18/429242/176963.terrain differ diff --git a/public/terrain/18/429242/176964.terrain b/public/terrain/18/429242/176964.terrain new file mode 100644 index 000000000..055d4b615 Binary files /dev/null and b/public/terrain/18/429242/176964.terrain differ diff --git a/public/terrain/18/429242/176965.terrain b/public/terrain/18/429242/176965.terrain new file mode 100644 index 000000000..a3c3dfa23 Binary files /dev/null and b/public/terrain/18/429242/176965.terrain differ diff --git a/public/terrain/18/429242/176966.terrain b/public/terrain/18/429242/176966.terrain new file mode 100644 index 000000000..85f486925 Binary files /dev/null and b/public/terrain/18/429242/176966.terrain differ diff --git a/public/terrain/18/429242/176967.terrain b/public/terrain/18/429242/176967.terrain new file mode 100644 index 000000000..32dfe6a5b Binary files /dev/null and b/public/terrain/18/429242/176967.terrain differ diff --git a/public/terrain/18/429242/176968.terrain b/public/terrain/18/429242/176968.terrain new file mode 100644 index 000000000..f69b6c1c7 Binary files /dev/null and b/public/terrain/18/429242/176968.terrain differ diff --git a/public/terrain/18/429242/176969.terrain b/public/terrain/18/429242/176969.terrain new file mode 100644 index 000000000..e3a86021a Binary files /dev/null and b/public/terrain/18/429242/176969.terrain differ diff --git a/public/terrain/18/429242/176970.terrain b/public/terrain/18/429242/176970.terrain new file mode 100644 index 000000000..9f30575ba Binary files /dev/null and b/public/terrain/18/429242/176970.terrain differ diff --git a/public/terrain/18/429242/176971.terrain b/public/terrain/18/429242/176971.terrain new file mode 100644 index 000000000..5f4aa74a0 Binary files /dev/null and b/public/terrain/18/429242/176971.terrain differ diff --git a/public/terrain/18/429242/176972.terrain b/public/terrain/18/429242/176972.terrain new file mode 100644 index 000000000..a789f2d28 Binary files /dev/null and b/public/terrain/18/429242/176972.terrain differ diff --git a/public/terrain/18/429242/176973.terrain b/public/terrain/18/429242/176973.terrain new file mode 100644 index 000000000..3d7e92d34 Binary files /dev/null and b/public/terrain/18/429242/176973.terrain differ diff --git a/public/terrain/18/429242/176974.terrain b/public/terrain/18/429242/176974.terrain new file mode 100644 index 000000000..15adf8649 Binary files /dev/null and b/public/terrain/18/429242/176974.terrain differ diff --git a/public/terrain/18/429242/176975.terrain b/public/terrain/18/429242/176975.terrain new file mode 100644 index 000000000..2a80328a6 Binary files /dev/null and b/public/terrain/18/429242/176975.terrain differ diff --git a/public/terrain/18/429242/176976.terrain b/public/terrain/18/429242/176976.terrain new file mode 100644 index 000000000..31a475a92 Binary files /dev/null and b/public/terrain/18/429242/176976.terrain differ diff --git a/public/terrain/18/429242/176977.terrain b/public/terrain/18/429242/176977.terrain new file mode 100644 index 000000000..8afcd04f3 Binary files /dev/null and b/public/terrain/18/429242/176977.terrain differ diff --git a/public/terrain/18/429242/176978.terrain b/public/terrain/18/429242/176978.terrain new file mode 100644 index 000000000..c10929bdd Binary files /dev/null and b/public/terrain/18/429242/176978.terrain differ diff --git a/public/terrain/18/429242/176979.terrain b/public/terrain/18/429242/176979.terrain new file mode 100644 index 000000000..a24c4f16d Binary files /dev/null and b/public/terrain/18/429242/176979.terrain differ diff --git a/public/terrain/18/429242/176980.terrain b/public/terrain/18/429242/176980.terrain new file mode 100644 index 000000000..f71361ccd Binary files /dev/null and b/public/terrain/18/429242/176980.terrain differ diff --git a/public/terrain/18/429242/176981.terrain b/public/terrain/18/429242/176981.terrain new file mode 100644 index 000000000..5c74d4ca6 Binary files /dev/null and b/public/terrain/18/429242/176981.terrain differ diff --git a/public/terrain/18/429242/176982.terrain b/public/terrain/18/429242/176982.terrain new file mode 100644 index 000000000..cc6db902a Binary files /dev/null and b/public/terrain/18/429242/176982.terrain differ diff --git a/public/terrain/18/429242/176983.terrain b/public/terrain/18/429242/176983.terrain new file mode 100644 index 000000000..7a0efe856 Binary files /dev/null and b/public/terrain/18/429242/176983.terrain differ diff --git a/public/terrain/18/429242/176984.terrain b/public/terrain/18/429242/176984.terrain new file mode 100644 index 000000000..8046f82ae Binary files /dev/null and b/public/terrain/18/429242/176984.terrain differ diff --git a/public/terrain/18/429242/176985.terrain b/public/terrain/18/429242/176985.terrain new file mode 100644 index 000000000..f4fccb348 Binary files /dev/null and b/public/terrain/18/429242/176985.terrain differ diff --git a/public/terrain/18/429242/176986.terrain b/public/terrain/18/429242/176986.terrain new file mode 100644 index 000000000..9e980f1ad Binary files /dev/null and b/public/terrain/18/429242/176986.terrain differ diff --git a/public/terrain/18/429242/176987.terrain b/public/terrain/18/429242/176987.terrain new file mode 100644 index 000000000..90ff0b046 Binary files /dev/null and b/public/terrain/18/429242/176987.terrain differ diff --git a/public/terrain/18/429242/176988.terrain b/public/terrain/18/429242/176988.terrain new file mode 100644 index 000000000..30c53acbf Binary files /dev/null and b/public/terrain/18/429242/176988.terrain differ diff --git a/public/terrain/18/429242/176989.terrain b/public/terrain/18/429242/176989.terrain new file mode 100644 index 000000000..4a347c8b7 Binary files /dev/null and b/public/terrain/18/429242/176989.terrain differ diff --git a/public/terrain/18/429242/176990.terrain b/public/terrain/18/429242/176990.terrain new file mode 100644 index 000000000..97e24df24 Binary files /dev/null and b/public/terrain/18/429242/176990.terrain differ diff --git a/public/terrain/18/429242/176991.terrain b/public/terrain/18/429242/176991.terrain new file mode 100644 index 000000000..0c0fc3c18 Binary files /dev/null and b/public/terrain/18/429242/176991.terrain differ diff --git a/public/terrain/18/429242/176992.terrain b/public/terrain/18/429242/176992.terrain new file mode 100644 index 000000000..8ff4e87f5 Binary files /dev/null and b/public/terrain/18/429242/176992.terrain differ diff --git a/public/terrain/18/429242/176993.terrain b/public/terrain/18/429242/176993.terrain new file mode 100644 index 000000000..05063bd0c Binary files /dev/null and b/public/terrain/18/429242/176993.terrain differ diff --git a/public/terrain/18/429242/176994.terrain b/public/terrain/18/429242/176994.terrain new file mode 100644 index 000000000..83f678435 Binary files /dev/null and b/public/terrain/18/429242/176994.terrain differ diff --git a/public/terrain/18/429242/176995.terrain b/public/terrain/18/429242/176995.terrain new file mode 100644 index 000000000..52b7b43ab Binary files /dev/null and b/public/terrain/18/429242/176995.terrain differ diff --git a/public/terrain/18/429242/176996.terrain b/public/terrain/18/429242/176996.terrain new file mode 100644 index 000000000..a0f64a043 Binary files /dev/null and b/public/terrain/18/429242/176996.terrain differ diff --git a/public/terrain/18/429242/176997.terrain b/public/terrain/18/429242/176997.terrain new file mode 100644 index 000000000..051d22396 Binary files /dev/null and b/public/terrain/18/429242/176997.terrain differ diff --git a/public/terrain/18/429242/176998.terrain b/public/terrain/18/429242/176998.terrain new file mode 100644 index 000000000..874e3f6b0 Binary files /dev/null and b/public/terrain/18/429242/176998.terrain differ diff --git a/public/terrain/18/429242/176999.terrain b/public/terrain/18/429242/176999.terrain new file mode 100644 index 000000000..c57f71b69 Binary files /dev/null and b/public/terrain/18/429242/176999.terrain differ diff --git a/public/terrain/18/429242/177000.terrain b/public/terrain/18/429242/177000.terrain new file mode 100644 index 000000000..06bb7a724 Binary files /dev/null and b/public/terrain/18/429242/177000.terrain differ diff --git a/public/terrain/18/429242/177001.terrain b/public/terrain/18/429242/177001.terrain new file mode 100644 index 000000000..32e409ffe Binary files /dev/null and b/public/terrain/18/429242/177001.terrain differ diff --git a/public/terrain/18/429242/177002.terrain b/public/terrain/18/429242/177002.terrain new file mode 100644 index 000000000..a803b8c2b Binary files /dev/null and b/public/terrain/18/429242/177002.terrain differ diff --git a/public/terrain/18/429242/177003.terrain b/public/terrain/18/429242/177003.terrain new file mode 100644 index 000000000..3056eb0e5 Binary files /dev/null and b/public/terrain/18/429242/177003.terrain differ diff --git a/public/terrain/18/429242/177004.terrain b/public/terrain/18/429242/177004.terrain new file mode 100644 index 000000000..8bf41515f Binary files /dev/null and b/public/terrain/18/429242/177004.terrain differ diff --git a/public/terrain/18/429242/177005.terrain b/public/terrain/18/429242/177005.terrain new file mode 100644 index 000000000..b8483d2da Binary files /dev/null and b/public/terrain/18/429242/177005.terrain differ diff --git a/public/terrain/18/429242/177006.terrain b/public/terrain/18/429242/177006.terrain new file mode 100644 index 000000000..78f700b41 Binary files /dev/null and b/public/terrain/18/429242/177006.terrain differ diff --git a/public/terrain/18/429242/177007.terrain b/public/terrain/18/429242/177007.terrain new file mode 100644 index 000000000..b74c22d4a Binary files /dev/null and b/public/terrain/18/429242/177007.terrain differ diff --git a/public/terrain/18/429242/177008.terrain b/public/terrain/18/429242/177008.terrain new file mode 100644 index 000000000..ab1816705 Binary files /dev/null and b/public/terrain/18/429242/177008.terrain differ diff --git a/public/terrain/18/429242/177009.terrain b/public/terrain/18/429242/177009.terrain new file mode 100644 index 000000000..cefa46ecd Binary files /dev/null and b/public/terrain/18/429242/177009.terrain differ diff --git a/public/terrain/18/429242/177010.terrain b/public/terrain/18/429242/177010.terrain new file mode 100644 index 000000000..69776cd47 Binary files /dev/null and b/public/terrain/18/429242/177010.terrain differ diff --git a/public/terrain/18/429242/177011.terrain b/public/terrain/18/429242/177011.terrain new file mode 100644 index 000000000..e30bd5e3d Binary files /dev/null and b/public/terrain/18/429242/177011.terrain differ diff --git a/public/terrain/18/429242/177012.terrain b/public/terrain/18/429242/177012.terrain new file mode 100644 index 000000000..0f0d9f25b Binary files /dev/null and b/public/terrain/18/429242/177012.terrain differ diff --git a/public/terrain/18/429242/177013.terrain b/public/terrain/18/429242/177013.terrain new file mode 100644 index 000000000..09fae539f Binary files /dev/null and b/public/terrain/18/429242/177013.terrain differ diff --git a/public/terrain/18/429242/177014.terrain b/public/terrain/18/429242/177014.terrain new file mode 100644 index 000000000..bb7c22d24 Binary files /dev/null and b/public/terrain/18/429242/177014.terrain differ diff --git a/public/terrain/18/429242/177015.terrain b/public/terrain/18/429242/177015.terrain new file mode 100644 index 000000000..98e52ce6a Binary files /dev/null and b/public/terrain/18/429242/177015.terrain differ diff --git a/public/terrain/18/429242/177016.terrain b/public/terrain/18/429242/177016.terrain new file mode 100644 index 000000000..c57ecd6d3 Binary files /dev/null and b/public/terrain/18/429242/177016.terrain differ diff --git a/public/terrain/18/429242/177017.terrain b/public/terrain/18/429242/177017.terrain new file mode 100644 index 000000000..0eef0dbc8 Binary files /dev/null and b/public/terrain/18/429242/177017.terrain differ diff --git a/public/terrain/18/429242/177018.terrain b/public/terrain/18/429242/177018.terrain new file mode 100644 index 000000000..cc7563981 Binary files /dev/null and b/public/terrain/18/429242/177018.terrain differ diff --git a/public/terrain/18/429242/177019.terrain b/public/terrain/18/429242/177019.terrain new file mode 100644 index 000000000..0271fd694 Binary files /dev/null and b/public/terrain/18/429242/177019.terrain differ diff --git a/public/terrain/18/429242/177020.terrain b/public/terrain/18/429242/177020.terrain new file mode 100644 index 000000000..7fd1a1dc6 Binary files /dev/null and b/public/terrain/18/429242/177020.terrain differ diff --git a/public/terrain/18/429242/177021.terrain b/public/terrain/18/429242/177021.terrain new file mode 100644 index 000000000..c3a1aad7c Binary files /dev/null and b/public/terrain/18/429242/177021.terrain differ diff --git a/public/terrain/18/429242/177022.terrain b/public/terrain/18/429242/177022.terrain new file mode 100644 index 000000000..44ee596ba Binary files /dev/null and b/public/terrain/18/429242/177022.terrain differ diff --git a/public/terrain/18/429242/177023.terrain b/public/terrain/18/429242/177023.terrain new file mode 100644 index 000000000..234082c08 Binary files /dev/null and b/public/terrain/18/429242/177023.terrain differ diff --git a/public/terrain/18/429242/177024.terrain b/public/terrain/18/429242/177024.terrain new file mode 100644 index 000000000..0576c467c Binary files /dev/null and b/public/terrain/18/429242/177024.terrain differ diff --git a/public/terrain/18/429242/177025.terrain b/public/terrain/18/429242/177025.terrain new file mode 100644 index 000000000..4a344d329 Binary files /dev/null and b/public/terrain/18/429242/177025.terrain differ diff --git a/public/terrain/18/429242/177026.terrain b/public/terrain/18/429242/177026.terrain new file mode 100644 index 000000000..a13792401 Binary files /dev/null and b/public/terrain/18/429242/177026.terrain differ diff --git a/public/terrain/18/429242/177027.terrain b/public/terrain/18/429242/177027.terrain new file mode 100644 index 000000000..650ef9899 Binary files /dev/null and b/public/terrain/18/429242/177027.terrain differ diff --git a/public/terrain/18/429242/177028.terrain b/public/terrain/18/429242/177028.terrain new file mode 100644 index 000000000..84f88e997 Binary files /dev/null and b/public/terrain/18/429242/177028.terrain differ diff --git a/public/terrain/18/429242/177029.terrain b/public/terrain/18/429242/177029.terrain new file mode 100644 index 000000000..6680f51b9 Binary files /dev/null and b/public/terrain/18/429242/177029.terrain differ diff --git a/public/terrain/18/429243/176871.terrain b/public/terrain/18/429243/176871.terrain new file mode 100644 index 000000000..104705fab Binary files /dev/null and b/public/terrain/18/429243/176871.terrain differ diff --git a/public/terrain/18/429243/176872.terrain b/public/terrain/18/429243/176872.terrain new file mode 100644 index 000000000..424d0aabf Binary files /dev/null and b/public/terrain/18/429243/176872.terrain differ diff --git a/public/terrain/18/429243/176873.terrain b/public/terrain/18/429243/176873.terrain new file mode 100644 index 000000000..81bede59f Binary files /dev/null and b/public/terrain/18/429243/176873.terrain differ diff --git a/public/terrain/18/429243/176874.terrain b/public/terrain/18/429243/176874.terrain new file mode 100644 index 000000000..f11fb5917 Binary files /dev/null and b/public/terrain/18/429243/176874.terrain differ diff --git a/public/terrain/18/429243/176875.terrain b/public/terrain/18/429243/176875.terrain new file mode 100644 index 000000000..3ba7dd776 Binary files /dev/null and b/public/terrain/18/429243/176875.terrain differ diff --git a/public/terrain/18/429243/176876.terrain b/public/terrain/18/429243/176876.terrain new file mode 100644 index 000000000..59f6e86f3 Binary files /dev/null and b/public/terrain/18/429243/176876.terrain differ diff --git a/public/terrain/18/429243/176877.terrain b/public/terrain/18/429243/176877.terrain new file mode 100644 index 000000000..bf71240e9 Binary files /dev/null and b/public/terrain/18/429243/176877.terrain differ diff --git a/public/terrain/18/429243/176878.terrain b/public/terrain/18/429243/176878.terrain new file mode 100644 index 000000000..7bf7badb9 Binary files /dev/null and b/public/terrain/18/429243/176878.terrain differ diff --git a/public/terrain/18/429243/176879.terrain b/public/terrain/18/429243/176879.terrain new file mode 100644 index 000000000..34058d8e0 Binary files /dev/null and b/public/terrain/18/429243/176879.terrain differ diff --git a/public/terrain/18/429243/176880.terrain b/public/terrain/18/429243/176880.terrain new file mode 100644 index 000000000..ccf58ab4f Binary files /dev/null and b/public/terrain/18/429243/176880.terrain differ diff --git a/public/terrain/18/429243/176881.terrain b/public/terrain/18/429243/176881.terrain new file mode 100644 index 000000000..87160aceb Binary files /dev/null and b/public/terrain/18/429243/176881.terrain differ diff --git a/public/terrain/18/429243/176882.terrain b/public/terrain/18/429243/176882.terrain new file mode 100644 index 000000000..04357ec6a Binary files /dev/null and b/public/terrain/18/429243/176882.terrain differ diff --git a/public/terrain/18/429243/176883.terrain b/public/terrain/18/429243/176883.terrain new file mode 100644 index 000000000..c86607e9d Binary files /dev/null and b/public/terrain/18/429243/176883.terrain differ diff --git a/public/terrain/18/429243/176884.terrain b/public/terrain/18/429243/176884.terrain new file mode 100644 index 000000000..e378e2387 Binary files /dev/null and b/public/terrain/18/429243/176884.terrain differ diff --git a/public/terrain/18/429243/176885.terrain b/public/terrain/18/429243/176885.terrain new file mode 100644 index 000000000..5d1a31555 Binary files /dev/null and b/public/terrain/18/429243/176885.terrain differ diff --git a/public/terrain/18/429243/176886.terrain b/public/terrain/18/429243/176886.terrain new file mode 100644 index 000000000..476e5a5e3 Binary files /dev/null and b/public/terrain/18/429243/176886.terrain differ diff --git a/public/terrain/18/429243/176887.terrain b/public/terrain/18/429243/176887.terrain new file mode 100644 index 000000000..98a7bcce0 Binary files /dev/null and b/public/terrain/18/429243/176887.terrain differ diff --git a/public/terrain/18/429243/176888.terrain b/public/terrain/18/429243/176888.terrain new file mode 100644 index 000000000..25784a053 Binary files /dev/null and b/public/terrain/18/429243/176888.terrain differ diff --git a/public/terrain/18/429243/176889.terrain b/public/terrain/18/429243/176889.terrain new file mode 100644 index 000000000..47d3dbf6d Binary files /dev/null and b/public/terrain/18/429243/176889.terrain differ diff --git a/public/terrain/18/429243/176890.terrain b/public/terrain/18/429243/176890.terrain new file mode 100644 index 000000000..ef06dcb42 Binary files /dev/null and b/public/terrain/18/429243/176890.terrain differ diff --git a/public/terrain/18/429243/176891.terrain b/public/terrain/18/429243/176891.terrain new file mode 100644 index 000000000..9c28ccc02 Binary files /dev/null and b/public/terrain/18/429243/176891.terrain differ diff --git a/public/terrain/18/429243/176892.terrain b/public/terrain/18/429243/176892.terrain new file mode 100644 index 000000000..39b8a0edf Binary files /dev/null and b/public/terrain/18/429243/176892.terrain differ diff --git a/public/terrain/18/429243/176893.terrain b/public/terrain/18/429243/176893.terrain new file mode 100644 index 000000000..be54c5da0 Binary files /dev/null and b/public/terrain/18/429243/176893.terrain differ diff --git a/public/terrain/18/429243/176894.terrain b/public/terrain/18/429243/176894.terrain new file mode 100644 index 000000000..070f60e46 Binary files /dev/null and b/public/terrain/18/429243/176894.terrain differ diff --git a/public/terrain/18/429243/176895.terrain b/public/terrain/18/429243/176895.terrain new file mode 100644 index 000000000..262cf1a9f Binary files /dev/null and b/public/terrain/18/429243/176895.terrain differ diff --git a/public/terrain/18/429243/176896.terrain b/public/terrain/18/429243/176896.terrain new file mode 100644 index 000000000..e42d03c08 Binary files /dev/null and b/public/terrain/18/429243/176896.terrain differ diff --git a/public/terrain/18/429243/176897.terrain b/public/terrain/18/429243/176897.terrain new file mode 100644 index 000000000..af24e6914 Binary files /dev/null and b/public/terrain/18/429243/176897.terrain differ diff --git a/public/terrain/18/429243/176898.terrain b/public/terrain/18/429243/176898.terrain new file mode 100644 index 000000000..84c6edd9c Binary files /dev/null and b/public/terrain/18/429243/176898.terrain differ diff --git a/public/terrain/18/429243/176899.terrain b/public/terrain/18/429243/176899.terrain new file mode 100644 index 000000000..620e6da3f Binary files /dev/null and b/public/terrain/18/429243/176899.terrain differ diff --git a/public/terrain/18/429243/176900.terrain b/public/terrain/18/429243/176900.terrain new file mode 100644 index 000000000..88825eb82 Binary files /dev/null and b/public/terrain/18/429243/176900.terrain differ diff --git a/public/terrain/18/429243/176901.terrain b/public/terrain/18/429243/176901.terrain new file mode 100644 index 000000000..10d692d92 Binary files /dev/null and b/public/terrain/18/429243/176901.terrain differ diff --git a/public/terrain/18/429243/176902.terrain b/public/terrain/18/429243/176902.terrain new file mode 100644 index 000000000..f04d66663 Binary files /dev/null and b/public/terrain/18/429243/176902.terrain differ diff --git a/public/terrain/18/429243/176903.terrain b/public/terrain/18/429243/176903.terrain new file mode 100644 index 000000000..5b87299a8 Binary files /dev/null and b/public/terrain/18/429243/176903.terrain differ diff --git a/public/terrain/18/429243/176904.terrain b/public/terrain/18/429243/176904.terrain new file mode 100644 index 000000000..5d29925c7 Binary files /dev/null and b/public/terrain/18/429243/176904.terrain differ diff --git a/public/terrain/18/429243/176905.terrain b/public/terrain/18/429243/176905.terrain new file mode 100644 index 000000000..649a91fcd Binary files /dev/null and b/public/terrain/18/429243/176905.terrain differ diff --git a/public/terrain/18/429243/176906.terrain b/public/terrain/18/429243/176906.terrain new file mode 100644 index 000000000..f0eca3221 Binary files /dev/null and b/public/terrain/18/429243/176906.terrain differ diff --git a/public/terrain/18/429243/176907.terrain b/public/terrain/18/429243/176907.terrain new file mode 100644 index 000000000..e46e0f8f9 Binary files /dev/null and b/public/terrain/18/429243/176907.terrain differ diff --git a/public/terrain/18/429243/176908.terrain b/public/terrain/18/429243/176908.terrain new file mode 100644 index 000000000..101c48688 Binary files /dev/null and b/public/terrain/18/429243/176908.terrain differ diff --git a/public/terrain/18/429243/176909.terrain b/public/terrain/18/429243/176909.terrain new file mode 100644 index 000000000..016c74652 Binary files /dev/null and b/public/terrain/18/429243/176909.terrain differ diff --git a/public/terrain/18/429243/176910.terrain b/public/terrain/18/429243/176910.terrain new file mode 100644 index 000000000..e3edbd0fa Binary files /dev/null and b/public/terrain/18/429243/176910.terrain differ diff --git a/public/terrain/18/429243/176911.terrain b/public/terrain/18/429243/176911.terrain new file mode 100644 index 000000000..a633e37f4 Binary files /dev/null and b/public/terrain/18/429243/176911.terrain differ diff --git a/public/terrain/18/429243/176912.terrain b/public/terrain/18/429243/176912.terrain new file mode 100644 index 000000000..5550033a6 Binary files /dev/null and b/public/terrain/18/429243/176912.terrain differ diff --git a/public/terrain/18/429243/176913.terrain b/public/terrain/18/429243/176913.terrain new file mode 100644 index 000000000..667ceb1ed Binary files /dev/null and b/public/terrain/18/429243/176913.terrain differ diff --git a/public/terrain/18/429243/176914.terrain b/public/terrain/18/429243/176914.terrain new file mode 100644 index 000000000..f4a356a2b Binary files /dev/null and b/public/terrain/18/429243/176914.terrain differ diff --git a/public/terrain/18/429243/176915.terrain b/public/terrain/18/429243/176915.terrain new file mode 100644 index 000000000..e7c7ab7dc Binary files /dev/null and b/public/terrain/18/429243/176915.terrain differ diff --git a/public/terrain/18/429243/176916.terrain b/public/terrain/18/429243/176916.terrain new file mode 100644 index 000000000..a4955a73d Binary files /dev/null and b/public/terrain/18/429243/176916.terrain differ diff --git a/public/terrain/18/429243/176917.terrain b/public/terrain/18/429243/176917.terrain new file mode 100644 index 000000000..8632c6bac Binary files /dev/null and b/public/terrain/18/429243/176917.terrain differ diff --git a/public/terrain/18/429243/176918.terrain b/public/terrain/18/429243/176918.terrain new file mode 100644 index 000000000..4149c9e6a Binary files /dev/null and b/public/terrain/18/429243/176918.terrain differ diff --git a/public/terrain/18/429243/176919.terrain b/public/terrain/18/429243/176919.terrain new file mode 100644 index 000000000..79179665e Binary files /dev/null and b/public/terrain/18/429243/176919.terrain differ diff --git a/public/terrain/18/429243/176920.terrain b/public/terrain/18/429243/176920.terrain new file mode 100644 index 000000000..c8b506d39 Binary files /dev/null and b/public/terrain/18/429243/176920.terrain differ diff --git a/public/terrain/18/429243/176921.terrain b/public/terrain/18/429243/176921.terrain new file mode 100644 index 000000000..153326769 Binary files /dev/null and b/public/terrain/18/429243/176921.terrain differ diff --git a/public/terrain/18/429243/176922.terrain b/public/terrain/18/429243/176922.terrain new file mode 100644 index 000000000..c4e96e28c Binary files /dev/null and b/public/terrain/18/429243/176922.terrain differ diff --git a/public/terrain/18/429243/176923.terrain b/public/terrain/18/429243/176923.terrain new file mode 100644 index 000000000..e28d3a0aa Binary files /dev/null and b/public/terrain/18/429243/176923.terrain differ diff --git a/public/terrain/18/429243/176924.terrain b/public/terrain/18/429243/176924.terrain new file mode 100644 index 000000000..3d72a7c30 Binary files /dev/null and b/public/terrain/18/429243/176924.terrain differ diff --git a/public/terrain/18/429243/176925.terrain b/public/terrain/18/429243/176925.terrain new file mode 100644 index 000000000..65affc4b3 Binary files /dev/null and b/public/terrain/18/429243/176925.terrain differ diff --git a/public/terrain/18/429243/176926.terrain b/public/terrain/18/429243/176926.terrain new file mode 100644 index 000000000..7e69c1043 Binary files /dev/null and b/public/terrain/18/429243/176926.terrain differ diff --git a/public/terrain/18/429243/176927.terrain b/public/terrain/18/429243/176927.terrain new file mode 100644 index 000000000..f3594ee4f Binary files /dev/null and b/public/terrain/18/429243/176927.terrain differ diff --git a/public/terrain/18/429243/176928.terrain b/public/terrain/18/429243/176928.terrain new file mode 100644 index 000000000..3811031da Binary files /dev/null and b/public/terrain/18/429243/176928.terrain differ diff --git a/public/terrain/18/429243/176929.terrain b/public/terrain/18/429243/176929.terrain new file mode 100644 index 000000000..5ef7ac23b Binary files /dev/null and b/public/terrain/18/429243/176929.terrain differ diff --git a/public/terrain/18/429243/176930.terrain b/public/terrain/18/429243/176930.terrain new file mode 100644 index 000000000..172ae8aaf Binary files /dev/null and b/public/terrain/18/429243/176930.terrain differ diff --git a/public/terrain/18/429243/176931.terrain b/public/terrain/18/429243/176931.terrain new file mode 100644 index 000000000..f85b53e89 Binary files /dev/null and b/public/terrain/18/429243/176931.terrain differ diff --git a/public/terrain/18/429243/176932.terrain b/public/terrain/18/429243/176932.terrain new file mode 100644 index 000000000..174231c07 Binary files /dev/null and b/public/terrain/18/429243/176932.terrain differ diff --git a/public/terrain/18/429243/176933.terrain b/public/terrain/18/429243/176933.terrain new file mode 100644 index 000000000..0353443f1 Binary files /dev/null and b/public/terrain/18/429243/176933.terrain differ diff --git a/public/terrain/18/429243/176934.terrain b/public/terrain/18/429243/176934.terrain new file mode 100644 index 000000000..61c2a1c31 Binary files /dev/null and b/public/terrain/18/429243/176934.terrain differ diff --git a/public/terrain/18/429243/176935.terrain b/public/terrain/18/429243/176935.terrain new file mode 100644 index 000000000..80984177f Binary files /dev/null and b/public/terrain/18/429243/176935.terrain differ diff --git a/public/terrain/18/429243/176936.terrain b/public/terrain/18/429243/176936.terrain new file mode 100644 index 000000000..82b92c99a Binary files /dev/null and b/public/terrain/18/429243/176936.terrain differ diff --git a/public/terrain/18/429243/176937.terrain b/public/terrain/18/429243/176937.terrain new file mode 100644 index 000000000..af6eee68b Binary files /dev/null and b/public/terrain/18/429243/176937.terrain differ diff --git a/public/terrain/18/429243/176938.terrain b/public/terrain/18/429243/176938.terrain new file mode 100644 index 000000000..a1966b519 Binary files /dev/null and b/public/terrain/18/429243/176938.terrain differ diff --git a/public/terrain/18/429243/176939.terrain b/public/terrain/18/429243/176939.terrain new file mode 100644 index 000000000..cd0f1a9e4 Binary files /dev/null and b/public/terrain/18/429243/176939.terrain differ diff --git a/public/terrain/18/429243/176940.terrain b/public/terrain/18/429243/176940.terrain new file mode 100644 index 000000000..e938b447b Binary files /dev/null and b/public/terrain/18/429243/176940.terrain differ diff --git a/public/terrain/18/429243/176941.terrain b/public/terrain/18/429243/176941.terrain new file mode 100644 index 000000000..745bf7e48 Binary files /dev/null and b/public/terrain/18/429243/176941.terrain differ diff --git a/public/terrain/18/429243/176942.terrain b/public/terrain/18/429243/176942.terrain new file mode 100644 index 000000000..02f5226ce Binary files /dev/null and b/public/terrain/18/429243/176942.terrain differ diff --git a/public/terrain/18/429243/176943.terrain b/public/terrain/18/429243/176943.terrain new file mode 100644 index 000000000..4380eab02 Binary files /dev/null and b/public/terrain/18/429243/176943.terrain differ diff --git a/public/terrain/18/429243/176944.terrain b/public/terrain/18/429243/176944.terrain new file mode 100644 index 000000000..1cf7c63d8 Binary files /dev/null and b/public/terrain/18/429243/176944.terrain differ diff --git a/public/terrain/18/429243/176945.terrain b/public/terrain/18/429243/176945.terrain new file mode 100644 index 000000000..4606c88a6 Binary files /dev/null and b/public/terrain/18/429243/176945.terrain differ diff --git a/public/terrain/18/429243/176946.terrain b/public/terrain/18/429243/176946.terrain new file mode 100644 index 000000000..e9b658c15 Binary files /dev/null and b/public/terrain/18/429243/176946.terrain differ diff --git a/public/terrain/18/429243/176947.terrain b/public/terrain/18/429243/176947.terrain new file mode 100644 index 000000000..c0c378deb Binary files /dev/null and b/public/terrain/18/429243/176947.terrain differ diff --git a/public/terrain/18/429243/176948.terrain b/public/terrain/18/429243/176948.terrain new file mode 100644 index 000000000..327a2f523 Binary files /dev/null and b/public/terrain/18/429243/176948.terrain differ diff --git a/public/terrain/18/429243/176949.terrain b/public/terrain/18/429243/176949.terrain new file mode 100644 index 000000000..2511ccffa Binary files /dev/null and b/public/terrain/18/429243/176949.terrain differ diff --git a/public/terrain/18/429243/176950.terrain b/public/terrain/18/429243/176950.terrain new file mode 100644 index 000000000..3687d1418 Binary files /dev/null and b/public/terrain/18/429243/176950.terrain differ diff --git a/public/terrain/18/429243/176951.terrain b/public/terrain/18/429243/176951.terrain new file mode 100644 index 000000000..1e7365e66 Binary files /dev/null and b/public/terrain/18/429243/176951.terrain differ diff --git a/public/terrain/18/429243/176952.terrain b/public/terrain/18/429243/176952.terrain new file mode 100644 index 000000000..197418a57 Binary files /dev/null and b/public/terrain/18/429243/176952.terrain differ diff --git a/public/terrain/18/429243/176953.terrain b/public/terrain/18/429243/176953.terrain new file mode 100644 index 000000000..032d8fd74 Binary files /dev/null and b/public/terrain/18/429243/176953.terrain differ diff --git a/public/terrain/18/429243/176954.terrain b/public/terrain/18/429243/176954.terrain new file mode 100644 index 000000000..222f0f1cd Binary files /dev/null and b/public/terrain/18/429243/176954.terrain differ diff --git a/public/terrain/18/429243/176955.terrain b/public/terrain/18/429243/176955.terrain new file mode 100644 index 000000000..a464d1ebf Binary files /dev/null and b/public/terrain/18/429243/176955.terrain differ diff --git a/public/terrain/18/429243/176956.terrain b/public/terrain/18/429243/176956.terrain new file mode 100644 index 000000000..d8dd8c5f7 Binary files /dev/null and b/public/terrain/18/429243/176956.terrain differ diff --git a/public/terrain/18/429243/176957.terrain b/public/terrain/18/429243/176957.terrain new file mode 100644 index 000000000..f8c01ebe5 Binary files /dev/null and b/public/terrain/18/429243/176957.terrain differ diff --git a/public/terrain/18/429243/176958.terrain b/public/terrain/18/429243/176958.terrain new file mode 100644 index 000000000..127a8b3a3 Binary files /dev/null and b/public/terrain/18/429243/176958.terrain differ diff --git a/public/terrain/18/429243/176959.terrain b/public/terrain/18/429243/176959.terrain new file mode 100644 index 000000000..02047cefc Binary files /dev/null and b/public/terrain/18/429243/176959.terrain differ diff --git a/public/terrain/18/429243/176960.terrain b/public/terrain/18/429243/176960.terrain new file mode 100644 index 000000000..dae389761 Binary files /dev/null and b/public/terrain/18/429243/176960.terrain differ diff --git a/public/terrain/18/429243/176961.terrain b/public/terrain/18/429243/176961.terrain new file mode 100644 index 000000000..14b4f909e Binary files /dev/null and b/public/terrain/18/429243/176961.terrain differ diff --git a/public/terrain/18/429243/176962.terrain b/public/terrain/18/429243/176962.terrain new file mode 100644 index 000000000..1ac353dd1 Binary files /dev/null and b/public/terrain/18/429243/176962.terrain differ diff --git a/public/terrain/18/429243/176963.terrain b/public/terrain/18/429243/176963.terrain new file mode 100644 index 000000000..fe02b7a0c Binary files /dev/null and b/public/terrain/18/429243/176963.terrain differ diff --git a/public/terrain/18/429243/176964.terrain b/public/terrain/18/429243/176964.terrain new file mode 100644 index 000000000..25a1417f1 Binary files /dev/null and b/public/terrain/18/429243/176964.terrain differ diff --git a/public/terrain/18/429243/176965.terrain b/public/terrain/18/429243/176965.terrain new file mode 100644 index 000000000..ef73a7043 Binary files /dev/null and b/public/terrain/18/429243/176965.terrain differ diff --git a/public/terrain/18/429243/176966.terrain b/public/terrain/18/429243/176966.terrain new file mode 100644 index 000000000..406b38cb0 Binary files /dev/null and b/public/terrain/18/429243/176966.terrain differ diff --git a/public/terrain/18/429243/176967.terrain b/public/terrain/18/429243/176967.terrain new file mode 100644 index 000000000..012eff5ea Binary files /dev/null and b/public/terrain/18/429243/176967.terrain differ diff --git a/public/terrain/18/429243/176968.terrain b/public/terrain/18/429243/176968.terrain new file mode 100644 index 000000000..82757a587 Binary files /dev/null and b/public/terrain/18/429243/176968.terrain differ diff --git a/public/terrain/18/429243/176969.terrain b/public/terrain/18/429243/176969.terrain new file mode 100644 index 000000000..308d6541d Binary files /dev/null and b/public/terrain/18/429243/176969.terrain differ diff --git a/public/terrain/18/429243/176970.terrain b/public/terrain/18/429243/176970.terrain new file mode 100644 index 000000000..8c037a587 Binary files /dev/null and b/public/terrain/18/429243/176970.terrain differ diff --git a/public/terrain/18/429243/176971.terrain b/public/terrain/18/429243/176971.terrain new file mode 100644 index 000000000..7468cc605 Binary files /dev/null and b/public/terrain/18/429243/176971.terrain differ diff --git a/public/terrain/18/429243/176972.terrain b/public/terrain/18/429243/176972.terrain new file mode 100644 index 000000000..5ec20d49a Binary files /dev/null and b/public/terrain/18/429243/176972.terrain differ diff --git a/public/terrain/18/429243/176973.terrain b/public/terrain/18/429243/176973.terrain new file mode 100644 index 000000000..86bf2e170 Binary files /dev/null and b/public/terrain/18/429243/176973.terrain differ diff --git a/public/terrain/18/429243/176974.terrain b/public/terrain/18/429243/176974.terrain new file mode 100644 index 000000000..5cb2dab56 Binary files /dev/null and b/public/terrain/18/429243/176974.terrain differ diff --git a/public/terrain/18/429243/176975.terrain b/public/terrain/18/429243/176975.terrain new file mode 100644 index 000000000..5d04ca625 Binary files /dev/null and b/public/terrain/18/429243/176975.terrain differ diff --git a/public/terrain/18/429243/176976.terrain b/public/terrain/18/429243/176976.terrain new file mode 100644 index 000000000..abe6035af Binary files /dev/null and b/public/terrain/18/429243/176976.terrain differ diff --git a/public/terrain/18/429243/176977.terrain b/public/terrain/18/429243/176977.terrain new file mode 100644 index 000000000..2f3c10f71 Binary files /dev/null and b/public/terrain/18/429243/176977.terrain differ diff --git a/public/terrain/18/429243/176978.terrain b/public/terrain/18/429243/176978.terrain new file mode 100644 index 000000000..3418e8816 Binary files /dev/null and b/public/terrain/18/429243/176978.terrain differ diff --git a/public/terrain/18/429243/176979.terrain b/public/terrain/18/429243/176979.terrain new file mode 100644 index 000000000..8e72adb44 Binary files /dev/null and b/public/terrain/18/429243/176979.terrain differ diff --git a/public/terrain/18/429243/176980.terrain b/public/terrain/18/429243/176980.terrain new file mode 100644 index 000000000..30e593e77 Binary files /dev/null and b/public/terrain/18/429243/176980.terrain differ diff --git a/public/terrain/18/429243/176981.terrain b/public/terrain/18/429243/176981.terrain new file mode 100644 index 000000000..07b0952e9 Binary files /dev/null and b/public/terrain/18/429243/176981.terrain differ diff --git a/public/terrain/18/429243/176982.terrain b/public/terrain/18/429243/176982.terrain new file mode 100644 index 000000000..f8f6ffac4 Binary files /dev/null and b/public/terrain/18/429243/176982.terrain differ diff --git a/public/terrain/18/429243/176983.terrain b/public/terrain/18/429243/176983.terrain new file mode 100644 index 000000000..7e055b971 Binary files /dev/null and b/public/terrain/18/429243/176983.terrain differ diff --git a/public/terrain/18/429243/176984.terrain b/public/terrain/18/429243/176984.terrain new file mode 100644 index 000000000..bcf8c1756 Binary files /dev/null and b/public/terrain/18/429243/176984.terrain differ diff --git a/public/terrain/18/429243/176985.terrain b/public/terrain/18/429243/176985.terrain new file mode 100644 index 000000000..b8275e097 Binary files /dev/null and b/public/terrain/18/429243/176985.terrain differ diff --git a/public/terrain/18/429243/176986.terrain b/public/terrain/18/429243/176986.terrain new file mode 100644 index 000000000..3937224d0 Binary files /dev/null and b/public/terrain/18/429243/176986.terrain differ diff --git a/public/terrain/18/429243/176987.terrain b/public/terrain/18/429243/176987.terrain new file mode 100644 index 000000000..cff6d0bea Binary files /dev/null and b/public/terrain/18/429243/176987.terrain differ diff --git a/public/terrain/18/429243/176988.terrain b/public/terrain/18/429243/176988.terrain new file mode 100644 index 000000000..e217264b4 Binary files /dev/null and b/public/terrain/18/429243/176988.terrain differ diff --git a/public/terrain/18/429243/176989.terrain b/public/terrain/18/429243/176989.terrain new file mode 100644 index 000000000..a93682d74 Binary files /dev/null and b/public/terrain/18/429243/176989.terrain differ diff --git a/public/terrain/18/429243/176990.terrain b/public/terrain/18/429243/176990.terrain new file mode 100644 index 000000000..79da82a97 Binary files /dev/null and b/public/terrain/18/429243/176990.terrain differ diff --git a/public/terrain/18/429243/176991.terrain b/public/terrain/18/429243/176991.terrain new file mode 100644 index 000000000..93e215523 Binary files /dev/null and b/public/terrain/18/429243/176991.terrain differ diff --git a/public/terrain/18/429243/176992.terrain b/public/terrain/18/429243/176992.terrain new file mode 100644 index 000000000..dea9bc3d2 Binary files /dev/null and b/public/terrain/18/429243/176992.terrain differ diff --git a/public/terrain/18/429243/176993.terrain b/public/terrain/18/429243/176993.terrain new file mode 100644 index 000000000..552f72ed3 Binary files /dev/null and b/public/terrain/18/429243/176993.terrain differ diff --git a/public/terrain/18/429243/176994.terrain b/public/terrain/18/429243/176994.terrain new file mode 100644 index 000000000..2f83406bd Binary files /dev/null and b/public/terrain/18/429243/176994.terrain differ diff --git a/public/terrain/18/429243/176995.terrain b/public/terrain/18/429243/176995.terrain new file mode 100644 index 000000000..a3a50a32d Binary files /dev/null and b/public/terrain/18/429243/176995.terrain differ diff --git a/public/terrain/18/429243/176996.terrain b/public/terrain/18/429243/176996.terrain new file mode 100644 index 000000000..701e9c4cd Binary files /dev/null and b/public/terrain/18/429243/176996.terrain differ diff --git a/public/terrain/18/429243/176997.terrain b/public/terrain/18/429243/176997.terrain new file mode 100644 index 000000000..d14170c1f Binary files /dev/null and b/public/terrain/18/429243/176997.terrain differ diff --git a/public/terrain/18/429243/176998.terrain b/public/terrain/18/429243/176998.terrain new file mode 100644 index 000000000..78f92c7cf Binary files /dev/null and b/public/terrain/18/429243/176998.terrain differ diff --git a/public/terrain/18/429243/176999.terrain b/public/terrain/18/429243/176999.terrain new file mode 100644 index 000000000..565fa8a8f Binary files /dev/null and b/public/terrain/18/429243/176999.terrain differ diff --git a/public/terrain/18/429243/177000.terrain b/public/terrain/18/429243/177000.terrain new file mode 100644 index 000000000..a4d0780f9 Binary files /dev/null and b/public/terrain/18/429243/177000.terrain differ diff --git a/public/terrain/18/429243/177001.terrain b/public/terrain/18/429243/177001.terrain new file mode 100644 index 000000000..2b0be5cf0 Binary files /dev/null and b/public/terrain/18/429243/177001.terrain differ diff --git a/public/terrain/18/429243/177002.terrain b/public/terrain/18/429243/177002.terrain new file mode 100644 index 000000000..cd99b2f53 Binary files /dev/null and b/public/terrain/18/429243/177002.terrain differ diff --git a/public/terrain/18/429243/177003.terrain b/public/terrain/18/429243/177003.terrain new file mode 100644 index 000000000..cfcf34ccc Binary files /dev/null and b/public/terrain/18/429243/177003.terrain differ diff --git a/public/terrain/18/429243/177004.terrain b/public/terrain/18/429243/177004.terrain new file mode 100644 index 000000000..2ee56db01 Binary files /dev/null and b/public/terrain/18/429243/177004.terrain differ diff --git a/public/terrain/18/429243/177005.terrain b/public/terrain/18/429243/177005.terrain new file mode 100644 index 000000000..38668a6fc Binary files /dev/null and b/public/terrain/18/429243/177005.terrain differ diff --git a/public/terrain/18/429243/177006.terrain b/public/terrain/18/429243/177006.terrain new file mode 100644 index 000000000..b5ec9207b Binary files /dev/null and b/public/terrain/18/429243/177006.terrain differ diff --git a/public/terrain/18/429243/177007.terrain b/public/terrain/18/429243/177007.terrain new file mode 100644 index 000000000..b64c16d73 Binary files /dev/null and b/public/terrain/18/429243/177007.terrain differ diff --git a/public/terrain/18/429243/177008.terrain b/public/terrain/18/429243/177008.terrain new file mode 100644 index 000000000..eb49fde71 Binary files /dev/null and b/public/terrain/18/429243/177008.terrain differ diff --git a/public/terrain/18/429243/177009.terrain b/public/terrain/18/429243/177009.terrain new file mode 100644 index 000000000..41045a71b Binary files /dev/null and b/public/terrain/18/429243/177009.terrain differ diff --git a/public/terrain/18/429243/177010.terrain b/public/terrain/18/429243/177010.terrain new file mode 100644 index 000000000..4ae738047 Binary files /dev/null and b/public/terrain/18/429243/177010.terrain differ diff --git a/public/terrain/18/429243/177011.terrain b/public/terrain/18/429243/177011.terrain new file mode 100644 index 000000000..635fc6f95 Binary files /dev/null and b/public/terrain/18/429243/177011.terrain differ diff --git a/public/terrain/18/429243/177012.terrain b/public/terrain/18/429243/177012.terrain new file mode 100644 index 000000000..bcbd6f8ea Binary files /dev/null and b/public/terrain/18/429243/177012.terrain differ diff --git a/public/terrain/18/429243/177013.terrain b/public/terrain/18/429243/177013.terrain new file mode 100644 index 000000000..94b86123b Binary files /dev/null and b/public/terrain/18/429243/177013.terrain differ diff --git a/public/terrain/18/429243/177014.terrain b/public/terrain/18/429243/177014.terrain new file mode 100644 index 000000000..ab84beaa1 Binary files /dev/null and b/public/terrain/18/429243/177014.terrain differ diff --git a/public/terrain/18/429243/177015.terrain b/public/terrain/18/429243/177015.terrain new file mode 100644 index 000000000..932717de6 Binary files /dev/null and b/public/terrain/18/429243/177015.terrain differ diff --git a/public/terrain/18/429243/177016.terrain b/public/terrain/18/429243/177016.terrain new file mode 100644 index 000000000..cf8258e2a Binary files /dev/null and b/public/terrain/18/429243/177016.terrain differ diff --git a/public/terrain/18/429243/177017.terrain b/public/terrain/18/429243/177017.terrain new file mode 100644 index 000000000..c41a5c6ab Binary files /dev/null and b/public/terrain/18/429243/177017.terrain differ diff --git a/public/terrain/18/429243/177018.terrain b/public/terrain/18/429243/177018.terrain new file mode 100644 index 000000000..c9b1c3f85 Binary files /dev/null and b/public/terrain/18/429243/177018.terrain differ diff --git a/public/terrain/18/429243/177019.terrain b/public/terrain/18/429243/177019.terrain new file mode 100644 index 000000000..d93386e92 Binary files /dev/null and b/public/terrain/18/429243/177019.terrain differ diff --git a/public/terrain/18/429243/177020.terrain b/public/terrain/18/429243/177020.terrain new file mode 100644 index 000000000..4f96445fc Binary files /dev/null and b/public/terrain/18/429243/177020.terrain differ diff --git a/public/terrain/18/429243/177021.terrain b/public/terrain/18/429243/177021.terrain new file mode 100644 index 000000000..3158d2325 Binary files /dev/null and b/public/terrain/18/429243/177021.terrain differ diff --git a/public/terrain/18/429243/177022.terrain b/public/terrain/18/429243/177022.terrain new file mode 100644 index 000000000..6701f270c Binary files /dev/null and b/public/terrain/18/429243/177022.terrain differ diff --git a/public/terrain/18/429243/177023.terrain b/public/terrain/18/429243/177023.terrain new file mode 100644 index 000000000..5615d2d37 Binary files /dev/null and b/public/terrain/18/429243/177023.terrain differ diff --git a/public/terrain/18/429243/177024.terrain b/public/terrain/18/429243/177024.terrain new file mode 100644 index 000000000..dbc301d64 Binary files /dev/null and b/public/terrain/18/429243/177024.terrain differ diff --git a/public/terrain/18/429243/177025.terrain b/public/terrain/18/429243/177025.terrain new file mode 100644 index 000000000..e1f31b13b Binary files /dev/null and b/public/terrain/18/429243/177025.terrain differ diff --git a/public/terrain/18/429243/177026.terrain b/public/terrain/18/429243/177026.terrain new file mode 100644 index 000000000..e1a068d1d Binary files /dev/null and b/public/terrain/18/429243/177026.terrain differ diff --git a/public/terrain/18/429243/177027.terrain b/public/terrain/18/429243/177027.terrain new file mode 100644 index 000000000..281cee199 Binary files /dev/null and b/public/terrain/18/429243/177027.terrain differ diff --git a/public/terrain/18/429243/177028.terrain b/public/terrain/18/429243/177028.terrain new file mode 100644 index 000000000..801275b27 Binary files /dev/null and b/public/terrain/18/429243/177028.terrain differ diff --git a/public/terrain/18/429243/177029.terrain b/public/terrain/18/429243/177029.terrain new file mode 100644 index 000000000..a7f1ea704 Binary files /dev/null and b/public/terrain/18/429243/177029.terrain differ diff --git a/public/terrain/18/429244/176871.terrain b/public/terrain/18/429244/176871.terrain new file mode 100644 index 000000000..68287f84d Binary files /dev/null and b/public/terrain/18/429244/176871.terrain differ diff --git a/public/terrain/18/429244/176872.terrain b/public/terrain/18/429244/176872.terrain new file mode 100644 index 000000000..32dc4e2b3 Binary files /dev/null and b/public/terrain/18/429244/176872.terrain differ diff --git a/public/terrain/18/429244/176873.terrain b/public/terrain/18/429244/176873.terrain new file mode 100644 index 000000000..6d7d7adf9 Binary files /dev/null and b/public/terrain/18/429244/176873.terrain differ diff --git a/public/terrain/18/429244/176874.terrain b/public/terrain/18/429244/176874.terrain new file mode 100644 index 000000000..367fa2e55 Binary files /dev/null and b/public/terrain/18/429244/176874.terrain differ diff --git a/public/terrain/18/429244/176875.terrain b/public/terrain/18/429244/176875.terrain new file mode 100644 index 000000000..feed5fc41 Binary files /dev/null and b/public/terrain/18/429244/176875.terrain differ diff --git a/public/terrain/18/429244/176876.terrain b/public/terrain/18/429244/176876.terrain new file mode 100644 index 000000000..0c9492e93 Binary files /dev/null and b/public/terrain/18/429244/176876.terrain differ diff --git a/public/terrain/18/429244/176877.terrain b/public/terrain/18/429244/176877.terrain new file mode 100644 index 000000000..5c6639663 Binary files /dev/null and b/public/terrain/18/429244/176877.terrain differ diff --git a/public/terrain/18/429244/176878.terrain b/public/terrain/18/429244/176878.terrain new file mode 100644 index 000000000..ac0633300 Binary files /dev/null and b/public/terrain/18/429244/176878.terrain differ diff --git a/public/terrain/18/429244/176879.terrain b/public/terrain/18/429244/176879.terrain new file mode 100644 index 000000000..1ab70d8f8 Binary files /dev/null and b/public/terrain/18/429244/176879.terrain differ diff --git a/public/terrain/18/429244/176880.terrain b/public/terrain/18/429244/176880.terrain new file mode 100644 index 000000000..f0b2bb126 Binary files /dev/null and b/public/terrain/18/429244/176880.terrain differ diff --git a/public/terrain/18/429244/176881.terrain b/public/terrain/18/429244/176881.terrain new file mode 100644 index 000000000..066e7ee8c Binary files /dev/null and b/public/terrain/18/429244/176881.terrain differ diff --git a/public/terrain/18/429244/176882.terrain b/public/terrain/18/429244/176882.terrain new file mode 100644 index 000000000..75591ebcb Binary files /dev/null and b/public/terrain/18/429244/176882.terrain differ diff --git a/public/terrain/18/429244/176883.terrain b/public/terrain/18/429244/176883.terrain new file mode 100644 index 000000000..00d3f36fd Binary files /dev/null and b/public/terrain/18/429244/176883.terrain differ diff --git a/public/terrain/18/429244/176884.terrain b/public/terrain/18/429244/176884.terrain new file mode 100644 index 000000000..3bf5c7d5b Binary files /dev/null and b/public/terrain/18/429244/176884.terrain differ diff --git a/public/terrain/18/429244/176885.terrain b/public/terrain/18/429244/176885.terrain new file mode 100644 index 000000000..bd1605bd0 Binary files /dev/null and b/public/terrain/18/429244/176885.terrain differ diff --git a/public/terrain/18/429244/176886.terrain b/public/terrain/18/429244/176886.terrain new file mode 100644 index 000000000..8e89b5c28 Binary files /dev/null and b/public/terrain/18/429244/176886.terrain differ diff --git a/public/terrain/18/429244/176887.terrain b/public/terrain/18/429244/176887.terrain new file mode 100644 index 000000000..75f278e96 Binary files /dev/null and b/public/terrain/18/429244/176887.terrain differ diff --git a/public/terrain/18/429244/176888.terrain b/public/terrain/18/429244/176888.terrain new file mode 100644 index 000000000..dac84cdba Binary files /dev/null and b/public/terrain/18/429244/176888.terrain differ diff --git a/public/terrain/18/429244/176889.terrain b/public/terrain/18/429244/176889.terrain new file mode 100644 index 000000000..834c8b158 Binary files /dev/null and b/public/terrain/18/429244/176889.terrain differ diff --git a/public/terrain/18/429244/176890.terrain b/public/terrain/18/429244/176890.terrain new file mode 100644 index 000000000..a7200ab90 Binary files /dev/null and b/public/terrain/18/429244/176890.terrain differ diff --git a/public/terrain/18/429244/176891.terrain b/public/terrain/18/429244/176891.terrain new file mode 100644 index 000000000..03973366d Binary files /dev/null and b/public/terrain/18/429244/176891.terrain differ diff --git a/public/terrain/18/429244/176892.terrain b/public/terrain/18/429244/176892.terrain new file mode 100644 index 000000000..d6e3c471a Binary files /dev/null and b/public/terrain/18/429244/176892.terrain differ diff --git a/public/terrain/18/429244/176893.terrain b/public/terrain/18/429244/176893.terrain new file mode 100644 index 000000000..ea81fa8ee Binary files /dev/null and b/public/terrain/18/429244/176893.terrain differ diff --git a/public/terrain/18/429244/176894.terrain b/public/terrain/18/429244/176894.terrain new file mode 100644 index 000000000..735622a41 Binary files /dev/null and b/public/terrain/18/429244/176894.terrain differ diff --git a/public/terrain/18/429244/176895.terrain b/public/terrain/18/429244/176895.terrain new file mode 100644 index 000000000..fc8a44a35 Binary files /dev/null and b/public/terrain/18/429244/176895.terrain differ diff --git a/public/terrain/18/429244/176896.terrain b/public/terrain/18/429244/176896.terrain new file mode 100644 index 000000000..844b5b486 Binary files /dev/null and b/public/terrain/18/429244/176896.terrain differ diff --git a/public/terrain/18/429244/176897.terrain b/public/terrain/18/429244/176897.terrain new file mode 100644 index 000000000..eb5c8d113 Binary files /dev/null and b/public/terrain/18/429244/176897.terrain differ diff --git a/public/terrain/18/429244/176898.terrain b/public/terrain/18/429244/176898.terrain new file mode 100644 index 000000000..58a7d2fc0 Binary files /dev/null and b/public/terrain/18/429244/176898.terrain differ diff --git a/public/terrain/18/429244/176899.terrain b/public/terrain/18/429244/176899.terrain new file mode 100644 index 000000000..3b94fcdc4 Binary files /dev/null and b/public/terrain/18/429244/176899.terrain differ diff --git a/public/terrain/18/429244/176900.terrain b/public/terrain/18/429244/176900.terrain new file mode 100644 index 000000000..7f0008360 Binary files /dev/null and b/public/terrain/18/429244/176900.terrain differ diff --git a/public/terrain/18/429244/176901.terrain b/public/terrain/18/429244/176901.terrain new file mode 100644 index 000000000..a37458e97 Binary files /dev/null and b/public/terrain/18/429244/176901.terrain differ diff --git a/public/terrain/18/429244/176902.terrain b/public/terrain/18/429244/176902.terrain new file mode 100644 index 000000000..8c5dea695 Binary files /dev/null and b/public/terrain/18/429244/176902.terrain differ diff --git a/public/terrain/18/429244/176903.terrain b/public/terrain/18/429244/176903.terrain new file mode 100644 index 000000000..485080275 Binary files /dev/null and b/public/terrain/18/429244/176903.terrain differ diff --git a/public/terrain/18/429244/176904.terrain b/public/terrain/18/429244/176904.terrain new file mode 100644 index 000000000..542fce4d0 Binary files /dev/null and b/public/terrain/18/429244/176904.terrain differ diff --git a/public/terrain/18/429244/176905.terrain b/public/terrain/18/429244/176905.terrain new file mode 100644 index 000000000..e63ad0339 Binary files /dev/null and b/public/terrain/18/429244/176905.terrain differ diff --git a/public/terrain/18/429244/176906.terrain b/public/terrain/18/429244/176906.terrain new file mode 100644 index 000000000..fe130bb15 Binary files /dev/null and b/public/terrain/18/429244/176906.terrain differ diff --git a/public/terrain/18/429244/176907.terrain b/public/terrain/18/429244/176907.terrain new file mode 100644 index 000000000..97cf0cfd8 Binary files /dev/null and b/public/terrain/18/429244/176907.terrain differ diff --git a/public/terrain/18/429244/176908.terrain b/public/terrain/18/429244/176908.terrain new file mode 100644 index 000000000..725f24f24 Binary files /dev/null and b/public/terrain/18/429244/176908.terrain differ diff --git a/public/terrain/18/429244/176909.terrain b/public/terrain/18/429244/176909.terrain new file mode 100644 index 000000000..34ea8920b Binary files /dev/null and b/public/terrain/18/429244/176909.terrain differ diff --git a/public/terrain/18/429244/176910.terrain b/public/terrain/18/429244/176910.terrain new file mode 100644 index 000000000..508549e4a Binary files /dev/null and b/public/terrain/18/429244/176910.terrain differ diff --git a/public/terrain/18/429244/176911.terrain b/public/terrain/18/429244/176911.terrain new file mode 100644 index 000000000..4401281e1 Binary files /dev/null and b/public/terrain/18/429244/176911.terrain differ diff --git a/public/terrain/18/429244/176912.terrain b/public/terrain/18/429244/176912.terrain new file mode 100644 index 000000000..aed2a2b46 Binary files /dev/null and b/public/terrain/18/429244/176912.terrain differ diff --git a/public/terrain/18/429244/176913.terrain b/public/terrain/18/429244/176913.terrain new file mode 100644 index 000000000..a7af81816 Binary files /dev/null and b/public/terrain/18/429244/176913.terrain differ diff --git a/public/terrain/18/429244/176914.terrain b/public/terrain/18/429244/176914.terrain new file mode 100644 index 000000000..10d3fd557 Binary files /dev/null and b/public/terrain/18/429244/176914.terrain differ diff --git a/public/terrain/18/429244/176915.terrain b/public/terrain/18/429244/176915.terrain new file mode 100644 index 000000000..371fea4ff Binary files /dev/null and b/public/terrain/18/429244/176915.terrain differ diff --git a/public/terrain/18/429244/176916.terrain b/public/terrain/18/429244/176916.terrain new file mode 100644 index 000000000..f7feaa730 Binary files /dev/null and b/public/terrain/18/429244/176916.terrain differ diff --git a/public/terrain/18/429244/176917.terrain b/public/terrain/18/429244/176917.terrain new file mode 100644 index 000000000..bc9b941d6 Binary files /dev/null and b/public/terrain/18/429244/176917.terrain differ diff --git a/public/terrain/18/429244/176918.terrain b/public/terrain/18/429244/176918.terrain new file mode 100644 index 000000000..cd2cc6e86 Binary files /dev/null and b/public/terrain/18/429244/176918.terrain differ diff --git a/public/terrain/18/429244/176919.terrain b/public/terrain/18/429244/176919.terrain new file mode 100644 index 000000000..a33d87267 Binary files /dev/null and b/public/terrain/18/429244/176919.terrain differ diff --git a/public/terrain/18/429244/176920.terrain b/public/terrain/18/429244/176920.terrain new file mode 100644 index 000000000..046937328 Binary files /dev/null and b/public/terrain/18/429244/176920.terrain differ diff --git a/public/terrain/18/429244/176921.terrain b/public/terrain/18/429244/176921.terrain new file mode 100644 index 000000000..dce650c12 Binary files /dev/null and b/public/terrain/18/429244/176921.terrain differ diff --git a/public/terrain/18/429244/176922.terrain b/public/terrain/18/429244/176922.terrain new file mode 100644 index 000000000..bfa32b2a3 Binary files /dev/null and b/public/terrain/18/429244/176922.terrain differ diff --git a/public/terrain/18/429244/176923.terrain b/public/terrain/18/429244/176923.terrain new file mode 100644 index 000000000..87a36da43 Binary files /dev/null and b/public/terrain/18/429244/176923.terrain differ diff --git a/public/terrain/18/429244/176924.terrain b/public/terrain/18/429244/176924.terrain new file mode 100644 index 000000000..79c2f0cf7 Binary files /dev/null and b/public/terrain/18/429244/176924.terrain differ diff --git a/public/terrain/18/429244/176925.terrain b/public/terrain/18/429244/176925.terrain new file mode 100644 index 000000000..48dd47b1b Binary files /dev/null and b/public/terrain/18/429244/176925.terrain differ diff --git a/public/terrain/18/429244/176926.terrain b/public/terrain/18/429244/176926.terrain new file mode 100644 index 000000000..e0850d047 Binary files /dev/null and b/public/terrain/18/429244/176926.terrain differ diff --git a/public/terrain/18/429244/176927.terrain b/public/terrain/18/429244/176927.terrain new file mode 100644 index 000000000..353a8e131 Binary files /dev/null and b/public/terrain/18/429244/176927.terrain differ diff --git a/public/terrain/18/429244/176928.terrain b/public/terrain/18/429244/176928.terrain new file mode 100644 index 000000000..79bee0801 Binary files /dev/null and b/public/terrain/18/429244/176928.terrain differ diff --git a/public/terrain/18/429244/176929.terrain b/public/terrain/18/429244/176929.terrain new file mode 100644 index 000000000..cf86c96dd Binary files /dev/null and b/public/terrain/18/429244/176929.terrain differ diff --git a/public/terrain/18/429244/176930.terrain b/public/terrain/18/429244/176930.terrain new file mode 100644 index 000000000..5de80e92c Binary files /dev/null and b/public/terrain/18/429244/176930.terrain differ diff --git a/public/terrain/18/429244/176931.terrain b/public/terrain/18/429244/176931.terrain new file mode 100644 index 000000000..d77a44144 Binary files /dev/null and b/public/terrain/18/429244/176931.terrain differ diff --git a/public/terrain/18/429244/176932.terrain b/public/terrain/18/429244/176932.terrain new file mode 100644 index 000000000..338065cca Binary files /dev/null and b/public/terrain/18/429244/176932.terrain differ diff --git a/public/terrain/18/429244/176933.terrain b/public/terrain/18/429244/176933.terrain new file mode 100644 index 000000000..0c65d9efe Binary files /dev/null and b/public/terrain/18/429244/176933.terrain differ diff --git a/public/terrain/18/429244/176934.terrain b/public/terrain/18/429244/176934.terrain new file mode 100644 index 000000000..49f565ed1 Binary files /dev/null and b/public/terrain/18/429244/176934.terrain differ diff --git a/public/terrain/18/429244/176935.terrain b/public/terrain/18/429244/176935.terrain new file mode 100644 index 000000000..3dd6476af Binary files /dev/null and b/public/terrain/18/429244/176935.terrain differ diff --git a/public/terrain/18/429244/176936.terrain b/public/terrain/18/429244/176936.terrain new file mode 100644 index 000000000..32b0b2fd0 Binary files /dev/null and b/public/terrain/18/429244/176936.terrain differ diff --git a/public/terrain/18/429244/176937.terrain b/public/terrain/18/429244/176937.terrain new file mode 100644 index 000000000..206d32a64 Binary files /dev/null and b/public/terrain/18/429244/176937.terrain differ diff --git a/public/terrain/18/429244/176938.terrain b/public/terrain/18/429244/176938.terrain new file mode 100644 index 000000000..00daa9bd5 Binary files /dev/null and b/public/terrain/18/429244/176938.terrain differ diff --git a/public/terrain/18/429244/176939.terrain b/public/terrain/18/429244/176939.terrain new file mode 100644 index 000000000..cb38d1d5a Binary files /dev/null and b/public/terrain/18/429244/176939.terrain differ diff --git a/public/terrain/18/429244/176940.terrain b/public/terrain/18/429244/176940.terrain new file mode 100644 index 000000000..c3aae2d31 Binary files /dev/null and b/public/terrain/18/429244/176940.terrain differ diff --git a/public/terrain/18/429244/176941.terrain b/public/terrain/18/429244/176941.terrain new file mode 100644 index 000000000..80f95df7a Binary files /dev/null and b/public/terrain/18/429244/176941.terrain differ diff --git a/public/terrain/18/429244/176942.terrain b/public/terrain/18/429244/176942.terrain new file mode 100644 index 000000000..5277489f8 Binary files /dev/null and b/public/terrain/18/429244/176942.terrain differ diff --git a/public/terrain/18/429244/176943.terrain b/public/terrain/18/429244/176943.terrain new file mode 100644 index 000000000..ed52faa8e Binary files /dev/null and b/public/terrain/18/429244/176943.terrain differ diff --git a/public/terrain/18/429244/176944.terrain b/public/terrain/18/429244/176944.terrain new file mode 100644 index 000000000..10025dd3b Binary files /dev/null and b/public/terrain/18/429244/176944.terrain differ diff --git a/public/terrain/18/429244/176945.terrain b/public/terrain/18/429244/176945.terrain new file mode 100644 index 000000000..fc387fc8b Binary files /dev/null and b/public/terrain/18/429244/176945.terrain differ diff --git a/public/terrain/18/429244/176946.terrain b/public/terrain/18/429244/176946.terrain new file mode 100644 index 000000000..46966cf76 Binary files /dev/null and b/public/terrain/18/429244/176946.terrain differ diff --git a/public/terrain/18/429244/176947.terrain b/public/terrain/18/429244/176947.terrain new file mode 100644 index 000000000..d7cd2f929 Binary files /dev/null and b/public/terrain/18/429244/176947.terrain differ diff --git a/public/terrain/18/429244/176948.terrain b/public/terrain/18/429244/176948.terrain new file mode 100644 index 000000000..e9598a6b5 Binary files /dev/null and b/public/terrain/18/429244/176948.terrain differ diff --git a/public/terrain/18/429244/176949.terrain b/public/terrain/18/429244/176949.terrain new file mode 100644 index 000000000..36e029974 Binary files /dev/null and b/public/terrain/18/429244/176949.terrain differ diff --git a/public/terrain/18/429244/176950.terrain b/public/terrain/18/429244/176950.terrain new file mode 100644 index 000000000..52e974933 Binary files /dev/null and b/public/terrain/18/429244/176950.terrain differ diff --git a/public/terrain/18/429244/176951.terrain b/public/terrain/18/429244/176951.terrain new file mode 100644 index 000000000..8b0153dd4 Binary files /dev/null and b/public/terrain/18/429244/176951.terrain differ diff --git a/public/terrain/18/429244/176952.terrain b/public/terrain/18/429244/176952.terrain new file mode 100644 index 000000000..b79fab40d Binary files /dev/null and b/public/terrain/18/429244/176952.terrain differ diff --git a/public/terrain/18/429244/176953.terrain b/public/terrain/18/429244/176953.terrain new file mode 100644 index 000000000..a550c7406 Binary files /dev/null and b/public/terrain/18/429244/176953.terrain differ diff --git a/public/terrain/18/429244/176954.terrain b/public/terrain/18/429244/176954.terrain new file mode 100644 index 000000000..81143c123 Binary files /dev/null and b/public/terrain/18/429244/176954.terrain differ diff --git a/public/terrain/18/429244/176955.terrain b/public/terrain/18/429244/176955.terrain new file mode 100644 index 000000000..9925b7059 Binary files /dev/null and b/public/terrain/18/429244/176955.terrain differ diff --git a/public/terrain/18/429244/176956.terrain b/public/terrain/18/429244/176956.terrain new file mode 100644 index 000000000..999a3cfa2 Binary files /dev/null and b/public/terrain/18/429244/176956.terrain differ diff --git a/public/terrain/18/429244/176957.terrain b/public/terrain/18/429244/176957.terrain new file mode 100644 index 000000000..52835cd5e Binary files /dev/null and b/public/terrain/18/429244/176957.terrain differ diff --git a/public/terrain/18/429244/176958.terrain b/public/terrain/18/429244/176958.terrain new file mode 100644 index 000000000..c8f0365df Binary files /dev/null and b/public/terrain/18/429244/176958.terrain differ diff --git a/public/terrain/18/429244/176959.terrain b/public/terrain/18/429244/176959.terrain new file mode 100644 index 000000000..66da1f498 Binary files /dev/null and b/public/terrain/18/429244/176959.terrain differ diff --git a/public/terrain/18/429244/176960.terrain b/public/terrain/18/429244/176960.terrain new file mode 100644 index 000000000..8ef95aee8 Binary files /dev/null and b/public/terrain/18/429244/176960.terrain differ diff --git a/public/terrain/18/429244/176961.terrain b/public/terrain/18/429244/176961.terrain new file mode 100644 index 000000000..3336bc2d8 Binary files /dev/null and b/public/terrain/18/429244/176961.terrain differ diff --git a/public/terrain/18/429244/176962.terrain b/public/terrain/18/429244/176962.terrain new file mode 100644 index 000000000..f43629339 Binary files /dev/null and b/public/terrain/18/429244/176962.terrain differ diff --git a/public/terrain/18/429244/176963.terrain b/public/terrain/18/429244/176963.terrain new file mode 100644 index 000000000..4e7ceecf5 Binary files /dev/null and b/public/terrain/18/429244/176963.terrain differ diff --git a/public/terrain/18/429244/176964.terrain b/public/terrain/18/429244/176964.terrain new file mode 100644 index 000000000..f5848a70a Binary files /dev/null and b/public/terrain/18/429244/176964.terrain differ diff --git a/public/terrain/18/429244/176965.terrain b/public/terrain/18/429244/176965.terrain new file mode 100644 index 000000000..5b98c6892 Binary files /dev/null and b/public/terrain/18/429244/176965.terrain differ diff --git a/public/terrain/18/429244/176966.terrain b/public/terrain/18/429244/176966.terrain new file mode 100644 index 000000000..59cbadf8b Binary files /dev/null and b/public/terrain/18/429244/176966.terrain differ diff --git a/public/terrain/18/429244/176967.terrain b/public/terrain/18/429244/176967.terrain new file mode 100644 index 000000000..afbbdddd6 Binary files /dev/null and b/public/terrain/18/429244/176967.terrain differ diff --git a/public/terrain/18/429244/176968.terrain b/public/terrain/18/429244/176968.terrain new file mode 100644 index 000000000..552717297 Binary files /dev/null and b/public/terrain/18/429244/176968.terrain differ diff --git a/public/terrain/18/429244/176969.terrain b/public/terrain/18/429244/176969.terrain new file mode 100644 index 000000000..84f5fb0cb Binary files /dev/null and b/public/terrain/18/429244/176969.terrain differ diff --git a/public/terrain/18/429244/176970.terrain b/public/terrain/18/429244/176970.terrain new file mode 100644 index 000000000..604cdd7c0 Binary files /dev/null and b/public/terrain/18/429244/176970.terrain differ diff --git a/public/terrain/18/429244/176971.terrain b/public/terrain/18/429244/176971.terrain new file mode 100644 index 000000000..9e358a997 Binary files /dev/null and b/public/terrain/18/429244/176971.terrain differ diff --git a/public/terrain/18/429244/176972.terrain b/public/terrain/18/429244/176972.terrain new file mode 100644 index 000000000..5e298711d Binary files /dev/null and b/public/terrain/18/429244/176972.terrain differ diff --git a/public/terrain/18/429244/176973.terrain b/public/terrain/18/429244/176973.terrain new file mode 100644 index 000000000..f4612aa4d Binary files /dev/null and b/public/terrain/18/429244/176973.terrain differ diff --git a/public/terrain/18/429244/176974.terrain b/public/terrain/18/429244/176974.terrain new file mode 100644 index 000000000..3c68283e2 Binary files /dev/null and b/public/terrain/18/429244/176974.terrain differ diff --git a/public/terrain/18/429244/176975.terrain b/public/terrain/18/429244/176975.terrain new file mode 100644 index 000000000..fa0541996 Binary files /dev/null and b/public/terrain/18/429244/176975.terrain differ diff --git a/public/terrain/18/429244/176976.terrain b/public/terrain/18/429244/176976.terrain new file mode 100644 index 000000000..3b521be5f Binary files /dev/null and b/public/terrain/18/429244/176976.terrain differ diff --git a/public/terrain/18/429244/176977.terrain b/public/terrain/18/429244/176977.terrain new file mode 100644 index 000000000..f0ee0a7ca Binary files /dev/null and b/public/terrain/18/429244/176977.terrain differ diff --git a/public/terrain/18/429244/176978.terrain b/public/terrain/18/429244/176978.terrain new file mode 100644 index 000000000..937ab07c1 Binary files /dev/null and b/public/terrain/18/429244/176978.terrain differ diff --git a/public/terrain/18/429244/176979.terrain b/public/terrain/18/429244/176979.terrain new file mode 100644 index 000000000..08d378b20 Binary files /dev/null and b/public/terrain/18/429244/176979.terrain differ diff --git a/public/terrain/18/429244/176980.terrain b/public/terrain/18/429244/176980.terrain new file mode 100644 index 000000000..972fd57c4 Binary files /dev/null and b/public/terrain/18/429244/176980.terrain differ diff --git a/public/terrain/18/429244/176981.terrain b/public/terrain/18/429244/176981.terrain new file mode 100644 index 000000000..92e6ad581 Binary files /dev/null and b/public/terrain/18/429244/176981.terrain differ diff --git a/public/terrain/18/429244/176982.terrain b/public/terrain/18/429244/176982.terrain new file mode 100644 index 000000000..1ca9e321f Binary files /dev/null and b/public/terrain/18/429244/176982.terrain differ diff --git a/public/terrain/18/429244/176983.terrain b/public/terrain/18/429244/176983.terrain new file mode 100644 index 000000000..f18a3f174 Binary files /dev/null and b/public/terrain/18/429244/176983.terrain differ diff --git a/public/terrain/18/429244/176984.terrain b/public/terrain/18/429244/176984.terrain new file mode 100644 index 000000000..39ab9b091 Binary files /dev/null and b/public/terrain/18/429244/176984.terrain differ diff --git a/public/terrain/18/429244/176985.terrain b/public/terrain/18/429244/176985.terrain new file mode 100644 index 000000000..149dd3f52 Binary files /dev/null and b/public/terrain/18/429244/176985.terrain differ diff --git a/public/terrain/18/429244/176986.terrain b/public/terrain/18/429244/176986.terrain new file mode 100644 index 000000000..68368eb6b Binary files /dev/null and b/public/terrain/18/429244/176986.terrain differ diff --git a/public/terrain/18/429244/176987.terrain b/public/terrain/18/429244/176987.terrain new file mode 100644 index 000000000..82a1fbd39 Binary files /dev/null and b/public/terrain/18/429244/176987.terrain differ diff --git a/public/terrain/18/429244/176988.terrain b/public/terrain/18/429244/176988.terrain new file mode 100644 index 000000000..20bc991aa Binary files /dev/null and b/public/terrain/18/429244/176988.terrain differ diff --git a/public/terrain/18/429244/176989.terrain b/public/terrain/18/429244/176989.terrain new file mode 100644 index 000000000..06e207322 Binary files /dev/null and b/public/terrain/18/429244/176989.terrain differ diff --git a/public/terrain/18/429244/176990.terrain b/public/terrain/18/429244/176990.terrain new file mode 100644 index 000000000..a3b819b55 Binary files /dev/null and b/public/terrain/18/429244/176990.terrain differ diff --git a/public/terrain/18/429244/176991.terrain b/public/terrain/18/429244/176991.terrain new file mode 100644 index 000000000..f68c4afb1 Binary files /dev/null and b/public/terrain/18/429244/176991.terrain differ diff --git a/public/terrain/18/429244/176992.terrain b/public/terrain/18/429244/176992.terrain new file mode 100644 index 000000000..58c19a0e6 Binary files /dev/null and b/public/terrain/18/429244/176992.terrain differ diff --git a/public/terrain/18/429244/176993.terrain b/public/terrain/18/429244/176993.terrain new file mode 100644 index 000000000..8f84888e7 Binary files /dev/null and b/public/terrain/18/429244/176993.terrain differ diff --git a/public/terrain/18/429244/176994.terrain b/public/terrain/18/429244/176994.terrain new file mode 100644 index 000000000..5322e7e69 Binary files /dev/null and b/public/terrain/18/429244/176994.terrain differ diff --git a/public/terrain/18/429244/176995.terrain b/public/terrain/18/429244/176995.terrain new file mode 100644 index 000000000..90d398239 Binary files /dev/null and b/public/terrain/18/429244/176995.terrain differ diff --git a/public/terrain/18/429244/176996.terrain b/public/terrain/18/429244/176996.terrain new file mode 100644 index 000000000..6011824ba Binary files /dev/null and b/public/terrain/18/429244/176996.terrain differ diff --git a/public/terrain/18/429244/176997.terrain b/public/terrain/18/429244/176997.terrain new file mode 100644 index 000000000..bbcd90192 Binary files /dev/null and b/public/terrain/18/429244/176997.terrain differ diff --git a/public/terrain/18/429244/176998.terrain b/public/terrain/18/429244/176998.terrain new file mode 100644 index 000000000..14b969021 Binary files /dev/null and b/public/terrain/18/429244/176998.terrain differ diff --git a/public/terrain/18/429244/176999.terrain b/public/terrain/18/429244/176999.terrain new file mode 100644 index 000000000..96d567e66 Binary files /dev/null and b/public/terrain/18/429244/176999.terrain differ diff --git a/public/terrain/18/429244/177000.terrain b/public/terrain/18/429244/177000.terrain new file mode 100644 index 000000000..d6c84b2a3 Binary files /dev/null and b/public/terrain/18/429244/177000.terrain differ diff --git a/public/terrain/18/429244/177001.terrain b/public/terrain/18/429244/177001.terrain new file mode 100644 index 000000000..898afa867 Binary files /dev/null and b/public/terrain/18/429244/177001.terrain differ diff --git a/public/terrain/18/429244/177002.terrain b/public/terrain/18/429244/177002.terrain new file mode 100644 index 000000000..7daa8a1be Binary files /dev/null and b/public/terrain/18/429244/177002.terrain differ diff --git a/public/terrain/18/429244/177003.terrain b/public/terrain/18/429244/177003.terrain new file mode 100644 index 000000000..275cacba6 Binary files /dev/null and b/public/terrain/18/429244/177003.terrain differ diff --git a/public/terrain/18/429244/177004.terrain b/public/terrain/18/429244/177004.terrain new file mode 100644 index 000000000..06573c4c6 Binary files /dev/null and b/public/terrain/18/429244/177004.terrain differ diff --git a/public/terrain/18/429244/177005.terrain b/public/terrain/18/429244/177005.terrain new file mode 100644 index 000000000..cae26d3d9 Binary files /dev/null and b/public/terrain/18/429244/177005.terrain differ diff --git a/public/terrain/18/429244/177006.terrain b/public/terrain/18/429244/177006.terrain new file mode 100644 index 000000000..6da7c0682 Binary files /dev/null and b/public/terrain/18/429244/177006.terrain differ diff --git a/public/terrain/18/429244/177007.terrain b/public/terrain/18/429244/177007.terrain new file mode 100644 index 000000000..b94f5e4f2 Binary files /dev/null and b/public/terrain/18/429244/177007.terrain differ diff --git a/public/terrain/18/429244/177008.terrain b/public/terrain/18/429244/177008.terrain new file mode 100644 index 000000000..20f867a78 Binary files /dev/null and b/public/terrain/18/429244/177008.terrain differ diff --git a/public/terrain/18/429244/177009.terrain b/public/terrain/18/429244/177009.terrain new file mode 100644 index 000000000..b68d361b6 Binary files /dev/null and b/public/terrain/18/429244/177009.terrain differ diff --git a/public/terrain/18/429244/177010.terrain b/public/terrain/18/429244/177010.terrain new file mode 100644 index 000000000..dfae693b4 Binary files /dev/null and b/public/terrain/18/429244/177010.terrain differ diff --git a/public/terrain/18/429244/177011.terrain b/public/terrain/18/429244/177011.terrain new file mode 100644 index 000000000..68769a36c Binary files /dev/null and b/public/terrain/18/429244/177011.terrain differ diff --git a/public/terrain/18/429244/177012.terrain b/public/terrain/18/429244/177012.terrain new file mode 100644 index 000000000..8cd9b9495 Binary files /dev/null and b/public/terrain/18/429244/177012.terrain differ diff --git a/public/terrain/18/429244/177013.terrain b/public/terrain/18/429244/177013.terrain new file mode 100644 index 000000000..c7522952a Binary files /dev/null and b/public/terrain/18/429244/177013.terrain differ diff --git a/public/terrain/18/429244/177014.terrain b/public/terrain/18/429244/177014.terrain new file mode 100644 index 000000000..467fd4f7c Binary files /dev/null and b/public/terrain/18/429244/177014.terrain differ diff --git a/public/terrain/18/429244/177015.terrain b/public/terrain/18/429244/177015.terrain new file mode 100644 index 000000000..f480dfd26 Binary files /dev/null and b/public/terrain/18/429244/177015.terrain differ diff --git a/public/terrain/18/429244/177016.terrain b/public/terrain/18/429244/177016.terrain new file mode 100644 index 000000000..53c1c8949 Binary files /dev/null and b/public/terrain/18/429244/177016.terrain differ diff --git a/public/terrain/18/429244/177017.terrain b/public/terrain/18/429244/177017.terrain new file mode 100644 index 000000000..7f7656c56 Binary files /dev/null and b/public/terrain/18/429244/177017.terrain differ diff --git a/public/terrain/18/429244/177018.terrain b/public/terrain/18/429244/177018.terrain new file mode 100644 index 000000000..d51b219a6 Binary files /dev/null and b/public/terrain/18/429244/177018.terrain differ diff --git a/public/terrain/18/429244/177019.terrain b/public/terrain/18/429244/177019.terrain new file mode 100644 index 000000000..231bdd738 Binary files /dev/null and b/public/terrain/18/429244/177019.terrain differ diff --git a/public/terrain/18/429244/177020.terrain b/public/terrain/18/429244/177020.terrain new file mode 100644 index 000000000..96d3ab05c Binary files /dev/null and b/public/terrain/18/429244/177020.terrain differ diff --git a/public/terrain/18/429244/177021.terrain b/public/terrain/18/429244/177021.terrain new file mode 100644 index 000000000..c710efd9a Binary files /dev/null and b/public/terrain/18/429244/177021.terrain differ diff --git a/public/terrain/18/429244/177022.terrain b/public/terrain/18/429244/177022.terrain new file mode 100644 index 000000000..88f9ba1b2 Binary files /dev/null and b/public/terrain/18/429244/177022.terrain differ diff --git a/public/terrain/18/429244/177023.terrain b/public/terrain/18/429244/177023.terrain new file mode 100644 index 000000000..50da35ff7 Binary files /dev/null and b/public/terrain/18/429244/177023.terrain differ diff --git a/public/terrain/18/429244/177024.terrain b/public/terrain/18/429244/177024.terrain new file mode 100644 index 000000000..e23250e43 Binary files /dev/null and b/public/terrain/18/429244/177024.terrain differ diff --git a/public/terrain/18/429244/177025.terrain b/public/terrain/18/429244/177025.terrain new file mode 100644 index 000000000..e8f9a4ff6 Binary files /dev/null and b/public/terrain/18/429244/177025.terrain differ diff --git a/public/terrain/18/429244/177026.terrain b/public/terrain/18/429244/177026.terrain new file mode 100644 index 000000000..c13ae539b Binary files /dev/null and b/public/terrain/18/429244/177026.terrain differ diff --git a/public/terrain/18/429244/177027.terrain b/public/terrain/18/429244/177027.terrain new file mode 100644 index 000000000..10d7aa7fd Binary files /dev/null and b/public/terrain/18/429244/177027.terrain differ diff --git a/public/terrain/18/429244/177028.terrain b/public/terrain/18/429244/177028.terrain new file mode 100644 index 000000000..1deaf9010 Binary files /dev/null and b/public/terrain/18/429244/177028.terrain differ diff --git a/public/terrain/18/429244/177029.terrain b/public/terrain/18/429244/177029.terrain new file mode 100644 index 000000000..57c43d50b Binary files /dev/null and b/public/terrain/18/429244/177029.terrain differ diff --git a/public/terrain/18/429245/176871.terrain b/public/terrain/18/429245/176871.terrain new file mode 100644 index 000000000..d416c00b2 Binary files /dev/null and b/public/terrain/18/429245/176871.terrain differ diff --git a/public/terrain/18/429245/176872.terrain b/public/terrain/18/429245/176872.terrain new file mode 100644 index 000000000..3dd85d463 Binary files /dev/null and b/public/terrain/18/429245/176872.terrain differ diff --git a/public/terrain/18/429245/176873.terrain b/public/terrain/18/429245/176873.terrain new file mode 100644 index 000000000..6462f4d01 Binary files /dev/null and b/public/terrain/18/429245/176873.terrain differ diff --git a/public/terrain/18/429245/176874.terrain b/public/terrain/18/429245/176874.terrain new file mode 100644 index 000000000..457c17fd4 Binary files /dev/null and b/public/terrain/18/429245/176874.terrain differ diff --git a/public/terrain/18/429245/176875.terrain b/public/terrain/18/429245/176875.terrain new file mode 100644 index 000000000..dce992b05 Binary files /dev/null and b/public/terrain/18/429245/176875.terrain differ diff --git a/public/terrain/18/429245/176876.terrain b/public/terrain/18/429245/176876.terrain new file mode 100644 index 000000000..2b37289fe Binary files /dev/null and b/public/terrain/18/429245/176876.terrain differ diff --git a/public/terrain/18/429245/176877.terrain b/public/terrain/18/429245/176877.terrain new file mode 100644 index 000000000..128145eda Binary files /dev/null and b/public/terrain/18/429245/176877.terrain differ diff --git a/public/terrain/18/429245/176878.terrain b/public/terrain/18/429245/176878.terrain new file mode 100644 index 000000000..f761b0e26 Binary files /dev/null and b/public/terrain/18/429245/176878.terrain differ diff --git a/public/terrain/18/429245/176879.terrain b/public/terrain/18/429245/176879.terrain new file mode 100644 index 000000000..1d4df8840 Binary files /dev/null and b/public/terrain/18/429245/176879.terrain differ diff --git a/public/terrain/18/429245/176880.terrain b/public/terrain/18/429245/176880.terrain new file mode 100644 index 000000000..3ff8b9c9a Binary files /dev/null and b/public/terrain/18/429245/176880.terrain differ diff --git a/public/terrain/18/429245/176881.terrain b/public/terrain/18/429245/176881.terrain new file mode 100644 index 000000000..df0ba351b Binary files /dev/null and b/public/terrain/18/429245/176881.terrain differ diff --git a/public/terrain/18/429245/176882.terrain b/public/terrain/18/429245/176882.terrain new file mode 100644 index 000000000..03bf53ca1 Binary files /dev/null and b/public/terrain/18/429245/176882.terrain differ diff --git a/public/terrain/18/429245/176883.terrain b/public/terrain/18/429245/176883.terrain new file mode 100644 index 000000000..4ee7d4cde Binary files /dev/null and b/public/terrain/18/429245/176883.terrain differ diff --git a/public/terrain/18/429245/176884.terrain b/public/terrain/18/429245/176884.terrain new file mode 100644 index 000000000..b20972006 Binary files /dev/null and b/public/terrain/18/429245/176884.terrain differ diff --git a/public/terrain/18/429245/176885.terrain b/public/terrain/18/429245/176885.terrain new file mode 100644 index 000000000..261fe5979 Binary files /dev/null and b/public/terrain/18/429245/176885.terrain differ diff --git a/public/terrain/18/429245/176886.terrain b/public/terrain/18/429245/176886.terrain new file mode 100644 index 000000000..090fd5e00 Binary files /dev/null and b/public/terrain/18/429245/176886.terrain differ diff --git a/public/terrain/18/429245/176887.terrain b/public/terrain/18/429245/176887.terrain new file mode 100644 index 000000000..8cbe7b70f Binary files /dev/null and b/public/terrain/18/429245/176887.terrain differ diff --git a/public/terrain/18/429245/176888.terrain b/public/terrain/18/429245/176888.terrain new file mode 100644 index 000000000..a39968088 Binary files /dev/null and b/public/terrain/18/429245/176888.terrain differ diff --git a/public/terrain/18/429245/176889.terrain b/public/terrain/18/429245/176889.terrain new file mode 100644 index 000000000..99bdbb751 Binary files /dev/null and b/public/terrain/18/429245/176889.terrain differ diff --git a/public/terrain/18/429245/176890.terrain b/public/terrain/18/429245/176890.terrain new file mode 100644 index 000000000..5f8fa22fa Binary files /dev/null and b/public/terrain/18/429245/176890.terrain differ diff --git a/public/terrain/18/429245/176891.terrain b/public/terrain/18/429245/176891.terrain new file mode 100644 index 000000000..9a8710ce0 Binary files /dev/null and b/public/terrain/18/429245/176891.terrain differ diff --git a/public/terrain/18/429245/176892.terrain b/public/terrain/18/429245/176892.terrain new file mode 100644 index 000000000..b58edd8ad Binary files /dev/null and b/public/terrain/18/429245/176892.terrain differ diff --git a/public/terrain/18/429245/176893.terrain b/public/terrain/18/429245/176893.terrain new file mode 100644 index 000000000..29a31351c Binary files /dev/null and b/public/terrain/18/429245/176893.terrain differ diff --git a/public/terrain/18/429245/176894.terrain b/public/terrain/18/429245/176894.terrain new file mode 100644 index 000000000..62e7a5c1e Binary files /dev/null and b/public/terrain/18/429245/176894.terrain differ diff --git a/public/terrain/18/429245/176895.terrain b/public/terrain/18/429245/176895.terrain new file mode 100644 index 000000000..4bd51d2c9 Binary files /dev/null and b/public/terrain/18/429245/176895.terrain differ diff --git a/public/terrain/18/429245/176896.terrain b/public/terrain/18/429245/176896.terrain new file mode 100644 index 000000000..d6cead9d8 Binary files /dev/null and b/public/terrain/18/429245/176896.terrain differ diff --git a/public/terrain/18/429245/176897.terrain b/public/terrain/18/429245/176897.terrain new file mode 100644 index 000000000..eca7c979b Binary files /dev/null and b/public/terrain/18/429245/176897.terrain differ diff --git a/public/terrain/18/429245/176898.terrain b/public/terrain/18/429245/176898.terrain new file mode 100644 index 000000000..a11a17107 Binary files /dev/null and b/public/terrain/18/429245/176898.terrain differ diff --git a/public/terrain/18/429245/176899.terrain b/public/terrain/18/429245/176899.terrain new file mode 100644 index 000000000..09bcb1383 Binary files /dev/null and b/public/terrain/18/429245/176899.terrain differ diff --git a/public/terrain/18/429245/176900.terrain b/public/terrain/18/429245/176900.terrain new file mode 100644 index 000000000..aee71303a Binary files /dev/null and b/public/terrain/18/429245/176900.terrain differ diff --git a/public/terrain/18/429245/176901.terrain b/public/terrain/18/429245/176901.terrain new file mode 100644 index 000000000..73891b21a Binary files /dev/null and b/public/terrain/18/429245/176901.terrain differ diff --git a/public/terrain/18/429245/176902.terrain b/public/terrain/18/429245/176902.terrain new file mode 100644 index 000000000..948f62b55 Binary files /dev/null and b/public/terrain/18/429245/176902.terrain differ diff --git a/public/terrain/18/429245/176903.terrain b/public/terrain/18/429245/176903.terrain new file mode 100644 index 000000000..89763233d Binary files /dev/null and b/public/terrain/18/429245/176903.terrain differ diff --git a/public/terrain/18/429245/176904.terrain b/public/terrain/18/429245/176904.terrain new file mode 100644 index 000000000..b76593a13 Binary files /dev/null and b/public/terrain/18/429245/176904.terrain differ diff --git a/public/terrain/18/429245/176905.terrain b/public/terrain/18/429245/176905.terrain new file mode 100644 index 000000000..5152ece7e Binary files /dev/null and b/public/terrain/18/429245/176905.terrain differ diff --git a/public/terrain/18/429245/176906.terrain b/public/terrain/18/429245/176906.terrain new file mode 100644 index 000000000..5f7ca87d3 Binary files /dev/null and b/public/terrain/18/429245/176906.terrain differ diff --git a/public/terrain/18/429245/176907.terrain b/public/terrain/18/429245/176907.terrain new file mode 100644 index 000000000..ed9c6946e Binary files /dev/null and b/public/terrain/18/429245/176907.terrain differ diff --git a/public/terrain/18/429245/176908.terrain b/public/terrain/18/429245/176908.terrain new file mode 100644 index 000000000..fba6cb4ba Binary files /dev/null and b/public/terrain/18/429245/176908.terrain differ diff --git a/public/terrain/18/429245/176909.terrain b/public/terrain/18/429245/176909.terrain new file mode 100644 index 000000000..b9c685533 Binary files /dev/null and b/public/terrain/18/429245/176909.terrain differ diff --git a/public/terrain/18/429245/176910.terrain b/public/terrain/18/429245/176910.terrain new file mode 100644 index 000000000..9425e27de Binary files /dev/null and b/public/terrain/18/429245/176910.terrain differ diff --git a/public/terrain/18/429245/176911.terrain b/public/terrain/18/429245/176911.terrain new file mode 100644 index 000000000..799e60b93 Binary files /dev/null and b/public/terrain/18/429245/176911.terrain differ diff --git a/public/terrain/18/429245/176912.terrain b/public/terrain/18/429245/176912.terrain new file mode 100644 index 000000000..c6287fbec Binary files /dev/null and b/public/terrain/18/429245/176912.terrain differ diff --git a/public/terrain/18/429245/176913.terrain b/public/terrain/18/429245/176913.terrain new file mode 100644 index 000000000..e540be2b4 Binary files /dev/null and b/public/terrain/18/429245/176913.terrain differ diff --git a/public/terrain/18/429245/176914.terrain b/public/terrain/18/429245/176914.terrain new file mode 100644 index 000000000..07656c962 Binary files /dev/null and b/public/terrain/18/429245/176914.terrain differ diff --git a/public/terrain/18/429245/176915.terrain b/public/terrain/18/429245/176915.terrain new file mode 100644 index 000000000..b68359a7c Binary files /dev/null and b/public/terrain/18/429245/176915.terrain differ diff --git a/public/terrain/18/429245/176916.terrain b/public/terrain/18/429245/176916.terrain new file mode 100644 index 000000000..e2bd10c9a Binary files /dev/null and b/public/terrain/18/429245/176916.terrain differ diff --git a/public/terrain/18/429245/176917.terrain b/public/terrain/18/429245/176917.terrain new file mode 100644 index 000000000..f819741bd Binary files /dev/null and b/public/terrain/18/429245/176917.terrain differ diff --git a/public/terrain/18/429245/176918.terrain b/public/terrain/18/429245/176918.terrain new file mode 100644 index 000000000..8520edbe0 Binary files /dev/null and b/public/terrain/18/429245/176918.terrain differ diff --git a/public/terrain/18/429245/176919.terrain b/public/terrain/18/429245/176919.terrain new file mode 100644 index 000000000..2a98ba732 Binary files /dev/null and b/public/terrain/18/429245/176919.terrain differ diff --git a/public/terrain/18/429245/176920.terrain b/public/terrain/18/429245/176920.terrain new file mode 100644 index 000000000..8d1e4ce10 Binary files /dev/null and b/public/terrain/18/429245/176920.terrain differ diff --git a/public/terrain/18/429245/176921.terrain b/public/terrain/18/429245/176921.terrain new file mode 100644 index 000000000..2f455fe37 Binary files /dev/null and b/public/terrain/18/429245/176921.terrain differ diff --git a/public/terrain/18/429245/176922.terrain b/public/terrain/18/429245/176922.terrain new file mode 100644 index 000000000..42f637865 Binary files /dev/null and b/public/terrain/18/429245/176922.terrain differ diff --git a/public/terrain/18/429245/176923.terrain b/public/terrain/18/429245/176923.terrain new file mode 100644 index 000000000..cd2aba597 Binary files /dev/null and b/public/terrain/18/429245/176923.terrain differ diff --git a/public/terrain/18/429245/176924.terrain b/public/terrain/18/429245/176924.terrain new file mode 100644 index 000000000..5e32b1418 Binary files /dev/null and b/public/terrain/18/429245/176924.terrain differ diff --git a/public/terrain/18/429245/176925.terrain b/public/terrain/18/429245/176925.terrain new file mode 100644 index 000000000..66cd64c9d Binary files /dev/null and b/public/terrain/18/429245/176925.terrain differ diff --git a/public/terrain/18/429245/176926.terrain b/public/terrain/18/429245/176926.terrain new file mode 100644 index 000000000..0f4e8bf56 Binary files /dev/null and b/public/terrain/18/429245/176926.terrain differ diff --git a/public/terrain/18/429245/176927.terrain b/public/terrain/18/429245/176927.terrain new file mode 100644 index 000000000..e5ed92b18 Binary files /dev/null and b/public/terrain/18/429245/176927.terrain differ diff --git a/public/terrain/18/429245/176928.terrain b/public/terrain/18/429245/176928.terrain new file mode 100644 index 000000000..54332550d Binary files /dev/null and b/public/terrain/18/429245/176928.terrain differ diff --git a/public/terrain/18/429245/176929.terrain b/public/terrain/18/429245/176929.terrain new file mode 100644 index 000000000..6a5541411 Binary files /dev/null and b/public/terrain/18/429245/176929.terrain differ diff --git a/public/terrain/18/429245/176930.terrain b/public/terrain/18/429245/176930.terrain new file mode 100644 index 000000000..00d643896 Binary files /dev/null and b/public/terrain/18/429245/176930.terrain differ diff --git a/public/terrain/18/429245/176931.terrain b/public/terrain/18/429245/176931.terrain new file mode 100644 index 000000000..1b4c27213 Binary files /dev/null and b/public/terrain/18/429245/176931.terrain differ diff --git a/public/terrain/18/429245/176932.terrain b/public/terrain/18/429245/176932.terrain new file mode 100644 index 000000000..8349c1176 Binary files /dev/null and b/public/terrain/18/429245/176932.terrain differ diff --git a/public/terrain/18/429245/176933.terrain b/public/terrain/18/429245/176933.terrain new file mode 100644 index 000000000..77f0749f2 Binary files /dev/null and b/public/terrain/18/429245/176933.terrain differ diff --git a/public/terrain/18/429245/176934.terrain b/public/terrain/18/429245/176934.terrain new file mode 100644 index 000000000..950b0b591 Binary files /dev/null and b/public/terrain/18/429245/176934.terrain differ diff --git a/public/terrain/18/429245/176935.terrain b/public/terrain/18/429245/176935.terrain new file mode 100644 index 000000000..a4c571b60 Binary files /dev/null and b/public/terrain/18/429245/176935.terrain differ diff --git a/public/terrain/18/429245/176936.terrain b/public/terrain/18/429245/176936.terrain new file mode 100644 index 000000000..9b180d555 Binary files /dev/null and b/public/terrain/18/429245/176936.terrain differ diff --git a/public/terrain/18/429245/176937.terrain b/public/terrain/18/429245/176937.terrain new file mode 100644 index 000000000..f89a7006e Binary files /dev/null and b/public/terrain/18/429245/176937.terrain differ diff --git a/public/terrain/18/429245/176938.terrain b/public/terrain/18/429245/176938.terrain new file mode 100644 index 000000000..05a68385c Binary files /dev/null and b/public/terrain/18/429245/176938.terrain differ diff --git a/public/terrain/18/429245/176939.terrain b/public/terrain/18/429245/176939.terrain new file mode 100644 index 000000000..8625e6a76 Binary files /dev/null and b/public/terrain/18/429245/176939.terrain differ diff --git a/public/terrain/18/429245/176940.terrain b/public/terrain/18/429245/176940.terrain new file mode 100644 index 000000000..7c0fd2036 Binary files /dev/null and b/public/terrain/18/429245/176940.terrain differ diff --git a/public/terrain/18/429245/176941.terrain b/public/terrain/18/429245/176941.terrain new file mode 100644 index 000000000..c4436247e Binary files /dev/null and b/public/terrain/18/429245/176941.terrain differ diff --git a/public/terrain/18/429245/176942.terrain b/public/terrain/18/429245/176942.terrain new file mode 100644 index 000000000..d8aeb2979 Binary files /dev/null and b/public/terrain/18/429245/176942.terrain differ diff --git a/public/terrain/18/429245/176943.terrain b/public/terrain/18/429245/176943.terrain new file mode 100644 index 000000000..f3c599374 Binary files /dev/null and b/public/terrain/18/429245/176943.terrain differ diff --git a/public/terrain/18/429245/176944.terrain b/public/terrain/18/429245/176944.terrain new file mode 100644 index 000000000..9cc865b22 Binary files /dev/null and b/public/terrain/18/429245/176944.terrain differ diff --git a/public/terrain/18/429245/176945.terrain b/public/terrain/18/429245/176945.terrain new file mode 100644 index 000000000..632f71cf5 Binary files /dev/null and b/public/terrain/18/429245/176945.terrain differ diff --git a/public/terrain/18/429245/176946.terrain b/public/terrain/18/429245/176946.terrain new file mode 100644 index 000000000..41a33be32 Binary files /dev/null and b/public/terrain/18/429245/176946.terrain differ diff --git a/public/terrain/18/429245/176947.terrain b/public/terrain/18/429245/176947.terrain new file mode 100644 index 000000000..34e79eb09 Binary files /dev/null and b/public/terrain/18/429245/176947.terrain differ diff --git a/public/terrain/18/429245/176948.terrain b/public/terrain/18/429245/176948.terrain new file mode 100644 index 000000000..e19733630 Binary files /dev/null and b/public/terrain/18/429245/176948.terrain differ diff --git a/public/terrain/18/429245/176949.terrain b/public/terrain/18/429245/176949.terrain new file mode 100644 index 000000000..9dd13f876 Binary files /dev/null and b/public/terrain/18/429245/176949.terrain differ diff --git a/public/terrain/18/429245/176950.terrain b/public/terrain/18/429245/176950.terrain new file mode 100644 index 000000000..b58c3d813 Binary files /dev/null and b/public/terrain/18/429245/176950.terrain differ diff --git a/public/terrain/18/429245/176951.terrain b/public/terrain/18/429245/176951.terrain new file mode 100644 index 000000000..af0afbe92 Binary files /dev/null and b/public/terrain/18/429245/176951.terrain differ diff --git a/public/terrain/18/429245/176952.terrain b/public/terrain/18/429245/176952.terrain new file mode 100644 index 000000000..f4696011c Binary files /dev/null and b/public/terrain/18/429245/176952.terrain differ diff --git a/public/terrain/18/429245/176953.terrain b/public/terrain/18/429245/176953.terrain new file mode 100644 index 000000000..c5830351a Binary files /dev/null and b/public/terrain/18/429245/176953.terrain differ diff --git a/public/terrain/18/429245/176954.terrain b/public/terrain/18/429245/176954.terrain new file mode 100644 index 000000000..fe4f56baa Binary files /dev/null and b/public/terrain/18/429245/176954.terrain differ diff --git a/public/terrain/18/429245/176955.terrain b/public/terrain/18/429245/176955.terrain new file mode 100644 index 000000000..cf60f114c Binary files /dev/null and b/public/terrain/18/429245/176955.terrain differ diff --git a/public/terrain/18/429245/176956.terrain b/public/terrain/18/429245/176956.terrain new file mode 100644 index 000000000..6e5e76489 Binary files /dev/null and b/public/terrain/18/429245/176956.terrain differ diff --git a/public/terrain/18/429245/176957.terrain b/public/terrain/18/429245/176957.terrain new file mode 100644 index 000000000..f26e232b0 Binary files /dev/null and b/public/terrain/18/429245/176957.terrain differ diff --git a/public/terrain/18/429245/176958.terrain b/public/terrain/18/429245/176958.terrain new file mode 100644 index 000000000..ee9f45101 Binary files /dev/null and b/public/terrain/18/429245/176958.terrain differ diff --git a/public/terrain/18/429245/176959.terrain b/public/terrain/18/429245/176959.terrain new file mode 100644 index 000000000..34b1ff0d2 Binary files /dev/null and b/public/terrain/18/429245/176959.terrain differ diff --git a/public/terrain/18/429245/176960.terrain b/public/terrain/18/429245/176960.terrain new file mode 100644 index 000000000..6ce7ab2c8 Binary files /dev/null and b/public/terrain/18/429245/176960.terrain differ diff --git a/public/terrain/18/429245/176961.terrain b/public/terrain/18/429245/176961.terrain new file mode 100644 index 000000000..949072ac1 Binary files /dev/null and b/public/terrain/18/429245/176961.terrain differ diff --git a/public/terrain/18/429245/176962.terrain b/public/terrain/18/429245/176962.terrain new file mode 100644 index 000000000..38a4be470 Binary files /dev/null and b/public/terrain/18/429245/176962.terrain differ diff --git a/public/terrain/18/429245/176963.terrain b/public/terrain/18/429245/176963.terrain new file mode 100644 index 000000000..b2e51f295 Binary files /dev/null and b/public/terrain/18/429245/176963.terrain differ diff --git a/public/terrain/18/429245/176964.terrain b/public/terrain/18/429245/176964.terrain new file mode 100644 index 000000000..16eaa57d2 Binary files /dev/null and b/public/terrain/18/429245/176964.terrain differ diff --git a/public/terrain/18/429245/176965.terrain b/public/terrain/18/429245/176965.terrain new file mode 100644 index 000000000..5f522b2ae Binary files /dev/null and b/public/terrain/18/429245/176965.terrain differ diff --git a/public/terrain/18/429245/176966.terrain b/public/terrain/18/429245/176966.terrain new file mode 100644 index 000000000..1ec378294 Binary files /dev/null and b/public/terrain/18/429245/176966.terrain differ diff --git a/public/terrain/18/429245/176967.terrain b/public/terrain/18/429245/176967.terrain new file mode 100644 index 000000000..0f62a13ef Binary files /dev/null and b/public/terrain/18/429245/176967.terrain differ diff --git a/public/terrain/18/429245/176968.terrain b/public/terrain/18/429245/176968.terrain new file mode 100644 index 000000000..10d5b5858 Binary files /dev/null and b/public/terrain/18/429245/176968.terrain differ diff --git a/public/terrain/18/429245/176969.terrain b/public/terrain/18/429245/176969.terrain new file mode 100644 index 000000000..d27d897e5 Binary files /dev/null and b/public/terrain/18/429245/176969.terrain differ diff --git a/public/terrain/18/429245/176970.terrain b/public/terrain/18/429245/176970.terrain new file mode 100644 index 000000000..d66fd01ad Binary files /dev/null and b/public/terrain/18/429245/176970.terrain differ diff --git a/public/terrain/18/429245/176971.terrain b/public/terrain/18/429245/176971.terrain new file mode 100644 index 000000000..0396b0eb9 Binary files /dev/null and b/public/terrain/18/429245/176971.terrain differ diff --git a/public/terrain/18/429245/176972.terrain b/public/terrain/18/429245/176972.terrain new file mode 100644 index 000000000..1898565c2 Binary files /dev/null and b/public/terrain/18/429245/176972.terrain differ diff --git a/public/terrain/18/429245/176973.terrain b/public/terrain/18/429245/176973.terrain new file mode 100644 index 000000000..7b37e06db Binary files /dev/null and b/public/terrain/18/429245/176973.terrain differ diff --git a/public/terrain/18/429245/176974.terrain b/public/terrain/18/429245/176974.terrain new file mode 100644 index 000000000..b7590896e Binary files /dev/null and b/public/terrain/18/429245/176974.terrain differ diff --git a/public/terrain/18/429245/176975.terrain b/public/terrain/18/429245/176975.terrain new file mode 100644 index 000000000..de2347a99 Binary files /dev/null and b/public/terrain/18/429245/176975.terrain differ diff --git a/public/terrain/18/429245/176976.terrain b/public/terrain/18/429245/176976.terrain new file mode 100644 index 000000000..25f089b4e Binary files /dev/null and b/public/terrain/18/429245/176976.terrain differ diff --git a/public/terrain/18/429245/176977.terrain b/public/terrain/18/429245/176977.terrain new file mode 100644 index 000000000..816508433 Binary files /dev/null and b/public/terrain/18/429245/176977.terrain differ diff --git a/public/terrain/18/429245/176978.terrain b/public/terrain/18/429245/176978.terrain new file mode 100644 index 000000000..814cef64a Binary files /dev/null and b/public/terrain/18/429245/176978.terrain differ diff --git a/public/terrain/18/429245/176979.terrain b/public/terrain/18/429245/176979.terrain new file mode 100644 index 000000000..5d70512fa Binary files /dev/null and b/public/terrain/18/429245/176979.terrain differ diff --git a/public/terrain/18/429245/176980.terrain b/public/terrain/18/429245/176980.terrain new file mode 100644 index 000000000..049ca2fc7 Binary files /dev/null and b/public/terrain/18/429245/176980.terrain differ diff --git a/public/terrain/18/429245/176981.terrain b/public/terrain/18/429245/176981.terrain new file mode 100644 index 000000000..224a4be37 Binary files /dev/null and b/public/terrain/18/429245/176981.terrain differ diff --git a/public/terrain/18/429245/176982.terrain b/public/terrain/18/429245/176982.terrain new file mode 100644 index 000000000..db5c11c2f Binary files /dev/null and b/public/terrain/18/429245/176982.terrain differ diff --git a/public/terrain/18/429245/176983.terrain b/public/terrain/18/429245/176983.terrain new file mode 100644 index 000000000..f73fbe85e Binary files /dev/null and b/public/terrain/18/429245/176983.terrain differ diff --git a/public/terrain/18/429245/176984.terrain b/public/terrain/18/429245/176984.terrain new file mode 100644 index 000000000..69bf5b876 Binary files /dev/null and b/public/terrain/18/429245/176984.terrain differ diff --git a/public/terrain/18/429245/176985.terrain b/public/terrain/18/429245/176985.terrain new file mode 100644 index 000000000..1caf4dca9 Binary files /dev/null and b/public/terrain/18/429245/176985.terrain differ diff --git a/public/terrain/18/429245/176986.terrain b/public/terrain/18/429245/176986.terrain new file mode 100644 index 000000000..4bc7a4f0b Binary files /dev/null and b/public/terrain/18/429245/176986.terrain differ diff --git a/public/terrain/18/429245/176987.terrain b/public/terrain/18/429245/176987.terrain new file mode 100644 index 000000000..5e7aca3a4 Binary files /dev/null and b/public/terrain/18/429245/176987.terrain differ diff --git a/public/terrain/18/429245/176988.terrain b/public/terrain/18/429245/176988.terrain new file mode 100644 index 000000000..e9ded061a Binary files /dev/null and b/public/terrain/18/429245/176988.terrain differ diff --git a/public/terrain/18/429245/176989.terrain b/public/terrain/18/429245/176989.terrain new file mode 100644 index 000000000..3010dffec Binary files /dev/null and b/public/terrain/18/429245/176989.terrain differ diff --git a/public/terrain/18/429245/176990.terrain b/public/terrain/18/429245/176990.terrain new file mode 100644 index 000000000..ed52f55c7 Binary files /dev/null and b/public/terrain/18/429245/176990.terrain differ diff --git a/public/terrain/18/429245/176991.terrain b/public/terrain/18/429245/176991.terrain new file mode 100644 index 000000000..bae9c56b6 Binary files /dev/null and b/public/terrain/18/429245/176991.terrain differ diff --git a/public/terrain/18/429245/176992.terrain b/public/terrain/18/429245/176992.terrain new file mode 100644 index 000000000..9679ce268 Binary files /dev/null and b/public/terrain/18/429245/176992.terrain differ diff --git a/public/terrain/18/429245/176993.terrain b/public/terrain/18/429245/176993.terrain new file mode 100644 index 000000000..bb4552176 Binary files /dev/null and b/public/terrain/18/429245/176993.terrain differ diff --git a/public/terrain/18/429245/176994.terrain b/public/terrain/18/429245/176994.terrain new file mode 100644 index 000000000..054fa37d0 Binary files /dev/null and b/public/terrain/18/429245/176994.terrain differ diff --git a/public/terrain/18/429245/176995.terrain b/public/terrain/18/429245/176995.terrain new file mode 100644 index 000000000..1b20a6952 Binary files /dev/null and b/public/terrain/18/429245/176995.terrain differ diff --git a/public/terrain/18/429245/176996.terrain b/public/terrain/18/429245/176996.terrain new file mode 100644 index 000000000..b3eaee379 Binary files /dev/null and b/public/terrain/18/429245/176996.terrain differ diff --git a/public/terrain/18/429245/176997.terrain b/public/terrain/18/429245/176997.terrain new file mode 100644 index 000000000..9bd0336df Binary files /dev/null and b/public/terrain/18/429245/176997.terrain differ diff --git a/public/terrain/18/429245/176998.terrain b/public/terrain/18/429245/176998.terrain new file mode 100644 index 000000000..e3285db18 Binary files /dev/null and b/public/terrain/18/429245/176998.terrain differ diff --git a/public/terrain/18/429245/176999.terrain b/public/terrain/18/429245/176999.terrain new file mode 100644 index 000000000..e0ed5d6b0 Binary files /dev/null and b/public/terrain/18/429245/176999.terrain differ diff --git a/public/terrain/18/429245/177000.terrain b/public/terrain/18/429245/177000.terrain new file mode 100644 index 000000000..45be359ae Binary files /dev/null and b/public/terrain/18/429245/177000.terrain differ diff --git a/public/terrain/18/429245/177001.terrain b/public/terrain/18/429245/177001.terrain new file mode 100644 index 000000000..c215ea31a Binary files /dev/null and b/public/terrain/18/429245/177001.terrain differ diff --git a/public/terrain/18/429245/177002.terrain b/public/terrain/18/429245/177002.terrain new file mode 100644 index 000000000..7dbdc5507 Binary files /dev/null and b/public/terrain/18/429245/177002.terrain differ diff --git a/public/terrain/18/429245/177003.terrain b/public/terrain/18/429245/177003.terrain new file mode 100644 index 000000000..6919bb51b Binary files /dev/null and b/public/terrain/18/429245/177003.terrain differ diff --git a/public/terrain/18/429245/177004.terrain b/public/terrain/18/429245/177004.terrain new file mode 100644 index 000000000..c0f6b6cfb Binary files /dev/null and b/public/terrain/18/429245/177004.terrain differ diff --git a/public/terrain/18/429245/177005.terrain b/public/terrain/18/429245/177005.terrain new file mode 100644 index 000000000..4b2a37938 Binary files /dev/null and b/public/terrain/18/429245/177005.terrain differ diff --git a/public/terrain/18/429245/177006.terrain b/public/terrain/18/429245/177006.terrain new file mode 100644 index 000000000..0095e1a4b Binary files /dev/null and b/public/terrain/18/429245/177006.terrain differ diff --git a/public/terrain/18/429245/177007.terrain b/public/terrain/18/429245/177007.terrain new file mode 100644 index 000000000..c5e8f4901 Binary files /dev/null and b/public/terrain/18/429245/177007.terrain differ diff --git a/public/terrain/18/429245/177008.terrain b/public/terrain/18/429245/177008.terrain new file mode 100644 index 000000000..44fd3effa Binary files /dev/null and b/public/terrain/18/429245/177008.terrain differ diff --git a/public/terrain/18/429245/177009.terrain b/public/terrain/18/429245/177009.terrain new file mode 100644 index 000000000..e07a632eb Binary files /dev/null and b/public/terrain/18/429245/177009.terrain differ diff --git a/public/terrain/18/429245/177010.terrain b/public/terrain/18/429245/177010.terrain new file mode 100644 index 000000000..02c5ee01f Binary files /dev/null and b/public/terrain/18/429245/177010.terrain differ diff --git a/public/terrain/18/429245/177011.terrain b/public/terrain/18/429245/177011.terrain new file mode 100644 index 000000000..5d5cd1b34 Binary files /dev/null and b/public/terrain/18/429245/177011.terrain differ diff --git a/public/terrain/18/429245/177012.terrain b/public/terrain/18/429245/177012.terrain new file mode 100644 index 000000000..d7d12da68 Binary files /dev/null and b/public/terrain/18/429245/177012.terrain differ diff --git a/public/terrain/18/429245/177013.terrain b/public/terrain/18/429245/177013.terrain new file mode 100644 index 000000000..f577ecba0 Binary files /dev/null and b/public/terrain/18/429245/177013.terrain differ diff --git a/public/terrain/18/429245/177014.terrain b/public/terrain/18/429245/177014.terrain new file mode 100644 index 000000000..e48f14a8e Binary files /dev/null and b/public/terrain/18/429245/177014.terrain differ diff --git a/public/terrain/18/429245/177015.terrain b/public/terrain/18/429245/177015.terrain new file mode 100644 index 000000000..e313b0d0b Binary files /dev/null and b/public/terrain/18/429245/177015.terrain differ diff --git a/public/terrain/18/429245/177016.terrain b/public/terrain/18/429245/177016.terrain new file mode 100644 index 000000000..9494b904c Binary files /dev/null and b/public/terrain/18/429245/177016.terrain differ diff --git a/public/terrain/18/429245/177017.terrain b/public/terrain/18/429245/177017.terrain new file mode 100644 index 000000000..d9bd37d14 Binary files /dev/null and b/public/terrain/18/429245/177017.terrain differ diff --git a/public/terrain/18/429245/177018.terrain b/public/terrain/18/429245/177018.terrain new file mode 100644 index 000000000..521153810 Binary files /dev/null and b/public/terrain/18/429245/177018.terrain differ diff --git a/public/terrain/18/429245/177019.terrain b/public/terrain/18/429245/177019.terrain new file mode 100644 index 000000000..2ade9b24f Binary files /dev/null and b/public/terrain/18/429245/177019.terrain differ diff --git a/public/terrain/18/429245/177020.terrain b/public/terrain/18/429245/177020.terrain new file mode 100644 index 000000000..3c0c0483d Binary files /dev/null and b/public/terrain/18/429245/177020.terrain differ diff --git a/public/terrain/18/429245/177021.terrain b/public/terrain/18/429245/177021.terrain new file mode 100644 index 000000000..52fad9e5f Binary files /dev/null and b/public/terrain/18/429245/177021.terrain differ diff --git a/public/terrain/18/429245/177022.terrain b/public/terrain/18/429245/177022.terrain new file mode 100644 index 000000000..63e3dd69e Binary files /dev/null and b/public/terrain/18/429245/177022.terrain differ diff --git a/public/terrain/18/429245/177023.terrain b/public/terrain/18/429245/177023.terrain new file mode 100644 index 000000000..5ce792a7f Binary files /dev/null and b/public/terrain/18/429245/177023.terrain differ diff --git a/public/terrain/18/429245/177024.terrain b/public/terrain/18/429245/177024.terrain new file mode 100644 index 000000000..38bbb2df2 Binary files /dev/null and b/public/terrain/18/429245/177024.terrain differ diff --git a/public/terrain/18/429245/177025.terrain b/public/terrain/18/429245/177025.terrain new file mode 100644 index 000000000..5f2e694a1 Binary files /dev/null and b/public/terrain/18/429245/177025.terrain differ diff --git a/public/terrain/18/429245/177026.terrain b/public/terrain/18/429245/177026.terrain new file mode 100644 index 000000000..c7a4f89bf Binary files /dev/null and b/public/terrain/18/429245/177026.terrain differ diff --git a/public/terrain/18/429245/177027.terrain b/public/terrain/18/429245/177027.terrain new file mode 100644 index 000000000..9ce49578f Binary files /dev/null and b/public/terrain/18/429245/177027.terrain differ diff --git a/public/terrain/18/429245/177028.terrain b/public/terrain/18/429245/177028.terrain new file mode 100644 index 000000000..661d08fbb Binary files /dev/null and b/public/terrain/18/429245/177028.terrain differ diff --git a/public/terrain/18/429245/177029.terrain b/public/terrain/18/429245/177029.terrain new file mode 100644 index 000000000..4d8b5aaa6 Binary files /dev/null and b/public/terrain/18/429245/177029.terrain differ diff --git a/public/terrain/18/429246/176871.terrain b/public/terrain/18/429246/176871.terrain new file mode 100644 index 000000000..90eb8c6cb Binary files /dev/null and b/public/terrain/18/429246/176871.terrain differ diff --git a/public/terrain/18/429246/176872.terrain b/public/terrain/18/429246/176872.terrain new file mode 100644 index 000000000..12188aa65 Binary files /dev/null and b/public/terrain/18/429246/176872.terrain differ diff --git a/public/terrain/18/429246/176873.terrain b/public/terrain/18/429246/176873.terrain new file mode 100644 index 000000000..d4bf55a7f Binary files /dev/null and b/public/terrain/18/429246/176873.terrain differ diff --git a/public/terrain/18/429246/176874.terrain b/public/terrain/18/429246/176874.terrain new file mode 100644 index 000000000..3e8b0b850 Binary files /dev/null and b/public/terrain/18/429246/176874.terrain differ diff --git a/public/terrain/18/429246/176875.terrain b/public/terrain/18/429246/176875.terrain new file mode 100644 index 000000000..560d1541c Binary files /dev/null and b/public/terrain/18/429246/176875.terrain differ diff --git a/public/terrain/18/429246/176876.terrain b/public/terrain/18/429246/176876.terrain new file mode 100644 index 000000000..c9025cb6a Binary files /dev/null and b/public/terrain/18/429246/176876.terrain differ diff --git a/public/terrain/18/429246/176877.terrain b/public/terrain/18/429246/176877.terrain new file mode 100644 index 000000000..1acedbf0d Binary files /dev/null and b/public/terrain/18/429246/176877.terrain differ diff --git a/public/terrain/18/429246/176878.terrain b/public/terrain/18/429246/176878.terrain new file mode 100644 index 000000000..cd6ee7380 Binary files /dev/null and b/public/terrain/18/429246/176878.terrain differ diff --git a/public/terrain/18/429246/176879.terrain b/public/terrain/18/429246/176879.terrain new file mode 100644 index 000000000..2e172d48c Binary files /dev/null and b/public/terrain/18/429246/176879.terrain differ diff --git a/public/terrain/18/429246/176880.terrain b/public/terrain/18/429246/176880.terrain new file mode 100644 index 000000000..a6f34e50e Binary files /dev/null and b/public/terrain/18/429246/176880.terrain differ diff --git a/public/terrain/18/429246/176881.terrain b/public/terrain/18/429246/176881.terrain new file mode 100644 index 000000000..ea6b81ad7 Binary files /dev/null and b/public/terrain/18/429246/176881.terrain differ diff --git a/public/terrain/18/429246/176882.terrain b/public/terrain/18/429246/176882.terrain new file mode 100644 index 000000000..6fcadfeac Binary files /dev/null and b/public/terrain/18/429246/176882.terrain differ diff --git a/public/terrain/18/429246/176883.terrain b/public/terrain/18/429246/176883.terrain new file mode 100644 index 000000000..8571d160a Binary files /dev/null and b/public/terrain/18/429246/176883.terrain differ diff --git a/public/terrain/18/429246/176884.terrain b/public/terrain/18/429246/176884.terrain new file mode 100644 index 000000000..98c17eb12 Binary files /dev/null and b/public/terrain/18/429246/176884.terrain differ diff --git a/public/terrain/18/429246/176885.terrain b/public/terrain/18/429246/176885.terrain new file mode 100644 index 000000000..668096de3 Binary files /dev/null and b/public/terrain/18/429246/176885.terrain differ diff --git a/public/terrain/18/429246/176886.terrain b/public/terrain/18/429246/176886.terrain new file mode 100644 index 000000000..c572fff2d Binary files /dev/null and b/public/terrain/18/429246/176886.terrain differ diff --git a/public/terrain/18/429246/176887.terrain b/public/terrain/18/429246/176887.terrain new file mode 100644 index 000000000..a9dca527f Binary files /dev/null and b/public/terrain/18/429246/176887.terrain differ diff --git a/public/terrain/18/429246/176888.terrain b/public/terrain/18/429246/176888.terrain new file mode 100644 index 000000000..fc8d3d4f0 Binary files /dev/null and b/public/terrain/18/429246/176888.terrain differ diff --git a/public/terrain/18/429246/176889.terrain b/public/terrain/18/429246/176889.terrain new file mode 100644 index 000000000..68c4b65e4 Binary files /dev/null and b/public/terrain/18/429246/176889.terrain differ diff --git a/public/terrain/18/429246/176890.terrain b/public/terrain/18/429246/176890.terrain new file mode 100644 index 000000000..9326be3b6 Binary files /dev/null and b/public/terrain/18/429246/176890.terrain differ diff --git a/public/terrain/18/429246/176891.terrain b/public/terrain/18/429246/176891.terrain new file mode 100644 index 000000000..d02332fe7 Binary files /dev/null and b/public/terrain/18/429246/176891.terrain differ diff --git a/public/terrain/18/429246/176892.terrain b/public/terrain/18/429246/176892.terrain new file mode 100644 index 000000000..29fc0cbfb Binary files /dev/null and b/public/terrain/18/429246/176892.terrain differ diff --git a/public/terrain/18/429246/176893.terrain b/public/terrain/18/429246/176893.terrain new file mode 100644 index 000000000..8fed88cb3 Binary files /dev/null and b/public/terrain/18/429246/176893.terrain differ diff --git a/public/terrain/18/429246/176894.terrain b/public/terrain/18/429246/176894.terrain new file mode 100644 index 000000000..f11b661ab Binary files /dev/null and b/public/terrain/18/429246/176894.terrain differ diff --git a/public/terrain/18/429246/176895.terrain b/public/terrain/18/429246/176895.terrain new file mode 100644 index 000000000..aee0d36cb Binary files /dev/null and b/public/terrain/18/429246/176895.terrain differ diff --git a/public/terrain/18/429246/176896.terrain b/public/terrain/18/429246/176896.terrain new file mode 100644 index 000000000..98bcab1ad Binary files /dev/null and b/public/terrain/18/429246/176896.terrain differ diff --git a/public/terrain/18/429246/176897.terrain b/public/terrain/18/429246/176897.terrain new file mode 100644 index 000000000..e1c8835bb Binary files /dev/null and b/public/terrain/18/429246/176897.terrain differ diff --git a/public/terrain/18/429246/176898.terrain b/public/terrain/18/429246/176898.terrain new file mode 100644 index 000000000..b133457ab Binary files /dev/null and b/public/terrain/18/429246/176898.terrain differ diff --git a/public/terrain/18/429246/176899.terrain b/public/terrain/18/429246/176899.terrain new file mode 100644 index 000000000..e84b1bff2 Binary files /dev/null and b/public/terrain/18/429246/176899.terrain differ diff --git a/public/terrain/18/429246/176900.terrain b/public/terrain/18/429246/176900.terrain new file mode 100644 index 000000000..5be37402d Binary files /dev/null and b/public/terrain/18/429246/176900.terrain differ diff --git a/public/terrain/18/429246/176901.terrain b/public/terrain/18/429246/176901.terrain new file mode 100644 index 000000000..14aadb2e9 Binary files /dev/null and b/public/terrain/18/429246/176901.terrain differ diff --git a/public/terrain/18/429246/176902.terrain b/public/terrain/18/429246/176902.terrain new file mode 100644 index 000000000..0871cbade Binary files /dev/null and b/public/terrain/18/429246/176902.terrain differ diff --git a/public/terrain/18/429246/176903.terrain b/public/terrain/18/429246/176903.terrain new file mode 100644 index 000000000..cb6650a3a Binary files /dev/null and b/public/terrain/18/429246/176903.terrain differ diff --git a/public/terrain/18/429246/176904.terrain b/public/terrain/18/429246/176904.terrain new file mode 100644 index 000000000..477a6bb8f Binary files /dev/null and b/public/terrain/18/429246/176904.terrain differ diff --git a/public/terrain/18/429246/176905.terrain b/public/terrain/18/429246/176905.terrain new file mode 100644 index 000000000..bf00d5e21 Binary files /dev/null and b/public/terrain/18/429246/176905.terrain differ diff --git a/public/terrain/18/429246/176906.terrain b/public/terrain/18/429246/176906.terrain new file mode 100644 index 000000000..4addf49d9 Binary files /dev/null and b/public/terrain/18/429246/176906.terrain differ diff --git a/public/terrain/18/429246/176907.terrain b/public/terrain/18/429246/176907.terrain new file mode 100644 index 000000000..16fa48939 Binary files /dev/null and b/public/terrain/18/429246/176907.terrain differ diff --git a/public/terrain/18/429246/176908.terrain b/public/terrain/18/429246/176908.terrain new file mode 100644 index 000000000..6807a9dd6 Binary files /dev/null and b/public/terrain/18/429246/176908.terrain differ diff --git a/public/terrain/18/429246/176909.terrain b/public/terrain/18/429246/176909.terrain new file mode 100644 index 000000000..48d311e5e Binary files /dev/null and b/public/terrain/18/429246/176909.terrain differ diff --git a/public/terrain/18/429246/176910.terrain b/public/terrain/18/429246/176910.terrain new file mode 100644 index 000000000..3633aee17 Binary files /dev/null and b/public/terrain/18/429246/176910.terrain differ diff --git a/public/terrain/18/429246/176911.terrain b/public/terrain/18/429246/176911.terrain new file mode 100644 index 000000000..94a35ebfb Binary files /dev/null and b/public/terrain/18/429246/176911.terrain differ diff --git a/public/terrain/18/429246/176912.terrain b/public/terrain/18/429246/176912.terrain new file mode 100644 index 000000000..d005ac403 Binary files /dev/null and b/public/terrain/18/429246/176912.terrain differ diff --git a/public/terrain/18/429246/176913.terrain b/public/terrain/18/429246/176913.terrain new file mode 100644 index 000000000..051501c4d Binary files /dev/null and b/public/terrain/18/429246/176913.terrain differ diff --git a/public/terrain/18/429246/176914.terrain b/public/terrain/18/429246/176914.terrain new file mode 100644 index 000000000..2a4572126 Binary files /dev/null and b/public/terrain/18/429246/176914.terrain differ diff --git a/public/terrain/18/429246/176915.terrain b/public/terrain/18/429246/176915.terrain new file mode 100644 index 000000000..782ef1793 Binary files /dev/null and b/public/terrain/18/429246/176915.terrain differ diff --git a/public/terrain/18/429246/176916.terrain b/public/terrain/18/429246/176916.terrain new file mode 100644 index 000000000..a36eb1ec5 Binary files /dev/null and b/public/terrain/18/429246/176916.terrain differ diff --git a/public/terrain/18/429246/176917.terrain b/public/terrain/18/429246/176917.terrain new file mode 100644 index 000000000..2a0e989be Binary files /dev/null and b/public/terrain/18/429246/176917.terrain differ diff --git a/public/terrain/18/429246/176918.terrain b/public/terrain/18/429246/176918.terrain new file mode 100644 index 000000000..21e158dcb Binary files /dev/null and b/public/terrain/18/429246/176918.terrain differ diff --git a/public/terrain/18/429246/176919.terrain b/public/terrain/18/429246/176919.terrain new file mode 100644 index 000000000..5ac5a5380 Binary files /dev/null and b/public/terrain/18/429246/176919.terrain differ diff --git a/public/terrain/18/429246/176920.terrain b/public/terrain/18/429246/176920.terrain new file mode 100644 index 000000000..8d195a69f Binary files /dev/null and b/public/terrain/18/429246/176920.terrain differ diff --git a/public/terrain/18/429246/176921.terrain b/public/terrain/18/429246/176921.terrain new file mode 100644 index 000000000..4942ac5d6 Binary files /dev/null and b/public/terrain/18/429246/176921.terrain differ diff --git a/public/terrain/18/429246/176922.terrain b/public/terrain/18/429246/176922.terrain new file mode 100644 index 000000000..ee3ccde08 Binary files /dev/null and b/public/terrain/18/429246/176922.terrain differ diff --git a/public/terrain/18/429246/176923.terrain b/public/terrain/18/429246/176923.terrain new file mode 100644 index 000000000..a43c80d5b Binary files /dev/null and b/public/terrain/18/429246/176923.terrain differ diff --git a/public/terrain/18/429246/176924.terrain b/public/terrain/18/429246/176924.terrain new file mode 100644 index 000000000..070b9fb63 Binary files /dev/null and b/public/terrain/18/429246/176924.terrain differ diff --git a/public/terrain/18/429246/176925.terrain b/public/terrain/18/429246/176925.terrain new file mode 100644 index 000000000..52bc8807f Binary files /dev/null and b/public/terrain/18/429246/176925.terrain differ diff --git a/public/terrain/18/429246/176926.terrain b/public/terrain/18/429246/176926.terrain new file mode 100644 index 000000000..da5bee6f0 Binary files /dev/null and b/public/terrain/18/429246/176926.terrain differ diff --git a/public/terrain/18/429246/176927.terrain b/public/terrain/18/429246/176927.terrain new file mode 100644 index 000000000..9d2dc8c32 Binary files /dev/null and b/public/terrain/18/429246/176927.terrain differ diff --git a/public/terrain/18/429246/176928.terrain b/public/terrain/18/429246/176928.terrain new file mode 100644 index 000000000..4e3b6a36b Binary files /dev/null and b/public/terrain/18/429246/176928.terrain differ diff --git a/public/terrain/18/429246/176929.terrain b/public/terrain/18/429246/176929.terrain new file mode 100644 index 000000000..3442bdc90 Binary files /dev/null and b/public/terrain/18/429246/176929.terrain differ diff --git a/public/terrain/18/429246/176930.terrain b/public/terrain/18/429246/176930.terrain new file mode 100644 index 000000000..3e9df8e14 Binary files /dev/null and b/public/terrain/18/429246/176930.terrain differ diff --git a/public/terrain/18/429246/176931.terrain b/public/terrain/18/429246/176931.terrain new file mode 100644 index 000000000..f74dc2c56 Binary files /dev/null and b/public/terrain/18/429246/176931.terrain differ diff --git a/public/terrain/18/429246/176932.terrain b/public/terrain/18/429246/176932.terrain new file mode 100644 index 000000000..31c88db01 Binary files /dev/null and b/public/terrain/18/429246/176932.terrain differ diff --git a/public/terrain/18/429246/176933.terrain b/public/terrain/18/429246/176933.terrain new file mode 100644 index 000000000..b76f7c368 Binary files /dev/null and b/public/terrain/18/429246/176933.terrain differ diff --git a/public/terrain/18/429246/176934.terrain b/public/terrain/18/429246/176934.terrain new file mode 100644 index 000000000..494b4e0f9 Binary files /dev/null and b/public/terrain/18/429246/176934.terrain differ diff --git a/public/terrain/18/429246/176935.terrain b/public/terrain/18/429246/176935.terrain new file mode 100644 index 000000000..aeddcff1c Binary files /dev/null and b/public/terrain/18/429246/176935.terrain differ diff --git a/public/terrain/18/429246/176936.terrain b/public/terrain/18/429246/176936.terrain new file mode 100644 index 000000000..43778a38d Binary files /dev/null and b/public/terrain/18/429246/176936.terrain differ diff --git a/public/terrain/18/429246/176937.terrain b/public/terrain/18/429246/176937.terrain new file mode 100644 index 000000000..9610f8622 Binary files /dev/null and b/public/terrain/18/429246/176937.terrain differ diff --git a/public/terrain/18/429246/176938.terrain b/public/terrain/18/429246/176938.terrain new file mode 100644 index 000000000..b6ceede83 Binary files /dev/null and b/public/terrain/18/429246/176938.terrain differ diff --git a/public/terrain/18/429246/176939.terrain b/public/terrain/18/429246/176939.terrain new file mode 100644 index 000000000..f02779d85 Binary files /dev/null and b/public/terrain/18/429246/176939.terrain differ diff --git a/public/terrain/18/429246/176940.terrain b/public/terrain/18/429246/176940.terrain new file mode 100644 index 000000000..72bd8a1e5 Binary files /dev/null and b/public/terrain/18/429246/176940.terrain differ diff --git a/public/terrain/18/429246/176941.terrain b/public/terrain/18/429246/176941.terrain new file mode 100644 index 000000000..d7e499b18 Binary files /dev/null and b/public/terrain/18/429246/176941.terrain differ diff --git a/public/terrain/18/429246/176942.terrain b/public/terrain/18/429246/176942.terrain new file mode 100644 index 000000000..9a325ab8b Binary files /dev/null and b/public/terrain/18/429246/176942.terrain differ diff --git a/public/terrain/18/429246/176943.terrain b/public/terrain/18/429246/176943.terrain new file mode 100644 index 000000000..8bd76e4bb Binary files /dev/null and b/public/terrain/18/429246/176943.terrain differ diff --git a/public/terrain/18/429246/176944.terrain b/public/terrain/18/429246/176944.terrain new file mode 100644 index 000000000..5aa7941fa Binary files /dev/null and b/public/terrain/18/429246/176944.terrain differ diff --git a/public/terrain/18/429246/176945.terrain b/public/terrain/18/429246/176945.terrain new file mode 100644 index 000000000..87dc4a43e Binary files /dev/null and b/public/terrain/18/429246/176945.terrain differ diff --git a/public/terrain/18/429246/176946.terrain b/public/terrain/18/429246/176946.terrain new file mode 100644 index 000000000..78b5aaa42 Binary files /dev/null and b/public/terrain/18/429246/176946.terrain differ diff --git a/public/terrain/18/429246/176947.terrain b/public/terrain/18/429246/176947.terrain new file mode 100644 index 000000000..5b91438bf Binary files /dev/null and b/public/terrain/18/429246/176947.terrain differ diff --git a/public/terrain/18/429246/176948.terrain b/public/terrain/18/429246/176948.terrain new file mode 100644 index 000000000..39f39101c Binary files /dev/null and b/public/terrain/18/429246/176948.terrain differ diff --git a/public/terrain/18/429246/176949.terrain b/public/terrain/18/429246/176949.terrain new file mode 100644 index 000000000..3d2b8894f Binary files /dev/null and b/public/terrain/18/429246/176949.terrain differ diff --git a/public/terrain/18/429246/176950.terrain b/public/terrain/18/429246/176950.terrain new file mode 100644 index 000000000..a0c0a1f74 Binary files /dev/null and b/public/terrain/18/429246/176950.terrain differ diff --git a/public/terrain/18/429246/176951.terrain b/public/terrain/18/429246/176951.terrain new file mode 100644 index 000000000..3fe9f1c9c Binary files /dev/null and b/public/terrain/18/429246/176951.terrain differ diff --git a/public/terrain/18/429246/176952.terrain b/public/terrain/18/429246/176952.terrain new file mode 100644 index 000000000..4c8809f8b Binary files /dev/null and b/public/terrain/18/429246/176952.terrain differ diff --git a/public/terrain/18/429246/176953.terrain b/public/terrain/18/429246/176953.terrain new file mode 100644 index 000000000..350693186 Binary files /dev/null and b/public/terrain/18/429246/176953.terrain differ diff --git a/public/terrain/18/429246/176954.terrain b/public/terrain/18/429246/176954.terrain new file mode 100644 index 000000000..e930117c3 Binary files /dev/null and b/public/terrain/18/429246/176954.terrain differ diff --git a/public/terrain/18/429246/176955.terrain b/public/terrain/18/429246/176955.terrain new file mode 100644 index 000000000..74272679e Binary files /dev/null and b/public/terrain/18/429246/176955.terrain differ diff --git a/public/terrain/18/429246/176956.terrain b/public/terrain/18/429246/176956.terrain new file mode 100644 index 000000000..9abd3b51c Binary files /dev/null and b/public/terrain/18/429246/176956.terrain differ diff --git a/public/terrain/18/429246/176957.terrain b/public/terrain/18/429246/176957.terrain new file mode 100644 index 000000000..0b6fe0fd7 Binary files /dev/null and b/public/terrain/18/429246/176957.terrain differ diff --git a/public/terrain/18/429246/176958.terrain b/public/terrain/18/429246/176958.terrain new file mode 100644 index 000000000..c50b4bcb7 Binary files /dev/null and b/public/terrain/18/429246/176958.terrain differ diff --git a/public/terrain/18/429246/176959.terrain b/public/terrain/18/429246/176959.terrain new file mode 100644 index 000000000..05dc0eade Binary files /dev/null and b/public/terrain/18/429246/176959.terrain differ diff --git a/public/terrain/18/429246/176960.terrain b/public/terrain/18/429246/176960.terrain new file mode 100644 index 000000000..bda2c2750 Binary files /dev/null and b/public/terrain/18/429246/176960.terrain differ diff --git a/public/terrain/18/429246/176961.terrain b/public/terrain/18/429246/176961.terrain new file mode 100644 index 000000000..2180cf1b8 Binary files /dev/null and b/public/terrain/18/429246/176961.terrain differ diff --git a/public/terrain/18/429246/176962.terrain b/public/terrain/18/429246/176962.terrain new file mode 100644 index 000000000..ef7ca8562 Binary files /dev/null and b/public/terrain/18/429246/176962.terrain differ diff --git a/public/terrain/18/429246/176963.terrain b/public/terrain/18/429246/176963.terrain new file mode 100644 index 000000000..a657ccbf9 Binary files /dev/null and b/public/terrain/18/429246/176963.terrain differ diff --git a/public/terrain/18/429246/176964.terrain b/public/terrain/18/429246/176964.terrain new file mode 100644 index 000000000..325b9107c Binary files /dev/null and b/public/terrain/18/429246/176964.terrain differ diff --git a/public/terrain/18/429246/176965.terrain b/public/terrain/18/429246/176965.terrain new file mode 100644 index 000000000..a148939cf Binary files /dev/null and b/public/terrain/18/429246/176965.terrain differ diff --git a/public/terrain/18/429246/176966.terrain b/public/terrain/18/429246/176966.terrain new file mode 100644 index 000000000..497e4e483 Binary files /dev/null and b/public/terrain/18/429246/176966.terrain differ diff --git a/public/terrain/18/429246/176967.terrain b/public/terrain/18/429246/176967.terrain new file mode 100644 index 000000000..1ab212bd2 Binary files /dev/null and b/public/terrain/18/429246/176967.terrain differ diff --git a/public/terrain/18/429246/176968.terrain b/public/terrain/18/429246/176968.terrain new file mode 100644 index 000000000..ea1b3e105 Binary files /dev/null and b/public/terrain/18/429246/176968.terrain differ diff --git a/public/terrain/18/429246/176969.terrain b/public/terrain/18/429246/176969.terrain new file mode 100644 index 000000000..3c0588b6b Binary files /dev/null and b/public/terrain/18/429246/176969.terrain differ diff --git a/public/terrain/18/429246/176970.terrain b/public/terrain/18/429246/176970.terrain new file mode 100644 index 000000000..f908be92c Binary files /dev/null and b/public/terrain/18/429246/176970.terrain differ diff --git a/public/terrain/18/429246/176971.terrain b/public/terrain/18/429246/176971.terrain new file mode 100644 index 000000000..dd00cd1e0 Binary files /dev/null and b/public/terrain/18/429246/176971.terrain differ diff --git a/public/terrain/18/429246/176972.terrain b/public/terrain/18/429246/176972.terrain new file mode 100644 index 000000000..9785f4fb7 Binary files /dev/null and b/public/terrain/18/429246/176972.terrain differ diff --git a/public/terrain/18/429246/176973.terrain b/public/terrain/18/429246/176973.terrain new file mode 100644 index 000000000..33502e040 Binary files /dev/null and b/public/terrain/18/429246/176973.terrain differ diff --git a/public/terrain/18/429246/176974.terrain b/public/terrain/18/429246/176974.terrain new file mode 100644 index 000000000..f8927320b Binary files /dev/null and b/public/terrain/18/429246/176974.terrain differ diff --git a/public/terrain/18/429246/176975.terrain b/public/terrain/18/429246/176975.terrain new file mode 100644 index 000000000..161326195 Binary files /dev/null and b/public/terrain/18/429246/176975.terrain differ diff --git a/public/terrain/18/429246/176976.terrain b/public/terrain/18/429246/176976.terrain new file mode 100644 index 000000000..f4396166b Binary files /dev/null and b/public/terrain/18/429246/176976.terrain differ diff --git a/public/terrain/18/429246/176977.terrain b/public/terrain/18/429246/176977.terrain new file mode 100644 index 000000000..858504ec7 Binary files /dev/null and b/public/terrain/18/429246/176977.terrain differ diff --git a/public/terrain/18/429246/176978.terrain b/public/terrain/18/429246/176978.terrain new file mode 100644 index 000000000..220ad6054 Binary files /dev/null and b/public/terrain/18/429246/176978.terrain differ diff --git a/public/terrain/18/429246/176979.terrain b/public/terrain/18/429246/176979.terrain new file mode 100644 index 000000000..fe04b1c9a Binary files /dev/null and b/public/terrain/18/429246/176979.terrain differ diff --git a/public/terrain/18/429246/176980.terrain b/public/terrain/18/429246/176980.terrain new file mode 100644 index 000000000..62acb9976 Binary files /dev/null and b/public/terrain/18/429246/176980.terrain differ diff --git a/public/terrain/18/429246/176981.terrain b/public/terrain/18/429246/176981.terrain new file mode 100644 index 000000000..0cfc81039 Binary files /dev/null and b/public/terrain/18/429246/176981.terrain differ diff --git a/public/terrain/18/429246/176982.terrain b/public/terrain/18/429246/176982.terrain new file mode 100644 index 000000000..fae356588 Binary files /dev/null and b/public/terrain/18/429246/176982.terrain differ diff --git a/public/terrain/18/429246/176983.terrain b/public/terrain/18/429246/176983.terrain new file mode 100644 index 000000000..2b529cfb2 Binary files /dev/null and b/public/terrain/18/429246/176983.terrain differ diff --git a/public/terrain/18/429246/176984.terrain b/public/terrain/18/429246/176984.terrain new file mode 100644 index 000000000..25f876ae8 Binary files /dev/null and b/public/terrain/18/429246/176984.terrain differ diff --git a/public/terrain/18/429246/176985.terrain b/public/terrain/18/429246/176985.terrain new file mode 100644 index 000000000..03a459b10 Binary files /dev/null and b/public/terrain/18/429246/176985.terrain differ diff --git a/public/terrain/18/429246/176986.terrain b/public/terrain/18/429246/176986.terrain new file mode 100644 index 000000000..a848dfd9e Binary files /dev/null and b/public/terrain/18/429246/176986.terrain differ diff --git a/public/terrain/18/429246/176987.terrain b/public/terrain/18/429246/176987.terrain new file mode 100644 index 000000000..a1e8b44c7 Binary files /dev/null and b/public/terrain/18/429246/176987.terrain differ diff --git a/public/terrain/18/429246/176988.terrain b/public/terrain/18/429246/176988.terrain new file mode 100644 index 000000000..59235abfe Binary files /dev/null and b/public/terrain/18/429246/176988.terrain differ diff --git a/public/terrain/18/429246/176989.terrain b/public/terrain/18/429246/176989.terrain new file mode 100644 index 000000000..964bd0cdd Binary files /dev/null and b/public/terrain/18/429246/176989.terrain differ diff --git a/public/terrain/18/429246/176990.terrain b/public/terrain/18/429246/176990.terrain new file mode 100644 index 000000000..99f0b3d89 Binary files /dev/null and b/public/terrain/18/429246/176990.terrain differ diff --git a/public/terrain/18/429246/176991.terrain b/public/terrain/18/429246/176991.terrain new file mode 100644 index 000000000..927fd8086 Binary files /dev/null and b/public/terrain/18/429246/176991.terrain differ diff --git a/public/terrain/18/429246/176992.terrain b/public/terrain/18/429246/176992.terrain new file mode 100644 index 000000000..86f2194bb Binary files /dev/null and b/public/terrain/18/429246/176992.terrain differ diff --git a/public/terrain/18/429246/176993.terrain b/public/terrain/18/429246/176993.terrain new file mode 100644 index 000000000..a118f4781 Binary files /dev/null and b/public/terrain/18/429246/176993.terrain differ diff --git a/public/terrain/18/429246/176994.terrain b/public/terrain/18/429246/176994.terrain new file mode 100644 index 000000000..1a9ce93ec Binary files /dev/null and b/public/terrain/18/429246/176994.terrain differ diff --git a/public/terrain/18/429246/176995.terrain b/public/terrain/18/429246/176995.terrain new file mode 100644 index 000000000..b077fb4ad Binary files /dev/null and b/public/terrain/18/429246/176995.terrain differ diff --git a/public/terrain/18/429246/176996.terrain b/public/terrain/18/429246/176996.terrain new file mode 100644 index 000000000..d95922d3e Binary files /dev/null and b/public/terrain/18/429246/176996.terrain differ diff --git a/public/terrain/18/429246/176997.terrain b/public/terrain/18/429246/176997.terrain new file mode 100644 index 000000000..d79a1bb39 Binary files /dev/null and b/public/terrain/18/429246/176997.terrain differ diff --git a/public/terrain/18/429246/176998.terrain b/public/terrain/18/429246/176998.terrain new file mode 100644 index 000000000..ac9920d72 Binary files /dev/null and b/public/terrain/18/429246/176998.terrain differ diff --git a/public/terrain/18/429246/176999.terrain b/public/terrain/18/429246/176999.terrain new file mode 100644 index 000000000..1880c5d3e Binary files /dev/null and b/public/terrain/18/429246/176999.terrain differ diff --git a/public/terrain/18/429246/177000.terrain b/public/terrain/18/429246/177000.terrain new file mode 100644 index 000000000..65a4a4264 Binary files /dev/null and b/public/terrain/18/429246/177000.terrain differ diff --git a/public/terrain/18/429246/177001.terrain b/public/terrain/18/429246/177001.terrain new file mode 100644 index 000000000..529779766 Binary files /dev/null and b/public/terrain/18/429246/177001.terrain differ diff --git a/public/terrain/18/429246/177002.terrain b/public/terrain/18/429246/177002.terrain new file mode 100644 index 000000000..6af8faed4 Binary files /dev/null and b/public/terrain/18/429246/177002.terrain differ diff --git a/public/terrain/18/429246/177003.terrain b/public/terrain/18/429246/177003.terrain new file mode 100644 index 000000000..788487c8f Binary files /dev/null and b/public/terrain/18/429246/177003.terrain differ diff --git a/public/terrain/18/429246/177004.terrain b/public/terrain/18/429246/177004.terrain new file mode 100644 index 000000000..9a87e9857 Binary files /dev/null and b/public/terrain/18/429246/177004.terrain differ diff --git a/public/terrain/18/429246/177005.terrain b/public/terrain/18/429246/177005.terrain new file mode 100644 index 000000000..99d95a03b Binary files /dev/null and b/public/terrain/18/429246/177005.terrain differ diff --git a/public/terrain/18/429246/177006.terrain b/public/terrain/18/429246/177006.terrain new file mode 100644 index 000000000..17853ac8b Binary files /dev/null and b/public/terrain/18/429246/177006.terrain differ diff --git a/public/terrain/18/429246/177007.terrain b/public/terrain/18/429246/177007.terrain new file mode 100644 index 000000000..8bd72c0bd Binary files /dev/null and b/public/terrain/18/429246/177007.terrain differ diff --git a/public/terrain/18/429246/177008.terrain b/public/terrain/18/429246/177008.terrain new file mode 100644 index 000000000..c992a4b7b Binary files /dev/null and b/public/terrain/18/429246/177008.terrain differ diff --git a/public/terrain/18/429246/177009.terrain b/public/terrain/18/429246/177009.terrain new file mode 100644 index 000000000..b5984fb31 Binary files /dev/null and b/public/terrain/18/429246/177009.terrain differ diff --git a/public/terrain/18/429246/177010.terrain b/public/terrain/18/429246/177010.terrain new file mode 100644 index 000000000..7beaee833 Binary files /dev/null and b/public/terrain/18/429246/177010.terrain differ diff --git a/public/terrain/18/429246/177011.terrain b/public/terrain/18/429246/177011.terrain new file mode 100644 index 000000000..ef379b621 Binary files /dev/null and b/public/terrain/18/429246/177011.terrain differ diff --git a/public/terrain/18/429246/177012.terrain b/public/terrain/18/429246/177012.terrain new file mode 100644 index 000000000..a5d56cc2b Binary files /dev/null and b/public/terrain/18/429246/177012.terrain differ diff --git a/public/terrain/18/429246/177013.terrain b/public/terrain/18/429246/177013.terrain new file mode 100644 index 000000000..6ce09e3dc Binary files /dev/null and b/public/terrain/18/429246/177013.terrain differ diff --git a/public/terrain/18/429246/177014.terrain b/public/terrain/18/429246/177014.terrain new file mode 100644 index 000000000..178beedc1 Binary files /dev/null and b/public/terrain/18/429246/177014.terrain differ diff --git a/public/terrain/18/429246/177015.terrain b/public/terrain/18/429246/177015.terrain new file mode 100644 index 000000000..d92280e03 Binary files /dev/null and b/public/terrain/18/429246/177015.terrain differ diff --git a/public/terrain/18/429246/177016.terrain b/public/terrain/18/429246/177016.terrain new file mode 100644 index 000000000..842e3a7bc Binary files /dev/null and b/public/terrain/18/429246/177016.terrain differ diff --git a/public/terrain/18/429246/177017.terrain b/public/terrain/18/429246/177017.terrain new file mode 100644 index 000000000..827ac8e9b Binary files /dev/null and b/public/terrain/18/429246/177017.terrain differ diff --git a/public/terrain/18/429246/177018.terrain b/public/terrain/18/429246/177018.terrain new file mode 100644 index 000000000..c6a64af12 Binary files /dev/null and b/public/terrain/18/429246/177018.terrain differ diff --git a/public/terrain/18/429246/177019.terrain b/public/terrain/18/429246/177019.terrain new file mode 100644 index 000000000..09f8fda47 Binary files /dev/null and b/public/terrain/18/429246/177019.terrain differ diff --git a/public/terrain/18/429246/177020.terrain b/public/terrain/18/429246/177020.terrain new file mode 100644 index 000000000..042498cba Binary files /dev/null and b/public/terrain/18/429246/177020.terrain differ diff --git a/public/terrain/18/429246/177021.terrain b/public/terrain/18/429246/177021.terrain new file mode 100644 index 000000000..27a4ce341 Binary files /dev/null and b/public/terrain/18/429246/177021.terrain differ diff --git a/public/terrain/18/429246/177022.terrain b/public/terrain/18/429246/177022.terrain new file mode 100644 index 000000000..15e9c01f8 Binary files /dev/null and b/public/terrain/18/429246/177022.terrain differ diff --git a/public/terrain/18/429246/177023.terrain b/public/terrain/18/429246/177023.terrain new file mode 100644 index 000000000..c3c16cc11 Binary files /dev/null and b/public/terrain/18/429246/177023.terrain differ diff --git a/public/terrain/18/429246/177024.terrain b/public/terrain/18/429246/177024.terrain new file mode 100644 index 000000000..71eae7b32 Binary files /dev/null and b/public/terrain/18/429246/177024.terrain differ diff --git a/public/terrain/18/429246/177025.terrain b/public/terrain/18/429246/177025.terrain new file mode 100644 index 000000000..e610df8fc Binary files /dev/null and b/public/terrain/18/429246/177025.terrain differ diff --git a/public/terrain/18/429246/177026.terrain b/public/terrain/18/429246/177026.terrain new file mode 100644 index 000000000..cc8b760d4 Binary files /dev/null and b/public/terrain/18/429246/177026.terrain differ diff --git a/public/terrain/18/429246/177027.terrain b/public/terrain/18/429246/177027.terrain new file mode 100644 index 000000000..2468d24e8 Binary files /dev/null and b/public/terrain/18/429246/177027.terrain differ diff --git a/public/terrain/18/429246/177028.terrain b/public/terrain/18/429246/177028.terrain new file mode 100644 index 000000000..8a47ad5a4 Binary files /dev/null and b/public/terrain/18/429246/177028.terrain differ diff --git a/public/terrain/18/429246/177029.terrain b/public/terrain/18/429246/177029.terrain new file mode 100644 index 000000000..d00b3553c Binary files /dev/null and b/public/terrain/18/429246/177029.terrain differ diff --git a/public/terrain/18/429247/176871.terrain b/public/terrain/18/429247/176871.terrain new file mode 100644 index 000000000..0ec6a0911 Binary files /dev/null and b/public/terrain/18/429247/176871.terrain differ diff --git a/public/terrain/18/429247/176872.terrain b/public/terrain/18/429247/176872.terrain new file mode 100644 index 000000000..44ca8c71e Binary files /dev/null and b/public/terrain/18/429247/176872.terrain differ diff --git a/public/terrain/18/429247/176873.terrain b/public/terrain/18/429247/176873.terrain new file mode 100644 index 000000000..9acc1fa29 Binary files /dev/null and b/public/terrain/18/429247/176873.terrain differ diff --git a/public/terrain/18/429247/176874.terrain b/public/terrain/18/429247/176874.terrain new file mode 100644 index 000000000..602dc5ec7 Binary files /dev/null and b/public/terrain/18/429247/176874.terrain differ diff --git a/public/terrain/18/429247/176875.terrain b/public/terrain/18/429247/176875.terrain new file mode 100644 index 000000000..9c6596609 Binary files /dev/null and b/public/terrain/18/429247/176875.terrain differ diff --git a/public/terrain/18/429247/176876.terrain b/public/terrain/18/429247/176876.terrain new file mode 100644 index 000000000..e78d1b732 Binary files /dev/null and b/public/terrain/18/429247/176876.terrain differ diff --git a/public/terrain/18/429247/176877.terrain b/public/terrain/18/429247/176877.terrain new file mode 100644 index 000000000..91851ee23 Binary files /dev/null and b/public/terrain/18/429247/176877.terrain differ diff --git a/public/terrain/18/429247/176878.terrain b/public/terrain/18/429247/176878.terrain new file mode 100644 index 000000000..decf3afe5 Binary files /dev/null and b/public/terrain/18/429247/176878.terrain differ diff --git a/public/terrain/18/429247/176879.terrain b/public/terrain/18/429247/176879.terrain new file mode 100644 index 000000000..d875a9b90 Binary files /dev/null and b/public/terrain/18/429247/176879.terrain differ diff --git a/public/terrain/18/429247/176880.terrain b/public/terrain/18/429247/176880.terrain new file mode 100644 index 000000000..3be063dda Binary files /dev/null and b/public/terrain/18/429247/176880.terrain differ diff --git a/public/terrain/18/429247/176881.terrain b/public/terrain/18/429247/176881.terrain new file mode 100644 index 000000000..0d6d92c9c Binary files /dev/null and b/public/terrain/18/429247/176881.terrain differ diff --git a/public/terrain/18/429247/176882.terrain b/public/terrain/18/429247/176882.terrain new file mode 100644 index 000000000..6d9edcd37 Binary files /dev/null and b/public/terrain/18/429247/176882.terrain differ diff --git a/public/terrain/18/429247/176883.terrain b/public/terrain/18/429247/176883.terrain new file mode 100644 index 000000000..d643c5d7d Binary files /dev/null and b/public/terrain/18/429247/176883.terrain differ diff --git a/public/terrain/18/429247/176884.terrain b/public/terrain/18/429247/176884.terrain new file mode 100644 index 000000000..6f4461ba0 Binary files /dev/null and b/public/terrain/18/429247/176884.terrain differ diff --git a/public/terrain/18/429247/176885.terrain b/public/terrain/18/429247/176885.terrain new file mode 100644 index 000000000..a4c48a784 Binary files /dev/null and b/public/terrain/18/429247/176885.terrain differ diff --git a/public/terrain/18/429247/176886.terrain b/public/terrain/18/429247/176886.terrain new file mode 100644 index 000000000..2c4d57f06 Binary files /dev/null and b/public/terrain/18/429247/176886.terrain differ diff --git a/public/terrain/18/429247/176887.terrain b/public/terrain/18/429247/176887.terrain new file mode 100644 index 000000000..2c1e59bb4 Binary files /dev/null and b/public/terrain/18/429247/176887.terrain differ diff --git a/public/terrain/18/429247/176888.terrain b/public/terrain/18/429247/176888.terrain new file mode 100644 index 000000000..2c3072077 Binary files /dev/null and b/public/terrain/18/429247/176888.terrain differ diff --git a/public/terrain/18/429247/176889.terrain b/public/terrain/18/429247/176889.terrain new file mode 100644 index 000000000..a3dd1c27b Binary files /dev/null and b/public/terrain/18/429247/176889.terrain differ diff --git a/public/terrain/18/429247/176890.terrain b/public/terrain/18/429247/176890.terrain new file mode 100644 index 000000000..b2472d431 Binary files /dev/null and b/public/terrain/18/429247/176890.terrain differ diff --git a/public/terrain/18/429247/176891.terrain b/public/terrain/18/429247/176891.terrain new file mode 100644 index 000000000..86e11fc79 Binary files /dev/null and b/public/terrain/18/429247/176891.terrain differ diff --git a/public/terrain/18/429247/176892.terrain b/public/terrain/18/429247/176892.terrain new file mode 100644 index 000000000..232eed079 Binary files /dev/null and b/public/terrain/18/429247/176892.terrain differ diff --git a/public/terrain/18/429247/176893.terrain b/public/terrain/18/429247/176893.terrain new file mode 100644 index 000000000..9d06cdd1d Binary files /dev/null and b/public/terrain/18/429247/176893.terrain differ diff --git a/public/terrain/18/429247/176894.terrain b/public/terrain/18/429247/176894.terrain new file mode 100644 index 000000000..5a41d64fa Binary files /dev/null and b/public/terrain/18/429247/176894.terrain differ diff --git a/public/terrain/18/429247/176895.terrain b/public/terrain/18/429247/176895.terrain new file mode 100644 index 000000000..23bb6b6fd Binary files /dev/null and b/public/terrain/18/429247/176895.terrain differ diff --git a/public/terrain/18/429247/176896.terrain b/public/terrain/18/429247/176896.terrain new file mode 100644 index 000000000..f156a80dd Binary files /dev/null and b/public/terrain/18/429247/176896.terrain differ diff --git a/public/terrain/18/429247/176897.terrain b/public/terrain/18/429247/176897.terrain new file mode 100644 index 000000000..248a58f46 Binary files /dev/null and b/public/terrain/18/429247/176897.terrain differ diff --git a/public/terrain/18/429247/176898.terrain b/public/terrain/18/429247/176898.terrain new file mode 100644 index 000000000..b26ca89d9 Binary files /dev/null and b/public/terrain/18/429247/176898.terrain differ diff --git a/public/terrain/18/429247/176899.terrain b/public/terrain/18/429247/176899.terrain new file mode 100644 index 000000000..2762e2884 Binary files /dev/null and b/public/terrain/18/429247/176899.terrain differ diff --git a/public/terrain/18/429247/176900.terrain b/public/terrain/18/429247/176900.terrain new file mode 100644 index 000000000..c3392e96e Binary files /dev/null and b/public/terrain/18/429247/176900.terrain differ diff --git a/public/terrain/18/429247/176901.terrain b/public/terrain/18/429247/176901.terrain new file mode 100644 index 000000000..73b001cc9 Binary files /dev/null and b/public/terrain/18/429247/176901.terrain differ diff --git a/public/terrain/18/429247/176902.terrain b/public/terrain/18/429247/176902.terrain new file mode 100644 index 000000000..af6659e5a Binary files /dev/null and b/public/terrain/18/429247/176902.terrain differ diff --git a/public/terrain/18/429247/176903.terrain b/public/terrain/18/429247/176903.terrain new file mode 100644 index 000000000..8f3426436 Binary files /dev/null and b/public/terrain/18/429247/176903.terrain differ diff --git a/public/terrain/18/429247/176904.terrain b/public/terrain/18/429247/176904.terrain new file mode 100644 index 000000000..f6cc9a28f Binary files /dev/null and b/public/terrain/18/429247/176904.terrain differ diff --git a/public/terrain/18/429247/176905.terrain b/public/terrain/18/429247/176905.terrain new file mode 100644 index 000000000..5817d5ccf Binary files /dev/null and b/public/terrain/18/429247/176905.terrain differ diff --git a/public/terrain/18/429247/176906.terrain b/public/terrain/18/429247/176906.terrain new file mode 100644 index 000000000..dd16ac11e Binary files /dev/null and b/public/terrain/18/429247/176906.terrain differ diff --git a/public/terrain/18/429247/176907.terrain b/public/terrain/18/429247/176907.terrain new file mode 100644 index 000000000..4134ba971 Binary files /dev/null and b/public/terrain/18/429247/176907.terrain differ diff --git a/public/terrain/18/429247/176908.terrain b/public/terrain/18/429247/176908.terrain new file mode 100644 index 000000000..2c1f9ab9a Binary files /dev/null and b/public/terrain/18/429247/176908.terrain differ diff --git a/public/terrain/18/429247/176909.terrain b/public/terrain/18/429247/176909.terrain new file mode 100644 index 000000000..40c931d8b Binary files /dev/null and b/public/terrain/18/429247/176909.terrain differ diff --git a/public/terrain/18/429247/176910.terrain b/public/terrain/18/429247/176910.terrain new file mode 100644 index 000000000..1e1c976f1 Binary files /dev/null and b/public/terrain/18/429247/176910.terrain differ diff --git a/public/terrain/18/429247/176911.terrain b/public/terrain/18/429247/176911.terrain new file mode 100644 index 000000000..14940b32a Binary files /dev/null and b/public/terrain/18/429247/176911.terrain differ diff --git a/public/terrain/18/429247/176912.terrain b/public/terrain/18/429247/176912.terrain new file mode 100644 index 000000000..3c0d056b1 Binary files /dev/null and b/public/terrain/18/429247/176912.terrain differ diff --git a/public/terrain/18/429247/176913.terrain b/public/terrain/18/429247/176913.terrain new file mode 100644 index 000000000..d0eeee593 Binary files /dev/null and b/public/terrain/18/429247/176913.terrain differ diff --git a/public/terrain/18/429247/176914.terrain b/public/terrain/18/429247/176914.terrain new file mode 100644 index 000000000..3ade8b26a Binary files /dev/null and b/public/terrain/18/429247/176914.terrain differ diff --git a/public/terrain/18/429247/176915.terrain b/public/terrain/18/429247/176915.terrain new file mode 100644 index 000000000..6973e14d2 Binary files /dev/null and b/public/terrain/18/429247/176915.terrain differ diff --git a/public/terrain/18/429247/176916.terrain b/public/terrain/18/429247/176916.terrain new file mode 100644 index 000000000..28985282e Binary files /dev/null and b/public/terrain/18/429247/176916.terrain differ diff --git a/public/terrain/18/429247/176917.terrain b/public/terrain/18/429247/176917.terrain new file mode 100644 index 000000000..57d77b420 Binary files /dev/null and b/public/terrain/18/429247/176917.terrain differ diff --git a/public/terrain/18/429247/176918.terrain b/public/terrain/18/429247/176918.terrain new file mode 100644 index 000000000..cdcaa33c8 Binary files /dev/null and b/public/terrain/18/429247/176918.terrain differ diff --git a/public/terrain/18/429247/176919.terrain b/public/terrain/18/429247/176919.terrain new file mode 100644 index 000000000..42b74a2e4 Binary files /dev/null and b/public/terrain/18/429247/176919.terrain differ diff --git a/public/terrain/18/429247/176920.terrain b/public/terrain/18/429247/176920.terrain new file mode 100644 index 000000000..39f2c0c4d Binary files /dev/null and b/public/terrain/18/429247/176920.terrain differ diff --git a/public/terrain/18/429247/176921.terrain b/public/terrain/18/429247/176921.terrain new file mode 100644 index 000000000..0139da76b Binary files /dev/null and b/public/terrain/18/429247/176921.terrain differ diff --git a/public/terrain/18/429247/176922.terrain b/public/terrain/18/429247/176922.terrain new file mode 100644 index 000000000..7ed31c346 Binary files /dev/null and b/public/terrain/18/429247/176922.terrain differ diff --git a/public/terrain/18/429247/176923.terrain b/public/terrain/18/429247/176923.terrain new file mode 100644 index 000000000..1ae60d176 Binary files /dev/null and b/public/terrain/18/429247/176923.terrain differ diff --git a/public/terrain/18/429247/176924.terrain b/public/terrain/18/429247/176924.terrain new file mode 100644 index 000000000..ef4831ada Binary files /dev/null and b/public/terrain/18/429247/176924.terrain differ diff --git a/public/terrain/18/429247/176925.terrain b/public/terrain/18/429247/176925.terrain new file mode 100644 index 000000000..46fb123f5 Binary files /dev/null and b/public/terrain/18/429247/176925.terrain differ diff --git a/public/terrain/18/429247/176926.terrain b/public/terrain/18/429247/176926.terrain new file mode 100644 index 000000000..1b0e5f8c1 Binary files /dev/null and b/public/terrain/18/429247/176926.terrain differ diff --git a/public/terrain/18/429247/176927.terrain b/public/terrain/18/429247/176927.terrain new file mode 100644 index 000000000..8fd37a433 Binary files /dev/null and b/public/terrain/18/429247/176927.terrain differ diff --git a/public/terrain/18/429247/176928.terrain b/public/terrain/18/429247/176928.terrain new file mode 100644 index 000000000..55e9f30d2 Binary files /dev/null and b/public/terrain/18/429247/176928.terrain differ diff --git a/public/terrain/18/429247/176929.terrain b/public/terrain/18/429247/176929.terrain new file mode 100644 index 000000000..f3b5559bc Binary files /dev/null and b/public/terrain/18/429247/176929.terrain differ diff --git a/public/terrain/18/429247/176930.terrain b/public/terrain/18/429247/176930.terrain new file mode 100644 index 000000000..9b538a1a0 Binary files /dev/null and b/public/terrain/18/429247/176930.terrain differ diff --git a/public/terrain/18/429247/176931.terrain b/public/terrain/18/429247/176931.terrain new file mode 100644 index 000000000..78c904b56 Binary files /dev/null and b/public/terrain/18/429247/176931.terrain differ diff --git a/public/terrain/18/429247/176932.terrain b/public/terrain/18/429247/176932.terrain new file mode 100644 index 000000000..7c831f02b Binary files /dev/null and b/public/terrain/18/429247/176932.terrain differ diff --git a/public/terrain/18/429247/176933.terrain b/public/terrain/18/429247/176933.terrain new file mode 100644 index 000000000..fc9e4b5b2 Binary files /dev/null and b/public/terrain/18/429247/176933.terrain differ diff --git a/public/terrain/18/429247/176934.terrain b/public/terrain/18/429247/176934.terrain new file mode 100644 index 000000000..2a5e341ad Binary files /dev/null and b/public/terrain/18/429247/176934.terrain differ diff --git a/public/terrain/18/429247/176935.terrain b/public/terrain/18/429247/176935.terrain new file mode 100644 index 000000000..71bbe61c2 Binary files /dev/null and b/public/terrain/18/429247/176935.terrain differ diff --git a/public/terrain/18/429247/176936.terrain b/public/terrain/18/429247/176936.terrain new file mode 100644 index 000000000..88c1f8670 Binary files /dev/null and b/public/terrain/18/429247/176936.terrain differ diff --git a/public/terrain/18/429247/176937.terrain b/public/terrain/18/429247/176937.terrain new file mode 100644 index 000000000..31753c42e Binary files /dev/null and b/public/terrain/18/429247/176937.terrain differ diff --git a/public/terrain/18/429247/176938.terrain b/public/terrain/18/429247/176938.terrain new file mode 100644 index 000000000..bf6e7af69 Binary files /dev/null and b/public/terrain/18/429247/176938.terrain differ diff --git a/public/terrain/18/429247/176939.terrain b/public/terrain/18/429247/176939.terrain new file mode 100644 index 000000000..a367862f9 Binary files /dev/null and b/public/terrain/18/429247/176939.terrain differ diff --git a/public/terrain/18/429247/176940.terrain b/public/terrain/18/429247/176940.terrain new file mode 100644 index 000000000..3424c59e3 Binary files /dev/null and b/public/terrain/18/429247/176940.terrain differ diff --git a/public/terrain/18/429247/176941.terrain b/public/terrain/18/429247/176941.terrain new file mode 100644 index 000000000..288530ef4 Binary files /dev/null and b/public/terrain/18/429247/176941.terrain differ diff --git a/public/terrain/18/429247/176942.terrain b/public/terrain/18/429247/176942.terrain new file mode 100644 index 000000000..dcfd5ee1a Binary files /dev/null and b/public/terrain/18/429247/176942.terrain differ diff --git a/public/terrain/18/429247/176943.terrain b/public/terrain/18/429247/176943.terrain new file mode 100644 index 000000000..31b098cee Binary files /dev/null and b/public/terrain/18/429247/176943.terrain differ diff --git a/public/terrain/18/429247/176944.terrain b/public/terrain/18/429247/176944.terrain new file mode 100644 index 000000000..02ba5ebcd Binary files /dev/null and b/public/terrain/18/429247/176944.terrain differ diff --git a/public/terrain/18/429247/176945.terrain b/public/terrain/18/429247/176945.terrain new file mode 100644 index 000000000..33733e44d Binary files /dev/null and b/public/terrain/18/429247/176945.terrain differ diff --git a/public/terrain/18/429247/176946.terrain b/public/terrain/18/429247/176946.terrain new file mode 100644 index 000000000..eb057b44a Binary files /dev/null and b/public/terrain/18/429247/176946.terrain differ diff --git a/public/terrain/18/429247/176947.terrain b/public/terrain/18/429247/176947.terrain new file mode 100644 index 000000000..04765ec74 Binary files /dev/null and b/public/terrain/18/429247/176947.terrain differ diff --git a/public/terrain/18/429247/176948.terrain b/public/terrain/18/429247/176948.terrain new file mode 100644 index 000000000..7087f110b Binary files /dev/null and b/public/terrain/18/429247/176948.terrain differ diff --git a/public/terrain/18/429247/176949.terrain b/public/terrain/18/429247/176949.terrain new file mode 100644 index 000000000..35060decc Binary files /dev/null and b/public/terrain/18/429247/176949.terrain differ diff --git a/public/terrain/18/429247/176950.terrain b/public/terrain/18/429247/176950.terrain new file mode 100644 index 000000000..4d8f20d04 Binary files /dev/null and b/public/terrain/18/429247/176950.terrain differ diff --git a/public/terrain/18/429247/176951.terrain b/public/terrain/18/429247/176951.terrain new file mode 100644 index 000000000..b18874ec2 Binary files /dev/null and b/public/terrain/18/429247/176951.terrain differ diff --git a/public/terrain/18/429247/176952.terrain b/public/terrain/18/429247/176952.terrain new file mode 100644 index 000000000..e9d2f0455 Binary files /dev/null and b/public/terrain/18/429247/176952.terrain differ diff --git a/public/terrain/18/429247/176953.terrain b/public/terrain/18/429247/176953.terrain new file mode 100644 index 000000000..a2827db36 Binary files /dev/null and b/public/terrain/18/429247/176953.terrain differ diff --git a/public/terrain/18/429247/176954.terrain b/public/terrain/18/429247/176954.terrain new file mode 100644 index 000000000..428f52e81 Binary files /dev/null and b/public/terrain/18/429247/176954.terrain differ diff --git a/public/terrain/18/429247/176955.terrain b/public/terrain/18/429247/176955.terrain new file mode 100644 index 000000000..3d6ebe245 Binary files /dev/null and b/public/terrain/18/429247/176955.terrain differ diff --git a/public/terrain/18/429247/176956.terrain b/public/terrain/18/429247/176956.terrain new file mode 100644 index 000000000..26021b9bb Binary files /dev/null and b/public/terrain/18/429247/176956.terrain differ diff --git a/public/terrain/18/429247/176957.terrain b/public/terrain/18/429247/176957.terrain new file mode 100644 index 000000000..3c2cbbe62 Binary files /dev/null and b/public/terrain/18/429247/176957.terrain differ diff --git a/public/terrain/18/429247/176958.terrain b/public/terrain/18/429247/176958.terrain new file mode 100644 index 000000000..a0118f8af Binary files /dev/null and b/public/terrain/18/429247/176958.terrain differ diff --git a/public/terrain/18/429247/176959.terrain b/public/terrain/18/429247/176959.terrain new file mode 100644 index 000000000..0fac8f4ae Binary files /dev/null and b/public/terrain/18/429247/176959.terrain differ diff --git a/public/terrain/18/429247/176960.terrain b/public/terrain/18/429247/176960.terrain new file mode 100644 index 000000000..b0a2c3838 Binary files /dev/null and b/public/terrain/18/429247/176960.terrain differ diff --git a/public/terrain/18/429247/176961.terrain b/public/terrain/18/429247/176961.terrain new file mode 100644 index 000000000..a59aeaac3 Binary files /dev/null and b/public/terrain/18/429247/176961.terrain differ diff --git a/public/terrain/18/429247/176962.terrain b/public/terrain/18/429247/176962.terrain new file mode 100644 index 000000000..1494f9856 Binary files /dev/null and b/public/terrain/18/429247/176962.terrain differ diff --git a/public/terrain/18/429247/176963.terrain b/public/terrain/18/429247/176963.terrain new file mode 100644 index 000000000..90f82fb53 Binary files /dev/null and b/public/terrain/18/429247/176963.terrain differ diff --git a/public/terrain/18/429247/176964.terrain b/public/terrain/18/429247/176964.terrain new file mode 100644 index 000000000..0a6217f23 Binary files /dev/null and b/public/terrain/18/429247/176964.terrain differ diff --git a/public/terrain/18/429247/176965.terrain b/public/terrain/18/429247/176965.terrain new file mode 100644 index 000000000..6015f9fba Binary files /dev/null and b/public/terrain/18/429247/176965.terrain differ diff --git a/public/terrain/18/429247/176966.terrain b/public/terrain/18/429247/176966.terrain new file mode 100644 index 000000000..95f98fd76 Binary files /dev/null and b/public/terrain/18/429247/176966.terrain differ diff --git a/public/terrain/18/429247/176967.terrain b/public/terrain/18/429247/176967.terrain new file mode 100644 index 000000000..e45ba9cdf Binary files /dev/null and b/public/terrain/18/429247/176967.terrain differ diff --git a/public/terrain/18/429247/176968.terrain b/public/terrain/18/429247/176968.terrain new file mode 100644 index 000000000..b2e490793 Binary files /dev/null and b/public/terrain/18/429247/176968.terrain differ diff --git a/public/terrain/18/429247/176969.terrain b/public/terrain/18/429247/176969.terrain new file mode 100644 index 000000000..e445f787d Binary files /dev/null and b/public/terrain/18/429247/176969.terrain differ diff --git a/public/terrain/18/429247/176970.terrain b/public/terrain/18/429247/176970.terrain new file mode 100644 index 000000000..c9da03dac Binary files /dev/null and b/public/terrain/18/429247/176970.terrain differ diff --git a/public/terrain/18/429247/176971.terrain b/public/terrain/18/429247/176971.terrain new file mode 100644 index 000000000..6cc0f11e4 Binary files /dev/null and b/public/terrain/18/429247/176971.terrain differ diff --git a/public/terrain/18/429247/176972.terrain b/public/terrain/18/429247/176972.terrain new file mode 100644 index 000000000..fcad93aa5 Binary files /dev/null and b/public/terrain/18/429247/176972.terrain differ diff --git a/public/terrain/18/429247/176973.terrain b/public/terrain/18/429247/176973.terrain new file mode 100644 index 000000000..bde126794 Binary files /dev/null and b/public/terrain/18/429247/176973.terrain differ diff --git a/public/terrain/18/429247/176974.terrain b/public/terrain/18/429247/176974.terrain new file mode 100644 index 000000000..2e006c5e8 Binary files /dev/null and b/public/terrain/18/429247/176974.terrain differ diff --git a/public/terrain/18/429247/176975.terrain b/public/terrain/18/429247/176975.terrain new file mode 100644 index 000000000..0dfadb0b7 Binary files /dev/null and b/public/terrain/18/429247/176975.terrain differ diff --git a/public/terrain/18/429247/176976.terrain b/public/terrain/18/429247/176976.terrain new file mode 100644 index 000000000..35a086def Binary files /dev/null and b/public/terrain/18/429247/176976.terrain differ diff --git a/public/terrain/18/429247/176977.terrain b/public/terrain/18/429247/176977.terrain new file mode 100644 index 000000000..5a42a49da Binary files /dev/null and b/public/terrain/18/429247/176977.terrain differ diff --git a/public/terrain/18/429247/176978.terrain b/public/terrain/18/429247/176978.terrain new file mode 100644 index 000000000..91685d384 Binary files /dev/null and b/public/terrain/18/429247/176978.terrain differ diff --git a/public/terrain/18/429247/176979.terrain b/public/terrain/18/429247/176979.terrain new file mode 100644 index 000000000..cccaea378 Binary files /dev/null and b/public/terrain/18/429247/176979.terrain differ diff --git a/public/terrain/18/429247/176980.terrain b/public/terrain/18/429247/176980.terrain new file mode 100644 index 000000000..b4f22236f Binary files /dev/null and b/public/terrain/18/429247/176980.terrain differ diff --git a/public/terrain/18/429247/176981.terrain b/public/terrain/18/429247/176981.terrain new file mode 100644 index 000000000..01dec54c4 Binary files /dev/null and b/public/terrain/18/429247/176981.terrain differ diff --git a/public/terrain/18/429247/176982.terrain b/public/terrain/18/429247/176982.terrain new file mode 100644 index 000000000..95c79777d Binary files /dev/null and b/public/terrain/18/429247/176982.terrain differ diff --git a/public/terrain/18/429247/176983.terrain b/public/terrain/18/429247/176983.terrain new file mode 100644 index 000000000..b31ddc007 Binary files /dev/null and b/public/terrain/18/429247/176983.terrain differ diff --git a/public/terrain/18/429247/176984.terrain b/public/terrain/18/429247/176984.terrain new file mode 100644 index 000000000..aa89f65dc Binary files /dev/null and b/public/terrain/18/429247/176984.terrain differ diff --git a/public/terrain/18/429247/176985.terrain b/public/terrain/18/429247/176985.terrain new file mode 100644 index 000000000..2b60337f9 Binary files /dev/null and b/public/terrain/18/429247/176985.terrain differ diff --git a/public/terrain/18/429247/176986.terrain b/public/terrain/18/429247/176986.terrain new file mode 100644 index 000000000..49b24cb27 Binary files /dev/null and b/public/terrain/18/429247/176986.terrain differ diff --git a/public/terrain/18/429247/176987.terrain b/public/terrain/18/429247/176987.terrain new file mode 100644 index 000000000..9d7975b78 Binary files /dev/null and b/public/terrain/18/429247/176987.terrain differ diff --git a/public/terrain/18/429247/176988.terrain b/public/terrain/18/429247/176988.terrain new file mode 100644 index 000000000..a4682c11f Binary files /dev/null and b/public/terrain/18/429247/176988.terrain differ diff --git a/public/terrain/18/429247/176989.terrain b/public/terrain/18/429247/176989.terrain new file mode 100644 index 000000000..2a07ace44 Binary files /dev/null and b/public/terrain/18/429247/176989.terrain differ diff --git a/public/terrain/18/429247/176990.terrain b/public/terrain/18/429247/176990.terrain new file mode 100644 index 000000000..883df5b78 Binary files /dev/null and b/public/terrain/18/429247/176990.terrain differ diff --git a/public/terrain/18/429247/176991.terrain b/public/terrain/18/429247/176991.terrain new file mode 100644 index 000000000..895443ec1 Binary files /dev/null and b/public/terrain/18/429247/176991.terrain differ diff --git a/public/terrain/18/429247/176992.terrain b/public/terrain/18/429247/176992.terrain new file mode 100644 index 000000000..224f2d80d Binary files /dev/null and b/public/terrain/18/429247/176992.terrain differ diff --git a/public/terrain/18/429247/176993.terrain b/public/terrain/18/429247/176993.terrain new file mode 100644 index 000000000..26e9fb6a1 Binary files /dev/null and b/public/terrain/18/429247/176993.terrain differ diff --git a/public/terrain/18/429247/176994.terrain b/public/terrain/18/429247/176994.terrain new file mode 100644 index 000000000..06cefcd96 Binary files /dev/null and b/public/terrain/18/429247/176994.terrain differ diff --git a/public/terrain/18/429247/176995.terrain b/public/terrain/18/429247/176995.terrain new file mode 100644 index 000000000..fd994d23c Binary files /dev/null and b/public/terrain/18/429247/176995.terrain differ diff --git a/public/terrain/18/429247/176996.terrain b/public/terrain/18/429247/176996.terrain new file mode 100644 index 000000000..28f6d2ec6 Binary files /dev/null and b/public/terrain/18/429247/176996.terrain differ diff --git a/public/terrain/18/429247/176997.terrain b/public/terrain/18/429247/176997.terrain new file mode 100644 index 000000000..a0072f2e6 Binary files /dev/null and b/public/terrain/18/429247/176997.terrain differ diff --git a/public/terrain/18/429247/176998.terrain b/public/terrain/18/429247/176998.terrain new file mode 100644 index 000000000..8f6eb2b5a Binary files /dev/null and b/public/terrain/18/429247/176998.terrain differ diff --git a/public/terrain/18/429247/176999.terrain b/public/terrain/18/429247/176999.terrain new file mode 100644 index 000000000..37947cab0 Binary files /dev/null and b/public/terrain/18/429247/176999.terrain differ diff --git a/public/terrain/18/429247/177000.terrain b/public/terrain/18/429247/177000.terrain new file mode 100644 index 000000000..812bae443 Binary files /dev/null and b/public/terrain/18/429247/177000.terrain differ diff --git a/public/terrain/18/429247/177001.terrain b/public/terrain/18/429247/177001.terrain new file mode 100644 index 000000000..35b9929f3 Binary files /dev/null and b/public/terrain/18/429247/177001.terrain differ diff --git a/public/terrain/18/429247/177002.terrain b/public/terrain/18/429247/177002.terrain new file mode 100644 index 000000000..afc4669d0 Binary files /dev/null and b/public/terrain/18/429247/177002.terrain differ diff --git a/public/terrain/18/429247/177003.terrain b/public/terrain/18/429247/177003.terrain new file mode 100644 index 000000000..04762746e Binary files /dev/null and b/public/terrain/18/429247/177003.terrain differ diff --git a/public/terrain/18/429247/177004.terrain b/public/terrain/18/429247/177004.terrain new file mode 100644 index 000000000..3326b6711 Binary files /dev/null and b/public/terrain/18/429247/177004.terrain differ diff --git a/public/terrain/18/429247/177005.terrain b/public/terrain/18/429247/177005.terrain new file mode 100644 index 000000000..bf8d76a8c Binary files /dev/null and b/public/terrain/18/429247/177005.terrain differ diff --git a/public/terrain/18/429247/177006.terrain b/public/terrain/18/429247/177006.terrain new file mode 100644 index 000000000..2b56eabaf Binary files /dev/null and b/public/terrain/18/429247/177006.terrain differ diff --git a/public/terrain/18/429247/177007.terrain b/public/terrain/18/429247/177007.terrain new file mode 100644 index 000000000..890d391db Binary files /dev/null and b/public/terrain/18/429247/177007.terrain differ diff --git a/public/terrain/18/429247/177008.terrain b/public/terrain/18/429247/177008.terrain new file mode 100644 index 000000000..fe596c6f8 Binary files /dev/null and b/public/terrain/18/429247/177008.terrain differ diff --git a/public/terrain/18/429247/177009.terrain b/public/terrain/18/429247/177009.terrain new file mode 100644 index 000000000..0d161435a Binary files /dev/null and b/public/terrain/18/429247/177009.terrain differ diff --git a/public/terrain/18/429247/177010.terrain b/public/terrain/18/429247/177010.terrain new file mode 100644 index 000000000..ae3e78cd1 Binary files /dev/null and b/public/terrain/18/429247/177010.terrain differ diff --git a/public/terrain/18/429247/177011.terrain b/public/terrain/18/429247/177011.terrain new file mode 100644 index 000000000..4a1c80b76 Binary files /dev/null and b/public/terrain/18/429247/177011.terrain differ diff --git a/public/terrain/18/429247/177012.terrain b/public/terrain/18/429247/177012.terrain new file mode 100644 index 000000000..d743007c7 Binary files /dev/null and b/public/terrain/18/429247/177012.terrain differ diff --git a/public/terrain/18/429247/177013.terrain b/public/terrain/18/429247/177013.terrain new file mode 100644 index 000000000..5e76f50ca Binary files /dev/null and b/public/terrain/18/429247/177013.terrain differ diff --git a/public/terrain/18/429247/177014.terrain b/public/terrain/18/429247/177014.terrain new file mode 100644 index 000000000..65e4cd580 Binary files /dev/null and b/public/terrain/18/429247/177014.terrain differ diff --git a/public/terrain/18/429247/177015.terrain b/public/terrain/18/429247/177015.terrain new file mode 100644 index 000000000..792e363ac Binary files /dev/null and b/public/terrain/18/429247/177015.terrain differ diff --git a/public/terrain/18/429247/177016.terrain b/public/terrain/18/429247/177016.terrain new file mode 100644 index 000000000..acc888a34 Binary files /dev/null and b/public/terrain/18/429247/177016.terrain differ diff --git a/public/terrain/18/429247/177017.terrain b/public/terrain/18/429247/177017.terrain new file mode 100644 index 000000000..189ff7cb2 Binary files /dev/null and b/public/terrain/18/429247/177017.terrain differ diff --git a/public/terrain/18/429247/177018.terrain b/public/terrain/18/429247/177018.terrain new file mode 100644 index 000000000..03f01e35e Binary files /dev/null and b/public/terrain/18/429247/177018.terrain differ diff --git a/public/terrain/18/429247/177019.terrain b/public/terrain/18/429247/177019.terrain new file mode 100644 index 000000000..817d8e459 Binary files /dev/null and b/public/terrain/18/429247/177019.terrain differ diff --git a/public/terrain/18/429247/177020.terrain b/public/terrain/18/429247/177020.terrain new file mode 100644 index 000000000..bfe1e9b73 Binary files /dev/null and b/public/terrain/18/429247/177020.terrain differ diff --git a/public/terrain/18/429247/177021.terrain b/public/terrain/18/429247/177021.terrain new file mode 100644 index 000000000..07afafbb9 Binary files /dev/null and b/public/terrain/18/429247/177021.terrain differ diff --git a/public/terrain/18/429247/177022.terrain b/public/terrain/18/429247/177022.terrain new file mode 100644 index 000000000..17f7caaa9 Binary files /dev/null and b/public/terrain/18/429247/177022.terrain differ diff --git a/public/terrain/18/429247/177023.terrain b/public/terrain/18/429247/177023.terrain new file mode 100644 index 000000000..f7b7dead2 Binary files /dev/null and b/public/terrain/18/429247/177023.terrain differ diff --git a/public/terrain/18/429247/177024.terrain b/public/terrain/18/429247/177024.terrain new file mode 100644 index 000000000..94ffa1be3 Binary files /dev/null and b/public/terrain/18/429247/177024.terrain differ diff --git a/public/terrain/18/429247/177025.terrain b/public/terrain/18/429247/177025.terrain new file mode 100644 index 000000000..84ae733b2 Binary files /dev/null and b/public/terrain/18/429247/177025.terrain differ diff --git a/public/terrain/18/429247/177026.terrain b/public/terrain/18/429247/177026.terrain new file mode 100644 index 000000000..914854c4e Binary files /dev/null and b/public/terrain/18/429247/177026.terrain differ diff --git a/public/terrain/18/429247/177027.terrain b/public/terrain/18/429247/177027.terrain new file mode 100644 index 000000000..f94e6df53 Binary files /dev/null and b/public/terrain/18/429247/177027.terrain differ diff --git a/public/terrain/18/429247/177028.terrain b/public/terrain/18/429247/177028.terrain new file mode 100644 index 000000000..cc38a31fd Binary files /dev/null and b/public/terrain/18/429247/177028.terrain differ diff --git a/public/terrain/18/429247/177029.terrain b/public/terrain/18/429247/177029.terrain new file mode 100644 index 000000000..98bc80ca0 Binary files /dev/null and b/public/terrain/18/429247/177029.terrain differ diff --git a/public/terrain/18/429248/176871.terrain b/public/terrain/18/429248/176871.terrain new file mode 100644 index 000000000..611d3fb0f Binary files /dev/null and b/public/terrain/18/429248/176871.terrain differ diff --git a/public/terrain/18/429248/176872.terrain b/public/terrain/18/429248/176872.terrain new file mode 100644 index 000000000..eb8dece00 Binary files /dev/null and b/public/terrain/18/429248/176872.terrain differ diff --git a/public/terrain/18/429248/176873.terrain b/public/terrain/18/429248/176873.terrain new file mode 100644 index 000000000..9b7012a16 Binary files /dev/null and b/public/terrain/18/429248/176873.terrain differ diff --git a/public/terrain/18/429248/176874.terrain b/public/terrain/18/429248/176874.terrain new file mode 100644 index 000000000..06b8b1674 Binary files /dev/null and b/public/terrain/18/429248/176874.terrain differ diff --git a/public/terrain/18/429248/176875.terrain b/public/terrain/18/429248/176875.terrain new file mode 100644 index 000000000..36713312b Binary files /dev/null and b/public/terrain/18/429248/176875.terrain differ diff --git a/public/terrain/18/429248/176876.terrain b/public/terrain/18/429248/176876.terrain new file mode 100644 index 000000000..c2332eb3f Binary files /dev/null and b/public/terrain/18/429248/176876.terrain differ diff --git a/public/terrain/18/429248/176877.terrain b/public/terrain/18/429248/176877.terrain new file mode 100644 index 000000000..848e2ba19 Binary files /dev/null and b/public/terrain/18/429248/176877.terrain differ diff --git a/public/terrain/18/429248/176878.terrain b/public/terrain/18/429248/176878.terrain new file mode 100644 index 000000000..be59cc03f Binary files /dev/null and b/public/terrain/18/429248/176878.terrain differ diff --git a/public/terrain/18/429248/176879.terrain b/public/terrain/18/429248/176879.terrain new file mode 100644 index 000000000..a55f8976d Binary files /dev/null and b/public/terrain/18/429248/176879.terrain differ diff --git a/public/terrain/18/429248/176880.terrain b/public/terrain/18/429248/176880.terrain new file mode 100644 index 000000000..0a43132c5 Binary files /dev/null and b/public/terrain/18/429248/176880.terrain differ diff --git a/public/terrain/18/429248/176881.terrain b/public/terrain/18/429248/176881.terrain new file mode 100644 index 000000000..743c685fe Binary files /dev/null and b/public/terrain/18/429248/176881.terrain differ diff --git a/public/terrain/18/429248/176882.terrain b/public/terrain/18/429248/176882.terrain new file mode 100644 index 000000000..8c2607a70 Binary files /dev/null and b/public/terrain/18/429248/176882.terrain differ diff --git a/public/terrain/18/429248/176883.terrain b/public/terrain/18/429248/176883.terrain new file mode 100644 index 000000000..af3db5580 Binary files /dev/null and b/public/terrain/18/429248/176883.terrain differ diff --git a/public/terrain/18/429248/176884.terrain b/public/terrain/18/429248/176884.terrain new file mode 100644 index 000000000..a15e17dd4 Binary files /dev/null and b/public/terrain/18/429248/176884.terrain differ diff --git a/public/terrain/18/429248/176885.terrain b/public/terrain/18/429248/176885.terrain new file mode 100644 index 000000000..5f5935630 Binary files /dev/null and b/public/terrain/18/429248/176885.terrain differ diff --git a/public/terrain/18/429248/176886.terrain b/public/terrain/18/429248/176886.terrain new file mode 100644 index 000000000..2deb77629 Binary files /dev/null and b/public/terrain/18/429248/176886.terrain differ diff --git a/public/terrain/18/429248/176887.terrain b/public/terrain/18/429248/176887.terrain new file mode 100644 index 000000000..628f27350 Binary files /dev/null and b/public/terrain/18/429248/176887.terrain differ diff --git a/public/terrain/18/429248/176888.terrain b/public/terrain/18/429248/176888.terrain new file mode 100644 index 000000000..c6cffb918 Binary files /dev/null and b/public/terrain/18/429248/176888.terrain differ diff --git a/public/terrain/18/429248/176889.terrain b/public/terrain/18/429248/176889.terrain new file mode 100644 index 000000000..6d61dcbe6 Binary files /dev/null and b/public/terrain/18/429248/176889.terrain differ diff --git a/public/terrain/18/429248/176890.terrain b/public/terrain/18/429248/176890.terrain new file mode 100644 index 000000000..1f26e5326 Binary files /dev/null and b/public/terrain/18/429248/176890.terrain differ diff --git a/public/terrain/18/429248/176891.terrain b/public/terrain/18/429248/176891.terrain new file mode 100644 index 000000000..2aa928be3 Binary files /dev/null and b/public/terrain/18/429248/176891.terrain differ diff --git a/public/terrain/18/429248/176892.terrain b/public/terrain/18/429248/176892.terrain new file mode 100644 index 000000000..52c9d9a4e Binary files /dev/null and b/public/terrain/18/429248/176892.terrain differ diff --git a/public/terrain/18/429248/176893.terrain b/public/terrain/18/429248/176893.terrain new file mode 100644 index 000000000..7fdbc1c1c Binary files /dev/null and b/public/terrain/18/429248/176893.terrain differ diff --git a/public/terrain/18/429248/176894.terrain b/public/terrain/18/429248/176894.terrain new file mode 100644 index 000000000..76dcb093b Binary files /dev/null and b/public/terrain/18/429248/176894.terrain differ diff --git a/public/terrain/18/429248/176895.terrain b/public/terrain/18/429248/176895.terrain new file mode 100644 index 000000000..0814b60d3 Binary files /dev/null and b/public/terrain/18/429248/176895.terrain differ diff --git a/public/terrain/18/429248/176896.terrain b/public/terrain/18/429248/176896.terrain new file mode 100644 index 000000000..657e1d52d Binary files /dev/null and b/public/terrain/18/429248/176896.terrain differ diff --git a/public/terrain/18/429248/176897.terrain b/public/terrain/18/429248/176897.terrain new file mode 100644 index 000000000..d8c7c8d88 Binary files /dev/null and b/public/terrain/18/429248/176897.terrain differ diff --git a/public/terrain/18/429248/176898.terrain b/public/terrain/18/429248/176898.terrain new file mode 100644 index 000000000..1ddcb27f5 Binary files /dev/null and b/public/terrain/18/429248/176898.terrain differ diff --git a/public/terrain/18/429248/176899.terrain b/public/terrain/18/429248/176899.terrain new file mode 100644 index 000000000..c5c32afba Binary files /dev/null and b/public/terrain/18/429248/176899.terrain differ diff --git a/public/terrain/18/429248/176900.terrain b/public/terrain/18/429248/176900.terrain new file mode 100644 index 000000000..469961c3f Binary files /dev/null and b/public/terrain/18/429248/176900.terrain differ diff --git a/public/terrain/18/429248/176901.terrain b/public/terrain/18/429248/176901.terrain new file mode 100644 index 000000000..257acc087 Binary files /dev/null and b/public/terrain/18/429248/176901.terrain differ diff --git a/public/terrain/18/429248/176902.terrain b/public/terrain/18/429248/176902.terrain new file mode 100644 index 000000000..6c49a81a1 Binary files /dev/null and b/public/terrain/18/429248/176902.terrain differ diff --git a/public/terrain/18/429248/176903.terrain b/public/terrain/18/429248/176903.terrain new file mode 100644 index 000000000..f304572b1 Binary files /dev/null and b/public/terrain/18/429248/176903.terrain differ diff --git a/public/terrain/18/429248/176904.terrain b/public/terrain/18/429248/176904.terrain new file mode 100644 index 000000000..1fc52c908 Binary files /dev/null and b/public/terrain/18/429248/176904.terrain differ diff --git a/public/terrain/18/429248/176905.terrain b/public/terrain/18/429248/176905.terrain new file mode 100644 index 000000000..58619db25 Binary files /dev/null and b/public/terrain/18/429248/176905.terrain differ diff --git a/public/terrain/18/429248/176906.terrain b/public/terrain/18/429248/176906.terrain new file mode 100644 index 000000000..744b80e18 Binary files /dev/null and b/public/terrain/18/429248/176906.terrain differ diff --git a/public/terrain/18/429248/176907.terrain b/public/terrain/18/429248/176907.terrain new file mode 100644 index 000000000..9fee7e418 Binary files /dev/null and b/public/terrain/18/429248/176907.terrain differ diff --git a/public/terrain/18/429248/176908.terrain b/public/terrain/18/429248/176908.terrain new file mode 100644 index 000000000..c1426fbaa Binary files /dev/null and b/public/terrain/18/429248/176908.terrain differ diff --git a/public/terrain/18/429248/176909.terrain b/public/terrain/18/429248/176909.terrain new file mode 100644 index 000000000..583db3318 Binary files /dev/null and b/public/terrain/18/429248/176909.terrain differ diff --git a/public/terrain/18/429248/176910.terrain b/public/terrain/18/429248/176910.terrain new file mode 100644 index 000000000..3f3d7d6f8 Binary files /dev/null and b/public/terrain/18/429248/176910.terrain differ diff --git a/public/terrain/18/429248/176911.terrain b/public/terrain/18/429248/176911.terrain new file mode 100644 index 000000000..41d74966f Binary files /dev/null and b/public/terrain/18/429248/176911.terrain differ diff --git a/public/terrain/18/429248/176912.terrain b/public/terrain/18/429248/176912.terrain new file mode 100644 index 000000000..33d5fc218 Binary files /dev/null and b/public/terrain/18/429248/176912.terrain differ diff --git a/public/terrain/18/429248/176913.terrain b/public/terrain/18/429248/176913.terrain new file mode 100644 index 000000000..788dd8171 Binary files /dev/null and b/public/terrain/18/429248/176913.terrain differ diff --git a/public/terrain/18/429248/176914.terrain b/public/terrain/18/429248/176914.terrain new file mode 100644 index 000000000..1cbb1fa79 Binary files /dev/null and b/public/terrain/18/429248/176914.terrain differ diff --git a/public/terrain/18/429248/176915.terrain b/public/terrain/18/429248/176915.terrain new file mode 100644 index 000000000..ffab4a2ae Binary files /dev/null and b/public/terrain/18/429248/176915.terrain differ diff --git a/public/terrain/18/429248/176916.terrain b/public/terrain/18/429248/176916.terrain new file mode 100644 index 000000000..9af9980ab Binary files /dev/null and b/public/terrain/18/429248/176916.terrain differ diff --git a/public/terrain/18/429248/176917.terrain b/public/terrain/18/429248/176917.terrain new file mode 100644 index 000000000..70e5788cc Binary files /dev/null and b/public/terrain/18/429248/176917.terrain differ diff --git a/public/terrain/18/429248/176918.terrain b/public/terrain/18/429248/176918.terrain new file mode 100644 index 000000000..46e0ef0af Binary files /dev/null and b/public/terrain/18/429248/176918.terrain differ diff --git a/public/terrain/18/429248/176919.terrain b/public/terrain/18/429248/176919.terrain new file mode 100644 index 000000000..23de4e1bd Binary files /dev/null and b/public/terrain/18/429248/176919.terrain differ diff --git a/public/terrain/18/429248/176920.terrain b/public/terrain/18/429248/176920.terrain new file mode 100644 index 000000000..aeb992d39 Binary files /dev/null and b/public/terrain/18/429248/176920.terrain differ diff --git a/public/terrain/18/429248/176921.terrain b/public/terrain/18/429248/176921.terrain new file mode 100644 index 000000000..3524239a2 Binary files /dev/null and b/public/terrain/18/429248/176921.terrain differ diff --git a/public/terrain/18/429248/176922.terrain b/public/terrain/18/429248/176922.terrain new file mode 100644 index 000000000..6cfb7707c Binary files /dev/null and b/public/terrain/18/429248/176922.terrain differ diff --git a/public/terrain/18/429248/176923.terrain b/public/terrain/18/429248/176923.terrain new file mode 100644 index 000000000..458c0b942 Binary files /dev/null and b/public/terrain/18/429248/176923.terrain differ diff --git a/public/terrain/18/429248/176924.terrain b/public/terrain/18/429248/176924.terrain new file mode 100644 index 000000000..b3a40d746 Binary files /dev/null and b/public/terrain/18/429248/176924.terrain differ diff --git a/public/terrain/18/429248/176925.terrain b/public/terrain/18/429248/176925.terrain new file mode 100644 index 000000000..51073485f Binary files /dev/null and b/public/terrain/18/429248/176925.terrain differ diff --git a/public/terrain/18/429248/176926.terrain b/public/terrain/18/429248/176926.terrain new file mode 100644 index 000000000..b7b38f352 Binary files /dev/null and b/public/terrain/18/429248/176926.terrain differ diff --git a/public/terrain/18/429248/176927.terrain b/public/terrain/18/429248/176927.terrain new file mode 100644 index 000000000..836392e61 Binary files /dev/null and b/public/terrain/18/429248/176927.terrain differ diff --git a/public/terrain/18/429248/176928.terrain b/public/terrain/18/429248/176928.terrain new file mode 100644 index 000000000..01c12f7e5 Binary files /dev/null and b/public/terrain/18/429248/176928.terrain differ diff --git a/public/terrain/18/429248/176929.terrain b/public/terrain/18/429248/176929.terrain new file mode 100644 index 000000000..efca8f4a6 Binary files /dev/null and b/public/terrain/18/429248/176929.terrain differ diff --git a/public/terrain/18/429248/176930.terrain b/public/terrain/18/429248/176930.terrain new file mode 100644 index 000000000..e28972a6e Binary files /dev/null and b/public/terrain/18/429248/176930.terrain differ diff --git a/public/terrain/18/429248/176931.terrain b/public/terrain/18/429248/176931.terrain new file mode 100644 index 000000000..8ea3773a5 Binary files /dev/null and b/public/terrain/18/429248/176931.terrain differ diff --git a/public/terrain/18/429248/176932.terrain b/public/terrain/18/429248/176932.terrain new file mode 100644 index 000000000..f5cf50848 Binary files /dev/null and b/public/terrain/18/429248/176932.terrain differ diff --git a/public/terrain/18/429248/176933.terrain b/public/terrain/18/429248/176933.terrain new file mode 100644 index 000000000..0b3a24724 Binary files /dev/null and b/public/terrain/18/429248/176933.terrain differ diff --git a/public/terrain/18/429248/176934.terrain b/public/terrain/18/429248/176934.terrain new file mode 100644 index 000000000..ece1e225b Binary files /dev/null and b/public/terrain/18/429248/176934.terrain differ diff --git a/public/terrain/18/429248/176935.terrain b/public/terrain/18/429248/176935.terrain new file mode 100644 index 000000000..ded94ce54 Binary files /dev/null and b/public/terrain/18/429248/176935.terrain differ diff --git a/public/terrain/18/429248/176936.terrain b/public/terrain/18/429248/176936.terrain new file mode 100644 index 000000000..348625be5 Binary files /dev/null and b/public/terrain/18/429248/176936.terrain differ diff --git a/public/terrain/18/429248/176937.terrain b/public/terrain/18/429248/176937.terrain new file mode 100644 index 000000000..141156550 Binary files /dev/null and b/public/terrain/18/429248/176937.terrain differ diff --git a/public/terrain/18/429248/176938.terrain b/public/terrain/18/429248/176938.terrain new file mode 100644 index 000000000..899392037 Binary files /dev/null and b/public/terrain/18/429248/176938.terrain differ diff --git a/public/terrain/18/429248/176939.terrain b/public/terrain/18/429248/176939.terrain new file mode 100644 index 000000000..f41f1bd0f Binary files /dev/null and b/public/terrain/18/429248/176939.terrain differ diff --git a/public/terrain/18/429248/176940.terrain b/public/terrain/18/429248/176940.terrain new file mode 100644 index 000000000..2d3a40c73 Binary files /dev/null and b/public/terrain/18/429248/176940.terrain differ diff --git a/public/terrain/18/429248/176941.terrain b/public/terrain/18/429248/176941.terrain new file mode 100644 index 000000000..cfacad7d7 Binary files /dev/null and b/public/terrain/18/429248/176941.terrain differ diff --git a/public/terrain/18/429248/176942.terrain b/public/terrain/18/429248/176942.terrain new file mode 100644 index 000000000..77be9636c Binary files /dev/null and b/public/terrain/18/429248/176942.terrain differ diff --git a/public/terrain/18/429248/176943.terrain b/public/terrain/18/429248/176943.terrain new file mode 100644 index 000000000..4dc418cd8 Binary files /dev/null and b/public/terrain/18/429248/176943.terrain differ diff --git a/public/terrain/18/429248/176944.terrain b/public/terrain/18/429248/176944.terrain new file mode 100644 index 000000000..c417a9be8 Binary files /dev/null and b/public/terrain/18/429248/176944.terrain differ diff --git a/public/terrain/18/429248/176945.terrain b/public/terrain/18/429248/176945.terrain new file mode 100644 index 000000000..744ac7bb9 Binary files /dev/null and b/public/terrain/18/429248/176945.terrain differ diff --git a/public/terrain/18/429248/176946.terrain b/public/terrain/18/429248/176946.terrain new file mode 100644 index 000000000..9ea3748f4 Binary files /dev/null and b/public/terrain/18/429248/176946.terrain differ diff --git a/public/terrain/18/429248/176947.terrain b/public/terrain/18/429248/176947.terrain new file mode 100644 index 000000000..31c9aa83c Binary files /dev/null and b/public/terrain/18/429248/176947.terrain differ diff --git a/public/terrain/18/429248/176948.terrain b/public/terrain/18/429248/176948.terrain new file mode 100644 index 000000000..1bb7b43f5 Binary files /dev/null and b/public/terrain/18/429248/176948.terrain differ diff --git a/public/terrain/18/429248/176949.terrain b/public/terrain/18/429248/176949.terrain new file mode 100644 index 000000000..1596fdd60 Binary files /dev/null and b/public/terrain/18/429248/176949.terrain differ diff --git a/public/terrain/18/429248/176950.terrain b/public/terrain/18/429248/176950.terrain new file mode 100644 index 000000000..6fb2eec50 Binary files /dev/null and b/public/terrain/18/429248/176950.terrain differ diff --git a/public/terrain/18/429248/176951.terrain b/public/terrain/18/429248/176951.terrain new file mode 100644 index 000000000..ad7c90d88 Binary files /dev/null and b/public/terrain/18/429248/176951.terrain differ diff --git a/public/terrain/18/429248/176952.terrain b/public/terrain/18/429248/176952.terrain new file mode 100644 index 000000000..ebf82948b Binary files /dev/null and b/public/terrain/18/429248/176952.terrain differ diff --git a/public/terrain/18/429248/176953.terrain b/public/terrain/18/429248/176953.terrain new file mode 100644 index 000000000..9d7655da8 Binary files /dev/null and b/public/terrain/18/429248/176953.terrain differ diff --git a/public/terrain/18/429248/176954.terrain b/public/terrain/18/429248/176954.terrain new file mode 100644 index 000000000..eae3f697f Binary files /dev/null and b/public/terrain/18/429248/176954.terrain differ diff --git a/public/terrain/18/429248/176955.terrain b/public/terrain/18/429248/176955.terrain new file mode 100644 index 000000000..04848c631 Binary files /dev/null and b/public/terrain/18/429248/176955.terrain differ diff --git a/public/terrain/18/429248/176956.terrain b/public/terrain/18/429248/176956.terrain new file mode 100644 index 000000000..a6ad1309f Binary files /dev/null and b/public/terrain/18/429248/176956.terrain differ diff --git a/public/terrain/18/429248/176957.terrain b/public/terrain/18/429248/176957.terrain new file mode 100644 index 000000000..f52225be1 Binary files /dev/null and b/public/terrain/18/429248/176957.terrain differ diff --git a/public/terrain/18/429248/176958.terrain b/public/terrain/18/429248/176958.terrain new file mode 100644 index 000000000..5a3c432aa Binary files /dev/null and b/public/terrain/18/429248/176958.terrain differ diff --git a/public/terrain/18/429248/176959.terrain b/public/terrain/18/429248/176959.terrain new file mode 100644 index 000000000..65250d31f Binary files /dev/null and b/public/terrain/18/429248/176959.terrain differ diff --git a/public/terrain/18/429248/176960.terrain b/public/terrain/18/429248/176960.terrain new file mode 100644 index 000000000..faef2a9bb Binary files /dev/null and b/public/terrain/18/429248/176960.terrain differ diff --git a/public/terrain/18/429248/176961.terrain b/public/terrain/18/429248/176961.terrain new file mode 100644 index 000000000..c24002352 Binary files /dev/null and b/public/terrain/18/429248/176961.terrain differ diff --git a/public/terrain/18/429248/176962.terrain b/public/terrain/18/429248/176962.terrain new file mode 100644 index 000000000..5d7fab54f Binary files /dev/null and b/public/terrain/18/429248/176962.terrain differ diff --git a/public/terrain/18/429248/176963.terrain b/public/terrain/18/429248/176963.terrain new file mode 100644 index 000000000..7cb5878b4 Binary files /dev/null and b/public/terrain/18/429248/176963.terrain differ diff --git a/public/terrain/18/429248/176964.terrain b/public/terrain/18/429248/176964.terrain new file mode 100644 index 000000000..e89f2c619 Binary files /dev/null and b/public/terrain/18/429248/176964.terrain differ diff --git a/public/terrain/18/429248/176965.terrain b/public/terrain/18/429248/176965.terrain new file mode 100644 index 000000000..77bac6860 Binary files /dev/null and b/public/terrain/18/429248/176965.terrain differ diff --git a/public/terrain/18/429248/176966.terrain b/public/terrain/18/429248/176966.terrain new file mode 100644 index 000000000..879d88c76 Binary files /dev/null and b/public/terrain/18/429248/176966.terrain differ diff --git a/public/terrain/18/429248/176967.terrain b/public/terrain/18/429248/176967.terrain new file mode 100644 index 000000000..57a4006d9 Binary files /dev/null and b/public/terrain/18/429248/176967.terrain differ diff --git a/public/terrain/18/429248/176968.terrain b/public/terrain/18/429248/176968.terrain new file mode 100644 index 000000000..9f5e86ec4 Binary files /dev/null and b/public/terrain/18/429248/176968.terrain differ diff --git a/public/terrain/18/429248/176969.terrain b/public/terrain/18/429248/176969.terrain new file mode 100644 index 000000000..a2f703c46 Binary files /dev/null and b/public/terrain/18/429248/176969.terrain differ diff --git a/public/terrain/18/429248/176970.terrain b/public/terrain/18/429248/176970.terrain new file mode 100644 index 000000000..06d130a29 Binary files /dev/null and b/public/terrain/18/429248/176970.terrain differ diff --git a/public/terrain/18/429248/176971.terrain b/public/terrain/18/429248/176971.terrain new file mode 100644 index 000000000..c0693384f Binary files /dev/null and b/public/terrain/18/429248/176971.terrain differ diff --git a/public/terrain/18/429248/176972.terrain b/public/terrain/18/429248/176972.terrain new file mode 100644 index 000000000..d4a320b4a Binary files /dev/null and b/public/terrain/18/429248/176972.terrain differ diff --git a/public/terrain/18/429248/176973.terrain b/public/terrain/18/429248/176973.terrain new file mode 100644 index 000000000..28e26905f Binary files /dev/null and b/public/terrain/18/429248/176973.terrain differ diff --git a/public/terrain/18/429248/176974.terrain b/public/terrain/18/429248/176974.terrain new file mode 100644 index 000000000..b2b1c321a Binary files /dev/null and b/public/terrain/18/429248/176974.terrain differ diff --git a/public/terrain/18/429248/176975.terrain b/public/terrain/18/429248/176975.terrain new file mode 100644 index 000000000..0cc02c00e Binary files /dev/null and b/public/terrain/18/429248/176975.terrain differ diff --git a/public/terrain/18/429248/176976.terrain b/public/terrain/18/429248/176976.terrain new file mode 100644 index 000000000..b1740d416 Binary files /dev/null and b/public/terrain/18/429248/176976.terrain differ diff --git a/public/terrain/18/429248/176977.terrain b/public/terrain/18/429248/176977.terrain new file mode 100644 index 000000000..4768dc6b0 Binary files /dev/null and b/public/terrain/18/429248/176977.terrain differ diff --git a/public/terrain/18/429248/176978.terrain b/public/terrain/18/429248/176978.terrain new file mode 100644 index 000000000..ed295972c Binary files /dev/null and b/public/terrain/18/429248/176978.terrain differ diff --git a/public/terrain/18/429248/176979.terrain b/public/terrain/18/429248/176979.terrain new file mode 100644 index 000000000..cf0fcf05e Binary files /dev/null and b/public/terrain/18/429248/176979.terrain differ diff --git a/public/terrain/18/429248/176980.terrain b/public/terrain/18/429248/176980.terrain new file mode 100644 index 000000000..891300fdb Binary files /dev/null and b/public/terrain/18/429248/176980.terrain differ diff --git a/public/terrain/18/429248/176981.terrain b/public/terrain/18/429248/176981.terrain new file mode 100644 index 000000000..7a2e938b8 Binary files /dev/null and b/public/terrain/18/429248/176981.terrain differ diff --git a/public/terrain/18/429248/176982.terrain b/public/terrain/18/429248/176982.terrain new file mode 100644 index 000000000..80e62428a Binary files /dev/null and b/public/terrain/18/429248/176982.terrain differ diff --git a/public/terrain/18/429248/176983.terrain b/public/terrain/18/429248/176983.terrain new file mode 100644 index 000000000..725ccf288 Binary files /dev/null and b/public/terrain/18/429248/176983.terrain differ diff --git a/public/terrain/18/429248/176984.terrain b/public/terrain/18/429248/176984.terrain new file mode 100644 index 000000000..a4bbb32cd Binary files /dev/null and b/public/terrain/18/429248/176984.terrain differ diff --git a/public/terrain/18/429248/176985.terrain b/public/terrain/18/429248/176985.terrain new file mode 100644 index 000000000..6c98cfcf6 Binary files /dev/null and b/public/terrain/18/429248/176985.terrain differ diff --git a/public/terrain/18/429248/176986.terrain b/public/terrain/18/429248/176986.terrain new file mode 100644 index 000000000..70157d98a Binary files /dev/null and b/public/terrain/18/429248/176986.terrain differ diff --git a/public/terrain/18/429248/176987.terrain b/public/terrain/18/429248/176987.terrain new file mode 100644 index 000000000..60952c977 Binary files /dev/null and b/public/terrain/18/429248/176987.terrain differ diff --git a/public/terrain/18/429248/176988.terrain b/public/terrain/18/429248/176988.terrain new file mode 100644 index 000000000..15072809d Binary files /dev/null and b/public/terrain/18/429248/176988.terrain differ diff --git a/public/terrain/18/429248/176989.terrain b/public/terrain/18/429248/176989.terrain new file mode 100644 index 000000000..52fd6bfe5 Binary files /dev/null and b/public/terrain/18/429248/176989.terrain differ diff --git a/public/terrain/18/429248/176990.terrain b/public/terrain/18/429248/176990.terrain new file mode 100644 index 000000000..a3f3a8e18 Binary files /dev/null and b/public/terrain/18/429248/176990.terrain differ diff --git a/public/terrain/18/429248/176991.terrain b/public/terrain/18/429248/176991.terrain new file mode 100644 index 000000000..7f3e2f0eb Binary files /dev/null and b/public/terrain/18/429248/176991.terrain differ diff --git a/public/terrain/18/429248/176992.terrain b/public/terrain/18/429248/176992.terrain new file mode 100644 index 000000000..c18bb05f3 Binary files /dev/null and b/public/terrain/18/429248/176992.terrain differ diff --git a/public/terrain/18/429248/176993.terrain b/public/terrain/18/429248/176993.terrain new file mode 100644 index 000000000..f4cadebf9 Binary files /dev/null and b/public/terrain/18/429248/176993.terrain differ diff --git a/public/terrain/18/429248/176994.terrain b/public/terrain/18/429248/176994.terrain new file mode 100644 index 000000000..bb951b42c Binary files /dev/null and b/public/terrain/18/429248/176994.terrain differ diff --git a/public/terrain/18/429248/176995.terrain b/public/terrain/18/429248/176995.terrain new file mode 100644 index 000000000..4600fede1 Binary files /dev/null and b/public/terrain/18/429248/176995.terrain differ diff --git a/public/terrain/18/429248/176996.terrain b/public/terrain/18/429248/176996.terrain new file mode 100644 index 000000000..993feef1d Binary files /dev/null and b/public/terrain/18/429248/176996.terrain differ diff --git a/public/terrain/18/429248/176997.terrain b/public/terrain/18/429248/176997.terrain new file mode 100644 index 000000000..e441fc294 Binary files /dev/null and b/public/terrain/18/429248/176997.terrain differ diff --git a/public/terrain/18/429248/176998.terrain b/public/terrain/18/429248/176998.terrain new file mode 100644 index 000000000..29ad51260 Binary files /dev/null and b/public/terrain/18/429248/176998.terrain differ diff --git a/public/terrain/18/429248/176999.terrain b/public/terrain/18/429248/176999.terrain new file mode 100644 index 000000000..ded0955ae Binary files /dev/null and b/public/terrain/18/429248/176999.terrain differ diff --git a/public/terrain/18/429248/177000.terrain b/public/terrain/18/429248/177000.terrain new file mode 100644 index 000000000..105f6394e Binary files /dev/null and b/public/terrain/18/429248/177000.terrain differ diff --git a/public/terrain/18/429248/177001.terrain b/public/terrain/18/429248/177001.terrain new file mode 100644 index 000000000..b93bf0bdb Binary files /dev/null and b/public/terrain/18/429248/177001.terrain differ diff --git a/public/terrain/18/429248/177002.terrain b/public/terrain/18/429248/177002.terrain new file mode 100644 index 000000000..61b790cf8 Binary files /dev/null and b/public/terrain/18/429248/177002.terrain differ diff --git a/public/terrain/18/429248/177003.terrain b/public/terrain/18/429248/177003.terrain new file mode 100644 index 000000000..d2a61a9c3 Binary files /dev/null and b/public/terrain/18/429248/177003.terrain differ diff --git a/public/terrain/18/429248/177004.terrain b/public/terrain/18/429248/177004.terrain new file mode 100644 index 000000000..6f82733ae Binary files /dev/null and b/public/terrain/18/429248/177004.terrain differ diff --git a/public/terrain/18/429248/177005.terrain b/public/terrain/18/429248/177005.terrain new file mode 100644 index 000000000..311c71423 Binary files /dev/null and b/public/terrain/18/429248/177005.terrain differ diff --git a/public/terrain/18/429248/177006.terrain b/public/terrain/18/429248/177006.terrain new file mode 100644 index 000000000..bfba3c5a8 Binary files /dev/null and b/public/terrain/18/429248/177006.terrain differ diff --git a/public/terrain/18/429248/177007.terrain b/public/terrain/18/429248/177007.terrain new file mode 100644 index 000000000..568d84366 Binary files /dev/null and b/public/terrain/18/429248/177007.terrain differ diff --git a/public/terrain/18/429248/177008.terrain b/public/terrain/18/429248/177008.terrain new file mode 100644 index 000000000..ab27c9c31 Binary files /dev/null and b/public/terrain/18/429248/177008.terrain differ diff --git a/public/terrain/18/429248/177009.terrain b/public/terrain/18/429248/177009.terrain new file mode 100644 index 000000000..9a9ad0beb Binary files /dev/null and b/public/terrain/18/429248/177009.terrain differ diff --git a/public/terrain/18/429248/177010.terrain b/public/terrain/18/429248/177010.terrain new file mode 100644 index 000000000..4bbea26b3 Binary files /dev/null and b/public/terrain/18/429248/177010.terrain differ diff --git a/public/terrain/18/429248/177011.terrain b/public/terrain/18/429248/177011.terrain new file mode 100644 index 000000000..932f499e4 Binary files /dev/null and b/public/terrain/18/429248/177011.terrain differ diff --git a/public/terrain/18/429248/177012.terrain b/public/terrain/18/429248/177012.terrain new file mode 100644 index 000000000..b9fe6becf Binary files /dev/null and b/public/terrain/18/429248/177012.terrain differ diff --git a/public/terrain/18/429248/177013.terrain b/public/terrain/18/429248/177013.terrain new file mode 100644 index 000000000..5bd2df6dd Binary files /dev/null and b/public/terrain/18/429248/177013.terrain differ diff --git a/public/terrain/18/429248/177014.terrain b/public/terrain/18/429248/177014.terrain new file mode 100644 index 000000000..eb4b0485e Binary files /dev/null and b/public/terrain/18/429248/177014.terrain differ diff --git a/public/terrain/18/429248/177015.terrain b/public/terrain/18/429248/177015.terrain new file mode 100644 index 000000000..42aa3d112 Binary files /dev/null and b/public/terrain/18/429248/177015.terrain differ diff --git a/public/terrain/18/429248/177016.terrain b/public/terrain/18/429248/177016.terrain new file mode 100644 index 000000000..8961ad04a Binary files /dev/null and b/public/terrain/18/429248/177016.terrain differ diff --git a/public/terrain/18/429248/177017.terrain b/public/terrain/18/429248/177017.terrain new file mode 100644 index 000000000..17c0c05f1 Binary files /dev/null and b/public/terrain/18/429248/177017.terrain differ diff --git a/public/terrain/18/429248/177018.terrain b/public/terrain/18/429248/177018.terrain new file mode 100644 index 000000000..46275ac5d Binary files /dev/null and b/public/terrain/18/429248/177018.terrain differ diff --git a/public/terrain/18/429248/177019.terrain b/public/terrain/18/429248/177019.terrain new file mode 100644 index 000000000..728e5e3e0 Binary files /dev/null and b/public/terrain/18/429248/177019.terrain differ diff --git a/public/terrain/18/429248/177020.terrain b/public/terrain/18/429248/177020.terrain new file mode 100644 index 000000000..12dd2ecef Binary files /dev/null and b/public/terrain/18/429248/177020.terrain differ diff --git a/public/terrain/18/429248/177021.terrain b/public/terrain/18/429248/177021.terrain new file mode 100644 index 000000000..943c98161 Binary files /dev/null and b/public/terrain/18/429248/177021.terrain differ diff --git a/public/terrain/18/429248/177022.terrain b/public/terrain/18/429248/177022.terrain new file mode 100644 index 000000000..2bf97c69b Binary files /dev/null and b/public/terrain/18/429248/177022.terrain differ diff --git a/public/terrain/18/429248/177023.terrain b/public/terrain/18/429248/177023.terrain new file mode 100644 index 000000000..0f8b07eaa Binary files /dev/null and b/public/terrain/18/429248/177023.terrain differ diff --git a/public/terrain/18/429248/177024.terrain b/public/terrain/18/429248/177024.terrain new file mode 100644 index 000000000..87f24b537 Binary files /dev/null and b/public/terrain/18/429248/177024.terrain differ diff --git a/public/terrain/18/429248/177025.terrain b/public/terrain/18/429248/177025.terrain new file mode 100644 index 000000000..c1feb89ad Binary files /dev/null and b/public/terrain/18/429248/177025.terrain differ diff --git a/public/terrain/18/429248/177026.terrain b/public/terrain/18/429248/177026.terrain new file mode 100644 index 000000000..62e37f711 Binary files /dev/null and b/public/terrain/18/429248/177026.terrain differ diff --git a/public/terrain/18/429248/177027.terrain b/public/terrain/18/429248/177027.terrain new file mode 100644 index 000000000..bfb2610ed Binary files /dev/null and b/public/terrain/18/429248/177027.terrain differ diff --git a/public/terrain/18/429248/177028.terrain b/public/terrain/18/429248/177028.terrain new file mode 100644 index 000000000..4763974e0 Binary files /dev/null and b/public/terrain/18/429248/177028.terrain differ diff --git a/public/terrain/18/429248/177029.terrain b/public/terrain/18/429248/177029.terrain new file mode 100644 index 000000000..fca43c9e4 Binary files /dev/null and b/public/terrain/18/429248/177029.terrain differ diff --git a/public/terrain/18/429249/176871.terrain b/public/terrain/18/429249/176871.terrain new file mode 100644 index 000000000..dbc3c61da Binary files /dev/null and b/public/terrain/18/429249/176871.terrain differ diff --git a/public/terrain/18/429249/176872.terrain b/public/terrain/18/429249/176872.terrain new file mode 100644 index 000000000..2dc964a3f Binary files /dev/null and b/public/terrain/18/429249/176872.terrain differ diff --git a/public/terrain/18/429249/176873.terrain b/public/terrain/18/429249/176873.terrain new file mode 100644 index 000000000..9de2332a1 Binary files /dev/null and b/public/terrain/18/429249/176873.terrain differ diff --git a/public/terrain/18/429249/176874.terrain b/public/terrain/18/429249/176874.terrain new file mode 100644 index 000000000..11c7bc9a4 Binary files /dev/null and b/public/terrain/18/429249/176874.terrain differ diff --git a/public/terrain/18/429249/176875.terrain b/public/terrain/18/429249/176875.terrain new file mode 100644 index 000000000..1fe2bcc25 Binary files /dev/null and b/public/terrain/18/429249/176875.terrain differ diff --git a/public/terrain/18/429249/176876.terrain b/public/terrain/18/429249/176876.terrain new file mode 100644 index 000000000..48972f7e7 Binary files /dev/null and b/public/terrain/18/429249/176876.terrain differ diff --git a/public/terrain/18/429249/176877.terrain b/public/terrain/18/429249/176877.terrain new file mode 100644 index 000000000..62c553010 Binary files /dev/null and b/public/terrain/18/429249/176877.terrain differ diff --git a/public/terrain/18/429249/176878.terrain b/public/terrain/18/429249/176878.terrain new file mode 100644 index 000000000..ccdb6fce5 Binary files /dev/null and b/public/terrain/18/429249/176878.terrain differ diff --git a/public/terrain/18/429249/176879.terrain b/public/terrain/18/429249/176879.terrain new file mode 100644 index 000000000..1b5e23c1a Binary files /dev/null and b/public/terrain/18/429249/176879.terrain differ diff --git a/public/terrain/18/429249/176880.terrain b/public/terrain/18/429249/176880.terrain new file mode 100644 index 000000000..49033a84e Binary files /dev/null and b/public/terrain/18/429249/176880.terrain differ diff --git a/public/terrain/18/429249/176881.terrain b/public/terrain/18/429249/176881.terrain new file mode 100644 index 000000000..d63960d8b Binary files /dev/null and b/public/terrain/18/429249/176881.terrain differ diff --git a/public/terrain/18/429249/176882.terrain b/public/terrain/18/429249/176882.terrain new file mode 100644 index 000000000..5e0169523 Binary files /dev/null and b/public/terrain/18/429249/176882.terrain differ diff --git a/public/terrain/18/429249/176883.terrain b/public/terrain/18/429249/176883.terrain new file mode 100644 index 000000000..82ee9edf3 Binary files /dev/null and b/public/terrain/18/429249/176883.terrain differ diff --git a/public/terrain/18/429249/176884.terrain b/public/terrain/18/429249/176884.terrain new file mode 100644 index 000000000..0b8578ac9 Binary files /dev/null and b/public/terrain/18/429249/176884.terrain differ diff --git a/public/terrain/18/429249/176885.terrain b/public/terrain/18/429249/176885.terrain new file mode 100644 index 000000000..7800d41ac Binary files /dev/null and b/public/terrain/18/429249/176885.terrain differ diff --git a/public/terrain/18/429249/176886.terrain b/public/terrain/18/429249/176886.terrain new file mode 100644 index 000000000..b759dc0c5 Binary files /dev/null and b/public/terrain/18/429249/176886.terrain differ diff --git a/public/terrain/18/429249/176887.terrain b/public/terrain/18/429249/176887.terrain new file mode 100644 index 000000000..6d1de2997 Binary files /dev/null and b/public/terrain/18/429249/176887.terrain differ diff --git a/public/terrain/18/429249/176888.terrain b/public/terrain/18/429249/176888.terrain new file mode 100644 index 000000000..b489c658f Binary files /dev/null and b/public/terrain/18/429249/176888.terrain differ diff --git a/public/terrain/18/429249/176889.terrain b/public/terrain/18/429249/176889.terrain new file mode 100644 index 000000000..1f5f10636 Binary files /dev/null and b/public/terrain/18/429249/176889.terrain differ diff --git a/public/terrain/18/429249/176890.terrain b/public/terrain/18/429249/176890.terrain new file mode 100644 index 000000000..e477a12f3 Binary files /dev/null and b/public/terrain/18/429249/176890.terrain differ diff --git a/public/terrain/18/429249/176891.terrain b/public/terrain/18/429249/176891.terrain new file mode 100644 index 000000000..133f5ed55 Binary files /dev/null and b/public/terrain/18/429249/176891.terrain differ diff --git a/public/terrain/18/429249/176892.terrain b/public/terrain/18/429249/176892.terrain new file mode 100644 index 000000000..2c1732b30 Binary files /dev/null and b/public/terrain/18/429249/176892.terrain differ diff --git a/public/terrain/18/429249/176893.terrain b/public/terrain/18/429249/176893.terrain new file mode 100644 index 000000000..4150f2fbb Binary files /dev/null and b/public/terrain/18/429249/176893.terrain differ diff --git a/public/terrain/18/429249/176894.terrain b/public/terrain/18/429249/176894.terrain new file mode 100644 index 000000000..065ea0985 Binary files /dev/null and b/public/terrain/18/429249/176894.terrain differ diff --git a/public/terrain/18/429249/176895.terrain b/public/terrain/18/429249/176895.terrain new file mode 100644 index 000000000..b3fac4108 Binary files /dev/null and b/public/terrain/18/429249/176895.terrain differ diff --git a/public/terrain/18/429249/176896.terrain b/public/terrain/18/429249/176896.terrain new file mode 100644 index 000000000..79847785f Binary files /dev/null and b/public/terrain/18/429249/176896.terrain differ diff --git a/public/terrain/18/429249/176897.terrain b/public/terrain/18/429249/176897.terrain new file mode 100644 index 000000000..c80efe15f Binary files /dev/null and b/public/terrain/18/429249/176897.terrain differ diff --git a/public/terrain/18/429249/176898.terrain b/public/terrain/18/429249/176898.terrain new file mode 100644 index 000000000..8cc87ea0a Binary files /dev/null and b/public/terrain/18/429249/176898.terrain differ diff --git a/public/terrain/18/429249/176899.terrain b/public/terrain/18/429249/176899.terrain new file mode 100644 index 000000000..f0490ef58 Binary files /dev/null and b/public/terrain/18/429249/176899.terrain differ diff --git a/public/terrain/18/429249/176900.terrain b/public/terrain/18/429249/176900.terrain new file mode 100644 index 000000000..d4652c621 Binary files /dev/null and b/public/terrain/18/429249/176900.terrain differ diff --git a/public/terrain/18/429249/176901.terrain b/public/terrain/18/429249/176901.terrain new file mode 100644 index 000000000..28b22a34d Binary files /dev/null and b/public/terrain/18/429249/176901.terrain differ diff --git a/public/terrain/18/429249/176902.terrain b/public/terrain/18/429249/176902.terrain new file mode 100644 index 000000000..460d4adee Binary files /dev/null and b/public/terrain/18/429249/176902.terrain differ diff --git a/public/terrain/18/429249/176903.terrain b/public/terrain/18/429249/176903.terrain new file mode 100644 index 000000000..df709c60d Binary files /dev/null and b/public/terrain/18/429249/176903.terrain differ diff --git a/public/terrain/18/429249/176904.terrain b/public/terrain/18/429249/176904.terrain new file mode 100644 index 000000000..c3b96e16f Binary files /dev/null and b/public/terrain/18/429249/176904.terrain differ diff --git a/public/terrain/18/429249/176905.terrain b/public/terrain/18/429249/176905.terrain new file mode 100644 index 000000000..b24dfab9e Binary files /dev/null and b/public/terrain/18/429249/176905.terrain differ diff --git a/public/terrain/18/429249/176906.terrain b/public/terrain/18/429249/176906.terrain new file mode 100644 index 000000000..3dc31fde6 Binary files /dev/null and b/public/terrain/18/429249/176906.terrain differ diff --git a/public/terrain/18/429249/176907.terrain b/public/terrain/18/429249/176907.terrain new file mode 100644 index 000000000..8dac023c4 Binary files /dev/null and b/public/terrain/18/429249/176907.terrain differ diff --git a/public/terrain/18/429249/176908.terrain b/public/terrain/18/429249/176908.terrain new file mode 100644 index 000000000..02f7677dc Binary files /dev/null and b/public/terrain/18/429249/176908.terrain differ diff --git a/public/terrain/18/429249/176909.terrain b/public/terrain/18/429249/176909.terrain new file mode 100644 index 000000000..efb1867fd Binary files /dev/null and b/public/terrain/18/429249/176909.terrain differ diff --git a/public/terrain/18/429249/176910.terrain b/public/terrain/18/429249/176910.terrain new file mode 100644 index 000000000..7436576d3 Binary files /dev/null and b/public/terrain/18/429249/176910.terrain differ diff --git a/public/terrain/18/429249/176911.terrain b/public/terrain/18/429249/176911.terrain new file mode 100644 index 000000000..85a81bde1 Binary files /dev/null and b/public/terrain/18/429249/176911.terrain differ diff --git a/public/terrain/18/429249/176912.terrain b/public/terrain/18/429249/176912.terrain new file mode 100644 index 000000000..aa141467c Binary files /dev/null and b/public/terrain/18/429249/176912.terrain differ diff --git a/public/terrain/18/429249/176913.terrain b/public/terrain/18/429249/176913.terrain new file mode 100644 index 000000000..8fecfa84b Binary files /dev/null and b/public/terrain/18/429249/176913.terrain differ diff --git a/public/terrain/18/429249/176914.terrain b/public/terrain/18/429249/176914.terrain new file mode 100644 index 000000000..7e4f71b19 Binary files /dev/null and b/public/terrain/18/429249/176914.terrain differ diff --git a/public/terrain/18/429249/176915.terrain b/public/terrain/18/429249/176915.terrain new file mode 100644 index 000000000..51e6b4d86 Binary files /dev/null and b/public/terrain/18/429249/176915.terrain differ diff --git a/public/terrain/18/429249/176916.terrain b/public/terrain/18/429249/176916.terrain new file mode 100644 index 000000000..b34322a62 Binary files /dev/null and b/public/terrain/18/429249/176916.terrain differ diff --git a/public/terrain/18/429249/176917.terrain b/public/terrain/18/429249/176917.terrain new file mode 100644 index 000000000..f736eea32 Binary files /dev/null and b/public/terrain/18/429249/176917.terrain differ diff --git a/public/terrain/18/429249/176918.terrain b/public/terrain/18/429249/176918.terrain new file mode 100644 index 000000000..f7f4bed74 Binary files /dev/null and b/public/terrain/18/429249/176918.terrain differ diff --git a/public/terrain/18/429249/176919.terrain b/public/terrain/18/429249/176919.terrain new file mode 100644 index 000000000..377e3145d Binary files /dev/null and b/public/terrain/18/429249/176919.terrain differ diff --git a/public/terrain/18/429249/176920.terrain b/public/terrain/18/429249/176920.terrain new file mode 100644 index 000000000..89e36a54b Binary files /dev/null and b/public/terrain/18/429249/176920.terrain differ diff --git a/public/terrain/18/429249/176921.terrain b/public/terrain/18/429249/176921.terrain new file mode 100644 index 000000000..0a4099bb0 Binary files /dev/null and b/public/terrain/18/429249/176921.terrain differ diff --git a/public/terrain/18/429249/176922.terrain b/public/terrain/18/429249/176922.terrain new file mode 100644 index 000000000..f41c44346 Binary files /dev/null and b/public/terrain/18/429249/176922.terrain differ diff --git a/public/terrain/18/429249/176923.terrain b/public/terrain/18/429249/176923.terrain new file mode 100644 index 000000000..e075fc47f Binary files /dev/null and b/public/terrain/18/429249/176923.terrain differ diff --git a/public/terrain/18/429249/176924.terrain b/public/terrain/18/429249/176924.terrain new file mode 100644 index 000000000..c914b952f Binary files /dev/null and b/public/terrain/18/429249/176924.terrain differ diff --git a/public/terrain/18/429249/176925.terrain b/public/terrain/18/429249/176925.terrain new file mode 100644 index 000000000..7bd33f4f1 Binary files /dev/null and b/public/terrain/18/429249/176925.terrain differ diff --git a/public/terrain/18/429249/176926.terrain b/public/terrain/18/429249/176926.terrain new file mode 100644 index 000000000..1e40edd62 Binary files /dev/null and b/public/terrain/18/429249/176926.terrain differ diff --git a/public/terrain/18/429249/176927.terrain b/public/terrain/18/429249/176927.terrain new file mode 100644 index 000000000..28d7806ec Binary files /dev/null and b/public/terrain/18/429249/176927.terrain differ diff --git a/public/terrain/18/429249/176928.terrain b/public/terrain/18/429249/176928.terrain new file mode 100644 index 000000000..74732273a Binary files /dev/null and b/public/terrain/18/429249/176928.terrain differ diff --git a/public/terrain/18/429249/176929.terrain b/public/terrain/18/429249/176929.terrain new file mode 100644 index 000000000..292c7151b Binary files /dev/null and b/public/terrain/18/429249/176929.terrain differ diff --git a/public/terrain/18/429249/176930.terrain b/public/terrain/18/429249/176930.terrain new file mode 100644 index 000000000..d8758b44a Binary files /dev/null and b/public/terrain/18/429249/176930.terrain differ diff --git a/public/terrain/18/429249/176931.terrain b/public/terrain/18/429249/176931.terrain new file mode 100644 index 000000000..771f84e7e Binary files /dev/null and b/public/terrain/18/429249/176931.terrain differ diff --git a/public/terrain/18/429249/176932.terrain b/public/terrain/18/429249/176932.terrain new file mode 100644 index 000000000..4f7f416dc Binary files /dev/null and b/public/terrain/18/429249/176932.terrain differ diff --git a/public/terrain/18/429249/176933.terrain b/public/terrain/18/429249/176933.terrain new file mode 100644 index 000000000..019b8ed7f Binary files /dev/null and b/public/terrain/18/429249/176933.terrain differ diff --git a/public/terrain/18/429249/176934.terrain b/public/terrain/18/429249/176934.terrain new file mode 100644 index 000000000..bf367e7e7 Binary files /dev/null and b/public/terrain/18/429249/176934.terrain differ diff --git a/public/terrain/18/429249/176935.terrain b/public/terrain/18/429249/176935.terrain new file mode 100644 index 000000000..896e3d841 Binary files /dev/null and b/public/terrain/18/429249/176935.terrain differ diff --git a/public/terrain/18/429249/176936.terrain b/public/terrain/18/429249/176936.terrain new file mode 100644 index 000000000..88b4d08b9 Binary files /dev/null and b/public/terrain/18/429249/176936.terrain differ diff --git a/public/terrain/18/429249/176937.terrain b/public/terrain/18/429249/176937.terrain new file mode 100644 index 000000000..3dda21129 Binary files /dev/null and b/public/terrain/18/429249/176937.terrain differ diff --git a/public/terrain/18/429249/176938.terrain b/public/terrain/18/429249/176938.terrain new file mode 100644 index 000000000..10604fb7f Binary files /dev/null and b/public/terrain/18/429249/176938.terrain differ diff --git a/public/terrain/18/429249/176939.terrain b/public/terrain/18/429249/176939.terrain new file mode 100644 index 000000000..292cfbcf2 Binary files /dev/null and b/public/terrain/18/429249/176939.terrain differ diff --git a/public/terrain/18/429249/176940.terrain b/public/terrain/18/429249/176940.terrain new file mode 100644 index 000000000..efa2fbbf3 Binary files /dev/null and b/public/terrain/18/429249/176940.terrain differ diff --git a/public/terrain/18/429249/176941.terrain b/public/terrain/18/429249/176941.terrain new file mode 100644 index 000000000..ec8c72621 Binary files /dev/null and b/public/terrain/18/429249/176941.terrain differ diff --git a/public/terrain/18/429249/176942.terrain b/public/terrain/18/429249/176942.terrain new file mode 100644 index 000000000..03d4e6a8e Binary files /dev/null and b/public/terrain/18/429249/176942.terrain differ diff --git a/public/terrain/18/429249/176943.terrain b/public/terrain/18/429249/176943.terrain new file mode 100644 index 000000000..543c7f7a2 Binary files /dev/null and b/public/terrain/18/429249/176943.terrain differ diff --git a/public/terrain/18/429249/176944.terrain b/public/terrain/18/429249/176944.terrain new file mode 100644 index 000000000..aeb24164e Binary files /dev/null and b/public/terrain/18/429249/176944.terrain differ diff --git a/public/terrain/18/429249/176945.terrain b/public/terrain/18/429249/176945.terrain new file mode 100644 index 000000000..8b92aef79 Binary files /dev/null and b/public/terrain/18/429249/176945.terrain differ diff --git a/public/terrain/18/429249/176946.terrain b/public/terrain/18/429249/176946.terrain new file mode 100644 index 000000000..fda24e47e Binary files /dev/null and b/public/terrain/18/429249/176946.terrain differ diff --git a/public/terrain/18/429249/176947.terrain b/public/terrain/18/429249/176947.terrain new file mode 100644 index 000000000..92206959d Binary files /dev/null and b/public/terrain/18/429249/176947.terrain differ diff --git a/public/terrain/18/429249/176948.terrain b/public/terrain/18/429249/176948.terrain new file mode 100644 index 000000000..286f0385d Binary files /dev/null and b/public/terrain/18/429249/176948.terrain differ diff --git a/public/terrain/18/429249/176949.terrain b/public/terrain/18/429249/176949.terrain new file mode 100644 index 000000000..b42a4d845 Binary files /dev/null and b/public/terrain/18/429249/176949.terrain differ diff --git a/public/terrain/18/429249/176950.terrain b/public/terrain/18/429249/176950.terrain new file mode 100644 index 000000000..7926c2d55 Binary files /dev/null and b/public/terrain/18/429249/176950.terrain differ diff --git a/public/terrain/18/429249/176951.terrain b/public/terrain/18/429249/176951.terrain new file mode 100644 index 000000000..cfd916046 Binary files /dev/null and b/public/terrain/18/429249/176951.terrain differ diff --git a/public/terrain/18/429249/176952.terrain b/public/terrain/18/429249/176952.terrain new file mode 100644 index 000000000..1dad013bb Binary files /dev/null and b/public/terrain/18/429249/176952.terrain differ diff --git a/public/terrain/18/429249/176953.terrain b/public/terrain/18/429249/176953.terrain new file mode 100644 index 000000000..60760ce77 Binary files /dev/null and b/public/terrain/18/429249/176953.terrain differ diff --git a/public/terrain/18/429249/176954.terrain b/public/terrain/18/429249/176954.terrain new file mode 100644 index 000000000..76ba8096a Binary files /dev/null and b/public/terrain/18/429249/176954.terrain differ diff --git a/public/terrain/18/429249/176955.terrain b/public/terrain/18/429249/176955.terrain new file mode 100644 index 000000000..f27a32504 Binary files /dev/null and b/public/terrain/18/429249/176955.terrain differ diff --git a/public/terrain/18/429249/176956.terrain b/public/terrain/18/429249/176956.terrain new file mode 100644 index 000000000..1882fac29 Binary files /dev/null and b/public/terrain/18/429249/176956.terrain differ diff --git a/public/terrain/18/429249/176957.terrain b/public/terrain/18/429249/176957.terrain new file mode 100644 index 000000000..2150d33f7 Binary files /dev/null and b/public/terrain/18/429249/176957.terrain differ diff --git a/public/terrain/18/429249/176958.terrain b/public/terrain/18/429249/176958.terrain new file mode 100644 index 000000000..c668785e4 Binary files /dev/null and b/public/terrain/18/429249/176958.terrain differ diff --git a/public/terrain/18/429249/176959.terrain b/public/terrain/18/429249/176959.terrain new file mode 100644 index 000000000..5a61cd6fd Binary files /dev/null and b/public/terrain/18/429249/176959.terrain differ diff --git a/public/terrain/18/429249/176960.terrain b/public/terrain/18/429249/176960.terrain new file mode 100644 index 000000000..7cf353c97 Binary files /dev/null and b/public/terrain/18/429249/176960.terrain differ diff --git a/public/terrain/18/429249/176961.terrain b/public/terrain/18/429249/176961.terrain new file mode 100644 index 000000000..707654965 Binary files /dev/null and b/public/terrain/18/429249/176961.terrain differ diff --git a/public/terrain/18/429249/176962.terrain b/public/terrain/18/429249/176962.terrain new file mode 100644 index 000000000..3da99894d Binary files /dev/null and b/public/terrain/18/429249/176962.terrain differ diff --git a/public/terrain/18/429249/176963.terrain b/public/terrain/18/429249/176963.terrain new file mode 100644 index 000000000..83eca678b Binary files /dev/null and b/public/terrain/18/429249/176963.terrain differ diff --git a/public/terrain/18/429249/176964.terrain b/public/terrain/18/429249/176964.terrain new file mode 100644 index 000000000..3b6d53003 Binary files /dev/null and b/public/terrain/18/429249/176964.terrain differ diff --git a/public/terrain/18/429249/176965.terrain b/public/terrain/18/429249/176965.terrain new file mode 100644 index 000000000..029e85096 Binary files /dev/null and b/public/terrain/18/429249/176965.terrain differ diff --git a/public/terrain/18/429249/176966.terrain b/public/terrain/18/429249/176966.terrain new file mode 100644 index 000000000..c725f3b9f Binary files /dev/null and b/public/terrain/18/429249/176966.terrain differ diff --git a/public/terrain/18/429249/176967.terrain b/public/terrain/18/429249/176967.terrain new file mode 100644 index 000000000..7df4e6ac5 Binary files /dev/null and b/public/terrain/18/429249/176967.terrain differ diff --git a/public/terrain/18/429249/176968.terrain b/public/terrain/18/429249/176968.terrain new file mode 100644 index 000000000..cd3c00a0e Binary files /dev/null and b/public/terrain/18/429249/176968.terrain differ diff --git a/public/terrain/18/429249/176969.terrain b/public/terrain/18/429249/176969.terrain new file mode 100644 index 000000000..42f92cb5a Binary files /dev/null and b/public/terrain/18/429249/176969.terrain differ diff --git a/public/terrain/18/429249/176970.terrain b/public/terrain/18/429249/176970.terrain new file mode 100644 index 000000000..6fb4398c9 Binary files /dev/null and b/public/terrain/18/429249/176970.terrain differ diff --git a/public/terrain/18/429249/176971.terrain b/public/terrain/18/429249/176971.terrain new file mode 100644 index 000000000..b35db2c90 Binary files /dev/null and b/public/terrain/18/429249/176971.terrain differ diff --git a/public/terrain/18/429249/176972.terrain b/public/terrain/18/429249/176972.terrain new file mode 100644 index 000000000..f828adddd Binary files /dev/null and b/public/terrain/18/429249/176972.terrain differ diff --git a/public/terrain/18/429249/176973.terrain b/public/terrain/18/429249/176973.terrain new file mode 100644 index 000000000..3061da298 Binary files /dev/null and b/public/terrain/18/429249/176973.terrain differ diff --git a/public/terrain/18/429249/176974.terrain b/public/terrain/18/429249/176974.terrain new file mode 100644 index 000000000..ec0ffb3db Binary files /dev/null and b/public/terrain/18/429249/176974.terrain differ diff --git a/public/terrain/18/429249/176975.terrain b/public/terrain/18/429249/176975.terrain new file mode 100644 index 000000000..6900c972c Binary files /dev/null and b/public/terrain/18/429249/176975.terrain differ diff --git a/public/terrain/18/429249/176976.terrain b/public/terrain/18/429249/176976.terrain new file mode 100644 index 000000000..c5461e938 Binary files /dev/null and b/public/terrain/18/429249/176976.terrain differ diff --git a/public/terrain/18/429249/176977.terrain b/public/terrain/18/429249/176977.terrain new file mode 100644 index 000000000..66130f7e0 Binary files /dev/null and b/public/terrain/18/429249/176977.terrain differ diff --git a/public/terrain/18/429249/176978.terrain b/public/terrain/18/429249/176978.terrain new file mode 100644 index 000000000..3538280de Binary files /dev/null and b/public/terrain/18/429249/176978.terrain differ diff --git a/public/terrain/18/429249/176979.terrain b/public/terrain/18/429249/176979.terrain new file mode 100644 index 000000000..6540fc206 Binary files /dev/null and b/public/terrain/18/429249/176979.terrain differ diff --git a/public/terrain/18/429249/176980.terrain b/public/terrain/18/429249/176980.terrain new file mode 100644 index 000000000..5269e43ba Binary files /dev/null and b/public/terrain/18/429249/176980.terrain differ diff --git a/public/terrain/18/429249/176981.terrain b/public/terrain/18/429249/176981.terrain new file mode 100644 index 000000000..548ed5bc9 Binary files /dev/null and b/public/terrain/18/429249/176981.terrain differ diff --git a/public/terrain/18/429249/176982.terrain b/public/terrain/18/429249/176982.terrain new file mode 100644 index 000000000..9e5f48916 Binary files /dev/null and b/public/terrain/18/429249/176982.terrain differ diff --git a/public/terrain/18/429249/176983.terrain b/public/terrain/18/429249/176983.terrain new file mode 100644 index 000000000..d30348376 Binary files /dev/null and b/public/terrain/18/429249/176983.terrain differ diff --git a/public/terrain/18/429249/176984.terrain b/public/terrain/18/429249/176984.terrain new file mode 100644 index 000000000..774b2b695 Binary files /dev/null and b/public/terrain/18/429249/176984.terrain differ diff --git a/public/terrain/18/429249/176985.terrain b/public/terrain/18/429249/176985.terrain new file mode 100644 index 000000000..c88244487 Binary files /dev/null and b/public/terrain/18/429249/176985.terrain differ diff --git a/public/terrain/18/429249/176986.terrain b/public/terrain/18/429249/176986.terrain new file mode 100644 index 000000000..ef40ebac3 Binary files /dev/null and b/public/terrain/18/429249/176986.terrain differ diff --git a/public/terrain/18/429249/176987.terrain b/public/terrain/18/429249/176987.terrain new file mode 100644 index 000000000..211512754 Binary files /dev/null and b/public/terrain/18/429249/176987.terrain differ diff --git a/public/terrain/18/429249/176988.terrain b/public/terrain/18/429249/176988.terrain new file mode 100644 index 000000000..57bc40f9d Binary files /dev/null and b/public/terrain/18/429249/176988.terrain differ diff --git a/public/terrain/18/429249/176989.terrain b/public/terrain/18/429249/176989.terrain new file mode 100644 index 000000000..ff3b4803a Binary files /dev/null and b/public/terrain/18/429249/176989.terrain differ diff --git a/public/terrain/18/429249/176990.terrain b/public/terrain/18/429249/176990.terrain new file mode 100644 index 000000000..a413a278c Binary files /dev/null and b/public/terrain/18/429249/176990.terrain differ diff --git a/public/terrain/18/429249/176991.terrain b/public/terrain/18/429249/176991.terrain new file mode 100644 index 000000000..953713341 Binary files /dev/null and b/public/terrain/18/429249/176991.terrain differ diff --git a/public/terrain/18/429249/176992.terrain b/public/terrain/18/429249/176992.terrain new file mode 100644 index 000000000..a0a6d8714 Binary files /dev/null and b/public/terrain/18/429249/176992.terrain differ diff --git a/public/terrain/18/429249/176993.terrain b/public/terrain/18/429249/176993.terrain new file mode 100644 index 000000000..7893c39c2 Binary files /dev/null and b/public/terrain/18/429249/176993.terrain differ diff --git a/public/terrain/18/429249/176994.terrain b/public/terrain/18/429249/176994.terrain new file mode 100644 index 000000000..60cfaa1f9 Binary files /dev/null and b/public/terrain/18/429249/176994.terrain differ diff --git a/public/terrain/18/429249/176995.terrain b/public/terrain/18/429249/176995.terrain new file mode 100644 index 000000000..60bbf30e1 Binary files /dev/null and b/public/terrain/18/429249/176995.terrain differ diff --git a/public/terrain/18/429249/176996.terrain b/public/terrain/18/429249/176996.terrain new file mode 100644 index 000000000..6155b5bdd Binary files /dev/null and b/public/terrain/18/429249/176996.terrain differ diff --git a/public/terrain/18/429249/176997.terrain b/public/terrain/18/429249/176997.terrain new file mode 100644 index 000000000..332223038 Binary files /dev/null and b/public/terrain/18/429249/176997.terrain differ diff --git a/public/terrain/18/429249/176998.terrain b/public/terrain/18/429249/176998.terrain new file mode 100644 index 000000000..dde0e9ad2 Binary files /dev/null and b/public/terrain/18/429249/176998.terrain differ diff --git a/public/terrain/18/429249/176999.terrain b/public/terrain/18/429249/176999.terrain new file mode 100644 index 000000000..73afa30c4 Binary files /dev/null and b/public/terrain/18/429249/176999.terrain differ diff --git a/public/terrain/18/429249/177000.terrain b/public/terrain/18/429249/177000.terrain new file mode 100644 index 000000000..5589596e4 Binary files /dev/null and b/public/terrain/18/429249/177000.terrain differ diff --git a/public/terrain/18/429249/177001.terrain b/public/terrain/18/429249/177001.terrain new file mode 100644 index 000000000..b39ef2fdf Binary files /dev/null and b/public/terrain/18/429249/177001.terrain differ diff --git a/public/terrain/18/429249/177002.terrain b/public/terrain/18/429249/177002.terrain new file mode 100644 index 000000000..01994fecb Binary files /dev/null and b/public/terrain/18/429249/177002.terrain differ diff --git a/public/terrain/18/429249/177003.terrain b/public/terrain/18/429249/177003.terrain new file mode 100644 index 000000000..e9c1e1d1d Binary files /dev/null and b/public/terrain/18/429249/177003.terrain differ diff --git a/public/terrain/18/429249/177004.terrain b/public/terrain/18/429249/177004.terrain new file mode 100644 index 000000000..ea3ca2fae Binary files /dev/null and b/public/terrain/18/429249/177004.terrain differ diff --git a/public/terrain/18/429249/177005.terrain b/public/terrain/18/429249/177005.terrain new file mode 100644 index 000000000..dce95c1ee Binary files /dev/null and b/public/terrain/18/429249/177005.terrain differ diff --git a/public/terrain/18/429249/177006.terrain b/public/terrain/18/429249/177006.terrain new file mode 100644 index 000000000..43b50f0ee Binary files /dev/null and b/public/terrain/18/429249/177006.terrain differ diff --git a/public/terrain/18/429249/177007.terrain b/public/terrain/18/429249/177007.terrain new file mode 100644 index 000000000..0a84a6e0e Binary files /dev/null and b/public/terrain/18/429249/177007.terrain differ diff --git a/public/terrain/18/429249/177008.terrain b/public/terrain/18/429249/177008.terrain new file mode 100644 index 000000000..25456ea34 Binary files /dev/null and b/public/terrain/18/429249/177008.terrain differ diff --git a/public/terrain/18/429249/177009.terrain b/public/terrain/18/429249/177009.terrain new file mode 100644 index 000000000..05946bf30 Binary files /dev/null and b/public/terrain/18/429249/177009.terrain differ diff --git a/public/terrain/18/429249/177010.terrain b/public/terrain/18/429249/177010.terrain new file mode 100644 index 000000000..f7291f6a3 Binary files /dev/null and b/public/terrain/18/429249/177010.terrain differ diff --git a/public/terrain/18/429249/177011.terrain b/public/terrain/18/429249/177011.terrain new file mode 100644 index 000000000..9a504a7b9 Binary files /dev/null and b/public/terrain/18/429249/177011.terrain differ diff --git a/public/terrain/18/429249/177012.terrain b/public/terrain/18/429249/177012.terrain new file mode 100644 index 000000000..1e96b1f15 Binary files /dev/null and b/public/terrain/18/429249/177012.terrain differ diff --git a/public/terrain/18/429249/177013.terrain b/public/terrain/18/429249/177013.terrain new file mode 100644 index 000000000..d37b9256d Binary files /dev/null and b/public/terrain/18/429249/177013.terrain differ diff --git a/public/terrain/18/429249/177014.terrain b/public/terrain/18/429249/177014.terrain new file mode 100644 index 000000000..015d8c886 Binary files /dev/null and b/public/terrain/18/429249/177014.terrain differ diff --git a/public/terrain/18/429249/177015.terrain b/public/terrain/18/429249/177015.terrain new file mode 100644 index 000000000..6840c09a0 Binary files /dev/null and b/public/terrain/18/429249/177015.terrain differ diff --git a/public/terrain/18/429249/177016.terrain b/public/terrain/18/429249/177016.terrain new file mode 100644 index 000000000..31f9b5080 Binary files /dev/null and b/public/terrain/18/429249/177016.terrain differ diff --git a/public/terrain/18/429249/177017.terrain b/public/terrain/18/429249/177017.terrain new file mode 100644 index 000000000..1da1ff000 Binary files /dev/null and b/public/terrain/18/429249/177017.terrain differ diff --git a/public/terrain/18/429249/177018.terrain b/public/terrain/18/429249/177018.terrain new file mode 100644 index 000000000..02df163e3 Binary files /dev/null and b/public/terrain/18/429249/177018.terrain differ diff --git a/public/terrain/18/429249/177019.terrain b/public/terrain/18/429249/177019.terrain new file mode 100644 index 000000000..8ce37035f Binary files /dev/null and b/public/terrain/18/429249/177019.terrain differ diff --git a/public/terrain/18/429249/177020.terrain b/public/terrain/18/429249/177020.terrain new file mode 100644 index 000000000..0d8fc7833 Binary files /dev/null and b/public/terrain/18/429249/177020.terrain differ diff --git a/public/terrain/18/429249/177021.terrain b/public/terrain/18/429249/177021.terrain new file mode 100644 index 000000000..7e06ce0a0 Binary files /dev/null and b/public/terrain/18/429249/177021.terrain differ diff --git a/public/terrain/18/429249/177022.terrain b/public/terrain/18/429249/177022.terrain new file mode 100644 index 000000000..3a3c54319 Binary files /dev/null and b/public/terrain/18/429249/177022.terrain differ diff --git a/public/terrain/18/429249/177023.terrain b/public/terrain/18/429249/177023.terrain new file mode 100644 index 000000000..8753b8178 Binary files /dev/null and b/public/terrain/18/429249/177023.terrain differ diff --git a/public/terrain/18/429249/177024.terrain b/public/terrain/18/429249/177024.terrain new file mode 100644 index 000000000..6112299f8 Binary files /dev/null and b/public/terrain/18/429249/177024.terrain differ diff --git a/public/terrain/18/429249/177025.terrain b/public/terrain/18/429249/177025.terrain new file mode 100644 index 000000000..9e7c662f7 Binary files /dev/null and b/public/terrain/18/429249/177025.terrain differ diff --git a/public/terrain/18/429249/177026.terrain b/public/terrain/18/429249/177026.terrain new file mode 100644 index 000000000..787e6b53b Binary files /dev/null and b/public/terrain/18/429249/177026.terrain differ diff --git a/public/terrain/18/429249/177027.terrain b/public/terrain/18/429249/177027.terrain new file mode 100644 index 000000000..9ceda291e Binary files /dev/null and b/public/terrain/18/429249/177027.terrain differ diff --git a/public/terrain/18/429249/177028.terrain b/public/terrain/18/429249/177028.terrain new file mode 100644 index 000000000..1c05e3f08 Binary files /dev/null and b/public/terrain/18/429249/177028.terrain differ diff --git a/public/terrain/18/429249/177029.terrain b/public/terrain/18/429249/177029.terrain new file mode 100644 index 000000000..890e505c4 Binary files /dev/null and b/public/terrain/18/429249/177029.terrain differ diff --git a/public/terrain/18/429250/176871.terrain b/public/terrain/18/429250/176871.terrain new file mode 100644 index 000000000..18a6a73a4 Binary files /dev/null and b/public/terrain/18/429250/176871.terrain differ diff --git a/public/terrain/18/429250/176872.terrain b/public/terrain/18/429250/176872.terrain new file mode 100644 index 000000000..e12be9ef3 Binary files /dev/null and b/public/terrain/18/429250/176872.terrain differ diff --git a/public/terrain/18/429250/176873.terrain b/public/terrain/18/429250/176873.terrain new file mode 100644 index 000000000..ceb6710a3 Binary files /dev/null and b/public/terrain/18/429250/176873.terrain differ diff --git a/public/terrain/18/429250/176874.terrain b/public/terrain/18/429250/176874.terrain new file mode 100644 index 000000000..3da1607bf Binary files /dev/null and b/public/terrain/18/429250/176874.terrain differ diff --git a/public/terrain/18/429250/176875.terrain b/public/terrain/18/429250/176875.terrain new file mode 100644 index 000000000..63f4ffbdd Binary files /dev/null and b/public/terrain/18/429250/176875.terrain differ diff --git a/public/terrain/18/429250/176876.terrain b/public/terrain/18/429250/176876.terrain new file mode 100644 index 000000000..9b1d82716 Binary files /dev/null and b/public/terrain/18/429250/176876.terrain differ diff --git a/public/terrain/18/429250/176877.terrain b/public/terrain/18/429250/176877.terrain new file mode 100644 index 000000000..5ba0fcb20 Binary files /dev/null and b/public/terrain/18/429250/176877.terrain differ diff --git a/public/terrain/18/429250/176878.terrain b/public/terrain/18/429250/176878.terrain new file mode 100644 index 000000000..23ff3faaf Binary files /dev/null and b/public/terrain/18/429250/176878.terrain differ diff --git a/public/terrain/18/429250/176879.terrain b/public/terrain/18/429250/176879.terrain new file mode 100644 index 000000000..3e763a41b Binary files /dev/null and b/public/terrain/18/429250/176879.terrain differ diff --git a/public/terrain/18/429250/176880.terrain b/public/terrain/18/429250/176880.terrain new file mode 100644 index 000000000..95cb15f74 Binary files /dev/null and b/public/terrain/18/429250/176880.terrain differ diff --git a/public/terrain/18/429250/176881.terrain b/public/terrain/18/429250/176881.terrain new file mode 100644 index 000000000..2db5341b4 Binary files /dev/null and b/public/terrain/18/429250/176881.terrain differ diff --git a/public/terrain/18/429250/176882.terrain b/public/terrain/18/429250/176882.terrain new file mode 100644 index 000000000..38ff38b78 Binary files /dev/null and b/public/terrain/18/429250/176882.terrain differ diff --git a/public/terrain/18/429250/176883.terrain b/public/terrain/18/429250/176883.terrain new file mode 100644 index 000000000..d7e627f0b Binary files /dev/null and b/public/terrain/18/429250/176883.terrain differ diff --git a/public/terrain/18/429250/176884.terrain b/public/terrain/18/429250/176884.terrain new file mode 100644 index 000000000..8f01348af Binary files /dev/null and b/public/terrain/18/429250/176884.terrain differ diff --git a/public/terrain/18/429250/176885.terrain b/public/terrain/18/429250/176885.terrain new file mode 100644 index 000000000..8be0f65e5 Binary files /dev/null and b/public/terrain/18/429250/176885.terrain differ diff --git a/public/terrain/18/429250/176886.terrain b/public/terrain/18/429250/176886.terrain new file mode 100644 index 000000000..1c2658a23 Binary files /dev/null and b/public/terrain/18/429250/176886.terrain differ diff --git a/public/terrain/18/429250/176887.terrain b/public/terrain/18/429250/176887.terrain new file mode 100644 index 000000000..e5f95735f Binary files /dev/null and b/public/terrain/18/429250/176887.terrain differ diff --git a/public/terrain/18/429250/176888.terrain b/public/terrain/18/429250/176888.terrain new file mode 100644 index 000000000..31e197f4a Binary files /dev/null and b/public/terrain/18/429250/176888.terrain differ diff --git a/public/terrain/18/429250/176889.terrain b/public/terrain/18/429250/176889.terrain new file mode 100644 index 000000000..f086a775d Binary files /dev/null and b/public/terrain/18/429250/176889.terrain differ diff --git a/public/terrain/18/429250/176890.terrain b/public/terrain/18/429250/176890.terrain new file mode 100644 index 000000000..f32e02dac Binary files /dev/null and b/public/terrain/18/429250/176890.terrain differ diff --git a/public/terrain/18/429250/176891.terrain b/public/terrain/18/429250/176891.terrain new file mode 100644 index 000000000..4a52b8712 Binary files /dev/null and b/public/terrain/18/429250/176891.terrain differ diff --git a/public/terrain/18/429250/176892.terrain b/public/terrain/18/429250/176892.terrain new file mode 100644 index 000000000..641d2f914 Binary files /dev/null and b/public/terrain/18/429250/176892.terrain differ diff --git a/public/terrain/18/429250/176893.terrain b/public/terrain/18/429250/176893.terrain new file mode 100644 index 000000000..74d69d157 Binary files /dev/null and b/public/terrain/18/429250/176893.terrain differ diff --git a/public/terrain/18/429250/176894.terrain b/public/terrain/18/429250/176894.terrain new file mode 100644 index 000000000..a61b99c8a Binary files /dev/null and b/public/terrain/18/429250/176894.terrain differ diff --git a/public/terrain/18/429250/176895.terrain b/public/terrain/18/429250/176895.terrain new file mode 100644 index 000000000..a363df5df Binary files /dev/null and b/public/terrain/18/429250/176895.terrain differ diff --git a/public/terrain/18/429250/176896.terrain b/public/terrain/18/429250/176896.terrain new file mode 100644 index 000000000..fc5921463 Binary files /dev/null and b/public/terrain/18/429250/176896.terrain differ diff --git a/public/terrain/18/429250/176897.terrain b/public/terrain/18/429250/176897.terrain new file mode 100644 index 000000000..419daaeb4 Binary files /dev/null and b/public/terrain/18/429250/176897.terrain differ diff --git a/public/terrain/18/429250/176898.terrain b/public/terrain/18/429250/176898.terrain new file mode 100644 index 000000000..f1a839c8c Binary files /dev/null and b/public/terrain/18/429250/176898.terrain differ diff --git a/public/terrain/18/429250/176899.terrain b/public/terrain/18/429250/176899.terrain new file mode 100644 index 000000000..736b576b9 Binary files /dev/null and b/public/terrain/18/429250/176899.terrain differ diff --git a/public/terrain/18/429250/176900.terrain b/public/terrain/18/429250/176900.terrain new file mode 100644 index 000000000..8d1eb7c4e Binary files /dev/null and b/public/terrain/18/429250/176900.terrain differ diff --git a/public/terrain/18/429250/176901.terrain b/public/terrain/18/429250/176901.terrain new file mode 100644 index 000000000..ac33e33aa Binary files /dev/null and b/public/terrain/18/429250/176901.terrain differ diff --git a/public/terrain/18/429250/176902.terrain b/public/terrain/18/429250/176902.terrain new file mode 100644 index 000000000..73f8b05d4 Binary files /dev/null and b/public/terrain/18/429250/176902.terrain differ diff --git a/public/terrain/18/429250/176903.terrain b/public/terrain/18/429250/176903.terrain new file mode 100644 index 000000000..902434c90 Binary files /dev/null and b/public/terrain/18/429250/176903.terrain differ diff --git a/public/terrain/18/429250/176904.terrain b/public/terrain/18/429250/176904.terrain new file mode 100644 index 000000000..1a8577ec7 Binary files /dev/null and b/public/terrain/18/429250/176904.terrain differ diff --git a/public/terrain/18/429250/176905.terrain b/public/terrain/18/429250/176905.terrain new file mode 100644 index 000000000..eaf470244 Binary files /dev/null and b/public/terrain/18/429250/176905.terrain differ diff --git a/public/terrain/18/429250/176906.terrain b/public/terrain/18/429250/176906.terrain new file mode 100644 index 000000000..07fd5a6e5 Binary files /dev/null and b/public/terrain/18/429250/176906.terrain differ diff --git a/public/terrain/18/429250/176907.terrain b/public/terrain/18/429250/176907.terrain new file mode 100644 index 000000000..dfe16b592 Binary files /dev/null and b/public/terrain/18/429250/176907.terrain differ diff --git a/public/terrain/18/429250/176908.terrain b/public/terrain/18/429250/176908.terrain new file mode 100644 index 000000000..9d378a418 Binary files /dev/null and b/public/terrain/18/429250/176908.terrain differ diff --git a/public/terrain/18/429250/176909.terrain b/public/terrain/18/429250/176909.terrain new file mode 100644 index 000000000..7cf97d7a3 Binary files /dev/null and b/public/terrain/18/429250/176909.terrain differ diff --git a/public/terrain/18/429250/176910.terrain b/public/terrain/18/429250/176910.terrain new file mode 100644 index 000000000..bdc32cfbf Binary files /dev/null and b/public/terrain/18/429250/176910.terrain differ diff --git a/public/terrain/18/429250/176911.terrain b/public/terrain/18/429250/176911.terrain new file mode 100644 index 000000000..c426cc0c9 Binary files /dev/null and b/public/terrain/18/429250/176911.terrain differ diff --git a/public/terrain/18/429250/176912.terrain b/public/terrain/18/429250/176912.terrain new file mode 100644 index 000000000..ed5b65fe9 Binary files /dev/null and b/public/terrain/18/429250/176912.terrain differ diff --git a/public/terrain/18/429250/176913.terrain b/public/terrain/18/429250/176913.terrain new file mode 100644 index 000000000..7063fb02c Binary files /dev/null and b/public/terrain/18/429250/176913.terrain differ diff --git a/public/terrain/18/429250/176914.terrain b/public/terrain/18/429250/176914.terrain new file mode 100644 index 000000000..051e2d459 Binary files /dev/null and b/public/terrain/18/429250/176914.terrain differ diff --git a/public/terrain/18/429250/176915.terrain b/public/terrain/18/429250/176915.terrain new file mode 100644 index 000000000..71b837c7a Binary files /dev/null and b/public/terrain/18/429250/176915.terrain differ diff --git a/public/terrain/18/429250/176916.terrain b/public/terrain/18/429250/176916.terrain new file mode 100644 index 000000000..0d1461f96 Binary files /dev/null and b/public/terrain/18/429250/176916.terrain differ diff --git a/public/terrain/18/429250/176917.terrain b/public/terrain/18/429250/176917.terrain new file mode 100644 index 000000000..dbc005244 Binary files /dev/null and b/public/terrain/18/429250/176917.terrain differ diff --git a/public/terrain/18/429250/176918.terrain b/public/terrain/18/429250/176918.terrain new file mode 100644 index 000000000..d141b12cd Binary files /dev/null and b/public/terrain/18/429250/176918.terrain differ diff --git a/public/terrain/18/429250/176919.terrain b/public/terrain/18/429250/176919.terrain new file mode 100644 index 000000000..d496f7039 Binary files /dev/null and b/public/terrain/18/429250/176919.terrain differ diff --git a/public/terrain/18/429250/176920.terrain b/public/terrain/18/429250/176920.terrain new file mode 100644 index 000000000..e2f1b5d7a Binary files /dev/null and b/public/terrain/18/429250/176920.terrain differ diff --git a/public/terrain/18/429250/176921.terrain b/public/terrain/18/429250/176921.terrain new file mode 100644 index 000000000..40545bd0b Binary files /dev/null and b/public/terrain/18/429250/176921.terrain differ diff --git a/public/terrain/18/429250/176922.terrain b/public/terrain/18/429250/176922.terrain new file mode 100644 index 000000000..03e87fe16 Binary files /dev/null and b/public/terrain/18/429250/176922.terrain differ diff --git a/public/terrain/18/429250/176923.terrain b/public/terrain/18/429250/176923.terrain new file mode 100644 index 000000000..7ab689821 Binary files /dev/null and b/public/terrain/18/429250/176923.terrain differ diff --git a/public/terrain/18/429250/176924.terrain b/public/terrain/18/429250/176924.terrain new file mode 100644 index 000000000..32c60bfd4 Binary files /dev/null and b/public/terrain/18/429250/176924.terrain differ diff --git a/public/terrain/18/429250/176925.terrain b/public/terrain/18/429250/176925.terrain new file mode 100644 index 000000000..9edfce632 Binary files /dev/null and b/public/terrain/18/429250/176925.terrain differ diff --git a/public/terrain/18/429250/176926.terrain b/public/terrain/18/429250/176926.terrain new file mode 100644 index 000000000..9e300b6a3 Binary files /dev/null and b/public/terrain/18/429250/176926.terrain differ diff --git a/public/terrain/18/429250/176927.terrain b/public/terrain/18/429250/176927.terrain new file mode 100644 index 000000000..97593d605 Binary files /dev/null and b/public/terrain/18/429250/176927.terrain differ diff --git a/public/terrain/18/429250/176928.terrain b/public/terrain/18/429250/176928.terrain new file mode 100644 index 000000000..a291e964a Binary files /dev/null and b/public/terrain/18/429250/176928.terrain differ diff --git a/public/terrain/18/429250/176929.terrain b/public/terrain/18/429250/176929.terrain new file mode 100644 index 000000000..3065e359c Binary files /dev/null and b/public/terrain/18/429250/176929.terrain differ diff --git a/public/terrain/18/429250/176930.terrain b/public/terrain/18/429250/176930.terrain new file mode 100644 index 000000000..18164af13 Binary files /dev/null and b/public/terrain/18/429250/176930.terrain differ diff --git a/public/terrain/18/429250/176931.terrain b/public/terrain/18/429250/176931.terrain new file mode 100644 index 000000000..1c3452c5f Binary files /dev/null and b/public/terrain/18/429250/176931.terrain differ diff --git a/public/terrain/18/429250/176932.terrain b/public/terrain/18/429250/176932.terrain new file mode 100644 index 000000000..ce993f1e0 Binary files /dev/null and b/public/terrain/18/429250/176932.terrain differ diff --git a/public/terrain/18/429250/176933.terrain b/public/terrain/18/429250/176933.terrain new file mode 100644 index 000000000..1efbc3ff7 Binary files /dev/null and b/public/terrain/18/429250/176933.terrain differ diff --git a/public/terrain/18/429250/176934.terrain b/public/terrain/18/429250/176934.terrain new file mode 100644 index 000000000..79cef99d0 Binary files /dev/null and b/public/terrain/18/429250/176934.terrain differ diff --git a/public/terrain/18/429250/176935.terrain b/public/terrain/18/429250/176935.terrain new file mode 100644 index 000000000..b875d33b3 Binary files /dev/null and b/public/terrain/18/429250/176935.terrain differ diff --git a/public/terrain/18/429250/176936.terrain b/public/terrain/18/429250/176936.terrain new file mode 100644 index 000000000..0c03ec07b Binary files /dev/null and b/public/terrain/18/429250/176936.terrain differ diff --git a/public/terrain/18/429250/176937.terrain b/public/terrain/18/429250/176937.terrain new file mode 100644 index 000000000..02fc4c292 Binary files /dev/null and b/public/terrain/18/429250/176937.terrain differ diff --git a/public/terrain/18/429250/176938.terrain b/public/terrain/18/429250/176938.terrain new file mode 100644 index 000000000..c9933546d Binary files /dev/null and b/public/terrain/18/429250/176938.terrain differ diff --git a/public/terrain/18/429250/176939.terrain b/public/terrain/18/429250/176939.terrain new file mode 100644 index 000000000..e61ee371b Binary files /dev/null and b/public/terrain/18/429250/176939.terrain differ diff --git a/public/terrain/18/429250/176940.terrain b/public/terrain/18/429250/176940.terrain new file mode 100644 index 000000000..00476f9e7 Binary files /dev/null and b/public/terrain/18/429250/176940.terrain differ diff --git a/public/terrain/18/429250/176941.terrain b/public/terrain/18/429250/176941.terrain new file mode 100644 index 000000000..0a7978d33 Binary files /dev/null and b/public/terrain/18/429250/176941.terrain differ diff --git a/public/terrain/18/429250/176942.terrain b/public/terrain/18/429250/176942.terrain new file mode 100644 index 000000000..1f8746f42 Binary files /dev/null and b/public/terrain/18/429250/176942.terrain differ diff --git a/public/terrain/18/429250/176943.terrain b/public/terrain/18/429250/176943.terrain new file mode 100644 index 000000000..13d859ebe Binary files /dev/null and b/public/terrain/18/429250/176943.terrain differ diff --git a/public/terrain/18/429250/176944.terrain b/public/terrain/18/429250/176944.terrain new file mode 100644 index 000000000..2f817c9dd Binary files /dev/null and b/public/terrain/18/429250/176944.terrain differ diff --git a/public/terrain/18/429250/176945.terrain b/public/terrain/18/429250/176945.terrain new file mode 100644 index 000000000..974c2598d Binary files /dev/null and b/public/terrain/18/429250/176945.terrain differ diff --git a/public/terrain/18/429250/176946.terrain b/public/terrain/18/429250/176946.terrain new file mode 100644 index 000000000..c9abc0b51 Binary files /dev/null and b/public/terrain/18/429250/176946.terrain differ diff --git a/public/terrain/18/429250/176947.terrain b/public/terrain/18/429250/176947.terrain new file mode 100644 index 000000000..e603ba89a Binary files /dev/null and b/public/terrain/18/429250/176947.terrain differ diff --git a/public/terrain/18/429250/176948.terrain b/public/terrain/18/429250/176948.terrain new file mode 100644 index 000000000..fbe687c46 Binary files /dev/null and b/public/terrain/18/429250/176948.terrain differ diff --git a/public/terrain/18/429250/176949.terrain b/public/terrain/18/429250/176949.terrain new file mode 100644 index 000000000..6dafda3de Binary files /dev/null and b/public/terrain/18/429250/176949.terrain differ diff --git a/public/terrain/18/429250/176950.terrain b/public/terrain/18/429250/176950.terrain new file mode 100644 index 000000000..dfc2668b6 Binary files /dev/null and b/public/terrain/18/429250/176950.terrain differ diff --git a/public/terrain/18/429250/176951.terrain b/public/terrain/18/429250/176951.terrain new file mode 100644 index 000000000..4eb88d360 Binary files /dev/null and b/public/terrain/18/429250/176951.terrain differ diff --git a/public/terrain/18/429250/176952.terrain b/public/terrain/18/429250/176952.terrain new file mode 100644 index 000000000..54c70b425 Binary files /dev/null and b/public/terrain/18/429250/176952.terrain differ diff --git a/public/terrain/18/429250/176953.terrain b/public/terrain/18/429250/176953.terrain new file mode 100644 index 000000000..96651b52d Binary files /dev/null and b/public/terrain/18/429250/176953.terrain differ diff --git a/public/terrain/18/429250/176954.terrain b/public/terrain/18/429250/176954.terrain new file mode 100644 index 000000000..17148f952 Binary files /dev/null and b/public/terrain/18/429250/176954.terrain differ diff --git a/public/terrain/18/429250/176955.terrain b/public/terrain/18/429250/176955.terrain new file mode 100644 index 000000000..f8d0a4582 Binary files /dev/null and b/public/terrain/18/429250/176955.terrain differ diff --git a/public/terrain/18/429250/176956.terrain b/public/terrain/18/429250/176956.terrain new file mode 100644 index 000000000..4e249afcc Binary files /dev/null and b/public/terrain/18/429250/176956.terrain differ diff --git a/public/terrain/18/429250/176957.terrain b/public/terrain/18/429250/176957.terrain new file mode 100644 index 000000000..ce26cf59f Binary files /dev/null and b/public/terrain/18/429250/176957.terrain differ diff --git a/public/terrain/18/429250/176958.terrain b/public/terrain/18/429250/176958.terrain new file mode 100644 index 000000000..d9e3b2a97 Binary files /dev/null and b/public/terrain/18/429250/176958.terrain differ diff --git a/public/terrain/18/429250/176959.terrain b/public/terrain/18/429250/176959.terrain new file mode 100644 index 000000000..e65a29dbf Binary files /dev/null and b/public/terrain/18/429250/176959.terrain differ diff --git a/public/terrain/18/429250/176960.terrain b/public/terrain/18/429250/176960.terrain new file mode 100644 index 000000000..b96e8f365 Binary files /dev/null and b/public/terrain/18/429250/176960.terrain differ diff --git a/public/terrain/18/429250/176961.terrain b/public/terrain/18/429250/176961.terrain new file mode 100644 index 000000000..ceb4d365f Binary files /dev/null and b/public/terrain/18/429250/176961.terrain differ diff --git a/public/terrain/18/429250/176962.terrain b/public/terrain/18/429250/176962.terrain new file mode 100644 index 000000000..089abfc45 Binary files /dev/null and b/public/terrain/18/429250/176962.terrain differ diff --git a/public/terrain/18/429250/176963.terrain b/public/terrain/18/429250/176963.terrain new file mode 100644 index 000000000..e056e87a2 Binary files /dev/null and b/public/terrain/18/429250/176963.terrain differ diff --git a/public/terrain/18/429250/176964.terrain b/public/terrain/18/429250/176964.terrain new file mode 100644 index 000000000..b6c3bfb94 Binary files /dev/null and b/public/terrain/18/429250/176964.terrain differ diff --git a/public/terrain/18/429250/176965.terrain b/public/terrain/18/429250/176965.terrain new file mode 100644 index 000000000..c95ab1a1c Binary files /dev/null and b/public/terrain/18/429250/176965.terrain differ diff --git a/public/terrain/18/429250/176966.terrain b/public/terrain/18/429250/176966.terrain new file mode 100644 index 000000000..7228a7310 Binary files /dev/null and b/public/terrain/18/429250/176966.terrain differ diff --git a/public/terrain/18/429250/176967.terrain b/public/terrain/18/429250/176967.terrain new file mode 100644 index 000000000..5a1deee21 Binary files /dev/null and b/public/terrain/18/429250/176967.terrain differ diff --git a/public/terrain/18/429250/176968.terrain b/public/terrain/18/429250/176968.terrain new file mode 100644 index 000000000..e884455d3 Binary files /dev/null and b/public/terrain/18/429250/176968.terrain differ diff --git a/public/terrain/18/429250/176969.terrain b/public/terrain/18/429250/176969.terrain new file mode 100644 index 000000000..e4fd0ba58 Binary files /dev/null and b/public/terrain/18/429250/176969.terrain differ diff --git a/public/terrain/18/429250/176970.terrain b/public/terrain/18/429250/176970.terrain new file mode 100644 index 000000000..b6a75a6e2 Binary files /dev/null and b/public/terrain/18/429250/176970.terrain differ diff --git a/public/terrain/18/429250/176971.terrain b/public/terrain/18/429250/176971.terrain new file mode 100644 index 000000000..b9b1a3a24 Binary files /dev/null and b/public/terrain/18/429250/176971.terrain differ diff --git a/public/terrain/18/429250/176972.terrain b/public/terrain/18/429250/176972.terrain new file mode 100644 index 000000000..2e5f14e55 Binary files /dev/null and b/public/terrain/18/429250/176972.terrain differ diff --git a/public/terrain/18/429250/176973.terrain b/public/terrain/18/429250/176973.terrain new file mode 100644 index 000000000..074da4036 Binary files /dev/null and b/public/terrain/18/429250/176973.terrain differ diff --git a/public/terrain/18/429250/176974.terrain b/public/terrain/18/429250/176974.terrain new file mode 100644 index 000000000..b539a2d7d Binary files /dev/null and b/public/terrain/18/429250/176974.terrain differ diff --git a/public/terrain/18/429250/176975.terrain b/public/terrain/18/429250/176975.terrain new file mode 100644 index 000000000..29f070de7 Binary files /dev/null and b/public/terrain/18/429250/176975.terrain differ diff --git a/public/terrain/18/429250/176976.terrain b/public/terrain/18/429250/176976.terrain new file mode 100644 index 000000000..8bc411e05 Binary files /dev/null and b/public/terrain/18/429250/176976.terrain differ diff --git a/public/terrain/18/429250/176977.terrain b/public/terrain/18/429250/176977.terrain new file mode 100644 index 000000000..3cae331e2 Binary files /dev/null and b/public/terrain/18/429250/176977.terrain differ diff --git a/public/terrain/18/429250/176978.terrain b/public/terrain/18/429250/176978.terrain new file mode 100644 index 000000000..407b20ec1 Binary files /dev/null and b/public/terrain/18/429250/176978.terrain differ diff --git a/public/terrain/18/429250/176979.terrain b/public/terrain/18/429250/176979.terrain new file mode 100644 index 000000000..3cff222b1 Binary files /dev/null and b/public/terrain/18/429250/176979.terrain differ diff --git a/public/terrain/18/429250/176980.terrain b/public/terrain/18/429250/176980.terrain new file mode 100644 index 000000000..dca3adef2 Binary files /dev/null and b/public/terrain/18/429250/176980.terrain differ diff --git a/public/terrain/18/429250/176981.terrain b/public/terrain/18/429250/176981.terrain new file mode 100644 index 000000000..61f57e60b Binary files /dev/null and b/public/terrain/18/429250/176981.terrain differ diff --git a/public/terrain/18/429250/176982.terrain b/public/terrain/18/429250/176982.terrain new file mode 100644 index 000000000..5233151b3 Binary files /dev/null and b/public/terrain/18/429250/176982.terrain differ diff --git a/public/terrain/18/429250/176983.terrain b/public/terrain/18/429250/176983.terrain new file mode 100644 index 000000000..815bb3f95 Binary files /dev/null and b/public/terrain/18/429250/176983.terrain differ diff --git a/public/terrain/18/429250/176984.terrain b/public/terrain/18/429250/176984.terrain new file mode 100644 index 000000000..349e37f52 Binary files /dev/null and b/public/terrain/18/429250/176984.terrain differ diff --git a/public/terrain/18/429250/176985.terrain b/public/terrain/18/429250/176985.terrain new file mode 100644 index 000000000..344b70000 Binary files /dev/null and b/public/terrain/18/429250/176985.terrain differ diff --git a/public/terrain/18/429250/176986.terrain b/public/terrain/18/429250/176986.terrain new file mode 100644 index 000000000..641aa65df Binary files /dev/null and b/public/terrain/18/429250/176986.terrain differ diff --git a/public/terrain/18/429250/176987.terrain b/public/terrain/18/429250/176987.terrain new file mode 100644 index 000000000..6622b3a62 Binary files /dev/null and b/public/terrain/18/429250/176987.terrain differ diff --git a/public/terrain/18/429250/176988.terrain b/public/terrain/18/429250/176988.terrain new file mode 100644 index 000000000..952bfb686 Binary files /dev/null and b/public/terrain/18/429250/176988.terrain differ diff --git a/public/terrain/18/429250/176989.terrain b/public/terrain/18/429250/176989.terrain new file mode 100644 index 000000000..b4d596120 Binary files /dev/null and b/public/terrain/18/429250/176989.terrain differ diff --git a/public/terrain/18/429250/176990.terrain b/public/terrain/18/429250/176990.terrain new file mode 100644 index 000000000..ddcdd3956 Binary files /dev/null and b/public/terrain/18/429250/176990.terrain differ diff --git a/public/terrain/18/429250/176991.terrain b/public/terrain/18/429250/176991.terrain new file mode 100644 index 000000000..4ee31cb6b Binary files /dev/null and b/public/terrain/18/429250/176991.terrain differ diff --git a/public/terrain/18/429250/176992.terrain b/public/terrain/18/429250/176992.terrain new file mode 100644 index 000000000..34ea7b153 Binary files /dev/null and b/public/terrain/18/429250/176992.terrain differ diff --git a/public/terrain/18/429250/176993.terrain b/public/terrain/18/429250/176993.terrain new file mode 100644 index 000000000..626591191 Binary files /dev/null and b/public/terrain/18/429250/176993.terrain differ diff --git a/public/terrain/18/429250/176994.terrain b/public/terrain/18/429250/176994.terrain new file mode 100644 index 000000000..233029e12 Binary files /dev/null and b/public/terrain/18/429250/176994.terrain differ diff --git a/public/terrain/18/429250/176995.terrain b/public/terrain/18/429250/176995.terrain new file mode 100644 index 000000000..ce179f1f7 Binary files /dev/null and b/public/terrain/18/429250/176995.terrain differ diff --git a/public/terrain/18/429250/176996.terrain b/public/terrain/18/429250/176996.terrain new file mode 100644 index 000000000..bb3edb78a Binary files /dev/null and b/public/terrain/18/429250/176996.terrain differ diff --git a/public/terrain/18/429250/176997.terrain b/public/terrain/18/429250/176997.terrain new file mode 100644 index 000000000..9f3305989 Binary files /dev/null and b/public/terrain/18/429250/176997.terrain differ diff --git a/public/terrain/18/429250/176998.terrain b/public/terrain/18/429250/176998.terrain new file mode 100644 index 000000000..d72d386b8 Binary files /dev/null and b/public/terrain/18/429250/176998.terrain differ diff --git a/public/terrain/18/429250/176999.terrain b/public/terrain/18/429250/176999.terrain new file mode 100644 index 000000000..1d363042b Binary files /dev/null and b/public/terrain/18/429250/176999.terrain differ diff --git a/public/terrain/18/429250/177000.terrain b/public/terrain/18/429250/177000.terrain new file mode 100644 index 000000000..ba931bc72 Binary files /dev/null and b/public/terrain/18/429250/177000.terrain differ diff --git a/public/terrain/18/429250/177001.terrain b/public/terrain/18/429250/177001.terrain new file mode 100644 index 000000000..baaf85fa4 Binary files /dev/null and b/public/terrain/18/429250/177001.terrain differ diff --git a/public/terrain/18/429250/177002.terrain b/public/terrain/18/429250/177002.terrain new file mode 100644 index 000000000..a8164c86d Binary files /dev/null and b/public/terrain/18/429250/177002.terrain differ diff --git a/public/terrain/18/429250/177003.terrain b/public/terrain/18/429250/177003.terrain new file mode 100644 index 000000000..68251353d Binary files /dev/null and b/public/terrain/18/429250/177003.terrain differ diff --git a/public/terrain/18/429250/177004.terrain b/public/terrain/18/429250/177004.terrain new file mode 100644 index 000000000..b52be4aa6 Binary files /dev/null and b/public/terrain/18/429250/177004.terrain differ diff --git a/public/terrain/18/429250/177005.terrain b/public/terrain/18/429250/177005.terrain new file mode 100644 index 000000000..666e3ec4c Binary files /dev/null and b/public/terrain/18/429250/177005.terrain differ diff --git a/public/terrain/18/429250/177006.terrain b/public/terrain/18/429250/177006.terrain new file mode 100644 index 000000000..00836e9a6 Binary files /dev/null and b/public/terrain/18/429250/177006.terrain differ diff --git a/public/terrain/18/429250/177007.terrain b/public/terrain/18/429250/177007.terrain new file mode 100644 index 000000000..12558adaa Binary files /dev/null and b/public/terrain/18/429250/177007.terrain differ diff --git a/public/terrain/18/429250/177008.terrain b/public/terrain/18/429250/177008.terrain new file mode 100644 index 000000000..37815708c Binary files /dev/null and b/public/terrain/18/429250/177008.terrain differ diff --git a/public/terrain/18/429250/177009.terrain b/public/terrain/18/429250/177009.terrain new file mode 100644 index 000000000..c15640727 Binary files /dev/null and b/public/terrain/18/429250/177009.terrain differ diff --git a/public/terrain/18/429250/177010.terrain b/public/terrain/18/429250/177010.terrain new file mode 100644 index 000000000..888e49df6 Binary files /dev/null and b/public/terrain/18/429250/177010.terrain differ diff --git a/public/terrain/18/429250/177011.terrain b/public/terrain/18/429250/177011.terrain new file mode 100644 index 000000000..026a8a5ba Binary files /dev/null and b/public/terrain/18/429250/177011.terrain differ diff --git a/public/terrain/18/429250/177012.terrain b/public/terrain/18/429250/177012.terrain new file mode 100644 index 000000000..5a3465857 Binary files /dev/null and b/public/terrain/18/429250/177012.terrain differ diff --git a/public/terrain/18/429250/177013.terrain b/public/terrain/18/429250/177013.terrain new file mode 100644 index 000000000..50b175b87 Binary files /dev/null and b/public/terrain/18/429250/177013.terrain differ diff --git a/public/terrain/18/429250/177014.terrain b/public/terrain/18/429250/177014.terrain new file mode 100644 index 000000000..85f199550 Binary files /dev/null and b/public/terrain/18/429250/177014.terrain differ diff --git a/public/terrain/18/429250/177015.terrain b/public/terrain/18/429250/177015.terrain new file mode 100644 index 000000000..592195495 Binary files /dev/null and b/public/terrain/18/429250/177015.terrain differ diff --git a/public/terrain/18/429250/177016.terrain b/public/terrain/18/429250/177016.terrain new file mode 100644 index 000000000..b21ab7cb4 Binary files /dev/null and b/public/terrain/18/429250/177016.terrain differ diff --git a/public/terrain/18/429250/177017.terrain b/public/terrain/18/429250/177017.terrain new file mode 100644 index 000000000..4a7fb754d Binary files /dev/null and b/public/terrain/18/429250/177017.terrain differ diff --git a/public/terrain/18/429250/177018.terrain b/public/terrain/18/429250/177018.terrain new file mode 100644 index 000000000..fc00d6456 Binary files /dev/null and b/public/terrain/18/429250/177018.terrain differ diff --git a/public/terrain/18/429250/177019.terrain b/public/terrain/18/429250/177019.terrain new file mode 100644 index 000000000..6633a4bf7 Binary files /dev/null and b/public/terrain/18/429250/177019.terrain differ diff --git a/public/terrain/18/429250/177020.terrain b/public/terrain/18/429250/177020.terrain new file mode 100644 index 000000000..c208a30e6 Binary files /dev/null and b/public/terrain/18/429250/177020.terrain differ diff --git a/public/terrain/18/429250/177021.terrain b/public/terrain/18/429250/177021.terrain new file mode 100644 index 000000000..8aeab1abc Binary files /dev/null and b/public/terrain/18/429250/177021.terrain differ diff --git a/public/terrain/18/429250/177022.terrain b/public/terrain/18/429250/177022.terrain new file mode 100644 index 000000000..5e3c4da80 Binary files /dev/null and b/public/terrain/18/429250/177022.terrain differ diff --git a/public/terrain/18/429250/177023.terrain b/public/terrain/18/429250/177023.terrain new file mode 100644 index 000000000..e482699fe Binary files /dev/null and b/public/terrain/18/429250/177023.terrain differ diff --git a/public/terrain/18/429250/177024.terrain b/public/terrain/18/429250/177024.terrain new file mode 100644 index 000000000..fe600adb4 Binary files /dev/null and b/public/terrain/18/429250/177024.terrain differ diff --git a/public/terrain/18/429250/177025.terrain b/public/terrain/18/429250/177025.terrain new file mode 100644 index 000000000..dd2574f90 Binary files /dev/null and b/public/terrain/18/429250/177025.terrain differ diff --git a/public/terrain/18/429250/177026.terrain b/public/terrain/18/429250/177026.terrain new file mode 100644 index 000000000..2fa458f66 Binary files /dev/null and b/public/terrain/18/429250/177026.terrain differ diff --git a/public/terrain/18/429250/177027.terrain b/public/terrain/18/429250/177027.terrain new file mode 100644 index 000000000..4a564464a Binary files /dev/null and b/public/terrain/18/429250/177027.terrain differ diff --git a/public/terrain/18/429250/177028.terrain b/public/terrain/18/429250/177028.terrain new file mode 100644 index 000000000..f308ec5f6 Binary files /dev/null and b/public/terrain/18/429250/177028.terrain differ diff --git a/public/terrain/18/429250/177029.terrain b/public/terrain/18/429250/177029.terrain new file mode 100644 index 000000000..1de88a7ca Binary files /dev/null and b/public/terrain/18/429250/177029.terrain differ diff --git a/public/terrain/18/429251/176871.terrain b/public/terrain/18/429251/176871.terrain new file mode 100644 index 000000000..8d660013b Binary files /dev/null and b/public/terrain/18/429251/176871.terrain differ diff --git a/public/terrain/18/429251/176872.terrain b/public/terrain/18/429251/176872.terrain new file mode 100644 index 000000000..a9e671eab Binary files /dev/null and b/public/terrain/18/429251/176872.terrain differ diff --git a/public/terrain/18/429251/176873.terrain b/public/terrain/18/429251/176873.terrain new file mode 100644 index 000000000..eee408635 Binary files /dev/null and b/public/terrain/18/429251/176873.terrain differ diff --git a/public/terrain/18/429251/176874.terrain b/public/terrain/18/429251/176874.terrain new file mode 100644 index 000000000..f894deb2d Binary files /dev/null and b/public/terrain/18/429251/176874.terrain differ diff --git a/public/terrain/18/429251/176875.terrain b/public/terrain/18/429251/176875.terrain new file mode 100644 index 000000000..03ccc9796 Binary files /dev/null and b/public/terrain/18/429251/176875.terrain differ diff --git a/public/terrain/18/429251/176876.terrain b/public/terrain/18/429251/176876.terrain new file mode 100644 index 000000000..6aea83ddf Binary files /dev/null and b/public/terrain/18/429251/176876.terrain differ diff --git a/public/terrain/18/429251/176877.terrain b/public/terrain/18/429251/176877.terrain new file mode 100644 index 000000000..c08a482d5 Binary files /dev/null and b/public/terrain/18/429251/176877.terrain differ diff --git a/public/terrain/18/429251/176878.terrain b/public/terrain/18/429251/176878.terrain new file mode 100644 index 000000000..cfcceb702 Binary files /dev/null and b/public/terrain/18/429251/176878.terrain differ diff --git a/public/terrain/18/429251/176879.terrain b/public/terrain/18/429251/176879.terrain new file mode 100644 index 000000000..a43182baf Binary files /dev/null and b/public/terrain/18/429251/176879.terrain differ diff --git a/public/terrain/18/429251/176880.terrain b/public/terrain/18/429251/176880.terrain new file mode 100644 index 000000000..406b16c2c Binary files /dev/null and b/public/terrain/18/429251/176880.terrain differ diff --git a/public/terrain/18/429251/176881.terrain b/public/terrain/18/429251/176881.terrain new file mode 100644 index 000000000..97b36d8ae Binary files /dev/null and b/public/terrain/18/429251/176881.terrain differ diff --git a/public/terrain/18/429251/176882.terrain b/public/terrain/18/429251/176882.terrain new file mode 100644 index 000000000..c6aafab81 Binary files /dev/null and b/public/terrain/18/429251/176882.terrain differ diff --git a/public/terrain/18/429251/176883.terrain b/public/terrain/18/429251/176883.terrain new file mode 100644 index 000000000..1aa4dbeef Binary files /dev/null and b/public/terrain/18/429251/176883.terrain differ diff --git a/public/terrain/18/429251/176884.terrain b/public/terrain/18/429251/176884.terrain new file mode 100644 index 000000000..a9c90c8ac Binary files /dev/null and b/public/terrain/18/429251/176884.terrain differ diff --git a/public/terrain/18/429251/176885.terrain b/public/terrain/18/429251/176885.terrain new file mode 100644 index 000000000..8ae0cebae Binary files /dev/null and b/public/terrain/18/429251/176885.terrain differ diff --git a/public/terrain/18/429251/176886.terrain b/public/terrain/18/429251/176886.terrain new file mode 100644 index 000000000..d62de733a Binary files /dev/null and b/public/terrain/18/429251/176886.terrain differ diff --git a/public/terrain/18/429251/176887.terrain b/public/terrain/18/429251/176887.terrain new file mode 100644 index 000000000..d6fd761fc Binary files /dev/null and b/public/terrain/18/429251/176887.terrain differ diff --git a/public/terrain/18/429251/176888.terrain b/public/terrain/18/429251/176888.terrain new file mode 100644 index 000000000..94293c8ce Binary files /dev/null and b/public/terrain/18/429251/176888.terrain differ diff --git a/public/terrain/18/429251/176889.terrain b/public/terrain/18/429251/176889.terrain new file mode 100644 index 000000000..59b519edc Binary files /dev/null and b/public/terrain/18/429251/176889.terrain differ diff --git a/public/terrain/18/429251/176890.terrain b/public/terrain/18/429251/176890.terrain new file mode 100644 index 000000000..92a1bfad1 Binary files /dev/null and b/public/terrain/18/429251/176890.terrain differ diff --git a/public/terrain/18/429251/176891.terrain b/public/terrain/18/429251/176891.terrain new file mode 100644 index 000000000..bdc78c439 Binary files /dev/null and b/public/terrain/18/429251/176891.terrain differ diff --git a/public/terrain/18/429251/176892.terrain b/public/terrain/18/429251/176892.terrain new file mode 100644 index 000000000..745418465 Binary files /dev/null and b/public/terrain/18/429251/176892.terrain differ diff --git a/public/terrain/18/429251/176893.terrain b/public/terrain/18/429251/176893.terrain new file mode 100644 index 000000000..1fd217e02 Binary files /dev/null and b/public/terrain/18/429251/176893.terrain differ diff --git a/public/terrain/18/429251/176894.terrain b/public/terrain/18/429251/176894.terrain new file mode 100644 index 000000000..c195176a4 Binary files /dev/null and b/public/terrain/18/429251/176894.terrain differ diff --git a/public/terrain/18/429251/176895.terrain b/public/terrain/18/429251/176895.terrain new file mode 100644 index 000000000..84f355348 Binary files /dev/null and b/public/terrain/18/429251/176895.terrain differ diff --git a/public/terrain/18/429251/176896.terrain b/public/terrain/18/429251/176896.terrain new file mode 100644 index 000000000..27185b081 Binary files /dev/null and b/public/terrain/18/429251/176896.terrain differ diff --git a/public/terrain/18/429251/176897.terrain b/public/terrain/18/429251/176897.terrain new file mode 100644 index 000000000..1d6d255e8 Binary files /dev/null and b/public/terrain/18/429251/176897.terrain differ diff --git a/public/terrain/18/429251/176898.terrain b/public/terrain/18/429251/176898.terrain new file mode 100644 index 000000000..8fefc4cd4 Binary files /dev/null and b/public/terrain/18/429251/176898.terrain differ diff --git a/public/terrain/18/429251/176899.terrain b/public/terrain/18/429251/176899.terrain new file mode 100644 index 000000000..c4b965331 Binary files /dev/null and b/public/terrain/18/429251/176899.terrain differ diff --git a/public/terrain/18/429251/176900.terrain b/public/terrain/18/429251/176900.terrain new file mode 100644 index 000000000..8cdb75091 Binary files /dev/null and b/public/terrain/18/429251/176900.terrain differ diff --git a/public/terrain/18/429251/176901.terrain b/public/terrain/18/429251/176901.terrain new file mode 100644 index 000000000..0cf8e7fde Binary files /dev/null and b/public/terrain/18/429251/176901.terrain differ diff --git a/public/terrain/18/429251/176902.terrain b/public/terrain/18/429251/176902.terrain new file mode 100644 index 000000000..862d8a836 Binary files /dev/null and b/public/terrain/18/429251/176902.terrain differ diff --git a/public/terrain/18/429251/176903.terrain b/public/terrain/18/429251/176903.terrain new file mode 100644 index 000000000..1b7bad968 Binary files /dev/null and b/public/terrain/18/429251/176903.terrain differ diff --git a/public/terrain/18/429251/176904.terrain b/public/terrain/18/429251/176904.terrain new file mode 100644 index 000000000..a617fcb03 Binary files /dev/null and b/public/terrain/18/429251/176904.terrain differ diff --git a/public/terrain/18/429251/176905.terrain b/public/terrain/18/429251/176905.terrain new file mode 100644 index 000000000..a72f0b83d Binary files /dev/null and b/public/terrain/18/429251/176905.terrain differ diff --git a/public/terrain/18/429251/176906.terrain b/public/terrain/18/429251/176906.terrain new file mode 100644 index 000000000..08d9c0b45 Binary files /dev/null and b/public/terrain/18/429251/176906.terrain differ diff --git a/public/terrain/18/429251/176907.terrain b/public/terrain/18/429251/176907.terrain new file mode 100644 index 000000000..a86860d5e Binary files /dev/null and b/public/terrain/18/429251/176907.terrain differ diff --git a/public/terrain/18/429251/176908.terrain b/public/terrain/18/429251/176908.terrain new file mode 100644 index 000000000..d25e72613 Binary files /dev/null and b/public/terrain/18/429251/176908.terrain differ diff --git a/public/terrain/18/429251/176909.terrain b/public/terrain/18/429251/176909.terrain new file mode 100644 index 000000000..b1b6b228d Binary files /dev/null and b/public/terrain/18/429251/176909.terrain differ diff --git a/public/terrain/18/429251/176910.terrain b/public/terrain/18/429251/176910.terrain new file mode 100644 index 000000000..c51d4cc5f Binary files /dev/null and b/public/terrain/18/429251/176910.terrain differ diff --git a/public/terrain/18/429251/176911.terrain b/public/terrain/18/429251/176911.terrain new file mode 100644 index 000000000..385f47399 Binary files /dev/null and b/public/terrain/18/429251/176911.terrain differ diff --git a/public/terrain/18/429251/176912.terrain b/public/terrain/18/429251/176912.terrain new file mode 100644 index 000000000..5ef914f3f Binary files /dev/null and b/public/terrain/18/429251/176912.terrain differ diff --git a/public/terrain/18/429251/176913.terrain b/public/terrain/18/429251/176913.terrain new file mode 100644 index 000000000..9c040a289 Binary files /dev/null and b/public/terrain/18/429251/176913.terrain differ diff --git a/public/terrain/18/429251/176914.terrain b/public/terrain/18/429251/176914.terrain new file mode 100644 index 000000000..d99b405d6 Binary files /dev/null and b/public/terrain/18/429251/176914.terrain differ diff --git a/public/terrain/18/429251/176915.terrain b/public/terrain/18/429251/176915.terrain new file mode 100644 index 000000000..e51a8a976 Binary files /dev/null and b/public/terrain/18/429251/176915.terrain differ diff --git a/public/terrain/18/429251/176916.terrain b/public/terrain/18/429251/176916.terrain new file mode 100644 index 000000000..44e883faf Binary files /dev/null and b/public/terrain/18/429251/176916.terrain differ diff --git a/public/terrain/18/429251/176917.terrain b/public/terrain/18/429251/176917.terrain new file mode 100644 index 000000000..91618cacc Binary files /dev/null and b/public/terrain/18/429251/176917.terrain differ diff --git a/public/terrain/18/429251/176918.terrain b/public/terrain/18/429251/176918.terrain new file mode 100644 index 000000000..0955d931e Binary files /dev/null and b/public/terrain/18/429251/176918.terrain differ diff --git a/public/terrain/18/429251/176919.terrain b/public/terrain/18/429251/176919.terrain new file mode 100644 index 000000000..a83459496 Binary files /dev/null and b/public/terrain/18/429251/176919.terrain differ diff --git a/public/terrain/18/429251/176920.terrain b/public/terrain/18/429251/176920.terrain new file mode 100644 index 000000000..09acbf984 Binary files /dev/null and b/public/terrain/18/429251/176920.terrain differ diff --git a/public/terrain/18/429251/176921.terrain b/public/terrain/18/429251/176921.terrain new file mode 100644 index 000000000..4eaa6c3d6 Binary files /dev/null and b/public/terrain/18/429251/176921.terrain differ diff --git a/public/terrain/18/429251/176922.terrain b/public/terrain/18/429251/176922.terrain new file mode 100644 index 000000000..7bfc37eb3 Binary files /dev/null and b/public/terrain/18/429251/176922.terrain differ diff --git a/public/terrain/18/429251/176923.terrain b/public/terrain/18/429251/176923.terrain new file mode 100644 index 000000000..f8e8327b4 Binary files /dev/null and b/public/terrain/18/429251/176923.terrain differ diff --git a/public/terrain/18/429251/176924.terrain b/public/terrain/18/429251/176924.terrain new file mode 100644 index 000000000..f19c2c5b6 Binary files /dev/null and b/public/terrain/18/429251/176924.terrain differ diff --git a/public/terrain/18/429251/176925.terrain b/public/terrain/18/429251/176925.terrain new file mode 100644 index 000000000..0f4e99eb3 Binary files /dev/null and b/public/terrain/18/429251/176925.terrain differ diff --git a/public/terrain/18/429251/176926.terrain b/public/terrain/18/429251/176926.terrain new file mode 100644 index 000000000..8ca54c772 Binary files /dev/null and b/public/terrain/18/429251/176926.terrain differ diff --git a/public/terrain/18/429251/176927.terrain b/public/terrain/18/429251/176927.terrain new file mode 100644 index 000000000..3bd84ff13 Binary files /dev/null and b/public/terrain/18/429251/176927.terrain differ diff --git a/public/terrain/18/429251/176928.terrain b/public/terrain/18/429251/176928.terrain new file mode 100644 index 000000000..51f162499 Binary files /dev/null and b/public/terrain/18/429251/176928.terrain differ diff --git a/public/terrain/18/429251/176929.terrain b/public/terrain/18/429251/176929.terrain new file mode 100644 index 000000000..c359f82b5 Binary files /dev/null and b/public/terrain/18/429251/176929.terrain differ diff --git a/public/terrain/18/429251/176930.terrain b/public/terrain/18/429251/176930.terrain new file mode 100644 index 000000000..e3edbdb40 Binary files /dev/null and b/public/terrain/18/429251/176930.terrain differ diff --git a/public/terrain/18/429251/176931.terrain b/public/terrain/18/429251/176931.terrain new file mode 100644 index 000000000..08e030b62 Binary files /dev/null and b/public/terrain/18/429251/176931.terrain differ diff --git a/public/terrain/18/429251/176932.terrain b/public/terrain/18/429251/176932.terrain new file mode 100644 index 000000000..fd93c1f8c Binary files /dev/null and b/public/terrain/18/429251/176932.terrain differ diff --git a/public/terrain/18/429251/176933.terrain b/public/terrain/18/429251/176933.terrain new file mode 100644 index 000000000..718dc29b8 Binary files /dev/null and b/public/terrain/18/429251/176933.terrain differ diff --git a/public/terrain/18/429251/176934.terrain b/public/terrain/18/429251/176934.terrain new file mode 100644 index 000000000..29adbefa9 Binary files /dev/null and b/public/terrain/18/429251/176934.terrain differ diff --git a/public/terrain/18/429251/176935.terrain b/public/terrain/18/429251/176935.terrain new file mode 100644 index 000000000..ec2af1907 Binary files /dev/null and b/public/terrain/18/429251/176935.terrain differ diff --git a/public/terrain/18/429251/176936.terrain b/public/terrain/18/429251/176936.terrain new file mode 100644 index 000000000..f4cd3c5ec Binary files /dev/null and b/public/terrain/18/429251/176936.terrain differ diff --git a/public/terrain/18/429251/176937.terrain b/public/terrain/18/429251/176937.terrain new file mode 100644 index 000000000..b63548b6f Binary files /dev/null and b/public/terrain/18/429251/176937.terrain differ diff --git a/public/terrain/18/429251/176938.terrain b/public/terrain/18/429251/176938.terrain new file mode 100644 index 000000000..fa405172b Binary files /dev/null and b/public/terrain/18/429251/176938.terrain differ diff --git a/public/terrain/18/429251/176939.terrain b/public/terrain/18/429251/176939.terrain new file mode 100644 index 000000000..99d24e486 Binary files /dev/null and b/public/terrain/18/429251/176939.terrain differ diff --git a/public/terrain/18/429251/176940.terrain b/public/terrain/18/429251/176940.terrain new file mode 100644 index 000000000..d00dd5d3b Binary files /dev/null and b/public/terrain/18/429251/176940.terrain differ diff --git a/public/terrain/18/429251/176941.terrain b/public/terrain/18/429251/176941.terrain new file mode 100644 index 000000000..c88a7bc4a Binary files /dev/null and b/public/terrain/18/429251/176941.terrain differ diff --git a/public/terrain/18/429251/176942.terrain b/public/terrain/18/429251/176942.terrain new file mode 100644 index 000000000..ecd2cc139 Binary files /dev/null and b/public/terrain/18/429251/176942.terrain differ diff --git a/public/terrain/18/429251/176943.terrain b/public/terrain/18/429251/176943.terrain new file mode 100644 index 000000000..be7fa3379 Binary files /dev/null and b/public/terrain/18/429251/176943.terrain differ diff --git a/public/terrain/18/429251/176944.terrain b/public/terrain/18/429251/176944.terrain new file mode 100644 index 000000000..3702df56c Binary files /dev/null and b/public/terrain/18/429251/176944.terrain differ diff --git a/public/terrain/18/429251/176945.terrain b/public/terrain/18/429251/176945.terrain new file mode 100644 index 000000000..41c275cc6 Binary files /dev/null and b/public/terrain/18/429251/176945.terrain differ diff --git a/public/terrain/18/429251/176946.terrain b/public/terrain/18/429251/176946.terrain new file mode 100644 index 000000000..a897971cb Binary files /dev/null and b/public/terrain/18/429251/176946.terrain differ diff --git a/public/terrain/18/429251/176947.terrain b/public/terrain/18/429251/176947.terrain new file mode 100644 index 000000000..7952e8368 Binary files /dev/null and b/public/terrain/18/429251/176947.terrain differ diff --git a/public/terrain/18/429251/176948.terrain b/public/terrain/18/429251/176948.terrain new file mode 100644 index 000000000..0a07a2f0f Binary files /dev/null and b/public/terrain/18/429251/176948.terrain differ diff --git a/public/terrain/18/429251/176949.terrain b/public/terrain/18/429251/176949.terrain new file mode 100644 index 000000000..8da46092a Binary files /dev/null and b/public/terrain/18/429251/176949.terrain differ diff --git a/public/terrain/18/429251/176950.terrain b/public/terrain/18/429251/176950.terrain new file mode 100644 index 000000000..f21030bfa Binary files /dev/null and b/public/terrain/18/429251/176950.terrain differ diff --git a/public/terrain/18/429251/176951.terrain b/public/terrain/18/429251/176951.terrain new file mode 100644 index 000000000..a17872b75 Binary files /dev/null and b/public/terrain/18/429251/176951.terrain differ diff --git a/public/terrain/18/429251/176952.terrain b/public/terrain/18/429251/176952.terrain new file mode 100644 index 000000000..ddc1a0ed4 Binary files /dev/null and b/public/terrain/18/429251/176952.terrain differ diff --git a/public/terrain/18/429251/176953.terrain b/public/terrain/18/429251/176953.terrain new file mode 100644 index 000000000..e426e815a Binary files /dev/null and b/public/terrain/18/429251/176953.terrain differ diff --git a/public/terrain/18/429251/176954.terrain b/public/terrain/18/429251/176954.terrain new file mode 100644 index 000000000..40662eacb Binary files /dev/null and b/public/terrain/18/429251/176954.terrain differ diff --git a/public/terrain/18/429251/176955.terrain b/public/terrain/18/429251/176955.terrain new file mode 100644 index 000000000..b0c137253 Binary files /dev/null and b/public/terrain/18/429251/176955.terrain differ diff --git a/public/terrain/18/429251/176956.terrain b/public/terrain/18/429251/176956.terrain new file mode 100644 index 000000000..11c7978a8 Binary files /dev/null and b/public/terrain/18/429251/176956.terrain differ diff --git a/public/terrain/18/429251/176957.terrain b/public/terrain/18/429251/176957.terrain new file mode 100644 index 000000000..20b421827 Binary files /dev/null and b/public/terrain/18/429251/176957.terrain differ diff --git a/public/terrain/18/429251/176958.terrain b/public/terrain/18/429251/176958.terrain new file mode 100644 index 000000000..85e41f100 Binary files /dev/null and b/public/terrain/18/429251/176958.terrain differ diff --git a/public/terrain/18/429251/176959.terrain b/public/terrain/18/429251/176959.terrain new file mode 100644 index 000000000..a164c109d Binary files /dev/null and b/public/terrain/18/429251/176959.terrain differ diff --git a/public/terrain/18/429251/176960.terrain b/public/terrain/18/429251/176960.terrain new file mode 100644 index 000000000..c920bc40d Binary files /dev/null and b/public/terrain/18/429251/176960.terrain differ diff --git a/public/terrain/18/429251/176961.terrain b/public/terrain/18/429251/176961.terrain new file mode 100644 index 000000000..1fd77bade Binary files /dev/null and b/public/terrain/18/429251/176961.terrain differ diff --git a/public/terrain/18/429251/176962.terrain b/public/terrain/18/429251/176962.terrain new file mode 100644 index 000000000..9677ec454 Binary files /dev/null and b/public/terrain/18/429251/176962.terrain differ diff --git a/public/terrain/18/429251/176963.terrain b/public/terrain/18/429251/176963.terrain new file mode 100644 index 000000000..e54efbc19 Binary files /dev/null and b/public/terrain/18/429251/176963.terrain differ diff --git a/public/terrain/18/429251/176964.terrain b/public/terrain/18/429251/176964.terrain new file mode 100644 index 000000000..6ed9a2d6b Binary files /dev/null and b/public/terrain/18/429251/176964.terrain differ diff --git a/public/terrain/18/429251/176965.terrain b/public/terrain/18/429251/176965.terrain new file mode 100644 index 000000000..e18c88924 Binary files /dev/null and b/public/terrain/18/429251/176965.terrain differ diff --git a/public/terrain/18/429251/176966.terrain b/public/terrain/18/429251/176966.terrain new file mode 100644 index 000000000..45df3003f Binary files /dev/null and b/public/terrain/18/429251/176966.terrain differ diff --git a/public/terrain/18/429251/176967.terrain b/public/terrain/18/429251/176967.terrain new file mode 100644 index 000000000..81e697415 Binary files /dev/null and b/public/terrain/18/429251/176967.terrain differ diff --git a/public/terrain/18/429251/176968.terrain b/public/terrain/18/429251/176968.terrain new file mode 100644 index 000000000..52742974c Binary files /dev/null and b/public/terrain/18/429251/176968.terrain differ diff --git a/public/terrain/18/429251/176969.terrain b/public/terrain/18/429251/176969.terrain new file mode 100644 index 000000000..4e30747fb Binary files /dev/null and b/public/terrain/18/429251/176969.terrain differ diff --git a/public/terrain/18/429251/176970.terrain b/public/terrain/18/429251/176970.terrain new file mode 100644 index 000000000..f2df4eec3 Binary files /dev/null and b/public/terrain/18/429251/176970.terrain differ diff --git a/public/terrain/18/429251/176971.terrain b/public/terrain/18/429251/176971.terrain new file mode 100644 index 000000000..a02a6a1cf Binary files /dev/null and b/public/terrain/18/429251/176971.terrain differ diff --git a/public/terrain/18/429251/176972.terrain b/public/terrain/18/429251/176972.terrain new file mode 100644 index 000000000..71261816e Binary files /dev/null and b/public/terrain/18/429251/176972.terrain differ diff --git a/public/terrain/18/429251/176973.terrain b/public/terrain/18/429251/176973.terrain new file mode 100644 index 000000000..212b8c362 Binary files /dev/null and b/public/terrain/18/429251/176973.terrain differ diff --git a/public/terrain/18/429251/176974.terrain b/public/terrain/18/429251/176974.terrain new file mode 100644 index 000000000..811cafdc6 Binary files /dev/null and b/public/terrain/18/429251/176974.terrain differ diff --git a/public/terrain/18/429251/176975.terrain b/public/terrain/18/429251/176975.terrain new file mode 100644 index 000000000..748bf7542 Binary files /dev/null and b/public/terrain/18/429251/176975.terrain differ diff --git a/public/terrain/18/429251/176976.terrain b/public/terrain/18/429251/176976.terrain new file mode 100644 index 000000000..85d15533a Binary files /dev/null and b/public/terrain/18/429251/176976.terrain differ diff --git a/public/terrain/18/429251/176977.terrain b/public/terrain/18/429251/176977.terrain new file mode 100644 index 000000000..a9e7d6b35 Binary files /dev/null and b/public/terrain/18/429251/176977.terrain differ diff --git a/public/terrain/18/429251/176978.terrain b/public/terrain/18/429251/176978.terrain new file mode 100644 index 000000000..accc27e9f Binary files /dev/null and b/public/terrain/18/429251/176978.terrain differ diff --git a/public/terrain/18/429251/176979.terrain b/public/terrain/18/429251/176979.terrain new file mode 100644 index 000000000..81c08fb96 Binary files /dev/null and b/public/terrain/18/429251/176979.terrain differ diff --git a/public/terrain/18/429251/176980.terrain b/public/terrain/18/429251/176980.terrain new file mode 100644 index 000000000..9fa5678a8 Binary files /dev/null and b/public/terrain/18/429251/176980.terrain differ diff --git a/public/terrain/18/429251/176981.terrain b/public/terrain/18/429251/176981.terrain new file mode 100644 index 000000000..649c29d9f Binary files /dev/null and b/public/terrain/18/429251/176981.terrain differ diff --git a/public/terrain/18/429251/176982.terrain b/public/terrain/18/429251/176982.terrain new file mode 100644 index 000000000..1cc9e2eda Binary files /dev/null and b/public/terrain/18/429251/176982.terrain differ diff --git a/public/terrain/18/429251/176983.terrain b/public/terrain/18/429251/176983.terrain new file mode 100644 index 000000000..3b99c11fd Binary files /dev/null and b/public/terrain/18/429251/176983.terrain differ diff --git a/public/terrain/18/429251/176984.terrain b/public/terrain/18/429251/176984.terrain new file mode 100644 index 000000000..0123c57a3 Binary files /dev/null and b/public/terrain/18/429251/176984.terrain differ diff --git a/public/terrain/18/429251/176985.terrain b/public/terrain/18/429251/176985.terrain new file mode 100644 index 000000000..26d49f360 Binary files /dev/null and b/public/terrain/18/429251/176985.terrain differ diff --git a/public/terrain/18/429251/176986.terrain b/public/terrain/18/429251/176986.terrain new file mode 100644 index 000000000..912cc7981 Binary files /dev/null and b/public/terrain/18/429251/176986.terrain differ diff --git a/public/terrain/18/429251/176987.terrain b/public/terrain/18/429251/176987.terrain new file mode 100644 index 000000000..dc4e1eaa3 Binary files /dev/null and b/public/terrain/18/429251/176987.terrain differ diff --git a/public/terrain/18/429251/176988.terrain b/public/terrain/18/429251/176988.terrain new file mode 100644 index 000000000..712516aa4 Binary files /dev/null and b/public/terrain/18/429251/176988.terrain differ diff --git a/public/terrain/18/429251/176989.terrain b/public/terrain/18/429251/176989.terrain new file mode 100644 index 000000000..2b1ba5754 Binary files /dev/null and b/public/terrain/18/429251/176989.terrain differ diff --git a/public/terrain/18/429251/176990.terrain b/public/terrain/18/429251/176990.terrain new file mode 100644 index 000000000..c8fcca936 Binary files /dev/null and b/public/terrain/18/429251/176990.terrain differ diff --git a/public/terrain/18/429251/176991.terrain b/public/terrain/18/429251/176991.terrain new file mode 100644 index 000000000..c8764c743 Binary files /dev/null and b/public/terrain/18/429251/176991.terrain differ diff --git a/public/terrain/18/429251/176992.terrain b/public/terrain/18/429251/176992.terrain new file mode 100644 index 000000000..cd41348ae Binary files /dev/null and b/public/terrain/18/429251/176992.terrain differ diff --git a/public/terrain/18/429251/176993.terrain b/public/terrain/18/429251/176993.terrain new file mode 100644 index 000000000..0b5849371 Binary files /dev/null and b/public/terrain/18/429251/176993.terrain differ diff --git a/public/terrain/18/429251/176994.terrain b/public/terrain/18/429251/176994.terrain new file mode 100644 index 000000000..f7f94ea03 Binary files /dev/null and b/public/terrain/18/429251/176994.terrain differ diff --git a/public/terrain/18/429251/176995.terrain b/public/terrain/18/429251/176995.terrain new file mode 100644 index 000000000..7e2173a7f Binary files /dev/null and b/public/terrain/18/429251/176995.terrain differ diff --git a/public/terrain/18/429251/176996.terrain b/public/terrain/18/429251/176996.terrain new file mode 100644 index 000000000..9561203ee Binary files /dev/null and b/public/terrain/18/429251/176996.terrain differ diff --git a/public/terrain/18/429251/176997.terrain b/public/terrain/18/429251/176997.terrain new file mode 100644 index 000000000..ae7d7ba6a Binary files /dev/null and b/public/terrain/18/429251/176997.terrain differ diff --git a/public/terrain/18/429251/176998.terrain b/public/terrain/18/429251/176998.terrain new file mode 100644 index 000000000..c769f079e Binary files /dev/null and b/public/terrain/18/429251/176998.terrain differ diff --git a/public/terrain/18/429251/176999.terrain b/public/terrain/18/429251/176999.terrain new file mode 100644 index 000000000..064a3bd06 Binary files /dev/null and b/public/terrain/18/429251/176999.terrain differ diff --git a/public/terrain/18/429251/177000.terrain b/public/terrain/18/429251/177000.terrain new file mode 100644 index 000000000..e2c5eb915 Binary files /dev/null and b/public/terrain/18/429251/177000.terrain differ diff --git a/public/terrain/18/429251/177001.terrain b/public/terrain/18/429251/177001.terrain new file mode 100644 index 000000000..6d2f457a5 Binary files /dev/null and b/public/terrain/18/429251/177001.terrain differ diff --git a/public/terrain/18/429251/177002.terrain b/public/terrain/18/429251/177002.terrain new file mode 100644 index 000000000..b0357f5ad Binary files /dev/null and b/public/terrain/18/429251/177002.terrain differ diff --git a/public/terrain/18/429251/177003.terrain b/public/terrain/18/429251/177003.terrain new file mode 100644 index 000000000..bfd58f4b0 Binary files /dev/null and b/public/terrain/18/429251/177003.terrain differ diff --git a/public/terrain/18/429251/177004.terrain b/public/terrain/18/429251/177004.terrain new file mode 100644 index 000000000..e7319d3d6 Binary files /dev/null and b/public/terrain/18/429251/177004.terrain differ diff --git a/public/terrain/18/429251/177005.terrain b/public/terrain/18/429251/177005.terrain new file mode 100644 index 000000000..421265aa4 Binary files /dev/null and b/public/terrain/18/429251/177005.terrain differ diff --git a/public/terrain/18/429251/177006.terrain b/public/terrain/18/429251/177006.terrain new file mode 100644 index 000000000..7b2f96602 Binary files /dev/null and b/public/terrain/18/429251/177006.terrain differ diff --git a/public/terrain/18/429251/177007.terrain b/public/terrain/18/429251/177007.terrain new file mode 100644 index 000000000..384729f42 Binary files /dev/null and b/public/terrain/18/429251/177007.terrain differ diff --git a/public/terrain/18/429251/177008.terrain b/public/terrain/18/429251/177008.terrain new file mode 100644 index 000000000..856036e81 Binary files /dev/null and b/public/terrain/18/429251/177008.terrain differ diff --git a/public/terrain/18/429251/177009.terrain b/public/terrain/18/429251/177009.terrain new file mode 100644 index 000000000..3b88bd4d7 Binary files /dev/null and b/public/terrain/18/429251/177009.terrain differ diff --git a/public/terrain/18/429251/177010.terrain b/public/terrain/18/429251/177010.terrain new file mode 100644 index 000000000..b80ce958e Binary files /dev/null and b/public/terrain/18/429251/177010.terrain differ diff --git a/public/terrain/18/429251/177011.terrain b/public/terrain/18/429251/177011.terrain new file mode 100644 index 000000000..0ce9040a9 Binary files /dev/null and b/public/terrain/18/429251/177011.terrain differ diff --git a/public/terrain/18/429251/177012.terrain b/public/terrain/18/429251/177012.terrain new file mode 100644 index 000000000..321d6157a Binary files /dev/null and b/public/terrain/18/429251/177012.terrain differ diff --git a/public/terrain/18/429251/177013.terrain b/public/terrain/18/429251/177013.terrain new file mode 100644 index 000000000..20e0f58ed Binary files /dev/null and b/public/terrain/18/429251/177013.terrain differ diff --git a/public/terrain/18/429251/177014.terrain b/public/terrain/18/429251/177014.terrain new file mode 100644 index 000000000..e816d42b2 Binary files /dev/null and b/public/terrain/18/429251/177014.terrain differ diff --git a/public/terrain/18/429251/177015.terrain b/public/terrain/18/429251/177015.terrain new file mode 100644 index 000000000..b0bdb6e9b Binary files /dev/null and b/public/terrain/18/429251/177015.terrain differ diff --git a/public/terrain/18/429251/177016.terrain b/public/terrain/18/429251/177016.terrain new file mode 100644 index 000000000..58ce6405c Binary files /dev/null and b/public/terrain/18/429251/177016.terrain differ diff --git a/public/terrain/18/429251/177017.terrain b/public/terrain/18/429251/177017.terrain new file mode 100644 index 000000000..299d59152 Binary files /dev/null and b/public/terrain/18/429251/177017.terrain differ diff --git a/public/terrain/18/429251/177018.terrain b/public/terrain/18/429251/177018.terrain new file mode 100644 index 000000000..8eeef6f96 Binary files /dev/null and b/public/terrain/18/429251/177018.terrain differ diff --git a/public/terrain/18/429251/177019.terrain b/public/terrain/18/429251/177019.terrain new file mode 100644 index 000000000..26e5b8935 Binary files /dev/null and b/public/terrain/18/429251/177019.terrain differ diff --git a/public/terrain/18/429251/177020.terrain b/public/terrain/18/429251/177020.terrain new file mode 100644 index 000000000..33ef7eddd Binary files /dev/null and b/public/terrain/18/429251/177020.terrain differ diff --git a/public/terrain/18/429251/177021.terrain b/public/terrain/18/429251/177021.terrain new file mode 100644 index 000000000..bbecad338 Binary files /dev/null and b/public/terrain/18/429251/177021.terrain differ diff --git a/public/terrain/18/429251/177022.terrain b/public/terrain/18/429251/177022.terrain new file mode 100644 index 000000000..a3f38f34d Binary files /dev/null and b/public/terrain/18/429251/177022.terrain differ diff --git a/public/terrain/18/429251/177023.terrain b/public/terrain/18/429251/177023.terrain new file mode 100644 index 000000000..d15916427 Binary files /dev/null and b/public/terrain/18/429251/177023.terrain differ diff --git a/public/terrain/18/429251/177024.terrain b/public/terrain/18/429251/177024.terrain new file mode 100644 index 000000000..d717258be Binary files /dev/null and b/public/terrain/18/429251/177024.terrain differ diff --git a/public/terrain/18/429251/177025.terrain b/public/terrain/18/429251/177025.terrain new file mode 100644 index 000000000..1c5b9ad5c Binary files /dev/null and b/public/terrain/18/429251/177025.terrain differ diff --git a/public/terrain/18/429251/177026.terrain b/public/terrain/18/429251/177026.terrain new file mode 100644 index 000000000..787bb9efc Binary files /dev/null and b/public/terrain/18/429251/177026.terrain differ diff --git a/public/terrain/18/429251/177027.terrain b/public/terrain/18/429251/177027.terrain new file mode 100644 index 000000000..14665224f Binary files /dev/null and b/public/terrain/18/429251/177027.terrain differ diff --git a/public/terrain/18/429251/177028.terrain b/public/terrain/18/429251/177028.terrain new file mode 100644 index 000000000..60c7f14e1 Binary files /dev/null and b/public/terrain/18/429251/177028.terrain differ diff --git a/public/terrain/18/429251/177029.terrain b/public/terrain/18/429251/177029.terrain new file mode 100644 index 000000000..7d148e8b5 Binary files /dev/null and b/public/terrain/18/429251/177029.terrain differ diff --git a/public/terrain/18/429252/176871.terrain b/public/terrain/18/429252/176871.terrain new file mode 100644 index 000000000..5080259d5 Binary files /dev/null and b/public/terrain/18/429252/176871.terrain differ diff --git a/public/terrain/18/429252/176872.terrain b/public/terrain/18/429252/176872.terrain new file mode 100644 index 000000000..24a0c7668 Binary files /dev/null and b/public/terrain/18/429252/176872.terrain differ diff --git a/public/terrain/18/429252/176873.terrain b/public/terrain/18/429252/176873.terrain new file mode 100644 index 000000000..d5408a532 Binary files /dev/null and b/public/terrain/18/429252/176873.terrain differ diff --git a/public/terrain/18/429252/176874.terrain b/public/terrain/18/429252/176874.terrain new file mode 100644 index 000000000..179e22e38 Binary files /dev/null and b/public/terrain/18/429252/176874.terrain differ diff --git a/public/terrain/18/429252/176875.terrain b/public/terrain/18/429252/176875.terrain new file mode 100644 index 000000000..fd6302aeb Binary files /dev/null and b/public/terrain/18/429252/176875.terrain differ diff --git a/public/terrain/18/429252/176876.terrain b/public/terrain/18/429252/176876.terrain new file mode 100644 index 000000000..31a58ae71 Binary files /dev/null and b/public/terrain/18/429252/176876.terrain differ diff --git a/public/terrain/18/429252/176877.terrain b/public/terrain/18/429252/176877.terrain new file mode 100644 index 000000000..92251cd76 Binary files /dev/null and b/public/terrain/18/429252/176877.terrain differ diff --git a/public/terrain/18/429252/176878.terrain b/public/terrain/18/429252/176878.terrain new file mode 100644 index 000000000..f091639eb Binary files /dev/null and b/public/terrain/18/429252/176878.terrain differ diff --git a/public/terrain/18/429252/176879.terrain b/public/terrain/18/429252/176879.terrain new file mode 100644 index 000000000..e7fc4ea3c Binary files /dev/null and b/public/terrain/18/429252/176879.terrain differ diff --git a/public/terrain/18/429252/176880.terrain b/public/terrain/18/429252/176880.terrain new file mode 100644 index 000000000..4d66f9868 Binary files /dev/null and b/public/terrain/18/429252/176880.terrain differ diff --git a/public/terrain/18/429252/176881.terrain b/public/terrain/18/429252/176881.terrain new file mode 100644 index 000000000..32b2ec1e1 Binary files /dev/null and b/public/terrain/18/429252/176881.terrain differ diff --git a/public/terrain/18/429252/176882.terrain b/public/terrain/18/429252/176882.terrain new file mode 100644 index 000000000..989b4224f Binary files /dev/null and b/public/terrain/18/429252/176882.terrain differ diff --git a/public/terrain/18/429252/176883.terrain b/public/terrain/18/429252/176883.terrain new file mode 100644 index 000000000..08ef17c06 Binary files /dev/null and b/public/terrain/18/429252/176883.terrain differ diff --git a/public/terrain/18/429252/176884.terrain b/public/terrain/18/429252/176884.terrain new file mode 100644 index 000000000..bd4c58dc4 Binary files /dev/null and b/public/terrain/18/429252/176884.terrain differ diff --git a/public/terrain/18/429252/176885.terrain b/public/terrain/18/429252/176885.terrain new file mode 100644 index 000000000..d9a7c51a5 Binary files /dev/null and b/public/terrain/18/429252/176885.terrain differ diff --git a/public/terrain/18/429252/176886.terrain b/public/terrain/18/429252/176886.terrain new file mode 100644 index 000000000..e5e88efd2 Binary files /dev/null and b/public/terrain/18/429252/176886.terrain differ diff --git a/public/terrain/18/429252/176887.terrain b/public/terrain/18/429252/176887.terrain new file mode 100644 index 000000000..000764ede Binary files /dev/null and b/public/terrain/18/429252/176887.terrain differ diff --git a/public/terrain/18/429252/176888.terrain b/public/terrain/18/429252/176888.terrain new file mode 100644 index 000000000..500f35ff9 Binary files /dev/null and b/public/terrain/18/429252/176888.terrain differ diff --git a/public/terrain/18/429252/176889.terrain b/public/terrain/18/429252/176889.terrain new file mode 100644 index 000000000..2f864b6fe Binary files /dev/null and b/public/terrain/18/429252/176889.terrain differ diff --git a/public/terrain/18/429252/176890.terrain b/public/terrain/18/429252/176890.terrain new file mode 100644 index 000000000..09c3bbdba Binary files /dev/null and b/public/terrain/18/429252/176890.terrain differ diff --git a/public/terrain/18/429252/176891.terrain b/public/terrain/18/429252/176891.terrain new file mode 100644 index 000000000..475b62d66 Binary files /dev/null and b/public/terrain/18/429252/176891.terrain differ diff --git a/public/terrain/18/429252/176892.terrain b/public/terrain/18/429252/176892.terrain new file mode 100644 index 000000000..4ea142815 Binary files /dev/null and b/public/terrain/18/429252/176892.terrain differ diff --git a/public/terrain/18/429252/176893.terrain b/public/terrain/18/429252/176893.terrain new file mode 100644 index 000000000..e59f44e5f Binary files /dev/null and b/public/terrain/18/429252/176893.terrain differ diff --git a/public/terrain/18/429252/176894.terrain b/public/terrain/18/429252/176894.terrain new file mode 100644 index 000000000..e23562f99 Binary files /dev/null and b/public/terrain/18/429252/176894.terrain differ diff --git a/public/terrain/18/429252/176895.terrain b/public/terrain/18/429252/176895.terrain new file mode 100644 index 000000000..5858ab428 Binary files /dev/null and b/public/terrain/18/429252/176895.terrain differ diff --git a/public/terrain/18/429252/176896.terrain b/public/terrain/18/429252/176896.terrain new file mode 100644 index 000000000..2d091eec3 Binary files /dev/null and b/public/terrain/18/429252/176896.terrain differ diff --git a/public/terrain/18/429252/176897.terrain b/public/terrain/18/429252/176897.terrain new file mode 100644 index 000000000..0b1669176 Binary files /dev/null and b/public/terrain/18/429252/176897.terrain differ diff --git a/public/terrain/18/429252/176898.terrain b/public/terrain/18/429252/176898.terrain new file mode 100644 index 000000000..cd3a70a25 Binary files /dev/null and b/public/terrain/18/429252/176898.terrain differ diff --git a/public/terrain/18/429252/176899.terrain b/public/terrain/18/429252/176899.terrain new file mode 100644 index 000000000..276dc30bf Binary files /dev/null and b/public/terrain/18/429252/176899.terrain differ diff --git a/public/terrain/18/429252/176900.terrain b/public/terrain/18/429252/176900.terrain new file mode 100644 index 000000000..7148dd138 Binary files /dev/null and b/public/terrain/18/429252/176900.terrain differ diff --git a/public/terrain/18/429252/176901.terrain b/public/terrain/18/429252/176901.terrain new file mode 100644 index 000000000..15720be18 Binary files /dev/null and b/public/terrain/18/429252/176901.terrain differ diff --git a/public/terrain/18/429252/176902.terrain b/public/terrain/18/429252/176902.terrain new file mode 100644 index 000000000..8a0d460a9 Binary files /dev/null and b/public/terrain/18/429252/176902.terrain differ diff --git a/public/terrain/18/429252/176903.terrain b/public/terrain/18/429252/176903.terrain new file mode 100644 index 000000000..49b381410 Binary files /dev/null and b/public/terrain/18/429252/176903.terrain differ diff --git a/public/terrain/18/429252/176904.terrain b/public/terrain/18/429252/176904.terrain new file mode 100644 index 000000000..333028ae7 Binary files /dev/null and b/public/terrain/18/429252/176904.terrain differ diff --git a/public/terrain/18/429252/176905.terrain b/public/terrain/18/429252/176905.terrain new file mode 100644 index 000000000..98736a892 Binary files /dev/null and b/public/terrain/18/429252/176905.terrain differ diff --git a/public/terrain/18/429252/176906.terrain b/public/terrain/18/429252/176906.terrain new file mode 100644 index 000000000..37b4e4ef1 Binary files /dev/null and b/public/terrain/18/429252/176906.terrain differ diff --git a/public/terrain/18/429252/176907.terrain b/public/terrain/18/429252/176907.terrain new file mode 100644 index 000000000..562c218e6 Binary files /dev/null and b/public/terrain/18/429252/176907.terrain differ diff --git a/public/terrain/18/429252/176908.terrain b/public/terrain/18/429252/176908.terrain new file mode 100644 index 000000000..c2bdd39b4 Binary files /dev/null and b/public/terrain/18/429252/176908.terrain differ diff --git a/public/terrain/18/429252/176909.terrain b/public/terrain/18/429252/176909.terrain new file mode 100644 index 000000000..206514319 Binary files /dev/null and b/public/terrain/18/429252/176909.terrain differ diff --git a/public/terrain/18/429252/176910.terrain b/public/terrain/18/429252/176910.terrain new file mode 100644 index 000000000..63464304b Binary files /dev/null and b/public/terrain/18/429252/176910.terrain differ diff --git a/public/terrain/18/429252/176911.terrain b/public/terrain/18/429252/176911.terrain new file mode 100644 index 000000000..d4cc2f25b Binary files /dev/null and b/public/terrain/18/429252/176911.terrain differ diff --git a/public/terrain/18/429252/176912.terrain b/public/terrain/18/429252/176912.terrain new file mode 100644 index 000000000..4ca839b54 Binary files /dev/null and b/public/terrain/18/429252/176912.terrain differ diff --git a/public/terrain/18/429252/176913.terrain b/public/terrain/18/429252/176913.terrain new file mode 100644 index 000000000..515099571 Binary files /dev/null and b/public/terrain/18/429252/176913.terrain differ diff --git a/public/terrain/18/429252/176914.terrain b/public/terrain/18/429252/176914.terrain new file mode 100644 index 000000000..c73e0ca1f Binary files /dev/null and b/public/terrain/18/429252/176914.terrain differ diff --git a/public/terrain/18/429252/176915.terrain b/public/terrain/18/429252/176915.terrain new file mode 100644 index 000000000..997d21e17 Binary files /dev/null and b/public/terrain/18/429252/176915.terrain differ diff --git a/public/terrain/18/429252/176916.terrain b/public/terrain/18/429252/176916.terrain new file mode 100644 index 000000000..85509b6a6 Binary files /dev/null and b/public/terrain/18/429252/176916.terrain differ diff --git a/public/terrain/18/429252/176917.terrain b/public/terrain/18/429252/176917.terrain new file mode 100644 index 000000000..07759076d Binary files /dev/null and b/public/terrain/18/429252/176917.terrain differ diff --git a/public/terrain/18/429252/176918.terrain b/public/terrain/18/429252/176918.terrain new file mode 100644 index 000000000..d3f341b23 Binary files /dev/null and b/public/terrain/18/429252/176918.terrain differ diff --git a/public/terrain/18/429252/176919.terrain b/public/terrain/18/429252/176919.terrain new file mode 100644 index 000000000..3b77bf7ec Binary files /dev/null and b/public/terrain/18/429252/176919.terrain differ diff --git a/public/terrain/18/429252/176920.terrain b/public/terrain/18/429252/176920.terrain new file mode 100644 index 000000000..91296cab6 Binary files /dev/null and b/public/terrain/18/429252/176920.terrain differ diff --git a/public/terrain/18/429252/176921.terrain b/public/terrain/18/429252/176921.terrain new file mode 100644 index 000000000..48cf9fbfa Binary files /dev/null and b/public/terrain/18/429252/176921.terrain differ diff --git a/public/terrain/18/429252/176922.terrain b/public/terrain/18/429252/176922.terrain new file mode 100644 index 000000000..52ae52391 Binary files /dev/null and b/public/terrain/18/429252/176922.terrain differ diff --git a/public/terrain/18/429252/176923.terrain b/public/terrain/18/429252/176923.terrain new file mode 100644 index 000000000..ab13a18d4 Binary files /dev/null and b/public/terrain/18/429252/176923.terrain differ diff --git a/public/terrain/18/429252/176924.terrain b/public/terrain/18/429252/176924.terrain new file mode 100644 index 000000000..fcf4cbd73 Binary files /dev/null and b/public/terrain/18/429252/176924.terrain differ diff --git a/public/terrain/18/429252/176925.terrain b/public/terrain/18/429252/176925.terrain new file mode 100644 index 000000000..931a87e62 Binary files /dev/null and b/public/terrain/18/429252/176925.terrain differ diff --git a/public/terrain/18/429252/176926.terrain b/public/terrain/18/429252/176926.terrain new file mode 100644 index 000000000..34a60f865 Binary files /dev/null and b/public/terrain/18/429252/176926.terrain differ diff --git a/public/terrain/18/429252/176927.terrain b/public/terrain/18/429252/176927.terrain new file mode 100644 index 000000000..b3c032903 Binary files /dev/null and b/public/terrain/18/429252/176927.terrain differ diff --git a/public/terrain/18/429252/176928.terrain b/public/terrain/18/429252/176928.terrain new file mode 100644 index 000000000..81d06f15b Binary files /dev/null and b/public/terrain/18/429252/176928.terrain differ diff --git a/public/terrain/18/429252/176929.terrain b/public/terrain/18/429252/176929.terrain new file mode 100644 index 000000000..95ccfcb52 Binary files /dev/null and b/public/terrain/18/429252/176929.terrain differ diff --git a/public/terrain/18/429252/176930.terrain b/public/terrain/18/429252/176930.terrain new file mode 100644 index 000000000..1d236a501 Binary files /dev/null and b/public/terrain/18/429252/176930.terrain differ diff --git a/public/terrain/18/429252/176931.terrain b/public/terrain/18/429252/176931.terrain new file mode 100644 index 000000000..823e6950b Binary files /dev/null and b/public/terrain/18/429252/176931.terrain differ diff --git a/public/terrain/18/429252/176932.terrain b/public/terrain/18/429252/176932.terrain new file mode 100644 index 000000000..9a5849cb6 Binary files /dev/null and b/public/terrain/18/429252/176932.terrain differ diff --git a/public/terrain/18/429252/176933.terrain b/public/terrain/18/429252/176933.terrain new file mode 100644 index 000000000..04106329a Binary files /dev/null and b/public/terrain/18/429252/176933.terrain differ diff --git a/public/terrain/18/429252/176934.terrain b/public/terrain/18/429252/176934.terrain new file mode 100644 index 000000000..fe957f5c8 Binary files /dev/null and b/public/terrain/18/429252/176934.terrain differ diff --git a/public/terrain/18/429252/176935.terrain b/public/terrain/18/429252/176935.terrain new file mode 100644 index 000000000..5578d31b3 Binary files /dev/null and b/public/terrain/18/429252/176935.terrain differ diff --git a/public/terrain/18/429252/176936.terrain b/public/terrain/18/429252/176936.terrain new file mode 100644 index 000000000..179d11f01 Binary files /dev/null and b/public/terrain/18/429252/176936.terrain differ diff --git a/public/terrain/18/429252/176937.terrain b/public/terrain/18/429252/176937.terrain new file mode 100644 index 000000000..c386bfbd4 Binary files /dev/null and b/public/terrain/18/429252/176937.terrain differ diff --git a/public/terrain/18/429252/176938.terrain b/public/terrain/18/429252/176938.terrain new file mode 100644 index 000000000..44e688882 Binary files /dev/null and b/public/terrain/18/429252/176938.terrain differ diff --git a/public/terrain/18/429252/176939.terrain b/public/terrain/18/429252/176939.terrain new file mode 100644 index 000000000..a151ee87b Binary files /dev/null and b/public/terrain/18/429252/176939.terrain differ diff --git a/public/terrain/18/429252/176940.terrain b/public/terrain/18/429252/176940.terrain new file mode 100644 index 000000000..8febe6eb0 Binary files /dev/null and b/public/terrain/18/429252/176940.terrain differ diff --git a/public/terrain/18/429252/176941.terrain b/public/terrain/18/429252/176941.terrain new file mode 100644 index 000000000..acdfe1189 Binary files /dev/null and b/public/terrain/18/429252/176941.terrain differ diff --git a/public/terrain/18/429252/176942.terrain b/public/terrain/18/429252/176942.terrain new file mode 100644 index 000000000..7dcf9c064 Binary files /dev/null and b/public/terrain/18/429252/176942.terrain differ diff --git a/public/terrain/18/429252/176943.terrain b/public/terrain/18/429252/176943.terrain new file mode 100644 index 000000000..4ce8a4e04 Binary files /dev/null and b/public/terrain/18/429252/176943.terrain differ diff --git a/public/terrain/18/429252/176944.terrain b/public/terrain/18/429252/176944.terrain new file mode 100644 index 000000000..64cb0336f Binary files /dev/null and b/public/terrain/18/429252/176944.terrain differ diff --git a/public/terrain/18/429252/176945.terrain b/public/terrain/18/429252/176945.terrain new file mode 100644 index 000000000..9e0e03c8e Binary files /dev/null and b/public/terrain/18/429252/176945.terrain differ diff --git a/public/terrain/18/429252/176946.terrain b/public/terrain/18/429252/176946.terrain new file mode 100644 index 000000000..6da0fe499 Binary files /dev/null and b/public/terrain/18/429252/176946.terrain differ diff --git a/public/terrain/18/429252/176947.terrain b/public/terrain/18/429252/176947.terrain new file mode 100644 index 000000000..2d5d0ce44 Binary files /dev/null and b/public/terrain/18/429252/176947.terrain differ diff --git a/public/terrain/18/429252/176948.terrain b/public/terrain/18/429252/176948.terrain new file mode 100644 index 000000000..7020973cc Binary files /dev/null and b/public/terrain/18/429252/176948.terrain differ diff --git a/public/terrain/18/429252/176949.terrain b/public/terrain/18/429252/176949.terrain new file mode 100644 index 000000000..328ec4003 Binary files /dev/null and b/public/terrain/18/429252/176949.terrain differ diff --git a/public/terrain/18/429252/176950.terrain b/public/terrain/18/429252/176950.terrain new file mode 100644 index 000000000..12e360fb0 Binary files /dev/null and b/public/terrain/18/429252/176950.terrain differ diff --git a/public/terrain/18/429252/176951.terrain b/public/terrain/18/429252/176951.terrain new file mode 100644 index 000000000..d464f1cd6 Binary files /dev/null and b/public/terrain/18/429252/176951.terrain differ diff --git a/public/terrain/18/429252/176952.terrain b/public/terrain/18/429252/176952.terrain new file mode 100644 index 000000000..0553fb6ea Binary files /dev/null and b/public/terrain/18/429252/176952.terrain differ diff --git a/public/terrain/18/429252/176953.terrain b/public/terrain/18/429252/176953.terrain new file mode 100644 index 000000000..a8f686696 Binary files /dev/null and b/public/terrain/18/429252/176953.terrain differ diff --git a/public/terrain/18/429252/176954.terrain b/public/terrain/18/429252/176954.terrain new file mode 100644 index 000000000..aa42062e5 Binary files /dev/null and b/public/terrain/18/429252/176954.terrain differ diff --git a/public/terrain/18/429252/176955.terrain b/public/terrain/18/429252/176955.terrain new file mode 100644 index 000000000..efe21f203 Binary files /dev/null and b/public/terrain/18/429252/176955.terrain differ diff --git a/public/terrain/18/429252/176956.terrain b/public/terrain/18/429252/176956.terrain new file mode 100644 index 000000000..d1bcb9b09 Binary files /dev/null and b/public/terrain/18/429252/176956.terrain differ diff --git a/public/terrain/18/429252/176957.terrain b/public/terrain/18/429252/176957.terrain new file mode 100644 index 000000000..9b33b5539 Binary files /dev/null and b/public/terrain/18/429252/176957.terrain differ diff --git a/public/terrain/18/429252/176958.terrain b/public/terrain/18/429252/176958.terrain new file mode 100644 index 000000000..4d409e77d Binary files /dev/null and b/public/terrain/18/429252/176958.terrain differ diff --git a/public/terrain/18/429252/176959.terrain b/public/terrain/18/429252/176959.terrain new file mode 100644 index 000000000..6f51c5224 Binary files /dev/null and b/public/terrain/18/429252/176959.terrain differ diff --git a/public/terrain/18/429252/176960.terrain b/public/terrain/18/429252/176960.terrain new file mode 100644 index 000000000..402e019d5 Binary files /dev/null and b/public/terrain/18/429252/176960.terrain differ diff --git a/public/terrain/18/429252/176961.terrain b/public/terrain/18/429252/176961.terrain new file mode 100644 index 000000000..2b978eeef Binary files /dev/null and b/public/terrain/18/429252/176961.terrain differ diff --git a/public/terrain/18/429252/176962.terrain b/public/terrain/18/429252/176962.terrain new file mode 100644 index 000000000..0e821adfc Binary files /dev/null and b/public/terrain/18/429252/176962.terrain differ diff --git a/public/terrain/18/429252/176963.terrain b/public/terrain/18/429252/176963.terrain new file mode 100644 index 000000000..7be086083 Binary files /dev/null and b/public/terrain/18/429252/176963.terrain differ diff --git a/public/terrain/18/429252/176964.terrain b/public/terrain/18/429252/176964.terrain new file mode 100644 index 000000000..f0152f1ab Binary files /dev/null and b/public/terrain/18/429252/176964.terrain differ diff --git a/public/terrain/18/429252/176965.terrain b/public/terrain/18/429252/176965.terrain new file mode 100644 index 000000000..32aa26663 Binary files /dev/null and b/public/terrain/18/429252/176965.terrain differ diff --git a/public/terrain/18/429252/176966.terrain b/public/terrain/18/429252/176966.terrain new file mode 100644 index 000000000..c81b2576e Binary files /dev/null and b/public/terrain/18/429252/176966.terrain differ diff --git a/public/terrain/18/429252/176967.terrain b/public/terrain/18/429252/176967.terrain new file mode 100644 index 000000000..27a4a4a6e Binary files /dev/null and b/public/terrain/18/429252/176967.terrain differ diff --git a/public/terrain/18/429252/176968.terrain b/public/terrain/18/429252/176968.terrain new file mode 100644 index 000000000..92fa4bd7e Binary files /dev/null and b/public/terrain/18/429252/176968.terrain differ diff --git a/public/terrain/18/429252/176969.terrain b/public/terrain/18/429252/176969.terrain new file mode 100644 index 000000000..2b26aff90 Binary files /dev/null and b/public/terrain/18/429252/176969.terrain differ diff --git a/public/terrain/18/429252/176970.terrain b/public/terrain/18/429252/176970.terrain new file mode 100644 index 000000000..586db6a83 Binary files /dev/null and b/public/terrain/18/429252/176970.terrain differ diff --git a/public/terrain/18/429252/176971.terrain b/public/terrain/18/429252/176971.terrain new file mode 100644 index 000000000..565c2e50e Binary files /dev/null and b/public/terrain/18/429252/176971.terrain differ diff --git a/public/terrain/18/429252/176972.terrain b/public/terrain/18/429252/176972.terrain new file mode 100644 index 000000000..687b7e643 Binary files /dev/null and b/public/terrain/18/429252/176972.terrain differ diff --git a/public/terrain/18/429252/176973.terrain b/public/terrain/18/429252/176973.terrain new file mode 100644 index 000000000..29c6653f5 Binary files /dev/null and b/public/terrain/18/429252/176973.terrain differ diff --git a/public/terrain/18/429252/176974.terrain b/public/terrain/18/429252/176974.terrain new file mode 100644 index 000000000..2552bb722 Binary files /dev/null and b/public/terrain/18/429252/176974.terrain differ diff --git a/public/terrain/18/429252/176975.terrain b/public/terrain/18/429252/176975.terrain new file mode 100644 index 000000000..dc155a23f Binary files /dev/null and b/public/terrain/18/429252/176975.terrain differ diff --git a/public/terrain/18/429252/176976.terrain b/public/terrain/18/429252/176976.terrain new file mode 100644 index 000000000..3b53106dc Binary files /dev/null and b/public/terrain/18/429252/176976.terrain differ diff --git a/public/terrain/18/429252/176977.terrain b/public/terrain/18/429252/176977.terrain new file mode 100644 index 000000000..71c28b0e7 Binary files /dev/null and b/public/terrain/18/429252/176977.terrain differ diff --git a/public/terrain/18/429252/176978.terrain b/public/terrain/18/429252/176978.terrain new file mode 100644 index 000000000..7f2d6a985 Binary files /dev/null and b/public/terrain/18/429252/176978.terrain differ diff --git a/public/terrain/18/429252/176979.terrain b/public/terrain/18/429252/176979.terrain new file mode 100644 index 000000000..84219a440 Binary files /dev/null and b/public/terrain/18/429252/176979.terrain differ diff --git a/public/terrain/18/429252/176980.terrain b/public/terrain/18/429252/176980.terrain new file mode 100644 index 000000000..e5a2f1038 Binary files /dev/null and b/public/terrain/18/429252/176980.terrain differ diff --git a/public/terrain/18/429252/176981.terrain b/public/terrain/18/429252/176981.terrain new file mode 100644 index 000000000..c04e0cdb1 Binary files /dev/null and b/public/terrain/18/429252/176981.terrain differ diff --git a/public/terrain/18/429252/176982.terrain b/public/terrain/18/429252/176982.terrain new file mode 100644 index 000000000..6b6c3c564 Binary files /dev/null and b/public/terrain/18/429252/176982.terrain differ diff --git a/public/terrain/18/429252/176983.terrain b/public/terrain/18/429252/176983.terrain new file mode 100644 index 000000000..3738f1ee2 Binary files /dev/null and b/public/terrain/18/429252/176983.terrain differ diff --git a/public/terrain/18/429252/176984.terrain b/public/terrain/18/429252/176984.terrain new file mode 100644 index 000000000..c310ef6c2 Binary files /dev/null and b/public/terrain/18/429252/176984.terrain differ diff --git a/public/terrain/18/429252/176985.terrain b/public/terrain/18/429252/176985.terrain new file mode 100644 index 000000000..9bb083804 Binary files /dev/null and b/public/terrain/18/429252/176985.terrain differ diff --git a/public/terrain/18/429252/176986.terrain b/public/terrain/18/429252/176986.terrain new file mode 100644 index 000000000..cd8545596 Binary files /dev/null and b/public/terrain/18/429252/176986.terrain differ diff --git a/public/terrain/18/429252/176987.terrain b/public/terrain/18/429252/176987.terrain new file mode 100644 index 000000000..dd5850498 Binary files /dev/null and b/public/terrain/18/429252/176987.terrain differ diff --git a/public/terrain/18/429252/176988.terrain b/public/terrain/18/429252/176988.terrain new file mode 100644 index 000000000..3538da5dc Binary files /dev/null and b/public/terrain/18/429252/176988.terrain differ diff --git a/public/terrain/18/429252/176989.terrain b/public/terrain/18/429252/176989.terrain new file mode 100644 index 000000000..69fc283ac Binary files /dev/null and b/public/terrain/18/429252/176989.terrain differ diff --git a/public/terrain/18/429252/176990.terrain b/public/terrain/18/429252/176990.terrain new file mode 100644 index 000000000..56f001753 Binary files /dev/null and b/public/terrain/18/429252/176990.terrain differ diff --git a/public/terrain/18/429252/176991.terrain b/public/terrain/18/429252/176991.terrain new file mode 100644 index 000000000..de881f993 Binary files /dev/null and b/public/terrain/18/429252/176991.terrain differ diff --git a/public/terrain/18/429252/176992.terrain b/public/terrain/18/429252/176992.terrain new file mode 100644 index 000000000..6c542a5b3 Binary files /dev/null and b/public/terrain/18/429252/176992.terrain differ diff --git a/public/terrain/18/429252/176993.terrain b/public/terrain/18/429252/176993.terrain new file mode 100644 index 000000000..e634d6a0b Binary files /dev/null and b/public/terrain/18/429252/176993.terrain differ diff --git a/public/terrain/18/429252/176994.terrain b/public/terrain/18/429252/176994.terrain new file mode 100644 index 000000000..adddb17dc Binary files /dev/null and b/public/terrain/18/429252/176994.terrain differ diff --git a/public/terrain/18/429252/176995.terrain b/public/terrain/18/429252/176995.terrain new file mode 100644 index 000000000..ba447e9bb Binary files /dev/null and b/public/terrain/18/429252/176995.terrain differ diff --git a/public/terrain/18/429252/176996.terrain b/public/terrain/18/429252/176996.terrain new file mode 100644 index 000000000..116273e1c Binary files /dev/null and b/public/terrain/18/429252/176996.terrain differ diff --git a/public/terrain/18/429252/176997.terrain b/public/terrain/18/429252/176997.terrain new file mode 100644 index 000000000..6026d38d9 Binary files /dev/null and b/public/terrain/18/429252/176997.terrain differ diff --git a/public/terrain/18/429252/176998.terrain b/public/terrain/18/429252/176998.terrain new file mode 100644 index 000000000..67567a47a Binary files /dev/null and b/public/terrain/18/429252/176998.terrain differ diff --git a/public/terrain/18/429252/176999.terrain b/public/terrain/18/429252/176999.terrain new file mode 100644 index 000000000..bbe7fed50 Binary files /dev/null and b/public/terrain/18/429252/176999.terrain differ diff --git a/public/terrain/18/429252/177000.terrain b/public/terrain/18/429252/177000.terrain new file mode 100644 index 000000000..600d9fa6c Binary files /dev/null and b/public/terrain/18/429252/177000.terrain differ diff --git a/public/terrain/18/429252/177001.terrain b/public/terrain/18/429252/177001.terrain new file mode 100644 index 000000000..94308b8e1 Binary files /dev/null and b/public/terrain/18/429252/177001.terrain differ diff --git a/public/terrain/18/429252/177002.terrain b/public/terrain/18/429252/177002.terrain new file mode 100644 index 000000000..7aea68a6b Binary files /dev/null and b/public/terrain/18/429252/177002.terrain differ diff --git a/public/terrain/18/429252/177003.terrain b/public/terrain/18/429252/177003.terrain new file mode 100644 index 000000000..c789b7c35 Binary files /dev/null and b/public/terrain/18/429252/177003.terrain differ diff --git a/public/terrain/18/429252/177004.terrain b/public/terrain/18/429252/177004.terrain new file mode 100644 index 000000000..9998f8d0f Binary files /dev/null and b/public/terrain/18/429252/177004.terrain differ diff --git a/public/terrain/18/429252/177005.terrain b/public/terrain/18/429252/177005.terrain new file mode 100644 index 000000000..b8b1f6f49 Binary files /dev/null and b/public/terrain/18/429252/177005.terrain differ diff --git a/public/terrain/18/429252/177006.terrain b/public/terrain/18/429252/177006.terrain new file mode 100644 index 000000000..b66318326 Binary files /dev/null and b/public/terrain/18/429252/177006.terrain differ diff --git a/public/terrain/18/429252/177007.terrain b/public/terrain/18/429252/177007.terrain new file mode 100644 index 000000000..0ea00b825 Binary files /dev/null and b/public/terrain/18/429252/177007.terrain differ diff --git a/public/terrain/18/429252/177008.terrain b/public/terrain/18/429252/177008.terrain new file mode 100644 index 000000000..b3d734fed Binary files /dev/null and b/public/terrain/18/429252/177008.terrain differ diff --git a/public/terrain/18/429252/177009.terrain b/public/terrain/18/429252/177009.terrain new file mode 100644 index 000000000..dc01b4d44 Binary files /dev/null and b/public/terrain/18/429252/177009.terrain differ diff --git a/public/terrain/18/429252/177010.terrain b/public/terrain/18/429252/177010.terrain new file mode 100644 index 000000000..79f0db2f9 Binary files /dev/null and b/public/terrain/18/429252/177010.terrain differ diff --git a/public/terrain/18/429252/177011.terrain b/public/terrain/18/429252/177011.terrain new file mode 100644 index 000000000..65f8f3abd Binary files /dev/null and b/public/terrain/18/429252/177011.terrain differ diff --git a/public/terrain/18/429252/177012.terrain b/public/terrain/18/429252/177012.terrain new file mode 100644 index 000000000..19099938c Binary files /dev/null and b/public/terrain/18/429252/177012.terrain differ diff --git a/public/terrain/18/429252/177013.terrain b/public/terrain/18/429252/177013.terrain new file mode 100644 index 000000000..034bad556 Binary files /dev/null and b/public/terrain/18/429252/177013.terrain differ diff --git a/public/terrain/18/429252/177014.terrain b/public/terrain/18/429252/177014.terrain new file mode 100644 index 000000000..158e2c3ad Binary files /dev/null and b/public/terrain/18/429252/177014.terrain differ diff --git a/public/terrain/18/429252/177015.terrain b/public/terrain/18/429252/177015.terrain new file mode 100644 index 000000000..15a2b447a Binary files /dev/null and b/public/terrain/18/429252/177015.terrain differ diff --git a/public/terrain/18/429252/177016.terrain b/public/terrain/18/429252/177016.terrain new file mode 100644 index 000000000..118f5b56c Binary files /dev/null and b/public/terrain/18/429252/177016.terrain differ diff --git a/public/terrain/18/429252/177017.terrain b/public/terrain/18/429252/177017.terrain new file mode 100644 index 000000000..084ff6776 Binary files /dev/null and b/public/terrain/18/429252/177017.terrain differ diff --git a/public/terrain/18/429252/177018.terrain b/public/terrain/18/429252/177018.terrain new file mode 100644 index 000000000..aa2fa7f87 Binary files /dev/null and b/public/terrain/18/429252/177018.terrain differ diff --git a/public/terrain/18/429252/177019.terrain b/public/terrain/18/429252/177019.terrain new file mode 100644 index 000000000..79fad100e Binary files /dev/null and b/public/terrain/18/429252/177019.terrain differ diff --git a/public/terrain/18/429252/177020.terrain b/public/terrain/18/429252/177020.terrain new file mode 100644 index 000000000..282d526a6 Binary files /dev/null and b/public/terrain/18/429252/177020.terrain differ diff --git a/public/terrain/18/429252/177021.terrain b/public/terrain/18/429252/177021.terrain new file mode 100644 index 000000000..6ae8b1b4a Binary files /dev/null and b/public/terrain/18/429252/177021.terrain differ diff --git a/public/terrain/18/429252/177022.terrain b/public/terrain/18/429252/177022.terrain new file mode 100644 index 000000000..fcb17d5fe Binary files /dev/null and b/public/terrain/18/429252/177022.terrain differ diff --git a/public/terrain/18/429252/177023.terrain b/public/terrain/18/429252/177023.terrain new file mode 100644 index 000000000..254e3f664 Binary files /dev/null and b/public/terrain/18/429252/177023.terrain differ diff --git a/public/terrain/18/429252/177024.terrain b/public/terrain/18/429252/177024.terrain new file mode 100644 index 000000000..472b64ae5 Binary files /dev/null and b/public/terrain/18/429252/177024.terrain differ diff --git a/public/terrain/18/429252/177025.terrain b/public/terrain/18/429252/177025.terrain new file mode 100644 index 000000000..c13bf81b5 Binary files /dev/null and b/public/terrain/18/429252/177025.terrain differ diff --git a/public/terrain/18/429252/177026.terrain b/public/terrain/18/429252/177026.terrain new file mode 100644 index 000000000..68d09eca0 Binary files /dev/null and b/public/terrain/18/429252/177026.terrain differ diff --git a/public/terrain/18/429252/177027.terrain b/public/terrain/18/429252/177027.terrain new file mode 100644 index 000000000..fbe12c16a Binary files /dev/null and b/public/terrain/18/429252/177027.terrain differ diff --git a/public/terrain/18/429252/177028.terrain b/public/terrain/18/429252/177028.terrain new file mode 100644 index 000000000..38482d11e Binary files /dev/null and b/public/terrain/18/429252/177028.terrain differ diff --git a/public/terrain/18/429252/177029.terrain b/public/terrain/18/429252/177029.terrain new file mode 100644 index 000000000..562190e08 Binary files /dev/null and b/public/terrain/18/429252/177029.terrain differ diff --git a/public/terrain/18/429253/176871.terrain b/public/terrain/18/429253/176871.terrain new file mode 100644 index 000000000..d67dc4de6 Binary files /dev/null and b/public/terrain/18/429253/176871.terrain differ diff --git a/public/terrain/18/429253/176872.terrain b/public/terrain/18/429253/176872.terrain new file mode 100644 index 000000000..2573fa7a0 Binary files /dev/null and b/public/terrain/18/429253/176872.terrain differ diff --git a/public/terrain/18/429253/176873.terrain b/public/terrain/18/429253/176873.terrain new file mode 100644 index 000000000..6d2e7d359 Binary files /dev/null and b/public/terrain/18/429253/176873.terrain differ diff --git a/public/terrain/18/429253/176874.terrain b/public/terrain/18/429253/176874.terrain new file mode 100644 index 000000000..f4cd2fd44 Binary files /dev/null and b/public/terrain/18/429253/176874.terrain differ diff --git a/public/terrain/18/429253/176875.terrain b/public/terrain/18/429253/176875.terrain new file mode 100644 index 000000000..817d8de82 Binary files /dev/null and b/public/terrain/18/429253/176875.terrain differ diff --git a/public/terrain/18/429253/176876.terrain b/public/terrain/18/429253/176876.terrain new file mode 100644 index 000000000..f3f8f81bf Binary files /dev/null and b/public/terrain/18/429253/176876.terrain differ diff --git a/public/terrain/18/429253/176877.terrain b/public/terrain/18/429253/176877.terrain new file mode 100644 index 000000000..6546a2c00 Binary files /dev/null and b/public/terrain/18/429253/176877.terrain differ diff --git a/public/terrain/18/429253/176878.terrain b/public/terrain/18/429253/176878.terrain new file mode 100644 index 000000000..9bcba4eaa Binary files /dev/null and b/public/terrain/18/429253/176878.terrain differ diff --git a/public/terrain/18/429253/176879.terrain b/public/terrain/18/429253/176879.terrain new file mode 100644 index 000000000..8859ecdf5 Binary files /dev/null and b/public/terrain/18/429253/176879.terrain differ diff --git a/public/terrain/18/429253/176880.terrain b/public/terrain/18/429253/176880.terrain new file mode 100644 index 000000000..2cb1e959e Binary files /dev/null and b/public/terrain/18/429253/176880.terrain differ diff --git a/public/terrain/18/429253/176881.terrain b/public/terrain/18/429253/176881.terrain new file mode 100644 index 000000000..9a0856d79 Binary files /dev/null and b/public/terrain/18/429253/176881.terrain differ diff --git a/public/terrain/18/429253/176882.terrain b/public/terrain/18/429253/176882.terrain new file mode 100644 index 000000000..9a6956dac Binary files /dev/null and b/public/terrain/18/429253/176882.terrain differ diff --git a/public/terrain/18/429253/176883.terrain b/public/terrain/18/429253/176883.terrain new file mode 100644 index 000000000..28fe663ca Binary files /dev/null and b/public/terrain/18/429253/176883.terrain differ diff --git a/public/terrain/18/429253/176884.terrain b/public/terrain/18/429253/176884.terrain new file mode 100644 index 000000000..b0d0904db Binary files /dev/null and b/public/terrain/18/429253/176884.terrain differ diff --git a/public/terrain/18/429253/176885.terrain b/public/terrain/18/429253/176885.terrain new file mode 100644 index 000000000..d5bdfdfe9 Binary files /dev/null and b/public/terrain/18/429253/176885.terrain differ diff --git a/public/terrain/18/429253/176886.terrain b/public/terrain/18/429253/176886.terrain new file mode 100644 index 000000000..1cd66a8c4 Binary files /dev/null and b/public/terrain/18/429253/176886.terrain differ diff --git a/public/terrain/18/429253/176887.terrain b/public/terrain/18/429253/176887.terrain new file mode 100644 index 000000000..a14e1ea2f Binary files /dev/null and b/public/terrain/18/429253/176887.terrain differ diff --git a/public/terrain/18/429253/176888.terrain b/public/terrain/18/429253/176888.terrain new file mode 100644 index 000000000..e8962c1ae Binary files /dev/null and b/public/terrain/18/429253/176888.terrain differ diff --git a/public/terrain/18/429253/176889.terrain b/public/terrain/18/429253/176889.terrain new file mode 100644 index 000000000..80e38891e Binary files /dev/null and b/public/terrain/18/429253/176889.terrain differ diff --git a/public/terrain/18/429253/176890.terrain b/public/terrain/18/429253/176890.terrain new file mode 100644 index 000000000..585adcb48 Binary files /dev/null and b/public/terrain/18/429253/176890.terrain differ diff --git a/public/terrain/18/429253/176891.terrain b/public/terrain/18/429253/176891.terrain new file mode 100644 index 000000000..7c5a2fefb Binary files /dev/null and b/public/terrain/18/429253/176891.terrain differ diff --git a/public/terrain/18/429253/176892.terrain b/public/terrain/18/429253/176892.terrain new file mode 100644 index 000000000..ae6bfa5cf Binary files /dev/null and b/public/terrain/18/429253/176892.terrain differ diff --git a/public/terrain/18/429253/176893.terrain b/public/terrain/18/429253/176893.terrain new file mode 100644 index 000000000..e6ef888dd Binary files /dev/null and b/public/terrain/18/429253/176893.terrain differ diff --git a/public/terrain/18/429253/176894.terrain b/public/terrain/18/429253/176894.terrain new file mode 100644 index 000000000..682c51674 Binary files /dev/null and b/public/terrain/18/429253/176894.terrain differ diff --git a/public/terrain/18/429253/176895.terrain b/public/terrain/18/429253/176895.terrain new file mode 100644 index 000000000..31dfdd343 Binary files /dev/null and b/public/terrain/18/429253/176895.terrain differ diff --git a/public/terrain/18/429253/176896.terrain b/public/terrain/18/429253/176896.terrain new file mode 100644 index 000000000..c35847fa4 Binary files /dev/null and b/public/terrain/18/429253/176896.terrain differ diff --git a/public/terrain/18/429253/176897.terrain b/public/terrain/18/429253/176897.terrain new file mode 100644 index 000000000..82fb7cf86 Binary files /dev/null and b/public/terrain/18/429253/176897.terrain differ diff --git a/public/terrain/18/429253/176898.terrain b/public/terrain/18/429253/176898.terrain new file mode 100644 index 000000000..8deeadd53 Binary files /dev/null and b/public/terrain/18/429253/176898.terrain differ diff --git a/public/terrain/18/429253/176899.terrain b/public/terrain/18/429253/176899.terrain new file mode 100644 index 000000000..28f21d632 Binary files /dev/null and b/public/terrain/18/429253/176899.terrain differ diff --git a/public/terrain/18/429253/176900.terrain b/public/terrain/18/429253/176900.terrain new file mode 100644 index 000000000..7cdc22c97 Binary files /dev/null and b/public/terrain/18/429253/176900.terrain differ diff --git a/public/terrain/18/429253/176901.terrain b/public/terrain/18/429253/176901.terrain new file mode 100644 index 000000000..7167b58e3 Binary files /dev/null and b/public/terrain/18/429253/176901.terrain differ diff --git a/public/terrain/18/429253/176902.terrain b/public/terrain/18/429253/176902.terrain new file mode 100644 index 000000000..f81a7671c Binary files /dev/null and b/public/terrain/18/429253/176902.terrain differ diff --git a/public/terrain/18/429253/176903.terrain b/public/terrain/18/429253/176903.terrain new file mode 100644 index 000000000..aa633d919 Binary files /dev/null and b/public/terrain/18/429253/176903.terrain differ diff --git a/public/terrain/18/429253/176904.terrain b/public/terrain/18/429253/176904.terrain new file mode 100644 index 000000000..913403cae Binary files /dev/null and b/public/terrain/18/429253/176904.terrain differ diff --git a/public/terrain/18/429253/176905.terrain b/public/terrain/18/429253/176905.terrain new file mode 100644 index 000000000..0dc09ffea Binary files /dev/null and b/public/terrain/18/429253/176905.terrain differ diff --git a/public/terrain/18/429253/176906.terrain b/public/terrain/18/429253/176906.terrain new file mode 100644 index 000000000..edf00e15c Binary files /dev/null and b/public/terrain/18/429253/176906.terrain differ diff --git a/public/terrain/18/429253/176907.terrain b/public/terrain/18/429253/176907.terrain new file mode 100644 index 000000000..cce748ebd Binary files /dev/null and b/public/terrain/18/429253/176907.terrain differ diff --git a/public/terrain/18/429253/176908.terrain b/public/terrain/18/429253/176908.terrain new file mode 100644 index 000000000..e0d9244d2 Binary files /dev/null and b/public/terrain/18/429253/176908.terrain differ diff --git a/public/terrain/18/429253/176909.terrain b/public/terrain/18/429253/176909.terrain new file mode 100644 index 000000000..2b4c84dc1 Binary files /dev/null and b/public/terrain/18/429253/176909.terrain differ diff --git a/public/terrain/18/429253/176910.terrain b/public/terrain/18/429253/176910.terrain new file mode 100644 index 000000000..918d3e6dd Binary files /dev/null and b/public/terrain/18/429253/176910.terrain differ diff --git a/public/terrain/18/429253/176911.terrain b/public/terrain/18/429253/176911.terrain new file mode 100644 index 000000000..60490b556 Binary files /dev/null and b/public/terrain/18/429253/176911.terrain differ diff --git a/public/terrain/18/429253/176912.terrain b/public/terrain/18/429253/176912.terrain new file mode 100644 index 000000000..9c85df06f Binary files /dev/null and b/public/terrain/18/429253/176912.terrain differ diff --git a/public/terrain/18/429253/176913.terrain b/public/terrain/18/429253/176913.terrain new file mode 100644 index 000000000..0a764e08e Binary files /dev/null and b/public/terrain/18/429253/176913.terrain differ diff --git a/public/terrain/18/429253/176914.terrain b/public/terrain/18/429253/176914.terrain new file mode 100644 index 000000000..57373c243 Binary files /dev/null and b/public/terrain/18/429253/176914.terrain differ diff --git a/public/terrain/18/429253/176915.terrain b/public/terrain/18/429253/176915.terrain new file mode 100644 index 000000000..d1242e8db Binary files /dev/null and b/public/terrain/18/429253/176915.terrain differ diff --git a/public/terrain/18/429253/176916.terrain b/public/terrain/18/429253/176916.terrain new file mode 100644 index 000000000..baa25d204 Binary files /dev/null and b/public/terrain/18/429253/176916.terrain differ diff --git a/public/terrain/18/429253/176917.terrain b/public/terrain/18/429253/176917.terrain new file mode 100644 index 000000000..fb4ec1254 Binary files /dev/null and b/public/terrain/18/429253/176917.terrain differ diff --git a/public/terrain/18/429253/176918.terrain b/public/terrain/18/429253/176918.terrain new file mode 100644 index 000000000..4a78e125f Binary files /dev/null and b/public/terrain/18/429253/176918.terrain differ diff --git a/public/terrain/18/429253/176919.terrain b/public/terrain/18/429253/176919.terrain new file mode 100644 index 000000000..2e2570b82 Binary files /dev/null and b/public/terrain/18/429253/176919.terrain differ diff --git a/public/terrain/18/429253/176920.terrain b/public/terrain/18/429253/176920.terrain new file mode 100644 index 000000000..944d55903 Binary files /dev/null and b/public/terrain/18/429253/176920.terrain differ diff --git a/public/terrain/18/429253/176921.terrain b/public/terrain/18/429253/176921.terrain new file mode 100644 index 000000000..5db3483d3 Binary files /dev/null and b/public/terrain/18/429253/176921.terrain differ diff --git a/public/terrain/18/429253/176922.terrain b/public/terrain/18/429253/176922.terrain new file mode 100644 index 000000000..4f2465991 Binary files /dev/null and b/public/terrain/18/429253/176922.terrain differ diff --git a/public/terrain/18/429253/176923.terrain b/public/terrain/18/429253/176923.terrain new file mode 100644 index 000000000..d377caf44 Binary files /dev/null and b/public/terrain/18/429253/176923.terrain differ diff --git a/public/terrain/18/429253/176924.terrain b/public/terrain/18/429253/176924.terrain new file mode 100644 index 000000000..585ca59d2 Binary files /dev/null and b/public/terrain/18/429253/176924.terrain differ diff --git a/public/terrain/18/429253/176925.terrain b/public/terrain/18/429253/176925.terrain new file mode 100644 index 000000000..cbbda3cd5 Binary files /dev/null and b/public/terrain/18/429253/176925.terrain differ diff --git a/public/terrain/18/429253/176926.terrain b/public/terrain/18/429253/176926.terrain new file mode 100644 index 000000000..01bd38db5 Binary files /dev/null and b/public/terrain/18/429253/176926.terrain differ diff --git a/public/terrain/18/429253/176927.terrain b/public/terrain/18/429253/176927.terrain new file mode 100644 index 000000000..06aee90bf Binary files /dev/null and b/public/terrain/18/429253/176927.terrain differ diff --git a/public/terrain/18/429253/176928.terrain b/public/terrain/18/429253/176928.terrain new file mode 100644 index 000000000..eb085cb76 Binary files /dev/null and b/public/terrain/18/429253/176928.terrain differ diff --git a/public/terrain/18/429253/176929.terrain b/public/terrain/18/429253/176929.terrain new file mode 100644 index 000000000..dde78d52d Binary files /dev/null and b/public/terrain/18/429253/176929.terrain differ diff --git a/public/terrain/18/429253/176930.terrain b/public/terrain/18/429253/176930.terrain new file mode 100644 index 000000000..c66fd163f Binary files /dev/null and b/public/terrain/18/429253/176930.terrain differ diff --git a/public/terrain/18/429253/176931.terrain b/public/terrain/18/429253/176931.terrain new file mode 100644 index 000000000..63113a199 Binary files /dev/null and b/public/terrain/18/429253/176931.terrain differ diff --git a/public/terrain/18/429253/176932.terrain b/public/terrain/18/429253/176932.terrain new file mode 100644 index 000000000..8c6651c1f Binary files /dev/null and b/public/terrain/18/429253/176932.terrain differ diff --git a/public/terrain/18/429253/176933.terrain b/public/terrain/18/429253/176933.terrain new file mode 100644 index 000000000..4c29d23e2 Binary files /dev/null and b/public/terrain/18/429253/176933.terrain differ diff --git a/public/terrain/18/429253/176934.terrain b/public/terrain/18/429253/176934.terrain new file mode 100644 index 000000000..a9606fb47 Binary files /dev/null and b/public/terrain/18/429253/176934.terrain differ diff --git a/public/terrain/18/429253/176935.terrain b/public/terrain/18/429253/176935.terrain new file mode 100644 index 000000000..4ec976bab Binary files /dev/null and b/public/terrain/18/429253/176935.terrain differ diff --git a/public/terrain/18/429253/176936.terrain b/public/terrain/18/429253/176936.terrain new file mode 100644 index 000000000..b309562dc Binary files /dev/null and b/public/terrain/18/429253/176936.terrain differ diff --git a/public/terrain/18/429253/176937.terrain b/public/terrain/18/429253/176937.terrain new file mode 100644 index 000000000..3eb12161b Binary files /dev/null and b/public/terrain/18/429253/176937.terrain differ diff --git a/public/terrain/18/429253/176938.terrain b/public/terrain/18/429253/176938.terrain new file mode 100644 index 000000000..a7e97ab66 Binary files /dev/null and b/public/terrain/18/429253/176938.terrain differ diff --git a/public/terrain/18/429253/176939.terrain b/public/terrain/18/429253/176939.terrain new file mode 100644 index 000000000..991e293fd Binary files /dev/null and b/public/terrain/18/429253/176939.terrain differ diff --git a/public/terrain/18/429253/176940.terrain b/public/terrain/18/429253/176940.terrain new file mode 100644 index 000000000..5c71c052e Binary files /dev/null and b/public/terrain/18/429253/176940.terrain differ diff --git a/public/terrain/18/429253/176941.terrain b/public/terrain/18/429253/176941.terrain new file mode 100644 index 000000000..a87073cba Binary files /dev/null and b/public/terrain/18/429253/176941.terrain differ diff --git a/public/terrain/18/429253/176942.terrain b/public/terrain/18/429253/176942.terrain new file mode 100644 index 000000000..0371ea203 Binary files /dev/null and b/public/terrain/18/429253/176942.terrain differ diff --git a/public/terrain/18/429253/176943.terrain b/public/terrain/18/429253/176943.terrain new file mode 100644 index 000000000..998aef55a Binary files /dev/null and b/public/terrain/18/429253/176943.terrain differ diff --git a/public/terrain/18/429253/176944.terrain b/public/terrain/18/429253/176944.terrain new file mode 100644 index 000000000..e807f4127 Binary files /dev/null and b/public/terrain/18/429253/176944.terrain differ diff --git a/public/terrain/18/429253/176945.terrain b/public/terrain/18/429253/176945.terrain new file mode 100644 index 000000000..ffd7000e9 Binary files /dev/null and b/public/terrain/18/429253/176945.terrain differ diff --git a/public/terrain/18/429253/176946.terrain b/public/terrain/18/429253/176946.terrain new file mode 100644 index 000000000..4daacb611 Binary files /dev/null and b/public/terrain/18/429253/176946.terrain differ diff --git a/public/terrain/18/429253/176947.terrain b/public/terrain/18/429253/176947.terrain new file mode 100644 index 000000000..98609cd47 Binary files /dev/null and b/public/terrain/18/429253/176947.terrain differ diff --git a/public/terrain/18/429253/176948.terrain b/public/terrain/18/429253/176948.terrain new file mode 100644 index 000000000..831104536 Binary files /dev/null and b/public/terrain/18/429253/176948.terrain differ diff --git a/public/terrain/18/429253/176949.terrain b/public/terrain/18/429253/176949.terrain new file mode 100644 index 000000000..d8eeae27a Binary files /dev/null and b/public/terrain/18/429253/176949.terrain differ diff --git a/public/terrain/18/429253/176950.terrain b/public/terrain/18/429253/176950.terrain new file mode 100644 index 000000000..485fbdf74 Binary files /dev/null and b/public/terrain/18/429253/176950.terrain differ diff --git a/public/terrain/18/429253/176951.terrain b/public/terrain/18/429253/176951.terrain new file mode 100644 index 000000000..f441179ca Binary files /dev/null and b/public/terrain/18/429253/176951.terrain differ diff --git a/public/terrain/18/429253/176952.terrain b/public/terrain/18/429253/176952.terrain new file mode 100644 index 000000000..3386feac5 Binary files /dev/null and b/public/terrain/18/429253/176952.terrain differ diff --git a/public/terrain/18/429253/176953.terrain b/public/terrain/18/429253/176953.terrain new file mode 100644 index 000000000..ff239e72a Binary files /dev/null and b/public/terrain/18/429253/176953.terrain differ diff --git a/public/terrain/18/429253/176954.terrain b/public/terrain/18/429253/176954.terrain new file mode 100644 index 000000000..82b164eb5 Binary files /dev/null and b/public/terrain/18/429253/176954.terrain differ diff --git a/public/terrain/18/429253/176955.terrain b/public/terrain/18/429253/176955.terrain new file mode 100644 index 000000000..5a26a5437 Binary files /dev/null and b/public/terrain/18/429253/176955.terrain differ diff --git a/public/terrain/18/429253/176956.terrain b/public/terrain/18/429253/176956.terrain new file mode 100644 index 000000000..eb4683e86 Binary files /dev/null and b/public/terrain/18/429253/176956.terrain differ diff --git a/public/terrain/18/429253/176957.terrain b/public/terrain/18/429253/176957.terrain new file mode 100644 index 000000000..291212530 Binary files /dev/null and b/public/terrain/18/429253/176957.terrain differ diff --git a/public/terrain/18/429253/176958.terrain b/public/terrain/18/429253/176958.terrain new file mode 100644 index 000000000..b3c22face Binary files /dev/null and b/public/terrain/18/429253/176958.terrain differ diff --git a/public/terrain/18/429253/176959.terrain b/public/terrain/18/429253/176959.terrain new file mode 100644 index 000000000..1015b163b Binary files /dev/null and b/public/terrain/18/429253/176959.terrain differ diff --git a/public/terrain/18/429253/176960.terrain b/public/terrain/18/429253/176960.terrain new file mode 100644 index 000000000..8fb9eedd9 Binary files /dev/null and b/public/terrain/18/429253/176960.terrain differ diff --git a/public/terrain/18/429253/176961.terrain b/public/terrain/18/429253/176961.terrain new file mode 100644 index 000000000..59d502b40 Binary files /dev/null and b/public/terrain/18/429253/176961.terrain differ diff --git a/public/terrain/18/429253/176962.terrain b/public/terrain/18/429253/176962.terrain new file mode 100644 index 000000000..90f0d427e Binary files /dev/null and b/public/terrain/18/429253/176962.terrain differ diff --git a/public/terrain/18/429253/176963.terrain b/public/terrain/18/429253/176963.terrain new file mode 100644 index 000000000..ad8b68b0d Binary files /dev/null and b/public/terrain/18/429253/176963.terrain differ diff --git a/public/terrain/18/429253/176964.terrain b/public/terrain/18/429253/176964.terrain new file mode 100644 index 000000000..da16278a9 Binary files /dev/null and b/public/terrain/18/429253/176964.terrain differ diff --git a/public/terrain/18/429253/176965.terrain b/public/terrain/18/429253/176965.terrain new file mode 100644 index 000000000..bb1b59b9b Binary files /dev/null and b/public/terrain/18/429253/176965.terrain differ diff --git a/public/terrain/18/429253/176966.terrain b/public/terrain/18/429253/176966.terrain new file mode 100644 index 000000000..86542f464 Binary files /dev/null and b/public/terrain/18/429253/176966.terrain differ diff --git a/public/terrain/18/429253/176967.terrain b/public/terrain/18/429253/176967.terrain new file mode 100644 index 000000000..10d0097bf Binary files /dev/null and b/public/terrain/18/429253/176967.terrain differ diff --git a/public/terrain/18/429253/176968.terrain b/public/terrain/18/429253/176968.terrain new file mode 100644 index 000000000..49281f226 Binary files /dev/null and b/public/terrain/18/429253/176968.terrain differ diff --git a/public/terrain/18/429253/176969.terrain b/public/terrain/18/429253/176969.terrain new file mode 100644 index 000000000..9f119a4f8 Binary files /dev/null and b/public/terrain/18/429253/176969.terrain differ diff --git a/public/terrain/18/429253/176970.terrain b/public/terrain/18/429253/176970.terrain new file mode 100644 index 000000000..93bcdcb79 Binary files /dev/null and b/public/terrain/18/429253/176970.terrain differ diff --git a/public/terrain/18/429253/176971.terrain b/public/terrain/18/429253/176971.terrain new file mode 100644 index 000000000..db9fe910a Binary files /dev/null and b/public/terrain/18/429253/176971.terrain differ diff --git a/public/terrain/18/429253/176972.terrain b/public/terrain/18/429253/176972.terrain new file mode 100644 index 000000000..0d5b7452b Binary files /dev/null and b/public/terrain/18/429253/176972.terrain differ diff --git a/public/terrain/18/429253/176973.terrain b/public/terrain/18/429253/176973.terrain new file mode 100644 index 000000000..31dda747d Binary files /dev/null and b/public/terrain/18/429253/176973.terrain differ diff --git a/public/terrain/18/429253/176974.terrain b/public/terrain/18/429253/176974.terrain new file mode 100644 index 000000000..f0ba81142 Binary files /dev/null and b/public/terrain/18/429253/176974.terrain differ diff --git a/public/terrain/18/429253/176975.terrain b/public/terrain/18/429253/176975.terrain new file mode 100644 index 000000000..38fc15c3c Binary files /dev/null and b/public/terrain/18/429253/176975.terrain differ diff --git a/public/terrain/18/429253/176976.terrain b/public/terrain/18/429253/176976.terrain new file mode 100644 index 000000000..abb13b6db Binary files /dev/null and b/public/terrain/18/429253/176976.terrain differ diff --git a/public/terrain/18/429253/176977.terrain b/public/terrain/18/429253/176977.terrain new file mode 100644 index 000000000..3c638ab5c Binary files /dev/null and b/public/terrain/18/429253/176977.terrain differ diff --git a/public/terrain/18/429253/176978.terrain b/public/terrain/18/429253/176978.terrain new file mode 100644 index 000000000..eaaea3274 Binary files /dev/null and b/public/terrain/18/429253/176978.terrain differ diff --git a/public/terrain/18/429253/176979.terrain b/public/terrain/18/429253/176979.terrain new file mode 100644 index 000000000..9fa652c52 Binary files /dev/null and b/public/terrain/18/429253/176979.terrain differ diff --git a/public/terrain/18/429253/176980.terrain b/public/terrain/18/429253/176980.terrain new file mode 100644 index 000000000..fdff616ea Binary files /dev/null and b/public/terrain/18/429253/176980.terrain differ diff --git a/public/terrain/18/429253/176981.terrain b/public/terrain/18/429253/176981.terrain new file mode 100644 index 000000000..1ef2b1c6c Binary files /dev/null and b/public/terrain/18/429253/176981.terrain differ diff --git a/public/terrain/18/429253/176982.terrain b/public/terrain/18/429253/176982.terrain new file mode 100644 index 000000000..ea73ea82f Binary files /dev/null and b/public/terrain/18/429253/176982.terrain differ diff --git a/public/terrain/18/429253/176983.terrain b/public/terrain/18/429253/176983.terrain new file mode 100644 index 000000000..5e8b12b8d Binary files /dev/null and b/public/terrain/18/429253/176983.terrain differ diff --git a/public/terrain/18/429253/176984.terrain b/public/terrain/18/429253/176984.terrain new file mode 100644 index 000000000..a9365027e Binary files /dev/null and b/public/terrain/18/429253/176984.terrain differ diff --git a/public/terrain/18/429253/176985.terrain b/public/terrain/18/429253/176985.terrain new file mode 100644 index 000000000..dffb5765e Binary files /dev/null and b/public/terrain/18/429253/176985.terrain differ diff --git a/public/terrain/18/429253/176986.terrain b/public/terrain/18/429253/176986.terrain new file mode 100644 index 000000000..c00ac9277 Binary files /dev/null and b/public/terrain/18/429253/176986.terrain differ diff --git a/public/terrain/18/429253/176987.terrain b/public/terrain/18/429253/176987.terrain new file mode 100644 index 000000000..3eaacb342 Binary files /dev/null and b/public/terrain/18/429253/176987.terrain differ diff --git a/public/terrain/18/429253/176988.terrain b/public/terrain/18/429253/176988.terrain new file mode 100644 index 000000000..420ff2504 Binary files /dev/null and b/public/terrain/18/429253/176988.terrain differ diff --git a/public/terrain/18/429253/176989.terrain b/public/terrain/18/429253/176989.terrain new file mode 100644 index 000000000..2fdc8bfa9 Binary files /dev/null and b/public/terrain/18/429253/176989.terrain differ diff --git a/public/terrain/18/429253/176990.terrain b/public/terrain/18/429253/176990.terrain new file mode 100644 index 000000000..1450868c1 Binary files /dev/null and b/public/terrain/18/429253/176990.terrain differ diff --git a/public/terrain/18/429253/176991.terrain b/public/terrain/18/429253/176991.terrain new file mode 100644 index 000000000..66cc1280f Binary files /dev/null and b/public/terrain/18/429253/176991.terrain differ diff --git a/public/terrain/18/429253/176992.terrain b/public/terrain/18/429253/176992.terrain new file mode 100644 index 000000000..d34b4af18 Binary files /dev/null and b/public/terrain/18/429253/176992.terrain differ diff --git a/public/terrain/18/429253/176993.terrain b/public/terrain/18/429253/176993.terrain new file mode 100644 index 000000000..e7f2e8156 Binary files /dev/null and b/public/terrain/18/429253/176993.terrain differ diff --git a/public/terrain/18/429253/176994.terrain b/public/terrain/18/429253/176994.terrain new file mode 100644 index 000000000..5e4bfbf40 Binary files /dev/null and b/public/terrain/18/429253/176994.terrain differ diff --git a/public/terrain/18/429253/176995.terrain b/public/terrain/18/429253/176995.terrain new file mode 100644 index 000000000..6bb90ab0b Binary files /dev/null and b/public/terrain/18/429253/176995.terrain differ diff --git a/public/terrain/18/429253/176996.terrain b/public/terrain/18/429253/176996.terrain new file mode 100644 index 000000000..0489a5e3b Binary files /dev/null and b/public/terrain/18/429253/176996.terrain differ diff --git a/public/terrain/18/429253/176997.terrain b/public/terrain/18/429253/176997.terrain new file mode 100644 index 000000000..499f38ae4 Binary files /dev/null and b/public/terrain/18/429253/176997.terrain differ diff --git a/public/terrain/18/429253/176998.terrain b/public/terrain/18/429253/176998.terrain new file mode 100644 index 000000000..4e0967e58 Binary files /dev/null and b/public/terrain/18/429253/176998.terrain differ diff --git a/public/terrain/18/429253/176999.terrain b/public/terrain/18/429253/176999.terrain new file mode 100644 index 000000000..074b2279e Binary files /dev/null and b/public/terrain/18/429253/176999.terrain differ diff --git a/public/terrain/18/429253/177000.terrain b/public/terrain/18/429253/177000.terrain new file mode 100644 index 000000000..8649fa36a Binary files /dev/null and b/public/terrain/18/429253/177000.terrain differ diff --git a/public/terrain/18/429253/177001.terrain b/public/terrain/18/429253/177001.terrain new file mode 100644 index 000000000..3f6e36708 Binary files /dev/null and b/public/terrain/18/429253/177001.terrain differ diff --git a/public/terrain/18/429253/177002.terrain b/public/terrain/18/429253/177002.terrain new file mode 100644 index 000000000..f077e36ed Binary files /dev/null and b/public/terrain/18/429253/177002.terrain differ diff --git a/public/terrain/18/429253/177003.terrain b/public/terrain/18/429253/177003.terrain new file mode 100644 index 000000000..b7fbb4d76 Binary files /dev/null and b/public/terrain/18/429253/177003.terrain differ diff --git a/public/terrain/18/429253/177004.terrain b/public/terrain/18/429253/177004.terrain new file mode 100644 index 000000000..a42c31942 Binary files /dev/null and b/public/terrain/18/429253/177004.terrain differ diff --git a/public/terrain/18/429253/177005.terrain b/public/terrain/18/429253/177005.terrain new file mode 100644 index 000000000..e443a8b03 Binary files /dev/null and b/public/terrain/18/429253/177005.terrain differ diff --git a/public/terrain/18/429253/177006.terrain b/public/terrain/18/429253/177006.terrain new file mode 100644 index 000000000..fc005c313 Binary files /dev/null and b/public/terrain/18/429253/177006.terrain differ diff --git a/public/terrain/18/429253/177007.terrain b/public/terrain/18/429253/177007.terrain new file mode 100644 index 000000000..fb4e0b041 Binary files /dev/null and b/public/terrain/18/429253/177007.terrain differ diff --git a/public/terrain/18/429253/177008.terrain b/public/terrain/18/429253/177008.terrain new file mode 100644 index 000000000..93649e959 Binary files /dev/null and b/public/terrain/18/429253/177008.terrain differ diff --git a/public/terrain/18/429253/177009.terrain b/public/terrain/18/429253/177009.terrain new file mode 100644 index 000000000..f250114f6 Binary files /dev/null and b/public/terrain/18/429253/177009.terrain differ diff --git a/public/terrain/18/429253/177010.terrain b/public/terrain/18/429253/177010.terrain new file mode 100644 index 000000000..9dbf93303 Binary files /dev/null and b/public/terrain/18/429253/177010.terrain differ diff --git a/public/terrain/18/429253/177011.terrain b/public/terrain/18/429253/177011.terrain new file mode 100644 index 000000000..993193c1e Binary files /dev/null and b/public/terrain/18/429253/177011.terrain differ diff --git a/public/terrain/18/429253/177012.terrain b/public/terrain/18/429253/177012.terrain new file mode 100644 index 000000000..2a097af46 Binary files /dev/null and b/public/terrain/18/429253/177012.terrain differ diff --git a/public/terrain/18/429253/177013.terrain b/public/terrain/18/429253/177013.terrain new file mode 100644 index 000000000..eca43d1c7 Binary files /dev/null and b/public/terrain/18/429253/177013.terrain differ diff --git a/public/terrain/18/429253/177014.terrain b/public/terrain/18/429253/177014.terrain new file mode 100644 index 000000000..dc4150260 Binary files /dev/null and b/public/terrain/18/429253/177014.terrain differ diff --git a/public/terrain/18/429253/177015.terrain b/public/terrain/18/429253/177015.terrain new file mode 100644 index 000000000..42b699a5e Binary files /dev/null and b/public/terrain/18/429253/177015.terrain differ diff --git a/public/terrain/18/429253/177016.terrain b/public/terrain/18/429253/177016.terrain new file mode 100644 index 000000000..88c722e7c Binary files /dev/null and b/public/terrain/18/429253/177016.terrain differ diff --git a/public/terrain/18/429253/177017.terrain b/public/terrain/18/429253/177017.terrain new file mode 100644 index 000000000..3143cfef5 Binary files /dev/null and b/public/terrain/18/429253/177017.terrain differ diff --git a/public/terrain/18/429253/177018.terrain b/public/terrain/18/429253/177018.terrain new file mode 100644 index 000000000..5728cce54 Binary files /dev/null and b/public/terrain/18/429253/177018.terrain differ diff --git a/public/terrain/18/429253/177019.terrain b/public/terrain/18/429253/177019.terrain new file mode 100644 index 000000000..aa927aebf Binary files /dev/null and b/public/terrain/18/429253/177019.terrain differ diff --git a/public/terrain/18/429253/177020.terrain b/public/terrain/18/429253/177020.terrain new file mode 100644 index 000000000..8436b373f Binary files /dev/null and b/public/terrain/18/429253/177020.terrain differ diff --git a/public/terrain/18/429253/177021.terrain b/public/terrain/18/429253/177021.terrain new file mode 100644 index 000000000..08fba1992 Binary files /dev/null and b/public/terrain/18/429253/177021.terrain differ diff --git a/public/terrain/18/429253/177022.terrain b/public/terrain/18/429253/177022.terrain new file mode 100644 index 000000000..2ae455bbb Binary files /dev/null and b/public/terrain/18/429253/177022.terrain differ diff --git a/public/terrain/18/429253/177023.terrain b/public/terrain/18/429253/177023.terrain new file mode 100644 index 000000000..1cffe9f25 Binary files /dev/null and b/public/terrain/18/429253/177023.terrain differ diff --git a/public/terrain/18/429253/177024.terrain b/public/terrain/18/429253/177024.terrain new file mode 100644 index 000000000..96422fcee Binary files /dev/null and b/public/terrain/18/429253/177024.terrain differ diff --git a/public/terrain/18/429253/177025.terrain b/public/terrain/18/429253/177025.terrain new file mode 100644 index 000000000..b105451cf Binary files /dev/null and b/public/terrain/18/429253/177025.terrain differ diff --git a/public/terrain/18/429253/177026.terrain b/public/terrain/18/429253/177026.terrain new file mode 100644 index 000000000..3c696a7c3 Binary files /dev/null and b/public/terrain/18/429253/177026.terrain differ diff --git a/public/terrain/18/429253/177027.terrain b/public/terrain/18/429253/177027.terrain new file mode 100644 index 000000000..4662e214f Binary files /dev/null and b/public/terrain/18/429253/177027.terrain differ diff --git a/public/terrain/18/429253/177028.terrain b/public/terrain/18/429253/177028.terrain new file mode 100644 index 000000000..6d5305f92 Binary files /dev/null and b/public/terrain/18/429253/177028.terrain differ diff --git a/public/terrain/18/429253/177029.terrain b/public/terrain/18/429253/177029.terrain new file mode 100644 index 000000000..b3d943052 Binary files /dev/null and b/public/terrain/18/429253/177029.terrain differ diff --git a/public/terrain/18/429254/176871.terrain b/public/terrain/18/429254/176871.terrain new file mode 100644 index 000000000..0dd207e5b Binary files /dev/null and b/public/terrain/18/429254/176871.terrain differ diff --git a/public/terrain/18/429254/176872.terrain b/public/terrain/18/429254/176872.terrain new file mode 100644 index 000000000..5b46ea0da Binary files /dev/null and b/public/terrain/18/429254/176872.terrain differ diff --git a/public/terrain/18/429254/176873.terrain b/public/terrain/18/429254/176873.terrain new file mode 100644 index 000000000..4b1ca46b0 Binary files /dev/null and b/public/terrain/18/429254/176873.terrain differ diff --git a/public/terrain/18/429254/176874.terrain b/public/terrain/18/429254/176874.terrain new file mode 100644 index 000000000..c060141fd Binary files /dev/null and b/public/terrain/18/429254/176874.terrain differ diff --git a/public/terrain/18/429254/176875.terrain b/public/terrain/18/429254/176875.terrain new file mode 100644 index 000000000..2c9b8292a Binary files /dev/null and b/public/terrain/18/429254/176875.terrain differ diff --git a/public/terrain/18/429254/176876.terrain b/public/terrain/18/429254/176876.terrain new file mode 100644 index 000000000..38192f03d Binary files /dev/null and b/public/terrain/18/429254/176876.terrain differ diff --git a/public/terrain/18/429254/176877.terrain b/public/terrain/18/429254/176877.terrain new file mode 100644 index 000000000..7990f079e Binary files /dev/null and b/public/terrain/18/429254/176877.terrain differ diff --git a/public/terrain/18/429254/176878.terrain b/public/terrain/18/429254/176878.terrain new file mode 100644 index 000000000..38db56cab Binary files /dev/null and b/public/terrain/18/429254/176878.terrain differ diff --git a/public/terrain/18/429254/176879.terrain b/public/terrain/18/429254/176879.terrain new file mode 100644 index 000000000..47a4615fb Binary files /dev/null and b/public/terrain/18/429254/176879.terrain differ diff --git a/public/terrain/18/429254/176880.terrain b/public/terrain/18/429254/176880.terrain new file mode 100644 index 000000000..bbe176d1a Binary files /dev/null and b/public/terrain/18/429254/176880.terrain differ diff --git a/public/terrain/18/429254/176881.terrain b/public/terrain/18/429254/176881.terrain new file mode 100644 index 000000000..bcf58ce8a Binary files /dev/null and b/public/terrain/18/429254/176881.terrain differ diff --git a/public/terrain/18/429254/176882.terrain b/public/terrain/18/429254/176882.terrain new file mode 100644 index 000000000..680f6fe1b Binary files /dev/null and b/public/terrain/18/429254/176882.terrain differ diff --git a/public/terrain/18/429254/176883.terrain b/public/terrain/18/429254/176883.terrain new file mode 100644 index 000000000..f6337cabc Binary files /dev/null and b/public/terrain/18/429254/176883.terrain differ diff --git a/public/terrain/18/429254/176884.terrain b/public/terrain/18/429254/176884.terrain new file mode 100644 index 000000000..1d88390ed Binary files /dev/null and b/public/terrain/18/429254/176884.terrain differ diff --git a/public/terrain/18/429254/176885.terrain b/public/terrain/18/429254/176885.terrain new file mode 100644 index 000000000..595713c04 Binary files /dev/null and b/public/terrain/18/429254/176885.terrain differ diff --git a/public/terrain/18/429254/176886.terrain b/public/terrain/18/429254/176886.terrain new file mode 100644 index 000000000..90c94f954 Binary files /dev/null and b/public/terrain/18/429254/176886.terrain differ diff --git a/public/terrain/18/429254/176887.terrain b/public/terrain/18/429254/176887.terrain new file mode 100644 index 000000000..7a3caaa51 Binary files /dev/null and b/public/terrain/18/429254/176887.terrain differ diff --git a/public/terrain/18/429254/176888.terrain b/public/terrain/18/429254/176888.terrain new file mode 100644 index 000000000..f5ca8d0f0 Binary files /dev/null and b/public/terrain/18/429254/176888.terrain differ diff --git a/public/terrain/18/429254/176889.terrain b/public/terrain/18/429254/176889.terrain new file mode 100644 index 000000000..490ddbd50 Binary files /dev/null and b/public/terrain/18/429254/176889.terrain differ diff --git a/public/terrain/18/429254/176890.terrain b/public/terrain/18/429254/176890.terrain new file mode 100644 index 000000000..bbda52d2a Binary files /dev/null and b/public/terrain/18/429254/176890.terrain differ diff --git a/public/terrain/18/429254/176891.terrain b/public/terrain/18/429254/176891.terrain new file mode 100644 index 000000000..3cf189480 Binary files /dev/null and b/public/terrain/18/429254/176891.terrain differ diff --git a/public/terrain/18/429254/176892.terrain b/public/terrain/18/429254/176892.terrain new file mode 100644 index 000000000..fd6e92089 Binary files /dev/null and b/public/terrain/18/429254/176892.terrain differ diff --git a/public/terrain/18/429254/176893.terrain b/public/terrain/18/429254/176893.terrain new file mode 100644 index 000000000..e599474e1 Binary files /dev/null and b/public/terrain/18/429254/176893.terrain differ diff --git a/public/terrain/18/429254/176894.terrain b/public/terrain/18/429254/176894.terrain new file mode 100644 index 000000000..b9484a297 Binary files /dev/null and b/public/terrain/18/429254/176894.terrain differ diff --git a/public/terrain/18/429254/176895.terrain b/public/terrain/18/429254/176895.terrain new file mode 100644 index 000000000..7b4b29e25 Binary files /dev/null and b/public/terrain/18/429254/176895.terrain differ diff --git a/public/terrain/18/429254/176896.terrain b/public/terrain/18/429254/176896.terrain new file mode 100644 index 000000000..4065a3ead Binary files /dev/null and b/public/terrain/18/429254/176896.terrain differ diff --git a/public/terrain/18/429254/176897.terrain b/public/terrain/18/429254/176897.terrain new file mode 100644 index 000000000..32733ad5f Binary files /dev/null and b/public/terrain/18/429254/176897.terrain differ diff --git a/public/terrain/18/429254/176898.terrain b/public/terrain/18/429254/176898.terrain new file mode 100644 index 000000000..f8adb5bee Binary files /dev/null and b/public/terrain/18/429254/176898.terrain differ diff --git a/public/terrain/18/429254/176899.terrain b/public/terrain/18/429254/176899.terrain new file mode 100644 index 000000000..9452a5c0c Binary files /dev/null and b/public/terrain/18/429254/176899.terrain differ diff --git a/public/terrain/18/429254/176900.terrain b/public/terrain/18/429254/176900.terrain new file mode 100644 index 000000000..291352628 Binary files /dev/null and b/public/terrain/18/429254/176900.terrain differ diff --git a/public/terrain/18/429254/176901.terrain b/public/terrain/18/429254/176901.terrain new file mode 100644 index 000000000..b24bc9aec Binary files /dev/null and b/public/terrain/18/429254/176901.terrain differ diff --git a/public/terrain/18/429254/176902.terrain b/public/terrain/18/429254/176902.terrain new file mode 100644 index 000000000..f9aaf23df Binary files /dev/null and b/public/terrain/18/429254/176902.terrain differ diff --git a/public/terrain/18/429254/176903.terrain b/public/terrain/18/429254/176903.terrain new file mode 100644 index 000000000..4ccd8cb98 Binary files /dev/null and b/public/terrain/18/429254/176903.terrain differ diff --git a/public/terrain/18/429254/176904.terrain b/public/terrain/18/429254/176904.terrain new file mode 100644 index 000000000..8887670c0 Binary files /dev/null and b/public/terrain/18/429254/176904.terrain differ diff --git a/public/terrain/18/429254/176905.terrain b/public/terrain/18/429254/176905.terrain new file mode 100644 index 000000000..b7ac52168 Binary files /dev/null and b/public/terrain/18/429254/176905.terrain differ diff --git a/public/terrain/18/429254/176906.terrain b/public/terrain/18/429254/176906.terrain new file mode 100644 index 000000000..a0fba3a88 Binary files /dev/null and b/public/terrain/18/429254/176906.terrain differ diff --git a/public/terrain/18/429254/176907.terrain b/public/terrain/18/429254/176907.terrain new file mode 100644 index 000000000..af97a9045 Binary files /dev/null and b/public/terrain/18/429254/176907.terrain differ diff --git a/public/terrain/18/429254/176908.terrain b/public/terrain/18/429254/176908.terrain new file mode 100644 index 000000000..f5b89df26 Binary files /dev/null and b/public/terrain/18/429254/176908.terrain differ diff --git a/public/terrain/18/429254/176909.terrain b/public/terrain/18/429254/176909.terrain new file mode 100644 index 000000000..40d6123b2 Binary files /dev/null and b/public/terrain/18/429254/176909.terrain differ diff --git a/public/terrain/18/429254/176910.terrain b/public/terrain/18/429254/176910.terrain new file mode 100644 index 000000000..68892de81 Binary files /dev/null and b/public/terrain/18/429254/176910.terrain differ diff --git a/public/terrain/18/429254/176911.terrain b/public/terrain/18/429254/176911.terrain new file mode 100644 index 000000000..09ebbd9b2 Binary files /dev/null and b/public/terrain/18/429254/176911.terrain differ diff --git a/public/terrain/18/429254/176912.terrain b/public/terrain/18/429254/176912.terrain new file mode 100644 index 000000000..7944b221f Binary files /dev/null and b/public/terrain/18/429254/176912.terrain differ diff --git a/public/terrain/18/429254/176913.terrain b/public/terrain/18/429254/176913.terrain new file mode 100644 index 000000000..2bac3ff83 Binary files /dev/null and b/public/terrain/18/429254/176913.terrain differ diff --git a/public/terrain/18/429254/176914.terrain b/public/terrain/18/429254/176914.terrain new file mode 100644 index 000000000..3e0ac2cad Binary files /dev/null and b/public/terrain/18/429254/176914.terrain differ diff --git a/public/terrain/18/429254/176915.terrain b/public/terrain/18/429254/176915.terrain new file mode 100644 index 000000000..3d83c1ea1 Binary files /dev/null and b/public/terrain/18/429254/176915.terrain differ diff --git a/public/terrain/18/429254/176916.terrain b/public/terrain/18/429254/176916.terrain new file mode 100644 index 000000000..68d29c608 Binary files /dev/null and b/public/terrain/18/429254/176916.terrain differ diff --git a/public/terrain/18/429254/176917.terrain b/public/terrain/18/429254/176917.terrain new file mode 100644 index 000000000..ba745909e Binary files /dev/null and b/public/terrain/18/429254/176917.terrain differ diff --git a/public/terrain/18/429254/176918.terrain b/public/terrain/18/429254/176918.terrain new file mode 100644 index 000000000..7ef924ab6 Binary files /dev/null and b/public/terrain/18/429254/176918.terrain differ diff --git a/public/terrain/18/429254/176919.terrain b/public/terrain/18/429254/176919.terrain new file mode 100644 index 000000000..b21609ec5 Binary files /dev/null and b/public/terrain/18/429254/176919.terrain differ diff --git a/public/terrain/18/429254/176920.terrain b/public/terrain/18/429254/176920.terrain new file mode 100644 index 000000000..3847cba52 Binary files /dev/null and b/public/terrain/18/429254/176920.terrain differ diff --git a/public/terrain/18/429254/176921.terrain b/public/terrain/18/429254/176921.terrain new file mode 100644 index 000000000..4db661db5 Binary files /dev/null and b/public/terrain/18/429254/176921.terrain differ diff --git a/public/terrain/18/429254/176922.terrain b/public/terrain/18/429254/176922.terrain new file mode 100644 index 000000000..5644a207d Binary files /dev/null and b/public/terrain/18/429254/176922.terrain differ diff --git a/public/terrain/18/429254/176923.terrain b/public/terrain/18/429254/176923.terrain new file mode 100644 index 000000000..0848a3728 Binary files /dev/null and b/public/terrain/18/429254/176923.terrain differ diff --git a/public/terrain/18/429254/176924.terrain b/public/terrain/18/429254/176924.terrain new file mode 100644 index 000000000..b34bab620 Binary files /dev/null and b/public/terrain/18/429254/176924.terrain differ diff --git a/public/terrain/18/429254/176925.terrain b/public/terrain/18/429254/176925.terrain new file mode 100644 index 000000000..1ef9d8d2c Binary files /dev/null and b/public/terrain/18/429254/176925.terrain differ diff --git a/public/terrain/18/429254/176926.terrain b/public/terrain/18/429254/176926.terrain new file mode 100644 index 000000000..0f2a4116d Binary files /dev/null and b/public/terrain/18/429254/176926.terrain differ diff --git a/public/terrain/18/429254/176927.terrain b/public/terrain/18/429254/176927.terrain new file mode 100644 index 000000000..681bad61e Binary files /dev/null and b/public/terrain/18/429254/176927.terrain differ diff --git a/public/terrain/18/429254/176928.terrain b/public/terrain/18/429254/176928.terrain new file mode 100644 index 000000000..fb070ce10 Binary files /dev/null and b/public/terrain/18/429254/176928.terrain differ diff --git a/public/terrain/18/429254/176929.terrain b/public/terrain/18/429254/176929.terrain new file mode 100644 index 000000000..cd9666a22 Binary files /dev/null and b/public/terrain/18/429254/176929.terrain differ diff --git a/public/terrain/18/429254/176930.terrain b/public/terrain/18/429254/176930.terrain new file mode 100644 index 000000000..1aab5e35b Binary files /dev/null and b/public/terrain/18/429254/176930.terrain differ diff --git a/public/terrain/18/429254/176931.terrain b/public/terrain/18/429254/176931.terrain new file mode 100644 index 000000000..9fe21cdfa Binary files /dev/null and b/public/terrain/18/429254/176931.terrain differ diff --git a/public/terrain/18/429254/176932.terrain b/public/terrain/18/429254/176932.terrain new file mode 100644 index 000000000..00d8f7c90 Binary files /dev/null and b/public/terrain/18/429254/176932.terrain differ diff --git a/public/terrain/18/429254/176933.terrain b/public/terrain/18/429254/176933.terrain new file mode 100644 index 000000000..7e095c0cf Binary files /dev/null and b/public/terrain/18/429254/176933.terrain differ diff --git a/public/terrain/18/429254/176934.terrain b/public/terrain/18/429254/176934.terrain new file mode 100644 index 000000000..e30d74285 Binary files /dev/null and b/public/terrain/18/429254/176934.terrain differ diff --git a/public/terrain/18/429254/176935.terrain b/public/terrain/18/429254/176935.terrain new file mode 100644 index 000000000..253cb53d2 Binary files /dev/null and b/public/terrain/18/429254/176935.terrain differ diff --git a/public/terrain/18/429254/176936.terrain b/public/terrain/18/429254/176936.terrain new file mode 100644 index 000000000..97d172a35 Binary files /dev/null and b/public/terrain/18/429254/176936.terrain differ diff --git a/public/terrain/18/429254/176937.terrain b/public/terrain/18/429254/176937.terrain new file mode 100644 index 000000000..830daf074 Binary files /dev/null and b/public/terrain/18/429254/176937.terrain differ diff --git a/public/terrain/18/429254/176938.terrain b/public/terrain/18/429254/176938.terrain new file mode 100644 index 000000000..118f19175 Binary files /dev/null and b/public/terrain/18/429254/176938.terrain differ diff --git a/public/terrain/18/429254/176939.terrain b/public/terrain/18/429254/176939.terrain new file mode 100644 index 000000000..d76657663 Binary files /dev/null and b/public/terrain/18/429254/176939.terrain differ diff --git a/public/terrain/18/429254/176940.terrain b/public/terrain/18/429254/176940.terrain new file mode 100644 index 000000000..8ef7a75b0 Binary files /dev/null and b/public/terrain/18/429254/176940.terrain differ diff --git a/public/terrain/18/429254/176941.terrain b/public/terrain/18/429254/176941.terrain new file mode 100644 index 000000000..7ac056cf2 Binary files /dev/null and b/public/terrain/18/429254/176941.terrain differ diff --git a/public/terrain/18/429254/176942.terrain b/public/terrain/18/429254/176942.terrain new file mode 100644 index 000000000..8f97d391d Binary files /dev/null and b/public/terrain/18/429254/176942.terrain differ diff --git a/public/terrain/18/429254/176943.terrain b/public/terrain/18/429254/176943.terrain new file mode 100644 index 000000000..7fb1db96a Binary files /dev/null and b/public/terrain/18/429254/176943.terrain differ diff --git a/public/terrain/18/429254/176944.terrain b/public/terrain/18/429254/176944.terrain new file mode 100644 index 000000000..5bcd07a9d Binary files /dev/null and b/public/terrain/18/429254/176944.terrain differ diff --git a/public/terrain/18/429254/176945.terrain b/public/terrain/18/429254/176945.terrain new file mode 100644 index 000000000..dd26cf4cb Binary files /dev/null and b/public/terrain/18/429254/176945.terrain differ diff --git a/public/terrain/18/429254/176946.terrain b/public/terrain/18/429254/176946.terrain new file mode 100644 index 000000000..c27e63ed5 Binary files /dev/null and b/public/terrain/18/429254/176946.terrain differ diff --git a/public/terrain/18/429254/176947.terrain b/public/terrain/18/429254/176947.terrain new file mode 100644 index 000000000..137a18745 Binary files /dev/null and b/public/terrain/18/429254/176947.terrain differ diff --git a/public/terrain/18/429254/176948.terrain b/public/terrain/18/429254/176948.terrain new file mode 100644 index 000000000..41db0f231 Binary files /dev/null and b/public/terrain/18/429254/176948.terrain differ diff --git a/public/terrain/18/429254/176949.terrain b/public/terrain/18/429254/176949.terrain new file mode 100644 index 000000000..e66b464c8 Binary files /dev/null and b/public/terrain/18/429254/176949.terrain differ diff --git a/public/terrain/18/429254/176950.terrain b/public/terrain/18/429254/176950.terrain new file mode 100644 index 000000000..73fd2b0f7 Binary files /dev/null and b/public/terrain/18/429254/176950.terrain differ diff --git a/public/terrain/18/429254/176951.terrain b/public/terrain/18/429254/176951.terrain new file mode 100644 index 000000000..7eb379a7f Binary files /dev/null and b/public/terrain/18/429254/176951.terrain differ diff --git a/public/terrain/18/429254/176952.terrain b/public/terrain/18/429254/176952.terrain new file mode 100644 index 000000000..e10923f47 Binary files /dev/null and b/public/terrain/18/429254/176952.terrain differ diff --git a/public/terrain/18/429254/176953.terrain b/public/terrain/18/429254/176953.terrain new file mode 100644 index 000000000..45b57701a Binary files /dev/null and b/public/terrain/18/429254/176953.terrain differ diff --git a/public/terrain/18/429254/176954.terrain b/public/terrain/18/429254/176954.terrain new file mode 100644 index 000000000..0081179da Binary files /dev/null and b/public/terrain/18/429254/176954.terrain differ diff --git a/public/terrain/18/429254/176955.terrain b/public/terrain/18/429254/176955.terrain new file mode 100644 index 000000000..be813b2b7 Binary files /dev/null and b/public/terrain/18/429254/176955.terrain differ diff --git a/public/terrain/18/429254/176956.terrain b/public/terrain/18/429254/176956.terrain new file mode 100644 index 000000000..78a264608 Binary files /dev/null and b/public/terrain/18/429254/176956.terrain differ diff --git a/public/terrain/18/429254/176957.terrain b/public/terrain/18/429254/176957.terrain new file mode 100644 index 000000000..bd7798667 Binary files /dev/null and b/public/terrain/18/429254/176957.terrain differ diff --git a/public/terrain/18/429254/176958.terrain b/public/terrain/18/429254/176958.terrain new file mode 100644 index 000000000..278a7d446 Binary files /dev/null and b/public/terrain/18/429254/176958.terrain differ diff --git a/public/terrain/18/429254/176959.terrain b/public/terrain/18/429254/176959.terrain new file mode 100644 index 000000000..f24210fa8 Binary files /dev/null and b/public/terrain/18/429254/176959.terrain differ diff --git a/public/terrain/18/429254/176960.terrain b/public/terrain/18/429254/176960.terrain new file mode 100644 index 000000000..39ae0fb7e Binary files /dev/null and b/public/terrain/18/429254/176960.terrain differ diff --git a/public/terrain/18/429254/176961.terrain b/public/terrain/18/429254/176961.terrain new file mode 100644 index 000000000..a903bffd7 Binary files /dev/null and b/public/terrain/18/429254/176961.terrain differ diff --git a/public/terrain/18/429254/176962.terrain b/public/terrain/18/429254/176962.terrain new file mode 100644 index 000000000..97ac55cb1 Binary files /dev/null and b/public/terrain/18/429254/176962.terrain differ diff --git a/public/terrain/18/429254/176963.terrain b/public/terrain/18/429254/176963.terrain new file mode 100644 index 000000000..cbfd78e7e Binary files /dev/null and b/public/terrain/18/429254/176963.terrain differ diff --git a/public/terrain/18/429254/176964.terrain b/public/terrain/18/429254/176964.terrain new file mode 100644 index 000000000..30df6548d Binary files /dev/null and b/public/terrain/18/429254/176964.terrain differ diff --git a/public/terrain/18/429254/176965.terrain b/public/terrain/18/429254/176965.terrain new file mode 100644 index 000000000..fcbc466e6 Binary files /dev/null and b/public/terrain/18/429254/176965.terrain differ diff --git a/public/terrain/18/429254/176966.terrain b/public/terrain/18/429254/176966.terrain new file mode 100644 index 000000000..4bf87d50f Binary files /dev/null and b/public/terrain/18/429254/176966.terrain differ diff --git a/public/terrain/18/429254/176967.terrain b/public/terrain/18/429254/176967.terrain new file mode 100644 index 000000000..975e958d8 Binary files /dev/null and b/public/terrain/18/429254/176967.terrain differ diff --git a/public/terrain/18/429254/176968.terrain b/public/terrain/18/429254/176968.terrain new file mode 100644 index 000000000..c4d6c7867 Binary files /dev/null and b/public/terrain/18/429254/176968.terrain differ diff --git a/public/terrain/18/429254/176969.terrain b/public/terrain/18/429254/176969.terrain new file mode 100644 index 000000000..bc2d88052 Binary files /dev/null and b/public/terrain/18/429254/176969.terrain differ diff --git a/public/terrain/18/429254/176970.terrain b/public/terrain/18/429254/176970.terrain new file mode 100644 index 000000000..273fb3251 Binary files /dev/null and b/public/terrain/18/429254/176970.terrain differ diff --git a/public/terrain/18/429254/176971.terrain b/public/terrain/18/429254/176971.terrain new file mode 100644 index 000000000..541675026 Binary files /dev/null and b/public/terrain/18/429254/176971.terrain differ diff --git a/public/terrain/18/429254/176972.terrain b/public/terrain/18/429254/176972.terrain new file mode 100644 index 000000000..772133e88 Binary files /dev/null and b/public/terrain/18/429254/176972.terrain differ diff --git a/public/terrain/18/429254/176973.terrain b/public/terrain/18/429254/176973.terrain new file mode 100644 index 000000000..9d67fc1ae Binary files /dev/null and b/public/terrain/18/429254/176973.terrain differ diff --git a/public/terrain/18/429254/176974.terrain b/public/terrain/18/429254/176974.terrain new file mode 100644 index 000000000..81ae5d254 Binary files /dev/null and b/public/terrain/18/429254/176974.terrain differ diff --git a/public/terrain/18/429254/176975.terrain b/public/terrain/18/429254/176975.terrain new file mode 100644 index 000000000..4b6309afb Binary files /dev/null and b/public/terrain/18/429254/176975.terrain differ diff --git a/public/terrain/18/429254/176976.terrain b/public/terrain/18/429254/176976.terrain new file mode 100644 index 000000000..694c77d9a Binary files /dev/null and b/public/terrain/18/429254/176976.terrain differ diff --git a/public/terrain/18/429254/176977.terrain b/public/terrain/18/429254/176977.terrain new file mode 100644 index 000000000..2e9a28a69 Binary files /dev/null and b/public/terrain/18/429254/176977.terrain differ diff --git a/public/terrain/18/429254/176978.terrain b/public/terrain/18/429254/176978.terrain new file mode 100644 index 000000000..f4dfcc3a7 Binary files /dev/null and b/public/terrain/18/429254/176978.terrain differ diff --git a/public/terrain/18/429254/176979.terrain b/public/terrain/18/429254/176979.terrain new file mode 100644 index 000000000..705ddbc49 Binary files /dev/null and b/public/terrain/18/429254/176979.terrain differ diff --git a/public/terrain/18/429254/176980.terrain b/public/terrain/18/429254/176980.terrain new file mode 100644 index 000000000..16d891277 Binary files /dev/null and b/public/terrain/18/429254/176980.terrain differ diff --git a/public/terrain/18/429254/176981.terrain b/public/terrain/18/429254/176981.terrain new file mode 100644 index 000000000..c3fa11629 Binary files /dev/null and b/public/terrain/18/429254/176981.terrain differ diff --git a/public/terrain/18/429254/176982.terrain b/public/terrain/18/429254/176982.terrain new file mode 100644 index 000000000..4ce062e2f Binary files /dev/null and b/public/terrain/18/429254/176982.terrain differ diff --git a/public/terrain/18/429254/176983.terrain b/public/terrain/18/429254/176983.terrain new file mode 100644 index 000000000..ec824a899 Binary files /dev/null and b/public/terrain/18/429254/176983.terrain differ diff --git a/public/terrain/18/429254/176984.terrain b/public/terrain/18/429254/176984.terrain new file mode 100644 index 000000000..6f46f475f Binary files /dev/null and b/public/terrain/18/429254/176984.terrain differ diff --git a/public/terrain/18/429254/176985.terrain b/public/terrain/18/429254/176985.terrain new file mode 100644 index 000000000..aea593779 Binary files /dev/null and b/public/terrain/18/429254/176985.terrain differ diff --git a/public/terrain/18/429254/176986.terrain b/public/terrain/18/429254/176986.terrain new file mode 100644 index 000000000..a3c0ed50f Binary files /dev/null and b/public/terrain/18/429254/176986.terrain differ diff --git a/public/terrain/18/429254/176987.terrain b/public/terrain/18/429254/176987.terrain new file mode 100644 index 000000000..2731d7fec Binary files /dev/null and b/public/terrain/18/429254/176987.terrain differ diff --git a/public/terrain/18/429254/176988.terrain b/public/terrain/18/429254/176988.terrain new file mode 100644 index 000000000..4ea3da5c5 Binary files /dev/null and b/public/terrain/18/429254/176988.terrain differ diff --git a/public/terrain/18/429254/176989.terrain b/public/terrain/18/429254/176989.terrain new file mode 100644 index 000000000..52bebce28 Binary files /dev/null and b/public/terrain/18/429254/176989.terrain differ diff --git a/public/terrain/18/429254/176990.terrain b/public/terrain/18/429254/176990.terrain new file mode 100644 index 000000000..b385c1ff9 Binary files /dev/null and b/public/terrain/18/429254/176990.terrain differ diff --git a/public/terrain/18/429254/176991.terrain b/public/terrain/18/429254/176991.terrain new file mode 100644 index 000000000..67034c351 Binary files /dev/null and b/public/terrain/18/429254/176991.terrain differ diff --git a/public/terrain/18/429254/176992.terrain b/public/terrain/18/429254/176992.terrain new file mode 100644 index 000000000..d2c4a792c Binary files /dev/null and b/public/terrain/18/429254/176992.terrain differ diff --git a/public/terrain/18/429254/176993.terrain b/public/terrain/18/429254/176993.terrain new file mode 100644 index 000000000..5e345f8b6 Binary files /dev/null and b/public/terrain/18/429254/176993.terrain differ diff --git a/public/terrain/18/429254/176994.terrain b/public/terrain/18/429254/176994.terrain new file mode 100644 index 000000000..d8bd81565 Binary files /dev/null and b/public/terrain/18/429254/176994.terrain differ diff --git a/public/terrain/18/429254/176995.terrain b/public/terrain/18/429254/176995.terrain new file mode 100644 index 000000000..61273264b Binary files /dev/null and b/public/terrain/18/429254/176995.terrain differ diff --git a/public/terrain/18/429254/176996.terrain b/public/terrain/18/429254/176996.terrain new file mode 100644 index 000000000..696039c79 Binary files /dev/null and b/public/terrain/18/429254/176996.terrain differ diff --git a/public/terrain/18/429254/176997.terrain b/public/terrain/18/429254/176997.terrain new file mode 100644 index 000000000..8daa6b1a3 Binary files /dev/null and b/public/terrain/18/429254/176997.terrain differ diff --git a/public/terrain/18/429254/176998.terrain b/public/terrain/18/429254/176998.terrain new file mode 100644 index 000000000..14efb4870 Binary files /dev/null and b/public/terrain/18/429254/176998.terrain differ diff --git a/public/terrain/18/429254/176999.terrain b/public/terrain/18/429254/176999.terrain new file mode 100644 index 000000000..3a3182c3c Binary files /dev/null and b/public/terrain/18/429254/176999.terrain differ diff --git a/public/terrain/18/429254/177000.terrain b/public/terrain/18/429254/177000.terrain new file mode 100644 index 000000000..e3341fc73 Binary files /dev/null and b/public/terrain/18/429254/177000.terrain differ diff --git a/public/terrain/18/429254/177001.terrain b/public/terrain/18/429254/177001.terrain new file mode 100644 index 000000000..dd2a95c46 Binary files /dev/null and b/public/terrain/18/429254/177001.terrain differ diff --git a/public/terrain/18/429254/177002.terrain b/public/terrain/18/429254/177002.terrain new file mode 100644 index 000000000..0416fc7d6 Binary files /dev/null and b/public/terrain/18/429254/177002.terrain differ diff --git a/public/terrain/18/429254/177003.terrain b/public/terrain/18/429254/177003.terrain new file mode 100644 index 000000000..1b61723b3 Binary files /dev/null and b/public/terrain/18/429254/177003.terrain differ diff --git a/public/terrain/18/429254/177004.terrain b/public/terrain/18/429254/177004.terrain new file mode 100644 index 000000000..b23580912 Binary files /dev/null and b/public/terrain/18/429254/177004.terrain differ diff --git a/public/terrain/18/429254/177005.terrain b/public/terrain/18/429254/177005.terrain new file mode 100644 index 000000000..0d04577b9 Binary files /dev/null and b/public/terrain/18/429254/177005.terrain differ diff --git a/public/terrain/18/429254/177006.terrain b/public/terrain/18/429254/177006.terrain new file mode 100644 index 000000000..97ddb5d5a Binary files /dev/null and b/public/terrain/18/429254/177006.terrain differ diff --git a/public/terrain/18/429254/177007.terrain b/public/terrain/18/429254/177007.terrain new file mode 100644 index 000000000..db8ebf951 Binary files /dev/null and b/public/terrain/18/429254/177007.terrain differ diff --git a/public/terrain/18/429254/177008.terrain b/public/terrain/18/429254/177008.terrain new file mode 100644 index 000000000..fc4e2da0c Binary files /dev/null and b/public/terrain/18/429254/177008.terrain differ diff --git a/public/terrain/18/429254/177009.terrain b/public/terrain/18/429254/177009.terrain new file mode 100644 index 000000000..d0a0f5f1e Binary files /dev/null and b/public/terrain/18/429254/177009.terrain differ diff --git a/public/terrain/18/429254/177010.terrain b/public/terrain/18/429254/177010.terrain new file mode 100644 index 000000000..7aba646b4 Binary files /dev/null and b/public/terrain/18/429254/177010.terrain differ diff --git a/public/terrain/18/429254/177011.terrain b/public/terrain/18/429254/177011.terrain new file mode 100644 index 000000000..4ab8c3466 Binary files /dev/null and b/public/terrain/18/429254/177011.terrain differ diff --git a/public/terrain/18/429254/177012.terrain b/public/terrain/18/429254/177012.terrain new file mode 100644 index 000000000..3e5b38c7d Binary files /dev/null and b/public/terrain/18/429254/177012.terrain differ diff --git a/public/terrain/18/429254/177013.terrain b/public/terrain/18/429254/177013.terrain new file mode 100644 index 000000000..1400d1dd7 Binary files /dev/null and b/public/terrain/18/429254/177013.terrain differ diff --git a/public/terrain/18/429254/177014.terrain b/public/terrain/18/429254/177014.terrain new file mode 100644 index 000000000..d21e79b49 Binary files /dev/null and b/public/terrain/18/429254/177014.terrain differ diff --git a/public/terrain/18/429254/177015.terrain b/public/terrain/18/429254/177015.terrain new file mode 100644 index 000000000..bd3014b5d Binary files /dev/null and b/public/terrain/18/429254/177015.terrain differ diff --git a/public/terrain/18/429254/177016.terrain b/public/terrain/18/429254/177016.terrain new file mode 100644 index 000000000..ec8447ac4 Binary files /dev/null and b/public/terrain/18/429254/177016.terrain differ diff --git a/public/terrain/18/429254/177017.terrain b/public/terrain/18/429254/177017.terrain new file mode 100644 index 000000000..9356ae43f Binary files /dev/null and b/public/terrain/18/429254/177017.terrain differ diff --git a/public/terrain/18/429254/177018.terrain b/public/terrain/18/429254/177018.terrain new file mode 100644 index 000000000..c9574ecdc Binary files /dev/null and b/public/terrain/18/429254/177018.terrain differ diff --git a/public/terrain/18/429254/177019.terrain b/public/terrain/18/429254/177019.terrain new file mode 100644 index 000000000..d6d39fc21 Binary files /dev/null and b/public/terrain/18/429254/177019.terrain differ diff --git a/public/terrain/18/429254/177020.terrain b/public/terrain/18/429254/177020.terrain new file mode 100644 index 000000000..2df7fd450 Binary files /dev/null and b/public/terrain/18/429254/177020.terrain differ diff --git a/public/terrain/18/429254/177021.terrain b/public/terrain/18/429254/177021.terrain new file mode 100644 index 000000000..07aed57ca Binary files /dev/null and b/public/terrain/18/429254/177021.terrain differ diff --git a/public/terrain/18/429254/177022.terrain b/public/terrain/18/429254/177022.terrain new file mode 100644 index 000000000..a3d30f780 Binary files /dev/null and b/public/terrain/18/429254/177022.terrain differ diff --git a/public/terrain/18/429254/177023.terrain b/public/terrain/18/429254/177023.terrain new file mode 100644 index 000000000..10db84228 Binary files /dev/null and b/public/terrain/18/429254/177023.terrain differ diff --git a/public/terrain/18/429254/177024.terrain b/public/terrain/18/429254/177024.terrain new file mode 100644 index 000000000..1b73c950f Binary files /dev/null and b/public/terrain/18/429254/177024.terrain differ diff --git a/public/terrain/18/429254/177025.terrain b/public/terrain/18/429254/177025.terrain new file mode 100644 index 000000000..57c840443 Binary files /dev/null and b/public/terrain/18/429254/177025.terrain differ diff --git a/public/terrain/18/429254/177026.terrain b/public/terrain/18/429254/177026.terrain new file mode 100644 index 000000000..990e89e15 Binary files /dev/null and b/public/terrain/18/429254/177026.terrain differ diff --git a/public/terrain/18/429254/177027.terrain b/public/terrain/18/429254/177027.terrain new file mode 100644 index 000000000..fad93ab20 Binary files /dev/null and b/public/terrain/18/429254/177027.terrain differ diff --git a/public/terrain/18/429254/177028.terrain b/public/terrain/18/429254/177028.terrain new file mode 100644 index 000000000..c36909851 Binary files /dev/null and b/public/terrain/18/429254/177028.terrain differ diff --git a/public/terrain/18/429254/177029.terrain b/public/terrain/18/429254/177029.terrain new file mode 100644 index 000000000..a2fe0b01c Binary files /dev/null and b/public/terrain/18/429254/177029.terrain differ diff --git a/public/terrain/18/429255/176871.terrain b/public/terrain/18/429255/176871.terrain new file mode 100644 index 000000000..79a159c67 Binary files /dev/null and b/public/terrain/18/429255/176871.terrain differ diff --git a/public/terrain/18/429255/176872.terrain b/public/terrain/18/429255/176872.terrain new file mode 100644 index 000000000..d2098755c Binary files /dev/null and b/public/terrain/18/429255/176872.terrain differ diff --git a/public/terrain/18/429255/176873.terrain b/public/terrain/18/429255/176873.terrain new file mode 100644 index 000000000..38e8e4cea Binary files /dev/null and b/public/terrain/18/429255/176873.terrain differ diff --git a/public/terrain/18/429255/176874.terrain b/public/terrain/18/429255/176874.terrain new file mode 100644 index 000000000..876479d04 Binary files /dev/null and b/public/terrain/18/429255/176874.terrain differ diff --git a/public/terrain/18/429255/176875.terrain b/public/terrain/18/429255/176875.terrain new file mode 100644 index 000000000..23528194b Binary files /dev/null and b/public/terrain/18/429255/176875.terrain differ diff --git a/public/terrain/18/429255/176876.terrain b/public/terrain/18/429255/176876.terrain new file mode 100644 index 000000000..8c2ffa31c Binary files /dev/null and b/public/terrain/18/429255/176876.terrain differ diff --git a/public/terrain/18/429255/176877.terrain b/public/terrain/18/429255/176877.terrain new file mode 100644 index 000000000..97c3af193 Binary files /dev/null and b/public/terrain/18/429255/176877.terrain differ diff --git a/public/terrain/18/429255/176878.terrain b/public/terrain/18/429255/176878.terrain new file mode 100644 index 000000000..5694663fc Binary files /dev/null and b/public/terrain/18/429255/176878.terrain differ diff --git a/public/terrain/18/429255/176879.terrain b/public/terrain/18/429255/176879.terrain new file mode 100644 index 000000000..f91287afd Binary files /dev/null and b/public/terrain/18/429255/176879.terrain differ diff --git a/public/terrain/18/429255/176880.terrain b/public/terrain/18/429255/176880.terrain new file mode 100644 index 000000000..c231172e5 Binary files /dev/null and b/public/terrain/18/429255/176880.terrain differ diff --git a/public/terrain/18/429255/176881.terrain b/public/terrain/18/429255/176881.terrain new file mode 100644 index 000000000..26d3c86f6 Binary files /dev/null and b/public/terrain/18/429255/176881.terrain differ diff --git a/public/terrain/18/429255/176882.terrain b/public/terrain/18/429255/176882.terrain new file mode 100644 index 000000000..4ccb5d5ac Binary files /dev/null and b/public/terrain/18/429255/176882.terrain differ diff --git a/public/terrain/18/429255/176883.terrain b/public/terrain/18/429255/176883.terrain new file mode 100644 index 000000000..f1c83a357 Binary files /dev/null and b/public/terrain/18/429255/176883.terrain differ diff --git a/public/terrain/18/429255/176884.terrain b/public/terrain/18/429255/176884.terrain new file mode 100644 index 000000000..a853d3da7 Binary files /dev/null and b/public/terrain/18/429255/176884.terrain differ diff --git a/public/terrain/18/429255/176885.terrain b/public/terrain/18/429255/176885.terrain new file mode 100644 index 000000000..bcc4bb999 Binary files /dev/null and b/public/terrain/18/429255/176885.terrain differ diff --git a/public/terrain/18/429255/176886.terrain b/public/terrain/18/429255/176886.terrain new file mode 100644 index 000000000..424bcc7fa Binary files /dev/null and b/public/terrain/18/429255/176886.terrain differ diff --git a/public/terrain/18/429255/176887.terrain b/public/terrain/18/429255/176887.terrain new file mode 100644 index 000000000..f05dab665 Binary files /dev/null and b/public/terrain/18/429255/176887.terrain differ diff --git a/public/terrain/18/429255/176888.terrain b/public/terrain/18/429255/176888.terrain new file mode 100644 index 000000000..2e488c6b5 Binary files /dev/null and b/public/terrain/18/429255/176888.terrain differ diff --git a/public/terrain/18/429255/176889.terrain b/public/terrain/18/429255/176889.terrain new file mode 100644 index 000000000..c7a734c51 Binary files /dev/null and b/public/terrain/18/429255/176889.terrain differ diff --git a/public/terrain/18/429255/176890.terrain b/public/terrain/18/429255/176890.terrain new file mode 100644 index 000000000..0379d4798 Binary files /dev/null and b/public/terrain/18/429255/176890.terrain differ diff --git a/public/terrain/18/429255/176891.terrain b/public/terrain/18/429255/176891.terrain new file mode 100644 index 000000000..365f98dd4 Binary files /dev/null and b/public/terrain/18/429255/176891.terrain differ diff --git a/public/terrain/18/429255/176892.terrain b/public/terrain/18/429255/176892.terrain new file mode 100644 index 000000000..2f13eb07c Binary files /dev/null and b/public/terrain/18/429255/176892.terrain differ diff --git a/public/terrain/18/429255/176893.terrain b/public/terrain/18/429255/176893.terrain new file mode 100644 index 000000000..ff4b45251 Binary files /dev/null and b/public/terrain/18/429255/176893.terrain differ diff --git a/public/terrain/18/429255/176894.terrain b/public/terrain/18/429255/176894.terrain new file mode 100644 index 000000000..9bc054cdb Binary files /dev/null and b/public/terrain/18/429255/176894.terrain differ diff --git a/public/terrain/18/429255/176895.terrain b/public/terrain/18/429255/176895.terrain new file mode 100644 index 000000000..88b819a65 Binary files /dev/null and b/public/terrain/18/429255/176895.terrain differ diff --git a/public/terrain/18/429255/176896.terrain b/public/terrain/18/429255/176896.terrain new file mode 100644 index 000000000..659793f72 Binary files /dev/null and b/public/terrain/18/429255/176896.terrain differ diff --git a/public/terrain/18/429255/176897.terrain b/public/terrain/18/429255/176897.terrain new file mode 100644 index 000000000..0be3fe831 Binary files /dev/null and b/public/terrain/18/429255/176897.terrain differ diff --git a/public/terrain/18/429255/176898.terrain b/public/terrain/18/429255/176898.terrain new file mode 100644 index 000000000..ce5d05e6d Binary files /dev/null and b/public/terrain/18/429255/176898.terrain differ diff --git a/public/terrain/18/429255/176899.terrain b/public/terrain/18/429255/176899.terrain new file mode 100644 index 000000000..b1e13aa15 Binary files /dev/null and b/public/terrain/18/429255/176899.terrain differ diff --git a/public/terrain/18/429255/176900.terrain b/public/terrain/18/429255/176900.terrain new file mode 100644 index 000000000..5ce11b1fe Binary files /dev/null and b/public/terrain/18/429255/176900.terrain differ diff --git a/public/terrain/18/429255/176901.terrain b/public/terrain/18/429255/176901.terrain new file mode 100644 index 000000000..c20dc4cc5 Binary files /dev/null and b/public/terrain/18/429255/176901.terrain differ diff --git a/public/terrain/18/429255/176902.terrain b/public/terrain/18/429255/176902.terrain new file mode 100644 index 000000000..007a82ee6 Binary files /dev/null and b/public/terrain/18/429255/176902.terrain differ diff --git a/public/terrain/18/429255/176903.terrain b/public/terrain/18/429255/176903.terrain new file mode 100644 index 000000000..221218260 Binary files /dev/null and b/public/terrain/18/429255/176903.terrain differ diff --git a/public/terrain/18/429255/176904.terrain b/public/terrain/18/429255/176904.terrain new file mode 100644 index 000000000..2382d5219 Binary files /dev/null and b/public/terrain/18/429255/176904.terrain differ diff --git a/public/terrain/18/429255/176905.terrain b/public/terrain/18/429255/176905.terrain new file mode 100644 index 000000000..6828d4021 Binary files /dev/null and b/public/terrain/18/429255/176905.terrain differ diff --git a/public/terrain/18/429255/176906.terrain b/public/terrain/18/429255/176906.terrain new file mode 100644 index 000000000..e3d060394 Binary files /dev/null and b/public/terrain/18/429255/176906.terrain differ diff --git a/public/terrain/18/429255/176907.terrain b/public/terrain/18/429255/176907.terrain new file mode 100644 index 000000000..827875001 Binary files /dev/null and b/public/terrain/18/429255/176907.terrain differ diff --git a/public/terrain/18/429255/176908.terrain b/public/terrain/18/429255/176908.terrain new file mode 100644 index 000000000..adb68a967 Binary files /dev/null and b/public/terrain/18/429255/176908.terrain differ diff --git a/public/terrain/18/429255/176909.terrain b/public/terrain/18/429255/176909.terrain new file mode 100644 index 000000000..e052cf7fc Binary files /dev/null and b/public/terrain/18/429255/176909.terrain differ diff --git a/public/terrain/18/429255/176910.terrain b/public/terrain/18/429255/176910.terrain new file mode 100644 index 000000000..8329c24a1 Binary files /dev/null and b/public/terrain/18/429255/176910.terrain differ diff --git a/public/terrain/18/429255/176911.terrain b/public/terrain/18/429255/176911.terrain new file mode 100644 index 000000000..847d1d74f Binary files /dev/null and b/public/terrain/18/429255/176911.terrain differ diff --git a/public/terrain/18/429255/176912.terrain b/public/terrain/18/429255/176912.terrain new file mode 100644 index 000000000..49850bdc2 Binary files /dev/null and b/public/terrain/18/429255/176912.terrain differ diff --git a/public/terrain/18/429255/176913.terrain b/public/terrain/18/429255/176913.terrain new file mode 100644 index 000000000..381517805 Binary files /dev/null and b/public/terrain/18/429255/176913.terrain differ diff --git a/public/terrain/18/429255/176914.terrain b/public/terrain/18/429255/176914.terrain new file mode 100644 index 000000000..682f8aa1c Binary files /dev/null and b/public/terrain/18/429255/176914.terrain differ diff --git a/public/terrain/18/429255/176915.terrain b/public/terrain/18/429255/176915.terrain new file mode 100644 index 000000000..c284cb5a2 Binary files /dev/null and b/public/terrain/18/429255/176915.terrain differ diff --git a/public/terrain/18/429255/176916.terrain b/public/terrain/18/429255/176916.terrain new file mode 100644 index 000000000..28ed8d4ca Binary files /dev/null and b/public/terrain/18/429255/176916.terrain differ diff --git a/public/terrain/18/429255/176917.terrain b/public/terrain/18/429255/176917.terrain new file mode 100644 index 000000000..ccc84ba9a Binary files /dev/null and b/public/terrain/18/429255/176917.terrain differ diff --git a/public/terrain/18/429255/176918.terrain b/public/terrain/18/429255/176918.terrain new file mode 100644 index 000000000..b2819e0ae Binary files /dev/null and b/public/terrain/18/429255/176918.terrain differ diff --git a/public/terrain/18/429255/176919.terrain b/public/terrain/18/429255/176919.terrain new file mode 100644 index 000000000..b34d83388 Binary files /dev/null and b/public/terrain/18/429255/176919.terrain differ diff --git a/public/terrain/18/429255/176920.terrain b/public/terrain/18/429255/176920.terrain new file mode 100644 index 000000000..02b63891f Binary files /dev/null and b/public/terrain/18/429255/176920.terrain differ diff --git a/public/terrain/18/429255/176921.terrain b/public/terrain/18/429255/176921.terrain new file mode 100644 index 000000000..8066ec3a7 Binary files /dev/null and b/public/terrain/18/429255/176921.terrain differ diff --git a/public/terrain/18/429255/176922.terrain b/public/terrain/18/429255/176922.terrain new file mode 100644 index 000000000..a9a02d0f7 Binary files /dev/null and b/public/terrain/18/429255/176922.terrain differ diff --git a/public/terrain/18/429255/176923.terrain b/public/terrain/18/429255/176923.terrain new file mode 100644 index 000000000..3fc03939c Binary files /dev/null and b/public/terrain/18/429255/176923.terrain differ diff --git a/public/terrain/18/429255/176924.terrain b/public/terrain/18/429255/176924.terrain new file mode 100644 index 000000000..23c871814 Binary files /dev/null and b/public/terrain/18/429255/176924.terrain differ diff --git a/public/terrain/18/429255/176925.terrain b/public/terrain/18/429255/176925.terrain new file mode 100644 index 000000000..15693df17 Binary files /dev/null and b/public/terrain/18/429255/176925.terrain differ diff --git a/public/terrain/18/429255/176926.terrain b/public/terrain/18/429255/176926.terrain new file mode 100644 index 000000000..4cfb1c266 Binary files /dev/null and b/public/terrain/18/429255/176926.terrain differ diff --git a/public/terrain/18/429255/176927.terrain b/public/terrain/18/429255/176927.terrain new file mode 100644 index 000000000..5deb69bd1 Binary files /dev/null and b/public/terrain/18/429255/176927.terrain differ diff --git a/public/terrain/18/429255/176928.terrain b/public/terrain/18/429255/176928.terrain new file mode 100644 index 000000000..d475c3475 Binary files /dev/null and b/public/terrain/18/429255/176928.terrain differ diff --git a/public/terrain/18/429255/176929.terrain b/public/terrain/18/429255/176929.terrain new file mode 100644 index 000000000..3af9483b7 Binary files /dev/null and b/public/terrain/18/429255/176929.terrain differ diff --git a/public/terrain/18/429255/176930.terrain b/public/terrain/18/429255/176930.terrain new file mode 100644 index 000000000..5b3844c9b Binary files /dev/null and b/public/terrain/18/429255/176930.terrain differ diff --git a/public/terrain/18/429255/176931.terrain b/public/terrain/18/429255/176931.terrain new file mode 100644 index 000000000..3aa9d673a Binary files /dev/null and b/public/terrain/18/429255/176931.terrain differ diff --git a/public/terrain/18/429255/176932.terrain b/public/terrain/18/429255/176932.terrain new file mode 100644 index 000000000..9db3e885b Binary files /dev/null and b/public/terrain/18/429255/176932.terrain differ diff --git a/public/terrain/18/429255/176933.terrain b/public/terrain/18/429255/176933.terrain new file mode 100644 index 000000000..b0d2f2db3 Binary files /dev/null and b/public/terrain/18/429255/176933.terrain differ diff --git a/public/terrain/18/429255/176934.terrain b/public/terrain/18/429255/176934.terrain new file mode 100644 index 000000000..8f4d6a888 Binary files /dev/null and b/public/terrain/18/429255/176934.terrain differ diff --git a/public/terrain/18/429255/176935.terrain b/public/terrain/18/429255/176935.terrain new file mode 100644 index 000000000..0a69e8842 Binary files /dev/null and b/public/terrain/18/429255/176935.terrain differ diff --git a/public/terrain/18/429255/176936.terrain b/public/terrain/18/429255/176936.terrain new file mode 100644 index 000000000..e599d0600 Binary files /dev/null and b/public/terrain/18/429255/176936.terrain differ diff --git a/public/terrain/18/429255/176937.terrain b/public/terrain/18/429255/176937.terrain new file mode 100644 index 000000000..0a9fbbe68 Binary files /dev/null and b/public/terrain/18/429255/176937.terrain differ diff --git a/public/terrain/18/429255/176938.terrain b/public/terrain/18/429255/176938.terrain new file mode 100644 index 000000000..5476a1c5c Binary files /dev/null and b/public/terrain/18/429255/176938.terrain differ diff --git a/public/terrain/18/429255/176939.terrain b/public/terrain/18/429255/176939.terrain new file mode 100644 index 000000000..ec187f14f Binary files /dev/null and b/public/terrain/18/429255/176939.terrain differ diff --git a/public/terrain/18/429255/176940.terrain b/public/terrain/18/429255/176940.terrain new file mode 100644 index 000000000..00f34db1d Binary files /dev/null and b/public/terrain/18/429255/176940.terrain differ diff --git a/public/terrain/18/429255/176941.terrain b/public/terrain/18/429255/176941.terrain new file mode 100644 index 000000000..ccb149ac9 Binary files /dev/null and b/public/terrain/18/429255/176941.terrain differ diff --git a/public/terrain/18/429255/176942.terrain b/public/terrain/18/429255/176942.terrain new file mode 100644 index 000000000..af4e156b9 Binary files /dev/null and b/public/terrain/18/429255/176942.terrain differ diff --git a/public/terrain/18/429255/176943.terrain b/public/terrain/18/429255/176943.terrain new file mode 100644 index 000000000..b25bb54ad Binary files /dev/null and b/public/terrain/18/429255/176943.terrain differ diff --git a/public/terrain/18/429255/176944.terrain b/public/terrain/18/429255/176944.terrain new file mode 100644 index 000000000..23adbc049 Binary files /dev/null and b/public/terrain/18/429255/176944.terrain differ diff --git a/public/terrain/18/429255/176945.terrain b/public/terrain/18/429255/176945.terrain new file mode 100644 index 000000000..2fad6ac1f Binary files /dev/null and b/public/terrain/18/429255/176945.terrain differ diff --git a/public/terrain/18/429255/176946.terrain b/public/terrain/18/429255/176946.terrain new file mode 100644 index 000000000..51704b45a Binary files /dev/null and b/public/terrain/18/429255/176946.terrain differ diff --git a/public/terrain/18/429255/176947.terrain b/public/terrain/18/429255/176947.terrain new file mode 100644 index 000000000..86d753fa5 Binary files /dev/null and b/public/terrain/18/429255/176947.terrain differ diff --git a/public/terrain/18/429255/176948.terrain b/public/terrain/18/429255/176948.terrain new file mode 100644 index 000000000..631d0f29f Binary files /dev/null and b/public/terrain/18/429255/176948.terrain differ diff --git a/public/terrain/18/429255/176949.terrain b/public/terrain/18/429255/176949.terrain new file mode 100644 index 000000000..49eb3c937 Binary files /dev/null and b/public/terrain/18/429255/176949.terrain differ diff --git a/public/terrain/18/429255/176950.terrain b/public/terrain/18/429255/176950.terrain new file mode 100644 index 000000000..f88e9928e Binary files /dev/null and b/public/terrain/18/429255/176950.terrain differ diff --git a/public/terrain/18/429255/176951.terrain b/public/terrain/18/429255/176951.terrain new file mode 100644 index 000000000..f72008bd9 Binary files /dev/null and b/public/terrain/18/429255/176951.terrain differ diff --git a/public/terrain/18/429255/176952.terrain b/public/terrain/18/429255/176952.terrain new file mode 100644 index 000000000..6df447bed Binary files /dev/null and b/public/terrain/18/429255/176952.terrain differ diff --git a/public/terrain/18/429255/176953.terrain b/public/terrain/18/429255/176953.terrain new file mode 100644 index 000000000..a563008ac Binary files /dev/null and b/public/terrain/18/429255/176953.terrain differ diff --git a/public/terrain/18/429255/176954.terrain b/public/terrain/18/429255/176954.terrain new file mode 100644 index 000000000..9220f7a9b Binary files /dev/null and b/public/terrain/18/429255/176954.terrain differ diff --git a/public/terrain/18/429255/176955.terrain b/public/terrain/18/429255/176955.terrain new file mode 100644 index 000000000..4b4b693bd Binary files /dev/null and b/public/terrain/18/429255/176955.terrain differ diff --git a/public/terrain/18/429255/176956.terrain b/public/terrain/18/429255/176956.terrain new file mode 100644 index 000000000..94c82a893 Binary files /dev/null and b/public/terrain/18/429255/176956.terrain differ diff --git a/public/terrain/18/429255/176957.terrain b/public/terrain/18/429255/176957.terrain new file mode 100644 index 000000000..b0cf7b6a3 Binary files /dev/null and b/public/terrain/18/429255/176957.terrain differ diff --git a/public/terrain/18/429255/176958.terrain b/public/terrain/18/429255/176958.terrain new file mode 100644 index 000000000..3634dc77a Binary files /dev/null and b/public/terrain/18/429255/176958.terrain differ diff --git a/public/terrain/18/429255/176959.terrain b/public/terrain/18/429255/176959.terrain new file mode 100644 index 000000000..869456175 Binary files /dev/null and b/public/terrain/18/429255/176959.terrain differ diff --git a/public/terrain/18/429255/176960.terrain b/public/terrain/18/429255/176960.terrain new file mode 100644 index 000000000..3452e0f3f Binary files /dev/null and b/public/terrain/18/429255/176960.terrain differ diff --git a/public/terrain/18/429255/176961.terrain b/public/terrain/18/429255/176961.terrain new file mode 100644 index 000000000..74210769f Binary files /dev/null and b/public/terrain/18/429255/176961.terrain differ diff --git a/public/terrain/18/429255/176962.terrain b/public/terrain/18/429255/176962.terrain new file mode 100644 index 000000000..522e0d58b Binary files /dev/null and b/public/terrain/18/429255/176962.terrain differ diff --git a/public/terrain/18/429255/176963.terrain b/public/terrain/18/429255/176963.terrain new file mode 100644 index 000000000..ae315a8cb Binary files /dev/null and b/public/terrain/18/429255/176963.terrain differ diff --git a/public/terrain/18/429255/176964.terrain b/public/terrain/18/429255/176964.terrain new file mode 100644 index 000000000..5c8be7f0f Binary files /dev/null and b/public/terrain/18/429255/176964.terrain differ diff --git a/public/terrain/18/429255/176965.terrain b/public/terrain/18/429255/176965.terrain new file mode 100644 index 000000000..7c9ff0191 Binary files /dev/null and b/public/terrain/18/429255/176965.terrain differ diff --git a/public/terrain/18/429255/176966.terrain b/public/terrain/18/429255/176966.terrain new file mode 100644 index 000000000..c89cc5d60 Binary files /dev/null and b/public/terrain/18/429255/176966.terrain differ diff --git a/public/terrain/18/429255/176967.terrain b/public/terrain/18/429255/176967.terrain new file mode 100644 index 000000000..3b4f86a16 Binary files /dev/null and b/public/terrain/18/429255/176967.terrain differ diff --git a/public/terrain/18/429255/176968.terrain b/public/terrain/18/429255/176968.terrain new file mode 100644 index 000000000..e1f99ab6f Binary files /dev/null and b/public/terrain/18/429255/176968.terrain differ diff --git a/public/terrain/18/429255/176969.terrain b/public/terrain/18/429255/176969.terrain new file mode 100644 index 000000000..9a68e8096 Binary files /dev/null and b/public/terrain/18/429255/176969.terrain differ diff --git a/public/terrain/18/429255/176970.terrain b/public/terrain/18/429255/176970.terrain new file mode 100644 index 000000000..610621944 Binary files /dev/null and b/public/terrain/18/429255/176970.terrain differ diff --git a/public/terrain/18/429255/176971.terrain b/public/terrain/18/429255/176971.terrain new file mode 100644 index 000000000..97edb1dd0 Binary files /dev/null and b/public/terrain/18/429255/176971.terrain differ diff --git a/public/terrain/18/429255/176972.terrain b/public/terrain/18/429255/176972.terrain new file mode 100644 index 000000000..4206a1989 Binary files /dev/null and b/public/terrain/18/429255/176972.terrain differ diff --git a/public/terrain/18/429255/176973.terrain b/public/terrain/18/429255/176973.terrain new file mode 100644 index 000000000..d98354da7 Binary files /dev/null and b/public/terrain/18/429255/176973.terrain differ diff --git a/public/terrain/18/429255/176974.terrain b/public/terrain/18/429255/176974.terrain new file mode 100644 index 000000000..72ef09a22 Binary files /dev/null and b/public/terrain/18/429255/176974.terrain differ diff --git a/public/terrain/18/429255/176975.terrain b/public/terrain/18/429255/176975.terrain new file mode 100644 index 000000000..2e680ac96 Binary files /dev/null and b/public/terrain/18/429255/176975.terrain differ diff --git a/public/terrain/18/429255/176976.terrain b/public/terrain/18/429255/176976.terrain new file mode 100644 index 000000000..675c7885f Binary files /dev/null and b/public/terrain/18/429255/176976.terrain differ diff --git a/public/terrain/18/429255/176977.terrain b/public/terrain/18/429255/176977.terrain new file mode 100644 index 000000000..a97d345c5 Binary files /dev/null and b/public/terrain/18/429255/176977.terrain differ diff --git a/public/terrain/18/429255/176978.terrain b/public/terrain/18/429255/176978.terrain new file mode 100644 index 000000000..04aa8113b Binary files /dev/null and b/public/terrain/18/429255/176978.terrain differ diff --git a/public/terrain/18/429255/176979.terrain b/public/terrain/18/429255/176979.terrain new file mode 100644 index 000000000..f494d96a9 Binary files /dev/null and b/public/terrain/18/429255/176979.terrain differ diff --git a/public/terrain/18/429255/176980.terrain b/public/terrain/18/429255/176980.terrain new file mode 100644 index 000000000..2e91aa7cd Binary files /dev/null and b/public/terrain/18/429255/176980.terrain differ diff --git a/public/terrain/18/429255/176981.terrain b/public/terrain/18/429255/176981.terrain new file mode 100644 index 000000000..e1cbf351f Binary files /dev/null and b/public/terrain/18/429255/176981.terrain differ diff --git a/public/terrain/18/429255/176982.terrain b/public/terrain/18/429255/176982.terrain new file mode 100644 index 000000000..41fd3ccfe Binary files /dev/null and b/public/terrain/18/429255/176982.terrain differ diff --git a/public/terrain/18/429255/176983.terrain b/public/terrain/18/429255/176983.terrain new file mode 100644 index 000000000..d4b27126f Binary files /dev/null and b/public/terrain/18/429255/176983.terrain differ diff --git a/public/terrain/18/429255/176984.terrain b/public/terrain/18/429255/176984.terrain new file mode 100644 index 000000000..d58b69c67 Binary files /dev/null and b/public/terrain/18/429255/176984.terrain differ diff --git a/public/terrain/18/429255/176985.terrain b/public/terrain/18/429255/176985.terrain new file mode 100644 index 000000000..713b93940 Binary files /dev/null and b/public/terrain/18/429255/176985.terrain differ diff --git a/public/terrain/18/429255/176986.terrain b/public/terrain/18/429255/176986.terrain new file mode 100644 index 000000000..5451b2b78 Binary files /dev/null and b/public/terrain/18/429255/176986.terrain differ diff --git a/public/terrain/18/429255/176987.terrain b/public/terrain/18/429255/176987.terrain new file mode 100644 index 000000000..23877c138 Binary files /dev/null and b/public/terrain/18/429255/176987.terrain differ diff --git a/public/terrain/18/429255/176988.terrain b/public/terrain/18/429255/176988.terrain new file mode 100644 index 000000000..7784268bb Binary files /dev/null and b/public/terrain/18/429255/176988.terrain differ diff --git a/public/terrain/18/429255/176989.terrain b/public/terrain/18/429255/176989.terrain new file mode 100644 index 000000000..8a596fab2 Binary files /dev/null and b/public/terrain/18/429255/176989.terrain differ diff --git a/public/terrain/18/429255/176990.terrain b/public/terrain/18/429255/176990.terrain new file mode 100644 index 000000000..b11b476a1 Binary files /dev/null and b/public/terrain/18/429255/176990.terrain differ diff --git a/public/terrain/18/429255/176991.terrain b/public/terrain/18/429255/176991.terrain new file mode 100644 index 000000000..8ef206b9f Binary files /dev/null and b/public/terrain/18/429255/176991.terrain differ diff --git a/public/terrain/18/429255/176992.terrain b/public/terrain/18/429255/176992.terrain new file mode 100644 index 000000000..b96d59ba2 Binary files /dev/null and b/public/terrain/18/429255/176992.terrain differ diff --git a/public/terrain/18/429255/176993.terrain b/public/terrain/18/429255/176993.terrain new file mode 100644 index 000000000..936d2d27d Binary files /dev/null and b/public/terrain/18/429255/176993.terrain differ diff --git a/public/terrain/18/429255/176994.terrain b/public/terrain/18/429255/176994.terrain new file mode 100644 index 000000000..07d83f577 Binary files /dev/null and b/public/terrain/18/429255/176994.terrain differ diff --git a/public/terrain/18/429255/176995.terrain b/public/terrain/18/429255/176995.terrain new file mode 100644 index 000000000..5c52f197b Binary files /dev/null and b/public/terrain/18/429255/176995.terrain differ diff --git a/public/terrain/18/429255/176996.terrain b/public/terrain/18/429255/176996.terrain new file mode 100644 index 000000000..f6e30899d Binary files /dev/null and b/public/terrain/18/429255/176996.terrain differ diff --git a/public/terrain/18/429255/176997.terrain b/public/terrain/18/429255/176997.terrain new file mode 100644 index 000000000..85541a760 Binary files /dev/null and b/public/terrain/18/429255/176997.terrain differ diff --git a/public/terrain/18/429255/176998.terrain b/public/terrain/18/429255/176998.terrain new file mode 100644 index 000000000..4acd7cede Binary files /dev/null and b/public/terrain/18/429255/176998.terrain differ diff --git a/public/terrain/18/429255/176999.terrain b/public/terrain/18/429255/176999.terrain new file mode 100644 index 000000000..f05f11b21 Binary files /dev/null and b/public/terrain/18/429255/176999.terrain differ diff --git a/public/terrain/18/429255/177000.terrain b/public/terrain/18/429255/177000.terrain new file mode 100644 index 000000000..c2f3010c8 Binary files /dev/null and b/public/terrain/18/429255/177000.terrain differ diff --git a/public/terrain/18/429255/177001.terrain b/public/terrain/18/429255/177001.terrain new file mode 100644 index 000000000..da84ebf10 Binary files /dev/null and b/public/terrain/18/429255/177001.terrain differ diff --git a/public/terrain/18/429255/177002.terrain b/public/terrain/18/429255/177002.terrain new file mode 100644 index 000000000..83c5429d8 Binary files /dev/null and b/public/terrain/18/429255/177002.terrain differ diff --git a/public/terrain/18/429255/177003.terrain b/public/terrain/18/429255/177003.terrain new file mode 100644 index 000000000..d587cbc36 Binary files /dev/null and b/public/terrain/18/429255/177003.terrain differ diff --git a/public/terrain/18/429255/177004.terrain b/public/terrain/18/429255/177004.terrain new file mode 100644 index 000000000..b34954a36 Binary files /dev/null and b/public/terrain/18/429255/177004.terrain differ diff --git a/public/terrain/18/429255/177005.terrain b/public/terrain/18/429255/177005.terrain new file mode 100644 index 000000000..049a10d7d Binary files /dev/null and b/public/terrain/18/429255/177005.terrain differ diff --git a/public/terrain/18/429255/177006.terrain b/public/terrain/18/429255/177006.terrain new file mode 100644 index 000000000..fcf509d8d Binary files /dev/null and b/public/terrain/18/429255/177006.terrain differ diff --git a/public/terrain/18/429255/177007.terrain b/public/terrain/18/429255/177007.terrain new file mode 100644 index 000000000..b35dbd168 Binary files /dev/null and b/public/terrain/18/429255/177007.terrain differ diff --git a/public/terrain/18/429255/177008.terrain b/public/terrain/18/429255/177008.terrain new file mode 100644 index 000000000..b3612d9d3 Binary files /dev/null and b/public/terrain/18/429255/177008.terrain differ diff --git a/public/terrain/18/429255/177009.terrain b/public/terrain/18/429255/177009.terrain new file mode 100644 index 000000000..a8e5a5783 Binary files /dev/null and b/public/terrain/18/429255/177009.terrain differ diff --git a/public/terrain/18/429255/177010.terrain b/public/terrain/18/429255/177010.terrain new file mode 100644 index 000000000..c5ce87c75 Binary files /dev/null and b/public/terrain/18/429255/177010.terrain differ diff --git a/public/terrain/18/429255/177011.terrain b/public/terrain/18/429255/177011.terrain new file mode 100644 index 000000000..5f5745c7a Binary files /dev/null and b/public/terrain/18/429255/177011.terrain differ diff --git a/public/terrain/18/429255/177012.terrain b/public/terrain/18/429255/177012.terrain new file mode 100644 index 000000000..8c6c39a7e Binary files /dev/null and b/public/terrain/18/429255/177012.terrain differ diff --git a/public/terrain/18/429255/177013.terrain b/public/terrain/18/429255/177013.terrain new file mode 100644 index 000000000..7b06301af Binary files /dev/null and b/public/terrain/18/429255/177013.terrain differ diff --git a/public/terrain/18/429255/177014.terrain b/public/terrain/18/429255/177014.terrain new file mode 100644 index 000000000..70f0f42f2 Binary files /dev/null and b/public/terrain/18/429255/177014.terrain differ diff --git a/public/terrain/18/429255/177015.terrain b/public/terrain/18/429255/177015.terrain new file mode 100644 index 000000000..095b2e316 Binary files /dev/null and b/public/terrain/18/429255/177015.terrain differ diff --git a/public/terrain/18/429255/177016.terrain b/public/terrain/18/429255/177016.terrain new file mode 100644 index 000000000..a348dd1b2 Binary files /dev/null and b/public/terrain/18/429255/177016.terrain differ diff --git a/public/terrain/18/429255/177017.terrain b/public/terrain/18/429255/177017.terrain new file mode 100644 index 000000000..8865fb0c4 Binary files /dev/null and b/public/terrain/18/429255/177017.terrain differ diff --git a/public/terrain/18/429255/177018.terrain b/public/terrain/18/429255/177018.terrain new file mode 100644 index 000000000..c5e683db8 Binary files /dev/null and b/public/terrain/18/429255/177018.terrain differ diff --git a/public/terrain/18/429255/177019.terrain b/public/terrain/18/429255/177019.terrain new file mode 100644 index 000000000..d9867d26d Binary files /dev/null and b/public/terrain/18/429255/177019.terrain differ diff --git a/public/terrain/18/429255/177020.terrain b/public/terrain/18/429255/177020.terrain new file mode 100644 index 000000000..c0d11cdf7 Binary files /dev/null and b/public/terrain/18/429255/177020.terrain differ diff --git a/public/terrain/18/429255/177021.terrain b/public/terrain/18/429255/177021.terrain new file mode 100644 index 000000000..fbaf6a5ca Binary files /dev/null and b/public/terrain/18/429255/177021.terrain differ diff --git a/public/terrain/18/429255/177022.terrain b/public/terrain/18/429255/177022.terrain new file mode 100644 index 000000000..16cd9741f Binary files /dev/null and b/public/terrain/18/429255/177022.terrain differ diff --git a/public/terrain/18/429255/177023.terrain b/public/terrain/18/429255/177023.terrain new file mode 100644 index 000000000..196de6d9f Binary files /dev/null and b/public/terrain/18/429255/177023.terrain differ diff --git a/public/terrain/18/429255/177024.terrain b/public/terrain/18/429255/177024.terrain new file mode 100644 index 000000000..129870227 Binary files /dev/null and b/public/terrain/18/429255/177024.terrain differ diff --git a/public/terrain/18/429255/177025.terrain b/public/terrain/18/429255/177025.terrain new file mode 100644 index 000000000..3d1d096c9 Binary files /dev/null and b/public/terrain/18/429255/177025.terrain differ diff --git a/public/terrain/18/429255/177026.terrain b/public/terrain/18/429255/177026.terrain new file mode 100644 index 000000000..87909d43f Binary files /dev/null and b/public/terrain/18/429255/177026.terrain differ diff --git a/public/terrain/18/429255/177027.terrain b/public/terrain/18/429255/177027.terrain new file mode 100644 index 000000000..73921b5ff Binary files /dev/null and b/public/terrain/18/429255/177027.terrain differ diff --git a/public/terrain/18/429255/177028.terrain b/public/terrain/18/429255/177028.terrain new file mode 100644 index 000000000..126ed115a Binary files /dev/null and b/public/terrain/18/429255/177028.terrain differ diff --git a/public/terrain/18/429255/177029.terrain b/public/terrain/18/429255/177029.terrain new file mode 100644 index 000000000..62a606848 Binary files /dev/null and b/public/terrain/18/429255/177029.terrain differ diff --git a/public/terrain/18/429256/176871.terrain b/public/terrain/18/429256/176871.terrain new file mode 100644 index 000000000..7659f8577 Binary files /dev/null and b/public/terrain/18/429256/176871.terrain differ diff --git a/public/terrain/18/429256/176872.terrain b/public/terrain/18/429256/176872.terrain new file mode 100644 index 000000000..2013aee24 Binary files /dev/null and b/public/terrain/18/429256/176872.terrain differ diff --git a/public/terrain/18/429256/176873.terrain b/public/terrain/18/429256/176873.terrain new file mode 100644 index 000000000..5602f5be1 Binary files /dev/null and b/public/terrain/18/429256/176873.terrain differ diff --git a/public/terrain/18/429256/176874.terrain b/public/terrain/18/429256/176874.terrain new file mode 100644 index 000000000..989084e2d Binary files /dev/null and b/public/terrain/18/429256/176874.terrain differ diff --git a/public/terrain/18/429256/176875.terrain b/public/terrain/18/429256/176875.terrain new file mode 100644 index 000000000..ea239f9a8 Binary files /dev/null and b/public/terrain/18/429256/176875.terrain differ diff --git a/public/terrain/18/429256/176876.terrain b/public/terrain/18/429256/176876.terrain new file mode 100644 index 000000000..2b8328faa Binary files /dev/null and b/public/terrain/18/429256/176876.terrain differ diff --git a/public/terrain/18/429256/176877.terrain b/public/terrain/18/429256/176877.terrain new file mode 100644 index 000000000..e7421dcef Binary files /dev/null and b/public/terrain/18/429256/176877.terrain differ diff --git a/public/terrain/18/429256/176878.terrain b/public/terrain/18/429256/176878.terrain new file mode 100644 index 000000000..2549879fd Binary files /dev/null and b/public/terrain/18/429256/176878.terrain differ diff --git a/public/terrain/18/429256/176879.terrain b/public/terrain/18/429256/176879.terrain new file mode 100644 index 000000000..e6d7029bb Binary files /dev/null and b/public/terrain/18/429256/176879.terrain differ diff --git a/public/terrain/18/429256/176880.terrain b/public/terrain/18/429256/176880.terrain new file mode 100644 index 000000000..21628b9da Binary files /dev/null and b/public/terrain/18/429256/176880.terrain differ diff --git a/public/terrain/18/429256/176881.terrain b/public/terrain/18/429256/176881.terrain new file mode 100644 index 000000000..0314b32ad Binary files /dev/null and b/public/terrain/18/429256/176881.terrain differ diff --git a/public/terrain/18/429256/176882.terrain b/public/terrain/18/429256/176882.terrain new file mode 100644 index 000000000..1f62c205e Binary files /dev/null and b/public/terrain/18/429256/176882.terrain differ diff --git a/public/terrain/18/429256/176883.terrain b/public/terrain/18/429256/176883.terrain new file mode 100644 index 000000000..b43e47e98 Binary files /dev/null and b/public/terrain/18/429256/176883.terrain differ diff --git a/public/terrain/18/429256/176884.terrain b/public/terrain/18/429256/176884.terrain new file mode 100644 index 000000000..ab893a0e6 Binary files /dev/null and b/public/terrain/18/429256/176884.terrain differ diff --git a/public/terrain/18/429256/176885.terrain b/public/terrain/18/429256/176885.terrain new file mode 100644 index 000000000..d27eab4c4 Binary files /dev/null and b/public/terrain/18/429256/176885.terrain differ diff --git a/public/terrain/18/429256/176886.terrain b/public/terrain/18/429256/176886.terrain new file mode 100644 index 000000000..7be56e823 Binary files /dev/null and b/public/terrain/18/429256/176886.terrain differ diff --git a/public/terrain/18/429256/176887.terrain b/public/terrain/18/429256/176887.terrain new file mode 100644 index 000000000..122119a34 Binary files /dev/null and b/public/terrain/18/429256/176887.terrain differ diff --git a/public/terrain/18/429256/176888.terrain b/public/terrain/18/429256/176888.terrain new file mode 100644 index 000000000..d2647824c Binary files /dev/null and b/public/terrain/18/429256/176888.terrain differ diff --git a/public/terrain/18/429256/176889.terrain b/public/terrain/18/429256/176889.terrain new file mode 100644 index 000000000..6d013c1a5 Binary files /dev/null and b/public/terrain/18/429256/176889.terrain differ diff --git a/public/terrain/18/429256/176890.terrain b/public/terrain/18/429256/176890.terrain new file mode 100644 index 000000000..b19c76059 Binary files /dev/null and b/public/terrain/18/429256/176890.terrain differ diff --git a/public/terrain/18/429256/176891.terrain b/public/terrain/18/429256/176891.terrain new file mode 100644 index 000000000..667f53b0f Binary files /dev/null and b/public/terrain/18/429256/176891.terrain differ diff --git a/public/terrain/18/429256/176892.terrain b/public/terrain/18/429256/176892.terrain new file mode 100644 index 000000000..239e60590 Binary files /dev/null and b/public/terrain/18/429256/176892.terrain differ diff --git a/public/terrain/18/429256/176893.terrain b/public/terrain/18/429256/176893.terrain new file mode 100644 index 000000000..529df3f21 Binary files /dev/null and b/public/terrain/18/429256/176893.terrain differ diff --git a/public/terrain/18/429256/176894.terrain b/public/terrain/18/429256/176894.terrain new file mode 100644 index 000000000..686e2ce61 Binary files /dev/null and b/public/terrain/18/429256/176894.terrain differ diff --git a/public/terrain/18/429256/176895.terrain b/public/terrain/18/429256/176895.terrain new file mode 100644 index 000000000..388011993 Binary files /dev/null and b/public/terrain/18/429256/176895.terrain differ diff --git a/public/terrain/18/429256/176896.terrain b/public/terrain/18/429256/176896.terrain new file mode 100644 index 000000000..4a06a5921 Binary files /dev/null and b/public/terrain/18/429256/176896.terrain differ diff --git a/public/terrain/18/429256/176897.terrain b/public/terrain/18/429256/176897.terrain new file mode 100644 index 000000000..519bb5940 Binary files /dev/null and b/public/terrain/18/429256/176897.terrain differ diff --git a/public/terrain/18/429256/176898.terrain b/public/terrain/18/429256/176898.terrain new file mode 100644 index 000000000..aa8b1c3b5 Binary files /dev/null and b/public/terrain/18/429256/176898.terrain differ diff --git a/public/terrain/18/429256/176899.terrain b/public/terrain/18/429256/176899.terrain new file mode 100644 index 000000000..a1715c9c4 Binary files /dev/null and b/public/terrain/18/429256/176899.terrain differ diff --git a/public/terrain/18/429256/176900.terrain b/public/terrain/18/429256/176900.terrain new file mode 100644 index 000000000..3d6bac819 Binary files /dev/null and b/public/terrain/18/429256/176900.terrain differ diff --git a/public/terrain/18/429256/176901.terrain b/public/terrain/18/429256/176901.terrain new file mode 100644 index 000000000..4a76646fa Binary files /dev/null and b/public/terrain/18/429256/176901.terrain differ diff --git a/public/terrain/18/429256/176902.terrain b/public/terrain/18/429256/176902.terrain new file mode 100644 index 000000000..37c7f455c Binary files /dev/null and b/public/terrain/18/429256/176902.terrain differ diff --git a/public/terrain/18/429256/176903.terrain b/public/terrain/18/429256/176903.terrain new file mode 100644 index 000000000..75223c35c Binary files /dev/null and b/public/terrain/18/429256/176903.terrain differ diff --git a/public/terrain/18/429256/176904.terrain b/public/terrain/18/429256/176904.terrain new file mode 100644 index 000000000..fe0372d3e Binary files /dev/null and b/public/terrain/18/429256/176904.terrain differ diff --git a/public/terrain/18/429256/176905.terrain b/public/terrain/18/429256/176905.terrain new file mode 100644 index 000000000..afd769f02 Binary files /dev/null and b/public/terrain/18/429256/176905.terrain differ diff --git a/public/terrain/18/429256/176906.terrain b/public/terrain/18/429256/176906.terrain new file mode 100644 index 000000000..bbf13abc5 Binary files /dev/null and b/public/terrain/18/429256/176906.terrain differ diff --git a/public/terrain/18/429256/176907.terrain b/public/terrain/18/429256/176907.terrain new file mode 100644 index 000000000..8c96b45ba Binary files /dev/null and b/public/terrain/18/429256/176907.terrain differ diff --git a/public/terrain/18/429256/176908.terrain b/public/terrain/18/429256/176908.terrain new file mode 100644 index 000000000..0f1f02b2f Binary files /dev/null and b/public/terrain/18/429256/176908.terrain differ diff --git a/public/terrain/18/429256/176909.terrain b/public/terrain/18/429256/176909.terrain new file mode 100644 index 000000000..957a289f0 Binary files /dev/null and b/public/terrain/18/429256/176909.terrain differ diff --git a/public/terrain/18/429256/176910.terrain b/public/terrain/18/429256/176910.terrain new file mode 100644 index 000000000..6fc1cc5ad Binary files /dev/null and b/public/terrain/18/429256/176910.terrain differ diff --git a/public/terrain/18/429256/176911.terrain b/public/terrain/18/429256/176911.terrain new file mode 100644 index 000000000..620113f47 Binary files /dev/null and b/public/terrain/18/429256/176911.terrain differ diff --git a/public/terrain/18/429256/176912.terrain b/public/terrain/18/429256/176912.terrain new file mode 100644 index 000000000..647764fce Binary files /dev/null and b/public/terrain/18/429256/176912.terrain differ diff --git a/public/terrain/18/429256/176913.terrain b/public/terrain/18/429256/176913.terrain new file mode 100644 index 000000000..f326b6fa0 Binary files /dev/null and b/public/terrain/18/429256/176913.terrain differ diff --git a/public/terrain/18/429256/176914.terrain b/public/terrain/18/429256/176914.terrain new file mode 100644 index 000000000..1c6bad473 Binary files /dev/null and b/public/terrain/18/429256/176914.terrain differ diff --git a/public/terrain/18/429256/176915.terrain b/public/terrain/18/429256/176915.terrain new file mode 100644 index 000000000..9e3938cc2 Binary files /dev/null and b/public/terrain/18/429256/176915.terrain differ diff --git a/public/terrain/18/429256/176916.terrain b/public/terrain/18/429256/176916.terrain new file mode 100644 index 000000000..31c688954 Binary files /dev/null and b/public/terrain/18/429256/176916.terrain differ diff --git a/public/terrain/18/429256/176917.terrain b/public/terrain/18/429256/176917.terrain new file mode 100644 index 000000000..19dda644e Binary files /dev/null and b/public/terrain/18/429256/176917.terrain differ diff --git a/public/terrain/18/429256/176918.terrain b/public/terrain/18/429256/176918.terrain new file mode 100644 index 000000000..caad47093 Binary files /dev/null and b/public/terrain/18/429256/176918.terrain differ diff --git a/public/terrain/18/429256/176919.terrain b/public/terrain/18/429256/176919.terrain new file mode 100644 index 000000000..2fafa782f Binary files /dev/null and b/public/terrain/18/429256/176919.terrain differ diff --git a/public/terrain/18/429256/176920.terrain b/public/terrain/18/429256/176920.terrain new file mode 100644 index 000000000..65e80c08d Binary files /dev/null and b/public/terrain/18/429256/176920.terrain differ diff --git a/public/terrain/18/429256/176921.terrain b/public/terrain/18/429256/176921.terrain new file mode 100644 index 000000000..c015dfa4c Binary files /dev/null and b/public/terrain/18/429256/176921.terrain differ diff --git a/public/terrain/18/429256/176922.terrain b/public/terrain/18/429256/176922.terrain new file mode 100644 index 000000000..b9ff572ae Binary files /dev/null and b/public/terrain/18/429256/176922.terrain differ diff --git a/public/terrain/18/429256/176923.terrain b/public/terrain/18/429256/176923.terrain new file mode 100644 index 000000000..015eb35b9 Binary files /dev/null and b/public/terrain/18/429256/176923.terrain differ diff --git a/public/terrain/18/429256/176924.terrain b/public/terrain/18/429256/176924.terrain new file mode 100644 index 000000000..dd8024c27 Binary files /dev/null and b/public/terrain/18/429256/176924.terrain differ diff --git a/public/terrain/18/429256/176925.terrain b/public/terrain/18/429256/176925.terrain new file mode 100644 index 000000000..6b0cda91b Binary files /dev/null and b/public/terrain/18/429256/176925.terrain differ diff --git a/public/terrain/18/429256/176926.terrain b/public/terrain/18/429256/176926.terrain new file mode 100644 index 000000000..7688e2141 Binary files /dev/null and b/public/terrain/18/429256/176926.terrain differ diff --git a/public/terrain/18/429256/176927.terrain b/public/terrain/18/429256/176927.terrain new file mode 100644 index 000000000..4401b7095 Binary files /dev/null and b/public/terrain/18/429256/176927.terrain differ diff --git a/public/terrain/18/429256/176928.terrain b/public/terrain/18/429256/176928.terrain new file mode 100644 index 000000000..d29de61bb Binary files /dev/null and b/public/terrain/18/429256/176928.terrain differ diff --git a/public/terrain/18/429256/176929.terrain b/public/terrain/18/429256/176929.terrain new file mode 100644 index 000000000..138c90b9e Binary files /dev/null and b/public/terrain/18/429256/176929.terrain differ diff --git a/public/terrain/18/429256/176930.terrain b/public/terrain/18/429256/176930.terrain new file mode 100644 index 000000000..c69c66f07 Binary files /dev/null and b/public/terrain/18/429256/176930.terrain differ diff --git a/public/terrain/18/429256/176931.terrain b/public/terrain/18/429256/176931.terrain new file mode 100644 index 000000000..38434951d Binary files /dev/null and b/public/terrain/18/429256/176931.terrain differ diff --git a/public/terrain/18/429256/176932.terrain b/public/terrain/18/429256/176932.terrain new file mode 100644 index 000000000..9b67be9e9 Binary files /dev/null and b/public/terrain/18/429256/176932.terrain differ diff --git a/public/terrain/18/429256/176933.terrain b/public/terrain/18/429256/176933.terrain new file mode 100644 index 000000000..9963690b5 Binary files /dev/null and b/public/terrain/18/429256/176933.terrain differ diff --git a/public/terrain/18/429256/176934.terrain b/public/terrain/18/429256/176934.terrain new file mode 100644 index 000000000..c23be0ad9 Binary files /dev/null and b/public/terrain/18/429256/176934.terrain differ diff --git a/public/terrain/18/429256/176935.terrain b/public/terrain/18/429256/176935.terrain new file mode 100644 index 000000000..c45b1cb02 Binary files /dev/null and b/public/terrain/18/429256/176935.terrain differ diff --git a/public/terrain/18/429256/176936.terrain b/public/terrain/18/429256/176936.terrain new file mode 100644 index 000000000..b1dada69c Binary files /dev/null and b/public/terrain/18/429256/176936.terrain differ diff --git a/public/terrain/18/429256/176937.terrain b/public/terrain/18/429256/176937.terrain new file mode 100644 index 000000000..a8f815a59 Binary files /dev/null and b/public/terrain/18/429256/176937.terrain differ diff --git a/public/terrain/18/429256/176938.terrain b/public/terrain/18/429256/176938.terrain new file mode 100644 index 000000000..293c0e438 Binary files /dev/null and b/public/terrain/18/429256/176938.terrain differ diff --git a/public/terrain/18/429256/176939.terrain b/public/terrain/18/429256/176939.terrain new file mode 100644 index 000000000..49e926c74 Binary files /dev/null and b/public/terrain/18/429256/176939.terrain differ diff --git a/public/terrain/18/429256/176940.terrain b/public/terrain/18/429256/176940.terrain new file mode 100644 index 000000000..4e1fe0ba0 Binary files /dev/null and b/public/terrain/18/429256/176940.terrain differ diff --git a/public/terrain/18/429256/176941.terrain b/public/terrain/18/429256/176941.terrain new file mode 100644 index 000000000..2629aef81 Binary files /dev/null and b/public/terrain/18/429256/176941.terrain differ diff --git a/public/terrain/18/429256/176942.terrain b/public/terrain/18/429256/176942.terrain new file mode 100644 index 000000000..d20deaf2c Binary files /dev/null and b/public/terrain/18/429256/176942.terrain differ diff --git a/public/terrain/18/429256/176943.terrain b/public/terrain/18/429256/176943.terrain new file mode 100644 index 000000000..b75e17c99 Binary files /dev/null and b/public/terrain/18/429256/176943.terrain differ diff --git a/public/terrain/18/429256/176944.terrain b/public/terrain/18/429256/176944.terrain new file mode 100644 index 000000000..ad8f9fccb Binary files /dev/null and b/public/terrain/18/429256/176944.terrain differ diff --git a/public/terrain/18/429256/176945.terrain b/public/terrain/18/429256/176945.terrain new file mode 100644 index 000000000..8828216ca Binary files /dev/null and b/public/terrain/18/429256/176945.terrain differ diff --git a/public/terrain/18/429256/176946.terrain b/public/terrain/18/429256/176946.terrain new file mode 100644 index 000000000..92c5ab8ca Binary files /dev/null and b/public/terrain/18/429256/176946.terrain differ diff --git a/public/terrain/18/429256/176947.terrain b/public/terrain/18/429256/176947.terrain new file mode 100644 index 000000000..857b6f3f8 Binary files /dev/null and b/public/terrain/18/429256/176947.terrain differ diff --git a/public/terrain/18/429256/176948.terrain b/public/terrain/18/429256/176948.terrain new file mode 100644 index 000000000..02ff5be4a Binary files /dev/null and b/public/terrain/18/429256/176948.terrain differ diff --git a/public/terrain/18/429256/176949.terrain b/public/terrain/18/429256/176949.terrain new file mode 100644 index 000000000..187b7e196 Binary files /dev/null and b/public/terrain/18/429256/176949.terrain differ diff --git a/public/terrain/18/429256/176950.terrain b/public/terrain/18/429256/176950.terrain new file mode 100644 index 000000000..b46a01a92 Binary files /dev/null and b/public/terrain/18/429256/176950.terrain differ diff --git a/public/terrain/18/429256/176951.terrain b/public/terrain/18/429256/176951.terrain new file mode 100644 index 000000000..23b374210 Binary files /dev/null and b/public/terrain/18/429256/176951.terrain differ diff --git a/public/terrain/18/429256/176952.terrain b/public/terrain/18/429256/176952.terrain new file mode 100644 index 000000000..3b46e0d43 Binary files /dev/null and b/public/terrain/18/429256/176952.terrain differ diff --git a/public/terrain/18/429256/176953.terrain b/public/terrain/18/429256/176953.terrain new file mode 100644 index 000000000..58e00a018 Binary files /dev/null and b/public/terrain/18/429256/176953.terrain differ diff --git a/public/terrain/18/429256/176954.terrain b/public/terrain/18/429256/176954.terrain new file mode 100644 index 000000000..10c50d68a Binary files /dev/null and b/public/terrain/18/429256/176954.terrain differ diff --git a/public/terrain/18/429256/176955.terrain b/public/terrain/18/429256/176955.terrain new file mode 100644 index 000000000..3a78d35b9 Binary files /dev/null and b/public/terrain/18/429256/176955.terrain differ diff --git a/public/terrain/18/429256/176956.terrain b/public/terrain/18/429256/176956.terrain new file mode 100644 index 000000000..494b04522 Binary files /dev/null and b/public/terrain/18/429256/176956.terrain differ diff --git a/public/terrain/18/429256/176957.terrain b/public/terrain/18/429256/176957.terrain new file mode 100644 index 000000000..9dd68bdd7 Binary files /dev/null and b/public/terrain/18/429256/176957.terrain differ diff --git a/public/terrain/18/429256/176958.terrain b/public/terrain/18/429256/176958.terrain new file mode 100644 index 000000000..9cd8251ab Binary files /dev/null and b/public/terrain/18/429256/176958.terrain differ diff --git a/public/terrain/18/429256/176959.terrain b/public/terrain/18/429256/176959.terrain new file mode 100644 index 000000000..0f97948c9 Binary files /dev/null and b/public/terrain/18/429256/176959.terrain differ diff --git a/public/terrain/18/429256/176960.terrain b/public/terrain/18/429256/176960.terrain new file mode 100644 index 000000000..0da16be37 Binary files /dev/null and b/public/terrain/18/429256/176960.terrain differ diff --git a/public/terrain/18/429256/176961.terrain b/public/terrain/18/429256/176961.terrain new file mode 100644 index 000000000..b6f4e2378 Binary files /dev/null and b/public/terrain/18/429256/176961.terrain differ diff --git a/public/terrain/18/429256/176962.terrain b/public/terrain/18/429256/176962.terrain new file mode 100644 index 000000000..90fe841b9 Binary files /dev/null and b/public/terrain/18/429256/176962.terrain differ diff --git a/public/terrain/18/429256/176963.terrain b/public/terrain/18/429256/176963.terrain new file mode 100644 index 000000000..4b2bc72db Binary files /dev/null and b/public/terrain/18/429256/176963.terrain differ diff --git a/public/terrain/18/429256/176964.terrain b/public/terrain/18/429256/176964.terrain new file mode 100644 index 000000000..64603d29a Binary files /dev/null and b/public/terrain/18/429256/176964.terrain differ diff --git a/public/terrain/18/429256/176965.terrain b/public/terrain/18/429256/176965.terrain new file mode 100644 index 000000000..7f8668c00 Binary files /dev/null and b/public/terrain/18/429256/176965.terrain differ diff --git a/public/terrain/18/429256/176966.terrain b/public/terrain/18/429256/176966.terrain new file mode 100644 index 000000000..6b3889848 Binary files /dev/null and b/public/terrain/18/429256/176966.terrain differ diff --git a/public/terrain/18/429256/176967.terrain b/public/terrain/18/429256/176967.terrain new file mode 100644 index 000000000..98bd14b7d Binary files /dev/null and b/public/terrain/18/429256/176967.terrain differ diff --git a/public/terrain/18/429256/176968.terrain b/public/terrain/18/429256/176968.terrain new file mode 100644 index 000000000..59f37232d Binary files /dev/null and b/public/terrain/18/429256/176968.terrain differ diff --git a/public/terrain/18/429256/176969.terrain b/public/terrain/18/429256/176969.terrain new file mode 100644 index 000000000..cd1ef54ba Binary files /dev/null and b/public/terrain/18/429256/176969.terrain differ diff --git a/public/terrain/18/429256/176970.terrain b/public/terrain/18/429256/176970.terrain new file mode 100644 index 000000000..8829f2e5c Binary files /dev/null and b/public/terrain/18/429256/176970.terrain differ diff --git a/public/terrain/18/429256/176971.terrain b/public/terrain/18/429256/176971.terrain new file mode 100644 index 000000000..b38e877fa Binary files /dev/null and b/public/terrain/18/429256/176971.terrain differ diff --git a/public/terrain/18/429256/176972.terrain b/public/terrain/18/429256/176972.terrain new file mode 100644 index 000000000..2fcc4b52c Binary files /dev/null and b/public/terrain/18/429256/176972.terrain differ diff --git a/public/terrain/18/429256/176973.terrain b/public/terrain/18/429256/176973.terrain new file mode 100644 index 000000000..b2964b0aa Binary files /dev/null and b/public/terrain/18/429256/176973.terrain differ diff --git a/public/terrain/18/429256/176974.terrain b/public/terrain/18/429256/176974.terrain new file mode 100644 index 000000000..289d8a6d6 Binary files /dev/null and b/public/terrain/18/429256/176974.terrain differ diff --git a/public/terrain/18/429256/176975.terrain b/public/terrain/18/429256/176975.terrain new file mode 100644 index 000000000..f3fbd28dd Binary files /dev/null and b/public/terrain/18/429256/176975.terrain differ diff --git a/public/terrain/18/429256/176976.terrain b/public/terrain/18/429256/176976.terrain new file mode 100644 index 000000000..2800fc9a5 Binary files /dev/null and b/public/terrain/18/429256/176976.terrain differ diff --git a/public/terrain/18/429256/176977.terrain b/public/terrain/18/429256/176977.terrain new file mode 100644 index 000000000..35d5dd5ed Binary files /dev/null and b/public/terrain/18/429256/176977.terrain differ diff --git a/public/terrain/18/429256/176978.terrain b/public/terrain/18/429256/176978.terrain new file mode 100644 index 000000000..2acf4876f Binary files /dev/null and b/public/terrain/18/429256/176978.terrain differ diff --git a/public/terrain/18/429256/176979.terrain b/public/terrain/18/429256/176979.terrain new file mode 100644 index 000000000..875a3d48b Binary files /dev/null and b/public/terrain/18/429256/176979.terrain differ diff --git a/public/terrain/18/429256/176980.terrain b/public/terrain/18/429256/176980.terrain new file mode 100644 index 000000000..e8109d31e Binary files /dev/null and b/public/terrain/18/429256/176980.terrain differ diff --git a/public/terrain/18/429256/176981.terrain b/public/terrain/18/429256/176981.terrain new file mode 100644 index 000000000..3ef6d987c Binary files /dev/null and b/public/terrain/18/429256/176981.terrain differ diff --git a/public/terrain/18/429256/176982.terrain b/public/terrain/18/429256/176982.terrain new file mode 100644 index 000000000..68977affd Binary files /dev/null and b/public/terrain/18/429256/176982.terrain differ diff --git a/public/terrain/18/429256/176983.terrain b/public/terrain/18/429256/176983.terrain new file mode 100644 index 000000000..9f5e22ae6 Binary files /dev/null and b/public/terrain/18/429256/176983.terrain differ diff --git a/public/terrain/18/429256/176984.terrain b/public/terrain/18/429256/176984.terrain new file mode 100644 index 000000000..8ca8cb8dd Binary files /dev/null and b/public/terrain/18/429256/176984.terrain differ diff --git a/public/terrain/18/429256/176985.terrain b/public/terrain/18/429256/176985.terrain new file mode 100644 index 000000000..9722cb7d2 Binary files /dev/null and b/public/terrain/18/429256/176985.terrain differ diff --git a/public/terrain/18/429256/176986.terrain b/public/terrain/18/429256/176986.terrain new file mode 100644 index 000000000..71ef2d85c Binary files /dev/null and b/public/terrain/18/429256/176986.terrain differ diff --git a/public/terrain/18/429256/176987.terrain b/public/terrain/18/429256/176987.terrain new file mode 100644 index 000000000..becadcb7a Binary files /dev/null and b/public/terrain/18/429256/176987.terrain differ diff --git a/public/terrain/18/429256/176988.terrain b/public/terrain/18/429256/176988.terrain new file mode 100644 index 000000000..85a54d733 Binary files /dev/null and b/public/terrain/18/429256/176988.terrain differ diff --git a/public/terrain/18/429256/176989.terrain b/public/terrain/18/429256/176989.terrain new file mode 100644 index 000000000..e4f10ec5f Binary files /dev/null and b/public/terrain/18/429256/176989.terrain differ diff --git a/public/terrain/18/429256/176990.terrain b/public/terrain/18/429256/176990.terrain new file mode 100644 index 000000000..3e94bff63 Binary files /dev/null and b/public/terrain/18/429256/176990.terrain differ diff --git a/public/terrain/18/429256/176991.terrain b/public/terrain/18/429256/176991.terrain new file mode 100644 index 000000000..ab5a80bb6 Binary files /dev/null and b/public/terrain/18/429256/176991.terrain differ diff --git a/public/terrain/18/429256/176992.terrain b/public/terrain/18/429256/176992.terrain new file mode 100644 index 000000000..75ffd1fea Binary files /dev/null and b/public/terrain/18/429256/176992.terrain differ diff --git a/public/terrain/18/429256/176993.terrain b/public/terrain/18/429256/176993.terrain new file mode 100644 index 000000000..263ddce7f Binary files /dev/null and b/public/terrain/18/429256/176993.terrain differ diff --git a/public/terrain/18/429256/176994.terrain b/public/terrain/18/429256/176994.terrain new file mode 100644 index 000000000..e385aeab8 Binary files /dev/null and b/public/terrain/18/429256/176994.terrain differ diff --git a/public/terrain/18/429256/176995.terrain b/public/terrain/18/429256/176995.terrain new file mode 100644 index 000000000..df0206ee9 Binary files /dev/null and b/public/terrain/18/429256/176995.terrain differ diff --git a/public/terrain/18/429256/176996.terrain b/public/terrain/18/429256/176996.terrain new file mode 100644 index 000000000..88057822c Binary files /dev/null and b/public/terrain/18/429256/176996.terrain differ diff --git a/public/terrain/18/429256/176997.terrain b/public/terrain/18/429256/176997.terrain new file mode 100644 index 000000000..fb2fbc1a9 Binary files /dev/null and b/public/terrain/18/429256/176997.terrain differ diff --git a/public/terrain/18/429256/176998.terrain b/public/terrain/18/429256/176998.terrain new file mode 100644 index 000000000..47f6b694f Binary files /dev/null and b/public/terrain/18/429256/176998.terrain differ diff --git a/public/terrain/18/429256/176999.terrain b/public/terrain/18/429256/176999.terrain new file mode 100644 index 000000000..4db25e7ef Binary files /dev/null and b/public/terrain/18/429256/176999.terrain differ diff --git a/public/terrain/18/429256/177000.terrain b/public/terrain/18/429256/177000.terrain new file mode 100644 index 000000000..0c8bdc870 Binary files /dev/null and b/public/terrain/18/429256/177000.terrain differ diff --git a/public/terrain/18/429256/177001.terrain b/public/terrain/18/429256/177001.terrain new file mode 100644 index 000000000..bd9fe2c02 Binary files /dev/null and b/public/terrain/18/429256/177001.terrain differ diff --git a/public/terrain/18/429256/177002.terrain b/public/terrain/18/429256/177002.terrain new file mode 100644 index 000000000..f4c57a25b Binary files /dev/null and b/public/terrain/18/429256/177002.terrain differ diff --git a/public/terrain/18/429256/177003.terrain b/public/terrain/18/429256/177003.terrain new file mode 100644 index 000000000..28ba333e7 Binary files /dev/null and b/public/terrain/18/429256/177003.terrain differ diff --git a/public/terrain/18/429256/177004.terrain b/public/terrain/18/429256/177004.terrain new file mode 100644 index 000000000..e0678ab07 Binary files /dev/null and b/public/terrain/18/429256/177004.terrain differ diff --git a/public/terrain/18/429256/177005.terrain b/public/terrain/18/429256/177005.terrain new file mode 100644 index 000000000..25e487386 Binary files /dev/null and b/public/terrain/18/429256/177005.terrain differ diff --git a/public/terrain/18/429256/177006.terrain b/public/terrain/18/429256/177006.terrain new file mode 100644 index 000000000..b90eff834 Binary files /dev/null and b/public/terrain/18/429256/177006.terrain differ diff --git a/public/terrain/18/429256/177007.terrain b/public/terrain/18/429256/177007.terrain new file mode 100644 index 000000000..15b4b555a Binary files /dev/null and b/public/terrain/18/429256/177007.terrain differ diff --git a/public/terrain/18/429256/177008.terrain b/public/terrain/18/429256/177008.terrain new file mode 100644 index 000000000..fb1226471 Binary files /dev/null and b/public/terrain/18/429256/177008.terrain differ diff --git a/public/terrain/18/429256/177009.terrain b/public/terrain/18/429256/177009.terrain new file mode 100644 index 000000000..537940008 Binary files /dev/null and b/public/terrain/18/429256/177009.terrain differ diff --git a/public/terrain/18/429256/177010.terrain b/public/terrain/18/429256/177010.terrain new file mode 100644 index 000000000..34e2f08c6 Binary files /dev/null and b/public/terrain/18/429256/177010.terrain differ diff --git a/public/terrain/18/429256/177011.terrain b/public/terrain/18/429256/177011.terrain new file mode 100644 index 000000000..94b357949 Binary files /dev/null and b/public/terrain/18/429256/177011.terrain differ diff --git a/public/terrain/18/429256/177012.terrain b/public/terrain/18/429256/177012.terrain new file mode 100644 index 000000000..51ab81db7 Binary files /dev/null and b/public/terrain/18/429256/177012.terrain differ diff --git a/public/terrain/18/429256/177013.terrain b/public/terrain/18/429256/177013.terrain new file mode 100644 index 000000000..5b4769eef Binary files /dev/null and b/public/terrain/18/429256/177013.terrain differ diff --git a/public/terrain/18/429256/177014.terrain b/public/terrain/18/429256/177014.terrain new file mode 100644 index 000000000..55fbb0c18 Binary files /dev/null and b/public/terrain/18/429256/177014.terrain differ diff --git a/public/terrain/18/429256/177015.terrain b/public/terrain/18/429256/177015.terrain new file mode 100644 index 000000000..630227fb2 Binary files /dev/null and b/public/terrain/18/429256/177015.terrain differ diff --git a/public/terrain/18/429256/177016.terrain b/public/terrain/18/429256/177016.terrain new file mode 100644 index 000000000..39ed47282 Binary files /dev/null and b/public/terrain/18/429256/177016.terrain differ diff --git a/public/terrain/18/429256/177017.terrain b/public/terrain/18/429256/177017.terrain new file mode 100644 index 000000000..8fbaf1f96 Binary files /dev/null and b/public/terrain/18/429256/177017.terrain differ diff --git a/public/terrain/18/429256/177018.terrain b/public/terrain/18/429256/177018.terrain new file mode 100644 index 000000000..931a4c7cb Binary files /dev/null and b/public/terrain/18/429256/177018.terrain differ diff --git a/public/terrain/18/429256/177019.terrain b/public/terrain/18/429256/177019.terrain new file mode 100644 index 000000000..cc541752f Binary files /dev/null and b/public/terrain/18/429256/177019.terrain differ diff --git a/public/terrain/18/429256/177020.terrain b/public/terrain/18/429256/177020.terrain new file mode 100644 index 000000000..104f3210d Binary files /dev/null and b/public/terrain/18/429256/177020.terrain differ diff --git a/public/terrain/18/429256/177021.terrain b/public/terrain/18/429256/177021.terrain new file mode 100644 index 000000000..df354bbc5 Binary files /dev/null and b/public/terrain/18/429256/177021.terrain differ diff --git a/public/terrain/18/429256/177022.terrain b/public/terrain/18/429256/177022.terrain new file mode 100644 index 000000000..ae01020b7 Binary files /dev/null and b/public/terrain/18/429256/177022.terrain differ diff --git a/public/terrain/18/429256/177023.terrain b/public/terrain/18/429256/177023.terrain new file mode 100644 index 000000000..9f5c49777 Binary files /dev/null and b/public/terrain/18/429256/177023.terrain differ diff --git a/public/terrain/18/429256/177024.terrain b/public/terrain/18/429256/177024.terrain new file mode 100644 index 000000000..e69438d72 Binary files /dev/null and b/public/terrain/18/429256/177024.terrain differ diff --git a/public/terrain/18/429256/177025.terrain b/public/terrain/18/429256/177025.terrain new file mode 100644 index 000000000..06ede2514 Binary files /dev/null and b/public/terrain/18/429256/177025.terrain differ diff --git a/public/terrain/18/429256/177026.terrain b/public/terrain/18/429256/177026.terrain new file mode 100644 index 000000000..9813a3dee Binary files /dev/null and b/public/terrain/18/429256/177026.terrain differ diff --git a/public/terrain/18/429256/177027.terrain b/public/terrain/18/429256/177027.terrain new file mode 100644 index 000000000..c648de9c2 Binary files /dev/null and b/public/terrain/18/429256/177027.terrain differ diff --git a/public/terrain/18/429256/177028.terrain b/public/terrain/18/429256/177028.terrain new file mode 100644 index 000000000..8d795b123 Binary files /dev/null and b/public/terrain/18/429256/177028.terrain differ diff --git a/public/terrain/18/429256/177029.terrain b/public/terrain/18/429256/177029.terrain new file mode 100644 index 000000000..458295564 Binary files /dev/null and b/public/terrain/18/429256/177029.terrain differ diff --git a/public/terrain/18/429257/176871.terrain b/public/terrain/18/429257/176871.terrain new file mode 100644 index 000000000..51d91cf02 Binary files /dev/null and b/public/terrain/18/429257/176871.terrain differ diff --git a/public/terrain/18/429257/176872.terrain b/public/terrain/18/429257/176872.terrain new file mode 100644 index 000000000..d01f4ec61 Binary files /dev/null and b/public/terrain/18/429257/176872.terrain differ diff --git a/public/terrain/18/429257/176873.terrain b/public/terrain/18/429257/176873.terrain new file mode 100644 index 000000000..09825617a Binary files /dev/null and b/public/terrain/18/429257/176873.terrain differ diff --git a/public/terrain/18/429257/176874.terrain b/public/terrain/18/429257/176874.terrain new file mode 100644 index 000000000..4e382e2c4 Binary files /dev/null and b/public/terrain/18/429257/176874.terrain differ diff --git a/public/terrain/18/429257/176875.terrain b/public/terrain/18/429257/176875.terrain new file mode 100644 index 000000000..c989d54d9 Binary files /dev/null and b/public/terrain/18/429257/176875.terrain differ diff --git a/public/terrain/18/429257/176876.terrain b/public/terrain/18/429257/176876.terrain new file mode 100644 index 000000000..cbb965ad5 Binary files /dev/null and b/public/terrain/18/429257/176876.terrain differ diff --git a/public/terrain/18/429257/176877.terrain b/public/terrain/18/429257/176877.terrain new file mode 100644 index 000000000..89aecdee9 Binary files /dev/null and b/public/terrain/18/429257/176877.terrain differ diff --git a/public/terrain/18/429257/176878.terrain b/public/terrain/18/429257/176878.terrain new file mode 100644 index 000000000..3fc824e0a Binary files /dev/null and b/public/terrain/18/429257/176878.terrain differ diff --git a/public/terrain/18/429257/176879.terrain b/public/terrain/18/429257/176879.terrain new file mode 100644 index 000000000..7d75f0b1f Binary files /dev/null and b/public/terrain/18/429257/176879.terrain differ diff --git a/public/terrain/18/429257/176880.terrain b/public/terrain/18/429257/176880.terrain new file mode 100644 index 000000000..a7ab1cd00 Binary files /dev/null and b/public/terrain/18/429257/176880.terrain differ diff --git a/public/terrain/18/429257/176881.terrain b/public/terrain/18/429257/176881.terrain new file mode 100644 index 000000000..aa3c8ca22 Binary files /dev/null and b/public/terrain/18/429257/176881.terrain differ diff --git a/public/terrain/18/429257/176882.terrain b/public/terrain/18/429257/176882.terrain new file mode 100644 index 000000000..1896ea43d Binary files /dev/null and b/public/terrain/18/429257/176882.terrain differ diff --git a/public/terrain/18/429257/176883.terrain b/public/terrain/18/429257/176883.terrain new file mode 100644 index 000000000..bd5f726ab Binary files /dev/null and b/public/terrain/18/429257/176883.terrain differ diff --git a/public/terrain/18/429257/176884.terrain b/public/terrain/18/429257/176884.terrain new file mode 100644 index 000000000..5b5ff4707 Binary files /dev/null and b/public/terrain/18/429257/176884.terrain differ diff --git a/public/terrain/18/429257/176885.terrain b/public/terrain/18/429257/176885.terrain new file mode 100644 index 000000000..115b19cfb Binary files /dev/null and b/public/terrain/18/429257/176885.terrain differ diff --git a/public/terrain/18/429257/176886.terrain b/public/terrain/18/429257/176886.terrain new file mode 100644 index 000000000..116d8ea4e Binary files /dev/null and b/public/terrain/18/429257/176886.terrain differ diff --git a/public/terrain/18/429257/176887.terrain b/public/terrain/18/429257/176887.terrain new file mode 100644 index 000000000..07a6a3a0b Binary files /dev/null and b/public/terrain/18/429257/176887.terrain differ diff --git a/public/terrain/18/429257/176888.terrain b/public/terrain/18/429257/176888.terrain new file mode 100644 index 000000000..ef5c0b06a Binary files /dev/null and b/public/terrain/18/429257/176888.terrain differ diff --git a/public/terrain/18/429257/176889.terrain b/public/terrain/18/429257/176889.terrain new file mode 100644 index 000000000..ffc125003 Binary files /dev/null and b/public/terrain/18/429257/176889.terrain differ diff --git a/public/terrain/18/429257/176890.terrain b/public/terrain/18/429257/176890.terrain new file mode 100644 index 000000000..0fc788f51 Binary files /dev/null and b/public/terrain/18/429257/176890.terrain differ diff --git a/public/terrain/18/429257/176891.terrain b/public/terrain/18/429257/176891.terrain new file mode 100644 index 000000000..24fff31d6 Binary files /dev/null and b/public/terrain/18/429257/176891.terrain differ diff --git a/public/terrain/18/429257/176892.terrain b/public/terrain/18/429257/176892.terrain new file mode 100644 index 000000000..2657ab8bb Binary files /dev/null and b/public/terrain/18/429257/176892.terrain differ diff --git a/public/terrain/18/429257/176893.terrain b/public/terrain/18/429257/176893.terrain new file mode 100644 index 000000000..b1e9d3092 Binary files /dev/null and b/public/terrain/18/429257/176893.terrain differ diff --git a/public/terrain/18/429257/176894.terrain b/public/terrain/18/429257/176894.terrain new file mode 100644 index 000000000..5972ef8c9 Binary files /dev/null and b/public/terrain/18/429257/176894.terrain differ diff --git a/public/terrain/18/429257/176895.terrain b/public/terrain/18/429257/176895.terrain new file mode 100644 index 000000000..0553bb144 Binary files /dev/null and b/public/terrain/18/429257/176895.terrain differ diff --git a/public/terrain/18/429257/176896.terrain b/public/terrain/18/429257/176896.terrain new file mode 100644 index 000000000..5e6a4f446 Binary files /dev/null and b/public/terrain/18/429257/176896.terrain differ diff --git a/public/terrain/18/429257/176897.terrain b/public/terrain/18/429257/176897.terrain new file mode 100644 index 000000000..c8b175670 Binary files /dev/null and b/public/terrain/18/429257/176897.terrain differ diff --git a/public/terrain/18/429257/176898.terrain b/public/terrain/18/429257/176898.terrain new file mode 100644 index 000000000..6999256f1 Binary files /dev/null and b/public/terrain/18/429257/176898.terrain differ diff --git a/public/terrain/18/429257/176899.terrain b/public/terrain/18/429257/176899.terrain new file mode 100644 index 000000000..24a0b2207 Binary files /dev/null and b/public/terrain/18/429257/176899.terrain differ diff --git a/public/terrain/18/429257/176900.terrain b/public/terrain/18/429257/176900.terrain new file mode 100644 index 000000000..9e2e280a5 Binary files /dev/null and b/public/terrain/18/429257/176900.terrain differ diff --git a/public/terrain/18/429257/176901.terrain b/public/terrain/18/429257/176901.terrain new file mode 100644 index 000000000..a6bda9ae1 Binary files /dev/null and b/public/terrain/18/429257/176901.terrain differ diff --git a/public/terrain/18/429257/176902.terrain b/public/terrain/18/429257/176902.terrain new file mode 100644 index 000000000..c86dea025 Binary files /dev/null and b/public/terrain/18/429257/176902.terrain differ diff --git a/public/terrain/18/429257/176903.terrain b/public/terrain/18/429257/176903.terrain new file mode 100644 index 000000000..0614747a7 Binary files /dev/null and b/public/terrain/18/429257/176903.terrain differ diff --git a/public/terrain/18/429257/176904.terrain b/public/terrain/18/429257/176904.terrain new file mode 100644 index 000000000..01e6afa23 Binary files /dev/null and b/public/terrain/18/429257/176904.terrain differ diff --git a/public/terrain/18/429257/176905.terrain b/public/terrain/18/429257/176905.terrain new file mode 100644 index 000000000..cd94708ec Binary files /dev/null and b/public/terrain/18/429257/176905.terrain differ diff --git a/public/terrain/18/429257/176906.terrain b/public/terrain/18/429257/176906.terrain new file mode 100644 index 000000000..00630a33c Binary files /dev/null and b/public/terrain/18/429257/176906.terrain differ diff --git a/public/terrain/18/429257/176907.terrain b/public/terrain/18/429257/176907.terrain new file mode 100644 index 000000000..4534d9027 Binary files /dev/null and b/public/terrain/18/429257/176907.terrain differ diff --git a/public/terrain/18/429257/176908.terrain b/public/terrain/18/429257/176908.terrain new file mode 100644 index 000000000..86925f491 Binary files /dev/null and b/public/terrain/18/429257/176908.terrain differ diff --git a/public/terrain/18/429257/176909.terrain b/public/terrain/18/429257/176909.terrain new file mode 100644 index 000000000..656df4a3f Binary files /dev/null and b/public/terrain/18/429257/176909.terrain differ diff --git a/public/terrain/18/429257/176910.terrain b/public/terrain/18/429257/176910.terrain new file mode 100644 index 000000000..2e5204922 Binary files /dev/null and b/public/terrain/18/429257/176910.terrain differ diff --git a/public/terrain/18/429257/176911.terrain b/public/terrain/18/429257/176911.terrain new file mode 100644 index 000000000..3e49c0c22 Binary files /dev/null and b/public/terrain/18/429257/176911.terrain differ diff --git a/public/terrain/18/429257/176912.terrain b/public/terrain/18/429257/176912.terrain new file mode 100644 index 000000000..b1fbbb619 Binary files /dev/null and b/public/terrain/18/429257/176912.terrain differ diff --git a/public/terrain/18/429257/176913.terrain b/public/terrain/18/429257/176913.terrain new file mode 100644 index 000000000..abb25fb70 Binary files /dev/null and b/public/terrain/18/429257/176913.terrain differ diff --git a/public/terrain/18/429257/176914.terrain b/public/terrain/18/429257/176914.terrain new file mode 100644 index 000000000..b3c1d8cb3 Binary files /dev/null and b/public/terrain/18/429257/176914.terrain differ diff --git a/public/terrain/18/429257/176915.terrain b/public/terrain/18/429257/176915.terrain new file mode 100644 index 000000000..55bd9aed4 Binary files /dev/null and b/public/terrain/18/429257/176915.terrain differ diff --git a/public/terrain/18/429257/176916.terrain b/public/terrain/18/429257/176916.terrain new file mode 100644 index 000000000..0ae837640 Binary files /dev/null and b/public/terrain/18/429257/176916.terrain differ diff --git a/public/terrain/18/429257/176917.terrain b/public/terrain/18/429257/176917.terrain new file mode 100644 index 000000000..e27117922 Binary files /dev/null and b/public/terrain/18/429257/176917.terrain differ diff --git a/public/terrain/18/429257/176918.terrain b/public/terrain/18/429257/176918.terrain new file mode 100644 index 000000000..ce10e1674 Binary files /dev/null and b/public/terrain/18/429257/176918.terrain differ diff --git a/public/terrain/18/429257/176919.terrain b/public/terrain/18/429257/176919.terrain new file mode 100644 index 000000000..947642436 Binary files /dev/null and b/public/terrain/18/429257/176919.terrain differ diff --git a/public/terrain/18/429257/176920.terrain b/public/terrain/18/429257/176920.terrain new file mode 100644 index 000000000..80a1c0811 Binary files /dev/null and b/public/terrain/18/429257/176920.terrain differ diff --git a/public/terrain/18/429257/176921.terrain b/public/terrain/18/429257/176921.terrain new file mode 100644 index 000000000..d42e746af Binary files /dev/null and b/public/terrain/18/429257/176921.terrain differ diff --git a/public/terrain/18/429257/176922.terrain b/public/terrain/18/429257/176922.terrain new file mode 100644 index 000000000..c6b5ca106 Binary files /dev/null and b/public/terrain/18/429257/176922.terrain differ diff --git a/public/terrain/18/429257/176923.terrain b/public/terrain/18/429257/176923.terrain new file mode 100644 index 000000000..07dac2219 Binary files /dev/null and b/public/terrain/18/429257/176923.terrain differ diff --git a/public/terrain/18/429257/176924.terrain b/public/terrain/18/429257/176924.terrain new file mode 100644 index 000000000..27bedae7c Binary files /dev/null and b/public/terrain/18/429257/176924.terrain differ diff --git a/public/terrain/18/429257/176925.terrain b/public/terrain/18/429257/176925.terrain new file mode 100644 index 000000000..75a061dcd Binary files /dev/null and b/public/terrain/18/429257/176925.terrain differ diff --git a/public/terrain/18/429257/176926.terrain b/public/terrain/18/429257/176926.terrain new file mode 100644 index 000000000..fddd2539e Binary files /dev/null and b/public/terrain/18/429257/176926.terrain differ diff --git a/public/terrain/18/429257/176927.terrain b/public/terrain/18/429257/176927.terrain new file mode 100644 index 000000000..c2b5372c0 Binary files /dev/null and b/public/terrain/18/429257/176927.terrain differ diff --git a/public/terrain/18/429257/176928.terrain b/public/terrain/18/429257/176928.terrain new file mode 100644 index 000000000..0122ac0bd Binary files /dev/null and b/public/terrain/18/429257/176928.terrain differ diff --git a/public/terrain/18/429257/176929.terrain b/public/terrain/18/429257/176929.terrain new file mode 100644 index 000000000..e95b8c7e0 Binary files /dev/null and b/public/terrain/18/429257/176929.terrain differ diff --git a/public/terrain/18/429257/176930.terrain b/public/terrain/18/429257/176930.terrain new file mode 100644 index 000000000..4e2a857b1 Binary files /dev/null and b/public/terrain/18/429257/176930.terrain differ diff --git a/public/terrain/18/429257/176931.terrain b/public/terrain/18/429257/176931.terrain new file mode 100644 index 000000000..79d432707 Binary files /dev/null and b/public/terrain/18/429257/176931.terrain differ diff --git a/public/terrain/18/429257/176932.terrain b/public/terrain/18/429257/176932.terrain new file mode 100644 index 000000000..cbfe2cd0a Binary files /dev/null and b/public/terrain/18/429257/176932.terrain differ diff --git a/public/terrain/18/429257/176933.terrain b/public/terrain/18/429257/176933.terrain new file mode 100644 index 000000000..91a963754 Binary files /dev/null and b/public/terrain/18/429257/176933.terrain differ diff --git a/public/terrain/18/429257/176934.terrain b/public/terrain/18/429257/176934.terrain new file mode 100644 index 000000000..5d9a2b35a Binary files /dev/null and b/public/terrain/18/429257/176934.terrain differ diff --git a/public/terrain/18/429257/176935.terrain b/public/terrain/18/429257/176935.terrain new file mode 100644 index 000000000..e98e5f801 Binary files /dev/null and b/public/terrain/18/429257/176935.terrain differ diff --git a/public/terrain/18/429257/176936.terrain b/public/terrain/18/429257/176936.terrain new file mode 100644 index 000000000..8e274d6e7 Binary files /dev/null and b/public/terrain/18/429257/176936.terrain differ diff --git a/public/terrain/18/429257/176937.terrain b/public/terrain/18/429257/176937.terrain new file mode 100644 index 000000000..3c4a79243 Binary files /dev/null and b/public/terrain/18/429257/176937.terrain differ diff --git a/public/terrain/18/429257/176938.terrain b/public/terrain/18/429257/176938.terrain new file mode 100644 index 000000000..ec324b9f5 Binary files /dev/null and b/public/terrain/18/429257/176938.terrain differ diff --git a/public/terrain/18/429257/176939.terrain b/public/terrain/18/429257/176939.terrain new file mode 100644 index 000000000..bacc308d5 Binary files /dev/null and b/public/terrain/18/429257/176939.terrain differ diff --git a/public/terrain/18/429257/176940.terrain b/public/terrain/18/429257/176940.terrain new file mode 100644 index 000000000..32e80b832 Binary files /dev/null and b/public/terrain/18/429257/176940.terrain differ diff --git a/public/terrain/18/429257/176941.terrain b/public/terrain/18/429257/176941.terrain new file mode 100644 index 000000000..9b3107776 Binary files /dev/null and b/public/terrain/18/429257/176941.terrain differ diff --git a/public/terrain/18/429257/176942.terrain b/public/terrain/18/429257/176942.terrain new file mode 100644 index 000000000..364e2ef3c Binary files /dev/null and b/public/terrain/18/429257/176942.terrain differ diff --git a/public/terrain/18/429257/176943.terrain b/public/terrain/18/429257/176943.terrain new file mode 100644 index 000000000..8fd957a3c Binary files /dev/null and b/public/terrain/18/429257/176943.terrain differ diff --git a/public/terrain/18/429257/176944.terrain b/public/terrain/18/429257/176944.terrain new file mode 100644 index 000000000..465f8b59e Binary files /dev/null and b/public/terrain/18/429257/176944.terrain differ diff --git a/public/terrain/18/429257/176945.terrain b/public/terrain/18/429257/176945.terrain new file mode 100644 index 000000000..a6f25b967 Binary files /dev/null and b/public/terrain/18/429257/176945.terrain differ diff --git a/public/terrain/18/429257/176946.terrain b/public/terrain/18/429257/176946.terrain new file mode 100644 index 000000000..c3ba04fa4 Binary files /dev/null and b/public/terrain/18/429257/176946.terrain differ diff --git a/public/terrain/18/429257/176947.terrain b/public/terrain/18/429257/176947.terrain new file mode 100644 index 000000000..7446e1491 Binary files /dev/null and b/public/terrain/18/429257/176947.terrain differ diff --git a/public/terrain/18/429257/176948.terrain b/public/terrain/18/429257/176948.terrain new file mode 100644 index 000000000..bf0794c58 Binary files /dev/null and b/public/terrain/18/429257/176948.terrain differ diff --git a/public/terrain/18/429257/176949.terrain b/public/terrain/18/429257/176949.terrain new file mode 100644 index 000000000..545a1d3a9 Binary files /dev/null and b/public/terrain/18/429257/176949.terrain differ diff --git a/public/terrain/18/429257/176950.terrain b/public/terrain/18/429257/176950.terrain new file mode 100644 index 000000000..ea0311d5b Binary files /dev/null and b/public/terrain/18/429257/176950.terrain differ diff --git a/public/terrain/18/429257/176951.terrain b/public/terrain/18/429257/176951.terrain new file mode 100644 index 000000000..99cc809d5 Binary files /dev/null and b/public/terrain/18/429257/176951.terrain differ diff --git a/public/terrain/18/429257/176952.terrain b/public/terrain/18/429257/176952.terrain new file mode 100644 index 000000000..a4da2b1c6 Binary files /dev/null and b/public/terrain/18/429257/176952.terrain differ diff --git a/public/terrain/18/429257/176953.terrain b/public/terrain/18/429257/176953.terrain new file mode 100644 index 000000000..175b00202 Binary files /dev/null and b/public/terrain/18/429257/176953.terrain differ diff --git a/public/terrain/18/429257/176954.terrain b/public/terrain/18/429257/176954.terrain new file mode 100644 index 000000000..44a1af3ea Binary files /dev/null and b/public/terrain/18/429257/176954.terrain differ diff --git a/public/terrain/18/429257/176955.terrain b/public/terrain/18/429257/176955.terrain new file mode 100644 index 000000000..61422e473 Binary files /dev/null and b/public/terrain/18/429257/176955.terrain differ diff --git a/public/terrain/18/429257/176956.terrain b/public/terrain/18/429257/176956.terrain new file mode 100644 index 000000000..6456f7d76 Binary files /dev/null and b/public/terrain/18/429257/176956.terrain differ diff --git a/public/terrain/18/429257/176957.terrain b/public/terrain/18/429257/176957.terrain new file mode 100644 index 000000000..0e51efd9f Binary files /dev/null and b/public/terrain/18/429257/176957.terrain differ diff --git a/public/terrain/18/429257/176958.terrain b/public/terrain/18/429257/176958.terrain new file mode 100644 index 000000000..db1b6157c Binary files /dev/null and b/public/terrain/18/429257/176958.terrain differ diff --git a/public/terrain/18/429257/176959.terrain b/public/terrain/18/429257/176959.terrain new file mode 100644 index 000000000..93f356469 Binary files /dev/null and b/public/terrain/18/429257/176959.terrain differ diff --git a/public/terrain/18/429257/176960.terrain b/public/terrain/18/429257/176960.terrain new file mode 100644 index 000000000..f66afbf37 Binary files /dev/null and b/public/terrain/18/429257/176960.terrain differ diff --git a/public/terrain/18/429257/176961.terrain b/public/terrain/18/429257/176961.terrain new file mode 100644 index 000000000..d28bd70f5 Binary files /dev/null and b/public/terrain/18/429257/176961.terrain differ diff --git a/public/terrain/18/429257/176962.terrain b/public/terrain/18/429257/176962.terrain new file mode 100644 index 000000000..7070aca88 Binary files /dev/null and b/public/terrain/18/429257/176962.terrain differ diff --git a/public/terrain/18/429257/176963.terrain b/public/terrain/18/429257/176963.terrain new file mode 100644 index 000000000..3b06b72da Binary files /dev/null and b/public/terrain/18/429257/176963.terrain differ diff --git a/public/terrain/18/429257/176964.terrain b/public/terrain/18/429257/176964.terrain new file mode 100644 index 000000000..e8cfed85c Binary files /dev/null and b/public/terrain/18/429257/176964.terrain differ diff --git a/public/terrain/18/429257/176965.terrain b/public/terrain/18/429257/176965.terrain new file mode 100644 index 000000000..2b498a49b Binary files /dev/null and b/public/terrain/18/429257/176965.terrain differ diff --git a/public/terrain/18/429257/176966.terrain b/public/terrain/18/429257/176966.terrain new file mode 100644 index 000000000..ab58c0158 Binary files /dev/null and b/public/terrain/18/429257/176966.terrain differ diff --git a/public/terrain/18/429257/176967.terrain b/public/terrain/18/429257/176967.terrain new file mode 100644 index 000000000..fcc618108 Binary files /dev/null and b/public/terrain/18/429257/176967.terrain differ diff --git a/public/terrain/18/429257/176968.terrain b/public/terrain/18/429257/176968.terrain new file mode 100644 index 000000000..1820de54f Binary files /dev/null and b/public/terrain/18/429257/176968.terrain differ diff --git a/public/terrain/18/429257/176969.terrain b/public/terrain/18/429257/176969.terrain new file mode 100644 index 000000000..e29eb581f Binary files /dev/null and b/public/terrain/18/429257/176969.terrain differ diff --git a/public/terrain/18/429257/176970.terrain b/public/terrain/18/429257/176970.terrain new file mode 100644 index 000000000..4d2901abe Binary files /dev/null and b/public/terrain/18/429257/176970.terrain differ diff --git a/public/terrain/18/429257/176971.terrain b/public/terrain/18/429257/176971.terrain new file mode 100644 index 000000000..898f81d94 Binary files /dev/null and b/public/terrain/18/429257/176971.terrain differ diff --git a/public/terrain/18/429257/176972.terrain b/public/terrain/18/429257/176972.terrain new file mode 100644 index 000000000..0651183a2 Binary files /dev/null and b/public/terrain/18/429257/176972.terrain differ diff --git a/public/terrain/18/429257/176973.terrain b/public/terrain/18/429257/176973.terrain new file mode 100644 index 000000000..8aaf8bd3c Binary files /dev/null and b/public/terrain/18/429257/176973.terrain differ diff --git a/public/terrain/18/429257/176974.terrain b/public/terrain/18/429257/176974.terrain new file mode 100644 index 000000000..5b72df51f Binary files /dev/null and b/public/terrain/18/429257/176974.terrain differ diff --git a/public/terrain/18/429257/176975.terrain b/public/terrain/18/429257/176975.terrain new file mode 100644 index 000000000..b5eadc8d0 Binary files /dev/null and b/public/terrain/18/429257/176975.terrain differ diff --git a/public/terrain/18/429257/176976.terrain b/public/terrain/18/429257/176976.terrain new file mode 100644 index 000000000..72dea0b0c Binary files /dev/null and b/public/terrain/18/429257/176976.terrain differ diff --git a/public/terrain/18/429257/176977.terrain b/public/terrain/18/429257/176977.terrain new file mode 100644 index 000000000..351fe8b83 Binary files /dev/null and b/public/terrain/18/429257/176977.terrain differ diff --git a/public/terrain/18/429257/176978.terrain b/public/terrain/18/429257/176978.terrain new file mode 100644 index 000000000..cafc35449 Binary files /dev/null and b/public/terrain/18/429257/176978.terrain differ diff --git a/public/terrain/18/429257/176979.terrain b/public/terrain/18/429257/176979.terrain new file mode 100644 index 000000000..863ac5d90 Binary files /dev/null and b/public/terrain/18/429257/176979.terrain differ diff --git a/public/terrain/18/429257/176980.terrain b/public/terrain/18/429257/176980.terrain new file mode 100644 index 000000000..6486fa0c3 Binary files /dev/null and b/public/terrain/18/429257/176980.terrain differ diff --git a/public/terrain/18/429257/176981.terrain b/public/terrain/18/429257/176981.terrain new file mode 100644 index 000000000..fde28d1fe Binary files /dev/null and b/public/terrain/18/429257/176981.terrain differ diff --git a/public/terrain/18/429257/176982.terrain b/public/terrain/18/429257/176982.terrain new file mode 100644 index 000000000..20fe242de Binary files /dev/null and b/public/terrain/18/429257/176982.terrain differ diff --git a/public/terrain/18/429257/176983.terrain b/public/terrain/18/429257/176983.terrain new file mode 100644 index 000000000..da2ea5d6f Binary files /dev/null and b/public/terrain/18/429257/176983.terrain differ diff --git a/public/terrain/18/429257/176984.terrain b/public/terrain/18/429257/176984.terrain new file mode 100644 index 000000000..56655a316 Binary files /dev/null and b/public/terrain/18/429257/176984.terrain differ diff --git a/public/terrain/18/429257/176985.terrain b/public/terrain/18/429257/176985.terrain new file mode 100644 index 000000000..2727bd8f2 Binary files /dev/null and b/public/terrain/18/429257/176985.terrain differ diff --git a/public/terrain/18/429257/176986.terrain b/public/terrain/18/429257/176986.terrain new file mode 100644 index 000000000..2d5456d27 Binary files /dev/null and b/public/terrain/18/429257/176986.terrain differ diff --git a/public/terrain/18/429257/176987.terrain b/public/terrain/18/429257/176987.terrain new file mode 100644 index 000000000..37aba8696 Binary files /dev/null and b/public/terrain/18/429257/176987.terrain differ diff --git a/public/terrain/18/429257/176988.terrain b/public/terrain/18/429257/176988.terrain new file mode 100644 index 000000000..b91921bb3 Binary files /dev/null and b/public/terrain/18/429257/176988.terrain differ diff --git a/public/terrain/18/429257/176989.terrain b/public/terrain/18/429257/176989.terrain new file mode 100644 index 000000000..c041de41d Binary files /dev/null and b/public/terrain/18/429257/176989.terrain differ diff --git a/public/terrain/18/429257/176990.terrain b/public/terrain/18/429257/176990.terrain new file mode 100644 index 000000000..0b0642fc1 Binary files /dev/null and b/public/terrain/18/429257/176990.terrain differ diff --git a/public/terrain/18/429257/176991.terrain b/public/terrain/18/429257/176991.terrain new file mode 100644 index 000000000..9e555bbb0 Binary files /dev/null and b/public/terrain/18/429257/176991.terrain differ diff --git a/public/terrain/18/429257/176992.terrain b/public/terrain/18/429257/176992.terrain new file mode 100644 index 000000000..c485f0653 Binary files /dev/null and b/public/terrain/18/429257/176992.terrain differ diff --git a/public/terrain/18/429257/176993.terrain b/public/terrain/18/429257/176993.terrain new file mode 100644 index 000000000..0587d16e8 Binary files /dev/null and b/public/terrain/18/429257/176993.terrain differ diff --git a/public/terrain/18/429257/176994.terrain b/public/terrain/18/429257/176994.terrain new file mode 100644 index 000000000..0143531b3 Binary files /dev/null and b/public/terrain/18/429257/176994.terrain differ diff --git a/public/terrain/18/429257/176995.terrain b/public/terrain/18/429257/176995.terrain new file mode 100644 index 000000000..9e2d7b5b9 Binary files /dev/null and b/public/terrain/18/429257/176995.terrain differ diff --git a/public/terrain/18/429257/176996.terrain b/public/terrain/18/429257/176996.terrain new file mode 100644 index 000000000..fbea979f4 Binary files /dev/null and b/public/terrain/18/429257/176996.terrain differ diff --git a/public/terrain/18/429257/176997.terrain b/public/terrain/18/429257/176997.terrain new file mode 100644 index 000000000..025f683fc Binary files /dev/null and b/public/terrain/18/429257/176997.terrain differ diff --git a/public/terrain/18/429257/176998.terrain b/public/terrain/18/429257/176998.terrain new file mode 100644 index 000000000..50fd4874d Binary files /dev/null and b/public/terrain/18/429257/176998.terrain differ diff --git a/public/terrain/18/429257/176999.terrain b/public/terrain/18/429257/176999.terrain new file mode 100644 index 000000000..41eec0e07 Binary files /dev/null and b/public/terrain/18/429257/176999.terrain differ diff --git a/public/terrain/18/429257/177000.terrain b/public/terrain/18/429257/177000.terrain new file mode 100644 index 000000000..c24016c11 Binary files /dev/null and b/public/terrain/18/429257/177000.terrain differ diff --git a/public/terrain/18/429257/177001.terrain b/public/terrain/18/429257/177001.terrain new file mode 100644 index 000000000..ff6c92b6c Binary files /dev/null and b/public/terrain/18/429257/177001.terrain differ diff --git a/public/terrain/18/429257/177002.terrain b/public/terrain/18/429257/177002.terrain new file mode 100644 index 000000000..3ff14e9c5 Binary files /dev/null and b/public/terrain/18/429257/177002.terrain differ diff --git a/public/terrain/18/429257/177003.terrain b/public/terrain/18/429257/177003.terrain new file mode 100644 index 000000000..9f4c14752 Binary files /dev/null and b/public/terrain/18/429257/177003.terrain differ diff --git a/public/terrain/18/429257/177004.terrain b/public/terrain/18/429257/177004.terrain new file mode 100644 index 000000000..8efa83d82 Binary files /dev/null and b/public/terrain/18/429257/177004.terrain differ diff --git a/public/terrain/18/429257/177005.terrain b/public/terrain/18/429257/177005.terrain new file mode 100644 index 000000000..093d9aaca Binary files /dev/null and b/public/terrain/18/429257/177005.terrain differ diff --git a/public/terrain/18/429257/177006.terrain b/public/terrain/18/429257/177006.terrain new file mode 100644 index 000000000..238610b74 Binary files /dev/null and b/public/terrain/18/429257/177006.terrain differ diff --git a/public/terrain/18/429257/177007.terrain b/public/terrain/18/429257/177007.terrain new file mode 100644 index 000000000..07f03e74d Binary files /dev/null and b/public/terrain/18/429257/177007.terrain differ diff --git a/public/terrain/18/429257/177008.terrain b/public/terrain/18/429257/177008.terrain new file mode 100644 index 000000000..1fb864200 Binary files /dev/null and b/public/terrain/18/429257/177008.terrain differ diff --git a/public/terrain/18/429257/177009.terrain b/public/terrain/18/429257/177009.terrain new file mode 100644 index 000000000..cf8be4347 Binary files /dev/null and b/public/terrain/18/429257/177009.terrain differ diff --git a/public/terrain/18/429257/177010.terrain b/public/terrain/18/429257/177010.terrain new file mode 100644 index 000000000..af10572ba Binary files /dev/null and b/public/terrain/18/429257/177010.terrain differ diff --git a/public/terrain/18/429257/177011.terrain b/public/terrain/18/429257/177011.terrain new file mode 100644 index 000000000..b97825cf8 Binary files /dev/null and b/public/terrain/18/429257/177011.terrain differ diff --git a/public/terrain/18/429257/177012.terrain b/public/terrain/18/429257/177012.terrain new file mode 100644 index 000000000..bcd6aa15c Binary files /dev/null and b/public/terrain/18/429257/177012.terrain differ diff --git a/public/terrain/18/429257/177013.terrain b/public/terrain/18/429257/177013.terrain new file mode 100644 index 000000000..d1f122dec Binary files /dev/null and b/public/terrain/18/429257/177013.terrain differ diff --git a/public/terrain/18/429257/177014.terrain b/public/terrain/18/429257/177014.terrain new file mode 100644 index 000000000..1758fdb66 Binary files /dev/null and b/public/terrain/18/429257/177014.terrain differ diff --git a/public/terrain/18/429257/177015.terrain b/public/terrain/18/429257/177015.terrain new file mode 100644 index 000000000..51689ad16 Binary files /dev/null and b/public/terrain/18/429257/177015.terrain differ diff --git a/public/terrain/18/429257/177016.terrain b/public/terrain/18/429257/177016.terrain new file mode 100644 index 000000000..0eb2e2aac Binary files /dev/null and b/public/terrain/18/429257/177016.terrain differ diff --git a/public/terrain/18/429257/177017.terrain b/public/terrain/18/429257/177017.terrain new file mode 100644 index 000000000..2fd93deb6 Binary files /dev/null and b/public/terrain/18/429257/177017.terrain differ diff --git a/public/terrain/18/429257/177018.terrain b/public/terrain/18/429257/177018.terrain new file mode 100644 index 000000000..3f1bfd388 Binary files /dev/null and b/public/terrain/18/429257/177018.terrain differ diff --git a/public/terrain/18/429257/177019.terrain b/public/terrain/18/429257/177019.terrain new file mode 100644 index 000000000..80b845b80 Binary files /dev/null and b/public/terrain/18/429257/177019.terrain differ diff --git a/public/terrain/18/429257/177020.terrain b/public/terrain/18/429257/177020.terrain new file mode 100644 index 000000000..558f01a36 Binary files /dev/null and b/public/terrain/18/429257/177020.terrain differ diff --git a/public/terrain/18/429257/177021.terrain b/public/terrain/18/429257/177021.terrain new file mode 100644 index 000000000..8f0df1ad5 Binary files /dev/null and b/public/terrain/18/429257/177021.terrain differ diff --git a/public/terrain/18/429257/177022.terrain b/public/terrain/18/429257/177022.terrain new file mode 100644 index 000000000..c35f63ef6 Binary files /dev/null and b/public/terrain/18/429257/177022.terrain differ diff --git a/public/terrain/18/429257/177023.terrain b/public/terrain/18/429257/177023.terrain new file mode 100644 index 000000000..5b502f8d5 Binary files /dev/null and b/public/terrain/18/429257/177023.terrain differ diff --git a/public/terrain/18/429257/177024.terrain b/public/terrain/18/429257/177024.terrain new file mode 100644 index 000000000..6712c4d33 Binary files /dev/null and b/public/terrain/18/429257/177024.terrain differ diff --git a/public/terrain/18/429257/177025.terrain b/public/terrain/18/429257/177025.terrain new file mode 100644 index 000000000..f07068aaa Binary files /dev/null and b/public/terrain/18/429257/177025.terrain differ diff --git a/public/terrain/18/429257/177026.terrain b/public/terrain/18/429257/177026.terrain new file mode 100644 index 000000000..dd2eed46d Binary files /dev/null and b/public/terrain/18/429257/177026.terrain differ diff --git a/public/terrain/18/429257/177027.terrain b/public/terrain/18/429257/177027.terrain new file mode 100644 index 000000000..245a3e2a2 Binary files /dev/null and b/public/terrain/18/429257/177027.terrain differ diff --git a/public/terrain/18/429257/177028.terrain b/public/terrain/18/429257/177028.terrain new file mode 100644 index 000000000..5aafa8706 Binary files /dev/null and b/public/terrain/18/429257/177028.terrain differ diff --git a/public/terrain/18/429257/177029.terrain b/public/terrain/18/429257/177029.terrain new file mode 100644 index 000000000..c55f1c927 Binary files /dev/null and b/public/terrain/18/429257/177029.terrain differ diff --git a/public/terrain/18/429258/176871.terrain b/public/terrain/18/429258/176871.terrain new file mode 100644 index 000000000..3782f6c2f Binary files /dev/null and b/public/terrain/18/429258/176871.terrain differ diff --git a/public/terrain/18/429258/176872.terrain b/public/terrain/18/429258/176872.terrain new file mode 100644 index 000000000..69e1bf28b Binary files /dev/null and b/public/terrain/18/429258/176872.terrain differ diff --git a/public/terrain/18/429258/176873.terrain b/public/terrain/18/429258/176873.terrain new file mode 100644 index 000000000..c2e803ead Binary files /dev/null and b/public/terrain/18/429258/176873.terrain differ diff --git a/public/terrain/18/429258/176874.terrain b/public/terrain/18/429258/176874.terrain new file mode 100644 index 000000000..ee23e6464 Binary files /dev/null and b/public/terrain/18/429258/176874.terrain differ diff --git a/public/terrain/18/429258/176875.terrain b/public/terrain/18/429258/176875.terrain new file mode 100644 index 000000000..6efc87766 Binary files /dev/null and b/public/terrain/18/429258/176875.terrain differ diff --git a/public/terrain/18/429258/176876.terrain b/public/terrain/18/429258/176876.terrain new file mode 100644 index 000000000..41a7aee95 Binary files /dev/null and b/public/terrain/18/429258/176876.terrain differ diff --git a/public/terrain/18/429258/176877.terrain b/public/terrain/18/429258/176877.terrain new file mode 100644 index 000000000..9376b6968 Binary files /dev/null and b/public/terrain/18/429258/176877.terrain differ diff --git a/public/terrain/18/429258/176878.terrain b/public/terrain/18/429258/176878.terrain new file mode 100644 index 000000000..e2876d115 Binary files /dev/null and b/public/terrain/18/429258/176878.terrain differ diff --git a/public/terrain/18/429258/176879.terrain b/public/terrain/18/429258/176879.terrain new file mode 100644 index 000000000..66cc539cb Binary files /dev/null and b/public/terrain/18/429258/176879.terrain differ diff --git a/public/terrain/18/429258/176880.terrain b/public/terrain/18/429258/176880.terrain new file mode 100644 index 000000000..fc7b86ccb Binary files /dev/null and b/public/terrain/18/429258/176880.terrain differ diff --git a/public/terrain/18/429258/176881.terrain b/public/terrain/18/429258/176881.terrain new file mode 100644 index 000000000..f035e0a11 Binary files /dev/null and b/public/terrain/18/429258/176881.terrain differ diff --git a/public/terrain/18/429258/176882.terrain b/public/terrain/18/429258/176882.terrain new file mode 100644 index 000000000..6c26bce0e Binary files /dev/null and b/public/terrain/18/429258/176882.terrain differ diff --git a/public/terrain/18/429258/176883.terrain b/public/terrain/18/429258/176883.terrain new file mode 100644 index 000000000..869f1c2d8 Binary files /dev/null and b/public/terrain/18/429258/176883.terrain differ diff --git a/public/terrain/18/429258/176884.terrain b/public/terrain/18/429258/176884.terrain new file mode 100644 index 000000000..49ad25dab Binary files /dev/null and b/public/terrain/18/429258/176884.terrain differ diff --git a/public/terrain/18/429258/176885.terrain b/public/terrain/18/429258/176885.terrain new file mode 100644 index 000000000..217d14515 Binary files /dev/null and b/public/terrain/18/429258/176885.terrain differ diff --git a/public/terrain/18/429258/176886.terrain b/public/terrain/18/429258/176886.terrain new file mode 100644 index 000000000..b30aa251f Binary files /dev/null and b/public/terrain/18/429258/176886.terrain differ diff --git a/public/terrain/18/429258/176887.terrain b/public/terrain/18/429258/176887.terrain new file mode 100644 index 000000000..a7d69998e Binary files /dev/null and b/public/terrain/18/429258/176887.terrain differ diff --git a/public/terrain/18/429258/176888.terrain b/public/terrain/18/429258/176888.terrain new file mode 100644 index 000000000..68addcc04 Binary files /dev/null and b/public/terrain/18/429258/176888.terrain differ diff --git a/public/terrain/18/429258/176889.terrain b/public/terrain/18/429258/176889.terrain new file mode 100644 index 000000000..99f3e27e9 Binary files /dev/null and b/public/terrain/18/429258/176889.terrain differ diff --git a/public/terrain/18/429258/176890.terrain b/public/terrain/18/429258/176890.terrain new file mode 100644 index 000000000..ca76e4218 Binary files /dev/null and b/public/terrain/18/429258/176890.terrain differ diff --git a/public/terrain/18/429258/176891.terrain b/public/terrain/18/429258/176891.terrain new file mode 100644 index 000000000..bbc551294 Binary files /dev/null and b/public/terrain/18/429258/176891.terrain differ diff --git a/public/terrain/18/429258/176892.terrain b/public/terrain/18/429258/176892.terrain new file mode 100644 index 000000000..b02ccb5bb Binary files /dev/null and b/public/terrain/18/429258/176892.terrain differ diff --git a/public/terrain/18/429258/176893.terrain b/public/terrain/18/429258/176893.terrain new file mode 100644 index 000000000..40e8061ba Binary files /dev/null and b/public/terrain/18/429258/176893.terrain differ diff --git a/public/terrain/18/429258/176894.terrain b/public/terrain/18/429258/176894.terrain new file mode 100644 index 000000000..24a162574 Binary files /dev/null and b/public/terrain/18/429258/176894.terrain differ diff --git a/public/terrain/18/429258/176895.terrain b/public/terrain/18/429258/176895.terrain new file mode 100644 index 000000000..0d640b74c Binary files /dev/null and b/public/terrain/18/429258/176895.terrain differ diff --git a/public/terrain/18/429258/176896.terrain b/public/terrain/18/429258/176896.terrain new file mode 100644 index 000000000..79b0c87b6 Binary files /dev/null and b/public/terrain/18/429258/176896.terrain differ diff --git a/public/terrain/18/429258/176897.terrain b/public/terrain/18/429258/176897.terrain new file mode 100644 index 000000000..f2fd8ec79 Binary files /dev/null and b/public/terrain/18/429258/176897.terrain differ diff --git a/public/terrain/18/429258/176898.terrain b/public/terrain/18/429258/176898.terrain new file mode 100644 index 000000000..963a9a9b7 Binary files /dev/null and b/public/terrain/18/429258/176898.terrain differ diff --git a/public/terrain/18/429258/176899.terrain b/public/terrain/18/429258/176899.terrain new file mode 100644 index 000000000..61ea5c2c4 Binary files /dev/null and b/public/terrain/18/429258/176899.terrain differ diff --git a/public/terrain/18/429258/176900.terrain b/public/terrain/18/429258/176900.terrain new file mode 100644 index 000000000..465708987 Binary files /dev/null and b/public/terrain/18/429258/176900.terrain differ diff --git a/public/terrain/18/429258/176901.terrain b/public/terrain/18/429258/176901.terrain new file mode 100644 index 000000000..4de5d9480 Binary files /dev/null and b/public/terrain/18/429258/176901.terrain differ diff --git a/public/terrain/18/429258/176902.terrain b/public/terrain/18/429258/176902.terrain new file mode 100644 index 000000000..f2f11ad8e Binary files /dev/null and b/public/terrain/18/429258/176902.terrain differ diff --git a/public/terrain/18/429258/176903.terrain b/public/terrain/18/429258/176903.terrain new file mode 100644 index 000000000..bebd8522f Binary files /dev/null and b/public/terrain/18/429258/176903.terrain differ diff --git a/public/terrain/18/429258/176904.terrain b/public/terrain/18/429258/176904.terrain new file mode 100644 index 000000000..5dae1ac59 Binary files /dev/null and b/public/terrain/18/429258/176904.terrain differ diff --git a/public/terrain/18/429258/176905.terrain b/public/terrain/18/429258/176905.terrain new file mode 100644 index 000000000..697bd796a Binary files /dev/null and b/public/terrain/18/429258/176905.terrain differ diff --git a/public/terrain/18/429258/176906.terrain b/public/terrain/18/429258/176906.terrain new file mode 100644 index 000000000..f13f8d040 Binary files /dev/null and b/public/terrain/18/429258/176906.terrain differ diff --git a/public/terrain/18/429258/176907.terrain b/public/terrain/18/429258/176907.terrain new file mode 100644 index 000000000..e0d632c03 Binary files /dev/null and b/public/terrain/18/429258/176907.terrain differ diff --git a/public/terrain/18/429258/176908.terrain b/public/terrain/18/429258/176908.terrain new file mode 100644 index 000000000..00fe48f62 Binary files /dev/null and b/public/terrain/18/429258/176908.terrain differ diff --git a/public/terrain/18/429258/176909.terrain b/public/terrain/18/429258/176909.terrain new file mode 100644 index 000000000..aba1c4795 Binary files /dev/null and b/public/terrain/18/429258/176909.terrain differ diff --git a/public/terrain/18/429258/176910.terrain b/public/terrain/18/429258/176910.terrain new file mode 100644 index 000000000..8d6824cd0 Binary files /dev/null and b/public/terrain/18/429258/176910.terrain differ diff --git a/public/terrain/18/429258/176911.terrain b/public/terrain/18/429258/176911.terrain new file mode 100644 index 000000000..d5ef1a03e Binary files /dev/null and b/public/terrain/18/429258/176911.terrain differ diff --git a/public/terrain/18/429258/176912.terrain b/public/terrain/18/429258/176912.terrain new file mode 100644 index 000000000..9fee74e96 Binary files /dev/null and b/public/terrain/18/429258/176912.terrain differ diff --git a/public/terrain/18/429258/176913.terrain b/public/terrain/18/429258/176913.terrain new file mode 100644 index 000000000..8fa6a68fd Binary files /dev/null and b/public/terrain/18/429258/176913.terrain differ diff --git a/public/terrain/18/429258/176914.terrain b/public/terrain/18/429258/176914.terrain new file mode 100644 index 000000000..0d7040e78 Binary files /dev/null and b/public/terrain/18/429258/176914.terrain differ diff --git a/public/terrain/18/429258/176915.terrain b/public/terrain/18/429258/176915.terrain new file mode 100644 index 000000000..727615d53 Binary files /dev/null and b/public/terrain/18/429258/176915.terrain differ diff --git a/public/terrain/18/429258/176916.terrain b/public/terrain/18/429258/176916.terrain new file mode 100644 index 000000000..e40bcf13b Binary files /dev/null and b/public/terrain/18/429258/176916.terrain differ diff --git a/public/terrain/18/429258/176917.terrain b/public/terrain/18/429258/176917.terrain new file mode 100644 index 000000000..ec4673b23 Binary files /dev/null and b/public/terrain/18/429258/176917.terrain differ diff --git a/public/terrain/18/429258/176918.terrain b/public/terrain/18/429258/176918.terrain new file mode 100644 index 000000000..eab4c6cf3 Binary files /dev/null and b/public/terrain/18/429258/176918.terrain differ diff --git a/public/terrain/18/429258/176919.terrain b/public/terrain/18/429258/176919.terrain new file mode 100644 index 000000000..ba86db920 Binary files /dev/null and b/public/terrain/18/429258/176919.terrain differ diff --git a/public/terrain/18/429258/176920.terrain b/public/terrain/18/429258/176920.terrain new file mode 100644 index 000000000..9153549b7 Binary files /dev/null and b/public/terrain/18/429258/176920.terrain differ diff --git a/public/terrain/18/429258/176921.terrain b/public/terrain/18/429258/176921.terrain new file mode 100644 index 000000000..7a8b4eddf Binary files /dev/null and b/public/terrain/18/429258/176921.terrain differ diff --git a/public/terrain/18/429258/176922.terrain b/public/terrain/18/429258/176922.terrain new file mode 100644 index 000000000..d06b2230f Binary files /dev/null and b/public/terrain/18/429258/176922.terrain differ diff --git a/public/terrain/18/429258/176923.terrain b/public/terrain/18/429258/176923.terrain new file mode 100644 index 000000000..d88da7754 Binary files /dev/null and b/public/terrain/18/429258/176923.terrain differ diff --git a/public/terrain/18/429258/176924.terrain b/public/terrain/18/429258/176924.terrain new file mode 100644 index 000000000..fb7dc68fb Binary files /dev/null and b/public/terrain/18/429258/176924.terrain differ diff --git a/public/terrain/18/429258/176925.terrain b/public/terrain/18/429258/176925.terrain new file mode 100644 index 000000000..f5fc8c79c Binary files /dev/null and b/public/terrain/18/429258/176925.terrain differ diff --git a/public/terrain/18/429258/176926.terrain b/public/terrain/18/429258/176926.terrain new file mode 100644 index 000000000..ea048d567 Binary files /dev/null and b/public/terrain/18/429258/176926.terrain differ diff --git a/public/terrain/18/429258/176927.terrain b/public/terrain/18/429258/176927.terrain new file mode 100644 index 000000000..427d9961e Binary files /dev/null and b/public/terrain/18/429258/176927.terrain differ diff --git a/public/terrain/18/429258/176928.terrain b/public/terrain/18/429258/176928.terrain new file mode 100644 index 000000000..1a9d7a483 Binary files /dev/null and b/public/terrain/18/429258/176928.terrain differ diff --git a/public/terrain/18/429258/176929.terrain b/public/terrain/18/429258/176929.terrain new file mode 100644 index 000000000..4b127bd78 Binary files /dev/null and b/public/terrain/18/429258/176929.terrain differ diff --git a/public/terrain/18/429258/176930.terrain b/public/terrain/18/429258/176930.terrain new file mode 100644 index 000000000..6ed849072 Binary files /dev/null and b/public/terrain/18/429258/176930.terrain differ diff --git a/public/terrain/18/429258/176931.terrain b/public/terrain/18/429258/176931.terrain new file mode 100644 index 000000000..0423954d7 Binary files /dev/null and b/public/terrain/18/429258/176931.terrain differ diff --git a/public/terrain/18/429258/176932.terrain b/public/terrain/18/429258/176932.terrain new file mode 100644 index 000000000..7aee0797f Binary files /dev/null and b/public/terrain/18/429258/176932.terrain differ diff --git a/public/terrain/18/429258/176933.terrain b/public/terrain/18/429258/176933.terrain new file mode 100644 index 000000000..24d3d8ccb Binary files /dev/null and b/public/terrain/18/429258/176933.terrain differ diff --git a/public/terrain/18/429258/176934.terrain b/public/terrain/18/429258/176934.terrain new file mode 100644 index 000000000..fc99ed1a6 Binary files /dev/null and b/public/terrain/18/429258/176934.terrain differ diff --git a/public/terrain/18/429258/176935.terrain b/public/terrain/18/429258/176935.terrain new file mode 100644 index 000000000..c7d8d2d13 Binary files /dev/null and b/public/terrain/18/429258/176935.terrain differ diff --git a/public/terrain/18/429258/176936.terrain b/public/terrain/18/429258/176936.terrain new file mode 100644 index 000000000..5b9f78318 Binary files /dev/null and b/public/terrain/18/429258/176936.terrain differ diff --git a/public/terrain/18/429258/176937.terrain b/public/terrain/18/429258/176937.terrain new file mode 100644 index 000000000..80e89d86e Binary files /dev/null and b/public/terrain/18/429258/176937.terrain differ diff --git a/public/terrain/18/429258/176938.terrain b/public/terrain/18/429258/176938.terrain new file mode 100644 index 000000000..29afa893a Binary files /dev/null and b/public/terrain/18/429258/176938.terrain differ diff --git a/public/terrain/18/429258/176939.terrain b/public/terrain/18/429258/176939.terrain new file mode 100644 index 000000000..afa858fcc Binary files /dev/null and b/public/terrain/18/429258/176939.terrain differ diff --git a/public/terrain/18/429258/176940.terrain b/public/terrain/18/429258/176940.terrain new file mode 100644 index 000000000..9e07f2925 Binary files /dev/null and b/public/terrain/18/429258/176940.terrain differ diff --git a/public/terrain/18/429258/176941.terrain b/public/terrain/18/429258/176941.terrain new file mode 100644 index 000000000..9b4a163d5 Binary files /dev/null and b/public/terrain/18/429258/176941.terrain differ diff --git a/public/terrain/18/429258/176942.terrain b/public/terrain/18/429258/176942.terrain new file mode 100644 index 000000000..297cd3225 Binary files /dev/null and b/public/terrain/18/429258/176942.terrain differ diff --git a/public/terrain/18/429258/176943.terrain b/public/terrain/18/429258/176943.terrain new file mode 100644 index 000000000..3a398233a Binary files /dev/null and b/public/terrain/18/429258/176943.terrain differ diff --git a/public/terrain/18/429258/176944.terrain b/public/terrain/18/429258/176944.terrain new file mode 100644 index 000000000..e4d28de8d Binary files /dev/null and b/public/terrain/18/429258/176944.terrain differ diff --git a/public/terrain/18/429258/176945.terrain b/public/terrain/18/429258/176945.terrain new file mode 100644 index 000000000..c6603a6cd Binary files /dev/null and b/public/terrain/18/429258/176945.terrain differ diff --git a/public/terrain/18/429258/176946.terrain b/public/terrain/18/429258/176946.terrain new file mode 100644 index 000000000..a3d2206f8 Binary files /dev/null and b/public/terrain/18/429258/176946.terrain differ diff --git a/public/terrain/18/429258/176947.terrain b/public/terrain/18/429258/176947.terrain new file mode 100644 index 000000000..bfbfb02e0 Binary files /dev/null and b/public/terrain/18/429258/176947.terrain differ diff --git a/public/terrain/18/429258/176948.terrain b/public/terrain/18/429258/176948.terrain new file mode 100644 index 000000000..8ee8b873d Binary files /dev/null and b/public/terrain/18/429258/176948.terrain differ diff --git a/public/terrain/18/429258/176949.terrain b/public/terrain/18/429258/176949.terrain new file mode 100644 index 000000000..dc500a6c0 Binary files /dev/null and b/public/terrain/18/429258/176949.terrain differ diff --git a/public/terrain/18/429258/176950.terrain b/public/terrain/18/429258/176950.terrain new file mode 100644 index 000000000..6a6ae0d2c Binary files /dev/null and b/public/terrain/18/429258/176950.terrain differ diff --git a/public/terrain/18/429258/176951.terrain b/public/terrain/18/429258/176951.terrain new file mode 100644 index 000000000..e7a1686fd Binary files /dev/null and b/public/terrain/18/429258/176951.terrain differ diff --git a/public/terrain/18/429258/176952.terrain b/public/terrain/18/429258/176952.terrain new file mode 100644 index 000000000..1902b1d66 Binary files /dev/null and b/public/terrain/18/429258/176952.terrain differ diff --git a/public/terrain/18/429258/176953.terrain b/public/terrain/18/429258/176953.terrain new file mode 100644 index 000000000..21cc3cdb6 Binary files /dev/null and b/public/terrain/18/429258/176953.terrain differ diff --git a/public/terrain/18/429258/176954.terrain b/public/terrain/18/429258/176954.terrain new file mode 100644 index 000000000..4627bdd9b Binary files /dev/null and b/public/terrain/18/429258/176954.terrain differ diff --git a/public/terrain/18/429258/176955.terrain b/public/terrain/18/429258/176955.terrain new file mode 100644 index 000000000..500f6982a Binary files /dev/null and b/public/terrain/18/429258/176955.terrain differ diff --git a/public/terrain/18/429258/176956.terrain b/public/terrain/18/429258/176956.terrain new file mode 100644 index 000000000..910f3479d Binary files /dev/null and b/public/terrain/18/429258/176956.terrain differ diff --git a/public/terrain/18/429258/176957.terrain b/public/terrain/18/429258/176957.terrain new file mode 100644 index 000000000..38263e0d0 Binary files /dev/null and b/public/terrain/18/429258/176957.terrain differ diff --git a/public/terrain/18/429258/176958.terrain b/public/terrain/18/429258/176958.terrain new file mode 100644 index 000000000..828bb2f08 Binary files /dev/null and b/public/terrain/18/429258/176958.terrain differ diff --git a/public/terrain/18/429258/176959.terrain b/public/terrain/18/429258/176959.terrain new file mode 100644 index 000000000..229f8c381 Binary files /dev/null and b/public/terrain/18/429258/176959.terrain differ diff --git a/public/terrain/18/429258/176960.terrain b/public/terrain/18/429258/176960.terrain new file mode 100644 index 000000000..cf1045560 Binary files /dev/null and b/public/terrain/18/429258/176960.terrain differ diff --git a/public/terrain/18/429258/176961.terrain b/public/terrain/18/429258/176961.terrain new file mode 100644 index 000000000..3447939f8 Binary files /dev/null and b/public/terrain/18/429258/176961.terrain differ diff --git a/public/terrain/18/429258/176962.terrain b/public/terrain/18/429258/176962.terrain new file mode 100644 index 000000000..3651d56f4 Binary files /dev/null and b/public/terrain/18/429258/176962.terrain differ diff --git a/public/terrain/18/429258/176963.terrain b/public/terrain/18/429258/176963.terrain new file mode 100644 index 000000000..29daa4122 Binary files /dev/null and b/public/terrain/18/429258/176963.terrain differ diff --git a/public/terrain/18/429258/176964.terrain b/public/terrain/18/429258/176964.terrain new file mode 100644 index 000000000..fd1c195cd Binary files /dev/null and b/public/terrain/18/429258/176964.terrain differ diff --git a/public/terrain/18/429258/176965.terrain b/public/terrain/18/429258/176965.terrain new file mode 100644 index 000000000..4cf44659a Binary files /dev/null and b/public/terrain/18/429258/176965.terrain differ diff --git a/public/terrain/18/429258/176966.terrain b/public/terrain/18/429258/176966.terrain new file mode 100644 index 000000000..600559d9a Binary files /dev/null and b/public/terrain/18/429258/176966.terrain differ diff --git a/public/terrain/18/429258/176967.terrain b/public/terrain/18/429258/176967.terrain new file mode 100644 index 000000000..1c8fb33c9 Binary files /dev/null and b/public/terrain/18/429258/176967.terrain differ diff --git a/public/terrain/18/429258/176968.terrain b/public/terrain/18/429258/176968.terrain new file mode 100644 index 000000000..8d9c0a1dd Binary files /dev/null and b/public/terrain/18/429258/176968.terrain differ diff --git a/public/terrain/18/429258/176969.terrain b/public/terrain/18/429258/176969.terrain new file mode 100644 index 000000000..f3878a475 Binary files /dev/null and b/public/terrain/18/429258/176969.terrain differ diff --git a/public/terrain/18/429258/176970.terrain b/public/terrain/18/429258/176970.terrain new file mode 100644 index 000000000..8a6d940a5 Binary files /dev/null and b/public/terrain/18/429258/176970.terrain differ diff --git a/public/terrain/18/429258/176971.terrain b/public/terrain/18/429258/176971.terrain new file mode 100644 index 000000000..f367bc45e Binary files /dev/null and b/public/terrain/18/429258/176971.terrain differ diff --git a/public/terrain/18/429258/176972.terrain b/public/terrain/18/429258/176972.terrain new file mode 100644 index 000000000..fba162ddc Binary files /dev/null and b/public/terrain/18/429258/176972.terrain differ diff --git a/public/terrain/18/429258/176973.terrain b/public/terrain/18/429258/176973.terrain new file mode 100644 index 000000000..a76923cb9 Binary files /dev/null and b/public/terrain/18/429258/176973.terrain differ diff --git a/public/terrain/18/429258/176974.terrain b/public/terrain/18/429258/176974.terrain new file mode 100644 index 000000000..354fdbb94 Binary files /dev/null and b/public/terrain/18/429258/176974.terrain differ diff --git a/public/terrain/18/429258/176975.terrain b/public/terrain/18/429258/176975.terrain new file mode 100644 index 000000000..2507e5ed1 Binary files /dev/null and b/public/terrain/18/429258/176975.terrain differ diff --git a/public/terrain/18/429258/176976.terrain b/public/terrain/18/429258/176976.terrain new file mode 100644 index 000000000..b8a8f9977 Binary files /dev/null and b/public/terrain/18/429258/176976.terrain differ diff --git a/public/terrain/18/429258/176977.terrain b/public/terrain/18/429258/176977.terrain new file mode 100644 index 000000000..ff1dafc7f Binary files /dev/null and b/public/terrain/18/429258/176977.terrain differ diff --git a/public/terrain/18/429258/176978.terrain b/public/terrain/18/429258/176978.terrain new file mode 100644 index 000000000..e4cc4d8c5 Binary files /dev/null and b/public/terrain/18/429258/176978.terrain differ diff --git a/public/terrain/18/429258/176979.terrain b/public/terrain/18/429258/176979.terrain new file mode 100644 index 000000000..30813961a Binary files /dev/null and b/public/terrain/18/429258/176979.terrain differ diff --git a/public/terrain/18/429258/176980.terrain b/public/terrain/18/429258/176980.terrain new file mode 100644 index 000000000..529703ecf Binary files /dev/null and b/public/terrain/18/429258/176980.terrain differ diff --git a/public/terrain/18/429258/176981.terrain b/public/terrain/18/429258/176981.terrain new file mode 100644 index 000000000..2ec3760ca Binary files /dev/null and b/public/terrain/18/429258/176981.terrain differ diff --git a/public/terrain/18/429258/176982.terrain b/public/terrain/18/429258/176982.terrain new file mode 100644 index 000000000..314815a93 Binary files /dev/null and b/public/terrain/18/429258/176982.terrain differ diff --git a/public/terrain/18/429258/176983.terrain b/public/terrain/18/429258/176983.terrain new file mode 100644 index 000000000..dea5b251f Binary files /dev/null and b/public/terrain/18/429258/176983.terrain differ diff --git a/public/terrain/18/429258/176984.terrain b/public/terrain/18/429258/176984.terrain new file mode 100644 index 000000000..0b0f44908 Binary files /dev/null and b/public/terrain/18/429258/176984.terrain differ diff --git a/public/terrain/18/429258/176985.terrain b/public/terrain/18/429258/176985.terrain new file mode 100644 index 000000000..1586dbbcd Binary files /dev/null and b/public/terrain/18/429258/176985.terrain differ diff --git a/public/terrain/18/429258/176986.terrain b/public/terrain/18/429258/176986.terrain new file mode 100644 index 000000000..5e77ff8e4 Binary files /dev/null and b/public/terrain/18/429258/176986.terrain differ diff --git a/public/terrain/18/429258/176987.terrain b/public/terrain/18/429258/176987.terrain new file mode 100644 index 000000000..4c6010347 Binary files /dev/null and b/public/terrain/18/429258/176987.terrain differ diff --git a/public/terrain/18/429258/176988.terrain b/public/terrain/18/429258/176988.terrain new file mode 100644 index 000000000..2802cc834 Binary files /dev/null and b/public/terrain/18/429258/176988.terrain differ diff --git a/public/terrain/18/429258/176989.terrain b/public/terrain/18/429258/176989.terrain new file mode 100644 index 000000000..a159fcae9 Binary files /dev/null and b/public/terrain/18/429258/176989.terrain differ diff --git a/public/terrain/18/429258/176990.terrain b/public/terrain/18/429258/176990.terrain new file mode 100644 index 000000000..8b4c032a5 Binary files /dev/null and b/public/terrain/18/429258/176990.terrain differ diff --git a/public/terrain/18/429258/176991.terrain b/public/terrain/18/429258/176991.terrain new file mode 100644 index 000000000..477eb9f4b Binary files /dev/null and b/public/terrain/18/429258/176991.terrain differ diff --git a/public/terrain/18/429258/176992.terrain b/public/terrain/18/429258/176992.terrain new file mode 100644 index 000000000..e7b198d69 Binary files /dev/null and b/public/terrain/18/429258/176992.terrain differ diff --git a/public/terrain/18/429258/176993.terrain b/public/terrain/18/429258/176993.terrain new file mode 100644 index 000000000..12132c29e Binary files /dev/null and b/public/terrain/18/429258/176993.terrain differ diff --git a/public/terrain/18/429258/176994.terrain b/public/terrain/18/429258/176994.terrain new file mode 100644 index 000000000..0b44c69db Binary files /dev/null and b/public/terrain/18/429258/176994.terrain differ diff --git a/public/terrain/18/429258/176995.terrain b/public/terrain/18/429258/176995.terrain new file mode 100644 index 000000000..7a8837388 Binary files /dev/null and b/public/terrain/18/429258/176995.terrain differ diff --git a/public/terrain/18/429258/176996.terrain b/public/terrain/18/429258/176996.terrain new file mode 100644 index 000000000..0609fa63e Binary files /dev/null and b/public/terrain/18/429258/176996.terrain differ diff --git a/public/terrain/18/429258/176997.terrain b/public/terrain/18/429258/176997.terrain new file mode 100644 index 000000000..9ca03ecee Binary files /dev/null and b/public/terrain/18/429258/176997.terrain differ diff --git a/public/terrain/18/429258/176998.terrain b/public/terrain/18/429258/176998.terrain new file mode 100644 index 000000000..9182c3002 Binary files /dev/null and b/public/terrain/18/429258/176998.terrain differ diff --git a/public/terrain/18/429258/176999.terrain b/public/terrain/18/429258/176999.terrain new file mode 100644 index 000000000..2e2a72e21 Binary files /dev/null and b/public/terrain/18/429258/176999.terrain differ diff --git a/public/terrain/18/429258/177000.terrain b/public/terrain/18/429258/177000.terrain new file mode 100644 index 000000000..a615fe9df Binary files /dev/null and b/public/terrain/18/429258/177000.terrain differ diff --git a/public/terrain/18/429258/177001.terrain b/public/terrain/18/429258/177001.terrain new file mode 100644 index 000000000..ccf56c82b Binary files /dev/null and b/public/terrain/18/429258/177001.terrain differ diff --git a/public/terrain/18/429258/177002.terrain b/public/terrain/18/429258/177002.terrain new file mode 100644 index 000000000..086f72d6b Binary files /dev/null and b/public/terrain/18/429258/177002.terrain differ diff --git a/public/terrain/18/429258/177003.terrain b/public/terrain/18/429258/177003.terrain new file mode 100644 index 000000000..7191c628a Binary files /dev/null and b/public/terrain/18/429258/177003.terrain differ diff --git a/public/terrain/18/429258/177004.terrain b/public/terrain/18/429258/177004.terrain new file mode 100644 index 000000000..a168dad66 Binary files /dev/null and b/public/terrain/18/429258/177004.terrain differ diff --git a/public/terrain/18/429258/177005.terrain b/public/terrain/18/429258/177005.terrain new file mode 100644 index 000000000..a368b38a1 Binary files /dev/null and b/public/terrain/18/429258/177005.terrain differ diff --git a/public/terrain/18/429258/177006.terrain b/public/terrain/18/429258/177006.terrain new file mode 100644 index 000000000..5de02d6ec Binary files /dev/null and b/public/terrain/18/429258/177006.terrain differ diff --git a/public/terrain/18/429258/177007.terrain b/public/terrain/18/429258/177007.terrain new file mode 100644 index 000000000..41bd7164e Binary files /dev/null and b/public/terrain/18/429258/177007.terrain differ diff --git a/public/terrain/18/429258/177008.terrain b/public/terrain/18/429258/177008.terrain new file mode 100644 index 000000000..01d1ef588 Binary files /dev/null and b/public/terrain/18/429258/177008.terrain differ diff --git a/public/terrain/18/429258/177009.terrain b/public/terrain/18/429258/177009.terrain new file mode 100644 index 000000000..cad2af669 Binary files /dev/null and b/public/terrain/18/429258/177009.terrain differ diff --git a/public/terrain/18/429258/177010.terrain b/public/terrain/18/429258/177010.terrain new file mode 100644 index 000000000..4e5928a32 Binary files /dev/null and b/public/terrain/18/429258/177010.terrain differ diff --git a/public/terrain/18/429258/177011.terrain b/public/terrain/18/429258/177011.terrain new file mode 100644 index 000000000..063d8448a Binary files /dev/null and b/public/terrain/18/429258/177011.terrain differ diff --git a/public/terrain/18/429258/177012.terrain b/public/terrain/18/429258/177012.terrain new file mode 100644 index 000000000..f74b6c8b7 Binary files /dev/null and b/public/terrain/18/429258/177012.terrain differ diff --git a/public/terrain/18/429258/177013.terrain b/public/terrain/18/429258/177013.terrain new file mode 100644 index 000000000..cc05fb2ad Binary files /dev/null and b/public/terrain/18/429258/177013.terrain differ diff --git a/public/terrain/18/429258/177014.terrain b/public/terrain/18/429258/177014.terrain new file mode 100644 index 000000000..896820a9d Binary files /dev/null and b/public/terrain/18/429258/177014.terrain differ diff --git a/public/terrain/18/429258/177015.terrain b/public/terrain/18/429258/177015.terrain new file mode 100644 index 000000000..0c66ffaa0 Binary files /dev/null and b/public/terrain/18/429258/177015.terrain differ diff --git a/public/terrain/18/429258/177016.terrain b/public/terrain/18/429258/177016.terrain new file mode 100644 index 000000000..477d61109 Binary files /dev/null and b/public/terrain/18/429258/177016.terrain differ diff --git a/public/terrain/18/429258/177017.terrain b/public/terrain/18/429258/177017.terrain new file mode 100644 index 000000000..e1da5b3fb Binary files /dev/null and b/public/terrain/18/429258/177017.terrain differ diff --git a/public/terrain/18/429258/177018.terrain b/public/terrain/18/429258/177018.terrain new file mode 100644 index 000000000..5d3a415ee Binary files /dev/null and b/public/terrain/18/429258/177018.terrain differ diff --git a/public/terrain/18/429258/177019.terrain b/public/terrain/18/429258/177019.terrain new file mode 100644 index 000000000..3c9f1ea32 Binary files /dev/null and b/public/terrain/18/429258/177019.terrain differ diff --git a/public/terrain/18/429258/177020.terrain b/public/terrain/18/429258/177020.terrain new file mode 100644 index 000000000..fe6b26f5b Binary files /dev/null and b/public/terrain/18/429258/177020.terrain differ diff --git a/public/terrain/18/429258/177021.terrain b/public/terrain/18/429258/177021.terrain new file mode 100644 index 000000000..e1e021e2a Binary files /dev/null and b/public/terrain/18/429258/177021.terrain differ diff --git a/public/terrain/18/429258/177022.terrain b/public/terrain/18/429258/177022.terrain new file mode 100644 index 000000000..85db64165 Binary files /dev/null and b/public/terrain/18/429258/177022.terrain differ diff --git a/public/terrain/18/429258/177023.terrain b/public/terrain/18/429258/177023.terrain new file mode 100644 index 000000000..55768ca99 Binary files /dev/null and b/public/terrain/18/429258/177023.terrain differ diff --git a/public/terrain/18/429258/177024.terrain b/public/terrain/18/429258/177024.terrain new file mode 100644 index 000000000..5e1caff41 Binary files /dev/null and b/public/terrain/18/429258/177024.terrain differ diff --git a/public/terrain/18/429258/177025.terrain b/public/terrain/18/429258/177025.terrain new file mode 100644 index 000000000..a808512d0 Binary files /dev/null and b/public/terrain/18/429258/177025.terrain differ diff --git a/public/terrain/18/429258/177026.terrain b/public/terrain/18/429258/177026.terrain new file mode 100644 index 000000000..e0472e4f1 Binary files /dev/null and b/public/terrain/18/429258/177026.terrain differ diff --git a/public/terrain/18/429258/177027.terrain b/public/terrain/18/429258/177027.terrain new file mode 100644 index 000000000..1f11688e8 Binary files /dev/null and b/public/terrain/18/429258/177027.terrain differ diff --git a/public/terrain/18/429258/177028.terrain b/public/terrain/18/429258/177028.terrain new file mode 100644 index 000000000..d960ae974 Binary files /dev/null and b/public/terrain/18/429258/177028.terrain differ diff --git a/public/terrain/18/429258/177029.terrain b/public/terrain/18/429258/177029.terrain new file mode 100644 index 000000000..1a2a6c9df Binary files /dev/null and b/public/terrain/18/429258/177029.terrain differ diff --git a/public/terrain/18/429259/176871.terrain b/public/terrain/18/429259/176871.terrain new file mode 100644 index 000000000..c4dc75fb0 Binary files /dev/null and b/public/terrain/18/429259/176871.terrain differ diff --git a/public/terrain/18/429259/176872.terrain b/public/terrain/18/429259/176872.terrain new file mode 100644 index 000000000..5e86a136b Binary files /dev/null and b/public/terrain/18/429259/176872.terrain differ diff --git a/public/terrain/18/429259/176873.terrain b/public/terrain/18/429259/176873.terrain new file mode 100644 index 000000000..9ee431d45 Binary files /dev/null and b/public/terrain/18/429259/176873.terrain differ diff --git a/public/terrain/18/429259/176874.terrain b/public/terrain/18/429259/176874.terrain new file mode 100644 index 000000000..075c528d3 Binary files /dev/null and b/public/terrain/18/429259/176874.terrain differ diff --git a/public/terrain/18/429259/176875.terrain b/public/terrain/18/429259/176875.terrain new file mode 100644 index 000000000..de4684fbe Binary files /dev/null and b/public/terrain/18/429259/176875.terrain differ diff --git a/public/terrain/18/429259/176876.terrain b/public/terrain/18/429259/176876.terrain new file mode 100644 index 000000000..8393a88e2 Binary files /dev/null and b/public/terrain/18/429259/176876.terrain differ diff --git a/public/terrain/18/429259/176877.terrain b/public/terrain/18/429259/176877.terrain new file mode 100644 index 000000000..c7d088664 Binary files /dev/null and b/public/terrain/18/429259/176877.terrain differ diff --git a/public/terrain/18/429259/176878.terrain b/public/terrain/18/429259/176878.terrain new file mode 100644 index 000000000..5c5b5ead1 Binary files /dev/null and b/public/terrain/18/429259/176878.terrain differ diff --git a/public/terrain/18/429259/176879.terrain b/public/terrain/18/429259/176879.terrain new file mode 100644 index 000000000..f3857b2f6 Binary files /dev/null and b/public/terrain/18/429259/176879.terrain differ diff --git a/public/terrain/18/429259/176880.terrain b/public/terrain/18/429259/176880.terrain new file mode 100644 index 000000000..c2a9e52b0 Binary files /dev/null and b/public/terrain/18/429259/176880.terrain differ diff --git a/public/terrain/18/429259/176881.terrain b/public/terrain/18/429259/176881.terrain new file mode 100644 index 000000000..de1f35818 Binary files /dev/null and b/public/terrain/18/429259/176881.terrain differ diff --git a/public/terrain/18/429259/176882.terrain b/public/terrain/18/429259/176882.terrain new file mode 100644 index 000000000..78f4d6d66 Binary files /dev/null and b/public/terrain/18/429259/176882.terrain differ diff --git a/public/terrain/18/429259/176883.terrain b/public/terrain/18/429259/176883.terrain new file mode 100644 index 000000000..e5523d763 Binary files /dev/null and b/public/terrain/18/429259/176883.terrain differ diff --git a/public/terrain/18/429259/176884.terrain b/public/terrain/18/429259/176884.terrain new file mode 100644 index 000000000..77a302547 Binary files /dev/null and b/public/terrain/18/429259/176884.terrain differ diff --git a/public/terrain/18/429259/176885.terrain b/public/terrain/18/429259/176885.terrain new file mode 100644 index 000000000..29c184a4e Binary files /dev/null and b/public/terrain/18/429259/176885.terrain differ diff --git a/public/terrain/18/429259/176886.terrain b/public/terrain/18/429259/176886.terrain new file mode 100644 index 000000000..38cee8f44 Binary files /dev/null and b/public/terrain/18/429259/176886.terrain differ diff --git a/public/terrain/18/429259/176887.terrain b/public/terrain/18/429259/176887.terrain new file mode 100644 index 000000000..3241e95bd Binary files /dev/null and b/public/terrain/18/429259/176887.terrain differ diff --git a/public/terrain/18/429259/176888.terrain b/public/terrain/18/429259/176888.terrain new file mode 100644 index 000000000..a2f314a98 Binary files /dev/null and b/public/terrain/18/429259/176888.terrain differ diff --git a/public/terrain/18/429259/176889.terrain b/public/terrain/18/429259/176889.terrain new file mode 100644 index 000000000..720f449c7 Binary files /dev/null and b/public/terrain/18/429259/176889.terrain differ diff --git a/public/terrain/18/429259/176890.terrain b/public/terrain/18/429259/176890.terrain new file mode 100644 index 000000000..8dc65f5d4 Binary files /dev/null and b/public/terrain/18/429259/176890.terrain differ diff --git a/public/terrain/18/429259/176891.terrain b/public/terrain/18/429259/176891.terrain new file mode 100644 index 000000000..3e32062cc Binary files /dev/null and b/public/terrain/18/429259/176891.terrain differ diff --git a/public/terrain/18/429259/176892.terrain b/public/terrain/18/429259/176892.terrain new file mode 100644 index 000000000..95c147c58 Binary files /dev/null and b/public/terrain/18/429259/176892.terrain differ diff --git a/public/terrain/18/429259/176893.terrain b/public/terrain/18/429259/176893.terrain new file mode 100644 index 000000000..cbda3a2e2 Binary files /dev/null and b/public/terrain/18/429259/176893.terrain differ diff --git a/public/terrain/18/429259/176894.terrain b/public/terrain/18/429259/176894.terrain new file mode 100644 index 000000000..e473be227 Binary files /dev/null and b/public/terrain/18/429259/176894.terrain differ diff --git a/public/terrain/18/429259/176895.terrain b/public/terrain/18/429259/176895.terrain new file mode 100644 index 000000000..bd5bc1488 Binary files /dev/null and b/public/terrain/18/429259/176895.terrain differ diff --git a/public/terrain/18/429259/176896.terrain b/public/terrain/18/429259/176896.terrain new file mode 100644 index 000000000..e4a099583 Binary files /dev/null and b/public/terrain/18/429259/176896.terrain differ diff --git a/public/terrain/18/429259/176897.terrain b/public/terrain/18/429259/176897.terrain new file mode 100644 index 000000000..6a0989fdc Binary files /dev/null and b/public/terrain/18/429259/176897.terrain differ diff --git a/public/terrain/18/429259/176898.terrain b/public/terrain/18/429259/176898.terrain new file mode 100644 index 000000000..9939130ee Binary files /dev/null and b/public/terrain/18/429259/176898.terrain differ diff --git a/public/terrain/18/429259/176899.terrain b/public/terrain/18/429259/176899.terrain new file mode 100644 index 000000000..532336663 Binary files /dev/null and b/public/terrain/18/429259/176899.terrain differ diff --git a/public/terrain/18/429259/176900.terrain b/public/terrain/18/429259/176900.terrain new file mode 100644 index 000000000..eaf6c0995 Binary files /dev/null and b/public/terrain/18/429259/176900.terrain differ diff --git a/public/terrain/18/429259/176901.terrain b/public/terrain/18/429259/176901.terrain new file mode 100644 index 000000000..3f31d3981 Binary files /dev/null and b/public/terrain/18/429259/176901.terrain differ diff --git a/public/terrain/18/429259/176902.terrain b/public/terrain/18/429259/176902.terrain new file mode 100644 index 000000000..e6507e5f5 Binary files /dev/null and b/public/terrain/18/429259/176902.terrain differ diff --git a/public/terrain/18/429259/176903.terrain b/public/terrain/18/429259/176903.terrain new file mode 100644 index 000000000..7ee30bf73 Binary files /dev/null and b/public/terrain/18/429259/176903.terrain differ diff --git a/public/terrain/18/429259/176904.terrain b/public/terrain/18/429259/176904.terrain new file mode 100644 index 000000000..5e9d7824b Binary files /dev/null and b/public/terrain/18/429259/176904.terrain differ diff --git a/public/terrain/18/429259/176905.terrain b/public/terrain/18/429259/176905.terrain new file mode 100644 index 000000000..43e737a34 Binary files /dev/null and b/public/terrain/18/429259/176905.terrain differ diff --git a/public/terrain/18/429259/176906.terrain b/public/terrain/18/429259/176906.terrain new file mode 100644 index 000000000..ba1b53dbc Binary files /dev/null and b/public/terrain/18/429259/176906.terrain differ diff --git a/public/terrain/18/429259/176907.terrain b/public/terrain/18/429259/176907.terrain new file mode 100644 index 000000000..b73a6a04a Binary files /dev/null and b/public/terrain/18/429259/176907.terrain differ diff --git a/public/terrain/18/429259/176908.terrain b/public/terrain/18/429259/176908.terrain new file mode 100644 index 000000000..3a5d311b1 Binary files /dev/null and b/public/terrain/18/429259/176908.terrain differ diff --git a/public/terrain/18/429259/176909.terrain b/public/terrain/18/429259/176909.terrain new file mode 100644 index 000000000..1a8879bc2 Binary files /dev/null and b/public/terrain/18/429259/176909.terrain differ diff --git a/public/terrain/18/429259/176910.terrain b/public/terrain/18/429259/176910.terrain new file mode 100644 index 000000000..1e38cc307 Binary files /dev/null and b/public/terrain/18/429259/176910.terrain differ diff --git a/public/terrain/18/429259/176911.terrain b/public/terrain/18/429259/176911.terrain new file mode 100644 index 000000000..2882aa8a4 Binary files /dev/null and b/public/terrain/18/429259/176911.terrain differ diff --git a/public/terrain/18/429259/176912.terrain b/public/terrain/18/429259/176912.terrain new file mode 100644 index 000000000..168dfe2f1 Binary files /dev/null and b/public/terrain/18/429259/176912.terrain differ diff --git a/public/terrain/18/429259/176913.terrain b/public/terrain/18/429259/176913.terrain new file mode 100644 index 000000000..d48c3ca9e Binary files /dev/null and b/public/terrain/18/429259/176913.terrain differ diff --git a/public/terrain/18/429259/176914.terrain b/public/terrain/18/429259/176914.terrain new file mode 100644 index 000000000..a51ffbbc2 Binary files /dev/null and b/public/terrain/18/429259/176914.terrain differ diff --git a/public/terrain/18/429259/176915.terrain b/public/terrain/18/429259/176915.terrain new file mode 100644 index 000000000..9986e2ed9 Binary files /dev/null and b/public/terrain/18/429259/176915.terrain differ diff --git a/public/terrain/18/429259/176916.terrain b/public/terrain/18/429259/176916.terrain new file mode 100644 index 000000000..2b3f8c737 Binary files /dev/null and b/public/terrain/18/429259/176916.terrain differ diff --git a/public/terrain/18/429259/176917.terrain b/public/terrain/18/429259/176917.terrain new file mode 100644 index 000000000..afbf91392 Binary files /dev/null and b/public/terrain/18/429259/176917.terrain differ diff --git a/public/terrain/18/429259/176918.terrain b/public/terrain/18/429259/176918.terrain new file mode 100644 index 000000000..7e49dbc13 Binary files /dev/null and b/public/terrain/18/429259/176918.terrain differ diff --git a/public/terrain/18/429259/176919.terrain b/public/terrain/18/429259/176919.terrain new file mode 100644 index 000000000..e4a055f77 Binary files /dev/null and b/public/terrain/18/429259/176919.terrain differ diff --git a/public/terrain/18/429259/176920.terrain b/public/terrain/18/429259/176920.terrain new file mode 100644 index 000000000..10cd11255 Binary files /dev/null and b/public/terrain/18/429259/176920.terrain differ diff --git a/public/terrain/18/429259/176921.terrain b/public/terrain/18/429259/176921.terrain new file mode 100644 index 000000000..fb65342f4 Binary files /dev/null and b/public/terrain/18/429259/176921.terrain differ diff --git a/public/terrain/18/429259/176922.terrain b/public/terrain/18/429259/176922.terrain new file mode 100644 index 000000000..ecfcdb57e Binary files /dev/null and b/public/terrain/18/429259/176922.terrain differ diff --git a/public/terrain/18/429259/176923.terrain b/public/terrain/18/429259/176923.terrain new file mode 100644 index 000000000..d958f7c32 Binary files /dev/null and b/public/terrain/18/429259/176923.terrain differ diff --git a/public/terrain/18/429259/176924.terrain b/public/terrain/18/429259/176924.terrain new file mode 100644 index 000000000..5bbdf4734 Binary files /dev/null and b/public/terrain/18/429259/176924.terrain differ diff --git a/public/terrain/18/429259/176925.terrain b/public/terrain/18/429259/176925.terrain new file mode 100644 index 000000000..b7d39d601 Binary files /dev/null and b/public/terrain/18/429259/176925.terrain differ diff --git a/public/terrain/18/429259/176926.terrain b/public/terrain/18/429259/176926.terrain new file mode 100644 index 000000000..0f7236087 Binary files /dev/null and b/public/terrain/18/429259/176926.terrain differ diff --git a/public/terrain/18/429259/176927.terrain b/public/terrain/18/429259/176927.terrain new file mode 100644 index 000000000..8b8a6ce2a Binary files /dev/null and b/public/terrain/18/429259/176927.terrain differ diff --git a/public/terrain/18/429259/176928.terrain b/public/terrain/18/429259/176928.terrain new file mode 100644 index 000000000..6a0b7a82e Binary files /dev/null and b/public/terrain/18/429259/176928.terrain differ diff --git a/public/terrain/18/429259/176929.terrain b/public/terrain/18/429259/176929.terrain new file mode 100644 index 000000000..260e49819 Binary files /dev/null and b/public/terrain/18/429259/176929.terrain differ diff --git a/public/terrain/18/429259/176930.terrain b/public/terrain/18/429259/176930.terrain new file mode 100644 index 000000000..f481beed9 Binary files /dev/null and b/public/terrain/18/429259/176930.terrain differ diff --git a/public/terrain/18/429259/176931.terrain b/public/terrain/18/429259/176931.terrain new file mode 100644 index 000000000..cec9e6f47 Binary files /dev/null and b/public/terrain/18/429259/176931.terrain differ diff --git a/public/terrain/18/429259/176932.terrain b/public/terrain/18/429259/176932.terrain new file mode 100644 index 000000000..9a05cdb8b Binary files /dev/null and b/public/terrain/18/429259/176932.terrain differ diff --git a/public/terrain/18/429259/176933.terrain b/public/terrain/18/429259/176933.terrain new file mode 100644 index 000000000..651d0ace6 Binary files /dev/null and b/public/terrain/18/429259/176933.terrain differ diff --git a/public/terrain/18/429259/176934.terrain b/public/terrain/18/429259/176934.terrain new file mode 100644 index 000000000..b9cd8bc5a Binary files /dev/null and b/public/terrain/18/429259/176934.terrain differ diff --git a/public/terrain/18/429259/176935.terrain b/public/terrain/18/429259/176935.terrain new file mode 100644 index 000000000..78cb312b4 Binary files /dev/null and b/public/terrain/18/429259/176935.terrain differ diff --git a/public/terrain/18/429259/176936.terrain b/public/terrain/18/429259/176936.terrain new file mode 100644 index 000000000..efcd4afeb Binary files /dev/null and b/public/terrain/18/429259/176936.terrain differ diff --git a/public/terrain/18/429259/176937.terrain b/public/terrain/18/429259/176937.terrain new file mode 100644 index 000000000..1b5197e9f Binary files /dev/null and b/public/terrain/18/429259/176937.terrain differ diff --git a/public/terrain/18/429259/176938.terrain b/public/terrain/18/429259/176938.terrain new file mode 100644 index 000000000..0e7b6d03b Binary files /dev/null and b/public/terrain/18/429259/176938.terrain differ diff --git a/public/terrain/18/429259/176939.terrain b/public/terrain/18/429259/176939.terrain new file mode 100644 index 000000000..195329811 Binary files /dev/null and b/public/terrain/18/429259/176939.terrain differ diff --git a/public/terrain/18/429259/176940.terrain b/public/terrain/18/429259/176940.terrain new file mode 100644 index 000000000..b33639b75 Binary files /dev/null and b/public/terrain/18/429259/176940.terrain differ diff --git a/public/terrain/18/429259/176941.terrain b/public/terrain/18/429259/176941.terrain new file mode 100644 index 000000000..65659590a Binary files /dev/null and b/public/terrain/18/429259/176941.terrain differ diff --git a/public/terrain/18/429259/176942.terrain b/public/terrain/18/429259/176942.terrain new file mode 100644 index 000000000..37ef67105 Binary files /dev/null and b/public/terrain/18/429259/176942.terrain differ diff --git a/public/terrain/18/429259/176943.terrain b/public/terrain/18/429259/176943.terrain new file mode 100644 index 000000000..894405a3b Binary files /dev/null and b/public/terrain/18/429259/176943.terrain differ diff --git a/public/terrain/18/429259/176944.terrain b/public/terrain/18/429259/176944.terrain new file mode 100644 index 000000000..11e88fd0a Binary files /dev/null and b/public/terrain/18/429259/176944.terrain differ diff --git a/public/terrain/18/429259/176945.terrain b/public/terrain/18/429259/176945.terrain new file mode 100644 index 000000000..912e75187 Binary files /dev/null and b/public/terrain/18/429259/176945.terrain differ diff --git a/public/terrain/18/429259/176946.terrain b/public/terrain/18/429259/176946.terrain new file mode 100644 index 000000000..e67e8ec28 Binary files /dev/null and b/public/terrain/18/429259/176946.terrain differ diff --git a/public/terrain/18/429259/176947.terrain b/public/terrain/18/429259/176947.terrain new file mode 100644 index 000000000..8e0c23e8a Binary files /dev/null and b/public/terrain/18/429259/176947.terrain differ diff --git a/public/terrain/18/429259/176948.terrain b/public/terrain/18/429259/176948.terrain new file mode 100644 index 000000000..cbef60677 Binary files /dev/null and b/public/terrain/18/429259/176948.terrain differ diff --git a/public/terrain/18/429259/176949.terrain b/public/terrain/18/429259/176949.terrain new file mode 100644 index 000000000..909f63286 Binary files /dev/null and b/public/terrain/18/429259/176949.terrain differ diff --git a/public/terrain/18/429259/176950.terrain b/public/terrain/18/429259/176950.terrain new file mode 100644 index 000000000..a30309cf9 Binary files /dev/null and b/public/terrain/18/429259/176950.terrain differ diff --git a/public/terrain/18/429259/176951.terrain b/public/terrain/18/429259/176951.terrain new file mode 100644 index 000000000..80971fc87 Binary files /dev/null and b/public/terrain/18/429259/176951.terrain differ diff --git a/public/terrain/18/429259/176952.terrain b/public/terrain/18/429259/176952.terrain new file mode 100644 index 000000000..96ea3a9a2 Binary files /dev/null and b/public/terrain/18/429259/176952.terrain differ diff --git a/public/terrain/18/429259/176953.terrain b/public/terrain/18/429259/176953.terrain new file mode 100644 index 000000000..13d5a1ef8 Binary files /dev/null and b/public/terrain/18/429259/176953.terrain differ diff --git a/public/terrain/18/429259/176954.terrain b/public/terrain/18/429259/176954.terrain new file mode 100644 index 000000000..0488b3d53 Binary files /dev/null and b/public/terrain/18/429259/176954.terrain differ diff --git a/public/terrain/18/429259/176955.terrain b/public/terrain/18/429259/176955.terrain new file mode 100644 index 000000000..06fda1f4a Binary files /dev/null and b/public/terrain/18/429259/176955.terrain differ diff --git a/public/terrain/18/429259/176956.terrain b/public/terrain/18/429259/176956.terrain new file mode 100644 index 000000000..e1d59de9b Binary files /dev/null and b/public/terrain/18/429259/176956.terrain differ diff --git a/public/terrain/18/429259/176957.terrain b/public/terrain/18/429259/176957.terrain new file mode 100644 index 000000000..2adfad4d7 Binary files /dev/null and b/public/terrain/18/429259/176957.terrain differ diff --git a/public/terrain/18/429259/176958.terrain b/public/terrain/18/429259/176958.terrain new file mode 100644 index 000000000..7ed93f069 Binary files /dev/null and b/public/terrain/18/429259/176958.terrain differ diff --git a/public/terrain/18/429259/176959.terrain b/public/terrain/18/429259/176959.terrain new file mode 100644 index 000000000..41a2ca911 Binary files /dev/null and b/public/terrain/18/429259/176959.terrain differ diff --git a/public/terrain/18/429259/176960.terrain b/public/terrain/18/429259/176960.terrain new file mode 100644 index 000000000..200af6b0a Binary files /dev/null and b/public/terrain/18/429259/176960.terrain differ diff --git a/public/terrain/18/429259/176961.terrain b/public/terrain/18/429259/176961.terrain new file mode 100644 index 000000000..d568c73e5 Binary files /dev/null and b/public/terrain/18/429259/176961.terrain differ diff --git a/public/terrain/18/429259/176962.terrain b/public/terrain/18/429259/176962.terrain new file mode 100644 index 000000000..2d5bcaf98 Binary files /dev/null and b/public/terrain/18/429259/176962.terrain differ diff --git a/public/terrain/18/429259/176963.terrain b/public/terrain/18/429259/176963.terrain new file mode 100644 index 000000000..747b4b084 Binary files /dev/null and b/public/terrain/18/429259/176963.terrain differ diff --git a/public/terrain/18/429259/176964.terrain b/public/terrain/18/429259/176964.terrain new file mode 100644 index 000000000..b25146862 Binary files /dev/null and b/public/terrain/18/429259/176964.terrain differ diff --git a/public/terrain/18/429259/176965.terrain b/public/terrain/18/429259/176965.terrain new file mode 100644 index 000000000..f92f59d34 Binary files /dev/null and b/public/terrain/18/429259/176965.terrain differ diff --git a/public/terrain/18/429259/176966.terrain b/public/terrain/18/429259/176966.terrain new file mode 100644 index 000000000..19b400254 Binary files /dev/null and b/public/terrain/18/429259/176966.terrain differ diff --git a/public/terrain/18/429259/176967.terrain b/public/terrain/18/429259/176967.terrain new file mode 100644 index 000000000..f4a45b9c5 Binary files /dev/null and b/public/terrain/18/429259/176967.terrain differ diff --git a/public/terrain/18/429259/176968.terrain b/public/terrain/18/429259/176968.terrain new file mode 100644 index 000000000..b3e0fd82d Binary files /dev/null and b/public/terrain/18/429259/176968.terrain differ diff --git a/public/terrain/18/429259/176969.terrain b/public/terrain/18/429259/176969.terrain new file mode 100644 index 000000000..42f7c20e9 Binary files /dev/null and b/public/terrain/18/429259/176969.terrain differ diff --git a/public/terrain/18/429259/176970.terrain b/public/terrain/18/429259/176970.terrain new file mode 100644 index 000000000..17f8964a7 Binary files /dev/null and b/public/terrain/18/429259/176970.terrain differ diff --git a/public/terrain/18/429259/176971.terrain b/public/terrain/18/429259/176971.terrain new file mode 100644 index 000000000..4bb0f2b85 Binary files /dev/null and b/public/terrain/18/429259/176971.terrain differ diff --git a/public/terrain/18/429259/176972.terrain b/public/terrain/18/429259/176972.terrain new file mode 100644 index 000000000..9d8122294 Binary files /dev/null and b/public/terrain/18/429259/176972.terrain differ diff --git a/public/terrain/18/429259/176973.terrain b/public/terrain/18/429259/176973.terrain new file mode 100644 index 000000000..acc7116ca Binary files /dev/null and b/public/terrain/18/429259/176973.terrain differ diff --git a/public/terrain/18/429259/176974.terrain b/public/terrain/18/429259/176974.terrain new file mode 100644 index 000000000..918a22051 Binary files /dev/null and b/public/terrain/18/429259/176974.terrain differ diff --git a/public/terrain/18/429259/176975.terrain b/public/terrain/18/429259/176975.terrain new file mode 100644 index 000000000..52e983ff9 Binary files /dev/null and b/public/terrain/18/429259/176975.terrain differ diff --git a/public/terrain/18/429259/176976.terrain b/public/terrain/18/429259/176976.terrain new file mode 100644 index 000000000..700676860 Binary files /dev/null and b/public/terrain/18/429259/176976.terrain differ diff --git a/public/terrain/18/429259/176977.terrain b/public/terrain/18/429259/176977.terrain new file mode 100644 index 000000000..0bf5780f2 Binary files /dev/null and b/public/terrain/18/429259/176977.terrain differ diff --git a/public/terrain/18/429259/176978.terrain b/public/terrain/18/429259/176978.terrain new file mode 100644 index 000000000..de966fd81 Binary files /dev/null and b/public/terrain/18/429259/176978.terrain differ diff --git a/public/terrain/18/429259/176979.terrain b/public/terrain/18/429259/176979.terrain new file mode 100644 index 000000000..1977a2126 Binary files /dev/null and b/public/terrain/18/429259/176979.terrain differ diff --git a/public/terrain/18/429259/176980.terrain b/public/terrain/18/429259/176980.terrain new file mode 100644 index 000000000..7ccbc6f8e Binary files /dev/null and b/public/terrain/18/429259/176980.terrain differ diff --git a/public/terrain/18/429259/176981.terrain b/public/terrain/18/429259/176981.terrain new file mode 100644 index 000000000..9b3de7aed Binary files /dev/null and b/public/terrain/18/429259/176981.terrain differ diff --git a/public/terrain/18/429259/176982.terrain b/public/terrain/18/429259/176982.terrain new file mode 100644 index 000000000..1a863fb31 Binary files /dev/null and b/public/terrain/18/429259/176982.terrain differ diff --git a/public/terrain/18/429259/176983.terrain b/public/terrain/18/429259/176983.terrain new file mode 100644 index 000000000..ba1d94d3b Binary files /dev/null and b/public/terrain/18/429259/176983.terrain differ diff --git a/public/terrain/18/429259/176984.terrain b/public/terrain/18/429259/176984.terrain new file mode 100644 index 000000000..f563020a6 Binary files /dev/null and b/public/terrain/18/429259/176984.terrain differ diff --git a/public/terrain/18/429259/176985.terrain b/public/terrain/18/429259/176985.terrain new file mode 100644 index 000000000..5d327742f Binary files /dev/null and b/public/terrain/18/429259/176985.terrain differ diff --git a/public/terrain/18/429259/176986.terrain b/public/terrain/18/429259/176986.terrain new file mode 100644 index 000000000..466f75ac5 Binary files /dev/null and b/public/terrain/18/429259/176986.terrain differ diff --git a/public/terrain/18/429259/176987.terrain b/public/terrain/18/429259/176987.terrain new file mode 100644 index 000000000..7058bccf9 Binary files /dev/null and b/public/terrain/18/429259/176987.terrain differ diff --git a/public/terrain/18/429259/176988.terrain b/public/terrain/18/429259/176988.terrain new file mode 100644 index 000000000..4a3a9cc7d Binary files /dev/null and b/public/terrain/18/429259/176988.terrain differ diff --git a/public/terrain/18/429259/176989.terrain b/public/terrain/18/429259/176989.terrain new file mode 100644 index 000000000..6d3e9bc6b Binary files /dev/null and b/public/terrain/18/429259/176989.terrain differ diff --git a/public/terrain/18/429259/176990.terrain b/public/terrain/18/429259/176990.terrain new file mode 100644 index 000000000..a38aeba9b Binary files /dev/null and b/public/terrain/18/429259/176990.terrain differ diff --git a/public/terrain/18/429259/176991.terrain b/public/terrain/18/429259/176991.terrain new file mode 100644 index 000000000..7e87bb4e0 Binary files /dev/null and b/public/terrain/18/429259/176991.terrain differ diff --git a/public/terrain/18/429259/176992.terrain b/public/terrain/18/429259/176992.terrain new file mode 100644 index 000000000..2430cf2b1 Binary files /dev/null and b/public/terrain/18/429259/176992.terrain differ diff --git a/public/terrain/18/429259/176993.terrain b/public/terrain/18/429259/176993.terrain new file mode 100644 index 000000000..f7047d73c Binary files /dev/null and b/public/terrain/18/429259/176993.terrain differ diff --git a/public/terrain/18/429259/176994.terrain b/public/terrain/18/429259/176994.terrain new file mode 100644 index 000000000..b647f52ce Binary files /dev/null and b/public/terrain/18/429259/176994.terrain differ diff --git a/public/terrain/18/429259/176995.terrain b/public/terrain/18/429259/176995.terrain new file mode 100644 index 000000000..3f8494ab3 Binary files /dev/null and b/public/terrain/18/429259/176995.terrain differ diff --git a/public/terrain/18/429259/176996.terrain b/public/terrain/18/429259/176996.terrain new file mode 100644 index 000000000..00896663d Binary files /dev/null and b/public/terrain/18/429259/176996.terrain differ diff --git a/public/terrain/18/429259/176997.terrain b/public/terrain/18/429259/176997.terrain new file mode 100644 index 000000000..da1ffec75 Binary files /dev/null and b/public/terrain/18/429259/176997.terrain differ diff --git a/public/terrain/18/429259/176998.terrain b/public/terrain/18/429259/176998.terrain new file mode 100644 index 000000000..46471ea59 Binary files /dev/null and b/public/terrain/18/429259/176998.terrain differ diff --git a/public/terrain/18/429259/176999.terrain b/public/terrain/18/429259/176999.terrain new file mode 100644 index 000000000..67465b78e Binary files /dev/null and b/public/terrain/18/429259/176999.terrain differ diff --git a/public/terrain/18/429259/177000.terrain b/public/terrain/18/429259/177000.terrain new file mode 100644 index 000000000..684f6b7f6 Binary files /dev/null and b/public/terrain/18/429259/177000.terrain differ diff --git a/public/terrain/18/429259/177001.terrain b/public/terrain/18/429259/177001.terrain new file mode 100644 index 000000000..ef6b82eb7 Binary files /dev/null and b/public/terrain/18/429259/177001.terrain differ diff --git a/public/terrain/18/429259/177002.terrain b/public/terrain/18/429259/177002.terrain new file mode 100644 index 000000000..5889b2d94 Binary files /dev/null and b/public/terrain/18/429259/177002.terrain differ diff --git a/public/terrain/18/429259/177003.terrain b/public/terrain/18/429259/177003.terrain new file mode 100644 index 000000000..e49b69b3b Binary files /dev/null and b/public/terrain/18/429259/177003.terrain differ diff --git a/public/terrain/18/429259/177004.terrain b/public/terrain/18/429259/177004.terrain new file mode 100644 index 000000000..edfe5dc46 Binary files /dev/null and b/public/terrain/18/429259/177004.terrain differ diff --git a/public/terrain/18/429259/177005.terrain b/public/terrain/18/429259/177005.terrain new file mode 100644 index 000000000..25fb2f799 Binary files /dev/null and b/public/terrain/18/429259/177005.terrain differ diff --git a/public/terrain/18/429259/177006.terrain b/public/terrain/18/429259/177006.terrain new file mode 100644 index 000000000..6862f6509 Binary files /dev/null and b/public/terrain/18/429259/177006.terrain differ diff --git a/public/terrain/18/429259/177007.terrain b/public/terrain/18/429259/177007.terrain new file mode 100644 index 000000000..1b71cdc17 Binary files /dev/null and b/public/terrain/18/429259/177007.terrain differ diff --git a/public/terrain/18/429259/177008.terrain b/public/terrain/18/429259/177008.terrain new file mode 100644 index 000000000..06c332c20 Binary files /dev/null and b/public/terrain/18/429259/177008.terrain differ diff --git a/public/terrain/18/429259/177009.terrain b/public/terrain/18/429259/177009.terrain new file mode 100644 index 000000000..64a408f13 Binary files /dev/null and b/public/terrain/18/429259/177009.terrain differ diff --git a/public/terrain/18/429259/177010.terrain b/public/terrain/18/429259/177010.terrain new file mode 100644 index 000000000..5fd2ea9af Binary files /dev/null and b/public/terrain/18/429259/177010.terrain differ diff --git a/public/terrain/18/429259/177011.terrain b/public/terrain/18/429259/177011.terrain new file mode 100644 index 000000000..3fc5a5fd6 Binary files /dev/null and b/public/terrain/18/429259/177011.terrain differ diff --git a/public/terrain/18/429259/177012.terrain b/public/terrain/18/429259/177012.terrain new file mode 100644 index 000000000..06641b8ef Binary files /dev/null and b/public/terrain/18/429259/177012.terrain differ diff --git a/public/terrain/18/429259/177013.terrain b/public/terrain/18/429259/177013.terrain new file mode 100644 index 000000000..503d1f29a Binary files /dev/null and b/public/terrain/18/429259/177013.terrain differ diff --git a/public/terrain/18/429259/177014.terrain b/public/terrain/18/429259/177014.terrain new file mode 100644 index 000000000..924edbd17 Binary files /dev/null and b/public/terrain/18/429259/177014.terrain differ diff --git a/public/terrain/18/429259/177015.terrain b/public/terrain/18/429259/177015.terrain new file mode 100644 index 000000000..1a9c5ce27 Binary files /dev/null and b/public/terrain/18/429259/177015.terrain differ diff --git a/public/terrain/18/429259/177016.terrain b/public/terrain/18/429259/177016.terrain new file mode 100644 index 000000000..2824e8025 Binary files /dev/null and b/public/terrain/18/429259/177016.terrain differ diff --git a/public/terrain/18/429259/177017.terrain b/public/terrain/18/429259/177017.terrain new file mode 100644 index 000000000..ee5ff3244 Binary files /dev/null and b/public/terrain/18/429259/177017.terrain differ diff --git a/public/terrain/18/429259/177018.terrain b/public/terrain/18/429259/177018.terrain new file mode 100644 index 000000000..ba9d6d608 Binary files /dev/null and b/public/terrain/18/429259/177018.terrain differ diff --git a/public/terrain/18/429259/177019.terrain b/public/terrain/18/429259/177019.terrain new file mode 100644 index 000000000..d3bea0ce9 Binary files /dev/null and b/public/terrain/18/429259/177019.terrain differ diff --git a/public/terrain/18/429259/177020.terrain b/public/terrain/18/429259/177020.terrain new file mode 100644 index 000000000..11ccc8e84 Binary files /dev/null and b/public/terrain/18/429259/177020.terrain differ diff --git a/public/terrain/18/429259/177021.terrain b/public/terrain/18/429259/177021.terrain new file mode 100644 index 000000000..2edd816eb Binary files /dev/null and b/public/terrain/18/429259/177021.terrain differ diff --git a/public/terrain/18/429259/177022.terrain b/public/terrain/18/429259/177022.terrain new file mode 100644 index 000000000..17ab3f319 Binary files /dev/null and b/public/terrain/18/429259/177022.terrain differ diff --git a/public/terrain/18/429259/177023.terrain b/public/terrain/18/429259/177023.terrain new file mode 100644 index 000000000..4da033a4a Binary files /dev/null and b/public/terrain/18/429259/177023.terrain differ diff --git a/public/terrain/18/429259/177024.terrain b/public/terrain/18/429259/177024.terrain new file mode 100644 index 000000000..394e12e52 Binary files /dev/null and b/public/terrain/18/429259/177024.terrain differ diff --git a/public/terrain/18/429259/177025.terrain b/public/terrain/18/429259/177025.terrain new file mode 100644 index 000000000..46a16a1a7 Binary files /dev/null and b/public/terrain/18/429259/177025.terrain differ diff --git a/public/terrain/18/429259/177026.terrain b/public/terrain/18/429259/177026.terrain new file mode 100644 index 000000000..6d9b79049 Binary files /dev/null and b/public/terrain/18/429259/177026.terrain differ diff --git a/public/terrain/18/429259/177027.terrain b/public/terrain/18/429259/177027.terrain new file mode 100644 index 000000000..0fb9aca45 Binary files /dev/null and b/public/terrain/18/429259/177027.terrain differ diff --git a/public/terrain/18/429259/177028.terrain b/public/terrain/18/429259/177028.terrain new file mode 100644 index 000000000..df79c981a Binary files /dev/null and b/public/terrain/18/429259/177028.terrain differ diff --git a/public/terrain/18/429259/177029.terrain b/public/terrain/18/429259/177029.terrain new file mode 100644 index 000000000..365ab6929 Binary files /dev/null and b/public/terrain/18/429259/177029.terrain differ diff --git a/public/terrain/18/429260/176871.terrain b/public/terrain/18/429260/176871.terrain new file mode 100644 index 000000000..6a46cd1b7 Binary files /dev/null and b/public/terrain/18/429260/176871.terrain differ diff --git a/public/terrain/18/429260/176872.terrain b/public/terrain/18/429260/176872.terrain new file mode 100644 index 000000000..5e83b78a0 Binary files /dev/null and b/public/terrain/18/429260/176872.terrain differ diff --git a/public/terrain/18/429260/176873.terrain b/public/terrain/18/429260/176873.terrain new file mode 100644 index 000000000..7cc73b7bb Binary files /dev/null and b/public/terrain/18/429260/176873.terrain differ diff --git a/public/terrain/18/429260/176874.terrain b/public/terrain/18/429260/176874.terrain new file mode 100644 index 000000000..e16d554c0 Binary files /dev/null and b/public/terrain/18/429260/176874.terrain differ diff --git a/public/terrain/18/429260/176875.terrain b/public/terrain/18/429260/176875.terrain new file mode 100644 index 000000000..ca802cd33 Binary files /dev/null and b/public/terrain/18/429260/176875.terrain differ diff --git a/public/terrain/18/429260/176876.terrain b/public/terrain/18/429260/176876.terrain new file mode 100644 index 000000000..bd5382aff Binary files /dev/null and b/public/terrain/18/429260/176876.terrain differ diff --git a/public/terrain/18/429260/176877.terrain b/public/terrain/18/429260/176877.terrain new file mode 100644 index 000000000..b0ab568f1 Binary files /dev/null and b/public/terrain/18/429260/176877.terrain differ diff --git a/public/terrain/18/429260/176878.terrain b/public/terrain/18/429260/176878.terrain new file mode 100644 index 000000000..a7d0fed80 Binary files /dev/null and b/public/terrain/18/429260/176878.terrain differ diff --git a/public/terrain/18/429260/176879.terrain b/public/terrain/18/429260/176879.terrain new file mode 100644 index 000000000..c8cedfcbd Binary files /dev/null and b/public/terrain/18/429260/176879.terrain differ diff --git a/public/terrain/18/429260/176880.terrain b/public/terrain/18/429260/176880.terrain new file mode 100644 index 000000000..2979e6e01 Binary files /dev/null and b/public/terrain/18/429260/176880.terrain differ diff --git a/public/terrain/18/429260/176881.terrain b/public/terrain/18/429260/176881.terrain new file mode 100644 index 000000000..0562a0fad Binary files /dev/null and b/public/terrain/18/429260/176881.terrain differ diff --git a/public/terrain/18/429260/176882.terrain b/public/terrain/18/429260/176882.terrain new file mode 100644 index 000000000..0b9f107cc Binary files /dev/null and b/public/terrain/18/429260/176882.terrain differ diff --git a/public/terrain/18/429260/176883.terrain b/public/terrain/18/429260/176883.terrain new file mode 100644 index 000000000..db36ba6e2 Binary files /dev/null and b/public/terrain/18/429260/176883.terrain differ diff --git a/public/terrain/18/429260/176884.terrain b/public/terrain/18/429260/176884.terrain new file mode 100644 index 000000000..cf2f505a4 Binary files /dev/null and b/public/terrain/18/429260/176884.terrain differ diff --git a/public/terrain/18/429260/176885.terrain b/public/terrain/18/429260/176885.terrain new file mode 100644 index 000000000..52361822f Binary files /dev/null and b/public/terrain/18/429260/176885.terrain differ diff --git a/public/terrain/18/429260/176886.terrain b/public/terrain/18/429260/176886.terrain new file mode 100644 index 000000000..8de5d717c Binary files /dev/null and b/public/terrain/18/429260/176886.terrain differ diff --git a/public/terrain/18/429260/176887.terrain b/public/terrain/18/429260/176887.terrain new file mode 100644 index 000000000..30643a16d Binary files /dev/null and b/public/terrain/18/429260/176887.terrain differ diff --git a/public/terrain/18/429260/176888.terrain b/public/terrain/18/429260/176888.terrain new file mode 100644 index 000000000..1db2ab3c8 Binary files /dev/null and b/public/terrain/18/429260/176888.terrain differ diff --git a/public/terrain/18/429260/176889.terrain b/public/terrain/18/429260/176889.terrain new file mode 100644 index 000000000..2731a8ab8 Binary files /dev/null and b/public/terrain/18/429260/176889.terrain differ diff --git a/public/terrain/18/429260/176890.terrain b/public/terrain/18/429260/176890.terrain new file mode 100644 index 000000000..aef5acc83 Binary files /dev/null and b/public/terrain/18/429260/176890.terrain differ diff --git a/public/terrain/18/429260/176891.terrain b/public/terrain/18/429260/176891.terrain new file mode 100644 index 000000000..56363ddae Binary files /dev/null and b/public/terrain/18/429260/176891.terrain differ diff --git a/public/terrain/18/429260/176892.terrain b/public/terrain/18/429260/176892.terrain new file mode 100644 index 000000000..405e3c328 Binary files /dev/null and b/public/terrain/18/429260/176892.terrain differ diff --git a/public/terrain/18/429260/176893.terrain b/public/terrain/18/429260/176893.terrain new file mode 100644 index 000000000..bf4a35429 Binary files /dev/null and b/public/terrain/18/429260/176893.terrain differ diff --git a/public/terrain/18/429260/176894.terrain b/public/terrain/18/429260/176894.terrain new file mode 100644 index 000000000..3a27f8947 Binary files /dev/null and b/public/terrain/18/429260/176894.terrain differ diff --git a/public/terrain/18/429260/176895.terrain b/public/terrain/18/429260/176895.terrain new file mode 100644 index 000000000..41bec469c Binary files /dev/null and b/public/terrain/18/429260/176895.terrain differ diff --git a/public/terrain/18/429260/176896.terrain b/public/terrain/18/429260/176896.terrain new file mode 100644 index 000000000..e93eacbc1 Binary files /dev/null and b/public/terrain/18/429260/176896.terrain differ diff --git a/public/terrain/18/429260/176897.terrain b/public/terrain/18/429260/176897.terrain new file mode 100644 index 000000000..4a38607aa Binary files /dev/null and b/public/terrain/18/429260/176897.terrain differ diff --git a/public/terrain/18/429260/176898.terrain b/public/terrain/18/429260/176898.terrain new file mode 100644 index 000000000..31ef7f3e0 Binary files /dev/null and b/public/terrain/18/429260/176898.terrain differ diff --git a/public/terrain/18/429260/176899.terrain b/public/terrain/18/429260/176899.terrain new file mode 100644 index 000000000..3edbb64c9 Binary files /dev/null and b/public/terrain/18/429260/176899.terrain differ diff --git a/public/terrain/18/429260/176900.terrain b/public/terrain/18/429260/176900.terrain new file mode 100644 index 000000000..4a8ec3174 Binary files /dev/null and b/public/terrain/18/429260/176900.terrain differ diff --git a/public/terrain/18/429260/176901.terrain b/public/terrain/18/429260/176901.terrain new file mode 100644 index 000000000..9fd567e68 Binary files /dev/null and b/public/terrain/18/429260/176901.terrain differ diff --git a/public/terrain/18/429260/176902.terrain b/public/terrain/18/429260/176902.terrain new file mode 100644 index 000000000..6f5965b58 Binary files /dev/null and b/public/terrain/18/429260/176902.terrain differ diff --git a/public/terrain/18/429260/176903.terrain b/public/terrain/18/429260/176903.terrain new file mode 100644 index 000000000..e05675ac1 Binary files /dev/null and b/public/terrain/18/429260/176903.terrain differ diff --git a/public/terrain/18/429260/176904.terrain b/public/terrain/18/429260/176904.terrain new file mode 100644 index 000000000..6540d6f3f Binary files /dev/null and b/public/terrain/18/429260/176904.terrain differ diff --git a/public/terrain/18/429260/176905.terrain b/public/terrain/18/429260/176905.terrain new file mode 100644 index 000000000..75f4848f2 Binary files /dev/null and b/public/terrain/18/429260/176905.terrain differ diff --git a/public/terrain/18/429260/176906.terrain b/public/terrain/18/429260/176906.terrain new file mode 100644 index 000000000..6c6e68d99 Binary files /dev/null and b/public/terrain/18/429260/176906.terrain differ diff --git a/public/terrain/18/429260/176907.terrain b/public/terrain/18/429260/176907.terrain new file mode 100644 index 000000000..19f880e84 Binary files /dev/null and b/public/terrain/18/429260/176907.terrain differ diff --git a/public/terrain/18/429260/176908.terrain b/public/terrain/18/429260/176908.terrain new file mode 100644 index 000000000..5facd9308 Binary files /dev/null and b/public/terrain/18/429260/176908.terrain differ diff --git a/public/terrain/18/429260/176909.terrain b/public/terrain/18/429260/176909.terrain new file mode 100644 index 000000000..633479b04 Binary files /dev/null and b/public/terrain/18/429260/176909.terrain differ diff --git a/public/terrain/18/429260/176910.terrain b/public/terrain/18/429260/176910.terrain new file mode 100644 index 000000000..fd2ec51a3 Binary files /dev/null and b/public/terrain/18/429260/176910.terrain differ diff --git a/public/terrain/18/429260/176911.terrain b/public/terrain/18/429260/176911.terrain new file mode 100644 index 000000000..a6e928880 Binary files /dev/null and b/public/terrain/18/429260/176911.terrain differ diff --git a/public/terrain/18/429260/176912.terrain b/public/terrain/18/429260/176912.terrain new file mode 100644 index 000000000..0a497dd97 Binary files /dev/null and b/public/terrain/18/429260/176912.terrain differ diff --git a/public/terrain/18/429260/176913.terrain b/public/terrain/18/429260/176913.terrain new file mode 100644 index 000000000..30cb90cc5 Binary files /dev/null and b/public/terrain/18/429260/176913.terrain differ diff --git a/public/terrain/18/429260/176914.terrain b/public/terrain/18/429260/176914.terrain new file mode 100644 index 000000000..cd7db0034 Binary files /dev/null and b/public/terrain/18/429260/176914.terrain differ diff --git a/public/terrain/18/429260/176915.terrain b/public/terrain/18/429260/176915.terrain new file mode 100644 index 000000000..650cbb64e Binary files /dev/null and b/public/terrain/18/429260/176915.terrain differ diff --git a/public/terrain/18/429260/176916.terrain b/public/terrain/18/429260/176916.terrain new file mode 100644 index 000000000..c88fbc015 Binary files /dev/null and b/public/terrain/18/429260/176916.terrain differ diff --git a/public/terrain/18/429260/176917.terrain b/public/terrain/18/429260/176917.terrain new file mode 100644 index 000000000..e017fb04c Binary files /dev/null and b/public/terrain/18/429260/176917.terrain differ diff --git a/public/terrain/18/429260/176918.terrain b/public/terrain/18/429260/176918.terrain new file mode 100644 index 000000000..d0634a6e5 Binary files /dev/null and b/public/terrain/18/429260/176918.terrain differ diff --git a/public/terrain/18/429260/176919.terrain b/public/terrain/18/429260/176919.terrain new file mode 100644 index 000000000..ecb57e4d9 Binary files /dev/null and b/public/terrain/18/429260/176919.terrain differ diff --git a/public/terrain/18/429260/176920.terrain b/public/terrain/18/429260/176920.terrain new file mode 100644 index 000000000..3bd2c812d Binary files /dev/null and b/public/terrain/18/429260/176920.terrain differ diff --git a/public/terrain/18/429260/176921.terrain b/public/terrain/18/429260/176921.terrain new file mode 100644 index 000000000..123497556 Binary files /dev/null and b/public/terrain/18/429260/176921.terrain differ diff --git a/public/terrain/18/429260/176922.terrain b/public/terrain/18/429260/176922.terrain new file mode 100644 index 000000000..98beebe96 Binary files /dev/null and b/public/terrain/18/429260/176922.terrain differ diff --git a/public/terrain/18/429260/176923.terrain b/public/terrain/18/429260/176923.terrain new file mode 100644 index 000000000..3992fff9f Binary files /dev/null and b/public/terrain/18/429260/176923.terrain differ diff --git a/public/terrain/18/429260/176924.terrain b/public/terrain/18/429260/176924.terrain new file mode 100644 index 000000000..32c346699 Binary files /dev/null and b/public/terrain/18/429260/176924.terrain differ diff --git a/public/terrain/18/429260/176925.terrain b/public/terrain/18/429260/176925.terrain new file mode 100644 index 000000000..bc6109cb3 Binary files /dev/null and b/public/terrain/18/429260/176925.terrain differ diff --git a/public/terrain/18/429260/176926.terrain b/public/terrain/18/429260/176926.terrain new file mode 100644 index 000000000..20e81575c Binary files /dev/null and b/public/terrain/18/429260/176926.terrain differ diff --git a/public/terrain/18/429260/176927.terrain b/public/terrain/18/429260/176927.terrain new file mode 100644 index 000000000..731c2c92d Binary files /dev/null and b/public/terrain/18/429260/176927.terrain differ diff --git a/public/terrain/18/429260/176928.terrain b/public/terrain/18/429260/176928.terrain new file mode 100644 index 000000000..567d37cae Binary files /dev/null and b/public/terrain/18/429260/176928.terrain differ diff --git a/public/terrain/18/429260/176929.terrain b/public/terrain/18/429260/176929.terrain new file mode 100644 index 000000000..92ace9f0e Binary files /dev/null and b/public/terrain/18/429260/176929.terrain differ diff --git a/public/terrain/18/429260/176930.terrain b/public/terrain/18/429260/176930.terrain new file mode 100644 index 000000000..0cd6a0a9c Binary files /dev/null and b/public/terrain/18/429260/176930.terrain differ diff --git a/public/terrain/18/429260/176931.terrain b/public/terrain/18/429260/176931.terrain new file mode 100644 index 000000000..51228be61 Binary files /dev/null and b/public/terrain/18/429260/176931.terrain differ diff --git a/public/terrain/18/429260/176932.terrain b/public/terrain/18/429260/176932.terrain new file mode 100644 index 000000000..6900071db Binary files /dev/null and b/public/terrain/18/429260/176932.terrain differ diff --git a/public/terrain/18/429260/176933.terrain b/public/terrain/18/429260/176933.terrain new file mode 100644 index 000000000..9c224ddcd Binary files /dev/null and b/public/terrain/18/429260/176933.terrain differ diff --git a/public/terrain/18/429260/176934.terrain b/public/terrain/18/429260/176934.terrain new file mode 100644 index 000000000..3b403e3b1 Binary files /dev/null and b/public/terrain/18/429260/176934.terrain differ diff --git a/public/terrain/18/429260/176935.terrain b/public/terrain/18/429260/176935.terrain new file mode 100644 index 000000000..ec1b1550f Binary files /dev/null and b/public/terrain/18/429260/176935.terrain differ diff --git a/public/terrain/18/429260/176936.terrain b/public/terrain/18/429260/176936.terrain new file mode 100644 index 000000000..0fcfdd85d Binary files /dev/null and b/public/terrain/18/429260/176936.terrain differ diff --git a/public/terrain/18/429260/176937.terrain b/public/terrain/18/429260/176937.terrain new file mode 100644 index 000000000..a0d392a23 Binary files /dev/null and b/public/terrain/18/429260/176937.terrain differ diff --git a/public/terrain/18/429260/176938.terrain b/public/terrain/18/429260/176938.terrain new file mode 100644 index 000000000..18f25e24c Binary files /dev/null and b/public/terrain/18/429260/176938.terrain differ diff --git a/public/terrain/18/429260/176939.terrain b/public/terrain/18/429260/176939.terrain new file mode 100644 index 000000000..850be7209 Binary files /dev/null and b/public/terrain/18/429260/176939.terrain differ diff --git a/public/terrain/18/429260/176940.terrain b/public/terrain/18/429260/176940.terrain new file mode 100644 index 000000000..a4e8807a1 Binary files /dev/null and b/public/terrain/18/429260/176940.terrain differ diff --git a/public/terrain/18/429260/176941.terrain b/public/terrain/18/429260/176941.terrain new file mode 100644 index 000000000..30b8deeec Binary files /dev/null and b/public/terrain/18/429260/176941.terrain differ diff --git a/public/terrain/18/429260/176942.terrain b/public/terrain/18/429260/176942.terrain new file mode 100644 index 000000000..1c15eac2b Binary files /dev/null and b/public/terrain/18/429260/176942.terrain differ diff --git a/public/terrain/18/429260/176943.terrain b/public/terrain/18/429260/176943.terrain new file mode 100644 index 000000000..634cf01c1 Binary files /dev/null and b/public/terrain/18/429260/176943.terrain differ diff --git a/public/terrain/18/429260/176944.terrain b/public/terrain/18/429260/176944.terrain new file mode 100644 index 000000000..30ff269d6 Binary files /dev/null and b/public/terrain/18/429260/176944.terrain differ diff --git a/public/terrain/18/429260/176945.terrain b/public/terrain/18/429260/176945.terrain new file mode 100644 index 000000000..51943b657 Binary files /dev/null and b/public/terrain/18/429260/176945.terrain differ diff --git a/public/terrain/18/429260/176946.terrain b/public/terrain/18/429260/176946.terrain new file mode 100644 index 000000000..fe1b2a51c Binary files /dev/null and b/public/terrain/18/429260/176946.terrain differ diff --git a/public/terrain/18/429260/176947.terrain b/public/terrain/18/429260/176947.terrain new file mode 100644 index 000000000..88d01e0bf Binary files /dev/null and b/public/terrain/18/429260/176947.terrain differ diff --git a/public/terrain/18/429260/176948.terrain b/public/terrain/18/429260/176948.terrain new file mode 100644 index 000000000..693f67371 Binary files /dev/null and b/public/terrain/18/429260/176948.terrain differ diff --git a/public/terrain/18/429260/176949.terrain b/public/terrain/18/429260/176949.terrain new file mode 100644 index 000000000..e2aa6b08a Binary files /dev/null and b/public/terrain/18/429260/176949.terrain differ diff --git a/public/terrain/18/429260/176950.terrain b/public/terrain/18/429260/176950.terrain new file mode 100644 index 000000000..8d8da95f1 Binary files /dev/null and b/public/terrain/18/429260/176950.terrain differ diff --git a/public/terrain/18/429260/176951.terrain b/public/terrain/18/429260/176951.terrain new file mode 100644 index 000000000..8da42e897 Binary files /dev/null and b/public/terrain/18/429260/176951.terrain differ diff --git a/public/terrain/18/429260/176952.terrain b/public/terrain/18/429260/176952.terrain new file mode 100644 index 000000000..c6b4d66f3 Binary files /dev/null and b/public/terrain/18/429260/176952.terrain differ diff --git a/public/terrain/18/429260/176953.terrain b/public/terrain/18/429260/176953.terrain new file mode 100644 index 000000000..ccb1f5e0b Binary files /dev/null and b/public/terrain/18/429260/176953.terrain differ diff --git a/public/terrain/18/429260/176954.terrain b/public/terrain/18/429260/176954.terrain new file mode 100644 index 000000000..4e49f8f38 Binary files /dev/null and b/public/terrain/18/429260/176954.terrain differ diff --git a/public/terrain/18/429260/176955.terrain b/public/terrain/18/429260/176955.terrain new file mode 100644 index 000000000..3feb57f20 Binary files /dev/null and b/public/terrain/18/429260/176955.terrain differ diff --git a/public/terrain/18/429260/176956.terrain b/public/terrain/18/429260/176956.terrain new file mode 100644 index 000000000..ae47c41d2 Binary files /dev/null and b/public/terrain/18/429260/176956.terrain differ diff --git a/public/terrain/18/429260/176957.terrain b/public/terrain/18/429260/176957.terrain new file mode 100644 index 000000000..d710478f6 Binary files /dev/null and b/public/terrain/18/429260/176957.terrain differ diff --git a/public/terrain/18/429260/176958.terrain b/public/terrain/18/429260/176958.terrain new file mode 100644 index 000000000..af1d59f3c Binary files /dev/null and b/public/terrain/18/429260/176958.terrain differ diff --git a/public/terrain/18/429260/176959.terrain b/public/terrain/18/429260/176959.terrain new file mode 100644 index 000000000..4603b64db Binary files /dev/null and b/public/terrain/18/429260/176959.terrain differ diff --git a/public/terrain/18/429260/176960.terrain b/public/terrain/18/429260/176960.terrain new file mode 100644 index 000000000..2b56bdd7f Binary files /dev/null and b/public/terrain/18/429260/176960.terrain differ diff --git a/public/terrain/18/429260/176961.terrain b/public/terrain/18/429260/176961.terrain new file mode 100644 index 000000000..8e293d8ca Binary files /dev/null and b/public/terrain/18/429260/176961.terrain differ diff --git a/public/terrain/18/429260/176962.terrain b/public/terrain/18/429260/176962.terrain new file mode 100644 index 000000000..23b1d8fde Binary files /dev/null and b/public/terrain/18/429260/176962.terrain differ diff --git a/public/terrain/18/429260/176963.terrain b/public/terrain/18/429260/176963.terrain new file mode 100644 index 000000000..bdbb2f811 Binary files /dev/null and b/public/terrain/18/429260/176963.terrain differ diff --git a/public/terrain/18/429260/176964.terrain b/public/terrain/18/429260/176964.terrain new file mode 100644 index 000000000..7bed30f88 Binary files /dev/null and b/public/terrain/18/429260/176964.terrain differ diff --git a/public/terrain/18/429260/176965.terrain b/public/terrain/18/429260/176965.terrain new file mode 100644 index 000000000..ce896821c Binary files /dev/null and b/public/terrain/18/429260/176965.terrain differ diff --git a/public/terrain/18/429260/176966.terrain b/public/terrain/18/429260/176966.terrain new file mode 100644 index 000000000..2fa989db0 Binary files /dev/null and b/public/terrain/18/429260/176966.terrain differ diff --git a/public/terrain/18/429260/176967.terrain b/public/terrain/18/429260/176967.terrain new file mode 100644 index 000000000..6bc14d2bc Binary files /dev/null and b/public/terrain/18/429260/176967.terrain differ diff --git a/public/terrain/18/429260/176968.terrain b/public/terrain/18/429260/176968.terrain new file mode 100644 index 000000000..3b7d8465e Binary files /dev/null and b/public/terrain/18/429260/176968.terrain differ diff --git a/public/terrain/18/429260/176969.terrain b/public/terrain/18/429260/176969.terrain new file mode 100644 index 000000000..92fabc5bb Binary files /dev/null and b/public/terrain/18/429260/176969.terrain differ diff --git a/public/terrain/18/429260/176970.terrain b/public/terrain/18/429260/176970.terrain new file mode 100644 index 000000000..307c1e2b2 Binary files /dev/null and b/public/terrain/18/429260/176970.terrain differ diff --git a/public/terrain/18/429260/176971.terrain b/public/terrain/18/429260/176971.terrain new file mode 100644 index 000000000..ec2c0e015 Binary files /dev/null and b/public/terrain/18/429260/176971.terrain differ diff --git a/public/terrain/18/429260/176972.terrain b/public/terrain/18/429260/176972.terrain new file mode 100644 index 000000000..849589fa5 Binary files /dev/null and b/public/terrain/18/429260/176972.terrain differ diff --git a/public/terrain/18/429260/176973.terrain b/public/terrain/18/429260/176973.terrain new file mode 100644 index 000000000..22b4daa3d Binary files /dev/null and b/public/terrain/18/429260/176973.terrain differ diff --git a/public/terrain/18/429260/176974.terrain b/public/terrain/18/429260/176974.terrain new file mode 100644 index 000000000..52a5ef9ac Binary files /dev/null and b/public/terrain/18/429260/176974.terrain differ diff --git a/public/terrain/18/429260/176975.terrain b/public/terrain/18/429260/176975.terrain new file mode 100644 index 000000000..9339e862e Binary files /dev/null and b/public/terrain/18/429260/176975.terrain differ diff --git a/public/terrain/18/429260/176976.terrain b/public/terrain/18/429260/176976.terrain new file mode 100644 index 000000000..3e266af2d Binary files /dev/null and b/public/terrain/18/429260/176976.terrain differ diff --git a/public/terrain/18/429260/176977.terrain b/public/terrain/18/429260/176977.terrain new file mode 100644 index 000000000..0d9102f5a Binary files /dev/null and b/public/terrain/18/429260/176977.terrain differ diff --git a/public/terrain/18/429260/176978.terrain b/public/terrain/18/429260/176978.terrain new file mode 100644 index 000000000..f61098beb Binary files /dev/null and b/public/terrain/18/429260/176978.terrain differ diff --git a/public/terrain/18/429260/176979.terrain b/public/terrain/18/429260/176979.terrain new file mode 100644 index 000000000..0abda93f1 Binary files /dev/null and b/public/terrain/18/429260/176979.terrain differ diff --git a/public/terrain/18/429260/176980.terrain b/public/terrain/18/429260/176980.terrain new file mode 100644 index 000000000..a5d062c05 Binary files /dev/null and b/public/terrain/18/429260/176980.terrain differ diff --git a/public/terrain/18/429260/176981.terrain b/public/terrain/18/429260/176981.terrain new file mode 100644 index 000000000..86c6c96dd Binary files /dev/null and b/public/terrain/18/429260/176981.terrain differ diff --git a/public/terrain/18/429260/176982.terrain b/public/terrain/18/429260/176982.terrain new file mode 100644 index 000000000..8f328d320 Binary files /dev/null and b/public/terrain/18/429260/176982.terrain differ diff --git a/public/terrain/18/429260/176983.terrain b/public/terrain/18/429260/176983.terrain new file mode 100644 index 000000000..550b93e44 Binary files /dev/null and b/public/terrain/18/429260/176983.terrain differ diff --git a/public/terrain/18/429260/176984.terrain b/public/terrain/18/429260/176984.terrain new file mode 100644 index 000000000..eef6242b0 Binary files /dev/null and b/public/terrain/18/429260/176984.terrain differ diff --git a/public/terrain/18/429260/176985.terrain b/public/terrain/18/429260/176985.terrain new file mode 100644 index 000000000..d6eb60879 Binary files /dev/null and b/public/terrain/18/429260/176985.terrain differ diff --git a/public/terrain/18/429260/176986.terrain b/public/terrain/18/429260/176986.terrain new file mode 100644 index 000000000..75972b733 Binary files /dev/null and b/public/terrain/18/429260/176986.terrain differ diff --git a/public/terrain/18/429260/176987.terrain b/public/terrain/18/429260/176987.terrain new file mode 100644 index 000000000..7d1b32155 Binary files /dev/null and b/public/terrain/18/429260/176987.terrain differ diff --git a/public/terrain/18/429260/176988.terrain b/public/terrain/18/429260/176988.terrain new file mode 100644 index 000000000..ae5fac8b4 Binary files /dev/null and b/public/terrain/18/429260/176988.terrain differ diff --git a/public/terrain/18/429260/176989.terrain b/public/terrain/18/429260/176989.terrain new file mode 100644 index 000000000..0f8f273f5 Binary files /dev/null and b/public/terrain/18/429260/176989.terrain differ diff --git a/public/terrain/18/429260/176990.terrain b/public/terrain/18/429260/176990.terrain new file mode 100644 index 000000000..77169e341 Binary files /dev/null and b/public/terrain/18/429260/176990.terrain differ diff --git a/public/terrain/18/429260/176991.terrain b/public/terrain/18/429260/176991.terrain new file mode 100644 index 000000000..24c0cae39 Binary files /dev/null and b/public/terrain/18/429260/176991.terrain differ diff --git a/public/terrain/18/429260/176992.terrain b/public/terrain/18/429260/176992.terrain new file mode 100644 index 000000000..128d526a9 Binary files /dev/null and b/public/terrain/18/429260/176992.terrain differ diff --git a/public/terrain/18/429260/176993.terrain b/public/terrain/18/429260/176993.terrain new file mode 100644 index 000000000..79f2aab5d Binary files /dev/null and b/public/terrain/18/429260/176993.terrain differ diff --git a/public/terrain/18/429260/176994.terrain b/public/terrain/18/429260/176994.terrain new file mode 100644 index 000000000..de1d5bac9 Binary files /dev/null and b/public/terrain/18/429260/176994.terrain differ diff --git a/public/terrain/18/429260/176995.terrain b/public/terrain/18/429260/176995.terrain new file mode 100644 index 000000000..304fa3f08 Binary files /dev/null and b/public/terrain/18/429260/176995.terrain differ diff --git a/public/terrain/18/429260/176996.terrain b/public/terrain/18/429260/176996.terrain new file mode 100644 index 000000000..e521f11b4 Binary files /dev/null and b/public/terrain/18/429260/176996.terrain differ diff --git a/public/terrain/18/429260/176997.terrain b/public/terrain/18/429260/176997.terrain new file mode 100644 index 000000000..2dc8653b2 Binary files /dev/null and b/public/terrain/18/429260/176997.terrain differ diff --git a/public/terrain/18/429260/176998.terrain b/public/terrain/18/429260/176998.terrain new file mode 100644 index 000000000..9ef599319 Binary files /dev/null and b/public/terrain/18/429260/176998.terrain differ diff --git a/public/terrain/18/429260/176999.terrain b/public/terrain/18/429260/176999.terrain new file mode 100644 index 000000000..647c24638 Binary files /dev/null and b/public/terrain/18/429260/176999.terrain differ diff --git a/public/terrain/18/429260/177000.terrain b/public/terrain/18/429260/177000.terrain new file mode 100644 index 000000000..9da5f1906 Binary files /dev/null and b/public/terrain/18/429260/177000.terrain differ diff --git a/public/terrain/18/429260/177001.terrain b/public/terrain/18/429260/177001.terrain new file mode 100644 index 000000000..72bab2cc6 Binary files /dev/null and b/public/terrain/18/429260/177001.terrain differ diff --git a/public/terrain/18/429260/177002.terrain b/public/terrain/18/429260/177002.terrain new file mode 100644 index 000000000..850e8acdb Binary files /dev/null and b/public/terrain/18/429260/177002.terrain differ diff --git a/public/terrain/18/429260/177003.terrain b/public/terrain/18/429260/177003.terrain new file mode 100644 index 000000000..47830bda9 Binary files /dev/null and b/public/terrain/18/429260/177003.terrain differ diff --git a/public/terrain/18/429260/177004.terrain b/public/terrain/18/429260/177004.terrain new file mode 100644 index 000000000..0690a77f2 Binary files /dev/null and b/public/terrain/18/429260/177004.terrain differ diff --git a/public/terrain/18/429260/177005.terrain b/public/terrain/18/429260/177005.terrain new file mode 100644 index 000000000..7ad8c6a29 Binary files /dev/null and b/public/terrain/18/429260/177005.terrain differ diff --git a/public/terrain/18/429260/177006.terrain b/public/terrain/18/429260/177006.terrain new file mode 100644 index 000000000..e7f6f02b9 Binary files /dev/null and b/public/terrain/18/429260/177006.terrain differ diff --git a/public/terrain/18/429260/177007.terrain b/public/terrain/18/429260/177007.terrain new file mode 100644 index 000000000..6d8489ecc Binary files /dev/null and b/public/terrain/18/429260/177007.terrain differ diff --git a/public/terrain/18/429260/177008.terrain b/public/terrain/18/429260/177008.terrain new file mode 100644 index 000000000..cdd57ed2c Binary files /dev/null and b/public/terrain/18/429260/177008.terrain differ diff --git a/public/terrain/18/429260/177009.terrain b/public/terrain/18/429260/177009.terrain new file mode 100644 index 000000000..ebc9f5789 Binary files /dev/null and b/public/terrain/18/429260/177009.terrain differ diff --git a/public/terrain/18/429260/177010.terrain b/public/terrain/18/429260/177010.terrain new file mode 100644 index 000000000..6895b8967 Binary files /dev/null and b/public/terrain/18/429260/177010.terrain differ diff --git a/public/terrain/18/429260/177011.terrain b/public/terrain/18/429260/177011.terrain new file mode 100644 index 000000000..c95485336 Binary files /dev/null and b/public/terrain/18/429260/177011.terrain differ diff --git a/public/terrain/18/429260/177012.terrain b/public/terrain/18/429260/177012.terrain new file mode 100644 index 000000000..af0ac830d Binary files /dev/null and b/public/terrain/18/429260/177012.terrain differ diff --git a/public/terrain/18/429260/177013.terrain b/public/terrain/18/429260/177013.terrain new file mode 100644 index 000000000..f6727026c Binary files /dev/null and b/public/terrain/18/429260/177013.terrain differ diff --git a/public/terrain/18/429260/177014.terrain b/public/terrain/18/429260/177014.terrain new file mode 100644 index 000000000..c200b54c1 Binary files /dev/null and b/public/terrain/18/429260/177014.terrain differ diff --git a/public/terrain/18/429260/177015.terrain b/public/terrain/18/429260/177015.terrain new file mode 100644 index 000000000..b724e623d Binary files /dev/null and b/public/terrain/18/429260/177015.terrain differ diff --git a/public/terrain/18/429260/177016.terrain b/public/terrain/18/429260/177016.terrain new file mode 100644 index 000000000..1521bd466 Binary files /dev/null and b/public/terrain/18/429260/177016.terrain differ diff --git a/public/terrain/18/429260/177017.terrain b/public/terrain/18/429260/177017.terrain new file mode 100644 index 000000000..6d80d5229 Binary files /dev/null and b/public/terrain/18/429260/177017.terrain differ diff --git a/public/terrain/18/429260/177018.terrain b/public/terrain/18/429260/177018.terrain new file mode 100644 index 000000000..623253afb Binary files /dev/null and b/public/terrain/18/429260/177018.terrain differ diff --git a/public/terrain/18/429260/177019.terrain b/public/terrain/18/429260/177019.terrain new file mode 100644 index 000000000..d17ca04bf Binary files /dev/null and b/public/terrain/18/429260/177019.terrain differ diff --git a/public/terrain/18/429260/177020.terrain b/public/terrain/18/429260/177020.terrain new file mode 100644 index 000000000..5d35f98dd Binary files /dev/null and b/public/terrain/18/429260/177020.terrain differ diff --git a/public/terrain/18/429260/177021.terrain b/public/terrain/18/429260/177021.terrain new file mode 100644 index 000000000..5eb2d4e38 Binary files /dev/null and b/public/terrain/18/429260/177021.terrain differ diff --git a/public/terrain/18/429260/177022.terrain b/public/terrain/18/429260/177022.terrain new file mode 100644 index 000000000..d950f988d Binary files /dev/null and b/public/terrain/18/429260/177022.terrain differ diff --git a/public/terrain/18/429260/177023.terrain b/public/terrain/18/429260/177023.terrain new file mode 100644 index 000000000..f83c46fc4 Binary files /dev/null and b/public/terrain/18/429260/177023.terrain differ diff --git a/public/terrain/18/429260/177024.terrain b/public/terrain/18/429260/177024.terrain new file mode 100644 index 000000000..460e04ebf Binary files /dev/null and b/public/terrain/18/429260/177024.terrain differ diff --git a/public/terrain/18/429260/177025.terrain b/public/terrain/18/429260/177025.terrain new file mode 100644 index 000000000..341aaec80 Binary files /dev/null and b/public/terrain/18/429260/177025.terrain differ diff --git a/public/terrain/18/429260/177026.terrain b/public/terrain/18/429260/177026.terrain new file mode 100644 index 000000000..acdf9d19d Binary files /dev/null and b/public/terrain/18/429260/177026.terrain differ diff --git a/public/terrain/18/429260/177027.terrain b/public/terrain/18/429260/177027.terrain new file mode 100644 index 000000000..568802fa6 Binary files /dev/null and b/public/terrain/18/429260/177027.terrain differ diff --git a/public/terrain/18/429260/177028.terrain b/public/terrain/18/429260/177028.terrain new file mode 100644 index 000000000..a1201ae01 Binary files /dev/null and b/public/terrain/18/429260/177028.terrain differ diff --git a/public/terrain/18/429260/177029.terrain b/public/terrain/18/429260/177029.terrain new file mode 100644 index 000000000..f7cec0d83 Binary files /dev/null and b/public/terrain/18/429260/177029.terrain differ diff --git a/public/terrain/18/429261/176871.terrain b/public/terrain/18/429261/176871.terrain new file mode 100644 index 000000000..a2bcd0788 Binary files /dev/null and b/public/terrain/18/429261/176871.terrain differ diff --git a/public/terrain/18/429261/176872.terrain b/public/terrain/18/429261/176872.terrain new file mode 100644 index 000000000..2b9180513 Binary files /dev/null and b/public/terrain/18/429261/176872.terrain differ diff --git a/public/terrain/18/429261/176873.terrain b/public/terrain/18/429261/176873.terrain new file mode 100644 index 000000000..bec935a50 Binary files /dev/null and b/public/terrain/18/429261/176873.terrain differ diff --git a/public/terrain/18/429261/176874.terrain b/public/terrain/18/429261/176874.terrain new file mode 100644 index 000000000..6735b31c0 Binary files /dev/null and b/public/terrain/18/429261/176874.terrain differ diff --git a/public/terrain/18/429261/176875.terrain b/public/terrain/18/429261/176875.terrain new file mode 100644 index 000000000..f56aa3e2b Binary files /dev/null and b/public/terrain/18/429261/176875.terrain differ diff --git a/public/terrain/18/429261/176876.terrain b/public/terrain/18/429261/176876.terrain new file mode 100644 index 000000000..39138b756 Binary files /dev/null and b/public/terrain/18/429261/176876.terrain differ diff --git a/public/terrain/18/429261/176877.terrain b/public/terrain/18/429261/176877.terrain new file mode 100644 index 000000000..e5e39635e Binary files /dev/null and b/public/terrain/18/429261/176877.terrain differ diff --git a/public/terrain/18/429261/176878.terrain b/public/terrain/18/429261/176878.terrain new file mode 100644 index 000000000..1c89cccfa Binary files /dev/null and b/public/terrain/18/429261/176878.terrain differ diff --git a/public/terrain/18/429261/176879.terrain b/public/terrain/18/429261/176879.terrain new file mode 100644 index 000000000..a93591da2 Binary files /dev/null and b/public/terrain/18/429261/176879.terrain differ diff --git a/public/terrain/18/429261/176880.terrain b/public/terrain/18/429261/176880.terrain new file mode 100644 index 000000000..c1b479e24 Binary files /dev/null and b/public/terrain/18/429261/176880.terrain differ diff --git a/public/terrain/18/429261/176881.terrain b/public/terrain/18/429261/176881.terrain new file mode 100644 index 000000000..786d4a0ef Binary files /dev/null and b/public/terrain/18/429261/176881.terrain differ diff --git a/public/terrain/18/429261/176882.terrain b/public/terrain/18/429261/176882.terrain new file mode 100644 index 000000000..b7624e537 Binary files /dev/null and b/public/terrain/18/429261/176882.terrain differ diff --git a/public/terrain/18/429261/176883.terrain b/public/terrain/18/429261/176883.terrain new file mode 100644 index 000000000..cc905506f Binary files /dev/null and b/public/terrain/18/429261/176883.terrain differ diff --git a/public/terrain/18/429261/176884.terrain b/public/terrain/18/429261/176884.terrain new file mode 100644 index 000000000..8efcc22ff Binary files /dev/null and b/public/terrain/18/429261/176884.terrain differ diff --git a/public/terrain/18/429261/176885.terrain b/public/terrain/18/429261/176885.terrain new file mode 100644 index 000000000..7e9cf4826 Binary files /dev/null and b/public/terrain/18/429261/176885.terrain differ diff --git a/public/terrain/18/429261/176886.terrain b/public/terrain/18/429261/176886.terrain new file mode 100644 index 000000000..3fdc90aab Binary files /dev/null and b/public/terrain/18/429261/176886.terrain differ diff --git a/public/terrain/18/429261/176887.terrain b/public/terrain/18/429261/176887.terrain new file mode 100644 index 000000000..5dc995501 Binary files /dev/null and b/public/terrain/18/429261/176887.terrain differ diff --git a/public/terrain/18/429261/176888.terrain b/public/terrain/18/429261/176888.terrain new file mode 100644 index 000000000..886f9bca6 Binary files /dev/null and b/public/terrain/18/429261/176888.terrain differ diff --git a/public/terrain/18/429261/176889.terrain b/public/terrain/18/429261/176889.terrain new file mode 100644 index 000000000..6e4d95c45 Binary files /dev/null and b/public/terrain/18/429261/176889.terrain differ diff --git a/public/terrain/18/429261/176890.terrain b/public/terrain/18/429261/176890.terrain new file mode 100644 index 000000000..94b4a2f63 Binary files /dev/null and b/public/terrain/18/429261/176890.terrain differ diff --git a/public/terrain/18/429261/176891.terrain b/public/terrain/18/429261/176891.terrain new file mode 100644 index 000000000..1635b54ac Binary files /dev/null and b/public/terrain/18/429261/176891.terrain differ diff --git a/public/terrain/18/429261/176892.terrain b/public/terrain/18/429261/176892.terrain new file mode 100644 index 000000000..3ab927e7d Binary files /dev/null and b/public/terrain/18/429261/176892.terrain differ diff --git a/public/terrain/18/429261/176893.terrain b/public/terrain/18/429261/176893.terrain new file mode 100644 index 000000000..9fc69dfa6 Binary files /dev/null and b/public/terrain/18/429261/176893.terrain differ diff --git a/public/terrain/18/429261/176894.terrain b/public/terrain/18/429261/176894.terrain new file mode 100644 index 000000000..3647c632e Binary files /dev/null and b/public/terrain/18/429261/176894.terrain differ diff --git a/public/terrain/18/429261/176895.terrain b/public/terrain/18/429261/176895.terrain new file mode 100644 index 000000000..f57bbd05c Binary files /dev/null and b/public/terrain/18/429261/176895.terrain differ diff --git a/public/terrain/18/429261/176896.terrain b/public/terrain/18/429261/176896.terrain new file mode 100644 index 000000000..32716ebb3 Binary files /dev/null and b/public/terrain/18/429261/176896.terrain differ diff --git a/public/terrain/18/429261/176897.terrain b/public/terrain/18/429261/176897.terrain new file mode 100644 index 000000000..80e64da78 Binary files /dev/null and b/public/terrain/18/429261/176897.terrain differ diff --git a/public/terrain/18/429261/176898.terrain b/public/terrain/18/429261/176898.terrain new file mode 100644 index 000000000..3e0a70e8f Binary files /dev/null and b/public/terrain/18/429261/176898.terrain differ diff --git a/public/terrain/18/429261/176899.terrain b/public/terrain/18/429261/176899.terrain new file mode 100644 index 000000000..051da7b96 Binary files /dev/null and b/public/terrain/18/429261/176899.terrain differ diff --git a/public/terrain/18/429261/176900.terrain b/public/terrain/18/429261/176900.terrain new file mode 100644 index 000000000..96dd46c3d Binary files /dev/null and b/public/terrain/18/429261/176900.terrain differ diff --git a/public/terrain/18/429261/176901.terrain b/public/terrain/18/429261/176901.terrain new file mode 100644 index 000000000..772047391 Binary files /dev/null and b/public/terrain/18/429261/176901.terrain differ diff --git a/public/terrain/18/429261/176902.terrain b/public/terrain/18/429261/176902.terrain new file mode 100644 index 000000000..e96a5c7cf Binary files /dev/null and b/public/terrain/18/429261/176902.terrain differ diff --git a/public/terrain/18/429261/176903.terrain b/public/terrain/18/429261/176903.terrain new file mode 100644 index 000000000..c8c96799e Binary files /dev/null and b/public/terrain/18/429261/176903.terrain differ diff --git a/public/terrain/18/429261/176904.terrain b/public/terrain/18/429261/176904.terrain new file mode 100644 index 000000000..c2d7d7459 Binary files /dev/null and b/public/terrain/18/429261/176904.terrain differ diff --git a/public/terrain/18/429261/176905.terrain b/public/terrain/18/429261/176905.terrain new file mode 100644 index 000000000..8e7416071 Binary files /dev/null and b/public/terrain/18/429261/176905.terrain differ diff --git a/public/terrain/18/429261/176906.terrain b/public/terrain/18/429261/176906.terrain new file mode 100644 index 000000000..bc2fa00e4 Binary files /dev/null and b/public/terrain/18/429261/176906.terrain differ diff --git a/public/terrain/18/429261/176907.terrain b/public/terrain/18/429261/176907.terrain new file mode 100644 index 000000000..ba74a90a0 Binary files /dev/null and b/public/terrain/18/429261/176907.terrain differ diff --git a/public/terrain/18/429261/176908.terrain b/public/terrain/18/429261/176908.terrain new file mode 100644 index 000000000..a5f4356ed Binary files /dev/null and b/public/terrain/18/429261/176908.terrain differ diff --git a/public/terrain/18/429261/176909.terrain b/public/terrain/18/429261/176909.terrain new file mode 100644 index 000000000..c67ccdb0d Binary files /dev/null and b/public/terrain/18/429261/176909.terrain differ diff --git a/public/terrain/18/429261/176910.terrain b/public/terrain/18/429261/176910.terrain new file mode 100644 index 000000000..4a3f09078 Binary files /dev/null and b/public/terrain/18/429261/176910.terrain differ diff --git a/public/terrain/18/429261/176911.terrain b/public/terrain/18/429261/176911.terrain new file mode 100644 index 000000000..44faefa4b Binary files /dev/null and b/public/terrain/18/429261/176911.terrain differ diff --git a/public/terrain/18/429261/176912.terrain b/public/terrain/18/429261/176912.terrain new file mode 100644 index 000000000..e07ec586a Binary files /dev/null and b/public/terrain/18/429261/176912.terrain differ diff --git a/public/terrain/18/429261/176913.terrain b/public/terrain/18/429261/176913.terrain new file mode 100644 index 000000000..9a3a04576 Binary files /dev/null and b/public/terrain/18/429261/176913.terrain differ diff --git a/public/terrain/18/429261/176914.terrain b/public/terrain/18/429261/176914.terrain new file mode 100644 index 000000000..c7f1df054 Binary files /dev/null and b/public/terrain/18/429261/176914.terrain differ diff --git a/public/terrain/18/429261/176915.terrain b/public/terrain/18/429261/176915.terrain new file mode 100644 index 000000000..bfb853d10 Binary files /dev/null and b/public/terrain/18/429261/176915.terrain differ diff --git a/public/terrain/18/429261/176916.terrain b/public/terrain/18/429261/176916.terrain new file mode 100644 index 000000000..fdaa1c60e Binary files /dev/null and b/public/terrain/18/429261/176916.terrain differ diff --git a/public/terrain/18/429261/176917.terrain b/public/terrain/18/429261/176917.terrain new file mode 100644 index 000000000..c6f8ee52e Binary files /dev/null and b/public/terrain/18/429261/176917.terrain differ diff --git a/public/terrain/18/429261/176918.terrain b/public/terrain/18/429261/176918.terrain new file mode 100644 index 000000000..8d26fea3c Binary files /dev/null and b/public/terrain/18/429261/176918.terrain differ diff --git a/public/terrain/18/429261/176919.terrain b/public/terrain/18/429261/176919.terrain new file mode 100644 index 000000000..4cbc1f5c8 Binary files /dev/null and b/public/terrain/18/429261/176919.terrain differ diff --git a/public/terrain/18/429261/176920.terrain b/public/terrain/18/429261/176920.terrain new file mode 100644 index 000000000..9e11c0fb5 Binary files /dev/null and b/public/terrain/18/429261/176920.terrain differ diff --git a/public/terrain/18/429261/176921.terrain b/public/terrain/18/429261/176921.terrain new file mode 100644 index 000000000..13c2ebfec Binary files /dev/null and b/public/terrain/18/429261/176921.terrain differ diff --git a/public/terrain/18/429261/176922.terrain b/public/terrain/18/429261/176922.terrain new file mode 100644 index 000000000..8f390e236 Binary files /dev/null and b/public/terrain/18/429261/176922.terrain differ diff --git a/public/terrain/18/429261/176923.terrain b/public/terrain/18/429261/176923.terrain new file mode 100644 index 000000000..72994271f Binary files /dev/null and b/public/terrain/18/429261/176923.terrain differ diff --git a/public/terrain/18/429261/176924.terrain b/public/terrain/18/429261/176924.terrain new file mode 100644 index 000000000..3214e59f6 Binary files /dev/null and b/public/terrain/18/429261/176924.terrain differ diff --git a/public/terrain/18/429261/176925.terrain b/public/terrain/18/429261/176925.terrain new file mode 100644 index 000000000..53a244607 Binary files /dev/null and b/public/terrain/18/429261/176925.terrain differ diff --git a/public/terrain/18/429261/176926.terrain b/public/terrain/18/429261/176926.terrain new file mode 100644 index 000000000..b8807b2cc Binary files /dev/null and b/public/terrain/18/429261/176926.terrain differ diff --git a/public/terrain/18/429261/176927.terrain b/public/terrain/18/429261/176927.terrain new file mode 100644 index 000000000..47ab43b02 Binary files /dev/null and b/public/terrain/18/429261/176927.terrain differ diff --git a/public/terrain/18/429261/176928.terrain b/public/terrain/18/429261/176928.terrain new file mode 100644 index 000000000..f0a1c26a1 Binary files /dev/null and b/public/terrain/18/429261/176928.terrain differ diff --git a/public/terrain/18/429261/176929.terrain b/public/terrain/18/429261/176929.terrain new file mode 100644 index 000000000..f08ba42ed Binary files /dev/null and b/public/terrain/18/429261/176929.terrain differ diff --git a/public/terrain/18/429261/176930.terrain b/public/terrain/18/429261/176930.terrain new file mode 100644 index 000000000..a33493150 Binary files /dev/null and b/public/terrain/18/429261/176930.terrain differ diff --git a/public/terrain/18/429261/176931.terrain b/public/terrain/18/429261/176931.terrain new file mode 100644 index 000000000..31a1bc28f Binary files /dev/null and b/public/terrain/18/429261/176931.terrain differ diff --git a/public/terrain/18/429261/176932.terrain b/public/terrain/18/429261/176932.terrain new file mode 100644 index 000000000..d7d09f9cf Binary files /dev/null and b/public/terrain/18/429261/176932.terrain differ diff --git a/public/terrain/18/429261/176933.terrain b/public/terrain/18/429261/176933.terrain new file mode 100644 index 000000000..df7b29403 Binary files /dev/null and b/public/terrain/18/429261/176933.terrain differ diff --git a/public/terrain/18/429261/176934.terrain b/public/terrain/18/429261/176934.terrain new file mode 100644 index 000000000..56fd25933 Binary files /dev/null and b/public/terrain/18/429261/176934.terrain differ diff --git a/public/terrain/18/429261/176935.terrain b/public/terrain/18/429261/176935.terrain new file mode 100644 index 000000000..bc7c9f7c9 Binary files /dev/null and b/public/terrain/18/429261/176935.terrain differ diff --git a/public/terrain/18/429261/176936.terrain b/public/terrain/18/429261/176936.terrain new file mode 100644 index 000000000..c80a15e9c Binary files /dev/null and b/public/terrain/18/429261/176936.terrain differ diff --git a/public/terrain/18/429261/176937.terrain b/public/terrain/18/429261/176937.terrain new file mode 100644 index 000000000..f792b96cb Binary files /dev/null and b/public/terrain/18/429261/176937.terrain differ diff --git a/public/terrain/18/429261/176938.terrain b/public/terrain/18/429261/176938.terrain new file mode 100644 index 000000000..26ad7a1d4 Binary files /dev/null and b/public/terrain/18/429261/176938.terrain differ diff --git a/public/terrain/18/429261/176939.terrain b/public/terrain/18/429261/176939.terrain new file mode 100644 index 000000000..b6d1e04bf Binary files /dev/null and b/public/terrain/18/429261/176939.terrain differ diff --git a/public/terrain/18/429261/176940.terrain b/public/terrain/18/429261/176940.terrain new file mode 100644 index 000000000..4abe6fc1d Binary files /dev/null and b/public/terrain/18/429261/176940.terrain differ diff --git a/public/terrain/18/429261/176941.terrain b/public/terrain/18/429261/176941.terrain new file mode 100644 index 000000000..b1f1b9653 Binary files /dev/null and b/public/terrain/18/429261/176941.terrain differ diff --git a/public/terrain/18/429261/176942.terrain b/public/terrain/18/429261/176942.terrain new file mode 100644 index 000000000..f6e1b905d Binary files /dev/null and b/public/terrain/18/429261/176942.terrain differ diff --git a/public/terrain/18/429261/176943.terrain b/public/terrain/18/429261/176943.terrain new file mode 100644 index 000000000..faf43f354 Binary files /dev/null and b/public/terrain/18/429261/176943.terrain differ diff --git a/public/terrain/18/429261/176944.terrain b/public/terrain/18/429261/176944.terrain new file mode 100644 index 000000000..645c2883e Binary files /dev/null and b/public/terrain/18/429261/176944.terrain differ diff --git a/public/terrain/18/429261/176945.terrain b/public/terrain/18/429261/176945.terrain new file mode 100644 index 000000000..64fa73103 Binary files /dev/null and b/public/terrain/18/429261/176945.terrain differ diff --git a/public/terrain/18/429261/176946.terrain b/public/terrain/18/429261/176946.terrain new file mode 100644 index 000000000..513fa8ec5 Binary files /dev/null and b/public/terrain/18/429261/176946.terrain differ diff --git a/public/terrain/18/429261/176947.terrain b/public/terrain/18/429261/176947.terrain new file mode 100644 index 000000000..2852ddb72 Binary files /dev/null and b/public/terrain/18/429261/176947.terrain differ diff --git a/public/terrain/18/429261/176948.terrain b/public/terrain/18/429261/176948.terrain new file mode 100644 index 000000000..7c7948d6d Binary files /dev/null and b/public/terrain/18/429261/176948.terrain differ diff --git a/public/terrain/18/429261/176949.terrain b/public/terrain/18/429261/176949.terrain new file mode 100644 index 000000000..c2e81c310 Binary files /dev/null and b/public/terrain/18/429261/176949.terrain differ diff --git a/public/terrain/18/429261/176950.terrain b/public/terrain/18/429261/176950.terrain new file mode 100644 index 000000000..ec65d09d7 Binary files /dev/null and b/public/terrain/18/429261/176950.terrain differ diff --git a/public/terrain/18/429261/176951.terrain b/public/terrain/18/429261/176951.terrain new file mode 100644 index 000000000..16bbb8c91 Binary files /dev/null and b/public/terrain/18/429261/176951.terrain differ diff --git a/public/terrain/18/429261/176952.terrain b/public/terrain/18/429261/176952.terrain new file mode 100644 index 000000000..ed02f02ae Binary files /dev/null and b/public/terrain/18/429261/176952.terrain differ diff --git a/public/terrain/18/429261/176953.terrain b/public/terrain/18/429261/176953.terrain new file mode 100644 index 000000000..a28355984 Binary files /dev/null and b/public/terrain/18/429261/176953.terrain differ diff --git a/public/terrain/18/429261/176954.terrain b/public/terrain/18/429261/176954.terrain new file mode 100644 index 000000000..3d5766f66 Binary files /dev/null and b/public/terrain/18/429261/176954.terrain differ diff --git a/public/terrain/18/429261/176955.terrain b/public/terrain/18/429261/176955.terrain new file mode 100644 index 000000000..64c6361ab Binary files /dev/null and b/public/terrain/18/429261/176955.terrain differ diff --git a/public/terrain/18/429261/176956.terrain b/public/terrain/18/429261/176956.terrain new file mode 100644 index 000000000..501964aa6 Binary files /dev/null and b/public/terrain/18/429261/176956.terrain differ diff --git a/public/terrain/18/429261/176957.terrain b/public/terrain/18/429261/176957.terrain new file mode 100644 index 000000000..be5332a42 Binary files /dev/null and b/public/terrain/18/429261/176957.terrain differ diff --git a/public/terrain/18/429261/176958.terrain b/public/terrain/18/429261/176958.terrain new file mode 100644 index 000000000..779b1c1b0 Binary files /dev/null and b/public/terrain/18/429261/176958.terrain differ diff --git a/public/terrain/18/429261/176959.terrain b/public/terrain/18/429261/176959.terrain new file mode 100644 index 000000000..b18033561 Binary files /dev/null and b/public/terrain/18/429261/176959.terrain differ diff --git a/public/terrain/18/429261/176960.terrain b/public/terrain/18/429261/176960.terrain new file mode 100644 index 000000000..db41f6c24 Binary files /dev/null and b/public/terrain/18/429261/176960.terrain differ diff --git a/public/terrain/18/429261/176961.terrain b/public/terrain/18/429261/176961.terrain new file mode 100644 index 000000000..0cd36602a Binary files /dev/null and b/public/terrain/18/429261/176961.terrain differ diff --git a/public/terrain/18/429261/176962.terrain b/public/terrain/18/429261/176962.terrain new file mode 100644 index 000000000..88a559290 Binary files /dev/null and b/public/terrain/18/429261/176962.terrain differ diff --git a/public/terrain/18/429261/176963.terrain b/public/terrain/18/429261/176963.terrain new file mode 100644 index 000000000..63b974583 Binary files /dev/null and b/public/terrain/18/429261/176963.terrain differ diff --git a/public/terrain/18/429261/176964.terrain b/public/terrain/18/429261/176964.terrain new file mode 100644 index 000000000..a802c8bab Binary files /dev/null and b/public/terrain/18/429261/176964.terrain differ diff --git a/public/terrain/18/429261/176965.terrain b/public/terrain/18/429261/176965.terrain new file mode 100644 index 000000000..efaa90906 Binary files /dev/null and b/public/terrain/18/429261/176965.terrain differ diff --git a/public/terrain/18/429261/176966.terrain b/public/terrain/18/429261/176966.terrain new file mode 100644 index 000000000..deebf1dbd Binary files /dev/null and b/public/terrain/18/429261/176966.terrain differ diff --git a/public/terrain/18/429261/176967.terrain b/public/terrain/18/429261/176967.terrain new file mode 100644 index 000000000..891cf53ba Binary files /dev/null and b/public/terrain/18/429261/176967.terrain differ diff --git a/public/terrain/18/429261/176968.terrain b/public/terrain/18/429261/176968.terrain new file mode 100644 index 000000000..ee3d7ce1a Binary files /dev/null and b/public/terrain/18/429261/176968.terrain differ diff --git a/public/terrain/18/429261/176969.terrain b/public/terrain/18/429261/176969.terrain new file mode 100644 index 000000000..a5c842fc2 Binary files /dev/null and b/public/terrain/18/429261/176969.terrain differ diff --git a/public/terrain/18/429261/176970.terrain b/public/terrain/18/429261/176970.terrain new file mode 100644 index 000000000..1978a1d0c Binary files /dev/null and b/public/terrain/18/429261/176970.terrain differ diff --git a/public/terrain/18/429261/176971.terrain b/public/terrain/18/429261/176971.terrain new file mode 100644 index 000000000..cc55a2329 Binary files /dev/null and b/public/terrain/18/429261/176971.terrain differ diff --git a/public/terrain/18/429261/176972.terrain b/public/terrain/18/429261/176972.terrain new file mode 100644 index 000000000..325a17be3 Binary files /dev/null and b/public/terrain/18/429261/176972.terrain differ diff --git a/public/terrain/18/429261/176973.terrain b/public/terrain/18/429261/176973.terrain new file mode 100644 index 000000000..44e975bec Binary files /dev/null and b/public/terrain/18/429261/176973.terrain differ diff --git a/public/terrain/18/429261/176974.terrain b/public/terrain/18/429261/176974.terrain new file mode 100644 index 000000000..5fee37ccb Binary files /dev/null and b/public/terrain/18/429261/176974.terrain differ diff --git a/public/terrain/18/429261/176975.terrain b/public/terrain/18/429261/176975.terrain new file mode 100644 index 000000000..82fbb25c9 Binary files /dev/null and b/public/terrain/18/429261/176975.terrain differ diff --git a/public/terrain/18/429261/176976.terrain b/public/terrain/18/429261/176976.terrain new file mode 100644 index 000000000..ba4c9d70d Binary files /dev/null and b/public/terrain/18/429261/176976.terrain differ diff --git a/public/terrain/18/429261/176977.terrain b/public/terrain/18/429261/176977.terrain new file mode 100644 index 000000000..3da6ddbd7 Binary files /dev/null and b/public/terrain/18/429261/176977.terrain differ diff --git a/public/terrain/18/429261/176978.terrain b/public/terrain/18/429261/176978.terrain new file mode 100644 index 000000000..807a0de26 Binary files /dev/null and b/public/terrain/18/429261/176978.terrain differ diff --git a/public/terrain/18/429261/176979.terrain b/public/terrain/18/429261/176979.terrain new file mode 100644 index 000000000..e82925a55 Binary files /dev/null and b/public/terrain/18/429261/176979.terrain differ diff --git a/public/terrain/18/429261/176980.terrain b/public/terrain/18/429261/176980.terrain new file mode 100644 index 000000000..4512295db Binary files /dev/null and b/public/terrain/18/429261/176980.terrain differ diff --git a/public/terrain/18/429261/176981.terrain b/public/terrain/18/429261/176981.terrain new file mode 100644 index 000000000..bc0870859 Binary files /dev/null and b/public/terrain/18/429261/176981.terrain differ diff --git a/public/terrain/18/429261/176982.terrain b/public/terrain/18/429261/176982.terrain new file mode 100644 index 000000000..a24ac645f Binary files /dev/null and b/public/terrain/18/429261/176982.terrain differ diff --git a/public/terrain/18/429261/176983.terrain b/public/terrain/18/429261/176983.terrain new file mode 100644 index 000000000..edaeeb749 Binary files /dev/null and b/public/terrain/18/429261/176983.terrain differ diff --git a/public/terrain/18/429261/176984.terrain b/public/terrain/18/429261/176984.terrain new file mode 100644 index 000000000..fa2f93d6e Binary files /dev/null and b/public/terrain/18/429261/176984.terrain differ diff --git a/public/terrain/18/429261/176985.terrain b/public/terrain/18/429261/176985.terrain new file mode 100644 index 000000000..704627fdf Binary files /dev/null and b/public/terrain/18/429261/176985.terrain differ diff --git a/public/terrain/18/429261/176986.terrain b/public/terrain/18/429261/176986.terrain new file mode 100644 index 000000000..6ae87e9dd Binary files /dev/null and b/public/terrain/18/429261/176986.terrain differ diff --git a/public/terrain/18/429261/176987.terrain b/public/terrain/18/429261/176987.terrain new file mode 100644 index 000000000..c8fb747e6 Binary files /dev/null and b/public/terrain/18/429261/176987.terrain differ diff --git a/public/terrain/18/429261/176988.terrain b/public/terrain/18/429261/176988.terrain new file mode 100644 index 000000000..0a9bf71ec Binary files /dev/null and b/public/terrain/18/429261/176988.terrain differ diff --git a/public/terrain/18/429261/176989.terrain b/public/terrain/18/429261/176989.terrain new file mode 100644 index 000000000..74b4df4ab Binary files /dev/null and b/public/terrain/18/429261/176989.terrain differ diff --git a/public/terrain/18/429261/176990.terrain b/public/terrain/18/429261/176990.terrain new file mode 100644 index 000000000..70a75fa94 Binary files /dev/null and b/public/terrain/18/429261/176990.terrain differ diff --git a/public/terrain/18/429261/176991.terrain b/public/terrain/18/429261/176991.terrain new file mode 100644 index 000000000..0492bec99 Binary files /dev/null and b/public/terrain/18/429261/176991.terrain differ diff --git a/public/terrain/18/429261/176992.terrain b/public/terrain/18/429261/176992.terrain new file mode 100644 index 000000000..2cb83e5b3 Binary files /dev/null and b/public/terrain/18/429261/176992.terrain differ diff --git a/public/terrain/18/429261/176993.terrain b/public/terrain/18/429261/176993.terrain new file mode 100644 index 000000000..6ede00ea6 Binary files /dev/null and b/public/terrain/18/429261/176993.terrain differ diff --git a/public/terrain/18/429261/176994.terrain b/public/terrain/18/429261/176994.terrain new file mode 100644 index 000000000..02a2616d4 Binary files /dev/null and b/public/terrain/18/429261/176994.terrain differ diff --git a/public/terrain/18/429261/176995.terrain b/public/terrain/18/429261/176995.terrain new file mode 100644 index 000000000..20067d722 Binary files /dev/null and b/public/terrain/18/429261/176995.terrain differ diff --git a/public/terrain/18/429261/176996.terrain b/public/terrain/18/429261/176996.terrain new file mode 100644 index 000000000..73e3882df Binary files /dev/null and b/public/terrain/18/429261/176996.terrain differ diff --git a/public/terrain/18/429261/176997.terrain b/public/terrain/18/429261/176997.terrain new file mode 100644 index 000000000..d63d90170 Binary files /dev/null and b/public/terrain/18/429261/176997.terrain differ diff --git a/public/terrain/18/429261/176998.terrain b/public/terrain/18/429261/176998.terrain new file mode 100644 index 000000000..7788ce1e8 Binary files /dev/null and b/public/terrain/18/429261/176998.terrain differ diff --git a/public/terrain/18/429261/176999.terrain b/public/terrain/18/429261/176999.terrain new file mode 100644 index 000000000..b35664eb2 Binary files /dev/null and b/public/terrain/18/429261/176999.terrain differ diff --git a/public/terrain/18/429261/177000.terrain b/public/terrain/18/429261/177000.terrain new file mode 100644 index 000000000..75da5bec2 Binary files /dev/null and b/public/terrain/18/429261/177000.terrain differ diff --git a/public/terrain/18/429261/177001.terrain b/public/terrain/18/429261/177001.terrain new file mode 100644 index 000000000..717d57abf Binary files /dev/null and b/public/terrain/18/429261/177001.terrain differ diff --git a/public/terrain/18/429261/177002.terrain b/public/terrain/18/429261/177002.terrain new file mode 100644 index 000000000..5ee79b025 Binary files /dev/null and b/public/terrain/18/429261/177002.terrain differ diff --git a/public/terrain/18/429261/177003.terrain b/public/terrain/18/429261/177003.terrain new file mode 100644 index 000000000..38910a24a Binary files /dev/null and b/public/terrain/18/429261/177003.terrain differ diff --git a/public/terrain/18/429261/177004.terrain b/public/terrain/18/429261/177004.terrain new file mode 100644 index 000000000..5ad1c6cc9 Binary files /dev/null and b/public/terrain/18/429261/177004.terrain differ diff --git a/public/terrain/18/429261/177005.terrain b/public/terrain/18/429261/177005.terrain new file mode 100644 index 000000000..12b721afb Binary files /dev/null and b/public/terrain/18/429261/177005.terrain differ diff --git a/public/terrain/18/429261/177006.terrain b/public/terrain/18/429261/177006.terrain new file mode 100644 index 000000000..36229230c Binary files /dev/null and b/public/terrain/18/429261/177006.terrain differ diff --git a/public/terrain/18/429261/177007.terrain b/public/terrain/18/429261/177007.terrain new file mode 100644 index 000000000..23d0e162b Binary files /dev/null and b/public/terrain/18/429261/177007.terrain differ diff --git a/public/terrain/18/429261/177008.terrain b/public/terrain/18/429261/177008.terrain new file mode 100644 index 000000000..9762949f8 Binary files /dev/null and b/public/terrain/18/429261/177008.terrain differ diff --git a/public/terrain/18/429261/177009.terrain b/public/terrain/18/429261/177009.terrain new file mode 100644 index 000000000..1c4b5bc5e Binary files /dev/null and b/public/terrain/18/429261/177009.terrain differ diff --git a/public/terrain/18/429261/177010.terrain b/public/terrain/18/429261/177010.terrain new file mode 100644 index 000000000..10aec7434 Binary files /dev/null and b/public/terrain/18/429261/177010.terrain differ diff --git a/public/terrain/18/429261/177011.terrain b/public/terrain/18/429261/177011.terrain new file mode 100644 index 000000000..baef7a015 Binary files /dev/null and b/public/terrain/18/429261/177011.terrain differ diff --git a/public/terrain/18/429261/177012.terrain b/public/terrain/18/429261/177012.terrain new file mode 100644 index 000000000..cf490335d Binary files /dev/null and b/public/terrain/18/429261/177012.terrain differ diff --git a/public/terrain/18/429261/177013.terrain b/public/terrain/18/429261/177013.terrain new file mode 100644 index 000000000..15b5d2bea Binary files /dev/null and b/public/terrain/18/429261/177013.terrain differ diff --git a/public/terrain/18/429261/177014.terrain b/public/terrain/18/429261/177014.terrain new file mode 100644 index 000000000..7eb5dde05 Binary files /dev/null and b/public/terrain/18/429261/177014.terrain differ diff --git a/public/terrain/18/429261/177015.terrain b/public/terrain/18/429261/177015.terrain new file mode 100644 index 000000000..0888d8949 Binary files /dev/null and b/public/terrain/18/429261/177015.terrain differ diff --git a/public/terrain/18/429261/177016.terrain b/public/terrain/18/429261/177016.terrain new file mode 100644 index 000000000..0e2d8f237 Binary files /dev/null and b/public/terrain/18/429261/177016.terrain differ diff --git a/public/terrain/18/429261/177017.terrain b/public/terrain/18/429261/177017.terrain new file mode 100644 index 000000000..adf4a9831 Binary files /dev/null and b/public/terrain/18/429261/177017.terrain differ diff --git a/public/terrain/18/429261/177018.terrain b/public/terrain/18/429261/177018.terrain new file mode 100644 index 000000000..14fda08a5 Binary files /dev/null and b/public/terrain/18/429261/177018.terrain differ diff --git a/public/terrain/18/429261/177019.terrain b/public/terrain/18/429261/177019.terrain new file mode 100644 index 000000000..db9c8d914 Binary files /dev/null and b/public/terrain/18/429261/177019.terrain differ diff --git a/public/terrain/18/429261/177020.terrain b/public/terrain/18/429261/177020.terrain new file mode 100644 index 000000000..3a38a2477 Binary files /dev/null and b/public/terrain/18/429261/177020.terrain differ diff --git a/public/terrain/18/429261/177021.terrain b/public/terrain/18/429261/177021.terrain new file mode 100644 index 000000000..d109ea211 Binary files /dev/null and b/public/terrain/18/429261/177021.terrain differ diff --git a/public/terrain/18/429261/177022.terrain b/public/terrain/18/429261/177022.terrain new file mode 100644 index 000000000..836b3292a Binary files /dev/null and b/public/terrain/18/429261/177022.terrain differ diff --git a/public/terrain/18/429261/177023.terrain b/public/terrain/18/429261/177023.terrain new file mode 100644 index 000000000..8fb9f1999 Binary files /dev/null and b/public/terrain/18/429261/177023.terrain differ diff --git a/public/terrain/18/429261/177024.terrain b/public/terrain/18/429261/177024.terrain new file mode 100644 index 000000000..f97a20162 Binary files /dev/null and b/public/terrain/18/429261/177024.terrain differ diff --git a/public/terrain/18/429261/177025.terrain b/public/terrain/18/429261/177025.terrain new file mode 100644 index 000000000..d0b2365d8 Binary files /dev/null and b/public/terrain/18/429261/177025.terrain differ diff --git a/public/terrain/18/429261/177026.terrain b/public/terrain/18/429261/177026.terrain new file mode 100644 index 000000000..757e12421 Binary files /dev/null and b/public/terrain/18/429261/177026.terrain differ diff --git a/public/terrain/18/429261/177027.terrain b/public/terrain/18/429261/177027.terrain new file mode 100644 index 000000000..9d8d1bc53 Binary files /dev/null and b/public/terrain/18/429261/177027.terrain differ diff --git a/public/terrain/18/429261/177028.terrain b/public/terrain/18/429261/177028.terrain new file mode 100644 index 000000000..c1145c9d1 Binary files /dev/null and b/public/terrain/18/429261/177028.terrain differ diff --git a/public/terrain/18/429261/177029.terrain b/public/terrain/18/429261/177029.terrain new file mode 100644 index 000000000..32ef369d9 Binary files /dev/null and b/public/terrain/18/429261/177029.terrain differ diff --git a/public/terrain/18/429262/176871.terrain b/public/terrain/18/429262/176871.terrain new file mode 100644 index 000000000..a345266e8 Binary files /dev/null and b/public/terrain/18/429262/176871.terrain differ diff --git a/public/terrain/18/429262/176872.terrain b/public/terrain/18/429262/176872.terrain new file mode 100644 index 000000000..ee6800ee7 Binary files /dev/null and b/public/terrain/18/429262/176872.terrain differ diff --git a/public/terrain/18/429262/176873.terrain b/public/terrain/18/429262/176873.terrain new file mode 100644 index 000000000..865ebcb01 Binary files /dev/null and b/public/terrain/18/429262/176873.terrain differ diff --git a/public/terrain/18/429262/176874.terrain b/public/terrain/18/429262/176874.terrain new file mode 100644 index 000000000..f92b59d4c Binary files /dev/null and b/public/terrain/18/429262/176874.terrain differ diff --git a/public/terrain/18/429262/176875.terrain b/public/terrain/18/429262/176875.terrain new file mode 100644 index 000000000..67c4548c4 Binary files /dev/null and b/public/terrain/18/429262/176875.terrain differ diff --git a/public/terrain/18/429262/176876.terrain b/public/terrain/18/429262/176876.terrain new file mode 100644 index 000000000..bfcf4fc24 Binary files /dev/null and b/public/terrain/18/429262/176876.terrain differ diff --git a/public/terrain/18/429262/176877.terrain b/public/terrain/18/429262/176877.terrain new file mode 100644 index 000000000..742688f76 Binary files /dev/null and b/public/terrain/18/429262/176877.terrain differ diff --git a/public/terrain/18/429262/176878.terrain b/public/terrain/18/429262/176878.terrain new file mode 100644 index 000000000..034ce7926 Binary files /dev/null and b/public/terrain/18/429262/176878.terrain differ diff --git a/public/terrain/18/429262/176879.terrain b/public/terrain/18/429262/176879.terrain new file mode 100644 index 000000000..23d489c21 Binary files /dev/null and b/public/terrain/18/429262/176879.terrain differ diff --git a/public/terrain/18/429262/176880.terrain b/public/terrain/18/429262/176880.terrain new file mode 100644 index 000000000..fc5c61439 Binary files /dev/null and b/public/terrain/18/429262/176880.terrain differ diff --git a/public/terrain/18/429262/176881.terrain b/public/terrain/18/429262/176881.terrain new file mode 100644 index 000000000..3dcdbc6d3 Binary files /dev/null and b/public/terrain/18/429262/176881.terrain differ diff --git a/public/terrain/18/429262/176882.terrain b/public/terrain/18/429262/176882.terrain new file mode 100644 index 000000000..4b91b9995 Binary files /dev/null and b/public/terrain/18/429262/176882.terrain differ diff --git a/public/terrain/18/429262/176883.terrain b/public/terrain/18/429262/176883.terrain new file mode 100644 index 000000000..554652d68 Binary files /dev/null and b/public/terrain/18/429262/176883.terrain differ diff --git a/public/terrain/18/429262/176884.terrain b/public/terrain/18/429262/176884.terrain new file mode 100644 index 000000000..a538235c7 Binary files /dev/null and b/public/terrain/18/429262/176884.terrain differ diff --git a/public/terrain/18/429262/176885.terrain b/public/terrain/18/429262/176885.terrain new file mode 100644 index 000000000..ebb228887 Binary files /dev/null and b/public/terrain/18/429262/176885.terrain differ diff --git a/public/terrain/18/429262/176886.terrain b/public/terrain/18/429262/176886.terrain new file mode 100644 index 000000000..704b0e816 Binary files /dev/null and b/public/terrain/18/429262/176886.terrain differ diff --git a/public/terrain/18/429262/176887.terrain b/public/terrain/18/429262/176887.terrain new file mode 100644 index 000000000..921418d6a Binary files /dev/null and b/public/terrain/18/429262/176887.terrain differ diff --git a/public/terrain/18/429262/176888.terrain b/public/terrain/18/429262/176888.terrain new file mode 100644 index 000000000..ba3b0faf0 Binary files /dev/null and b/public/terrain/18/429262/176888.terrain differ diff --git a/public/terrain/18/429262/176889.terrain b/public/terrain/18/429262/176889.terrain new file mode 100644 index 000000000..393813f2a Binary files /dev/null and b/public/terrain/18/429262/176889.terrain differ diff --git a/public/terrain/18/429262/176890.terrain b/public/terrain/18/429262/176890.terrain new file mode 100644 index 000000000..dca03e5f3 Binary files /dev/null and b/public/terrain/18/429262/176890.terrain differ diff --git a/public/terrain/18/429262/176891.terrain b/public/terrain/18/429262/176891.terrain new file mode 100644 index 000000000..19b810a41 Binary files /dev/null and b/public/terrain/18/429262/176891.terrain differ diff --git a/public/terrain/18/429262/176892.terrain b/public/terrain/18/429262/176892.terrain new file mode 100644 index 000000000..622b466c8 Binary files /dev/null and b/public/terrain/18/429262/176892.terrain differ diff --git a/public/terrain/18/429262/176893.terrain b/public/terrain/18/429262/176893.terrain new file mode 100644 index 000000000..232f312d4 Binary files /dev/null and b/public/terrain/18/429262/176893.terrain differ diff --git a/public/terrain/18/429262/176894.terrain b/public/terrain/18/429262/176894.terrain new file mode 100644 index 000000000..d4ca8bf1d Binary files /dev/null and b/public/terrain/18/429262/176894.terrain differ diff --git a/public/terrain/18/429262/176895.terrain b/public/terrain/18/429262/176895.terrain new file mode 100644 index 000000000..ae8c4acb0 Binary files /dev/null and b/public/terrain/18/429262/176895.terrain differ diff --git a/public/terrain/18/429262/176896.terrain b/public/terrain/18/429262/176896.terrain new file mode 100644 index 000000000..f0070f65e Binary files /dev/null and b/public/terrain/18/429262/176896.terrain differ diff --git a/public/terrain/18/429262/176897.terrain b/public/terrain/18/429262/176897.terrain new file mode 100644 index 000000000..b9424900c Binary files /dev/null and b/public/terrain/18/429262/176897.terrain differ diff --git a/public/terrain/18/429262/176898.terrain b/public/terrain/18/429262/176898.terrain new file mode 100644 index 000000000..f0e544dee Binary files /dev/null and b/public/terrain/18/429262/176898.terrain differ diff --git a/public/terrain/18/429262/176899.terrain b/public/terrain/18/429262/176899.terrain new file mode 100644 index 000000000..dbefbb4a8 Binary files /dev/null and b/public/terrain/18/429262/176899.terrain differ diff --git a/public/terrain/18/429262/176900.terrain b/public/terrain/18/429262/176900.terrain new file mode 100644 index 000000000..c10fc1e65 Binary files /dev/null and b/public/terrain/18/429262/176900.terrain differ diff --git a/public/terrain/18/429262/176901.terrain b/public/terrain/18/429262/176901.terrain new file mode 100644 index 000000000..d1cfef2bb Binary files /dev/null and b/public/terrain/18/429262/176901.terrain differ diff --git a/public/terrain/18/429262/176902.terrain b/public/terrain/18/429262/176902.terrain new file mode 100644 index 000000000..17e7cc8be Binary files /dev/null and b/public/terrain/18/429262/176902.terrain differ diff --git a/public/terrain/18/429262/176903.terrain b/public/terrain/18/429262/176903.terrain new file mode 100644 index 000000000..1bef02d45 Binary files /dev/null and b/public/terrain/18/429262/176903.terrain differ diff --git a/public/terrain/18/429262/176904.terrain b/public/terrain/18/429262/176904.terrain new file mode 100644 index 000000000..a38dd23f7 Binary files /dev/null and b/public/terrain/18/429262/176904.terrain differ diff --git a/public/terrain/18/429262/176905.terrain b/public/terrain/18/429262/176905.terrain new file mode 100644 index 000000000..6a3d1a19d Binary files /dev/null and b/public/terrain/18/429262/176905.terrain differ diff --git a/public/terrain/18/429262/176906.terrain b/public/terrain/18/429262/176906.terrain new file mode 100644 index 000000000..7bb07c75a Binary files /dev/null and b/public/terrain/18/429262/176906.terrain differ diff --git a/public/terrain/18/429262/176907.terrain b/public/terrain/18/429262/176907.terrain new file mode 100644 index 000000000..fb410183d Binary files /dev/null and b/public/terrain/18/429262/176907.terrain differ diff --git a/public/terrain/18/429262/176908.terrain b/public/terrain/18/429262/176908.terrain new file mode 100644 index 000000000..7ed5b7ae3 Binary files /dev/null and b/public/terrain/18/429262/176908.terrain differ diff --git a/public/terrain/18/429262/176909.terrain b/public/terrain/18/429262/176909.terrain new file mode 100644 index 000000000..e9cbf7268 Binary files /dev/null and b/public/terrain/18/429262/176909.terrain differ diff --git a/public/terrain/18/429262/176910.terrain b/public/terrain/18/429262/176910.terrain new file mode 100644 index 000000000..201879ae3 Binary files /dev/null and b/public/terrain/18/429262/176910.terrain differ diff --git a/public/terrain/18/429262/176911.terrain b/public/terrain/18/429262/176911.terrain new file mode 100644 index 000000000..30b9ee875 Binary files /dev/null and b/public/terrain/18/429262/176911.terrain differ diff --git a/public/terrain/18/429262/176912.terrain b/public/terrain/18/429262/176912.terrain new file mode 100644 index 000000000..e5fd5b297 Binary files /dev/null and b/public/terrain/18/429262/176912.terrain differ diff --git a/public/terrain/18/429262/176913.terrain b/public/terrain/18/429262/176913.terrain new file mode 100644 index 000000000..edad4b066 Binary files /dev/null and b/public/terrain/18/429262/176913.terrain differ diff --git a/public/terrain/18/429262/176914.terrain b/public/terrain/18/429262/176914.terrain new file mode 100644 index 000000000..68bc7653a Binary files /dev/null and b/public/terrain/18/429262/176914.terrain differ diff --git a/public/terrain/18/429262/176915.terrain b/public/terrain/18/429262/176915.terrain new file mode 100644 index 000000000..c385a9529 Binary files /dev/null and b/public/terrain/18/429262/176915.terrain differ diff --git a/public/terrain/18/429262/176916.terrain b/public/terrain/18/429262/176916.terrain new file mode 100644 index 000000000..818043c3e Binary files /dev/null and b/public/terrain/18/429262/176916.terrain differ diff --git a/public/terrain/18/429262/176917.terrain b/public/terrain/18/429262/176917.terrain new file mode 100644 index 000000000..67c599a0a Binary files /dev/null and b/public/terrain/18/429262/176917.terrain differ diff --git a/public/terrain/18/429262/176918.terrain b/public/terrain/18/429262/176918.terrain new file mode 100644 index 000000000..83d38d35b Binary files /dev/null and b/public/terrain/18/429262/176918.terrain differ diff --git a/public/terrain/18/429262/176919.terrain b/public/terrain/18/429262/176919.terrain new file mode 100644 index 000000000..c243ab236 Binary files /dev/null and b/public/terrain/18/429262/176919.terrain differ diff --git a/public/terrain/18/429262/176920.terrain b/public/terrain/18/429262/176920.terrain new file mode 100644 index 000000000..395a83aa4 Binary files /dev/null and b/public/terrain/18/429262/176920.terrain differ diff --git a/public/terrain/18/429262/176921.terrain b/public/terrain/18/429262/176921.terrain new file mode 100644 index 000000000..621166e20 Binary files /dev/null and b/public/terrain/18/429262/176921.terrain differ diff --git a/public/terrain/18/429262/176922.terrain b/public/terrain/18/429262/176922.terrain new file mode 100644 index 000000000..cc28798f8 Binary files /dev/null and b/public/terrain/18/429262/176922.terrain differ diff --git a/public/terrain/18/429262/176923.terrain b/public/terrain/18/429262/176923.terrain new file mode 100644 index 000000000..f218da5d1 Binary files /dev/null and b/public/terrain/18/429262/176923.terrain differ diff --git a/public/terrain/18/429262/176924.terrain b/public/terrain/18/429262/176924.terrain new file mode 100644 index 000000000..3e4c66b56 Binary files /dev/null and b/public/terrain/18/429262/176924.terrain differ diff --git a/public/terrain/18/429262/176925.terrain b/public/terrain/18/429262/176925.terrain new file mode 100644 index 000000000..96e7f9722 Binary files /dev/null and b/public/terrain/18/429262/176925.terrain differ diff --git a/public/terrain/18/429262/176926.terrain b/public/terrain/18/429262/176926.terrain new file mode 100644 index 000000000..b8deea310 Binary files /dev/null and b/public/terrain/18/429262/176926.terrain differ diff --git a/public/terrain/18/429262/176927.terrain b/public/terrain/18/429262/176927.terrain new file mode 100644 index 000000000..cb3d9a320 Binary files /dev/null and b/public/terrain/18/429262/176927.terrain differ diff --git a/public/terrain/18/429262/176928.terrain b/public/terrain/18/429262/176928.terrain new file mode 100644 index 000000000..979a0340b Binary files /dev/null and b/public/terrain/18/429262/176928.terrain differ diff --git a/public/terrain/18/429262/176929.terrain b/public/terrain/18/429262/176929.terrain new file mode 100644 index 000000000..ca7714ab2 Binary files /dev/null and b/public/terrain/18/429262/176929.terrain differ diff --git a/public/terrain/18/429262/176930.terrain b/public/terrain/18/429262/176930.terrain new file mode 100644 index 000000000..f7ec39c90 Binary files /dev/null and b/public/terrain/18/429262/176930.terrain differ diff --git a/public/terrain/18/429262/176931.terrain b/public/terrain/18/429262/176931.terrain new file mode 100644 index 000000000..afdefe8ea Binary files /dev/null and b/public/terrain/18/429262/176931.terrain differ diff --git a/public/terrain/18/429262/176932.terrain b/public/terrain/18/429262/176932.terrain new file mode 100644 index 000000000..4519a671b Binary files /dev/null and b/public/terrain/18/429262/176932.terrain differ diff --git a/public/terrain/18/429262/176933.terrain b/public/terrain/18/429262/176933.terrain new file mode 100644 index 000000000..234c68a27 Binary files /dev/null and b/public/terrain/18/429262/176933.terrain differ diff --git a/public/terrain/18/429262/176934.terrain b/public/terrain/18/429262/176934.terrain new file mode 100644 index 000000000..0cab30cb7 Binary files /dev/null and b/public/terrain/18/429262/176934.terrain differ diff --git a/public/terrain/18/429262/176935.terrain b/public/terrain/18/429262/176935.terrain new file mode 100644 index 000000000..d96131db1 Binary files /dev/null and b/public/terrain/18/429262/176935.terrain differ diff --git a/public/terrain/18/429262/176936.terrain b/public/terrain/18/429262/176936.terrain new file mode 100644 index 000000000..77c2c5942 Binary files /dev/null and b/public/terrain/18/429262/176936.terrain differ diff --git a/public/terrain/18/429262/176937.terrain b/public/terrain/18/429262/176937.terrain new file mode 100644 index 000000000..e0e4e08e9 Binary files /dev/null and b/public/terrain/18/429262/176937.terrain differ diff --git a/public/terrain/18/429262/176938.terrain b/public/terrain/18/429262/176938.terrain new file mode 100644 index 000000000..a014a5eb6 Binary files /dev/null and b/public/terrain/18/429262/176938.terrain differ diff --git a/public/terrain/18/429262/176939.terrain b/public/terrain/18/429262/176939.terrain new file mode 100644 index 000000000..066d2c6b8 Binary files /dev/null and b/public/terrain/18/429262/176939.terrain differ diff --git a/public/terrain/18/429262/176940.terrain b/public/terrain/18/429262/176940.terrain new file mode 100644 index 000000000..d08a153dc Binary files /dev/null and b/public/terrain/18/429262/176940.terrain differ diff --git a/public/terrain/18/429262/176941.terrain b/public/terrain/18/429262/176941.terrain new file mode 100644 index 000000000..18528d761 Binary files /dev/null and b/public/terrain/18/429262/176941.terrain differ diff --git a/public/terrain/18/429262/176942.terrain b/public/terrain/18/429262/176942.terrain new file mode 100644 index 000000000..bd4f10c0a Binary files /dev/null and b/public/terrain/18/429262/176942.terrain differ diff --git a/public/terrain/18/429262/176943.terrain b/public/terrain/18/429262/176943.terrain new file mode 100644 index 000000000..d1f412e6c Binary files /dev/null and b/public/terrain/18/429262/176943.terrain differ diff --git a/public/terrain/18/429262/176944.terrain b/public/terrain/18/429262/176944.terrain new file mode 100644 index 000000000..efa43df0e Binary files /dev/null and b/public/terrain/18/429262/176944.terrain differ diff --git a/public/terrain/18/429262/176945.terrain b/public/terrain/18/429262/176945.terrain new file mode 100644 index 000000000..cf06b2dc4 Binary files /dev/null and b/public/terrain/18/429262/176945.terrain differ diff --git a/public/terrain/18/429262/176946.terrain b/public/terrain/18/429262/176946.terrain new file mode 100644 index 000000000..353020574 Binary files /dev/null and b/public/terrain/18/429262/176946.terrain differ diff --git a/public/terrain/18/429262/176947.terrain b/public/terrain/18/429262/176947.terrain new file mode 100644 index 000000000..bfead5543 Binary files /dev/null and b/public/terrain/18/429262/176947.terrain differ diff --git a/public/terrain/18/429262/176948.terrain b/public/terrain/18/429262/176948.terrain new file mode 100644 index 000000000..4246802c4 Binary files /dev/null and b/public/terrain/18/429262/176948.terrain differ diff --git a/public/terrain/18/429262/176949.terrain b/public/terrain/18/429262/176949.terrain new file mode 100644 index 000000000..a8faf4486 Binary files /dev/null and b/public/terrain/18/429262/176949.terrain differ diff --git a/public/terrain/18/429262/176950.terrain b/public/terrain/18/429262/176950.terrain new file mode 100644 index 000000000..eb974539f Binary files /dev/null and b/public/terrain/18/429262/176950.terrain differ diff --git a/public/terrain/18/429262/176951.terrain b/public/terrain/18/429262/176951.terrain new file mode 100644 index 000000000..2d68ec7c3 Binary files /dev/null and b/public/terrain/18/429262/176951.terrain differ diff --git a/public/terrain/18/429262/176952.terrain b/public/terrain/18/429262/176952.terrain new file mode 100644 index 000000000..e18cfc839 Binary files /dev/null and b/public/terrain/18/429262/176952.terrain differ diff --git a/public/terrain/18/429262/176953.terrain b/public/terrain/18/429262/176953.terrain new file mode 100644 index 000000000..68eea53cc Binary files /dev/null and b/public/terrain/18/429262/176953.terrain differ diff --git a/public/terrain/18/429262/176954.terrain b/public/terrain/18/429262/176954.terrain new file mode 100644 index 000000000..06dbcc942 Binary files /dev/null and b/public/terrain/18/429262/176954.terrain differ diff --git a/public/terrain/18/429262/176955.terrain b/public/terrain/18/429262/176955.terrain new file mode 100644 index 000000000..f2d1977d9 Binary files /dev/null and b/public/terrain/18/429262/176955.terrain differ diff --git a/public/terrain/18/429262/176956.terrain b/public/terrain/18/429262/176956.terrain new file mode 100644 index 000000000..8b50677e1 Binary files /dev/null and b/public/terrain/18/429262/176956.terrain differ diff --git a/public/terrain/18/429262/176957.terrain b/public/terrain/18/429262/176957.terrain new file mode 100644 index 000000000..1ee838619 Binary files /dev/null and b/public/terrain/18/429262/176957.terrain differ diff --git a/public/terrain/18/429262/176958.terrain b/public/terrain/18/429262/176958.terrain new file mode 100644 index 000000000..089fc5d99 Binary files /dev/null and b/public/terrain/18/429262/176958.terrain differ diff --git a/public/terrain/18/429262/176959.terrain b/public/terrain/18/429262/176959.terrain new file mode 100644 index 000000000..b9b3df032 Binary files /dev/null and b/public/terrain/18/429262/176959.terrain differ diff --git a/public/terrain/18/429262/176960.terrain b/public/terrain/18/429262/176960.terrain new file mode 100644 index 000000000..b7ba9671d Binary files /dev/null and b/public/terrain/18/429262/176960.terrain differ diff --git a/public/terrain/18/429262/176961.terrain b/public/terrain/18/429262/176961.terrain new file mode 100644 index 000000000..674b22efe Binary files /dev/null and b/public/terrain/18/429262/176961.terrain differ diff --git a/public/terrain/18/429262/176962.terrain b/public/terrain/18/429262/176962.terrain new file mode 100644 index 000000000..0bdabea4b Binary files /dev/null and b/public/terrain/18/429262/176962.terrain differ diff --git a/public/terrain/18/429262/176963.terrain b/public/terrain/18/429262/176963.terrain new file mode 100644 index 000000000..28d0a49c7 Binary files /dev/null and b/public/terrain/18/429262/176963.terrain differ diff --git a/public/terrain/18/429262/176964.terrain b/public/terrain/18/429262/176964.terrain new file mode 100644 index 000000000..fb0552062 Binary files /dev/null and b/public/terrain/18/429262/176964.terrain differ diff --git a/public/terrain/18/429262/176965.terrain b/public/terrain/18/429262/176965.terrain new file mode 100644 index 000000000..60f3b5d3a Binary files /dev/null and b/public/terrain/18/429262/176965.terrain differ diff --git a/public/terrain/18/429262/176966.terrain b/public/terrain/18/429262/176966.terrain new file mode 100644 index 000000000..a08d4193d Binary files /dev/null and b/public/terrain/18/429262/176966.terrain differ diff --git a/public/terrain/18/429262/176967.terrain b/public/terrain/18/429262/176967.terrain new file mode 100644 index 000000000..38e33729a Binary files /dev/null and b/public/terrain/18/429262/176967.terrain differ diff --git a/public/terrain/18/429262/176968.terrain b/public/terrain/18/429262/176968.terrain new file mode 100644 index 000000000..3dd167488 Binary files /dev/null and b/public/terrain/18/429262/176968.terrain differ diff --git a/public/terrain/18/429262/176969.terrain b/public/terrain/18/429262/176969.terrain new file mode 100644 index 000000000..8093772bf Binary files /dev/null and b/public/terrain/18/429262/176969.terrain differ diff --git a/public/terrain/18/429262/176970.terrain b/public/terrain/18/429262/176970.terrain new file mode 100644 index 000000000..27137e976 Binary files /dev/null and b/public/terrain/18/429262/176970.terrain differ diff --git a/public/terrain/18/429262/176971.terrain b/public/terrain/18/429262/176971.terrain new file mode 100644 index 000000000..2e0c60896 Binary files /dev/null and b/public/terrain/18/429262/176971.terrain differ diff --git a/public/terrain/18/429262/176972.terrain b/public/terrain/18/429262/176972.terrain new file mode 100644 index 000000000..2af6b31f5 Binary files /dev/null and b/public/terrain/18/429262/176972.terrain differ diff --git a/public/terrain/18/429262/176973.terrain b/public/terrain/18/429262/176973.terrain new file mode 100644 index 000000000..417db6742 Binary files /dev/null and b/public/terrain/18/429262/176973.terrain differ diff --git a/public/terrain/18/429262/176974.terrain b/public/terrain/18/429262/176974.terrain new file mode 100644 index 000000000..50793b47e Binary files /dev/null and b/public/terrain/18/429262/176974.terrain differ diff --git a/public/terrain/18/429262/176975.terrain b/public/terrain/18/429262/176975.terrain new file mode 100644 index 000000000..b82b15205 Binary files /dev/null and b/public/terrain/18/429262/176975.terrain differ diff --git a/public/terrain/18/429262/176976.terrain b/public/terrain/18/429262/176976.terrain new file mode 100644 index 000000000..2eec1b5a7 Binary files /dev/null and b/public/terrain/18/429262/176976.terrain differ diff --git a/public/terrain/18/429262/176977.terrain b/public/terrain/18/429262/176977.terrain new file mode 100644 index 000000000..fd9b73b8e Binary files /dev/null and b/public/terrain/18/429262/176977.terrain differ diff --git a/public/terrain/18/429262/176978.terrain b/public/terrain/18/429262/176978.terrain new file mode 100644 index 000000000..624b413a3 Binary files /dev/null and b/public/terrain/18/429262/176978.terrain differ diff --git a/public/terrain/18/429262/176979.terrain b/public/terrain/18/429262/176979.terrain new file mode 100644 index 000000000..f889990e5 Binary files /dev/null and b/public/terrain/18/429262/176979.terrain differ diff --git a/public/terrain/18/429262/176980.terrain b/public/terrain/18/429262/176980.terrain new file mode 100644 index 000000000..1e8af82eb Binary files /dev/null and b/public/terrain/18/429262/176980.terrain differ diff --git a/public/terrain/18/429262/176981.terrain b/public/terrain/18/429262/176981.terrain new file mode 100644 index 000000000..a51b37f98 Binary files /dev/null and b/public/terrain/18/429262/176981.terrain differ diff --git a/public/terrain/18/429262/176982.terrain b/public/terrain/18/429262/176982.terrain new file mode 100644 index 000000000..e39bf5614 Binary files /dev/null and b/public/terrain/18/429262/176982.terrain differ diff --git a/public/terrain/18/429262/176983.terrain b/public/terrain/18/429262/176983.terrain new file mode 100644 index 000000000..e3d5cd7d3 Binary files /dev/null and b/public/terrain/18/429262/176983.terrain differ diff --git a/public/terrain/18/429262/176984.terrain b/public/terrain/18/429262/176984.terrain new file mode 100644 index 000000000..53fda349a Binary files /dev/null and b/public/terrain/18/429262/176984.terrain differ diff --git a/public/terrain/18/429262/176985.terrain b/public/terrain/18/429262/176985.terrain new file mode 100644 index 000000000..0a6ab8088 Binary files /dev/null and b/public/terrain/18/429262/176985.terrain differ diff --git a/public/terrain/18/429262/176986.terrain b/public/terrain/18/429262/176986.terrain new file mode 100644 index 000000000..ab0fac733 Binary files /dev/null and b/public/terrain/18/429262/176986.terrain differ diff --git a/public/terrain/18/429262/176987.terrain b/public/terrain/18/429262/176987.terrain new file mode 100644 index 000000000..3d6a46cfb Binary files /dev/null and b/public/terrain/18/429262/176987.terrain differ diff --git a/public/terrain/18/429262/176988.terrain b/public/terrain/18/429262/176988.terrain new file mode 100644 index 000000000..735ba7938 Binary files /dev/null and b/public/terrain/18/429262/176988.terrain differ diff --git a/public/terrain/18/429262/176989.terrain b/public/terrain/18/429262/176989.terrain new file mode 100644 index 000000000..2a3705590 Binary files /dev/null and b/public/terrain/18/429262/176989.terrain differ diff --git a/public/terrain/18/429262/176990.terrain b/public/terrain/18/429262/176990.terrain new file mode 100644 index 000000000..9e2bb611e Binary files /dev/null and b/public/terrain/18/429262/176990.terrain differ diff --git a/public/terrain/18/429262/176991.terrain b/public/terrain/18/429262/176991.terrain new file mode 100644 index 000000000..2cf8a4b47 Binary files /dev/null and b/public/terrain/18/429262/176991.terrain differ diff --git a/public/terrain/18/429262/176992.terrain b/public/terrain/18/429262/176992.terrain new file mode 100644 index 000000000..af0dc8194 Binary files /dev/null and b/public/terrain/18/429262/176992.terrain differ diff --git a/public/terrain/18/429262/176993.terrain b/public/terrain/18/429262/176993.terrain new file mode 100644 index 000000000..0b44c4541 Binary files /dev/null and b/public/terrain/18/429262/176993.terrain differ diff --git a/public/terrain/18/429262/176994.terrain b/public/terrain/18/429262/176994.terrain new file mode 100644 index 000000000..b0004ca7a Binary files /dev/null and b/public/terrain/18/429262/176994.terrain differ diff --git a/public/terrain/18/429262/176995.terrain b/public/terrain/18/429262/176995.terrain new file mode 100644 index 000000000..cf2c6dbda Binary files /dev/null and b/public/terrain/18/429262/176995.terrain differ diff --git a/public/terrain/18/429262/176996.terrain b/public/terrain/18/429262/176996.terrain new file mode 100644 index 000000000..56c248d1a Binary files /dev/null and b/public/terrain/18/429262/176996.terrain differ diff --git a/public/terrain/18/429262/176997.terrain b/public/terrain/18/429262/176997.terrain new file mode 100644 index 000000000..beda185db Binary files /dev/null and b/public/terrain/18/429262/176997.terrain differ diff --git a/public/terrain/18/429262/176998.terrain b/public/terrain/18/429262/176998.terrain new file mode 100644 index 000000000..4b7925340 Binary files /dev/null and b/public/terrain/18/429262/176998.terrain differ diff --git a/public/terrain/18/429262/176999.terrain b/public/terrain/18/429262/176999.terrain new file mode 100644 index 000000000..f3c3bf066 Binary files /dev/null and b/public/terrain/18/429262/176999.terrain differ diff --git a/public/terrain/18/429262/177000.terrain b/public/terrain/18/429262/177000.terrain new file mode 100644 index 000000000..00fb081f2 Binary files /dev/null and b/public/terrain/18/429262/177000.terrain differ diff --git a/public/terrain/18/429262/177001.terrain b/public/terrain/18/429262/177001.terrain new file mode 100644 index 000000000..dc2864cce Binary files /dev/null and b/public/terrain/18/429262/177001.terrain differ diff --git a/public/terrain/18/429262/177002.terrain b/public/terrain/18/429262/177002.terrain new file mode 100644 index 000000000..d8b0dd761 Binary files /dev/null and b/public/terrain/18/429262/177002.terrain differ diff --git a/public/terrain/18/429262/177003.terrain b/public/terrain/18/429262/177003.terrain new file mode 100644 index 000000000..d1a93b44b Binary files /dev/null and b/public/terrain/18/429262/177003.terrain differ diff --git a/public/terrain/18/429262/177004.terrain b/public/terrain/18/429262/177004.terrain new file mode 100644 index 000000000..757a0e7dd Binary files /dev/null and b/public/terrain/18/429262/177004.terrain differ diff --git a/public/terrain/18/429262/177005.terrain b/public/terrain/18/429262/177005.terrain new file mode 100644 index 000000000..39de127b5 Binary files /dev/null and b/public/terrain/18/429262/177005.terrain differ diff --git a/public/terrain/18/429262/177006.terrain b/public/terrain/18/429262/177006.terrain new file mode 100644 index 000000000..b6fd6c8db Binary files /dev/null and b/public/terrain/18/429262/177006.terrain differ diff --git a/public/terrain/18/429262/177007.terrain b/public/terrain/18/429262/177007.terrain new file mode 100644 index 000000000..174e64997 Binary files /dev/null and b/public/terrain/18/429262/177007.terrain differ diff --git a/public/terrain/18/429262/177008.terrain b/public/terrain/18/429262/177008.terrain new file mode 100644 index 000000000..3b9ccebf1 Binary files /dev/null and b/public/terrain/18/429262/177008.terrain differ diff --git a/public/terrain/18/429262/177009.terrain b/public/terrain/18/429262/177009.terrain new file mode 100644 index 000000000..69d0507c6 Binary files /dev/null and b/public/terrain/18/429262/177009.terrain differ diff --git a/public/terrain/18/429262/177010.terrain b/public/terrain/18/429262/177010.terrain new file mode 100644 index 000000000..a18f8b76f Binary files /dev/null and b/public/terrain/18/429262/177010.terrain differ diff --git a/public/terrain/18/429262/177011.terrain b/public/terrain/18/429262/177011.terrain new file mode 100644 index 000000000..8d7699e75 Binary files /dev/null and b/public/terrain/18/429262/177011.terrain differ diff --git a/public/terrain/18/429262/177012.terrain b/public/terrain/18/429262/177012.terrain new file mode 100644 index 000000000..cf3974e46 Binary files /dev/null and b/public/terrain/18/429262/177012.terrain differ diff --git a/public/terrain/18/429262/177013.terrain b/public/terrain/18/429262/177013.terrain new file mode 100644 index 000000000..7fe26f1a5 Binary files /dev/null and b/public/terrain/18/429262/177013.terrain differ diff --git a/public/terrain/18/429262/177014.terrain b/public/terrain/18/429262/177014.terrain new file mode 100644 index 000000000..251db3b2f Binary files /dev/null and b/public/terrain/18/429262/177014.terrain differ diff --git a/public/terrain/18/429262/177015.terrain b/public/terrain/18/429262/177015.terrain new file mode 100644 index 000000000..172b66e18 Binary files /dev/null and b/public/terrain/18/429262/177015.terrain differ diff --git a/public/terrain/18/429262/177016.terrain b/public/terrain/18/429262/177016.terrain new file mode 100644 index 000000000..0beb4cf3f Binary files /dev/null and b/public/terrain/18/429262/177016.terrain differ diff --git a/public/terrain/18/429262/177017.terrain b/public/terrain/18/429262/177017.terrain new file mode 100644 index 000000000..a2415ed48 Binary files /dev/null and b/public/terrain/18/429262/177017.terrain differ diff --git a/public/terrain/18/429262/177018.terrain b/public/terrain/18/429262/177018.terrain new file mode 100644 index 000000000..341310229 Binary files /dev/null and b/public/terrain/18/429262/177018.terrain differ diff --git a/public/terrain/18/429262/177019.terrain b/public/terrain/18/429262/177019.terrain new file mode 100644 index 000000000..c7429e5cc Binary files /dev/null and b/public/terrain/18/429262/177019.terrain differ diff --git a/public/terrain/18/429262/177020.terrain b/public/terrain/18/429262/177020.terrain new file mode 100644 index 000000000..1fac5c5ca Binary files /dev/null and b/public/terrain/18/429262/177020.terrain differ diff --git a/public/terrain/18/429262/177021.terrain b/public/terrain/18/429262/177021.terrain new file mode 100644 index 000000000..1cbdb0160 Binary files /dev/null and b/public/terrain/18/429262/177021.terrain differ diff --git a/public/terrain/18/429262/177022.terrain b/public/terrain/18/429262/177022.terrain new file mode 100644 index 000000000..c17324312 Binary files /dev/null and b/public/terrain/18/429262/177022.terrain differ diff --git a/public/terrain/18/429262/177023.terrain b/public/terrain/18/429262/177023.terrain new file mode 100644 index 000000000..8bcac12b9 Binary files /dev/null and b/public/terrain/18/429262/177023.terrain differ diff --git a/public/terrain/18/429262/177024.terrain b/public/terrain/18/429262/177024.terrain new file mode 100644 index 000000000..cae8db3f9 Binary files /dev/null and b/public/terrain/18/429262/177024.terrain differ diff --git a/public/terrain/18/429262/177025.terrain b/public/terrain/18/429262/177025.terrain new file mode 100644 index 000000000..2851ff0dc Binary files /dev/null and b/public/terrain/18/429262/177025.terrain differ diff --git a/public/terrain/18/429262/177026.terrain b/public/terrain/18/429262/177026.terrain new file mode 100644 index 000000000..604f02dab Binary files /dev/null and b/public/terrain/18/429262/177026.terrain differ diff --git a/public/terrain/18/429262/177027.terrain b/public/terrain/18/429262/177027.terrain new file mode 100644 index 000000000..33adde43c Binary files /dev/null and b/public/terrain/18/429262/177027.terrain differ diff --git a/public/terrain/18/429262/177028.terrain b/public/terrain/18/429262/177028.terrain new file mode 100644 index 000000000..ea73b0fce Binary files /dev/null and b/public/terrain/18/429262/177028.terrain differ diff --git a/public/terrain/18/429262/177029.terrain b/public/terrain/18/429262/177029.terrain new file mode 100644 index 000000000..df8cba25a Binary files /dev/null and b/public/terrain/18/429262/177029.terrain differ diff --git a/public/terrain/18/429263/176871.terrain b/public/terrain/18/429263/176871.terrain new file mode 100644 index 000000000..9a2a7cf1d Binary files /dev/null and b/public/terrain/18/429263/176871.terrain differ diff --git a/public/terrain/18/429263/176872.terrain b/public/terrain/18/429263/176872.terrain new file mode 100644 index 000000000..63374af80 Binary files /dev/null and b/public/terrain/18/429263/176872.terrain differ diff --git a/public/terrain/18/429263/176873.terrain b/public/terrain/18/429263/176873.terrain new file mode 100644 index 000000000..91d8443a2 Binary files /dev/null and b/public/terrain/18/429263/176873.terrain differ diff --git a/public/terrain/18/429263/176874.terrain b/public/terrain/18/429263/176874.terrain new file mode 100644 index 000000000..2409c029f Binary files /dev/null and b/public/terrain/18/429263/176874.terrain differ diff --git a/public/terrain/18/429263/176875.terrain b/public/terrain/18/429263/176875.terrain new file mode 100644 index 000000000..9f64a7ffe Binary files /dev/null and b/public/terrain/18/429263/176875.terrain differ diff --git a/public/terrain/18/429263/176876.terrain b/public/terrain/18/429263/176876.terrain new file mode 100644 index 000000000..f372a88a0 Binary files /dev/null and b/public/terrain/18/429263/176876.terrain differ diff --git a/public/terrain/18/429263/176877.terrain b/public/terrain/18/429263/176877.terrain new file mode 100644 index 000000000..9930ea309 Binary files /dev/null and b/public/terrain/18/429263/176877.terrain differ diff --git a/public/terrain/18/429263/176878.terrain b/public/terrain/18/429263/176878.terrain new file mode 100644 index 000000000..34025cd3f Binary files /dev/null and b/public/terrain/18/429263/176878.terrain differ diff --git a/public/terrain/18/429263/176879.terrain b/public/terrain/18/429263/176879.terrain new file mode 100644 index 000000000..00e9a8f8d Binary files /dev/null and b/public/terrain/18/429263/176879.terrain differ diff --git a/public/terrain/18/429263/176880.terrain b/public/terrain/18/429263/176880.terrain new file mode 100644 index 000000000..b6ac085b4 Binary files /dev/null and b/public/terrain/18/429263/176880.terrain differ diff --git a/public/terrain/18/429263/176881.terrain b/public/terrain/18/429263/176881.terrain new file mode 100644 index 000000000..e2e3f946f Binary files /dev/null and b/public/terrain/18/429263/176881.terrain differ diff --git a/public/terrain/18/429263/176882.terrain b/public/terrain/18/429263/176882.terrain new file mode 100644 index 000000000..41e39fdc6 Binary files /dev/null and b/public/terrain/18/429263/176882.terrain differ diff --git a/public/terrain/18/429263/176883.terrain b/public/terrain/18/429263/176883.terrain new file mode 100644 index 000000000..da2653641 Binary files /dev/null and b/public/terrain/18/429263/176883.terrain differ diff --git a/public/terrain/18/429263/176884.terrain b/public/terrain/18/429263/176884.terrain new file mode 100644 index 000000000..95f8c160a Binary files /dev/null and b/public/terrain/18/429263/176884.terrain differ diff --git a/public/terrain/18/429263/176885.terrain b/public/terrain/18/429263/176885.terrain new file mode 100644 index 000000000..d9eeed48b Binary files /dev/null and b/public/terrain/18/429263/176885.terrain differ diff --git a/public/terrain/18/429263/176886.terrain b/public/terrain/18/429263/176886.terrain new file mode 100644 index 000000000..769baefe8 Binary files /dev/null and b/public/terrain/18/429263/176886.terrain differ diff --git a/public/terrain/18/429263/176887.terrain b/public/terrain/18/429263/176887.terrain new file mode 100644 index 000000000..ab77d5722 Binary files /dev/null and b/public/terrain/18/429263/176887.terrain differ diff --git a/public/terrain/18/429263/176888.terrain b/public/terrain/18/429263/176888.terrain new file mode 100644 index 000000000..fd65fd0a0 Binary files /dev/null and b/public/terrain/18/429263/176888.terrain differ diff --git a/public/terrain/18/429263/176889.terrain b/public/terrain/18/429263/176889.terrain new file mode 100644 index 000000000..c2f532257 Binary files /dev/null and b/public/terrain/18/429263/176889.terrain differ diff --git a/public/terrain/18/429263/176890.terrain b/public/terrain/18/429263/176890.terrain new file mode 100644 index 000000000..99b566347 Binary files /dev/null and b/public/terrain/18/429263/176890.terrain differ diff --git a/public/terrain/18/429263/176891.terrain b/public/terrain/18/429263/176891.terrain new file mode 100644 index 000000000..88d8b655c Binary files /dev/null and b/public/terrain/18/429263/176891.terrain differ diff --git a/public/terrain/18/429263/176892.terrain b/public/terrain/18/429263/176892.terrain new file mode 100644 index 000000000..6238b842f Binary files /dev/null and b/public/terrain/18/429263/176892.terrain differ diff --git a/public/terrain/18/429263/176893.terrain b/public/terrain/18/429263/176893.terrain new file mode 100644 index 000000000..2448d86e8 Binary files /dev/null and b/public/terrain/18/429263/176893.terrain differ diff --git a/public/terrain/18/429263/176894.terrain b/public/terrain/18/429263/176894.terrain new file mode 100644 index 000000000..7967a5087 Binary files /dev/null and b/public/terrain/18/429263/176894.terrain differ diff --git a/public/terrain/18/429263/176895.terrain b/public/terrain/18/429263/176895.terrain new file mode 100644 index 000000000..ae38dd660 Binary files /dev/null and b/public/terrain/18/429263/176895.terrain differ diff --git a/public/terrain/18/429263/176896.terrain b/public/terrain/18/429263/176896.terrain new file mode 100644 index 000000000..60156be5a Binary files /dev/null and b/public/terrain/18/429263/176896.terrain differ diff --git a/public/terrain/18/429263/176897.terrain b/public/terrain/18/429263/176897.terrain new file mode 100644 index 000000000..0ec6f6123 Binary files /dev/null and b/public/terrain/18/429263/176897.terrain differ diff --git a/public/terrain/18/429263/176898.terrain b/public/terrain/18/429263/176898.terrain new file mode 100644 index 000000000..ea126f580 Binary files /dev/null and b/public/terrain/18/429263/176898.terrain differ diff --git a/public/terrain/18/429263/176899.terrain b/public/terrain/18/429263/176899.terrain new file mode 100644 index 000000000..846b83858 Binary files /dev/null and b/public/terrain/18/429263/176899.terrain differ diff --git a/public/terrain/18/429263/176900.terrain b/public/terrain/18/429263/176900.terrain new file mode 100644 index 000000000..1fccf9a2a Binary files /dev/null and b/public/terrain/18/429263/176900.terrain differ diff --git a/public/terrain/18/429263/176901.terrain b/public/terrain/18/429263/176901.terrain new file mode 100644 index 000000000..1a933f44d Binary files /dev/null and b/public/terrain/18/429263/176901.terrain differ diff --git a/public/terrain/18/429263/176902.terrain b/public/terrain/18/429263/176902.terrain new file mode 100644 index 000000000..88ec87f68 Binary files /dev/null and b/public/terrain/18/429263/176902.terrain differ diff --git a/public/terrain/18/429263/176903.terrain b/public/terrain/18/429263/176903.terrain new file mode 100644 index 000000000..b086ada65 Binary files /dev/null and b/public/terrain/18/429263/176903.terrain differ diff --git a/public/terrain/18/429263/176904.terrain b/public/terrain/18/429263/176904.terrain new file mode 100644 index 000000000..3ef4f2232 Binary files /dev/null and b/public/terrain/18/429263/176904.terrain differ diff --git a/public/terrain/18/429263/176905.terrain b/public/terrain/18/429263/176905.terrain new file mode 100644 index 000000000..0a3432a2c Binary files /dev/null and b/public/terrain/18/429263/176905.terrain differ diff --git a/public/terrain/18/429263/176906.terrain b/public/terrain/18/429263/176906.terrain new file mode 100644 index 000000000..d8ea3e7bd Binary files /dev/null and b/public/terrain/18/429263/176906.terrain differ diff --git a/public/terrain/18/429263/176907.terrain b/public/terrain/18/429263/176907.terrain new file mode 100644 index 000000000..a81d6f30f Binary files /dev/null and b/public/terrain/18/429263/176907.terrain differ diff --git a/public/terrain/18/429263/176908.terrain b/public/terrain/18/429263/176908.terrain new file mode 100644 index 000000000..87dc5c18d Binary files /dev/null and b/public/terrain/18/429263/176908.terrain differ diff --git a/public/terrain/18/429263/176909.terrain b/public/terrain/18/429263/176909.terrain new file mode 100644 index 000000000..7266bf399 Binary files /dev/null and b/public/terrain/18/429263/176909.terrain differ diff --git a/public/terrain/18/429263/176910.terrain b/public/terrain/18/429263/176910.terrain new file mode 100644 index 000000000..cff68eb69 Binary files /dev/null and b/public/terrain/18/429263/176910.terrain differ diff --git a/public/terrain/18/429263/176911.terrain b/public/terrain/18/429263/176911.terrain new file mode 100644 index 000000000..f0da98382 Binary files /dev/null and b/public/terrain/18/429263/176911.terrain differ diff --git a/public/terrain/18/429263/176912.terrain b/public/terrain/18/429263/176912.terrain new file mode 100644 index 000000000..4e9464aeb Binary files /dev/null and b/public/terrain/18/429263/176912.terrain differ diff --git a/public/terrain/18/429263/176913.terrain b/public/terrain/18/429263/176913.terrain new file mode 100644 index 000000000..e8b9d83a1 Binary files /dev/null and b/public/terrain/18/429263/176913.terrain differ diff --git a/public/terrain/18/429263/176914.terrain b/public/terrain/18/429263/176914.terrain new file mode 100644 index 000000000..9d854f36c Binary files /dev/null and b/public/terrain/18/429263/176914.terrain differ diff --git a/public/terrain/18/429263/176915.terrain b/public/terrain/18/429263/176915.terrain new file mode 100644 index 000000000..66d89031b Binary files /dev/null and b/public/terrain/18/429263/176915.terrain differ diff --git a/public/terrain/18/429263/176916.terrain b/public/terrain/18/429263/176916.terrain new file mode 100644 index 000000000..331189d34 Binary files /dev/null and b/public/terrain/18/429263/176916.terrain differ diff --git a/public/terrain/18/429263/176917.terrain b/public/terrain/18/429263/176917.terrain new file mode 100644 index 000000000..a89c142ce Binary files /dev/null and b/public/terrain/18/429263/176917.terrain differ diff --git a/public/terrain/18/429263/176918.terrain b/public/terrain/18/429263/176918.terrain new file mode 100644 index 000000000..790d0a2eb Binary files /dev/null and b/public/terrain/18/429263/176918.terrain differ diff --git a/public/terrain/18/429263/176919.terrain b/public/terrain/18/429263/176919.terrain new file mode 100644 index 000000000..0efd0b708 Binary files /dev/null and b/public/terrain/18/429263/176919.terrain differ diff --git a/public/terrain/18/429263/176920.terrain b/public/terrain/18/429263/176920.terrain new file mode 100644 index 000000000..534bef6c7 Binary files /dev/null and b/public/terrain/18/429263/176920.terrain differ diff --git a/public/terrain/18/429263/176921.terrain b/public/terrain/18/429263/176921.terrain new file mode 100644 index 000000000..132475792 Binary files /dev/null and b/public/terrain/18/429263/176921.terrain differ diff --git a/public/terrain/18/429263/176922.terrain b/public/terrain/18/429263/176922.terrain new file mode 100644 index 000000000..50cd6b3c6 Binary files /dev/null and b/public/terrain/18/429263/176922.terrain differ diff --git a/public/terrain/18/429263/176923.terrain b/public/terrain/18/429263/176923.terrain new file mode 100644 index 000000000..59ef8050c Binary files /dev/null and b/public/terrain/18/429263/176923.terrain differ diff --git a/public/terrain/18/429263/176924.terrain b/public/terrain/18/429263/176924.terrain new file mode 100644 index 000000000..5f227ec8b Binary files /dev/null and b/public/terrain/18/429263/176924.terrain differ diff --git a/public/terrain/18/429263/176925.terrain b/public/terrain/18/429263/176925.terrain new file mode 100644 index 000000000..8d142fbb9 Binary files /dev/null and b/public/terrain/18/429263/176925.terrain differ diff --git a/public/terrain/18/429263/176926.terrain b/public/terrain/18/429263/176926.terrain new file mode 100644 index 000000000..ae3887463 Binary files /dev/null and b/public/terrain/18/429263/176926.terrain differ diff --git a/public/terrain/18/429263/176927.terrain b/public/terrain/18/429263/176927.terrain new file mode 100644 index 000000000..7cf2022be Binary files /dev/null and b/public/terrain/18/429263/176927.terrain differ diff --git a/public/terrain/18/429263/176928.terrain b/public/terrain/18/429263/176928.terrain new file mode 100644 index 000000000..0e4d52fe0 Binary files /dev/null and b/public/terrain/18/429263/176928.terrain differ diff --git a/public/terrain/18/429263/176929.terrain b/public/terrain/18/429263/176929.terrain new file mode 100644 index 000000000..7b93e0d13 Binary files /dev/null and b/public/terrain/18/429263/176929.terrain differ diff --git a/public/terrain/18/429263/176930.terrain b/public/terrain/18/429263/176930.terrain new file mode 100644 index 000000000..6ccd43f1d Binary files /dev/null and b/public/terrain/18/429263/176930.terrain differ diff --git a/public/terrain/18/429263/176931.terrain b/public/terrain/18/429263/176931.terrain new file mode 100644 index 000000000..1432b21c9 Binary files /dev/null and b/public/terrain/18/429263/176931.terrain differ diff --git a/public/terrain/18/429263/176932.terrain b/public/terrain/18/429263/176932.terrain new file mode 100644 index 000000000..963662b27 Binary files /dev/null and b/public/terrain/18/429263/176932.terrain differ diff --git a/public/terrain/18/429263/176933.terrain b/public/terrain/18/429263/176933.terrain new file mode 100644 index 000000000..419b0d10e Binary files /dev/null and b/public/terrain/18/429263/176933.terrain differ diff --git a/public/terrain/18/429263/176934.terrain b/public/terrain/18/429263/176934.terrain new file mode 100644 index 000000000..a032779e2 Binary files /dev/null and b/public/terrain/18/429263/176934.terrain differ diff --git a/public/terrain/18/429263/176935.terrain b/public/terrain/18/429263/176935.terrain new file mode 100644 index 000000000..1a57c563d Binary files /dev/null and b/public/terrain/18/429263/176935.terrain differ diff --git a/public/terrain/18/429263/176936.terrain b/public/terrain/18/429263/176936.terrain new file mode 100644 index 000000000..ab93b614f Binary files /dev/null and b/public/terrain/18/429263/176936.terrain differ diff --git a/public/terrain/18/429263/176937.terrain b/public/terrain/18/429263/176937.terrain new file mode 100644 index 000000000..c3bdf5eb2 Binary files /dev/null and b/public/terrain/18/429263/176937.terrain differ diff --git a/public/terrain/18/429263/176938.terrain b/public/terrain/18/429263/176938.terrain new file mode 100644 index 000000000..4e680d3e6 Binary files /dev/null and b/public/terrain/18/429263/176938.terrain differ diff --git a/public/terrain/18/429263/176939.terrain b/public/terrain/18/429263/176939.terrain new file mode 100644 index 000000000..e28260d51 Binary files /dev/null and b/public/terrain/18/429263/176939.terrain differ diff --git a/public/terrain/18/429263/176940.terrain b/public/terrain/18/429263/176940.terrain new file mode 100644 index 000000000..e15a4f82c Binary files /dev/null and b/public/terrain/18/429263/176940.terrain differ diff --git a/public/terrain/18/429263/176941.terrain b/public/terrain/18/429263/176941.terrain new file mode 100644 index 000000000..48e5c79a1 Binary files /dev/null and b/public/terrain/18/429263/176941.terrain differ diff --git a/public/terrain/18/429263/176942.terrain b/public/terrain/18/429263/176942.terrain new file mode 100644 index 000000000..726eb3971 Binary files /dev/null and b/public/terrain/18/429263/176942.terrain differ diff --git a/public/terrain/18/429263/176943.terrain b/public/terrain/18/429263/176943.terrain new file mode 100644 index 000000000..b703de981 Binary files /dev/null and b/public/terrain/18/429263/176943.terrain differ diff --git a/public/terrain/18/429263/176944.terrain b/public/terrain/18/429263/176944.terrain new file mode 100644 index 000000000..2cb07977f Binary files /dev/null and b/public/terrain/18/429263/176944.terrain differ diff --git a/public/terrain/18/429263/176945.terrain b/public/terrain/18/429263/176945.terrain new file mode 100644 index 000000000..cf0c30aa6 Binary files /dev/null and b/public/terrain/18/429263/176945.terrain differ diff --git a/public/terrain/18/429263/176946.terrain b/public/terrain/18/429263/176946.terrain new file mode 100644 index 000000000..01d30ea5a Binary files /dev/null and b/public/terrain/18/429263/176946.terrain differ diff --git a/public/terrain/18/429263/176947.terrain b/public/terrain/18/429263/176947.terrain new file mode 100644 index 000000000..48ef72abc Binary files /dev/null and b/public/terrain/18/429263/176947.terrain differ diff --git a/public/terrain/18/429263/176948.terrain b/public/terrain/18/429263/176948.terrain new file mode 100644 index 000000000..454eddadb Binary files /dev/null and b/public/terrain/18/429263/176948.terrain differ diff --git a/public/terrain/18/429263/176949.terrain b/public/terrain/18/429263/176949.terrain new file mode 100644 index 000000000..c77fbe325 Binary files /dev/null and b/public/terrain/18/429263/176949.terrain differ diff --git a/public/terrain/18/429263/176950.terrain b/public/terrain/18/429263/176950.terrain new file mode 100644 index 000000000..186be2786 Binary files /dev/null and b/public/terrain/18/429263/176950.terrain differ diff --git a/public/terrain/18/429263/176951.terrain b/public/terrain/18/429263/176951.terrain new file mode 100644 index 000000000..5e1240a66 Binary files /dev/null and b/public/terrain/18/429263/176951.terrain differ diff --git a/public/terrain/18/429263/176952.terrain b/public/terrain/18/429263/176952.terrain new file mode 100644 index 000000000..50e1bb131 Binary files /dev/null and b/public/terrain/18/429263/176952.terrain differ diff --git a/public/terrain/18/429263/176953.terrain b/public/terrain/18/429263/176953.terrain new file mode 100644 index 000000000..fcf68e589 Binary files /dev/null and b/public/terrain/18/429263/176953.terrain differ diff --git a/public/terrain/18/429263/176954.terrain b/public/terrain/18/429263/176954.terrain new file mode 100644 index 000000000..e106aebc3 Binary files /dev/null and b/public/terrain/18/429263/176954.terrain differ diff --git a/public/terrain/18/429263/176955.terrain b/public/terrain/18/429263/176955.terrain new file mode 100644 index 000000000..2ce89e30f Binary files /dev/null and b/public/terrain/18/429263/176955.terrain differ diff --git a/public/terrain/18/429263/176956.terrain b/public/terrain/18/429263/176956.terrain new file mode 100644 index 000000000..67a7b3083 Binary files /dev/null and b/public/terrain/18/429263/176956.terrain differ diff --git a/public/terrain/18/429263/176957.terrain b/public/terrain/18/429263/176957.terrain new file mode 100644 index 000000000..904729d8a Binary files /dev/null and b/public/terrain/18/429263/176957.terrain differ diff --git a/public/terrain/18/429263/176958.terrain b/public/terrain/18/429263/176958.terrain new file mode 100644 index 000000000..b7b77ddf6 Binary files /dev/null and b/public/terrain/18/429263/176958.terrain differ diff --git a/public/terrain/18/429263/176959.terrain b/public/terrain/18/429263/176959.terrain new file mode 100644 index 000000000..1b534628b Binary files /dev/null and b/public/terrain/18/429263/176959.terrain differ diff --git a/public/terrain/18/429263/176960.terrain b/public/terrain/18/429263/176960.terrain new file mode 100644 index 000000000..8c8a0a0ad Binary files /dev/null and b/public/terrain/18/429263/176960.terrain differ diff --git a/public/terrain/18/429263/176961.terrain b/public/terrain/18/429263/176961.terrain new file mode 100644 index 000000000..7a662de3a Binary files /dev/null and b/public/terrain/18/429263/176961.terrain differ diff --git a/public/terrain/18/429263/176962.terrain b/public/terrain/18/429263/176962.terrain new file mode 100644 index 000000000..d90fc95d7 Binary files /dev/null and b/public/terrain/18/429263/176962.terrain differ diff --git a/public/terrain/18/429263/176963.terrain b/public/terrain/18/429263/176963.terrain new file mode 100644 index 000000000..0a953536d Binary files /dev/null and b/public/terrain/18/429263/176963.terrain differ diff --git a/public/terrain/18/429263/176964.terrain b/public/terrain/18/429263/176964.terrain new file mode 100644 index 000000000..22a662c94 Binary files /dev/null and b/public/terrain/18/429263/176964.terrain differ diff --git a/public/terrain/18/429263/176965.terrain b/public/terrain/18/429263/176965.terrain new file mode 100644 index 000000000..85ff5636d Binary files /dev/null and b/public/terrain/18/429263/176965.terrain differ diff --git a/public/terrain/18/429263/176966.terrain b/public/terrain/18/429263/176966.terrain new file mode 100644 index 000000000..15202b884 Binary files /dev/null and b/public/terrain/18/429263/176966.terrain differ diff --git a/public/terrain/18/429263/176967.terrain b/public/terrain/18/429263/176967.terrain new file mode 100644 index 000000000..a3309b120 Binary files /dev/null and b/public/terrain/18/429263/176967.terrain differ diff --git a/public/terrain/18/429263/176968.terrain b/public/terrain/18/429263/176968.terrain new file mode 100644 index 000000000..229d4ea19 Binary files /dev/null and b/public/terrain/18/429263/176968.terrain differ diff --git a/public/terrain/18/429263/176969.terrain b/public/terrain/18/429263/176969.terrain new file mode 100644 index 000000000..ab9012754 Binary files /dev/null and b/public/terrain/18/429263/176969.terrain differ diff --git a/public/terrain/18/429263/176970.terrain b/public/terrain/18/429263/176970.terrain new file mode 100644 index 000000000..34f22b400 Binary files /dev/null and b/public/terrain/18/429263/176970.terrain differ diff --git a/public/terrain/18/429263/176971.terrain b/public/terrain/18/429263/176971.terrain new file mode 100644 index 000000000..862ae6127 Binary files /dev/null and b/public/terrain/18/429263/176971.terrain differ diff --git a/public/terrain/18/429263/176972.terrain b/public/terrain/18/429263/176972.terrain new file mode 100644 index 000000000..5d95744f4 Binary files /dev/null and b/public/terrain/18/429263/176972.terrain differ diff --git a/public/terrain/18/429263/176973.terrain b/public/terrain/18/429263/176973.terrain new file mode 100644 index 000000000..ef9af017b Binary files /dev/null and b/public/terrain/18/429263/176973.terrain differ diff --git a/public/terrain/18/429263/176974.terrain b/public/terrain/18/429263/176974.terrain new file mode 100644 index 000000000..02d128f8b Binary files /dev/null and b/public/terrain/18/429263/176974.terrain differ diff --git a/public/terrain/18/429263/176975.terrain b/public/terrain/18/429263/176975.terrain new file mode 100644 index 000000000..22973fcd4 Binary files /dev/null and b/public/terrain/18/429263/176975.terrain differ diff --git a/public/terrain/18/429263/176976.terrain b/public/terrain/18/429263/176976.terrain new file mode 100644 index 000000000..c0b0c30e1 Binary files /dev/null and b/public/terrain/18/429263/176976.terrain differ diff --git a/public/terrain/18/429263/176977.terrain b/public/terrain/18/429263/176977.terrain new file mode 100644 index 000000000..57a7ec98e Binary files /dev/null and b/public/terrain/18/429263/176977.terrain differ diff --git a/public/terrain/18/429263/176978.terrain b/public/terrain/18/429263/176978.terrain new file mode 100644 index 000000000..25b7e5168 Binary files /dev/null and b/public/terrain/18/429263/176978.terrain differ diff --git a/public/terrain/18/429263/176979.terrain b/public/terrain/18/429263/176979.terrain new file mode 100644 index 000000000..fc96d8ce8 Binary files /dev/null and b/public/terrain/18/429263/176979.terrain differ diff --git a/public/terrain/18/429263/176980.terrain b/public/terrain/18/429263/176980.terrain new file mode 100644 index 000000000..f4b2a1564 Binary files /dev/null and b/public/terrain/18/429263/176980.terrain differ diff --git a/public/terrain/18/429263/176981.terrain b/public/terrain/18/429263/176981.terrain new file mode 100644 index 000000000..515af264f Binary files /dev/null and b/public/terrain/18/429263/176981.terrain differ diff --git a/public/terrain/18/429263/176982.terrain b/public/terrain/18/429263/176982.terrain new file mode 100644 index 000000000..4feb64ba8 Binary files /dev/null and b/public/terrain/18/429263/176982.terrain differ diff --git a/public/terrain/18/429263/176983.terrain b/public/terrain/18/429263/176983.terrain new file mode 100644 index 000000000..b979e7d1f Binary files /dev/null and b/public/terrain/18/429263/176983.terrain differ diff --git a/public/terrain/18/429263/176984.terrain b/public/terrain/18/429263/176984.terrain new file mode 100644 index 000000000..469747679 Binary files /dev/null and b/public/terrain/18/429263/176984.terrain differ diff --git a/public/terrain/18/429263/176985.terrain b/public/terrain/18/429263/176985.terrain new file mode 100644 index 000000000..65c3b46c4 Binary files /dev/null and b/public/terrain/18/429263/176985.terrain differ diff --git a/public/terrain/18/429263/176986.terrain b/public/terrain/18/429263/176986.terrain new file mode 100644 index 000000000..c8a2d10be Binary files /dev/null and b/public/terrain/18/429263/176986.terrain differ diff --git a/public/terrain/18/429263/176987.terrain b/public/terrain/18/429263/176987.terrain new file mode 100644 index 000000000..3ad41298e Binary files /dev/null and b/public/terrain/18/429263/176987.terrain differ diff --git a/public/terrain/18/429263/176988.terrain b/public/terrain/18/429263/176988.terrain new file mode 100644 index 000000000..daf5ad55a Binary files /dev/null and b/public/terrain/18/429263/176988.terrain differ diff --git a/public/terrain/18/429263/176989.terrain b/public/terrain/18/429263/176989.terrain new file mode 100644 index 000000000..7046f9b4e Binary files /dev/null and b/public/terrain/18/429263/176989.terrain differ diff --git a/public/terrain/18/429263/176990.terrain b/public/terrain/18/429263/176990.terrain new file mode 100644 index 000000000..833a2053d Binary files /dev/null and b/public/terrain/18/429263/176990.terrain differ diff --git a/public/terrain/18/429263/176991.terrain b/public/terrain/18/429263/176991.terrain new file mode 100644 index 000000000..fe6d9cb63 Binary files /dev/null and b/public/terrain/18/429263/176991.terrain differ diff --git a/public/terrain/18/429263/176992.terrain b/public/terrain/18/429263/176992.terrain new file mode 100644 index 000000000..ac5aef1d7 Binary files /dev/null and b/public/terrain/18/429263/176992.terrain differ diff --git a/public/terrain/18/429263/176993.terrain b/public/terrain/18/429263/176993.terrain new file mode 100644 index 000000000..69c419a62 Binary files /dev/null and b/public/terrain/18/429263/176993.terrain differ diff --git a/public/terrain/18/429263/176994.terrain b/public/terrain/18/429263/176994.terrain new file mode 100644 index 000000000..98b973225 Binary files /dev/null and b/public/terrain/18/429263/176994.terrain differ diff --git a/public/terrain/18/429263/176995.terrain b/public/terrain/18/429263/176995.terrain new file mode 100644 index 000000000..79408e505 Binary files /dev/null and b/public/terrain/18/429263/176995.terrain differ diff --git a/public/terrain/18/429263/176996.terrain b/public/terrain/18/429263/176996.terrain new file mode 100644 index 000000000..f95be4689 Binary files /dev/null and b/public/terrain/18/429263/176996.terrain differ diff --git a/public/terrain/18/429263/176997.terrain b/public/terrain/18/429263/176997.terrain new file mode 100644 index 000000000..97861629e Binary files /dev/null and b/public/terrain/18/429263/176997.terrain differ diff --git a/public/terrain/18/429263/176998.terrain b/public/terrain/18/429263/176998.terrain new file mode 100644 index 000000000..f536dc9e2 Binary files /dev/null and b/public/terrain/18/429263/176998.terrain differ diff --git a/public/terrain/18/429263/176999.terrain b/public/terrain/18/429263/176999.terrain new file mode 100644 index 000000000..02b56d92c Binary files /dev/null and b/public/terrain/18/429263/176999.terrain differ diff --git a/public/terrain/18/429263/177000.terrain b/public/terrain/18/429263/177000.terrain new file mode 100644 index 000000000..c9d0701d4 Binary files /dev/null and b/public/terrain/18/429263/177000.terrain differ diff --git a/public/terrain/18/429263/177001.terrain b/public/terrain/18/429263/177001.terrain new file mode 100644 index 000000000..1b9448934 Binary files /dev/null and b/public/terrain/18/429263/177001.terrain differ diff --git a/public/terrain/18/429263/177002.terrain b/public/terrain/18/429263/177002.terrain new file mode 100644 index 000000000..63955b021 Binary files /dev/null and b/public/terrain/18/429263/177002.terrain differ diff --git a/public/terrain/18/429263/177003.terrain b/public/terrain/18/429263/177003.terrain new file mode 100644 index 000000000..f346fcc93 Binary files /dev/null and b/public/terrain/18/429263/177003.terrain differ diff --git a/public/terrain/18/429263/177004.terrain b/public/terrain/18/429263/177004.terrain new file mode 100644 index 000000000..903353dec Binary files /dev/null and b/public/terrain/18/429263/177004.terrain differ diff --git a/public/terrain/18/429263/177005.terrain b/public/terrain/18/429263/177005.terrain new file mode 100644 index 000000000..a062413ba Binary files /dev/null and b/public/terrain/18/429263/177005.terrain differ diff --git a/public/terrain/18/429263/177006.terrain b/public/terrain/18/429263/177006.terrain new file mode 100644 index 000000000..77e71d1c8 Binary files /dev/null and b/public/terrain/18/429263/177006.terrain differ diff --git a/public/terrain/18/429263/177007.terrain b/public/terrain/18/429263/177007.terrain new file mode 100644 index 000000000..00442eab2 Binary files /dev/null and b/public/terrain/18/429263/177007.terrain differ diff --git a/public/terrain/18/429263/177008.terrain b/public/terrain/18/429263/177008.terrain new file mode 100644 index 000000000..dde1e3eae Binary files /dev/null and b/public/terrain/18/429263/177008.terrain differ diff --git a/public/terrain/18/429263/177009.terrain b/public/terrain/18/429263/177009.terrain new file mode 100644 index 000000000..a8053af3a Binary files /dev/null and b/public/terrain/18/429263/177009.terrain differ diff --git a/public/terrain/18/429263/177010.terrain b/public/terrain/18/429263/177010.terrain new file mode 100644 index 000000000..0ed2389af Binary files /dev/null and b/public/terrain/18/429263/177010.terrain differ diff --git a/public/terrain/18/429263/177011.terrain b/public/terrain/18/429263/177011.terrain new file mode 100644 index 000000000..b02fdc335 Binary files /dev/null and b/public/terrain/18/429263/177011.terrain differ diff --git a/public/terrain/18/429263/177012.terrain b/public/terrain/18/429263/177012.terrain new file mode 100644 index 000000000..b8251e309 Binary files /dev/null and b/public/terrain/18/429263/177012.terrain differ diff --git a/public/terrain/18/429263/177013.terrain b/public/terrain/18/429263/177013.terrain new file mode 100644 index 000000000..7e029afed Binary files /dev/null and b/public/terrain/18/429263/177013.terrain differ diff --git a/public/terrain/18/429263/177014.terrain b/public/terrain/18/429263/177014.terrain new file mode 100644 index 000000000..8717ff9a3 Binary files /dev/null and b/public/terrain/18/429263/177014.terrain differ diff --git a/public/terrain/18/429263/177015.terrain b/public/terrain/18/429263/177015.terrain new file mode 100644 index 000000000..05d0e5fee Binary files /dev/null and b/public/terrain/18/429263/177015.terrain differ diff --git a/public/terrain/18/429263/177016.terrain b/public/terrain/18/429263/177016.terrain new file mode 100644 index 000000000..c43dd6ce1 Binary files /dev/null and b/public/terrain/18/429263/177016.terrain differ diff --git a/public/terrain/18/429263/177017.terrain b/public/terrain/18/429263/177017.terrain new file mode 100644 index 000000000..cafd5ffb7 Binary files /dev/null and b/public/terrain/18/429263/177017.terrain differ diff --git a/public/terrain/18/429263/177018.terrain b/public/terrain/18/429263/177018.terrain new file mode 100644 index 000000000..f3e093cb9 Binary files /dev/null and b/public/terrain/18/429263/177018.terrain differ diff --git a/public/terrain/18/429263/177019.terrain b/public/terrain/18/429263/177019.terrain new file mode 100644 index 000000000..c684e6c1b Binary files /dev/null and b/public/terrain/18/429263/177019.terrain differ diff --git a/public/terrain/18/429263/177020.terrain b/public/terrain/18/429263/177020.terrain new file mode 100644 index 000000000..67ecc70d9 Binary files /dev/null and b/public/terrain/18/429263/177020.terrain differ diff --git a/public/terrain/18/429263/177021.terrain b/public/terrain/18/429263/177021.terrain new file mode 100644 index 000000000..bc23d1e62 Binary files /dev/null and b/public/terrain/18/429263/177021.terrain differ diff --git a/public/terrain/18/429263/177022.terrain b/public/terrain/18/429263/177022.terrain new file mode 100644 index 000000000..e9ad5412a Binary files /dev/null and b/public/terrain/18/429263/177022.terrain differ diff --git a/public/terrain/18/429263/177023.terrain b/public/terrain/18/429263/177023.terrain new file mode 100644 index 000000000..f647c21e8 Binary files /dev/null and b/public/terrain/18/429263/177023.terrain differ diff --git a/public/terrain/18/429263/177024.terrain b/public/terrain/18/429263/177024.terrain new file mode 100644 index 000000000..8a36beb47 Binary files /dev/null and b/public/terrain/18/429263/177024.terrain differ diff --git a/public/terrain/18/429263/177025.terrain b/public/terrain/18/429263/177025.terrain new file mode 100644 index 000000000..ba838305b Binary files /dev/null and b/public/terrain/18/429263/177025.terrain differ diff --git a/public/terrain/18/429263/177026.terrain b/public/terrain/18/429263/177026.terrain new file mode 100644 index 000000000..6866a1806 Binary files /dev/null and b/public/terrain/18/429263/177026.terrain differ diff --git a/public/terrain/18/429263/177027.terrain b/public/terrain/18/429263/177027.terrain new file mode 100644 index 000000000..946cb2a5f Binary files /dev/null and b/public/terrain/18/429263/177027.terrain differ diff --git a/public/terrain/18/429263/177028.terrain b/public/terrain/18/429263/177028.terrain new file mode 100644 index 000000000..f0ef0825f Binary files /dev/null and b/public/terrain/18/429263/177028.terrain differ diff --git a/public/terrain/18/429263/177029.terrain b/public/terrain/18/429263/177029.terrain new file mode 100644 index 000000000..47a8c4ea6 Binary files /dev/null and b/public/terrain/18/429263/177029.terrain differ diff --git a/public/terrain/18/429264/176871.terrain b/public/terrain/18/429264/176871.terrain new file mode 100644 index 000000000..127a160db Binary files /dev/null and b/public/terrain/18/429264/176871.terrain differ diff --git a/public/terrain/18/429264/176872.terrain b/public/terrain/18/429264/176872.terrain new file mode 100644 index 000000000..157ee28cd Binary files /dev/null and b/public/terrain/18/429264/176872.terrain differ diff --git a/public/terrain/18/429264/176873.terrain b/public/terrain/18/429264/176873.terrain new file mode 100644 index 000000000..3048f8110 Binary files /dev/null and b/public/terrain/18/429264/176873.terrain differ diff --git a/public/terrain/18/429264/176874.terrain b/public/terrain/18/429264/176874.terrain new file mode 100644 index 000000000..2741549c0 Binary files /dev/null and b/public/terrain/18/429264/176874.terrain differ diff --git a/public/terrain/18/429264/176875.terrain b/public/terrain/18/429264/176875.terrain new file mode 100644 index 000000000..9849c1d8e Binary files /dev/null and b/public/terrain/18/429264/176875.terrain differ diff --git a/public/terrain/18/429264/176876.terrain b/public/terrain/18/429264/176876.terrain new file mode 100644 index 000000000..5f96cc9b8 Binary files /dev/null and b/public/terrain/18/429264/176876.terrain differ diff --git a/public/terrain/18/429264/176877.terrain b/public/terrain/18/429264/176877.terrain new file mode 100644 index 000000000..45f196f07 Binary files /dev/null and b/public/terrain/18/429264/176877.terrain differ diff --git a/public/terrain/18/429264/176878.terrain b/public/terrain/18/429264/176878.terrain new file mode 100644 index 000000000..48a653717 Binary files /dev/null and b/public/terrain/18/429264/176878.terrain differ diff --git a/public/terrain/18/429264/176879.terrain b/public/terrain/18/429264/176879.terrain new file mode 100644 index 000000000..67c19461f Binary files /dev/null and b/public/terrain/18/429264/176879.terrain differ diff --git a/public/terrain/18/429264/176880.terrain b/public/terrain/18/429264/176880.terrain new file mode 100644 index 000000000..73841b42d Binary files /dev/null and b/public/terrain/18/429264/176880.terrain differ diff --git a/public/terrain/18/429264/176881.terrain b/public/terrain/18/429264/176881.terrain new file mode 100644 index 000000000..730713c78 Binary files /dev/null and b/public/terrain/18/429264/176881.terrain differ diff --git a/public/terrain/18/429264/176882.terrain b/public/terrain/18/429264/176882.terrain new file mode 100644 index 000000000..9a0ae6075 Binary files /dev/null and b/public/terrain/18/429264/176882.terrain differ diff --git a/public/terrain/18/429264/176883.terrain b/public/terrain/18/429264/176883.terrain new file mode 100644 index 000000000..2cd67aafe Binary files /dev/null and b/public/terrain/18/429264/176883.terrain differ diff --git a/public/terrain/18/429264/176884.terrain b/public/terrain/18/429264/176884.terrain new file mode 100644 index 000000000..daf146f9b Binary files /dev/null and b/public/terrain/18/429264/176884.terrain differ diff --git a/public/terrain/18/429264/176885.terrain b/public/terrain/18/429264/176885.terrain new file mode 100644 index 000000000..1c081324f Binary files /dev/null and b/public/terrain/18/429264/176885.terrain differ diff --git a/public/terrain/18/429264/176886.terrain b/public/terrain/18/429264/176886.terrain new file mode 100644 index 000000000..8c10f4f04 Binary files /dev/null and b/public/terrain/18/429264/176886.terrain differ diff --git a/public/terrain/18/429264/176887.terrain b/public/terrain/18/429264/176887.terrain new file mode 100644 index 000000000..5a83c0cba Binary files /dev/null and b/public/terrain/18/429264/176887.terrain differ diff --git a/public/terrain/18/429264/176888.terrain b/public/terrain/18/429264/176888.terrain new file mode 100644 index 000000000..2d25594df Binary files /dev/null and b/public/terrain/18/429264/176888.terrain differ diff --git a/public/terrain/18/429264/176889.terrain b/public/terrain/18/429264/176889.terrain new file mode 100644 index 000000000..2f50537e8 Binary files /dev/null and b/public/terrain/18/429264/176889.terrain differ diff --git a/public/terrain/18/429264/176890.terrain b/public/terrain/18/429264/176890.terrain new file mode 100644 index 000000000..a302dedd1 Binary files /dev/null and b/public/terrain/18/429264/176890.terrain differ diff --git a/public/terrain/18/429264/176891.terrain b/public/terrain/18/429264/176891.terrain new file mode 100644 index 000000000..5bfc8ea63 Binary files /dev/null and b/public/terrain/18/429264/176891.terrain differ diff --git a/public/terrain/18/429264/176892.terrain b/public/terrain/18/429264/176892.terrain new file mode 100644 index 000000000..925dffe73 Binary files /dev/null and b/public/terrain/18/429264/176892.terrain differ diff --git a/public/terrain/18/429264/176893.terrain b/public/terrain/18/429264/176893.terrain new file mode 100644 index 000000000..cc487e9cd Binary files /dev/null and b/public/terrain/18/429264/176893.terrain differ diff --git a/public/terrain/18/429264/176894.terrain b/public/terrain/18/429264/176894.terrain new file mode 100644 index 000000000..0fa43f5e3 Binary files /dev/null and b/public/terrain/18/429264/176894.terrain differ diff --git a/public/terrain/18/429264/176895.terrain b/public/terrain/18/429264/176895.terrain new file mode 100644 index 000000000..04be8e100 Binary files /dev/null and b/public/terrain/18/429264/176895.terrain differ diff --git a/public/terrain/18/429264/176896.terrain b/public/terrain/18/429264/176896.terrain new file mode 100644 index 000000000..9c68a4cc5 Binary files /dev/null and b/public/terrain/18/429264/176896.terrain differ diff --git a/public/terrain/18/429264/176897.terrain b/public/terrain/18/429264/176897.terrain new file mode 100644 index 000000000..d247a7708 Binary files /dev/null and b/public/terrain/18/429264/176897.terrain differ diff --git a/public/terrain/18/429264/176898.terrain b/public/terrain/18/429264/176898.terrain new file mode 100644 index 000000000..76a5e81fb Binary files /dev/null and b/public/terrain/18/429264/176898.terrain differ diff --git a/public/terrain/18/429264/176899.terrain b/public/terrain/18/429264/176899.terrain new file mode 100644 index 000000000..105be75bf Binary files /dev/null and b/public/terrain/18/429264/176899.terrain differ diff --git a/public/terrain/18/429264/176900.terrain b/public/terrain/18/429264/176900.terrain new file mode 100644 index 000000000..af798d85b Binary files /dev/null and b/public/terrain/18/429264/176900.terrain differ diff --git a/public/terrain/18/429264/176901.terrain b/public/terrain/18/429264/176901.terrain new file mode 100644 index 000000000..b367bddfa Binary files /dev/null and b/public/terrain/18/429264/176901.terrain differ diff --git a/public/terrain/18/429264/176902.terrain b/public/terrain/18/429264/176902.terrain new file mode 100644 index 000000000..abe221db3 Binary files /dev/null and b/public/terrain/18/429264/176902.terrain differ diff --git a/public/terrain/18/429264/176903.terrain b/public/terrain/18/429264/176903.terrain new file mode 100644 index 000000000..ce555e7ce Binary files /dev/null and b/public/terrain/18/429264/176903.terrain differ diff --git a/public/terrain/18/429264/176904.terrain b/public/terrain/18/429264/176904.terrain new file mode 100644 index 000000000..c17291f5a Binary files /dev/null and b/public/terrain/18/429264/176904.terrain differ diff --git a/public/terrain/18/429264/176905.terrain b/public/terrain/18/429264/176905.terrain new file mode 100644 index 000000000..ee22c02a6 Binary files /dev/null and b/public/terrain/18/429264/176905.terrain differ diff --git a/public/terrain/18/429264/176906.terrain b/public/terrain/18/429264/176906.terrain new file mode 100644 index 000000000..e2f990903 Binary files /dev/null and b/public/terrain/18/429264/176906.terrain differ diff --git a/public/terrain/18/429264/176907.terrain b/public/terrain/18/429264/176907.terrain new file mode 100644 index 000000000..4c717fe51 Binary files /dev/null and b/public/terrain/18/429264/176907.terrain differ diff --git a/public/terrain/18/429264/176908.terrain b/public/terrain/18/429264/176908.terrain new file mode 100644 index 000000000..14c4c206e Binary files /dev/null and b/public/terrain/18/429264/176908.terrain differ diff --git a/public/terrain/18/429264/176909.terrain b/public/terrain/18/429264/176909.terrain new file mode 100644 index 000000000..c6e516d77 Binary files /dev/null and b/public/terrain/18/429264/176909.terrain differ diff --git a/public/terrain/18/429264/176910.terrain b/public/terrain/18/429264/176910.terrain new file mode 100644 index 000000000..e93943ce9 Binary files /dev/null and b/public/terrain/18/429264/176910.terrain differ diff --git a/public/terrain/18/429264/176911.terrain b/public/terrain/18/429264/176911.terrain new file mode 100644 index 000000000..2d5071cb1 Binary files /dev/null and b/public/terrain/18/429264/176911.terrain differ diff --git a/public/terrain/18/429264/176912.terrain b/public/terrain/18/429264/176912.terrain new file mode 100644 index 000000000..c04140f3b Binary files /dev/null and b/public/terrain/18/429264/176912.terrain differ diff --git a/public/terrain/18/429264/176913.terrain b/public/terrain/18/429264/176913.terrain new file mode 100644 index 000000000..436051938 Binary files /dev/null and b/public/terrain/18/429264/176913.terrain differ diff --git a/public/terrain/18/429264/176914.terrain b/public/terrain/18/429264/176914.terrain new file mode 100644 index 000000000..897b46198 Binary files /dev/null and b/public/terrain/18/429264/176914.terrain differ diff --git a/public/terrain/18/429264/176915.terrain b/public/terrain/18/429264/176915.terrain new file mode 100644 index 000000000..93cddba29 Binary files /dev/null and b/public/terrain/18/429264/176915.terrain differ diff --git a/public/terrain/18/429264/176916.terrain b/public/terrain/18/429264/176916.terrain new file mode 100644 index 000000000..64a80ac0e Binary files /dev/null and b/public/terrain/18/429264/176916.terrain differ diff --git a/public/terrain/18/429264/176917.terrain b/public/terrain/18/429264/176917.terrain new file mode 100644 index 000000000..04a520c68 Binary files /dev/null and b/public/terrain/18/429264/176917.terrain differ diff --git a/public/terrain/18/429264/176918.terrain b/public/terrain/18/429264/176918.terrain new file mode 100644 index 000000000..aef55d7c5 Binary files /dev/null and b/public/terrain/18/429264/176918.terrain differ diff --git a/public/terrain/18/429264/176919.terrain b/public/terrain/18/429264/176919.terrain new file mode 100644 index 000000000..07fc9c0d5 Binary files /dev/null and b/public/terrain/18/429264/176919.terrain differ diff --git a/public/terrain/18/429264/176920.terrain b/public/terrain/18/429264/176920.terrain new file mode 100644 index 000000000..f75c0afeb Binary files /dev/null and b/public/terrain/18/429264/176920.terrain differ diff --git a/public/terrain/18/429264/176921.terrain b/public/terrain/18/429264/176921.terrain new file mode 100644 index 000000000..1b8071d13 Binary files /dev/null and b/public/terrain/18/429264/176921.terrain differ diff --git a/public/terrain/18/429264/176922.terrain b/public/terrain/18/429264/176922.terrain new file mode 100644 index 000000000..fb9fb583d Binary files /dev/null and b/public/terrain/18/429264/176922.terrain differ diff --git a/public/terrain/18/429264/176923.terrain b/public/terrain/18/429264/176923.terrain new file mode 100644 index 000000000..f4df42c36 Binary files /dev/null and b/public/terrain/18/429264/176923.terrain differ diff --git a/public/terrain/18/429264/176924.terrain b/public/terrain/18/429264/176924.terrain new file mode 100644 index 000000000..cb6568143 Binary files /dev/null and b/public/terrain/18/429264/176924.terrain differ diff --git a/public/terrain/18/429264/176925.terrain b/public/terrain/18/429264/176925.terrain new file mode 100644 index 000000000..1f298a35a Binary files /dev/null and b/public/terrain/18/429264/176925.terrain differ diff --git a/public/terrain/18/429264/176926.terrain b/public/terrain/18/429264/176926.terrain new file mode 100644 index 000000000..33fef983e Binary files /dev/null and b/public/terrain/18/429264/176926.terrain differ diff --git a/public/terrain/18/429264/176927.terrain b/public/terrain/18/429264/176927.terrain new file mode 100644 index 000000000..a57cd61c2 Binary files /dev/null and b/public/terrain/18/429264/176927.terrain differ diff --git a/public/terrain/18/429264/176928.terrain b/public/terrain/18/429264/176928.terrain new file mode 100644 index 000000000..10fa18b03 Binary files /dev/null and b/public/terrain/18/429264/176928.terrain differ diff --git a/public/terrain/18/429264/176929.terrain b/public/terrain/18/429264/176929.terrain new file mode 100644 index 000000000..22c6ac796 Binary files /dev/null and b/public/terrain/18/429264/176929.terrain differ diff --git a/public/terrain/18/429264/176930.terrain b/public/terrain/18/429264/176930.terrain new file mode 100644 index 000000000..a2943b12f Binary files /dev/null and b/public/terrain/18/429264/176930.terrain differ diff --git a/public/terrain/18/429264/176931.terrain b/public/terrain/18/429264/176931.terrain new file mode 100644 index 000000000..1ed958a20 Binary files /dev/null and b/public/terrain/18/429264/176931.terrain differ diff --git a/public/terrain/18/429264/176932.terrain b/public/terrain/18/429264/176932.terrain new file mode 100644 index 000000000..8a2eb8902 Binary files /dev/null and b/public/terrain/18/429264/176932.terrain differ diff --git a/public/terrain/18/429264/176933.terrain b/public/terrain/18/429264/176933.terrain new file mode 100644 index 000000000..9eb4cd7c3 Binary files /dev/null and b/public/terrain/18/429264/176933.terrain differ diff --git a/public/terrain/18/429264/176934.terrain b/public/terrain/18/429264/176934.terrain new file mode 100644 index 000000000..25382cafd Binary files /dev/null and b/public/terrain/18/429264/176934.terrain differ diff --git a/public/terrain/18/429264/176935.terrain b/public/terrain/18/429264/176935.terrain new file mode 100644 index 000000000..24b01e424 Binary files /dev/null and b/public/terrain/18/429264/176935.terrain differ diff --git a/public/terrain/18/429264/176936.terrain b/public/terrain/18/429264/176936.terrain new file mode 100644 index 000000000..4faedf9f8 Binary files /dev/null and b/public/terrain/18/429264/176936.terrain differ diff --git a/public/terrain/18/429264/176937.terrain b/public/terrain/18/429264/176937.terrain new file mode 100644 index 000000000..68146e41c Binary files /dev/null and b/public/terrain/18/429264/176937.terrain differ diff --git a/public/terrain/18/429264/176938.terrain b/public/terrain/18/429264/176938.terrain new file mode 100644 index 000000000..cb99d30f4 Binary files /dev/null and b/public/terrain/18/429264/176938.terrain differ diff --git a/public/terrain/18/429264/176939.terrain b/public/terrain/18/429264/176939.terrain new file mode 100644 index 000000000..0e047cf18 Binary files /dev/null and b/public/terrain/18/429264/176939.terrain differ diff --git a/public/terrain/18/429264/176940.terrain b/public/terrain/18/429264/176940.terrain new file mode 100644 index 000000000..bc0316fcf Binary files /dev/null and b/public/terrain/18/429264/176940.terrain differ diff --git a/public/terrain/18/429264/176941.terrain b/public/terrain/18/429264/176941.terrain new file mode 100644 index 000000000..4eb2c97d0 Binary files /dev/null and b/public/terrain/18/429264/176941.terrain differ diff --git a/public/terrain/18/429264/176942.terrain b/public/terrain/18/429264/176942.terrain new file mode 100644 index 000000000..f7150f509 Binary files /dev/null and b/public/terrain/18/429264/176942.terrain differ diff --git a/public/terrain/18/429264/176943.terrain b/public/terrain/18/429264/176943.terrain new file mode 100644 index 000000000..9bf351112 Binary files /dev/null and b/public/terrain/18/429264/176943.terrain differ diff --git a/public/terrain/18/429264/176944.terrain b/public/terrain/18/429264/176944.terrain new file mode 100644 index 000000000..0ff8c81af Binary files /dev/null and b/public/terrain/18/429264/176944.terrain differ diff --git a/public/terrain/18/429264/176945.terrain b/public/terrain/18/429264/176945.terrain new file mode 100644 index 000000000..11fe6a1b9 Binary files /dev/null and b/public/terrain/18/429264/176945.terrain differ diff --git a/public/terrain/18/429264/176946.terrain b/public/terrain/18/429264/176946.terrain new file mode 100644 index 000000000..71ea0f78d Binary files /dev/null and b/public/terrain/18/429264/176946.terrain differ diff --git a/public/terrain/18/429264/176947.terrain b/public/terrain/18/429264/176947.terrain new file mode 100644 index 000000000..fd9d68263 Binary files /dev/null and b/public/terrain/18/429264/176947.terrain differ diff --git a/public/terrain/18/429264/176948.terrain b/public/terrain/18/429264/176948.terrain new file mode 100644 index 000000000..1fee0a2f4 Binary files /dev/null and b/public/terrain/18/429264/176948.terrain differ diff --git a/public/terrain/18/429264/176949.terrain b/public/terrain/18/429264/176949.terrain new file mode 100644 index 000000000..37a7eecef Binary files /dev/null and b/public/terrain/18/429264/176949.terrain differ diff --git a/public/terrain/18/429264/176950.terrain b/public/terrain/18/429264/176950.terrain new file mode 100644 index 000000000..cbc1b8a3c Binary files /dev/null and b/public/terrain/18/429264/176950.terrain differ diff --git a/public/terrain/18/429264/176951.terrain b/public/terrain/18/429264/176951.terrain new file mode 100644 index 000000000..8122d9299 Binary files /dev/null and b/public/terrain/18/429264/176951.terrain differ diff --git a/public/terrain/18/429264/176952.terrain b/public/terrain/18/429264/176952.terrain new file mode 100644 index 000000000..0e1b30b94 Binary files /dev/null and b/public/terrain/18/429264/176952.terrain differ diff --git a/public/terrain/18/429264/176953.terrain b/public/terrain/18/429264/176953.terrain new file mode 100644 index 000000000..7a918ce61 Binary files /dev/null and b/public/terrain/18/429264/176953.terrain differ diff --git a/public/terrain/18/429264/176954.terrain b/public/terrain/18/429264/176954.terrain new file mode 100644 index 000000000..5bd085574 Binary files /dev/null and b/public/terrain/18/429264/176954.terrain differ diff --git a/public/terrain/18/429264/176955.terrain b/public/terrain/18/429264/176955.terrain new file mode 100644 index 000000000..6b5e8c531 Binary files /dev/null and b/public/terrain/18/429264/176955.terrain differ diff --git a/public/terrain/18/429264/176956.terrain b/public/terrain/18/429264/176956.terrain new file mode 100644 index 000000000..faed6e158 Binary files /dev/null and b/public/terrain/18/429264/176956.terrain differ diff --git a/public/terrain/18/429264/176957.terrain b/public/terrain/18/429264/176957.terrain new file mode 100644 index 000000000..3568ff134 Binary files /dev/null and b/public/terrain/18/429264/176957.terrain differ diff --git a/public/terrain/18/429264/176958.terrain b/public/terrain/18/429264/176958.terrain new file mode 100644 index 000000000..52a8ab469 Binary files /dev/null and b/public/terrain/18/429264/176958.terrain differ diff --git a/public/terrain/18/429264/176959.terrain b/public/terrain/18/429264/176959.terrain new file mode 100644 index 000000000..65b39c0c4 Binary files /dev/null and b/public/terrain/18/429264/176959.terrain differ diff --git a/public/terrain/18/429264/176960.terrain b/public/terrain/18/429264/176960.terrain new file mode 100644 index 000000000..675a4f9c2 Binary files /dev/null and b/public/terrain/18/429264/176960.terrain differ diff --git a/public/terrain/18/429264/176961.terrain b/public/terrain/18/429264/176961.terrain new file mode 100644 index 000000000..da7315f63 Binary files /dev/null and b/public/terrain/18/429264/176961.terrain differ diff --git a/public/terrain/18/429264/176962.terrain b/public/terrain/18/429264/176962.terrain new file mode 100644 index 000000000..e07c933d3 Binary files /dev/null and b/public/terrain/18/429264/176962.terrain differ diff --git a/public/terrain/18/429264/176963.terrain b/public/terrain/18/429264/176963.terrain new file mode 100644 index 000000000..57815c273 Binary files /dev/null and b/public/terrain/18/429264/176963.terrain differ diff --git a/public/terrain/18/429264/176964.terrain b/public/terrain/18/429264/176964.terrain new file mode 100644 index 000000000..425de9f45 Binary files /dev/null and b/public/terrain/18/429264/176964.terrain differ diff --git a/public/terrain/18/429264/176965.terrain b/public/terrain/18/429264/176965.terrain new file mode 100644 index 000000000..bde58e4e7 Binary files /dev/null and b/public/terrain/18/429264/176965.terrain differ diff --git a/public/terrain/18/429264/176966.terrain b/public/terrain/18/429264/176966.terrain new file mode 100644 index 000000000..90c8d9f90 Binary files /dev/null and b/public/terrain/18/429264/176966.terrain differ diff --git a/public/terrain/18/429264/176967.terrain b/public/terrain/18/429264/176967.terrain new file mode 100644 index 000000000..a4bd69e45 Binary files /dev/null and b/public/terrain/18/429264/176967.terrain differ diff --git a/public/terrain/18/429264/176968.terrain b/public/terrain/18/429264/176968.terrain new file mode 100644 index 000000000..4882d0bd5 Binary files /dev/null and b/public/terrain/18/429264/176968.terrain differ diff --git a/public/terrain/18/429264/176969.terrain b/public/terrain/18/429264/176969.terrain new file mode 100644 index 000000000..235f11e5f Binary files /dev/null and b/public/terrain/18/429264/176969.terrain differ diff --git a/public/terrain/18/429264/176970.terrain b/public/terrain/18/429264/176970.terrain new file mode 100644 index 000000000..c98a3ec80 Binary files /dev/null and b/public/terrain/18/429264/176970.terrain differ diff --git a/public/terrain/18/429264/176971.terrain b/public/terrain/18/429264/176971.terrain new file mode 100644 index 000000000..199484645 Binary files /dev/null and b/public/terrain/18/429264/176971.terrain differ diff --git a/public/terrain/18/429264/176972.terrain b/public/terrain/18/429264/176972.terrain new file mode 100644 index 000000000..8ac8df287 Binary files /dev/null and b/public/terrain/18/429264/176972.terrain differ diff --git a/public/terrain/18/429264/176973.terrain b/public/terrain/18/429264/176973.terrain new file mode 100644 index 000000000..35d57a778 Binary files /dev/null and b/public/terrain/18/429264/176973.terrain differ diff --git a/public/terrain/18/429264/176974.terrain b/public/terrain/18/429264/176974.terrain new file mode 100644 index 000000000..364c00860 Binary files /dev/null and b/public/terrain/18/429264/176974.terrain differ diff --git a/public/terrain/18/429264/176975.terrain b/public/terrain/18/429264/176975.terrain new file mode 100644 index 000000000..c5c7e9475 Binary files /dev/null and b/public/terrain/18/429264/176975.terrain differ diff --git a/public/terrain/18/429264/176976.terrain b/public/terrain/18/429264/176976.terrain new file mode 100644 index 000000000..b6f2d0db7 Binary files /dev/null and b/public/terrain/18/429264/176976.terrain differ diff --git a/public/terrain/18/429264/176977.terrain b/public/terrain/18/429264/176977.terrain new file mode 100644 index 000000000..3b33e7b8c Binary files /dev/null and b/public/terrain/18/429264/176977.terrain differ diff --git a/public/terrain/18/429264/176978.terrain b/public/terrain/18/429264/176978.terrain new file mode 100644 index 000000000..b1f8e5f6a Binary files /dev/null and b/public/terrain/18/429264/176978.terrain differ diff --git a/public/terrain/18/429264/176979.terrain b/public/terrain/18/429264/176979.terrain new file mode 100644 index 000000000..6f87aef83 Binary files /dev/null and b/public/terrain/18/429264/176979.terrain differ diff --git a/public/terrain/18/429264/176980.terrain b/public/terrain/18/429264/176980.terrain new file mode 100644 index 000000000..e0ab3cf17 Binary files /dev/null and b/public/terrain/18/429264/176980.terrain differ diff --git a/public/terrain/18/429264/176981.terrain b/public/terrain/18/429264/176981.terrain new file mode 100644 index 000000000..1818b17b2 Binary files /dev/null and b/public/terrain/18/429264/176981.terrain differ diff --git a/public/terrain/18/429264/176982.terrain b/public/terrain/18/429264/176982.terrain new file mode 100644 index 000000000..c9f4c4e2d Binary files /dev/null and b/public/terrain/18/429264/176982.terrain differ diff --git a/public/terrain/18/429264/176983.terrain b/public/terrain/18/429264/176983.terrain new file mode 100644 index 000000000..f0c5d8f3d Binary files /dev/null and b/public/terrain/18/429264/176983.terrain differ diff --git a/public/terrain/18/429264/176984.terrain b/public/terrain/18/429264/176984.terrain new file mode 100644 index 000000000..cc5756b71 Binary files /dev/null and b/public/terrain/18/429264/176984.terrain differ diff --git a/public/terrain/18/429264/176985.terrain b/public/terrain/18/429264/176985.terrain new file mode 100644 index 000000000..b83cce186 Binary files /dev/null and b/public/terrain/18/429264/176985.terrain differ diff --git a/public/terrain/18/429264/176986.terrain b/public/terrain/18/429264/176986.terrain new file mode 100644 index 000000000..f817ab18d Binary files /dev/null and b/public/terrain/18/429264/176986.terrain differ diff --git a/public/terrain/18/429264/176987.terrain b/public/terrain/18/429264/176987.terrain new file mode 100644 index 000000000..09b1ccd4f Binary files /dev/null and b/public/terrain/18/429264/176987.terrain differ diff --git a/public/terrain/18/429264/176988.terrain b/public/terrain/18/429264/176988.terrain new file mode 100644 index 000000000..20c35ad63 Binary files /dev/null and b/public/terrain/18/429264/176988.terrain differ diff --git a/public/terrain/18/429264/176989.terrain b/public/terrain/18/429264/176989.terrain new file mode 100644 index 000000000..7ca8e1d97 Binary files /dev/null and b/public/terrain/18/429264/176989.terrain differ diff --git a/public/terrain/18/429264/176990.terrain b/public/terrain/18/429264/176990.terrain new file mode 100644 index 000000000..ed0978eeb Binary files /dev/null and b/public/terrain/18/429264/176990.terrain differ diff --git a/public/terrain/18/429264/176991.terrain b/public/terrain/18/429264/176991.terrain new file mode 100644 index 000000000..a66913ec9 Binary files /dev/null and b/public/terrain/18/429264/176991.terrain differ diff --git a/public/terrain/18/429264/176992.terrain b/public/terrain/18/429264/176992.terrain new file mode 100644 index 000000000..606366e97 Binary files /dev/null and b/public/terrain/18/429264/176992.terrain differ diff --git a/public/terrain/18/429264/176993.terrain b/public/terrain/18/429264/176993.terrain new file mode 100644 index 000000000..f0b07442b Binary files /dev/null and b/public/terrain/18/429264/176993.terrain differ diff --git a/public/terrain/18/429264/176994.terrain b/public/terrain/18/429264/176994.terrain new file mode 100644 index 000000000..9d87447f9 Binary files /dev/null and b/public/terrain/18/429264/176994.terrain differ diff --git a/public/terrain/18/429264/176995.terrain b/public/terrain/18/429264/176995.terrain new file mode 100644 index 000000000..8b720d7b3 Binary files /dev/null and b/public/terrain/18/429264/176995.terrain differ diff --git a/public/terrain/18/429264/176996.terrain b/public/terrain/18/429264/176996.terrain new file mode 100644 index 000000000..0ba86c0d3 Binary files /dev/null and b/public/terrain/18/429264/176996.terrain differ diff --git a/public/terrain/18/429264/176997.terrain b/public/terrain/18/429264/176997.terrain new file mode 100644 index 000000000..b1fd3c626 Binary files /dev/null and b/public/terrain/18/429264/176997.terrain differ diff --git a/public/terrain/18/429264/176998.terrain b/public/terrain/18/429264/176998.terrain new file mode 100644 index 000000000..6ceb498b2 Binary files /dev/null and b/public/terrain/18/429264/176998.terrain differ diff --git a/public/terrain/18/429264/176999.terrain b/public/terrain/18/429264/176999.terrain new file mode 100644 index 000000000..dd53ad2d6 Binary files /dev/null and b/public/terrain/18/429264/176999.terrain differ diff --git a/public/terrain/18/429264/177000.terrain b/public/terrain/18/429264/177000.terrain new file mode 100644 index 000000000..d502efee4 Binary files /dev/null and b/public/terrain/18/429264/177000.terrain differ diff --git a/public/terrain/18/429264/177001.terrain b/public/terrain/18/429264/177001.terrain new file mode 100644 index 000000000..601776114 Binary files /dev/null and b/public/terrain/18/429264/177001.terrain differ diff --git a/public/terrain/18/429264/177002.terrain b/public/terrain/18/429264/177002.terrain new file mode 100644 index 000000000..ee1795413 Binary files /dev/null and b/public/terrain/18/429264/177002.terrain differ diff --git a/public/terrain/18/429264/177003.terrain b/public/terrain/18/429264/177003.terrain new file mode 100644 index 000000000..9447eef9f Binary files /dev/null and b/public/terrain/18/429264/177003.terrain differ diff --git a/public/terrain/18/429264/177004.terrain b/public/terrain/18/429264/177004.terrain new file mode 100644 index 000000000..7f8b116d2 Binary files /dev/null and b/public/terrain/18/429264/177004.terrain differ diff --git a/public/terrain/18/429264/177005.terrain b/public/terrain/18/429264/177005.terrain new file mode 100644 index 000000000..8559d01fa Binary files /dev/null and b/public/terrain/18/429264/177005.terrain differ diff --git a/public/terrain/18/429264/177006.terrain b/public/terrain/18/429264/177006.terrain new file mode 100644 index 000000000..b2f055111 Binary files /dev/null and b/public/terrain/18/429264/177006.terrain differ diff --git a/public/terrain/18/429264/177007.terrain b/public/terrain/18/429264/177007.terrain new file mode 100644 index 000000000..857aa37e9 Binary files /dev/null and b/public/terrain/18/429264/177007.terrain differ diff --git a/public/terrain/18/429264/177008.terrain b/public/terrain/18/429264/177008.terrain new file mode 100644 index 000000000..4f413ce36 Binary files /dev/null and b/public/terrain/18/429264/177008.terrain differ diff --git a/public/terrain/18/429264/177009.terrain b/public/terrain/18/429264/177009.terrain new file mode 100644 index 000000000..623626b70 Binary files /dev/null and b/public/terrain/18/429264/177009.terrain differ diff --git a/public/terrain/18/429264/177010.terrain b/public/terrain/18/429264/177010.terrain new file mode 100644 index 000000000..e31e30803 Binary files /dev/null and b/public/terrain/18/429264/177010.terrain differ diff --git a/public/terrain/18/429264/177011.terrain b/public/terrain/18/429264/177011.terrain new file mode 100644 index 000000000..5f1897eb3 Binary files /dev/null and b/public/terrain/18/429264/177011.terrain differ diff --git a/public/terrain/18/429264/177012.terrain b/public/terrain/18/429264/177012.terrain new file mode 100644 index 000000000..467743efe Binary files /dev/null and b/public/terrain/18/429264/177012.terrain differ diff --git a/public/terrain/18/429264/177013.terrain b/public/terrain/18/429264/177013.terrain new file mode 100644 index 000000000..af80ed790 Binary files /dev/null and b/public/terrain/18/429264/177013.terrain differ diff --git a/public/terrain/18/429264/177014.terrain b/public/terrain/18/429264/177014.terrain new file mode 100644 index 000000000..88bf441f5 Binary files /dev/null and b/public/terrain/18/429264/177014.terrain differ diff --git a/public/terrain/18/429264/177015.terrain b/public/terrain/18/429264/177015.terrain new file mode 100644 index 000000000..caffde7c7 Binary files /dev/null and b/public/terrain/18/429264/177015.terrain differ diff --git a/public/terrain/18/429264/177016.terrain b/public/terrain/18/429264/177016.terrain new file mode 100644 index 000000000..fa9f9f054 Binary files /dev/null and b/public/terrain/18/429264/177016.terrain differ diff --git a/public/terrain/18/429264/177017.terrain b/public/terrain/18/429264/177017.terrain new file mode 100644 index 000000000..0a339e86e Binary files /dev/null and b/public/terrain/18/429264/177017.terrain differ diff --git a/public/terrain/18/429264/177018.terrain b/public/terrain/18/429264/177018.terrain new file mode 100644 index 000000000..c519f6f34 Binary files /dev/null and b/public/terrain/18/429264/177018.terrain differ diff --git a/public/terrain/18/429264/177019.terrain b/public/terrain/18/429264/177019.terrain new file mode 100644 index 000000000..e53593ff6 Binary files /dev/null and b/public/terrain/18/429264/177019.terrain differ diff --git a/public/terrain/18/429264/177020.terrain b/public/terrain/18/429264/177020.terrain new file mode 100644 index 000000000..74ca63d89 Binary files /dev/null and b/public/terrain/18/429264/177020.terrain differ diff --git a/public/terrain/18/429264/177021.terrain b/public/terrain/18/429264/177021.terrain new file mode 100644 index 000000000..032c771ee Binary files /dev/null and b/public/terrain/18/429264/177021.terrain differ diff --git a/public/terrain/18/429264/177022.terrain b/public/terrain/18/429264/177022.terrain new file mode 100644 index 000000000..6a6fa9627 Binary files /dev/null and b/public/terrain/18/429264/177022.terrain differ diff --git a/public/terrain/18/429264/177023.terrain b/public/terrain/18/429264/177023.terrain new file mode 100644 index 000000000..d62169f9a Binary files /dev/null and b/public/terrain/18/429264/177023.terrain differ diff --git a/public/terrain/18/429264/177024.terrain b/public/terrain/18/429264/177024.terrain new file mode 100644 index 000000000..c0d4bbf6c Binary files /dev/null and b/public/terrain/18/429264/177024.terrain differ diff --git a/public/terrain/18/429264/177025.terrain b/public/terrain/18/429264/177025.terrain new file mode 100644 index 000000000..8a2a52d6b Binary files /dev/null and b/public/terrain/18/429264/177025.terrain differ diff --git a/public/terrain/18/429264/177026.terrain b/public/terrain/18/429264/177026.terrain new file mode 100644 index 000000000..6bce155bb Binary files /dev/null and b/public/terrain/18/429264/177026.terrain differ diff --git a/public/terrain/18/429264/177027.terrain b/public/terrain/18/429264/177027.terrain new file mode 100644 index 000000000..2e072c450 Binary files /dev/null and b/public/terrain/18/429264/177027.terrain differ diff --git a/public/terrain/18/429264/177028.terrain b/public/terrain/18/429264/177028.terrain new file mode 100644 index 000000000..8911a19ee Binary files /dev/null and b/public/terrain/18/429264/177028.terrain differ diff --git a/public/terrain/18/429264/177029.terrain b/public/terrain/18/429264/177029.terrain new file mode 100644 index 000000000..12a25e393 Binary files /dev/null and b/public/terrain/18/429264/177029.terrain differ diff --git a/public/terrain/18/429265/176871.terrain b/public/terrain/18/429265/176871.terrain new file mode 100644 index 000000000..936b939d5 Binary files /dev/null and b/public/terrain/18/429265/176871.terrain differ diff --git a/public/terrain/18/429265/176872.terrain b/public/terrain/18/429265/176872.terrain new file mode 100644 index 000000000..99b571d8c Binary files /dev/null and b/public/terrain/18/429265/176872.terrain differ diff --git a/public/terrain/18/429265/176873.terrain b/public/terrain/18/429265/176873.terrain new file mode 100644 index 000000000..edacd15ec Binary files /dev/null and b/public/terrain/18/429265/176873.terrain differ diff --git a/public/terrain/18/429265/176874.terrain b/public/terrain/18/429265/176874.terrain new file mode 100644 index 000000000..879b289d5 Binary files /dev/null and b/public/terrain/18/429265/176874.terrain differ diff --git a/public/terrain/18/429265/176875.terrain b/public/terrain/18/429265/176875.terrain new file mode 100644 index 000000000..d27b99a05 Binary files /dev/null and b/public/terrain/18/429265/176875.terrain differ diff --git a/public/terrain/18/429265/176876.terrain b/public/terrain/18/429265/176876.terrain new file mode 100644 index 000000000..42d1e7f7a Binary files /dev/null and b/public/terrain/18/429265/176876.terrain differ diff --git a/public/terrain/18/429265/176877.terrain b/public/terrain/18/429265/176877.terrain new file mode 100644 index 000000000..6a23aff10 Binary files /dev/null and b/public/terrain/18/429265/176877.terrain differ diff --git a/public/terrain/18/429265/176878.terrain b/public/terrain/18/429265/176878.terrain new file mode 100644 index 000000000..5fb5dc780 Binary files /dev/null and b/public/terrain/18/429265/176878.terrain differ diff --git a/public/terrain/18/429265/176879.terrain b/public/terrain/18/429265/176879.terrain new file mode 100644 index 000000000..5b503a33b Binary files /dev/null and b/public/terrain/18/429265/176879.terrain differ diff --git a/public/terrain/18/429265/176880.terrain b/public/terrain/18/429265/176880.terrain new file mode 100644 index 000000000..bbfee2ac4 Binary files /dev/null and b/public/terrain/18/429265/176880.terrain differ diff --git a/public/terrain/18/429265/176881.terrain b/public/terrain/18/429265/176881.terrain new file mode 100644 index 000000000..7171d1cc1 Binary files /dev/null and b/public/terrain/18/429265/176881.terrain differ diff --git a/public/terrain/18/429265/176882.terrain b/public/terrain/18/429265/176882.terrain new file mode 100644 index 000000000..be4de9b0f Binary files /dev/null and b/public/terrain/18/429265/176882.terrain differ diff --git a/public/terrain/18/429265/176883.terrain b/public/terrain/18/429265/176883.terrain new file mode 100644 index 000000000..aceef5731 Binary files /dev/null and b/public/terrain/18/429265/176883.terrain differ diff --git a/public/terrain/18/429265/176884.terrain b/public/terrain/18/429265/176884.terrain new file mode 100644 index 000000000..9ae142511 Binary files /dev/null and b/public/terrain/18/429265/176884.terrain differ diff --git a/public/terrain/18/429265/176885.terrain b/public/terrain/18/429265/176885.terrain new file mode 100644 index 000000000..9219e0533 Binary files /dev/null and b/public/terrain/18/429265/176885.terrain differ diff --git a/public/terrain/18/429265/176886.terrain b/public/terrain/18/429265/176886.terrain new file mode 100644 index 000000000..71f182a11 Binary files /dev/null and b/public/terrain/18/429265/176886.terrain differ diff --git a/public/terrain/18/429265/176887.terrain b/public/terrain/18/429265/176887.terrain new file mode 100644 index 000000000..2202ad115 Binary files /dev/null and b/public/terrain/18/429265/176887.terrain differ diff --git a/public/terrain/18/429265/176888.terrain b/public/terrain/18/429265/176888.terrain new file mode 100644 index 000000000..0194b6c15 Binary files /dev/null and b/public/terrain/18/429265/176888.terrain differ diff --git a/public/terrain/18/429265/176889.terrain b/public/terrain/18/429265/176889.terrain new file mode 100644 index 000000000..9362bc364 Binary files /dev/null and b/public/terrain/18/429265/176889.terrain differ diff --git a/public/terrain/18/429265/176890.terrain b/public/terrain/18/429265/176890.terrain new file mode 100644 index 000000000..0def87ae6 Binary files /dev/null and b/public/terrain/18/429265/176890.terrain differ diff --git a/public/terrain/18/429265/176891.terrain b/public/terrain/18/429265/176891.terrain new file mode 100644 index 000000000..7b340f35e Binary files /dev/null and b/public/terrain/18/429265/176891.terrain differ diff --git a/public/terrain/18/429265/176892.terrain b/public/terrain/18/429265/176892.terrain new file mode 100644 index 000000000..a82381dff Binary files /dev/null and b/public/terrain/18/429265/176892.terrain differ diff --git a/public/terrain/18/429265/176893.terrain b/public/terrain/18/429265/176893.terrain new file mode 100644 index 000000000..ffd53e5b9 Binary files /dev/null and b/public/terrain/18/429265/176893.terrain differ diff --git a/public/terrain/18/429265/176894.terrain b/public/terrain/18/429265/176894.terrain new file mode 100644 index 000000000..d7f3c6a6b Binary files /dev/null and b/public/terrain/18/429265/176894.terrain differ diff --git a/public/terrain/18/429265/176895.terrain b/public/terrain/18/429265/176895.terrain new file mode 100644 index 000000000..409c11489 Binary files /dev/null and b/public/terrain/18/429265/176895.terrain differ diff --git a/public/terrain/18/429265/176896.terrain b/public/terrain/18/429265/176896.terrain new file mode 100644 index 000000000..3f293dfb9 Binary files /dev/null and b/public/terrain/18/429265/176896.terrain differ diff --git a/public/terrain/18/429265/176897.terrain b/public/terrain/18/429265/176897.terrain new file mode 100644 index 000000000..1bc59c787 Binary files /dev/null and b/public/terrain/18/429265/176897.terrain differ diff --git a/public/terrain/18/429265/176898.terrain b/public/terrain/18/429265/176898.terrain new file mode 100644 index 000000000..1ed5a5eca Binary files /dev/null and b/public/terrain/18/429265/176898.terrain differ diff --git a/public/terrain/18/429265/176899.terrain b/public/terrain/18/429265/176899.terrain new file mode 100644 index 000000000..de68a9308 Binary files /dev/null and b/public/terrain/18/429265/176899.terrain differ diff --git a/public/terrain/18/429265/176900.terrain b/public/terrain/18/429265/176900.terrain new file mode 100644 index 000000000..bc0d647f0 Binary files /dev/null and b/public/terrain/18/429265/176900.terrain differ diff --git a/public/terrain/18/429265/176901.terrain b/public/terrain/18/429265/176901.terrain new file mode 100644 index 000000000..66dd3fa6e Binary files /dev/null and b/public/terrain/18/429265/176901.terrain differ diff --git a/public/terrain/18/429265/176902.terrain b/public/terrain/18/429265/176902.terrain new file mode 100644 index 000000000..c2d32e2cd Binary files /dev/null and b/public/terrain/18/429265/176902.terrain differ diff --git a/public/terrain/18/429265/176903.terrain b/public/terrain/18/429265/176903.terrain new file mode 100644 index 000000000..fcbb4adea Binary files /dev/null and b/public/terrain/18/429265/176903.terrain differ diff --git a/public/terrain/18/429265/176904.terrain b/public/terrain/18/429265/176904.terrain new file mode 100644 index 000000000..ad9b04c8f Binary files /dev/null and b/public/terrain/18/429265/176904.terrain differ diff --git a/public/terrain/18/429265/176905.terrain b/public/terrain/18/429265/176905.terrain new file mode 100644 index 000000000..97dc4173e Binary files /dev/null and b/public/terrain/18/429265/176905.terrain differ diff --git a/public/terrain/18/429265/176906.terrain b/public/terrain/18/429265/176906.terrain new file mode 100644 index 000000000..f4576139d Binary files /dev/null and b/public/terrain/18/429265/176906.terrain differ diff --git a/public/terrain/18/429265/176907.terrain b/public/terrain/18/429265/176907.terrain new file mode 100644 index 000000000..6afd943a9 Binary files /dev/null and b/public/terrain/18/429265/176907.terrain differ diff --git a/public/terrain/18/429265/176908.terrain b/public/terrain/18/429265/176908.terrain new file mode 100644 index 000000000..b1721af9e Binary files /dev/null and b/public/terrain/18/429265/176908.terrain differ diff --git a/public/terrain/18/429265/176909.terrain b/public/terrain/18/429265/176909.terrain new file mode 100644 index 000000000..db3080edd Binary files /dev/null and b/public/terrain/18/429265/176909.terrain differ diff --git a/public/terrain/18/429265/176910.terrain b/public/terrain/18/429265/176910.terrain new file mode 100644 index 000000000..d7b9bd23f Binary files /dev/null and b/public/terrain/18/429265/176910.terrain differ diff --git a/public/terrain/18/429265/176911.terrain b/public/terrain/18/429265/176911.terrain new file mode 100644 index 000000000..f05d4b457 Binary files /dev/null and b/public/terrain/18/429265/176911.terrain differ diff --git a/public/terrain/18/429265/176912.terrain b/public/terrain/18/429265/176912.terrain new file mode 100644 index 000000000..ddee96eef Binary files /dev/null and b/public/terrain/18/429265/176912.terrain differ diff --git a/public/terrain/18/429265/176913.terrain b/public/terrain/18/429265/176913.terrain new file mode 100644 index 000000000..366314069 Binary files /dev/null and b/public/terrain/18/429265/176913.terrain differ diff --git a/public/terrain/18/429265/176914.terrain b/public/terrain/18/429265/176914.terrain new file mode 100644 index 000000000..82fe08faf Binary files /dev/null and b/public/terrain/18/429265/176914.terrain differ diff --git a/public/terrain/18/429265/176915.terrain b/public/terrain/18/429265/176915.terrain new file mode 100644 index 000000000..846cebfb1 Binary files /dev/null and b/public/terrain/18/429265/176915.terrain differ diff --git a/public/terrain/18/429265/176916.terrain b/public/terrain/18/429265/176916.terrain new file mode 100644 index 000000000..1b8a72630 Binary files /dev/null and b/public/terrain/18/429265/176916.terrain differ diff --git a/public/terrain/18/429265/176917.terrain b/public/terrain/18/429265/176917.terrain new file mode 100644 index 000000000..5ecf28dfb Binary files /dev/null and b/public/terrain/18/429265/176917.terrain differ diff --git a/public/terrain/18/429265/176918.terrain b/public/terrain/18/429265/176918.terrain new file mode 100644 index 000000000..15dc155b2 Binary files /dev/null and b/public/terrain/18/429265/176918.terrain differ diff --git a/public/terrain/18/429265/176919.terrain b/public/terrain/18/429265/176919.terrain new file mode 100644 index 000000000..882b20505 Binary files /dev/null and b/public/terrain/18/429265/176919.terrain differ diff --git a/public/terrain/18/429265/176920.terrain b/public/terrain/18/429265/176920.terrain new file mode 100644 index 000000000..3b9acd5f1 Binary files /dev/null and b/public/terrain/18/429265/176920.terrain differ diff --git a/public/terrain/18/429265/176921.terrain b/public/terrain/18/429265/176921.terrain new file mode 100644 index 000000000..0603ceff7 Binary files /dev/null and b/public/terrain/18/429265/176921.terrain differ diff --git a/public/terrain/18/429265/176922.terrain b/public/terrain/18/429265/176922.terrain new file mode 100644 index 000000000..bb06c1727 Binary files /dev/null and b/public/terrain/18/429265/176922.terrain differ diff --git a/public/terrain/18/429265/176923.terrain b/public/terrain/18/429265/176923.terrain new file mode 100644 index 000000000..aaced20b5 Binary files /dev/null and b/public/terrain/18/429265/176923.terrain differ diff --git a/public/terrain/18/429265/176924.terrain b/public/terrain/18/429265/176924.terrain new file mode 100644 index 000000000..71466fc1f Binary files /dev/null and b/public/terrain/18/429265/176924.terrain differ diff --git a/public/terrain/18/429265/176925.terrain b/public/terrain/18/429265/176925.terrain new file mode 100644 index 000000000..2cf31b6bb Binary files /dev/null and b/public/terrain/18/429265/176925.terrain differ diff --git a/public/terrain/18/429265/176926.terrain b/public/terrain/18/429265/176926.terrain new file mode 100644 index 000000000..3016cd4ba Binary files /dev/null and b/public/terrain/18/429265/176926.terrain differ diff --git a/public/terrain/18/429265/176927.terrain b/public/terrain/18/429265/176927.terrain new file mode 100644 index 000000000..173c08068 Binary files /dev/null and b/public/terrain/18/429265/176927.terrain differ diff --git a/public/terrain/18/429265/176928.terrain b/public/terrain/18/429265/176928.terrain new file mode 100644 index 000000000..e07f2bb19 Binary files /dev/null and b/public/terrain/18/429265/176928.terrain differ diff --git a/public/terrain/18/429265/176929.terrain b/public/terrain/18/429265/176929.terrain new file mode 100644 index 000000000..985b31d9e Binary files /dev/null and b/public/terrain/18/429265/176929.terrain differ diff --git a/public/terrain/18/429265/176930.terrain b/public/terrain/18/429265/176930.terrain new file mode 100644 index 000000000..4e1b5e197 Binary files /dev/null and b/public/terrain/18/429265/176930.terrain differ diff --git a/public/terrain/18/429265/176931.terrain b/public/terrain/18/429265/176931.terrain new file mode 100644 index 000000000..9998175f6 Binary files /dev/null and b/public/terrain/18/429265/176931.terrain differ diff --git a/public/terrain/18/429265/176932.terrain b/public/terrain/18/429265/176932.terrain new file mode 100644 index 000000000..b1f0216ea Binary files /dev/null and b/public/terrain/18/429265/176932.terrain differ diff --git a/public/terrain/18/429265/176933.terrain b/public/terrain/18/429265/176933.terrain new file mode 100644 index 000000000..c05a6f292 Binary files /dev/null and b/public/terrain/18/429265/176933.terrain differ diff --git a/public/terrain/18/429265/176934.terrain b/public/terrain/18/429265/176934.terrain new file mode 100644 index 000000000..ba50592c7 Binary files /dev/null and b/public/terrain/18/429265/176934.terrain differ diff --git a/public/terrain/18/429265/176935.terrain b/public/terrain/18/429265/176935.terrain new file mode 100644 index 000000000..d2c7bfe23 Binary files /dev/null and b/public/terrain/18/429265/176935.terrain differ diff --git a/public/terrain/18/429265/176936.terrain b/public/terrain/18/429265/176936.terrain new file mode 100644 index 000000000..00ca90668 Binary files /dev/null and b/public/terrain/18/429265/176936.terrain differ diff --git a/public/terrain/18/429265/176937.terrain b/public/terrain/18/429265/176937.terrain new file mode 100644 index 000000000..d41d7cfd9 Binary files /dev/null and b/public/terrain/18/429265/176937.terrain differ diff --git a/public/terrain/18/429265/176938.terrain b/public/terrain/18/429265/176938.terrain new file mode 100644 index 000000000..54dc83325 Binary files /dev/null and b/public/terrain/18/429265/176938.terrain differ diff --git a/public/terrain/18/429265/176939.terrain b/public/terrain/18/429265/176939.terrain new file mode 100644 index 000000000..e5acbef8c Binary files /dev/null and b/public/terrain/18/429265/176939.terrain differ diff --git a/public/terrain/18/429265/176940.terrain b/public/terrain/18/429265/176940.terrain new file mode 100644 index 000000000..2f24500d7 Binary files /dev/null and b/public/terrain/18/429265/176940.terrain differ diff --git a/public/terrain/18/429265/176941.terrain b/public/terrain/18/429265/176941.terrain new file mode 100644 index 000000000..8d477da8e Binary files /dev/null and b/public/terrain/18/429265/176941.terrain differ diff --git a/public/terrain/18/429265/176942.terrain b/public/terrain/18/429265/176942.terrain new file mode 100644 index 000000000..dc922becf Binary files /dev/null and b/public/terrain/18/429265/176942.terrain differ diff --git a/public/terrain/18/429265/176943.terrain b/public/terrain/18/429265/176943.terrain new file mode 100644 index 000000000..5ff1bd9b6 Binary files /dev/null and b/public/terrain/18/429265/176943.terrain differ diff --git a/public/terrain/18/429265/176944.terrain b/public/terrain/18/429265/176944.terrain new file mode 100644 index 000000000..f0192e7ae Binary files /dev/null and b/public/terrain/18/429265/176944.terrain differ diff --git a/public/terrain/18/429265/176945.terrain b/public/terrain/18/429265/176945.terrain new file mode 100644 index 000000000..85997d538 Binary files /dev/null and b/public/terrain/18/429265/176945.terrain differ diff --git a/public/terrain/18/429265/176946.terrain b/public/terrain/18/429265/176946.terrain new file mode 100644 index 000000000..64d2eba49 Binary files /dev/null and b/public/terrain/18/429265/176946.terrain differ diff --git a/public/terrain/18/429265/176947.terrain b/public/terrain/18/429265/176947.terrain new file mode 100644 index 000000000..4a4439af5 Binary files /dev/null and b/public/terrain/18/429265/176947.terrain differ diff --git a/public/terrain/18/429265/176948.terrain b/public/terrain/18/429265/176948.terrain new file mode 100644 index 000000000..db3b87e14 Binary files /dev/null and b/public/terrain/18/429265/176948.terrain differ diff --git a/public/terrain/18/429265/176949.terrain b/public/terrain/18/429265/176949.terrain new file mode 100644 index 000000000..d985a8fce Binary files /dev/null and b/public/terrain/18/429265/176949.terrain differ diff --git a/public/terrain/18/429265/176950.terrain b/public/terrain/18/429265/176950.terrain new file mode 100644 index 000000000..3a0931ed8 Binary files /dev/null and b/public/terrain/18/429265/176950.terrain differ diff --git a/public/terrain/18/429265/176951.terrain b/public/terrain/18/429265/176951.terrain new file mode 100644 index 000000000..27e2e1050 Binary files /dev/null and b/public/terrain/18/429265/176951.terrain differ diff --git a/public/terrain/18/429265/176952.terrain b/public/terrain/18/429265/176952.terrain new file mode 100644 index 000000000..06d041c2c Binary files /dev/null and b/public/terrain/18/429265/176952.terrain differ diff --git a/public/terrain/18/429265/176953.terrain b/public/terrain/18/429265/176953.terrain new file mode 100644 index 000000000..3c54359db Binary files /dev/null and b/public/terrain/18/429265/176953.terrain differ diff --git a/public/terrain/18/429265/176954.terrain b/public/terrain/18/429265/176954.terrain new file mode 100644 index 000000000..16c373be6 Binary files /dev/null and b/public/terrain/18/429265/176954.terrain differ diff --git a/public/terrain/18/429265/176955.terrain b/public/terrain/18/429265/176955.terrain new file mode 100644 index 000000000..eb0c66ecd Binary files /dev/null and b/public/terrain/18/429265/176955.terrain differ diff --git a/public/terrain/18/429265/176956.terrain b/public/terrain/18/429265/176956.terrain new file mode 100644 index 000000000..18c2e7044 Binary files /dev/null and b/public/terrain/18/429265/176956.terrain differ diff --git a/public/terrain/18/429265/176957.terrain b/public/terrain/18/429265/176957.terrain new file mode 100644 index 000000000..1968a2866 Binary files /dev/null and b/public/terrain/18/429265/176957.terrain differ diff --git a/public/terrain/18/429265/176958.terrain b/public/terrain/18/429265/176958.terrain new file mode 100644 index 000000000..cfb6fe278 Binary files /dev/null and b/public/terrain/18/429265/176958.terrain differ diff --git a/public/terrain/18/429265/176959.terrain b/public/terrain/18/429265/176959.terrain new file mode 100644 index 000000000..a5a43ad5a Binary files /dev/null and b/public/terrain/18/429265/176959.terrain differ diff --git a/public/terrain/18/429265/176960.terrain b/public/terrain/18/429265/176960.terrain new file mode 100644 index 000000000..da7fe4dd9 Binary files /dev/null and b/public/terrain/18/429265/176960.terrain differ diff --git a/public/terrain/18/429265/176961.terrain b/public/terrain/18/429265/176961.terrain new file mode 100644 index 000000000..aa1e8f0e0 Binary files /dev/null and b/public/terrain/18/429265/176961.terrain differ diff --git a/public/terrain/18/429265/176962.terrain b/public/terrain/18/429265/176962.terrain new file mode 100644 index 000000000..64f8e5a8b Binary files /dev/null and b/public/terrain/18/429265/176962.terrain differ diff --git a/public/terrain/18/429265/176963.terrain b/public/terrain/18/429265/176963.terrain new file mode 100644 index 000000000..bcf410d85 Binary files /dev/null and b/public/terrain/18/429265/176963.terrain differ diff --git a/public/terrain/18/429265/176964.terrain b/public/terrain/18/429265/176964.terrain new file mode 100644 index 000000000..faebbbe42 Binary files /dev/null and b/public/terrain/18/429265/176964.terrain differ diff --git a/public/terrain/18/429265/176965.terrain b/public/terrain/18/429265/176965.terrain new file mode 100644 index 000000000..f1f781fb6 Binary files /dev/null and b/public/terrain/18/429265/176965.terrain differ diff --git a/public/terrain/18/429265/176966.terrain b/public/terrain/18/429265/176966.terrain new file mode 100644 index 000000000..52e365b20 Binary files /dev/null and b/public/terrain/18/429265/176966.terrain differ diff --git a/public/terrain/18/429265/176967.terrain b/public/terrain/18/429265/176967.terrain new file mode 100644 index 000000000..105e7bec5 Binary files /dev/null and b/public/terrain/18/429265/176967.terrain differ diff --git a/public/terrain/18/429265/176968.terrain b/public/terrain/18/429265/176968.terrain new file mode 100644 index 000000000..9fb2bced9 Binary files /dev/null and b/public/terrain/18/429265/176968.terrain differ diff --git a/public/terrain/18/429265/176969.terrain b/public/terrain/18/429265/176969.terrain new file mode 100644 index 000000000..0bad9f595 Binary files /dev/null and b/public/terrain/18/429265/176969.terrain differ diff --git a/public/terrain/18/429265/176970.terrain b/public/terrain/18/429265/176970.terrain new file mode 100644 index 000000000..0eb863b11 Binary files /dev/null and b/public/terrain/18/429265/176970.terrain differ diff --git a/public/terrain/18/429265/176971.terrain b/public/terrain/18/429265/176971.terrain new file mode 100644 index 000000000..efee55c33 Binary files /dev/null and b/public/terrain/18/429265/176971.terrain differ diff --git a/public/terrain/18/429265/176972.terrain b/public/terrain/18/429265/176972.terrain new file mode 100644 index 000000000..0724457f2 Binary files /dev/null and b/public/terrain/18/429265/176972.terrain differ diff --git a/public/terrain/18/429265/176973.terrain b/public/terrain/18/429265/176973.terrain new file mode 100644 index 000000000..1cc6474b4 Binary files /dev/null and b/public/terrain/18/429265/176973.terrain differ diff --git a/public/terrain/18/429265/176974.terrain b/public/terrain/18/429265/176974.terrain new file mode 100644 index 000000000..176c39f2f Binary files /dev/null and b/public/terrain/18/429265/176974.terrain differ diff --git a/public/terrain/18/429265/176975.terrain b/public/terrain/18/429265/176975.terrain new file mode 100644 index 000000000..b13bf5b5b Binary files /dev/null and b/public/terrain/18/429265/176975.terrain differ diff --git a/public/terrain/18/429265/176976.terrain b/public/terrain/18/429265/176976.terrain new file mode 100644 index 000000000..23f810202 Binary files /dev/null and b/public/terrain/18/429265/176976.terrain differ diff --git a/public/terrain/18/429265/176977.terrain b/public/terrain/18/429265/176977.terrain new file mode 100644 index 000000000..3078d8a87 Binary files /dev/null and b/public/terrain/18/429265/176977.terrain differ diff --git a/public/terrain/18/429265/176978.terrain b/public/terrain/18/429265/176978.terrain new file mode 100644 index 000000000..d320a3f37 Binary files /dev/null and b/public/terrain/18/429265/176978.terrain differ diff --git a/public/terrain/18/429265/176979.terrain b/public/terrain/18/429265/176979.terrain new file mode 100644 index 000000000..cfddd447a Binary files /dev/null and b/public/terrain/18/429265/176979.terrain differ diff --git a/public/terrain/18/429265/176980.terrain b/public/terrain/18/429265/176980.terrain new file mode 100644 index 000000000..90c303015 Binary files /dev/null and b/public/terrain/18/429265/176980.terrain differ diff --git a/public/terrain/18/429265/176981.terrain b/public/terrain/18/429265/176981.terrain new file mode 100644 index 000000000..5fd71dfce Binary files /dev/null and b/public/terrain/18/429265/176981.terrain differ diff --git a/public/terrain/18/429265/176982.terrain b/public/terrain/18/429265/176982.terrain new file mode 100644 index 000000000..b766fabc8 Binary files /dev/null and b/public/terrain/18/429265/176982.terrain differ diff --git a/public/terrain/18/429265/176983.terrain b/public/terrain/18/429265/176983.terrain new file mode 100644 index 000000000..64aa54a05 Binary files /dev/null and b/public/terrain/18/429265/176983.terrain differ diff --git a/public/terrain/18/429265/176984.terrain b/public/terrain/18/429265/176984.terrain new file mode 100644 index 000000000..54f3dc243 Binary files /dev/null and b/public/terrain/18/429265/176984.terrain differ diff --git a/public/terrain/18/429265/176985.terrain b/public/terrain/18/429265/176985.terrain new file mode 100644 index 000000000..c2b329840 Binary files /dev/null and b/public/terrain/18/429265/176985.terrain differ diff --git a/public/terrain/18/429265/176986.terrain b/public/terrain/18/429265/176986.terrain new file mode 100644 index 000000000..e188e005f Binary files /dev/null and b/public/terrain/18/429265/176986.terrain differ diff --git a/public/terrain/18/429265/176987.terrain b/public/terrain/18/429265/176987.terrain new file mode 100644 index 000000000..ee13313fe Binary files /dev/null and b/public/terrain/18/429265/176987.terrain differ diff --git a/public/terrain/18/429265/176988.terrain b/public/terrain/18/429265/176988.terrain new file mode 100644 index 000000000..92acca804 Binary files /dev/null and b/public/terrain/18/429265/176988.terrain differ diff --git a/public/terrain/18/429265/176989.terrain b/public/terrain/18/429265/176989.terrain new file mode 100644 index 000000000..f57f5b1cc Binary files /dev/null and b/public/terrain/18/429265/176989.terrain differ diff --git a/public/terrain/18/429265/176990.terrain b/public/terrain/18/429265/176990.terrain new file mode 100644 index 000000000..3d3132e54 Binary files /dev/null and b/public/terrain/18/429265/176990.terrain differ diff --git a/public/terrain/18/429265/176991.terrain b/public/terrain/18/429265/176991.terrain new file mode 100644 index 000000000..fcc74d901 Binary files /dev/null and b/public/terrain/18/429265/176991.terrain differ diff --git a/public/terrain/18/429265/176992.terrain b/public/terrain/18/429265/176992.terrain new file mode 100644 index 000000000..0042c436a Binary files /dev/null and b/public/terrain/18/429265/176992.terrain differ diff --git a/public/terrain/18/429265/176993.terrain b/public/terrain/18/429265/176993.terrain new file mode 100644 index 000000000..8d670244d Binary files /dev/null and b/public/terrain/18/429265/176993.terrain differ diff --git a/public/terrain/18/429265/176994.terrain b/public/terrain/18/429265/176994.terrain new file mode 100644 index 000000000..183c0b4a7 Binary files /dev/null and b/public/terrain/18/429265/176994.terrain differ diff --git a/public/terrain/18/429265/176995.terrain b/public/terrain/18/429265/176995.terrain new file mode 100644 index 000000000..4e4161591 Binary files /dev/null and b/public/terrain/18/429265/176995.terrain differ diff --git a/public/terrain/18/429265/176996.terrain b/public/terrain/18/429265/176996.terrain new file mode 100644 index 000000000..03d393f98 Binary files /dev/null and b/public/terrain/18/429265/176996.terrain differ diff --git a/public/terrain/18/429265/176997.terrain b/public/terrain/18/429265/176997.terrain new file mode 100644 index 000000000..13dc1b873 Binary files /dev/null and b/public/terrain/18/429265/176997.terrain differ diff --git a/public/terrain/18/429265/176998.terrain b/public/terrain/18/429265/176998.terrain new file mode 100644 index 000000000..ce3ba42af Binary files /dev/null and b/public/terrain/18/429265/176998.terrain differ diff --git a/public/terrain/18/429265/176999.terrain b/public/terrain/18/429265/176999.terrain new file mode 100644 index 000000000..59d22899c Binary files /dev/null and b/public/terrain/18/429265/176999.terrain differ diff --git a/public/terrain/18/429265/177000.terrain b/public/terrain/18/429265/177000.terrain new file mode 100644 index 000000000..590d7a02d Binary files /dev/null and b/public/terrain/18/429265/177000.terrain differ diff --git a/public/terrain/18/429265/177001.terrain b/public/terrain/18/429265/177001.terrain new file mode 100644 index 000000000..1824dd021 Binary files /dev/null and b/public/terrain/18/429265/177001.terrain differ diff --git a/public/terrain/18/429265/177002.terrain b/public/terrain/18/429265/177002.terrain new file mode 100644 index 000000000..099129e91 Binary files /dev/null and b/public/terrain/18/429265/177002.terrain differ diff --git a/public/terrain/18/429265/177003.terrain b/public/terrain/18/429265/177003.terrain new file mode 100644 index 000000000..7900ed18c Binary files /dev/null and b/public/terrain/18/429265/177003.terrain differ diff --git a/public/terrain/18/429265/177004.terrain b/public/terrain/18/429265/177004.terrain new file mode 100644 index 000000000..743f5de8a Binary files /dev/null and b/public/terrain/18/429265/177004.terrain differ diff --git a/public/terrain/18/429265/177005.terrain b/public/terrain/18/429265/177005.terrain new file mode 100644 index 000000000..a6ca89762 Binary files /dev/null and b/public/terrain/18/429265/177005.terrain differ diff --git a/public/terrain/18/429265/177006.terrain b/public/terrain/18/429265/177006.terrain new file mode 100644 index 000000000..8694ccb1f Binary files /dev/null and b/public/terrain/18/429265/177006.terrain differ diff --git a/public/terrain/18/429265/177007.terrain b/public/terrain/18/429265/177007.terrain new file mode 100644 index 000000000..b35b98539 Binary files /dev/null and b/public/terrain/18/429265/177007.terrain differ diff --git a/public/terrain/18/429265/177008.terrain b/public/terrain/18/429265/177008.terrain new file mode 100644 index 000000000..45dd266b8 Binary files /dev/null and b/public/terrain/18/429265/177008.terrain differ diff --git a/public/terrain/18/429265/177009.terrain b/public/terrain/18/429265/177009.terrain new file mode 100644 index 000000000..a4887c197 Binary files /dev/null and b/public/terrain/18/429265/177009.terrain differ diff --git a/public/terrain/18/429265/177010.terrain b/public/terrain/18/429265/177010.terrain new file mode 100644 index 000000000..9420f5a19 Binary files /dev/null and b/public/terrain/18/429265/177010.terrain differ diff --git a/public/terrain/18/429265/177011.terrain b/public/terrain/18/429265/177011.terrain new file mode 100644 index 000000000..df5c9590d Binary files /dev/null and b/public/terrain/18/429265/177011.terrain differ diff --git a/public/terrain/18/429265/177012.terrain b/public/terrain/18/429265/177012.terrain new file mode 100644 index 000000000..3b7ab9c30 Binary files /dev/null and b/public/terrain/18/429265/177012.terrain differ diff --git a/public/terrain/18/429265/177013.terrain b/public/terrain/18/429265/177013.terrain new file mode 100644 index 000000000..86b350f95 Binary files /dev/null and b/public/terrain/18/429265/177013.terrain differ diff --git a/public/terrain/18/429265/177014.terrain b/public/terrain/18/429265/177014.terrain new file mode 100644 index 000000000..3a4d69b1c Binary files /dev/null and b/public/terrain/18/429265/177014.terrain differ diff --git a/public/terrain/18/429265/177015.terrain b/public/terrain/18/429265/177015.terrain new file mode 100644 index 000000000..1074b1686 Binary files /dev/null and b/public/terrain/18/429265/177015.terrain differ diff --git a/public/terrain/18/429265/177016.terrain b/public/terrain/18/429265/177016.terrain new file mode 100644 index 000000000..2ddd3073d Binary files /dev/null and b/public/terrain/18/429265/177016.terrain differ diff --git a/public/terrain/18/429265/177017.terrain b/public/terrain/18/429265/177017.terrain new file mode 100644 index 000000000..aec1643d8 Binary files /dev/null and b/public/terrain/18/429265/177017.terrain differ diff --git a/public/terrain/18/429265/177018.terrain b/public/terrain/18/429265/177018.terrain new file mode 100644 index 000000000..a56866d41 Binary files /dev/null and b/public/terrain/18/429265/177018.terrain differ diff --git a/public/terrain/18/429265/177019.terrain b/public/terrain/18/429265/177019.terrain new file mode 100644 index 000000000..32fea1800 Binary files /dev/null and b/public/terrain/18/429265/177019.terrain differ diff --git a/public/terrain/18/429265/177020.terrain b/public/terrain/18/429265/177020.terrain new file mode 100644 index 000000000..96d1a3fb1 Binary files /dev/null and b/public/terrain/18/429265/177020.terrain differ diff --git a/public/terrain/18/429265/177021.terrain b/public/terrain/18/429265/177021.terrain new file mode 100644 index 000000000..690f8d820 Binary files /dev/null and b/public/terrain/18/429265/177021.terrain differ diff --git a/public/terrain/18/429265/177022.terrain b/public/terrain/18/429265/177022.terrain new file mode 100644 index 000000000..21469dd3c Binary files /dev/null and b/public/terrain/18/429265/177022.terrain differ diff --git a/public/terrain/18/429265/177023.terrain b/public/terrain/18/429265/177023.terrain new file mode 100644 index 000000000..fd090e9aa Binary files /dev/null and b/public/terrain/18/429265/177023.terrain differ diff --git a/public/terrain/18/429265/177024.terrain b/public/terrain/18/429265/177024.terrain new file mode 100644 index 000000000..e395133f7 Binary files /dev/null and b/public/terrain/18/429265/177024.terrain differ diff --git a/public/terrain/18/429265/177025.terrain b/public/terrain/18/429265/177025.terrain new file mode 100644 index 000000000..43584db1e Binary files /dev/null and b/public/terrain/18/429265/177025.terrain differ diff --git a/public/terrain/18/429265/177026.terrain b/public/terrain/18/429265/177026.terrain new file mode 100644 index 000000000..692a15293 Binary files /dev/null and b/public/terrain/18/429265/177026.terrain differ diff --git a/public/terrain/18/429265/177027.terrain b/public/terrain/18/429265/177027.terrain new file mode 100644 index 000000000..69576e1a8 Binary files /dev/null and b/public/terrain/18/429265/177027.terrain differ diff --git a/public/terrain/18/429265/177028.terrain b/public/terrain/18/429265/177028.terrain new file mode 100644 index 000000000..d37e9518f Binary files /dev/null and b/public/terrain/18/429265/177028.terrain differ diff --git a/public/terrain/18/429265/177029.terrain b/public/terrain/18/429265/177029.terrain new file mode 100644 index 000000000..7d9d75fba Binary files /dev/null and b/public/terrain/18/429265/177029.terrain differ diff --git a/public/terrain/18/429266/176871.terrain b/public/terrain/18/429266/176871.terrain new file mode 100644 index 000000000..f5fd43bd8 Binary files /dev/null and b/public/terrain/18/429266/176871.terrain differ diff --git a/public/terrain/18/429266/176872.terrain b/public/terrain/18/429266/176872.terrain new file mode 100644 index 000000000..defa26ad4 Binary files /dev/null and b/public/terrain/18/429266/176872.terrain differ diff --git a/public/terrain/18/429266/176873.terrain b/public/terrain/18/429266/176873.terrain new file mode 100644 index 000000000..1940e966f Binary files /dev/null and b/public/terrain/18/429266/176873.terrain differ diff --git a/public/terrain/18/429266/176874.terrain b/public/terrain/18/429266/176874.terrain new file mode 100644 index 000000000..003fbfede Binary files /dev/null and b/public/terrain/18/429266/176874.terrain differ diff --git a/public/terrain/18/429266/176875.terrain b/public/terrain/18/429266/176875.terrain new file mode 100644 index 000000000..aea01b139 Binary files /dev/null and b/public/terrain/18/429266/176875.terrain differ diff --git a/public/terrain/18/429266/176876.terrain b/public/terrain/18/429266/176876.terrain new file mode 100644 index 000000000..168292217 Binary files /dev/null and b/public/terrain/18/429266/176876.terrain differ diff --git a/public/terrain/18/429266/176877.terrain b/public/terrain/18/429266/176877.terrain new file mode 100644 index 000000000..9f3001fcb Binary files /dev/null and b/public/terrain/18/429266/176877.terrain differ diff --git a/public/terrain/18/429266/176878.terrain b/public/terrain/18/429266/176878.terrain new file mode 100644 index 000000000..a272dc4c3 Binary files /dev/null and b/public/terrain/18/429266/176878.terrain differ diff --git a/public/terrain/18/429266/176879.terrain b/public/terrain/18/429266/176879.terrain new file mode 100644 index 000000000..c91cc2ad0 Binary files /dev/null and b/public/terrain/18/429266/176879.terrain differ diff --git a/public/terrain/18/429266/176880.terrain b/public/terrain/18/429266/176880.terrain new file mode 100644 index 000000000..b686ae2ff Binary files /dev/null and b/public/terrain/18/429266/176880.terrain differ diff --git a/public/terrain/18/429266/176881.terrain b/public/terrain/18/429266/176881.terrain new file mode 100644 index 000000000..232396760 Binary files /dev/null and b/public/terrain/18/429266/176881.terrain differ diff --git a/public/terrain/18/429266/176882.terrain b/public/terrain/18/429266/176882.terrain new file mode 100644 index 000000000..0829381b0 Binary files /dev/null and b/public/terrain/18/429266/176882.terrain differ diff --git a/public/terrain/18/429266/176883.terrain b/public/terrain/18/429266/176883.terrain new file mode 100644 index 000000000..ffb6c2e0c Binary files /dev/null and b/public/terrain/18/429266/176883.terrain differ diff --git a/public/terrain/18/429266/176884.terrain b/public/terrain/18/429266/176884.terrain new file mode 100644 index 000000000..d8ca7f14f Binary files /dev/null and b/public/terrain/18/429266/176884.terrain differ diff --git a/public/terrain/18/429266/176885.terrain b/public/terrain/18/429266/176885.terrain new file mode 100644 index 000000000..60aba5c7b Binary files /dev/null and b/public/terrain/18/429266/176885.terrain differ diff --git a/public/terrain/18/429266/176886.terrain b/public/terrain/18/429266/176886.terrain new file mode 100644 index 000000000..9a7b77165 Binary files /dev/null and b/public/terrain/18/429266/176886.terrain differ diff --git a/public/terrain/18/429266/176887.terrain b/public/terrain/18/429266/176887.terrain new file mode 100644 index 000000000..ff3f84b4d Binary files /dev/null and b/public/terrain/18/429266/176887.terrain differ diff --git a/public/terrain/18/429266/176888.terrain b/public/terrain/18/429266/176888.terrain new file mode 100644 index 000000000..fa4c6a04a Binary files /dev/null and b/public/terrain/18/429266/176888.terrain differ diff --git a/public/terrain/18/429266/176889.terrain b/public/terrain/18/429266/176889.terrain new file mode 100644 index 000000000..c127cba36 Binary files /dev/null and b/public/terrain/18/429266/176889.terrain differ diff --git a/public/terrain/18/429266/176890.terrain b/public/terrain/18/429266/176890.terrain new file mode 100644 index 000000000..5859f473d Binary files /dev/null and b/public/terrain/18/429266/176890.terrain differ diff --git a/public/terrain/18/429266/176891.terrain b/public/terrain/18/429266/176891.terrain new file mode 100644 index 000000000..d198cb04c Binary files /dev/null and b/public/terrain/18/429266/176891.terrain differ diff --git a/public/terrain/18/429266/176892.terrain b/public/terrain/18/429266/176892.terrain new file mode 100644 index 000000000..6d988f851 Binary files /dev/null and b/public/terrain/18/429266/176892.terrain differ diff --git a/public/terrain/18/429266/176893.terrain b/public/terrain/18/429266/176893.terrain new file mode 100644 index 000000000..f3f609964 Binary files /dev/null and b/public/terrain/18/429266/176893.terrain differ diff --git a/public/terrain/18/429266/176894.terrain b/public/terrain/18/429266/176894.terrain new file mode 100644 index 000000000..2efc04497 Binary files /dev/null and b/public/terrain/18/429266/176894.terrain differ diff --git a/public/terrain/18/429266/176895.terrain b/public/terrain/18/429266/176895.terrain new file mode 100644 index 000000000..c3b18369c Binary files /dev/null and b/public/terrain/18/429266/176895.terrain differ diff --git a/public/terrain/18/429266/176896.terrain b/public/terrain/18/429266/176896.terrain new file mode 100644 index 000000000..40f59e6b2 Binary files /dev/null and b/public/terrain/18/429266/176896.terrain differ diff --git a/public/terrain/18/429266/176897.terrain b/public/terrain/18/429266/176897.terrain new file mode 100644 index 000000000..5eb15c4e3 Binary files /dev/null and b/public/terrain/18/429266/176897.terrain differ diff --git a/public/terrain/18/429266/176898.terrain b/public/terrain/18/429266/176898.terrain new file mode 100644 index 000000000..bb1d68129 Binary files /dev/null and b/public/terrain/18/429266/176898.terrain differ diff --git a/public/terrain/18/429266/176899.terrain b/public/terrain/18/429266/176899.terrain new file mode 100644 index 000000000..64320336e Binary files /dev/null and b/public/terrain/18/429266/176899.terrain differ diff --git a/public/terrain/18/429266/176900.terrain b/public/terrain/18/429266/176900.terrain new file mode 100644 index 000000000..3edd07397 Binary files /dev/null and b/public/terrain/18/429266/176900.terrain differ diff --git a/public/terrain/18/429266/176901.terrain b/public/terrain/18/429266/176901.terrain new file mode 100644 index 000000000..ff3bad844 Binary files /dev/null and b/public/terrain/18/429266/176901.terrain differ diff --git a/public/terrain/18/429266/176902.terrain b/public/terrain/18/429266/176902.terrain new file mode 100644 index 000000000..1bcc5baf7 Binary files /dev/null and b/public/terrain/18/429266/176902.terrain differ diff --git a/public/terrain/18/429266/176903.terrain b/public/terrain/18/429266/176903.terrain new file mode 100644 index 000000000..0587abec6 Binary files /dev/null and b/public/terrain/18/429266/176903.terrain differ diff --git a/public/terrain/18/429266/176904.terrain b/public/terrain/18/429266/176904.terrain new file mode 100644 index 000000000..16ea0f06f Binary files /dev/null and b/public/terrain/18/429266/176904.terrain differ diff --git a/public/terrain/18/429266/176905.terrain b/public/terrain/18/429266/176905.terrain new file mode 100644 index 000000000..35bac9b55 Binary files /dev/null and b/public/terrain/18/429266/176905.terrain differ diff --git a/public/terrain/18/429266/176906.terrain b/public/terrain/18/429266/176906.terrain new file mode 100644 index 000000000..aca93ad68 Binary files /dev/null and b/public/terrain/18/429266/176906.terrain differ diff --git a/public/terrain/18/429266/176907.terrain b/public/terrain/18/429266/176907.terrain new file mode 100644 index 000000000..251c7f46b Binary files /dev/null and b/public/terrain/18/429266/176907.terrain differ diff --git a/public/terrain/18/429266/176908.terrain b/public/terrain/18/429266/176908.terrain new file mode 100644 index 000000000..0ec14d67b Binary files /dev/null and b/public/terrain/18/429266/176908.terrain differ diff --git a/public/terrain/18/429266/176909.terrain b/public/terrain/18/429266/176909.terrain new file mode 100644 index 000000000..15ecf5c29 Binary files /dev/null and b/public/terrain/18/429266/176909.terrain differ diff --git a/public/terrain/18/429266/176910.terrain b/public/terrain/18/429266/176910.terrain new file mode 100644 index 000000000..3512f5200 Binary files /dev/null and b/public/terrain/18/429266/176910.terrain differ diff --git a/public/terrain/18/429266/176911.terrain b/public/terrain/18/429266/176911.terrain new file mode 100644 index 000000000..fd81aa540 Binary files /dev/null and b/public/terrain/18/429266/176911.terrain differ diff --git a/public/terrain/18/429266/176912.terrain b/public/terrain/18/429266/176912.terrain new file mode 100644 index 000000000..534c6d4e2 Binary files /dev/null and b/public/terrain/18/429266/176912.terrain differ diff --git a/public/terrain/18/429266/176913.terrain b/public/terrain/18/429266/176913.terrain new file mode 100644 index 000000000..2bbf37dd6 Binary files /dev/null and b/public/terrain/18/429266/176913.terrain differ diff --git a/public/terrain/18/429266/176914.terrain b/public/terrain/18/429266/176914.terrain new file mode 100644 index 000000000..9e69ecf8a Binary files /dev/null and b/public/terrain/18/429266/176914.terrain differ diff --git a/public/terrain/18/429266/176915.terrain b/public/terrain/18/429266/176915.terrain new file mode 100644 index 000000000..1962d87d9 Binary files /dev/null and b/public/terrain/18/429266/176915.terrain differ diff --git a/public/terrain/18/429266/176916.terrain b/public/terrain/18/429266/176916.terrain new file mode 100644 index 000000000..376caa68e Binary files /dev/null and b/public/terrain/18/429266/176916.terrain differ diff --git a/public/terrain/18/429266/176917.terrain b/public/terrain/18/429266/176917.terrain new file mode 100644 index 000000000..79a45137f Binary files /dev/null and b/public/terrain/18/429266/176917.terrain differ diff --git a/public/terrain/18/429266/176918.terrain b/public/terrain/18/429266/176918.terrain new file mode 100644 index 000000000..099c1ad03 Binary files /dev/null and b/public/terrain/18/429266/176918.terrain differ diff --git a/public/terrain/18/429266/176919.terrain b/public/terrain/18/429266/176919.terrain new file mode 100644 index 000000000..41c082cf7 Binary files /dev/null and b/public/terrain/18/429266/176919.terrain differ diff --git a/public/terrain/18/429266/176920.terrain b/public/terrain/18/429266/176920.terrain new file mode 100644 index 000000000..5ee2b8880 Binary files /dev/null and b/public/terrain/18/429266/176920.terrain differ diff --git a/public/terrain/18/429266/176921.terrain b/public/terrain/18/429266/176921.terrain new file mode 100644 index 000000000..bca7447d7 Binary files /dev/null and b/public/terrain/18/429266/176921.terrain differ diff --git a/public/terrain/18/429266/176922.terrain b/public/terrain/18/429266/176922.terrain new file mode 100644 index 000000000..c21b2f8f5 Binary files /dev/null and b/public/terrain/18/429266/176922.terrain differ diff --git a/public/terrain/18/429266/176923.terrain b/public/terrain/18/429266/176923.terrain new file mode 100644 index 000000000..6aac36a71 Binary files /dev/null and b/public/terrain/18/429266/176923.terrain differ diff --git a/public/terrain/18/429266/176924.terrain b/public/terrain/18/429266/176924.terrain new file mode 100644 index 000000000..466c0140f Binary files /dev/null and b/public/terrain/18/429266/176924.terrain differ diff --git a/public/terrain/18/429266/176925.terrain b/public/terrain/18/429266/176925.terrain new file mode 100644 index 000000000..3b8e4f435 Binary files /dev/null and b/public/terrain/18/429266/176925.terrain differ diff --git a/public/terrain/18/429266/176926.terrain b/public/terrain/18/429266/176926.terrain new file mode 100644 index 000000000..e4fcbfaaf Binary files /dev/null and b/public/terrain/18/429266/176926.terrain differ diff --git a/public/terrain/18/429266/176927.terrain b/public/terrain/18/429266/176927.terrain new file mode 100644 index 000000000..6dbdf3479 Binary files /dev/null and b/public/terrain/18/429266/176927.terrain differ diff --git a/public/terrain/18/429266/176928.terrain b/public/terrain/18/429266/176928.terrain new file mode 100644 index 000000000..f7807e2e3 Binary files /dev/null and b/public/terrain/18/429266/176928.terrain differ diff --git a/public/terrain/18/429266/176929.terrain b/public/terrain/18/429266/176929.terrain new file mode 100644 index 000000000..8e278e114 Binary files /dev/null and b/public/terrain/18/429266/176929.terrain differ diff --git a/public/terrain/18/429266/176930.terrain b/public/terrain/18/429266/176930.terrain new file mode 100644 index 000000000..825413cfe Binary files /dev/null and b/public/terrain/18/429266/176930.terrain differ diff --git a/public/terrain/18/429266/176931.terrain b/public/terrain/18/429266/176931.terrain new file mode 100644 index 000000000..24c74d438 Binary files /dev/null and b/public/terrain/18/429266/176931.terrain differ diff --git a/public/terrain/18/429266/176932.terrain b/public/terrain/18/429266/176932.terrain new file mode 100644 index 000000000..fd3a87329 Binary files /dev/null and b/public/terrain/18/429266/176932.terrain differ diff --git a/public/terrain/18/429266/176933.terrain b/public/terrain/18/429266/176933.terrain new file mode 100644 index 000000000..39c34affd Binary files /dev/null and b/public/terrain/18/429266/176933.terrain differ diff --git a/public/terrain/18/429266/176934.terrain b/public/terrain/18/429266/176934.terrain new file mode 100644 index 000000000..4e46a9ff4 Binary files /dev/null and b/public/terrain/18/429266/176934.terrain differ diff --git a/public/terrain/18/429266/176935.terrain b/public/terrain/18/429266/176935.terrain new file mode 100644 index 000000000..1b536df63 Binary files /dev/null and b/public/terrain/18/429266/176935.terrain differ diff --git a/public/terrain/18/429266/176936.terrain b/public/terrain/18/429266/176936.terrain new file mode 100644 index 000000000..cb371e75a Binary files /dev/null and b/public/terrain/18/429266/176936.terrain differ diff --git a/public/terrain/18/429266/176937.terrain b/public/terrain/18/429266/176937.terrain new file mode 100644 index 000000000..e84e64ca2 Binary files /dev/null and b/public/terrain/18/429266/176937.terrain differ diff --git a/public/terrain/18/429266/176938.terrain b/public/terrain/18/429266/176938.terrain new file mode 100644 index 000000000..30225ba88 Binary files /dev/null and b/public/terrain/18/429266/176938.terrain differ diff --git a/public/terrain/18/429266/176939.terrain b/public/terrain/18/429266/176939.terrain new file mode 100644 index 000000000..2dc51bebb Binary files /dev/null and b/public/terrain/18/429266/176939.terrain differ diff --git a/public/terrain/18/429266/176940.terrain b/public/terrain/18/429266/176940.terrain new file mode 100644 index 000000000..336508e4f Binary files /dev/null and b/public/terrain/18/429266/176940.terrain differ diff --git a/public/terrain/18/429266/176941.terrain b/public/terrain/18/429266/176941.terrain new file mode 100644 index 000000000..8ab590981 Binary files /dev/null and b/public/terrain/18/429266/176941.terrain differ diff --git a/public/terrain/18/429266/176942.terrain b/public/terrain/18/429266/176942.terrain new file mode 100644 index 000000000..712fc0bba Binary files /dev/null and b/public/terrain/18/429266/176942.terrain differ diff --git a/public/terrain/18/429266/176943.terrain b/public/terrain/18/429266/176943.terrain new file mode 100644 index 000000000..04c20082b Binary files /dev/null and b/public/terrain/18/429266/176943.terrain differ diff --git a/public/terrain/18/429266/176944.terrain b/public/terrain/18/429266/176944.terrain new file mode 100644 index 000000000..6e5e28b6a Binary files /dev/null and b/public/terrain/18/429266/176944.terrain differ diff --git a/public/terrain/18/429266/176945.terrain b/public/terrain/18/429266/176945.terrain new file mode 100644 index 000000000..f9b471037 Binary files /dev/null and b/public/terrain/18/429266/176945.terrain differ diff --git a/public/terrain/18/429266/176946.terrain b/public/terrain/18/429266/176946.terrain new file mode 100644 index 000000000..ce3a124bd Binary files /dev/null and b/public/terrain/18/429266/176946.terrain differ diff --git a/public/terrain/18/429266/176947.terrain b/public/terrain/18/429266/176947.terrain new file mode 100644 index 000000000..5d5553b58 Binary files /dev/null and b/public/terrain/18/429266/176947.terrain differ diff --git a/public/terrain/18/429266/176948.terrain b/public/terrain/18/429266/176948.terrain new file mode 100644 index 000000000..f77117736 Binary files /dev/null and b/public/terrain/18/429266/176948.terrain differ diff --git a/public/terrain/18/429266/176949.terrain b/public/terrain/18/429266/176949.terrain new file mode 100644 index 000000000..3966eba1e Binary files /dev/null and b/public/terrain/18/429266/176949.terrain differ diff --git a/public/terrain/18/429266/176950.terrain b/public/terrain/18/429266/176950.terrain new file mode 100644 index 000000000..c44896b15 Binary files /dev/null and b/public/terrain/18/429266/176950.terrain differ diff --git a/public/terrain/18/429266/176951.terrain b/public/terrain/18/429266/176951.terrain new file mode 100644 index 000000000..f495842f8 Binary files /dev/null and b/public/terrain/18/429266/176951.terrain differ diff --git a/public/terrain/18/429266/176952.terrain b/public/terrain/18/429266/176952.terrain new file mode 100644 index 000000000..b7520b3b5 Binary files /dev/null and b/public/terrain/18/429266/176952.terrain differ diff --git a/public/terrain/18/429266/176953.terrain b/public/terrain/18/429266/176953.terrain new file mode 100644 index 000000000..435a9177d Binary files /dev/null and b/public/terrain/18/429266/176953.terrain differ diff --git a/public/terrain/18/429266/176954.terrain b/public/terrain/18/429266/176954.terrain new file mode 100644 index 000000000..dc1b1c4bf Binary files /dev/null and b/public/terrain/18/429266/176954.terrain differ diff --git a/public/terrain/18/429266/176955.terrain b/public/terrain/18/429266/176955.terrain new file mode 100644 index 000000000..3f94b9629 Binary files /dev/null and b/public/terrain/18/429266/176955.terrain differ diff --git a/public/terrain/18/429266/176956.terrain b/public/terrain/18/429266/176956.terrain new file mode 100644 index 000000000..7876d6396 Binary files /dev/null and b/public/terrain/18/429266/176956.terrain differ diff --git a/public/terrain/18/429266/176957.terrain b/public/terrain/18/429266/176957.terrain new file mode 100644 index 000000000..0e14bd789 Binary files /dev/null and b/public/terrain/18/429266/176957.terrain differ diff --git a/public/terrain/18/429266/176958.terrain b/public/terrain/18/429266/176958.terrain new file mode 100644 index 000000000..2c1d5d05f Binary files /dev/null and b/public/terrain/18/429266/176958.terrain differ diff --git a/public/terrain/18/429266/176959.terrain b/public/terrain/18/429266/176959.terrain new file mode 100644 index 000000000..5f2dc0b11 Binary files /dev/null and b/public/terrain/18/429266/176959.terrain differ diff --git a/public/terrain/18/429266/176960.terrain b/public/terrain/18/429266/176960.terrain new file mode 100644 index 000000000..09dc0c0d2 Binary files /dev/null and b/public/terrain/18/429266/176960.terrain differ diff --git a/public/terrain/18/429266/176961.terrain b/public/terrain/18/429266/176961.terrain new file mode 100644 index 000000000..65aba52d5 Binary files /dev/null and b/public/terrain/18/429266/176961.terrain differ diff --git a/public/terrain/18/429266/176962.terrain b/public/terrain/18/429266/176962.terrain new file mode 100644 index 000000000..8a3a4c273 Binary files /dev/null and b/public/terrain/18/429266/176962.terrain differ diff --git a/public/terrain/18/429266/176963.terrain b/public/terrain/18/429266/176963.terrain new file mode 100644 index 000000000..8037bee52 Binary files /dev/null and b/public/terrain/18/429266/176963.terrain differ diff --git a/public/terrain/18/429266/176964.terrain b/public/terrain/18/429266/176964.terrain new file mode 100644 index 000000000..cf01f7165 Binary files /dev/null and b/public/terrain/18/429266/176964.terrain differ diff --git a/public/terrain/18/429266/176965.terrain b/public/terrain/18/429266/176965.terrain new file mode 100644 index 000000000..1cebfe6f2 Binary files /dev/null and b/public/terrain/18/429266/176965.terrain differ diff --git a/public/terrain/18/429266/176966.terrain b/public/terrain/18/429266/176966.terrain new file mode 100644 index 000000000..45ca334b9 Binary files /dev/null and b/public/terrain/18/429266/176966.terrain differ diff --git a/public/terrain/18/429266/176967.terrain b/public/terrain/18/429266/176967.terrain new file mode 100644 index 000000000..8d5996f99 Binary files /dev/null and b/public/terrain/18/429266/176967.terrain differ diff --git a/public/terrain/18/429266/176968.terrain b/public/terrain/18/429266/176968.terrain new file mode 100644 index 000000000..61b7a1fcb Binary files /dev/null and b/public/terrain/18/429266/176968.terrain differ diff --git a/public/terrain/18/429266/176969.terrain b/public/terrain/18/429266/176969.terrain new file mode 100644 index 000000000..bfdf36594 Binary files /dev/null and b/public/terrain/18/429266/176969.terrain differ diff --git a/public/terrain/18/429266/176970.terrain b/public/terrain/18/429266/176970.terrain new file mode 100644 index 000000000..b2dd1abe6 Binary files /dev/null and b/public/terrain/18/429266/176970.terrain differ diff --git a/public/terrain/18/429266/176971.terrain b/public/terrain/18/429266/176971.terrain new file mode 100644 index 000000000..3d1bc0521 Binary files /dev/null and b/public/terrain/18/429266/176971.terrain differ diff --git a/public/terrain/18/429266/176972.terrain b/public/terrain/18/429266/176972.terrain new file mode 100644 index 000000000..c5efdc38a Binary files /dev/null and b/public/terrain/18/429266/176972.terrain differ diff --git a/public/terrain/18/429266/176973.terrain b/public/terrain/18/429266/176973.terrain new file mode 100644 index 000000000..4fcc4b8eb Binary files /dev/null and b/public/terrain/18/429266/176973.terrain differ diff --git a/public/terrain/18/429266/176974.terrain b/public/terrain/18/429266/176974.terrain new file mode 100644 index 000000000..747a67ba6 Binary files /dev/null and b/public/terrain/18/429266/176974.terrain differ diff --git a/public/terrain/18/429266/176975.terrain b/public/terrain/18/429266/176975.terrain new file mode 100644 index 000000000..a72d51009 Binary files /dev/null and b/public/terrain/18/429266/176975.terrain differ diff --git a/public/terrain/18/429266/176976.terrain b/public/terrain/18/429266/176976.terrain new file mode 100644 index 000000000..c760fc540 Binary files /dev/null and b/public/terrain/18/429266/176976.terrain differ diff --git a/public/terrain/18/429266/176977.terrain b/public/terrain/18/429266/176977.terrain new file mode 100644 index 000000000..12cf7f1da Binary files /dev/null and b/public/terrain/18/429266/176977.terrain differ diff --git a/public/terrain/18/429266/176978.terrain b/public/terrain/18/429266/176978.terrain new file mode 100644 index 000000000..69dff6da1 Binary files /dev/null and b/public/terrain/18/429266/176978.terrain differ diff --git a/public/terrain/18/429266/176979.terrain b/public/terrain/18/429266/176979.terrain new file mode 100644 index 000000000..d060ebc16 Binary files /dev/null and b/public/terrain/18/429266/176979.terrain differ diff --git a/public/terrain/18/429266/176980.terrain b/public/terrain/18/429266/176980.terrain new file mode 100644 index 000000000..71b805538 Binary files /dev/null and b/public/terrain/18/429266/176980.terrain differ diff --git a/public/terrain/18/429266/176981.terrain b/public/terrain/18/429266/176981.terrain new file mode 100644 index 000000000..07215e945 Binary files /dev/null and b/public/terrain/18/429266/176981.terrain differ diff --git a/public/terrain/18/429266/176982.terrain b/public/terrain/18/429266/176982.terrain new file mode 100644 index 000000000..e7da93160 Binary files /dev/null and b/public/terrain/18/429266/176982.terrain differ diff --git a/public/terrain/18/429266/176983.terrain b/public/terrain/18/429266/176983.terrain new file mode 100644 index 000000000..edd8c9447 Binary files /dev/null and b/public/terrain/18/429266/176983.terrain differ diff --git a/public/terrain/18/429266/176984.terrain b/public/terrain/18/429266/176984.terrain new file mode 100644 index 000000000..30c61bab4 Binary files /dev/null and b/public/terrain/18/429266/176984.terrain differ diff --git a/public/terrain/18/429266/176985.terrain b/public/terrain/18/429266/176985.terrain new file mode 100644 index 000000000..8398849f2 Binary files /dev/null and b/public/terrain/18/429266/176985.terrain differ diff --git a/public/terrain/18/429266/176986.terrain b/public/terrain/18/429266/176986.terrain new file mode 100644 index 000000000..3e82a6289 Binary files /dev/null and b/public/terrain/18/429266/176986.terrain differ diff --git a/public/terrain/18/429266/176987.terrain b/public/terrain/18/429266/176987.terrain new file mode 100644 index 000000000..87ba1c236 Binary files /dev/null and b/public/terrain/18/429266/176987.terrain differ diff --git a/public/terrain/18/429266/176988.terrain b/public/terrain/18/429266/176988.terrain new file mode 100644 index 000000000..19c5fa130 Binary files /dev/null and b/public/terrain/18/429266/176988.terrain differ diff --git a/public/terrain/18/429266/176989.terrain b/public/terrain/18/429266/176989.terrain new file mode 100644 index 000000000..09b7e391f Binary files /dev/null and b/public/terrain/18/429266/176989.terrain differ diff --git a/public/terrain/18/429266/176990.terrain b/public/terrain/18/429266/176990.terrain new file mode 100644 index 000000000..e4a3adcb9 Binary files /dev/null and b/public/terrain/18/429266/176990.terrain differ diff --git a/public/terrain/18/429266/176991.terrain b/public/terrain/18/429266/176991.terrain new file mode 100644 index 000000000..e332b9d3d Binary files /dev/null and b/public/terrain/18/429266/176991.terrain differ diff --git a/public/terrain/18/429266/176992.terrain b/public/terrain/18/429266/176992.terrain new file mode 100644 index 000000000..e3b01fa62 Binary files /dev/null and b/public/terrain/18/429266/176992.terrain differ diff --git a/public/terrain/18/429266/176993.terrain b/public/terrain/18/429266/176993.terrain new file mode 100644 index 000000000..0a643ba57 Binary files /dev/null and b/public/terrain/18/429266/176993.terrain differ diff --git a/public/terrain/18/429266/176994.terrain b/public/terrain/18/429266/176994.terrain new file mode 100644 index 000000000..eae716381 Binary files /dev/null and b/public/terrain/18/429266/176994.terrain differ diff --git a/public/terrain/18/429266/176995.terrain b/public/terrain/18/429266/176995.terrain new file mode 100644 index 000000000..f8b2f2058 Binary files /dev/null and b/public/terrain/18/429266/176995.terrain differ diff --git a/public/terrain/18/429266/176996.terrain b/public/terrain/18/429266/176996.terrain new file mode 100644 index 000000000..a9d420c4d Binary files /dev/null and b/public/terrain/18/429266/176996.terrain differ diff --git a/public/terrain/18/429266/176997.terrain b/public/terrain/18/429266/176997.terrain new file mode 100644 index 000000000..fead84296 Binary files /dev/null and b/public/terrain/18/429266/176997.terrain differ diff --git a/public/terrain/18/429266/176998.terrain b/public/terrain/18/429266/176998.terrain new file mode 100644 index 000000000..0f4eca00d Binary files /dev/null and b/public/terrain/18/429266/176998.terrain differ diff --git a/public/terrain/18/429266/176999.terrain b/public/terrain/18/429266/176999.terrain new file mode 100644 index 000000000..bf6782993 Binary files /dev/null and b/public/terrain/18/429266/176999.terrain differ diff --git a/public/terrain/18/429266/177000.terrain b/public/terrain/18/429266/177000.terrain new file mode 100644 index 000000000..f6e8153fd Binary files /dev/null and b/public/terrain/18/429266/177000.terrain differ diff --git a/public/terrain/18/429266/177001.terrain b/public/terrain/18/429266/177001.terrain new file mode 100644 index 000000000..a56fc140f Binary files /dev/null and b/public/terrain/18/429266/177001.terrain differ diff --git a/public/terrain/18/429266/177002.terrain b/public/terrain/18/429266/177002.terrain new file mode 100644 index 000000000..d0a1a9c51 Binary files /dev/null and b/public/terrain/18/429266/177002.terrain differ diff --git a/public/terrain/18/429266/177003.terrain b/public/terrain/18/429266/177003.terrain new file mode 100644 index 000000000..8c4e5bd8a Binary files /dev/null and b/public/terrain/18/429266/177003.terrain differ diff --git a/public/terrain/18/429266/177004.terrain b/public/terrain/18/429266/177004.terrain new file mode 100644 index 000000000..8ce167889 Binary files /dev/null and b/public/terrain/18/429266/177004.terrain differ diff --git a/public/terrain/18/429266/177005.terrain b/public/terrain/18/429266/177005.terrain new file mode 100644 index 000000000..cc167f653 Binary files /dev/null and b/public/terrain/18/429266/177005.terrain differ diff --git a/public/terrain/18/429266/177006.terrain b/public/terrain/18/429266/177006.terrain new file mode 100644 index 000000000..4c344c892 Binary files /dev/null and b/public/terrain/18/429266/177006.terrain differ diff --git a/public/terrain/18/429266/177007.terrain b/public/terrain/18/429266/177007.terrain new file mode 100644 index 000000000..cd4376c96 Binary files /dev/null and b/public/terrain/18/429266/177007.terrain differ diff --git a/public/terrain/18/429266/177008.terrain b/public/terrain/18/429266/177008.terrain new file mode 100644 index 000000000..60282ccc7 Binary files /dev/null and b/public/terrain/18/429266/177008.terrain differ diff --git a/public/terrain/18/429266/177009.terrain b/public/terrain/18/429266/177009.terrain new file mode 100644 index 000000000..f13cc5c23 Binary files /dev/null and b/public/terrain/18/429266/177009.terrain differ diff --git a/public/terrain/18/429266/177010.terrain b/public/terrain/18/429266/177010.terrain new file mode 100644 index 000000000..6563c3e89 Binary files /dev/null and b/public/terrain/18/429266/177010.terrain differ diff --git a/public/terrain/18/429266/177011.terrain b/public/terrain/18/429266/177011.terrain new file mode 100644 index 000000000..fc71d11b0 Binary files /dev/null and b/public/terrain/18/429266/177011.terrain differ diff --git a/public/terrain/18/429266/177012.terrain b/public/terrain/18/429266/177012.terrain new file mode 100644 index 000000000..55780ea76 Binary files /dev/null and b/public/terrain/18/429266/177012.terrain differ diff --git a/public/terrain/18/429266/177013.terrain b/public/terrain/18/429266/177013.terrain new file mode 100644 index 000000000..2acd22a33 Binary files /dev/null and b/public/terrain/18/429266/177013.terrain differ diff --git a/public/terrain/18/429266/177014.terrain b/public/terrain/18/429266/177014.terrain new file mode 100644 index 000000000..85a6e9fdc Binary files /dev/null and b/public/terrain/18/429266/177014.terrain differ diff --git a/public/terrain/18/429266/177015.terrain b/public/terrain/18/429266/177015.terrain new file mode 100644 index 000000000..2d2d6199d Binary files /dev/null and b/public/terrain/18/429266/177015.terrain differ diff --git a/public/terrain/18/429266/177016.terrain b/public/terrain/18/429266/177016.terrain new file mode 100644 index 000000000..f02f0edf7 Binary files /dev/null and b/public/terrain/18/429266/177016.terrain differ diff --git a/public/terrain/18/429266/177017.terrain b/public/terrain/18/429266/177017.terrain new file mode 100644 index 000000000..c99a696ad Binary files /dev/null and b/public/terrain/18/429266/177017.terrain differ diff --git a/public/terrain/18/429266/177018.terrain b/public/terrain/18/429266/177018.terrain new file mode 100644 index 000000000..f05048bc9 Binary files /dev/null and b/public/terrain/18/429266/177018.terrain differ diff --git a/public/terrain/18/429266/177019.terrain b/public/terrain/18/429266/177019.terrain new file mode 100644 index 000000000..8cd80a324 Binary files /dev/null and b/public/terrain/18/429266/177019.terrain differ diff --git a/public/terrain/18/429266/177020.terrain b/public/terrain/18/429266/177020.terrain new file mode 100644 index 000000000..e28272b4b Binary files /dev/null and b/public/terrain/18/429266/177020.terrain differ diff --git a/public/terrain/18/429266/177021.terrain b/public/terrain/18/429266/177021.terrain new file mode 100644 index 000000000..9270345c6 Binary files /dev/null and b/public/terrain/18/429266/177021.terrain differ diff --git a/public/terrain/18/429266/177022.terrain b/public/terrain/18/429266/177022.terrain new file mode 100644 index 000000000..6fcb956fb Binary files /dev/null and b/public/terrain/18/429266/177022.terrain differ diff --git a/public/terrain/18/429266/177023.terrain b/public/terrain/18/429266/177023.terrain new file mode 100644 index 000000000..4f325eb5b Binary files /dev/null and b/public/terrain/18/429266/177023.terrain differ diff --git a/public/terrain/18/429266/177024.terrain b/public/terrain/18/429266/177024.terrain new file mode 100644 index 000000000..034e24109 Binary files /dev/null and b/public/terrain/18/429266/177024.terrain differ diff --git a/public/terrain/18/429266/177025.terrain b/public/terrain/18/429266/177025.terrain new file mode 100644 index 000000000..a582fe14c Binary files /dev/null and b/public/terrain/18/429266/177025.terrain differ diff --git a/public/terrain/18/429266/177026.terrain b/public/terrain/18/429266/177026.terrain new file mode 100644 index 000000000..a02fc2250 Binary files /dev/null and b/public/terrain/18/429266/177026.terrain differ diff --git a/public/terrain/18/429266/177027.terrain b/public/terrain/18/429266/177027.terrain new file mode 100644 index 000000000..8fb2c6560 Binary files /dev/null and b/public/terrain/18/429266/177027.terrain differ diff --git a/public/terrain/18/429266/177028.terrain b/public/terrain/18/429266/177028.terrain new file mode 100644 index 000000000..773190fc3 Binary files /dev/null and b/public/terrain/18/429266/177028.terrain differ diff --git a/public/terrain/18/429266/177029.terrain b/public/terrain/18/429266/177029.terrain new file mode 100644 index 000000000..1ea40ac90 Binary files /dev/null and b/public/terrain/18/429266/177029.terrain differ diff --git a/public/terrain/18/429267/176871.terrain b/public/terrain/18/429267/176871.terrain new file mode 100644 index 000000000..7ff9e0831 Binary files /dev/null and b/public/terrain/18/429267/176871.terrain differ diff --git a/public/terrain/18/429267/176872.terrain b/public/terrain/18/429267/176872.terrain new file mode 100644 index 000000000..ecb450f48 Binary files /dev/null and b/public/terrain/18/429267/176872.terrain differ diff --git a/public/terrain/18/429267/176873.terrain b/public/terrain/18/429267/176873.terrain new file mode 100644 index 000000000..55e232592 Binary files /dev/null and b/public/terrain/18/429267/176873.terrain differ diff --git a/public/terrain/18/429267/176874.terrain b/public/terrain/18/429267/176874.terrain new file mode 100644 index 000000000..017c8ef66 Binary files /dev/null and b/public/terrain/18/429267/176874.terrain differ diff --git a/public/terrain/18/429267/176875.terrain b/public/terrain/18/429267/176875.terrain new file mode 100644 index 000000000..0f5c9521b Binary files /dev/null and b/public/terrain/18/429267/176875.terrain differ diff --git a/public/terrain/18/429267/176876.terrain b/public/terrain/18/429267/176876.terrain new file mode 100644 index 000000000..8b4908fdb Binary files /dev/null and b/public/terrain/18/429267/176876.terrain differ diff --git a/public/terrain/18/429267/176877.terrain b/public/terrain/18/429267/176877.terrain new file mode 100644 index 000000000..a76cf574c Binary files /dev/null and b/public/terrain/18/429267/176877.terrain differ diff --git a/public/terrain/18/429267/176878.terrain b/public/terrain/18/429267/176878.terrain new file mode 100644 index 000000000..8c88bd395 Binary files /dev/null and b/public/terrain/18/429267/176878.terrain differ diff --git a/public/terrain/18/429267/176879.terrain b/public/terrain/18/429267/176879.terrain new file mode 100644 index 000000000..4ed009e87 Binary files /dev/null and b/public/terrain/18/429267/176879.terrain differ diff --git a/public/terrain/18/429267/176880.terrain b/public/terrain/18/429267/176880.terrain new file mode 100644 index 000000000..af884e515 Binary files /dev/null and b/public/terrain/18/429267/176880.terrain differ diff --git a/public/terrain/18/429267/176881.terrain b/public/terrain/18/429267/176881.terrain new file mode 100644 index 000000000..8fb324b71 Binary files /dev/null and b/public/terrain/18/429267/176881.terrain differ diff --git a/public/terrain/18/429267/176882.terrain b/public/terrain/18/429267/176882.terrain new file mode 100644 index 000000000..88c31e87e Binary files /dev/null and b/public/terrain/18/429267/176882.terrain differ diff --git a/public/terrain/18/429267/176883.terrain b/public/terrain/18/429267/176883.terrain new file mode 100644 index 000000000..1c382ef09 Binary files /dev/null and b/public/terrain/18/429267/176883.terrain differ diff --git a/public/terrain/18/429267/176884.terrain b/public/terrain/18/429267/176884.terrain new file mode 100644 index 000000000..68ec7e4ac Binary files /dev/null and b/public/terrain/18/429267/176884.terrain differ diff --git a/public/terrain/18/429267/176885.terrain b/public/terrain/18/429267/176885.terrain new file mode 100644 index 000000000..c41656c16 Binary files /dev/null and b/public/terrain/18/429267/176885.terrain differ diff --git a/public/terrain/18/429267/176886.terrain b/public/terrain/18/429267/176886.terrain new file mode 100644 index 000000000..22575978b Binary files /dev/null and b/public/terrain/18/429267/176886.terrain differ diff --git a/public/terrain/18/429267/176887.terrain b/public/terrain/18/429267/176887.terrain new file mode 100644 index 000000000..e19c55097 Binary files /dev/null and b/public/terrain/18/429267/176887.terrain differ diff --git a/public/terrain/18/429267/176888.terrain b/public/terrain/18/429267/176888.terrain new file mode 100644 index 000000000..cfe05091f Binary files /dev/null and b/public/terrain/18/429267/176888.terrain differ diff --git a/public/terrain/18/429267/176889.terrain b/public/terrain/18/429267/176889.terrain new file mode 100644 index 000000000..52c05a214 Binary files /dev/null and b/public/terrain/18/429267/176889.terrain differ diff --git a/public/terrain/18/429267/176890.terrain b/public/terrain/18/429267/176890.terrain new file mode 100644 index 000000000..ba980ff6b Binary files /dev/null and b/public/terrain/18/429267/176890.terrain differ diff --git a/public/terrain/18/429267/176891.terrain b/public/terrain/18/429267/176891.terrain new file mode 100644 index 000000000..09efa937b Binary files /dev/null and b/public/terrain/18/429267/176891.terrain differ diff --git a/public/terrain/18/429267/176892.terrain b/public/terrain/18/429267/176892.terrain new file mode 100644 index 000000000..92f8e382c Binary files /dev/null and b/public/terrain/18/429267/176892.terrain differ diff --git a/public/terrain/18/429267/176893.terrain b/public/terrain/18/429267/176893.terrain new file mode 100644 index 000000000..dc124e248 Binary files /dev/null and b/public/terrain/18/429267/176893.terrain differ diff --git a/public/terrain/18/429267/176894.terrain b/public/terrain/18/429267/176894.terrain new file mode 100644 index 000000000..cb63b5031 Binary files /dev/null and b/public/terrain/18/429267/176894.terrain differ diff --git a/public/terrain/18/429267/176895.terrain b/public/terrain/18/429267/176895.terrain new file mode 100644 index 000000000..efba0d152 Binary files /dev/null and b/public/terrain/18/429267/176895.terrain differ diff --git a/public/terrain/18/429267/176896.terrain b/public/terrain/18/429267/176896.terrain new file mode 100644 index 000000000..41e3233fb Binary files /dev/null and b/public/terrain/18/429267/176896.terrain differ diff --git a/public/terrain/18/429267/176897.terrain b/public/terrain/18/429267/176897.terrain new file mode 100644 index 000000000..b73bf8cde Binary files /dev/null and b/public/terrain/18/429267/176897.terrain differ diff --git a/public/terrain/18/429267/176898.terrain b/public/terrain/18/429267/176898.terrain new file mode 100644 index 000000000..299034737 Binary files /dev/null and b/public/terrain/18/429267/176898.terrain differ diff --git a/public/terrain/18/429267/176899.terrain b/public/terrain/18/429267/176899.terrain new file mode 100644 index 000000000..d6b17913d Binary files /dev/null and b/public/terrain/18/429267/176899.terrain differ diff --git a/public/terrain/18/429267/176900.terrain b/public/terrain/18/429267/176900.terrain new file mode 100644 index 000000000..8d3795713 Binary files /dev/null and b/public/terrain/18/429267/176900.terrain differ diff --git a/public/terrain/18/429267/176901.terrain b/public/terrain/18/429267/176901.terrain new file mode 100644 index 000000000..5cda37e56 Binary files /dev/null and b/public/terrain/18/429267/176901.terrain differ diff --git a/public/terrain/18/429267/176902.terrain b/public/terrain/18/429267/176902.terrain new file mode 100644 index 000000000..86b082464 Binary files /dev/null and b/public/terrain/18/429267/176902.terrain differ diff --git a/public/terrain/18/429267/176903.terrain b/public/terrain/18/429267/176903.terrain new file mode 100644 index 000000000..40b62e386 Binary files /dev/null and b/public/terrain/18/429267/176903.terrain differ diff --git a/public/terrain/18/429267/176904.terrain b/public/terrain/18/429267/176904.terrain new file mode 100644 index 000000000..b428ccfcc Binary files /dev/null and b/public/terrain/18/429267/176904.terrain differ diff --git a/public/terrain/18/429267/176905.terrain b/public/terrain/18/429267/176905.terrain new file mode 100644 index 000000000..62db936ef Binary files /dev/null and b/public/terrain/18/429267/176905.terrain differ diff --git a/public/terrain/18/429267/176906.terrain b/public/terrain/18/429267/176906.terrain new file mode 100644 index 000000000..36a51a834 Binary files /dev/null and b/public/terrain/18/429267/176906.terrain differ diff --git a/public/terrain/18/429267/176907.terrain b/public/terrain/18/429267/176907.terrain new file mode 100644 index 000000000..d301dbfdd Binary files /dev/null and b/public/terrain/18/429267/176907.terrain differ diff --git a/public/terrain/18/429267/176908.terrain b/public/terrain/18/429267/176908.terrain new file mode 100644 index 000000000..068ffa51e Binary files /dev/null and b/public/terrain/18/429267/176908.terrain differ diff --git a/public/terrain/18/429267/176909.terrain b/public/terrain/18/429267/176909.terrain new file mode 100644 index 000000000..4d1f4b0bd Binary files /dev/null and b/public/terrain/18/429267/176909.terrain differ diff --git a/public/terrain/18/429267/176910.terrain b/public/terrain/18/429267/176910.terrain new file mode 100644 index 000000000..f038884b1 Binary files /dev/null and b/public/terrain/18/429267/176910.terrain differ diff --git a/public/terrain/18/429267/176911.terrain b/public/terrain/18/429267/176911.terrain new file mode 100644 index 000000000..eb5b14c81 Binary files /dev/null and b/public/terrain/18/429267/176911.terrain differ diff --git a/public/terrain/18/429267/176912.terrain b/public/terrain/18/429267/176912.terrain new file mode 100644 index 000000000..33385308b Binary files /dev/null and b/public/terrain/18/429267/176912.terrain differ diff --git a/public/terrain/18/429267/176913.terrain b/public/terrain/18/429267/176913.terrain new file mode 100644 index 000000000..98c5c59d8 Binary files /dev/null and b/public/terrain/18/429267/176913.terrain differ diff --git a/public/terrain/18/429267/176914.terrain b/public/terrain/18/429267/176914.terrain new file mode 100644 index 000000000..5421adcee Binary files /dev/null and b/public/terrain/18/429267/176914.terrain differ diff --git a/public/terrain/18/429267/176915.terrain b/public/terrain/18/429267/176915.terrain new file mode 100644 index 000000000..0231a809d Binary files /dev/null and b/public/terrain/18/429267/176915.terrain differ diff --git a/public/terrain/18/429267/176916.terrain b/public/terrain/18/429267/176916.terrain new file mode 100644 index 000000000..750e04341 Binary files /dev/null and b/public/terrain/18/429267/176916.terrain differ diff --git a/public/terrain/18/429267/176917.terrain b/public/terrain/18/429267/176917.terrain new file mode 100644 index 000000000..875399111 Binary files /dev/null and b/public/terrain/18/429267/176917.terrain differ diff --git a/public/terrain/18/429267/176918.terrain b/public/terrain/18/429267/176918.terrain new file mode 100644 index 000000000..6eb8b7187 Binary files /dev/null and b/public/terrain/18/429267/176918.terrain differ diff --git a/public/terrain/18/429267/176919.terrain b/public/terrain/18/429267/176919.terrain new file mode 100644 index 000000000..d24fd173b Binary files /dev/null and b/public/terrain/18/429267/176919.terrain differ diff --git a/public/terrain/18/429267/176920.terrain b/public/terrain/18/429267/176920.terrain new file mode 100644 index 000000000..b12f7d590 Binary files /dev/null and b/public/terrain/18/429267/176920.terrain differ diff --git a/public/terrain/18/429267/176921.terrain b/public/terrain/18/429267/176921.terrain new file mode 100644 index 000000000..144421d8f Binary files /dev/null and b/public/terrain/18/429267/176921.terrain differ diff --git a/public/terrain/18/429267/176922.terrain b/public/terrain/18/429267/176922.terrain new file mode 100644 index 000000000..a7888a7da Binary files /dev/null and b/public/terrain/18/429267/176922.terrain differ diff --git a/public/terrain/18/429267/176923.terrain b/public/terrain/18/429267/176923.terrain new file mode 100644 index 000000000..545fddeab Binary files /dev/null and b/public/terrain/18/429267/176923.terrain differ diff --git a/public/terrain/18/429267/176924.terrain b/public/terrain/18/429267/176924.terrain new file mode 100644 index 000000000..b56bb3e77 Binary files /dev/null and b/public/terrain/18/429267/176924.terrain differ diff --git a/public/terrain/18/429267/176925.terrain b/public/terrain/18/429267/176925.terrain new file mode 100644 index 000000000..1d29ab420 Binary files /dev/null and b/public/terrain/18/429267/176925.terrain differ diff --git a/public/terrain/18/429267/176926.terrain b/public/terrain/18/429267/176926.terrain new file mode 100644 index 000000000..dc2757b56 Binary files /dev/null and b/public/terrain/18/429267/176926.terrain differ diff --git a/public/terrain/18/429267/176927.terrain b/public/terrain/18/429267/176927.terrain new file mode 100644 index 000000000..29a1c0071 Binary files /dev/null and b/public/terrain/18/429267/176927.terrain differ diff --git a/public/terrain/18/429267/176928.terrain b/public/terrain/18/429267/176928.terrain new file mode 100644 index 000000000..e094d4b26 Binary files /dev/null and b/public/terrain/18/429267/176928.terrain differ diff --git a/public/terrain/18/429267/176929.terrain b/public/terrain/18/429267/176929.terrain new file mode 100644 index 000000000..644fbe4ac Binary files /dev/null and b/public/terrain/18/429267/176929.terrain differ diff --git a/public/terrain/18/429267/176930.terrain b/public/terrain/18/429267/176930.terrain new file mode 100644 index 000000000..a844cc7a8 Binary files /dev/null and b/public/terrain/18/429267/176930.terrain differ diff --git a/public/terrain/18/429267/176931.terrain b/public/terrain/18/429267/176931.terrain new file mode 100644 index 000000000..4f62c9b17 Binary files /dev/null and b/public/terrain/18/429267/176931.terrain differ diff --git a/public/terrain/18/429267/176932.terrain b/public/terrain/18/429267/176932.terrain new file mode 100644 index 000000000..002371438 Binary files /dev/null and b/public/terrain/18/429267/176932.terrain differ diff --git a/public/terrain/18/429267/176933.terrain b/public/terrain/18/429267/176933.terrain new file mode 100644 index 000000000..c9e338cad Binary files /dev/null and b/public/terrain/18/429267/176933.terrain differ diff --git a/public/terrain/18/429267/176934.terrain b/public/terrain/18/429267/176934.terrain new file mode 100644 index 000000000..830d27d3d Binary files /dev/null and b/public/terrain/18/429267/176934.terrain differ diff --git a/public/terrain/18/429267/176935.terrain b/public/terrain/18/429267/176935.terrain new file mode 100644 index 000000000..c4cd6c96d Binary files /dev/null and b/public/terrain/18/429267/176935.terrain differ diff --git a/public/terrain/18/429267/176936.terrain b/public/terrain/18/429267/176936.terrain new file mode 100644 index 000000000..116e0a8bd Binary files /dev/null and b/public/terrain/18/429267/176936.terrain differ diff --git a/public/terrain/18/429267/176937.terrain b/public/terrain/18/429267/176937.terrain new file mode 100644 index 000000000..86c3f171b Binary files /dev/null and b/public/terrain/18/429267/176937.terrain differ diff --git a/public/terrain/18/429267/176938.terrain b/public/terrain/18/429267/176938.terrain new file mode 100644 index 000000000..53283988d Binary files /dev/null and b/public/terrain/18/429267/176938.terrain differ diff --git a/public/terrain/18/429267/176939.terrain b/public/terrain/18/429267/176939.terrain new file mode 100644 index 000000000..378d449f2 Binary files /dev/null and b/public/terrain/18/429267/176939.terrain differ diff --git a/public/terrain/18/429267/176940.terrain b/public/terrain/18/429267/176940.terrain new file mode 100644 index 000000000..b2fba0697 Binary files /dev/null and b/public/terrain/18/429267/176940.terrain differ diff --git a/public/terrain/18/429267/176941.terrain b/public/terrain/18/429267/176941.terrain new file mode 100644 index 000000000..3dbdc3054 Binary files /dev/null and b/public/terrain/18/429267/176941.terrain differ diff --git a/public/terrain/18/429267/176942.terrain b/public/terrain/18/429267/176942.terrain new file mode 100644 index 000000000..9caadb61a Binary files /dev/null and b/public/terrain/18/429267/176942.terrain differ diff --git a/public/terrain/18/429267/176943.terrain b/public/terrain/18/429267/176943.terrain new file mode 100644 index 000000000..997891cd0 Binary files /dev/null and b/public/terrain/18/429267/176943.terrain differ diff --git a/public/terrain/18/429267/176944.terrain b/public/terrain/18/429267/176944.terrain new file mode 100644 index 000000000..c40f59054 Binary files /dev/null and b/public/terrain/18/429267/176944.terrain differ diff --git a/public/terrain/18/429267/176945.terrain b/public/terrain/18/429267/176945.terrain new file mode 100644 index 000000000..3f1d37f97 Binary files /dev/null and b/public/terrain/18/429267/176945.terrain differ diff --git a/public/terrain/18/429267/176946.terrain b/public/terrain/18/429267/176946.terrain new file mode 100644 index 000000000..990654660 Binary files /dev/null and b/public/terrain/18/429267/176946.terrain differ diff --git a/public/terrain/18/429267/176947.terrain b/public/terrain/18/429267/176947.terrain new file mode 100644 index 000000000..56ca48f13 Binary files /dev/null and b/public/terrain/18/429267/176947.terrain differ diff --git a/public/terrain/18/429267/176948.terrain b/public/terrain/18/429267/176948.terrain new file mode 100644 index 000000000..288dd0d9f Binary files /dev/null and b/public/terrain/18/429267/176948.terrain differ diff --git a/public/terrain/18/429267/176949.terrain b/public/terrain/18/429267/176949.terrain new file mode 100644 index 000000000..da1e19cf8 Binary files /dev/null and b/public/terrain/18/429267/176949.terrain differ diff --git a/public/terrain/18/429267/176950.terrain b/public/terrain/18/429267/176950.terrain new file mode 100644 index 000000000..52cb9e785 Binary files /dev/null and b/public/terrain/18/429267/176950.terrain differ diff --git a/public/terrain/18/429267/176951.terrain b/public/terrain/18/429267/176951.terrain new file mode 100644 index 000000000..0603d6a70 Binary files /dev/null and b/public/terrain/18/429267/176951.terrain differ diff --git a/public/terrain/18/429267/176952.terrain b/public/terrain/18/429267/176952.terrain new file mode 100644 index 000000000..28b7d35ad Binary files /dev/null and b/public/terrain/18/429267/176952.terrain differ diff --git a/public/terrain/18/429267/176953.terrain b/public/terrain/18/429267/176953.terrain new file mode 100644 index 000000000..6aa467503 Binary files /dev/null and b/public/terrain/18/429267/176953.terrain differ diff --git a/public/terrain/18/429267/176954.terrain b/public/terrain/18/429267/176954.terrain new file mode 100644 index 000000000..8637a4cee Binary files /dev/null and b/public/terrain/18/429267/176954.terrain differ diff --git a/public/terrain/18/429267/176955.terrain b/public/terrain/18/429267/176955.terrain new file mode 100644 index 000000000..4ac5f3c22 Binary files /dev/null and b/public/terrain/18/429267/176955.terrain differ diff --git a/public/terrain/18/429267/176956.terrain b/public/terrain/18/429267/176956.terrain new file mode 100644 index 000000000..2db412854 Binary files /dev/null and b/public/terrain/18/429267/176956.terrain differ diff --git a/public/terrain/18/429267/176957.terrain b/public/terrain/18/429267/176957.terrain new file mode 100644 index 000000000..f223f7f47 Binary files /dev/null and b/public/terrain/18/429267/176957.terrain differ diff --git a/public/terrain/18/429267/176958.terrain b/public/terrain/18/429267/176958.terrain new file mode 100644 index 000000000..ad2e1da18 Binary files /dev/null and b/public/terrain/18/429267/176958.terrain differ diff --git a/public/terrain/18/429267/176959.terrain b/public/terrain/18/429267/176959.terrain new file mode 100644 index 000000000..f4fd42988 Binary files /dev/null and b/public/terrain/18/429267/176959.terrain differ diff --git a/public/terrain/18/429267/176960.terrain b/public/terrain/18/429267/176960.terrain new file mode 100644 index 000000000..ea2096274 Binary files /dev/null and b/public/terrain/18/429267/176960.terrain differ diff --git a/public/terrain/18/429267/176961.terrain b/public/terrain/18/429267/176961.terrain new file mode 100644 index 000000000..708fc989e Binary files /dev/null and b/public/terrain/18/429267/176961.terrain differ diff --git a/public/terrain/18/429267/176962.terrain b/public/terrain/18/429267/176962.terrain new file mode 100644 index 000000000..00ed9d330 Binary files /dev/null and b/public/terrain/18/429267/176962.terrain differ diff --git a/public/terrain/18/429267/176963.terrain b/public/terrain/18/429267/176963.terrain new file mode 100644 index 000000000..302bc240e Binary files /dev/null and b/public/terrain/18/429267/176963.terrain differ diff --git a/public/terrain/18/429267/176964.terrain b/public/terrain/18/429267/176964.terrain new file mode 100644 index 000000000..c15682fac Binary files /dev/null and b/public/terrain/18/429267/176964.terrain differ diff --git a/public/terrain/18/429267/176965.terrain b/public/terrain/18/429267/176965.terrain new file mode 100644 index 000000000..35f36e90f Binary files /dev/null and b/public/terrain/18/429267/176965.terrain differ diff --git a/public/terrain/18/429267/176966.terrain b/public/terrain/18/429267/176966.terrain new file mode 100644 index 000000000..080a9bea3 Binary files /dev/null and b/public/terrain/18/429267/176966.terrain differ diff --git a/public/terrain/18/429267/176967.terrain b/public/terrain/18/429267/176967.terrain new file mode 100644 index 000000000..608020c6e Binary files /dev/null and b/public/terrain/18/429267/176967.terrain differ diff --git a/public/terrain/18/429267/176968.terrain b/public/terrain/18/429267/176968.terrain new file mode 100644 index 000000000..76f6cda0d Binary files /dev/null and b/public/terrain/18/429267/176968.terrain differ diff --git a/public/terrain/18/429267/176969.terrain b/public/terrain/18/429267/176969.terrain new file mode 100644 index 000000000..edd7d4ac3 Binary files /dev/null and b/public/terrain/18/429267/176969.terrain differ diff --git a/public/terrain/18/429267/176970.terrain b/public/terrain/18/429267/176970.terrain new file mode 100644 index 000000000..40496afbf Binary files /dev/null and b/public/terrain/18/429267/176970.terrain differ diff --git a/public/terrain/18/429267/176971.terrain b/public/terrain/18/429267/176971.terrain new file mode 100644 index 000000000..3632ef755 Binary files /dev/null and b/public/terrain/18/429267/176971.terrain differ diff --git a/public/terrain/18/429267/176972.terrain b/public/terrain/18/429267/176972.terrain new file mode 100644 index 000000000..a1693797a Binary files /dev/null and b/public/terrain/18/429267/176972.terrain differ diff --git a/public/terrain/18/429267/176973.terrain b/public/terrain/18/429267/176973.terrain new file mode 100644 index 000000000..09ad2e96c Binary files /dev/null and b/public/terrain/18/429267/176973.terrain differ diff --git a/public/terrain/18/429267/176974.terrain b/public/terrain/18/429267/176974.terrain new file mode 100644 index 000000000..d9d194b5c Binary files /dev/null and b/public/terrain/18/429267/176974.terrain differ diff --git a/public/terrain/18/429267/176975.terrain b/public/terrain/18/429267/176975.terrain new file mode 100644 index 000000000..aa3d0de7a Binary files /dev/null and b/public/terrain/18/429267/176975.terrain differ diff --git a/public/terrain/18/429267/176976.terrain b/public/terrain/18/429267/176976.terrain new file mode 100644 index 000000000..bcfafefbf Binary files /dev/null and b/public/terrain/18/429267/176976.terrain differ diff --git a/public/terrain/18/429267/176977.terrain b/public/terrain/18/429267/176977.terrain new file mode 100644 index 000000000..e026ee133 Binary files /dev/null and b/public/terrain/18/429267/176977.terrain differ diff --git a/public/terrain/18/429267/176978.terrain b/public/terrain/18/429267/176978.terrain new file mode 100644 index 000000000..29175cef8 Binary files /dev/null and b/public/terrain/18/429267/176978.terrain differ diff --git a/public/terrain/18/429267/176979.terrain b/public/terrain/18/429267/176979.terrain new file mode 100644 index 000000000..e5888a5cd Binary files /dev/null and b/public/terrain/18/429267/176979.terrain differ diff --git a/public/terrain/18/429267/176980.terrain b/public/terrain/18/429267/176980.terrain new file mode 100644 index 000000000..da6a399f6 Binary files /dev/null and b/public/terrain/18/429267/176980.terrain differ diff --git a/public/terrain/18/429267/176981.terrain b/public/terrain/18/429267/176981.terrain new file mode 100644 index 000000000..7cd2d7c5d Binary files /dev/null and b/public/terrain/18/429267/176981.terrain differ diff --git a/public/terrain/18/429267/176982.terrain b/public/terrain/18/429267/176982.terrain new file mode 100644 index 000000000..277f89bf4 Binary files /dev/null and b/public/terrain/18/429267/176982.terrain differ diff --git a/public/terrain/18/429267/176983.terrain b/public/terrain/18/429267/176983.terrain new file mode 100644 index 000000000..06e5704c2 Binary files /dev/null and b/public/terrain/18/429267/176983.terrain differ diff --git a/public/terrain/18/429267/176984.terrain b/public/terrain/18/429267/176984.terrain new file mode 100644 index 000000000..76dcf894a Binary files /dev/null and b/public/terrain/18/429267/176984.terrain differ diff --git a/public/terrain/18/429267/176985.terrain b/public/terrain/18/429267/176985.terrain new file mode 100644 index 000000000..e5804bf4e Binary files /dev/null and b/public/terrain/18/429267/176985.terrain differ diff --git a/public/terrain/18/429267/176986.terrain b/public/terrain/18/429267/176986.terrain new file mode 100644 index 000000000..10bbf663d Binary files /dev/null and b/public/terrain/18/429267/176986.terrain differ diff --git a/public/terrain/18/429267/176987.terrain b/public/terrain/18/429267/176987.terrain new file mode 100644 index 000000000..21eca3c4f Binary files /dev/null and b/public/terrain/18/429267/176987.terrain differ diff --git a/public/terrain/18/429267/176988.terrain b/public/terrain/18/429267/176988.terrain new file mode 100644 index 000000000..aaf0df0fb Binary files /dev/null and b/public/terrain/18/429267/176988.terrain differ diff --git a/public/terrain/18/429267/176989.terrain b/public/terrain/18/429267/176989.terrain new file mode 100644 index 000000000..ea31127dc Binary files /dev/null and b/public/terrain/18/429267/176989.terrain differ diff --git a/public/terrain/18/429267/176990.terrain b/public/terrain/18/429267/176990.terrain new file mode 100644 index 000000000..041927ffc Binary files /dev/null and b/public/terrain/18/429267/176990.terrain differ diff --git a/public/terrain/18/429267/176991.terrain b/public/terrain/18/429267/176991.terrain new file mode 100644 index 000000000..1ea380e2a Binary files /dev/null and b/public/terrain/18/429267/176991.terrain differ diff --git a/public/terrain/18/429267/176992.terrain b/public/terrain/18/429267/176992.terrain new file mode 100644 index 000000000..53d5c9e0a Binary files /dev/null and b/public/terrain/18/429267/176992.terrain differ diff --git a/public/terrain/18/429267/176993.terrain b/public/terrain/18/429267/176993.terrain new file mode 100644 index 000000000..67a532a8b Binary files /dev/null and b/public/terrain/18/429267/176993.terrain differ diff --git a/public/terrain/18/429267/176994.terrain b/public/terrain/18/429267/176994.terrain new file mode 100644 index 000000000..02ee5152a Binary files /dev/null and b/public/terrain/18/429267/176994.terrain differ diff --git a/public/terrain/18/429267/176995.terrain b/public/terrain/18/429267/176995.terrain new file mode 100644 index 000000000..9c2d34264 Binary files /dev/null and b/public/terrain/18/429267/176995.terrain differ diff --git a/public/terrain/18/429267/176996.terrain b/public/terrain/18/429267/176996.terrain new file mode 100644 index 000000000..d6242cb3c Binary files /dev/null and b/public/terrain/18/429267/176996.terrain differ diff --git a/public/terrain/18/429267/176997.terrain b/public/terrain/18/429267/176997.terrain new file mode 100644 index 000000000..1d269d145 Binary files /dev/null and b/public/terrain/18/429267/176997.terrain differ diff --git a/public/terrain/18/429267/176998.terrain b/public/terrain/18/429267/176998.terrain new file mode 100644 index 000000000..d8f606d71 Binary files /dev/null and b/public/terrain/18/429267/176998.terrain differ diff --git a/public/terrain/18/429267/176999.terrain b/public/terrain/18/429267/176999.terrain new file mode 100644 index 000000000..db2ef7d4f Binary files /dev/null and b/public/terrain/18/429267/176999.terrain differ diff --git a/public/terrain/18/429267/177000.terrain b/public/terrain/18/429267/177000.terrain new file mode 100644 index 000000000..f4bf308c9 Binary files /dev/null and b/public/terrain/18/429267/177000.terrain differ diff --git a/public/terrain/18/429267/177001.terrain b/public/terrain/18/429267/177001.terrain new file mode 100644 index 000000000..28d065d0f Binary files /dev/null and b/public/terrain/18/429267/177001.terrain differ diff --git a/public/terrain/18/429267/177002.terrain b/public/terrain/18/429267/177002.terrain new file mode 100644 index 000000000..1dc542234 Binary files /dev/null and b/public/terrain/18/429267/177002.terrain differ diff --git a/public/terrain/18/429267/177003.terrain b/public/terrain/18/429267/177003.terrain new file mode 100644 index 000000000..f6e3a1993 Binary files /dev/null and b/public/terrain/18/429267/177003.terrain differ diff --git a/public/terrain/18/429267/177004.terrain b/public/terrain/18/429267/177004.terrain new file mode 100644 index 000000000..84840f26f Binary files /dev/null and b/public/terrain/18/429267/177004.terrain differ diff --git a/public/terrain/18/429267/177005.terrain b/public/terrain/18/429267/177005.terrain new file mode 100644 index 000000000..405ee951a Binary files /dev/null and b/public/terrain/18/429267/177005.terrain differ diff --git a/public/terrain/18/429267/177006.terrain b/public/terrain/18/429267/177006.terrain new file mode 100644 index 000000000..1ba4bb625 Binary files /dev/null and b/public/terrain/18/429267/177006.terrain differ diff --git a/public/terrain/18/429267/177007.terrain b/public/terrain/18/429267/177007.terrain new file mode 100644 index 000000000..fc0310f57 Binary files /dev/null and b/public/terrain/18/429267/177007.terrain differ diff --git a/public/terrain/18/429267/177008.terrain b/public/terrain/18/429267/177008.terrain new file mode 100644 index 000000000..0c06e2922 Binary files /dev/null and b/public/terrain/18/429267/177008.terrain differ diff --git a/public/terrain/18/429267/177009.terrain b/public/terrain/18/429267/177009.terrain new file mode 100644 index 000000000..e5687f008 Binary files /dev/null and b/public/terrain/18/429267/177009.terrain differ diff --git a/public/terrain/18/429267/177010.terrain b/public/terrain/18/429267/177010.terrain new file mode 100644 index 000000000..fe1cfd168 Binary files /dev/null and b/public/terrain/18/429267/177010.terrain differ diff --git a/public/terrain/18/429267/177011.terrain b/public/terrain/18/429267/177011.terrain new file mode 100644 index 000000000..4d9a42cd8 Binary files /dev/null and b/public/terrain/18/429267/177011.terrain differ diff --git a/public/terrain/18/429267/177012.terrain b/public/terrain/18/429267/177012.terrain new file mode 100644 index 000000000..f83fa20a4 Binary files /dev/null and b/public/terrain/18/429267/177012.terrain differ diff --git a/public/terrain/18/429267/177013.terrain b/public/terrain/18/429267/177013.terrain new file mode 100644 index 000000000..8effdc003 Binary files /dev/null and b/public/terrain/18/429267/177013.terrain differ diff --git a/public/terrain/18/429267/177014.terrain b/public/terrain/18/429267/177014.terrain new file mode 100644 index 000000000..d1176411e Binary files /dev/null and b/public/terrain/18/429267/177014.terrain differ diff --git a/public/terrain/18/429267/177015.terrain b/public/terrain/18/429267/177015.terrain new file mode 100644 index 000000000..0a849d07b Binary files /dev/null and b/public/terrain/18/429267/177015.terrain differ diff --git a/public/terrain/18/429267/177016.terrain b/public/terrain/18/429267/177016.terrain new file mode 100644 index 000000000..b5781845c Binary files /dev/null and b/public/terrain/18/429267/177016.terrain differ diff --git a/public/terrain/18/429267/177017.terrain b/public/terrain/18/429267/177017.terrain new file mode 100644 index 000000000..586df8b8a Binary files /dev/null and b/public/terrain/18/429267/177017.terrain differ diff --git a/public/terrain/18/429267/177018.terrain b/public/terrain/18/429267/177018.terrain new file mode 100644 index 000000000..d1618ac15 Binary files /dev/null and b/public/terrain/18/429267/177018.terrain differ diff --git a/public/terrain/18/429267/177019.terrain b/public/terrain/18/429267/177019.terrain new file mode 100644 index 000000000..2b8556781 Binary files /dev/null and b/public/terrain/18/429267/177019.terrain differ diff --git a/public/terrain/18/429267/177020.terrain b/public/terrain/18/429267/177020.terrain new file mode 100644 index 000000000..da7b887c6 Binary files /dev/null and b/public/terrain/18/429267/177020.terrain differ diff --git a/public/terrain/18/429267/177021.terrain b/public/terrain/18/429267/177021.terrain new file mode 100644 index 000000000..3071d0aa2 Binary files /dev/null and b/public/terrain/18/429267/177021.terrain differ diff --git a/public/terrain/18/429267/177022.terrain b/public/terrain/18/429267/177022.terrain new file mode 100644 index 000000000..570bd158e Binary files /dev/null and b/public/terrain/18/429267/177022.terrain differ diff --git a/public/terrain/18/429267/177023.terrain b/public/terrain/18/429267/177023.terrain new file mode 100644 index 000000000..61406464c Binary files /dev/null and b/public/terrain/18/429267/177023.terrain differ diff --git a/public/terrain/18/429267/177024.terrain b/public/terrain/18/429267/177024.terrain new file mode 100644 index 000000000..196c0cb35 Binary files /dev/null and b/public/terrain/18/429267/177024.terrain differ diff --git a/public/terrain/18/429267/177025.terrain b/public/terrain/18/429267/177025.terrain new file mode 100644 index 000000000..c2b7c19fb Binary files /dev/null and b/public/terrain/18/429267/177025.terrain differ diff --git a/public/terrain/18/429267/177026.terrain b/public/terrain/18/429267/177026.terrain new file mode 100644 index 000000000..55ae4cc2d Binary files /dev/null and b/public/terrain/18/429267/177026.terrain differ diff --git a/public/terrain/18/429267/177027.terrain b/public/terrain/18/429267/177027.terrain new file mode 100644 index 000000000..4c1535aa7 Binary files /dev/null and b/public/terrain/18/429267/177027.terrain differ diff --git a/public/terrain/18/429267/177028.terrain b/public/terrain/18/429267/177028.terrain new file mode 100644 index 000000000..582196b3f Binary files /dev/null and b/public/terrain/18/429267/177028.terrain differ diff --git a/public/terrain/18/429267/177029.terrain b/public/terrain/18/429267/177029.terrain new file mode 100644 index 000000000..0f05e11e1 Binary files /dev/null and b/public/terrain/18/429267/177029.terrain differ diff --git a/public/terrain/18/429268/176871.terrain b/public/terrain/18/429268/176871.terrain new file mode 100644 index 000000000..7a594035e Binary files /dev/null and b/public/terrain/18/429268/176871.terrain differ diff --git a/public/terrain/18/429268/176872.terrain b/public/terrain/18/429268/176872.terrain new file mode 100644 index 000000000..458ac59b1 Binary files /dev/null and b/public/terrain/18/429268/176872.terrain differ diff --git a/public/terrain/18/429268/176873.terrain b/public/terrain/18/429268/176873.terrain new file mode 100644 index 000000000..78609a51e Binary files /dev/null and b/public/terrain/18/429268/176873.terrain differ diff --git a/public/terrain/18/429268/176874.terrain b/public/terrain/18/429268/176874.terrain new file mode 100644 index 000000000..950285491 Binary files /dev/null and b/public/terrain/18/429268/176874.terrain differ diff --git a/public/terrain/18/429268/176875.terrain b/public/terrain/18/429268/176875.terrain new file mode 100644 index 000000000..1ca870e2b Binary files /dev/null and b/public/terrain/18/429268/176875.terrain differ diff --git a/public/terrain/18/429268/176876.terrain b/public/terrain/18/429268/176876.terrain new file mode 100644 index 000000000..a4c1289f7 Binary files /dev/null and b/public/terrain/18/429268/176876.terrain differ diff --git a/public/terrain/18/429268/176877.terrain b/public/terrain/18/429268/176877.terrain new file mode 100644 index 000000000..9a67973ab Binary files /dev/null and b/public/terrain/18/429268/176877.terrain differ diff --git a/public/terrain/18/429268/176878.terrain b/public/terrain/18/429268/176878.terrain new file mode 100644 index 000000000..1f21acd25 Binary files /dev/null and b/public/terrain/18/429268/176878.terrain differ diff --git a/public/terrain/18/429268/176879.terrain b/public/terrain/18/429268/176879.terrain new file mode 100644 index 000000000..155f277f2 Binary files /dev/null and b/public/terrain/18/429268/176879.terrain differ diff --git a/public/terrain/18/429268/176880.terrain b/public/terrain/18/429268/176880.terrain new file mode 100644 index 000000000..e1390780e Binary files /dev/null and b/public/terrain/18/429268/176880.terrain differ diff --git a/public/terrain/18/429268/176881.terrain b/public/terrain/18/429268/176881.terrain new file mode 100644 index 000000000..7cd692b97 Binary files /dev/null and b/public/terrain/18/429268/176881.terrain differ diff --git a/public/terrain/18/429268/176882.terrain b/public/terrain/18/429268/176882.terrain new file mode 100644 index 000000000..0d2e969fb Binary files /dev/null and b/public/terrain/18/429268/176882.terrain differ diff --git a/public/terrain/18/429268/176883.terrain b/public/terrain/18/429268/176883.terrain new file mode 100644 index 000000000..43eb2ae4c Binary files /dev/null and b/public/terrain/18/429268/176883.terrain differ diff --git a/public/terrain/18/429268/176884.terrain b/public/terrain/18/429268/176884.terrain new file mode 100644 index 000000000..c9fb3109a Binary files /dev/null and b/public/terrain/18/429268/176884.terrain differ diff --git a/public/terrain/18/429268/176885.terrain b/public/terrain/18/429268/176885.terrain new file mode 100644 index 000000000..13c15064f Binary files /dev/null and b/public/terrain/18/429268/176885.terrain differ diff --git a/public/terrain/18/429268/176886.terrain b/public/terrain/18/429268/176886.terrain new file mode 100644 index 000000000..5ef4e7f5a Binary files /dev/null and b/public/terrain/18/429268/176886.terrain differ diff --git a/public/terrain/18/429268/176887.terrain b/public/terrain/18/429268/176887.terrain new file mode 100644 index 000000000..be8e665c7 Binary files /dev/null and b/public/terrain/18/429268/176887.terrain differ diff --git a/public/terrain/18/429268/176888.terrain b/public/terrain/18/429268/176888.terrain new file mode 100644 index 000000000..0743b29bb Binary files /dev/null and b/public/terrain/18/429268/176888.terrain differ diff --git a/public/terrain/18/429268/176889.terrain b/public/terrain/18/429268/176889.terrain new file mode 100644 index 000000000..ad8d02c05 Binary files /dev/null and b/public/terrain/18/429268/176889.terrain differ diff --git a/public/terrain/18/429268/176890.terrain b/public/terrain/18/429268/176890.terrain new file mode 100644 index 000000000..809d3ba39 Binary files /dev/null and b/public/terrain/18/429268/176890.terrain differ diff --git a/public/terrain/18/429268/176891.terrain b/public/terrain/18/429268/176891.terrain new file mode 100644 index 000000000..e19557406 Binary files /dev/null and b/public/terrain/18/429268/176891.terrain differ diff --git a/public/terrain/18/429268/176892.terrain b/public/terrain/18/429268/176892.terrain new file mode 100644 index 000000000..f0741aafe Binary files /dev/null and b/public/terrain/18/429268/176892.terrain differ diff --git a/public/terrain/18/429268/176893.terrain b/public/terrain/18/429268/176893.terrain new file mode 100644 index 000000000..853e7662b Binary files /dev/null and b/public/terrain/18/429268/176893.terrain differ diff --git a/public/terrain/18/429268/176894.terrain b/public/terrain/18/429268/176894.terrain new file mode 100644 index 000000000..a46eb3a1c Binary files /dev/null and b/public/terrain/18/429268/176894.terrain differ diff --git a/public/terrain/18/429268/176895.terrain b/public/terrain/18/429268/176895.terrain new file mode 100644 index 000000000..3c0dcc07f Binary files /dev/null and b/public/terrain/18/429268/176895.terrain differ diff --git a/public/terrain/18/429268/176896.terrain b/public/terrain/18/429268/176896.terrain new file mode 100644 index 000000000..e6364f4ef Binary files /dev/null and b/public/terrain/18/429268/176896.terrain differ diff --git a/public/terrain/18/429268/176897.terrain b/public/terrain/18/429268/176897.terrain new file mode 100644 index 000000000..504fb189e Binary files /dev/null and b/public/terrain/18/429268/176897.terrain differ diff --git a/public/terrain/18/429268/176898.terrain b/public/terrain/18/429268/176898.terrain new file mode 100644 index 000000000..23c09f410 Binary files /dev/null and b/public/terrain/18/429268/176898.terrain differ diff --git a/public/terrain/18/429268/176899.terrain b/public/terrain/18/429268/176899.terrain new file mode 100644 index 000000000..eebf7381c Binary files /dev/null and b/public/terrain/18/429268/176899.terrain differ diff --git a/public/terrain/18/429268/176900.terrain b/public/terrain/18/429268/176900.terrain new file mode 100644 index 000000000..559eff017 Binary files /dev/null and b/public/terrain/18/429268/176900.terrain differ diff --git a/public/terrain/18/429268/176901.terrain b/public/terrain/18/429268/176901.terrain new file mode 100644 index 000000000..b5073ef3a Binary files /dev/null and b/public/terrain/18/429268/176901.terrain differ diff --git a/public/terrain/18/429268/176902.terrain b/public/terrain/18/429268/176902.terrain new file mode 100644 index 000000000..98715fafc Binary files /dev/null and b/public/terrain/18/429268/176902.terrain differ diff --git a/public/terrain/18/429268/176903.terrain b/public/terrain/18/429268/176903.terrain new file mode 100644 index 000000000..4c6d98d27 Binary files /dev/null and b/public/terrain/18/429268/176903.terrain differ diff --git a/public/terrain/18/429268/176904.terrain b/public/terrain/18/429268/176904.terrain new file mode 100644 index 000000000..e10de2318 Binary files /dev/null and b/public/terrain/18/429268/176904.terrain differ diff --git a/public/terrain/18/429268/176905.terrain b/public/terrain/18/429268/176905.terrain new file mode 100644 index 000000000..820fefee9 Binary files /dev/null and b/public/terrain/18/429268/176905.terrain differ diff --git a/public/terrain/18/429268/176906.terrain b/public/terrain/18/429268/176906.terrain new file mode 100644 index 000000000..3db00c7a2 Binary files /dev/null and b/public/terrain/18/429268/176906.terrain differ diff --git a/public/terrain/18/429268/176907.terrain b/public/terrain/18/429268/176907.terrain new file mode 100644 index 000000000..ad66c7cda Binary files /dev/null and b/public/terrain/18/429268/176907.terrain differ diff --git a/public/terrain/18/429268/176908.terrain b/public/terrain/18/429268/176908.terrain new file mode 100644 index 000000000..5637eb427 Binary files /dev/null and b/public/terrain/18/429268/176908.terrain differ diff --git a/public/terrain/18/429268/176909.terrain b/public/terrain/18/429268/176909.terrain new file mode 100644 index 000000000..dbfab9654 Binary files /dev/null and b/public/terrain/18/429268/176909.terrain differ diff --git a/public/terrain/18/429268/176910.terrain b/public/terrain/18/429268/176910.terrain new file mode 100644 index 000000000..b382b596e Binary files /dev/null and b/public/terrain/18/429268/176910.terrain differ diff --git a/public/terrain/18/429268/176911.terrain b/public/terrain/18/429268/176911.terrain new file mode 100644 index 000000000..0456cdfc6 Binary files /dev/null and b/public/terrain/18/429268/176911.terrain differ diff --git a/public/terrain/18/429268/176912.terrain b/public/terrain/18/429268/176912.terrain new file mode 100644 index 000000000..a58c4ee4b Binary files /dev/null and b/public/terrain/18/429268/176912.terrain differ diff --git a/public/terrain/18/429268/176913.terrain b/public/terrain/18/429268/176913.terrain new file mode 100644 index 000000000..80501031d Binary files /dev/null and b/public/terrain/18/429268/176913.terrain differ diff --git a/public/terrain/18/429268/176914.terrain b/public/terrain/18/429268/176914.terrain new file mode 100644 index 000000000..0d67e211a Binary files /dev/null and b/public/terrain/18/429268/176914.terrain differ diff --git a/public/terrain/18/429268/176915.terrain b/public/terrain/18/429268/176915.terrain new file mode 100644 index 000000000..bbf4bd244 Binary files /dev/null and b/public/terrain/18/429268/176915.terrain differ diff --git a/public/terrain/18/429268/176916.terrain b/public/terrain/18/429268/176916.terrain new file mode 100644 index 000000000..25967e019 Binary files /dev/null and b/public/terrain/18/429268/176916.terrain differ diff --git a/public/terrain/18/429268/176917.terrain b/public/terrain/18/429268/176917.terrain new file mode 100644 index 000000000..9f820c641 Binary files /dev/null and b/public/terrain/18/429268/176917.terrain differ diff --git a/public/terrain/18/429268/176918.terrain b/public/terrain/18/429268/176918.terrain new file mode 100644 index 000000000..5c0f1ea9c Binary files /dev/null and b/public/terrain/18/429268/176918.terrain differ diff --git a/public/terrain/18/429268/176919.terrain b/public/terrain/18/429268/176919.terrain new file mode 100644 index 000000000..eb7327622 Binary files /dev/null and b/public/terrain/18/429268/176919.terrain differ diff --git a/public/terrain/18/429268/176920.terrain b/public/terrain/18/429268/176920.terrain new file mode 100644 index 000000000..9d0ea2d44 Binary files /dev/null and b/public/terrain/18/429268/176920.terrain differ diff --git a/public/terrain/18/429268/176921.terrain b/public/terrain/18/429268/176921.terrain new file mode 100644 index 000000000..e93a2f4c1 Binary files /dev/null and b/public/terrain/18/429268/176921.terrain differ diff --git a/public/terrain/18/429268/176922.terrain b/public/terrain/18/429268/176922.terrain new file mode 100644 index 000000000..4025bfa36 Binary files /dev/null and b/public/terrain/18/429268/176922.terrain differ diff --git a/public/terrain/18/429268/176923.terrain b/public/terrain/18/429268/176923.terrain new file mode 100644 index 000000000..85bd13e0e Binary files /dev/null and b/public/terrain/18/429268/176923.terrain differ diff --git a/public/terrain/18/429268/176924.terrain b/public/terrain/18/429268/176924.terrain new file mode 100644 index 000000000..1268b4a58 Binary files /dev/null and b/public/terrain/18/429268/176924.terrain differ diff --git a/public/terrain/18/429268/176925.terrain b/public/terrain/18/429268/176925.terrain new file mode 100644 index 000000000..4b53d6ba1 Binary files /dev/null and b/public/terrain/18/429268/176925.terrain differ diff --git a/public/terrain/18/429268/176926.terrain b/public/terrain/18/429268/176926.terrain new file mode 100644 index 000000000..9f64e1c4c Binary files /dev/null and b/public/terrain/18/429268/176926.terrain differ diff --git a/public/terrain/18/429268/176927.terrain b/public/terrain/18/429268/176927.terrain new file mode 100644 index 000000000..4d8b74f13 Binary files /dev/null and b/public/terrain/18/429268/176927.terrain differ diff --git a/public/terrain/18/429268/176928.terrain b/public/terrain/18/429268/176928.terrain new file mode 100644 index 000000000..45bced629 Binary files /dev/null and b/public/terrain/18/429268/176928.terrain differ diff --git a/public/terrain/18/429268/176929.terrain b/public/terrain/18/429268/176929.terrain new file mode 100644 index 000000000..c23cd194d Binary files /dev/null and b/public/terrain/18/429268/176929.terrain differ diff --git a/public/terrain/18/429268/176930.terrain b/public/terrain/18/429268/176930.terrain new file mode 100644 index 000000000..6b55c04c8 Binary files /dev/null and b/public/terrain/18/429268/176930.terrain differ diff --git a/public/terrain/18/429268/176931.terrain b/public/terrain/18/429268/176931.terrain new file mode 100644 index 000000000..99f6161d7 Binary files /dev/null and b/public/terrain/18/429268/176931.terrain differ diff --git a/public/terrain/18/429268/176932.terrain b/public/terrain/18/429268/176932.terrain new file mode 100644 index 000000000..c3cffd766 Binary files /dev/null and b/public/terrain/18/429268/176932.terrain differ diff --git a/public/terrain/18/429268/176933.terrain b/public/terrain/18/429268/176933.terrain new file mode 100644 index 000000000..095dd949d Binary files /dev/null and b/public/terrain/18/429268/176933.terrain differ diff --git a/public/terrain/18/429268/176934.terrain b/public/terrain/18/429268/176934.terrain new file mode 100644 index 000000000..e65516302 Binary files /dev/null and b/public/terrain/18/429268/176934.terrain differ diff --git a/public/terrain/18/429268/176935.terrain b/public/terrain/18/429268/176935.terrain new file mode 100644 index 000000000..abea11616 Binary files /dev/null and b/public/terrain/18/429268/176935.terrain differ diff --git a/public/terrain/18/429268/176936.terrain b/public/terrain/18/429268/176936.terrain new file mode 100644 index 000000000..1dfa92d3a Binary files /dev/null and b/public/terrain/18/429268/176936.terrain differ diff --git a/public/terrain/18/429268/176937.terrain b/public/terrain/18/429268/176937.terrain new file mode 100644 index 000000000..36b0f72af Binary files /dev/null and b/public/terrain/18/429268/176937.terrain differ diff --git a/public/terrain/18/429268/176938.terrain b/public/terrain/18/429268/176938.terrain new file mode 100644 index 000000000..68f82fce2 Binary files /dev/null and b/public/terrain/18/429268/176938.terrain differ diff --git a/public/terrain/18/429268/176939.terrain b/public/terrain/18/429268/176939.terrain new file mode 100644 index 000000000..739d72687 Binary files /dev/null and b/public/terrain/18/429268/176939.terrain differ diff --git a/public/terrain/18/429268/176940.terrain b/public/terrain/18/429268/176940.terrain new file mode 100644 index 000000000..eda889abf Binary files /dev/null and b/public/terrain/18/429268/176940.terrain differ diff --git a/public/terrain/18/429268/176941.terrain b/public/terrain/18/429268/176941.terrain new file mode 100644 index 000000000..632b14a16 Binary files /dev/null and b/public/terrain/18/429268/176941.terrain differ diff --git a/public/terrain/18/429268/176942.terrain b/public/terrain/18/429268/176942.terrain new file mode 100644 index 000000000..cf5e0bf0a Binary files /dev/null and b/public/terrain/18/429268/176942.terrain differ diff --git a/public/terrain/18/429268/176943.terrain b/public/terrain/18/429268/176943.terrain new file mode 100644 index 000000000..d8afd73bc Binary files /dev/null and b/public/terrain/18/429268/176943.terrain differ diff --git a/public/terrain/18/429268/176944.terrain b/public/terrain/18/429268/176944.terrain new file mode 100644 index 000000000..85b5c7e2f Binary files /dev/null and b/public/terrain/18/429268/176944.terrain differ diff --git a/public/terrain/18/429268/176945.terrain b/public/terrain/18/429268/176945.terrain new file mode 100644 index 000000000..e567d33bd Binary files /dev/null and b/public/terrain/18/429268/176945.terrain differ diff --git a/public/terrain/18/429268/176946.terrain b/public/terrain/18/429268/176946.terrain new file mode 100644 index 000000000..e6db9df88 Binary files /dev/null and b/public/terrain/18/429268/176946.terrain differ diff --git a/public/terrain/18/429268/176947.terrain b/public/terrain/18/429268/176947.terrain new file mode 100644 index 000000000..5d5667710 Binary files /dev/null and b/public/terrain/18/429268/176947.terrain differ diff --git a/public/terrain/18/429268/176948.terrain b/public/terrain/18/429268/176948.terrain new file mode 100644 index 000000000..483134d22 Binary files /dev/null and b/public/terrain/18/429268/176948.terrain differ diff --git a/public/terrain/18/429268/176949.terrain b/public/terrain/18/429268/176949.terrain new file mode 100644 index 000000000..cc35b920a Binary files /dev/null and b/public/terrain/18/429268/176949.terrain differ diff --git a/public/terrain/18/429268/176950.terrain b/public/terrain/18/429268/176950.terrain new file mode 100644 index 000000000..ddd6d20d9 Binary files /dev/null and b/public/terrain/18/429268/176950.terrain differ diff --git a/public/terrain/18/429268/176951.terrain b/public/terrain/18/429268/176951.terrain new file mode 100644 index 000000000..4c1b1ed53 Binary files /dev/null and b/public/terrain/18/429268/176951.terrain differ diff --git a/public/terrain/18/429268/176952.terrain b/public/terrain/18/429268/176952.terrain new file mode 100644 index 000000000..f46d0944c Binary files /dev/null and b/public/terrain/18/429268/176952.terrain differ diff --git a/public/terrain/18/429268/176953.terrain b/public/terrain/18/429268/176953.terrain new file mode 100644 index 000000000..fb0c1efb2 Binary files /dev/null and b/public/terrain/18/429268/176953.terrain differ diff --git a/public/terrain/18/429268/176954.terrain b/public/terrain/18/429268/176954.terrain new file mode 100644 index 000000000..4f4f66bc6 Binary files /dev/null and b/public/terrain/18/429268/176954.terrain differ diff --git a/public/terrain/18/429268/176955.terrain b/public/terrain/18/429268/176955.terrain new file mode 100644 index 000000000..86975a17e Binary files /dev/null and b/public/terrain/18/429268/176955.terrain differ diff --git a/public/terrain/18/429268/176956.terrain b/public/terrain/18/429268/176956.terrain new file mode 100644 index 000000000..26d5bfa1c Binary files /dev/null and b/public/terrain/18/429268/176956.terrain differ diff --git a/public/terrain/18/429268/176957.terrain b/public/terrain/18/429268/176957.terrain new file mode 100644 index 000000000..aa82b305b Binary files /dev/null and b/public/terrain/18/429268/176957.terrain differ diff --git a/public/terrain/18/429268/176958.terrain b/public/terrain/18/429268/176958.terrain new file mode 100644 index 000000000..f5800ea30 Binary files /dev/null and b/public/terrain/18/429268/176958.terrain differ diff --git a/public/terrain/18/429268/176959.terrain b/public/terrain/18/429268/176959.terrain new file mode 100644 index 000000000..421757836 Binary files /dev/null and b/public/terrain/18/429268/176959.terrain differ diff --git a/public/terrain/18/429268/176960.terrain b/public/terrain/18/429268/176960.terrain new file mode 100644 index 000000000..0089bc94c Binary files /dev/null and b/public/terrain/18/429268/176960.terrain differ diff --git a/public/terrain/18/429268/176961.terrain b/public/terrain/18/429268/176961.terrain new file mode 100644 index 000000000..7ab7da3c8 Binary files /dev/null and b/public/terrain/18/429268/176961.terrain differ diff --git a/public/terrain/18/429268/176962.terrain b/public/terrain/18/429268/176962.terrain new file mode 100644 index 000000000..605aac187 Binary files /dev/null and b/public/terrain/18/429268/176962.terrain differ diff --git a/public/terrain/18/429268/176963.terrain b/public/terrain/18/429268/176963.terrain new file mode 100644 index 000000000..c36213065 Binary files /dev/null and b/public/terrain/18/429268/176963.terrain differ diff --git a/public/terrain/18/429268/176964.terrain b/public/terrain/18/429268/176964.terrain new file mode 100644 index 000000000..83c61ca34 Binary files /dev/null and b/public/terrain/18/429268/176964.terrain differ diff --git a/public/terrain/18/429268/176965.terrain b/public/terrain/18/429268/176965.terrain new file mode 100644 index 000000000..a6d7ef622 Binary files /dev/null and b/public/terrain/18/429268/176965.terrain differ diff --git a/public/terrain/18/429268/176966.terrain b/public/terrain/18/429268/176966.terrain new file mode 100644 index 000000000..64f2025f5 Binary files /dev/null and b/public/terrain/18/429268/176966.terrain differ diff --git a/public/terrain/18/429268/176967.terrain b/public/terrain/18/429268/176967.terrain new file mode 100644 index 000000000..631df736b Binary files /dev/null and b/public/terrain/18/429268/176967.terrain differ diff --git a/public/terrain/18/429268/176968.terrain b/public/terrain/18/429268/176968.terrain new file mode 100644 index 000000000..fae65e7ab Binary files /dev/null and b/public/terrain/18/429268/176968.terrain differ diff --git a/public/terrain/18/429268/176969.terrain b/public/terrain/18/429268/176969.terrain new file mode 100644 index 000000000..65580f304 Binary files /dev/null and b/public/terrain/18/429268/176969.terrain differ diff --git a/public/terrain/18/429268/176970.terrain b/public/terrain/18/429268/176970.terrain new file mode 100644 index 000000000..03ba1b660 Binary files /dev/null and b/public/terrain/18/429268/176970.terrain differ diff --git a/public/terrain/18/429268/176971.terrain b/public/terrain/18/429268/176971.terrain new file mode 100644 index 000000000..ffee50f84 Binary files /dev/null and b/public/terrain/18/429268/176971.terrain differ diff --git a/public/terrain/18/429268/176972.terrain b/public/terrain/18/429268/176972.terrain new file mode 100644 index 000000000..2d81a0c7b Binary files /dev/null and b/public/terrain/18/429268/176972.terrain differ diff --git a/public/terrain/18/429268/176973.terrain b/public/terrain/18/429268/176973.terrain new file mode 100644 index 000000000..26b8753cc Binary files /dev/null and b/public/terrain/18/429268/176973.terrain differ diff --git a/public/terrain/18/429268/176974.terrain b/public/terrain/18/429268/176974.terrain new file mode 100644 index 000000000..34b77a46c Binary files /dev/null and b/public/terrain/18/429268/176974.terrain differ diff --git a/public/terrain/18/429268/176975.terrain b/public/terrain/18/429268/176975.terrain new file mode 100644 index 000000000..99f40c254 Binary files /dev/null and b/public/terrain/18/429268/176975.terrain differ diff --git a/public/terrain/18/429268/176976.terrain b/public/terrain/18/429268/176976.terrain new file mode 100644 index 000000000..0bd965c40 Binary files /dev/null and b/public/terrain/18/429268/176976.terrain differ diff --git a/public/terrain/18/429268/176977.terrain b/public/terrain/18/429268/176977.terrain new file mode 100644 index 000000000..b354ab6bf Binary files /dev/null and b/public/terrain/18/429268/176977.terrain differ diff --git a/public/terrain/18/429268/176978.terrain b/public/terrain/18/429268/176978.terrain new file mode 100644 index 000000000..a1267bb0f Binary files /dev/null and b/public/terrain/18/429268/176978.terrain differ diff --git a/public/terrain/18/429268/176979.terrain b/public/terrain/18/429268/176979.terrain new file mode 100644 index 000000000..beb033764 Binary files /dev/null and b/public/terrain/18/429268/176979.terrain differ diff --git a/public/terrain/18/429268/176980.terrain b/public/terrain/18/429268/176980.terrain new file mode 100644 index 000000000..2268d72fb Binary files /dev/null and b/public/terrain/18/429268/176980.terrain differ diff --git a/public/terrain/18/429268/176981.terrain b/public/terrain/18/429268/176981.terrain new file mode 100644 index 000000000..1f9a3a297 Binary files /dev/null and b/public/terrain/18/429268/176981.terrain differ diff --git a/public/terrain/18/429268/176982.terrain b/public/terrain/18/429268/176982.terrain new file mode 100644 index 000000000..850e8ccd4 Binary files /dev/null and b/public/terrain/18/429268/176982.terrain differ diff --git a/public/terrain/18/429268/176983.terrain b/public/terrain/18/429268/176983.terrain new file mode 100644 index 000000000..891082ddf Binary files /dev/null and b/public/terrain/18/429268/176983.terrain differ diff --git a/public/terrain/18/429268/176984.terrain b/public/terrain/18/429268/176984.terrain new file mode 100644 index 000000000..1c9c41807 Binary files /dev/null and b/public/terrain/18/429268/176984.terrain differ diff --git a/public/terrain/18/429268/176985.terrain b/public/terrain/18/429268/176985.terrain new file mode 100644 index 000000000..a60f98ded Binary files /dev/null and b/public/terrain/18/429268/176985.terrain differ diff --git a/public/terrain/18/429268/176986.terrain b/public/terrain/18/429268/176986.terrain new file mode 100644 index 000000000..8fd8644a6 Binary files /dev/null and b/public/terrain/18/429268/176986.terrain differ diff --git a/public/terrain/18/429268/176987.terrain b/public/terrain/18/429268/176987.terrain new file mode 100644 index 000000000..eaf4f2abc Binary files /dev/null and b/public/terrain/18/429268/176987.terrain differ diff --git a/public/terrain/18/429268/176988.terrain b/public/terrain/18/429268/176988.terrain new file mode 100644 index 000000000..3cea21c62 Binary files /dev/null and b/public/terrain/18/429268/176988.terrain differ diff --git a/public/terrain/18/429268/176989.terrain b/public/terrain/18/429268/176989.terrain new file mode 100644 index 000000000..e4676541e Binary files /dev/null and b/public/terrain/18/429268/176989.terrain differ diff --git a/public/terrain/18/429268/176990.terrain b/public/terrain/18/429268/176990.terrain new file mode 100644 index 000000000..69db759fb Binary files /dev/null and b/public/terrain/18/429268/176990.terrain differ diff --git a/public/terrain/18/429268/176991.terrain b/public/terrain/18/429268/176991.terrain new file mode 100644 index 000000000..e0cc302cd Binary files /dev/null and b/public/terrain/18/429268/176991.terrain differ diff --git a/public/terrain/18/429268/176992.terrain b/public/terrain/18/429268/176992.terrain new file mode 100644 index 000000000..fc1ada169 Binary files /dev/null and b/public/terrain/18/429268/176992.terrain differ diff --git a/public/terrain/18/429268/176993.terrain b/public/terrain/18/429268/176993.terrain new file mode 100644 index 000000000..98f113a98 Binary files /dev/null and b/public/terrain/18/429268/176993.terrain differ diff --git a/public/terrain/18/429268/176994.terrain b/public/terrain/18/429268/176994.terrain new file mode 100644 index 000000000..dbf2926a3 Binary files /dev/null and b/public/terrain/18/429268/176994.terrain differ diff --git a/public/terrain/18/429268/176995.terrain b/public/terrain/18/429268/176995.terrain new file mode 100644 index 000000000..0f9bab4c6 Binary files /dev/null and b/public/terrain/18/429268/176995.terrain differ diff --git a/public/terrain/18/429268/176996.terrain b/public/terrain/18/429268/176996.terrain new file mode 100644 index 000000000..2feb88f6a Binary files /dev/null and b/public/terrain/18/429268/176996.terrain differ diff --git a/public/terrain/18/429268/176997.terrain b/public/terrain/18/429268/176997.terrain new file mode 100644 index 000000000..f331cceb0 Binary files /dev/null and b/public/terrain/18/429268/176997.terrain differ diff --git a/public/terrain/18/429268/176998.terrain b/public/terrain/18/429268/176998.terrain new file mode 100644 index 000000000..36980cd42 Binary files /dev/null and b/public/terrain/18/429268/176998.terrain differ diff --git a/public/terrain/18/429268/176999.terrain b/public/terrain/18/429268/176999.terrain new file mode 100644 index 000000000..4629474d1 Binary files /dev/null and b/public/terrain/18/429268/176999.terrain differ diff --git a/public/terrain/18/429268/177000.terrain b/public/terrain/18/429268/177000.terrain new file mode 100644 index 000000000..31056a891 Binary files /dev/null and b/public/terrain/18/429268/177000.terrain differ diff --git a/public/terrain/18/429268/177001.terrain b/public/terrain/18/429268/177001.terrain new file mode 100644 index 000000000..8f0641383 Binary files /dev/null and b/public/terrain/18/429268/177001.terrain differ diff --git a/public/terrain/18/429268/177002.terrain b/public/terrain/18/429268/177002.terrain new file mode 100644 index 000000000..971eb1ec7 Binary files /dev/null and b/public/terrain/18/429268/177002.terrain differ diff --git a/public/terrain/18/429268/177003.terrain b/public/terrain/18/429268/177003.terrain new file mode 100644 index 000000000..285dd8620 Binary files /dev/null and b/public/terrain/18/429268/177003.terrain differ diff --git a/public/terrain/18/429268/177004.terrain b/public/terrain/18/429268/177004.terrain new file mode 100644 index 000000000..9db2a3f13 Binary files /dev/null and b/public/terrain/18/429268/177004.terrain differ diff --git a/public/terrain/18/429268/177005.terrain b/public/terrain/18/429268/177005.terrain new file mode 100644 index 000000000..055875552 Binary files /dev/null and b/public/terrain/18/429268/177005.terrain differ diff --git a/public/terrain/18/429268/177006.terrain b/public/terrain/18/429268/177006.terrain new file mode 100644 index 000000000..e3209816a Binary files /dev/null and b/public/terrain/18/429268/177006.terrain differ diff --git a/public/terrain/18/429268/177007.terrain b/public/terrain/18/429268/177007.terrain new file mode 100644 index 000000000..9d7e58015 Binary files /dev/null and b/public/terrain/18/429268/177007.terrain differ diff --git a/public/terrain/18/429268/177008.terrain b/public/terrain/18/429268/177008.terrain new file mode 100644 index 000000000..10372853a Binary files /dev/null and b/public/terrain/18/429268/177008.terrain differ diff --git a/public/terrain/18/429268/177009.terrain b/public/terrain/18/429268/177009.terrain new file mode 100644 index 000000000..3679299b2 Binary files /dev/null and b/public/terrain/18/429268/177009.terrain differ diff --git a/public/terrain/18/429268/177010.terrain b/public/terrain/18/429268/177010.terrain new file mode 100644 index 000000000..52272eb4e Binary files /dev/null and b/public/terrain/18/429268/177010.terrain differ diff --git a/public/terrain/18/429268/177011.terrain b/public/terrain/18/429268/177011.terrain new file mode 100644 index 000000000..a3deb9d0d Binary files /dev/null and b/public/terrain/18/429268/177011.terrain differ diff --git a/public/terrain/18/429268/177012.terrain b/public/terrain/18/429268/177012.terrain new file mode 100644 index 000000000..8c0065800 Binary files /dev/null and b/public/terrain/18/429268/177012.terrain differ diff --git a/public/terrain/18/429268/177013.terrain b/public/terrain/18/429268/177013.terrain new file mode 100644 index 000000000..d8d858abe Binary files /dev/null and b/public/terrain/18/429268/177013.terrain differ diff --git a/public/terrain/18/429268/177014.terrain b/public/terrain/18/429268/177014.terrain new file mode 100644 index 000000000..5d33984cb Binary files /dev/null and b/public/terrain/18/429268/177014.terrain differ diff --git a/public/terrain/18/429268/177015.terrain b/public/terrain/18/429268/177015.terrain new file mode 100644 index 000000000..270d5fd3b Binary files /dev/null and b/public/terrain/18/429268/177015.terrain differ diff --git a/public/terrain/18/429268/177016.terrain b/public/terrain/18/429268/177016.terrain new file mode 100644 index 000000000..3a6c9a810 Binary files /dev/null and b/public/terrain/18/429268/177016.terrain differ diff --git a/public/terrain/18/429268/177017.terrain b/public/terrain/18/429268/177017.terrain new file mode 100644 index 000000000..375d94b11 Binary files /dev/null and b/public/terrain/18/429268/177017.terrain differ diff --git a/public/terrain/18/429268/177018.terrain b/public/terrain/18/429268/177018.terrain new file mode 100644 index 000000000..73b47f3b6 Binary files /dev/null and b/public/terrain/18/429268/177018.terrain differ diff --git a/public/terrain/18/429268/177019.terrain b/public/terrain/18/429268/177019.terrain new file mode 100644 index 000000000..b132dc616 Binary files /dev/null and b/public/terrain/18/429268/177019.terrain differ diff --git a/public/terrain/18/429268/177020.terrain b/public/terrain/18/429268/177020.terrain new file mode 100644 index 000000000..cb3326a17 Binary files /dev/null and b/public/terrain/18/429268/177020.terrain differ diff --git a/public/terrain/18/429268/177021.terrain b/public/terrain/18/429268/177021.terrain new file mode 100644 index 000000000..9b86f8599 Binary files /dev/null and b/public/terrain/18/429268/177021.terrain differ diff --git a/public/terrain/18/429268/177022.terrain b/public/terrain/18/429268/177022.terrain new file mode 100644 index 000000000..53d98c6bf Binary files /dev/null and b/public/terrain/18/429268/177022.terrain differ diff --git a/public/terrain/18/429268/177023.terrain b/public/terrain/18/429268/177023.terrain new file mode 100644 index 000000000..c61f343a0 Binary files /dev/null and b/public/terrain/18/429268/177023.terrain differ diff --git a/public/terrain/18/429268/177024.terrain b/public/terrain/18/429268/177024.terrain new file mode 100644 index 000000000..540ab3975 Binary files /dev/null and b/public/terrain/18/429268/177024.terrain differ diff --git a/public/terrain/18/429268/177025.terrain b/public/terrain/18/429268/177025.terrain new file mode 100644 index 000000000..fbb72b13d Binary files /dev/null and b/public/terrain/18/429268/177025.terrain differ diff --git a/public/terrain/18/429268/177026.terrain b/public/terrain/18/429268/177026.terrain new file mode 100644 index 000000000..6b3cd6014 Binary files /dev/null and b/public/terrain/18/429268/177026.terrain differ diff --git a/public/terrain/18/429268/177027.terrain b/public/terrain/18/429268/177027.terrain new file mode 100644 index 000000000..4a53a737b Binary files /dev/null and b/public/terrain/18/429268/177027.terrain differ diff --git a/public/terrain/18/429268/177028.terrain b/public/terrain/18/429268/177028.terrain new file mode 100644 index 000000000..fa7bf27b9 Binary files /dev/null and b/public/terrain/18/429268/177028.terrain differ diff --git a/public/terrain/18/429268/177029.terrain b/public/terrain/18/429268/177029.terrain new file mode 100644 index 000000000..49d9ad5c6 Binary files /dev/null and b/public/terrain/18/429268/177029.terrain differ diff --git a/public/terrain/18/429269/176871.terrain b/public/terrain/18/429269/176871.terrain new file mode 100644 index 000000000..97e0add60 Binary files /dev/null and b/public/terrain/18/429269/176871.terrain differ diff --git a/public/terrain/18/429269/176872.terrain b/public/terrain/18/429269/176872.terrain new file mode 100644 index 000000000..a27f690ae Binary files /dev/null and b/public/terrain/18/429269/176872.terrain differ diff --git a/public/terrain/18/429269/176873.terrain b/public/terrain/18/429269/176873.terrain new file mode 100644 index 000000000..58b160c31 Binary files /dev/null and b/public/terrain/18/429269/176873.terrain differ diff --git a/public/terrain/18/429269/176874.terrain b/public/terrain/18/429269/176874.terrain new file mode 100644 index 000000000..d2897d46c Binary files /dev/null and b/public/terrain/18/429269/176874.terrain differ diff --git a/public/terrain/18/429269/176875.terrain b/public/terrain/18/429269/176875.terrain new file mode 100644 index 000000000..fa293bbd3 Binary files /dev/null and b/public/terrain/18/429269/176875.terrain differ diff --git a/public/terrain/18/429269/176876.terrain b/public/terrain/18/429269/176876.terrain new file mode 100644 index 000000000..7cc76ab0d Binary files /dev/null and b/public/terrain/18/429269/176876.terrain differ diff --git a/public/terrain/18/429269/176877.terrain b/public/terrain/18/429269/176877.terrain new file mode 100644 index 000000000..94c369d2f Binary files /dev/null and b/public/terrain/18/429269/176877.terrain differ diff --git a/public/terrain/18/429269/176878.terrain b/public/terrain/18/429269/176878.terrain new file mode 100644 index 000000000..5e7dbceec Binary files /dev/null and b/public/terrain/18/429269/176878.terrain differ diff --git a/public/terrain/18/429269/176879.terrain b/public/terrain/18/429269/176879.terrain new file mode 100644 index 000000000..1abca56fe Binary files /dev/null and b/public/terrain/18/429269/176879.terrain differ diff --git a/public/terrain/18/429269/176880.terrain b/public/terrain/18/429269/176880.terrain new file mode 100644 index 000000000..bf4ac89b9 Binary files /dev/null and b/public/terrain/18/429269/176880.terrain differ diff --git a/public/terrain/18/429269/176881.terrain b/public/terrain/18/429269/176881.terrain new file mode 100644 index 000000000..1a3cd415a Binary files /dev/null and b/public/terrain/18/429269/176881.terrain differ diff --git a/public/terrain/18/429269/176882.terrain b/public/terrain/18/429269/176882.terrain new file mode 100644 index 000000000..90b2b003b Binary files /dev/null and b/public/terrain/18/429269/176882.terrain differ diff --git a/public/terrain/18/429269/176883.terrain b/public/terrain/18/429269/176883.terrain new file mode 100644 index 000000000..9b0e3e119 Binary files /dev/null and b/public/terrain/18/429269/176883.terrain differ diff --git a/public/terrain/18/429269/176884.terrain b/public/terrain/18/429269/176884.terrain new file mode 100644 index 000000000..e90e539e8 Binary files /dev/null and b/public/terrain/18/429269/176884.terrain differ diff --git a/public/terrain/18/429269/176885.terrain b/public/terrain/18/429269/176885.terrain new file mode 100644 index 000000000..83df22a97 Binary files /dev/null and b/public/terrain/18/429269/176885.terrain differ diff --git a/public/terrain/18/429269/176886.terrain b/public/terrain/18/429269/176886.terrain new file mode 100644 index 000000000..064dc8736 Binary files /dev/null and b/public/terrain/18/429269/176886.terrain differ diff --git a/public/terrain/18/429269/176887.terrain b/public/terrain/18/429269/176887.terrain new file mode 100644 index 000000000..501098467 Binary files /dev/null and b/public/terrain/18/429269/176887.terrain differ diff --git a/public/terrain/18/429269/176888.terrain b/public/terrain/18/429269/176888.terrain new file mode 100644 index 000000000..9d8812855 Binary files /dev/null and b/public/terrain/18/429269/176888.terrain differ diff --git a/public/terrain/18/429269/176889.terrain b/public/terrain/18/429269/176889.terrain new file mode 100644 index 000000000..f3d1abb69 Binary files /dev/null and b/public/terrain/18/429269/176889.terrain differ diff --git a/public/terrain/18/429269/176890.terrain b/public/terrain/18/429269/176890.terrain new file mode 100644 index 000000000..783600d39 Binary files /dev/null and b/public/terrain/18/429269/176890.terrain differ diff --git a/public/terrain/18/429269/176891.terrain b/public/terrain/18/429269/176891.terrain new file mode 100644 index 000000000..a2c4b9166 Binary files /dev/null and b/public/terrain/18/429269/176891.terrain differ diff --git a/public/terrain/18/429269/176892.terrain b/public/terrain/18/429269/176892.terrain new file mode 100644 index 000000000..76cca53eb Binary files /dev/null and b/public/terrain/18/429269/176892.terrain differ diff --git a/public/terrain/18/429269/176893.terrain b/public/terrain/18/429269/176893.terrain new file mode 100644 index 000000000..c64253c48 Binary files /dev/null and b/public/terrain/18/429269/176893.terrain differ diff --git a/public/terrain/18/429269/176894.terrain b/public/terrain/18/429269/176894.terrain new file mode 100644 index 000000000..467520957 Binary files /dev/null and b/public/terrain/18/429269/176894.terrain differ diff --git a/public/terrain/18/429269/176895.terrain b/public/terrain/18/429269/176895.terrain new file mode 100644 index 000000000..8b650414e Binary files /dev/null and b/public/terrain/18/429269/176895.terrain differ diff --git a/public/terrain/18/429269/176896.terrain b/public/terrain/18/429269/176896.terrain new file mode 100644 index 000000000..05d16460f Binary files /dev/null and b/public/terrain/18/429269/176896.terrain differ diff --git a/public/terrain/18/429269/176897.terrain b/public/terrain/18/429269/176897.terrain new file mode 100644 index 000000000..aa8afe874 Binary files /dev/null and b/public/terrain/18/429269/176897.terrain differ diff --git a/public/terrain/18/429269/176898.terrain b/public/terrain/18/429269/176898.terrain new file mode 100644 index 000000000..b5a66e426 Binary files /dev/null and b/public/terrain/18/429269/176898.terrain differ diff --git a/public/terrain/18/429269/176899.terrain b/public/terrain/18/429269/176899.terrain new file mode 100644 index 000000000..143cee8f6 Binary files /dev/null and b/public/terrain/18/429269/176899.terrain differ diff --git a/public/terrain/18/429269/176900.terrain b/public/terrain/18/429269/176900.terrain new file mode 100644 index 000000000..f4b80226a Binary files /dev/null and b/public/terrain/18/429269/176900.terrain differ diff --git a/public/terrain/18/429269/176901.terrain b/public/terrain/18/429269/176901.terrain new file mode 100644 index 000000000..3fb6f580b Binary files /dev/null and b/public/terrain/18/429269/176901.terrain differ diff --git a/public/terrain/18/429269/176902.terrain b/public/terrain/18/429269/176902.terrain new file mode 100644 index 000000000..759f417d9 Binary files /dev/null and b/public/terrain/18/429269/176902.terrain differ diff --git a/public/terrain/18/429269/176903.terrain b/public/terrain/18/429269/176903.terrain new file mode 100644 index 000000000..25b3e1071 Binary files /dev/null and b/public/terrain/18/429269/176903.terrain differ diff --git a/public/terrain/18/429269/176904.terrain b/public/terrain/18/429269/176904.terrain new file mode 100644 index 000000000..03d8199ad Binary files /dev/null and b/public/terrain/18/429269/176904.terrain differ diff --git a/public/terrain/18/429269/176905.terrain b/public/terrain/18/429269/176905.terrain new file mode 100644 index 000000000..54f5cbfda Binary files /dev/null and b/public/terrain/18/429269/176905.terrain differ diff --git a/public/terrain/18/429269/176906.terrain b/public/terrain/18/429269/176906.terrain new file mode 100644 index 000000000..a0a288745 Binary files /dev/null and b/public/terrain/18/429269/176906.terrain differ diff --git a/public/terrain/18/429269/176907.terrain b/public/terrain/18/429269/176907.terrain new file mode 100644 index 000000000..6741f454e Binary files /dev/null and b/public/terrain/18/429269/176907.terrain differ diff --git a/public/terrain/18/429269/176908.terrain b/public/terrain/18/429269/176908.terrain new file mode 100644 index 000000000..5bbc5e2fc Binary files /dev/null and b/public/terrain/18/429269/176908.terrain differ diff --git a/public/terrain/18/429269/176909.terrain b/public/terrain/18/429269/176909.terrain new file mode 100644 index 000000000..bef521838 Binary files /dev/null and b/public/terrain/18/429269/176909.terrain differ diff --git a/public/terrain/18/429269/176910.terrain b/public/terrain/18/429269/176910.terrain new file mode 100644 index 000000000..5ee00f0a7 Binary files /dev/null and b/public/terrain/18/429269/176910.terrain differ diff --git a/public/terrain/18/429269/176911.terrain b/public/terrain/18/429269/176911.terrain new file mode 100644 index 000000000..66de5ba0e Binary files /dev/null and b/public/terrain/18/429269/176911.terrain differ diff --git a/public/terrain/18/429269/176912.terrain b/public/terrain/18/429269/176912.terrain new file mode 100644 index 000000000..9ec3b9c6d Binary files /dev/null and b/public/terrain/18/429269/176912.terrain differ diff --git a/public/terrain/18/429269/176913.terrain b/public/terrain/18/429269/176913.terrain new file mode 100644 index 000000000..9216248a0 Binary files /dev/null and b/public/terrain/18/429269/176913.terrain differ diff --git a/public/terrain/18/429269/176914.terrain b/public/terrain/18/429269/176914.terrain new file mode 100644 index 000000000..e3d253be5 Binary files /dev/null and b/public/terrain/18/429269/176914.terrain differ diff --git a/public/terrain/18/429269/176915.terrain b/public/terrain/18/429269/176915.terrain new file mode 100644 index 000000000..d6ffc7343 Binary files /dev/null and b/public/terrain/18/429269/176915.terrain differ diff --git a/public/terrain/18/429269/176916.terrain b/public/terrain/18/429269/176916.terrain new file mode 100644 index 000000000..2b826b975 Binary files /dev/null and b/public/terrain/18/429269/176916.terrain differ diff --git a/public/terrain/18/429269/176917.terrain b/public/terrain/18/429269/176917.terrain new file mode 100644 index 000000000..49a9bc6d6 Binary files /dev/null and b/public/terrain/18/429269/176917.terrain differ diff --git a/public/terrain/18/429269/176918.terrain b/public/terrain/18/429269/176918.terrain new file mode 100644 index 000000000..e951a46e9 Binary files /dev/null and b/public/terrain/18/429269/176918.terrain differ diff --git a/public/terrain/18/429269/176919.terrain b/public/terrain/18/429269/176919.terrain new file mode 100644 index 000000000..c6ff174b9 Binary files /dev/null and b/public/terrain/18/429269/176919.terrain differ diff --git a/public/terrain/18/429269/176920.terrain b/public/terrain/18/429269/176920.terrain new file mode 100644 index 000000000..b73851b5b Binary files /dev/null and b/public/terrain/18/429269/176920.terrain differ diff --git a/public/terrain/18/429269/176921.terrain b/public/terrain/18/429269/176921.terrain new file mode 100644 index 000000000..ad9645073 Binary files /dev/null and b/public/terrain/18/429269/176921.terrain differ diff --git a/public/terrain/18/429269/176922.terrain b/public/terrain/18/429269/176922.terrain new file mode 100644 index 000000000..c8ff3a723 Binary files /dev/null and b/public/terrain/18/429269/176922.terrain differ diff --git a/public/terrain/18/429269/176923.terrain b/public/terrain/18/429269/176923.terrain new file mode 100644 index 000000000..2301cb364 Binary files /dev/null and b/public/terrain/18/429269/176923.terrain differ diff --git a/public/terrain/18/429269/176924.terrain b/public/terrain/18/429269/176924.terrain new file mode 100644 index 000000000..3a3f62407 Binary files /dev/null and b/public/terrain/18/429269/176924.terrain differ diff --git a/public/terrain/18/429269/176925.terrain b/public/terrain/18/429269/176925.terrain new file mode 100644 index 000000000..fba8b1098 Binary files /dev/null and b/public/terrain/18/429269/176925.terrain differ diff --git a/public/terrain/18/429269/176926.terrain b/public/terrain/18/429269/176926.terrain new file mode 100644 index 000000000..202078e35 Binary files /dev/null and b/public/terrain/18/429269/176926.terrain differ diff --git a/public/terrain/18/429269/176927.terrain b/public/terrain/18/429269/176927.terrain new file mode 100644 index 000000000..6040b9432 Binary files /dev/null and b/public/terrain/18/429269/176927.terrain differ diff --git a/public/terrain/18/429269/176928.terrain b/public/terrain/18/429269/176928.terrain new file mode 100644 index 000000000..7ed24ff46 Binary files /dev/null and b/public/terrain/18/429269/176928.terrain differ diff --git a/public/terrain/18/429269/176929.terrain b/public/terrain/18/429269/176929.terrain new file mode 100644 index 000000000..b4f57c4cd Binary files /dev/null and b/public/terrain/18/429269/176929.terrain differ diff --git a/public/terrain/18/429269/176930.terrain b/public/terrain/18/429269/176930.terrain new file mode 100644 index 000000000..1395f1c56 Binary files /dev/null and b/public/terrain/18/429269/176930.terrain differ diff --git a/public/terrain/18/429269/176931.terrain b/public/terrain/18/429269/176931.terrain new file mode 100644 index 000000000..be3ed1f8b Binary files /dev/null and b/public/terrain/18/429269/176931.terrain differ diff --git a/public/terrain/18/429269/176932.terrain b/public/terrain/18/429269/176932.terrain new file mode 100644 index 000000000..17cd61440 Binary files /dev/null and b/public/terrain/18/429269/176932.terrain differ diff --git a/public/terrain/18/429269/176933.terrain b/public/terrain/18/429269/176933.terrain new file mode 100644 index 000000000..7b0aa76f7 Binary files /dev/null and b/public/terrain/18/429269/176933.terrain differ diff --git a/public/terrain/18/429269/176934.terrain b/public/terrain/18/429269/176934.terrain new file mode 100644 index 000000000..67826e063 Binary files /dev/null and b/public/terrain/18/429269/176934.terrain differ diff --git a/public/terrain/18/429269/176935.terrain b/public/terrain/18/429269/176935.terrain new file mode 100644 index 000000000..87f341fb6 Binary files /dev/null and b/public/terrain/18/429269/176935.terrain differ diff --git a/public/terrain/18/429269/176936.terrain b/public/terrain/18/429269/176936.terrain new file mode 100644 index 000000000..e05ff5979 Binary files /dev/null and b/public/terrain/18/429269/176936.terrain differ diff --git a/public/terrain/18/429269/176937.terrain b/public/terrain/18/429269/176937.terrain new file mode 100644 index 000000000..4c37a963b Binary files /dev/null and b/public/terrain/18/429269/176937.terrain differ diff --git a/public/terrain/18/429269/176938.terrain b/public/terrain/18/429269/176938.terrain new file mode 100644 index 000000000..cc3f30e1f Binary files /dev/null and b/public/terrain/18/429269/176938.terrain differ diff --git a/public/terrain/18/429269/176939.terrain b/public/terrain/18/429269/176939.terrain new file mode 100644 index 000000000..632d9d630 Binary files /dev/null and b/public/terrain/18/429269/176939.terrain differ diff --git a/public/terrain/18/429269/176940.terrain b/public/terrain/18/429269/176940.terrain new file mode 100644 index 000000000..561505296 Binary files /dev/null and b/public/terrain/18/429269/176940.terrain differ diff --git a/public/terrain/18/429269/176941.terrain b/public/terrain/18/429269/176941.terrain new file mode 100644 index 000000000..0981cc061 Binary files /dev/null and b/public/terrain/18/429269/176941.terrain differ diff --git a/public/terrain/18/429269/176942.terrain b/public/terrain/18/429269/176942.terrain new file mode 100644 index 000000000..b58f6ace9 Binary files /dev/null and b/public/terrain/18/429269/176942.terrain differ diff --git a/public/terrain/18/429269/176943.terrain b/public/terrain/18/429269/176943.terrain new file mode 100644 index 000000000..044a0e640 Binary files /dev/null and b/public/terrain/18/429269/176943.terrain differ diff --git a/public/terrain/18/429269/176944.terrain b/public/terrain/18/429269/176944.terrain new file mode 100644 index 000000000..4a5c55024 Binary files /dev/null and b/public/terrain/18/429269/176944.terrain differ diff --git a/public/terrain/18/429269/176945.terrain b/public/terrain/18/429269/176945.terrain new file mode 100644 index 000000000..b22070af3 Binary files /dev/null and b/public/terrain/18/429269/176945.terrain differ diff --git a/public/terrain/18/429269/176946.terrain b/public/terrain/18/429269/176946.terrain new file mode 100644 index 000000000..31f5afece Binary files /dev/null and b/public/terrain/18/429269/176946.terrain differ diff --git a/public/terrain/18/429269/176947.terrain b/public/terrain/18/429269/176947.terrain new file mode 100644 index 000000000..75294faf6 Binary files /dev/null and b/public/terrain/18/429269/176947.terrain differ diff --git a/public/terrain/18/429269/176948.terrain b/public/terrain/18/429269/176948.terrain new file mode 100644 index 000000000..66d61bd6b Binary files /dev/null and b/public/terrain/18/429269/176948.terrain differ diff --git a/public/terrain/18/429269/176949.terrain b/public/terrain/18/429269/176949.terrain new file mode 100644 index 000000000..a0263fa37 Binary files /dev/null and b/public/terrain/18/429269/176949.terrain differ diff --git a/public/terrain/18/429269/176950.terrain b/public/terrain/18/429269/176950.terrain new file mode 100644 index 000000000..882d8b310 Binary files /dev/null and b/public/terrain/18/429269/176950.terrain differ diff --git a/public/terrain/18/429269/176951.terrain b/public/terrain/18/429269/176951.terrain new file mode 100644 index 000000000..c1c868af1 Binary files /dev/null and b/public/terrain/18/429269/176951.terrain differ diff --git a/public/terrain/18/429269/176952.terrain b/public/terrain/18/429269/176952.terrain new file mode 100644 index 000000000..2cc4afca9 Binary files /dev/null and b/public/terrain/18/429269/176952.terrain differ diff --git a/public/terrain/18/429269/176953.terrain b/public/terrain/18/429269/176953.terrain new file mode 100644 index 000000000..3c52f541b Binary files /dev/null and b/public/terrain/18/429269/176953.terrain differ diff --git a/public/terrain/18/429269/176954.terrain b/public/terrain/18/429269/176954.terrain new file mode 100644 index 000000000..955ef225d Binary files /dev/null and b/public/terrain/18/429269/176954.terrain differ diff --git a/public/terrain/18/429269/176955.terrain b/public/terrain/18/429269/176955.terrain new file mode 100644 index 000000000..868ac8cf3 Binary files /dev/null and b/public/terrain/18/429269/176955.terrain differ diff --git a/public/terrain/18/429269/176956.terrain b/public/terrain/18/429269/176956.terrain new file mode 100644 index 000000000..c09e40fb2 Binary files /dev/null and b/public/terrain/18/429269/176956.terrain differ diff --git a/public/terrain/18/429269/176957.terrain b/public/terrain/18/429269/176957.terrain new file mode 100644 index 000000000..7a6b45691 Binary files /dev/null and b/public/terrain/18/429269/176957.terrain differ diff --git a/public/terrain/18/429269/176958.terrain b/public/terrain/18/429269/176958.terrain new file mode 100644 index 000000000..1fac2849e Binary files /dev/null and b/public/terrain/18/429269/176958.terrain differ diff --git a/public/terrain/18/429269/176959.terrain b/public/terrain/18/429269/176959.terrain new file mode 100644 index 000000000..ff6aea165 Binary files /dev/null and b/public/terrain/18/429269/176959.terrain differ diff --git a/public/terrain/18/429269/176960.terrain b/public/terrain/18/429269/176960.terrain new file mode 100644 index 000000000..57f7820cd Binary files /dev/null and b/public/terrain/18/429269/176960.terrain differ diff --git a/public/terrain/18/429269/176961.terrain b/public/terrain/18/429269/176961.terrain new file mode 100644 index 000000000..a1f5a81a1 Binary files /dev/null and b/public/terrain/18/429269/176961.terrain differ diff --git a/public/terrain/18/429269/176962.terrain b/public/terrain/18/429269/176962.terrain new file mode 100644 index 000000000..f3d309c93 Binary files /dev/null and b/public/terrain/18/429269/176962.terrain differ diff --git a/public/terrain/18/429269/176963.terrain b/public/terrain/18/429269/176963.terrain new file mode 100644 index 000000000..ddb4958bc Binary files /dev/null and b/public/terrain/18/429269/176963.terrain differ diff --git a/public/terrain/18/429269/176964.terrain b/public/terrain/18/429269/176964.terrain new file mode 100644 index 000000000..bb350c2e4 Binary files /dev/null and b/public/terrain/18/429269/176964.terrain differ diff --git a/public/terrain/18/429269/176965.terrain b/public/terrain/18/429269/176965.terrain new file mode 100644 index 000000000..e82d166e8 Binary files /dev/null and b/public/terrain/18/429269/176965.terrain differ diff --git a/public/terrain/18/429269/176966.terrain b/public/terrain/18/429269/176966.terrain new file mode 100644 index 000000000..87939d58f Binary files /dev/null and b/public/terrain/18/429269/176966.terrain differ diff --git a/public/terrain/18/429269/176967.terrain b/public/terrain/18/429269/176967.terrain new file mode 100644 index 000000000..0a41fc3e1 Binary files /dev/null and b/public/terrain/18/429269/176967.terrain differ diff --git a/public/terrain/18/429269/176968.terrain b/public/terrain/18/429269/176968.terrain new file mode 100644 index 000000000..41a5ca995 Binary files /dev/null and b/public/terrain/18/429269/176968.terrain differ diff --git a/public/terrain/18/429269/176969.terrain b/public/terrain/18/429269/176969.terrain new file mode 100644 index 000000000..e9e252f86 Binary files /dev/null and b/public/terrain/18/429269/176969.terrain differ diff --git a/public/terrain/18/429269/176970.terrain b/public/terrain/18/429269/176970.terrain new file mode 100644 index 000000000..61ba5d605 Binary files /dev/null and b/public/terrain/18/429269/176970.terrain differ diff --git a/public/terrain/18/429269/176971.terrain b/public/terrain/18/429269/176971.terrain new file mode 100644 index 000000000..6e6ffe398 Binary files /dev/null and b/public/terrain/18/429269/176971.terrain differ diff --git a/public/terrain/18/429269/176972.terrain b/public/terrain/18/429269/176972.terrain new file mode 100644 index 000000000..27285ce65 Binary files /dev/null and b/public/terrain/18/429269/176972.terrain differ diff --git a/public/terrain/18/429269/176973.terrain b/public/terrain/18/429269/176973.terrain new file mode 100644 index 000000000..fec1b8b3f Binary files /dev/null and b/public/terrain/18/429269/176973.terrain differ diff --git a/public/terrain/18/429269/176974.terrain b/public/terrain/18/429269/176974.terrain new file mode 100644 index 000000000..d1e9660a0 Binary files /dev/null and b/public/terrain/18/429269/176974.terrain differ diff --git a/public/terrain/18/429269/176975.terrain b/public/terrain/18/429269/176975.terrain new file mode 100644 index 000000000..b7283d0ca Binary files /dev/null and b/public/terrain/18/429269/176975.terrain differ diff --git a/public/terrain/18/429269/176976.terrain b/public/terrain/18/429269/176976.terrain new file mode 100644 index 000000000..7e7768752 Binary files /dev/null and b/public/terrain/18/429269/176976.terrain differ diff --git a/public/terrain/18/429269/176977.terrain b/public/terrain/18/429269/176977.terrain new file mode 100644 index 000000000..da0bcd548 Binary files /dev/null and b/public/terrain/18/429269/176977.terrain differ diff --git a/public/terrain/18/429269/176978.terrain b/public/terrain/18/429269/176978.terrain new file mode 100644 index 000000000..d83a6f5be Binary files /dev/null and b/public/terrain/18/429269/176978.terrain differ diff --git a/public/terrain/18/429269/176979.terrain b/public/terrain/18/429269/176979.terrain new file mode 100644 index 000000000..31ae8998e Binary files /dev/null and b/public/terrain/18/429269/176979.terrain differ diff --git a/public/terrain/18/429269/176980.terrain b/public/terrain/18/429269/176980.terrain new file mode 100644 index 000000000..3ceb9c55b Binary files /dev/null and b/public/terrain/18/429269/176980.terrain differ diff --git a/public/terrain/18/429269/176981.terrain b/public/terrain/18/429269/176981.terrain new file mode 100644 index 000000000..961a22202 Binary files /dev/null and b/public/terrain/18/429269/176981.terrain differ diff --git a/public/terrain/18/429269/176982.terrain b/public/terrain/18/429269/176982.terrain new file mode 100644 index 000000000..4abe6cbed Binary files /dev/null and b/public/terrain/18/429269/176982.terrain differ diff --git a/public/terrain/18/429269/176983.terrain b/public/terrain/18/429269/176983.terrain new file mode 100644 index 000000000..0eb677517 Binary files /dev/null and b/public/terrain/18/429269/176983.terrain differ diff --git a/public/terrain/18/429269/176984.terrain b/public/terrain/18/429269/176984.terrain new file mode 100644 index 000000000..853fc0cc3 Binary files /dev/null and b/public/terrain/18/429269/176984.terrain differ diff --git a/public/terrain/18/429269/176985.terrain b/public/terrain/18/429269/176985.terrain new file mode 100644 index 000000000..0070440a4 Binary files /dev/null and b/public/terrain/18/429269/176985.terrain differ diff --git a/public/terrain/18/429269/176986.terrain b/public/terrain/18/429269/176986.terrain new file mode 100644 index 000000000..474d56a7b Binary files /dev/null and b/public/terrain/18/429269/176986.terrain differ diff --git a/public/terrain/18/429269/176987.terrain b/public/terrain/18/429269/176987.terrain new file mode 100644 index 000000000..b09296604 Binary files /dev/null and b/public/terrain/18/429269/176987.terrain differ diff --git a/public/terrain/18/429269/176988.terrain b/public/terrain/18/429269/176988.terrain new file mode 100644 index 000000000..503706050 Binary files /dev/null and b/public/terrain/18/429269/176988.terrain differ diff --git a/public/terrain/18/429269/176989.terrain b/public/terrain/18/429269/176989.terrain new file mode 100644 index 000000000..4d3f94fe6 Binary files /dev/null and b/public/terrain/18/429269/176989.terrain differ diff --git a/public/terrain/18/429269/176990.terrain b/public/terrain/18/429269/176990.terrain new file mode 100644 index 000000000..09c33afc9 Binary files /dev/null and b/public/terrain/18/429269/176990.terrain differ diff --git a/public/terrain/18/429269/176991.terrain b/public/terrain/18/429269/176991.terrain new file mode 100644 index 000000000..07d5a8ec9 Binary files /dev/null and b/public/terrain/18/429269/176991.terrain differ diff --git a/public/terrain/18/429269/176992.terrain b/public/terrain/18/429269/176992.terrain new file mode 100644 index 000000000..a674be67f Binary files /dev/null and b/public/terrain/18/429269/176992.terrain differ diff --git a/public/terrain/18/429269/176993.terrain b/public/terrain/18/429269/176993.terrain new file mode 100644 index 000000000..fd624a66c Binary files /dev/null and b/public/terrain/18/429269/176993.terrain differ diff --git a/public/terrain/18/429269/176994.terrain b/public/terrain/18/429269/176994.terrain new file mode 100644 index 000000000..4d9891b38 Binary files /dev/null and b/public/terrain/18/429269/176994.terrain differ diff --git a/public/terrain/18/429269/176995.terrain b/public/terrain/18/429269/176995.terrain new file mode 100644 index 000000000..9a187ff71 Binary files /dev/null and b/public/terrain/18/429269/176995.terrain differ diff --git a/public/terrain/18/429269/176996.terrain b/public/terrain/18/429269/176996.terrain new file mode 100644 index 000000000..f5c0d6b5a Binary files /dev/null and b/public/terrain/18/429269/176996.terrain differ diff --git a/public/terrain/18/429269/176997.terrain b/public/terrain/18/429269/176997.terrain new file mode 100644 index 000000000..0388ec4e1 Binary files /dev/null and b/public/terrain/18/429269/176997.terrain differ diff --git a/public/terrain/18/429269/176998.terrain b/public/terrain/18/429269/176998.terrain new file mode 100644 index 000000000..9d4bcd83e Binary files /dev/null and b/public/terrain/18/429269/176998.terrain differ diff --git a/public/terrain/18/429269/176999.terrain b/public/terrain/18/429269/176999.terrain new file mode 100644 index 000000000..a81be1f62 Binary files /dev/null and b/public/terrain/18/429269/176999.terrain differ diff --git a/public/terrain/18/429269/177000.terrain b/public/terrain/18/429269/177000.terrain new file mode 100644 index 000000000..61991e3d5 Binary files /dev/null and b/public/terrain/18/429269/177000.terrain differ diff --git a/public/terrain/18/429269/177001.terrain b/public/terrain/18/429269/177001.terrain new file mode 100644 index 000000000..5170287fa Binary files /dev/null and b/public/terrain/18/429269/177001.terrain differ diff --git a/public/terrain/18/429269/177002.terrain b/public/terrain/18/429269/177002.terrain new file mode 100644 index 000000000..f7f2f80e8 Binary files /dev/null and b/public/terrain/18/429269/177002.terrain differ diff --git a/public/terrain/18/429269/177003.terrain b/public/terrain/18/429269/177003.terrain new file mode 100644 index 000000000..5421a644a Binary files /dev/null and b/public/terrain/18/429269/177003.terrain differ diff --git a/public/terrain/18/429269/177004.terrain b/public/terrain/18/429269/177004.terrain new file mode 100644 index 000000000..9b5e8b67b Binary files /dev/null and b/public/terrain/18/429269/177004.terrain differ diff --git a/public/terrain/18/429269/177005.terrain b/public/terrain/18/429269/177005.terrain new file mode 100644 index 000000000..947f9d300 Binary files /dev/null and b/public/terrain/18/429269/177005.terrain differ diff --git a/public/terrain/18/429269/177006.terrain b/public/terrain/18/429269/177006.terrain new file mode 100644 index 000000000..b60a43ae0 Binary files /dev/null and b/public/terrain/18/429269/177006.terrain differ diff --git a/public/terrain/18/429269/177007.terrain b/public/terrain/18/429269/177007.terrain new file mode 100644 index 000000000..29598e1dc Binary files /dev/null and b/public/terrain/18/429269/177007.terrain differ diff --git a/public/terrain/18/429269/177008.terrain b/public/terrain/18/429269/177008.terrain new file mode 100644 index 000000000..625506111 Binary files /dev/null and b/public/terrain/18/429269/177008.terrain differ diff --git a/public/terrain/18/429269/177009.terrain b/public/terrain/18/429269/177009.terrain new file mode 100644 index 000000000..45c69d78b Binary files /dev/null and b/public/terrain/18/429269/177009.terrain differ diff --git a/public/terrain/18/429269/177010.terrain b/public/terrain/18/429269/177010.terrain new file mode 100644 index 000000000..0e2b72584 Binary files /dev/null and b/public/terrain/18/429269/177010.terrain differ diff --git a/public/terrain/18/429269/177011.terrain b/public/terrain/18/429269/177011.terrain new file mode 100644 index 000000000..bda21f31d Binary files /dev/null and b/public/terrain/18/429269/177011.terrain differ diff --git a/public/terrain/18/429269/177012.terrain b/public/terrain/18/429269/177012.terrain new file mode 100644 index 000000000..7274f8387 Binary files /dev/null and b/public/terrain/18/429269/177012.terrain differ diff --git a/public/terrain/18/429269/177013.terrain b/public/terrain/18/429269/177013.terrain new file mode 100644 index 000000000..d70b10488 Binary files /dev/null and b/public/terrain/18/429269/177013.terrain differ diff --git a/public/terrain/18/429269/177014.terrain b/public/terrain/18/429269/177014.terrain new file mode 100644 index 000000000..87a66f1e8 Binary files /dev/null and b/public/terrain/18/429269/177014.terrain differ diff --git a/public/terrain/18/429269/177015.terrain b/public/terrain/18/429269/177015.terrain new file mode 100644 index 000000000..25b7697ea Binary files /dev/null and b/public/terrain/18/429269/177015.terrain differ diff --git a/public/terrain/18/429269/177016.terrain b/public/terrain/18/429269/177016.terrain new file mode 100644 index 000000000..6ee83d645 Binary files /dev/null and b/public/terrain/18/429269/177016.terrain differ diff --git a/public/terrain/18/429269/177017.terrain b/public/terrain/18/429269/177017.terrain new file mode 100644 index 000000000..5c8c52f4c Binary files /dev/null and b/public/terrain/18/429269/177017.terrain differ diff --git a/public/terrain/18/429269/177018.terrain b/public/terrain/18/429269/177018.terrain new file mode 100644 index 000000000..8a1806e37 Binary files /dev/null and b/public/terrain/18/429269/177018.terrain differ diff --git a/public/terrain/18/429269/177019.terrain b/public/terrain/18/429269/177019.terrain new file mode 100644 index 000000000..d29e36f33 Binary files /dev/null and b/public/terrain/18/429269/177019.terrain differ diff --git a/public/terrain/18/429269/177020.terrain b/public/terrain/18/429269/177020.terrain new file mode 100644 index 000000000..eabcfb282 Binary files /dev/null and b/public/terrain/18/429269/177020.terrain differ diff --git a/public/terrain/18/429269/177021.terrain b/public/terrain/18/429269/177021.terrain new file mode 100644 index 000000000..76c8dc636 Binary files /dev/null and b/public/terrain/18/429269/177021.terrain differ diff --git a/public/terrain/18/429269/177022.terrain b/public/terrain/18/429269/177022.terrain new file mode 100644 index 000000000..6e09d85f8 Binary files /dev/null and b/public/terrain/18/429269/177022.terrain differ diff --git a/public/terrain/18/429269/177023.terrain b/public/terrain/18/429269/177023.terrain new file mode 100644 index 000000000..1f47d0dea Binary files /dev/null and b/public/terrain/18/429269/177023.terrain differ diff --git a/public/terrain/18/429269/177024.terrain b/public/terrain/18/429269/177024.terrain new file mode 100644 index 000000000..c68fa0548 Binary files /dev/null and b/public/terrain/18/429269/177024.terrain differ diff --git a/public/terrain/18/429269/177025.terrain b/public/terrain/18/429269/177025.terrain new file mode 100644 index 000000000..231e81a26 Binary files /dev/null and b/public/terrain/18/429269/177025.terrain differ diff --git a/public/terrain/18/429269/177026.terrain b/public/terrain/18/429269/177026.terrain new file mode 100644 index 000000000..75325779d Binary files /dev/null and b/public/terrain/18/429269/177026.terrain differ diff --git a/public/terrain/18/429269/177027.terrain b/public/terrain/18/429269/177027.terrain new file mode 100644 index 000000000..5798ebb25 Binary files /dev/null and b/public/terrain/18/429269/177027.terrain differ diff --git a/public/terrain/18/429269/177028.terrain b/public/terrain/18/429269/177028.terrain new file mode 100644 index 000000000..73becac1f Binary files /dev/null and b/public/terrain/18/429269/177028.terrain differ diff --git a/public/terrain/18/429269/177029.terrain b/public/terrain/18/429269/177029.terrain new file mode 100644 index 000000000..65a798dde Binary files /dev/null and b/public/terrain/18/429269/177029.terrain differ diff --git a/public/terrain/18/429270/176871.terrain b/public/terrain/18/429270/176871.terrain new file mode 100644 index 000000000..85412c145 Binary files /dev/null and b/public/terrain/18/429270/176871.terrain differ diff --git a/public/terrain/18/429270/176872.terrain b/public/terrain/18/429270/176872.terrain new file mode 100644 index 000000000..3e399f55a Binary files /dev/null and b/public/terrain/18/429270/176872.terrain differ diff --git a/public/terrain/18/429270/176873.terrain b/public/terrain/18/429270/176873.terrain new file mode 100644 index 000000000..55a20fdb7 Binary files /dev/null and b/public/terrain/18/429270/176873.terrain differ diff --git a/public/terrain/18/429270/176874.terrain b/public/terrain/18/429270/176874.terrain new file mode 100644 index 000000000..78df20921 Binary files /dev/null and b/public/terrain/18/429270/176874.terrain differ diff --git a/public/terrain/18/429270/176875.terrain b/public/terrain/18/429270/176875.terrain new file mode 100644 index 000000000..731a42f0a Binary files /dev/null and b/public/terrain/18/429270/176875.terrain differ diff --git a/public/terrain/18/429270/176876.terrain b/public/terrain/18/429270/176876.terrain new file mode 100644 index 000000000..d31ac1097 Binary files /dev/null and b/public/terrain/18/429270/176876.terrain differ diff --git a/public/terrain/18/429270/176877.terrain b/public/terrain/18/429270/176877.terrain new file mode 100644 index 000000000..7bc3b3c46 Binary files /dev/null and b/public/terrain/18/429270/176877.terrain differ diff --git a/public/terrain/18/429270/176878.terrain b/public/terrain/18/429270/176878.terrain new file mode 100644 index 000000000..268ae83da Binary files /dev/null and b/public/terrain/18/429270/176878.terrain differ diff --git a/public/terrain/18/429270/176879.terrain b/public/terrain/18/429270/176879.terrain new file mode 100644 index 000000000..e0c776535 Binary files /dev/null and b/public/terrain/18/429270/176879.terrain differ diff --git a/public/terrain/18/429270/176880.terrain b/public/terrain/18/429270/176880.terrain new file mode 100644 index 000000000..8da9163cd Binary files /dev/null and b/public/terrain/18/429270/176880.terrain differ diff --git a/public/terrain/18/429270/176881.terrain b/public/terrain/18/429270/176881.terrain new file mode 100644 index 000000000..afd4d43e5 Binary files /dev/null and b/public/terrain/18/429270/176881.terrain differ diff --git a/public/terrain/18/429270/176882.terrain b/public/terrain/18/429270/176882.terrain new file mode 100644 index 000000000..d1ad35bee Binary files /dev/null and b/public/terrain/18/429270/176882.terrain differ diff --git a/public/terrain/18/429270/176883.terrain b/public/terrain/18/429270/176883.terrain new file mode 100644 index 000000000..0b3760a82 Binary files /dev/null and b/public/terrain/18/429270/176883.terrain differ diff --git a/public/terrain/18/429270/176884.terrain b/public/terrain/18/429270/176884.terrain new file mode 100644 index 000000000..c439fde2a Binary files /dev/null and b/public/terrain/18/429270/176884.terrain differ diff --git a/public/terrain/18/429270/176885.terrain b/public/terrain/18/429270/176885.terrain new file mode 100644 index 000000000..e9789d667 Binary files /dev/null and b/public/terrain/18/429270/176885.terrain differ diff --git a/public/terrain/18/429270/176886.terrain b/public/terrain/18/429270/176886.terrain new file mode 100644 index 000000000..096de5338 Binary files /dev/null and b/public/terrain/18/429270/176886.terrain differ diff --git a/public/terrain/18/429270/176887.terrain b/public/terrain/18/429270/176887.terrain new file mode 100644 index 000000000..ddb88c75b Binary files /dev/null and b/public/terrain/18/429270/176887.terrain differ diff --git a/public/terrain/18/429270/176888.terrain b/public/terrain/18/429270/176888.terrain new file mode 100644 index 000000000..60a529bcb Binary files /dev/null and b/public/terrain/18/429270/176888.terrain differ diff --git a/public/terrain/18/429270/176889.terrain b/public/terrain/18/429270/176889.terrain new file mode 100644 index 000000000..da82d92bd Binary files /dev/null and b/public/terrain/18/429270/176889.terrain differ diff --git a/public/terrain/18/429270/176890.terrain b/public/terrain/18/429270/176890.terrain new file mode 100644 index 000000000..138da753d Binary files /dev/null and b/public/terrain/18/429270/176890.terrain differ diff --git a/public/terrain/18/429270/176891.terrain b/public/terrain/18/429270/176891.terrain new file mode 100644 index 000000000..63e91d172 Binary files /dev/null and b/public/terrain/18/429270/176891.terrain differ diff --git a/public/terrain/18/429270/176892.terrain b/public/terrain/18/429270/176892.terrain new file mode 100644 index 000000000..b4dbc5a36 Binary files /dev/null and b/public/terrain/18/429270/176892.terrain differ diff --git a/public/terrain/18/429270/176893.terrain b/public/terrain/18/429270/176893.terrain new file mode 100644 index 000000000..e0d95cc35 Binary files /dev/null and b/public/terrain/18/429270/176893.terrain differ diff --git a/public/terrain/18/429270/176894.terrain b/public/terrain/18/429270/176894.terrain new file mode 100644 index 000000000..45bf24b6d Binary files /dev/null and b/public/terrain/18/429270/176894.terrain differ diff --git a/public/terrain/18/429270/176895.terrain b/public/terrain/18/429270/176895.terrain new file mode 100644 index 000000000..37f4922a1 Binary files /dev/null and b/public/terrain/18/429270/176895.terrain differ diff --git a/public/terrain/18/429270/176896.terrain b/public/terrain/18/429270/176896.terrain new file mode 100644 index 000000000..17daa47ba Binary files /dev/null and b/public/terrain/18/429270/176896.terrain differ diff --git a/public/terrain/18/429270/176897.terrain b/public/terrain/18/429270/176897.terrain new file mode 100644 index 000000000..d07348116 Binary files /dev/null and b/public/terrain/18/429270/176897.terrain differ diff --git a/public/terrain/18/429270/176898.terrain b/public/terrain/18/429270/176898.terrain new file mode 100644 index 000000000..7329ecd7e Binary files /dev/null and b/public/terrain/18/429270/176898.terrain differ diff --git a/public/terrain/18/429270/176899.terrain b/public/terrain/18/429270/176899.terrain new file mode 100644 index 000000000..bd9c45392 Binary files /dev/null and b/public/terrain/18/429270/176899.terrain differ diff --git a/public/terrain/18/429270/176900.terrain b/public/terrain/18/429270/176900.terrain new file mode 100644 index 000000000..0f0f7c66c Binary files /dev/null and b/public/terrain/18/429270/176900.terrain differ diff --git a/public/terrain/18/429270/176901.terrain b/public/terrain/18/429270/176901.terrain new file mode 100644 index 000000000..79376455e Binary files /dev/null and b/public/terrain/18/429270/176901.terrain differ diff --git a/public/terrain/18/429270/176902.terrain b/public/terrain/18/429270/176902.terrain new file mode 100644 index 000000000..3c8340a5c Binary files /dev/null and b/public/terrain/18/429270/176902.terrain differ diff --git a/public/terrain/18/429270/176903.terrain b/public/terrain/18/429270/176903.terrain new file mode 100644 index 000000000..214027cbf Binary files /dev/null and b/public/terrain/18/429270/176903.terrain differ diff --git a/public/terrain/18/429270/176904.terrain b/public/terrain/18/429270/176904.terrain new file mode 100644 index 000000000..a225fea2f Binary files /dev/null and b/public/terrain/18/429270/176904.terrain differ diff --git a/public/terrain/18/429270/176905.terrain b/public/terrain/18/429270/176905.terrain new file mode 100644 index 000000000..02d508b6f Binary files /dev/null and b/public/terrain/18/429270/176905.terrain differ diff --git a/public/terrain/18/429270/176906.terrain b/public/terrain/18/429270/176906.terrain new file mode 100644 index 000000000..aad93c2bd Binary files /dev/null and b/public/terrain/18/429270/176906.terrain differ diff --git a/public/terrain/18/429270/176907.terrain b/public/terrain/18/429270/176907.terrain new file mode 100644 index 000000000..6a6fb2140 Binary files /dev/null and b/public/terrain/18/429270/176907.terrain differ diff --git a/public/terrain/18/429270/176908.terrain b/public/terrain/18/429270/176908.terrain new file mode 100644 index 000000000..650bdeacc Binary files /dev/null and b/public/terrain/18/429270/176908.terrain differ diff --git a/public/terrain/18/429270/176909.terrain b/public/terrain/18/429270/176909.terrain new file mode 100644 index 000000000..a296421e0 Binary files /dev/null and b/public/terrain/18/429270/176909.terrain differ diff --git a/public/terrain/18/429270/176910.terrain b/public/terrain/18/429270/176910.terrain new file mode 100644 index 000000000..0994498c0 Binary files /dev/null and b/public/terrain/18/429270/176910.terrain differ diff --git a/public/terrain/18/429270/176911.terrain b/public/terrain/18/429270/176911.terrain new file mode 100644 index 000000000..d4b0373e0 Binary files /dev/null and b/public/terrain/18/429270/176911.terrain differ diff --git a/public/terrain/18/429270/176912.terrain b/public/terrain/18/429270/176912.terrain new file mode 100644 index 000000000..50b8874f7 Binary files /dev/null and b/public/terrain/18/429270/176912.terrain differ diff --git a/public/terrain/18/429270/176913.terrain b/public/terrain/18/429270/176913.terrain new file mode 100644 index 000000000..742249c86 Binary files /dev/null and b/public/terrain/18/429270/176913.terrain differ diff --git a/public/terrain/18/429270/176914.terrain b/public/terrain/18/429270/176914.terrain new file mode 100644 index 000000000..be184c82f Binary files /dev/null and b/public/terrain/18/429270/176914.terrain differ diff --git a/public/terrain/18/429270/176915.terrain b/public/terrain/18/429270/176915.terrain new file mode 100644 index 000000000..56c068bd5 Binary files /dev/null and b/public/terrain/18/429270/176915.terrain differ diff --git a/public/terrain/18/429270/176916.terrain b/public/terrain/18/429270/176916.terrain new file mode 100644 index 000000000..78e04f7da Binary files /dev/null and b/public/terrain/18/429270/176916.terrain differ diff --git a/public/terrain/18/429270/176917.terrain b/public/terrain/18/429270/176917.terrain new file mode 100644 index 000000000..74d0306f0 Binary files /dev/null and b/public/terrain/18/429270/176917.terrain differ diff --git a/public/terrain/18/429270/176918.terrain b/public/terrain/18/429270/176918.terrain new file mode 100644 index 000000000..0ba2ce25e Binary files /dev/null and b/public/terrain/18/429270/176918.terrain differ diff --git a/public/terrain/18/429270/176919.terrain b/public/terrain/18/429270/176919.terrain new file mode 100644 index 000000000..b362545a9 Binary files /dev/null and b/public/terrain/18/429270/176919.terrain differ diff --git a/public/terrain/18/429270/176920.terrain b/public/terrain/18/429270/176920.terrain new file mode 100644 index 000000000..ce823159b Binary files /dev/null and b/public/terrain/18/429270/176920.terrain differ diff --git a/public/terrain/18/429270/176921.terrain b/public/terrain/18/429270/176921.terrain new file mode 100644 index 000000000..7b5a6b5ee Binary files /dev/null and b/public/terrain/18/429270/176921.terrain differ diff --git a/public/terrain/18/429270/176922.terrain b/public/terrain/18/429270/176922.terrain new file mode 100644 index 000000000..f8c00b7be Binary files /dev/null and b/public/terrain/18/429270/176922.terrain differ diff --git a/public/terrain/18/429270/176923.terrain b/public/terrain/18/429270/176923.terrain new file mode 100644 index 000000000..36383ad07 Binary files /dev/null and b/public/terrain/18/429270/176923.terrain differ diff --git a/public/terrain/18/429270/176924.terrain b/public/terrain/18/429270/176924.terrain new file mode 100644 index 000000000..b5007c395 Binary files /dev/null and b/public/terrain/18/429270/176924.terrain differ diff --git a/public/terrain/18/429270/176925.terrain b/public/terrain/18/429270/176925.terrain new file mode 100644 index 000000000..74a14fc23 Binary files /dev/null and b/public/terrain/18/429270/176925.terrain differ diff --git a/public/terrain/18/429270/176926.terrain b/public/terrain/18/429270/176926.terrain new file mode 100644 index 000000000..28bba57a8 Binary files /dev/null and b/public/terrain/18/429270/176926.terrain differ diff --git a/public/terrain/18/429270/176927.terrain b/public/terrain/18/429270/176927.terrain new file mode 100644 index 000000000..02a8a684a Binary files /dev/null and b/public/terrain/18/429270/176927.terrain differ diff --git a/public/terrain/18/429270/176928.terrain b/public/terrain/18/429270/176928.terrain new file mode 100644 index 000000000..505827c68 Binary files /dev/null and b/public/terrain/18/429270/176928.terrain differ diff --git a/public/terrain/18/429270/176929.terrain b/public/terrain/18/429270/176929.terrain new file mode 100644 index 000000000..6b369382e Binary files /dev/null and b/public/terrain/18/429270/176929.terrain differ diff --git a/public/terrain/18/429270/176930.terrain b/public/terrain/18/429270/176930.terrain new file mode 100644 index 000000000..6033a4ba4 Binary files /dev/null and b/public/terrain/18/429270/176930.terrain differ diff --git a/public/terrain/18/429270/176931.terrain b/public/terrain/18/429270/176931.terrain new file mode 100644 index 000000000..5a830df92 Binary files /dev/null and b/public/terrain/18/429270/176931.terrain differ diff --git a/public/terrain/18/429270/176932.terrain b/public/terrain/18/429270/176932.terrain new file mode 100644 index 000000000..96a95bacd Binary files /dev/null and b/public/terrain/18/429270/176932.terrain differ diff --git a/public/terrain/18/429270/176933.terrain b/public/terrain/18/429270/176933.terrain new file mode 100644 index 000000000..fde1e074f Binary files /dev/null and b/public/terrain/18/429270/176933.terrain differ diff --git a/public/terrain/18/429270/176934.terrain b/public/terrain/18/429270/176934.terrain new file mode 100644 index 000000000..bb56f398b Binary files /dev/null and b/public/terrain/18/429270/176934.terrain differ diff --git a/public/terrain/18/429270/176935.terrain b/public/terrain/18/429270/176935.terrain new file mode 100644 index 000000000..84817c604 Binary files /dev/null and b/public/terrain/18/429270/176935.terrain differ diff --git a/public/terrain/18/429270/176936.terrain b/public/terrain/18/429270/176936.terrain new file mode 100644 index 000000000..d7cf10e21 Binary files /dev/null and b/public/terrain/18/429270/176936.terrain differ diff --git a/public/terrain/18/429270/176937.terrain b/public/terrain/18/429270/176937.terrain new file mode 100644 index 000000000..d9abb984b Binary files /dev/null and b/public/terrain/18/429270/176937.terrain differ diff --git a/public/terrain/18/429270/176938.terrain b/public/terrain/18/429270/176938.terrain new file mode 100644 index 000000000..0b5e2e4ea Binary files /dev/null and b/public/terrain/18/429270/176938.terrain differ diff --git a/public/terrain/18/429270/176939.terrain b/public/terrain/18/429270/176939.terrain new file mode 100644 index 000000000..0f016d043 Binary files /dev/null and b/public/terrain/18/429270/176939.terrain differ diff --git a/public/terrain/18/429270/176940.terrain b/public/terrain/18/429270/176940.terrain new file mode 100644 index 000000000..d68c597e6 Binary files /dev/null and b/public/terrain/18/429270/176940.terrain differ diff --git a/public/terrain/18/429270/176941.terrain b/public/terrain/18/429270/176941.terrain new file mode 100644 index 000000000..7ff65f7ad Binary files /dev/null and b/public/terrain/18/429270/176941.terrain differ diff --git a/public/terrain/18/429270/176942.terrain b/public/terrain/18/429270/176942.terrain new file mode 100644 index 000000000..1a0960020 Binary files /dev/null and b/public/terrain/18/429270/176942.terrain differ diff --git a/public/terrain/18/429270/176943.terrain b/public/terrain/18/429270/176943.terrain new file mode 100644 index 000000000..f0ae6b859 Binary files /dev/null and b/public/terrain/18/429270/176943.terrain differ diff --git a/public/terrain/18/429270/176944.terrain b/public/terrain/18/429270/176944.terrain new file mode 100644 index 000000000..ed9cbc186 Binary files /dev/null and b/public/terrain/18/429270/176944.terrain differ diff --git a/public/terrain/18/429270/176945.terrain b/public/terrain/18/429270/176945.terrain new file mode 100644 index 000000000..c00a992fc Binary files /dev/null and b/public/terrain/18/429270/176945.terrain differ diff --git a/public/terrain/18/429270/176946.terrain b/public/terrain/18/429270/176946.terrain new file mode 100644 index 000000000..42c66702a Binary files /dev/null and b/public/terrain/18/429270/176946.terrain differ diff --git a/public/terrain/18/429270/176947.terrain b/public/terrain/18/429270/176947.terrain new file mode 100644 index 000000000..223bd1570 Binary files /dev/null and b/public/terrain/18/429270/176947.terrain differ diff --git a/public/terrain/18/429270/176948.terrain b/public/terrain/18/429270/176948.terrain new file mode 100644 index 000000000..352238b19 Binary files /dev/null and b/public/terrain/18/429270/176948.terrain differ diff --git a/public/terrain/18/429270/176949.terrain b/public/terrain/18/429270/176949.terrain new file mode 100644 index 000000000..05b336f1d Binary files /dev/null and b/public/terrain/18/429270/176949.terrain differ diff --git a/public/terrain/18/429270/176950.terrain b/public/terrain/18/429270/176950.terrain new file mode 100644 index 000000000..b54d94970 Binary files /dev/null and b/public/terrain/18/429270/176950.terrain differ diff --git a/public/terrain/18/429270/176951.terrain b/public/terrain/18/429270/176951.terrain new file mode 100644 index 000000000..946571612 Binary files /dev/null and b/public/terrain/18/429270/176951.terrain differ diff --git a/public/terrain/18/429270/176952.terrain b/public/terrain/18/429270/176952.terrain new file mode 100644 index 000000000..b2c9e6464 Binary files /dev/null and b/public/terrain/18/429270/176952.terrain differ diff --git a/public/terrain/18/429270/176953.terrain b/public/terrain/18/429270/176953.terrain new file mode 100644 index 000000000..53074f86b Binary files /dev/null and b/public/terrain/18/429270/176953.terrain differ diff --git a/public/terrain/18/429270/176954.terrain b/public/terrain/18/429270/176954.terrain new file mode 100644 index 000000000..088aa553a Binary files /dev/null and b/public/terrain/18/429270/176954.terrain differ diff --git a/public/terrain/18/429270/176955.terrain b/public/terrain/18/429270/176955.terrain new file mode 100644 index 000000000..dffd4ea82 Binary files /dev/null and b/public/terrain/18/429270/176955.terrain differ diff --git a/public/terrain/18/429270/176956.terrain b/public/terrain/18/429270/176956.terrain new file mode 100644 index 000000000..4dd388b42 Binary files /dev/null and b/public/terrain/18/429270/176956.terrain differ diff --git a/public/terrain/18/429270/176957.terrain b/public/terrain/18/429270/176957.terrain new file mode 100644 index 000000000..e5a616643 Binary files /dev/null and b/public/terrain/18/429270/176957.terrain differ diff --git a/public/terrain/18/429270/176958.terrain b/public/terrain/18/429270/176958.terrain new file mode 100644 index 000000000..29802095f Binary files /dev/null and b/public/terrain/18/429270/176958.terrain differ diff --git a/public/terrain/18/429270/176959.terrain b/public/terrain/18/429270/176959.terrain new file mode 100644 index 000000000..a9f72f1c9 Binary files /dev/null and b/public/terrain/18/429270/176959.terrain differ diff --git a/public/terrain/18/429270/176960.terrain b/public/terrain/18/429270/176960.terrain new file mode 100644 index 000000000..250162c28 Binary files /dev/null and b/public/terrain/18/429270/176960.terrain differ diff --git a/public/terrain/18/429270/176961.terrain b/public/terrain/18/429270/176961.terrain new file mode 100644 index 000000000..afd9ec38f Binary files /dev/null and b/public/terrain/18/429270/176961.terrain differ diff --git a/public/terrain/18/429270/176962.terrain b/public/terrain/18/429270/176962.terrain new file mode 100644 index 000000000..41915c203 Binary files /dev/null and b/public/terrain/18/429270/176962.terrain differ diff --git a/public/terrain/18/429270/176963.terrain b/public/terrain/18/429270/176963.terrain new file mode 100644 index 000000000..c209eff48 Binary files /dev/null and b/public/terrain/18/429270/176963.terrain differ diff --git a/public/terrain/18/429270/176964.terrain b/public/terrain/18/429270/176964.terrain new file mode 100644 index 000000000..6c3c82b0d Binary files /dev/null and b/public/terrain/18/429270/176964.terrain differ diff --git a/public/terrain/18/429270/176965.terrain b/public/terrain/18/429270/176965.terrain new file mode 100644 index 000000000..a205c2b59 Binary files /dev/null and b/public/terrain/18/429270/176965.terrain differ diff --git a/public/terrain/18/429270/176966.terrain b/public/terrain/18/429270/176966.terrain new file mode 100644 index 000000000..6a5defcef Binary files /dev/null and b/public/terrain/18/429270/176966.terrain differ diff --git a/public/terrain/18/429270/176967.terrain b/public/terrain/18/429270/176967.terrain new file mode 100644 index 000000000..a4ff8f716 Binary files /dev/null and b/public/terrain/18/429270/176967.terrain differ diff --git a/public/terrain/18/429270/176968.terrain b/public/terrain/18/429270/176968.terrain new file mode 100644 index 000000000..c72cdcee5 Binary files /dev/null and b/public/terrain/18/429270/176968.terrain differ diff --git a/public/terrain/18/429270/176969.terrain b/public/terrain/18/429270/176969.terrain new file mode 100644 index 000000000..491af84a8 Binary files /dev/null and b/public/terrain/18/429270/176969.terrain differ diff --git a/public/terrain/18/429270/176970.terrain b/public/terrain/18/429270/176970.terrain new file mode 100644 index 000000000..d6df06344 Binary files /dev/null and b/public/terrain/18/429270/176970.terrain differ diff --git a/public/terrain/18/429270/176971.terrain b/public/terrain/18/429270/176971.terrain new file mode 100644 index 000000000..3679e710f Binary files /dev/null and b/public/terrain/18/429270/176971.terrain differ diff --git a/public/terrain/18/429270/176972.terrain b/public/terrain/18/429270/176972.terrain new file mode 100644 index 000000000..7f3d4d948 Binary files /dev/null and b/public/terrain/18/429270/176972.terrain differ diff --git a/public/terrain/18/429270/176973.terrain b/public/terrain/18/429270/176973.terrain new file mode 100644 index 000000000..48f2285df Binary files /dev/null and b/public/terrain/18/429270/176973.terrain differ diff --git a/public/terrain/18/429270/176974.terrain b/public/terrain/18/429270/176974.terrain new file mode 100644 index 000000000..5487401e5 Binary files /dev/null and b/public/terrain/18/429270/176974.terrain differ diff --git a/public/terrain/18/429270/176975.terrain b/public/terrain/18/429270/176975.terrain new file mode 100644 index 000000000..d3fd06977 Binary files /dev/null and b/public/terrain/18/429270/176975.terrain differ diff --git a/public/terrain/18/429270/176976.terrain b/public/terrain/18/429270/176976.terrain new file mode 100644 index 000000000..19ad37d23 Binary files /dev/null and b/public/terrain/18/429270/176976.terrain differ diff --git a/public/terrain/18/429270/176977.terrain b/public/terrain/18/429270/176977.terrain new file mode 100644 index 000000000..06e4cfac8 Binary files /dev/null and b/public/terrain/18/429270/176977.terrain differ diff --git a/public/terrain/18/429270/176978.terrain b/public/terrain/18/429270/176978.terrain new file mode 100644 index 000000000..0111194b8 Binary files /dev/null and b/public/terrain/18/429270/176978.terrain differ diff --git a/public/terrain/18/429270/176979.terrain b/public/terrain/18/429270/176979.terrain new file mode 100644 index 000000000..5568329ac Binary files /dev/null and b/public/terrain/18/429270/176979.terrain differ diff --git a/public/terrain/18/429270/176980.terrain b/public/terrain/18/429270/176980.terrain new file mode 100644 index 000000000..37e74d99c Binary files /dev/null and b/public/terrain/18/429270/176980.terrain differ diff --git a/public/terrain/18/429270/176981.terrain b/public/terrain/18/429270/176981.terrain new file mode 100644 index 000000000..d120f0d24 Binary files /dev/null and b/public/terrain/18/429270/176981.terrain differ diff --git a/public/terrain/18/429270/176982.terrain b/public/terrain/18/429270/176982.terrain new file mode 100644 index 000000000..1b9ffd260 Binary files /dev/null and b/public/terrain/18/429270/176982.terrain differ diff --git a/public/terrain/18/429270/176983.terrain b/public/terrain/18/429270/176983.terrain new file mode 100644 index 000000000..9eb5829b5 Binary files /dev/null and b/public/terrain/18/429270/176983.terrain differ diff --git a/public/terrain/18/429270/176984.terrain b/public/terrain/18/429270/176984.terrain new file mode 100644 index 000000000..0b2a01d17 Binary files /dev/null and b/public/terrain/18/429270/176984.terrain differ diff --git a/public/terrain/18/429270/176985.terrain b/public/terrain/18/429270/176985.terrain new file mode 100644 index 000000000..5c8b93160 Binary files /dev/null and b/public/terrain/18/429270/176985.terrain differ diff --git a/public/terrain/18/429270/176986.terrain b/public/terrain/18/429270/176986.terrain new file mode 100644 index 000000000..af323f97c Binary files /dev/null and b/public/terrain/18/429270/176986.terrain differ diff --git a/public/terrain/18/429270/176987.terrain b/public/terrain/18/429270/176987.terrain new file mode 100644 index 000000000..1c7080d71 Binary files /dev/null and b/public/terrain/18/429270/176987.terrain differ diff --git a/public/terrain/18/429270/176988.terrain b/public/terrain/18/429270/176988.terrain new file mode 100644 index 000000000..497c388bc Binary files /dev/null and b/public/terrain/18/429270/176988.terrain differ diff --git a/public/terrain/18/429270/176989.terrain b/public/terrain/18/429270/176989.terrain new file mode 100644 index 000000000..8a8927fb0 Binary files /dev/null and b/public/terrain/18/429270/176989.terrain differ diff --git a/public/terrain/18/429270/176990.terrain b/public/terrain/18/429270/176990.terrain new file mode 100644 index 000000000..9a6714309 Binary files /dev/null and b/public/terrain/18/429270/176990.terrain differ diff --git a/public/terrain/18/429270/176991.terrain b/public/terrain/18/429270/176991.terrain new file mode 100644 index 000000000..b98aa3043 Binary files /dev/null and b/public/terrain/18/429270/176991.terrain differ diff --git a/public/terrain/18/429270/176992.terrain b/public/terrain/18/429270/176992.terrain new file mode 100644 index 000000000..19b9c49bc Binary files /dev/null and b/public/terrain/18/429270/176992.terrain differ diff --git a/public/terrain/18/429270/176993.terrain b/public/terrain/18/429270/176993.terrain new file mode 100644 index 000000000..91822710f Binary files /dev/null and b/public/terrain/18/429270/176993.terrain differ diff --git a/public/terrain/18/429270/176994.terrain b/public/terrain/18/429270/176994.terrain new file mode 100644 index 000000000..cedee57e3 Binary files /dev/null and b/public/terrain/18/429270/176994.terrain differ diff --git a/public/terrain/18/429270/176995.terrain b/public/terrain/18/429270/176995.terrain new file mode 100644 index 000000000..4bdb43848 Binary files /dev/null and b/public/terrain/18/429270/176995.terrain differ diff --git a/public/terrain/18/429270/176996.terrain b/public/terrain/18/429270/176996.terrain new file mode 100644 index 000000000..a046b64ac Binary files /dev/null and b/public/terrain/18/429270/176996.terrain differ diff --git a/public/terrain/18/429270/176997.terrain b/public/terrain/18/429270/176997.terrain new file mode 100644 index 000000000..653e10486 Binary files /dev/null and b/public/terrain/18/429270/176997.terrain differ diff --git a/public/terrain/18/429270/176998.terrain b/public/terrain/18/429270/176998.terrain new file mode 100644 index 000000000..72b0b2007 Binary files /dev/null and b/public/terrain/18/429270/176998.terrain differ diff --git a/public/terrain/18/429270/176999.terrain b/public/terrain/18/429270/176999.terrain new file mode 100644 index 000000000..9af576d66 Binary files /dev/null and b/public/terrain/18/429270/176999.terrain differ diff --git a/public/terrain/18/429270/177000.terrain b/public/terrain/18/429270/177000.terrain new file mode 100644 index 000000000..14d9d9655 Binary files /dev/null and b/public/terrain/18/429270/177000.terrain differ diff --git a/public/terrain/18/429270/177001.terrain b/public/terrain/18/429270/177001.terrain new file mode 100644 index 000000000..7a68119e2 Binary files /dev/null and b/public/terrain/18/429270/177001.terrain differ diff --git a/public/terrain/18/429270/177002.terrain b/public/terrain/18/429270/177002.terrain new file mode 100644 index 000000000..493f2404a Binary files /dev/null and b/public/terrain/18/429270/177002.terrain differ diff --git a/public/terrain/18/429270/177003.terrain b/public/terrain/18/429270/177003.terrain new file mode 100644 index 000000000..61b4420db Binary files /dev/null and b/public/terrain/18/429270/177003.terrain differ diff --git a/public/terrain/18/429270/177004.terrain b/public/terrain/18/429270/177004.terrain new file mode 100644 index 000000000..4b0e7c3f3 Binary files /dev/null and b/public/terrain/18/429270/177004.terrain differ diff --git a/public/terrain/18/429270/177005.terrain b/public/terrain/18/429270/177005.terrain new file mode 100644 index 000000000..dd47ca85a Binary files /dev/null and b/public/terrain/18/429270/177005.terrain differ diff --git a/public/terrain/18/429270/177006.terrain b/public/terrain/18/429270/177006.terrain new file mode 100644 index 000000000..01d8bb226 Binary files /dev/null and b/public/terrain/18/429270/177006.terrain differ diff --git a/public/terrain/18/429270/177007.terrain b/public/terrain/18/429270/177007.terrain new file mode 100644 index 000000000..e075b1da4 Binary files /dev/null and b/public/terrain/18/429270/177007.terrain differ diff --git a/public/terrain/18/429270/177008.terrain b/public/terrain/18/429270/177008.terrain new file mode 100644 index 000000000..329d3c920 Binary files /dev/null and b/public/terrain/18/429270/177008.terrain differ diff --git a/public/terrain/18/429270/177009.terrain b/public/terrain/18/429270/177009.terrain new file mode 100644 index 000000000..f1099bd66 Binary files /dev/null and b/public/terrain/18/429270/177009.terrain differ diff --git a/public/terrain/18/429270/177010.terrain b/public/terrain/18/429270/177010.terrain new file mode 100644 index 000000000..cbf3d36d3 Binary files /dev/null and b/public/terrain/18/429270/177010.terrain differ diff --git a/public/terrain/18/429270/177011.terrain b/public/terrain/18/429270/177011.terrain new file mode 100644 index 000000000..08345f18d Binary files /dev/null and b/public/terrain/18/429270/177011.terrain differ diff --git a/public/terrain/18/429270/177012.terrain b/public/terrain/18/429270/177012.terrain new file mode 100644 index 000000000..ccfa1d1d6 Binary files /dev/null and b/public/terrain/18/429270/177012.terrain differ diff --git a/public/terrain/18/429270/177013.terrain b/public/terrain/18/429270/177013.terrain new file mode 100644 index 000000000..e83bcbd28 Binary files /dev/null and b/public/terrain/18/429270/177013.terrain differ diff --git a/public/terrain/18/429270/177014.terrain b/public/terrain/18/429270/177014.terrain new file mode 100644 index 000000000..7a9b7e1d8 Binary files /dev/null and b/public/terrain/18/429270/177014.terrain differ diff --git a/public/terrain/18/429270/177015.terrain b/public/terrain/18/429270/177015.terrain new file mode 100644 index 000000000..9f9f40c23 Binary files /dev/null and b/public/terrain/18/429270/177015.terrain differ diff --git a/public/terrain/18/429270/177016.terrain b/public/terrain/18/429270/177016.terrain new file mode 100644 index 000000000..07fbb035e Binary files /dev/null and b/public/terrain/18/429270/177016.terrain differ diff --git a/public/terrain/18/429270/177017.terrain b/public/terrain/18/429270/177017.terrain new file mode 100644 index 000000000..b5ffe02df Binary files /dev/null and b/public/terrain/18/429270/177017.terrain differ diff --git a/public/terrain/18/429270/177018.terrain b/public/terrain/18/429270/177018.terrain new file mode 100644 index 000000000..fd07df2c4 Binary files /dev/null and b/public/terrain/18/429270/177018.terrain differ diff --git a/public/terrain/18/429270/177019.terrain b/public/terrain/18/429270/177019.terrain new file mode 100644 index 000000000..15a5ab5e3 Binary files /dev/null and b/public/terrain/18/429270/177019.terrain differ diff --git a/public/terrain/18/429270/177020.terrain b/public/terrain/18/429270/177020.terrain new file mode 100644 index 000000000..18654e657 Binary files /dev/null and b/public/terrain/18/429270/177020.terrain differ diff --git a/public/terrain/18/429270/177021.terrain b/public/terrain/18/429270/177021.terrain new file mode 100644 index 000000000..17d4df917 Binary files /dev/null and b/public/terrain/18/429270/177021.terrain differ diff --git a/public/terrain/18/429270/177022.terrain b/public/terrain/18/429270/177022.terrain new file mode 100644 index 000000000..2ad93c138 Binary files /dev/null and b/public/terrain/18/429270/177022.terrain differ diff --git a/public/terrain/18/429270/177023.terrain b/public/terrain/18/429270/177023.terrain new file mode 100644 index 000000000..de6e352ff Binary files /dev/null and b/public/terrain/18/429270/177023.terrain differ diff --git a/public/terrain/18/429270/177024.terrain b/public/terrain/18/429270/177024.terrain new file mode 100644 index 000000000..9b91ead88 Binary files /dev/null and b/public/terrain/18/429270/177024.terrain differ diff --git a/public/terrain/18/429270/177025.terrain b/public/terrain/18/429270/177025.terrain new file mode 100644 index 000000000..f7d1b4fdc Binary files /dev/null and b/public/terrain/18/429270/177025.terrain differ diff --git a/public/terrain/18/429270/177026.terrain b/public/terrain/18/429270/177026.terrain new file mode 100644 index 000000000..3259acc19 Binary files /dev/null and b/public/terrain/18/429270/177026.terrain differ diff --git a/public/terrain/18/429270/177027.terrain b/public/terrain/18/429270/177027.terrain new file mode 100644 index 000000000..0e8909c59 Binary files /dev/null and b/public/terrain/18/429270/177027.terrain differ diff --git a/public/terrain/18/429270/177028.terrain b/public/terrain/18/429270/177028.terrain new file mode 100644 index 000000000..25174a105 Binary files /dev/null and b/public/terrain/18/429270/177028.terrain differ diff --git a/public/terrain/18/429270/177029.terrain b/public/terrain/18/429270/177029.terrain new file mode 100644 index 000000000..1f1187470 Binary files /dev/null and b/public/terrain/18/429270/177029.terrain differ diff --git a/public/terrain/18/429271/176871.terrain b/public/terrain/18/429271/176871.terrain new file mode 100644 index 000000000..00fa3c2fc Binary files /dev/null and b/public/terrain/18/429271/176871.terrain differ diff --git a/public/terrain/18/429271/176872.terrain b/public/terrain/18/429271/176872.terrain new file mode 100644 index 000000000..a6d428171 Binary files /dev/null and b/public/terrain/18/429271/176872.terrain differ diff --git a/public/terrain/18/429271/176873.terrain b/public/terrain/18/429271/176873.terrain new file mode 100644 index 000000000..b9a9add85 Binary files /dev/null and b/public/terrain/18/429271/176873.terrain differ diff --git a/public/terrain/18/429271/176874.terrain b/public/terrain/18/429271/176874.terrain new file mode 100644 index 000000000..3d5759cb7 Binary files /dev/null and b/public/terrain/18/429271/176874.terrain differ diff --git a/public/terrain/18/429271/176875.terrain b/public/terrain/18/429271/176875.terrain new file mode 100644 index 000000000..16c7c7fe8 Binary files /dev/null and b/public/terrain/18/429271/176875.terrain differ diff --git a/public/terrain/18/429271/176876.terrain b/public/terrain/18/429271/176876.terrain new file mode 100644 index 000000000..b917c242b Binary files /dev/null and b/public/terrain/18/429271/176876.terrain differ diff --git a/public/terrain/18/429271/176877.terrain b/public/terrain/18/429271/176877.terrain new file mode 100644 index 000000000..27d9bdc54 Binary files /dev/null and b/public/terrain/18/429271/176877.terrain differ diff --git a/public/terrain/18/429271/176878.terrain b/public/terrain/18/429271/176878.terrain new file mode 100644 index 000000000..71a4ee678 Binary files /dev/null and b/public/terrain/18/429271/176878.terrain differ diff --git a/public/terrain/18/429271/176879.terrain b/public/terrain/18/429271/176879.terrain new file mode 100644 index 000000000..29d3ca522 Binary files /dev/null and b/public/terrain/18/429271/176879.terrain differ diff --git a/public/terrain/18/429271/176880.terrain b/public/terrain/18/429271/176880.terrain new file mode 100644 index 000000000..7ef153a8b Binary files /dev/null and b/public/terrain/18/429271/176880.terrain differ diff --git a/public/terrain/18/429271/176881.terrain b/public/terrain/18/429271/176881.terrain new file mode 100644 index 000000000..734e2f3b8 Binary files /dev/null and b/public/terrain/18/429271/176881.terrain differ diff --git a/public/terrain/18/429271/176882.terrain b/public/terrain/18/429271/176882.terrain new file mode 100644 index 000000000..f358dde4d Binary files /dev/null and b/public/terrain/18/429271/176882.terrain differ diff --git a/public/terrain/18/429271/176883.terrain b/public/terrain/18/429271/176883.terrain new file mode 100644 index 000000000..af65441bc Binary files /dev/null and b/public/terrain/18/429271/176883.terrain differ diff --git a/public/terrain/18/429271/176884.terrain b/public/terrain/18/429271/176884.terrain new file mode 100644 index 000000000..024cbadef Binary files /dev/null and b/public/terrain/18/429271/176884.terrain differ diff --git a/public/terrain/18/429271/176885.terrain b/public/terrain/18/429271/176885.terrain new file mode 100644 index 000000000..6951d7a16 Binary files /dev/null and b/public/terrain/18/429271/176885.terrain differ diff --git a/public/terrain/18/429271/176886.terrain b/public/terrain/18/429271/176886.terrain new file mode 100644 index 000000000..b18c05042 Binary files /dev/null and b/public/terrain/18/429271/176886.terrain differ diff --git a/public/terrain/18/429271/176887.terrain b/public/terrain/18/429271/176887.terrain new file mode 100644 index 000000000..f8a26476e Binary files /dev/null and b/public/terrain/18/429271/176887.terrain differ diff --git a/public/terrain/18/429271/176888.terrain b/public/terrain/18/429271/176888.terrain new file mode 100644 index 000000000..a224e3614 Binary files /dev/null and b/public/terrain/18/429271/176888.terrain differ diff --git a/public/terrain/18/429271/176889.terrain b/public/terrain/18/429271/176889.terrain new file mode 100644 index 000000000..690e7c31c Binary files /dev/null and b/public/terrain/18/429271/176889.terrain differ diff --git a/public/terrain/18/429271/176890.terrain b/public/terrain/18/429271/176890.terrain new file mode 100644 index 000000000..f052b3f8f Binary files /dev/null and b/public/terrain/18/429271/176890.terrain differ diff --git a/public/terrain/18/429271/176891.terrain b/public/terrain/18/429271/176891.terrain new file mode 100644 index 000000000..d4f60367c Binary files /dev/null and b/public/terrain/18/429271/176891.terrain differ diff --git a/public/terrain/18/429271/176892.terrain b/public/terrain/18/429271/176892.terrain new file mode 100644 index 000000000..c2b41afc1 Binary files /dev/null and b/public/terrain/18/429271/176892.terrain differ diff --git a/public/terrain/18/429271/176893.terrain b/public/terrain/18/429271/176893.terrain new file mode 100644 index 000000000..4b02defa4 Binary files /dev/null and b/public/terrain/18/429271/176893.terrain differ diff --git a/public/terrain/18/429271/176894.terrain b/public/terrain/18/429271/176894.terrain new file mode 100644 index 000000000..71a3e3637 Binary files /dev/null and b/public/terrain/18/429271/176894.terrain differ diff --git a/public/terrain/18/429271/176895.terrain b/public/terrain/18/429271/176895.terrain new file mode 100644 index 000000000..e2378c687 Binary files /dev/null and b/public/terrain/18/429271/176895.terrain differ diff --git a/public/terrain/18/429271/176896.terrain b/public/terrain/18/429271/176896.terrain new file mode 100644 index 000000000..b957bcfd1 Binary files /dev/null and b/public/terrain/18/429271/176896.terrain differ diff --git a/public/terrain/18/429271/176897.terrain b/public/terrain/18/429271/176897.terrain new file mode 100644 index 000000000..4846b6784 Binary files /dev/null and b/public/terrain/18/429271/176897.terrain differ diff --git a/public/terrain/18/429271/176898.terrain b/public/terrain/18/429271/176898.terrain new file mode 100644 index 000000000..917642268 Binary files /dev/null and b/public/terrain/18/429271/176898.terrain differ diff --git a/public/terrain/18/429271/176899.terrain b/public/terrain/18/429271/176899.terrain new file mode 100644 index 000000000..3cb611edb Binary files /dev/null and b/public/terrain/18/429271/176899.terrain differ diff --git a/public/terrain/18/429271/176900.terrain b/public/terrain/18/429271/176900.terrain new file mode 100644 index 000000000..caa9acf2f Binary files /dev/null and b/public/terrain/18/429271/176900.terrain differ diff --git a/public/terrain/18/429271/176901.terrain b/public/terrain/18/429271/176901.terrain new file mode 100644 index 000000000..bec82545c Binary files /dev/null and b/public/terrain/18/429271/176901.terrain differ diff --git a/public/terrain/18/429271/176902.terrain b/public/terrain/18/429271/176902.terrain new file mode 100644 index 000000000..9ee7d3e7b Binary files /dev/null and b/public/terrain/18/429271/176902.terrain differ diff --git a/public/terrain/18/429271/176903.terrain b/public/terrain/18/429271/176903.terrain new file mode 100644 index 000000000..4112963f0 Binary files /dev/null and b/public/terrain/18/429271/176903.terrain differ diff --git a/public/terrain/18/429271/176904.terrain b/public/terrain/18/429271/176904.terrain new file mode 100644 index 000000000..451a49c37 Binary files /dev/null and b/public/terrain/18/429271/176904.terrain differ diff --git a/public/terrain/18/429271/176905.terrain b/public/terrain/18/429271/176905.terrain new file mode 100644 index 000000000..d20829cae Binary files /dev/null and b/public/terrain/18/429271/176905.terrain differ diff --git a/public/terrain/18/429271/176906.terrain b/public/terrain/18/429271/176906.terrain new file mode 100644 index 000000000..987d4aae5 Binary files /dev/null and b/public/terrain/18/429271/176906.terrain differ diff --git a/public/terrain/18/429271/176907.terrain b/public/terrain/18/429271/176907.terrain new file mode 100644 index 000000000..0d7c79cd9 Binary files /dev/null and b/public/terrain/18/429271/176907.terrain differ diff --git a/public/terrain/18/429271/176908.terrain b/public/terrain/18/429271/176908.terrain new file mode 100644 index 000000000..c684a07a4 Binary files /dev/null and b/public/terrain/18/429271/176908.terrain differ diff --git a/public/terrain/18/429271/176909.terrain b/public/terrain/18/429271/176909.terrain new file mode 100644 index 000000000..35dcaad5b Binary files /dev/null and b/public/terrain/18/429271/176909.terrain differ diff --git a/public/terrain/18/429271/176910.terrain b/public/terrain/18/429271/176910.terrain new file mode 100644 index 000000000..7b19c94c9 Binary files /dev/null and b/public/terrain/18/429271/176910.terrain differ diff --git a/public/terrain/18/429271/176911.terrain b/public/terrain/18/429271/176911.terrain new file mode 100644 index 000000000..b5f06d482 Binary files /dev/null and b/public/terrain/18/429271/176911.terrain differ diff --git a/public/terrain/18/429271/176912.terrain b/public/terrain/18/429271/176912.terrain new file mode 100644 index 000000000..1a94c0cae Binary files /dev/null and b/public/terrain/18/429271/176912.terrain differ diff --git a/public/terrain/18/429271/176913.terrain b/public/terrain/18/429271/176913.terrain new file mode 100644 index 000000000..e6acd2d20 Binary files /dev/null and b/public/terrain/18/429271/176913.terrain differ diff --git a/public/terrain/18/429271/176914.terrain b/public/terrain/18/429271/176914.terrain new file mode 100644 index 000000000..66f1a3785 Binary files /dev/null and b/public/terrain/18/429271/176914.terrain differ diff --git a/public/terrain/18/429271/176915.terrain b/public/terrain/18/429271/176915.terrain new file mode 100644 index 000000000..4cd772104 Binary files /dev/null and b/public/terrain/18/429271/176915.terrain differ diff --git a/public/terrain/18/429271/176916.terrain b/public/terrain/18/429271/176916.terrain new file mode 100644 index 000000000..91b951af8 Binary files /dev/null and b/public/terrain/18/429271/176916.terrain differ diff --git a/public/terrain/18/429271/176917.terrain b/public/terrain/18/429271/176917.terrain new file mode 100644 index 000000000..eaa8c42db Binary files /dev/null and b/public/terrain/18/429271/176917.terrain differ diff --git a/public/terrain/18/429271/176918.terrain b/public/terrain/18/429271/176918.terrain new file mode 100644 index 000000000..0db832a78 Binary files /dev/null and b/public/terrain/18/429271/176918.terrain differ diff --git a/public/terrain/18/429271/176919.terrain b/public/terrain/18/429271/176919.terrain new file mode 100644 index 000000000..f09c1a42c Binary files /dev/null and b/public/terrain/18/429271/176919.terrain differ diff --git a/public/terrain/18/429271/176920.terrain b/public/terrain/18/429271/176920.terrain new file mode 100644 index 000000000..b1f3a2b6a Binary files /dev/null and b/public/terrain/18/429271/176920.terrain differ diff --git a/public/terrain/18/429271/176921.terrain b/public/terrain/18/429271/176921.terrain new file mode 100644 index 000000000..39c0428bf Binary files /dev/null and b/public/terrain/18/429271/176921.terrain differ diff --git a/public/terrain/18/429271/176922.terrain b/public/terrain/18/429271/176922.terrain new file mode 100644 index 000000000..bfbe624a1 Binary files /dev/null and b/public/terrain/18/429271/176922.terrain differ diff --git a/public/terrain/18/429271/176923.terrain b/public/terrain/18/429271/176923.terrain new file mode 100644 index 000000000..2644710d3 Binary files /dev/null and b/public/terrain/18/429271/176923.terrain differ diff --git a/public/terrain/18/429271/176924.terrain b/public/terrain/18/429271/176924.terrain new file mode 100644 index 000000000..550a67262 Binary files /dev/null and b/public/terrain/18/429271/176924.terrain differ diff --git a/public/terrain/18/429271/176925.terrain b/public/terrain/18/429271/176925.terrain new file mode 100644 index 000000000..f194b9e36 Binary files /dev/null and b/public/terrain/18/429271/176925.terrain differ diff --git a/public/terrain/18/429271/176926.terrain b/public/terrain/18/429271/176926.terrain new file mode 100644 index 000000000..5135c65a9 Binary files /dev/null and b/public/terrain/18/429271/176926.terrain differ diff --git a/public/terrain/18/429271/176927.terrain b/public/terrain/18/429271/176927.terrain new file mode 100644 index 000000000..aab674ebd Binary files /dev/null and b/public/terrain/18/429271/176927.terrain differ diff --git a/public/terrain/18/429271/176928.terrain b/public/terrain/18/429271/176928.terrain new file mode 100644 index 000000000..72cf5e53f Binary files /dev/null and b/public/terrain/18/429271/176928.terrain differ diff --git a/public/terrain/18/429271/176929.terrain b/public/terrain/18/429271/176929.terrain new file mode 100644 index 000000000..7d6ef48bd Binary files /dev/null and b/public/terrain/18/429271/176929.terrain differ diff --git a/public/terrain/18/429271/176930.terrain b/public/terrain/18/429271/176930.terrain new file mode 100644 index 000000000..f18a45392 Binary files /dev/null and b/public/terrain/18/429271/176930.terrain differ diff --git a/public/terrain/18/429271/176931.terrain b/public/terrain/18/429271/176931.terrain new file mode 100644 index 000000000..26f162cd5 Binary files /dev/null and b/public/terrain/18/429271/176931.terrain differ diff --git a/public/terrain/18/429271/176932.terrain b/public/terrain/18/429271/176932.terrain new file mode 100644 index 000000000..0844105b1 Binary files /dev/null and b/public/terrain/18/429271/176932.terrain differ diff --git a/public/terrain/18/429271/176933.terrain b/public/terrain/18/429271/176933.terrain new file mode 100644 index 000000000..4bbc28068 Binary files /dev/null and b/public/terrain/18/429271/176933.terrain differ diff --git a/public/terrain/18/429271/176934.terrain b/public/terrain/18/429271/176934.terrain new file mode 100644 index 000000000..d6cad346b Binary files /dev/null and b/public/terrain/18/429271/176934.terrain differ diff --git a/public/terrain/18/429271/176935.terrain b/public/terrain/18/429271/176935.terrain new file mode 100644 index 000000000..683561510 Binary files /dev/null and b/public/terrain/18/429271/176935.terrain differ diff --git a/public/terrain/18/429271/176936.terrain b/public/terrain/18/429271/176936.terrain new file mode 100644 index 000000000..07da7b879 Binary files /dev/null and b/public/terrain/18/429271/176936.terrain differ diff --git a/public/terrain/18/429271/176937.terrain b/public/terrain/18/429271/176937.terrain new file mode 100644 index 000000000..fe78d4dfd Binary files /dev/null and b/public/terrain/18/429271/176937.terrain differ diff --git a/public/terrain/18/429271/176938.terrain b/public/terrain/18/429271/176938.terrain new file mode 100644 index 000000000..017b3c1a5 Binary files /dev/null and b/public/terrain/18/429271/176938.terrain differ diff --git a/public/terrain/18/429271/176939.terrain b/public/terrain/18/429271/176939.terrain new file mode 100644 index 000000000..9eafd4a1d Binary files /dev/null and b/public/terrain/18/429271/176939.terrain differ diff --git a/public/terrain/18/429271/176940.terrain b/public/terrain/18/429271/176940.terrain new file mode 100644 index 000000000..f8db8bd93 Binary files /dev/null and b/public/terrain/18/429271/176940.terrain differ diff --git a/public/terrain/18/429271/176941.terrain b/public/terrain/18/429271/176941.terrain new file mode 100644 index 000000000..65de2f453 Binary files /dev/null and b/public/terrain/18/429271/176941.terrain differ diff --git a/public/terrain/18/429271/176942.terrain b/public/terrain/18/429271/176942.terrain new file mode 100644 index 000000000..50638967d Binary files /dev/null and b/public/terrain/18/429271/176942.terrain differ diff --git a/public/terrain/18/429271/176943.terrain b/public/terrain/18/429271/176943.terrain new file mode 100644 index 000000000..e25399a73 Binary files /dev/null and b/public/terrain/18/429271/176943.terrain differ diff --git a/public/terrain/18/429271/176944.terrain b/public/terrain/18/429271/176944.terrain new file mode 100644 index 000000000..613f6cfce Binary files /dev/null and b/public/terrain/18/429271/176944.terrain differ diff --git a/public/terrain/18/429271/176945.terrain b/public/terrain/18/429271/176945.terrain new file mode 100644 index 000000000..f1f81fca4 Binary files /dev/null and b/public/terrain/18/429271/176945.terrain differ diff --git a/public/terrain/18/429271/176946.terrain b/public/terrain/18/429271/176946.terrain new file mode 100644 index 000000000..2398f6d28 Binary files /dev/null and b/public/terrain/18/429271/176946.terrain differ diff --git a/public/terrain/18/429271/176947.terrain b/public/terrain/18/429271/176947.terrain new file mode 100644 index 000000000..3c26c1cd7 Binary files /dev/null and b/public/terrain/18/429271/176947.terrain differ diff --git a/public/terrain/18/429271/176948.terrain b/public/terrain/18/429271/176948.terrain new file mode 100644 index 000000000..584d9380a Binary files /dev/null and b/public/terrain/18/429271/176948.terrain differ diff --git a/public/terrain/18/429271/176949.terrain b/public/terrain/18/429271/176949.terrain new file mode 100644 index 000000000..f87286e98 Binary files /dev/null and b/public/terrain/18/429271/176949.terrain differ diff --git a/public/terrain/18/429271/176950.terrain b/public/terrain/18/429271/176950.terrain new file mode 100644 index 000000000..ce10039b1 Binary files /dev/null and b/public/terrain/18/429271/176950.terrain differ diff --git a/public/terrain/18/429271/176951.terrain b/public/terrain/18/429271/176951.terrain new file mode 100644 index 000000000..235e91a4a Binary files /dev/null and b/public/terrain/18/429271/176951.terrain differ diff --git a/public/terrain/18/429271/176952.terrain b/public/terrain/18/429271/176952.terrain new file mode 100644 index 000000000..3e340b0a7 Binary files /dev/null and b/public/terrain/18/429271/176952.terrain differ diff --git a/public/terrain/18/429271/176953.terrain b/public/terrain/18/429271/176953.terrain new file mode 100644 index 000000000..9a588e1d8 Binary files /dev/null and b/public/terrain/18/429271/176953.terrain differ diff --git a/public/terrain/18/429271/176954.terrain b/public/terrain/18/429271/176954.terrain new file mode 100644 index 000000000..5870575b0 Binary files /dev/null and b/public/terrain/18/429271/176954.terrain differ diff --git a/public/terrain/18/429271/176955.terrain b/public/terrain/18/429271/176955.terrain new file mode 100644 index 000000000..a91a2f836 Binary files /dev/null and b/public/terrain/18/429271/176955.terrain differ diff --git a/public/terrain/18/429271/176956.terrain b/public/terrain/18/429271/176956.terrain new file mode 100644 index 000000000..44ed47db1 Binary files /dev/null and b/public/terrain/18/429271/176956.terrain differ diff --git a/public/terrain/18/429271/176957.terrain b/public/terrain/18/429271/176957.terrain new file mode 100644 index 000000000..d4306f15a Binary files /dev/null and b/public/terrain/18/429271/176957.terrain differ diff --git a/public/terrain/18/429271/176958.terrain b/public/terrain/18/429271/176958.terrain new file mode 100644 index 000000000..a5a324c2b Binary files /dev/null and b/public/terrain/18/429271/176958.terrain differ diff --git a/public/terrain/18/429271/176959.terrain b/public/terrain/18/429271/176959.terrain new file mode 100644 index 000000000..085b30fad Binary files /dev/null and b/public/terrain/18/429271/176959.terrain differ diff --git a/public/terrain/18/429271/176960.terrain b/public/terrain/18/429271/176960.terrain new file mode 100644 index 000000000..572e8dded Binary files /dev/null and b/public/terrain/18/429271/176960.terrain differ diff --git a/public/terrain/18/429271/176961.terrain b/public/terrain/18/429271/176961.terrain new file mode 100644 index 000000000..991366335 Binary files /dev/null and b/public/terrain/18/429271/176961.terrain differ diff --git a/public/terrain/18/429271/176962.terrain b/public/terrain/18/429271/176962.terrain new file mode 100644 index 000000000..10a7dadf5 Binary files /dev/null and b/public/terrain/18/429271/176962.terrain differ diff --git a/public/terrain/18/429271/176963.terrain b/public/terrain/18/429271/176963.terrain new file mode 100644 index 000000000..c1d7dff1e Binary files /dev/null and b/public/terrain/18/429271/176963.terrain differ diff --git a/public/terrain/18/429271/176964.terrain b/public/terrain/18/429271/176964.terrain new file mode 100644 index 000000000..230c58235 Binary files /dev/null and b/public/terrain/18/429271/176964.terrain differ diff --git a/public/terrain/18/429271/176965.terrain b/public/terrain/18/429271/176965.terrain new file mode 100644 index 000000000..3eb542a91 Binary files /dev/null and b/public/terrain/18/429271/176965.terrain differ diff --git a/public/terrain/18/429271/176966.terrain b/public/terrain/18/429271/176966.terrain new file mode 100644 index 000000000..bbda1c235 Binary files /dev/null and b/public/terrain/18/429271/176966.terrain differ diff --git a/public/terrain/18/429271/176967.terrain b/public/terrain/18/429271/176967.terrain new file mode 100644 index 000000000..b7a53b4c1 Binary files /dev/null and b/public/terrain/18/429271/176967.terrain differ diff --git a/public/terrain/18/429271/176968.terrain b/public/terrain/18/429271/176968.terrain new file mode 100644 index 000000000..b26e1ae7f Binary files /dev/null and b/public/terrain/18/429271/176968.terrain differ diff --git a/public/terrain/18/429271/176969.terrain b/public/terrain/18/429271/176969.terrain new file mode 100644 index 000000000..0871d3ae9 Binary files /dev/null and b/public/terrain/18/429271/176969.terrain differ diff --git a/public/terrain/18/429271/176970.terrain b/public/terrain/18/429271/176970.terrain new file mode 100644 index 000000000..6058309f9 Binary files /dev/null and b/public/terrain/18/429271/176970.terrain differ diff --git a/public/terrain/18/429271/176971.terrain b/public/terrain/18/429271/176971.terrain new file mode 100644 index 000000000..4a4ceede5 Binary files /dev/null and b/public/terrain/18/429271/176971.terrain differ diff --git a/public/terrain/18/429271/176972.terrain b/public/terrain/18/429271/176972.terrain new file mode 100644 index 000000000..e2efb0419 Binary files /dev/null and b/public/terrain/18/429271/176972.terrain differ diff --git a/public/terrain/18/429271/176973.terrain b/public/terrain/18/429271/176973.terrain new file mode 100644 index 000000000..c964247c8 Binary files /dev/null and b/public/terrain/18/429271/176973.terrain differ diff --git a/public/terrain/18/429271/176974.terrain b/public/terrain/18/429271/176974.terrain new file mode 100644 index 000000000..c47c5084f Binary files /dev/null and b/public/terrain/18/429271/176974.terrain differ diff --git a/public/terrain/18/429271/176975.terrain b/public/terrain/18/429271/176975.terrain new file mode 100644 index 000000000..d78dea682 Binary files /dev/null and b/public/terrain/18/429271/176975.terrain differ diff --git a/public/terrain/18/429271/176976.terrain b/public/terrain/18/429271/176976.terrain new file mode 100644 index 000000000..8ee2d448c Binary files /dev/null and b/public/terrain/18/429271/176976.terrain differ diff --git a/public/terrain/18/429271/176977.terrain b/public/terrain/18/429271/176977.terrain new file mode 100644 index 000000000..973afa50d Binary files /dev/null and b/public/terrain/18/429271/176977.terrain differ diff --git a/public/terrain/18/429271/176978.terrain b/public/terrain/18/429271/176978.terrain new file mode 100644 index 000000000..635ce35b5 Binary files /dev/null and b/public/terrain/18/429271/176978.terrain differ diff --git a/public/terrain/18/429271/176979.terrain b/public/terrain/18/429271/176979.terrain new file mode 100644 index 000000000..65439078f Binary files /dev/null and b/public/terrain/18/429271/176979.terrain differ diff --git a/public/terrain/18/429271/176980.terrain b/public/terrain/18/429271/176980.terrain new file mode 100644 index 000000000..036ead4cf Binary files /dev/null and b/public/terrain/18/429271/176980.terrain differ diff --git a/public/terrain/18/429271/176981.terrain b/public/terrain/18/429271/176981.terrain new file mode 100644 index 000000000..9debead39 Binary files /dev/null and b/public/terrain/18/429271/176981.terrain differ diff --git a/public/terrain/18/429271/176982.terrain b/public/terrain/18/429271/176982.terrain new file mode 100644 index 000000000..5a65bf6c3 Binary files /dev/null and b/public/terrain/18/429271/176982.terrain differ diff --git a/public/terrain/18/429271/176983.terrain b/public/terrain/18/429271/176983.terrain new file mode 100644 index 000000000..90d68f20e Binary files /dev/null and b/public/terrain/18/429271/176983.terrain differ diff --git a/public/terrain/18/429271/176984.terrain b/public/terrain/18/429271/176984.terrain new file mode 100644 index 000000000..587e785ab Binary files /dev/null and b/public/terrain/18/429271/176984.terrain differ diff --git a/public/terrain/18/429271/176985.terrain b/public/terrain/18/429271/176985.terrain new file mode 100644 index 000000000..31e7dad70 Binary files /dev/null and b/public/terrain/18/429271/176985.terrain differ diff --git a/public/terrain/18/429271/176986.terrain b/public/terrain/18/429271/176986.terrain new file mode 100644 index 000000000..187b21e44 Binary files /dev/null and b/public/terrain/18/429271/176986.terrain differ diff --git a/public/terrain/18/429271/176987.terrain b/public/terrain/18/429271/176987.terrain new file mode 100644 index 000000000..e8d1ae9fd Binary files /dev/null and b/public/terrain/18/429271/176987.terrain differ diff --git a/public/terrain/18/429271/176988.terrain b/public/terrain/18/429271/176988.terrain new file mode 100644 index 000000000..2e342ccb1 Binary files /dev/null and b/public/terrain/18/429271/176988.terrain differ diff --git a/public/terrain/18/429271/176989.terrain b/public/terrain/18/429271/176989.terrain new file mode 100644 index 000000000..087a2be71 Binary files /dev/null and b/public/terrain/18/429271/176989.terrain differ diff --git a/public/terrain/18/429271/176990.terrain b/public/terrain/18/429271/176990.terrain new file mode 100644 index 000000000..89301b25a Binary files /dev/null and b/public/terrain/18/429271/176990.terrain differ diff --git a/public/terrain/18/429271/176991.terrain b/public/terrain/18/429271/176991.terrain new file mode 100644 index 000000000..a85742155 Binary files /dev/null and b/public/terrain/18/429271/176991.terrain differ diff --git a/public/terrain/18/429271/176992.terrain b/public/terrain/18/429271/176992.terrain new file mode 100644 index 000000000..46a4671c3 Binary files /dev/null and b/public/terrain/18/429271/176992.terrain differ diff --git a/public/terrain/18/429271/176993.terrain b/public/terrain/18/429271/176993.terrain new file mode 100644 index 000000000..fdca881c3 Binary files /dev/null and b/public/terrain/18/429271/176993.terrain differ diff --git a/public/terrain/18/429271/176994.terrain b/public/terrain/18/429271/176994.terrain new file mode 100644 index 000000000..3b39374c1 Binary files /dev/null and b/public/terrain/18/429271/176994.terrain differ diff --git a/public/terrain/18/429271/176995.terrain b/public/terrain/18/429271/176995.terrain new file mode 100644 index 000000000..33e0cb37a Binary files /dev/null and b/public/terrain/18/429271/176995.terrain differ diff --git a/public/terrain/18/429271/176996.terrain b/public/terrain/18/429271/176996.terrain new file mode 100644 index 000000000..9e90151b5 Binary files /dev/null and b/public/terrain/18/429271/176996.terrain differ diff --git a/public/terrain/18/429271/176997.terrain b/public/terrain/18/429271/176997.terrain new file mode 100644 index 000000000..81667847e Binary files /dev/null and b/public/terrain/18/429271/176997.terrain differ diff --git a/public/terrain/18/429271/176998.terrain b/public/terrain/18/429271/176998.terrain new file mode 100644 index 000000000..da8e63fe6 Binary files /dev/null and b/public/terrain/18/429271/176998.terrain differ diff --git a/public/terrain/18/429271/176999.terrain b/public/terrain/18/429271/176999.terrain new file mode 100644 index 000000000..b6e0e00c0 Binary files /dev/null and b/public/terrain/18/429271/176999.terrain differ diff --git a/public/terrain/18/429271/177000.terrain b/public/terrain/18/429271/177000.terrain new file mode 100644 index 000000000..2f78aaa61 Binary files /dev/null and b/public/terrain/18/429271/177000.terrain differ diff --git a/public/terrain/18/429271/177001.terrain b/public/terrain/18/429271/177001.terrain new file mode 100644 index 000000000..634a0e53b Binary files /dev/null and b/public/terrain/18/429271/177001.terrain differ diff --git a/public/terrain/18/429271/177002.terrain b/public/terrain/18/429271/177002.terrain new file mode 100644 index 000000000..39acf09bf Binary files /dev/null and b/public/terrain/18/429271/177002.terrain differ diff --git a/public/terrain/18/429271/177003.terrain b/public/terrain/18/429271/177003.terrain new file mode 100644 index 000000000..e82a0b6df Binary files /dev/null and b/public/terrain/18/429271/177003.terrain differ diff --git a/public/terrain/18/429271/177004.terrain b/public/terrain/18/429271/177004.terrain new file mode 100644 index 000000000..f5bedbb81 Binary files /dev/null and b/public/terrain/18/429271/177004.terrain differ diff --git a/public/terrain/18/429271/177005.terrain b/public/terrain/18/429271/177005.terrain new file mode 100644 index 000000000..049b781d8 Binary files /dev/null and b/public/terrain/18/429271/177005.terrain differ diff --git a/public/terrain/18/429271/177006.terrain b/public/terrain/18/429271/177006.terrain new file mode 100644 index 000000000..1158e4607 Binary files /dev/null and b/public/terrain/18/429271/177006.terrain differ diff --git a/public/terrain/18/429271/177007.terrain b/public/terrain/18/429271/177007.terrain new file mode 100644 index 000000000..2c553b2e5 Binary files /dev/null and b/public/terrain/18/429271/177007.terrain differ diff --git a/public/terrain/18/429271/177008.terrain b/public/terrain/18/429271/177008.terrain new file mode 100644 index 000000000..bf4e03b4b Binary files /dev/null and b/public/terrain/18/429271/177008.terrain differ diff --git a/public/terrain/18/429271/177009.terrain b/public/terrain/18/429271/177009.terrain new file mode 100644 index 000000000..250ee9839 Binary files /dev/null and b/public/terrain/18/429271/177009.terrain differ diff --git a/public/terrain/18/429271/177010.terrain b/public/terrain/18/429271/177010.terrain new file mode 100644 index 000000000..86141a0cd Binary files /dev/null and b/public/terrain/18/429271/177010.terrain differ diff --git a/public/terrain/18/429271/177011.terrain b/public/terrain/18/429271/177011.terrain new file mode 100644 index 000000000..55a4272cd Binary files /dev/null and b/public/terrain/18/429271/177011.terrain differ diff --git a/public/terrain/18/429271/177012.terrain b/public/terrain/18/429271/177012.terrain new file mode 100644 index 000000000..a5c41e621 Binary files /dev/null and b/public/terrain/18/429271/177012.terrain differ diff --git a/public/terrain/18/429271/177013.terrain b/public/terrain/18/429271/177013.terrain new file mode 100644 index 000000000..3a775f27c Binary files /dev/null and b/public/terrain/18/429271/177013.terrain differ diff --git a/public/terrain/18/429271/177014.terrain b/public/terrain/18/429271/177014.terrain new file mode 100644 index 000000000..a413c5dd2 Binary files /dev/null and b/public/terrain/18/429271/177014.terrain differ diff --git a/public/terrain/18/429271/177015.terrain b/public/terrain/18/429271/177015.terrain new file mode 100644 index 000000000..6fd700506 Binary files /dev/null and b/public/terrain/18/429271/177015.terrain differ diff --git a/public/terrain/18/429271/177016.terrain b/public/terrain/18/429271/177016.terrain new file mode 100644 index 000000000..4fc2a5a60 Binary files /dev/null and b/public/terrain/18/429271/177016.terrain differ diff --git a/public/terrain/18/429271/177017.terrain b/public/terrain/18/429271/177017.terrain new file mode 100644 index 000000000..30db6de1f Binary files /dev/null and b/public/terrain/18/429271/177017.terrain differ diff --git a/public/terrain/18/429271/177018.terrain b/public/terrain/18/429271/177018.terrain new file mode 100644 index 000000000..cb0e72b0d Binary files /dev/null and b/public/terrain/18/429271/177018.terrain differ diff --git a/public/terrain/18/429271/177019.terrain b/public/terrain/18/429271/177019.terrain new file mode 100644 index 000000000..e5c4bf3d1 Binary files /dev/null and b/public/terrain/18/429271/177019.terrain differ diff --git a/public/terrain/18/429271/177020.terrain b/public/terrain/18/429271/177020.terrain new file mode 100644 index 000000000..ba5cdf3d5 Binary files /dev/null and b/public/terrain/18/429271/177020.terrain differ diff --git a/public/terrain/18/429271/177021.terrain b/public/terrain/18/429271/177021.terrain new file mode 100644 index 000000000..e3d1db42f Binary files /dev/null and b/public/terrain/18/429271/177021.terrain differ diff --git a/public/terrain/18/429271/177022.terrain b/public/terrain/18/429271/177022.terrain new file mode 100644 index 000000000..3da14df04 Binary files /dev/null and b/public/terrain/18/429271/177022.terrain differ diff --git a/public/terrain/18/429271/177023.terrain b/public/terrain/18/429271/177023.terrain new file mode 100644 index 000000000..b00eb00c7 Binary files /dev/null and b/public/terrain/18/429271/177023.terrain differ diff --git a/public/terrain/18/429271/177024.terrain b/public/terrain/18/429271/177024.terrain new file mode 100644 index 000000000..3556f49fb Binary files /dev/null and b/public/terrain/18/429271/177024.terrain differ diff --git a/public/terrain/18/429271/177025.terrain b/public/terrain/18/429271/177025.terrain new file mode 100644 index 000000000..5f765c27e Binary files /dev/null and b/public/terrain/18/429271/177025.terrain differ diff --git a/public/terrain/18/429271/177026.terrain b/public/terrain/18/429271/177026.terrain new file mode 100644 index 000000000..3b8c777d5 Binary files /dev/null and b/public/terrain/18/429271/177026.terrain differ diff --git a/public/terrain/18/429271/177027.terrain b/public/terrain/18/429271/177027.terrain new file mode 100644 index 000000000..bf4f144a0 Binary files /dev/null and b/public/terrain/18/429271/177027.terrain differ diff --git a/public/terrain/18/429271/177028.terrain b/public/terrain/18/429271/177028.terrain new file mode 100644 index 000000000..3b8fb6598 Binary files /dev/null and b/public/terrain/18/429271/177028.terrain differ diff --git a/public/terrain/18/429271/177029.terrain b/public/terrain/18/429271/177029.terrain new file mode 100644 index 000000000..a725d5508 Binary files /dev/null and b/public/terrain/18/429271/177029.terrain differ diff --git a/public/terrain/18/429272/176871.terrain b/public/terrain/18/429272/176871.terrain new file mode 100644 index 000000000..93270bfa7 Binary files /dev/null and b/public/terrain/18/429272/176871.terrain differ diff --git a/public/terrain/18/429272/176872.terrain b/public/terrain/18/429272/176872.terrain new file mode 100644 index 000000000..fef2cbcb2 Binary files /dev/null and b/public/terrain/18/429272/176872.terrain differ diff --git a/public/terrain/18/429272/176873.terrain b/public/terrain/18/429272/176873.terrain new file mode 100644 index 000000000..7895103cb Binary files /dev/null and b/public/terrain/18/429272/176873.terrain differ diff --git a/public/terrain/18/429272/176874.terrain b/public/terrain/18/429272/176874.terrain new file mode 100644 index 000000000..3c4b47707 Binary files /dev/null and b/public/terrain/18/429272/176874.terrain differ diff --git a/public/terrain/18/429272/176875.terrain b/public/terrain/18/429272/176875.terrain new file mode 100644 index 000000000..6044cece4 Binary files /dev/null and b/public/terrain/18/429272/176875.terrain differ diff --git a/public/terrain/18/429272/176876.terrain b/public/terrain/18/429272/176876.terrain new file mode 100644 index 000000000..8c2d586c3 Binary files /dev/null and b/public/terrain/18/429272/176876.terrain differ diff --git a/public/terrain/18/429272/176877.terrain b/public/terrain/18/429272/176877.terrain new file mode 100644 index 000000000..3cc03baf4 Binary files /dev/null and b/public/terrain/18/429272/176877.terrain differ diff --git a/public/terrain/18/429272/176878.terrain b/public/terrain/18/429272/176878.terrain new file mode 100644 index 000000000..b772e8ce8 Binary files /dev/null and b/public/terrain/18/429272/176878.terrain differ diff --git a/public/terrain/18/429272/176879.terrain b/public/terrain/18/429272/176879.terrain new file mode 100644 index 000000000..9aa67a706 Binary files /dev/null and b/public/terrain/18/429272/176879.terrain differ diff --git a/public/terrain/18/429272/176880.terrain b/public/terrain/18/429272/176880.terrain new file mode 100644 index 000000000..fca12cd82 Binary files /dev/null and b/public/terrain/18/429272/176880.terrain differ diff --git a/public/terrain/18/429272/176881.terrain b/public/terrain/18/429272/176881.terrain new file mode 100644 index 000000000..b87e8a0b7 Binary files /dev/null and b/public/terrain/18/429272/176881.terrain differ diff --git a/public/terrain/18/429272/176882.terrain b/public/terrain/18/429272/176882.terrain new file mode 100644 index 000000000..ab144c7e4 Binary files /dev/null and b/public/terrain/18/429272/176882.terrain differ diff --git a/public/terrain/18/429272/176883.terrain b/public/terrain/18/429272/176883.terrain new file mode 100644 index 000000000..b7501781d Binary files /dev/null and b/public/terrain/18/429272/176883.terrain differ diff --git a/public/terrain/18/429272/176884.terrain b/public/terrain/18/429272/176884.terrain new file mode 100644 index 000000000..51637da5d Binary files /dev/null and b/public/terrain/18/429272/176884.terrain differ diff --git a/public/terrain/18/429272/176885.terrain b/public/terrain/18/429272/176885.terrain new file mode 100644 index 000000000..9b61b60d5 Binary files /dev/null and b/public/terrain/18/429272/176885.terrain differ diff --git a/public/terrain/18/429272/176886.terrain b/public/terrain/18/429272/176886.terrain new file mode 100644 index 000000000..90824695e Binary files /dev/null and b/public/terrain/18/429272/176886.terrain differ diff --git a/public/terrain/18/429272/176887.terrain b/public/terrain/18/429272/176887.terrain new file mode 100644 index 000000000..cde26ab6e Binary files /dev/null and b/public/terrain/18/429272/176887.terrain differ diff --git a/public/terrain/18/429272/176888.terrain b/public/terrain/18/429272/176888.terrain new file mode 100644 index 000000000..5db43b898 Binary files /dev/null and b/public/terrain/18/429272/176888.terrain differ diff --git a/public/terrain/18/429272/176889.terrain b/public/terrain/18/429272/176889.terrain new file mode 100644 index 000000000..47a1acd4f Binary files /dev/null and b/public/terrain/18/429272/176889.terrain differ diff --git a/public/terrain/18/429272/176890.terrain b/public/terrain/18/429272/176890.terrain new file mode 100644 index 000000000..763c0291d Binary files /dev/null and b/public/terrain/18/429272/176890.terrain differ diff --git a/public/terrain/18/429272/176891.terrain b/public/terrain/18/429272/176891.terrain new file mode 100644 index 000000000..97763637d Binary files /dev/null and b/public/terrain/18/429272/176891.terrain differ diff --git a/public/terrain/18/429272/176892.terrain b/public/terrain/18/429272/176892.terrain new file mode 100644 index 000000000..6cb4a0049 Binary files /dev/null and b/public/terrain/18/429272/176892.terrain differ diff --git a/public/terrain/18/429272/176893.terrain b/public/terrain/18/429272/176893.terrain new file mode 100644 index 000000000..0cdf72bc9 Binary files /dev/null and b/public/terrain/18/429272/176893.terrain differ diff --git a/public/terrain/18/429272/176894.terrain b/public/terrain/18/429272/176894.terrain new file mode 100644 index 000000000..fb6a2fe1b Binary files /dev/null and b/public/terrain/18/429272/176894.terrain differ diff --git a/public/terrain/18/429272/176895.terrain b/public/terrain/18/429272/176895.terrain new file mode 100644 index 000000000..132c496cc Binary files /dev/null and b/public/terrain/18/429272/176895.terrain differ diff --git a/public/terrain/18/429272/176896.terrain b/public/terrain/18/429272/176896.terrain new file mode 100644 index 000000000..a0324a4e2 Binary files /dev/null and b/public/terrain/18/429272/176896.terrain differ diff --git a/public/terrain/18/429272/176897.terrain b/public/terrain/18/429272/176897.terrain new file mode 100644 index 000000000..17fb5c574 Binary files /dev/null and b/public/terrain/18/429272/176897.terrain differ diff --git a/public/terrain/18/429272/176898.terrain b/public/terrain/18/429272/176898.terrain new file mode 100644 index 000000000..f3cc8a291 Binary files /dev/null and b/public/terrain/18/429272/176898.terrain differ diff --git a/public/terrain/18/429272/176899.terrain b/public/terrain/18/429272/176899.terrain new file mode 100644 index 000000000..b7248da35 Binary files /dev/null and b/public/terrain/18/429272/176899.terrain differ diff --git a/public/terrain/18/429272/176900.terrain b/public/terrain/18/429272/176900.terrain new file mode 100644 index 000000000..2f427cea6 Binary files /dev/null and b/public/terrain/18/429272/176900.terrain differ diff --git a/public/terrain/18/429272/176901.terrain b/public/terrain/18/429272/176901.terrain new file mode 100644 index 000000000..8cfac6f6d Binary files /dev/null and b/public/terrain/18/429272/176901.terrain differ diff --git a/public/terrain/18/429272/176902.terrain b/public/terrain/18/429272/176902.terrain new file mode 100644 index 000000000..b62851830 Binary files /dev/null and b/public/terrain/18/429272/176902.terrain differ diff --git a/public/terrain/18/429272/176903.terrain b/public/terrain/18/429272/176903.terrain new file mode 100644 index 000000000..c56174f93 Binary files /dev/null and b/public/terrain/18/429272/176903.terrain differ diff --git a/public/terrain/18/429272/176904.terrain b/public/terrain/18/429272/176904.terrain new file mode 100644 index 000000000..ccba2449a Binary files /dev/null and b/public/terrain/18/429272/176904.terrain differ diff --git a/public/terrain/18/429272/176905.terrain b/public/terrain/18/429272/176905.terrain new file mode 100644 index 000000000..ec4ca62f5 Binary files /dev/null and b/public/terrain/18/429272/176905.terrain differ diff --git a/public/terrain/18/429272/176906.terrain b/public/terrain/18/429272/176906.terrain new file mode 100644 index 000000000..dc8e4ed38 Binary files /dev/null and b/public/terrain/18/429272/176906.terrain differ diff --git a/public/terrain/18/429272/176907.terrain b/public/terrain/18/429272/176907.terrain new file mode 100644 index 000000000..126f84537 Binary files /dev/null and b/public/terrain/18/429272/176907.terrain differ diff --git a/public/terrain/18/429272/176908.terrain b/public/terrain/18/429272/176908.terrain new file mode 100644 index 000000000..e732b088e Binary files /dev/null and b/public/terrain/18/429272/176908.terrain differ diff --git a/public/terrain/18/429272/176909.terrain b/public/terrain/18/429272/176909.terrain new file mode 100644 index 000000000..1f9e1b984 Binary files /dev/null and b/public/terrain/18/429272/176909.terrain differ diff --git a/public/terrain/18/429272/176910.terrain b/public/terrain/18/429272/176910.terrain new file mode 100644 index 000000000..050395b3e Binary files /dev/null and b/public/terrain/18/429272/176910.terrain differ diff --git a/public/terrain/18/429272/176911.terrain b/public/terrain/18/429272/176911.terrain new file mode 100644 index 000000000..c9996cdf1 Binary files /dev/null and b/public/terrain/18/429272/176911.terrain differ diff --git a/public/terrain/18/429272/176912.terrain b/public/terrain/18/429272/176912.terrain new file mode 100644 index 000000000..226f8585f Binary files /dev/null and b/public/terrain/18/429272/176912.terrain differ diff --git a/public/terrain/18/429272/176913.terrain b/public/terrain/18/429272/176913.terrain new file mode 100644 index 000000000..3d6e27e91 Binary files /dev/null and b/public/terrain/18/429272/176913.terrain differ diff --git a/public/terrain/18/429272/176914.terrain b/public/terrain/18/429272/176914.terrain new file mode 100644 index 000000000..c6c53aa0e Binary files /dev/null and b/public/terrain/18/429272/176914.terrain differ diff --git a/public/terrain/18/429272/176915.terrain b/public/terrain/18/429272/176915.terrain new file mode 100644 index 000000000..81c996ddb Binary files /dev/null and b/public/terrain/18/429272/176915.terrain differ diff --git a/public/terrain/18/429272/176916.terrain b/public/terrain/18/429272/176916.terrain new file mode 100644 index 000000000..b8474e7e2 Binary files /dev/null and b/public/terrain/18/429272/176916.terrain differ diff --git a/public/terrain/18/429272/176917.terrain b/public/terrain/18/429272/176917.terrain new file mode 100644 index 000000000..3da9926fd Binary files /dev/null and b/public/terrain/18/429272/176917.terrain differ diff --git a/public/terrain/18/429272/176918.terrain b/public/terrain/18/429272/176918.terrain new file mode 100644 index 000000000..e2d8cdf57 Binary files /dev/null and b/public/terrain/18/429272/176918.terrain differ diff --git a/public/terrain/18/429272/176919.terrain b/public/terrain/18/429272/176919.terrain new file mode 100644 index 000000000..7f40e6ef3 Binary files /dev/null and b/public/terrain/18/429272/176919.terrain differ diff --git a/public/terrain/18/429272/176920.terrain b/public/terrain/18/429272/176920.terrain new file mode 100644 index 000000000..8ed9fac80 Binary files /dev/null and b/public/terrain/18/429272/176920.terrain differ diff --git a/public/terrain/18/429272/176921.terrain b/public/terrain/18/429272/176921.terrain new file mode 100644 index 000000000..8dcfe0c33 Binary files /dev/null and b/public/terrain/18/429272/176921.terrain differ diff --git a/public/terrain/18/429272/176922.terrain b/public/terrain/18/429272/176922.terrain new file mode 100644 index 000000000..2e03e8ff0 Binary files /dev/null and b/public/terrain/18/429272/176922.terrain differ diff --git a/public/terrain/18/429272/176923.terrain b/public/terrain/18/429272/176923.terrain new file mode 100644 index 000000000..269ddea47 Binary files /dev/null and b/public/terrain/18/429272/176923.terrain differ diff --git a/public/terrain/18/429272/176924.terrain b/public/terrain/18/429272/176924.terrain new file mode 100644 index 000000000..17ab0e5a8 Binary files /dev/null and b/public/terrain/18/429272/176924.terrain differ diff --git a/public/terrain/18/429272/176925.terrain b/public/terrain/18/429272/176925.terrain new file mode 100644 index 000000000..7b7808286 Binary files /dev/null and b/public/terrain/18/429272/176925.terrain differ diff --git a/public/terrain/18/429272/176926.terrain b/public/terrain/18/429272/176926.terrain new file mode 100644 index 000000000..bd77516b4 Binary files /dev/null and b/public/terrain/18/429272/176926.terrain differ diff --git a/public/terrain/18/429272/176927.terrain b/public/terrain/18/429272/176927.terrain new file mode 100644 index 000000000..7f18cc45a Binary files /dev/null and b/public/terrain/18/429272/176927.terrain differ diff --git a/public/terrain/18/429272/176928.terrain b/public/terrain/18/429272/176928.terrain new file mode 100644 index 000000000..06dcee5ce Binary files /dev/null and b/public/terrain/18/429272/176928.terrain differ diff --git a/public/terrain/18/429272/176929.terrain b/public/terrain/18/429272/176929.terrain new file mode 100644 index 000000000..800772ae2 Binary files /dev/null and b/public/terrain/18/429272/176929.terrain differ diff --git a/public/terrain/18/429272/176930.terrain b/public/terrain/18/429272/176930.terrain new file mode 100644 index 000000000..7c3545de9 Binary files /dev/null and b/public/terrain/18/429272/176930.terrain differ diff --git a/public/terrain/18/429272/176931.terrain b/public/terrain/18/429272/176931.terrain new file mode 100644 index 000000000..e3129b06d Binary files /dev/null and b/public/terrain/18/429272/176931.terrain differ diff --git a/public/terrain/18/429272/176932.terrain b/public/terrain/18/429272/176932.terrain new file mode 100644 index 000000000..046b639e3 Binary files /dev/null and b/public/terrain/18/429272/176932.terrain differ diff --git a/public/terrain/18/429272/176933.terrain b/public/terrain/18/429272/176933.terrain new file mode 100644 index 000000000..1594b2a3c Binary files /dev/null and b/public/terrain/18/429272/176933.terrain differ diff --git a/public/terrain/18/429272/176934.terrain b/public/terrain/18/429272/176934.terrain new file mode 100644 index 000000000..bcbc15fce Binary files /dev/null and b/public/terrain/18/429272/176934.terrain differ diff --git a/public/terrain/18/429272/176935.terrain b/public/terrain/18/429272/176935.terrain new file mode 100644 index 000000000..6101dc612 Binary files /dev/null and b/public/terrain/18/429272/176935.terrain differ diff --git a/public/terrain/18/429272/176936.terrain b/public/terrain/18/429272/176936.terrain new file mode 100644 index 000000000..8215fa305 Binary files /dev/null and b/public/terrain/18/429272/176936.terrain differ diff --git a/public/terrain/18/429272/176937.terrain b/public/terrain/18/429272/176937.terrain new file mode 100644 index 000000000..38fb07509 Binary files /dev/null and b/public/terrain/18/429272/176937.terrain differ diff --git a/public/terrain/18/429272/176938.terrain b/public/terrain/18/429272/176938.terrain new file mode 100644 index 000000000..9fb454e61 Binary files /dev/null and b/public/terrain/18/429272/176938.terrain differ diff --git a/public/terrain/18/429272/176939.terrain b/public/terrain/18/429272/176939.terrain new file mode 100644 index 000000000..a58d3eb7a Binary files /dev/null and b/public/terrain/18/429272/176939.terrain differ diff --git a/public/terrain/18/429272/176940.terrain b/public/terrain/18/429272/176940.terrain new file mode 100644 index 000000000..e39906b1c Binary files /dev/null and b/public/terrain/18/429272/176940.terrain differ diff --git a/public/terrain/18/429272/176941.terrain b/public/terrain/18/429272/176941.terrain new file mode 100644 index 000000000..1f975fdfc Binary files /dev/null and b/public/terrain/18/429272/176941.terrain differ diff --git a/public/terrain/18/429272/176942.terrain b/public/terrain/18/429272/176942.terrain new file mode 100644 index 000000000..11b9c4f45 Binary files /dev/null and b/public/terrain/18/429272/176942.terrain differ diff --git a/public/terrain/18/429272/176943.terrain b/public/terrain/18/429272/176943.terrain new file mode 100644 index 000000000..46108e68b Binary files /dev/null and b/public/terrain/18/429272/176943.terrain differ diff --git a/public/terrain/18/429272/176944.terrain b/public/terrain/18/429272/176944.terrain new file mode 100644 index 000000000..f4d9e171f Binary files /dev/null and b/public/terrain/18/429272/176944.terrain differ diff --git a/public/terrain/18/429272/176945.terrain b/public/terrain/18/429272/176945.terrain new file mode 100644 index 000000000..8f4afa2f0 Binary files /dev/null and b/public/terrain/18/429272/176945.terrain differ diff --git a/public/terrain/18/429272/176946.terrain b/public/terrain/18/429272/176946.terrain new file mode 100644 index 000000000..8fafaa213 Binary files /dev/null and b/public/terrain/18/429272/176946.terrain differ diff --git a/public/terrain/18/429272/176947.terrain b/public/terrain/18/429272/176947.terrain new file mode 100644 index 000000000..6956f95d0 Binary files /dev/null and b/public/terrain/18/429272/176947.terrain differ diff --git a/public/terrain/18/429272/176948.terrain b/public/terrain/18/429272/176948.terrain new file mode 100644 index 000000000..56a5dcef4 Binary files /dev/null and b/public/terrain/18/429272/176948.terrain differ diff --git a/public/terrain/18/429272/176949.terrain b/public/terrain/18/429272/176949.terrain new file mode 100644 index 000000000..51b3cafaf Binary files /dev/null and b/public/terrain/18/429272/176949.terrain differ diff --git a/public/terrain/18/429272/176950.terrain b/public/terrain/18/429272/176950.terrain new file mode 100644 index 000000000..518dd92bd Binary files /dev/null and b/public/terrain/18/429272/176950.terrain differ diff --git a/public/terrain/18/429272/176951.terrain b/public/terrain/18/429272/176951.terrain new file mode 100644 index 000000000..675df50bb Binary files /dev/null and b/public/terrain/18/429272/176951.terrain differ diff --git a/public/terrain/18/429272/176952.terrain b/public/terrain/18/429272/176952.terrain new file mode 100644 index 000000000..a10b51648 Binary files /dev/null and b/public/terrain/18/429272/176952.terrain differ diff --git a/public/terrain/18/429272/176953.terrain b/public/terrain/18/429272/176953.terrain new file mode 100644 index 000000000..6078fb716 Binary files /dev/null and b/public/terrain/18/429272/176953.terrain differ diff --git a/public/terrain/18/429272/176954.terrain b/public/terrain/18/429272/176954.terrain new file mode 100644 index 000000000..d6dbc8459 Binary files /dev/null and b/public/terrain/18/429272/176954.terrain differ diff --git a/public/terrain/18/429272/176955.terrain b/public/terrain/18/429272/176955.terrain new file mode 100644 index 000000000..5580ff91f Binary files /dev/null and b/public/terrain/18/429272/176955.terrain differ diff --git a/public/terrain/18/429272/176956.terrain b/public/terrain/18/429272/176956.terrain new file mode 100644 index 000000000..ba6a0e1cd Binary files /dev/null and b/public/terrain/18/429272/176956.terrain differ diff --git a/public/terrain/18/429272/176957.terrain b/public/terrain/18/429272/176957.terrain new file mode 100644 index 000000000..15c94a281 Binary files /dev/null and b/public/terrain/18/429272/176957.terrain differ diff --git a/public/terrain/18/429272/176958.terrain b/public/terrain/18/429272/176958.terrain new file mode 100644 index 000000000..2a20b2099 Binary files /dev/null and b/public/terrain/18/429272/176958.terrain differ diff --git a/public/terrain/18/429272/176959.terrain b/public/terrain/18/429272/176959.terrain new file mode 100644 index 000000000..0bd37d788 Binary files /dev/null and b/public/terrain/18/429272/176959.terrain differ diff --git a/public/terrain/18/429272/176960.terrain b/public/terrain/18/429272/176960.terrain new file mode 100644 index 000000000..9c2e340d6 Binary files /dev/null and b/public/terrain/18/429272/176960.terrain differ diff --git a/public/terrain/18/429272/176961.terrain b/public/terrain/18/429272/176961.terrain new file mode 100644 index 000000000..ac03afefc Binary files /dev/null and b/public/terrain/18/429272/176961.terrain differ diff --git a/public/terrain/18/429272/176962.terrain b/public/terrain/18/429272/176962.terrain new file mode 100644 index 000000000..55e822a71 Binary files /dev/null and b/public/terrain/18/429272/176962.terrain differ diff --git a/public/terrain/18/429272/176963.terrain b/public/terrain/18/429272/176963.terrain new file mode 100644 index 000000000..137ff637a Binary files /dev/null and b/public/terrain/18/429272/176963.terrain differ diff --git a/public/terrain/18/429272/176964.terrain b/public/terrain/18/429272/176964.terrain new file mode 100644 index 000000000..9ef412869 Binary files /dev/null and b/public/terrain/18/429272/176964.terrain differ diff --git a/public/terrain/18/429272/176965.terrain b/public/terrain/18/429272/176965.terrain new file mode 100644 index 000000000..eb94936cc Binary files /dev/null and b/public/terrain/18/429272/176965.terrain differ diff --git a/public/terrain/18/429272/176966.terrain b/public/terrain/18/429272/176966.terrain new file mode 100644 index 000000000..505de458c Binary files /dev/null and b/public/terrain/18/429272/176966.terrain differ diff --git a/public/terrain/18/429272/176967.terrain b/public/terrain/18/429272/176967.terrain new file mode 100644 index 000000000..bb2e2e79f Binary files /dev/null and b/public/terrain/18/429272/176967.terrain differ diff --git a/public/terrain/18/429272/176968.terrain b/public/terrain/18/429272/176968.terrain new file mode 100644 index 000000000..22ff1f383 Binary files /dev/null and b/public/terrain/18/429272/176968.terrain differ diff --git a/public/terrain/18/429272/176969.terrain b/public/terrain/18/429272/176969.terrain new file mode 100644 index 000000000..01e3604c4 Binary files /dev/null and b/public/terrain/18/429272/176969.terrain differ diff --git a/public/terrain/18/429272/176970.terrain b/public/terrain/18/429272/176970.terrain new file mode 100644 index 000000000..d7bf21cbc Binary files /dev/null and b/public/terrain/18/429272/176970.terrain differ diff --git a/public/terrain/18/429272/176971.terrain b/public/terrain/18/429272/176971.terrain new file mode 100644 index 000000000..7f2565265 Binary files /dev/null and b/public/terrain/18/429272/176971.terrain differ diff --git a/public/terrain/18/429272/176972.terrain b/public/terrain/18/429272/176972.terrain new file mode 100644 index 000000000..78e91e6eb Binary files /dev/null and b/public/terrain/18/429272/176972.terrain differ diff --git a/public/terrain/18/429272/176973.terrain b/public/terrain/18/429272/176973.terrain new file mode 100644 index 000000000..219695e13 Binary files /dev/null and b/public/terrain/18/429272/176973.terrain differ diff --git a/public/terrain/18/429272/176974.terrain b/public/terrain/18/429272/176974.terrain new file mode 100644 index 000000000..384bc84fb Binary files /dev/null and b/public/terrain/18/429272/176974.terrain differ diff --git a/public/terrain/18/429272/176975.terrain b/public/terrain/18/429272/176975.terrain new file mode 100644 index 000000000..0a4e2a10b Binary files /dev/null and b/public/terrain/18/429272/176975.terrain differ diff --git a/public/terrain/18/429272/176976.terrain b/public/terrain/18/429272/176976.terrain new file mode 100644 index 000000000..78970a9da Binary files /dev/null and b/public/terrain/18/429272/176976.terrain differ diff --git a/public/terrain/18/429272/176977.terrain b/public/terrain/18/429272/176977.terrain new file mode 100644 index 000000000..f70ef441e Binary files /dev/null and b/public/terrain/18/429272/176977.terrain differ diff --git a/public/terrain/18/429272/176978.terrain b/public/terrain/18/429272/176978.terrain new file mode 100644 index 000000000..0f137ebca Binary files /dev/null and b/public/terrain/18/429272/176978.terrain differ diff --git a/public/terrain/18/429272/176979.terrain b/public/terrain/18/429272/176979.terrain new file mode 100644 index 000000000..b20a2e8c9 Binary files /dev/null and b/public/terrain/18/429272/176979.terrain differ diff --git a/public/terrain/18/429272/176980.terrain b/public/terrain/18/429272/176980.terrain new file mode 100644 index 000000000..9f4d97611 Binary files /dev/null and b/public/terrain/18/429272/176980.terrain differ diff --git a/public/terrain/18/429272/176981.terrain b/public/terrain/18/429272/176981.terrain new file mode 100644 index 000000000..476fe9fb8 Binary files /dev/null and b/public/terrain/18/429272/176981.terrain differ diff --git a/public/terrain/18/429272/176982.terrain b/public/terrain/18/429272/176982.terrain new file mode 100644 index 000000000..760b62fa8 Binary files /dev/null and b/public/terrain/18/429272/176982.terrain differ diff --git a/public/terrain/18/429272/176983.terrain b/public/terrain/18/429272/176983.terrain new file mode 100644 index 000000000..87d114484 Binary files /dev/null and b/public/terrain/18/429272/176983.terrain differ diff --git a/public/terrain/18/429272/176984.terrain b/public/terrain/18/429272/176984.terrain new file mode 100644 index 000000000..96efc0134 Binary files /dev/null and b/public/terrain/18/429272/176984.terrain differ diff --git a/public/terrain/18/429272/176985.terrain b/public/terrain/18/429272/176985.terrain new file mode 100644 index 000000000..20c31af36 Binary files /dev/null and b/public/terrain/18/429272/176985.terrain differ diff --git a/public/terrain/18/429272/176986.terrain b/public/terrain/18/429272/176986.terrain new file mode 100644 index 000000000..b5c72f1ee Binary files /dev/null and b/public/terrain/18/429272/176986.terrain differ diff --git a/public/terrain/18/429272/176987.terrain b/public/terrain/18/429272/176987.terrain new file mode 100644 index 000000000..65504da87 Binary files /dev/null and b/public/terrain/18/429272/176987.terrain differ diff --git a/public/terrain/18/429272/176988.terrain b/public/terrain/18/429272/176988.terrain new file mode 100644 index 000000000..526dbafa5 Binary files /dev/null and b/public/terrain/18/429272/176988.terrain differ diff --git a/public/terrain/18/429272/176989.terrain b/public/terrain/18/429272/176989.terrain new file mode 100644 index 000000000..f02cb28ca Binary files /dev/null and b/public/terrain/18/429272/176989.terrain differ diff --git a/public/terrain/18/429272/176990.terrain b/public/terrain/18/429272/176990.terrain new file mode 100644 index 000000000..a3a668592 Binary files /dev/null and b/public/terrain/18/429272/176990.terrain differ diff --git a/public/terrain/18/429272/176991.terrain b/public/terrain/18/429272/176991.terrain new file mode 100644 index 000000000..89cbc7543 Binary files /dev/null and b/public/terrain/18/429272/176991.terrain differ diff --git a/public/terrain/18/429272/176992.terrain b/public/terrain/18/429272/176992.terrain new file mode 100644 index 000000000..d8f640665 Binary files /dev/null and b/public/terrain/18/429272/176992.terrain differ diff --git a/public/terrain/18/429272/176993.terrain b/public/terrain/18/429272/176993.terrain new file mode 100644 index 000000000..dee2c8d70 Binary files /dev/null and b/public/terrain/18/429272/176993.terrain differ diff --git a/public/terrain/18/429272/176994.terrain b/public/terrain/18/429272/176994.terrain new file mode 100644 index 000000000..0f14da80f Binary files /dev/null and b/public/terrain/18/429272/176994.terrain differ diff --git a/public/terrain/18/429272/176995.terrain b/public/terrain/18/429272/176995.terrain new file mode 100644 index 000000000..d411a4f1f Binary files /dev/null and b/public/terrain/18/429272/176995.terrain differ diff --git a/public/terrain/18/429272/176996.terrain b/public/terrain/18/429272/176996.terrain new file mode 100644 index 000000000..40316f38c Binary files /dev/null and b/public/terrain/18/429272/176996.terrain differ diff --git a/public/terrain/18/429272/176997.terrain b/public/terrain/18/429272/176997.terrain new file mode 100644 index 000000000..c33f391e8 Binary files /dev/null and b/public/terrain/18/429272/176997.terrain differ diff --git a/public/terrain/18/429272/176998.terrain b/public/terrain/18/429272/176998.terrain new file mode 100644 index 000000000..e9e0ba7dd Binary files /dev/null and b/public/terrain/18/429272/176998.terrain differ diff --git a/public/terrain/18/429272/176999.terrain b/public/terrain/18/429272/176999.terrain new file mode 100644 index 000000000..75a263259 Binary files /dev/null and b/public/terrain/18/429272/176999.terrain differ diff --git a/public/terrain/18/429272/177000.terrain b/public/terrain/18/429272/177000.terrain new file mode 100644 index 000000000..b1eb831ff Binary files /dev/null and b/public/terrain/18/429272/177000.terrain differ diff --git a/public/terrain/18/429272/177001.terrain b/public/terrain/18/429272/177001.terrain new file mode 100644 index 000000000..068412cf5 Binary files /dev/null and b/public/terrain/18/429272/177001.terrain differ diff --git a/public/terrain/18/429272/177002.terrain b/public/terrain/18/429272/177002.terrain new file mode 100644 index 000000000..d24d115e7 Binary files /dev/null and b/public/terrain/18/429272/177002.terrain differ diff --git a/public/terrain/18/429272/177003.terrain b/public/terrain/18/429272/177003.terrain new file mode 100644 index 000000000..7c53b5fc7 Binary files /dev/null and b/public/terrain/18/429272/177003.terrain differ diff --git a/public/terrain/18/429272/177004.terrain b/public/terrain/18/429272/177004.terrain new file mode 100644 index 000000000..e2816c320 Binary files /dev/null and b/public/terrain/18/429272/177004.terrain differ diff --git a/public/terrain/18/429272/177005.terrain b/public/terrain/18/429272/177005.terrain new file mode 100644 index 000000000..edfc6e429 Binary files /dev/null and b/public/terrain/18/429272/177005.terrain differ diff --git a/public/terrain/18/429272/177006.terrain b/public/terrain/18/429272/177006.terrain new file mode 100644 index 000000000..b3b33493d Binary files /dev/null and b/public/terrain/18/429272/177006.terrain differ diff --git a/public/terrain/18/429272/177007.terrain b/public/terrain/18/429272/177007.terrain new file mode 100644 index 000000000..e67d4aba0 Binary files /dev/null and b/public/terrain/18/429272/177007.terrain differ diff --git a/public/terrain/18/429272/177008.terrain b/public/terrain/18/429272/177008.terrain new file mode 100644 index 000000000..3458297f6 Binary files /dev/null and b/public/terrain/18/429272/177008.terrain differ diff --git a/public/terrain/18/429272/177009.terrain b/public/terrain/18/429272/177009.terrain new file mode 100644 index 000000000..89c798185 Binary files /dev/null and b/public/terrain/18/429272/177009.terrain differ diff --git a/public/terrain/18/429272/177010.terrain b/public/terrain/18/429272/177010.terrain new file mode 100644 index 000000000..9c34f085d Binary files /dev/null and b/public/terrain/18/429272/177010.terrain differ diff --git a/public/terrain/18/429272/177011.terrain b/public/terrain/18/429272/177011.terrain new file mode 100644 index 000000000..10ac13979 Binary files /dev/null and b/public/terrain/18/429272/177011.terrain differ diff --git a/public/terrain/18/429272/177012.terrain b/public/terrain/18/429272/177012.terrain new file mode 100644 index 000000000..bbd9c2f7a Binary files /dev/null and b/public/terrain/18/429272/177012.terrain differ diff --git a/public/terrain/18/429272/177013.terrain b/public/terrain/18/429272/177013.terrain new file mode 100644 index 000000000..a4d489982 Binary files /dev/null and b/public/terrain/18/429272/177013.terrain differ diff --git a/public/terrain/18/429272/177014.terrain b/public/terrain/18/429272/177014.terrain new file mode 100644 index 000000000..6886c6edb Binary files /dev/null and b/public/terrain/18/429272/177014.terrain differ diff --git a/public/terrain/18/429272/177015.terrain b/public/terrain/18/429272/177015.terrain new file mode 100644 index 000000000..026a1d0b6 Binary files /dev/null and b/public/terrain/18/429272/177015.terrain differ diff --git a/public/terrain/18/429272/177016.terrain b/public/terrain/18/429272/177016.terrain new file mode 100644 index 000000000..a44de9eaf Binary files /dev/null and b/public/terrain/18/429272/177016.terrain differ diff --git a/public/terrain/18/429272/177017.terrain b/public/terrain/18/429272/177017.terrain new file mode 100644 index 000000000..a8714bb5b Binary files /dev/null and b/public/terrain/18/429272/177017.terrain differ diff --git a/public/terrain/18/429272/177018.terrain b/public/terrain/18/429272/177018.terrain new file mode 100644 index 000000000..936d7106b Binary files /dev/null and b/public/terrain/18/429272/177018.terrain differ diff --git a/public/terrain/18/429272/177019.terrain b/public/terrain/18/429272/177019.terrain new file mode 100644 index 000000000..74f9a6a22 Binary files /dev/null and b/public/terrain/18/429272/177019.terrain differ diff --git a/public/terrain/18/429272/177020.terrain b/public/terrain/18/429272/177020.terrain new file mode 100644 index 000000000..f73a33c50 Binary files /dev/null and b/public/terrain/18/429272/177020.terrain differ diff --git a/public/terrain/18/429272/177021.terrain b/public/terrain/18/429272/177021.terrain new file mode 100644 index 000000000..5d62563a0 Binary files /dev/null and b/public/terrain/18/429272/177021.terrain differ diff --git a/public/terrain/18/429272/177022.terrain b/public/terrain/18/429272/177022.terrain new file mode 100644 index 000000000..0e1e36f84 Binary files /dev/null and b/public/terrain/18/429272/177022.terrain differ diff --git a/public/terrain/18/429272/177023.terrain b/public/terrain/18/429272/177023.terrain new file mode 100644 index 000000000..75fb163a1 Binary files /dev/null and b/public/terrain/18/429272/177023.terrain differ diff --git a/public/terrain/18/429272/177024.terrain b/public/terrain/18/429272/177024.terrain new file mode 100644 index 000000000..b9ba1e6e0 Binary files /dev/null and b/public/terrain/18/429272/177024.terrain differ diff --git a/public/terrain/18/429272/177025.terrain b/public/terrain/18/429272/177025.terrain new file mode 100644 index 000000000..ff8f1b397 Binary files /dev/null and b/public/terrain/18/429272/177025.terrain differ diff --git a/public/terrain/18/429272/177026.terrain b/public/terrain/18/429272/177026.terrain new file mode 100644 index 000000000..d454371b4 Binary files /dev/null and b/public/terrain/18/429272/177026.terrain differ diff --git a/public/terrain/18/429272/177027.terrain b/public/terrain/18/429272/177027.terrain new file mode 100644 index 000000000..022845ddd Binary files /dev/null and b/public/terrain/18/429272/177027.terrain differ diff --git a/public/terrain/18/429272/177028.terrain b/public/terrain/18/429272/177028.terrain new file mode 100644 index 000000000..68b16c5ac Binary files /dev/null and b/public/terrain/18/429272/177028.terrain differ diff --git a/public/terrain/18/429272/177029.terrain b/public/terrain/18/429272/177029.terrain new file mode 100644 index 000000000..717f028b7 Binary files /dev/null and b/public/terrain/18/429272/177029.terrain differ diff --git a/public/terrain/18/429273/176871.terrain b/public/terrain/18/429273/176871.terrain new file mode 100644 index 000000000..bf5e922a8 Binary files /dev/null and b/public/terrain/18/429273/176871.terrain differ diff --git a/public/terrain/18/429273/176872.terrain b/public/terrain/18/429273/176872.terrain new file mode 100644 index 000000000..6eb32e74c Binary files /dev/null and b/public/terrain/18/429273/176872.terrain differ diff --git a/public/terrain/18/429273/176873.terrain b/public/terrain/18/429273/176873.terrain new file mode 100644 index 000000000..0c437fa98 Binary files /dev/null and b/public/terrain/18/429273/176873.terrain differ diff --git a/public/terrain/18/429273/176874.terrain b/public/terrain/18/429273/176874.terrain new file mode 100644 index 000000000..1d6292bb2 Binary files /dev/null and b/public/terrain/18/429273/176874.terrain differ diff --git a/public/terrain/18/429273/176875.terrain b/public/terrain/18/429273/176875.terrain new file mode 100644 index 000000000..316627e79 Binary files /dev/null and b/public/terrain/18/429273/176875.terrain differ diff --git a/public/terrain/18/429273/176876.terrain b/public/terrain/18/429273/176876.terrain new file mode 100644 index 000000000..3949957aa Binary files /dev/null and b/public/terrain/18/429273/176876.terrain differ diff --git a/public/terrain/18/429273/176877.terrain b/public/terrain/18/429273/176877.terrain new file mode 100644 index 000000000..7015a2951 Binary files /dev/null and b/public/terrain/18/429273/176877.terrain differ diff --git a/public/terrain/18/429273/176878.terrain b/public/terrain/18/429273/176878.terrain new file mode 100644 index 000000000..765d29491 Binary files /dev/null and b/public/terrain/18/429273/176878.terrain differ diff --git a/public/terrain/18/429273/176879.terrain b/public/terrain/18/429273/176879.terrain new file mode 100644 index 000000000..f5868d054 Binary files /dev/null and b/public/terrain/18/429273/176879.terrain differ diff --git a/public/terrain/18/429273/176880.terrain b/public/terrain/18/429273/176880.terrain new file mode 100644 index 000000000..989dcae82 Binary files /dev/null and b/public/terrain/18/429273/176880.terrain differ diff --git a/public/terrain/18/429273/176881.terrain b/public/terrain/18/429273/176881.terrain new file mode 100644 index 000000000..46ce913cb Binary files /dev/null and b/public/terrain/18/429273/176881.terrain differ diff --git a/public/terrain/18/429273/176882.terrain b/public/terrain/18/429273/176882.terrain new file mode 100644 index 000000000..57acbc585 Binary files /dev/null and b/public/terrain/18/429273/176882.terrain differ diff --git a/public/terrain/18/429273/176883.terrain b/public/terrain/18/429273/176883.terrain new file mode 100644 index 000000000..56556d6a5 Binary files /dev/null and b/public/terrain/18/429273/176883.terrain differ diff --git a/public/terrain/18/429273/176884.terrain b/public/terrain/18/429273/176884.terrain new file mode 100644 index 000000000..dfd612c77 Binary files /dev/null and b/public/terrain/18/429273/176884.terrain differ diff --git a/public/terrain/18/429273/176885.terrain b/public/terrain/18/429273/176885.terrain new file mode 100644 index 000000000..e726d2fe7 Binary files /dev/null and b/public/terrain/18/429273/176885.terrain differ diff --git a/public/terrain/18/429273/176886.terrain b/public/terrain/18/429273/176886.terrain new file mode 100644 index 000000000..1014ba38b Binary files /dev/null and b/public/terrain/18/429273/176886.terrain differ diff --git a/public/terrain/18/429273/176887.terrain b/public/terrain/18/429273/176887.terrain new file mode 100644 index 000000000..ee10a68f2 Binary files /dev/null and b/public/terrain/18/429273/176887.terrain differ diff --git a/public/terrain/18/429273/176888.terrain b/public/terrain/18/429273/176888.terrain new file mode 100644 index 000000000..c2ff8417c Binary files /dev/null and b/public/terrain/18/429273/176888.terrain differ diff --git a/public/terrain/18/429273/176889.terrain b/public/terrain/18/429273/176889.terrain new file mode 100644 index 000000000..d38cebd1e Binary files /dev/null and b/public/terrain/18/429273/176889.terrain differ diff --git a/public/terrain/18/429273/176890.terrain b/public/terrain/18/429273/176890.terrain new file mode 100644 index 000000000..9bab60869 Binary files /dev/null and b/public/terrain/18/429273/176890.terrain differ diff --git a/public/terrain/18/429273/176891.terrain b/public/terrain/18/429273/176891.terrain new file mode 100644 index 000000000..adb9580e6 Binary files /dev/null and b/public/terrain/18/429273/176891.terrain differ diff --git a/public/terrain/18/429273/176892.terrain b/public/terrain/18/429273/176892.terrain new file mode 100644 index 000000000..151b2688a Binary files /dev/null and b/public/terrain/18/429273/176892.terrain differ diff --git a/public/terrain/18/429273/176893.terrain b/public/terrain/18/429273/176893.terrain new file mode 100644 index 000000000..f185aab1e Binary files /dev/null and b/public/terrain/18/429273/176893.terrain differ diff --git a/public/terrain/18/429273/176894.terrain b/public/terrain/18/429273/176894.terrain new file mode 100644 index 000000000..de172d092 Binary files /dev/null and b/public/terrain/18/429273/176894.terrain differ diff --git a/public/terrain/18/429273/176895.terrain b/public/terrain/18/429273/176895.terrain new file mode 100644 index 000000000..fb272bacb Binary files /dev/null and b/public/terrain/18/429273/176895.terrain differ diff --git a/public/terrain/18/429273/176896.terrain b/public/terrain/18/429273/176896.terrain new file mode 100644 index 000000000..45bedf3cd Binary files /dev/null and b/public/terrain/18/429273/176896.terrain differ diff --git a/public/terrain/18/429273/176897.terrain b/public/terrain/18/429273/176897.terrain new file mode 100644 index 000000000..c136b93b5 Binary files /dev/null and b/public/terrain/18/429273/176897.terrain differ diff --git a/public/terrain/18/429273/176898.terrain b/public/terrain/18/429273/176898.terrain new file mode 100644 index 000000000..94971ee97 Binary files /dev/null and b/public/terrain/18/429273/176898.terrain differ diff --git a/public/terrain/18/429273/176899.terrain b/public/terrain/18/429273/176899.terrain new file mode 100644 index 000000000..a5e2a501a Binary files /dev/null and b/public/terrain/18/429273/176899.terrain differ diff --git a/public/terrain/18/429273/176900.terrain b/public/terrain/18/429273/176900.terrain new file mode 100644 index 000000000..860cf91b6 Binary files /dev/null and b/public/terrain/18/429273/176900.terrain differ diff --git a/public/terrain/18/429273/176901.terrain b/public/terrain/18/429273/176901.terrain new file mode 100644 index 000000000..5599dc5de Binary files /dev/null and b/public/terrain/18/429273/176901.terrain differ diff --git a/public/terrain/18/429273/176902.terrain b/public/terrain/18/429273/176902.terrain new file mode 100644 index 000000000..37b44a8bb Binary files /dev/null and b/public/terrain/18/429273/176902.terrain differ diff --git a/public/terrain/18/429273/176903.terrain b/public/terrain/18/429273/176903.terrain new file mode 100644 index 000000000..1973629a4 Binary files /dev/null and b/public/terrain/18/429273/176903.terrain differ diff --git a/public/terrain/18/429273/176904.terrain b/public/terrain/18/429273/176904.terrain new file mode 100644 index 000000000..bf06bba95 Binary files /dev/null and b/public/terrain/18/429273/176904.terrain differ diff --git a/public/terrain/18/429273/176905.terrain b/public/terrain/18/429273/176905.terrain new file mode 100644 index 000000000..92444c823 Binary files /dev/null and b/public/terrain/18/429273/176905.terrain differ diff --git a/public/terrain/18/429273/176906.terrain b/public/terrain/18/429273/176906.terrain new file mode 100644 index 000000000..189cceb60 Binary files /dev/null and b/public/terrain/18/429273/176906.terrain differ diff --git a/public/terrain/18/429273/176907.terrain b/public/terrain/18/429273/176907.terrain new file mode 100644 index 000000000..126c75463 Binary files /dev/null and b/public/terrain/18/429273/176907.terrain differ diff --git a/public/terrain/18/429273/176908.terrain b/public/terrain/18/429273/176908.terrain new file mode 100644 index 000000000..5dc50f785 Binary files /dev/null and b/public/terrain/18/429273/176908.terrain differ diff --git a/public/terrain/18/429273/176909.terrain b/public/terrain/18/429273/176909.terrain new file mode 100644 index 000000000..1c55cc595 Binary files /dev/null and b/public/terrain/18/429273/176909.terrain differ diff --git a/public/terrain/18/429273/176910.terrain b/public/terrain/18/429273/176910.terrain new file mode 100644 index 000000000..5514272f3 Binary files /dev/null and b/public/terrain/18/429273/176910.terrain differ diff --git a/public/terrain/18/429273/176911.terrain b/public/terrain/18/429273/176911.terrain new file mode 100644 index 000000000..4721a80ef Binary files /dev/null and b/public/terrain/18/429273/176911.terrain differ diff --git a/public/terrain/18/429273/176912.terrain b/public/terrain/18/429273/176912.terrain new file mode 100644 index 000000000..44ff6b047 Binary files /dev/null and b/public/terrain/18/429273/176912.terrain differ diff --git a/public/terrain/18/429273/176913.terrain b/public/terrain/18/429273/176913.terrain new file mode 100644 index 000000000..01838497c Binary files /dev/null and b/public/terrain/18/429273/176913.terrain differ diff --git a/public/terrain/18/429273/176914.terrain b/public/terrain/18/429273/176914.terrain new file mode 100644 index 000000000..866b979ca Binary files /dev/null and b/public/terrain/18/429273/176914.terrain differ diff --git a/public/terrain/18/429273/176915.terrain b/public/terrain/18/429273/176915.terrain new file mode 100644 index 000000000..28e439ea9 Binary files /dev/null and b/public/terrain/18/429273/176915.terrain differ diff --git a/public/terrain/18/429273/176916.terrain b/public/terrain/18/429273/176916.terrain new file mode 100644 index 000000000..0670dd4ab Binary files /dev/null and b/public/terrain/18/429273/176916.terrain differ diff --git a/public/terrain/18/429273/176917.terrain b/public/terrain/18/429273/176917.terrain new file mode 100644 index 000000000..ffb52c2ea Binary files /dev/null and b/public/terrain/18/429273/176917.terrain differ diff --git a/public/terrain/18/429273/176918.terrain b/public/terrain/18/429273/176918.terrain new file mode 100644 index 000000000..87ccd07b1 Binary files /dev/null and b/public/terrain/18/429273/176918.terrain differ diff --git a/public/terrain/18/429273/176919.terrain b/public/terrain/18/429273/176919.terrain new file mode 100644 index 000000000..1a24ab1f8 Binary files /dev/null and b/public/terrain/18/429273/176919.terrain differ diff --git a/public/terrain/18/429273/176920.terrain b/public/terrain/18/429273/176920.terrain new file mode 100644 index 000000000..709fdeb7f Binary files /dev/null and b/public/terrain/18/429273/176920.terrain differ diff --git a/public/terrain/18/429273/176921.terrain b/public/terrain/18/429273/176921.terrain new file mode 100644 index 000000000..40062ea81 Binary files /dev/null and b/public/terrain/18/429273/176921.terrain differ diff --git a/public/terrain/18/429273/176922.terrain b/public/terrain/18/429273/176922.terrain new file mode 100644 index 000000000..e4c3d84e6 Binary files /dev/null and b/public/terrain/18/429273/176922.terrain differ diff --git a/public/terrain/18/429273/176923.terrain b/public/terrain/18/429273/176923.terrain new file mode 100644 index 000000000..008295832 Binary files /dev/null and b/public/terrain/18/429273/176923.terrain differ diff --git a/public/terrain/18/429273/176924.terrain b/public/terrain/18/429273/176924.terrain new file mode 100644 index 000000000..2063acd7c Binary files /dev/null and b/public/terrain/18/429273/176924.terrain differ diff --git a/public/terrain/18/429273/176925.terrain b/public/terrain/18/429273/176925.terrain new file mode 100644 index 000000000..6bc6c980a Binary files /dev/null and b/public/terrain/18/429273/176925.terrain differ diff --git a/public/terrain/18/429273/176926.terrain b/public/terrain/18/429273/176926.terrain new file mode 100644 index 000000000..77fad02d3 Binary files /dev/null and b/public/terrain/18/429273/176926.terrain differ diff --git a/public/terrain/18/429273/176927.terrain b/public/terrain/18/429273/176927.terrain new file mode 100644 index 000000000..5a1a3f34a Binary files /dev/null and b/public/terrain/18/429273/176927.terrain differ diff --git a/public/terrain/18/429273/176928.terrain b/public/terrain/18/429273/176928.terrain new file mode 100644 index 000000000..0995921aa Binary files /dev/null and b/public/terrain/18/429273/176928.terrain differ diff --git a/public/terrain/18/429273/176929.terrain b/public/terrain/18/429273/176929.terrain new file mode 100644 index 000000000..381e712da Binary files /dev/null and b/public/terrain/18/429273/176929.terrain differ diff --git a/public/terrain/18/429273/176930.terrain b/public/terrain/18/429273/176930.terrain new file mode 100644 index 000000000..38ef15880 Binary files /dev/null and b/public/terrain/18/429273/176930.terrain differ diff --git a/public/terrain/18/429273/176931.terrain b/public/terrain/18/429273/176931.terrain new file mode 100644 index 000000000..2f1c77b0e Binary files /dev/null and b/public/terrain/18/429273/176931.terrain differ diff --git a/public/terrain/18/429273/176932.terrain b/public/terrain/18/429273/176932.terrain new file mode 100644 index 000000000..0a197130e Binary files /dev/null and b/public/terrain/18/429273/176932.terrain differ diff --git a/public/terrain/18/429273/176933.terrain b/public/terrain/18/429273/176933.terrain new file mode 100644 index 000000000..a101d9adb Binary files /dev/null and b/public/terrain/18/429273/176933.terrain differ diff --git a/public/terrain/18/429273/176934.terrain b/public/terrain/18/429273/176934.terrain new file mode 100644 index 000000000..f7faafee6 Binary files /dev/null and b/public/terrain/18/429273/176934.terrain differ diff --git a/public/terrain/18/429273/176935.terrain b/public/terrain/18/429273/176935.terrain new file mode 100644 index 000000000..fab68718f Binary files /dev/null and b/public/terrain/18/429273/176935.terrain differ diff --git a/public/terrain/18/429273/176936.terrain b/public/terrain/18/429273/176936.terrain new file mode 100644 index 000000000..77e3c8111 Binary files /dev/null and b/public/terrain/18/429273/176936.terrain differ diff --git a/public/terrain/18/429273/176937.terrain b/public/terrain/18/429273/176937.terrain new file mode 100644 index 000000000..f6990b1c0 Binary files /dev/null and b/public/terrain/18/429273/176937.terrain differ diff --git a/public/terrain/18/429273/176938.terrain b/public/terrain/18/429273/176938.terrain new file mode 100644 index 000000000..c5db4da69 Binary files /dev/null and b/public/terrain/18/429273/176938.terrain differ diff --git a/public/terrain/18/429273/176939.terrain b/public/terrain/18/429273/176939.terrain new file mode 100644 index 000000000..b794a1442 Binary files /dev/null and b/public/terrain/18/429273/176939.terrain differ diff --git a/public/terrain/18/429273/176940.terrain b/public/terrain/18/429273/176940.terrain new file mode 100644 index 000000000..bb6e7860c Binary files /dev/null and b/public/terrain/18/429273/176940.terrain differ diff --git a/public/terrain/18/429273/176941.terrain b/public/terrain/18/429273/176941.terrain new file mode 100644 index 000000000..3f4b86bd1 Binary files /dev/null and b/public/terrain/18/429273/176941.terrain differ diff --git a/public/terrain/18/429273/176942.terrain b/public/terrain/18/429273/176942.terrain new file mode 100644 index 000000000..798bf66a6 Binary files /dev/null and b/public/terrain/18/429273/176942.terrain differ diff --git a/public/terrain/18/429273/176943.terrain b/public/terrain/18/429273/176943.terrain new file mode 100644 index 000000000..6511ace4e Binary files /dev/null and b/public/terrain/18/429273/176943.terrain differ diff --git a/public/terrain/18/429273/176944.terrain b/public/terrain/18/429273/176944.terrain new file mode 100644 index 000000000..6ec26f946 Binary files /dev/null and b/public/terrain/18/429273/176944.terrain differ diff --git a/public/terrain/18/429273/176945.terrain b/public/terrain/18/429273/176945.terrain new file mode 100644 index 000000000..727657dc4 Binary files /dev/null and b/public/terrain/18/429273/176945.terrain differ diff --git a/public/terrain/18/429273/176946.terrain b/public/terrain/18/429273/176946.terrain new file mode 100644 index 000000000..62a114f47 Binary files /dev/null and b/public/terrain/18/429273/176946.terrain differ diff --git a/public/terrain/18/429273/176947.terrain b/public/terrain/18/429273/176947.terrain new file mode 100644 index 000000000..0e0d7452f Binary files /dev/null and b/public/terrain/18/429273/176947.terrain differ diff --git a/public/terrain/18/429273/176948.terrain b/public/terrain/18/429273/176948.terrain new file mode 100644 index 000000000..d3a522f2c Binary files /dev/null and b/public/terrain/18/429273/176948.terrain differ diff --git a/public/terrain/18/429273/176949.terrain b/public/terrain/18/429273/176949.terrain new file mode 100644 index 000000000..e0196d1fb Binary files /dev/null and b/public/terrain/18/429273/176949.terrain differ diff --git a/public/terrain/18/429273/176950.terrain b/public/terrain/18/429273/176950.terrain new file mode 100644 index 000000000..8412d194b Binary files /dev/null and b/public/terrain/18/429273/176950.terrain differ diff --git a/public/terrain/18/429273/176951.terrain b/public/terrain/18/429273/176951.terrain new file mode 100644 index 000000000..46f783be1 Binary files /dev/null and b/public/terrain/18/429273/176951.terrain differ diff --git a/public/terrain/18/429273/176952.terrain b/public/terrain/18/429273/176952.terrain new file mode 100644 index 000000000..cbe4e84bd Binary files /dev/null and b/public/terrain/18/429273/176952.terrain differ diff --git a/public/terrain/18/429273/176953.terrain b/public/terrain/18/429273/176953.terrain new file mode 100644 index 000000000..8ce15da55 Binary files /dev/null and b/public/terrain/18/429273/176953.terrain differ diff --git a/public/terrain/18/429273/176954.terrain b/public/terrain/18/429273/176954.terrain new file mode 100644 index 000000000..63d611c80 Binary files /dev/null and b/public/terrain/18/429273/176954.terrain differ diff --git a/public/terrain/18/429273/176955.terrain b/public/terrain/18/429273/176955.terrain new file mode 100644 index 000000000..17b479c11 Binary files /dev/null and b/public/terrain/18/429273/176955.terrain differ diff --git a/public/terrain/18/429273/176956.terrain b/public/terrain/18/429273/176956.terrain new file mode 100644 index 000000000..def7d67dc Binary files /dev/null and b/public/terrain/18/429273/176956.terrain differ diff --git a/public/terrain/18/429273/176957.terrain b/public/terrain/18/429273/176957.terrain new file mode 100644 index 000000000..b4db811fb Binary files /dev/null and b/public/terrain/18/429273/176957.terrain differ diff --git a/public/terrain/18/429273/176958.terrain b/public/terrain/18/429273/176958.terrain new file mode 100644 index 000000000..fd58c839e Binary files /dev/null and b/public/terrain/18/429273/176958.terrain differ diff --git a/public/terrain/18/429273/176959.terrain b/public/terrain/18/429273/176959.terrain new file mode 100644 index 000000000..f580e9bc0 Binary files /dev/null and b/public/terrain/18/429273/176959.terrain differ diff --git a/public/terrain/18/429273/176960.terrain b/public/terrain/18/429273/176960.terrain new file mode 100644 index 000000000..48dd3b141 Binary files /dev/null and b/public/terrain/18/429273/176960.terrain differ diff --git a/public/terrain/18/429273/176961.terrain b/public/terrain/18/429273/176961.terrain new file mode 100644 index 000000000..0b068343a Binary files /dev/null and b/public/terrain/18/429273/176961.terrain differ diff --git a/public/terrain/18/429273/176962.terrain b/public/terrain/18/429273/176962.terrain new file mode 100644 index 000000000..55b383747 Binary files /dev/null and b/public/terrain/18/429273/176962.terrain differ diff --git a/public/terrain/18/429273/176963.terrain b/public/terrain/18/429273/176963.terrain new file mode 100644 index 000000000..121e669e1 Binary files /dev/null and b/public/terrain/18/429273/176963.terrain differ diff --git a/public/terrain/18/429273/176964.terrain b/public/terrain/18/429273/176964.terrain new file mode 100644 index 000000000..26fbe36ff Binary files /dev/null and b/public/terrain/18/429273/176964.terrain differ diff --git a/public/terrain/18/429273/176965.terrain b/public/terrain/18/429273/176965.terrain new file mode 100644 index 000000000..65185baa1 Binary files /dev/null and b/public/terrain/18/429273/176965.terrain differ diff --git a/public/terrain/18/429273/176966.terrain b/public/terrain/18/429273/176966.terrain new file mode 100644 index 000000000..29c3c0052 Binary files /dev/null and b/public/terrain/18/429273/176966.terrain differ diff --git a/public/terrain/18/429273/176967.terrain b/public/terrain/18/429273/176967.terrain new file mode 100644 index 000000000..76f745c29 Binary files /dev/null and b/public/terrain/18/429273/176967.terrain differ diff --git a/public/terrain/18/429273/176968.terrain b/public/terrain/18/429273/176968.terrain new file mode 100644 index 000000000..c9d482122 Binary files /dev/null and b/public/terrain/18/429273/176968.terrain differ diff --git a/public/terrain/18/429273/176969.terrain b/public/terrain/18/429273/176969.terrain new file mode 100644 index 000000000..e5b0796b6 Binary files /dev/null and b/public/terrain/18/429273/176969.terrain differ diff --git a/public/terrain/18/429273/176970.terrain b/public/terrain/18/429273/176970.terrain new file mode 100644 index 000000000..30adb435d Binary files /dev/null and b/public/terrain/18/429273/176970.terrain differ diff --git a/public/terrain/18/429273/176971.terrain b/public/terrain/18/429273/176971.terrain new file mode 100644 index 000000000..9f633b400 Binary files /dev/null and b/public/terrain/18/429273/176971.terrain differ diff --git a/public/terrain/18/429273/176972.terrain b/public/terrain/18/429273/176972.terrain new file mode 100644 index 000000000..3f4d6b21b Binary files /dev/null and b/public/terrain/18/429273/176972.terrain differ diff --git a/public/terrain/18/429273/176973.terrain b/public/terrain/18/429273/176973.terrain new file mode 100644 index 000000000..01396c7c3 Binary files /dev/null and b/public/terrain/18/429273/176973.terrain differ diff --git a/public/terrain/18/429273/176974.terrain b/public/terrain/18/429273/176974.terrain new file mode 100644 index 000000000..09df0b195 Binary files /dev/null and b/public/terrain/18/429273/176974.terrain differ diff --git a/public/terrain/18/429273/176975.terrain b/public/terrain/18/429273/176975.terrain new file mode 100644 index 000000000..31a3c6093 Binary files /dev/null and b/public/terrain/18/429273/176975.terrain differ diff --git a/public/terrain/18/429273/176976.terrain b/public/terrain/18/429273/176976.terrain new file mode 100644 index 000000000..527365aed Binary files /dev/null and b/public/terrain/18/429273/176976.terrain differ diff --git a/public/terrain/18/429273/176977.terrain b/public/terrain/18/429273/176977.terrain new file mode 100644 index 000000000..62e2dee60 Binary files /dev/null and b/public/terrain/18/429273/176977.terrain differ diff --git a/public/terrain/18/429273/176978.terrain b/public/terrain/18/429273/176978.terrain new file mode 100644 index 000000000..8fd95e4a4 Binary files /dev/null and b/public/terrain/18/429273/176978.terrain differ diff --git a/public/terrain/18/429273/176979.terrain b/public/terrain/18/429273/176979.terrain new file mode 100644 index 000000000..c40424c9f Binary files /dev/null and b/public/terrain/18/429273/176979.terrain differ diff --git a/public/terrain/18/429273/176980.terrain b/public/terrain/18/429273/176980.terrain new file mode 100644 index 000000000..c2d8dddd9 Binary files /dev/null and b/public/terrain/18/429273/176980.terrain differ diff --git a/public/terrain/18/429273/176981.terrain b/public/terrain/18/429273/176981.terrain new file mode 100644 index 000000000..7bd78efcd Binary files /dev/null and b/public/terrain/18/429273/176981.terrain differ diff --git a/public/terrain/18/429273/176982.terrain b/public/terrain/18/429273/176982.terrain new file mode 100644 index 000000000..d2ffb1ab7 Binary files /dev/null and b/public/terrain/18/429273/176982.terrain differ diff --git a/public/terrain/18/429273/176983.terrain b/public/terrain/18/429273/176983.terrain new file mode 100644 index 000000000..6566a463e Binary files /dev/null and b/public/terrain/18/429273/176983.terrain differ diff --git a/public/terrain/18/429273/176984.terrain b/public/terrain/18/429273/176984.terrain new file mode 100644 index 000000000..3c28e9008 Binary files /dev/null and b/public/terrain/18/429273/176984.terrain differ diff --git a/public/terrain/18/429273/176985.terrain b/public/terrain/18/429273/176985.terrain new file mode 100644 index 000000000..721347af7 Binary files /dev/null and b/public/terrain/18/429273/176985.terrain differ diff --git a/public/terrain/18/429273/176986.terrain b/public/terrain/18/429273/176986.terrain new file mode 100644 index 000000000..1d4a995d3 Binary files /dev/null and b/public/terrain/18/429273/176986.terrain differ diff --git a/public/terrain/18/429273/176987.terrain b/public/terrain/18/429273/176987.terrain new file mode 100644 index 000000000..1b13b7c00 Binary files /dev/null and b/public/terrain/18/429273/176987.terrain differ diff --git a/public/terrain/18/429273/176988.terrain b/public/terrain/18/429273/176988.terrain new file mode 100644 index 000000000..da0741fb2 Binary files /dev/null and b/public/terrain/18/429273/176988.terrain differ diff --git a/public/terrain/18/429273/176989.terrain b/public/terrain/18/429273/176989.terrain new file mode 100644 index 000000000..a32aa2ab4 Binary files /dev/null and b/public/terrain/18/429273/176989.terrain differ diff --git a/public/terrain/18/429273/176990.terrain b/public/terrain/18/429273/176990.terrain new file mode 100644 index 000000000..967518ed6 Binary files /dev/null and b/public/terrain/18/429273/176990.terrain differ diff --git a/public/terrain/18/429273/176991.terrain b/public/terrain/18/429273/176991.terrain new file mode 100644 index 000000000..58887a4dc Binary files /dev/null and b/public/terrain/18/429273/176991.terrain differ diff --git a/public/terrain/18/429273/176992.terrain b/public/terrain/18/429273/176992.terrain new file mode 100644 index 000000000..23d866ecf Binary files /dev/null and b/public/terrain/18/429273/176992.terrain differ diff --git a/public/terrain/18/429273/176993.terrain b/public/terrain/18/429273/176993.terrain new file mode 100644 index 000000000..d3e85b821 Binary files /dev/null and b/public/terrain/18/429273/176993.terrain differ diff --git a/public/terrain/18/429273/176994.terrain b/public/terrain/18/429273/176994.terrain new file mode 100644 index 000000000..dcb01e157 Binary files /dev/null and b/public/terrain/18/429273/176994.terrain differ diff --git a/public/terrain/18/429273/176995.terrain b/public/terrain/18/429273/176995.terrain new file mode 100644 index 000000000..5ce6865d8 Binary files /dev/null and b/public/terrain/18/429273/176995.terrain differ diff --git a/public/terrain/18/429273/176996.terrain b/public/terrain/18/429273/176996.terrain new file mode 100644 index 000000000..94ba682ca Binary files /dev/null and b/public/terrain/18/429273/176996.terrain differ diff --git a/public/terrain/18/429273/176997.terrain b/public/terrain/18/429273/176997.terrain new file mode 100644 index 000000000..816cfc01c Binary files /dev/null and b/public/terrain/18/429273/176997.terrain differ diff --git a/public/terrain/18/429273/176998.terrain b/public/terrain/18/429273/176998.terrain new file mode 100644 index 000000000..b716dc2bb Binary files /dev/null and b/public/terrain/18/429273/176998.terrain differ diff --git a/public/terrain/18/429273/176999.terrain b/public/terrain/18/429273/176999.terrain new file mode 100644 index 000000000..3c3cb6c35 Binary files /dev/null and b/public/terrain/18/429273/176999.terrain differ diff --git a/public/terrain/18/429273/177000.terrain b/public/terrain/18/429273/177000.terrain new file mode 100644 index 000000000..18cc6dac0 Binary files /dev/null and b/public/terrain/18/429273/177000.terrain differ diff --git a/public/terrain/18/429273/177001.terrain b/public/terrain/18/429273/177001.terrain new file mode 100644 index 000000000..48340bd75 Binary files /dev/null and b/public/terrain/18/429273/177001.terrain differ diff --git a/public/terrain/18/429273/177002.terrain b/public/terrain/18/429273/177002.terrain new file mode 100644 index 000000000..aa857f604 Binary files /dev/null and b/public/terrain/18/429273/177002.terrain differ diff --git a/public/terrain/18/429273/177003.terrain b/public/terrain/18/429273/177003.terrain new file mode 100644 index 000000000..be934b2aa Binary files /dev/null and b/public/terrain/18/429273/177003.terrain differ diff --git a/public/terrain/18/429273/177004.terrain b/public/terrain/18/429273/177004.terrain new file mode 100644 index 000000000..6c548c21c Binary files /dev/null and b/public/terrain/18/429273/177004.terrain differ diff --git a/public/terrain/18/429273/177005.terrain b/public/terrain/18/429273/177005.terrain new file mode 100644 index 000000000..517787058 Binary files /dev/null and b/public/terrain/18/429273/177005.terrain differ diff --git a/public/terrain/18/429273/177006.terrain b/public/terrain/18/429273/177006.terrain new file mode 100644 index 000000000..e71ad2c7c Binary files /dev/null and b/public/terrain/18/429273/177006.terrain differ diff --git a/public/terrain/18/429273/177007.terrain b/public/terrain/18/429273/177007.terrain new file mode 100644 index 000000000..1e831c222 Binary files /dev/null and b/public/terrain/18/429273/177007.terrain differ diff --git a/public/terrain/18/429273/177008.terrain b/public/terrain/18/429273/177008.terrain new file mode 100644 index 000000000..cc0b715e4 Binary files /dev/null and b/public/terrain/18/429273/177008.terrain differ diff --git a/public/terrain/18/429273/177009.terrain b/public/terrain/18/429273/177009.terrain new file mode 100644 index 000000000..c1bf840a9 Binary files /dev/null and b/public/terrain/18/429273/177009.terrain differ diff --git a/public/terrain/18/429273/177010.terrain b/public/terrain/18/429273/177010.terrain new file mode 100644 index 000000000..fcdda2d83 Binary files /dev/null and b/public/terrain/18/429273/177010.terrain differ diff --git a/public/terrain/18/429273/177011.terrain b/public/terrain/18/429273/177011.terrain new file mode 100644 index 000000000..b04bb4702 Binary files /dev/null and b/public/terrain/18/429273/177011.terrain differ diff --git a/public/terrain/18/429273/177012.terrain b/public/terrain/18/429273/177012.terrain new file mode 100644 index 000000000..12d67a2d7 Binary files /dev/null and b/public/terrain/18/429273/177012.terrain differ diff --git a/public/terrain/18/429273/177013.terrain b/public/terrain/18/429273/177013.terrain new file mode 100644 index 000000000..faffe9ab6 Binary files /dev/null and b/public/terrain/18/429273/177013.terrain differ diff --git a/public/terrain/18/429273/177014.terrain b/public/terrain/18/429273/177014.terrain new file mode 100644 index 000000000..5f87627e4 Binary files /dev/null and b/public/terrain/18/429273/177014.terrain differ diff --git a/public/terrain/18/429273/177015.terrain b/public/terrain/18/429273/177015.terrain new file mode 100644 index 000000000..f2ff85170 Binary files /dev/null and b/public/terrain/18/429273/177015.terrain differ diff --git a/public/terrain/18/429273/177016.terrain b/public/terrain/18/429273/177016.terrain new file mode 100644 index 000000000..77ffe3b7f Binary files /dev/null and b/public/terrain/18/429273/177016.terrain differ diff --git a/public/terrain/18/429273/177017.terrain b/public/terrain/18/429273/177017.terrain new file mode 100644 index 000000000..5f9b0d8dc Binary files /dev/null and b/public/terrain/18/429273/177017.terrain differ diff --git a/public/terrain/18/429273/177018.terrain b/public/terrain/18/429273/177018.terrain new file mode 100644 index 000000000..ddd88163e Binary files /dev/null and b/public/terrain/18/429273/177018.terrain differ diff --git a/public/terrain/18/429273/177019.terrain b/public/terrain/18/429273/177019.terrain new file mode 100644 index 000000000..5429156b6 Binary files /dev/null and b/public/terrain/18/429273/177019.terrain differ diff --git a/public/terrain/18/429273/177020.terrain b/public/terrain/18/429273/177020.terrain new file mode 100644 index 000000000..19634e3c8 Binary files /dev/null and b/public/terrain/18/429273/177020.terrain differ diff --git a/public/terrain/18/429273/177021.terrain b/public/terrain/18/429273/177021.terrain new file mode 100644 index 000000000..b08d99ad7 Binary files /dev/null and b/public/terrain/18/429273/177021.terrain differ diff --git a/public/terrain/18/429273/177022.terrain b/public/terrain/18/429273/177022.terrain new file mode 100644 index 000000000..dfdbfbdfc Binary files /dev/null and b/public/terrain/18/429273/177022.terrain differ diff --git a/public/terrain/18/429273/177023.terrain b/public/terrain/18/429273/177023.terrain new file mode 100644 index 000000000..664157a4e Binary files /dev/null and b/public/terrain/18/429273/177023.terrain differ diff --git a/public/terrain/18/429273/177024.terrain b/public/terrain/18/429273/177024.terrain new file mode 100644 index 000000000..49ddcf649 Binary files /dev/null and b/public/terrain/18/429273/177024.terrain differ diff --git a/public/terrain/18/429273/177025.terrain b/public/terrain/18/429273/177025.terrain new file mode 100644 index 000000000..369a0a671 Binary files /dev/null and b/public/terrain/18/429273/177025.terrain differ diff --git a/public/terrain/18/429273/177026.terrain b/public/terrain/18/429273/177026.terrain new file mode 100644 index 000000000..1b5c21873 Binary files /dev/null and b/public/terrain/18/429273/177026.terrain differ diff --git a/public/terrain/18/429273/177027.terrain b/public/terrain/18/429273/177027.terrain new file mode 100644 index 000000000..f04d9cc47 Binary files /dev/null and b/public/terrain/18/429273/177027.terrain differ diff --git a/public/terrain/18/429273/177028.terrain b/public/terrain/18/429273/177028.terrain new file mode 100644 index 000000000..bb72e5fdd Binary files /dev/null and b/public/terrain/18/429273/177028.terrain differ diff --git a/public/terrain/18/429273/177029.terrain b/public/terrain/18/429273/177029.terrain new file mode 100644 index 000000000..cc3bcb5f6 Binary files /dev/null and b/public/terrain/18/429273/177029.terrain differ diff --git a/public/terrain/18/429274/176871.terrain b/public/terrain/18/429274/176871.terrain new file mode 100644 index 000000000..c2548af13 Binary files /dev/null and b/public/terrain/18/429274/176871.terrain differ diff --git a/public/terrain/18/429274/176872.terrain b/public/terrain/18/429274/176872.terrain new file mode 100644 index 000000000..dad686d61 Binary files /dev/null and b/public/terrain/18/429274/176872.terrain differ diff --git a/public/terrain/18/429274/176873.terrain b/public/terrain/18/429274/176873.terrain new file mode 100644 index 000000000..965fac351 Binary files /dev/null and b/public/terrain/18/429274/176873.terrain differ diff --git a/public/terrain/18/429274/176874.terrain b/public/terrain/18/429274/176874.terrain new file mode 100644 index 000000000..e12c3b2b8 Binary files /dev/null and b/public/terrain/18/429274/176874.terrain differ diff --git a/public/terrain/18/429274/176875.terrain b/public/terrain/18/429274/176875.terrain new file mode 100644 index 000000000..3941224dd Binary files /dev/null and b/public/terrain/18/429274/176875.terrain differ diff --git a/public/terrain/18/429274/176876.terrain b/public/terrain/18/429274/176876.terrain new file mode 100644 index 000000000..695140850 Binary files /dev/null and b/public/terrain/18/429274/176876.terrain differ diff --git a/public/terrain/18/429274/176877.terrain b/public/terrain/18/429274/176877.terrain new file mode 100644 index 000000000..e3d22a18f Binary files /dev/null and b/public/terrain/18/429274/176877.terrain differ diff --git a/public/terrain/18/429274/176878.terrain b/public/terrain/18/429274/176878.terrain new file mode 100644 index 000000000..264269094 Binary files /dev/null and b/public/terrain/18/429274/176878.terrain differ diff --git a/public/terrain/18/429274/176879.terrain b/public/terrain/18/429274/176879.terrain new file mode 100644 index 000000000..01809e96b Binary files /dev/null and b/public/terrain/18/429274/176879.terrain differ diff --git a/public/terrain/18/429274/176880.terrain b/public/terrain/18/429274/176880.terrain new file mode 100644 index 000000000..5e7336ac7 Binary files /dev/null and b/public/terrain/18/429274/176880.terrain differ diff --git a/public/terrain/18/429274/176881.terrain b/public/terrain/18/429274/176881.terrain new file mode 100644 index 000000000..90ea8eb88 Binary files /dev/null and b/public/terrain/18/429274/176881.terrain differ diff --git a/public/terrain/18/429274/176882.terrain b/public/terrain/18/429274/176882.terrain new file mode 100644 index 000000000..0fc8f7070 Binary files /dev/null and b/public/terrain/18/429274/176882.terrain differ diff --git a/public/terrain/18/429274/176883.terrain b/public/terrain/18/429274/176883.terrain new file mode 100644 index 000000000..84c210f7e Binary files /dev/null and b/public/terrain/18/429274/176883.terrain differ diff --git a/public/terrain/18/429274/176884.terrain b/public/terrain/18/429274/176884.terrain new file mode 100644 index 000000000..156eb39bc Binary files /dev/null and b/public/terrain/18/429274/176884.terrain differ diff --git a/public/terrain/18/429274/176885.terrain b/public/terrain/18/429274/176885.terrain new file mode 100644 index 000000000..4f6463567 Binary files /dev/null and b/public/terrain/18/429274/176885.terrain differ diff --git a/public/terrain/18/429274/176886.terrain b/public/terrain/18/429274/176886.terrain new file mode 100644 index 000000000..b7da3f921 Binary files /dev/null and b/public/terrain/18/429274/176886.terrain differ diff --git a/public/terrain/18/429274/176887.terrain b/public/terrain/18/429274/176887.terrain new file mode 100644 index 000000000..0cd23403c Binary files /dev/null and b/public/terrain/18/429274/176887.terrain differ diff --git a/public/terrain/18/429274/176888.terrain b/public/terrain/18/429274/176888.terrain new file mode 100644 index 000000000..40ceff30c Binary files /dev/null and b/public/terrain/18/429274/176888.terrain differ diff --git a/public/terrain/18/429274/176889.terrain b/public/terrain/18/429274/176889.terrain new file mode 100644 index 000000000..37fb41ba5 Binary files /dev/null and b/public/terrain/18/429274/176889.terrain differ diff --git a/public/terrain/18/429274/176890.terrain b/public/terrain/18/429274/176890.terrain new file mode 100644 index 000000000..f4bebab2d Binary files /dev/null and b/public/terrain/18/429274/176890.terrain differ diff --git a/public/terrain/18/429274/176891.terrain b/public/terrain/18/429274/176891.terrain new file mode 100644 index 000000000..33f865c33 Binary files /dev/null and b/public/terrain/18/429274/176891.terrain differ diff --git a/public/terrain/18/429274/176892.terrain b/public/terrain/18/429274/176892.terrain new file mode 100644 index 000000000..72b1c799f Binary files /dev/null and b/public/terrain/18/429274/176892.terrain differ diff --git a/public/terrain/18/429274/176893.terrain b/public/terrain/18/429274/176893.terrain new file mode 100644 index 000000000..6ea57bddb Binary files /dev/null and b/public/terrain/18/429274/176893.terrain differ diff --git a/public/terrain/18/429274/176894.terrain b/public/terrain/18/429274/176894.terrain new file mode 100644 index 000000000..0afad82c2 Binary files /dev/null and b/public/terrain/18/429274/176894.terrain differ diff --git a/public/terrain/18/429274/176895.terrain b/public/terrain/18/429274/176895.terrain new file mode 100644 index 000000000..5fd627507 Binary files /dev/null and b/public/terrain/18/429274/176895.terrain differ diff --git a/public/terrain/18/429274/176896.terrain b/public/terrain/18/429274/176896.terrain new file mode 100644 index 000000000..a182b52b1 Binary files /dev/null and b/public/terrain/18/429274/176896.terrain differ diff --git a/public/terrain/18/429274/176897.terrain b/public/terrain/18/429274/176897.terrain new file mode 100644 index 000000000..e150764c6 Binary files /dev/null and b/public/terrain/18/429274/176897.terrain differ diff --git a/public/terrain/18/429274/176898.terrain b/public/terrain/18/429274/176898.terrain new file mode 100644 index 000000000..72b9593ca Binary files /dev/null and b/public/terrain/18/429274/176898.terrain differ diff --git a/public/terrain/18/429274/176899.terrain b/public/terrain/18/429274/176899.terrain new file mode 100644 index 000000000..8a8870b89 Binary files /dev/null and b/public/terrain/18/429274/176899.terrain differ diff --git a/public/terrain/18/429274/176900.terrain b/public/terrain/18/429274/176900.terrain new file mode 100644 index 000000000..1053c732b Binary files /dev/null and b/public/terrain/18/429274/176900.terrain differ diff --git a/public/terrain/18/429274/176901.terrain b/public/terrain/18/429274/176901.terrain new file mode 100644 index 000000000..90f97becf Binary files /dev/null and b/public/terrain/18/429274/176901.terrain differ diff --git a/public/terrain/18/429274/176902.terrain b/public/terrain/18/429274/176902.terrain new file mode 100644 index 000000000..41483cb17 Binary files /dev/null and b/public/terrain/18/429274/176902.terrain differ diff --git a/public/terrain/18/429274/176903.terrain b/public/terrain/18/429274/176903.terrain new file mode 100644 index 000000000..5887fed80 Binary files /dev/null and b/public/terrain/18/429274/176903.terrain differ diff --git a/public/terrain/18/429274/176904.terrain b/public/terrain/18/429274/176904.terrain new file mode 100644 index 000000000..b4b24624f Binary files /dev/null and b/public/terrain/18/429274/176904.terrain differ diff --git a/public/terrain/18/429274/176905.terrain b/public/terrain/18/429274/176905.terrain new file mode 100644 index 000000000..5af21397c Binary files /dev/null and b/public/terrain/18/429274/176905.terrain differ diff --git a/public/terrain/18/429274/176906.terrain b/public/terrain/18/429274/176906.terrain new file mode 100644 index 000000000..a54642cda Binary files /dev/null and b/public/terrain/18/429274/176906.terrain differ diff --git a/public/terrain/18/429274/176907.terrain b/public/terrain/18/429274/176907.terrain new file mode 100644 index 000000000..2f7c9e8ea Binary files /dev/null and b/public/terrain/18/429274/176907.terrain differ diff --git a/public/terrain/18/429274/176908.terrain b/public/terrain/18/429274/176908.terrain new file mode 100644 index 000000000..db3202278 Binary files /dev/null and b/public/terrain/18/429274/176908.terrain differ diff --git a/public/terrain/18/429274/176909.terrain b/public/terrain/18/429274/176909.terrain new file mode 100644 index 000000000..2388b3e1d Binary files /dev/null and b/public/terrain/18/429274/176909.terrain differ diff --git a/public/terrain/18/429274/176910.terrain b/public/terrain/18/429274/176910.terrain new file mode 100644 index 000000000..39734a504 Binary files /dev/null and b/public/terrain/18/429274/176910.terrain differ diff --git a/public/terrain/18/429274/176911.terrain b/public/terrain/18/429274/176911.terrain new file mode 100644 index 000000000..73b2a4bab Binary files /dev/null and b/public/terrain/18/429274/176911.terrain differ diff --git a/public/terrain/18/429274/176912.terrain b/public/terrain/18/429274/176912.terrain new file mode 100644 index 000000000..22d2fbcec Binary files /dev/null and b/public/terrain/18/429274/176912.terrain differ diff --git a/public/terrain/18/429274/176913.terrain b/public/terrain/18/429274/176913.terrain new file mode 100644 index 000000000..76e7593d8 Binary files /dev/null and b/public/terrain/18/429274/176913.terrain differ diff --git a/public/terrain/18/429274/176914.terrain b/public/terrain/18/429274/176914.terrain new file mode 100644 index 000000000..1691ce65d Binary files /dev/null and b/public/terrain/18/429274/176914.terrain differ diff --git a/public/terrain/18/429274/176915.terrain b/public/terrain/18/429274/176915.terrain new file mode 100644 index 000000000..7f33bf889 Binary files /dev/null and b/public/terrain/18/429274/176915.terrain differ diff --git a/public/terrain/18/429274/176916.terrain b/public/terrain/18/429274/176916.terrain new file mode 100644 index 000000000..080135326 Binary files /dev/null and b/public/terrain/18/429274/176916.terrain differ diff --git a/public/terrain/18/429274/176917.terrain b/public/terrain/18/429274/176917.terrain new file mode 100644 index 000000000..b19511e0b Binary files /dev/null and b/public/terrain/18/429274/176917.terrain differ diff --git a/public/terrain/18/429274/176918.terrain b/public/terrain/18/429274/176918.terrain new file mode 100644 index 000000000..983431ee7 Binary files /dev/null and b/public/terrain/18/429274/176918.terrain differ diff --git a/public/terrain/18/429274/176919.terrain b/public/terrain/18/429274/176919.terrain new file mode 100644 index 000000000..5fe7f8f2d Binary files /dev/null and b/public/terrain/18/429274/176919.terrain differ diff --git a/public/terrain/18/429274/176920.terrain b/public/terrain/18/429274/176920.terrain new file mode 100644 index 000000000..21e446461 Binary files /dev/null and b/public/terrain/18/429274/176920.terrain differ diff --git a/public/terrain/18/429274/176921.terrain b/public/terrain/18/429274/176921.terrain new file mode 100644 index 000000000..f916ee9aa Binary files /dev/null and b/public/terrain/18/429274/176921.terrain differ diff --git a/public/terrain/18/429274/176922.terrain b/public/terrain/18/429274/176922.terrain new file mode 100644 index 000000000..72ba19d57 Binary files /dev/null and b/public/terrain/18/429274/176922.terrain differ diff --git a/public/terrain/18/429274/176923.terrain b/public/terrain/18/429274/176923.terrain new file mode 100644 index 000000000..1eae6815c Binary files /dev/null and b/public/terrain/18/429274/176923.terrain differ diff --git a/public/terrain/18/429274/176924.terrain b/public/terrain/18/429274/176924.terrain new file mode 100644 index 000000000..c1ac1760d Binary files /dev/null and b/public/terrain/18/429274/176924.terrain differ diff --git a/public/terrain/18/429274/176925.terrain b/public/terrain/18/429274/176925.terrain new file mode 100644 index 000000000..11cd5faee Binary files /dev/null and b/public/terrain/18/429274/176925.terrain differ diff --git a/public/terrain/18/429274/176926.terrain b/public/terrain/18/429274/176926.terrain new file mode 100644 index 000000000..9d6e9c649 Binary files /dev/null and b/public/terrain/18/429274/176926.terrain differ diff --git a/public/terrain/18/429274/176927.terrain b/public/terrain/18/429274/176927.terrain new file mode 100644 index 000000000..d7aebbba6 Binary files /dev/null and b/public/terrain/18/429274/176927.terrain differ diff --git a/public/terrain/18/429274/176928.terrain b/public/terrain/18/429274/176928.terrain new file mode 100644 index 000000000..e9c2678b1 Binary files /dev/null and b/public/terrain/18/429274/176928.terrain differ diff --git a/public/terrain/18/429274/176929.terrain b/public/terrain/18/429274/176929.terrain new file mode 100644 index 000000000..f9db3b7e2 Binary files /dev/null and b/public/terrain/18/429274/176929.terrain differ diff --git a/public/terrain/18/429274/176930.terrain b/public/terrain/18/429274/176930.terrain new file mode 100644 index 000000000..d6792228c Binary files /dev/null and b/public/terrain/18/429274/176930.terrain differ diff --git a/public/terrain/18/429274/176931.terrain b/public/terrain/18/429274/176931.terrain new file mode 100644 index 000000000..576c6ffde Binary files /dev/null and b/public/terrain/18/429274/176931.terrain differ diff --git a/public/terrain/18/429274/176932.terrain b/public/terrain/18/429274/176932.terrain new file mode 100644 index 000000000..5b00e5752 Binary files /dev/null and b/public/terrain/18/429274/176932.terrain differ diff --git a/public/terrain/18/429274/176933.terrain b/public/terrain/18/429274/176933.terrain new file mode 100644 index 000000000..c360d3acd Binary files /dev/null and b/public/terrain/18/429274/176933.terrain differ diff --git a/public/terrain/18/429274/176934.terrain b/public/terrain/18/429274/176934.terrain new file mode 100644 index 000000000..5368b25d6 Binary files /dev/null and b/public/terrain/18/429274/176934.terrain differ diff --git a/public/terrain/18/429274/176935.terrain b/public/terrain/18/429274/176935.terrain new file mode 100644 index 000000000..1a8567fd6 Binary files /dev/null and b/public/terrain/18/429274/176935.terrain differ diff --git a/public/terrain/18/429274/176936.terrain b/public/terrain/18/429274/176936.terrain new file mode 100644 index 000000000..773efc603 Binary files /dev/null and b/public/terrain/18/429274/176936.terrain differ diff --git a/public/terrain/18/429274/176937.terrain b/public/terrain/18/429274/176937.terrain new file mode 100644 index 000000000..0bc9a3eb1 Binary files /dev/null and b/public/terrain/18/429274/176937.terrain differ diff --git a/public/terrain/18/429274/176938.terrain b/public/terrain/18/429274/176938.terrain new file mode 100644 index 000000000..18210cf34 Binary files /dev/null and b/public/terrain/18/429274/176938.terrain differ diff --git a/public/terrain/18/429274/176939.terrain b/public/terrain/18/429274/176939.terrain new file mode 100644 index 000000000..1e2a4851e Binary files /dev/null and b/public/terrain/18/429274/176939.terrain differ diff --git a/public/terrain/18/429274/176940.terrain b/public/terrain/18/429274/176940.terrain new file mode 100644 index 000000000..6ca9d4bd1 Binary files /dev/null and b/public/terrain/18/429274/176940.terrain differ diff --git a/public/terrain/18/429274/176941.terrain b/public/terrain/18/429274/176941.terrain new file mode 100644 index 000000000..c18cf4c97 Binary files /dev/null and b/public/terrain/18/429274/176941.terrain differ diff --git a/public/terrain/18/429274/176942.terrain b/public/terrain/18/429274/176942.terrain new file mode 100644 index 000000000..256426ea5 Binary files /dev/null and b/public/terrain/18/429274/176942.terrain differ diff --git a/public/terrain/18/429274/176943.terrain b/public/terrain/18/429274/176943.terrain new file mode 100644 index 000000000..86cd1bce5 Binary files /dev/null and b/public/terrain/18/429274/176943.terrain differ diff --git a/public/terrain/18/429274/176944.terrain b/public/terrain/18/429274/176944.terrain new file mode 100644 index 000000000..ab522739a Binary files /dev/null and b/public/terrain/18/429274/176944.terrain differ diff --git a/public/terrain/18/429274/176945.terrain b/public/terrain/18/429274/176945.terrain new file mode 100644 index 000000000..6ab370d02 Binary files /dev/null and b/public/terrain/18/429274/176945.terrain differ diff --git a/public/terrain/18/429274/176946.terrain b/public/terrain/18/429274/176946.terrain new file mode 100644 index 000000000..e701121b2 Binary files /dev/null and b/public/terrain/18/429274/176946.terrain differ diff --git a/public/terrain/18/429274/176947.terrain b/public/terrain/18/429274/176947.terrain new file mode 100644 index 000000000..203c76466 Binary files /dev/null and b/public/terrain/18/429274/176947.terrain differ diff --git a/public/terrain/18/429274/176948.terrain b/public/terrain/18/429274/176948.terrain new file mode 100644 index 000000000..8577991f5 Binary files /dev/null and b/public/terrain/18/429274/176948.terrain differ diff --git a/public/terrain/18/429274/176949.terrain b/public/terrain/18/429274/176949.terrain new file mode 100644 index 000000000..06b742664 Binary files /dev/null and b/public/terrain/18/429274/176949.terrain differ diff --git a/public/terrain/18/429274/176950.terrain b/public/terrain/18/429274/176950.terrain new file mode 100644 index 000000000..c70169258 Binary files /dev/null and b/public/terrain/18/429274/176950.terrain differ diff --git a/public/terrain/18/429274/176951.terrain b/public/terrain/18/429274/176951.terrain new file mode 100644 index 000000000..1bed6cf23 Binary files /dev/null and b/public/terrain/18/429274/176951.terrain differ diff --git a/public/terrain/18/429274/176952.terrain b/public/terrain/18/429274/176952.terrain new file mode 100644 index 000000000..5db42ce5c Binary files /dev/null and b/public/terrain/18/429274/176952.terrain differ diff --git a/public/terrain/18/429274/176953.terrain b/public/terrain/18/429274/176953.terrain new file mode 100644 index 000000000..4bf8456c4 Binary files /dev/null and b/public/terrain/18/429274/176953.terrain differ diff --git a/public/terrain/18/429274/176954.terrain b/public/terrain/18/429274/176954.terrain new file mode 100644 index 000000000..6b11e803b Binary files /dev/null and b/public/terrain/18/429274/176954.terrain differ diff --git a/public/terrain/18/429274/176955.terrain b/public/terrain/18/429274/176955.terrain new file mode 100644 index 000000000..5cafa43fd Binary files /dev/null and b/public/terrain/18/429274/176955.terrain differ diff --git a/public/terrain/18/429274/176956.terrain b/public/terrain/18/429274/176956.terrain new file mode 100644 index 000000000..b8c99e655 Binary files /dev/null and b/public/terrain/18/429274/176956.terrain differ diff --git a/public/terrain/18/429274/176957.terrain b/public/terrain/18/429274/176957.terrain new file mode 100644 index 000000000..df0692e12 Binary files /dev/null and b/public/terrain/18/429274/176957.terrain differ diff --git a/public/terrain/18/429274/176958.terrain b/public/terrain/18/429274/176958.terrain new file mode 100644 index 000000000..094ba0e32 Binary files /dev/null and b/public/terrain/18/429274/176958.terrain differ diff --git a/public/terrain/18/429274/176959.terrain b/public/terrain/18/429274/176959.terrain new file mode 100644 index 000000000..ad1a922e8 Binary files /dev/null and b/public/terrain/18/429274/176959.terrain differ diff --git a/public/terrain/18/429274/176960.terrain b/public/terrain/18/429274/176960.terrain new file mode 100644 index 000000000..13be372d5 Binary files /dev/null and b/public/terrain/18/429274/176960.terrain differ diff --git a/public/terrain/18/429274/176961.terrain b/public/terrain/18/429274/176961.terrain new file mode 100644 index 000000000..d5afdb63a Binary files /dev/null and b/public/terrain/18/429274/176961.terrain differ diff --git a/public/terrain/18/429274/176962.terrain b/public/terrain/18/429274/176962.terrain new file mode 100644 index 000000000..49876c4e6 Binary files /dev/null and b/public/terrain/18/429274/176962.terrain differ diff --git a/public/terrain/18/429274/176963.terrain b/public/terrain/18/429274/176963.terrain new file mode 100644 index 000000000..8839e35ce Binary files /dev/null and b/public/terrain/18/429274/176963.terrain differ diff --git a/public/terrain/18/429274/176964.terrain b/public/terrain/18/429274/176964.terrain new file mode 100644 index 000000000..59dbfc7f1 Binary files /dev/null and b/public/terrain/18/429274/176964.terrain differ diff --git a/public/terrain/18/429274/176965.terrain b/public/terrain/18/429274/176965.terrain new file mode 100644 index 000000000..eb53a5b53 Binary files /dev/null and b/public/terrain/18/429274/176965.terrain differ diff --git a/public/terrain/18/429274/176966.terrain b/public/terrain/18/429274/176966.terrain new file mode 100644 index 000000000..85d409094 Binary files /dev/null and b/public/terrain/18/429274/176966.terrain differ diff --git a/public/terrain/18/429274/176967.terrain b/public/terrain/18/429274/176967.terrain new file mode 100644 index 000000000..66b21d981 Binary files /dev/null and b/public/terrain/18/429274/176967.terrain differ diff --git a/public/terrain/18/429274/176968.terrain b/public/terrain/18/429274/176968.terrain new file mode 100644 index 000000000..ae6e1d2f0 Binary files /dev/null and b/public/terrain/18/429274/176968.terrain differ diff --git a/public/terrain/18/429274/176969.terrain b/public/terrain/18/429274/176969.terrain new file mode 100644 index 000000000..b30b954e7 Binary files /dev/null and b/public/terrain/18/429274/176969.terrain differ diff --git a/public/terrain/18/429274/176970.terrain b/public/terrain/18/429274/176970.terrain new file mode 100644 index 000000000..394d543a0 Binary files /dev/null and b/public/terrain/18/429274/176970.terrain differ diff --git a/public/terrain/18/429274/176971.terrain b/public/terrain/18/429274/176971.terrain new file mode 100644 index 000000000..e2e562780 Binary files /dev/null and b/public/terrain/18/429274/176971.terrain differ diff --git a/public/terrain/18/429274/176972.terrain b/public/terrain/18/429274/176972.terrain new file mode 100644 index 000000000..8fc61a44f Binary files /dev/null and b/public/terrain/18/429274/176972.terrain differ diff --git a/public/terrain/18/429274/176973.terrain b/public/terrain/18/429274/176973.terrain new file mode 100644 index 000000000..81518db49 Binary files /dev/null and b/public/terrain/18/429274/176973.terrain differ diff --git a/public/terrain/18/429274/176974.terrain b/public/terrain/18/429274/176974.terrain new file mode 100644 index 000000000..ea9a8e0a9 Binary files /dev/null and b/public/terrain/18/429274/176974.terrain differ diff --git a/public/terrain/18/429274/176975.terrain b/public/terrain/18/429274/176975.terrain new file mode 100644 index 000000000..59abf452a Binary files /dev/null and b/public/terrain/18/429274/176975.terrain differ diff --git a/public/terrain/18/429274/176976.terrain b/public/terrain/18/429274/176976.terrain new file mode 100644 index 000000000..da290c2bd Binary files /dev/null and b/public/terrain/18/429274/176976.terrain differ diff --git a/public/terrain/18/429274/176977.terrain b/public/terrain/18/429274/176977.terrain new file mode 100644 index 000000000..c1dc2dba5 Binary files /dev/null and b/public/terrain/18/429274/176977.terrain differ diff --git a/public/terrain/18/429274/176978.terrain b/public/terrain/18/429274/176978.terrain new file mode 100644 index 000000000..13618f7de Binary files /dev/null and b/public/terrain/18/429274/176978.terrain differ diff --git a/public/terrain/18/429274/176979.terrain b/public/terrain/18/429274/176979.terrain new file mode 100644 index 000000000..ada1db526 Binary files /dev/null and b/public/terrain/18/429274/176979.terrain differ diff --git a/public/terrain/18/429274/176980.terrain b/public/terrain/18/429274/176980.terrain new file mode 100644 index 000000000..f48a64f78 Binary files /dev/null and b/public/terrain/18/429274/176980.terrain differ diff --git a/public/terrain/18/429274/176981.terrain b/public/terrain/18/429274/176981.terrain new file mode 100644 index 000000000..d6d349ff1 Binary files /dev/null and b/public/terrain/18/429274/176981.terrain differ diff --git a/public/terrain/18/429274/176982.terrain b/public/terrain/18/429274/176982.terrain new file mode 100644 index 000000000..1eb3b80db Binary files /dev/null and b/public/terrain/18/429274/176982.terrain differ diff --git a/public/terrain/18/429274/176983.terrain b/public/terrain/18/429274/176983.terrain new file mode 100644 index 000000000..eab1f3c8c Binary files /dev/null and b/public/terrain/18/429274/176983.terrain differ diff --git a/public/terrain/18/429274/176984.terrain b/public/terrain/18/429274/176984.terrain new file mode 100644 index 000000000..6c86b5d54 Binary files /dev/null and b/public/terrain/18/429274/176984.terrain differ diff --git a/public/terrain/18/429274/176985.terrain b/public/terrain/18/429274/176985.terrain new file mode 100644 index 000000000..03136341a Binary files /dev/null and b/public/terrain/18/429274/176985.terrain differ diff --git a/public/terrain/18/429274/176986.terrain b/public/terrain/18/429274/176986.terrain new file mode 100644 index 000000000..bf5bf3c09 Binary files /dev/null and b/public/terrain/18/429274/176986.terrain differ diff --git a/public/terrain/18/429274/176987.terrain b/public/terrain/18/429274/176987.terrain new file mode 100644 index 000000000..d842f5c12 Binary files /dev/null and b/public/terrain/18/429274/176987.terrain differ diff --git a/public/terrain/18/429274/176988.terrain b/public/terrain/18/429274/176988.terrain new file mode 100644 index 000000000..2cc43806f Binary files /dev/null and b/public/terrain/18/429274/176988.terrain differ diff --git a/public/terrain/18/429274/176989.terrain b/public/terrain/18/429274/176989.terrain new file mode 100644 index 000000000..83f0a953d Binary files /dev/null and b/public/terrain/18/429274/176989.terrain differ diff --git a/public/terrain/18/429274/176990.terrain b/public/terrain/18/429274/176990.terrain new file mode 100644 index 000000000..3241466e3 Binary files /dev/null and b/public/terrain/18/429274/176990.terrain differ diff --git a/public/terrain/18/429274/176991.terrain b/public/terrain/18/429274/176991.terrain new file mode 100644 index 000000000..b17bb8920 Binary files /dev/null and b/public/terrain/18/429274/176991.terrain differ diff --git a/public/terrain/18/429274/176992.terrain b/public/terrain/18/429274/176992.terrain new file mode 100644 index 000000000..db2c0cdf4 Binary files /dev/null and b/public/terrain/18/429274/176992.terrain differ diff --git a/public/terrain/18/429274/176993.terrain b/public/terrain/18/429274/176993.terrain new file mode 100644 index 000000000..6e66fe92e Binary files /dev/null and b/public/terrain/18/429274/176993.terrain differ diff --git a/public/terrain/18/429274/176994.terrain b/public/terrain/18/429274/176994.terrain new file mode 100644 index 000000000..fdd353ba6 Binary files /dev/null and b/public/terrain/18/429274/176994.terrain differ diff --git a/public/terrain/18/429274/176995.terrain b/public/terrain/18/429274/176995.terrain new file mode 100644 index 000000000..3aad2012a Binary files /dev/null and b/public/terrain/18/429274/176995.terrain differ diff --git a/public/terrain/18/429274/176996.terrain b/public/terrain/18/429274/176996.terrain new file mode 100644 index 000000000..53279ae26 Binary files /dev/null and b/public/terrain/18/429274/176996.terrain differ diff --git a/public/terrain/18/429274/176997.terrain b/public/terrain/18/429274/176997.terrain new file mode 100644 index 000000000..174ed28cc Binary files /dev/null and b/public/terrain/18/429274/176997.terrain differ diff --git a/public/terrain/18/429274/176998.terrain b/public/terrain/18/429274/176998.terrain new file mode 100644 index 000000000..e0b89dd48 Binary files /dev/null and b/public/terrain/18/429274/176998.terrain differ diff --git a/public/terrain/18/429274/176999.terrain b/public/terrain/18/429274/176999.terrain new file mode 100644 index 000000000..60cbe572a Binary files /dev/null and b/public/terrain/18/429274/176999.terrain differ diff --git a/public/terrain/18/429274/177000.terrain b/public/terrain/18/429274/177000.terrain new file mode 100644 index 000000000..976509097 Binary files /dev/null and b/public/terrain/18/429274/177000.terrain differ diff --git a/public/terrain/18/429274/177001.terrain b/public/terrain/18/429274/177001.terrain new file mode 100644 index 000000000..aec4a2313 Binary files /dev/null and b/public/terrain/18/429274/177001.terrain differ diff --git a/public/terrain/18/429274/177002.terrain b/public/terrain/18/429274/177002.terrain new file mode 100644 index 000000000..1ec89d194 Binary files /dev/null and b/public/terrain/18/429274/177002.terrain differ diff --git a/public/terrain/18/429274/177003.terrain b/public/terrain/18/429274/177003.terrain new file mode 100644 index 000000000..da6434970 Binary files /dev/null and b/public/terrain/18/429274/177003.terrain differ diff --git a/public/terrain/18/429274/177004.terrain b/public/terrain/18/429274/177004.terrain new file mode 100644 index 000000000..1dfcc4e82 Binary files /dev/null and b/public/terrain/18/429274/177004.terrain differ diff --git a/public/terrain/18/429274/177005.terrain b/public/terrain/18/429274/177005.terrain new file mode 100644 index 000000000..f72437b25 Binary files /dev/null and b/public/terrain/18/429274/177005.terrain differ diff --git a/public/terrain/18/429274/177006.terrain b/public/terrain/18/429274/177006.terrain new file mode 100644 index 000000000..1346355eb Binary files /dev/null and b/public/terrain/18/429274/177006.terrain differ diff --git a/public/terrain/18/429274/177007.terrain b/public/terrain/18/429274/177007.terrain new file mode 100644 index 000000000..ee3655ad1 Binary files /dev/null and b/public/terrain/18/429274/177007.terrain differ diff --git a/public/terrain/18/429274/177008.terrain b/public/terrain/18/429274/177008.terrain new file mode 100644 index 000000000..3e21d5277 Binary files /dev/null and b/public/terrain/18/429274/177008.terrain differ diff --git a/public/terrain/18/429274/177009.terrain b/public/terrain/18/429274/177009.terrain new file mode 100644 index 000000000..dd8619cbf Binary files /dev/null and b/public/terrain/18/429274/177009.terrain differ diff --git a/public/terrain/18/429274/177010.terrain b/public/terrain/18/429274/177010.terrain new file mode 100644 index 000000000..b872a4273 Binary files /dev/null and b/public/terrain/18/429274/177010.terrain differ diff --git a/public/terrain/18/429274/177011.terrain b/public/terrain/18/429274/177011.terrain new file mode 100644 index 000000000..00ebeb22c Binary files /dev/null and b/public/terrain/18/429274/177011.terrain differ diff --git a/public/terrain/18/429274/177012.terrain b/public/terrain/18/429274/177012.terrain new file mode 100644 index 000000000..0ab06c94e Binary files /dev/null and b/public/terrain/18/429274/177012.terrain differ diff --git a/public/terrain/18/429274/177013.terrain b/public/terrain/18/429274/177013.terrain new file mode 100644 index 000000000..5e9ca0187 Binary files /dev/null and b/public/terrain/18/429274/177013.terrain differ diff --git a/public/terrain/18/429274/177014.terrain b/public/terrain/18/429274/177014.terrain new file mode 100644 index 000000000..15c49c97e Binary files /dev/null and b/public/terrain/18/429274/177014.terrain differ diff --git a/public/terrain/18/429274/177015.terrain b/public/terrain/18/429274/177015.terrain new file mode 100644 index 000000000..733014bb2 Binary files /dev/null and b/public/terrain/18/429274/177015.terrain differ diff --git a/public/terrain/18/429274/177016.terrain b/public/terrain/18/429274/177016.terrain new file mode 100644 index 000000000..381b2ff22 Binary files /dev/null and b/public/terrain/18/429274/177016.terrain differ diff --git a/public/terrain/18/429274/177017.terrain b/public/terrain/18/429274/177017.terrain new file mode 100644 index 000000000..3c587a66b Binary files /dev/null and b/public/terrain/18/429274/177017.terrain differ diff --git a/public/terrain/18/429274/177018.terrain b/public/terrain/18/429274/177018.terrain new file mode 100644 index 000000000..b0fc2626f Binary files /dev/null and b/public/terrain/18/429274/177018.terrain differ diff --git a/public/terrain/18/429274/177019.terrain b/public/terrain/18/429274/177019.terrain new file mode 100644 index 000000000..6cd084d67 Binary files /dev/null and b/public/terrain/18/429274/177019.terrain differ diff --git a/public/terrain/18/429274/177020.terrain b/public/terrain/18/429274/177020.terrain new file mode 100644 index 000000000..2b71cee41 Binary files /dev/null and b/public/terrain/18/429274/177020.terrain differ diff --git a/public/terrain/18/429274/177021.terrain b/public/terrain/18/429274/177021.terrain new file mode 100644 index 000000000..5d4373ebd Binary files /dev/null and b/public/terrain/18/429274/177021.terrain differ diff --git a/public/terrain/18/429274/177022.terrain b/public/terrain/18/429274/177022.terrain new file mode 100644 index 000000000..4f1e429a4 Binary files /dev/null and b/public/terrain/18/429274/177022.terrain differ diff --git a/public/terrain/18/429274/177023.terrain b/public/terrain/18/429274/177023.terrain new file mode 100644 index 000000000..bd98a2ae5 Binary files /dev/null and b/public/terrain/18/429274/177023.terrain differ diff --git a/public/terrain/18/429274/177024.terrain b/public/terrain/18/429274/177024.terrain new file mode 100644 index 000000000..97102f230 Binary files /dev/null and b/public/terrain/18/429274/177024.terrain differ diff --git a/public/terrain/18/429274/177025.terrain b/public/terrain/18/429274/177025.terrain new file mode 100644 index 000000000..0cb579c4e Binary files /dev/null and b/public/terrain/18/429274/177025.terrain differ diff --git a/public/terrain/18/429274/177026.terrain b/public/terrain/18/429274/177026.terrain new file mode 100644 index 000000000..2357b65cf Binary files /dev/null and b/public/terrain/18/429274/177026.terrain differ diff --git a/public/terrain/18/429274/177027.terrain b/public/terrain/18/429274/177027.terrain new file mode 100644 index 000000000..4944d9634 Binary files /dev/null and b/public/terrain/18/429274/177027.terrain differ diff --git a/public/terrain/18/429274/177028.terrain b/public/terrain/18/429274/177028.terrain new file mode 100644 index 000000000..ced89a06b Binary files /dev/null and b/public/terrain/18/429274/177028.terrain differ diff --git a/public/terrain/18/429274/177029.terrain b/public/terrain/18/429274/177029.terrain new file mode 100644 index 000000000..6950caa8a Binary files /dev/null and b/public/terrain/18/429274/177029.terrain differ diff --git a/public/terrain/18/429275/176871.terrain b/public/terrain/18/429275/176871.terrain new file mode 100644 index 000000000..cca3c2813 Binary files /dev/null and b/public/terrain/18/429275/176871.terrain differ diff --git a/public/terrain/18/429275/176872.terrain b/public/terrain/18/429275/176872.terrain new file mode 100644 index 000000000..03a300ff1 Binary files /dev/null and b/public/terrain/18/429275/176872.terrain differ diff --git a/public/terrain/18/429275/176873.terrain b/public/terrain/18/429275/176873.terrain new file mode 100644 index 000000000..0949b8012 Binary files /dev/null and b/public/terrain/18/429275/176873.terrain differ diff --git a/public/terrain/18/429275/176874.terrain b/public/terrain/18/429275/176874.terrain new file mode 100644 index 000000000..e34d9d050 Binary files /dev/null and b/public/terrain/18/429275/176874.terrain differ diff --git a/public/terrain/18/429275/176875.terrain b/public/terrain/18/429275/176875.terrain new file mode 100644 index 000000000..29e3b67f0 Binary files /dev/null and b/public/terrain/18/429275/176875.terrain differ diff --git a/public/terrain/18/429275/176876.terrain b/public/terrain/18/429275/176876.terrain new file mode 100644 index 000000000..5204807f7 Binary files /dev/null and b/public/terrain/18/429275/176876.terrain differ diff --git a/public/terrain/18/429275/176877.terrain b/public/terrain/18/429275/176877.terrain new file mode 100644 index 000000000..cd2f44208 Binary files /dev/null and b/public/terrain/18/429275/176877.terrain differ diff --git a/public/terrain/18/429275/176878.terrain b/public/terrain/18/429275/176878.terrain new file mode 100644 index 000000000..43e296ca0 Binary files /dev/null and b/public/terrain/18/429275/176878.terrain differ diff --git a/public/terrain/18/429275/176879.terrain b/public/terrain/18/429275/176879.terrain new file mode 100644 index 000000000..05dcfd1a2 Binary files /dev/null and b/public/terrain/18/429275/176879.terrain differ diff --git a/public/terrain/18/429275/176880.terrain b/public/terrain/18/429275/176880.terrain new file mode 100644 index 000000000..6faa59c1d Binary files /dev/null and b/public/terrain/18/429275/176880.terrain differ diff --git a/public/terrain/18/429275/176881.terrain b/public/terrain/18/429275/176881.terrain new file mode 100644 index 000000000..57c07b940 Binary files /dev/null and b/public/terrain/18/429275/176881.terrain differ diff --git a/public/terrain/18/429275/176882.terrain b/public/terrain/18/429275/176882.terrain new file mode 100644 index 000000000..fee03fb75 Binary files /dev/null and b/public/terrain/18/429275/176882.terrain differ diff --git a/public/terrain/18/429275/176883.terrain b/public/terrain/18/429275/176883.terrain new file mode 100644 index 000000000..dbe8f2e23 Binary files /dev/null and b/public/terrain/18/429275/176883.terrain differ diff --git a/public/terrain/18/429275/176884.terrain b/public/terrain/18/429275/176884.terrain new file mode 100644 index 000000000..d0b93e0e3 Binary files /dev/null and b/public/terrain/18/429275/176884.terrain differ diff --git a/public/terrain/18/429275/176885.terrain b/public/terrain/18/429275/176885.terrain new file mode 100644 index 000000000..720fd9053 Binary files /dev/null and b/public/terrain/18/429275/176885.terrain differ diff --git a/public/terrain/18/429275/176886.terrain b/public/terrain/18/429275/176886.terrain new file mode 100644 index 000000000..f8c2de444 Binary files /dev/null and b/public/terrain/18/429275/176886.terrain differ diff --git a/public/terrain/18/429275/176887.terrain b/public/terrain/18/429275/176887.terrain new file mode 100644 index 000000000..74db9948f Binary files /dev/null and b/public/terrain/18/429275/176887.terrain differ diff --git a/public/terrain/18/429275/176888.terrain b/public/terrain/18/429275/176888.terrain new file mode 100644 index 000000000..e2fd83cd0 Binary files /dev/null and b/public/terrain/18/429275/176888.terrain differ diff --git a/public/terrain/18/429275/176889.terrain b/public/terrain/18/429275/176889.terrain new file mode 100644 index 000000000..bca3d3215 Binary files /dev/null and b/public/terrain/18/429275/176889.terrain differ diff --git a/public/terrain/18/429275/176890.terrain b/public/terrain/18/429275/176890.terrain new file mode 100644 index 000000000..9b6665ae3 Binary files /dev/null and b/public/terrain/18/429275/176890.terrain differ diff --git a/public/terrain/18/429275/176891.terrain b/public/terrain/18/429275/176891.terrain new file mode 100644 index 000000000..5feb904f8 Binary files /dev/null and b/public/terrain/18/429275/176891.terrain differ diff --git a/public/terrain/18/429275/176892.terrain b/public/terrain/18/429275/176892.terrain new file mode 100644 index 000000000..4d0e6bd6b Binary files /dev/null and b/public/terrain/18/429275/176892.terrain differ diff --git a/public/terrain/18/429275/176893.terrain b/public/terrain/18/429275/176893.terrain new file mode 100644 index 000000000..e49e9834d Binary files /dev/null and b/public/terrain/18/429275/176893.terrain differ diff --git a/public/terrain/18/429275/176894.terrain b/public/terrain/18/429275/176894.terrain new file mode 100644 index 000000000..c17dfc966 Binary files /dev/null and b/public/terrain/18/429275/176894.terrain differ diff --git a/public/terrain/18/429275/176895.terrain b/public/terrain/18/429275/176895.terrain new file mode 100644 index 000000000..cbfac7ffe Binary files /dev/null and b/public/terrain/18/429275/176895.terrain differ diff --git a/public/terrain/18/429275/176896.terrain b/public/terrain/18/429275/176896.terrain new file mode 100644 index 000000000..4b5b559da Binary files /dev/null and b/public/terrain/18/429275/176896.terrain differ diff --git a/public/terrain/18/429275/176897.terrain b/public/terrain/18/429275/176897.terrain new file mode 100644 index 000000000..1d529a5cb Binary files /dev/null and b/public/terrain/18/429275/176897.terrain differ diff --git a/public/terrain/18/429275/176898.terrain b/public/terrain/18/429275/176898.terrain new file mode 100644 index 000000000..81927ef60 Binary files /dev/null and b/public/terrain/18/429275/176898.terrain differ diff --git a/public/terrain/18/429275/176899.terrain b/public/terrain/18/429275/176899.terrain new file mode 100644 index 000000000..d2ea1c482 Binary files /dev/null and b/public/terrain/18/429275/176899.terrain differ diff --git a/public/terrain/18/429275/176900.terrain b/public/terrain/18/429275/176900.terrain new file mode 100644 index 000000000..a1e31d680 Binary files /dev/null and b/public/terrain/18/429275/176900.terrain differ diff --git a/public/terrain/18/429275/176901.terrain b/public/terrain/18/429275/176901.terrain new file mode 100644 index 000000000..c7fb84c70 Binary files /dev/null and b/public/terrain/18/429275/176901.terrain differ diff --git a/public/terrain/18/429275/176902.terrain b/public/terrain/18/429275/176902.terrain new file mode 100644 index 000000000..3232d1c87 Binary files /dev/null and b/public/terrain/18/429275/176902.terrain differ diff --git a/public/terrain/18/429275/176903.terrain b/public/terrain/18/429275/176903.terrain new file mode 100644 index 000000000..8e283a260 Binary files /dev/null and b/public/terrain/18/429275/176903.terrain differ diff --git a/public/terrain/18/429275/176904.terrain b/public/terrain/18/429275/176904.terrain new file mode 100644 index 000000000..539aad0e3 Binary files /dev/null and b/public/terrain/18/429275/176904.terrain differ diff --git a/public/terrain/18/429275/176905.terrain b/public/terrain/18/429275/176905.terrain new file mode 100644 index 000000000..0b7819b9d Binary files /dev/null and b/public/terrain/18/429275/176905.terrain differ diff --git a/public/terrain/18/429275/176906.terrain b/public/terrain/18/429275/176906.terrain new file mode 100644 index 000000000..1bccf60b8 Binary files /dev/null and b/public/terrain/18/429275/176906.terrain differ diff --git a/public/terrain/18/429275/176907.terrain b/public/terrain/18/429275/176907.terrain new file mode 100644 index 000000000..d68de6f31 Binary files /dev/null and b/public/terrain/18/429275/176907.terrain differ diff --git a/public/terrain/18/429275/176908.terrain b/public/terrain/18/429275/176908.terrain new file mode 100644 index 000000000..16f65e881 Binary files /dev/null and b/public/terrain/18/429275/176908.terrain differ diff --git a/public/terrain/18/429275/176909.terrain b/public/terrain/18/429275/176909.terrain new file mode 100644 index 000000000..0489198d8 Binary files /dev/null and b/public/terrain/18/429275/176909.terrain differ diff --git a/public/terrain/18/429275/176910.terrain b/public/terrain/18/429275/176910.terrain new file mode 100644 index 000000000..bab39caa1 Binary files /dev/null and b/public/terrain/18/429275/176910.terrain differ diff --git a/public/terrain/18/429275/176911.terrain b/public/terrain/18/429275/176911.terrain new file mode 100644 index 000000000..c2c37487e Binary files /dev/null and b/public/terrain/18/429275/176911.terrain differ diff --git a/public/terrain/18/429275/176912.terrain b/public/terrain/18/429275/176912.terrain new file mode 100644 index 000000000..ef51c39e9 Binary files /dev/null and b/public/terrain/18/429275/176912.terrain differ diff --git a/public/terrain/18/429275/176913.terrain b/public/terrain/18/429275/176913.terrain new file mode 100644 index 000000000..7d275f833 Binary files /dev/null and b/public/terrain/18/429275/176913.terrain differ diff --git a/public/terrain/18/429275/176914.terrain b/public/terrain/18/429275/176914.terrain new file mode 100644 index 000000000..e63e3620e Binary files /dev/null and b/public/terrain/18/429275/176914.terrain differ diff --git a/public/terrain/18/429275/176915.terrain b/public/terrain/18/429275/176915.terrain new file mode 100644 index 000000000..f5fd1c9d2 Binary files /dev/null and b/public/terrain/18/429275/176915.terrain differ diff --git a/public/terrain/18/429275/176916.terrain b/public/terrain/18/429275/176916.terrain new file mode 100644 index 000000000..510161bd8 Binary files /dev/null and b/public/terrain/18/429275/176916.terrain differ diff --git a/public/terrain/18/429275/176917.terrain b/public/terrain/18/429275/176917.terrain new file mode 100644 index 000000000..4bedb1091 Binary files /dev/null and b/public/terrain/18/429275/176917.terrain differ diff --git a/public/terrain/18/429275/176918.terrain b/public/terrain/18/429275/176918.terrain new file mode 100644 index 000000000..9681305ea Binary files /dev/null and b/public/terrain/18/429275/176918.terrain differ diff --git a/public/terrain/18/429275/176919.terrain b/public/terrain/18/429275/176919.terrain new file mode 100644 index 000000000..267885358 Binary files /dev/null and b/public/terrain/18/429275/176919.terrain differ diff --git a/public/terrain/18/429275/176920.terrain b/public/terrain/18/429275/176920.terrain new file mode 100644 index 000000000..bce87b627 Binary files /dev/null and b/public/terrain/18/429275/176920.terrain differ diff --git a/public/terrain/18/429275/176921.terrain b/public/terrain/18/429275/176921.terrain new file mode 100644 index 000000000..b0198981d Binary files /dev/null and b/public/terrain/18/429275/176921.terrain differ diff --git a/public/terrain/18/429275/176922.terrain b/public/terrain/18/429275/176922.terrain new file mode 100644 index 000000000..6057197e1 Binary files /dev/null and b/public/terrain/18/429275/176922.terrain differ diff --git a/public/terrain/18/429275/176923.terrain b/public/terrain/18/429275/176923.terrain new file mode 100644 index 000000000..2896a7ade Binary files /dev/null and b/public/terrain/18/429275/176923.terrain differ diff --git a/public/terrain/18/429275/176924.terrain b/public/terrain/18/429275/176924.terrain new file mode 100644 index 000000000..bca2496c2 Binary files /dev/null and b/public/terrain/18/429275/176924.terrain differ diff --git a/public/terrain/18/429275/176925.terrain b/public/terrain/18/429275/176925.terrain new file mode 100644 index 000000000..84b698f78 Binary files /dev/null and b/public/terrain/18/429275/176925.terrain differ diff --git a/public/terrain/18/429275/176926.terrain b/public/terrain/18/429275/176926.terrain new file mode 100644 index 000000000..2689b155b Binary files /dev/null and b/public/terrain/18/429275/176926.terrain differ diff --git a/public/terrain/18/429275/176927.terrain b/public/terrain/18/429275/176927.terrain new file mode 100644 index 000000000..fe5031f73 Binary files /dev/null and b/public/terrain/18/429275/176927.terrain differ diff --git a/public/terrain/18/429275/176928.terrain b/public/terrain/18/429275/176928.terrain new file mode 100644 index 000000000..2f062ab47 Binary files /dev/null and b/public/terrain/18/429275/176928.terrain differ diff --git a/public/terrain/18/429275/176929.terrain b/public/terrain/18/429275/176929.terrain new file mode 100644 index 000000000..57fd99198 Binary files /dev/null and b/public/terrain/18/429275/176929.terrain differ diff --git a/public/terrain/18/429275/176930.terrain b/public/terrain/18/429275/176930.terrain new file mode 100644 index 000000000..70963c526 Binary files /dev/null and b/public/terrain/18/429275/176930.terrain differ diff --git a/public/terrain/18/429275/176931.terrain b/public/terrain/18/429275/176931.terrain new file mode 100644 index 000000000..d5582c137 Binary files /dev/null and b/public/terrain/18/429275/176931.terrain differ diff --git a/public/terrain/18/429275/176932.terrain b/public/terrain/18/429275/176932.terrain new file mode 100644 index 000000000..e90d9996b Binary files /dev/null and b/public/terrain/18/429275/176932.terrain differ diff --git a/public/terrain/18/429275/176933.terrain b/public/terrain/18/429275/176933.terrain new file mode 100644 index 000000000..14cd52462 Binary files /dev/null and b/public/terrain/18/429275/176933.terrain differ diff --git a/public/terrain/18/429275/176934.terrain b/public/terrain/18/429275/176934.terrain new file mode 100644 index 000000000..271f05c9e Binary files /dev/null and b/public/terrain/18/429275/176934.terrain differ diff --git a/public/terrain/18/429275/176935.terrain b/public/terrain/18/429275/176935.terrain new file mode 100644 index 000000000..5eac0f8cf Binary files /dev/null and b/public/terrain/18/429275/176935.terrain differ diff --git a/public/terrain/18/429275/176936.terrain b/public/terrain/18/429275/176936.terrain new file mode 100644 index 000000000..cb0b129ce Binary files /dev/null and b/public/terrain/18/429275/176936.terrain differ diff --git a/public/terrain/18/429275/176937.terrain b/public/terrain/18/429275/176937.terrain new file mode 100644 index 000000000..893108ba5 Binary files /dev/null and b/public/terrain/18/429275/176937.terrain differ diff --git a/public/terrain/18/429275/176938.terrain b/public/terrain/18/429275/176938.terrain new file mode 100644 index 000000000..0cf53373a Binary files /dev/null and b/public/terrain/18/429275/176938.terrain differ diff --git a/public/terrain/18/429275/176939.terrain b/public/terrain/18/429275/176939.terrain new file mode 100644 index 000000000..7a0a6f93d Binary files /dev/null and b/public/terrain/18/429275/176939.terrain differ diff --git a/public/terrain/18/429275/176940.terrain b/public/terrain/18/429275/176940.terrain new file mode 100644 index 000000000..0e577ce92 Binary files /dev/null and b/public/terrain/18/429275/176940.terrain differ diff --git a/public/terrain/18/429275/176941.terrain b/public/terrain/18/429275/176941.terrain new file mode 100644 index 000000000..b425a9482 Binary files /dev/null and b/public/terrain/18/429275/176941.terrain differ diff --git a/public/terrain/18/429275/176942.terrain b/public/terrain/18/429275/176942.terrain new file mode 100644 index 000000000..347b09b44 Binary files /dev/null and b/public/terrain/18/429275/176942.terrain differ diff --git a/public/terrain/18/429275/176943.terrain b/public/terrain/18/429275/176943.terrain new file mode 100644 index 000000000..4999127df Binary files /dev/null and b/public/terrain/18/429275/176943.terrain differ diff --git a/public/terrain/18/429275/176944.terrain b/public/terrain/18/429275/176944.terrain new file mode 100644 index 000000000..dce86dd57 Binary files /dev/null and b/public/terrain/18/429275/176944.terrain differ diff --git a/public/terrain/18/429275/176945.terrain b/public/terrain/18/429275/176945.terrain new file mode 100644 index 000000000..bb9db81fb Binary files /dev/null and b/public/terrain/18/429275/176945.terrain differ diff --git a/public/terrain/18/429275/176946.terrain b/public/terrain/18/429275/176946.terrain new file mode 100644 index 000000000..da0756b54 Binary files /dev/null and b/public/terrain/18/429275/176946.terrain differ diff --git a/public/terrain/18/429275/176947.terrain b/public/terrain/18/429275/176947.terrain new file mode 100644 index 000000000..245e24510 Binary files /dev/null and b/public/terrain/18/429275/176947.terrain differ diff --git a/public/terrain/18/429275/176948.terrain b/public/terrain/18/429275/176948.terrain new file mode 100644 index 000000000..c8ab9fed0 Binary files /dev/null and b/public/terrain/18/429275/176948.terrain differ diff --git a/public/terrain/18/429275/176949.terrain b/public/terrain/18/429275/176949.terrain new file mode 100644 index 000000000..81b60827f Binary files /dev/null and b/public/terrain/18/429275/176949.terrain differ diff --git a/public/terrain/18/429275/176950.terrain b/public/terrain/18/429275/176950.terrain new file mode 100644 index 000000000..a87994e66 Binary files /dev/null and b/public/terrain/18/429275/176950.terrain differ diff --git a/public/terrain/18/429275/176951.terrain b/public/terrain/18/429275/176951.terrain new file mode 100644 index 000000000..abb3e95f7 Binary files /dev/null and b/public/terrain/18/429275/176951.terrain differ diff --git a/public/terrain/18/429275/176952.terrain b/public/terrain/18/429275/176952.terrain new file mode 100644 index 000000000..0040d52ba Binary files /dev/null and b/public/terrain/18/429275/176952.terrain differ diff --git a/public/terrain/18/429275/176953.terrain b/public/terrain/18/429275/176953.terrain new file mode 100644 index 000000000..5208ab7a8 Binary files /dev/null and b/public/terrain/18/429275/176953.terrain differ diff --git a/public/terrain/18/429275/176954.terrain b/public/terrain/18/429275/176954.terrain new file mode 100644 index 000000000..22643f0b9 Binary files /dev/null and b/public/terrain/18/429275/176954.terrain differ diff --git a/public/terrain/18/429275/176955.terrain b/public/terrain/18/429275/176955.terrain new file mode 100644 index 000000000..f20a9a0d4 Binary files /dev/null and b/public/terrain/18/429275/176955.terrain differ diff --git a/public/terrain/18/429275/176956.terrain b/public/terrain/18/429275/176956.terrain new file mode 100644 index 000000000..38364ec29 Binary files /dev/null and b/public/terrain/18/429275/176956.terrain differ diff --git a/public/terrain/18/429275/176957.terrain b/public/terrain/18/429275/176957.terrain new file mode 100644 index 000000000..8d58fd7b1 Binary files /dev/null and b/public/terrain/18/429275/176957.terrain differ diff --git a/public/terrain/18/429275/176958.terrain b/public/terrain/18/429275/176958.terrain new file mode 100644 index 000000000..7ecdd76cb Binary files /dev/null and b/public/terrain/18/429275/176958.terrain differ diff --git a/public/terrain/18/429275/176959.terrain b/public/terrain/18/429275/176959.terrain new file mode 100644 index 000000000..9ddabc0da Binary files /dev/null and b/public/terrain/18/429275/176959.terrain differ diff --git a/public/terrain/18/429275/176960.terrain b/public/terrain/18/429275/176960.terrain new file mode 100644 index 000000000..797cf3a83 Binary files /dev/null and b/public/terrain/18/429275/176960.terrain differ diff --git a/public/terrain/18/429275/176961.terrain b/public/terrain/18/429275/176961.terrain new file mode 100644 index 000000000..6a4529f63 Binary files /dev/null and b/public/terrain/18/429275/176961.terrain differ diff --git a/public/terrain/18/429275/176962.terrain b/public/terrain/18/429275/176962.terrain new file mode 100644 index 000000000..05b3f998f Binary files /dev/null and b/public/terrain/18/429275/176962.terrain differ diff --git a/public/terrain/18/429275/176963.terrain b/public/terrain/18/429275/176963.terrain new file mode 100644 index 000000000..e62f0c58b Binary files /dev/null and b/public/terrain/18/429275/176963.terrain differ diff --git a/public/terrain/18/429275/176964.terrain b/public/terrain/18/429275/176964.terrain new file mode 100644 index 000000000..1c8323130 Binary files /dev/null and b/public/terrain/18/429275/176964.terrain differ diff --git a/public/terrain/18/429275/176965.terrain b/public/terrain/18/429275/176965.terrain new file mode 100644 index 000000000..339ac8402 Binary files /dev/null and b/public/terrain/18/429275/176965.terrain differ diff --git a/public/terrain/18/429275/176966.terrain b/public/terrain/18/429275/176966.terrain new file mode 100644 index 000000000..b8ccb04c4 Binary files /dev/null and b/public/terrain/18/429275/176966.terrain differ diff --git a/public/terrain/18/429275/176967.terrain b/public/terrain/18/429275/176967.terrain new file mode 100644 index 000000000..924277be9 Binary files /dev/null and b/public/terrain/18/429275/176967.terrain differ diff --git a/public/terrain/18/429275/176968.terrain b/public/terrain/18/429275/176968.terrain new file mode 100644 index 000000000..3cc95e09e Binary files /dev/null and b/public/terrain/18/429275/176968.terrain differ diff --git a/public/terrain/18/429275/176969.terrain b/public/terrain/18/429275/176969.terrain new file mode 100644 index 000000000..802f8a4fa Binary files /dev/null and b/public/terrain/18/429275/176969.terrain differ diff --git a/public/terrain/18/429275/176970.terrain b/public/terrain/18/429275/176970.terrain new file mode 100644 index 000000000..ec1fd432b Binary files /dev/null and b/public/terrain/18/429275/176970.terrain differ diff --git a/public/terrain/18/429275/176971.terrain b/public/terrain/18/429275/176971.terrain new file mode 100644 index 000000000..60c0f754b Binary files /dev/null and b/public/terrain/18/429275/176971.terrain differ diff --git a/public/terrain/18/429275/176972.terrain b/public/terrain/18/429275/176972.terrain new file mode 100644 index 000000000..347069251 Binary files /dev/null and b/public/terrain/18/429275/176972.terrain differ diff --git a/public/terrain/18/429275/176973.terrain b/public/terrain/18/429275/176973.terrain new file mode 100644 index 000000000..b58e02b67 Binary files /dev/null and b/public/terrain/18/429275/176973.terrain differ diff --git a/public/terrain/18/429275/176974.terrain b/public/terrain/18/429275/176974.terrain new file mode 100644 index 000000000..20b82ec3b Binary files /dev/null and b/public/terrain/18/429275/176974.terrain differ diff --git a/public/terrain/18/429275/176975.terrain b/public/terrain/18/429275/176975.terrain new file mode 100644 index 000000000..84d065224 Binary files /dev/null and b/public/terrain/18/429275/176975.terrain differ diff --git a/public/terrain/18/429275/176976.terrain b/public/terrain/18/429275/176976.terrain new file mode 100644 index 000000000..19a7f830a Binary files /dev/null and b/public/terrain/18/429275/176976.terrain differ diff --git a/public/terrain/18/429275/176977.terrain b/public/terrain/18/429275/176977.terrain new file mode 100644 index 000000000..1cadbecd1 Binary files /dev/null and b/public/terrain/18/429275/176977.terrain differ diff --git a/public/terrain/18/429275/176978.terrain b/public/terrain/18/429275/176978.terrain new file mode 100644 index 000000000..da91bf408 Binary files /dev/null and b/public/terrain/18/429275/176978.terrain differ diff --git a/public/terrain/18/429275/176979.terrain b/public/terrain/18/429275/176979.terrain new file mode 100644 index 000000000..77ef76b55 Binary files /dev/null and b/public/terrain/18/429275/176979.terrain differ diff --git a/public/terrain/18/429275/176980.terrain b/public/terrain/18/429275/176980.terrain new file mode 100644 index 000000000..1ad7d838f Binary files /dev/null and b/public/terrain/18/429275/176980.terrain differ diff --git a/public/terrain/18/429275/176981.terrain b/public/terrain/18/429275/176981.terrain new file mode 100644 index 000000000..04e69668e Binary files /dev/null and b/public/terrain/18/429275/176981.terrain differ diff --git a/public/terrain/18/429275/176982.terrain b/public/terrain/18/429275/176982.terrain new file mode 100644 index 000000000..f6332b11c Binary files /dev/null and b/public/terrain/18/429275/176982.terrain differ diff --git a/public/terrain/18/429275/176983.terrain b/public/terrain/18/429275/176983.terrain new file mode 100644 index 000000000..679b2af35 Binary files /dev/null and b/public/terrain/18/429275/176983.terrain differ diff --git a/public/terrain/18/429275/176984.terrain b/public/terrain/18/429275/176984.terrain new file mode 100644 index 000000000..8a946c4e2 Binary files /dev/null and b/public/terrain/18/429275/176984.terrain differ diff --git a/public/terrain/18/429275/176985.terrain b/public/terrain/18/429275/176985.terrain new file mode 100644 index 000000000..3c5790a2a Binary files /dev/null and b/public/terrain/18/429275/176985.terrain differ diff --git a/public/terrain/18/429275/176986.terrain b/public/terrain/18/429275/176986.terrain new file mode 100644 index 000000000..e565b7696 Binary files /dev/null and b/public/terrain/18/429275/176986.terrain differ diff --git a/public/terrain/18/429275/176987.terrain b/public/terrain/18/429275/176987.terrain new file mode 100644 index 000000000..5416f246a Binary files /dev/null and b/public/terrain/18/429275/176987.terrain differ diff --git a/public/terrain/18/429275/176988.terrain b/public/terrain/18/429275/176988.terrain new file mode 100644 index 000000000..ae135a64e Binary files /dev/null and b/public/terrain/18/429275/176988.terrain differ diff --git a/public/terrain/18/429275/176989.terrain b/public/terrain/18/429275/176989.terrain new file mode 100644 index 000000000..181fac171 Binary files /dev/null and b/public/terrain/18/429275/176989.terrain differ diff --git a/public/terrain/18/429275/176990.terrain b/public/terrain/18/429275/176990.terrain new file mode 100644 index 000000000..15933fb12 Binary files /dev/null and b/public/terrain/18/429275/176990.terrain differ diff --git a/public/terrain/18/429275/176991.terrain b/public/terrain/18/429275/176991.terrain new file mode 100644 index 000000000..737e52e6b Binary files /dev/null and b/public/terrain/18/429275/176991.terrain differ diff --git a/public/terrain/18/429275/176992.terrain b/public/terrain/18/429275/176992.terrain new file mode 100644 index 000000000..da1f2aa15 Binary files /dev/null and b/public/terrain/18/429275/176992.terrain differ diff --git a/public/terrain/18/429275/176993.terrain b/public/terrain/18/429275/176993.terrain new file mode 100644 index 000000000..ff8d63b28 Binary files /dev/null and b/public/terrain/18/429275/176993.terrain differ diff --git a/public/terrain/18/429275/176994.terrain b/public/terrain/18/429275/176994.terrain new file mode 100644 index 000000000..166f3599d Binary files /dev/null and b/public/terrain/18/429275/176994.terrain differ diff --git a/public/terrain/18/429275/176995.terrain b/public/terrain/18/429275/176995.terrain new file mode 100644 index 000000000..e23ccc1ca Binary files /dev/null and b/public/terrain/18/429275/176995.terrain differ diff --git a/public/terrain/18/429275/176996.terrain b/public/terrain/18/429275/176996.terrain new file mode 100644 index 000000000..9d9fdf5ac Binary files /dev/null and b/public/terrain/18/429275/176996.terrain differ diff --git a/public/terrain/18/429275/176997.terrain b/public/terrain/18/429275/176997.terrain new file mode 100644 index 000000000..d01f54c94 Binary files /dev/null and b/public/terrain/18/429275/176997.terrain differ diff --git a/public/terrain/18/429275/176998.terrain b/public/terrain/18/429275/176998.terrain new file mode 100644 index 000000000..34f1352f0 Binary files /dev/null and b/public/terrain/18/429275/176998.terrain differ diff --git a/public/terrain/18/429275/176999.terrain b/public/terrain/18/429275/176999.terrain new file mode 100644 index 000000000..4c4d4f237 Binary files /dev/null and b/public/terrain/18/429275/176999.terrain differ diff --git a/public/terrain/18/429275/177000.terrain b/public/terrain/18/429275/177000.terrain new file mode 100644 index 000000000..0485af052 Binary files /dev/null and b/public/terrain/18/429275/177000.terrain differ diff --git a/public/terrain/18/429275/177001.terrain b/public/terrain/18/429275/177001.terrain new file mode 100644 index 000000000..2fbd3e4cd Binary files /dev/null and b/public/terrain/18/429275/177001.terrain differ diff --git a/public/terrain/18/429275/177002.terrain b/public/terrain/18/429275/177002.terrain new file mode 100644 index 000000000..f82b2a978 Binary files /dev/null and b/public/terrain/18/429275/177002.terrain differ diff --git a/public/terrain/18/429275/177003.terrain b/public/terrain/18/429275/177003.terrain new file mode 100644 index 000000000..5b358de29 Binary files /dev/null and b/public/terrain/18/429275/177003.terrain differ diff --git a/public/terrain/18/429275/177004.terrain b/public/terrain/18/429275/177004.terrain new file mode 100644 index 000000000..4d51153af Binary files /dev/null and b/public/terrain/18/429275/177004.terrain differ diff --git a/public/terrain/18/429275/177005.terrain b/public/terrain/18/429275/177005.terrain new file mode 100644 index 000000000..adfee6a30 Binary files /dev/null and b/public/terrain/18/429275/177005.terrain differ diff --git a/public/terrain/18/429275/177006.terrain b/public/terrain/18/429275/177006.terrain new file mode 100644 index 000000000..adbef6663 Binary files /dev/null and b/public/terrain/18/429275/177006.terrain differ diff --git a/public/terrain/18/429275/177007.terrain b/public/terrain/18/429275/177007.terrain new file mode 100644 index 000000000..c516904c1 Binary files /dev/null and b/public/terrain/18/429275/177007.terrain differ diff --git a/public/terrain/18/429275/177008.terrain b/public/terrain/18/429275/177008.terrain new file mode 100644 index 000000000..3c088518b Binary files /dev/null and b/public/terrain/18/429275/177008.terrain differ diff --git a/public/terrain/18/429275/177009.terrain b/public/terrain/18/429275/177009.terrain new file mode 100644 index 000000000..ccb7b09f7 Binary files /dev/null and b/public/terrain/18/429275/177009.terrain differ diff --git a/public/terrain/18/429275/177010.terrain b/public/terrain/18/429275/177010.terrain new file mode 100644 index 000000000..2d74bd9af Binary files /dev/null and b/public/terrain/18/429275/177010.terrain differ diff --git a/public/terrain/18/429275/177011.terrain b/public/terrain/18/429275/177011.terrain new file mode 100644 index 000000000..a1b6c487b Binary files /dev/null and b/public/terrain/18/429275/177011.terrain differ diff --git a/public/terrain/18/429275/177012.terrain b/public/terrain/18/429275/177012.terrain new file mode 100644 index 000000000..8e57805d8 Binary files /dev/null and b/public/terrain/18/429275/177012.terrain differ diff --git a/public/terrain/18/429275/177013.terrain b/public/terrain/18/429275/177013.terrain new file mode 100644 index 000000000..ed8372cd3 Binary files /dev/null and b/public/terrain/18/429275/177013.terrain differ diff --git a/public/terrain/18/429275/177014.terrain b/public/terrain/18/429275/177014.terrain new file mode 100644 index 000000000..bbb8a45b0 Binary files /dev/null and b/public/terrain/18/429275/177014.terrain differ diff --git a/public/terrain/18/429275/177015.terrain b/public/terrain/18/429275/177015.terrain new file mode 100644 index 000000000..cfe941230 Binary files /dev/null and b/public/terrain/18/429275/177015.terrain differ diff --git a/public/terrain/18/429275/177016.terrain b/public/terrain/18/429275/177016.terrain new file mode 100644 index 000000000..b762d3fb2 Binary files /dev/null and b/public/terrain/18/429275/177016.terrain differ diff --git a/public/terrain/18/429275/177017.terrain b/public/terrain/18/429275/177017.terrain new file mode 100644 index 000000000..ca06816c1 Binary files /dev/null and b/public/terrain/18/429275/177017.terrain differ diff --git a/public/terrain/18/429275/177018.terrain b/public/terrain/18/429275/177018.terrain new file mode 100644 index 000000000..968d6f6f0 Binary files /dev/null and b/public/terrain/18/429275/177018.terrain differ diff --git a/public/terrain/18/429275/177019.terrain b/public/terrain/18/429275/177019.terrain new file mode 100644 index 000000000..78aa61bb1 Binary files /dev/null and b/public/terrain/18/429275/177019.terrain differ diff --git a/public/terrain/18/429275/177020.terrain b/public/terrain/18/429275/177020.terrain new file mode 100644 index 000000000..def365e1d Binary files /dev/null and b/public/terrain/18/429275/177020.terrain differ diff --git a/public/terrain/18/429275/177021.terrain b/public/terrain/18/429275/177021.terrain new file mode 100644 index 000000000..8eec7b8b3 Binary files /dev/null and b/public/terrain/18/429275/177021.terrain differ diff --git a/public/terrain/18/429275/177022.terrain b/public/terrain/18/429275/177022.terrain new file mode 100644 index 000000000..e93df1c46 Binary files /dev/null and b/public/terrain/18/429275/177022.terrain differ diff --git a/public/terrain/18/429275/177023.terrain b/public/terrain/18/429275/177023.terrain new file mode 100644 index 000000000..4c966ff28 Binary files /dev/null and b/public/terrain/18/429275/177023.terrain differ diff --git a/public/terrain/18/429275/177024.terrain b/public/terrain/18/429275/177024.terrain new file mode 100644 index 000000000..6d3605d57 Binary files /dev/null and b/public/terrain/18/429275/177024.terrain differ diff --git a/public/terrain/18/429275/177025.terrain b/public/terrain/18/429275/177025.terrain new file mode 100644 index 000000000..92a0ddfb4 Binary files /dev/null and b/public/terrain/18/429275/177025.terrain differ diff --git a/public/terrain/18/429275/177026.terrain b/public/terrain/18/429275/177026.terrain new file mode 100644 index 000000000..702748033 Binary files /dev/null and b/public/terrain/18/429275/177026.terrain differ diff --git a/public/terrain/18/429275/177027.terrain b/public/terrain/18/429275/177027.terrain new file mode 100644 index 000000000..59524a3af Binary files /dev/null and b/public/terrain/18/429275/177027.terrain differ diff --git a/public/terrain/18/429275/177028.terrain b/public/terrain/18/429275/177028.terrain new file mode 100644 index 000000000..de075df82 Binary files /dev/null and b/public/terrain/18/429275/177028.terrain differ diff --git a/public/terrain/18/429275/177029.terrain b/public/terrain/18/429275/177029.terrain new file mode 100644 index 000000000..7765cfe39 Binary files /dev/null and b/public/terrain/18/429275/177029.terrain differ diff --git a/public/terrain/18/429276/176871.terrain b/public/terrain/18/429276/176871.terrain new file mode 100644 index 000000000..bd8c7800c Binary files /dev/null and b/public/terrain/18/429276/176871.terrain differ diff --git a/public/terrain/18/429276/176872.terrain b/public/terrain/18/429276/176872.terrain new file mode 100644 index 000000000..dfd21fcdd Binary files /dev/null and b/public/terrain/18/429276/176872.terrain differ diff --git a/public/terrain/18/429276/176873.terrain b/public/terrain/18/429276/176873.terrain new file mode 100644 index 000000000..ef91548cb Binary files /dev/null and b/public/terrain/18/429276/176873.terrain differ diff --git a/public/terrain/18/429276/176874.terrain b/public/terrain/18/429276/176874.terrain new file mode 100644 index 000000000..ede942322 Binary files /dev/null and b/public/terrain/18/429276/176874.terrain differ diff --git a/public/terrain/18/429276/176875.terrain b/public/terrain/18/429276/176875.terrain new file mode 100644 index 000000000..7824046f9 Binary files /dev/null and b/public/terrain/18/429276/176875.terrain differ diff --git a/public/terrain/18/429276/176876.terrain b/public/terrain/18/429276/176876.terrain new file mode 100644 index 000000000..9e0237e42 Binary files /dev/null and b/public/terrain/18/429276/176876.terrain differ diff --git a/public/terrain/18/429276/176877.terrain b/public/terrain/18/429276/176877.terrain new file mode 100644 index 000000000..4517dc175 Binary files /dev/null and b/public/terrain/18/429276/176877.terrain differ diff --git a/public/terrain/18/429276/176878.terrain b/public/terrain/18/429276/176878.terrain new file mode 100644 index 000000000..a644e206e Binary files /dev/null and b/public/terrain/18/429276/176878.terrain differ diff --git a/public/terrain/18/429276/176879.terrain b/public/terrain/18/429276/176879.terrain new file mode 100644 index 000000000..37fa844d5 Binary files /dev/null and b/public/terrain/18/429276/176879.terrain differ diff --git a/public/terrain/18/429276/176880.terrain b/public/terrain/18/429276/176880.terrain new file mode 100644 index 000000000..de245e2f1 Binary files /dev/null and b/public/terrain/18/429276/176880.terrain differ diff --git a/public/terrain/18/429276/176881.terrain b/public/terrain/18/429276/176881.terrain new file mode 100644 index 000000000..d2742cf43 Binary files /dev/null and b/public/terrain/18/429276/176881.terrain differ diff --git a/public/terrain/18/429276/176882.terrain b/public/terrain/18/429276/176882.terrain new file mode 100644 index 000000000..9e4582875 Binary files /dev/null and b/public/terrain/18/429276/176882.terrain differ diff --git a/public/terrain/18/429276/176883.terrain b/public/terrain/18/429276/176883.terrain new file mode 100644 index 000000000..a95837db1 Binary files /dev/null and b/public/terrain/18/429276/176883.terrain differ diff --git a/public/terrain/18/429276/176884.terrain b/public/terrain/18/429276/176884.terrain new file mode 100644 index 000000000..5920553a5 Binary files /dev/null and b/public/terrain/18/429276/176884.terrain differ diff --git a/public/terrain/18/429276/176885.terrain b/public/terrain/18/429276/176885.terrain new file mode 100644 index 000000000..86f274650 Binary files /dev/null and b/public/terrain/18/429276/176885.terrain differ diff --git a/public/terrain/18/429276/176886.terrain b/public/terrain/18/429276/176886.terrain new file mode 100644 index 000000000..1f233a36d Binary files /dev/null and b/public/terrain/18/429276/176886.terrain differ diff --git a/public/terrain/18/429276/176887.terrain b/public/terrain/18/429276/176887.terrain new file mode 100644 index 000000000..23e582c91 Binary files /dev/null and b/public/terrain/18/429276/176887.terrain differ diff --git a/public/terrain/18/429276/176888.terrain b/public/terrain/18/429276/176888.terrain new file mode 100644 index 000000000..101f54525 Binary files /dev/null and b/public/terrain/18/429276/176888.terrain differ diff --git a/public/terrain/18/429276/176889.terrain b/public/terrain/18/429276/176889.terrain new file mode 100644 index 000000000..225177b34 Binary files /dev/null and b/public/terrain/18/429276/176889.terrain differ diff --git a/public/terrain/18/429276/176890.terrain b/public/terrain/18/429276/176890.terrain new file mode 100644 index 000000000..c8fada6a0 Binary files /dev/null and b/public/terrain/18/429276/176890.terrain differ diff --git a/public/terrain/18/429276/176891.terrain b/public/terrain/18/429276/176891.terrain new file mode 100644 index 000000000..8cf681a79 Binary files /dev/null and b/public/terrain/18/429276/176891.terrain differ diff --git a/public/terrain/18/429276/176892.terrain b/public/terrain/18/429276/176892.terrain new file mode 100644 index 000000000..28e38232e Binary files /dev/null and b/public/terrain/18/429276/176892.terrain differ diff --git a/public/terrain/18/429276/176893.terrain b/public/terrain/18/429276/176893.terrain new file mode 100644 index 000000000..946278323 Binary files /dev/null and b/public/terrain/18/429276/176893.terrain differ diff --git a/public/terrain/18/429276/176894.terrain b/public/terrain/18/429276/176894.terrain new file mode 100644 index 000000000..2e576a638 Binary files /dev/null and b/public/terrain/18/429276/176894.terrain differ diff --git a/public/terrain/18/429276/176895.terrain b/public/terrain/18/429276/176895.terrain new file mode 100644 index 000000000..7ff07176d Binary files /dev/null and b/public/terrain/18/429276/176895.terrain differ diff --git a/public/terrain/18/429276/176896.terrain b/public/terrain/18/429276/176896.terrain new file mode 100644 index 000000000..9a8e82279 Binary files /dev/null and b/public/terrain/18/429276/176896.terrain differ diff --git a/public/terrain/18/429276/176897.terrain b/public/terrain/18/429276/176897.terrain new file mode 100644 index 000000000..0e598b972 Binary files /dev/null and b/public/terrain/18/429276/176897.terrain differ diff --git a/public/terrain/18/429276/176898.terrain b/public/terrain/18/429276/176898.terrain new file mode 100644 index 000000000..030ce0f16 Binary files /dev/null and b/public/terrain/18/429276/176898.terrain differ diff --git a/public/terrain/18/429276/176899.terrain b/public/terrain/18/429276/176899.terrain new file mode 100644 index 000000000..dbfe1d05d Binary files /dev/null and b/public/terrain/18/429276/176899.terrain differ diff --git a/public/terrain/18/429276/176900.terrain b/public/terrain/18/429276/176900.terrain new file mode 100644 index 000000000..300f70beb Binary files /dev/null and b/public/terrain/18/429276/176900.terrain differ diff --git a/public/terrain/18/429276/176901.terrain b/public/terrain/18/429276/176901.terrain new file mode 100644 index 000000000..6148a562c Binary files /dev/null and b/public/terrain/18/429276/176901.terrain differ diff --git a/public/terrain/18/429276/176902.terrain b/public/terrain/18/429276/176902.terrain new file mode 100644 index 000000000..8cde8958a Binary files /dev/null and b/public/terrain/18/429276/176902.terrain differ diff --git a/public/terrain/18/429276/176903.terrain b/public/terrain/18/429276/176903.terrain new file mode 100644 index 000000000..594007e67 Binary files /dev/null and b/public/terrain/18/429276/176903.terrain differ diff --git a/public/terrain/18/429276/176904.terrain b/public/terrain/18/429276/176904.terrain new file mode 100644 index 000000000..90b978db1 Binary files /dev/null and b/public/terrain/18/429276/176904.terrain differ diff --git a/public/terrain/18/429276/176905.terrain b/public/terrain/18/429276/176905.terrain new file mode 100644 index 000000000..e220a699c Binary files /dev/null and b/public/terrain/18/429276/176905.terrain differ diff --git a/public/terrain/18/429276/176906.terrain b/public/terrain/18/429276/176906.terrain new file mode 100644 index 000000000..30d254925 Binary files /dev/null and b/public/terrain/18/429276/176906.terrain differ diff --git a/public/terrain/18/429276/176907.terrain b/public/terrain/18/429276/176907.terrain new file mode 100644 index 000000000..49fd2ba2f Binary files /dev/null and b/public/terrain/18/429276/176907.terrain differ diff --git a/public/terrain/18/429276/176908.terrain b/public/terrain/18/429276/176908.terrain new file mode 100644 index 000000000..70758933a Binary files /dev/null and b/public/terrain/18/429276/176908.terrain differ diff --git a/public/terrain/18/429276/176909.terrain b/public/terrain/18/429276/176909.terrain new file mode 100644 index 000000000..81df6542e Binary files /dev/null and b/public/terrain/18/429276/176909.terrain differ diff --git a/public/terrain/18/429276/176910.terrain b/public/terrain/18/429276/176910.terrain new file mode 100644 index 000000000..ffa660df8 Binary files /dev/null and b/public/terrain/18/429276/176910.terrain differ diff --git a/public/terrain/18/429276/176911.terrain b/public/terrain/18/429276/176911.terrain new file mode 100644 index 000000000..b080b2479 Binary files /dev/null and b/public/terrain/18/429276/176911.terrain differ diff --git a/public/terrain/18/429276/176912.terrain b/public/terrain/18/429276/176912.terrain new file mode 100644 index 000000000..cf636d338 Binary files /dev/null and b/public/terrain/18/429276/176912.terrain differ diff --git a/public/terrain/18/429276/176913.terrain b/public/terrain/18/429276/176913.terrain new file mode 100644 index 000000000..fdf71dfd8 Binary files /dev/null and b/public/terrain/18/429276/176913.terrain differ diff --git a/public/terrain/18/429276/176914.terrain b/public/terrain/18/429276/176914.terrain new file mode 100644 index 000000000..350df65f7 Binary files /dev/null and b/public/terrain/18/429276/176914.terrain differ diff --git a/public/terrain/18/429276/176915.terrain b/public/terrain/18/429276/176915.terrain new file mode 100644 index 000000000..c735df750 Binary files /dev/null and b/public/terrain/18/429276/176915.terrain differ diff --git a/public/terrain/18/429276/176916.terrain b/public/terrain/18/429276/176916.terrain new file mode 100644 index 000000000..e72471e6f Binary files /dev/null and b/public/terrain/18/429276/176916.terrain differ diff --git a/public/terrain/18/429276/176917.terrain b/public/terrain/18/429276/176917.terrain new file mode 100644 index 000000000..a5d229622 Binary files /dev/null and b/public/terrain/18/429276/176917.terrain differ diff --git a/public/terrain/18/429276/176918.terrain b/public/terrain/18/429276/176918.terrain new file mode 100644 index 000000000..0c6cd09e9 Binary files /dev/null and b/public/terrain/18/429276/176918.terrain differ diff --git a/public/terrain/18/429276/176919.terrain b/public/terrain/18/429276/176919.terrain new file mode 100644 index 000000000..db1ad1e50 Binary files /dev/null and b/public/terrain/18/429276/176919.terrain differ diff --git a/public/terrain/18/429276/176920.terrain b/public/terrain/18/429276/176920.terrain new file mode 100644 index 000000000..55736b986 Binary files /dev/null and b/public/terrain/18/429276/176920.terrain differ diff --git a/public/terrain/18/429276/176921.terrain b/public/terrain/18/429276/176921.terrain new file mode 100644 index 000000000..168d762cd Binary files /dev/null and b/public/terrain/18/429276/176921.terrain differ diff --git a/public/terrain/18/429276/176922.terrain b/public/terrain/18/429276/176922.terrain new file mode 100644 index 000000000..67d4f80d9 Binary files /dev/null and b/public/terrain/18/429276/176922.terrain differ diff --git a/public/terrain/18/429276/176923.terrain b/public/terrain/18/429276/176923.terrain new file mode 100644 index 000000000..8cb58db80 Binary files /dev/null and b/public/terrain/18/429276/176923.terrain differ diff --git a/public/terrain/18/429276/176924.terrain b/public/terrain/18/429276/176924.terrain new file mode 100644 index 000000000..5d0facb5d Binary files /dev/null and b/public/terrain/18/429276/176924.terrain differ diff --git a/public/terrain/18/429276/176925.terrain b/public/terrain/18/429276/176925.terrain new file mode 100644 index 000000000..92966e9d0 Binary files /dev/null and b/public/terrain/18/429276/176925.terrain differ diff --git a/public/terrain/18/429276/176926.terrain b/public/terrain/18/429276/176926.terrain new file mode 100644 index 000000000..76911456d Binary files /dev/null and b/public/terrain/18/429276/176926.terrain differ diff --git a/public/terrain/18/429276/176927.terrain b/public/terrain/18/429276/176927.terrain new file mode 100644 index 000000000..949eebdd1 Binary files /dev/null and b/public/terrain/18/429276/176927.terrain differ diff --git a/public/terrain/18/429276/176928.terrain b/public/terrain/18/429276/176928.terrain new file mode 100644 index 000000000..3ac3ebc83 Binary files /dev/null and b/public/terrain/18/429276/176928.terrain differ diff --git a/public/terrain/18/429276/176929.terrain b/public/terrain/18/429276/176929.terrain new file mode 100644 index 000000000..92dfe8d1d Binary files /dev/null and b/public/terrain/18/429276/176929.terrain differ diff --git a/public/terrain/18/429276/176930.terrain b/public/terrain/18/429276/176930.terrain new file mode 100644 index 000000000..6ee1f9ca4 Binary files /dev/null and b/public/terrain/18/429276/176930.terrain differ diff --git a/public/terrain/18/429276/176931.terrain b/public/terrain/18/429276/176931.terrain new file mode 100644 index 000000000..c27fa5e4f Binary files /dev/null and b/public/terrain/18/429276/176931.terrain differ diff --git a/public/terrain/18/429276/176932.terrain b/public/terrain/18/429276/176932.terrain new file mode 100644 index 000000000..184353aed Binary files /dev/null and b/public/terrain/18/429276/176932.terrain differ diff --git a/public/terrain/18/429276/176933.terrain b/public/terrain/18/429276/176933.terrain new file mode 100644 index 000000000..ff07ef3b3 Binary files /dev/null and b/public/terrain/18/429276/176933.terrain differ diff --git a/public/terrain/18/429276/176934.terrain b/public/terrain/18/429276/176934.terrain new file mode 100644 index 000000000..761a8c3cd Binary files /dev/null and b/public/terrain/18/429276/176934.terrain differ diff --git a/public/terrain/18/429276/176935.terrain b/public/terrain/18/429276/176935.terrain new file mode 100644 index 000000000..94f39ad98 Binary files /dev/null and b/public/terrain/18/429276/176935.terrain differ diff --git a/public/terrain/18/429276/176936.terrain b/public/terrain/18/429276/176936.terrain new file mode 100644 index 000000000..537b199cc Binary files /dev/null and b/public/terrain/18/429276/176936.terrain differ diff --git a/public/terrain/18/429276/176937.terrain b/public/terrain/18/429276/176937.terrain new file mode 100644 index 000000000..a163eeed8 Binary files /dev/null and b/public/terrain/18/429276/176937.terrain differ diff --git a/public/terrain/18/429276/176938.terrain b/public/terrain/18/429276/176938.terrain new file mode 100644 index 000000000..f3aa0f9c0 Binary files /dev/null and b/public/terrain/18/429276/176938.terrain differ diff --git a/public/terrain/18/429276/176939.terrain b/public/terrain/18/429276/176939.terrain new file mode 100644 index 000000000..4b1f1a427 Binary files /dev/null and b/public/terrain/18/429276/176939.terrain differ diff --git a/public/terrain/18/429276/176940.terrain b/public/terrain/18/429276/176940.terrain new file mode 100644 index 000000000..5e84c4347 Binary files /dev/null and b/public/terrain/18/429276/176940.terrain differ diff --git a/public/terrain/18/429276/176941.terrain b/public/terrain/18/429276/176941.terrain new file mode 100644 index 000000000..01dd8497f Binary files /dev/null and b/public/terrain/18/429276/176941.terrain differ diff --git a/public/terrain/18/429276/176942.terrain b/public/terrain/18/429276/176942.terrain new file mode 100644 index 000000000..30ab39de3 Binary files /dev/null and b/public/terrain/18/429276/176942.terrain differ diff --git a/public/terrain/18/429276/176943.terrain b/public/terrain/18/429276/176943.terrain new file mode 100644 index 000000000..d98eb159d Binary files /dev/null and b/public/terrain/18/429276/176943.terrain differ diff --git a/public/terrain/18/429276/176944.terrain b/public/terrain/18/429276/176944.terrain new file mode 100644 index 000000000..4fb865fe4 Binary files /dev/null and b/public/terrain/18/429276/176944.terrain differ diff --git a/public/terrain/18/429276/176945.terrain b/public/terrain/18/429276/176945.terrain new file mode 100644 index 000000000..d50312ea1 Binary files /dev/null and b/public/terrain/18/429276/176945.terrain differ diff --git a/public/terrain/18/429276/176946.terrain b/public/terrain/18/429276/176946.terrain new file mode 100644 index 000000000..a2f4d7350 Binary files /dev/null and b/public/terrain/18/429276/176946.terrain differ diff --git a/public/terrain/18/429276/176947.terrain b/public/terrain/18/429276/176947.terrain new file mode 100644 index 000000000..92eee387d Binary files /dev/null and b/public/terrain/18/429276/176947.terrain differ diff --git a/public/terrain/18/429276/176948.terrain b/public/terrain/18/429276/176948.terrain new file mode 100644 index 000000000..87a58b608 Binary files /dev/null and b/public/terrain/18/429276/176948.terrain differ diff --git a/public/terrain/18/429276/176949.terrain b/public/terrain/18/429276/176949.terrain new file mode 100644 index 000000000..6689640f9 Binary files /dev/null and b/public/terrain/18/429276/176949.terrain differ diff --git a/public/terrain/18/429276/176950.terrain b/public/terrain/18/429276/176950.terrain new file mode 100644 index 000000000..a3d3857cb Binary files /dev/null and b/public/terrain/18/429276/176950.terrain differ diff --git a/public/terrain/18/429276/176951.terrain b/public/terrain/18/429276/176951.terrain new file mode 100644 index 000000000..713d488ab Binary files /dev/null and b/public/terrain/18/429276/176951.terrain differ diff --git a/public/terrain/18/429276/176952.terrain b/public/terrain/18/429276/176952.terrain new file mode 100644 index 000000000..73a0b05f1 Binary files /dev/null and b/public/terrain/18/429276/176952.terrain differ diff --git a/public/terrain/18/429276/176953.terrain b/public/terrain/18/429276/176953.terrain new file mode 100644 index 000000000..bd77187ac Binary files /dev/null and b/public/terrain/18/429276/176953.terrain differ diff --git a/public/terrain/18/429276/176954.terrain b/public/terrain/18/429276/176954.terrain new file mode 100644 index 000000000..6b290035a Binary files /dev/null and b/public/terrain/18/429276/176954.terrain differ diff --git a/public/terrain/18/429276/176955.terrain b/public/terrain/18/429276/176955.terrain new file mode 100644 index 000000000..9bae1ef69 Binary files /dev/null and b/public/terrain/18/429276/176955.terrain differ diff --git a/public/terrain/18/429276/176956.terrain b/public/terrain/18/429276/176956.terrain new file mode 100644 index 000000000..abf761cec Binary files /dev/null and b/public/terrain/18/429276/176956.terrain differ diff --git a/public/terrain/18/429276/176957.terrain b/public/terrain/18/429276/176957.terrain new file mode 100644 index 000000000..127e22d05 Binary files /dev/null and b/public/terrain/18/429276/176957.terrain differ diff --git a/public/terrain/18/429276/176958.terrain b/public/terrain/18/429276/176958.terrain new file mode 100644 index 000000000..029dad52e Binary files /dev/null and b/public/terrain/18/429276/176958.terrain differ diff --git a/public/terrain/18/429276/176959.terrain b/public/terrain/18/429276/176959.terrain new file mode 100644 index 000000000..fa7c1a39d Binary files /dev/null and b/public/terrain/18/429276/176959.terrain differ diff --git a/public/terrain/18/429276/176960.terrain b/public/terrain/18/429276/176960.terrain new file mode 100644 index 000000000..933a645b0 Binary files /dev/null and b/public/terrain/18/429276/176960.terrain differ diff --git a/public/terrain/18/429276/176961.terrain b/public/terrain/18/429276/176961.terrain new file mode 100644 index 000000000..b5b072be1 Binary files /dev/null and b/public/terrain/18/429276/176961.terrain differ diff --git a/public/terrain/18/429276/176962.terrain b/public/terrain/18/429276/176962.terrain new file mode 100644 index 000000000..66e87f00d Binary files /dev/null and b/public/terrain/18/429276/176962.terrain differ diff --git a/public/terrain/18/429276/176963.terrain b/public/terrain/18/429276/176963.terrain new file mode 100644 index 000000000..a731f0b8a Binary files /dev/null and b/public/terrain/18/429276/176963.terrain differ diff --git a/public/terrain/18/429276/176964.terrain b/public/terrain/18/429276/176964.terrain new file mode 100644 index 000000000..cdb947f7a Binary files /dev/null and b/public/terrain/18/429276/176964.terrain differ diff --git a/public/terrain/18/429276/176965.terrain b/public/terrain/18/429276/176965.terrain new file mode 100644 index 000000000..8096efc31 Binary files /dev/null and b/public/terrain/18/429276/176965.terrain differ diff --git a/public/terrain/18/429276/176966.terrain b/public/terrain/18/429276/176966.terrain new file mode 100644 index 000000000..3bd70b2f7 Binary files /dev/null and b/public/terrain/18/429276/176966.terrain differ diff --git a/public/terrain/18/429276/176967.terrain b/public/terrain/18/429276/176967.terrain new file mode 100644 index 000000000..56ac63e7d Binary files /dev/null and b/public/terrain/18/429276/176967.terrain differ diff --git a/public/terrain/18/429276/176968.terrain b/public/terrain/18/429276/176968.terrain new file mode 100644 index 000000000..4e19a88ae Binary files /dev/null and b/public/terrain/18/429276/176968.terrain differ diff --git a/public/terrain/18/429276/176969.terrain b/public/terrain/18/429276/176969.terrain new file mode 100644 index 000000000..482b9bb99 Binary files /dev/null and b/public/terrain/18/429276/176969.terrain differ diff --git a/public/terrain/18/429276/176970.terrain b/public/terrain/18/429276/176970.terrain new file mode 100644 index 000000000..4e8caf28c Binary files /dev/null and b/public/terrain/18/429276/176970.terrain differ diff --git a/public/terrain/18/429276/176971.terrain b/public/terrain/18/429276/176971.terrain new file mode 100644 index 000000000..e8d4a4d9b Binary files /dev/null and b/public/terrain/18/429276/176971.terrain differ diff --git a/public/terrain/18/429276/176972.terrain b/public/terrain/18/429276/176972.terrain new file mode 100644 index 000000000..dd4254f9b Binary files /dev/null and b/public/terrain/18/429276/176972.terrain differ diff --git a/public/terrain/18/429276/176973.terrain b/public/terrain/18/429276/176973.terrain new file mode 100644 index 000000000..172ee4f99 Binary files /dev/null and b/public/terrain/18/429276/176973.terrain differ diff --git a/public/terrain/18/429276/176974.terrain b/public/terrain/18/429276/176974.terrain new file mode 100644 index 000000000..5598a0d9f Binary files /dev/null and b/public/terrain/18/429276/176974.terrain differ diff --git a/public/terrain/18/429276/176975.terrain b/public/terrain/18/429276/176975.terrain new file mode 100644 index 000000000..0626b391f Binary files /dev/null and b/public/terrain/18/429276/176975.terrain differ diff --git a/public/terrain/18/429276/176976.terrain b/public/terrain/18/429276/176976.terrain new file mode 100644 index 000000000..f18ade099 Binary files /dev/null and b/public/terrain/18/429276/176976.terrain differ diff --git a/public/terrain/18/429276/176977.terrain b/public/terrain/18/429276/176977.terrain new file mode 100644 index 000000000..751f23329 Binary files /dev/null and b/public/terrain/18/429276/176977.terrain differ diff --git a/public/terrain/18/429276/176978.terrain b/public/terrain/18/429276/176978.terrain new file mode 100644 index 000000000..f10a19755 Binary files /dev/null and b/public/terrain/18/429276/176978.terrain differ diff --git a/public/terrain/18/429276/176979.terrain b/public/terrain/18/429276/176979.terrain new file mode 100644 index 000000000..45db11ea2 Binary files /dev/null and b/public/terrain/18/429276/176979.terrain differ diff --git a/public/terrain/18/429276/176980.terrain b/public/terrain/18/429276/176980.terrain new file mode 100644 index 000000000..e69f93756 Binary files /dev/null and b/public/terrain/18/429276/176980.terrain differ diff --git a/public/terrain/18/429276/176981.terrain b/public/terrain/18/429276/176981.terrain new file mode 100644 index 000000000..b4e4cf9e2 Binary files /dev/null and b/public/terrain/18/429276/176981.terrain differ diff --git a/public/terrain/18/429276/176982.terrain b/public/terrain/18/429276/176982.terrain new file mode 100644 index 000000000..b53812fdd Binary files /dev/null and b/public/terrain/18/429276/176982.terrain differ diff --git a/public/terrain/18/429276/176983.terrain b/public/terrain/18/429276/176983.terrain new file mode 100644 index 000000000..4a23ea6f2 Binary files /dev/null and b/public/terrain/18/429276/176983.terrain differ diff --git a/public/terrain/18/429276/176984.terrain b/public/terrain/18/429276/176984.terrain new file mode 100644 index 000000000..18e4c5b67 Binary files /dev/null and b/public/terrain/18/429276/176984.terrain differ diff --git a/public/terrain/18/429276/176985.terrain b/public/terrain/18/429276/176985.terrain new file mode 100644 index 000000000..917067af4 Binary files /dev/null and b/public/terrain/18/429276/176985.terrain differ diff --git a/public/terrain/18/429276/176986.terrain b/public/terrain/18/429276/176986.terrain new file mode 100644 index 000000000..26997e7aa Binary files /dev/null and b/public/terrain/18/429276/176986.terrain differ diff --git a/public/terrain/18/429276/176987.terrain b/public/terrain/18/429276/176987.terrain new file mode 100644 index 000000000..a25597ee7 Binary files /dev/null and b/public/terrain/18/429276/176987.terrain differ diff --git a/public/terrain/18/429276/176988.terrain b/public/terrain/18/429276/176988.terrain new file mode 100644 index 000000000..0f43d43ab Binary files /dev/null and b/public/terrain/18/429276/176988.terrain differ diff --git a/public/terrain/18/429276/176989.terrain b/public/terrain/18/429276/176989.terrain new file mode 100644 index 000000000..35e1d7536 Binary files /dev/null and b/public/terrain/18/429276/176989.terrain differ diff --git a/public/terrain/18/429276/176990.terrain b/public/terrain/18/429276/176990.terrain new file mode 100644 index 000000000..3ea20e5d0 Binary files /dev/null and b/public/terrain/18/429276/176990.terrain differ diff --git a/public/terrain/18/429276/176991.terrain b/public/terrain/18/429276/176991.terrain new file mode 100644 index 000000000..cfcfdb278 Binary files /dev/null and b/public/terrain/18/429276/176991.terrain differ diff --git a/public/terrain/18/429276/176992.terrain b/public/terrain/18/429276/176992.terrain new file mode 100644 index 000000000..a52c22293 Binary files /dev/null and b/public/terrain/18/429276/176992.terrain differ diff --git a/public/terrain/18/429276/176993.terrain b/public/terrain/18/429276/176993.terrain new file mode 100644 index 000000000..ef02d9726 Binary files /dev/null and b/public/terrain/18/429276/176993.terrain differ diff --git a/public/terrain/18/429276/176994.terrain b/public/terrain/18/429276/176994.terrain new file mode 100644 index 000000000..0e653c362 Binary files /dev/null and b/public/terrain/18/429276/176994.terrain differ diff --git a/public/terrain/18/429276/176995.terrain b/public/terrain/18/429276/176995.terrain new file mode 100644 index 000000000..e5b8561f9 Binary files /dev/null and b/public/terrain/18/429276/176995.terrain differ diff --git a/public/terrain/18/429276/176996.terrain b/public/terrain/18/429276/176996.terrain new file mode 100644 index 000000000..249511703 Binary files /dev/null and b/public/terrain/18/429276/176996.terrain differ diff --git a/public/terrain/18/429276/176997.terrain b/public/terrain/18/429276/176997.terrain new file mode 100644 index 000000000..e65b9eb97 Binary files /dev/null and b/public/terrain/18/429276/176997.terrain differ diff --git a/public/terrain/18/429276/176998.terrain b/public/terrain/18/429276/176998.terrain new file mode 100644 index 000000000..25ae6d14f Binary files /dev/null and b/public/terrain/18/429276/176998.terrain differ diff --git a/public/terrain/18/429276/176999.terrain b/public/terrain/18/429276/176999.terrain new file mode 100644 index 000000000..e7943b610 Binary files /dev/null and b/public/terrain/18/429276/176999.terrain differ diff --git a/public/terrain/18/429276/177000.terrain b/public/terrain/18/429276/177000.terrain new file mode 100644 index 000000000..29bda94f7 Binary files /dev/null and b/public/terrain/18/429276/177000.terrain differ diff --git a/public/terrain/18/429276/177001.terrain b/public/terrain/18/429276/177001.terrain new file mode 100644 index 000000000..faf92b73a Binary files /dev/null and b/public/terrain/18/429276/177001.terrain differ diff --git a/public/terrain/18/429276/177002.terrain b/public/terrain/18/429276/177002.terrain new file mode 100644 index 000000000..21ebd4c54 Binary files /dev/null and b/public/terrain/18/429276/177002.terrain differ diff --git a/public/terrain/18/429276/177003.terrain b/public/terrain/18/429276/177003.terrain new file mode 100644 index 000000000..520da8f67 Binary files /dev/null and b/public/terrain/18/429276/177003.terrain differ diff --git a/public/terrain/18/429276/177004.terrain b/public/terrain/18/429276/177004.terrain new file mode 100644 index 000000000..08e961353 Binary files /dev/null and b/public/terrain/18/429276/177004.terrain differ diff --git a/public/terrain/18/429276/177005.terrain b/public/terrain/18/429276/177005.terrain new file mode 100644 index 000000000..667eac0e6 Binary files /dev/null and b/public/terrain/18/429276/177005.terrain differ diff --git a/public/terrain/18/429276/177006.terrain b/public/terrain/18/429276/177006.terrain new file mode 100644 index 000000000..530950f6a Binary files /dev/null and b/public/terrain/18/429276/177006.terrain differ diff --git a/public/terrain/18/429276/177007.terrain b/public/terrain/18/429276/177007.terrain new file mode 100644 index 000000000..db95318e3 Binary files /dev/null and b/public/terrain/18/429276/177007.terrain differ diff --git a/public/terrain/18/429276/177008.terrain b/public/terrain/18/429276/177008.terrain new file mode 100644 index 000000000..3a7b6da65 Binary files /dev/null and b/public/terrain/18/429276/177008.terrain differ diff --git a/public/terrain/18/429276/177009.terrain b/public/terrain/18/429276/177009.terrain new file mode 100644 index 000000000..c85e3fe5f Binary files /dev/null and b/public/terrain/18/429276/177009.terrain differ diff --git a/public/terrain/18/429276/177010.terrain b/public/terrain/18/429276/177010.terrain new file mode 100644 index 000000000..a183f1e7a Binary files /dev/null and b/public/terrain/18/429276/177010.terrain differ diff --git a/public/terrain/18/429276/177011.terrain b/public/terrain/18/429276/177011.terrain new file mode 100644 index 000000000..b47e6f262 Binary files /dev/null and b/public/terrain/18/429276/177011.terrain differ diff --git a/public/terrain/18/429276/177012.terrain b/public/terrain/18/429276/177012.terrain new file mode 100644 index 000000000..fd637922b Binary files /dev/null and b/public/terrain/18/429276/177012.terrain differ diff --git a/public/terrain/18/429276/177013.terrain b/public/terrain/18/429276/177013.terrain new file mode 100644 index 000000000..5dee74608 Binary files /dev/null and b/public/terrain/18/429276/177013.terrain differ diff --git a/public/terrain/18/429276/177014.terrain b/public/terrain/18/429276/177014.terrain new file mode 100644 index 000000000..e81205c03 Binary files /dev/null and b/public/terrain/18/429276/177014.terrain differ diff --git a/public/terrain/18/429276/177015.terrain b/public/terrain/18/429276/177015.terrain new file mode 100644 index 000000000..5cb8f1e7c Binary files /dev/null and b/public/terrain/18/429276/177015.terrain differ diff --git a/public/terrain/18/429276/177016.terrain b/public/terrain/18/429276/177016.terrain new file mode 100644 index 000000000..7fc1499e9 Binary files /dev/null and b/public/terrain/18/429276/177016.terrain differ diff --git a/public/terrain/18/429276/177017.terrain b/public/terrain/18/429276/177017.terrain new file mode 100644 index 000000000..d215738fb Binary files /dev/null and b/public/terrain/18/429276/177017.terrain differ diff --git a/public/terrain/18/429276/177018.terrain b/public/terrain/18/429276/177018.terrain new file mode 100644 index 000000000..1fc048542 Binary files /dev/null and b/public/terrain/18/429276/177018.terrain differ diff --git a/public/terrain/18/429276/177019.terrain b/public/terrain/18/429276/177019.terrain new file mode 100644 index 000000000..e281067eb Binary files /dev/null and b/public/terrain/18/429276/177019.terrain differ diff --git a/public/terrain/18/429276/177020.terrain b/public/terrain/18/429276/177020.terrain new file mode 100644 index 000000000..75603f7f0 Binary files /dev/null and b/public/terrain/18/429276/177020.terrain differ diff --git a/public/terrain/18/429276/177021.terrain b/public/terrain/18/429276/177021.terrain new file mode 100644 index 000000000..4d98e9fd9 Binary files /dev/null and b/public/terrain/18/429276/177021.terrain differ diff --git a/public/terrain/18/429276/177022.terrain b/public/terrain/18/429276/177022.terrain new file mode 100644 index 000000000..b50389edc Binary files /dev/null and b/public/terrain/18/429276/177022.terrain differ diff --git a/public/terrain/18/429276/177023.terrain b/public/terrain/18/429276/177023.terrain new file mode 100644 index 000000000..afc25d19d Binary files /dev/null and b/public/terrain/18/429276/177023.terrain differ diff --git a/public/terrain/18/429276/177024.terrain b/public/terrain/18/429276/177024.terrain new file mode 100644 index 000000000..0d4a418f4 Binary files /dev/null and b/public/terrain/18/429276/177024.terrain differ diff --git a/public/terrain/18/429276/177025.terrain b/public/terrain/18/429276/177025.terrain new file mode 100644 index 000000000..e04456abb Binary files /dev/null and b/public/terrain/18/429276/177025.terrain differ diff --git a/public/terrain/18/429276/177026.terrain b/public/terrain/18/429276/177026.terrain new file mode 100644 index 000000000..1c8c0fc94 Binary files /dev/null and b/public/terrain/18/429276/177026.terrain differ diff --git a/public/terrain/18/429276/177027.terrain b/public/terrain/18/429276/177027.terrain new file mode 100644 index 000000000..441e281df Binary files /dev/null and b/public/terrain/18/429276/177027.terrain differ diff --git a/public/terrain/18/429276/177028.terrain b/public/terrain/18/429276/177028.terrain new file mode 100644 index 000000000..2d1e89cbe Binary files /dev/null and b/public/terrain/18/429276/177028.terrain differ diff --git a/public/terrain/18/429276/177029.terrain b/public/terrain/18/429276/177029.terrain new file mode 100644 index 000000000..e7da916ed Binary files /dev/null and b/public/terrain/18/429276/177029.terrain differ diff --git a/public/terrain/18/429277/176871.terrain b/public/terrain/18/429277/176871.terrain new file mode 100644 index 000000000..f43feb9ad Binary files /dev/null and b/public/terrain/18/429277/176871.terrain differ diff --git a/public/terrain/18/429277/176872.terrain b/public/terrain/18/429277/176872.terrain new file mode 100644 index 000000000..ed313e70c Binary files /dev/null and b/public/terrain/18/429277/176872.terrain differ diff --git a/public/terrain/18/429277/176873.terrain b/public/terrain/18/429277/176873.terrain new file mode 100644 index 000000000..8f988c596 Binary files /dev/null and b/public/terrain/18/429277/176873.terrain differ diff --git a/public/terrain/18/429277/176874.terrain b/public/terrain/18/429277/176874.terrain new file mode 100644 index 000000000..377dbdbde Binary files /dev/null and b/public/terrain/18/429277/176874.terrain differ diff --git a/public/terrain/18/429277/176875.terrain b/public/terrain/18/429277/176875.terrain new file mode 100644 index 000000000..0c67bb908 Binary files /dev/null and b/public/terrain/18/429277/176875.terrain differ diff --git a/public/terrain/18/429277/176876.terrain b/public/terrain/18/429277/176876.terrain new file mode 100644 index 000000000..01045d4d6 Binary files /dev/null and b/public/terrain/18/429277/176876.terrain differ diff --git a/public/terrain/18/429277/176877.terrain b/public/terrain/18/429277/176877.terrain new file mode 100644 index 000000000..b906f4bb6 Binary files /dev/null and b/public/terrain/18/429277/176877.terrain differ diff --git a/public/terrain/18/429277/176878.terrain b/public/terrain/18/429277/176878.terrain new file mode 100644 index 000000000..8996194f1 Binary files /dev/null and b/public/terrain/18/429277/176878.terrain differ diff --git a/public/terrain/18/429277/176879.terrain b/public/terrain/18/429277/176879.terrain new file mode 100644 index 000000000..0a8a83e55 Binary files /dev/null and b/public/terrain/18/429277/176879.terrain differ diff --git a/public/terrain/18/429277/176880.terrain b/public/terrain/18/429277/176880.terrain new file mode 100644 index 000000000..0004078ba Binary files /dev/null and b/public/terrain/18/429277/176880.terrain differ diff --git a/public/terrain/18/429277/176881.terrain b/public/terrain/18/429277/176881.terrain new file mode 100644 index 000000000..e2de91915 Binary files /dev/null and b/public/terrain/18/429277/176881.terrain differ diff --git a/public/terrain/18/429277/176882.terrain b/public/terrain/18/429277/176882.terrain new file mode 100644 index 000000000..97a981a58 Binary files /dev/null and b/public/terrain/18/429277/176882.terrain differ diff --git a/public/terrain/18/429277/176883.terrain b/public/terrain/18/429277/176883.terrain new file mode 100644 index 000000000..5930a09bf Binary files /dev/null and b/public/terrain/18/429277/176883.terrain differ diff --git a/public/terrain/18/429277/176884.terrain b/public/terrain/18/429277/176884.terrain new file mode 100644 index 000000000..cde5d7f22 Binary files /dev/null and b/public/terrain/18/429277/176884.terrain differ diff --git a/public/terrain/18/429277/176885.terrain b/public/terrain/18/429277/176885.terrain new file mode 100644 index 000000000..aa68c5063 Binary files /dev/null and b/public/terrain/18/429277/176885.terrain differ diff --git a/public/terrain/18/429277/176886.terrain b/public/terrain/18/429277/176886.terrain new file mode 100644 index 000000000..84837eae1 Binary files /dev/null and b/public/terrain/18/429277/176886.terrain differ diff --git a/public/terrain/18/429277/176887.terrain b/public/terrain/18/429277/176887.terrain new file mode 100644 index 000000000..ae436b0ce Binary files /dev/null and b/public/terrain/18/429277/176887.terrain differ diff --git a/public/terrain/18/429277/176888.terrain b/public/terrain/18/429277/176888.terrain new file mode 100644 index 000000000..f73608b29 Binary files /dev/null and b/public/terrain/18/429277/176888.terrain differ diff --git a/public/terrain/18/429277/176889.terrain b/public/terrain/18/429277/176889.terrain new file mode 100644 index 000000000..a97038b2d Binary files /dev/null and b/public/terrain/18/429277/176889.terrain differ diff --git a/public/terrain/18/429277/176890.terrain b/public/terrain/18/429277/176890.terrain new file mode 100644 index 000000000..1706cebd7 Binary files /dev/null and b/public/terrain/18/429277/176890.terrain differ diff --git a/public/terrain/18/429277/176891.terrain b/public/terrain/18/429277/176891.terrain new file mode 100644 index 000000000..be5f8350a Binary files /dev/null and b/public/terrain/18/429277/176891.terrain differ diff --git a/public/terrain/18/429277/176892.terrain b/public/terrain/18/429277/176892.terrain new file mode 100644 index 000000000..94a889d47 Binary files /dev/null and b/public/terrain/18/429277/176892.terrain differ diff --git a/public/terrain/18/429277/176893.terrain b/public/terrain/18/429277/176893.terrain new file mode 100644 index 000000000..44dbe9969 Binary files /dev/null and b/public/terrain/18/429277/176893.terrain differ diff --git a/public/terrain/18/429277/176894.terrain b/public/terrain/18/429277/176894.terrain new file mode 100644 index 000000000..1816d1b11 Binary files /dev/null and b/public/terrain/18/429277/176894.terrain differ diff --git a/public/terrain/18/429277/176895.terrain b/public/terrain/18/429277/176895.terrain new file mode 100644 index 000000000..603dc5fdd Binary files /dev/null and b/public/terrain/18/429277/176895.terrain differ diff --git a/public/terrain/18/429277/176896.terrain b/public/terrain/18/429277/176896.terrain new file mode 100644 index 000000000..1031231a9 Binary files /dev/null and b/public/terrain/18/429277/176896.terrain differ diff --git a/public/terrain/18/429277/176897.terrain b/public/terrain/18/429277/176897.terrain new file mode 100644 index 000000000..cfc52cd61 Binary files /dev/null and b/public/terrain/18/429277/176897.terrain differ diff --git a/public/terrain/18/429277/176898.terrain b/public/terrain/18/429277/176898.terrain new file mode 100644 index 000000000..cc5e59145 Binary files /dev/null and b/public/terrain/18/429277/176898.terrain differ diff --git a/public/terrain/18/429277/176899.terrain b/public/terrain/18/429277/176899.terrain new file mode 100644 index 000000000..3d94aa649 Binary files /dev/null and b/public/terrain/18/429277/176899.terrain differ diff --git a/public/terrain/18/429277/176900.terrain b/public/terrain/18/429277/176900.terrain new file mode 100644 index 000000000..381f17b86 Binary files /dev/null and b/public/terrain/18/429277/176900.terrain differ diff --git a/public/terrain/18/429277/176901.terrain b/public/terrain/18/429277/176901.terrain new file mode 100644 index 000000000..f7b0e44ff Binary files /dev/null and b/public/terrain/18/429277/176901.terrain differ diff --git a/public/terrain/18/429277/176902.terrain b/public/terrain/18/429277/176902.terrain new file mode 100644 index 000000000..52afe2d42 Binary files /dev/null and b/public/terrain/18/429277/176902.terrain differ diff --git a/public/terrain/18/429277/176903.terrain b/public/terrain/18/429277/176903.terrain new file mode 100644 index 000000000..cf0890aec Binary files /dev/null and b/public/terrain/18/429277/176903.terrain differ diff --git a/public/terrain/18/429277/176904.terrain b/public/terrain/18/429277/176904.terrain new file mode 100644 index 000000000..41cf4d09d Binary files /dev/null and b/public/terrain/18/429277/176904.terrain differ diff --git a/public/terrain/18/429277/176905.terrain b/public/terrain/18/429277/176905.terrain new file mode 100644 index 000000000..03b9474a8 Binary files /dev/null and b/public/terrain/18/429277/176905.terrain differ diff --git a/public/terrain/18/429277/176906.terrain b/public/terrain/18/429277/176906.terrain new file mode 100644 index 000000000..0cc56158f Binary files /dev/null and b/public/terrain/18/429277/176906.terrain differ diff --git a/public/terrain/18/429277/176907.terrain b/public/terrain/18/429277/176907.terrain new file mode 100644 index 000000000..aeec30b84 Binary files /dev/null and b/public/terrain/18/429277/176907.terrain differ diff --git a/public/terrain/18/429277/176908.terrain b/public/terrain/18/429277/176908.terrain new file mode 100644 index 000000000..922dc7cc6 Binary files /dev/null and b/public/terrain/18/429277/176908.terrain differ diff --git a/public/terrain/18/429277/176909.terrain b/public/terrain/18/429277/176909.terrain new file mode 100644 index 000000000..5082d1a05 Binary files /dev/null and b/public/terrain/18/429277/176909.terrain differ diff --git a/public/terrain/18/429277/176910.terrain b/public/terrain/18/429277/176910.terrain new file mode 100644 index 000000000..2a3e7c291 Binary files /dev/null and b/public/terrain/18/429277/176910.terrain differ diff --git a/public/terrain/18/429277/176911.terrain b/public/terrain/18/429277/176911.terrain new file mode 100644 index 000000000..d888e5e9a Binary files /dev/null and b/public/terrain/18/429277/176911.terrain differ diff --git a/public/terrain/18/429277/176912.terrain b/public/terrain/18/429277/176912.terrain new file mode 100644 index 000000000..6a7846082 Binary files /dev/null and b/public/terrain/18/429277/176912.terrain differ diff --git a/public/terrain/18/429277/176913.terrain b/public/terrain/18/429277/176913.terrain new file mode 100644 index 000000000..744ff7d52 Binary files /dev/null and b/public/terrain/18/429277/176913.terrain differ diff --git a/public/terrain/18/429277/176914.terrain b/public/terrain/18/429277/176914.terrain new file mode 100644 index 000000000..667081840 Binary files /dev/null and b/public/terrain/18/429277/176914.terrain differ diff --git a/public/terrain/18/429277/176915.terrain b/public/terrain/18/429277/176915.terrain new file mode 100644 index 000000000..4ef15b236 Binary files /dev/null and b/public/terrain/18/429277/176915.terrain differ diff --git a/public/terrain/18/429277/176916.terrain b/public/terrain/18/429277/176916.terrain new file mode 100644 index 000000000..b922c514a Binary files /dev/null and b/public/terrain/18/429277/176916.terrain differ diff --git a/public/terrain/18/429277/176917.terrain b/public/terrain/18/429277/176917.terrain new file mode 100644 index 000000000..17637fe70 Binary files /dev/null and b/public/terrain/18/429277/176917.terrain differ diff --git a/public/terrain/18/429277/176918.terrain b/public/terrain/18/429277/176918.terrain new file mode 100644 index 000000000..12aee546b Binary files /dev/null and b/public/terrain/18/429277/176918.terrain differ diff --git a/public/terrain/18/429277/176919.terrain b/public/terrain/18/429277/176919.terrain new file mode 100644 index 000000000..40fb9bef2 Binary files /dev/null and b/public/terrain/18/429277/176919.terrain differ diff --git a/public/terrain/18/429277/176920.terrain b/public/terrain/18/429277/176920.terrain new file mode 100644 index 000000000..5fc386edd Binary files /dev/null and b/public/terrain/18/429277/176920.terrain differ diff --git a/public/terrain/18/429277/176921.terrain b/public/terrain/18/429277/176921.terrain new file mode 100644 index 000000000..417dbac5e Binary files /dev/null and b/public/terrain/18/429277/176921.terrain differ diff --git a/public/terrain/18/429277/176922.terrain b/public/terrain/18/429277/176922.terrain new file mode 100644 index 000000000..9f785f56a Binary files /dev/null and b/public/terrain/18/429277/176922.terrain differ diff --git a/public/terrain/18/429277/176923.terrain b/public/terrain/18/429277/176923.terrain new file mode 100644 index 000000000..fe8f8be5a Binary files /dev/null and b/public/terrain/18/429277/176923.terrain differ diff --git a/public/terrain/18/429277/176924.terrain b/public/terrain/18/429277/176924.terrain new file mode 100644 index 000000000..59d425f26 Binary files /dev/null and b/public/terrain/18/429277/176924.terrain differ diff --git a/public/terrain/18/429277/176925.terrain b/public/terrain/18/429277/176925.terrain new file mode 100644 index 000000000..1aea137fc Binary files /dev/null and b/public/terrain/18/429277/176925.terrain differ diff --git a/public/terrain/18/429277/176926.terrain b/public/terrain/18/429277/176926.terrain new file mode 100644 index 000000000..cbc67c639 Binary files /dev/null and b/public/terrain/18/429277/176926.terrain differ diff --git a/public/terrain/18/429277/176927.terrain b/public/terrain/18/429277/176927.terrain new file mode 100644 index 000000000..fc5d72a79 Binary files /dev/null and b/public/terrain/18/429277/176927.terrain differ diff --git a/public/terrain/18/429277/176928.terrain b/public/terrain/18/429277/176928.terrain new file mode 100644 index 000000000..5e226510f Binary files /dev/null and b/public/terrain/18/429277/176928.terrain differ diff --git a/public/terrain/18/429277/176929.terrain b/public/terrain/18/429277/176929.terrain new file mode 100644 index 000000000..7791087a8 Binary files /dev/null and b/public/terrain/18/429277/176929.terrain differ diff --git a/public/terrain/18/429277/176930.terrain b/public/terrain/18/429277/176930.terrain new file mode 100644 index 000000000..71670bf4c Binary files /dev/null and b/public/terrain/18/429277/176930.terrain differ diff --git a/public/terrain/18/429277/176931.terrain b/public/terrain/18/429277/176931.terrain new file mode 100644 index 000000000..d7c79bdd1 Binary files /dev/null and b/public/terrain/18/429277/176931.terrain differ diff --git a/public/terrain/18/429277/176932.terrain b/public/terrain/18/429277/176932.terrain new file mode 100644 index 000000000..043544652 Binary files /dev/null and b/public/terrain/18/429277/176932.terrain differ diff --git a/public/terrain/18/429277/176933.terrain b/public/terrain/18/429277/176933.terrain new file mode 100644 index 000000000..50d75ee82 Binary files /dev/null and b/public/terrain/18/429277/176933.terrain differ diff --git a/public/terrain/18/429277/176934.terrain b/public/terrain/18/429277/176934.terrain new file mode 100644 index 000000000..1ee2b283e Binary files /dev/null and b/public/terrain/18/429277/176934.terrain differ diff --git a/public/terrain/18/429277/176935.terrain b/public/terrain/18/429277/176935.terrain new file mode 100644 index 000000000..cc043bff6 Binary files /dev/null and b/public/terrain/18/429277/176935.terrain differ diff --git a/public/terrain/18/429277/176936.terrain b/public/terrain/18/429277/176936.terrain new file mode 100644 index 000000000..e3ac9f653 Binary files /dev/null and b/public/terrain/18/429277/176936.terrain differ diff --git a/public/terrain/18/429277/176937.terrain b/public/terrain/18/429277/176937.terrain new file mode 100644 index 000000000..62908f7e9 Binary files /dev/null and b/public/terrain/18/429277/176937.terrain differ diff --git a/public/terrain/18/429277/176938.terrain b/public/terrain/18/429277/176938.terrain new file mode 100644 index 000000000..ae7758a85 Binary files /dev/null and b/public/terrain/18/429277/176938.terrain differ diff --git a/public/terrain/18/429277/176939.terrain b/public/terrain/18/429277/176939.terrain new file mode 100644 index 000000000..aa9a20b33 Binary files /dev/null and b/public/terrain/18/429277/176939.terrain differ diff --git a/public/terrain/18/429277/176940.terrain b/public/terrain/18/429277/176940.terrain new file mode 100644 index 000000000..820fe95c3 Binary files /dev/null and b/public/terrain/18/429277/176940.terrain differ diff --git a/public/terrain/18/429277/176941.terrain b/public/terrain/18/429277/176941.terrain new file mode 100644 index 000000000..c285426fd Binary files /dev/null and b/public/terrain/18/429277/176941.terrain differ diff --git a/public/terrain/18/429277/176942.terrain b/public/terrain/18/429277/176942.terrain new file mode 100644 index 000000000..b73736450 Binary files /dev/null and b/public/terrain/18/429277/176942.terrain differ diff --git a/public/terrain/18/429277/176943.terrain b/public/terrain/18/429277/176943.terrain new file mode 100644 index 000000000..994b31594 Binary files /dev/null and b/public/terrain/18/429277/176943.terrain differ diff --git a/public/terrain/18/429277/176944.terrain b/public/terrain/18/429277/176944.terrain new file mode 100644 index 000000000..43c45a42e Binary files /dev/null and b/public/terrain/18/429277/176944.terrain differ diff --git a/public/terrain/18/429277/176945.terrain b/public/terrain/18/429277/176945.terrain new file mode 100644 index 000000000..831601f76 Binary files /dev/null and b/public/terrain/18/429277/176945.terrain differ diff --git a/public/terrain/18/429277/176946.terrain b/public/terrain/18/429277/176946.terrain new file mode 100644 index 000000000..24e92784c Binary files /dev/null and b/public/terrain/18/429277/176946.terrain differ diff --git a/public/terrain/18/429277/176947.terrain b/public/terrain/18/429277/176947.terrain new file mode 100644 index 000000000..8da52fa01 Binary files /dev/null and b/public/terrain/18/429277/176947.terrain differ diff --git a/public/terrain/18/429277/176948.terrain b/public/terrain/18/429277/176948.terrain new file mode 100644 index 000000000..38028174c Binary files /dev/null and b/public/terrain/18/429277/176948.terrain differ diff --git a/public/terrain/18/429277/176949.terrain b/public/terrain/18/429277/176949.terrain new file mode 100644 index 000000000..4ca418324 Binary files /dev/null and b/public/terrain/18/429277/176949.terrain differ diff --git a/public/terrain/18/429277/176950.terrain b/public/terrain/18/429277/176950.terrain new file mode 100644 index 000000000..dab19d0bf Binary files /dev/null and b/public/terrain/18/429277/176950.terrain differ diff --git a/public/terrain/18/429277/176951.terrain b/public/terrain/18/429277/176951.terrain new file mode 100644 index 000000000..73f4d2066 Binary files /dev/null and b/public/terrain/18/429277/176951.terrain differ diff --git a/public/terrain/18/429277/176952.terrain b/public/terrain/18/429277/176952.terrain new file mode 100644 index 000000000..472c17107 Binary files /dev/null and b/public/terrain/18/429277/176952.terrain differ diff --git a/public/terrain/18/429277/176953.terrain b/public/terrain/18/429277/176953.terrain new file mode 100644 index 000000000..49926c5d0 Binary files /dev/null and b/public/terrain/18/429277/176953.terrain differ diff --git a/public/terrain/18/429277/176954.terrain b/public/terrain/18/429277/176954.terrain new file mode 100644 index 000000000..935dbff57 Binary files /dev/null and b/public/terrain/18/429277/176954.terrain differ diff --git a/public/terrain/18/429277/176955.terrain b/public/terrain/18/429277/176955.terrain new file mode 100644 index 000000000..be50300c2 Binary files /dev/null and b/public/terrain/18/429277/176955.terrain differ diff --git a/public/terrain/18/429277/176956.terrain b/public/terrain/18/429277/176956.terrain new file mode 100644 index 000000000..5d395bb27 Binary files /dev/null and b/public/terrain/18/429277/176956.terrain differ diff --git a/public/terrain/18/429277/176957.terrain b/public/terrain/18/429277/176957.terrain new file mode 100644 index 000000000..1d0d56a4b Binary files /dev/null and b/public/terrain/18/429277/176957.terrain differ diff --git a/public/terrain/18/429277/176958.terrain b/public/terrain/18/429277/176958.terrain new file mode 100644 index 000000000..fd0139627 Binary files /dev/null and b/public/terrain/18/429277/176958.terrain differ diff --git a/public/terrain/18/429277/176959.terrain b/public/terrain/18/429277/176959.terrain new file mode 100644 index 000000000..11f45a86b Binary files /dev/null and b/public/terrain/18/429277/176959.terrain differ diff --git a/public/terrain/18/429277/176960.terrain b/public/terrain/18/429277/176960.terrain new file mode 100644 index 000000000..4f0aaa154 Binary files /dev/null and b/public/terrain/18/429277/176960.terrain differ diff --git a/public/terrain/18/429277/176961.terrain b/public/terrain/18/429277/176961.terrain new file mode 100644 index 000000000..d64c58964 Binary files /dev/null and b/public/terrain/18/429277/176961.terrain differ diff --git a/public/terrain/18/429277/176962.terrain b/public/terrain/18/429277/176962.terrain new file mode 100644 index 000000000..60980e5f2 Binary files /dev/null and b/public/terrain/18/429277/176962.terrain differ diff --git a/public/terrain/18/429277/176963.terrain b/public/terrain/18/429277/176963.terrain new file mode 100644 index 000000000..55d40f653 Binary files /dev/null and b/public/terrain/18/429277/176963.terrain differ diff --git a/public/terrain/18/429277/176964.terrain b/public/terrain/18/429277/176964.terrain new file mode 100644 index 000000000..3a08b9554 Binary files /dev/null and b/public/terrain/18/429277/176964.terrain differ diff --git a/public/terrain/18/429277/176965.terrain b/public/terrain/18/429277/176965.terrain new file mode 100644 index 000000000..96fe81fea Binary files /dev/null and b/public/terrain/18/429277/176965.terrain differ diff --git a/public/terrain/18/429277/176966.terrain b/public/terrain/18/429277/176966.terrain new file mode 100644 index 000000000..669617778 Binary files /dev/null and b/public/terrain/18/429277/176966.terrain differ diff --git a/public/terrain/18/429277/176967.terrain b/public/terrain/18/429277/176967.terrain new file mode 100644 index 000000000..8f838dca2 Binary files /dev/null and b/public/terrain/18/429277/176967.terrain differ diff --git a/public/terrain/18/429277/176968.terrain b/public/terrain/18/429277/176968.terrain new file mode 100644 index 000000000..fa20ebd56 Binary files /dev/null and b/public/terrain/18/429277/176968.terrain differ diff --git a/public/terrain/18/429277/176969.terrain b/public/terrain/18/429277/176969.terrain new file mode 100644 index 000000000..5a7921e7b Binary files /dev/null and b/public/terrain/18/429277/176969.terrain differ diff --git a/public/terrain/18/429277/176970.terrain b/public/terrain/18/429277/176970.terrain new file mode 100644 index 000000000..5a687e44c Binary files /dev/null and b/public/terrain/18/429277/176970.terrain differ diff --git a/public/terrain/18/429277/176971.terrain b/public/terrain/18/429277/176971.terrain new file mode 100644 index 000000000..1aa142659 Binary files /dev/null and b/public/terrain/18/429277/176971.terrain differ diff --git a/public/terrain/18/429277/176972.terrain b/public/terrain/18/429277/176972.terrain new file mode 100644 index 000000000..09ae0e286 Binary files /dev/null and b/public/terrain/18/429277/176972.terrain differ diff --git a/public/terrain/18/429277/176973.terrain b/public/terrain/18/429277/176973.terrain new file mode 100644 index 000000000..bf63d521d Binary files /dev/null and b/public/terrain/18/429277/176973.terrain differ diff --git a/public/terrain/18/429277/176974.terrain b/public/terrain/18/429277/176974.terrain new file mode 100644 index 000000000..9c57df0f8 Binary files /dev/null and b/public/terrain/18/429277/176974.terrain differ diff --git a/public/terrain/18/429277/176975.terrain b/public/terrain/18/429277/176975.terrain new file mode 100644 index 000000000..f3002d69b Binary files /dev/null and b/public/terrain/18/429277/176975.terrain differ diff --git a/public/terrain/18/429277/176976.terrain b/public/terrain/18/429277/176976.terrain new file mode 100644 index 000000000..ed1051020 Binary files /dev/null and b/public/terrain/18/429277/176976.terrain differ diff --git a/public/terrain/18/429277/176977.terrain b/public/terrain/18/429277/176977.terrain new file mode 100644 index 000000000..13e806a0e Binary files /dev/null and b/public/terrain/18/429277/176977.terrain differ diff --git a/public/terrain/18/429277/176978.terrain b/public/terrain/18/429277/176978.terrain new file mode 100644 index 000000000..f6a287b9e Binary files /dev/null and b/public/terrain/18/429277/176978.terrain differ diff --git a/public/terrain/18/429277/176979.terrain b/public/terrain/18/429277/176979.terrain new file mode 100644 index 000000000..092983c6b Binary files /dev/null and b/public/terrain/18/429277/176979.terrain differ diff --git a/public/terrain/18/429277/176980.terrain b/public/terrain/18/429277/176980.terrain new file mode 100644 index 000000000..a563419fe Binary files /dev/null and b/public/terrain/18/429277/176980.terrain differ diff --git a/public/terrain/18/429277/176981.terrain b/public/terrain/18/429277/176981.terrain new file mode 100644 index 000000000..863b13058 Binary files /dev/null and b/public/terrain/18/429277/176981.terrain differ diff --git a/public/terrain/18/429277/176982.terrain b/public/terrain/18/429277/176982.terrain new file mode 100644 index 000000000..a87232bc1 Binary files /dev/null and b/public/terrain/18/429277/176982.terrain differ diff --git a/public/terrain/18/429277/176983.terrain b/public/terrain/18/429277/176983.terrain new file mode 100644 index 000000000..2c004db66 Binary files /dev/null and b/public/terrain/18/429277/176983.terrain differ diff --git a/public/terrain/18/429277/176984.terrain b/public/terrain/18/429277/176984.terrain new file mode 100644 index 000000000..5984d2002 Binary files /dev/null and b/public/terrain/18/429277/176984.terrain differ diff --git a/public/terrain/18/429277/176985.terrain b/public/terrain/18/429277/176985.terrain new file mode 100644 index 000000000..f55ca4cf3 Binary files /dev/null and b/public/terrain/18/429277/176985.terrain differ diff --git a/public/terrain/18/429277/176986.terrain b/public/terrain/18/429277/176986.terrain new file mode 100644 index 000000000..ce0cac7f5 Binary files /dev/null and b/public/terrain/18/429277/176986.terrain differ diff --git a/public/terrain/18/429277/176987.terrain b/public/terrain/18/429277/176987.terrain new file mode 100644 index 000000000..d6befdfaa Binary files /dev/null and b/public/terrain/18/429277/176987.terrain differ diff --git a/public/terrain/18/429277/176988.terrain b/public/terrain/18/429277/176988.terrain new file mode 100644 index 000000000..9bd16c711 Binary files /dev/null and b/public/terrain/18/429277/176988.terrain differ diff --git a/public/terrain/18/429277/176989.terrain b/public/terrain/18/429277/176989.terrain new file mode 100644 index 000000000..15ec829d9 Binary files /dev/null and b/public/terrain/18/429277/176989.terrain differ diff --git a/public/terrain/18/429277/176990.terrain b/public/terrain/18/429277/176990.terrain new file mode 100644 index 000000000..12a7bfc21 Binary files /dev/null and b/public/terrain/18/429277/176990.terrain differ diff --git a/public/terrain/18/429277/176991.terrain b/public/terrain/18/429277/176991.terrain new file mode 100644 index 000000000..03a3770fa Binary files /dev/null and b/public/terrain/18/429277/176991.terrain differ diff --git a/public/terrain/18/429277/176992.terrain b/public/terrain/18/429277/176992.terrain new file mode 100644 index 000000000..82f5effa8 Binary files /dev/null and b/public/terrain/18/429277/176992.terrain differ diff --git a/public/terrain/18/429277/176993.terrain b/public/terrain/18/429277/176993.terrain new file mode 100644 index 000000000..625798e4c Binary files /dev/null and b/public/terrain/18/429277/176993.terrain differ diff --git a/public/terrain/18/429277/176994.terrain b/public/terrain/18/429277/176994.terrain new file mode 100644 index 000000000..6d43d4093 Binary files /dev/null and b/public/terrain/18/429277/176994.terrain differ diff --git a/public/terrain/18/429277/176995.terrain b/public/terrain/18/429277/176995.terrain new file mode 100644 index 000000000..bf9f5ac8f Binary files /dev/null and b/public/terrain/18/429277/176995.terrain differ diff --git a/public/terrain/18/429277/176996.terrain b/public/terrain/18/429277/176996.terrain new file mode 100644 index 000000000..117e2dc0f Binary files /dev/null and b/public/terrain/18/429277/176996.terrain differ diff --git a/public/terrain/18/429277/176997.terrain b/public/terrain/18/429277/176997.terrain new file mode 100644 index 000000000..da505ed8b Binary files /dev/null and b/public/terrain/18/429277/176997.terrain differ diff --git a/public/terrain/18/429277/176998.terrain b/public/terrain/18/429277/176998.terrain new file mode 100644 index 000000000..efb66e97c Binary files /dev/null and b/public/terrain/18/429277/176998.terrain differ diff --git a/public/terrain/18/429277/176999.terrain b/public/terrain/18/429277/176999.terrain new file mode 100644 index 000000000..ea49b082f Binary files /dev/null and b/public/terrain/18/429277/176999.terrain differ diff --git a/public/terrain/18/429277/177000.terrain b/public/terrain/18/429277/177000.terrain new file mode 100644 index 000000000..ee07dcb8a Binary files /dev/null and b/public/terrain/18/429277/177000.terrain differ diff --git a/public/terrain/18/429277/177001.terrain b/public/terrain/18/429277/177001.terrain new file mode 100644 index 000000000..184d4d2f6 Binary files /dev/null and b/public/terrain/18/429277/177001.terrain differ diff --git a/public/terrain/18/429277/177002.terrain b/public/terrain/18/429277/177002.terrain new file mode 100644 index 000000000..523743783 Binary files /dev/null and b/public/terrain/18/429277/177002.terrain differ diff --git a/public/terrain/18/429277/177003.terrain b/public/terrain/18/429277/177003.terrain new file mode 100644 index 000000000..f882fb647 Binary files /dev/null and b/public/terrain/18/429277/177003.terrain differ diff --git a/public/terrain/18/429277/177004.terrain b/public/terrain/18/429277/177004.terrain new file mode 100644 index 000000000..8946c95bd Binary files /dev/null and b/public/terrain/18/429277/177004.terrain differ diff --git a/public/terrain/18/429277/177005.terrain b/public/terrain/18/429277/177005.terrain new file mode 100644 index 000000000..5561373a6 Binary files /dev/null and b/public/terrain/18/429277/177005.terrain differ diff --git a/public/terrain/18/429277/177006.terrain b/public/terrain/18/429277/177006.terrain new file mode 100644 index 000000000..d679cb151 Binary files /dev/null and b/public/terrain/18/429277/177006.terrain differ diff --git a/public/terrain/18/429277/177007.terrain b/public/terrain/18/429277/177007.terrain new file mode 100644 index 000000000..7595a3ee3 Binary files /dev/null and b/public/terrain/18/429277/177007.terrain differ diff --git a/public/terrain/18/429277/177008.terrain b/public/terrain/18/429277/177008.terrain new file mode 100644 index 000000000..5f867a52a Binary files /dev/null and b/public/terrain/18/429277/177008.terrain differ diff --git a/public/terrain/18/429277/177009.terrain b/public/terrain/18/429277/177009.terrain new file mode 100644 index 000000000..fefd525bc Binary files /dev/null and b/public/terrain/18/429277/177009.terrain differ diff --git a/public/terrain/18/429277/177010.terrain b/public/terrain/18/429277/177010.terrain new file mode 100644 index 000000000..68d7a1e3a Binary files /dev/null and b/public/terrain/18/429277/177010.terrain differ diff --git a/public/terrain/18/429277/177011.terrain b/public/terrain/18/429277/177011.terrain new file mode 100644 index 000000000..2109dcc36 Binary files /dev/null and b/public/terrain/18/429277/177011.terrain differ diff --git a/public/terrain/18/429277/177012.terrain b/public/terrain/18/429277/177012.terrain new file mode 100644 index 000000000..ccbf55efd Binary files /dev/null and b/public/terrain/18/429277/177012.terrain differ diff --git a/public/terrain/18/429277/177013.terrain b/public/terrain/18/429277/177013.terrain new file mode 100644 index 000000000..703c4f0f7 Binary files /dev/null and b/public/terrain/18/429277/177013.terrain differ diff --git a/public/terrain/18/429277/177014.terrain b/public/terrain/18/429277/177014.terrain new file mode 100644 index 000000000..a9b1fada2 Binary files /dev/null and b/public/terrain/18/429277/177014.terrain differ diff --git a/public/terrain/18/429277/177015.terrain b/public/terrain/18/429277/177015.terrain new file mode 100644 index 000000000..5deebb26b Binary files /dev/null and b/public/terrain/18/429277/177015.terrain differ diff --git a/public/terrain/18/429277/177016.terrain b/public/terrain/18/429277/177016.terrain new file mode 100644 index 000000000..808d6abae Binary files /dev/null and b/public/terrain/18/429277/177016.terrain differ diff --git a/public/terrain/18/429277/177017.terrain b/public/terrain/18/429277/177017.terrain new file mode 100644 index 000000000..c77d00139 Binary files /dev/null and b/public/terrain/18/429277/177017.terrain differ diff --git a/public/terrain/18/429277/177018.terrain b/public/terrain/18/429277/177018.terrain new file mode 100644 index 000000000..ee6f2090b Binary files /dev/null and b/public/terrain/18/429277/177018.terrain differ diff --git a/public/terrain/18/429277/177019.terrain b/public/terrain/18/429277/177019.terrain new file mode 100644 index 000000000..c98bcdaef Binary files /dev/null and b/public/terrain/18/429277/177019.terrain differ diff --git a/public/terrain/18/429277/177020.terrain b/public/terrain/18/429277/177020.terrain new file mode 100644 index 000000000..394ae4087 Binary files /dev/null and b/public/terrain/18/429277/177020.terrain differ diff --git a/public/terrain/18/429277/177021.terrain b/public/terrain/18/429277/177021.terrain new file mode 100644 index 000000000..3dba45743 Binary files /dev/null and b/public/terrain/18/429277/177021.terrain differ diff --git a/public/terrain/18/429277/177022.terrain b/public/terrain/18/429277/177022.terrain new file mode 100644 index 000000000..94883e7f0 Binary files /dev/null and b/public/terrain/18/429277/177022.terrain differ diff --git a/public/terrain/18/429277/177023.terrain b/public/terrain/18/429277/177023.terrain new file mode 100644 index 000000000..91ed51920 Binary files /dev/null and b/public/terrain/18/429277/177023.terrain differ diff --git a/public/terrain/18/429277/177024.terrain b/public/terrain/18/429277/177024.terrain new file mode 100644 index 000000000..b7ec1d205 Binary files /dev/null and b/public/terrain/18/429277/177024.terrain differ diff --git a/public/terrain/18/429277/177025.terrain b/public/terrain/18/429277/177025.terrain new file mode 100644 index 000000000..b671cb8c6 Binary files /dev/null and b/public/terrain/18/429277/177025.terrain differ diff --git a/public/terrain/18/429277/177026.terrain b/public/terrain/18/429277/177026.terrain new file mode 100644 index 000000000..8b5107ccc Binary files /dev/null and b/public/terrain/18/429277/177026.terrain differ diff --git a/public/terrain/18/429277/177027.terrain b/public/terrain/18/429277/177027.terrain new file mode 100644 index 000000000..92b1ef9ac Binary files /dev/null and b/public/terrain/18/429277/177027.terrain differ diff --git a/public/terrain/18/429277/177028.terrain b/public/terrain/18/429277/177028.terrain new file mode 100644 index 000000000..d1aaae86d Binary files /dev/null and b/public/terrain/18/429277/177028.terrain differ diff --git a/public/terrain/18/429277/177029.terrain b/public/terrain/18/429277/177029.terrain new file mode 100644 index 000000000..2dc920f5a Binary files /dev/null and b/public/terrain/18/429277/177029.terrain differ diff --git a/public/terrain/18/429278/176871.terrain b/public/terrain/18/429278/176871.terrain new file mode 100644 index 000000000..5caabd968 Binary files /dev/null and b/public/terrain/18/429278/176871.terrain differ diff --git a/public/terrain/18/429278/176872.terrain b/public/terrain/18/429278/176872.terrain new file mode 100644 index 000000000..5f988b127 Binary files /dev/null and b/public/terrain/18/429278/176872.terrain differ diff --git a/public/terrain/18/429278/176873.terrain b/public/terrain/18/429278/176873.terrain new file mode 100644 index 000000000..ce6547a43 Binary files /dev/null and b/public/terrain/18/429278/176873.terrain differ diff --git a/public/terrain/18/429278/176874.terrain b/public/terrain/18/429278/176874.terrain new file mode 100644 index 000000000..dc49e9613 Binary files /dev/null and b/public/terrain/18/429278/176874.terrain differ diff --git a/public/terrain/18/429278/176875.terrain b/public/terrain/18/429278/176875.terrain new file mode 100644 index 000000000..beda06522 Binary files /dev/null and b/public/terrain/18/429278/176875.terrain differ diff --git a/public/terrain/18/429278/176876.terrain b/public/terrain/18/429278/176876.terrain new file mode 100644 index 000000000..0966c312a Binary files /dev/null and b/public/terrain/18/429278/176876.terrain differ diff --git a/public/terrain/18/429278/176877.terrain b/public/terrain/18/429278/176877.terrain new file mode 100644 index 000000000..d2a424b56 Binary files /dev/null and b/public/terrain/18/429278/176877.terrain differ diff --git a/public/terrain/18/429278/176878.terrain b/public/terrain/18/429278/176878.terrain new file mode 100644 index 000000000..f99dcb06e Binary files /dev/null and b/public/terrain/18/429278/176878.terrain differ diff --git a/public/terrain/18/429278/176879.terrain b/public/terrain/18/429278/176879.terrain new file mode 100644 index 000000000..c356ebba2 Binary files /dev/null and b/public/terrain/18/429278/176879.terrain differ diff --git a/public/terrain/18/429278/176880.terrain b/public/terrain/18/429278/176880.terrain new file mode 100644 index 000000000..25a4f27eb Binary files /dev/null and b/public/terrain/18/429278/176880.terrain differ diff --git a/public/terrain/18/429278/176881.terrain b/public/terrain/18/429278/176881.terrain new file mode 100644 index 000000000..278f18f17 Binary files /dev/null and b/public/terrain/18/429278/176881.terrain differ diff --git a/public/terrain/18/429278/176882.terrain b/public/terrain/18/429278/176882.terrain new file mode 100644 index 000000000..d91d9af32 Binary files /dev/null and b/public/terrain/18/429278/176882.terrain differ diff --git a/public/terrain/18/429278/176883.terrain b/public/terrain/18/429278/176883.terrain new file mode 100644 index 000000000..af21b88fc Binary files /dev/null and b/public/terrain/18/429278/176883.terrain differ diff --git a/public/terrain/18/429278/176884.terrain b/public/terrain/18/429278/176884.terrain new file mode 100644 index 000000000..9f3a66ec6 Binary files /dev/null and b/public/terrain/18/429278/176884.terrain differ diff --git a/public/terrain/18/429278/176885.terrain b/public/terrain/18/429278/176885.terrain new file mode 100644 index 000000000..5b0e9407e Binary files /dev/null and b/public/terrain/18/429278/176885.terrain differ diff --git a/public/terrain/18/429278/176886.terrain b/public/terrain/18/429278/176886.terrain new file mode 100644 index 000000000..698e6dfc4 Binary files /dev/null and b/public/terrain/18/429278/176886.terrain differ diff --git a/public/terrain/18/429278/176887.terrain b/public/terrain/18/429278/176887.terrain new file mode 100644 index 000000000..8a40ff856 Binary files /dev/null and b/public/terrain/18/429278/176887.terrain differ diff --git a/public/terrain/18/429278/176888.terrain b/public/terrain/18/429278/176888.terrain new file mode 100644 index 000000000..f28b7977f Binary files /dev/null and b/public/terrain/18/429278/176888.terrain differ diff --git a/public/terrain/18/429278/176889.terrain b/public/terrain/18/429278/176889.terrain new file mode 100644 index 000000000..537fc998c Binary files /dev/null and b/public/terrain/18/429278/176889.terrain differ diff --git a/public/terrain/18/429278/176890.terrain b/public/terrain/18/429278/176890.terrain new file mode 100644 index 000000000..d68fd9871 Binary files /dev/null and b/public/terrain/18/429278/176890.terrain differ diff --git a/public/terrain/18/429278/176891.terrain b/public/terrain/18/429278/176891.terrain new file mode 100644 index 000000000..1bdb0f957 Binary files /dev/null and b/public/terrain/18/429278/176891.terrain differ diff --git a/public/terrain/18/429278/176892.terrain b/public/terrain/18/429278/176892.terrain new file mode 100644 index 000000000..3a1847c5e Binary files /dev/null and b/public/terrain/18/429278/176892.terrain differ diff --git a/public/terrain/18/429278/176893.terrain b/public/terrain/18/429278/176893.terrain new file mode 100644 index 000000000..8cdb77096 Binary files /dev/null and b/public/terrain/18/429278/176893.terrain differ diff --git a/public/terrain/18/429278/176894.terrain b/public/terrain/18/429278/176894.terrain new file mode 100644 index 000000000..c8350fb55 Binary files /dev/null and b/public/terrain/18/429278/176894.terrain differ diff --git a/public/terrain/18/429278/176895.terrain b/public/terrain/18/429278/176895.terrain new file mode 100644 index 000000000..c6e0106e8 Binary files /dev/null and b/public/terrain/18/429278/176895.terrain differ diff --git a/public/terrain/18/429278/176896.terrain b/public/terrain/18/429278/176896.terrain new file mode 100644 index 000000000..cc72519a6 Binary files /dev/null and b/public/terrain/18/429278/176896.terrain differ diff --git a/public/terrain/18/429278/176897.terrain b/public/terrain/18/429278/176897.terrain new file mode 100644 index 000000000..969f4ed60 Binary files /dev/null and b/public/terrain/18/429278/176897.terrain differ diff --git a/public/terrain/18/429278/176898.terrain b/public/terrain/18/429278/176898.terrain new file mode 100644 index 000000000..8be8cb0d4 Binary files /dev/null and b/public/terrain/18/429278/176898.terrain differ diff --git a/public/terrain/18/429278/176899.terrain b/public/terrain/18/429278/176899.terrain new file mode 100644 index 000000000..4b951c238 Binary files /dev/null and b/public/terrain/18/429278/176899.terrain differ diff --git a/public/terrain/18/429278/176900.terrain b/public/terrain/18/429278/176900.terrain new file mode 100644 index 000000000..861f8a8c9 Binary files /dev/null and b/public/terrain/18/429278/176900.terrain differ diff --git a/public/terrain/18/429278/176901.terrain b/public/terrain/18/429278/176901.terrain new file mode 100644 index 000000000..b7c007b61 Binary files /dev/null and b/public/terrain/18/429278/176901.terrain differ diff --git a/public/terrain/18/429278/176902.terrain b/public/terrain/18/429278/176902.terrain new file mode 100644 index 000000000..4ae3d084f Binary files /dev/null and b/public/terrain/18/429278/176902.terrain differ diff --git a/public/terrain/18/429278/176903.terrain b/public/terrain/18/429278/176903.terrain new file mode 100644 index 000000000..8bb63699e Binary files /dev/null and b/public/terrain/18/429278/176903.terrain differ diff --git a/public/terrain/18/429278/176904.terrain b/public/terrain/18/429278/176904.terrain new file mode 100644 index 000000000..3b8672cf4 Binary files /dev/null and b/public/terrain/18/429278/176904.terrain differ diff --git a/public/terrain/18/429278/176905.terrain b/public/terrain/18/429278/176905.terrain new file mode 100644 index 000000000..42700748a Binary files /dev/null and b/public/terrain/18/429278/176905.terrain differ diff --git a/public/terrain/18/429278/176906.terrain b/public/terrain/18/429278/176906.terrain new file mode 100644 index 000000000..fa46dca61 Binary files /dev/null and b/public/terrain/18/429278/176906.terrain differ diff --git a/public/terrain/18/429278/176907.terrain b/public/terrain/18/429278/176907.terrain new file mode 100644 index 000000000..6da3df056 Binary files /dev/null and b/public/terrain/18/429278/176907.terrain differ diff --git a/public/terrain/18/429278/176908.terrain b/public/terrain/18/429278/176908.terrain new file mode 100644 index 000000000..ce31ae797 Binary files /dev/null and b/public/terrain/18/429278/176908.terrain differ diff --git a/public/terrain/18/429278/176909.terrain b/public/terrain/18/429278/176909.terrain new file mode 100644 index 000000000..46a8ccf32 Binary files /dev/null and b/public/terrain/18/429278/176909.terrain differ diff --git a/public/terrain/18/429278/176910.terrain b/public/terrain/18/429278/176910.terrain new file mode 100644 index 000000000..ee7c92174 Binary files /dev/null and b/public/terrain/18/429278/176910.terrain differ diff --git a/public/terrain/18/429278/176911.terrain b/public/terrain/18/429278/176911.terrain new file mode 100644 index 000000000..b16055419 Binary files /dev/null and b/public/terrain/18/429278/176911.terrain differ diff --git a/public/terrain/18/429278/176912.terrain b/public/terrain/18/429278/176912.terrain new file mode 100644 index 000000000..ad3283c49 Binary files /dev/null and b/public/terrain/18/429278/176912.terrain differ diff --git a/public/terrain/18/429278/176913.terrain b/public/terrain/18/429278/176913.terrain new file mode 100644 index 000000000..ecee1bbb3 Binary files /dev/null and b/public/terrain/18/429278/176913.terrain differ diff --git a/public/terrain/18/429278/176914.terrain b/public/terrain/18/429278/176914.terrain new file mode 100644 index 000000000..c92a9f802 Binary files /dev/null and b/public/terrain/18/429278/176914.terrain differ diff --git a/public/terrain/18/429278/176915.terrain b/public/terrain/18/429278/176915.terrain new file mode 100644 index 000000000..38698747d Binary files /dev/null and b/public/terrain/18/429278/176915.terrain differ diff --git a/public/terrain/18/429278/176916.terrain b/public/terrain/18/429278/176916.terrain new file mode 100644 index 000000000..13168bdf1 Binary files /dev/null and b/public/terrain/18/429278/176916.terrain differ diff --git a/public/terrain/18/429278/176917.terrain b/public/terrain/18/429278/176917.terrain new file mode 100644 index 000000000..ec135516b Binary files /dev/null and b/public/terrain/18/429278/176917.terrain differ diff --git a/public/terrain/18/429278/176918.terrain b/public/terrain/18/429278/176918.terrain new file mode 100644 index 000000000..cbdfcb737 Binary files /dev/null and b/public/terrain/18/429278/176918.terrain differ diff --git a/public/terrain/18/429278/176919.terrain b/public/terrain/18/429278/176919.terrain new file mode 100644 index 000000000..677a8641a Binary files /dev/null and b/public/terrain/18/429278/176919.terrain differ diff --git a/public/terrain/18/429278/176920.terrain b/public/terrain/18/429278/176920.terrain new file mode 100644 index 000000000..abe1d21ce Binary files /dev/null and b/public/terrain/18/429278/176920.terrain differ diff --git a/public/terrain/18/429278/176921.terrain b/public/terrain/18/429278/176921.terrain new file mode 100644 index 000000000..6567d79b0 Binary files /dev/null and b/public/terrain/18/429278/176921.terrain differ diff --git a/public/terrain/18/429278/176922.terrain b/public/terrain/18/429278/176922.terrain new file mode 100644 index 000000000..8663acb42 Binary files /dev/null and b/public/terrain/18/429278/176922.terrain differ diff --git a/public/terrain/18/429278/176923.terrain b/public/terrain/18/429278/176923.terrain new file mode 100644 index 000000000..d5ce9ec0c Binary files /dev/null and b/public/terrain/18/429278/176923.terrain differ diff --git a/public/terrain/18/429278/176924.terrain b/public/terrain/18/429278/176924.terrain new file mode 100644 index 000000000..9aa8881c7 Binary files /dev/null and b/public/terrain/18/429278/176924.terrain differ diff --git a/public/terrain/18/429278/176925.terrain b/public/terrain/18/429278/176925.terrain new file mode 100644 index 000000000..84d6cf2e2 Binary files /dev/null and b/public/terrain/18/429278/176925.terrain differ diff --git a/public/terrain/18/429278/176926.terrain b/public/terrain/18/429278/176926.terrain new file mode 100644 index 000000000..4dfe68772 Binary files /dev/null and b/public/terrain/18/429278/176926.terrain differ diff --git a/public/terrain/18/429278/176927.terrain b/public/terrain/18/429278/176927.terrain new file mode 100644 index 000000000..d054ec64e Binary files /dev/null and b/public/terrain/18/429278/176927.terrain differ diff --git a/public/terrain/18/429278/176928.terrain b/public/terrain/18/429278/176928.terrain new file mode 100644 index 000000000..f60e62988 Binary files /dev/null and b/public/terrain/18/429278/176928.terrain differ diff --git a/public/terrain/18/429278/176929.terrain b/public/terrain/18/429278/176929.terrain new file mode 100644 index 000000000..33b329929 Binary files /dev/null and b/public/terrain/18/429278/176929.terrain differ diff --git a/public/terrain/18/429278/176930.terrain b/public/terrain/18/429278/176930.terrain new file mode 100644 index 000000000..655403260 Binary files /dev/null and b/public/terrain/18/429278/176930.terrain differ diff --git a/public/terrain/18/429278/176931.terrain b/public/terrain/18/429278/176931.terrain new file mode 100644 index 000000000..184b496aa Binary files /dev/null and b/public/terrain/18/429278/176931.terrain differ diff --git a/public/terrain/18/429278/176932.terrain b/public/terrain/18/429278/176932.terrain new file mode 100644 index 000000000..2ecb85fd3 Binary files /dev/null and b/public/terrain/18/429278/176932.terrain differ diff --git a/public/terrain/18/429278/176933.terrain b/public/terrain/18/429278/176933.terrain new file mode 100644 index 000000000..c45114f00 Binary files /dev/null and b/public/terrain/18/429278/176933.terrain differ diff --git a/public/terrain/18/429278/176934.terrain b/public/terrain/18/429278/176934.terrain new file mode 100644 index 000000000..80b81c98c Binary files /dev/null and b/public/terrain/18/429278/176934.terrain differ diff --git a/public/terrain/18/429278/176935.terrain b/public/terrain/18/429278/176935.terrain new file mode 100644 index 000000000..8684bf452 Binary files /dev/null and b/public/terrain/18/429278/176935.terrain differ diff --git a/public/terrain/18/429278/176936.terrain b/public/terrain/18/429278/176936.terrain new file mode 100644 index 000000000..681e32445 Binary files /dev/null and b/public/terrain/18/429278/176936.terrain differ diff --git a/public/terrain/18/429278/176937.terrain b/public/terrain/18/429278/176937.terrain new file mode 100644 index 000000000..6d304bc81 Binary files /dev/null and b/public/terrain/18/429278/176937.terrain differ diff --git a/public/terrain/18/429278/176938.terrain b/public/terrain/18/429278/176938.terrain new file mode 100644 index 000000000..c8c5f1a0f Binary files /dev/null and b/public/terrain/18/429278/176938.terrain differ diff --git a/public/terrain/18/429278/176939.terrain b/public/terrain/18/429278/176939.terrain new file mode 100644 index 000000000..13504b80a Binary files /dev/null and b/public/terrain/18/429278/176939.terrain differ diff --git a/public/terrain/18/429278/176940.terrain b/public/terrain/18/429278/176940.terrain new file mode 100644 index 000000000..fc1abc7ac Binary files /dev/null and b/public/terrain/18/429278/176940.terrain differ diff --git a/public/terrain/18/429278/176941.terrain b/public/terrain/18/429278/176941.terrain new file mode 100644 index 000000000..5840fca69 Binary files /dev/null and b/public/terrain/18/429278/176941.terrain differ diff --git a/public/terrain/18/429278/176942.terrain b/public/terrain/18/429278/176942.terrain new file mode 100644 index 000000000..f3a12ac07 Binary files /dev/null and b/public/terrain/18/429278/176942.terrain differ diff --git a/public/terrain/18/429278/176943.terrain b/public/terrain/18/429278/176943.terrain new file mode 100644 index 000000000..34868982b Binary files /dev/null and b/public/terrain/18/429278/176943.terrain differ diff --git a/public/terrain/18/429278/176944.terrain b/public/terrain/18/429278/176944.terrain new file mode 100644 index 000000000..e27c4ef2e Binary files /dev/null and b/public/terrain/18/429278/176944.terrain differ diff --git a/public/terrain/18/429278/176945.terrain b/public/terrain/18/429278/176945.terrain new file mode 100644 index 000000000..4fb7638ef Binary files /dev/null and b/public/terrain/18/429278/176945.terrain differ diff --git a/public/terrain/18/429278/176946.terrain b/public/terrain/18/429278/176946.terrain new file mode 100644 index 000000000..f9c1a218e Binary files /dev/null and b/public/terrain/18/429278/176946.terrain differ diff --git a/public/terrain/18/429278/176947.terrain b/public/terrain/18/429278/176947.terrain new file mode 100644 index 000000000..6dd087928 Binary files /dev/null and b/public/terrain/18/429278/176947.terrain differ diff --git a/public/terrain/18/429278/176948.terrain b/public/terrain/18/429278/176948.terrain new file mode 100644 index 000000000..f31c0054d Binary files /dev/null and b/public/terrain/18/429278/176948.terrain differ diff --git a/public/terrain/18/429278/176949.terrain b/public/terrain/18/429278/176949.terrain new file mode 100644 index 000000000..09f9ee5ef Binary files /dev/null and b/public/terrain/18/429278/176949.terrain differ diff --git a/public/terrain/18/429278/176950.terrain b/public/terrain/18/429278/176950.terrain new file mode 100644 index 000000000..3dd4058e8 Binary files /dev/null and b/public/terrain/18/429278/176950.terrain differ diff --git a/public/terrain/18/429278/176951.terrain b/public/terrain/18/429278/176951.terrain new file mode 100644 index 000000000..6e061c2c0 Binary files /dev/null and b/public/terrain/18/429278/176951.terrain differ diff --git a/public/terrain/18/429278/176952.terrain b/public/terrain/18/429278/176952.terrain new file mode 100644 index 000000000..cd267b0ba Binary files /dev/null and b/public/terrain/18/429278/176952.terrain differ diff --git a/public/terrain/18/429278/176953.terrain b/public/terrain/18/429278/176953.terrain new file mode 100644 index 000000000..59bde808b Binary files /dev/null and b/public/terrain/18/429278/176953.terrain differ diff --git a/public/terrain/18/429278/176954.terrain b/public/terrain/18/429278/176954.terrain new file mode 100644 index 000000000..b7657dce4 Binary files /dev/null and b/public/terrain/18/429278/176954.terrain differ diff --git a/public/terrain/18/429278/176955.terrain b/public/terrain/18/429278/176955.terrain new file mode 100644 index 000000000..3f708473a Binary files /dev/null and b/public/terrain/18/429278/176955.terrain differ diff --git a/public/terrain/18/429278/176956.terrain b/public/terrain/18/429278/176956.terrain new file mode 100644 index 000000000..70db799ad Binary files /dev/null and b/public/terrain/18/429278/176956.terrain differ diff --git a/public/terrain/18/429278/176957.terrain b/public/terrain/18/429278/176957.terrain new file mode 100644 index 000000000..298160c5a Binary files /dev/null and b/public/terrain/18/429278/176957.terrain differ diff --git a/public/terrain/18/429278/176958.terrain b/public/terrain/18/429278/176958.terrain new file mode 100644 index 000000000..1b58e1b17 Binary files /dev/null and b/public/terrain/18/429278/176958.terrain differ diff --git a/public/terrain/18/429278/176959.terrain b/public/terrain/18/429278/176959.terrain new file mode 100644 index 000000000..5db97085a Binary files /dev/null and b/public/terrain/18/429278/176959.terrain differ diff --git a/public/terrain/18/429278/176960.terrain b/public/terrain/18/429278/176960.terrain new file mode 100644 index 000000000..f61676ae0 Binary files /dev/null and b/public/terrain/18/429278/176960.terrain differ diff --git a/public/terrain/18/429278/176961.terrain b/public/terrain/18/429278/176961.terrain new file mode 100644 index 000000000..872a1eaf4 Binary files /dev/null and b/public/terrain/18/429278/176961.terrain differ diff --git a/public/terrain/18/429278/176962.terrain b/public/terrain/18/429278/176962.terrain new file mode 100644 index 000000000..d02ab155c Binary files /dev/null and b/public/terrain/18/429278/176962.terrain differ diff --git a/public/terrain/18/429278/176963.terrain b/public/terrain/18/429278/176963.terrain new file mode 100644 index 000000000..bcc283f6c Binary files /dev/null and b/public/terrain/18/429278/176963.terrain differ diff --git a/public/terrain/18/429278/176964.terrain b/public/terrain/18/429278/176964.terrain new file mode 100644 index 000000000..152e1dd82 Binary files /dev/null and b/public/terrain/18/429278/176964.terrain differ diff --git a/public/terrain/18/429278/176965.terrain b/public/terrain/18/429278/176965.terrain new file mode 100644 index 000000000..b2fecec36 Binary files /dev/null and b/public/terrain/18/429278/176965.terrain differ diff --git a/public/terrain/18/429278/176966.terrain b/public/terrain/18/429278/176966.terrain new file mode 100644 index 000000000..dc87c974f Binary files /dev/null and b/public/terrain/18/429278/176966.terrain differ diff --git a/public/terrain/18/429278/176967.terrain b/public/terrain/18/429278/176967.terrain new file mode 100644 index 000000000..d2b7ef205 Binary files /dev/null and b/public/terrain/18/429278/176967.terrain differ diff --git a/public/terrain/18/429278/176968.terrain b/public/terrain/18/429278/176968.terrain new file mode 100644 index 000000000..7e14e0188 Binary files /dev/null and b/public/terrain/18/429278/176968.terrain differ diff --git a/public/terrain/18/429278/176969.terrain b/public/terrain/18/429278/176969.terrain new file mode 100644 index 000000000..bf2490d48 Binary files /dev/null and b/public/terrain/18/429278/176969.terrain differ diff --git a/public/terrain/18/429278/176970.terrain b/public/terrain/18/429278/176970.terrain new file mode 100644 index 000000000..b5ec3fc94 Binary files /dev/null and b/public/terrain/18/429278/176970.terrain differ diff --git a/public/terrain/18/429278/176971.terrain b/public/terrain/18/429278/176971.terrain new file mode 100644 index 000000000..cdd56fe33 Binary files /dev/null and b/public/terrain/18/429278/176971.terrain differ diff --git a/public/terrain/18/429278/176972.terrain b/public/terrain/18/429278/176972.terrain new file mode 100644 index 000000000..0461250ec Binary files /dev/null and b/public/terrain/18/429278/176972.terrain differ diff --git a/public/terrain/18/429278/176973.terrain b/public/terrain/18/429278/176973.terrain new file mode 100644 index 000000000..5085a485d Binary files /dev/null and b/public/terrain/18/429278/176973.terrain differ diff --git a/public/terrain/18/429278/176974.terrain b/public/terrain/18/429278/176974.terrain new file mode 100644 index 000000000..f7b69c4de Binary files /dev/null and b/public/terrain/18/429278/176974.terrain differ diff --git a/public/terrain/18/429278/176975.terrain b/public/terrain/18/429278/176975.terrain new file mode 100644 index 000000000..1509bf5b6 Binary files /dev/null and b/public/terrain/18/429278/176975.terrain differ diff --git a/public/terrain/18/429278/176976.terrain b/public/terrain/18/429278/176976.terrain new file mode 100644 index 000000000..308c05e7d Binary files /dev/null and b/public/terrain/18/429278/176976.terrain differ diff --git a/public/terrain/18/429278/176977.terrain b/public/terrain/18/429278/176977.terrain new file mode 100644 index 000000000..630a4f207 Binary files /dev/null and b/public/terrain/18/429278/176977.terrain differ diff --git a/public/terrain/18/429278/176978.terrain b/public/terrain/18/429278/176978.terrain new file mode 100644 index 000000000..0102eab4c Binary files /dev/null and b/public/terrain/18/429278/176978.terrain differ diff --git a/public/terrain/18/429278/176979.terrain b/public/terrain/18/429278/176979.terrain new file mode 100644 index 000000000..114b902f1 Binary files /dev/null and b/public/terrain/18/429278/176979.terrain differ diff --git a/public/terrain/18/429278/176980.terrain b/public/terrain/18/429278/176980.terrain new file mode 100644 index 000000000..ad2ea0432 Binary files /dev/null and b/public/terrain/18/429278/176980.terrain differ diff --git a/public/terrain/18/429278/176981.terrain b/public/terrain/18/429278/176981.terrain new file mode 100644 index 000000000..7b016a0c6 Binary files /dev/null and b/public/terrain/18/429278/176981.terrain differ diff --git a/public/terrain/18/429278/176982.terrain b/public/terrain/18/429278/176982.terrain new file mode 100644 index 000000000..01ced7444 Binary files /dev/null and b/public/terrain/18/429278/176982.terrain differ diff --git a/public/terrain/18/429278/176983.terrain b/public/terrain/18/429278/176983.terrain new file mode 100644 index 000000000..86fdcb7b7 Binary files /dev/null and b/public/terrain/18/429278/176983.terrain differ diff --git a/public/terrain/18/429278/176984.terrain b/public/terrain/18/429278/176984.terrain new file mode 100644 index 000000000..b387d9ac5 Binary files /dev/null and b/public/terrain/18/429278/176984.terrain differ diff --git a/public/terrain/18/429278/176985.terrain b/public/terrain/18/429278/176985.terrain new file mode 100644 index 000000000..72c302983 Binary files /dev/null and b/public/terrain/18/429278/176985.terrain differ diff --git a/public/terrain/18/429278/176986.terrain b/public/terrain/18/429278/176986.terrain new file mode 100644 index 000000000..751a71d5c Binary files /dev/null and b/public/terrain/18/429278/176986.terrain differ diff --git a/public/terrain/18/429278/176987.terrain b/public/terrain/18/429278/176987.terrain new file mode 100644 index 000000000..eb342a1cc Binary files /dev/null and b/public/terrain/18/429278/176987.terrain differ diff --git a/public/terrain/18/429278/176988.terrain b/public/terrain/18/429278/176988.terrain new file mode 100644 index 000000000..e48d9af29 Binary files /dev/null and b/public/terrain/18/429278/176988.terrain differ diff --git a/public/terrain/18/429278/176989.terrain b/public/terrain/18/429278/176989.terrain new file mode 100644 index 000000000..f8075fa76 Binary files /dev/null and b/public/terrain/18/429278/176989.terrain differ diff --git a/public/terrain/18/429278/176990.terrain b/public/terrain/18/429278/176990.terrain new file mode 100644 index 000000000..77f6e1d8d Binary files /dev/null and b/public/terrain/18/429278/176990.terrain differ diff --git a/public/terrain/18/429278/176991.terrain b/public/terrain/18/429278/176991.terrain new file mode 100644 index 000000000..d483de2d0 Binary files /dev/null and b/public/terrain/18/429278/176991.terrain differ diff --git a/public/terrain/18/429278/176992.terrain b/public/terrain/18/429278/176992.terrain new file mode 100644 index 000000000..bce1f3ee8 Binary files /dev/null and b/public/terrain/18/429278/176992.terrain differ diff --git a/public/terrain/18/429278/176993.terrain b/public/terrain/18/429278/176993.terrain new file mode 100644 index 000000000..8cf388722 Binary files /dev/null and b/public/terrain/18/429278/176993.terrain differ diff --git a/public/terrain/18/429278/176994.terrain b/public/terrain/18/429278/176994.terrain new file mode 100644 index 000000000..98c700034 Binary files /dev/null and b/public/terrain/18/429278/176994.terrain differ diff --git a/public/terrain/18/429278/176995.terrain b/public/terrain/18/429278/176995.terrain new file mode 100644 index 000000000..fd336b233 Binary files /dev/null and b/public/terrain/18/429278/176995.terrain differ diff --git a/public/terrain/18/429278/176996.terrain b/public/terrain/18/429278/176996.terrain new file mode 100644 index 000000000..658a1eb99 Binary files /dev/null and b/public/terrain/18/429278/176996.terrain differ diff --git a/public/terrain/18/429278/176997.terrain b/public/terrain/18/429278/176997.terrain new file mode 100644 index 000000000..2449f5508 Binary files /dev/null and b/public/terrain/18/429278/176997.terrain differ diff --git a/public/terrain/18/429278/176998.terrain b/public/terrain/18/429278/176998.terrain new file mode 100644 index 000000000..e3b43ce7d Binary files /dev/null and b/public/terrain/18/429278/176998.terrain differ diff --git a/public/terrain/18/429278/176999.terrain b/public/terrain/18/429278/176999.terrain new file mode 100644 index 000000000..909bae80c Binary files /dev/null and b/public/terrain/18/429278/176999.terrain differ diff --git a/public/terrain/18/429278/177000.terrain b/public/terrain/18/429278/177000.terrain new file mode 100644 index 000000000..45b0e929a Binary files /dev/null and b/public/terrain/18/429278/177000.terrain differ diff --git a/public/terrain/18/429278/177001.terrain b/public/terrain/18/429278/177001.terrain new file mode 100644 index 000000000..c8937c516 Binary files /dev/null and b/public/terrain/18/429278/177001.terrain differ diff --git a/public/terrain/18/429278/177002.terrain b/public/terrain/18/429278/177002.terrain new file mode 100644 index 000000000..d951ee936 Binary files /dev/null and b/public/terrain/18/429278/177002.terrain differ diff --git a/public/terrain/18/429278/177003.terrain b/public/terrain/18/429278/177003.terrain new file mode 100644 index 000000000..a0b0099da Binary files /dev/null and b/public/terrain/18/429278/177003.terrain differ diff --git a/public/terrain/18/429278/177004.terrain b/public/terrain/18/429278/177004.terrain new file mode 100644 index 000000000..d9554db0b Binary files /dev/null and b/public/terrain/18/429278/177004.terrain differ diff --git a/public/terrain/18/429278/177005.terrain b/public/terrain/18/429278/177005.terrain new file mode 100644 index 000000000..cf1cf90ed Binary files /dev/null and b/public/terrain/18/429278/177005.terrain differ diff --git a/public/terrain/18/429278/177006.terrain b/public/terrain/18/429278/177006.terrain new file mode 100644 index 000000000..0dc7e7938 Binary files /dev/null and b/public/terrain/18/429278/177006.terrain differ diff --git a/public/terrain/18/429278/177007.terrain b/public/terrain/18/429278/177007.terrain new file mode 100644 index 000000000..a8565750d Binary files /dev/null and b/public/terrain/18/429278/177007.terrain differ diff --git a/public/terrain/18/429278/177008.terrain b/public/terrain/18/429278/177008.terrain new file mode 100644 index 000000000..2f5e52690 Binary files /dev/null and b/public/terrain/18/429278/177008.terrain differ diff --git a/public/terrain/18/429278/177009.terrain b/public/terrain/18/429278/177009.terrain new file mode 100644 index 000000000..c252c83b2 Binary files /dev/null and b/public/terrain/18/429278/177009.terrain differ diff --git a/public/terrain/18/429278/177010.terrain b/public/terrain/18/429278/177010.terrain new file mode 100644 index 000000000..ce08f9e17 Binary files /dev/null and b/public/terrain/18/429278/177010.terrain differ diff --git a/public/terrain/18/429278/177011.terrain b/public/terrain/18/429278/177011.terrain new file mode 100644 index 000000000..20a4e7ef5 Binary files /dev/null and b/public/terrain/18/429278/177011.terrain differ diff --git a/public/terrain/18/429278/177012.terrain b/public/terrain/18/429278/177012.terrain new file mode 100644 index 000000000..73a482df4 Binary files /dev/null and b/public/terrain/18/429278/177012.terrain differ diff --git a/public/terrain/18/429278/177013.terrain b/public/terrain/18/429278/177013.terrain new file mode 100644 index 000000000..8e7c8e336 Binary files /dev/null and b/public/terrain/18/429278/177013.terrain differ diff --git a/public/terrain/18/429278/177014.terrain b/public/terrain/18/429278/177014.terrain new file mode 100644 index 000000000..2aa10dd67 Binary files /dev/null and b/public/terrain/18/429278/177014.terrain differ diff --git a/public/terrain/18/429278/177015.terrain b/public/terrain/18/429278/177015.terrain new file mode 100644 index 000000000..8b1bb5ca9 Binary files /dev/null and b/public/terrain/18/429278/177015.terrain differ diff --git a/public/terrain/18/429278/177016.terrain b/public/terrain/18/429278/177016.terrain new file mode 100644 index 000000000..8f0a4c411 Binary files /dev/null and b/public/terrain/18/429278/177016.terrain differ diff --git a/public/terrain/18/429278/177017.terrain b/public/terrain/18/429278/177017.terrain new file mode 100644 index 000000000..c71966f12 Binary files /dev/null and b/public/terrain/18/429278/177017.terrain differ diff --git a/public/terrain/18/429278/177018.terrain b/public/terrain/18/429278/177018.terrain new file mode 100644 index 000000000..f79476797 Binary files /dev/null and b/public/terrain/18/429278/177018.terrain differ diff --git a/public/terrain/18/429278/177019.terrain b/public/terrain/18/429278/177019.terrain new file mode 100644 index 000000000..c71ef9f9b Binary files /dev/null and b/public/terrain/18/429278/177019.terrain differ diff --git a/public/terrain/18/429278/177020.terrain b/public/terrain/18/429278/177020.terrain new file mode 100644 index 000000000..29140ff08 Binary files /dev/null and b/public/terrain/18/429278/177020.terrain differ diff --git a/public/terrain/18/429278/177021.terrain b/public/terrain/18/429278/177021.terrain new file mode 100644 index 000000000..703785a6e Binary files /dev/null and b/public/terrain/18/429278/177021.terrain differ diff --git a/public/terrain/18/429278/177022.terrain b/public/terrain/18/429278/177022.terrain new file mode 100644 index 000000000..e06598d3a Binary files /dev/null and b/public/terrain/18/429278/177022.terrain differ diff --git a/public/terrain/18/429278/177023.terrain b/public/terrain/18/429278/177023.terrain new file mode 100644 index 000000000..cebb18e4e Binary files /dev/null and b/public/terrain/18/429278/177023.terrain differ diff --git a/public/terrain/18/429278/177024.terrain b/public/terrain/18/429278/177024.terrain new file mode 100644 index 000000000..af2adccf6 Binary files /dev/null and b/public/terrain/18/429278/177024.terrain differ diff --git a/public/terrain/18/429278/177025.terrain b/public/terrain/18/429278/177025.terrain new file mode 100644 index 000000000..3a79d61e3 Binary files /dev/null and b/public/terrain/18/429278/177025.terrain differ diff --git a/public/terrain/18/429278/177026.terrain b/public/terrain/18/429278/177026.terrain new file mode 100644 index 000000000..b145e4b6b Binary files /dev/null and b/public/terrain/18/429278/177026.terrain differ diff --git a/public/terrain/18/429278/177027.terrain b/public/terrain/18/429278/177027.terrain new file mode 100644 index 000000000..8d9e46ee4 Binary files /dev/null and b/public/terrain/18/429278/177027.terrain differ diff --git a/public/terrain/18/429278/177028.terrain b/public/terrain/18/429278/177028.terrain new file mode 100644 index 000000000..3cd318c0b Binary files /dev/null and b/public/terrain/18/429278/177028.terrain differ diff --git a/public/terrain/18/429278/177029.terrain b/public/terrain/18/429278/177029.terrain new file mode 100644 index 000000000..380182e7e Binary files /dev/null and b/public/terrain/18/429278/177029.terrain differ diff --git a/public/terrain/18/429279/176871.terrain b/public/terrain/18/429279/176871.terrain new file mode 100644 index 000000000..7c8ec1360 Binary files /dev/null and b/public/terrain/18/429279/176871.terrain differ diff --git a/public/terrain/18/429279/176872.terrain b/public/terrain/18/429279/176872.terrain new file mode 100644 index 000000000..40ebe758f Binary files /dev/null and b/public/terrain/18/429279/176872.terrain differ diff --git a/public/terrain/18/429279/176873.terrain b/public/terrain/18/429279/176873.terrain new file mode 100644 index 000000000..f0575b97e Binary files /dev/null and b/public/terrain/18/429279/176873.terrain differ diff --git a/public/terrain/18/429279/176874.terrain b/public/terrain/18/429279/176874.terrain new file mode 100644 index 000000000..eeff9ce29 Binary files /dev/null and b/public/terrain/18/429279/176874.terrain differ diff --git a/public/terrain/18/429279/176875.terrain b/public/terrain/18/429279/176875.terrain new file mode 100644 index 000000000..51639e84e Binary files /dev/null and b/public/terrain/18/429279/176875.terrain differ diff --git a/public/terrain/18/429279/176876.terrain b/public/terrain/18/429279/176876.terrain new file mode 100644 index 000000000..e49a5428b Binary files /dev/null and b/public/terrain/18/429279/176876.terrain differ diff --git a/public/terrain/18/429279/176877.terrain b/public/terrain/18/429279/176877.terrain new file mode 100644 index 000000000..27e74854e Binary files /dev/null and b/public/terrain/18/429279/176877.terrain differ diff --git a/public/terrain/18/429279/176878.terrain b/public/terrain/18/429279/176878.terrain new file mode 100644 index 000000000..2b0cf590f Binary files /dev/null and b/public/terrain/18/429279/176878.terrain differ diff --git a/public/terrain/18/429279/176879.terrain b/public/terrain/18/429279/176879.terrain new file mode 100644 index 000000000..e5724f7fb Binary files /dev/null and b/public/terrain/18/429279/176879.terrain differ diff --git a/public/terrain/18/429279/176880.terrain b/public/terrain/18/429279/176880.terrain new file mode 100644 index 000000000..4b74e21d0 Binary files /dev/null and b/public/terrain/18/429279/176880.terrain differ diff --git a/public/terrain/18/429279/176881.terrain b/public/terrain/18/429279/176881.terrain new file mode 100644 index 000000000..231dcc60d Binary files /dev/null and b/public/terrain/18/429279/176881.terrain differ diff --git a/public/terrain/18/429279/176882.terrain b/public/terrain/18/429279/176882.terrain new file mode 100644 index 000000000..22418b499 Binary files /dev/null and b/public/terrain/18/429279/176882.terrain differ diff --git a/public/terrain/18/429279/176883.terrain b/public/terrain/18/429279/176883.terrain new file mode 100644 index 000000000..eb6971295 Binary files /dev/null and b/public/terrain/18/429279/176883.terrain differ diff --git a/public/terrain/18/429279/176884.terrain b/public/terrain/18/429279/176884.terrain new file mode 100644 index 000000000..097cde9c1 Binary files /dev/null and b/public/terrain/18/429279/176884.terrain differ diff --git a/public/terrain/18/429279/176885.terrain b/public/terrain/18/429279/176885.terrain new file mode 100644 index 000000000..08db3518f Binary files /dev/null and b/public/terrain/18/429279/176885.terrain differ diff --git a/public/terrain/18/429279/176886.terrain b/public/terrain/18/429279/176886.terrain new file mode 100644 index 000000000..600ce6189 Binary files /dev/null and b/public/terrain/18/429279/176886.terrain differ diff --git a/public/terrain/18/429279/176887.terrain b/public/terrain/18/429279/176887.terrain new file mode 100644 index 000000000..174f81712 Binary files /dev/null and b/public/terrain/18/429279/176887.terrain differ diff --git a/public/terrain/18/429279/176888.terrain b/public/terrain/18/429279/176888.terrain new file mode 100644 index 000000000..932a4c86e Binary files /dev/null and b/public/terrain/18/429279/176888.terrain differ diff --git a/public/terrain/18/429279/176889.terrain b/public/terrain/18/429279/176889.terrain new file mode 100644 index 000000000..1dd8f88fe Binary files /dev/null and b/public/terrain/18/429279/176889.terrain differ diff --git a/public/terrain/18/429279/176890.terrain b/public/terrain/18/429279/176890.terrain new file mode 100644 index 000000000..92aa24aaa Binary files /dev/null and b/public/terrain/18/429279/176890.terrain differ diff --git a/public/terrain/18/429279/176891.terrain b/public/terrain/18/429279/176891.terrain new file mode 100644 index 000000000..2f40763e9 Binary files /dev/null and b/public/terrain/18/429279/176891.terrain differ diff --git a/public/terrain/18/429279/176892.terrain b/public/terrain/18/429279/176892.terrain new file mode 100644 index 000000000..91202428d Binary files /dev/null and b/public/terrain/18/429279/176892.terrain differ diff --git a/public/terrain/18/429279/176893.terrain b/public/terrain/18/429279/176893.terrain new file mode 100644 index 000000000..996354c17 Binary files /dev/null and b/public/terrain/18/429279/176893.terrain differ diff --git a/public/terrain/18/429279/176894.terrain b/public/terrain/18/429279/176894.terrain new file mode 100644 index 000000000..1d9b13bb4 Binary files /dev/null and b/public/terrain/18/429279/176894.terrain differ diff --git a/public/terrain/18/429279/176895.terrain b/public/terrain/18/429279/176895.terrain new file mode 100644 index 000000000..06a4b13dc Binary files /dev/null and b/public/terrain/18/429279/176895.terrain differ diff --git a/public/terrain/18/429279/176896.terrain b/public/terrain/18/429279/176896.terrain new file mode 100644 index 000000000..08f46faa6 Binary files /dev/null and b/public/terrain/18/429279/176896.terrain differ diff --git a/public/terrain/18/429279/176897.terrain b/public/terrain/18/429279/176897.terrain new file mode 100644 index 000000000..af14924dc Binary files /dev/null and b/public/terrain/18/429279/176897.terrain differ diff --git a/public/terrain/18/429279/176898.terrain b/public/terrain/18/429279/176898.terrain new file mode 100644 index 000000000..42ff9384d Binary files /dev/null and b/public/terrain/18/429279/176898.terrain differ diff --git a/public/terrain/18/429279/176899.terrain b/public/terrain/18/429279/176899.terrain new file mode 100644 index 000000000..3405bc02e Binary files /dev/null and b/public/terrain/18/429279/176899.terrain differ diff --git a/public/terrain/18/429279/176900.terrain b/public/terrain/18/429279/176900.terrain new file mode 100644 index 000000000..85c3962b0 Binary files /dev/null and b/public/terrain/18/429279/176900.terrain differ diff --git a/public/terrain/18/429279/176901.terrain b/public/terrain/18/429279/176901.terrain new file mode 100644 index 000000000..e98e0652a Binary files /dev/null and b/public/terrain/18/429279/176901.terrain differ diff --git a/public/terrain/18/429279/176902.terrain b/public/terrain/18/429279/176902.terrain new file mode 100644 index 000000000..60353c358 Binary files /dev/null and b/public/terrain/18/429279/176902.terrain differ diff --git a/public/terrain/18/429279/176903.terrain b/public/terrain/18/429279/176903.terrain new file mode 100644 index 000000000..f1dcdbde1 Binary files /dev/null and b/public/terrain/18/429279/176903.terrain differ diff --git a/public/terrain/18/429279/176904.terrain b/public/terrain/18/429279/176904.terrain new file mode 100644 index 000000000..facf079f4 Binary files /dev/null and b/public/terrain/18/429279/176904.terrain differ diff --git a/public/terrain/18/429279/176905.terrain b/public/terrain/18/429279/176905.terrain new file mode 100644 index 000000000..9e57ae743 Binary files /dev/null and b/public/terrain/18/429279/176905.terrain differ diff --git a/public/terrain/18/429279/176906.terrain b/public/terrain/18/429279/176906.terrain new file mode 100644 index 000000000..3e8e8c6f8 Binary files /dev/null and b/public/terrain/18/429279/176906.terrain differ diff --git a/public/terrain/18/429279/176907.terrain b/public/terrain/18/429279/176907.terrain new file mode 100644 index 000000000..2976f645b Binary files /dev/null and b/public/terrain/18/429279/176907.terrain differ diff --git a/public/terrain/18/429279/176908.terrain b/public/terrain/18/429279/176908.terrain new file mode 100644 index 000000000..3e73aa115 Binary files /dev/null and b/public/terrain/18/429279/176908.terrain differ diff --git a/public/terrain/18/429279/176909.terrain b/public/terrain/18/429279/176909.terrain new file mode 100644 index 000000000..5b00382a2 Binary files /dev/null and b/public/terrain/18/429279/176909.terrain differ diff --git a/public/terrain/18/429279/176910.terrain b/public/terrain/18/429279/176910.terrain new file mode 100644 index 000000000..caa6f71b2 Binary files /dev/null and b/public/terrain/18/429279/176910.terrain differ diff --git a/public/terrain/18/429279/176911.terrain b/public/terrain/18/429279/176911.terrain new file mode 100644 index 000000000..fd530c6d9 Binary files /dev/null and b/public/terrain/18/429279/176911.terrain differ diff --git a/public/terrain/18/429279/176912.terrain b/public/terrain/18/429279/176912.terrain new file mode 100644 index 000000000..0c0415d49 Binary files /dev/null and b/public/terrain/18/429279/176912.terrain differ diff --git a/public/terrain/18/429279/176913.terrain b/public/terrain/18/429279/176913.terrain new file mode 100644 index 000000000..a73d00a15 Binary files /dev/null and b/public/terrain/18/429279/176913.terrain differ diff --git a/public/terrain/18/429279/176914.terrain b/public/terrain/18/429279/176914.terrain new file mode 100644 index 000000000..00ca3c74a Binary files /dev/null and b/public/terrain/18/429279/176914.terrain differ diff --git a/public/terrain/18/429279/176915.terrain b/public/terrain/18/429279/176915.terrain new file mode 100644 index 000000000..f27cc2e3a Binary files /dev/null and b/public/terrain/18/429279/176915.terrain differ diff --git a/public/terrain/18/429279/176916.terrain b/public/terrain/18/429279/176916.terrain new file mode 100644 index 000000000..fa9f2c742 Binary files /dev/null and b/public/terrain/18/429279/176916.terrain differ diff --git a/public/terrain/18/429279/176917.terrain b/public/terrain/18/429279/176917.terrain new file mode 100644 index 000000000..9b5377c57 Binary files /dev/null and b/public/terrain/18/429279/176917.terrain differ diff --git a/public/terrain/18/429279/176918.terrain b/public/terrain/18/429279/176918.terrain new file mode 100644 index 000000000..8e9d3ef90 Binary files /dev/null and b/public/terrain/18/429279/176918.terrain differ diff --git a/public/terrain/18/429279/176919.terrain b/public/terrain/18/429279/176919.terrain new file mode 100644 index 000000000..d6b312f84 Binary files /dev/null and b/public/terrain/18/429279/176919.terrain differ diff --git a/public/terrain/18/429279/176920.terrain b/public/terrain/18/429279/176920.terrain new file mode 100644 index 000000000..49c6ded7c Binary files /dev/null and b/public/terrain/18/429279/176920.terrain differ diff --git a/public/terrain/18/429279/176921.terrain b/public/terrain/18/429279/176921.terrain new file mode 100644 index 000000000..ecdbadca8 Binary files /dev/null and b/public/terrain/18/429279/176921.terrain differ diff --git a/public/terrain/18/429279/176922.terrain b/public/terrain/18/429279/176922.terrain new file mode 100644 index 000000000..82324f5ad Binary files /dev/null and b/public/terrain/18/429279/176922.terrain differ diff --git a/public/terrain/18/429279/176923.terrain b/public/terrain/18/429279/176923.terrain new file mode 100644 index 000000000..ab25d63ff Binary files /dev/null and b/public/terrain/18/429279/176923.terrain differ diff --git a/public/terrain/18/429279/176924.terrain b/public/terrain/18/429279/176924.terrain new file mode 100644 index 000000000..9ece605ea Binary files /dev/null and b/public/terrain/18/429279/176924.terrain differ diff --git a/public/terrain/18/429279/176925.terrain b/public/terrain/18/429279/176925.terrain new file mode 100644 index 000000000..1ecd186dd Binary files /dev/null and b/public/terrain/18/429279/176925.terrain differ diff --git a/public/terrain/18/429279/176926.terrain b/public/terrain/18/429279/176926.terrain new file mode 100644 index 000000000..140af7138 Binary files /dev/null and b/public/terrain/18/429279/176926.terrain differ diff --git a/public/terrain/18/429279/176927.terrain b/public/terrain/18/429279/176927.terrain new file mode 100644 index 000000000..211758c4b Binary files /dev/null and b/public/terrain/18/429279/176927.terrain differ diff --git a/public/terrain/18/429279/176928.terrain b/public/terrain/18/429279/176928.terrain new file mode 100644 index 000000000..ebe5685b0 Binary files /dev/null and b/public/terrain/18/429279/176928.terrain differ diff --git a/public/terrain/18/429279/176929.terrain b/public/terrain/18/429279/176929.terrain new file mode 100644 index 000000000..f4ee14f46 Binary files /dev/null and b/public/terrain/18/429279/176929.terrain differ diff --git a/public/terrain/18/429279/176930.terrain b/public/terrain/18/429279/176930.terrain new file mode 100644 index 000000000..4f480bb33 Binary files /dev/null and b/public/terrain/18/429279/176930.terrain differ diff --git a/public/terrain/18/429279/176931.terrain b/public/terrain/18/429279/176931.terrain new file mode 100644 index 000000000..89c0e57e0 Binary files /dev/null and b/public/terrain/18/429279/176931.terrain differ diff --git a/public/terrain/18/429279/176932.terrain b/public/terrain/18/429279/176932.terrain new file mode 100644 index 000000000..fcf101ae5 Binary files /dev/null and b/public/terrain/18/429279/176932.terrain differ diff --git a/public/terrain/18/429279/176933.terrain b/public/terrain/18/429279/176933.terrain new file mode 100644 index 000000000..7cf6b2a44 Binary files /dev/null and b/public/terrain/18/429279/176933.terrain differ diff --git a/public/terrain/18/429279/176934.terrain b/public/terrain/18/429279/176934.terrain new file mode 100644 index 000000000..c485c1c2d Binary files /dev/null and b/public/terrain/18/429279/176934.terrain differ diff --git a/public/terrain/18/429279/176935.terrain b/public/terrain/18/429279/176935.terrain new file mode 100644 index 000000000..b6c63879b Binary files /dev/null and b/public/terrain/18/429279/176935.terrain differ diff --git a/public/terrain/18/429279/176936.terrain b/public/terrain/18/429279/176936.terrain new file mode 100644 index 000000000..6ad13bb69 Binary files /dev/null and b/public/terrain/18/429279/176936.terrain differ diff --git a/public/terrain/18/429279/176937.terrain b/public/terrain/18/429279/176937.terrain new file mode 100644 index 000000000..15d36c4cb Binary files /dev/null and b/public/terrain/18/429279/176937.terrain differ diff --git a/public/terrain/18/429279/176938.terrain b/public/terrain/18/429279/176938.terrain new file mode 100644 index 000000000..2726e9dd6 Binary files /dev/null and b/public/terrain/18/429279/176938.terrain differ diff --git a/public/terrain/18/429279/176939.terrain b/public/terrain/18/429279/176939.terrain new file mode 100644 index 000000000..d6c9c0d7e Binary files /dev/null and b/public/terrain/18/429279/176939.terrain differ diff --git a/public/terrain/18/429279/176940.terrain b/public/terrain/18/429279/176940.terrain new file mode 100644 index 000000000..72c2bff1e Binary files /dev/null and b/public/terrain/18/429279/176940.terrain differ diff --git a/public/terrain/18/429279/176941.terrain b/public/terrain/18/429279/176941.terrain new file mode 100644 index 000000000..5020028f8 Binary files /dev/null and b/public/terrain/18/429279/176941.terrain differ diff --git a/public/terrain/18/429279/176942.terrain b/public/terrain/18/429279/176942.terrain new file mode 100644 index 000000000..67ca9e098 Binary files /dev/null and b/public/terrain/18/429279/176942.terrain differ diff --git a/public/terrain/18/429279/176943.terrain b/public/terrain/18/429279/176943.terrain new file mode 100644 index 000000000..3fb477577 Binary files /dev/null and b/public/terrain/18/429279/176943.terrain differ diff --git a/public/terrain/18/429279/176944.terrain b/public/terrain/18/429279/176944.terrain new file mode 100644 index 000000000..8e92d9c25 Binary files /dev/null and b/public/terrain/18/429279/176944.terrain differ diff --git a/public/terrain/18/429279/176945.terrain b/public/terrain/18/429279/176945.terrain new file mode 100644 index 000000000..2998642f2 Binary files /dev/null and b/public/terrain/18/429279/176945.terrain differ diff --git a/public/terrain/18/429279/176946.terrain b/public/terrain/18/429279/176946.terrain new file mode 100644 index 000000000..fb327aa7c Binary files /dev/null and b/public/terrain/18/429279/176946.terrain differ diff --git a/public/terrain/18/429279/176947.terrain b/public/terrain/18/429279/176947.terrain new file mode 100644 index 000000000..0e3c5b81a Binary files /dev/null and b/public/terrain/18/429279/176947.terrain differ diff --git a/public/terrain/18/429279/176948.terrain b/public/terrain/18/429279/176948.terrain new file mode 100644 index 000000000..751ef25c0 Binary files /dev/null and b/public/terrain/18/429279/176948.terrain differ diff --git a/public/terrain/18/429279/176949.terrain b/public/terrain/18/429279/176949.terrain new file mode 100644 index 000000000..bdaa7554b Binary files /dev/null and b/public/terrain/18/429279/176949.terrain differ diff --git a/public/terrain/18/429279/176950.terrain b/public/terrain/18/429279/176950.terrain new file mode 100644 index 000000000..830c66011 Binary files /dev/null and b/public/terrain/18/429279/176950.terrain differ diff --git a/public/terrain/18/429279/176951.terrain b/public/terrain/18/429279/176951.terrain new file mode 100644 index 000000000..8e0f05477 Binary files /dev/null and b/public/terrain/18/429279/176951.terrain differ diff --git a/public/terrain/18/429279/176952.terrain b/public/terrain/18/429279/176952.terrain new file mode 100644 index 000000000..f40bcac23 Binary files /dev/null and b/public/terrain/18/429279/176952.terrain differ diff --git a/public/terrain/18/429279/176953.terrain b/public/terrain/18/429279/176953.terrain new file mode 100644 index 000000000..515dd65aa Binary files /dev/null and b/public/terrain/18/429279/176953.terrain differ diff --git a/public/terrain/18/429279/176954.terrain b/public/terrain/18/429279/176954.terrain new file mode 100644 index 000000000..1d0b47a7e Binary files /dev/null and b/public/terrain/18/429279/176954.terrain differ diff --git a/public/terrain/18/429279/176955.terrain b/public/terrain/18/429279/176955.terrain new file mode 100644 index 000000000..a5670216d Binary files /dev/null and b/public/terrain/18/429279/176955.terrain differ diff --git a/public/terrain/18/429279/176956.terrain b/public/terrain/18/429279/176956.terrain new file mode 100644 index 000000000..7675cc35d Binary files /dev/null and b/public/terrain/18/429279/176956.terrain differ diff --git a/public/terrain/18/429279/176957.terrain b/public/terrain/18/429279/176957.terrain new file mode 100644 index 000000000..d4e003bd4 Binary files /dev/null and b/public/terrain/18/429279/176957.terrain differ diff --git a/public/terrain/18/429279/176958.terrain b/public/terrain/18/429279/176958.terrain new file mode 100644 index 000000000..3dbe71fa8 Binary files /dev/null and b/public/terrain/18/429279/176958.terrain differ diff --git a/public/terrain/18/429279/176959.terrain b/public/terrain/18/429279/176959.terrain new file mode 100644 index 000000000..d641e008a Binary files /dev/null and b/public/terrain/18/429279/176959.terrain differ diff --git a/public/terrain/18/429279/176960.terrain b/public/terrain/18/429279/176960.terrain new file mode 100644 index 000000000..98ab04714 Binary files /dev/null and b/public/terrain/18/429279/176960.terrain differ diff --git a/public/terrain/18/429279/176961.terrain b/public/terrain/18/429279/176961.terrain new file mode 100644 index 000000000..98dedff41 Binary files /dev/null and b/public/terrain/18/429279/176961.terrain differ diff --git a/public/terrain/18/429279/176962.terrain b/public/terrain/18/429279/176962.terrain new file mode 100644 index 000000000..7fd5fe439 Binary files /dev/null and b/public/terrain/18/429279/176962.terrain differ diff --git a/public/terrain/18/429279/176963.terrain b/public/terrain/18/429279/176963.terrain new file mode 100644 index 000000000..9ff123bda Binary files /dev/null and b/public/terrain/18/429279/176963.terrain differ diff --git a/public/terrain/18/429279/176964.terrain b/public/terrain/18/429279/176964.terrain new file mode 100644 index 000000000..3ec2f163e Binary files /dev/null and b/public/terrain/18/429279/176964.terrain differ diff --git a/public/terrain/18/429279/176965.terrain b/public/terrain/18/429279/176965.terrain new file mode 100644 index 000000000..946f2dc4e Binary files /dev/null and b/public/terrain/18/429279/176965.terrain differ diff --git a/public/terrain/18/429279/176966.terrain b/public/terrain/18/429279/176966.terrain new file mode 100644 index 000000000..698274a1a Binary files /dev/null and b/public/terrain/18/429279/176966.terrain differ diff --git a/public/terrain/18/429279/176967.terrain b/public/terrain/18/429279/176967.terrain new file mode 100644 index 000000000..d1331cb07 Binary files /dev/null and b/public/terrain/18/429279/176967.terrain differ diff --git a/public/terrain/18/429279/176968.terrain b/public/terrain/18/429279/176968.terrain new file mode 100644 index 000000000..bb4726881 Binary files /dev/null and b/public/terrain/18/429279/176968.terrain differ diff --git a/public/terrain/18/429279/176969.terrain b/public/terrain/18/429279/176969.terrain new file mode 100644 index 000000000..2b7e4b891 Binary files /dev/null and b/public/terrain/18/429279/176969.terrain differ diff --git a/public/terrain/18/429279/176970.terrain b/public/terrain/18/429279/176970.terrain new file mode 100644 index 000000000..548039a66 Binary files /dev/null and b/public/terrain/18/429279/176970.terrain differ diff --git a/public/terrain/18/429279/176971.terrain b/public/terrain/18/429279/176971.terrain new file mode 100644 index 000000000..329c761cf Binary files /dev/null and b/public/terrain/18/429279/176971.terrain differ diff --git a/public/terrain/18/429279/176972.terrain b/public/terrain/18/429279/176972.terrain new file mode 100644 index 000000000..420bdffd2 Binary files /dev/null and b/public/terrain/18/429279/176972.terrain differ diff --git a/public/terrain/18/429279/176973.terrain b/public/terrain/18/429279/176973.terrain new file mode 100644 index 000000000..937d3a831 Binary files /dev/null and b/public/terrain/18/429279/176973.terrain differ diff --git a/public/terrain/18/429279/176974.terrain b/public/terrain/18/429279/176974.terrain new file mode 100644 index 000000000..66c1101f9 Binary files /dev/null and b/public/terrain/18/429279/176974.terrain differ diff --git a/public/terrain/18/429279/176975.terrain b/public/terrain/18/429279/176975.terrain new file mode 100644 index 000000000..70e3dae89 Binary files /dev/null and b/public/terrain/18/429279/176975.terrain differ diff --git a/public/terrain/18/429279/176976.terrain b/public/terrain/18/429279/176976.terrain new file mode 100644 index 000000000..3eba5159e Binary files /dev/null and b/public/terrain/18/429279/176976.terrain differ diff --git a/public/terrain/18/429279/176977.terrain b/public/terrain/18/429279/176977.terrain new file mode 100644 index 000000000..eff110dea Binary files /dev/null and b/public/terrain/18/429279/176977.terrain differ diff --git a/public/terrain/18/429279/176978.terrain b/public/terrain/18/429279/176978.terrain new file mode 100644 index 000000000..933997cfd Binary files /dev/null and b/public/terrain/18/429279/176978.terrain differ diff --git a/public/terrain/18/429279/176979.terrain b/public/terrain/18/429279/176979.terrain new file mode 100644 index 000000000..ed1cd09c0 Binary files /dev/null and b/public/terrain/18/429279/176979.terrain differ diff --git a/public/terrain/18/429279/176980.terrain b/public/terrain/18/429279/176980.terrain new file mode 100644 index 000000000..dc0221878 Binary files /dev/null and b/public/terrain/18/429279/176980.terrain differ diff --git a/public/terrain/18/429279/176981.terrain b/public/terrain/18/429279/176981.terrain new file mode 100644 index 000000000..5621ce765 Binary files /dev/null and b/public/terrain/18/429279/176981.terrain differ diff --git a/public/terrain/18/429279/176982.terrain b/public/terrain/18/429279/176982.terrain new file mode 100644 index 000000000..94b3d3316 Binary files /dev/null and b/public/terrain/18/429279/176982.terrain differ diff --git a/public/terrain/18/429279/176983.terrain b/public/terrain/18/429279/176983.terrain new file mode 100644 index 000000000..c31afa752 Binary files /dev/null and b/public/terrain/18/429279/176983.terrain differ diff --git a/public/terrain/18/429279/176984.terrain b/public/terrain/18/429279/176984.terrain new file mode 100644 index 000000000..b3ed2bd03 Binary files /dev/null and b/public/terrain/18/429279/176984.terrain differ diff --git a/public/terrain/18/429279/176985.terrain b/public/terrain/18/429279/176985.terrain new file mode 100644 index 000000000..22cd2c081 Binary files /dev/null and b/public/terrain/18/429279/176985.terrain differ diff --git a/public/terrain/18/429279/176986.terrain b/public/terrain/18/429279/176986.terrain new file mode 100644 index 000000000..6e6711a33 Binary files /dev/null and b/public/terrain/18/429279/176986.terrain differ diff --git a/public/terrain/18/429279/176987.terrain b/public/terrain/18/429279/176987.terrain new file mode 100644 index 000000000..49c9b59da Binary files /dev/null and b/public/terrain/18/429279/176987.terrain differ diff --git a/public/terrain/18/429279/176988.terrain b/public/terrain/18/429279/176988.terrain new file mode 100644 index 000000000..0cf2c8ebf Binary files /dev/null and b/public/terrain/18/429279/176988.terrain differ diff --git a/public/terrain/18/429279/176989.terrain b/public/terrain/18/429279/176989.terrain new file mode 100644 index 000000000..044c98620 Binary files /dev/null and b/public/terrain/18/429279/176989.terrain differ diff --git a/public/terrain/18/429279/176990.terrain b/public/terrain/18/429279/176990.terrain new file mode 100644 index 000000000..0d881edd6 Binary files /dev/null and b/public/terrain/18/429279/176990.terrain differ diff --git a/public/terrain/18/429279/176991.terrain b/public/terrain/18/429279/176991.terrain new file mode 100644 index 000000000..36528c9cf Binary files /dev/null and b/public/terrain/18/429279/176991.terrain differ diff --git a/public/terrain/18/429279/176992.terrain b/public/terrain/18/429279/176992.terrain new file mode 100644 index 000000000..57e1b9cd7 Binary files /dev/null and b/public/terrain/18/429279/176992.terrain differ diff --git a/public/terrain/18/429279/176993.terrain b/public/terrain/18/429279/176993.terrain new file mode 100644 index 000000000..986f5bf31 Binary files /dev/null and b/public/terrain/18/429279/176993.terrain differ diff --git a/public/terrain/18/429279/176994.terrain b/public/terrain/18/429279/176994.terrain new file mode 100644 index 000000000..12048da46 Binary files /dev/null and b/public/terrain/18/429279/176994.terrain differ diff --git a/public/terrain/18/429279/176995.terrain b/public/terrain/18/429279/176995.terrain new file mode 100644 index 000000000..b8d9c8b58 Binary files /dev/null and b/public/terrain/18/429279/176995.terrain differ diff --git a/public/terrain/18/429279/176996.terrain b/public/terrain/18/429279/176996.terrain new file mode 100644 index 000000000..c567ee8ae Binary files /dev/null and b/public/terrain/18/429279/176996.terrain differ diff --git a/public/terrain/18/429279/176997.terrain b/public/terrain/18/429279/176997.terrain new file mode 100644 index 000000000..67bcc8137 Binary files /dev/null and b/public/terrain/18/429279/176997.terrain differ diff --git a/public/terrain/18/429279/176998.terrain b/public/terrain/18/429279/176998.terrain new file mode 100644 index 000000000..de214897b Binary files /dev/null and b/public/terrain/18/429279/176998.terrain differ diff --git a/public/terrain/18/429279/176999.terrain b/public/terrain/18/429279/176999.terrain new file mode 100644 index 000000000..0734d5db7 Binary files /dev/null and b/public/terrain/18/429279/176999.terrain differ diff --git a/public/terrain/18/429279/177000.terrain b/public/terrain/18/429279/177000.terrain new file mode 100644 index 000000000..14bb38ce9 Binary files /dev/null and b/public/terrain/18/429279/177000.terrain differ diff --git a/public/terrain/18/429279/177001.terrain b/public/terrain/18/429279/177001.terrain new file mode 100644 index 000000000..1e22a46c3 Binary files /dev/null and b/public/terrain/18/429279/177001.terrain differ diff --git a/public/terrain/18/429279/177002.terrain b/public/terrain/18/429279/177002.terrain new file mode 100644 index 000000000..d3ced5319 Binary files /dev/null and b/public/terrain/18/429279/177002.terrain differ diff --git a/public/terrain/18/429279/177003.terrain b/public/terrain/18/429279/177003.terrain new file mode 100644 index 000000000..578ef0e31 Binary files /dev/null and b/public/terrain/18/429279/177003.terrain differ diff --git a/public/terrain/18/429279/177004.terrain b/public/terrain/18/429279/177004.terrain new file mode 100644 index 000000000..389eeb780 Binary files /dev/null and b/public/terrain/18/429279/177004.terrain differ diff --git a/public/terrain/18/429279/177005.terrain b/public/terrain/18/429279/177005.terrain new file mode 100644 index 000000000..017eee865 Binary files /dev/null and b/public/terrain/18/429279/177005.terrain differ diff --git a/public/terrain/18/429279/177006.terrain b/public/terrain/18/429279/177006.terrain new file mode 100644 index 000000000..67a8cafb3 Binary files /dev/null and b/public/terrain/18/429279/177006.terrain differ diff --git a/public/terrain/18/429279/177007.terrain b/public/terrain/18/429279/177007.terrain new file mode 100644 index 000000000..66a87aef0 Binary files /dev/null and b/public/terrain/18/429279/177007.terrain differ diff --git a/public/terrain/18/429279/177008.terrain b/public/terrain/18/429279/177008.terrain new file mode 100644 index 000000000..6fc0a0e15 Binary files /dev/null and b/public/terrain/18/429279/177008.terrain differ diff --git a/public/terrain/18/429279/177009.terrain b/public/terrain/18/429279/177009.terrain new file mode 100644 index 000000000..e4699b13d Binary files /dev/null and b/public/terrain/18/429279/177009.terrain differ diff --git a/public/terrain/18/429279/177010.terrain b/public/terrain/18/429279/177010.terrain new file mode 100644 index 000000000..c152333eb Binary files /dev/null and b/public/terrain/18/429279/177010.terrain differ diff --git a/public/terrain/18/429279/177011.terrain b/public/terrain/18/429279/177011.terrain new file mode 100644 index 000000000..de1ee02d6 Binary files /dev/null and b/public/terrain/18/429279/177011.terrain differ diff --git a/public/terrain/18/429279/177012.terrain b/public/terrain/18/429279/177012.terrain new file mode 100644 index 000000000..dc7b5a70a Binary files /dev/null and b/public/terrain/18/429279/177012.terrain differ diff --git a/public/terrain/18/429279/177013.terrain b/public/terrain/18/429279/177013.terrain new file mode 100644 index 000000000..f7bc6bbc5 Binary files /dev/null and b/public/terrain/18/429279/177013.terrain differ diff --git a/public/terrain/18/429279/177014.terrain b/public/terrain/18/429279/177014.terrain new file mode 100644 index 000000000..1ee1a88c1 Binary files /dev/null and b/public/terrain/18/429279/177014.terrain differ diff --git a/public/terrain/18/429279/177015.terrain b/public/terrain/18/429279/177015.terrain new file mode 100644 index 000000000..eb422b756 Binary files /dev/null and b/public/terrain/18/429279/177015.terrain differ diff --git a/public/terrain/18/429279/177016.terrain b/public/terrain/18/429279/177016.terrain new file mode 100644 index 000000000..19a9cba12 Binary files /dev/null and b/public/terrain/18/429279/177016.terrain differ diff --git a/public/terrain/18/429279/177017.terrain b/public/terrain/18/429279/177017.terrain new file mode 100644 index 000000000..e2c9dc9d4 Binary files /dev/null and b/public/terrain/18/429279/177017.terrain differ diff --git a/public/terrain/18/429279/177018.terrain b/public/terrain/18/429279/177018.terrain new file mode 100644 index 000000000..a1ab050de Binary files /dev/null and b/public/terrain/18/429279/177018.terrain differ diff --git a/public/terrain/18/429279/177019.terrain b/public/terrain/18/429279/177019.terrain new file mode 100644 index 000000000..ad9a4595b Binary files /dev/null and b/public/terrain/18/429279/177019.terrain differ diff --git a/public/terrain/18/429279/177020.terrain b/public/terrain/18/429279/177020.terrain new file mode 100644 index 000000000..11c70e8e1 Binary files /dev/null and b/public/terrain/18/429279/177020.terrain differ diff --git a/public/terrain/18/429279/177021.terrain b/public/terrain/18/429279/177021.terrain new file mode 100644 index 000000000..e4b7193ec Binary files /dev/null and b/public/terrain/18/429279/177021.terrain differ diff --git a/public/terrain/18/429279/177022.terrain b/public/terrain/18/429279/177022.terrain new file mode 100644 index 000000000..3baf0d38e Binary files /dev/null and b/public/terrain/18/429279/177022.terrain differ diff --git a/public/terrain/18/429279/177023.terrain b/public/terrain/18/429279/177023.terrain new file mode 100644 index 000000000..1ce7e3927 Binary files /dev/null and b/public/terrain/18/429279/177023.terrain differ diff --git a/public/terrain/18/429279/177024.terrain b/public/terrain/18/429279/177024.terrain new file mode 100644 index 000000000..9345aa44a Binary files /dev/null and b/public/terrain/18/429279/177024.terrain differ diff --git a/public/terrain/18/429279/177025.terrain b/public/terrain/18/429279/177025.terrain new file mode 100644 index 000000000..205760a94 Binary files /dev/null and b/public/terrain/18/429279/177025.terrain differ diff --git a/public/terrain/18/429279/177026.terrain b/public/terrain/18/429279/177026.terrain new file mode 100644 index 000000000..3c937b214 Binary files /dev/null and b/public/terrain/18/429279/177026.terrain differ diff --git a/public/terrain/18/429279/177027.terrain b/public/terrain/18/429279/177027.terrain new file mode 100644 index 000000000..a390d1e2a Binary files /dev/null and b/public/terrain/18/429279/177027.terrain differ diff --git a/public/terrain/18/429279/177028.terrain b/public/terrain/18/429279/177028.terrain new file mode 100644 index 000000000..e0c753619 Binary files /dev/null and b/public/terrain/18/429279/177028.terrain differ diff --git a/public/terrain/18/429279/177029.terrain b/public/terrain/18/429279/177029.terrain new file mode 100644 index 000000000..e65c17f2d Binary files /dev/null and b/public/terrain/18/429279/177029.terrain differ diff --git a/public/terrain/18/429280/176871.terrain b/public/terrain/18/429280/176871.terrain new file mode 100644 index 000000000..befff096c Binary files /dev/null and b/public/terrain/18/429280/176871.terrain differ diff --git a/public/terrain/18/429280/176872.terrain b/public/terrain/18/429280/176872.terrain new file mode 100644 index 000000000..646bdd597 Binary files /dev/null and b/public/terrain/18/429280/176872.terrain differ diff --git a/public/terrain/18/429280/176873.terrain b/public/terrain/18/429280/176873.terrain new file mode 100644 index 000000000..7f50146ac Binary files /dev/null and b/public/terrain/18/429280/176873.terrain differ diff --git a/public/terrain/18/429280/176874.terrain b/public/terrain/18/429280/176874.terrain new file mode 100644 index 000000000..318303d25 Binary files /dev/null and b/public/terrain/18/429280/176874.terrain differ diff --git a/public/terrain/18/429280/176875.terrain b/public/terrain/18/429280/176875.terrain new file mode 100644 index 000000000..d35908e6b Binary files /dev/null and b/public/terrain/18/429280/176875.terrain differ diff --git a/public/terrain/18/429280/176876.terrain b/public/terrain/18/429280/176876.terrain new file mode 100644 index 000000000..a458fdca9 Binary files /dev/null and b/public/terrain/18/429280/176876.terrain differ diff --git a/public/terrain/18/429280/176877.terrain b/public/terrain/18/429280/176877.terrain new file mode 100644 index 000000000..7776777ea Binary files /dev/null and b/public/terrain/18/429280/176877.terrain differ diff --git a/public/terrain/18/429280/176878.terrain b/public/terrain/18/429280/176878.terrain new file mode 100644 index 000000000..7dd0652f7 Binary files /dev/null and b/public/terrain/18/429280/176878.terrain differ diff --git a/public/terrain/18/429280/176879.terrain b/public/terrain/18/429280/176879.terrain new file mode 100644 index 000000000..303767166 Binary files /dev/null and b/public/terrain/18/429280/176879.terrain differ diff --git a/public/terrain/18/429280/176880.terrain b/public/terrain/18/429280/176880.terrain new file mode 100644 index 000000000..451a4a9f1 Binary files /dev/null and b/public/terrain/18/429280/176880.terrain differ diff --git a/public/terrain/18/429280/176881.terrain b/public/terrain/18/429280/176881.terrain new file mode 100644 index 000000000..5e39054b9 Binary files /dev/null and b/public/terrain/18/429280/176881.terrain differ diff --git a/public/terrain/18/429280/176882.terrain b/public/terrain/18/429280/176882.terrain new file mode 100644 index 000000000..bdfdd76a1 Binary files /dev/null and b/public/terrain/18/429280/176882.terrain differ diff --git a/public/terrain/18/429280/176883.terrain b/public/terrain/18/429280/176883.terrain new file mode 100644 index 000000000..2b5610584 Binary files /dev/null and b/public/terrain/18/429280/176883.terrain differ diff --git a/public/terrain/18/429280/176884.terrain b/public/terrain/18/429280/176884.terrain new file mode 100644 index 000000000..26f472d8c Binary files /dev/null and b/public/terrain/18/429280/176884.terrain differ diff --git a/public/terrain/18/429280/176885.terrain b/public/terrain/18/429280/176885.terrain new file mode 100644 index 000000000..20ebc609c Binary files /dev/null and b/public/terrain/18/429280/176885.terrain differ diff --git a/public/terrain/18/429280/176886.terrain b/public/terrain/18/429280/176886.terrain new file mode 100644 index 000000000..5fee4ecec Binary files /dev/null and b/public/terrain/18/429280/176886.terrain differ diff --git a/public/terrain/18/429280/176887.terrain b/public/terrain/18/429280/176887.terrain new file mode 100644 index 000000000..105e364f2 Binary files /dev/null and b/public/terrain/18/429280/176887.terrain differ diff --git a/public/terrain/18/429280/176888.terrain b/public/terrain/18/429280/176888.terrain new file mode 100644 index 000000000..41d173275 Binary files /dev/null and b/public/terrain/18/429280/176888.terrain differ diff --git a/public/terrain/18/429280/176889.terrain b/public/terrain/18/429280/176889.terrain new file mode 100644 index 000000000..c79316bfb Binary files /dev/null and b/public/terrain/18/429280/176889.terrain differ diff --git a/public/terrain/18/429280/176890.terrain b/public/terrain/18/429280/176890.terrain new file mode 100644 index 000000000..82b9c8409 Binary files /dev/null and b/public/terrain/18/429280/176890.terrain differ diff --git a/public/terrain/18/429280/176891.terrain b/public/terrain/18/429280/176891.terrain new file mode 100644 index 000000000..13129940e Binary files /dev/null and b/public/terrain/18/429280/176891.terrain differ diff --git a/public/terrain/18/429280/176892.terrain b/public/terrain/18/429280/176892.terrain new file mode 100644 index 000000000..61416ac9a Binary files /dev/null and b/public/terrain/18/429280/176892.terrain differ diff --git a/public/terrain/18/429280/176893.terrain b/public/terrain/18/429280/176893.terrain new file mode 100644 index 000000000..9ad0964dc Binary files /dev/null and b/public/terrain/18/429280/176893.terrain differ diff --git a/public/terrain/18/429280/176894.terrain b/public/terrain/18/429280/176894.terrain new file mode 100644 index 000000000..100ca8e05 Binary files /dev/null and b/public/terrain/18/429280/176894.terrain differ diff --git a/public/terrain/18/429280/176895.terrain b/public/terrain/18/429280/176895.terrain new file mode 100644 index 000000000..670666659 Binary files /dev/null and b/public/terrain/18/429280/176895.terrain differ diff --git a/public/terrain/18/429280/176896.terrain b/public/terrain/18/429280/176896.terrain new file mode 100644 index 000000000..1f0a61b65 Binary files /dev/null and b/public/terrain/18/429280/176896.terrain differ diff --git a/public/terrain/18/429280/176897.terrain b/public/terrain/18/429280/176897.terrain new file mode 100644 index 000000000..d237ad101 Binary files /dev/null and b/public/terrain/18/429280/176897.terrain differ diff --git a/public/terrain/18/429280/176898.terrain b/public/terrain/18/429280/176898.terrain new file mode 100644 index 000000000..fd6f520d7 Binary files /dev/null and b/public/terrain/18/429280/176898.terrain differ diff --git a/public/terrain/18/429280/176899.terrain b/public/terrain/18/429280/176899.terrain new file mode 100644 index 000000000..2b178fe45 Binary files /dev/null and b/public/terrain/18/429280/176899.terrain differ diff --git a/public/terrain/18/429280/176900.terrain b/public/terrain/18/429280/176900.terrain new file mode 100644 index 000000000..3d7cfadae Binary files /dev/null and b/public/terrain/18/429280/176900.terrain differ diff --git a/public/terrain/18/429280/176901.terrain b/public/terrain/18/429280/176901.terrain new file mode 100644 index 000000000..59bd53c85 Binary files /dev/null and b/public/terrain/18/429280/176901.terrain differ diff --git a/public/terrain/18/429280/176902.terrain b/public/terrain/18/429280/176902.terrain new file mode 100644 index 000000000..93380d335 Binary files /dev/null and b/public/terrain/18/429280/176902.terrain differ diff --git a/public/terrain/18/429280/176903.terrain b/public/terrain/18/429280/176903.terrain new file mode 100644 index 000000000..931ea14f3 Binary files /dev/null and b/public/terrain/18/429280/176903.terrain differ diff --git a/public/terrain/18/429280/176904.terrain b/public/terrain/18/429280/176904.terrain new file mode 100644 index 000000000..e0cfc212a Binary files /dev/null and b/public/terrain/18/429280/176904.terrain differ diff --git a/public/terrain/18/429280/176905.terrain b/public/terrain/18/429280/176905.terrain new file mode 100644 index 000000000..e2f7aadc2 Binary files /dev/null and b/public/terrain/18/429280/176905.terrain differ diff --git a/public/terrain/18/429280/176906.terrain b/public/terrain/18/429280/176906.terrain new file mode 100644 index 000000000..fa2a5d195 Binary files /dev/null and b/public/terrain/18/429280/176906.terrain differ diff --git a/public/terrain/18/429280/176907.terrain b/public/terrain/18/429280/176907.terrain new file mode 100644 index 000000000..e2f27f9f1 Binary files /dev/null and b/public/terrain/18/429280/176907.terrain differ diff --git a/public/terrain/18/429280/176908.terrain b/public/terrain/18/429280/176908.terrain new file mode 100644 index 000000000..46bc25fbd Binary files /dev/null and b/public/terrain/18/429280/176908.terrain differ diff --git a/public/terrain/18/429280/176909.terrain b/public/terrain/18/429280/176909.terrain new file mode 100644 index 000000000..76949f653 Binary files /dev/null and b/public/terrain/18/429280/176909.terrain differ diff --git a/public/terrain/18/429280/176910.terrain b/public/terrain/18/429280/176910.terrain new file mode 100644 index 000000000..0ce2bf150 Binary files /dev/null and b/public/terrain/18/429280/176910.terrain differ diff --git a/public/terrain/18/429280/176911.terrain b/public/terrain/18/429280/176911.terrain new file mode 100644 index 000000000..341a3fbaa Binary files /dev/null and b/public/terrain/18/429280/176911.terrain differ diff --git a/public/terrain/18/429280/176912.terrain b/public/terrain/18/429280/176912.terrain new file mode 100644 index 000000000..64e77ed5d Binary files /dev/null and b/public/terrain/18/429280/176912.terrain differ diff --git a/public/terrain/18/429280/176913.terrain b/public/terrain/18/429280/176913.terrain new file mode 100644 index 000000000..40eb8aa87 Binary files /dev/null and b/public/terrain/18/429280/176913.terrain differ diff --git a/public/terrain/18/429280/176914.terrain b/public/terrain/18/429280/176914.terrain new file mode 100644 index 000000000..8114eb82d Binary files /dev/null and b/public/terrain/18/429280/176914.terrain differ diff --git a/public/terrain/18/429280/176915.terrain b/public/terrain/18/429280/176915.terrain new file mode 100644 index 000000000..1cb98606b Binary files /dev/null and b/public/terrain/18/429280/176915.terrain differ diff --git a/public/terrain/18/429280/176916.terrain b/public/terrain/18/429280/176916.terrain new file mode 100644 index 000000000..67cfbfe27 Binary files /dev/null and b/public/terrain/18/429280/176916.terrain differ diff --git a/public/terrain/18/429280/176917.terrain b/public/terrain/18/429280/176917.terrain new file mode 100644 index 000000000..a5e848dbb Binary files /dev/null and b/public/terrain/18/429280/176917.terrain differ diff --git a/public/terrain/18/429280/176918.terrain b/public/terrain/18/429280/176918.terrain new file mode 100644 index 000000000..829804778 Binary files /dev/null and b/public/terrain/18/429280/176918.terrain differ diff --git a/public/terrain/18/429280/176919.terrain b/public/terrain/18/429280/176919.terrain new file mode 100644 index 000000000..3f3856d03 Binary files /dev/null and b/public/terrain/18/429280/176919.terrain differ diff --git a/public/terrain/18/429280/176920.terrain b/public/terrain/18/429280/176920.terrain new file mode 100644 index 000000000..225875595 Binary files /dev/null and b/public/terrain/18/429280/176920.terrain differ diff --git a/public/terrain/18/429280/176921.terrain b/public/terrain/18/429280/176921.terrain new file mode 100644 index 000000000..97497a3c4 Binary files /dev/null and b/public/terrain/18/429280/176921.terrain differ diff --git a/public/terrain/18/429280/176922.terrain b/public/terrain/18/429280/176922.terrain new file mode 100644 index 000000000..9109bfd27 Binary files /dev/null and b/public/terrain/18/429280/176922.terrain differ diff --git a/public/terrain/18/429280/176923.terrain b/public/terrain/18/429280/176923.terrain new file mode 100644 index 000000000..77fe34786 Binary files /dev/null and b/public/terrain/18/429280/176923.terrain differ diff --git a/public/terrain/18/429280/176924.terrain b/public/terrain/18/429280/176924.terrain new file mode 100644 index 000000000..4cf0105cc Binary files /dev/null and b/public/terrain/18/429280/176924.terrain differ diff --git a/public/terrain/18/429280/176925.terrain b/public/terrain/18/429280/176925.terrain new file mode 100644 index 000000000..127ec7773 Binary files /dev/null and b/public/terrain/18/429280/176925.terrain differ diff --git a/public/terrain/18/429280/176926.terrain b/public/terrain/18/429280/176926.terrain new file mode 100644 index 000000000..16ecc3aa8 Binary files /dev/null and b/public/terrain/18/429280/176926.terrain differ diff --git a/public/terrain/18/429280/176927.terrain b/public/terrain/18/429280/176927.terrain new file mode 100644 index 000000000..65c1c58e1 Binary files /dev/null and b/public/terrain/18/429280/176927.terrain differ diff --git a/public/terrain/18/429280/176928.terrain b/public/terrain/18/429280/176928.terrain new file mode 100644 index 000000000..f90bbe6ac Binary files /dev/null and b/public/terrain/18/429280/176928.terrain differ diff --git a/public/terrain/18/429280/176929.terrain b/public/terrain/18/429280/176929.terrain new file mode 100644 index 000000000..6d1ce5ba1 Binary files /dev/null and b/public/terrain/18/429280/176929.terrain differ diff --git a/public/terrain/18/429280/176930.terrain b/public/terrain/18/429280/176930.terrain new file mode 100644 index 000000000..2dca8ebbc Binary files /dev/null and b/public/terrain/18/429280/176930.terrain differ diff --git a/public/terrain/18/429280/176931.terrain b/public/terrain/18/429280/176931.terrain new file mode 100644 index 000000000..e3ae47289 Binary files /dev/null and b/public/terrain/18/429280/176931.terrain differ diff --git a/public/terrain/18/429280/176932.terrain b/public/terrain/18/429280/176932.terrain new file mode 100644 index 000000000..94eb8ab3b Binary files /dev/null and b/public/terrain/18/429280/176932.terrain differ diff --git a/public/terrain/18/429280/176933.terrain b/public/terrain/18/429280/176933.terrain new file mode 100644 index 000000000..5b3ae5df5 Binary files /dev/null and b/public/terrain/18/429280/176933.terrain differ diff --git a/public/terrain/18/429280/176934.terrain b/public/terrain/18/429280/176934.terrain new file mode 100644 index 000000000..ac972b952 Binary files /dev/null and b/public/terrain/18/429280/176934.terrain differ diff --git a/public/terrain/18/429280/176935.terrain b/public/terrain/18/429280/176935.terrain new file mode 100644 index 000000000..e4022ac1d Binary files /dev/null and b/public/terrain/18/429280/176935.terrain differ diff --git a/public/terrain/18/429280/176936.terrain b/public/terrain/18/429280/176936.terrain new file mode 100644 index 000000000..4bc7a1034 Binary files /dev/null and b/public/terrain/18/429280/176936.terrain differ diff --git a/public/terrain/18/429280/176937.terrain b/public/terrain/18/429280/176937.terrain new file mode 100644 index 000000000..753a8b61f Binary files /dev/null and b/public/terrain/18/429280/176937.terrain differ diff --git a/public/terrain/18/429280/176938.terrain b/public/terrain/18/429280/176938.terrain new file mode 100644 index 000000000..0ba2d2d97 Binary files /dev/null and b/public/terrain/18/429280/176938.terrain differ diff --git a/public/terrain/18/429280/176939.terrain b/public/terrain/18/429280/176939.terrain new file mode 100644 index 000000000..c9f165335 Binary files /dev/null and b/public/terrain/18/429280/176939.terrain differ diff --git a/public/terrain/18/429280/176940.terrain b/public/terrain/18/429280/176940.terrain new file mode 100644 index 000000000..30ea0c1f5 Binary files /dev/null and b/public/terrain/18/429280/176940.terrain differ diff --git a/public/terrain/18/429280/176941.terrain b/public/terrain/18/429280/176941.terrain new file mode 100644 index 000000000..34221049a Binary files /dev/null and b/public/terrain/18/429280/176941.terrain differ diff --git a/public/terrain/18/429280/176942.terrain b/public/terrain/18/429280/176942.terrain new file mode 100644 index 000000000..a7f46ad42 Binary files /dev/null and b/public/terrain/18/429280/176942.terrain differ diff --git a/public/terrain/18/429280/176943.terrain b/public/terrain/18/429280/176943.terrain new file mode 100644 index 000000000..76602d79b Binary files /dev/null and b/public/terrain/18/429280/176943.terrain differ diff --git a/public/terrain/18/429280/176944.terrain b/public/terrain/18/429280/176944.terrain new file mode 100644 index 000000000..566e86d15 Binary files /dev/null and b/public/terrain/18/429280/176944.terrain differ diff --git a/public/terrain/18/429280/176945.terrain b/public/terrain/18/429280/176945.terrain new file mode 100644 index 000000000..b36bc394e Binary files /dev/null and b/public/terrain/18/429280/176945.terrain differ diff --git a/public/terrain/18/429280/176946.terrain b/public/terrain/18/429280/176946.terrain new file mode 100644 index 000000000..8f00f5995 Binary files /dev/null and b/public/terrain/18/429280/176946.terrain differ diff --git a/public/terrain/18/429280/176947.terrain b/public/terrain/18/429280/176947.terrain new file mode 100644 index 000000000..52b082a15 Binary files /dev/null and b/public/terrain/18/429280/176947.terrain differ diff --git a/public/terrain/18/429280/176948.terrain b/public/terrain/18/429280/176948.terrain new file mode 100644 index 000000000..682ce78f6 Binary files /dev/null and b/public/terrain/18/429280/176948.terrain differ diff --git a/public/terrain/18/429280/176949.terrain b/public/terrain/18/429280/176949.terrain new file mode 100644 index 000000000..6a6cdef7e Binary files /dev/null and b/public/terrain/18/429280/176949.terrain differ diff --git a/public/terrain/18/429280/176950.terrain b/public/terrain/18/429280/176950.terrain new file mode 100644 index 000000000..9105aa6cc Binary files /dev/null and b/public/terrain/18/429280/176950.terrain differ diff --git a/public/terrain/18/429280/176951.terrain b/public/terrain/18/429280/176951.terrain new file mode 100644 index 000000000..010ec43df Binary files /dev/null and b/public/terrain/18/429280/176951.terrain differ diff --git a/public/terrain/18/429280/176952.terrain b/public/terrain/18/429280/176952.terrain new file mode 100644 index 000000000..1c7108ba4 Binary files /dev/null and b/public/terrain/18/429280/176952.terrain differ diff --git a/public/terrain/18/429280/176953.terrain b/public/terrain/18/429280/176953.terrain new file mode 100644 index 000000000..d26e7488b Binary files /dev/null and b/public/terrain/18/429280/176953.terrain differ diff --git a/public/terrain/18/429280/176954.terrain b/public/terrain/18/429280/176954.terrain new file mode 100644 index 000000000..27f5817e1 Binary files /dev/null and b/public/terrain/18/429280/176954.terrain differ diff --git a/public/terrain/18/429280/176955.terrain b/public/terrain/18/429280/176955.terrain new file mode 100644 index 000000000..da5b689e8 Binary files /dev/null and b/public/terrain/18/429280/176955.terrain differ diff --git a/public/terrain/18/429280/176956.terrain b/public/terrain/18/429280/176956.terrain new file mode 100644 index 000000000..7b0eac1b4 Binary files /dev/null and b/public/terrain/18/429280/176956.terrain differ diff --git a/public/terrain/18/429280/176957.terrain b/public/terrain/18/429280/176957.terrain new file mode 100644 index 000000000..2ac30452b Binary files /dev/null and b/public/terrain/18/429280/176957.terrain differ diff --git a/public/terrain/18/429280/176958.terrain b/public/terrain/18/429280/176958.terrain new file mode 100644 index 000000000..e0610af40 Binary files /dev/null and b/public/terrain/18/429280/176958.terrain differ diff --git a/public/terrain/18/429280/176959.terrain b/public/terrain/18/429280/176959.terrain new file mode 100644 index 000000000..d9306ad54 Binary files /dev/null and b/public/terrain/18/429280/176959.terrain differ diff --git a/public/terrain/18/429280/176960.terrain b/public/terrain/18/429280/176960.terrain new file mode 100644 index 000000000..c9865be9c Binary files /dev/null and b/public/terrain/18/429280/176960.terrain differ diff --git a/public/terrain/18/429280/176961.terrain b/public/terrain/18/429280/176961.terrain new file mode 100644 index 000000000..c05f5913a Binary files /dev/null and b/public/terrain/18/429280/176961.terrain differ diff --git a/public/terrain/18/429280/176962.terrain b/public/terrain/18/429280/176962.terrain new file mode 100644 index 000000000..e3b26a734 Binary files /dev/null and b/public/terrain/18/429280/176962.terrain differ diff --git a/public/terrain/18/429280/176963.terrain b/public/terrain/18/429280/176963.terrain new file mode 100644 index 000000000..28be28170 Binary files /dev/null and b/public/terrain/18/429280/176963.terrain differ diff --git a/public/terrain/18/429280/176964.terrain b/public/terrain/18/429280/176964.terrain new file mode 100644 index 000000000..b21b25b5a Binary files /dev/null and b/public/terrain/18/429280/176964.terrain differ diff --git a/public/terrain/18/429280/176965.terrain b/public/terrain/18/429280/176965.terrain new file mode 100644 index 000000000..f508ad36c Binary files /dev/null and b/public/terrain/18/429280/176965.terrain differ diff --git a/public/terrain/18/429280/176966.terrain b/public/terrain/18/429280/176966.terrain new file mode 100644 index 000000000..bf037df5a Binary files /dev/null and b/public/terrain/18/429280/176966.terrain differ diff --git a/public/terrain/18/429280/176967.terrain b/public/terrain/18/429280/176967.terrain new file mode 100644 index 000000000..8f95c826b Binary files /dev/null and b/public/terrain/18/429280/176967.terrain differ diff --git a/public/terrain/18/429280/176968.terrain b/public/terrain/18/429280/176968.terrain new file mode 100644 index 000000000..180b816f7 Binary files /dev/null and b/public/terrain/18/429280/176968.terrain differ diff --git a/public/terrain/18/429280/176969.terrain b/public/terrain/18/429280/176969.terrain new file mode 100644 index 000000000..0ee44c9e7 Binary files /dev/null and b/public/terrain/18/429280/176969.terrain differ diff --git a/public/terrain/18/429280/176970.terrain b/public/terrain/18/429280/176970.terrain new file mode 100644 index 000000000..952095eb4 Binary files /dev/null and b/public/terrain/18/429280/176970.terrain differ diff --git a/public/terrain/18/429280/176971.terrain b/public/terrain/18/429280/176971.terrain new file mode 100644 index 000000000..9b4819047 Binary files /dev/null and b/public/terrain/18/429280/176971.terrain differ diff --git a/public/terrain/18/429280/176972.terrain b/public/terrain/18/429280/176972.terrain new file mode 100644 index 000000000..84d3332c0 Binary files /dev/null and b/public/terrain/18/429280/176972.terrain differ diff --git a/public/terrain/18/429280/176973.terrain b/public/terrain/18/429280/176973.terrain new file mode 100644 index 000000000..7430924fd Binary files /dev/null and b/public/terrain/18/429280/176973.terrain differ diff --git a/public/terrain/18/429280/176974.terrain b/public/terrain/18/429280/176974.terrain new file mode 100644 index 000000000..031183006 Binary files /dev/null and b/public/terrain/18/429280/176974.terrain differ diff --git a/public/terrain/18/429280/176975.terrain b/public/terrain/18/429280/176975.terrain new file mode 100644 index 000000000..4bb60e0f2 Binary files /dev/null and b/public/terrain/18/429280/176975.terrain differ diff --git a/public/terrain/18/429280/176976.terrain b/public/terrain/18/429280/176976.terrain new file mode 100644 index 000000000..716352fb8 Binary files /dev/null and b/public/terrain/18/429280/176976.terrain differ diff --git a/public/terrain/18/429280/176977.terrain b/public/terrain/18/429280/176977.terrain new file mode 100644 index 000000000..14cc4b55f Binary files /dev/null and b/public/terrain/18/429280/176977.terrain differ diff --git a/public/terrain/18/429280/176978.terrain b/public/terrain/18/429280/176978.terrain new file mode 100644 index 000000000..3c360afb6 Binary files /dev/null and b/public/terrain/18/429280/176978.terrain differ diff --git a/public/terrain/18/429280/176979.terrain b/public/terrain/18/429280/176979.terrain new file mode 100644 index 000000000..2cba2b634 Binary files /dev/null and b/public/terrain/18/429280/176979.terrain differ diff --git a/public/terrain/18/429280/176980.terrain b/public/terrain/18/429280/176980.terrain new file mode 100644 index 000000000..e0afc04f2 Binary files /dev/null and b/public/terrain/18/429280/176980.terrain differ diff --git a/public/terrain/18/429280/176981.terrain b/public/terrain/18/429280/176981.terrain new file mode 100644 index 000000000..055b56c41 Binary files /dev/null and b/public/terrain/18/429280/176981.terrain differ diff --git a/public/terrain/18/429280/176982.terrain b/public/terrain/18/429280/176982.terrain new file mode 100644 index 000000000..687fac6d2 Binary files /dev/null and b/public/terrain/18/429280/176982.terrain differ diff --git a/public/terrain/18/429280/176983.terrain b/public/terrain/18/429280/176983.terrain new file mode 100644 index 000000000..1aa07c251 Binary files /dev/null and b/public/terrain/18/429280/176983.terrain differ diff --git a/public/terrain/18/429280/176984.terrain b/public/terrain/18/429280/176984.terrain new file mode 100644 index 000000000..83911a8a3 Binary files /dev/null and b/public/terrain/18/429280/176984.terrain differ diff --git a/public/terrain/18/429280/176985.terrain b/public/terrain/18/429280/176985.terrain new file mode 100644 index 000000000..926d2bf12 Binary files /dev/null and b/public/terrain/18/429280/176985.terrain differ diff --git a/public/terrain/18/429280/176986.terrain b/public/terrain/18/429280/176986.terrain new file mode 100644 index 000000000..e0869ebe8 Binary files /dev/null and b/public/terrain/18/429280/176986.terrain differ diff --git a/public/terrain/18/429280/176987.terrain b/public/terrain/18/429280/176987.terrain new file mode 100644 index 000000000..6bc6842a5 Binary files /dev/null and b/public/terrain/18/429280/176987.terrain differ diff --git a/public/terrain/18/429280/176988.terrain b/public/terrain/18/429280/176988.terrain new file mode 100644 index 000000000..a9c47dc74 Binary files /dev/null and b/public/terrain/18/429280/176988.terrain differ diff --git a/public/terrain/18/429280/176989.terrain b/public/terrain/18/429280/176989.terrain new file mode 100644 index 000000000..82be224ca Binary files /dev/null and b/public/terrain/18/429280/176989.terrain differ diff --git a/public/terrain/18/429280/176990.terrain b/public/terrain/18/429280/176990.terrain new file mode 100644 index 000000000..8d50dd4fa Binary files /dev/null and b/public/terrain/18/429280/176990.terrain differ diff --git a/public/terrain/18/429280/176991.terrain b/public/terrain/18/429280/176991.terrain new file mode 100644 index 000000000..368b0b1b6 Binary files /dev/null and b/public/terrain/18/429280/176991.terrain differ diff --git a/public/terrain/18/429280/176992.terrain b/public/terrain/18/429280/176992.terrain new file mode 100644 index 000000000..2c9c16159 Binary files /dev/null and b/public/terrain/18/429280/176992.terrain differ diff --git a/public/terrain/18/429280/176993.terrain b/public/terrain/18/429280/176993.terrain new file mode 100644 index 000000000..67449f263 Binary files /dev/null and b/public/terrain/18/429280/176993.terrain differ diff --git a/public/terrain/18/429280/176994.terrain b/public/terrain/18/429280/176994.terrain new file mode 100644 index 000000000..2648a7e4e Binary files /dev/null and b/public/terrain/18/429280/176994.terrain differ diff --git a/public/terrain/18/429280/176995.terrain b/public/terrain/18/429280/176995.terrain new file mode 100644 index 000000000..2657b2894 Binary files /dev/null and b/public/terrain/18/429280/176995.terrain differ diff --git a/public/terrain/18/429280/176996.terrain b/public/terrain/18/429280/176996.terrain new file mode 100644 index 000000000..d374623e5 Binary files /dev/null and b/public/terrain/18/429280/176996.terrain differ diff --git a/public/terrain/18/429280/176997.terrain b/public/terrain/18/429280/176997.terrain new file mode 100644 index 000000000..c97959534 Binary files /dev/null and b/public/terrain/18/429280/176997.terrain differ diff --git a/public/terrain/18/429280/176998.terrain b/public/terrain/18/429280/176998.terrain new file mode 100644 index 000000000..c44cdd4dd Binary files /dev/null and b/public/terrain/18/429280/176998.terrain differ diff --git a/public/terrain/18/429280/176999.terrain b/public/terrain/18/429280/176999.terrain new file mode 100644 index 000000000..bcf891e7f Binary files /dev/null and b/public/terrain/18/429280/176999.terrain differ diff --git a/public/terrain/18/429280/177000.terrain b/public/terrain/18/429280/177000.terrain new file mode 100644 index 000000000..b016e2d7f Binary files /dev/null and b/public/terrain/18/429280/177000.terrain differ diff --git a/public/terrain/18/429280/177001.terrain b/public/terrain/18/429280/177001.terrain new file mode 100644 index 000000000..63500de53 Binary files /dev/null and b/public/terrain/18/429280/177001.terrain differ diff --git a/public/terrain/18/429280/177002.terrain b/public/terrain/18/429280/177002.terrain new file mode 100644 index 000000000..448fb89a1 Binary files /dev/null and b/public/terrain/18/429280/177002.terrain differ diff --git a/public/terrain/18/429280/177003.terrain b/public/terrain/18/429280/177003.terrain new file mode 100644 index 000000000..7d27cf6e7 Binary files /dev/null and b/public/terrain/18/429280/177003.terrain differ diff --git a/public/terrain/18/429280/177004.terrain b/public/terrain/18/429280/177004.terrain new file mode 100644 index 000000000..b085b0a50 Binary files /dev/null and b/public/terrain/18/429280/177004.terrain differ diff --git a/public/terrain/18/429280/177005.terrain b/public/terrain/18/429280/177005.terrain new file mode 100644 index 000000000..81a82c981 Binary files /dev/null and b/public/terrain/18/429280/177005.terrain differ diff --git a/public/terrain/18/429280/177006.terrain b/public/terrain/18/429280/177006.terrain new file mode 100644 index 000000000..2a687b1a8 Binary files /dev/null and b/public/terrain/18/429280/177006.terrain differ diff --git a/public/terrain/18/429280/177007.terrain b/public/terrain/18/429280/177007.terrain new file mode 100644 index 000000000..ab13f26bb Binary files /dev/null and b/public/terrain/18/429280/177007.terrain differ diff --git a/public/terrain/18/429280/177008.terrain b/public/terrain/18/429280/177008.terrain new file mode 100644 index 000000000..0903be1e1 Binary files /dev/null and b/public/terrain/18/429280/177008.terrain differ diff --git a/public/terrain/18/429280/177009.terrain b/public/terrain/18/429280/177009.terrain new file mode 100644 index 000000000..375bc1809 Binary files /dev/null and b/public/terrain/18/429280/177009.terrain differ diff --git a/public/terrain/18/429280/177010.terrain b/public/terrain/18/429280/177010.terrain new file mode 100644 index 000000000..8000df0ca Binary files /dev/null and b/public/terrain/18/429280/177010.terrain differ diff --git a/public/terrain/18/429280/177011.terrain b/public/terrain/18/429280/177011.terrain new file mode 100644 index 000000000..1da091bfd Binary files /dev/null and b/public/terrain/18/429280/177011.terrain differ diff --git a/public/terrain/18/429280/177012.terrain b/public/terrain/18/429280/177012.terrain new file mode 100644 index 000000000..ead65d056 Binary files /dev/null and b/public/terrain/18/429280/177012.terrain differ diff --git a/public/terrain/18/429280/177013.terrain b/public/terrain/18/429280/177013.terrain new file mode 100644 index 000000000..46de32f31 Binary files /dev/null and b/public/terrain/18/429280/177013.terrain differ diff --git a/public/terrain/18/429280/177014.terrain b/public/terrain/18/429280/177014.terrain new file mode 100644 index 000000000..9afd08124 Binary files /dev/null and b/public/terrain/18/429280/177014.terrain differ diff --git a/public/terrain/18/429280/177015.terrain b/public/terrain/18/429280/177015.terrain new file mode 100644 index 000000000..c172cac77 Binary files /dev/null and b/public/terrain/18/429280/177015.terrain differ diff --git a/public/terrain/18/429280/177016.terrain b/public/terrain/18/429280/177016.terrain new file mode 100644 index 000000000..b69f8486e Binary files /dev/null and b/public/terrain/18/429280/177016.terrain differ diff --git a/public/terrain/18/429280/177017.terrain b/public/terrain/18/429280/177017.terrain new file mode 100644 index 000000000..93eedb61d Binary files /dev/null and b/public/terrain/18/429280/177017.terrain differ diff --git a/public/terrain/18/429280/177018.terrain b/public/terrain/18/429280/177018.terrain new file mode 100644 index 000000000..ada7c5cfe Binary files /dev/null and b/public/terrain/18/429280/177018.terrain differ diff --git a/public/terrain/18/429280/177019.terrain b/public/terrain/18/429280/177019.terrain new file mode 100644 index 000000000..a906f269d Binary files /dev/null and b/public/terrain/18/429280/177019.terrain differ diff --git a/public/terrain/18/429280/177020.terrain b/public/terrain/18/429280/177020.terrain new file mode 100644 index 000000000..5123c5d56 Binary files /dev/null and b/public/terrain/18/429280/177020.terrain differ diff --git a/public/terrain/18/429280/177021.terrain b/public/terrain/18/429280/177021.terrain new file mode 100644 index 000000000..c4cebea40 Binary files /dev/null and b/public/terrain/18/429280/177021.terrain differ diff --git a/public/terrain/18/429280/177022.terrain b/public/terrain/18/429280/177022.terrain new file mode 100644 index 000000000..218532f22 Binary files /dev/null and b/public/terrain/18/429280/177022.terrain differ diff --git a/public/terrain/18/429280/177023.terrain b/public/terrain/18/429280/177023.terrain new file mode 100644 index 000000000..eb0293f45 Binary files /dev/null and b/public/terrain/18/429280/177023.terrain differ diff --git a/public/terrain/18/429280/177024.terrain b/public/terrain/18/429280/177024.terrain new file mode 100644 index 000000000..f7621cae3 Binary files /dev/null and b/public/terrain/18/429280/177024.terrain differ diff --git a/public/terrain/18/429280/177025.terrain b/public/terrain/18/429280/177025.terrain new file mode 100644 index 000000000..91031a200 Binary files /dev/null and b/public/terrain/18/429280/177025.terrain differ diff --git a/public/terrain/18/429280/177026.terrain b/public/terrain/18/429280/177026.terrain new file mode 100644 index 000000000..670cde9e9 Binary files /dev/null and b/public/terrain/18/429280/177026.terrain differ diff --git a/public/terrain/18/429280/177027.terrain b/public/terrain/18/429280/177027.terrain new file mode 100644 index 000000000..2350572c9 Binary files /dev/null and b/public/terrain/18/429280/177027.terrain differ diff --git a/public/terrain/18/429280/177028.terrain b/public/terrain/18/429280/177028.terrain new file mode 100644 index 000000000..65d3ad191 Binary files /dev/null and b/public/terrain/18/429280/177028.terrain differ diff --git a/public/terrain/18/429280/177029.terrain b/public/terrain/18/429280/177029.terrain new file mode 100644 index 000000000..cba2ddeca Binary files /dev/null and b/public/terrain/18/429280/177029.terrain differ diff --git a/public/terrain/18/429281/176871.terrain b/public/terrain/18/429281/176871.terrain new file mode 100644 index 000000000..ef108cc24 Binary files /dev/null and b/public/terrain/18/429281/176871.terrain differ diff --git a/public/terrain/18/429281/176872.terrain b/public/terrain/18/429281/176872.terrain new file mode 100644 index 000000000..61c2ef1d5 Binary files /dev/null and b/public/terrain/18/429281/176872.terrain differ diff --git a/public/terrain/18/429281/176873.terrain b/public/terrain/18/429281/176873.terrain new file mode 100644 index 000000000..9dd370054 Binary files /dev/null and b/public/terrain/18/429281/176873.terrain differ diff --git a/public/terrain/18/429281/176874.terrain b/public/terrain/18/429281/176874.terrain new file mode 100644 index 000000000..1e31ad170 Binary files /dev/null and b/public/terrain/18/429281/176874.terrain differ diff --git a/public/terrain/18/429281/176875.terrain b/public/terrain/18/429281/176875.terrain new file mode 100644 index 000000000..262762b97 Binary files /dev/null and b/public/terrain/18/429281/176875.terrain differ diff --git a/public/terrain/18/429281/176876.terrain b/public/terrain/18/429281/176876.terrain new file mode 100644 index 000000000..d836df696 Binary files /dev/null and b/public/terrain/18/429281/176876.terrain differ diff --git a/public/terrain/18/429281/176877.terrain b/public/terrain/18/429281/176877.terrain new file mode 100644 index 000000000..d51551250 Binary files /dev/null and b/public/terrain/18/429281/176877.terrain differ diff --git a/public/terrain/18/429281/176878.terrain b/public/terrain/18/429281/176878.terrain new file mode 100644 index 000000000..73e24ef5e Binary files /dev/null and b/public/terrain/18/429281/176878.terrain differ diff --git a/public/terrain/18/429281/176879.terrain b/public/terrain/18/429281/176879.terrain new file mode 100644 index 000000000..057c16e15 Binary files /dev/null and b/public/terrain/18/429281/176879.terrain differ diff --git a/public/terrain/18/429281/176880.terrain b/public/terrain/18/429281/176880.terrain new file mode 100644 index 000000000..445b46ed7 Binary files /dev/null and b/public/terrain/18/429281/176880.terrain differ diff --git a/public/terrain/18/429281/176881.terrain b/public/terrain/18/429281/176881.terrain new file mode 100644 index 000000000..7ffe5362e Binary files /dev/null and b/public/terrain/18/429281/176881.terrain differ diff --git a/public/terrain/18/429281/176882.terrain b/public/terrain/18/429281/176882.terrain new file mode 100644 index 000000000..78f4333bd Binary files /dev/null and b/public/terrain/18/429281/176882.terrain differ diff --git a/public/terrain/18/429281/176883.terrain b/public/terrain/18/429281/176883.terrain new file mode 100644 index 000000000..44c973493 Binary files /dev/null and b/public/terrain/18/429281/176883.terrain differ diff --git a/public/terrain/18/429281/176884.terrain b/public/terrain/18/429281/176884.terrain new file mode 100644 index 000000000..b7b5387e1 Binary files /dev/null and b/public/terrain/18/429281/176884.terrain differ diff --git a/public/terrain/18/429281/176885.terrain b/public/terrain/18/429281/176885.terrain new file mode 100644 index 000000000..236f67a5e Binary files /dev/null and b/public/terrain/18/429281/176885.terrain differ diff --git a/public/terrain/18/429281/176886.terrain b/public/terrain/18/429281/176886.terrain new file mode 100644 index 000000000..94904fff5 Binary files /dev/null and b/public/terrain/18/429281/176886.terrain differ diff --git a/public/terrain/18/429281/176887.terrain b/public/terrain/18/429281/176887.terrain new file mode 100644 index 000000000..ba84e95bf Binary files /dev/null and b/public/terrain/18/429281/176887.terrain differ diff --git a/public/terrain/18/429281/176888.terrain b/public/terrain/18/429281/176888.terrain new file mode 100644 index 000000000..60563fa84 Binary files /dev/null and b/public/terrain/18/429281/176888.terrain differ diff --git a/public/terrain/18/429281/176889.terrain b/public/terrain/18/429281/176889.terrain new file mode 100644 index 000000000..963ba5c7b Binary files /dev/null and b/public/terrain/18/429281/176889.terrain differ diff --git a/public/terrain/18/429281/176890.terrain b/public/terrain/18/429281/176890.terrain new file mode 100644 index 000000000..fa16d30c0 Binary files /dev/null and b/public/terrain/18/429281/176890.terrain differ diff --git a/public/terrain/18/429281/176891.terrain b/public/terrain/18/429281/176891.terrain new file mode 100644 index 000000000..78b032e46 Binary files /dev/null and b/public/terrain/18/429281/176891.terrain differ diff --git a/public/terrain/18/429281/176892.terrain b/public/terrain/18/429281/176892.terrain new file mode 100644 index 000000000..5d2b42a47 Binary files /dev/null and b/public/terrain/18/429281/176892.terrain differ diff --git a/public/terrain/18/429281/176893.terrain b/public/terrain/18/429281/176893.terrain new file mode 100644 index 000000000..6ce6d4451 Binary files /dev/null and b/public/terrain/18/429281/176893.terrain differ diff --git a/public/terrain/18/429281/176894.terrain b/public/terrain/18/429281/176894.terrain new file mode 100644 index 000000000..1e971bd62 Binary files /dev/null and b/public/terrain/18/429281/176894.terrain differ diff --git a/public/terrain/18/429281/176895.terrain b/public/terrain/18/429281/176895.terrain new file mode 100644 index 000000000..b848836fe Binary files /dev/null and b/public/terrain/18/429281/176895.terrain differ diff --git a/public/terrain/18/429281/176896.terrain b/public/terrain/18/429281/176896.terrain new file mode 100644 index 000000000..3b2a38880 Binary files /dev/null and b/public/terrain/18/429281/176896.terrain differ diff --git a/public/terrain/18/429281/176897.terrain b/public/terrain/18/429281/176897.terrain new file mode 100644 index 000000000..ef0ddf1ca Binary files /dev/null and b/public/terrain/18/429281/176897.terrain differ diff --git a/public/terrain/18/429281/176898.terrain b/public/terrain/18/429281/176898.terrain new file mode 100644 index 000000000..5e8354a4a Binary files /dev/null and b/public/terrain/18/429281/176898.terrain differ diff --git a/public/terrain/18/429281/176899.terrain b/public/terrain/18/429281/176899.terrain new file mode 100644 index 000000000..08e7eb308 Binary files /dev/null and b/public/terrain/18/429281/176899.terrain differ diff --git a/public/terrain/18/429281/176900.terrain b/public/terrain/18/429281/176900.terrain new file mode 100644 index 000000000..310d06040 Binary files /dev/null and b/public/terrain/18/429281/176900.terrain differ diff --git a/public/terrain/18/429281/176901.terrain b/public/terrain/18/429281/176901.terrain new file mode 100644 index 000000000..32273c6b1 Binary files /dev/null and b/public/terrain/18/429281/176901.terrain differ diff --git a/public/terrain/18/429281/176902.terrain b/public/terrain/18/429281/176902.terrain new file mode 100644 index 000000000..26d04c732 Binary files /dev/null and b/public/terrain/18/429281/176902.terrain differ diff --git a/public/terrain/18/429281/176903.terrain b/public/terrain/18/429281/176903.terrain new file mode 100644 index 000000000..0b33967d8 Binary files /dev/null and b/public/terrain/18/429281/176903.terrain differ diff --git a/public/terrain/18/429281/176904.terrain b/public/terrain/18/429281/176904.terrain new file mode 100644 index 000000000..8e96a7b6f Binary files /dev/null and b/public/terrain/18/429281/176904.terrain differ diff --git a/public/terrain/18/429281/176905.terrain b/public/terrain/18/429281/176905.terrain new file mode 100644 index 000000000..840aaa533 Binary files /dev/null and b/public/terrain/18/429281/176905.terrain differ diff --git a/public/terrain/18/429281/176906.terrain b/public/terrain/18/429281/176906.terrain new file mode 100644 index 000000000..f95d64104 Binary files /dev/null and b/public/terrain/18/429281/176906.terrain differ diff --git a/public/terrain/18/429281/176907.terrain b/public/terrain/18/429281/176907.terrain new file mode 100644 index 000000000..0c2408c80 Binary files /dev/null and b/public/terrain/18/429281/176907.terrain differ diff --git a/public/terrain/18/429281/176908.terrain b/public/terrain/18/429281/176908.terrain new file mode 100644 index 000000000..18def59a1 Binary files /dev/null and b/public/terrain/18/429281/176908.terrain differ diff --git a/public/terrain/18/429281/176909.terrain b/public/terrain/18/429281/176909.terrain new file mode 100644 index 000000000..b88e81bf2 Binary files /dev/null and b/public/terrain/18/429281/176909.terrain differ diff --git a/public/terrain/18/429281/176910.terrain b/public/terrain/18/429281/176910.terrain new file mode 100644 index 000000000..3ef5ec696 Binary files /dev/null and b/public/terrain/18/429281/176910.terrain differ diff --git a/public/terrain/18/429281/176911.terrain b/public/terrain/18/429281/176911.terrain new file mode 100644 index 000000000..aba849061 Binary files /dev/null and b/public/terrain/18/429281/176911.terrain differ diff --git a/public/terrain/18/429281/176912.terrain b/public/terrain/18/429281/176912.terrain new file mode 100644 index 000000000..97cdba723 Binary files /dev/null and b/public/terrain/18/429281/176912.terrain differ diff --git a/public/terrain/18/429281/176913.terrain b/public/terrain/18/429281/176913.terrain new file mode 100644 index 000000000..59978358c Binary files /dev/null and b/public/terrain/18/429281/176913.terrain differ diff --git a/public/terrain/18/429281/176914.terrain b/public/terrain/18/429281/176914.terrain new file mode 100644 index 000000000..f86aff20d Binary files /dev/null and b/public/terrain/18/429281/176914.terrain differ diff --git a/public/terrain/18/429281/176915.terrain b/public/terrain/18/429281/176915.terrain new file mode 100644 index 000000000..d39042467 Binary files /dev/null and b/public/terrain/18/429281/176915.terrain differ diff --git a/public/terrain/18/429281/176916.terrain b/public/terrain/18/429281/176916.terrain new file mode 100644 index 000000000..8ce47c8a4 Binary files /dev/null and b/public/terrain/18/429281/176916.terrain differ diff --git a/public/terrain/18/429281/176917.terrain b/public/terrain/18/429281/176917.terrain new file mode 100644 index 000000000..82f1703e1 Binary files /dev/null and b/public/terrain/18/429281/176917.terrain differ diff --git a/public/terrain/18/429281/176918.terrain b/public/terrain/18/429281/176918.terrain new file mode 100644 index 000000000..079178585 Binary files /dev/null and b/public/terrain/18/429281/176918.terrain differ diff --git a/public/terrain/18/429281/176919.terrain b/public/terrain/18/429281/176919.terrain new file mode 100644 index 000000000..4d4b96347 Binary files /dev/null and b/public/terrain/18/429281/176919.terrain differ diff --git a/public/terrain/18/429281/176920.terrain b/public/terrain/18/429281/176920.terrain new file mode 100644 index 000000000..cb1e7fcd5 Binary files /dev/null and b/public/terrain/18/429281/176920.terrain differ diff --git a/public/terrain/18/429281/176921.terrain b/public/terrain/18/429281/176921.terrain new file mode 100644 index 000000000..739b7affe Binary files /dev/null and b/public/terrain/18/429281/176921.terrain differ diff --git a/public/terrain/18/429281/176922.terrain b/public/terrain/18/429281/176922.terrain new file mode 100644 index 000000000..79647e168 Binary files /dev/null and b/public/terrain/18/429281/176922.terrain differ diff --git a/public/terrain/18/429281/176923.terrain b/public/terrain/18/429281/176923.terrain new file mode 100644 index 000000000..3e9a910d5 Binary files /dev/null and b/public/terrain/18/429281/176923.terrain differ diff --git a/public/terrain/18/429281/176924.terrain b/public/terrain/18/429281/176924.terrain new file mode 100644 index 000000000..02bb50f0f Binary files /dev/null and b/public/terrain/18/429281/176924.terrain differ diff --git a/public/terrain/18/429281/176925.terrain b/public/terrain/18/429281/176925.terrain new file mode 100644 index 000000000..47f25170f Binary files /dev/null and b/public/terrain/18/429281/176925.terrain differ diff --git a/public/terrain/18/429281/176926.terrain b/public/terrain/18/429281/176926.terrain new file mode 100644 index 000000000..0a10854da Binary files /dev/null and b/public/terrain/18/429281/176926.terrain differ diff --git a/public/terrain/18/429281/176927.terrain b/public/terrain/18/429281/176927.terrain new file mode 100644 index 000000000..629a11534 Binary files /dev/null and b/public/terrain/18/429281/176927.terrain differ diff --git a/public/terrain/18/429281/176928.terrain b/public/terrain/18/429281/176928.terrain new file mode 100644 index 000000000..56a63cc18 Binary files /dev/null and b/public/terrain/18/429281/176928.terrain differ diff --git a/public/terrain/18/429281/176929.terrain b/public/terrain/18/429281/176929.terrain new file mode 100644 index 000000000..6cd64b8a5 Binary files /dev/null and b/public/terrain/18/429281/176929.terrain differ diff --git a/public/terrain/18/429281/176930.terrain b/public/terrain/18/429281/176930.terrain new file mode 100644 index 000000000..9a9414377 Binary files /dev/null and b/public/terrain/18/429281/176930.terrain differ diff --git a/public/terrain/18/429281/176931.terrain b/public/terrain/18/429281/176931.terrain new file mode 100644 index 000000000..f15388e0e Binary files /dev/null and b/public/terrain/18/429281/176931.terrain differ diff --git a/public/terrain/18/429281/176932.terrain b/public/terrain/18/429281/176932.terrain new file mode 100644 index 000000000..68afff1dd Binary files /dev/null and b/public/terrain/18/429281/176932.terrain differ diff --git a/public/terrain/18/429281/176933.terrain b/public/terrain/18/429281/176933.terrain new file mode 100644 index 000000000..264b8d455 Binary files /dev/null and b/public/terrain/18/429281/176933.terrain differ diff --git a/public/terrain/18/429281/176934.terrain b/public/terrain/18/429281/176934.terrain new file mode 100644 index 000000000..e7da3c4a8 Binary files /dev/null and b/public/terrain/18/429281/176934.terrain differ diff --git a/public/terrain/18/429281/176935.terrain b/public/terrain/18/429281/176935.terrain new file mode 100644 index 000000000..cd6aa0185 Binary files /dev/null and b/public/terrain/18/429281/176935.terrain differ diff --git a/public/terrain/18/429281/176936.terrain b/public/terrain/18/429281/176936.terrain new file mode 100644 index 000000000..4542e4966 Binary files /dev/null and b/public/terrain/18/429281/176936.terrain differ diff --git a/public/terrain/18/429281/176937.terrain b/public/terrain/18/429281/176937.terrain new file mode 100644 index 000000000..12970be20 Binary files /dev/null and b/public/terrain/18/429281/176937.terrain differ diff --git a/public/terrain/18/429281/176938.terrain b/public/terrain/18/429281/176938.terrain new file mode 100644 index 000000000..3dddd4798 Binary files /dev/null and b/public/terrain/18/429281/176938.terrain differ diff --git a/public/terrain/18/429281/176939.terrain b/public/terrain/18/429281/176939.terrain new file mode 100644 index 000000000..5df194a85 Binary files /dev/null and b/public/terrain/18/429281/176939.terrain differ diff --git a/public/terrain/18/429281/176940.terrain b/public/terrain/18/429281/176940.terrain new file mode 100644 index 000000000..1a11d34f1 Binary files /dev/null and b/public/terrain/18/429281/176940.terrain differ diff --git a/public/terrain/18/429281/176941.terrain b/public/terrain/18/429281/176941.terrain new file mode 100644 index 000000000..c17cfcd2c Binary files /dev/null and b/public/terrain/18/429281/176941.terrain differ diff --git a/public/terrain/18/429281/176942.terrain b/public/terrain/18/429281/176942.terrain new file mode 100644 index 000000000..ee4d3820b Binary files /dev/null and b/public/terrain/18/429281/176942.terrain differ diff --git a/public/terrain/18/429281/176943.terrain b/public/terrain/18/429281/176943.terrain new file mode 100644 index 000000000..826d6b52c Binary files /dev/null and b/public/terrain/18/429281/176943.terrain differ diff --git a/public/terrain/18/429281/176944.terrain b/public/terrain/18/429281/176944.terrain new file mode 100644 index 000000000..71c8882a3 Binary files /dev/null and b/public/terrain/18/429281/176944.terrain differ diff --git a/public/terrain/18/429281/176945.terrain b/public/terrain/18/429281/176945.terrain new file mode 100644 index 000000000..4ce011011 Binary files /dev/null and b/public/terrain/18/429281/176945.terrain differ diff --git a/public/terrain/18/429281/176946.terrain b/public/terrain/18/429281/176946.terrain new file mode 100644 index 000000000..91a238e29 Binary files /dev/null and b/public/terrain/18/429281/176946.terrain differ diff --git a/public/terrain/18/429281/176947.terrain b/public/terrain/18/429281/176947.terrain new file mode 100644 index 000000000..1962eca67 Binary files /dev/null and b/public/terrain/18/429281/176947.terrain differ diff --git a/public/terrain/18/429281/176948.terrain b/public/terrain/18/429281/176948.terrain new file mode 100644 index 000000000..aeb0d4e7a Binary files /dev/null and b/public/terrain/18/429281/176948.terrain differ diff --git a/public/terrain/18/429281/176949.terrain b/public/terrain/18/429281/176949.terrain new file mode 100644 index 000000000..e1b3dc9b6 Binary files /dev/null and b/public/terrain/18/429281/176949.terrain differ diff --git a/public/terrain/18/429281/176950.terrain b/public/terrain/18/429281/176950.terrain new file mode 100644 index 000000000..0ea9e7eac Binary files /dev/null and b/public/terrain/18/429281/176950.terrain differ diff --git a/public/terrain/18/429281/176951.terrain b/public/terrain/18/429281/176951.terrain new file mode 100644 index 000000000..4333bdc50 Binary files /dev/null and b/public/terrain/18/429281/176951.terrain differ diff --git a/public/terrain/18/429281/176952.terrain b/public/terrain/18/429281/176952.terrain new file mode 100644 index 000000000..d8cf90f6b Binary files /dev/null and b/public/terrain/18/429281/176952.terrain differ diff --git a/public/terrain/18/429281/176953.terrain b/public/terrain/18/429281/176953.terrain new file mode 100644 index 000000000..a6766e5ad Binary files /dev/null and b/public/terrain/18/429281/176953.terrain differ diff --git a/public/terrain/18/429281/176954.terrain b/public/terrain/18/429281/176954.terrain new file mode 100644 index 000000000..4dc118251 Binary files /dev/null and b/public/terrain/18/429281/176954.terrain differ diff --git a/public/terrain/18/429281/176955.terrain b/public/terrain/18/429281/176955.terrain new file mode 100644 index 000000000..928690da9 Binary files /dev/null and b/public/terrain/18/429281/176955.terrain differ diff --git a/public/terrain/18/429281/176956.terrain b/public/terrain/18/429281/176956.terrain new file mode 100644 index 000000000..62763ac79 Binary files /dev/null and b/public/terrain/18/429281/176956.terrain differ diff --git a/public/terrain/18/429281/176957.terrain b/public/terrain/18/429281/176957.terrain new file mode 100644 index 000000000..5da616450 Binary files /dev/null and b/public/terrain/18/429281/176957.terrain differ diff --git a/public/terrain/18/429281/176958.terrain b/public/terrain/18/429281/176958.terrain new file mode 100644 index 000000000..1508bae3d Binary files /dev/null and b/public/terrain/18/429281/176958.terrain differ diff --git a/public/terrain/18/429281/176959.terrain b/public/terrain/18/429281/176959.terrain new file mode 100644 index 000000000..12e764e53 Binary files /dev/null and b/public/terrain/18/429281/176959.terrain differ diff --git a/public/terrain/18/429281/176960.terrain b/public/terrain/18/429281/176960.terrain new file mode 100644 index 000000000..3499b7508 Binary files /dev/null and b/public/terrain/18/429281/176960.terrain differ diff --git a/public/terrain/18/429281/176961.terrain b/public/terrain/18/429281/176961.terrain new file mode 100644 index 000000000..db60ef635 Binary files /dev/null and b/public/terrain/18/429281/176961.terrain differ diff --git a/public/terrain/18/429281/176962.terrain b/public/terrain/18/429281/176962.terrain new file mode 100644 index 000000000..40722e413 Binary files /dev/null and b/public/terrain/18/429281/176962.terrain differ diff --git a/public/terrain/18/429281/176963.terrain b/public/terrain/18/429281/176963.terrain new file mode 100644 index 000000000..e87061d09 Binary files /dev/null and b/public/terrain/18/429281/176963.terrain differ diff --git a/public/terrain/18/429281/176964.terrain b/public/terrain/18/429281/176964.terrain new file mode 100644 index 000000000..a0b724335 Binary files /dev/null and b/public/terrain/18/429281/176964.terrain differ diff --git a/public/terrain/18/429281/176965.terrain b/public/terrain/18/429281/176965.terrain new file mode 100644 index 000000000..abc1fa95d Binary files /dev/null and b/public/terrain/18/429281/176965.terrain differ diff --git a/public/terrain/18/429281/176966.terrain b/public/terrain/18/429281/176966.terrain new file mode 100644 index 000000000..a250edc01 Binary files /dev/null and b/public/terrain/18/429281/176966.terrain differ diff --git a/public/terrain/18/429281/176967.terrain b/public/terrain/18/429281/176967.terrain new file mode 100644 index 000000000..d2e0e43ac Binary files /dev/null and b/public/terrain/18/429281/176967.terrain differ diff --git a/public/terrain/18/429281/176968.terrain b/public/terrain/18/429281/176968.terrain new file mode 100644 index 000000000..1d88f7394 Binary files /dev/null and b/public/terrain/18/429281/176968.terrain differ diff --git a/public/terrain/18/429281/176969.terrain b/public/terrain/18/429281/176969.terrain new file mode 100644 index 000000000..c5087d644 Binary files /dev/null and b/public/terrain/18/429281/176969.terrain differ diff --git a/public/terrain/18/429281/176970.terrain b/public/terrain/18/429281/176970.terrain new file mode 100644 index 000000000..af25dcb16 Binary files /dev/null and b/public/terrain/18/429281/176970.terrain differ diff --git a/public/terrain/18/429281/176971.terrain b/public/terrain/18/429281/176971.terrain new file mode 100644 index 000000000..8394c5ad7 Binary files /dev/null and b/public/terrain/18/429281/176971.terrain differ diff --git a/public/terrain/18/429281/176972.terrain b/public/terrain/18/429281/176972.terrain new file mode 100644 index 000000000..87420e6bb Binary files /dev/null and b/public/terrain/18/429281/176972.terrain differ diff --git a/public/terrain/18/429281/176973.terrain b/public/terrain/18/429281/176973.terrain new file mode 100644 index 000000000..c04ab703c Binary files /dev/null and b/public/terrain/18/429281/176973.terrain differ diff --git a/public/terrain/18/429281/176974.terrain b/public/terrain/18/429281/176974.terrain new file mode 100644 index 000000000..ecf871621 Binary files /dev/null and b/public/terrain/18/429281/176974.terrain differ diff --git a/public/terrain/18/429281/176975.terrain b/public/terrain/18/429281/176975.terrain new file mode 100644 index 000000000..ffcf3bb7c Binary files /dev/null and b/public/terrain/18/429281/176975.terrain differ diff --git a/public/terrain/18/429281/176976.terrain b/public/terrain/18/429281/176976.terrain new file mode 100644 index 000000000..84d8bfa4e Binary files /dev/null and b/public/terrain/18/429281/176976.terrain differ diff --git a/public/terrain/18/429281/176977.terrain b/public/terrain/18/429281/176977.terrain new file mode 100644 index 000000000..a91186de3 Binary files /dev/null and b/public/terrain/18/429281/176977.terrain differ diff --git a/public/terrain/18/429281/176978.terrain b/public/terrain/18/429281/176978.terrain new file mode 100644 index 000000000..2b99d483e Binary files /dev/null and b/public/terrain/18/429281/176978.terrain differ diff --git a/public/terrain/18/429281/176979.terrain b/public/terrain/18/429281/176979.terrain new file mode 100644 index 000000000..48024de56 Binary files /dev/null and b/public/terrain/18/429281/176979.terrain differ diff --git a/public/terrain/18/429281/176980.terrain b/public/terrain/18/429281/176980.terrain new file mode 100644 index 000000000..877fcc57d Binary files /dev/null and b/public/terrain/18/429281/176980.terrain differ diff --git a/public/terrain/18/429281/176981.terrain b/public/terrain/18/429281/176981.terrain new file mode 100644 index 000000000..5d912bd8e Binary files /dev/null and b/public/terrain/18/429281/176981.terrain differ diff --git a/public/terrain/18/429281/176982.terrain b/public/terrain/18/429281/176982.terrain new file mode 100644 index 000000000..9d5b10eea Binary files /dev/null and b/public/terrain/18/429281/176982.terrain differ diff --git a/public/terrain/18/429281/176983.terrain b/public/terrain/18/429281/176983.terrain new file mode 100644 index 000000000..327ae7769 Binary files /dev/null and b/public/terrain/18/429281/176983.terrain differ diff --git a/public/terrain/18/429281/176984.terrain b/public/terrain/18/429281/176984.terrain new file mode 100644 index 000000000..151bceede Binary files /dev/null and b/public/terrain/18/429281/176984.terrain differ diff --git a/public/terrain/18/429281/176985.terrain b/public/terrain/18/429281/176985.terrain new file mode 100644 index 000000000..e04e33b5f Binary files /dev/null and b/public/terrain/18/429281/176985.terrain differ diff --git a/public/terrain/18/429281/176986.terrain b/public/terrain/18/429281/176986.terrain new file mode 100644 index 000000000..70cf6cff0 Binary files /dev/null and b/public/terrain/18/429281/176986.terrain differ diff --git a/public/terrain/18/429281/176987.terrain b/public/terrain/18/429281/176987.terrain new file mode 100644 index 000000000..ee89a19d9 Binary files /dev/null and b/public/terrain/18/429281/176987.terrain differ diff --git a/public/terrain/18/429281/176988.terrain b/public/terrain/18/429281/176988.terrain new file mode 100644 index 000000000..c66cb78fa Binary files /dev/null and b/public/terrain/18/429281/176988.terrain differ diff --git a/public/terrain/18/429281/176989.terrain b/public/terrain/18/429281/176989.terrain new file mode 100644 index 000000000..0e4d18a9b Binary files /dev/null and b/public/terrain/18/429281/176989.terrain differ diff --git a/public/terrain/18/429281/176990.terrain b/public/terrain/18/429281/176990.terrain new file mode 100644 index 000000000..d2d99446c Binary files /dev/null and b/public/terrain/18/429281/176990.terrain differ diff --git a/public/terrain/18/429281/176991.terrain b/public/terrain/18/429281/176991.terrain new file mode 100644 index 000000000..fc7841d7d Binary files /dev/null and b/public/terrain/18/429281/176991.terrain differ diff --git a/public/terrain/18/429281/176992.terrain b/public/terrain/18/429281/176992.terrain new file mode 100644 index 000000000..d1f0ed643 Binary files /dev/null and b/public/terrain/18/429281/176992.terrain differ diff --git a/public/terrain/18/429281/176993.terrain b/public/terrain/18/429281/176993.terrain new file mode 100644 index 000000000..24b7afcf0 Binary files /dev/null and b/public/terrain/18/429281/176993.terrain differ diff --git a/public/terrain/18/429281/176994.terrain b/public/terrain/18/429281/176994.terrain new file mode 100644 index 000000000..7098e36d5 Binary files /dev/null and b/public/terrain/18/429281/176994.terrain differ diff --git a/public/terrain/18/429281/176995.terrain b/public/terrain/18/429281/176995.terrain new file mode 100644 index 000000000..02a237f7a Binary files /dev/null and b/public/terrain/18/429281/176995.terrain differ diff --git a/public/terrain/18/429281/176996.terrain b/public/terrain/18/429281/176996.terrain new file mode 100644 index 000000000..0c2a41332 Binary files /dev/null and b/public/terrain/18/429281/176996.terrain differ diff --git a/public/terrain/18/429281/176997.terrain b/public/terrain/18/429281/176997.terrain new file mode 100644 index 000000000..5600c5c27 Binary files /dev/null and b/public/terrain/18/429281/176997.terrain differ diff --git a/public/terrain/18/429281/176998.terrain b/public/terrain/18/429281/176998.terrain new file mode 100644 index 000000000..cb4a93c2b Binary files /dev/null and b/public/terrain/18/429281/176998.terrain differ diff --git a/public/terrain/18/429281/176999.terrain b/public/terrain/18/429281/176999.terrain new file mode 100644 index 000000000..8ff90474d Binary files /dev/null and b/public/terrain/18/429281/176999.terrain differ diff --git a/public/terrain/18/429281/177000.terrain b/public/terrain/18/429281/177000.terrain new file mode 100644 index 000000000..532d27dba Binary files /dev/null and b/public/terrain/18/429281/177000.terrain differ diff --git a/public/terrain/18/429281/177001.terrain b/public/terrain/18/429281/177001.terrain new file mode 100644 index 000000000..3c00aa767 Binary files /dev/null and b/public/terrain/18/429281/177001.terrain differ diff --git a/public/terrain/18/429281/177002.terrain b/public/terrain/18/429281/177002.terrain new file mode 100644 index 000000000..e8453c77b Binary files /dev/null and b/public/terrain/18/429281/177002.terrain differ diff --git a/public/terrain/18/429281/177003.terrain b/public/terrain/18/429281/177003.terrain new file mode 100644 index 000000000..dff6dbf47 Binary files /dev/null and b/public/terrain/18/429281/177003.terrain differ diff --git a/public/terrain/18/429281/177004.terrain b/public/terrain/18/429281/177004.terrain new file mode 100644 index 000000000..eae0e0a57 Binary files /dev/null and b/public/terrain/18/429281/177004.terrain differ diff --git a/public/terrain/18/429281/177005.terrain b/public/terrain/18/429281/177005.terrain new file mode 100644 index 000000000..c8f14b406 Binary files /dev/null and b/public/terrain/18/429281/177005.terrain differ diff --git a/public/terrain/18/429281/177006.terrain b/public/terrain/18/429281/177006.terrain new file mode 100644 index 000000000..3a1f075f0 Binary files /dev/null and b/public/terrain/18/429281/177006.terrain differ diff --git a/public/terrain/18/429281/177007.terrain b/public/terrain/18/429281/177007.terrain new file mode 100644 index 000000000..26ac610c3 Binary files /dev/null and b/public/terrain/18/429281/177007.terrain differ diff --git a/public/terrain/18/429281/177008.terrain b/public/terrain/18/429281/177008.terrain new file mode 100644 index 000000000..feeea7693 Binary files /dev/null and b/public/terrain/18/429281/177008.terrain differ diff --git a/public/terrain/18/429281/177009.terrain b/public/terrain/18/429281/177009.terrain new file mode 100644 index 000000000..5450cc114 Binary files /dev/null and b/public/terrain/18/429281/177009.terrain differ diff --git a/public/terrain/18/429281/177010.terrain b/public/terrain/18/429281/177010.terrain new file mode 100644 index 000000000..d36f3f45d Binary files /dev/null and b/public/terrain/18/429281/177010.terrain differ diff --git a/public/terrain/18/429281/177011.terrain b/public/terrain/18/429281/177011.terrain new file mode 100644 index 000000000..7e7b124a4 Binary files /dev/null and b/public/terrain/18/429281/177011.terrain differ diff --git a/public/terrain/18/429281/177012.terrain b/public/terrain/18/429281/177012.terrain new file mode 100644 index 000000000..1b9013aa9 Binary files /dev/null and b/public/terrain/18/429281/177012.terrain differ diff --git a/public/terrain/18/429281/177013.terrain b/public/terrain/18/429281/177013.terrain new file mode 100644 index 000000000..82b27dab4 Binary files /dev/null and b/public/terrain/18/429281/177013.terrain differ diff --git a/public/terrain/18/429281/177014.terrain b/public/terrain/18/429281/177014.terrain new file mode 100644 index 000000000..157061392 Binary files /dev/null and b/public/terrain/18/429281/177014.terrain differ diff --git a/public/terrain/18/429281/177015.terrain b/public/terrain/18/429281/177015.terrain new file mode 100644 index 000000000..bf22560c8 Binary files /dev/null and b/public/terrain/18/429281/177015.terrain differ diff --git a/public/terrain/18/429281/177016.terrain b/public/terrain/18/429281/177016.terrain new file mode 100644 index 000000000..afcbb83f0 Binary files /dev/null and b/public/terrain/18/429281/177016.terrain differ diff --git a/public/terrain/18/429281/177017.terrain b/public/terrain/18/429281/177017.terrain new file mode 100644 index 000000000..5eb8c59ec Binary files /dev/null and b/public/terrain/18/429281/177017.terrain differ diff --git a/public/terrain/18/429281/177018.terrain b/public/terrain/18/429281/177018.terrain new file mode 100644 index 000000000..2ae0aa1ec Binary files /dev/null and b/public/terrain/18/429281/177018.terrain differ diff --git a/public/terrain/18/429281/177019.terrain b/public/terrain/18/429281/177019.terrain new file mode 100644 index 000000000..2f0a0e51b Binary files /dev/null and b/public/terrain/18/429281/177019.terrain differ diff --git a/public/terrain/18/429281/177020.terrain b/public/terrain/18/429281/177020.terrain new file mode 100644 index 000000000..543c412e6 Binary files /dev/null and b/public/terrain/18/429281/177020.terrain differ diff --git a/public/terrain/18/429281/177021.terrain b/public/terrain/18/429281/177021.terrain new file mode 100644 index 000000000..eadd31269 Binary files /dev/null and b/public/terrain/18/429281/177021.terrain differ diff --git a/public/terrain/18/429281/177022.terrain b/public/terrain/18/429281/177022.terrain new file mode 100644 index 000000000..7bc70860f Binary files /dev/null and b/public/terrain/18/429281/177022.terrain differ diff --git a/public/terrain/18/429281/177023.terrain b/public/terrain/18/429281/177023.terrain new file mode 100644 index 000000000..960ca0376 Binary files /dev/null and b/public/terrain/18/429281/177023.terrain differ diff --git a/public/terrain/18/429281/177024.terrain b/public/terrain/18/429281/177024.terrain new file mode 100644 index 000000000..2a07435d5 Binary files /dev/null and b/public/terrain/18/429281/177024.terrain differ diff --git a/public/terrain/18/429281/177025.terrain b/public/terrain/18/429281/177025.terrain new file mode 100644 index 000000000..19a063ff7 Binary files /dev/null and b/public/terrain/18/429281/177025.terrain differ diff --git a/public/terrain/18/429281/177026.terrain b/public/terrain/18/429281/177026.terrain new file mode 100644 index 000000000..308941a88 Binary files /dev/null and b/public/terrain/18/429281/177026.terrain differ diff --git a/public/terrain/18/429281/177027.terrain b/public/terrain/18/429281/177027.terrain new file mode 100644 index 000000000..c070aa2df Binary files /dev/null and b/public/terrain/18/429281/177027.terrain differ diff --git a/public/terrain/18/429281/177028.terrain b/public/terrain/18/429281/177028.terrain new file mode 100644 index 000000000..3b12a2562 Binary files /dev/null and b/public/terrain/18/429281/177028.terrain differ diff --git a/public/terrain/18/429281/177029.terrain b/public/terrain/18/429281/177029.terrain new file mode 100644 index 000000000..5ffd0ad0f Binary files /dev/null and b/public/terrain/18/429281/177029.terrain differ diff --git a/public/terrain/18/429282/176871.terrain b/public/terrain/18/429282/176871.terrain new file mode 100644 index 000000000..3507c1ae8 Binary files /dev/null and b/public/terrain/18/429282/176871.terrain differ diff --git a/public/terrain/18/429282/176872.terrain b/public/terrain/18/429282/176872.terrain new file mode 100644 index 000000000..21b0cf8ea Binary files /dev/null and b/public/terrain/18/429282/176872.terrain differ diff --git a/public/terrain/18/429282/176873.terrain b/public/terrain/18/429282/176873.terrain new file mode 100644 index 000000000..2e6965253 Binary files /dev/null and b/public/terrain/18/429282/176873.terrain differ diff --git a/public/terrain/18/429282/176874.terrain b/public/terrain/18/429282/176874.terrain new file mode 100644 index 000000000..86aab667a Binary files /dev/null and b/public/terrain/18/429282/176874.terrain differ diff --git a/public/terrain/18/429282/176875.terrain b/public/terrain/18/429282/176875.terrain new file mode 100644 index 000000000..98699f1ba Binary files /dev/null and b/public/terrain/18/429282/176875.terrain differ diff --git a/public/terrain/18/429282/176876.terrain b/public/terrain/18/429282/176876.terrain new file mode 100644 index 000000000..fa9a2000f Binary files /dev/null and b/public/terrain/18/429282/176876.terrain differ diff --git a/public/terrain/18/429282/176877.terrain b/public/terrain/18/429282/176877.terrain new file mode 100644 index 000000000..a6faca85a Binary files /dev/null and b/public/terrain/18/429282/176877.terrain differ diff --git a/public/terrain/18/429282/176878.terrain b/public/terrain/18/429282/176878.terrain new file mode 100644 index 000000000..52117a282 Binary files /dev/null and b/public/terrain/18/429282/176878.terrain differ diff --git a/public/terrain/18/429282/176879.terrain b/public/terrain/18/429282/176879.terrain new file mode 100644 index 000000000..9074c1701 Binary files /dev/null and b/public/terrain/18/429282/176879.terrain differ diff --git a/public/terrain/18/429282/176880.terrain b/public/terrain/18/429282/176880.terrain new file mode 100644 index 000000000..768767790 Binary files /dev/null and b/public/terrain/18/429282/176880.terrain differ diff --git a/public/terrain/18/429282/176881.terrain b/public/terrain/18/429282/176881.terrain new file mode 100644 index 000000000..e9e318775 Binary files /dev/null and b/public/terrain/18/429282/176881.terrain differ diff --git a/public/terrain/18/429282/176882.terrain b/public/terrain/18/429282/176882.terrain new file mode 100644 index 000000000..55948d082 Binary files /dev/null and b/public/terrain/18/429282/176882.terrain differ diff --git a/public/terrain/18/429282/176883.terrain b/public/terrain/18/429282/176883.terrain new file mode 100644 index 000000000..5d27a95ef Binary files /dev/null and b/public/terrain/18/429282/176883.terrain differ diff --git a/public/terrain/18/429282/176884.terrain b/public/terrain/18/429282/176884.terrain new file mode 100644 index 000000000..52cf4a545 Binary files /dev/null and b/public/terrain/18/429282/176884.terrain differ diff --git a/public/terrain/18/429282/176885.terrain b/public/terrain/18/429282/176885.terrain new file mode 100644 index 000000000..2bfcc1bed Binary files /dev/null and b/public/terrain/18/429282/176885.terrain differ diff --git a/public/terrain/18/429282/176886.terrain b/public/terrain/18/429282/176886.terrain new file mode 100644 index 000000000..24897de68 Binary files /dev/null and b/public/terrain/18/429282/176886.terrain differ diff --git a/public/terrain/18/429282/176887.terrain b/public/terrain/18/429282/176887.terrain new file mode 100644 index 000000000..c2201d579 Binary files /dev/null and b/public/terrain/18/429282/176887.terrain differ diff --git a/public/terrain/18/429282/176888.terrain b/public/terrain/18/429282/176888.terrain new file mode 100644 index 000000000..34cc43299 Binary files /dev/null and b/public/terrain/18/429282/176888.terrain differ diff --git a/public/terrain/18/429282/176889.terrain b/public/terrain/18/429282/176889.terrain new file mode 100644 index 000000000..a367d2aeb Binary files /dev/null and b/public/terrain/18/429282/176889.terrain differ diff --git a/public/terrain/18/429282/176890.terrain b/public/terrain/18/429282/176890.terrain new file mode 100644 index 000000000..a01c08d93 Binary files /dev/null and b/public/terrain/18/429282/176890.terrain differ diff --git a/public/terrain/18/429282/176891.terrain b/public/terrain/18/429282/176891.terrain new file mode 100644 index 000000000..e1c821475 Binary files /dev/null and b/public/terrain/18/429282/176891.terrain differ diff --git a/public/terrain/18/429282/176892.terrain b/public/terrain/18/429282/176892.terrain new file mode 100644 index 000000000..ec4d5386c Binary files /dev/null and b/public/terrain/18/429282/176892.terrain differ diff --git a/public/terrain/18/429282/176893.terrain b/public/terrain/18/429282/176893.terrain new file mode 100644 index 000000000..2313c7ea8 Binary files /dev/null and b/public/terrain/18/429282/176893.terrain differ diff --git a/public/terrain/18/429282/176894.terrain b/public/terrain/18/429282/176894.terrain new file mode 100644 index 000000000..f00b45907 Binary files /dev/null and b/public/terrain/18/429282/176894.terrain differ diff --git a/public/terrain/18/429282/176895.terrain b/public/terrain/18/429282/176895.terrain new file mode 100644 index 000000000..2808f1ffe Binary files /dev/null and b/public/terrain/18/429282/176895.terrain differ diff --git a/public/terrain/18/429282/176896.terrain b/public/terrain/18/429282/176896.terrain new file mode 100644 index 000000000..336ba6be6 Binary files /dev/null and b/public/terrain/18/429282/176896.terrain differ diff --git a/public/terrain/18/429282/176897.terrain b/public/terrain/18/429282/176897.terrain new file mode 100644 index 000000000..f11a7b11f Binary files /dev/null and b/public/terrain/18/429282/176897.terrain differ diff --git a/public/terrain/18/429282/176898.terrain b/public/terrain/18/429282/176898.terrain new file mode 100644 index 000000000..26fcb5970 Binary files /dev/null and b/public/terrain/18/429282/176898.terrain differ diff --git a/public/terrain/18/429282/176899.terrain b/public/terrain/18/429282/176899.terrain new file mode 100644 index 000000000..47242e889 Binary files /dev/null and b/public/terrain/18/429282/176899.terrain differ diff --git a/public/terrain/18/429282/176900.terrain b/public/terrain/18/429282/176900.terrain new file mode 100644 index 000000000..3a6ba1f10 Binary files /dev/null and b/public/terrain/18/429282/176900.terrain differ diff --git a/public/terrain/18/429282/176901.terrain b/public/terrain/18/429282/176901.terrain new file mode 100644 index 000000000..0cd607e08 Binary files /dev/null and b/public/terrain/18/429282/176901.terrain differ diff --git a/public/terrain/18/429282/176902.terrain b/public/terrain/18/429282/176902.terrain new file mode 100644 index 000000000..956888a7a Binary files /dev/null and b/public/terrain/18/429282/176902.terrain differ diff --git a/public/terrain/18/429282/176903.terrain b/public/terrain/18/429282/176903.terrain new file mode 100644 index 000000000..e6400651c Binary files /dev/null and b/public/terrain/18/429282/176903.terrain differ diff --git a/public/terrain/18/429282/176904.terrain b/public/terrain/18/429282/176904.terrain new file mode 100644 index 000000000..07559a890 Binary files /dev/null and b/public/terrain/18/429282/176904.terrain differ diff --git a/public/terrain/18/429282/176905.terrain b/public/terrain/18/429282/176905.terrain new file mode 100644 index 000000000..da5d90cbe Binary files /dev/null and b/public/terrain/18/429282/176905.terrain differ diff --git a/public/terrain/18/429282/176906.terrain b/public/terrain/18/429282/176906.terrain new file mode 100644 index 000000000..5f23a0f67 Binary files /dev/null and b/public/terrain/18/429282/176906.terrain differ diff --git a/public/terrain/18/429282/176907.terrain b/public/terrain/18/429282/176907.terrain new file mode 100644 index 000000000..deff58ea4 Binary files /dev/null and b/public/terrain/18/429282/176907.terrain differ diff --git a/public/terrain/18/429282/176908.terrain b/public/terrain/18/429282/176908.terrain new file mode 100644 index 000000000..b27733a78 Binary files /dev/null and b/public/terrain/18/429282/176908.terrain differ diff --git a/public/terrain/18/429282/176909.terrain b/public/terrain/18/429282/176909.terrain new file mode 100644 index 000000000..187c30ddd Binary files /dev/null and b/public/terrain/18/429282/176909.terrain differ diff --git a/public/terrain/18/429282/176910.terrain b/public/terrain/18/429282/176910.terrain new file mode 100644 index 000000000..523ff34c8 Binary files /dev/null and b/public/terrain/18/429282/176910.terrain differ diff --git a/public/terrain/18/429282/176911.terrain b/public/terrain/18/429282/176911.terrain new file mode 100644 index 000000000..8c31660ea Binary files /dev/null and b/public/terrain/18/429282/176911.terrain differ diff --git a/public/terrain/18/429282/176912.terrain b/public/terrain/18/429282/176912.terrain new file mode 100644 index 000000000..6b4aeffae Binary files /dev/null and b/public/terrain/18/429282/176912.terrain differ diff --git a/public/terrain/18/429282/176913.terrain b/public/terrain/18/429282/176913.terrain new file mode 100644 index 000000000..9e81a49d7 Binary files /dev/null and b/public/terrain/18/429282/176913.terrain differ diff --git a/public/terrain/18/429282/176914.terrain b/public/terrain/18/429282/176914.terrain new file mode 100644 index 000000000..cf365e35e Binary files /dev/null and b/public/terrain/18/429282/176914.terrain differ diff --git a/public/terrain/18/429282/176915.terrain b/public/terrain/18/429282/176915.terrain new file mode 100644 index 000000000..1847b63d8 Binary files /dev/null and b/public/terrain/18/429282/176915.terrain differ diff --git a/public/terrain/18/429282/176916.terrain b/public/terrain/18/429282/176916.terrain new file mode 100644 index 000000000..bb8e4fd16 Binary files /dev/null and b/public/terrain/18/429282/176916.terrain differ diff --git a/public/terrain/18/429282/176917.terrain b/public/terrain/18/429282/176917.terrain new file mode 100644 index 000000000..de9ad4361 Binary files /dev/null and b/public/terrain/18/429282/176917.terrain differ diff --git a/public/terrain/18/429282/176918.terrain b/public/terrain/18/429282/176918.terrain new file mode 100644 index 000000000..c7ec52be3 Binary files /dev/null and b/public/terrain/18/429282/176918.terrain differ diff --git a/public/terrain/18/429282/176919.terrain b/public/terrain/18/429282/176919.terrain new file mode 100644 index 000000000..462b7ed1c Binary files /dev/null and b/public/terrain/18/429282/176919.terrain differ diff --git a/public/terrain/18/429282/176920.terrain b/public/terrain/18/429282/176920.terrain new file mode 100644 index 000000000..f200a1dba Binary files /dev/null and b/public/terrain/18/429282/176920.terrain differ diff --git a/public/terrain/18/429282/176921.terrain b/public/terrain/18/429282/176921.terrain new file mode 100644 index 000000000..951898bfc Binary files /dev/null and b/public/terrain/18/429282/176921.terrain differ diff --git a/public/terrain/18/429282/176922.terrain b/public/terrain/18/429282/176922.terrain new file mode 100644 index 000000000..4c7622f04 Binary files /dev/null and b/public/terrain/18/429282/176922.terrain differ diff --git a/public/terrain/18/429282/176923.terrain b/public/terrain/18/429282/176923.terrain new file mode 100644 index 000000000..d6a3fb5b2 Binary files /dev/null and b/public/terrain/18/429282/176923.terrain differ diff --git a/public/terrain/18/429282/176924.terrain b/public/terrain/18/429282/176924.terrain new file mode 100644 index 000000000..f7faad289 Binary files /dev/null and b/public/terrain/18/429282/176924.terrain differ diff --git a/public/terrain/18/429282/176925.terrain b/public/terrain/18/429282/176925.terrain new file mode 100644 index 000000000..291b46629 Binary files /dev/null and b/public/terrain/18/429282/176925.terrain differ diff --git a/public/terrain/18/429282/176926.terrain b/public/terrain/18/429282/176926.terrain new file mode 100644 index 000000000..ce991d8ef Binary files /dev/null and b/public/terrain/18/429282/176926.terrain differ diff --git a/public/terrain/18/429282/176927.terrain b/public/terrain/18/429282/176927.terrain new file mode 100644 index 000000000..2e0f79a0c Binary files /dev/null and b/public/terrain/18/429282/176927.terrain differ diff --git a/public/terrain/18/429282/176928.terrain b/public/terrain/18/429282/176928.terrain new file mode 100644 index 000000000..b4529f6be Binary files /dev/null and b/public/terrain/18/429282/176928.terrain differ diff --git a/public/terrain/18/429282/176929.terrain b/public/terrain/18/429282/176929.terrain new file mode 100644 index 000000000..5707e5ed0 Binary files /dev/null and b/public/terrain/18/429282/176929.terrain differ diff --git a/public/terrain/18/429282/176930.terrain b/public/terrain/18/429282/176930.terrain new file mode 100644 index 000000000..519810978 Binary files /dev/null and b/public/terrain/18/429282/176930.terrain differ diff --git a/public/terrain/18/429282/176931.terrain b/public/terrain/18/429282/176931.terrain new file mode 100644 index 000000000..0b8de2542 Binary files /dev/null and b/public/terrain/18/429282/176931.terrain differ diff --git a/public/terrain/18/429282/176932.terrain b/public/terrain/18/429282/176932.terrain new file mode 100644 index 000000000..516e00739 Binary files /dev/null and b/public/terrain/18/429282/176932.terrain differ diff --git a/public/terrain/18/429282/176933.terrain b/public/terrain/18/429282/176933.terrain new file mode 100644 index 000000000..90d18d15a Binary files /dev/null and b/public/terrain/18/429282/176933.terrain differ diff --git a/public/terrain/18/429282/176934.terrain b/public/terrain/18/429282/176934.terrain new file mode 100644 index 000000000..91effe912 Binary files /dev/null and b/public/terrain/18/429282/176934.terrain differ diff --git a/public/terrain/18/429282/176935.terrain b/public/terrain/18/429282/176935.terrain new file mode 100644 index 000000000..1a44bf7c4 Binary files /dev/null and b/public/terrain/18/429282/176935.terrain differ diff --git a/public/terrain/18/429282/176936.terrain b/public/terrain/18/429282/176936.terrain new file mode 100644 index 000000000..2489240f6 Binary files /dev/null and b/public/terrain/18/429282/176936.terrain differ diff --git a/public/terrain/18/429282/176937.terrain b/public/terrain/18/429282/176937.terrain new file mode 100644 index 000000000..9663aa29d Binary files /dev/null and b/public/terrain/18/429282/176937.terrain differ diff --git a/public/terrain/18/429282/176938.terrain b/public/terrain/18/429282/176938.terrain new file mode 100644 index 000000000..9f3c2e3f0 Binary files /dev/null and b/public/terrain/18/429282/176938.terrain differ diff --git a/public/terrain/18/429282/176939.terrain b/public/terrain/18/429282/176939.terrain new file mode 100644 index 000000000..cb48c5824 Binary files /dev/null and b/public/terrain/18/429282/176939.terrain differ diff --git a/public/terrain/18/429282/176940.terrain b/public/terrain/18/429282/176940.terrain new file mode 100644 index 000000000..8113e3a11 Binary files /dev/null and b/public/terrain/18/429282/176940.terrain differ diff --git a/public/terrain/18/429282/176941.terrain b/public/terrain/18/429282/176941.terrain new file mode 100644 index 000000000..4be145267 Binary files /dev/null and b/public/terrain/18/429282/176941.terrain differ diff --git a/public/terrain/18/429282/176942.terrain b/public/terrain/18/429282/176942.terrain new file mode 100644 index 000000000..ce999c40d Binary files /dev/null and b/public/terrain/18/429282/176942.terrain differ diff --git a/public/terrain/18/429282/176943.terrain b/public/terrain/18/429282/176943.terrain new file mode 100644 index 000000000..7ef0c14b6 Binary files /dev/null and b/public/terrain/18/429282/176943.terrain differ diff --git a/public/terrain/18/429282/176944.terrain b/public/terrain/18/429282/176944.terrain new file mode 100644 index 000000000..4f4d9fcf1 Binary files /dev/null and b/public/terrain/18/429282/176944.terrain differ diff --git a/public/terrain/18/429282/176945.terrain b/public/terrain/18/429282/176945.terrain new file mode 100644 index 000000000..3148a2ac1 Binary files /dev/null and b/public/terrain/18/429282/176945.terrain differ diff --git a/public/terrain/18/429282/176946.terrain b/public/terrain/18/429282/176946.terrain new file mode 100644 index 000000000..dfbcb2a74 Binary files /dev/null and b/public/terrain/18/429282/176946.terrain differ diff --git a/public/terrain/18/429282/176947.terrain b/public/terrain/18/429282/176947.terrain new file mode 100644 index 000000000..e5c7acd81 Binary files /dev/null and b/public/terrain/18/429282/176947.terrain differ diff --git a/public/terrain/18/429282/176948.terrain b/public/terrain/18/429282/176948.terrain new file mode 100644 index 000000000..740b9f473 Binary files /dev/null and b/public/terrain/18/429282/176948.terrain differ diff --git a/public/terrain/18/429282/176949.terrain b/public/terrain/18/429282/176949.terrain new file mode 100644 index 000000000..186d61b55 Binary files /dev/null and b/public/terrain/18/429282/176949.terrain differ diff --git a/public/terrain/18/429282/176950.terrain b/public/terrain/18/429282/176950.terrain new file mode 100644 index 000000000..c3b6d9bc9 Binary files /dev/null and b/public/terrain/18/429282/176950.terrain differ diff --git a/public/terrain/18/429282/176951.terrain b/public/terrain/18/429282/176951.terrain new file mode 100644 index 000000000..fcff75c85 Binary files /dev/null and b/public/terrain/18/429282/176951.terrain differ diff --git a/public/terrain/18/429282/176952.terrain b/public/terrain/18/429282/176952.terrain new file mode 100644 index 000000000..1f23fd545 Binary files /dev/null and b/public/terrain/18/429282/176952.terrain differ diff --git a/public/terrain/18/429282/176953.terrain b/public/terrain/18/429282/176953.terrain new file mode 100644 index 000000000..d92f650a4 Binary files /dev/null and b/public/terrain/18/429282/176953.terrain differ diff --git a/public/terrain/18/429282/176954.terrain b/public/terrain/18/429282/176954.terrain new file mode 100644 index 000000000..6756f8dfd Binary files /dev/null and b/public/terrain/18/429282/176954.terrain differ diff --git a/public/terrain/18/429282/176955.terrain b/public/terrain/18/429282/176955.terrain new file mode 100644 index 000000000..24e244e83 Binary files /dev/null and b/public/terrain/18/429282/176955.terrain differ diff --git a/public/terrain/18/429282/176956.terrain b/public/terrain/18/429282/176956.terrain new file mode 100644 index 000000000..bdffbc011 Binary files /dev/null and b/public/terrain/18/429282/176956.terrain differ diff --git a/public/terrain/18/429282/176957.terrain b/public/terrain/18/429282/176957.terrain new file mode 100644 index 000000000..ebe5bdfd3 Binary files /dev/null and b/public/terrain/18/429282/176957.terrain differ diff --git a/public/terrain/18/429282/176958.terrain b/public/terrain/18/429282/176958.terrain new file mode 100644 index 000000000..d24a66c4d Binary files /dev/null and b/public/terrain/18/429282/176958.terrain differ diff --git a/public/terrain/18/429282/176959.terrain b/public/terrain/18/429282/176959.terrain new file mode 100644 index 000000000..84c3c0062 Binary files /dev/null and b/public/terrain/18/429282/176959.terrain differ diff --git a/public/terrain/18/429282/176960.terrain b/public/terrain/18/429282/176960.terrain new file mode 100644 index 000000000..1000e9c4c Binary files /dev/null and b/public/terrain/18/429282/176960.terrain differ diff --git a/public/terrain/18/429282/176961.terrain b/public/terrain/18/429282/176961.terrain new file mode 100644 index 000000000..ad7134484 Binary files /dev/null and b/public/terrain/18/429282/176961.terrain differ diff --git a/public/terrain/18/429282/176962.terrain b/public/terrain/18/429282/176962.terrain new file mode 100644 index 000000000..3c6182ccc Binary files /dev/null and b/public/terrain/18/429282/176962.terrain differ diff --git a/public/terrain/18/429282/176963.terrain b/public/terrain/18/429282/176963.terrain new file mode 100644 index 000000000..16b6edf52 Binary files /dev/null and b/public/terrain/18/429282/176963.terrain differ diff --git a/public/terrain/18/429282/176964.terrain b/public/terrain/18/429282/176964.terrain new file mode 100644 index 000000000..463ea984c Binary files /dev/null and b/public/terrain/18/429282/176964.terrain differ diff --git a/public/terrain/18/429282/176965.terrain b/public/terrain/18/429282/176965.terrain new file mode 100644 index 000000000..7ae0b04e5 Binary files /dev/null and b/public/terrain/18/429282/176965.terrain differ diff --git a/public/terrain/18/429282/176966.terrain b/public/terrain/18/429282/176966.terrain new file mode 100644 index 000000000..21833ffb6 Binary files /dev/null and b/public/terrain/18/429282/176966.terrain differ diff --git a/public/terrain/18/429282/176967.terrain b/public/terrain/18/429282/176967.terrain new file mode 100644 index 000000000..fd4228789 Binary files /dev/null and b/public/terrain/18/429282/176967.terrain differ diff --git a/public/terrain/18/429282/176968.terrain b/public/terrain/18/429282/176968.terrain new file mode 100644 index 000000000..2e2bfa001 Binary files /dev/null and b/public/terrain/18/429282/176968.terrain differ diff --git a/public/terrain/18/429282/176969.terrain b/public/terrain/18/429282/176969.terrain new file mode 100644 index 000000000..ea2cb1895 Binary files /dev/null and b/public/terrain/18/429282/176969.terrain differ diff --git a/public/terrain/18/429282/176970.terrain b/public/terrain/18/429282/176970.terrain new file mode 100644 index 000000000..881484771 Binary files /dev/null and b/public/terrain/18/429282/176970.terrain differ diff --git a/public/terrain/18/429282/176971.terrain b/public/terrain/18/429282/176971.terrain new file mode 100644 index 000000000..34961ade2 Binary files /dev/null and b/public/terrain/18/429282/176971.terrain differ diff --git a/public/terrain/18/429282/176972.terrain b/public/terrain/18/429282/176972.terrain new file mode 100644 index 000000000..b7d1075a8 Binary files /dev/null and b/public/terrain/18/429282/176972.terrain differ diff --git a/public/terrain/18/429282/176973.terrain b/public/terrain/18/429282/176973.terrain new file mode 100644 index 000000000..4d271dd76 Binary files /dev/null and b/public/terrain/18/429282/176973.terrain differ diff --git a/public/terrain/18/429282/176974.terrain b/public/terrain/18/429282/176974.terrain new file mode 100644 index 000000000..45f2d9a66 Binary files /dev/null and b/public/terrain/18/429282/176974.terrain differ diff --git a/public/terrain/18/429282/176975.terrain b/public/terrain/18/429282/176975.terrain new file mode 100644 index 000000000..0219180c7 Binary files /dev/null and b/public/terrain/18/429282/176975.terrain differ diff --git a/public/terrain/18/429282/176976.terrain b/public/terrain/18/429282/176976.terrain new file mode 100644 index 000000000..10cada17a Binary files /dev/null and b/public/terrain/18/429282/176976.terrain differ diff --git a/public/terrain/18/429282/176977.terrain b/public/terrain/18/429282/176977.terrain new file mode 100644 index 000000000..ea6ed71b3 Binary files /dev/null and b/public/terrain/18/429282/176977.terrain differ diff --git a/public/terrain/18/429282/176978.terrain b/public/terrain/18/429282/176978.terrain new file mode 100644 index 000000000..f33afc3a8 Binary files /dev/null and b/public/terrain/18/429282/176978.terrain differ diff --git a/public/terrain/18/429282/176979.terrain b/public/terrain/18/429282/176979.terrain new file mode 100644 index 000000000..f884a003a Binary files /dev/null and b/public/terrain/18/429282/176979.terrain differ diff --git a/public/terrain/18/429282/176980.terrain b/public/terrain/18/429282/176980.terrain new file mode 100644 index 000000000..de48c8dcd Binary files /dev/null and b/public/terrain/18/429282/176980.terrain differ diff --git a/public/terrain/18/429282/176981.terrain b/public/terrain/18/429282/176981.terrain new file mode 100644 index 000000000..4b2dad7c3 Binary files /dev/null and b/public/terrain/18/429282/176981.terrain differ diff --git a/public/terrain/18/429282/176982.terrain b/public/terrain/18/429282/176982.terrain new file mode 100644 index 000000000..3cf4fefb8 Binary files /dev/null and b/public/terrain/18/429282/176982.terrain differ diff --git a/public/terrain/18/429282/176983.terrain b/public/terrain/18/429282/176983.terrain new file mode 100644 index 000000000..0a3c3b202 Binary files /dev/null and b/public/terrain/18/429282/176983.terrain differ diff --git a/public/terrain/18/429282/176984.terrain b/public/terrain/18/429282/176984.terrain new file mode 100644 index 000000000..9d807f9f9 Binary files /dev/null and b/public/terrain/18/429282/176984.terrain differ diff --git a/public/terrain/18/429282/176985.terrain b/public/terrain/18/429282/176985.terrain new file mode 100644 index 000000000..7ebf4a3d6 Binary files /dev/null and b/public/terrain/18/429282/176985.terrain differ diff --git a/public/terrain/18/429282/176986.terrain b/public/terrain/18/429282/176986.terrain new file mode 100644 index 000000000..46ad177bf Binary files /dev/null and b/public/terrain/18/429282/176986.terrain differ diff --git a/public/terrain/18/429282/176987.terrain b/public/terrain/18/429282/176987.terrain new file mode 100644 index 000000000..cd5ced16f Binary files /dev/null and b/public/terrain/18/429282/176987.terrain differ diff --git a/public/terrain/18/429282/176988.terrain b/public/terrain/18/429282/176988.terrain new file mode 100644 index 000000000..8036abe10 Binary files /dev/null and b/public/terrain/18/429282/176988.terrain differ diff --git a/public/terrain/18/429282/176989.terrain b/public/terrain/18/429282/176989.terrain new file mode 100644 index 000000000..8da529e9e Binary files /dev/null and b/public/terrain/18/429282/176989.terrain differ diff --git a/public/terrain/18/429282/176990.terrain b/public/terrain/18/429282/176990.terrain new file mode 100644 index 000000000..9af5a4158 Binary files /dev/null and b/public/terrain/18/429282/176990.terrain differ diff --git a/public/terrain/18/429282/176991.terrain b/public/terrain/18/429282/176991.terrain new file mode 100644 index 000000000..e7f5ea71a Binary files /dev/null and b/public/terrain/18/429282/176991.terrain differ diff --git a/public/terrain/18/429282/176992.terrain b/public/terrain/18/429282/176992.terrain new file mode 100644 index 000000000..d819fd54a Binary files /dev/null and b/public/terrain/18/429282/176992.terrain differ diff --git a/public/terrain/18/429282/176993.terrain b/public/terrain/18/429282/176993.terrain new file mode 100644 index 000000000..a110ac7c9 Binary files /dev/null and b/public/terrain/18/429282/176993.terrain differ diff --git a/public/terrain/18/429282/176994.terrain b/public/terrain/18/429282/176994.terrain new file mode 100644 index 000000000..8f18204d7 Binary files /dev/null and b/public/terrain/18/429282/176994.terrain differ diff --git a/public/terrain/18/429282/176995.terrain b/public/terrain/18/429282/176995.terrain new file mode 100644 index 000000000..f16fefa7b Binary files /dev/null and b/public/terrain/18/429282/176995.terrain differ diff --git a/public/terrain/18/429282/176996.terrain b/public/terrain/18/429282/176996.terrain new file mode 100644 index 000000000..efa1d9404 Binary files /dev/null and b/public/terrain/18/429282/176996.terrain differ diff --git a/public/terrain/18/429282/176997.terrain b/public/terrain/18/429282/176997.terrain new file mode 100644 index 000000000..3b5abc74d Binary files /dev/null and b/public/terrain/18/429282/176997.terrain differ diff --git a/public/terrain/18/429282/176998.terrain b/public/terrain/18/429282/176998.terrain new file mode 100644 index 000000000..d50eccf53 Binary files /dev/null and b/public/terrain/18/429282/176998.terrain differ diff --git a/public/terrain/18/429282/176999.terrain b/public/terrain/18/429282/176999.terrain new file mode 100644 index 000000000..8423f54f0 Binary files /dev/null and b/public/terrain/18/429282/176999.terrain differ diff --git a/public/terrain/18/429282/177000.terrain b/public/terrain/18/429282/177000.terrain new file mode 100644 index 000000000..f435cc33c Binary files /dev/null and b/public/terrain/18/429282/177000.terrain differ diff --git a/public/terrain/18/429282/177001.terrain b/public/terrain/18/429282/177001.terrain new file mode 100644 index 000000000..8c32a61b9 Binary files /dev/null and b/public/terrain/18/429282/177001.terrain differ diff --git a/public/terrain/18/429282/177002.terrain b/public/terrain/18/429282/177002.terrain new file mode 100644 index 000000000..0d549bddc Binary files /dev/null and b/public/terrain/18/429282/177002.terrain differ diff --git a/public/terrain/18/429282/177003.terrain b/public/terrain/18/429282/177003.terrain new file mode 100644 index 000000000..736c046d4 Binary files /dev/null and b/public/terrain/18/429282/177003.terrain differ diff --git a/public/terrain/18/429282/177004.terrain b/public/terrain/18/429282/177004.terrain new file mode 100644 index 000000000..62e0a04b5 Binary files /dev/null and b/public/terrain/18/429282/177004.terrain differ diff --git a/public/terrain/18/429282/177005.terrain b/public/terrain/18/429282/177005.terrain new file mode 100644 index 000000000..9c0d98d1d Binary files /dev/null and b/public/terrain/18/429282/177005.terrain differ diff --git a/public/terrain/18/429282/177006.terrain b/public/terrain/18/429282/177006.terrain new file mode 100644 index 000000000..7fdc8e711 Binary files /dev/null and b/public/terrain/18/429282/177006.terrain differ diff --git a/public/terrain/18/429282/177007.terrain b/public/terrain/18/429282/177007.terrain new file mode 100644 index 000000000..e7065172c Binary files /dev/null and b/public/terrain/18/429282/177007.terrain differ diff --git a/public/terrain/18/429282/177008.terrain b/public/terrain/18/429282/177008.terrain new file mode 100644 index 000000000..c292c9e56 Binary files /dev/null and b/public/terrain/18/429282/177008.terrain differ diff --git a/public/terrain/18/429282/177009.terrain b/public/terrain/18/429282/177009.terrain new file mode 100644 index 000000000..52db7957b Binary files /dev/null and b/public/terrain/18/429282/177009.terrain differ diff --git a/public/terrain/18/429282/177010.terrain b/public/terrain/18/429282/177010.terrain new file mode 100644 index 000000000..0d7fc0531 Binary files /dev/null and b/public/terrain/18/429282/177010.terrain differ diff --git a/public/terrain/18/429282/177011.terrain b/public/terrain/18/429282/177011.terrain new file mode 100644 index 000000000..be09ba2d2 Binary files /dev/null and b/public/terrain/18/429282/177011.terrain differ diff --git a/public/terrain/18/429282/177012.terrain b/public/terrain/18/429282/177012.terrain new file mode 100644 index 000000000..054c0a787 Binary files /dev/null and b/public/terrain/18/429282/177012.terrain differ diff --git a/public/terrain/18/429282/177013.terrain b/public/terrain/18/429282/177013.terrain new file mode 100644 index 000000000..e7e6f5fa4 Binary files /dev/null and b/public/terrain/18/429282/177013.terrain differ diff --git a/public/terrain/18/429282/177014.terrain b/public/terrain/18/429282/177014.terrain new file mode 100644 index 000000000..baa6b32b9 Binary files /dev/null and b/public/terrain/18/429282/177014.terrain differ diff --git a/public/terrain/18/429282/177015.terrain b/public/terrain/18/429282/177015.terrain new file mode 100644 index 000000000..efd1cba4d Binary files /dev/null and b/public/terrain/18/429282/177015.terrain differ diff --git a/public/terrain/18/429282/177016.terrain b/public/terrain/18/429282/177016.terrain new file mode 100644 index 000000000..acfd3bceb Binary files /dev/null and b/public/terrain/18/429282/177016.terrain differ diff --git a/public/terrain/18/429282/177017.terrain b/public/terrain/18/429282/177017.terrain new file mode 100644 index 000000000..75d5fc29d Binary files /dev/null and b/public/terrain/18/429282/177017.terrain differ diff --git a/public/terrain/18/429282/177018.terrain b/public/terrain/18/429282/177018.terrain new file mode 100644 index 000000000..00c1f6d31 Binary files /dev/null and b/public/terrain/18/429282/177018.terrain differ diff --git a/public/terrain/18/429282/177019.terrain b/public/terrain/18/429282/177019.terrain new file mode 100644 index 000000000..1dcc93316 Binary files /dev/null and b/public/terrain/18/429282/177019.terrain differ diff --git a/public/terrain/18/429282/177020.terrain b/public/terrain/18/429282/177020.terrain new file mode 100644 index 000000000..96de6e79c Binary files /dev/null and b/public/terrain/18/429282/177020.terrain differ diff --git a/public/terrain/18/429282/177021.terrain b/public/terrain/18/429282/177021.terrain new file mode 100644 index 000000000..677987a51 Binary files /dev/null and b/public/terrain/18/429282/177021.terrain differ diff --git a/public/terrain/18/429282/177022.terrain b/public/terrain/18/429282/177022.terrain new file mode 100644 index 000000000..80b214519 Binary files /dev/null and b/public/terrain/18/429282/177022.terrain differ diff --git a/public/terrain/18/429282/177023.terrain b/public/terrain/18/429282/177023.terrain new file mode 100644 index 000000000..fd574530b Binary files /dev/null and b/public/terrain/18/429282/177023.terrain differ diff --git a/public/terrain/18/429282/177024.terrain b/public/terrain/18/429282/177024.terrain new file mode 100644 index 000000000..c5c6552d6 Binary files /dev/null and b/public/terrain/18/429282/177024.terrain differ diff --git a/public/terrain/18/429282/177025.terrain b/public/terrain/18/429282/177025.terrain new file mode 100644 index 000000000..dadfd6bfe Binary files /dev/null and b/public/terrain/18/429282/177025.terrain differ diff --git a/public/terrain/18/429282/177026.terrain b/public/terrain/18/429282/177026.terrain new file mode 100644 index 000000000..4a62afa7b Binary files /dev/null and b/public/terrain/18/429282/177026.terrain differ diff --git a/public/terrain/18/429282/177027.terrain b/public/terrain/18/429282/177027.terrain new file mode 100644 index 000000000..f6bc382a1 Binary files /dev/null and b/public/terrain/18/429282/177027.terrain differ diff --git a/public/terrain/18/429282/177028.terrain b/public/terrain/18/429282/177028.terrain new file mode 100644 index 000000000..d4897d079 Binary files /dev/null and b/public/terrain/18/429282/177028.terrain differ diff --git a/public/terrain/18/429282/177029.terrain b/public/terrain/18/429282/177029.terrain new file mode 100644 index 000000000..c3feaa6cd Binary files /dev/null and b/public/terrain/18/429282/177029.terrain differ diff --git a/public/terrain/18/429283/176871.terrain b/public/terrain/18/429283/176871.terrain new file mode 100644 index 000000000..d9e7d8071 Binary files /dev/null and b/public/terrain/18/429283/176871.terrain differ diff --git a/public/terrain/18/429283/176872.terrain b/public/terrain/18/429283/176872.terrain new file mode 100644 index 000000000..7b777cd73 Binary files /dev/null and b/public/terrain/18/429283/176872.terrain differ diff --git a/public/terrain/18/429283/176873.terrain b/public/terrain/18/429283/176873.terrain new file mode 100644 index 000000000..fd0ed4650 Binary files /dev/null and b/public/terrain/18/429283/176873.terrain differ diff --git a/public/terrain/18/429283/176874.terrain b/public/terrain/18/429283/176874.terrain new file mode 100644 index 000000000..56e9cce69 Binary files /dev/null and b/public/terrain/18/429283/176874.terrain differ diff --git a/public/terrain/18/429283/176875.terrain b/public/terrain/18/429283/176875.terrain new file mode 100644 index 000000000..3eb93df10 Binary files /dev/null and b/public/terrain/18/429283/176875.terrain differ diff --git a/public/terrain/18/429283/176876.terrain b/public/terrain/18/429283/176876.terrain new file mode 100644 index 000000000..14b6a980e Binary files /dev/null and b/public/terrain/18/429283/176876.terrain differ diff --git a/public/terrain/18/429283/176877.terrain b/public/terrain/18/429283/176877.terrain new file mode 100644 index 000000000..94f3b6522 Binary files /dev/null and b/public/terrain/18/429283/176877.terrain differ diff --git a/public/terrain/18/429283/176878.terrain b/public/terrain/18/429283/176878.terrain new file mode 100644 index 000000000..8acc865b4 Binary files /dev/null and b/public/terrain/18/429283/176878.terrain differ diff --git a/public/terrain/18/429283/176879.terrain b/public/terrain/18/429283/176879.terrain new file mode 100644 index 000000000..300b79c95 Binary files /dev/null and b/public/terrain/18/429283/176879.terrain differ diff --git a/public/terrain/18/429283/176880.terrain b/public/terrain/18/429283/176880.terrain new file mode 100644 index 000000000..246b28c46 Binary files /dev/null and b/public/terrain/18/429283/176880.terrain differ diff --git a/public/terrain/18/429283/176881.terrain b/public/terrain/18/429283/176881.terrain new file mode 100644 index 000000000..de7df7e12 Binary files /dev/null and b/public/terrain/18/429283/176881.terrain differ diff --git a/public/terrain/18/429283/176882.terrain b/public/terrain/18/429283/176882.terrain new file mode 100644 index 000000000..afb0eb07b Binary files /dev/null and b/public/terrain/18/429283/176882.terrain differ diff --git a/public/terrain/18/429283/176883.terrain b/public/terrain/18/429283/176883.terrain new file mode 100644 index 000000000..200cd3ae6 Binary files /dev/null and b/public/terrain/18/429283/176883.terrain differ diff --git a/public/terrain/18/429283/176884.terrain b/public/terrain/18/429283/176884.terrain new file mode 100644 index 000000000..658831b21 Binary files /dev/null and b/public/terrain/18/429283/176884.terrain differ diff --git a/public/terrain/18/429283/176885.terrain b/public/terrain/18/429283/176885.terrain new file mode 100644 index 000000000..7476618e9 Binary files /dev/null and b/public/terrain/18/429283/176885.terrain differ diff --git a/public/terrain/18/429283/176886.terrain b/public/terrain/18/429283/176886.terrain new file mode 100644 index 000000000..642dc5096 Binary files /dev/null and b/public/terrain/18/429283/176886.terrain differ diff --git a/public/terrain/18/429283/176887.terrain b/public/terrain/18/429283/176887.terrain new file mode 100644 index 000000000..ef8089b57 Binary files /dev/null and b/public/terrain/18/429283/176887.terrain differ diff --git a/public/terrain/18/429283/176888.terrain b/public/terrain/18/429283/176888.terrain new file mode 100644 index 000000000..84d2a0e08 Binary files /dev/null and b/public/terrain/18/429283/176888.terrain differ diff --git a/public/terrain/18/429283/176889.terrain b/public/terrain/18/429283/176889.terrain new file mode 100644 index 000000000..27c27ce5e Binary files /dev/null and b/public/terrain/18/429283/176889.terrain differ diff --git a/public/terrain/18/429283/176890.terrain b/public/terrain/18/429283/176890.terrain new file mode 100644 index 000000000..d5c4300fb Binary files /dev/null and b/public/terrain/18/429283/176890.terrain differ diff --git a/public/terrain/18/429283/176891.terrain b/public/terrain/18/429283/176891.terrain new file mode 100644 index 000000000..9860efabe Binary files /dev/null and b/public/terrain/18/429283/176891.terrain differ diff --git a/public/terrain/18/429283/176892.terrain b/public/terrain/18/429283/176892.terrain new file mode 100644 index 000000000..40b53da41 Binary files /dev/null and b/public/terrain/18/429283/176892.terrain differ diff --git a/public/terrain/18/429283/176893.terrain b/public/terrain/18/429283/176893.terrain new file mode 100644 index 000000000..56d481dc6 Binary files /dev/null and b/public/terrain/18/429283/176893.terrain differ diff --git a/public/terrain/18/429283/176894.terrain b/public/terrain/18/429283/176894.terrain new file mode 100644 index 000000000..5a9d085c4 Binary files /dev/null and b/public/terrain/18/429283/176894.terrain differ diff --git a/public/terrain/18/429283/176895.terrain b/public/terrain/18/429283/176895.terrain new file mode 100644 index 000000000..6235ddedd Binary files /dev/null and b/public/terrain/18/429283/176895.terrain differ diff --git a/public/terrain/18/429283/176896.terrain b/public/terrain/18/429283/176896.terrain new file mode 100644 index 000000000..1add4be83 Binary files /dev/null and b/public/terrain/18/429283/176896.terrain differ diff --git a/public/terrain/18/429283/176897.terrain b/public/terrain/18/429283/176897.terrain new file mode 100644 index 000000000..85e511458 Binary files /dev/null and b/public/terrain/18/429283/176897.terrain differ diff --git a/public/terrain/18/429283/176898.terrain b/public/terrain/18/429283/176898.terrain new file mode 100644 index 000000000..66fcd7bbf Binary files /dev/null and b/public/terrain/18/429283/176898.terrain differ diff --git a/public/terrain/18/429283/176899.terrain b/public/terrain/18/429283/176899.terrain new file mode 100644 index 000000000..97c713fcb Binary files /dev/null and b/public/terrain/18/429283/176899.terrain differ diff --git a/public/terrain/18/429283/176900.terrain b/public/terrain/18/429283/176900.terrain new file mode 100644 index 000000000..b60b2bf93 Binary files /dev/null and b/public/terrain/18/429283/176900.terrain differ diff --git a/public/terrain/18/429283/176901.terrain b/public/terrain/18/429283/176901.terrain new file mode 100644 index 000000000..8e1b69aa1 Binary files /dev/null and b/public/terrain/18/429283/176901.terrain differ diff --git a/public/terrain/18/429283/176902.terrain b/public/terrain/18/429283/176902.terrain new file mode 100644 index 000000000..b15e6688e Binary files /dev/null and b/public/terrain/18/429283/176902.terrain differ diff --git a/public/terrain/18/429283/176903.terrain b/public/terrain/18/429283/176903.terrain new file mode 100644 index 000000000..a609d6fa8 Binary files /dev/null and b/public/terrain/18/429283/176903.terrain differ diff --git a/public/terrain/18/429283/176904.terrain b/public/terrain/18/429283/176904.terrain new file mode 100644 index 000000000..204b3f3f9 Binary files /dev/null and b/public/terrain/18/429283/176904.terrain differ diff --git a/public/terrain/18/429283/176905.terrain b/public/terrain/18/429283/176905.terrain new file mode 100644 index 000000000..32906a6f7 Binary files /dev/null and b/public/terrain/18/429283/176905.terrain differ diff --git a/public/terrain/18/429283/176906.terrain b/public/terrain/18/429283/176906.terrain new file mode 100644 index 000000000..1e936c0f9 Binary files /dev/null and b/public/terrain/18/429283/176906.terrain differ diff --git a/public/terrain/18/429283/176907.terrain b/public/terrain/18/429283/176907.terrain new file mode 100644 index 000000000..cd45e0585 Binary files /dev/null and b/public/terrain/18/429283/176907.terrain differ diff --git a/public/terrain/18/429283/176908.terrain b/public/terrain/18/429283/176908.terrain new file mode 100644 index 000000000..2bc10f2f6 Binary files /dev/null and b/public/terrain/18/429283/176908.terrain differ diff --git a/public/terrain/18/429283/176909.terrain b/public/terrain/18/429283/176909.terrain new file mode 100644 index 000000000..aa815bb39 Binary files /dev/null and b/public/terrain/18/429283/176909.terrain differ diff --git a/public/terrain/18/429283/176910.terrain b/public/terrain/18/429283/176910.terrain new file mode 100644 index 000000000..c961a4e31 Binary files /dev/null and b/public/terrain/18/429283/176910.terrain differ diff --git a/public/terrain/18/429283/176911.terrain b/public/terrain/18/429283/176911.terrain new file mode 100644 index 000000000..7c674d93e Binary files /dev/null and b/public/terrain/18/429283/176911.terrain differ diff --git a/public/terrain/18/429283/176912.terrain b/public/terrain/18/429283/176912.terrain new file mode 100644 index 000000000..5b82bfb17 Binary files /dev/null and b/public/terrain/18/429283/176912.terrain differ diff --git a/public/terrain/18/429283/176913.terrain b/public/terrain/18/429283/176913.terrain new file mode 100644 index 000000000..c1f11c740 Binary files /dev/null and b/public/terrain/18/429283/176913.terrain differ diff --git a/public/terrain/18/429283/176914.terrain b/public/terrain/18/429283/176914.terrain new file mode 100644 index 000000000..cdff1cd83 Binary files /dev/null and b/public/terrain/18/429283/176914.terrain differ diff --git a/public/terrain/18/429283/176915.terrain b/public/terrain/18/429283/176915.terrain new file mode 100644 index 000000000..9423ee566 Binary files /dev/null and b/public/terrain/18/429283/176915.terrain differ diff --git a/public/terrain/18/429283/176916.terrain b/public/terrain/18/429283/176916.terrain new file mode 100644 index 000000000..181da5243 Binary files /dev/null and b/public/terrain/18/429283/176916.terrain differ diff --git a/public/terrain/18/429283/176917.terrain b/public/terrain/18/429283/176917.terrain new file mode 100644 index 000000000..dff2be0ec Binary files /dev/null and b/public/terrain/18/429283/176917.terrain differ diff --git a/public/terrain/18/429283/176918.terrain b/public/terrain/18/429283/176918.terrain new file mode 100644 index 000000000..a09178ab1 Binary files /dev/null and b/public/terrain/18/429283/176918.terrain differ diff --git a/public/terrain/18/429283/176919.terrain b/public/terrain/18/429283/176919.terrain new file mode 100644 index 000000000..35b030132 Binary files /dev/null and b/public/terrain/18/429283/176919.terrain differ diff --git a/public/terrain/18/429283/176920.terrain b/public/terrain/18/429283/176920.terrain new file mode 100644 index 000000000..5d8c85eb0 Binary files /dev/null and b/public/terrain/18/429283/176920.terrain differ diff --git a/public/terrain/18/429283/176921.terrain b/public/terrain/18/429283/176921.terrain new file mode 100644 index 000000000..f2e80c40d Binary files /dev/null and b/public/terrain/18/429283/176921.terrain differ diff --git a/public/terrain/18/429283/176922.terrain b/public/terrain/18/429283/176922.terrain new file mode 100644 index 000000000..d0e8c2d9c Binary files /dev/null and b/public/terrain/18/429283/176922.terrain differ diff --git a/public/terrain/18/429283/176923.terrain b/public/terrain/18/429283/176923.terrain new file mode 100644 index 000000000..91de0161c Binary files /dev/null and b/public/terrain/18/429283/176923.terrain differ diff --git a/public/terrain/18/429283/176924.terrain b/public/terrain/18/429283/176924.terrain new file mode 100644 index 000000000..3e217e4eb Binary files /dev/null and b/public/terrain/18/429283/176924.terrain differ diff --git a/public/terrain/18/429283/176925.terrain b/public/terrain/18/429283/176925.terrain new file mode 100644 index 000000000..26f6be05d Binary files /dev/null and b/public/terrain/18/429283/176925.terrain differ diff --git a/public/terrain/18/429283/176926.terrain b/public/terrain/18/429283/176926.terrain new file mode 100644 index 000000000..c99941d62 Binary files /dev/null and b/public/terrain/18/429283/176926.terrain differ diff --git a/public/terrain/18/429283/176927.terrain b/public/terrain/18/429283/176927.terrain new file mode 100644 index 000000000..19f8b7f89 Binary files /dev/null and b/public/terrain/18/429283/176927.terrain differ diff --git a/public/terrain/18/429283/176928.terrain b/public/terrain/18/429283/176928.terrain new file mode 100644 index 000000000..b0d128661 Binary files /dev/null and b/public/terrain/18/429283/176928.terrain differ diff --git a/public/terrain/18/429283/176929.terrain b/public/terrain/18/429283/176929.terrain new file mode 100644 index 000000000..94fb38357 Binary files /dev/null and b/public/terrain/18/429283/176929.terrain differ diff --git a/public/terrain/18/429283/176930.terrain b/public/terrain/18/429283/176930.terrain new file mode 100644 index 000000000..e308a8b35 Binary files /dev/null and b/public/terrain/18/429283/176930.terrain differ diff --git a/public/terrain/18/429283/176931.terrain b/public/terrain/18/429283/176931.terrain new file mode 100644 index 000000000..7c997b3e4 Binary files /dev/null and b/public/terrain/18/429283/176931.terrain differ diff --git a/public/terrain/18/429283/176932.terrain b/public/terrain/18/429283/176932.terrain new file mode 100644 index 000000000..9ddb203eb Binary files /dev/null and b/public/terrain/18/429283/176932.terrain differ diff --git a/public/terrain/18/429283/176933.terrain b/public/terrain/18/429283/176933.terrain new file mode 100644 index 000000000..9cbe1be26 Binary files /dev/null and b/public/terrain/18/429283/176933.terrain differ diff --git a/public/terrain/18/429283/176934.terrain b/public/terrain/18/429283/176934.terrain new file mode 100644 index 000000000..af0b799db Binary files /dev/null and b/public/terrain/18/429283/176934.terrain differ diff --git a/public/terrain/18/429283/176935.terrain b/public/terrain/18/429283/176935.terrain new file mode 100644 index 000000000..715940b9f Binary files /dev/null and b/public/terrain/18/429283/176935.terrain differ diff --git a/public/terrain/18/429283/176936.terrain b/public/terrain/18/429283/176936.terrain new file mode 100644 index 000000000..81065301f Binary files /dev/null and b/public/terrain/18/429283/176936.terrain differ diff --git a/public/terrain/18/429283/176937.terrain b/public/terrain/18/429283/176937.terrain new file mode 100644 index 000000000..1ddc6cecc Binary files /dev/null and b/public/terrain/18/429283/176937.terrain differ diff --git a/public/terrain/18/429283/176938.terrain b/public/terrain/18/429283/176938.terrain new file mode 100644 index 000000000..cb99e50ed Binary files /dev/null and b/public/terrain/18/429283/176938.terrain differ diff --git a/public/terrain/18/429283/176939.terrain b/public/terrain/18/429283/176939.terrain new file mode 100644 index 000000000..7b30ac9a6 Binary files /dev/null and b/public/terrain/18/429283/176939.terrain differ diff --git a/public/terrain/18/429283/176940.terrain b/public/terrain/18/429283/176940.terrain new file mode 100644 index 000000000..7decaa84b Binary files /dev/null and b/public/terrain/18/429283/176940.terrain differ diff --git a/public/terrain/18/429283/176941.terrain b/public/terrain/18/429283/176941.terrain new file mode 100644 index 000000000..99e53aa93 Binary files /dev/null and b/public/terrain/18/429283/176941.terrain differ diff --git a/public/terrain/18/429283/176942.terrain b/public/terrain/18/429283/176942.terrain new file mode 100644 index 000000000..74dcba58b Binary files /dev/null and b/public/terrain/18/429283/176942.terrain differ diff --git a/public/terrain/18/429283/176943.terrain b/public/terrain/18/429283/176943.terrain new file mode 100644 index 000000000..1aacf6402 Binary files /dev/null and b/public/terrain/18/429283/176943.terrain differ diff --git a/public/terrain/18/429283/176944.terrain b/public/terrain/18/429283/176944.terrain new file mode 100644 index 000000000..1a42cb40b Binary files /dev/null and b/public/terrain/18/429283/176944.terrain differ diff --git a/public/terrain/18/429283/176945.terrain b/public/terrain/18/429283/176945.terrain new file mode 100644 index 000000000..cbb4120dd Binary files /dev/null and b/public/terrain/18/429283/176945.terrain differ diff --git a/public/terrain/18/429283/176946.terrain b/public/terrain/18/429283/176946.terrain new file mode 100644 index 000000000..b5746c564 Binary files /dev/null and b/public/terrain/18/429283/176946.terrain differ diff --git a/public/terrain/18/429283/176947.terrain b/public/terrain/18/429283/176947.terrain new file mode 100644 index 000000000..9bfbfc605 Binary files /dev/null and b/public/terrain/18/429283/176947.terrain differ diff --git a/public/terrain/18/429283/176948.terrain b/public/terrain/18/429283/176948.terrain new file mode 100644 index 000000000..668c3b028 Binary files /dev/null and b/public/terrain/18/429283/176948.terrain differ diff --git a/public/terrain/18/429283/176949.terrain b/public/terrain/18/429283/176949.terrain new file mode 100644 index 000000000..3d83f1bf7 Binary files /dev/null and b/public/terrain/18/429283/176949.terrain differ diff --git a/public/terrain/18/429283/176950.terrain b/public/terrain/18/429283/176950.terrain new file mode 100644 index 000000000..5864e0369 Binary files /dev/null and b/public/terrain/18/429283/176950.terrain differ diff --git a/public/terrain/18/429283/176951.terrain b/public/terrain/18/429283/176951.terrain new file mode 100644 index 000000000..6f251eefb Binary files /dev/null and b/public/terrain/18/429283/176951.terrain differ diff --git a/public/terrain/18/429283/176952.terrain b/public/terrain/18/429283/176952.terrain new file mode 100644 index 000000000..c0d145132 Binary files /dev/null and b/public/terrain/18/429283/176952.terrain differ diff --git a/public/terrain/18/429283/176953.terrain b/public/terrain/18/429283/176953.terrain new file mode 100644 index 000000000..6bbb28a94 Binary files /dev/null and b/public/terrain/18/429283/176953.terrain differ diff --git a/public/terrain/18/429283/176954.terrain b/public/terrain/18/429283/176954.terrain new file mode 100644 index 000000000..d4f7451ed Binary files /dev/null and b/public/terrain/18/429283/176954.terrain differ diff --git a/public/terrain/18/429283/176955.terrain b/public/terrain/18/429283/176955.terrain new file mode 100644 index 000000000..aa254b63a Binary files /dev/null and b/public/terrain/18/429283/176955.terrain differ diff --git a/public/terrain/18/429283/176956.terrain b/public/terrain/18/429283/176956.terrain new file mode 100644 index 000000000..03c39650b Binary files /dev/null and b/public/terrain/18/429283/176956.terrain differ diff --git a/public/terrain/18/429283/176957.terrain b/public/terrain/18/429283/176957.terrain new file mode 100644 index 000000000..c6d274bc4 Binary files /dev/null and b/public/terrain/18/429283/176957.terrain differ diff --git a/public/terrain/18/429283/176958.terrain b/public/terrain/18/429283/176958.terrain new file mode 100644 index 000000000..255b87c6f Binary files /dev/null and b/public/terrain/18/429283/176958.terrain differ diff --git a/public/terrain/18/429283/176959.terrain b/public/terrain/18/429283/176959.terrain new file mode 100644 index 000000000..b08de89a3 Binary files /dev/null and b/public/terrain/18/429283/176959.terrain differ diff --git a/public/terrain/18/429283/176960.terrain b/public/terrain/18/429283/176960.terrain new file mode 100644 index 000000000..e4447e811 Binary files /dev/null and b/public/terrain/18/429283/176960.terrain differ diff --git a/public/terrain/18/429283/176961.terrain b/public/terrain/18/429283/176961.terrain new file mode 100644 index 000000000..35d88e0bb Binary files /dev/null and b/public/terrain/18/429283/176961.terrain differ diff --git a/public/terrain/18/429283/176962.terrain b/public/terrain/18/429283/176962.terrain new file mode 100644 index 000000000..8d4170d02 Binary files /dev/null and b/public/terrain/18/429283/176962.terrain differ diff --git a/public/terrain/18/429283/176963.terrain b/public/terrain/18/429283/176963.terrain new file mode 100644 index 000000000..ffe1cd84e Binary files /dev/null and b/public/terrain/18/429283/176963.terrain differ diff --git a/public/terrain/18/429283/176964.terrain b/public/terrain/18/429283/176964.terrain new file mode 100644 index 000000000..49e55df76 Binary files /dev/null and b/public/terrain/18/429283/176964.terrain differ diff --git a/public/terrain/18/429283/176965.terrain b/public/terrain/18/429283/176965.terrain new file mode 100644 index 000000000..532d449a8 Binary files /dev/null and b/public/terrain/18/429283/176965.terrain differ diff --git a/public/terrain/18/429283/176966.terrain b/public/terrain/18/429283/176966.terrain new file mode 100644 index 000000000..c2a2cb8be Binary files /dev/null and b/public/terrain/18/429283/176966.terrain differ diff --git a/public/terrain/18/429283/176967.terrain b/public/terrain/18/429283/176967.terrain new file mode 100644 index 000000000..5fe148a01 Binary files /dev/null and b/public/terrain/18/429283/176967.terrain differ diff --git a/public/terrain/18/429283/176968.terrain b/public/terrain/18/429283/176968.terrain new file mode 100644 index 000000000..8f495576a Binary files /dev/null and b/public/terrain/18/429283/176968.terrain differ diff --git a/public/terrain/18/429283/176969.terrain b/public/terrain/18/429283/176969.terrain new file mode 100644 index 000000000..3f6fd0fa7 Binary files /dev/null and b/public/terrain/18/429283/176969.terrain differ diff --git a/public/terrain/18/429283/176970.terrain b/public/terrain/18/429283/176970.terrain new file mode 100644 index 000000000..fd8e82442 Binary files /dev/null and b/public/terrain/18/429283/176970.terrain differ diff --git a/public/terrain/18/429283/176971.terrain b/public/terrain/18/429283/176971.terrain new file mode 100644 index 000000000..26f38019c Binary files /dev/null and b/public/terrain/18/429283/176971.terrain differ diff --git a/public/terrain/18/429283/176972.terrain b/public/terrain/18/429283/176972.terrain new file mode 100644 index 000000000..130f46d38 Binary files /dev/null and b/public/terrain/18/429283/176972.terrain differ diff --git a/public/terrain/18/429283/176973.terrain b/public/terrain/18/429283/176973.terrain new file mode 100644 index 000000000..50c3d1f48 Binary files /dev/null and b/public/terrain/18/429283/176973.terrain differ diff --git a/public/terrain/18/429283/176974.terrain b/public/terrain/18/429283/176974.terrain new file mode 100644 index 000000000..4250aec54 Binary files /dev/null and b/public/terrain/18/429283/176974.terrain differ diff --git a/public/terrain/18/429283/176975.terrain b/public/terrain/18/429283/176975.terrain new file mode 100644 index 000000000..b4968b411 Binary files /dev/null and b/public/terrain/18/429283/176975.terrain differ diff --git a/public/terrain/18/429283/176976.terrain b/public/terrain/18/429283/176976.terrain new file mode 100644 index 000000000..db1f290e4 Binary files /dev/null and b/public/terrain/18/429283/176976.terrain differ diff --git a/public/terrain/18/429283/176977.terrain b/public/terrain/18/429283/176977.terrain new file mode 100644 index 000000000..7ecfe17f6 Binary files /dev/null and b/public/terrain/18/429283/176977.terrain differ diff --git a/public/terrain/18/429283/176978.terrain b/public/terrain/18/429283/176978.terrain new file mode 100644 index 000000000..37d9d3ed6 Binary files /dev/null and b/public/terrain/18/429283/176978.terrain differ diff --git a/public/terrain/18/429283/176979.terrain b/public/terrain/18/429283/176979.terrain new file mode 100644 index 000000000..33bb8a72c Binary files /dev/null and b/public/terrain/18/429283/176979.terrain differ diff --git a/public/terrain/18/429283/176980.terrain b/public/terrain/18/429283/176980.terrain new file mode 100644 index 000000000..47a26d1df Binary files /dev/null and b/public/terrain/18/429283/176980.terrain differ diff --git a/public/terrain/18/429283/176981.terrain b/public/terrain/18/429283/176981.terrain new file mode 100644 index 000000000..85b707b36 Binary files /dev/null and b/public/terrain/18/429283/176981.terrain differ diff --git a/public/terrain/18/429283/176982.terrain b/public/terrain/18/429283/176982.terrain new file mode 100644 index 000000000..86623823c Binary files /dev/null and b/public/terrain/18/429283/176982.terrain differ diff --git a/public/terrain/18/429283/176983.terrain b/public/terrain/18/429283/176983.terrain new file mode 100644 index 000000000..91dabcb25 Binary files /dev/null and b/public/terrain/18/429283/176983.terrain differ diff --git a/public/terrain/18/429283/176984.terrain b/public/terrain/18/429283/176984.terrain new file mode 100644 index 000000000..ca4cc9c10 Binary files /dev/null and b/public/terrain/18/429283/176984.terrain differ diff --git a/public/terrain/18/429283/176985.terrain b/public/terrain/18/429283/176985.terrain new file mode 100644 index 000000000..9613d9976 Binary files /dev/null and b/public/terrain/18/429283/176985.terrain differ diff --git a/public/terrain/18/429283/176986.terrain b/public/terrain/18/429283/176986.terrain new file mode 100644 index 000000000..73a3b21c5 Binary files /dev/null and b/public/terrain/18/429283/176986.terrain differ diff --git a/public/terrain/18/429283/176987.terrain b/public/terrain/18/429283/176987.terrain new file mode 100644 index 000000000..3dbec71f7 Binary files /dev/null and b/public/terrain/18/429283/176987.terrain differ diff --git a/public/terrain/18/429283/176988.terrain b/public/terrain/18/429283/176988.terrain new file mode 100644 index 000000000..de504a2e4 Binary files /dev/null and b/public/terrain/18/429283/176988.terrain differ diff --git a/public/terrain/18/429283/176989.terrain b/public/terrain/18/429283/176989.terrain new file mode 100644 index 000000000..7726eeb4d Binary files /dev/null and b/public/terrain/18/429283/176989.terrain differ diff --git a/public/terrain/18/429283/176990.terrain b/public/terrain/18/429283/176990.terrain new file mode 100644 index 000000000..74b211e84 Binary files /dev/null and b/public/terrain/18/429283/176990.terrain differ diff --git a/public/terrain/18/429283/176991.terrain b/public/terrain/18/429283/176991.terrain new file mode 100644 index 000000000..3b5f69849 Binary files /dev/null and b/public/terrain/18/429283/176991.terrain differ diff --git a/public/terrain/18/429283/176992.terrain b/public/terrain/18/429283/176992.terrain new file mode 100644 index 000000000..41e900fd6 Binary files /dev/null and b/public/terrain/18/429283/176992.terrain differ diff --git a/public/terrain/18/429283/176993.terrain b/public/terrain/18/429283/176993.terrain new file mode 100644 index 000000000..b304df065 Binary files /dev/null and b/public/terrain/18/429283/176993.terrain differ diff --git a/public/terrain/18/429283/176994.terrain b/public/terrain/18/429283/176994.terrain new file mode 100644 index 000000000..57a7d87a5 Binary files /dev/null and b/public/terrain/18/429283/176994.terrain differ diff --git a/public/terrain/18/429283/176995.terrain b/public/terrain/18/429283/176995.terrain new file mode 100644 index 000000000..1adcf917f Binary files /dev/null and b/public/terrain/18/429283/176995.terrain differ diff --git a/public/terrain/18/429283/176996.terrain b/public/terrain/18/429283/176996.terrain new file mode 100644 index 000000000..eff5b5861 Binary files /dev/null and b/public/terrain/18/429283/176996.terrain differ diff --git a/public/terrain/18/429283/176997.terrain b/public/terrain/18/429283/176997.terrain new file mode 100644 index 000000000..39aadf768 Binary files /dev/null and b/public/terrain/18/429283/176997.terrain differ diff --git a/public/terrain/18/429283/176998.terrain b/public/terrain/18/429283/176998.terrain new file mode 100644 index 000000000..ab641c954 Binary files /dev/null and b/public/terrain/18/429283/176998.terrain differ diff --git a/public/terrain/18/429283/176999.terrain b/public/terrain/18/429283/176999.terrain new file mode 100644 index 000000000..afb09605c Binary files /dev/null and b/public/terrain/18/429283/176999.terrain differ diff --git a/public/terrain/18/429283/177000.terrain b/public/terrain/18/429283/177000.terrain new file mode 100644 index 000000000..38f4efa35 Binary files /dev/null and b/public/terrain/18/429283/177000.terrain differ diff --git a/public/terrain/18/429283/177001.terrain b/public/terrain/18/429283/177001.terrain new file mode 100644 index 000000000..32c78ddea Binary files /dev/null and b/public/terrain/18/429283/177001.terrain differ diff --git a/public/terrain/18/429283/177002.terrain b/public/terrain/18/429283/177002.terrain new file mode 100644 index 000000000..7c81b9805 Binary files /dev/null and b/public/terrain/18/429283/177002.terrain differ diff --git a/public/terrain/18/429283/177003.terrain b/public/terrain/18/429283/177003.terrain new file mode 100644 index 000000000..065fb2299 Binary files /dev/null and b/public/terrain/18/429283/177003.terrain differ diff --git a/public/terrain/18/429283/177004.terrain b/public/terrain/18/429283/177004.terrain new file mode 100644 index 000000000..2c0d9a3c7 Binary files /dev/null and b/public/terrain/18/429283/177004.terrain differ diff --git a/public/terrain/18/429283/177005.terrain b/public/terrain/18/429283/177005.terrain new file mode 100644 index 000000000..a751bccd3 Binary files /dev/null and b/public/terrain/18/429283/177005.terrain differ diff --git a/public/terrain/18/429283/177006.terrain b/public/terrain/18/429283/177006.terrain new file mode 100644 index 000000000..f8721724e Binary files /dev/null and b/public/terrain/18/429283/177006.terrain differ diff --git a/public/terrain/18/429283/177007.terrain b/public/terrain/18/429283/177007.terrain new file mode 100644 index 000000000..66e51c37d Binary files /dev/null and b/public/terrain/18/429283/177007.terrain differ diff --git a/public/terrain/18/429283/177008.terrain b/public/terrain/18/429283/177008.terrain new file mode 100644 index 000000000..ce41af8db Binary files /dev/null and b/public/terrain/18/429283/177008.terrain differ diff --git a/public/terrain/18/429283/177009.terrain b/public/terrain/18/429283/177009.terrain new file mode 100644 index 000000000..7d2a75995 Binary files /dev/null and b/public/terrain/18/429283/177009.terrain differ diff --git a/public/terrain/18/429283/177010.terrain b/public/terrain/18/429283/177010.terrain new file mode 100644 index 000000000..ba239f21b Binary files /dev/null and b/public/terrain/18/429283/177010.terrain differ diff --git a/public/terrain/18/429283/177011.terrain b/public/terrain/18/429283/177011.terrain new file mode 100644 index 000000000..b3f881981 Binary files /dev/null and b/public/terrain/18/429283/177011.terrain differ diff --git a/public/terrain/18/429283/177012.terrain b/public/terrain/18/429283/177012.terrain new file mode 100644 index 000000000..3e9e913a4 Binary files /dev/null and b/public/terrain/18/429283/177012.terrain differ diff --git a/public/terrain/18/429283/177013.terrain b/public/terrain/18/429283/177013.terrain new file mode 100644 index 000000000..cf9247e8a Binary files /dev/null and b/public/terrain/18/429283/177013.terrain differ diff --git a/public/terrain/18/429283/177014.terrain b/public/terrain/18/429283/177014.terrain new file mode 100644 index 000000000..ec681077d Binary files /dev/null and b/public/terrain/18/429283/177014.terrain differ diff --git a/public/terrain/18/429283/177015.terrain b/public/terrain/18/429283/177015.terrain new file mode 100644 index 000000000..8191c5eb6 Binary files /dev/null and b/public/terrain/18/429283/177015.terrain differ diff --git a/public/terrain/18/429283/177016.terrain b/public/terrain/18/429283/177016.terrain new file mode 100644 index 000000000..4df257bf0 Binary files /dev/null and b/public/terrain/18/429283/177016.terrain differ diff --git a/public/terrain/18/429283/177017.terrain b/public/terrain/18/429283/177017.terrain new file mode 100644 index 000000000..81d79e774 Binary files /dev/null and b/public/terrain/18/429283/177017.terrain differ diff --git a/public/terrain/18/429283/177018.terrain b/public/terrain/18/429283/177018.terrain new file mode 100644 index 000000000..fb736314b Binary files /dev/null and b/public/terrain/18/429283/177018.terrain differ diff --git a/public/terrain/18/429283/177019.terrain b/public/terrain/18/429283/177019.terrain new file mode 100644 index 000000000..b4df15bf5 Binary files /dev/null and b/public/terrain/18/429283/177019.terrain differ diff --git a/public/terrain/18/429283/177020.terrain b/public/terrain/18/429283/177020.terrain new file mode 100644 index 000000000..419ca68cb Binary files /dev/null and b/public/terrain/18/429283/177020.terrain differ diff --git a/public/terrain/18/429283/177021.terrain b/public/terrain/18/429283/177021.terrain new file mode 100644 index 000000000..a523cb480 Binary files /dev/null and b/public/terrain/18/429283/177021.terrain differ diff --git a/public/terrain/18/429283/177022.terrain b/public/terrain/18/429283/177022.terrain new file mode 100644 index 000000000..9c86f1c5a Binary files /dev/null and b/public/terrain/18/429283/177022.terrain differ diff --git a/public/terrain/18/429283/177023.terrain b/public/terrain/18/429283/177023.terrain new file mode 100644 index 000000000..59a29f859 Binary files /dev/null and b/public/terrain/18/429283/177023.terrain differ diff --git a/public/terrain/18/429283/177024.terrain b/public/terrain/18/429283/177024.terrain new file mode 100644 index 000000000..13274b259 Binary files /dev/null and b/public/terrain/18/429283/177024.terrain differ diff --git a/public/terrain/18/429283/177025.terrain b/public/terrain/18/429283/177025.terrain new file mode 100644 index 000000000..659deaa2c Binary files /dev/null and b/public/terrain/18/429283/177025.terrain differ diff --git a/public/terrain/18/429283/177026.terrain b/public/terrain/18/429283/177026.terrain new file mode 100644 index 000000000..fd4699bb3 Binary files /dev/null and b/public/terrain/18/429283/177026.terrain differ diff --git a/public/terrain/18/429283/177027.terrain b/public/terrain/18/429283/177027.terrain new file mode 100644 index 000000000..926aa7d3c Binary files /dev/null and b/public/terrain/18/429283/177027.terrain differ diff --git a/public/terrain/18/429283/177028.terrain b/public/terrain/18/429283/177028.terrain new file mode 100644 index 000000000..cd28df4bc Binary files /dev/null and b/public/terrain/18/429283/177028.terrain differ diff --git a/public/terrain/18/429283/177029.terrain b/public/terrain/18/429283/177029.terrain new file mode 100644 index 000000000..a81c0e02c Binary files /dev/null and b/public/terrain/18/429283/177029.terrain differ diff --git a/public/terrain/18/429284/176871.terrain b/public/terrain/18/429284/176871.terrain new file mode 100644 index 000000000..8fa549e1f Binary files /dev/null and b/public/terrain/18/429284/176871.terrain differ diff --git a/public/terrain/18/429284/176872.terrain b/public/terrain/18/429284/176872.terrain new file mode 100644 index 000000000..588ce17fc Binary files /dev/null and b/public/terrain/18/429284/176872.terrain differ diff --git a/public/terrain/18/429284/176873.terrain b/public/terrain/18/429284/176873.terrain new file mode 100644 index 000000000..359e1f303 Binary files /dev/null and b/public/terrain/18/429284/176873.terrain differ diff --git a/public/terrain/18/429284/176874.terrain b/public/terrain/18/429284/176874.terrain new file mode 100644 index 000000000..9695dd29d Binary files /dev/null and b/public/terrain/18/429284/176874.terrain differ diff --git a/public/terrain/18/429284/176875.terrain b/public/terrain/18/429284/176875.terrain new file mode 100644 index 000000000..b6e89aca8 Binary files /dev/null and b/public/terrain/18/429284/176875.terrain differ diff --git a/public/terrain/18/429284/176876.terrain b/public/terrain/18/429284/176876.terrain new file mode 100644 index 000000000..1e197da96 Binary files /dev/null and b/public/terrain/18/429284/176876.terrain differ diff --git a/public/terrain/18/429284/176877.terrain b/public/terrain/18/429284/176877.terrain new file mode 100644 index 000000000..33bca7b99 Binary files /dev/null and b/public/terrain/18/429284/176877.terrain differ diff --git a/public/terrain/18/429284/176878.terrain b/public/terrain/18/429284/176878.terrain new file mode 100644 index 000000000..dc0a8d27b Binary files /dev/null and b/public/terrain/18/429284/176878.terrain differ diff --git a/public/terrain/18/429284/176879.terrain b/public/terrain/18/429284/176879.terrain new file mode 100644 index 000000000..40ece0d8e Binary files /dev/null and b/public/terrain/18/429284/176879.terrain differ diff --git a/public/terrain/18/429284/176880.terrain b/public/terrain/18/429284/176880.terrain new file mode 100644 index 000000000..655ca00e5 Binary files /dev/null and b/public/terrain/18/429284/176880.terrain differ diff --git a/public/terrain/18/429284/176881.terrain b/public/terrain/18/429284/176881.terrain new file mode 100644 index 000000000..736dd5c67 Binary files /dev/null and b/public/terrain/18/429284/176881.terrain differ diff --git a/public/terrain/18/429284/176882.terrain b/public/terrain/18/429284/176882.terrain new file mode 100644 index 000000000..819be44e7 Binary files /dev/null and b/public/terrain/18/429284/176882.terrain differ diff --git a/public/terrain/18/429284/176883.terrain b/public/terrain/18/429284/176883.terrain new file mode 100644 index 000000000..6ba9a1a88 Binary files /dev/null and b/public/terrain/18/429284/176883.terrain differ diff --git a/public/terrain/18/429284/176884.terrain b/public/terrain/18/429284/176884.terrain new file mode 100644 index 000000000..fdc7ecae6 Binary files /dev/null and b/public/terrain/18/429284/176884.terrain differ diff --git a/public/terrain/18/429284/176885.terrain b/public/terrain/18/429284/176885.terrain new file mode 100644 index 000000000..31cdb92e7 Binary files /dev/null and b/public/terrain/18/429284/176885.terrain differ diff --git a/public/terrain/18/429284/176886.terrain b/public/terrain/18/429284/176886.terrain new file mode 100644 index 000000000..59c69f671 Binary files /dev/null and b/public/terrain/18/429284/176886.terrain differ diff --git a/public/terrain/18/429284/176887.terrain b/public/terrain/18/429284/176887.terrain new file mode 100644 index 000000000..b4023d72c Binary files /dev/null and b/public/terrain/18/429284/176887.terrain differ diff --git a/public/terrain/18/429284/176888.terrain b/public/terrain/18/429284/176888.terrain new file mode 100644 index 000000000..7600dcb7d Binary files /dev/null and b/public/terrain/18/429284/176888.terrain differ diff --git a/public/terrain/18/429284/176889.terrain b/public/terrain/18/429284/176889.terrain new file mode 100644 index 000000000..b0fafb055 Binary files /dev/null and b/public/terrain/18/429284/176889.terrain differ diff --git a/public/terrain/18/429284/176890.terrain b/public/terrain/18/429284/176890.terrain new file mode 100644 index 000000000..7f968ad9f Binary files /dev/null and b/public/terrain/18/429284/176890.terrain differ diff --git a/public/terrain/18/429284/176891.terrain b/public/terrain/18/429284/176891.terrain new file mode 100644 index 000000000..60c32ea36 Binary files /dev/null and b/public/terrain/18/429284/176891.terrain differ diff --git a/public/terrain/18/429284/176892.terrain b/public/terrain/18/429284/176892.terrain new file mode 100644 index 000000000..9d9f7155a Binary files /dev/null and b/public/terrain/18/429284/176892.terrain differ diff --git a/public/terrain/18/429284/176893.terrain b/public/terrain/18/429284/176893.terrain new file mode 100644 index 000000000..a3ff70e0f Binary files /dev/null and b/public/terrain/18/429284/176893.terrain differ diff --git a/public/terrain/18/429284/176894.terrain b/public/terrain/18/429284/176894.terrain new file mode 100644 index 000000000..6e7f2ac15 Binary files /dev/null and b/public/terrain/18/429284/176894.terrain differ diff --git a/public/terrain/18/429284/176895.terrain b/public/terrain/18/429284/176895.terrain new file mode 100644 index 000000000..9070c0a54 Binary files /dev/null and b/public/terrain/18/429284/176895.terrain differ diff --git a/public/terrain/18/429284/176896.terrain b/public/terrain/18/429284/176896.terrain new file mode 100644 index 000000000..daad58c11 Binary files /dev/null and b/public/terrain/18/429284/176896.terrain differ diff --git a/public/terrain/18/429284/176897.terrain b/public/terrain/18/429284/176897.terrain new file mode 100644 index 000000000..d2a12fb11 Binary files /dev/null and b/public/terrain/18/429284/176897.terrain differ diff --git a/public/terrain/18/429284/176898.terrain b/public/terrain/18/429284/176898.terrain new file mode 100644 index 000000000..ef7a21aba Binary files /dev/null and b/public/terrain/18/429284/176898.terrain differ diff --git a/public/terrain/18/429284/176899.terrain b/public/terrain/18/429284/176899.terrain new file mode 100644 index 000000000..5b25b990e Binary files /dev/null and b/public/terrain/18/429284/176899.terrain differ diff --git a/public/terrain/18/429284/176900.terrain b/public/terrain/18/429284/176900.terrain new file mode 100644 index 000000000..0c0fddabd Binary files /dev/null and b/public/terrain/18/429284/176900.terrain differ diff --git a/public/terrain/18/429284/176901.terrain b/public/terrain/18/429284/176901.terrain new file mode 100644 index 000000000..5b5594acc Binary files /dev/null and b/public/terrain/18/429284/176901.terrain differ diff --git a/public/terrain/18/429284/176902.terrain b/public/terrain/18/429284/176902.terrain new file mode 100644 index 000000000..5f771c2c9 Binary files /dev/null and b/public/terrain/18/429284/176902.terrain differ diff --git a/public/terrain/18/429284/176903.terrain b/public/terrain/18/429284/176903.terrain new file mode 100644 index 000000000..301a3a720 Binary files /dev/null and b/public/terrain/18/429284/176903.terrain differ diff --git a/public/terrain/18/429284/176904.terrain b/public/terrain/18/429284/176904.terrain new file mode 100644 index 000000000..4182e40cd Binary files /dev/null and b/public/terrain/18/429284/176904.terrain differ diff --git a/public/terrain/18/429284/176905.terrain b/public/terrain/18/429284/176905.terrain new file mode 100644 index 000000000..a84889a15 Binary files /dev/null and b/public/terrain/18/429284/176905.terrain differ diff --git a/public/terrain/18/429284/176906.terrain b/public/terrain/18/429284/176906.terrain new file mode 100644 index 000000000..a85e9c379 Binary files /dev/null and b/public/terrain/18/429284/176906.terrain differ diff --git a/public/terrain/18/429284/176907.terrain b/public/terrain/18/429284/176907.terrain new file mode 100644 index 000000000..4d6bda42a Binary files /dev/null and b/public/terrain/18/429284/176907.terrain differ diff --git a/public/terrain/18/429284/176908.terrain b/public/terrain/18/429284/176908.terrain new file mode 100644 index 000000000..e5841e89a Binary files /dev/null and b/public/terrain/18/429284/176908.terrain differ diff --git a/public/terrain/18/429284/176909.terrain b/public/terrain/18/429284/176909.terrain new file mode 100644 index 000000000..cb74ad336 Binary files /dev/null and b/public/terrain/18/429284/176909.terrain differ diff --git a/public/terrain/18/429284/176910.terrain b/public/terrain/18/429284/176910.terrain new file mode 100644 index 000000000..da68b3b4d Binary files /dev/null and b/public/terrain/18/429284/176910.terrain differ diff --git a/public/terrain/18/429284/176911.terrain b/public/terrain/18/429284/176911.terrain new file mode 100644 index 000000000..f3af8d262 Binary files /dev/null and b/public/terrain/18/429284/176911.terrain differ diff --git a/public/terrain/18/429284/176912.terrain b/public/terrain/18/429284/176912.terrain new file mode 100644 index 000000000..90a2a77a2 Binary files /dev/null and b/public/terrain/18/429284/176912.terrain differ diff --git a/public/terrain/18/429284/176913.terrain b/public/terrain/18/429284/176913.terrain new file mode 100644 index 000000000..ae60a1910 Binary files /dev/null and b/public/terrain/18/429284/176913.terrain differ diff --git a/public/terrain/18/429284/176914.terrain b/public/terrain/18/429284/176914.terrain new file mode 100644 index 000000000..5f7db6706 Binary files /dev/null and b/public/terrain/18/429284/176914.terrain differ diff --git a/public/terrain/18/429284/176915.terrain b/public/terrain/18/429284/176915.terrain new file mode 100644 index 000000000..8c58b026c Binary files /dev/null and b/public/terrain/18/429284/176915.terrain differ diff --git a/public/terrain/18/429284/176916.terrain b/public/terrain/18/429284/176916.terrain new file mode 100644 index 000000000..4bb0b5f19 Binary files /dev/null and b/public/terrain/18/429284/176916.terrain differ diff --git a/public/terrain/18/429284/176917.terrain b/public/terrain/18/429284/176917.terrain new file mode 100644 index 000000000..df5dc34f3 Binary files /dev/null and b/public/terrain/18/429284/176917.terrain differ diff --git a/public/terrain/18/429284/176918.terrain b/public/terrain/18/429284/176918.terrain new file mode 100644 index 000000000..7a0888ba5 Binary files /dev/null and b/public/terrain/18/429284/176918.terrain differ diff --git a/public/terrain/18/429284/176919.terrain b/public/terrain/18/429284/176919.terrain new file mode 100644 index 000000000..9e3596469 Binary files /dev/null and b/public/terrain/18/429284/176919.terrain differ diff --git a/public/terrain/18/429284/176920.terrain b/public/terrain/18/429284/176920.terrain new file mode 100644 index 000000000..c8290d4d1 Binary files /dev/null and b/public/terrain/18/429284/176920.terrain differ diff --git a/public/terrain/18/429284/176921.terrain b/public/terrain/18/429284/176921.terrain new file mode 100644 index 000000000..2ff4ee081 Binary files /dev/null and b/public/terrain/18/429284/176921.terrain differ diff --git a/public/terrain/18/429284/176922.terrain b/public/terrain/18/429284/176922.terrain new file mode 100644 index 000000000..efb64ffe4 Binary files /dev/null and b/public/terrain/18/429284/176922.terrain differ diff --git a/public/terrain/18/429284/176923.terrain b/public/terrain/18/429284/176923.terrain new file mode 100644 index 000000000..124725c5b Binary files /dev/null and b/public/terrain/18/429284/176923.terrain differ diff --git a/public/terrain/18/429284/176924.terrain b/public/terrain/18/429284/176924.terrain new file mode 100644 index 000000000..2cb14414e Binary files /dev/null and b/public/terrain/18/429284/176924.terrain differ diff --git a/public/terrain/18/429284/176925.terrain b/public/terrain/18/429284/176925.terrain new file mode 100644 index 000000000..af3eb10dc Binary files /dev/null and b/public/terrain/18/429284/176925.terrain differ diff --git a/public/terrain/18/429284/176926.terrain b/public/terrain/18/429284/176926.terrain new file mode 100644 index 000000000..c6f5fdbe3 Binary files /dev/null and b/public/terrain/18/429284/176926.terrain differ diff --git a/public/terrain/18/429284/176927.terrain b/public/terrain/18/429284/176927.terrain new file mode 100644 index 000000000..92ce600e9 Binary files /dev/null and b/public/terrain/18/429284/176927.terrain differ diff --git a/public/terrain/18/429284/176928.terrain b/public/terrain/18/429284/176928.terrain new file mode 100644 index 000000000..bcfcd3ce0 Binary files /dev/null and b/public/terrain/18/429284/176928.terrain differ diff --git a/public/terrain/18/429284/176929.terrain b/public/terrain/18/429284/176929.terrain new file mode 100644 index 000000000..40564b058 Binary files /dev/null and b/public/terrain/18/429284/176929.terrain differ diff --git a/public/terrain/18/429284/176930.terrain b/public/terrain/18/429284/176930.terrain new file mode 100644 index 000000000..0cb29bf20 Binary files /dev/null and b/public/terrain/18/429284/176930.terrain differ diff --git a/public/terrain/18/429284/176931.terrain b/public/terrain/18/429284/176931.terrain new file mode 100644 index 000000000..fe6b9ee66 Binary files /dev/null and b/public/terrain/18/429284/176931.terrain differ diff --git a/public/terrain/18/429284/176932.terrain b/public/terrain/18/429284/176932.terrain new file mode 100644 index 000000000..70f3c8836 Binary files /dev/null and b/public/terrain/18/429284/176932.terrain differ diff --git a/public/terrain/18/429284/176933.terrain b/public/terrain/18/429284/176933.terrain new file mode 100644 index 000000000..bf58716d6 Binary files /dev/null and b/public/terrain/18/429284/176933.terrain differ diff --git a/public/terrain/18/429284/176934.terrain b/public/terrain/18/429284/176934.terrain new file mode 100644 index 000000000..df4e4e62d Binary files /dev/null and b/public/terrain/18/429284/176934.terrain differ diff --git a/public/terrain/18/429284/176935.terrain b/public/terrain/18/429284/176935.terrain new file mode 100644 index 000000000..f3c9432b4 Binary files /dev/null and b/public/terrain/18/429284/176935.terrain differ diff --git a/public/terrain/18/429284/176936.terrain b/public/terrain/18/429284/176936.terrain new file mode 100644 index 000000000..af2468f1d Binary files /dev/null and b/public/terrain/18/429284/176936.terrain differ diff --git a/public/terrain/18/429284/176937.terrain b/public/terrain/18/429284/176937.terrain new file mode 100644 index 000000000..8a88e5622 Binary files /dev/null and b/public/terrain/18/429284/176937.terrain differ diff --git a/public/terrain/18/429284/176938.terrain b/public/terrain/18/429284/176938.terrain new file mode 100644 index 000000000..cddff34b3 Binary files /dev/null and b/public/terrain/18/429284/176938.terrain differ diff --git a/public/terrain/18/429284/176939.terrain b/public/terrain/18/429284/176939.terrain new file mode 100644 index 000000000..1b0f8cd1a Binary files /dev/null and b/public/terrain/18/429284/176939.terrain differ diff --git a/public/terrain/18/429284/176940.terrain b/public/terrain/18/429284/176940.terrain new file mode 100644 index 000000000..fdb8251a8 Binary files /dev/null and b/public/terrain/18/429284/176940.terrain differ diff --git a/public/terrain/18/429284/176941.terrain b/public/terrain/18/429284/176941.terrain new file mode 100644 index 000000000..15f99afac Binary files /dev/null and b/public/terrain/18/429284/176941.terrain differ diff --git a/public/terrain/18/429284/176942.terrain b/public/terrain/18/429284/176942.terrain new file mode 100644 index 000000000..266248d51 Binary files /dev/null and b/public/terrain/18/429284/176942.terrain differ diff --git a/public/terrain/18/429284/176943.terrain b/public/terrain/18/429284/176943.terrain new file mode 100644 index 000000000..ead9ecf85 Binary files /dev/null and b/public/terrain/18/429284/176943.terrain differ diff --git a/public/terrain/18/429284/176944.terrain b/public/terrain/18/429284/176944.terrain new file mode 100644 index 000000000..86b967ea8 Binary files /dev/null and b/public/terrain/18/429284/176944.terrain differ diff --git a/public/terrain/18/429284/176945.terrain b/public/terrain/18/429284/176945.terrain new file mode 100644 index 000000000..aa69d7af4 Binary files /dev/null and b/public/terrain/18/429284/176945.terrain differ diff --git a/public/terrain/18/429284/176946.terrain b/public/terrain/18/429284/176946.terrain new file mode 100644 index 000000000..bfb58bf0e Binary files /dev/null and b/public/terrain/18/429284/176946.terrain differ diff --git a/public/terrain/18/429284/176947.terrain b/public/terrain/18/429284/176947.terrain new file mode 100644 index 000000000..d26c6f270 Binary files /dev/null and b/public/terrain/18/429284/176947.terrain differ diff --git a/public/terrain/18/429284/176948.terrain b/public/terrain/18/429284/176948.terrain new file mode 100644 index 000000000..c718e1e63 Binary files /dev/null and b/public/terrain/18/429284/176948.terrain differ diff --git a/public/terrain/18/429284/176949.terrain b/public/terrain/18/429284/176949.terrain new file mode 100644 index 000000000..c299ea084 Binary files /dev/null and b/public/terrain/18/429284/176949.terrain differ diff --git a/public/terrain/18/429284/176950.terrain b/public/terrain/18/429284/176950.terrain new file mode 100644 index 000000000..b4d1e33ed Binary files /dev/null and b/public/terrain/18/429284/176950.terrain differ diff --git a/public/terrain/18/429284/176951.terrain b/public/terrain/18/429284/176951.terrain new file mode 100644 index 000000000..38f996b11 Binary files /dev/null and b/public/terrain/18/429284/176951.terrain differ diff --git a/public/terrain/18/429284/176952.terrain b/public/terrain/18/429284/176952.terrain new file mode 100644 index 000000000..07c757029 Binary files /dev/null and b/public/terrain/18/429284/176952.terrain differ diff --git a/public/terrain/18/429284/176953.terrain b/public/terrain/18/429284/176953.terrain new file mode 100644 index 000000000..94d9d1bfe Binary files /dev/null and b/public/terrain/18/429284/176953.terrain differ diff --git a/public/terrain/18/429284/176954.terrain b/public/terrain/18/429284/176954.terrain new file mode 100644 index 000000000..33ef90ada Binary files /dev/null and b/public/terrain/18/429284/176954.terrain differ diff --git a/public/terrain/18/429284/176955.terrain b/public/terrain/18/429284/176955.terrain new file mode 100644 index 000000000..a1532c20d Binary files /dev/null and b/public/terrain/18/429284/176955.terrain differ diff --git a/public/terrain/18/429284/176956.terrain b/public/terrain/18/429284/176956.terrain new file mode 100644 index 000000000..f5debe913 Binary files /dev/null and b/public/terrain/18/429284/176956.terrain differ diff --git a/public/terrain/18/429284/176957.terrain b/public/terrain/18/429284/176957.terrain new file mode 100644 index 000000000..e0f3ef4f9 Binary files /dev/null and b/public/terrain/18/429284/176957.terrain differ diff --git a/public/terrain/18/429284/176958.terrain b/public/terrain/18/429284/176958.terrain new file mode 100644 index 000000000..d828035fa Binary files /dev/null and b/public/terrain/18/429284/176958.terrain differ diff --git a/public/terrain/18/429284/176959.terrain b/public/terrain/18/429284/176959.terrain new file mode 100644 index 000000000..5c5d79b87 Binary files /dev/null and b/public/terrain/18/429284/176959.terrain differ diff --git a/public/terrain/18/429284/176960.terrain b/public/terrain/18/429284/176960.terrain new file mode 100644 index 000000000..ac5890405 Binary files /dev/null and b/public/terrain/18/429284/176960.terrain differ diff --git a/public/terrain/18/429284/176961.terrain b/public/terrain/18/429284/176961.terrain new file mode 100644 index 000000000..d05aa07d2 Binary files /dev/null and b/public/terrain/18/429284/176961.terrain differ diff --git a/public/terrain/18/429284/176962.terrain b/public/terrain/18/429284/176962.terrain new file mode 100644 index 000000000..678044743 Binary files /dev/null and b/public/terrain/18/429284/176962.terrain differ diff --git a/public/terrain/18/429284/176963.terrain b/public/terrain/18/429284/176963.terrain new file mode 100644 index 000000000..5f5358b22 Binary files /dev/null and b/public/terrain/18/429284/176963.terrain differ diff --git a/public/terrain/18/429284/176964.terrain b/public/terrain/18/429284/176964.terrain new file mode 100644 index 000000000..204b90423 Binary files /dev/null and b/public/terrain/18/429284/176964.terrain differ diff --git a/public/terrain/18/429284/176965.terrain b/public/terrain/18/429284/176965.terrain new file mode 100644 index 000000000..cfbaa543a Binary files /dev/null and b/public/terrain/18/429284/176965.terrain differ diff --git a/public/terrain/18/429284/176966.terrain b/public/terrain/18/429284/176966.terrain new file mode 100644 index 000000000..0a474ac5c Binary files /dev/null and b/public/terrain/18/429284/176966.terrain differ diff --git a/public/terrain/18/429284/176967.terrain b/public/terrain/18/429284/176967.terrain new file mode 100644 index 000000000..8df8341ab Binary files /dev/null and b/public/terrain/18/429284/176967.terrain differ diff --git a/public/terrain/18/429284/176968.terrain b/public/terrain/18/429284/176968.terrain new file mode 100644 index 000000000..8189934ab Binary files /dev/null and b/public/terrain/18/429284/176968.terrain differ diff --git a/public/terrain/18/429284/176969.terrain b/public/terrain/18/429284/176969.terrain new file mode 100644 index 000000000..9abee159e Binary files /dev/null and b/public/terrain/18/429284/176969.terrain differ diff --git a/public/terrain/18/429284/176970.terrain b/public/terrain/18/429284/176970.terrain new file mode 100644 index 000000000..47db594e3 Binary files /dev/null and b/public/terrain/18/429284/176970.terrain differ diff --git a/public/terrain/18/429284/176971.terrain b/public/terrain/18/429284/176971.terrain new file mode 100644 index 000000000..e82d7b87a Binary files /dev/null and b/public/terrain/18/429284/176971.terrain differ diff --git a/public/terrain/18/429284/176972.terrain b/public/terrain/18/429284/176972.terrain new file mode 100644 index 000000000..94ff4d01b Binary files /dev/null and b/public/terrain/18/429284/176972.terrain differ diff --git a/public/terrain/18/429284/176973.terrain b/public/terrain/18/429284/176973.terrain new file mode 100644 index 000000000..eb88178fb Binary files /dev/null and b/public/terrain/18/429284/176973.terrain differ diff --git a/public/terrain/18/429284/176974.terrain b/public/terrain/18/429284/176974.terrain new file mode 100644 index 000000000..a24ef8e20 Binary files /dev/null and b/public/terrain/18/429284/176974.terrain differ diff --git a/public/terrain/18/429284/176975.terrain b/public/terrain/18/429284/176975.terrain new file mode 100644 index 000000000..14ebd060b Binary files /dev/null and b/public/terrain/18/429284/176975.terrain differ diff --git a/public/terrain/18/429284/176976.terrain b/public/terrain/18/429284/176976.terrain new file mode 100644 index 000000000..d6c1e3c8a Binary files /dev/null and b/public/terrain/18/429284/176976.terrain differ diff --git a/public/terrain/18/429284/176977.terrain b/public/terrain/18/429284/176977.terrain new file mode 100644 index 000000000..d6ef31b73 Binary files /dev/null and b/public/terrain/18/429284/176977.terrain differ diff --git a/public/terrain/18/429284/176978.terrain b/public/terrain/18/429284/176978.terrain new file mode 100644 index 000000000..98b249031 Binary files /dev/null and b/public/terrain/18/429284/176978.terrain differ diff --git a/public/terrain/18/429284/176979.terrain b/public/terrain/18/429284/176979.terrain new file mode 100644 index 000000000..95bf4b6da Binary files /dev/null and b/public/terrain/18/429284/176979.terrain differ diff --git a/public/terrain/18/429284/176980.terrain b/public/terrain/18/429284/176980.terrain new file mode 100644 index 000000000..705573d33 Binary files /dev/null and b/public/terrain/18/429284/176980.terrain differ diff --git a/public/terrain/18/429284/176981.terrain b/public/terrain/18/429284/176981.terrain new file mode 100644 index 000000000..8e35234be Binary files /dev/null and b/public/terrain/18/429284/176981.terrain differ diff --git a/public/terrain/18/429284/176982.terrain b/public/terrain/18/429284/176982.terrain new file mode 100644 index 000000000..bcd9c481b Binary files /dev/null and b/public/terrain/18/429284/176982.terrain differ diff --git a/public/terrain/18/429284/176983.terrain b/public/terrain/18/429284/176983.terrain new file mode 100644 index 000000000..461552fb9 Binary files /dev/null and b/public/terrain/18/429284/176983.terrain differ diff --git a/public/terrain/18/429284/176984.terrain b/public/terrain/18/429284/176984.terrain new file mode 100644 index 000000000..b0c1601c3 Binary files /dev/null and b/public/terrain/18/429284/176984.terrain differ diff --git a/public/terrain/18/429284/176985.terrain b/public/terrain/18/429284/176985.terrain new file mode 100644 index 000000000..9019df179 Binary files /dev/null and b/public/terrain/18/429284/176985.terrain differ diff --git a/public/terrain/18/429284/176986.terrain b/public/terrain/18/429284/176986.terrain new file mode 100644 index 000000000..64093d8c8 Binary files /dev/null and b/public/terrain/18/429284/176986.terrain differ diff --git a/public/terrain/18/429284/176987.terrain b/public/terrain/18/429284/176987.terrain new file mode 100644 index 000000000..90b438973 Binary files /dev/null and b/public/terrain/18/429284/176987.terrain differ diff --git a/public/terrain/18/429284/176988.terrain b/public/terrain/18/429284/176988.terrain new file mode 100644 index 000000000..e357a5180 Binary files /dev/null and b/public/terrain/18/429284/176988.terrain differ diff --git a/public/terrain/18/429284/176989.terrain b/public/terrain/18/429284/176989.terrain new file mode 100644 index 000000000..56fbc6aca Binary files /dev/null and b/public/terrain/18/429284/176989.terrain differ diff --git a/public/terrain/18/429284/176990.terrain b/public/terrain/18/429284/176990.terrain new file mode 100644 index 000000000..e8e78d19b Binary files /dev/null and b/public/terrain/18/429284/176990.terrain differ diff --git a/public/terrain/18/429284/176991.terrain b/public/terrain/18/429284/176991.terrain new file mode 100644 index 000000000..e3bcc8f8d Binary files /dev/null and b/public/terrain/18/429284/176991.terrain differ diff --git a/public/terrain/18/429284/176992.terrain b/public/terrain/18/429284/176992.terrain new file mode 100644 index 000000000..e0888d788 Binary files /dev/null and b/public/terrain/18/429284/176992.terrain differ diff --git a/public/terrain/18/429284/176993.terrain b/public/terrain/18/429284/176993.terrain new file mode 100644 index 000000000..6b6f29607 Binary files /dev/null and b/public/terrain/18/429284/176993.terrain differ diff --git a/public/terrain/18/429284/176994.terrain b/public/terrain/18/429284/176994.terrain new file mode 100644 index 000000000..a2b932858 Binary files /dev/null and b/public/terrain/18/429284/176994.terrain differ diff --git a/public/terrain/18/429284/176995.terrain b/public/terrain/18/429284/176995.terrain new file mode 100644 index 000000000..f954a7980 Binary files /dev/null and b/public/terrain/18/429284/176995.terrain differ diff --git a/public/terrain/18/429284/176996.terrain b/public/terrain/18/429284/176996.terrain new file mode 100644 index 000000000..da0e5b17d Binary files /dev/null and b/public/terrain/18/429284/176996.terrain differ diff --git a/public/terrain/18/429284/176997.terrain b/public/terrain/18/429284/176997.terrain new file mode 100644 index 000000000..ca1ad6d42 Binary files /dev/null and b/public/terrain/18/429284/176997.terrain differ diff --git a/public/terrain/18/429284/176998.terrain b/public/terrain/18/429284/176998.terrain new file mode 100644 index 000000000..7e77e96d6 Binary files /dev/null and b/public/terrain/18/429284/176998.terrain differ diff --git a/public/terrain/18/429284/176999.terrain b/public/terrain/18/429284/176999.terrain new file mode 100644 index 000000000..ad462926f Binary files /dev/null and b/public/terrain/18/429284/176999.terrain differ diff --git a/public/terrain/18/429284/177000.terrain b/public/terrain/18/429284/177000.terrain new file mode 100644 index 000000000..7445dfc7d Binary files /dev/null and b/public/terrain/18/429284/177000.terrain differ diff --git a/public/terrain/18/429284/177001.terrain b/public/terrain/18/429284/177001.terrain new file mode 100644 index 000000000..d640ed438 Binary files /dev/null and b/public/terrain/18/429284/177001.terrain differ diff --git a/public/terrain/18/429284/177002.terrain b/public/terrain/18/429284/177002.terrain new file mode 100644 index 000000000..203913076 Binary files /dev/null and b/public/terrain/18/429284/177002.terrain differ diff --git a/public/terrain/18/429284/177003.terrain b/public/terrain/18/429284/177003.terrain new file mode 100644 index 000000000..b2fecf804 Binary files /dev/null and b/public/terrain/18/429284/177003.terrain differ diff --git a/public/terrain/18/429284/177004.terrain b/public/terrain/18/429284/177004.terrain new file mode 100644 index 000000000..df577e078 Binary files /dev/null and b/public/terrain/18/429284/177004.terrain differ diff --git a/public/terrain/18/429284/177005.terrain b/public/terrain/18/429284/177005.terrain new file mode 100644 index 000000000..9318ac218 Binary files /dev/null and b/public/terrain/18/429284/177005.terrain differ diff --git a/public/terrain/18/429284/177006.terrain b/public/terrain/18/429284/177006.terrain new file mode 100644 index 000000000..cdc586735 Binary files /dev/null and b/public/terrain/18/429284/177006.terrain differ diff --git a/public/terrain/18/429284/177007.terrain b/public/terrain/18/429284/177007.terrain new file mode 100644 index 000000000..de3df0a9a Binary files /dev/null and b/public/terrain/18/429284/177007.terrain differ diff --git a/public/terrain/18/429284/177008.terrain b/public/terrain/18/429284/177008.terrain new file mode 100644 index 000000000..c21a05df2 Binary files /dev/null and b/public/terrain/18/429284/177008.terrain differ diff --git a/public/terrain/18/429284/177009.terrain b/public/terrain/18/429284/177009.terrain new file mode 100644 index 000000000..8674abcf1 Binary files /dev/null and b/public/terrain/18/429284/177009.terrain differ diff --git a/public/terrain/18/429284/177010.terrain b/public/terrain/18/429284/177010.terrain new file mode 100644 index 000000000..f91b3c462 Binary files /dev/null and b/public/terrain/18/429284/177010.terrain differ diff --git a/public/terrain/18/429284/177011.terrain b/public/terrain/18/429284/177011.terrain new file mode 100644 index 000000000..934f8c3ae Binary files /dev/null and b/public/terrain/18/429284/177011.terrain differ diff --git a/public/terrain/18/429284/177012.terrain b/public/terrain/18/429284/177012.terrain new file mode 100644 index 000000000..0240b513d Binary files /dev/null and b/public/terrain/18/429284/177012.terrain differ diff --git a/public/terrain/18/429284/177013.terrain b/public/terrain/18/429284/177013.terrain new file mode 100644 index 000000000..e812e09da Binary files /dev/null and b/public/terrain/18/429284/177013.terrain differ diff --git a/public/terrain/18/429284/177014.terrain b/public/terrain/18/429284/177014.terrain new file mode 100644 index 000000000..331ad8075 Binary files /dev/null and b/public/terrain/18/429284/177014.terrain differ diff --git a/public/terrain/18/429284/177015.terrain b/public/terrain/18/429284/177015.terrain new file mode 100644 index 000000000..ed00d39de Binary files /dev/null and b/public/terrain/18/429284/177015.terrain differ diff --git a/public/terrain/18/429284/177016.terrain b/public/terrain/18/429284/177016.terrain new file mode 100644 index 000000000..e02d8fcec Binary files /dev/null and b/public/terrain/18/429284/177016.terrain differ diff --git a/public/terrain/18/429284/177017.terrain b/public/terrain/18/429284/177017.terrain new file mode 100644 index 000000000..d67801590 Binary files /dev/null and b/public/terrain/18/429284/177017.terrain differ diff --git a/public/terrain/18/429284/177018.terrain b/public/terrain/18/429284/177018.terrain new file mode 100644 index 000000000..e13993dab Binary files /dev/null and b/public/terrain/18/429284/177018.terrain differ diff --git a/public/terrain/18/429284/177019.terrain b/public/terrain/18/429284/177019.terrain new file mode 100644 index 000000000..b2f08b613 Binary files /dev/null and b/public/terrain/18/429284/177019.terrain differ diff --git a/public/terrain/18/429284/177020.terrain b/public/terrain/18/429284/177020.terrain new file mode 100644 index 000000000..2044a4394 Binary files /dev/null and b/public/terrain/18/429284/177020.terrain differ diff --git a/public/terrain/18/429284/177021.terrain b/public/terrain/18/429284/177021.terrain new file mode 100644 index 000000000..abcd85012 Binary files /dev/null and b/public/terrain/18/429284/177021.terrain differ diff --git a/public/terrain/18/429284/177022.terrain b/public/terrain/18/429284/177022.terrain new file mode 100644 index 000000000..2cce83980 Binary files /dev/null and b/public/terrain/18/429284/177022.terrain differ diff --git a/public/terrain/18/429284/177023.terrain b/public/terrain/18/429284/177023.terrain new file mode 100644 index 000000000..ac25f2b5f Binary files /dev/null and b/public/terrain/18/429284/177023.terrain differ diff --git a/public/terrain/18/429284/177024.terrain b/public/terrain/18/429284/177024.terrain new file mode 100644 index 000000000..cc572c44d Binary files /dev/null and b/public/terrain/18/429284/177024.terrain differ diff --git a/public/terrain/18/429284/177025.terrain b/public/terrain/18/429284/177025.terrain new file mode 100644 index 000000000..ec8f1772e Binary files /dev/null and b/public/terrain/18/429284/177025.terrain differ diff --git a/public/terrain/18/429284/177026.terrain b/public/terrain/18/429284/177026.terrain new file mode 100644 index 000000000..8ebf98d88 Binary files /dev/null and b/public/terrain/18/429284/177026.terrain differ diff --git a/public/terrain/18/429284/177027.terrain b/public/terrain/18/429284/177027.terrain new file mode 100644 index 000000000..020de0b80 Binary files /dev/null and b/public/terrain/18/429284/177027.terrain differ diff --git a/public/terrain/18/429284/177028.terrain b/public/terrain/18/429284/177028.terrain new file mode 100644 index 000000000..5e7969de2 Binary files /dev/null and b/public/terrain/18/429284/177028.terrain differ diff --git a/public/terrain/18/429284/177029.terrain b/public/terrain/18/429284/177029.terrain new file mode 100644 index 000000000..6b6c53e35 Binary files /dev/null and b/public/terrain/18/429284/177029.terrain differ diff --git a/public/terrain/18/429285/176871.terrain b/public/terrain/18/429285/176871.terrain new file mode 100644 index 000000000..9bf7dc9b6 Binary files /dev/null and b/public/terrain/18/429285/176871.terrain differ diff --git a/public/terrain/18/429285/176872.terrain b/public/terrain/18/429285/176872.terrain new file mode 100644 index 000000000..a71b79125 Binary files /dev/null and b/public/terrain/18/429285/176872.terrain differ diff --git a/public/terrain/18/429285/176873.terrain b/public/terrain/18/429285/176873.terrain new file mode 100644 index 000000000..461111bc8 Binary files /dev/null and b/public/terrain/18/429285/176873.terrain differ diff --git a/public/terrain/18/429285/176874.terrain b/public/terrain/18/429285/176874.terrain new file mode 100644 index 000000000..6a2ae9b6a Binary files /dev/null and b/public/terrain/18/429285/176874.terrain differ diff --git a/public/terrain/18/429285/176875.terrain b/public/terrain/18/429285/176875.terrain new file mode 100644 index 000000000..bf91c6b31 Binary files /dev/null and b/public/terrain/18/429285/176875.terrain differ diff --git a/public/terrain/18/429285/176876.terrain b/public/terrain/18/429285/176876.terrain new file mode 100644 index 000000000..bf331834b Binary files /dev/null and b/public/terrain/18/429285/176876.terrain differ diff --git a/public/terrain/18/429285/176877.terrain b/public/terrain/18/429285/176877.terrain new file mode 100644 index 000000000..83f4741fa Binary files /dev/null and b/public/terrain/18/429285/176877.terrain differ diff --git a/public/terrain/18/429285/176878.terrain b/public/terrain/18/429285/176878.terrain new file mode 100644 index 000000000..0f2b69e5c Binary files /dev/null and b/public/terrain/18/429285/176878.terrain differ diff --git a/public/terrain/18/429285/176879.terrain b/public/terrain/18/429285/176879.terrain new file mode 100644 index 000000000..db95048aa Binary files /dev/null and b/public/terrain/18/429285/176879.terrain differ diff --git a/public/terrain/18/429285/176880.terrain b/public/terrain/18/429285/176880.terrain new file mode 100644 index 000000000..953e5e9cd Binary files /dev/null and b/public/terrain/18/429285/176880.terrain differ diff --git a/public/terrain/18/429285/176881.terrain b/public/terrain/18/429285/176881.terrain new file mode 100644 index 000000000..4059ecfe4 Binary files /dev/null and b/public/terrain/18/429285/176881.terrain differ diff --git a/public/terrain/18/429285/176882.terrain b/public/terrain/18/429285/176882.terrain new file mode 100644 index 000000000..7a8d33801 Binary files /dev/null and b/public/terrain/18/429285/176882.terrain differ diff --git a/public/terrain/18/429285/176883.terrain b/public/terrain/18/429285/176883.terrain new file mode 100644 index 000000000..841420da2 Binary files /dev/null and b/public/terrain/18/429285/176883.terrain differ diff --git a/public/terrain/18/429285/176884.terrain b/public/terrain/18/429285/176884.terrain new file mode 100644 index 000000000..1a1747f3d Binary files /dev/null and b/public/terrain/18/429285/176884.terrain differ diff --git a/public/terrain/18/429285/176885.terrain b/public/terrain/18/429285/176885.terrain new file mode 100644 index 000000000..889bd6af5 Binary files /dev/null and b/public/terrain/18/429285/176885.terrain differ diff --git a/public/terrain/18/429285/176886.terrain b/public/terrain/18/429285/176886.terrain new file mode 100644 index 000000000..0864076df Binary files /dev/null and b/public/terrain/18/429285/176886.terrain differ diff --git a/public/terrain/18/429285/176887.terrain b/public/terrain/18/429285/176887.terrain new file mode 100644 index 000000000..ba2cfb6bb Binary files /dev/null and b/public/terrain/18/429285/176887.terrain differ diff --git a/public/terrain/18/429285/176888.terrain b/public/terrain/18/429285/176888.terrain new file mode 100644 index 000000000..f3baed9b0 Binary files /dev/null and b/public/terrain/18/429285/176888.terrain differ diff --git a/public/terrain/18/429285/176889.terrain b/public/terrain/18/429285/176889.terrain new file mode 100644 index 000000000..027c4155b Binary files /dev/null and b/public/terrain/18/429285/176889.terrain differ diff --git a/public/terrain/18/429285/176890.terrain b/public/terrain/18/429285/176890.terrain new file mode 100644 index 000000000..0514c3e4b Binary files /dev/null and b/public/terrain/18/429285/176890.terrain differ diff --git a/public/terrain/18/429285/176891.terrain b/public/terrain/18/429285/176891.terrain new file mode 100644 index 000000000..6830f0970 Binary files /dev/null and b/public/terrain/18/429285/176891.terrain differ diff --git a/public/terrain/18/429285/176892.terrain b/public/terrain/18/429285/176892.terrain new file mode 100644 index 000000000..541aa34f7 Binary files /dev/null and b/public/terrain/18/429285/176892.terrain differ diff --git a/public/terrain/18/429285/176893.terrain b/public/terrain/18/429285/176893.terrain new file mode 100644 index 000000000..78294cb40 Binary files /dev/null and b/public/terrain/18/429285/176893.terrain differ diff --git a/public/terrain/18/429285/176894.terrain b/public/terrain/18/429285/176894.terrain new file mode 100644 index 000000000..681fee920 Binary files /dev/null and b/public/terrain/18/429285/176894.terrain differ diff --git a/public/terrain/18/429285/176895.terrain b/public/terrain/18/429285/176895.terrain new file mode 100644 index 000000000..840d623c9 Binary files /dev/null and b/public/terrain/18/429285/176895.terrain differ diff --git a/public/terrain/18/429285/176896.terrain b/public/terrain/18/429285/176896.terrain new file mode 100644 index 000000000..16c9b8aa6 Binary files /dev/null and b/public/terrain/18/429285/176896.terrain differ diff --git a/public/terrain/18/429285/176897.terrain b/public/terrain/18/429285/176897.terrain new file mode 100644 index 000000000..10066d3c2 Binary files /dev/null and b/public/terrain/18/429285/176897.terrain differ diff --git a/public/terrain/18/429285/176898.terrain b/public/terrain/18/429285/176898.terrain new file mode 100644 index 000000000..bc437ab77 Binary files /dev/null and b/public/terrain/18/429285/176898.terrain differ diff --git a/public/terrain/18/429285/176899.terrain b/public/terrain/18/429285/176899.terrain new file mode 100644 index 000000000..4278b7073 Binary files /dev/null and b/public/terrain/18/429285/176899.terrain differ diff --git a/public/terrain/18/429285/176900.terrain b/public/terrain/18/429285/176900.terrain new file mode 100644 index 000000000..7c856005b Binary files /dev/null and b/public/terrain/18/429285/176900.terrain differ diff --git a/public/terrain/18/429285/176901.terrain b/public/terrain/18/429285/176901.terrain new file mode 100644 index 000000000..60d2334ec Binary files /dev/null and b/public/terrain/18/429285/176901.terrain differ diff --git a/public/terrain/18/429285/176902.terrain b/public/terrain/18/429285/176902.terrain new file mode 100644 index 000000000..2bcb1e4a6 Binary files /dev/null and b/public/terrain/18/429285/176902.terrain differ diff --git a/public/terrain/18/429285/176903.terrain b/public/terrain/18/429285/176903.terrain new file mode 100644 index 000000000..6c59cefe2 Binary files /dev/null and b/public/terrain/18/429285/176903.terrain differ diff --git a/public/terrain/18/429285/176904.terrain b/public/terrain/18/429285/176904.terrain new file mode 100644 index 000000000..d51aafe6e Binary files /dev/null and b/public/terrain/18/429285/176904.terrain differ diff --git a/public/terrain/18/429285/176905.terrain b/public/terrain/18/429285/176905.terrain new file mode 100644 index 000000000..3a73f9a7a Binary files /dev/null and b/public/terrain/18/429285/176905.terrain differ diff --git a/public/terrain/18/429285/176906.terrain b/public/terrain/18/429285/176906.terrain new file mode 100644 index 000000000..929deb017 Binary files /dev/null and b/public/terrain/18/429285/176906.terrain differ diff --git a/public/terrain/18/429285/176907.terrain b/public/terrain/18/429285/176907.terrain new file mode 100644 index 000000000..bb71513f2 Binary files /dev/null and b/public/terrain/18/429285/176907.terrain differ diff --git a/public/terrain/18/429285/176908.terrain b/public/terrain/18/429285/176908.terrain new file mode 100644 index 000000000..be6c952c0 Binary files /dev/null and b/public/terrain/18/429285/176908.terrain differ diff --git a/public/terrain/18/429285/176909.terrain b/public/terrain/18/429285/176909.terrain new file mode 100644 index 000000000..0197f2efa Binary files /dev/null and b/public/terrain/18/429285/176909.terrain differ diff --git a/public/terrain/18/429285/176910.terrain b/public/terrain/18/429285/176910.terrain new file mode 100644 index 000000000..0c2342e90 Binary files /dev/null and b/public/terrain/18/429285/176910.terrain differ diff --git a/public/terrain/18/429285/176911.terrain b/public/terrain/18/429285/176911.terrain new file mode 100644 index 000000000..e8e297e08 Binary files /dev/null and b/public/terrain/18/429285/176911.terrain differ diff --git a/public/terrain/18/429285/176912.terrain b/public/terrain/18/429285/176912.terrain new file mode 100644 index 000000000..6b7d2e8bf Binary files /dev/null and b/public/terrain/18/429285/176912.terrain differ diff --git a/public/terrain/18/429285/176913.terrain b/public/terrain/18/429285/176913.terrain new file mode 100644 index 000000000..c55f7a104 Binary files /dev/null and b/public/terrain/18/429285/176913.terrain differ diff --git a/public/terrain/18/429285/176914.terrain b/public/terrain/18/429285/176914.terrain new file mode 100644 index 000000000..bc7cc5b87 Binary files /dev/null and b/public/terrain/18/429285/176914.terrain differ diff --git a/public/terrain/18/429285/176915.terrain b/public/terrain/18/429285/176915.terrain new file mode 100644 index 000000000..f9dcc5a6d Binary files /dev/null and b/public/terrain/18/429285/176915.terrain differ diff --git a/public/terrain/18/429285/176916.terrain b/public/terrain/18/429285/176916.terrain new file mode 100644 index 000000000..2e948324c Binary files /dev/null and b/public/terrain/18/429285/176916.terrain differ diff --git a/public/terrain/18/429285/176917.terrain b/public/terrain/18/429285/176917.terrain new file mode 100644 index 000000000..0b6ab90cb Binary files /dev/null and b/public/terrain/18/429285/176917.terrain differ diff --git a/public/terrain/18/429285/176918.terrain b/public/terrain/18/429285/176918.terrain new file mode 100644 index 000000000..f9aaf1a2c Binary files /dev/null and b/public/terrain/18/429285/176918.terrain differ diff --git a/public/terrain/18/429285/176919.terrain b/public/terrain/18/429285/176919.terrain new file mode 100644 index 000000000..a1b249c70 Binary files /dev/null and b/public/terrain/18/429285/176919.terrain differ diff --git a/public/terrain/18/429285/176920.terrain b/public/terrain/18/429285/176920.terrain new file mode 100644 index 000000000..dc997498e Binary files /dev/null and b/public/terrain/18/429285/176920.terrain differ diff --git a/public/terrain/18/429285/176921.terrain b/public/terrain/18/429285/176921.terrain new file mode 100644 index 000000000..5b818a728 Binary files /dev/null and b/public/terrain/18/429285/176921.terrain differ diff --git a/public/terrain/18/429285/176922.terrain b/public/terrain/18/429285/176922.terrain new file mode 100644 index 000000000..d3c1b683e Binary files /dev/null and b/public/terrain/18/429285/176922.terrain differ diff --git a/public/terrain/18/429285/176923.terrain b/public/terrain/18/429285/176923.terrain new file mode 100644 index 000000000..0b5dc75e5 Binary files /dev/null and b/public/terrain/18/429285/176923.terrain differ diff --git a/public/terrain/18/429285/176924.terrain b/public/terrain/18/429285/176924.terrain new file mode 100644 index 000000000..0b6ad4070 Binary files /dev/null and b/public/terrain/18/429285/176924.terrain differ diff --git a/public/terrain/18/429285/176925.terrain b/public/terrain/18/429285/176925.terrain new file mode 100644 index 000000000..b1e358c4d Binary files /dev/null and b/public/terrain/18/429285/176925.terrain differ diff --git a/public/terrain/18/429285/176926.terrain b/public/terrain/18/429285/176926.terrain new file mode 100644 index 000000000..753e3c015 Binary files /dev/null and b/public/terrain/18/429285/176926.terrain differ diff --git a/public/terrain/18/429285/176927.terrain b/public/terrain/18/429285/176927.terrain new file mode 100644 index 000000000..52847babd Binary files /dev/null and b/public/terrain/18/429285/176927.terrain differ diff --git a/public/terrain/18/429285/176928.terrain b/public/terrain/18/429285/176928.terrain new file mode 100644 index 000000000..8f347255e Binary files /dev/null and b/public/terrain/18/429285/176928.terrain differ diff --git a/public/terrain/18/429285/176929.terrain b/public/terrain/18/429285/176929.terrain new file mode 100644 index 000000000..3bb2bda9b Binary files /dev/null and b/public/terrain/18/429285/176929.terrain differ diff --git a/public/terrain/18/429285/176930.terrain b/public/terrain/18/429285/176930.terrain new file mode 100644 index 000000000..ffcb6665b Binary files /dev/null and b/public/terrain/18/429285/176930.terrain differ diff --git a/public/terrain/18/429285/176931.terrain b/public/terrain/18/429285/176931.terrain new file mode 100644 index 000000000..e7bffa6cd Binary files /dev/null and b/public/terrain/18/429285/176931.terrain differ diff --git a/public/terrain/18/429285/176932.terrain b/public/terrain/18/429285/176932.terrain new file mode 100644 index 000000000..1ec6d2e1b Binary files /dev/null and b/public/terrain/18/429285/176932.terrain differ diff --git a/public/terrain/18/429285/176933.terrain b/public/terrain/18/429285/176933.terrain new file mode 100644 index 000000000..241a1caf8 Binary files /dev/null and b/public/terrain/18/429285/176933.terrain differ diff --git a/public/terrain/18/429285/176934.terrain b/public/terrain/18/429285/176934.terrain new file mode 100644 index 000000000..771eadc40 Binary files /dev/null and b/public/terrain/18/429285/176934.terrain differ diff --git a/public/terrain/18/429285/176935.terrain b/public/terrain/18/429285/176935.terrain new file mode 100644 index 000000000..6b0ce822f Binary files /dev/null and b/public/terrain/18/429285/176935.terrain differ diff --git a/public/terrain/18/429285/176936.terrain b/public/terrain/18/429285/176936.terrain new file mode 100644 index 000000000..d53c024e8 Binary files /dev/null and b/public/terrain/18/429285/176936.terrain differ diff --git a/public/terrain/18/429285/176937.terrain b/public/terrain/18/429285/176937.terrain new file mode 100644 index 000000000..49c26429f Binary files /dev/null and b/public/terrain/18/429285/176937.terrain differ diff --git a/public/terrain/18/429285/176938.terrain b/public/terrain/18/429285/176938.terrain new file mode 100644 index 000000000..c6a7d997f Binary files /dev/null and b/public/terrain/18/429285/176938.terrain differ diff --git a/public/terrain/18/429285/176939.terrain b/public/terrain/18/429285/176939.terrain new file mode 100644 index 000000000..93385cc20 Binary files /dev/null and b/public/terrain/18/429285/176939.terrain differ diff --git a/public/terrain/18/429285/176940.terrain b/public/terrain/18/429285/176940.terrain new file mode 100644 index 000000000..520cb6209 Binary files /dev/null and b/public/terrain/18/429285/176940.terrain differ diff --git a/public/terrain/18/429285/176941.terrain b/public/terrain/18/429285/176941.terrain new file mode 100644 index 000000000..03d44fc75 Binary files /dev/null and b/public/terrain/18/429285/176941.terrain differ diff --git a/public/terrain/18/429285/176942.terrain b/public/terrain/18/429285/176942.terrain new file mode 100644 index 000000000..37ca1fe8c Binary files /dev/null and b/public/terrain/18/429285/176942.terrain differ diff --git a/public/terrain/18/429285/176943.terrain b/public/terrain/18/429285/176943.terrain new file mode 100644 index 000000000..95de3f66e Binary files /dev/null and b/public/terrain/18/429285/176943.terrain differ diff --git a/public/terrain/18/429285/176944.terrain b/public/terrain/18/429285/176944.terrain new file mode 100644 index 000000000..648fde149 Binary files /dev/null and b/public/terrain/18/429285/176944.terrain differ diff --git a/public/terrain/18/429285/176945.terrain b/public/terrain/18/429285/176945.terrain new file mode 100644 index 000000000..0d53212c4 Binary files /dev/null and b/public/terrain/18/429285/176945.terrain differ diff --git a/public/terrain/18/429285/176946.terrain b/public/terrain/18/429285/176946.terrain new file mode 100644 index 000000000..e3aff15a9 Binary files /dev/null and b/public/terrain/18/429285/176946.terrain differ diff --git a/public/terrain/18/429285/176947.terrain b/public/terrain/18/429285/176947.terrain new file mode 100644 index 000000000..a0f086244 Binary files /dev/null and b/public/terrain/18/429285/176947.terrain differ diff --git a/public/terrain/18/429285/176948.terrain b/public/terrain/18/429285/176948.terrain new file mode 100644 index 000000000..dac2ad25d Binary files /dev/null and b/public/terrain/18/429285/176948.terrain differ diff --git a/public/terrain/18/429285/176949.terrain b/public/terrain/18/429285/176949.terrain new file mode 100644 index 000000000..3ed20c789 Binary files /dev/null and b/public/terrain/18/429285/176949.terrain differ diff --git a/public/terrain/18/429285/176950.terrain b/public/terrain/18/429285/176950.terrain new file mode 100644 index 000000000..00eea0ed8 Binary files /dev/null and b/public/terrain/18/429285/176950.terrain differ diff --git a/public/terrain/18/429285/176951.terrain b/public/terrain/18/429285/176951.terrain new file mode 100644 index 000000000..9b4720160 Binary files /dev/null and b/public/terrain/18/429285/176951.terrain differ diff --git a/public/terrain/18/429285/176952.terrain b/public/terrain/18/429285/176952.terrain new file mode 100644 index 000000000..e6c98bfb2 Binary files /dev/null and b/public/terrain/18/429285/176952.terrain differ diff --git a/public/terrain/18/429285/176953.terrain b/public/terrain/18/429285/176953.terrain new file mode 100644 index 000000000..7ede85dd0 Binary files /dev/null and b/public/terrain/18/429285/176953.terrain differ diff --git a/public/terrain/18/429285/176954.terrain b/public/terrain/18/429285/176954.terrain new file mode 100644 index 000000000..b3615a0a8 Binary files /dev/null and b/public/terrain/18/429285/176954.terrain differ diff --git a/public/terrain/18/429285/176955.terrain b/public/terrain/18/429285/176955.terrain new file mode 100644 index 000000000..087479c3c Binary files /dev/null and b/public/terrain/18/429285/176955.terrain differ diff --git a/public/terrain/18/429285/176956.terrain b/public/terrain/18/429285/176956.terrain new file mode 100644 index 000000000..6f472c52f Binary files /dev/null and b/public/terrain/18/429285/176956.terrain differ diff --git a/public/terrain/18/429285/176957.terrain b/public/terrain/18/429285/176957.terrain new file mode 100644 index 000000000..68020a879 Binary files /dev/null and b/public/terrain/18/429285/176957.terrain differ diff --git a/public/terrain/18/429285/176958.terrain b/public/terrain/18/429285/176958.terrain new file mode 100644 index 000000000..7be37149f Binary files /dev/null and b/public/terrain/18/429285/176958.terrain differ diff --git a/public/terrain/18/429285/176959.terrain b/public/terrain/18/429285/176959.terrain new file mode 100644 index 000000000..670dbe13d Binary files /dev/null and b/public/terrain/18/429285/176959.terrain differ diff --git a/public/terrain/18/429285/176960.terrain b/public/terrain/18/429285/176960.terrain new file mode 100644 index 000000000..44f78bf10 Binary files /dev/null and b/public/terrain/18/429285/176960.terrain differ diff --git a/public/terrain/18/429285/176961.terrain b/public/terrain/18/429285/176961.terrain new file mode 100644 index 000000000..34c6fb512 Binary files /dev/null and b/public/terrain/18/429285/176961.terrain differ diff --git a/public/terrain/18/429285/176962.terrain b/public/terrain/18/429285/176962.terrain new file mode 100644 index 000000000..f1f8a1bbe Binary files /dev/null and b/public/terrain/18/429285/176962.terrain differ diff --git a/public/terrain/18/429285/176963.terrain b/public/terrain/18/429285/176963.terrain new file mode 100644 index 000000000..a29a2edbf Binary files /dev/null and b/public/terrain/18/429285/176963.terrain differ diff --git a/public/terrain/18/429285/176964.terrain b/public/terrain/18/429285/176964.terrain new file mode 100644 index 000000000..35a2a714b Binary files /dev/null and b/public/terrain/18/429285/176964.terrain differ diff --git a/public/terrain/18/429285/176965.terrain b/public/terrain/18/429285/176965.terrain new file mode 100644 index 000000000..e1aae1c33 Binary files /dev/null and b/public/terrain/18/429285/176965.terrain differ diff --git a/public/terrain/18/429285/176966.terrain b/public/terrain/18/429285/176966.terrain new file mode 100644 index 000000000..794605d27 Binary files /dev/null and b/public/terrain/18/429285/176966.terrain differ diff --git a/public/terrain/18/429285/176967.terrain b/public/terrain/18/429285/176967.terrain new file mode 100644 index 000000000..603f0928f Binary files /dev/null and b/public/terrain/18/429285/176967.terrain differ diff --git a/public/terrain/18/429285/176968.terrain b/public/terrain/18/429285/176968.terrain new file mode 100644 index 000000000..b552ca153 Binary files /dev/null and b/public/terrain/18/429285/176968.terrain differ diff --git a/public/terrain/18/429285/176969.terrain b/public/terrain/18/429285/176969.terrain new file mode 100644 index 000000000..c623d7ca1 Binary files /dev/null and b/public/terrain/18/429285/176969.terrain differ diff --git a/public/terrain/18/429285/176970.terrain b/public/terrain/18/429285/176970.terrain new file mode 100644 index 000000000..9422a5de6 Binary files /dev/null and b/public/terrain/18/429285/176970.terrain differ diff --git a/public/terrain/18/429285/176971.terrain b/public/terrain/18/429285/176971.terrain new file mode 100644 index 000000000..f40ba65e8 Binary files /dev/null and b/public/terrain/18/429285/176971.terrain differ diff --git a/public/terrain/18/429285/176972.terrain b/public/terrain/18/429285/176972.terrain new file mode 100644 index 000000000..74634cb6d Binary files /dev/null and b/public/terrain/18/429285/176972.terrain differ diff --git a/public/terrain/18/429285/176973.terrain b/public/terrain/18/429285/176973.terrain new file mode 100644 index 000000000..831021fef Binary files /dev/null and b/public/terrain/18/429285/176973.terrain differ diff --git a/public/terrain/18/429285/176974.terrain b/public/terrain/18/429285/176974.terrain new file mode 100644 index 000000000..2f21643a4 Binary files /dev/null and b/public/terrain/18/429285/176974.terrain differ diff --git a/public/terrain/18/429285/176975.terrain b/public/terrain/18/429285/176975.terrain new file mode 100644 index 000000000..f5236b61c Binary files /dev/null and b/public/terrain/18/429285/176975.terrain differ diff --git a/public/terrain/18/429285/176976.terrain b/public/terrain/18/429285/176976.terrain new file mode 100644 index 000000000..87dadfa23 Binary files /dev/null and b/public/terrain/18/429285/176976.terrain differ diff --git a/public/terrain/18/429285/176977.terrain b/public/terrain/18/429285/176977.terrain new file mode 100644 index 000000000..cccd630d3 Binary files /dev/null and b/public/terrain/18/429285/176977.terrain differ diff --git a/public/terrain/18/429285/176978.terrain b/public/terrain/18/429285/176978.terrain new file mode 100644 index 000000000..9daf45fc6 Binary files /dev/null and b/public/terrain/18/429285/176978.terrain differ diff --git a/public/terrain/18/429285/176979.terrain b/public/terrain/18/429285/176979.terrain new file mode 100644 index 000000000..d251264ad Binary files /dev/null and b/public/terrain/18/429285/176979.terrain differ diff --git a/public/terrain/18/429285/176980.terrain b/public/terrain/18/429285/176980.terrain new file mode 100644 index 000000000..b25bfa3ab Binary files /dev/null and b/public/terrain/18/429285/176980.terrain differ diff --git a/public/terrain/18/429285/176981.terrain b/public/terrain/18/429285/176981.terrain new file mode 100644 index 000000000..20e3b2dbd Binary files /dev/null and b/public/terrain/18/429285/176981.terrain differ diff --git a/public/terrain/18/429285/176982.terrain b/public/terrain/18/429285/176982.terrain new file mode 100644 index 000000000..770e8ac2b Binary files /dev/null and b/public/terrain/18/429285/176982.terrain differ diff --git a/public/terrain/18/429285/176983.terrain b/public/terrain/18/429285/176983.terrain new file mode 100644 index 000000000..df39adcce Binary files /dev/null and b/public/terrain/18/429285/176983.terrain differ diff --git a/public/terrain/18/429285/176984.terrain b/public/terrain/18/429285/176984.terrain new file mode 100644 index 000000000..da4f01bad Binary files /dev/null and b/public/terrain/18/429285/176984.terrain differ diff --git a/public/terrain/18/429285/176985.terrain b/public/terrain/18/429285/176985.terrain new file mode 100644 index 000000000..425b855e7 Binary files /dev/null and b/public/terrain/18/429285/176985.terrain differ diff --git a/public/terrain/18/429285/176986.terrain b/public/terrain/18/429285/176986.terrain new file mode 100644 index 000000000..40698a5e8 Binary files /dev/null and b/public/terrain/18/429285/176986.terrain differ diff --git a/public/terrain/18/429285/176987.terrain b/public/terrain/18/429285/176987.terrain new file mode 100644 index 000000000..58fd9e0fe Binary files /dev/null and b/public/terrain/18/429285/176987.terrain differ diff --git a/public/terrain/18/429285/176988.terrain b/public/terrain/18/429285/176988.terrain new file mode 100644 index 000000000..09d7f624d Binary files /dev/null and b/public/terrain/18/429285/176988.terrain differ diff --git a/public/terrain/18/429285/176989.terrain b/public/terrain/18/429285/176989.terrain new file mode 100644 index 000000000..55a488d0e Binary files /dev/null and b/public/terrain/18/429285/176989.terrain differ diff --git a/public/terrain/18/429285/176990.terrain b/public/terrain/18/429285/176990.terrain new file mode 100644 index 000000000..f82b3f86b Binary files /dev/null and b/public/terrain/18/429285/176990.terrain differ diff --git a/public/terrain/18/429285/176991.terrain b/public/terrain/18/429285/176991.terrain new file mode 100644 index 000000000..d3802155e Binary files /dev/null and b/public/terrain/18/429285/176991.terrain differ diff --git a/public/terrain/18/429285/176992.terrain b/public/terrain/18/429285/176992.terrain new file mode 100644 index 000000000..41893c2d9 Binary files /dev/null and b/public/terrain/18/429285/176992.terrain differ diff --git a/public/terrain/18/429285/176993.terrain b/public/terrain/18/429285/176993.terrain new file mode 100644 index 000000000..a8862e43d Binary files /dev/null and b/public/terrain/18/429285/176993.terrain differ diff --git a/public/terrain/18/429285/176994.terrain b/public/terrain/18/429285/176994.terrain new file mode 100644 index 000000000..02c1acdc6 Binary files /dev/null and b/public/terrain/18/429285/176994.terrain differ diff --git a/public/terrain/18/429285/176995.terrain b/public/terrain/18/429285/176995.terrain new file mode 100644 index 000000000..71c70b45e Binary files /dev/null and b/public/terrain/18/429285/176995.terrain differ diff --git a/public/terrain/18/429285/176996.terrain b/public/terrain/18/429285/176996.terrain new file mode 100644 index 000000000..5d9e88b32 Binary files /dev/null and b/public/terrain/18/429285/176996.terrain differ diff --git a/public/terrain/18/429285/176997.terrain b/public/terrain/18/429285/176997.terrain new file mode 100644 index 000000000..40c8c1926 Binary files /dev/null and b/public/terrain/18/429285/176997.terrain differ diff --git a/public/terrain/18/429285/176998.terrain b/public/terrain/18/429285/176998.terrain new file mode 100644 index 000000000..32d2912d9 Binary files /dev/null and b/public/terrain/18/429285/176998.terrain differ diff --git a/public/terrain/18/429285/176999.terrain b/public/terrain/18/429285/176999.terrain new file mode 100644 index 000000000..89d1322f0 Binary files /dev/null and b/public/terrain/18/429285/176999.terrain differ diff --git a/public/terrain/18/429285/177000.terrain b/public/terrain/18/429285/177000.terrain new file mode 100644 index 000000000..fbab9a8e8 Binary files /dev/null and b/public/terrain/18/429285/177000.terrain differ diff --git a/public/terrain/18/429285/177001.terrain b/public/terrain/18/429285/177001.terrain new file mode 100644 index 000000000..6437b7f9e Binary files /dev/null and b/public/terrain/18/429285/177001.terrain differ diff --git a/public/terrain/18/429285/177002.terrain b/public/terrain/18/429285/177002.terrain new file mode 100644 index 000000000..48f5318d6 Binary files /dev/null and b/public/terrain/18/429285/177002.terrain differ diff --git a/public/terrain/18/429285/177003.terrain b/public/terrain/18/429285/177003.terrain new file mode 100644 index 000000000..25f3b6df4 Binary files /dev/null and b/public/terrain/18/429285/177003.terrain differ diff --git a/public/terrain/18/429285/177004.terrain b/public/terrain/18/429285/177004.terrain new file mode 100644 index 000000000..7902ecbef Binary files /dev/null and b/public/terrain/18/429285/177004.terrain differ diff --git a/public/terrain/18/429285/177005.terrain b/public/terrain/18/429285/177005.terrain new file mode 100644 index 000000000..dca7f961c Binary files /dev/null and b/public/terrain/18/429285/177005.terrain differ diff --git a/public/terrain/18/429285/177006.terrain b/public/terrain/18/429285/177006.terrain new file mode 100644 index 000000000..ceb52130a Binary files /dev/null and b/public/terrain/18/429285/177006.terrain differ diff --git a/public/terrain/18/429285/177007.terrain b/public/terrain/18/429285/177007.terrain new file mode 100644 index 000000000..b1d889e4d Binary files /dev/null and b/public/terrain/18/429285/177007.terrain differ diff --git a/public/terrain/18/429285/177008.terrain b/public/terrain/18/429285/177008.terrain new file mode 100644 index 000000000..8fe3e76e9 Binary files /dev/null and b/public/terrain/18/429285/177008.terrain differ diff --git a/public/terrain/18/429285/177009.terrain b/public/terrain/18/429285/177009.terrain new file mode 100644 index 000000000..d2c56fcf2 Binary files /dev/null and b/public/terrain/18/429285/177009.terrain differ diff --git a/public/terrain/18/429285/177010.terrain b/public/terrain/18/429285/177010.terrain new file mode 100644 index 000000000..dde2d07a9 Binary files /dev/null and b/public/terrain/18/429285/177010.terrain differ diff --git a/public/terrain/18/429285/177011.terrain b/public/terrain/18/429285/177011.terrain new file mode 100644 index 000000000..552c779e1 Binary files /dev/null and b/public/terrain/18/429285/177011.terrain differ diff --git a/public/terrain/18/429285/177012.terrain b/public/terrain/18/429285/177012.terrain new file mode 100644 index 000000000..4d78e72ce Binary files /dev/null and b/public/terrain/18/429285/177012.terrain differ diff --git a/public/terrain/18/429285/177013.terrain b/public/terrain/18/429285/177013.terrain new file mode 100644 index 000000000..8259476b3 Binary files /dev/null and b/public/terrain/18/429285/177013.terrain differ diff --git a/public/terrain/18/429285/177014.terrain b/public/terrain/18/429285/177014.terrain new file mode 100644 index 000000000..97be80309 Binary files /dev/null and b/public/terrain/18/429285/177014.terrain differ diff --git a/public/terrain/18/429285/177015.terrain b/public/terrain/18/429285/177015.terrain new file mode 100644 index 000000000..c4d2b9892 Binary files /dev/null and b/public/terrain/18/429285/177015.terrain differ diff --git a/public/terrain/18/429285/177016.terrain b/public/terrain/18/429285/177016.terrain new file mode 100644 index 000000000..26e0f3761 Binary files /dev/null and b/public/terrain/18/429285/177016.terrain differ diff --git a/public/terrain/18/429285/177017.terrain b/public/terrain/18/429285/177017.terrain new file mode 100644 index 000000000..57e61796f Binary files /dev/null and b/public/terrain/18/429285/177017.terrain differ diff --git a/public/terrain/18/429285/177018.terrain b/public/terrain/18/429285/177018.terrain new file mode 100644 index 000000000..9e32677dc Binary files /dev/null and b/public/terrain/18/429285/177018.terrain differ diff --git a/public/terrain/18/429285/177019.terrain b/public/terrain/18/429285/177019.terrain new file mode 100644 index 000000000..12f4217dc Binary files /dev/null and b/public/terrain/18/429285/177019.terrain differ diff --git a/public/terrain/18/429285/177020.terrain b/public/terrain/18/429285/177020.terrain new file mode 100644 index 000000000..7964fd273 Binary files /dev/null and b/public/terrain/18/429285/177020.terrain differ diff --git a/public/terrain/18/429285/177021.terrain b/public/terrain/18/429285/177021.terrain new file mode 100644 index 000000000..5958c79eb Binary files /dev/null and b/public/terrain/18/429285/177021.terrain differ diff --git a/public/terrain/18/429285/177022.terrain b/public/terrain/18/429285/177022.terrain new file mode 100644 index 000000000..56d37a83c Binary files /dev/null and b/public/terrain/18/429285/177022.terrain differ diff --git a/public/terrain/18/429285/177023.terrain b/public/terrain/18/429285/177023.terrain new file mode 100644 index 000000000..bc6774bab Binary files /dev/null and b/public/terrain/18/429285/177023.terrain differ diff --git a/public/terrain/18/429285/177024.terrain b/public/terrain/18/429285/177024.terrain new file mode 100644 index 000000000..ec5fc4681 Binary files /dev/null and b/public/terrain/18/429285/177024.terrain differ diff --git a/public/terrain/18/429285/177025.terrain b/public/terrain/18/429285/177025.terrain new file mode 100644 index 000000000..b139d046a Binary files /dev/null and b/public/terrain/18/429285/177025.terrain differ diff --git a/public/terrain/18/429285/177026.terrain b/public/terrain/18/429285/177026.terrain new file mode 100644 index 000000000..ffee5975e Binary files /dev/null and b/public/terrain/18/429285/177026.terrain differ diff --git a/public/terrain/18/429285/177027.terrain b/public/terrain/18/429285/177027.terrain new file mode 100644 index 000000000..dc9e8a6c3 Binary files /dev/null and b/public/terrain/18/429285/177027.terrain differ diff --git a/public/terrain/18/429285/177028.terrain b/public/terrain/18/429285/177028.terrain new file mode 100644 index 000000000..a6012dc7d Binary files /dev/null and b/public/terrain/18/429285/177028.terrain differ diff --git a/public/terrain/18/429285/177029.terrain b/public/terrain/18/429285/177029.terrain new file mode 100644 index 000000000..4f64b9cd8 Binary files /dev/null and b/public/terrain/18/429285/177029.terrain differ diff --git a/public/terrain/18/429286/176871.terrain b/public/terrain/18/429286/176871.terrain new file mode 100644 index 000000000..092cc6a41 Binary files /dev/null and b/public/terrain/18/429286/176871.terrain differ diff --git a/public/terrain/18/429286/176872.terrain b/public/terrain/18/429286/176872.terrain new file mode 100644 index 000000000..e17817d18 Binary files /dev/null and b/public/terrain/18/429286/176872.terrain differ diff --git a/public/terrain/18/429286/176873.terrain b/public/terrain/18/429286/176873.terrain new file mode 100644 index 000000000..9fb8ec72d Binary files /dev/null and b/public/terrain/18/429286/176873.terrain differ diff --git a/public/terrain/18/429286/176874.terrain b/public/terrain/18/429286/176874.terrain new file mode 100644 index 000000000..b255d20b6 Binary files /dev/null and b/public/terrain/18/429286/176874.terrain differ diff --git a/public/terrain/18/429286/176875.terrain b/public/terrain/18/429286/176875.terrain new file mode 100644 index 000000000..c1663009f Binary files /dev/null and b/public/terrain/18/429286/176875.terrain differ diff --git a/public/terrain/18/429286/176876.terrain b/public/terrain/18/429286/176876.terrain new file mode 100644 index 000000000..a5e9772e0 Binary files /dev/null and b/public/terrain/18/429286/176876.terrain differ diff --git a/public/terrain/18/429286/176877.terrain b/public/terrain/18/429286/176877.terrain new file mode 100644 index 000000000..e42cf0347 Binary files /dev/null and b/public/terrain/18/429286/176877.terrain differ diff --git a/public/terrain/18/429286/176878.terrain b/public/terrain/18/429286/176878.terrain new file mode 100644 index 000000000..2c7e35b2d Binary files /dev/null and b/public/terrain/18/429286/176878.terrain differ diff --git a/public/terrain/18/429286/176879.terrain b/public/terrain/18/429286/176879.terrain new file mode 100644 index 000000000..f998f397e Binary files /dev/null and b/public/terrain/18/429286/176879.terrain differ diff --git a/public/terrain/18/429286/176880.terrain b/public/terrain/18/429286/176880.terrain new file mode 100644 index 000000000..9792cf4eb Binary files /dev/null and b/public/terrain/18/429286/176880.terrain differ diff --git a/public/terrain/18/429286/176881.terrain b/public/terrain/18/429286/176881.terrain new file mode 100644 index 000000000..19299b8cd Binary files /dev/null and b/public/terrain/18/429286/176881.terrain differ diff --git a/public/terrain/18/429286/176882.terrain b/public/terrain/18/429286/176882.terrain new file mode 100644 index 000000000..bfa7dbdfc Binary files /dev/null and b/public/terrain/18/429286/176882.terrain differ diff --git a/public/terrain/18/429286/176883.terrain b/public/terrain/18/429286/176883.terrain new file mode 100644 index 000000000..5929aecce Binary files /dev/null and b/public/terrain/18/429286/176883.terrain differ diff --git a/public/terrain/18/429286/176884.terrain b/public/terrain/18/429286/176884.terrain new file mode 100644 index 000000000..e3e75dd1e Binary files /dev/null and b/public/terrain/18/429286/176884.terrain differ diff --git a/public/terrain/18/429286/176885.terrain b/public/terrain/18/429286/176885.terrain new file mode 100644 index 000000000..e9a7868a9 Binary files /dev/null and b/public/terrain/18/429286/176885.terrain differ diff --git a/public/terrain/18/429286/176886.terrain b/public/terrain/18/429286/176886.terrain new file mode 100644 index 000000000..e0eff11c8 Binary files /dev/null and b/public/terrain/18/429286/176886.terrain differ diff --git a/public/terrain/18/429286/176887.terrain b/public/terrain/18/429286/176887.terrain new file mode 100644 index 000000000..9fa42b0cf Binary files /dev/null and b/public/terrain/18/429286/176887.terrain differ diff --git a/public/terrain/18/429286/176888.terrain b/public/terrain/18/429286/176888.terrain new file mode 100644 index 000000000..01c655e32 Binary files /dev/null and b/public/terrain/18/429286/176888.terrain differ diff --git a/public/terrain/18/429286/176889.terrain b/public/terrain/18/429286/176889.terrain new file mode 100644 index 000000000..db06cebcb Binary files /dev/null and b/public/terrain/18/429286/176889.terrain differ diff --git a/public/terrain/18/429286/176890.terrain b/public/terrain/18/429286/176890.terrain new file mode 100644 index 000000000..ea219e6db Binary files /dev/null and b/public/terrain/18/429286/176890.terrain differ diff --git a/public/terrain/18/429286/176891.terrain b/public/terrain/18/429286/176891.terrain new file mode 100644 index 000000000..a2dcf707f Binary files /dev/null and b/public/terrain/18/429286/176891.terrain differ diff --git a/public/terrain/18/429286/176892.terrain b/public/terrain/18/429286/176892.terrain new file mode 100644 index 000000000..438ecd910 Binary files /dev/null and b/public/terrain/18/429286/176892.terrain differ diff --git a/public/terrain/18/429286/176893.terrain b/public/terrain/18/429286/176893.terrain new file mode 100644 index 000000000..fbc34e144 Binary files /dev/null and b/public/terrain/18/429286/176893.terrain differ diff --git a/public/terrain/18/429286/176894.terrain b/public/terrain/18/429286/176894.terrain new file mode 100644 index 000000000..79cf7caaa Binary files /dev/null and b/public/terrain/18/429286/176894.terrain differ diff --git a/public/terrain/18/429286/176895.terrain b/public/terrain/18/429286/176895.terrain new file mode 100644 index 000000000..e798e86e5 Binary files /dev/null and b/public/terrain/18/429286/176895.terrain differ diff --git a/public/terrain/18/429286/176896.terrain b/public/terrain/18/429286/176896.terrain new file mode 100644 index 000000000..b00765d95 Binary files /dev/null and b/public/terrain/18/429286/176896.terrain differ diff --git a/public/terrain/18/429286/176897.terrain b/public/terrain/18/429286/176897.terrain new file mode 100644 index 000000000..41b2c2aa4 Binary files /dev/null and b/public/terrain/18/429286/176897.terrain differ diff --git a/public/terrain/18/429286/176898.terrain b/public/terrain/18/429286/176898.terrain new file mode 100644 index 000000000..537240d57 Binary files /dev/null and b/public/terrain/18/429286/176898.terrain differ diff --git a/public/terrain/18/429286/176899.terrain b/public/terrain/18/429286/176899.terrain new file mode 100644 index 000000000..478263060 Binary files /dev/null and b/public/terrain/18/429286/176899.terrain differ diff --git a/public/terrain/18/429286/176900.terrain b/public/terrain/18/429286/176900.terrain new file mode 100644 index 000000000..115fda61c Binary files /dev/null and b/public/terrain/18/429286/176900.terrain differ diff --git a/public/terrain/18/429286/176901.terrain b/public/terrain/18/429286/176901.terrain new file mode 100644 index 000000000..d47cb0a3a Binary files /dev/null and b/public/terrain/18/429286/176901.terrain differ diff --git a/public/terrain/18/429286/176902.terrain b/public/terrain/18/429286/176902.terrain new file mode 100644 index 000000000..328757269 Binary files /dev/null and b/public/terrain/18/429286/176902.terrain differ diff --git a/public/terrain/18/429286/176903.terrain b/public/terrain/18/429286/176903.terrain new file mode 100644 index 000000000..096b35838 Binary files /dev/null and b/public/terrain/18/429286/176903.terrain differ diff --git a/public/terrain/18/429286/176904.terrain b/public/terrain/18/429286/176904.terrain new file mode 100644 index 000000000..856b9b9c8 Binary files /dev/null and b/public/terrain/18/429286/176904.terrain differ diff --git a/public/terrain/18/429286/176905.terrain b/public/terrain/18/429286/176905.terrain new file mode 100644 index 000000000..df0157f3e Binary files /dev/null and b/public/terrain/18/429286/176905.terrain differ diff --git a/public/terrain/18/429286/176906.terrain b/public/terrain/18/429286/176906.terrain new file mode 100644 index 000000000..4068c73c5 Binary files /dev/null and b/public/terrain/18/429286/176906.terrain differ diff --git a/public/terrain/18/429286/176907.terrain b/public/terrain/18/429286/176907.terrain new file mode 100644 index 000000000..7a583cc42 Binary files /dev/null and b/public/terrain/18/429286/176907.terrain differ diff --git a/public/terrain/18/429286/176908.terrain b/public/terrain/18/429286/176908.terrain new file mode 100644 index 000000000..5819e5d4d Binary files /dev/null and b/public/terrain/18/429286/176908.terrain differ diff --git a/public/terrain/18/429286/176909.terrain b/public/terrain/18/429286/176909.terrain new file mode 100644 index 000000000..faf8d3106 Binary files /dev/null and b/public/terrain/18/429286/176909.terrain differ diff --git a/public/terrain/18/429286/176910.terrain b/public/terrain/18/429286/176910.terrain new file mode 100644 index 000000000..b732cdc19 Binary files /dev/null and b/public/terrain/18/429286/176910.terrain differ diff --git a/public/terrain/18/429286/176911.terrain b/public/terrain/18/429286/176911.terrain new file mode 100644 index 000000000..35d074745 Binary files /dev/null and b/public/terrain/18/429286/176911.terrain differ diff --git a/public/terrain/18/429286/176912.terrain b/public/terrain/18/429286/176912.terrain new file mode 100644 index 000000000..bcca4eba9 Binary files /dev/null and b/public/terrain/18/429286/176912.terrain differ diff --git a/public/terrain/18/429286/176913.terrain b/public/terrain/18/429286/176913.terrain new file mode 100644 index 000000000..f28c5b4cb Binary files /dev/null and b/public/terrain/18/429286/176913.terrain differ diff --git a/public/terrain/18/429286/176914.terrain b/public/terrain/18/429286/176914.terrain new file mode 100644 index 000000000..087ee22c0 Binary files /dev/null and b/public/terrain/18/429286/176914.terrain differ diff --git a/public/terrain/18/429286/176915.terrain b/public/terrain/18/429286/176915.terrain new file mode 100644 index 000000000..a8bff7833 Binary files /dev/null and b/public/terrain/18/429286/176915.terrain differ diff --git a/public/terrain/18/429286/176916.terrain b/public/terrain/18/429286/176916.terrain new file mode 100644 index 000000000..f7f5ab261 Binary files /dev/null and b/public/terrain/18/429286/176916.terrain differ diff --git a/public/terrain/18/429286/176917.terrain b/public/terrain/18/429286/176917.terrain new file mode 100644 index 000000000..f6851f138 Binary files /dev/null and b/public/terrain/18/429286/176917.terrain differ diff --git a/public/terrain/18/429286/176918.terrain b/public/terrain/18/429286/176918.terrain new file mode 100644 index 000000000..d4f907613 Binary files /dev/null and b/public/terrain/18/429286/176918.terrain differ diff --git a/public/terrain/18/429286/176919.terrain b/public/terrain/18/429286/176919.terrain new file mode 100644 index 000000000..147e95fe6 Binary files /dev/null and b/public/terrain/18/429286/176919.terrain differ diff --git a/public/terrain/18/429286/176920.terrain b/public/terrain/18/429286/176920.terrain new file mode 100644 index 000000000..a3845de20 Binary files /dev/null and b/public/terrain/18/429286/176920.terrain differ diff --git a/public/terrain/18/429286/176921.terrain b/public/terrain/18/429286/176921.terrain new file mode 100644 index 000000000..7049b5234 Binary files /dev/null and b/public/terrain/18/429286/176921.terrain differ diff --git a/public/terrain/18/429286/176922.terrain b/public/terrain/18/429286/176922.terrain new file mode 100644 index 000000000..74b820870 Binary files /dev/null and b/public/terrain/18/429286/176922.terrain differ diff --git a/public/terrain/18/429286/176923.terrain b/public/terrain/18/429286/176923.terrain new file mode 100644 index 000000000..fca69cbf5 Binary files /dev/null and b/public/terrain/18/429286/176923.terrain differ diff --git a/public/terrain/18/429286/176924.terrain b/public/terrain/18/429286/176924.terrain new file mode 100644 index 000000000..e34a797a2 Binary files /dev/null and b/public/terrain/18/429286/176924.terrain differ diff --git a/public/terrain/18/429286/176925.terrain b/public/terrain/18/429286/176925.terrain new file mode 100644 index 000000000..5910b8c82 Binary files /dev/null and b/public/terrain/18/429286/176925.terrain differ diff --git a/public/terrain/18/429286/176926.terrain b/public/terrain/18/429286/176926.terrain new file mode 100644 index 000000000..6513cb1f9 Binary files /dev/null and b/public/terrain/18/429286/176926.terrain differ diff --git a/public/terrain/18/429286/176927.terrain b/public/terrain/18/429286/176927.terrain new file mode 100644 index 000000000..cc8588dfa Binary files /dev/null and b/public/terrain/18/429286/176927.terrain differ diff --git a/public/terrain/18/429286/176928.terrain b/public/terrain/18/429286/176928.terrain new file mode 100644 index 000000000..36f363d44 Binary files /dev/null and b/public/terrain/18/429286/176928.terrain differ diff --git a/public/terrain/18/429286/176929.terrain b/public/terrain/18/429286/176929.terrain new file mode 100644 index 000000000..83a9ca4fb Binary files /dev/null and b/public/terrain/18/429286/176929.terrain differ diff --git a/public/terrain/18/429286/176930.terrain b/public/terrain/18/429286/176930.terrain new file mode 100644 index 000000000..10fb83992 Binary files /dev/null and b/public/terrain/18/429286/176930.terrain differ diff --git a/public/terrain/18/429286/176931.terrain b/public/terrain/18/429286/176931.terrain new file mode 100644 index 000000000..08237483d Binary files /dev/null and b/public/terrain/18/429286/176931.terrain differ diff --git a/public/terrain/18/429286/176932.terrain b/public/terrain/18/429286/176932.terrain new file mode 100644 index 000000000..b62466707 Binary files /dev/null and b/public/terrain/18/429286/176932.terrain differ diff --git a/public/terrain/18/429286/176933.terrain b/public/terrain/18/429286/176933.terrain new file mode 100644 index 000000000..bde700332 Binary files /dev/null and b/public/terrain/18/429286/176933.terrain differ diff --git a/public/terrain/18/429286/176934.terrain b/public/terrain/18/429286/176934.terrain new file mode 100644 index 000000000..ea2d80ac6 Binary files /dev/null and b/public/terrain/18/429286/176934.terrain differ diff --git a/public/terrain/18/429286/176935.terrain b/public/terrain/18/429286/176935.terrain new file mode 100644 index 000000000..5fb906102 Binary files /dev/null and b/public/terrain/18/429286/176935.terrain differ diff --git a/public/terrain/18/429286/176936.terrain b/public/terrain/18/429286/176936.terrain new file mode 100644 index 000000000..8e18a7676 Binary files /dev/null and b/public/terrain/18/429286/176936.terrain differ diff --git a/public/terrain/18/429286/176937.terrain b/public/terrain/18/429286/176937.terrain new file mode 100644 index 000000000..77943b924 Binary files /dev/null and b/public/terrain/18/429286/176937.terrain differ diff --git a/public/terrain/18/429286/176938.terrain b/public/terrain/18/429286/176938.terrain new file mode 100644 index 000000000..11613f885 Binary files /dev/null and b/public/terrain/18/429286/176938.terrain differ diff --git a/public/terrain/18/429286/176939.terrain b/public/terrain/18/429286/176939.terrain new file mode 100644 index 000000000..213495b99 Binary files /dev/null and b/public/terrain/18/429286/176939.terrain differ diff --git a/public/terrain/18/429286/176940.terrain b/public/terrain/18/429286/176940.terrain new file mode 100644 index 000000000..2d0119c39 Binary files /dev/null and b/public/terrain/18/429286/176940.terrain differ diff --git a/public/terrain/18/429286/176941.terrain b/public/terrain/18/429286/176941.terrain new file mode 100644 index 000000000..1fbbc138d Binary files /dev/null and b/public/terrain/18/429286/176941.terrain differ diff --git a/public/terrain/18/429286/176942.terrain b/public/terrain/18/429286/176942.terrain new file mode 100644 index 000000000..6d9a9d05e Binary files /dev/null and b/public/terrain/18/429286/176942.terrain differ diff --git a/public/terrain/18/429286/176943.terrain b/public/terrain/18/429286/176943.terrain new file mode 100644 index 000000000..efc7dae91 Binary files /dev/null and b/public/terrain/18/429286/176943.terrain differ diff --git a/public/terrain/18/429286/176944.terrain b/public/terrain/18/429286/176944.terrain new file mode 100644 index 000000000..0bb8174ea Binary files /dev/null and b/public/terrain/18/429286/176944.terrain differ diff --git a/public/terrain/18/429286/176945.terrain b/public/terrain/18/429286/176945.terrain new file mode 100644 index 000000000..2e696c006 Binary files /dev/null and b/public/terrain/18/429286/176945.terrain differ diff --git a/public/terrain/18/429286/176946.terrain b/public/terrain/18/429286/176946.terrain new file mode 100644 index 000000000..5dc94cd36 Binary files /dev/null and b/public/terrain/18/429286/176946.terrain differ diff --git a/public/terrain/18/429286/176947.terrain b/public/terrain/18/429286/176947.terrain new file mode 100644 index 000000000..c7a0d0984 Binary files /dev/null and b/public/terrain/18/429286/176947.terrain differ diff --git a/public/terrain/18/429286/176948.terrain b/public/terrain/18/429286/176948.terrain new file mode 100644 index 000000000..978999c70 Binary files /dev/null and b/public/terrain/18/429286/176948.terrain differ diff --git a/public/terrain/18/429286/176949.terrain b/public/terrain/18/429286/176949.terrain new file mode 100644 index 000000000..51f603b7d Binary files /dev/null and b/public/terrain/18/429286/176949.terrain differ diff --git a/public/terrain/18/429286/176950.terrain b/public/terrain/18/429286/176950.terrain new file mode 100644 index 000000000..101c23ecc Binary files /dev/null and b/public/terrain/18/429286/176950.terrain differ diff --git a/public/terrain/18/429286/176951.terrain b/public/terrain/18/429286/176951.terrain new file mode 100644 index 000000000..389f82e27 Binary files /dev/null and b/public/terrain/18/429286/176951.terrain differ diff --git a/public/terrain/18/429286/176952.terrain b/public/terrain/18/429286/176952.terrain new file mode 100644 index 000000000..e8f8de654 Binary files /dev/null and b/public/terrain/18/429286/176952.terrain differ diff --git a/public/terrain/18/429286/176953.terrain b/public/terrain/18/429286/176953.terrain new file mode 100644 index 000000000..e376dcdf9 Binary files /dev/null and b/public/terrain/18/429286/176953.terrain differ diff --git a/public/terrain/18/429286/176954.terrain b/public/terrain/18/429286/176954.terrain new file mode 100644 index 000000000..0848d40db Binary files /dev/null and b/public/terrain/18/429286/176954.terrain differ diff --git a/public/terrain/18/429286/176955.terrain b/public/terrain/18/429286/176955.terrain new file mode 100644 index 000000000..15c421b04 Binary files /dev/null and b/public/terrain/18/429286/176955.terrain differ diff --git a/public/terrain/18/429286/176956.terrain b/public/terrain/18/429286/176956.terrain new file mode 100644 index 000000000..9f7c03bb3 Binary files /dev/null and b/public/terrain/18/429286/176956.terrain differ diff --git a/public/terrain/18/429286/176957.terrain b/public/terrain/18/429286/176957.terrain new file mode 100644 index 000000000..69605b36b Binary files /dev/null and b/public/terrain/18/429286/176957.terrain differ diff --git a/public/terrain/18/429286/176958.terrain b/public/terrain/18/429286/176958.terrain new file mode 100644 index 000000000..62b931c55 Binary files /dev/null and b/public/terrain/18/429286/176958.terrain differ diff --git a/public/terrain/18/429286/176959.terrain b/public/terrain/18/429286/176959.terrain new file mode 100644 index 000000000..914af8254 Binary files /dev/null and b/public/terrain/18/429286/176959.terrain differ diff --git a/public/terrain/18/429286/176960.terrain b/public/terrain/18/429286/176960.terrain new file mode 100644 index 000000000..84ed6e0bd Binary files /dev/null and b/public/terrain/18/429286/176960.terrain differ diff --git a/public/terrain/18/429286/176961.terrain b/public/terrain/18/429286/176961.terrain new file mode 100644 index 000000000..f2616eac6 Binary files /dev/null and b/public/terrain/18/429286/176961.terrain differ diff --git a/public/terrain/18/429286/176962.terrain b/public/terrain/18/429286/176962.terrain new file mode 100644 index 000000000..73154948c Binary files /dev/null and b/public/terrain/18/429286/176962.terrain differ diff --git a/public/terrain/18/429286/176963.terrain b/public/terrain/18/429286/176963.terrain new file mode 100644 index 000000000..7bb817f39 Binary files /dev/null and b/public/terrain/18/429286/176963.terrain differ diff --git a/public/terrain/18/429286/176964.terrain b/public/terrain/18/429286/176964.terrain new file mode 100644 index 000000000..b869b8fb7 Binary files /dev/null and b/public/terrain/18/429286/176964.terrain differ diff --git a/public/terrain/18/429286/176965.terrain b/public/terrain/18/429286/176965.terrain new file mode 100644 index 000000000..af4977175 Binary files /dev/null and b/public/terrain/18/429286/176965.terrain differ diff --git a/public/terrain/18/429286/176966.terrain b/public/terrain/18/429286/176966.terrain new file mode 100644 index 000000000..924ae133a Binary files /dev/null and b/public/terrain/18/429286/176966.terrain differ diff --git a/public/terrain/18/429286/176967.terrain b/public/terrain/18/429286/176967.terrain new file mode 100644 index 000000000..10029c17a Binary files /dev/null and b/public/terrain/18/429286/176967.terrain differ diff --git a/public/terrain/18/429286/176968.terrain b/public/terrain/18/429286/176968.terrain new file mode 100644 index 000000000..237385d66 Binary files /dev/null and b/public/terrain/18/429286/176968.terrain differ diff --git a/public/terrain/18/429286/176969.terrain b/public/terrain/18/429286/176969.terrain new file mode 100644 index 000000000..e430e2ac5 Binary files /dev/null and b/public/terrain/18/429286/176969.terrain differ diff --git a/public/terrain/18/429286/176970.terrain b/public/terrain/18/429286/176970.terrain new file mode 100644 index 000000000..a035c7bc2 Binary files /dev/null and b/public/terrain/18/429286/176970.terrain differ diff --git a/public/terrain/18/429286/176971.terrain b/public/terrain/18/429286/176971.terrain new file mode 100644 index 000000000..89092499e Binary files /dev/null and b/public/terrain/18/429286/176971.terrain differ diff --git a/public/terrain/18/429286/176972.terrain b/public/terrain/18/429286/176972.terrain new file mode 100644 index 000000000..de224edf6 Binary files /dev/null and b/public/terrain/18/429286/176972.terrain differ diff --git a/public/terrain/18/429286/176973.terrain b/public/terrain/18/429286/176973.terrain new file mode 100644 index 000000000..3b046cc18 Binary files /dev/null and b/public/terrain/18/429286/176973.terrain differ diff --git a/public/terrain/18/429286/176974.terrain b/public/terrain/18/429286/176974.terrain new file mode 100644 index 000000000..61249c9ab Binary files /dev/null and b/public/terrain/18/429286/176974.terrain differ diff --git a/public/terrain/18/429286/176975.terrain b/public/terrain/18/429286/176975.terrain new file mode 100644 index 000000000..7c9c61838 Binary files /dev/null and b/public/terrain/18/429286/176975.terrain differ diff --git a/public/terrain/18/429286/176976.terrain b/public/terrain/18/429286/176976.terrain new file mode 100644 index 000000000..956c7838b Binary files /dev/null and b/public/terrain/18/429286/176976.terrain differ diff --git a/public/terrain/18/429286/176977.terrain b/public/terrain/18/429286/176977.terrain new file mode 100644 index 000000000..43af529ef Binary files /dev/null and b/public/terrain/18/429286/176977.terrain differ diff --git a/public/terrain/18/429286/176978.terrain b/public/terrain/18/429286/176978.terrain new file mode 100644 index 000000000..91efb2d87 Binary files /dev/null and b/public/terrain/18/429286/176978.terrain differ diff --git a/public/terrain/18/429286/176979.terrain b/public/terrain/18/429286/176979.terrain new file mode 100644 index 000000000..a8d7aa219 Binary files /dev/null and b/public/terrain/18/429286/176979.terrain differ diff --git a/public/terrain/18/429286/176980.terrain b/public/terrain/18/429286/176980.terrain new file mode 100644 index 000000000..3a4a45c61 Binary files /dev/null and b/public/terrain/18/429286/176980.terrain differ diff --git a/public/terrain/18/429286/176981.terrain b/public/terrain/18/429286/176981.terrain new file mode 100644 index 000000000..ae79edff5 Binary files /dev/null and b/public/terrain/18/429286/176981.terrain differ diff --git a/public/terrain/18/429286/176982.terrain b/public/terrain/18/429286/176982.terrain new file mode 100644 index 000000000..cce0f30d0 Binary files /dev/null and b/public/terrain/18/429286/176982.terrain differ diff --git a/public/terrain/18/429286/176983.terrain b/public/terrain/18/429286/176983.terrain new file mode 100644 index 000000000..229342230 Binary files /dev/null and b/public/terrain/18/429286/176983.terrain differ diff --git a/public/terrain/18/429286/176984.terrain b/public/terrain/18/429286/176984.terrain new file mode 100644 index 000000000..bea189a63 Binary files /dev/null and b/public/terrain/18/429286/176984.terrain differ diff --git a/public/terrain/18/429286/176985.terrain b/public/terrain/18/429286/176985.terrain new file mode 100644 index 000000000..cd1a83e8b Binary files /dev/null and b/public/terrain/18/429286/176985.terrain differ diff --git a/public/terrain/18/429286/176986.terrain b/public/terrain/18/429286/176986.terrain new file mode 100644 index 000000000..074236ac4 Binary files /dev/null and b/public/terrain/18/429286/176986.terrain differ diff --git a/public/terrain/18/429286/176987.terrain b/public/terrain/18/429286/176987.terrain new file mode 100644 index 000000000..d0578985a Binary files /dev/null and b/public/terrain/18/429286/176987.terrain differ diff --git a/public/terrain/18/429286/176988.terrain b/public/terrain/18/429286/176988.terrain new file mode 100644 index 000000000..053ef2aa2 Binary files /dev/null and b/public/terrain/18/429286/176988.terrain differ diff --git a/public/terrain/18/429286/176989.terrain b/public/terrain/18/429286/176989.terrain new file mode 100644 index 000000000..9e93e8745 Binary files /dev/null and b/public/terrain/18/429286/176989.terrain differ diff --git a/public/terrain/18/429286/176990.terrain b/public/terrain/18/429286/176990.terrain new file mode 100644 index 000000000..48191f072 Binary files /dev/null and b/public/terrain/18/429286/176990.terrain differ diff --git a/public/terrain/18/429286/176991.terrain b/public/terrain/18/429286/176991.terrain new file mode 100644 index 000000000..ce198aa29 Binary files /dev/null and b/public/terrain/18/429286/176991.terrain differ diff --git a/public/terrain/18/429286/176992.terrain b/public/terrain/18/429286/176992.terrain new file mode 100644 index 000000000..913722549 Binary files /dev/null and b/public/terrain/18/429286/176992.terrain differ diff --git a/public/terrain/18/429286/176993.terrain b/public/terrain/18/429286/176993.terrain new file mode 100644 index 000000000..855aafe20 Binary files /dev/null and b/public/terrain/18/429286/176993.terrain differ diff --git a/public/terrain/18/429286/176994.terrain b/public/terrain/18/429286/176994.terrain new file mode 100644 index 000000000..d4f8b61bc Binary files /dev/null and b/public/terrain/18/429286/176994.terrain differ diff --git a/public/terrain/18/429286/176995.terrain b/public/terrain/18/429286/176995.terrain new file mode 100644 index 000000000..fa007ce92 Binary files /dev/null and b/public/terrain/18/429286/176995.terrain differ diff --git a/public/terrain/18/429286/176996.terrain b/public/terrain/18/429286/176996.terrain new file mode 100644 index 000000000..fa1004991 Binary files /dev/null and b/public/terrain/18/429286/176996.terrain differ diff --git a/public/terrain/18/429286/176997.terrain b/public/terrain/18/429286/176997.terrain new file mode 100644 index 000000000..116f02bfc Binary files /dev/null and b/public/terrain/18/429286/176997.terrain differ diff --git a/public/terrain/18/429286/176998.terrain b/public/terrain/18/429286/176998.terrain new file mode 100644 index 000000000..f2001ec24 Binary files /dev/null and b/public/terrain/18/429286/176998.terrain differ diff --git a/public/terrain/18/429286/176999.terrain b/public/terrain/18/429286/176999.terrain new file mode 100644 index 000000000..f66d9bef6 Binary files /dev/null and b/public/terrain/18/429286/176999.terrain differ diff --git a/public/terrain/18/429286/177000.terrain b/public/terrain/18/429286/177000.terrain new file mode 100644 index 000000000..f91da99d2 Binary files /dev/null and b/public/terrain/18/429286/177000.terrain differ diff --git a/public/terrain/18/429286/177001.terrain b/public/terrain/18/429286/177001.terrain new file mode 100644 index 000000000..97345c0e1 Binary files /dev/null and b/public/terrain/18/429286/177001.terrain differ diff --git a/public/terrain/18/429286/177002.terrain b/public/terrain/18/429286/177002.terrain new file mode 100644 index 000000000..c9c2bab65 Binary files /dev/null and b/public/terrain/18/429286/177002.terrain differ diff --git a/public/terrain/18/429286/177003.terrain b/public/terrain/18/429286/177003.terrain new file mode 100644 index 000000000..7be7720a8 Binary files /dev/null and b/public/terrain/18/429286/177003.terrain differ diff --git a/public/terrain/18/429286/177004.terrain b/public/terrain/18/429286/177004.terrain new file mode 100644 index 000000000..dcc12d27d Binary files /dev/null and b/public/terrain/18/429286/177004.terrain differ diff --git a/public/terrain/18/429286/177005.terrain b/public/terrain/18/429286/177005.terrain new file mode 100644 index 000000000..58165a824 Binary files /dev/null and b/public/terrain/18/429286/177005.terrain differ diff --git a/public/terrain/18/429286/177006.terrain b/public/terrain/18/429286/177006.terrain new file mode 100644 index 000000000..e5e58e9f9 Binary files /dev/null and b/public/terrain/18/429286/177006.terrain differ diff --git a/public/terrain/18/429286/177007.terrain b/public/terrain/18/429286/177007.terrain new file mode 100644 index 000000000..fccc123ae Binary files /dev/null and b/public/terrain/18/429286/177007.terrain differ diff --git a/public/terrain/18/429286/177008.terrain b/public/terrain/18/429286/177008.terrain new file mode 100644 index 000000000..659e1c5cf Binary files /dev/null and b/public/terrain/18/429286/177008.terrain differ diff --git a/public/terrain/18/429286/177009.terrain b/public/terrain/18/429286/177009.terrain new file mode 100644 index 000000000..89732fd65 Binary files /dev/null and b/public/terrain/18/429286/177009.terrain differ diff --git a/public/terrain/18/429286/177010.terrain b/public/terrain/18/429286/177010.terrain new file mode 100644 index 000000000..beeb4c207 Binary files /dev/null and b/public/terrain/18/429286/177010.terrain differ diff --git a/public/terrain/18/429286/177011.terrain b/public/terrain/18/429286/177011.terrain new file mode 100644 index 000000000..47e79d686 Binary files /dev/null and b/public/terrain/18/429286/177011.terrain differ diff --git a/public/terrain/18/429286/177012.terrain b/public/terrain/18/429286/177012.terrain new file mode 100644 index 000000000..1df80c693 Binary files /dev/null and b/public/terrain/18/429286/177012.terrain differ diff --git a/public/terrain/18/429286/177013.terrain b/public/terrain/18/429286/177013.terrain new file mode 100644 index 000000000..161b77875 Binary files /dev/null and b/public/terrain/18/429286/177013.terrain differ diff --git a/public/terrain/18/429286/177014.terrain b/public/terrain/18/429286/177014.terrain new file mode 100644 index 000000000..02a588670 Binary files /dev/null and b/public/terrain/18/429286/177014.terrain differ diff --git a/public/terrain/18/429286/177015.terrain b/public/terrain/18/429286/177015.terrain new file mode 100644 index 000000000..4f5510bc0 Binary files /dev/null and b/public/terrain/18/429286/177015.terrain differ diff --git a/public/terrain/18/429286/177016.terrain b/public/terrain/18/429286/177016.terrain new file mode 100644 index 000000000..5bd621a60 Binary files /dev/null and b/public/terrain/18/429286/177016.terrain differ diff --git a/public/terrain/18/429286/177017.terrain b/public/terrain/18/429286/177017.terrain new file mode 100644 index 000000000..ab7519921 Binary files /dev/null and b/public/terrain/18/429286/177017.terrain differ diff --git a/public/terrain/18/429286/177018.terrain b/public/terrain/18/429286/177018.terrain new file mode 100644 index 000000000..436877490 Binary files /dev/null and b/public/terrain/18/429286/177018.terrain differ diff --git a/public/terrain/18/429286/177019.terrain b/public/terrain/18/429286/177019.terrain new file mode 100644 index 000000000..02bb72c12 Binary files /dev/null and b/public/terrain/18/429286/177019.terrain differ diff --git a/public/terrain/18/429286/177020.terrain b/public/terrain/18/429286/177020.terrain new file mode 100644 index 000000000..d89b2e52c Binary files /dev/null and b/public/terrain/18/429286/177020.terrain differ diff --git a/public/terrain/18/429286/177021.terrain b/public/terrain/18/429286/177021.terrain new file mode 100644 index 000000000..97787e0b6 Binary files /dev/null and b/public/terrain/18/429286/177021.terrain differ diff --git a/public/terrain/18/429286/177022.terrain b/public/terrain/18/429286/177022.terrain new file mode 100644 index 000000000..c0c0b3efd Binary files /dev/null and b/public/terrain/18/429286/177022.terrain differ diff --git a/public/terrain/18/429286/177023.terrain b/public/terrain/18/429286/177023.terrain new file mode 100644 index 000000000..70f3be821 Binary files /dev/null and b/public/terrain/18/429286/177023.terrain differ diff --git a/public/terrain/18/429286/177024.terrain b/public/terrain/18/429286/177024.terrain new file mode 100644 index 000000000..fef476839 Binary files /dev/null and b/public/terrain/18/429286/177024.terrain differ diff --git a/public/terrain/18/429286/177025.terrain b/public/terrain/18/429286/177025.terrain new file mode 100644 index 000000000..8d17c03aa Binary files /dev/null and b/public/terrain/18/429286/177025.terrain differ diff --git a/public/terrain/18/429286/177026.terrain b/public/terrain/18/429286/177026.terrain new file mode 100644 index 000000000..e97218e00 Binary files /dev/null and b/public/terrain/18/429286/177026.terrain differ diff --git a/public/terrain/18/429286/177027.terrain b/public/terrain/18/429286/177027.terrain new file mode 100644 index 000000000..4fdc590ef Binary files /dev/null and b/public/terrain/18/429286/177027.terrain differ diff --git a/public/terrain/18/429286/177028.terrain b/public/terrain/18/429286/177028.terrain new file mode 100644 index 000000000..54362c7bf Binary files /dev/null and b/public/terrain/18/429286/177028.terrain differ diff --git a/public/terrain/18/429286/177029.terrain b/public/terrain/18/429286/177029.terrain new file mode 100644 index 000000000..3fcbc896a Binary files /dev/null and b/public/terrain/18/429286/177029.terrain differ diff --git a/public/terrain/18/429287/176871.terrain b/public/terrain/18/429287/176871.terrain new file mode 100644 index 000000000..492f3f76f Binary files /dev/null and b/public/terrain/18/429287/176871.terrain differ diff --git a/public/terrain/18/429287/176872.terrain b/public/terrain/18/429287/176872.terrain new file mode 100644 index 000000000..1bea5f26e Binary files /dev/null and b/public/terrain/18/429287/176872.terrain differ diff --git a/public/terrain/18/429287/176873.terrain b/public/terrain/18/429287/176873.terrain new file mode 100644 index 000000000..051906668 Binary files /dev/null and b/public/terrain/18/429287/176873.terrain differ diff --git a/public/terrain/18/429287/176874.terrain b/public/terrain/18/429287/176874.terrain new file mode 100644 index 000000000..b2e7b4c75 Binary files /dev/null and b/public/terrain/18/429287/176874.terrain differ diff --git a/public/terrain/18/429287/176875.terrain b/public/terrain/18/429287/176875.terrain new file mode 100644 index 000000000..da905574c Binary files /dev/null and b/public/terrain/18/429287/176875.terrain differ diff --git a/public/terrain/18/429287/176876.terrain b/public/terrain/18/429287/176876.terrain new file mode 100644 index 000000000..2e61df9a1 Binary files /dev/null and b/public/terrain/18/429287/176876.terrain differ diff --git a/public/terrain/18/429287/176877.terrain b/public/terrain/18/429287/176877.terrain new file mode 100644 index 000000000..00de92c6f Binary files /dev/null and b/public/terrain/18/429287/176877.terrain differ diff --git a/public/terrain/18/429287/176878.terrain b/public/terrain/18/429287/176878.terrain new file mode 100644 index 000000000..6e9239c82 Binary files /dev/null and b/public/terrain/18/429287/176878.terrain differ diff --git a/public/terrain/18/429287/176879.terrain b/public/terrain/18/429287/176879.terrain new file mode 100644 index 000000000..14e72d798 Binary files /dev/null and b/public/terrain/18/429287/176879.terrain differ diff --git a/public/terrain/18/429287/176880.terrain b/public/terrain/18/429287/176880.terrain new file mode 100644 index 000000000..d19323a47 Binary files /dev/null and b/public/terrain/18/429287/176880.terrain differ diff --git a/public/terrain/18/429287/176881.terrain b/public/terrain/18/429287/176881.terrain new file mode 100644 index 000000000..6d9252c92 Binary files /dev/null and b/public/terrain/18/429287/176881.terrain differ diff --git a/public/terrain/18/429287/176882.terrain b/public/terrain/18/429287/176882.terrain new file mode 100644 index 000000000..d37a862e9 Binary files /dev/null and b/public/terrain/18/429287/176882.terrain differ diff --git a/public/terrain/18/429287/176883.terrain b/public/terrain/18/429287/176883.terrain new file mode 100644 index 000000000..5475648fc Binary files /dev/null and b/public/terrain/18/429287/176883.terrain differ diff --git a/public/terrain/18/429287/176884.terrain b/public/terrain/18/429287/176884.terrain new file mode 100644 index 000000000..0caf6faf7 Binary files /dev/null and b/public/terrain/18/429287/176884.terrain differ diff --git a/public/terrain/18/429287/176885.terrain b/public/terrain/18/429287/176885.terrain new file mode 100644 index 000000000..836eef802 Binary files /dev/null and b/public/terrain/18/429287/176885.terrain differ diff --git a/public/terrain/18/429287/176886.terrain b/public/terrain/18/429287/176886.terrain new file mode 100644 index 000000000..307327960 Binary files /dev/null and b/public/terrain/18/429287/176886.terrain differ diff --git a/public/terrain/18/429287/176887.terrain b/public/terrain/18/429287/176887.terrain new file mode 100644 index 000000000..d59cbae30 Binary files /dev/null and b/public/terrain/18/429287/176887.terrain differ diff --git a/public/terrain/18/429287/176888.terrain b/public/terrain/18/429287/176888.terrain new file mode 100644 index 000000000..9391bd072 Binary files /dev/null and b/public/terrain/18/429287/176888.terrain differ diff --git a/public/terrain/18/429287/176889.terrain b/public/terrain/18/429287/176889.terrain new file mode 100644 index 000000000..181ff81da Binary files /dev/null and b/public/terrain/18/429287/176889.terrain differ diff --git a/public/terrain/18/429287/176890.terrain b/public/terrain/18/429287/176890.terrain new file mode 100644 index 000000000..9e647e1cf Binary files /dev/null and b/public/terrain/18/429287/176890.terrain differ diff --git a/public/terrain/18/429287/176891.terrain b/public/terrain/18/429287/176891.terrain new file mode 100644 index 000000000..84a2e8d6f Binary files /dev/null and b/public/terrain/18/429287/176891.terrain differ diff --git a/public/terrain/18/429287/176892.terrain b/public/terrain/18/429287/176892.terrain new file mode 100644 index 000000000..a39a9e3a6 Binary files /dev/null and b/public/terrain/18/429287/176892.terrain differ diff --git a/public/terrain/18/429287/176893.terrain b/public/terrain/18/429287/176893.terrain new file mode 100644 index 000000000..31ba829b7 Binary files /dev/null and b/public/terrain/18/429287/176893.terrain differ diff --git a/public/terrain/18/429287/176894.terrain b/public/terrain/18/429287/176894.terrain new file mode 100644 index 000000000..45dfccf65 Binary files /dev/null and b/public/terrain/18/429287/176894.terrain differ diff --git a/public/terrain/18/429287/176895.terrain b/public/terrain/18/429287/176895.terrain new file mode 100644 index 000000000..0beeffcb6 Binary files /dev/null and b/public/terrain/18/429287/176895.terrain differ diff --git a/public/terrain/18/429287/176896.terrain b/public/terrain/18/429287/176896.terrain new file mode 100644 index 000000000..567af4f07 Binary files /dev/null and b/public/terrain/18/429287/176896.terrain differ diff --git a/public/terrain/18/429287/176897.terrain b/public/terrain/18/429287/176897.terrain new file mode 100644 index 000000000..c17a9e91a Binary files /dev/null and b/public/terrain/18/429287/176897.terrain differ diff --git a/public/terrain/18/429287/176898.terrain b/public/terrain/18/429287/176898.terrain new file mode 100644 index 000000000..8da294553 Binary files /dev/null and b/public/terrain/18/429287/176898.terrain differ diff --git a/public/terrain/18/429287/176899.terrain b/public/terrain/18/429287/176899.terrain new file mode 100644 index 000000000..f0c26d582 Binary files /dev/null and b/public/terrain/18/429287/176899.terrain differ diff --git a/public/terrain/18/429287/176900.terrain b/public/terrain/18/429287/176900.terrain new file mode 100644 index 000000000..b06eb2d23 Binary files /dev/null and b/public/terrain/18/429287/176900.terrain differ diff --git a/public/terrain/18/429287/176901.terrain b/public/terrain/18/429287/176901.terrain new file mode 100644 index 000000000..fd414136f Binary files /dev/null and b/public/terrain/18/429287/176901.terrain differ diff --git a/public/terrain/18/429287/176902.terrain b/public/terrain/18/429287/176902.terrain new file mode 100644 index 000000000..9c647cf52 Binary files /dev/null and b/public/terrain/18/429287/176902.terrain differ diff --git a/public/terrain/18/429287/176903.terrain b/public/terrain/18/429287/176903.terrain new file mode 100644 index 000000000..eb931f167 Binary files /dev/null and b/public/terrain/18/429287/176903.terrain differ diff --git a/public/terrain/18/429287/176904.terrain b/public/terrain/18/429287/176904.terrain new file mode 100644 index 000000000..616c77652 Binary files /dev/null and b/public/terrain/18/429287/176904.terrain differ diff --git a/public/terrain/18/429287/176905.terrain b/public/terrain/18/429287/176905.terrain new file mode 100644 index 000000000..acb90d563 Binary files /dev/null and b/public/terrain/18/429287/176905.terrain differ diff --git a/public/terrain/18/429287/176906.terrain b/public/terrain/18/429287/176906.terrain new file mode 100644 index 000000000..5633eb5b4 Binary files /dev/null and b/public/terrain/18/429287/176906.terrain differ diff --git a/public/terrain/18/429287/176907.terrain b/public/terrain/18/429287/176907.terrain new file mode 100644 index 000000000..f35745095 Binary files /dev/null and b/public/terrain/18/429287/176907.terrain differ diff --git a/public/terrain/18/429287/176908.terrain b/public/terrain/18/429287/176908.terrain new file mode 100644 index 000000000..394c8ad02 Binary files /dev/null and b/public/terrain/18/429287/176908.terrain differ diff --git a/public/terrain/18/429287/176909.terrain b/public/terrain/18/429287/176909.terrain new file mode 100644 index 000000000..2c0bc5d01 Binary files /dev/null and b/public/terrain/18/429287/176909.terrain differ diff --git a/public/terrain/18/429287/176910.terrain b/public/terrain/18/429287/176910.terrain new file mode 100644 index 000000000..5a7b346b2 Binary files /dev/null and b/public/terrain/18/429287/176910.terrain differ diff --git a/public/terrain/18/429287/176911.terrain b/public/terrain/18/429287/176911.terrain new file mode 100644 index 000000000..5409ac7ad Binary files /dev/null and b/public/terrain/18/429287/176911.terrain differ diff --git a/public/terrain/18/429287/176912.terrain b/public/terrain/18/429287/176912.terrain new file mode 100644 index 000000000..3e717f028 Binary files /dev/null and b/public/terrain/18/429287/176912.terrain differ diff --git a/public/terrain/18/429287/176913.terrain b/public/terrain/18/429287/176913.terrain new file mode 100644 index 000000000..f78318642 Binary files /dev/null and b/public/terrain/18/429287/176913.terrain differ diff --git a/public/terrain/18/429287/176914.terrain b/public/terrain/18/429287/176914.terrain new file mode 100644 index 000000000..1d04fca5a Binary files /dev/null and b/public/terrain/18/429287/176914.terrain differ diff --git a/public/terrain/18/429287/176915.terrain b/public/terrain/18/429287/176915.terrain new file mode 100644 index 000000000..28e4734ae Binary files /dev/null and b/public/terrain/18/429287/176915.terrain differ diff --git a/public/terrain/18/429287/176916.terrain b/public/terrain/18/429287/176916.terrain new file mode 100644 index 000000000..1a858a39c Binary files /dev/null and b/public/terrain/18/429287/176916.terrain differ diff --git a/public/terrain/18/429287/176917.terrain b/public/terrain/18/429287/176917.terrain new file mode 100644 index 000000000..f53936871 Binary files /dev/null and b/public/terrain/18/429287/176917.terrain differ diff --git a/public/terrain/18/429287/176918.terrain b/public/terrain/18/429287/176918.terrain new file mode 100644 index 000000000..0d57cfffe Binary files /dev/null and b/public/terrain/18/429287/176918.terrain differ diff --git a/public/terrain/18/429287/176919.terrain b/public/terrain/18/429287/176919.terrain new file mode 100644 index 000000000..c7251a2c7 Binary files /dev/null and b/public/terrain/18/429287/176919.terrain differ diff --git a/public/terrain/18/429287/176920.terrain b/public/terrain/18/429287/176920.terrain new file mode 100644 index 000000000..885ee5f7e Binary files /dev/null and b/public/terrain/18/429287/176920.terrain differ diff --git a/public/terrain/18/429287/176921.terrain b/public/terrain/18/429287/176921.terrain new file mode 100644 index 000000000..76c19bccc Binary files /dev/null and b/public/terrain/18/429287/176921.terrain differ diff --git a/public/terrain/18/429287/176922.terrain b/public/terrain/18/429287/176922.terrain new file mode 100644 index 000000000..53279ae98 Binary files /dev/null and b/public/terrain/18/429287/176922.terrain differ diff --git a/public/terrain/18/429287/176923.terrain b/public/terrain/18/429287/176923.terrain new file mode 100644 index 000000000..996f62cb8 Binary files /dev/null and b/public/terrain/18/429287/176923.terrain differ diff --git a/public/terrain/18/429287/176924.terrain b/public/terrain/18/429287/176924.terrain new file mode 100644 index 000000000..2eba474a4 Binary files /dev/null and b/public/terrain/18/429287/176924.terrain differ diff --git a/public/terrain/18/429287/176925.terrain b/public/terrain/18/429287/176925.terrain new file mode 100644 index 000000000..6e87db190 Binary files /dev/null and b/public/terrain/18/429287/176925.terrain differ diff --git a/public/terrain/18/429287/176926.terrain b/public/terrain/18/429287/176926.terrain new file mode 100644 index 000000000..655197600 Binary files /dev/null and b/public/terrain/18/429287/176926.terrain differ diff --git a/public/terrain/18/429287/176927.terrain b/public/terrain/18/429287/176927.terrain new file mode 100644 index 000000000..b2769750f Binary files /dev/null and b/public/terrain/18/429287/176927.terrain differ diff --git a/public/terrain/18/429287/176928.terrain b/public/terrain/18/429287/176928.terrain new file mode 100644 index 000000000..fe79c75be Binary files /dev/null and b/public/terrain/18/429287/176928.terrain differ diff --git a/public/terrain/18/429287/176929.terrain b/public/terrain/18/429287/176929.terrain new file mode 100644 index 000000000..6f0acf912 Binary files /dev/null and b/public/terrain/18/429287/176929.terrain differ diff --git a/public/terrain/18/429287/176930.terrain b/public/terrain/18/429287/176930.terrain new file mode 100644 index 000000000..8029bf375 Binary files /dev/null and b/public/terrain/18/429287/176930.terrain differ diff --git a/public/terrain/18/429287/176931.terrain b/public/terrain/18/429287/176931.terrain new file mode 100644 index 000000000..9cdb8f375 Binary files /dev/null and b/public/terrain/18/429287/176931.terrain differ diff --git a/public/terrain/18/429287/176932.terrain b/public/terrain/18/429287/176932.terrain new file mode 100644 index 000000000..48e59a681 Binary files /dev/null and b/public/terrain/18/429287/176932.terrain differ diff --git a/public/terrain/18/429287/176933.terrain b/public/terrain/18/429287/176933.terrain new file mode 100644 index 000000000..6128b53da Binary files /dev/null and b/public/terrain/18/429287/176933.terrain differ diff --git a/public/terrain/18/429287/176934.terrain b/public/terrain/18/429287/176934.terrain new file mode 100644 index 000000000..25a6bf736 Binary files /dev/null and b/public/terrain/18/429287/176934.terrain differ diff --git a/public/terrain/18/429287/176935.terrain b/public/terrain/18/429287/176935.terrain new file mode 100644 index 000000000..ee3d7d97d Binary files /dev/null and b/public/terrain/18/429287/176935.terrain differ diff --git a/public/terrain/18/429287/176936.terrain b/public/terrain/18/429287/176936.terrain new file mode 100644 index 000000000..ed44c9a28 Binary files /dev/null and b/public/terrain/18/429287/176936.terrain differ diff --git a/public/terrain/18/429287/176937.terrain b/public/terrain/18/429287/176937.terrain new file mode 100644 index 000000000..9c8494c91 Binary files /dev/null and b/public/terrain/18/429287/176937.terrain differ diff --git a/public/terrain/18/429287/176938.terrain b/public/terrain/18/429287/176938.terrain new file mode 100644 index 000000000..eee5f49ef Binary files /dev/null and b/public/terrain/18/429287/176938.terrain differ diff --git a/public/terrain/18/429287/176939.terrain b/public/terrain/18/429287/176939.terrain new file mode 100644 index 000000000..bc7f19473 Binary files /dev/null and b/public/terrain/18/429287/176939.terrain differ diff --git a/public/terrain/18/429287/176940.terrain b/public/terrain/18/429287/176940.terrain new file mode 100644 index 000000000..73149e3aa Binary files /dev/null and b/public/terrain/18/429287/176940.terrain differ diff --git a/public/terrain/18/429287/176941.terrain b/public/terrain/18/429287/176941.terrain new file mode 100644 index 000000000..8111b2b7e Binary files /dev/null and b/public/terrain/18/429287/176941.terrain differ diff --git a/public/terrain/18/429287/176942.terrain b/public/terrain/18/429287/176942.terrain new file mode 100644 index 000000000..36094547f Binary files /dev/null and b/public/terrain/18/429287/176942.terrain differ diff --git a/public/terrain/18/429287/176943.terrain b/public/terrain/18/429287/176943.terrain new file mode 100644 index 000000000..b798f8291 Binary files /dev/null and b/public/terrain/18/429287/176943.terrain differ diff --git a/public/terrain/18/429287/176944.terrain b/public/terrain/18/429287/176944.terrain new file mode 100644 index 000000000..7e199701d Binary files /dev/null and b/public/terrain/18/429287/176944.terrain differ diff --git a/public/terrain/18/429287/176945.terrain b/public/terrain/18/429287/176945.terrain new file mode 100644 index 000000000..df531723e Binary files /dev/null and b/public/terrain/18/429287/176945.terrain differ diff --git a/public/terrain/18/429287/176946.terrain b/public/terrain/18/429287/176946.terrain new file mode 100644 index 000000000..9d453725a Binary files /dev/null and b/public/terrain/18/429287/176946.terrain differ diff --git a/public/terrain/18/429287/176947.terrain b/public/terrain/18/429287/176947.terrain new file mode 100644 index 000000000..3ed8ebf78 Binary files /dev/null and b/public/terrain/18/429287/176947.terrain differ diff --git a/public/terrain/18/429287/176948.terrain b/public/terrain/18/429287/176948.terrain new file mode 100644 index 000000000..e69bd9898 Binary files /dev/null and b/public/terrain/18/429287/176948.terrain differ diff --git a/public/terrain/18/429287/176949.terrain b/public/terrain/18/429287/176949.terrain new file mode 100644 index 000000000..90fe9429b Binary files /dev/null and b/public/terrain/18/429287/176949.terrain differ diff --git a/public/terrain/18/429287/176950.terrain b/public/terrain/18/429287/176950.terrain new file mode 100644 index 000000000..421b6c1f0 Binary files /dev/null and b/public/terrain/18/429287/176950.terrain differ diff --git a/public/terrain/18/429287/176951.terrain b/public/terrain/18/429287/176951.terrain new file mode 100644 index 000000000..1c93c565c Binary files /dev/null and b/public/terrain/18/429287/176951.terrain differ diff --git a/public/terrain/18/429287/176952.terrain b/public/terrain/18/429287/176952.terrain new file mode 100644 index 000000000..6f7780066 Binary files /dev/null and b/public/terrain/18/429287/176952.terrain differ diff --git a/public/terrain/18/429287/176953.terrain b/public/terrain/18/429287/176953.terrain new file mode 100644 index 000000000..c2c549d48 Binary files /dev/null and b/public/terrain/18/429287/176953.terrain differ diff --git a/public/terrain/18/429287/176954.terrain b/public/terrain/18/429287/176954.terrain new file mode 100644 index 000000000..252f3f5b2 Binary files /dev/null and b/public/terrain/18/429287/176954.terrain differ diff --git a/public/terrain/18/429287/176955.terrain b/public/terrain/18/429287/176955.terrain new file mode 100644 index 000000000..52a1cfb43 Binary files /dev/null and b/public/terrain/18/429287/176955.terrain differ diff --git a/public/terrain/18/429287/176956.terrain b/public/terrain/18/429287/176956.terrain new file mode 100644 index 000000000..e25f34cc0 Binary files /dev/null and b/public/terrain/18/429287/176956.terrain differ diff --git a/public/terrain/18/429287/176957.terrain b/public/terrain/18/429287/176957.terrain new file mode 100644 index 000000000..3a642e21e Binary files /dev/null and b/public/terrain/18/429287/176957.terrain differ diff --git a/public/terrain/18/429287/176958.terrain b/public/terrain/18/429287/176958.terrain new file mode 100644 index 000000000..5225cf18c Binary files /dev/null and b/public/terrain/18/429287/176958.terrain differ diff --git a/public/terrain/18/429287/176959.terrain b/public/terrain/18/429287/176959.terrain new file mode 100644 index 000000000..5bb4941b7 Binary files /dev/null and b/public/terrain/18/429287/176959.terrain differ diff --git a/public/terrain/18/429287/176960.terrain b/public/terrain/18/429287/176960.terrain new file mode 100644 index 000000000..590eee02a Binary files /dev/null and b/public/terrain/18/429287/176960.terrain differ diff --git a/public/terrain/18/429287/176961.terrain b/public/terrain/18/429287/176961.terrain new file mode 100644 index 000000000..03542e38f Binary files /dev/null and b/public/terrain/18/429287/176961.terrain differ diff --git a/public/terrain/18/429287/176962.terrain b/public/terrain/18/429287/176962.terrain new file mode 100644 index 000000000..dd1e0b11b Binary files /dev/null and b/public/terrain/18/429287/176962.terrain differ diff --git a/public/terrain/18/429287/176963.terrain b/public/terrain/18/429287/176963.terrain new file mode 100644 index 000000000..383f75737 Binary files /dev/null and b/public/terrain/18/429287/176963.terrain differ diff --git a/public/terrain/18/429287/176964.terrain b/public/terrain/18/429287/176964.terrain new file mode 100644 index 000000000..7284e212b Binary files /dev/null and b/public/terrain/18/429287/176964.terrain differ diff --git a/public/terrain/18/429287/176965.terrain b/public/terrain/18/429287/176965.terrain new file mode 100644 index 000000000..7d8e40b6d Binary files /dev/null and b/public/terrain/18/429287/176965.terrain differ diff --git a/public/terrain/18/429287/176966.terrain b/public/terrain/18/429287/176966.terrain new file mode 100644 index 000000000..f0d5580ce Binary files /dev/null and b/public/terrain/18/429287/176966.terrain differ diff --git a/public/terrain/18/429287/176967.terrain b/public/terrain/18/429287/176967.terrain new file mode 100644 index 000000000..23c6d296f Binary files /dev/null and b/public/terrain/18/429287/176967.terrain differ diff --git a/public/terrain/18/429287/176968.terrain b/public/terrain/18/429287/176968.terrain new file mode 100644 index 000000000..5386220d1 Binary files /dev/null and b/public/terrain/18/429287/176968.terrain differ diff --git a/public/terrain/18/429287/176969.terrain b/public/terrain/18/429287/176969.terrain new file mode 100644 index 000000000..e11449f3e Binary files /dev/null and b/public/terrain/18/429287/176969.terrain differ diff --git a/public/terrain/18/429287/176970.terrain b/public/terrain/18/429287/176970.terrain new file mode 100644 index 000000000..7e6b33d8c Binary files /dev/null and b/public/terrain/18/429287/176970.terrain differ diff --git a/public/terrain/18/429287/176971.terrain b/public/terrain/18/429287/176971.terrain new file mode 100644 index 000000000..c4bae8f7d Binary files /dev/null and b/public/terrain/18/429287/176971.terrain differ diff --git a/public/terrain/18/429287/176972.terrain b/public/terrain/18/429287/176972.terrain new file mode 100644 index 000000000..54d066c28 Binary files /dev/null and b/public/terrain/18/429287/176972.terrain differ diff --git a/public/terrain/18/429287/176973.terrain b/public/terrain/18/429287/176973.terrain new file mode 100644 index 000000000..631ab1643 Binary files /dev/null and b/public/terrain/18/429287/176973.terrain differ diff --git a/public/terrain/18/429287/176974.terrain b/public/terrain/18/429287/176974.terrain new file mode 100644 index 000000000..6869c4d0b Binary files /dev/null and b/public/terrain/18/429287/176974.terrain differ diff --git a/public/terrain/18/429287/176975.terrain b/public/terrain/18/429287/176975.terrain new file mode 100644 index 000000000..df4e9594f Binary files /dev/null and b/public/terrain/18/429287/176975.terrain differ diff --git a/public/terrain/18/429287/176976.terrain b/public/terrain/18/429287/176976.terrain new file mode 100644 index 000000000..c88b7f2aa Binary files /dev/null and b/public/terrain/18/429287/176976.terrain differ diff --git a/public/terrain/18/429287/176977.terrain b/public/terrain/18/429287/176977.terrain new file mode 100644 index 000000000..6fcd27b83 Binary files /dev/null and b/public/terrain/18/429287/176977.terrain differ diff --git a/public/terrain/18/429287/176978.terrain b/public/terrain/18/429287/176978.terrain new file mode 100644 index 000000000..cceb1e5c4 Binary files /dev/null and b/public/terrain/18/429287/176978.terrain differ diff --git a/public/terrain/18/429287/176979.terrain b/public/terrain/18/429287/176979.terrain new file mode 100644 index 000000000..dc30ee48d Binary files /dev/null and b/public/terrain/18/429287/176979.terrain differ diff --git a/public/terrain/18/429287/176980.terrain b/public/terrain/18/429287/176980.terrain new file mode 100644 index 000000000..03d9f964d Binary files /dev/null and b/public/terrain/18/429287/176980.terrain differ diff --git a/public/terrain/18/429287/176981.terrain b/public/terrain/18/429287/176981.terrain new file mode 100644 index 000000000..724bb0382 Binary files /dev/null and b/public/terrain/18/429287/176981.terrain differ diff --git a/public/terrain/18/429287/176982.terrain b/public/terrain/18/429287/176982.terrain new file mode 100644 index 000000000..4ef9e5f71 Binary files /dev/null and b/public/terrain/18/429287/176982.terrain differ diff --git a/public/terrain/18/429287/176983.terrain b/public/terrain/18/429287/176983.terrain new file mode 100644 index 000000000..43ce20aa8 Binary files /dev/null and b/public/terrain/18/429287/176983.terrain differ diff --git a/public/terrain/18/429287/176984.terrain b/public/terrain/18/429287/176984.terrain new file mode 100644 index 000000000..28c6c06fb Binary files /dev/null and b/public/terrain/18/429287/176984.terrain differ diff --git a/public/terrain/18/429287/176985.terrain b/public/terrain/18/429287/176985.terrain new file mode 100644 index 000000000..b7f2bba4a Binary files /dev/null and b/public/terrain/18/429287/176985.terrain differ diff --git a/public/terrain/18/429287/176986.terrain b/public/terrain/18/429287/176986.terrain new file mode 100644 index 000000000..eec329a70 Binary files /dev/null and b/public/terrain/18/429287/176986.terrain differ diff --git a/public/terrain/18/429287/176987.terrain b/public/terrain/18/429287/176987.terrain new file mode 100644 index 000000000..4dc29d388 Binary files /dev/null and b/public/terrain/18/429287/176987.terrain differ diff --git a/public/terrain/18/429287/176988.terrain b/public/terrain/18/429287/176988.terrain new file mode 100644 index 000000000..29ff26437 Binary files /dev/null and b/public/terrain/18/429287/176988.terrain differ diff --git a/public/terrain/18/429287/176989.terrain b/public/terrain/18/429287/176989.terrain new file mode 100644 index 000000000..5356d8c2d Binary files /dev/null and b/public/terrain/18/429287/176989.terrain differ diff --git a/public/terrain/18/429287/176990.terrain b/public/terrain/18/429287/176990.terrain new file mode 100644 index 000000000..52816b17e Binary files /dev/null and b/public/terrain/18/429287/176990.terrain differ diff --git a/public/terrain/18/429287/176991.terrain b/public/terrain/18/429287/176991.terrain new file mode 100644 index 000000000..17c1d63b3 Binary files /dev/null and b/public/terrain/18/429287/176991.terrain differ diff --git a/public/terrain/18/429287/176992.terrain b/public/terrain/18/429287/176992.terrain new file mode 100644 index 000000000..c40bd3a43 Binary files /dev/null and b/public/terrain/18/429287/176992.terrain differ diff --git a/public/terrain/18/429287/176993.terrain b/public/terrain/18/429287/176993.terrain new file mode 100644 index 000000000..9c47f89bc Binary files /dev/null and b/public/terrain/18/429287/176993.terrain differ diff --git a/public/terrain/18/429287/176994.terrain b/public/terrain/18/429287/176994.terrain new file mode 100644 index 000000000..f4bde7183 Binary files /dev/null and b/public/terrain/18/429287/176994.terrain differ diff --git a/public/terrain/18/429287/176995.terrain b/public/terrain/18/429287/176995.terrain new file mode 100644 index 000000000..a7e203981 Binary files /dev/null and b/public/terrain/18/429287/176995.terrain differ diff --git a/public/terrain/18/429287/176996.terrain b/public/terrain/18/429287/176996.terrain new file mode 100644 index 000000000..11cb4c84c Binary files /dev/null and b/public/terrain/18/429287/176996.terrain differ diff --git a/public/terrain/18/429287/176997.terrain b/public/terrain/18/429287/176997.terrain new file mode 100644 index 000000000..d10f56381 Binary files /dev/null and b/public/terrain/18/429287/176997.terrain differ diff --git a/public/terrain/18/429287/176998.terrain b/public/terrain/18/429287/176998.terrain new file mode 100644 index 000000000..ec9424876 Binary files /dev/null and b/public/terrain/18/429287/176998.terrain differ diff --git a/public/terrain/18/429287/176999.terrain b/public/terrain/18/429287/176999.terrain new file mode 100644 index 000000000..a030a7a65 Binary files /dev/null and b/public/terrain/18/429287/176999.terrain differ diff --git a/public/terrain/18/429287/177000.terrain b/public/terrain/18/429287/177000.terrain new file mode 100644 index 000000000..333db8fa1 Binary files /dev/null and b/public/terrain/18/429287/177000.terrain differ diff --git a/public/terrain/18/429287/177001.terrain b/public/terrain/18/429287/177001.terrain new file mode 100644 index 000000000..101e242fb Binary files /dev/null and b/public/terrain/18/429287/177001.terrain differ diff --git a/public/terrain/18/429287/177002.terrain b/public/terrain/18/429287/177002.terrain new file mode 100644 index 000000000..006798bc3 Binary files /dev/null and b/public/terrain/18/429287/177002.terrain differ diff --git a/public/terrain/18/429287/177003.terrain b/public/terrain/18/429287/177003.terrain new file mode 100644 index 000000000..5acfca5fb Binary files /dev/null and b/public/terrain/18/429287/177003.terrain differ diff --git a/public/terrain/18/429287/177004.terrain b/public/terrain/18/429287/177004.terrain new file mode 100644 index 000000000..51dfb8a38 Binary files /dev/null and b/public/terrain/18/429287/177004.terrain differ diff --git a/public/terrain/18/429287/177005.terrain b/public/terrain/18/429287/177005.terrain new file mode 100644 index 000000000..e1f6202dc Binary files /dev/null and b/public/terrain/18/429287/177005.terrain differ diff --git a/public/terrain/18/429287/177006.terrain b/public/terrain/18/429287/177006.terrain new file mode 100644 index 000000000..c7aa17ac4 Binary files /dev/null and b/public/terrain/18/429287/177006.terrain differ diff --git a/public/terrain/18/429287/177007.terrain b/public/terrain/18/429287/177007.terrain new file mode 100644 index 000000000..89bfb432d Binary files /dev/null and b/public/terrain/18/429287/177007.terrain differ diff --git a/public/terrain/18/429287/177008.terrain b/public/terrain/18/429287/177008.terrain new file mode 100644 index 000000000..369c60593 Binary files /dev/null and b/public/terrain/18/429287/177008.terrain differ diff --git a/public/terrain/18/429287/177009.terrain b/public/terrain/18/429287/177009.terrain new file mode 100644 index 000000000..d8d90f28f Binary files /dev/null and b/public/terrain/18/429287/177009.terrain differ diff --git a/public/terrain/18/429287/177010.terrain b/public/terrain/18/429287/177010.terrain new file mode 100644 index 000000000..5687c3402 Binary files /dev/null and b/public/terrain/18/429287/177010.terrain differ diff --git a/public/terrain/18/429287/177011.terrain b/public/terrain/18/429287/177011.terrain new file mode 100644 index 000000000..39ee3d95e Binary files /dev/null and b/public/terrain/18/429287/177011.terrain differ diff --git a/public/terrain/18/429287/177012.terrain b/public/terrain/18/429287/177012.terrain new file mode 100644 index 000000000..5d0e806a2 Binary files /dev/null and b/public/terrain/18/429287/177012.terrain differ diff --git a/public/terrain/18/429287/177013.terrain b/public/terrain/18/429287/177013.terrain new file mode 100644 index 000000000..aaad08297 Binary files /dev/null and b/public/terrain/18/429287/177013.terrain differ diff --git a/public/terrain/18/429287/177014.terrain b/public/terrain/18/429287/177014.terrain new file mode 100644 index 000000000..af531b1ea Binary files /dev/null and b/public/terrain/18/429287/177014.terrain differ diff --git a/public/terrain/18/429287/177015.terrain b/public/terrain/18/429287/177015.terrain new file mode 100644 index 000000000..ff6f045d8 Binary files /dev/null and b/public/terrain/18/429287/177015.terrain differ diff --git a/public/terrain/18/429287/177016.terrain b/public/terrain/18/429287/177016.terrain new file mode 100644 index 000000000..ab9ed30ac Binary files /dev/null and b/public/terrain/18/429287/177016.terrain differ diff --git a/public/terrain/18/429287/177017.terrain b/public/terrain/18/429287/177017.terrain new file mode 100644 index 000000000..5058ba6b3 Binary files /dev/null and b/public/terrain/18/429287/177017.terrain differ diff --git a/public/terrain/18/429287/177018.terrain b/public/terrain/18/429287/177018.terrain new file mode 100644 index 000000000..9a9205ec1 Binary files /dev/null and b/public/terrain/18/429287/177018.terrain differ diff --git a/public/terrain/18/429287/177019.terrain b/public/terrain/18/429287/177019.terrain new file mode 100644 index 000000000..2a047e481 Binary files /dev/null and b/public/terrain/18/429287/177019.terrain differ diff --git a/public/terrain/18/429287/177020.terrain b/public/terrain/18/429287/177020.terrain new file mode 100644 index 000000000..0e1acd004 Binary files /dev/null and b/public/terrain/18/429287/177020.terrain differ diff --git a/public/terrain/18/429287/177021.terrain b/public/terrain/18/429287/177021.terrain new file mode 100644 index 000000000..fbde9adea Binary files /dev/null and b/public/terrain/18/429287/177021.terrain differ diff --git a/public/terrain/18/429287/177022.terrain b/public/terrain/18/429287/177022.terrain new file mode 100644 index 000000000..f9cc4c30c Binary files /dev/null and b/public/terrain/18/429287/177022.terrain differ diff --git a/public/terrain/18/429287/177023.terrain b/public/terrain/18/429287/177023.terrain new file mode 100644 index 000000000..e7265e88a Binary files /dev/null and b/public/terrain/18/429287/177023.terrain differ diff --git a/public/terrain/18/429287/177024.terrain b/public/terrain/18/429287/177024.terrain new file mode 100644 index 000000000..0b9274131 Binary files /dev/null and b/public/terrain/18/429287/177024.terrain differ diff --git a/public/terrain/18/429287/177025.terrain b/public/terrain/18/429287/177025.terrain new file mode 100644 index 000000000..aa815b44d Binary files /dev/null and b/public/terrain/18/429287/177025.terrain differ diff --git a/public/terrain/18/429287/177026.terrain b/public/terrain/18/429287/177026.terrain new file mode 100644 index 000000000..7393486f4 Binary files /dev/null and b/public/terrain/18/429287/177026.terrain differ diff --git a/public/terrain/18/429287/177027.terrain b/public/terrain/18/429287/177027.terrain new file mode 100644 index 000000000..ea7d159be Binary files /dev/null and b/public/terrain/18/429287/177027.terrain differ diff --git a/public/terrain/18/429287/177028.terrain b/public/terrain/18/429287/177028.terrain new file mode 100644 index 000000000..6c7b50de4 Binary files /dev/null and b/public/terrain/18/429287/177028.terrain differ diff --git a/public/terrain/18/429287/177029.terrain b/public/terrain/18/429287/177029.terrain new file mode 100644 index 000000000..9a058c0db Binary files /dev/null and b/public/terrain/18/429287/177029.terrain differ diff --git a/public/terrain/18/429288/176871.terrain b/public/terrain/18/429288/176871.terrain new file mode 100644 index 000000000..cc77cce1b Binary files /dev/null and b/public/terrain/18/429288/176871.terrain differ diff --git a/public/terrain/18/429288/176872.terrain b/public/terrain/18/429288/176872.terrain new file mode 100644 index 000000000..e5a59a495 Binary files /dev/null and b/public/terrain/18/429288/176872.terrain differ diff --git a/public/terrain/18/429288/176873.terrain b/public/terrain/18/429288/176873.terrain new file mode 100644 index 000000000..84f13ce54 Binary files /dev/null and b/public/terrain/18/429288/176873.terrain differ diff --git a/public/terrain/18/429288/176874.terrain b/public/terrain/18/429288/176874.terrain new file mode 100644 index 000000000..89e08db8a Binary files /dev/null and b/public/terrain/18/429288/176874.terrain differ diff --git a/public/terrain/18/429288/176875.terrain b/public/terrain/18/429288/176875.terrain new file mode 100644 index 000000000..9068caf5a Binary files /dev/null and b/public/terrain/18/429288/176875.terrain differ diff --git a/public/terrain/18/429288/176876.terrain b/public/terrain/18/429288/176876.terrain new file mode 100644 index 000000000..3571d1b27 Binary files /dev/null and b/public/terrain/18/429288/176876.terrain differ diff --git a/public/terrain/18/429288/176877.terrain b/public/terrain/18/429288/176877.terrain new file mode 100644 index 000000000..33981c6f3 Binary files /dev/null and b/public/terrain/18/429288/176877.terrain differ diff --git a/public/terrain/18/429288/176878.terrain b/public/terrain/18/429288/176878.terrain new file mode 100644 index 000000000..80abd6ab5 Binary files /dev/null and b/public/terrain/18/429288/176878.terrain differ diff --git a/public/terrain/18/429288/176879.terrain b/public/terrain/18/429288/176879.terrain new file mode 100644 index 000000000..b311bece6 Binary files /dev/null and b/public/terrain/18/429288/176879.terrain differ diff --git a/public/terrain/18/429288/176880.terrain b/public/terrain/18/429288/176880.terrain new file mode 100644 index 000000000..fca0eb5f9 Binary files /dev/null and b/public/terrain/18/429288/176880.terrain differ diff --git a/public/terrain/18/429288/176881.terrain b/public/terrain/18/429288/176881.terrain new file mode 100644 index 000000000..ce65f46af Binary files /dev/null and b/public/terrain/18/429288/176881.terrain differ diff --git a/public/terrain/18/429288/176882.terrain b/public/terrain/18/429288/176882.terrain new file mode 100644 index 000000000..05223f6bc Binary files /dev/null and b/public/terrain/18/429288/176882.terrain differ diff --git a/public/terrain/18/429288/176883.terrain b/public/terrain/18/429288/176883.terrain new file mode 100644 index 000000000..90494e81c Binary files /dev/null and b/public/terrain/18/429288/176883.terrain differ diff --git a/public/terrain/18/429288/176884.terrain b/public/terrain/18/429288/176884.terrain new file mode 100644 index 000000000..21d426216 Binary files /dev/null and b/public/terrain/18/429288/176884.terrain differ diff --git a/public/terrain/18/429288/176885.terrain b/public/terrain/18/429288/176885.terrain new file mode 100644 index 000000000..da12ae163 Binary files /dev/null and b/public/terrain/18/429288/176885.terrain differ diff --git a/public/terrain/18/429288/176886.terrain b/public/terrain/18/429288/176886.terrain new file mode 100644 index 000000000..71d3014e8 Binary files /dev/null and b/public/terrain/18/429288/176886.terrain differ diff --git a/public/terrain/18/429288/176887.terrain b/public/terrain/18/429288/176887.terrain new file mode 100644 index 000000000..25193d209 Binary files /dev/null and b/public/terrain/18/429288/176887.terrain differ diff --git a/public/terrain/18/429288/176888.terrain b/public/terrain/18/429288/176888.terrain new file mode 100644 index 000000000..debdb375e Binary files /dev/null and b/public/terrain/18/429288/176888.terrain differ diff --git a/public/terrain/18/429288/176889.terrain b/public/terrain/18/429288/176889.terrain new file mode 100644 index 000000000..e517626ce Binary files /dev/null and b/public/terrain/18/429288/176889.terrain differ diff --git a/public/terrain/18/429288/176890.terrain b/public/terrain/18/429288/176890.terrain new file mode 100644 index 000000000..0c8b259ca Binary files /dev/null and b/public/terrain/18/429288/176890.terrain differ diff --git a/public/terrain/18/429288/176891.terrain b/public/terrain/18/429288/176891.terrain new file mode 100644 index 000000000..d119419e2 Binary files /dev/null and b/public/terrain/18/429288/176891.terrain differ diff --git a/public/terrain/18/429288/176892.terrain b/public/terrain/18/429288/176892.terrain new file mode 100644 index 000000000..7a8baba7d Binary files /dev/null and b/public/terrain/18/429288/176892.terrain differ diff --git a/public/terrain/18/429288/176893.terrain b/public/terrain/18/429288/176893.terrain new file mode 100644 index 000000000..5288604e3 Binary files /dev/null and b/public/terrain/18/429288/176893.terrain differ diff --git a/public/terrain/18/429288/176894.terrain b/public/terrain/18/429288/176894.terrain new file mode 100644 index 000000000..9edaf9998 Binary files /dev/null and b/public/terrain/18/429288/176894.terrain differ diff --git a/public/terrain/18/429288/176895.terrain b/public/terrain/18/429288/176895.terrain new file mode 100644 index 000000000..5d1e67760 Binary files /dev/null and b/public/terrain/18/429288/176895.terrain differ diff --git a/public/terrain/18/429288/176896.terrain b/public/terrain/18/429288/176896.terrain new file mode 100644 index 000000000..4fdae20c8 Binary files /dev/null and b/public/terrain/18/429288/176896.terrain differ diff --git a/public/terrain/18/429288/176897.terrain b/public/terrain/18/429288/176897.terrain new file mode 100644 index 000000000..6bf565336 Binary files /dev/null and b/public/terrain/18/429288/176897.terrain differ diff --git a/public/terrain/18/429288/176898.terrain b/public/terrain/18/429288/176898.terrain new file mode 100644 index 000000000..b45d832bb Binary files /dev/null and b/public/terrain/18/429288/176898.terrain differ diff --git a/public/terrain/18/429288/176899.terrain b/public/terrain/18/429288/176899.terrain new file mode 100644 index 000000000..252a168b2 Binary files /dev/null and b/public/terrain/18/429288/176899.terrain differ diff --git a/public/terrain/18/429288/176900.terrain b/public/terrain/18/429288/176900.terrain new file mode 100644 index 000000000..af58c02bd Binary files /dev/null and b/public/terrain/18/429288/176900.terrain differ diff --git a/public/terrain/18/429288/176901.terrain b/public/terrain/18/429288/176901.terrain new file mode 100644 index 000000000..56ddfdcbf Binary files /dev/null and b/public/terrain/18/429288/176901.terrain differ diff --git a/public/terrain/18/429288/176902.terrain b/public/terrain/18/429288/176902.terrain new file mode 100644 index 000000000..bbb2c79c6 Binary files /dev/null and b/public/terrain/18/429288/176902.terrain differ diff --git a/public/terrain/18/429288/176903.terrain b/public/terrain/18/429288/176903.terrain new file mode 100644 index 000000000..f4fa8eb94 Binary files /dev/null and b/public/terrain/18/429288/176903.terrain differ diff --git a/public/terrain/18/429288/176904.terrain b/public/terrain/18/429288/176904.terrain new file mode 100644 index 000000000..aed91377b Binary files /dev/null and b/public/terrain/18/429288/176904.terrain differ diff --git a/public/terrain/18/429288/176905.terrain b/public/terrain/18/429288/176905.terrain new file mode 100644 index 000000000..4facc00b8 Binary files /dev/null and b/public/terrain/18/429288/176905.terrain differ diff --git a/public/terrain/18/429288/176906.terrain b/public/terrain/18/429288/176906.terrain new file mode 100644 index 000000000..6cc9fcf2d Binary files /dev/null and b/public/terrain/18/429288/176906.terrain differ diff --git a/public/terrain/18/429288/176907.terrain b/public/terrain/18/429288/176907.terrain new file mode 100644 index 000000000..c79d1fb50 Binary files /dev/null and b/public/terrain/18/429288/176907.terrain differ diff --git a/public/terrain/18/429288/176908.terrain b/public/terrain/18/429288/176908.terrain new file mode 100644 index 000000000..77268564f Binary files /dev/null and b/public/terrain/18/429288/176908.terrain differ diff --git a/public/terrain/18/429288/176909.terrain b/public/terrain/18/429288/176909.terrain new file mode 100644 index 000000000..2ec81bf9e Binary files /dev/null and b/public/terrain/18/429288/176909.terrain differ diff --git a/public/terrain/18/429288/176910.terrain b/public/terrain/18/429288/176910.terrain new file mode 100644 index 000000000..dd26d2cea Binary files /dev/null and b/public/terrain/18/429288/176910.terrain differ diff --git a/public/terrain/18/429288/176911.terrain b/public/terrain/18/429288/176911.terrain new file mode 100644 index 000000000..43c71614e Binary files /dev/null and b/public/terrain/18/429288/176911.terrain differ diff --git a/public/terrain/18/429288/176912.terrain b/public/terrain/18/429288/176912.terrain new file mode 100644 index 000000000..226c99998 Binary files /dev/null and b/public/terrain/18/429288/176912.terrain differ diff --git a/public/terrain/18/429288/176913.terrain b/public/terrain/18/429288/176913.terrain new file mode 100644 index 000000000..1f7e493b2 Binary files /dev/null and b/public/terrain/18/429288/176913.terrain differ diff --git a/public/terrain/18/429288/176914.terrain b/public/terrain/18/429288/176914.terrain new file mode 100644 index 000000000..5c7aaa107 Binary files /dev/null and b/public/terrain/18/429288/176914.terrain differ diff --git a/public/terrain/18/429288/176915.terrain b/public/terrain/18/429288/176915.terrain new file mode 100644 index 000000000..6633354bf Binary files /dev/null and b/public/terrain/18/429288/176915.terrain differ diff --git a/public/terrain/18/429288/176916.terrain b/public/terrain/18/429288/176916.terrain new file mode 100644 index 000000000..17f0b4eb4 Binary files /dev/null and b/public/terrain/18/429288/176916.terrain differ diff --git a/public/terrain/18/429288/176917.terrain b/public/terrain/18/429288/176917.terrain new file mode 100644 index 000000000..3f64e975c Binary files /dev/null and b/public/terrain/18/429288/176917.terrain differ diff --git a/public/terrain/18/429288/176918.terrain b/public/terrain/18/429288/176918.terrain new file mode 100644 index 000000000..53f435d83 Binary files /dev/null and b/public/terrain/18/429288/176918.terrain differ diff --git a/public/terrain/18/429288/176919.terrain b/public/terrain/18/429288/176919.terrain new file mode 100644 index 000000000..c65f49e2f Binary files /dev/null and b/public/terrain/18/429288/176919.terrain differ diff --git a/public/terrain/18/429288/176920.terrain b/public/terrain/18/429288/176920.terrain new file mode 100644 index 000000000..af81b62cc Binary files /dev/null and b/public/terrain/18/429288/176920.terrain differ diff --git a/public/terrain/18/429288/176921.terrain b/public/terrain/18/429288/176921.terrain new file mode 100644 index 000000000..064844ad8 Binary files /dev/null and b/public/terrain/18/429288/176921.terrain differ diff --git a/public/terrain/18/429288/176922.terrain b/public/terrain/18/429288/176922.terrain new file mode 100644 index 000000000..5776a75c0 Binary files /dev/null and b/public/terrain/18/429288/176922.terrain differ diff --git a/public/terrain/18/429288/176923.terrain b/public/terrain/18/429288/176923.terrain new file mode 100644 index 000000000..ed998f2f6 Binary files /dev/null and b/public/terrain/18/429288/176923.terrain differ diff --git a/public/terrain/18/429288/176924.terrain b/public/terrain/18/429288/176924.terrain new file mode 100644 index 000000000..723c0b5a1 Binary files /dev/null and b/public/terrain/18/429288/176924.terrain differ diff --git a/public/terrain/18/429288/176925.terrain b/public/terrain/18/429288/176925.terrain new file mode 100644 index 000000000..d5de1d31d Binary files /dev/null and b/public/terrain/18/429288/176925.terrain differ diff --git a/public/terrain/18/429288/176926.terrain b/public/terrain/18/429288/176926.terrain new file mode 100644 index 000000000..ec4b46649 Binary files /dev/null and b/public/terrain/18/429288/176926.terrain differ diff --git a/public/terrain/18/429288/176927.terrain b/public/terrain/18/429288/176927.terrain new file mode 100644 index 000000000..645fce002 Binary files /dev/null and b/public/terrain/18/429288/176927.terrain differ diff --git a/public/terrain/18/429288/176928.terrain b/public/terrain/18/429288/176928.terrain new file mode 100644 index 000000000..9390dbf87 Binary files /dev/null and b/public/terrain/18/429288/176928.terrain differ diff --git a/public/terrain/18/429288/176929.terrain b/public/terrain/18/429288/176929.terrain new file mode 100644 index 000000000..72132455e Binary files /dev/null and b/public/terrain/18/429288/176929.terrain differ diff --git a/public/terrain/18/429288/176930.terrain b/public/terrain/18/429288/176930.terrain new file mode 100644 index 000000000..e21bd7f67 Binary files /dev/null and b/public/terrain/18/429288/176930.terrain differ diff --git a/public/terrain/18/429288/176931.terrain b/public/terrain/18/429288/176931.terrain new file mode 100644 index 000000000..fe2e09a17 Binary files /dev/null and b/public/terrain/18/429288/176931.terrain differ diff --git a/public/terrain/18/429288/176932.terrain b/public/terrain/18/429288/176932.terrain new file mode 100644 index 000000000..22a897f90 Binary files /dev/null and b/public/terrain/18/429288/176932.terrain differ diff --git a/public/terrain/18/429288/176933.terrain b/public/terrain/18/429288/176933.terrain new file mode 100644 index 000000000..c074baf11 Binary files /dev/null and b/public/terrain/18/429288/176933.terrain differ diff --git a/public/terrain/18/429288/176934.terrain b/public/terrain/18/429288/176934.terrain new file mode 100644 index 000000000..35fd545a3 Binary files /dev/null and b/public/terrain/18/429288/176934.terrain differ diff --git a/public/terrain/18/429288/176935.terrain b/public/terrain/18/429288/176935.terrain new file mode 100644 index 000000000..0987e2e66 Binary files /dev/null and b/public/terrain/18/429288/176935.terrain differ diff --git a/public/terrain/18/429288/176936.terrain b/public/terrain/18/429288/176936.terrain new file mode 100644 index 000000000..2c4a1536c Binary files /dev/null and b/public/terrain/18/429288/176936.terrain differ diff --git a/public/terrain/18/429288/176937.terrain b/public/terrain/18/429288/176937.terrain new file mode 100644 index 000000000..45a07cdf6 Binary files /dev/null and b/public/terrain/18/429288/176937.terrain differ diff --git a/public/terrain/18/429288/176938.terrain b/public/terrain/18/429288/176938.terrain new file mode 100644 index 000000000..76ca40533 Binary files /dev/null and b/public/terrain/18/429288/176938.terrain differ diff --git a/public/terrain/18/429288/176939.terrain b/public/terrain/18/429288/176939.terrain new file mode 100644 index 000000000..42c5018b4 Binary files /dev/null and b/public/terrain/18/429288/176939.terrain differ diff --git a/public/terrain/18/429288/176940.terrain b/public/terrain/18/429288/176940.terrain new file mode 100644 index 000000000..8634c6771 Binary files /dev/null and b/public/terrain/18/429288/176940.terrain differ diff --git a/public/terrain/18/429288/176941.terrain b/public/terrain/18/429288/176941.terrain new file mode 100644 index 000000000..659f69fa5 Binary files /dev/null and b/public/terrain/18/429288/176941.terrain differ diff --git a/public/terrain/18/429288/176942.terrain b/public/terrain/18/429288/176942.terrain new file mode 100644 index 000000000..61795afbb Binary files /dev/null and b/public/terrain/18/429288/176942.terrain differ diff --git a/public/terrain/18/429288/176943.terrain b/public/terrain/18/429288/176943.terrain new file mode 100644 index 000000000..c18e62e5a Binary files /dev/null and b/public/terrain/18/429288/176943.terrain differ diff --git a/public/terrain/18/429288/176944.terrain b/public/terrain/18/429288/176944.terrain new file mode 100644 index 000000000..33ed66beb Binary files /dev/null and b/public/terrain/18/429288/176944.terrain differ diff --git a/public/terrain/18/429288/176945.terrain b/public/terrain/18/429288/176945.terrain new file mode 100644 index 000000000..f04776916 Binary files /dev/null and b/public/terrain/18/429288/176945.terrain differ diff --git a/public/terrain/18/429288/176946.terrain b/public/terrain/18/429288/176946.terrain new file mode 100644 index 000000000..d2d6d2a69 Binary files /dev/null and b/public/terrain/18/429288/176946.terrain differ diff --git a/public/terrain/18/429288/176947.terrain b/public/terrain/18/429288/176947.terrain new file mode 100644 index 000000000..2b0749c0d Binary files /dev/null and b/public/terrain/18/429288/176947.terrain differ diff --git a/public/terrain/18/429288/176948.terrain b/public/terrain/18/429288/176948.terrain new file mode 100644 index 000000000..2fc7b4839 Binary files /dev/null and b/public/terrain/18/429288/176948.terrain differ diff --git a/public/terrain/18/429288/176949.terrain b/public/terrain/18/429288/176949.terrain new file mode 100644 index 000000000..3dd0e3b7c Binary files /dev/null and b/public/terrain/18/429288/176949.terrain differ diff --git a/public/terrain/18/429288/176950.terrain b/public/terrain/18/429288/176950.terrain new file mode 100644 index 000000000..ae02e7249 Binary files /dev/null and b/public/terrain/18/429288/176950.terrain differ diff --git a/public/terrain/18/429288/176951.terrain b/public/terrain/18/429288/176951.terrain new file mode 100644 index 000000000..48ae81169 Binary files /dev/null and b/public/terrain/18/429288/176951.terrain differ diff --git a/public/terrain/18/429288/176952.terrain b/public/terrain/18/429288/176952.terrain new file mode 100644 index 000000000..d9def9c1f Binary files /dev/null and b/public/terrain/18/429288/176952.terrain differ diff --git a/public/terrain/18/429288/176953.terrain b/public/terrain/18/429288/176953.terrain new file mode 100644 index 000000000..8954c4ccc Binary files /dev/null and b/public/terrain/18/429288/176953.terrain differ diff --git a/public/terrain/18/429288/176954.terrain b/public/terrain/18/429288/176954.terrain new file mode 100644 index 000000000..cf5ef821d Binary files /dev/null and b/public/terrain/18/429288/176954.terrain differ diff --git a/public/terrain/18/429288/176955.terrain b/public/terrain/18/429288/176955.terrain new file mode 100644 index 000000000..5ded1804f Binary files /dev/null and b/public/terrain/18/429288/176955.terrain differ diff --git a/public/terrain/18/429288/176956.terrain b/public/terrain/18/429288/176956.terrain new file mode 100644 index 000000000..2e8170ead Binary files /dev/null and b/public/terrain/18/429288/176956.terrain differ diff --git a/public/terrain/18/429288/176957.terrain b/public/terrain/18/429288/176957.terrain new file mode 100644 index 000000000..604abbabd Binary files /dev/null and b/public/terrain/18/429288/176957.terrain differ diff --git a/public/terrain/18/429288/176958.terrain b/public/terrain/18/429288/176958.terrain new file mode 100644 index 000000000..36e9595b8 Binary files /dev/null and b/public/terrain/18/429288/176958.terrain differ diff --git a/public/terrain/18/429288/176959.terrain b/public/terrain/18/429288/176959.terrain new file mode 100644 index 000000000..2a1287486 Binary files /dev/null and b/public/terrain/18/429288/176959.terrain differ diff --git a/public/terrain/18/429288/176960.terrain b/public/terrain/18/429288/176960.terrain new file mode 100644 index 000000000..9f271cb4a Binary files /dev/null and b/public/terrain/18/429288/176960.terrain differ diff --git a/public/terrain/18/429288/176961.terrain b/public/terrain/18/429288/176961.terrain new file mode 100644 index 000000000..9342eb472 Binary files /dev/null and b/public/terrain/18/429288/176961.terrain differ diff --git a/public/terrain/18/429288/176962.terrain b/public/terrain/18/429288/176962.terrain new file mode 100644 index 000000000..d977d29be Binary files /dev/null and b/public/terrain/18/429288/176962.terrain differ diff --git a/public/terrain/18/429288/176963.terrain b/public/terrain/18/429288/176963.terrain new file mode 100644 index 000000000..a3ad87e96 Binary files /dev/null and b/public/terrain/18/429288/176963.terrain differ diff --git a/public/terrain/18/429288/176964.terrain b/public/terrain/18/429288/176964.terrain new file mode 100644 index 000000000..bec01d623 Binary files /dev/null and b/public/terrain/18/429288/176964.terrain differ diff --git a/public/terrain/18/429288/176965.terrain b/public/terrain/18/429288/176965.terrain new file mode 100644 index 000000000..785c90274 Binary files /dev/null and b/public/terrain/18/429288/176965.terrain differ diff --git a/public/terrain/18/429288/176966.terrain b/public/terrain/18/429288/176966.terrain new file mode 100644 index 000000000..7898618b3 Binary files /dev/null and b/public/terrain/18/429288/176966.terrain differ diff --git a/public/terrain/18/429288/176967.terrain b/public/terrain/18/429288/176967.terrain new file mode 100644 index 000000000..6ff21da3d Binary files /dev/null and b/public/terrain/18/429288/176967.terrain differ diff --git a/public/terrain/18/429288/176968.terrain b/public/terrain/18/429288/176968.terrain new file mode 100644 index 000000000..942a5b9a6 Binary files /dev/null and b/public/terrain/18/429288/176968.terrain differ diff --git a/public/terrain/18/429288/176969.terrain b/public/terrain/18/429288/176969.terrain new file mode 100644 index 000000000..913c1488d Binary files /dev/null and b/public/terrain/18/429288/176969.terrain differ diff --git a/public/terrain/18/429288/176970.terrain b/public/terrain/18/429288/176970.terrain new file mode 100644 index 000000000..1b90e65b7 Binary files /dev/null and b/public/terrain/18/429288/176970.terrain differ diff --git a/public/terrain/18/429288/176971.terrain b/public/terrain/18/429288/176971.terrain new file mode 100644 index 000000000..431c886b5 Binary files /dev/null and b/public/terrain/18/429288/176971.terrain differ diff --git a/public/terrain/18/429288/176972.terrain b/public/terrain/18/429288/176972.terrain new file mode 100644 index 000000000..324615cc8 Binary files /dev/null and b/public/terrain/18/429288/176972.terrain differ diff --git a/public/terrain/18/429288/176973.terrain b/public/terrain/18/429288/176973.terrain new file mode 100644 index 000000000..64eb5e323 Binary files /dev/null and b/public/terrain/18/429288/176973.terrain differ diff --git a/public/terrain/18/429288/176974.terrain b/public/terrain/18/429288/176974.terrain new file mode 100644 index 000000000..92df50dca Binary files /dev/null and b/public/terrain/18/429288/176974.terrain differ diff --git a/public/terrain/18/429288/176975.terrain b/public/terrain/18/429288/176975.terrain new file mode 100644 index 000000000..d906d4dec Binary files /dev/null and b/public/terrain/18/429288/176975.terrain differ diff --git a/public/terrain/18/429288/176976.terrain b/public/terrain/18/429288/176976.terrain new file mode 100644 index 000000000..37c1ce13f Binary files /dev/null and b/public/terrain/18/429288/176976.terrain differ diff --git a/public/terrain/18/429288/176977.terrain b/public/terrain/18/429288/176977.terrain new file mode 100644 index 000000000..8a5582028 Binary files /dev/null and b/public/terrain/18/429288/176977.terrain differ diff --git a/public/terrain/18/429288/176978.terrain b/public/terrain/18/429288/176978.terrain new file mode 100644 index 000000000..e2643afc0 Binary files /dev/null and b/public/terrain/18/429288/176978.terrain differ diff --git a/public/terrain/18/429288/176979.terrain b/public/terrain/18/429288/176979.terrain new file mode 100644 index 000000000..adafb42d8 Binary files /dev/null and b/public/terrain/18/429288/176979.terrain differ diff --git a/public/terrain/18/429288/176980.terrain b/public/terrain/18/429288/176980.terrain new file mode 100644 index 000000000..22d26e85f Binary files /dev/null and b/public/terrain/18/429288/176980.terrain differ diff --git a/public/terrain/18/429288/176981.terrain b/public/terrain/18/429288/176981.terrain new file mode 100644 index 000000000..2270dc06b Binary files /dev/null and b/public/terrain/18/429288/176981.terrain differ diff --git a/public/terrain/18/429288/176982.terrain b/public/terrain/18/429288/176982.terrain new file mode 100644 index 000000000..9eed00b24 Binary files /dev/null and b/public/terrain/18/429288/176982.terrain differ diff --git a/public/terrain/18/429288/176983.terrain b/public/terrain/18/429288/176983.terrain new file mode 100644 index 000000000..2b2af5264 Binary files /dev/null and b/public/terrain/18/429288/176983.terrain differ diff --git a/public/terrain/18/429288/176984.terrain b/public/terrain/18/429288/176984.terrain new file mode 100644 index 000000000..b1aad3a93 Binary files /dev/null and b/public/terrain/18/429288/176984.terrain differ diff --git a/public/terrain/18/429288/176985.terrain b/public/terrain/18/429288/176985.terrain new file mode 100644 index 000000000..590be029e Binary files /dev/null and b/public/terrain/18/429288/176985.terrain differ diff --git a/public/terrain/18/429288/176986.terrain b/public/terrain/18/429288/176986.terrain new file mode 100644 index 000000000..2c239bbe4 Binary files /dev/null and b/public/terrain/18/429288/176986.terrain differ diff --git a/public/terrain/18/429288/176987.terrain b/public/terrain/18/429288/176987.terrain new file mode 100644 index 000000000..852081097 Binary files /dev/null and b/public/terrain/18/429288/176987.terrain differ diff --git a/public/terrain/18/429288/176988.terrain b/public/terrain/18/429288/176988.terrain new file mode 100644 index 000000000..77b847b8a Binary files /dev/null and b/public/terrain/18/429288/176988.terrain differ diff --git a/public/terrain/18/429288/176989.terrain b/public/terrain/18/429288/176989.terrain new file mode 100644 index 000000000..29499956a Binary files /dev/null and b/public/terrain/18/429288/176989.terrain differ diff --git a/public/terrain/18/429288/176990.terrain b/public/terrain/18/429288/176990.terrain new file mode 100644 index 000000000..9d621a708 Binary files /dev/null and b/public/terrain/18/429288/176990.terrain differ diff --git a/public/terrain/18/429288/176991.terrain b/public/terrain/18/429288/176991.terrain new file mode 100644 index 000000000..340ef6311 Binary files /dev/null and b/public/terrain/18/429288/176991.terrain differ diff --git a/public/terrain/18/429288/176992.terrain b/public/terrain/18/429288/176992.terrain new file mode 100644 index 000000000..1534d332f Binary files /dev/null and b/public/terrain/18/429288/176992.terrain differ diff --git a/public/terrain/18/429288/176993.terrain b/public/terrain/18/429288/176993.terrain new file mode 100644 index 000000000..4bafc19d8 Binary files /dev/null and b/public/terrain/18/429288/176993.terrain differ diff --git a/public/terrain/18/429288/176994.terrain b/public/terrain/18/429288/176994.terrain new file mode 100644 index 000000000..5f42acb21 Binary files /dev/null and b/public/terrain/18/429288/176994.terrain differ diff --git a/public/terrain/18/429288/176995.terrain b/public/terrain/18/429288/176995.terrain new file mode 100644 index 000000000..6d4b4c216 Binary files /dev/null and b/public/terrain/18/429288/176995.terrain differ diff --git a/public/terrain/18/429288/176996.terrain b/public/terrain/18/429288/176996.terrain new file mode 100644 index 000000000..9f75b98dc Binary files /dev/null and b/public/terrain/18/429288/176996.terrain differ diff --git a/public/terrain/18/429288/176997.terrain b/public/terrain/18/429288/176997.terrain new file mode 100644 index 000000000..b2e726914 Binary files /dev/null and b/public/terrain/18/429288/176997.terrain differ diff --git a/public/terrain/18/429288/176998.terrain b/public/terrain/18/429288/176998.terrain new file mode 100644 index 000000000..9665e6923 Binary files /dev/null and b/public/terrain/18/429288/176998.terrain differ diff --git a/public/terrain/18/429288/176999.terrain b/public/terrain/18/429288/176999.terrain new file mode 100644 index 000000000..27a089b68 Binary files /dev/null and b/public/terrain/18/429288/176999.terrain differ diff --git a/public/terrain/18/429288/177000.terrain b/public/terrain/18/429288/177000.terrain new file mode 100644 index 000000000..ea664c7ed Binary files /dev/null and b/public/terrain/18/429288/177000.terrain differ diff --git a/public/terrain/18/429288/177001.terrain b/public/terrain/18/429288/177001.terrain new file mode 100644 index 000000000..d0d82f6c9 Binary files /dev/null and b/public/terrain/18/429288/177001.terrain differ diff --git a/public/terrain/18/429288/177002.terrain b/public/terrain/18/429288/177002.terrain new file mode 100644 index 000000000..295dd642f Binary files /dev/null and b/public/terrain/18/429288/177002.terrain differ diff --git a/public/terrain/18/429288/177003.terrain b/public/terrain/18/429288/177003.terrain new file mode 100644 index 000000000..6a0d39648 Binary files /dev/null and b/public/terrain/18/429288/177003.terrain differ diff --git a/public/terrain/18/429288/177004.terrain b/public/terrain/18/429288/177004.terrain new file mode 100644 index 000000000..6cf4a5c4f Binary files /dev/null and b/public/terrain/18/429288/177004.terrain differ diff --git a/public/terrain/18/429288/177005.terrain b/public/terrain/18/429288/177005.terrain new file mode 100644 index 000000000..88d87752e Binary files /dev/null and b/public/terrain/18/429288/177005.terrain differ diff --git a/public/terrain/18/429288/177006.terrain b/public/terrain/18/429288/177006.terrain new file mode 100644 index 000000000..ab105078d Binary files /dev/null and b/public/terrain/18/429288/177006.terrain differ diff --git a/public/terrain/18/429288/177007.terrain b/public/terrain/18/429288/177007.terrain new file mode 100644 index 000000000..c48124bad Binary files /dev/null and b/public/terrain/18/429288/177007.terrain differ diff --git a/public/terrain/18/429288/177008.terrain b/public/terrain/18/429288/177008.terrain new file mode 100644 index 000000000..e2dfde151 Binary files /dev/null and b/public/terrain/18/429288/177008.terrain differ diff --git a/public/terrain/18/429288/177009.terrain b/public/terrain/18/429288/177009.terrain new file mode 100644 index 000000000..07983f609 Binary files /dev/null and b/public/terrain/18/429288/177009.terrain differ diff --git a/public/terrain/18/429288/177010.terrain b/public/terrain/18/429288/177010.terrain new file mode 100644 index 000000000..64ba648c5 Binary files /dev/null and b/public/terrain/18/429288/177010.terrain differ diff --git a/public/terrain/18/429288/177011.terrain b/public/terrain/18/429288/177011.terrain new file mode 100644 index 000000000..db482ce19 Binary files /dev/null and b/public/terrain/18/429288/177011.terrain differ diff --git a/public/terrain/18/429288/177012.terrain b/public/terrain/18/429288/177012.terrain new file mode 100644 index 000000000..9e27df141 Binary files /dev/null and b/public/terrain/18/429288/177012.terrain differ diff --git a/public/terrain/18/429288/177013.terrain b/public/terrain/18/429288/177013.terrain new file mode 100644 index 000000000..cbb91791f Binary files /dev/null and b/public/terrain/18/429288/177013.terrain differ diff --git a/public/terrain/18/429288/177014.terrain b/public/terrain/18/429288/177014.terrain new file mode 100644 index 000000000..b8e791823 Binary files /dev/null and b/public/terrain/18/429288/177014.terrain differ diff --git a/public/terrain/18/429288/177015.terrain b/public/terrain/18/429288/177015.terrain new file mode 100644 index 000000000..da1244128 Binary files /dev/null and b/public/terrain/18/429288/177015.terrain differ diff --git a/public/terrain/18/429288/177016.terrain b/public/terrain/18/429288/177016.terrain new file mode 100644 index 000000000..4f5abcd62 Binary files /dev/null and b/public/terrain/18/429288/177016.terrain differ diff --git a/public/terrain/18/429288/177017.terrain b/public/terrain/18/429288/177017.terrain new file mode 100644 index 000000000..47bb62b7e Binary files /dev/null and b/public/terrain/18/429288/177017.terrain differ diff --git a/public/terrain/18/429288/177018.terrain b/public/terrain/18/429288/177018.terrain new file mode 100644 index 000000000..45e96a608 Binary files /dev/null and b/public/terrain/18/429288/177018.terrain differ diff --git a/public/terrain/18/429288/177019.terrain b/public/terrain/18/429288/177019.terrain new file mode 100644 index 000000000..8e7d0bbdc Binary files /dev/null and b/public/terrain/18/429288/177019.terrain differ diff --git a/public/terrain/18/429288/177020.terrain b/public/terrain/18/429288/177020.terrain new file mode 100644 index 000000000..ebc66097d Binary files /dev/null and b/public/terrain/18/429288/177020.terrain differ diff --git a/public/terrain/18/429288/177021.terrain b/public/terrain/18/429288/177021.terrain new file mode 100644 index 000000000..039d968be Binary files /dev/null and b/public/terrain/18/429288/177021.terrain differ diff --git a/public/terrain/18/429288/177022.terrain b/public/terrain/18/429288/177022.terrain new file mode 100644 index 000000000..8701a4610 Binary files /dev/null and b/public/terrain/18/429288/177022.terrain differ diff --git a/public/terrain/18/429288/177023.terrain b/public/terrain/18/429288/177023.terrain new file mode 100644 index 000000000..4b3c8e912 Binary files /dev/null and b/public/terrain/18/429288/177023.terrain differ diff --git a/public/terrain/18/429288/177024.terrain b/public/terrain/18/429288/177024.terrain new file mode 100644 index 000000000..6a7b78682 Binary files /dev/null and b/public/terrain/18/429288/177024.terrain differ diff --git a/public/terrain/18/429288/177025.terrain b/public/terrain/18/429288/177025.terrain new file mode 100644 index 000000000..10d06e4dd Binary files /dev/null and b/public/terrain/18/429288/177025.terrain differ diff --git a/public/terrain/18/429288/177026.terrain b/public/terrain/18/429288/177026.terrain new file mode 100644 index 000000000..992a52501 Binary files /dev/null and b/public/terrain/18/429288/177026.terrain differ diff --git a/public/terrain/18/429288/177027.terrain b/public/terrain/18/429288/177027.terrain new file mode 100644 index 000000000..ce8bea72c Binary files /dev/null and b/public/terrain/18/429288/177027.terrain differ diff --git a/public/terrain/18/429288/177028.terrain b/public/terrain/18/429288/177028.terrain new file mode 100644 index 000000000..af67342c4 Binary files /dev/null and b/public/terrain/18/429288/177028.terrain differ diff --git a/public/terrain/18/429288/177029.terrain b/public/terrain/18/429288/177029.terrain new file mode 100644 index 000000000..b03b8f457 Binary files /dev/null and b/public/terrain/18/429288/177029.terrain differ diff --git a/public/terrain/18/429289/176871.terrain b/public/terrain/18/429289/176871.terrain new file mode 100644 index 000000000..4f0ea176f Binary files /dev/null and b/public/terrain/18/429289/176871.terrain differ diff --git a/public/terrain/18/429289/176872.terrain b/public/terrain/18/429289/176872.terrain new file mode 100644 index 000000000..d40cd9c10 Binary files /dev/null and b/public/terrain/18/429289/176872.terrain differ diff --git a/public/terrain/18/429289/176873.terrain b/public/terrain/18/429289/176873.terrain new file mode 100644 index 000000000..60aeac823 Binary files /dev/null and b/public/terrain/18/429289/176873.terrain differ diff --git a/public/terrain/18/429289/176874.terrain b/public/terrain/18/429289/176874.terrain new file mode 100644 index 000000000..c6078ce16 Binary files /dev/null and b/public/terrain/18/429289/176874.terrain differ diff --git a/public/terrain/18/429289/176875.terrain b/public/terrain/18/429289/176875.terrain new file mode 100644 index 000000000..cc70e0e23 Binary files /dev/null and b/public/terrain/18/429289/176875.terrain differ diff --git a/public/terrain/18/429289/176876.terrain b/public/terrain/18/429289/176876.terrain new file mode 100644 index 000000000..e620f4a90 Binary files /dev/null and b/public/terrain/18/429289/176876.terrain differ diff --git a/public/terrain/18/429289/176877.terrain b/public/terrain/18/429289/176877.terrain new file mode 100644 index 000000000..aa153eb66 Binary files /dev/null and b/public/terrain/18/429289/176877.terrain differ diff --git a/public/terrain/18/429289/176878.terrain b/public/terrain/18/429289/176878.terrain new file mode 100644 index 000000000..d355df401 Binary files /dev/null and b/public/terrain/18/429289/176878.terrain differ diff --git a/public/terrain/18/429289/176879.terrain b/public/terrain/18/429289/176879.terrain new file mode 100644 index 000000000..b845250e7 Binary files /dev/null and b/public/terrain/18/429289/176879.terrain differ diff --git a/public/terrain/18/429289/176880.terrain b/public/terrain/18/429289/176880.terrain new file mode 100644 index 000000000..87ceb1367 Binary files /dev/null and b/public/terrain/18/429289/176880.terrain differ diff --git a/public/terrain/18/429289/176881.terrain b/public/terrain/18/429289/176881.terrain new file mode 100644 index 000000000..80e17643e Binary files /dev/null and b/public/terrain/18/429289/176881.terrain differ diff --git a/public/terrain/18/429289/176882.terrain b/public/terrain/18/429289/176882.terrain new file mode 100644 index 000000000..7bb704524 Binary files /dev/null and b/public/terrain/18/429289/176882.terrain differ diff --git a/public/terrain/18/429289/176883.terrain b/public/terrain/18/429289/176883.terrain new file mode 100644 index 000000000..80b681158 Binary files /dev/null and b/public/terrain/18/429289/176883.terrain differ diff --git a/public/terrain/18/429289/176884.terrain b/public/terrain/18/429289/176884.terrain new file mode 100644 index 000000000..96eb5418b Binary files /dev/null and b/public/terrain/18/429289/176884.terrain differ diff --git a/public/terrain/18/429289/176885.terrain b/public/terrain/18/429289/176885.terrain new file mode 100644 index 000000000..1f74f6201 Binary files /dev/null and b/public/terrain/18/429289/176885.terrain differ diff --git a/public/terrain/18/429289/176886.terrain b/public/terrain/18/429289/176886.terrain new file mode 100644 index 000000000..303a793bc Binary files /dev/null and b/public/terrain/18/429289/176886.terrain differ diff --git a/public/terrain/18/429289/176887.terrain b/public/terrain/18/429289/176887.terrain new file mode 100644 index 000000000..928db54ad Binary files /dev/null and b/public/terrain/18/429289/176887.terrain differ diff --git a/public/terrain/18/429289/176888.terrain b/public/terrain/18/429289/176888.terrain new file mode 100644 index 000000000..5a022208e Binary files /dev/null and b/public/terrain/18/429289/176888.terrain differ diff --git a/public/terrain/18/429289/176889.terrain b/public/terrain/18/429289/176889.terrain new file mode 100644 index 000000000..ae85e93b8 Binary files /dev/null and b/public/terrain/18/429289/176889.terrain differ diff --git a/public/terrain/18/429289/176890.terrain b/public/terrain/18/429289/176890.terrain new file mode 100644 index 000000000..43e78d008 Binary files /dev/null and b/public/terrain/18/429289/176890.terrain differ diff --git a/public/terrain/18/429289/176891.terrain b/public/terrain/18/429289/176891.terrain new file mode 100644 index 000000000..fded96731 Binary files /dev/null and b/public/terrain/18/429289/176891.terrain differ diff --git a/public/terrain/18/429289/176892.terrain b/public/terrain/18/429289/176892.terrain new file mode 100644 index 000000000..1a35c8aab Binary files /dev/null and b/public/terrain/18/429289/176892.terrain differ diff --git a/public/terrain/18/429289/176893.terrain b/public/terrain/18/429289/176893.terrain new file mode 100644 index 000000000..d2f4c48cc Binary files /dev/null and b/public/terrain/18/429289/176893.terrain differ diff --git a/public/terrain/18/429289/176894.terrain b/public/terrain/18/429289/176894.terrain new file mode 100644 index 000000000..44da957f5 Binary files /dev/null and b/public/terrain/18/429289/176894.terrain differ diff --git a/public/terrain/18/429289/176895.terrain b/public/terrain/18/429289/176895.terrain new file mode 100644 index 000000000..a7fa76f9a Binary files /dev/null and b/public/terrain/18/429289/176895.terrain differ diff --git a/public/terrain/18/429289/176896.terrain b/public/terrain/18/429289/176896.terrain new file mode 100644 index 000000000..926fe3bc0 Binary files /dev/null and b/public/terrain/18/429289/176896.terrain differ diff --git a/public/terrain/18/429289/176897.terrain b/public/terrain/18/429289/176897.terrain new file mode 100644 index 000000000..4ac41fe28 Binary files /dev/null and b/public/terrain/18/429289/176897.terrain differ diff --git a/public/terrain/18/429289/176898.terrain b/public/terrain/18/429289/176898.terrain new file mode 100644 index 000000000..1ff510d0f Binary files /dev/null and b/public/terrain/18/429289/176898.terrain differ diff --git a/public/terrain/18/429289/176899.terrain b/public/terrain/18/429289/176899.terrain new file mode 100644 index 000000000..bb64abe34 Binary files /dev/null and b/public/terrain/18/429289/176899.terrain differ diff --git a/public/terrain/18/429289/176900.terrain b/public/terrain/18/429289/176900.terrain new file mode 100644 index 000000000..9a0de30a3 Binary files /dev/null and b/public/terrain/18/429289/176900.terrain differ diff --git a/public/terrain/18/429289/176901.terrain b/public/terrain/18/429289/176901.terrain new file mode 100644 index 000000000..46f8c629c Binary files /dev/null and b/public/terrain/18/429289/176901.terrain differ diff --git a/public/terrain/18/429289/176902.terrain b/public/terrain/18/429289/176902.terrain new file mode 100644 index 000000000..f15e22a46 Binary files /dev/null and b/public/terrain/18/429289/176902.terrain differ diff --git a/public/terrain/18/429289/176903.terrain b/public/terrain/18/429289/176903.terrain new file mode 100644 index 000000000..e79af83da Binary files /dev/null and b/public/terrain/18/429289/176903.terrain differ diff --git a/public/terrain/18/429289/176904.terrain b/public/terrain/18/429289/176904.terrain new file mode 100644 index 000000000..d5a90f0c3 Binary files /dev/null and b/public/terrain/18/429289/176904.terrain differ diff --git a/public/terrain/18/429289/176905.terrain b/public/terrain/18/429289/176905.terrain new file mode 100644 index 000000000..99f119963 Binary files /dev/null and b/public/terrain/18/429289/176905.terrain differ diff --git a/public/terrain/18/429289/176906.terrain b/public/terrain/18/429289/176906.terrain new file mode 100644 index 000000000..53da5a7dd Binary files /dev/null and b/public/terrain/18/429289/176906.terrain differ diff --git a/public/terrain/18/429289/176907.terrain b/public/terrain/18/429289/176907.terrain new file mode 100644 index 000000000..53bb149df Binary files /dev/null and b/public/terrain/18/429289/176907.terrain differ diff --git a/public/terrain/18/429289/176908.terrain b/public/terrain/18/429289/176908.terrain new file mode 100644 index 000000000..4e6931653 Binary files /dev/null and b/public/terrain/18/429289/176908.terrain differ diff --git a/public/terrain/18/429289/176909.terrain b/public/terrain/18/429289/176909.terrain new file mode 100644 index 000000000..e13ce5cc6 Binary files /dev/null and b/public/terrain/18/429289/176909.terrain differ diff --git a/public/terrain/18/429289/176910.terrain b/public/terrain/18/429289/176910.terrain new file mode 100644 index 000000000..c424b3562 Binary files /dev/null and b/public/terrain/18/429289/176910.terrain differ diff --git a/public/terrain/18/429289/176911.terrain b/public/terrain/18/429289/176911.terrain new file mode 100644 index 000000000..3e7eae8fe Binary files /dev/null and b/public/terrain/18/429289/176911.terrain differ diff --git a/public/terrain/18/429289/176912.terrain b/public/terrain/18/429289/176912.terrain new file mode 100644 index 000000000..03b6e4fb7 Binary files /dev/null and b/public/terrain/18/429289/176912.terrain differ diff --git a/public/terrain/18/429289/176913.terrain b/public/terrain/18/429289/176913.terrain new file mode 100644 index 000000000..ab7079a3c Binary files /dev/null and b/public/terrain/18/429289/176913.terrain differ diff --git a/public/terrain/18/429289/176914.terrain b/public/terrain/18/429289/176914.terrain new file mode 100644 index 000000000..f9602e2b0 Binary files /dev/null and b/public/terrain/18/429289/176914.terrain differ diff --git a/public/terrain/18/429289/176915.terrain b/public/terrain/18/429289/176915.terrain new file mode 100644 index 000000000..089b1339c Binary files /dev/null and b/public/terrain/18/429289/176915.terrain differ diff --git a/public/terrain/18/429289/176916.terrain b/public/terrain/18/429289/176916.terrain new file mode 100644 index 000000000..eff1167e6 Binary files /dev/null and b/public/terrain/18/429289/176916.terrain differ diff --git a/public/terrain/18/429289/176917.terrain b/public/terrain/18/429289/176917.terrain new file mode 100644 index 000000000..d36eaf4ee Binary files /dev/null and b/public/terrain/18/429289/176917.terrain differ diff --git a/public/terrain/18/429289/176918.terrain b/public/terrain/18/429289/176918.terrain new file mode 100644 index 000000000..0203cf9ec Binary files /dev/null and b/public/terrain/18/429289/176918.terrain differ diff --git a/public/terrain/18/429289/176919.terrain b/public/terrain/18/429289/176919.terrain new file mode 100644 index 000000000..fcc6a5137 Binary files /dev/null and b/public/terrain/18/429289/176919.terrain differ diff --git a/public/terrain/18/429289/176920.terrain b/public/terrain/18/429289/176920.terrain new file mode 100644 index 000000000..12e6b65d3 Binary files /dev/null and b/public/terrain/18/429289/176920.terrain differ diff --git a/public/terrain/18/429289/176921.terrain b/public/terrain/18/429289/176921.terrain new file mode 100644 index 000000000..82d17d4d4 Binary files /dev/null and b/public/terrain/18/429289/176921.terrain differ diff --git a/public/terrain/18/429289/176922.terrain b/public/terrain/18/429289/176922.terrain new file mode 100644 index 000000000..c982c3a05 Binary files /dev/null and b/public/terrain/18/429289/176922.terrain differ diff --git a/public/terrain/18/429289/176923.terrain b/public/terrain/18/429289/176923.terrain new file mode 100644 index 000000000..082fdfc69 Binary files /dev/null and b/public/terrain/18/429289/176923.terrain differ diff --git a/public/terrain/18/429289/176924.terrain b/public/terrain/18/429289/176924.terrain new file mode 100644 index 000000000..d9ba637dc Binary files /dev/null and b/public/terrain/18/429289/176924.terrain differ diff --git a/public/terrain/18/429289/176925.terrain b/public/terrain/18/429289/176925.terrain new file mode 100644 index 000000000..33b9b989f Binary files /dev/null and b/public/terrain/18/429289/176925.terrain differ diff --git a/public/terrain/18/429289/176926.terrain b/public/terrain/18/429289/176926.terrain new file mode 100644 index 000000000..9973bfee8 Binary files /dev/null and b/public/terrain/18/429289/176926.terrain differ diff --git a/public/terrain/18/429289/176927.terrain b/public/terrain/18/429289/176927.terrain new file mode 100644 index 000000000..b1b94fbeb Binary files /dev/null and b/public/terrain/18/429289/176927.terrain differ diff --git a/public/terrain/18/429289/176928.terrain b/public/terrain/18/429289/176928.terrain new file mode 100644 index 000000000..eef06dd69 Binary files /dev/null and b/public/terrain/18/429289/176928.terrain differ diff --git a/public/terrain/18/429289/176929.terrain b/public/terrain/18/429289/176929.terrain new file mode 100644 index 000000000..9b823d863 Binary files /dev/null and b/public/terrain/18/429289/176929.terrain differ diff --git a/public/terrain/18/429289/176930.terrain b/public/terrain/18/429289/176930.terrain new file mode 100644 index 000000000..0f9fa64d0 Binary files /dev/null and b/public/terrain/18/429289/176930.terrain differ diff --git a/public/terrain/18/429289/176931.terrain b/public/terrain/18/429289/176931.terrain new file mode 100644 index 000000000..e52a85b89 Binary files /dev/null and b/public/terrain/18/429289/176931.terrain differ diff --git a/public/terrain/18/429289/176932.terrain b/public/terrain/18/429289/176932.terrain new file mode 100644 index 000000000..2391f0db1 Binary files /dev/null and b/public/terrain/18/429289/176932.terrain differ diff --git a/public/terrain/18/429289/176933.terrain b/public/terrain/18/429289/176933.terrain new file mode 100644 index 000000000..4c866e73c Binary files /dev/null and b/public/terrain/18/429289/176933.terrain differ diff --git a/public/terrain/18/429289/176934.terrain b/public/terrain/18/429289/176934.terrain new file mode 100644 index 000000000..bebbfa5dc Binary files /dev/null and b/public/terrain/18/429289/176934.terrain differ diff --git a/public/terrain/18/429289/176935.terrain b/public/terrain/18/429289/176935.terrain new file mode 100644 index 000000000..e2df24c41 Binary files /dev/null and b/public/terrain/18/429289/176935.terrain differ diff --git a/public/terrain/18/429289/176936.terrain b/public/terrain/18/429289/176936.terrain new file mode 100644 index 000000000..1b503f2ee Binary files /dev/null and b/public/terrain/18/429289/176936.terrain differ diff --git a/public/terrain/18/429289/176937.terrain b/public/terrain/18/429289/176937.terrain new file mode 100644 index 000000000..6330fa683 Binary files /dev/null and b/public/terrain/18/429289/176937.terrain differ diff --git a/public/terrain/18/429289/176938.terrain b/public/terrain/18/429289/176938.terrain new file mode 100644 index 000000000..276a1509d Binary files /dev/null and b/public/terrain/18/429289/176938.terrain differ diff --git a/public/terrain/18/429289/176939.terrain b/public/terrain/18/429289/176939.terrain new file mode 100644 index 000000000..405e291ec Binary files /dev/null and b/public/terrain/18/429289/176939.terrain differ diff --git a/public/terrain/18/429289/176940.terrain b/public/terrain/18/429289/176940.terrain new file mode 100644 index 000000000..65b557065 Binary files /dev/null and b/public/terrain/18/429289/176940.terrain differ diff --git a/public/terrain/18/429289/176941.terrain b/public/terrain/18/429289/176941.terrain new file mode 100644 index 000000000..78bbae36e Binary files /dev/null and b/public/terrain/18/429289/176941.terrain differ diff --git a/public/terrain/18/429289/176942.terrain b/public/terrain/18/429289/176942.terrain new file mode 100644 index 000000000..4239027a8 Binary files /dev/null and b/public/terrain/18/429289/176942.terrain differ diff --git a/public/terrain/18/429289/176943.terrain b/public/terrain/18/429289/176943.terrain new file mode 100644 index 000000000..3727c3351 Binary files /dev/null and b/public/terrain/18/429289/176943.terrain differ diff --git a/public/terrain/18/429289/176944.terrain b/public/terrain/18/429289/176944.terrain new file mode 100644 index 000000000..0ad943a33 Binary files /dev/null and b/public/terrain/18/429289/176944.terrain differ diff --git a/public/terrain/18/429289/176945.terrain b/public/terrain/18/429289/176945.terrain new file mode 100644 index 000000000..5990bbb7f Binary files /dev/null and b/public/terrain/18/429289/176945.terrain differ diff --git a/public/terrain/18/429289/176946.terrain b/public/terrain/18/429289/176946.terrain new file mode 100644 index 000000000..b1836bddf Binary files /dev/null and b/public/terrain/18/429289/176946.terrain differ diff --git a/public/terrain/18/429289/176947.terrain b/public/terrain/18/429289/176947.terrain new file mode 100644 index 000000000..c50022999 Binary files /dev/null and b/public/terrain/18/429289/176947.terrain differ diff --git a/public/terrain/18/429289/176948.terrain b/public/terrain/18/429289/176948.terrain new file mode 100644 index 000000000..76de26fbd Binary files /dev/null and b/public/terrain/18/429289/176948.terrain differ diff --git a/public/terrain/18/429289/176949.terrain b/public/terrain/18/429289/176949.terrain new file mode 100644 index 000000000..79290b8a7 Binary files /dev/null and b/public/terrain/18/429289/176949.terrain differ diff --git a/public/terrain/18/429289/176950.terrain b/public/terrain/18/429289/176950.terrain new file mode 100644 index 000000000..23f3a1b6d Binary files /dev/null and b/public/terrain/18/429289/176950.terrain differ diff --git a/public/terrain/18/429289/176951.terrain b/public/terrain/18/429289/176951.terrain new file mode 100644 index 000000000..ae23966c2 Binary files /dev/null and b/public/terrain/18/429289/176951.terrain differ diff --git a/public/terrain/18/429289/176952.terrain b/public/terrain/18/429289/176952.terrain new file mode 100644 index 000000000..ad7160658 Binary files /dev/null and b/public/terrain/18/429289/176952.terrain differ diff --git a/public/terrain/18/429289/176953.terrain b/public/terrain/18/429289/176953.terrain new file mode 100644 index 000000000..50a2cb573 Binary files /dev/null and b/public/terrain/18/429289/176953.terrain differ diff --git a/public/terrain/18/429289/176954.terrain b/public/terrain/18/429289/176954.terrain new file mode 100644 index 000000000..28c0379dd Binary files /dev/null and b/public/terrain/18/429289/176954.terrain differ diff --git a/public/terrain/18/429289/176955.terrain b/public/terrain/18/429289/176955.terrain new file mode 100644 index 000000000..ded62772e Binary files /dev/null and b/public/terrain/18/429289/176955.terrain differ diff --git a/public/terrain/18/429289/176956.terrain b/public/terrain/18/429289/176956.terrain new file mode 100644 index 000000000..f9d3bd387 Binary files /dev/null and b/public/terrain/18/429289/176956.terrain differ diff --git a/public/terrain/18/429289/176957.terrain b/public/terrain/18/429289/176957.terrain new file mode 100644 index 000000000..e3ccb1a23 Binary files /dev/null and b/public/terrain/18/429289/176957.terrain differ diff --git a/public/terrain/18/429289/176958.terrain b/public/terrain/18/429289/176958.terrain new file mode 100644 index 000000000..ff1a1ca8d Binary files /dev/null and b/public/terrain/18/429289/176958.terrain differ diff --git a/public/terrain/18/429289/176959.terrain b/public/terrain/18/429289/176959.terrain new file mode 100644 index 000000000..3f7bff4c5 Binary files /dev/null and b/public/terrain/18/429289/176959.terrain differ diff --git a/public/terrain/18/429289/176960.terrain b/public/terrain/18/429289/176960.terrain new file mode 100644 index 000000000..7ed53c00b Binary files /dev/null and b/public/terrain/18/429289/176960.terrain differ diff --git a/public/terrain/18/429289/176961.terrain b/public/terrain/18/429289/176961.terrain new file mode 100644 index 000000000..b54a02929 Binary files /dev/null and b/public/terrain/18/429289/176961.terrain differ diff --git a/public/terrain/18/429289/176962.terrain b/public/terrain/18/429289/176962.terrain new file mode 100644 index 000000000..213f72326 Binary files /dev/null and b/public/terrain/18/429289/176962.terrain differ diff --git a/public/terrain/18/429289/176963.terrain b/public/terrain/18/429289/176963.terrain new file mode 100644 index 000000000..348d79e86 Binary files /dev/null and b/public/terrain/18/429289/176963.terrain differ diff --git a/public/terrain/18/429289/176964.terrain b/public/terrain/18/429289/176964.terrain new file mode 100644 index 000000000..c8c33dd74 Binary files /dev/null and b/public/terrain/18/429289/176964.terrain differ diff --git a/public/terrain/18/429289/176965.terrain b/public/terrain/18/429289/176965.terrain new file mode 100644 index 000000000..3130f0c12 Binary files /dev/null and b/public/terrain/18/429289/176965.terrain differ diff --git a/public/terrain/18/429289/176966.terrain b/public/terrain/18/429289/176966.terrain new file mode 100644 index 000000000..ee76a1229 Binary files /dev/null and b/public/terrain/18/429289/176966.terrain differ diff --git a/public/terrain/18/429289/176967.terrain b/public/terrain/18/429289/176967.terrain new file mode 100644 index 000000000..addcc2c9c Binary files /dev/null and b/public/terrain/18/429289/176967.terrain differ diff --git a/public/terrain/18/429289/176968.terrain b/public/terrain/18/429289/176968.terrain new file mode 100644 index 000000000..67fa5dd02 Binary files /dev/null and b/public/terrain/18/429289/176968.terrain differ diff --git a/public/terrain/18/429289/176969.terrain b/public/terrain/18/429289/176969.terrain new file mode 100644 index 000000000..f214c51a7 Binary files /dev/null and b/public/terrain/18/429289/176969.terrain differ diff --git a/public/terrain/18/429289/176970.terrain b/public/terrain/18/429289/176970.terrain new file mode 100644 index 000000000..d65a25d8d Binary files /dev/null and b/public/terrain/18/429289/176970.terrain differ diff --git a/public/terrain/18/429289/176971.terrain b/public/terrain/18/429289/176971.terrain new file mode 100644 index 000000000..f07613506 Binary files /dev/null and b/public/terrain/18/429289/176971.terrain differ diff --git a/public/terrain/18/429289/176972.terrain b/public/terrain/18/429289/176972.terrain new file mode 100644 index 000000000..8cc7ed3f5 Binary files /dev/null and b/public/terrain/18/429289/176972.terrain differ diff --git a/public/terrain/18/429289/176973.terrain b/public/terrain/18/429289/176973.terrain new file mode 100644 index 000000000..9f651b517 Binary files /dev/null and b/public/terrain/18/429289/176973.terrain differ diff --git a/public/terrain/18/429289/176974.terrain b/public/terrain/18/429289/176974.terrain new file mode 100644 index 000000000..5f28cbceb Binary files /dev/null and b/public/terrain/18/429289/176974.terrain differ diff --git a/public/terrain/18/429289/176975.terrain b/public/terrain/18/429289/176975.terrain new file mode 100644 index 000000000..5da645a14 Binary files /dev/null and b/public/terrain/18/429289/176975.terrain differ diff --git a/public/terrain/18/429289/176976.terrain b/public/terrain/18/429289/176976.terrain new file mode 100644 index 000000000..b0ad618d0 Binary files /dev/null and b/public/terrain/18/429289/176976.terrain differ diff --git a/public/terrain/18/429289/176977.terrain b/public/terrain/18/429289/176977.terrain new file mode 100644 index 000000000..2341b2da0 Binary files /dev/null and b/public/terrain/18/429289/176977.terrain differ diff --git a/public/terrain/18/429289/176978.terrain b/public/terrain/18/429289/176978.terrain new file mode 100644 index 000000000..7c123cdc8 Binary files /dev/null and b/public/terrain/18/429289/176978.terrain differ diff --git a/public/terrain/18/429289/176979.terrain b/public/terrain/18/429289/176979.terrain new file mode 100644 index 000000000..f1467d9bd Binary files /dev/null and b/public/terrain/18/429289/176979.terrain differ diff --git a/public/terrain/18/429289/176980.terrain b/public/terrain/18/429289/176980.terrain new file mode 100644 index 000000000..62cc751b0 Binary files /dev/null and b/public/terrain/18/429289/176980.terrain differ diff --git a/public/terrain/18/429289/176981.terrain b/public/terrain/18/429289/176981.terrain new file mode 100644 index 000000000..82e77f47f Binary files /dev/null and b/public/terrain/18/429289/176981.terrain differ diff --git a/public/terrain/18/429289/176982.terrain b/public/terrain/18/429289/176982.terrain new file mode 100644 index 000000000..022921b83 Binary files /dev/null and b/public/terrain/18/429289/176982.terrain differ diff --git a/public/terrain/18/429289/176983.terrain b/public/terrain/18/429289/176983.terrain new file mode 100644 index 000000000..34cb932e1 Binary files /dev/null and b/public/terrain/18/429289/176983.terrain differ diff --git a/public/terrain/18/429289/176984.terrain b/public/terrain/18/429289/176984.terrain new file mode 100644 index 000000000..d744c4ef5 Binary files /dev/null and b/public/terrain/18/429289/176984.terrain differ diff --git a/public/terrain/18/429289/176985.terrain b/public/terrain/18/429289/176985.terrain new file mode 100644 index 000000000..693bf06e4 Binary files /dev/null and b/public/terrain/18/429289/176985.terrain differ diff --git a/public/terrain/18/429289/176986.terrain b/public/terrain/18/429289/176986.terrain new file mode 100644 index 000000000..597be670d Binary files /dev/null and b/public/terrain/18/429289/176986.terrain differ diff --git a/public/terrain/18/429289/176987.terrain b/public/terrain/18/429289/176987.terrain new file mode 100644 index 000000000..65bc629c9 Binary files /dev/null and b/public/terrain/18/429289/176987.terrain differ diff --git a/public/terrain/18/429289/176988.terrain b/public/terrain/18/429289/176988.terrain new file mode 100644 index 000000000..ad1d05521 Binary files /dev/null and b/public/terrain/18/429289/176988.terrain differ diff --git a/public/terrain/18/429289/176989.terrain b/public/terrain/18/429289/176989.terrain new file mode 100644 index 000000000..b2f179d93 Binary files /dev/null and b/public/terrain/18/429289/176989.terrain differ diff --git a/public/terrain/18/429289/176990.terrain b/public/terrain/18/429289/176990.terrain new file mode 100644 index 000000000..03af98cd0 Binary files /dev/null and b/public/terrain/18/429289/176990.terrain differ diff --git a/public/terrain/18/429289/176991.terrain b/public/terrain/18/429289/176991.terrain new file mode 100644 index 000000000..ea2193c1a Binary files /dev/null and b/public/terrain/18/429289/176991.terrain differ diff --git a/public/terrain/18/429289/176992.terrain b/public/terrain/18/429289/176992.terrain new file mode 100644 index 000000000..ca92cb31a Binary files /dev/null and b/public/terrain/18/429289/176992.terrain differ diff --git a/public/terrain/18/429289/176993.terrain b/public/terrain/18/429289/176993.terrain new file mode 100644 index 000000000..f1ee8214d Binary files /dev/null and b/public/terrain/18/429289/176993.terrain differ diff --git a/public/terrain/18/429289/176994.terrain b/public/terrain/18/429289/176994.terrain new file mode 100644 index 000000000..eca849d10 Binary files /dev/null and b/public/terrain/18/429289/176994.terrain differ diff --git a/public/terrain/18/429289/176995.terrain b/public/terrain/18/429289/176995.terrain new file mode 100644 index 000000000..a9b6e6139 Binary files /dev/null and b/public/terrain/18/429289/176995.terrain differ diff --git a/public/terrain/18/429289/176996.terrain b/public/terrain/18/429289/176996.terrain new file mode 100644 index 000000000..c1e29ef2b Binary files /dev/null and b/public/terrain/18/429289/176996.terrain differ diff --git a/public/terrain/18/429289/176997.terrain b/public/terrain/18/429289/176997.terrain new file mode 100644 index 000000000..d0a623c90 Binary files /dev/null and b/public/terrain/18/429289/176997.terrain differ diff --git a/public/terrain/18/429289/176998.terrain b/public/terrain/18/429289/176998.terrain new file mode 100644 index 000000000..cccc0716b Binary files /dev/null and b/public/terrain/18/429289/176998.terrain differ diff --git a/public/terrain/18/429289/176999.terrain b/public/terrain/18/429289/176999.terrain new file mode 100644 index 000000000..ffdf573bc Binary files /dev/null and b/public/terrain/18/429289/176999.terrain differ diff --git a/public/terrain/18/429289/177000.terrain b/public/terrain/18/429289/177000.terrain new file mode 100644 index 000000000..f6f856c7a Binary files /dev/null and b/public/terrain/18/429289/177000.terrain differ diff --git a/public/terrain/18/429289/177001.terrain b/public/terrain/18/429289/177001.terrain new file mode 100644 index 000000000..f751ea233 Binary files /dev/null and b/public/terrain/18/429289/177001.terrain differ diff --git a/public/terrain/18/429289/177002.terrain b/public/terrain/18/429289/177002.terrain new file mode 100644 index 000000000..6a1585d0b Binary files /dev/null and b/public/terrain/18/429289/177002.terrain differ diff --git a/public/terrain/18/429289/177003.terrain b/public/terrain/18/429289/177003.terrain new file mode 100644 index 000000000..4952f2005 Binary files /dev/null and b/public/terrain/18/429289/177003.terrain differ diff --git a/public/terrain/18/429289/177004.terrain b/public/terrain/18/429289/177004.terrain new file mode 100644 index 000000000..bcdb993d5 Binary files /dev/null and b/public/terrain/18/429289/177004.terrain differ diff --git a/public/terrain/18/429289/177005.terrain b/public/terrain/18/429289/177005.terrain new file mode 100644 index 000000000..e7261c956 Binary files /dev/null and b/public/terrain/18/429289/177005.terrain differ diff --git a/public/terrain/18/429289/177006.terrain b/public/terrain/18/429289/177006.terrain new file mode 100644 index 000000000..8c0d533e8 Binary files /dev/null and b/public/terrain/18/429289/177006.terrain differ diff --git a/public/terrain/18/429289/177007.terrain b/public/terrain/18/429289/177007.terrain new file mode 100644 index 000000000..c2c36b4fc Binary files /dev/null and b/public/terrain/18/429289/177007.terrain differ diff --git a/public/terrain/18/429289/177008.terrain b/public/terrain/18/429289/177008.terrain new file mode 100644 index 000000000..617b0314e Binary files /dev/null and b/public/terrain/18/429289/177008.terrain differ diff --git a/public/terrain/18/429289/177009.terrain b/public/terrain/18/429289/177009.terrain new file mode 100644 index 000000000..7c4187892 Binary files /dev/null and b/public/terrain/18/429289/177009.terrain differ diff --git a/public/terrain/18/429289/177010.terrain b/public/terrain/18/429289/177010.terrain new file mode 100644 index 000000000..c1f926752 Binary files /dev/null and b/public/terrain/18/429289/177010.terrain differ diff --git a/public/terrain/18/429289/177011.terrain b/public/terrain/18/429289/177011.terrain new file mode 100644 index 000000000..bd9e343ac Binary files /dev/null and b/public/terrain/18/429289/177011.terrain differ diff --git a/public/terrain/18/429289/177012.terrain b/public/terrain/18/429289/177012.terrain new file mode 100644 index 000000000..05b51ecc9 Binary files /dev/null and b/public/terrain/18/429289/177012.terrain differ diff --git a/public/terrain/18/429289/177013.terrain b/public/terrain/18/429289/177013.terrain new file mode 100644 index 000000000..0da922c31 Binary files /dev/null and b/public/terrain/18/429289/177013.terrain differ diff --git a/public/terrain/18/429289/177014.terrain b/public/terrain/18/429289/177014.terrain new file mode 100644 index 000000000..5fb4b5c41 Binary files /dev/null and b/public/terrain/18/429289/177014.terrain differ diff --git a/public/terrain/18/429289/177015.terrain b/public/terrain/18/429289/177015.terrain new file mode 100644 index 000000000..a52207a04 Binary files /dev/null and b/public/terrain/18/429289/177015.terrain differ diff --git a/public/terrain/18/429289/177016.terrain b/public/terrain/18/429289/177016.terrain new file mode 100644 index 000000000..98e41b601 Binary files /dev/null and b/public/terrain/18/429289/177016.terrain differ diff --git a/public/terrain/18/429289/177017.terrain b/public/terrain/18/429289/177017.terrain new file mode 100644 index 000000000..c3fe4792b Binary files /dev/null and b/public/terrain/18/429289/177017.terrain differ diff --git a/public/terrain/18/429289/177018.terrain b/public/terrain/18/429289/177018.terrain new file mode 100644 index 000000000..cc2b7a3ba Binary files /dev/null and b/public/terrain/18/429289/177018.terrain differ diff --git a/public/terrain/18/429289/177019.terrain b/public/terrain/18/429289/177019.terrain new file mode 100644 index 000000000..5e326f914 Binary files /dev/null and b/public/terrain/18/429289/177019.terrain differ diff --git a/public/terrain/18/429289/177020.terrain b/public/terrain/18/429289/177020.terrain new file mode 100644 index 000000000..f998e34c6 Binary files /dev/null and b/public/terrain/18/429289/177020.terrain differ diff --git a/public/terrain/18/429289/177021.terrain b/public/terrain/18/429289/177021.terrain new file mode 100644 index 000000000..38df08c91 Binary files /dev/null and b/public/terrain/18/429289/177021.terrain differ diff --git a/public/terrain/18/429289/177022.terrain b/public/terrain/18/429289/177022.terrain new file mode 100644 index 000000000..ee1f3f6dd Binary files /dev/null and b/public/terrain/18/429289/177022.terrain differ diff --git a/public/terrain/18/429289/177023.terrain b/public/terrain/18/429289/177023.terrain new file mode 100644 index 000000000..c042abd9d Binary files /dev/null and b/public/terrain/18/429289/177023.terrain differ diff --git a/public/terrain/18/429289/177024.terrain b/public/terrain/18/429289/177024.terrain new file mode 100644 index 000000000..3b08ffd66 Binary files /dev/null and b/public/terrain/18/429289/177024.terrain differ diff --git a/public/terrain/18/429289/177025.terrain b/public/terrain/18/429289/177025.terrain new file mode 100644 index 000000000..a9f378ac8 Binary files /dev/null and b/public/terrain/18/429289/177025.terrain differ diff --git a/public/terrain/18/429289/177026.terrain b/public/terrain/18/429289/177026.terrain new file mode 100644 index 000000000..824e390d8 Binary files /dev/null and b/public/terrain/18/429289/177026.terrain differ diff --git a/public/terrain/18/429289/177027.terrain b/public/terrain/18/429289/177027.terrain new file mode 100644 index 000000000..6e9815889 Binary files /dev/null and b/public/terrain/18/429289/177027.terrain differ diff --git a/public/terrain/18/429289/177028.terrain b/public/terrain/18/429289/177028.terrain new file mode 100644 index 000000000..2d28ad52a Binary files /dev/null and b/public/terrain/18/429289/177028.terrain differ diff --git a/public/terrain/18/429289/177029.terrain b/public/terrain/18/429289/177029.terrain new file mode 100644 index 000000000..bcb7bf76c Binary files /dev/null and b/public/terrain/18/429289/177029.terrain differ diff --git a/public/terrain/18/429290/176871.terrain b/public/terrain/18/429290/176871.terrain new file mode 100644 index 000000000..4b7d1c7b0 Binary files /dev/null and b/public/terrain/18/429290/176871.terrain differ diff --git a/public/terrain/18/429290/176872.terrain b/public/terrain/18/429290/176872.terrain new file mode 100644 index 000000000..b99a7e63e Binary files /dev/null and b/public/terrain/18/429290/176872.terrain differ diff --git a/public/terrain/18/429290/176873.terrain b/public/terrain/18/429290/176873.terrain new file mode 100644 index 000000000..8012115c7 Binary files /dev/null and b/public/terrain/18/429290/176873.terrain differ diff --git a/public/terrain/18/429290/176874.terrain b/public/terrain/18/429290/176874.terrain new file mode 100644 index 000000000..3610d6fea Binary files /dev/null and b/public/terrain/18/429290/176874.terrain differ diff --git a/public/terrain/18/429290/176875.terrain b/public/terrain/18/429290/176875.terrain new file mode 100644 index 000000000..fb52bb6f1 Binary files /dev/null and b/public/terrain/18/429290/176875.terrain differ diff --git a/public/terrain/18/429290/176876.terrain b/public/terrain/18/429290/176876.terrain new file mode 100644 index 000000000..000aa8184 Binary files /dev/null and b/public/terrain/18/429290/176876.terrain differ diff --git a/public/terrain/18/429290/176877.terrain b/public/terrain/18/429290/176877.terrain new file mode 100644 index 000000000..86c0fc26b Binary files /dev/null and b/public/terrain/18/429290/176877.terrain differ diff --git a/public/terrain/18/429290/176878.terrain b/public/terrain/18/429290/176878.terrain new file mode 100644 index 000000000..7e9e38195 Binary files /dev/null and b/public/terrain/18/429290/176878.terrain differ diff --git a/public/terrain/18/429290/176879.terrain b/public/terrain/18/429290/176879.terrain new file mode 100644 index 000000000..1237b4b7f Binary files /dev/null and b/public/terrain/18/429290/176879.terrain differ diff --git a/public/terrain/18/429290/176880.terrain b/public/terrain/18/429290/176880.terrain new file mode 100644 index 000000000..60ed477da Binary files /dev/null and b/public/terrain/18/429290/176880.terrain differ diff --git a/public/terrain/18/429290/176881.terrain b/public/terrain/18/429290/176881.terrain new file mode 100644 index 000000000..751191755 Binary files /dev/null and b/public/terrain/18/429290/176881.terrain differ diff --git a/public/terrain/18/429290/176882.terrain b/public/terrain/18/429290/176882.terrain new file mode 100644 index 000000000..161e948a7 Binary files /dev/null and b/public/terrain/18/429290/176882.terrain differ diff --git a/public/terrain/18/429290/176883.terrain b/public/terrain/18/429290/176883.terrain new file mode 100644 index 000000000..0a50c944a Binary files /dev/null and b/public/terrain/18/429290/176883.terrain differ diff --git a/public/terrain/18/429290/176884.terrain b/public/terrain/18/429290/176884.terrain new file mode 100644 index 000000000..172bfa8c4 Binary files /dev/null and b/public/terrain/18/429290/176884.terrain differ diff --git a/public/terrain/18/429290/176885.terrain b/public/terrain/18/429290/176885.terrain new file mode 100644 index 000000000..040adc19b Binary files /dev/null and b/public/terrain/18/429290/176885.terrain differ diff --git a/public/terrain/18/429290/176886.terrain b/public/terrain/18/429290/176886.terrain new file mode 100644 index 000000000..48f817a8f Binary files /dev/null and b/public/terrain/18/429290/176886.terrain differ diff --git a/public/terrain/18/429290/176887.terrain b/public/terrain/18/429290/176887.terrain new file mode 100644 index 000000000..15817ae93 Binary files /dev/null and b/public/terrain/18/429290/176887.terrain differ diff --git a/public/terrain/18/429290/176888.terrain b/public/terrain/18/429290/176888.terrain new file mode 100644 index 000000000..3d1cf5be1 Binary files /dev/null and b/public/terrain/18/429290/176888.terrain differ diff --git a/public/terrain/18/429290/176889.terrain b/public/terrain/18/429290/176889.terrain new file mode 100644 index 000000000..8dcf811a9 Binary files /dev/null and b/public/terrain/18/429290/176889.terrain differ diff --git a/public/terrain/18/429290/176890.terrain b/public/terrain/18/429290/176890.terrain new file mode 100644 index 000000000..209307400 Binary files /dev/null and b/public/terrain/18/429290/176890.terrain differ diff --git a/public/terrain/18/429290/176891.terrain b/public/terrain/18/429290/176891.terrain new file mode 100644 index 000000000..72c9ef043 Binary files /dev/null and b/public/terrain/18/429290/176891.terrain differ diff --git a/public/terrain/18/429290/176892.terrain b/public/terrain/18/429290/176892.terrain new file mode 100644 index 000000000..ac3d0e864 Binary files /dev/null and b/public/terrain/18/429290/176892.terrain differ diff --git a/public/terrain/18/429290/176893.terrain b/public/terrain/18/429290/176893.terrain new file mode 100644 index 000000000..089b1ce97 Binary files /dev/null and b/public/terrain/18/429290/176893.terrain differ diff --git a/public/terrain/18/429290/176894.terrain b/public/terrain/18/429290/176894.terrain new file mode 100644 index 000000000..47601eb2f Binary files /dev/null and b/public/terrain/18/429290/176894.terrain differ diff --git a/public/terrain/18/429290/176895.terrain b/public/terrain/18/429290/176895.terrain new file mode 100644 index 000000000..ab08aa41a Binary files /dev/null and b/public/terrain/18/429290/176895.terrain differ diff --git a/public/terrain/18/429290/176896.terrain b/public/terrain/18/429290/176896.terrain new file mode 100644 index 000000000..a30f6ca6f Binary files /dev/null and b/public/terrain/18/429290/176896.terrain differ diff --git a/public/terrain/18/429290/176897.terrain b/public/terrain/18/429290/176897.terrain new file mode 100644 index 000000000..a52e862d8 Binary files /dev/null and b/public/terrain/18/429290/176897.terrain differ diff --git a/public/terrain/18/429290/176898.terrain b/public/terrain/18/429290/176898.terrain new file mode 100644 index 000000000..8adcb77ff Binary files /dev/null and b/public/terrain/18/429290/176898.terrain differ diff --git a/public/terrain/18/429290/176899.terrain b/public/terrain/18/429290/176899.terrain new file mode 100644 index 000000000..f3a9acfa8 Binary files /dev/null and b/public/terrain/18/429290/176899.terrain differ diff --git a/public/terrain/18/429290/176900.terrain b/public/terrain/18/429290/176900.terrain new file mode 100644 index 000000000..d0da28bbe Binary files /dev/null and b/public/terrain/18/429290/176900.terrain differ diff --git a/public/terrain/18/429290/176901.terrain b/public/terrain/18/429290/176901.terrain new file mode 100644 index 000000000..31e45124a Binary files /dev/null and b/public/terrain/18/429290/176901.terrain differ diff --git a/public/terrain/18/429290/176902.terrain b/public/terrain/18/429290/176902.terrain new file mode 100644 index 000000000..44d09ab18 Binary files /dev/null and b/public/terrain/18/429290/176902.terrain differ diff --git a/public/terrain/18/429290/176903.terrain b/public/terrain/18/429290/176903.terrain new file mode 100644 index 000000000..69050bfbb Binary files /dev/null and b/public/terrain/18/429290/176903.terrain differ diff --git a/public/terrain/18/429290/176904.terrain b/public/terrain/18/429290/176904.terrain new file mode 100644 index 000000000..b3057dc96 Binary files /dev/null and b/public/terrain/18/429290/176904.terrain differ diff --git a/public/terrain/18/429290/176905.terrain b/public/terrain/18/429290/176905.terrain new file mode 100644 index 000000000..f8d3f8510 Binary files /dev/null and b/public/terrain/18/429290/176905.terrain differ diff --git a/public/terrain/18/429290/176906.terrain b/public/terrain/18/429290/176906.terrain new file mode 100644 index 000000000..f98f3aff5 Binary files /dev/null and b/public/terrain/18/429290/176906.terrain differ diff --git a/public/terrain/18/429290/176907.terrain b/public/terrain/18/429290/176907.terrain new file mode 100644 index 000000000..a452c1fe7 Binary files /dev/null and b/public/terrain/18/429290/176907.terrain differ diff --git a/public/terrain/18/429290/176908.terrain b/public/terrain/18/429290/176908.terrain new file mode 100644 index 000000000..5fc52c7ea Binary files /dev/null and b/public/terrain/18/429290/176908.terrain differ diff --git a/public/terrain/18/429290/176909.terrain b/public/terrain/18/429290/176909.terrain new file mode 100644 index 000000000..826bf1c0a Binary files /dev/null and b/public/terrain/18/429290/176909.terrain differ diff --git a/public/terrain/18/429290/176910.terrain b/public/terrain/18/429290/176910.terrain new file mode 100644 index 000000000..5cf5aaa99 Binary files /dev/null and b/public/terrain/18/429290/176910.terrain differ diff --git a/public/terrain/18/429290/176911.terrain b/public/terrain/18/429290/176911.terrain new file mode 100644 index 000000000..23d911410 Binary files /dev/null and b/public/terrain/18/429290/176911.terrain differ diff --git a/public/terrain/18/429290/176912.terrain b/public/terrain/18/429290/176912.terrain new file mode 100644 index 000000000..62ab55fa0 Binary files /dev/null and b/public/terrain/18/429290/176912.terrain differ diff --git a/public/terrain/18/429290/176913.terrain b/public/terrain/18/429290/176913.terrain new file mode 100644 index 000000000..341d9c2a7 Binary files /dev/null and b/public/terrain/18/429290/176913.terrain differ diff --git a/public/terrain/18/429290/176914.terrain b/public/terrain/18/429290/176914.terrain new file mode 100644 index 000000000..bf6d1310b Binary files /dev/null and b/public/terrain/18/429290/176914.terrain differ diff --git a/public/terrain/18/429290/176915.terrain b/public/terrain/18/429290/176915.terrain new file mode 100644 index 000000000..5209e4c9f Binary files /dev/null and b/public/terrain/18/429290/176915.terrain differ diff --git a/public/terrain/18/429290/176916.terrain b/public/terrain/18/429290/176916.terrain new file mode 100644 index 000000000..b4e63979b Binary files /dev/null and b/public/terrain/18/429290/176916.terrain differ diff --git a/public/terrain/18/429290/176917.terrain b/public/terrain/18/429290/176917.terrain new file mode 100644 index 000000000..d6a06d383 Binary files /dev/null and b/public/terrain/18/429290/176917.terrain differ diff --git a/public/terrain/18/429290/176918.terrain b/public/terrain/18/429290/176918.terrain new file mode 100644 index 000000000..dfbcb88cc Binary files /dev/null and b/public/terrain/18/429290/176918.terrain differ diff --git a/public/terrain/18/429290/176919.terrain b/public/terrain/18/429290/176919.terrain new file mode 100644 index 000000000..ab1c66bc4 Binary files /dev/null and b/public/terrain/18/429290/176919.terrain differ diff --git a/public/terrain/18/429290/176920.terrain b/public/terrain/18/429290/176920.terrain new file mode 100644 index 000000000..73b7ce394 Binary files /dev/null and b/public/terrain/18/429290/176920.terrain differ diff --git a/public/terrain/18/429290/176921.terrain b/public/terrain/18/429290/176921.terrain new file mode 100644 index 000000000..c3793a8ba Binary files /dev/null and b/public/terrain/18/429290/176921.terrain differ diff --git a/public/terrain/18/429290/176922.terrain b/public/terrain/18/429290/176922.terrain new file mode 100644 index 000000000..b39ca8b19 Binary files /dev/null and b/public/terrain/18/429290/176922.terrain differ diff --git a/public/terrain/18/429290/176923.terrain b/public/terrain/18/429290/176923.terrain new file mode 100644 index 000000000..3ea74a11c Binary files /dev/null and b/public/terrain/18/429290/176923.terrain differ diff --git a/public/terrain/18/429290/176924.terrain b/public/terrain/18/429290/176924.terrain new file mode 100644 index 000000000..dad00808e Binary files /dev/null and b/public/terrain/18/429290/176924.terrain differ diff --git a/public/terrain/18/429290/176925.terrain b/public/terrain/18/429290/176925.terrain new file mode 100644 index 000000000..d49410642 Binary files /dev/null and b/public/terrain/18/429290/176925.terrain differ diff --git a/public/terrain/18/429290/176926.terrain b/public/terrain/18/429290/176926.terrain new file mode 100644 index 000000000..29b8b50a9 Binary files /dev/null and b/public/terrain/18/429290/176926.terrain differ diff --git a/public/terrain/18/429290/176927.terrain b/public/terrain/18/429290/176927.terrain new file mode 100644 index 000000000..9f59228a5 Binary files /dev/null and b/public/terrain/18/429290/176927.terrain differ diff --git a/public/terrain/18/429290/176928.terrain b/public/terrain/18/429290/176928.terrain new file mode 100644 index 000000000..6e30712ce Binary files /dev/null and b/public/terrain/18/429290/176928.terrain differ diff --git a/public/terrain/18/429290/176929.terrain b/public/terrain/18/429290/176929.terrain new file mode 100644 index 000000000..8c937e871 Binary files /dev/null and b/public/terrain/18/429290/176929.terrain differ diff --git a/public/terrain/18/429290/176930.terrain b/public/terrain/18/429290/176930.terrain new file mode 100644 index 000000000..78e4a4392 Binary files /dev/null and b/public/terrain/18/429290/176930.terrain differ diff --git a/public/terrain/18/429290/176931.terrain b/public/terrain/18/429290/176931.terrain new file mode 100644 index 000000000..4357e19b9 Binary files /dev/null and b/public/terrain/18/429290/176931.terrain differ diff --git a/public/terrain/18/429290/176932.terrain b/public/terrain/18/429290/176932.terrain new file mode 100644 index 000000000..f81abb14d Binary files /dev/null and b/public/terrain/18/429290/176932.terrain differ diff --git a/public/terrain/18/429290/176933.terrain b/public/terrain/18/429290/176933.terrain new file mode 100644 index 000000000..7710325d3 Binary files /dev/null and b/public/terrain/18/429290/176933.terrain differ diff --git a/public/terrain/18/429290/176934.terrain b/public/terrain/18/429290/176934.terrain new file mode 100644 index 000000000..31245c8e4 Binary files /dev/null and b/public/terrain/18/429290/176934.terrain differ diff --git a/public/terrain/18/429290/176935.terrain b/public/terrain/18/429290/176935.terrain new file mode 100644 index 000000000..a52bc8c72 Binary files /dev/null and b/public/terrain/18/429290/176935.terrain differ diff --git a/public/terrain/18/429290/176936.terrain b/public/terrain/18/429290/176936.terrain new file mode 100644 index 000000000..fa75dabfa Binary files /dev/null and b/public/terrain/18/429290/176936.terrain differ diff --git a/public/terrain/18/429290/176937.terrain b/public/terrain/18/429290/176937.terrain new file mode 100644 index 000000000..b41e6586f Binary files /dev/null and b/public/terrain/18/429290/176937.terrain differ diff --git a/public/terrain/18/429290/176938.terrain b/public/terrain/18/429290/176938.terrain new file mode 100644 index 000000000..6c69f7011 Binary files /dev/null and b/public/terrain/18/429290/176938.terrain differ diff --git a/public/terrain/18/429290/176939.terrain b/public/terrain/18/429290/176939.terrain new file mode 100644 index 000000000..443aab0a9 Binary files /dev/null and b/public/terrain/18/429290/176939.terrain differ diff --git a/public/terrain/18/429290/176940.terrain b/public/terrain/18/429290/176940.terrain new file mode 100644 index 000000000..2f7aa96ef Binary files /dev/null and b/public/terrain/18/429290/176940.terrain differ diff --git a/public/terrain/18/429290/176941.terrain b/public/terrain/18/429290/176941.terrain new file mode 100644 index 000000000..afc42c0b4 Binary files /dev/null and b/public/terrain/18/429290/176941.terrain differ diff --git a/public/terrain/18/429290/176942.terrain b/public/terrain/18/429290/176942.terrain new file mode 100644 index 000000000..2ed5679fe Binary files /dev/null and b/public/terrain/18/429290/176942.terrain differ diff --git a/public/terrain/18/429290/176943.terrain b/public/terrain/18/429290/176943.terrain new file mode 100644 index 000000000..6dd843698 Binary files /dev/null and b/public/terrain/18/429290/176943.terrain differ diff --git a/public/terrain/18/429290/176944.terrain b/public/terrain/18/429290/176944.terrain new file mode 100644 index 000000000..e7beddceb Binary files /dev/null and b/public/terrain/18/429290/176944.terrain differ diff --git a/public/terrain/18/429290/176945.terrain b/public/terrain/18/429290/176945.terrain new file mode 100644 index 000000000..2d19fa19b Binary files /dev/null and b/public/terrain/18/429290/176945.terrain differ diff --git a/public/terrain/18/429290/176946.terrain b/public/terrain/18/429290/176946.terrain new file mode 100644 index 000000000..3f5ca04f7 Binary files /dev/null and b/public/terrain/18/429290/176946.terrain differ diff --git a/public/terrain/18/429290/176947.terrain b/public/terrain/18/429290/176947.terrain new file mode 100644 index 000000000..ed794d54a Binary files /dev/null and b/public/terrain/18/429290/176947.terrain differ diff --git a/public/terrain/18/429290/176948.terrain b/public/terrain/18/429290/176948.terrain new file mode 100644 index 000000000..e6428bb89 Binary files /dev/null and b/public/terrain/18/429290/176948.terrain differ diff --git a/public/terrain/18/429290/176949.terrain b/public/terrain/18/429290/176949.terrain new file mode 100644 index 000000000..acb171770 Binary files /dev/null and b/public/terrain/18/429290/176949.terrain differ diff --git a/public/terrain/18/429290/176950.terrain b/public/terrain/18/429290/176950.terrain new file mode 100644 index 000000000..f18f59da7 Binary files /dev/null and b/public/terrain/18/429290/176950.terrain differ diff --git a/public/terrain/18/429290/176951.terrain b/public/terrain/18/429290/176951.terrain new file mode 100644 index 000000000..c50c29c9f Binary files /dev/null and b/public/terrain/18/429290/176951.terrain differ diff --git a/public/terrain/18/429290/176952.terrain b/public/terrain/18/429290/176952.terrain new file mode 100644 index 000000000..1986734cc Binary files /dev/null and b/public/terrain/18/429290/176952.terrain differ diff --git a/public/terrain/18/429290/176953.terrain b/public/terrain/18/429290/176953.terrain new file mode 100644 index 000000000..23a2b0d55 Binary files /dev/null and b/public/terrain/18/429290/176953.terrain differ diff --git a/public/terrain/18/429290/176954.terrain b/public/terrain/18/429290/176954.terrain new file mode 100644 index 000000000..ab8d94b0f Binary files /dev/null and b/public/terrain/18/429290/176954.terrain differ diff --git a/public/terrain/18/429290/176955.terrain b/public/terrain/18/429290/176955.terrain new file mode 100644 index 000000000..3016f5dd8 Binary files /dev/null and b/public/terrain/18/429290/176955.terrain differ diff --git a/public/terrain/18/429290/176956.terrain b/public/terrain/18/429290/176956.terrain new file mode 100644 index 000000000..4c8069ba8 Binary files /dev/null and b/public/terrain/18/429290/176956.terrain differ diff --git a/public/terrain/18/429290/176957.terrain b/public/terrain/18/429290/176957.terrain new file mode 100644 index 000000000..3fca30f28 Binary files /dev/null and b/public/terrain/18/429290/176957.terrain differ diff --git a/public/terrain/18/429290/176958.terrain b/public/terrain/18/429290/176958.terrain new file mode 100644 index 000000000..1ae7caad4 Binary files /dev/null and b/public/terrain/18/429290/176958.terrain differ diff --git a/public/terrain/18/429290/176959.terrain b/public/terrain/18/429290/176959.terrain new file mode 100644 index 000000000..7c3a3f595 Binary files /dev/null and b/public/terrain/18/429290/176959.terrain differ diff --git a/public/terrain/18/429290/176960.terrain b/public/terrain/18/429290/176960.terrain new file mode 100644 index 000000000..06ec8dc3f Binary files /dev/null and b/public/terrain/18/429290/176960.terrain differ diff --git a/public/terrain/18/429290/176961.terrain b/public/terrain/18/429290/176961.terrain new file mode 100644 index 000000000..5cd57a987 Binary files /dev/null and b/public/terrain/18/429290/176961.terrain differ diff --git a/public/terrain/18/429290/176962.terrain b/public/terrain/18/429290/176962.terrain new file mode 100644 index 000000000..2047e45f1 Binary files /dev/null and b/public/terrain/18/429290/176962.terrain differ diff --git a/public/terrain/18/429290/176963.terrain b/public/terrain/18/429290/176963.terrain new file mode 100644 index 000000000..163e7877f Binary files /dev/null and b/public/terrain/18/429290/176963.terrain differ diff --git a/public/terrain/18/429290/176964.terrain b/public/terrain/18/429290/176964.terrain new file mode 100644 index 000000000..0772d5cff Binary files /dev/null and b/public/terrain/18/429290/176964.terrain differ diff --git a/public/terrain/18/429290/176965.terrain b/public/terrain/18/429290/176965.terrain new file mode 100644 index 000000000..2a8c6e790 Binary files /dev/null and b/public/terrain/18/429290/176965.terrain differ diff --git a/public/terrain/18/429290/176966.terrain b/public/terrain/18/429290/176966.terrain new file mode 100644 index 000000000..2f0658661 Binary files /dev/null and b/public/terrain/18/429290/176966.terrain differ diff --git a/public/terrain/18/429290/176967.terrain b/public/terrain/18/429290/176967.terrain new file mode 100644 index 000000000..518a7feb0 Binary files /dev/null and b/public/terrain/18/429290/176967.terrain differ diff --git a/public/terrain/18/429290/176968.terrain b/public/terrain/18/429290/176968.terrain new file mode 100644 index 000000000..c277c3d44 Binary files /dev/null and b/public/terrain/18/429290/176968.terrain differ diff --git a/public/terrain/18/429290/176969.terrain b/public/terrain/18/429290/176969.terrain new file mode 100644 index 000000000..f74f8a4db Binary files /dev/null and b/public/terrain/18/429290/176969.terrain differ diff --git a/public/terrain/18/429290/176970.terrain b/public/terrain/18/429290/176970.terrain new file mode 100644 index 000000000..7ac462038 Binary files /dev/null and b/public/terrain/18/429290/176970.terrain differ diff --git a/public/terrain/18/429290/176971.terrain b/public/terrain/18/429290/176971.terrain new file mode 100644 index 000000000..2d8916085 Binary files /dev/null and b/public/terrain/18/429290/176971.terrain differ diff --git a/public/terrain/18/429290/176972.terrain b/public/terrain/18/429290/176972.terrain new file mode 100644 index 000000000..63eef1e8a Binary files /dev/null and b/public/terrain/18/429290/176972.terrain differ diff --git a/public/terrain/18/429290/176973.terrain b/public/terrain/18/429290/176973.terrain new file mode 100644 index 000000000..41735095a Binary files /dev/null and b/public/terrain/18/429290/176973.terrain differ diff --git a/public/terrain/18/429290/176974.terrain b/public/terrain/18/429290/176974.terrain new file mode 100644 index 000000000..65c930be3 Binary files /dev/null and b/public/terrain/18/429290/176974.terrain differ diff --git a/public/terrain/18/429290/176975.terrain b/public/terrain/18/429290/176975.terrain new file mode 100644 index 000000000..cce51f982 Binary files /dev/null and b/public/terrain/18/429290/176975.terrain differ diff --git a/public/terrain/18/429290/176976.terrain b/public/terrain/18/429290/176976.terrain new file mode 100644 index 000000000..d6542c4cd Binary files /dev/null and b/public/terrain/18/429290/176976.terrain differ diff --git a/public/terrain/18/429290/176977.terrain b/public/terrain/18/429290/176977.terrain new file mode 100644 index 000000000..ae6d2327a Binary files /dev/null and b/public/terrain/18/429290/176977.terrain differ diff --git a/public/terrain/18/429290/176978.terrain b/public/terrain/18/429290/176978.terrain new file mode 100644 index 000000000..3640d1b92 Binary files /dev/null and b/public/terrain/18/429290/176978.terrain differ diff --git a/public/terrain/18/429290/176979.terrain b/public/terrain/18/429290/176979.terrain new file mode 100644 index 000000000..edcabed0f Binary files /dev/null and b/public/terrain/18/429290/176979.terrain differ diff --git a/public/terrain/18/429290/176980.terrain b/public/terrain/18/429290/176980.terrain new file mode 100644 index 000000000..ef7327c44 Binary files /dev/null and b/public/terrain/18/429290/176980.terrain differ diff --git a/public/terrain/18/429290/176981.terrain b/public/terrain/18/429290/176981.terrain new file mode 100644 index 000000000..7a665c8f9 Binary files /dev/null and b/public/terrain/18/429290/176981.terrain differ diff --git a/public/terrain/18/429290/176982.terrain b/public/terrain/18/429290/176982.terrain new file mode 100644 index 000000000..dbea2e663 Binary files /dev/null and b/public/terrain/18/429290/176982.terrain differ diff --git a/public/terrain/18/429290/176983.terrain b/public/terrain/18/429290/176983.terrain new file mode 100644 index 000000000..5c54e88a3 Binary files /dev/null and b/public/terrain/18/429290/176983.terrain differ diff --git a/public/terrain/18/429290/176984.terrain b/public/terrain/18/429290/176984.terrain new file mode 100644 index 000000000..bd9629de0 Binary files /dev/null and b/public/terrain/18/429290/176984.terrain differ diff --git a/public/terrain/18/429290/176985.terrain b/public/terrain/18/429290/176985.terrain new file mode 100644 index 000000000..ab6b54213 Binary files /dev/null and b/public/terrain/18/429290/176985.terrain differ diff --git a/public/terrain/18/429290/176986.terrain b/public/terrain/18/429290/176986.terrain new file mode 100644 index 000000000..4f27a5ce6 Binary files /dev/null and b/public/terrain/18/429290/176986.terrain differ diff --git a/public/terrain/18/429290/176987.terrain b/public/terrain/18/429290/176987.terrain new file mode 100644 index 000000000..1627ee908 Binary files /dev/null and b/public/terrain/18/429290/176987.terrain differ diff --git a/public/terrain/18/429290/176988.terrain b/public/terrain/18/429290/176988.terrain new file mode 100644 index 000000000..81a468b29 Binary files /dev/null and b/public/terrain/18/429290/176988.terrain differ diff --git a/public/terrain/18/429290/176989.terrain b/public/terrain/18/429290/176989.terrain new file mode 100644 index 000000000..09b2fc36d Binary files /dev/null and b/public/terrain/18/429290/176989.terrain differ diff --git a/public/terrain/18/429290/176990.terrain b/public/terrain/18/429290/176990.terrain new file mode 100644 index 000000000..0263e5b56 Binary files /dev/null and b/public/terrain/18/429290/176990.terrain differ diff --git a/public/terrain/18/429290/176991.terrain b/public/terrain/18/429290/176991.terrain new file mode 100644 index 000000000..dab8a9aa9 Binary files /dev/null and b/public/terrain/18/429290/176991.terrain differ diff --git a/public/terrain/18/429290/176992.terrain b/public/terrain/18/429290/176992.terrain new file mode 100644 index 000000000..8425f2f8b Binary files /dev/null and b/public/terrain/18/429290/176992.terrain differ diff --git a/public/terrain/18/429290/176993.terrain b/public/terrain/18/429290/176993.terrain new file mode 100644 index 000000000..8cbab706a Binary files /dev/null and b/public/terrain/18/429290/176993.terrain differ diff --git a/public/terrain/18/429290/176994.terrain b/public/terrain/18/429290/176994.terrain new file mode 100644 index 000000000..8eb5355e7 Binary files /dev/null and b/public/terrain/18/429290/176994.terrain differ diff --git a/public/terrain/18/429290/176995.terrain b/public/terrain/18/429290/176995.terrain new file mode 100644 index 000000000..82bd0d3bf Binary files /dev/null and b/public/terrain/18/429290/176995.terrain differ diff --git a/public/terrain/18/429290/176996.terrain b/public/terrain/18/429290/176996.terrain new file mode 100644 index 000000000..f24857e05 Binary files /dev/null and b/public/terrain/18/429290/176996.terrain differ diff --git a/public/terrain/18/429290/176997.terrain b/public/terrain/18/429290/176997.terrain new file mode 100644 index 000000000..b81686bf9 Binary files /dev/null and b/public/terrain/18/429290/176997.terrain differ diff --git a/public/terrain/18/429290/176998.terrain b/public/terrain/18/429290/176998.terrain new file mode 100644 index 000000000..88bb369d3 Binary files /dev/null and b/public/terrain/18/429290/176998.terrain differ diff --git a/public/terrain/18/429290/176999.terrain b/public/terrain/18/429290/176999.terrain new file mode 100644 index 000000000..cb2c1d512 Binary files /dev/null and b/public/terrain/18/429290/176999.terrain differ diff --git a/public/terrain/18/429290/177000.terrain b/public/terrain/18/429290/177000.terrain new file mode 100644 index 000000000..25f34b111 Binary files /dev/null and b/public/terrain/18/429290/177000.terrain differ diff --git a/public/terrain/18/429290/177001.terrain b/public/terrain/18/429290/177001.terrain new file mode 100644 index 000000000..0f94c3aaa Binary files /dev/null and b/public/terrain/18/429290/177001.terrain differ diff --git a/public/terrain/18/429290/177002.terrain b/public/terrain/18/429290/177002.terrain new file mode 100644 index 000000000..97bbeab47 Binary files /dev/null and b/public/terrain/18/429290/177002.terrain differ diff --git a/public/terrain/18/429290/177003.terrain b/public/terrain/18/429290/177003.terrain new file mode 100644 index 000000000..e7d20666e Binary files /dev/null and b/public/terrain/18/429290/177003.terrain differ diff --git a/public/terrain/18/429290/177004.terrain b/public/terrain/18/429290/177004.terrain new file mode 100644 index 000000000..7621342cf Binary files /dev/null and b/public/terrain/18/429290/177004.terrain differ diff --git a/public/terrain/18/429290/177005.terrain b/public/terrain/18/429290/177005.terrain new file mode 100644 index 000000000..24d7edde1 Binary files /dev/null and b/public/terrain/18/429290/177005.terrain differ diff --git a/public/terrain/18/429290/177006.terrain b/public/terrain/18/429290/177006.terrain new file mode 100644 index 000000000..0f83e5140 Binary files /dev/null and b/public/terrain/18/429290/177006.terrain differ diff --git a/public/terrain/18/429290/177007.terrain b/public/terrain/18/429290/177007.terrain new file mode 100644 index 000000000..138ac0cdc Binary files /dev/null and b/public/terrain/18/429290/177007.terrain differ diff --git a/public/terrain/18/429290/177008.terrain b/public/terrain/18/429290/177008.terrain new file mode 100644 index 000000000..18ba951a5 Binary files /dev/null and b/public/terrain/18/429290/177008.terrain differ diff --git a/public/terrain/18/429290/177009.terrain b/public/terrain/18/429290/177009.terrain new file mode 100644 index 000000000..d91851694 Binary files /dev/null and b/public/terrain/18/429290/177009.terrain differ diff --git a/public/terrain/18/429290/177010.terrain b/public/terrain/18/429290/177010.terrain new file mode 100644 index 000000000..d6115c095 Binary files /dev/null and b/public/terrain/18/429290/177010.terrain differ diff --git a/public/terrain/18/429290/177011.terrain b/public/terrain/18/429290/177011.terrain new file mode 100644 index 000000000..d7b202a5e Binary files /dev/null and b/public/terrain/18/429290/177011.terrain differ diff --git a/public/terrain/18/429290/177012.terrain b/public/terrain/18/429290/177012.terrain new file mode 100644 index 000000000..bedc8f163 Binary files /dev/null and b/public/terrain/18/429290/177012.terrain differ diff --git a/public/terrain/18/429290/177013.terrain b/public/terrain/18/429290/177013.terrain new file mode 100644 index 000000000..64d3404ab Binary files /dev/null and b/public/terrain/18/429290/177013.terrain differ diff --git a/public/terrain/18/429290/177014.terrain b/public/terrain/18/429290/177014.terrain new file mode 100644 index 000000000..d8fc3df87 Binary files /dev/null and b/public/terrain/18/429290/177014.terrain differ diff --git a/public/terrain/18/429290/177015.terrain b/public/terrain/18/429290/177015.terrain new file mode 100644 index 000000000..2a0143902 Binary files /dev/null and b/public/terrain/18/429290/177015.terrain differ diff --git a/public/terrain/18/429290/177016.terrain b/public/terrain/18/429290/177016.terrain new file mode 100644 index 000000000..f371bc442 Binary files /dev/null and b/public/terrain/18/429290/177016.terrain differ diff --git a/public/terrain/18/429290/177017.terrain b/public/terrain/18/429290/177017.terrain new file mode 100644 index 000000000..f76b6abdb Binary files /dev/null and b/public/terrain/18/429290/177017.terrain differ diff --git a/public/terrain/18/429290/177018.terrain b/public/terrain/18/429290/177018.terrain new file mode 100644 index 000000000..6f7ae6591 Binary files /dev/null and b/public/terrain/18/429290/177018.terrain differ diff --git a/public/terrain/18/429290/177019.terrain b/public/terrain/18/429290/177019.terrain new file mode 100644 index 000000000..d59cc6de4 Binary files /dev/null and b/public/terrain/18/429290/177019.terrain differ diff --git a/public/terrain/18/429290/177020.terrain b/public/terrain/18/429290/177020.terrain new file mode 100644 index 000000000..252297569 Binary files /dev/null and b/public/terrain/18/429290/177020.terrain differ diff --git a/public/terrain/18/429290/177021.terrain b/public/terrain/18/429290/177021.terrain new file mode 100644 index 000000000..ded19551d Binary files /dev/null and b/public/terrain/18/429290/177021.terrain differ diff --git a/public/terrain/18/429290/177022.terrain b/public/terrain/18/429290/177022.terrain new file mode 100644 index 000000000..91ceb9a3c Binary files /dev/null and b/public/terrain/18/429290/177022.terrain differ diff --git a/public/terrain/18/429290/177023.terrain b/public/terrain/18/429290/177023.terrain new file mode 100644 index 000000000..3949a4b19 Binary files /dev/null and b/public/terrain/18/429290/177023.terrain differ diff --git a/public/terrain/18/429290/177024.terrain b/public/terrain/18/429290/177024.terrain new file mode 100644 index 000000000..b82b31dd2 Binary files /dev/null and b/public/terrain/18/429290/177024.terrain differ diff --git a/public/terrain/18/429290/177025.terrain b/public/terrain/18/429290/177025.terrain new file mode 100644 index 000000000..4091102e8 Binary files /dev/null and b/public/terrain/18/429290/177025.terrain differ diff --git a/public/terrain/18/429290/177026.terrain b/public/terrain/18/429290/177026.terrain new file mode 100644 index 000000000..8dcebdbc2 Binary files /dev/null and b/public/terrain/18/429290/177026.terrain differ diff --git a/public/terrain/18/429290/177027.terrain b/public/terrain/18/429290/177027.terrain new file mode 100644 index 000000000..05b4216d6 Binary files /dev/null and b/public/terrain/18/429290/177027.terrain differ diff --git a/public/terrain/18/429290/177028.terrain b/public/terrain/18/429290/177028.terrain new file mode 100644 index 000000000..93b2add0d Binary files /dev/null and b/public/terrain/18/429290/177028.terrain differ diff --git a/public/terrain/18/429290/177029.terrain b/public/terrain/18/429290/177029.terrain new file mode 100644 index 000000000..5f1b1cdba Binary files /dev/null and b/public/terrain/18/429290/177029.terrain differ diff --git a/public/terrain/18/429291/176871.terrain b/public/terrain/18/429291/176871.terrain new file mode 100644 index 000000000..77e4a3535 Binary files /dev/null and b/public/terrain/18/429291/176871.terrain differ diff --git a/public/terrain/18/429291/176872.terrain b/public/terrain/18/429291/176872.terrain new file mode 100644 index 000000000..20bb3a80e Binary files /dev/null and b/public/terrain/18/429291/176872.terrain differ diff --git a/public/terrain/18/429291/176873.terrain b/public/terrain/18/429291/176873.terrain new file mode 100644 index 000000000..028808ab0 Binary files /dev/null and b/public/terrain/18/429291/176873.terrain differ diff --git a/public/terrain/18/429291/176874.terrain b/public/terrain/18/429291/176874.terrain new file mode 100644 index 000000000..7dd9e3629 Binary files /dev/null and b/public/terrain/18/429291/176874.terrain differ diff --git a/public/terrain/18/429291/176875.terrain b/public/terrain/18/429291/176875.terrain new file mode 100644 index 000000000..2c69d505d Binary files /dev/null and b/public/terrain/18/429291/176875.terrain differ diff --git a/public/terrain/18/429291/176876.terrain b/public/terrain/18/429291/176876.terrain new file mode 100644 index 000000000..88fa89e61 Binary files /dev/null and b/public/terrain/18/429291/176876.terrain differ diff --git a/public/terrain/18/429291/176877.terrain b/public/terrain/18/429291/176877.terrain new file mode 100644 index 000000000..d30274699 Binary files /dev/null and b/public/terrain/18/429291/176877.terrain differ diff --git a/public/terrain/18/429291/176878.terrain b/public/terrain/18/429291/176878.terrain new file mode 100644 index 000000000..56195d63a Binary files /dev/null and b/public/terrain/18/429291/176878.terrain differ diff --git a/public/terrain/18/429291/176879.terrain b/public/terrain/18/429291/176879.terrain new file mode 100644 index 000000000..f6d2af09a Binary files /dev/null and b/public/terrain/18/429291/176879.terrain differ diff --git a/public/terrain/18/429291/176880.terrain b/public/terrain/18/429291/176880.terrain new file mode 100644 index 000000000..014defbba Binary files /dev/null and b/public/terrain/18/429291/176880.terrain differ diff --git a/public/terrain/18/429291/176881.terrain b/public/terrain/18/429291/176881.terrain new file mode 100644 index 000000000..2c53e26f9 Binary files /dev/null and b/public/terrain/18/429291/176881.terrain differ diff --git a/public/terrain/18/429291/176882.terrain b/public/terrain/18/429291/176882.terrain new file mode 100644 index 000000000..20d00b780 Binary files /dev/null and b/public/terrain/18/429291/176882.terrain differ diff --git a/public/terrain/18/429291/176883.terrain b/public/terrain/18/429291/176883.terrain new file mode 100644 index 000000000..442576237 Binary files /dev/null and b/public/terrain/18/429291/176883.terrain differ diff --git a/public/terrain/18/429291/176884.terrain b/public/terrain/18/429291/176884.terrain new file mode 100644 index 000000000..44b8aeabc Binary files /dev/null and b/public/terrain/18/429291/176884.terrain differ diff --git a/public/terrain/18/429291/176885.terrain b/public/terrain/18/429291/176885.terrain new file mode 100644 index 000000000..e21f06d82 Binary files /dev/null and b/public/terrain/18/429291/176885.terrain differ diff --git a/public/terrain/18/429291/176886.terrain b/public/terrain/18/429291/176886.terrain new file mode 100644 index 000000000..9be0b23bf Binary files /dev/null and b/public/terrain/18/429291/176886.terrain differ diff --git a/public/terrain/18/429291/176887.terrain b/public/terrain/18/429291/176887.terrain new file mode 100644 index 000000000..883462657 Binary files /dev/null and b/public/terrain/18/429291/176887.terrain differ diff --git a/public/terrain/18/429291/176888.terrain b/public/terrain/18/429291/176888.terrain new file mode 100644 index 000000000..a41a36fd4 Binary files /dev/null and b/public/terrain/18/429291/176888.terrain differ diff --git a/public/terrain/18/429291/176889.terrain b/public/terrain/18/429291/176889.terrain new file mode 100644 index 000000000..0895bb04f Binary files /dev/null and b/public/terrain/18/429291/176889.terrain differ diff --git a/public/terrain/18/429291/176890.terrain b/public/terrain/18/429291/176890.terrain new file mode 100644 index 000000000..10bdf6bad Binary files /dev/null and b/public/terrain/18/429291/176890.terrain differ diff --git a/public/terrain/18/429291/176891.terrain b/public/terrain/18/429291/176891.terrain new file mode 100644 index 000000000..f164a4f02 Binary files /dev/null and b/public/terrain/18/429291/176891.terrain differ diff --git a/public/terrain/18/429291/176892.terrain b/public/terrain/18/429291/176892.terrain new file mode 100644 index 000000000..d22d8869b Binary files /dev/null and b/public/terrain/18/429291/176892.terrain differ diff --git a/public/terrain/18/429291/176893.terrain b/public/terrain/18/429291/176893.terrain new file mode 100644 index 000000000..cb22aa92e Binary files /dev/null and b/public/terrain/18/429291/176893.terrain differ diff --git a/public/terrain/18/429291/176894.terrain b/public/terrain/18/429291/176894.terrain new file mode 100644 index 000000000..f42041f15 Binary files /dev/null and b/public/terrain/18/429291/176894.terrain differ diff --git a/public/terrain/18/429291/176895.terrain b/public/terrain/18/429291/176895.terrain new file mode 100644 index 000000000..20526568d Binary files /dev/null and b/public/terrain/18/429291/176895.terrain differ diff --git a/public/terrain/18/429291/176896.terrain b/public/terrain/18/429291/176896.terrain new file mode 100644 index 000000000..13862b0af Binary files /dev/null and b/public/terrain/18/429291/176896.terrain differ diff --git a/public/terrain/18/429291/176897.terrain b/public/terrain/18/429291/176897.terrain new file mode 100644 index 000000000..bf16b1b88 Binary files /dev/null and b/public/terrain/18/429291/176897.terrain differ diff --git a/public/terrain/18/429291/176898.terrain b/public/terrain/18/429291/176898.terrain new file mode 100644 index 000000000..befc176c9 Binary files /dev/null and b/public/terrain/18/429291/176898.terrain differ diff --git a/public/terrain/18/429291/176899.terrain b/public/terrain/18/429291/176899.terrain new file mode 100644 index 000000000..be61b9bf5 Binary files /dev/null and b/public/terrain/18/429291/176899.terrain differ diff --git a/public/terrain/18/429291/176900.terrain b/public/terrain/18/429291/176900.terrain new file mode 100644 index 000000000..c30bec1ad Binary files /dev/null and b/public/terrain/18/429291/176900.terrain differ diff --git a/public/terrain/18/429291/176901.terrain b/public/terrain/18/429291/176901.terrain new file mode 100644 index 000000000..b5459b35e Binary files /dev/null and b/public/terrain/18/429291/176901.terrain differ diff --git a/public/terrain/18/429291/176902.terrain b/public/terrain/18/429291/176902.terrain new file mode 100644 index 000000000..b1349b014 Binary files /dev/null and b/public/terrain/18/429291/176902.terrain differ diff --git a/public/terrain/18/429291/176903.terrain b/public/terrain/18/429291/176903.terrain new file mode 100644 index 000000000..083399207 Binary files /dev/null and b/public/terrain/18/429291/176903.terrain differ diff --git a/public/terrain/18/429291/176904.terrain b/public/terrain/18/429291/176904.terrain new file mode 100644 index 000000000..fe877a427 Binary files /dev/null and b/public/terrain/18/429291/176904.terrain differ diff --git a/public/terrain/18/429291/176905.terrain b/public/terrain/18/429291/176905.terrain new file mode 100644 index 000000000..1763f889c Binary files /dev/null and b/public/terrain/18/429291/176905.terrain differ diff --git a/public/terrain/18/429291/176906.terrain b/public/terrain/18/429291/176906.terrain new file mode 100644 index 000000000..2b5f3de75 Binary files /dev/null and b/public/terrain/18/429291/176906.terrain differ diff --git a/public/terrain/18/429291/176907.terrain b/public/terrain/18/429291/176907.terrain new file mode 100644 index 000000000..3776fbe6a Binary files /dev/null and b/public/terrain/18/429291/176907.terrain differ diff --git a/public/terrain/18/429291/176908.terrain b/public/terrain/18/429291/176908.terrain new file mode 100644 index 000000000..8f9c3de7a Binary files /dev/null and b/public/terrain/18/429291/176908.terrain differ diff --git a/public/terrain/18/429291/176909.terrain b/public/terrain/18/429291/176909.terrain new file mode 100644 index 000000000..5eb3d1725 Binary files /dev/null and b/public/terrain/18/429291/176909.terrain differ diff --git a/public/terrain/18/429291/176910.terrain b/public/terrain/18/429291/176910.terrain new file mode 100644 index 000000000..689cf1fed Binary files /dev/null and b/public/terrain/18/429291/176910.terrain differ diff --git a/public/terrain/18/429291/176911.terrain b/public/terrain/18/429291/176911.terrain new file mode 100644 index 000000000..52683bed4 Binary files /dev/null and b/public/terrain/18/429291/176911.terrain differ diff --git a/public/terrain/18/429291/176912.terrain b/public/terrain/18/429291/176912.terrain new file mode 100644 index 000000000..6d92077a2 Binary files /dev/null and b/public/terrain/18/429291/176912.terrain differ diff --git a/public/terrain/18/429291/176913.terrain b/public/terrain/18/429291/176913.terrain new file mode 100644 index 000000000..9561854bf Binary files /dev/null and b/public/terrain/18/429291/176913.terrain differ diff --git a/public/terrain/18/429291/176914.terrain b/public/terrain/18/429291/176914.terrain new file mode 100644 index 000000000..2dfee76b0 Binary files /dev/null and b/public/terrain/18/429291/176914.terrain differ diff --git a/public/terrain/18/429291/176915.terrain b/public/terrain/18/429291/176915.terrain new file mode 100644 index 000000000..219b8f235 Binary files /dev/null and b/public/terrain/18/429291/176915.terrain differ diff --git a/public/terrain/18/429291/176916.terrain b/public/terrain/18/429291/176916.terrain new file mode 100644 index 000000000..e0f84cf8c Binary files /dev/null and b/public/terrain/18/429291/176916.terrain differ diff --git a/public/terrain/18/429291/176917.terrain b/public/terrain/18/429291/176917.terrain new file mode 100644 index 000000000..bcd7ef6e8 Binary files /dev/null and b/public/terrain/18/429291/176917.terrain differ diff --git a/public/terrain/18/429291/176918.terrain b/public/terrain/18/429291/176918.terrain new file mode 100644 index 000000000..51aa78c2e Binary files /dev/null and b/public/terrain/18/429291/176918.terrain differ diff --git a/public/terrain/18/429291/176919.terrain b/public/terrain/18/429291/176919.terrain new file mode 100644 index 000000000..8a4f28b0f Binary files /dev/null and b/public/terrain/18/429291/176919.terrain differ diff --git a/public/terrain/18/429291/176920.terrain b/public/terrain/18/429291/176920.terrain new file mode 100644 index 000000000..1e938ce25 Binary files /dev/null and b/public/terrain/18/429291/176920.terrain differ diff --git a/public/terrain/18/429291/176921.terrain b/public/terrain/18/429291/176921.terrain new file mode 100644 index 000000000..91c5544a4 Binary files /dev/null and b/public/terrain/18/429291/176921.terrain differ diff --git a/public/terrain/18/429291/176922.terrain b/public/terrain/18/429291/176922.terrain new file mode 100644 index 000000000..9a1bb5b71 Binary files /dev/null and b/public/terrain/18/429291/176922.terrain differ diff --git a/public/terrain/18/429291/176923.terrain b/public/terrain/18/429291/176923.terrain new file mode 100644 index 000000000..074899503 Binary files /dev/null and b/public/terrain/18/429291/176923.terrain differ diff --git a/public/terrain/18/429291/176924.terrain b/public/terrain/18/429291/176924.terrain new file mode 100644 index 000000000..b32026bbc Binary files /dev/null and b/public/terrain/18/429291/176924.terrain differ diff --git a/public/terrain/18/429291/176925.terrain b/public/terrain/18/429291/176925.terrain new file mode 100644 index 000000000..c0108ae59 Binary files /dev/null and b/public/terrain/18/429291/176925.terrain differ diff --git a/public/terrain/18/429291/176926.terrain b/public/terrain/18/429291/176926.terrain new file mode 100644 index 000000000..9d23ecaea Binary files /dev/null and b/public/terrain/18/429291/176926.terrain differ diff --git a/public/terrain/18/429291/176927.terrain b/public/terrain/18/429291/176927.terrain new file mode 100644 index 000000000..ccdfe369a Binary files /dev/null and b/public/terrain/18/429291/176927.terrain differ diff --git a/public/terrain/18/429291/176928.terrain b/public/terrain/18/429291/176928.terrain new file mode 100644 index 000000000..1338f93d0 Binary files /dev/null and b/public/terrain/18/429291/176928.terrain differ diff --git a/public/terrain/18/429291/176929.terrain b/public/terrain/18/429291/176929.terrain new file mode 100644 index 000000000..c132eaa8e Binary files /dev/null and b/public/terrain/18/429291/176929.terrain differ diff --git a/public/terrain/18/429291/176930.terrain b/public/terrain/18/429291/176930.terrain new file mode 100644 index 000000000..f6b135758 Binary files /dev/null and b/public/terrain/18/429291/176930.terrain differ diff --git a/public/terrain/18/429291/176931.terrain b/public/terrain/18/429291/176931.terrain new file mode 100644 index 000000000..a2bd784b8 Binary files /dev/null and b/public/terrain/18/429291/176931.terrain differ diff --git a/public/terrain/18/429291/176932.terrain b/public/terrain/18/429291/176932.terrain new file mode 100644 index 000000000..d107a8446 Binary files /dev/null and b/public/terrain/18/429291/176932.terrain differ diff --git a/public/terrain/18/429291/176933.terrain b/public/terrain/18/429291/176933.terrain new file mode 100644 index 000000000..5f3ab5d22 Binary files /dev/null and b/public/terrain/18/429291/176933.terrain differ diff --git a/public/terrain/18/429291/176934.terrain b/public/terrain/18/429291/176934.terrain new file mode 100644 index 000000000..5c20950f3 Binary files /dev/null and b/public/terrain/18/429291/176934.terrain differ diff --git a/public/terrain/18/429291/176935.terrain b/public/terrain/18/429291/176935.terrain new file mode 100644 index 000000000..a8e32a5e0 Binary files /dev/null and b/public/terrain/18/429291/176935.terrain differ diff --git a/public/terrain/18/429291/176936.terrain b/public/terrain/18/429291/176936.terrain new file mode 100644 index 000000000..34c1ebd80 Binary files /dev/null and b/public/terrain/18/429291/176936.terrain differ diff --git a/public/terrain/18/429291/176937.terrain b/public/terrain/18/429291/176937.terrain new file mode 100644 index 000000000..c54e9a183 Binary files /dev/null and b/public/terrain/18/429291/176937.terrain differ diff --git a/public/terrain/18/429291/176938.terrain b/public/terrain/18/429291/176938.terrain new file mode 100644 index 000000000..fe8b37f35 Binary files /dev/null and b/public/terrain/18/429291/176938.terrain differ diff --git a/public/terrain/18/429291/176939.terrain b/public/terrain/18/429291/176939.terrain new file mode 100644 index 000000000..fec130363 Binary files /dev/null and b/public/terrain/18/429291/176939.terrain differ diff --git a/public/terrain/18/429291/176940.terrain b/public/terrain/18/429291/176940.terrain new file mode 100644 index 000000000..a1e4072ca Binary files /dev/null and b/public/terrain/18/429291/176940.terrain differ diff --git a/public/terrain/18/429291/176941.terrain b/public/terrain/18/429291/176941.terrain new file mode 100644 index 000000000..47d69ad83 Binary files /dev/null and b/public/terrain/18/429291/176941.terrain differ diff --git a/public/terrain/18/429291/176942.terrain b/public/terrain/18/429291/176942.terrain new file mode 100644 index 000000000..21ee0780a Binary files /dev/null and b/public/terrain/18/429291/176942.terrain differ diff --git a/public/terrain/18/429291/176943.terrain b/public/terrain/18/429291/176943.terrain new file mode 100644 index 000000000..1a7758654 Binary files /dev/null and b/public/terrain/18/429291/176943.terrain differ diff --git a/public/terrain/18/429291/176944.terrain b/public/terrain/18/429291/176944.terrain new file mode 100644 index 000000000..1be7ffe65 Binary files /dev/null and b/public/terrain/18/429291/176944.terrain differ diff --git a/public/terrain/18/429291/176945.terrain b/public/terrain/18/429291/176945.terrain new file mode 100644 index 000000000..b6d211f58 Binary files /dev/null and b/public/terrain/18/429291/176945.terrain differ diff --git a/public/terrain/18/429291/176946.terrain b/public/terrain/18/429291/176946.terrain new file mode 100644 index 000000000..2d16a16e2 Binary files /dev/null and b/public/terrain/18/429291/176946.terrain differ diff --git a/public/terrain/18/429291/176947.terrain b/public/terrain/18/429291/176947.terrain new file mode 100644 index 000000000..50210c4c9 Binary files /dev/null and b/public/terrain/18/429291/176947.terrain differ diff --git a/public/terrain/18/429291/176948.terrain b/public/terrain/18/429291/176948.terrain new file mode 100644 index 000000000..b01cc824a Binary files /dev/null and b/public/terrain/18/429291/176948.terrain differ diff --git a/public/terrain/18/429291/176949.terrain b/public/terrain/18/429291/176949.terrain new file mode 100644 index 000000000..91c62c965 Binary files /dev/null and b/public/terrain/18/429291/176949.terrain differ diff --git a/public/terrain/18/429291/176950.terrain b/public/terrain/18/429291/176950.terrain new file mode 100644 index 000000000..3d4c155af Binary files /dev/null and b/public/terrain/18/429291/176950.terrain differ diff --git a/public/terrain/18/429291/176951.terrain b/public/terrain/18/429291/176951.terrain new file mode 100644 index 000000000..4e2eeccff Binary files /dev/null and b/public/terrain/18/429291/176951.terrain differ diff --git a/public/terrain/18/429291/176952.terrain b/public/terrain/18/429291/176952.terrain new file mode 100644 index 000000000..4d975d83a Binary files /dev/null and b/public/terrain/18/429291/176952.terrain differ diff --git a/public/terrain/18/429291/176953.terrain b/public/terrain/18/429291/176953.terrain new file mode 100644 index 000000000..09d555ab9 Binary files /dev/null and b/public/terrain/18/429291/176953.terrain differ diff --git a/public/terrain/18/429291/176954.terrain b/public/terrain/18/429291/176954.terrain new file mode 100644 index 000000000..e68148cbf Binary files /dev/null and b/public/terrain/18/429291/176954.terrain differ diff --git a/public/terrain/18/429291/176955.terrain b/public/terrain/18/429291/176955.terrain new file mode 100644 index 000000000..7a2cc2b55 Binary files /dev/null and b/public/terrain/18/429291/176955.terrain differ diff --git a/public/terrain/18/429291/176956.terrain b/public/terrain/18/429291/176956.terrain new file mode 100644 index 000000000..6def9ea10 Binary files /dev/null and b/public/terrain/18/429291/176956.terrain differ diff --git a/public/terrain/18/429291/176957.terrain b/public/terrain/18/429291/176957.terrain new file mode 100644 index 000000000..91d1f340d Binary files /dev/null and b/public/terrain/18/429291/176957.terrain differ diff --git a/public/terrain/18/429291/176958.terrain b/public/terrain/18/429291/176958.terrain new file mode 100644 index 000000000..6b9edca2c Binary files /dev/null and b/public/terrain/18/429291/176958.terrain differ diff --git a/public/terrain/18/429291/176959.terrain b/public/terrain/18/429291/176959.terrain new file mode 100644 index 000000000..f6f89065d Binary files /dev/null and b/public/terrain/18/429291/176959.terrain differ diff --git a/public/terrain/18/429291/176960.terrain b/public/terrain/18/429291/176960.terrain new file mode 100644 index 000000000..09e52aedc Binary files /dev/null and b/public/terrain/18/429291/176960.terrain differ diff --git a/public/terrain/18/429291/176961.terrain b/public/terrain/18/429291/176961.terrain new file mode 100644 index 000000000..ed7e7b989 Binary files /dev/null and b/public/terrain/18/429291/176961.terrain differ diff --git a/public/terrain/18/429291/176962.terrain b/public/terrain/18/429291/176962.terrain new file mode 100644 index 000000000..6b1c5c17d Binary files /dev/null and b/public/terrain/18/429291/176962.terrain differ diff --git a/public/terrain/18/429291/176963.terrain b/public/terrain/18/429291/176963.terrain new file mode 100644 index 000000000..52875a816 Binary files /dev/null and b/public/terrain/18/429291/176963.terrain differ diff --git a/public/terrain/18/429291/176964.terrain b/public/terrain/18/429291/176964.terrain new file mode 100644 index 000000000..f004a9609 Binary files /dev/null and b/public/terrain/18/429291/176964.terrain differ diff --git a/public/terrain/18/429291/176965.terrain b/public/terrain/18/429291/176965.terrain new file mode 100644 index 000000000..3d5c6d896 Binary files /dev/null and b/public/terrain/18/429291/176965.terrain differ diff --git a/public/terrain/18/429291/176966.terrain b/public/terrain/18/429291/176966.terrain new file mode 100644 index 000000000..e4871ff46 Binary files /dev/null and b/public/terrain/18/429291/176966.terrain differ diff --git a/public/terrain/18/429291/176967.terrain b/public/terrain/18/429291/176967.terrain new file mode 100644 index 000000000..0a6ee4e70 Binary files /dev/null and b/public/terrain/18/429291/176967.terrain differ diff --git a/public/terrain/18/429291/176968.terrain b/public/terrain/18/429291/176968.terrain new file mode 100644 index 000000000..eba82c234 Binary files /dev/null and b/public/terrain/18/429291/176968.terrain differ diff --git a/public/terrain/18/429291/176969.terrain b/public/terrain/18/429291/176969.terrain new file mode 100644 index 000000000..41fb879e6 Binary files /dev/null and b/public/terrain/18/429291/176969.terrain differ diff --git a/public/terrain/18/429291/176970.terrain b/public/terrain/18/429291/176970.terrain new file mode 100644 index 000000000..83c305c2c Binary files /dev/null and b/public/terrain/18/429291/176970.terrain differ diff --git a/public/terrain/18/429291/176971.terrain b/public/terrain/18/429291/176971.terrain new file mode 100644 index 000000000..57a37ff5b Binary files /dev/null and b/public/terrain/18/429291/176971.terrain differ diff --git a/public/terrain/18/429291/176972.terrain b/public/terrain/18/429291/176972.terrain new file mode 100644 index 000000000..bd0fb1a7c Binary files /dev/null and b/public/terrain/18/429291/176972.terrain differ diff --git a/public/terrain/18/429291/176973.terrain b/public/terrain/18/429291/176973.terrain new file mode 100644 index 000000000..605af57f0 Binary files /dev/null and b/public/terrain/18/429291/176973.terrain differ diff --git a/public/terrain/18/429291/176974.terrain b/public/terrain/18/429291/176974.terrain new file mode 100644 index 000000000..bcfff1678 Binary files /dev/null and b/public/terrain/18/429291/176974.terrain differ diff --git a/public/terrain/18/429291/176975.terrain b/public/terrain/18/429291/176975.terrain new file mode 100644 index 000000000..36b877171 Binary files /dev/null and b/public/terrain/18/429291/176975.terrain differ diff --git a/public/terrain/18/429291/176976.terrain b/public/terrain/18/429291/176976.terrain new file mode 100644 index 000000000..69fa02365 Binary files /dev/null and b/public/terrain/18/429291/176976.terrain differ diff --git a/public/terrain/18/429291/176977.terrain b/public/terrain/18/429291/176977.terrain new file mode 100644 index 000000000..cb32fc693 Binary files /dev/null and b/public/terrain/18/429291/176977.terrain differ diff --git a/public/terrain/18/429291/176978.terrain b/public/terrain/18/429291/176978.terrain new file mode 100644 index 000000000..8867bc148 Binary files /dev/null and b/public/terrain/18/429291/176978.terrain differ diff --git a/public/terrain/18/429291/176979.terrain b/public/terrain/18/429291/176979.terrain new file mode 100644 index 000000000..4b399d9c7 Binary files /dev/null and b/public/terrain/18/429291/176979.terrain differ diff --git a/public/terrain/18/429291/176980.terrain b/public/terrain/18/429291/176980.terrain new file mode 100644 index 000000000..af5a62402 Binary files /dev/null and b/public/terrain/18/429291/176980.terrain differ diff --git a/public/terrain/18/429291/176981.terrain b/public/terrain/18/429291/176981.terrain new file mode 100644 index 000000000..c10f96350 Binary files /dev/null and b/public/terrain/18/429291/176981.terrain differ diff --git a/public/terrain/18/429291/176982.terrain b/public/terrain/18/429291/176982.terrain new file mode 100644 index 000000000..7060c54ef Binary files /dev/null and b/public/terrain/18/429291/176982.terrain differ diff --git a/public/terrain/18/429291/176983.terrain b/public/terrain/18/429291/176983.terrain new file mode 100644 index 000000000..020a6a3aa Binary files /dev/null and b/public/terrain/18/429291/176983.terrain differ diff --git a/public/terrain/18/429291/176984.terrain b/public/terrain/18/429291/176984.terrain new file mode 100644 index 000000000..9ec3f991e Binary files /dev/null and b/public/terrain/18/429291/176984.terrain differ diff --git a/public/terrain/18/429291/176985.terrain b/public/terrain/18/429291/176985.terrain new file mode 100644 index 000000000..a927ae3fb Binary files /dev/null and b/public/terrain/18/429291/176985.terrain differ diff --git a/public/terrain/18/429291/176986.terrain b/public/terrain/18/429291/176986.terrain new file mode 100644 index 000000000..d92057bc0 Binary files /dev/null and b/public/terrain/18/429291/176986.terrain differ diff --git a/public/terrain/18/429291/176987.terrain b/public/terrain/18/429291/176987.terrain new file mode 100644 index 000000000..14b6b2f26 Binary files /dev/null and b/public/terrain/18/429291/176987.terrain differ diff --git a/public/terrain/18/429291/176988.terrain b/public/terrain/18/429291/176988.terrain new file mode 100644 index 000000000..751681e52 Binary files /dev/null and b/public/terrain/18/429291/176988.terrain differ diff --git a/public/terrain/18/429291/176989.terrain b/public/terrain/18/429291/176989.terrain new file mode 100644 index 000000000..5a78c34c0 Binary files /dev/null and b/public/terrain/18/429291/176989.terrain differ diff --git a/public/terrain/18/429291/176990.terrain b/public/terrain/18/429291/176990.terrain new file mode 100644 index 000000000..80aa9f009 Binary files /dev/null and b/public/terrain/18/429291/176990.terrain differ diff --git a/public/terrain/18/429291/176991.terrain b/public/terrain/18/429291/176991.terrain new file mode 100644 index 000000000..f337ef26c Binary files /dev/null and b/public/terrain/18/429291/176991.terrain differ diff --git a/public/terrain/18/429291/176992.terrain b/public/terrain/18/429291/176992.terrain new file mode 100644 index 000000000..cd7365c32 Binary files /dev/null and b/public/terrain/18/429291/176992.terrain differ diff --git a/public/terrain/18/429291/176993.terrain b/public/terrain/18/429291/176993.terrain new file mode 100644 index 000000000..3c9e28e07 Binary files /dev/null and b/public/terrain/18/429291/176993.terrain differ diff --git a/public/terrain/18/429291/176994.terrain b/public/terrain/18/429291/176994.terrain new file mode 100644 index 000000000..63dc555d3 Binary files /dev/null and b/public/terrain/18/429291/176994.terrain differ diff --git a/public/terrain/18/429291/176995.terrain b/public/terrain/18/429291/176995.terrain new file mode 100644 index 000000000..5e2fb678f Binary files /dev/null and b/public/terrain/18/429291/176995.terrain differ diff --git a/public/terrain/18/429291/176996.terrain b/public/terrain/18/429291/176996.terrain new file mode 100644 index 000000000..c920b9a6b Binary files /dev/null and b/public/terrain/18/429291/176996.terrain differ diff --git a/public/terrain/18/429291/176997.terrain b/public/terrain/18/429291/176997.terrain new file mode 100644 index 000000000..eebd47964 Binary files /dev/null and b/public/terrain/18/429291/176997.terrain differ diff --git a/public/terrain/18/429291/176998.terrain b/public/terrain/18/429291/176998.terrain new file mode 100644 index 000000000..ce301ca30 Binary files /dev/null and b/public/terrain/18/429291/176998.terrain differ diff --git a/public/terrain/18/429291/176999.terrain b/public/terrain/18/429291/176999.terrain new file mode 100644 index 000000000..c27abe723 Binary files /dev/null and b/public/terrain/18/429291/176999.terrain differ diff --git a/public/terrain/18/429291/177000.terrain b/public/terrain/18/429291/177000.terrain new file mode 100644 index 000000000..6c8002f27 Binary files /dev/null and b/public/terrain/18/429291/177000.terrain differ diff --git a/public/terrain/18/429291/177001.terrain b/public/terrain/18/429291/177001.terrain new file mode 100644 index 000000000..d52f358f8 Binary files /dev/null and b/public/terrain/18/429291/177001.terrain differ diff --git a/public/terrain/18/429291/177002.terrain b/public/terrain/18/429291/177002.terrain new file mode 100644 index 000000000..6cafa5821 Binary files /dev/null and b/public/terrain/18/429291/177002.terrain differ diff --git a/public/terrain/18/429291/177003.terrain b/public/terrain/18/429291/177003.terrain new file mode 100644 index 000000000..047aef69f Binary files /dev/null and b/public/terrain/18/429291/177003.terrain differ diff --git a/public/terrain/18/429291/177004.terrain b/public/terrain/18/429291/177004.terrain new file mode 100644 index 000000000..1b39b5691 Binary files /dev/null and b/public/terrain/18/429291/177004.terrain differ diff --git a/public/terrain/18/429291/177005.terrain b/public/terrain/18/429291/177005.terrain new file mode 100644 index 000000000..275f813a3 Binary files /dev/null and b/public/terrain/18/429291/177005.terrain differ diff --git a/public/terrain/18/429291/177006.terrain b/public/terrain/18/429291/177006.terrain new file mode 100644 index 000000000..5791e61f9 Binary files /dev/null and b/public/terrain/18/429291/177006.terrain differ diff --git a/public/terrain/18/429291/177007.terrain b/public/terrain/18/429291/177007.terrain new file mode 100644 index 000000000..1f1e75c58 Binary files /dev/null and b/public/terrain/18/429291/177007.terrain differ diff --git a/public/terrain/18/429291/177008.terrain b/public/terrain/18/429291/177008.terrain new file mode 100644 index 000000000..3062a2f4e Binary files /dev/null and b/public/terrain/18/429291/177008.terrain differ diff --git a/public/terrain/18/429291/177009.terrain b/public/terrain/18/429291/177009.terrain new file mode 100644 index 000000000..fc2cba570 Binary files /dev/null and b/public/terrain/18/429291/177009.terrain differ diff --git a/public/terrain/18/429291/177010.terrain b/public/terrain/18/429291/177010.terrain new file mode 100644 index 000000000..b19a6f0f5 Binary files /dev/null and b/public/terrain/18/429291/177010.terrain differ diff --git a/public/terrain/18/429291/177011.terrain b/public/terrain/18/429291/177011.terrain new file mode 100644 index 000000000..50ce7bc96 Binary files /dev/null and b/public/terrain/18/429291/177011.terrain differ diff --git a/public/terrain/18/429291/177012.terrain b/public/terrain/18/429291/177012.terrain new file mode 100644 index 000000000..9c019845c Binary files /dev/null and b/public/terrain/18/429291/177012.terrain differ diff --git a/public/terrain/18/429291/177013.terrain b/public/terrain/18/429291/177013.terrain new file mode 100644 index 000000000..418e12974 Binary files /dev/null and b/public/terrain/18/429291/177013.terrain differ diff --git a/public/terrain/18/429291/177014.terrain b/public/terrain/18/429291/177014.terrain new file mode 100644 index 000000000..dff25feb5 Binary files /dev/null and b/public/terrain/18/429291/177014.terrain differ diff --git a/public/terrain/18/429291/177015.terrain b/public/terrain/18/429291/177015.terrain new file mode 100644 index 000000000..d84883a31 Binary files /dev/null and b/public/terrain/18/429291/177015.terrain differ diff --git a/public/terrain/18/429291/177016.terrain b/public/terrain/18/429291/177016.terrain new file mode 100644 index 000000000..9e45307f7 Binary files /dev/null and b/public/terrain/18/429291/177016.terrain differ diff --git a/public/terrain/18/429291/177017.terrain b/public/terrain/18/429291/177017.terrain new file mode 100644 index 000000000..f0f5e76ae Binary files /dev/null and b/public/terrain/18/429291/177017.terrain differ diff --git a/public/terrain/18/429291/177018.terrain b/public/terrain/18/429291/177018.terrain new file mode 100644 index 000000000..0d7c56d79 Binary files /dev/null and b/public/terrain/18/429291/177018.terrain differ diff --git a/public/terrain/18/429291/177019.terrain b/public/terrain/18/429291/177019.terrain new file mode 100644 index 000000000..4a192f840 Binary files /dev/null and b/public/terrain/18/429291/177019.terrain differ diff --git a/public/terrain/18/429291/177020.terrain b/public/terrain/18/429291/177020.terrain new file mode 100644 index 000000000..88a78ff79 Binary files /dev/null and b/public/terrain/18/429291/177020.terrain differ diff --git a/public/terrain/18/429291/177021.terrain b/public/terrain/18/429291/177021.terrain new file mode 100644 index 000000000..697b48a9c Binary files /dev/null and b/public/terrain/18/429291/177021.terrain differ diff --git a/public/terrain/18/429291/177022.terrain b/public/terrain/18/429291/177022.terrain new file mode 100644 index 000000000..39ed45414 Binary files /dev/null and b/public/terrain/18/429291/177022.terrain differ diff --git a/public/terrain/18/429291/177023.terrain b/public/terrain/18/429291/177023.terrain new file mode 100644 index 000000000..7597cbd1c Binary files /dev/null and b/public/terrain/18/429291/177023.terrain differ diff --git a/public/terrain/18/429291/177024.terrain b/public/terrain/18/429291/177024.terrain new file mode 100644 index 000000000..3d5044d69 Binary files /dev/null and b/public/terrain/18/429291/177024.terrain differ diff --git a/public/terrain/18/429291/177025.terrain b/public/terrain/18/429291/177025.terrain new file mode 100644 index 000000000..a6bc09da8 Binary files /dev/null and b/public/terrain/18/429291/177025.terrain differ diff --git a/public/terrain/18/429291/177026.terrain b/public/terrain/18/429291/177026.terrain new file mode 100644 index 000000000..ffeaceef1 Binary files /dev/null and b/public/terrain/18/429291/177026.terrain differ diff --git a/public/terrain/18/429291/177027.terrain b/public/terrain/18/429291/177027.terrain new file mode 100644 index 000000000..2d38accde Binary files /dev/null and b/public/terrain/18/429291/177027.terrain differ diff --git a/public/terrain/18/429291/177028.terrain b/public/terrain/18/429291/177028.terrain new file mode 100644 index 000000000..fbee00b18 Binary files /dev/null and b/public/terrain/18/429291/177028.terrain differ diff --git a/public/terrain/18/429291/177029.terrain b/public/terrain/18/429291/177029.terrain new file mode 100644 index 000000000..111d8fc85 Binary files /dev/null and b/public/terrain/18/429291/177029.terrain differ diff --git a/public/terrain/18/429292/176871.terrain b/public/terrain/18/429292/176871.terrain new file mode 100644 index 000000000..0deaa8013 Binary files /dev/null and b/public/terrain/18/429292/176871.terrain differ diff --git a/public/terrain/18/429292/176872.terrain b/public/terrain/18/429292/176872.terrain new file mode 100644 index 000000000..77b898986 Binary files /dev/null and b/public/terrain/18/429292/176872.terrain differ diff --git a/public/terrain/18/429292/176873.terrain b/public/terrain/18/429292/176873.terrain new file mode 100644 index 000000000..79c737ccf Binary files /dev/null and b/public/terrain/18/429292/176873.terrain differ diff --git a/public/terrain/18/429292/176874.terrain b/public/terrain/18/429292/176874.terrain new file mode 100644 index 000000000..ab9d97e5d Binary files /dev/null and b/public/terrain/18/429292/176874.terrain differ diff --git a/public/terrain/18/429292/176875.terrain b/public/terrain/18/429292/176875.terrain new file mode 100644 index 000000000..532306c37 Binary files /dev/null and b/public/terrain/18/429292/176875.terrain differ diff --git a/public/terrain/18/429292/176876.terrain b/public/terrain/18/429292/176876.terrain new file mode 100644 index 000000000..e8f3c2d58 Binary files /dev/null and b/public/terrain/18/429292/176876.terrain differ diff --git a/public/terrain/18/429292/176877.terrain b/public/terrain/18/429292/176877.terrain new file mode 100644 index 000000000..d29023ac6 Binary files /dev/null and b/public/terrain/18/429292/176877.terrain differ diff --git a/public/terrain/18/429292/176878.terrain b/public/terrain/18/429292/176878.terrain new file mode 100644 index 000000000..2d820dae2 Binary files /dev/null and b/public/terrain/18/429292/176878.terrain differ diff --git a/public/terrain/18/429292/176879.terrain b/public/terrain/18/429292/176879.terrain new file mode 100644 index 000000000..5f2aec6d2 Binary files /dev/null and b/public/terrain/18/429292/176879.terrain differ diff --git a/public/terrain/18/429292/176880.terrain b/public/terrain/18/429292/176880.terrain new file mode 100644 index 000000000..903f1a7c3 Binary files /dev/null and b/public/terrain/18/429292/176880.terrain differ diff --git a/public/terrain/18/429292/176881.terrain b/public/terrain/18/429292/176881.terrain new file mode 100644 index 000000000..8facf42d0 Binary files /dev/null and b/public/terrain/18/429292/176881.terrain differ diff --git a/public/terrain/18/429292/176882.terrain b/public/terrain/18/429292/176882.terrain new file mode 100644 index 000000000..7b05a1ee2 Binary files /dev/null and b/public/terrain/18/429292/176882.terrain differ diff --git a/public/terrain/18/429292/176883.terrain b/public/terrain/18/429292/176883.terrain new file mode 100644 index 000000000..a9ec46f48 Binary files /dev/null and b/public/terrain/18/429292/176883.terrain differ diff --git a/public/terrain/18/429292/176884.terrain b/public/terrain/18/429292/176884.terrain new file mode 100644 index 000000000..c31f924eb Binary files /dev/null and b/public/terrain/18/429292/176884.terrain differ diff --git a/public/terrain/18/429292/176885.terrain b/public/terrain/18/429292/176885.terrain new file mode 100644 index 000000000..e7c93ca6e Binary files /dev/null and b/public/terrain/18/429292/176885.terrain differ diff --git a/public/terrain/18/429292/176886.terrain b/public/terrain/18/429292/176886.terrain new file mode 100644 index 000000000..8af9f618a Binary files /dev/null and b/public/terrain/18/429292/176886.terrain differ diff --git a/public/terrain/18/429292/176887.terrain b/public/terrain/18/429292/176887.terrain new file mode 100644 index 000000000..3b65bbc1b Binary files /dev/null and b/public/terrain/18/429292/176887.terrain differ diff --git a/public/terrain/18/429292/176888.terrain b/public/terrain/18/429292/176888.terrain new file mode 100644 index 000000000..6278a7d97 Binary files /dev/null and b/public/terrain/18/429292/176888.terrain differ diff --git a/public/terrain/18/429292/176889.terrain b/public/terrain/18/429292/176889.terrain new file mode 100644 index 000000000..8d37a3911 Binary files /dev/null and b/public/terrain/18/429292/176889.terrain differ diff --git a/public/terrain/18/429292/176890.terrain b/public/terrain/18/429292/176890.terrain new file mode 100644 index 000000000..bb4a88b96 Binary files /dev/null and b/public/terrain/18/429292/176890.terrain differ diff --git a/public/terrain/18/429292/176891.terrain b/public/terrain/18/429292/176891.terrain new file mode 100644 index 000000000..172110a9a Binary files /dev/null and b/public/terrain/18/429292/176891.terrain differ diff --git a/public/terrain/18/429292/176892.terrain b/public/terrain/18/429292/176892.terrain new file mode 100644 index 000000000..93cd63b46 Binary files /dev/null and b/public/terrain/18/429292/176892.terrain differ diff --git a/public/terrain/18/429292/176893.terrain b/public/terrain/18/429292/176893.terrain new file mode 100644 index 000000000..1ca77b190 Binary files /dev/null and b/public/terrain/18/429292/176893.terrain differ diff --git a/public/terrain/18/429292/176894.terrain b/public/terrain/18/429292/176894.terrain new file mode 100644 index 000000000..a64eb1629 Binary files /dev/null and b/public/terrain/18/429292/176894.terrain differ diff --git a/public/terrain/18/429292/176895.terrain b/public/terrain/18/429292/176895.terrain new file mode 100644 index 000000000..44fc056b3 Binary files /dev/null and b/public/terrain/18/429292/176895.terrain differ diff --git a/public/terrain/18/429292/176896.terrain b/public/terrain/18/429292/176896.terrain new file mode 100644 index 000000000..b0630d917 Binary files /dev/null and b/public/terrain/18/429292/176896.terrain differ diff --git a/public/terrain/18/429292/176897.terrain b/public/terrain/18/429292/176897.terrain new file mode 100644 index 000000000..f268d1597 Binary files /dev/null and b/public/terrain/18/429292/176897.terrain differ diff --git a/public/terrain/18/429292/176898.terrain b/public/terrain/18/429292/176898.terrain new file mode 100644 index 000000000..b965d2f54 Binary files /dev/null and b/public/terrain/18/429292/176898.terrain differ diff --git a/public/terrain/18/429292/176899.terrain b/public/terrain/18/429292/176899.terrain new file mode 100644 index 000000000..6911f9159 Binary files /dev/null and b/public/terrain/18/429292/176899.terrain differ diff --git a/public/terrain/18/429292/176900.terrain b/public/terrain/18/429292/176900.terrain new file mode 100644 index 000000000..464222002 Binary files /dev/null and b/public/terrain/18/429292/176900.terrain differ diff --git a/public/terrain/18/429292/176901.terrain b/public/terrain/18/429292/176901.terrain new file mode 100644 index 000000000..c2efb5a9b Binary files /dev/null and b/public/terrain/18/429292/176901.terrain differ diff --git a/public/terrain/18/429292/176902.terrain b/public/terrain/18/429292/176902.terrain new file mode 100644 index 000000000..83f47d8a8 Binary files /dev/null and b/public/terrain/18/429292/176902.terrain differ diff --git a/public/terrain/18/429292/176903.terrain b/public/terrain/18/429292/176903.terrain new file mode 100644 index 000000000..e5620e716 Binary files /dev/null and b/public/terrain/18/429292/176903.terrain differ diff --git a/public/terrain/18/429292/176904.terrain b/public/terrain/18/429292/176904.terrain new file mode 100644 index 000000000..cd85f3cda Binary files /dev/null and b/public/terrain/18/429292/176904.terrain differ diff --git a/public/terrain/18/429292/176905.terrain b/public/terrain/18/429292/176905.terrain new file mode 100644 index 000000000..0e9f268ec Binary files /dev/null and b/public/terrain/18/429292/176905.terrain differ diff --git a/public/terrain/18/429292/176906.terrain b/public/terrain/18/429292/176906.terrain new file mode 100644 index 000000000..17d60abef Binary files /dev/null and b/public/terrain/18/429292/176906.terrain differ diff --git a/public/terrain/18/429292/176907.terrain b/public/terrain/18/429292/176907.terrain new file mode 100644 index 000000000..388d35f9a Binary files /dev/null and b/public/terrain/18/429292/176907.terrain differ diff --git a/public/terrain/18/429292/176908.terrain b/public/terrain/18/429292/176908.terrain new file mode 100644 index 000000000..4de039c30 Binary files /dev/null and b/public/terrain/18/429292/176908.terrain differ diff --git a/public/terrain/18/429292/176909.terrain b/public/terrain/18/429292/176909.terrain new file mode 100644 index 000000000..1aeb6e83f Binary files /dev/null and b/public/terrain/18/429292/176909.terrain differ diff --git a/public/terrain/18/429292/176910.terrain b/public/terrain/18/429292/176910.terrain new file mode 100644 index 000000000..50fc9adf5 Binary files /dev/null and b/public/terrain/18/429292/176910.terrain differ diff --git a/public/terrain/18/429292/176911.terrain b/public/terrain/18/429292/176911.terrain new file mode 100644 index 000000000..9bb1b65a7 Binary files /dev/null and b/public/terrain/18/429292/176911.terrain differ diff --git a/public/terrain/18/429292/176912.terrain b/public/terrain/18/429292/176912.terrain new file mode 100644 index 000000000..321f0de8f Binary files /dev/null and b/public/terrain/18/429292/176912.terrain differ diff --git a/public/terrain/18/429292/176913.terrain b/public/terrain/18/429292/176913.terrain new file mode 100644 index 000000000..599c76972 Binary files /dev/null and b/public/terrain/18/429292/176913.terrain differ diff --git a/public/terrain/18/429292/176914.terrain b/public/terrain/18/429292/176914.terrain new file mode 100644 index 000000000..f78439c3a Binary files /dev/null and b/public/terrain/18/429292/176914.terrain differ diff --git a/public/terrain/18/429292/176915.terrain b/public/terrain/18/429292/176915.terrain new file mode 100644 index 000000000..63b225a1a Binary files /dev/null and b/public/terrain/18/429292/176915.terrain differ diff --git a/public/terrain/18/429292/176916.terrain b/public/terrain/18/429292/176916.terrain new file mode 100644 index 000000000..93c21d7c3 Binary files /dev/null and b/public/terrain/18/429292/176916.terrain differ diff --git a/public/terrain/18/429292/176917.terrain b/public/terrain/18/429292/176917.terrain new file mode 100644 index 000000000..259ee0206 Binary files /dev/null and b/public/terrain/18/429292/176917.terrain differ diff --git a/public/terrain/18/429292/176918.terrain b/public/terrain/18/429292/176918.terrain new file mode 100644 index 000000000..15bde188d Binary files /dev/null and b/public/terrain/18/429292/176918.terrain differ diff --git a/public/terrain/18/429292/176919.terrain b/public/terrain/18/429292/176919.terrain new file mode 100644 index 000000000..95b5803a9 Binary files /dev/null and b/public/terrain/18/429292/176919.terrain differ diff --git a/public/terrain/18/429292/176920.terrain b/public/terrain/18/429292/176920.terrain new file mode 100644 index 000000000..c7c6e8d55 Binary files /dev/null and b/public/terrain/18/429292/176920.terrain differ diff --git a/public/terrain/18/429292/176921.terrain b/public/terrain/18/429292/176921.terrain new file mode 100644 index 000000000..2b997b9ac Binary files /dev/null and b/public/terrain/18/429292/176921.terrain differ diff --git a/public/terrain/18/429292/176922.terrain b/public/terrain/18/429292/176922.terrain new file mode 100644 index 000000000..1f376c18b Binary files /dev/null and b/public/terrain/18/429292/176922.terrain differ diff --git a/public/terrain/18/429292/176923.terrain b/public/terrain/18/429292/176923.terrain new file mode 100644 index 000000000..9575327a4 Binary files /dev/null and b/public/terrain/18/429292/176923.terrain differ diff --git a/public/terrain/18/429292/176924.terrain b/public/terrain/18/429292/176924.terrain new file mode 100644 index 000000000..980ed96b6 Binary files /dev/null and b/public/terrain/18/429292/176924.terrain differ diff --git a/public/terrain/18/429292/176925.terrain b/public/terrain/18/429292/176925.terrain new file mode 100644 index 000000000..55185678d Binary files /dev/null and b/public/terrain/18/429292/176925.terrain differ diff --git a/public/terrain/18/429292/176926.terrain b/public/terrain/18/429292/176926.terrain new file mode 100644 index 000000000..39ba77d51 Binary files /dev/null and b/public/terrain/18/429292/176926.terrain differ diff --git a/public/terrain/18/429292/176927.terrain b/public/terrain/18/429292/176927.terrain new file mode 100644 index 000000000..953d5cfce Binary files /dev/null and b/public/terrain/18/429292/176927.terrain differ diff --git a/public/terrain/18/429292/176928.terrain b/public/terrain/18/429292/176928.terrain new file mode 100644 index 000000000..6a6e9d86a Binary files /dev/null and b/public/terrain/18/429292/176928.terrain differ diff --git a/public/terrain/18/429292/176929.terrain b/public/terrain/18/429292/176929.terrain new file mode 100644 index 000000000..ab19d738f Binary files /dev/null and b/public/terrain/18/429292/176929.terrain differ diff --git a/public/terrain/18/429292/176930.terrain b/public/terrain/18/429292/176930.terrain new file mode 100644 index 000000000..8752a4da5 Binary files /dev/null and b/public/terrain/18/429292/176930.terrain differ diff --git a/public/terrain/18/429292/176931.terrain b/public/terrain/18/429292/176931.terrain new file mode 100644 index 000000000..da3492b32 Binary files /dev/null and b/public/terrain/18/429292/176931.terrain differ diff --git a/public/terrain/18/429292/176932.terrain b/public/terrain/18/429292/176932.terrain new file mode 100644 index 000000000..875c929a7 Binary files /dev/null and b/public/terrain/18/429292/176932.terrain differ diff --git a/public/terrain/18/429292/176933.terrain b/public/terrain/18/429292/176933.terrain new file mode 100644 index 000000000..f04d3807e Binary files /dev/null and b/public/terrain/18/429292/176933.terrain differ diff --git a/public/terrain/18/429292/176934.terrain b/public/terrain/18/429292/176934.terrain new file mode 100644 index 000000000..38480caa1 Binary files /dev/null and b/public/terrain/18/429292/176934.terrain differ diff --git a/public/terrain/18/429292/176935.terrain b/public/terrain/18/429292/176935.terrain new file mode 100644 index 000000000..20ecf9479 Binary files /dev/null and b/public/terrain/18/429292/176935.terrain differ diff --git a/public/terrain/18/429292/176936.terrain b/public/terrain/18/429292/176936.terrain new file mode 100644 index 000000000..cbf466baa Binary files /dev/null and b/public/terrain/18/429292/176936.terrain differ diff --git a/public/terrain/18/429292/176937.terrain b/public/terrain/18/429292/176937.terrain new file mode 100644 index 000000000..128a28cd1 Binary files /dev/null and b/public/terrain/18/429292/176937.terrain differ diff --git a/public/terrain/18/429292/176938.terrain b/public/terrain/18/429292/176938.terrain new file mode 100644 index 000000000..b2b48559b Binary files /dev/null and b/public/terrain/18/429292/176938.terrain differ diff --git a/public/terrain/18/429292/176939.terrain b/public/terrain/18/429292/176939.terrain new file mode 100644 index 000000000..1b222cd19 Binary files /dev/null and b/public/terrain/18/429292/176939.terrain differ diff --git a/public/terrain/18/429292/176940.terrain b/public/terrain/18/429292/176940.terrain new file mode 100644 index 000000000..d5f4eff2d Binary files /dev/null and b/public/terrain/18/429292/176940.terrain differ diff --git a/public/terrain/18/429292/176941.terrain b/public/terrain/18/429292/176941.terrain new file mode 100644 index 000000000..b93e3457d Binary files /dev/null and b/public/terrain/18/429292/176941.terrain differ diff --git a/public/terrain/18/429292/176942.terrain b/public/terrain/18/429292/176942.terrain new file mode 100644 index 000000000..247831ced Binary files /dev/null and b/public/terrain/18/429292/176942.terrain differ diff --git a/public/terrain/18/429292/176943.terrain b/public/terrain/18/429292/176943.terrain new file mode 100644 index 000000000..f0a3c32e9 Binary files /dev/null and b/public/terrain/18/429292/176943.terrain differ diff --git a/public/terrain/18/429292/176944.terrain b/public/terrain/18/429292/176944.terrain new file mode 100644 index 000000000..86221c043 Binary files /dev/null and b/public/terrain/18/429292/176944.terrain differ diff --git a/public/terrain/18/429292/176945.terrain b/public/terrain/18/429292/176945.terrain new file mode 100644 index 000000000..3e8c306cc Binary files /dev/null and b/public/terrain/18/429292/176945.terrain differ diff --git a/public/terrain/18/429292/176946.terrain b/public/terrain/18/429292/176946.terrain new file mode 100644 index 000000000..43df81b20 Binary files /dev/null and b/public/terrain/18/429292/176946.terrain differ diff --git a/public/terrain/18/429292/176947.terrain b/public/terrain/18/429292/176947.terrain new file mode 100644 index 000000000..058ac608d Binary files /dev/null and b/public/terrain/18/429292/176947.terrain differ diff --git a/public/terrain/18/429292/176948.terrain b/public/terrain/18/429292/176948.terrain new file mode 100644 index 000000000..8f5b0af7c Binary files /dev/null and b/public/terrain/18/429292/176948.terrain differ diff --git a/public/terrain/18/429292/176949.terrain b/public/terrain/18/429292/176949.terrain new file mode 100644 index 000000000..7653fd13d Binary files /dev/null and b/public/terrain/18/429292/176949.terrain differ diff --git a/public/terrain/18/429292/176950.terrain b/public/terrain/18/429292/176950.terrain new file mode 100644 index 000000000..719592522 Binary files /dev/null and b/public/terrain/18/429292/176950.terrain differ diff --git a/public/terrain/18/429292/176951.terrain b/public/terrain/18/429292/176951.terrain new file mode 100644 index 000000000..634cbc06c Binary files /dev/null and b/public/terrain/18/429292/176951.terrain differ diff --git a/public/terrain/18/429292/176952.terrain b/public/terrain/18/429292/176952.terrain new file mode 100644 index 000000000..872640531 Binary files /dev/null and b/public/terrain/18/429292/176952.terrain differ diff --git a/public/terrain/18/429292/176953.terrain b/public/terrain/18/429292/176953.terrain new file mode 100644 index 000000000..2f5e7f4e5 Binary files /dev/null and b/public/terrain/18/429292/176953.terrain differ diff --git a/public/terrain/18/429292/176954.terrain b/public/terrain/18/429292/176954.terrain new file mode 100644 index 000000000..4d85fd761 Binary files /dev/null and b/public/terrain/18/429292/176954.terrain differ diff --git a/public/terrain/18/429292/176955.terrain b/public/terrain/18/429292/176955.terrain new file mode 100644 index 000000000..caae17f8b Binary files /dev/null and b/public/terrain/18/429292/176955.terrain differ diff --git a/public/terrain/18/429292/176956.terrain b/public/terrain/18/429292/176956.terrain new file mode 100644 index 000000000..c8f0c52ce Binary files /dev/null and b/public/terrain/18/429292/176956.terrain differ diff --git a/public/terrain/18/429292/176957.terrain b/public/terrain/18/429292/176957.terrain new file mode 100644 index 000000000..0dbdcb2d1 Binary files /dev/null and b/public/terrain/18/429292/176957.terrain differ diff --git a/public/terrain/18/429292/176958.terrain b/public/terrain/18/429292/176958.terrain new file mode 100644 index 000000000..f29fdfa14 Binary files /dev/null and b/public/terrain/18/429292/176958.terrain differ diff --git a/public/terrain/18/429292/176959.terrain b/public/terrain/18/429292/176959.terrain new file mode 100644 index 000000000..22a383303 Binary files /dev/null and b/public/terrain/18/429292/176959.terrain differ diff --git a/public/terrain/18/429292/176960.terrain b/public/terrain/18/429292/176960.terrain new file mode 100644 index 000000000..48ec2eb54 Binary files /dev/null and b/public/terrain/18/429292/176960.terrain differ diff --git a/public/terrain/18/429292/176961.terrain b/public/terrain/18/429292/176961.terrain new file mode 100644 index 000000000..023ac4eb2 Binary files /dev/null and b/public/terrain/18/429292/176961.terrain differ diff --git a/public/terrain/18/429292/176962.terrain b/public/terrain/18/429292/176962.terrain new file mode 100644 index 000000000..04e00bcaa Binary files /dev/null and b/public/terrain/18/429292/176962.terrain differ diff --git a/public/terrain/18/429292/176963.terrain b/public/terrain/18/429292/176963.terrain new file mode 100644 index 000000000..b2bf08460 Binary files /dev/null and b/public/terrain/18/429292/176963.terrain differ diff --git a/public/terrain/18/429292/176964.terrain b/public/terrain/18/429292/176964.terrain new file mode 100644 index 000000000..441e531f8 Binary files /dev/null and b/public/terrain/18/429292/176964.terrain differ diff --git a/public/terrain/18/429292/176965.terrain b/public/terrain/18/429292/176965.terrain new file mode 100644 index 000000000..ccf871e76 Binary files /dev/null and b/public/terrain/18/429292/176965.terrain differ diff --git a/public/terrain/18/429292/176966.terrain b/public/terrain/18/429292/176966.terrain new file mode 100644 index 000000000..f8fef8c45 Binary files /dev/null and b/public/terrain/18/429292/176966.terrain differ diff --git a/public/terrain/18/429292/176967.terrain b/public/terrain/18/429292/176967.terrain new file mode 100644 index 000000000..4cee9d59f Binary files /dev/null and b/public/terrain/18/429292/176967.terrain differ diff --git a/public/terrain/18/429292/176968.terrain b/public/terrain/18/429292/176968.terrain new file mode 100644 index 000000000..4ce4c77d4 Binary files /dev/null and b/public/terrain/18/429292/176968.terrain differ diff --git a/public/terrain/18/429292/176969.terrain b/public/terrain/18/429292/176969.terrain new file mode 100644 index 000000000..16b5c3266 Binary files /dev/null and b/public/terrain/18/429292/176969.terrain differ diff --git a/public/terrain/18/429292/176970.terrain b/public/terrain/18/429292/176970.terrain new file mode 100644 index 000000000..95113c0ac Binary files /dev/null and b/public/terrain/18/429292/176970.terrain differ diff --git a/public/terrain/18/429292/176971.terrain b/public/terrain/18/429292/176971.terrain new file mode 100644 index 000000000..8cf5af2ce Binary files /dev/null and b/public/terrain/18/429292/176971.terrain differ diff --git a/public/terrain/18/429292/176972.terrain b/public/terrain/18/429292/176972.terrain new file mode 100644 index 000000000..ea74c7f1f Binary files /dev/null and b/public/terrain/18/429292/176972.terrain differ diff --git a/public/terrain/18/429292/176973.terrain b/public/terrain/18/429292/176973.terrain new file mode 100644 index 000000000..fefefce3d Binary files /dev/null and b/public/terrain/18/429292/176973.terrain differ diff --git a/public/terrain/18/429292/176974.terrain b/public/terrain/18/429292/176974.terrain new file mode 100644 index 000000000..096dbb59e Binary files /dev/null and b/public/terrain/18/429292/176974.terrain differ diff --git a/public/terrain/18/429292/176975.terrain b/public/terrain/18/429292/176975.terrain new file mode 100644 index 000000000..c83eea7b8 Binary files /dev/null and b/public/terrain/18/429292/176975.terrain differ diff --git a/public/terrain/18/429292/176976.terrain b/public/terrain/18/429292/176976.terrain new file mode 100644 index 000000000..ff66460be Binary files /dev/null and b/public/terrain/18/429292/176976.terrain differ diff --git a/public/terrain/18/429292/176977.terrain b/public/terrain/18/429292/176977.terrain new file mode 100644 index 000000000..7d2d2b06b Binary files /dev/null and b/public/terrain/18/429292/176977.terrain differ diff --git a/public/terrain/18/429292/176978.terrain b/public/terrain/18/429292/176978.terrain new file mode 100644 index 000000000..9e88c8d03 Binary files /dev/null and b/public/terrain/18/429292/176978.terrain differ diff --git a/public/terrain/18/429292/176979.terrain b/public/terrain/18/429292/176979.terrain new file mode 100644 index 000000000..0c89e7f4a Binary files /dev/null and b/public/terrain/18/429292/176979.terrain differ diff --git a/public/terrain/18/429292/176980.terrain b/public/terrain/18/429292/176980.terrain new file mode 100644 index 000000000..0299f2a30 Binary files /dev/null and b/public/terrain/18/429292/176980.terrain differ diff --git a/public/terrain/18/429292/176981.terrain b/public/terrain/18/429292/176981.terrain new file mode 100644 index 000000000..8262b0d34 Binary files /dev/null and b/public/terrain/18/429292/176981.terrain differ diff --git a/public/terrain/18/429292/176982.terrain b/public/terrain/18/429292/176982.terrain new file mode 100644 index 000000000..51b736c4b Binary files /dev/null and b/public/terrain/18/429292/176982.terrain differ diff --git a/public/terrain/18/429292/176983.terrain b/public/terrain/18/429292/176983.terrain new file mode 100644 index 000000000..63bc027eb Binary files /dev/null and b/public/terrain/18/429292/176983.terrain differ diff --git a/public/terrain/18/429292/176984.terrain b/public/terrain/18/429292/176984.terrain new file mode 100644 index 000000000..9d13dd5ca Binary files /dev/null and b/public/terrain/18/429292/176984.terrain differ diff --git a/public/terrain/18/429292/176985.terrain b/public/terrain/18/429292/176985.terrain new file mode 100644 index 000000000..fb094822b Binary files /dev/null and b/public/terrain/18/429292/176985.terrain differ diff --git a/public/terrain/18/429292/176986.terrain b/public/terrain/18/429292/176986.terrain new file mode 100644 index 000000000..862ddf52f Binary files /dev/null and b/public/terrain/18/429292/176986.terrain differ diff --git a/public/terrain/18/429292/176987.terrain b/public/terrain/18/429292/176987.terrain new file mode 100644 index 000000000..a0ec44c85 Binary files /dev/null and b/public/terrain/18/429292/176987.terrain differ diff --git a/public/terrain/18/429292/176988.terrain b/public/terrain/18/429292/176988.terrain new file mode 100644 index 000000000..34bf522d7 Binary files /dev/null and b/public/terrain/18/429292/176988.terrain differ diff --git a/public/terrain/18/429292/176989.terrain b/public/terrain/18/429292/176989.terrain new file mode 100644 index 000000000..e3b3c356f Binary files /dev/null and b/public/terrain/18/429292/176989.terrain differ diff --git a/public/terrain/18/429292/176990.terrain b/public/terrain/18/429292/176990.terrain new file mode 100644 index 000000000..1c7535ae0 Binary files /dev/null and b/public/terrain/18/429292/176990.terrain differ diff --git a/public/terrain/18/429292/176991.terrain b/public/terrain/18/429292/176991.terrain new file mode 100644 index 000000000..ec8de6451 Binary files /dev/null and b/public/terrain/18/429292/176991.terrain differ diff --git a/public/terrain/18/429292/176992.terrain b/public/terrain/18/429292/176992.terrain new file mode 100644 index 000000000..6cb58c095 Binary files /dev/null and b/public/terrain/18/429292/176992.terrain differ diff --git a/public/terrain/18/429292/176993.terrain b/public/terrain/18/429292/176993.terrain new file mode 100644 index 000000000..bcbcd8c78 Binary files /dev/null and b/public/terrain/18/429292/176993.terrain differ diff --git a/public/terrain/18/429292/176994.terrain b/public/terrain/18/429292/176994.terrain new file mode 100644 index 000000000..4302150c4 Binary files /dev/null and b/public/terrain/18/429292/176994.terrain differ diff --git a/public/terrain/18/429292/176995.terrain b/public/terrain/18/429292/176995.terrain new file mode 100644 index 000000000..f4b8ba0b6 Binary files /dev/null and b/public/terrain/18/429292/176995.terrain differ diff --git a/public/terrain/18/429292/176996.terrain b/public/terrain/18/429292/176996.terrain new file mode 100644 index 000000000..98fdd47bb Binary files /dev/null and b/public/terrain/18/429292/176996.terrain differ diff --git a/public/terrain/18/429292/176997.terrain b/public/terrain/18/429292/176997.terrain new file mode 100644 index 000000000..cc4abc90e Binary files /dev/null and b/public/terrain/18/429292/176997.terrain differ diff --git a/public/terrain/18/429292/176998.terrain b/public/terrain/18/429292/176998.terrain new file mode 100644 index 000000000..2c7170f1b Binary files /dev/null and b/public/terrain/18/429292/176998.terrain differ diff --git a/public/terrain/18/429292/176999.terrain b/public/terrain/18/429292/176999.terrain new file mode 100644 index 000000000..634fdb233 Binary files /dev/null and b/public/terrain/18/429292/176999.terrain differ diff --git a/public/terrain/18/429292/177000.terrain b/public/terrain/18/429292/177000.terrain new file mode 100644 index 000000000..150bb5a39 Binary files /dev/null and b/public/terrain/18/429292/177000.terrain differ diff --git a/public/terrain/18/429292/177001.terrain b/public/terrain/18/429292/177001.terrain new file mode 100644 index 000000000..e36aa52d4 Binary files /dev/null and b/public/terrain/18/429292/177001.terrain differ diff --git a/public/terrain/18/429292/177002.terrain b/public/terrain/18/429292/177002.terrain new file mode 100644 index 000000000..14f325dff Binary files /dev/null and b/public/terrain/18/429292/177002.terrain differ diff --git a/public/terrain/18/429292/177003.terrain b/public/terrain/18/429292/177003.terrain new file mode 100644 index 000000000..cd62705f2 Binary files /dev/null and b/public/terrain/18/429292/177003.terrain differ diff --git a/public/terrain/18/429292/177004.terrain b/public/terrain/18/429292/177004.terrain new file mode 100644 index 000000000..1ed2d2c78 Binary files /dev/null and b/public/terrain/18/429292/177004.terrain differ diff --git a/public/terrain/18/429292/177005.terrain b/public/terrain/18/429292/177005.terrain new file mode 100644 index 000000000..aa6c6cd85 Binary files /dev/null and b/public/terrain/18/429292/177005.terrain differ diff --git a/public/terrain/18/429292/177006.terrain b/public/terrain/18/429292/177006.terrain new file mode 100644 index 000000000..ce8ea60a8 Binary files /dev/null and b/public/terrain/18/429292/177006.terrain differ diff --git a/public/terrain/18/429292/177007.terrain b/public/terrain/18/429292/177007.terrain new file mode 100644 index 000000000..e3ff4d619 Binary files /dev/null and b/public/terrain/18/429292/177007.terrain differ diff --git a/public/terrain/18/429292/177008.terrain b/public/terrain/18/429292/177008.terrain new file mode 100644 index 000000000..fb1cea6a4 Binary files /dev/null and b/public/terrain/18/429292/177008.terrain differ diff --git a/public/terrain/18/429292/177009.terrain b/public/terrain/18/429292/177009.terrain new file mode 100644 index 000000000..da4174440 Binary files /dev/null and b/public/terrain/18/429292/177009.terrain differ diff --git a/public/terrain/18/429292/177010.terrain b/public/terrain/18/429292/177010.terrain new file mode 100644 index 000000000..23ebaf54f Binary files /dev/null and b/public/terrain/18/429292/177010.terrain differ diff --git a/public/terrain/18/429292/177011.terrain b/public/terrain/18/429292/177011.terrain new file mode 100644 index 000000000..a126b90e7 Binary files /dev/null and b/public/terrain/18/429292/177011.terrain differ diff --git a/public/terrain/18/429292/177012.terrain b/public/terrain/18/429292/177012.terrain new file mode 100644 index 000000000..39b25951a Binary files /dev/null and b/public/terrain/18/429292/177012.terrain differ diff --git a/public/terrain/18/429292/177013.terrain b/public/terrain/18/429292/177013.terrain new file mode 100644 index 000000000..08766fe16 Binary files /dev/null and b/public/terrain/18/429292/177013.terrain differ diff --git a/public/terrain/18/429292/177014.terrain b/public/terrain/18/429292/177014.terrain new file mode 100644 index 000000000..5e291d42a Binary files /dev/null and b/public/terrain/18/429292/177014.terrain differ diff --git a/public/terrain/18/429292/177015.terrain b/public/terrain/18/429292/177015.terrain new file mode 100644 index 000000000..e9acaadf5 Binary files /dev/null and b/public/terrain/18/429292/177015.terrain differ diff --git a/public/terrain/18/429292/177016.terrain b/public/terrain/18/429292/177016.terrain new file mode 100644 index 000000000..eb0d5cc43 Binary files /dev/null and b/public/terrain/18/429292/177016.terrain differ diff --git a/public/terrain/18/429292/177017.terrain b/public/terrain/18/429292/177017.terrain new file mode 100644 index 000000000..010de7226 Binary files /dev/null and b/public/terrain/18/429292/177017.terrain differ diff --git a/public/terrain/18/429292/177018.terrain b/public/terrain/18/429292/177018.terrain new file mode 100644 index 000000000..8fe7a9629 Binary files /dev/null and b/public/terrain/18/429292/177018.terrain differ diff --git a/public/terrain/18/429292/177019.terrain b/public/terrain/18/429292/177019.terrain new file mode 100644 index 000000000..284ce1b8d Binary files /dev/null and b/public/terrain/18/429292/177019.terrain differ diff --git a/public/terrain/18/429292/177020.terrain b/public/terrain/18/429292/177020.terrain new file mode 100644 index 000000000..60e760adf Binary files /dev/null and b/public/terrain/18/429292/177020.terrain differ diff --git a/public/terrain/18/429292/177021.terrain b/public/terrain/18/429292/177021.terrain new file mode 100644 index 000000000..072881839 Binary files /dev/null and b/public/terrain/18/429292/177021.terrain differ diff --git a/public/terrain/18/429292/177022.terrain b/public/terrain/18/429292/177022.terrain new file mode 100644 index 000000000..25d5baa0c Binary files /dev/null and b/public/terrain/18/429292/177022.terrain differ diff --git a/public/terrain/18/429292/177023.terrain b/public/terrain/18/429292/177023.terrain new file mode 100644 index 000000000..3e1078946 Binary files /dev/null and b/public/terrain/18/429292/177023.terrain differ diff --git a/public/terrain/18/429292/177024.terrain b/public/terrain/18/429292/177024.terrain new file mode 100644 index 000000000..b3620b198 Binary files /dev/null and b/public/terrain/18/429292/177024.terrain differ diff --git a/public/terrain/18/429292/177025.terrain b/public/terrain/18/429292/177025.terrain new file mode 100644 index 000000000..40f49e0a1 Binary files /dev/null and b/public/terrain/18/429292/177025.terrain differ diff --git a/public/terrain/18/429292/177026.terrain b/public/terrain/18/429292/177026.terrain new file mode 100644 index 000000000..e84072425 Binary files /dev/null and b/public/terrain/18/429292/177026.terrain differ diff --git a/public/terrain/18/429292/177027.terrain b/public/terrain/18/429292/177027.terrain new file mode 100644 index 000000000..2dc6007ea Binary files /dev/null and b/public/terrain/18/429292/177027.terrain differ diff --git a/public/terrain/18/429292/177028.terrain b/public/terrain/18/429292/177028.terrain new file mode 100644 index 000000000..ab7b355c5 Binary files /dev/null and b/public/terrain/18/429292/177028.terrain differ diff --git a/public/terrain/18/429292/177029.terrain b/public/terrain/18/429292/177029.terrain new file mode 100644 index 000000000..da5a81e99 Binary files /dev/null and b/public/terrain/18/429292/177029.terrain differ diff --git a/public/terrain/18/429293/176871.terrain b/public/terrain/18/429293/176871.terrain new file mode 100644 index 000000000..029dc42c1 Binary files /dev/null and b/public/terrain/18/429293/176871.terrain differ diff --git a/public/terrain/18/429293/176872.terrain b/public/terrain/18/429293/176872.terrain new file mode 100644 index 000000000..1229284de Binary files /dev/null and b/public/terrain/18/429293/176872.terrain differ diff --git a/public/terrain/18/429293/176873.terrain b/public/terrain/18/429293/176873.terrain new file mode 100644 index 000000000..f91b1e3f5 Binary files /dev/null and b/public/terrain/18/429293/176873.terrain differ diff --git a/public/terrain/18/429293/176874.terrain b/public/terrain/18/429293/176874.terrain new file mode 100644 index 000000000..04102baab Binary files /dev/null and b/public/terrain/18/429293/176874.terrain differ diff --git a/public/terrain/18/429293/176875.terrain b/public/terrain/18/429293/176875.terrain new file mode 100644 index 000000000..eabeca7e9 Binary files /dev/null and b/public/terrain/18/429293/176875.terrain differ diff --git a/public/terrain/18/429293/176876.terrain b/public/terrain/18/429293/176876.terrain new file mode 100644 index 000000000..81464c687 Binary files /dev/null and b/public/terrain/18/429293/176876.terrain differ diff --git a/public/terrain/18/429293/176877.terrain b/public/terrain/18/429293/176877.terrain new file mode 100644 index 000000000..c4394aa97 Binary files /dev/null and b/public/terrain/18/429293/176877.terrain differ diff --git a/public/terrain/18/429293/176878.terrain b/public/terrain/18/429293/176878.terrain new file mode 100644 index 000000000..5dd40c797 Binary files /dev/null and b/public/terrain/18/429293/176878.terrain differ diff --git a/public/terrain/18/429293/176879.terrain b/public/terrain/18/429293/176879.terrain new file mode 100644 index 000000000..5a577bedc Binary files /dev/null and b/public/terrain/18/429293/176879.terrain differ diff --git a/public/terrain/18/429293/176880.terrain b/public/terrain/18/429293/176880.terrain new file mode 100644 index 000000000..e19f4bb1b Binary files /dev/null and b/public/terrain/18/429293/176880.terrain differ diff --git a/public/terrain/18/429293/176881.terrain b/public/terrain/18/429293/176881.terrain new file mode 100644 index 000000000..15410b414 Binary files /dev/null and b/public/terrain/18/429293/176881.terrain differ diff --git a/public/terrain/18/429293/176882.terrain b/public/terrain/18/429293/176882.terrain new file mode 100644 index 000000000..9f3970bf7 Binary files /dev/null and b/public/terrain/18/429293/176882.terrain differ diff --git a/public/terrain/18/429293/176883.terrain b/public/terrain/18/429293/176883.terrain new file mode 100644 index 000000000..4634b55eb Binary files /dev/null and b/public/terrain/18/429293/176883.terrain differ diff --git a/public/terrain/18/429293/176884.terrain b/public/terrain/18/429293/176884.terrain new file mode 100644 index 000000000..45a55d66d Binary files /dev/null and b/public/terrain/18/429293/176884.terrain differ diff --git a/public/terrain/18/429293/176885.terrain b/public/terrain/18/429293/176885.terrain new file mode 100644 index 000000000..492fbbf37 Binary files /dev/null and b/public/terrain/18/429293/176885.terrain differ diff --git a/public/terrain/18/429293/176886.terrain b/public/terrain/18/429293/176886.terrain new file mode 100644 index 000000000..c43fe4a7a Binary files /dev/null and b/public/terrain/18/429293/176886.terrain differ diff --git a/public/terrain/18/429293/176887.terrain b/public/terrain/18/429293/176887.terrain new file mode 100644 index 000000000..be339489e Binary files /dev/null and b/public/terrain/18/429293/176887.terrain differ diff --git a/public/terrain/18/429293/176888.terrain b/public/terrain/18/429293/176888.terrain new file mode 100644 index 000000000..08c9589ea Binary files /dev/null and b/public/terrain/18/429293/176888.terrain differ diff --git a/public/terrain/18/429293/176889.terrain b/public/terrain/18/429293/176889.terrain new file mode 100644 index 000000000..92d0f1681 Binary files /dev/null and b/public/terrain/18/429293/176889.terrain differ diff --git a/public/terrain/18/429293/176890.terrain b/public/terrain/18/429293/176890.terrain new file mode 100644 index 000000000..8ea56d111 Binary files /dev/null and b/public/terrain/18/429293/176890.terrain differ diff --git a/public/terrain/18/429293/176891.terrain b/public/terrain/18/429293/176891.terrain new file mode 100644 index 000000000..7e131a5de Binary files /dev/null and b/public/terrain/18/429293/176891.terrain differ diff --git a/public/terrain/18/429293/176892.terrain b/public/terrain/18/429293/176892.terrain new file mode 100644 index 000000000..d3aad99cf Binary files /dev/null and b/public/terrain/18/429293/176892.terrain differ diff --git a/public/terrain/18/429293/176893.terrain b/public/terrain/18/429293/176893.terrain new file mode 100644 index 000000000..354bef703 Binary files /dev/null and b/public/terrain/18/429293/176893.terrain differ diff --git a/public/terrain/18/429293/176894.terrain b/public/terrain/18/429293/176894.terrain new file mode 100644 index 000000000..1bf09893d Binary files /dev/null and b/public/terrain/18/429293/176894.terrain differ diff --git a/public/terrain/18/429293/176895.terrain b/public/terrain/18/429293/176895.terrain new file mode 100644 index 000000000..3c2486ac5 Binary files /dev/null and b/public/terrain/18/429293/176895.terrain differ diff --git a/public/terrain/18/429293/176896.terrain b/public/terrain/18/429293/176896.terrain new file mode 100644 index 000000000..f9d6ad8a8 Binary files /dev/null and b/public/terrain/18/429293/176896.terrain differ diff --git a/public/terrain/18/429293/176897.terrain b/public/terrain/18/429293/176897.terrain new file mode 100644 index 000000000..9c91b324e Binary files /dev/null and b/public/terrain/18/429293/176897.terrain differ diff --git a/public/terrain/18/429293/176898.terrain b/public/terrain/18/429293/176898.terrain new file mode 100644 index 000000000..53d1ff850 Binary files /dev/null and b/public/terrain/18/429293/176898.terrain differ diff --git a/public/terrain/18/429293/176899.terrain b/public/terrain/18/429293/176899.terrain new file mode 100644 index 000000000..13a8b5c48 Binary files /dev/null and b/public/terrain/18/429293/176899.terrain differ diff --git a/public/terrain/18/429293/176900.terrain b/public/terrain/18/429293/176900.terrain new file mode 100644 index 000000000..db84ffc3c Binary files /dev/null and b/public/terrain/18/429293/176900.terrain differ diff --git a/public/terrain/18/429293/176901.terrain b/public/terrain/18/429293/176901.terrain new file mode 100644 index 000000000..989248798 Binary files /dev/null and b/public/terrain/18/429293/176901.terrain differ diff --git a/public/terrain/18/429293/176902.terrain b/public/terrain/18/429293/176902.terrain new file mode 100644 index 000000000..91d1075b6 Binary files /dev/null and b/public/terrain/18/429293/176902.terrain differ diff --git a/public/terrain/18/429293/176903.terrain b/public/terrain/18/429293/176903.terrain new file mode 100644 index 000000000..d39b72237 Binary files /dev/null and b/public/terrain/18/429293/176903.terrain differ diff --git a/public/terrain/18/429293/176904.terrain b/public/terrain/18/429293/176904.terrain new file mode 100644 index 000000000..13c3c2267 Binary files /dev/null and b/public/terrain/18/429293/176904.terrain differ diff --git a/public/terrain/18/429293/176905.terrain b/public/terrain/18/429293/176905.terrain new file mode 100644 index 000000000..10c0cd04a Binary files /dev/null and b/public/terrain/18/429293/176905.terrain differ diff --git a/public/terrain/18/429293/176906.terrain b/public/terrain/18/429293/176906.terrain new file mode 100644 index 000000000..3c92f7bf4 Binary files /dev/null and b/public/terrain/18/429293/176906.terrain differ diff --git a/public/terrain/18/429293/176907.terrain b/public/terrain/18/429293/176907.terrain new file mode 100644 index 000000000..3ae140102 Binary files /dev/null and b/public/terrain/18/429293/176907.terrain differ diff --git a/public/terrain/18/429293/176908.terrain b/public/terrain/18/429293/176908.terrain new file mode 100644 index 000000000..bd81846b6 Binary files /dev/null and b/public/terrain/18/429293/176908.terrain differ diff --git a/public/terrain/18/429293/176909.terrain b/public/terrain/18/429293/176909.terrain new file mode 100644 index 000000000..d6f0d9c9a Binary files /dev/null and b/public/terrain/18/429293/176909.terrain differ diff --git a/public/terrain/18/429293/176910.terrain b/public/terrain/18/429293/176910.terrain new file mode 100644 index 000000000..1f775c240 Binary files /dev/null and b/public/terrain/18/429293/176910.terrain differ diff --git a/public/terrain/18/429293/176911.terrain b/public/terrain/18/429293/176911.terrain new file mode 100644 index 000000000..818d7cd68 Binary files /dev/null and b/public/terrain/18/429293/176911.terrain differ diff --git a/public/terrain/18/429293/176912.terrain b/public/terrain/18/429293/176912.terrain new file mode 100644 index 000000000..7ddb2bb2e Binary files /dev/null and b/public/terrain/18/429293/176912.terrain differ diff --git a/public/terrain/18/429293/176913.terrain b/public/terrain/18/429293/176913.terrain new file mode 100644 index 000000000..2dabcf782 Binary files /dev/null and b/public/terrain/18/429293/176913.terrain differ diff --git a/public/terrain/18/429293/176914.terrain b/public/terrain/18/429293/176914.terrain new file mode 100644 index 000000000..f8af868ae Binary files /dev/null and b/public/terrain/18/429293/176914.terrain differ diff --git a/public/terrain/18/429293/176915.terrain b/public/terrain/18/429293/176915.terrain new file mode 100644 index 000000000..500c56d95 Binary files /dev/null and b/public/terrain/18/429293/176915.terrain differ diff --git a/public/terrain/18/429293/176916.terrain b/public/terrain/18/429293/176916.terrain new file mode 100644 index 000000000..c4f3b7856 Binary files /dev/null and b/public/terrain/18/429293/176916.terrain differ diff --git a/public/terrain/18/429293/176917.terrain b/public/terrain/18/429293/176917.terrain new file mode 100644 index 000000000..392809b23 Binary files /dev/null and b/public/terrain/18/429293/176917.terrain differ diff --git a/public/terrain/18/429293/176918.terrain b/public/terrain/18/429293/176918.terrain new file mode 100644 index 000000000..bd23b237a Binary files /dev/null and b/public/terrain/18/429293/176918.terrain differ diff --git a/public/terrain/18/429293/176919.terrain b/public/terrain/18/429293/176919.terrain new file mode 100644 index 000000000..00a9b12fa Binary files /dev/null and b/public/terrain/18/429293/176919.terrain differ diff --git a/public/terrain/18/429293/176920.terrain b/public/terrain/18/429293/176920.terrain new file mode 100644 index 000000000..e7205800c Binary files /dev/null and b/public/terrain/18/429293/176920.terrain differ diff --git a/public/terrain/18/429293/176921.terrain b/public/terrain/18/429293/176921.terrain new file mode 100644 index 000000000..c80b78f2d Binary files /dev/null and b/public/terrain/18/429293/176921.terrain differ diff --git a/public/terrain/18/429293/176922.terrain b/public/terrain/18/429293/176922.terrain new file mode 100644 index 000000000..f25dcb403 Binary files /dev/null and b/public/terrain/18/429293/176922.terrain differ diff --git a/public/terrain/18/429293/176923.terrain b/public/terrain/18/429293/176923.terrain new file mode 100644 index 000000000..0708d3d86 Binary files /dev/null and b/public/terrain/18/429293/176923.terrain differ diff --git a/public/terrain/18/429293/176924.terrain b/public/terrain/18/429293/176924.terrain new file mode 100644 index 000000000..56f69ded8 Binary files /dev/null and b/public/terrain/18/429293/176924.terrain differ diff --git a/public/terrain/18/429293/176925.terrain b/public/terrain/18/429293/176925.terrain new file mode 100644 index 000000000..5e3eb22df Binary files /dev/null and b/public/terrain/18/429293/176925.terrain differ diff --git a/public/terrain/18/429293/176926.terrain b/public/terrain/18/429293/176926.terrain new file mode 100644 index 000000000..9c4658c30 Binary files /dev/null and b/public/terrain/18/429293/176926.terrain differ diff --git a/public/terrain/18/429293/176927.terrain b/public/terrain/18/429293/176927.terrain new file mode 100644 index 000000000..f30254056 Binary files /dev/null and b/public/terrain/18/429293/176927.terrain differ diff --git a/public/terrain/18/429293/176928.terrain b/public/terrain/18/429293/176928.terrain new file mode 100644 index 000000000..7f7d598bf Binary files /dev/null and b/public/terrain/18/429293/176928.terrain differ diff --git a/public/terrain/18/429293/176929.terrain b/public/terrain/18/429293/176929.terrain new file mode 100644 index 000000000..bd386c4b8 Binary files /dev/null and b/public/terrain/18/429293/176929.terrain differ diff --git a/public/terrain/18/429293/176930.terrain b/public/terrain/18/429293/176930.terrain new file mode 100644 index 000000000..b5340b943 Binary files /dev/null and b/public/terrain/18/429293/176930.terrain differ diff --git a/public/terrain/18/429293/176931.terrain b/public/terrain/18/429293/176931.terrain new file mode 100644 index 000000000..0bade2d6c Binary files /dev/null and b/public/terrain/18/429293/176931.terrain differ diff --git a/public/terrain/18/429293/176932.terrain b/public/terrain/18/429293/176932.terrain new file mode 100644 index 000000000..4dc5e07ce Binary files /dev/null and b/public/terrain/18/429293/176932.terrain differ diff --git a/public/terrain/18/429293/176933.terrain b/public/terrain/18/429293/176933.terrain new file mode 100644 index 000000000..681b03828 Binary files /dev/null and b/public/terrain/18/429293/176933.terrain differ diff --git a/public/terrain/18/429293/176934.terrain b/public/terrain/18/429293/176934.terrain new file mode 100644 index 000000000..729800cb5 Binary files /dev/null and b/public/terrain/18/429293/176934.terrain differ diff --git a/public/terrain/18/429293/176935.terrain b/public/terrain/18/429293/176935.terrain new file mode 100644 index 000000000..62c222bd4 Binary files /dev/null and b/public/terrain/18/429293/176935.terrain differ diff --git a/public/terrain/18/429293/176936.terrain b/public/terrain/18/429293/176936.terrain new file mode 100644 index 000000000..04f76963d Binary files /dev/null and b/public/terrain/18/429293/176936.terrain differ diff --git a/public/terrain/18/429293/176937.terrain b/public/terrain/18/429293/176937.terrain new file mode 100644 index 000000000..12f2a9824 Binary files /dev/null and b/public/terrain/18/429293/176937.terrain differ diff --git a/public/terrain/18/429293/176938.terrain b/public/terrain/18/429293/176938.terrain new file mode 100644 index 000000000..5c47d1896 Binary files /dev/null and b/public/terrain/18/429293/176938.terrain differ diff --git a/public/terrain/18/429293/176939.terrain b/public/terrain/18/429293/176939.terrain new file mode 100644 index 000000000..a47b69693 Binary files /dev/null and b/public/terrain/18/429293/176939.terrain differ diff --git a/public/terrain/18/429293/176940.terrain b/public/terrain/18/429293/176940.terrain new file mode 100644 index 000000000..6be79fc53 Binary files /dev/null and b/public/terrain/18/429293/176940.terrain differ diff --git a/public/terrain/18/429293/176941.terrain b/public/terrain/18/429293/176941.terrain new file mode 100644 index 000000000..5c6736c31 Binary files /dev/null and b/public/terrain/18/429293/176941.terrain differ diff --git a/public/terrain/18/429293/176942.terrain b/public/terrain/18/429293/176942.terrain new file mode 100644 index 000000000..126197422 Binary files /dev/null and b/public/terrain/18/429293/176942.terrain differ diff --git a/public/terrain/18/429293/176943.terrain b/public/terrain/18/429293/176943.terrain new file mode 100644 index 000000000..963e28684 Binary files /dev/null and b/public/terrain/18/429293/176943.terrain differ diff --git a/public/terrain/18/429293/176944.terrain b/public/terrain/18/429293/176944.terrain new file mode 100644 index 000000000..c17ca2f75 Binary files /dev/null and b/public/terrain/18/429293/176944.terrain differ diff --git a/public/terrain/18/429293/176945.terrain b/public/terrain/18/429293/176945.terrain new file mode 100644 index 000000000..6ec01a2fb Binary files /dev/null and b/public/terrain/18/429293/176945.terrain differ diff --git a/public/terrain/18/429293/176946.terrain b/public/terrain/18/429293/176946.terrain new file mode 100644 index 000000000..3b1196dd3 Binary files /dev/null and b/public/terrain/18/429293/176946.terrain differ diff --git a/public/terrain/18/429293/176947.terrain b/public/terrain/18/429293/176947.terrain new file mode 100644 index 000000000..89ee26242 Binary files /dev/null and b/public/terrain/18/429293/176947.terrain differ diff --git a/public/terrain/18/429293/176948.terrain b/public/terrain/18/429293/176948.terrain new file mode 100644 index 000000000..f3c90d333 Binary files /dev/null and b/public/terrain/18/429293/176948.terrain differ diff --git a/public/terrain/18/429293/176949.terrain b/public/terrain/18/429293/176949.terrain new file mode 100644 index 000000000..4323e8236 Binary files /dev/null and b/public/terrain/18/429293/176949.terrain differ diff --git a/public/terrain/18/429293/176950.terrain b/public/terrain/18/429293/176950.terrain new file mode 100644 index 000000000..a8c17bce7 Binary files /dev/null and b/public/terrain/18/429293/176950.terrain differ diff --git a/public/terrain/18/429293/176951.terrain b/public/terrain/18/429293/176951.terrain new file mode 100644 index 000000000..e25b34e9a Binary files /dev/null and b/public/terrain/18/429293/176951.terrain differ diff --git a/public/terrain/18/429293/176952.terrain b/public/terrain/18/429293/176952.terrain new file mode 100644 index 000000000..af52e1b68 Binary files /dev/null and b/public/terrain/18/429293/176952.terrain differ diff --git a/public/terrain/18/429293/176953.terrain b/public/terrain/18/429293/176953.terrain new file mode 100644 index 000000000..e854a12a8 Binary files /dev/null and b/public/terrain/18/429293/176953.terrain differ diff --git a/public/terrain/18/429293/176954.terrain b/public/terrain/18/429293/176954.terrain new file mode 100644 index 000000000..116fc44a4 Binary files /dev/null and b/public/terrain/18/429293/176954.terrain differ diff --git a/public/terrain/18/429293/176955.terrain b/public/terrain/18/429293/176955.terrain new file mode 100644 index 000000000..c21607f94 Binary files /dev/null and b/public/terrain/18/429293/176955.terrain differ diff --git a/public/terrain/18/429293/176956.terrain b/public/terrain/18/429293/176956.terrain new file mode 100644 index 000000000..039312f0b Binary files /dev/null and b/public/terrain/18/429293/176956.terrain differ diff --git a/public/terrain/18/429293/176957.terrain b/public/terrain/18/429293/176957.terrain new file mode 100644 index 000000000..762d245eb Binary files /dev/null and b/public/terrain/18/429293/176957.terrain differ diff --git a/public/terrain/18/429293/176958.terrain b/public/terrain/18/429293/176958.terrain new file mode 100644 index 000000000..33555f02b Binary files /dev/null and b/public/terrain/18/429293/176958.terrain differ diff --git a/public/terrain/18/429293/176959.terrain b/public/terrain/18/429293/176959.terrain new file mode 100644 index 000000000..fe13af2ce Binary files /dev/null and b/public/terrain/18/429293/176959.terrain differ diff --git a/public/terrain/18/429293/176960.terrain b/public/terrain/18/429293/176960.terrain new file mode 100644 index 000000000..05823764a Binary files /dev/null and b/public/terrain/18/429293/176960.terrain differ diff --git a/public/terrain/18/429293/176961.terrain b/public/terrain/18/429293/176961.terrain new file mode 100644 index 000000000..efea5fe09 Binary files /dev/null and b/public/terrain/18/429293/176961.terrain differ diff --git a/public/terrain/18/429293/176962.terrain b/public/terrain/18/429293/176962.terrain new file mode 100644 index 000000000..f23934ce1 Binary files /dev/null and b/public/terrain/18/429293/176962.terrain differ diff --git a/public/terrain/18/429293/176963.terrain b/public/terrain/18/429293/176963.terrain new file mode 100644 index 000000000..e5f45b548 Binary files /dev/null and b/public/terrain/18/429293/176963.terrain differ diff --git a/public/terrain/18/429293/176964.terrain b/public/terrain/18/429293/176964.terrain new file mode 100644 index 000000000..1643849c8 Binary files /dev/null and b/public/terrain/18/429293/176964.terrain differ diff --git a/public/terrain/18/429293/176965.terrain b/public/terrain/18/429293/176965.terrain new file mode 100644 index 000000000..6d89b648f Binary files /dev/null and b/public/terrain/18/429293/176965.terrain differ diff --git a/public/terrain/18/429293/176966.terrain b/public/terrain/18/429293/176966.terrain new file mode 100644 index 000000000..188b65226 Binary files /dev/null and b/public/terrain/18/429293/176966.terrain differ diff --git a/public/terrain/18/429293/176967.terrain b/public/terrain/18/429293/176967.terrain new file mode 100644 index 000000000..ec7c4bfd3 Binary files /dev/null and b/public/terrain/18/429293/176967.terrain differ diff --git a/public/terrain/18/429293/176968.terrain b/public/terrain/18/429293/176968.terrain new file mode 100644 index 000000000..4030fe19e Binary files /dev/null and b/public/terrain/18/429293/176968.terrain differ diff --git a/public/terrain/18/429293/176969.terrain b/public/terrain/18/429293/176969.terrain new file mode 100644 index 000000000..a80e70c58 Binary files /dev/null and b/public/terrain/18/429293/176969.terrain differ diff --git a/public/terrain/18/429293/176970.terrain b/public/terrain/18/429293/176970.terrain new file mode 100644 index 000000000..b136d17a2 Binary files /dev/null and b/public/terrain/18/429293/176970.terrain differ diff --git a/public/terrain/18/429293/176971.terrain b/public/terrain/18/429293/176971.terrain new file mode 100644 index 000000000..95185bd12 Binary files /dev/null and b/public/terrain/18/429293/176971.terrain differ diff --git a/public/terrain/18/429293/176972.terrain b/public/terrain/18/429293/176972.terrain new file mode 100644 index 000000000..cbe24ec75 Binary files /dev/null and b/public/terrain/18/429293/176972.terrain differ diff --git a/public/terrain/18/429293/176973.terrain b/public/terrain/18/429293/176973.terrain new file mode 100644 index 000000000..9404443e2 Binary files /dev/null and b/public/terrain/18/429293/176973.terrain differ diff --git a/public/terrain/18/429293/176974.terrain b/public/terrain/18/429293/176974.terrain new file mode 100644 index 000000000..934d6c587 Binary files /dev/null and b/public/terrain/18/429293/176974.terrain differ diff --git a/public/terrain/18/429293/176975.terrain b/public/terrain/18/429293/176975.terrain new file mode 100644 index 000000000..6e1d49167 Binary files /dev/null and b/public/terrain/18/429293/176975.terrain differ diff --git a/public/terrain/18/429293/176976.terrain b/public/terrain/18/429293/176976.terrain new file mode 100644 index 000000000..1511de8b7 Binary files /dev/null and b/public/terrain/18/429293/176976.terrain differ diff --git a/public/terrain/18/429293/176977.terrain b/public/terrain/18/429293/176977.terrain new file mode 100644 index 000000000..14e4fc7ec Binary files /dev/null and b/public/terrain/18/429293/176977.terrain differ diff --git a/public/terrain/18/429293/176978.terrain b/public/terrain/18/429293/176978.terrain new file mode 100644 index 000000000..385311563 Binary files /dev/null and b/public/terrain/18/429293/176978.terrain differ diff --git a/public/terrain/18/429293/176979.terrain b/public/terrain/18/429293/176979.terrain new file mode 100644 index 000000000..54a2dab35 Binary files /dev/null and b/public/terrain/18/429293/176979.terrain differ diff --git a/public/terrain/18/429293/176980.terrain b/public/terrain/18/429293/176980.terrain new file mode 100644 index 000000000..94d966fe5 Binary files /dev/null and b/public/terrain/18/429293/176980.terrain differ diff --git a/public/terrain/18/429293/176981.terrain b/public/terrain/18/429293/176981.terrain new file mode 100644 index 000000000..9a749e2b1 Binary files /dev/null and b/public/terrain/18/429293/176981.terrain differ diff --git a/public/terrain/18/429293/176982.terrain b/public/terrain/18/429293/176982.terrain new file mode 100644 index 000000000..885c1885a Binary files /dev/null and b/public/terrain/18/429293/176982.terrain differ diff --git a/public/terrain/18/429293/176983.terrain b/public/terrain/18/429293/176983.terrain new file mode 100644 index 000000000..d66d1d78f Binary files /dev/null and b/public/terrain/18/429293/176983.terrain differ diff --git a/public/terrain/18/429293/176984.terrain b/public/terrain/18/429293/176984.terrain new file mode 100644 index 000000000..009c3dd5f Binary files /dev/null and b/public/terrain/18/429293/176984.terrain differ diff --git a/public/terrain/18/429293/176985.terrain b/public/terrain/18/429293/176985.terrain new file mode 100644 index 000000000..b4c2da31b Binary files /dev/null and b/public/terrain/18/429293/176985.terrain differ diff --git a/public/terrain/18/429293/176986.terrain b/public/terrain/18/429293/176986.terrain new file mode 100644 index 000000000..c9df52867 Binary files /dev/null and b/public/terrain/18/429293/176986.terrain differ diff --git a/public/terrain/18/429293/176987.terrain b/public/terrain/18/429293/176987.terrain new file mode 100644 index 000000000..b5ab69a55 Binary files /dev/null and b/public/terrain/18/429293/176987.terrain differ diff --git a/public/terrain/18/429293/176988.terrain b/public/terrain/18/429293/176988.terrain new file mode 100644 index 000000000..c2d31175b Binary files /dev/null and b/public/terrain/18/429293/176988.terrain differ diff --git a/public/terrain/18/429293/176989.terrain b/public/terrain/18/429293/176989.terrain new file mode 100644 index 000000000..2038061bb Binary files /dev/null and b/public/terrain/18/429293/176989.terrain differ diff --git a/public/terrain/18/429293/176990.terrain b/public/terrain/18/429293/176990.terrain new file mode 100644 index 000000000..dd4d1ae0b Binary files /dev/null and b/public/terrain/18/429293/176990.terrain differ diff --git a/public/terrain/18/429293/176991.terrain b/public/terrain/18/429293/176991.terrain new file mode 100644 index 000000000..113d2a8d6 Binary files /dev/null and b/public/terrain/18/429293/176991.terrain differ diff --git a/public/terrain/18/429293/176992.terrain b/public/terrain/18/429293/176992.terrain new file mode 100644 index 000000000..f694d87fc Binary files /dev/null and b/public/terrain/18/429293/176992.terrain differ diff --git a/public/terrain/18/429293/176993.terrain b/public/terrain/18/429293/176993.terrain new file mode 100644 index 000000000..cec46bd0f Binary files /dev/null and b/public/terrain/18/429293/176993.terrain differ diff --git a/public/terrain/18/429293/176994.terrain b/public/terrain/18/429293/176994.terrain new file mode 100644 index 000000000..e04ae9620 Binary files /dev/null and b/public/terrain/18/429293/176994.terrain differ diff --git a/public/terrain/18/429293/176995.terrain b/public/terrain/18/429293/176995.terrain new file mode 100644 index 000000000..ea9e5b47b Binary files /dev/null and b/public/terrain/18/429293/176995.terrain differ diff --git a/public/terrain/18/429293/176996.terrain b/public/terrain/18/429293/176996.terrain new file mode 100644 index 000000000..cd8d8ddc8 Binary files /dev/null and b/public/terrain/18/429293/176996.terrain differ diff --git a/public/terrain/18/429293/176997.terrain b/public/terrain/18/429293/176997.terrain new file mode 100644 index 000000000..f25d1766c Binary files /dev/null and b/public/terrain/18/429293/176997.terrain differ diff --git a/public/terrain/18/429293/176998.terrain b/public/terrain/18/429293/176998.terrain new file mode 100644 index 000000000..c82f3552e Binary files /dev/null and b/public/terrain/18/429293/176998.terrain differ diff --git a/public/terrain/18/429293/176999.terrain b/public/terrain/18/429293/176999.terrain new file mode 100644 index 000000000..8cae893f1 Binary files /dev/null and b/public/terrain/18/429293/176999.terrain differ diff --git a/public/terrain/18/429293/177000.terrain b/public/terrain/18/429293/177000.terrain new file mode 100644 index 000000000..e8f21702c Binary files /dev/null and b/public/terrain/18/429293/177000.terrain differ diff --git a/public/terrain/18/429293/177001.terrain b/public/terrain/18/429293/177001.terrain new file mode 100644 index 000000000..0d8c67e13 Binary files /dev/null and b/public/terrain/18/429293/177001.terrain differ diff --git a/public/terrain/18/429293/177002.terrain b/public/terrain/18/429293/177002.terrain new file mode 100644 index 000000000..0f9f2bea1 Binary files /dev/null and b/public/terrain/18/429293/177002.terrain differ diff --git a/public/terrain/18/429293/177003.terrain b/public/terrain/18/429293/177003.terrain new file mode 100644 index 000000000..b813c27cc Binary files /dev/null and b/public/terrain/18/429293/177003.terrain differ diff --git a/public/terrain/18/429293/177004.terrain b/public/terrain/18/429293/177004.terrain new file mode 100644 index 000000000..173142ab4 Binary files /dev/null and b/public/terrain/18/429293/177004.terrain differ diff --git a/public/terrain/18/429293/177005.terrain b/public/terrain/18/429293/177005.terrain new file mode 100644 index 000000000..948f18276 Binary files /dev/null and b/public/terrain/18/429293/177005.terrain differ diff --git a/public/terrain/18/429293/177006.terrain b/public/terrain/18/429293/177006.terrain new file mode 100644 index 000000000..584088a3f Binary files /dev/null and b/public/terrain/18/429293/177006.terrain differ diff --git a/public/terrain/18/429293/177007.terrain b/public/terrain/18/429293/177007.terrain new file mode 100644 index 000000000..690541632 Binary files /dev/null and b/public/terrain/18/429293/177007.terrain differ diff --git a/public/terrain/18/429293/177008.terrain b/public/terrain/18/429293/177008.terrain new file mode 100644 index 000000000..eecb7766b Binary files /dev/null and b/public/terrain/18/429293/177008.terrain differ diff --git a/public/terrain/18/429293/177009.terrain b/public/terrain/18/429293/177009.terrain new file mode 100644 index 000000000..c6e1a9889 Binary files /dev/null and b/public/terrain/18/429293/177009.terrain differ diff --git a/public/terrain/18/429293/177010.terrain b/public/terrain/18/429293/177010.terrain new file mode 100644 index 000000000..773e7f40f Binary files /dev/null and b/public/terrain/18/429293/177010.terrain differ diff --git a/public/terrain/18/429293/177011.terrain b/public/terrain/18/429293/177011.terrain new file mode 100644 index 000000000..bf2716e6a Binary files /dev/null and b/public/terrain/18/429293/177011.terrain differ diff --git a/public/terrain/18/429293/177012.terrain b/public/terrain/18/429293/177012.terrain new file mode 100644 index 000000000..254cc4775 Binary files /dev/null and b/public/terrain/18/429293/177012.terrain differ diff --git a/public/terrain/18/429293/177013.terrain b/public/terrain/18/429293/177013.terrain new file mode 100644 index 000000000..de3937413 Binary files /dev/null and b/public/terrain/18/429293/177013.terrain differ diff --git a/public/terrain/18/429293/177014.terrain b/public/terrain/18/429293/177014.terrain new file mode 100644 index 000000000..8de870dd9 Binary files /dev/null and b/public/terrain/18/429293/177014.terrain differ diff --git a/public/terrain/18/429293/177015.terrain b/public/terrain/18/429293/177015.terrain new file mode 100644 index 000000000..4e1f582a7 Binary files /dev/null and b/public/terrain/18/429293/177015.terrain differ diff --git a/public/terrain/18/429293/177016.terrain b/public/terrain/18/429293/177016.terrain new file mode 100644 index 000000000..f02c60afd Binary files /dev/null and b/public/terrain/18/429293/177016.terrain differ diff --git a/public/terrain/18/429293/177017.terrain b/public/terrain/18/429293/177017.terrain new file mode 100644 index 000000000..2d4b10750 Binary files /dev/null and b/public/terrain/18/429293/177017.terrain differ diff --git a/public/terrain/18/429293/177018.terrain b/public/terrain/18/429293/177018.terrain new file mode 100644 index 000000000..f95dc89ac Binary files /dev/null and b/public/terrain/18/429293/177018.terrain differ diff --git a/public/terrain/18/429293/177019.terrain b/public/terrain/18/429293/177019.terrain new file mode 100644 index 000000000..0b9531c78 Binary files /dev/null and b/public/terrain/18/429293/177019.terrain differ diff --git a/public/terrain/18/429293/177020.terrain b/public/terrain/18/429293/177020.terrain new file mode 100644 index 000000000..3e390d9cc Binary files /dev/null and b/public/terrain/18/429293/177020.terrain differ diff --git a/public/terrain/18/429293/177021.terrain b/public/terrain/18/429293/177021.terrain new file mode 100644 index 000000000..86fd2bfd3 Binary files /dev/null and b/public/terrain/18/429293/177021.terrain differ diff --git a/public/terrain/18/429293/177022.terrain b/public/terrain/18/429293/177022.terrain new file mode 100644 index 000000000..38716d942 Binary files /dev/null and b/public/terrain/18/429293/177022.terrain differ diff --git a/public/terrain/18/429293/177023.terrain b/public/terrain/18/429293/177023.terrain new file mode 100644 index 000000000..049e2d6e3 Binary files /dev/null and b/public/terrain/18/429293/177023.terrain differ diff --git a/public/terrain/18/429293/177024.terrain b/public/terrain/18/429293/177024.terrain new file mode 100644 index 000000000..ad9aedf36 Binary files /dev/null and b/public/terrain/18/429293/177024.terrain differ diff --git a/public/terrain/18/429293/177025.terrain b/public/terrain/18/429293/177025.terrain new file mode 100644 index 000000000..f2bda685a Binary files /dev/null and b/public/terrain/18/429293/177025.terrain differ diff --git a/public/terrain/18/429293/177026.terrain b/public/terrain/18/429293/177026.terrain new file mode 100644 index 000000000..630c33626 Binary files /dev/null and b/public/terrain/18/429293/177026.terrain differ diff --git a/public/terrain/18/429293/177027.terrain b/public/terrain/18/429293/177027.terrain new file mode 100644 index 000000000..90b365feb Binary files /dev/null and b/public/terrain/18/429293/177027.terrain differ diff --git a/public/terrain/18/429293/177028.terrain b/public/terrain/18/429293/177028.terrain new file mode 100644 index 000000000..b57a408c3 Binary files /dev/null and b/public/terrain/18/429293/177028.terrain differ diff --git a/public/terrain/18/429293/177029.terrain b/public/terrain/18/429293/177029.terrain new file mode 100644 index 000000000..3a42d95d0 Binary files /dev/null and b/public/terrain/18/429293/177029.terrain differ diff --git a/public/terrain/18/429294/176871.terrain b/public/terrain/18/429294/176871.terrain new file mode 100644 index 000000000..5e941ae1c Binary files /dev/null and b/public/terrain/18/429294/176871.terrain differ diff --git a/public/terrain/18/429294/176872.terrain b/public/terrain/18/429294/176872.terrain new file mode 100644 index 000000000..73fdd79d4 Binary files /dev/null and b/public/terrain/18/429294/176872.terrain differ diff --git a/public/terrain/18/429294/176873.terrain b/public/terrain/18/429294/176873.terrain new file mode 100644 index 000000000..a9d9db4dd Binary files /dev/null and b/public/terrain/18/429294/176873.terrain differ diff --git a/public/terrain/18/429294/176874.terrain b/public/terrain/18/429294/176874.terrain new file mode 100644 index 000000000..34543a380 Binary files /dev/null and b/public/terrain/18/429294/176874.terrain differ diff --git a/public/terrain/18/429294/176875.terrain b/public/terrain/18/429294/176875.terrain new file mode 100644 index 000000000..da530eaf5 Binary files /dev/null and b/public/terrain/18/429294/176875.terrain differ diff --git a/public/terrain/18/429294/176876.terrain b/public/terrain/18/429294/176876.terrain new file mode 100644 index 000000000..15186ba62 Binary files /dev/null and b/public/terrain/18/429294/176876.terrain differ diff --git a/public/terrain/18/429294/176877.terrain b/public/terrain/18/429294/176877.terrain new file mode 100644 index 000000000..6f67fd0ac Binary files /dev/null and b/public/terrain/18/429294/176877.terrain differ diff --git a/public/terrain/18/429294/176878.terrain b/public/terrain/18/429294/176878.terrain new file mode 100644 index 000000000..52fd0e956 Binary files /dev/null and b/public/terrain/18/429294/176878.terrain differ diff --git a/public/terrain/18/429294/176879.terrain b/public/terrain/18/429294/176879.terrain new file mode 100644 index 000000000..2ee87811a Binary files /dev/null and b/public/terrain/18/429294/176879.terrain differ diff --git a/public/terrain/18/429294/176880.terrain b/public/terrain/18/429294/176880.terrain new file mode 100644 index 000000000..ea7f1c824 Binary files /dev/null and b/public/terrain/18/429294/176880.terrain differ diff --git a/public/terrain/18/429294/176881.terrain b/public/terrain/18/429294/176881.terrain new file mode 100644 index 000000000..ba52e706c Binary files /dev/null and b/public/terrain/18/429294/176881.terrain differ diff --git a/public/terrain/18/429294/176882.terrain b/public/terrain/18/429294/176882.terrain new file mode 100644 index 000000000..a0b9a2a06 Binary files /dev/null and b/public/terrain/18/429294/176882.terrain differ diff --git a/public/terrain/18/429294/176883.terrain b/public/terrain/18/429294/176883.terrain new file mode 100644 index 000000000..b382d74c1 Binary files /dev/null and b/public/terrain/18/429294/176883.terrain differ diff --git a/public/terrain/18/429294/176884.terrain b/public/terrain/18/429294/176884.terrain new file mode 100644 index 000000000..a2bda9b91 Binary files /dev/null and b/public/terrain/18/429294/176884.terrain differ diff --git a/public/terrain/18/429294/176885.terrain b/public/terrain/18/429294/176885.terrain new file mode 100644 index 000000000..01cc2a81d Binary files /dev/null and b/public/terrain/18/429294/176885.terrain differ diff --git a/public/terrain/18/429294/176886.terrain b/public/terrain/18/429294/176886.terrain new file mode 100644 index 000000000..cfbcf4ba9 Binary files /dev/null and b/public/terrain/18/429294/176886.terrain differ diff --git a/public/terrain/18/429294/176887.terrain b/public/terrain/18/429294/176887.terrain new file mode 100644 index 000000000..56f58f29d Binary files /dev/null and b/public/terrain/18/429294/176887.terrain differ diff --git a/public/terrain/18/429294/176888.terrain b/public/terrain/18/429294/176888.terrain new file mode 100644 index 000000000..2534e1638 Binary files /dev/null and b/public/terrain/18/429294/176888.terrain differ diff --git a/public/terrain/18/429294/176889.terrain b/public/terrain/18/429294/176889.terrain new file mode 100644 index 000000000..4b6f60ce4 Binary files /dev/null and b/public/terrain/18/429294/176889.terrain differ diff --git a/public/terrain/18/429294/176890.terrain b/public/terrain/18/429294/176890.terrain new file mode 100644 index 000000000..bcb3d3877 Binary files /dev/null and b/public/terrain/18/429294/176890.terrain differ diff --git a/public/terrain/18/429294/176891.terrain b/public/terrain/18/429294/176891.terrain new file mode 100644 index 000000000..76677287b Binary files /dev/null and b/public/terrain/18/429294/176891.terrain differ diff --git a/public/terrain/18/429294/176892.terrain b/public/terrain/18/429294/176892.terrain new file mode 100644 index 000000000..95f8bcf01 Binary files /dev/null and b/public/terrain/18/429294/176892.terrain differ diff --git a/public/terrain/18/429294/176893.terrain b/public/terrain/18/429294/176893.terrain new file mode 100644 index 000000000..a019db701 Binary files /dev/null and b/public/terrain/18/429294/176893.terrain differ diff --git a/public/terrain/18/429294/176894.terrain b/public/terrain/18/429294/176894.terrain new file mode 100644 index 000000000..4b75ca470 Binary files /dev/null and b/public/terrain/18/429294/176894.terrain differ diff --git a/public/terrain/18/429294/176895.terrain b/public/terrain/18/429294/176895.terrain new file mode 100644 index 000000000..994b0106f Binary files /dev/null and b/public/terrain/18/429294/176895.terrain differ diff --git a/public/terrain/18/429294/176896.terrain b/public/terrain/18/429294/176896.terrain new file mode 100644 index 000000000..182693a96 Binary files /dev/null and b/public/terrain/18/429294/176896.terrain differ diff --git a/public/terrain/18/429294/176897.terrain b/public/terrain/18/429294/176897.terrain new file mode 100644 index 000000000..80d969ed3 Binary files /dev/null and b/public/terrain/18/429294/176897.terrain differ diff --git a/public/terrain/18/429294/176898.terrain b/public/terrain/18/429294/176898.terrain new file mode 100644 index 000000000..c9b70325f Binary files /dev/null and b/public/terrain/18/429294/176898.terrain differ diff --git a/public/terrain/18/429294/176899.terrain b/public/terrain/18/429294/176899.terrain new file mode 100644 index 000000000..d625d2ca2 Binary files /dev/null and b/public/terrain/18/429294/176899.terrain differ diff --git a/public/terrain/18/429294/176900.terrain b/public/terrain/18/429294/176900.terrain new file mode 100644 index 000000000..2fe7adcaa Binary files /dev/null and b/public/terrain/18/429294/176900.terrain differ diff --git a/public/terrain/18/429294/176901.terrain b/public/terrain/18/429294/176901.terrain new file mode 100644 index 000000000..8672cb7fe Binary files /dev/null and b/public/terrain/18/429294/176901.terrain differ diff --git a/public/terrain/18/429294/176902.terrain b/public/terrain/18/429294/176902.terrain new file mode 100644 index 000000000..74934b53a Binary files /dev/null and b/public/terrain/18/429294/176902.terrain differ diff --git a/public/terrain/18/429294/176903.terrain b/public/terrain/18/429294/176903.terrain new file mode 100644 index 000000000..5d212054a Binary files /dev/null and b/public/terrain/18/429294/176903.terrain differ diff --git a/public/terrain/18/429294/176904.terrain b/public/terrain/18/429294/176904.terrain new file mode 100644 index 000000000..caaf92f33 Binary files /dev/null and b/public/terrain/18/429294/176904.terrain differ diff --git a/public/terrain/18/429294/176905.terrain b/public/terrain/18/429294/176905.terrain new file mode 100644 index 000000000..875ffcfde Binary files /dev/null and b/public/terrain/18/429294/176905.terrain differ diff --git a/public/terrain/18/429294/176906.terrain b/public/terrain/18/429294/176906.terrain new file mode 100644 index 000000000..701cb67fb Binary files /dev/null and b/public/terrain/18/429294/176906.terrain differ diff --git a/public/terrain/18/429294/176907.terrain b/public/terrain/18/429294/176907.terrain new file mode 100644 index 000000000..99699e6c4 Binary files /dev/null and b/public/terrain/18/429294/176907.terrain differ diff --git a/public/terrain/18/429294/176908.terrain b/public/terrain/18/429294/176908.terrain new file mode 100644 index 000000000..a2cf24014 Binary files /dev/null and b/public/terrain/18/429294/176908.terrain differ diff --git a/public/terrain/18/429294/176909.terrain b/public/terrain/18/429294/176909.terrain new file mode 100644 index 000000000..9d3f83794 Binary files /dev/null and b/public/terrain/18/429294/176909.terrain differ diff --git a/public/terrain/18/429294/176910.terrain b/public/terrain/18/429294/176910.terrain new file mode 100644 index 000000000..4440bf4c4 Binary files /dev/null and b/public/terrain/18/429294/176910.terrain differ diff --git a/public/terrain/18/429294/176911.terrain b/public/terrain/18/429294/176911.terrain new file mode 100644 index 000000000..7447004c6 Binary files /dev/null and b/public/terrain/18/429294/176911.terrain differ diff --git a/public/terrain/18/429294/176912.terrain b/public/terrain/18/429294/176912.terrain new file mode 100644 index 000000000..225d1dc1d Binary files /dev/null and b/public/terrain/18/429294/176912.terrain differ diff --git a/public/terrain/18/429294/176913.terrain b/public/terrain/18/429294/176913.terrain new file mode 100644 index 000000000..fc5b79ea1 Binary files /dev/null and b/public/terrain/18/429294/176913.terrain differ diff --git a/public/terrain/18/429294/176914.terrain b/public/terrain/18/429294/176914.terrain new file mode 100644 index 000000000..fb63ccfea Binary files /dev/null and b/public/terrain/18/429294/176914.terrain differ diff --git a/public/terrain/18/429294/176915.terrain b/public/terrain/18/429294/176915.terrain new file mode 100644 index 000000000..a77ac1cc4 Binary files /dev/null and b/public/terrain/18/429294/176915.terrain differ diff --git a/public/terrain/18/429294/176916.terrain b/public/terrain/18/429294/176916.terrain new file mode 100644 index 000000000..4b73f11ba Binary files /dev/null and b/public/terrain/18/429294/176916.terrain differ diff --git a/public/terrain/18/429294/176917.terrain b/public/terrain/18/429294/176917.terrain new file mode 100644 index 000000000..02a2fce3f Binary files /dev/null and b/public/terrain/18/429294/176917.terrain differ diff --git a/public/terrain/18/429294/176918.terrain b/public/terrain/18/429294/176918.terrain new file mode 100644 index 000000000..f08715047 Binary files /dev/null and b/public/terrain/18/429294/176918.terrain differ diff --git a/public/terrain/18/429294/176919.terrain b/public/terrain/18/429294/176919.terrain new file mode 100644 index 000000000..e034e6864 Binary files /dev/null and b/public/terrain/18/429294/176919.terrain differ diff --git a/public/terrain/18/429294/176920.terrain b/public/terrain/18/429294/176920.terrain new file mode 100644 index 000000000..9e25d0027 Binary files /dev/null and b/public/terrain/18/429294/176920.terrain differ diff --git a/public/terrain/18/429294/176921.terrain b/public/terrain/18/429294/176921.terrain new file mode 100644 index 000000000..3e9cfb8da Binary files /dev/null and b/public/terrain/18/429294/176921.terrain differ diff --git a/public/terrain/18/429294/176922.terrain b/public/terrain/18/429294/176922.terrain new file mode 100644 index 000000000..844edd7c8 Binary files /dev/null and b/public/terrain/18/429294/176922.terrain differ diff --git a/public/terrain/18/429294/176923.terrain b/public/terrain/18/429294/176923.terrain new file mode 100644 index 000000000..a3d692b13 Binary files /dev/null and b/public/terrain/18/429294/176923.terrain differ diff --git a/public/terrain/18/429294/176924.terrain b/public/terrain/18/429294/176924.terrain new file mode 100644 index 000000000..132b44184 Binary files /dev/null and b/public/terrain/18/429294/176924.terrain differ diff --git a/public/terrain/18/429294/176925.terrain b/public/terrain/18/429294/176925.terrain new file mode 100644 index 000000000..c39eed203 Binary files /dev/null and b/public/terrain/18/429294/176925.terrain differ diff --git a/public/terrain/18/429294/176926.terrain b/public/terrain/18/429294/176926.terrain new file mode 100644 index 000000000..32c6891db Binary files /dev/null and b/public/terrain/18/429294/176926.terrain differ diff --git a/public/terrain/18/429294/176927.terrain b/public/terrain/18/429294/176927.terrain new file mode 100644 index 000000000..7dd78a4f5 Binary files /dev/null and b/public/terrain/18/429294/176927.terrain differ diff --git a/public/terrain/18/429294/176928.terrain b/public/terrain/18/429294/176928.terrain new file mode 100644 index 000000000..bf6437de6 Binary files /dev/null and b/public/terrain/18/429294/176928.terrain differ diff --git a/public/terrain/18/429294/176929.terrain b/public/terrain/18/429294/176929.terrain new file mode 100644 index 000000000..dba088228 Binary files /dev/null and b/public/terrain/18/429294/176929.terrain differ diff --git a/public/terrain/18/429294/176930.terrain b/public/terrain/18/429294/176930.terrain new file mode 100644 index 000000000..1fd328f0f Binary files /dev/null and b/public/terrain/18/429294/176930.terrain differ diff --git a/public/terrain/18/429294/176931.terrain b/public/terrain/18/429294/176931.terrain new file mode 100644 index 000000000..9befd3afd Binary files /dev/null and b/public/terrain/18/429294/176931.terrain differ diff --git a/public/terrain/18/429294/176932.terrain b/public/terrain/18/429294/176932.terrain new file mode 100644 index 000000000..92566be10 Binary files /dev/null and b/public/terrain/18/429294/176932.terrain differ diff --git a/public/terrain/18/429294/176933.terrain b/public/terrain/18/429294/176933.terrain new file mode 100644 index 000000000..687e891c9 Binary files /dev/null and b/public/terrain/18/429294/176933.terrain differ diff --git a/public/terrain/18/429294/176934.terrain b/public/terrain/18/429294/176934.terrain new file mode 100644 index 000000000..d745f9100 Binary files /dev/null and b/public/terrain/18/429294/176934.terrain differ diff --git a/public/terrain/18/429294/176935.terrain b/public/terrain/18/429294/176935.terrain new file mode 100644 index 000000000..3bdc3e12b Binary files /dev/null and b/public/terrain/18/429294/176935.terrain differ diff --git a/public/terrain/18/429294/176936.terrain b/public/terrain/18/429294/176936.terrain new file mode 100644 index 000000000..3d9f98a0a Binary files /dev/null and b/public/terrain/18/429294/176936.terrain differ diff --git a/public/terrain/18/429294/176937.terrain b/public/terrain/18/429294/176937.terrain new file mode 100644 index 000000000..724b42a14 Binary files /dev/null and b/public/terrain/18/429294/176937.terrain differ diff --git a/public/terrain/18/429294/176938.terrain b/public/terrain/18/429294/176938.terrain new file mode 100644 index 000000000..e0ca4bccd Binary files /dev/null and b/public/terrain/18/429294/176938.terrain differ diff --git a/public/terrain/18/429294/176939.terrain b/public/terrain/18/429294/176939.terrain new file mode 100644 index 000000000..9108a5e6c Binary files /dev/null and b/public/terrain/18/429294/176939.terrain differ diff --git a/public/terrain/18/429294/176940.terrain b/public/terrain/18/429294/176940.terrain new file mode 100644 index 000000000..55b97d354 Binary files /dev/null and b/public/terrain/18/429294/176940.terrain differ diff --git a/public/terrain/18/429294/176941.terrain b/public/terrain/18/429294/176941.terrain new file mode 100644 index 000000000..def544c9d Binary files /dev/null and b/public/terrain/18/429294/176941.terrain differ diff --git a/public/terrain/18/429294/176942.terrain b/public/terrain/18/429294/176942.terrain new file mode 100644 index 000000000..a26346c75 Binary files /dev/null and b/public/terrain/18/429294/176942.terrain differ diff --git a/public/terrain/18/429294/176943.terrain b/public/terrain/18/429294/176943.terrain new file mode 100644 index 000000000..e826e9ae3 Binary files /dev/null and b/public/terrain/18/429294/176943.terrain differ diff --git a/public/terrain/18/429294/176944.terrain b/public/terrain/18/429294/176944.terrain new file mode 100644 index 000000000..20269064d Binary files /dev/null and b/public/terrain/18/429294/176944.terrain differ diff --git a/public/terrain/18/429294/176945.terrain b/public/terrain/18/429294/176945.terrain new file mode 100644 index 000000000..93e1149ed Binary files /dev/null and b/public/terrain/18/429294/176945.terrain differ diff --git a/public/terrain/18/429294/176946.terrain b/public/terrain/18/429294/176946.terrain new file mode 100644 index 000000000..3d4350261 Binary files /dev/null and b/public/terrain/18/429294/176946.terrain differ diff --git a/public/terrain/18/429294/176947.terrain b/public/terrain/18/429294/176947.terrain new file mode 100644 index 000000000..7f34ecdd0 Binary files /dev/null and b/public/terrain/18/429294/176947.terrain differ diff --git a/public/terrain/18/429294/176948.terrain b/public/terrain/18/429294/176948.terrain new file mode 100644 index 000000000..201f8eae4 Binary files /dev/null and b/public/terrain/18/429294/176948.terrain differ diff --git a/public/terrain/18/429294/176949.terrain b/public/terrain/18/429294/176949.terrain new file mode 100644 index 000000000..d26755280 Binary files /dev/null and b/public/terrain/18/429294/176949.terrain differ diff --git a/public/terrain/18/429294/176950.terrain b/public/terrain/18/429294/176950.terrain new file mode 100644 index 000000000..bd3c47df6 Binary files /dev/null and b/public/terrain/18/429294/176950.terrain differ diff --git a/public/terrain/18/429294/176951.terrain b/public/terrain/18/429294/176951.terrain new file mode 100644 index 000000000..63bcac5c8 Binary files /dev/null and b/public/terrain/18/429294/176951.terrain differ diff --git a/public/terrain/18/429294/176952.terrain b/public/terrain/18/429294/176952.terrain new file mode 100644 index 000000000..571adb590 Binary files /dev/null and b/public/terrain/18/429294/176952.terrain differ diff --git a/public/terrain/18/429294/176953.terrain b/public/terrain/18/429294/176953.terrain new file mode 100644 index 000000000..91716b124 Binary files /dev/null and b/public/terrain/18/429294/176953.terrain differ diff --git a/public/terrain/18/429294/176954.terrain b/public/terrain/18/429294/176954.terrain new file mode 100644 index 000000000..980db1c13 Binary files /dev/null and b/public/terrain/18/429294/176954.terrain differ diff --git a/public/terrain/18/429294/176955.terrain b/public/terrain/18/429294/176955.terrain new file mode 100644 index 000000000..ef7693626 Binary files /dev/null and b/public/terrain/18/429294/176955.terrain differ diff --git a/public/terrain/18/429294/176956.terrain b/public/terrain/18/429294/176956.terrain new file mode 100644 index 000000000..9816f3ada Binary files /dev/null and b/public/terrain/18/429294/176956.terrain differ diff --git a/public/terrain/18/429294/176957.terrain b/public/terrain/18/429294/176957.terrain new file mode 100644 index 000000000..db4770422 Binary files /dev/null and b/public/terrain/18/429294/176957.terrain differ diff --git a/public/terrain/18/429294/176958.terrain b/public/terrain/18/429294/176958.terrain new file mode 100644 index 000000000..81eeb357d Binary files /dev/null and b/public/terrain/18/429294/176958.terrain differ diff --git a/public/terrain/18/429294/176959.terrain b/public/terrain/18/429294/176959.terrain new file mode 100644 index 000000000..4be0e9906 Binary files /dev/null and b/public/terrain/18/429294/176959.terrain differ diff --git a/public/terrain/18/429294/176960.terrain b/public/terrain/18/429294/176960.terrain new file mode 100644 index 000000000..cc3510016 Binary files /dev/null and b/public/terrain/18/429294/176960.terrain differ diff --git a/public/terrain/18/429294/176961.terrain b/public/terrain/18/429294/176961.terrain new file mode 100644 index 000000000..9f5122326 Binary files /dev/null and b/public/terrain/18/429294/176961.terrain differ diff --git a/public/terrain/18/429294/176962.terrain b/public/terrain/18/429294/176962.terrain new file mode 100644 index 000000000..e001d2cfb Binary files /dev/null and b/public/terrain/18/429294/176962.terrain differ diff --git a/public/terrain/18/429294/176963.terrain b/public/terrain/18/429294/176963.terrain new file mode 100644 index 000000000..da37c0b5b Binary files /dev/null and b/public/terrain/18/429294/176963.terrain differ diff --git a/public/terrain/18/429294/176964.terrain b/public/terrain/18/429294/176964.terrain new file mode 100644 index 000000000..453c9b9a5 Binary files /dev/null and b/public/terrain/18/429294/176964.terrain differ diff --git a/public/terrain/18/429294/176965.terrain b/public/terrain/18/429294/176965.terrain new file mode 100644 index 000000000..df22abb8d Binary files /dev/null and b/public/terrain/18/429294/176965.terrain differ diff --git a/public/terrain/18/429294/176966.terrain b/public/terrain/18/429294/176966.terrain new file mode 100644 index 000000000..461cd1977 Binary files /dev/null and b/public/terrain/18/429294/176966.terrain differ diff --git a/public/terrain/18/429294/176967.terrain b/public/terrain/18/429294/176967.terrain new file mode 100644 index 000000000..363b2022b Binary files /dev/null and b/public/terrain/18/429294/176967.terrain differ diff --git a/public/terrain/18/429294/176968.terrain b/public/terrain/18/429294/176968.terrain new file mode 100644 index 000000000..399ca1423 Binary files /dev/null and b/public/terrain/18/429294/176968.terrain differ diff --git a/public/terrain/18/429294/176969.terrain b/public/terrain/18/429294/176969.terrain new file mode 100644 index 000000000..c97724fa1 Binary files /dev/null and b/public/terrain/18/429294/176969.terrain differ diff --git a/public/terrain/18/429294/176970.terrain b/public/terrain/18/429294/176970.terrain new file mode 100644 index 000000000..b0e4deb3f Binary files /dev/null and b/public/terrain/18/429294/176970.terrain differ diff --git a/public/terrain/18/429294/176971.terrain b/public/terrain/18/429294/176971.terrain new file mode 100644 index 000000000..43627fb14 Binary files /dev/null and b/public/terrain/18/429294/176971.terrain differ diff --git a/public/terrain/18/429294/176972.terrain b/public/terrain/18/429294/176972.terrain new file mode 100644 index 000000000..7142d2a2c Binary files /dev/null and b/public/terrain/18/429294/176972.terrain differ diff --git a/public/terrain/18/429294/176973.terrain b/public/terrain/18/429294/176973.terrain new file mode 100644 index 000000000..aec931424 Binary files /dev/null and b/public/terrain/18/429294/176973.terrain differ diff --git a/public/terrain/18/429294/176974.terrain b/public/terrain/18/429294/176974.terrain new file mode 100644 index 000000000..a025822a2 Binary files /dev/null and b/public/terrain/18/429294/176974.terrain differ diff --git a/public/terrain/18/429294/176975.terrain b/public/terrain/18/429294/176975.terrain new file mode 100644 index 000000000..55f2f78b1 Binary files /dev/null and b/public/terrain/18/429294/176975.terrain differ diff --git a/public/terrain/18/429294/176976.terrain b/public/terrain/18/429294/176976.terrain new file mode 100644 index 000000000..314fbbc2f Binary files /dev/null and b/public/terrain/18/429294/176976.terrain differ diff --git a/public/terrain/18/429294/176977.terrain b/public/terrain/18/429294/176977.terrain new file mode 100644 index 000000000..0d3f0e738 Binary files /dev/null and b/public/terrain/18/429294/176977.terrain differ diff --git a/public/terrain/18/429294/176978.terrain b/public/terrain/18/429294/176978.terrain new file mode 100644 index 000000000..6c09546cb Binary files /dev/null and b/public/terrain/18/429294/176978.terrain differ diff --git a/public/terrain/18/429294/176979.terrain b/public/terrain/18/429294/176979.terrain new file mode 100644 index 000000000..d07374fd4 Binary files /dev/null and b/public/terrain/18/429294/176979.terrain differ diff --git a/public/terrain/18/429294/176980.terrain b/public/terrain/18/429294/176980.terrain new file mode 100644 index 000000000..45ce9fba0 Binary files /dev/null and b/public/terrain/18/429294/176980.terrain differ diff --git a/public/terrain/18/429294/176981.terrain b/public/terrain/18/429294/176981.terrain new file mode 100644 index 000000000..4a37836c1 Binary files /dev/null and b/public/terrain/18/429294/176981.terrain differ diff --git a/public/terrain/18/429294/176982.terrain b/public/terrain/18/429294/176982.terrain new file mode 100644 index 000000000..34f8aaeb3 Binary files /dev/null and b/public/terrain/18/429294/176982.terrain differ diff --git a/public/terrain/18/429294/176983.terrain b/public/terrain/18/429294/176983.terrain new file mode 100644 index 000000000..3f8491bf2 Binary files /dev/null and b/public/terrain/18/429294/176983.terrain differ diff --git a/public/terrain/18/429294/176984.terrain b/public/terrain/18/429294/176984.terrain new file mode 100644 index 000000000..0fb120e91 Binary files /dev/null and b/public/terrain/18/429294/176984.terrain differ diff --git a/public/terrain/18/429294/176985.terrain b/public/terrain/18/429294/176985.terrain new file mode 100644 index 000000000..8dc779800 Binary files /dev/null and b/public/terrain/18/429294/176985.terrain differ diff --git a/public/terrain/18/429294/176986.terrain b/public/terrain/18/429294/176986.terrain new file mode 100644 index 000000000..30afcb760 Binary files /dev/null and b/public/terrain/18/429294/176986.terrain differ diff --git a/public/terrain/18/429294/176987.terrain b/public/terrain/18/429294/176987.terrain new file mode 100644 index 000000000..6a5469788 Binary files /dev/null and b/public/terrain/18/429294/176987.terrain differ diff --git a/public/terrain/18/429294/176988.terrain b/public/terrain/18/429294/176988.terrain new file mode 100644 index 000000000..30ac7f2f4 Binary files /dev/null and b/public/terrain/18/429294/176988.terrain differ diff --git a/public/terrain/18/429294/176989.terrain b/public/terrain/18/429294/176989.terrain new file mode 100644 index 000000000..210000c81 Binary files /dev/null and b/public/terrain/18/429294/176989.terrain differ diff --git a/public/terrain/18/429294/176990.terrain b/public/terrain/18/429294/176990.terrain new file mode 100644 index 000000000..54f96f604 Binary files /dev/null and b/public/terrain/18/429294/176990.terrain differ diff --git a/public/terrain/18/429294/176991.terrain b/public/terrain/18/429294/176991.terrain new file mode 100644 index 000000000..3dd495e09 Binary files /dev/null and b/public/terrain/18/429294/176991.terrain differ diff --git a/public/terrain/18/429294/176992.terrain b/public/terrain/18/429294/176992.terrain new file mode 100644 index 000000000..62c62613d Binary files /dev/null and b/public/terrain/18/429294/176992.terrain differ diff --git a/public/terrain/18/429294/176993.terrain b/public/terrain/18/429294/176993.terrain new file mode 100644 index 000000000..46cd25f80 Binary files /dev/null and b/public/terrain/18/429294/176993.terrain differ diff --git a/public/terrain/18/429294/176994.terrain b/public/terrain/18/429294/176994.terrain new file mode 100644 index 000000000..8d3b81d73 Binary files /dev/null and b/public/terrain/18/429294/176994.terrain differ diff --git a/public/terrain/18/429294/176995.terrain b/public/terrain/18/429294/176995.terrain new file mode 100644 index 000000000..f81210f0c Binary files /dev/null and b/public/terrain/18/429294/176995.terrain differ diff --git a/public/terrain/18/429294/176996.terrain b/public/terrain/18/429294/176996.terrain new file mode 100644 index 000000000..126eaedb9 Binary files /dev/null and b/public/terrain/18/429294/176996.terrain differ diff --git a/public/terrain/18/429294/176997.terrain b/public/terrain/18/429294/176997.terrain new file mode 100644 index 000000000..f26ebbbc2 Binary files /dev/null and b/public/terrain/18/429294/176997.terrain differ diff --git a/public/terrain/18/429294/176998.terrain b/public/terrain/18/429294/176998.terrain new file mode 100644 index 000000000..6c90f0b69 Binary files /dev/null and b/public/terrain/18/429294/176998.terrain differ diff --git a/public/terrain/18/429294/176999.terrain b/public/terrain/18/429294/176999.terrain new file mode 100644 index 000000000..7ba1f5cf1 Binary files /dev/null and b/public/terrain/18/429294/176999.terrain differ diff --git a/public/terrain/18/429294/177000.terrain b/public/terrain/18/429294/177000.terrain new file mode 100644 index 000000000..ebd817c89 Binary files /dev/null and b/public/terrain/18/429294/177000.terrain differ diff --git a/public/terrain/18/429294/177001.terrain b/public/terrain/18/429294/177001.terrain new file mode 100644 index 000000000..79d2fcb74 Binary files /dev/null and b/public/terrain/18/429294/177001.terrain differ diff --git a/public/terrain/18/429294/177002.terrain b/public/terrain/18/429294/177002.terrain new file mode 100644 index 000000000..901c3efc2 Binary files /dev/null and b/public/terrain/18/429294/177002.terrain differ diff --git a/public/terrain/18/429294/177003.terrain b/public/terrain/18/429294/177003.terrain new file mode 100644 index 000000000..05c36e4d2 Binary files /dev/null and b/public/terrain/18/429294/177003.terrain differ diff --git a/public/terrain/18/429294/177004.terrain b/public/terrain/18/429294/177004.terrain new file mode 100644 index 000000000..6918479e4 Binary files /dev/null and b/public/terrain/18/429294/177004.terrain differ diff --git a/public/terrain/18/429294/177005.terrain b/public/terrain/18/429294/177005.terrain new file mode 100644 index 000000000..79897c90a Binary files /dev/null and b/public/terrain/18/429294/177005.terrain differ diff --git a/public/terrain/18/429294/177006.terrain b/public/terrain/18/429294/177006.terrain new file mode 100644 index 000000000..e7389fbc2 Binary files /dev/null and b/public/terrain/18/429294/177006.terrain differ diff --git a/public/terrain/18/429294/177007.terrain b/public/terrain/18/429294/177007.terrain new file mode 100644 index 000000000..697405a41 Binary files /dev/null and b/public/terrain/18/429294/177007.terrain differ diff --git a/public/terrain/18/429294/177008.terrain b/public/terrain/18/429294/177008.terrain new file mode 100644 index 000000000..740d7df4a Binary files /dev/null and b/public/terrain/18/429294/177008.terrain differ diff --git a/public/terrain/18/429294/177009.terrain b/public/terrain/18/429294/177009.terrain new file mode 100644 index 000000000..0645f7687 Binary files /dev/null and b/public/terrain/18/429294/177009.terrain differ diff --git a/public/terrain/18/429294/177010.terrain b/public/terrain/18/429294/177010.terrain new file mode 100644 index 000000000..3a837eb52 Binary files /dev/null and b/public/terrain/18/429294/177010.terrain differ diff --git a/public/terrain/18/429294/177011.terrain b/public/terrain/18/429294/177011.terrain new file mode 100644 index 000000000..0a4af7f76 Binary files /dev/null and b/public/terrain/18/429294/177011.terrain differ diff --git a/public/terrain/18/429294/177012.terrain b/public/terrain/18/429294/177012.terrain new file mode 100644 index 000000000..8bfc7e4fb Binary files /dev/null and b/public/terrain/18/429294/177012.terrain differ diff --git a/public/terrain/18/429294/177013.terrain b/public/terrain/18/429294/177013.terrain new file mode 100644 index 000000000..6eb8d2013 Binary files /dev/null and b/public/terrain/18/429294/177013.terrain differ diff --git a/public/terrain/18/429294/177014.terrain b/public/terrain/18/429294/177014.terrain new file mode 100644 index 000000000..72929b50b Binary files /dev/null and b/public/terrain/18/429294/177014.terrain differ diff --git a/public/terrain/18/429294/177015.terrain b/public/terrain/18/429294/177015.terrain new file mode 100644 index 000000000..b60180bbf Binary files /dev/null and b/public/terrain/18/429294/177015.terrain differ diff --git a/public/terrain/18/429294/177016.terrain b/public/terrain/18/429294/177016.terrain new file mode 100644 index 000000000..fd17bb384 Binary files /dev/null and b/public/terrain/18/429294/177016.terrain differ diff --git a/public/terrain/18/429294/177017.terrain b/public/terrain/18/429294/177017.terrain new file mode 100644 index 000000000..b19fa6ced Binary files /dev/null and b/public/terrain/18/429294/177017.terrain differ diff --git a/public/terrain/18/429294/177018.terrain b/public/terrain/18/429294/177018.terrain new file mode 100644 index 000000000..dd0b89bc5 Binary files /dev/null and b/public/terrain/18/429294/177018.terrain differ diff --git a/public/terrain/18/429294/177019.terrain b/public/terrain/18/429294/177019.terrain new file mode 100644 index 000000000..6a17fba11 Binary files /dev/null and b/public/terrain/18/429294/177019.terrain differ diff --git a/public/terrain/18/429294/177020.terrain b/public/terrain/18/429294/177020.terrain new file mode 100644 index 000000000..eb4e5c91e Binary files /dev/null and b/public/terrain/18/429294/177020.terrain differ diff --git a/public/terrain/18/429294/177021.terrain b/public/terrain/18/429294/177021.terrain new file mode 100644 index 000000000..8ede1ce58 Binary files /dev/null and b/public/terrain/18/429294/177021.terrain differ diff --git a/public/terrain/18/429294/177022.terrain b/public/terrain/18/429294/177022.terrain new file mode 100644 index 000000000..2073d6ca4 Binary files /dev/null and b/public/terrain/18/429294/177022.terrain differ diff --git a/public/terrain/18/429294/177023.terrain b/public/terrain/18/429294/177023.terrain new file mode 100644 index 000000000..f1042cc68 Binary files /dev/null and b/public/terrain/18/429294/177023.terrain differ diff --git a/public/terrain/18/429294/177024.terrain b/public/terrain/18/429294/177024.terrain new file mode 100644 index 000000000..b1663b9d6 Binary files /dev/null and b/public/terrain/18/429294/177024.terrain differ diff --git a/public/terrain/18/429294/177025.terrain b/public/terrain/18/429294/177025.terrain new file mode 100644 index 000000000..9b8034121 Binary files /dev/null and b/public/terrain/18/429294/177025.terrain differ diff --git a/public/terrain/18/429294/177026.terrain b/public/terrain/18/429294/177026.terrain new file mode 100644 index 000000000..7f9935e49 Binary files /dev/null and b/public/terrain/18/429294/177026.terrain differ diff --git a/public/terrain/18/429294/177027.terrain b/public/terrain/18/429294/177027.terrain new file mode 100644 index 000000000..e375f527c Binary files /dev/null and b/public/terrain/18/429294/177027.terrain differ diff --git a/public/terrain/18/429294/177028.terrain b/public/terrain/18/429294/177028.terrain new file mode 100644 index 000000000..26c65ced8 Binary files /dev/null and b/public/terrain/18/429294/177028.terrain differ diff --git a/public/terrain/18/429294/177029.terrain b/public/terrain/18/429294/177029.terrain new file mode 100644 index 000000000..ebdfb8385 Binary files /dev/null and b/public/terrain/18/429294/177029.terrain differ diff --git a/public/terrain/18/429295/176871.terrain b/public/terrain/18/429295/176871.terrain new file mode 100644 index 000000000..10d669384 Binary files /dev/null and b/public/terrain/18/429295/176871.terrain differ diff --git a/public/terrain/18/429295/176872.terrain b/public/terrain/18/429295/176872.terrain new file mode 100644 index 000000000..1b5c1ca45 Binary files /dev/null and b/public/terrain/18/429295/176872.terrain differ diff --git a/public/terrain/18/429295/176873.terrain b/public/terrain/18/429295/176873.terrain new file mode 100644 index 000000000..fd659f404 Binary files /dev/null and b/public/terrain/18/429295/176873.terrain differ diff --git a/public/terrain/18/429295/176874.terrain b/public/terrain/18/429295/176874.terrain new file mode 100644 index 000000000..5fe8b6053 Binary files /dev/null and b/public/terrain/18/429295/176874.terrain differ diff --git a/public/terrain/18/429295/176875.terrain b/public/terrain/18/429295/176875.terrain new file mode 100644 index 000000000..0add523e0 Binary files /dev/null and b/public/terrain/18/429295/176875.terrain differ diff --git a/public/terrain/18/429295/176876.terrain b/public/terrain/18/429295/176876.terrain new file mode 100644 index 000000000..e15dfd694 Binary files /dev/null and b/public/terrain/18/429295/176876.terrain differ diff --git a/public/terrain/18/429295/176877.terrain b/public/terrain/18/429295/176877.terrain new file mode 100644 index 000000000..18d7ad21d Binary files /dev/null and b/public/terrain/18/429295/176877.terrain differ diff --git a/public/terrain/18/429295/176878.terrain b/public/terrain/18/429295/176878.terrain new file mode 100644 index 000000000..8773a47f1 Binary files /dev/null and b/public/terrain/18/429295/176878.terrain differ diff --git a/public/terrain/18/429295/176879.terrain b/public/terrain/18/429295/176879.terrain new file mode 100644 index 000000000..920eddd83 Binary files /dev/null and b/public/terrain/18/429295/176879.terrain differ diff --git a/public/terrain/18/429295/176880.terrain b/public/terrain/18/429295/176880.terrain new file mode 100644 index 000000000..01409060b Binary files /dev/null and b/public/terrain/18/429295/176880.terrain differ diff --git a/public/terrain/18/429295/176881.terrain b/public/terrain/18/429295/176881.terrain new file mode 100644 index 000000000..4816556d7 Binary files /dev/null and b/public/terrain/18/429295/176881.terrain differ diff --git a/public/terrain/18/429295/176882.terrain b/public/terrain/18/429295/176882.terrain new file mode 100644 index 000000000..7ab05abc4 Binary files /dev/null and b/public/terrain/18/429295/176882.terrain differ diff --git a/public/terrain/18/429295/176883.terrain b/public/terrain/18/429295/176883.terrain new file mode 100644 index 000000000..5cfa3d5eb Binary files /dev/null and b/public/terrain/18/429295/176883.terrain differ diff --git a/public/terrain/18/429295/176884.terrain b/public/terrain/18/429295/176884.terrain new file mode 100644 index 000000000..ad0768ebb Binary files /dev/null and b/public/terrain/18/429295/176884.terrain differ diff --git a/public/terrain/18/429295/176885.terrain b/public/terrain/18/429295/176885.terrain new file mode 100644 index 000000000..1810f1b84 Binary files /dev/null and b/public/terrain/18/429295/176885.terrain differ diff --git a/public/terrain/18/429295/176886.terrain b/public/terrain/18/429295/176886.terrain new file mode 100644 index 000000000..f79fb913d Binary files /dev/null and b/public/terrain/18/429295/176886.terrain differ diff --git a/public/terrain/18/429295/176887.terrain b/public/terrain/18/429295/176887.terrain new file mode 100644 index 000000000..05b769bca Binary files /dev/null and b/public/terrain/18/429295/176887.terrain differ diff --git a/public/terrain/18/429295/176888.terrain b/public/terrain/18/429295/176888.terrain new file mode 100644 index 000000000..4183b09ae Binary files /dev/null and b/public/terrain/18/429295/176888.terrain differ diff --git a/public/terrain/18/429295/176889.terrain b/public/terrain/18/429295/176889.terrain new file mode 100644 index 000000000..1e0102eab Binary files /dev/null and b/public/terrain/18/429295/176889.terrain differ diff --git a/public/terrain/18/429295/176890.terrain b/public/terrain/18/429295/176890.terrain new file mode 100644 index 000000000..37f278272 Binary files /dev/null and b/public/terrain/18/429295/176890.terrain differ diff --git a/public/terrain/18/429295/176891.terrain b/public/terrain/18/429295/176891.terrain new file mode 100644 index 000000000..0a38474ea Binary files /dev/null and b/public/terrain/18/429295/176891.terrain differ diff --git a/public/terrain/18/429295/176892.terrain b/public/terrain/18/429295/176892.terrain new file mode 100644 index 000000000..5ff80b63c Binary files /dev/null and b/public/terrain/18/429295/176892.terrain differ diff --git a/public/terrain/18/429295/176893.terrain b/public/terrain/18/429295/176893.terrain new file mode 100644 index 000000000..be373f624 Binary files /dev/null and b/public/terrain/18/429295/176893.terrain differ diff --git a/public/terrain/18/429295/176894.terrain b/public/terrain/18/429295/176894.terrain new file mode 100644 index 000000000..f2c7ff196 Binary files /dev/null and b/public/terrain/18/429295/176894.terrain differ diff --git a/public/terrain/18/429295/176895.terrain b/public/terrain/18/429295/176895.terrain new file mode 100644 index 000000000..1868f1c24 Binary files /dev/null and b/public/terrain/18/429295/176895.terrain differ diff --git a/public/terrain/18/429295/176896.terrain b/public/terrain/18/429295/176896.terrain new file mode 100644 index 000000000..7e34c694a Binary files /dev/null and b/public/terrain/18/429295/176896.terrain differ diff --git a/public/terrain/18/429295/176897.terrain b/public/terrain/18/429295/176897.terrain new file mode 100644 index 000000000..33cfc9c31 Binary files /dev/null and b/public/terrain/18/429295/176897.terrain differ diff --git a/public/terrain/18/429295/176898.terrain b/public/terrain/18/429295/176898.terrain new file mode 100644 index 000000000..e21014dd7 Binary files /dev/null and b/public/terrain/18/429295/176898.terrain differ diff --git a/public/terrain/18/429295/176899.terrain b/public/terrain/18/429295/176899.terrain new file mode 100644 index 000000000..828d0f7a2 Binary files /dev/null and b/public/terrain/18/429295/176899.terrain differ diff --git a/public/terrain/18/429295/176900.terrain b/public/terrain/18/429295/176900.terrain new file mode 100644 index 000000000..6912bec35 Binary files /dev/null and b/public/terrain/18/429295/176900.terrain differ diff --git a/public/terrain/18/429295/176901.terrain b/public/terrain/18/429295/176901.terrain new file mode 100644 index 000000000..d6972cb55 Binary files /dev/null and b/public/terrain/18/429295/176901.terrain differ diff --git a/public/terrain/18/429295/176902.terrain b/public/terrain/18/429295/176902.terrain new file mode 100644 index 000000000..31614228f Binary files /dev/null and b/public/terrain/18/429295/176902.terrain differ diff --git a/public/terrain/18/429295/176903.terrain b/public/terrain/18/429295/176903.terrain new file mode 100644 index 000000000..8771cd5cb Binary files /dev/null and b/public/terrain/18/429295/176903.terrain differ diff --git a/public/terrain/18/429295/176904.terrain b/public/terrain/18/429295/176904.terrain new file mode 100644 index 000000000..51d1508bf Binary files /dev/null and b/public/terrain/18/429295/176904.terrain differ diff --git a/public/terrain/18/429295/176905.terrain b/public/terrain/18/429295/176905.terrain new file mode 100644 index 000000000..f545ead96 Binary files /dev/null and b/public/terrain/18/429295/176905.terrain differ diff --git a/public/terrain/18/429295/176906.terrain b/public/terrain/18/429295/176906.terrain new file mode 100644 index 000000000..906f9a776 Binary files /dev/null and b/public/terrain/18/429295/176906.terrain differ diff --git a/public/terrain/18/429295/176907.terrain b/public/terrain/18/429295/176907.terrain new file mode 100644 index 000000000..edbb6f810 Binary files /dev/null and b/public/terrain/18/429295/176907.terrain differ diff --git a/public/terrain/18/429295/176908.terrain b/public/terrain/18/429295/176908.terrain new file mode 100644 index 000000000..6693a2609 Binary files /dev/null and b/public/terrain/18/429295/176908.terrain differ diff --git a/public/terrain/18/429295/176909.terrain b/public/terrain/18/429295/176909.terrain new file mode 100644 index 000000000..70d01095d Binary files /dev/null and b/public/terrain/18/429295/176909.terrain differ diff --git a/public/terrain/18/429295/176910.terrain b/public/terrain/18/429295/176910.terrain new file mode 100644 index 000000000..53d23b3c7 Binary files /dev/null and b/public/terrain/18/429295/176910.terrain differ diff --git a/public/terrain/18/429295/176911.terrain b/public/terrain/18/429295/176911.terrain new file mode 100644 index 000000000..9d3383e69 Binary files /dev/null and b/public/terrain/18/429295/176911.terrain differ diff --git a/public/terrain/18/429295/176912.terrain b/public/terrain/18/429295/176912.terrain new file mode 100644 index 000000000..f76453ba5 Binary files /dev/null and b/public/terrain/18/429295/176912.terrain differ diff --git a/public/terrain/18/429295/176913.terrain b/public/terrain/18/429295/176913.terrain new file mode 100644 index 000000000..e70aff33c Binary files /dev/null and b/public/terrain/18/429295/176913.terrain differ diff --git a/public/terrain/18/429295/176914.terrain b/public/terrain/18/429295/176914.terrain new file mode 100644 index 000000000..eafd5847e Binary files /dev/null and b/public/terrain/18/429295/176914.terrain differ diff --git a/public/terrain/18/429295/176915.terrain b/public/terrain/18/429295/176915.terrain new file mode 100644 index 000000000..4394bdb3b Binary files /dev/null and b/public/terrain/18/429295/176915.terrain differ diff --git a/public/terrain/18/429295/176916.terrain b/public/terrain/18/429295/176916.terrain new file mode 100644 index 000000000..437bf7e68 Binary files /dev/null and b/public/terrain/18/429295/176916.terrain differ diff --git a/public/terrain/18/429295/176917.terrain b/public/terrain/18/429295/176917.terrain new file mode 100644 index 000000000..4fe19ecf3 Binary files /dev/null and b/public/terrain/18/429295/176917.terrain differ diff --git a/public/terrain/18/429295/176918.terrain b/public/terrain/18/429295/176918.terrain new file mode 100644 index 000000000..0d1b6e2f3 Binary files /dev/null and b/public/terrain/18/429295/176918.terrain differ diff --git a/public/terrain/18/429295/176919.terrain b/public/terrain/18/429295/176919.terrain new file mode 100644 index 000000000..bdff6d17b Binary files /dev/null and b/public/terrain/18/429295/176919.terrain differ diff --git a/public/terrain/18/429295/176920.terrain b/public/terrain/18/429295/176920.terrain new file mode 100644 index 000000000..b9e669a78 Binary files /dev/null and b/public/terrain/18/429295/176920.terrain differ diff --git a/public/terrain/18/429295/176921.terrain b/public/terrain/18/429295/176921.terrain new file mode 100644 index 000000000..8ba3fc3cf Binary files /dev/null and b/public/terrain/18/429295/176921.terrain differ diff --git a/public/terrain/18/429295/176922.terrain b/public/terrain/18/429295/176922.terrain new file mode 100644 index 000000000..e395abb69 Binary files /dev/null and b/public/terrain/18/429295/176922.terrain differ diff --git a/public/terrain/18/429295/176923.terrain b/public/terrain/18/429295/176923.terrain new file mode 100644 index 000000000..ebc691fb2 Binary files /dev/null and b/public/terrain/18/429295/176923.terrain differ diff --git a/public/terrain/18/429295/176924.terrain b/public/terrain/18/429295/176924.terrain new file mode 100644 index 000000000..10bdd9507 Binary files /dev/null and b/public/terrain/18/429295/176924.terrain differ diff --git a/public/terrain/18/429295/176925.terrain b/public/terrain/18/429295/176925.terrain new file mode 100644 index 000000000..43e44b4d6 Binary files /dev/null and b/public/terrain/18/429295/176925.terrain differ diff --git a/public/terrain/18/429295/176926.terrain b/public/terrain/18/429295/176926.terrain new file mode 100644 index 000000000..25df8a9e9 Binary files /dev/null and b/public/terrain/18/429295/176926.terrain differ diff --git a/public/terrain/18/429295/176927.terrain b/public/terrain/18/429295/176927.terrain new file mode 100644 index 000000000..47419fef3 Binary files /dev/null and b/public/terrain/18/429295/176927.terrain differ diff --git a/public/terrain/18/429295/176928.terrain b/public/terrain/18/429295/176928.terrain new file mode 100644 index 000000000..e3ed6513c Binary files /dev/null and b/public/terrain/18/429295/176928.terrain differ diff --git a/public/terrain/18/429295/176929.terrain b/public/terrain/18/429295/176929.terrain new file mode 100644 index 000000000..3c6813d98 Binary files /dev/null and b/public/terrain/18/429295/176929.terrain differ diff --git a/public/terrain/18/429295/176930.terrain b/public/terrain/18/429295/176930.terrain new file mode 100644 index 000000000..c750edc71 Binary files /dev/null and b/public/terrain/18/429295/176930.terrain differ diff --git a/public/terrain/18/429295/176931.terrain b/public/terrain/18/429295/176931.terrain new file mode 100644 index 000000000..61696d584 Binary files /dev/null and b/public/terrain/18/429295/176931.terrain differ diff --git a/public/terrain/18/429295/176932.terrain b/public/terrain/18/429295/176932.terrain new file mode 100644 index 000000000..e7b50a94b Binary files /dev/null and b/public/terrain/18/429295/176932.terrain differ diff --git a/public/terrain/18/429295/176933.terrain b/public/terrain/18/429295/176933.terrain new file mode 100644 index 000000000..3d4d900c3 Binary files /dev/null and b/public/terrain/18/429295/176933.terrain differ diff --git a/public/terrain/18/429295/176934.terrain b/public/terrain/18/429295/176934.terrain new file mode 100644 index 000000000..72489aa1e Binary files /dev/null and b/public/terrain/18/429295/176934.terrain differ diff --git a/public/terrain/18/429295/176935.terrain b/public/terrain/18/429295/176935.terrain new file mode 100644 index 000000000..19c4a7884 Binary files /dev/null and b/public/terrain/18/429295/176935.terrain differ diff --git a/public/terrain/18/429295/176936.terrain b/public/terrain/18/429295/176936.terrain new file mode 100644 index 000000000..6472978dc Binary files /dev/null and b/public/terrain/18/429295/176936.terrain differ diff --git a/public/terrain/18/429295/176937.terrain b/public/terrain/18/429295/176937.terrain new file mode 100644 index 000000000..b4e41cfef Binary files /dev/null and b/public/terrain/18/429295/176937.terrain differ diff --git a/public/terrain/18/429295/176938.terrain b/public/terrain/18/429295/176938.terrain new file mode 100644 index 000000000..b58e75dd2 Binary files /dev/null and b/public/terrain/18/429295/176938.terrain differ diff --git a/public/terrain/18/429295/176939.terrain b/public/terrain/18/429295/176939.terrain new file mode 100644 index 000000000..78be8dc85 Binary files /dev/null and b/public/terrain/18/429295/176939.terrain differ diff --git a/public/terrain/18/429295/176940.terrain b/public/terrain/18/429295/176940.terrain new file mode 100644 index 000000000..64cd18aa3 Binary files /dev/null and b/public/terrain/18/429295/176940.terrain differ diff --git a/public/terrain/18/429295/176941.terrain b/public/terrain/18/429295/176941.terrain new file mode 100644 index 000000000..a475b1e47 Binary files /dev/null and b/public/terrain/18/429295/176941.terrain differ diff --git a/public/terrain/18/429295/176942.terrain b/public/terrain/18/429295/176942.terrain new file mode 100644 index 000000000..832bde89a Binary files /dev/null and b/public/terrain/18/429295/176942.terrain differ diff --git a/public/terrain/18/429295/176943.terrain b/public/terrain/18/429295/176943.terrain new file mode 100644 index 000000000..71d24536b Binary files /dev/null and b/public/terrain/18/429295/176943.terrain differ diff --git a/public/terrain/18/429295/176944.terrain b/public/terrain/18/429295/176944.terrain new file mode 100644 index 000000000..b6dc37516 Binary files /dev/null and b/public/terrain/18/429295/176944.terrain differ diff --git a/public/terrain/18/429295/176945.terrain b/public/terrain/18/429295/176945.terrain new file mode 100644 index 000000000..e20cee425 Binary files /dev/null and b/public/terrain/18/429295/176945.terrain differ diff --git a/public/terrain/18/429295/176946.terrain b/public/terrain/18/429295/176946.terrain new file mode 100644 index 000000000..96f250fc7 Binary files /dev/null and b/public/terrain/18/429295/176946.terrain differ diff --git a/public/terrain/18/429295/176947.terrain b/public/terrain/18/429295/176947.terrain new file mode 100644 index 000000000..4c1c1a43a Binary files /dev/null and b/public/terrain/18/429295/176947.terrain differ diff --git a/public/terrain/18/429295/176948.terrain b/public/terrain/18/429295/176948.terrain new file mode 100644 index 000000000..5c8934c47 Binary files /dev/null and b/public/terrain/18/429295/176948.terrain differ diff --git a/public/terrain/18/429295/176949.terrain b/public/terrain/18/429295/176949.terrain new file mode 100644 index 000000000..6a084d895 Binary files /dev/null and b/public/terrain/18/429295/176949.terrain differ diff --git a/public/terrain/18/429295/176950.terrain b/public/terrain/18/429295/176950.terrain new file mode 100644 index 000000000..ef4e2f08c Binary files /dev/null and b/public/terrain/18/429295/176950.terrain differ diff --git a/public/terrain/18/429295/176951.terrain b/public/terrain/18/429295/176951.terrain new file mode 100644 index 000000000..d8806e76e Binary files /dev/null and b/public/terrain/18/429295/176951.terrain differ diff --git a/public/terrain/18/429295/176952.terrain b/public/terrain/18/429295/176952.terrain new file mode 100644 index 000000000..a903da87c Binary files /dev/null and b/public/terrain/18/429295/176952.terrain differ diff --git a/public/terrain/18/429295/176953.terrain b/public/terrain/18/429295/176953.terrain new file mode 100644 index 000000000..f03ab2e3c Binary files /dev/null and b/public/terrain/18/429295/176953.terrain differ diff --git a/public/terrain/18/429295/176954.terrain b/public/terrain/18/429295/176954.terrain new file mode 100644 index 000000000..13dd5a2ea Binary files /dev/null and b/public/terrain/18/429295/176954.terrain differ diff --git a/public/terrain/18/429295/176955.terrain b/public/terrain/18/429295/176955.terrain new file mode 100644 index 000000000..dce3f7a2f Binary files /dev/null and b/public/terrain/18/429295/176955.terrain differ diff --git a/public/terrain/18/429295/176956.terrain b/public/terrain/18/429295/176956.terrain new file mode 100644 index 000000000..caf96d00d Binary files /dev/null and b/public/terrain/18/429295/176956.terrain differ diff --git a/public/terrain/18/429295/176957.terrain b/public/terrain/18/429295/176957.terrain new file mode 100644 index 000000000..fdca2e745 Binary files /dev/null and b/public/terrain/18/429295/176957.terrain differ diff --git a/public/terrain/18/429295/176958.terrain b/public/terrain/18/429295/176958.terrain new file mode 100644 index 000000000..90a87bcc5 Binary files /dev/null and b/public/terrain/18/429295/176958.terrain differ diff --git a/public/terrain/18/429295/176959.terrain b/public/terrain/18/429295/176959.terrain new file mode 100644 index 000000000..04cd08de4 Binary files /dev/null and b/public/terrain/18/429295/176959.terrain differ diff --git a/public/terrain/18/429295/176960.terrain b/public/terrain/18/429295/176960.terrain new file mode 100644 index 000000000..6b1df3e52 Binary files /dev/null and b/public/terrain/18/429295/176960.terrain differ diff --git a/public/terrain/18/429295/176961.terrain b/public/terrain/18/429295/176961.terrain new file mode 100644 index 000000000..c604fc179 Binary files /dev/null and b/public/terrain/18/429295/176961.terrain differ diff --git a/public/terrain/18/429295/176962.terrain b/public/terrain/18/429295/176962.terrain new file mode 100644 index 000000000..9806b7dae Binary files /dev/null and b/public/terrain/18/429295/176962.terrain differ diff --git a/public/terrain/18/429295/176963.terrain b/public/terrain/18/429295/176963.terrain new file mode 100644 index 000000000..9f4033303 Binary files /dev/null and b/public/terrain/18/429295/176963.terrain differ diff --git a/public/terrain/18/429295/176964.terrain b/public/terrain/18/429295/176964.terrain new file mode 100644 index 000000000..1ef23a16c Binary files /dev/null and b/public/terrain/18/429295/176964.terrain differ diff --git a/public/terrain/18/429295/176965.terrain b/public/terrain/18/429295/176965.terrain new file mode 100644 index 000000000..304914510 Binary files /dev/null and b/public/terrain/18/429295/176965.terrain differ diff --git a/public/terrain/18/429295/176966.terrain b/public/terrain/18/429295/176966.terrain new file mode 100644 index 000000000..bf6968e25 Binary files /dev/null and b/public/terrain/18/429295/176966.terrain differ diff --git a/public/terrain/18/429295/176967.terrain b/public/terrain/18/429295/176967.terrain new file mode 100644 index 000000000..cb0395a60 Binary files /dev/null and b/public/terrain/18/429295/176967.terrain differ diff --git a/public/terrain/18/429295/176968.terrain b/public/terrain/18/429295/176968.terrain new file mode 100644 index 000000000..f3d5c1130 Binary files /dev/null and b/public/terrain/18/429295/176968.terrain differ diff --git a/public/terrain/18/429295/176969.terrain b/public/terrain/18/429295/176969.terrain new file mode 100644 index 000000000..05f953b6e Binary files /dev/null and b/public/terrain/18/429295/176969.terrain differ diff --git a/public/terrain/18/429295/176970.terrain b/public/terrain/18/429295/176970.terrain new file mode 100644 index 000000000..df5ca6326 Binary files /dev/null and b/public/terrain/18/429295/176970.terrain differ diff --git a/public/terrain/18/429295/176971.terrain b/public/terrain/18/429295/176971.terrain new file mode 100644 index 000000000..ecd16fd90 Binary files /dev/null and b/public/terrain/18/429295/176971.terrain differ diff --git a/public/terrain/18/429295/176972.terrain b/public/terrain/18/429295/176972.terrain new file mode 100644 index 000000000..6a7249ba2 Binary files /dev/null and b/public/terrain/18/429295/176972.terrain differ diff --git a/public/terrain/18/429295/176973.terrain b/public/terrain/18/429295/176973.terrain new file mode 100644 index 000000000..0cde41ee3 Binary files /dev/null and b/public/terrain/18/429295/176973.terrain differ diff --git a/public/terrain/18/429295/176974.terrain b/public/terrain/18/429295/176974.terrain new file mode 100644 index 000000000..510e5a481 Binary files /dev/null and b/public/terrain/18/429295/176974.terrain differ diff --git a/public/terrain/18/429295/176975.terrain b/public/terrain/18/429295/176975.terrain new file mode 100644 index 000000000..dd806a28e Binary files /dev/null and b/public/terrain/18/429295/176975.terrain differ diff --git a/public/terrain/18/429295/176976.terrain b/public/terrain/18/429295/176976.terrain new file mode 100644 index 000000000..dccbc1ab7 Binary files /dev/null and b/public/terrain/18/429295/176976.terrain differ diff --git a/public/terrain/18/429295/176977.terrain b/public/terrain/18/429295/176977.terrain new file mode 100644 index 000000000..017d4b4aa Binary files /dev/null and b/public/terrain/18/429295/176977.terrain differ diff --git a/public/terrain/18/429295/176978.terrain b/public/terrain/18/429295/176978.terrain new file mode 100644 index 000000000..02effcc26 Binary files /dev/null and b/public/terrain/18/429295/176978.terrain differ diff --git a/public/terrain/18/429295/176979.terrain b/public/terrain/18/429295/176979.terrain new file mode 100644 index 000000000..3c5a83fc3 Binary files /dev/null and b/public/terrain/18/429295/176979.terrain differ diff --git a/public/terrain/18/429295/176980.terrain b/public/terrain/18/429295/176980.terrain new file mode 100644 index 000000000..bfb03cffe Binary files /dev/null and b/public/terrain/18/429295/176980.terrain differ diff --git a/public/terrain/18/429295/176981.terrain b/public/terrain/18/429295/176981.terrain new file mode 100644 index 000000000..3ecfb32b2 Binary files /dev/null and b/public/terrain/18/429295/176981.terrain differ diff --git a/public/terrain/18/429295/176982.terrain b/public/terrain/18/429295/176982.terrain new file mode 100644 index 000000000..2a58c2862 Binary files /dev/null and b/public/terrain/18/429295/176982.terrain differ diff --git a/public/terrain/18/429295/176983.terrain b/public/terrain/18/429295/176983.terrain new file mode 100644 index 000000000..fc19a1816 Binary files /dev/null and b/public/terrain/18/429295/176983.terrain differ diff --git a/public/terrain/18/429295/176984.terrain b/public/terrain/18/429295/176984.terrain new file mode 100644 index 000000000..88fb1b817 Binary files /dev/null and b/public/terrain/18/429295/176984.terrain differ diff --git a/public/terrain/18/429295/176985.terrain b/public/terrain/18/429295/176985.terrain new file mode 100644 index 000000000..a7631e3f6 Binary files /dev/null and b/public/terrain/18/429295/176985.terrain differ diff --git a/public/terrain/18/429295/176986.terrain b/public/terrain/18/429295/176986.terrain new file mode 100644 index 000000000..96bc2ea5f Binary files /dev/null and b/public/terrain/18/429295/176986.terrain differ diff --git a/public/terrain/18/429295/176987.terrain b/public/terrain/18/429295/176987.terrain new file mode 100644 index 000000000..4d739b45a Binary files /dev/null and b/public/terrain/18/429295/176987.terrain differ diff --git a/public/terrain/18/429295/176988.terrain b/public/terrain/18/429295/176988.terrain new file mode 100644 index 000000000..0bb232c7f Binary files /dev/null and b/public/terrain/18/429295/176988.terrain differ diff --git a/public/terrain/18/429295/176989.terrain b/public/terrain/18/429295/176989.terrain new file mode 100644 index 000000000..ccb17d5ae Binary files /dev/null and b/public/terrain/18/429295/176989.terrain differ diff --git a/public/terrain/18/429295/176990.terrain b/public/terrain/18/429295/176990.terrain new file mode 100644 index 000000000..7c61653c6 Binary files /dev/null and b/public/terrain/18/429295/176990.terrain differ diff --git a/public/terrain/18/429295/176991.terrain b/public/terrain/18/429295/176991.terrain new file mode 100644 index 000000000..c33fe8490 Binary files /dev/null and b/public/terrain/18/429295/176991.terrain differ diff --git a/public/terrain/18/429295/176992.terrain b/public/terrain/18/429295/176992.terrain new file mode 100644 index 000000000..17df76e1c Binary files /dev/null and b/public/terrain/18/429295/176992.terrain differ diff --git a/public/terrain/18/429295/176993.terrain b/public/terrain/18/429295/176993.terrain new file mode 100644 index 000000000..6a61cbbff Binary files /dev/null and b/public/terrain/18/429295/176993.terrain differ diff --git a/public/terrain/18/429295/176994.terrain b/public/terrain/18/429295/176994.terrain new file mode 100644 index 000000000..0f59072aa Binary files /dev/null and b/public/terrain/18/429295/176994.terrain differ diff --git a/public/terrain/18/429295/176995.terrain b/public/terrain/18/429295/176995.terrain new file mode 100644 index 000000000..8c904e6d9 Binary files /dev/null and b/public/terrain/18/429295/176995.terrain differ diff --git a/public/terrain/18/429295/176996.terrain b/public/terrain/18/429295/176996.terrain new file mode 100644 index 000000000..a2c9eeb9a Binary files /dev/null and b/public/terrain/18/429295/176996.terrain differ diff --git a/public/terrain/18/429295/176997.terrain b/public/terrain/18/429295/176997.terrain new file mode 100644 index 000000000..9639e0ca5 Binary files /dev/null and b/public/terrain/18/429295/176997.terrain differ diff --git a/public/terrain/18/429295/176998.terrain b/public/terrain/18/429295/176998.terrain new file mode 100644 index 000000000..512c2f00e Binary files /dev/null and b/public/terrain/18/429295/176998.terrain differ diff --git a/public/terrain/18/429295/176999.terrain b/public/terrain/18/429295/176999.terrain new file mode 100644 index 000000000..8564ee6a2 Binary files /dev/null and b/public/terrain/18/429295/176999.terrain differ diff --git a/public/terrain/18/429295/177000.terrain b/public/terrain/18/429295/177000.terrain new file mode 100644 index 000000000..589ca5ce5 Binary files /dev/null and b/public/terrain/18/429295/177000.terrain differ diff --git a/public/terrain/18/429295/177001.terrain b/public/terrain/18/429295/177001.terrain new file mode 100644 index 000000000..4f71c099d Binary files /dev/null and b/public/terrain/18/429295/177001.terrain differ diff --git a/public/terrain/18/429295/177002.terrain b/public/terrain/18/429295/177002.terrain new file mode 100644 index 000000000..748b50322 Binary files /dev/null and b/public/terrain/18/429295/177002.terrain differ diff --git a/public/terrain/18/429295/177003.terrain b/public/terrain/18/429295/177003.terrain new file mode 100644 index 000000000..fbb88dcdd Binary files /dev/null and b/public/terrain/18/429295/177003.terrain differ diff --git a/public/terrain/18/429295/177004.terrain b/public/terrain/18/429295/177004.terrain new file mode 100644 index 000000000..7c93e5fd4 Binary files /dev/null and b/public/terrain/18/429295/177004.terrain differ diff --git a/public/terrain/18/429295/177005.terrain b/public/terrain/18/429295/177005.terrain new file mode 100644 index 000000000..57b6239c6 Binary files /dev/null and b/public/terrain/18/429295/177005.terrain differ diff --git a/public/terrain/18/429295/177006.terrain b/public/terrain/18/429295/177006.terrain new file mode 100644 index 000000000..fde412db6 Binary files /dev/null and b/public/terrain/18/429295/177006.terrain differ diff --git a/public/terrain/18/429295/177007.terrain b/public/terrain/18/429295/177007.terrain new file mode 100644 index 000000000..e4c6b4afa Binary files /dev/null and b/public/terrain/18/429295/177007.terrain differ diff --git a/public/terrain/18/429295/177008.terrain b/public/terrain/18/429295/177008.terrain new file mode 100644 index 000000000..5a8ece622 Binary files /dev/null and b/public/terrain/18/429295/177008.terrain differ diff --git a/public/terrain/18/429295/177009.terrain b/public/terrain/18/429295/177009.terrain new file mode 100644 index 000000000..b7e8cc1b0 Binary files /dev/null and b/public/terrain/18/429295/177009.terrain differ diff --git a/public/terrain/18/429295/177010.terrain b/public/terrain/18/429295/177010.terrain new file mode 100644 index 000000000..344a3c8cd Binary files /dev/null and b/public/terrain/18/429295/177010.terrain differ diff --git a/public/terrain/18/429295/177011.terrain b/public/terrain/18/429295/177011.terrain new file mode 100644 index 000000000..52aeb31f7 Binary files /dev/null and b/public/terrain/18/429295/177011.terrain differ diff --git a/public/terrain/18/429295/177012.terrain b/public/terrain/18/429295/177012.terrain new file mode 100644 index 000000000..30bc3775e Binary files /dev/null and b/public/terrain/18/429295/177012.terrain differ diff --git a/public/terrain/18/429295/177013.terrain b/public/terrain/18/429295/177013.terrain new file mode 100644 index 000000000..8b42a013a Binary files /dev/null and b/public/terrain/18/429295/177013.terrain differ diff --git a/public/terrain/18/429295/177014.terrain b/public/terrain/18/429295/177014.terrain new file mode 100644 index 000000000..8a150f6eb Binary files /dev/null and b/public/terrain/18/429295/177014.terrain differ diff --git a/public/terrain/18/429295/177015.terrain b/public/terrain/18/429295/177015.terrain new file mode 100644 index 000000000..fd5af28ab Binary files /dev/null and b/public/terrain/18/429295/177015.terrain differ diff --git a/public/terrain/18/429295/177016.terrain b/public/terrain/18/429295/177016.terrain new file mode 100644 index 000000000..fa222bed3 Binary files /dev/null and b/public/terrain/18/429295/177016.terrain differ diff --git a/public/terrain/18/429295/177017.terrain b/public/terrain/18/429295/177017.terrain new file mode 100644 index 000000000..d7c6d3618 Binary files /dev/null and b/public/terrain/18/429295/177017.terrain differ diff --git a/public/terrain/18/429295/177018.terrain b/public/terrain/18/429295/177018.terrain new file mode 100644 index 000000000..811f20eb5 Binary files /dev/null and b/public/terrain/18/429295/177018.terrain differ diff --git a/public/terrain/18/429295/177019.terrain b/public/terrain/18/429295/177019.terrain new file mode 100644 index 000000000..e0cbb858c Binary files /dev/null and b/public/terrain/18/429295/177019.terrain differ diff --git a/public/terrain/18/429295/177020.terrain b/public/terrain/18/429295/177020.terrain new file mode 100644 index 000000000..d36bdba4a Binary files /dev/null and b/public/terrain/18/429295/177020.terrain differ diff --git a/public/terrain/18/429295/177021.terrain b/public/terrain/18/429295/177021.terrain new file mode 100644 index 000000000..62378f110 Binary files /dev/null and b/public/terrain/18/429295/177021.terrain differ diff --git a/public/terrain/18/429295/177022.terrain b/public/terrain/18/429295/177022.terrain new file mode 100644 index 000000000..4fee568d9 Binary files /dev/null and b/public/terrain/18/429295/177022.terrain differ diff --git a/public/terrain/18/429295/177023.terrain b/public/terrain/18/429295/177023.terrain new file mode 100644 index 000000000..484efbbe6 Binary files /dev/null and b/public/terrain/18/429295/177023.terrain differ diff --git a/public/terrain/18/429295/177024.terrain b/public/terrain/18/429295/177024.terrain new file mode 100644 index 000000000..07b37d138 Binary files /dev/null and b/public/terrain/18/429295/177024.terrain differ diff --git a/public/terrain/18/429295/177025.terrain b/public/terrain/18/429295/177025.terrain new file mode 100644 index 000000000..51090ad19 Binary files /dev/null and b/public/terrain/18/429295/177025.terrain differ diff --git a/public/terrain/18/429295/177026.terrain b/public/terrain/18/429295/177026.terrain new file mode 100644 index 000000000..03d028571 Binary files /dev/null and b/public/terrain/18/429295/177026.terrain differ diff --git a/public/terrain/18/429295/177027.terrain b/public/terrain/18/429295/177027.terrain new file mode 100644 index 000000000..89ee04b74 Binary files /dev/null and b/public/terrain/18/429295/177027.terrain differ diff --git a/public/terrain/18/429295/177028.terrain b/public/terrain/18/429295/177028.terrain new file mode 100644 index 000000000..421c4096a Binary files /dev/null and b/public/terrain/18/429295/177028.terrain differ diff --git a/public/terrain/18/429295/177029.terrain b/public/terrain/18/429295/177029.terrain new file mode 100644 index 000000000..266ad8e3f Binary files /dev/null and b/public/terrain/18/429295/177029.terrain differ diff --git a/public/terrain/18/429296/176871.terrain b/public/terrain/18/429296/176871.terrain new file mode 100644 index 000000000..e1104f6d1 Binary files /dev/null and b/public/terrain/18/429296/176871.terrain differ diff --git a/public/terrain/18/429296/176872.terrain b/public/terrain/18/429296/176872.terrain new file mode 100644 index 000000000..eb033b28d Binary files /dev/null and b/public/terrain/18/429296/176872.terrain differ diff --git a/public/terrain/18/429296/176873.terrain b/public/terrain/18/429296/176873.terrain new file mode 100644 index 000000000..57071006b Binary files /dev/null and b/public/terrain/18/429296/176873.terrain differ diff --git a/public/terrain/18/429296/176874.terrain b/public/terrain/18/429296/176874.terrain new file mode 100644 index 000000000..6bfa6d5eb Binary files /dev/null and b/public/terrain/18/429296/176874.terrain differ diff --git a/public/terrain/18/429296/176875.terrain b/public/terrain/18/429296/176875.terrain new file mode 100644 index 000000000..67e955f21 Binary files /dev/null and b/public/terrain/18/429296/176875.terrain differ diff --git a/public/terrain/18/429296/176876.terrain b/public/terrain/18/429296/176876.terrain new file mode 100644 index 000000000..7d9ef8c31 Binary files /dev/null and b/public/terrain/18/429296/176876.terrain differ diff --git a/public/terrain/18/429296/176877.terrain b/public/terrain/18/429296/176877.terrain new file mode 100644 index 000000000..e20995f0e Binary files /dev/null and b/public/terrain/18/429296/176877.terrain differ diff --git a/public/terrain/18/429296/176878.terrain b/public/terrain/18/429296/176878.terrain new file mode 100644 index 000000000..91a159699 Binary files /dev/null and b/public/terrain/18/429296/176878.terrain differ diff --git a/public/terrain/18/429296/176879.terrain b/public/terrain/18/429296/176879.terrain new file mode 100644 index 000000000..1d724db9b Binary files /dev/null and b/public/terrain/18/429296/176879.terrain differ diff --git a/public/terrain/18/429296/176880.terrain b/public/terrain/18/429296/176880.terrain new file mode 100644 index 000000000..833b677b1 Binary files /dev/null and b/public/terrain/18/429296/176880.terrain differ diff --git a/public/terrain/18/429296/176881.terrain b/public/terrain/18/429296/176881.terrain new file mode 100644 index 000000000..c92c99ae2 Binary files /dev/null and b/public/terrain/18/429296/176881.terrain differ diff --git a/public/terrain/18/429296/176882.terrain b/public/terrain/18/429296/176882.terrain new file mode 100644 index 000000000..8a48752e5 Binary files /dev/null and b/public/terrain/18/429296/176882.terrain differ diff --git a/public/terrain/18/429296/176883.terrain b/public/terrain/18/429296/176883.terrain new file mode 100644 index 000000000..ae6db1b41 Binary files /dev/null and b/public/terrain/18/429296/176883.terrain differ diff --git a/public/terrain/18/429296/176884.terrain b/public/terrain/18/429296/176884.terrain new file mode 100644 index 000000000..474ec9ab8 Binary files /dev/null and b/public/terrain/18/429296/176884.terrain differ diff --git a/public/terrain/18/429296/176885.terrain b/public/terrain/18/429296/176885.terrain new file mode 100644 index 000000000..c3e334b12 Binary files /dev/null and b/public/terrain/18/429296/176885.terrain differ diff --git a/public/terrain/18/429296/176886.terrain b/public/terrain/18/429296/176886.terrain new file mode 100644 index 000000000..9e1869270 Binary files /dev/null and b/public/terrain/18/429296/176886.terrain differ diff --git a/public/terrain/18/429296/176887.terrain b/public/terrain/18/429296/176887.terrain new file mode 100644 index 000000000..f8081d764 Binary files /dev/null and b/public/terrain/18/429296/176887.terrain differ diff --git a/public/terrain/18/429296/176888.terrain b/public/terrain/18/429296/176888.terrain new file mode 100644 index 000000000..6cc84a8b7 Binary files /dev/null and b/public/terrain/18/429296/176888.terrain differ diff --git a/public/terrain/18/429296/176889.terrain b/public/terrain/18/429296/176889.terrain new file mode 100644 index 000000000..7a7b9ac18 Binary files /dev/null and b/public/terrain/18/429296/176889.terrain differ diff --git a/public/terrain/18/429296/176890.terrain b/public/terrain/18/429296/176890.terrain new file mode 100644 index 000000000..dc49b0d35 Binary files /dev/null and b/public/terrain/18/429296/176890.terrain differ diff --git a/public/terrain/18/429296/176891.terrain b/public/terrain/18/429296/176891.terrain new file mode 100644 index 000000000..f62ac510e Binary files /dev/null and b/public/terrain/18/429296/176891.terrain differ diff --git a/public/terrain/18/429296/176892.terrain b/public/terrain/18/429296/176892.terrain new file mode 100644 index 000000000..24c55c702 Binary files /dev/null and b/public/terrain/18/429296/176892.terrain differ diff --git a/public/terrain/18/429296/176893.terrain b/public/terrain/18/429296/176893.terrain new file mode 100644 index 000000000..e437834e6 Binary files /dev/null and b/public/terrain/18/429296/176893.terrain differ diff --git a/public/terrain/18/429296/176894.terrain b/public/terrain/18/429296/176894.terrain new file mode 100644 index 000000000..cb8dd8a0b Binary files /dev/null and b/public/terrain/18/429296/176894.terrain differ diff --git a/public/terrain/18/429296/176895.terrain b/public/terrain/18/429296/176895.terrain new file mode 100644 index 000000000..2a906268d Binary files /dev/null and b/public/terrain/18/429296/176895.terrain differ diff --git a/public/terrain/18/429296/176896.terrain b/public/terrain/18/429296/176896.terrain new file mode 100644 index 000000000..384e1c37c Binary files /dev/null and b/public/terrain/18/429296/176896.terrain differ diff --git a/public/terrain/18/429296/176897.terrain b/public/terrain/18/429296/176897.terrain new file mode 100644 index 000000000..f0292dbc8 Binary files /dev/null and b/public/terrain/18/429296/176897.terrain differ diff --git a/public/terrain/18/429296/176898.terrain b/public/terrain/18/429296/176898.terrain new file mode 100644 index 000000000..bc3c0b81f Binary files /dev/null and b/public/terrain/18/429296/176898.terrain differ diff --git a/public/terrain/18/429296/176899.terrain b/public/terrain/18/429296/176899.terrain new file mode 100644 index 000000000..382391321 Binary files /dev/null and b/public/terrain/18/429296/176899.terrain differ diff --git a/public/terrain/18/429296/176900.terrain b/public/terrain/18/429296/176900.terrain new file mode 100644 index 000000000..55ba53979 Binary files /dev/null and b/public/terrain/18/429296/176900.terrain differ diff --git a/public/terrain/18/429296/176901.terrain b/public/terrain/18/429296/176901.terrain new file mode 100644 index 000000000..a4d61df5f Binary files /dev/null and b/public/terrain/18/429296/176901.terrain differ diff --git a/public/terrain/18/429296/176902.terrain b/public/terrain/18/429296/176902.terrain new file mode 100644 index 000000000..c0e1bddae Binary files /dev/null and b/public/terrain/18/429296/176902.terrain differ diff --git a/public/terrain/18/429296/176903.terrain b/public/terrain/18/429296/176903.terrain new file mode 100644 index 000000000..1cc05bfac Binary files /dev/null and b/public/terrain/18/429296/176903.terrain differ diff --git a/public/terrain/18/429296/176904.terrain b/public/terrain/18/429296/176904.terrain new file mode 100644 index 000000000..e289a06e0 Binary files /dev/null and b/public/terrain/18/429296/176904.terrain differ diff --git a/public/terrain/18/429296/176905.terrain b/public/terrain/18/429296/176905.terrain new file mode 100644 index 000000000..9ca842204 Binary files /dev/null and b/public/terrain/18/429296/176905.terrain differ diff --git a/public/terrain/18/429296/176906.terrain b/public/terrain/18/429296/176906.terrain new file mode 100644 index 000000000..612ad9c37 Binary files /dev/null and b/public/terrain/18/429296/176906.terrain differ diff --git a/public/terrain/18/429296/176907.terrain b/public/terrain/18/429296/176907.terrain new file mode 100644 index 000000000..6c8c750e3 Binary files /dev/null and b/public/terrain/18/429296/176907.terrain differ diff --git a/public/terrain/18/429296/176908.terrain b/public/terrain/18/429296/176908.terrain new file mode 100644 index 000000000..26c72ffbf Binary files /dev/null and b/public/terrain/18/429296/176908.terrain differ diff --git a/public/terrain/18/429296/176909.terrain b/public/terrain/18/429296/176909.terrain new file mode 100644 index 000000000..3f62c913a Binary files /dev/null and b/public/terrain/18/429296/176909.terrain differ diff --git a/public/terrain/18/429296/176910.terrain b/public/terrain/18/429296/176910.terrain new file mode 100644 index 000000000..ddc7d6f7a Binary files /dev/null and b/public/terrain/18/429296/176910.terrain differ diff --git a/public/terrain/18/429296/176911.terrain b/public/terrain/18/429296/176911.terrain new file mode 100644 index 000000000..e7d1e2498 Binary files /dev/null and b/public/terrain/18/429296/176911.terrain differ diff --git a/public/terrain/18/429296/176912.terrain b/public/terrain/18/429296/176912.terrain new file mode 100644 index 000000000..35dde4d33 Binary files /dev/null and b/public/terrain/18/429296/176912.terrain differ diff --git a/public/terrain/18/429296/176913.terrain b/public/terrain/18/429296/176913.terrain new file mode 100644 index 000000000..7c8399297 Binary files /dev/null and b/public/terrain/18/429296/176913.terrain differ diff --git a/public/terrain/18/429296/176914.terrain b/public/terrain/18/429296/176914.terrain new file mode 100644 index 000000000..299e4e4d1 Binary files /dev/null and b/public/terrain/18/429296/176914.terrain differ diff --git a/public/terrain/18/429296/176915.terrain b/public/terrain/18/429296/176915.terrain new file mode 100644 index 000000000..fc00612e4 Binary files /dev/null and b/public/terrain/18/429296/176915.terrain differ diff --git a/public/terrain/18/429296/176916.terrain b/public/terrain/18/429296/176916.terrain new file mode 100644 index 000000000..6ce2ee33a Binary files /dev/null and b/public/terrain/18/429296/176916.terrain differ diff --git a/public/terrain/18/429296/176917.terrain b/public/terrain/18/429296/176917.terrain new file mode 100644 index 000000000..e98b6200c Binary files /dev/null and b/public/terrain/18/429296/176917.terrain differ diff --git a/public/terrain/18/429296/176918.terrain b/public/terrain/18/429296/176918.terrain new file mode 100644 index 000000000..393b1c2e1 Binary files /dev/null and b/public/terrain/18/429296/176918.terrain differ diff --git a/public/terrain/18/429296/176919.terrain b/public/terrain/18/429296/176919.terrain new file mode 100644 index 000000000..bd0fc6259 Binary files /dev/null and b/public/terrain/18/429296/176919.terrain differ diff --git a/public/terrain/18/429296/176920.terrain b/public/terrain/18/429296/176920.terrain new file mode 100644 index 000000000..49fb78d01 Binary files /dev/null and b/public/terrain/18/429296/176920.terrain differ diff --git a/public/terrain/18/429296/176921.terrain b/public/terrain/18/429296/176921.terrain new file mode 100644 index 000000000..8049bbe0e Binary files /dev/null and b/public/terrain/18/429296/176921.terrain differ diff --git a/public/terrain/18/429296/176922.terrain b/public/terrain/18/429296/176922.terrain new file mode 100644 index 000000000..63dfc46d4 Binary files /dev/null and b/public/terrain/18/429296/176922.terrain differ diff --git a/public/terrain/18/429296/176923.terrain b/public/terrain/18/429296/176923.terrain new file mode 100644 index 000000000..9a40772ff Binary files /dev/null and b/public/terrain/18/429296/176923.terrain differ diff --git a/public/terrain/18/429296/176924.terrain b/public/terrain/18/429296/176924.terrain new file mode 100644 index 000000000..38bdfebda Binary files /dev/null and b/public/terrain/18/429296/176924.terrain differ diff --git a/public/terrain/18/429296/176925.terrain b/public/terrain/18/429296/176925.terrain new file mode 100644 index 000000000..48654ef7b Binary files /dev/null and b/public/terrain/18/429296/176925.terrain differ diff --git a/public/terrain/18/429296/176926.terrain b/public/terrain/18/429296/176926.terrain new file mode 100644 index 000000000..5e5c8b913 Binary files /dev/null and b/public/terrain/18/429296/176926.terrain differ diff --git a/public/terrain/18/429296/176927.terrain b/public/terrain/18/429296/176927.terrain new file mode 100644 index 000000000..93b91c997 Binary files /dev/null and b/public/terrain/18/429296/176927.terrain differ diff --git a/public/terrain/18/429296/176928.terrain b/public/terrain/18/429296/176928.terrain new file mode 100644 index 000000000..22f74a91a Binary files /dev/null and b/public/terrain/18/429296/176928.terrain differ diff --git a/public/terrain/18/429296/176929.terrain b/public/terrain/18/429296/176929.terrain new file mode 100644 index 000000000..b6bcabbbc Binary files /dev/null and b/public/terrain/18/429296/176929.terrain differ diff --git a/public/terrain/18/429296/176930.terrain b/public/terrain/18/429296/176930.terrain new file mode 100644 index 000000000..ef52e882c Binary files /dev/null and b/public/terrain/18/429296/176930.terrain differ diff --git a/public/terrain/18/429296/176931.terrain b/public/terrain/18/429296/176931.terrain new file mode 100644 index 000000000..c6d576dcd Binary files /dev/null and b/public/terrain/18/429296/176931.terrain differ diff --git a/public/terrain/18/429296/176932.terrain b/public/terrain/18/429296/176932.terrain new file mode 100644 index 000000000..33958529c Binary files /dev/null and b/public/terrain/18/429296/176932.terrain differ diff --git a/public/terrain/18/429296/176933.terrain b/public/terrain/18/429296/176933.terrain new file mode 100644 index 000000000..5fa139738 Binary files /dev/null and b/public/terrain/18/429296/176933.terrain differ diff --git a/public/terrain/18/429296/176934.terrain b/public/terrain/18/429296/176934.terrain new file mode 100644 index 000000000..bfff3ca07 Binary files /dev/null and b/public/terrain/18/429296/176934.terrain differ diff --git a/public/terrain/18/429296/176935.terrain b/public/terrain/18/429296/176935.terrain new file mode 100644 index 000000000..79739819c Binary files /dev/null and b/public/terrain/18/429296/176935.terrain differ diff --git a/public/terrain/18/429296/176936.terrain b/public/terrain/18/429296/176936.terrain new file mode 100644 index 000000000..cbaee8d8f Binary files /dev/null and b/public/terrain/18/429296/176936.terrain differ diff --git a/public/terrain/18/429296/176937.terrain b/public/terrain/18/429296/176937.terrain new file mode 100644 index 000000000..0947a783c Binary files /dev/null and b/public/terrain/18/429296/176937.terrain differ diff --git a/public/terrain/18/429296/176938.terrain b/public/terrain/18/429296/176938.terrain new file mode 100644 index 000000000..185d6cac5 Binary files /dev/null and b/public/terrain/18/429296/176938.terrain differ diff --git a/public/terrain/18/429296/176939.terrain b/public/terrain/18/429296/176939.terrain new file mode 100644 index 000000000..b41202a19 Binary files /dev/null and b/public/terrain/18/429296/176939.terrain differ diff --git a/public/terrain/18/429296/176940.terrain b/public/terrain/18/429296/176940.terrain new file mode 100644 index 000000000..13d6a1ae9 Binary files /dev/null and b/public/terrain/18/429296/176940.terrain differ diff --git a/public/terrain/18/429296/176941.terrain b/public/terrain/18/429296/176941.terrain new file mode 100644 index 000000000..f76b1ebd0 Binary files /dev/null and b/public/terrain/18/429296/176941.terrain differ diff --git a/public/terrain/18/429296/176942.terrain b/public/terrain/18/429296/176942.terrain new file mode 100644 index 000000000..fa74ac1f6 Binary files /dev/null and b/public/terrain/18/429296/176942.terrain differ diff --git a/public/terrain/18/429296/176943.terrain b/public/terrain/18/429296/176943.terrain new file mode 100644 index 000000000..365daca17 Binary files /dev/null and b/public/terrain/18/429296/176943.terrain differ diff --git a/public/terrain/18/429296/176944.terrain b/public/terrain/18/429296/176944.terrain new file mode 100644 index 000000000..2755f6764 Binary files /dev/null and b/public/terrain/18/429296/176944.terrain differ diff --git a/public/terrain/18/429296/176945.terrain b/public/terrain/18/429296/176945.terrain new file mode 100644 index 000000000..761ea6c16 Binary files /dev/null and b/public/terrain/18/429296/176945.terrain differ diff --git a/public/terrain/18/429296/176946.terrain b/public/terrain/18/429296/176946.terrain new file mode 100644 index 000000000..152cdacfe Binary files /dev/null and b/public/terrain/18/429296/176946.terrain differ diff --git a/public/terrain/18/429296/176947.terrain b/public/terrain/18/429296/176947.terrain new file mode 100644 index 000000000..32e6138ca Binary files /dev/null and b/public/terrain/18/429296/176947.terrain differ diff --git a/public/terrain/18/429296/176948.terrain b/public/terrain/18/429296/176948.terrain new file mode 100644 index 000000000..ac7280850 Binary files /dev/null and b/public/terrain/18/429296/176948.terrain differ diff --git a/public/terrain/18/429296/176949.terrain b/public/terrain/18/429296/176949.terrain new file mode 100644 index 000000000..872b724b0 Binary files /dev/null and b/public/terrain/18/429296/176949.terrain differ diff --git a/public/terrain/18/429296/176950.terrain b/public/terrain/18/429296/176950.terrain new file mode 100644 index 000000000..189f539c4 Binary files /dev/null and b/public/terrain/18/429296/176950.terrain differ diff --git a/public/terrain/18/429296/176951.terrain b/public/terrain/18/429296/176951.terrain new file mode 100644 index 000000000..1645e5a8c Binary files /dev/null and b/public/terrain/18/429296/176951.terrain differ diff --git a/public/terrain/18/429296/176952.terrain b/public/terrain/18/429296/176952.terrain new file mode 100644 index 000000000..4fd796f25 Binary files /dev/null and b/public/terrain/18/429296/176952.terrain differ diff --git a/public/terrain/18/429296/176953.terrain b/public/terrain/18/429296/176953.terrain new file mode 100644 index 000000000..5e9ebe61a Binary files /dev/null and b/public/terrain/18/429296/176953.terrain differ diff --git a/public/terrain/18/429296/176954.terrain b/public/terrain/18/429296/176954.terrain new file mode 100644 index 000000000..835b48aee Binary files /dev/null and b/public/terrain/18/429296/176954.terrain differ diff --git a/public/terrain/18/429296/176955.terrain b/public/terrain/18/429296/176955.terrain new file mode 100644 index 000000000..f1e84449c Binary files /dev/null and b/public/terrain/18/429296/176955.terrain differ diff --git a/public/terrain/18/429296/176956.terrain b/public/terrain/18/429296/176956.terrain new file mode 100644 index 000000000..0309ef41a Binary files /dev/null and b/public/terrain/18/429296/176956.terrain differ diff --git a/public/terrain/18/429296/176957.terrain b/public/terrain/18/429296/176957.terrain new file mode 100644 index 000000000..8cd0ccece Binary files /dev/null and b/public/terrain/18/429296/176957.terrain differ diff --git a/public/terrain/18/429296/176958.terrain b/public/terrain/18/429296/176958.terrain new file mode 100644 index 000000000..f1ae34899 Binary files /dev/null and b/public/terrain/18/429296/176958.terrain differ diff --git a/public/terrain/18/429296/176959.terrain b/public/terrain/18/429296/176959.terrain new file mode 100644 index 000000000..676e2d825 Binary files /dev/null and b/public/terrain/18/429296/176959.terrain differ diff --git a/public/terrain/18/429296/176960.terrain b/public/terrain/18/429296/176960.terrain new file mode 100644 index 000000000..4c3b57ab4 Binary files /dev/null and b/public/terrain/18/429296/176960.terrain differ diff --git a/public/terrain/18/429296/176961.terrain b/public/terrain/18/429296/176961.terrain new file mode 100644 index 000000000..aaea59d86 Binary files /dev/null and b/public/terrain/18/429296/176961.terrain differ diff --git a/public/terrain/18/429296/176962.terrain b/public/terrain/18/429296/176962.terrain new file mode 100644 index 000000000..25b6aa26f Binary files /dev/null and b/public/terrain/18/429296/176962.terrain differ diff --git a/public/terrain/18/429296/176963.terrain b/public/terrain/18/429296/176963.terrain new file mode 100644 index 000000000..19dc15f56 Binary files /dev/null and b/public/terrain/18/429296/176963.terrain differ diff --git a/public/terrain/18/429296/176964.terrain b/public/terrain/18/429296/176964.terrain new file mode 100644 index 000000000..257730e76 Binary files /dev/null and b/public/terrain/18/429296/176964.terrain differ diff --git a/public/terrain/18/429296/176965.terrain b/public/terrain/18/429296/176965.terrain new file mode 100644 index 000000000..5100f5fb0 Binary files /dev/null and b/public/terrain/18/429296/176965.terrain differ diff --git a/public/terrain/18/429296/176966.terrain b/public/terrain/18/429296/176966.terrain new file mode 100644 index 000000000..7e6738c81 Binary files /dev/null and b/public/terrain/18/429296/176966.terrain differ diff --git a/public/terrain/18/429296/176967.terrain b/public/terrain/18/429296/176967.terrain new file mode 100644 index 000000000..a887dec04 Binary files /dev/null and b/public/terrain/18/429296/176967.terrain differ diff --git a/public/terrain/18/429296/176968.terrain b/public/terrain/18/429296/176968.terrain new file mode 100644 index 000000000..bf195edfe Binary files /dev/null and b/public/terrain/18/429296/176968.terrain differ diff --git a/public/terrain/18/429296/176969.terrain b/public/terrain/18/429296/176969.terrain new file mode 100644 index 000000000..e2f1e36b6 Binary files /dev/null and b/public/terrain/18/429296/176969.terrain differ diff --git a/public/terrain/18/429296/176970.terrain b/public/terrain/18/429296/176970.terrain new file mode 100644 index 000000000..2ed342909 Binary files /dev/null and b/public/terrain/18/429296/176970.terrain differ diff --git a/public/terrain/18/429296/176971.terrain b/public/terrain/18/429296/176971.terrain new file mode 100644 index 000000000..f13609810 Binary files /dev/null and b/public/terrain/18/429296/176971.terrain differ diff --git a/public/terrain/18/429296/176972.terrain b/public/terrain/18/429296/176972.terrain new file mode 100644 index 000000000..1826d4af4 Binary files /dev/null and b/public/terrain/18/429296/176972.terrain differ diff --git a/public/terrain/18/429296/176973.terrain b/public/terrain/18/429296/176973.terrain new file mode 100644 index 000000000..96b28f043 Binary files /dev/null and b/public/terrain/18/429296/176973.terrain differ diff --git a/public/terrain/18/429296/176974.terrain b/public/terrain/18/429296/176974.terrain new file mode 100644 index 000000000..8b9f207fc Binary files /dev/null and b/public/terrain/18/429296/176974.terrain differ diff --git a/public/terrain/18/429296/176975.terrain b/public/terrain/18/429296/176975.terrain new file mode 100644 index 000000000..ac8b866e5 Binary files /dev/null and b/public/terrain/18/429296/176975.terrain differ diff --git a/public/terrain/18/429296/176976.terrain b/public/terrain/18/429296/176976.terrain new file mode 100644 index 000000000..b51be407c Binary files /dev/null and b/public/terrain/18/429296/176976.terrain differ diff --git a/public/terrain/18/429296/176977.terrain b/public/terrain/18/429296/176977.terrain new file mode 100644 index 000000000..786e889dc Binary files /dev/null and b/public/terrain/18/429296/176977.terrain differ diff --git a/public/terrain/18/429296/176978.terrain b/public/terrain/18/429296/176978.terrain new file mode 100644 index 000000000..b5aa6a4bf Binary files /dev/null and b/public/terrain/18/429296/176978.terrain differ diff --git a/public/terrain/18/429296/176979.terrain b/public/terrain/18/429296/176979.terrain new file mode 100644 index 000000000..eb2704cfd Binary files /dev/null and b/public/terrain/18/429296/176979.terrain differ diff --git a/public/terrain/18/429296/176980.terrain b/public/terrain/18/429296/176980.terrain new file mode 100644 index 000000000..0f2b77489 Binary files /dev/null and b/public/terrain/18/429296/176980.terrain differ diff --git a/public/terrain/18/429296/176981.terrain b/public/terrain/18/429296/176981.terrain new file mode 100644 index 000000000..13fef5fe1 Binary files /dev/null and b/public/terrain/18/429296/176981.terrain differ diff --git a/public/terrain/18/429296/176982.terrain b/public/terrain/18/429296/176982.terrain new file mode 100644 index 000000000..9927998b3 Binary files /dev/null and b/public/terrain/18/429296/176982.terrain differ diff --git a/public/terrain/18/429296/176983.terrain b/public/terrain/18/429296/176983.terrain new file mode 100644 index 000000000..c6d3d4192 Binary files /dev/null and b/public/terrain/18/429296/176983.terrain differ diff --git a/public/terrain/18/429296/176984.terrain b/public/terrain/18/429296/176984.terrain new file mode 100644 index 000000000..824f868d9 Binary files /dev/null and b/public/terrain/18/429296/176984.terrain differ diff --git a/public/terrain/18/429296/176985.terrain b/public/terrain/18/429296/176985.terrain new file mode 100644 index 000000000..852c09471 Binary files /dev/null and b/public/terrain/18/429296/176985.terrain differ diff --git a/public/terrain/18/429296/176986.terrain b/public/terrain/18/429296/176986.terrain new file mode 100644 index 000000000..e80748ed9 Binary files /dev/null and b/public/terrain/18/429296/176986.terrain differ diff --git a/public/terrain/18/429296/176987.terrain b/public/terrain/18/429296/176987.terrain new file mode 100644 index 000000000..8eee743d5 Binary files /dev/null and b/public/terrain/18/429296/176987.terrain differ diff --git a/public/terrain/18/429296/176988.terrain b/public/terrain/18/429296/176988.terrain new file mode 100644 index 000000000..2cd7c5c78 Binary files /dev/null and b/public/terrain/18/429296/176988.terrain differ diff --git a/public/terrain/18/429296/176989.terrain b/public/terrain/18/429296/176989.terrain new file mode 100644 index 000000000..7096e23ca Binary files /dev/null and b/public/terrain/18/429296/176989.terrain differ diff --git a/public/terrain/18/429296/176990.terrain b/public/terrain/18/429296/176990.terrain new file mode 100644 index 000000000..0abfc234d Binary files /dev/null and b/public/terrain/18/429296/176990.terrain differ diff --git a/public/terrain/18/429296/176991.terrain b/public/terrain/18/429296/176991.terrain new file mode 100644 index 000000000..09e066295 Binary files /dev/null and b/public/terrain/18/429296/176991.terrain differ diff --git a/public/terrain/18/429296/176992.terrain b/public/terrain/18/429296/176992.terrain new file mode 100644 index 000000000..0569a7371 Binary files /dev/null and b/public/terrain/18/429296/176992.terrain differ diff --git a/public/terrain/18/429296/176993.terrain b/public/terrain/18/429296/176993.terrain new file mode 100644 index 000000000..8e9592874 Binary files /dev/null and b/public/terrain/18/429296/176993.terrain differ diff --git a/public/terrain/18/429296/176994.terrain b/public/terrain/18/429296/176994.terrain new file mode 100644 index 000000000..1c88a2612 Binary files /dev/null and b/public/terrain/18/429296/176994.terrain differ diff --git a/public/terrain/18/429296/176995.terrain b/public/terrain/18/429296/176995.terrain new file mode 100644 index 000000000..71e4888b4 Binary files /dev/null and b/public/terrain/18/429296/176995.terrain differ diff --git a/public/terrain/18/429296/176996.terrain b/public/terrain/18/429296/176996.terrain new file mode 100644 index 000000000..7651b37ad Binary files /dev/null and b/public/terrain/18/429296/176996.terrain differ diff --git a/public/terrain/18/429296/176997.terrain b/public/terrain/18/429296/176997.terrain new file mode 100644 index 000000000..36c92174e Binary files /dev/null and b/public/terrain/18/429296/176997.terrain differ diff --git a/public/terrain/18/429296/176998.terrain b/public/terrain/18/429296/176998.terrain new file mode 100644 index 000000000..e286d5c20 Binary files /dev/null and b/public/terrain/18/429296/176998.terrain differ diff --git a/public/terrain/18/429296/176999.terrain b/public/terrain/18/429296/176999.terrain new file mode 100644 index 000000000..94e359189 Binary files /dev/null and b/public/terrain/18/429296/176999.terrain differ diff --git a/public/terrain/18/429296/177000.terrain b/public/terrain/18/429296/177000.terrain new file mode 100644 index 000000000..7990eec54 Binary files /dev/null and b/public/terrain/18/429296/177000.terrain differ diff --git a/public/terrain/18/429296/177001.terrain b/public/terrain/18/429296/177001.terrain new file mode 100644 index 000000000..6d336dd30 Binary files /dev/null and b/public/terrain/18/429296/177001.terrain differ diff --git a/public/terrain/18/429296/177002.terrain b/public/terrain/18/429296/177002.terrain new file mode 100644 index 000000000..bb552d25a Binary files /dev/null and b/public/terrain/18/429296/177002.terrain differ diff --git a/public/terrain/18/429296/177003.terrain b/public/terrain/18/429296/177003.terrain new file mode 100644 index 000000000..b50278d23 Binary files /dev/null and b/public/terrain/18/429296/177003.terrain differ diff --git a/public/terrain/18/429296/177004.terrain b/public/terrain/18/429296/177004.terrain new file mode 100644 index 000000000..dd64ffc16 Binary files /dev/null and b/public/terrain/18/429296/177004.terrain differ diff --git a/public/terrain/18/429296/177005.terrain b/public/terrain/18/429296/177005.terrain new file mode 100644 index 000000000..eacba5b92 Binary files /dev/null and b/public/terrain/18/429296/177005.terrain differ diff --git a/public/terrain/18/429296/177006.terrain b/public/terrain/18/429296/177006.terrain new file mode 100644 index 000000000..13c06ceb6 Binary files /dev/null and b/public/terrain/18/429296/177006.terrain differ diff --git a/public/terrain/18/429296/177007.terrain b/public/terrain/18/429296/177007.terrain new file mode 100644 index 000000000..074d8c892 Binary files /dev/null and b/public/terrain/18/429296/177007.terrain differ diff --git a/public/terrain/18/429296/177008.terrain b/public/terrain/18/429296/177008.terrain new file mode 100644 index 000000000..e185a78f1 Binary files /dev/null and b/public/terrain/18/429296/177008.terrain differ diff --git a/public/terrain/18/429296/177009.terrain b/public/terrain/18/429296/177009.terrain new file mode 100644 index 000000000..06ff3cc40 Binary files /dev/null and b/public/terrain/18/429296/177009.terrain differ diff --git a/public/terrain/18/429296/177010.terrain b/public/terrain/18/429296/177010.terrain new file mode 100644 index 000000000..cc94363e3 Binary files /dev/null and b/public/terrain/18/429296/177010.terrain differ diff --git a/public/terrain/18/429296/177011.terrain b/public/terrain/18/429296/177011.terrain new file mode 100644 index 000000000..f7fd9a54c Binary files /dev/null and b/public/terrain/18/429296/177011.terrain differ diff --git a/public/terrain/18/429296/177012.terrain b/public/terrain/18/429296/177012.terrain new file mode 100644 index 000000000..3dd8182f1 Binary files /dev/null and b/public/terrain/18/429296/177012.terrain differ diff --git a/public/terrain/18/429296/177013.terrain b/public/terrain/18/429296/177013.terrain new file mode 100644 index 000000000..8abfab941 Binary files /dev/null and b/public/terrain/18/429296/177013.terrain differ diff --git a/public/terrain/18/429296/177014.terrain b/public/terrain/18/429296/177014.terrain new file mode 100644 index 000000000..da97b6746 Binary files /dev/null and b/public/terrain/18/429296/177014.terrain differ diff --git a/public/terrain/18/429296/177015.terrain b/public/terrain/18/429296/177015.terrain new file mode 100644 index 000000000..9987d8e49 Binary files /dev/null and b/public/terrain/18/429296/177015.terrain differ diff --git a/public/terrain/18/429296/177016.terrain b/public/terrain/18/429296/177016.terrain new file mode 100644 index 000000000..3c9272418 Binary files /dev/null and b/public/terrain/18/429296/177016.terrain differ diff --git a/public/terrain/18/429296/177017.terrain b/public/terrain/18/429296/177017.terrain new file mode 100644 index 000000000..a8834b525 Binary files /dev/null and b/public/terrain/18/429296/177017.terrain differ diff --git a/public/terrain/18/429296/177018.terrain b/public/terrain/18/429296/177018.terrain new file mode 100644 index 000000000..bd8f1750d Binary files /dev/null and b/public/terrain/18/429296/177018.terrain differ diff --git a/public/terrain/18/429296/177019.terrain b/public/terrain/18/429296/177019.terrain new file mode 100644 index 000000000..f5a1dbde9 Binary files /dev/null and b/public/terrain/18/429296/177019.terrain differ diff --git a/public/terrain/18/429296/177020.terrain b/public/terrain/18/429296/177020.terrain new file mode 100644 index 000000000..732001aec Binary files /dev/null and b/public/terrain/18/429296/177020.terrain differ diff --git a/public/terrain/18/429296/177021.terrain b/public/terrain/18/429296/177021.terrain new file mode 100644 index 000000000..02acb172c Binary files /dev/null and b/public/terrain/18/429296/177021.terrain differ diff --git a/public/terrain/18/429296/177022.terrain b/public/terrain/18/429296/177022.terrain new file mode 100644 index 000000000..a1692da32 Binary files /dev/null and b/public/terrain/18/429296/177022.terrain differ diff --git a/public/terrain/18/429296/177023.terrain b/public/terrain/18/429296/177023.terrain new file mode 100644 index 000000000..7b4b8fe57 Binary files /dev/null and b/public/terrain/18/429296/177023.terrain differ diff --git a/public/terrain/18/429296/177024.terrain b/public/terrain/18/429296/177024.terrain new file mode 100644 index 000000000..d328f541a Binary files /dev/null and b/public/terrain/18/429296/177024.terrain differ diff --git a/public/terrain/18/429296/177025.terrain b/public/terrain/18/429296/177025.terrain new file mode 100644 index 000000000..72a13d290 Binary files /dev/null and b/public/terrain/18/429296/177025.terrain differ diff --git a/public/terrain/18/429296/177026.terrain b/public/terrain/18/429296/177026.terrain new file mode 100644 index 000000000..f6bf14af8 Binary files /dev/null and b/public/terrain/18/429296/177026.terrain differ diff --git a/public/terrain/18/429296/177027.terrain b/public/terrain/18/429296/177027.terrain new file mode 100644 index 000000000..1143d74f7 Binary files /dev/null and b/public/terrain/18/429296/177027.terrain differ diff --git a/public/terrain/18/429296/177028.terrain b/public/terrain/18/429296/177028.terrain new file mode 100644 index 000000000..b21454003 Binary files /dev/null and b/public/terrain/18/429296/177028.terrain differ diff --git a/public/terrain/18/429296/177029.terrain b/public/terrain/18/429296/177029.terrain new file mode 100644 index 000000000..ff6cc76c1 Binary files /dev/null and b/public/terrain/18/429296/177029.terrain differ diff --git a/public/terrain/18/429297/176871.terrain b/public/terrain/18/429297/176871.terrain new file mode 100644 index 000000000..3a4a28f06 Binary files /dev/null and b/public/terrain/18/429297/176871.terrain differ diff --git a/public/terrain/18/429297/176872.terrain b/public/terrain/18/429297/176872.terrain new file mode 100644 index 000000000..1908b2e24 Binary files /dev/null and b/public/terrain/18/429297/176872.terrain differ diff --git a/public/terrain/18/429297/176873.terrain b/public/terrain/18/429297/176873.terrain new file mode 100644 index 000000000..cfeb6f783 Binary files /dev/null and b/public/terrain/18/429297/176873.terrain differ diff --git a/public/terrain/18/429297/176874.terrain b/public/terrain/18/429297/176874.terrain new file mode 100644 index 000000000..c22c94489 Binary files /dev/null and b/public/terrain/18/429297/176874.terrain differ diff --git a/public/terrain/18/429297/176875.terrain b/public/terrain/18/429297/176875.terrain new file mode 100644 index 000000000..22be1a489 Binary files /dev/null and b/public/terrain/18/429297/176875.terrain differ diff --git a/public/terrain/18/429297/176876.terrain b/public/terrain/18/429297/176876.terrain new file mode 100644 index 000000000..6c02d29aa Binary files /dev/null and b/public/terrain/18/429297/176876.terrain differ diff --git a/public/terrain/18/429297/176877.terrain b/public/terrain/18/429297/176877.terrain new file mode 100644 index 000000000..c8cd3064b Binary files /dev/null and b/public/terrain/18/429297/176877.terrain differ diff --git a/public/terrain/18/429297/176878.terrain b/public/terrain/18/429297/176878.terrain new file mode 100644 index 000000000..5d6660706 Binary files /dev/null and b/public/terrain/18/429297/176878.terrain differ diff --git a/public/terrain/18/429297/176879.terrain b/public/terrain/18/429297/176879.terrain new file mode 100644 index 000000000..ccd61937a Binary files /dev/null and b/public/terrain/18/429297/176879.terrain differ diff --git a/public/terrain/18/429297/176880.terrain b/public/terrain/18/429297/176880.terrain new file mode 100644 index 000000000..cd4c5b178 Binary files /dev/null and b/public/terrain/18/429297/176880.terrain differ diff --git a/public/terrain/18/429297/176881.terrain b/public/terrain/18/429297/176881.terrain new file mode 100644 index 000000000..ec84c99b3 Binary files /dev/null and b/public/terrain/18/429297/176881.terrain differ diff --git a/public/terrain/18/429297/176882.terrain b/public/terrain/18/429297/176882.terrain new file mode 100644 index 000000000..7b9eb3a08 Binary files /dev/null and b/public/terrain/18/429297/176882.terrain differ diff --git a/public/terrain/18/429297/176883.terrain b/public/terrain/18/429297/176883.terrain new file mode 100644 index 000000000..ec0bfa2de Binary files /dev/null and b/public/terrain/18/429297/176883.terrain differ diff --git a/public/terrain/18/429297/176884.terrain b/public/terrain/18/429297/176884.terrain new file mode 100644 index 000000000..2d178112a Binary files /dev/null and b/public/terrain/18/429297/176884.terrain differ diff --git a/public/terrain/18/429297/176885.terrain b/public/terrain/18/429297/176885.terrain new file mode 100644 index 000000000..611fc45e8 Binary files /dev/null and b/public/terrain/18/429297/176885.terrain differ diff --git a/public/terrain/18/429297/176886.terrain b/public/terrain/18/429297/176886.terrain new file mode 100644 index 000000000..cef0a9ad6 Binary files /dev/null and b/public/terrain/18/429297/176886.terrain differ diff --git a/public/terrain/18/429297/176887.terrain b/public/terrain/18/429297/176887.terrain new file mode 100644 index 000000000..432ae26e8 Binary files /dev/null and b/public/terrain/18/429297/176887.terrain differ diff --git a/public/terrain/18/429297/176888.terrain b/public/terrain/18/429297/176888.terrain new file mode 100644 index 000000000..aa2a0631a Binary files /dev/null and b/public/terrain/18/429297/176888.terrain differ diff --git a/public/terrain/18/429297/176889.terrain b/public/terrain/18/429297/176889.terrain new file mode 100644 index 000000000..f522cd1bf Binary files /dev/null and b/public/terrain/18/429297/176889.terrain differ diff --git a/public/terrain/18/429297/176890.terrain b/public/terrain/18/429297/176890.terrain new file mode 100644 index 000000000..1d4c9e7a4 Binary files /dev/null and b/public/terrain/18/429297/176890.terrain differ diff --git a/public/terrain/18/429297/176891.terrain b/public/terrain/18/429297/176891.terrain new file mode 100644 index 000000000..320a9ecac Binary files /dev/null and b/public/terrain/18/429297/176891.terrain differ diff --git a/public/terrain/18/429297/176892.terrain b/public/terrain/18/429297/176892.terrain new file mode 100644 index 000000000..6099f0351 Binary files /dev/null and b/public/terrain/18/429297/176892.terrain differ diff --git a/public/terrain/18/429297/176893.terrain b/public/terrain/18/429297/176893.terrain new file mode 100644 index 000000000..c81dbd948 Binary files /dev/null and b/public/terrain/18/429297/176893.terrain differ diff --git a/public/terrain/18/429297/176894.terrain b/public/terrain/18/429297/176894.terrain new file mode 100644 index 000000000..d9c82d9a6 Binary files /dev/null and b/public/terrain/18/429297/176894.terrain differ diff --git a/public/terrain/18/429297/176895.terrain b/public/terrain/18/429297/176895.terrain new file mode 100644 index 000000000..0b1c84806 Binary files /dev/null and b/public/terrain/18/429297/176895.terrain differ diff --git a/public/terrain/18/429297/176896.terrain b/public/terrain/18/429297/176896.terrain new file mode 100644 index 000000000..bbc355014 Binary files /dev/null and b/public/terrain/18/429297/176896.terrain differ diff --git a/public/terrain/18/429297/176897.terrain b/public/terrain/18/429297/176897.terrain new file mode 100644 index 000000000..98f40391c Binary files /dev/null and b/public/terrain/18/429297/176897.terrain differ diff --git a/public/terrain/18/429297/176898.terrain b/public/terrain/18/429297/176898.terrain new file mode 100644 index 000000000..5ad1011e3 Binary files /dev/null and b/public/terrain/18/429297/176898.terrain differ diff --git a/public/terrain/18/429297/176899.terrain b/public/terrain/18/429297/176899.terrain new file mode 100644 index 000000000..66560924c Binary files /dev/null and b/public/terrain/18/429297/176899.terrain differ diff --git a/public/terrain/18/429297/176900.terrain b/public/terrain/18/429297/176900.terrain new file mode 100644 index 000000000..d82cf9e86 Binary files /dev/null and b/public/terrain/18/429297/176900.terrain differ diff --git a/public/terrain/18/429297/176901.terrain b/public/terrain/18/429297/176901.terrain new file mode 100644 index 000000000..fbf73a43c Binary files /dev/null and b/public/terrain/18/429297/176901.terrain differ diff --git a/public/terrain/18/429297/176902.terrain b/public/terrain/18/429297/176902.terrain new file mode 100644 index 000000000..41a2813c3 Binary files /dev/null and b/public/terrain/18/429297/176902.terrain differ diff --git a/public/terrain/18/429297/176903.terrain b/public/terrain/18/429297/176903.terrain new file mode 100644 index 000000000..a10108e53 Binary files /dev/null and b/public/terrain/18/429297/176903.terrain differ diff --git a/public/terrain/18/429297/176904.terrain b/public/terrain/18/429297/176904.terrain new file mode 100644 index 000000000..da6411ed4 Binary files /dev/null and b/public/terrain/18/429297/176904.terrain differ diff --git a/public/terrain/18/429297/176905.terrain b/public/terrain/18/429297/176905.terrain new file mode 100644 index 000000000..b1e1e6662 Binary files /dev/null and b/public/terrain/18/429297/176905.terrain differ diff --git a/public/terrain/18/429297/176906.terrain b/public/terrain/18/429297/176906.terrain new file mode 100644 index 000000000..ca7939a42 Binary files /dev/null and b/public/terrain/18/429297/176906.terrain differ diff --git a/public/terrain/18/429297/176907.terrain b/public/terrain/18/429297/176907.terrain new file mode 100644 index 000000000..e642a92e8 Binary files /dev/null and b/public/terrain/18/429297/176907.terrain differ diff --git a/public/terrain/18/429297/176908.terrain b/public/terrain/18/429297/176908.terrain new file mode 100644 index 000000000..7e8884104 Binary files /dev/null and b/public/terrain/18/429297/176908.terrain differ diff --git a/public/terrain/18/429297/176909.terrain b/public/terrain/18/429297/176909.terrain new file mode 100644 index 000000000..fe75b427a Binary files /dev/null and b/public/terrain/18/429297/176909.terrain differ diff --git a/public/terrain/18/429297/176910.terrain b/public/terrain/18/429297/176910.terrain new file mode 100644 index 000000000..dee61bef3 Binary files /dev/null and b/public/terrain/18/429297/176910.terrain differ diff --git a/public/terrain/18/429297/176911.terrain b/public/terrain/18/429297/176911.terrain new file mode 100644 index 000000000..c015ad0d7 Binary files /dev/null and b/public/terrain/18/429297/176911.terrain differ diff --git a/public/terrain/18/429297/176912.terrain b/public/terrain/18/429297/176912.terrain new file mode 100644 index 000000000..ac3880960 Binary files /dev/null and b/public/terrain/18/429297/176912.terrain differ diff --git a/public/terrain/18/429297/176913.terrain b/public/terrain/18/429297/176913.terrain new file mode 100644 index 000000000..e94f73b97 Binary files /dev/null and b/public/terrain/18/429297/176913.terrain differ diff --git a/public/terrain/18/429297/176914.terrain b/public/terrain/18/429297/176914.terrain new file mode 100644 index 000000000..e135f8e90 Binary files /dev/null and b/public/terrain/18/429297/176914.terrain differ diff --git a/public/terrain/18/429297/176915.terrain b/public/terrain/18/429297/176915.terrain new file mode 100644 index 000000000..35732b012 Binary files /dev/null and b/public/terrain/18/429297/176915.terrain differ diff --git a/public/terrain/18/429297/176916.terrain b/public/terrain/18/429297/176916.terrain new file mode 100644 index 000000000..4a0df76b2 Binary files /dev/null and b/public/terrain/18/429297/176916.terrain differ diff --git a/public/terrain/18/429297/176917.terrain b/public/terrain/18/429297/176917.terrain new file mode 100644 index 000000000..6b838a4f5 Binary files /dev/null and b/public/terrain/18/429297/176917.terrain differ diff --git a/public/terrain/18/429297/176918.terrain b/public/terrain/18/429297/176918.terrain new file mode 100644 index 000000000..a41a210f2 Binary files /dev/null and b/public/terrain/18/429297/176918.terrain differ diff --git a/public/terrain/18/429297/176919.terrain b/public/terrain/18/429297/176919.terrain new file mode 100644 index 000000000..c724e9b36 Binary files /dev/null and b/public/terrain/18/429297/176919.terrain differ diff --git a/public/terrain/18/429297/176920.terrain b/public/terrain/18/429297/176920.terrain new file mode 100644 index 000000000..b6d01d3ec Binary files /dev/null and b/public/terrain/18/429297/176920.terrain differ diff --git a/public/terrain/18/429297/176921.terrain b/public/terrain/18/429297/176921.terrain new file mode 100644 index 000000000..81d649b86 Binary files /dev/null and b/public/terrain/18/429297/176921.terrain differ diff --git a/public/terrain/18/429297/176922.terrain b/public/terrain/18/429297/176922.terrain new file mode 100644 index 000000000..a1e3f772b Binary files /dev/null and b/public/terrain/18/429297/176922.terrain differ diff --git a/public/terrain/18/429297/176923.terrain b/public/terrain/18/429297/176923.terrain new file mode 100644 index 000000000..66f1e081c Binary files /dev/null and b/public/terrain/18/429297/176923.terrain differ diff --git a/public/terrain/18/429297/176924.terrain b/public/terrain/18/429297/176924.terrain new file mode 100644 index 000000000..200fa74fa Binary files /dev/null and b/public/terrain/18/429297/176924.terrain differ diff --git a/public/terrain/18/429297/176925.terrain b/public/terrain/18/429297/176925.terrain new file mode 100644 index 000000000..8334fd181 Binary files /dev/null and b/public/terrain/18/429297/176925.terrain differ diff --git a/public/terrain/18/429297/176926.terrain b/public/terrain/18/429297/176926.terrain new file mode 100644 index 000000000..a614ae7fe Binary files /dev/null and b/public/terrain/18/429297/176926.terrain differ diff --git a/public/terrain/18/429297/176927.terrain b/public/terrain/18/429297/176927.terrain new file mode 100644 index 000000000..520df11af Binary files /dev/null and b/public/terrain/18/429297/176927.terrain differ diff --git a/public/terrain/18/429297/176928.terrain b/public/terrain/18/429297/176928.terrain new file mode 100644 index 000000000..9e9fca7c6 Binary files /dev/null and b/public/terrain/18/429297/176928.terrain differ diff --git a/public/terrain/18/429297/176929.terrain b/public/terrain/18/429297/176929.terrain new file mode 100644 index 000000000..c4342f90e Binary files /dev/null and b/public/terrain/18/429297/176929.terrain differ diff --git a/public/terrain/18/429297/176930.terrain b/public/terrain/18/429297/176930.terrain new file mode 100644 index 000000000..9743b6ed6 Binary files /dev/null and b/public/terrain/18/429297/176930.terrain differ diff --git a/public/terrain/18/429297/176931.terrain b/public/terrain/18/429297/176931.terrain new file mode 100644 index 000000000..03c0814b8 Binary files /dev/null and b/public/terrain/18/429297/176931.terrain differ diff --git a/public/terrain/18/429297/176932.terrain b/public/terrain/18/429297/176932.terrain new file mode 100644 index 000000000..937141b1d Binary files /dev/null and b/public/terrain/18/429297/176932.terrain differ diff --git a/public/terrain/18/429297/176933.terrain b/public/terrain/18/429297/176933.terrain new file mode 100644 index 000000000..a7c35fa91 Binary files /dev/null and b/public/terrain/18/429297/176933.terrain differ diff --git a/public/terrain/18/429297/176934.terrain b/public/terrain/18/429297/176934.terrain new file mode 100644 index 000000000..766ebaa06 Binary files /dev/null and b/public/terrain/18/429297/176934.terrain differ diff --git a/public/terrain/18/429297/176935.terrain b/public/terrain/18/429297/176935.terrain new file mode 100644 index 000000000..ab38ef558 Binary files /dev/null and b/public/terrain/18/429297/176935.terrain differ diff --git a/public/terrain/18/429297/176936.terrain b/public/terrain/18/429297/176936.terrain new file mode 100644 index 000000000..219b1ad7c Binary files /dev/null and b/public/terrain/18/429297/176936.terrain differ diff --git a/public/terrain/18/429297/176937.terrain b/public/terrain/18/429297/176937.terrain new file mode 100644 index 000000000..460fa9ab8 Binary files /dev/null and b/public/terrain/18/429297/176937.terrain differ diff --git a/public/terrain/18/429297/176938.terrain b/public/terrain/18/429297/176938.terrain new file mode 100644 index 000000000..d59710cfc Binary files /dev/null and b/public/terrain/18/429297/176938.terrain differ diff --git a/public/terrain/18/429297/176939.terrain b/public/terrain/18/429297/176939.terrain new file mode 100644 index 000000000..dc62b4a72 Binary files /dev/null and b/public/terrain/18/429297/176939.terrain differ diff --git a/public/terrain/18/429297/176940.terrain b/public/terrain/18/429297/176940.terrain new file mode 100644 index 000000000..9a7b57b91 Binary files /dev/null and b/public/terrain/18/429297/176940.terrain differ diff --git a/public/terrain/18/429297/176941.terrain b/public/terrain/18/429297/176941.terrain new file mode 100644 index 000000000..30094a2a6 Binary files /dev/null and b/public/terrain/18/429297/176941.terrain differ diff --git a/public/terrain/18/429297/176942.terrain b/public/terrain/18/429297/176942.terrain new file mode 100644 index 000000000..5e46e1a45 Binary files /dev/null and b/public/terrain/18/429297/176942.terrain differ diff --git a/public/terrain/18/429297/176943.terrain b/public/terrain/18/429297/176943.terrain new file mode 100644 index 000000000..588218b2f Binary files /dev/null and b/public/terrain/18/429297/176943.terrain differ diff --git a/public/terrain/18/429297/176944.terrain b/public/terrain/18/429297/176944.terrain new file mode 100644 index 000000000..06195be46 Binary files /dev/null and b/public/terrain/18/429297/176944.terrain differ diff --git a/public/terrain/18/429297/176945.terrain b/public/terrain/18/429297/176945.terrain new file mode 100644 index 000000000..0de7dd0c2 Binary files /dev/null and b/public/terrain/18/429297/176945.terrain differ diff --git a/public/terrain/18/429297/176946.terrain b/public/terrain/18/429297/176946.terrain new file mode 100644 index 000000000..4d3a940df Binary files /dev/null and b/public/terrain/18/429297/176946.terrain differ diff --git a/public/terrain/18/429297/176947.terrain b/public/terrain/18/429297/176947.terrain new file mode 100644 index 000000000..2bbca46b1 Binary files /dev/null and b/public/terrain/18/429297/176947.terrain differ diff --git a/public/terrain/18/429297/176948.terrain b/public/terrain/18/429297/176948.terrain new file mode 100644 index 000000000..14c7bc498 Binary files /dev/null and b/public/terrain/18/429297/176948.terrain differ diff --git a/public/terrain/18/429297/176949.terrain b/public/terrain/18/429297/176949.terrain new file mode 100644 index 000000000..a0c45d1df Binary files /dev/null and b/public/terrain/18/429297/176949.terrain differ diff --git a/public/terrain/18/429297/176950.terrain b/public/terrain/18/429297/176950.terrain new file mode 100644 index 000000000..381093976 Binary files /dev/null and b/public/terrain/18/429297/176950.terrain differ diff --git a/public/terrain/18/429297/176951.terrain b/public/terrain/18/429297/176951.terrain new file mode 100644 index 000000000..68b81e50c Binary files /dev/null and b/public/terrain/18/429297/176951.terrain differ diff --git a/public/terrain/18/429297/176952.terrain b/public/terrain/18/429297/176952.terrain new file mode 100644 index 000000000..ee0ae832f Binary files /dev/null and b/public/terrain/18/429297/176952.terrain differ diff --git a/public/terrain/18/429297/176953.terrain b/public/terrain/18/429297/176953.terrain new file mode 100644 index 000000000..0cf39f28f Binary files /dev/null and b/public/terrain/18/429297/176953.terrain differ diff --git a/public/terrain/18/429297/176954.terrain b/public/terrain/18/429297/176954.terrain new file mode 100644 index 000000000..b06d38ed9 Binary files /dev/null and b/public/terrain/18/429297/176954.terrain differ diff --git a/public/terrain/18/429297/176955.terrain b/public/terrain/18/429297/176955.terrain new file mode 100644 index 000000000..ac587db8f Binary files /dev/null and b/public/terrain/18/429297/176955.terrain differ diff --git a/public/terrain/18/429297/176956.terrain b/public/terrain/18/429297/176956.terrain new file mode 100644 index 000000000..2d6c04259 Binary files /dev/null and b/public/terrain/18/429297/176956.terrain differ diff --git a/public/terrain/18/429297/176957.terrain b/public/terrain/18/429297/176957.terrain new file mode 100644 index 000000000..ac529b890 Binary files /dev/null and b/public/terrain/18/429297/176957.terrain differ diff --git a/public/terrain/18/429297/176958.terrain b/public/terrain/18/429297/176958.terrain new file mode 100644 index 000000000..8f8aa593c Binary files /dev/null and b/public/terrain/18/429297/176958.terrain differ diff --git a/public/terrain/18/429297/176959.terrain b/public/terrain/18/429297/176959.terrain new file mode 100644 index 000000000..a1b1dd02c Binary files /dev/null and b/public/terrain/18/429297/176959.terrain differ diff --git a/public/terrain/18/429297/176960.terrain b/public/terrain/18/429297/176960.terrain new file mode 100644 index 000000000..1bea1e19e Binary files /dev/null and b/public/terrain/18/429297/176960.terrain differ diff --git a/public/terrain/18/429297/176961.terrain b/public/terrain/18/429297/176961.terrain new file mode 100644 index 000000000..50260e612 Binary files /dev/null and b/public/terrain/18/429297/176961.terrain differ diff --git a/public/terrain/18/429297/176962.terrain b/public/terrain/18/429297/176962.terrain new file mode 100644 index 000000000..b5be7a393 Binary files /dev/null and b/public/terrain/18/429297/176962.terrain differ diff --git a/public/terrain/18/429297/176963.terrain b/public/terrain/18/429297/176963.terrain new file mode 100644 index 000000000..3d4422072 Binary files /dev/null and b/public/terrain/18/429297/176963.terrain differ diff --git a/public/terrain/18/429297/176964.terrain b/public/terrain/18/429297/176964.terrain new file mode 100644 index 000000000..1a3751587 Binary files /dev/null and b/public/terrain/18/429297/176964.terrain differ diff --git a/public/terrain/18/429297/176965.terrain b/public/terrain/18/429297/176965.terrain new file mode 100644 index 000000000..a5a190016 Binary files /dev/null and b/public/terrain/18/429297/176965.terrain differ diff --git a/public/terrain/18/429297/176966.terrain b/public/terrain/18/429297/176966.terrain new file mode 100644 index 000000000..0d7dd4c7f Binary files /dev/null and b/public/terrain/18/429297/176966.terrain differ diff --git a/public/terrain/18/429297/176967.terrain b/public/terrain/18/429297/176967.terrain new file mode 100644 index 000000000..f4e23b1e6 Binary files /dev/null and b/public/terrain/18/429297/176967.terrain differ diff --git a/public/terrain/18/429297/176968.terrain b/public/terrain/18/429297/176968.terrain new file mode 100644 index 000000000..b102cd938 Binary files /dev/null and b/public/terrain/18/429297/176968.terrain differ diff --git a/public/terrain/18/429297/176969.terrain b/public/terrain/18/429297/176969.terrain new file mode 100644 index 000000000..384717ec9 Binary files /dev/null and b/public/terrain/18/429297/176969.terrain differ diff --git a/public/terrain/18/429297/176970.terrain b/public/terrain/18/429297/176970.terrain new file mode 100644 index 000000000..1b22715b5 Binary files /dev/null and b/public/terrain/18/429297/176970.terrain differ diff --git a/public/terrain/18/429297/176971.terrain b/public/terrain/18/429297/176971.terrain new file mode 100644 index 000000000..2c6b022e4 Binary files /dev/null and b/public/terrain/18/429297/176971.terrain differ diff --git a/public/terrain/18/429297/176972.terrain b/public/terrain/18/429297/176972.terrain new file mode 100644 index 000000000..7eed9f387 Binary files /dev/null and b/public/terrain/18/429297/176972.terrain differ diff --git a/public/terrain/18/429297/176973.terrain b/public/terrain/18/429297/176973.terrain new file mode 100644 index 000000000..9dc61cb57 Binary files /dev/null and b/public/terrain/18/429297/176973.terrain differ diff --git a/public/terrain/18/429297/176974.terrain b/public/terrain/18/429297/176974.terrain new file mode 100644 index 000000000..6ce9f81e8 Binary files /dev/null and b/public/terrain/18/429297/176974.terrain differ diff --git a/public/terrain/18/429297/176975.terrain b/public/terrain/18/429297/176975.terrain new file mode 100644 index 000000000..03b5e6246 Binary files /dev/null and b/public/terrain/18/429297/176975.terrain differ diff --git a/public/terrain/18/429297/176976.terrain b/public/terrain/18/429297/176976.terrain new file mode 100644 index 000000000..6f4448f4d Binary files /dev/null and b/public/terrain/18/429297/176976.terrain differ diff --git a/public/terrain/18/429297/176977.terrain b/public/terrain/18/429297/176977.terrain new file mode 100644 index 000000000..f70edb7ac Binary files /dev/null and b/public/terrain/18/429297/176977.terrain differ diff --git a/public/terrain/18/429297/176978.terrain b/public/terrain/18/429297/176978.terrain new file mode 100644 index 000000000..1d0fad4e3 Binary files /dev/null and b/public/terrain/18/429297/176978.terrain differ diff --git a/public/terrain/18/429297/176979.terrain b/public/terrain/18/429297/176979.terrain new file mode 100644 index 000000000..b292c6fe3 Binary files /dev/null and b/public/terrain/18/429297/176979.terrain differ diff --git a/public/terrain/18/429297/176980.terrain b/public/terrain/18/429297/176980.terrain new file mode 100644 index 000000000..4e13e4dda Binary files /dev/null and b/public/terrain/18/429297/176980.terrain differ diff --git a/public/terrain/18/429297/176981.terrain b/public/terrain/18/429297/176981.terrain new file mode 100644 index 000000000..2b0675e3a Binary files /dev/null and b/public/terrain/18/429297/176981.terrain differ diff --git a/public/terrain/18/429297/176982.terrain b/public/terrain/18/429297/176982.terrain new file mode 100644 index 000000000..5befb1782 Binary files /dev/null and b/public/terrain/18/429297/176982.terrain differ diff --git a/public/terrain/18/429297/176983.terrain b/public/terrain/18/429297/176983.terrain new file mode 100644 index 000000000..d9433ac13 Binary files /dev/null and b/public/terrain/18/429297/176983.terrain differ diff --git a/public/terrain/18/429297/176984.terrain b/public/terrain/18/429297/176984.terrain new file mode 100644 index 000000000..e8e378fe5 Binary files /dev/null and b/public/terrain/18/429297/176984.terrain differ diff --git a/public/terrain/18/429297/176985.terrain b/public/terrain/18/429297/176985.terrain new file mode 100644 index 000000000..d29cc98ee Binary files /dev/null and b/public/terrain/18/429297/176985.terrain differ diff --git a/public/terrain/18/429297/176986.terrain b/public/terrain/18/429297/176986.terrain new file mode 100644 index 000000000..6fdf5f431 Binary files /dev/null and b/public/terrain/18/429297/176986.terrain differ diff --git a/public/terrain/18/429297/176987.terrain b/public/terrain/18/429297/176987.terrain new file mode 100644 index 000000000..f160d34fb Binary files /dev/null and b/public/terrain/18/429297/176987.terrain differ diff --git a/public/terrain/18/429297/176988.terrain b/public/terrain/18/429297/176988.terrain new file mode 100644 index 000000000..ccd2d8593 Binary files /dev/null and b/public/terrain/18/429297/176988.terrain differ diff --git a/public/terrain/18/429297/176989.terrain b/public/terrain/18/429297/176989.terrain new file mode 100644 index 000000000..bfbee79b8 Binary files /dev/null and b/public/terrain/18/429297/176989.terrain differ diff --git a/public/terrain/18/429297/176990.terrain b/public/terrain/18/429297/176990.terrain new file mode 100644 index 000000000..a7327d9a3 Binary files /dev/null and b/public/terrain/18/429297/176990.terrain differ diff --git a/public/terrain/18/429297/176991.terrain b/public/terrain/18/429297/176991.terrain new file mode 100644 index 000000000..b1dbb1da1 Binary files /dev/null and b/public/terrain/18/429297/176991.terrain differ diff --git a/public/terrain/18/429297/176992.terrain b/public/terrain/18/429297/176992.terrain new file mode 100644 index 000000000..244201b3c Binary files /dev/null and b/public/terrain/18/429297/176992.terrain differ diff --git a/public/terrain/18/429297/176993.terrain b/public/terrain/18/429297/176993.terrain new file mode 100644 index 000000000..1a54a012e Binary files /dev/null and b/public/terrain/18/429297/176993.terrain differ diff --git a/public/terrain/18/429297/176994.terrain b/public/terrain/18/429297/176994.terrain new file mode 100644 index 000000000..2558424a5 Binary files /dev/null and b/public/terrain/18/429297/176994.terrain differ diff --git a/public/terrain/18/429297/176995.terrain b/public/terrain/18/429297/176995.terrain new file mode 100644 index 000000000..7434fc9a2 Binary files /dev/null and b/public/terrain/18/429297/176995.terrain differ diff --git a/public/terrain/18/429297/176996.terrain b/public/terrain/18/429297/176996.terrain new file mode 100644 index 000000000..a7a61ab19 Binary files /dev/null and b/public/terrain/18/429297/176996.terrain differ diff --git a/public/terrain/18/429297/176997.terrain b/public/terrain/18/429297/176997.terrain new file mode 100644 index 000000000..7b3669bc2 Binary files /dev/null and b/public/terrain/18/429297/176997.terrain differ diff --git a/public/terrain/18/429297/176998.terrain b/public/terrain/18/429297/176998.terrain new file mode 100644 index 000000000..d7a983afc Binary files /dev/null and b/public/terrain/18/429297/176998.terrain differ diff --git a/public/terrain/18/429297/176999.terrain b/public/terrain/18/429297/176999.terrain new file mode 100644 index 000000000..a822cf887 Binary files /dev/null and b/public/terrain/18/429297/176999.terrain differ diff --git a/public/terrain/18/429297/177000.terrain b/public/terrain/18/429297/177000.terrain new file mode 100644 index 000000000..d2f65f7ba Binary files /dev/null and b/public/terrain/18/429297/177000.terrain differ diff --git a/public/terrain/18/429297/177001.terrain b/public/terrain/18/429297/177001.terrain new file mode 100644 index 000000000..f735366f0 Binary files /dev/null and b/public/terrain/18/429297/177001.terrain differ diff --git a/public/terrain/18/429297/177002.terrain b/public/terrain/18/429297/177002.terrain new file mode 100644 index 000000000..f53047aea Binary files /dev/null and b/public/terrain/18/429297/177002.terrain differ diff --git a/public/terrain/18/429297/177003.terrain b/public/terrain/18/429297/177003.terrain new file mode 100644 index 000000000..b56836c68 Binary files /dev/null and b/public/terrain/18/429297/177003.terrain differ diff --git a/public/terrain/18/429297/177004.terrain b/public/terrain/18/429297/177004.terrain new file mode 100644 index 000000000..19250d401 Binary files /dev/null and b/public/terrain/18/429297/177004.terrain differ diff --git a/public/terrain/18/429297/177005.terrain b/public/terrain/18/429297/177005.terrain new file mode 100644 index 000000000..4d2eca6b2 Binary files /dev/null and b/public/terrain/18/429297/177005.terrain differ diff --git a/public/terrain/18/429297/177006.terrain b/public/terrain/18/429297/177006.terrain new file mode 100644 index 000000000..1bbee6d6f Binary files /dev/null and b/public/terrain/18/429297/177006.terrain differ diff --git a/public/terrain/18/429297/177007.terrain b/public/terrain/18/429297/177007.terrain new file mode 100644 index 000000000..06190f714 Binary files /dev/null and b/public/terrain/18/429297/177007.terrain differ diff --git a/public/terrain/18/429297/177008.terrain b/public/terrain/18/429297/177008.terrain new file mode 100644 index 000000000..4d0292de2 Binary files /dev/null and b/public/terrain/18/429297/177008.terrain differ diff --git a/public/terrain/18/429297/177009.terrain b/public/terrain/18/429297/177009.terrain new file mode 100644 index 000000000..6184a45d2 Binary files /dev/null and b/public/terrain/18/429297/177009.terrain differ diff --git a/public/terrain/18/429297/177010.terrain b/public/terrain/18/429297/177010.terrain new file mode 100644 index 000000000..4d7542022 Binary files /dev/null and b/public/terrain/18/429297/177010.terrain differ diff --git a/public/terrain/18/429297/177011.terrain b/public/terrain/18/429297/177011.terrain new file mode 100644 index 000000000..c10a2bd65 Binary files /dev/null and b/public/terrain/18/429297/177011.terrain differ diff --git a/public/terrain/18/429297/177012.terrain b/public/terrain/18/429297/177012.terrain new file mode 100644 index 000000000..8d9c7523f Binary files /dev/null and b/public/terrain/18/429297/177012.terrain differ diff --git a/public/terrain/18/429297/177013.terrain b/public/terrain/18/429297/177013.terrain new file mode 100644 index 000000000..e6c5d1d3e Binary files /dev/null and b/public/terrain/18/429297/177013.terrain differ diff --git a/public/terrain/18/429297/177014.terrain b/public/terrain/18/429297/177014.terrain new file mode 100644 index 000000000..b4a98cb28 Binary files /dev/null and b/public/terrain/18/429297/177014.terrain differ diff --git a/public/terrain/18/429297/177015.terrain b/public/terrain/18/429297/177015.terrain new file mode 100644 index 000000000..475f43d20 Binary files /dev/null and b/public/terrain/18/429297/177015.terrain differ diff --git a/public/terrain/18/429297/177016.terrain b/public/terrain/18/429297/177016.terrain new file mode 100644 index 000000000..f0c22ced0 Binary files /dev/null and b/public/terrain/18/429297/177016.terrain differ diff --git a/public/terrain/18/429297/177017.terrain b/public/terrain/18/429297/177017.terrain new file mode 100644 index 000000000..a2b06a2d8 Binary files /dev/null and b/public/terrain/18/429297/177017.terrain differ diff --git a/public/terrain/18/429297/177018.terrain b/public/terrain/18/429297/177018.terrain new file mode 100644 index 000000000..5e0984e36 Binary files /dev/null and b/public/terrain/18/429297/177018.terrain differ diff --git a/public/terrain/18/429297/177019.terrain b/public/terrain/18/429297/177019.terrain new file mode 100644 index 000000000..d5f301f36 Binary files /dev/null and b/public/terrain/18/429297/177019.terrain differ diff --git a/public/terrain/18/429297/177020.terrain b/public/terrain/18/429297/177020.terrain new file mode 100644 index 000000000..8a7873dde Binary files /dev/null and b/public/terrain/18/429297/177020.terrain differ diff --git a/public/terrain/18/429297/177021.terrain b/public/terrain/18/429297/177021.terrain new file mode 100644 index 000000000..f8b8260b3 Binary files /dev/null and b/public/terrain/18/429297/177021.terrain differ diff --git a/public/terrain/18/429297/177022.terrain b/public/terrain/18/429297/177022.terrain new file mode 100644 index 000000000..32b269918 Binary files /dev/null and b/public/terrain/18/429297/177022.terrain differ diff --git a/public/terrain/18/429297/177023.terrain b/public/terrain/18/429297/177023.terrain new file mode 100644 index 000000000..33f820094 Binary files /dev/null and b/public/terrain/18/429297/177023.terrain differ diff --git a/public/terrain/18/429297/177024.terrain b/public/terrain/18/429297/177024.terrain new file mode 100644 index 000000000..1da70977e Binary files /dev/null and b/public/terrain/18/429297/177024.terrain differ diff --git a/public/terrain/18/429297/177025.terrain b/public/terrain/18/429297/177025.terrain new file mode 100644 index 000000000..6ff670e40 Binary files /dev/null and b/public/terrain/18/429297/177025.terrain differ diff --git a/public/terrain/18/429297/177026.terrain b/public/terrain/18/429297/177026.terrain new file mode 100644 index 000000000..f531ad46a Binary files /dev/null and b/public/terrain/18/429297/177026.terrain differ diff --git a/public/terrain/18/429297/177027.terrain b/public/terrain/18/429297/177027.terrain new file mode 100644 index 000000000..a59094537 Binary files /dev/null and b/public/terrain/18/429297/177027.terrain differ diff --git a/public/terrain/18/429297/177028.terrain b/public/terrain/18/429297/177028.terrain new file mode 100644 index 000000000..38930bfc4 Binary files /dev/null and b/public/terrain/18/429297/177028.terrain differ diff --git a/public/terrain/18/429297/177029.terrain b/public/terrain/18/429297/177029.terrain new file mode 100644 index 000000000..f2445e241 Binary files /dev/null and b/public/terrain/18/429297/177029.terrain differ diff --git a/public/terrain/18/429298/176871.terrain b/public/terrain/18/429298/176871.terrain new file mode 100644 index 000000000..552d2b5c4 Binary files /dev/null and b/public/terrain/18/429298/176871.terrain differ diff --git a/public/terrain/18/429298/176872.terrain b/public/terrain/18/429298/176872.terrain new file mode 100644 index 000000000..6b026f87d Binary files /dev/null and b/public/terrain/18/429298/176872.terrain differ diff --git a/public/terrain/18/429298/176873.terrain b/public/terrain/18/429298/176873.terrain new file mode 100644 index 000000000..41e037265 Binary files /dev/null and b/public/terrain/18/429298/176873.terrain differ diff --git a/public/terrain/18/429298/176874.terrain b/public/terrain/18/429298/176874.terrain new file mode 100644 index 000000000..a92cdb9a8 Binary files /dev/null and b/public/terrain/18/429298/176874.terrain differ diff --git a/public/terrain/18/429298/176875.terrain b/public/terrain/18/429298/176875.terrain new file mode 100644 index 000000000..5c621c009 Binary files /dev/null and b/public/terrain/18/429298/176875.terrain differ diff --git a/public/terrain/18/429298/176876.terrain b/public/terrain/18/429298/176876.terrain new file mode 100644 index 000000000..4b0a0514f Binary files /dev/null and b/public/terrain/18/429298/176876.terrain differ diff --git a/public/terrain/18/429298/176877.terrain b/public/terrain/18/429298/176877.terrain new file mode 100644 index 000000000..91501e6e7 Binary files /dev/null and b/public/terrain/18/429298/176877.terrain differ diff --git a/public/terrain/18/429298/176878.terrain b/public/terrain/18/429298/176878.terrain new file mode 100644 index 000000000..22e65685b Binary files /dev/null and b/public/terrain/18/429298/176878.terrain differ diff --git a/public/terrain/18/429298/176879.terrain b/public/terrain/18/429298/176879.terrain new file mode 100644 index 000000000..6b6e74c1b Binary files /dev/null and b/public/terrain/18/429298/176879.terrain differ diff --git a/public/terrain/18/429298/176880.terrain b/public/terrain/18/429298/176880.terrain new file mode 100644 index 000000000..ee0a90e0c Binary files /dev/null and b/public/terrain/18/429298/176880.terrain differ diff --git a/public/terrain/18/429298/176881.terrain b/public/terrain/18/429298/176881.terrain new file mode 100644 index 000000000..a67663dee Binary files /dev/null and b/public/terrain/18/429298/176881.terrain differ diff --git a/public/terrain/18/429298/176882.terrain b/public/terrain/18/429298/176882.terrain new file mode 100644 index 000000000..b5a1ab01d Binary files /dev/null and b/public/terrain/18/429298/176882.terrain differ diff --git a/public/terrain/18/429298/176883.terrain b/public/terrain/18/429298/176883.terrain new file mode 100644 index 000000000..d39b9e8e0 Binary files /dev/null and b/public/terrain/18/429298/176883.terrain differ diff --git a/public/terrain/18/429298/176884.terrain b/public/terrain/18/429298/176884.terrain new file mode 100644 index 000000000..cd97186f8 Binary files /dev/null and b/public/terrain/18/429298/176884.terrain differ diff --git a/public/terrain/18/429298/176885.terrain b/public/terrain/18/429298/176885.terrain new file mode 100644 index 000000000..d81a42e64 Binary files /dev/null and b/public/terrain/18/429298/176885.terrain differ diff --git a/public/terrain/18/429298/176886.terrain b/public/terrain/18/429298/176886.terrain new file mode 100644 index 000000000..ccddbf450 Binary files /dev/null and b/public/terrain/18/429298/176886.terrain differ diff --git a/public/terrain/18/429298/176887.terrain b/public/terrain/18/429298/176887.terrain new file mode 100644 index 000000000..15749720f Binary files /dev/null and b/public/terrain/18/429298/176887.terrain differ diff --git a/public/terrain/18/429298/176888.terrain b/public/terrain/18/429298/176888.terrain new file mode 100644 index 000000000..020dc0924 Binary files /dev/null and b/public/terrain/18/429298/176888.terrain differ diff --git a/public/terrain/18/429298/176889.terrain b/public/terrain/18/429298/176889.terrain new file mode 100644 index 000000000..9cfaa8b1b Binary files /dev/null and b/public/terrain/18/429298/176889.terrain differ diff --git a/public/terrain/18/429298/176890.terrain b/public/terrain/18/429298/176890.terrain new file mode 100644 index 000000000..f37c20453 Binary files /dev/null and b/public/terrain/18/429298/176890.terrain differ diff --git a/public/terrain/18/429298/176891.terrain b/public/terrain/18/429298/176891.terrain new file mode 100644 index 000000000..45b5c5350 Binary files /dev/null and b/public/terrain/18/429298/176891.terrain differ diff --git a/public/terrain/18/429298/176892.terrain b/public/terrain/18/429298/176892.terrain new file mode 100644 index 000000000..5819855f6 Binary files /dev/null and b/public/terrain/18/429298/176892.terrain differ diff --git a/public/terrain/18/429298/176893.terrain b/public/terrain/18/429298/176893.terrain new file mode 100644 index 000000000..96f7f83a1 Binary files /dev/null and b/public/terrain/18/429298/176893.terrain differ diff --git a/public/terrain/18/429298/176894.terrain b/public/terrain/18/429298/176894.terrain new file mode 100644 index 000000000..11154bb2d Binary files /dev/null and b/public/terrain/18/429298/176894.terrain differ diff --git a/public/terrain/18/429298/176895.terrain b/public/terrain/18/429298/176895.terrain new file mode 100644 index 000000000..a39851dc7 Binary files /dev/null and b/public/terrain/18/429298/176895.terrain differ diff --git a/public/terrain/18/429298/176896.terrain b/public/terrain/18/429298/176896.terrain new file mode 100644 index 000000000..f732cc7e6 Binary files /dev/null and b/public/terrain/18/429298/176896.terrain differ diff --git a/public/terrain/18/429298/176897.terrain b/public/terrain/18/429298/176897.terrain new file mode 100644 index 000000000..d494436f1 Binary files /dev/null and b/public/terrain/18/429298/176897.terrain differ diff --git a/public/terrain/18/429298/176898.terrain b/public/terrain/18/429298/176898.terrain new file mode 100644 index 000000000..e2a56e901 Binary files /dev/null and b/public/terrain/18/429298/176898.terrain differ diff --git a/public/terrain/18/429298/176899.terrain b/public/terrain/18/429298/176899.terrain new file mode 100644 index 000000000..8d766d4e0 Binary files /dev/null and b/public/terrain/18/429298/176899.terrain differ diff --git a/public/terrain/18/429298/176900.terrain b/public/terrain/18/429298/176900.terrain new file mode 100644 index 000000000..65bd7b24c Binary files /dev/null and b/public/terrain/18/429298/176900.terrain differ diff --git a/public/terrain/18/429298/176901.terrain b/public/terrain/18/429298/176901.terrain new file mode 100644 index 000000000..2538f9d52 Binary files /dev/null and b/public/terrain/18/429298/176901.terrain differ diff --git a/public/terrain/18/429298/176902.terrain b/public/terrain/18/429298/176902.terrain new file mode 100644 index 000000000..0e169b8bb Binary files /dev/null and b/public/terrain/18/429298/176902.terrain differ diff --git a/public/terrain/18/429298/176903.terrain b/public/terrain/18/429298/176903.terrain new file mode 100644 index 000000000..f21fbc5a0 Binary files /dev/null and b/public/terrain/18/429298/176903.terrain differ diff --git a/public/terrain/18/429298/176904.terrain b/public/terrain/18/429298/176904.terrain new file mode 100644 index 000000000..cb822ecc7 Binary files /dev/null and b/public/terrain/18/429298/176904.terrain differ diff --git a/public/terrain/18/429298/176905.terrain b/public/terrain/18/429298/176905.terrain new file mode 100644 index 000000000..17cfded77 Binary files /dev/null and b/public/terrain/18/429298/176905.terrain differ diff --git a/public/terrain/18/429298/176906.terrain b/public/terrain/18/429298/176906.terrain new file mode 100644 index 000000000..696700270 Binary files /dev/null and b/public/terrain/18/429298/176906.terrain differ diff --git a/public/terrain/18/429298/176907.terrain b/public/terrain/18/429298/176907.terrain new file mode 100644 index 000000000..68356a818 Binary files /dev/null and b/public/terrain/18/429298/176907.terrain differ diff --git a/public/terrain/18/429298/176908.terrain b/public/terrain/18/429298/176908.terrain new file mode 100644 index 000000000..01857fe64 Binary files /dev/null and b/public/terrain/18/429298/176908.terrain differ diff --git a/public/terrain/18/429298/176909.terrain b/public/terrain/18/429298/176909.terrain new file mode 100644 index 000000000..177535f13 Binary files /dev/null and b/public/terrain/18/429298/176909.terrain differ diff --git a/public/terrain/18/429298/176910.terrain b/public/terrain/18/429298/176910.terrain new file mode 100644 index 000000000..f15e743f7 Binary files /dev/null and b/public/terrain/18/429298/176910.terrain differ diff --git a/public/terrain/18/429298/176911.terrain b/public/terrain/18/429298/176911.terrain new file mode 100644 index 000000000..8b45384d0 Binary files /dev/null and b/public/terrain/18/429298/176911.terrain differ diff --git a/public/terrain/18/429298/176912.terrain b/public/terrain/18/429298/176912.terrain new file mode 100644 index 000000000..dbfcb4fff Binary files /dev/null and b/public/terrain/18/429298/176912.terrain differ diff --git a/public/terrain/18/429298/176913.terrain b/public/terrain/18/429298/176913.terrain new file mode 100644 index 000000000..d03760ca9 Binary files /dev/null and b/public/terrain/18/429298/176913.terrain differ diff --git a/public/terrain/18/429298/176914.terrain b/public/terrain/18/429298/176914.terrain new file mode 100644 index 000000000..e5728101e Binary files /dev/null and b/public/terrain/18/429298/176914.terrain differ diff --git a/public/terrain/18/429298/176915.terrain b/public/terrain/18/429298/176915.terrain new file mode 100644 index 000000000..8f6851aca Binary files /dev/null and b/public/terrain/18/429298/176915.terrain differ diff --git a/public/terrain/18/429298/176916.terrain b/public/terrain/18/429298/176916.terrain new file mode 100644 index 000000000..0d1ebc795 Binary files /dev/null and b/public/terrain/18/429298/176916.terrain differ diff --git a/public/terrain/18/429298/176917.terrain b/public/terrain/18/429298/176917.terrain new file mode 100644 index 000000000..127dd6689 Binary files /dev/null and b/public/terrain/18/429298/176917.terrain differ diff --git a/public/terrain/18/429298/176918.terrain b/public/terrain/18/429298/176918.terrain new file mode 100644 index 000000000..8e20884f8 Binary files /dev/null and b/public/terrain/18/429298/176918.terrain differ diff --git a/public/terrain/18/429298/176919.terrain b/public/terrain/18/429298/176919.terrain new file mode 100644 index 000000000..7fd468134 Binary files /dev/null and b/public/terrain/18/429298/176919.terrain differ diff --git a/public/terrain/18/429298/176920.terrain b/public/terrain/18/429298/176920.terrain new file mode 100644 index 000000000..95fef14dd Binary files /dev/null and b/public/terrain/18/429298/176920.terrain differ diff --git a/public/terrain/18/429298/176921.terrain b/public/terrain/18/429298/176921.terrain new file mode 100644 index 000000000..0ad452303 Binary files /dev/null and b/public/terrain/18/429298/176921.terrain differ diff --git a/public/terrain/18/429298/176922.terrain b/public/terrain/18/429298/176922.terrain new file mode 100644 index 000000000..ad7092cc3 Binary files /dev/null and b/public/terrain/18/429298/176922.terrain differ diff --git a/public/terrain/18/429298/176923.terrain b/public/terrain/18/429298/176923.terrain new file mode 100644 index 000000000..d4c45c3cd Binary files /dev/null and b/public/terrain/18/429298/176923.terrain differ diff --git a/public/terrain/18/429298/176924.terrain b/public/terrain/18/429298/176924.terrain new file mode 100644 index 000000000..a86a6afa7 Binary files /dev/null and b/public/terrain/18/429298/176924.terrain differ diff --git a/public/terrain/18/429298/176925.terrain b/public/terrain/18/429298/176925.terrain new file mode 100644 index 000000000..98dd6ca4a Binary files /dev/null and b/public/terrain/18/429298/176925.terrain differ diff --git a/public/terrain/18/429298/176926.terrain b/public/terrain/18/429298/176926.terrain new file mode 100644 index 000000000..1012668a2 Binary files /dev/null and b/public/terrain/18/429298/176926.terrain differ diff --git a/public/terrain/18/429298/176927.terrain b/public/terrain/18/429298/176927.terrain new file mode 100644 index 000000000..415cc22bc Binary files /dev/null and b/public/terrain/18/429298/176927.terrain differ diff --git a/public/terrain/18/429298/176928.terrain b/public/terrain/18/429298/176928.terrain new file mode 100644 index 000000000..b4f08fa48 Binary files /dev/null and b/public/terrain/18/429298/176928.terrain differ diff --git a/public/terrain/18/429298/176929.terrain b/public/terrain/18/429298/176929.terrain new file mode 100644 index 000000000..6264c7918 Binary files /dev/null and b/public/terrain/18/429298/176929.terrain differ diff --git a/public/terrain/18/429298/176930.terrain b/public/terrain/18/429298/176930.terrain new file mode 100644 index 000000000..3f0cad20b Binary files /dev/null and b/public/terrain/18/429298/176930.terrain differ diff --git a/public/terrain/18/429298/176931.terrain b/public/terrain/18/429298/176931.terrain new file mode 100644 index 000000000..b1a42f38b Binary files /dev/null and b/public/terrain/18/429298/176931.terrain differ diff --git a/public/terrain/18/429298/176932.terrain b/public/terrain/18/429298/176932.terrain new file mode 100644 index 000000000..90490207d Binary files /dev/null and b/public/terrain/18/429298/176932.terrain differ diff --git a/public/terrain/18/429298/176933.terrain b/public/terrain/18/429298/176933.terrain new file mode 100644 index 000000000..6b1628c5e Binary files /dev/null and b/public/terrain/18/429298/176933.terrain differ diff --git a/public/terrain/18/429298/176934.terrain b/public/terrain/18/429298/176934.terrain new file mode 100644 index 000000000..421be4890 Binary files /dev/null and b/public/terrain/18/429298/176934.terrain differ diff --git a/public/terrain/18/429298/176935.terrain b/public/terrain/18/429298/176935.terrain new file mode 100644 index 000000000..d497244f1 Binary files /dev/null and b/public/terrain/18/429298/176935.terrain differ diff --git a/public/terrain/18/429298/176936.terrain b/public/terrain/18/429298/176936.terrain new file mode 100644 index 000000000..d0575a03a Binary files /dev/null and b/public/terrain/18/429298/176936.terrain differ diff --git a/public/terrain/18/429298/176937.terrain b/public/terrain/18/429298/176937.terrain new file mode 100644 index 000000000..f9d7bea30 Binary files /dev/null and b/public/terrain/18/429298/176937.terrain differ diff --git a/public/terrain/18/429298/176938.terrain b/public/terrain/18/429298/176938.terrain new file mode 100644 index 000000000..67485da7e Binary files /dev/null and b/public/terrain/18/429298/176938.terrain differ diff --git a/public/terrain/18/429298/176939.terrain b/public/terrain/18/429298/176939.terrain new file mode 100644 index 000000000..a328797d3 Binary files /dev/null and b/public/terrain/18/429298/176939.terrain differ diff --git a/public/terrain/18/429298/176940.terrain b/public/terrain/18/429298/176940.terrain new file mode 100644 index 000000000..2aafb1528 Binary files /dev/null and b/public/terrain/18/429298/176940.terrain differ diff --git a/public/terrain/18/429298/176941.terrain b/public/terrain/18/429298/176941.terrain new file mode 100644 index 000000000..8296a6467 Binary files /dev/null and b/public/terrain/18/429298/176941.terrain differ diff --git a/public/terrain/18/429298/176942.terrain b/public/terrain/18/429298/176942.terrain new file mode 100644 index 000000000..d3b6543ce Binary files /dev/null and b/public/terrain/18/429298/176942.terrain differ diff --git a/public/terrain/18/429298/176943.terrain b/public/terrain/18/429298/176943.terrain new file mode 100644 index 000000000..97e5da5ba Binary files /dev/null and b/public/terrain/18/429298/176943.terrain differ diff --git a/public/terrain/18/429298/176944.terrain b/public/terrain/18/429298/176944.terrain new file mode 100644 index 000000000..6d7370f52 Binary files /dev/null and b/public/terrain/18/429298/176944.terrain differ diff --git a/public/terrain/18/429298/176945.terrain b/public/terrain/18/429298/176945.terrain new file mode 100644 index 000000000..94fbae6fc Binary files /dev/null and b/public/terrain/18/429298/176945.terrain differ diff --git a/public/terrain/18/429298/176946.terrain b/public/terrain/18/429298/176946.terrain new file mode 100644 index 000000000..e964b4817 Binary files /dev/null and b/public/terrain/18/429298/176946.terrain differ diff --git a/public/terrain/18/429298/176947.terrain b/public/terrain/18/429298/176947.terrain new file mode 100644 index 000000000..400790241 Binary files /dev/null and b/public/terrain/18/429298/176947.terrain differ diff --git a/public/terrain/18/429298/176948.terrain b/public/terrain/18/429298/176948.terrain new file mode 100644 index 000000000..12e932462 Binary files /dev/null and b/public/terrain/18/429298/176948.terrain differ diff --git a/public/terrain/18/429298/176949.terrain b/public/terrain/18/429298/176949.terrain new file mode 100644 index 000000000..488f5aeaf Binary files /dev/null and b/public/terrain/18/429298/176949.terrain differ diff --git a/public/terrain/18/429298/176950.terrain b/public/terrain/18/429298/176950.terrain new file mode 100644 index 000000000..eca3737fe Binary files /dev/null and b/public/terrain/18/429298/176950.terrain differ diff --git a/public/terrain/18/429298/176951.terrain b/public/terrain/18/429298/176951.terrain new file mode 100644 index 000000000..51b162217 Binary files /dev/null and b/public/terrain/18/429298/176951.terrain differ diff --git a/public/terrain/18/429298/176952.terrain b/public/terrain/18/429298/176952.terrain new file mode 100644 index 000000000..59410043b Binary files /dev/null and b/public/terrain/18/429298/176952.terrain differ diff --git a/public/terrain/18/429298/176953.terrain b/public/terrain/18/429298/176953.terrain new file mode 100644 index 000000000..e7aa6ce06 Binary files /dev/null and b/public/terrain/18/429298/176953.terrain differ diff --git a/public/terrain/18/429298/176954.terrain b/public/terrain/18/429298/176954.terrain new file mode 100644 index 000000000..97d19dc3d Binary files /dev/null and b/public/terrain/18/429298/176954.terrain differ diff --git a/public/terrain/18/429298/176955.terrain b/public/terrain/18/429298/176955.terrain new file mode 100644 index 000000000..0d6f92c6e Binary files /dev/null and b/public/terrain/18/429298/176955.terrain differ diff --git a/public/terrain/18/429298/176956.terrain b/public/terrain/18/429298/176956.terrain new file mode 100644 index 000000000..724ab1cb8 Binary files /dev/null and b/public/terrain/18/429298/176956.terrain differ diff --git a/public/terrain/18/429298/176957.terrain b/public/terrain/18/429298/176957.terrain new file mode 100644 index 000000000..e55289e4d Binary files /dev/null and b/public/terrain/18/429298/176957.terrain differ diff --git a/public/terrain/18/429298/176958.terrain b/public/terrain/18/429298/176958.terrain new file mode 100644 index 000000000..aadda0da0 Binary files /dev/null and b/public/terrain/18/429298/176958.terrain differ diff --git a/public/terrain/18/429298/176959.terrain b/public/terrain/18/429298/176959.terrain new file mode 100644 index 000000000..2db4da2f3 Binary files /dev/null and b/public/terrain/18/429298/176959.terrain differ diff --git a/public/terrain/18/429298/176960.terrain b/public/terrain/18/429298/176960.terrain new file mode 100644 index 000000000..5e98406d2 Binary files /dev/null and b/public/terrain/18/429298/176960.terrain differ diff --git a/public/terrain/18/429298/176961.terrain b/public/terrain/18/429298/176961.terrain new file mode 100644 index 000000000..fd4483a5d Binary files /dev/null and b/public/terrain/18/429298/176961.terrain differ diff --git a/public/terrain/18/429298/176962.terrain b/public/terrain/18/429298/176962.terrain new file mode 100644 index 000000000..01e129d46 Binary files /dev/null and b/public/terrain/18/429298/176962.terrain differ diff --git a/public/terrain/18/429298/176963.terrain b/public/terrain/18/429298/176963.terrain new file mode 100644 index 000000000..6e4906593 Binary files /dev/null and b/public/terrain/18/429298/176963.terrain differ diff --git a/public/terrain/18/429298/176964.terrain b/public/terrain/18/429298/176964.terrain new file mode 100644 index 000000000..c39e44e44 Binary files /dev/null and b/public/terrain/18/429298/176964.terrain differ diff --git a/public/terrain/18/429298/176965.terrain b/public/terrain/18/429298/176965.terrain new file mode 100644 index 000000000..dcdd60bf8 Binary files /dev/null and b/public/terrain/18/429298/176965.terrain differ diff --git a/public/terrain/18/429298/176966.terrain b/public/terrain/18/429298/176966.terrain new file mode 100644 index 000000000..f69b96bee Binary files /dev/null and b/public/terrain/18/429298/176966.terrain differ diff --git a/public/terrain/18/429298/176967.terrain b/public/terrain/18/429298/176967.terrain new file mode 100644 index 000000000..4bc49d8c3 Binary files /dev/null and b/public/terrain/18/429298/176967.terrain differ diff --git a/public/terrain/18/429298/176968.terrain b/public/terrain/18/429298/176968.terrain new file mode 100644 index 000000000..cb5a4ae2a Binary files /dev/null and b/public/terrain/18/429298/176968.terrain differ diff --git a/public/terrain/18/429298/176969.terrain b/public/terrain/18/429298/176969.terrain new file mode 100644 index 000000000..fd16806dd Binary files /dev/null and b/public/terrain/18/429298/176969.terrain differ diff --git a/public/terrain/18/429298/176970.terrain b/public/terrain/18/429298/176970.terrain new file mode 100644 index 000000000..558c9e4be Binary files /dev/null and b/public/terrain/18/429298/176970.terrain differ diff --git a/public/terrain/18/429298/176971.terrain b/public/terrain/18/429298/176971.terrain new file mode 100644 index 000000000..0df52d09a Binary files /dev/null and b/public/terrain/18/429298/176971.terrain differ diff --git a/public/terrain/18/429298/176972.terrain b/public/terrain/18/429298/176972.terrain new file mode 100644 index 000000000..e3ff856c5 Binary files /dev/null and b/public/terrain/18/429298/176972.terrain differ diff --git a/public/terrain/18/429298/176973.terrain b/public/terrain/18/429298/176973.terrain new file mode 100644 index 000000000..0e9315abb Binary files /dev/null and b/public/terrain/18/429298/176973.terrain differ diff --git a/public/terrain/18/429298/176974.terrain b/public/terrain/18/429298/176974.terrain new file mode 100644 index 000000000..50ea57f34 Binary files /dev/null and b/public/terrain/18/429298/176974.terrain differ diff --git a/public/terrain/18/429298/176975.terrain b/public/terrain/18/429298/176975.terrain new file mode 100644 index 000000000..271591fe3 Binary files /dev/null and b/public/terrain/18/429298/176975.terrain differ diff --git a/public/terrain/18/429298/176976.terrain b/public/terrain/18/429298/176976.terrain new file mode 100644 index 000000000..16df59467 Binary files /dev/null and b/public/terrain/18/429298/176976.terrain differ diff --git a/public/terrain/18/429298/176977.terrain b/public/terrain/18/429298/176977.terrain new file mode 100644 index 000000000..d7f040674 Binary files /dev/null and b/public/terrain/18/429298/176977.terrain differ diff --git a/public/terrain/18/429298/176978.terrain b/public/terrain/18/429298/176978.terrain new file mode 100644 index 000000000..6a0e026f0 Binary files /dev/null and b/public/terrain/18/429298/176978.terrain differ diff --git a/public/terrain/18/429298/176979.terrain b/public/terrain/18/429298/176979.terrain new file mode 100644 index 000000000..dbdd28f80 Binary files /dev/null and b/public/terrain/18/429298/176979.terrain differ diff --git a/public/terrain/18/429298/176980.terrain b/public/terrain/18/429298/176980.terrain new file mode 100644 index 000000000..2f1456ca8 Binary files /dev/null and b/public/terrain/18/429298/176980.terrain differ diff --git a/public/terrain/18/429298/176981.terrain b/public/terrain/18/429298/176981.terrain new file mode 100644 index 000000000..54a640ba8 Binary files /dev/null and b/public/terrain/18/429298/176981.terrain differ diff --git a/public/terrain/18/429298/176982.terrain b/public/terrain/18/429298/176982.terrain new file mode 100644 index 000000000..6b45cfe24 Binary files /dev/null and b/public/terrain/18/429298/176982.terrain differ diff --git a/public/terrain/18/429298/176983.terrain b/public/terrain/18/429298/176983.terrain new file mode 100644 index 000000000..efee715e6 Binary files /dev/null and b/public/terrain/18/429298/176983.terrain differ diff --git a/public/terrain/18/429298/176984.terrain b/public/terrain/18/429298/176984.terrain new file mode 100644 index 000000000..7cec54aa6 Binary files /dev/null and b/public/terrain/18/429298/176984.terrain differ diff --git a/public/terrain/18/429298/176985.terrain b/public/terrain/18/429298/176985.terrain new file mode 100644 index 000000000..8b11ed3f6 Binary files /dev/null and b/public/terrain/18/429298/176985.terrain differ diff --git a/public/terrain/18/429298/176986.terrain b/public/terrain/18/429298/176986.terrain new file mode 100644 index 000000000..cb08e7baa Binary files /dev/null and b/public/terrain/18/429298/176986.terrain differ diff --git a/public/terrain/18/429298/176987.terrain b/public/terrain/18/429298/176987.terrain new file mode 100644 index 000000000..4e973a387 Binary files /dev/null and b/public/terrain/18/429298/176987.terrain differ diff --git a/public/terrain/18/429298/176988.terrain b/public/terrain/18/429298/176988.terrain new file mode 100644 index 000000000..7d037b0af Binary files /dev/null and b/public/terrain/18/429298/176988.terrain differ diff --git a/public/terrain/18/429298/176989.terrain b/public/terrain/18/429298/176989.terrain new file mode 100644 index 000000000..f591397aa Binary files /dev/null and b/public/terrain/18/429298/176989.terrain differ diff --git a/public/terrain/18/429298/176990.terrain b/public/terrain/18/429298/176990.terrain new file mode 100644 index 000000000..987205a13 Binary files /dev/null and b/public/terrain/18/429298/176990.terrain differ diff --git a/public/terrain/18/429298/176991.terrain b/public/terrain/18/429298/176991.terrain new file mode 100644 index 000000000..a17669736 Binary files /dev/null and b/public/terrain/18/429298/176991.terrain differ diff --git a/public/terrain/18/429298/176992.terrain b/public/terrain/18/429298/176992.terrain new file mode 100644 index 000000000..93b86b0b6 Binary files /dev/null and b/public/terrain/18/429298/176992.terrain differ diff --git a/public/terrain/18/429298/176993.terrain b/public/terrain/18/429298/176993.terrain new file mode 100644 index 000000000..b114aea88 Binary files /dev/null and b/public/terrain/18/429298/176993.terrain differ diff --git a/public/terrain/18/429298/176994.terrain b/public/terrain/18/429298/176994.terrain new file mode 100644 index 000000000..62c3746d4 Binary files /dev/null and b/public/terrain/18/429298/176994.terrain differ diff --git a/public/terrain/18/429298/176995.terrain b/public/terrain/18/429298/176995.terrain new file mode 100644 index 000000000..2a972524b Binary files /dev/null and b/public/terrain/18/429298/176995.terrain differ diff --git a/public/terrain/18/429298/176996.terrain b/public/terrain/18/429298/176996.terrain new file mode 100644 index 000000000..4645fe0f0 Binary files /dev/null and b/public/terrain/18/429298/176996.terrain differ diff --git a/public/terrain/18/429298/176997.terrain b/public/terrain/18/429298/176997.terrain new file mode 100644 index 000000000..2a6a85e4c Binary files /dev/null and b/public/terrain/18/429298/176997.terrain differ diff --git a/public/terrain/18/429298/176998.terrain b/public/terrain/18/429298/176998.terrain new file mode 100644 index 000000000..f7a05f537 Binary files /dev/null and b/public/terrain/18/429298/176998.terrain differ diff --git a/public/terrain/18/429298/176999.terrain b/public/terrain/18/429298/176999.terrain new file mode 100644 index 000000000..986d15bb5 Binary files /dev/null and b/public/terrain/18/429298/176999.terrain differ diff --git a/public/terrain/18/429298/177000.terrain b/public/terrain/18/429298/177000.terrain new file mode 100644 index 000000000..1bc500c7c Binary files /dev/null and b/public/terrain/18/429298/177000.terrain differ diff --git a/public/terrain/18/429298/177001.terrain b/public/terrain/18/429298/177001.terrain new file mode 100644 index 000000000..d7c87b6e4 Binary files /dev/null and b/public/terrain/18/429298/177001.terrain differ diff --git a/public/terrain/18/429298/177002.terrain b/public/terrain/18/429298/177002.terrain new file mode 100644 index 000000000..ebf5335b2 Binary files /dev/null and b/public/terrain/18/429298/177002.terrain differ diff --git a/public/terrain/18/429298/177003.terrain b/public/terrain/18/429298/177003.terrain new file mode 100644 index 000000000..0f4540572 Binary files /dev/null and b/public/terrain/18/429298/177003.terrain differ diff --git a/public/terrain/18/429298/177004.terrain b/public/terrain/18/429298/177004.terrain new file mode 100644 index 000000000..f86291562 Binary files /dev/null and b/public/terrain/18/429298/177004.terrain differ diff --git a/public/terrain/18/429298/177005.terrain b/public/terrain/18/429298/177005.terrain new file mode 100644 index 000000000..2e047d407 Binary files /dev/null and b/public/terrain/18/429298/177005.terrain differ diff --git a/public/terrain/18/429298/177006.terrain b/public/terrain/18/429298/177006.terrain new file mode 100644 index 000000000..3a935abca Binary files /dev/null and b/public/terrain/18/429298/177006.terrain differ diff --git a/public/terrain/18/429298/177007.terrain b/public/terrain/18/429298/177007.terrain new file mode 100644 index 000000000..2b5a28d80 Binary files /dev/null and b/public/terrain/18/429298/177007.terrain differ diff --git a/public/terrain/18/429298/177008.terrain b/public/terrain/18/429298/177008.terrain new file mode 100644 index 000000000..6bad8e05f Binary files /dev/null and b/public/terrain/18/429298/177008.terrain differ diff --git a/public/terrain/18/429298/177009.terrain b/public/terrain/18/429298/177009.terrain new file mode 100644 index 000000000..0c1e6ed56 Binary files /dev/null and b/public/terrain/18/429298/177009.terrain differ diff --git a/public/terrain/18/429298/177010.terrain b/public/terrain/18/429298/177010.terrain new file mode 100644 index 000000000..02b77aad9 Binary files /dev/null and b/public/terrain/18/429298/177010.terrain differ diff --git a/public/terrain/18/429298/177011.terrain b/public/terrain/18/429298/177011.terrain new file mode 100644 index 000000000..adfa1c773 Binary files /dev/null and b/public/terrain/18/429298/177011.terrain differ diff --git a/public/terrain/18/429298/177012.terrain b/public/terrain/18/429298/177012.terrain new file mode 100644 index 000000000..3198f1950 Binary files /dev/null and b/public/terrain/18/429298/177012.terrain differ diff --git a/public/terrain/18/429298/177013.terrain b/public/terrain/18/429298/177013.terrain new file mode 100644 index 000000000..2de2cc3e3 Binary files /dev/null and b/public/terrain/18/429298/177013.terrain differ diff --git a/public/terrain/18/429298/177014.terrain b/public/terrain/18/429298/177014.terrain new file mode 100644 index 000000000..0011006c7 Binary files /dev/null and b/public/terrain/18/429298/177014.terrain differ diff --git a/public/terrain/18/429298/177015.terrain b/public/terrain/18/429298/177015.terrain new file mode 100644 index 000000000..8c7866eaa Binary files /dev/null and b/public/terrain/18/429298/177015.terrain differ diff --git a/public/terrain/18/429298/177016.terrain b/public/terrain/18/429298/177016.terrain new file mode 100644 index 000000000..57798533d Binary files /dev/null and b/public/terrain/18/429298/177016.terrain differ diff --git a/public/terrain/18/429298/177017.terrain b/public/terrain/18/429298/177017.terrain new file mode 100644 index 000000000..9201098f3 Binary files /dev/null and b/public/terrain/18/429298/177017.terrain differ diff --git a/public/terrain/18/429298/177018.terrain b/public/terrain/18/429298/177018.terrain new file mode 100644 index 000000000..9f56bcead Binary files /dev/null and b/public/terrain/18/429298/177018.terrain differ diff --git a/public/terrain/18/429298/177019.terrain b/public/terrain/18/429298/177019.terrain new file mode 100644 index 000000000..9e1e1c094 Binary files /dev/null and b/public/terrain/18/429298/177019.terrain differ diff --git a/public/terrain/18/429298/177020.terrain b/public/terrain/18/429298/177020.terrain new file mode 100644 index 000000000..7995fc281 Binary files /dev/null and b/public/terrain/18/429298/177020.terrain differ diff --git a/public/terrain/18/429298/177021.terrain b/public/terrain/18/429298/177021.terrain new file mode 100644 index 000000000..3f04e951b Binary files /dev/null and b/public/terrain/18/429298/177021.terrain differ diff --git a/public/terrain/18/429298/177022.terrain b/public/terrain/18/429298/177022.terrain new file mode 100644 index 000000000..b852821ef Binary files /dev/null and b/public/terrain/18/429298/177022.terrain differ diff --git a/public/terrain/18/429298/177023.terrain b/public/terrain/18/429298/177023.terrain new file mode 100644 index 000000000..ee83fb499 Binary files /dev/null and b/public/terrain/18/429298/177023.terrain differ diff --git a/public/terrain/18/429298/177024.terrain b/public/terrain/18/429298/177024.terrain new file mode 100644 index 000000000..a1efdd0b7 Binary files /dev/null and b/public/terrain/18/429298/177024.terrain differ diff --git a/public/terrain/18/429298/177025.terrain b/public/terrain/18/429298/177025.terrain new file mode 100644 index 000000000..a6af77176 Binary files /dev/null and b/public/terrain/18/429298/177025.terrain differ diff --git a/public/terrain/18/429298/177026.terrain b/public/terrain/18/429298/177026.terrain new file mode 100644 index 000000000..068c7c855 Binary files /dev/null and b/public/terrain/18/429298/177026.terrain differ diff --git a/public/terrain/18/429298/177027.terrain b/public/terrain/18/429298/177027.terrain new file mode 100644 index 000000000..417cf217c Binary files /dev/null and b/public/terrain/18/429298/177027.terrain differ diff --git a/public/terrain/18/429298/177028.terrain b/public/terrain/18/429298/177028.terrain new file mode 100644 index 000000000..f2430011f Binary files /dev/null and b/public/terrain/18/429298/177028.terrain differ diff --git a/public/terrain/18/429298/177029.terrain b/public/terrain/18/429298/177029.terrain new file mode 100644 index 000000000..5c7566a29 Binary files /dev/null and b/public/terrain/18/429298/177029.terrain differ diff --git a/public/terrain/18/429299/176871.terrain b/public/terrain/18/429299/176871.terrain new file mode 100644 index 000000000..69507a50c Binary files /dev/null and b/public/terrain/18/429299/176871.terrain differ diff --git a/public/terrain/18/429299/176872.terrain b/public/terrain/18/429299/176872.terrain new file mode 100644 index 000000000..7fa0703c1 Binary files /dev/null and b/public/terrain/18/429299/176872.terrain differ diff --git a/public/terrain/18/429299/176873.terrain b/public/terrain/18/429299/176873.terrain new file mode 100644 index 000000000..c69227a88 Binary files /dev/null and b/public/terrain/18/429299/176873.terrain differ diff --git a/public/terrain/18/429299/176874.terrain b/public/terrain/18/429299/176874.terrain new file mode 100644 index 000000000..055d5c09b Binary files /dev/null and b/public/terrain/18/429299/176874.terrain differ diff --git a/public/terrain/18/429299/176875.terrain b/public/terrain/18/429299/176875.terrain new file mode 100644 index 000000000..1c88fa2ec Binary files /dev/null and b/public/terrain/18/429299/176875.terrain differ diff --git a/public/terrain/18/429299/176876.terrain b/public/terrain/18/429299/176876.terrain new file mode 100644 index 000000000..18634d0fb Binary files /dev/null and b/public/terrain/18/429299/176876.terrain differ diff --git a/public/terrain/18/429299/176877.terrain b/public/terrain/18/429299/176877.terrain new file mode 100644 index 000000000..22cb82892 Binary files /dev/null and b/public/terrain/18/429299/176877.terrain differ diff --git a/public/terrain/18/429299/176878.terrain b/public/terrain/18/429299/176878.terrain new file mode 100644 index 000000000..a556380b0 Binary files /dev/null and b/public/terrain/18/429299/176878.terrain differ diff --git a/public/terrain/18/429299/176879.terrain b/public/terrain/18/429299/176879.terrain new file mode 100644 index 000000000..d7ef3ec25 Binary files /dev/null and b/public/terrain/18/429299/176879.terrain differ diff --git a/public/terrain/18/429299/176880.terrain b/public/terrain/18/429299/176880.terrain new file mode 100644 index 000000000..98f7446a8 Binary files /dev/null and b/public/terrain/18/429299/176880.terrain differ diff --git a/public/terrain/18/429299/176881.terrain b/public/terrain/18/429299/176881.terrain new file mode 100644 index 000000000..e5e6e7ad3 Binary files /dev/null and b/public/terrain/18/429299/176881.terrain differ diff --git a/public/terrain/18/429299/176882.terrain b/public/terrain/18/429299/176882.terrain new file mode 100644 index 000000000..099082506 Binary files /dev/null and b/public/terrain/18/429299/176882.terrain differ diff --git a/public/terrain/18/429299/176883.terrain b/public/terrain/18/429299/176883.terrain new file mode 100644 index 000000000..b17ce2cba Binary files /dev/null and b/public/terrain/18/429299/176883.terrain differ diff --git a/public/terrain/18/429299/176884.terrain b/public/terrain/18/429299/176884.terrain new file mode 100644 index 000000000..2f96d4ade Binary files /dev/null and b/public/terrain/18/429299/176884.terrain differ diff --git a/public/terrain/18/429299/176885.terrain b/public/terrain/18/429299/176885.terrain new file mode 100644 index 000000000..a89697406 Binary files /dev/null and b/public/terrain/18/429299/176885.terrain differ diff --git a/public/terrain/18/429299/176886.terrain b/public/terrain/18/429299/176886.terrain new file mode 100644 index 000000000..3daaf31d8 Binary files /dev/null and b/public/terrain/18/429299/176886.terrain differ diff --git a/public/terrain/18/429299/176887.terrain b/public/terrain/18/429299/176887.terrain new file mode 100644 index 000000000..014571fed Binary files /dev/null and b/public/terrain/18/429299/176887.terrain differ diff --git a/public/terrain/18/429299/176888.terrain b/public/terrain/18/429299/176888.terrain new file mode 100644 index 000000000..4bbebd6b3 Binary files /dev/null and b/public/terrain/18/429299/176888.terrain differ diff --git a/public/terrain/18/429299/176889.terrain b/public/terrain/18/429299/176889.terrain new file mode 100644 index 000000000..8d26cc228 Binary files /dev/null and b/public/terrain/18/429299/176889.terrain differ diff --git a/public/terrain/18/429299/176890.terrain b/public/terrain/18/429299/176890.terrain new file mode 100644 index 000000000..73c3f6344 Binary files /dev/null and b/public/terrain/18/429299/176890.terrain differ diff --git a/public/terrain/18/429299/176891.terrain b/public/terrain/18/429299/176891.terrain new file mode 100644 index 000000000..a7fdc38dc Binary files /dev/null and b/public/terrain/18/429299/176891.terrain differ diff --git a/public/terrain/18/429299/176892.terrain b/public/terrain/18/429299/176892.terrain new file mode 100644 index 000000000..953ae8046 Binary files /dev/null and b/public/terrain/18/429299/176892.terrain differ diff --git a/public/terrain/18/429299/176893.terrain b/public/terrain/18/429299/176893.terrain new file mode 100644 index 000000000..cf9731c3c Binary files /dev/null and b/public/terrain/18/429299/176893.terrain differ diff --git a/public/terrain/18/429299/176894.terrain b/public/terrain/18/429299/176894.terrain new file mode 100644 index 000000000..b0308bf00 Binary files /dev/null and b/public/terrain/18/429299/176894.terrain differ diff --git a/public/terrain/18/429299/176895.terrain b/public/terrain/18/429299/176895.terrain new file mode 100644 index 000000000..3ea5bc6f7 Binary files /dev/null and b/public/terrain/18/429299/176895.terrain differ diff --git a/public/terrain/18/429299/176896.terrain b/public/terrain/18/429299/176896.terrain new file mode 100644 index 000000000..7b2c703c0 Binary files /dev/null and b/public/terrain/18/429299/176896.terrain differ diff --git a/public/terrain/18/429299/176897.terrain b/public/terrain/18/429299/176897.terrain new file mode 100644 index 000000000..db2ee2715 Binary files /dev/null and b/public/terrain/18/429299/176897.terrain differ diff --git a/public/terrain/18/429299/176898.terrain b/public/terrain/18/429299/176898.terrain new file mode 100644 index 000000000..d33e6715d Binary files /dev/null and b/public/terrain/18/429299/176898.terrain differ diff --git a/public/terrain/18/429299/176899.terrain b/public/terrain/18/429299/176899.terrain new file mode 100644 index 000000000..a51cb393e Binary files /dev/null and b/public/terrain/18/429299/176899.terrain differ diff --git a/public/terrain/18/429299/176900.terrain b/public/terrain/18/429299/176900.terrain new file mode 100644 index 000000000..a8f2de825 Binary files /dev/null and b/public/terrain/18/429299/176900.terrain differ diff --git a/public/terrain/18/429299/176901.terrain b/public/terrain/18/429299/176901.terrain new file mode 100644 index 000000000..c7809791b Binary files /dev/null and b/public/terrain/18/429299/176901.terrain differ diff --git a/public/terrain/18/429299/176902.terrain b/public/terrain/18/429299/176902.terrain new file mode 100644 index 000000000..8cc741233 Binary files /dev/null and b/public/terrain/18/429299/176902.terrain differ diff --git a/public/terrain/18/429299/176903.terrain b/public/terrain/18/429299/176903.terrain new file mode 100644 index 000000000..ab56476c0 Binary files /dev/null and b/public/terrain/18/429299/176903.terrain differ diff --git a/public/terrain/18/429299/176904.terrain b/public/terrain/18/429299/176904.terrain new file mode 100644 index 000000000..a58149a68 Binary files /dev/null and b/public/terrain/18/429299/176904.terrain differ diff --git a/public/terrain/18/429299/176905.terrain b/public/terrain/18/429299/176905.terrain new file mode 100644 index 000000000..b30e15a4a Binary files /dev/null and b/public/terrain/18/429299/176905.terrain differ diff --git a/public/terrain/18/429299/176906.terrain b/public/terrain/18/429299/176906.terrain new file mode 100644 index 000000000..382528c3c Binary files /dev/null and b/public/terrain/18/429299/176906.terrain differ diff --git a/public/terrain/18/429299/176907.terrain b/public/terrain/18/429299/176907.terrain new file mode 100644 index 000000000..d7a6a2fea Binary files /dev/null and b/public/terrain/18/429299/176907.terrain differ diff --git a/public/terrain/18/429299/176908.terrain b/public/terrain/18/429299/176908.terrain new file mode 100644 index 000000000..cbb8bce64 Binary files /dev/null and b/public/terrain/18/429299/176908.terrain differ diff --git a/public/terrain/18/429299/176909.terrain b/public/terrain/18/429299/176909.terrain new file mode 100644 index 000000000..a6144b65c Binary files /dev/null and b/public/terrain/18/429299/176909.terrain differ diff --git a/public/terrain/18/429299/176910.terrain b/public/terrain/18/429299/176910.terrain new file mode 100644 index 000000000..651c4e543 Binary files /dev/null and b/public/terrain/18/429299/176910.terrain differ diff --git a/public/terrain/18/429299/176911.terrain b/public/terrain/18/429299/176911.terrain new file mode 100644 index 000000000..51b8b70ce Binary files /dev/null and b/public/terrain/18/429299/176911.terrain differ diff --git a/public/terrain/18/429299/176912.terrain b/public/terrain/18/429299/176912.terrain new file mode 100644 index 000000000..37ad23b97 Binary files /dev/null and b/public/terrain/18/429299/176912.terrain differ diff --git a/public/terrain/18/429299/176913.terrain b/public/terrain/18/429299/176913.terrain new file mode 100644 index 000000000..4cbfc4a8e Binary files /dev/null and b/public/terrain/18/429299/176913.terrain differ diff --git a/public/terrain/18/429299/176914.terrain b/public/terrain/18/429299/176914.terrain new file mode 100644 index 000000000..2ca8e9134 Binary files /dev/null and b/public/terrain/18/429299/176914.terrain differ diff --git a/public/terrain/18/429299/176915.terrain b/public/terrain/18/429299/176915.terrain new file mode 100644 index 000000000..d5d77d88f Binary files /dev/null and b/public/terrain/18/429299/176915.terrain differ diff --git a/public/terrain/18/429299/176916.terrain b/public/terrain/18/429299/176916.terrain new file mode 100644 index 000000000..1fa37121a Binary files /dev/null and b/public/terrain/18/429299/176916.terrain differ diff --git a/public/terrain/18/429299/176917.terrain b/public/terrain/18/429299/176917.terrain new file mode 100644 index 000000000..51f633607 Binary files /dev/null and b/public/terrain/18/429299/176917.terrain differ diff --git a/public/terrain/18/429299/176918.terrain b/public/terrain/18/429299/176918.terrain new file mode 100644 index 000000000..c397e1f82 Binary files /dev/null and b/public/terrain/18/429299/176918.terrain differ diff --git a/public/terrain/18/429299/176919.terrain b/public/terrain/18/429299/176919.terrain new file mode 100644 index 000000000..8e1b41b79 Binary files /dev/null and b/public/terrain/18/429299/176919.terrain differ diff --git a/public/terrain/18/429299/176920.terrain b/public/terrain/18/429299/176920.terrain new file mode 100644 index 000000000..c2c99dfc9 Binary files /dev/null and b/public/terrain/18/429299/176920.terrain differ diff --git a/public/terrain/18/429299/176921.terrain b/public/terrain/18/429299/176921.terrain new file mode 100644 index 000000000..3ff2fc379 Binary files /dev/null and b/public/terrain/18/429299/176921.terrain differ diff --git a/public/terrain/18/429299/176922.terrain b/public/terrain/18/429299/176922.terrain new file mode 100644 index 000000000..49ad20f24 Binary files /dev/null and b/public/terrain/18/429299/176922.terrain differ diff --git a/public/terrain/18/429299/176923.terrain b/public/terrain/18/429299/176923.terrain new file mode 100644 index 000000000..e6523a8c1 Binary files /dev/null and b/public/terrain/18/429299/176923.terrain differ diff --git a/public/terrain/18/429299/176924.terrain b/public/terrain/18/429299/176924.terrain new file mode 100644 index 000000000..6f00c3c7d Binary files /dev/null and b/public/terrain/18/429299/176924.terrain differ diff --git a/public/terrain/18/429299/176925.terrain b/public/terrain/18/429299/176925.terrain new file mode 100644 index 000000000..78822e1b2 Binary files /dev/null and b/public/terrain/18/429299/176925.terrain differ diff --git a/public/terrain/18/429299/176926.terrain b/public/terrain/18/429299/176926.terrain new file mode 100644 index 000000000..1944b530e Binary files /dev/null and b/public/terrain/18/429299/176926.terrain differ diff --git a/public/terrain/18/429299/176927.terrain b/public/terrain/18/429299/176927.terrain new file mode 100644 index 000000000..b89899060 Binary files /dev/null and b/public/terrain/18/429299/176927.terrain differ diff --git a/public/terrain/18/429299/176928.terrain b/public/terrain/18/429299/176928.terrain new file mode 100644 index 000000000..d060bfa35 Binary files /dev/null and b/public/terrain/18/429299/176928.terrain differ diff --git a/public/terrain/18/429299/176929.terrain b/public/terrain/18/429299/176929.terrain new file mode 100644 index 000000000..62f82a9cf Binary files /dev/null and b/public/terrain/18/429299/176929.terrain differ diff --git a/public/terrain/18/429299/176930.terrain b/public/terrain/18/429299/176930.terrain new file mode 100644 index 000000000..9955025a4 Binary files /dev/null and b/public/terrain/18/429299/176930.terrain differ diff --git a/public/terrain/18/429299/176931.terrain b/public/terrain/18/429299/176931.terrain new file mode 100644 index 000000000..4c819a98a Binary files /dev/null and b/public/terrain/18/429299/176931.terrain differ diff --git a/public/terrain/18/429299/176932.terrain b/public/terrain/18/429299/176932.terrain new file mode 100644 index 000000000..47169a231 Binary files /dev/null and b/public/terrain/18/429299/176932.terrain differ diff --git a/public/terrain/18/429299/176933.terrain b/public/terrain/18/429299/176933.terrain new file mode 100644 index 000000000..4843330ba Binary files /dev/null and b/public/terrain/18/429299/176933.terrain differ diff --git a/public/terrain/18/429299/176934.terrain b/public/terrain/18/429299/176934.terrain new file mode 100644 index 000000000..8daa1be2b Binary files /dev/null and b/public/terrain/18/429299/176934.terrain differ diff --git a/public/terrain/18/429299/176935.terrain b/public/terrain/18/429299/176935.terrain new file mode 100644 index 000000000..1d243d974 Binary files /dev/null and b/public/terrain/18/429299/176935.terrain differ diff --git a/public/terrain/18/429299/176936.terrain b/public/terrain/18/429299/176936.terrain new file mode 100644 index 000000000..14dc272c4 Binary files /dev/null and b/public/terrain/18/429299/176936.terrain differ diff --git a/public/terrain/18/429299/176937.terrain b/public/terrain/18/429299/176937.terrain new file mode 100644 index 000000000..59d6694b8 Binary files /dev/null and b/public/terrain/18/429299/176937.terrain differ diff --git a/public/terrain/18/429299/176938.terrain b/public/terrain/18/429299/176938.terrain new file mode 100644 index 000000000..d9b3991d3 Binary files /dev/null and b/public/terrain/18/429299/176938.terrain differ diff --git a/public/terrain/18/429299/176939.terrain b/public/terrain/18/429299/176939.terrain new file mode 100644 index 000000000..f74665d68 Binary files /dev/null and b/public/terrain/18/429299/176939.terrain differ diff --git a/public/terrain/18/429299/176940.terrain b/public/terrain/18/429299/176940.terrain new file mode 100644 index 000000000..64ca2f19a Binary files /dev/null and b/public/terrain/18/429299/176940.terrain differ diff --git a/public/terrain/18/429299/176941.terrain b/public/terrain/18/429299/176941.terrain new file mode 100644 index 000000000..2e5c02ad3 Binary files /dev/null and b/public/terrain/18/429299/176941.terrain differ diff --git a/public/terrain/18/429299/176942.terrain b/public/terrain/18/429299/176942.terrain new file mode 100644 index 000000000..e6b598324 Binary files /dev/null and b/public/terrain/18/429299/176942.terrain differ diff --git a/public/terrain/18/429299/176943.terrain b/public/terrain/18/429299/176943.terrain new file mode 100644 index 000000000..1317608ff Binary files /dev/null and b/public/terrain/18/429299/176943.terrain differ diff --git a/public/terrain/18/429299/176944.terrain b/public/terrain/18/429299/176944.terrain new file mode 100644 index 000000000..0e1fc35e7 Binary files /dev/null and b/public/terrain/18/429299/176944.terrain differ diff --git a/public/terrain/18/429299/176945.terrain b/public/terrain/18/429299/176945.terrain new file mode 100644 index 000000000..02756ea43 Binary files /dev/null and b/public/terrain/18/429299/176945.terrain differ diff --git a/public/terrain/18/429299/176946.terrain b/public/terrain/18/429299/176946.terrain new file mode 100644 index 000000000..d31cb4475 Binary files /dev/null and b/public/terrain/18/429299/176946.terrain differ diff --git a/public/terrain/18/429299/176947.terrain b/public/terrain/18/429299/176947.terrain new file mode 100644 index 000000000..28186dffd Binary files /dev/null and b/public/terrain/18/429299/176947.terrain differ diff --git a/public/terrain/18/429299/176948.terrain b/public/terrain/18/429299/176948.terrain new file mode 100644 index 000000000..e413fcbac Binary files /dev/null and b/public/terrain/18/429299/176948.terrain differ diff --git a/public/terrain/18/429299/176949.terrain b/public/terrain/18/429299/176949.terrain new file mode 100644 index 000000000..a09ab8ec2 Binary files /dev/null and b/public/terrain/18/429299/176949.terrain differ diff --git a/public/terrain/18/429299/176950.terrain b/public/terrain/18/429299/176950.terrain new file mode 100644 index 000000000..28240f6a8 Binary files /dev/null and b/public/terrain/18/429299/176950.terrain differ diff --git a/public/terrain/18/429299/176951.terrain b/public/terrain/18/429299/176951.terrain new file mode 100644 index 000000000..878340c09 Binary files /dev/null and b/public/terrain/18/429299/176951.terrain differ diff --git a/public/terrain/18/429299/176952.terrain b/public/terrain/18/429299/176952.terrain new file mode 100644 index 000000000..f9bc35670 Binary files /dev/null and b/public/terrain/18/429299/176952.terrain differ diff --git a/public/terrain/18/429299/176953.terrain b/public/terrain/18/429299/176953.terrain new file mode 100644 index 000000000..b529fe471 Binary files /dev/null and b/public/terrain/18/429299/176953.terrain differ diff --git a/public/terrain/18/429299/176954.terrain b/public/terrain/18/429299/176954.terrain new file mode 100644 index 000000000..22aee2478 Binary files /dev/null and b/public/terrain/18/429299/176954.terrain differ diff --git a/public/terrain/18/429299/176955.terrain b/public/terrain/18/429299/176955.terrain new file mode 100644 index 000000000..ae3be257e Binary files /dev/null and b/public/terrain/18/429299/176955.terrain differ diff --git a/public/terrain/18/429299/176956.terrain b/public/terrain/18/429299/176956.terrain new file mode 100644 index 000000000..463247810 Binary files /dev/null and b/public/terrain/18/429299/176956.terrain differ diff --git a/public/terrain/18/429299/176957.terrain b/public/terrain/18/429299/176957.terrain new file mode 100644 index 000000000..11480ea38 Binary files /dev/null and b/public/terrain/18/429299/176957.terrain differ diff --git a/public/terrain/18/429299/176958.terrain b/public/terrain/18/429299/176958.terrain new file mode 100644 index 000000000..452cbb735 Binary files /dev/null and b/public/terrain/18/429299/176958.terrain differ diff --git a/public/terrain/18/429299/176959.terrain b/public/terrain/18/429299/176959.terrain new file mode 100644 index 000000000..ca64b269e Binary files /dev/null and b/public/terrain/18/429299/176959.terrain differ diff --git a/public/terrain/18/429299/176960.terrain b/public/terrain/18/429299/176960.terrain new file mode 100644 index 000000000..16be53e73 Binary files /dev/null and b/public/terrain/18/429299/176960.terrain differ diff --git a/public/terrain/18/429299/176961.terrain b/public/terrain/18/429299/176961.terrain new file mode 100644 index 000000000..4249fb0c7 Binary files /dev/null and b/public/terrain/18/429299/176961.terrain differ diff --git a/public/terrain/18/429299/176962.terrain b/public/terrain/18/429299/176962.terrain new file mode 100644 index 000000000..7f96d5d60 Binary files /dev/null and b/public/terrain/18/429299/176962.terrain differ diff --git a/public/terrain/18/429299/176963.terrain b/public/terrain/18/429299/176963.terrain new file mode 100644 index 000000000..702a6e1f6 Binary files /dev/null and b/public/terrain/18/429299/176963.terrain differ diff --git a/public/terrain/18/429299/176964.terrain b/public/terrain/18/429299/176964.terrain new file mode 100644 index 000000000..14a11d284 Binary files /dev/null and b/public/terrain/18/429299/176964.terrain differ diff --git a/public/terrain/18/429299/176965.terrain b/public/terrain/18/429299/176965.terrain new file mode 100644 index 000000000..d378d7e65 Binary files /dev/null and b/public/terrain/18/429299/176965.terrain differ diff --git a/public/terrain/18/429299/176966.terrain b/public/terrain/18/429299/176966.terrain new file mode 100644 index 000000000..113dace03 Binary files /dev/null and b/public/terrain/18/429299/176966.terrain differ diff --git a/public/terrain/18/429299/176967.terrain b/public/terrain/18/429299/176967.terrain new file mode 100644 index 000000000..b095fac90 Binary files /dev/null and b/public/terrain/18/429299/176967.terrain differ diff --git a/public/terrain/18/429299/176968.terrain b/public/terrain/18/429299/176968.terrain new file mode 100644 index 000000000..f04c7df47 Binary files /dev/null and b/public/terrain/18/429299/176968.terrain differ diff --git a/public/terrain/18/429299/176969.terrain b/public/terrain/18/429299/176969.terrain new file mode 100644 index 000000000..481796203 Binary files /dev/null and b/public/terrain/18/429299/176969.terrain differ diff --git a/public/terrain/18/429299/176970.terrain b/public/terrain/18/429299/176970.terrain new file mode 100644 index 000000000..9451288f9 Binary files /dev/null and b/public/terrain/18/429299/176970.terrain differ diff --git a/public/terrain/18/429299/176971.terrain b/public/terrain/18/429299/176971.terrain new file mode 100644 index 000000000..064a12097 Binary files /dev/null and b/public/terrain/18/429299/176971.terrain differ diff --git a/public/terrain/18/429299/176972.terrain b/public/terrain/18/429299/176972.terrain new file mode 100644 index 000000000..8005140dd Binary files /dev/null and b/public/terrain/18/429299/176972.terrain differ diff --git a/public/terrain/18/429299/176973.terrain b/public/terrain/18/429299/176973.terrain new file mode 100644 index 000000000..6e80dc932 Binary files /dev/null and b/public/terrain/18/429299/176973.terrain differ diff --git a/public/terrain/18/429299/176974.terrain b/public/terrain/18/429299/176974.terrain new file mode 100644 index 000000000..6f3043027 Binary files /dev/null and b/public/terrain/18/429299/176974.terrain differ diff --git a/public/terrain/18/429299/176975.terrain b/public/terrain/18/429299/176975.terrain new file mode 100644 index 000000000..e55729693 Binary files /dev/null and b/public/terrain/18/429299/176975.terrain differ diff --git a/public/terrain/18/429299/176976.terrain b/public/terrain/18/429299/176976.terrain new file mode 100644 index 000000000..bcbb96205 Binary files /dev/null and b/public/terrain/18/429299/176976.terrain differ diff --git a/public/terrain/18/429299/176977.terrain b/public/terrain/18/429299/176977.terrain new file mode 100644 index 000000000..ee0f018e5 Binary files /dev/null and b/public/terrain/18/429299/176977.terrain differ diff --git a/public/terrain/18/429299/176978.terrain b/public/terrain/18/429299/176978.terrain new file mode 100644 index 000000000..11e7e8518 Binary files /dev/null and b/public/terrain/18/429299/176978.terrain differ diff --git a/public/terrain/18/429299/176979.terrain b/public/terrain/18/429299/176979.terrain new file mode 100644 index 000000000..b63bb8eb6 Binary files /dev/null and b/public/terrain/18/429299/176979.terrain differ diff --git a/public/terrain/18/429299/176980.terrain b/public/terrain/18/429299/176980.terrain new file mode 100644 index 000000000..5a7f637f0 Binary files /dev/null and b/public/terrain/18/429299/176980.terrain differ diff --git a/public/terrain/18/429299/176981.terrain b/public/terrain/18/429299/176981.terrain new file mode 100644 index 000000000..5be3dd076 Binary files /dev/null and b/public/terrain/18/429299/176981.terrain differ diff --git a/public/terrain/18/429299/176982.terrain b/public/terrain/18/429299/176982.terrain new file mode 100644 index 000000000..9e5db3efd Binary files /dev/null and b/public/terrain/18/429299/176982.terrain differ diff --git a/public/terrain/18/429299/176983.terrain b/public/terrain/18/429299/176983.terrain new file mode 100644 index 000000000..45eea293b Binary files /dev/null and b/public/terrain/18/429299/176983.terrain differ diff --git a/public/terrain/18/429299/176984.terrain b/public/terrain/18/429299/176984.terrain new file mode 100644 index 000000000..8133b441e Binary files /dev/null and b/public/terrain/18/429299/176984.terrain differ diff --git a/public/terrain/18/429299/176985.terrain b/public/terrain/18/429299/176985.terrain new file mode 100644 index 000000000..c17c12855 Binary files /dev/null and b/public/terrain/18/429299/176985.terrain differ diff --git a/public/terrain/18/429299/176986.terrain b/public/terrain/18/429299/176986.terrain new file mode 100644 index 000000000..24fece59c Binary files /dev/null and b/public/terrain/18/429299/176986.terrain differ diff --git a/public/terrain/18/429299/176987.terrain b/public/terrain/18/429299/176987.terrain new file mode 100644 index 000000000..59484cbd3 Binary files /dev/null and b/public/terrain/18/429299/176987.terrain differ diff --git a/public/terrain/18/429299/176988.terrain b/public/terrain/18/429299/176988.terrain new file mode 100644 index 000000000..4461213ae Binary files /dev/null and b/public/terrain/18/429299/176988.terrain differ diff --git a/public/terrain/18/429299/176989.terrain b/public/terrain/18/429299/176989.terrain new file mode 100644 index 000000000..99f4831a3 Binary files /dev/null and b/public/terrain/18/429299/176989.terrain differ diff --git a/public/terrain/18/429299/176990.terrain b/public/terrain/18/429299/176990.terrain new file mode 100644 index 000000000..0eafcbc42 Binary files /dev/null and b/public/terrain/18/429299/176990.terrain differ diff --git a/public/terrain/18/429299/176991.terrain b/public/terrain/18/429299/176991.terrain new file mode 100644 index 000000000..e0842ea9c Binary files /dev/null and b/public/terrain/18/429299/176991.terrain differ diff --git a/public/terrain/18/429299/176992.terrain b/public/terrain/18/429299/176992.terrain new file mode 100644 index 000000000..497f4bff6 Binary files /dev/null and b/public/terrain/18/429299/176992.terrain differ diff --git a/public/terrain/18/429299/176993.terrain b/public/terrain/18/429299/176993.terrain new file mode 100644 index 000000000..63538aab7 Binary files /dev/null and b/public/terrain/18/429299/176993.terrain differ diff --git a/public/terrain/18/429299/176994.terrain b/public/terrain/18/429299/176994.terrain new file mode 100644 index 000000000..299ccde47 Binary files /dev/null and b/public/terrain/18/429299/176994.terrain differ diff --git a/public/terrain/18/429299/176995.terrain b/public/terrain/18/429299/176995.terrain new file mode 100644 index 000000000..a057d3c68 Binary files /dev/null and b/public/terrain/18/429299/176995.terrain differ diff --git a/public/terrain/18/429299/176996.terrain b/public/terrain/18/429299/176996.terrain new file mode 100644 index 000000000..dcd9913a2 Binary files /dev/null and b/public/terrain/18/429299/176996.terrain differ diff --git a/public/terrain/18/429299/176997.terrain b/public/terrain/18/429299/176997.terrain new file mode 100644 index 000000000..6846ebc7c Binary files /dev/null and b/public/terrain/18/429299/176997.terrain differ diff --git a/public/terrain/18/429299/176998.terrain b/public/terrain/18/429299/176998.terrain new file mode 100644 index 000000000..c10fd7af4 Binary files /dev/null and b/public/terrain/18/429299/176998.terrain differ diff --git a/public/terrain/18/429299/176999.terrain b/public/terrain/18/429299/176999.terrain new file mode 100644 index 000000000..462727c5f Binary files /dev/null and b/public/terrain/18/429299/176999.terrain differ diff --git a/public/terrain/18/429299/177000.terrain b/public/terrain/18/429299/177000.terrain new file mode 100644 index 000000000..3b6afc496 Binary files /dev/null and b/public/terrain/18/429299/177000.terrain differ diff --git a/public/terrain/18/429299/177001.terrain b/public/terrain/18/429299/177001.terrain new file mode 100644 index 000000000..1a142fb82 Binary files /dev/null and b/public/terrain/18/429299/177001.terrain differ diff --git a/public/terrain/18/429299/177002.terrain b/public/terrain/18/429299/177002.terrain new file mode 100644 index 000000000..8f4652be7 Binary files /dev/null and b/public/terrain/18/429299/177002.terrain differ diff --git a/public/terrain/18/429299/177003.terrain b/public/terrain/18/429299/177003.terrain new file mode 100644 index 000000000..26bb891d4 Binary files /dev/null and b/public/terrain/18/429299/177003.terrain differ diff --git a/public/terrain/18/429299/177004.terrain b/public/terrain/18/429299/177004.terrain new file mode 100644 index 000000000..7f2cfd431 Binary files /dev/null and b/public/terrain/18/429299/177004.terrain differ diff --git a/public/terrain/18/429299/177005.terrain b/public/terrain/18/429299/177005.terrain new file mode 100644 index 000000000..71c9cf0eb Binary files /dev/null and b/public/terrain/18/429299/177005.terrain differ diff --git a/public/terrain/18/429299/177006.terrain b/public/terrain/18/429299/177006.terrain new file mode 100644 index 000000000..1fc5ed426 Binary files /dev/null and b/public/terrain/18/429299/177006.terrain differ diff --git a/public/terrain/18/429299/177007.terrain b/public/terrain/18/429299/177007.terrain new file mode 100644 index 000000000..6ea3fa013 Binary files /dev/null and b/public/terrain/18/429299/177007.terrain differ diff --git a/public/terrain/18/429299/177008.terrain b/public/terrain/18/429299/177008.terrain new file mode 100644 index 000000000..6fdbd62fe Binary files /dev/null and b/public/terrain/18/429299/177008.terrain differ diff --git a/public/terrain/18/429299/177009.terrain b/public/terrain/18/429299/177009.terrain new file mode 100644 index 000000000..844573229 Binary files /dev/null and b/public/terrain/18/429299/177009.terrain differ diff --git a/public/terrain/18/429299/177010.terrain b/public/terrain/18/429299/177010.terrain new file mode 100644 index 000000000..3f94963ed Binary files /dev/null and b/public/terrain/18/429299/177010.terrain differ diff --git a/public/terrain/18/429299/177011.terrain b/public/terrain/18/429299/177011.terrain new file mode 100644 index 000000000..a9da1b3c5 Binary files /dev/null and b/public/terrain/18/429299/177011.terrain differ diff --git a/public/terrain/18/429299/177012.terrain b/public/terrain/18/429299/177012.terrain new file mode 100644 index 000000000..3b369e62c Binary files /dev/null and b/public/terrain/18/429299/177012.terrain differ diff --git a/public/terrain/18/429299/177013.terrain b/public/terrain/18/429299/177013.terrain new file mode 100644 index 000000000..16b906e77 Binary files /dev/null and b/public/terrain/18/429299/177013.terrain differ diff --git a/public/terrain/18/429299/177014.terrain b/public/terrain/18/429299/177014.terrain new file mode 100644 index 000000000..c8be63a42 Binary files /dev/null and b/public/terrain/18/429299/177014.terrain differ diff --git a/public/terrain/18/429299/177015.terrain b/public/terrain/18/429299/177015.terrain new file mode 100644 index 000000000..547432512 Binary files /dev/null and b/public/terrain/18/429299/177015.terrain differ diff --git a/public/terrain/18/429299/177016.terrain b/public/terrain/18/429299/177016.terrain new file mode 100644 index 000000000..4be341df6 Binary files /dev/null and b/public/terrain/18/429299/177016.terrain differ diff --git a/public/terrain/18/429299/177017.terrain b/public/terrain/18/429299/177017.terrain new file mode 100644 index 000000000..47508d822 Binary files /dev/null and b/public/terrain/18/429299/177017.terrain differ diff --git a/public/terrain/18/429299/177018.terrain b/public/terrain/18/429299/177018.terrain new file mode 100644 index 000000000..abb289711 Binary files /dev/null and b/public/terrain/18/429299/177018.terrain differ diff --git a/public/terrain/18/429299/177019.terrain b/public/terrain/18/429299/177019.terrain new file mode 100644 index 000000000..0440e0607 Binary files /dev/null and b/public/terrain/18/429299/177019.terrain differ diff --git a/public/terrain/18/429299/177020.terrain b/public/terrain/18/429299/177020.terrain new file mode 100644 index 000000000..76a1a2b0a Binary files /dev/null and b/public/terrain/18/429299/177020.terrain differ diff --git a/public/terrain/18/429299/177021.terrain b/public/terrain/18/429299/177021.terrain new file mode 100644 index 000000000..a6e41bdca Binary files /dev/null and b/public/terrain/18/429299/177021.terrain differ diff --git a/public/terrain/18/429299/177022.terrain b/public/terrain/18/429299/177022.terrain new file mode 100644 index 000000000..8f32c2588 Binary files /dev/null and b/public/terrain/18/429299/177022.terrain differ diff --git a/public/terrain/18/429299/177023.terrain b/public/terrain/18/429299/177023.terrain new file mode 100644 index 000000000..1de95d276 Binary files /dev/null and b/public/terrain/18/429299/177023.terrain differ diff --git a/public/terrain/18/429299/177024.terrain b/public/terrain/18/429299/177024.terrain new file mode 100644 index 000000000..c30dfae80 Binary files /dev/null and b/public/terrain/18/429299/177024.terrain differ diff --git a/public/terrain/18/429299/177025.terrain b/public/terrain/18/429299/177025.terrain new file mode 100644 index 000000000..0a2c2f2a5 Binary files /dev/null and b/public/terrain/18/429299/177025.terrain differ diff --git a/public/terrain/18/429299/177026.terrain b/public/terrain/18/429299/177026.terrain new file mode 100644 index 000000000..1d79c3746 Binary files /dev/null and b/public/terrain/18/429299/177026.terrain differ diff --git a/public/terrain/18/429299/177027.terrain b/public/terrain/18/429299/177027.terrain new file mode 100644 index 000000000..abb8a2700 Binary files /dev/null and b/public/terrain/18/429299/177027.terrain differ diff --git a/public/terrain/18/429299/177028.terrain b/public/terrain/18/429299/177028.terrain new file mode 100644 index 000000000..9503d19db Binary files /dev/null and b/public/terrain/18/429299/177028.terrain differ diff --git a/public/terrain/18/429299/177029.terrain b/public/terrain/18/429299/177029.terrain new file mode 100644 index 000000000..fc7ff4ecd Binary files /dev/null and b/public/terrain/18/429299/177029.terrain differ diff --git a/public/terrain/18/429300/176871.terrain b/public/terrain/18/429300/176871.terrain new file mode 100644 index 000000000..c20a2786c Binary files /dev/null and b/public/terrain/18/429300/176871.terrain differ diff --git a/public/terrain/18/429300/176872.terrain b/public/terrain/18/429300/176872.terrain new file mode 100644 index 000000000..86d2371e1 Binary files /dev/null and b/public/terrain/18/429300/176872.terrain differ diff --git a/public/terrain/18/429300/176873.terrain b/public/terrain/18/429300/176873.terrain new file mode 100644 index 000000000..f4a95efc7 Binary files /dev/null and b/public/terrain/18/429300/176873.terrain differ diff --git a/public/terrain/18/429300/176874.terrain b/public/terrain/18/429300/176874.terrain new file mode 100644 index 000000000..10d633bee Binary files /dev/null and b/public/terrain/18/429300/176874.terrain differ diff --git a/public/terrain/18/429300/176875.terrain b/public/terrain/18/429300/176875.terrain new file mode 100644 index 000000000..bebfb25c2 Binary files /dev/null and b/public/terrain/18/429300/176875.terrain differ diff --git a/public/terrain/18/429300/176876.terrain b/public/terrain/18/429300/176876.terrain new file mode 100644 index 000000000..628ddacd4 Binary files /dev/null and b/public/terrain/18/429300/176876.terrain differ diff --git a/public/terrain/18/429300/176877.terrain b/public/terrain/18/429300/176877.terrain new file mode 100644 index 000000000..a051ad2a8 Binary files /dev/null and b/public/terrain/18/429300/176877.terrain differ diff --git a/public/terrain/18/429300/176878.terrain b/public/terrain/18/429300/176878.terrain new file mode 100644 index 000000000..41fe12abb Binary files /dev/null and b/public/terrain/18/429300/176878.terrain differ diff --git a/public/terrain/18/429300/176879.terrain b/public/terrain/18/429300/176879.terrain new file mode 100644 index 000000000..5245415b2 Binary files /dev/null and b/public/terrain/18/429300/176879.terrain differ diff --git a/public/terrain/18/429300/176880.terrain b/public/terrain/18/429300/176880.terrain new file mode 100644 index 000000000..d65b22ff6 Binary files /dev/null and b/public/terrain/18/429300/176880.terrain differ diff --git a/public/terrain/18/429300/176881.terrain b/public/terrain/18/429300/176881.terrain new file mode 100644 index 000000000..39f560f83 Binary files /dev/null and b/public/terrain/18/429300/176881.terrain differ diff --git a/public/terrain/18/429300/176882.terrain b/public/terrain/18/429300/176882.terrain new file mode 100644 index 000000000..32b183311 Binary files /dev/null and b/public/terrain/18/429300/176882.terrain differ diff --git a/public/terrain/18/429300/176883.terrain b/public/terrain/18/429300/176883.terrain new file mode 100644 index 000000000..6e97c5e85 Binary files /dev/null and b/public/terrain/18/429300/176883.terrain differ diff --git a/public/terrain/18/429300/176884.terrain b/public/terrain/18/429300/176884.terrain new file mode 100644 index 000000000..dd61271d6 Binary files /dev/null and b/public/terrain/18/429300/176884.terrain differ diff --git a/public/terrain/18/429300/176885.terrain b/public/terrain/18/429300/176885.terrain new file mode 100644 index 000000000..3a39276d1 Binary files /dev/null and b/public/terrain/18/429300/176885.terrain differ diff --git a/public/terrain/18/429300/176886.terrain b/public/terrain/18/429300/176886.terrain new file mode 100644 index 000000000..895566b91 Binary files /dev/null and b/public/terrain/18/429300/176886.terrain differ diff --git a/public/terrain/18/429300/176887.terrain b/public/terrain/18/429300/176887.terrain new file mode 100644 index 000000000..6c427e1be Binary files /dev/null and b/public/terrain/18/429300/176887.terrain differ diff --git a/public/terrain/18/429300/176888.terrain b/public/terrain/18/429300/176888.terrain new file mode 100644 index 000000000..e906f4533 Binary files /dev/null and b/public/terrain/18/429300/176888.terrain differ diff --git a/public/terrain/18/429300/176889.terrain b/public/terrain/18/429300/176889.terrain new file mode 100644 index 000000000..12d9fcded Binary files /dev/null and b/public/terrain/18/429300/176889.terrain differ diff --git a/public/terrain/18/429300/176890.terrain b/public/terrain/18/429300/176890.terrain new file mode 100644 index 000000000..553b98645 Binary files /dev/null and b/public/terrain/18/429300/176890.terrain differ diff --git a/public/terrain/18/429300/176891.terrain b/public/terrain/18/429300/176891.terrain new file mode 100644 index 000000000..44a2db0f5 Binary files /dev/null and b/public/terrain/18/429300/176891.terrain differ diff --git a/public/terrain/18/429300/176892.terrain b/public/terrain/18/429300/176892.terrain new file mode 100644 index 000000000..05408ed3f Binary files /dev/null and b/public/terrain/18/429300/176892.terrain differ diff --git a/public/terrain/18/429300/176893.terrain b/public/terrain/18/429300/176893.terrain new file mode 100644 index 000000000..7f524926f Binary files /dev/null and b/public/terrain/18/429300/176893.terrain differ diff --git a/public/terrain/18/429300/176894.terrain b/public/terrain/18/429300/176894.terrain new file mode 100644 index 000000000..c5f7ff687 Binary files /dev/null and b/public/terrain/18/429300/176894.terrain differ diff --git a/public/terrain/18/429300/176895.terrain b/public/terrain/18/429300/176895.terrain new file mode 100644 index 000000000..c76f56d55 Binary files /dev/null and b/public/terrain/18/429300/176895.terrain differ diff --git a/public/terrain/18/429300/176896.terrain b/public/terrain/18/429300/176896.terrain new file mode 100644 index 000000000..c9a2d2b9f Binary files /dev/null and b/public/terrain/18/429300/176896.terrain differ diff --git a/public/terrain/18/429300/176897.terrain b/public/terrain/18/429300/176897.terrain new file mode 100644 index 000000000..dfcacd155 Binary files /dev/null and b/public/terrain/18/429300/176897.terrain differ diff --git a/public/terrain/18/429300/176898.terrain b/public/terrain/18/429300/176898.terrain new file mode 100644 index 000000000..767f8afd2 Binary files /dev/null and b/public/terrain/18/429300/176898.terrain differ diff --git a/public/terrain/18/429300/176899.terrain b/public/terrain/18/429300/176899.terrain new file mode 100644 index 000000000..dc990fce8 Binary files /dev/null and b/public/terrain/18/429300/176899.terrain differ diff --git a/public/terrain/18/429300/176900.terrain b/public/terrain/18/429300/176900.terrain new file mode 100644 index 000000000..ba6b7fb20 Binary files /dev/null and b/public/terrain/18/429300/176900.terrain differ diff --git a/public/terrain/18/429300/176901.terrain b/public/terrain/18/429300/176901.terrain new file mode 100644 index 000000000..ce6f46615 Binary files /dev/null and b/public/terrain/18/429300/176901.terrain differ diff --git a/public/terrain/18/429300/176902.terrain b/public/terrain/18/429300/176902.terrain new file mode 100644 index 000000000..d498f7937 Binary files /dev/null and b/public/terrain/18/429300/176902.terrain differ diff --git a/public/terrain/18/429300/176903.terrain b/public/terrain/18/429300/176903.terrain new file mode 100644 index 000000000..bbd14e5b5 Binary files /dev/null and b/public/terrain/18/429300/176903.terrain differ diff --git a/public/terrain/18/429300/176904.terrain b/public/terrain/18/429300/176904.terrain new file mode 100644 index 000000000..11798e365 Binary files /dev/null and b/public/terrain/18/429300/176904.terrain differ diff --git a/public/terrain/18/429300/176905.terrain b/public/terrain/18/429300/176905.terrain new file mode 100644 index 000000000..f9fd0015f Binary files /dev/null and b/public/terrain/18/429300/176905.terrain differ diff --git a/public/terrain/18/429300/176906.terrain b/public/terrain/18/429300/176906.terrain new file mode 100644 index 000000000..d9e0096e2 Binary files /dev/null and b/public/terrain/18/429300/176906.terrain differ diff --git a/public/terrain/18/429300/176907.terrain b/public/terrain/18/429300/176907.terrain new file mode 100644 index 000000000..0654aee16 Binary files /dev/null and b/public/terrain/18/429300/176907.terrain differ diff --git a/public/terrain/18/429300/176908.terrain b/public/terrain/18/429300/176908.terrain new file mode 100644 index 000000000..ce976ed3a Binary files /dev/null and b/public/terrain/18/429300/176908.terrain differ diff --git a/public/terrain/18/429300/176909.terrain b/public/terrain/18/429300/176909.terrain new file mode 100644 index 000000000..e80b53d6f Binary files /dev/null and b/public/terrain/18/429300/176909.terrain differ diff --git a/public/terrain/18/429300/176910.terrain b/public/terrain/18/429300/176910.terrain new file mode 100644 index 000000000..e099618f2 Binary files /dev/null and b/public/terrain/18/429300/176910.terrain differ diff --git a/public/terrain/18/429300/176911.terrain b/public/terrain/18/429300/176911.terrain new file mode 100644 index 000000000..ea2ec5137 Binary files /dev/null and b/public/terrain/18/429300/176911.terrain differ diff --git a/public/terrain/18/429300/176912.terrain b/public/terrain/18/429300/176912.terrain new file mode 100644 index 000000000..ed8d72a1a Binary files /dev/null and b/public/terrain/18/429300/176912.terrain differ diff --git a/public/terrain/18/429300/176913.terrain b/public/terrain/18/429300/176913.terrain new file mode 100644 index 000000000..fa75502a4 Binary files /dev/null and b/public/terrain/18/429300/176913.terrain differ diff --git a/public/terrain/18/429300/176914.terrain b/public/terrain/18/429300/176914.terrain new file mode 100644 index 000000000..8c340a595 Binary files /dev/null and b/public/terrain/18/429300/176914.terrain differ diff --git a/public/terrain/18/429300/176915.terrain b/public/terrain/18/429300/176915.terrain new file mode 100644 index 000000000..fc3902bcf Binary files /dev/null and b/public/terrain/18/429300/176915.terrain differ diff --git a/public/terrain/18/429300/176916.terrain b/public/terrain/18/429300/176916.terrain new file mode 100644 index 000000000..167e7f473 Binary files /dev/null and b/public/terrain/18/429300/176916.terrain differ diff --git a/public/terrain/18/429300/176917.terrain b/public/terrain/18/429300/176917.terrain new file mode 100644 index 000000000..07fe72cc0 Binary files /dev/null and b/public/terrain/18/429300/176917.terrain differ diff --git a/public/terrain/18/429300/176918.terrain b/public/terrain/18/429300/176918.terrain new file mode 100644 index 000000000..a3c2ba449 Binary files /dev/null and b/public/terrain/18/429300/176918.terrain differ diff --git a/public/terrain/18/429300/176919.terrain b/public/terrain/18/429300/176919.terrain new file mode 100644 index 000000000..40d96ceb3 Binary files /dev/null and b/public/terrain/18/429300/176919.terrain differ diff --git a/public/terrain/18/429300/176920.terrain b/public/terrain/18/429300/176920.terrain new file mode 100644 index 000000000..859215c90 Binary files /dev/null and b/public/terrain/18/429300/176920.terrain differ diff --git a/public/terrain/18/429300/176921.terrain b/public/terrain/18/429300/176921.terrain new file mode 100644 index 000000000..bdd046059 Binary files /dev/null and b/public/terrain/18/429300/176921.terrain differ diff --git a/public/terrain/18/429300/176922.terrain b/public/terrain/18/429300/176922.terrain new file mode 100644 index 000000000..8d2c703f4 Binary files /dev/null and b/public/terrain/18/429300/176922.terrain differ diff --git a/public/terrain/18/429300/176923.terrain b/public/terrain/18/429300/176923.terrain new file mode 100644 index 000000000..2fe52772f Binary files /dev/null and b/public/terrain/18/429300/176923.terrain differ diff --git a/public/terrain/18/429300/176924.terrain b/public/terrain/18/429300/176924.terrain new file mode 100644 index 000000000..24ab09e73 Binary files /dev/null and b/public/terrain/18/429300/176924.terrain differ diff --git a/public/terrain/18/429300/176925.terrain b/public/terrain/18/429300/176925.terrain new file mode 100644 index 000000000..02281a75b Binary files /dev/null and b/public/terrain/18/429300/176925.terrain differ diff --git a/public/terrain/18/429300/176926.terrain b/public/terrain/18/429300/176926.terrain new file mode 100644 index 000000000..fc2d607f5 Binary files /dev/null and b/public/terrain/18/429300/176926.terrain differ diff --git a/public/terrain/18/429300/176927.terrain b/public/terrain/18/429300/176927.terrain new file mode 100644 index 000000000..c56356b18 Binary files /dev/null and b/public/terrain/18/429300/176927.terrain differ diff --git a/public/terrain/18/429300/176928.terrain b/public/terrain/18/429300/176928.terrain new file mode 100644 index 000000000..2f1ae0278 Binary files /dev/null and b/public/terrain/18/429300/176928.terrain differ diff --git a/public/terrain/18/429300/176929.terrain b/public/terrain/18/429300/176929.terrain new file mode 100644 index 000000000..59d9def0b Binary files /dev/null and b/public/terrain/18/429300/176929.terrain differ diff --git a/public/terrain/18/429300/176930.terrain b/public/terrain/18/429300/176930.terrain new file mode 100644 index 000000000..d8e4a1816 Binary files /dev/null and b/public/terrain/18/429300/176930.terrain differ diff --git a/public/terrain/18/429300/176931.terrain b/public/terrain/18/429300/176931.terrain new file mode 100644 index 000000000..b193aa7d8 Binary files /dev/null and b/public/terrain/18/429300/176931.terrain differ diff --git a/public/terrain/18/429300/176932.terrain b/public/terrain/18/429300/176932.terrain new file mode 100644 index 000000000..e31355d93 Binary files /dev/null and b/public/terrain/18/429300/176932.terrain differ diff --git a/public/terrain/18/429300/176933.terrain b/public/terrain/18/429300/176933.terrain new file mode 100644 index 000000000..da7a9e2d3 Binary files /dev/null and b/public/terrain/18/429300/176933.terrain differ diff --git a/public/terrain/18/429300/176934.terrain b/public/terrain/18/429300/176934.terrain new file mode 100644 index 000000000..cc753fcbd Binary files /dev/null and b/public/terrain/18/429300/176934.terrain differ diff --git a/public/terrain/18/429300/176935.terrain b/public/terrain/18/429300/176935.terrain new file mode 100644 index 000000000..dc474275f Binary files /dev/null and b/public/terrain/18/429300/176935.terrain differ diff --git a/public/terrain/18/429300/176936.terrain b/public/terrain/18/429300/176936.terrain new file mode 100644 index 000000000..34b8eb13e Binary files /dev/null and b/public/terrain/18/429300/176936.terrain differ diff --git a/public/terrain/18/429300/176937.terrain b/public/terrain/18/429300/176937.terrain new file mode 100644 index 000000000..26f84e265 Binary files /dev/null and b/public/terrain/18/429300/176937.terrain differ diff --git a/public/terrain/18/429300/176938.terrain b/public/terrain/18/429300/176938.terrain new file mode 100644 index 000000000..949211426 Binary files /dev/null and b/public/terrain/18/429300/176938.terrain differ diff --git a/public/terrain/18/429300/176939.terrain b/public/terrain/18/429300/176939.terrain new file mode 100644 index 000000000..215e6fb60 Binary files /dev/null and b/public/terrain/18/429300/176939.terrain differ diff --git a/public/terrain/18/429300/176940.terrain b/public/terrain/18/429300/176940.terrain new file mode 100644 index 000000000..6e3bbd34a Binary files /dev/null and b/public/terrain/18/429300/176940.terrain differ diff --git a/public/terrain/18/429300/176941.terrain b/public/terrain/18/429300/176941.terrain new file mode 100644 index 000000000..c979de1da Binary files /dev/null and b/public/terrain/18/429300/176941.terrain differ diff --git a/public/terrain/18/429300/176942.terrain b/public/terrain/18/429300/176942.terrain new file mode 100644 index 000000000..3c390aab8 Binary files /dev/null and b/public/terrain/18/429300/176942.terrain differ diff --git a/public/terrain/18/429300/176943.terrain b/public/terrain/18/429300/176943.terrain new file mode 100644 index 000000000..1fcd8e398 Binary files /dev/null and b/public/terrain/18/429300/176943.terrain differ diff --git a/public/terrain/18/429300/176944.terrain b/public/terrain/18/429300/176944.terrain new file mode 100644 index 000000000..3ba5f0cae Binary files /dev/null and b/public/terrain/18/429300/176944.terrain differ diff --git a/public/terrain/18/429300/176945.terrain b/public/terrain/18/429300/176945.terrain new file mode 100644 index 000000000..c910d0d4b Binary files /dev/null and b/public/terrain/18/429300/176945.terrain differ diff --git a/public/terrain/18/429300/176946.terrain b/public/terrain/18/429300/176946.terrain new file mode 100644 index 000000000..6b93d16b8 Binary files /dev/null and b/public/terrain/18/429300/176946.terrain differ diff --git a/public/terrain/18/429300/176947.terrain b/public/terrain/18/429300/176947.terrain new file mode 100644 index 000000000..a34e363db Binary files /dev/null and b/public/terrain/18/429300/176947.terrain differ diff --git a/public/terrain/18/429300/176948.terrain b/public/terrain/18/429300/176948.terrain new file mode 100644 index 000000000..d8f5c21b5 Binary files /dev/null and b/public/terrain/18/429300/176948.terrain differ diff --git a/public/terrain/18/429300/176949.terrain b/public/terrain/18/429300/176949.terrain new file mode 100644 index 000000000..75a1cdd7f Binary files /dev/null and b/public/terrain/18/429300/176949.terrain differ diff --git a/public/terrain/18/429300/176950.terrain b/public/terrain/18/429300/176950.terrain new file mode 100644 index 000000000..5fab591c1 Binary files /dev/null and b/public/terrain/18/429300/176950.terrain differ diff --git a/public/terrain/18/429300/176951.terrain b/public/terrain/18/429300/176951.terrain new file mode 100644 index 000000000..1183c9931 Binary files /dev/null and b/public/terrain/18/429300/176951.terrain differ diff --git a/public/terrain/18/429300/176952.terrain b/public/terrain/18/429300/176952.terrain new file mode 100644 index 000000000..7bd22a6c9 Binary files /dev/null and b/public/terrain/18/429300/176952.terrain differ diff --git a/public/terrain/18/429300/176953.terrain b/public/terrain/18/429300/176953.terrain new file mode 100644 index 000000000..b7333b1a8 Binary files /dev/null and b/public/terrain/18/429300/176953.terrain differ diff --git a/public/terrain/18/429300/176954.terrain b/public/terrain/18/429300/176954.terrain new file mode 100644 index 000000000..48f57be63 Binary files /dev/null and b/public/terrain/18/429300/176954.terrain differ diff --git a/public/terrain/18/429300/176955.terrain b/public/terrain/18/429300/176955.terrain new file mode 100644 index 000000000..970bd6596 Binary files /dev/null and b/public/terrain/18/429300/176955.terrain differ diff --git a/public/terrain/18/429300/176956.terrain b/public/terrain/18/429300/176956.terrain new file mode 100644 index 000000000..11532138e Binary files /dev/null and b/public/terrain/18/429300/176956.terrain differ diff --git a/public/terrain/18/429300/176957.terrain b/public/terrain/18/429300/176957.terrain new file mode 100644 index 000000000..eb3e5760a Binary files /dev/null and b/public/terrain/18/429300/176957.terrain differ diff --git a/public/terrain/18/429300/176958.terrain b/public/terrain/18/429300/176958.terrain new file mode 100644 index 000000000..edffb559f Binary files /dev/null and b/public/terrain/18/429300/176958.terrain differ diff --git a/public/terrain/18/429300/176959.terrain b/public/terrain/18/429300/176959.terrain new file mode 100644 index 000000000..ff65ee4d8 Binary files /dev/null and b/public/terrain/18/429300/176959.terrain differ diff --git a/public/terrain/18/429300/176960.terrain b/public/terrain/18/429300/176960.terrain new file mode 100644 index 000000000..2147dcd42 Binary files /dev/null and b/public/terrain/18/429300/176960.terrain differ diff --git a/public/terrain/18/429300/176961.terrain b/public/terrain/18/429300/176961.terrain new file mode 100644 index 000000000..08ceda11b Binary files /dev/null and b/public/terrain/18/429300/176961.terrain differ diff --git a/public/terrain/18/429300/176962.terrain b/public/terrain/18/429300/176962.terrain new file mode 100644 index 000000000..5ed4fd2b9 Binary files /dev/null and b/public/terrain/18/429300/176962.terrain differ diff --git a/public/terrain/18/429300/176963.terrain b/public/terrain/18/429300/176963.terrain new file mode 100644 index 000000000..d4131f49a Binary files /dev/null and b/public/terrain/18/429300/176963.terrain differ diff --git a/public/terrain/18/429300/176964.terrain b/public/terrain/18/429300/176964.terrain new file mode 100644 index 000000000..0451f6a6e Binary files /dev/null and b/public/terrain/18/429300/176964.terrain differ diff --git a/public/terrain/18/429300/176965.terrain b/public/terrain/18/429300/176965.terrain new file mode 100644 index 000000000..3663b4ccb Binary files /dev/null and b/public/terrain/18/429300/176965.terrain differ diff --git a/public/terrain/18/429300/176966.terrain b/public/terrain/18/429300/176966.terrain new file mode 100644 index 000000000..5334c5e7f Binary files /dev/null and b/public/terrain/18/429300/176966.terrain differ diff --git a/public/terrain/18/429300/176967.terrain b/public/terrain/18/429300/176967.terrain new file mode 100644 index 000000000..ec6ea6a97 Binary files /dev/null and b/public/terrain/18/429300/176967.terrain differ diff --git a/public/terrain/18/429300/176968.terrain b/public/terrain/18/429300/176968.terrain new file mode 100644 index 000000000..ec766f645 Binary files /dev/null and b/public/terrain/18/429300/176968.terrain differ diff --git a/public/terrain/18/429300/176969.terrain b/public/terrain/18/429300/176969.terrain new file mode 100644 index 000000000..e3a483de3 Binary files /dev/null and b/public/terrain/18/429300/176969.terrain differ diff --git a/public/terrain/18/429300/176970.terrain b/public/terrain/18/429300/176970.terrain new file mode 100644 index 000000000..e604909ca Binary files /dev/null and b/public/terrain/18/429300/176970.terrain differ diff --git a/public/terrain/18/429300/176971.terrain b/public/terrain/18/429300/176971.terrain new file mode 100644 index 000000000..d5ab11ce9 Binary files /dev/null and b/public/terrain/18/429300/176971.terrain differ diff --git a/public/terrain/18/429300/176972.terrain b/public/terrain/18/429300/176972.terrain new file mode 100644 index 000000000..da27d64ab Binary files /dev/null and b/public/terrain/18/429300/176972.terrain differ diff --git a/public/terrain/18/429300/176973.terrain b/public/terrain/18/429300/176973.terrain new file mode 100644 index 000000000..cc2fdcf95 Binary files /dev/null and b/public/terrain/18/429300/176973.terrain differ diff --git a/public/terrain/18/429300/176974.terrain b/public/terrain/18/429300/176974.terrain new file mode 100644 index 000000000..1b7a2e191 Binary files /dev/null and b/public/terrain/18/429300/176974.terrain differ diff --git a/public/terrain/18/429300/176975.terrain b/public/terrain/18/429300/176975.terrain new file mode 100644 index 000000000..342e84c40 Binary files /dev/null and b/public/terrain/18/429300/176975.terrain differ diff --git a/public/terrain/18/429300/176976.terrain b/public/terrain/18/429300/176976.terrain new file mode 100644 index 000000000..345b92f5d Binary files /dev/null and b/public/terrain/18/429300/176976.terrain differ diff --git a/public/terrain/18/429300/176977.terrain b/public/terrain/18/429300/176977.terrain new file mode 100644 index 000000000..9ac7029b9 Binary files /dev/null and b/public/terrain/18/429300/176977.terrain differ diff --git a/public/terrain/18/429300/176978.terrain b/public/terrain/18/429300/176978.terrain new file mode 100644 index 000000000..990ea16bf Binary files /dev/null and b/public/terrain/18/429300/176978.terrain differ diff --git a/public/terrain/18/429300/176979.terrain b/public/terrain/18/429300/176979.terrain new file mode 100644 index 000000000..ea65046c2 Binary files /dev/null and b/public/terrain/18/429300/176979.terrain differ diff --git a/public/terrain/18/429300/176980.terrain b/public/terrain/18/429300/176980.terrain new file mode 100644 index 000000000..e5bcfad41 Binary files /dev/null and b/public/terrain/18/429300/176980.terrain differ diff --git a/public/terrain/18/429300/176981.terrain b/public/terrain/18/429300/176981.terrain new file mode 100644 index 000000000..d57830584 Binary files /dev/null and b/public/terrain/18/429300/176981.terrain differ diff --git a/public/terrain/18/429300/176982.terrain b/public/terrain/18/429300/176982.terrain new file mode 100644 index 000000000..531648237 Binary files /dev/null and b/public/terrain/18/429300/176982.terrain differ diff --git a/public/terrain/18/429300/176983.terrain b/public/terrain/18/429300/176983.terrain new file mode 100644 index 000000000..db282ca31 Binary files /dev/null and b/public/terrain/18/429300/176983.terrain differ diff --git a/public/terrain/18/429300/176984.terrain b/public/terrain/18/429300/176984.terrain new file mode 100644 index 000000000..17431b651 Binary files /dev/null and b/public/terrain/18/429300/176984.terrain differ diff --git a/public/terrain/18/429300/176985.terrain b/public/terrain/18/429300/176985.terrain new file mode 100644 index 000000000..91710d778 Binary files /dev/null and b/public/terrain/18/429300/176985.terrain differ diff --git a/public/terrain/18/429300/176986.terrain b/public/terrain/18/429300/176986.terrain new file mode 100644 index 000000000..051482385 Binary files /dev/null and b/public/terrain/18/429300/176986.terrain differ diff --git a/public/terrain/18/429300/176987.terrain b/public/terrain/18/429300/176987.terrain new file mode 100644 index 000000000..f5b45c8b4 Binary files /dev/null and b/public/terrain/18/429300/176987.terrain differ diff --git a/public/terrain/18/429300/176988.terrain b/public/terrain/18/429300/176988.terrain new file mode 100644 index 000000000..9e8cf2837 Binary files /dev/null and b/public/terrain/18/429300/176988.terrain differ diff --git a/public/terrain/18/429300/176989.terrain b/public/terrain/18/429300/176989.terrain new file mode 100644 index 000000000..4c00bff18 Binary files /dev/null and b/public/terrain/18/429300/176989.terrain differ diff --git a/public/terrain/18/429300/176990.terrain b/public/terrain/18/429300/176990.terrain new file mode 100644 index 000000000..a4fb32a75 Binary files /dev/null and b/public/terrain/18/429300/176990.terrain differ diff --git a/public/terrain/18/429300/176991.terrain b/public/terrain/18/429300/176991.terrain new file mode 100644 index 000000000..2ab4e1d96 Binary files /dev/null and b/public/terrain/18/429300/176991.terrain differ diff --git a/public/terrain/18/429300/176992.terrain b/public/terrain/18/429300/176992.terrain new file mode 100644 index 000000000..c0d2c4cfb Binary files /dev/null and b/public/terrain/18/429300/176992.terrain differ diff --git a/public/terrain/18/429300/176993.terrain b/public/terrain/18/429300/176993.terrain new file mode 100644 index 000000000..b10935ecf Binary files /dev/null and b/public/terrain/18/429300/176993.terrain differ diff --git a/public/terrain/18/429300/176994.terrain b/public/terrain/18/429300/176994.terrain new file mode 100644 index 000000000..73699d6ac Binary files /dev/null and b/public/terrain/18/429300/176994.terrain differ diff --git a/public/terrain/18/429300/176995.terrain b/public/terrain/18/429300/176995.terrain new file mode 100644 index 000000000..a7555a1e9 Binary files /dev/null and b/public/terrain/18/429300/176995.terrain differ diff --git a/public/terrain/18/429300/176996.terrain b/public/terrain/18/429300/176996.terrain new file mode 100644 index 000000000..cf3a6be51 Binary files /dev/null and b/public/terrain/18/429300/176996.terrain differ diff --git a/public/terrain/18/429300/176997.terrain b/public/terrain/18/429300/176997.terrain new file mode 100644 index 000000000..29e87d5cc Binary files /dev/null and b/public/terrain/18/429300/176997.terrain differ diff --git a/public/terrain/18/429300/176998.terrain b/public/terrain/18/429300/176998.terrain new file mode 100644 index 000000000..da5a31f18 Binary files /dev/null and b/public/terrain/18/429300/176998.terrain differ diff --git a/public/terrain/18/429300/176999.terrain b/public/terrain/18/429300/176999.terrain new file mode 100644 index 000000000..3ee5d6a45 Binary files /dev/null and b/public/terrain/18/429300/176999.terrain differ diff --git a/public/terrain/18/429300/177000.terrain b/public/terrain/18/429300/177000.terrain new file mode 100644 index 000000000..2d28ebc1d Binary files /dev/null and b/public/terrain/18/429300/177000.terrain differ diff --git a/public/terrain/18/429300/177001.terrain b/public/terrain/18/429300/177001.terrain new file mode 100644 index 000000000..e000d7d4a Binary files /dev/null and b/public/terrain/18/429300/177001.terrain differ diff --git a/public/terrain/18/429300/177002.terrain b/public/terrain/18/429300/177002.terrain new file mode 100644 index 000000000..88ee8505b Binary files /dev/null and b/public/terrain/18/429300/177002.terrain differ diff --git a/public/terrain/18/429300/177003.terrain b/public/terrain/18/429300/177003.terrain new file mode 100644 index 000000000..5ead50b20 Binary files /dev/null and b/public/terrain/18/429300/177003.terrain differ diff --git a/public/terrain/18/429300/177004.terrain b/public/terrain/18/429300/177004.terrain new file mode 100644 index 000000000..2ffd6a639 Binary files /dev/null and b/public/terrain/18/429300/177004.terrain differ diff --git a/public/terrain/18/429300/177005.terrain b/public/terrain/18/429300/177005.terrain new file mode 100644 index 000000000..cb415d07a Binary files /dev/null and b/public/terrain/18/429300/177005.terrain differ diff --git a/public/terrain/18/429300/177006.terrain b/public/terrain/18/429300/177006.terrain new file mode 100644 index 000000000..970392a32 Binary files /dev/null and b/public/terrain/18/429300/177006.terrain differ diff --git a/public/terrain/18/429300/177007.terrain b/public/terrain/18/429300/177007.terrain new file mode 100644 index 000000000..79c166d44 Binary files /dev/null and b/public/terrain/18/429300/177007.terrain differ diff --git a/public/terrain/18/429300/177008.terrain b/public/terrain/18/429300/177008.terrain new file mode 100644 index 000000000..9a183a816 Binary files /dev/null and b/public/terrain/18/429300/177008.terrain differ diff --git a/public/terrain/18/429300/177009.terrain b/public/terrain/18/429300/177009.terrain new file mode 100644 index 000000000..a51a1f79c Binary files /dev/null and b/public/terrain/18/429300/177009.terrain differ diff --git a/public/terrain/18/429300/177010.terrain b/public/terrain/18/429300/177010.terrain new file mode 100644 index 000000000..5098fe422 Binary files /dev/null and b/public/terrain/18/429300/177010.terrain differ diff --git a/public/terrain/18/429300/177011.terrain b/public/terrain/18/429300/177011.terrain new file mode 100644 index 000000000..24d0cf073 Binary files /dev/null and b/public/terrain/18/429300/177011.terrain differ diff --git a/public/terrain/18/429300/177012.terrain b/public/terrain/18/429300/177012.terrain new file mode 100644 index 000000000..05206a92d Binary files /dev/null and b/public/terrain/18/429300/177012.terrain differ diff --git a/public/terrain/18/429300/177013.terrain b/public/terrain/18/429300/177013.terrain new file mode 100644 index 000000000..9209f5ba4 Binary files /dev/null and b/public/terrain/18/429300/177013.terrain differ diff --git a/public/terrain/18/429300/177014.terrain b/public/terrain/18/429300/177014.terrain new file mode 100644 index 000000000..a4fa7708e Binary files /dev/null and b/public/terrain/18/429300/177014.terrain differ diff --git a/public/terrain/18/429300/177015.terrain b/public/terrain/18/429300/177015.terrain new file mode 100644 index 000000000..7b9ade34e Binary files /dev/null and b/public/terrain/18/429300/177015.terrain differ diff --git a/public/terrain/18/429300/177016.terrain b/public/terrain/18/429300/177016.terrain new file mode 100644 index 000000000..4e7050ec2 Binary files /dev/null and b/public/terrain/18/429300/177016.terrain differ diff --git a/public/terrain/18/429300/177017.terrain b/public/terrain/18/429300/177017.terrain new file mode 100644 index 000000000..c3702ecfe Binary files /dev/null and b/public/terrain/18/429300/177017.terrain differ diff --git a/public/terrain/18/429300/177018.terrain b/public/terrain/18/429300/177018.terrain new file mode 100644 index 000000000..34b9b2ca9 Binary files /dev/null and b/public/terrain/18/429300/177018.terrain differ diff --git a/public/terrain/18/429300/177019.terrain b/public/terrain/18/429300/177019.terrain new file mode 100644 index 000000000..d3b48ae52 Binary files /dev/null and b/public/terrain/18/429300/177019.terrain differ diff --git a/public/terrain/18/429300/177020.terrain b/public/terrain/18/429300/177020.terrain new file mode 100644 index 000000000..5f3cd3e47 Binary files /dev/null and b/public/terrain/18/429300/177020.terrain differ diff --git a/public/terrain/18/429300/177021.terrain b/public/terrain/18/429300/177021.terrain new file mode 100644 index 000000000..2437a22bc Binary files /dev/null and b/public/terrain/18/429300/177021.terrain differ diff --git a/public/terrain/18/429300/177022.terrain b/public/terrain/18/429300/177022.terrain new file mode 100644 index 000000000..d171f0cbc Binary files /dev/null and b/public/terrain/18/429300/177022.terrain differ diff --git a/public/terrain/18/429300/177023.terrain b/public/terrain/18/429300/177023.terrain new file mode 100644 index 000000000..fd0a5d0a1 Binary files /dev/null and b/public/terrain/18/429300/177023.terrain differ diff --git a/public/terrain/18/429300/177024.terrain b/public/terrain/18/429300/177024.terrain new file mode 100644 index 000000000..70f0059de Binary files /dev/null and b/public/terrain/18/429300/177024.terrain differ diff --git a/public/terrain/18/429300/177025.terrain b/public/terrain/18/429300/177025.terrain new file mode 100644 index 000000000..c65bdfe46 Binary files /dev/null and b/public/terrain/18/429300/177025.terrain differ diff --git a/public/terrain/18/429300/177026.terrain b/public/terrain/18/429300/177026.terrain new file mode 100644 index 000000000..960a4db33 Binary files /dev/null and b/public/terrain/18/429300/177026.terrain differ diff --git a/public/terrain/18/429300/177027.terrain b/public/terrain/18/429300/177027.terrain new file mode 100644 index 000000000..c2a4f53ee Binary files /dev/null and b/public/terrain/18/429300/177027.terrain differ diff --git a/public/terrain/18/429300/177028.terrain b/public/terrain/18/429300/177028.terrain new file mode 100644 index 000000000..bf79d3ad1 Binary files /dev/null and b/public/terrain/18/429300/177028.terrain differ diff --git a/public/terrain/18/429300/177029.terrain b/public/terrain/18/429300/177029.terrain new file mode 100644 index 000000000..9be5732a9 Binary files /dev/null and b/public/terrain/18/429300/177029.terrain differ diff --git a/public/terrain/18/429301/176871.terrain b/public/terrain/18/429301/176871.terrain new file mode 100644 index 000000000..5aca85a96 Binary files /dev/null and b/public/terrain/18/429301/176871.terrain differ diff --git a/public/terrain/18/429301/176872.terrain b/public/terrain/18/429301/176872.terrain new file mode 100644 index 000000000..f2663f28a Binary files /dev/null and b/public/terrain/18/429301/176872.terrain differ diff --git a/public/terrain/18/429301/176873.terrain b/public/terrain/18/429301/176873.terrain new file mode 100644 index 000000000..65a942ef9 Binary files /dev/null and b/public/terrain/18/429301/176873.terrain differ diff --git a/public/terrain/18/429301/176874.terrain b/public/terrain/18/429301/176874.terrain new file mode 100644 index 000000000..1c7035ace Binary files /dev/null and b/public/terrain/18/429301/176874.terrain differ diff --git a/public/terrain/18/429301/176875.terrain b/public/terrain/18/429301/176875.terrain new file mode 100644 index 000000000..8fedd5a45 Binary files /dev/null and b/public/terrain/18/429301/176875.terrain differ diff --git a/public/terrain/18/429301/176876.terrain b/public/terrain/18/429301/176876.terrain new file mode 100644 index 000000000..31396a648 Binary files /dev/null and b/public/terrain/18/429301/176876.terrain differ diff --git a/public/terrain/18/429301/176877.terrain b/public/terrain/18/429301/176877.terrain new file mode 100644 index 000000000..4c24e5243 Binary files /dev/null and b/public/terrain/18/429301/176877.terrain differ diff --git a/public/terrain/18/429301/176878.terrain b/public/terrain/18/429301/176878.terrain new file mode 100644 index 000000000..2033bd81b Binary files /dev/null and b/public/terrain/18/429301/176878.terrain differ diff --git a/public/terrain/18/429301/176879.terrain b/public/terrain/18/429301/176879.terrain new file mode 100644 index 000000000..46a63ee8e Binary files /dev/null and b/public/terrain/18/429301/176879.terrain differ diff --git a/public/terrain/18/429301/176880.terrain b/public/terrain/18/429301/176880.terrain new file mode 100644 index 000000000..b9db16f42 Binary files /dev/null and b/public/terrain/18/429301/176880.terrain differ diff --git a/public/terrain/18/429301/176881.terrain b/public/terrain/18/429301/176881.terrain new file mode 100644 index 000000000..40790c9bc Binary files /dev/null and b/public/terrain/18/429301/176881.terrain differ diff --git a/public/terrain/18/429301/176882.terrain b/public/terrain/18/429301/176882.terrain new file mode 100644 index 000000000..982a2abcc Binary files /dev/null and b/public/terrain/18/429301/176882.terrain differ diff --git a/public/terrain/18/429301/176883.terrain b/public/terrain/18/429301/176883.terrain new file mode 100644 index 000000000..b57c80f4b Binary files /dev/null and b/public/terrain/18/429301/176883.terrain differ diff --git a/public/terrain/18/429301/176884.terrain b/public/terrain/18/429301/176884.terrain new file mode 100644 index 000000000..b8871d417 Binary files /dev/null and b/public/terrain/18/429301/176884.terrain differ diff --git a/public/terrain/18/429301/176885.terrain b/public/terrain/18/429301/176885.terrain new file mode 100644 index 000000000..7cece7bb0 Binary files /dev/null and b/public/terrain/18/429301/176885.terrain differ diff --git a/public/terrain/18/429301/176886.terrain b/public/terrain/18/429301/176886.terrain new file mode 100644 index 000000000..5ede7c64d Binary files /dev/null and b/public/terrain/18/429301/176886.terrain differ diff --git a/public/terrain/18/429301/176887.terrain b/public/terrain/18/429301/176887.terrain new file mode 100644 index 000000000..3ccf9c9a4 Binary files /dev/null and b/public/terrain/18/429301/176887.terrain differ diff --git a/public/terrain/18/429301/176888.terrain b/public/terrain/18/429301/176888.terrain new file mode 100644 index 000000000..15ae24e52 Binary files /dev/null and b/public/terrain/18/429301/176888.terrain differ diff --git a/public/terrain/18/429301/176889.terrain b/public/terrain/18/429301/176889.terrain new file mode 100644 index 000000000..b90f7983f Binary files /dev/null and b/public/terrain/18/429301/176889.terrain differ diff --git a/public/terrain/18/429301/176890.terrain b/public/terrain/18/429301/176890.terrain new file mode 100644 index 000000000..a4fab39ce Binary files /dev/null and b/public/terrain/18/429301/176890.terrain differ diff --git a/public/terrain/18/429301/176891.terrain b/public/terrain/18/429301/176891.terrain new file mode 100644 index 000000000..451c0e872 Binary files /dev/null and b/public/terrain/18/429301/176891.terrain differ diff --git a/public/terrain/18/429301/176892.terrain b/public/terrain/18/429301/176892.terrain new file mode 100644 index 000000000..f57b30a86 Binary files /dev/null and b/public/terrain/18/429301/176892.terrain differ diff --git a/public/terrain/18/429301/176893.terrain b/public/terrain/18/429301/176893.terrain new file mode 100644 index 000000000..c3bf87492 Binary files /dev/null and b/public/terrain/18/429301/176893.terrain differ diff --git a/public/terrain/18/429301/176894.terrain b/public/terrain/18/429301/176894.terrain new file mode 100644 index 000000000..bb3dbe93b Binary files /dev/null and b/public/terrain/18/429301/176894.terrain differ diff --git a/public/terrain/18/429301/176895.terrain b/public/terrain/18/429301/176895.terrain new file mode 100644 index 000000000..27b7b6074 Binary files /dev/null and b/public/terrain/18/429301/176895.terrain differ diff --git a/public/terrain/18/429301/176896.terrain b/public/terrain/18/429301/176896.terrain new file mode 100644 index 000000000..70f4fb2d9 Binary files /dev/null and b/public/terrain/18/429301/176896.terrain differ diff --git a/public/terrain/18/429301/176897.terrain b/public/terrain/18/429301/176897.terrain new file mode 100644 index 000000000..7889e19c9 Binary files /dev/null and b/public/terrain/18/429301/176897.terrain differ diff --git a/public/terrain/18/429301/176898.terrain b/public/terrain/18/429301/176898.terrain new file mode 100644 index 000000000..acd67d275 Binary files /dev/null and b/public/terrain/18/429301/176898.terrain differ diff --git a/public/terrain/18/429301/176899.terrain b/public/terrain/18/429301/176899.terrain new file mode 100644 index 000000000..7932854c2 Binary files /dev/null and b/public/terrain/18/429301/176899.terrain differ diff --git a/public/terrain/18/429301/176900.terrain b/public/terrain/18/429301/176900.terrain new file mode 100644 index 000000000..fe5f1b752 Binary files /dev/null and b/public/terrain/18/429301/176900.terrain differ diff --git a/public/terrain/18/429301/176901.terrain b/public/terrain/18/429301/176901.terrain new file mode 100644 index 000000000..80d72d15d Binary files /dev/null and b/public/terrain/18/429301/176901.terrain differ diff --git a/public/terrain/18/429301/176902.terrain b/public/terrain/18/429301/176902.terrain new file mode 100644 index 000000000..90af0a68f Binary files /dev/null and b/public/terrain/18/429301/176902.terrain differ diff --git a/public/terrain/18/429301/176903.terrain b/public/terrain/18/429301/176903.terrain new file mode 100644 index 000000000..eac32b263 Binary files /dev/null and b/public/terrain/18/429301/176903.terrain differ diff --git a/public/terrain/18/429301/176904.terrain b/public/terrain/18/429301/176904.terrain new file mode 100644 index 000000000..ed1d22023 Binary files /dev/null and b/public/terrain/18/429301/176904.terrain differ diff --git a/public/terrain/18/429301/176905.terrain b/public/terrain/18/429301/176905.terrain new file mode 100644 index 000000000..5ede46199 Binary files /dev/null and b/public/terrain/18/429301/176905.terrain differ diff --git a/public/terrain/18/429301/176906.terrain b/public/terrain/18/429301/176906.terrain new file mode 100644 index 000000000..808690fa5 Binary files /dev/null and b/public/terrain/18/429301/176906.terrain differ diff --git a/public/terrain/18/429301/176907.terrain b/public/terrain/18/429301/176907.terrain new file mode 100644 index 000000000..0ee703a60 Binary files /dev/null and b/public/terrain/18/429301/176907.terrain differ diff --git a/public/terrain/18/429301/176908.terrain b/public/terrain/18/429301/176908.terrain new file mode 100644 index 000000000..952f6b693 Binary files /dev/null and b/public/terrain/18/429301/176908.terrain differ diff --git a/public/terrain/18/429301/176909.terrain b/public/terrain/18/429301/176909.terrain new file mode 100644 index 000000000..e9e99087b Binary files /dev/null and b/public/terrain/18/429301/176909.terrain differ diff --git a/public/terrain/18/429301/176910.terrain b/public/terrain/18/429301/176910.terrain new file mode 100644 index 000000000..efeabcdf1 Binary files /dev/null and b/public/terrain/18/429301/176910.terrain differ diff --git a/public/terrain/18/429301/176911.terrain b/public/terrain/18/429301/176911.terrain new file mode 100644 index 000000000..b6acec79d Binary files /dev/null and b/public/terrain/18/429301/176911.terrain differ diff --git a/public/terrain/18/429301/176912.terrain b/public/terrain/18/429301/176912.terrain new file mode 100644 index 000000000..a8fa2cddc Binary files /dev/null and b/public/terrain/18/429301/176912.terrain differ diff --git a/public/terrain/18/429301/176913.terrain b/public/terrain/18/429301/176913.terrain new file mode 100644 index 000000000..e3824f1c0 Binary files /dev/null and b/public/terrain/18/429301/176913.terrain differ diff --git a/public/terrain/18/429301/176914.terrain b/public/terrain/18/429301/176914.terrain new file mode 100644 index 000000000..86a3fe25a Binary files /dev/null and b/public/terrain/18/429301/176914.terrain differ diff --git a/public/terrain/18/429301/176915.terrain b/public/terrain/18/429301/176915.terrain new file mode 100644 index 000000000..ed71d2aaf Binary files /dev/null and b/public/terrain/18/429301/176915.terrain differ diff --git a/public/terrain/18/429301/176916.terrain b/public/terrain/18/429301/176916.terrain new file mode 100644 index 000000000..00e502b38 Binary files /dev/null and b/public/terrain/18/429301/176916.terrain differ diff --git a/public/terrain/18/429301/176917.terrain b/public/terrain/18/429301/176917.terrain new file mode 100644 index 000000000..7ccdce527 Binary files /dev/null and b/public/terrain/18/429301/176917.terrain differ diff --git a/public/terrain/18/429301/176918.terrain b/public/terrain/18/429301/176918.terrain new file mode 100644 index 000000000..e687bebac Binary files /dev/null and b/public/terrain/18/429301/176918.terrain differ diff --git a/public/terrain/18/429301/176919.terrain b/public/terrain/18/429301/176919.terrain new file mode 100644 index 000000000..a04edf592 Binary files /dev/null and b/public/terrain/18/429301/176919.terrain differ diff --git a/public/terrain/18/429301/176920.terrain b/public/terrain/18/429301/176920.terrain new file mode 100644 index 000000000..036e0d0be Binary files /dev/null and b/public/terrain/18/429301/176920.terrain differ diff --git a/public/terrain/18/429301/176921.terrain b/public/terrain/18/429301/176921.terrain new file mode 100644 index 000000000..089deceb4 Binary files /dev/null and b/public/terrain/18/429301/176921.terrain differ diff --git a/public/terrain/18/429301/176922.terrain b/public/terrain/18/429301/176922.terrain new file mode 100644 index 000000000..0c0f5ff25 Binary files /dev/null and b/public/terrain/18/429301/176922.terrain differ diff --git a/public/terrain/18/429301/176923.terrain b/public/terrain/18/429301/176923.terrain new file mode 100644 index 000000000..b979f61c4 Binary files /dev/null and b/public/terrain/18/429301/176923.terrain differ diff --git a/public/terrain/18/429301/176924.terrain b/public/terrain/18/429301/176924.terrain new file mode 100644 index 000000000..b5dc02146 Binary files /dev/null and b/public/terrain/18/429301/176924.terrain differ diff --git a/public/terrain/18/429301/176925.terrain b/public/terrain/18/429301/176925.terrain new file mode 100644 index 000000000..4381e9e13 Binary files /dev/null and b/public/terrain/18/429301/176925.terrain differ diff --git a/public/terrain/18/429301/176926.terrain b/public/terrain/18/429301/176926.terrain new file mode 100644 index 000000000..b588413ec Binary files /dev/null and b/public/terrain/18/429301/176926.terrain differ diff --git a/public/terrain/18/429301/176927.terrain b/public/terrain/18/429301/176927.terrain new file mode 100644 index 000000000..ba6c95ea9 Binary files /dev/null and b/public/terrain/18/429301/176927.terrain differ diff --git a/public/terrain/18/429301/176928.terrain b/public/terrain/18/429301/176928.terrain new file mode 100644 index 000000000..80732832b Binary files /dev/null and b/public/terrain/18/429301/176928.terrain differ diff --git a/public/terrain/18/429301/176929.terrain b/public/terrain/18/429301/176929.terrain new file mode 100644 index 000000000..9a9c66d2f Binary files /dev/null and b/public/terrain/18/429301/176929.terrain differ diff --git a/public/terrain/18/429301/176930.terrain b/public/terrain/18/429301/176930.terrain new file mode 100644 index 000000000..a01938ee0 Binary files /dev/null and b/public/terrain/18/429301/176930.terrain differ diff --git a/public/terrain/18/429301/176931.terrain b/public/terrain/18/429301/176931.terrain new file mode 100644 index 000000000..a8b7b2a08 Binary files /dev/null and b/public/terrain/18/429301/176931.terrain differ diff --git a/public/terrain/18/429301/176932.terrain b/public/terrain/18/429301/176932.terrain new file mode 100644 index 000000000..9d35aa4f1 Binary files /dev/null and b/public/terrain/18/429301/176932.terrain differ diff --git a/public/terrain/18/429301/176933.terrain b/public/terrain/18/429301/176933.terrain new file mode 100644 index 000000000..c2e8bb51a Binary files /dev/null and b/public/terrain/18/429301/176933.terrain differ diff --git a/public/terrain/18/429301/176934.terrain b/public/terrain/18/429301/176934.terrain new file mode 100644 index 000000000..f080cbd5e Binary files /dev/null and b/public/terrain/18/429301/176934.terrain differ diff --git a/public/terrain/18/429301/176935.terrain b/public/terrain/18/429301/176935.terrain new file mode 100644 index 000000000..d6dd5ac14 Binary files /dev/null and b/public/terrain/18/429301/176935.terrain differ diff --git a/public/terrain/18/429301/176936.terrain b/public/terrain/18/429301/176936.terrain new file mode 100644 index 000000000..c127e2085 Binary files /dev/null and b/public/terrain/18/429301/176936.terrain differ diff --git a/public/terrain/18/429301/176937.terrain b/public/terrain/18/429301/176937.terrain new file mode 100644 index 000000000..017652829 Binary files /dev/null and b/public/terrain/18/429301/176937.terrain differ diff --git a/public/terrain/18/429301/176938.terrain b/public/terrain/18/429301/176938.terrain new file mode 100644 index 000000000..d62f3bb3e Binary files /dev/null and b/public/terrain/18/429301/176938.terrain differ diff --git a/public/terrain/18/429301/176939.terrain b/public/terrain/18/429301/176939.terrain new file mode 100644 index 000000000..f49895ea8 Binary files /dev/null and b/public/terrain/18/429301/176939.terrain differ diff --git a/public/terrain/18/429301/176940.terrain b/public/terrain/18/429301/176940.terrain new file mode 100644 index 000000000..2c6d05060 Binary files /dev/null and b/public/terrain/18/429301/176940.terrain differ diff --git a/public/terrain/18/429301/176941.terrain b/public/terrain/18/429301/176941.terrain new file mode 100644 index 000000000..6eb3a8992 Binary files /dev/null and b/public/terrain/18/429301/176941.terrain differ diff --git a/public/terrain/18/429301/176942.terrain b/public/terrain/18/429301/176942.terrain new file mode 100644 index 000000000..ca145f5f7 Binary files /dev/null and b/public/terrain/18/429301/176942.terrain differ diff --git a/public/terrain/18/429301/176943.terrain b/public/terrain/18/429301/176943.terrain new file mode 100644 index 000000000..11e997cac Binary files /dev/null and b/public/terrain/18/429301/176943.terrain differ diff --git a/public/terrain/18/429301/176944.terrain b/public/terrain/18/429301/176944.terrain new file mode 100644 index 000000000..b63de2f21 Binary files /dev/null and b/public/terrain/18/429301/176944.terrain differ diff --git a/public/terrain/18/429301/176945.terrain b/public/terrain/18/429301/176945.terrain new file mode 100644 index 000000000..bf9b8d753 Binary files /dev/null and b/public/terrain/18/429301/176945.terrain differ diff --git a/public/terrain/18/429301/176946.terrain b/public/terrain/18/429301/176946.terrain new file mode 100644 index 000000000..aef906fa4 Binary files /dev/null and b/public/terrain/18/429301/176946.terrain differ diff --git a/public/terrain/18/429301/176947.terrain b/public/terrain/18/429301/176947.terrain new file mode 100644 index 000000000..362a43e0f Binary files /dev/null and b/public/terrain/18/429301/176947.terrain differ diff --git a/public/terrain/18/429301/176948.terrain b/public/terrain/18/429301/176948.terrain new file mode 100644 index 000000000..585a12d4a Binary files /dev/null and b/public/terrain/18/429301/176948.terrain differ diff --git a/public/terrain/18/429301/176949.terrain b/public/terrain/18/429301/176949.terrain new file mode 100644 index 000000000..c0f86e2b0 Binary files /dev/null and b/public/terrain/18/429301/176949.terrain differ diff --git a/public/terrain/18/429301/176950.terrain b/public/terrain/18/429301/176950.terrain new file mode 100644 index 000000000..a6c3a31bb Binary files /dev/null and b/public/terrain/18/429301/176950.terrain differ diff --git a/public/terrain/18/429301/176951.terrain b/public/terrain/18/429301/176951.terrain new file mode 100644 index 000000000..f8df9b2b5 Binary files /dev/null and b/public/terrain/18/429301/176951.terrain differ diff --git a/public/terrain/18/429301/176952.terrain b/public/terrain/18/429301/176952.terrain new file mode 100644 index 000000000..889a2a806 Binary files /dev/null and b/public/terrain/18/429301/176952.terrain differ diff --git a/public/terrain/18/429301/176953.terrain b/public/terrain/18/429301/176953.terrain new file mode 100644 index 000000000..8340c03f7 Binary files /dev/null and b/public/terrain/18/429301/176953.terrain differ diff --git a/public/terrain/18/429301/176954.terrain b/public/terrain/18/429301/176954.terrain new file mode 100644 index 000000000..fa3dfc2b6 Binary files /dev/null and b/public/terrain/18/429301/176954.terrain differ diff --git a/public/terrain/18/429301/176955.terrain b/public/terrain/18/429301/176955.terrain new file mode 100644 index 000000000..ceafb5fad Binary files /dev/null and b/public/terrain/18/429301/176955.terrain differ diff --git a/public/terrain/18/429301/176956.terrain b/public/terrain/18/429301/176956.terrain new file mode 100644 index 000000000..ddc545fd4 Binary files /dev/null and b/public/terrain/18/429301/176956.terrain differ diff --git a/public/terrain/18/429301/176957.terrain b/public/terrain/18/429301/176957.terrain new file mode 100644 index 000000000..0149e7c5f Binary files /dev/null and b/public/terrain/18/429301/176957.terrain differ diff --git a/public/terrain/18/429301/176958.terrain b/public/terrain/18/429301/176958.terrain new file mode 100644 index 000000000..716ed9b68 Binary files /dev/null and b/public/terrain/18/429301/176958.terrain differ diff --git a/public/terrain/18/429301/176959.terrain b/public/terrain/18/429301/176959.terrain new file mode 100644 index 000000000..8a15bb966 Binary files /dev/null and b/public/terrain/18/429301/176959.terrain differ diff --git a/public/terrain/18/429301/176960.terrain b/public/terrain/18/429301/176960.terrain new file mode 100644 index 000000000..0eb32a7f4 Binary files /dev/null and b/public/terrain/18/429301/176960.terrain differ diff --git a/public/terrain/18/429301/176961.terrain b/public/terrain/18/429301/176961.terrain new file mode 100644 index 000000000..8f0cdf022 Binary files /dev/null and b/public/terrain/18/429301/176961.terrain differ diff --git a/public/terrain/18/429301/176962.terrain b/public/terrain/18/429301/176962.terrain new file mode 100644 index 000000000..b05ff4b08 Binary files /dev/null and b/public/terrain/18/429301/176962.terrain differ diff --git a/public/terrain/18/429301/176963.terrain b/public/terrain/18/429301/176963.terrain new file mode 100644 index 000000000..769938a7c Binary files /dev/null and b/public/terrain/18/429301/176963.terrain differ diff --git a/public/terrain/18/429301/176964.terrain b/public/terrain/18/429301/176964.terrain new file mode 100644 index 000000000..038e054a9 Binary files /dev/null and b/public/terrain/18/429301/176964.terrain differ diff --git a/public/terrain/18/429301/176965.terrain b/public/terrain/18/429301/176965.terrain new file mode 100644 index 000000000..583506c1c Binary files /dev/null and b/public/terrain/18/429301/176965.terrain differ diff --git a/public/terrain/18/429301/176966.terrain b/public/terrain/18/429301/176966.terrain new file mode 100644 index 000000000..301d6ed63 Binary files /dev/null and b/public/terrain/18/429301/176966.terrain differ diff --git a/public/terrain/18/429301/176967.terrain b/public/terrain/18/429301/176967.terrain new file mode 100644 index 000000000..6837362d4 Binary files /dev/null and b/public/terrain/18/429301/176967.terrain differ diff --git a/public/terrain/18/429301/176968.terrain b/public/terrain/18/429301/176968.terrain new file mode 100644 index 000000000..413af669f Binary files /dev/null and b/public/terrain/18/429301/176968.terrain differ diff --git a/public/terrain/18/429301/176969.terrain b/public/terrain/18/429301/176969.terrain new file mode 100644 index 000000000..e38d12d4c Binary files /dev/null and b/public/terrain/18/429301/176969.terrain differ diff --git a/public/terrain/18/429301/176970.terrain b/public/terrain/18/429301/176970.terrain new file mode 100644 index 000000000..ab1118ca1 Binary files /dev/null and b/public/terrain/18/429301/176970.terrain differ diff --git a/public/terrain/18/429301/176971.terrain b/public/terrain/18/429301/176971.terrain new file mode 100644 index 000000000..482bb80a3 Binary files /dev/null and b/public/terrain/18/429301/176971.terrain differ diff --git a/public/terrain/18/429301/176972.terrain b/public/terrain/18/429301/176972.terrain new file mode 100644 index 000000000..76560c9d2 Binary files /dev/null and b/public/terrain/18/429301/176972.terrain differ diff --git a/public/terrain/18/429301/176973.terrain b/public/terrain/18/429301/176973.terrain new file mode 100644 index 000000000..e76715603 Binary files /dev/null and b/public/terrain/18/429301/176973.terrain differ diff --git a/public/terrain/18/429301/176974.terrain b/public/terrain/18/429301/176974.terrain new file mode 100644 index 000000000..ebe79e8a5 Binary files /dev/null and b/public/terrain/18/429301/176974.terrain differ diff --git a/public/terrain/18/429301/176975.terrain b/public/terrain/18/429301/176975.terrain new file mode 100644 index 000000000..185983c34 Binary files /dev/null and b/public/terrain/18/429301/176975.terrain differ diff --git a/public/terrain/18/429301/176976.terrain b/public/terrain/18/429301/176976.terrain new file mode 100644 index 000000000..53bb24ffd Binary files /dev/null and b/public/terrain/18/429301/176976.terrain differ diff --git a/public/terrain/18/429301/176977.terrain b/public/terrain/18/429301/176977.terrain new file mode 100644 index 000000000..cd7aa4e74 Binary files /dev/null and b/public/terrain/18/429301/176977.terrain differ diff --git a/public/terrain/18/429301/176978.terrain b/public/terrain/18/429301/176978.terrain new file mode 100644 index 000000000..2460f9977 Binary files /dev/null and b/public/terrain/18/429301/176978.terrain differ diff --git a/public/terrain/18/429301/176979.terrain b/public/terrain/18/429301/176979.terrain new file mode 100644 index 000000000..52398e9d8 Binary files /dev/null and b/public/terrain/18/429301/176979.terrain differ diff --git a/public/terrain/18/429301/176980.terrain b/public/terrain/18/429301/176980.terrain new file mode 100644 index 000000000..230ad3136 Binary files /dev/null and b/public/terrain/18/429301/176980.terrain differ diff --git a/public/terrain/18/429301/176981.terrain b/public/terrain/18/429301/176981.terrain new file mode 100644 index 000000000..6b60e58c2 Binary files /dev/null and b/public/terrain/18/429301/176981.terrain differ diff --git a/public/terrain/18/429301/176982.terrain b/public/terrain/18/429301/176982.terrain new file mode 100644 index 000000000..57ec1aecf Binary files /dev/null and b/public/terrain/18/429301/176982.terrain differ diff --git a/public/terrain/18/429301/176983.terrain b/public/terrain/18/429301/176983.terrain new file mode 100644 index 000000000..0d0ba3bf9 Binary files /dev/null and b/public/terrain/18/429301/176983.terrain differ diff --git a/public/terrain/18/429301/176984.terrain b/public/terrain/18/429301/176984.terrain new file mode 100644 index 000000000..1bccceb78 Binary files /dev/null and b/public/terrain/18/429301/176984.terrain differ diff --git a/public/terrain/18/429301/176985.terrain b/public/terrain/18/429301/176985.terrain new file mode 100644 index 000000000..7493c327d Binary files /dev/null and b/public/terrain/18/429301/176985.terrain differ diff --git a/public/terrain/18/429301/176986.terrain b/public/terrain/18/429301/176986.terrain new file mode 100644 index 000000000..8e31bd178 Binary files /dev/null and b/public/terrain/18/429301/176986.terrain differ diff --git a/public/terrain/18/429301/176987.terrain b/public/terrain/18/429301/176987.terrain new file mode 100644 index 000000000..f16173ac5 Binary files /dev/null and b/public/terrain/18/429301/176987.terrain differ diff --git a/public/terrain/18/429301/176988.terrain b/public/terrain/18/429301/176988.terrain new file mode 100644 index 000000000..7ce8873b0 Binary files /dev/null and b/public/terrain/18/429301/176988.terrain differ diff --git a/public/terrain/18/429301/176989.terrain b/public/terrain/18/429301/176989.terrain new file mode 100644 index 000000000..30d98c984 Binary files /dev/null and b/public/terrain/18/429301/176989.terrain differ diff --git a/public/terrain/18/429301/176990.terrain b/public/terrain/18/429301/176990.terrain new file mode 100644 index 000000000..efa089f63 Binary files /dev/null and b/public/terrain/18/429301/176990.terrain differ diff --git a/public/terrain/18/429301/176991.terrain b/public/terrain/18/429301/176991.terrain new file mode 100644 index 000000000..850f71881 Binary files /dev/null and b/public/terrain/18/429301/176991.terrain differ diff --git a/public/terrain/18/429301/176992.terrain b/public/terrain/18/429301/176992.terrain new file mode 100644 index 000000000..7acbc16ca Binary files /dev/null and b/public/terrain/18/429301/176992.terrain differ diff --git a/public/terrain/18/429301/176993.terrain b/public/terrain/18/429301/176993.terrain new file mode 100644 index 000000000..efb7c61e5 Binary files /dev/null and b/public/terrain/18/429301/176993.terrain differ diff --git a/public/terrain/18/429301/176994.terrain b/public/terrain/18/429301/176994.terrain new file mode 100644 index 000000000..0dfdf473e Binary files /dev/null and b/public/terrain/18/429301/176994.terrain differ diff --git a/public/terrain/18/429301/176995.terrain b/public/terrain/18/429301/176995.terrain new file mode 100644 index 000000000..f0bed3d83 Binary files /dev/null and b/public/terrain/18/429301/176995.terrain differ diff --git a/public/terrain/18/429301/176996.terrain b/public/terrain/18/429301/176996.terrain new file mode 100644 index 000000000..79f0acc08 Binary files /dev/null and b/public/terrain/18/429301/176996.terrain differ diff --git a/public/terrain/18/429301/176997.terrain b/public/terrain/18/429301/176997.terrain new file mode 100644 index 000000000..3cec579e5 Binary files /dev/null and b/public/terrain/18/429301/176997.terrain differ diff --git a/public/terrain/18/429301/176998.terrain b/public/terrain/18/429301/176998.terrain new file mode 100644 index 000000000..cbe4cf36f Binary files /dev/null and b/public/terrain/18/429301/176998.terrain differ diff --git a/public/terrain/18/429301/176999.terrain b/public/terrain/18/429301/176999.terrain new file mode 100644 index 000000000..86a0ac92d Binary files /dev/null and b/public/terrain/18/429301/176999.terrain differ diff --git a/public/terrain/18/429301/177000.terrain b/public/terrain/18/429301/177000.terrain new file mode 100644 index 000000000..f95b06f62 Binary files /dev/null and b/public/terrain/18/429301/177000.terrain differ diff --git a/public/terrain/18/429301/177001.terrain b/public/terrain/18/429301/177001.terrain new file mode 100644 index 000000000..221b90cbc Binary files /dev/null and b/public/terrain/18/429301/177001.terrain differ diff --git a/public/terrain/18/429301/177002.terrain b/public/terrain/18/429301/177002.terrain new file mode 100644 index 000000000..e9763610d Binary files /dev/null and b/public/terrain/18/429301/177002.terrain differ diff --git a/public/terrain/18/429301/177003.terrain b/public/terrain/18/429301/177003.terrain new file mode 100644 index 000000000..01ae57692 Binary files /dev/null and b/public/terrain/18/429301/177003.terrain differ diff --git a/public/terrain/18/429301/177004.terrain b/public/terrain/18/429301/177004.terrain new file mode 100644 index 000000000..372a22499 Binary files /dev/null and b/public/terrain/18/429301/177004.terrain differ diff --git a/public/terrain/18/429301/177005.terrain b/public/terrain/18/429301/177005.terrain new file mode 100644 index 000000000..8ae020ed9 Binary files /dev/null and b/public/terrain/18/429301/177005.terrain differ diff --git a/public/terrain/18/429301/177006.terrain b/public/terrain/18/429301/177006.terrain new file mode 100644 index 000000000..c2682ac0a Binary files /dev/null and b/public/terrain/18/429301/177006.terrain differ diff --git a/public/terrain/18/429301/177007.terrain b/public/terrain/18/429301/177007.terrain new file mode 100644 index 000000000..3df365faa Binary files /dev/null and b/public/terrain/18/429301/177007.terrain differ diff --git a/public/terrain/18/429301/177008.terrain b/public/terrain/18/429301/177008.terrain new file mode 100644 index 000000000..fa20645a7 Binary files /dev/null and b/public/terrain/18/429301/177008.terrain differ diff --git a/public/terrain/18/429301/177009.terrain b/public/terrain/18/429301/177009.terrain new file mode 100644 index 000000000..a4f8f059c Binary files /dev/null and b/public/terrain/18/429301/177009.terrain differ diff --git a/public/terrain/18/429301/177010.terrain b/public/terrain/18/429301/177010.terrain new file mode 100644 index 000000000..b309c71dc Binary files /dev/null and b/public/terrain/18/429301/177010.terrain differ diff --git a/public/terrain/18/429301/177011.terrain b/public/terrain/18/429301/177011.terrain new file mode 100644 index 000000000..bee958bd1 Binary files /dev/null and b/public/terrain/18/429301/177011.terrain differ diff --git a/public/terrain/18/429301/177012.terrain b/public/terrain/18/429301/177012.terrain new file mode 100644 index 000000000..2a57eefe2 Binary files /dev/null and b/public/terrain/18/429301/177012.terrain differ diff --git a/public/terrain/18/429301/177013.terrain b/public/terrain/18/429301/177013.terrain new file mode 100644 index 000000000..e1f1e59dd Binary files /dev/null and b/public/terrain/18/429301/177013.terrain differ diff --git a/public/terrain/18/429301/177014.terrain b/public/terrain/18/429301/177014.terrain new file mode 100644 index 000000000..dd6616fc8 Binary files /dev/null and b/public/terrain/18/429301/177014.terrain differ diff --git a/public/terrain/18/429301/177015.terrain b/public/terrain/18/429301/177015.terrain new file mode 100644 index 000000000..f655ee252 Binary files /dev/null and b/public/terrain/18/429301/177015.terrain differ diff --git a/public/terrain/18/429301/177016.terrain b/public/terrain/18/429301/177016.terrain new file mode 100644 index 000000000..402bede13 Binary files /dev/null and b/public/terrain/18/429301/177016.terrain differ diff --git a/public/terrain/18/429301/177017.terrain b/public/terrain/18/429301/177017.terrain new file mode 100644 index 000000000..74f117339 Binary files /dev/null and b/public/terrain/18/429301/177017.terrain differ diff --git a/public/terrain/18/429301/177018.terrain b/public/terrain/18/429301/177018.terrain new file mode 100644 index 000000000..242db0001 Binary files /dev/null and b/public/terrain/18/429301/177018.terrain differ diff --git a/public/terrain/18/429301/177019.terrain b/public/terrain/18/429301/177019.terrain new file mode 100644 index 000000000..5f5b034e0 Binary files /dev/null and b/public/terrain/18/429301/177019.terrain differ diff --git a/public/terrain/18/429301/177020.terrain b/public/terrain/18/429301/177020.terrain new file mode 100644 index 000000000..146e3ea76 Binary files /dev/null and b/public/terrain/18/429301/177020.terrain differ diff --git a/public/terrain/18/429301/177021.terrain b/public/terrain/18/429301/177021.terrain new file mode 100644 index 000000000..2e4ff6cee Binary files /dev/null and b/public/terrain/18/429301/177021.terrain differ diff --git a/public/terrain/18/429301/177022.terrain b/public/terrain/18/429301/177022.terrain new file mode 100644 index 000000000..9219fe501 Binary files /dev/null and b/public/terrain/18/429301/177022.terrain differ diff --git a/public/terrain/18/429301/177023.terrain b/public/terrain/18/429301/177023.terrain new file mode 100644 index 000000000..9107b41a3 Binary files /dev/null and b/public/terrain/18/429301/177023.terrain differ diff --git a/public/terrain/18/429301/177024.terrain b/public/terrain/18/429301/177024.terrain new file mode 100644 index 000000000..8bd7b4684 Binary files /dev/null and b/public/terrain/18/429301/177024.terrain differ diff --git a/public/terrain/18/429301/177025.terrain b/public/terrain/18/429301/177025.terrain new file mode 100644 index 000000000..b7cfadc2e Binary files /dev/null and b/public/terrain/18/429301/177025.terrain differ diff --git a/public/terrain/18/429301/177026.terrain b/public/terrain/18/429301/177026.terrain new file mode 100644 index 000000000..ea99ea838 Binary files /dev/null and b/public/terrain/18/429301/177026.terrain differ diff --git a/public/terrain/18/429301/177027.terrain b/public/terrain/18/429301/177027.terrain new file mode 100644 index 000000000..a5a185f68 Binary files /dev/null and b/public/terrain/18/429301/177027.terrain differ diff --git a/public/terrain/18/429301/177028.terrain b/public/terrain/18/429301/177028.terrain new file mode 100644 index 000000000..8bdad1d34 Binary files /dev/null and b/public/terrain/18/429301/177028.terrain differ diff --git a/public/terrain/18/429301/177029.terrain b/public/terrain/18/429301/177029.terrain new file mode 100644 index 000000000..55da0e532 Binary files /dev/null and b/public/terrain/18/429301/177029.terrain differ diff --git a/public/terrain/18/429302/176871.terrain b/public/terrain/18/429302/176871.terrain new file mode 100644 index 000000000..d0c6247f4 Binary files /dev/null and b/public/terrain/18/429302/176871.terrain differ diff --git a/public/terrain/18/429302/176872.terrain b/public/terrain/18/429302/176872.terrain new file mode 100644 index 000000000..b88f2a037 Binary files /dev/null and b/public/terrain/18/429302/176872.terrain differ diff --git a/public/terrain/18/429302/176873.terrain b/public/terrain/18/429302/176873.terrain new file mode 100644 index 000000000..63e22ddaf Binary files /dev/null and b/public/terrain/18/429302/176873.terrain differ diff --git a/public/terrain/18/429302/176874.terrain b/public/terrain/18/429302/176874.terrain new file mode 100644 index 000000000..52a22ab3c Binary files /dev/null and b/public/terrain/18/429302/176874.terrain differ diff --git a/public/terrain/18/429302/176875.terrain b/public/terrain/18/429302/176875.terrain new file mode 100644 index 000000000..63bb9b90a Binary files /dev/null and b/public/terrain/18/429302/176875.terrain differ diff --git a/public/terrain/18/429302/176876.terrain b/public/terrain/18/429302/176876.terrain new file mode 100644 index 000000000..86aebc0b4 Binary files /dev/null and b/public/terrain/18/429302/176876.terrain differ diff --git a/public/terrain/18/429302/176877.terrain b/public/terrain/18/429302/176877.terrain new file mode 100644 index 000000000..e0c6db775 Binary files /dev/null and b/public/terrain/18/429302/176877.terrain differ diff --git a/public/terrain/18/429302/176878.terrain b/public/terrain/18/429302/176878.terrain new file mode 100644 index 000000000..9c960ada0 Binary files /dev/null and b/public/terrain/18/429302/176878.terrain differ diff --git a/public/terrain/18/429302/176879.terrain b/public/terrain/18/429302/176879.terrain new file mode 100644 index 000000000..dcef92b43 Binary files /dev/null and b/public/terrain/18/429302/176879.terrain differ diff --git a/public/terrain/18/429302/176880.terrain b/public/terrain/18/429302/176880.terrain new file mode 100644 index 000000000..21afae650 Binary files /dev/null and b/public/terrain/18/429302/176880.terrain differ diff --git a/public/terrain/18/429302/176881.terrain b/public/terrain/18/429302/176881.terrain new file mode 100644 index 000000000..6c765919d Binary files /dev/null and b/public/terrain/18/429302/176881.terrain differ diff --git a/public/terrain/18/429302/176882.terrain b/public/terrain/18/429302/176882.terrain new file mode 100644 index 000000000..31c18d948 Binary files /dev/null and b/public/terrain/18/429302/176882.terrain differ diff --git a/public/terrain/18/429302/176883.terrain b/public/terrain/18/429302/176883.terrain new file mode 100644 index 000000000..527e8988b Binary files /dev/null and b/public/terrain/18/429302/176883.terrain differ diff --git a/public/terrain/18/429302/176884.terrain b/public/terrain/18/429302/176884.terrain new file mode 100644 index 000000000..ad0f3cc28 Binary files /dev/null and b/public/terrain/18/429302/176884.terrain differ diff --git a/public/terrain/18/429302/176885.terrain b/public/terrain/18/429302/176885.terrain new file mode 100644 index 000000000..4cf782f7e Binary files /dev/null and b/public/terrain/18/429302/176885.terrain differ diff --git a/public/terrain/18/429302/176886.terrain b/public/terrain/18/429302/176886.terrain new file mode 100644 index 000000000..54269354e Binary files /dev/null and b/public/terrain/18/429302/176886.terrain differ diff --git a/public/terrain/18/429302/176887.terrain b/public/terrain/18/429302/176887.terrain new file mode 100644 index 000000000..4f690eff7 Binary files /dev/null and b/public/terrain/18/429302/176887.terrain differ diff --git a/public/terrain/18/429302/176888.terrain b/public/terrain/18/429302/176888.terrain new file mode 100644 index 000000000..5da80db14 Binary files /dev/null and b/public/terrain/18/429302/176888.terrain differ diff --git a/public/terrain/18/429302/176889.terrain b/public/terrain/18/429302/176889.terrain new file mode 100644 index 000000000..2d8e5db8e Binary files /dev/null and b/public/terrain/18/429302/176889.terrain differ diff --git a/public/terrain/18/429302/176890.terrain b/public/terrain/18/429302/176890.terrain new file mode 100644 index 000000000..8f15e7220 Binary files /dev/null and b/public/terrain/18/429302/176890.terrain differ diff --git a/public/terrain/18/429302/176891.terrain b/public/terrain/18/429302/176891.terrain new file mode 100644 index 000000000..95e8462eb Binary files /dev/null and b/public/terrain/18/429302/176891.terrain differ diff --git a/public/terrain/18/429302/176892.terrain b/public/terrain/18/429302/176892.terrain new file mode 100644 index 000000000..f15cff7c3 Binary files /dev/null and b/public/terrain/18/429302/176892.terrain differ diff --git a/public/terrain/18/429302/176893.terrain b/public/terrain/18/429302/176893.terrain new file mode 100644 index 000000000..a420729ea Binary files /dev/null and b/public/terrain/18/429302/176893.terrain differ diff --git a/public/terrain/18/429302/176894.terrain b/public/terrain/18/429302/176894.terrain new file mode 100644 index 000000000..a466ef5cf Binary files /dev/null and b/public/terrain/18/429302/176894.terrain differ diff --git a/public/terrain/18/429302/176895.terrain b/public/terrain/18/429302/176895.terrain new file mode 100644 index 000000000..6aeac90b3 Binary files /dev/null and b/public/terrain/18/429302/176895.terrain differ diff --git a/public/terrain/18/429302/176896.terrain b/public/terrain/18/429302/176896.terrain new file mode 100644 index 000000000..39484d3dd Binary files /dev/null and b/public/terrain/18/429302/176896.terrain differ diff --git a/public/terrain/18/429302/176897.terrain b/public/terrain/18/429302/176897.terrain new file mode 100644 index 000000000..3fc0d91cd Binary files /dev/null and b/public/terrain/18/429302/176897.terrain differ diff --git a/public/terrain/18/429302/176898.terrain b/public/terrain/18/429302/176898.terrain new file mode 100644 index 000000000..139be310c Binary files /dev/null and b/public/terrain/18/429302/176898.terrain differ diff --git a/public/terrain/18/429302/176899.terrain b/public/terrain/18/429302/176899.terrain new file mode 100644 index 000000000..4c75a10ae Binary files /dev/null and b/public/terrain/18/429302/176899.terrain differ diff --git a/public/terrain/18/429302/176900.terrain b/public/terrain/18/429302/176900.terrain new file mode 100644 index 000000000..2da8fde31 Binary files /dev/null and b/public/terrain/18/429302/176900.terrain differ diff --git a/public/terrain/18/429302/176901.terrain b/public/terrain/18/429302/176901.terrain new file mode 100644 index 000000000..157ffe3eb Binary files /dev/null and b/public/terrain/18/429302/176901.terrain differ diff --git a/public/terrain/18/429302/176902.terrain b/public/terrain/18/429302/176902.terrain new file mode 100644 index 000000000..932013bd5 Binary files /dev/null and b/public/terrain/18/429302/176902.terrain differ diff --git a/public/terrain/18/429302/176903.terrain b/public/terrain/18/429302/176903.terrain new file mode 100644 index 000000000..51a9c0a6f Binary files /dev/null and b/public/terrain/18/429302/176903.terrain differ diff --git a/public/terrain/18/429302/176904.terrain b/public/terrain/18/429302/176904.terrain new file mode 100644 index 000000000..0f0a25acd Binary files /dev/null and b/public/terrain/18/429302/176904.terrain differ diff --git a/public/terrain/18/429302/176905.terrain b/public/terrain/18/429302/176905.terrain new file mode 100644 index 000000000..806319956 Binary files /dev/null and b/public/terrain/18/429302/176905.terrain differ diff --git a/public/terrain/18/429302/176906.terrain b/public/terrain/18/429302/176906.terrain new file mode 100644 index 000000000..f4599a792 Binary files /dev/null and b/public/terrain/18/429302/176906.terrain differ diff --git a/public/terrain/18/429302/176907.terrain b/public/terrain/18/429302/176907.terrain new file mode 100644 index 000000000..c1a6b4574 Binary files /dev/null and b/public/terrain/18/429302/176907.terrain differ diff --git a/public/terrain/18/429302/176908.terrain b/public/terrain/18/429302/176908.terrain new file mode 100644 index 000000000..036309ab1 Binary files /dev/null and b/public/terrain/18/429302/176908.terrain differ diff --git a/public/terrain/18/429302/176909.terrain b/public/terrain/18/429302/176909.terrain new file mode 100644 index 000000000..f51b80400 Binary files /dev/null and b/public/terrain/18/429302/176909.terrain differ diff --git a/public/terrain/18/429302/176910.terrain b/public/terrain/18/429302/176910.terrain new file mode 100644 index 000000000..768f864af Binary files /dev/null and b/public/terrain/18/429302/176910.terrain differ diff --git a/public/terrain/18/429302/176911.terrain b/public/terrain/18/429302/176911.terrain new file mode 100644 index 000000000..f8b3682b9 Binary files /dev/null and b/public/terrain/18/429302/176911.terrain differ diff --git a/public/terrain/18/429302/176912.terrain b/public/terrain/18/429302/176912.terrain new file mode 100644 index 000000000..7e2dd7221 Binary files /dev/null and b/public/terrain/18/429302/176912.terrain differ diff --git a/public/terrain/18/429302/176913.terrain b/public/terrain/18/429302/176913.terrain new file mode 100644 index 000000000..8401a8cd8 Binary files /dev/null and b/public/terrain/18/429302/176913.terrain differ diff --git a/public/terrain/18/429302/176914.terrain b/public/terrain/18/429302/176914.terrain new file mode 100644 index 000000000..70021137b Binary files /dev/null and b/public/terrain/18/429302/176914.terrain differ diff --git a/public/terrain/18/429302/176915.terrain b/public/terrain/18/429302/176915.terrain new file mode 100644 index 000000000..dd32f8094 Binary files /dev/null and b/public/terrain/18/429302/176915.terrain differ diff --git a/public/terrain/18/429302/176916.terrain b/public/terrain/18/429302/176916.terrain new file mode 100644 index 000000000..234c34225 Binary files /dev/null and b/public/terrain/18/429302/176916.terrain differ diff --git a/public/terrain/18/429302/176917.terrain b/public/terrain/18/429302/176917.terrain new file mode 100644 index 000000000..d1285bb18 Binary files /dev/null and b/public/terrain/18/429302/176917.terrain differ diff --git a/public/terrain/18/429302/176918.terrain b/public/terrain/18/429302/176918.terrain new file mode 100644 index 000000000..bf388e853 Binary files /dev/null and b/public/terrain/18/429302/176918.terrain differ diff --git a/public/terrain/18/429302/176919.terrain b/public/terrain/18/429302/176919.terrain new file mode 100644 index 000000000..5d39092b1 Binary files /dev/null and b/public/terrain/18/429302/176919.terrain differ diff --git a/public/terrain/18/429302/176920.terrain b/public/terrain/18/429302/176920.terrain new file mode 100644 index 000000000..b6b1659ec Binary files /dev/null and b/public/terrain/18/429302/176920.terrain differ diff --git a/public/terrain/18/429302/176921.terrain b/public/terrain/18/429302/176921.terrain new file mode 100644 index 000000000..a1c13bcaf Binary files /dev/null and b/public/terrain/18/429302/176921.terrain differ diff --git a/public/terrain/18/429302/176922.terrain b/public/terrain/18/429302/176922.terrain new file mode 100644 index 000000000..b72ecb6c0 Binary files /dev/null and b/public/terrain/18/429302/176922.terrain differ diff --git a/public/terrain/18/429302/176923.terrain b/public/terrain/18/429302/176923.terrain new file mode 100644 index 000000000..e588b0a43 Binary files /dev/null and b/public/terrain/18/429302/176923.terrain differ diff --git a/public/terrain/18/429302/176924.terrain b/public/terrain/18/429302/176924.terrain new file mode 100644 index 000000000..470210d59 Binary files /dev/null and b/public/terrain/18/429302/176924.terrain differ diff --git a/public/terrain/18/429302/176925.terrain b/public/terrain/18/429302/176925.terrain new file mode 100644 index 000000000..c1ddeb741 Binary files /dev/null and b/public/terrain/18/429302/176925.terrain differ diff --git a/public/terrain/18/429302/176926.terrain b/public/terrain/18/429302/176926.terrain new file mode 100644 index 000000000..6f51fd3d5 Binary files /dev/null and b/public/terrain/18/429302/176926.terrain differ diff --git a/public/terrain/18/429302/176927.terrain b/public/terrain/18/429302/176927.terrain new file mode 100644 index 000000000..0a9daa6a7 Binary files /dev/null and b/public/terrain/18/429302/176927.terrain differ diff --git a/public/terrain/18/429302/176928.terrain b/public/terrain/18/429302/176928.terrain new file mode 100644 index 000000000..1d0bab6bc Binary files /dev/null and b/public/terrain/18/429302/176928.terrain differ diff --git a/public/terrain/18/429302/176929.terrain b/public/terrain/18/429302/176929.terrain new file mode 100644 index 000000000..a4e5d7308 Binary files /dev/null and b/public/terrain/18/429302/176929.terrain differ diff --git a/public/terrain/18/429302/176930.terrain b/public/terrain/18/429302/176930.terrain new file mode 100644 index 000000000..b9f0c70b9 Binary files /dev/null and b/public/terrain/18/429302/176930.terrain differ diff --git a/public/terrain/18/429302/176931.terrain b/public/terrain/18/429302/176931.terrain new file mode 100644 index 000000000..95891f8d3 Binary files /dev/null and b/public/terrain/18/429302/176931.terrain differ diff --git a/public/terrain/18/429302/176932.terrain b/public/terrain/18/429302/176932.terrain new file mode 100644 index 000000000..14d869180 Binary files /dev/null and b/public/terrain/18/429302/176932.terrain differ diff --git a/public/terrain/18/429302/176933.terrain b/public/terrain/18/429302/176933.terrain new file mode 100644 index 000000000..cf3ebf83e Binary files /dev/null and b/public/terrain/18/429302/176933.terrain differ diff --git a/public/terrain/18/429302/176934.terrain b/public/terrain/18/429302/176934.terrain new file mode 100644 index 000000000..aca7e1131 Binary files /dev/null and b/public/terrain/18/429302/176934.terrain differ diff --git a/public/terrain/18/429302/176935.terrain b/public/terrain/18/429302/176935.terrain new file mode 100644 index 000000000..046686b88 Binary files /dev/null and b/public/terrain/18/429302/176935.terrain differ diff --git a/public/terrain/18/429302/176936.terrain b/public/terrain/18/429302/176936.terrain new file mode 100644 index 000000000..305322d39 Binary files /dev/null and b/public/terrain/18/429302/176936.terrain differ diff --git a/public/terrain/18/429302/176937.terrain b/public/terrain/18/429302/176937.terrain new file mode 100644 index 000000000..9c7593a0c Binary files /dev/null and b/public/terrain/18/429302/176937.terrain differ diff --git a/public/terrain/18/429302/176938.terrain b/public/terrain/18/429302/176938.terrain new file mode 100644 index 000000000..27eff0c6e Binary files /dev/null and b/public/terrain/18/429302/176938.terrain differ diff --git a/public/terrain/18/429302/176939.terrain b/public/terrain/18/429302/176939.terrain new file mode 100644 index 000000000..a21ebe739 Binary files /dev/null and b/public/terrain/18/429302/176939.terrain differ diff --git a/public/terrain/18/429302/176940.terrain b/public/terrain/18/429302/176940.terrain new file mode 100644 index 000000000..dbb4a0355 Binary files /dev/null and b/public/terrain/18/429302/176940.terrain differ diff --git a/public/terrain/18/429302/176941.terrain b/public/terrain/18/429302/176941.terrain new file mode 100644 index 000000000..3d7987fb7 Binary files /dev/null and b/public/terrain/18/429302/176941.terrain differ diff --git a/public/terrain/18/429302/176942.terrain b/public/terrain/18/429302/176942.terrain new file mode 100644 index 000000000..5cebd3316 Binary files /dev/null and b/public/terrain/18/429302/176942.terrain differ diff --git a/public/terrain/18/429302/176943.terrain b/public/terrain/18/429302/176943.terrain new file mode 100644 index 000000000..f486530a1 Binary files /dev/null and b/public/terrain/18/429302/176943.terrain differ diff --git a/public/terrain/18/429302/176944.terrain b/public/terrain/18/429302/176944.terrain new file mode 100644 index 000000000..c83871e71 Binary files /dev/null and b/public/terrain/18/429302/176944.terrain differ diff --git a/public/terrain/18/429302/176945.terrain b/public/terrain/18/429302/176945.terrain new file mode 100644 index 000000000..584869979 Binary files /dev/null and b/public/terrain/18/429302/176945.terrain differ diff --git a/public/terrain/18/429302/176946.terrain b/public/terrain/18/429302/176946.terrain new file mode 100644 index 000000000..114df16b9 Binary files /dev/null and b/public/terrain/18/429302/176946.terrain differ diff --git a/public/terrain/18/429302/176947.terrain b/public/terrain/18/429302/176947.terrain new file mode 100644 index 000000000..2ac5e38a2 Binary files /dev/null and b/public/terrain/18/429302/176947.terrain differ diff --git a/public/terrain/18/429302/176948.terrain b/public/terrain/18/429302/176948.terrain new file mode 100644 index 000000000..a4af54319 Binary files /dev/null and b/public/terrain/18/429302/176948.terrain differ diff --git a/public/terrain/18/429302/176949.terrain b/public/terrain/18/429302/176949.terrain new file mode 100644 index 000000000..3a9c0cb5f Binary files /dev/null and b/public/terrain/18/429302/176949.terrain differ diff --git a/public/terrain/18/429302/176950.terrain b/public/terrain/18/429302/176950.terrain new file mode 100644 index 000000000..fc7da53d6 Binary files /dev/null and b/public/terrain/18/429302/176950.terrain differ diff --git a/public/terrain/18/429302/176951.terrain b/public/terrain/18/429302/176951.terrain new file mode 100644 index 000000000..9f0cef918 Binary files /dev/null and b/public/terrain/18/429302/176951.terrain differ diff --git a/public/terrain/18/429302/176952.terrain b/public/terrain/18/429302/176952.terrain new file mode 100644 index 000000000..b936483b5 Binary files /dev/null and b/public/terrain/18/429302/176952.terrain differ diff --git a/public/terrain/18/429302/176953.terrain b/public/terrain/18/429302/176953.terrain new file mode 100644 index 000000000..e9b3cf469 Binary files /dev/null and b/public/terrain/18/429302/176953.terrain differ diff --git a/public/terrain/18/429302/176954.terrain b/public/terrain/18/429302/176954.terrain new file mode 100644 index 000000000..004eb9f94 Binary files /dev/null and b/public/terrain/18/429302/176954.terrain differ diff --git a/public/terrain/18/429302/176955.terrain b/public/terrain/18/429302/176955.terrain new file mode 100644 index 000000000..78e651752 Binary files /dev/null and b/public/terrain/18/429302/176955.terrain differ diff --git a/public/terrain/18/429302/176956.terrain b/public/terrain/18/429302/176956.terrain new file mode 100644 index 000000000..e321c0765 Binary files /dev/null and b/public/terrain/18/429302/176956.terrain differ diff --git a/public/terrain/18/429302/176957.terrain b/public/terrain/18/429302/176957.terrain new file mode 100644 index 000000000..469e66c76 Binary files /dev/null and b/public/terrain/18/429302/176957.terrain differ diff --git a/public/terrain/18/429302/176958.terrain b/public/terrain/18/429302/176958.terrain new file mode 100644 index 000000000..aa6712336 Binary files /dev/null and b/public/terrain/18/429302/176958.terrain differ diff --git a/public/terrain/18/429302/176959.terrain b/public/terrain/18/429302/176959.terrain new file mode 100644 index 000000000..baa1f2f21 Binary files /dev/null and b/public/terrain/18/429302/176959.terrain differ diff --git a/public/terrain/18/429302/176960.terrain b/public/terrain/18/429302/176960.terrain new file mode 100644 index 000000000..1ce606c24 Binary files /dev/null and b/public/terrain/18/429302/176960.terrain differ diff --git a/public/terrain/18/429302/176961.terrain b/public/terrain/18/429302/176961.terrain new file mode 100644 index 000000000..623d1f248 Binary files /dev/null and b/public/terrain/18/429302/176961.terrain differ diff --git a/public/terrain/18/429302/176962.terrain b/public/terrain/18/429302/176962.terrain new file mode 100644 index 000000000..cb9d0c8a2 Binary files /dev/null and b/public/terrain/18/429302/176962.terrain differ diff --git a/public/terrain/18/429302/176963.terrain b/public/terrain/18/429302/176963.terrain new file mode 100644 index 000000000..f673484a9 Binary files /dev/null and b/public/terrain/18/429302/176963.terrain differ diff --git a/public/terrain/18/429302/176964.terrain b/public/terrain/18/429302/176964.terrain new file mode 100644 index 000000000..f91fcd343 Binary files /dev/null and b/public/terrain/18/429302/176964.terrain differ diff --git a/public/terrain/18/429302/176965.terrain b/public/terrain/18/429302/176965.terrain new file mode 100644 index 000000000..3cf7fa4dc Binary files /dev/null and b/public/terrain/18/429302/176965.terrain differ diff --git a/public/terrain/18/429302/176966.terrain b/public/terrain/18/429302/176966.terrain new file mode 100644 index 000000000..f517ac5fe Binary files /dev/null and b/public/terrain/18/429302/176966.terrain differ diff --git a/public/terrain/18/429302/176967.terrain b/public/terrain/18/429302/176967.terrain new file mode 100644 index 000000000..12be7ce4f Binary files /dev/null and b/public/terrain/18/429302/176967.terrain differ diff --git a/public/terrain/18/429302/176968.terrain b/public/terrain/18/429302/176968.terrain new file mode 100644 index 000000000..47be8c01b Binary files /dev/null and b/public/terrain/18/429302/176968.terrain differ diff --git a/public/terrain/18/429302/176969.terrain b/public/terrain/18/429302/176969.terrain new file mode 100644 index 000000000..66809a8e3 Binary files /dev/null and b/public/terrain/18/429302/176969.terrain differ diff --git a/public/terrain/18/429302/176970.terrain b/public/terrain/18/429302/176970.terrain new file mode 100644 index 000000000..3f0d4e429 Binary files /dev/null and b/public/terrain/18/429302/176970.terrain differ diff --git a/public/terrain/18/429302/176971.terrain b/public/terrain/18/429302/176971.terrain new file mode 100644 index 000000000..00b8f156b Binary files /dev/null and b/public/terrain/18/429302/176971.terrain differ diff --git a/public/terrain/18/429302/176972.terrain b/public/terrain/18/429302/176972.terrain new file mode 100644 index 000000000..f5bebf0d6 Binary files /dev/null and b/public/terrain/18/429302/176972.terrain differ diff --git a/public/terrain/18/429302/176973.terrain b/public/terrain/18/429302/176973.terrain new file mode 100644 index 000000000..62cda9de1 Binary files /dev/null and b/public/terrain/18/429302/176973.terrain differ diff --git a/public/terrain/18/429302/176974.terrain b/public/terrain/18/429302/176974.terrain new file mode 100644 index 000000000..9d4e09a5d Binary files /dev/null and b/public/terrain/18/429302/176974.terrain differ diff --git a/public/terrain/18/429302/176975.terrain b/public/terrain/18/429302/176975.terrain new file mode 100644 index 000000000..823ace852 Binary files /dev/null and b/public/terrain/18/429302/176975.terrain differ diff --git a/public/terrain/18/429302/176976.terrain b/public/terrain/18/429302/176976.terrain new file mode 100644 index 000000000..7c302ba9f Binary files /dev/null and b/public/terrain/18/429302/176976.terrain differ diff --git a/public/terrain/18/429302/176977.terrain b/public/terrain/18/429302/176977.terrain new file mode 100644 index 000000000..4bc462ea0 Binary files /dev/null and b/public/terrain/18/429302/176977.terrain differ diff --git a/public/terrain/18/429302/176978.terrain b/public/terrain/18/429302/176978.terrain new file mode 100644 index 000000000..71876efba Binary files /dev/null and b/public/terrain/18/429302/176978.terrain differ diff --git a/public/terrain/18/429302/176979.terrain b/public/terrain/18/429302/176979.terrain new file mode 100644 index 000000000..0afe0194c Binary files /dev/null and b/public/terrain/18/429302/176979.terrain differ diff --git a/public/terrain/18/429302/176980.terrain b/public/terrain/18/429302/176980.terrain new file mode 100644 index 000000000..10bc139db Binary files /dev/null and b/public/terrain/18/429302/176980.terrain differ diff --git a/public/terrain/18/429302/176981.terrain b/public/terrain/18/429302/176981.terrain new file mode 100644 index 000000000..64ab909b2 Binary files /dev/null and b/public/terrain/18/429302/176981.terrain differ diff --git a/public/terrain/18/429302/176982.terrain b/public/terrain/18/429302/176982.terrain new file mode 100644 index 000000000..58c2edeef Binary files /dev/null and b/public/terrain/18/429302/176982.terrain differ diff --git a/public/terrain/18/429302/176983.terrain b/public/terrain/18/429302/176983.terrain new file mode 100644 index 000000000..f1446660f Binary files /dev/null and b/public/terrain/18/429302/176983.terrain differ diff --git a/public/terrain/18/429302/176984.terrain b/public/terrain/18/429302/176984.terrain new file mode 100644 index 000000000..ad8046043 Binary files /dev/null and b/public/terrain/18/429302/176984.terrain differ diff --git a/public/terrain/18/429302/176985.terrain b/public/terrain/18/429302/176985.terrain new file mode 100644 index 000000000..5d5ccae89 Binary files /dev/null and b/public/terrain/18/429302/176985.terrain differ diff --git a/public/terrain/18/429302/176986.terrain b/public/terrain/18/429302/176986.terrain new file mode 100644 index 000000000..e6a5b4c34 Binary files /dev/null and b/public/terrain/18/429302/176986.terrain differ diff --git a/public/terrain/18/429302/176987.terrain b/public/terrain/18/429302/176987.terrain new file mode 100644 index 000000000..36ae23774 Binary files /dev/null and b/public/terrain/18/429302/176987.terrain differ diff --git a/public/terrain/18/429302/176988.terrain b/public/terrain/18/429302/176988.terrain new file mode 100644 index 000000000..43b560d22 Binary files /dev/null and b/public/terrain/18/429302/176988.terrain differ diff --git a/public/terrain/18/429302/176989.terrain b/public/terrain/18/429302/176989.terrain new file mode 100644 index 000000000..4983684ca Binary files /dev/null and b/public/terrain/18/429302/176989.terrain differ diff --git a/public/terrain/18/429302/176990.terrain b/public/terrain/18/429302/176990.terrain new file mode 100644 index 000000000..1e3d70de7 Binary files /dev/null and b/public/terrain/18/429302/176990.terrain differ diff --git a/public/terrain/18/429302/176991.terrain b/public/terrain/18/429302/176991.terrain new file mode 100644 index 000000000..5702eabd9 Binary files /dev/null and b/public/terrain/18/429302/176991.terrain differ diff --git a/public/terrain/18/429302/176992.terrain b/public/terrain/18/429302/176992.terrain new file mode 100644 index 000000000..8ed0de35a Binary files /dev/null and b/public/terrain/18/429302/176992.terrain differ diff --git a/public/terrain/18/429302/176993.terrain b/public/terrain/18/429302/176993.terrain new file mode 100644 index 000000000..e8b97fa5c Binary files /dev/null and b/public/terrain/18/429302/176993.terrain differ diff --git a/public/terrain/18/429302/176994.terrain b/public/terrain/18/429302/176994.terrain new file mode 100644 index 000000000..b59a0632d Binary files /dev/null and b/public/terrain/18/429302/176994.terrain differ diff --git a/public/terrain/18/429302/176995.terrain b/public/terrain/18/429302/176995.terrain new file mode 100644 index 000000000..ea1b51945 Binary files /dev/null and b/public/terrain/18/429302/176995.terrain differ diff --git a/public/terrain/18/429302/176996.terrain b/public/terrain/18/429302/176996.terrain new file mode 100644 index 000000000..3cc011e5f Binary files /dev/null and b/public/terrain/18/429302/176996.terrain differ diff --git a/public/terrain/18/429302/176997.terrain b/public/terrain/18/429302/176997.terrain new file mode 100644 index 000000000..33f16ca9e Binary files /dev/null and b/public/terrain/18/429302/176997.terrain differ diff --git a/public/terrain/18/429302/176998.terrain b/public/terrain/18/429302/176998.terrain new file mode 100644 index 000000000..da9734dc5 Binary files /dev/null and b/public/terrain/18/429302/176998.terrain differ diff --git a/public/terrain/18/429302/176999.terrain b/public/terrain/18/429302/176999.terrain new file mode 100644 index 000000000..eaff66f7e Binary files /dev/null and b/public/terrain/18/429302/176999.terrain differ diff --git a/public/terrain/18/429302/177000.terrain b/public/terrain/18/429302/177000.terrain new file mode 100644 index 000000000..4595a6261 Binary files /dev/null and b/public/terrain/18/429302/177000.terrain differ diff --git a/public/terrain/18/429302/177001.terrain b/public/terrain/18/429302/177001.terrain new file mode 100644 index 000000000..d2edb74c0 Binary files /dev/null and b/public/terrain/18/429302/177001.terrain differ diff --git a/public/terrain/18/429302/177002.terrain b/public/terrain/18/429302/177002.terrain new file mode 100644 index 000000000..8a11abfc6 Binary files /dev/null and b/public/terrain/18/429302/177002.terrain differ diff --git a/public/terrain/18/429302/177003.terrain b/public/terrain/18/429302/177003.terrain new file mode 100644 index 000000000..ec78d6081 Binary files /dev/null and b/public/terrain/18/429302/177003.terrain differ diff --git a/public/terrain/18/429302/177004.terrain b/public/terrain/18/429302/177004.terrain new file mode 100644 index 000000000..cbb10e83c Binary files /dev/null and b/public/terrain/18/429302/177004.terrain differ diff --git a/public/terrain/18/429302/177005.terrain b/public/terrain/18/429302/177005.terrain new file mode 100644 index 000000000..238073dfc Binary files /dev/null and b/public/terrain/18/429302/177005.terrain differ diff --git a/public/terrain/18/429302/177006.terrain b/public/terrain/18/429302/177006.terrain new file mode 100644 index 000000000..eb25ff21f Binary files /dev/null and b/public/terrain/18/429302/177006.terrain differ diff --git a/public/terrain/18/429302/177007.terrain b/public/terrain/18/429302/177007.terrain new file mode 100644 index 000000000..9efda908b Binary files /dev/null and b/public/terrain/18/429302/177007.terrain differ diff --git a/public/terrain/18/429302/177008.terrain b/public/terrain/18/429302/177008.terrain new file mode 100644 index 000000000..fc0c60e85 Binary files /dev/null and b/public/terrain/18/429302/177008.terrain differ diff --git a/public/terrain/18/429302/177009.terrain b/public/terrain/18/429302/177009.terrain new file mode 100644 index 000000000..4747937a7 Binary files /dev/null and b/public/terrain/18/429302/177009.terrain differ diff --git a/public/terrain/18/429302/177010.terrain b/public/terrain/18/429302/177010.terrain new file mode 100644 index 000000000..fc5e4d130 Binary files /dev/null and b/public/terrain/18/429302/177010.terrain differ diff --git a/public/terrain/18/429302/177011.terrain b/public/terrain/18/429302/177011.terrain new file mode 100644 index 000000000..6673daab0 Binary files /dev/null and b/public/terrain/18/429302/177011.terrain differ diff --git a/public/terrain/18/429302/177012.terrain b/public/terrain/18/429302/177012.terrain new file mode 100644 index 000000000..4807a0a73 Binary files /dev/null and b/public/terrain/18/429302/177012.terrain differ diff --git a/public/terrain/18/429302/177013.terrain b/public/terrain/18/429302/177013.terrain new file mode 100644 index 000000000..666d746ff Binary files /dev/null and b/public/terrain/18/429302/177013.terrain differ diff --git a/public/terrain/18/429302/177014.terrain b/public/terrain/18/429302/177014.terrain new file mode 100644 index 000000000..19e38c62d Binary files /dev/null and b/public/terrain/18/429302/177014.terrain differ diff --git a/public/terrain/18/429302/177015.terrain b/public/terrain/18/429302/177015.terrain new file mode 100644 index 000000000..3b7176a94 Binary files /dev/null and b/public/terrain/18/429302/177015.terrain differ diff --git a/public/terrain/18/429302/177016.terrain b/public/terrain/18/429302/177016.terrain new file mode 100644 index 000000000..7546453d9 Binary files /dev/null and b/public/terrain/18/429302/177016.terrain differ diff --git a/public/terrain/18/429302/177017.terrain b/public/terrain/18/429302/177017.terrain new file mode 100644 index 000000000..67e668f6e Binary files /dev/null and b/public/terrain/18/429302/177017.terrain differ diff --git a/public/terrain/18/429302/177018.terrain b/public/terrain/18/429302/177018.terrain new file mode 100644 index 000000000..fe5c2c87d Binary files /dev/null and b/public/terrain/18/429302/177018.terrain differ diff --git a/public/terrain/18/429302/177019.terrain b/public/terrain/18/429302/177019.terrain new file mode 100644 index 000000000..ef9930bda Binary files /dev/null and b/public/terrain/18/429302/177019.terrain differ diff --git a/public/terrain/18/429302/177020.terrain b/public/terrain/18/429302/177020.terrain new file mode 100644 index 000000000..8aad7c966 Binary files /dev/null and b/public/terrain/18/429302/177020.terrain differ diff --git a/public/terrain/18/429302/177021.terrain b/public/terrain/18/429302/177021.terrain new file mode 100644 index 000000000..67c172158 Binary files /dev/null and b/public/terrain/18/429302/177021.terrain differ diff --git a/public/terrain/18/429302/177022.terrain b/public/terrain/18/429302/177022.terrain new file mode 100644 index 000000000..af15332d8 Binary files /dev/null and b/public/terrain/18/429302/177022.terrain differ diff --git a/public/terrain/18/429302/177023.terrain b/public/terrain/18/429302/177023.terrain new file mode 100644 index 000000000..405e4982e Binary files /dev/null and b/public/terrain/18/429302/177023.terrain differ diff --git a/public/terrain/18/429302/177024.terrain b/public/terrain/18/429302/177024.terrain new file mode 100644 index 000000000..2d89368b9 Binary files /dev/null and b/public/terrain/18/429302/177024.terrain differ diff --git a/public/terrain/18/429302/177025.terrain b/public/terrain/18/429302/177025.terrain new file mode 100644 index 000000000..157b8a894 Binary files /dev/null and b/public/terrain/18/429302/177025.terrain differ diff --git a/public/terrain/18/429302/177026.terrain b/public/terrain/18/429302/177026.terrain new file mode 100644 index 000000000..e254bf6b1 Binary files /dev/null and b/public/terrain/18/429302/177026.terrain differ diff --git a/public/terrain/18/429302/177027.terrain b/public/terrain/18/429302/177027.terrain new file mode 100644 index 000000000..c3196ff69 Binary files /dev/null and b/public/terrain/18/429302/177027.terrain differ diff --git a/public/terrain/18/429302/177028.terrain b/public/terrain/18/429302/177028.terrain new file mode 100644 index 000000000..726f95b11 Binary files /dev/null and b/public/terrain/18/429302/177028.terrain differ diff --git a/public/terrain/18/429302/177029.terrain b/public/terrain/18/429302/177029.terrain new file mode 100644 index 000000000..73b8a3ee4 Binary files /dev/null and b/public/terrain/18/429302/177029.terrain differ diff --git a/public/terrain/18/429303/176871.terrain b/public/terrain/18/429303/176871.terrain new file mode 100644 index 000000000..a82e84a64 Binary files /dev/null and b/public/terrain/18/429303/176871.terrain differ diff --git a/public/terrain/18/429303/176872.terrain b/public/terrain/18/429303/176872.terrain new file mode 100644 index 000000000..3bd8b73f0 Binary files /dev/null and b/public/terrain/18/429303/176872.terrain differ diff --git a/public/terrain/18/429303/176873.terrain b/public/terrain/18/429303/176873.terrain new file mode 100644 index 000000000..fe436ae4d Binary files /dev/null and b/public/terrain/18/429303/176873.terrain differ diff --git a/public/terrain/18/429303/176874.terrain b/public/terrain/18/429303/176874.terrain new file mode 100644 index 000000000..9829c8f19 Binary files /dev/null and b/public/terrain/18/429303/176874.terrain differ diff --git a/public/terrain/18/429303/176875.terrain b/public/terrain/18/429303/176875.terrain new file mode 100644 index 000000000..8f61739f0 Binary files /dev/null and b/public/terrain/18/429303/176875.terrain differ diff --git a/public/terrain/18/429303/176876.terrain b/public/terrain/18/429303/176876.terrain new file mode 100644 index 000000000..0f64245a3 Binary files /dev/null and b/public/terrain/18/429303/176876.terrain differ diff --git a/public/terrain/18/429303/176877.terrain b/public/terrain/18/429303/176877.terrain new file mode 100644 index 000000000..1369b57c2 Binary files /dev/null and b/public/terrain/18/429303/176877.terrain differ diff --git a/public/terrain/18/429303/176878.terrain b/public/terrain/18/429303/176878.terrain new file mode 100644 index 000000000..f0bc97c65 Binary files /dev/null and b/public/terrain/18/429303/176878.terrain differ diff --git a/public/terrain/18/429303/176879.terrain b/public/terrain/18/429303/176879.terrain new file mode 100644 index 000000000..02d3a1e7f Binary files /dev/null and b/public/terrain/18/429303/176879.terrain differ diff --git a/public/terrain/18/429303/176880.terrain b/public/terrain/18/429303/176880.terrain new file mode 100644 index 000000000..57685aa4b Binary files /dev/null and b/public/terrain/18/429303/176880.terrain differ diff --git a/public/terrain/18/429303/176881.terrain b/public/terrain/18/429303/176881.terrain new file mode 100644 index 000000000..e49d75088 Binary files /dev/null and b/public/terrain/18/429303/176881.terrain differ diff --git a/public/terrain/18/429303/176882.terrain b/public/terrain/18/429303/176882.terrain new file mode 100644 index 000000000..97133a175 Binary files /dev/null and b/public/terrain/18/429303/176882.terrain differ diff --git a/public/terrain/18/429303/176883.terrain b/public/terrain/18/429303/176883.terrain new file mode 100644 index 000000000..8a9ef8c0c Binary files /dev/null and b/public/terrain/18/429303/176883.terrain differ diff --git a/public/terrain/18/429303/176884.terrain b/public/terrain/18/429303/176884.terrain new file mode 100644 index 000000000..24c904250 Binary files /dev/null and b/public/terrain/18/429303/176884.terrain differ diff --git a/public/terrain/18/429303/176885.terrain b/public/terrain/18/429303/176885.terrain new file mode 100644 index 000000000..d3ec395fd Binary files /dev/null and b/public/terrain/18/429303/176885.terrain differ diff --git a/public/terrain/18/429303/176886.terrain b/public/terrain/18/429303/176886.terrain new file mode 100644 index 000000000..dab019fc8 Binary files /dev/null and b/public/terrain/18/429303/176886.terrain differ diff --git a/public/terrain/18/429303/176887.terrain b/public/terrain/18/429303/176887.terrain new file mode 100644 index 000000000..e3af7a9fb Binary files /dev/null and b/public/terrain/18/429303/176887.terrain differ diff --git a/public/terrain/18/429303/176888.terrain b/public/terrain/18/429303/176888.terrain new file mode 100644 index 000000000..831539986 Binary files /dev/null and b/public/terrain/18/429303/176888.terrain differ diff --git a/public/terrain/18/429303/176889.terrain b/public/terrain/18/429303/176889.terrain new file mode 100644 index 000000000..240d8d390 Binary files /dev/null and b/public/terrain/18/429303/176889.terrain differ diff --git a/public/terrain/18/429303/176890.terrain b/public/terrain/18/429303/176890.terrain new file mode 100644 index 000000000..6898c0542 Binary files /dev/null and b/public/terrain/18/429303/176890.terrain differ diff --git a/public/terrain/18/429303/176891.terrain b/public/terrain/18/429303/176891.terrain new file mode 100644 index 000000000..e44fb327a Binary files /dev/null and b/public/terrain/18/429303/176891.terrain differ diff --git a/public/terrain/18/429303/176892.terrain b/public/terrain/18/429303/176892.terrain new file mode 100644 index 000000000..57fd965d7 Binary files /dev/null and b/public/terrain/18/429303/176892.terrain differ diff --git a/public/terrain/18/429303/176893.terrain b/public/terrain/18/429303/176893.terrain new file mode 100644 index 000000000..31b43c77b Binary files /dev/null and b/public/terrain/18/429303/176893.terrain differ diff --git a/public/terrain/18/429303/176894.terrain b/public/terrain/18/429303/176894.terrain new file mode 100644 index 000000000..222e21076 Binary files /dev/null and b/public/terrain/18/429303/176894.terrain differ diff --git a/public/terrain/18/429303/176895.terrain b/public/terrain/18/429303/176895.terrain new file mode 100644 index 000000000..4909533a5 Binary files /dev/null and b/public/terrain/18/429303/176895.terrain differ diff --git a/public/terrain/18/429303/176896.terrain b/public/terrain/18/429303/176896.terrain new file mode 100644 index 000000000..1c486212b Binary files /dev/null and b/public/terrain/18/429303/176896.terrain differ diff --git a/public/terrain/18/429303/176897.terrain b/public/terrain/18/429303/176897.terrain new file mode 100644 index 000000000..2ff2bbc92 Binary files /dev/null and b/public/terrain/18/429303/176897.terrain differ diff --git a/public/terrain/18/429303/176898.terrain b/public/terrain/18/429303/176898.terrain new file mode 100644 index 000000000..36208728e Binary files /dev/null and b/public/terrain/18/429303/176898.terrain differ diff --git a/public/terrain/18/429303/176899.terrain b/public/terrain/18/429303/176899.terrain new file mode 100644 index 000000000..85cab3acd Binary files /dev/null and b/public/terrain/18/429303/176899.terrain differ diff --git a/public/terrain/18/429303/176900.terrain b/public/terrain/18/429303/176900.terrain new file mode 100644 index 000000000..98cf101c9 Binary files /dev/null and b/public/terrain/18/429303/176900.terrain differ diff --git a/public/terrain/18/429303/176901.terrain b/public/terrain/18/429303/176901.terrain new file mode 100644 index 000000000..c867f3a11 Binary files /dev/null and b/public/terrain/18/429303/176901.terrain differ diff --git a/public/terrain/18/429303/176902.terrain b/public/terrain/18/429303/176902.terrain new file mode 100644 index 000000000..468adab0e Binary files /dev/null and b/public/terrain/18/429303/176902.terrain differ diff --git a/public/terrain/18/429303/176903.terrain b/public/terrain/18/429303/176903.terrain new file mode 100644 index 000000000..36ca34348 Binary files /dev/null and b/public/terrain/18/429303/176903.terrain differ diff --git a/public/terrain/18/429303/176904.terrain b/public/terrain/18/429303/176904.terrain new file mode 100644 index 000000000..9d7c0b2e5 Binary files /dev/null and b/public/terrain/18/429303/176904.terrain differ diff --git a/public/terrain/18/429303/176905.terrain b/public/terrain/18/429303/176905.terrain new file mode 100644 index 000000000..54a8d3f46 Binary files /dev/null and b/public/terrain/18/429303/176905.terrain differ diff --git a/public/terrain/18/429303/176906.terrain b/public/terrain/18/429303/176906.terrain new file mode 100644 index 000000000..f0957f8d6 Binary files /dev/null and b/public/terrain/18/429303/176906.terrain differ diff --git a/public/terrain/18/429303/176907.terrain b/public/terrain/18/429303/176907.terrain new file mode 100644 index 000000000..675a12a16 Binary files /dev/null and b/public/terrain/18/429303/176907.terrain differ diff --git a/public/terrain/18/429303/176908.terrain b/public/terrain/18/429303/176908.terrain new file mode 100644 index 000000000..9ffc7cdba Binary files /dev/null and b/public/terrain/18/429303/176908.terrain differ diff --git a/public/terrain/18/429303/176909.terrain b/public/terrain/18/429303/176909.terrain new file mode 100644 index 000000000..9240cf1b7 Binary files /dev/null and b/public/terrain/18/429303/176909.terrain differ diff --git a/public/terrain/18/429303/176910.terrain b/public/terrain/18/429303/176910.terrain new file mode 100644 index 000000000..4e63c7717 Binary files /dev/null and b/public/terrain/18/429303/176910.terrain differ diff --git a/public/terrain/18/429303/176911.terrain b/public/terrain/18/429303/176911.terrain new file mode 100644 index 000000000..16822ec8b Binary files /dev/null and b/public/terrain/18/429303/176911.terrain differ diff --git a/public/terrain/18/429303/176912.terrain b/public/terrain/18/429303/176912.terrain new file mode 100644 index 000000000..e97c84acc Binary files /dev/null and b/public/terrain/18/429303/176912.terrain differ diff --git a/public/terrain/18/429303/176913.terrain b/public/terrain/18/429303/176913.terrain new file mode 100644 index 000000000..2aae9a9a4 Binary files /dev/null and b/public/terrain/18/429303/176913.terrain differ diff --git a/public/terrain/18/429303/176914.terrain b/public/terrain/18/429303/176914.terrain new file mode 100644 index 000000000..a2f300ba3 Binary files /dev/null and b/public/terrain/18/429303/176914.terrain differ diff --git a/public/terrain/18/429303/176915.terrain b/public/terrain/18/429303/176915.terrain new file mode 100644 index 000000000..a3c26c501 Binary files /dev/null and b/public/terrain/18/429303/176915.terrain differ diff --git a/public/terrain/18/429303/176916.terrain b/public/terrain/18/429303/176916.terrain new file mode 100644 index 000000000..db33049d0 Binary files /dev/null and b/public/terrain/18/429303/176916.terrain differ diff --git a/public/terrain/18/429303/176917.terrain b/public/terrain/18/429303/176917.terrain new file mode 100644 index 000000000..123103b3b Binary files /dev/null and b/public/terrain/18/429303/176917.terrain differ diff --git a/public/terrain/18/429303/176918.terrain b/public/terrain/18/429303/176918.terrain new file mode 100644 index 000000000..837a49c3d Binary files /dev/null and b/public/terrain/18/429303/176918.terrain differ diff --git a/public/terrain/18/429303/176919.terrain b/public/terrain/18/429303/176919.terrain new file mode 100644 index 000000000..6e55a2a4e Binary files /dev/null and b/public/terrain/18/429303/176919.terrain differ diff --git a/public/terrain/18/429303/176920.terrain b/public/terrain/18/429303/176920.terrain new file mode 100644 index 000000000..7cb98b30e Binary files /dev/null and b/public/terrain/18/429303/176920.terrain differ diff --git a/public/terrain/18/429303/176921.terrain b/public/terrain/18/429303/176921.terrain new file mode 100644 index 000000000..3feb5ef33 Binary files /dev/null and b/public/terrain/18/429303/176921.terrain differ diff --git a/public/terrain/18/429303/176922.terrain b/public/terrain/18/429303/176922.terrain new file mode 100644 index 000000000..f2d7f2b2e Binary files /dev/null and b/public/terrain/18/429303/176922.terrain differ diff --git a/public/terrain/18/429303/176923.terrain b/public/terrain/18/429303/176923.terrain new file mode 100644 index 000000000..0c482c12b Binary files /dev/null and b/public/terrain/18/429303/176923.terrain differ diff --git a/public/terrain/18/429303/176924.terrain b/public/terrain/18/429303/176924.terrain new file mode 100644 index 000000000..badcb6a24 Binary files /dev/null and b/public/terrain/18/429303/176924.terrain differ diff --git a/public/terrain/18/429303/176925.terrain b/public/terrain/18/429303/176925.terrain new file mode 100644 index 000000000..6d6037f47 Binary files /dev/null and b/public/terrain/18/429303/176925.terrain differ diff --git a/public/terrain/18/429303/176926.terrain b/public/terrain/18/429303/176926.terrain new file mode 100644 index 000000000..ff3116c1b Binary files /dev/null and b/public/terrain/18/429303/176926.terrain differ diff --git a/public/terrain/18/429303/176927.terrain b/public/terrain/18/429303/176927.terrain new file mode 100644 index 000000000..5e2956c8f Binary files /dev/null and b/public/terrain/18/429303/176927.terrain differ diff --git a/public/terrain/18/429303/176928.terrain b/public/terrain/18/429303/176928.terrain new file mode 100644 index 000000000..c6261638e Binary files /dev/null and b/public/terrain/18/429303/176928.terrain differ diff --git a/public/terrain/18/429303/176929.terrain b/public/terrain/18/429303/176929.terrain new file mode 100644 index 000000000..34a46002e Binary files /dev/null and b/public/terrain/18/429303/176929.terrain differ diff --git a/public/terrain/18/429303/176930.terrain b/public/terrain/18/429303/176930.terrain new file mode 100644 index 000000000..cb2de7529 Binary files /dev/null and b/public/terrain/18/429303/176930.terrain differ diff --git a/public/terrain/18/429303/176931.terrain b/public/terrain/18/429303/176931.terrain new file mode 100644 index 000000000..5006e2df0 Binary files /dev/null and b/public/terrain/18/429303/176931.terrain differ diff --git a/public/terrain/18/429303/176932.terrain b/public/terrain/18/429303/176932.terrain new file mode 100644 index 000000000..2c1bb4ee0 Binary files /dev/null and b/public/terrain/18/429303/176932.terrain differ diff --git a/public/terrain/18/429303/176933.terrain b/public/terrain/18/429303/176933.terrain new file mode 100644 index 000000000..93f4216fa Binary files /dev/null and b/public/terrain/18/429303/176933.terrain differ diff --git a/public/terrain/18/429303/176934.terrain b/public/terrain/18/429303/176934.terrain new file mode 100644 index 000000000..085d9661e Binary files /dev/null and b/public/terrain/18/429303/176934.terrain differ diff --git a/public/terrain/18/429303/176935.terrain b/public/terrain/18/429303/176935.terrain new file mode 100644 index 000000000..e6a78891c Binary files /dev/null and b/public/terrain/18/429303/176935.terrain differ diff --git a/public/terrain/18/429303/176936.terrain b/public/terrain/18/429303/176936.terrain new file mode 100644 index 000000000..63782683a Binary files /dev/null and b/public/terrain/18/429303/176936.terrain differ diff --git a/public/terrain/18/429303/176937.terrain b/public/terrain/18/429303/176937.terrain new file mode 100644 index 000000000..9ff79e995 Binary files /dev/null and b/public/terrain/18/429303/176937.terrain differ diff --git a/public/terrain/18/429303/176938.terrain b/public/terrain/18/429303/176938.terrain new file mode 100644 index 000000000..5bd493203 Binary files /dev/null and b/public/terrain/18/429303/176938.terrain differ diff --git a/public/terrain/18/429303/176939.terrain b/public/terrain/18/429303/176939.terrain new file mode 100644 index 000000000..75ef847a4 Binary files /dev/null and b/public/terrain/18/429303/176939.terrain differ diff --git a/public/terrain/18/429303/176940.terrain b/public/terrain/18/429303/176940.terrain new file mode 100644 index 000000000..e2f11af84 Binary files /dev/null and b/public/terrain/18/429303/176940.terrain differ diff --git a/public/terrain/18/429303/176941.terrain b/public/terrain/18/429303/176941.terrain new file mode 100644 index 000000000..c1af69c33 Binary files /dev/null and b/public/terrain/18/429303/176941.terrain differ diff --git a/public/terrain/18/429303/176942.terrain b/public/terrain/18/429303/176942.terrain new file mode 100644 index 000000000..1f9075d80 Binary files /dev/null and b/public/terrain/18/429303/176942.terrain differ diff --git a/public/terrain/18/429303/176943.terrain b/public/terrain/18/429303/176943.terrain new file mode 100644 index 000000000..7e896844e Binary files /dev/null and b/public/terrain/18/429303/176943.terrain differ diff --git a/public/terrain/18/429303/176944.terrain b/public/terrain/18/429303/176944.terrain new file mode 100644 index 000000000..1291f5e7c Binary files /dev/null and b/public/terrain/18/429303/176944.terrain differ diff --git a/public/terrain/18/429303/176945.terrain b/public/terrain/18/429303/176945.terrain new file mode 100644 index 000000000..4d1d05175 Binary files /dev/null and b/public/terrain/18/429303/176945.terrain differ diff --git a/public/terrain/18/429303/176946.terrain b/public/terrain/18/429303/176946.terrain new file mode 100644 index 000000000..a4f2365db Binary files /dev/null and b/public/terrain/18/429303/176946.terrain differ diff --git a/public/terrain/18/429303/176947.terrain b/public/terrain/18/429303/176947.terrain new file mode 100644 index 000000000..0d85adc80 Binary files /dev/null and b/public/terrain/18/429303/176947.terrain differ diff --git a/public/terrain/18/429303/176948.terrain b/public/terrain/18/429303/176948.terrain new file mode 100644 index 000000000..c31a31e33 Binary files /dev/null and b/public/terrain/18/429303/176948.terrain differ diff --git a/public/terrain/18/429303/176949.terrain b/public/terrain/18/429303/176949.terrain new file mode 100644 index 000000000..28662330c Binary files /dev/null and b/public/terrain/18/429303/176949.terrain differ diff --git a/public/terrain/18/429303/176950.terrain b/public/terrain/18/429303/176950.terrain new file mode 100644 index 000000000..eb205dbdc Binary files /dev/null and b/public/terrain/18/429303/176950.terrain differ diff --git a/public/terrain/18/429303/176951.terrain b/public/terrain/18/429303/176951.terrain new file mode 100644 index 000000000..cae8d5d72 Binary files /dev/null and b/public/terrain/18/429303/176951.terrain differ diff --git a/public/terrain/18/429303/176952.terrain b/public/terrain/18/429303/176952.terrain new file mode 100644 index 000000000..85d97b9f0 Binary files /dev/null and b/public/terrain/18/429303/176952.terrain differ diff --git a/public/terrain/18/429303/176953.terrain b/public/terrain/18/429303/176953.terrain new file mode 100644 index 000000000..3f49d0394 Binary files /dev/null and b/public/terrain/18/429303/176953.terrain differ diff --git a/public/terrain/18/429303/176954.terrain b/public/terrain/18/429303/176954.terrain new file mode 100644 index 000000000..5df9c1318 Binary files /dev/null and b/public/terrain/18/429303/176954.terrain differ diff --git a/public/terrain/18/429303/176955.terrain b/public/terrain/18/429303/176955.terrain new file mode 100644 index 000000000..9548f8b83 Binary files /dev/null and b/public/terrain/18/429303/176955.terrain differ diff --git a/public/terrain/18/429303/176956.terrain b/public/terrain/18/429303/176956.terrain new file mode 100644 index 000000000..0a398f843 Binary files /dev/null and b/public/terrain/18/429303/176956.terrain differ diff --git a/public/terrain/18/429303/176957.terrain b/public/terrain/18/429303/176957.terrain new file mode 100644 index 000000000..a4636b0eb Binary files /dev/null and b/public/terrain/18/429303/176957.terrain differ diff --git a/public/terrain/18/429303/176958.terrain b/public/terrain/18/429303/176958.terrain new file mode 100644 index 000000000..eaabe3368 Binary files /dev/null and b/public/terrain/18/429303/176958.terrain differ diff --git a/public/terrain/18/429303/176959.terrain b/public/terrain/18/429303/176959.terrain new file mode 100644 index 000000000..69a743fc6 Binary files /dev/null and b/public/terrain/18/429303/176959.terrain differ diff --git a/public/terrain/18/429303/176960.terrain b/public/terrain/18/429303/176960.terrain new file mode 100644 index 000000000..171ecc99f Binary files /dev/null and b/public/terrain/18/429303/176960.terrain differ diff --git a/public/terrain/18/429303/176961.terrain b/public/terrain/18/429303/176961.terrain new file mode 100644 index 000000000..0345d0b4c Binary files /dev/null and b/public/terrain/18/429303/176961.terrain differ diff --git a/public/terrain/18/429303/176962.terrain b/public/terrain/18/429303/176962.terrain new file mode 100644 index 000000000..8fb101a67 Binary files /dev/null and b/public/terrain/18/429303/176962.terrain differ diff --git a/public/terrain/18/429303/176963.terrain b/public/terrain/18/429303/176963.terrain new file mode 100644 index 000000000..99435c268 Binary files /dev/null and b/public/terrain/18/429303/176963.terrain differ diff --git a/public/terrain/18/429303/176964.terrain b/public/terrain/18/429303/176964.terrain new file mode 100644 index 000000000..403b2d25d Binary files /dev/null and b/public/terrain/18/429303/176964.terrain differ diff --git a/public/terrain/18/429303/176965.terrain b/public/terrain/18/429303/176965.terrain new file mode 100644 index 000000000..d19644b79 Binary files /dev/null and b/public/terrain/18/429303/176965.terrain differ diff --git a/public/terrain/18/429303/176966.terrain b/public/terrain/18/429303/176966.terrain new file mode 100644 index 000000000..aa21121b3 Binary files /dev/null and b/public/terrain/18/429303/176966.terrain differ diff --git a/public/terrain/18/429303/176967.terrain b/public/terrain/18/429303/176967.terrain new file mode 100644 index 000000000..0b247ba77 Binary files /dev/null and b/public/terrain/18/429303/176967.terrain differ diff --git a/public/terrain/18/429303/176968.terrain b/public/terrain/18/429303/176968.terrain new file mode 100644 index 000000000..57ab0d9db Binary files /dev/null and b/public/terrain/18/429303/176968.terrain differ diff --git a/public/terrain/18/429303/176969.terrain b/public/terrain/18/429303/176969.terrain new file mode 100644 index 000000000..16f939e6b Binary files /dev/null and b/public/terrain/18/429303/176969.terrain differ diff --git a/public/terrain/18/429303/176970.terrain b/public/terrain/18/429303/176970.terrain new file mode 100644 index 000000000..d58b6f99b Binary files /dev/null and b/public/terrain/18/429303/176970.terrain differ diff --git a/public/terrain/18/429303/176971.terrain b/public/terrain/18/429303/176971.terrain new file mode 100644 index 000000000..3cf86224b Binary files /dev/null and b/public/terrain/18/429303/176971.terrain differ diff --git a/public/terrain/18/429303/176972.terrain b/public/terrain/18/429303/176972.terrain new file mode 100644 index 000000000..10fb636d7 Binary files /dev/null and b/public/terrain/18/429303/176972.terrain differ diff --git a/public/terrain/18/429303/176973.terrain b/public/terrain/18/429303/176973.terrain new file mode 100644 index 000000000..5b8f47f25 Binary files /dev/null and b/public/terrain/18/429303/176973.terrain differ diff --git a/public/terrain/18/429303/176974.terrain b/public/terrain/18/429303/176974.terrain new file mode 100644 index 000000000..0b3059a00 Binary files /dev/null and b/public/terrain/18/429303/176974.terrain differ diff --git a/public/terrain/18/429303/176975.terrain b/public/terrain/18/429303/176975.terrain new file mode 100644 index 000000000..bb77be24a Binary files /dev/null and b/public/terrain/18/429303/176975.terrain differ diff --git a/public/terrain/18/429303/176976.terrain b/public/terrain/18/429303/176976.terrain new file mode 100644 index 000000000..9df326c54 Binary files /dev/null and b/public/terrain/18/429303/176976.terrain differ diff --git a/public/terrain/18/429303/176977.terrain b/public/terrain/18/429303/176977.terrain new file mode 100644 index 000000000..749b0707b Binary files /dev/null and b/public/terrain/18/429303/176977.terrain differ diff --git a/public/terrain/18/429303/176978.terrain b/public/terrain/18/429303/176978.terrain new file mode 100644 index 000000000..97297ec10 Binary files /dev/null and b/public/terrain/18/429303/176978.terrain differ diff --git a/public/terrain/18/429303/176979.terrain b/public/terrain/18/429303/176979.terrain new file mode 100644 index 000000000..303c4918f Binary files /dev/null and b/public/terrain/18/429303/176979.terrain differ diff --git a/public/terrain/18/429303/176980.terrain b/public/terrain/18/429303/176980.terrain new file mode 100644 index 000000000..9210a0be9 Binary files /dev/null and b/public/terrain/18/429303/176980.terrain differ diff --git a/public/terrain/18/429303/176981.terrain b/public/terrain/18/429303/176981.terrain new file mode 100644 index 000000000..0d02e4022 Binary files /dev/null and b/public/terrain/18/429303/176981.terrain differ diff --git a/public/terrain/18/429303/176982.terrain b/public/terrain/18/429303/176982.terrain new file mode 100644 index 000000000..f633f25c3 Binary files /dev/null and b/public/terrain/18/429303/176982.terrain differ diff --git a/public/terrain/18/429303/176983.terrain b/public/terrain/18/429303/176983.terrain new file mode 100644 index 000000000..f119daf66 Binary files /dev/null and b/public/terrain/18/429303/176983.terrain differ diff --git a/public/terrain/18/429303/176984.terrain b/public/terrain/18/429303/176984.terrain new file mode 100644 index 000000000..f12572845 Binary files /dev/null and b/public/terrain/18/429303/176984.terrain differ diff --git a/public/terrain/18/429303/176985.terrain b/public/terrain/18/429303/176985.terrain new file mode 100644 index 000000000..5c2de2cc3 Binary files /dev/null and b/public/terrain/18/429303/176985.terrain differ diff --git a/public/terrain/18/429303/176986.terrain b/public/terrain/18/429303/176986.terrain new file mode 100644 index 000000000..9d1d80cb0 Binary files /dev/null and b/public/terrain/18/429303/176986.terrain differ diff --git a/public/terrain/18/429303/176987.terrain b/public/terrain/18/429303/176987.terrain new file mode 100644 index 000000000..c747ff7f5 Binary files /dev/null and b/public/terrain/18/429303/176987.terrain differ diff --git a/public/terrain/18/429303/176988.terrain b/public/terrain/18/429303/176988.terrain new file mode 100644 index 000000000..8f1b940d1 Binary files /dev/null and b/public/terrain/18/429303/176988.terrain differ diff --git a/public/terrain/18/429303/176989.terrain b/public/terrain/18/429303/176989.terrain new file mode 100644 index 000000000..724e4ea4e Binary files /dev/null and b/public/terrain/18/429303/176989.terrain differ diff --git a/public/terrain/18/429303/176990.terrain b/public/terrain/18/429303/176990.terrain new file mode 100644 index 000000000..5ba3d1b75 Binary files /dev/null and b/public/terrain/18/429303/176990.terrain differ diff --git a/public/terrain/18/429303/176991.terrain b/public/terrain/18/429303/176991.terrain new file mode 100644 index 000000000..24b9cc42a Binary files /dev/null and b/public/terrain/18/429303/176991.terrain differ diff --git a/public/terrain/18/429303/176992.terrain b/public/terrain/18/429303/176992.terrain new file mode 100644 index 000000000..7e97d91e7 Binary files /dev/null and b/public/terrain/18/429303/176992.terrain differ diff --git a/public/terrain/18/429303/176993.terrain b/public/terrain/18/429303/176993.terrain new file mode 100644 index 000000000..2dcb881aa Binary files /dev/null and b/public/terrain/18/429303/176993.terrain differ diff --git a/public/terrain/18/429303/176994.terrain b/public/terrain/18/429303/176994.terrain new file mode 100644 index 000000000..99a3c92f0 Binary files /dev/null and b/public/terrain/18/429303/176994.terrain differ diff --git a/public/terrain/18/429303/176995.terrain b/public/terrain/18/429303/176995.terrain new file mode 100644 index 000000000..943029b84 Binary files /dev/null and b/public/terrain/18/429303/176995.terrain differ diff --git a/public/terrain/18/429303/176996.terrain b/public/terrain/18/429303/176996.terrain new file mode 100644 index 000000000..a861459dd Binary files /dev/null and b/public/terrain/18/429303/176996.terrain differ diff --git a/public/terrain/18/429303/176997.terrain b/public/terrain/18/429303/176997.terrain new file mode 100644 index 000000000..9eb413ca7 Binary files /dev/null and b/public/terrain/18/429303/176997.terrain differ diff --git a/public/terrain/18/429303/176998.terrain b/public/terrain/18/429303/176998.terrain new file mode 100644 index 000000000..34190f638 Binary files /dev/null and b/public/terrain/18/429303/176998.terrain differ diff --git a/public/terrain/18/429303/176999.terrain b/public/terrain/18/429303/176999.terrain new file mode 100644 index 000000000..f0e4f03fb Binary files /dev/null and b/public/terrain/18/429303/176999.terrain differ diff --git a/public/terrain/18/429303/177000.terrain b/public/terrain/18/429303/177000.terrain new file mode 100644 index 000000000..5ff06649f Binary files /dev/null and b/public/terrain/18/429303/177000.terrain differ diff --git a/public/terrain/18/429303/177001.terrain b/public/terrain/18/429303/177001.terrain new file mode 100644 index 000000000..a3fc45bc1 Binary files /dev/null and b/public/terrain/18/429303/177001.terrain differ diff --git a/public/terrain/18/429303/177002.terrain b/public/terrain/18/429303/177002.terrain new file mode 100644 index 000000000..03970f305 Binary files /dev/null and b/public/terrain/18/429303/177002.terrain differ diff --git a/public/terrain/18/429303/177003.terrain b/public/terrain/18/429303/177003.terrain new file mode 100644 index 000000000..2fc8c2cfe Binary files /dev/null and b/public/terrain/18/429303/177003.terrain differ diff --git a/public/terrain/18/429303/177004.terrain b/public/terrain/18/429303/177004.terrain new file mode 100644 index 000000000..2179825ff Binary files /dev/null and b/public/terrain/18/429303/177004.terrain differ diff --git a/public/terrain/18/429303/177005.terrain b/public/terrain/18/429303/177005.terrain new file mode 100644 index 000000000..fdfd49880 Binary files /dev/null and b/public/terrain/18/429303/177005.terrain differ diff --git a/public/terrain/18/429303/177006.terrain b/public/terrain/18/429303/177006.terrain new file mode 100644 index 000000000..9a1427d06 Binary files /dev/null and b/public/terrain/18/429303/177006.terrain differ diff --git a/public/terrain/18/429303/177007.terrain b/public/terrain/18/429303/177007.terrain new file mode 100644 index 000000000..c303a96e9 Binary files /dev/null and b/public/terrain/18/429303/177007.terrain differ diff --git a/public/terrain/18/429303/177008.terrain b/public/terrain/18/429303/177008.terrain new file mode 100644 index 000000000..b271994c2 Binary files /dev/null and b/public/terrain/18/429303/177008.terrain differ diff --git a/public/terrain/18/429303/177009.terrain b/public/terrain/18/429303/177009.terrain new file mode 100644 index 000000000..a8cade062 Binary files /dev/null and b/public/terrain/18/429303/177009.terrain differ diff --git a/public/terrain/18/429303/177010.terrain b/public/terrain/18/429303/177010.terrain new file mode 100644 index 000000000..cda968e87 Binary files /dev/null and b/public/terrain/18/429303/177010.terrain differ diff --git a/public/terrain/18/429303/177011.terrain b/public/terrain/18/429303/177011.terrain new file mode 100644 index 000000000..9b5d67a4e Binary files /dev/null and b/public/terrain/18/429303/177011.terrain differ diff --git a/public/terrain/18/429303/177012.terrain b/public/terrain/18/429303/177012.terrain new file mode 100644 index 000000000..d024eaf95 Binary files /dev/null and b/public/terrain/18/429303/177012.terrain differ diff --git a/public/terrain/18/429303/177013.terrain b/public/terrain/18/429303/177013.terrain new file mode 100644 index 000000000..2e8d1e759 Binary files /dev/null and b/public/terrain/18/429303/177013.terrain differ diff --git a/public/terrain/18/429303/177014.terrain b/public/terrain/18/429303/177014.terrain new file mode 100644 index 000000000..f3c99c1d8 Binary files /dev/null and b/public/terrain/18/429303/177014.terrain differ diff --git a/public/terrain/18/429303/177015.terrain b/public/terrain/18/429303/177015.terrain new file mode 100644 index 000000000..94671810c Binary files /dev/null and b/public/terrain/18/429303/177015.terrain differ diff --git a/public/terrain/18/429303/177016.terrain b/public/terrain/18/429303/177016.terrain new file mode 100644 index 000000000..c76920f59 Binary files /dev/null and b/public/terrain/18/429303/177016.terrain differ diff --git a/public/terrain/18/429303/177017.terrain b/public/terrain/18/429303/177017.terrain new file mode 100644 index 000000000..e6dff47cb Binary files /dev/null and b/public/terrain/18/429303/177017.terrain differ diff --git a/public/terrain/18/429303/177018.terrain b/public/terrain/18/429303/177018.terrain new file mode 100644 index 000000000..75aa7799b Binary files /dev/null and b/public/terrain/18/429303/177018.terrain differ diff --git a/public/terrain/18/429303/177019.terrain b/public/terrain/18/429303/177019.terrain new file mode 100644 index 000000000..84c942fe9 Binary files /dev/null and b/public/terrain/18/429303/177019.terrain differ diff --git a/public/terrain/18/429303/177020.terrain b/public/terrain/18/429303/177020.terrain new file mode 100644 index 000000000..b57365aac Binary files /dev/null and b/public/terrain/18/429303/177020.terrain differ diff --git a/public/terrain/18/429303/177021.terrain b/public/terrain/18/429303/177021.terrain new file mode 100644 index 000000000..42e04c82a Binary files /dev/null and b/public/terrain/18/429303/177021.terrain differ diff --git a/public/terrain/18/429303/177022.terrain b/public/terrain/18/429303/177022.terrain new file mode 100644 index 000000000..368e9c4fa Binary files /dev/null and b/public/terrain/18/429303/177022.terrain differ diff --git a/public/terrain/18/429303/177023.terrain b/public/terrain/18/429303/177023.terrain new file mode 100644 index 000000000..06317fbc2 Binary files /dev/null and b/public/terrain/18/429303/177023.terrain differ diff --git a/public/terrain/18/429303/177024.terrain b/public/terrain/18/429303/177024.terrain new file mode 100644 index 000000000..bcac2ffe5 Binary files /dev/null and b/public/terrain/18/429303/177024.terrain differ diff --git a/public/terrain/18/429303/177025.terrain b/public/terrain/18/429303/177025.terrain new file mode 100644 index 000000000..19264186f Binary files /dev/null and b/public/terrain/18/429303/177025.terrain differ diff --git a/public/terrain/18/429303/177026.terrain b/public/terrain/18/429303/177026.terrain new file mode 100644 index 000000000..a94a4646a Binary files /dev/null and b/public/terrain/18/429303/177026.terrain differ diff --git a/public/terrain/18/429303/177027.terrain b/public/terrain/18/429303/177027.terrain new file mode 100644 index 000000000..a48529798 Binary files /dev/null and b/public/terrain/18/429303/177027.terrain differ diff --git a/public/terrain/18/429303/177028.terrain b/public/terrain/18/429303/177028.terrain new file mode 100644 index 000000000..d83ced5b4 Binary files /dev/null and b/public/terrain/18/429303/177028.terrain differ diff --git a/public/terrain/18/429303/177029.terrain b/public/terrain/18/429303/177029.terrain new file mode 100644 index 000000000..f0a75a3e6 Binary files /dev/null and b/public/terrain/18/429303/177029.terrain differ diff --git a/public/terrain/18/429304/176871.terrain b/public/terrain/18/429304/176871.terrain new file mode 100644 index 000000000..5ad7417d6 Binary files /dev/null and b/public/terrain/18/429304/176871.terrain differ diff --git a/public/terrain/18/429304/176872.terrain b/public/terrain/18/429304/176872.terrain new file mode 100644 index 000000000..92dca36f6 Binary files /dev/null and b/public/terrain/18/429304/176872.terrain differ diff --git a/public/terrain/18/429304/176873.terrain b/public/terrain/18/429304/176873.terrain new file mode 100644 index 000000000..3b3315b5f Binary files /dev/null and b/public/terrain/18/429304/176873.terrain differ diff --git a/public/terrain/18/429304/176874.terrain b/public/terrain/18/429304/176874.terrain new file mode 100644 index 000000000..957448abe Binary files /dev/null and b/public/terrain/18/429304/176874.terrain differ diff --git a/public/terrain/18/429304/176875.terrain b/public/terrain/18/429304/176875.terrain new file mode 100644 index 000000000..68122d7ee Binary files /dev/null and b/public/terrain/18/429304/176875.terrain differ diff --git a/public/terrain/18/429304/176876.terrain b/public/terrain/18/429304/176876.terrain new file mode 100644 index 000000000..85c3a2a09 Binary files /dev/null and b/public/terrain/18/429304/176876.terrain differ diff --git a/public/terrain/18/429304/176877.terrain b/public/terrain/18/429304/176877.terrain new file mode 100644 index 000000000..80d482787 Binary files /dev/null and b/public/terrain/18/429304/176877.terrain differ diff --git a/public/terrain/18/429304/176878.terrain b/public/terrain/18/429304/176878.terrain new file mode 100644 index 000000000..20da90802 Binary files /dev/null and b/public/terrain/18/429304/176878.terrain differ diff --git a/public/terrain/18/429304/176879.terrain b/public/terrain/18/429304/176879.terrain new file mode 100644 index 000000000..dcc15f07a Binary files /dev/null and b/public/terrain/18/429304/176879.terrain differ diff --git a/public/terrain/18/429304/176880.terrain b/public/terrain/18/429304/176880.terrain new file mode 100644 index 000000000..5f975a287 Binary files /dev/null and b/public/terrain/18/429304/176880.terrain differ diff --git a/public/terrain/18/429304/176881.terrain b/public/terrain/18/429304/176881.terrain new file mode 100644 index 000000000..c0b08daf4 Binary files /dev/null and b/public/terrain/18/429304/176881.terrain differ diff --git a/public/terrain/18/429304/176882.terrain b/public/terrain/18/429304/176882.terrain new file mode 100644 index 000000000..1cd4238b3 Binary files /dev/null and b/public/terrain/18/429304/176882.terrain differ diff --git a/public/terrain/18/429304/176883.terrain b/public/terrain/18/429304/176883.terrain new file mode 100644 index 000000000..768ed23cb Binary files /dev/null and b/public/terrain/18/429304/176883.terrain differ diff --git a/public/terrain/18/429304/176884.terrain b/public/terrain/18/429304/176884.terrain new file mode 100644 index 000000000..3fba7c193 Binary files /dev/null and b/public/terrain/18/429304/176884.terrain differ diff --git a/public/terrain/18/429304/176885.terrain b/public/terrain/18/429304/176885.terrain new file mode 100644 index 000000000..05b32ef03 Binary files /dev/null and b/public/terrain/18/429304/176885.terrain differ diff --git a/public/terrain/18/429304/176886.terrain b/public/terrain/18/429304/176886.terrain new file mode 100644 index 000000000..f71999e70 Binary files /dev/null and b/public/terrain/18/429304/176886.terrain differ diff --git a/public/terrain/18/429304/176887.terrain b/public/terrain/18/429304/176887.terrain new file mode 100644 index 000000000..095709611 Binary files /dev/null and b/public/terrain/18/429304/176887.terrain differ diff --git a/public/terrain/18/429304/176888.terrain b/public/terrain/18/429304/176888.terrain new file mode 100644 index 000000000..677d09773 Binary files /dev/null and b/public/terrain/18/429304/176888.terrain differ diff --git a/public/terrain/18/429304/176889.terrain b/public/terrain/18/429304/176889.terrain new file mode 100644 index 000000000..413a64aaa Binary files /dev/null and b/public/terrain/18/429304/176889.terrain differ diff --git a/public/terrain/18/429304/176890.terrain b/public/terrain/18/429304/176890.terrain new file mode 100644 index 000000000..bd999e984 Binary files /dev/null and b/public/terrain/18/429304/176890.terrain differ diff --git a/public/terrain/18/429304/176891.terrain b/public/terrain/18/429304/176891.terrain new file mode 100644 index 000000000..e0b7bf48c Binary files /dev/null and b/public/terrain/18/429304/176891.terrain differ diff --git a/public/terrain/18/429304/176892.terrain b/public/terrain/18/429304/176892.terrain new file mode 100644 index 000000000..d836b32f8 Binary files /dev/null and b/public/terrain/18/429304/176892.terrain differ diff --git a/public/terrain/18/429304/176893.terrain b/public/terrain/18/429304/176893.terrain new file mode 100644 index 000000000..b92dd4f16 Binary files /dev/null and b/public/terrain/18/429304/176893.terrain differ diff --git a/public/terrain/18/429304/176894.terrain b/public/terrain/18/429304/176894.terrain new file mode 100644 index 000000000..947222d8a Binary files /dev/null and b/public/terrain/18/429304/176894.terrain differ diff --git a/public/terrain/18/429304/176895.terrain b/public/terrain/18/429304/176895.terrain new file mode 100644 index 000000000..ac1b160a1 Binary files /dev/null and b/public/terrain/18/429304/176895.terrain differ diff --git a/public/terrain/18/429304/176896.terrain b/public/terrain/18/429304/176896.terrain new file mode 100644 index 000000000..4f6e22ba7 Binary files /dev/null and b/public/terrain/18/429304/176896.terrain differ diff --git a/public/terrain/18/429304/176897.terrain b/public/terrain/18/429304/176897.terrain new file mode 100644 index 000000000..edb1eea20 Binary files /dev/null and b/public/terrain/18/429304/176897.terrain differ diff --git a/public/terrain/18/429304/176898.terrain b/public/terrain/18/429304/176898.terrain new file mode 100644 index 000000000..7a53f90e3 Binary files /dev/null and b/public/terrain/18/429304/176898.terrain differ diff --git a/public/terrain/18/429304/176899.terrain b/public/terrain/18/429304/176899.terrain new file mode 100644 index 000000000..d0c714244 Binary files /dev/null and b/public/terrain/18/429304/176899.terrain differ diff --git a/public/terrain/18/429304/176900.terrain b/public/terrain/18/429304/176900.terrain new file mode 100644 index 000000000..4ad2a02aa Binary files /dev/null and b/public/terrain/18/429304/176900.terrain differ diff --git a/public/terrain/18/429304/176901.terrain b/public/terrain/18/429304/176901.terrain new file mode 100644 index 000000000..875281581 Binary files /dev/null and b/public/terrain/18/429304/176901.terrain differ diff --git a/public/terrain/18/429304/176902.terrain b/public/terrain/18/429304/176902.terrain new file mode 100644 index 000000000..0dbce6537 Binary files /dev/null and b/public/terrain/18/429304/176902.terrain differ diff --git a/public/terrain/18/429304/176903.terrain b/public/terrain/18/429304/176903.terrain new file mode 100644 index 000000000..ac2635304 Binary files /dev/null and b/public/terrain/18/429304/176903.terrain differ diff --git a/public/terrain/18/429304/176904.terrain b/public/terrain/18/429304/176904.terrain new file mode 100644 index 000000000..c3abb4d46 Binary files /dev/null and b/public/terrain/18/429304/176904.terrain differ diff --git a/public/terrain/18/429304/176905.terrain b/public/terrain/18/429304/176905.terrain new file mode 100644 index 000000000..84f21dd21 Binary files /dev/null and b/public/terrain/18/429304/176905.terrain differ diff --git a/public/terrain/18/429304/176906.terrain b/public/terrain/18/429304/176906.terrain new file mode 100644 index 000000000..3e79a427d Binary files /dev/null and b/public/terrain/18/429304/176906.terrain differ diff --git a/public/terrain/18/429304/176907.terrain b/public/terrain/18/429304/176907.terrain new file mode 100644 index 000000000..e3c22270d Binary files /dev/null and b/public/terrain/18/429304/176907.terrain differ diff --git a/public/terrain/18/429304/176908.terrain b/public/terrain/18/429304/176908.terrain new file mode 100644 index 000000000..6504955bf Binary files /dev/null and b/public/terrain/18/429304/176908.terrain differ diff --git a/public/terrain/18/429304/176909.terrain b/public/terrain/18/429304/176909.terrain new file mode 100644 index 000000000..2c339da56 Binary files /dev/null and b/public/terrain/18/429304/176909.terrain differ diff --git a/public/terrain/18/429304/176910.terrain b/public/terrain/18/429304/176910.terrain new file mode 100644 index 000000000..ed583079d Binary files /dev/null and b/public/terrain/18/429304/176910.terrain differ diff --git a/public/terrain/18/429304/176911.terrain b/public/terrain/18/429304/176911.terrain new file mode 100644 index 000000000..21001632e Binary files /dev/null and b/public/terrain/18/429304/176911.terrain differ diff --git a/public/terrain/18/429304/176912.terrain b/public/terrain/18/429304/176912.terrain new file mode 100644 index 000000000..ba9f015f2 Binary files /dev/null and b/public/terrain/18/429304/176912.terrain differ diff --git a/public/terrain/18/429304/176913.terrain b/public/terrain/18/429304/176913.terrain new file mode 100644 index 000000000..6463b665a Binary files /dev/null and b/public/terrain/18/429304/176913.terrain differ diff --git a/public/terrain/18/429304/176914.terrain b/public/terrain/18/429304/176914.terrain new file mode 100644 index 000000000..d1a07896d Binary files /dev/null and b/public/terrain/18/429304/176914.terrain differ diff --git a/public/terrain/18/429304/176915.terrain b/public/terrain/18/429304/176915.terrain new file mode 100644 index 000000000..f353a20db Binary files /dev/null and b/public/terrain/18/429304/176915.terrain differ diff --git a/public/terrain/18/429304/176916.terrain b/public/terrain/18/429304/176916.terrain new file mode 100644 index 000000000..6cc9535ba Binary files /dev/null and b/public/terrain/18/429304/176916.terrain differ diff --git a/public/terrain/18/429304/176917.terrain b/public/terrain/18/429304/176917.terrain new file mode 100644 index 000000000..805cdc501 Binary files /dev/null and b/public/terrain/18/429304/176917.terrain differ diff --git a/public/terrain/18/429304/176918.terrain b/public/terrain/18/429304/176918.terrain new file mode 100644 index 000000000..e32a5cd1d Binary files /dev/null and b/public/terrain/18/429304/176918.terrain differ diff --git a/public/terrain/18/429304/176919.terrain b/public/terrain/18/429304/176919.terrain new file mode 100644 index 000000000..d4bc77c6b Binary files /dev/null and b/public/terrain/18/429304/176919.terrain differ diff --git a/public/terrain/18/429304/176920.terrain b/public/terrain/18/429304/176920.terrain new file mode 100644 index 000000000..ef6228462 Binary files /dev/null and b/public/terrain/18/429304/176920.terrain differ diff --git a/public/terrain/18/429304/176921.terrain b/public/terrain/18/429304/176921.terrain new file mode 100644 index 000000000..b2a3d6386 Binary files /dev/null and b/public/terrain/18/429304/176921.terrain differ diff --git a/public/terrain/18/429304/176922.terrain b/public/terrain/18/429304/176922.terrain new file mode 100644 index 000000000..4ec29bff5 Binary files /dev/null and b/public/terrain/18/429304/176922.terrain differ diff --git a/public/terrain/18/429304/176923.terrain b/public/terrain/18/429304/176923.terrain new file mode 100644 index 000000000..e32a1e53a Binary files /dev/null and b/public/terrain/18/429304/176923.terrain differ diff --git a/public/terrain/18/429304/176924.terrain b/public/terrain/18/429304/176924.terrain new file mode 100644 index 000000000..4b0b350be Binary files /dev/null and b/public/terrain/18/429304/176924.terrain differ diff --git a/public/terrain/18/429304/176925.terrain b/public/terrain/18/429304/176925.terrain new file mode 100644 index 000000000..f6d51e420 Binary files /dev/null and b/public/terrain/18/429304/176925.terrain differ diff --git a/public/terrain/18/429304/176926.terrain b/public/terrain/18/429304/176926.terrain new file mode 100644 index 000000000..d608b6b26 Binary files /dev/null and b/public/terrain/18/429304/176926.terrain differ diff --git a/public/terrain/18/429304/176927.terrain b/public/terrain/18/429304/176927.terrain new file mode 100644 index 000000000..f243d9640 Binary files /dev/null and b/public/terrain/18/429304/176927.terrain differ diff --git a/public/terrain/18/429304/176928.terrain b/public/terrain/18/429304/176928.terrain new file mode 100644 index 000000000..688c9a7af Binary files /dev/null and b/public/terrain/18/429304/176928.terrain differ diff --git a/public/terrain/18/429304/176929.terrain b/public/terrain/18/429304/176929.terrain new file mode 100644 index 000000000..162db914b Binary files /dev/null and b/public/terrain/18/429304/176929.terrain differ diff --git a/public/terrain/18/429304/176930.terrain b/public/terrain/18/429304/176930.terrain new file mode 100644 index 000000000..6e15a7973 Binary files /dev/null and b/public/terrain/18/429304/176930.terrain differ diff --git a/public/terrain/18/429304/176931.terrain b/public/terrain/18/429304/176931.terrain new file mode 100644 index 000000000..2ac132a72 Binary files /dev/null and b/public/terrain/18/429304/176931.terrain differ diff --git a/public/terrain/18/429304/176932.terrain b/public/terrain/18/429304/176932.terrain new file mode 100644 index 000000000..431bb8828 Binary files /dev/null and b/public/terrain/18/429304/176932.terrain differ diff --git a/public/terrain/18/429304/176933.terrain b/public/terrain/18/429304/176933.terrain new file mode 100644 index 000000000..84b94d979 Binary files /dev/null and b/public/terrain/18/429304/176933.terrain differ diff --git a/public/terrain/18/429304/176934.terrain b/public/terrain/18/429304/176934.terrain new file mode 100644 index 000000000..dce9b180d Binary files /dev/null and b/public/terrain/18/429304/176934.terrain differ diff --git a/public/terrain/18/429304/176935.terrain b/public/terrain/18/429304/176935.terrain new file mode 100644 index 000000000..4e1f9316a Binary files /dev/null and b/public/terrain/18/429304/176935.terrain differ diff --git a/public/terrain/18/429304/176936.terrain b/public/terrain/18/429304/176936.terrain new file mode 100644 index 000000000..ea5644cb0 Binary files /dev/null and b/public/terrain/18/429304/176936.terrain differ diff --git a/public/terrain/18/429304/176937.terrain b/public/terrain/18/429304/176937.terrain new file mode 100644 index 000000000..e65484ea9 Binary files /dev/null and b/public/terrain/18/429304/176937.terrain differ diff --git a/public/terrain/18/429304/176938.terrain b/public/terrain/18/429304/176938.terrain new file mode 100644 index 000000000..79f1fd411 Binary files /dev/null and b/public/terrain/18/429304/176938.terrain differ diff --git a/public/terrain/18/429304/176939.terrain b/public/terrain/18/429304/176939.terrain new file mode 100644 index 000000000..e529405ba Binary files /dev/null and b/public/terrain/18/429304/176939.terrain differ diff --git a/public/terrain/18/429304/176940.terrain b/public/terrain/18/429304/176940.terrain new file mode 100644 index 000000000..dbe6a905d Binary files /dev/null and b/public/terrain/18/429304/176940.terrain differ diff --git a/public/terrain/18/429304/176941.terrain b/public/terrain/18/429304/176941.terrain new file mode 100644 index 000000000..353800502 Binary files /dev/null and b/public/terrain/18/429304/176941.terrain differ diff --git a/public/terrain/18/429304/176942.terrain b/public/terrain/18/429304/176942.terrain new file mode 100644 index 000000000..9444b681b Binary files /dev/null and b/public/terrain/18/429304/176942.terrain differ diff --git a/public/terrain/18/429304/176943.terrain b/public/terrain/18/429304/176943.terrain new file mode 100644 index 000000000..c953626f8 Binary files /dev/null and b/public/terrain/18/429304/176943.terrain differ diff --git a/public/terrain/18/429304/176944.terrain b/public/terrain/18/429304/176944.terrain new file mode 100644 index 000000000..c08c5b34b Binary files /dev/null and b/public/terrain/18/429304/176944.terrain differ diff --git a/public/terrain/18/429304/176945.terrain b/public/terrain/18/429304/176945.terrain new file mode 100644 index 000000000..6b16ddea7 Binary files /dev/null and b/public/terrain/18/429304/176945.terrain differ diff --git a/public/terrain/18/429304/176946.terrain b/public/terrain/18/429304/176946.terrain new file mode 100644 index 000000000..ffa533200 Binary files /dev/null and b/public/terrain/18/429304/176946.terrain differ diff --git a/public/terrain/18/429304/176947.terrain b/public/terrain/18/429304/176947.terrain new file mode 100644 index 000000000..e055ad41e Binary files /dev/null and b/public/terrain/18/429304/176947.terrain differ diff --git a/public/terrain/18/429304/176948.terrain b/public/terrain/18/429304/176948.terrain new file mode 100644 index 000000000..af702ed92 Binary files /dev/null and b/public/terrain/18/429304/176948.terrain differ diff --git a/public/terrain/18/429304/176949.terrain b/public/terrain/18/429304/176949.terrain new file mode 100644 index 000000000..c8b9367c9 Binary files /dev/null and b/public/terrain/18/429304/176949.terrain differ diff --git a/public/terrain/18/429304/176950.terrain b/public/terrain/18/429304/176950.terrain new file mode 100644 index 000000000..f9a79e9d5 Binary files /dev/null and b/public/terrain/18/429304/176950.terrain differ diff --git a/public/terrain/18/429304/176951.terrain b/public/terrain/18/429304/176951.terrain new file mode 100644 index 000000000..839a6bbc8 Binary files /dev/null and b/public/terrain/18/429304/176951.terrain differ diff --git a/public/terrain/18/429304/176952.terrain b/public/terrain/18/429304/176952.terrain new file mode 100644 index 000000000..dbf467412 Binary files /dev/null and b/public/terrain/18/429304/176952.terrain differ diff --git a/public/terrain/18/429304/176953.terrain b/public/terrain/18/429304/176953.terrain new file mode 100644 index 000000000..a70763f55 Binary files /dev/null and b/public/terrain/18/429304/176953.terrain differ diff --git a/public/terrain/18/429304/176954.terrain b/public/terrain/18/429304/176954.terrain new file mode 100644 index 000000000..fe57b2b26 Binary files /dev/null and b/public/terrain/18/429304/176954.terrain differ diff --git a/public/terrain/18/429304/176955.terrain b/public/terrain/18/429304/176955.terrain new file mode 100644 index 000000000..7f1572904 Binary files /dev/null and b/public/terrain/18/429304/176955.terrain differ diff --git a/public/terrain/18/429304/176956.terrain b/public/terrain/18/429304/176956.terrain new file mode 100644 index 000000000..a436a32aa Binary files /dev/null and b/public/terrain/18/429304/176956.terrain differ diff --git a/public/terrain/18/429304/176957.terrain b/public/terrain/18/429304/176957.terrain new file mode 100644 index 000000000..c1efd3685 Binary files /dev/null and b/public/terrain/18/429304/176957.terrain differ diff --git a/public/terrain/18/429304/176958.terrain b/public/terrain/18/429304/176958.terrain new file mode 100644 index 000000000..66f2b5b76 Binary files /dev/null and b/public/terrain/18/429304/176958.terrain differ diff --git a/public/terrain/18/429304/176959.terrain b/public/terrain/18/429304/176959.terrain new file mode 100644 index 000000000..759e9f4f2 Binary files /dev/null and b/public/terrain/18/429304/176959.terrain differ diff --git a/public/terrain/18/429304/176960.terrain b/public/terrain/18/429304/176960.terrain new file mode 100644 index 000000000..d6d7ff875 Binary files /dev/null and b/public/terrain/18/429304/176960.terrain differ diff --git a/public/terrain/18/429304/176961.terrain b/public/terrain/18/429304/176961.terrain new file mode 100644 index 000000000..b597cc19e Binary files /dev/null and b/public/terrain/18/429304/176961.terrain differ diff --git a/public/terrain/18/429304/176962.terrain b/public/terrain/18/429304/176962.terrain new file mode 100644 index 000000000..152634d55 Binary files /dev/null and b/public/terrain/18/429304/176962.terrain differ diff --git a/public/terrain/18/429304/176963.terrain b/public/terrain/18/429304/176963.terrain new file mode 100644 index 000000000..8646aa2d8 Binary files /dev/null and b/public/terrain/18/429304/176963.terrain differ diff --git a/public/terrain/18/429304/176964.terrain b/public/terrain/18/429304/176964.terrain new file mode 100644 index 000000000..51519b58f Binary files /dev/null and b/public/terrain/18/429304/176964.terrain differ diff --git a/public/terrain/18/429304/176965.terrain b/public/terrain/18/429304/176965.terrain new file mode 100644 index 000000000..5d16fdd6f Binary files /dev/null and b/public/terrain/18/429304/176965.terrain differ diff --git a/public/terrain/18/429304/176966.terrain b/public/terrain/18/429304/176966.terrain new file mode 100644 index 000000000..f509fe681 Binary files /dev/null and b/public/terrain/18/429304/176966.terrain differ diff --git a/public/terrain/18/429304/176967.terrain b/public/terrain/18/429304/176967.terrain new file mode 100644 index 000000000..bfe5f6fb2 Binary files /dev/null and b/public/terrain/18/429304/176967.terrain differ diff --git a/public/terrain/18/429304/176968.terrain b/public/terrain/18/429304/176968.terrain new file mode 100644 index 000000000..d69933907 Binary files /dev/null and b/public/terrain/18/429304/176968.terrain differ diff --git a/public/terrain/18/429304/176969.terrain b/public/terrain/18/429304/176969.terrain new file mode 100644 index 000000000..fc149e98e Binary files /dev/null and b/public/terrain/18/429304/176969.terrain differ diff --git a/public/terrain/18/429304/176970.terrain b/public/terrain/18/429304/176970.terrain new file mode 100644 index 000000000..62f4ee175 Binary files /dev/null and b/public/terrain/18/429304/176970.terrain differ diff --git a/public/terrain/18/429304/176971.terrain b/public/terrain/18/429304/176971.terrain new file mode 100644 index 000000000..df9e9c6e3 Binary files /dev/null and b/public/terrain/18/429304/176971.terrain differ diff --git a/public/terrain/18/429304/176972.terrain b/public/terrain/18/429304/176972.terrain new file mode 100644 index 000000000..d887404f5 Binary files /dev/null and b/public/terrain/18/429304/176972.terrain differ diff --git a/public/terrain/18/429304/176973.terrain b/public/terrain/18/429304/176973.terrain new file mode 100644 index 000000000..377f5acbe Binary files /dev/null and b/public/terrain/18/429304/176973.terrain differ diff --git a/public/terrain/18/429304/176974.terrain b/public/terrain/18/429304/176974.terrain new file mode 100644 index 000000000..d70497f3b Binary files /dev/null and b/public/terrain/18/429304/176974.terrain differ diff --git a/public/terrain/18/429304/176975.terrain b/public/terrain/18/429304/176975.terrain new file mode 100644 index 000000000..c576c0296 Binary files /dev/null and b/public/terrain/18/429304/176975.terrain differ diff --git a/public/terrain/18/429304/176976.terrain b/public/terrain/18/429304/176976.terrain new file mode 100644 index 000000000..1bb838508 Binary files /dev/null and b/public/terrain/18/429304/176976.terrain differ diff --git a/public/terrain/18/429304/176977.terrain b/public/terrain/18/429304/176977.terrain new file mode 100644 index 000000000..5bcb91baa Binary files /dev/null and b/public/terrain/18/429304/176977.terrain differ diff --git a/public/terrain/18/429304/176978.terrain b/public/terrain/18/429304/176978.terrain new file mode 100644 index 000000000..c64bf65df Binary files /dev/null and b/public/terrain/18/429304/176978.terrain differ diff --git a/public/terrain/18/429304/176979.terrain b/public/terrain/18/429304/176979.terrain new file mode 100644 index 000000000..7146753bd Binary files /dev/null and b/public/terrain/18/429304/176979.terrain differ diff --git a/public/terrain/18/429304/176980.terrain b/public/terrain/18/429304/176980.terrain new file mode 100644 index 000000000..6554c427a Binary files /dev/null and b/public/terrain/18/429304/176980.terrain differ diff --git a/public/terrain/18/429304/176981.terrain b/public/terrain/18/429304/176981.terrain new file mode 100644 index 000000000..681f8b933 Binary files /dev/null and b/public/terrain/18/429304/176981.terrain differ diff --git a/public/terrain/18/429304/176982.terrain b/public/terrain/18/429304/176982.terrain new file mode 100644 index 000000000..0554ba2b6 Binary files /dev/null and b/public/terrain/18/429304/176982.terrain differ diff --git a/public/terrain/18/429304/176983.terrain b/public/terrain/18/429304/176983.terrain new file mode 100644 index 000000000..dd5dc3c8f Binary files /dev/null and b/public/terrain/18/429304/176983.terrain differ diff --git a/public/terrain/18/429304/176984.terrain b/public/terrain/18/429304/176984.terrain new file mode 100644 index 000000000..edb265453 Binary files /dev/null and b/public/terrain/18/429304/176984.terrain differ diff --git a/public/terrain/18/429304/176985.terrain b/public/terrain/18/429304/176985.terrain new file mode 100644 index 000000000..b2b020174 Binary files /dev/null and b/public/terrain/18/429304/176985.terrain differ diff --git a/public/terrain/18/429304/176986.terrain b/public/terrain/18/429304/176986.terrain new file mode 100644 index 000000000..b8cda66fd Binary files /dev/null and b/public/terrain/18/429304/176986.terrain differ diff --git a/public/terrain/18/429304/176987.terrain b/public/terrain/18/429304/176987.terrain new file mode 100644 index 000000000..b016247ec Binary files /dev/null and b/public/terrain/18/429304/176987.terrain differ diff --git a/public/terrain/18/429304/176988.terrain b/public/terrain/18/429304/176988.terrain new file mode 100644 index 000000000..df0e4b8d2 Binary files /dev/null and b/public/terrain/18/429304/176988.terrain differ diff --git a/public/terrain/18/429304/176989.terrain b/public/terrain/18/429304/176989.terrain new file mode 100644 index 000000000..abb677ad2 Binary files /dev/null and b/public/terrain/18/429304/176989.terrain differ diff --git a/public/terrain/18/429304/176990.terrain b/public/terrain/18/429304/176990.terrain new file mode 100644 index 000000000..bec26932e Binary files /dev/null and b/public/terrain/18/429304/176990.terrain differ diff --git a/public/terrain/18/429304/176991.terrain b/public/terrain/18/429304/176991.terrain new file mode 100644 index 000000000..b07da697d Binary files /dev/null and b/public/terrain/18/429304/176991.terrain differ diff --git a/public/terrain/18/429304/176992.terrain b/public/terrain/18/429304/176992.terrain new file mode 100644 index 000000000..d023af5dc Binary files /dev/null and b/public/terrain/18/429304/176992.terrain differ diff --git a/public/terrain/18/429304/176993.terrain b/public/terrain/18/429304/176993.terrain new file mode 100644 index 000000000..3f36807d3 Binary files /dev/null and b/public/terrain/18/429304/176993.terrain differ diff --git a/public/terrain/18/429304/176994.terrain b/public/terrain/18/429304/176994.terrain new file mode 100644 index 000000000..1b0d013ec Binary files /dev/null and b/public/terrain/18/429304/176994.terrain differ diff --git a/public/terrain/18/429304/176995.terrain b/public/terrain/18/429304/176995.terrain new file mode 100644 index 000000000..b5bf5d25a Binary files /dev/null and b/public/terrain/18/429304/176995.terrain differ diff --git a/public/terrain/18/429304/176996.terrain b/public/terrain/18/429304/176996.terrain new file mode 100644 index 000000000..53036b90e Binary files /dev/null and b/public/terrain/18/429304/176996.terrain differ diff --git a/public/terrain/18/429304/176997.terrain b/public/terrain/18/429304/176997.terrain new file mode 100644 index 000000000..d348fc30a Binary files /dev/null and b/public/terrain/18/429304/176997.terrain differ diff --git a/public/terrain/18/429304/176998.terrain b/public/terrain/18/429304/176998.terrain new file mode 100644 index 000000000..32512defb Binary files /dev/null and b/public/terrain/18/429304/176998.terrain differ diff --git a/public/terrain/18/429304/176999.terrain b/public/terrain/18/429304/176999.terrain new file mode 100644 index 000000000..4856e8470 Binary files /dev/null and b/public/terrain/18/429304/176999.terrain differ diff --git a/public/terrain/18/429304/177000.terrain b/public/terrain/18/429304/177000.terrain new file mode 100644 index 000000000..885c72ca7 Binary files /dev/null and b/public/terrain/18/429304/177000.terrain differ diff --git a/public/terrain/18/429304/177001.terrain b/public/terrain/18/429304/177001.terrain new file mode 100644 index 000000000..745fb68d4 Binary files /dev/null and b/public/terrain/18/429304/177001.terrain differ diff --git a/public/terrain/18/429304/177002.terrain b/public/terrain/18/429304/177002.terrain new file mode 100644 index 000000000..8857d8da8 Binary files /dev/null and b/public/terrain/18/429304/177002.terrain differ diff --git a/public/terrain/18/429304/177003.terrain b/public/terrain/18/429304/177003.terrain new file mode 100644 index 000000000..ccf5c63d7 Binary files /dev/null and b/public/terrain/18/429304/177003.terrain differ diff --git a/public/terrain/18/429304/177004.terrain b/public/terrain/18/429304/177004.terrain new file mode 100644 index 000000000..6550df554 Binary files /dev/null and b/public/terrain/18/429304/177004.terrain differ diff --git a/public/terrain/18/429304/177005.terrain b/public/terrain/18/429304/177005.terrain new file mode 100644 index 000000000..5de7d3f8f Binary files /dev/null and b/public/terrain/18/429304/177005.terrain differ diff --git a/public/terrain/18/429304/177006.terrain b/public/terrain/18/429304/177006.terrain new file mode 100644 index 000000000..56dec73cd Binary files /dev/null and b/public/terrain/18/429304/177006.terrain differ diff --git a/public/terrain/18/429304/177007.terrain b/public/terrain/18/429304/177007.terrain new file mode 100644 index 000000000..231eb1df6 Binary files /dev/null and b/public/terrain/18/429304/177007.terrain differ diff --git a/public/terrain/18/429304/177008.terrain b/public/terrain/18/429304/177008.terrain new file mode 100644 index 000000000..19708f2c9 Binary files /dev/null and b/public/terrain/18/429304/177008.terrain differ diff --git a/public/terrain/18/429304/177009.terrain b/public/terrain/18/429304/177009.terrain new file mode 100644 index 000000000..74135f8e3 Binary files /dev/null and b/public/terrain/18/429304/177009.terrain differ diff --git a/public/terrain/18/429304/177010.terrain b/public/terrain/18/429304/177010.terrain new file mode 100644 index 000000000..9c64c7358 Binary files /dev/null and b/public/terrain/18/429304/177010.terrain differ diff --git a/public/terrain/18/429304/177011.terrain b/public/terrain/18/429304/177011.terrain new file mode 100644 index 000000000..75a615055 Binary files /dev/null and b/public/terrain/18/429304/177011.terrain differ diff --git a/public/terrain/18/429304/177012.terrain b/public/terrain/18/429304/177012.terrain new file mode 100644 index 000000000..0ee381434 Binary files /dev/null and b/public/terrain/18/429304/177012.terrain differ diff --git a/public/terrain/18/429304/177013.terrain b/public/terrain/18/429304/177013.terrain new file mode 100644 index 000000000..21505f8c3 Binary files /dev/null and b/public/terrain/18/429304/177013.terrain differ diff --git a/public/terrain/18/429304/177014.terrain b/public/terrain/18/429304/177014.terrain new file mode 100644 index 000000000..54509b8bb Binary files /dev/null and b/public/terrain/18/429304/177014.terrain differ diff --git a/public/terrain/18/429304/177015.terrain b/public/terrain/18/429304/177015.terrain new file mode 100644 index 000000000..d8f99031f Binary files /dev/null and b/public/terrain/18/429304/177015.terrain differ diff --git a/public/terrain/18/429304/177016.terrain b/public/terrain/18/429304/177016.terrain new file mode 100644 index 000000000..6c9cc3d41 Binary files /dev/null and b/public/terrain/18/429304/177016.terrain differ diff --git a/public/terrain/18/429304/177017.terrain b/public/terrain/18/429304/177017.terrain new file mode 100644 index 000000000..8f9e23168 Binary files /dev/null and b/public/terrain/18/429304/177017.terrain differ diff --git a/public/terrain/18/429304/177018.terrain b/public/terrain/18/429304/177018.terrain new file mode 100644 index 000000000..29fcab794 Binary files /dev/null and b/public/terrain/18/429304/177018.terrain differ diff --git a/public/terrain/18/429304/177019.terrain b/public/terrain/18/429304/177019.terrain new file mode 100644 index 000000000..57530bafd Binary files /dev/null and b/public/terrain/18/429304/177019.terrain differ diff --git a/public/terrain/18/429304/177020.terrain b/public/terrain/18/429304/177020.terrain new file mode 100644 index 000000000..02bced6a7 Binary files /dev/null and b/public/terrain/18/429304/177020.terrain differ diff --git a/public/terrain/18/429304/177021.terrain b/public/terrain/18/429304/177021.terrain new file mode 100644 index 000000000..0c3a313a2 Binary files /dev/null and b/public/terrain/18/429304/177021.terrain differ diff --git a/public/terrain/18/429304/177022.terrain b/public/terrain/18/429304/177022.terrain new file mode 100644 index 000000000..9e061c4f0 Binary files /dev/null and b/public/terrain/18/429304/177022.terrain differ diff --git a/public/terrain/18/429304/177023.terrain b/public/terrain/18/429304/177023.terrain new file mode 100644 index 000000000..6e78b0ec1 Binary files /dev/null and b/public/terrain/18/429304/177023.terrain differ diff --git a/public/terrain/18/429304/177024.terrain b/public/terrain/18/429304/177024.terrain new file mode 100644 index 000000000..6349b8edc Binary files /dev/null and b/public/terrain/18/429304/177024.terrain differ diff --git a/public/terrain/18/429304/177025.terrain b/public/terrain/18/429304/177025.terrain new file mode 100644 index 000000000..23b337981 Binary files /dev/null and b/public/terrain/18/429304/177025.terrain differ diff --git a/public/terrain/18/429304/177026.terrain b/public/terrain/18/429304/177026.terrain new file mode 100644 index 000000000..b6bda567c Binary files /dev/null and b/public/terrain/18/429304/177026.terrain differ diff --git a/public/terrain/18/429304/177027.terrain b/public/terrain/18/429304/177027.terrain new file mode 100644 index 000000000..5ffac76fa Binary files /dev/null and b/public/terrain/18/429304/177027.terrain differ diff --git a/public/terrain/18/429304/177028.terrain b/public/terrain/18/429304/177028.terrain new file mode 100644 index 000000000..dad911ec6 Binary files /dev/null and b/public/terrain/18/429304/177028.terrain differ diff --git a/public/terrain/18/429304/177029.terrain b/public/terrain/18/429304/177029.terrain new file mode 100644 index 000000000..53031e4b3 Binary files /dev/null and b/public/terrain/18/429304/177029.terrain differ diff --git a/public/terrain/18/429305/176871.terrain b/public/terrain/18/429305/176871.terrain new file mode 100644 index 000000000..129cc83f8 Binary files /dev/null and b/public/terrain/18/429305/176871.terrain differ diff --git a/public/terrain/18/429305/176872.terrain b/public/terrain/18/429305/176872.terrain new file mode 100644 index 000000000..21ec3d1d2 Binary files /dev/null and b/public/terrain/18/429305/176872.terrain differ diff --git a/public/terrain/18/429305/176873.terrain b/public/terrain/18/429305/176873.terrain new file mode 100644 index 000000000..485f71887 Binary files /dev/null and b/public/terrain/18/429305/176873.terrain differ diff --git a/public/terrain/18/429305/176874.terrain b/public/terrain/18/429305/176874.terrain new file mode 100644 index 000000000..044ca983f Binary files /dev/null and b/public/terrain/18/429305/176874.terrain differ diff --git a/public/terrain/18/429305/176875.terrain b/public/terrain/18/429305/176875.terrain new file mode 100644 index 000000000..f42de253f Binary files /dev/null and b/public/terrain/18/429305/176875.terrain differ diff --git a/public/terrain/18/429305/176876.terrain b/public/terrain/18/429305/176876.terrain new file mode 100644 index 000000000..6e2d9963c Binary files /dev/null and b/public/terrain/18/429305/176876.terrain differ diff --git a/public/terrain/18/429305/176877.terrain b/public/terrain/18/429305/176877.terrain new file mode 100644 index 000000000..3ccc4ff62 Binary files /dev/null and b/public/terrain/18/429305/176877.terrain differ diff --git a/public/terrain/18/429305/176878.terrain b/public/terrain/18/429305/176878.terrain new file mode 100644 index 000000000..783b5e2d4 Binary files /dev/null and b/public/terrain/18/429305/176878.terrain differ diff --git a/public/terrain/18/429305/176879.terrain b/public/terrain/18/429305/176879.terrain new file mode 100644 index 000000000..b267a3a34 Binary files /dev/null and b/public/terrain/18/429305/176879.terrain differ diff --git a/public/terrain/18/429305/176880.terrain b/public/terrain/18/429305/176880.terrain new file mode 100644 index 000000000..20d54cf7b Binary files /dev/null and b/public/terrain/18/429305/176880.terrain differ diff --git a/public/terrain/18/429305/176881.terrain b/public/terrain/18/429305/176881.terrain new file mode 100644 index 000000000..6ae845196 Binary files /dev/null and b/public/terrain/18/429305/176881.terrain differ diff --git a/public/terrain/18/429305/176882.terrain b/public/terrain/18/429305/176882.terrain new file mode 100644 index 000000000..853dbcdb6 Binary files /dev/null and b/public/terrain/18/429305/176882.terrain differ diff --git a/public/terrain/18/429305/176883.terrain b/public/terrain/18/429305/176883.terrain new file mode 100644 index 000000000..c978b030b Binary files /dev/null and b/public/terrain/18/429305/176883.terrain differ diff --git a/public/terrain/18/429305/176884.terrain b/public/terrain/18/429305/176884.terrain new file mode 100644 index 000000000..c1a4c3d66 Binary files /dev/null and b/public/terrain/18/429305/176884.terrain differ diff --git a/public/terrain/18/429305/176885.terrain b/public/terrain/18/429305/176885.terrain new file mode 100644 index 000000000..20e712b95 Binary files /dev/null and b/public/terrain/18/429305/176885.terrain differ diff --git a/public/terrain/18/429305/176886.terrain b/public/terrain/18/429305/176886.terrain new file mode 100644 index 000000000..cde50ba5a Binary files /dev/null and b/public/terrain/18/429305/176886.terrain differ diff --git a/public/terrain/18/429305/176887.terrain b/public/terrain/18/429305/176887.terrain new file mode 100644 index 000000000..465fa263c Binary files /dev/null and b/public/terrain/18/429305/176887.terrain differ diff --git a/public/terrain/18/429305/176888.terrain b/public/terrain/18/429305/176888.terrain new file mode 100644 index 000000000..dc8a079ec Binary files /dev/null and b/public/terrain/18/429305/176888.terrain differ diff --git a/public/terrain/18/429305/176889.terrain b/public/terrain/18/429305/176889.terrain new file mode 100644 index 000000000..7befe1c39 Binary files /dev/null and b/public/terrain/18/429305/176889.terrain differ diff --git a/public/terrain/18/429305/176890.terrain b/public/terrain/18/429305/176890.terrain new file mode 100644 index 000000000..115def2d8 Binary files /dev/null and b/public/terrain/18/429305/176890.terrain differ diff --git a/public/terrain/18/429305/176891.terrain b/public/terrain/18/429305/176891.terrain new file mode 100644 index 000000000..0ff1e677b Binary files /dev/null and b/public/terrain/18/429305/176891.terrain differ diff --git a/public/terrain/18/429305/176892.terrain b/public/terrain/18/429305/176892.terrain new file mode 100644 index 000000000..65fd61afa Binary files /dev/null and b/public/terrain/18/429305/176892.terrain differ diff --git a/public/terrain/18/429305/176893.terrain b/public/terrain/18/429305/176893.terrain new file mode 100644 index 000000000..826bf4043 Binary files /dev/null and b/public/terrain/18/429305/176893.terrain differ diff --git a/public/terrain/18/429305/176894.terrain b/public/terrain/18/429305/176894.terrain new file mode 100644 index 000000000..f83c54526 Binary files /dev/null and b/public/terrain/18/429305/176894.terrain differ diff --git a/public/terrain/18/429305/176895.terrain b/public/terrain/18/429305/176895.terrain new file mode 100644 index 000000000..c7ed9123e Binary files /dev/null and b/public/terrain/18/429305/176895.terrain differ diff --git a/public/terrain/18/429305/176896.terrain b/public/terrain/18/429305/176896.terrain new file mode 100644 index 000000000..4b44f6d21 Binary files /dev/null and b/public/terrain/18/429305/176896.terrain differ diff --git a/public/terrain/18/429305/176897.terrain b/public/terrain/18/429305/176897.terrain new file mode 100644 index 000000000..f305f7009 Binary files /dev/null and b/public/terrain/18/429305/176897.terrain differ diff --git a/public/terrain/18/429305/176898.terrain b/public/terrain/18/429305/176898.terrain new file mode 100644 index 000000000..0c9a400f7 Binary files /dev/null and b/public/terrain/18/429305/176898.terrain differ diff --git a/public/terrain/18/429305/176899.terrain b/public/terrain/18/429305/176899.terrain new file mode 100644 index 000000000..dbed4f8a2 Binary files /dev/null and b/public/terrain/18/429305/176899.terrain differ diff --git a/public/terrain/18/429305/176900.terrain b/public/terrain/18/429305/176900.terrain new file mode 100644 index 000000000..de588d92d Binary files /dev/null and b/public/terrain/18/429305/176900.terrain differ diff --git a/public/terrain/18/429305/176901.terrain b/public/terrain/18/429305/176901.terrain new file mode 100644 index 000000000..24de78fde Binary files /dev/null and b/public/terrain/18/429305/176901.terrain differ diff --git a/public/terrain/18/429305/176902.terrain b/public/terrain/18/429305/176902.terrain new file mode 100644 index 000000000..2cda003a5 Binary files /dev/null and b/public/terrain/18/429305/176902.terrain differ diff --git a/public/terrain/18/429305/176903.terrain b/public/terrain/18/429305/176903.terrain new file mode 100644 index 000000000..cb3d5b0b1 Binary files /dev/null and b/public/terrain/18/429305/176903.terrain differ diff --git a/public/terrain/18/429305/176904.terrain b/public/terrain/18/429305/176904.terrain new file mode 100644 index 000000000..29368e865 Binary files /dev/null and b/public/terrain/18/429305/176904.terrain differ diff --git a/public/terrain/18/429305/176905.terrain b/public/terrain/18/429305/176905.terrain new file mode 100644 index 000000000..c4a680bff Binary files /dev/null and b/public/terrain/18/429305/176905.terrain differ diff --git a/public/terrain/18/429305/176906.terrain b/public/terrain/18/429305/176906.terrain new file mode 100644 index 000000000..309dcaaff Binary files /dev/null and b/public/terrain/18/429305/176906.terrain differ diff --git a/public/terrain/18/429305/176907.terrain b/public/terrain/18/429305/176907.terrain new file mode 100644 index 000000000..3a89d1f3f Binary files /dev/null and b/public/terrain/18/429305/176907.terrain differ diff --git a/public/terrain/18/429305/176908.terrain b/public/terrain/18/429305/176908.terrain new file mode 100644 index 000000000..68d0f3025 Binary files /dev/null and b/public/terrain/18/429305/176908.terrain differ diff --git a/public/terrain/18/429305/176909.terrain b/public/terrain/18/429305/176909.terrain new file mode 100644 index 000000000..ed4e925b6 Binary files /dev/null and b/public/terrain/18/429305/176909.terrain differ diff --git a/public/terrain/18/429305/176910.terrain b/public/terrain/18/429305/176910.terrain new file mode 100644 index 000000000..21e32da7c Binary files /dev/null and b/public/terrain/18/429305/176910.terrain differ diff --git a/public/terrain/18/429305/176911.terrain b/public/terrain/18/429305/176911.terrain new file mode 100644 index 000000000..c171fc0cf Binary files /dev/null and b/public/terrain/18/429305/176911.terrain differ diff --git a/public/terrain/18/429305/176912.terrain b/public/terrain/18/429305/176912.terrain new file mode 100644 index 000000000..9eb5e4d79 Binary files /dev/null and b/public/terrain/18/429305/176912.terrain differ diff --git a/public/terrain/18/429305/176913.terrain b/public/terrain/18/429305/176913.terrain new file mode 100644 index 000000000..0ff75f663 Binary files /dev/null and b/public/terrain/18/429305/176913.terrain differ diff --git a/public/terrain/18/429305/176914.terrain b/public/terrain/18/429305/176914.terrain new file mode 100644 index 000000000..16fac5884 Binary files /dev/null and b/public/terrain/18/429305/176914.terrain differ diff --git a/public/terrain/18/429305/176915.terrain b/public/terrain/18/429305/176915.terrain new file mode 100644 index 000000000..64e78e38b Binary files /dev/null and b/public/terrain/18/429305/176915.terrain differ diff --git a/public/terrain/18/429305/176916.terrain b/public/terrain/18/429305/176916.terrain new file mode 100644 index 000000000..1565a1c88 Binary files /dev/null and b/public/terrain/18/429305/176916.terrain differ diff --git a/public/terrain/18/429305/176917.terrain b/public/terrain/18/429305/176917.terrain new file mode 100644 index 000000000..80773ab2a Binary files /dev/null and b/public/terrain/18/429305/176917.terrain differ diff --git a/public/terrain/18/429305/176918.terrain b/public/terrain/18/429305/176918.terrain new file mode 100644 index 000000000..c8d386adf Binary files /dev/null and b/public/terrain/18/429305/176918.terrain differ diff --git a/public/terrain/18/429305/176919.terrain b/public/terrain/18/429305/176919.terrain new file mode 100644 index 000000000..4286617f5 Binary files /dev/null and b/public/terrain/18/429305/176919.terrain differ diff --git a/public/terrain/18/429305/176920.terrain b/public/terrain/18/429305/176920.terrain new file mode 100644 index 000000000..ed8ebe0e0 Binary files /dev/null and b/public/terrain/18/429305/176920.terrain differ diff --git a/public/terrain/18/429305/176921.terrain b/public/terrain/18/429305/176921.terrain new file mode 100644 index 000000000..d3caf0801 Binary files /dev/null and b/public/terrain/18/429305/176921.terrain differ diff --git a/public/terrain/18/429305/176922.terrain b/public/terrain/18/429305/176922.terrain new file mode 100644 index 000000000..3c0d7ca26 Binary files /dev/null and b/public/terrain/18/429305/176922.terrain differ diff --git a/public/terrain/18/429305/176923.terrain b/public/terrain/18/429305/176923.terrain new file mode 100644 index 000000000..9d1ad60c9 Binary files /dev/null and b/public/terrain/18/429305/176923.terrain differ diff --git a/public/terrain/18/429305/176924.terrain b/public/terrain/18/429305/176924.terrain new file mode 100644 index 000000000..d87193cd7 Binary files /dev/null and b/public/terrain/18/429305/176924.terrain differ diff --git a/public/terrain/18/429305/176925.terrain b/public/terrain/18/429305/176925.terrain new file mode 100644 index 000000000..bfde6e577 Binary files /dev/null and b/public/terrain/18/429305/176925.terrain differ diff --git a/public/terrain/18/429305/176926.terrain b/public/terrain/18/429305/176926.terrain new file mode 100644 index 000000000..938ab2b76 Binary files /dev/null and b/public/terrain/18/429305/176926.terrain differ diff --git a/public/terrain/18/429305/176927.terrain b/public/terrain/18/429305/176927.terrain new file mode 100644 index 000000000..3b4c3747c Binary files /dev/null and b/public/terrain/18/429305/176927.terrain differ diff --git a/public/terrain/18/429305/176928.terrain b/public/terrain/18/429305/176928.terrain new file mode 100644 index 000000000..389630d51 Binary files /dev/null and b/public/terrain/18/429305/176928.terrain differ diff --git a/public/terrain/18/429305/176929.terrain b/public/terrain/18/429305/176929.terrain new file mode 100644 index 000000000..77c4245e2 Binary files /dev/null and b/public/terrain/18/429305/176929.terrain differ diff --git a/public/terrain/18/429305/176930.terrain b/public/terrain/18/429305/176930.terrain new file mode 100644 index 000000000..77ea548df Binary files /dev/null and b/public/terrain/18/429305/176930.terrain differ diff --git a/public/terrain/18/429305/176931.terrain b/public/terrain/18/429305/176931.terrain new file mode 100644 index 000000000..912fdff61 Binary files /dev/null and b/public/terrain/18/429305/176931.terrain differ diff --git a/public/terrain/18/429305/176932.terrain b/public/terrain/18/429305/176932.terrain new file mode 100644 index 000000000..e1f7907a4 Binary files /dev/null and b/public/terrain/18/429305/176932.terrain differ diff --git a/public/terrain/18/429305/176933.terrain b/public/terrain/18/429305/176933.terrain new file mode 100644 index 000000000..67eb46b3c Binary files /dev/null and b/public/terrain/18/429305/176933.terrain differ diff --git a/public/terrain/18/429305/176934.terrain b/public/terrain/18/429305/176934.terrain new file mode 100644 index 000000000..ee1acfe66 Binary files /dev/null and b/public/terrain/18/429305/176934.terrain differ diff --git a/public/terrain/18/429305/176935.terrain b/public/terrain/18/429305/176935.terrain new file mode 100644 index 000000000..2a9945a38 Binary files /dev/null and b/public/terrain/18/429305/176935.terrain differ diff --git a/public/terrain/18/429305/176936.terrain b/public/terrain/18/429305/176936.terrain new file mode 100644 index 000000000..270084d86 Binary files /dev/null and b/public/terrain/18/429305/176936.terrain differ diff --git a/public/terrain/18/429305/176937.terrain b/public/terrain/18/429305/176937.terrain new file mode 100644 index 000000000..bbd5626f9 Binary files /dev/null and b/public/terrain/18/429305/176937.terrain differ diff --git a/public/terrain/18/429305/176938.terrain b/public/terrain/18/429305/176938.terrain new file mode 100644 index 000000000..de78dee9d Binary files /dev/null and b/public/terrain/18/429305/176938.terrain differ diff --git a/public/terrain/18/429305/176939.terrain b/public/terrain/18/429305/176939.terrain new file mode 100644 index 000000000..b3209f035 Binary files /dev/null and b/public/terrain/18/429305/176939.terrain differ diff --git a/public/terrain/18/429305/176940.terrain b/public/terrain/18/429305/176940.terrain new file mode 100644 index 000000000..e8d7a6dca Binary files /dev/null and b/public/terrain/18/429305/176940.terrain differ diff --git a/public/terrain/18/429305/176941.terrain b/public/terrain/18/429305/176941.terrain new file mode 100644 index 000000000..d9e2305e8 Binary files /dev/null and b/public/terrain/18/429305/176941.terrain differ diff --git a/public/terrain/18/429305/176942.terrain b/public/terrain/18/429305/176942.terrain new file mode 100644 index 000000000..ea242f9af Binary files /dev/null and b/public/terrain/18/429305/176942.terrain differ diff --git a/public/terrain/18/429305/176943.terrain b/public/terrain/18/429305/176943.terrain new file mode 100644 index 000000000..eb4691f95 Binary files /dev/null and b/public/terrain/18/429305/176943.terrain differ diff --git a/public/terrain/18/429305/176944.terrain b/public/terrain/18/429305/176944.terrain new file mode 100644 index 000000000..3b86e51bd Binary files /dev/null and b/public/terrain/18/429305/176944.terrain differ diff --git a/public/terrain/18/429305/176945.terrain b/public/terrain/18/429305/176945.terrain new file mode 100644 index 000000000..f8ee9c6c8 Binary files /dev/null and b/public/terrain/18/429305/176945.terrain differ diff --git a/public/terrain/18/429305/176946.terrain b/public/terrain/18/429305/176946.terrain new file mode 100644 index 000000000..b549d2f25 Binary files /dev/null and b/public/terrain/18/429305/176946.terrain differ diff --git a/public/terrain/18/429305/176947.terrain b/public/terrain/18/429305/176947.terrain new file mode 100644 index 000000000..3b469b7d2 Binary files /dev/null and b/public/terrain/18/429305/176947.terrain differ diff --git a/public/terrain/18/429305/176948.terrain b/public/terrain/18/429305/176948.terrain new file mode 100644 index 000000000..28b647d50 Binary files /dev/null and b/public/terrain/18/429305/176948.terrain differ diff --git a/public/terrain/18/429305/176949.terrain b/public/terrain/18/429305/176949.terrain new file mode 100644 index 000000000..8e2a88b1f Binary files /dev/null and b/public/terrain/18/429305/176949.terrain differ diff --git a/public/terrain/18/429305/176950.terrain b/public/terrain/18/429305/176950.terrain new file mode 100644 index 000000000..5a40f437e Binary files /dev/null and b/public/terrain/18/429305/176950.terrain differ diff --git a/public/terrain/18/429305/176951.terrain b/public/terrain/18/429305/176951.terrain new file mode 100644 index 000000000..5388ea274 Binary files /dev/null and b/public/terrain/18/429305/176951.terrain differ diff --git a/public/terrain/18/429305/176952.terrain b/public/terrain/18/429305/176952.terrain new file mode 100644 index 000000000..255cbfed7 Binary files /dev/null and b/public/terrain/18/429305/176952.terrain differ diff --git a/public/terrain/18/429305/176953.terrain b/public/terrain/18/429305/176953.terrain new file mode 100644 index 000000000..bf22da9b6 Binary files /dev/null and b/public/terrain/18/429305/176953.terrain differ diff --git a/public/terrain/18/429305/176954.terrain b/public/terrain/18/429305/176954.terrain new file mode 100644 index 000000000..686cb5b11 Binary files /dev/null and b/public/terrain/18/429305/176954.terrain differ diff --git a/public/terrain/18/429305/176955.terrain b/public/terrain/18/429305/176955.terrain new file mode 100644 index 000000000..cba3b9cde Binary files /dev/null and b/public/terrain/18/429305/176955.terrain differ diff --git a/public/terrain/18/429305/176956.terrain b/public/terrain/18/429305/176956.terrain new file mode 100644 index 000000000..3d746542c Binary files /dev/null and b/public/terrain/18/429305/176956.terrain differ diff --git a/public/terrain/18/429305/176957.terrain b/public/terrain/18/429305/176957.terrain new file mode 100644 index 000000000..989f73c0a Binary files /dev/null and b/public/terrain/18/429305/176957.terrain differ diff --git a/public/terrain/18/429305/176958.terrain b/public/terrain/18/429305/176958.terrain new file mode 100644 index 000000000..d98fec991 Binary files /dev/null and b/public/terrain/18/429305/176958.terrain differ diff --git a/public/terrain/18/429305/176959.terrain b/public/terrain/18/429305/176959.terrain new file mode 100644 index 000000000..df3d5ab5c Binary files /dev/null and b/public/terrain/18/429305/176959.terrain differ diff --git a/public/terrain/18/429305/176960.terrain b/public/terrain/18/429305/176960.terrain new file mode 100644 index 000000000..34d44c138 Binary files /dev/null and b/public/terrain/18/429305/176960.terrain differ diff --git a/public/terrain/18/429305/176961.terrain b/public/terrain/18/429305/176961.terrain new file mode 100644 index 000000000..1ffa7cbe8 Binary files /dev/null and b/public/terrain/18/429305/176961.terrain differ diff --git a/public/terrain/18/429305/176962.terrain b/public/terrain/18/429305/176962.terrain new file mode 100644 index 000000000..4718d3360 Binary files /dev/null and b/public/terrain/18/429305/176962.terrain differ diff --git a/public/terrain/18/429305/176963.terrain b/public/terrain/18/429305/176963.terrain new file mode 100644 index 000000000..0bef450bc Binary files /dev/null and b/public/terrain/18/429305/176963.terrain differ diff --git a/public/terrain/18/429305/176964.terrain b/public/terrain/18/429305/176964.terrain new file mode 100644 index 000000000..85f41824c Binary files /dev/null and b/public/terrain/18/429305/176964.terrain differ diff --git a/public/terrain/18/429305/176965.terrain b/public/terrain/18/429305/176965.terrain new file mode 100644 index 000000000..b1b6c85dd Binary files /dev/null and b/public/terrain/18/429305/176965.terrain differ diff --git a/public/terrain/18/429305/176966.terrain b/public/terrain/18/429305/176966.terrain new file mode 100644 index 000000000..9ea056d57 Binary files /dev/null and b/public/terrain/18/429305/176966.terrain differ diff --git a/public/terrain/18/429305/176967.terrain b/public/terrain/18/429305/176967.terrain new file mode 100644 index 000000000..e6d6fb7e6 Binary files /dev/null and b/public/terrain/18/429305/176967.terrain differ diff --git a/public/terrain/18/429305/176968.terrain b/public/terrain/18/429305/176968.terrain new file mode 100644 index 000000000..224a722f3 Binary files /dev/null and b/public/terrain/18/429305/176968.terrain differ diff --git a/public/terrain/18/429305/176969.terrain b/public/terrain/18/429305/176969.terrain new file mode 100644 index 000000000..f90512aea Binary files /dev/null and b/public/terrain/18/429305/176969.terrain differ diff --git a/public/terrain/18/429305/176970.terrain b/public/terrain/18/429305/176970.terrain new file mode 100644 index 000000000..687006ed2 Binary files /dev/null and b/public/terrain/18/429305/176970.terrain differ diff --git a/public/terrain/18/429305/176971.terrain b/public/terrain/18/429305/176971.terrain new file mode 100644 index 000000000..3a7819f36 Binary files /dev/null and b/public/terrain/18/429305/176971.terrain differ diff --git a/public/terrain/18/429305/176972.terrain b/public/terrain/18/429305/176972.terrain new file mode 100644 index 000000000..96980fe10 Binary files /dev/null and b/public/terrain/18/429305/176972.terrain differ diff --git a/public/terrain/18/429305/176973.terrain b/public/terrain/18/429305/176973.terrain new file mode 100644 index 000000000..633c63633 Binary files /dev/null and b/public/terrain/18/429305/176973.terrain differ diff --git a/public/terrain/18/429305/176974.terrain b/public/terrain/18/429305/176974.terrain new file mode 100644 index 000000000..f8d539ff7 Binary files /dev/null and b/public/terrain/18/429305/176974.terrain differ diff --git a/public/terrain/18/429305/176975.terrain b/public/terrain/18/429305/176975.terrain new file mode 100644 index 000000000..f56c5b30c Binary files /dev/null and b/public/terrain/18/429305/176975.terrain differ diff --git a/public/terrain/18/429305/176976.terrain b/public/terrain/18/429305/176976.terrain new file mode 100644 index 000000000..796ad4239 Binary files /dev/null and b/public/terrain/18/429305/176976.terrain differ diff --git a/public/terrain/18/429305/176977.terrain b/public/terrain/18/429305/176977.terrain new file mode 100644 index 000000000..c68165b9e Binary files /dev/null and b/public/terrain/18/429305/176977.terrain differ diff --git a/public/terrain/18/429305/176978.terrain b/public/terrain/18/429305/176978.terrain new file mode 100644 index 000000000..6129b934b Binary files /dev/null and b/public/terrain/18/429305/176978.terrain differ diff --git a/public/terrain/18/429305/176979.terrain b/public/terrain/18/429305/176979.terrain new file mode 100644 index 000000000..d0195e47a Binary files /dev/null and b/public/terrain/18/429305/176979.terrain differ diff --git a/public/terrain/18/429305/176980.terrain b/public/terrain/18/429305/176980.terrain new file mode 100644 index 000000000..50c1e3cc7 Binary files /dev/null and b/public/terrain/18/429305/176980.terrain differ diff --git a/public/terrain/18/429305/176981.terrain b/public/terrain/18/429305/176981.terrain new file mode 100644 index 000000000..abc33f26c Binary files /dev/null and b/public/terrain/18/429305/176981.terrain differ diff --git a/public/terrain/18/429305/176982.terrain b/public/terrain/18/429305/176982.terrain new file mode 100644 index 000000000..ca57f33be Binary files /dev/null and b/public/terrain/18/429305/176982.terrain differ diff --git a/public/terrain/18/429305/176983.terrain b/public/terrain/18/429305/176983.terrain new file mode 100644 index 000000000..5d9f77346 Binary files /dev/null and b/public/terrain/18/429305/176983.terrain differ diff --git a/public/terrain/18/429305/176984.terrain b/public/terrain/18/429305/176984.terrain new file mode 100644 index 000000000..1548a54d4 Binary files /dev/null and b/public/terrain/18/429305/176984.terrain differ diff --git a/public/terrain/18/429305/176985.terrain b/public/terrain/18/429305/176985.terrain new file mode 100644 index 000000000..48bb2e3e3 Binary files /dev/null and b/public/terrain/18/429305/176985.terrain differ diff --git a/public/terrain/18/429305/176986.terrain b/public/terrain/18/429305/176986.terrain new file mode 100644 index 000000000..59fd24f73 Binary files /dev/null and b/public/terrain/18/429305/176986.terrain differ diff --git a/public/terrain/18/429305/176987.terrain b/public/terrain/18/429305/176987.terrain new file mode 100644 index 000000000..1886b1034 Binary files /dev/null and b/public/terrain/18/429305/176987.terrain differ diff --git a/public/terrain/18/429305/176988.terrain b/public/terrain/18/429305/176988.terrain new file mode 100644 index 000000000..e6a532e41 Binary files /dev/null and b/public/terrain/18/429305/176988.terrain differ diff --git a/public/terrain/18/429305/176989.terrain b/public/terrain/18/429305/176989.terrain new file mode 100644 index 000000000..2c4fd4a54 Binary files /dev/null and b/public/terrain/18/429305/176989.terrain differ diff --git a/public/terrain/18/429305/176990.terrain b/public/terrain/18/429305/176990.terrain new file mode 100644 index 000000000..0d9479f6f Binary files /dev/null and b/public/terrain/18/429305/176990.terrain differ diff --git a/public/terrain/18/429305/176991.terrain b/public/terrain/18/429305/176991.terrain new file mode 100644 index 000000000..ff5d7016d Binary files /dev/null and b/public/terrain/18/429305/176991.terrain differ diff --git a/public/terrain/18/429305/176992.terrain b/public/terrain/18/429305/176992.terrain new file mode 100644 index 000000000..a05ebc1e7 Binary files /dev/null and b/public/terrain/18/429305/176992.terrain differ diff --git a/public/terrain/18/429305/176993.terrain b/public/terrain/18/429305/176993.terrain new file mode 100644 index 000000000..e31a219db Binary files /dev/null and b/public/terrain/18/429305/176993.terrain differ diff --git a/public/terrain/18/429305/176994.terrain b/public/terrain/18/429305/176994.terrain new file mode 100644 index 000000000..57cc54ee5 Binary files /dev/null and b/public/terrain/18/429305/176994.terrain differ diff --git a/public/terrain/18/429305/176995.terrain b/public/terrain/18/429305/176995.terrain new file mode 100644 index 000000000..fa0bb63c9 Binary files /dev/null and b/public/terrain/18/429305/176995.terrain differ diff --git a/public/terrain/18/429305/176996.terrain b/public/terrain/18/429305/176996.terrain new file mode 100644 index 000000000..cde1ebe17 Binary files /dev/null and b/public/terrain/18/429305/176996.terrain differ diff --git a/public/terrain/18/429305/176997.terrain b/public/terrain/18/429305/176997.terrain new file mode 100644 index 000000000..c782e5cae Binary files /dev/null and b/public/terrain/18/429305/176997.terrain differ diff --git a/public/terrain/18/429305/176998.terrain b/public/terrain/18/429305/176998.terrain new file mode 100644 index 000000000..c7fe3c310 Binary files /dev/null and b/public/terrain/18/429305/176998.terrain differ diff --git a/public/terrain/18/429305/176999.terrain b/public/terrain/18/429305/176999.terrain new file mode 100644 index 000000000..c4d9c11bd Binary files /dev/null and b/public/terrain/18/429305/176999.terrain differ diff --git a/public/terrain/18/429305/177000.terrain b/public/terrain/18/429305/177000.terrain new file mode 100644 index 000000000..ce648013d Binary files /dev/null and b/public/terrain/18/429305/177000.terrain differ diff --git a/public/terrain/18/429305/177001.terrain b/public/terrain/18/429305/177001.terrain new file mode 100644 index 000000000..ccf0b563a Binary files /dev/null and b/public/terrain/18/429305/177001.terrain differ diff --git a/public/terrain/18/429305/177002.terrain b/public/terrain/18/429305/177002.terrain new file mode 100644 index 000000000..94b84a5eb Binary files /dev/null and b/public/terrain/18/429305/177002.terrain differ diff --git a/public/terrain/18/429305/177003.terrain b/public/terrain/18/429305/177003.terrain new file mode 100644 index 000000000..6902d9888 Binary files /dev/null and b/public/terrain/18/429305/177003.terrain differ diff --git a/public/terrain/18/429305/177004.terrain b/public/terrain/18/429305/177004.terrain new file mode 100644 index 000000000..4adecc0f9 Binary files /dev/null and b/public/terrain/18/429305/177004.terrain differ diff --git a/public/terrain/18/429305/177005.terrain b/public/terrain/18/429305/177005.terrain new file mode 100644 index 000000000..90f4ac5fb Binary files /dev/null and b/public/terrain/18/429305/177005.terrain differ diff --git a/public/terrain/18/429305/177006.terrain b/public/terrain/18/429305/177006.terrain new file mode 100644 index 000000000..c4ddf15ba Binary files /dev/null and b/public/terrain/18/429305/177006.terrain differ diff --git a/public/terrain/18/429305/177007.terrain b/public/terrain/18/429305/177007.terrain new file mode 100644 index 000000000..b8599c776 Binary files /dev/null and b/public/terrain/18/429305/177007.terrain differ diff --git a/public/terrain/18/429305/177008.terrain b/public/terrain/18/429305/177008.terrain new file mode 100644 index 000000000..0ac5050b7 Binary files /dev/null and b/public/terrain/18/429305/177008.terrain differ diff --git a/public/terrain/18/429305/177009.terrain b/public/terrain/18/429305/177009.terrain new file mode 100644 index 000000000..a91a49b9d Binary files /dev/null and b/public/terrain/18/429305/177009.terrain differ diff --git a/public/terrain/18/429305/177010.terrain b/public/terrain/18/429305/177010.terrain new file mode 100644 index 000000000..817da15be Binary files /dev/null and b/public/terrain/18/429305/177010.terrain differ diff --git a/public/terrain/18/429305/177011.terrain b/public/terrain/18/429305/177011.terrain new file mode 100644 index 000000000..ab0c6db1f Binary files /dev/null and b/public/terrain/18/429305/177011.terrain differ diff --git a/public/terrain/18/429305/177012.terrain b/public/terrain/18/429305/177012.terrain new file mode 100644 index 000000000..776e79714 Binary files /dev/null and b/public/terrain/18/429305/177012.terrain differ diff --git a/public/terrain/18/429305/177013.terrain b/public/terrain/18/429305/177013.terrain new file mode 100644 index 000000000..e191e4724 Binary files /dev/null and b/public/terrain/18/429305/177013.terrain differ diff --git a/public/terrain/18/429305/177014.terrain b/public/terrain/18/429305/177014.terrain new file mode 100644 index 000000000..5712dcf53 Binary files /dev/null and b/public/terrain/18/429305/177014.terrain differ diff --git a/public/terrain/18/429305/177015.terrain b/public/terrain/18/429305/177015.terrain new file mode 100644 index 000000000..d2135d857 Binary files /dev/null and b/public/terrain/18/429305/177015.terrain differ diff --git a/public/terrain/18/429305/177016.terrain b/public/terrain/18/429305/177016.terrain new file mode 100644 index 000000000..5a8bd939a Binary files /dev/null and b/public/terrain/18/429305/177016.terrain differ diff --git a/public/terrain/18/429305/177017.terrain b/public/terrain/18/429305/177017.terrain new file mode 100644 index 000000000..be8d92e3c Binary files /dev/null and b/public/terrain/18/429305/177017.terrain differ diff --git a/public/terrain/18/429305/177018.terrain b/public/terrain/18/429305/177018.terrain new file mode 100644 index 000000000..186b84fbe Binary files /dev/null and b/public/terrain/18/429305/177018.terrain differ diff --git a/public/terrain/18/429305/177019.terrain b/public/terrain/18/429305/177019.terrain new file mode 100644 index 000000000..6ff6e4c4b Binary files /dev/null and b/public/terrain/18/429305/177019.terrain differ diff --git a/public/terrain/18/429305/177020.terrain b/public/terrain/18/429305/177020.terrain new file mode 100644 index 000000000..1ec006ad8 Binary files /dev/null and b/public/terrain/18/429305/177020.terrain differ diff --git a/public/terrain/18/429305/177021.terrain b/public/terrain/18/429305/177021.terrain new file mode 100644 index 000000000..1692f763e Binary files /dev/null and b/public/terrain/18/429305/177021.terrain differ diff --git a/public/terrain/18/429305/177022.terrain b/public/terrain/18/429305/177022.terrain new file mode 100644 index 000000000..aa180fc9d Binary files /dev/null and b/public/terrain/18/429305/177022.terrain differ diff --git a/public/terrain/18/429305/177023.terrain b/public/terrain/18/429305/177023.terrain new file mode 100644 index 000000000..378f192bb Binary files /dev/null and b/public/terrain/18/429305/177023.terrain differ diff --git a/public/terrain/18/429305/177024.terrain b/public/terrain/18/429305/177024.terrain new file mode 100644 index 000000000..efbdbbe64 Binary files /dev/null and b/public/terrain/18/429305/177024.terrain differ diff --git a/public/terrain/18/429305/177025.terrain b/public/terrain/18/429305/177025.terrain new file mode 100644 index 000000000..4ff6e0795 Binary files /dev/null and b/public/terrain/18/429305/177025.terrain differ diff --git a/public/terrain/18/429305/177026.terrain b/public/terrain/18/429305/177026.terrain new file mode 100644 index 000000000..b780dc13f Binary files /dev/null and b/public/terrain/18/429305/177026.terrain differ diff --git a/public/terrain/18/429305/177027.terrain b/public/terrain/18/429305/177027.terrain new file mode 100644 index 000000000..9339957b5 Binary files /dev/null and b/public/terrain/18/429305/177027.terrain differ diff --git a/public/terrain/18/429305/177028.terrain b/public/terrain/18/429305/177028.terrain new file mode 100644 index 000000000..3f94726ca Binary files /dev/null and b/public/terrain/18/429305/177028.terrain differ diff --git a/public/terrain/18/429305/177029.terrain b/public/terrain/18/429305/177029.terrain new file mode 100644 index 000000000..83518bba5 Binary files /dev/null and b/public/terrain/18/429305/177029.terrain differ diff --git a/public/terrain/19/858469/353743.terrain b/public/terrain/19/858469/353743.terrain new file mode 100644 index 000000000..3199c6aaf Binary files /dev/null and b/public/terrain/19/858469/353743.terrain differ diff --git a/public/terrain/19/858469/353744.terrain b/public/terrain/19/858469/353744.terrain new file mode 100644 index 000000000..da819dc1e Binary files /dev/null and b/public/terrain/19/858469/353744.terrain differ diff --git a/public/terrain/19/858469/353745.terrain b/public/terrain/19/858469/353745.terrain new file mode 100644 index 000000000..d5b953c6d Binary files /dev/null and b/public/terrain/19/858469/353745.terrain differ diff --git a/public/terrain/19/858469/353746.terrain b/public/terrain/19/858469/353746.terrain new file mode 100644 index 000000000..81a493b37 Binary files /dev/null and b/public/terrain/19/858469/353746.terrain differ diff --git a/public/terrain/19/858469/353747.terrain b/public/terrain/19/858469/353747.terrain new file mode 100644 index 000000000..b6191cb9b Binary files /dev/null and b/public/terrain/19/858469/353747.terrain differ diff --git a/public/terrain/19/858469/353748.terrain b/public/terrain/19/858469/353748.terrain new file mode 100644 index 000000000..83b6d8b3a Binary files /dev/null and b/public/terrain/19/858469/353748.terrain differ diff --git a/public/terrain/19/858469/353749.terrain b/public/terrain/19/858469/353749.terrain new file mode 100644 index 000000000..df34001d9 Binary files /dev/null and b/public/terrain/19/858469/353749.terrain differ diff --git a/public/terrain/19/858469/353750.terrain b/public/terrain/19/858469/353750.terrain new file mode 100644 index 000000000..39ee72a14 Binary files /dev/null and b/public/terrain/19/858469/353750.terrain differ diff --git a/public/terrain/19/858469/353751.terrain b/public/terrain/19/858469/353751.terrain new file mode 100644 index 000000000..5a65bb90d Binary files /dev/null and b/public/terrain/19/858469/353751.terrain differ diff --git a/public/terrain/19/858469/353752.terrain b/public/terrain/19/858469/353752.terrain new file mode 100644 index 000000000..dd1ec5682 Binary files /dev/null and b/public/terrain/19/858469/353752.terrain differ diff --git a/public/terrain/19/858469/353753.terrain b/public/terrain/19/858469/353753.terrain new file mode 100644 index 000000000..5cf8dd92f Binary files /dev/null and b/public/terrain/19/858469/353753.terrain differ diff --git a/public/terrain/19/858469/353754.terrain b/public/terrain/19/858469/353754.terrain new file mode 100644 index 000000000..1911adaf6 Binary files /dev/null and b/public/terrain/19/858469/353754.terrain differ diff --git a/public/terrain/19/858469/353755.terrain b/public/terrain/19/858469/353755.terrain new file mode 100644 index 000000000..ab924e390 Binary files /dev/null and b/public/terrain/19/858469/353755.terrain differ diff --git a/public/terrain/19/858469/353756.terrain b/public/terrain/19/858469/353756.terrain new file mode 100644 index 000000000..67f889333 Binary files /dev/null and b/public/terrain/19/858469/353756.terrain differ diff --git a/public/terrain/19/858469/353757.terrain b/public/terrain/19/858469/353757.terrain new file mode 100644 index 000000000..66d3bc8cb Binary files /dev/null and b/public/terrain/19/858469/353757.terrain differ diff --git a/public/terrain/19/858469/353758.terrain b/public/terrain/19/858469/353758.terrain new file mode 100644 index 000000000..39bd14de8 Binary files /dev/null and b/public/terrain/19/858469/353758.terrain differ diff --git a/public/terrain/19/858469/353759.terrain b/public/terrain/19/858469/353759.terrain new file mode 100644 index 000000000..d7e04c6b4 Binary files /dev/null and b/public/terrain/19/858469/353759.terrain differ diff --git a/public/terrain/19/858469/353760.terrain b/public/terrain/19/858469/353760.terrain new file mode 100644 index 000000000..9ed995629 Binary files /dev/null and b/public/terrain/19/858469/353760.terrain differ diff --git a/public/terrain/19/858469/353761.terrain b/public/terrain/19/858469/353761.terrain new file mode 100644 index 000000000..0526bb3c3 Binary files /dev/null and b/public/terrain/19/858469/353761.terrain differ diff --git a/public/terrain/19/858469/353762.terrain b/public/terrain/19/858469/353762.terrain new file mode 100644 index 000000000..7bc668c64 Binary files /dev/null and b/public/terrain/19/858469/353762.terrain differ diff --git a/public/terrain/19/858469/353763.terrain b/public/terrain/19/858469/353763.terrain new file mode 100644 index 000000000..0dbd3e56c Binary files /dev/null and b/public/terrain/19/858469/353763.terrain differ diff --git a/public/terrain/19/858469/353764.terrain b/public/terrain/19/858469/353764.terrain new file mode 100644 index 000000000..a90cc61a4 Binary files /dev/null and b/public/terrain/19/858469/353764.terrain differ diff --git a/public/terrain/19/858469/353765.terrain b/public/terrain/19/858469/353765.terrain new file mode 100644 index 000000000..790ef5737 Binary files /dev/null and b/public/terrain/19/858469/353765.terrain differ diff --git a/public/terrain/19/858469/353766.terrain b/public/terrain/19/858469/353766.terrain new file mode 100644 index 000000000..006d778f8 Binary files /dev/null and b/public/terrain/19/858469/353766.terrain differ diff --git a/public/terrain/19/858469/353767.terrain b/public/terrain/19/858469/353767.terrain new file mode 100644 index 000000000..3055ffd91 Binary files /dev/null and b/public/terrain/19/858469/353767.terrain differ diff --git a/public/terrain/19/858469/353768.terrain b/public/terrain/19/858469/353768.terrain new file mode 100644 index 000000000..631aba264 Binary files /dev/null and b/public/terrain/19/858469/353768.terrain differ diff --git a/public/terrain/19/858469/353769.terrain b/public/terrain/19/858469/353769.terrain new file mode 100644 index 000000000..52ae2d8e8 Binary files /dev/null and b/public/terrain/19/858469/353769.terrain differ diff --git a/public/terrain/19/858469/353770.terrain b/public/terrain/19/858469/353770.terrain new file mode 100644 index 000000000..57f523176 Binary files /dev/null and b/public/terrain/19/858469/353770.terrain differ diff --git a/public/terrain/19/858469/353771.terrain b/public/terrain/19/858469/353771.terrain new file mode 100644 index 000000000..c9c7c9fc7 Binary files /dev/null and b/public/terrain/19/858469/353771.terrain differ diff --git a/public/terrain/19/858469/353772.terrain b/public/terrain/19/858469/353772.terrain new file mode 100644 index 000000000..7ffd41c65 Binary files /dev/null and b/public/terrain/19/858469/353772.terrain differ diff --git a/public/terrain/19/858469/353773.terrain b/public/terrain/19/858469/353773.terrain new file mode 100644 index 000000000..d2f2d2166 Binary files /dev/null and b/public/terrain/19/858469/353773.terrain differ diff --git a/public/terrain/19/858469/353774.terrain b/public/terrain/19/858469/353774.terrain new file mode 100644 index 000000000..37bc2a2c4 Binary files /dev/null and b/public/terrain/19/858469/353774.terrain differ diff --git a/public/terrain/19/858469/353775.terrain b/public/terrain/19/858469/353775.terrain new file mode 100644 index 000000000..99ac5503e Binary files /dev/null and b/public/terrain/19/858469/353775.terrain differ diff --git a/public/terrain/19/858469/353776.terrain b/public/terrain/19/858469/353776.terrain new file mode 100644 index 000000000..2aafa926e Binary files /dev/null and b/public/terrain/19/858469/353776.terrain differ diff --git a/public/terrain/19/858469/353777.terrain b/public/terrain/19/858469/353777.terrain new file mode 100644 index 000000000..24f07bcc6 Binary files /dev/null and b/public/terrain/19/858469/353777.terrain differ diff --git a/public/terrain/19/858469/353778.terrain b/public/terrain/19/858469/353778.terrain new file mode 100644 index 000000000..474c77747 Binary files /dev/null and b/public/terrain/19/858469/353778.terrain differ diff --git a/public/terrain/19/858469/353779.terrain b/public/terrain/19/858469/353779.terrain new file mode 100644 index 000000000..5c02e0e9e Binary files /dev/null and b/public/terrain/19/858469/353779.terrain differ diff --git a/public/terrain/19/858469/353780.terrain b/public/terrain/19/858469/353780.terrain new file mode 100644 index 000000000..13ff5cac9 Binary files /dev/null and b/public/terrain/19/858469/353780.terrain differ diff --git a/public/terrain/19/858469/353781.terrain b/public/terrain/19/858469/353781.terrain new file mode 100644 index 000000000..a05f55764 Binary files /dev/null and b/public/terrain/19/858469/353781.terrain differ diff --git a/public/terrain/19/858469/353782.terrain b/public/terrain/19/858469/353782.terrain new file mode 100644 index 000000000..63c58c162 Binary files /dev/null and b/public/terrain/19/858469/353782.terrain differ diff --git a/public/terrain/19/858469/353783.terrain b/public/terrain/19/858469/353783.terrain new file mode 100644 index 000000000..ef6e66973 Binary files /dev/null and b/public/terrain/19/858469/353783.terrain differ diff --git a/public/terrain/19/858469/353784.terrain b/public/terrain/19/858469/353784.terrain new file mode 100644 index 000000000..a3ab1f3a6 Binary files /dev/null and b/public/terrain/19/858469/353784.terrain differ diff --git a/public/terrain/19/858469/353785.terrain b/public/terrain/19/858469/353785.terrain new file mode 100644 index 000000000..72a895906 Binary files /dev/null and b/public/terrain/19/858469/353785.terrain differ diff --git a/public/terrain/19/858469/353786.terrain b/public/terrain/19/858469/353786.terrain new file mode 100644 index 000000000..bdc0d36e9 Binary files /dev/null and b/public/terrain/19/858469/353786.terrain differ diff --git a/public/terrain/19/858469/353787.terrain b/public/terrain/19/858469/353787.terrain new file mode 100644 index 000000000..6501656b6 Binary files /dev/null and b/public/terrain/19/858469/353787.terrain differ diff --git a/public/terrain/19/858469/353788.terrain b/public/terrain/19/858469/353788.terrain new file mode 100644 index 000000000..332d5d6d5 Binary files /dev/null and b/public/terrain/19/858469/353788.terrain differ diff --git a/public/terrain/19/858469/353789.terrain b/public/terrain/19/858469/353789.terrain new file mode 100644 index 000000000..ca1d1b35b Binary files /dev/null and b/public/terrain/19/858469/353789.terrain differ diff --git a/public/terrain/19/858469/353790.terrain b/public/terrain/19/858469/353790.terrain new file mode 100644 index 000000000..fc7306bb2 Binary files /dev/null and b/public/terrain/19/858469/353790.terrain differ diff --git a/public/terrain/19/858469/353791.terrain b/public/terrain/19/858469/353791.terrain new file mode 100644 index 000000000..150bc9836 Binary files /dev/null and b/public/terrain/19/858469/353791.terrain differ diff --git a/public/terrain/19/858469/353792.terrain b/public/terrain/19/858469/353792.terrain new file mode 100644 index 000000000..74ecd8404 Binary files /dev/null and b/public/terrain/19/858469/353792.terrain differ diff --git a/public/terrain/19/858469/353793.terrain b/public/terrain/19/858469/353793.terrain new file mode 100644 index 000000000..e0dc23ec1 Binary files /dev/null and b/public/terrain/19/858469/353793.terrain differ diff --git a/public/terrain/19/858469/353794.terrain b/public/terrain/19/858469/353794.terrain new file mode 100644 index 000000000..ecb50498a Binary files /dev/null and b/public/terrain/19/858469/353794.terrain differ diff --git a/public/terrain/19/858469/353795.terrain b/public/terrain/19/858469/353795.terrain new file mode 100644 index 000000000..c7e6e88eb Binary files /dev/null and b/public/terrain/19/858469/353795.terrain differ diff --git a/public/terrain/19/858469/353796.terrain b/public/terrain/19/858469/353796.terrain new file mode 100644 index 000000000..af8cf56d8 Binary files /dev/null and b/public/terrain/19/858469/353796.terrain differ diff --git a/public/terrain/19/858469/353797.terrain b/public/terrain/19/858469/353797.terrain new file mode 100644 index 000000000..02fc56fd0 Binary files /dev/null and b/public/terrain/19/858469/353797.terrain differ diff --git a/public/terrain/19/858469/353798.terrain b/public/terrain/19/858469/353798.terrain new file mode 100644 index 000000000..479fd9f85 Binary files /dev/null and b/public/terrain/19/858469/353798.terrain differ diff --git a/public/terrain/19/858469/353799.terrain b/public/terrain/19/858469/353799.terrain new file mode 100644 index 000000000..d86288b4e Binary files /dev/null and b/public/terrain/19/858469/353799.terrain differ diff --git a/public/terrain/19/858469/353800.terrain b/public/terrain/19/858469/353800.terrain new file mode 100644 index 000000000..3c74aa3ba Binary files /dev/null and b/public/terrain/19/858469/353800.terrain differ diff --git a/public/terrain/19/858469/353801.terrain b/public/terrain/19/858469/353801.terrain new file mode 100644 index 000000000..5a7fd495a Binary files /dev/null and b/public/terrain/19/858469/353801.terrain differ diff --git a/public/terrain/19/858469/353802.terrain b/public/terrain/19/858469/353802.terrain new file mode 100644 index 000000000..de8e87118 Binary files /dev/null and b/public/terrain/19/858469/353802.terrain differ diff --git a/public/terrain/19/858469/353803.terrain b/public/terrain/19/858469/353803.terrain new file mode 100644 index 000000000..c3dde5a8b Binary files /dev/null and b/public/terrain/19/858469/353803.terrain differ diff --git a/public/terrain/19/858469/353804.terrain b/public/terrain/19/858469/353804.terrain new file mode 100644 index 000000000..b824dd8ce Binary files /dev/null and b/public/terrain/19/858469/353804.terrain differ diff --git a/public/terrain/19/858469/353805.terrain b/public/terrain/19/858469/353805.terrain new file mode 100644 index 000000000..3ea0001f4 Binary files /dev/null and b/public/terrain/19/858469/353805.terrain differ diff --git a/public/terrain/19/858469/353806.terrain b/public/terrain/19/858469/353806.terrain new file mode 100644 index 000000000..3d37f8108 Binary files /dev/null and b/public/terrain/19/858469/353806.terrain differ diff --git a/public/terrain/19/858469/353807.terrain b/public/terrain/19/858469/353807.terrain new file mode 100644 index 000000000..3213c362c Binary files /dev/null and b/public/terrain/19/858469/353807.terrain differ diff --git a/public/terrain/19/858469/353808.terrain b/public/terrain/19/858469/353808.terrain new file mode 100644 index 000000000..04749ca46 Binary files /dev/null and b/public/terrain/19/858469/353808.terrain differ diff --git a/public/terrain/19/858469/353809.terrain b/public/terrain/19/858469/353809.terrain new file mode 100644 index 000000000..0b3592e36 Binary files /dev/null and b/public/terrain/19/858469/353809.terrain differ diff --git a/public/terrain/19/858469/353810.terrain b/public/terrain/19/858469/353810.terrain new file mode 100644 index 000000000..a93513d73 Binary files /dev/null and b/public/terrain/19/858469/353810.terrain differ diff --git a/public/terrain/19/858469/353811.terrain b/public/terrain/19/858469/353811.terrain new file mode 100644 index 000000000..0b883338a Binary files /dev/null and b/public/terrain/19/858469/353811.terrain differ diff --git a/public/terrain/19/858469/353812.terrain b/public/terrain/19/858469/353812.terrain new file mode 100644 index 000000000..beff235d1 Binary files /dev/null and b/public/terrain/19/858469/353812.terrain differ diff --git a/public/terrain/19/858469/353813.terrain b/public/terrain/19/858469/353813.terrain new file mode 100644 index 000000000..86526fb8f Binary files /dev/null and b/public/terrain/19/858469/353813.terrain differ diff --git a/public/terrain/19/858469/353814.terrain b/public/terrain/19/858469/353814.terrain new file mode 100644 index 000000000..75f389975 Binary files /dev/null and b/public/terrain/19/858469/353814.terrain differ diff --git a/public/terrain/19/858469/353815.terrain b/public/terrain/19/858469/353815.terrain new file mode 100644 index 000000000..fa0a24cdd Binary files /dev/null and b/public/terrain/19/858469/353815.terrain differ diff --git a/public/terrain/19/858469/353816.terrain b/public/terrain/19/858469/353816.terrain new file mode 100644 index 000000000..27d0fce1c Binary files /dev/null and b/public/terrain/19/858469/353816.terrain differ diff --git a/public/terrain/19/858469/353817.terrain b/public/terrain/19/858469/353817.terrain new file mode 100644 index 000000000..f95194f00 Binary files /dev/null and b/public/terrain/19/858469/353817.terrain differ diff --git a/public/terrain/19/858469/353818.terrain b/public/terrain/19/858469/353818.terrain new file mode 100644 index 000000000..2ff87bbca Binary files /dev/null and b/public/terrain/19/858469/353818.terrain differ diff --git a/public/terrain/19/858469/353819.terrain b/public/terrain/19/858469/353819.terrain new file mode 100644 index 000000000..5b0c58635 Binary files /dev/null and b/public/terrain/19/858469/353819.terrain differ diff --git a/public/terrain/19/858469/353820.terrain b/public/terrain/19/858469/353820.terrain new file mode 100644 index 000000000..277f661fe Binary files /dev/null and b/public/terrain/19/858469/353820.terrain differ diff --git a/public/terrain/19/858469/353821.terrain b/public/terrain/19/858469/353821.terrain new file mode 100644 index 000000000..2b37fe2d2 Binary files /dev/null and b/public/terrain/19/858469/353821.terrain differ diff --git a/public/terrain/19/858469/353822.terrain b/public/terrain/19/858469/353822.terrain new file mode 100644 index 000000000..6c32f27e4 Binary files /dev/null and b/public/terrain/19/858469/353822.terrain differ diff --git a/public/terrain/19/858469/353823.terrain b/public/terrain/19/858469/353823.terrain new file mode 100644 index 000000000..dd0c7ae40 Binary files /dev/null and b/public/terrain/19/858469/353823.terrain differ diff --git a/public/terrain/19/858469/353824.terrain b/public/terrain/19/858469/353824.terrain new file mode 100644 index 000000000..4da931195 Binary files /dev/null and b/public/terrain/19/858469/353824.terrain differ diff --git a/public/terrain/19/858469/353825.terrain b/public/terrain/19/858469/353825.terrain new file mode 100644 index 000000000..287db58ee Binary files /dev/null and b/public/terrain/19/858469/353825.terrain differ diff --git a/public/terrain/19/858469/353826.terrain b/public/terrain/19/858469/353826.terrain new file mode 100644 index 000000000..6d739b58a Binary files /dev/null and b/public/terrain/19/858469/353826.terrain differ diff --git a/public/terrain/19/858469/353827.terrain b/public/terrain/19/858469/353827.terrain new file mode 100644 index 000000000..abdaee719 Binary files /dev/null and b/public/terrain/19/858469/353827.terrain differ diff --git a/public/terrain/19/858469/353828.terrain b/public/terrain/19/858469/353828.terrain new file mode 100644 index 000000000..f6f953abd Binary files /dev/null and b/public/terrain/19/858469/353828.terrain differ diff --git a/public/terrain/19/858469/353829.terrain b/public/terrain/19/858469/353829.terrain new file mode 100644 index 000000000..bafe9a24d Binary files /dev/null and b/public/terrain/19/858469/353829.terrain differ diff --git a/public/terrain/19/858469/353830.terrain b/public/terrain/19/858469/353830.terrain new file mode 100644 index 000000000..785f9eab6 Binary files /dev/null and b/public/terrain/19/858469/353830.terrain differ diff --git a/public/terrain/19/858469/353831.terrain b/public/terrain/19/858469/353831.terrain new file mode 100644 index 000000000..a2172ccb1 Binary files /dev/null and b/public/terrain/19/858469/353831.terrain differ diff --git a/public/terrain/19/858469/353832.terrain b/public/terrain/19/858469/353832.terrain new file mode 100644 index 000000000..2693d3d67 Binary files /dev/null and b/public/terrain/19/858469/353832.terrain differ diff --git a/public/terrain/19/858469/353833.terrain b/public/terrain/19/858469/353833.terrain new file mode 100644 index 000000000..e0af10b30 Binary files /dev/null and b/public/terrain/19/858469/353833.terrain differ diff --git a/public/terrain/19/858469/353834.terrain b/public/terrain/19/858469/353834.terrain new file mode 100644 index 000000000..8036bb171 Binary files /dev/null and b/public/terrain/19/858469/353834.terrain differ diff --git a/public/terrain/19/858469/353835.terrain b/public/terrain/19/858469/353835.terrain new file mode 100644 index 000000000..1e99ab77f Binary files /dev/null and b/public/terrain/19/858469/353835.terrain differ diff --git a/public/terrain/19/858469/353836.terrain b/public/terrain/19/858469/353836.terrain new file mode 100644 index 000000000..b9dc8495f Binary files /dev/null and b/public/terrain/19/858469/353836.terrain differ diff --git a/public/terrain/19/858469/353837.terrain b/public/terrain/19/858469/353837.terrain new file mode 100644 index 000000000..2add6cf66 Binary files /dev/null and b/public/terrain/19/858469/353837.terrain differ diff --git a/public/terrain/19/858469/353838.terrain b/public/terrain/19/858469/353838.terrain new file mode 100644 index 000000000..234340b3d Binary files /dev/null and b/public/terrain/19/858469/353838.terrain differ diff --git a/public/terrain/19/858469/353839.terrain b/public/terrain/19/858469/353839.terrain new file mode 100644 index 000000000..5589ca10f Binary files /dev/null and b/public/terrain/19/858469/353839.terrain differ diff --git a/public/terrain/19/858469/353840.terrain b/public/terrain/19/858469/353840.terrain new file mode 100644 index 000000000..dcf21489b Binary files /dev/null and b/public/terrain/19/858469/353840.terrain differ diff --git a/public/terrain/19/858469/353841.terrain b/public/terrain/19/858469/353841.terrain new file mode 100644 index 000000000..f48129291 Binary files /dev/null and b/public/terrain/19/858469/353841.terrain differ diff --git a/public/terrain/19/858469/353842.terrain b/public/terrain/19/858469/353842.terrain new file mode 100644 index 000000000..07f0298eb Binary files /dev/null and b/public/terrain/19/858469/353842.terrain differ diff --git a/public/terrain/19/858469/353843.terrain b/public/terrain/19/858469/353843.terrain new file mode 100644 index 000000000..e814d318f Binary files /dev/null and b/public/terrain/19/858469/353843.terrain differ diff --git a/public/terrain/19/858469/353844.terrain b/public/terrain/19/858469/353844.terrain new file mode 100644 index 000000000..816b162ed Binary files /dev/null and b/public/terrain/19/858469/353844.terrain differ diff --git a/public/terrain/19/858469/353845.terrain b/public/terrain/19/858469/353845.terrain new file mode 100644 index 000000000..1f72d4801 Binary files /dev/null and b/public/terrain/19/858469/353845.terrain differ diff --git a/public/terrain/19/858469/353846.terrain b/public/terrain/19/858469/353846.terrain new file mode 100644 index 000000000..1e2806a73 Binary files /dev/null and b/public/terrain/19/858469/353846.terrain differ diff --git a/public/terrain/19/858469/353847.terrain b/public/terrain/19/858469/353847.terrain new file mode 100644 index 000000000..ca9407f6b Binary files /dev/null and b/public/terrain/19/858469/353847.terrain differ diff --git a/public/terrain/19/858469/353848.terrain b/public/terrain/19/858469/353848.terrain new file mode 100644 index 000000000..2fbae5347 Binary files /dev/null and b/public/terrain/19/858469/353848.terrain differ diff --git a/public/terrain/19/858469/353849.terrain b/public/terrain/19/858469/353849.terrain new file mode 100644 index 000000000..0844e120f Binary files /dev/null and b/public/terrain/19/858469/353849.terrain differ diff --git a/public/terrain/19/858469/353850.terrain b/public/terrain/19/858469/353850.terrain new file mode 100644 index 000000000..11095b5c0 Binary files /dev/null and b/public/terrain/19/858469/353850.terrain differ diff --git a/public/terrain/19/858469/353851.terrain b/public/terrain/19/858469/353851.terrain new file mode 100644 index 000000000..c6274782a Binary files /dev/null and b/public/terrain/19/858469/353851.terrain differ diff --git a/public/terrain/19/858469/353852.terrain b/public/terrain/19/858469/353852.terrain new file mode 100644 index 000000000..ceba89981 Binary files /dev/null and b/public/terrain/19/858469/353852.terrain differ diff --git a/public/terrain/19/858469/353853.terrain b/public/terrain/19/858469/353853.terrain new file mode 100644 index 000000000..f37bb6237 Binary files /dev/null and b/public/terrain/19/858469/353853.terrain differ diff --git a/public/terrain/19/858469/353854.terrain b/public/terrain/19/858469/353854.terrain new file mode 100644 index 000000000..68c8135a2 Binary files /dev/null and b/public/terrain/19/858469/353854.terrain differ diff --git a/public/terrain/19/858469/353855.terrain b/public/terrain/19/858469/353855.terrain new file mode 100644 index 000000000..ea9479ead Binary files /dev/null and b/public/terrain/19/858469/353855.terrain differ diff --git a/public/terrain/19/858469/353856.terrain b/public/terrain/19/858469/353856.terrain new file mode 100644 index 000000000..d3f37d00b Binary files /dev/null and b/public/terrain/19/858469/353856.terrain differ diff --git a/public/terrain/19/858469/353857.terrain b/public/terrain/19/858469/353857.terrain new file mode 100644 index 000000000..08cc40575 Binary files /dev/null and b/public/terrain/19/858469/353857.terrain differ diff --git a/public/terrain/19/858469/353858.terrain b/public/terrain/19/858469/353858.terrain new file mode 100644 index 000000000..ed5d9389e Binary files /dev/null and b/public/terrain/19/858469/353858.terrain differ diff --git a/public/terrain/19/858469/353859.terrain b/public/terrain/19/858469/353859.terrain new file mode 100644 index 000000000..f381dad37 Binary files /dev/null and b/public/terrain/19/858469/353859.terrain differ diff --git a/public/terrain/19/858469/353860.terrain b/public/terrain/19/858469/353860.terrain new file mode 100644 index 000000000..ab3fe257d Binary files /dev/null and b/public/terrain/19/858469/353860.terrain differ diff --git a/public/terrain/19/858469/353861.terrain b/public/terrain/19/858469/353861.terrain new file mode 100644 index 000000000..907146dde Binary files /dev/null and b/public/terrain/19/858469/353861.terrain differ diff --git a/public/terrain/19/858469/353862.terrain b/public/terrain/19/858469/353862.terrain new file mode 100644 index 000000000..5759a41ab Binary files /dev/null and b/public/terrain/19/858469/353862.terrain differ diff --git a/public/terrain/19/858469/353863.terrain b/public/terrain/19/858469/353863.terrain new file mode 100644 index 000000000..4f062ed77 Binary files /dev/null and b/public/terrain/19/858469/353863.terrain differ diff --git a/public/terrain/19/858469/353864.terrain b/public/terrain/19/858469/353864.terrain new file mode 100644 index 000000000..33acc6514 Binary files /dev/null and b/public/terrain/19/858469/353864.terrain differ diff --git a/public/terrain/19/858469/353865.terrain b/public/terrain/19/858469/353865.terrain new file mode 100644 index 000000000..09dfb3971 Binary files /dev/null and b/public/terrain/19/858469/353865.terrain differ diff --git a/public/terrain/19/858469/353866.terrain b/public/terrain/19/858469/353866.terrain new file mode 100644 index 000000000..53f52c2ea Binary files /dev/null and b/public/terrain/19/858469/353866.terrain differ diff --git a/public/terrain/19/858469/353867.terrain b/public/terrain/19/858469/353867.terrain new file mode 100644 index 000000000..fe6d9f3b7 Binary files /dev/null and b/public/terrain/19/858469/353867.terrain differ diff --git a/public/terrain/19/858469/353868.terrain b/public/terrain/19/858469/353868.terrain new file mode 100644 index 000000000..6ea6fd3c6 Binary files /dev/null and b/public/terrain/19/858469/353868.terrain differ diff --git a/public/terrain/19/858469/353869.terrain b/public/terrain/19/858469/353869.terrain new file mode 100644 index 000000000..bcdadd0ae Binary files /dev/null and b/public/terrain/19/858469/353869.terrain differ diff --git a/public/terrain/19/858469/353870.terrain b/public/terrain/19/858469/353870.terrain new file mode 100644 index 000000000..eb1224a18 Binary files /dev/null and b/public/terrain/19/858469/353870.terrain differ diff --git a/public/terrain/19/858469/353871.terrain b/public/terrain/19/858469/353871.terrain new file mode 100644 index 000000000..ea113e775 Binary files /dev/null and b/public/terrain/19/858469/353871.terrain differ diff --git a/public/terrain/19/858469/353872.terrain b/public/terrain/19/858469/353872.terrain new file mode 100644 index 000000000..b2fffe2f5 Binary files /dev/null and b/public/terrain/19/858469/353872.terrain differ diff --git a/public/terrain/19/858469/353873.terrain b/public/terrain/19/858469/353873.terrain new file mode 100644 index 000000000..58f0177c1 Binary files /dev/null and b/public/terrain/19/858469/353873.terrain differ diff --git a/public/terrain/19/858469/353874.terrain b/public/terrain/19/858469/353874.terrain new file mode 100644 index 000000000..a4521e411 Binary files /dev/null and b/public/terrain/19/858469/353874.terrain differ diff --git a/public/terrain/19/858469/353875.terrain b/public/terrain/19/858469/353875.terrain new file mode 100644 index 000000000..d27c43d31 Binary files /dev/null and b/public/terrain/19/858469/353875.terrain differ diff --git a/public/terrain/19/858469/353876.terrain b/public/terrain/19/858469/353876.terrain new file mode 100644 index 000000000..d8d2259d4 Binary files /dev/null and b/public/terrain/19/858469/353876.terrain differ diff --git a/public/terrain/19/858469/353877.terrain b/public/terrain/19/858469/353877.terrain new file mode 100644 index 000000000..225ed16bb Binary files /dev/null and b/public/terrain/19/858469/353877.terrain differ diff --git a/public/terrain/19/858469/353878.terrain b/public/terrain/19/858469/353878.terrain new file mode 100644 index 000000000..3bdb70d8d Binary files /dev/null and b/public/terrain/19/858469/353878.terrain differ diff --git a/public/terrain/19/858469/353879.terrain b/public/terrain/19/858469/353879.terrain new file mode 100644 index 000000000..3696514ee Binary files /dev/null and b/public/terrain/19/858469/353879.terrain differ diff --git a/public/terrain/19/858469/353880.terrain b/public/terrain/19/858469/353880.terrain new file mode 100644 index 000000000..a6786b005 Binary files /dev/null and b/public/terrain/19/858469/353880.terrain differ diff --git a/public/terrain/19/858469/353881.terrain b/public/terrain/19/858469/353881.terrain new file mode 100644 index 000000000..df2d7faf7 Binary files /dev/null and b/public/terrain/19/858469/353881.terrain differ diff --git a/public/terrain/19/858469/353882.terrain b/public/terrain/19/858469/353882.terrain new file mode 100644 index 000000000..0bdd41402 Binary files /dev/null and b/public/terrain/19/858469/353882.terrain differ diff --git a/public/terrain/19/858469/353883.terrain b/public/terrain/19/858469/353883.terrain new file mode 100644 index 000000000..dc759ad03 Binary files /dev/null and b/public/terrain/19/858469/353883.terrain differ diff --git a/public/terrain/19/858469/353884.terrain b/public/terrain/19/858469/353884.terrain new file mode 100644 index 000000000..cad790a8e Binary files /dev/null and b/public/terrain/19/858469/353884.terrain differ diff --git a/public/terrain/19/858469/353885.terrain b/public/terrain/19/858469/353885.terrain new file mode 100644 index 000000000..4b4393cda Binary files /dev/null and b/public/terrain/19/858469/353885.terrain differ diff --git a/public/terrain/19/858469/353886.terrain b/public/terrain/19/858469/353886.terrain new file mode 100644 index 000000000..256006189 Binary files /dev/null and b/public/terrain/19/858469/353886.terrain differ diff --git a/public/terrain/19/858469/353887.terrain b/public/terrain/19/858469/353887.terrain new file mode 100644 index 000000000..c95988d87 Binary files /dev/null and b/public/terrain/19/858469/353887.terrain differ diff --git a/public/terrain/19/858469/353888.terrain b/public/terrain/19/858469/353888.terrain new file mode 100644 index 000000000..6b83f8b48 Binary files /dev/null and b/public/terrain/19/858469/353888.terrain differ diff --git a/public/terrain/19/858469/353889.terrain b/public/terrain/19/858469/353889.terrain new file mode 100644 index 000000000..4ebab52e2 Binary files /dev/null and b/public/terrain/19/858469/353889.terrain differ diff --git a/public/terrain/19/858469/353890.terrain b/public/terrain/19/858469/353890.terrain new file mode 100644 index 000000000..a85f50247 Binary files /dev/null and b/public/terrain/19/858469/353890.terrain differ diff --git a/public/terrain/19/858469/353891.terrain b/public/terrain/19/858469/353891.terrain new file mode 100644 index 000000000..57b2c7d56 Binary files /dev/null and b/public/terrain/19/858469/353891.terrain differ diff --git a/public/terrain/19/858469/353892.terrain b/public/terrain/19/858469/353892.terrain new file mode 100644 index 000000000..435c7f1a8 Binary files /dev/null and b/public/terrain/19/858469/353892.terrain differ diff --git a/public/terrain/19/858469/353893.terrain b/public/terrain/19/858469/353893.terrain new file mode 100644 index 000000000..1fb19ec56 Binary files /dev/null and b/public/terrain/19/858469/353893.terrain differ diff --git a/public/terrain/19/858469/353894.terrain b/public/terrain/19/858469/353894.terrain new file mode 100644 index 000000000..93d55063e Binary files /dev/null and b/public/terrain/19/858469/353894.terrain differ diff --git a/public/terrain/19/858469/353895.terrain b/public/terrain/19/858469/353895.terrain new file mode 100644 index 000000000..0ed595d08 Binary files /dev/null and b/public/terrain/19/858469/353895.terrain differ diff --git a/public/terrain/19/858469/353896.terrain b/public/terrain/19/858469/353896.terrain new file mode 100644 index 000000000..2f16b8a10 Binary files /dev/null and b/public/terrain/19/858469/353896.terrain differ diff --git a/public/terrain/19/858469/353897.terrain b/public/terrain/19/858469/353897.terrain new file mode 100644 index 000000000..cc92693be Binary files /dev/null and b/public/terrain/19/858469/353897.terrain differ diff --git a/public/terrain/19/858469/353898.terrain b/public/terrain/19/858469/353898.terrain new file mode 100644 index 000000000..be7b0540d Binary files /dev/null and b/public/terrain/19/858469/353898.terrain differ diff --git a/public/terrain/19/858469/353899.terrain b/public/terrain/19/858469/353899.terrain new file mode 100644 index 000000000..f05ae821d Binary files /dev/null and b/public/terrain/19/858469/353899.terrain differ diff --git a/public/terrain/19/858469/353900.terrain b/public/terrain/19/858469/353900.terrain new file mode 100644 index 000000000..533cf0127 Binary files /dev/null and b/public/terrain/19/858469/353900.terrain differ diff --git a/public/terrain/19/858469/353901.terrain b/public/terrain/19/858469/353901.terrain new file mode 100644 index 000000000..f06a183ea Binary files /dev/null and b/public/terrain/19/858469/353901.terrain differ diff --git a/public/terrain/19/858469/353902.terrain b/public/terrain/19/858469/353902.terrain new file mode 100644 index 000000000..40b95b359 Binary files /dev/null and b/public/terrain/19/858469/353902.terrain differ diff --git a/public/terrain/19/858469/353903.terrain b/public/terrain/19/858469/353903.terrain new file mode 100644 index 000000000..132b98492 Binary files /dev/null and b/public/terrain/19/858469/353903.terrain differ diff --git a/public/terrain/19/858469/353904.terrain b/public/terrain/19/858469/353904.terrain new file mode 100644 index 000000000..86616e2b7 Binary files /dev/null and b/public/terrain/19/858469/353904.terrain differ diff --git a/public/terrain/19/858469/353905.terrain b/public/terrain/19/858469/353905.terrain new file mode 100644 index 000000000..fd8d1ccca Binary files /dev/null and b/public/terrain/19/858469/353905.terrain differ diff --git a/public/terrain/19/858469/353906.terrain b/public/terrain/19/858469/353906.terrain new file mode 100644 index 000000000..c6331d28e Binary files /dev/null and b/public/terrain/19/858469/353906.terrain differ diff --git a/public/terrain/19/858469/353907.terrain b/public/terrain/19/858469/353907.terrain new file mode 100644 index 000000000..8817f43fe Binary files /dev/null and b/public/terrain/19/858469/353907.terrain differ diff --git a/public/terrain/19/858469/353908.terrain b/public/terrain/19/858469/353908.terrain new file mode 100644 index 000000000..0900d40a3 Binary files /dev/null and b/public/terrain/19/858469/353908.terrain differ diff --git a/public/terrain/19/858469/353909.terrain b/public/terrain/19/858469/353909.terrain new file mode 100644 index 000000000..93fcf2061 Binary files /dev/null and b/public/terrain/19/858469/353909.terrain differ diff --git a/public/terrain/19/858469/353910.terrain b/public/terrain/19/858469/353910.terrain new file mode 100644 index 000000000..1a30e9e7a Binary files /dev/null and b/public/terrain/19/858469/353910.terrain differ diff --git a/public/terrain/19/858469/353911.terrain b/public/terrain/19/858469/353911.terrain new file mode 100644 index 000000000..531454376 Binary files /dev/null and b/public/terrain/19/858469/353911.terrain differ diff --git a/public/terrain/19/858469/353912.terrain b/public/terrain/19/858469/353912.terrain new file mode 100644 index 000000000..f328d6d0b Binary files /dev/null and b/public/terrain/19/858469/353912.terrain differ diff --git a/public/terrain/19/858469/353913.terrain b/public/terrain/19/858469/353913.terrain new file mode 100644 index 000000000..6dfb0cae7 Binary files /dev/null and b/public/terrain/19/858469/353913.terrain differ diff --git a/public/terrain/19/858469/353914.terrain b/public/terrain/19/858469/353914.terrain new file mode 100644 index 000000000..000005dbf Binary files /dev/null and b/public/terrain/19/858469/353914.terrain differ diff --git a/public/terrain/19/858469/353915.terrain b/public/terrain/19/858469/353915.terrain new file mode 100644 index 000000000..458d810e2 Binary files /dev/null and b/public/terrain/19/858469/353915.terrain differ diff --git a/public/terrain/19/858469/353916.terrain b/public/terrain/19/858469/353916.terrain new file mode 100644 index 000000000..a3a8138e9 Binary files /dev/null and b/public/terrain/19/858469/353916.terrain differ diff --git a/public/terrain/19/858469/353917.terrain b/public/terrain/19/858469/353917.terrain new file mode 100644 index 000000000..fa71f352e Binary files /dev/null and b/public/terrain/19/858469/353917.terrain differ diff --git a/public/terrain/19/858469/353918.terrain b/public/terrain/19/858469/353918.terrain new file mode 100644 index 000000000..b5fe14621 Binary files /dev/null and b/public/terrain/19/858469/353918.terrain differ diff --git a/public/terrain/19/858469/353919.terrain b/public/terrain/19/858469/353919.terrain new file mode 100644 index 000000000..26b1fd094 Binary files /dev/null and b/public/terrain/19/858469/353919.terrain differ diff --git a/public/terrain/19/858469/353920.terrain b/public/terrain/19/858469/353920.terrain new file mode 100644 index 000000000..570c8b378 Binary files /dev/null and b/public/terrain/19/858469/353920.terrain differ diff --git a/public/terrain/19/858469/353921.terrain b/public/terrain/19/858469/353921.terrain new file mode 100644 index 000000000..f3a9245a4 Binary files /dev/null and b/public/terrain/19/858469/353921.terrain differ diff --git a/public/terrain/19/858469/353922.terrain b/public/terrain/19/858469/353922.terrain new file mode 100644 index 000000000..665d41b37 Binary files /dev/null and b/public/terrain/19/858469/353922.terrain differ diff --git a/public/terrain/19/858469/353923.terrain b/public/terrain/19/858469/353923.terrain new file mode 100644 index 000000000..d501f584c Binary files /dev/null and b/public/terrain/19/858469/353923.terrain differ diff --git a/public/terrain/19/858469/353924.terrain b/public/terrain/19/858469/353924.terrain new file mode 100644 index 000000000..fcfeaa2bb Binary files /dev/null and b/public/terrain/19/858469/353924.terrain differ diff --git a/public/terrain/19/858469/353925.terrain b/public/terrain/19/858469/353925.terrain new file mode 100644 index 000000000..d67ca1a53 Binary files /dev/null and b/public/terrain/19/858469/353925.terrain differ diff --git a/public/terrain/19/858469/353926.terrain b/public/terrain/19/858469/353926.terrain new file mode 100644 index 000000000..cdc2dd912 Binary files /dev/null and b/public/terrain/19/858469/353926.terrain differ diff --git a/public/terrain/19/858469/353927.terrain b/public/terrain/19/858469/353927.terrain new file mode 100644 index 000000000..e039c763e Binary files /dev/null and b/public/terrain/19/858469/353927.terrain differ diff --git a/public/terrain/19/858469/353928.terrain b/public/terrain/19/858469/353928.terrain new file mode 100644 index 000000000..bf0e9ee82 Binary files /dev/null and b/public/terrain/19/858469/353928.terrain differ diff --git a/public/terrain/19/858469/353929.terrain b/public/terrain/19/858469/353929.terrain new file mode 100644 index 000000000..adbd3178e Binary files /dev/null and b/public/terrain/19/858469/353929.terrain differ diff --git a/public/terrain/19/858469/353930.terrain b/public/terrain/19/858469/353930.terrain new file mode 100644 index 000000000..6d4c56f33 Binary files /dev/null and b/public/terrain/19/858469/353930.terrain differ diff --git a/public/terrain/19/858469/353931.terrain b/public/terrain/19/858469/353931.terrain new file mode 100644 index 000000000..d44f7dcde Binary files /dev/null and b/public/terrain/19/858469/353931.terrain differ diff --git a/public/terrain/19/858469/353932.terrain b/public/terrain/19/858469/353932.terrain new file mode 100644 index 000000000..304193649 Binary files /dev/null and b/public/terrain/19/858469/353932.terrain differ diff --git a/public/terrain/19/858469/353933.terrain b/public/terrain/19/858469/353933.terrain new file mode 100644 index 000000000..246200125 Binary files /dev/null and b/public/terrain/19/858469/353933.terrain differ diff --git a/public/terrain/19/858469/353934.terrain b/public/terrain/19/858469/353934.terrain new file mode 100644 index 000000000..1ae83fec7 Binary files /dev/null and b/public/terrain/19/858469/353934.terrain differ diff --git a/public/terrain/19/858469/353935.terrain b/public/terrain/19/858469/353935.terrain new file mode 100644 index 000000000..65c0f9c96 Binary files /dev/null and b/public/terrain/19/858469/353935.terrain differ diff --git a/public/terrain/19/858469/353936.terrain b/public/terrain/19/858469/353936.terrain new file mode 100644 index 000000000..9f7d84f1e Binary files /dev/null and b/public/terrain/19/858469/353936.terrain differ diff --git a/public/terrain/19/858469/353937.terrain b/public/terrain/19/858469/353937.terrain new file mode 100644 index 000000000..2489a2c6e Binary files /dev/null and b/public/terrain/19/858469/353937.terrain differ diff --git a/public/terrain/19/858469/353938.terrain b/public/terrain/19/858469/353938.terrain new file mode 100644 index 000000000..400aa940c Binary files /dev/null and b/public/terrain/19/858469/353938.terrain differ diff --git a/public/terrain/19/858469/353939.terrain b/public/terrain/19/858469/353939.terrain new file mode 100644 index 000000000..98063bd15 Binary files /dev/null and b/public/terrain/19/858469/353939.terrain differ diff --git a/public/terrain/19/858469/353940.terrain b/public/terrain/19/858469/353940.terrain new file mode 100644 index 000000000..1f73e6b2d Binary files /dev/null and b/public/terrain/19/858469/353940.terrain differ diff --git a/public/terrain/19/858469/353941.terrain b/public/terrain/19/858469/353941.terrain new file mode 100644 index 000000000..011308daf Binary files /dev/null and b/public/terrain/19/858469/353941.terrain differ diff --git a/public/terrain/19/858469/353942.terrain b/public/terrain/19/858469/353942.terrain new file mode 100644 index 000000000..d098b78b0 Binary files /dev/null and b/public/terrain/19/858469/353942.terrain differ diff --git a/public/terrain/19/858469/353943.terrain b/public/terrain/19/858469/353943.terrain new file mode 100644 index 000000000..24b6607cf Binary files /dev/null and b/public/terrain/19/858469/353943.terrain differ diff --git a/public/terrain/19/858469/353944.terrain b/public/terrain/19/858469/353944.terrain new file mode 100644 index 000000000..f67525e97 Binary files /dev/null and b/public/terrain/19/858469/353944.terrain differ diff --git a/public/terrain/19/858469/353945.terrain b/public/terrain/19/858469/353945.terrain new file mode 100644 index 000000000..bbd2e5121 Binary files /dev/null and b/public/terrain/19/858469/353945.terrain differ diff --git a/public/terrain/19/858469/353946.terrain b/public/terrain/19/858469/353946.terrain new file mode 100644 index 000000000..feaacc625 Binary files /dev/null and b/public/terrain/19/858469/353946.terrain differ diff --git a/public/terrain/19/858469/353947.terrain b/public/terrain/19/858469/353947.terrain new file mode 100644 index 000000000..b0a8a92ca Binary files /dev/null and b/public/terrain/19/858469/353947.terrain differ diff --git a/public/terrain/19/858469/353948.terrain b/public/terrain/19/858469/353948.terrain new file mode 100644 index 000000000..9b8bdd528 Binary files /dev/null and b/public/terrain/19/858469/353948.terrain differ diff --git a/public/terrain/19/858469/353949.terrain b/public/terrain/19/858469/353949.terrain new file mode 100644 index 000000000..ea582916b Binary files /dev/null and b/public/terrain/19/858469/353949.terrain differ diff --git a/public/terrain/19/858469/353950.terrain b/public/terrain/19/858469/353950.terrain new file mode 100644 index 000000000..6ee94aad4 Binary files /dev/null and b/public/terrain/19/858469/353950.terrain differ diff --git a/public/terrain/19/858469/353951.terrain b/public/terrain/19/858469/353951.terrain new file mode 100644 index 000000000..321b7486b Binary files /dev/null and b/public/terrain/19/858469/353951.terrain differ diff --git a/public/terrain/19/858469/353952.terrain b/public/terrain/19/858469/353952.terrain new file mode 100644 index 000000000..4f8dfaa1e Binary files /dev/null and b/public/terrain/19/858469/353952.terrain differ diff --git a/public/terrain/19/858469/353953.terrain b/public/terrain/19/858469/353953.terrain new file mode 100644 index 000000000..c762fd18b Binary files /dev/null and b/public/terrain/19/858469/353953.terrain differ diff --git a/public/terrain/19/858469/353954.terrain b/public/terrain/19/858469/353954.terrain new file mode 100644 index 000000000..3da8c9610 Binary files /dev/null and b/public/terrain/19/858469/353954.terrain differ diff --git a/public/terrain/19/858469/353955.terrain b/public/terrain/19/858469/353955.terrain new file mode 100644 index 000000000..d1abab1fe Binary files /dev/null and b/public/terrain/19/858469/353955.terrain differ diff --git a/public/terrain/19/858469/353956.terrain b/public/terrain/19/858469/353956.terrain new file mode 100644 index 000000000..51acc9b51 Binary files /dev/null and b/public/terrain/19/858469/353956.terrain differ diff --git a/public/terrain/19/858469/353957.terrain b/public/terrain/19/858469/353957.terrain new file mode 100644 index 000000000..c2c0adc98 Binary files /dev/null and b/public/terrain/19/858469/353957.terrain differ diff --git a/public/terrain/19/858469/353958.terrain b/public/terrain/19/858469/353958.terrain new file mode 100644 index 000000000..600d00c5a Binary files /dev/null and b/public/terrain/19/858469/353958.terrain differ diff --git a/public/terrain/19/858469/353959.terrain b/public/terrain/19/858469/353959.terrain new file mode 100644 index 000000000..04219b225 Binary files /dev/null and b/public/terrain/19/858469/353959.terrain differ diff --git a/public/terrain/19/858469/353960.terrain b/public/terrain/19/858469/353960.terrain new file mode 100644 index 000000000..ebea4f0a7 Binary files /dev/null and b/public/terrain/19/858469/353960.terrain differ diff --git a/public/terrain/19/858469/353961.terrain b/public/terrain/19/858469/353961.terrain new file mode 100644 index 000000000..94c331446 Binary files /dev/null and b/public/terrain/19/858469/353961.terrain differ diff --git a/public/terrain/19/858469/353962.terrain b/public/terrain/19/858469/353962.terrain new file mode 100644 index 000000000..b176e1d79 Binary files /dev/null and b/public/terrain/19/858469/353962.terrain differ diff --git a/public/terrain/19/858469/353963.terrain b/public/terrain/19/858469/353963.terrain new file mode 100644 index 000000000..2470d40a0 Binary files /dev/null and b/public/terrain/19/858469/353963.terrain differ diff --git a/public/terrain/19/858469/353964.terrain b/public/terrain/19/858469/353964.terrain new file mode 100644 index 000000000..67c2211ae Binary files /dev/null and b/public/terrain/19/858469/353964.terrain differ diff --git a/public/terrain/19/858469/353965.terrain b/public/terrain/19/858469/353965.terrain new file mode 100644 index 000000000..d5947cdaf Binary files /dev/null and b/public/terrain/19/858469/353965.terrain differ diff --git a/public/terrain/19/858469/353966.terrain b/public/terrain/19/858469/353966.terrain new file mode 100644 index 000000000..b41f3b0a1 Binary files /dev/null and b/public/terrain/19/858469/353966.terrain differ diff --git a/public/terrain/19/858469/353967.terrain b/public/terrain/19/858469/353967.terrain new file mode 100644 index 000000000..5a7d24e12 Binary files /dev/null and b/public/terrain/19/858469/353967.terrain differ diff --git a/public/terrain/19/858469/353968.terrain b/public/terrain/19/858469/353968.terrain new file mode 100644 index 000000000..c72e388f5 Binary files /dev/null and b/public/terrain/19/858469/353968.terrain differ diff --git a/public/terrain/19/858469/353969.terrain b/public/terrain/19/858469/353969.terrain new file mode 100644 index 000000000..ee77ce6f7 Binary files /dev/null and b/public/terrain/19/858469/353969.terrain differ diff --git a/public/terrain/19/858469/353970.terrain b/public/terrain/19/858469/353970.terrain new file mode 100644 index 000000000..9a995fc28 Binary files /dev/null and b/public/terrain/19/858469/353970.terrain differ diff --git a/public/terrain/19/858469/353971.terrain b/public/terrain/19/858469/353971.terrain new file mode 100644 index 000000000..223bedaed Binary files /dev/null and b/public/terrain/19/858469/353971.terrain differ diff --git a/public/terrain/19/858469/353972.terrain b/public/terrain/19/858469/353972.terrain new file mode 100644 index 000000000..d200780eb Binary files /dev/null and b/public/terrain/19/858469/353972.terrain differ diff --git a/public/terrain/19/858469/353973.terrain b/public/terrain/19/858469/353973.terrain new file mode 100644 index 000000000..87861d5cc Binary files /dev/null and b/public/terrain/19/858469/353973.terrain differ diff --git a/public/terrain/19/858469/353974.terrain b/public/terrain/19/858469/353974.terrain new file mode 100644 index 000000000..004b1a695 Binary files /dev/null and b/public/terrain/19/858469/353974.terrain differ diff --git a/public/terrain/19/858469/353975.terrain b/public/terrain/19/858469/353975.terrain new file mode 100644 index 000000000..fda5ef525 Binary files /dev/null and b/public/terrain/19/858469/353975.terrain differ diff --git a/public/terrain/19/858469/353976.terrain b/public/terrain/19/858469/353976.terrain new file mode 100644 index 000000000..30320a6ad Binary files /dev/null and b/public/terrain/19/858469/353976.terrain differ diff --git a/public/terrain/19/858469/353977.terrain b/public/terrain/19/858469/353977.terrain new file mode 100644 index 000000000..23c3f2006 Binary files /dev/null and b/public/terrain/19/858469/353977.terrain differ diff --git a/public/terrain/19/858469/353978.terrain b/public/terrain/19/858469/353978.terrain new file mode 100644 index 000000000..1ed282de9 Binary files /dev/null and b/public/terrain/19/858469/353978.terrain differ diff --git a/public/terrain/19/858469/353979.terrain b/public/terrain/19/858469/353979.terrain new file mode 100644 index 000000000..b58aae666 Binary files /dev/null and b/public/terrain/19/858469/353979.terrain differ diff --git a/public/terrain/19/858469/353980.terrain b/public/terrain/19/858469/353980.terrain new file mode 100644 index 000000000..626530017 Binary files /dev/null and b/public/terrain/19/858469/353980.terrain differ diff --git a/public/terrain/19/858469/353981.terrain b/public/terrain/19/858469/353981.terrain new file mode 100644 index 000000000..47d9bcd53 Binary files /dev/null and b/public/terrain/19/858469/353981.terrain differ diff --git a/public/terrain/19/858469/353982.terrain b/public/terrain/19/858469/353982.terrain new file mode 100644 index 000000000..0abb8b57d Binary files /dev/null and b/public/terrain/19/858469/353982.terrain differ diff --git a/public/terrain/19/858469/353983.terrain b/public/terrain/19/858469/353983.terrain new file mode 100644 index 000000000..b7223ee45 Binary files /dev/null and b/public/terrain/19/858469/353983.terrain differ diff --git a/public/terrain/19/858469/353984.terrain b/public/terrain/19/858469/353984.terrain new file mode 100644 index 000000000..098bd167c Binary files /dev/null and b/public/terrain/19/858469/353984.terrain differ diff --git a/public/terrain/19/858469/353985.terrain b/public/terrain/19/858469/353985.terrain new file mode 100644 index 000000000..0ad9c5da0 Binary files /dev/null and b/public/terrain/19/858469/353985.terrain differ diff --git a/public/terrain/19/858469/353986.terrain b/public/terrain/19/858469/353986.terrain new file mode 100644 index 000000000..0e443dd0c Binary files /dev/null and b/public/terrain/19/858469/353986.terrain differ diff --git a/public/terrain/19/858469/353987.terrain b/public/terrain/19/858469/353987.terrain new file mode 100644 index 000000000..c7671efea Binary files /dev/null and b/public/terrain/19/858469/353987.terrain differ diff --git a/public/terrain/19/858469/353988.terrain b/public/terrain/19/858469/353988.terrain new file mode 100644 index 000000000..6b9ee4292 Binary files /dev/null and b/public/terrain/19/858469/353988.terrain differ diff --git a/public/terrain/19/858469/353989.terrain b/public/terrain/19/858469/353989.terrain new file mode 100644 index 000000000..1b48ea0ba Binary files /dev/null and b/public/terrain/19/858469/353989.terrain differ diff --git a/public/terrain/19/858469/353990.terrain b/public/terrain/19/858469/353990.terrain new file mode 100644 index 000000000..4e14206f8 Binary files /dev/null and b/public/terrain/19/858469/353990.terrain differ diff --git a/public/terrain/19/858469/353991.terrain b/public/terrain/19/858469/353991.terrain new file mode 100644 index 000000000..2b3e41784 Binary files /dev/null and b/public/terrain/19/858469/353991.terrain differ diff --git a/public/terrain/19/858469/353992.terrain b/public/terrain/19/858469/353992.terrain new file mode 100644 index 000000000..fa0ecc651 Binary files /dev/null and b/public/terrain/19/858469/353992.terrain differ diff --git a/public/terrain/19/858469/353993.terrain b/public/terrain/19/858469/353993.terrain new file mode 100644 index 000000000..ffe991426 Binary files /dev/null and b/public/terrain/19/858469/353993.terrain differ diff --git a/public/terrain/19/858469/353994.terrain b/public/terrain/19/858469/353994.terrain new file mode 100644 index 000000000..e6933c3db Binary files /dev/null and b/public/terrain/19/858469/353994.terrain differ diff --git a/public/terrain/19/858469/353995.terrain b/public/terrain/19/858469/353995.terrain new file mode 100644 index 000000000..746e54515 Binary files /dev/null and b/public/terrain/19/858469/353995.terrain differ diff --git a/public/terrain/19/858469/353996.terrain b/public/terrain/19/858469/353996.terrain new file mode 100644 index 000000000..022016dc4 Binary files /dev/null and b/public/terrain/19/858469/353996.terrain differ diff --git a/public/terrain/19/858469/353997.terrain b/public/terrain/19/858469/353997.terrain new file mode 100644 index 000000000..8b6b0e94d Binary files /dev/null and b/public/terrain/19/858469/353997.terrain differ diff --git a/public/terrain/19/858469/353998.terrain b/public/terrain/19/858469/353998.terrain new file mode 100644 index 000000000..4242d3b1f Binary files /dev/null and b/public/terrain/19/858469/353998.terrain differ diff --git a/public/terrain/19/858469/353999.terrain b/public/terrain/19/858469/353999.terrain new file mode 100644 index 000000000..b6e362131 Binary files /dev/null and b/public/terrain/19/858469/353999.terrain differ diff --git a/public/terrain/19/858469/354000.terrain b/public/terrain/19/858469/354000.terrain new file mode 100644 index 000000000..c5f8f234c Binary files /dev/null and b/public/terrain/19/858469/354000.terrain differ diff --git a/public/terrain/19/858469/354001.terrain b/public/terrain/19/858469/354001.terrain new file mode 100644 index 000000000..20802dcda Binary files /dev/null and b/public/terrain/19/858469/354001.terrain differ diff --git a/public/terrain/19/858469/354002.terrain b/public/terrain/19/858469/354002.terrain new file mode 100644 index 000000000..5cd33345d Binary files /dev/null and b/public/terrain/19/858469/354002.terrain differ diff --git a/public/terrain/19/858469/354003.terrain b/public/terrain/19/858469/354003.terrain new file mode 100644 index 000000000..114c09656 Binary files /dev/null and b/public/terrain/19/858469/354003.terrain differ diff --git a/public/terrain/19/858469/354004.terrain b/public/terrain/19/858469/354004.terrain new file mode 100644 index 000000000..56ac7d84e Binary files /dev/null and b/public/terrain/19/858469/354004.terrain differ diff --git a/public/terrain/19/858469/354005.terrain b/public/terrain/19/858469/354005.terrain new file mode 100644 index 000000000..882ba96f7 Binary files /dev/null and b/public/terrain/19/858469/354005.terrain differ diff --git a/public/terrain/19/858469/354006.terrain b/public/terrain/19/858469/354006.terrain new file mode 100644 index 000000000..d122f907b Binary files /dev/null and b/public/terrain/19/858469/354006.terrain differ diff --git a/public/terrain/19/858469/354007.terrain b/public/terrain/19/858469/354007.terrain new file mode 100644 index 000000000..1615b1708 Binary files /dev/null and b/public/terrain/19/858469/354007.terrain differ diff --git a/public/terrain/19/858469/354008.terrain b/public/terrain/19/858469/354008.terrain new file mode 100644 index 000000000..38dad34ba Binary files /dev/null and b/public/terrain/19/858469/354008.terrain differ diff --git a/public/terrain/19/858469/354009.terrain b/public/terrain/19/858469/354009.terrain new file mode 100644 index 000000000..0fb4437ba Binary files /dev/null and b/public/terrain/19/858469/354009.terrain differ diff --git a/public/terrain/19/858469/354010.terrain b/public/terrain/19/858469/354010.terrain new file mode 100644 index 000000000..f7547b009 Binary files /dev/null and b/public/terrain/19/858469/354010.terrain differ diff --git a/public/terrain/19/858469/354011.terrain b/public/terrain/19/858469/354011.terrain new file mode 100644 index 000000000..b26a6063e Binary files /dev/null and b/public/terrain/19/858469/354011.terrain differ diff --git a/public/terrain/19/858469/354012.terrain b/public/terrain/19/858469/354012.terrain new file mode 100644 index 000000000..721b30f44 Binary files /dev/null and b/public/terrain/19/858469/354012.terrain differ diff --git a/public/terrain/19/858469/354013.terrain b/public/terrain/19/858469/354013.terrain new file mode 100644 index 000000000..16c7143ca Binary files /dev/null and b/public/terrain/19/858469/354013.terrain differ diff --git a/public/terrain/19/858469/354014.terrain b/public/terrain/19/858469/354014.terrain new file mode 100644 index 000000000..45e195dfb Binary files /dev/null and b/public/terrain/19/858469/354014.terrain differ diff --git a/public/terrain/19/858469/354015.terrain b/public/terrain/19/858469/354015.terrain new file mode 100644 index 000000000..d705e2263 Binary files /dev/null and b/public/terrain/19/858469/354015.terrain differ diff --git a/public/terrain/19/858469/354016.terrain b/public/terrain/19/858469/354016.terrain new file mode 100644 index 000000000..6ac668121 Binary files /dev/null and b/public/terrain/19/858469/354016.terrain differ diff --git a/public/terrain/19/858469/354017.terrain b/public/terrain/19/858469/354017.terrain new file mode 100644 index 000000000..2fe0d0376 Binary files /dev/null and b/public/terrain/19/858469/354017.terrain differ diff --git a/public/terrain/19/858469/354018.terrain b/public/terrain/19/858469/354018.terrain new file mode 100644 index 000000000..946050cc9 Binary files /dev/null and b/public/terrain/19/858469/354018.terrain differ diff --git a/public/terrain/19/858469/354019.terrain b/public/terrain/19/858469/354019.terrain new file mode 100644 index 000000000..09b5a58d6 Binary files /dev/null and b/public/terrain/19/858469/354019.terrain differ diff --git a/public/terrain/19/858469/354020.terrain b/public/terrain/19/858469/354020.terrain new file mode 100644 index 000000000..a1431f800 Binary files /dev/null and b/public/terrain/19/858469/354020.terrain differ diff --git a/public/terrain/19/858469/354021.terrain b/public/terrain/19/858469/354021.terrain new file mode 100644 index 000000000..5d5f88a03 Binary files /dev/null and b/public/terrain/19/858469/354021.terrain differ diff --git a/public/terrain/19/858469/354022.terrain b/public/terrain/19/858469/354022.terrain new file mode 100644 index 000000000..f3c88c9d9 Binary files /dev/null and b/public/terrain/19/858469/354022.terrain differ diff --git a/public/terrain/19/858469/354023.terrain b/public/terrain/19/858469/354023.terrain new file mode 100644 index 000000000..b7ff31ebd Binary files /dev/null and b/public/terrain/19/858469/354023.terrain differ diff --git a/public/terrain/19/858469/354024.terrain b/public/terrain/19/858469/354024.terrain new file mode 100644 index 000000000..353cab9c4 Binary files /dev/null and b/public/terrain/19/858469/354024.terrain differ diff --git a/public/terrain/19/858469/354025.terrain b/public/terrain/19/858469/354025.terrain new file mode 100644 index 000000000..29fe92bea Binary files /dev/null and b/public/terrain/19/858469/354025.terrain differ diff --git a/public/terrain/19/858469/354026.terrain b/public/terrain/19/858469/354026.terrain new file mode 100644 index 000000000..770ca78a0 Binary files /dev/null and b/public/terrain/19/858469/354026.terrain differ diff --git a/public/terrain/19/858469/354027.terrain b/public/terrain/19/858469/354027.terrain new file mode 100644 index 000000000..6a25aa1a8 Binary files /dev/null and b/public/terrain/19/858469/354027.terrain differ diff --git a/public/terrain/19/858469/354028.terrain b/public/terrain/19/858469/354028.terrain new file mode 100644 index 000000000..709e5443d Binary files /dev/null and b/public/terrain/19/858469/354028.terrain differ diff --git a/public/terrain/19/858469/354029.terrain b/public/terrain/19/858469/354029.terrain new file mode 100644 index 000000000..12abc9a4b Binary files /dev/null and b/public/terrain/19/858469/354029.terrain differ diff --git a/public/terrain/19/858469/354030.terrain b/public/terrain/19/858469/354030.terrain new file mode 100644 index 000000000..4cfab453a Binary files /dev/null and b/public/terrain/19/858469/354030.terrain differ diff --git a/public/terrain/19/858469/354031.terrain b/public/terrain/19/858469/354031.terrain new file mode 100644 index 000000000..9a146cf82 Binary files /dev/null and b/public/terrain/19/858469/354031.terrain differ diff --git a/public/terrain/19/858469/354032.terrain b/public/terrain/19/858469/354032.terrain new file mode 100644 index 000000000..656108fe0 Binary files /dev/null and b/public/terrain/19/858469/354032.terrain differ diff --git a/public/terrain/19/858469/354033.terrain b/public/terrain/19/858469/354033.terrain new file mode 100644 index 000000000..0391b3b0c Binary files /dev/null and b/public/terrain/19/858469/354033.terrain differ diff --git a/public/terrain/19/858469/354034.terrain b/public/terrain/19/858469/354034.terrain new file mode 100644 index 000000000..c0ec9276a Binary files /dev/null and b/public/terrain/19/858469/354034.terrain differ diff --git a/public/terrain/19/858469/354035.terrain b/public/terrain/19/858469/354035.terrain new file mode 100644 index 000000000..e83595e69 Binary files /dev/null and b/public/terrain/19/858469/354035.terrain differ diff --git a/public/terrain/19/858469/354036.terrain b/public/terrain/19/858469/354036.terrain new file mode 100644 index 000000000..18685748f Binary files /dev/null and b/public/terrain/19/858469/354036.terrain differ diff --git a/public/terrain/19/858469/354037.terrain b/public/terrain/19/858469/354037.terrain new file mode 100644 index 000000000..ce9e382d4 Binary files /dev/null and b/public/terrain/19/858469/354037.terrain differ diff --git a/public/terrain/19/858469/354038.terrain b/public/terrain/19/858469/354038.terrain new file mode 100644 index 000000000..79fa70bf1 Binary files /dev/null and b/public/terrain/19/858469/354038.terrain differ diff --git a/public/terrain/19/858469/354039.terrain b/public/terrain/19/858469/354039.terrain new file mode 100644 index 000000000..ad1cfd9be Binary files /dev/null and b/public/terrain/19/858469/354039.terrain differ diff --git a/public/terrain/19/858469/354040.terrain b/public/terrain/19/858469/354040.terrain new file mode 100644 index 000000000..093f72994 Binary files /dev/null and b/public/terrain/19/858469/354040.terrain differ diff --git a/public/terrain/19/858469/354041.terrain b/public/terrain/19/858469/354041.terrain new file mode 100644 index 000000000..b26e41198 Binary files /dev/null and b/public/terrain/19/858469/354041.terrain differ diff --git a/public/terrain/19/858469/354042.terrain b/public/terrain/19/858469/354042.terrain new file mode 100644 index 000000000..05919c1df Binary files /dev/null and b/public/terrain/19/858469/354042.terrain differ diff --git a/public/terrain/19/858469/354043.terrain b/public/terrain/19/858469/354043.terrain new file mode 100644 index 000000000..a47dbd7f7 Binary files /dev/null and b/public/terrain/19/858469/354043.terrain differ diff --git a/public/terrain/19/858469/354044.terrain b/public/terrain/19/858469/354044.terrain new file mode 100644 index 000000000..e572b7da5 Binary files /dev/null and b/public/terrain/19/858469/354044.terrain differ diff --git a/public/terrain/19/858469/354045.terrain b/public/terrain/19/858469/354045.terrain new file mode 100644 index 000000000..022f845fd Binary files /dev/null and b/public/terrain/19/858469/354045.terrain differ diff --git a/public/terrain/19/858469/354046.terrain b/public/terrain/19/858469/354046.terrain new file mode 100644 index 000000000..f8db7c3d1 Binary files /dev/null and b/public/terrain/19/858469/354046.terrain differ diff --git a/public/terrain/19/858469/354047.terrain b/public/terrain/19/858469/354047.terrain new file mode 100644 index 000000000..c3e47cf50 Binary files /dev/null and b/public/terrain/19/858469/354047.terrain differ diff --git a/public/terrain/19/858469/354048.terrain b/public/terrain/19/858469/354048.terrain new file mode 100644 index 000000000..5cff20f73 Binary files /dev/null and b/public/terrain/19/858469/354048.terrain differ diff --git a/public/terrain/19/858469/354049.terrain b/public/terrain/19/858469/354049.terrain new file mode 100644 index 000000000..7a08669e9 Binary files /dev/null and b/public/terrain/19/858469/354049.terrain differ diff --git a/public/terrain/19/858469/354050.terrain b/public/terrain/19/858469/354050.terrain new file mode 100644 index 000000000..8296aba57 Binary files /dev/null and b/public/terrain/19/858469/354050.terrain differ diff --git a/public/terrain/19/858469/354051.terrain b/public/terrain/19/858469/354051.terrain new file mode 100644 index 000000000..ba979eab3 Binary files /dev/null and b/public/terrain/19/858469/354051.terrain differ diff --git a/public/terrain/19/858469/354052.terrain b/public/terrain/19/858469/354052.terrain new file mode 100644 index 000000000..a759166a7 Binary files /dev/null and b/public/terrain/19/858469/354052.terrain differ diff --git a/public/terrain/19/858469/354053.terrain b/public/terrain/19/858469/354053.terrain new file mode 100644 index 000000000..b2f5215d2 Binary files /dev/null and b/public/terrain/19/858469/354053.terrain differ diff --git a/public/terrain/19/858469/354054.terrain b/public/terrain/19/858469/354054.terrain new file mode 100644 index 000000000..cf99c6dea Binary files /dev/null and b/public/terrain/19/858469/354054.terrain differ diff --git a/public/terrain/19/858469/354055.terrain b/public/terrain/19/858469/354055.terrain new file mode 100644 index 000000000..4fa0371a8 Binary files /dev/null and b/public/terrain/19/858469/354055.terrain differ diff --git a/public/terrain/19/858469/354056.terrain b/public/terrain/19/858469/354056.terrain new file mode 100644 index 000000000..e0e099ffa Binary files /dev/null and b/public/terrain/19/858469/354056.terrain differ diff --git a/public/terrain/19/858469/354057.terrain b/public/terrain/19/858469/354057.terrain new file mode 100644 index 000000000..7ba750e0e Binary files /dev/null and b/public/terrain/19/858469/354057.terrain differ diff --git a/public/terrain/19/858469/354058.terrain b/public/terrain/19/858469/354058.terrain new file mode 100644 index 000000000..ba91457bb Binary files /dev/null and b/public/terrain/19/858469/354058.terrain differ diff --git a/public/terrain/19/858469/354059.terrain b/public/terrain/19/858469/354059.terrain new file mode 100644 index 000000000..cda9a577c Binary files /dev/null and b/public/terrain/19/858469/354059.terrain differ diff --git a/public/terrain/19/858470/353743.terrain b/public/terrain/19/858470/353743.terrain new file mode 100644 index 000000000..50f9be1fa Binary files /dev/null and b/public/terrain/19/858470/353743.terrain differ diff --git a/public/terrain/19/858470/353744.terrain b/public/terrain/19/858470/353744.terrain new file mode 100644 index 000000000..76e9d1446 Binary files /dev/null and b/public/terrain/19/858470/353744.terrain differ diff --git a/public/terrain/19/858470/353745.terrain b/public/terrain/19/858470/353745.terrain new file mode 100644 index 000000000..ca9eb2c0c Binary files /dev/null and b/public/terrain/19/858470/353745.terrain differ diff --git a/public/terrain/19/858470/353746.terrain b/public/terrain/19/858470/353746.terrain new file mode 100644 index 000000000..a61426462 Binary files /dev/null and b/public/terrain/19/858470/353746.terrain differ diff --git a/public/terrain/19/858470/353747.terrain b/public/terrain/19/858470/353747.terrain new file mode 100644 index 000000000..1020e5e9d Binary files /dev/null and b/public/terrain/19/858470/353747.terrain differ diff --git a/public/terrain/19/858470/353748.terrain b/public/terrain/19/858470/353748.terrain new file mode 100644 index 000000000..fba25a23a Binary files /dev/null and b/public/terrain/19/858470/353748.terrain differ diff --git a/public/terrain/19/858470/353749.terrain b/public/terrain/19/858470/353749.terrain new file mode 100644 index 000000000..03b3bcb60 Binary files /dev/null and b/public/terrain/19/858470/353749.terrain differ diff --git a/public/terrain/19/858470/353750.terrain b/public/terrain/19/858470/353750.terrain new file mode 100644 index 000000000..f2b5e727a Binary files /dev/null and b/public/terrain/19/858470/353750.terrain differ diff --git a/public/terrain/19/858470/353751.terrain b/public/terrain/19/858470/353751.terrain new file mode 100644 index 000000000..dc6b95722 Binary files /dev/null and b/public/terrain/19/858470/353751.terrain differ diff --git a/public/terrain/19/858470/353752.terrain b/public/terrain/19/858470/353752.terrain new file mode 100644 index 000000000..4525f54f1 Binary files /dev/null and b/public/terrain/19/858470/353752.terrain differ diff --git a/public/terrain/19/858470/353753.terrain b/public/terrain/19/858470/353753.terrain new file mode 100644 index 000000000..241731e84 Binary files /dev/null and b/public/terrain/19/858470/353753.terrain differ diff --git a/public/terrain/19/858470/353754.terrain b/public/terrain/19/858470/353754.terrain new file mode 100644 index 000000000..55a9af218 Binary files /dev/null and b/public/terrain/19/858470/353754.terrain differ diff --git a/public/terrain/19/858470/353755.terrain b/public/terrain/19/858470/353755.terrain new file mode 100644 index 000000000..f4a77047c Binary files /dev/null and b/public/terrain/19/858470/353755.terrain differ diff --git a/public/terrain/19/858470/353756.terrain b/public/terrain/19/858470/353756.terrain new file mode 100644 index 000000000..89bcc111b Binary files /dev/null and b/public/terrain/19/858470/353756.terrain differ diff --git a/public/terrain/19/858470/353757.terrain b/public/terrain/19/858470/353757.terrain new file mode 100644 index 000000000..a22e3035a Binary files /dev/null and b/public/terrain/19/858470/353757.terrain differ diff --git a/public/terrain/19/858470/353758.terrain b/public/terrain/19/858470/353758.terrain new file mode 100644 index 000000000..d4446e000 Binary files /dev/null and b/public/terrain/19/858470/353758.terrain differ diff --git a/public/terrain/19/858470/353759.terrain b/public/terrain/19/858470/353759.terrain new file mode 100644 index 000000000..9be416413 Binary files /dev/null and b/public/terrain/19/858470/353759.terrain differ diff --git a/public/terrain/19/858470/353760.terrain b/public/terrain/19/858470/353760.terrain new file mode 100644 index 000000000..8c0f7fdf3 Binary files /dev/null and b/public/terrain/19/858470/353760.terrain differ diff --git a/public/terrain/19/858470/353761.terrain b/public/terrain/19/858470/353761.terrain new file mode 100644 index 000000000..a41132bf9 Binary files /dev/null and b/public/terrain/19/858470/353761.terrain differ diff --git a/public/terrain/19/858470/353762.terrain b/public/terrain/19/858470/353762.terrain new file mode 100644 index 000000000..a4887dcaf Binary files /dev/null and b/public/terrain/19/858470/353762.terrain differ diff --git a/public/terrain/19/858470/353763.terrain b/public/terrain/19/858470/353763.terrain new file mode 100644 index 000000000..ac94dd883 Binary files /dev/null and b/public/terrain/19/858470/353763.terrain differ diff --git a/public/terrain/19/858470/353764.terrain b/public/terrain/19/858470/353764.terrain new file mode 100644 index 000000000..da2e094b2 Binary files /dev/null and b/public/terrain/19/858470/353764.terrain differ diff --git a/public/terrain/19/858470/353765.terrain b/public/terrain/19/858470/353765.terrain new file mode 100644 index 000000000..8985e3729 Binary files /dev/null and b/public/terrain/19/858470/353765.terrain differ diff --git a/public/terrain/19/858470/353766.terrain b/public/terrain/19/858470/353766.terrain new file mode 100644 index 000000000..9a5d5d0c0 Binary files /dev/null and b/public/terrain/19/858470/353766.terrain differ diff --git a/public/terrain/19/858470/353767.terrain b/public/terrain/19/858470/353767.terrain new file mode 100644 index 000000000..6d230d9bf Binary files /dev/null and b/public/terrain/19/858470/353767.terrain differ diff --git a/public/terrain/19/858470/353768.terrain b/public/terrain/19/858470/353768.terrain new file mode 100644 index 000000000..612832bee Binary files /dev/null and b/public/terrain/19/858470/353768.terrain differ diff --git a/public/terrain/19/858470/353769.terrain b/public/terrain/19/858470/353769.terrain new file mode 100644 index 000000000..81bdeb971 Binary files /dev/null and b/public/terrain/19/858470/353769.terrain differ diff --git a/public/terrain/19/858470/353770.terrain b/public/terrain/19/858470/353770.terrain new file mode 100644 index 000000000..97537f9f2 Binary files /dev/null and b/public/terrain/19/858470/353770.terrain differ diff --git a/public/terrain/19/858470/353771.terrain b/public/terrain/19/858470/353771.terrain new file mode 100644 index 000000000..6837cc1ac Binary files /dev/null and b/public/terrain/19/858470/353771.terrain differ diff --git a/public/terrain/19/858470/353772.terrain b/public/terrain/19/858470/353772.terrain new file mode 100644 index 000000000..18e663f1c Binary files /dev/null and b/public/terrain/19/858470/353772.terrain differ diff --git a/public/terrain/19/858470/353773.terrain b/public/terrain/19/858470/353773.terrain new file mode 100644 index 000000000..d85941293 Binary files /dev/null and b/public/terrain/19/858470/353773.terrain differ diff --git a/public/terrain/19/858470/353774.terrain b/public/terrain/19/858470/353774.terrain new file mode 100644 index 000000000..b0a6a1cd7 Binary files /dev/null and b/public/terrain/19/858470/353774.terrain differ diff --git a/public/terrain/19/858470/353775.terrain b/public/terrain/19/858470/353775.terrain new file mode 100644 index 000000000..6e345f84a Binary files /dev/null and b/public/terrain/19/858470/353775.terrain differ diff --git a/public/terrain/19/858470/353776.terrain b/public/terrain/19/858470/353776.terrain new file mode 100644 index 000000000..a1c75c0ea Binary files /dev/null and b/public/terrain/19/858470/353776.terrain differ diff --git a/public/terrain/19/858470/353777.terrain b/public/terrain/19/858470/353777.terrain new file mode 100644 index 000000000..53e23e659 Binary files /dev/null and b/public/terrain/19/858470/353777.terrain differ diff --git a/public/terrain/19/858470/353778.terrain b/public/terrain/19/858470/353778.terrain new file mode 100644 index 000000000..e9cfb66f7 Binary files /dev/null and b/public/terrain/19/858470/353778.terrain differ diff --git a/public/terrain/19/858470/353779.terrain b/public/terrain/19/858470/353779.terrain new file mode 100644 index 000000000..1eef105bf Binary files /dev/null and b/public/terrain/19/858470/353779.terrain differ diff --git a/public/terrain/19/858470/353780.terrain b/public/terrain/19/858470/353780.terrain new file mode 100644 index 000000000..fc5a1d005 Binary files /dev/null and b/public/terrain/19/858470/353780.terrain differ diff --git a/public/terrain/19/858470/353781.terrain b/public/terrain/19/858470/353781.terrain new file mode 100644 index 000000000..0541bbf96 Binary files /dev/null and b/public/terrain/19/858470/353781.terrain differ diff --git a/public/terrain/19/858470/353782.terrain b/public/terrain/19/858470/353782.terrain new file mode 100644 index 000000000..3f256212a Binary files /dev/null and b/public/terrain/19/858470/353782.terrain differ diff --git a/public/terrain/19/858470/353783.terrain b/public/terrain/19/858470/353783.terrain new file mode 100644 index 000000000..187a17c04 Binary files /dev/null and b/public/terrain/19/858470/353783.terrain differ diff --git a/public/terrain/19/858470/353784.terrain b/public/terrain/19/858470/353784.terrain new file mode 100644 index 000000000..e4886f878 Binary files /dev/null and b/public/terrain/19/858470/353784.terrain differ diff --git a/public/terrain/19/858470/353785.terrain b/public/terrain/19/858470/353785.terrain new file mode 100644 index 000000000..4de53afaf Binary files /dev/null and b/public/terrain/19/858470/353785.terrain differ diff --git a/public/terrain/19/858470/353786.terrain b/public/terrain/19/858470/353786.terrain new file mode 100644 index 000000000..9e23fbae1 Binary files /dev/null and b/public/terrain/19/858470/353786.terrain differ diff --git a/public/terrain/19/858470/353787.terrain b/public/terrain/19/858470/353787.terrain new file mode 100644 index 000000000..b15f68495 Binary files /dev/null and b/public/terrain/19/858470/353787.terrain differ diff --git a/public/terrain/19/858470/353788.terrain b/public/terrain/19/858470/353788.terrain new file mode 100644 index 000000000..88dd6a70b Binary files /dev/null and b/public/terrain/19/858470/353788.terrain differ diff --git a/public/terrain/19/858470/353789.terrain b/public/terrain/19/858470/353789.terrain new file mode 100644 index 000000000..04d1e7ce9 Binary files /dev/null and b/public/terrain/19/858470/353789.terrain differ diff --git a/public/terrain/19/858470/353790.terrain b/public/terrain/19/858470/353790.terrain new file mode 100644 index 000000000..04ad1e568 Binary files /dev/null and b/public/terrain/19/858470/353790.terrain differ diff --git a/public/terrain/19/858470/353791.terrain b/public/terrain/19/858470/353791.terrain new file mode 100644 index 000000000..507163509 Binary files /dev/null and b/public/terrain/19/858470/353791.terrain differ diff --git a/public/terrain/19/858470/353792.terrain b/public/terrain/19/858470/353792.terrain new file mode 100644 index 000000000..5cd34ef7c Binary files /dev/null and b/public/terrain/19/858470/353792.terrain differ diff --git a/public/terrain/19/858470/353793.terrain b/public/terrain/19/858470/353793.terrain new file mode 100644 index 000000000..1ab6966e0 Binary files /dev/null and b/public/terrain/19/858470/353793.terrain differ diff --git a/public/terrain/19/858470/353794.terrain b/public/terrain/19/858470/353794.terrain new file mode 100644 index 000000000..085226f42 Binary files /dev/null and b/public/terrain/19/858470/353794.terrain differ diff --git a/public/terrain/19/858470/353795.terrain b/public/terrain/19/858470/353795.terrain new file mode 100644 index 000000000..3d7612f9b Binary files /dev/null and b/public/terrain/19/858470/353795.terrain differ diff --git a/public/terrain/19/858470/353796.terrain b/public/terrain/19/858470/353796.terrain new file mode 100644 index 000000000..614ef091a Binary files /dev/null and b/public/terrain/19/858470/353796.terrain differ diff --git a/public/terrain/19/858470/353797.terrain b/public/terrain/19/858470/353797.terrain new file mode 100644 index 000000000..3f82fd68c Binary files /dev/null and b/public/terrain/19/858470/353797.terrain differ diff --git a/public/terrain/19/858470/353798.terrain b/public/terrain/19/858470/353798.terrain new file mode 100644 index 000000000..4fa5d49a0 Binary files /dev/null and b/public/terrain/19/858470/353798.terrain differ diff --git a/public/terrain/19/858470/353799.terrain b/public/terrain/19/858470/353799.terrain new file mode 100644 index 000000000..a2687b279 Binary files /dev/null and b/public/terrain/19/858470/353799.terrain differ diff --git a/public/terrain/19/858470/353800.terrain b/public/terrain/19/858470/353800.terrain new file mode 100644 index 000000000..48f26ddc9 Binary files /dev/null and b/public/terrain/19/858470/353800.terrain differ diff --git a/public/terrain/19/858470/353801.terrain b/public/terrain/19/858470/353801.terrain new file mode 100644 index 000000000..8c5ce85f7 Binary files /dev/null and b/public/terrain/19/858470/353801.terrain differ diff --git a/public/terrain/19/858470/353802.terrain b/public/terrain/19/858470/353802.terrain new file mode 100644 index 000000000..bffe02740 Binary files /dev/null and b/public/terrain/19/858470/353802.terrain differ diff --git a/public/terrain/19/858470/353803.terrain b/public/terrain/19/858470/353803.terrain new file mode 100644 index 000000000..725ef0bcc Binary files /dev/null and b/public/terrain/19/858470/353803.terrain differ diff --git a/public/terrain/19/858470/353804.terrain b/public/terrain/19/858470/353804.terrain new file mode 100644 index 000000000..29cdb4a04 Binary files /dev/null and b/public/terrain/19/858470/353804.terrain differ diff --git a/public/terrain/19/858470/353805.terrain b/public/terrain/19/858470/353805.terrain new file mode 100644 index 000000000..42df27221 Binary files /dev/null and b/public/terrain/19/858470/353805.terrain differ diff --git a/public/terrain/19/858470/353806.terrain b/public/terrain/19/858470/353806.terrain new file mode 100644 index 000000000..21748d593 Binary files /dev/null and b/public/terrain/19/858470/353806.terrain differ diff --git a/public/terrain/19/858470/353807.terrain b/public/terrain/19/858470/353807.terrain new file mode 100644 index 000000000..73095bd75 Binary files /dev/null and b/public/terrain/19/858470/353807.terrain differ diff --git a/public/terrain/19/858470/353808.terrain b/public/terrain/19/858470/353808.terrain new file mode 100644 index 000000000..01815c46a Binary files /dev/null and b/public/terrain/19/858470/353808.terrain differ diff --git a/public/terrain/19/858470/353809.terrain b/public/terrain/19/858470/353809.terrain new file mode 100644 index 000000000..cc1201149 Binary files /dev/null and b/public/terrain/19/858470/353809.terrain differ diff --git a/public/terrain/19/858470/353810.terrain b/public/terrain/19/858470/353810.terrain new file mode 100644 index 000000000..85535bced Binary files /dev/null and b/public/terrain/19/858470/353810.terrain differ diff --git a/public/terrain/19/858470/353811.terrain b/public/terrain/19/858470/353811.terrain new file mode 100644 index 000000000..36c9e661b Binary files /dev/null and b/public/terrain/19/858470/353811.terrain differ diff --git a/public/terrain/19/858470/353812.terrain b/public/terrain/19/858470/353812.terrain new file mode 100644 index 000000000..6c4af8fe9 Binary files /dev/null and b/public/terrain/19/858470/353812.terrain differ diff --git a/public/terrain/19/858470/353813.terrain b/public/terrain/19/858470/353813.terrain new file mode 100644 index 000000000..672ba5cb3 Binary files /dev/null and b/public/terrain/19/858470/353813.terrain differ diff --git a/public/terrain/19/858470/353814.terrain b/public/terrain/19/858470/353814.terrain new file mode 100644 index 000000000..860ea11fa Binary files /dev/null and b/public/terrain/19/858470/353814.terrain differ diff --git a/public/terrain/19/858470/353815.terrain b/public/terrain/19/858470/353815.terrain new file mode 100644 index 000000000..8288046e4 Binary files /dev/null and b/public/terrain/19/858470/353815.terrain differ diff --git a/public/terrain/19/858470/353816.terrain b/public/terrain/19/858470/353816.terrain new file mode 100644 index 000000000..c4205deaf Binary files /dev/null and b/public/terrain/19/858470/353816.terrain differ diff --git a/public/terrain/19/858470/353817.terrain b/public/terrain/19/858470/353817.terrain new file mode 100644 index 000000000..a992dcb51 Binary files /dev/null and b/public/terrain/19/858470/353817.terrain differ diff --git a/public/terrain/19/858470/353818.terrain b/public/terrain/19/858470/353818.terrain new file mode 100644 index 000000000..8bc1bd71d Binary files /dev/null and b/public/terrain/19/858470/353818.terrain differ diff --git a/public/terrain/19/858470/353819.terrain b/public/terrain/19/858470/353819.terrain new file mode 100644 index 000000000..b7f195fe2 Binary files /dev/null and b/public/terrain/19/858470/353819.terrain differ diff --git a/public/terrain/19/858470/353820.terrain b/public/terrain/19/858470/353820.terrain new file mode 100644 index 000000000..7876599a9 Binary files /dev/null and b/public/terrain/19/858470/353820.terrain differ diff --git a/public/terrain/19/858470/353821.terrain b/public/terrain/19/858470/353821.terrain new file mode 100644 index 000000000..9e91c626a Binary files /dev/null and b/public/terrain/19/858470/353821.terrain differ diff --git a/public/terrain/19/858470/353822.terrain b/public/terrain/19/858470/353822.terrain new file mode 100644 index 000000000..2198df466 Binary files /dev/null and b/public/terrain/19/858470/353822.terrain differ diff --git a/public/terrain/19/858470/353823.terrain b/public/terrain/19/858470/353823.terrain new file mode 100644 index 000000000..19b85b3bc Binary files /dev/null and b/public/terrain/19/858470/353823.terrain differ diff --git a/public/terrain/19/858470/353824.terrain b/public/terrain/19/858470/353824.terrain new file mode 100644 index 000000000..c05798ef4 Binary files /dev/null and b/public/terrain/19/858470/353824.terrain differ diff --git a/public/terrain/19/858470/353825.terrain b/public/terrain/19/858470/353825.terrain new file mode 100644 index 000000000..7868a41f8 Binary files /dev/null and b/public/terrain/19/858470/353825.terrain differ diff --git a/public/terrain/19/858470/353826.terrain b/public/terrain/19/858470/353826.terrain new file mode 100644 index 000000000..28efa505a Binary files /dev/null and b/public/terrain/19/858470/353826.terrain differ diff --git a/public/terrain/19/858470/353827.terrain b/public/terrain/19/858470/353827.terrain new file mode 100644 index 000000000..db000f25a Binary files /dev/null and b/public/terrain/19/858470/353827.terrain differ diff --git a/public/terrain/19/858470/353828.terrain b/public/terrain/19/858470/353828.terrain new file mode 100644 index 000000000..919fd7079 Binary files /dev/null and b/public/terrain/19/858470/353828.terrain differ diff --git a/public/terrain/19/858470/353829.terrain b/public/terrain/19/858470/353829.terrain new file mode 100644 index 000000000..ffe9e1aa2 Binary files /dev/null and b/public/terrain/19/858470/353829.terrain differ diff --git a/public/terrain/19/858470/353830.terrain b/public/terrain/19/858470/353830.terrain new file mode 100644 index 000000000..20f9bcbe2 Binary files /dev/null and b/public/terrain/19/858470/353830.terrain differ diff --git a/public/terrain/19/858470/353831.terrain b/public/terrain/19/858470/353831.terrain new file mode 100644 index 000000000..fa21d6b2e Binary files /dev/null and b/public/terrain/19/858470/353831.terrain differ diff --git a/public/terrain/19/858470/353832.terrain b/public/terrain/19/858470/353832.terrain new file mode 100644 index 000000000..045b62e31 Binary files /dev/null and b/public/terrain/19/858470/353832.terrain differ diff --git a/public/terrain/19/858470/353833.terrain b/public/terrain/19/858470/353833.terrain new file mode 100644 index 000000000..8e9bad575 Binary files /dev/null and b/public/terrain/19/858470/353833.terrain differ diff --git a/public/terrain/19/858470/353834.terrain b/public/terrain/19/858470/353834.terrain new file mode 100644 index 000000000..5b869a0b1 Binary files /dev/null and b/public/terrain/19/858470/353834.terrain differ diff --git a/public/terrain/19/858470/353835.terrain b/public/terrain/19/858470/353835.terrain new file mode 100644 index 000000000..76ee07f5f Binary files /dev/null and b/public/terrain/19/858470/353835.terrain differ diff --git a/public/terrain/19/858470/353836.terrain b/public/terrain/19/858470/353836.terrain new file mode 100644 index 000000000..36c1f276a Binary files /dev/null and b/public/terrain/19/858470/353836.terrain differ diff --git a/public/terrain/19/858470/353837.terrain b/public/terrain/19/858470/353837.terrain new file mode 100644 index 000000000..e435f8d30 Binary files /dev/null and b/public/terrain/19/858470/353837.terrain differ diff --git a/public/terrain/19/858470/353838.terrain b/public/terrain/19/858470/353838.terrain new file mode 100644 index 000000000..fa6bf08cc Binary files /dev/null and b/public/terrain/19/858470/353838.terrain differ diff --git a/public/terrain/19/858470/353839.terrain b/public/terrain/19/858470/353839.terrain new file mode 100644 index 000000000..cfb0fbbc4 Binary files /dev/null and b/public/terrain/19/858470/353839.terrain differ diff --git a/public/terrain/19/858470/353840.terrain b/public/terrain/19/858470/353840.terrain new file mode 100644 index 000000000..6088c996e Binary files /dev/null and b/public/terrain/19/858470/353840.terrain differ diff --git a/public/terrain/19/858470/353841.terrain b/public/terrain/19/858470/353841.terrain new file mode 100644 index 000000000..b4fb51f8b Binary files /dev/null and b/public/terrain/19/858470/353841.terrain differ diff --git a/public/terrain/19/858470/353842.terrain b/public/terrain/19/858470/353842.terrain new file mode 100644 index 000000000..c229bd6a2 Binary files /dev/null and b/public/terrain/19/858470/353842.terrain differ diff --git a/public/terrain/19/858470/353843.terrain b/public/terrain/19/858470/353843.terrain new file mode 100644 index 000000000..04dbdc100 Binary files /dev/null and b/public/terrain/19/858470/353843.terrain differ diff --git a/public/terrain/19/858470/353844.terrain b/public/terrain/19/858470/353844.terrain new file mode 100644 index 000000000..d536c278d Binary files /dev/null and b/public/terrain/19/858470/353844.terrain differ diff --git a/public/terrain/19/858470/353845.terrain b/public/terrain/19/858470/353845.terrain new file mode 100644 index 000000000..c29086d6a Binary files /dev/null and b/public/terrain/19/858470/353845.terrain differ diff --git a/public/terrain/19/858470/353846.terrain b/public/terrain/19/858470/353846.terrain new file mode 100644 index 000000000..29e98adea Binary files /dev/null and b/public/terrain/19/858470/353846.terrain differ diff --git a/public/terrain/19/858470/353847.terrain b/public/terrain/19/858470/353847.terrain new file mode 100644 index 000000000..1e00ab056 Binary files /dev/null and b/public/terrain/19/858470/353847.terrain differ diff --git a/public/terrain/19/858470/353848.terrain b/public/terrain/19/858470/353848.terrain new file mode 100644 index 000000000..b9b628bb5 Binary files /dev/null and b/public/terrain/19/858470/353848.terrain differ diff --git a/public/terrain/19/858470/353849.terrain b/public/terrain/19/858470/353849.terrain new file mode 100644 index 000000000..98b8083b2 Binary files /dev/null and b/public/terrain/19/858470/353849.terrain differ diff --git a/public/terrain/19/858470/353850.terrain b/public/terrain/19/858470/353850.terrain new file mode 100644 index 000000000..37a1b8c89 Binary files /dev/null and b/public/terrain/19/858470/353850.terrain differ diff --git a/public/terrain/19/858470/353851.terrain b/public/terrain/19/858470/353851.terrain new file mode 100644 index 000000000..c00f1619f Binary files /dev/null and b/public/terrain/19/858470/353851.terrain differ diff --git a/public/terrain/19/858470/353852.terrain b/public/terrain/19/858470/353852.terrain new file mode 100644 index 000000000..1732d002e Binary files /dev/null and b/public/terrain/19/858470/353852.terrain differ diff --git a/public/terrain/19/858470/353853.terrain b/public/terrain/19/858470/353853.terrain new file mode 100644 index 000000000..8036cb4f3 Binary files /dev/null and b/public/terrain/19/858470/353853.terrain differ diff --git a/public/terrain/19/858470/353854.terrain b/public/terrain/19/858470/353854.terrain new file mode 100644 index 000000000..8ceb51790 Binary files /dev/null and b/public/terrain/19/858470/353854.terrain differ diff --git a/public/terrain/19/858470/353855.terrain b/public/terrain/19/858470/353855.terrain new file mode 100644 index 000000000..878a33f5d Binary files /dev/null and b/public/terrain/19/858470/353855.terrain differ diff --git a/public/terrain/19/858470/353856.terrain b/public/terrain/19/858470/353856.terrain new file mode 100644 index 000000000..2df3ac4de Binary files /dev/null and b/public/terrain/19/858470/353856.terrain differ diff --git a/public/terrain/19/858470/353857.terrain b/public/terrain/19/858470/353857.terrain new file mode 100644 index 000000000..a6daf5888 Binary files /dev/null and b/public/terrain/19/858470/353857.terrain differ diff --git a/public/terrain/19/858470/353858.terrain b/public/terrain/19/858470/353858.terrain new file mode 100644 index 000000000..6783d58b0 Binary files /dev/null and b/public/terrain/19/858470/353858.terrain differ diff --git a/public/terrain/19/858470/353859.terrain b/public/terrain/19/858470/353859.terrain new file mode 100644 index 000000000..7c5a88215 Binary files /dev/null and b/public/terrain/19/858470/353859.terrain differ diff --git a/public/terrain/19/858470/353860.terrain b/public/terrain/19/858470/353860.terrain new file mode 100644 index 000000000..30c47c691 Binary files /dev/null and b/public/terrain/19/858470/353860.terrain differ diff --git a/public/terrain/19/858470/353861.terrain b/public/terrain/19/858470/353861.terrain new file mode 100644 index 000000000..a13b9219e Binary files /dev/null and b/public/terrain/19/858470/353861.terrain differ diff --git a/public/terrain/19/858470/353862.terrain b/public/terrain/19/858470/353862.terrain new file mode 100644 index 000000000..e3d2bc96d Binary files /dev/null and b/public/terrain/19/858470/353862.terrain differ diff --git a/public/terrain/19/858470/353863.terrain b/public/terrain/19/858470/353863.terrain new file mode 100644 index 000000000..999e3bbb6 Binary files /dev/null and b/public/terrain/19/858470/353863.terrain differ diff --git a/public/terrain/19/858470/353864.terrain b/public/terrain/19/858470/353864.terrain new file mode 100644 index 000000000..b45b99199 Binary files /dev/null and b/public/terrain/19/858470/353864.terrain differ diff --git a/public/terrain/19/858470/353865.terrain b/public/terrain/19/858470/353865.terrain new file mode 100644 index 000000000..aa510d490 Binary files /dev/null and b/public/terrain/19/858470/353865.terrain differ diff --git a/public/terrain/19/858470/353866.terrain b/public/terrain/19/858470/353866.terrain new file mode 100644 index 000000000..bdec5bc33 Binary files /dev/null and b/public/terrain/19/858470/353866.terrain differ diff --git a/public/terrain/19/858470/353867.terrain b/public/terrain/19/858470/353867.terrain new file mode 100644 index 000000000..fbedc4b2d Binary files /dev/null and b/public/terrain/19/858470/353867.terrain differ diff --git a/public/terrain/19/858470/353868.terrain b/public/terrain/19/858470/353868.terrain new file mode 100644 index 000000000..8fa1c7590 Binary files /dev/null and b/public/terrain/19/858470/353868.terrain differ diff --git a/public/terrain/19/858470/353869.terrain b/public/terrain/19/858470/353869.terrain new file mode 100644 index 000000000..f371e20b4 Binary files /dev/null and b/public/terrain/19/858470/353869.terrain differ diff --git a/public/terrain/19/858470/353870.terrain b/public/terrain/19/858470/353870.terrain new file mode 100644 index 000000000..52d39ba33 Binary files /dev/null and b/public/terrain/19/858470/353870.terrain differ diff --git a/public/terrain/19/858470/353871.terrain b/public/terrain/19/858470/353871.terrain new file mode 100644 index 000000000..c2a795f51 Binary files /dev/null and b/public/terrain/19/858470/353871.terrain differ diff --git a/public/terrain/19/858470/353872.terrain b/public/terrain/19/858470/353872.terrain new file mode 100644 index 000000000..e3a324193 Binary files /dev/null and b/public/terrain/19/858470/353872.terrain differ diff --git a/public/terrain/19/858470/353873.terrain b/public/terrain/19/858470/353873.terrain new file mode 100644 index 000000000..53a20fab3 Binary files /dev/null and b/public/terrain/19/858470/353873.terrain differ diff --git a/public/terrain/19/858470/353874.terrain b/public/terrain/19/858470/353874.terrain new file mode 100644 index 000000000..b2a10a961 Binary files /dev/null and b/public/terrain/19/858470/353874.terrain differ diff --git a/public/terrain/19/858470/353875.terrain b/public/terrain/19/858470/353875.terrain new file mode 100644 index 000000000..d87a7c69a Binary files /dev/null and b/public/terrain/19/858470/353875.terrain differ diff --git a/public/terrain/19/858470/353876.terrain b/public/terrain/19/858470/353876.terrain new file mode 100644 index 000000000..ac931bd9a Binary files /dev/null and b/public/terrain/19/858470/353876.terrain differ diff --git a/public/terrain/19/858470/353877.terrain b/public/terrain/19/858470/353877.terrain new file mode 100644 index 000000000..49ed3b06a Binary files /dev/null and b/public/terrain/19/858470/353877.terrain differ diff --git a/public/terrain/19/858470/353878.terrain b/public/terrain/19/858470/353878.terrain new file mode 100644 index 000000000..f944a1473 Binary files /dev/null and b/public/terrain/19/858470/353878.terrain differ diff --git a/public/terrain/19/858470/353879.terrain b/public/terrain/19/858470/353879.terrain new file mode 100644 index 000000000..a87225a49 Binary files /dev/null and b/public/terrain/19/858470/353879.terrain differ diff --git a/public/terrain/19/858470/353880.terrain b/public/terrain/19/858470/353880.terrain new file mode 100644 index 000000000..99fe49f29 Binary files /dev/null and b/public/terrain/19/858470/353880.terrain differ diff --git a/public/terrain/19/858470/353881.terrain b/public/terrain/19/858470/353881.terrain new file mode 100644 index 000000000..1effb4fb6 Binary files /dev/null and b/public/terrain/19/858470/353881.terrain differ diff --git a/public/terrain/19/858470/353882.terrain b/public/terrain/19/858470/353882.terrain new file mode 100644 index 000000000..ae94228f1 Binary files /dev/null and b/public/terrain/19/858470/353882.terrain differ diff --git a/public/terrain/19/858470/353883.terrain b/public/terrain/19/858470/353883.terrain new file mode 100644 index 000000000..08064b41a Binary files /dev/null and b/public/terrain/19/858470/353883.terrain differ diff --git a/public/terrain/19/858470/353884.terrain b/public/terrain/19/858470/353884.terrain new file mode 100644 index 000000000..b27cb480b Binary files /dev/null and b/public/terrain/19/858470/353884.terrain differ diff --git a/public/terrain/19/858470/353885.terrain b/public/terrain/19/858470/353885.terrain new file mode 100644 index 000000000..d162231db Binary files /dev/null and b/public/terrain/19/858470/353885.terrain differ diff --git a/public/terrain/19/858470/353886.terrain b/public/terrain/19/858470/353886.terrain new file mode 100644 index 000000000..3d8a03728 Binary files /dev/null and b/public/terrain/19/858470/353886.terrain differ diff --git a/public/terrain/19/858470/353887.terrain b/public/terrain/19/858470/353887.terrain new file mode 100644 index 000000000..716a72b65 Binary files /dev/null and b/public/terrain/19/858470/353887.terrain differ diff --git a/public/terrain/19/858470/353888.terrain b/public/terrain/19/858470/353888.terrain new file mode 100644 index 000000000..75246c052 Binary files /dev/null and b/public/terrain/19/858470/353888.terrain differ diff --git a/public/terrain/19/858470/353889.terrain b/public/terrain/19/858470/353889.terrain new file mode 100644 index 000000000..8b6d0b791 Binary files /dev/null and b/public/terrain/19/858470/353889.terrain differ diff --git a/public/terrain/19/858470/353890.terrain b/public/terrain/19/858470/353890.terrain new file mode 100644 index 000000000..a7911a69e Binary files /dev/null and b/public/terrain/19/858470/353890.terrain differ diff --git a/public/terrain/19/858470/353891.terrain b/public/terrain/19/858470/353891.terrain new file mode 100644 index 000000000..507caeeb4 Binary files /dev/null and b/public/terrain/19/858470/353891.terrain differ diff --git a/public/terrain/19/858470/353892.terrain b/public/terrain/19/858470/353892.terrain new file mode 100644 index 000000000..e137dc782 Binary files /dev/null and b/public/terrain/19/858470/353892.terrain differ diff --git a/public/terrain/19/858470/353893.terrain b/public/terrain/19/858470/353893.terrain new file mode 100644 index 000000000..f519fcab1 Binary files /dev/null and b/public/terrain/19/858470/353893.terrain differ diff --git a/public/terrain/19/858470/353894.terrain b/public/terrain/19/858470/353894.terrain new file mode 100644 index 000000000..0606ea695 Binary files /dev/null and b/public/terrain/19/858470/353894.terrain differ diff --git a/public/terrain/19/858470/353895.terrain b/public/terrain/19/858470/353895.terrain new file mode 100644 index 000000000..ec8c8d779 Binary files /dev/null and b/public/terrain/19/858470/353895.terrain differ diff --git a/public/terrain/19/858470/353896.terrain b/public/terrain/19/858470/353896.terrain new file mode 100644 index 000000000..2781d9ee2 Binary files /dev/null and b/public/terrain/19/858470/353896.terrain differ diff --git a/public/terrain/19/858470/353897.terrain b/public/terrain/19/858470/353897.terrain new file mode 100644 index 000000000..dec3fdade Binary files /dev/null and b/public/terrain/19/858470/353897.terrain differ diff --git a/public/terrain/19/858470/353898.terrain b/public/terrain/19/858470/353898.terrain new file mode 100644 index 000000000..a0d8145f8 Binary files /dev/null and b/public/terrain/19/858470/353898.terrain differ diff --git a/public/terrain/19/858470/353899.terrain b/public/terrain/19/858470/353899.terrain new file mode 100644 index 000000000..b480e0f8d Binary files /dev/null and b/public/terrain/19/858470/353899.terrain differ diff --git a/public/terrain/19/858470/353900.terrain b/public/terrain/19/858470/353900.terrain new file mode 100644 index 000000000..7038a557d Binary files /dev/null and b/public/terrain/19/858470/353900.terrain differ diff --git a/public/terrain/19/858470/353901.terrain b/public/terrain/19/858470/353901.terrain new file mode 100644 index 000000000..f4582b392 Binary files /dev/null and b/public/terrain/19/858470/353901.terrain differ diff --git a/public/terrain/19/858470/353902.terrain b/public/terrain/19/858470/353902.terrain new file mode 100644 index 000000000..d78963b1e Binary files /dev/null and b/public/terrain/19/858470/353902.terrain differ diff --git a/public/terrain/19/858470/353903.terrain b/public/terrain/19/858470/353903.terrain new file mode 100644 index 000000000..a6b1bc8cf Binary files /dev/null and b/public/terrain/19/858470/353903.terrain differ diff --git a/public/terrain/19/858470/353904.terrain b/public/terrain/19/858470/353904.terrain new file mode 100644 index 000000000..50b7b2355 Binary files /dev/null and b/public/terrain/19/858470/353904.terrain differ diff --git a/public/terrain/19/858470/353905.terrain b/public/terrain/19/858470/353905.terrain new file mode 100644 index 000000000..643a58f20 Binary files /dev/null and b/public/terrain/19/858470/353905.terrain differ diff --git a/public/terrain/19/858470/353906.terrain b/public/terrain/19/858470/353906.terrain new file mode 100644 index 000000000..da664553e Binary files /dev/null and b/public/terrain/19/858470/353906.terrain differ diff --git a/public/terrain/19/858470/353907.terrain b/public/terrain/19/858470/353907.terrain new file mode 100644 index 000000000..892686278 Binary files /dev/null and b/public/terrain/19/858470/353907.terrain differ diff --git a/public/terrain/19/858470/353908.terrain b/public/terrain/19/858470/353908.terrain new file mode 100644 index 000000000..683fab53a Binary files /dev/null and b/public/terrain/19/858470/353908.terrain differ diff --git a/public/terrain/19/858470/353909.terrain b/public/terrain/19/858470/353909.terrain new file mode 100644 index 000000000..5d0c8283b Binary files /dev/null and b/public/terrain/19/858470/353909.terrain differ diff --git a/public/terrain/19/858470/353910.terrain b/public/terrain/19/858470/353910.terrain new file mode 100644 index 000000000..2e3300ffb Binary files /dev/null and b/public/terrain/19/858470/353910.terrain differ diff --git a/public/terrain/19/858470/353911.terrain b/public/terrain/19/858470/353911.terrain new file mode 100644 index 000000000..97a39bc13 Binary files /dev/null and b/public/terrain/19/858470/353911.terrain differ diff --git a/public/terrain/19/858470/353912.terrain b/public/terrain/19/858470/353912.terrain new file mode 100644 index 000000000..b5b620f53 Binary files /dev/null and b/public/terrain/19/858470/353912.terrain differ diff --git a/public/terrain/19/858470/353913.terrain b/public/terrain/19/858470/353913.terrain new file mode 100644 index 000000000..da8d7c02e Binary files /dev/null and b/public/terrain/19/858470/353913.terrain differ diff --git a/public/terrain/19/858470/353914.terrain b/public/terrain/19/858470/353914.terrain new file mode 100644 index 000000000..b0b3abfa5 Binary files /dev/null and b/public/terrain/19/858470/353914.terrain differ diff --git a/public/terrain/19/858470/353915.terrain b/public/terrain/19/858470/353915.terrain new file mode 100644 index 000000000..382772298 Binary files /dev/null and b/public/terrain/19/858470/353915.terrain differ diff --git a/public/terrain/19/858470/353916.terrain b/public/terrain/19/858470/353916.terrain new file mode 100644 index 000000000..c305549c5 Binary files /dev/null and b/public/terrain/19/858470/353916.terrain differ diff --git a/public/terrain/19/858470/353917.terrain b/public/terrain/19/858470/353917.terrain new file mode 100644 index 000000000..ec26c40f6 Binary files /dev/null and b/public/terrain/19/858470/353917.terrain differ diff --git a/public/terrain/19/858470/353918.terrain b/public/terrain/19/858470/353918.terrain new file mode 100644 index 000000000..9cbed60ab Binary files /dev/null and b/public/terrain/19/858470/353918.terrain differ diff --git a/public/terrain/19/858470/353919.terrain b/public/terrain/19/858470/353919.terrain new file mode 100644 index 000000000..bd2d37ba5 Binary files /dev/null and b/public/terrain/19/858470/353919.terrain differ diff --git a/public/terrain/19/858470/353920.terrain b/public/terrain/19/858470/353920.terrain new file mode 100644 index 000000000..7687f85b0 Binary files /dev/null and b/public/terrain/19/858470/353920.terrain differ diff --git a/public/terrain/19/858470/353921.terrain b/public/terrain/19/858470/353921.terrain new file mode 100644 index 000000000..57d767185 Binary files /dev/null and b/public/terrain/19/858470/353921.terrain differ diff --git a/public/terrain/19/858470/353922.terrain b/public/terrain/19/858470/353922.terrain new file mode 100644 index 000000000..1db4adc28 Binary files /dev/null and b/public/terrain/19/858470/353922.terrain differ diff --git a/public/terrain/19/858470/353923.terrain b/public/terrain/19/858470/353923.terrain new file mode 100644 index 000000000..cd54a0914 Binary files /dev/null and b/public/terrain/19/858470/353923.terrain differ diff --git a/public/terrain/19/858470/353924.terrain b/public/terrain/19/858470/353924.terrain new file mode 100644 index 000000000..ce0b72f07 Binary files /dev/null and b/public/terrain/19/858470/353924.terrain differ diff --git a/public/terrain/19/858470/353925.terrain b/public/terrain/19/858470/353925.terrain new file mode 100644 index 000000000..1dbe57997 Binary files /dev/null and b/public/terrain/19/858470/353925.terrain differ diff --git a/public/terrain/19/858470/353926.terrain b/public/terrain/19/858470/353926.terrain new file mode 100644 index 000000000..b46c76a6a Binary files /dev/null and b/public/terrain/19/858470/353926.terrain differ diff --git a/public/terrain/19/858470/353927.terrain b/public/terrain/19/858470/353927.terrain new file mode 100644 index 000000000..bd5db5871 Binary files /dev/null and b/public/terrain/19/858470/353927.terrain differ diff --git a/public/terrain/19/858470/353928.terrain b/public/terrain/19/858470/353928.terrain new file mode 100644 index 000000000..17ca1d62e Binary files /dev/null and b/public/terrain/19/858470/353928.terrain differ diff --git a/public/terrain/19/858470/353929.terrain b/public/terrain/19/858470/353929.terrain new file mode 100644 index 000000000..4dbd30fd5 Binary files /dev/null and b/public/terrain/19/858470/353929.terrain differ diff --git a/public/terrain/19/858470/353930.terrain b/public/terrain/19/858470/353930.terrain new file mode 100644 index 000000000..80ff94743 Binary files /dev/null and b/public/terrain/19/858470/353930.terrain differ diff --git a/public/terrain/19/858470/353931.terrain b/public/terrain/19/858470/353931.terrain new file mode 100644 index 000000000..156bcb119 Binary files /dev/null and b/public/terrain/19/858470/353931.terrain differ diff --git a/public/terrain/19/858470/353932.terrain b/public/terrain/19/858470/353932.terrain new file mode 100644 index 000000000..66011404d Binary files /dev/null and b/public/terrain/19/858470/353932.terrain differ diff --git a/public/terrain/19/858470/353933.terrain b/public/terrain/19/858470/353933.terrain new file mode 100644 index 000000000..d5bdadf7d Binary files /dev/null and b/public/terrain/19/858470/353933.terrain differ diff --git a/public/terrain/19/858470/353934.terrain b/public/terrain/19/858470/353934.terrain new file mode 100644 index 000000000..71ebe3221 Binary files /dev/null and b/public/terrain/19/858470/353934.terrain differ diff --git a/public/terrain/19/858470/353935.terrain b/public/terrain/19/858470/353935.terrain new file mode 100644 index 000000000..eae65d48d Binary files /dev/null and b/public/terrain/19/858470/353935.terrain differ diff --git a/public/terrain/19/858470/353936.terrain b/public/terrain/19/858470/353936.terrain new file mode 100644 index 000000000..8b61663b4 Binary files /dev/null and b/public/terrain/19/858470/353936.terrain differ diff --git a/public/terrain/19/858470/353937.terrain b/public/terrain/19/858470/353937.terrain new file mode 100644 index 000000000..0b76be4d9 Binary files /dev/null and b/public/terrain/19/858470/353937.terrain differ diff --git a/public/terrain/19/858470/353938.terrain b/public/terrain/19/858470/353938.terrain new file mode 100644 index 000000000..c5e143451 Binary files /dev/null and b/public/terrain/19/858470/353938.terrain differ diff --git a/public/terrain/19/858470/353939.terrain b/public/terrain/19/858470/353939.terrain new file mode 100644 index 000000000..dc70991e2 Binary files /dev/null and b/public/terrain/19/858470/353939.terrain differ diff --git a/public/terrain/19/858470/353940.terrain b/public/terrain/19/858470/353940.terrain new file mode 100644 index 000000000..9f821365e Binary files /dev/null and b/public/terrain/19/858470/353940.terrain differ diff --git a/public/terrain/19/858470/353941.terrain b/public/terrain/19/858470/353941.terrain new file mode 100644 index 000000000..11e734a01 Binary files /dev/null and b/public/terrain/19/858470/353941.terrain differ diff --git a/public/terrain/19/858470/353942.terrain b/public/terrain/19/858470/353942.terrain new file mode 100644 index 000000000..f1260fba3 Binary files /dev/null and b/public/terrain/19/858470/353942.terrain differ diff --git a/public/terrain/19/858470/353943.terrain b/public/terrain/19/858470/353943.terrain new file mode 100644 index 000000000..2a88e4233 Binary files /dev/null and b/public/terrain/19/858470/353943.terrain differ diff --git a/public/terrain/19/858470/353944.terrain b/public/terrain/19/858470/353944.terrain new file mode 100644 index 000000000..2acb08e19 Binary files /dev/null and b/public/terrain/19/858470/353944.terrain differ diff --git a/public/terrain/19/858470/353945.terrain b/public/terrain/19/858470/353945.terrain new file mode 100644 index 000000000..9dcf19f1d Binary files /dev/null and b/public/terrain/19/858470/353945.terrain differ diff --git a/public/terrain/19/858470/353946.terrain b/public/terrain/19/858470/353946.terrain new file mode 100644 index 000000000..e7c89f510 Binary files /dev/null and b/public/terrain/19/858470/353946.terrain differ diff --git a/public/terrain/19/858470/353947.terrain b/public/terrain/19/858470/353947.terrain new file mode 100644 index 000000000..095a88cd7 Binary files /dev/null and b/public/terrain/19/858470/353947.terrain differ diff --git a/public/terrain/19/858470/353948.terrain b/public/terrain/19/858470/353948.terrain new file mode 100644 index 000000000..b33174ff8 Binary files /dev/null and b/public/terrain/19/858470/353948.terrain differ diff --git a/public/terrain/19/858470/353949.terrain b/public/terrain/19/858470/353949.terrain new file mode 100644 index 000000000..bf8bdd7fe Binary files /dev/null and b/public/terrain/19/858470/353949.terrain differ diff --git a/public/terrain/19/858470/353950.terrain b/public/terrain/19/858470/353950.terrain new file mode 100644 index 000000000..b1d59e05d Binary files /dev/null and b/public/terrain/19/858470/353950.terrain differ diff --git a/public/terrain/19/858470/353951.terrain b/public/terrain/19/858470/353951.terrain new file mode 100644 index 000000000..b5a7b1f57 Binary files /dev/null and b/public/terrain/19/858470/353951.terrain differ diff --git a/public/terrain/19/858470/353952.terrain b/public/terrain/19/858470/353952.terrain new file mode 100644 index 000000000..6df868222 Binary files /dev/null and b/public/terrain/19/858470/353952.terrain differ diff --git a/public/terrain/19/858470/353953.terrain b/public/terrain/19/858470/353953.terrain new file mode 100644 index 000000000..26d8e3774 Binary files /dev/null and b/public/terrain/19/858470/353953.terrain differ diff --git a/public/terrain/19/858470/353954.terrain b/public/terrain/19/858470/353954.terrain new file mode 100644 index 000000000..5891e1344 Binary files /dev/null and b/public/terrain/19/858470/353954.terrain differ diff --git a/public/terrain/19/858470/353955.terrain b/public/terrain/19/858470/353955.terrain new file mode 100644 index 000000000..b2b0780bd Binary files /dev/null and b/public/terrain/19/858470/353955.terrain differ diff --git a/public/terrain/19/858470/353956.terrain b/public/terrain/19/858470/353956.terrain new file mode 100644 index 000000000..d7f7cb753 Binary files /dev/null and b/public/terrain/19/858470/353956.terrain differ diff --git a/public/terrain/19/858470/353957.terrain b/public/terrain/19/858470/353957.terrain new file mode 100644 index 000000000..1b29ad708 Binary files /dev/null and b/public/terrain/19/858470/353957.terrain differ diff --git a/public/terrain/19/858470/353958.terrain b/public/terrain/19/858470/353958.terrain new file mode 100644 index 000000000..7d31bb423 Binary files /dev/null and b/public/terrain/19/858470/353958.terrain differ diff --git a/public/terrain/19/858470/353959.terrain b/public/terrain/19/858470/353959.terrain new file mode 100644 index 000000000..b09d3b3e0 Binary files /dev/null and b/public/terrain/19/858470/353959.terrain differ diff --git a/public/terrain/19/858470/353960.terrain b/public/terrain/19/858470/353960.terrain new file mode 100644 index 000000000..fae7042cf Binary files /dev/null and b/public/terrain/19/858470/353960.terrain differ diff --git a/public/terrain/19/858470/353961.terrain b/public/terrain/19/858470/353961.terrain new file mode 100644 index 000000000..5a6212689 Binary files /dev/null and b/public/terrain/19/858470/353961.terrain differ diff --git a/public/terrain/19/858470/353962.terrain b/public/terrain/19/858470/353962.terrain new file mode 100644 index 000000000..888cbe49e Binary files /dev/null and b/public/terrain/19/858470/353962.terrain differ diff --git a/public/terrain/19/858470/353963.terrain b/public/terrain/19/858470/353963.terrain new file mode 100644 index 000000000..28ecad17c Binary files /dev/null and b/public/terrain/19/858470/353963.terrain differ diff --git a/public/terrain/19/858470/353964.terrain b/public/terrain/19/858470/353964.terrain new file mode 100644 index 000000000..216272fb2 Binary files /dev/null and b/public/terrain/19/858470/353964.terrain differ diff --git a/public/terrain/19/858470/353965.terrain b/public/terrain/19/858470/353965.terrain new file mode 100644 index 000000000..e114654a1 Binary files /dev/null and b/public/terrain/19/858470/353965.terrain differ diff --git a/public/terrain/19/858470/353966.terrain b/public/terrain/19/858470/353966.terrain new file mode 100644 index 000000000..df4e34efc Binary files /dev/null and b/public/terrain/19/858470/353966.terrain differ diff --git a/public/terrain/19/858470/353967.terrain b/public/terrain/19/858470/353967.terrain new file mode 100644 index 000000000..5f96fdb91 Binary files /dev/null and b/public/terrain/19/858470/353967.terrain differ diff --git a/public/terrain/19/858470/353968.terrain b/public/terrain/19/858470/353968.terrain new file mode 100644 index 000000000..92731b2e9 Binary files /dev/null and b/public/terrain/19/858470/353968.terrain differ diff --git a/public/terrain/19/858470/353969.terrain b/public/terrain/19/858470/353969.terrain new file mode 100644 index 000000000..55679e1f0 Binary files /dev/null and b/public/terrain/19/858470/353969.terrain differ diff --git a/public/terrain/19/858470/353970.terrain b/public/terrain/19/858470/353970.terrain new file mode 100644 index 000000000..22260a32b Binary files /dev/null and b/public/terrain/19/858470/353970.terrain differ diff --git a/public/terrain/19/858470/353971.terrain b/public/terrain/19/858470/353971.terrain new file mode 100644 index 000000000..cbe04d08f Binary files /dev/null and b/public/terrain/19/858470/353971.terrain differ diff --git a/public/terrain/19/858470/353972.terrain b/public/terrain/19/858470/353972.terrain new file mode 100644 index 000000000..ee77d21d5 Binary files /dev/null and b/public/terrain/19/858470/353972.terrain differ diff --git a/public/terrain/19/858470/353973.terrain b/public/terrain/19/858470/353973.terrain new file mode 100644 index 000000000..0f55f92e2 Binary files /dev/null and b/public/terrain/19/858470/353973.terrain differ diff --git a/public/terrain/19/858470/353974.terrain b/public/terrain/19/858470/353974.terrain new file mode 100644 index 000000000..89f0f00bb Binary files /dev/null and b/public/terrain/19/858470/353974.terrain differ diff --git a/public/terrain/19/858470/353975.terrain b/public/terrain/19/858470/353975.terrain new file mode 100644 index 000000000..e890dc3d6 Binary files /dev/null and b/public/terrain/19/858470/353975.terrain differ diff --git a/public/terrain/19/858470/353976.terrain b/public/terrain/19/858470/353976.terrain new file mode 100644 index 000000000..55e3e3aa7 Binary files /dev/null and b/public/terrain/19/858470/353976.terrain differ diff --git a/public/terrain/19/858470/353977.terrain b/public/terrain/19/858470/353977.terrain new file mode 100644 index 000000000..560345f7a Binary files /dev/null and b/public/terrain/19/858470/353977.terrain differ diff --git a/public/terrain/19/858470/353978.terrain b/public/terrain/19/858470/353978.terrain new file mode 100644 index 000000000..86aa8e187 Binary files /dev/null and b/public/terrain/19/858470/353978.terrain differ diff --git a/public/terrain/19/858470/353979.terrain b/public/terrain/19/858470/353979.terrain new file mode 100644 index 000000000..692bfe3c1 Binary files /dev/null and b/public/terrain/19/858470/353979.terrain differ diff --git a/public/terrain/19/858470/353980.terrain b/public/terrain/19/858470/353980.terrain new file mode 100644 index 000000000..a2cdb11c5 Binary files /dev/null and b/public/terrain/19/858470/353980.terrain differ diff --git a/public/terrain/19/858470/353981.terrain b/public/terrain/19/858470/353981.terrain new file mode 100644 index 000000000..b142c6596 Binary files /dev/null and b/public/terrain/19/858470/353981.terrain differ diff --git a/public/terrain/19/858470/353982.terrain b/public/terrain/19/858470/353982.terrain new file mode 100644 index 000000000..f9e45ddb7 Binary files /dev/null and b/public/terrain/19/858470/353982.terrain differ diff --git a/public/terrain/19/858470/353983.terrain b/public/terrain/19/858470/353983.terrain new file mode 100644 index 000000000..423b624ee Binary files /dev/null and b/public/terrain/19/858470/353983.terrain differ diff --git a/public/terrain/19/858470/353984.terrain b/public/terrain/19/858470/353984.terrain new file mode 100644 index 000000000..5a11e91c2 Binary files /dev/null and b/public/terrain/19/858470/353984.terrain differ diff --git a/public/terrain/19/858470/353985.terrain b/public/terrain/19/858470/353985.terrain new file mode 100644 index 000000000..0c6a60837 Binary files /dev/null and b/public/terrain/19/858470/353985.terrain differ diff --git a/public/terrain/19/858470/353986.terrain b/public/terrain/19/858470/353986.terrain new file mode 100644 index 000000000..bc1bc9ea4 Binary files /dev/null and b/public/terrain/19/858470/353986.terrain differ diff --git a/public/terrain/19/858470/353987.terrain b/public/terrain/19/858470/353987.terrain new file mode 100644 index 000000000..cb7a653dd Binary files /dev/null and b/public/terrain/19/858470/353987.terrain differ diff --git a/public/terrain/19/858470/353988.terrain b/public/terrain/19/858470/353988.terrain new file mode 100644 index 000000000..704c1bbff Binary files /dev/null and b/public/terrain/19/858470/353988.terrain differ diff --git a/public/terrain/19/858470/353989.terrain b/public/terrain/19/858470/353989.terrain new file mode 100644 index 000000000..ea396044e Binary files /dev/null and b/public/terrain/19/858470/353989.terrain differ diff --git a/public/terrain/19/858470/353990.terrain b/public/terrain/19/858470/353990.terrain new file mode 100644 index 000000000..4f0377109 Binary files /dev/null and b/public/terrain/19/858470/353990.terrain differ diff --git a/public/terrain/19/858470/353991.terrain b/public/terrain/19/858470/353991.terrain new file mode 100644 index 000000000..057874b82 Binary files /dev/null and b/public/terrain/19/858470/353991.terrain differ diff --git a/public/terrain/19/858470/353992.terrain b/public/terrain/19/858470/353992.terrain new file mode 100644 index 000000000..edb9d03a0 Binary files /dev/null and b/public/terrain/19/858470/353992.terrain differ diff --git a/public/terrain/19/858470/353993.terrain b/public/terrain/19/858470/353993.terrain new file mode 100644 index 000000000..3b44900c4 Binary files /dev/null and b/public/terrain/19/858470/353993.terrain differ diff --git a/public/terrain/19/858470/353994.terrain b/public/terrain/19/858470/353994.terrain new file mode 100644 index 000000000..7d4668efb Binary files /dev/null and b/public/terrain/19/858470/353994.terrain differ diff --git a/public/terrain/19/858470/353995.terrain b/public/terrain/19/858470/353995.terrain new file mode 100644 index 000000000..a1bc4f464 Binary files /dev/null and b/public/terrain/19/858470/353995.terrain differ diff --git a/public/terrain/19/858470/353996.terrain b/public/terrain/19/858470/353996.terrain new file mode 100644 index 000000000..32c9650aa Binary files /dev/null and b/public/terrain/19/858470/353996.terrain differ diff --git a/public/terrain/19/858470/353997.terrain b/public/terrain/19/858470/353997.terrain new file mode 100644 index 000000000..7cda1b58c Binary files /dev/null and b/public/terrain/19/858470/353997.terrain differ diff --git a/public/terrain/19/858470/353998.terrain b/public/terrain/19/858470/353998.terrain new file mode 100644 index 000000000..e8f4586d6 Binary files /dev/null and b/public/terrain/19/858470/353998.terrain differ diff --git a/public/terrain/19/858470/353999.terrain b/public/terrain/19/858470/353999.terrain new file mode 100644 index 000000000..9bc3574c5 Binary files /dev/null and b/public/terrain/19/858470/353999.terrain differ diff --git a/public/terrain/19/858470/354000.terrain b/public/terrain/19/858470/354000.terrain new file mode 100644 index 000000000..729cff458 Binary files /dev/null and b/public/terrain/19/858470/354000.terrain differ diff --git a/public/terrain/19/858470/354001.terrain b/public/terrain/19/858470/354001.terrain new file mode 100644 index 000000000..a10334ff7 Binary files /dev/null and b/public/terrain/19/858470/354001.terrain differ diff --git a/public/terrain/19/858470/354002.terrain b/public/terrain/19/858470/354002.terrain new file mode 100644 index 000000000..526256b08 Binary files /dev/null and b/public/terrain/19/858470/354002.terrain differ diff --git a/public/terrain/19/858470/354003.terrain b/public/terrain/19/858470/354003.terrain new file mode 100644 index 000000000..c6158da46 Binary files /dev/null and b/public/terrain/19/858470/354003.terrain differ diff --git a/public/terrain/19/858470/354004.terrain b/public/terrain/19/858470/354004.terrain new file mode 100644 index 000000000..fa0ad4b0d Binary files /dev/null and b/public/terrain/19/858470/354004.terrain differ diff --git a/public/terrain/19/858470/354005.terrain b/public/terrain/19/858470/354005.terrain new file mode 100644 index 000000000..8345f3ddd Binary files /dev/null and b/public/terrain/19/858470/354005.terrain differ diff --git a/public/terrain/19/858470/354006.terrain b/public/terrain/19/858470/354006.terrain new file mode 100644 index 000000000..1d06bc093 Binary files /dev/null and b/public/terrain/19/858470/354006.terrain differ diff --git a/public/terrain/19/858470/354007.terrain b/public/terrain/19/858470/354007.terrain new file mode 100644 index 000000000..af934c123 Binary files /dev/null and b/public/terrain/19/858470/354007.terrain differ diff --git a/public/terrain/19/858470/354008.terrain b/public/terrain/19/858470/354008.terrain new file mode 100644 index 000000000..67a6f9dac Binary files /dev/null and b/public/terrain/19/858470/354008.terrain differ diff --git a/public/terrain/19/858470/354009.terrain b/public/terrain/19/858470/354009.terrain new file mode 100644 index 000000000..3086c541b Binary files /dev/null and b/public/terrain/19/858470/354009.terrain differ diff --git a/public/terrain/19/858470/354010.terrain b/public/terrain/19/858470/354010.terrain new file mode 100644 index 000000000..cdf2740b3 Binary files /dev/null and b/public/terrain/19/858470/354010.terrain differ diff --git a/public/terrain/19/858470/354011.terrain b/public/terrain/19/858470/354011.terrain new file mode 100644 index 000000000..d87f2a431 Binary files /dev/null and b/public/terrain/19/858470/354011.terrain differ diff --git a/public/terrain/19/858470/354012.terrain b/public/terrain/19/858470/354012.terrain new file mode 100644 index 000000000..e6e7acf7c Binary files /dev/null and b/public/terrain/19/858470/354012.terrain differ diff --git a/public/terrain/19/858470/354013.terrain b/public/terrain/19/858470/354013.terrain new file mode 100644 index 000000000..618105634 Binary files /dev/null and b/public/terrain/19/858470/354013.terrain differ diff --git a/public/terrain/19/858470/354014.terrain b/public/terrain/19/858470/354014.terrain new file mode 100644 index 000000000..4657303f8 Binary files /dev/null and b/public/terrain/19/858470/354014.terrain differ diff --git a/public/terrain/19/858470/354015.terrain b/public/terrain/19/858470/354015.terrain new file mode 100644 index 000000000..e8a37618f Binary files /dev/null and b/public/terrain/19/858470/354015.terrain differ diff --git a/public/terrain/19/858470/354016.terrain b/public/terrain/19/858470/354016.terrain new file mode 100644 index 000000000..b925e6ecc Binary files /dev/null and b/public/terrain/19/858470/354016.terrain differ diff --git a/public/terrain/19/858470/354017.terrain b/public/terrain/19/858470/354017.terrain new file mode 100644 index 000000000..18cdc871c Binary files /dev/null and b/public/terrain/19/858470/354017.terrain differ diff --git a/public/terrain/19/858470/354018.terrain b/public/terrain/19/858470/354018.terrain new file mode 100644 index 000000000..efbc742dd Binary files /dev/null and b/public/terrain/19/858470/354018.terrain differ diff --git a/public/terrain/19/858470/354019.terrain b/public/terrain/19/858470/354019.terrain new file mode 100644 index 000000000..b88b78951 Binary files /dev/null and b/public/terrain/19/858470/354019.terrain differ diff --git a/public/terrain/19/858470/354020.terrain b/public/terrain/19/858470/354020.terrain new file mode 100644 index 000000000..70809a48f Binary files /dev/null and b/public/terrain/19/858470/354020.terrain differ diff --git a/public/terrain/19/858470/354021.terrain b/public/terrain/19/858470/354021.terrain new file mode 100644 index 000000000..f2bf5cb1e Binary files /dev/null and b/public/terrain/19/858470/354021.terrain differ diff --git a/public/terrain/19/858470/354022.terrain b/public/terrain/19/858470/354022.terrain new file mode 100644 index 000000000..46a470694 Binary files /dev/null and b/public/terrain/19/858470/354022.terrain differ diff --git a/public/terrain/19/858470/354023.terrain b/public/terrain/19/858470/354023.terrain new file mode 100644 index 000000000..39f61d279 Binary files /dev/null and b/public/terrain/19/858470/354023.terrain differ diff --git a/public/terrain/19/858470/354024.terrain b/public/terrain/19/858470/354024.terrain new file mode 100644 index 000000000..6a4e6100e Binary files /dev/null and b/public/terrain/19/858470/354024.terrain differ diff --git a/public/terrain/19/858470/354025.terrain b/public/terrain/19/858470/354025.terrain new file mode 100644 index 000000000..cb71d207e Binary files /dev/null and b/public/terrain/19/858470/354025.terrain differ diff --git a/public/terrain/19/858470/354026.terrain b/public/terrain/19/858470/354026.terrain new file mode 100644 index 000000000..f3985add1 Binary files /dev/null and b/public/terrain/19/858470/354026.terrain differ diff --git a/public/terrain/19/858470/354027.terrain b/public/terrain/19/858470/354027.terrain new file mode 100644 index 000000000..f44359fd6 Binary files /dev/null and b/public/terrain/19/858470/354027.terrain differ diff --git a/public/terrain/19/858470/354028.terrain b/public/terrain/19/858470/354028.terrain new file mode 100644 index 000000000..eb96c5e5c Binary files /dev/null and b/public/terrain/19/858470/354028.terrain differ diff --git a/public/terrain/19/858470/354029.terrain b/public/terrain/19/858470/354029.terrain new file mode 100644 index 000000000..150e570ee Binary files /dev/null and b/public/terrain/19/858470/354029.terrain differ diff --git a/public/terrain/19/858470/354030.terrain b/public/terrain/19/858470/354030.terrain new file mode 100644 index 000000000..b1a624f63 Binary files /dev/null and b/public/terrain/19/858470/354030.terrain differ diff --git a/public/terrain/19/858470/354031.terrain b/public/terrain/19/858470/354031.terrain new file mode 100644 index 000000000..4631f3b2e Binary files /dev/null and b/public/terrain/19/858470/354031.terrain differ diff --git a/public/terrain/19/858470/354032.terrain b/public/terrain/19/858470/354032.terrain new file mode 100644 index 000000000..7067b7149 Binary files /dev/null and b/public/terrain/19/858470/354032.terrain differ diff --git a/public/terrain/19/858470/354033.terrain b/public/terrain/19/858470/354033.terrain new file mode 100644 index 000000000..2ff1e0589 Binary files /dev/null and b/public/terrain/19/858470/354033.terrain differ diff --git a/public/terrain/19/858470/354034.terrain b/public/terrain/19/858470/354034.terrain new file mode 100644 index 000000000..40923dcbe Binary files /dev/null and b/public/terrain/19/858470/354034.terrain differ diff --git a/public/terrain/19/858470/354035.terrain b/public/terrain/19/858470/354035.terrain new file mode 100644 index 000000000..fb5152426 Binary files /dev/null and b/public/terrain/19/858470/354035.terrain differ diff --git a/public/terrain/19/858470/354036.terrain b/public/terrain/19/858470/354036.terrain new file mode 100644 index 000000000..e8c768ec2 Binary files /dev/null and b/public/terrain/19/858470/354036.terrain differ diff --git a/public/terrain/19/858470/354037.terrain b/public/terrain/19/858470/354037.terrain new file mode 100644 index 000000000..98aeb272f Binary files /dev/null and b/public/terrain/19/858470/354037.terrain differ diff --git a/public/terrain/19/858470/354038.terrain b/public/terrain/19/858470/354038.terrain new file mode 100644 index 000000000..b9525c528 Binary files /dev/null and b/public/terrain/19/858470/354038.terrain differ diff --git a/public/terrain/19/858470/354039.terrain b/public/terrain/19/858470/354039.terrain new file mode 100644 index 000000000..6219cccc4 Binary files /dev/null and b/public/terrain/19/858470/354039.terrain differ diff --git a/public/terrain/19/858470/354040.terrain b/public/terrain/19/858470/354040.terrain new file mode 100644 index 000000000..01aaf0997 Binary files /dev/null and b/public/terrain/19/858470/354040.terrain differ diff --git a/public/terrain/19/858470/354041.terrain b/public/terrain/19/858470/354041.terrain new file mode 100644 index 000000000..2bec79068 Binary files /dev/null and b/public/terrain/19/858470/354041.terrain differ diff --git a/public/terrain/19/858470/354042.terrain b/public/terrain/19/858470/354042.terrain new file mode 100644 index 000000000..aee4d92b0 Binary files /dev/null and b/public/terrain/19/858470/354042.terrain differ diff --git a/public/terrain/19/858470/354043.terrain b/public/terrain/19/858470/354043.terrain new file mode 100644 index 000000000..4fb714080 Binary files /dev/null and b/public/terrain/19/858470/354043.terrain differ diff --git a/public/terrain/19/858470/354044.terrain b/public/terrain/19/858470/354044.terrain new file mode 100644 index 000000000..c0d756f09 Binary files /dev/null and b/public/terrain/19/858470/354044.terrain differ diff --git a/public/terrain/19/858470/354045.terrain b/public/terrain/19/858470/354045.terrain new file mode 100644 index 000000000..5d78dc2a8 Binary files /dev/null and b/public/terrain/19/858470/354045.terrain differ diff --git a/public/terrain/19/858470/354046.terrain b/public/terrain/19/858470/354046.terrain new file mode 100644 index 000000000..04464c4f8 Binary files /dev/null and b/public/terrain/19/858470/354046.terrain differ diff --git a/public/terrain/19/858470/354047.terrain b/public/terrain/19/858470/354047.terrain new file mode 100644 index 000000000..0cdc8aefe Binary files /dev/null and b/public/terrain/19/858470/354047.terrain differ diff --git a/public/terrain/19/858470/354048.terrain b/public/terrain/19/858470/354048.terrain new file mode 100644 index 000000000..b21ce4d57 Binary files /dev/null and b/public/terrain/19/858470/354048.terrain differ diff --git a/public/terrain/19/858470/354049.terrain b/public/terrain/19/858470/354049.terrain new file mode 100644 index 000000000..e0e456822 Binary files /dev/null and b/public/terrain/19/858470/354049.terrain differ diff --git a/public/terrain/19/858470/354050.terrain b/public/terrain/19/858470/354050.terrain new file mode 100644 index 000000000..3739fbb84 Binary files /dev/null and b/public/terrain/19/858470/354050.terrain differ diff --git a/public/terrain/19/858470/354051.terrain b/public/terrain/19/858470/354051.terrain new file mode 100644 index 000000000..2284d6c91 Binary files /dev/null and b/public/terrain/19/858470/354051.terrain differ diff --git a/public/terrain/19/858470/354052.terrain b/public/terrain/19/858470/354052.terrain new file mode 100644 index 000000000..c2ec50448 Binary files /dev/null and b/public/terrain/19/858470/354052.terrain differ diff --git a/public/terrain/19/858470/354053.terrain b/public/terrain/19/858470/354053.terrain new file mode 100644 index 000000000..f1f3d5b53 Binary files /dev/null and b/public/terrain/19/858470/354053.terrain differ diff --git a/public/terrain/19/858470/354054.terrain b/public/terrain/19/858470/354054.terrain new file mode 100644 index 000000000..719e527e3 Binary files /dev/null and b/public/terrain/19/858470/354054.terrain differ diff --git a/public/terrain/19/858470/354055.terrain b/public/terrain/19/858470/354055.terrain new file mode 100644 index 000000000..39ad929e5 Binary files /dev/null and b/public/terrain/19/858470/354055.terrain differ diff --git a/public/terrain/19/858470/354056.terrain b/public/terrain/19/858470/354056.terrain new file mode 100644 index 000000000..a2c457fd1 Binary files /dev/null and b/public/terrain/19/858470/354056.terrain differ diff --git a/public/terrain/19/858470/354057.terrain b/public/terrain/19/858470/354057.terrain new file mode 100644 index 000000000..8d168f5c5 Binary files /dev/null and b/public/terrain/19/858470/354057.terrain differ diff --git a/public/terrain/19/858470/354058.terrain b/public/terrain/19/858470/354058.terrain new file mode 100644 index 000000000..9e04fdec6 Binary files /dev/null and b/public/terrain/19/858470/354058.terrain differ diff --git a/public/terrain/19/858470/354059.terrain b/public/terrain/19/858470/354059.terrain new file mode 100644 index 000000000..e9eaf7beb Binary files /dev/null and b/public/terrain/19/858470/354059.terrain differ diff --git a/public/terrain/19/858471/353743.terrain b/public/terrain/19/858471/353743.terrain new file mode 100644 index 000000000..9a0186ba3 Binary files /dev/null and b/public/terrain/19/858471/353743.terrain differ diff --git a/public/terrain/19/858471/353744.terrain b/public/terrain/19/858471/353744.terrain new file mode 100644 index 000000000..eb250bad6 Binary files /dev/null and b/public/terrain/19/858471/353744.terrain differ diff --git a/public/terrain/19/858471/353745.terrain b/public/terrain/19/858471/353745.terrain new file mode 100644 index 000000000..0daf386de Binary files /dev/null and b/public/terrain/19/858471/353745.terrain differ diff --git a/public/terrain/19/858471/353746.terrain b/public/terrain/19/858471/353746.terrain new file mode 100644 index 000000000..d389c0333 Binary files /dev/null and b/public/terrain/19/858471/353746.terrain differ diff --git a/public/terrain/19/858471/353747.terrain b/public/terrain/19/858471/353747.terrain new file mode 100644 index 000000000..38ff3ae39 Binary files /dev/null and b/public/terrain/19/858471/353747.terrain differ diff --git a/public/terrain/19/858471/353748.terrain b/public/terrain/19/858471/353748.terrain new file mode 100644 index 000000000..2800c2a44 Binary files /dev/null and b/public/terrain/19/858471/353748.terrain differ diff --git a/public/terrain/19/858471/353749.terrain b/public/terrain/19/858471/353749.terrain new file mode 100644 index 000000000..9896181e6 Binary files /dev/null and b/public/terrain/19/858471/353749.terrain differ diff --git a/public/terrain/19/858471/353750.terrain b/public/terrain/19/858471/353750.terrain new file mode 100644 index 000000000..9f5a7a545 Binary files /dev/null and b/public/terrain/19/858471/353750.terrain differ diff --git a/public/terrain/19/858471/353751.terrain b/public/terrain/19/858471/353751.terrain new file mode 100644 index 000000000..33aaf81cc Binary files /dev/null and b/public/terrain/19/858471/353751.terrain differ diff --git a/public/terrain/19/858471/353752.terrain b/public/terrain/19/858471/353752.terrain new file mode 100644 index 000000000..7b0fa2951 Binary files /dev/null and b/public/terrain/19/858471/353752.terrain differ diff --git a/public/terrain/19/858471/353753.terrain b/public/terrain/19/858471/353753.terrain new file mode 100644 index 000000000..e98c4c548 Binary files /dev/null and b/public/terrain/19/858471/353753.terrain differ diff --git a/public/terrain/19/858471/353754.terrain b/public/terrain/19/858471/353754.terrain new file mode 100644 index 000000000..24150d9fa Binary files /dev/null and b/public/terrain/19/858471/353754.terrain differ diff --git a/public/terrain/19/858471/353755.terrain b/public/terrain/19/858471/353755.terrain new file mode 100644 index 000000000..bb412f69e Binary files /dev/null and b/public/terrain/19/858471/353755.terrain differ diff --git a/public/terrain/19/858471/353756.terrain b/public/terrain/19/858471/353756.terrain new file mode 100644 index 000000000..40f2d23da Binary files /dev/null and b/public/terrain/19/858471/353756.terrain differ diff --git a/public/terrain/19/858471/353757.terrain b/public/terrain/19/858471/353757.terrain new file mode 100644 index 000000000..ef5862c59 Binary files /dev/null and b/public/terrain/19/858471/353757.terrain differ diff --git a/public/terrain/19/858471/353758.terrain b/public/terrain/19/858471/353758.terrain new file mode 100644 index 000000000..4c11d5738 Binary files /dev/null and b/public/terrain/19/858471/353758.terrain differ diff --git a/public/terrain/19/858471/353759.terrain b/public/terrain/19/858471/353759.terrain new file mode 100644 index 000000000..e8e3e729a Binary files /dev/null and b/public/terrain/19/858471/353759.terrain differ diff --git a/public/terrain/19/858471/353760.terrain b/public/terrain/19/858471/353760.terrain new file mode 100644 index 000000000..21580d2b5 Binary files /dev/null and b/public/terrain/19/858471/353760.terrain differ diff --git a/public/terrain/19/858471/353761.terrain b/public/terrain/19/858471/353761.terrain new file mode 100644 index 000000000..7bc9bbe7b Binary files /dev/null and b/public/terrain/19/858471/353761.terrain differ diff --git a/public/terrain/19/858471/353762.terrain b/public/terrain/19/858471/353762.terrain new file mode 100644 index 000000000..1ce67690e Binary files /dev/null and b/public/terrain/19/858471/353762.terrain differ diff --git a/public/terrain/19/858471/353763.terrain b/public/terrain/19/858471/353763.terrain new file mode 100644 index 000000000..44a8a1c0d Binary files /dev/null and b/public/terrain/19/858471/353763.terrain differ diff --git a/public/terrain/19/858471/353764.terrain b/public/terrain/19/858471/353764.terrain new file mode 100644 index 000000000..8a55d2829 Binary files /dev/null and b/public/terrain/19/858471/353764.terrain differ diff --git a/public/terrain/19/858471/353765.terrain b/public/terrain/19/858471/353765.terrain new file mode 100644 index 000000000..6291206e3 Binary files /dev/null and b/public/terrain/19/858471/353765.terrain differ diff --git a/public/terrain/19/858471/353766.terrain b/public/terrain/19/858471/353766.terrain new file mode 100644 index 000000000..35c421233 Binary files /dev/null and b/public/terrain/19/858471/353766.terrain differ diff --git a/public/terrain/19/858471/353767.terrain b/public/terrain/19/858471/353767.terrain new file mode 100644 index 000000000..17e760114 Binary files /dev/null and b/public/terrain/19/858471/353767.terrain differ diff --git a/public/terrain/19/858471/353768.terrain b/public/terrain/19/858471/353768.terrain new file mode 100644 index 000000000..35fd3620f Binary files /dev/null and b/public/terrain/19/858471/353768.terrain differ diff --git a/public/terrain/19/858471/353769.terrain b/public/terrain/19/858471/353769.terrain new file mode 100644 index 000000000..260d27b6f Binary files /dev/null and b/public/terrain/19/858471/353769.terrain differ diff --git a/public/terrain/19/858471/353770.terrain b/public/terrain/19/858471/353770.terrain new file mode 100644 index 000000000..d27a2a97a Binary files /dev/null and b/public/terrain/19/858471/353770.terrain differ diff --git a/public/terrain/19/858471/353771.terrain b/public/terrain/19/858471/353771.terrain new file mode 100644 index 000000000..b464fab7c Binary files /dev/null and b/public/terrain/19/858471/353771.terrain differ diff --git a/public/terrain/19/858471/353772.terrain b/public/terrain/19/858471/353772.terrain new file mode 100644 index 000000000..4fa60fc30 Binary files /dev/null and b/public/terrain/19/858471/353772.terrain differ diff --git a/public/terrain/19/858471/353773.terrain b/public/terrain/19/858471/353773.terrain new file mode 100644 index 000000000..51291d4b2 Binary files /dev/null and b/public/terrain/19/858471/353773.terrain differ diff --git a/public/terrain/19/858471/353774.terrain b/public/terrain/19/858471/353774.terrain new file mode 100644 index 000000000..ab346d927 Binary files /dev/null and b/public/terrain/19/858471/353774.terrain differ diff --git a/public/terrain/19/858471/353775.terrain b/public/terrain/19/858471/353775.terrain new file mode 100644 index 000000000..cde0e5b85 Binary files /dev/null and b/public/terrain/19/858471/353775.terrain differ diff --git a/public/terrain/19/858471/353776.terrain b/public/terrain/19/858471/353776.terrain new file mode 100644 index 000000000..03c71cd41 Binary files /dev/null and b/public/terrain/19/858471/353776.terrain differ diff --git a/public/terrain/19/858471/353777.terrain b/public/terrain/19/858471/353777.terrain new file mode 100644 index 000000000..1a20d1e03 Binary files /dev/null and b/public/terrain/19/858471/353777.terrain differ diff --git a/public/terrain/19/858471/353778.terrain b/public/terrain/19/858471/353778.terrain new file mode 100644 index 000000000..d80bfdb95 Binary files /dev/null and b/public/terrain/19/858471/353778.terrain differ diff --git a/public/terrain/19/858471/353779.terrain b/public/terrain/19/858471/353779.terrain new file mode 100644 index 000000000..c1a85faaf Binary files /dev/null and b/public/terrain/19/858471/353779.terrain differ diff --git a/public/terrain/19/858471/353780.terrain b/public/terrain/19/858471/353780.terrain new file mode 100644 index 000000000..ecf62f573 Binary files /dev/null and b/public/terrain/19/858471/353780.terrain differ diff --git a/public/terrain/19/858471/353781.terrain b/public/terrain/19/858471/353781.terrain new file mode 100644 index 000000000..128c2559e Binary files /dev/null and b/public/terrain/19/858471/353781.terrain differ diff --git a/public/terrain/19/858471/353782.terrain b/public/terrain/19/858471/353782.terrain new file mode 100644 index 000000000..6dbb18b1b Binary files /dev/null and b/public/terrain/19/858471/353782.terrain differ diff --git a/public/terrain/19/858471/353783.terrain b/public/terrain/19/858471/353783.terrain new file mode 100644 index 000000000..79f9f7aea Binary files /dev/null and b/public/terrain/19/858471/353783.terrain differ diff --git a/public/terrain/19/858471/353784.terrain b/public/terrain/19/858471/353784.terrain new file mode 100644 index 000000000..5dcb9a135 Binary files /dev/null and b/public/terrain/19/858471/353784.terrain differ diff --git a/public/terrain/19/858471/353785.terrain b/public/terrain/19/858471/353785.terrain new file mode 100644 index 000000000..3da1eb19c Binary files /dev/null and b/public/terrain/19/858471/353785.terrain differ diff --git a/public/terrain/19/858471/353786.terrain b/public/terrain/19/858471/353786.terrain new file mode 100644 index 000000000..c70f3c5cc Binary files /dev/null and b/public/terrain/19/858471/353786.terrain differ diff --git a/public/terrain/19/858471/353787.terrain b/public/terrain/19/858471/353787.terrain new file mode 100644 index 000000000..d2ee4f141 Binary files /dev/null and b/public/terrain/19/858471/353787.terrain differ diff --git a/public/terrain/19/858471/353788.terrain b/public/terrain/19/858471/353788.terrain new file mode 100644 index 000000000..7d5df6cf1 Binary files /dev/null and b/public/terrain/19/858471/353788.terrain differ diff --git a/public/terrain/19/858471/353789.terrain b/public/terrain/19/858471/353789.terrain new file mode 100644 index 000000000..bc22dc045 Binary files /dev/null and b/public/terrain/19/858471/353789.terrain differ diff --git a/public/terrain/19/858471/353790.terrain b/public/terrain/19/858471/353790.terrain new file mode 100644 index 000000000..92ee10c56 Binary files /dev/null and b/public/terrain/19/858471/353790.terrain differ diff --git a/public/terrain/19/858471/353791.terrain b/public/terrain/19/858471/353791.terrain new file mode 100644 index 000000000..5c7c758f2 Binary files /dev/null and b/public/terrain/19/858471/353791.terrain differ diff --git a/public/terrain/19/858471/353792.terrain b/public/terrain/19/858471/353792.terrain new file mode 100644 index 000000000..1670c3879 Binary files /dev/null and b/public/terrain/19/858471/353792.terrain differ diff --git a/public/terrain/19/858471/353793.terrain b/public/terrain/19/858471/353793.terrain new file mode 100644 index 000000000..fa8b7cabd Binary files /dev/null and b/public/terrain/19/858471/353793.terrain differ diff --git a/public/terrain/19/858471/353794.terrain b/public/terrain/19/858471/353794.terrain new file mode 100644 index 000000000..f84958cf6 Binary files /dev/null and b/public/terrain/19/858471/353794.terrain differ diff --git a/public/terrain/19/858471/353795.terrain b/public/terrain/19/858471/353795.terrain new file mode 100644 index 000000000..3e0d45705 Binary files /dev/null and b/public/terrain/19/858471/353795.terrain differ diff --git a/public/terrain/19/858471/353796.terrain b/public/terrain/19/858471/353796.terrain new file mode 100644 index 000000000..f47b2b9c6 Binary files /dev/null and b/public/terrain/19/858471/353796.terrain differ diff --git a/public/terrain/19/858471/353797.terrain b/public/terrain/19/858471/353797.terrain new file mode 100644 index 000000000..fe5b1011b Binary files /dev/null and b/public/terrain/19/858471/353797.terrain differ diff --git a/public/terrain/19/858471/353798.terrain b/public/terrain/19/858471/353798.terrain new file mode 100644 index 000000000..2a840363c Binary files /dev/null and b/public/terrain/19/858471/353798.terrain differ diff --git a/public/terrain/19/858471/353799.terrain b/public/terrain/19/858471/353799.terrain new file mode 100644 index 000000000..1209c94f0 Binary files /dev/null and b/public/terrain/19/858471/353799.terrain differ diff --git a/public/terrain/19/858471/353800.terrain b/public/terrain/19/858471/353800.terrain new file mode 100644 index 000000000..6a828a8dc Binary files /dev/null and b/public/terrain/19/858471/353800.terrain differ diff --git a/public/terrain/19/858471/353801.terrain b/public/terrain/19/858471/353801.terrain new file mode 100644 index 000000000..8fdace39c Binary files /dev/null and b/public/terrain/19/858471/353801.terrain differ diff --git a/public/terrain/19/858471/353802.terrain b/public/terrain/19/858471/353802.terrain new file mode 100644 index 000000000..7891aa0fd Binary files /dev/null and b/public/terrain/19/858471/353802.terrain differ diff --git a/public/terrain/19/858471/353803.terrain b/public/terrain/19/858471/353803.terrain new file mode 100644 index 000000000..59e6d0e74 Binary files /dev/null and b/public/terrain/19/858471/353803.terrain differ diff --git a/public/terrain/19/858471/353804.terrain b/public/terrain/19/858471/353804.terrain new file mode 100644 index 000000000..569155965 Binary files /dev/null and b/public/terrain/19/858471/353804.terrain differ diff --git a/public/terrain/19/858471/353805.terrain b/public/terrain/19/858471/353805.terrain new file mode 100644 index 000000000..acddc7f33 Binary files /dev/null and b/public/terrain/19/858471/353805.terrain differ diff --git a/public/terrain/19/858471/353806.terrain b/public/terrain/19/858471/353806.terrain new file mode 100644 index 000000000..78a4cc3ad Binary files /dev/null and b/public/terrain/19/858471/353806.terrain differ diff --git a/public/terrain/19/858471/353807.terrain b/public/terrain/19/858471/353807.terrain new file mode 100644 index 000000000..f6229b613 Binary files /dev/null and b/public/terrain/19/858471/353807.terrain differ diff --git a/public/terrain/19/858471/353808.terrain b/public/terrain/19/858471/353808.terrain new file mode 100644 index 000000000..e6bc76212 Binary files /dev/null and b/public/terrain/19/858471/353808.terrain differ diff --git a/public/terrain/19/858471/353809.terrain b/public/terrain/19/858471/353809.terrain new file mode 100644 index 000000000..3c2167165 Binary files /dev/null and b/public/terrain/19/858471/353809.terrain differ diff --git a/public/terrain/19/858471/353810.terrain b/public/terrain/19/858471/353810.terrain new file mode 100644 index 000000000..927c0dd7f Binary files /dev/null and b/public/terrain/19/858471/353810.terrain differ diff --git a/public/terrain/19/858471/353811.terrain b/public/terrain/19/858471/353811.terrain new file mode 100644 index 000000000..fb7d123f6 Binary files /dev/null and b/public/terrain/19/858471/353811.terrain differ diff --git a/public/terrain/19/858471/353812.terrain b/public/terrain/19/858471/353812.terrain new file mode 100644 index 000000000..20b74a25c Binary files /dev/null and b/public/terrain/19/858471/353812.terrain differ diff --git a/public/terrain/19/858471/353813.terrain b/public/terrain/19/858471/353813.terrain new file mode 100644 index 000000000..dc270bd42 Binary files /dev/null and b/public/terrain/19/858471/353813.terrain differ diff --git a/public/terrain/19/858471/353814.terrain b/public/terrain/19/858471/353814.terrain new file mode 100644 index 000000000..d51648f0a Binary files /dev/null and b/public/terrain/19/858471/353814.terrain differ diff --git a/public/terrain/19/858471/353815.terrain b/public/terrain/19/858471/353815.terrain new file mode 100644 index 000000000..3832c67a5 Binary files /dev/null and b/public/terrain/19/858471/353815.terrain differ diff --git a/public/terrain/19/858471/353816.terrain b/public/terrain/19/858471/353816.terrain new file mode 100644 index 000000000..b11d59959 Binary files /dev/null and b/public/terrain/19/858471/353816.terrain differ diff --git a/public/terrain/19/858471/353817.terrain b/public/terrain/19/858471/353817.terrain new file mode 100644 index 000000000..e54102702 Binary files /dev/null and b/public/terrain/19/858471/353817.terrain differ diff --git a/public/terrain/19/858471/353818.terrain b/public/terrain/19/858471/353818.terrain new file mode 100644 index 000000000..0939a286b Binary files /dev/null and b/public/terrain/19/858471/353818.terrain differ diff --git a/public/terrain/19/858471/353819.terrain b/public/terrain/19/858471/353819.terrain new file mode 100644 index 000000000..3e8ee0482 Binary files /dev/null and b/public/terrain/19/858471/353819.terrain differ diff --git a/public/terrain/19/858471/353820.terrain b/public/terrain/19/858471/353820.terrain new file mode 100644 index 000000000..a52cb89d5 Binary files /dev/null and b/public/terrain/19/858471/353820.terrain differ diff --git a/public/terrain/19/858471/353821.terrain b/public/terrain/19/858471/353821.terrain new file mode 100644 index 000000000..197d9b3d8 Binary files /dev/null and b/public/terrain/19/858471/353821.terrain differ diff --git a/public/terrain/19/858471/353822.terrain b/public/terrain/19/858471/353822.terrain new file mode 100644 index 000000000..de2d56e88 Binary files /dev/null and b/public/terrain/19/858471/353822.terrain differ diff --git a/public/terrain/19/858471/353823.terrain b/public/terrain/19/858471/353823.terrain new file mode 100644 index 000000000..c5f2fc126 Binary files /dev/null and b/public/terrain/19/858471/353823.terrain differ diff --git a/public/terrain/19/858471/353824.terrain b/public/terrain/19/858471/353824.terrain new file mode 100644 index 000000000..5f95ea72a Binary files /dev/null and b/public/terrain/19/858471/353824.terrain differ diff --git a/public/terrain/19/858471/353825.terrain b/public/terrain/19/858471/353825.terrain new file mode 100644 index 000000000..85cce3613 Binary files /dev/null and b/public/terrain/19/858471/353825.terrain differ diff --git a/public/terrain/19/858471/353826.terrain b/public/terrain/19/858471/353826.terrain new file mode 100644 index 000000000..ca302c26a Binary files /dev/null and b/public/terrain/19/858471/353826.terrain differ diff --git a/public/terrain/19/858471/353827.terrain b/public/terrain/19/858471/353827.terrain new file mode 100644 index 000000000..2493b7839 Binary files /dev/null and b/public/terrain/19/858471/353827.terrain differ diff --git a/public/terrain/19/858471/353828.terrain b/public/terrain/19/858471/353828.terrain new file mode 100644 index 000000000..6981021b7 Binary files /dev/null and b/public/terrain/19/858471/353828.terrain differ diff --git a/public/terrain/19/858471/353829.terrain b/public/terrain/19/858471/353829.terrain new file mode 100644 index 000000000..b22a2b5c7 Binary files /dev/null and b/public/terrain/19/858471/353829.terrain differ diff --git a/public/terrain/19/858471/353830.terrain b/public/terrain/19/858471/353830.terrain new file mode 100644 index 000000000..dc8cce631 Binary files /dev/null and b/public/terrain/19/858471/353830.terrain differ diff --git a/public/terrain/19/858471/353831.terrain b/public/terrain/19/858471/353831.terrain new file mode 100644 index 000000000..3ceed12d4 Binary files /dev/null and b/public/terrain/19/858471/353831.terrain differ diff --git a/public/terrain/19/858471/353832.terrain b/public/terrain/19/858471/353832.terrain new file mode 100644 index 000000000..c272ebc1f Binary files /dev/null and b/public/terrain/19/858471/353832.terrain differ diff --git a/public/terrain/19/858471/353833.terrain b/public/terrain/19/858471/353833.terrain new file mode 100644 index 000000000..db7164f80 Binary files /dev/null and b/public/terrain/19/858471/353833.terrain differ diff --git a/public/terrain/19/858471/353834.terrain b/public/terrain/19/858471/353834.terrain new file mode 100644 index 000000000..862189368 Binary files /dev/null and b/public/terrain/19/858471/353834.terrain differ diff --git a/public/terrain/19/858471/353835.terrain b/public/terrain/19/858471/353835.terrain new file mode 100644 index 000000000..ae7f964a0 Binary files /dev/null and b/public/terrain/19/858471/353835.terrain differ diff --git a/public/terrain/19/858471/353836.terrain b/public/terrain/19/858471/353836.terrain new file mode 100644 index 000000000..c9228db72 Binary files /dev/null and b/public/terrain/19/858471/353836.terrain differ diff --git a/public/terrain/19/858471/353837.terrain b/public/terrain/19/858471/353837.terrain new file mode 100644 index 000000000..432577751 Binary files /dev/null and b/public/terrain/19/858471/353837.terrain differ diff --git a/public/terrain/19/858471/353838.terrain b/public/terrain/19/858471/353838.terrain new file mode 100644 index 000000000..38ccf30b2 Binary files /dev/null and b/public/terrain/19/858471/353838.terrain differ diff --git a/public/terrain/19/858471/353839.terrain b/public/terrain/19/858471/353839.terrain new file mode 100644 index 000000000..92af0279a Binary files /dev/null and b/public/terrain/19/858471/353839.terrain differ diff --git a/public/terrain/19/858471/353840.terrain b/public/terrain/19/858471/353840.terrain new file mode 100644 index 000000000..52e1dd9dd Binary files /dev/null and b/public/terrain/19/858471/353840.terrain differ diff --git a/public/terrain/19/858471/353841.terrain b/public/terrain/19/858471/353841.terrain new file mode 100644 index 000000000..4f0cfab6b Binary files /dev/null and b/public/terrain/19/858471/353841.terrain differ diff --git a/public/terrain/19/858471/353842.terrain b/public/terrain/19/858471/353842.terrain new file mode 100644 index 000000000..698e3483f Binary files /dev/null and b/public/terrain/19/858471/353842.terrain differ diff --git a/public/terrain/19/858471/353843.terrain b/public/terrain/19/858471/353843.terrain new file mode 100644 index 000000000..07d60ecb2 Binary files /dev/null and b/public/terrain/19/858471/353843.terrain differ diff --git a/public/terrain/19/858471/353844.terrain b/public/terrain/19/858471/353844.terrain new file mode 100644 index 000000000..ead360345 Binary files /dev/null and b/public/terrain/19/858471/353844.terrain differ diff --git a/public/terrain/19/858471/353845.terrain b/public/terrain/19/858471/353845.terrain new file mode 100644 index 000000000..e130a54b6 Binary files /dev/null and b/public/terrain/19/858471/353845.terrain differ diff --git a/public/terrain/19/858471/353846.terrain b/public/terrain/19/858471/353846.terrain new file mode 100644 index 000000000..3376bced5 Binary files /dev/null and b/public/terrain/19/858471/353846.terrain differ diff --git a/public/terrain/19/858471/353847.terrain b/public/terrain/19/858471/353847.terrain new file mode 100644 index 000000000..ae664f294 Binary files /dev/null and b/public/terrain/19/858471/353847.terrain differ diff --git a/public/terrain/19/858471/353848.terrain b/public/terrain/19/858471/353848.terrain new file mode 100644 index 000000000..47bc6dd1c Binary files /dev/null and b/public/terrain/19/858471/353848.terrain differ diff --git a/public/terrain/19/858471/353849.terrain b/public/terrain/19/858471/353849.terrain new file mode 100644 index 000000000..dbbc53657 Binary files /dev/null and b/public/terrain/19/858471/353849.terrain differ diff --git a/public/terrain/19/858471/353850.terrain b/public/terrain/19/858471/353850.terrain new file mode 100644 index 000000000..ec88d9291 Binary files /dev/null and b/public/terrain/19/858471/353850.terrain differ diff --git a/public/terrain/19/858471/353851.terrain b/public/terrain/19/858471/353851.terrain new file mode 100644 index 000000000..4d50eeb42 Binary files /dev/null and b/public/terrain/19/858471/353851.terrain differ diff --git a/public/terrain/19/858471/353852.terrain b/public/terrain/19/858471/353852.terrain new file mode 100644 index 000000000..521a9c561 Binary files /dev/null and b/public/terrain/19/858471/353852.terrain differ diff --git a/public/terrain/19/858471/353853.terrain b/public/terrain/19/858471/353853.terrain new file mode 100644 index 000000000..045dcaecc Binary files /dev/null and b/public/terrain/19/858471/353853.terrain differ diff --git a/public/terrain/19/858471/353854.terrain b/public/terrain/19/858471/353854.terrain new file mode 100644 index 000000000..4dafd2414 Binary files /dev/null and b/public/terrain/19/858471/353854.terrain differ diff --git a/public/terrain/19/858471/353855.terrain b/public/terrain/19/858471/353855.terrain new file mode 100644 index 000000000..de1b46b03 Binary files /dev/null and b/public/terrain/19/858471/353855.terrain differ diff --git a/public/terrain/19/858471/353856.terrain b/public/terrain/19/858471/353856.terrain new file mode 100644 index 000000000..efba89ae6 Binary files /dev/null and b/public/terrain/19/858471/353856.terrain differ diff --git a/public/terrain/19/858471/353857.terrain b/public/terrain/19/858471/353857.terrain new file mode 100644 index 000000000..cda12bc87 Binary files /dev/null and b/public/terrain/19/858471/353857.terrain differ diff --git a/public/terrain/19/858471/353858.terrain b/public/terrain/19/858471/353858.terrain new file mode 100644 index 000000000..8f46ba845 Binary files /dev/null and b/public/terrain/19/858471/353858.terrain differ diff --git a/public/terrain/19/858471/353859.terrain b/public/terrain/19/858471/353859.terrain new file mode 100644 index 000000000..0835467c3 Binary files /dev/null and b/public/terrain/19/858471/353859.terrain differ diff --git a/public/terrain/19/858471/353860.terrain b/public/terrain/19/858471/353860.terrain new file mode 100644 index 000000000..ca149a04a Binary files /dev/null and b/public/terrain/19/858471/353860.terrain differ diff --git a/public/terrain/19/858471/353861.terrain b/public/terrain/19/858471/353861.terrain new file mode 100644 index 000000000..ee9a658f0 Binary files /dev/null and b/public/terrain/19/858471/353861.terrain differ diff --git a/public/terrain/19/858471/353862.terrain b/public/terrain/19/858471/353862.terrain new file mode 100644 index 000000000..248d48e99 Binary files /dev/null and b/public/terrain/19/858471/353862.terrain differ diff --git a/public/terrain/19/858471/353863.terrain b/public/terrain/19/858471/353863.terrain new file mode 100644 index 000000000..9bd66c20c Binary files /dev/null and b/public/terrain/19/858471/353863.terrain differ diff --git a/public/terrain/19/858471/353864.terrain b/public/terrain/19/858471/353864.terrain new file mode 100644 index 000000000..b8c367b82 Binary files /dev/null and b/public/terrain/19/858471/353864.terrain differ diff --git a/public/terrain/19/858471/353865.terrain b/public/terrain/19/858471/353865.terrain new file mode 100644 index 000000000..45a9f1fac Binary files /dev/null and b/public/terrain/19/858471/353865.terrain differ diff --git a/public/terrain/19/858471/353866.terrain b/public/terrain/19/858471/353866.terrain new file mode 100644 index 000000000..2de0bef65 Binary files /dev/null and b/public/terrain/19/858471/353866.terrain differ diff --git a/public/terrain/19/858471/353867.terrain b/public/terrain/19/858471/353867.terrain new file mode 100644 index 000000000..ab1e1948a Binary files /dev/null and b/public/terrain/19/858471/353867.terrain differ diff --git a/public/terrain/19/858471/353868.terrain b/public/terrain/19/858471/353868.terrain new file mode 100644 index 000000000..2b4541180 Binary files /dev/null and b/public/terrain/19/858471/353868.terrain differ diff --git a/public/terrain/19/858471/353869.terrain b/public/terrain/19/858471/353869.terrain new file mode 100644 index 000000000..6f3e3ee00 Binary files /dev/null and b/public/terrain/19/858471/353869.terrain differ diff --git a/public/terrain/19/858471/353870.terrain b/public/terrain/19/858471/353870.terrain new file mode 100644 index 000000000..7f5a38c7e Binary files /dev/null and b/public/terrain/19/858471/353870.terrain differ diff --git a/public/terrain/19/858471/353871.terrain b/public/terrain/19/858471/353871.terrain new file mode 100644 index 000000000..33e1af956 Binary files /dev/null and b/public/terrain/19/858471/353871.terrain differ diff --git a/public/terrain/19/858471/353872.terrain b/public/terrain/19/858471/353872.terrain new file mode 100644 index 000000000..874a2880c Binary files /dev/null and b/public/terrain/19/858471/353872.terrain differ diff --git a/public/terrain/19/858471/353873.terrain b/public/terrain/19/858471/353873.terrain new file mode 100644 index 000000000..1fe5f8b4e Binary files /dev/null and b/public/terrain/19/858471/353873.terrain differ diff --git a/public/terrain/19/858471/353874.terrain b/public/terrain/19/858471/353874.terrain new file mode 100644 index 000000000..0618c7e23 Binary files /dev/null and b/public/terrain/19/858471/353874.terrain differ diff --git a/public/terrain/19/858471/353875.terrain b/public/terrain/19/858471/353875.terrain new file mode 100644 index 000000000..f5c84f505 Binary files /dev/null and b/public/terrain/19/858471/353875.terrain differ diff --git a/public/terrain/19/858471/353876.terrain b/public/terrain/19/858471/353876.terrain new file mode 100644 index 000000000..e7e2bfa52 Binary files /dev/null and b/public/terrain/19/858471/353876.terrain differ diff --git a/public/terrain/19/858471/353877.terrain b/public/terrain/19/858471/353877.terrain new file mode 100644 index 000000000..87f0b23db Binary files /dev/null and b/public/terrain/19/858471/353877.terrain differ diff --git a/public/terrain/19/858471/353878.terrain b/public/terrain/19/858471/353878.terrain new file mode 100644 index 000000000..ae9d487f3 Binary files /dev/null and b/public/terrain/19/858471/353878.terrain differ diff --git a/public/terrain/19/858471/353879.terrain b/public/terrain/19/858471/353879.terrain new file mode 100644 index 000000000..8c69d1e9e Binary files /dev/null and b/public/terrain/19/858471/353879.terrain differ diff --git a/public/terrain/19/858471/353880.terrain b/public/terrain/19/858471/353880.terrain new file mode 100644 index 000000000..b880903e6 Binary files /dev/null and b/public/terrain/19/858471/353880.terrain differ diff --git a/public/terrain/19/858471/353881.terrain b/public/terrain/19/858471/353881.terrain new file mode 100644 index 000000000..3b80d6f18 Binary files /dev/null and b/public/terrain/19/858471/353881.terrain differ diff --git a/public/terrain/19/858471/353882.terrain b/public/terrain/19/858471/353882.terrain new file mode 100644 index 000000000..f10ace6b0 Binary files /dev/null and b/public/terrain/19/858471/353882.terrain differ diff --git a/public/terrain/19/858471/353883.terrain b/public/terrain/19/858471/353883.terrain new file mode 100644 index 000000000..7621149f0 Binary files /dev/null and b/public/terrain/19/858471/353883.terrain differ diff --git a/public/terrain/19/858471/353884.terrain b/public/terrain/19/858471/353884.terrain new file mode 100644 index 000000000..74f7acecb Binary files /dev/null and b/public/terrain/19/858471/353884.terrain differ diff --git a/public/terrain/19/858471/353885.terrain b/public/terrain/19/858471/353885.terrain new file mode 100644 index 000000000..18436aae5 Binary files /dev/null and b/public/terrain/19/858471/353885.terrain differ diff --git a/public/terrain/19/858471/353886.terrain b/public/terrain/19/858471/353886.terrain new file mode 100644 index 000000000..387f814bf Binary files /dev/null and b/public/terrain/19/858471/353886.terrain differ diff --git a/public/terrain/19/858471/353887.terrain b/public/terrain/19/858471/353887.terrain new file mode 100644 index 000000000..ce56bbf98 Binary files /dev/null and b/public/terrain/19/858471/353887.terrain differ diff --git a/public/terrain/19/858471/353888.terrain b/public/terrain/19/858471/353888.terrain new file mode 100644 index 000000000..c2157d7a0 Binary files /dev/null and b/public/terrain/19/858471/353888.terrain differ diff --git a/public/terrain/19/858471/353889.terrain b/public/terrain/19/858471/353889.terrain new file mode 100644 index 000000000..eebb04c45 Binary files /dev/null and b/public/terrain/19/858471/353889.terrain differ diff --git a/public/terrain/19/858471/353890.terrain b/public/terrain/19/858471/353890.terrain new file mode 100644 index 000000000..d60ec945a Binary files /dev/null and b/public/terrain/19/858471/353890.terrain differ diff --git a/public/terrain/19/858471/353891.terrain b/public/terrain/19/858471/353891.terrain new file mode 100644 index 000000000..f149d37f5 Binary files /dev/null and b/public/terrain/19/858471/353891.terrain differ diff --git a/public/terrain/19/858471/353892.terrain b/public/terrain/19/858471/353892.terrain new file mode 100644 index 000000000..5089c774b Binary files /dev/null and b/public/terrain/19/858471/353892.terrain differ diff --git a/public/terrain/19/858471/353893.terrain b/public/terrain/19/858471/353893.terrain new file mode 100644 index 000000000..340a66072 Binary files /dev/null and b/public/terrain/19/858471/353893.terrain differ diff --git a/public/terrain/19/858471/353894.terrain b/public/terrain/19/858471/353894.terrain new file mode 100644 index 000000000..822004e26 Binary files /dev/null and b/public/terrain/19/858471/353894.terrain differ diff --git a/public/terrain/19/858471/353895.terrain b/public/terrain/19/858471/353895.terrain new file mode 100644 index 000000000..20433d0a7 Binary files /dev/null and b/public/terrain/19/858471/353895.terrain differ diff --git a/public/terrain/19/858471/353896.terrain b/public/terrain/19/858471/353896.terrain new file mode 100644 index 000000000..2f58c356d Binary files /dev/null and b/public/terrain/19/858471/353896.terrain differ diff --git a/public/terrain/19/858471/353897.terrain b/public/terrain/19/858471/353897.terrain new file mode 100644 index 000000000..9dc97c0e3 Binary files /dev/null and b/public/terrain/19/858471/353897.terrain differ diff --git a/public/terrain/19/858471/353898.terrain b/public/terrain/19/858471/353898.terrain new file mode 100644 index 000000000..c99e87cf2 Binary files /dev/null and b/public/terrain/19/858471/353898.terrain differ diff --git a/public/terrain/19/858471/353899.terrain b/public/terrain/19/858471/353899.terrain new file mode 100644 index 000000000..aabe74f16 Binary files /dev/null and b/public/terrain/19/858471/353899.terrain differ diff --git a/public/terrain/19/858471/353900.terrain b/public/terrain/19/858471/353900.terrain new file mode 100644 index 000000000..27e97640e Binary files /dev/null and b/public/terrain/19/858471/353900.terrain differ diff --git a/public/terrain/19/858471/353901.terrain b/public/terrain/19/858471/353901.terrain new file mode 100644 index 000000000..48ea92992 Binary files /dev/null and b/public/terrain/19/858471/353901.terrain differ diff --git a/public/terrain/19/858471/353902.terrain b/public/terrain/19/858471/353902.terrain new file mode 100644 index 000000000..1e7938c17 Binary files /dev/null and b/public/terrain/19/858471/353902.terrain differ diff --git a/public/terrain/19/858471/353903.terrain b/public/terrain/19/858471/353903.terrain new file mode 100644 index 000000000..e9337e640 Binary files /dev/null and b/public/terrain/19/858471/353903.terrain differ diff --git a/public/terrain/19/858471/353904.terrain b/public/terrain/19/858471/353904.terrain new file mode 100644 index 000000000..af75e9536 Binary files /dev/null and b/public/terrain/19/858471/353904.terrain differ diff --git a/public/terrain/19/858471/353905.terrain b/public/terrain/19/858471/353905.terrain new file mode 100644 index 000000000..418cd0b05 Binary files /dev/null and b/public/terrain/19/858471/353905.terrain differ diff --git a/public/terrain/19/858471/353906.terrain b/public/terrain/19/858471/353906.terrain new file mode 100644 index 000000000..499792ae0 Binary files /dev/null and b/public/terrain/19/858471/353906.terrain differ diff --git a/public/terrain/19/858471/353907.terrain b/public/terrain/19/858471/353907.terrain new file mode 100644 index 000000000..2dca25626 Binary files /dev/null and b/public/terrain/19/858471/353907.terrain differ diff --git a/public/terrain/19/858471/353908.terrain b/public/terrain/19/858471/353908.terrain new file mode 100644 index 000000000..1167cd157 Binary files /dev/null and b/public/terrain/19/858471/353908.terrain differ diff --git a/public/terrain/19/858471/353909.terrain b/public/terrain/19/858471/353909.terrain new file mode 100644 index 000000000..309852cf3 Binary files /dev/null and b/public/terrain/19/858471/353909.terrain differ diff --git a/public/terrain/19/858471/353910.terrain b/public/terrain/19/858471/353910.terrain new file mode 100644 index 000000000..3172355f2 Binary files /dev/null and b/public/terrain/19/858471/353910.terrain differ diff --git a/public/terrain/19/858471/353911.terrain b/public/terrain/19/858471/353911.terrain new file mode 100644 index 000000000..9417f4486 Binary files /dev/null and b/public/terrain/19/858471/353911.terrain differ diff --git a/public/terrain/19/858471/353912.terrain b/public/terrain/19/858471/353912.terrain new file mode 100644 index 000000000..1547ff889 Binary files /dev/null and b/public/terrain/19/858471/353912.terrain differ diff --git a/public/terrain/19/858471/353913.terrain b/public/terrain/19/858471/353913.terrain new file mode 100644 index 000000000..d8ecb1a2a Binary files /dev/null and b/public/terrain/19/858471/353913.terrain differ diff --git a/public/terrain/19/858471/353914.terrain b/public/terrain/19/858471/353914.terrain new file mode 100644 index 000000000..71828ffcc Binary files /dev/null and b/public/terrain/19/858471/353914.terrain differ diff --git a/public/terrain/19/858471/353915.terrain b/public/terrain/19/858471/353915.terrain new file mode 100644 index 000000000..686caa0c3 Binary files /dev/null and b/public/terrain/19/858471/353915.terrain differ diff --git a/public/terrain/19/858471/353916.terrain b/public/terrain/19/858471/353916.terrain new file mode 100644 index 000000000..e3ad747a0 Binary files /dev/null and b/public/terrain/19/858471/353916.terrain differ diff --git a/public/terrain/19/858471/353917.terrain b/public/terrain/19/858471/353917.terrain new file mode 100644 index 000000000..c6b46563a Binary files /dev/null and b/public/terrain/19/858471/353917.terrain differ diff --git a/public/terrain/19/858471/353918.terrain b/public/terrain/19/858471/353918.terrain new file mode 100644 index 000000000..730e535ec Binary files /dev/null and b/public/terrain/19/858471/353918.terrain differ diff --git a/public/terrain/19/858471/353919.terrain b/public/terrain/19/858471/353919.terrain new file mode 100644 index 000000000..5116582fe Binary files /dev/null and b/public/terrain/19/858471/353919.terrain differ diff --git a/public/terrain/19/858471/353920.terrain b/public/terrain/19/858471/353920.terrain new file mode 100644 index 000000000..fc9ec1553 Binary files /dev/null and b/public/terrain/19/858471/353920.terrain differ diff --git a/public/terrain/19/858471/353921.terrain b/public/terrain/19/858471/353921.terrain new file mode 100644 index 000000000..5d0a5f5b9 Binary files /dev/null and b/public/terrain/19/858471/353921.terrain differ diff --git a/public/terrain/19/858471/353922.terrain b/public/terrain/19/858471/353922.terrain new file mode 100644 index 000000000..cd660db8e Binary files /dev/null and b/public/terrain/19/858471/353922.terrain differ diff --git a/public/terrain/19/858471/353923.terrain b/public/terrain/19/858471/353923.terrain new file mode 100644 index 000000000..1bf01259d Binary files /dev/null and b/public/terrain/19/858471/353923.terrain differ diff --git a/public/terrain/19/858471/353924.terrain b/public/terrain/19/858471/353924.terrain new file mode 100644 index 000000000..c5a9bfdcf Binary files /dev/null and b/public/terrain/19/858471/353924.terrain differ diff --git a/public/terrain/19/858471/353925.terrain b/public/terrain/19/858471/353925.terrain new file mode 100644 index 000000000..879dc89ff Binary files /dev/null and b/public/terrain/19/858471/353925.terrain differ diff --git a/public/terrain/19/858471/353926.terrain b/public/terrain/19/858471/353926.terrain new file mode 100644 index 000000000..4b2810f3f Binary files /dev/null and b/public/terrain/19/858471/353926.terrain differ diff --git a/public/terrain/19/858471/353927.terrain b/public/terrain/19/858471/353927.terrain new file mode 100644 index 000000000..9f631063b Binary files /dev/null and b/public/terrain/19/858471/353927.terrain differ diff --git a/public/terrain/19/858471/353928.terrain b/public/terrain/19/858471/353928.terrain new file mode 100644 index 000000000..ee7f6ab1b Binary files /dev/null and b/public/terrain/19/858471/353928.terrain differ diff --git a/public/terrain/19/858471/353929.terrain b/public/terrain/19/858471/353929.terrain new file mode 100644 index 000000000..16e606223 Binary files /dev/null and b/public/terrain/19/858471/353929.terrain differ diff --git a/public/terrain/19/858471/353930.terrain b/public/terrain/19/858471/353930.terrain new file mode 100644 index 000000000..a53de9763 Binary files /dev/null and b/public/terrain/19/858471/353930.terrain differ diff --git a/public/terrain/19/858471/353931.terrain b/public/terrain/19/858471/353931.terrain new file mode 100644 index 000000000..31377d575 Binary files /dev/null and b/public/terrain/19/858471/353931.terrain differ diff --git a/public/terrain/19/858471/353932.terrain b/public/terrain/19/858471/353932.terrain new file mode 100644 index 000000000..42e40b23c Binary files /dev/null and b/public/terrain/19/858471/353932.terrain differ diff --git a/public/terrain/19/858471/353933.terrain b/public/terrain/19/858471/353933.terrain new file mode 100644 index 000000000..5f44786db Binary files /dev/null and b/public/terrain/19/858471/353933.terrain differ diff --git a/public/terrain/19/858471/353934.terrain b/public/terrain/19/858471/353934.terrain new file mode 100644 index 000000000..6943561fa Binary files /dev/null and b/public/terrain/19/858471/353934.terrain differ diff --git a/public/terrain/19/858471/353935.terrain b/public/terrain/19/858471/353935.terrain new file mode 100644 index 000000000..3003029ad Binary files /dev/null and b/public/terrain/19/858471/353935.terrain differ diff --git a/public/terrain/19/858471/353936.terrain b/public/terrain/19/858471/353936.terrain new file mode 100644 index 000000000..01da5ac69 Binary files /dev/null and b/public/terrain/19/858471/353936.terrain differ diff --git a/public/terrain/19/858471/353937.terrain b/public/terrain/19/858471/353937.terrain new file mode 100644 index 000000000..9eab5c808 Binary files /dev/null and b/public/terrain/19/858471/353937.terrain differ diff --git a/public/terrain/19/858471/353938.terrain b/public/terrain/19/858471/353938.terrain new file mode 100644 index 000000000..cbcacc960 Binary files /dev/null and b/public/terrain/19/858471/353938.terrain differ diff --git a/public/terrain/19/858471/353939.terrain b/public/terrain/19/858471/353939.terrain new file mode 100644 index 000000000..0a7caba06 Binary files /dev/null and b/public/terrain/19/858471/353939.terrain differ diff --git a/public/terrain/19/858471/353940.terrain b/public/terrain/19/858471/353940.terrain new file mode 100644 index 000000000..20bb4eaa3 Binary files /dev/null and b/public/terrain/19/858471/353940.terrain differ diff --git a/public/terrain/19/858471/353941.terrain b/public/terrain/19/858471/353941.terrain new file mode 100644 index 000000000..9b046d171 Binary files /dev/null and b/public/terrain/19/858471/353941.terrain differ diff --git a/public/terrain/19/858471/353942.terrain b/public/terrain/19/858471/353942.terrain new file mode 100644 index 000000000..0528bd6fc Binary files /dev/null and b/public/terrain/19/858471/353942.terrain differ diff --git a/public/terrain/19/858471/353943.terrain b/public/terrain/19/858471/353943.terrain new file mode 100644 index 000000000..3739e8d8d Binary files /dev/null and b/public/terrain/19/858471/353943.terrain differ diff --git a/public/terrain/19/858471/353944.terrain b/public/terrain/19/858471/353944.terrain new file mode 100644 index 000000000..1b712a79a Binary files /dev/null and b/public/terrain/19/858471/353944.terrain differ diff --git a/public/terrain/19/858471/353945.terrain b/public/terrain/19/858471/353945.terrain new file mode 100644 index 000000000..b53c9c196 Binary files /dev/null and b/public/terrain/19/858471/353945.terrain differ diff --git a/public/terrain/19/858471/353946.terrain b/public/terrain/19/858471/353946.terrain new file mode 100644 index 000000000..93d3dba52 Binary files /dev/null and b/public/terrain/19/858471/353946.terrain differ diff --git a/public/terrain/19/858471/353947.terrain b/public/terrain/19/858471/353947.terrain new file mode 100644 index 000000000..31cbefa37 Binary files /dev/null and b/public/terrain/19/858471/353947.terrain differ diff --git a/public/terrain/19/858471/353948.terrain b/public/terrain/19/858471/353948.terrain new file mode 100644 index 000000000..78fc09dd2 Binary files /dev/null and b/public/terrain/19/858471/353948.terrain differ diff --git a/public/terrain/19/858471/353949.terrain b/public/terrain/19/858471/353949.terrain new file mode 100644 index 000000000..c4984315d Binary files /dev/null and b/public/terrain/19/858471/353949.terrain differ diff --git a/public/terrain/19/858471/353950.terrain b/public/terrain/19/858471/353950.terrain new file mode 100644 index 000000000..3f3fb733b Binary files /dev/null and b/public/terrain/19/858471/353950.terrain differ diff --git a/public/terrain/19/858471/353951.terrain b/public/terrain/19/858471/353951.terrain new file mode 100644 index 000000000..6368e9634 Binary files /dev/null and b/public/terrain/19/858471/353951.terrain differ diff --git a/public/terrain/19/858471/353952.terrain b/public/terrain/19/858471/353952.terrain new file mode 100644 index 000000000..1104c471f Binary files /dev/null and b/public/terrain/19/858471/353952.terrain differ diff --git a/public/terrain/19/858471/353953.terrain b/public/terrain/19/858471/353953.terrain new file mode 100644 index 000000000..5efe50dae Binary files /dev/null and b/public/terrain/19/858471/353953.terrain differ diff --git a/public/terrain/19/858471/353954.terrain b/public/terrain/19/858471/353954.terrain new file mode 100644 index 000000000..621893d2d Binary files /dev/null and b/public/terrain/19/858471/353954.terrain differ diff --git a/public/terrain/19/858471/353955.terrain b/public/terrain/19/858471/353955.terrain new file mode 100644 index 000000000..4e65c19f9 Binary files /dev/null and b/public/terrain/19/858471/353955.terrain differ diff --git a/public/terrain/19/858471/353956.terrain b/public/terrain/19/858471/353956.terrain new file mode 100644 index 000000000..13bd2893a Binary files /dev/null and b/public/terrain/19/858471/353956.terrain differ diff --git a/public/terrain/19/858471/353957.terrain b/public/terrain/19/858471/353957.terrain new file mode 100644 index 000000000..90c9fe125 Binary files /dev/null and b/public/terrain/19/858471/353957.terrain differ diff --git a/public/terrain/19/858471/353958.terrain b/public/terrain/19/858471/353958.terrain new file mode 100644 index 000000000..b1b657721 Binary files /dev/null and b/public/terrain/19/858471/353958.terrain differ diff --git a/public/terrain/19/858471/353959.terrain b/public/terrain/19/858471/353959.terrain new file mode 100644 index 000000000..377136230 Binary files /dev/null and b/public/terrain/19/858471/353959.terrain differ diff --git a/public/terrain/19/858471/353960.terrain b/public/terrain/19/858471/353960.terrain new file mode 100644 index 000000000..81698e8a3 Binary files /dev/null and b/public/terrain/19/858471/353960.terrain differ diff --git a/public/terrain/19/858471/353961.terrain b/public/terrain/19/858471/353961.terrain new file mode 100644 index 000000000..6ef593b39 Binary files /dev/null and b/public/terrain/19/858471/353961.terrain differ diff --git a/public/terrain/19/858471/353962.terrain b/public/terrain/19/858471/353962.terrain new file mode 100644 index 000000000..0839fd9a9 Binary files /dev/null and b/public/terrain/19/858471/353962.terrain differ diff --git a/public/terrain/19/858471/353963.terrain b/public/terrain/19/858471/353963.terrain new file mode 100644 index 000000000..ef7978979 Binary files /dev/null and b/public/terrain/19/858471/353963.terrain differ diff --git a/public/terrain/19/858471/353964.terrain b/public/terrain/19/858471/353964.terrain new file mode 100644 index 000000000..f3e11c23d Binary files /dev/null and b/public/terrain/19/858471/353964.terrain differ diff --git a/public/terrain/19/858471/353965.terrain b/public/terrain/19/858471/353965.terrain new file mode 100644 index 000000000..b2ccc48a9 Binary files /dev/null and b/public/terrain/19/858471/353965.terrain differ diff --git a/public/terrain/19/858471/353966.terrain b/public/terrain/19/858471/353966.terrain new file mode 100644 index 000000000..bf5d935be Binary files /dev/null and b/public/terrain/19/858471/353966.terrain differ diff --git a/public/terrain/19/858471/353967.terrain b/public/terrain/19/858471/353967.terrain new file mode 100644 index 000000000..f33877e1f Binary files /dev/null and b/public/terrain/19/858471/353967.terrain differ diff --git a/public/terrain/19/858471/353968.terrain b/public/terrain/19/858471/353968.terrain new file mode 100644 index 000000000..44cd2ac08 Binary files /dev/null and b/public/terrain/19/858471/353968.terrain differ diff --git a/public/terrain/19/858471/353969.terrain b/public/terrain/19/858471/353969.terrain new file mode 100644 index 000000000..a525db7b1 Binary files /dev/null and b/public/terrain/19/858471/353969.terrain differ diff --git a/public/terrain/19/858471/353970.terrain b/public/terrain/19/858471/353970.terrain new file mode 100644 index 000000000..22542bda2 Binary files /dev/null and b/public/terrain/19/858471/353970.terrain differ diff --git a/public/terrain/19/858471/353971.terrain b/public/terrain/19/858471/353971.terrain new file mode 100644 index 000000000..e53a9dc78 Binary files /dev/null and b/public/terrain/19/858471/353971.terrain differ diff --git a/public/terrain/19/858471/353972.terrain b/public/terrain/19/858471/353972.terrain new file mode 100644 index 000000000..ae0e1f1dc Binary files /dev/null and b/public/terrain/19/858471/353972.terrain differ diff --git a/public/terrain/19/858471/353973.terrain b/public/terrain/19/858471/353973.terrain new file mode 100644 index 000000000..bf89ccb5f Binary files /dev/null and b/public/terrain/19/858471/353973.terrain differ diff --git a/public/terrain/19/858471/353974.terrain b/public/terrain/19/858471/353974.terrain new file mode 100644 index 000000000..bac05826d Binary files /dev/null and b/public/terrain/19/858471/353974.terrain differ diff --git a/public/terrain/19/858471/353975.terrain b/public/terrain/19/858471/353975.terrain new file mode 100644 index 000000000..a46871c12 Binary files /dev/null and b/public/terrain/19/858471/353975.terrain differ diff --git a/public/terrain/19/858471/353976.terrain b/public/terrain/19/858471/353976.terrain new file mode 100644 index 000000000..5f655ecca Binary files /dev/null and b/public/terrain/19/858471/353976.terrain differ diff --git a/public/terrain/19/858471/353977.terrain b/public/terrain/19/858471/353977.terrain new file mode 100644 index 000000000..6b99bdaf9 Binary files /dev/null and b/public/terrain/19/858471/353977.terrain differ diff --git a/public/terrain/19/858471/353978.terrain b/public/terrain/19/858471/353978.terrain new file mode 100644 index 000000000..fc3379092 Binary files /dev/null and b/public/terrain/19/858471/353978.terrain differ diff --git a/public/terrain/19/858471/353979.terrain b/public/terrain/19/858471/353979.terrain new file mode 100644 index 000000000..235ed849c Binary files /dev/null and b/public/terrain/19/858471/353979.terrain differ diff --git a/public/terrain/19/858471/353980.terrain b/public/terrain/19/858471/353980.terrain new file mode 100644 index 000000000..c59587cd6 Binary files /dev/null and b/public/terrain/19/858471/353980.terrain differ diff --git a/public/terrain/19/858471/353981.terrain b/public/terrain/19/858471/353981.terrain new file mode 100644 index 000000000..fee86b015 Binary files /dev/null and b/public/terrain/19/858471/353981.terrain differ diff --git a/public/terrain/19/858471/353982.terrain b/public/terrain/19/858471/353982.terrain new file mode 100644 index 000000000..7154ee4de Binary files /dev/null and b/public/terrain/19/858471/353982.terrain differ diff --git a/public/terrain/19/858471/353983.terrain b/public/terrain/19/858471/353983.terrain new file mode 100644 index 000000000..a19c7d1d8 Binary files /dev/null and b/public/terrain/19/858471/353983.terrain differ diff --git a/public/terrain/19/858471/353984.terrain b/public/terrain/19/858471/353984.terrain new file mode 100644 index 000000000..b15f9b6ff Binary files /dev/null and b/public/terrain/19/858471/353984.terrain differ diff --git a/public/terrain/19/858471/353985.terrain b/public/terrain/19/858471/353985.terrain new file mode 100644 index 000000000..fb62f83ae Binary files /dev/null and b/public/terrain/19/858471/353985.terrain differ diff --git a/public/terrain/19/858471/353986.terrain b/public/terrain/19/858471/353986.terrain new file mode 100644 index 000000000..c303f1adc Binary files /dev/null and b/public/terrain/19/858471/353986.terrain differ diff --git a/public/terrain/19/858471/353987.terrain b/public/terrain/19/858471/353987.terrain new file mode 100644 index 000000000..40e47860a Binary files /dev/null and b/public/terrain/19/858471/353987.terrain differ diff --git a/public/terrain/19/858471/353988.terrain b/public/terrain/19/858471/353988.terrain new file mode 100644 index 000000000..bd88cec87 Binary files /dev/null and b/public/terrain/19/858471/353988.terrain differ diff --git a/public/terrain/19/858471/353989.terrain b/public/terrain/19/858471/353989.terrain new file mode 100644 index 000000000..dce841b26 Binary files /dev/null and b/public/terrain/19/858471/353989.terrain differ diff --git a/public/terrain/19/858471/353990.terrain b/public/terrain/19/858471/353990.terrain new file mode 100644 index 000000000..524057d1b Binary files /dev/null and b/public/terrain/19/858471/353990.terrain differ diff --git a/public/terrain/19/858471/353991.terrain b/public/terrain/19/858471/353991.terrain new file mode 100644 index 000000000..be456d796 Binary files /dev/null and b/public/terrain/19/858471/353991.terrain differ diff --git a/public/terrain/19/858471/353992.terrain b/public/terrain/19/858471/353992.terrain new file mode 100644 index 000000000..8852c0c55 Binary files /dev/null and b/public/terrain/19/858471/353992.terrain differ diff --git a/public/terrain/19/858471/353993.terrain b/public/terrain/19/858471/353993.terrain new file mode 100644 index 000000000..8008a310e Binary files /dev/null and b/public/terrain/19/858471/353993.terrain differ diff --git a/public/terrain/19/858471/353994.terrain b/public/terrain/19/858471/353994.terrain new file mode 100644 index 000000000..7e6780cc1 Binary files /dev/null and b/public/terrain/19/858471/353994.terrain differ diff --git a/public/terrain/19/858471/353995.terrain b/public/terrain/19/858471/353995.terrain new file mode 100644 index 000000000..536e0387d Binary files /dev/null and b/public/terrain/19/858471/353995.terrain differ diff --git a/public/terrain/19/858471/353996.terrain b/public/terrain/19/858471/353996.terrain new file mode 100644 index 000000000..122750ebe Binary files /dev/null and b/public/terrain/19/858471/353996.terrain differ diff --git a/public/terrain/19/858471/353997.terrain b/public/terrain/19/858471/353997.terrain new file mode 100644 index 000000000..b0fecd4e4 Binary files /dev/null and b/public/terrain/19/858471/353997.terrain differ diff --git a/public/terrain/19/858471/353998.terrain b/public/terrain/19/858471/353998.terrain new file mode 100644 index 000000000..cfc89b7a6 Binary files /dev/null and b/public/terrain/19/858471/353998.terrain differ diff --git a/public/terrain/19/858471/353999.terrain b/public/terrain/19/858471/353999.terrain new file mode 100644 index 000000000..8c82c552f Binary files /dev/null and b/public/terrain/19/858471/353999.terrain differ diff --git a/public/terrain/19/858471/354000.terrain b/public/terrain/19/858471/354000.terrain new file mode 100644 index 000000000..0a2b324dd Binary files /dev/null and b/public/terrain/19/858471/354000.terrain differ diff --git a/public/terrain/19/858471/354001.terrain b/public/terrain/19/858471/354001.terrain new file mode 100644 index 000000000..e0c73d259 Binary files /dev/null and b/public/terrain/19/858471/354001.terrain differ diff --git a/public/terrain/19/858471/354002.terrain b/public/terrain/19/858471/354002.terrain new file mode 100644 index 000000000..4e08375dc Binary files /dev/null and b/public/terrain/19/858471/354002.terrain differ diff --git a/public/terrain/19/858471/354003.terrain b/public/terrain/19/858471/354003.terrain new file mode 100644 index 000000000..a5a5e33cb Binary files /dev/null and b/public/terrain/19/858471/354003.terrain differ diff --git a/public/terrain/19/858471/354004.terrain b/public/terrain/19/858471/354004.terrain new file mode 100644 index 000000000..c6e79da4b Binary files /dev/null and b/public/terrain/19/858471/354004.terrain differ diff --git a/public/terrain/19/858471/354005.terrain b/public/terrain/19/858471/354005.terrain new file mode 100644 index 000000000..be0223625 Binary files /dev/null and b/public/terrain/19/858471/354005.terrain differ diff --git a/public/terrain/19/858471/354006.terrain b/public/terrain/19/858471/354006.terrain new file mode 100644 index 000000000..f17e05409 Binary files /dev/null and b/public/terrain/19/858471/354006.terrain differ diff --git a/public/terrain/19/858471/354007.terrain b/public/terrain/19/858471/354007.terrain new file mode 100644 index 000000000..80f420075 Binary files /dev/null and b/public/terrain/19/858471/354007.terrain differ diff --git a/public/terrain/19/858471/354008.terrain b/public/terrain/19/858471/354008.terrain new file mode 100644 index 000000000..4b21a49ae Binary files /dev/null and b/public/terrain/19/858471/354008.terrain differ diff --git a/public/terrain/19/858471/354009.terrain b/public/terrain/19/858471/354009.terrain new file mode 100644 index 000000000..62843d3bf Binary files /dev/null and b/public/terrain/19/858471/354009.terrain differ diff --git a/public/terrain/19/858471/354010.terrain b/public/terrain/19/858471/354010.terrain new file mode 100644 index 000000000..44ee03e08 Binary files /dev/null and b/public/terrain/19/858471/354010.terrain differ diff --git a/public/terrain/19/858471/354011.terrain b/public/terrain/19/858471/354011.terrain new file mode 100644 index 000000000..7cc2814c8 Binary files /dev/null and b/public/terrain/19/858471/354011.terrain differ diff --git a/public/terrain/19/858471/354012.terrain b/public/terrain/19/858471/354012.terrain new file mode 100644 index 000000000..e29d35429 Binary files /dev/null and b/public/terrain/19/858471/354012.terrain differ diff --git a/public/terrain/19/858471/354013.terrain b/public/terrain/19/858471/354013.terrain new file mode 100644 index 000000000..7cf05365e Binary files /dev/null and b/public/terrain/19/858471/354013.terrain differ diff --git a/public/terrain/19/858471/354014.terrain b/public/terrain/19/858471/354014.terrain new file mode 100644 index 000000000..d4405002b Binary files /dev/null and b/public/terrain/19/858471/354014.terrain differ diff --git a/public/terrain/19/858471/354015.terrain b/public/terrain/19/858471/354015.terrain new file mode 100644 index 000000000..0ac2186a7 Binary files /dev/null and b/public/terrain/19/858471/354015.terrain differ diff --git a/public/terrain/19/858471/354016.terrain b/public/terrain/19/858471/354016.terrain new file mode 100644 index 000000000..602612503 Binary files /dev/null and b/public/terrain/19/858471/354016.terrain differ diff --git a/public/terrain/19/858471/354017.terrain b/public/terrain/19/858471/354017.terrain new file mode 100644 index 000000000..b4aeaa414 Binary files /dev/null and b/public/terrain/19/858471/354017.terrain differ diff --git a/public/terrain/19/858471/354018.terrain b/public/terrain/19/858471/354018.terrain new file mode 100644 index 000000000..4a86b8534 Binary files /dev/null and b/public/terrain/19/858471/354018.terrain differ diff --git a/public/terrain/19/858471/354019.terrain b/public/terrain/19/858471/354019.terrain new file mode 100644 index 000000000..958a7f4e4 Binary files /dev/null and b/public/terrain/19/858471/354019.terrain differ diff --git a/public/terrain/19/858471/354020.terrain b/public/terrain/19/858471/354020.terrain new file mode 100644 index 000000000..21185f12a Binary files /dev/null and b/public/terrain/19/858471/354020.terrain differ diff --git a/public/terrain/19/858471/354021.terrain b/public/terrain/19/858471/354021.terrain new file mode 100644 index 000000000..94a5285f4 Binary files /dev/null and b/public/terrain/19/858471/354021.terrain differ diff --git a/public/terrain/19/858471/354022.terrain b/public/terrain/19/858471/354022.terrain new file mode 100644 index 000000000..08f277d03 Binary files /dev/null and b/public/terrain/19/858471/354022.terrain differ diff --git a/public/terrain/19/858471/354023.terrain b/public/terrain/19/858471/354023.terrain new file mode 100644 index 000000000..013d6b6c6 Binary files /dev/null and b/public/terrain/19/858471/354023.terrain differ diff --git a/public/terrain/19/858471/354024.terrain b/public/terrain/19/858471/354024.terrain new file mode 100644 index 000000000..29b0bd8a3 Binary files /dev/null and b/public/terrain/19/858471/354024.terrain differ diff --git a/public/terrain/19/858471/354025.terrain b/public/terrain/19/858471/354025.terrain new file mode 100644 index 000000000..1fca33cbd Binary files /dev/null and b/public/terrain/19/858471/354025.terrain differ diff --git a/public/terrain/19/858471/354026.terrain b/public/terrain/19/858471/354026.terrain new file mode 100644 index 000000000..cb52224f8 Binary files /dev/null and b/public/terrain/19/858471/354026.terrain differ diff --git a/public/terrain/19/858471/354027.terrain b/public/terrain/19/858471/354027.terrain new file mode 100644 index 000000000..f6a101eff Binary files /dev/null and b/public/terrain/19/858471/354027.terrain differ diff --git a/public/terrain/19/858471/354028.terrain b/public/terrain/19/858471/354028.terrain new file mode 100644 index 000000000..5e18421f4 Binary files /dev/null and b/public/terrain/19/858471/354028.terrain differ diff --git a/public/terrain/19/858471/354029.terrain b/public/terrain/19/858471/354029.terrain new file mode 100644 index 000000000..2d7ce2ce5 Binary files /dev/null and b/public/terrain/19/858471/354029.terrain differ diff --git a/public/terrain/19/858471/354030.terrain b/public/terrain/19/858471/354030.terrain new file mode 100644 index 000000000..28a6aa0af Binary files /dev/null and b/public/terrain/19/858471/354030.terrain differ diff --git a/public/terrain/19/858471/354031.terrain b/public/terrain/19/858471/354031.terrain new file mode 100644 index 000000000..88e281d20 Binary files /dev/null and b/public/terrain/19/858471/354031.terrain differ diff --git a/public/terrain/19/858471/354032.terrain b/public/terrain/19/858471/354032.terrain new file mode 100644 index 000000000..73bd6305f Binary files /dev/null and b/public/terrain/19/858471/354032.terrain differ diff --git a/public/terrain/19/858471/354033.terrain b/public/terrain/19/858471/354033.terrain new file mode 100644 index 000000000..19a124e48 Binary files /dev/null and b/public/terrain/19/858471/354033.terrain differ diff --git a/public/terrain/19/858471/354034.terrain b/public/terrain/19/858471/354034.terrain new file mode 100644 index 000000000..56fe6a82a Binary files /dev/null and b/public/terrain/19/858471/354034.terrain differ diff --git a/public/terrain/19/858471/354035.terrain b/public/terrain/19/858471/354035.terrain new file mode 100644 index 000000000..721531ca8 Binary files /dev/null and b/public/terrain/19/858471/354035.terrain differ diff --git a/public/terrain/19/858471/354036.terrain b/public/terrain/19/858471/354036.terrain new file mode 100644 index 000000000..7a24616c3 Binary files /dev/null and b/public/terrain/19/858471/354036.terrain differ diff --git a/public/terrain/19/858471/354037.terrain b/public/terrain/19/858471/354037.terrain new file mode 100644 index 000000000..3e2190276 Binary files /dev/null and b/public/terrain/19/858471/354037.terrain differ diff --git a/public/terrain/19/858471/354038.terrain b/public/terrain/19/858471/354038.terrain new file mode 100644 index 000000000..3a2cc54d9 Binary files /dev/null and b/public/terrain/19/858471/354038.terrain differ diff --git a/public/terrain/19/858471/354039.terrain b/public/terrain/19/858471/354039.terrain new file mode 100644 index 000000000..f13a429e9 Binary files /dev/null and b/public/terrain/19/858471/354039.terrain differ diff --git a/public/terrain/19/858471/354040.terrain b/public/terrain/19/858471/354040.terrain new file mode 100644 index 000000000..0f845965a Binary files /dev/null and b/public/terrain/19/858471/354040.terrain differ diff --git a/public/terrain/19/858471/354041.terrain b/public/terrain/19/858471/354041.terrain new file mode 100644 index 000000000..c7acc12b4 Binary files /dev/null and b/public/terrain/19/858471/354041.terrain differ diff --git a/public/terrain/19/858471/354042.terrain b/public/terrain/19/858471/354042.terrain new file mode 100644 index 000000000..eefe71be6 Binary files /dev/null and b/public/terrain/19/858471/354042.terrain differ diff --git a/public/terrain/19/858471/354043.terrain b/public/terrain/19/858471/354043.terrain new file mode 100644 index 000000000..b93bd8505 Binary files /dev/null and b/public/terrain/19/858471/354043.terrain differ diff --git a/public/terrain/19/858471/354044.terrain b/public/terrain/19/858471/354044.terrain new file mode 100644 index 000000000..52c6fb632 Binary files /dev/null and b/public/terrain/19/858471/354044.terrain differ diff --git a/public/terrain/19/858471/354045.terrain b/public/terrain/19/858471/354045.terrain new file mode 100644 index 000000000..f7db21e41 Binary files /dev/null and b/public/terrain/19/858471/354045.terrain differ diff --git a/public/terrain/19/858471/354046.terrain b/public/terrain/19/858471/354046.terrain new file mode 100644 index 000000000..03265a00d Binary files /dev/null and b/public/terrain/19/858471/354046.terrain differ diff --git a/public/terrain/19/858471/354047.terrain b/public/terrain/19/858471/354047.terrain new file mode 100644 index 000000000..3fc294f42 Binary files /dev/null and b/public/terrain/19/858471/354047.terrain differ diff --git a/public/terrain/19/858471/354048.terrain b/public/terrain/19/858471/354048.terrain new file mode 100644 index 000000000..cbc5fc4db Binary files /dev/null and b/public/terrain/19/858471/354048.terrain differ diff --git a/public/terrain/19/858471/354049.terrain b/public/terrain/19/858471/354049.terrain new file mode 100644 index 000000000..a6eef749c Binary files /dev/null and b/public/terrain/19/858471/354049.terrain differ diff --git a/public/terrain/19/858471/354050.terrain b/public/terrain/19/858471/354050.terrain new file mode 100644 index 000000000..8e88379d5 Binary files /dev/null and b/public/terrain/19/858471/354050.terrain differ diff --git a/public/terrain/19/858471/354051.terrain b/public/terrain/19/858471/354051.terrain new file mode 100644 index 000000000..d181d2a4b Binary files /dev/null and b/public/terrain/19/858471/354051.terrain differ diff --git a/public/terrain/19/858471/354052.terrain b/public/terrain/19/858471/354052.terrain new file mode 100644 index 000000000..247ef5e44 Binary files /dev/null and b/public/terrain/19/858471/354052.terrain differ diff --git a/public/terrain/19/858471/354053.terrain b/public/terrain/19/858471/354053.terrain new file mode 100644 index 000000000..1d27e521e Binary files /dev/null and b/public/terrain/19/858471/354053.terrain differ diff --git a/public/terrain/19/858471/354054.terrain b/public/terrain/19/858471/354054.terrain new file mode 100644 index 000000000..47b3aaefa Binary files /dev/null and b/public/terrain/19/858471/354054.terrain differ diff --git a/public/terrain/19/858471/354055.terrain b/public/terrain/19/858471/354055.terrain new file mode 100644 index 000000000..bd0667b5c Binary files /dev/null and b/public/terrain/19/858471/354055.terrain differ diff --git a/public/terrain/19/858471/354056.terrain b/public/terrain/19/858471/354056.terrain new file mode 100644 index 000000000..9858bc733 Binary files /dev/null and b/public/terrain/19/858471/354056.terrain differ diff --git a/public/terrain/19/858471/354057.terrain b/public/terrain/19/858471/354057.terrain new file mode 100644 index 000000000..413dd458f Binary files /dev/null and b/public/terrain/19/858471/354057.terrain differ diff --git a/public/terrain/19/858471/354058.terrain b/public/terrain/19/858471/354058.terrain new file mode 100644 index 000000000..52d3aea6d Binary files /dev/null and b/public/terrain/19/858471/354058.terrain differ diff --git a/public/terrain/19/858471/354059.terrain b/public/terrain/19/858471/354059.terrain new file mode 100644 index 000000000..84481c8b1 Binary files /dev/null and b/public/terrain/19/858471/354059.terrain differ diff --git a/public/terrain/19/858472/353743.terrain b/public/terrain/19/858472/353743.terrain new file mode 100644 index 000000000..e8f41ed38 Binary files /dev/null and b/public/terrain/19/858472/353743.terrain differ diff --git a/public/terrain/19/858472/353744.terrain b/public/terrain/19/858472/353744.terrain new file mode 100644 index 000000000..0f30f6155 Binary files /dev/null and b/public/terrain/19/858472/353744.terrain differ diff --git a/public/terrain/19/858472/353745.terrain b/public/terrain/19/858472/353745.terrain new file mode 100644 index 000000000..bb78af193 Binary files /dev/null and b/public/terrain/19/858472/353745.terrain differ diff --git a/public/terrain/19/858472/353746.terrain b/public/terrain/19/858472/353746.terrain new file mode 100644 index 000000000..2a03381b1 Binary files /dev/null and b/public/terrain/19/858472/353746.terrain differ diff --git a/public/terrain/19/858472/353747.terrain b/public/terrain/19/858472/353747.terrain new file mode 100644 index 000000000..96f63d287 Binary files /dev/null and b/public/terrain/19/858472/353747.terrain differ diff --git a/public/terrain/19/858472/353748.terrain b/public/terrain/19/858472/353748.terrain new file mode 100644 index 000000000..e2b95cd52 Binary files /dev/null and b/public/terrain/19/858472/353748.terrain differ diff --git a/public/terrain/19/858472/353749.terrain b/public/terrain/19/858472/353749.terrain new file mode 100644 index 000000000..cf9a8ae83 Binary files /dev/null and b/public/terrain/19/858472/353749.terrain differ diff --git a/public/terrain/19/858472/353750.terrain b/public/terrain/19/858472/353750.terrain new file mode 100644 index 000000000..c9582f722 Binary files /dev/null and b/public/terrain/19/858472/353750.terrain differ diff --git a/public/terrain/19/858472/353751.terrain b/public/terrain/19/858472/353751.terrain new file mode 100644 index 000000000..e30256a44 Binary files /dev/null and b/public/terrain/19/858472/353751.terrain differ diff --git a/public/terrain/19/858472/353752.terrain b/public/terrain/19/858472/353752.terrain new file mode 100644 index 000000000..7110982f2 Binary files /dev/null and b/public/terrain/19/858472/353752.terrain differ diff --git a/public/terrain/19/858472/353753.terrain b/public/terrain/19/858472/353753.terrain new file mode 100644 index 000000000..f62af2779 Binary files /dev/null and b/public/terrain/19/858472/353753.terrain differ diff --git a/public/terrain/19/858472/353754.terrain b/public/terrain/19/858472/353754.terrain new file mode 100644 index 000000000..56ae1e7df Binary files /dev/null and b/public/terrain/19/858472/353754.terrain differ diff --git a/public/terrain/19/858472/353755.terrain b/public/terrain/19/858472/353755.terrain new file mode 100644 index 000000000..1a0e8810e Binary files /dev/null and b/public/terrain/19/858472/353755.terrain differ diff --git a/public/terrain/19/858472/353756.terrain b/public/terrain/19/858472/353756.terrain new file mode 100644 index 000000000..6d2e32302 Binary files /dev/null and b/public/terrain/19/858472/353756.terrain differ diff --git a/public/terrain/19/858472/353757.terrain b/public/terrain/19/858472/353757.terrain new file mode 100644 index 000000000..e49b6465c Binary files /dev/null and b/public/terrain/19/858472/353757.terrain differ diff --git a/public/terrain/19/858472/353758.terrain b/public/terrain/19/858472/353758.terrain new file mode 100644 index 000000000..29e13ca60 Binary files /dev/null and b/public/terrain/19/858472/353758.terrain differ diff --git a/public/terrain/19/858472/353759.terrain b/public/terrain/19/858472/353759.terrain new file mode 100644 index 000000000..5f625e40d Binary files /dev/null and b/public/terrain/19/858472/353759.terrain differ diff --git a/public/terrain/19/858472/353760.terrain b/public/terrain/19/858472/353760.terrain new file mode 100644 index 000000000..db66ebb21 Binary files /dev/null and b/public/terrain/19/858472/353760.terrain differ diff --git a/public/terrain/19/858472/353761.terrain b/public/terrain/19/858472/353761.terrain new file mode 100644 index 000000000..edb8cbc20 Binary files /dev/null and b/public/terrain/19/858472/353761.terrain differ diff --git a/public/terrain/19/858472/353762.terrain b/public/terrain/19/858472/353762.terrain new file mode 100644 index 000000000..fdacb8186 Binary files /dev/null and b/public/terrain/19/858472/353762.terrain differ diff --git a/public/terrain/19/858472/353763.terrain b/public/terrain/19/858472/353763.terrain new file mode 100644 index 000000000..91daa4c91 Binary files /dev/null and b/public/terrain/19/858472/353763.terrain differ diff --git a/public/terrain/19/858472/353764.terrain b/public/terrain/19/858472/353764.terrain new file mode 100644 index 000000000..ef847fd87 Binary files /dev/null and b/public/terrain/19/858472/353764.terrain differ diff --git a/public/terrain/19/858472/353765.terrain b/public/terrain/19/858472/353765.terrain new file mode 100644 index 000000000..5ec4dccbe Binary files /dev/null and b/public/terrain/19/858472/353765.terrain differ diff --git a/public/terrain/19/858472/353766.terrain b/public/terrain/19/858472/353766.terrain new file mode 100644 index 000000000..bda395f9a Binary files /dev/null and b/public/terrain/19/858472/353766.terrain differ diff --git a/public/terrain/19/858472/353767.terrain b/public/terrain/19/858472/353767.terrain new file mode 100644 index 000000000..787859c1c Binary files /dev/null and b/public/terrain/19/858472/353767.terrain differ diff --git a/public/terrain/19/858472/353768.terrain b/public/terrain/19/858472/353768.terrain new file mode 100644 index 000000000..65b50e8dd Binary files /dev/null and b/public/terrain/19/858472/353768.terrain differ diff --git a/public/terrain/19/858472/353769.terrain b/public/terrain/19/858472/353769.terrain new file mode 100644 index 000000000..b5e1b1a25 Binary files /dev/null and b/public/terrain/19/858472/353769.terrain differ diff --git a/public/terrain/19/858472/353770.terrain b/public/terrain/19/858472/353770.terrain new file mode 100644 index 000000000..2f10c834b Binary files /dev/null and b/public/terrain/19/858472/353770.terrain differ diff --git a/public/terrain/19/858472/353771.terrain b/public/terrain/19/858472/353771.terrain new file mode 100644 index 000000000..27582d4b5 Binary files /dev/null and b/public/terrain/19/858472/353771.terrain differ diff --git a/public/terrain/19/858472/353772.terrain b/public/terrain/19/858472/353772.terrain new file mode 100644 index 000000000..62951e219 Binary files /dev/null and b/public/terrain/19/858472/353772.terrain differ diff --git a/public/terrain/19/858472/353773.terrain b/public/terrain/19/858472/353773.terrain new file mode 100644 index 000000000..4da0d5b61 Binary files /dev/null and b/public/terrain/19/858472/353773.terrain differ diff --git a/public/terrain/19/858472/353774.terrain b/public/terrain/19/858472/353774.terrain new file mode 100644 index 000000000..0b064bfe6 Binary files /dev/null and b/public/terrain/19/858472/353774.terrain differ diff --git a/public/terrain/19/858472/353775.terrain b/public/terrain/19/858472/353775.terrain new file mode 100644 index 000000000..adc0a4e05 Binary files /dev/null and b/public/terrain/19/858472/353775.terrain differ diff --git a/public/terrain/19/858472/353776.terrain b/public/terrain/19/858472/353776.terrain new file mode 100644 index 000000000..b04686787 Binary files /dev/null and b/public/terrain/19/858472/353776.terrain differ diff --git a/public/terrain/19/858472/353777.terrain b/public/terrain/19/858472/353777.terrain new file mode 100644 index 000000000..ceac66384 Binary files /dev/null and b/public/terrain/19/858472/353777.terrain differ diff --git a/public/terrain/19/858472/353778.terrain b/public/terrain/19/858472/353778.terrain new file mode 100644 index 000000000..3b7a1638c Binary files /dev/null and b/public/terrain/19/858472/353778.terrain differ diff --git a/public/terrain/19/858472/353779.terrain b/public/terrain/19/858472/353779.terrain new file mode 100644 index 000000000..dd47ecea6 Binary files /dev/null and b/public/terrain/19/858472/353779.terrain differ diff --git a/public/terrain/19/858472/353780.terrain b/public/terrain/19/858472/353780.terrain new file mode 100644 index 000000000..3acb6190c Binary files /dev/null and b/public/terrain/19/858472/353780.terrain differ diff --git a/public/terrain/19/858472/353781.terrain b/public/terrain/19/858472/353781.terrain new file mode 100644 index 000000000..13396f7dd Binary files /dev/null and b/public/terrain/19/858472/353781.terrain differ diff --git a/public/terrain/19/858472/353782.terrain b/public/terrain/19/858472/353782.terrain new file mode 100644 index 000000000..0728520e9 Binary files /dev/null and b/public/terrain/19/858472/353782.terrain differ diff --git a/public/terrain/19/858472/353783.terrain b/public/terrain/19/858472/353783.terrain new file mode 100644 index 000000000..89bfc3c73 Binary files /dev/null and b/public/terrain/19/858472/353783.terrain differ diff --git a/public/terrain/19/858472/353784.terrain b/public/terrain/19/858472/353784.terrain new file mode 100644 index 000000000..6c1a71d29 Binary files /dev/null and b/public/terrain/19/858472/353784.terrain differ diff --git a/public/terrain/19/858472/353785.terrain b/public/terrain/19/858472/353785.terrain new file mode 100644 index 000000000..cb39f719a Binary files /dev/null and b/public/terrain/19/858472/353785.terrain differ diff --git a/public/terrain/19/858472/353786.terrain b/public/terrain/19/858472/353786.terrain new file mode 100644 index 000000000..3d0cd34eb Binary files /dev/null and b/public/terrain/19/858472/353786.terrain differ diff --git a/public/terrain/19/858472/353787.terrain b/public/terrain/19/858472/353787.terrain new file mode 100644 index 000000000..c2aef1ef1 Binary files /dev/null and b/public/terrain/19/858472/353787.terrain differ diff --git a/public/terrain/19/858472/353788.terrain b/public/terrain/19/858472/353788.terrain new file mode 100644 index 000000000..64f5f3e7c Binary files /dev/null and b/public/terrain/19/858472/353788.terrain differ diff --git a/public/terrain/19/858472/353789.terrain b/public/terrain/19/858472/353789.terrain new file mode 100644 index 000000000..2c816d48a Binary files /dev/null and b/public/terrain/19/858472/353789.terrain differ diff --git a/public/terrain/19/858472/353790.terrain b/public/terrain/19/858472/353790.terrain new file mode 100644 index 000000000..acc3371cc Binary files /dev/null and b/public/terrain/19/858472/353790.terrain differ diff --git a/public/terrain/19/858472/353791.terrain b/public/terrain/19/858472/353791.terrain new file mode 100644 index 000000000..b636a4944 Binary files /dev/null and b/public/terrain/19/858472/353791.terrain differ diff --git a/public/terrain/19/858472/353792.terrain b/public/terrain/19/858472/353792.terrain new file mode 100644 index 000000000..558c2b225 Binary files /dev/null and b/public/terrain/19/858472/353792.terrain differ diff --git a/public/terrain/19/858472/353793.terrain b/public/terrain/19/858472/353793.terrain new file mode 100644 index 000000000..59dc99739 Binary files /dev/null and b/public/terrain/19/858472/353793.terrain differ diff --git a/public/terrain/19/858472/353794.terrain b/public/terrain/19/858472/353794.terrain new file mode 100644 index 000000000..a3e351281 Binary files /dev/null and b/public/terrain/19/858472/353794.terrain differ diff --git a/public/terrain/19/858472/353795.terrain b/public/terrain/19/858472/353795.terrain new file mode 100644 index 000000000..f4a8fd511 Binary files /dev/null and b/public/terrain/19/858472/353795.terrain differ diff --git a/public/terrain/19/858472/353796.terrain b/public/terrain/19/858472/353796.terrain new file mode 100644 index 000000000..d0b9b49c6 Binary files /dev/null and b/public/terrain/19/858472/353796.terrain differ diff --git a/public/terrain/19/858472/353797.terrain b/public/terrain/19/858472/353797.terrain new file mode 100644 index 000000000..3b1e455e3 Binary files /dev/null and b/public/terrain/19/858472/353797.terrain differ diff --git a/public/terrain/19/858472/353798.terrain b/public/terrain/19/858472/353798.terrain new file mode 100644 index 000000000..424a28dd1 Binary files /dev/null and b/public/terrain/19/858472/353798.terrain differ diff --git a/public/terrain/19/858472/353799.terrain b/public/terrain/19/858472/353799.terrain new file mode 100644 index 000000000..66aa0d963 Binary files /dev/null and b/public/terrain/19/858472/353799.terrain differ diff --git a/public/terrain/19/858472/353800.terrain b/public/terrain/19/858472/353800.terrain new file mode 100644 index 000000000..1d9038146 Binary files /dev/null and b/public/terrain/19/858472/353800.terrain differ diff --git a/public/terrain/19/858472/353801.terrain b/public/terrain/19/858472/353801.terrain new file mode 100644 index 000000000..67fc48784 Binary files /dev/null and b/public/terrain/19/858472/353801.terrain differ diff --git a/public/terrain/19/858472/353802.terrain b/public/terrain/19/858472/353802.terrain new file mode 100644 index 000000000..912dca22b Binary files /dev/null and b/public/terrain/19/858472/353802.terrain differ diff --git a/public/terrain/19/858472/353803.terrain b/public/terrain/19/858472/353803.terrain new file mode 100644 index 000000000..6e75c0607 Binary files /dev/null and b/public/terrain/19/858472/353803.terrain differ diff --git a/public/terrain/19/858472/353804.terrain b/public/terrain/19/858472/353804.terrain new file mode 100644 index 000000000..b7f0104e0 Binary files /dev/null and b/public/terrain/19/858472/353804.terrain differ diff --git a/public/terrain/19/858472/353805.terrain b/public/terrain/19/858472/353805.terrain new file mode 100644 index 000000000..65c4054dc Binary files /dev/null and b/public/terrain/19/858472/353805.terrain differ diff --git a/public/terrain/19/858472/353806.terrain b/public/terrain/19/858472/353806.terrain new file mode 100644 index 000000000..6e2b8ccba Binary files /dev/null and b/public/terrain/19/858472/353806.terrain differ diff --git a/public/terrain/19/858472/353807.terrain b/public/terrain/19/858472/353807.terrain new file mode 100644 index 000000000..3ff1e70ac Binary files /dev/null and b/public/terrain/19/858472/353807.terrain differ diff --git a/public/terrain/19/858472/353808.terrain b/public/terrain/19/858472/353808.terrain new file mode 100644 index 000000000..1ef7c34df Binary files /dev/null and b/public/terrain/19/858472/353808.terrain differ diff --git a/public/terrain/19/858472/353809.terrain b/public/terrain/19/858472/353809.terrain new file mode 100644 index 000000000..ffa7c269f Binary files /dev/null and b/public/terrain/19/858472/353809.terrain differ diff --git a/public/terrain/19/858472/353810.terrain b/public/terrain/19/858472/353810.terrain new file mode 100644 index 000000000..7d26711eb Binary files /dev/null and b/public/terrain/19/858472/353810.terrain differ diff --git a/public/terrain/19/858472/353811.terrain b/public/terrain/19/858472/353811.terrain new file mode 100644 index 000000000..2636c57cd Binary files /dev/null and b/public/terrain/19/858472/353811.terrain differ diff --git a/public/terrain/19/858472/353812.terrain b/public/terrain/19/858472/353812.terrain new file mode 100644 index 000000000..da7575601 Binary files /dev/null and b/public/terrain/19/858472/353812.terrain differ diff --git a/public/terrain/19/858472/353813.terrain b/public/terrain/19/858472/353813.terrain new file mode 100644 index 000000000..a8d3bcc68 Binary files /dev/null and b/public/terrain/19/858472/353813.terrain differ diff --git a/public/terrain/19/858472/353814.terrain b/public/terrain/19/858472/353814.terrain new file mode 100644 index 000000000..d3599fc90 Binary files /dev/null and b/public/terrain/19/858472/353814.terrain differ diff --git a/public/terrain/19/858472/353815.terrain b/public/terrain/19/858472/353815.terrain new file mode 100644 index 000000000..17ae6d47e Binary files /dev/null and b/public/terrain/19/858472/353815.terrain differ diff --git a/public/terrain/19/858472/353816.terrain b/public/terrain/19/858472/353816.terrain new file mode 100644 index 000000000..26fc3a159 Binary files /dev/null and b/public/terrain/19/858472/353816.terrain differ diff --git a/public/terrain/19/858472/353817.terrain b/public/terrain/19/858472/353817.terrain new file mode 100644 index 000000000..b81e7f600 Binary files /dev/null and b/public/terrain/19/858472/353817.terrain differ diff --git a/public/terrain/19/858472/353818.terrain b/public/terrain/19/858472/353818.terrain new file mode 100644 index 000000000..b6f53fca8 Binary files /dev/null and b/public/terrain/19/858472/353818.terrain differ diff --git a/public/terrain/19/858472/353819.terrain b/public/terrain/19/858472/353819.terrain new file mode 100644 index 000000000..85892b20b Binary files /dev/null and b/public/terrain/19/858472/353819.terrain differ diff --git a/public/terrain/19/858472/353820.terrain b/public/terrain/19/858472/353820.terrain new file mode 100644 index 000000000..a401ca818 Binary files /dev/null and b/public/terrain/19/858472/353820.terrain differ diff --git a/public/terrain/19/858472/353821.terrain b/public/terrain/19/858472/353821.terrain new file mode 100644 index 000000000..31d6c4e3a Binary files /dev/null and b/public/terrain/19/858472/353821.terrain differ diff --git a/public/terrain/19/858472/353822.terrain b/public/terrain/19/858472/353822.terrain new file mode 100644 index 000000000..22512fee0 Binary files /dev/null and b/public/terrain/19/858472/353822.terrain differ diff --git a/public/terrain/19/858472/353823.terrain b/public/terrain/19/858472/353823.terrain new file mode 100644 index 000000000..6943e64d2 Binary files /dev/null and b/public/terrain/19/858472/353823.terrain differ diff --git a/public/terrain/19/858472/353824.terrain b/public/terrain/19/858472/353824.terrain new file mode 100644 index 000000000..39a563cfe Binary files /dev/null and b/public/terrain/19/858472/353824.terrain differ diff --git a/public/terrain/19/858472/353825.terrain b/public/terrain/19/858472/353825.terrain new file mode 100644 index 000000000..bdb1f88f1 Binary files /dev/null and b/public/terrain/19/858472/353825.terrain differ diff --git a/public/terrain/19/858472/353826.terrain b/public/terrain/19/858472/353826.terrain new file mode 100644 index 000000000..8be63729d Binary files /dev/null and b/public/terrain/19/858472/353826.terrain differ diff --git a/public/terrain/19/858472/353827.terrain b/public/terrain/19/858472/353827.terrain new file mode 100644 index 000000000..0f30e7569 Binary files /dev/null and b/public/terrain/19/858472/353827.terrain differ diff --git a/public/terrain/19/858472/353828.terrain b/public/terrain/19/858472/353828.terrain new file mode 100644 index 000000000..0132c3af7 Binary files /dev/null and b/public/terrain/19/858472/353828.terrain differ diff --git a/public/terrain/19/858472/353829.terrain b/public/terrain/19/858472/353829.terrain new file mode 100644 index 000000000..03bc19a94 Binary files /dev/null and b/public/terrain/19/858472/353829.terrain differ diff --git a/public/terrain/19/858472/353830.terrain b/public/terrain/19/858472/353830.terrain new file mode 100644 index 000000000..94d30e4b5 Binary files /dev/null and b/public/terrain/19/858472/353830.terrain differ diff --git a/public/terrain/19/858472/353831.terrain b/public/terrain/19/858472/353831.terrain new file mode 100644 index 000000000..bec1ba3ca Binary files /dev/null and b/public/terrain/19/858472/353831.terrain differ diff --git a/public/terrain/19/858472/353832.terrain b/public/terrain/19/858472/353832.terrain new file mode 100644 index 000000000..66025ecd4 Binary files /dev/null and b/public/terrain/19/858472/353832.terrain differ diff --git a/public/terrain/19/858472/353833.terrain b/public/terrain/19/858472/353833.terrain new file mode 100644 index 000000000..d44599a9e Binary files /dev/null and b/public/terrain/19/858472/353833.terrain differ diff --git a/public/terrain/19/858472/353834.terrain b/public/terrain/19/858472/353834.terrain new file mode 100644 index 000000000..e01e8a308 Binary files /dev/null and b/public/terrain/19/858472/353834.terrain differ diff --git a/public/terrain/19/858472/353835.terrain b/public/terrain/19/858472/353835.terrain new file mode 100644 index 000000000..2b1366f17 Binary files /dev/null and b/public/terrain/19/858472/353835.terrain differ diff --git a/public/terrain/19/858472/353836.terrain b/public/terrain/19/858472/353836.terrain new file mode 100644 index 000000000..feddec956 Binary files /dev/null and b/public/terrain/19/858472/353836.terrain differ diff --git a/public/terrain/19/858472/353837.terrain b/public/terrain/19/858472/353837.terrain new file mode 100644 index 000000000..27c30d71c Binary files /dev/null and b/public/terrain/19/858472/353837.terrain differ diff --git a/public/terrain/19/858472/353838.terrain b/public/terrain/19/858472/353838.terrain new file mode 100644 index 000000000..d2bcc900d Binary files /dev/null and b/public/terrain/19/858472/353838.terrain differ diff --git a/public/terrain/19/858472/353839.terrain b/public/terrain/19/858472/353839.terrain new file mode 100644 index 000000000..37a75f371 Binary files /dev/null and b/public/terrain/19/858472/353839.terrain differ diff --git a/public/terrain/19/858472/353840.terrain b/public/terrain/19/858472/353840.terrain new file mode 100644 index 000000000..3574f86d6 Binary files /dev/null and b/public/terrain/19/858472/353840.terrain differ diff --git a/public/terrain/19/858472/353841.terrain b/public/terrain/19/858472/353841.terrain new file mode 100644 index 000000000..6d8f346be Binary files /dev/null and b/public/terrain/19/858472/353841.terrain differ diff --git a/public/terrain/19/858472/353842.terrain b/public/terrain/19/858472/353842.terrain new file mode 100644 index 000000000..5e5c2081a Binary files /dev/null and b/public/terrain/19/858472/353842.terrain differ diff --git a/public/terrain/19/858472/353843.terrain b/public/terrain/19/858472/353843.terrain new file mode 100644 index 000000000..9afc36291 Binary files /dev/null and b/public/terrain/19/858472/353843.terrain differ diff --git a/public/terrain/19/858472/353844.terrain b/public/terrain/19/858472/353844.terrain new file mode 100644 index 000000000..edd0bcba6 Binary files /dev/null and b/public/terrain/19/858472/353844.terrain differ diff --git a/public/terrain/19/858472/353845.terrain b/public/terrain/19/858472/353845.terrain new file mode 100644 index 000000000..6f8e22e39 Binary files /dev/null and b/public/terrain/19/858472/353845.terrain differ diff --git a/public/terrain/19/858472/353846.terrain b/public/terrain/19/858472/353846.terrain new file mode 100644 index 000000000..43e572709 Binary files /dev/null and b/public/terrain/19/858472/353846.terrain differ diff --git a/public/terrain/19/858472/353847.terrain b/public/terrain/19/858472/353847.terrain new file mode 100644 index 000000000..a33dfd711 Binary files /dev/null and b/public/terrain/19/858472/353847.terrain differ diff --git a/public/terrain/19/858472/353848.terrain b/public/terrain/19/858472/353848.terrain new file mode 100644 index 000000000..5e59de3fc Binary files /dev/null and b/public/terrain/19/858472/353848.terrain differ diff --git a/public/terrain/19/858472/353849.terrain b/public/terrain/19/858472/353849.terrain new file mode 100644 index 000000000..b6d0f17dd Binary files /dev/null and b/public/terrain/19/858472/353849.terrain differ diff --git a/public/terrain/19/858472/353850.terrain b/public/terrain/19/858472/353850.terrain new file mode 100644 index 000000000..bc28bc38e Binary files /dev/null and b/public/terrain/19/858472/353850.terrain differ diff --git a/public/terrain/19/858472/353851.terrain b/public/terrain/19/858472/353851.terrain new file mode 100644 index 000000000..240f11380 Binary files /dev/null and b/public/terrain/19/858472/353851.terrain differ diff --git a/public/terrain/19/858472/353852.terrain b/public/terrain/19/858472/353852.terrain new file mode 100644 index 000000000..b4c8017c8 Binary files /dev/null and b/public/terrain/19/858472/353852.terrain differ diff --git a/public/terrain/19/858472/353853.terrain b/public/terrain/19/858472/353853.terrain new file mode 100644 index 000000000..bc4dac214 Binary files /dev/null and b/public/terrain/19/858472/353853.terrain differ diff --git a/public/terrain/19/858472/353854.terrain b/public/terrain/19/858472/353854.terrain new file mode 100644 index 000000000..3103de189 Binary files /dev/null and b/public/terrain/19/858472/353854.terrain differ diff --git a/public/terrain/19/858472/353855.terrain b/public/terrain/19/858472/353855.terrain new file mode 100644 index 000000000..7f4d04318 Binary files /dev/null and b/public/terrain/19/858472/353855.terrain differ diff --git a/public/terrain/19/858472/353856.terrain b/public/terrain/19/858472/353856.terrain new file mode 100644 index 000000000..f035edaca Binary files /dev/null and b/public/terrain/19/858472/353856.terrain differ diff --git a/public/terrain/19/858472/353857.terrain b/public/terrain/19/858472/353857.terrain new file mode 100644 index 000000000..949fa4d85 Binary files /dev/null and b/public/terrain/19/858472/353857.terrain differ diff --git a/public/terrain/19/858472/353858.terrain b/public/terrain/19/858472/353858.terrain new file mode 100644 index 000000000..448c6ba9d Binary files /dev/null and b/public/terrain/19/858472/353858.terrain differ diff --git a/public/terrain/19/858472/353859.terrain b/public/terrain/19/858472/353859.terrain new file mode 100644 index 000000000..69d5584f5 Binary files /dev/null and b/public/terrain/19/858472/353859.terrain differ diff --git a/public/terrain/19/858472/353860.terrain b/public/terrain/19/858472/353860.terrain new file mode 100644 index 000000000..2a5777038 Binary files /dev/null and b/public/terrain/19/858472/353860.terrain differ diff --git a/public/terrain/19/858472/353861.terrain b/public/terrain/19/858472/353861.terrain new file mode 100644 index 000000000..9a38a21e0 Binary files /dev/null and b/public/terrain/19/858472/353861.terrain differ diff --git a/public/terrain/19/858472/353862.terrain b/public/terrain/19/858472/353862.terrain new file mode 100644 index 000000000..3785c8264 Binary files /dev/null and b/public/terrain/19/858472/353862.terrain differ diff --git a/public/terrain/19/858472/353863.terrain b/public/terrain/19/858472/353863.terrain new file mode 100644 index 000000000..8f3793b5f Binary files /dev/null and b/public/terrain/19/858472/353863.terrain differ diff --git a/public/terrain/19/858472/353864.terrain b/public/terrain/19/858472/353864.terrain new file mode 100644 index 000000000..3b9fbae23 Binary files /dev/null and b/public/terrain/19/858472/353864.terrain differ diff --git a/public/terrain/19/858472/353865.terrain b/public/terrain/19/858472/353865.terrain new file mode 100644 index 000000000..aaef419f4 Binary files /dev/null and b/public/terrain/19/858472/353865.terrain differ diff --git a/public/terrain/19/858472/353866.terrain b/public/terrain/19/858472/353866.terrain new file mode 100644 index 000000000..200e14ea6 Binary files /dev/null and b/public/terrain/19/858472/353866.terrain differ diff --git a/public/terrain/19/858472/353867.terrain b/public/terrain/19/858472/353867.terrain new file mode 100644 index 000000000..e3bbd7da6 Binary files /dev/null and b/public/terrain/19/858472/353867.terrain differ diff --git a/public/terrain/19/858472/353868.terrain b/public/terrain/19/858472/353868.terrain new file mode 100644 index 000000000..3d3df6922 Binary files /dev/null and b/public/terrain/19/858472/353868.terrain differ diff --git a/public/terrain/19/858472/353869.terrain b/public/terrain/19/858472/353869.terrain new file mode 100644 index 000000000..557db63df Binary files /dev/null and b/public/terrain/19/858472/353869.terrain differ diff --git a/public/terrain/19/858472/353870.terrain b/public/terrain/19/858472/353870.terrain new file mode 100644 index 000000000..560e8397e Binary files /dev/null and b/public/terrain/19/858472/353870.terrain differ diff --git a/public/terrain/19/858472/353871.terrain b/public/terrain/19/858472/353871.terrain new file mode 100644 index 000000000..86f1f1fe6 Binary files /dev/null and b/public/terrain/19/858472/353871.terrain differ diff --git a/public/terrain/19/858472/353872.terrain b/public/terrain/19/858472/353872.terrain new file mode 100644 index 000000000..3d7affbd7 Binary files /dev/null and b/public/terrain/19/858472/353872.terrain differ diff --git a/public/terrain/19/858472/353873.terrain b/public/terrain/19/858472/353873.terrain new file mode 100644 index 000000000..59864fd1b Binary files /dev/null and b/public/terrain/19/858472/353873.terrain differ diff --git a/public/terrain/19/858472/353874.terrain b/public/terrain/19/858472/353874.terrain new file mode 100644 index 000000000..3ce7684a1 Binary files /dev/null and b/public/terrain/19/858472/353874.terrain differ diff --git a/public/terrain/19/858472/353875.terrain b/public/terrain/19/858472/353875.terrain new file mode 100644 index 000000000..2e621be88 Binary files /dev/null and b/public/terrain/19/858472/353875.terrain differ diff --git a/public/terrain/19/858472/353876.terrain b/public/terrain/19/858472/353876.terrain new file mode 100644 index 000000000..67aca6cbc Binary files /dev/null and b/public/terrain/19/858472/353876.terrain differ diff --git a/public/terrain/19/858472/353877.terrain b/public/terrain/19/858472/353877.terrain new file mode 100644 index 000000000..323b2b147 Binary files /dev/null and b/public/terrain/19/858472/353877.terrain differ diff --git a/public/terrain/19/858472/353878.terrain b/public/terrain/19/858472/353878.terrain new file mode 100644 index 000000000..8ac5d417b Binary files /dev/null and b/public/terrain/19/858472/353878.terrain differ diff --git a/public/terrain/19/858472/353879.terrain b/public/terrain/19/858472/353879.terrain new file mode 100644 index 000000000..b7f60171e Binary files /dev/null and b/public/terrain/19/858472/353879.terrain differ diff --git a/public/terrain/19/858472/353880.terrain b/public/terrain/19/858472/353880.terrain new file mode 100644 index 000000000..88f91deb4 Binary files /dev/null and b/public/terrain/19/858472/353880.terrain differ diff --git a/public/terrain/19/858472/353881.terrain b/public/terrain/19/858472/353881.terrain new file mode 100644 index 000000000..f363c5575 Binary files /dev/null and b/public/terrain/19/858472/353881.terrain differ diff --git a/public/terrain/19/858472/353882.terrain b/public/terrain/19/858472/353882.terrain new file mode 100644 index 000000000..612ef9c69 Binary files /dev/null and b/public/terrain/19/858472/353882.terrain differ diff --git a/public/terrain/19/858472/353883.terrain b/public/terrain/19/858472/353883.terrain new file mode 100644 index 000000000..005e92475 Binary files /dev/null and b/public/terrain/19/858472/353883.terrain differ diff --git a/public/terrain/19/858472/353884.terrain b/public/terrain/19/858472/353884.terrain new file mode 100644 index 000000000..88b5b2a0e Binary files /dev/null and b/public/terrain/19/858472/353884.terrain differ diff --git a/public/terrain/19/858472/353885.terrain b/public/terrain/19/858472/353885.terrain new file mode 100644 index 000000000..09f1f01e8 Binary files /dev/null and b/public/terrain/19/858472/353885.terrain differ diff --git a/public/terrain/19/858472/353886.terrain b/public/terrain/19/858472/353886.terrain new file mode 100644 index 000000000..c3b9cf596 Binary files /dev/null and b/public/terrain/19/858472/353886.terrain differ diff --git a/public/terrain/19/858472/353887.terrain b/public/terrain/19/858472/353887.terrain new file mode 100644 index 000000000..e5897cbb3 Binary files /dev/null and b/public/terrain/19/858472/353887.terrain differ diff --git a/public/terrain/19/858472/353888.terrain b/public/terrain/19/858472/353888.terrain new file mode 100644 index 000000000..7060e478b Binary files /dev/null and b/public/terrain/19/858472/353888.terrain differ diff --git a/public/terrain/19/858472/353889.terrain b/public/terrain/19/858472/353889.terrain new file mode 100644 index 000000000..586175b01 Binary files /dev/null and b/public/terrain/19/858472/353889.terrain differ diff --git a/public/terrain/19/858472/353890.terrain b/public/terrain/19/858472/353890.terrain new file mode 100644 index 000000000..f43ce901c Binary files /dev/null and b/public/terrain/19/858472/353890.terrain differ diff --git a/public/terrain/19/858472/353891.terrain b/public/terrain/19/858472/353891.terrain new file mode 100644 index 000000000..d1d193177 Binary files /dev/null and b/public/terrain/19/858472/353891.terrain differ diff --git a/public/terrain/19/858472/353892.terrain b/public/terrain/19/858472/353892.terrain new file mode 100644 index 000000000..755394741 Binary files /dev/null and b/public/terrain/19/858472/353892.terrain differ diff --git a/public/terrain/19/858472/353893.terrain b/public/terrain/19/858472/353893.terrain new file mode 100644 index 000000000..7307362d0 Binary files /dev/null and b/public/terrain/19/858472/353893.terrain differ diff --git a/public/terrain/19/858472/353894.terrain b/public/terrain/19/858472/353894.terrain new file mode 100644 index 000000000..b94c614cf Binary files /dev/null and b/public/terrain/19/858472/353894.terrain differ diff --git a/public/terrain/19/858472/353895.terrain b/public/terrain/19/858472/353895.terrain new file mode 100644 index 000000000..926f6d403 Binary files /dev/null and b/public/terrain/19/858472/353895.terrain differ diff --git a/public/terrain/19/858472/353896.terrain b/public/terrain/19/858472/353896.terrain new file mode 100644 index 000000000..d7206690f Binary files /dev/null and b/public/terrain/19/858472/353896.terrain differ diff --git a/public/terrain/19/858472/353897.terrain b/public/terrain/19/858472/353897.terrain new file mode 100644 index 000000000..b0d91664e Binary files /dev/null and b/public/terrain/19/858472/353897.terrain differ diff --git a/public/terrain/19/858472/353898.terrain b/public/terrain/19/858472/353898.terrain new file mode 100644 index 000000000..42acc5e55 Binary files /dev/null and b/public/terrain/19/858472/353898.terrain differ diff --git a/public/terrain/19/858472/353899.terrain b/public/terrain/19/858472/353899.terrain new file mode 100644 index 000000000..c538ebc18 Binary files /dev/null and b/public/terrain/19/858472/353899.terrain differ diff --git a/public/terrain/19/858472/353900.terrain b/public/terrain/19/858472/353900.terrain new file mode 100644 index 000000000..8884bfd23 Binary files /dev/null and b/public/terrain/19/858472/353900.terrain differ diff --git a/public/terrain/19/858472/353901.terrain b/public/terrain/19/858472/353901.terrain new file mode 100644 index 000000000..2514f0d28 Binary files /dev/null and b/public/terrain/19/858472/353901.terrain differ diff --git a/public/terrain/19/858472/353902.terrain b/public/terrain/19/858472/353902.terrain new file mode 100644 index 000000000..037f14068 Binary files /dev/null and b/public/terrain/19/858472/353902.terrain differ diff --git a/public/terrain/19/858472/353903.terrain b/public/terrain/19/858472/353903.terrain new file mode 100644 index 000000000..7253c7077 Binary files /dev/null and b/public/terrain/19/858472/353903.terrain differ diff --git a/public/terrain/19/858472/353904.terrain b/public/terrain/19/858472/353904.terrain new file mode 100644 index 000000000..b13d57afc Binary files /dev/null and b/public/terrain/19/858472/353904.terrain differ diff --git a/public/terrain/19/858472/353905.terrain b/public/terrain/19/858472/353905.terrain new file mode 100644 index 000000000..e05939899 Binary files /dev/null and b/public/terrain/19/858472/353905.terrain differ diff --git a/public/terrain/19/858472/353906.terrain b/public/terrain/19/858472/353906.terrain new file mode 100644 index 000000000..555c2d376 Binary files /dev/null and b/public/terrain/19/858472/353906.terrain differ diff --git a/public/terrain/19/858472/353907.terrain b/public/terrain/19/858472/353907.terrain new file mode 100644 index 000000000..3a354ea5a Binary files /dev/null and b/public/terrain/19/858472/353907.terrain differ diff --git a/public/terrain/19/858472/353908.terrain b/public/terrain/19/858472/353908.terrain new file mode 100644 index 000000000..1e4458a90 Binary files /dev/null and b/public/terrain/19/858472/353908.terrain differ diff --git a/public/terrain/19/858472/353909.terrain b/public/terrain/19/858472/353909.terrain new file mode 100644 index 000000000..8b2e9d508 Binary files /dev/null and b/public/terrain/19/858472/353909.terrain differ diff --git a/public/terrain/19/858472/353910.terrain b/public/terrain/19/858472/353910.terrain new file mode 100644 index 000000000..9e18ac7bc Binary files /dev/null and b/public/terrain/19/858472/353910.terrain differ diff --git a/public/terrain/19/858472/353911.terrain b/public/terrain/19/858472/353911.terrain new file mode 100644 index 000000000..2981318b1 Binary files /dev/null and b/public/terrain/19/858472/353911.terrain differ diff --git a/public/terrain/19/858472/353912.terrain b/public/terrain/19/858472/353912.terrain new file mode 100644 index 000000000..154e0ce92 Binary files /dev/null and b/public/terrain/19/858472/353912.terrain differ diff --git a/public/terrain/19/858472/353913.terrain b/public/terrain/19/858472/353913.terrain new file mode 100644 index 000000000..065e8fa97 Binary files /dev/null and b/public/terrain/19/858472/353913.terrain differ diff --git a/public/terrain/19/858472/353914.terrain b/public/terrain/19/858472/353914.terrain new file mode 100644 index 000000000..554e022ce Binary files /dev/null and b/public/terrain/19/858472/353914.terrain differ diff --git a/public/terrain/19/858472/353915.terrain b/public/terrain/19/858472/353915.terrain new file mode 100644 index 000000000..c7c524b1c Binary files /dev/null and b/public/terrain/19/858472/353915.terrain differ diff --git a/public/terrain/19/858472/353916.terrain b/public/terrain/19/858472/353916.terrain new file mode 100644 index 000000000..9c6984e7d Binary files /dev/null and b/public/terrain/19/858472/353916.terrain differ diff --git a/public/terrain/19/858472/353917.terrain b/public/terrain/19/858472/353917.terrain new file mode 100644 index 000000000..b59969411 Binary files /dev/null and b/public/terrain/19/858472/353917.terrain differ diff --git a/public/terrain/19/858472/353918.terrain b/public/terrain/19/858472/353918.terrain new file mode 100644 index 000000000..dcf1a72cc Binary files /dev/null and b/public/terrain/19/858472/353918.terrain differ diff --git a/public/terrain/19/858472/353919.terrain b/public/terrain/19/858472/353919.terrain new file mode 100644 index 000000000..332a256d2 Binary files /dev/null and b/public/terrain/19/858472/353919.terrain differ diff --git a/public/terrain/19/858472/353920.terrain b/public/terrain/19/858472/353920.terrain new file mode 100644 index 000000000..46a66c8e3 Binary files /dev/null and b/public/terrain/19/858472/353920.terrain differ diff --git a/public/terrain/19/858472/353921.terrain b/public/terrain/19/858472/353921.terrain new file mode 100644 index 000000000..91cbb59df Binary files /dev/null and b/public/terrain/19/858472/353921.terrain differ diff --git a/public/terrain/19/858472/353922.terrain b/public/terrain/19/858472/353922.terrain new file mode 100644 index 000000000..f59fddda7 Binary files /dev/null and b/public/terrain/19/858472/353922.terrain differ diff --git a/public/terrain/19/858472/353923.terrain b/public/terrain/19/858472/353923.terrain new file mode 100644 index 000000000..5ef7a212f Binary files /dev/null and b/public/terrain/19/858472/353923.terrain differ diff --git a/public/terrain/19/858472/353924.terrain b/public/terrain/19/858472/353924.terrain new file mode 100644 index 000000000..674cb4ed4 Binary files /dev/null and b/public/terrain/19/858472/353924.terrain differ diff --git a/public/terrain/19/858472/353925.terrain b/public/terrain/19/858472/353925.terrain new file mode 100644 index 000000000..cb2422174 Binary files /dev/null and b/public/terrain/19/858472/353925.terrain differ diff --git a/public/terrain/19/858472/353926.terrain b/public/terrain/19/858472/353926.terrain new file mode 100644 index 000000000..c5535d987 Binary files /dev/null and b/public/terrain/19/858472/353926.terrain differ diff --git a/public/terrain/19/858472/353927.terrain b/public/terrain/19/858472/353927.terrain new file mode 100644 index 000000000..e0fa4d971 Binary files /dev/null and b/public/terrain/19/858472/353927.terrain differ diff --git a/public/terrain/19/858472/353928.terrain b/public/terrain/19/858472/353928.terrain new file mode 100644 index 000000000..c16b1d24e Binary files /dev/null and b/public/terrain/19/858472/353928.terrain differ diff --git a/public/terrain/19/858472/353929.terrain b/public/terrain/19/858472/353929.terrain new file mode 100644 index 000000000..23a49fa21 Binary files /dev/null and b/public/terrain/19/858472/353929.terrain differ diff --git a/public/terrain/19/858472/353930.terrain b/public/terrain/19/858472/353930.terrain new file mode 100644 index 000000000..865fee0db Binary files /dev/null and b/public/terrain/19/858472/353930.terrain differ diff --git a/public/terrain/19/858472/353931.terrain b/public/terrain/19/858472/353931.terrain new file mode 100644 index 000000000..b8b3afea3 Binary files /dev/null and b/public/terrain/19/858472/353931.terrain differ diff --git a/public/terrain/19/858472/353932.terrain b/public/terrain/19/858472/353932.terrain new file mode 100644 index 000000000..b37b08722 Binary files /dev/null and b/public/terrain/19/858472/353932.terrain differ diff --git a/public/terrain/19/858472/353933.terrain b/public/terrain/19/858472/353933.terrain new file mode 100644 index 000000000..52b1a560d Binary files /dev/null and b/public/terrain/19/858472/353933.terrain differ diff --git a/public/terrain/19/858472/353934.terrain b/public/terrain/19/858472/353934.terrain new file mode 100644 index 000000000..50f456296 Binary files /dev/null and b/public/terrain/19/858472/353934.terrain differ diff --git a/public/terrain/19/858472/353935.terrain b/public/terrain/19/858472/353935.terrain new file mode 100644 index 000000000..b8e850fc4 Binary files /dev/null and b/public/terrain/19/858472/353935.terrain differ diff --git a/public/terrain/19/858472/353936.terrain b/public/terrain/19/858472/353936.terrain new file mode 100644 index 000000000..ca6d596d1 Binary files /dev/null and b/public/terrain/19/858472/353936.terrain differ diff --git a/public/terrain/19/858472/353937.terrain b/public/terrain/19/858472/353937.terrain new file mode 100644 index 000000000..c5d520985 Binary files /dev/null and b/public/terrain/19/858472/353937.terrain differ diff --git a/public/terrain/19/858472/353938.terrain b/public/terrain/19/858472/353938.terrain new file mode 100644 index 000000000..fd294d461 Binary files /dev/null and b/public/terrain/19/858472/353938.terrain differ diff --git a/public/terrain/19/858472/353939.terrain b/public/terrain/19/858472/353939.terrain new file mode 100644 index 000000000..26b71b69a Binary files /dev/null and b/public/terrain/19/858472/353939.terrain differ diff --git a/public/terrain/19/858472/353940.terrain b/public/terrain/19/858472/353940.terrain new file mode 100644 index 000000000..f809bd0d5 Binary files /dev/null and b/public/terrain/19/858472/353940.terrain differ diff --git a/public/terrain/19/858472/353941.terrain b/public/terrain/19/858472/353941.terrain new file mode 100644 index 000000000..f92f41094 Binary files /dev/null and b/public/terrain/19/858472/353941.terrain differ diff --git a/public/terrain/19/858472/353942.terrain b/public/terrain/19/858472/353942.terrain new file mode 100644 index 000000000..c99eae051 Binary files /dev/null and b/public/terrain/19/858472/353942.terrain differ diff --git a/public/terrain/19/858472/353943.terrain b/public/terrain/19/858472/353943.terrain new file mode 100644 index 000000000..b0805f6dd Binary files /dev/null and b/public/terrain/19/858472/353943.terrain differ diff --git a/public/terrain/19/858472/353944.terrain b/public/terrain/19/858472/353944.terrain new file mode 100644 index 000000000..704da29ab Binary files /dev/null and b/public/terrain/19/858472/353944.terrain differ diff --git a/public/terrain/19/858472/353945.terrain b/public/terrain/19/858472/353945.terrain new file mode 100644 index 000000000..7000f5821 Binary files /dev/null and b/public/terrain/19/858472/353945.terrain differ diff --git a/public/terrain/19/858472/353946.terrain b/public/terrain/19/858472/353946.terrain new file mode 100644 index 000000000..298cf14e6 Binary files /dev/null and b/public/terrain/19/858472/353946.terrain differ diff --git a/public/terrain/19/858472/353947.terrain b/public/terrain/19/858472/353947.terrain new file mode 100644 index 000000000..d1fb18507 Binary files /dev/null and b/public/terrain/19/858472/353947.terrain differ diff --git a/public/terrain/19/858472/353948.terrain b/public/terrain/19/858472/353948.terrain new file mode 100644 index 000000000..6eb8d907b Binary files /dev/null and b/public/terrain/19/858472/353948.terrain differ diff --git a/public/terrain/19/858472/353949.terrain b/public/terrain/19/858472/353949.terrain new file mode 100644 index 000000000..db02b901e Binary files /dev/null and b/public/terrain/19/858472/353949.terrain differ diff --git a/public/terrain/19/858472/353950.terrain b/public/terrain/19/858472/353950.terrain new file mode 100644 index 000000000..4aaab323f Binary files /dev/null and b/public/terrain/19/858472/353950.terrain differ diff --git a/public/terrain/19/858472/353951.terrain b/public/terrain/19/858472/353951.terrain new file mode 100644 index 000000000..fc33bbbe2 Binary files /dev/null and b/public/terrain/19/858472/353951.terrain differ diff --git a/public/terrain/19/858472/353952.terrain b/public/terrain/19/858472/353952.terrain new file mode 100644 index 000000000..2e75b41a5 Binary files /dev/null and b/public/terrain/19/858472/353952.terrain differ diff --git a/public/terrain/19/858472/353953.terrain b/public/terrain/19/858472/353953.terrain new file mode 100644 index 000000000..65c7531e9 Binary files /dev/null and b/public/terrain/19/858472/353953.terrain differ diff --git a/public/terrain/19/858472/353954.terrain b/public/terrain/19/858472/353954.terrain new file mode 100644 index 000000000..eeaf1e51e Binary files /dev/null and b/public/terrain/19/858472/353954.terrain differ diff --git a/public/terrain/19/858472/353955.terrain b/public/terrain/19/858472/353955.terrain new file mode 100644 index 000000000..fc622491c Binary files /dev/null and b/public/terrain/19/858472/353955.terrain differ diff --git a/public/terrain/19/858472/353956.terrain b/public/terrain/19/858472/353956.terrain new file mode 100644 index 000000000..eed2e0a12 Binary files /dev/null and b/public/terrain/19/858472/353956.terrain differ diff --git a/public/terrain/19/858472/353957.terrain b/public/terrain/19/858472/353957.terrain new file mode 100644 index 000000000..593780321 Binary files /dev/null and b/public/terrain/19/858472/353957.terrain differ diff --git a/public/terrain/19/858472/353958.terrain b/public/terrain/19/858472/353958.terrain new file mode 100644 index 000000000..1ce329f42 Binary files /dev/null and b/public/terrain/19/858472/353958.terrain differ diff --git a/public/terrain/19/858472/353959.terrain b/public/terrain/19/858472/353959.terrain new file mode 100644 index 000000000..fa800b80a Binary files /dev/null and b/public/terrain/19/858472/353959.terrain differ diff --git a/public/terrain/19/858472/353960.terrain b/public/terrain/19/858472/353960.terrain new file mode 100644 index 000000000..3d5b833b6 Binary files /dev/null and b/public/terrain/19/858472/353960.terrain differ diff --git a/public/terrain/19/858472/353961.terrain b/public/terrain/19/858472/353961.terrain new file mode 100644 index 000000000..ee2432273 Binary files /dev/null and b/public/terrain/19/858472/353961.terrain differ diff --git a/public/terrain/19/858472/353962.terrain b/public/terrain/19/858472/353962.terrain new file mode 100644 index 000000000..d5aaa7396 Binary files /dev/null and b/public/terrain/19/858472/353962.terrain differ diff --git a/public/terrain/19/858472/353963.terrain b/public/terrain/19/858472/353963.terrain new file mode 100644 index 000000000..68a85f944 Binary files /dev/null and b/public/terrain/19/858472/353963.terrain differ diff --git a/public/terrain/19/858472/353964.terrain b/public/terrain/19/858472/353964.terrain new file mode 100644 index 000000000..3684a3d12 Binary files /dev/null and b/public/terrain/19/858472/353964.terrain differ diff --git a/public/terrain/19/858472/353965.terrain b/public/terrain/19/858472/353965.terrain new file mode 100644 index 000000000..58fc8c1dc Binary files /dev/null and b/public/terrain/19/858472/353965.terrain differ diff --git a/public/terrain/19/858472/353966.terrain b/public/terrain/19/858472/353966.terrain new file mode 100644 index 000000000..f2711c391 Binary files /dev/null and b/public/terrain/19/858472/353966.terrain differ diff --git a/public/terrain/19/858472/353967.terrain b/public/terrain/19/858472/353967.terrain new file mode 100644 index 000000000..a422d61b8 Binary files /dev/null and b/public/terrain/19/858472/353967.terrain differ diff --git a/public/terrain/19/858472/353968.terrain b/public/terrain/19/858472/353968.terrain new file mode 100644 index 000000000..747de8e83 Binary files /dev/null and b/public/terrain/19/858472/353968.terrain differ diff --git a/public/terrain/19/858472/353969.terrain b/public/terrain/19/858472/353969.terrain new file mode 100644 index 000000000..b551bf8ab Binary files /dev/null and b/public/terrain/19/858472/353969.terrain differ diff --git a/public/terrain/19/858472/353970.terrain b/public/terrain/19/858472/353970.terrain new file mode 100644 index 000000000..b7c9c39df Binary files /dev/null and b/public/terrain/19/858472/353970.terrain differ diff --git a/public/terrain/19/858472/353971.terrain b/public/terrain/19/858472/353971.terrain new file mode 100644 index 000000000..c71847b91 Binary files /dev/null and b/public/terrain/19/858472/353971.terrain differ diff --git a/public/terrain/19/858472/353972.terrain b/public/terrain/19/858472/353972.terrain new file mode 100644 index 000000000..daaa490b3 Binary files /dev/null and b/public/terrain/19/858472/353972.terrain differ diff --git a/public/terrain/19/858472/353973.terrain b/public/terrain/19/858472/353973.terrain new file mode 100644 index 000000000..a771925ce Binary files /dev/null and b/public/terrain/19/858472/353973.terrain differ diff --git a/public/terrain/19/858472/353974.terrain b/public/terrain/19/858472/353974.terrain new file mode 100644 index 000000000..967493a0a Binary files /dev/null and b/public/terrain/19/858472/353974.terrain differ diff --git a/public/terrain/19/858472/353975.terrain b/public/terrain/19/858472/353975.terrain new file mode 100644 index 000000000..e098fc3bb Binary files /dev/null and b/public/terrain/19/858472/353975.terrain differ diff --git a/public/terrain/19/858472/353976.terrain b/public/terrain/19/858472/353976.terrain new file mode 100644 index 000000000..b3f18766d Binary files /dev/null and b/public/terrain/19/858472/353976.terrain differ diff --git a/public/terrain/19/858472/353977.terrain b/public/terrain/19/858472/353977.terrain new file mode 100644 index 000000000..68d79bbb8 Binary files /dev/null and b/public/terrain/19/858472/353977.terrain differ diff --git a/public/terrain/19/858472/353978.terrain b/public/terrain/19/858472/353978.terrain new file mode 100644 index 000000000..12f815db5 Binary files /dev/null and b/public/terrain/19/858472/353978.terrain differ diff --git a/public/terrain/19/858472/353979.terrain b/public/terrain/19/858472/353979.terrain new file mode 100644 index 000000000..4267a36ca Binary files /dev/null and b/public/terrain/19/858472/353979.terrain differ diff --git a/public/terrain/19/858472/353980.terrain b/public/terrain/19/858472/353980.terrain new file mode 100644 index 000000000..35dba547b Binary files /dev/null and b/public/terrain/19/858472/353980.terrain differ diff --git a/public/terrain/19/858472/353981.terrain b/public/terrain/19/858472/353981.terrain new file mode 100644 index 000000000..59f509cf3 Binary files /dev/null and b/public/terrain/19/858472/353981.terrain differ diff --git a/public/terrain/19/858472/353982.terrain b/public/terrain/19/858472/353982.terrain new file mode 100644 index 000000000..c4860b87a Binary files /dev/null and b/public/terrain/19/858472/353982.terrain differ diff --git a/public/terrain/19/858472/353983.terrain b/public/terrain/19/858472/353983.terrain new file mode 100644 index 000000000..1d85e861a Binary files /dev/null and b/public/terrain/19/858472/353983.terrain differ diff --git a/public/terrain/19/858472/353984.terrain b/public/terrain/19/858472/353984.terrain new file mode 100644 index 000000000..85be0a179 Binary files /dev/null and b/public/terrain/19/858472/353984.terrain differ diff --git a/public/terrain/19/858472/353985.terrain b/public/terrain/19/858472/353985.terrain new file mode 100644 index 000000000..3bf09aff9 Binary files /dev/null and b/public/terrain/19/858472/353985.terrain differ diff --git a/public/terrain/19/858472/353986.terrain b/public/terrain/19/858472/353986.terrain new file mode 100644 index 000000000..bacdc1cb1 Binary files /dev/null and b/public/terrain/19/858472/353986.terrain differ diff --git a/public/terrain/19/858472/353987.terrain b/public/terrain/19/858472/353987.terrain new file mode 100644 index 000000000..f1dd90d2d Binary files /dev/null and b/public/terrain/19/858472/353987.terrain differ diff --git a/public/terrain/19/858472/353988.terrain b/public/terrain/19/858472/353988.terrain new file mode 100644 index 000000000..34bdb21ee Binary files /dev/null and b/public/terrain/19/858472/353988.terrain differ diff --git a/public/terrain/19/858472/353989.terrain b/public/terrain/19/858472/353989.terrain new file mode 100644 index 000000000..91032bd9f Binary files /dev/null and b/public/terrain/19/858472/353989.terrain differ diff --git a/public/terrain/19/858472/353990.terrain b/public/terrain/19/858472/353990.terrain new file mode 100644 index 000000000..1e5478ee2 Binary files /dev/null and b/public/terrain/19/858472/353990.terrain differ diff --git a/public/terrain/19/858472/353991.terrain b/public/terrain/19/858472/353991.terrain new file mode 100644 index 000000000..1cdea37d9 Binary files /dev/null and b/public/terrain/19/858472/353991.terrain differ diff --git a/public/terrain/19/858472/353992.terrain b/public/terrain/19/858472/353992.terrain new file mode 100644 index 000000000..34c4a740f Binary files /dev/null and b/public/terrain/19/858472/353992.terrain differ diff --git a/public/terrain/19/858472/353993.terrain b/public/terrain/19/858472/353993.terrain new file mode 100644 index 000000000..577fcbfad Binary files /dev/null and b/public/terrain/19/858472/353993.terrain differ diff --git a/public/terrain/19/858472/353994.terrain b/public/terrain/19/858472/353994.terrain new file mode 100644 index 000000000..c3b3f682d Binary files /dev/null and b/public/terrain/19/858472/353994.terrain differ diff --git a/public/terrain/19/858472/353995.terrain b/public/terrain/19/858472/353995.terrain new file mode 100644 index 000000000..f1d78d323 Binary files /dev/null and b/public/terrain/19/858472/353995.terrain differ diff --git a/public/terrain/19/858472/353996.terrain b/public/terrain/19/858472/353996.terrain new file mode 100644 index 000000000..0f2303cfe Binary files /dev/null and b/public/terrain/19/858472/353996.terrain differ diff --git a/public/terrain/19/858472/353997.terrain b/public/terrain/19/858472/353997.terrain new file mode 100644 index 000000000..a217bbb02 Binary files /dev/null and b/public/terrain/19/858472/353997.terrain differ diff --git a/public/terrain/19/858472/353998.terrain b/public/terrain/19/858472/353998.terrain new file mode 100644 index 000000000..ec3a95695 Binary files /dev/null and b/public/terrain/19/858472/353998.terrain differ diff --git a/public/terrain/19/858472/353999.terrain b/public/terrain/19/858472/353999.terrain new file mode 100644 index 000000000..a6ff3243b Binary files /dev/null and b/public/terrain/19/858472/353999.terrain differ diff --git a/public/terrain/19/858472/354000.terrain b/public/terrain/19/858472/354000.terrain new file mode 100644 index 000000000..4e462bb81 Binary files /dev/null and b/public/terrain/19/858472/354000.terrain differ diff --git a/public/terrain/19/858472/354001.terrain b/public/terrain/19/858472/354001.terrain new file mode 100644 index 000000000..e6751733b Binary files /dev/null and b/public/terrain/19/858472/354001.terrain differ diff --git a/public/terrain/19/858472/354002.terrain b/public/terrain/19/858472/354002.terrain new file mode 100644 index 000000000..dea5a5a75 Binary files /dev/null and b/public/terrain/19/858472/354002.terrain differ diff --git a/public/terrain/19/858472/354003.terrain b/public/terrain/19/858472/354003.terrain new file mode 100644 index 000000000..8eaaf5184 Binary files /dev/null and b/public/terrain/19/858472/354003.terrain differ diff --git a/public/terrain/19/858472/354004.terrain b/public/terrain/19/858472/354004.terrain new file mode 100644 index 000000000..05c115672 Binary files /dev/null and b/public/terrain/19/858472/354004.terrain differ diff --git a/public/terrain/19/858472/354005.terrain b/public/terrain/19/858472/354005.terrain new file mode 100644 index 000000000..2b790244a Binary files /dev/null and b/public/terrain/19/858472/354005.terrain differ diff --git a/public/terrain/19/858472/354006.terrain b/public/terrain/19/858472/354006.terrain new file mode 100644 index 000000000..dde5d8041 Binary files /dev/null and b/public/terrain/19/858472/354006.terrain differ diff --git a/public/terrain/19/858472/354007.terrain b/public/terrain/19/858472/354007.terrain new file mode 100644 index 000000000..37f229ffa Binary files /dev/null and b/public/terrain/19/858472/354007.terrain differ diff --git a/public/terrain/19/858472/354008.terrain b/public/terrain/19/858472/354008.terrain new file mode 100644 index 000000000..a6973cb7f Binary files /dev/null and b/public/terrain/19/858472/354008.terrain differ diff --git a/public/terrain/19/858472/354009.terrain b/public/terrain/19/858472/354009.terrain new file mode 100644 index 000000000..9e8c7da53 Binary files /dev/null and b/public/terrain/19/858472/354009.terrain differ diff --git a/public/terrain/19/858472/354010.terrain b/public/terrain/19/858472/354010.terrain new file mode 100644 index 000000000..3268b2da2 Binary files /dev/null and b/public/terrain/19/858472/354010.terrain differ diff --git a/public/terrain/19/858472/354011.terrain b/public/terrain/19/858472/354011.terrain new file mode 100644 index 000000000..5dfeeca9f Binary files /dev/null and b/public/terrain/19/858472/354011.terrain differ diff --git a/public/terrain/19/858472/354012.terrain b/public/terrain/19/858472/354012.terrain new file mode 100644 index 000000000..c077414ed Binary files /dev/null and b/public/terrain/19/858472/354012.terrain differ diff --git a/public/terrain/19/858472/354013.terrain b/public/terrain/19/858472/354013.terrain new file mode 100644 index 000000000..5c99826f3 Binary files /dev/null and b/public/terrain/19/858472/354013.terrain differ diff --git a/public/terrain/19/858472/354014.terrain b/public/terrain/19/858472/354014.terrain new file mode 100644 index 000000000..41448fc18 Binary files /dev/null and b/public/terrain/19/858472/354014.terrain differ diff --git a/public/terrain/19/858472/354015.terrain b/public/terrain/19/858472/354015.terrain new file mode 100644 index 000000000..5daf54a0d Binary files /dev/null and b/public/terrain/19/858472/354015.terrain differ diff --git a/public/terrain/19/858472/354016.terrain b/public/terrain/19/858472/354016.terrain new file mode 100644 index 000000000..0a77de66c Binary files /dev/null and b/public/terrain/19/858472/354016.terrain differ diff --git a/public/terrain/19/858472/354017.terrain b/public/terrain/19/858472/354017.terrain new file mode 100644 index 000000000..dda90ce85 Binary files /dev/null and b/public/terrain/19/858472/354017.terrain differ diff --git a/public/terrain/19/858472/354018.terrain b/public/terrain/19/858472/354018.terrain new file mode 100644 index 000000000..13317bb18 Binary files /dev/null and b/public/terrain/19/858472/354018.terrain differ diff --git a/public/terrain/19/858472/354019.terrain b/public/terrain/19/858472/354019.terrain new file mode 100644 index 000000000..44ee5fbba Binary files /dev/null and b/public/terrain/19/858472/354019.terrain differ diff --git a/public/terrain/19/858472/354020.terrain b/public/terrain/19/858472/354020.terrain new file mode 100644 index 000000000..b1c6495c7 Binary files /dev/null and b/public/terrain/19/858472/354020.terrain differ diff --git a/public/terrain/19/858472/354021.terrain b/public/terrain/19/858472/354021.terrain new file mode 100644 index 000000000..f00d4dc05 Binary files /dev/null and b/public/terrain/19/858472/354021.terrain differ diff --git a/public/terrain/19/858472/354022.terrain b/public/terrain/19/858472/354022.terrain new file mode 100644 index 000000000..dc5d829de Binary files /dev/null and b/public/terrain/19/858472/354022.terrain differ diff --git a/public/terrain/19/858472/354023.terrain b/public/terrain/19/858472/354023.terrain new file mode 100644 index 000000000..b93cd3202 Binary files /dev/null and b/public/terrain/19/858472/354023.terrain differ diff --git a/public/terrain/19/858472/354024.terrain b/public/terrain/19/858472/354024.terrain new file mode 100644 index 000000000..db89a5cd6 Binary files /dev/null and b/public/terrain/19/858472/354024.terrain differ diff --git a/public/terrain/19/858472/354025.terrain b/public/terrain/19/858472/354025.terrain new file mode 100644 index 000000000..857b4ddca Binary files /dev/null and b/public/terrain/19/858472/354025.terrain differ diff --git a/public/terrain/19/858472/354026.terrain b/public/terrain/19/858472/354026.terrain new file mode 100644 index 000000000..daec4978f Binary files /dev/null and b/public/terrain/19/858472/354026.terrain differ diff --git a/public/terrain/19/858472/354027.terrain b/public/terrain/19/858472/354027.terrain new file mode 100644 index 000000000..7c5c61b6d Binary files /dev/null and b/public/terrain/19/858472/354027.terrain differ diff --git a/public/terrain/19/858472/354028.terrain b/public/terrain/19/858472/354028.terrain new file mode 100644 index 000000000..14063d315 Binary files /dev/null and b/public/terrain/19/858472/354028.terrain differ diff --git a/public/terrain/19/858472/354029.terrain b/public/terrain/19/858472/354029.terrain new file mode 100644 index 000000000..55884d131 Binary files /dev/null and b/public/terrain/19/858472/354029.terrain differ diff --git a/public/terrain/19/858472/354030.terrain b/public/terrain/19/858472/354030.terrain new file mode 100644 index 000000000..bd98aeaf1 Binary files /dev/null and b/public/terrain/19/858472/354030.terrain differ diff --git a/public/terrain/19/858472/354031.terrain b/public/terrain/19/858472/354031.terrain new file mode 100644 index 000000000..181036957 Binary files /dev/null and b/public/terrain/19/858472/354031.terrain differ diff --git a/public/terrain/19/858472/354032.terrain b/public/terrain/19/858472/354032.terrain new file mode 100644 index 000000000..3afe4c7e4 Binary files /dev/null and b/public/terrain/19/858472/354032.terrain differ diff --git a/public/terrain/19/858472/354033.terrain b/public/terrain/19/858472/354033.terrain new file mode 100644 index 000000000..aa2fbe2f5 Binary files /dev/null and b/public/terrain/19/858472/354033.terrain differ diff --git a/public/terrain/19/858472/354034.terrain b/public/terrain/19/858472/354034.terrain new file mode 100644 index 000000000..e1e622c67 Binary files /dev/null and b/public/terrain/19/858472/354034.terrain differ diff --git a/public/terrain/19/858472/354035.terrain b/public/terrain/19/858472/354035.terrain new file mode 100644 index 000000000..967ebc5af Binary files /dev/null and b/public/terrain/19/858472/354035.terrain differ diff --git a/public/terrain/19/858472/354036.terrain b/public/terrain/19/858472/354036.terrain new file mode 100644 index 000000000..1bdeeac61 Binary files /dev/null and b/public/terrain/19/858472/354036.terrain differ diff --git a/public/terrain/19/858472/354037.terrain b/public/terrain/19/858472/354037.terrain new file mode 100644 index 000000000..b9b9213d0 Binary files /dev/null and b/public/terrain/19/858472/354037.terrain differ diff --git a/public/terrain/19/858472/354038.terrain b/public/terrain/19/858472/354038.terrain new file mode 100644 index 000000000..1e1813e15 Binary files /dev/null and b/public/terrain/19/858472/354038.terrain differ diff --git a/public/terrain/19/858472/354039.terrain b/public/terrain/19/858472/354039.terrain new file mode 100644 index 000000000..e527957eb Binary files /dev/null and b/public/terrain/19/858472/354039.terrain differ diff --git a/public/terrain/19/858472/354040.terrain b/public/terrain/19/858472/354040.terrain new file mode 100644 index 000000000..3ee4a92e2 Binary files /dev/null and b/public/terrain/19/858472/354040.terrain differ diff --git a/public/terrain/19/858472/354041.terrain b/public/terrain/19/858472/354041.terrain new file mode 100644 index 000000000..09edd1b42 Binary files /dev/null and b/public/terrain/19/858472/354041.terrain differ diff --git a/public/terrain/19/858472/354042.terrain b/public/terrain/19/858472/354042.terrain new file mode 100644 index 000000000..bcb1b6f53 Binary files /dev/null and b/public/terrain/19/858472/354042.terrain differ diff --git a/public/terrain/19/858472/354043.terrain b/public/terrain/19/858472/354043.terrain new file mode 100644 index 000000000..9a60a1c7e Binary files /dev/null and b/public/terrain/19/858472/354043.terrain differ diff --git a/public/terrain/19/858472/354044.terrain b/public/terrain/19/858472/354044.terrain new file mode 100644 index 000000000..c05a24139 Binary files /dev/null and b/public/terrain/19/858472/354044.terrain differ diff --git a/public/terrain/19/858472/354045.terrain b/public/terrain/19/858472/354045.terrain new file mode 100644 index 000000000..c7b936653 Binary files /dev/null and b/public/terrain/19/858472/354045.terrain differ diff --git a/public/terrain/19/858472/354046.terrain b/public/terrain/19/858472/354046.terrain new file mode 100644 index 000000000..2b85fa111 Binary files /dev/null and b/public/terrain/19/858472/354046.terrain differ diff --git a/public/terrain/19/858472/354047.terrain b/public/terrain/19/858472/354047.terrain new file mode 100644 index 000000000..e7fe6054a Binary files /dev/null and b/public/terrain/19/858472/354047.terrain differ diff --git a/public/terrain/19/858472/354048.terrain b/public/terrain/19/858472/354048.terrain new file mode 100644 index 000000000..2a5c660c9 Binary files /dev/null and b/public/terrain/19/858472/354048.terrain differ diff --git a/public/terrain/19/858472/354049.terrain b/public/terrain/19/858472/354049.terrain new file mode 100644 index 000000000..d63683c40 Binary files /dev/null and b/public/terrain/19/858472/354049.terrain differ diff --git a/public/terrain/19/858472/354050.terrain b/public/terrain/19/858472/354050.terrain new file mode 100644 index 000000000..6a52ecfe3 Binary files /dev/null and b/public/terrain/19/858472/354050.terrain differ diff --git a/public/terrain/19/858472/354051.terrain b/public/terrain/19/858472/354051.terrain new file mode 100644 index 000000000..1887af472 Binary files /dev/null and b/public/terrain/19/858472/354051.terrain differ diff --git a/public/terrain/19/858472/354052.terrain b/public/terrain/19/858472/354052.terrain new file mode 100644 index 000000000..021640dfe Binary files /dev/null and b/public/terrain/19/858472/354052.terrain differ diff --git a/public/terrain/19/858472/354053.terrain b/public/terrain/19/858472/354053.terrain new file mode 100644 index 000000000..33fe0751c Binary files /dev/null and b/public/terrain/19/858472/354053.terrain differ diff --git a/public/terrain/19/858472/354054.terrain b/public/terrain/19/858472/354054.terrain new file mode 100644 index 000000000..c5f57f648 Binary files /dev/null and b/public/terrain/19/858472/354054.terrain differ diff --git a/public/terrain/19/858472/354055.terrain b/public/terrain/19/858472/354055.terrain new file mode 100644 index 000000000..865cc7990 Binary files /dev/null and b/public/terrain/19/858472/354055.terrain differ diff --git a/public/terrain/19/858472/354056.terrain b/public/terrain/19/858472/354056.terrain new file mode 100644 index 000000000..f065edbd5 Binary files /dev/null and b/public/terrain/19/858472/354056.terrain differ diff --git a/public/terrain/19/858472/354057.terrain b/public/terrain/19/858472/354057.terrain new file mode 100644 index 000000000..795ae388e Binary files /dev/null and b/public/terrain/19/858472/354057.terrain differ diff --git a/public/terrain/19/858472/354058.terrain b/public/terrain/19/858472/354058.terrain new file mode 100644 index 000000000..ab40c9000 Binary files /dev/null and b/public/terrain/19/858472/354058.terrain differ diff --git a/public/terrain/19/858472/354059.terrain b/public/terrain/19/858472/354059.terrain new file mode 100644 index 000000000..8cad935ab Binary files /dev/null and b/public/terrain/19/858472/354059.terrain differ diff --git a/public/terrain/19/858473/353743.terrain b/public/terrain/19/858473/353743.terrain new file mode 100644 index 000000000..3e8019136 Binary files /dev/null and b/public/terrain/19/858473/353743.terrain differ diff --git a/public/terrain/19/858473/353744.terrain b/public/terrain/19/858473/353744.terrain new file mode 100644 index 000000000..6acac8fe9 Binary files /dev/null and b/public/terrain/19/858473/353744.terrain differ diff --git a/public/terrain/19/858473/353745.terrain b/public/terrain/19/858473/353745.terrain new file mode 100644 index 000000000..6af8660a5 Binary files /dev/null and b/public/terrain/19/858473/353745.terrain differ diff --git a/public/terrain/19/858473/353746.terrain b/public/terrain/19/858473/353746.terrain new file mode 100644 index 000000000..97a088da6 Binary files /dev/null and b/public/terrain/19/858473/353746.terrain differ diff --git a/public/terrain/19/858473/353747.terrain b/public/terrain/19/858473/353747.terrain new file mode 100644 index 000000000..cc1b358a3 Binary files /dev/null and b/public/terrain/19/858473/353747.terrain differ diff --git a/public/terrain/19/858473/353748.terrain b/public/terrain/19/858473/353748.terrain new file mode 100644 index 000000000..f98b4a230 Binary files /dev/null and b/public/terrain/19/858473/353748.terrain differ diff --git a/public/terrain/19/858473/353749.terrain b/public/terrain/19/858473/353749.terrain new file mode 100644 index 000000000..709eb2557 Binary files /dev/null and b/public/terrain/19/858473/353749.terrain differ diff --git a/public/terrain/19/858473/353750.terrain b/public/terrain/19/858473/353750.terrain new file mode 100644 index 000000000..dc3f4b91f Binary files /dev/null and b/public/terrain/19/858473/353750.terrain differ diff --git a/public/terrain/19/858473/353751.terrain b/public/terrain/19/858473/353751.terrain new file mode 100644 index 000000000..24a067833 Binary files /dev/null and b/public/terrain/19/858473/353751.terrain differ diff --git a/public/terrain/19/858473/353752.terrain b/public/terrain/19/858473/353752.terrain new file mode 100644 index 000000000..e6d8c37e5 Binary files /dev/null and b/public/terrain/19/858473/353752.terrain differ diff --git a/public/terrain/19/858473/353753.terrain b/public/terrain/19/858473/353753.terrain new file mode 100644 index 000000000..d192d2b36 Binary files /dev/null and b/public/terrain/19/858473/353753.terrain differ diff --git a/public/terrain/19/858473/353754.terrain b/public/terrain/19/858473/353754.terrain new file mode 100644 index 000000000..a48afa58d Binary files /dev/null and b/public/terrain/19/858473/353754.terrain differ diff --git a/public/terrain/19/858473/353755.terrain b/public/terrain/19/858473/353755.terrain new file mode 100644 index 000000000..a7bd63334 Binary files /dev/null and b/public/terrain/19/858473/353755.terrain differ diff --git a/public/terrain/19/858473/353756.terrain b/public/terrain/19/858473/353756.terrain new file mode 100644 index 000000000..c912599e3 Binary files /dev/null and b/public/terrain/19/858473/353756.terrain differ diff --git a/public/terrain/19/858473/353757.terrain b/public/terrain/19/858473/353757.terrain new file mode 100644 index 000000000..6f9cc92c0 Binary files /dev/null and b/public/terrain/19/858473/353757.terrain differ diff --git a/public/terrain/19/858473/353758.terrain b/public/terrain/19/858473/353758.terrain new file mode 100644 index 000000000..4f9d678cc Binary files /dev/null and b/public/terrain/19/858473/353758.terrain differ diff --git a/public/terrain/19/858473/353759.terrain b/public/terrain/19/858473/353759.terrain new file mode 100644 index 000000000..a7a176db2 Binary files /dev/null and b/public/terrain/19/858473/353759.terrain differ diff --git a/public/terrain/19/858473/353760.terrain b/public/terrain/19/858473/353760.terrain new file mode 100644 index 000000000..9bf514dee Binary files /dev/null and b/public/terrain/19/858473/353760.terrain differ diff --git a/public/terrain/19/858473/353761.terrain b/public/terrain/19/858473/353761.terrain new file mode 100644 index 000000000..967176388 Binary files /dev/null and b/public/terrain/19/858473/353761.terrain differ diff --git a/public/terrain/19/858473/353762.terrain b/public/terrain/19/858473/353762.terrain new file mode 100644 index 000000000..c237afa58 Binary files /dev/null and b/public/terrain/19/858473/353762.terrain differ diff --git a/public/terrain/19/858473/353763.terrain b/public/terrain/19/858473/353763.terrain new file mode 100644 index 000000000..0bc85b2fe Binary files /dev/null and b/public/terrain/19/858473/353763.terrain differ diff --git a/public/terrain/19/858473/353764.terrain b/public/terrain/19/858473/353764.terrain new file mode 100644 index 000000000..e356aec9f Binary files /dev/null and b/public/terrain/19/858473/353764.terrain differ diff --git a/public/terrain/19/858473/353765.terrain b/public/terrain/19/858473/353765.terrain new file mode 100644 index 000000000..f4244d32e Binary files /dev/null and b/public/terrain/19/858473/353765.terrain differ diff --git a/public/terrain/19/858473/353766.terrain b/public/terrain/19/858473/353766.terrain new file mode 100644 index 000000000..928c92322 Binary files /dev/null and b/public/terrain/19/858473/353766.terrain differ diff --git a/public/terrain/19/858473/353767.terrain b/public/terrain/19/858473/353767.terrain new file mode 100644 index 000000000..a0ed6baa6 Binary files /dev/null and b/public/terrain/19/858473/353767.terrain differ diff --git a/public/terrain/19/858473/353768.terrain b/public/terrain/19/858473/353768.terrain new file mode 100644 index 000000000..499386cee Binary files /dev/null and b/public/terrain/19/858473/353768.terrain differ diff --git a/public/terrain/19/858473/353769.terrain b/public/terrain/19/858473/353769.terrain new file mode 100644 index 000000000..e3f399240 Binary files /dev/null and b/public/terrain/19/858473/353769.terrain differ diff --git a/public/terrain/19/858473/353770.terrain b/public/terrain/19/858473/353770.terrain new file mode 100644 index 000000000..2666b00a8 Binary files /dev/null and b/public/terrain/19/858473/353770.terrain differ diff --git a/public/terrain/19/858473/353771.terrain b/public/terrain/19/858473/353771.terrain new file mode 100644 index 000000000..f8dbd3c65 Binary files /dev/null and b/public/terrain/19/858473/353771.terrain differ diff --git a/public/terrain/19/858473/353772.terrain b/public/terrain/19/858473/353772.terrain new file mode 100644 index 000000000..b42f30854 Binary files /dev/null and b/public/terrain/19/858473/353772.terrain differ diff --git a/public/terrain/19/858473/353773.terrain b/public/terrain/19/858473/353773.terrain new file mode 100644 index 000000000..1e5b32f7a Binary files /dev/null and b/public/terrain/19/858473/353773.terrain differ diff --git a/public/terrain/19/858473/353774.terrain b/public/terrain/19/858473/353774.terrain new file mode 100644 index 000000000..53042a147 Binary files /dev/null and b/public/terrain/19/858473/353774.terrain differ diff --git a/public/terrain/19/858473/353775.terrain b/public/terrain/19/858473/353775.terrain new file mode 100644 index 000000000..49853de66 Binary files /dev/null and b/public/terrain/19/858473/353775.terrain differ diff --git a/public/terrain/19/858473/353776.terrain b/public/terrain/19/858473/353776.terrain new file mode 100644 index 000000000..f3b2223d6 Binary files /dev/null and b/public/terrain/19/858473/353776.terrain differ diff --git a/public/terrain/19/858473/353777.terrain b/public/terrain/19/858473/353777.terrain new file mode 100644 index 000000000..55a7feba5 Binary files /dev/null and b/public/terrain/19/858473/353777.terrain differ diff --git a/public/terrain/19/858473/353778.terrain b/public/terrain/19/858473/353778.terrain new file mode 100644 index 000000000..45351dc44 Binary files /dev/null and b/public/terrain/19/858473/353778.terrain differ diff --git a/public/terrain/19/858473/353779.terrain b/public/terrain/19/858473/353779.terrain new file mode 100644 index 000000000..35683945e Binary files /dev/null and b/public/terrain/19/858473/353779.terrain differ diff --git a/public/terrain/19/858473/353780.terrain b/public/terrain/19/858473/353780.terrain new file mode 100644 index 000000000..aca5f664d Binary files /dev/null and b/public/terrain/19/858473/353780.terrain differ diff --git a/public/terrain/19/858473/353781.terrain b/public/terrain/19/858473/353781.terrain new file mode 100644 index 000000000..f67c7d306 Binary files /dev/null and b/public/terrain/19/858473/353781.terrain differ diff --git a/public/terrain/19/858473/353782.terrain b/public/terrain/19/858473/353782.terrain new file mode 100644 index 000000000..f7c86815a Binary files /dev/null and b/public/terrain/19/858473/353782.terrain differ diff --git a/public/terrain/19/858473/353783.terrain b/public/terrain/19/858473/353783.terrain new file mode 100644 index 000000000..41146856d Binary files /dev/null and b/public/terrain/19/858473/353783.terrain differ diff --git a/public/terrain/19/858473/353784.terrain b/public/terrain/19/858473/353784.terrain new file mode 100644 index 000000000..e353d30a1 Binary files /dev/null and b/public/terrain/19/858473/353784.terrain differ diff --git a/public/terrain/19/858473/353785.terrain b/public/terrain/19/858473/353785.terrain new file mode 100644 index 000000000..e63720fa6 Binary files /dev/null and b/public/terrain/19/858473/353785.terrain differ diff --git a/public/terrain/19/858473/353786.terrain b/public/terrain/19/858473/353786.terrain new file mode 100644 index 000000000..cdc5f7a7e Binary files /dev/null and b/public/terrain/19/858473/353786.terrain differ diff --git a/public/terrain/19/858473/353787.terrain b/public/terrain/19/858473/353787.terrain new file mode 100644 index 000000000..8129e45b1 Binary files /dev/null and b/public/terrain/19/858473/353787.terrain differ diff --git a/public/terrain/19/858473/353788.terrain b/public/terrain/19/858473/353788.terrain new file mode 100644 index 000000000..b12462fce Binary files /dev/null and b/public/terrain/19/858473/353788.terrain differ diff --git a/public/terrain/19/858473/353789.terrain b/public/terrain/19/858473/353789.terrain new file mode 100644 index 000000000..e027ae0e9 Binary files /dev/null and b/public/terrain/19/858473/353789.terrain differ diff --git a/public/terrain/19/858473/353790.terrain b/public/terrain/19/858473/353790.terrain new file mode 100644 index 000000000..a5ba14b50 Binary files /dev/null and b/public/terrain/19/858473/353790.terrain differ diff --git a/public/terrain/19/858473/353791.terrain b/public/terrain/19/858473/353791.terrain new file mode 100644 index 000000000..5727da444 Binary files /dev/null and b/public/terrain/19/858473/353791.terrain differ diff --git a/public/terrain/19/858473/353792.terrain b/public/terrain/19/858473/353792.terrain new file mode 100644 index 000000000..b0889ffe3 Binary files /dev/null and b/public/terrain/19/858473/353792.terrain differ diff --git a/public/terrain/19/858473/353793.terrain b/public/terrain/19/858473/353793.terrain new file mode 100644 index 000000000..76f42c08e Binary files /dev/null and b/public/terrain/19/858473/353793.terrain differ diff --git a/public/terrain/19/858473/353794.terrain b/public/terrain/19/858473/353794.terrain new file mode 100644 index 000000000..acfe18b2b Binary files /dev/null and b/public/terrain/19/858473/353794.terrain differ diff --git a/public/terrain/19/858473/353795.terrain b/public/terrain/19/858473/353795.terrain new file mode 100644 index 000000000..17356a40d Binary files /dev/null and b/public/terrain/19/858473/353795.terrain differ diff --git a/public/terrain/19/858473/353796.terrain b/public/terrain/19/858473/353796.terrain new file mode 100644 index 000000000..f714a906a Binary files /dev/null and b/public/terrain/19/858473/353796.terrain differ diff --git a/public/terrain/19/858473/353797.terrain b/public/terrain/19/858473/353797.terrain new file mode 100644 index 000000000..a8233850d Binary files /dev/null and b/public/terrain/19/858473/353797.terrain differ diff --git a/public/terrain/19/858473/353798.terrain b/public/terrain/19/858473/353798.terrain new file mode 100644 index 000000000..db72b2fac Binary files /dev/null and b/public/terrain/19/858473/353798.terrain differ diff --git a/public/terrain/19/858473/353799.terrain b/public/terrain/19/858473/353799.terrain new file mode 100644 index 000000000..3ad66c3ae Binary files /dev/null and b/public/terrain/19/858473/353799.terrain differ diff --git a/public/terrain/19/858473/353800.terrain b/public/terrain/19/858473/353800.terrain new file mode 100644 index 000000000..5c8cc8d03 Binary files /dev/null and b/public/terrain/19/858473/353800.terrain differ diff --git a/public/terrain/19/858473/353801.terrain b/public/terrain/19/858473/353801.terrain new file mode 100644 index 000000000..185511c77 Binary files /dev/null and b/public/terrain/19/858473/353801.terrain differ diff --git a/public/terrain/19/858473/353802.terrain b/public/terrain/19/858473/353802.terrain new file mode 100644 index 000000000..3604e5a27 Binary files /dev/null and b/public/terrain/19/858473/353802.terrain differ diff --git a/public/terrain/19/858473/353803.terrain b/public/terrain/19/858473/353803.terrain new file mode 100644 index 000000000..cc82ab263 Binary files /dev/null and b/public/terrain/19/858473/353803.terrain differ diff --git a/public/terrain/19/858473/353804.terrain b/public/terrain/19/858473/353804.terrain new file mode 100644 index 000000000..dadb033b0 Binary files /dev/null and b/public/terrain/19/858473/353804.terrain differ diff --git a/public/terrain/19/858473/353805.terrain b/public/terrain/19/858473/353805.terrain new file mode 100644 index 000000000..0a154af5b Binary files /dev/null and b/public/terrain/19/858473/353805.terrain differ diff --git a/public/terrain/19/858473/353806.terrain b/public/terrain/19/858473/353806.terrain new file mode 100644 index 000000000..d61c1a336 Binary files /dev/null and b/public/terrain/19/858473/353806.terrain differ diff --git a/public/terrain/19/858473/353807.terrain b/public/terrain/19/858473/353807.terrain new file mode 100644 index 000000000..4de40b31e Binary files /dev/null and b/public/terrain/19/858473/353807.terrain differ diff --git a/public/terrain/19/858473/353808.terrain b/public/terrain/19/858473/353808.terrain new file mode 100644 index 000000000..13050e9f7 Binary files /dev/null and b/public/terrain/19/858473/353808.terrain differ diff --git a/public/terrain/19/858473/353809.terrain b/public/terrain/19/858473/353809.terrain new file mode 100644 index 000000000..f5008ef24 Binary files /dev/null and b/public/terrain/19/858473/353809.terrain differ diff --git a/public/terrain/19/858473/353810.terrain b/public/terrain/19/858473/353810.terrain new file mode 100644 index 000000000..920c2c52d Binary files /dev/null and b/public/terrain/19/858473/353810.terrain differ diff --git a/public/terrain/19/858473/353811.terrain b/public/terrain/19/858473/353811.terrain new file mode 100644 index 000000000..45e2359ae Binary files /dev/null and b/public/terrain/19/858473/353811.terrain differ diff --git a/public/terrain/19/858473/353812.terrain b/public/terrain/19/858473/353812.terrain new file mode 100644 index 000000000..ee090459f Binary files /dev/null and b/public/terrain/19/858473/353812.terrain differ diff --git a/public/terrain/19/858473/353813.terrain b/public/terrain/19/858473/353813.terrain new file mode 100644 index 000000000..dd236d327 Binary files /dev/null and b/public/terrain/19/858473/353813.terrain differ diff --git a/public/terrain/19/858473/353814.terrain b/public/terrain/19/858473/353814.terrain new file mode 100644 index 000000000..95e8a6131 Binary files /dev/null and b/public/terrain/19/858473/353814.terrain differ diff --git a/public/terrain/19/858473/353815.terrain b/public/terrain/19/858473/353815.terrain new file mode 100644 index 000000000..672d80bf4 Binary files /dev/null and b/public/terrain/19/858473/353815.terrain differ diff --git a/public/terrain/19/858473/353816.terrain b/public/terrain/19/858473/353816.terrain new file mode 100644 index 000000000..d8f063911 Binary files /dev/null and b/public/terrain/19/858473/353816.terrain differ diff --git a/public/terrain/19/858473/353817.terrain b/public/terrain/19/858473/353817.terrain new file mode 100644 index 000000000..c2e78d5cb Binary files /dev/null and b/public/terrain/19/858473/353817.terrain differ diff --git a/public/terrain/19/858473/353818.terrain b/public/terrain/19/858473/353818.terrain new file mode 100644 index 000000000..b9a65a440 Binary files /dev/null and b/public/terrain/19/858473/353818.terrain differ diff --git a/public/terrain/19/858473/353819.terrain b/public/terrain/19/858473/353819.terrain new file mode 100644 index 000000000..97734d459 Binary files /dev/null and b/public/terrain/19/858473/353819.terrain differ diff --git a/public/terrain/19/858473/353820.terrain b/public/terrain/19/858473/353820.terrain new file mode 100644 index 000000000..b5445fd77 Binary files /dev/null and b/public/terrain/19/858473/353820.terrain differ diff --git a/public/terrain/19/858473/353821.terrain b/public/terrain/19/858473/353821.terrain new file mode 100644 index 000000000..c839a85fb Binary files /dev/null and b/public/terrain/19/858473/353821.terrain differ diff --git a/public/terrain/19/858473/353822.terrain b/public/terrain/19/858473/353822.terrain new file mode 100644 index 000000000..6e43bc4b4 Binary files /dev/null and b/public/terrain/19/858473/353822.terrain differ diff --git a/public/terrain/19/858473/353823.terrain b/public/terrain/19/858473/353823.terrain new file mode 100644 index 000000000..af6853d4e Binary files /dev/null and b/public/terrain/19/858473/353823.terrain differ diff --git a/public/terrain/19/858473/353824.terrain b/public/terrain/19/858473/353824.terrain new file mode 100644 index 000000000..dd3bb99b9 Binary files /dev/null and b/public/terrain/19/858473/353824.terrain differ diff --git a/public/terrain/19/858473/353825.terrain b/public/terrain/19/858473/353825.terrain new file mode 100644 index 000000000..5ce29fab2 Binary files /dev/null and b/public/terrain/19/858473/353825.terrain differ diff --git a/public/terrain/19/858473/353826.terrain b/public/terrain/19/858473/353826.terrain new file mode 100644 index 000000000..ee8fee3d5 Binary files /dev/null and b/public/terrain/19/858473/353826.terrain differ diff --git a/public/terrain/19/858473/353827.terrain b/public/terrain/19/858473/353827.terrain new file mode 100644 index 000000000..138231729 Binary files /dev/null and b/public/terrain/19/858473/353827.terrain differ diff --git a/public/terrain/19/858473/353828.terrain b/public/terrain/19/858473/353828.terrain new file mode 100644 index 000000000..f390c3085 Binary files /dev/null and b/public/terrain/19/858473/353828.terrain differ diff --git a/public/terrain/19/858473/353829.terrain b/public/terrain/19/858473/353829.terrain new file mode 100644 index 000000000..8623ae929 Binary files /dev/null and b/public/terrain/19/858473/353829.terrain differ diff --git a/public/terrain/19/858473/353830.terrain b/public/terrain/19/858473/353830.terrain new file mode 100644 index 000000000..f3391027f Binary files /dev/null and b/public/terrain/19/858473/353830.terrain differ diff --git a/public/terrain/19/858473/353831.terrain b/public/terrain/19/858473/353831.terrain new file mode 100644 index 000000000..4051b6b5d Binary files /dev/null and b/public/terrain/19/858473/353831.terrain differ diff --git a/public/terrain/19/858473/353832.terrain b/public/terrain/19/858473/353832.terrain new file mode 100644 index 000000000..43aeae09e Binary files /dev/null and b/public/terrain/19/858473/353832.terrain differ diff --git a/public/terrain/19/858473/353833.terrain b/public/terrain/19/858473/353833.terrain new file mode 100644 index 000000000..f2b99892a Binary files /dev/null and b/public/terrain/19/858473/353833.terrain differ diff --git a/public/terrain/19/858473/353834.terrain b/public/terrain/19/858473/353834.terrain new file mode 100644 index 000000000..30d840ce7 Binary files /dev/null and b/public/terrain/19/858473/353834.terrain differ diff --git a/public/terrain/19/858473/353835.terrain b/public/terrain/19/858473/353835.terrain new file mode 100644 index 000000000..40ade6591 Binary files /dev/null and b/public/terrain/19/858473/353835.terrain differ diff --git a/public/terrain/19/858473/353836.terrain b/public/terrain/19/858473/353836.terrain new file mode 100644 index 000000000..1ee9b604a Binary files /dev/null and b/public/terrain/19/858473/353836.terrain differ diff --git a/public/terrain/19/858473/353837.terrain b/public/terrain/19/858473/353837.terrain new file mode 100644 index 000000000..85962d0af Binary files /dev/null and b/public/terrain/19/858473/353837.terrain differ diff --git a/public/terrain/19/858473/353838.terrain b/public/terrain/19/858473/353838.terrain new file mode 100644 index 000000000..50f1e0cb4 Binary files /dev/null and b/public/terrain/19/858473/353838.terrain differ diff --git a/public/terrain/19/858473/353839.terrain b/public/terrain/19/858473/353839.terrain new file mode 100644 index 000000000..671ec4d1d Binary files /dev/null and b/public/terrain/19/858473/353839.terrain differ diff --git a/public/terrain/19/858473/353840.terrain b/public/terrain/19/858473/353840.terrain new file mode 100644 index 000000000..60572aa01 Binary files /dev/null and b/public/terrain/19/858473/353840.terrain differ diff --git a/public/terrain/19/858473/353841.terrain b/public/terrain/19/858473/353841.terrain new file mode 100644 index 000000000..a4590dbf5 Binary files /dev/null and b/public/terrain/19/858473/353841.terrain differ diff --git a/public/terrain/19/858473/353842.terrain b/public/terrain/19/858473/353842.terrain new file mode 100644 index 000000000..d0d5b6429 Binary files /dev/null and b/public/terrain/19/858473/353842.terrain differ diff --git a/public/terrain/19/858473/353843.terrain b/public/terrain/19/858473/353843.terrain new file mode 100644 index 000000000..89a7c8cc7 Binary files /dev/null and b/public/terrain/19/858473/353843.terrain differ diff --git a/public/terrain/19/858473/353844.terrain b/public/terrain/19/858473/353844.terrain new file mode 100644 index 000000000..532b31242 Binary files /dev/null and b/public/terrain/19/858473/353844.terrain differ diff --git a/public/terrain/19/858473/353845.terrain b/public/terrain/19/858473/353845.terrain new file mode 100644 index 000000000..f9edc49e2 Binary files /dev/null and b/public/terrain/19/858473/353845.terrain differ diff --git a/public/terrain/19/858473/353846.terrain b/public/terrain/19/858473/353846.terrain new file mode 100644 index 000000000..fbf18948f Binary files /dev/null and b/public/terrain/19/858473/353846.terrain differ diff --git a/public/terrain/19/858473/353847.terrain b/public/terrain/19/858473/353847.terrain new file mode 100644 index 000000000..c2fdef4f2 Binary files /dev/null and b/public/terrain/19/858473/353847.terrain differ diff --git a/public/terrain/19/858473/353848.terrain b/public/terrain/19/858473/353848.terrain new file mode 100644 index 000000000..95a8576e1 Binary files /dev/null and b/public/terrain/19/858473/353848.terrain differ diff --git a/public/terrain/19/858473/353849.terrain b/public/terrain/19/858473/353849.terrain new file mode 100644 index 000000000..bd59bf44b Binary files /dev/null and b/public/terrain/19/858473/353849.terrain differ diff --git a/public/terrain/19/858473/353850.terrain b/public/terrain/19/858473/353850.terrain new file mode 100644 index 000000000..722e7368c Binary files /dev/null and b/public/terrain/19/858473/353850.terrain differ diff --git a/public/terrain/19/858473/353851.terrain b/public/terrain/19/858473/353851.terrain new file mode 100644 index 000000000..9b754d3e2 Binary files /dev/null and b/public/terrain/19/858473/353851.terrain differ diff --git a/public/terrain/19/858473/353852.terrain b/public/terrain/19/858473/353852.terrain new file mode 100644 index 000000000..23afc4c6d Binary files /dev/null and b/public/terrain/19/858473/353852.terrain differ diff --git a/public/terrain/19/858473/353853.terrain b/public/terrain/19/858473/353853.terrain new file mode 100644 index 000000000..6f320466f Binary files /dev/null and b/public/terrain/19/858473/353853.terrain differ diff --git a/public/terrain/19/858473/353854.terrain b/public/terrain/19/858473/353854.terrain new file mode 100644 index 000000000..5d1739b76 Binary files /dev/null and b/public/terrain/19/858473/353854.terrain differ diff --git a/public/terrain/19/858473/353855.terrain b/public/terrain/19/858473/353855.terrain new file mode 100644 index 000000000..3145ac23b Binary files /dev/null and b/public/terrain/19/858473/353855.terrain differ diff --git a/public/terrain/19/858473/353856.terrain b/public/terrain/19/858473/353856.terrain new file mode 100644 index 000000000..47c363734 Binary files /dev/null and b/public/terrain/19/858473/353856.terrain differ diff --git a/public/terrain/19/858473/353857.terrain b/public/terrain/19/858473/353857.terrain new file mode 100644 index 000000000..7d0d0e61d Binary files /dev/null and b/public/terrain/19/858473/353857.terrain differ diff --git a/public/terrain/19/858473/353858.terrain b/public/terrain/19/858473/353858.terrain new file mode 100644 index 000000000..efd8af25a Binary files /dev/null and b/public/terrain/19/858473/353858.terrain differ diff --git a/public/terrain/19/858473/353859.terrain b/public/terrain/19/858473/353859.terrain new file mode 100644 index 000000000..688a1a1bf Binary files /dev/null and b/public/terrain/19/858473/353859.terrain differ diff --git a/public/terrain/19/858473/353860.terrain b/public/terrain/19/858473/353860.terrain new file mode 100644 index 000000000..5f30cee90 Binary files /dev/null and b/public/terrain/19/858473/353860.terrain differ diff --git a/public/terrain/19/858473/353861.terrain b/public/terrain/19/858473/353861.terrain new file mode 100644 index 000000000..5e96b433a Binary files /dev/null and b/public/terrain/19/858473/353861.terrain differ diff --git a/public/terrain/19/858473/353862.terrain b/public/terrain/19/858473/353862.terrain new file mode 100644 index 000000000..0a578792b Binary files /dev/null and b/public/terrain/19/858473/353862.terrain differ diff --git a/public/terrain/19/858473/353863.terrain b/public/terrain/19/858473/353863.terrain new file mode 100644 index 000000000..6f0e2168d Binary files /dev/null and b/public/terrain/19/858473/353863.terrain differ diff --git a/public/terrain/19/858473/353864.terrain b/public/terrain/19/858473/353864.terrain new file mode 100644 index 000000000..a59c54d0e Binary files /dev/null and b/public/terrain/19/858473/353864.terrain differ diff --git a/public/terrain/19/858473/353865.terrain b/public/terrain/19/858473/353865.terrain new file mode 100644 index 000000000..cfedf7c9f Binary files /dev/null and b/public/terrain/19/858473/353865.terrain differ diff --git a/public/terrain/19/858473/353866.terrain b/public/terrain/19/858473/353866.terrain new file mode 100644 index 000000000..2ac573e65 Binary files /dev/null and b/public/terrain/19/858473/353866.terrain differ diff --git a/public/terrain/19/858473/353867.terrain b/public/terrain/19/858473/353867.terrain new file mode 100644 index 000000000..60922e4bb Binary files /dev/null and b/public/terrain/19/858473/353867.terrain differ diff --git a/public/terrain/19/858473/353868.terrain b/public/terrain/19/858473/353868.terrain new file mode 100644 index 000000000..a3b0aa48e Binary files /dev/null and b/public/terrain/19/858473/353868.terrain differ diff --git a/public/terrain/19/858473/353869.terrain b/public/terrain/19/858473/353869.terrain new file mode 100644 index 000000000..2f9ae85e2 Binary files /dev/null and b/public/terrain/19/858473/353869.terrain differ diff --git a/public/terrain/19/858473/353870.terrain b/public/terrain/19/858473/353870.terrain new file mode 100644 index 000000000..86d58db8a Binary files /dev/null and b/public/terrain/19/858473/353870.terrain differ diff --git a/public/terrain/19/858473/353871.terrain b/public/terrain/19/858473/353871.terrain new file mode 100644 index 000000000..c6a245899 Binary files /dev/null and b/public/terrain/19/858473/353871.terrain differ diff --git a/public/terrain/19/858473/353872.terrain b/public/terrain/19/858473/353872.terrain new file mode 100644 index 000000000..c958b53ef Binary files /dev/null and b/public/terrain/19/858473/353872.terrain differ diff --git a/public/terrain/19/858473/353873.terrain b/public/terrain/19/858473/353873.terrain new file mode 100644 index 000000000..456b3f314 Binary files /dev/null and b/public/terrain/19/858473/353873.terrain differ diff --git a/public/terrain/19/858473/353874.terrain b/public/terrain/19/858473/353874.terrain new file mode 100644 index 000000000..d42ac08f7 Binary files /dev/null and b/public/terrain/19/858473/353874.terrain differ diff --git a/public/terrain/19/858473/353875.terrain b/public/terrain/19/858473/353875.terrain new file mode 100644 index 000000000..e923b9f0f Binary files /dev/null and b/public/terrain/19/858473/353875.terrain differ diff --git a/public/terrain/19/858473/353876.terrain b/public/terrain/19/858473/353876.terrain new file mode 100644 index 000000000..6b62ec622 Binary files /dev/null and b/public/terrain/19/858473/353876.terrain differ diff --git a/public/terrain/19/858473/353877.terrain b/public/terrain/19/858473/353877.terrain new file mode 100644 index 000000000..803e6216b Binary files /dev/null and b/public/terrain/19/858473/353877.terrain differ diff --git a/public/terrain/19/858473/353878.terrain b/public/terrain/19/858473/353878.terrain new file mode 100644 index 000000000..250b18f76 Binary files /dev/null and b/public/terrain/19/858473/353878.terrain differ diff --git a/public/terrain/19/858473/353879.terrain b/public/terrain/19/858473/353879.terrain new file mode 100644 index 000000000..195a6ac81 Binary files /dev/null and b/public/terrain/19/858473/353879.terrain differ diff --git a/public/terrain/19/858473/353880.terrain b/public/terrain/19/858473/353880.terrain new file mode 100644 index 000000000..3891af337 Binary files /dev/null and b/public/terrain/19/858473/353880.terrain differ diff --git a/public/terrain/19/858473/353881.terrain b/public/terrain/19/858473/353881.terrain new file mode 100644 index 000000000..a29b782f8 Binary files /dev/null and b/public/terrain/19/858473/353881.terrain differ diff --git a/public/terrain/19/858473/353882.terrain b/public/terrain/19/858473/353882.terrain new file mode 100644 index 000000000..4933caaa3 Binary files /dev/null and b/public/terrain/19/858473/353882.terrain differ diff --git a/public/terrain/19/858473/353883.terrain b/public/terrain/19/858473/353883.terrain new file mode 100644 index 000000000..f2797e884 Binary files /dev/null and b/public/terrain/19/858473/353883.terrain differ diff --git a/public/terrain/19/858473/353884.terrain b/public/terrain/19/858473/353884.terrain new file mode 100644 index 000000000..5c40bdfee Binary files /dev/null and b/public/terrain/19/858473/353884.terrain differ diff --git a/public/terrain/19/858473/353885.terrain b/public/terrain/19/858473/353885.terrain new file mode 100644 index 000000000..d59e53875 Binary files /dev/null and b/public/terrain/19/858473/353885.terrain differ diff --git a/public/terrain/19/858473/353886.terrain b/public/terrain/19/858473/353886.terrain new file mode 100644 index 000000000..98a897314 Binary files /dev/null and b/public/terrain/19/858473/353886.terrain differ diff --git a/public/terrain/19/858473/353887.terrain b/public/terrain/19/858473/353887.terrain new file mode 100644 index 000000000..1e8ab404e Binary files /dev/null and b/public/terrain/19/858473/353887.terrain differ diff --git a/public/terrain/19/858473/353888.terrain b/public/terrain/19/858473/353888.terrain new file mode 100644 index 000000000..93f4703d2 Binary files /dev/null and b/public/terrain/19/858473/353888.terrain differ diff --git a/public/terrain/19/858473/353889.terrain b/public/terrain/19/858473/353889.terrain new file mode 100644 index 000000000..16a5c6495 Binary files /dev/null and b/public/terrain/19/858473/353889.terrain differ diff --git a/public/terrain/19/858473/353890.terrain b/public/terrain/19/858473/353890.terrain new file mode 100644 index 000000000..72ca50e99 Binary files /dev/null and b/public/terrain/19/858473/353890.terrain differ diff --git a/public/terrain/19/858473/353891.terrain b/public/terrain/19/858473/353891.terrain new file mode 100644 index 000000000..002c6312c Binary files /dev/null and b/public/terrain/19/858473/353891.terrain differ diff --git a/public/terrain/19/858473/353892.terrain b/public/terrain/19/858473/353892.terrain new file mode 100644 index 000000000..e23485a10 Binary files /dev/null and b/public/terrain/19/858473/353892.terrain differ diff --git a/public/terrain/19/858473/353893.terrain b/public/terrain/19/858473/353893.terrain new file mode 100644 index 000000000..a3a433ca9 Binary files /dev/null and b/public/terrain/19/858473/353893.terrain differ diff --git a/public/terrain/19/858473/353894.terrain b/public/terrain/19/858473/353894.terrain new file mode 100644 index 000000000..619604f11 Binary files /dev/null and b/public/terrain/19/858473/353894.terrain differ diff --git a/public/terrain/19/858473/353895.terrain b/public/terrain/19/858473/353895.terrain new file mode 100644 index 000000000..6b776e45a Binary files /dev/null and b/public/terrain/19/858473/353895.terrain differ diff --git a/public/terrain/19/858473/353896.terrain b/public/terrain/19/858473/353896.terrain new file mode 100644 index 000000000..1e91de4c9 Binary files /dev/null and b/public/terrain/19/858473/353896.terrain differ diff --git a/public/terrain/19/858473/353897.terrain b/public/terrain/19/858473/353897.terrain new file mode 100644 index 000000000..c4224b935 Binary files /dev/null and b/public/terrain/19/858473/353897.terrain differ diff --git a/public/terrain/19/858473/353898.terrain b/public/terrain/19/858473/353898.terrain new file mode 100644 index 000000000..b44241630 Binary files /dev/null and b/public/terrain/19/858473/353898.terrain differ diff --git a/public/terrain/19/858473/353899.terrain b/public/terrain/19/858473/353899.terrain new file mode 100644 index 000000000..334d1597e Binary files /dev/null and b/public/terrain/19/858473/353899.terrain differ diff --git a/public/terrain/19/858473/353900.terrain b/public/terrain/19/858473/353900.terrain new file mode 100644 index 000000000..44e7eed65 Binary files /dev/null and b/public/terrain/19/858473/353900.terrain differ diff --git a/public/terrain/19/858473/353901.terrain b/public/terrain/19/858473/353901.terrain new file mode 100644 index 000000000..701b4b78b Binary files /dev/null and b/public/terrain/19/858473/353901.terrain differ diff --git a/public/terrain/19/858473/353902.terrain b/public/terrain/19/858473/353902.terrain new file mode 100644 index 000000000..7fbd39b3c Binary files /dev/null and b/public/terrain/19/858473/353902.terrain differ diff --git a/public/terrain/19/858473/353903.terrain b/public/terrain/19/858473/353903.terrain new file mode 100644 index 000000000..e2153085d Binary files /dev/null and b/public/terrain/19/858473/353903.terrain differ diff --git a/public/terrain/19/858473/353904.terrain b/public/terrain/19/858473/353904.terrain new file mode 100644 index 000000000..4cb77d6a0 Binary files /dev/null and b/public/terrain/19/858473/353904.terrain differ diff --git a/public/terrain/19/858473/353905.terrain b/public/terrain/19/858473/353905.terrain new file mode 100644 index 000000000..bd0e88764 Binary files /dev/null and b/public/terrain/19/858473/353905.terrain differ diff --git a/public/terrain/19/858473/353906.terrain b/public/terrain/19/858473/353906.terrain new file mode 100644 index 000000000..0c977831a Binary files /dev/null and b/public/terrain/19/858473/353906.terrain differ diff --git a/public/terrain/19/858473/353907.terrain b/public/terrain/19/858473/353907.terrain new file mode 100644 index 000000000..2a595feee Binary files /dev/null and b/public/terrain/19/858473/353907.terrain differ diff --git a/public/terrain/19/858473/353908.terrain b/public/terrain/19/858473/353908.terrain new file mode 100644 index 000000000..7f4b4303a Binary files /dev/null and b/public/terrain/19/858473/353908.terrain differ diff --git a/public/terrain/19/858473/353909.terrain b/public/terrain/19/858473/353909.terrain new file mode 100644 index 000000000..a6dbe6b67 Binary files /dev/null and b/public/terrain/19/858473/353909.terrain differ diff --git a/public/terrain/19/858473/353910.terrain b/public/terrain/19/858473/353910.terrain new file mode 100644 index 000000000..afbc9d5e3 Binary files /dev/null and b/public/terrain/19/858473/353910.terrain differ diff --git a/public/terrain/19/858473/353911.terrain b/public/terrain/19/858473/353911.terrain new file mode 100644 index 000000000..93427c488 Binary files /dev/null and b/public/terrain/19/858473/353911.terrain differ diff --git a/public/terrain/19/858473/353912.terrain b/public/terrain/19/858473/353912.terrain new file mode 100644 index 000000000..607ee2431 Binary files /dev/null and b/public/terrain/19/858473/353912.terrain differ diff --git a/public/terrain/19/858473/353913.terrain b/public/terrain/19/858473/353913.terrain new file mode 100644 index 000000000..d6ad4e637 Binary files /dev/null and b/public/terrain/19/858473/353913.terrain differ diff --git a/public/terrain/19/858473/353914.terrain b/public/terrain/19/858473/353914.terrain new file mode 100644 index 000000000..ff0ce8fcc Binary files /dev/null and b/public/terrain/19/858473/353914.terrain differ diff --git a/public/terrain/19/858473/353915.terrain b/public/terrain/19/858473/353915.terrain new file mode 100644 index 000000000..36cc94d3d Binary files /dev/null and b/public/terrain/19/858473/353915.terrain differ diff --git a/public/terrain/19/858473/353916.terrain b/public/terrain/19/858473/353916.terrain new file mode 100644 index 000000000..6f38f8e4f Binary files /dev/null and b/public/terrain/19/858473/353916.terrain differ diff --git a/public/terrain/19/858473/353917.terrain b/public/terrain/19/858473/353917.terrain new file mode 100644 index 000000000..9dffd1dfe Binary files /dev/null and b/public/terrain/19/858473/353917.terrain differ diff --git a/public/terrain/19/858473/353918.terrain b/public/terrain/19/858473/353918.terrain new file mode 100644 index 000000000..390a71a5e Binary files /dev/null and b/public/terrain/19/858473/353918.terrain differ diff --git a/public/terrain/19/858473/353919.terrain b/public/terrain/19/858473/353919.terrain new file mode 100644 index 000000000..5a7e0047d Binary files /dev/null and b/public/terrain/19/858473/353919.terrain differ diff --git a/public/terrain/19/858473/353920.terrain b/public/terrain/19/858473/353920.terrain new file mode 100644 index 000000000..6394cb16e Binary files /dev/null and b/public/terrain/19/858473/353920.terrain differ diff --git a/public/terrain/19/858473/353921.terrain b/public/terrain/19/858473/353921.terrain new file mode 100644 index 000000000..c995b24d7 Binary files /dev/null and b/public/terrain/19/858473/353921.terrain differ diff --git a/public/terrain/19/858473/353922.terrain b/public/terrain/19/858473/353922.terrain new file mode 100644 index 000000000..bbbeb65ee Binary files /dev/null and b/public/terrain/19/858473/353922.terrain differ diff --git a/public/terrain/19/858473/353923.terrain b/public/terrain/19/858473/353923.terrain new file mode 100644 index 000000000..30ca95220 Binary files /dev/null and b/public/terrain/19/858473/353923.terrain differ diff --git a/public/terrain/19/858473/353924.terrain b/public/terrain/19/858473/353924.terrain new file mode 100644 index 000000000..0fbe0dafb Binary files /dev/null and b/public/terrain/19/858473/353924.terrain differ diff --git a/public/terrain/19/858473/353925.terrain b/public/terrain/19/858473/353925.terrain new file mode 100644 index 000000000..f1e0b8c33 Binary files /dev/null and b/public/terrain/19/858473/353925.terrain differ diff --git a/public/terrain/19/858473/353926.terrain b/public/terrain/19/858473/353926.terrain new file mode 100644 index 000000000..f9fab33d1 Binary files /dev/null and b/public/terrain/19/858473/353926.terrain differ diff --git a/public/terrain/19/858473/353927.terrain b/public/terrain/19/858473/353927.terrain new file mode 100644 index 000000000..6db891ac8 Binary files /dev/null and b/public/terrain/19/858473/353927.terrain differ diff --git a/public/terrain/19/858473/353928.terrain b/public/terrain/19/858473/353928.terrain new file mode 100644 index 000000000..cdde2d46b Binary files /dev/null and b/public/terrain/19/858473/353928.terrain differ diff --git a/public/terrain/19/858473/353929.terrain b/public/terrain/19/858473/353929.terrain new file mode 100644 index 000000000..f91c5451f Binary files /dev/null and b/public/terrain/19/858473/353929.terrain differ diff --git a/public/terrain/19/858473/353930.terrain b/public/terrain/19/858473/353930.terrain new file mode 100644 index 000000000..516be2bc3 Binary files /dev/null and b/public/terrain/19/858473/353930.terrain differ diff --git a/public/terrain/19/858473/353931.terrain b/public/terrain/19/858473/353931.terrain new file mode 100644 index 000000000..978599962 Binary files /dev/null and b/public/terrain/19/858473/353931.terrain differ diff --git a/public/terrain/19/858473/353932.terrain b/public/terrain/19/858473/353932.terrain new file mode 100644 index 000000000..50f1ce64e Binary files /dev/null and b/public/terrain/19/858473/353932.terrain differ diff --git a/public/terrain/19/858473/353933.terrain b/public/terrain/19/858473/353933.terrain new file mode 100644 index 000000000..01d8dda7c Binary files /dev/null and b/public/terrain/19/858473/353933.terrain differ diff --git a/public/terrain/19/858473/353934.terrain b/public/terrain/19/858473/353934.terrain new file mode 100644 index 000000000..1d91b9fdd Binary files /dev/null and b/public/terrain/19/858473/353934.terrain differ diff --git a/public/terrain/19/858473/353935.terrain b/public/terrain/19/858473/353935.terrain new file mode 100644 index 000000000..080ca1bc0 Binary files /dev/null and b/public/terrain/19/858473/353935.terrain differ diff --git a/public/terrain/19/858473/353936.terrain b/public/terrain/19/858473/353936.terrain new file mode 100644 index 000000000..2b2b264b1 Binary files /dev/null and b/public/terrain/19/858473/353936.terrain differ diff --git a/public/terrain/19/858473/353937.terrain b/public/terrain/19/858473/353937.terrain new file mode 100644 index 000000000..cacec423c Binary files /dev/null and b/public/terrain/19/858473/353937.terrain differ diff --git a/public/terrain/19/858473/353938.terrain b/public/terrain/19/858473/353938.terrain new file mode 100644 index 000000000..8ae1e7aa9 Binary files /dev/null and b/public/terrain/19/858473/353938.terrain differ diff --git a/public/terrain/19/858473/353939.terrain b/public/terrain/19/858473/353939.terrain new file mode 100644 index 000000000..35c8c3962 Binary files /dev/null and b/public/terrain/19/858473/353939.terrain differ diff --git a/public/terrain/19/858473/353940.terrain b/public/terrain/19/858473/353940.terrain new file mode 100644 index 000000000..8af719fdc Binary files /dev/null and b/public/terrain/19/858473/353940.terrain differ diff --git a/public/terrain/19/858473/353941.terrain b/public/terrain/19/858473/353941.terrain new file mode 100644 index 000000000..84c57baa9 Binary files /dev/null and b/public/terrain/19/858473/353941.terrain differ diff --git a/public/terrain/19/858473/353942.terrain b/public/terrain/19/858473/353942.terrain new file mode 100644 index 000000000..70c123dd4 Binary files /dev/null and b/public/terrain/19/858473/353942.terrain differ diff --git a/public/terrain/19/858473/353943.terrain b/public/terrain/19/858473/353943.terrain new file mode 100644 index 000000000..315db4d8a Binary files /dev/null and b/public/terrain/19/858473/353943.terrain differ diff --git a/public/terrain/19/858473/353944.terrain b/public/terrain/19/858473/353944.terrain new file mode 100644 index 000000000..d1df35bc3 Binary files /dev/null and b/public/terrain/19/858473/353944.terrain differ diff --git a/public/terrain/19/858473/353945.terrain b/public/terrain/19/858473/353945.terrain new file mode 100644 index 000000000..241679300 Binary files /dev/null and b/public/terrain/19/858473/353945.terrain differ diff --git a/public/terrain/19/858473/353946.terrain b/public/terrain/19/858473/353946.terrain new file mode 100644 index 000000000..42bd08fd2 Binary files /dev/null and b/public/terrain/19/858473/353946.terrain differ diff --git a/public/terrain/19/858473/353947.terrain b/public/terrain/19/858473/353947.terrain new file mode 100644 index 000000000..6f5e83db7 Binary files /dev/null and b/public/terrain/19/858473/353947.terrain differ diff --git a/public/terrain/19/858473/353948.terrain b/public/terrain/19/858473/353948.terrain new file mode 100644 index 000000000..ce62a9ed6 Binary files /dev/null and b/public/terrain/19/858473/353948.terrain differ diff --git a/public/terrain/19/858473/353949.terrain b/public/terrain/19/858473/353949.terrain new file mode 100644 index 000000000..f5cc86963 Binary files /dev/null and b/public/terrain/19/858473/353949.terrain differ diff --git a/public/terrain/19/858473/353950.terrain b/public/terrain/19/858473/353950.terrain new file mode 100644 index 000000000..c0fb29c3c Binary files /dev/null and b/public/terrain/19/858473/353950.terrain differ diff --git a/public/terrain/19/858473/353951.terrain b/public/terrain/19/858473/353951.terrain new file mode 100644 index 000000000..09bae7c84 Binary files /dev/null and b/public/terrain/19/858473/353951.terrain differ diff --git a/public/terrain/19/858473/353952.terrain b/public/terrain/19/858473/353952.terrain new file mode 100644 index 000000000..f86a16e4d Binary files /dev/null and b/public/terrain/19/858473/353952.terrain differ diff --git a/public/terrain/19/858473/353953.terrain b/public/terrain/19/858473/353953.terrain new file mode 100644 index 000000000..437971a62 Binary files /dev/null and b/public/terrain/19/858473/353953.terrain differ diff --git a/public/terrain/19/858473/353954.terrain b/public/terrain/19/858473/353954.terrain new file mode 100644 index 000000000..c41bd2cd1 Binary files /dev/null and b/public/terrain/19/858473/353954.terrain differ diff --git a/public/terrain/19/858473/353955.terrain b/public/terrain/19/858473/353955.terrain new file mode 100644 index 000000000..0dde31a95 Binary files /dev/null and b/public/terrain/19/858473/353955.terrain differ diff --git a/public/terrain/19/858473/353956.terrain b/public/terrain/19/858473/353956.terrain new file mode 100644 index 000000000..e3cbd95e2 Binary files /dev/null and b/public/terrain/19/858473/353956.terrain differ diff --git a/public/terrain/19/858473/353957.terrain b/public/terrain/19/858473/353957.terrain new file mode 100644 index 000000000..93aa5cb1c Binary files /dev/null and b/public/terrain/19/858473/353957.terrain differ diff --git a/public/terrain/19/858473/353958.terrain b/public/terrain/19/858473/353958.terrain new file mode 100644 index 000000000..0ebd0eb69 Binary files /dev/null and b/public/terrain/19/858473/353958.terrain differ diff --git a/public/terrain/19/858473/353959.terrain b/public/terrain/19/858473/353959.terrain new file mode 100644 index 000000000..4acee8dd8 Binary files /dev/null and b/public/terrain/19/858473/353959.terrain differ diff --git a/public/terrain/19/858473/353960.terrain b/public/terrain/19/858473/353960.terrain new file mode 100644 index 000000000..49bb29866 Binary files /dev/null and b/public/terrain/19/858473/353960.terrain differ diff --git a/public/terrain/19/858473/353961.terrain b/public/terrain/19/858473/353961.terrain new file mode 100644 index 000000000..345445498 Binary files /dev/null and b/public/terrain/19/858473/353961.terrain differ diff --git a/public/terrain/19/858473/353962.terrain b/public/terrain/19/858473/353962.terrain new file mode 100644 index 000000000..138b9d21d Binary files /dev/null and b/public/terrain/19/858473/353962.terrain differ diff --git a/public/terrain/19/858473/353963.terrain b/public/terrain/19/858473/353963.terrain new file mode 100644 index 000000000..64aa5078f Binary files /dev/null and b/public/terrain/19/858473/353963.terrain differ diff --git a/public/terrain/19/858473/353964.terrain b/public/terrain/19/858473/353964.terrain new file mode 100644 index 000000000..f1ce99c4e Binary files /dev/null and b/public/terrain/19/858473/353964.terrain differ diff --git a/public/terrain/19/858473/353965.terrain b/public/terrain/19/858473/353965.terrain new file mode 100644 index 000000000..a7bfe75d8 Binary files /dev/null and b/public/terrain/19/858473/353965.terrain differ diff --git a/public/terrain/19/858473/353966.terrain b/public/terrain/19/858473/353966.terrain new file mode 100644 index 000000000..d53f18b3d Binary files /dev/null and b/public/terrain/19/858473/353966.terrain differ diff --git a/public/terrain/19/858473/353967.terrain b/public/terrain/19/858473/353967.terrain new file mode 100644 index 000000000..65d26568a Binary files /dev/null and b/public/terrain/19/858473/353967.terrain differ diff --git a/public/terrain/19/858473/353968.terrain b/public/terrain/19/858473/353968.terrain new file mode 100644 index 000000000..238b36534 Binary files /dev/null and b/public/terrain/19/858473/353968.terrain differ diff --git a/public/terrain/19/858473/353969.terrain b/public/terrain/19/858473/353969.terrain new file mode 100644 index 000000000..f5382b7b5 Binary files /dev/null and b/public/terrain/19/858473/353969.terrain differ diff --git a/public/terrain/19/858473/353970.terrain b/public/terrain/19/858473/353970.terrain new file mode 100644 index 000000000..c9a9e9d4a Binary files /dev/null and b/public/terrain/19/858473/353970.terrain differ diff --git a/public/terrain/19/858473/353971.terrain b/public/terrain/19/858473/353971.terrain new file mode 100644 index 000000000..4f9fe1e56 Binary files /dev/null and b/public/terrain/19/858473/353971.terrain differ diff --git a/public/terrain/19/858473/353972.terrain b/public/terrain/19/858473/353972.terrain new file mode 100644 index 000000000..4dc1703ac Binary files /dev/null and b/public/terrain/19/858473/353972.terrain differ diff --git a/public/terrain/19/858473/353973.terrain b/public/terrain/19/858473/353973.terrain new file mode 100644 index 000000000..26bd3a094 Binary files /dev/null and b/public/terrain/19/858473/353973.terrain differ diff --git a/public/terrain/19/858473/353974.terrain b/public/terrain/19/858473/353974.terrain new file mode 100644 index 000000000..ac38f014a Binary files /dev/null and b/public/terrain/19/858473/353974.terrain differ diff --git a/public/terrain/19/858473/353975.terrain b/public/terrain/19/858473/353975.terrain new file mode 100644 index 000000000..5eb120836 Binary files /dev/null and b/public/terrain/19/858473/353975.terrain differ diff --git a/public/terrain/19/858473/353976.terrain b/public/terrain/19/858473/353976.terrain new file mode 100644 index 000000000..26690ed32 Binary files /dev/null and b/public/terrain/19/858473/353976.terrain differ diff --git a/public/terrain/19/858473/353977.terrain b/public/terrain/19/858473/353977.terrain new file mode 100644 index 000000000..1f4e12c94 Binary files /dev/null and b/public/terrain/19/858473/353977.terrain differ diff --git a/public/terrain/19/858473/353978.terrain b/public/terrain/19/858473/353978.terrain new file mode 100644 index 000000000..8724b0af0 Binary files /dev/null and b/public/terrain/19/858473/353978.terrain differ diff --git a/public/terrain/19/858473/353979.terrain b/public/terrain/19/858473/353979.terrain new file mode 100644 index 000000000..f28ea61a3 Binary files /dev/null and b/public/terrain/19/858473/353979.terrain differ diff --git a/public/terrain/19/858473/353980.terrain b/public/terrain/19/858473/353980.terrain new file mode 100644 index 000000000..0c2b5f57e Binary files /dev/null and b/public/terrain/19/858473/353980.terrain differ diff --git a/public/terrain/19/858473/353981.terrain b/public/terrain/19/858473/353981.terrain new file mode 100644 index 000000000..7e636a8d7 Binary files /dev/null and b/public/terrain/19/858473/353981.terrain differ diff --git a/public/terrain/19/858473/353982.terrain b/public/terrain/19/858473/353982.terrain new file mode 100644 index 000000000..8d2615a7b Binary files /dev/null and b/public/terrain/19/858473/353982.terrain differ diff --git a/public/terrain/19/858473/353983.terrain b/public/terrain/19/858473/353983.terrain new file mode 100644 index 000000000..531cf2681 Binary files /dev/null and b/public/terrain/19/858473/353983.terrain differ diff --git a/public/terrain/19/858473/353984.terrain b/public/terrain/19/858473/353984.terrain new file mode 100644 index 000000000..74167a9e8 Binary files /dev/null and b/public/terrain/19/858473/353984.terrain differ diff --git a/public/terrain/19/858473/353985.terrain b/public/terrain/19/858473/353985.terrain new file mode 100644 index 000000000..1f552b320 Binary files /dev/null and b/public/terrain/19/858473/353985.terrain differ diff --git a/public/terrain/19/858473/353986.terrain b/public/terrain/19/858473/353986.terrain new file mode 100644 index 000000000..4c9b85eca Binary files /dev/null and b/public/terrain/19/858473/353986.terrain differ diff --git a/public/terrain/19/858473/353987.terrain b/public/terrain/19/858473/353987.terrain new file mode 100644 index 000000000..26c88492b Binary files /dev/null and b/public/terrain/19/858473/353987.terrain differ diff --git a/public/terrain/19/858473/353988.terrain b/public/terrain/19/858473/353988.terrain new file mode 100644 index 000000000..2e9fe44a2 Binary files /dev/null and b/public/terrain/19/858473/353988.terrain differ diff --git a/public/terrain/19/858473/353989.terrain b/public/terrain/19/858473/353989.terrain new file mode 100644 index 000000000..232c18722 Binary files /dev/null and b/public/terrain/19/858473/353989.terrain differ diff --git a/public/terrain/19/858473/353990.terrain b/public/terrain/19/858473/353990.terrain new file mode 100644 index 000000000..a0290b2b5 Binary files /dev/null and b/public/terrain/19/858473/353990.terrain differ diff --git a/public/terrain/19/858473/353991.terrain b/public/terrain/19/858473/353991.terrain new file mode 100644 index 000000000..e8ffb1e32 Binary files /dev/null and b/public/terrain/19/858473/353991.terrain differ diff --git a/public/terrain/19/858473/353992.terrain b/public/terrain/19/858473/353992.terrain new file mode 100644 index 000000000..3e2c7e1fc Binary files /dev/null and b/public/terrain/19/858473/353992.terrain differ diff --git a/public/terrain/19/858473/353993.terrain b/public/terrain/19/858473/353993.terrain new file mode 100644 index 000000000..ae730b3c2 Binary files /dev/null and b/public/terrain/19/858473/353993.terrain differ diff --git a/public/terrain/19/858473/353994.terrain b/public/terrain/19/858473/353994.terrain new file mode 100644 index 000000000..a0ddb4e8f Binary files /dev/null and b/public/terrain/19/858473/353994.terrain differ diff --git a/public/terrain/19/858473/353995.terrain b/public/terrain/19/858473/353995.terrain new file mode 100644 index 000000000..7289b4eb3 Binary files /dev/null and b/public/terrain/19/858473/353995.terrain differ diff --git a/public/terrain/19/858473/353996.terrain b/public/terrain/19/858473/353996.terrain new file mode 100644 index 000000000..8b6d3e4f1 Binary files /dev/null and b/public/terrain/19/858473/353996.terrain differ diff --git a/public/terrain/19/858473/353997.terrain b/public/terrain/19/858473/353997.terrain new file mode 100644 index 000000000..9ee7b52bf Binary files /dev/null and b/public/terrain/19/858473/353997.terrain differ diff --git a/public/terrain/19/858473/353998.terrain b/public/terrain/19/858473/353998.terrain new file mode 100644 index 000000000..bbaec813d Binary files /dev/null and b/public/terrain/19/858473/353998.terrain differ diff --git a/public/terrain/19/858473/353999.terrain b/public/terrain/19/858473/353999.terrain new file mode 100644 index 000000000..0cf623031 Binary files /dev/null and b/public/terrain/19/858473/353999.terrain differ diff --git a/public/terrain/19/858473/354000.terrain b/public/terrain/19/858473/354000.terrain new file mode 100644 index 000000000..7a12d8e53 Binary files /dev/null and b/public/terrain/19/858473/354000.terrain differ diff --git a/public/terrain/19/858473/354001.terrain b/public/terrain/19/858473/354001.terrain new file mode 100644 index 000000000..9dad23372 Binary files /dev/null and b/public/terrain/19/858473/354001.terrain differ diff --git a/public/terrain/19/858473/354002.terrain b/public/terrain/19/858473/354002.terrain new file mode 100644 index 000000000..19a0d3b6c Binary files /dev/null and b/public/terrain/19/858473/354002.terrain differ diff --git a/public/terrain/19/858473/354003.terrain b/public/terrain/19/858473/354003.terrain new file mode 100644 index 000000000..907137f1a Binary files /dev/null and b/public/terrain/19/858473/354003.terrain differ diff --git a/public/terrain/19/858473/354004.terrain b/public/terrain/19/858473/354004.terrain new file mode 100644 index 000000000..783ed5cce Binary files /dev/null and b/public/terrain/19/858473/354004.terrain differ diff --git a/public/terrain/19/858473/354005.terrain b/public/terrain/19/858473/354005.terrain new file mode 100644 index 000000000..5618d1181 Binary files /dev/null and b/public/terrain/19/858473/354005.terrain differ diff --git a/public/terrain/19/858473/354006.terrain b/public/terrain/19/858473/354006.terrain new file mode 100644 index 000000000..47e261e6f Binary files /dev/null and b/public/terrain/19/858473/354006.terrain differ diff --git a/public/terrain/19/858473/354007.terrain b/public/terrain/19/858473/354007.terrain new file mode 100644 index 000000000..30bc3fec2 Binary files /dev/null and b/public/terrain/19/858473/354007.terrain differ diff --git a/public/terrain/19/858473/354008.terrain b/public/terrain/19/858473/354008.terrain new file mode 100644 index 000000000..cb9ee5be5 Binary files /dev/null and b/public/terrain/19/858473/354008.terrain differ diff --git a/public/terrain/19/858473/354009.terrain b/public/terrain/19/858473/354009.terrain new file mode 100644 index 000000000..851742e60 Binary files /dev/null and b/public/terrain/19/858473/354009.terrain differ diff --git a/public/terrain/19/858473/354010.terrain b/public/terrain/19/858473/354010.terrain new file mode 100644 index 000000000..e1ff7ed35 Binary files /dev/null and b/public/terrain/19/858473/354010.terrain differ diff --git a/public/terrain/19/858473/354011.terrain b/public/terrain/19/858473/354011.terrain new file mode 100644 index 000000000..4995637b4 Binary files /dev/null and b/public/terrain/19/858473/354011.terrain differ diff --git a/public/terrain/19/858473/354012.terrain b/public/terrain/19/858473/354012.terrain new file mode 100644 index 000000000..4b0c04125 Binary files /dev/null and b/public/terrain/19/858473/354012.terrain differ diff --git a/public/terrain/19/858473/354013.terrain b/public/terrain/19/858473/354013.terrain new file mode 100644 index 000000000..2df97b609 Binary files /dev/null and b/public/terrain/19/858473/354013.terrain differ diff --git a/public/terrain/19/858473/354014.terrain b/public/terrain/19/858473/354014.terrain new file mode 100644 index 000000000..4a002c50c Binary files /dev/null and b/public/terrain/19/858473/354014.terrain differ diff --git a/public/terrain/19/858473/354015.terrain b/public/terrain/19/858473/354015.terrain new file mode 100644 index 000000000..431e638ac Binary files /dev/null and b/public/terrain/19/858473/354015.terrain differ diff --git a/public/terrain/19/858473/354016.terrain b/public/terrain/19/858473/354016.terrain new file mode 100644 index 000000000..34995d2d7 Binary files /dev/null and b/public/terrain/19/858473/354016.terrain differ diff --git a/public/terrain/19/858473/354017.terrain b/public/terrain/19/858473/354017.terrain new file mode 100644 index 000000000..98ed06aae Binary files /dev/null and b/public/terrain/19/858473/354017.terrain differ diff --git a/public/terrain/19/858473/354018.terrain b/public/terrain/19/858473/354018.terrain new file mode 100644 index 000000000..65688e00c Binary files /dev/null and b/public/terrain/19/858473/354018.terrain differ diff --git a/public/terrain/19/858473/354019.terrain b/public/terrain/19/858473/354019.terrain new file mode 100644 index 000000000..2ab0ad048 Binary files /dev/null and b/public/terrain/19/858473/354019.terrain differ diff --git a/public/terrain/19/858473/354020.terrain b/public/terrain/19/858473/354020.terrain new file mode 100644 index 000000000..47f85a2fd Binary files /dev/null and b/public/terrain/19/858473/354020.terrain differ diff --git a/public/terrain/19/858473/354021.terrain b/public/terrain/19/858473/354021.terrain new file mode 100644 index 000000000..e5250f5d4 Binary files /dev/null and b/public/terrain/19/858473/354021.terrain differ diff --git a/public/terrain/19/858473/354022.terrain b/public/terrain/19/858473/354022.terrain new file mode 100644 index 000000000..dcc9a5cf9 Binary files /dev/null and b/public/terrain/19/858473/354022.terrain differ diff --git a/public/terrain/19/858473/354023.terrain b/public/terrain/19/858473/354023.terrain new file mode 100644 index 000000000..7f05a1e7e Binary files /dev/null and b/public/terrain/19/858473/354023.terrain differ diff --git a/public/terrain/19/858473/354024.terrain b/public/terrain/19/858473/354024.terrain new file mode 100644 index 000000000..1d5732ae3 Binary files /dev/null and b/public/terrain/19/858473/354024.terrain differ diff --git a/public/terrain/19/858473/354025.terrain b/public/terrain/19/858473/354025.terrain new file mode 100644 index 000000000..bd7ccb85d Binary files /dev/null and b/public/terrain/19/858473/354025.terrain differ diff --git a/public/terrain/19/858473/354026.terrain b/public/terrain/19/858473/354026.terrain new file mode 100644 index 000000000..341ee4139 Binary files /dev/null and b/public/terrain/19/858473/354026.terrain differ diff --git a/public/terrain/19/858473/354027.terrain b/public/terrain/19/858473/354027.terrain new file mode 100644 index 000000000..d799dcd64 Binary files /dev/null and b/public/terrain/19/858473/354027.terrain differ diff --git a/public/terrain/19/858473/354028.terrain b/public/terrain/19/858473/354028.terrain new file mode 100644 index 000000000..78ffe2123 Binary files /dev/null and b/public/terrain/19/858473/354028.terrain differ diff --git a/public/terrain/19/858473/354029.terrain b/public/terrain/19/858473/354029.terrain new file mode 100644 index 000000000..01d2f6ea3 Binary files /dev/null and b/public/terrain/19/858473/354029.terrain differ diff --git a/public/terrain/19/858473/354030.terrain b/public/terrain/19/858473/354030.terrain new file mode 100644 index 000000000..9fe769b91 Binary files /dev/null and b/public/terrain/19/858473/354030.terrain differ diff --git a/public/terrain/19/858473/354031.terrain b/public/terrain/19/858473/354031.terrain new file mode 100644 index 000000000..2e4b232e7 Binary files /dev/null and b/public/terrain/19/858473/354031.terrain differ diff --git a/public/terrain/19/858473/354032.terrain b/public/terrain/19/858473/354032.terrain new file mode 100644 index 000000000..1236cfd09 Binary files /dev/null and b/public/terrain/19/858473/354032.terrain differ diff --git a/public/terrain/19/858473/354033.terrain b/public/terrain/19/858473/354033.terrain new file mode 100644 index 000000000..d1bce2f06 Binary files /dev/null and b/public/terrain/19/858473/354033.terrain differ diff --git a/public/terrain/19/858473/354034.terrain b/public/terrain/19/858473/354034.terrain new file mode 100644 index 000000000..c04b7db15 Binary files /dev/null and b/public/terrain/19/858473/354034.terrain differ diff --git a/public/terrain/19/858473/354035.terrain b/public/terrain/19/858473/354035.terrain new file mode 100644 index 000000000..0ec2066cc Binary files /dev/null and b/public/terrain/19/858473/354035.terrain differ diff --git a/public/terrain/19/858473/354036.terrain b/public/terrain/19/858473/354036.terrain new file mode 100644 index 000000000..4ba447a86 Binary files /dev/null and b/public/terrain/19/858473/354036.terrain differ diff --git a/public/terrain/19/858473/354037.terrain b/public/terrain/19/858473/354037.terrain new file mode 100644 index 000000000..9a00bade1 Binary files /dev/null and b/public/terrain/19/858473/354037.terrain differ diff --git a/public/terrain/19/858473/354038.terrain b/public/terrain/19/858473/354038.terrain new file mode 100644 index 000000000..5c401a15c Binary files /dev/null and b/public/terrain/19/858473/354038.terrain differ diff --git a/public/terrain/19/858473/354039.terrain b/public/terrain/19/858473/354039.terrain new file mode 100644 index 000000000..00beed41b Binary files /dev/null and b/public/terrain/19/858473/354039.terrain differ diff --git a/public/terrain/19/858473/354040.terrain b/public/terrain/19/858473/354040.terrain new file mode 100644 index 000000000..3b75739e0 Binary files /dev/null and b/public/terrain/19/858473/354040.terrain differ diff --git a/public/terrain/19/858473/354041.terrain b/public/terrain/19/858473/354041.terrain new file mode 100644 index 000000000..1612eea38 Binary files /dev/null and b/public/terrain/19/858473/354041.terrain differ diff --git a/public/terrain/19/858473/354042.terrain b/public/terrain/19/858473/354042.terrain new file mode 100644 index 000000000..db26a0d2c Binary files /dev/null and b/public/terrain/19/858473/354042.terrain differ diff --git a/public/terrain/19/858473/354043.terrain b/public/terrain/19/858473/354043.terrain new file mode 100644 index 000000000..714352d3f Binary files /dev/null and b/public/terrain/19/858473/354043.terrain differ diff --git a/public/terrain/19/858473/354044.terrain b/public/terrain/19/858473/354044.terrain new file mode 100644 index 000000000..e9e220947 Binary files /dev/null and b/public/terrain/19/858473/354044.terrain differ diff --git a/public/terrain/19/858473/354045.terrain b/public/terrain/19/858473/354045.terrain new file mode 100644 index 000000000..6013942af Binary files /dev/null and b/public/terrain/19/858473/354045.terrain differ diff --git a/public/terrain/19/858473/354046.terrain b/public/terrain/19/858473/354046.terrain new file mode 100644 index 000000000..8b93923b1 Binary files /dev/null and b/public/terrain/19/858473/354046.terrain differ diff --git a/public/terrain/19/858473/354047.terrain b/public/terrain/19/858473/354047.terrain new file mode 100644 index 000000000..bd6fa7c3b Binary files /dev/null and b/public/terrain/19/858473/354047.terrain differ diff --git a/public/terrain/19/858473/354048.terrain b/public/terrain/19/858473/354048.terrain new file mode 100644 index 000000000..46875fd8c Binary files /dev/null and b/public/terrain/19/858473/354048.terrain differ diff --git a/public/terrain/19/858473/354049.terrain b/public/terrain/19/858473/354049.terrain new file mode 100644 index 000000000..773d8f376 Binary files /dev/null and b/public/terrain/19/858473/354049.terrain differ diff --git a/public/terrain/19/858473/354050.terrain b/public/terrain/19/858473/354050.terrain new file mode 100644 index 000000000..e80e853d8 Binary files /dev/null and b/public/terrain/19/858473/354050.terrain differ diff --git a/public/terrain/19/858473/354051.terrain b/public/terrain/19/858473/354051.terrain new file mode 100644 index 000000000..c82fb482c Binary files /dev/null and b/public/terrain/19/858473/354051.terrain differ diff --git a/public/terrain/19/858473/354052.terrain b/public/terrain/19/858473/354052.terrain new file mode 100644 index 000000000..498e8ab6a Binary files /dev/null and b/public/terrain/19/858473/354052.terrain differ diff --git a/public/terrain/19/858473/354053.terrain b/public/terrain/19/858473/354053.terrain new file mode 100644 index 000000000..801daed72 Binary files /dev/null and b/public/terrain/19/858473/354053.terrain differ diff --git a/public/terrain/19/858473/354054.terrain b/public/terrain/19/858473/354054.terrain new file mode 100644 index 000000000..2227f5d22 Binary files /dev/null and b/public/terrain/19/858473/354054.terrain differ diff --git a/public/terrain/19/858473/354055.terrain b/public/terrain/19/858473/354055.terrain new file mode 100644 index 000000000..cdbf09b69 Binary files /dev/null and b/public/terrain/19/858473/354055.terrain differ diff --git a/public/terrain/19/858473/354056.terrain b/public/terrain/19/858473/354056.terrain new file mode 100644 index 000000000..3524f116a Binary files /dev/null and b/public/terrain/19/858473/354056.terrain differ diff --git a/public/terrain/19/858473/354057.terrain b/public/terrain/19/858473/354057.terrain new file mode 100644 index 000000000..29f0fe701 Binary files /dev/null and b/public/terrain/19/858473/354057.terrain differ diff --git a/public/terrain/19/858473/354058.terrain b/public/terrain/19/858473/354058.terrain new file mode 100644 index 000000000..be7992c1d Binary files /dev/null and b/public/terrain/19/858473/354058.terrain differ diff --git a/public/terrain/19/858473/354059.terrain b/public/terrain/19/858473/354059.terrain new file mode 100644 index 000000000..068fbe58b Binary files /dev/null and b/public/terrain/19/858473/354059.terrain differ diff --git a/public/terrain/19/858474/353743.terrain b/public/terrain/19/858474/353743.terrain new file mode 100644 index 000000000..61de331fb Binary files /dev/null and b/public/terrain/19/858474/353743.terrain differ diff --git a/public/terrain/19/858474/353744.terrain b/public/terrain/19/858474/353744.terrain new file mode 100644 index 000000000..5d5b16349 Binary files /dev/null and b/public/terrain/19/858474/353744.terrain differ diff --git a/public/terrain/19/858474/353745.terrain b/public/terrain/19/858474/353745.terrain new file mode 100644 index 000000000..c064fd4ca Binary files /dev/null and b/public/terrain/19/858474/353745.terrain differ diff --git a/public/terrain/19/858474/353746.terrain b/public/terrain/19/858474/353746.terrain new file mode 100644 index 000000000..573bf02be Binary files /dev/null and b/public/terrain/19/858474/353746.terrain differ diff --git a/public/terrain/19/858474/353747.terrain b/public/terrain/19/858474/353747.terrain new file mode 100644 index 000000000..9124f9e1e Binary files /dev/null and b/public/terrain/19/858474/353747.terrain differ diff --git a/public/terrain/19/858474/353748.terrain b/public/terrain/19/858474/353748.terrain new file mode 100644 index 000000000..a2333fa80 Binary files /dev/null and b/public/terrain/19/858474/353748.terrain differ diff --git a/public/terrain/19/858474/353749.terrain b/public/terrain/19/858474/353749.terrain new file mode 100644 index 000000000..2c21b94ae Binary files /dev/null and b/public/terrain/19/858474/353749.terrain differ diff --git a/public/terrain/19/858474/353750.terrain b/public/terrain/19/858474/353750.terrain new file mode 100644 index 000000000..39d3c6efe Binary files /dev/null and b/public/terrain/19/858474/353750.terrain differ diff --git a/public/terrain/19/858474/353751.terrain b/public/terrain/19/858474/353751.terrain new file mode 100644 index 000000000..b099711a5 Binary files /dev/null and b/public/terrain/19/858474/353751.terrain differ diff --git a/public/terrain/19/858474/353752.terrain b/public/terrain/19/858474/353752.terrain new file mode 100644 index 000000000..69038905e Binary files /dev/null and b/public/terrain/19/858474/353752.terrain differ diff --git a/public/terrain/19/858474/353753.terrain b/public/terrain/19/858474/353753.terrain new file mode 100644 index 000000000..c1a6dde23 Binary files /dev/null and b/public/terrain/19/858474/353753.terrain differ diff --git a/public/terrain/19/858474/353754.terrain b/public/terrain/19/858474/353754.terrain new file mode 100644 index 000000000..f9d615c37 Binary files /dev/null and b/public/terrain/19/858474/353754.terrain differ diff --git a/public/terrain/19/858474/353755.terrain b/public/terrain/19/858474/353755.terrain new file mode 100644 index 000000000..d661881cb Binary files /dev/null and b/public/terrain/19/858474/353755.terrain differ diff --git a/public/terrain/19/858474/353756.terrain b/public/terrain/19/858474/353756.terrain new file mode 100644 index 000000000..ebbef95fe Binary files /dev/null and b/public/terrain/19/858474/353756.terrain differ diff --git a/public/terrain/19/858474/353757.terrain b/public/terrain/19/858474/353757.terrain new file mode 100644 index 000000000..cbb7949d0 Binary files /dev/null and b/public/terrain/19/858474/353757.terrain differ diff --git a/public/terrain/19/858474/353758.terrain b/public/terrain/19/858474/353758.terrain new file mode 100644 index 000000000..17fc9caaa Binary files /dev/null and b/public/terrain/19/858474/353758.terrain differ diff --git a/public/terrain/19/858474/353759.terrain b/public/terrain/19/858474/353759.terrain new file mode 100644 index 000000000..5f4d981b3 Binary files /dev/null and b/public/terrain/19/858474/353759.terrain differ diff --git a/public/terrain/19/858474/353760.terrain b/public/terrain/19/858474/353760.terrain new file mode 100644 index 000000000..ff88e7199 Binary files /dev/null and b/public/terrain/19/858474/353760.terrain differ diff --git a/public/terrain/19/858474/353761.terrain b/public/terrain/19/858474/353761.terrain new file mode 100644 index 000000000..3f835e87f Binary files /dev/null and b/public/terrain/19/858474/353761.terrain differ diff --git a/public/terrain/19/858474/353762.terrain b/public/terrain/19/858474/353762.terrain new file mode 100644 index 000000000..0744546d2 Binary files /dev/null and b/public/terrain/19/858474/353762.terrain differ diff --git a/public/terrain/19/858474/353763.terrain b/public/terrain/19/858474/353763.terrain new file mode 100644 index 000000000..7c0aef284 Binary files /dev/null and b/public/terrain/19/858474/353763.terrain differ diff --git a/public/terrain/19/858474/353764.terrain b/public/terrain/19/858474/353764.terrain new file mode 100644 index 000000000..397ab8551 Binary files /dev/null and b/public/terrain/19/858474/353764.terrain differ diff --git a/public/terrain/19/858474/353765.terrain b/public/terrain/19/858474/353765.terrain new file mode 100644 index 000000000..bb7c8c0ee Binary files /dev/null and b/public/terrain/19/858474/353765.terrain differ diff --git a/public/terrain/19/858474/353766.terrain b/public/terrain/19/858474/353766.terrain new file mode 100644 index 000000000..a592609fc Binary files /dev/null and b/public/terrain/19/858474/353766.terrain differ diff --git a/public/terrain/19/858474/353767.terrain b/public/terrain/19/858474/353767.terrain new file mode 100644 index 000000000..b798314ca Binary files /dev/null and b/public/terrain/19/858474/353767.terrain differ diff --git a/public/terrain/19/858474/353768.terrain b/public/terrain/19/858474/353768.terrain new file mode 100644 index 000000000..a7c154449 Binary files /dev/null and b/public/terrain/19/858474/353768.terrain differ diff --git a/public/terrain/19/858474/353769.terrain b/public/terrain/19/858474/353769.terrain new file mode 100644 index 000000000..2ab20f01a Binary files /dev/null and b/public/terrain/19/858474/353769.terrain differ diff --git a/public/terrain/19/858474/353770.terrain b/public/terrain/19/858474/353770.terrain new file mode 100644 index 000000000..196ab668d Binary files /dev/null and b/public/terrain/19/858474/353770.terrain differ diff --git a/public/terrain/19/858474/353771.terrain b/public/terrain/19/858474/353771.terrain new file mode 100644 index 000000000..450e2f01e Binary files /dev/null and b/public/terrain/19/858474/353771.terrain differ diff --git a/public/terrain/19/858474/353772.terrain b/public/terrain/19/858474/353772.terrain new file mode 100644 index 000000000..5a28d4a93 Binary files /dev/null and b/public/terrain/19/858474/353772.terrain differ diff --git a/public/terrain/19/858474/353773.terrain b/public/terrain/19/858474/353773.terrain new file mode 100644 index 000000000..4ada2e00f Binary files /dev/null and b/public/terrain/19/858474/353773.terrain differ diff --git a/public/terrain/19/858474/353774.terrain b/public/terrain/19/858474/353774.terrain new file mode 100644 index 000000000..4cbb38a48 Binary files /dev/null and b/public/terrain/19/858474/353774.terrain differ diff --git a/public/terrain/19/858474/353775.terrain b/public/terrain/19/858474/353775.terrain new file mode 100644 index 000000000..156e3a4e7 Binary files /dev/null and b/public/terrain/19/858474/353775.terrain differ diff --git a/public/terrain/19/858474/353776.terrain b/public/terrain/19/858474/353776.terrain new file mode 100644 index 000000000..959f6575e Binary files /dev/null and b/public/terrain/19/858474/353776.terrain differ diff --git a/public/terrain/19/858474/353777.terrain b/public/terrain/19/858474/353777.terrain new file mode 100644 index 000000000..f913c4e70 Binary files /dev/null and b/public/terrain/19/858474/353777.terrain differ diff --git a/public/terrain/19/858474/353778.terrain b/public/terrain/19/858474/353778.terrain new file mode 100644 index 000000000..9f2650779 Binary files /dev/null and b/public/terrain/19/858474/353778.terrain differ diff --git a/public/terrain/19/858474/353779.terrain b/public/terrain/19/858474/353779.terrain new file mode 100644 index 000000000..c9f52d4fa Binary files /dev/null and b/public/terrain/19/858474/353779.terrain differ diff --git a/public/terrain/19/858474/353780.terrain b/public/terrain/19/858474/353780.terrain new file mode 100644 index 000000000..4816b028b Binary files /dev/null and b/public/terrain/19/858474/353780.terrain differ diff --git a/public/terrain/19/858474/353781.terrain b/public/terrain/19/858474/353781.terrain new file mode 100644 index 000000000..81350bb3f Binary files /dev/null and b/public/terrain/19/858474/353781.terrain differ diff --git a/public/terrain/19/858474/353782.terrain b/public/terrain/19/858474/353782.terrain new file mode 100644 index 000000000..2d81c1128 Binary files /dev/null and b/public/terrain/19/858474/353782.terrain differ diff --git a/public/terrain/19/858474/353783.terrain b/public/terrain/19/858474/353783.terrain new file mode 100644 index 000000000..a3656a110 Binary files /dev/null and b/public/terrain/19/858474/353783.terrain differ diff --git a/public/terrain/19/858474/353784.terrain b/public/terrain/19/858474/353784.terrain new file mode 100644 index 000000000..943af8e8e Binary files /dev/null and b/public/terrain/19/858474/353784.terrain differ diff --git a/public/terrain/19/858474/353785.terrain b/public/terrain/19/858474/353785.terrain new file mode 100644 index 000000000..6a7cdf25f Binary files /dev/null and b/public/terrain/19/858474/353785.terrain differ diff --git a/public/terrain/19/858474/353786.terrain b/public/terrain/19/858474/353786.terrain new file mode 100644 index 000000000..83c261ff2 Binary files /dev/null and b/public/terrain/19/858474/353786.terrain differ diff --git a/public/terrain/19/858474/353787.terrain b/public/terrain/19/858474/353787.terrain new file mode 100644 index 000000000..9aad88fd5 Binary files /dev/null and b/public/terrain/19/858474/353787.terrain differ diff --git a/public/terrain/19/858474/353788.terrain b/public/terrain/19/858474/353788.terrain new file mode 100644 index 000000000..9de719049 Binary files /dev/null and b/public/terrain/19/858474/353788.terrain differ diff --git a/public/terrain/19/858474/353789.terrain b/public/terrain/19/858474/353789.terrain new file mode 100644 index 000000000..696ff370a Binary files /dev/null and b/public/terrain/19/858474/353789.terrain differ diff --git a/public/terrain/19/858474/353790.terrain b/public/terrain/19/858474/353790.terrain new file mode 100644 index 000000000..18c0d4cd9 Binary files /dev/null and b/public/terrain/19/858474/353790.terrain differ diff --git a/public/terrain/19/858474/353791.terrain b/public/terrain/19/858474/353791.terrain new file mode 100644 index 000000000..54e595bd4 Binary files /dev/null and b/public/terrain/19/858474/353791.terrain differ diff --git a/public/terrain/19/858474/353792.terrain b/public/terrain/19/858474/353792.terrain new file mode 100644 index 000000000..1e9c3b398 Binary files /dev/null and b/public/terrain/19/858474/353792.terrain differ diff --git a/public/terrain/19/858474/353793.terrain b/public/terrain/19/858474/353793.terrain new file mode 100644 index 000000000..c5271dcd1 Binary files /dev/null and b/public/terrain/19/858474/353793.terrain differ diff --git a/public/terrain/19/858474/353794.terrain b/public/terrain/19/858474/353794.terrain new file mode 100644 index 000000000..9c4435a8a Binary files /dev/null and b/public/terrain/19/858474/353794.terrain differ diff --git a/public/terrain/19/858474/353795.terrain b/public/terrain/19/858474/353795.terrain new file mode 100644 index 000000000..d47c9db30 Binary files /dev/null and b/public/terrain/19/858474/353795.terrain differ diff --git a/public/terrain/19/858474/353796.terrain b/public/terrain/19/858474/353796.terrain new file mode 100644 index 000000000..472de8ba9 Binary files /dev/null and b/public/terrain/19/858474/353796.terrain differ diff --git a/public/terrain/19/858474/353797.terrain b/public/terrain/19/858474/353797.terrain new file mode 100644 index 000000000..c138f2f2e Binary files /dev/null and b/public/terrain/19/858474/353797.terrain differ diff --git a/public/terrain/19/858474/353798.terrain b/public/terrain/19/858474/353798.terrain new file mode 100644 index 000000000..e28812fc4 Binary files /dev/null and b/public/terrain/19/858474/353798.terrain differ diff --git a/public/terrain/19/858474/353799.terrain b/public/terrain/19/858474/353799.terrain new file mode 100644 index 000000000..e981eee92 Binary files /dev/null and b/public/terrain/19/858474/353799.terrain differ diff --git a/public/terrain/19/858474/353800.terrain b/public/terrain/19/858474/353800.terrain new file mode 100644 index 000000000..6bbfeaa0e Binary files /dev/null and b/public/terrain/19/858474/353800.terrain differ diff --git a/public/terrain/19/858474/353801.terrain b/public/terrain/19/858474/353801.terrain new file mode 100644 index 000000000..2b0d13e2c Binary files /dev/null and b/public/terrain/19/858474/353801.terrain differ diff --git a/public/terrain/19/858474/353802.terrain b/public/terrain/19/858474/353802.terrain new file mode 100644 index 000000000..94840e70c Binary files /dev/null and b/public/terrain/19/858474/353802.terrain differ diff --git a/public/terrain/19/858474/353803.terrain b/public/terrain/19/858474/353803.terrain new file mode 100644 index 000000000..7775553c7 Binary files /dev/null and b/public/terrain/19/858474/353803.terrain differ diff --git a/public/terrain/19/858474/353804.terrain b/public/terrain/19/858474/353804.terrain new file mode 100644 index 000000000..a14b42bbf Binary files /dev/null and b/public/terrain/19/858474/353804.terrain differ diff --git a/public/terrain/19/858474/353805.terrain b/public/terrain/19/858474/353805.terrain new file mode 100644 index 000000000..83ef233c0 Binary files /dev/null and b/public/terrain/19/858474/353805.terrain differ diff --git a/public/terrain/19/858474/353806.terrain b/public/terrain/19/858474/353806.terrain new file mode 100644 index 000000000..85ba77551 Binary files /dev/null and b/public/terrain/19/858474/353806.terrain differ diff --git a/public/terrain/19/858474/353807.terrain b/public/terrain/19/858474/353807.terrain new file mode 100644 index 000000000..d3d2a595e Binary files /dev/null and b/public/terrain/19/858474/353807.terrain differ diff --git a/public/terrain/19/858474/353808.terrain b/public/terrain/19/858474/353808.terrain new file mode 100644 index 000000000..abe017cb2 Binary files /dev/null and b/public/terrain/19/858474/353808.terrain differ diff --git a/public/terrain/19/858474/353809.terrain b/public/terrain/19/858474/353809.terrain new file mode 100644 index 000000000..8963ed0b7 Binary files /dev/null and b/public/terrain/19/858474/353809.terrain differ diff --git a/public/terrain/19/858474/353810.terrain b/public/terrain/19/858474/353810.terrain new file mode 100644 index 000000000..5c69d87c7 Binary files /dev/null and b/public/terrain/19/858474/353810.terrain differ diff --git a/public/terrain/19/858474/353811.terrain b/public/terrain/19/858474/353811.terrain new file mode 100644 index 000000000..5c16b1877 Binary files /dev/null and b/public/terrain/19/858474/353811.terrain differ diff --git a/public/terrain/19/858474/353812.terrain b/public/terrain/19/858474/353812.terrain new file mode 100644 index 000000000..f2343d213 Binary files /dev/null and b/public/terrain/19/858474/353812.terrain differ diff --git a/public/terrain/19/858474/353813.terrain b/public/terrain/19/858474/353813.terrain new file mode 100644 index 000000000..e45dd35c2 Binary files /dev/null and b/public/terrain/19/858474/353813.terrain differ diff --git a/public/terrain/19/858474/353814.terrain b/public/terrain/19/858474/353814.terrain new file mode 100644 index 000000000..69487dd75 Binary files /dev/null and b/public/terrain/19/858474/353814.terrain differ diff --git a/public/terrain/19/858474/353815.terrain b/public/terrain/19/858474/353815.terrain new file mode 100644 index 000000000..6a4131411 Binary files /dev/null and b/public/terrain/19/858474/353815.terrain differ diff --git a/public/terrain/19/858474/353816.terrain b/public/terrain/19/858474/353816.terrain new file mode 100644 index 000000000..82fc3a03c Binary files /dev/null and b/public/terrain/19/858474/353816.terrain differ diff --git a/public/terrain/19/858474/353817.terrain b/public/terrain/19/858474/353817.terrain new file mode 100644 index 000000000..eac7f6fd4 Binary files /dev/null and b/public/terrain/19/858474/353817.terrain differ diff --git a/public/terrain/19/858474/353818.terrain b/public/terrain/19/858474/353818.terrain new file mode 100644 index 000000000..ae5e2b5f5 Binary files /dev/null and b/public/terrain/19/858474/353818.terrain differ diff --git a/public/terrain/19/858474/353819.terrain b/public/terrain/19/858474/353819.terrain new file mode 100644 index 000000000..086d27c9e Binary files /dev/null and b/public/terrain/19/858474/353819.terrain differ diff --git a/public/terrain/19/858474/353820.terrain b/public/terrain/19/858474/353820.terrain new file mode 100644 index 000000000..29dfc39f1 Binary files /dev/null and b/public/terrain/19/858474/353820.terrain differ diff --git a/public/terrain/19/858474/353821.terrain b/public/terrain/19/858474/353821.terrain new file mode 100644 index 000000000..f2afc0112 Binary files /dev/null and b/public/terrain/19/858474/353821.terrain differ diff --git a/public/terrain/19/858474/353822.terrain b/public/terrain/19/858474/353822.terrain new file mode 100644 index 000000000..2aaadf24c Binary files /dev/null and b/public/terrain/19/858474/353822.terrain differ diff --git a/public/terrain/19/858474/353823.terrain b/public/terrain/19/858474/353823.terrain new file mode 100644 index 000000000..dbe6cfc5e Binary files /dev/null and b/public/terrain/19/858474/353823.terrain differ diff --git a/public/terrain/19/858474/353824.terrain b/public/terrain/19/858474/353824.terrain new file mode 100644 index 000000000..1ca6fa81a Binary files /dev/null and b/public/terrain/19/858474/353824.terrain differ diff --git a/public/terrain/19/858474/353825.terrain b/public/terrain/19/858474/353825.terrain new file mode 100644 index 000000000..359cf6e76 Binary files /dev/null and b/public/terrain/19/858474/353825.terrain differ diff --git a/public/terrain/19/858474/353826.terrain b/public/terrain/19/858474/353826.terrain new file mode 100644 index 000000000..89a654575 Binary files /dev/null and b/public/terrain/19/858474/353826.terrain differ diff --git a/public/terrain/19/858474/353827.terrain b/public/terrain/19/858474/353827.terrain new file mode 100644 index 000000000..79f765c74 Binary files /dev/null and b/public/terrain/19/858474/353827.terrain differ diff --git a/public/terrain/19/858474/353828.terrain b/public/terrain/19/858474/353828.terrain new file mode 100644 index 000000000..72e071aa9 Binary files /dev/null and b/public/terrain/19/858474/353828.terrain differ diff --git a/public/terrain/19/858474/353829.terrain b/public/terrain/19/858474/353829.terrain new file mode 100644 index 000000000..0f254e0c3 Binary files /dev/null and b/public/terrain/19/858474/353829.terrain differ diff --git a/public/terrain/19/858474/353830.terrain b/public/terrain/19/858474/353830.terrain new file mode 100644 index 000000000..eee5da9d8 Binary files /dev/null and b/public/terrain/19/858474/353830.terrain differ diff --git a/public/terrain/19/858474/353831.terrain b/public/terrain/19/858474/353831.terrain new file mode 100644 index 000000000..75c4c1b7e Binary files /dev/null and b/public/terrain/19/858474/353831.terrain differ diff --git a/public/terrain/19/858474/353832.terrain b/public/terrain/19/858474/353832.terrain new file mode 100644 index 000000000..9104c42d8 Binary files /dev/null and b/public/terrain/19/858474/353832.terrain differ diff --git a/public/terrain/19/858474/353833.terrain b/public/terrain/19/858474/353833.terrain new file mode 100644 index 000000000..269cc40dc Binary files /dev/null and b/public/terrain/19/858474/353833.terrain differ diff --git a/public/terrain/19/858474/353834.terrain b/public/terrain/19/858474/353834.terrain new file mode 100644 index 000000000..cec0bc60f Binary files /dev/null and b/public/terrain/19/858474/353834.terrain differ diff --git a/public/terrain/19/858474/353835.terrain b/public/terrain/19/858474/353835.terrain new file mode 100644 index 000000000..d36e4d4ed Binary files /dev/null and b/public/terrain/19/858474/353835.terrain differ diff --git a/public/terrain/19/858474/353836.terrain b/public/terrain/19/858474/353836.terrain new file mode 100644 index 000000000..cc7b3512a Binary files /dev/null and b/public/terrain/19/858474/353836.terrain differ diff --git a/public/terrain/19/858474/353837.terrain b/public/terrain/19/858474/353837.terrain new file mode 100644 index 000000000..19d9584e9 Binary files /dev/null and b/public/terrain/19/858474/353837.terrain differ diff --git a/public/terrain/19/858474/353838.terrain b/public/terrain/19/858474/353838.terrain new file mode 100644 index 000000000..5bf7afded Binary files /dev/null and b/public/terrain/19/858474/353838.terrain differ diff --git a/public/terrain/19/858474/353839.terrain b/public/terrain/19/858474/353839.terrain new file mode 100644 index 000000000..c66fb18d8 Binary files /dev/null and b/public/terrain/19/858474/353839.terrain differ diff --git a/public/terrain/19/858474/353840.terrain b/public/terrain/19/858474/353840.terrain new file mode 100644 index 000000000..900cb41c0 Binary files /dev/null and b/public/terrain/19/858474/353840.terrain differ diff --git a/public/terrain/19/858474/353841.terrain b/public/terrain/19/858474/353841.terrain new file mode 100644 index 000000000..18970d0c3 Binary files /dev/null and b/public/terrain/19/858474/353841.terrain differ diff --git a/public/terrain/19/858474/353842.terrain b/public/terrain/19/858474/353842.terrain new file mode 100644 index 000000000..c05f1116f Binary files /dev/null and b/public/terrain/19/858474/353842.terrain differ diff --git a/public/terrain/19/858474/353843.terrain b/public/terrain/19/858474/353843.terrain new file mode 100644 index 000000000..2f1c4fdb3 Binary files /dev/null and b/public/terrain/19/858474/353843.terrain differ diff --git a/public/terrain/19/858474/353844.terrain b/public/terrain/19/858474/353844.terrain new file mode 100644 index 000000000..bcd23397e Binary files /dev/null and b/public/terrain/19/858474/353844.terrain differ diff --git a/public/terrain/19/858474/353845.terrain b/public/terrain/19/858474/353845.terrain new file mode 100644 index 000000000..73155b971 Binary files /dev/null and b/public/terrain/19/858474/353845.terrain differ diff --git a/public/terrain/19/858474/353846.terrain b/public/terrain/19/858474/353846.terrain new file mode 100644 index 000000000..c203542f0 Binary files /dev/null and b/public/terrain/19/858474/353846.terrain differ diff --git a/public/terrain/19/858474/353847.terrain b/public/terrain/19/858474/353847.terrain new file mode 100644 index 000000000..7387b7623 Binary files /dev/null and b/public/terrain/19/858474/353847.terrain differ diff --git a/public/terrain/19/858474/353848.terrain b/public/terrain/19/858474/353848.terrain new file mode 100644 index 000000000..d44728aab Binary files /dev/null and b/public/terrain/19/858474/353848.terrain differ diff --git a/public/terrain/19/858474/353849.terrain b/public/terrain/19/858474/353849.terrain new file mode 100644 index 000000000..fdc6d2b25 Binary files /dev/null and b/public/terrain/19/858474/353849.terrain differ diff --git a/public/terrain/19/858474/353850.terrain b/public/terrain/19/858474/353850.terrain new file mode 100644 index 000000000..225cc3373 Binary files /dev/null and b/public/terrain/19/858474/353850.terrain differ diff --git a/public/terrain/19/858474/353851.terrain b/public/terrain/19/858474/353851.terrain new file mode 100644 index 000000000..dd37f80b5 Binary files /dev/null and b/public/terrain/19/858474/353851.terrain differ diff --git a/public/terrain/19/858474/353852.terrain b/public/terrain/19/858474/353852.terrain new file mode 100644 index 000000000..b3890f598 Binary files /dev/null and b/public/terrain/19/858474/353852.terrain differ diff --git a/public/terrain/19/858474/353853.terrain b/public/terrain/19/858474/353853.terrain new file mode 100644 index 000000000..b46e56ff5 Binary files /dev/null and b/public/terrain/19/858474/353853.terrain differ diff --git a/public/terrain/19/858474/353854.terrain b/public/terrain/19/858474/353854.terrain new file mode 100644 index 000000000..66847f156 Binary files /dev/null and b/public/terrain/19/858474/353854.terrain differ diff --git a/public/terrain/19/858474/353855.terrain b/public/terrain/19/858474/353855.terrain new file mode 100644 index 000000000..27339e4d3 Binary files /dev/null and b/public/terrain/19/858474/353855.terrain differ diff --git a/public/terrain/19/858474/353856.terrain b/public/terrain/19/858474/353856.terrain new file mode 100644 index 000000000..59dc951ae Binary files /dev/null and b/public/terrain/19/858474/353856.terrain differ diff --git a/public/terrain/19/858474/353857.terrain b/public/terrain/19/858474/353857.terrain new file mode 100644 index 000000000..6e1a995a2 Binary files /dev/null and b/public/terrain/19/858474/353857.terrain differ diff --git a/public/terrain/19/858474/353858.terrain b/public/terrain/19/858474/353858.terrain new file mode 100644 index 000000000..f36729ed8 Binary files /dev/null and b/public/terrain/19/858474/353858.terrain differ diff --git a/public/terrain/19/858474/353859.terrain b/public/terrain/19/858474/353859.terrain new file mode 100644 index 000000000..eeddc7b5d Binary files /dev/null and b/public/terrain/19/858474/353859.terrain differ diff --git a/public/terrain/19/858474/353860.terrain b/public/terrain/19/858474/353860.terrain new file mode 100644 index 000000000..00ee3dade Binary files /dev/null and b/public/terrain/19/858474/353860.terrain differ diff --git a/public/terrain/19/858474/353861.terrain b/public/terrain/19/858474/353861.terrain new file mode 100644 index 000000000..31646905a Binary files /dev/null and b/public/terrain/19/858474/353861.terrain differ diff --git a/public/terrain/19/858474/353862.terrain b/public/terrain/19/858474/353862.terrain new file mode 100644 index 000000000..8d4d02669 Binary files /dev/null and b/public/terrain/19/858474/353862.terrain differ diff --git a/public/terrain/19/858474/353863.terrain b/public/terrain/19/858474/353863.terrain new file mode 100644 index 000000000..0474a0528 Binary files /dev/null and b/public/terrain/19/858474/353863.terrain differ diff --git a/public/terrain/19/858474/353864.terrain b/public/terrain/19/858474/353864.terrain new file mode 100644 index 000000000..99324d2da Binary files /dev/null and b/public/terrain/19/858474/353864.terrain differ diff --git a/public/terrain/19/858474/353865.terrain b/public/terrain/19/858474/353865.terrain new file mode 100644 index 000000000..0151237b5 Binary files /dev/null and b/public/terrain/19/858474/353865.terrain differ diff --git a/public/terrain/19/858474/353866.terrain b/public/terrain/19/858474/353866.terrain new file mode 100644 index 000000000..326bdcf48 Binary files /dev/null and b/public/terrain/19/858474/353866.terrain differ diff --git a/public/terrain/19/858474/353867.terrain b/public/terrain/19/858474/353867.terrain new file mode 100644 index 000000000..3f982e520 Binary files /dev/null and b/public/terrain/19/858474/353867.terrain differ diff --git a/public/terrain/19/858474/353868.terrain b/public/terrain/19/858474/353868.terrain new file mode 100644 index 000000000..3d968f97f Binary files /dev/null and b/public/terrain/19/858474/353868.terrain differ diff --git a/public/terrain/19/858474/353869.terrain b/public/terrain/19/858474/353869.terrain new file mode 100644 index 000000000..a5293b8c4 Binary files /dev/null and b/public/terrain/19/858474/353869.terrain differ diff --git a/public/terrain/19/858474/353870.terrain b/public/terrain/19/858474/353870.terrain new file mode 100644 index 000000000..7c3bf4c78 Binary files /dev/null and b/public/terrain/19/858474/353870.terrain differ diff --git a/public/terrain/19/858474/353871.terrain b/public/terrain/19/858474/353871.terrain new file mode 100644 index 000000000..a82c5f21d Binary files /dev/null and b/public/terrain/19/858474/353871.terrain differ diff --git a/public/terrain/19/858474/353872.terrain b/public/terrain/19/858474/353872.terrain new file mode 100644 index 000000000..f4a65f480 Binary files /dev/null and b/public/terrain/19/858474/353872.terrain differ diff --git a/public/terrain/19/858474/353873.terrain b/public/terrain/19/858474/353873.terrain new file mode 100644 index 000000000..b29c7444f Binary files /dev/null and b/public/terrain/19/858474/353873.terrain differ diff --git a/public/terrain/19/858474/353874.terrain b/public/terrain/19/858474/353874.terrain new file mode 100644 index 000000000..2c52b81f0 Binary files /dev/null and b/public/terrain/19/858474/353874.terrain differ diff --git a/public/terrain/19/858474/353875.terrain b/public/terrain/19/858474/353875.terrain new file mode 100644 index 000000000..9c5aa82c2 Binary files /dev/null and b/public/terrain/19/858474/353875.terrain differ diff --git a/public/terrain/19/858474/353876.terrain b/public/terrain/19/858474/353876.terrain new file mode 100644 index 000000000..7049de637 Binary files /dev/null and b/public/terrain/19/858474/353876.terrain differ diff --git a/public/terrain/19/858474/353877.terrain b/public/terrain/19/858474/353877.terrain new file mode 100644 index 000000000..ed5e4ecbd Binary files /dev/null and b/public/terrain/19/858474/353877.terrain differ diff --git a/public/terrain/19/858474/353878.terrain b/public/terrain/19/858474/353878.terrain new file mode 100644 index 000000000..122200a4d Binary files /dev/null and b/public/terrain/19/858474/353878.terrain differ diff --git a/public/terrain/19/858474/353879.terrain b/public/terrain/19/858474/353879.terrain new file mode 100644 index 000000000..173c7dc19 Binary files /dev/null and b/public/terrain/19/858474/353879.terrain differ diff --git a/public/terrain/19/858474/353880.terrain b/public/terrain/19/858474/353880.terrain new file mode 100644 index 000000000..d9991c421 Binary files /dev/null and b/public/terrain/19/858474/353880.terrain differ diff --git a/public/terrain/19/858474/353881.terrain b/public/terrain/19/858474/353881.terrain new file mode 100644 index 000000000..aab08fe37 Binary files /dev/null and b/public/terrain/19/858474/353881.terrain differ diff --git a/public/terrain/19/858474/353882.terrain b/public/terrain/19/858474/353882.terrain new file mode 100644 index 000000000..bc94e4aba Binary files /dev/null and b/public/terrain/19/858474/353882.terrain differ diff --git a/public/terrain/19/858474/353883.terrain b/public/terrain/19/858474/353883.terrain new file mode 100644 index 000000000..3021fc265 Binary files /dev/null and b/public/terrain/19/858474/353883.terrain differ diff --git a/public/terrain/19/858474/353884.terrain b/public/terrain/19/858474/353884.terrain new file mode 100644 index 000000000..5d594e33a Binary files /dev/null and b/public/terrain/19/858474/353884.terrain differ diff --git a/public/terrain/19/858474/353885.terrain b/public/terrain/19/858474/353885.terrain new file mode 100644 index 000000000..7f5b56234 Binary files /dev/null and b/public/terrain/19/858474/353885.terrain differ diff --git a/public/terrain/19/858474/353886.terrain b/public/terrain/19/858474/353886.terrain new file mode 100644 index 000000000..9bddb7331 Binary files /dev/null and b/public/terrain/19/858474/353886.terrain differ diff --git a/public/terrain/19/858474/353887.terrain b/public/terrain/19/858474/353887.terrain new file mode 100644 index 000000000..5a664d887 Binary files /dev/null and b/public/terrain/19/858474/353887.terrain differ diff --git a/public/terrain/19/858474/353888.terrain b/public/terrain/19/858474/353888.terrain new file mode 100644 index 000000000..11037e4ac Binary files /dev/null and b/public/terrain/19/858474/353888.terrain differ diff --git a/public/terrain/19/858474/353889.terrain b/public/terrain/19/858474/353889.terrain new file mode 100644 index 000000000..a52eed10a Binary files /dev/null and b/public/terrain/19/858474/353889.terrain differ diff --git a/public/terrain/19/858474/353890.terrain b/public/terrain/19/858474/353890.terrain new file mode 100644 index 000000000..f1b10c350 Binary files /dev/null and b/public/terrain/19/858474/353890.terrain differ diff --git a/public/terrain/19/858474/353891.terrain b/public/terrain/19/858474/353891.terrain new file mode 100644 index 000000000..106b208e2 Binary files /dev/null and b/public/terrain/19/858474/353891.terrain differ diff --git a/public/terrain/19/858474/353892.terrain b/public/terrain/19/858474/353892.terrain new file mode 100644 index 000000000..e688226d4 Binary files /dev/null and b/public/terrain/19/858474/353892.terrain differ diff --git a/public/terrain/19/858474/353893.terrain b/public/terrain/19/858474/353893.terrain new file mode 100644 index 000000000..7f499f421 Binary files /dev/null and b/public/terrain/19/858474/353893.terrain differ diff --git a/public/terrain/19/858474/353894.terrain b/public/terrain/19/858474/353894.terrain new file mode 100644 index 000000000..ebb070b4f Binary files /dev/null and b/public/terrain/19/858474/353894.terrain differ diff --git a/public/terrain/19/858474/353895.terrain b/public/terrain/19/858474/353895.terrain new file mode 100644 index 000000000..1d827bfcc Binary files /dev/null and b/public/terrain/19/858474/353895.terrain differ diff --git a/public/terrain/19/858474/353896.terrain b/public/terrain/19/858474/353896.terrain new file mode 100644 index 000000000..751239fc5 Binary files /dev/null and b/public/terrain/19/858474/353896.terrain differ diff --git a/public/terrain/19/858474/353897.terrain b/public/terrain/19/858474/353897.terrain new file mode 100644 index 000000000..d889770a6 Binary files /dev/null and b/public/terrain/19/858474/353897.terrain differ diff --git a/public/terrain/19/858474/353898.terrain b/public/terrain/19/858474/353898.terrain new file mode 100644 index 000000000..8370564ab Binary files /dev/null and b/public/terrain/19/858474/353898.terrain differ diff --git a/public/terrain/19/858474/353899.terrain b/public/terrain/19/858474/353899.terrain new file mode 100644 index 000000000..9d48eee07 Binary files /dev/null and b/public/terrain/19/858474/353899.terrain differ diff --git a/public/terrain/19/858474/353900.terrain b/public/terrain/19/858474/353900.terrain new file mode 100644 index 000000000..7941d8e4d Binary files /dev/null and b/public/terrain/19/858474/353900.terrain differ diff --git a/public/terrain/19/858474/353901.terrain b/public/terrain/19/858474/353901.terrain new file mode 100644 index 000000000..5bbdad531 Binary files /dev/null and b/public/terrain/19/858474/353901.terrain differ diff --git a/public/terrain/19/858474/353902.terrain b/public/terrain/19/858474/353902.terrain new file mode 100644 index 000000000..303fe26d5 Binary files /dev/null and b/public/terrain/19/858474/353902.terrain differ diff --git a/public/terrain/19/858474/353903.terrain b/public/terrain/19/858474/353903.terrain new file mode 100644 index 000000000..0ea9e275c Binary files /dev/null and b/public/terrain/19/858474/353903.terrain differ diff --git a/public/terrain/19/858474/353904.terrain b/public/terrain/19/858474/353904.terrain new file mode 100644 index 000000000..fb427c2de Binary files /dev/null and b/public/terrain/19/858474/353904.terrain differ diff --git a/public/terrain/19/858474/353905.terrain b/public/terrain/19/858474/353905.terrain new file mode 100644 index 000000000..2295f9516 Binary files /dev/null and b/public/terrain/19/858474/353905.terrain differ diff --git a/public/terrain/19/858474/353906.terrain b/public/terrain/19/858474/353906.terrain new file mode 100644 index 000000000..7ce32b283 Binary files /dev/null and b/public/terrain/19/858474/353906.terrain differ diff --git a/public/terrain/19/858474/353907.terrain b/public/terrain/19/858474/353907.terrain new file mode 100644 index 000000000..8e7ae1ad4 Binary files /dev/null and b/public/terrain/19/858474/353907.terrain differ diff --git a/public/terrain/19/858474/353908.terrain b/public/terrain/19/858474/353908.terrain new file mode 100644 index 000000000..86de21b8a Binary files /dev/null and b/public/terrain/19/858474/353908.terrain differ diff --git a/public/terrain/19/858474/353909.terrain b/public/terrain/19/858474/353909.terrain new file mode 100644 index 000000000..9084e68b0 Binary files /dev/null and b/public/terrain/19/858474/353909.terrain differ diff --git a/public/terrain/19/858474/353910.terrain b/public/terrain/19/858474/353910.terrain new file mode 100644 index 000000000..194ba92b7 Binary files /dev/null and b/public/terrain/19/858474/353910.terrain differ diff --git a/public/terrain/19/858474/353911.terrain b/public/terrain/19/858474/353911.terrain new file mode 100644 index 000000000..3d8bf61a8 Binary files /dev/null and b/public/terrain/19/858474/353911.terrain differ diff --git a/public/terrain/19/858474/353912.terrain b/public/terrain/19/858474/353912.terrain new file mode 100644 index 000000000..c81b749ba Binary files /dev/null and b/public/terrain/19/858474/353912.terrain differ diff --git a/public/terrain/19/858474/353913.terrain b/public/terrain/19/858474/353913.terrain new file mode 100644 index 000000000..99e8b5ae1 Binary files /dev/null and b/public/terrain/19/858474/353913.terrain differ diff --git a/public/terrain/19/858474/353914.terrain b/public/terrain/19/858474/353914.terrain new file mode 100644 index 000000000..5092567fc Binary files /dev/null and b/public/terrain/19/858474/353914.terrain differ diff --git a/public/terrain/19/858474/353915.terrain b/public/terrain/19/858474/353915.terrain new file mode 100644 index 000000000..eec566bc4 Binary files /dev/null and b/public/terrain/19/858474/353915.terrain differ diff --git a/public/terrain/19/858474/353916.terrain b/public/terrain/19/858474/353916.terrain new file mode 100644 index 000000000..0aec53e80 Binary files /dev/null and b/public/terrain/19/858474/353916.terrain differ diff --git a/public/terrain/19/858474/353917.terrain b/public/terrain/19/858474/353917.terrain new file mode 100644 index 000000000..70b249c2a Binary files /dev/null and b/public/terrain/19/858474/353917.terrain differ diff --git a/public/terrain/19/858474/353918.terrain b/public/terrain/19/858474/353918.terrain new file mode 100644 index 000000000..e5bc1f711 Binary files /dev/null and b/public/terrain/19/858474/353918.terrain differ diff --git a/public/terrain/19/858474/353919.terrain b/public/terrain/19/858474/353919.terrain new file mode 100644 index 000000000..b69fdbd6d Binary files /dev/null and b/public/terrain/19/858474/353919.terrain differ diff --git a/public/terrain/19/858474/353920.terrain b/public/terrain/19/858474/353920.terrain new file mode 100644 index 000000000..f055f393d Binary files /dev/null and b/public/terrain/19/858474/353920.terrain differ diff --git a/public/terrain/19/858474/353921.terrain b/public/terrain/19/858474/353921.terrain new file mode 100644 index 000000000..1fdb7faae Binary files /dev/null and b/public/terrain/19/858474/353921.terrain differ diff --git a/public/terrain/19/858474/353922.terrain b/public/terrain/19/858474/353922.terrain new file mode 100644 index 000000000..e2782289f Binary files /dev/null and b/public/terrain/19/858474/353922.terrain differ diff --git a/public/terrain/19/858474/353923.terrain b/public/terrain/19/858474/353923.terrain new file mode 100644 index 000000000..648264f4e Binary files /dev/null and b/public/terrain/19/858474/353923.terrain differ diff --git a/public/terrain/19/858474/353924.terrain b/public/terrain/19/858474/353924.terrain new file mode 100644 index 000000000..20d987c22 Binary files /dev/null and b/public/terrain/19/858474/353924.terrain differ diff --git a/public/terrain/19/858474/353925.terrain b/public/terrain/19/858474/353925.terrain new file mode 100644 index 000000000..c0c09ed74 Binary files /dev/null and b/public/terrain/19/858474/353925.terrain differ diff --git a/public/terrain/19/858474/353926.terrain b/public/terrain/19/858474/353926.terrain new file mode 100644 index 000000000..8f791a836 Binary files /dev/null and b/public/terrain/19/858474/353926.terrain differ diff --git a/public/terrain/19/858474/353927.terrain b/public/terrain/19/858474/353927.terrain new file mode 100644 index 000000000..1909f6b0a Binary files /dev/null and b/public/terrain/19/858474/353927.terrain differ diff --git a/public/terrain/19/858474/353928.terrain b/public/terrain/19/858474/353928.terrain new file mode 100644 index 000000000..111bea54b Binary files /dev/null and b/public/terrain/19/858474/353928.terrain differ diff --git a/public/terrain/19/858474/353929.terrain b/public/terrain/19/858474/353929.terrain new file mode 100644 index 000000000..8fd06f370 Binary files /dev/null and b/public/terrain/19/858474/353929.terrain differ diff --git a/public/terrain/19/858474/353930.terrain b/public/terrain/19/858474/353930.terrain new file mode 100644 index 000000000..c42a430e3 Binary files /dev/null and b/public/terrain/19/858474/353930.terrain differ diff --git a/public/terrain/19/858474/353931.terrain b/public/terrain/19/858474/353931.terrain new file mode 100644 index 000000000..a9fbd255e Binary files /dev/null and b/public/terrain/19/858474/353931.terrain differ diff --git a/public/terrain/19/858474/353932.terrain b/public/terrain/19/858474/353932.terrain new file mode 100644 index 000000000..f5ef621dc Binary files /dev/null and b/public/terrain/19/858474/353932.terrain differ diff --git a/public/terrain/19/858474/353933.terrain b/public/terrain/19/858474/353933.terrain new file mode 100644 index 000000000..b786421fe Binary files /dev/null and b/public/terrain/19/858474/353933.terrain differ diff --git a/public/terrain/19/858474/353934.terrain b/public/terrain/19/858474/353934.terrain new file mode 100644 index 000000000..f72459acb Binary files /dev/null and b/public/terrain/19/858474/353934.terrain differ diff --git a/public/terrain/19/858474/353935.terrain b/public/terrain/19/858474/353935.terrain new file mode 100644 index 000000000..6fac4d3f8 Binary files /dev/null and b/public/terrain/19/858474/353935.terrain differ diff --git a/public/terrain/19/858474/353936.terrain b/public/terrain/19/858474/353936.terrain new file mode 100644 index 000000000..529868e4e Binary files /dev/null and b/public/terrain/19/858474/353936.terrain differ diff --git a/public/terrain/19/858474/353937.terrain b/public/terrain/19/858474/353937.terrain new file mode 100644 index 000000000..6db01a7ec Binary files /dev/null and b/public/terrain/19/858474/353937.terrain differ diff --git a/public/terrain/19/858474/353938.terrain b/public/terrain/19/858474/353938.terrain new file mode 100644 index 000000000..2ffb168d8 Binary files /dev/null and b/public/terrain/19/858474/353938.terrain differ diff --git a/public/terrain/19/858474/353939.terrain b/public/terrain/19/858474/353939.terrain new file mode 100644 index 000000000..3a2cd9685 Binary files /dev/null and b/public/terrain/19/858474/353939.terrain differ diff --git a/public/terrain/19/858474/353940.terrain b/public/terrain/19/858474/353940.terrain new file mode 100644 index 000000000..4fb6cc664 Binary files /dev/null and b/public/terrain/19/858474/353940.terrain differ diff --git a/public/terrain/19/858474/353941.terrain b/public/terrain/19/858474/353941.terrain new file mode 100644 index 000000000..8acae6d01 Binary files /dev/null and b/public/terrain/19/858474/353941.terrain differ diff --git a/public/terrain/19/858474/353942.terrain b/public/terrain/19/858474/353942.terrain new file mode 100644 index 000000000..317acdb11 Binary files /dev/null and b/public/terrain/19/858474/353942.terrain differ diff --git a/public/terrain/19/858474/353943.terrain b/public/terrain/19/858474/353943.terrain new file mode 100644 index 000000000..3c4bb3945 Binary files /dev/null and b/public/terrain/19/858474/353943.terrain differ diff --git a/public/terrain/19/858474/353944.terrain b/public/terrain/19/858474/353944.terrain new file mode 100644 index 000000000..62b592c51 Binary files /dev/null and b/public/terrain/19/858474/353944.terrain differ diff --git a/public/terrain/19/858474/353945.terrain b/public/terrain/19/858474/353945.terrain new file mode 100644 index 000000000..7e8340b1a Binary files /dev/null and b/public/terrain/19/858474/353945.terrain differ diff --git a/public/terrain/19/858474/353946.terrain b/public/terrain/19/858474/353946.terrain new file mode 100644 index 000000000..3cf572b0c Binary files /dev/null and b/public/terrain/19/858474/353946.terrain differ diff --git a/public/terrain/19/858474/353947.terrain b/public/terrain/19/858474/353947.terrain new file mode 100644 index 000000000..e8b72ef6a Binary files /dev/null and b/public/terrain/19/858474/353947.terrain differ diff --git a/public/terrain/19/858474/353948.terrain b/public/terrain/19/858474/353948.terrain new file mode 100644 index 000000000..4cf5432f5 Binary files /dev/null and b/public/terrain/19/858474/353948.terrain differ diff --git a/public/terrain/19/858474/353949.terrain b/public/terrain/19/858474/353949.terrain new file mode 100644 index 000000000..fec43114d Binary files /dev/null and b/public/terrain/19/858474/353949.terrain differ diff --git a/public/terrain/19/858474/353950.terrain b/public/terrain/19/858474/353950.terrain new file mode 100644 index 000000000..1e4fd2deb Binary files /dev/null and b/public/terrain/19/858474/353950.terrain differ diff --git a/public/terrain/19/858474/353951.terrain b/public/terrain/19/858474/353951.terrain new file mode 100644 index 000000000..5f6bd4471 Binary files /dev/null and b/public/terrain/19/858474/353951.terrain differ diff --git a/public/terrain/19/858474/353952.terrain b/public/terrain/19/858474/353952.terrain new file mode 100644 index 000000000..cc8330f2c Binary files /dev/null and b/public/terrain/19/858474/353952.terrain differ diff --git a/public/terrain/19/858474/353953.terrain b/public/terrain/19/858474/353953.terrain new file mode 100644 index 000000000..d1e815da9 Binary files /dev/null and b/public/terrain/19/858474/353953.terrain differ diff --git a/public/terrain/19/858474/353954.terrain b/public/terrain/19/858474/353954.terrain new file mode 100644 index 000000000..e1afc7b6a Binary files /dev/null and b/public/terrain/19/858474/353954.terrain differ diff --git a/public/terrain/19/858474/353955.terrain b/public/terrain/19/858474/353955.terrain new file mode 100644 index 000000000..34f0840b7 Binary files /dev/null and b/public/terrain/19/858474/353955.terrain differ diff --git a/public/terrain/19/858474/353956.terrain b/public/terrain/19/858474/353956.terrain new file mode 100644 index 000000000..225c2fc60 Binary files /dev/null and b/public/terrain/19/858474/353956.terrain differ diff --git a/public/terrain/19/858474/353957.terrain b/public/terrain/19/858474/353957.terrain new file mode 100644 index 000000000..f11ccec7d Binary files /dev/null and b/public/terrain/19/858474/353957.terrain differ diff --git a/public/terrain/19/858474/353958.terrain b/public/terrain/19/858474/353958.terrain new file mode 100644 index 000000000..b533062ae Binary files /dev/null and b/public/terrain/19/858474/353958.terrain differ diff --git a/public/terrain/19/858474/353959.terrain b/public/terrain/19/858474/353959.terrain new file mode 100644 index 000000000..0e3c2348d Binary files /dev/null and b/public/terrain/19/858474/353959.terrain differ diff --git a/public/terrain/19/858474/353960.terrain b/public/terrain/19/858474/353960.terrain new file mode 100644 index 000000000..84a9ffeac Binary files /dev/null and b/public/terrain/19/858474/353960.terrain differ diff --git a/public/terrain/19/858474/353961.terrain b/public/terrain/19/858474/353961.terrain new file mode 100644 index 000000000..14472ca33 Binary files /dev/null and b/public/terrain/19/858474/353961.terrain differ diff --git a/public/terrain/19/858474/353962.terrain b/public/terrain/19/858474/353962.terrain new file mode 100644 index 000000000..6fb6a34f6 Binary files /dev/null and b/public/terrain/19/858474/353962.terrain differ diff --git a/public/terrain/19/858474/353963.terrain b/public/terrain/19/858474/353963.terrain new file mode 100644 index 000000000..473a25678 Binary files /dev/null and b/public/terrain/19/858474/353963.terrain differ diff --git a/public/terrain/19/858474/353964.terrain b/public/terrain/19/858474/353964.terrain new file mode 100644 index 000000000..36a03365d Binary files /dev/null and b/public/terrain/19/858474/353964.terrain differ diff --git a/public/terrain/19/858474/353965.terrain b/public/terrain/19/858474/353965.terrain new file mode 100644 index 000000000..8697f6641 Binary files /dev/null and b/public/terrain/19/858474/353965.terrain differ diff --git a/public/terrain/19/858474/353966.terrain b/public/terrain/19/858474/353966.terrain new file mode 100644 index 000000000..d0d15b56f Binary files /dev/null and b/public/terrain/19/858474/353966.terrain differ diff --git a/public/terrain/19/858474/353967.terrain b/public/terrain/19/858474/353967.terrain new file mode 100644 index 000000000..b6fb2d7f4 Binary files /dev/null and b/public/terrain/19/858474/353967.terrain differ diff --git a/public/terrain/19/858474/353968.terrain b/public/terrain/19/858474/353968.terrain new file mode 100644 index 000000000..bdfa8f186 Binary files /dev/null and b/public/terrain/19/858474/353968.terrain differ diff --git a/public/terrain/19/858474/353969.terrain b/public/terrain/19/858474/353969.terrain new file mode 100644 index 000000000..0fa555f40 Binary files /dev/null and b/public/terrain/19/858474/353969.terrain differ diff --git a/public/terrain/19/858474/353970.terrain b/public/terrain/19/858474/353970.terrain new file mode 100644 index 000000000..d70a55d7f Binary files /dev/null and b/public/terrain/19/858474/353970.terrain differ diff --git a/public/terrain/19/858474/353971.terrain b/public/terrain/19/858474/353971.terrain new file mode 100644 index 000000000..aa7bef09d Binary files /dev/null and b/public/terrain/19/858474/353971.terrain differ diff --git a/public/terrain/19/858474/353972.terrain b/public/terrain/19/858474/353972.terrain new file mode 100644 index 000000000..beb266ff7 Binary files /dev/null and b/public/terrain/19/858474/353972.terrain differ diff --git a/public/terrain/19/858474/353973.terrain b/public/terrain/19/858474/353973.terrain new file mode 100644 index 000000000..a9d2d82d1 Binary files /dev/null and b/public/terrain/19/858474/353973.terrain differ diff --git a/public/terrain/19/858474/353974.terrain b/public/terrain/19/858474/353974.terrain new file mode 100644 index 000000000..f5c47fa9b Binary files /dev/null and b/public/terrain/19/858474/353974.terrain differ diff --git a/public/terrain/19/858474/353975.terrain b/public/terrain/19/858474/353975.terrain new file mode 100644 index 000000000..3a3654547 Binary files /dev/null and b/public/terrain/19/858474/353975.terrain differ diff --git a/public/terrain/19/858474/353976.terrain b/public/terrain/19/858474/353976.terrain new file mode 100644 index 000000000..efe6b8c1b Binary files /dev/null and b/public/terrain/19/858474/353976.terrain differ diff --git a/public/terrain/19/858474/353977.terrain b/public/terrain/19/858474/353977.terrain new file mode 100644 index 000000000..65f8298c4 Binary files /dev/null and b/public/terrain/19/858474/353977.terrain differ diff --git a/public/terrain/19/858474/353978.terrain b/public/terrain/19/858474/353978.terrain new file mode 100644 index 000000000..4938121e6 Binary files /dev/null and b/public/terrain/19/858474/353978.terrain differ diff --git a/public/terrain/19/858474/353979.terrain b/public/terrain/19/858474/353979.terrain new file mode 100644 index 000000000..e60b2c03a Binary files /dev/null and b/public/terrain/19/858474/353979.terrain differ diff --git a/public/terrain/19/858474/353980.terrain b/public/terrain/19/858474/353980.terrain new file mode 100644 index 000000000..f092de56d Binary files /dev/null and b/public/terrain/19/858474/353980.terrain differ diff --git a/public/terrain/19/858474/353981.terrain b/public/terrain/19/858474/353981.terrain new file mode 100644 index 000000000..77a26f3f9 Binary files /dev/null and b/public/terrain/19/858474/353981.terrain differ diff --git a/public/terrain/19/858474/353982.terrain b/public/terrain/19/858474/353982.terrain new file mode 100644 index 000000000..52190601f Binary files /dev/null and b/public/terrain/19/858474/353982.terrain differ diff --git a/public/terrain/19/858474/353983.terrain b/public/terrain/19/858474/353983.terrain new file mode 100644 index 000000000..e2c99c408 Binary files /dev/null and b/public/terrain/19/858474/353983.terrain differ diff --git a/public/terrain/19/858474/353984.terrain b/public/terrain/19/858474/353984.terrain new file mode 100644 index 000000000..55392b0a6 Binary files /dev/null and b/public/terrain/19/858474/353984.terrain differ diff --git a/public/terrain/19/858474/353985.terrain b/public/terrain/19/858474/353985.terrain new file mode 100644 index 000000000..3a9804415 Binary files /dev/null and b/public/terrain/19/858474/353985.terrain differ diff --git a/public/terrain/19/858474/353986.terrain b/public/terrain/19/858474/353986.terrain new file mode 100644 index 000000000..8980ca38f Binary files /dev/null and b/public/terrain/19/858474/353986.terrain differ diff --git a/public/terrain/19/858474/353987.terrain b/public/terrain/19/858474/353987.terrain new file mode 100644 index 000000000..d45aca6e0 Binary files /dev/null and b/public/terrain/19/858474/353987.terrain differ diff --git a/public/terrain/19/858474/353988.terrain b/public/terrain/19/858474/353988.terrain new file mode 100644 index 000000000..e77a7d7d8 Binary files /dev/null and b/public/terrain/19/858474/353988.terrain differ diff --git a/public/terrain/19/858474/353989.terrain b/public/terrain/19/858474/353989.terrain new file mode 100644 index 000000000..bb3a1aa51 Binary files /dev/null and b/public/terrain/19/858474/353989.terrain differ diff --git a/public/terrain/19/858474/353990.terrain b/public/terrain/19/858474/353990.terrain new file mode 100644 index 000000000..1fe27b665 Binary files /dev/null and b/public/terrain/19/858474/353990.terrain differ diff --git a/public/terrain/19/858474/353991.terrain b/public/terrain/19/858474/353991.terrain new file mode 100644 index 000000000..1b7e84e1a Binary files /dev/null and b/public/terrain/19/858474/353991.terrain differ diff --git a/public/terrain/19/858474/353992.terrain b/public/terrain/19/858474/353992.terrain new file mode 100644 index 000000000..ab9f3ce7a Binary files /dev/null and b/public/terrain/19/858474/353992.terrain differ diff --git a/public/terrain/19/858474/353993.terrain b/public/terrain/19/858474/353993.terrain new file mode 100644 index 000000000..e68582424 Binary files /dev/null and b/public/terrain/19/858474/353993.terrain differ diff --git a/public/terrain/19/858474/353994.terrain b/public/terrain/19/858474/353994.terrain new file mode 100644 index 000000000..adfb11945 Binary files /dev/null and b/public/terrain/19/858474/353994.terrain differ diff --git a/public/terrain/19/858474/353995.terrain b/public/terrain/19/858474/353995.terrain new file mode 100644 index 000000000..7f2e71b27 Binary files /dev/null and b/public/terrain/19/858474/353995.terrain differ diff --git a/public/terrain/19/858474/353996.terrain b/public/terrain/19/858474/353996.terrain new file mode 100644 index 000000000..3d35e73d0 Binary files /dev/null and b/public/terrain/19/858474/353996.terrain differ diff --git a/public/terrain/19/858474/353997.terrain b/public/terrain/19/858474/353997.terrain new file mode 100644 index 000000000..5cb0536bd Binary files /dev/null and b/public/terrain/19/858474/353997.terrain differ diff --git a/public/terrain/19/858474/353998.terrain b/public/terrain/19/858474/353998.terrain new file mode 100644 index 000000000..556279077 Binary files /dev/null and b/public/terrain/19/858474/353998.terrain differ diff --git a/public/terrain/19/858474/353999.terrain b/public/terrain/19/858474/353999.terrain new file mode 100644 index 000000000..e995a11cd Binary files /dev/null and b/public/terrain/19/858474/353999.terrain differ diff --git a/public/terrain/19/858474/354000.terrain b/public/terrain/19/858474/354000.terrain new file mode 100644 index 000000000..06dae025b Binary files /dev/null and b/public/terrain/19/858474/354000.terrain differ diff --git a/public/terrain/19/858474/354001.terrain b/public/terrain/19/858474/354001.terrain new file mode 100644 index 000000000..f215b1591 Binary files /dev/null and b/public/terrain/19/858474/354001.terrain differ diff --git a/public/terrain/19/858474/354002.terrain b/public/terrain/19/858474/354002.terrain new file mode 100644 index 000000000..7c4314c2c Binary files /dev/null and b/public/terrain/19/858474/354002.terrain differ diff --git a/public/terrain/19/858474/354003.terrain b/public/terrain/19/858474/354003.terrain new file mode 100644 index 000000000..8c185273f Binary files /dev/null and b/public/terrain/19/858474/354003.terrain differ diff --git a/public/terrain/19/858474/354004.terrain b/public/terrain/19/858474/354004.terrain new file mode 100644 index 000000000..fb4e40e35 Binary files /dev/null and b/public/terrain/19/858474/354004.terrain differ diff --git a/public/terrain/19/858474/354005.terrain b/public/terrain/19/858474/354005.terrain new file mode 100644 index 000000000..15b418b98 Binary files /dev/null and b/public/terrain/19/858474/354005.terrain differ diff --git a/public/terrain/19/858474/354006.terrain b/public/terrain/19/858474/354006.terrain new file mode 100644 index 000000000..22bf2c52f Binary files /dev/null and b/public/terrain/19/858474/354006.terrain differ diff --git a/public/terrain/19/858474/354007.terrain b/public/terrain/19/858474/354007.terrain new file mode 100644 index 000000000..0a315bfe1 Binary files /dev/null and b/public/terrain/19/858474/354007.terrain differ diff --git a/public/terrain/19/858474/354008.terrain b/public/terrain/19/858474/354008.terrain new file mode 100644 index 000000000..4ec37776c Binary files /dev/null and b/public/terrain/19/858474/354008.terrain differ diff --git a/public/terrain/19/858474/354009.terrain b/public/terrain/19/858474/354009.terrain new file mode 100644 index 000000000..ee37ae3b6 Binary files /dev/null and b/public/terrain/19/858474/354009.terrain differ diff --git a/public/terrain/19/858474/354010.terrain b/public/terrain/19/858474/354010.terrain new file mode 100644 index 000000000..bc9c8c241 Binary files /dev/null and b/public/terrain/19/858474/354010.terrain differ diff --git a/public/terrain/19/858474/354011.terrain b/public/terrain/19/858474/354011.terrain new file mode 100644 index 000000000..600bfa8f1 Binary files /dev/null and b/public/terrain/19/858474/354011.terrain differ diff --git a/public/terrain/19/858474/354012.terrain b/public/terrain/19/858474/354012.terrain new file mode 100644 index 000000000..c98081599 Binary files /dev/null and b/public/terrain/19/858474/354012.terrain differ diff --git a/public/terrain/19/858474/354013.terrain b/public/terrain/19/858474/354013.terrain new file mode 100644 index 000000000..b81b6e1fd Binary files /dev/null and b/public/terrain/19/858474/354013.terrain differ diff --git a/public/terrain/19/858474/354014.terrain b/public/terrain/19/858474/354014.terrain new file mode 100644 index 000000000..d94a675da Binary files /dev/null and b/public/terrain/19/858474/354014.terrain differ diff --git a/public/terrain/19/858474/354015.terrain b/public/terrain/19/858474/354015.terrain new file mode 100644 index 000000000..9dd061b9d Binary files /dev/null and b/public/terrain/19/858474/354015.terrain differ diff --git a/public/terrain/19/858474/354016.terrain b/public/terrain/19/858474/354016.terrain new file mode 100644 index 000000000..232f1fe8b Binary files /dev/null and b/public/terrain/19/858474/354016.terrain differ diff --git a/public/terrain/19/858474/354017.terrain b/public/terrain/19/858474/354017.terrain new file mode 100644 index 000000000..3ef752993 Binary files /dev/null and b/public/terrain/19/858474/354017.terrain differ diff --git a/public/terrain/19/858474/354018.terrain b/public/terrain/19/858474/354018.terrain new file mode 100644 index 000000000..22ba893b0 Binary files /dev/null and b/public/terrain/19/858474/354018.terrain differ diff --git a/public/terrain/19/858474/354019.terrain b/public/terrain/19/858474/354019.terrain new file mode 100644 index 000000000..ef75c9291 Binary files /dev/null and b/public/terrain/19/858474/354019.terrain differ diff --git a/public/terrain/19/858474/354020.terrain b/public/terrain/19/858474/354020.terrain new file mode 100644 index 000000000..f6f449ad5 Binary files /dev/null and b/public/terrain/19/858474/354020.terrain differ diff --git a/public/terrain/19/858474/354021.terrain b/public/terrain/19/858474/354021.terrain new file mode 100644 index 000000000..e9a95fea8 Binary files /dev/null and b/public/terrain/19/858474/354021.terrain differ diff --git a/public/terrain/19/858474/354022.terrain b/public/terrain/19/858474/354022.terrain new file mode 100644 index 000000000..b89586895 Binary files /dev/null and b/public/terrain/19/858474/354022.terrain differ diff --git a/public/terrain/19/858474/354023.terrain b/public/terrain/19/858474/354023.terrain new file mode 100644 index 000000000..e0592d85d Binary files /dev/null and b/public/terrain/19/858474/354023.terrain differ diff --git a/public/terrain/19/858474/354024.terrain b/public/terrain/19/858474/354024.terrain new file mode 100644 index 000000000..4b517d823 Binary files /dev/null and b/public/terrain/19/858474/354024.terrain differ diff --git a/public/terrain/19/858474/354025.terrain b/public/terrain/19/858474/354025.terrain new file mode 100644 index 000000000..a68f9e2cf Binary files /dev/null and b/public/terrain/19/858474/354025.terrain differ diff --git a/public/terrain/19/858474/354026.terrain b/public/terrain/19/858474/354026.terrain new file mode 100644 index 000000000..5fa051546 Binary files /dev/null and b/public/terrain/19/858474/354026.terrain differ diff --git a/public/terrain/19/858474/354027.terrain b/public/terrain/19/858474/354027.terrain new file mode 100644 index 000000000..aa5903a74 Binary files /dev/null and b/public/terrain/19/858474/354027.terrain differ diff --git a/public/terrain/19/858474/354028.terrain b/public/terrain/19/858474/354028.terrain new file mode 100644 index 000000000..154ab8add Binary files /dev/null and b/public/terrain/19/858474/354028.terrain differ diff --git a/public/terrain/19/858474/354029.terrain b/public/terrain/19/858474/354029.terrain new file mode 100644 index 000000000..c9323551c Binary files /dev/null and b/public/terrain/19/858474/354029.terrain differ diff --git a/public/terrain/19/858474/354030.terrain b/public/terrain/19/858474/354030.terrain new file mode 100644 index 000000000..92377be15 Binary files /dev/null and b/public/terrain/19/858474/354030.terrain differ diff --git a/public/terrain/19/858474/354031.terrain b/public/terrain/19/858474/354031.terrain new file mode 100644 index 000000000..83734a15f Binary files /dev/null and b/public/terrain/19/858474/354031.terrain differ diff --git a/public/terrain/19/858474/354032.terrain b/public/terrain/19/858474/354032.terrain new file mode 100644 index 000000000..3139d88a9 Binary files /dev/null and b/public/terrain/19/858474/354032.terrain differ diff --git a/public/terrain/19/858474/354033.terrain b/public/terrain/19/858474/354033.terrain new file mode 100644 index 000000000..e2750f785 Binary files /dev/null and b/public/terrain/19/858474/354033.terrain differ diff --git a/public/terrain/19/858474/354034.terrain b/public/terrain/19/858474/354034.terrain new file mode 100644 index 000000000..f73270ab0 Binary files /dev/null and b/public/terrain/19/858474/354034.terrain differ diff --git a/public/terrain/19/858474/354035.terrain b/public/terrain/19/858474/354035.terrain new file mode 100644 index 000000000..6463bde79 Binary files /dev/null and b/public/terrain/19/858474/354035.terrain differ diff --git a/public/terrain/19/858474/354036.terrain b/public/terrain/19/858474/354036.terrain new file mode 100644 index 000000000..b4fd6113e Binary files /dev/null and b/public/terrain/19/858474/354036.terrain differ diff --git a/public/terrain/19/858474/354037.terrain b/public/terrain/19/858474/354037.terrain new file mode 100644 index 000000000..c8e98001b Binary files /dev/null and b/public/terrain/19/858474/354037.terrain differ diff --git a/public/terrain/19/858474/354038.terrain b/public/terrain/19/858474/354038.terrain new file mode 100644 index 000000000..a60fd8429 Binary files /dev/null and b/public/terrain/19/858474/354038.terrain differ diff --git a/public/terrain/19/858474/354039.terrain b/public/terrain/19/858474/354039.terrain new file mode 100644 index 000000000..6f1b26c8e Binary files /dev/null and b/public/terrain/19/858474/354039.terrain differ diff --git a/public/terrain/19/858474/354040.terrain b/public/terrain/19/858474/354040.terrain new file mode 100644 index 000000000..044412818 Binary files /dev/null and b/public/terrain/19/858474/354040.terrain differ diff --git a/public/terrain/19/858474/354041.terrain b/public/terrain/19/858474/354041.terrain new file mode 100644 index 000000000..12252dd58 Binary files /dev/null and b/public/terrain/19/858474/354041.terrain differ diff --git a/public/terrain/19/858474/354042.terrain b/public/terrain/19/858474/354042.terrain new file mode 100644 index 000000000..504b13de5 Binary files /dev/null and b/public/terrain/19/858474/354042.terrain differ diff --git a/public/terrain/19/858474/354043.terrain b/public/terrain/19/858474/354043.terrain new file mode 100644 index 000000000..7781944eb Binary files /dev/null and b/public/terrain/19/858474/354043.terrain differ diff --git a/public/terrain/19/858474/354044.terrain b/public/terrain/19/858474/354044.terrain new file mode 100644 index 000000000..820548a1f Binary files /dev/null and b/public/terrain/19/858474/354044.terrain differ diff --git a/public/terrain/19/858474/354045.terrain b/public/terrain/19/858474/354045.terrain new file mode 100644 index 000000000..698fb0f18 Binary files /dev/null and b/public/terrain/19/858474/354045.terrain differ diff --git a/public/terrain/19/858474/354046.terrain b/public/terrain/19/858474/354046.terrain new file mode 100644 index 000000000..ef760dfd0 Binary files /dev/null and b/public/terrain/19/858474/354046.terrain differ diff --git a/public/terrain/19/858474/354047.terrain b/public/terrain/19/858474/354047.terrain new file mode 100644 index 000000000..fcd96d530 Binary files /dev/null and b/public/terrain/19/858474/354047.terrain differ diff --git a/public/terrain/19/858474/354048.terrain b/public/terrain/19/858474/354048.terrain new file mode 100644 index 000000000..50ffffc5e Binary files /dev/null and b/public/terrain/19/858474/354048.terrain differ diff --git a/public/terrain/19/858474/354049.terrain b/public/terrain/19/858474/354049.terrain new file mode 100644 index 000000000..b88e76215 Binary files /dev/null and b/public/terrain/19/858474/354049.terrain differ diff --git a/public/terrain/19/858474/354050.terrain b/public/terrain/19/858474/354050.terrain new file mode 100644 index 000000000..374700961 Binary files /dev/null and b/public/terrain/19/858474/354050.terrain differ diff --git a/public/terrain/19/858474/354051.terrain b/public/terrain/19/858474/354051.terrain new file mode 100644 index 000000000..282e4da82 Binary files /dev/null and b/public/terrain/19/858474/354051.terrain differ diff --git a/public/terrain/19/858474/354052.terrain b/public/terrain/19/858474/354052.terrain new file mode 100644 index 000000000..0501df774 Binary files /dev/null and b/public/terrain/19/858474/354052.terrain differ diff --git a/public/terrain/19/858474/354053.terrain b/public/terrain/19/858474/354053.terrain new file mode 100644 index 000000000..cdefdb2f7 Binary files /dev/null and b/public/terrain/19/858474/354053.terrain differ diff --git a/public/terrain/19/858474/354054.terrain b/public/terrain/19/858474/354054.terrain new file mode 100644 index 000000000..9aa9fc18c Binary files /dev/null and b/public/terrain/19/858474/354054.terrain differ diff --git a/public/terrain/19/858474/354055.terrain b/public/terrain/19/858474/354055.terrain new file mode 100644 index 000000000..13e1b37a6 Binary files /dev/null and b/public/terrain/19/858474/354055.terrain differ diff --git a/public/terrain/19/858474/354056.terrain b/public/terrain/19/858474/354056.terrain new file mode 100644 index 000000000..8b6492f51 Binary files /dev/null and b/public/terrain/19/858474/354056.terrain differ diff --git a/public/terrain/19/858474/354057.terrain b/public/terrain/19/858474/354057.terrain new file mode 100644 index 000000000..cce046c63 Binary files /dev/null and b/public/terrain/19/858474/354057.terrain differ diff --git a/public/terrain/19/858474/354058.terrain b/public/terrain/19/858474/354058.terrain new file mode 100644 index 000000000..ccfe053e5 Binary files /dev/null and b/public/terrain/19/858474/354058.terrain differ diff --git a/public/terrain/19/858474/354059.terrain b/public/terrain/19/858474/354059.terrain new file mode 100644 index 000000000..12456b81a Binary files /dev/null and b/public/terrain/19/858474/354059.terrain differ diff --git a/public/terrain/19/858475/353743.terrain b/public/terrain/19/858475/353743.terrain new file mode 100644 index 000000000..0af9cec16 Binary files /dev/null and b/public/terrain/19/858475/353743.terrain differ diff --git a/public/terrain/19/858475/353744.terrain b/public/terrain/19/858475/353744.terrain new file mode 100644 index 000000000..fc9e0e05a Binary files /dev/null and b/public/terrain/19/858475/353744.terrain differ diff --git a/public/terrain/19/858475/353745.terrain b/public/terrain/19/858475/353745.terrain new file mode 100644 index 000000000..ca6100ce3 Binary files /dev/null and b/public/terrain/19/858475/353745.terrain differ diff --git a/public/terrain/19/858475/353746.terrain b/public/terrain/19/858475/353746.terrain new file mode 100644 index 000000000..f34c74b56 Binary files /dev/null and b/public/terrain/19/858475/353746.terrain differ diff --git a/public/terrain/19/858475/353747.terrain b/public/terrain/19/858475/353747.terrain new file mode 100644 index 000000000..a8874fa6b Binary files /dev/null and b/public/terrain/19/858475/353747.terrain differ diff --git a/public/terrain/19/858475/353748.terrain b/public/terrain/19/858475/353748.terrain new file mode 100644 index 000000000..ad7bb6004 Binary files /dev/null and b/public/terrain/19/858475/353748.terrain differ diff --git a/public/terrain/19/858475/353749.terrain b/public/terrain/19/858475/353749.terrain new file mode 100644 index 000000000..cb4b97d1c Binary files /dev/null and b/public/terrain/19/858475/353749.terrain differ diff --git a/public/terrain/19/858475/353750.terrain b/public/terrain/19/858475/353750.terrain new file mode 100644 index 000000000..a0c6f465d Binary files /dev/null and b/public/terrain/19/858475/353750.terrain differ diff --git a/public/terrain/19/858475/353751.terrain b/public/terrain/19/858475/353751.terrain new file mode 100644 index 000000000..1f365cfff Binary files /dev/null and b/public/terrain/19/858475/353751.terrain differ diff --git a/public/terrain/19/858475/353752.terrain b/public/terrain/19/858475/353752.terrain new file mode 100644 index 000000000..0565c3e6f Binary files /dev/null and b/public/terrain/19/858475/353752.terrain differ diff --git a/public/terrain/19/858475/353753.terrain b/public/terrain/19/858475/353753.terrain new file mode 100644 index 000000000..008ba41b4 Binary files /dev/null and b/public/terrain/19/858475/353753.terrain differ diff --git a/public/terrain/19/858475/353754.terrain b/public/terrain/19/858475/353754.terrain new file mode 100644 index 000000000..9992e085e Binary files /dev/null and b/public/terrain/19/858475/353754.terrain differ diff --git a/public/terrain/19/858475/353755.terrain b/public/terrain/19/858475/353755.terrain new file mode 100644 index 000000000..6797f7979 Binary files /dev/null and b/public/terrain/19/858475/353755.terrain differ diff --git a/public/terrain/19/858475/353756.terrain b/public/terrain/19/858475/353756.terrain new file mode 100644 index 000000000..bdd1fa70c Binary files /dev/null and b/public/terrain/19/858475/353756.terrain differ diff --git a/public/terrain/19/858475/353757.terrain b/public/terrain/19/858475/353757.terrain new file mode 100644 index 000000000..34489a925 Binary files /dev/null and b/public/terrain/19/858475/353757.terrain differ diff --git a/public/terrain/19/858475/353758.terrain b/public/terrain/19/858475/353758.terrain new file mode 100644 index 000000000..34b8f0f6b Binary files /dev/null and b/public/terrain/19/858475/353758.terrain differ diff --git a/public/terrain/19/858475/353759.terrain b/public/terrain/19/858475/353759.terrain new file mode 100644 index 000000000..b4b915886 Binary files /dev/null and b/public/terrain/19/858475/353759.terrain differ diff --git a/public/terrain/19/858475/353760.terrain b/public/terrain/19/858475/353760.terrain new file mode 100644 index 000000000..482f44b89 Binary files /dev/null and b/public/terrain/19/858475/353760.terrain differ diff --git a/public/terrain/19/858475/353761.terrain b/public/terrain/19/858475/353761.terrain new file mode 100644 index 000000000..f58f7bb21 Binary files /dev/null and b/public/terrain/19/858475/353761.terrain differ diff --git a/public/terrain/19/858475/353762.terrain b/public/terrain/19/858475/353762.terrain new file mode 100644 index 000000000..7c40e105c Binary files /dev/null and b/public/terrain/19/858475/353762.terrain differ diff --git a/public/terrain/19/858475/353763.terrain b/public/terrain/19/858475/353763.terrain new file mode 100644 index 000000000..cf013b698 Binary files /dev/null and b/public/terrain/19/858475/353763.terrain differ diff --git a/public/terrain/19/858475/353764.terrain b/public/terrain/19/858475/353764.terrain new file mode 100644 index 000000000..4834661e6 Binary files /dev/null and b/public/terrain/19/858475/353764.terrain differ diff --git a/public/terrain/19/858475/353765.terrain b/public/terrain/19/858475/353765.terrain new file mode 100644 index 000000000..dead52dcb Binary files /dev/null and b/public/terrain/19/858475/353765.terrain differ diff --git a/public/terrain/19/858475/353766.terrain b/public/terrain/19/858475/353766.terrain new file mode 100644 index 000000000..94eccc719 Binary files /dev/null and b/public/terrain/19/858475/353766.terrain differ diff --git a/public/terrain/19/858475/353767.terrain b/public/terrain/19/858475/353767.terrain new file mode 100644 index 000000000..9dedb0a45 Binary files /dev/null and b/public/terrain/19/858475/353767.terrain differ diff --git a/public/terrain/19/858475/353768.terrain b/public/terrain/19/858475/353768.terrain new file mode 100644 index 000000000..267dba608 Binary files /dev/null and b/public/terrain/19/858475/353768.terrain differ diff --git a/public/terrain/19/858475/353769.terrain b/public/terrain/19/858475/353769.terrain new file mode 100644 index 000000000..4fb0497e6 Binary files /dev/null and b/public/terrain/19/858475/353769.terrain differ diff --git a/public/terrain/19/858475/353770.terrain b/public/terrain/19/858475/353770.terrain new file mode 100644 index 000000000..14d09bcc4 Binary files /dev/null and b/public/terrain/19/858475/353770.terrain differ diff --git a/public/terrain/19/858475/353771.terrain b/public/terrain/19/858475/353771.terrain new file mode 100644 index 000000000..f31729c12 Binary files /dev/null and b/public/terrain/19/858475/353771.terrain differ diff --git a/public/terrain/19/858475/353772.terrain b/public/terrain/19/858475/353772.terrain new file mode 100644 index 000000000..99ebdd556 Binary files /dev/null and b/public/terrain/19/858475/353772.terrain differ diff --git a/public/terrain/19/858475/353773.terrain b/public/terrain/19/858475/353773.terrain new file mode 100644 index 000000000..fcb73a919 Binary files /dev/null and b/public/terrain/19/858475/353773.terrain differ diff --git a/public/terrain/19/858475/353774.terrain b/public/terrain/19/858475/353774.terrain new file mode 100644 index 000000000..9d95aeee9 Binary files /dev/null and b/public/terrain/19/858475/353774.terrain differ diff --git a/public/terrain/19/858475/353775.terrain b/public/terrain/19/858475/353775.terrain new file mode 100644 index 000000000..173df2173 Binary files /dev/null and b/public/terrain/19/858475/353775.terrain differ diff --git a/public/terrain/19/858475/353776.terrain b/public/terrain/19/858475/353776.terrain new file mode 100644 index 000000000..4900c7a50 Binary files /dev/null and b/public/terrain/19/858475/353776.terrain differ diff --git a/public/terrain/19/858475/353777.terrain b/public/terrain/19/858475/353777.terrain new file mode 100644 index 000000000..fa2c783ee Binary files /dev/null and b/public/terrain/19/858475/353777.terrain differ diff --git a/public/terrain/19/858475/353778.terrain b/public/terrain/19/858475/353778.terrain new file mode 100644 index 000000000..fef6f195e Binary files /dev/null and b/public/terrain/19/858475/353778.terrain differ diff --git a/public/terrain/19/858475/353779.terrain b/public/terrain/19/858475/353779.terrain new file mode 100644 index 000000000..a19c8f9a8 Binary files /dev/null and b/public/terrain/19/858475/353779.terrain differ diff --git a/public/terrain/19/858475/353780.terrain b/public/terrain/19/858475/353780.terrain new file mode 100644 index 000000000..4ea76f2ce Binary files /dev/null and b/public/terrain/19/858475/353780.terrain differ diff --git a/public/terrain/19/858475/353781.terrain b/public/terrain/19/858475/353781.terrain new file mode 100644 index 000000000..a9f75c9c9 Binary files /dev/null and b/public/terrain/19/858475/353781.terrain differ diff --git a/public/terrain/19/858475/353782.terrain b/public/terrain/19/858475/353782.terrain new file mode 100644 index 000000000..059ce57da Binary files /dev/null and b/public/terrain/19/858475/353782.terrain differ diff --git a/public/terrain/19/858475/353783.terrain b/public/terrain/19/858475/353783.terrain new file mode 100644 index 000000000..50bdf33af Binary files /dev/null and b/public/terrain/19/858475/353783.terrain differ diff --git a/public/terrain/19/858475/353784.terrain b/public/terrain/19/858475/353784.terrain new file mode 100644 index 000000000..0084b1d87 Binary files /dev/null and b/public/terrain/19/858475/353784.terrain differ diff --git a/public/terrain/19/858475/353785.terrain b/public/terrain/19/858475/353785.terrain new file mode 100644 index 000000000..f80667872 Binary files /dev/null and b/public/terrain/19/858475/353785.terrain differ diff --git a/public/terrain/19/858475/353786.terrain b/public/terrain/19/858475/353786.terrain new file mode 100644 index 000000000..9bbd1e3a3 Binary files /dev/null and b/public/terrain/19/858475/353786.terrain differ diff --git a/public/terrain/19/858475/353787.terrain b/public/terrain/19/858475/353787.terrain new file mode 100644 index 000000000..2f04fa8d0 Binary files /dev/null and b/public/terrain/19/858475/353787.terrain differ diff --git a/public/terrain/19/858475/353788.terrain b/public/terrain/19/858475/353788.terrain new file mode 100644 index 000000000..a2659e886 Binary files /dev/null and b/public/terrain/19/858475/353788.terrain differ diff --git a/public/terrain/19/858475/353789.terrain b/public/terrain/19/858475/353789.terrain new file mode 100644 index 000000000..a37e370cf Binary files /dev/null and b/public/terrain/19/858475/353789.terrain differ diff --git a/public/terrain/19/858475/353790.terrain b/public/terrain/19/858475/353790.terrain new file mode 100644 index 000000000..d222bce38 Binary files /dev/null and b/public/terrain/19/858475/353790.terrain differ diff --git a/public/terrain/19/858475/353791.terrain b/public/terrain/19/858475/353791.terrain new file mode 100644 index 000000000..040ffda5b Binary files /dev/null and b/public/terrain/19/858475/353791.terrain differ diff --git a/public/terrain/19/858475/353792.terrain b/public/terrain/19/858475/353792.terrain new file mode 100644 index 000000000..395fff614 Binary files /dev/null and b/public/terrain/19/858475/353792.terrain differ diff --git a/public/terrain/19/858475/353793.terrain b/public/terrain/19/858475/353793.terrain new file mode 100644 index 000000000..b928bf9cb Binary files /dev/null and b/public/terrain/19/858475/353793.terrain differ diff --git a/public/terrain/19/858475/353794.terrain b/public/terrain/19/858475/353794.terrain new file mode 100644 index 000000000..a01cf5d69 Binary files /dev/null and b/public/terrain/19/858475/353794.terrain differ diff --git a/public/terrain/19/858475/353795.terrain b/public/terrain/19/858475/353795.terrain new file mode 100644 index 000000000..8045f566d Binary files /dev/null and b/public/terrain/19/858475/353795.terrain differ diff --git a/public/terrain/19/858475/353796.terrain b/public/terrain/19/858475/353796.terrain new file mode 100644 index 000000000..1e0ddc886 Binary files /dev/null and b/public/terrain/19/858475/353796.terrain differ diff --git a/public/terrain/19/858475/353797.terrain b/public/terrain/19/858475/353797.terrain new file mode 100644 index 000000000..555250938 Binary files /dev/null and b/public/terrain/19/858475/353797.terrain differ diff --git a/public/terrain/19/858475/353798.terrain b/public/terrain/19/858475/353798.terrain new file mode 100644 index 000000000..a30cc2a8e Binary files /dev/null and b/public/terrain/19/858475/353798.terrain differ diff --git a/public/terrain/19/858475/353799.terrain b/public/terrain/19/858475/353799.terrain new file mode 100644 index 000000000..e078aa4b3 Binary files /dev/null and b/public/terrain/19/858475/353799.terrain differ diff --git a/public/terrain/19/858475/353800.terrain b/public/terrain/19/858475/353800.terrain new file mode 100644 index 000000000..c13f6b6c0 Binary files /dev/null and b/public/terrain/19/858475/353800.terrain differ diff --git a/public/terrain/19/858475/353801.terrain b/public/terrain/19/858475/353801.terrain new file mode 100644 index 000000000..7b4fe7f1b Binary files /dev/null and b/public/terrain/19/858475/353801.terrain differ diff --git a/public/terrain/19/858475/353802.terrain b/public/terrain/19/858475/353802.terrain new file mode 100644 index 000000000..bff7bceb8 Binary files /dev/null and b/public/terrain/19/858475/353802.terrain differ diff --git a/public/terrain/19/858475/353803.terrain b/public/terrain/19/858475/353803.terrain new file mode 100644 index 000000000..59d9433ce Binary files /dev/null and b/public/terrain/19/858475/353803.terrain differ diff --git a/public/terrain/19/858475/353804.terrain b/public/terrain/19/858475/353804.terrain new file mode 100644 index 000000000..ca4524a98 Binary files /dev/null and b/public/terrain/19/858475/353804.terrain differ diff --git a/public/terrain/19/858475/353805.terrain b/public/terrain/19/858475/353805.terrain new file mode 100644 index 000000000..307a2d85f Binary files /dev/null and b/public/terrain/19/858475/353805.terrain differ diff --git a/public/terrain/19/858475/353806.terrain b/public/terrain/19/858475/353806.terrain new file mode 100644 index 000000000..d67c05ffe Binary files /dev/null and b/public/terrain/19/858475/353806.terrain differ diff --git a/public/terrain/19/858475/353807.terrain b/public/terrain/19/858475/353807.terrain new file mode 100644 index 000000000..7d28cfb07 Binary files /dev/null and b/public/terrain/19/858475/353807.terrain differ diff --git a/public/terrain/19/858475/353808.terrain b/public/terrain/19/858475/353808.terrain new file mode 100644 index 000000000..c41e13cf2 Binary files /dev/null and b/public/terrain/19/858475/353808.terrain differ diff --git a/public/terrain/19/858475/353809.terrain b/public/terrain/19/858475/353809.terrain new file mode 100644 index 000000000..41f0f21ae Binary files /dev/null and b/public/terrain/19/858475/353809.terrain differ diff --git a/public/terrain/19/858475/353810.terrain b/public/terrain/19/858475/353810.terrain new file mode 100644 index 000000000..5ae740318 Binary files /dev/null and b/public/terrain/19/858475/353810.terrain differ diff --git a/public/terrain/19/858475/353811.terrain b/public/terrain/19/858475/353811.terrain new file mode 100644 index 000000000..e87eb6044 Binary files /dev/null and b/public/terrain/19/858475/353811.terrain differ diff --git a/public/terrain/19/858475/353812.terrain b/public/terrain/19/858475/353812.terrain new file mode 100644 index 000000000..0deb3ffab Binary files /dev/null and b/public/terrain/19/858475/353812.terrain differ diff --git a/public/terrain/19/858475/353813.terrain b/public/terrain/19/858475/353813.terrain new file mode 100644 index 000000000..ea823f7bc Binary files /dev/null and b/public/terrain/19/858475/353813.terrain differ diff --git a/public/terrain/19/858475/353814.terrain b/public/terrain/19/858475/353814.terrain new file mode 100644 index 000000000..f3da4e229 Binary files /dev/null and b/public/terrain/19/858475/353814.terrain differ diff --git a/public/terrain/19/858475/353815.terrain b/public/terrain/19/858475/353815.terrain new file mode 100644 index 000000000..838042d8d Binary files /dev/null and b/public/terrain/19/858475/353815.terrain differ diff --git a/public/terrain/19/858475/353816.terrain b/public/terrain/19/858475/353816.terrain new file mode 100644 index 000000000..de82c69fa Binary files /dev/null and b/public/terrain/19/858475/353816.terrain differ diff --git a/public/terrain/19/858475/353817.terrain b/public/terrain/19/858475/353817.terrain new file mode 100644 index 000000000..bd685e0b9 Binary files /dev/null and b/public/terrain/19/858475/353817.terrain differ diff --git a/public/terrain/19/858475/353818.terrain b/public/terrain/19/858475/353818.terrain new file mode 100644 index 000000000..23ec28e56 Binary files /dev/null and b/public/terrain/19/858475/353818.terrain differ diff --git a/public/terrain/19/858475/353819.terrain b/public/terrain/19/858475/353819.terrain new file mode 100644 index 000000000..77ae3bd31 Binary files /dev/null and b/public/terrain/19/858475/353819.terrain differ diff --git a/public/terrain/19/858475/353820.terrain b/public/terrain/19/858475/353820.terrain new file mode 100644 index 000000000..b6929178f Binary files /dev/null and b/public/terrain/19/858475/353820.terrain differ diff --git a/public/terrain/19/858475/353821.terrain b/public/terrain/19/858475/353821.terrain new file mode 100644 index 000000000..b493f2005 Binary files /dev/null and b/public/terrain/19/858475/353821.terrain differ diff --git a/public/terrain/19/858475/353822.terrain b/public/terrain/19/858475/353822.terrain new file mode 100644 index 000000000..4b76c3c74 Binary files /dev/null and b/public/terrain/19/858475/353822.terrain differ diff --git a/public/terrain/19/858475/353823.terrain b/public/terrain/19/858475/353823.terrain new file mode 100644 index 000000000..5efa9d16e Binary files /dev/null and b/public/terrain/19/858475/353823.terrain differ diff --git a/public/terrain/19/858475/353824.terrain b/public/terrain/19/858475/353824.terrain new file mode 100644 index 000000000..7ba5362d1 Binary files /dev/null and b/public/terrain/19/858475/353824.terrain differ diff --git a/public/terrain/19/858475/353825.terrain b/public/terrain/19/858475/353825.terrain new file mode 100644 index 000000000..3ca6a6020 Binary files /dev/null and b/public/terrain/19/858475/353825.terrain differ diff --git a/public/terrain/19/858475/353826.terrain b/public/terrain/19/858475/353826.terrain new file mode 100644 index 000000000..d2ca0622a Binary files /dev/null and b/public/terrain/19/858475/353826.terrain differ diff --git a/public/terrain/19/858475/353827.terrain b/public/terrain/19/858475/353827.terrain new file mode 100644 index 000000000..e2b34863e Binary files /dev/null and b/public/terrain/19/858475/353827.terrain differ diff --git a/public/terrain/19/858475/353828.terrain b/public/terrain/19/858475/353828.terrain new file mode 100644 index 000000000..61fba9083 Binary files /dev/null and b/public/terrain/19/858475/353828.terrain differ diff --git a/public/terrain/19/858475/353829.terrain b/public/terrain/19/858475/353829.terrain new file mode 100644 index 000000000..52284d341 Binary files /dev/null and b/public/terrain/19/858475/353829.terrain differ diff --git a/public/terrain/19/858475/353830.terrain b/public/terrain/19/858475/353830.terrain new file mode 100644 index 000000000..b38939764 Binary files /dev/null and b/public/terrain/19/858475/353830.terrain differ diff --git a/public/terrain/19/858475/353831.terrain b/public/terrain/19/858475/353831.terrain new file mode 100644 index 000000000..2163afc78 Binary files /dev/null and b/public/terrain/19/858475/353831.terrain differ diff --git a/public/terrain/19/858475/353832.terrain b/public/terrain/19/858475/353832.terrain new file mode 100644 index 000000000..c03b0dfd8 Binary files /dev/null and b/public/terrain/19/858475/353832.terrain differ diff --git a/public/terrain/19/858475/353833.terrain b/public/terrain/19/858475/353833.terrain new file mode 100644 index 000000000..4d2e9e7f9 Binary files /dev/null and b/public/terrain/19/858475/353833.terrain differ diff --git a/public/terrain/19/858475/353834.terrain b/public/terrain/19/858475/353834.terrain new file mode 100644 index 000000000..4f76676be Binary files /dev/null and b/public/terrain/19/858475/353834.terrain differ diff --git a/public/terrain/19/858475/353835.terrain b/public/terrain/19/858475/353835.terrain new file mode 100644 index 000000000..d8ef9d6b2 Binary files /dev/null and b/public/terrain/19/858475/353835.terrain differ diff --git a/public/terrain/19/858475/353836.terrain b/public/terrain/19/858475/353836.terrain new file mode 100644 index 000000000..c39e1c618 Binary files /dev/null and b/public/terrain/19/858475/353836.terrain differ diff --git a/public/terrain/19/858475/353837.terrain b/public/terrain/19/858475/353837.terrain new file mode 100644 index 000000000..5ad7ae785 Binary files /dev/null and b/public/terrain/19/858475/353837.terrain differ diff --git a/public/terrain/19/858475/353838.terrain b/public/terrain/19/858475/353838.terrain new file mode 100644 index 000000000..a7fb40efa Binary files /dev/null and b/public/terrain/19/858475/353838.terrain differ diff --git a/public/terrain/19/858475/353839.terrain b/public/terrain/19/858475/353839.terrain new file mode 100644 index 000000000..b67097f5a Binary files /dev/null and b/public/terrain/19/858475/353839.terrain differ diff --git a/public/terrain/19/858475/353840.terrain b/public/terrain/19/858475/353840.terrain new file mode 100644 index 000000000..23243c5a1 Binary files /dev/null and b/public/terrain/19/858475/353840.terrain differ diff --git a/public/terrain/19/858475/353841.terrain b/public/terrain/19/858475/353841.terrain new file mode 100644 index 000000000..69fafd9f8 Binary files /dev/null and b/public/terrain/19/858475/353841.terrain differ diff --git a/public/terrain/19/858475/353842.terrain b/public/terrain/19/858475/353842.terrain new file mode 100644 index 000000000..25197038f Binary files /dev/null and b/public/terrain/19/858475/353842.terrain differ diff --git a/public/terrain/19/858475/353843.terrain b/public/terrain/19/858475/353843.terrain new file mode 100644 index 000000000..76a99539a Binary files /dev/null and b/public/terrain/19/858475/353843.terrain differ diff --git a/public/terrain/19/858475/353844.terrain b/public/terrain/19/858475/353844.terrain new file mode 100644 index 000000000..102310e05 Binary files /dev/null and b/public/terrain/19/858475/353844.terrain differ diff --git a/public/terrain/19/858475/353845.terrain b/public/terrain/19/858475/353845.terrain new file mode 100644 index 000000000..bae66a0b9 Binary files /dev/null and b/public/terrain/19/858475/353845.terrain differ diff --git a/public/terrain/19/858475/353846.terrain b/public/terrain/19/858475/353846.terrain new file mode 100644 index 000000000..14c249051 Binary files /dev/null and b/public/terrain/19/858475/353846.terrain differ diff --git a/public/terrain/19/858475/353847.terrain b/public/terrain/19/858475/353847.terrain new file mode 100644 index 000000000..58fa36768 Binary files /dev/null and b/public/terrain/19/858475/353847.terrain differ diff --git a/public/terrain/19/858475/353848.terrain b/public/terrain/19/858475/353848.terrain new file mode 100644 index 000000000..3cb30bf6e Binary files /dev/null and b/public/terrain/19/858475/353848.terrain differ diff --git a/public/terrain/19/858475/353849.terrain b/public/terrain/19/858475/353849.terrain new file mode 100644 index 000000000..ba08f50fa Binary files /dev/null and b/public/terrain/19/858475/353849.terrain differ diff --git a/public/terrain/19/858475/353850.terrain b/public/terrain/19/858475/353850.terrain new file mode 100644 index 000000000..1be6cc8aa Binary files /dev/null and b/public/terrain/19/858475/353850.terrain differ diff --git a/public/terrain/19/858475/353851.terrain b/public/terrain/19/858475/353851.terrain new file mode 100644 index 000000000..ce9f7b469 Binary files /dev/null and b/public/terrain/19/858475/353851.terrain differ diff --git a/public/terrain/19/858475/353852.terrain b/public/terrain/19/858475/353852.terrain new file mode 100644 index 000000000..9cd760d2e Binary files /dev/null and b/public/terrain/19/858475/353852.terrain differ diff --git a/public/terrain/19/858475/353853.terrain b/public/terrain/19/858475/353853.terrain new file mode 100644 index 000000000..0e8104db4 Binary files /dev/null and b/public/terrain/19/858475/353853.terrain differ diff --git a/public/terrain/19/858475/353854.terrain b/public/terrain/19/858475/353854.terrain new file mode 100644 index 000000000..a3851139a Binary files /dev/null and b/public/terrain/19/858475/353854.terrain differ diff --git a/public/terrain/19/858475/353855.terrain b/public/terrain/19/858475/353855.terrain new file mode 100644 index 000000000..b67411cfe Binary files /dev/null and b/public/terrain/19/858475/353855.terrain differ diff --git a/public/terrain/19/858475/353856.terrain b/public/terrain/19/858475/353856.terrain new file mode 100644 index 000000000..2a760e465 Binary files /dev/null and b/public/terrain/19/858475/353856.terrain differ diff --git a/public/terrain/19/858475/353857.terrain b/public/terrain/19/858475/353857.terrain new file mode 100644 index 000000000..367334371 Binary files /dev/null and b/public/terrain/19/858475/353857.terrain differ diff --git a/public/terrain/19/858475/353858.terrain b/public/terrain/19/858475/353858.terrain new file mode 100644 index 000000000..348e15cec Binary files /dev/null and b/public/terrain/19/858475/353858.terrain differ diff --git a/public/terrain/19/858475/353859.terrain b/public/terrain/19/858475/353859.terrain new file mode 100644 index 000000000..9001b363b Binary files /dev/null and b/public/terrain/19/858475/353859.terrain differ diff --git a/public/terrain/19/858475/353860.terrain b/public/terrain/19/858475/353860.terrain new file mode 100644 index 000000000..eccc34196 Binary files /dev/null and b/public/terrain/19/858475/353860.terrain differ diff --git a/public/terrain/19/858475/353861.terrain b/public/terrain/19/858475/353861.terrain new file mode 100644 index 000000000..5a3a5802d Binary files /dev/null and b/public/terrain/19/858475/353861.terrain differ diff --git a/public/terrain/19/858475/353862.terrain b/public/terrain/19/858475/353862.terrain new file mode 100644 index 000000000..2e0e196b2 Binary files /dev/null and b/public/terrain/19/858475/353862.terrain differ diff --git a/public/terrain/19/858475/353863.terrain b/public/terrain/19/858475/353863.terrain new file mode 100644 index 000000000..f06e329b4 Binary files /dev/null and b/public/terrain/19/858475/353863.terrain differ diff --git a/public/terrain/19/858475/353864.terrain b/public/terrain/19/858475/353864.terrain new file mode 100644 index 000000000..39e03a3eb Binary files /dev/null and b/public/terrain/19/858475/353864.terrain differ diff --git a/public/terrain/19/858475/353865.terrain b/public/terrain/19/858475/353865.terrain new file mode 100644 index 000000000..c50f76298 Binary files /dev/null and b/public/terrain/19/858475/353865.terrain differ diff --git a/public/terrain/19/858475/353866.terrain b/public/terrain/19/858475/353866.terrain new file mode 100644 index 000000000..497b1550f Binary files /dev/null and b/public/terrain/19/858475/353866.terrain differ diff --git a/public/terrain/19/858475/353867.terrain b/public/terrain/19/858475/353867.terrain new file mode 100644 index 000000000..e90366b20 Binary files /dev/null and b/public/terrain/19/858475/353867.terrain differ diff --git a/public/terrain/19/858475/353868.terrain b/public/terrain/19/858475/353868.terrain new file mode 100644 index 000000000..340ede1df Binary files /dev/null and b/public/terrain/19/858475/353868.terrain differ diff --git a/public/terrain/19/858475/353869.terrain b/public/terrain/19/858475/353869.terrain new file mode 100644 index 000000000..8e2f95582 Binary files /dev/null and b/public/terrain/19/858475/353869.terrain differ diff --git a/public/terrain/19/858475/353870.terrain b/public/terrain/19/858475/353870.terrain new file mode 100644 index 000000000..7e99220df Binary files /dev/null and b/public/terrain/19/858475/353870.terrain differ diff --git a/public/terrain/19/858475/353871.terrain b/public/terrain/19/858475/353871.terrain new file mode 100644 index 000000000..21244e016 Binary files /dev/null and b/public/terrain/19/858475/353871.terrain differ diff --git a/public/terrain/19/858475/353872.terrain b/public/terrain/19/858475/353872.terrain new file mode 100644 index 000000000..34dc6fc02 Binary files /dev/null and b/public/terrain/19/858475/353872.terrain differ diff --git a/public/terrain/19/858475/353873.terrain b/public/terrain/19/858475/353873.terrain new file mode 100644 index 000000000..99adf3710 Binary files /dev/null and b/public/terrain/19/858475/353873.terrain differ diff --git a/public/terrain/19/858475/353874.terrain b/public/terrain/19/858475/353874.terrain new file mode 100644 index 000000000..62693e709 Binary files /dev/null and b/public/terrain/19/858475/353874.terrain differ diff --git a/public/terrain/19/858475/353875.terrain b/public/terrain/19/858475/353875.terrain new file mode 100644 index 000000000..c7d6ee712 Binary files /dev/null and b/public/terrain/19/858475/353875.terrain differ diff --git a/public/terrain/19/858475/353876.terrain b/public/terrain/19/858475/353876.terrain new file mode 100644 index 000000000..1391da96e Binary files /dev/null and b/public/terrain/19/858475/353876.terrain differ diff --git a/public/terrain/19/858475/353877.terrain b/public/terrain/19/858475/353877.terrain new file mode 100644 index 000000000..40682134d Binary files /dev/null and b/public/terrain/19/858475/353877.terrain differ diff --git a/public/terrain/19/858475/353878.terrain b/public/terrain/19/858475/353878.terrain new file mode 100644 index 000000000..2ce9133da Binary files /dev/null and b/public/terrain/19/858475/353878.terrain differ diff --git a/public/terrain/19/858475/353879.terrain b/public/terrain/19/858475/353879.terrain new file mode 100644 index 000000000..98afb5e1e Binary files /dev/null and b/public/terrain/19/858475/353879.terrain differ diff --git a/public/terrain/19/858475/353880.terrain b/public/terrain/19/858475/353880.terrain new file mode 100644 index 000000000..5caf86d9d Binary files /dev/null and b/public/terrain/19/858475/353880.terrain differ diff --git a/public/terrain/19/858475/353881.terrain b/public/terrain/19/858475/353881.terrain new file mode 100644 index 000000000..e0c1767bb Binary files /dev/null and b/public/terrain/19/858475/353881.terrain differ diff --git a/public/terrain/19/858475/353882.terrain b/public/terrain/19/858475/353882.terrain new file mode 100644 index 000000000..a78662b75 Binary files /dev/null and b/public/terrain/19/858475/353882.terrain differ diff --git a/public/terrain/19/858475/353883.terrain b/public/terrain/19/858475/353883.terrain new file mode 100644 index 000000000..c52c85007 Binary files /dev/null and b/public/terrain/19/858475/353883.terrain differ diff --git a/public/terrain/19/858475/353884.terrain b/public/terrain/19/858475/353884.terrain new file mode 100644 index 000000000..3bc68da23 Binary files /dev/null and b/public/terrain/19/858475/353884.terrain differ diff --git a/public/terrain/19/858475/353885.terrain b/public/terrain/19/858475/353885.terrain new file mode 100644 index 000000000..b2cdbcaad Binary files /dev/null and b/public/terrain/19/858475/353885.terrain differ diff --git a/public/terrain/19/858475/353886.terrain b/public/terrain/19/858475/353886.terrain new file mode 100644 index 000000000..eff40081b Binary files /dev/null and b/public/terrain/19/858475/353886.terrain differ diff --git a/public/terrain/19/858475/353887.terrain b/public/terrain/19/858475/353887.terrain new file mode 100644 index 000000000..b64fb174c Binary files /dev/null and b/public/terrain/19/858475/353887.terrain differ diff --git a/public/terrain/19/858475/353888.terrain b/public/terrain/19/858475/353888.terrain new file mode 100644 index 000000000..2c3e34e14 Binary files /dev/null and b/public/terrain/19/858475/353888.terrain differ diff --git a/public/terrain/19/858475/353889.terrain b/public/terrain/19/858475/353889.terrain new file mode 100644 index 000000000..044922517 Binary files /dev/null and b/public/terrain/19/858475/353889.terrain differ diff --git a/public/terrain/19/858475/353890.terrain b/public/terrain/19/858475/353890.terrain new file mode 100644 index 000000000..3805a2a72 Binary files /dev/null and b/public/terrain/19/858475/353890.terrain differ diff --git a/public/terrain/19/858475/353891.terrain b/public/terrain/19/858475/353891.terrain new file mode 100644 index 000000000..2f566809d Binary files /dev/null and b/public/terrain/19/858475/353891.terrain differ diff --git a/public/terrain/19/858475/353892.terrain b/public/terrain/19/858475/353892.terrain new file mode 100644 index 000000000..3a56a2f5a Binary files /dev/null and b/public/terrain/19/858475/353892.terrain differ diff --git a/public/terrain/19/858475/353893.terrain b/public/terrain/19/858475/353893.terrain new file mode 100644 index 000000000..028db2fca Binary files /dev/null and b/public/terrain/19/858475/353893.terrain differ diff --git a/public/terrain/19/858475/353894.terrain b/public/terrain/19/858475/353894.terrain new file mode 100644 index 000000000..5fcb16d26 Binary files /dev/null and b/public/terrain/19/858475/353894.terrain differ diff --git a/public/terrain/19/858475/353895.terrain b/public/terrain/19/858475/353895.terrain new file mode 100644 index 000000000..8a32d1ee5 Binary files /dev/null and b/public/terrain/19/858475/353895.terrain differ diff --git a/public/terrain/19/858475/353896.terrain b/public/terrain/19/858475/353896.terrain new file mode 100644 index 000000000..61a916654 Binary files /dev/null and b/public/terrain/19/858475/353896.terrain differ diff --git a/public/terrain/19/858475/353897.terrain b/public/terrain/19/858475/353897.terrain new file mode 100644 index 000000000..cb09a7782 Binary files /dev/null and b/public/terrain/19/858475/353897.terrain differ diff --git a/public/terrain/19/858475/353898.terrain b/public/terrain/19/858475/353898.terrain new file mode 100644 index 000000000..b573a9425 Binary files /dev/null and b/public/terrain/19/858475/353898.terrain differ diff --git a/public/terrain/19/858475/353899.terrain b/public/terrain/19/858475/353899.terrain new file mode 100644 index 000000000..6712efdf0 Binary files /dev/null and b/public/terrain/19/858475/353899.terrain differ diff --git a/public/terrain/19/858475/353900.terrain b/public/terrain/19/858475/353900.terrain new file mode 100644 index 000000000..48c38511f Binary files /dev/null and b/public/terrain/19/858475/353900.terrain differ diff --git a/public/terrain/19/858475/353901.terrain b/public/terrain/19/858475/353901.terrain new file mode 100644 index 000000000..58908fa64 Binary files /dev/null and b/public/terrain/19/858475/353901.terrain differ diff --git a/public/terrain/19/858475/353902.terrain b/public/terrain/19/858475/353902.terrain new file mode 100644 index 000000000..ae3f33b31 Binary files /dev/null and b/public/terrain/19/858475/353902.terrain differ diff --git a/public/terrain/19/858475/353903.terrain b/public/terrain/19/858475/353903.terrain new file mode 100644 index 000000000..65674d27a Binary files /dev/null and b/public/terrain/19/858475/353903.terrain differ diff --git a/public/terrain/19/858475/353904.terrain b/public/terrain/19/858475/353904.terrain new file mode 100644 index 000000000..5da5f7259 Binary files /dev/null and b/public/terrain/19/858475/353904.terrain differ diff --git a/public/terrain/19/858475/353905.terrain b/public/terrain/19/858475/353905.terrain new file mode 100644 index 000000000..b7c0492a7 Binary files /dev/null and b/public/terrain/19/858475/353905.terrain differ diff --git a/public/terrain/19/858475/353906.terrain b/public/terrain/19/858475/353906.terrain new file mode 100644 index 000000000..56eb103a1 Binary files /dev/null and b/public/terrain/19/858475/353906.terrain differ diff --git a/public/terrain/19/858475/353907.terrain b/public/terrain/19/858475/353907.terrain new file mode 100644 index 000000000..808d576f4 Binary files /dev/null and b/public/terrain/19/858475/353907.terrain differ diff --git a/public/terrain/19/858475/353908.terrain b/public/terrain/19/858475/353908.terrain new file mode 100644 index 000000000..a0874af38 Binary files /dev/null and b/public/terrain/19/858475/353908.terrain differ diff --git a/public/terrain/19/858475/353909.terrain b/public/terrain/19/858475/353909.terrain new file mode 100644 index 000000000..cde5bb489 Binary files /dev/null and b/public/terrain/19/858475/353909.terrain differ diff --git a/public/terrain/19/858475/353910.terrain b/public/terrain/19/858475/353910.terrain new file mode 100644 index 000000000..bd1a1917f Binary files /dev/null and b/public/terrain/19/858475/353910.terrain differ diff --git a/public/terrain/19/858475/353911.terrain b/public/terrain/19/858475/353911.terrain new file mode 100644 index 000000000..f9a842750 Binary files /dev/null and b/public/terrain/19/858475/353911.terrain differ diff --git a/public/terrain/19/858475/353912.terrain b/public/terrain/19/858475/353912.terrain new file mode 100644 index 000000000..ed56edc0f Binary files /dev/null and b/public/terrain/19/858475/353912.terrain differ diff --git a/public/terrain/19/858475/353913.terrain b/public/terrain/19/858475/353913.terrain new file mode 100644 index 000000000..7d77a9674 Binary files /dev/null and b/public/terrain/19/858475/353913.terrain differ diff --git a/public/terrain/19/858475/353914.terrain b/public/terrain/19/858475/353914.terrain new file mode 100644 index 000000000..e0e8fc324 Binary files /dev/null and b/public/terrain/19/858475/353914.terrain differ diff --git a/public/terrain/19/858475/353915.terrain b/public/terrain/19/858475/353915.terrain new file mode 100644 index 000000000..de3796166 Binary files /dev/null and b/public/terrain/19/858475/353915.terrain differ diff --git a/public/terrain/19/858475/353916.terrain b/public/terrain/19/858475/353916.terrain new file mode 100644 index 000000000..ad5dd0fb0 Binary files /dev/null and b/public/terrain/19/858475/353916.terrain differ diff --git a/public/terrain/19/858475/353917.terrain b/public/terrain/19/858475/353917.terrain new file mode 100644 index 000000000..d9eeb9781 Binary files /dev/null and b/public/terrain/19/858475/353917.terrain differ diff --git a/public/terrain/19/858475/353918.terrain b/public/terrain/19/858475/353918.terrain new file mode 100644 index 000000000..f0127b6ad Binary files /dev/null and b/public/terrain/19/858475/353918.terrain differ diff --git a/public/terrain/19/858475/353919.terrain b/public/terrain/19/858475/353919.terrain new file mode 100644 index 000000000..544f323e8 Binary files /dev/null and b/public/terrain/19/858475/353919.terrain differ diff --git a/public/terrain/19/858475/353920.terrain b/public/terrain/19/858475/353920.terrain new file mode 100644 index 000000000..1db09c931 Binary files /dev/null and b/public/terrain/19/858475/353920.terrain differ diff --git a/public/terrain/19/858475/353921.terrain b/public/terrain/19/858475/353921.terrain new file mode 100644 index 000000000..513970b6d Binary files /dev/null and b/public/terrain/19/858475/353921.terrain differ diff --git a/public/terrain/19/858475/353922.terrain b/public/terrain/19/858475/353922.terrain new file mode 100644 index 000000000..2010f0c2f Binary files /dev/null and b/public/terrain/19/858475/353922.terrain differ diff --git a/public/terrain/19/858475/353923.terrain b/public/terrain/19/858475/353923.terrain new file mode 100644 index 000000000..ba1ca0be0 Binary files /dev/null and b/public/terrain/19/858475/353923.terrain differ diff --git a/public/terrain/19/858475/353924.terrain b/public/terrain/19/858475/353924.terrain new file mode 100644 index 000000000..ed7ce0e30 Binary files /dev/null and b/public/terrain/19/858475/353924.terrain differ diff --git a/public/terrain/19/858475/353925.terrain b/public/terrain/19/858475/353925.terrain new file mode 100644 index 000000000..25c174bfe Binary files /dev/null and b/public/terrain/19/858475/353925.terrain differ diff --git a/public/terrain/19/858475/353926.terrain b/public/terrain/19/858475/353926.terrain new file mode 100644 index 000000000..2c5983140 Binary files /dev/null and b/public/terrain/19/858475/353926.terrain differ diff --git a/public/terrain/19/858475/353927.terrain b/public/terrain/19/858475/353927.terrain new file mode 100644 index 000000000..f57669579 Binary files /dev/null and b/public/terrain/19/858475/353927.terrain differ diff --git a/public/terrain/19/858475/353928.terrain b/public/terrain/19/858475/353928.terrain new file mode 100644 index 000000000..160fc1c69 Binary files /dev/null and b/public/terrain/19/858475/353928.terrain differ diff --git a/public/terrain/19/858475/353929.terrain b/public/terrain/19/858475/353929.terrain new file mode 100644 index 000000000..1c5d66e2f Binary files /dev/null and b/public/terrain/19/858475/353929.terrain differ diff --git a/public/terrain/19/858475/353930.terrain b/public/terrain/19/858475/353930.terrain new file mode 100644 index 000000000..dd27bce6e Binary files /dev/null and b/public/terrain/19/858475/353930.terrain differ diff --git a/public/terrain/19/858475/353931.terrain b/public/terrain/19/858475/353931.terrain new file mode 100644 index 000000000..de6e3f4cd Binary files /dev/null and b/public/terrain/19/858475/353931.terrain differ diff --git a/public/terrain/19/858475/353932.terrain b/public/terrain/19/858475/353932.terrain new file mode 100644 index 000000000..f41e5106f Binary files /dev/null and b/public/terrain/19/858475/353932.terrain differ diff --git a/public/terrain/19/858475/353933.terrain b/public/terrain/19/858475/353933.terrain new file mode 100644 index 000000000..4bf488ccc Binary files /dev/null and b/public/terrain/19/858475/353933.terrain differ diff --git a/public/terrain/19/858475/353934.terrain b/public/terrain/19/858475/353934.terrain new file mode 100644 index 000000000..95d5a953c Binary files /dev/null and b/public/terrain/19/858475/353934.terrain differ diff --git a/public/terrain/19/858475/353935.terrain b/public/terrain/19/858475/353935.terrain new file mode 100644 index 000000000..a1e9057e9 Binary files /dev/null and b/public/terrain/19/858475/353935.terrain differ diff --git a/public/terrain/19/858475/353936.terrain b/public/terrain/19/858475/353936.terrain new file mode 100644 index 000000000..144245d45 Binary files /dev/null and b/public/terrain/19/858475/353936.terrain differ diff --git a/public/terrain/19/858475/353937.terrain b/public/terrain/19/858475/353937.terrain new file mode 100644 index 000000000..354ff9d37 Binary files /dev/null and b/public/terrain/19/858475/353937.terrain differ diff --git a/public/terrain/19/858475/353938.terrain b/public/terrain/19/858475/353938.terrain new file mode 100644 index 000000000..c2c998af2 Binary files /dev/null and b/public/terrain/19/858475/353938.terrain differ diff --git a/public/terrain/19/858475/353939.terrain b/public/terrain/19/858475/353939.terrain new file mode 100644 index 000000000..eeb668e72 Binary files /dev/null and b/public/terrain/19/858475/353939.terrain differ diff --git a/public/terrain/19/858475/353940.terrain b/public/terrain/19/858475/353940.terrain new file mode 100644 index 000000000..88d24f6b5 Binary files /dev/null and b/public/terrain/19/858475/353940.terrain differ diff --git a/public/terrain/19/858475/353941.terrain b/public/terrain/19/858475/353941.terrain new file mode 100644 index 000000000..e2cb11551 Binary files /dev/null and b/public/terrain/19/858475/353941.terrain differ diff --git a/public/terrain/19/858475/353942.terrain b/public/terrain/19/858475/353942.terrain new file mode 100644 index 000000000..eaba076f8 Binary files /dev/null and b/public/terrain/19/858475/353942.terrain differ diff --git a/public/terrain/19/858475/353943.terrain b/public/terrain/19/858475/353943.terrain new file mode 100644 index 000000000..2d901b5dc Binary files /dev/null and b/public/terrain/19/858475/353943.terrain differ diff --git a/public/terrain/19/858475/353944.terrain b/public/terrain/19/858475/353944.terrain new file mode 100644 index 000000000..fffee7798 Binary files /dev/null and b/public/terrain/19/858475/353944.terrain differ diff --git a/public/terrain/19/858475/353945.terrain b/public/terrain/19/858475/353945.terrain new file mode 100644 index 000000000..bab7cccc1 Binary files /dev/null and b/public/terrain/19/858475/353945.terrain differ diff --git a/public/terrain/19/858475/353946.terrain b/public/terrain/19/858475/353946.terrain new file mode 100644 index 000000000..b20e68be5 Binary files /dev/null and b/public/terrain/19/858475/353946.terrain differ diff --git a/public/terrain/19/858475/353947.terrain b/public/terrain/19/858475/353947.terrain new file mode 100644 index 000000000..bf0c49b58 Binary files /dev/null and b/public/terrain/19/858475/353947.terrain differ diff --git a/public/terrain/19/858475/353948.terrain b/public/terrain/19/858475/353948.terrain new file mode 100644 index 000000000..d93bb6f1d Binary files /dev/null and b/public/terrain/19/858475/353948.terrain differ diff --git a/public/terrain/19/858475/353949.terrain b/public/terrain/19/858475/353949.terrain new file mode 100644 index 000000000..b7c84058e Binary files /dev/null and b/public/terrain/19/858475/353949.terrain differ diff --git a/public/terrain/19/858475/353950.terrain b/public/terrain/19/858475/353950.terrain new file mode 100644 index 000000000..d97cf2f64 Binary files /dev/null and b/public/terrain/19/858475/353950.terrain differ diff --git a/public/terrain/19/858475/353951.terrain b/public/terrain/19/858475/353951.terrain new file mode 100644 index 000000000..03a9bb019 Binary files /dev/null and b/public/terrain/19/858475/353951.terrain differ diff --git a/public/terrain/19/858475/353952.terrain b/public/terrain/19/858475/353952.terrain new file mode 100644 index 000000000..fc18ab50a Binary files /dev/null and b/public/terrain/19/858475/353952.terrain differ diff --git a/public/terrain/19/858475/353953.terrain b/public/terrain/19/858475/353953.terrain new file mode 100644 index 000000000..27df0f878 Binary files /dev/null and b/public/terrain/19/858475/353953.terrain differ diff --git a/public/terrain/19/858475/353954.terrain b/public/terrain/19/858475/353954.terrain new file mode 100644 index 000000000..e82b11863 Binary files /dev/null and b/public/terrain/19/858475/353954.terrain differ diff --git a/public/terrain/19/858475/353955.terrain b/public/terrain/19/858475/353955.terrain new file mode 100644 index 000000000..e55b6596f Binary files /dev/null and b/public/terrain/19/858475/353955.terrain differ diff --git a/public/terrain/19/858475/353956.terrain b/public/terrain/19/858475/353956.terrain new file mode 100644 index 000000000..5481747b8 Binary files /dev/null and b/public/terrain/19/858475/353956.terrain differ diff --git a/public/terrain/19/858475/353957.terrain b/public/terrain/19/858475/353957.terrain new file mode 100644 index 000000000..1d1e778f3 Binary files /dev/null and b/public/terrain/19/858475/353957.terrain differ diff --git a/public/terrain/19/858475/353958.terrain b/public/terrain/19/858475/353958.terrain new file mode 100644 index 000000000..6451be619 Binary files /dev/null and b/public/terrain/19/858475/353958.terrain differ diff --git a/public/terrain/19/858475/353959.terrain b/public/terrain/19/858475/353959.terrain new file mode 100644 index 000000000..1e3c879c3 Binary files /dev/null and b/public/terrain/19/858475/353959.terrain differ diff --git a/public/terrain/19/858475/353960.terrain b/public/terrain/19/858475/353960.terrain new file mode 100644 index 000000000..74bbd6849 Binary files /dev/null and b/public/terrain/19/858475/353960.terrain differ diff --git a/public/terrain/19/858475/353961.terrain b/public/terrain/19/858475/353961.terrain new file mode 100644 index 000000000..50564ab43 Binary files /dev/null and b/public/terrain/19/858475/353961.terrain differ diff --git a/public/terrain/19/858475/353962.terrain b/public/terrain/19/858475/353962.terrain new file mode 100644 index 000000000..b55ab3969 Binary files /dev/null and b/public/terrain/19/858475/353962.terrain differ diff --git a/public/terrain/19/858475/353963.terrain b/public/terrain/19/858475/353963.terrain new file mode 100644 index 000000000..cd8b74166 Binary files /dev/null and b/public/terrain/19/858475/353963.terrain differ diff --git a/public/terrain/19/858475/353964.terrain b/public/terrain/19/858475/353964.terrain new file mode 100644 index 000000000..748fe36eb Binary files /dev/null and b/public/terrain/19/858475/353964.terrain differ diff --git a/public/terrain/19/858475/353965.terrain b/public/terrain/19/858475/353965.terrain new file mode 100644 index 000000000..5aa396d6d Binary files /dev/null and b/public/terrain/19/858475/353965.terrain differ diff --git a/public/terrain/19/858475/353966.terrain b/public/terrain/19/858475/353966.terrain new file mode 100644 index 000000000..9d696f5d2 Binary files /dev/null and b/public/terrain/19/858475/353966.terrain differ diff --git a/public/terrain/19/858475/353967.terrain b/public/terrain/19/858475/353967.terrain new file mode 100644 index 000000000..9b06f884e Binary files /dev/null and b/public/terrain/19/858475/353967.terrain differ diff --git a/public/terrain/19/858475/353968.terrain b/public/terrain/19/858475/353968.terrain new file mode 100644 index 000000000..e5d19a41b Binary files /dev/null and b/public/terrain/19/858475/353968.terrain differ diff --git a/public/terrain/19/858475/353969.terrain b/public/terrain/19/858475/353969.terrain new file mode 100644 index 000000000..a80ff1d85 Binary files /dev/null and b/public/terrain/19/858475/353969.terrain differ diff --git a/public/terrain/19/858475/353970.terrain b/public/terrain/19/858475/353970.terrain new file mode 100644 index 000000000..d7a5704bc Binary files /dev/null and b/public/terrain/19/858475/353970.terrain differ diff --git a/public/terrain/19/858475/353971.terrain b/public/terrain/19/858475/353971.terrain new file mode 100644 index 000000000..e30f59323 Binary files /dev/null and b/public/terrain/19/858475/353971.terrain differ diff --git a/public/terrain/19/858475/353972.terrain b/public/terrain/19/858475/353972.terrain new file mode 100644 index 000000000..c5a9a0217 Binary files /dev/null and b/public/terrain/19/858475/353972.terrain differ diff --git a/public/terrain/19/858475/353973.terrain b/public/terrain/19/858475/353973.terrain new file mode 100644 index 000000000..126159803 Binary files /dev/null and b/public/terrain/19/858475/353973.terrain differ diff --git a/public/terrain/19/858475/353974.terrain b/public/terrain/19/858475/353974.terrain new file mode 100644 index 000000000..a79658e01 Binary files /dev/null and b/public/terrain/19/858475/353974.terrain differ diff --git a/public/terrain/19/858475/353975.terrain b/public/terrain/19/858475/353975.terrain new file mode 100644 index 000000000..0c09045b2 Binary files /dev/null and b/public/terrain/19/858475/353975.terrain differ diff --git a/public/terrain/19/858475/353976.terrain b/public/terrain/19/858475/353976.terrain new file mode 100644 index 000000000..e4c507607 Binary files /dev/null and b/public/terrain/19/858475/353976.terrain differ diff --git a/public/terrain/19/858475/353977.terrain b/public/terrain/19/858475/353977.terrain new file mode 100644 index 000000000..d03d0d088 Binary files /dev/null and b/public/terrain/19/858475/353977.terrain differ diff --git a/public/terrain/19/858475/353978.terrain b/public/terrain/19/858475/353978.terrain new file mode 100644 index 000000000..f3d73e615 Binary files /dev/null and b/public/terrain/19/858475/353978.terrain differ diff --git a/public/terrain/19/858475/353979.terrain b/public/terrain/19/858475/353979.terrain new file mode 100644 index 000000000..b4e086840 Binary files /dev/null and b/public/terrain/19/858475/353979.terrain differ diff --git a/public/terrain/19/858475/353980.terrain b/public/terrain/19/858475/353980.terrain new file mode 100644 index 000000000..8b1e80363 Binary files /dev/null and b/public/terrain/19/858475/353980.terrain differ diff --git a/public/terrain/19/858475/353981.terrain b/public/terrain/19/858475/353981.terrain new file mode 100644 index 000000000..0ca7d5052 Binary files /dev/null and b/public/terrain/19/858475/353981.terrain differ diff --git a/public/terrain/19/858475/353982.terrain b/public/terrain/19/858475/353982.terrain new file mode 100644 index 000000000..e1c97f265 Binary files /dev/null and b/public/terrain/19/858475/353982.terrain differ diff --git a/public/terrain/19/858475/353983.terrain b/public/terrain/19/858475/353983.terrain new file mode 100644 index 000000000..dc5f9d26b Binary files /dev/null and b/public/terrain/19/858475/353983.terrain differ diff --git a/public/terrain/19/858475/353984.terrain b/public/terrain/19/858475/353984.terrain new file mode 100644 index 000000000..930ed40bf Binary files /dev/null and b/public/terrain/19/858475/353984.terrain differ diff --git a/public/terrain/19/858475/353985.terrain b/public/terrain/19/858475/353985.terrain new file mode 100644 index 000000000..67168208f Binary files /dev/null and b/public/terrain/19/858475/353985.terrain differ diff --git a/public/terrain/19/858475/353986.terrain b/public/terrain/19/858475/353986.terrain new file mode 100644 index 000000000..3abe50461 Binary files /dev/null and b/public/terrain/19/858475/353986.terrain differ diff --git a/public/terrain/19/858475/353987.terrain b/public/terrain/19/858475/353987.terrain new file mode 100644 index 000000000..666fed97d Binary files /dev/null and b/public/terrain/19/858475/353987.terrain differ diff --git a/public/terrain/19/858475/353988.terrain b/public/terrain/19/858475/353988.terrain new file mode 100644 index 000000000..41ddaa2ae Binary files /dev/null and b/public/terrain/19/858475/353988.terrain differ diff --git a/public/terrain/19/858475/353989.terrain b/public/terrain/19/858475/353989.terrain new file mode 100644 index 000000000..e879f3054 Binary files /dev/null and b/public/terrain/19/858475/353989.terrain differ diff --git a/public/terrain/19/858475/353990.terrain b/public/terrain/19/858475/353990.terrain new file mode 100644 index 000000000..619f65ce5 Binary files /dev/null and b/public/terrain/19/858475/353990.terrain differ diff --git a/public/terrain/19/858475/353991.terrain b/public/terrain/19/858475/353991.terrain new file mode 100644 index 000000000..09fc7c630 Binary files /dev/null and b/public/terrain/19/858475/353991.terrain differ diff --git a/public/terrain/19/858475/353992.terrain b/public/terrain/19/858475/353992.terrain new file mode 100644 index 000000000..df0ccc583 Binary files /dev/null and b/public/terrain/19/858475/353992.terrain differ diff --git a/public/terrain/19/858475/353993.terrain b/public/terrain/19/858475/353993.terrain new file mode 100644 index 000000000..9059d8843 Binary files /dev/null and b/public/terrain/19/858475/353993.terrain differ diff --git a/public/terrain/19/858475/353994.terrain b/public/terrain/19/858475/353994.terrain new file mode 100644 index 000000000..855b545a4 Binary files /dev/null and b/public/terrain/19/858475/353994.terrain differ diff --git a/public/terrain/19/858475/353995.terrain b/public/terrain/19/858475/353995.terrain new file mode 100644 index 000000000..3dc3f34d6 Binary files /dev/null and b/public/terrain/19/858475/353995.terrain differ diff --git a/public/terrain/19/858475/353996.terrain b/public/terrain/19/858475/353996.terrain new file mode 100644 index 000000000..a83b97d8e Binary files /dev/null and b/public/terrain/19/858475/353996.terrain differ diff --git a/public/terrain/19/858475/353997.terrain b/public/terrain/19/858475/353997.terrain new file mode 100644 index 000000000..c973e6807 Binary files /dev/null and b/public/terrain/19/858475/353997.terrain differ diff --git a/public/terrain/19/858475/353998.terrain b/public/terrain/19/858475/353998.terrain new file mode 100644 index 000000000..b5488c6fa Binary files /dev/null and b/public/terrain/19/858475/353998.terrain differ diff --git a/public/terrain/19/858475/353999.terrain b/public/terrain/19/858475/353999.terrain new file mode 100644 index 000000000..0c8f265d0 Binary files /dev/null and b/public/terrain/19/858475/353999.terrain differ diff --git a/public/terrain/19/858475/354000.terrain b/public/terrain/19/858475/354000.terrain new file mode 100644 index 000000000..22ad7fa86 Binary files /dev/null and b/public/terrain/19/858475/354000.terrain differ diff --git a/public/terrain/19/858475/354001.terrain b/public/terrain/19/858475/354001.terrain new file mode 100644 index 000000000..f51aff6cf Binary files /dev/null and b/public/terrain/19/858475/354001.terrain differ diff --git a/public/terrain/19/858475/354002.terrain b/public/terrain/19/858475/354002.terrain new file mode 100644 index 000000000..c81d7ebb4 Binary files /dev/null and b/public/terrain/19/858475/354002.terrain differ diff --git a/public/terrain/19/858475/354003.terrain b/public/terrain/19/858475/354003.terrain new file mode 100644 index 000000000..cd56831cb Binary files /dev/null and b/public/terrain/19/858475/354003.terrain differ diff --git a/public/terrain/19/858475/354004.terrain b/public/terrain/19/858475/354004.terrain new file mode 100644 index 000000000..de9085ae7 Binary files /dev/null and b/public/terrain/19/858475/354004.terrain differ diff --git a/public/terrain/19/858475/354005.terrain b/public/terrain/19/858475/354005.terrain new file mode 100644 index 000000000..63f04adc7 Binary files /dev/null and b/public/terrain/19/858475/354005.terrain differ diff --git a/public/terrain/19/858475/354006.terrain b/public/terrain/19/858475/354006.terrain new file mode 100644 index 000000000..e5ceae7e0 Binary files /dev/null and b/public/terrain/19/858475/354006.terrain differ diff --git a/public/terrain/19/858475/354007.terrain b/public/terrain/19/858475/354007.terrain new file mode 100644 index 000000000..85936a1e4 Binary files /dev/null and b/public/terrain/19/858475/354007.terrain differ diff --git a/public/terrain/19/858475/354008.terrain b/public/terrain/19/858475/354008.terrain new file mode 100644 index 000000000..4d71c8887 Binary files /dev/null and b/public/terrain/19/858475/354008.terrain differ diff --git a/public/terrain/19/858475/354009.terrain b/public/terrain/19/858475/354009.terrain new file mode 100644 index 000000000..eea4cf986 Binary files /dev/null and b/public/terrain/19/858475/354009.terrain differ diff --git a/public/terrain/19/858475/354010.terrain b/public/terrain/19/858475/354010.terrain new file mode 100644 index 000000000..840079929 Binary files /dev/null and b/public/terrain/19/858475/354010.terrain differ diff --git a/public/terrain/19/858475/354011.terrain b/public/terrain/19/858475/354011.terrain new file mode 100644 index 000000000..7d18f78a5 Binary files /dev/null and b/public/terrain/19/858475/354011.terrain differ diff --git a/public/terrain/19/858475/354012.terrain b/public/terrain/19/858475/354012.terrain new file mode 100644 index 000000000..150758350 Binary files /dev/null and b/public/terrain/19/858475/354012.terrain differ diff --git a/public/terrain/19/858475/354013.terrain b/public/terrain/19/858475/354013.terrain new file mode 100644 index 000000000..e51729e81 Binary files /dev/null and b/public/terrain/19/858475/354013.terrain differ diff --git a/public/terrain/19/858475/354014.terrain b/public/terrain/19/858475/354014.terrain new file mode 100644 index 000000000..399dde8be Binary files /dev/null and b/public/terrain/19/858475/354014.terrain differ diff --git a/public/terrain/19/858475/354015.terrain b/public/terrain/19/858475/354015.terrain new file mode 100644 index 000000000..efc03c7df Binary files /dev/null and b/public/terrain/19/858475/354015.terrain differ diff --git a/public/terrain/19/858475/354016.terrain b/public/terrain/19/858475/354016.terrain new file mode 100644 index 000000000..93df91872 Binary files /dev/null and b/public/terrain/19/858475/354016.terrain differ diff --git a/public/terrain/19/858475/354017.terrain b/public/terrain/19/858475/354017.terrain new file mode 100644 index 000000000..97e7a548b Binary files /dev/null and b/public/terrain/19/858475/354017.terrain differ diff --git a/public/terrain/19/858475/354018.terrain b/public/terrain/19/858475/354018.terrain new file mode 100644 index 000000000..065c44466 Binary files /dev/null and b/public/terrain/19/858475/354018.terrain differ diff --git a/public/terrain/19/858475/354019.terrain b/public/terrain/19/858475/354019.terrain new file mode 100644 index 000000000..9a4611c97 Binary files /dev/null and b/public/terrain/19/858475/354019.terrain differ diff --git a/public/terrain/19/858475/354020.terrain b/public/terrain/19/858475/354020.terrain new file mode 100644 index 000000000..dd19a2a82 Binary files /dev/null and b/public/terrain/19/858475/354020.terrain differ diff --git a/public/terrain/19/858475/354021.terrain b/public/terrain/19/858475/354021.terrain new file mode 100644 index 000000000..f9b5e0aee Binary files /dev/null and b/public/terrain/19/858475/354021.terrain differ diff --git a/public/terrain/19/858475/354022.terrain b/public/terrain/19/858475/354022.terrain new file mode 100644 index 000000000..a575e4ec7 Binary files /dev/null and b/public/terrain/19/858475/354022.terrain differ diff --git a/public/terrain/19/858475/354023.terrain b/public/terrain/19/858475/354023.terrain new file mode 100644 index 000000000..c7879c71b Binary files /dev/null and b/public/terrain/19/858475/354023.terrain differ diff --git a/public/terrain/19/858475/354024.terrain b/public/terrain/19/858475/354024.terrain new file mode 100644 index 000000000..3334a0a9a Binary files /dev/null and b/public/terrain/19/858475/354024.terrain differ diff --git a/public/terrain/19/858475/354025.terrain b/public/terrain/19/858475/354025.terrain new file mode 100644 index 000000000..6e05d4110 Binary files /dev/null and b/public/terrain/19/858475/354025.terrain differ diff --git a/public/terrain/19/858475/354026.terrain b/public/terrain/19/858475/354026.terrain new file mode 100644 index 000000000..c2d135042 Binary files /dev/null and b/public/terrain/19/858475/354026.terrain differ diff --git a/public/terrain/19/858475/354027.terrain b/public/terrain/19/858475/354027.terrain new file mode 100644 index 000000000..f13b8736c Binary files /dev/null and b/public/terrain/19/858475/354027.terrain differ diff --git a/public/terrain/19/858475/354028.terrain b/public/terrain/19/858475/354028.terrain new file mode 100644 index 000000000..4458bd406 Binary files /dev/null and b/public/terrain/19/858475/354028.terrain differ diff --git a/public/terrain/19/858475/354029.terrain b/public/terrain/19/858475/354029.terrain new file mode 100644 index 000000000..1222b1b9a Binary files /dev/null and b/public/terrain/19/858475/354029.terrain differ diff --git a/public/terrain/19/858475/354030.terrain b/public/terrain/19/858475/354030.terrain new file mode 100644 index 000000000..27bf26991 Binary files /dev/null and b/public/terrain/19/858475/354030.terrain differ diff --git a/public/terrain/19/858475/354031.terrain b/public/terrain/19/858475/354031.terrain new file mode 100644 index 000000000..9126e0895 Binary files /dev/null and b/public/terrain/19/858475/354031.terrain differ diff --git a/public/terrain/19/858475/354032.terrain b/public/terrain/19/858475/354032.terrain new file mode 100644 index 000000000..c54fde0b4 Binary files /dev/null and b/public/terrain/19/858475/354032.terrain differ diff --git a/public/terrain/19/858475/354033.terrain b/public/terrain/19/858475/354033.terrain new file mode 100644 index 000000000..2d72ad67c Binary files /dev/null and b/public/terrain/19/858475/354033.terrain differ diff --git a/public/terrain/19/858475/354034.terrain b/public/terrain/19/858475/354034.terrain new file mode 100644 index 000000000..e3c59aa4a Binary files /dev/null and b/public/terrain/19/858475/354034.terrain differ diff --git a/public/terrain/19/858475/354035.terrain b/public/terrain/19/858475/354035.terrain new file mode 100644 index 000000000..25e1acfbd Binary files /dev/null and b/public/terrain/19/858475/354035.terrain differ diff --git a/public/terrain/19/858475/354036.terrain b/public/terrain/19/858475/354036.terrain new file mode 100644 index 000000000..f449b4bd8 Binary files /dev/null and b/public/terrain/19/858475/354036.terrain differ diff --git a/public/terrain/19/858475/354037.terrain b/public/terrain/19/858475/354037.terrain new file mode 100644 index 000000000..37c79889f Binary files /dev/null and b/public/terrain/19/858475/354037.terrain differ diff --git a/public/terrain/19/858475/354038.terrain b/public/terrain/19/858475/354038.terrain new file mode 100644 index 000000000..368205813 Binary files /dev/null and b/public/terrain/19/858475/354038.terrain differ diff --git a/public/terrain/19/858475/354039.terrain b/public/terrain/19/858475/354039.terrain new file mode 100644 index 000000000..a0f957566 Binary files /dev/null and b/public/terrain/19/858475/354039.terrain differ diff --git a/public/terrain/19/858475/354040.terrain b/public/terrain/19/858475/354040.terrain new file mode 100644 index 000000000..07974481d Binary files /dev/null and b/public/terrain/19/858475/354040.terrain differ diff --git a/public/terrain/19/858475/354041.terrain b/public/terrain/19/858475/354041.terrain new file mode 100644 index 000000000..c5333584e Binary files /dev/null and b/public/terrain/19/858475/354041.terrain differ diff --git a/public/terrain/19/858475/354042.terrain b/public/terrain/19/858475/354042.terrain new file mode 100644 index 000000000..327f8d50c Binary files /dev/null and b/public/terrain/19/858475/354042.terrain differ diff --git a/public/terrain/19/858475/354043.terrain b/public/terrain/19/858475/354043.terrain new file mode 100644 index 000000000..e32a92fbe Binary files /dev/null and b/public/terrain/19/858475/354043.terrain differ diff --git a/public/terrain/19/858475/354044.terrain b/public/terrain/19/858475/354044.terrain new file mode 100644 index 000000000..b8da2685b Binary files /dev/null and b/public/terrain/19/858475/354044.terrain differ diff --git a/public/terrain/19/858475/354045.terrain b/public/terrain/19/858475/354045.terrain new file mode 100644 index 000000000..7c7b2213b Binary files /dev/null and b/public/terrain/19/858475/354045.terrain differ diff --git a/public/terrain/19/858475/354046.terrain b/public/terrain/19/858475/354046.terrain new file mode 100644 index 000000000..261be5aff Binary files /dev/null and b/public/terrain/19/858475/354046.terrain differ diff --git a/public/terrain/19/858475/354047.terrain b/public/terrain/19/858475/354047.terrain new file mode 100644 index 000000000..bfdd5c04d Binary files /dev/null and b/public/terrain/19/858475/354047.terrain differ diff --git a/public/terrain/19/858475/354048.terrain b/public/terrain/19/858475/354048.terrain new file mode 100644 index 000000000..1853471cb Binary files /dev/null and b/public/terrain/19/858475/354048.terrain differ diff --git a/public/terrain/19/858475/354049.terrain b/public/terrain/19/858475/354049.terrain new file mode 100644 index 000000000..670cc724d Binary files /dev/null and b/public/terrain/19/858475/354049.terrain differ diff --git a/public/terrain/19/858475/354050.terrain b/public/terrain/19/858475/354050.terrain new file mode 100644 index 000000000..1041924bf Binary files /dev/null and b/public/terrain/19/858475/354050.terrain differ diff --git a/public/terrain/19/858475/354051.terrain b/public/terrain/19/858475/354051.terrain new file mode 100644 index 000000000..99dd76fbf Binary files /dev/null and b/public/terrain/19/858475/354051.terrain differ diff --git a/public/terrain/19/858475/354052.terrain b/public/terrain/19/858475/354052.terrain new file mode 100644 index 000000000..6cf8bc320 Binary files /dev/null and b/public/terrain/19/858475/354052.terrain differ diff --git a/public/terrain/19/858475/354053.terrain b/public/terrain/19/858475/354053.terrain new file mode 100644 index 000000000..ce673b281 Binary files /dev/null and b/public/terrain/19/858475/354053.terrain differ diff --git a/public/terrain/19/858475/354054.terrain b/public/terrain/19/858475/354054.terrain new file mode 100644 index 000000000..b2e672917 Binary files /dev/null and b/public/terrain/19/858475/354054.terrain differ diff --git a/public/terrain/19/858475/354055.terrain b/public/terrain/19/858475/354055.terrain new file mode 100644 index 000000000..b4c7820f7 Binary files /dev/null and b/public/terrain/19/858475/354055.terrain differ diff --git a/public/terrain/19/858475/354056.terrain b/public/terrain/19/858475/354056.terrain new file mode 100644 index 000000000..b12f44342 Binary files /dev/null and b/public/terrain/19/858475/354056.terrain differ diff --git a/public/terrain/19/858475/354057.terrain b/public/terrain/19/858475/354057.terrain new file mode 100644 index 000000000..3c7f151ff Binary files /dev/null and b/public/terrain/19/858475/354057.terrain differ diff --git a/public/terrain/19/858475/354058.terrain b/public/terrain/19/858475/354058.terrain new file mode 100644 index 000000000..3d2d13da9 Binary files /dev/null and b/public/terrain/19/858475/354058.terrain differ diff --git a/public/terrain/19/858475/354059.terrain b/public/terrain/19/858475/354059.terrain new file mode 100644 index 000000000..6a0d09a4d Binary files /dev/null and b/public/terrain/19/858475/354059.terrain differ diff --git a/public/terrain/19/858476/353743.terrain b/public/terrain/19/858476/353743.terrain new file mode 100644 index 000000000..2d1d343d7 Binary files /dev/null and b/public/terrain/19/858476/353743.terrain differ diff --git a/public/terrain/19/858476/353744.terrain b/public/terrain/19/858476/353744.terrain new file mode 100644 index 000000000..41a3828d7 Binary files /dev/null and b/public/terrain/19/858476/353744.terrain differ diff --git a/public/terrain/19/858476/353745.terrain b/public/terrain/19/858476/353745.terrain new file mode 100644 index 000000000..d05859930 Binary files /dev/null and b/public/terrain/19/858476/353745.terrain differ diff --git a/public/terrain/19/858476/353746.terrain b/public/terrain/19/858476/353746.terrain new file mode 100644 index 000000000..f1f0d224f Binary files /dev/null and b/public/terrain/19/858476/353746.terrain differ diff --git a/public/terrain/19/858476/353747.terrain b/public/terrain/19/858476/353747.terrain new file mode 100644 index 000000000..17b042f6c Binary files /dev/null and b/public/terrain/19/858476/353747.terrain differ diff --git a/public/terrain/19/858476/353748.terrain b/public/terrain/19/858476/353748.terrain new file mode 100644 index 000000000..fe49649ae Binary files /dev/null and b/public/terrain/19/858476/353748.terrain differ diff --git a/public/terrain/19/858476/353749.terrain b/public/terrain/19/858476/353749.terrain new file mode 100644 index 000000000..ccef2e68d Binary files /dev/null and b/public/terrain/19/858476/353749.terrain differ diff --git a/public/terrain/19/858476/353750.terrain b/public/terrain/19/858476/353750.terrain new file mode 100644 index 000000000..d1d868712 Binary files /dev/null and b/public/terrain/19/858476/353750.terrain differ diff --git a/public/terrain/19/858476/353751.terrain b/public/terrain/19/858476/353751.terrain new file mode 100644 index 000000000..a58b01769 Binary files /dev/null and b/public/terrain/19/858476/353751.terrain differ diff --git a/public/terrain/19/858476/353752.terrain b/public/terrain/19/858476/353752.terrain new file mode 100644 index 000000000..35958d906 Binary files /dev/null and b/public/terrain/19/858476/353752.terrain differ diff --git a/public/terrain/19/858476/353753.terrain b/public/terrain/19/858476/353753.terrain new file mode 100644 index 000000000..74e7540a0 Binary files /dev/null and b/public/terrain/19/858476/353753.terrain differ diff --git a/public/terrain/19/858476/353754.terrain b/public/terrain/19/858476/353754.terrain new file mode 100644 index 000000000..0277c9892 Binary files /dev/null and b/public/terrain/19/858476/353754.terrain differ diff --git a/public/terrain/19/858476/353755.terrain b/public/terrain/19/858476/353755.terrain new file mode 100644 index 000000000..d0aa5716f Binary files /dev/null and b/public/terrain/19/858476/353755.terrain differ diff --git a/public/terrain/19/858476/353756.terrain b/public/terrain/19/858476/353756.terrain new file mode 100644 index 000000000..ad7da2f34 Binary files /dev/null and b/public/terrain/19/858476/353756.terrain differ diff --git a/public/terrain/19/858476/353757.terrain b/public/terrain/19/858476/353757.terrain new file mode 100644 index 000000000..a4feb2d4b Binary files /dev/null and b/public/terrain/19/858476/353757.terrain differ diff --git a/public/terrain/19/858476/353758.terrain b/public/terrain/19/858476/353758.terrain new file mode 100644 index 000000000..ea05d0a7e Binary files /dev/null and b/public/terrain/19/858476/353758.terrain differ diff --git a/public/terrain/19/858476/353759.terrain b/public/terrain/19/858476/353759.terrain new file mode 100644 index 000000000..c1cc80d23 Binary files /dev/null and b/public/terrain/19/858476/353759.terrain differ diff --git a/public/terrain/19/858476/353760.terrain b/public/terrain/19/858476/353760.terrain new file mode 100644 index 000000000..007996d6a Binary files /dev/null and b/public/terrain/19/858476/353760.terrain differ diff --git a/public/terrain/19/858476/353761.terrain b/public/terrain/19/858476/353761.terrain new file mode 100644 index 000000000..d72614750 Binary files /dev/null and b/public/terrain/19/858476/353761.terrain differ diff --git a/public/terrain/19/858476/353762.terrain b/public/terrain/19/858476/353762.terrain new file mode 100644 index 000000000..e2ba06f6d Binary files /dev/null and b/public/terrain/19/858476/353762.terrain differ diff --git a/public/terrain/19/858476/353763.terrain b/public/terrain/19/858476/353763.terrain new file mode 100644 index 000000000..5d4370dc0 Binary files /dev/null and b/public/terrain/19/858476/353763.terrain differ diff --git a/public/terrain/19/858476/353764.terrain b/public/terrain/19/858476/353764.terrain new file mode 100644 index 000000000..9e28eeb62 Binary files /dev/null and b/public/terrain/19/858476/353764.terrain differ diff --git a/public/terrain/19/858476/353765.terrain b/public/terrain/19/858476/353765.terrain new file mode 100644 index 000000000..41e89135f Binary files /dev/null and b/public/terrain/19/858476/353765.terrain differ diff --git a/public/terrain/19/858476/353766.terrain b/public/terrain/19/858476/353766.terrain new file mode 100644 index 000000000..48ba84d00 Binary files /dev/null and b/public/terrain/19/858476/353766.terrain differ diff --git a/public/terrain/19/858476/353767.terrain b/public/terrain/19/858476/353767.terrain new file mode 100644 index 000000000..a76952385 Binary files /dev/null and b/public/terrain/19/858476/353767.terrain differ diff --git a/public/terrain/19/858476/353768.terrain b/public/terrain/19/858476/353768.terrain new file mode 100644 index 000000000..7d2d89216 Binary files /dev/null and b/public/terrain/19/858476/353768.terrain differ diff --git a/public/terrain/19/858476/353769.terrain b/public/terrain/19/858476/353769.terrain new file mode 100644 index 000000000..cfade3de5 Binary files /dev/null and b/public/terrain/19/858476/353769.terrain differ diff --git a/public/terrain/19/858476/353770.terrain b/public/terrain/19/858476/353770.terrain new file mode 100644 index 000000000..74d919948 Binary files /dev/null and b/public/terrain/19/858476/353770.terrain differ diff --git a/public/terrain/19/858476/353771.terrain b/public/terrain/19/858476/353771.terrain new file mode 100644 index 000000000..7e72bdda9 Binary files /dev/null and b/public/terrain/19/858476/353771.terrain differ diff --git a/public/terrain/19/858476/353772.terrain b/public/terrain/19/858476/353772.terrain new file mode 100644 index 000000000..dd7fac680 Binary files /dev/null and b/public/terrain/19/858476/353772.terrain differ diff --git a/public/terrain/19/858476/353773.terrain b/public/terrain/19/858476/353773.terrain new file mode 100644 index 000000000..57111a471 Binary files /dev/null and b/public/terrain/19/858476/353773.terrain differ diff --git a/public/terrain/19/858476/353774.terrain b/public/terrain/19/858476/353774.terrain new file mode 100644 index 000000000..073a265a0 Binary files /dev/null and b/public/terrain/19/858476/353774.terrain differ diff --git a/public/terrain/19/858476/353775.terrain b/public/terrain/19/858476/353775.terrain new file mode 100644 index 000000000..4fdae07f8 Binary files /dev/null and b/public/terrain/19/858476/353775.terrain differ diff --git a/public/terrain/19/858476/353776.terrain b/public/terrain/19/858476/353776.terrain new file mode 100644 index 000000000..0d35d7203 Binary files /dev/null and b/public/terrain/19/858476/353776.terrain differ diff --git a/public/terrain/19/858476/353777.terrain b/public/terrain/19/858476/353777.terrain new file mode 100644 index 000000000..9b18a1476 Binary files /dev/null and b/public/terrain/19/858476/353777.terrain differ diff --git a/public/terrain/19/858476/353778.terrain b/public/terrain/19/858476/353778.terrain new file mode 100644 index 000000000..886d06a44 Binary files /dev/null and b/public/terrain/19/858476/353778.terrain differ diff --git a/public/terrain/19/858476/353779.terrain b/public/terrain/19/858476/353779.terrain new file mode 100644 index 000000000..26bc56d2d Binary files /dev/null and b/public/terrain/19/858476/353779.terrain differ diff --git a/public/terrain/19/858476/353780.terrain b/public/terrain/19/858476/353780.terrain new file mode 100644 index 000000000..0623be733 Binary files /dev/null and b/public/terrain/19/858476/353780.terrain differ diff --git a/public/terrain/19/858476/353781.terrain b/public/terrain/19/858476/353781.terrain new file mode 100644 index 000000000..3eef56d88 Binary files /dev/null and b/public/terrain/19/858476/353781.terrain differ diff --git a/public/terrain/19/858476/353782.terrain b/public/terrain/19/858476/353782.terrain new file mode 100644 index 000000000..2cbcb0571 Binary files /dev/null and b/public/terrain/19/858476/353782.terrain differ diff --git a/public/terrain/19/858476/353783.terrain b/public/terrain/19/858476/353783.terrain new file mode 100644 index 000000000..8d5ecf817 Binary files /dev/null and b/public/terrain/19/858476/353783.terrain differ diff --git a/public/terrain/19/858476/353784.terrain b/public/terrain/19/858476/353784.terrain new file mode 100644 index 000000000..de766e8a2 Binary files /dev/null and b/public/terrain/19/858476/353784.terrain differ diff --git a/public/terrain/19/858476/353785.terrain b/public/terrain/19/858476/353785.terrain new file mode 100644 index 000000000..1318bae5e Binary files /dev/null and b/public/terrain/19/858476/353785.terrain differ diff --git a/public/terrain/19/858476/353786.terrain b/public/terrain/19/858476/353786.terrain new file mode 100644 index 000000000..a44a149db Binary files /dev/null and b/public/terrain/19/858476/353786.terrain differ diff --git a/public/terrain/19/858476/353787.terrain b/public/terrain/19/858476/353787.terrain new file mode 100644 index 000000000..f541692bd Binary files /dev/null and b/public/terrain/19/858476/353787.terrain differ diff --git a/public/terrain/19/858476/353788.terrain b/public/terrain/19/858476/353788.terrain new file mode 100644 index 000000000..c77ebbb51 Binary files /dev/null and b/public/terrain/19/858476/353788.terrain differ diff --git a/public/terrain/19/858476/353789.terrain b/public/terrain/19/858476/353789.terrain new file mode 100644 index 000000000..65908b984 Binary files /dev/null and b/public/terrain/19/858476/353789.terrain differ diff --git a/public/terrain/19/858476/353790.terrain b/public/terrain/19/858476/353790.terrain new file mode 100644 index 000000000..5bf1714df Binary files /dev/null and b/public/terrain/19/858476/353790.terrain differ diff --git a/public/terrain/19/858476/353791.terrain b/public/terrain/19/858476/353791.terrain new file mode 100644 index 000000000..c1a69ca1d Binary files /dev/null and b/public/terrain/19/858476/353791.terrain differ diff --git a/public/terrain/19/858476/353792.terrain b/public/terrain/19/858476/353792.terrain new file mode 100644 index 000000000..a5427da9c Binary files /dev/null and b/public/terrain/19/858476/353792.terrain differ diff --git a/public/terrain/19/858476/353793.terrain b/public/terrain/19/858476/353793.terrain new file mode 100644 index 000000000..e606bde4e Binary files /dev/null and b/public/terrain/19/858476/353793.terrain differ diff --git a/public/terrain/19/858476/353794.terrain b/public/terrain/19/858476/353794.terrain new file mode 100644 index 000000000..e82f7d1a5 Binary files /dev/null and b/public/terrain/19/858476/353794.terrain differ diff --git a/public/terrain/19/858476/353795.terrain b/public/terrain/19/858476/353795.terrain new file mode 100644 index 000000000..792f78c8d Binary files /dev/null and b/public/terrain/19/858476/353795.terrain differ diff --git a/public/terrain/19/858476/353796.terrain b/public/terrain/19/858476/353796.terrain new file mode 100644 index 000000000..4f0ae9f43 Binary files /dev/null and b/public/terrain/19/858476/353796.terrain differ diff --git a/public/terrain/19/858476/353797.terrain b/public/terrain/19/858476/353797.terrain new file mode 100644 index 000000000..c67be54e2 Binary files /dev/null and b/public/terrain/19/858476/353797.terrain differ diff --git a/public/terrain/19/858476/353798.terrain b/public/terrain/19/858476/353798.terrain new file mode 100644 index 000000000..1b98a8afb Binary files /dev/null and b/public/terrain/19/858476/353798.terrain differ diff --git a/public/terrain/19/858476/353799.terrain b/public/terrain/19/858476/353799.terrain new file mode 100644 index 000000000..c5ca7ce79 Binary files /dev/null and b/public/terrain/19/858476/353799.terrain differ diff --git a/public/terrain/19/858476/353800.terrain b/public/terrain/19/858476/353800.terrain new file mode 100644 index 000000000..6cffbb381 Binary files /dev/null and b/public/terrain/19/858476/353800.terrain differ diff --git a/public/terrain/19/858476/353801.terrain b/public/terrain/19/858476/353801.terrain new file mode 100644 index 000000000..92cbf242b Binary files /dev/null and b/public/terrain/19/858476/353801.terrain differ diff --git a/public/terrain/19/858476/353802.terrain b/public/terrain/19/858476/353802.terrain new file mode 100644 index 000000000..e1f4cc518 Binary files /dev/null and b/public/terrain/19/858476/353802.terrain differ diff --git a/public/terrain/19/858476/353803.terrain b/public/terrain/19/858476/353803.terrain new file mode 100644 index 000000000..3794b4c7f Binary files /dev/null and b/public/terrain/19/858476/353803.terrain differ diff --git a/public/terrain/19/858476/353804.terrain b/public/terrain/19/858476/353804.terrain new file mode 100644 index 000000000..6bd98aa3d Binary files /dev/null and b/public/terrain/19/858476/353804.terrain differ diff --git a/public/terrain/19/858476/353805.terrain b/public/terrain/19/858476/353805.terrain new file mode 100644 index 000000000..7956ebfcb Binary files /dev/null and b/public/terrain/19/858476/353805.terrain differ diff --git a/public/terrain/19/858476/353806.terrain b/public/terrain/19/858476/353806.terrain new file mode 100644 index 000000000..6ad38c382 Binary files /dev/null and b/public/terrain/19/858476/353806.terrain differ diff --git a/public/terrain/19/858476/353807.terrain b/public/terrain/19/858476/353807.terrain new file mode 100644 index 000000000..639bd2a92 Binary files /dev/null and b/public/terrain/19/858476/353807.terrain differ diff --git a/public/terrain/19/858476/353808.terrain b/public/terrain/19/858476/353808.terrain new file mode 100644 index 000000000..3bdf71052 Binary files /dev/null and b/public/terrain/19/858476/353808.terrain differ diff --git a/public/terrain/19/858476/353809.terrain b/public/terrain/19/858476/353809.terrain new file mode 100644 index 000000000..044c60a62 Binary files /dev/null and b/public/terrain/19/858476/353809.terrain differ diff --git a/public/terrain/19/858476/353810.terrain b/public/terrain/19/858476/353810.terrain new file mode 100644 index 000000000..1b9760dbc Binary files /dev/null and b/public/terrain/19/858476/353810.terrain differ diff --git a/public/terrain/19/858476/353811.terrain b/public/terrain/19/858476/353811.terrain new file mode 100644 index 000000000..60d56aa34 Binary files /dev/null and b/public/terrain/19/858476/353811.terrain differ diff --git a/public/terrain/19/858476/353812.terrain b/public/terrain/19/858476/353812.terrain new file mode 100644 index 000000000..b044c08a8 Binary files /dev/null and b/public/terrain/19/858476/353812.terrain differ diff --git a/public/terrain/19/858476/353813.terrain b/public/terrain/19/858476/353813.terrain new file mode 100644 index 000000000..c278c98e6 Binary files /dev/null and b/public/terrain/19/858476/353813.terrain differ diff --git a/public/terrain/19/858476/353814.terrain b/public/terrain/19/858476/353814.terrain new file mode 100644 index 000000000..81da8604d Binary files /dev/null and b/public/terrain/19/858476/353814.terrain differ diff --git a/public/terrain/19/858476/353815.terrain b/public/terrain/19/858476/353815.terrain new file mode 100644 index 000000000..a2ac07036 Binary files /dev/null and b/public/terrain/19/858476/353815.terrain differ diff --git a/public/terrain/19/858476/353816.terrain b/public/terrain/19/858476/353816.terrain new file mode 100644 index 000000000..61f90d0fd Binary files /dev/null and b/public/terrain/19/858476/353816.terrain differ diff --git a/public/terrain/19/858476/353817.terrain b/public/terrain/19/858476/353817.terrain new file mode 100644 index 000000000..a42e1ebf1 Binary files /dev/null and b/public/terrain/19/858476/353817.terrain differ diff --git a/public/terrain/19/858476/353818.terrain b/public/terrain/19/858476/353818.terrain new file mode 100644 index 000000000..ef147a212 Binary files /dev/null and b/public/terrain/19/858476/353818.terrain differ diff --git a/public/terrain/19/858476/353819.terrain b/public/terrain/19/858476/353819.terrain new file mode 100644 index 000000000..89812ec64 Binary files /dev/null and b/public/terrain/19/858476/353819.terrain differ diff --git a/public/terrain/19/858476/353820.terrain b/public/terrain/19/858476/353820.terrain new file mode 100644 index 000000000..ea861e8c3 Binary files /dev/null and b/public/terrain/19/858476/353820.terrain differ diff --git a/public/terrain/19/858476/353821.terrain b/public/terrain/19/858476/353821.terrain new file mode 100644 index 000000000..fcf2c09ce Binary files /dev/null and b/public/terrain/19/858476/353821.terrain differ diff --git a/public/terrain/19/858476/353822.terrain b/public/terrain/19/858476/353822.terrain new file mode 100644 index 000000000..db59b66b5 Binary files /dev/null and b/public/terrain/19/858476/353822.terrain differ diff --git a/public/terrain/19/858476/353823.terrain b/public/terrain/19/858476/353823.terrain new file mode 100644 index 000000000..7c427a666 Binary files /dev/null and b/public/terrain/19/858476/353823.terrain differ diff --git a/public/terrain/19/858476/353824.terrain b/public/terrain/19/858476/353824.terrain new file mode 100644 index 000000000..0b3f67663 Binary files /dev/null and b/public/terrain/19/858476/353824.terrain differ diff --git a/public/terrain/19/858476/353825.terrain b/public/terrain/19/858476/353825.terrain new file mode 100644 index 000000000..1684450e8 Binary files /dev/null and b/public/terrain/19/858476/353825.terrain differ diff --git a/public/terrain/19/858476/353826.terrain b/public/terrain/19/858476/353826.terrain new file mode 100644 index 000000000..7d625d97b Binary files /dev/null and b/public/terrain/19/858476/353826.terrain differ diff --git a/public/terrain/19/858476/353827.terrain b/public/terrain/19/858476/353827.terrain new file mode 100644 index 000000000..c4b72db85 Binary files /dev/null and b/public/terrain/19/858476/353827.terrain differ diff --git a/public/terrain/19/858476/353828.terrain b/public/terrain/19/858476/353828.terrain new file mode 100644 index 000000000..509772921 Binary files /dev/null and b/public/terrain/19/858476/353828.terrain differ diff --git a/public/terrain/19/858476/353829.terrain b/public/terrain/19/858476/353829.terrain new file mode 100644 index 000000000..0284e8466 Binary files /dev/null and b/public/terrain/19/858476/353829.terrain differ diff --git a/public/terrain/19/858476/353830.terrain b/public/terrain/19/858476/353830.terrain new file mode 100644 index 000000000..6f2702162 Binary files /dev/null and b/public/terrain/19/858476/353830.terrain differ diff --git a/public/terrain/19/858476/353831.terrain b/public/terrain/19/858476/353831.terrain new file mode 100644 index 000000000..f3126f64c Binary files /dev/null and b/public/terrain/19/858476/353831.terrain differ diff --git a/public/terrain/19/858476/353832.terrain b/public/terrain/19/858476/353832.terrain new file mode 100644 index 000000000..f672c4ffb Binary files /dev/null and b/public/terrain/19/858476/353832.terrain differ diff --git a/public/terrain/19/858476/353833.terrain b/public/terrain/19/858476/353833.terrain new file mode 100644 index 000000000..dd1e08e3b Binary files /dev/null and b/public/terrain/19/858476/353833.terrain differ diff --git a/public/terrain/19/858476/353834.terrain b/public/terrain/19/858476/353834.terrain new file mode 100644 index 000000000..ef3327561 Binary files /dev/null and b/public/terrain/19/858476/353834.terrain differ diff --git a/public/terrain/19/858476/353835.terrain b/public/terrain/19/858476/353835.terrain new file mode 100644 index 000000000..f06e91063 Binary files /dev/null and b/public/terrain/19/858476/353835.terrain differ diff --git a/public/terrain/19/858476/353836.terrain b/public/terrain/19/858476/353836.terrain new file mode 100644 index 000000000..e518c772d Binary files /dev/null and b/public/terrain/19/858476/353836.terrain differ diff --git a/public/terrain/19/858476/353837.terrain b/public/terrain/19/858476/353837.terrain new file mode 100644 index 000000000..70489299b Binary files /dev/null and b/public/terrain/19/858476/353837.terrain differ diff --git a/public/terrain/19/858476/353838.terrain b/public/terrain/19/858476/353838.terrain new file mode 100644 index 000000000..8159a4075 Binary files /dev/null and b/public/terrain/19/858476/353838.terrain differ diff --git a/public/terrain/19/858476/353839.terrain b/public/terrain/19/858476/353839.terrain new file mode 100644 index 000000000..a32f194d0 Binary files /dev/null and b/public/terrain/19/858476/353839.terrain differ diff --git a/public/terrain/19/858476/353840.terrain b/public/terrain/19/858476/353840.terrain new file mode 100644 index 000000000..3d9cc1b0e Binary files /dev/null and b/public/terrain/19/858476/353840.terrain differ diff --git a/public/terrain/19/858476/353841.terrain b/public/terrain/19/858476/353841.terrain new file mode 100644 index 000000000..40b076ad4 Binary files /dev/null and b/public/terrain/19/858476/353841.terrain differ diff --git a/public/terrain/19/858476/353842.terrain b/public/terrain/19/858476/353842.terrain new file mode 100644 index 000000000..ba9bac4d6 Binary files /dev/null and b/public/terrain/19/858476/353842.terrain differ diff --git a/public/terrain/19/858476/353843.terrain b/public/terrain/19/858476/353843.terrain new file mode 100644 index 000000000..98e8c51f2 Binary files /dev/null and b/public/terrain/19/858476/353843.terrain differ diff --git a/public/terrain/19/858476/353844.terrain b/public/terrain/19/858476/353844.terrain new file mode 100644 index 000000000..3ad0c0c67 Binary files /dev/null and b/public/terrain/19/858476/353844.terrain differ diff --git a/public/terrain/19/858476/353845.terrain b/public/terrain/19/858476/353845.terrain new file mode 100644 index 000000000..75f056c3f Binary files /dev/null and b/public/terrain/19/858476/353845.terrain differ diff --git a/public/terrain/19/858476/353846.terrain b/public/terrain/19/858476/353846.terrain new file mode 100644 index 000000000..a1af8824d Binary files /dev/null and b/public/terrain/19/858476/353846.terrain differ diff --git a/public/terrain/19/858476/353847.terrain b/public/terrain/19/858476/353847.terrain new file mode 100644 index 000000000..f549520d1 Binary files /dev/null and b/public/terrain/19/858476/353847.terrain differ diff --git a/public/terrain/19/858476/353848.terrain b/public/terrain/19/858476/353848.terrain new file mode 100644 index 000000000..e1335a72c Binary files /dev/null and b/public/terrain/19/858476/353848.terrain differ diff --git a/public/terrain/19/858476/353849.terrain b/public/terrain/19/858476/353849.terrain new file mode 100644 index 000000000..bc640ccf2 Binary files /dev/null and b/public/terrain/19/858476/353849.terrain differ diff --git a/public/terrain/19/858476/353850.terrain b/public/terrain/19/858476/353850.terrain new file mode 100644 index 000000000..31e22e569 Binary files /dev/null and b/public/terrain/19/858476/353850.terrain differ diff --git a/public/terrain/19/858476/353851.terrain b/public/terrain/19/858476/353851.terrain new file mode 100644 index 000000000..b38c2661f Binary files /dev/null and b/public/terrain/19/858476/353851.terrain differ diff --git a/public/terrain/19/858476/353852.terrain b/public/terrain/19/858476/353852.terrain new file mode 100644 index 000000000..fdb973630 Binary files /dev/null and b/public/terrain/19/858476/353852.terrain differ diff --git a/public/terrain/19/858476/353853.terrain b/public/terrain/19/858476/353853.terrain new file mode 100644 index 000000000..3e827380e Binary files /dev/null and b/public/terrain/19/858476/353853.terrain differ diff --git a/public/terrain/19/858476/353854.terrain b/public/terrain/19/858476/353854.terrain new file mode 100644 index 000000000..b65e20bdd Binary files /dev/null and b/public/terrain/19/858476/353854.terrain differ diff --git a/public/terrain/19/858476/353855.terrain b/public/terrain/19/858476/353855.terrain new file mode 100644 index 000000000..925269868 Binary files /dev/null and b/public/terrain/19/858476/353855.terrain differ diff --git a/public/terrain/19/858476/353856.terrain b/public/terrain/19/858476/353856.terrain new file mode 100644 index 000000000..09fa6e4cc Binary files /dev/null and b/public/terrain/19/858476/353856.terrain differ diff --git a/public/terrain/19/858476/353857.terrain b/public/terrain/19/858476/353857.terrain new file mode 100644 index 000000000..6bd2093fc Binary files /dev/null and b/public/terrain/19/858476/353857.terrain differ diff --git a/public/terrain/19/858476/353858.terrain b/public/terrain/19/858476/353858.terrain new file mode 100644 index 000000000..0c749de5f Binary files /dev/null and b/public/terrain/19/858476/353858.terrain differ diff --git a/public/terrain/19/858476/353859.terrain b/public/terrain/19/858476/353859.terrain new file mode 100644 index 000000000..3d348b6a6 Binary files /dev/null and b/public/terrain/19/858476/353859.terrain differ diff --git a/public/terrain/19/858476/353860.terrain b/public/terrain/19/858476/353860.terrain new file mode 100644 index 000000000..4c86ec145 Binary files /dev/null and b/public/terrain/19/858476/353860.terrain differ diff --git a/public/terrain/19/858476/353861.terrain b/public/terrain/19/858476/353861.terrain new file mode 100644 index 000000000..a1fb1087b Binary files /dev/null and b/public/terrain/19/858476/353861.terrain differ diff --git a/public/terrain/19/858476/353862.terrain b/public/terrain/19/858476/353862.terrain new file mode 100644 index 000000000..1e60c9a20 Binary files /dev/null and b/public/terrain/19/858476/353862.terrain differ diff --git a/public/terrain/19/858476/353863.terrain b/public/terrain/19/858476/353863.terrain new file mode 100644 index 000000000..72850e9ab Binary files /dev/null and b/public/terrain/19/858476/353863.terrain differ diff --git a/public/terrain/19/858476/353864.terrain b/public/terrain/19/858476/353864.terrain new file mode 100644 index 000000000..2575fea3f Binary files /dev/null and b/public/terrain/19/858476/353864.terrain differ diff --git a/public/terrain/19/858476/353865.terrain b/public/terrain/19/858476/353865.terrain new file mode 100644 index 000000000..40500ef26 Binary files /dev/null and b/public/terrain/19/858476/353865.terrain differ diff --git a/public/terrain/19/858476/353866.terrain b/public/terrain/19/858476/353866.terrain new file mode 100644 index 000000000..ff3bf1e33 Binary files /dev/null and b/public/terrain/19/858476/353866.terrain differ diff --git a/public/terrain/19/858476/353867.terrain b/public/terrain/19/858476/353867.terrain new file mode 100644 index 000000000..ba087e213 Binary files /dev/null and b/public/terrain/19/858476/353867.terrain differ diff --git a/public/terrain/19/858476/353868.terrain b/public/terrain/19/858476/353868.terrain new file mode 100644 index 000000000..2542fae2e Binary files /dev/null and b/public/terrain/19/858476/353868.terrain differ diff --git a/public/terrain/19/858476/353869.terrain b/public/terrain/19/858476/353869.terrain new file mode 100644 index 000000000..e9d2ab12d Binary files /dev/null and b/public/terrain/19/858476/353869.terrain differ diff --git a/public/terrain/19/858476/353870.terrain b/public/terrain/19/858476/353870.terrain new file mode 100644 index 000000000..d05c797ea Binary files /dev/null and b/public/terrain/19/858476/353870.terrain differ diff --git a/public/terrain/19/858476/353871.terrain b/public/terrain/19/858476/353871.terrain new file mode 100644 index 000000000..e7fea2853 Binary files /dev/null and b/public/terrain/19/858476/353871.terrain differ diff --git a/public/terrain/19/858476/353872.terrain b/public/terrain/19/858476/353872.terrain new file mode 100644 index 000000000..72c947699 Binary files /dev/null and b/public/terrain/19/858476/353872.terrain differ diff --git a/public/terrain/19/858476/353873.terrain b/public/terrain/19/858476/353873.terrain new file mode 100644 index 000000000..3a3260c67 Binary files /dev/null and b/public/terrain/19/858476/353873.terrain differ diff --git a/public/terrain/19/858476/353874.terrain b/public/terrain/19/858476/353874.terrain new file mode 100644 index 000000000..d6851e167 Binary files /dev/null and b/public/terrain/19/858476/353874.terrain differ diff --git a/public/terrain/19/858476/353875.terrain b/public/terrain/19/858476/353875.terrain new file mode 100644 index 000000000..1bd3f8ffc Binary files /dev/null and b/public/terrain/19/858476/353875.terrain differ diff --git a/public/terrain/19/858476/353876.terrain b/public/terrain/19/858476/353876.terrain new file mode 100644 index 000000000..38ca4c066 Binary files /dev/null and b/public/terrain/19/858476/353876.terrain differ diff --git a/public/terrain/19/858476/353877.terrain b/public/terrain/19/858476/353877.terrain new file mode 100644 index 000000000..b53e0d624 Binary files /dev/null and b/public/terrain/19/858476/353877.terrain differ diff --git a/public/terrain/19/858476/353878.terrain b/public/terrain/19/858476/353878.terrain new file mode 100644 index 000000000..ba4e01ec8 Binary files /dev/null and b/public/terrain/19/858476/353878.terrain differ diff --git a/public/terrain/19/858476/353879.terrain b/public/terrain/19/858476/353879.terrain new file mode 100644 index 000000000..c17af3f26 Binary files /dev/null and b/public/terrain/19/858476/353879.terrain differ diff --git a/public/terrain/19/858476/353880.terrain b/public/terrain/19/858476/353880.terrain new file mode 100644 index 000000000..76097a0be Binary files /dev/null and b/public/terrain/19/858476/353880.terrain differ diff --git a/public/terrain/19/858476/353881.terrain b/public/terrain/19/858476/353881.terrain new file mode 100644 index 000000000..cbf836202 Binary files /dev/null and b/public/terrain/19/858476/353881.terrain differ diff --git a/public/terrain/19/858476/353882.terrain b/public/terrain/19/858476/353882.terrain new file mode 100644 index 000000000..56244101c Binary files /dev/null and b/public/terrain/19/858476/353882.terrain differ diff --git a/public/terrain/19/858476/353883.terrain b/public/terrain/19/858476/353883.terrain new file mode 100644 index 000000000..078742a08 Binary files /dev/null and b/public/terrain/19/858476/353883.terrain differ diff --git a/public/terrain/19/858476/353884.terrain b/public/terrain/19/858476/353884.terrain new file mode 100644 index 000000000..bd90da03f Binary files /dev/null and b/public/terrain/19/858476/353884.terrain differ diff --git a/public/terrain/19/858476/353885.terrain b/public/terrain/19/858476/353885.terrain new file mode 100644 index 000000000..929b8ffa9 Binary files /dev/null and b/public/terrain/19/858476/353885.terrain differ diff --git a/public/terrain/19/858476/353886.terrain b/public/terrain/19/858476/353886.terrain new file mode 100644 index 000000000..3b53433da Binary files /dev/null and b/public/terrain/19/858476/353886.terrain differ diff --git a/public/terrain/19/858476/353887.terrain b/public/terrain/19/858476/353887.terrain new file mode 100644 index 000000000..41bfc0d20 Binary files /dev/null and b/public/terrain/19/858476/353887.terrain differ diff --git a/public/terrain/19/858476/353888.terrain b/public/terrain/19/858476/353888.terrain new file mode 100644 index 000000000..41994b761 Binary files /dev/null and b/public/terrain/19/858476/353888.terrain differ diff --git a/public/terrain/19/858476/353889.terrain b/public/terrain/19/858476/353889.terrain new file mode 100644 index 000000000..491290ef3 Binary files /dev/null and b/public/terrain/19/858476/353889.terrain differ diff --git a/public/terrain/19/858476/353890.terrain b/public/terrain/19/858476/353890.terrain new file mode 100644 index 000000000..2317ea64d Binary files /dev/null and b/public/terrain/19/858476/353890.terrain differ diff --git a/public/terrain/19/858476/353891.terrain b/public/terrain/19/858476/353891.terrain new file mode 100644 index 000000000..41541cb54 Binary files /dev/null and b/public/terrain/19/858476/353891.terrain differ diff --git a/public/terrain/19/858476/353892.terrain b/public/terrain/19/858476/353892.terrain new file mode 100644 index 000000000..a1aa378d9 Binary files /dev/null and b/public/terrain/19/858476/353892.terrain differ diff --git a/public/terrain/19/858476/353893.terrain b/public/terrain/19/858476/353893.terrain new file mode 100644 index 000000000..cf1d32d92 Binary files /dev/null and b/public/terrain/19/858476/353893.terrain differ diff --git a/public/terrain/19/858476/353894.terrain b/public/terrain/19/858476/353894.terrain new file mode 100644 index 000000000..6b4078380 Binary files /dev/null and b/public/terrain/19/858476/353894.terrain differ diff --git a/public/terrain/19/858476/353895.terrain b/public/terrain/19/858476/353895.terrain new file mode 100644 index 000000000..bbff94c04 Binary files /dev/null and b/public/terrain/19/858476/353895.terrain differ diff --git a/public/terrain/19/858476/353896.terrain b/public/terrain/19/858476/353896.terrain new file mode 100644 index 000000000..b3c553fd0 Binary files /dev/null and b/public/terrain/19/858476/353896.terrain differ diff --git a/public/terrain/19/858476/353897.terrain b/public/terrain/19/858476/353897.terrain new file mode 100644 index 000000000..00e2783c7 Binary files /dev/null and b/public/terrain/19/858476/353897.terrain differ diff --git a/public/terrain/19/858476/353898.terrain b/public/terrain/19/858476/353898.terrain new file mode 100644 index 000000000..0c7fdc5f5 Binary files /dev/null and b/public/terrain/19/858476/353898.terrain differ diff --git a/public/terrain/19/858476/353899.terrain b/public/terrain/19/858476/353899.terrain new file mode 100644 index 000000000..faa0728c4 Binary files /dev/null and b/public/terrain/19/858476/353899.terrain differ diff --git a/public/terrain/19/858476/353900.terrain b/public/terrain/19/858476/353900.terrain new file mode 100644 index 000000000..382a6b865 Binary files /dev/null and b/public/terrain/19/858476/353900.terrain differ diff --git a/public/terrain/19/858476/353901.terrain b/public/terrain/19/858476/353901.terrain new file mode 100644 index 000000000..eeaf60621 Binary files /dev/null and b/public/terrain/19/858476/353901.terrain differ diff --git a/public/terrain/19/858476/353902.terrain b/public/terrain/19/858476/353902.terrain new file mode 100644 index 000000000..1bbfe33a2 Binary files /dev/null and b/public/terrain/19/858476/353902.terrain differ diff --git a/public/terrain/19/858476/353903.terrain b/public/terrain/19/858476/353903.terrain new file mode 100644 index 000000000..72cb4cadb Binary files /dev/null and b/public/terrain/19/858476/353903.terrain differ diff --git a/public/terrain/19/858476/353904.terrain b/public/terrain/19/858476/353904.terrain new file mode 100644 index 000000000..ef3c0ab92 Binary files /dev/null and b/public/terrain/19/858476/353904.terrain differ diff --git a/public/terrain/19/858476/353905.terrain b/public/terrain/19/858476/353905.terrain new file mode 100644 index 000000000..21061f5fd Binary files /dev/null and b/public/terrain/19/858476/353905.terrain differ diff --git a/public/terrain/19/858476/353906.terrain b/public/terrain/19/858476/353906.terrain new file mode 100644 index 000000000..83707b8f2 Binary files /dev/null and b/public/terrain/19/858476/353906.terrain differ diff --git a/public/terrain/19/858476/353907.terrain b/public/terrain/19/858476/353907.terrain new file mode 100644 index 000000000..957a6dfaa Binary files /dev/null and b/public/terrain/19/858476/353907.terrain differ diff --git a/public/terrain/19/858476/353908.terrain b/public/terrain/19/858476/353908.terrain new file mode 100644 index 000000000..12191740b Binary files /dev/null and b/public/terrain/19/858476/353908.terrain differ diff --git a/public/terrain/19/858476/353909.terrain b/public/terrain/19/858476/353909.terrain new file mode 100644 index 000000000..fa3dc1d39 Binary files /dev/null and b/public/terrain/19/858476/353909.terrain differ diff --git a/public/terrain/19/858476/353910.terrain b/public/terrain/19/858476/353910.terrain new file mode 100644 index 000000000..29297d351 Binary files /dev/null and b/public/terrain/19/858476/353910.terrain differ diff --git a/public/terrain/19/858476/353911.terrain b/public/terrain/19/858476/353911.terrain new file mode 100644 index 000000000..baa016e49 Binary files /dev/null and b/public/terrain/19/858476/353911.terrain differ diff --git a/public/terrain/19/858476/353912.terrain b/public/terrain/19/858476/353912.terrain new file mode 100644 index 000000000..2af30e9bc Binary files /dev/null and b/public/terrain/19/858476/353912.terrain differ diff --git a/public/terrain/19/858476/353913.terrain b/public/terrain/19/858476/353913.terrain new file mode 100644 index 000000000..05afda496 Binary files /dev/null and b/public/terrain/19/858476/353913.terrain differ diff --git a/public/terrain/19/858476/353914.terrain b/public/terrain/19/858476/353914.terrain new file mode 100644 index 000000000..d9f3fa737 Binary files /dev/null and b/public/terrain/19/858476/353914.terrain differ diff --git a/public/terrain/19/858476/353915.terrain b/public/terrain/19/858476/353915.terrain new file mode 100644 index 000000000..15beec640 Binary files /dev/null and b/public/terrain/19/858476/353915.terrain differ diff --git a/public/terrain/19/858476/353916.terrain b/public/terrain/19/858476/353916.terrain new file mode 100644 index 000000000..feee7a7bf Binary files /dev/null and b/public/terrain/19/858476/353916.terrain differ diff --git a/public/terrain/19/858476/353917.terrain b/public/terrain/19/858476/353917.terrain new file mode 100644 index 000000000..3941f9f25 Binary files /dev/null and b/public/terrain/19/858476/353917.terrain differ diff --git a/public/terrain/19/858476/353918.terrain b/public/terrain/19/858476/353918.terrain new file mode 100644 index 000000000..1b5f22302 Binary files /dev/null and b/public/terrain/19/858476/353918.terrain differ diff --git a/public/terrain/19/858476/353919.terrain b/public/terrain/19/858476/353919.terrain new file mode 100644 index 000000000..db8344249 Binary files /dev/null and b/public/terrain/19/858476/353919.terrain differ diff --git a/public/terrain/19/858476/353920.terrain b/public/terrain/19/858476/353920.terrain new file mode 100644 index 000000000..c9cc05bb4 Binary files /dev/null and b/public/terrain/19/858476/353920.terrain differ diff --git a/public/terrain/19/858476/353921.terrain b/public/terrain/19/858476/353921.terrain new file mode 100644 index 000000000..95aa32b4f Binary files /dev/null and b/public/terrain/19/858476/353921.terrain differ diff --git a/public/terrain/19/858476/353922.terrain b/public/terrain/19/858476/353922.terrain new file mode 100644 index 000000000..a08412712 Binary files /dev/null and b/public/terrain/19/858476/353922.terrain differ diff --git a/public/terrain/19/858476/353923.terrain b/public/terrain/19/858476/353923.terrain new file mode 100644 index 000000000..e5f986fd7 Binary files /dev/null and b/public/terrain/19/858476/353923.terrain differ diff --git a/public/terrain/19/858476/353924.terrain b/public/terrain/19/858476/353924.terrain new file mode 100644 index 000000000..b79c18e0d Binary files /dev/null and b/public/terrain/19/858476/353924.terrain differ diff --git a/public/terrain/19/858476/353925.terrain b/public/terrain/19/858476/353925.terrain new file mode 100644 index 000000000..fcba19a83 Binary files /dev/null and b/public/terrain/19/858476/353925.terrain differ diff --git a/public/terrain/19/858476/353926.terrain b/public/terrain/19/858476/353926.terrain new file mode 100644 index 000000000..6fd3d368f Binary files /dev/null and b/public/terrain/19/858476/353926.terrain differ diff --git a/public/terrain/19/858476/353927.terrain b/public/terrain/19/858476/353927.terrain new file mode 100644 index 000000000..1163e8bcd Binary files /dev/null and b/public/terrain/19/858476/353927.terrain differ diff --git a/public/terrain/19/858476/353928.terrain b/public/terrain/19/858476/353928.terrain new file mode 100644 index 000000000..876849c35 Binary files /dev/null and b/public/terrain/19/858476/353928.terrain differ diff --git a/public/terrain/19/858476/353929.terrain b/public/terrain/19/858476/353929.terrain new file mode 100644 index 000000000..3c562db51 Binary files /dev/null and b/public/terrain/19/858476/353929.terrain differ diff --git a/public/terrain/19/858476/353930.terrain b/public/terrain/19/858476/353930.terrain new file mode 100644 index 000000000..b654b2828 Binary files /dev/null and b/public/terrain/19/858476/353930.terrain differ diff --git a/public/terrain/19/858476/353931.terrain b/public/terrain/19/858476/353931.terrain new file mode 100644 index 000000000..705d99c14 Binary files /dev/null and b/public/terrain/19/858476/353931.terrain differ diff --git a/public/terrain/19/858476/353932.terrain b/public/terrain/19/858476/353932.terrain new file mode 100644 index 000000000..296ca2c92 Binary files /dev/null and b/public/terrain/19/858476/353932.terrain differ diff --git a/public/terrain/19/858476/353933.terrain b/public/terrain/19/858476/353933.terrain new file mode 100644 index 000000000..64a8a8d62 Binary files /dev/null and b/public/terrain/19/858476/353933.terrain differ diff --git a/public/terrain/19/858476/353934.terrain b/public/terrain/19/858476/353934.terrain new file mode 100644 index 000000000..54e6f35cc Binary files /dev/null and b/public/terrain/19/858476/353934.terrain differ diff --git a/public/terrain/19/858476/353935.terrain b/public/terrain/19/858476/353935.terrain new file mode 100644 index 000000000..7624b224f Binary files /dev/null and b/public/terrain/19/858476/353935.terrain differ diff --git a/public/terrain/19/858476/353936.terrain b/public/terrain/19/858476/353936.terrain new file mode 100644 index 000000000..cfede9062 Binary files /dev/null and b/public/terrain/19/858476/353936.terrain differ diff --git a/public/terrain/19/858476/353937.terrain b/public/terrain/19/858476/353937.terrain new file mode 100644 index 000000000..5a83e828f Binary files /dev/null and b/public/terrain/19/858476/353937.terrain differ diff --git a/public/terrain/19/858476/353938.terrain b/public/terrain/19/858476/353938.terrain new file mode 100644 index 000000000..8c78c8a7c Binary files /dev/null and b/public/terrain/19/858476/353938.terrain differ diff --git a/public/terrain/19/858476/353939.terrain b/public/terrain/19/858476/353939.terrain new file mode 100644 index 000000000..8c2f78d92 Binary files /dev/null and b/public/terrain/19/858476/353939.terrain differ diff --git a/public/terrain/19/858476/353940.terrain b/public/terrain/19/858476/353940.terrain new file mode 100644 index 000000000..67b1d3cbf Binary files /dev/null and b/public/terrain/19/858476/353940.terrain differ diff --git a/public/terrain/19/858476/353941.terrain b/public/terrain/19/858476/353941.terrain new file mode 100644 index 000000000..f1b692f8b Binary files /dev/null and b/public/terrain/19/858476/353941.terrain differ diff --git a/public/terrain/19/858476/353942.terrain b/public/terrain/19/858476/353942.terrain new file mode 100644 index 000000000..1fdf5f7be Binary files /dev/null and b/public/terrain/19/858476/353942.terrain differ diff --git a/public/terrain/19/858476/353943.terrain b/public/terrain/19/858476/353943.terrain new file mode 100644 index 000000000..fee138ed2 Binary files /dev/null and b/public/terrain/19/858476/353943.terrain differ diff --git a/public/terrain/19/858476/353944.terrain b/public/terrain/19/858476/353944.terrain new file mode 100644 index 000000000..8b7d66aa6 Binary files /dev/null and b/public/terrain/19/858476/353944.terrain differ diff --git a/public/terrain/19/858476/353945.terrain b/public/terrain/19/858476/353945.terrain new file mode 100644 index 000000000..4d9e9d124 Binary files /dev/null and b/public/terrain/19/858476/353945.terrain differ diff --git a/public/terrain/19/858476/353946.terrain b/public/terrain/19/858476/353946.terrain new file mode 100644 index 000000000..ea1d7ece4 Binary files /dev/null and b/public/terrain/19/858476/353946.terrain differ diff --git a/public/terrain/19/858476/353947.terrain b/public/terrain/19/858476/353947.terrain new file mode 100644 index 000000000..cb57d0311 Binary files /dev/null and b/public/terrain/19/858476/353947.terrain differ diff --git a/public/terrain/19/858476/353948.terrain b/public/terrain/19/858476/353948.terrain new file mode 100644 index 000000000..dffa9514b Binary files /dev/null and b/public/terrain/19/858476/353948.terrain differ diff --git a/public/terrain/19/858476/353949.terrain b/public/terrain/19/858476/353949.terrain new file mode 100644 index 000000000..9282a3cfb Binary files /dev/null and b/public/terrain/19/858476/353949.terrain differ diff --git a/public/terrain/19/858476/353950.terrain b/public/terrain/19/858476/353950.terrain new file mode 100644 index 000000000..90d2c32b5 Binary files /dev/null and b/public/terrain/19/858476/353950.terrain differ diff --git a/public/terrain/19/858476/353951.terrain b/public/terrain/19/858476/353951.terrain new file mode 100644 index 000000000..b255eb7cd Binary files /dev/null and b/public/terrain/19/858476/353951.terrain differ diff --git a/public/terrain/19/858476/353952.terrain b/public/terrain/19/858476/353952.terrain new file mode 100644 index 000000000..f877fc103 Binary files /dev/null and b/public/terrain/19/858476/353952.terrain differ diff --git a/public/terrain/19/858476/353953.terrain b/public/terrain/19/858476/353953.terrain new file mode 100644 index 000000000..d3aac094c Binary files /dev/null and b/public/terrain/19/858476/353953.terrain differ diff --git a/public/terrain/19/858476/353954.terrain b/public/terrain/19/858476/353954.terrain new file mode 100644 index 000000000..bb37ed0d7 Binary files /dev/null and b/public/terrain/19/858476/353954.terrain differ diff --git a/public/terrain/19/858476/353955.terrain b/public/terrain/19/858476/353955.terrain new file mode 100644 index 000000000..d09502bf8 Binary files /dev/null and b/public/terrain/19/858476/353955.terrain differ diff --git a/public/terrain/19/858476/353956.terrain b/public/terrain/19/858476/353956.terrain new file mode 100644 index 000000000..0612d9c0b Binary files /dev/null and b/public/terrain/19/858476/353956.terrain differ diff --git a/public/terrain/19/858476/353957.terrain b/public/terrain/19/858476/353957.terrain new file mode 100644 index 000000000..e2fb7934b Binary files /dev/null and b/public/terrain/19/858476/353957.terrain differ diff --git a/public/terrain/19/858476/353958.terrain b/public/terrain/19/858476/353958.terrain new file mode 100644 index 000000000..f713c996e Binary files /dev/null and b/public/terrain/19/858476/353958.terrain differ diff --git a/public/terrain/19/858476/353959.terrain b/public/terrain/19/858476/353959.terrain new file mode 100644 index 000000000..07dab2c12 Binary files /dev/null and b/public/terrain/19/858476/353959.terrain differ diff --git a/public/terrain/19/858476/353960.terrain b/public/terrain/19/858476/353960.terrain new file mode 100644 index 000000000..ca53c892c Binary files /dev/null and b/public/terrain/19/858476/353960.terrain differ diff --git a/public/terrain/19/858476/353961.terrain b/public/terrain/19/858476/353961.terrain new file mode 100644 index 000000000..b6e59ddc5 Binary files /dev/null and b/public/terrain/19/858476/353961.terrain differ diff --git a/public/terrain/19/858476/353962.terrain b/public/terrain/19/858476/353962.terrain new file mode 100644 index 000000000..34855127e Binary files /dev/null and b/public/terrain/19/858476/353962.terrain differ diff --git a/public/terrain/19/858476/353963.terrain b/public/terrain/19/858476/353963.terrain new file mode 100644 index 000000000..aa5efcfe4 Binary files /dev/null and b/public/terrain/19/858476/353963.terrain differ diff --git a/public/terrain/19/858476/353964.terrain b/public/terrain/19/858476/353964.terrain new file mode 100644 index 000000000..7e8528891 Binary files /dev/null and b/public/terrain/19/858476/353964.terrain differ diff --git a/public/terrain/19/858476/353965.terrain b/public/terrain/19/858476/353965.terrain new file mode 100644 index 000000000..f8b6e586d Binary files /dev/null and b/public/terrain/19/858476/353965.terrain differ diff --git a/public/terrain/19/858476/353966.terrain b/public/terrain/19/858476/353966.terrain new file mode 100644 index 000000000..64e8272b4 Binary files /dev/null and b/public/terrain/19/858476/353966.terrain differ diff --git a/public/terrain/19/858476/353967.terrain b/public/terrain/19/858476/353967.terrain new file mode 100644 index 000000000..62b5507f1 Binary files /dev/null and b/public/terrain/19/858476/353967.terrain differ diff --git a/public/terrain/19/858476/353968.terrain b/public/terrain/19/858476/353968.terrain new file mode 100644 index 000000000..9848642c8 Binary files /dev/null and b/public/terrain/19/858476/353968.terrain differ diff --git a/public/terrain/19/858476/353969.terrain b/public/terrain/19/858476/353969.terrain new file mode 100644 index 000000000..0c324e87e Binary files /dev/null and b/public/terrain/19/858476/353969.terrain differ diff --git a/public/terrain/19/858476/353970.terrain b/public/terrain/19/858476/353970.terrain new file mode 100644 index 000000000..41a24cd37 Binary files /dev/null and b/public/terrain/19/858476/353970.terrain differ diff --git a/public/terrain/19/858476/353971.terrain b/public/terrain/19/858476/353971.terrain new file mode 100644 index 000000000..bf36593f4 Binary files /dev/null and b/public/terrain/19/858476/353971.terrain differ diff --git a/public/terrain/19/858476/353972.terrain b/public/terrain/19/858476/353972.terrain new file mode 100644 index 000000000..f598d0ee2 Binary files /dev/null and b/public/terrain/19/858476/353972.terrain differ diff --git a/public/terrain/19/858476/353973.terrain b/public/terrain/19/858476/353973.terrain new file mode 100644 index 000000000..f26e26afc Binary files /dev/null and b/public/terrain/19/858476/353973.terrain differ diff --git a/public/terrain/19/858476/353974.terrain b/public/terrain/19/858476/353974.terrain new file mode 100644 index 000000000..0b06b39c4 Binary files /dev/null and b/public/terrain/19/858476/353974.terrain differ diff --git a/public/terrain/19/858476/353975.terrain b/public/terrain/19/858476/353975.terrain new file mode 100644 index 000000000..25454bdf0 Binary files /dev/null and b/public/terrain/19/858476/353975.terrain differ diff --git a/public/terrain/19/858476/353976.terrain b/public/terrain/19/858476/353976.terrain new file mode 100644 index 000000000..4fc4381d1 Binary files /dev/null and b/public/terrain/19/858476/353976.terrain differ diff --git a/public/terrain/19/858476/353977.terrain b/public/terrain/19/858476/353977.terrain new file mode 100644 index 000000000..9bf465550 Binary files /dev/null and b/public/terrain/19/858476/353977.terrain differ diff --git a/public/terrain/19/858476/353978.terrain b/public/terrain/19/858476/353978.terrain new file mode 100644 index 000000000..63a8ff9c3 Binary files /dev/null and b/public/terrain/19/858476/353978.terrain differ diff --git a/public/terrain/19/858476/353979.terrain b/public/terrain/19/858476/353979.terrain new file mode 100644 index 000000000..f0bf84a8a Binary files /dev/null and b/public/terrain/19/858476/353979.terrain differ diff --git a/public/terrain/19/858476/353980.terrain b/public/terrain/19/858476/353980.terrain new file mode 100644 index 000000000..3ebd7f044 Binary files /dev/null and b/public/terrain/19/858476/353980.terrain differ diff --git a/public/terrain/19/858476/353981.terrain b/public/terrain/19/858476/353981.terrain new file mode 100644 index 000000000..1e3d78c24 Binary files /dev/null and b/public/terrain/19/858476/353981.terrain differ diff --git a/public/terrain/19/858476/353982.terrain b/public/terrain/19/858476/353982.terrain new file mode 100644 index 000000000..08432a0cb Binary files /dev/null and b/public/terrain/19/858476/353982.terrain differ diff --git a/public/terrain/19/858476/353983.terrain b/public/terrain/19/858476/353983.terrain new file mode 100644 index 000000000..d632019d9 Binary files /dev/null and b/public/terrain/19/858476/353983.terrain differ diff --git a/public/terrain/19/858476/353984.terrain b/public/terrain/19/858476/353984.terrain new file mode 100644 index 000000000..edcde0abf Binary files /dev/null and b/public/terrain/19/858476/353984.terrain differ diff --git a/public/terrain/19/858476/353985.terrain b/public/terrain/19/858476/353985.terrain new file mode 100644 index 000000000..fa66ef86f Binary files /dev/null and b/public/terrain/19/858476/353985.terrain differ diff --git a/public/terrain/19/858476/353986.terrain b/public/terrain/19/858476/353986.terrain new file mode 100644 index 000000000..8f160575e Binary files /dev/null and b/public/terrain/19/858476/353986.terrain differ diff --git a/public/terrain/19/858476/353987.terrain b/public/terrain/19/858476/353987.terrain new file mode 100644 index 000000000..1fc1ad03e Binary files /dev/null and b/public/terrain/19/858476/353987.terrain differ diff --git a/public/terrain/19/858476/353988.terrain b/public/terrain/19/858476/353988.terrain new file mode 100644 index 000000000..a5e72da08 Binary files /dev/null and b/public/terrain/19/858476/353988.terrain differ diff --git a/public/terrain/19/858476/353989.terrain b/public/terrain/19/858476/353989.terrain new file mode 100644 index 000000000..dfdfd4121 Binary files /dev/null and b/public/terrain/19/858476/353989.terrain differ diff --git a/public/terrain/19/858476/353990.terrain b/public/terrain/19/858476/353990.terrain new file mode 100644 index 000000000..15ba49ce2 Binary files /dev/null and b/public/terrain/19/858476/353990.terrain differ diff --git a/public/terrain/19/858476/353991.terrain b/public/terrain/19/858476/353991.terrain new file mode 100644 index 000000000..a0b1b1f9a Binary files /dev/null and b/public/terrain/19/858476/353991.terrain differ diff --git a/public/terrain/19/858476/353992.terrain b/public/terrain/19/858476/353992.terrain new file mode 100644 index 000000000..121edb9bd Binary files /dev/null and b/public/terrain/19/858476/353992.terrain differ diff --git a/public/terrain/19/858476/353993.terrain b/public/terrain/19/858476/353993.terrain new file mode 100644 index 000000000..3beb3bff3 Binary files /dev/null and b/public/terrain/19/858476/353993.terrain differ diff --git a/public/terrain/19/858476/353994.terrain b/public/terrain/19/858476/353994.terrain new file mode 100644 index 000000000..253959a22 Binary files /dev/null and b/public/terrain/19/858476/353994.terrain differ diff --git a/public/terrain/19/858476/353995.terrain b/public/terrain/19/858476/353995.terrain new file mode 100644 index 000000000..04cdd839b Binary files /dev/null and b/public/terrain/19/858476/353995.terrain differ diff --git a/public/terrain/19/858476/353996.terrain b/public/terrain/19/858476/353996.terrain new file mode 100644 index 000000000..f1535ae0b Binary files /dev/null and b/public/terrain/19/858476/353996.terrain differ diff --git a/public/terrain/19/858476/353997.terrain b/public/terrain/19/858476/353997.terrain new file mode 100644 index 000000000..eb8a3c30e Binary files /dev/null and b/public/terrain/19/858476/353997.terrain differ diff --git a/public/terrain/19/858476/353998.terrain b/public/terrain/19/858476/353998.terrain new file mode 100644 index 000000000..34bf7aa83 Binary files /dev/null and b/public/terrain/19/858476/353998.terrain differ diff --git a/public/terrain/19/858476/353999.terrain b/public/terrain/19/858476/353999.terrain new file mode 100644 index 000000000..eb8c43de1 Binary files /dev/null and b/public/terrain/19/858476/353999.terrain differ diff --git a/public/terrain/19/858476/354000.terrain b/public/terrain/19/858476/354000.terrain new file mode 100644 index 000000000..4c1f0a812 Binary files /dev/null and b/public/terrain/19/858476/354000.terrain differ diff --git a/public/terrain/19/858476/354001.terrain b/public/terrain/19/858476/354001.terrain new file mode 100644 index 000000000..58b296df8 Binary files /dev/null and b/public/terrain/19/858476/354001.terrain differ diff --git a/public/terrain/19/858476/354002.terrain b/public/terrain/19/858476/354002.terrain new file mode 100644 index 000000000..4aa615ba5 Binary files /dev/null and b/public/terrain/19/858476/354002.terrain differ diff --git a/public/terrain/19/858476/354003.terrain b/public/terrain/19/858476/354003.terrain new file mode 100644 index 000000000..71453da90 Binary files /dev/null and b/public/terrain/19/858476/354003.terrain differ diff --git a/public/terrain/19/858476/354004.terrain b/public/terrain/19/858476/354004.terrain new file mode 100644 index 000000000..8908dba86 Binary files /dev/null and b/public/terrain/19/858476/354004.terrain differ diff --git a/public/terrain/19/858476/354005.terrain b/public/terrain/19/858476/354005.terrain new file mode 100644 index 000000000..fc1ceba6a Binary files /dev/null and b/public/terrain/19/858476/354005.terrain differ diff --git a/public/terrain/19/858476/354006.terrain b/public/terrain/19/858476/354006.terrain new file mode 100644 index 000000000..4b8461a4c Binary files /dev/null and b/public/terrain/19/858476/354006.terrain differ diff --git a/public/terrain/19/858476/354007.terrain b/public/terrain/19/858476/354007.terrain new file mode 100644 index 000000000..d48feb9bf Binary files /dev/null and b/public/terrain/19/858476/354007.terrain differ diff --git a/public/terrain/19/858476/354008.terrain b/public/terrain/19/858476/354008.terrain new file mode 100644 index 000000000..f638a4df8 Binary files /dev/null and b/public/terrain/19/858476/354008.terrain differ diff --git a/public/terrain/19/858476/354009.terrain b/public/terrain/19/858476/354009.terrain new file mode 100644 index 000000000..6fc4f3495 Binary files /dev/null and b/public/terrain/19/858476/354009.terrain differ diff --git a/public/terrain/19/858476/354010.terrain b/public/terrain/19/858476/354010.terrain new file mode 100644 index 000000000..5e59334c2 Binary files /dev/null and b/public/terrain/19/858476/354010.terrain differ diff --git a/public/terrain/19/858476/354011.terrain b/public/terrain/19/858476/354011.terrain new file mode 100644 index 000000000..a540fb15d Binary files /dev/null and b/public/terrain/19/858476/354011.terrain differ diff --git a/public/terrain/19/858476/354012.terrain b/public/terrain/19/858476/354012.terrain new file mode 100644 index 000000000..9f588b79c Binary files /dev/null and b/public/terrain/19/858476/354012.terrain differ diff --git a/public/terrain/19/858476/354013.terrain b/public/terrain/19/858476/354013.terrain new file mode 100644 index 000000000..67e05d736 Binary files /dev/null and b/public/terrain/19/858476/354013.terrain differ diff --git a/public/terrain/19/858476/354014.terrain b/public/terrain/19/858476/354014.terrain new file mode 100644 index 000000000..891921f90 Binary files /dev/null and b/public/terrain/19/858476/354014.terrain differ diff --git a/public/terrain/19/858476/354015.terrain b/public/terrain/19/858476/354015.terrain new file mode 100644 index 000000000..cfe5ff075 Binary files /dev/null and b/public/terrain/19/858476/354015.terrain differ diff --git a/public/terrain/19/858476/354016.terrain b/public/terrain/19/858476/354016.terrain new file mode 100644 index 000000000..2fdc13ee7 Binary files /dev/null and b/public/terrain/19/858476/354016.terrain differ diff --git a/public/terrain/19/858476/354017.terrain b/public/terrain/19/858476/354017.terrain new file mode 100644 index 000000000..9ddfbc85c Binary files /dev/null and b/public/terrain/19/858476/354017.terrain differ diff --git a/public/terrain/19/858476/354018.terrain b/public/terrain/19/858476/354018.terrain new file mode 100644 index 000000000..5b07e6d80 Binary files /dev/null and b/public/terrain/19/858476/354018.terrain differ diff --git a/public/terrain/19/858476/354019.terrain b/public/terrain/19/858476/354019.terrain new file mode 100644 index 000000000..4c8805196 Binary files /dev/null and b/public/terrain/19/858476/354019.terrain differ diff --git a/public/terrain/19/858476/354020.terrain b/public/terrain/19/858476/354020.terrain new file mode 100644 index 000000000..562de2549 Binary files /dev/null and b/public/terrain/19/858476/354020.terrain differ diff --git a/public/terrain/19/858476/354021.terrain b/public/terrain/19/858476/354021.terrain new file mode 100644 index 000000000..eeccbd1b0 Binary files /dev/null and b/public/terrain/19/858476/354021.terrain differ diff --git a/public/terrain/19/858476/354022.terrain b/public/terrain/19/858476/354022.terrain new file mode 100644 index 000000000..2368e1942 Binary files /dev/null and b/public/terrain/19/858476/354022.terrain differ diff --git a/public/terrain/19/858476/354023.terrain b/public/terrain/19/858476/354023.terrain new file mode 100644 index 000000000..0e6b20aa5 Binary files /dev/null and b/public/terrain/19/858476/354023.terrain differ diff --git a/public/terrain/19/858476/354024.terrain b/public/terrain/19/858476/354024.terrain new file mode 100644 index 000000000..f59d5730b Binary files /dev/null and b/public/terrain/19/858476/354024.terrain differ diff --git a/public/terrain/19/858476/354025.terrain b/public/terrain/19/858476/354025.terrain new file mode 100644 index 000000000..a7e344c39 Binary files /dev/null and b/public/terrain/19/858476/354025.terrain differ diff --git a/public/terrain/19/858476/354026.terrain b/public/terrain/19/858476/354026.terrain new file mode 100644 index 000000000..cf965881b Binary files /dev/null and b/public/terrain/19/858476/354026.terrain differ diff --git a/public/terrain/19/858476/354027.terrain b/public/terrain/19/858476/354027.terrain new file mode 100644 index 000000000..ce3a5a473 Binary files /dev/null and b/public/terrain/19/858476/354027.terrain differ diff --git a/public/terrain/19/858476/354028.terrain b/public/terrain/19/858476/354028.terrain new file mode 100644 index 000000000..c777526b5 Binary files /dev/null and b/public/terrain/19/858476/354028.terrain differ diff --git a/public/terrain/19/858476/354029.terrain b/public/terrain/19/858476/354029.terrain new file mode 100644 index 000000000..2b02568f8 Binary files /dev/null and b/public/terrain/19/858476/354029.terrain differ diff --git a/public/terrain/19/858476/354030.terrain b/public/terrain/19/858476/354030.terrain new file mode 100644 index 000000000..abcedfd4b Binary files /dev/null and b/public/terrain/19/858476/354030.terrain differ diff --git a/public/terrain/19/858476/354031.terrain b/public/terrain/19/858476/354031.terrain new file mode 100644 index 000000000..7d39d3fd0 Binary files /dev/null and b/public/terrain/19/858476/354031.terrain differ diff --git a/public/terrain/19/858476/354032.terrain b/public/terrain/19/858476/354032.terrain new file mode 100644 index 000000000..cc291917d Binary files /dev/null and b/public/terrain/19/858476/354032.terrain differ diff --git a/public/terrain/19/858476/354033.terrain b/public/terrain/19/858476/354033.terrain new file mode 100644 index 000000000..d65484147 Binary files /dev/null and b/public/terrain/19/858476/354033.terrain differ diff --git a/public/terrain/19/858476/354034.terrain b/public/terrain/19/858476/354034.terrain new file mode 100644 index 000000000..589ac682e Binary files /dev/null and b/public/terrain/19/858476/354034.terrain differ diff --git a/public/terrain/19/858476/354035.terrain b/public/terrain/19/858476/354035.terrain new file mode 100644 index 000000000..aac929b73 Binary files /dev/null and b/public/terrain/19/858476/354035.terrain differ diff --git a/public/terrain/19/858476/354036.terrain b/public/terrain/19/858476/354036.terrain new file mode 100644 index 000000000..84c3f017a Binary files /dev/null and b/public/terrain/19/858476/354036.terrain differ diff --git a/public/terrain/19/858476/354037.terrain b/public/terrain/19/858476/354037.terrain new file mode 100644 index 000000000..0072fef3e Binary files /dev/null and b/public/terrain/19/858476/354037.terrain differ diff --git a/public/terrain/19/858476/354038.terrain b/public/terrain/19/858476/354038.terrain new file mode 100644 index 000000000..f2b6bf52f Binary files /dev/null and b/public/terrain/19/858476/354038.terrain differ diff --git a/public/terrain/19/858476/354039.terrain b/public/terrain/19/858476/354039.terrain new file mode 100644 index 000000000..d9d926e0f Binary files /dev/null and b/public/terrain/19/858476/354039.terrain differ diff --git a/public/terrain/19/858476/354040.terrain b/public/terrain/19/858476/354040.terrain new file mode 100644 index 000000000..3a343ab60 Binary files /dev/null and b/public/terrain/19/858476/354040.terrain differ diff --git a/public/terrain/19/858476/354041.terrain b/public/terrain/19/858476/354041.terrain new file mode 100644 index 000000000..1dc8bc6f2 Binary files /dev/null and b/public/terrain/19/858476/354041.terrain differ diff --git a/public/terrain/19/858476/354042.terrain b/public/terrain/19/858476/354042.terrain new file mode 100644 index 000000000..f201e8ade Binary files /dev/null and b/public/terrain/19/858476/354042.terrain differ diff --git a/public/terrain/19/858476/354043.terrain b/public/terrain/19/858476/354043.terrain new file mode 100644 index 000000000..bfa7be195 Binary files /dev/null and b/public/terrain/19/858476/354043.terrain differ diff --git a/public/terrain/19/858476/354044.terrain b/public/terrain/19/858476/354044.terrain new file mode 100644 index 000000000..d273c8196 Binary files /dev/null and b/public/terrain/19/858476/354044.terrain differ diff --git a/public/terrain/19/858476/354045.terrain b/public/terrain/19/858476/354045.terrain new file mode 100644 index 000000000..f0ca5be73 Binary files /dev/null and b/public/terrain/19/858476/354045.terrain differ diff --git a/public/terrain/19/858476/354046.terrain b/public/terrain/19/858476/354046.terrain new file mode 100644 index 000000000..706dd8579 Binary files /dev/null and b/public/terrain/19/858476/354046.terrain differ diff --git a/public/terrain/19/858476/354047.terrain b/public/terrain/19/858476/354047.terrain new file mode 100644 index 000000000..8aa1004b1 Binary files /dev/null and b/public/terrain/19/858476/354047.terrain differ diff --git a/public/terrain/19/858476/354048.terrain b/public/terrain/19/858476/354048.terrain new file mode 100644 index 000000000..a1dcbb835 Binary files /dev/null and b/public/terrain/19/858476/354048.terrain differ diff --git a/public/terrain/19/858476/354049.terrain b/public/terrain/19/858476/354049.terrain new file mode 100644 index 000000000..daa91b228 Binary files /dev/null and b/public/terrain/19/858476/354049.terrain differ diff --git a/public/terrain/19/858476/354050.terrain b/public/terrain/19/858476/354050.terrain new file mode 100644 index 000000000..b11fdfbe4 Binary files /dev/null and b/public/terrain/19/858476/354050.terrain differ diff --git a/public/terrain/19/858476/354051.terrain b/public/terrain/19/858476/354051.terrain new file mode 100644 index 000000000..3a7ba689a Binary files /dev/null and b/public/terrain/19/858476/354051.terrain differ diff --git a/public/terrain/19/858476/354052.terrain b/public/terrain/19/858476/354052.terrain new file mode 100644 index 000000000..bc7f8f713 Binary files /dev/null and b/public/terrain/19/858476/354052.terrain differ diff --git a/public/terrain/19/858476/354053.terrain b/public/terrain/19/858476/354053.terrain new file mode 100644 index 000000000..086794abd Binary files /dev/null and b/public/terrain/19/858476/354053.terrain differ diff --git a/public/terrain/19/858476/354054.terrain b/public/terrain/19/858476/354054.terrain new file mode 100644 index 000000000..706d02b74 Binary files /dev/null and b/public/terrain/19/858476/354054.terrain differ diff --git a/public/terrain/19/858476/354055.terrain b/public/terrain/19/858476/354055.terrain new file mode 100644 index 000000000..7eb453829 Binary files /dev/null and b/public/terrain/19/858476/354055.terrain differ diff --git a/public/terrain/19/858476/354056.terrain b/public/terrain/19/858476/354056.terrain new file mode 100644 index 000000000..a41ccfbc8 Binary files /dev/null and b/public/terrain/19/858476/354056.terrain differ diff --git a/public/terrain/19/858476/354057.terrain b/public/terrain/19/858476/354057.terrain new file mode 100644 index 000000000..6cfee9bbb Binary files /dev/null and b/public/terrain/19/858476/354057.terrain differ diff --git a/public/terrain/19/858476/354058.terrain b/public/terrain/19/858476/354058.terrain new file mode 100644 index 000000000..c609d57d8 Binary files /dev/null and b/public/terrain/19/858476/354058.terrain differ diff --git a/public/terrain/19/858476/354059.terrain b/public/terrain/19/858476/354059.terrain new file mode 100644 index 000000000..e03a7e9ad Binary files /dev/null and b/public/terrain/19/858476/354059.terrain differ diff --git a/public/terrain/19/858477/353743.terrain b/public/terrain/19/858477/353743.terrain new file mode 100644 index 000000000..978843e27 Binary files /dev/null and b/public/terrain/19/858477/353743.terrain differ diff --git a/public/terrain/19/858477/353744.terrain b/public/terrain/19/858477/353744.terrain new file mode 100644 index 000000000..05e48875a Binary files /dev/null and b/public/terrain/19/858477/353744.terrain differ diff --git a/public/terrain/19/858477/353745.terrain b/public/terrain/19/858477/353745.terrain new file mode 100644 index 000000000..469be66a7 Binary files /dev/null and b/public/terrain/19/858477/353745.terrain differ diff --git a/public/terrain/19/858477/353746.terrain b/public/terrain/19/858477/353746.terrain new file mode 100644 index 000000000..33f0bc8d3 Binary files /dev/null and b/public/terrain/19/858477/353746.terrain differ diff --git a/public/terrain/19/858477/353747.terrain b/public/terrain/19/858477/353747.terrain new file mode 100644 index 000000000..af2f6a9ca Binary files /dev/null and b/public/terrain/19/858477/353747.terrain differ diff --git a/public/terrain/19/858477/353748.terrain b/public/terrain/19/858477/353748.terrain new file mode 100644 index 000000000..50ab14613 Binary files /dev/null and b/public/terrain/19/858477/353748.terrain differ diff --git a/public/terrain/19/858477/353749.terrain b/public/terrain/19/858477/353749.terrain new file mode 100644 index 000000000..1c70a84ce Binary files /dev/null and b/public/terrain/19/858477/353749.terrain differ diff --git a/public/terrain/19/858477/353750.terrain b/public/terrain/19/858477/353750.terrain new file mode 100644 index 000000000..7f0c4f35e Binary files /dev/null and b/public/terrain/19/858477/353750.terrain differ diff --git a/public/terrain/19/858477/353751.terrain b/public/terrain/19/858477/353751.terrain new file mode 100644 index 000000000..50f018680 Binary files /dev/null and b/public/terrain/19/858477/353751.terrain differ diff --git a/public/terrain/19/858477/353752.terrain b/public/terrain/19/858477/353752.terrain new file mode 100644 index 000000000..b245bd783 Binary files /dev/null and b/public/terrain/19/858477/353752.terrain differ diff --git a/public/terrain/19/858477/353753.terrain b/public/terrain/19/858477/353753.terrain new file mode 100644 index 000000000..23269880d Binary files /dev/null and b/public/terrain/19/858477/353753.terrain differ diff --git a/public/terrain/19/858477/353754.terrain b/public/terrain/19/858477/353754.terrain new file mode 100644 index 000000000..fe853d98d Binary files /dev/null and b/public/terrain/19/858477/353754.terrain differ diff --git a/public/terrain/19/858477/353755.terrain b/public/terrain/19/858477/353755.terrain new file mode 100644 index 000000000..793dbeb77 Binary files /dev/null and b/public/terrain/19/858477/353755.terrain differ diff --git a/public/terrain/19/858477/353756.terrain b/public/terrain/19/858477/353756.terrain new file mode 100644 index 000000000..85a6241b0 Binary files /dev/null and b/public/terrain/19/858477/353756.terrain differ diff --git a/public/terrain/19/858477/353757.terrain b/public/terrain/19/858477/353757.terrain new file mode 100644 index 000000000..22394c009 Binary files /dev/null and b/public/terrain/19/858477/353757.terrain differ diff --git a/public/terrain/19/858477/353758.terrain b/public/terrain/19/858477/353758.terrain new file mode 100644 index 000000000..3d34f88af Binary files /dev/null and b/public/terrain/19/858477/353758.terrain differ diff --git a/public/terrain/19/858477/353759.terrain b/public/terrain/19/858477/353759.terrain new file mode 100644 index 000000000..967b41343 Binary files /dev/null and b/public/terrain/19/858477/353759.terrain differ diff --git a/public/terrain/19/858477/353760.terrain b/public/terrain/19/858477/353760.terrain new file mode 100644 index 000000000..4ff36b913 Binary files /dev/null and b/public/terrain/19/858477/353760.terrain differ diff --git a/public/terrain/19/858477/353761.terrain b/public/terrain/19/858477/353761.terrain new file mode 100644 index 000000000..bfb4b34c4 Binary files /dev/null and b/public/terrain/19/858477/353761.terrain differ diff --git a/public/terrain/19/858477/353762.terrain b/public/terrain/19/858477/353762.terrain new file mode 100644 index 000000000..1b3eede8c Binary files /dev/null and b/public/terrain/19/858477/353762.terrain differ diff --git a/public/terrain/19/858477/353763.terrain b/public/terrain/19/858477/353763.terrain new file mode 100644 index 000000000..bc7ad6e6b Binary files /dev/null and b/public/terrain/19/858477/353763.terrain differ diff --git a/public/terrain/19/858477/353764.terrain b/public/terrain/19/858477/353764.terrain new file mode 100644 index 000000000..d67464279 Binary files /dev/null and b/public/terrain/19/858477/353764.terrain differ diff --git a/public/terrain/19/858477/353765.terrain b/public/terrain/19/858477/353765.terrain new file mode 100644 index 000000000..fc8ab154f Binary files /dev/null and b/public/terrain/19/858477/353765.terrain differ diff --git a/public/terrain/19/858477/353766.terrain b/public/terrain/19/858477/353766.terrain new file mode 100644 index 000000000..54a456687 Binary files /dev/null and b/public/terrain/19/858477/353766.terrain differ diff --git a/public/terrain/19/858477/353767.terrain b/public/terrain/19/858477/353767.terrain new file mode 100644 index 000000000..56e98b28c Binary files /dev/null and b/public/terrain/19/858477/353767.terrain differ diff --git a/public/terrain/19/858477/353768.terrain b/public/terrain/19/858477/353768.terrain new file mode 100644 index 000000000..7bf833ea8 Binary files /dev/null and b/public/terrain/19/858477/353768.terrain differ diff --git a/public/terrain/19/858477/353769.terrain b/public/terrain/19/858477/353769.terrain new file mode 100644 index 000000000..49a90f21f Binary files /dev/null and b/public/terrain/19/858477/353769.terrain differ diff --git a/public/terrain/19/858477/353770.terrain b/public/terrain/19/858477/353770.terrain new file mode 100644 index 000000000..c146797c0 Binary files /dev/null and b/public/terrain/19/858477/353770.terrain differ diff --git a/public/terrain/19/858477/353771.terrain b/public/terrain/19/858477/353771.terrain new file mode 100644 index 000000000..f65f6914a Binary files /dev/null and b/public/terrain/19/858477/353771.terrain differ diff --git a/public/terrain/19/858477/353772.terrain b/public/terrain/19/858477/353772.terrain new file mode 100644 index 000000000..2752627c1 Binary files /dev/null and b/public/terrain/19/858477/353772.terrain differ diff --git a/public/terrain/19/858477/353773.terrain b/public/terrain/19/858477/353773.terrain new file mode 100644 index 000000000..d40be7c94 Binary files /dev/null and b/public/terrain/19/858477/353773.terrain differ diff --git a/public/terrain/19/858477/353774.terrain b/public/terrain/19/858477/353774.terrain new file mode 100644 index 000000000..f38070c89 Binary files /dev/null and b/public/terrain/19/858477/353774.terrain differ diff --git a/public/terrain/19/858477/353775.terrain b/public/terrain/19/858477/353775.terrain new file mode 100644 index 000000000..8a395d51b Binary files /dev/null and b/public/terrain/19/858477/353775.terrain differ diff --git a/public/terrain/19/858477/353776.terrain b/public/terrain/19/858477/353776.terrain new file mode 100644 index 000000000..8cbe4403b Binary files /dev/null and b/public/terrain/19/858477/353776.terrain differ diff --git a/public/terrain/19/858477/353777.terrain b/public/terrain/19/858477/353777.terrain new file mode 100644 index 000000000..53e8dd50a Binary files /dev/null and b/public/terrain/19/858477/353777.terrain differ diff --git a/public/terrain/19/858477/353778.terrain b/public/terrain/19/858477/353778.terrain new file mode 100644 index 000000000..beb01ed61 Binary files /dev/null and b/public/terrain/19/858477/353778.terrain differ diff --git a/public/terrain/19/858477/353779.terrain b/public/terrain/19/858477/353779.terrain new file mode 100644 index 000000000..c143bed7e Binary files /dev/null and b/public/terrain/19/858477/353779.terrain differ diff --git a/public/terrain/19/858477/353780.terrain b/public/terrain/19/858477/353780.terrain new file mode 100644 index 000000000..8a7e09f48 Binary files /dev/null and b/public/terrain/19/858477/353780.terrain differ diff --git a/public/terrain/19/858477/353781.terrain b/public/terrain/19/858477/353781.terrain new file mode 100644 index 000000000..6e152b507 Binary files /dev/null and b/public/terrain/19/858477/353781.terrain differ diff --git a/public/terrain/19/858477/353782.terrain b/public/terrain/19/858477/353782.terrain new file mode 100644 index 000000000..3c0bf9671 Binary files /dev/null and b/public/terrain/19/858477/353782.terrain differ diff --git a/public/terrain/19/858477/353783.terrain b/public/terrain/19/858477/353783.terrain new file mode 100644 index 000000000..83f42e326 Binary files /dev/null and b/public/terrain/19/858477/353783.terrain differ diff --git a/public/terrain/19/858477/353784.terrain b/public/terrain/19/858477/353784.terrain new file mode 100644 index 000000000..cd7320be9 Binary files /dev/null and b/public/terrain/19/858477/353784.terrain differ diff --git a/public/terrain/19/858477/353785.terrain b/public/terrain/19/858477/353785.terrain new file mode 100644 index 000000000..b59c56a4c Binary files /dev/null and b/public/terrain/19/858477/353785.terrain differ diff --git a/public/terrain/19/858477/353786.terrain b/public/terrain/19/858477/353786.terrain new file mode 100644 index 000000000..7eca2a693 Binary files /dev/null and b/public/terrain/19/858477/353786.terrain differ diff --git a/public/terrain/19/858477/353787.terrain b/public/terrain/19/858477/353787.terrain new file mode 100644 index 000000000..027c9f3a8 Binary files /dev/null and b/public/terrain/19/858477/353787.terrain differ diff --git a/public/terrain/19/858477/353788.terrain b/public/terrain/19/858477/353788.terrain new file mode 100644 index 000000000..b247b93dc Binary files /dev/null and b/public/terrain/19/858477/353788.terrain differ diff --git a/public/terrain/19/858477/353789.terrain b/public/terrain/19/858477/353789.terrain new file mode 100644 index 000000000..051554e1a Binary files /dev/null and b/public/terrain/19/858477/353789.terrain differ diff --git a/public/terrain/19/858477/353790.terrain b/public/terrain/19/858477/353790.terrain new file mode 100644 index 000000000..7cb05e9f2 Binary files /dev/null and b/public/terrain/19/858477/353790.terrain differ diff --git a/public/terrain/19/858477/353791.terrain b/public/terrain/19/858477/353791.terrain new file mode 100644 index 000000000..a32b529b5 Binary files /dev/null and b/public/terrain/19/858477/353791.terrain differ diff --git a/public/terrain/19/858477/353792.terrain b/public/terrain/19/858477/353792.terrain new file mode 100644 index 000000000..e216f51a9 Binary files /dev/null and b/public/terrain/19/858477/353792.terrain differ diff --git a/public/terrain/19/858477/353793.terrain b/public/terrain/19/858477/353793.terrain new file mode 100644 index 000000000..fa7d88a30 Binary files /dev/null and b/public/terrain/19/858477/353793.terrain differ diff --git a/public/terrain/19/858477/353794.terrain b/public/terrain/19/858477/353794.terrain new file mode 100644 index 000000000..bd3b53d9c Binary files /dev/null and b/public/terrain/19/858477/353794.terrain differ diff --git a/public/terrain/19/858477/353795.terrain b/public/terrain/19/858477/353795.terrain new file mode 100644 index 000000000..6588d236f Binary files /dev/null and b/public/terrain/19/858477/353795.terrain differ diff --git a/public/terrain/19/858477/353796.terrain b/public/terrain/19/858477/353796.terrain new file mode 100644 index 000000000..7394b7f0a Binary files /dev/null and b/public/terrain/19/858477/353796.terrain differ diff --git a/public/terrain/19/858477/353797.terrain b/public/terrain/19/858477/353797.terrain new file mode 100644 index 000000000..1085364d2 Binary files /dev/null and b/public/terrain/19/858477/353797.terrain differ diff --git a/public/terrain/19/858477/353798.terrain b/public/terrain/19/858477/353798.terrain new file mode 100644 index 000000000..90099fb06 Binary files /dev/null and b/public/terrain/19/858477/353798.terrain differ diff --git a/public/terrain/19/858477/353799.terrain b/public/terrain/19/858477/353799.terrain new file mode 100644 index 000000000..eff6042ec Binary files /dev/null and b/public/terrain/19/858477/353799.terrain differ diff --git a/public/terrain/19/858477/353800.terrain b/public/terrain/19/858477/353800.terrain new file mode 100644 index 000000000..29caadb9b Binary files /dev/null and b/public/terrain/19/858477/353800.terrain differ diff --git a/public/terrain/19/858477/353801.terrain b/public/terrain/19/858477/353801.terrain new file mode 100644 index 000000000..43183ab40 Binary files /dev/null and b/public/terrain/19/858477/353801.terrain differ diff --git a/public/terrain/19/858477/353802.terrain b/public/terrain/19/858477/353802.terrain new file mode 100644 index 000000000..08a261c42 Binary files /dev/null and b/public/terrain/19/858477/353802.terrain differ diff --git a/public/terrain/19/858477/353803.terrain b/public/terrain/19/858477/353803.terrain new file mode 100644 index 000000000..4cfcbd26f Binary files /dev/null and b/public/terrain/19/858477/353803.terrain differ diff --git a/public/terrain/19/858477/353804.terrain b/public/terrain/19/858477/353804.terrain new file mode 100644 index 000000000..254396aae Binary files /dev/null and b/public/terrain/19/858477/353804.terrain differ diff --git a/public/terrain/19/858477/353805.terrain b/public/terrain/19/858477/353805.terrain new file mode 100644 index 000000000..b3ad607a8 Binary files /dev/null and b/public/terrain/19/858477/353805.terrain differ diff --git a/public/terrain/19/858477/353806.terrain b/public/terrain/19/858477/353806.terrain new file mode 100644 index 000000000..6dace3378 Binary files /dev/null and b/public/terrain/19/858477/353806.terrain differ diff --git a/public/terrain/19/858477/353807.terrain b/public/terrain/19/858477/353807.terrain new file mode 100644 index 000000000..e63a373d5 Binary files /dev/null and b/public/terrain/19/858477/353807.terrain differ diff --git a/public/terrain/19/858477/353808.terrain b/public/terrain/19/858477/353808.terrain new file mode 100644 index 000000000..8d91b9efe Binary files /dev/null and b/public/terrain/19/858477/353808.terrain differ diff --git a/public/terrain/19/858477/353809.terrain b/public/terrain/19/858477/353809.terrain new file mode 100644 index 000000000..12cf1ac90 Binary files /dev/null and b/public/terrain/19/858477/353809.terrain differ diff --git a/public/terrain/19/858477/353810.terrain b/public/terrain/19/858477/353810.terrain new file mode 100644 index 000000000..6f4d59902 Binary files /dev/null and b/public/terrain/19/858477/353810.terrain differ diff --git a/public/terrain/19/858477/353811.terrain b/public/terrain/19/858477/353811.terrain new file mode 100644 index 000000000..c6a10c4a7 Binary files /dev/null and b/public/terrain/19/858477/353811.terrain differ diff --git a/public/terrain/19/858477/353812.terrain b/public/terrain/19/858477/353812.terrain new file mode 100644 index 000000000..f2651ae79 Binary files /dev/null and b/public/terrain/19/858477/353812.terrain differ diff --git a/public/terrain/19/858477/353813.terrain b/public/terrain/19/858477/353813.terrain new file mode 100644 index 000000000..e0d006de2 Binary files /dev/null and b/public/terrain/19/858477/353813.terrain differ diff --git a/public/terrain/19/858477/353814.terrain b/public/terrain/19/858477/353814.terrain new file mode 100644 index 000000000..dda663e44 Binary files /dev/null and b/public/terrain/19/858477/353814.terrain differ diff --git a/public/terrain/19/858477/353815.terrain b/public/terrain/19/858477/353815.terrain new file mode 100644 index 000000000..c40c6fc83 Binary files /dev/null and b/public/terrain/19/858477/353815.terrain differ diff --git a/public/terrain/19/858477/353816.terrain b/public/terrain/19/858477/353816.terrain new file mode 100644 index 000000000..0ce3d65b3 Binary files /dev/null and b/public/terrain/19/858477/353816.terrain differ diff --git a/public/terrain/19/858477/353817.terrain b/public/terrain/19/858477/353817.terrain new file mode 100644 index 000000000..3970e7e38 Binary files /dev/null and b/public/terrain/19/858477/353817.terrain differ diff --git a/public/terrain/19/858477/353818.terrain b/public/terrain/19/858477/353818.terrain new file mode 100644 index 000000000..d771cd649 Binary files /dev/null and b/public/terrain/19/858477/353818.terrain differ diff --git a/public/terrain/19/858477/353819.terrain b/public/terrain/19/858477/353819.terrain new file mode 100644 index 000000000..29d6cf486 Binary files /dev/null and b/public/terrain/19/858477/353819.terrain differ diff --git a/public/terrain/19/858477/353820.terrain b/public/terrain/19/858477/353820.terrain new file mode 100644 index 000000000..b98d29cf6 Binary files /dev/null and b/public/terrain/19/858477/353820.terrain differ diff --git a/public/terrain/19/858477/353821.terrain b/public/terrain/19/858477/353821.terrain new file mode 100644 index 000000000..5dc255377 Binary files /dev/null and b/public/terrain/19/858477/353821.terrain differ diff --git a/public/terrain/19/858477/353822.terrain b/public/terrain/19/858477/353822.terrain new file mode 100644 index 000000000..9c8712ac4 Binary files /dev/null and b/public/terrain/19/858477/353822.terrain differ diff --git a/public/terrain/19/858477/353823.terrain b/public/terrain/19/858477/353823.terrain new file mode 100644 index 000000000..09a742c9f Binary files /dev/null and b/public/terrain/19/858477/353823.terrain differ diff --git a/public/terrain/19/858477/353824.terrain b/public/terrain/19/858477/353824.terrain new file mode 100644 index 000000000..1f90ac6fd Binary files /dev/null and b/public/terrain/19/858477/353824.terrain differ diff --git a/public/terrain/19/858477/353825.terrain b/public/terrain/19/858477/353825.terrain new file mode 100644 index 000000000..71f35ab08 Binary files /dev/null and b/public/terrain/19/858477/353825.terrain differ diff --git a/public/terrain/19/858477/353826.terrain b/public/terrain/19/858477/353826.terrain new file mode 100644 index 000000000..9e4be0c25 Binary files /dev/null and b/public/terrain/19/858477/353826.terrain differ diff --git a/public/terrain/19/858477/353827.terrain b/public/terrain/19/858477/353827.terrain new file mode 100644 index 000000000..bfaccf408 Binary files /dev/null and b/public/terrain/19/858477/353827.terrain differ diff --git a/public/terrain/19/858477/353828.terrain b/public/terrain/19/858477/353828.terrain new file mode 100644 index 000000000..e72bd2126 Binary files /dev/null and b/public/terrain/19/858477/353828.terrain differ diff --git a/public/terrain/19/858477/353829.terrain b/public/terrain/19/858477/353829.terrain new file mode 100644 index 000000000..d0704fef8 Binary files /dev/null and b/public/terrain/19/858477/353829.terrain differ diff --git a/public/terrain/19/858477/353830.terrain b/public/terrain/19/858477/353830.terrain new file mode 100644 index 000000000..33b3fd425 Binary files /dev/null and b/public/terrain/19/858477/353830.terrain differ diff --git a/public/terrain/19/858477/353831.terrain b/public/terrain/19/858477/353831.terrain new file mode 100644 index 000000000..353feca50 Binary files /dev/null and b/public/terrain/19/858477/353831.terrain differ diff --git a/public/terrain/19/858477/353832.terrain b/public/terrain/19/858477/353832.terrain new file mode 100644 index 000000000..afaab4fe3 Binary files /dev/null and b/public/terrain/19/858477/353832.terrain differ diff --git a/public/terrain/19/858477/353833.terrain b/public/terrain/19/858477/353833.terrain new file mode 100644 index 000000000..8aaa54854 Binary files /dev/null and b/public/terrain/19/858477/353833.terrain differ diff --git a/public/terrain/19/858477/353834.terrain b/public/terrain/19/858477/353834.terrain new file mode 100644 index 000000000..a3f055d9e Binary files /dev/null and b/public/terrain/19/858477/353834.terrain differ diff --git a/public/terrain/19/858477/353835.terrain b/public/terrain/19/858477/353835.terrain new file mode 100644 index 000000000..6cc1ef3d6 Binary files /dev/null and b/public/terrain/19/858477/353835.terrain differ diff --git a/public/terrain/19/858477/353836.terrain b/public/terrain/19/858477/353836.terrain new file mode 100644 index 000000000..0a8ea4644 Binary files /dev/null and b/public/terrain/19/858477/353836.terrain differ diff --git a/public/terrain/19/858477/353837.terrain b/public/terrain/19/858477/353837.terrain new file mode 100644 index 000000000..880d3b787 Binary files /dev/null and b/public/terrain/19/858477/353837.terrain differ diff --git a/public/terrain/19/858477/353838.terrain b/public/terrain/19/858477/353838.terrain new file mode 100644 index 000000000..1ca19e985 Binary files /dev/null and b/public/terrain/19/858477/353838.terrain differ diff --git a/public/terrain/19/858477/353839.terrain b/public/terrain/19/858477/353839.terrain new file mode 100644 index 000000000..da9698030 Binary files /dev/null and b/public/terrain/19/858477/353839.terrain differ diff --git a/public/terrain/19/858477/353840.terrain b/public/terrain/19/858477/353840.terrain new file mode 100644 index 000000000..e0e2ef6ea Binary files /dev/null and b/public/terrain/19/858477/353840.terrain differ diff --git a/public/terrain/19/858477/353841.terrain b/public/terrain/19/858477/353841.terrain new file mode 100644 index 000000000..7a0a6541a Binary files /dev/null and b/public/terrain/19/858477/353841.terrain differ diff --git a/public/terrain/19/858477/353842.terrain b/public/terrain/19/858477/353842.terrain new file mode 100644 index 000000000..d4b91daaa Binary files /dev/null and b/public/terrain/19/858477/353842.terrain differ diff --git a/public/terrain/19/858477/353843.terrain b/public/terrain/19/858477/353843.terrain new file mode 100644 index 000000000..216d3cdb6 Binary files /dev/null and b/public/terrain/19/858477/353843.terrain differ diff --git a/public/terrain/19/858477/353844.terrain b/public/terrain/19/858477/353844.terrain new file mode 100644 index 000000000..f25a071ca Binary files /dev/null and b/public/terrain/19/858477/353844.terrain differ diff --git a/public/terrain/19/858477/353845.terrain b/public/terrain/19/858477/353845.terrain new file mode 100644 index 000000000..fe8787e5a Binary files /dev/null and b/public/terrain/19/858477/353845.terrain differ diff --git a/public/terrain/19/858477/353846.terrain b/public/terrain/19/858477/353846.terrain new file mode 100644 index 000000000..d8a979da9 Binary files /dev/null and b/public/terrain/19/858477/353846.terrain differ diff --git a/public/terrain/19/858477/353847.terrain b/public/terrain/19/858477/353847.terrain new file mode 100644 index 000000000..6b094b588 Binary files /dev/null and b/public/terrain/19/858477/353847.terrain differ diff --git a/public/terrain/19/858477/353848.terrain b/public/terrain/19/858477/353848.terrain new file mode 100644 index 000000000..88f2078a2 Binary files /dev/null and b/public/terrain/19/858477/353848.terrain differ diff --git a/public/terrain/19/858477/353849.terrain b/public/terrain/19/858477/353849.terrain new file mode 100644 index 000000000..87f9cbcf3 Binary files /dev/null and b/public/terrain/19/858477/353849.terrain differ diff --git a/public/terrain/19/858477/353850.terrain b/public/terrain/19/858477/353850.terrain new file mode 100644 index 000000000..883ec839c Binary files /dev/null and b/public/terrain/19/858477/353850.terrain differ diff --git a/public/terrain/19/858477/353851.terrain b/public/terrain/19/858477/353851.terrain new file mode 100644 index 000000000..6ffa4619a Binary files /dev/null and b/public/terrain/19/858477/353851.terrain differ diff --git a/public/terrain/19/858477/353852.terrain b/public/terrain/19/858477/353852.terrain new file mode 100644 index 000000000..e50daa298 Binary files /dev/null and b/public/terrain/19/858477/353852.terrain differ diff --git a/public/terrain/19/858477/353853.terrain b/public/terrain/19/858477/353853.terrain new file mode 100644 index 000000000..b29b0e2fc Binary files /dev/null and b/public/terrain/19/858477/353853.terrain differ diff --git a/public/terrain/19/858477/353854.terrain b/public/terrain/19/858477/353854.terrain new file mode 100644 index 000000000..802283dd6 Binary files /dev/null and b/public/terrain/19/858477/353854.terrain differ diff --git a/public/terrain/19/858477/353855.terrain b/public/terrain/19/858477/353855.terrain new file mode 100644 index 000000000..9183b84b0 Binary files /dev/null and b/public/terrain/19/858477/353855.terrain differ diff --git a/public/terrain/19/858477/353856.terrain b/public/terrain/19/858477/353856.terrain new file mode 100644 index 000000000..44e085f73 Binary files /dev/null and b/public/terrain/19/858477/353856.terrain differ diff --git a/public/terrain/19/858477/353857.terrain b/public/terrain/19/858477/353857.terrain new file mode 100644 index 000000000..264f7b4bc Binary files /dev/null and b/public/terrain/19/858477/353857.terrain differ diff --git a/public/terrain/19/858477/353858.terrain b/public/terrain/19/858477/353858.terrain new file mode 100644 index 000000000..e5d377e92 Binary files /dev/null and b/public/terrain/19/858477/353858.terrain differ diff --git a/public/terrain/19/858477/353859.terrain b/public/terrain/19/858477/353859.terrain new file mode 100644 index 000000000..87c269b77 Binary files /dev/null and b/public/terrain/19/858477/353859.terrain differ diff --git a/public/terrain/19/858477/353860.terrain b/public/terrain/19/858477/353860.terrain new file mode 100644 index 000000000..d4d25654e Binary files /dev/null and b/public/terrain/19/858477/353860.terrain differ diff --git a/public/terrain/19/858477/353861.terrain b/public/terrain/19/858477/353861.terrain new file mode 100644 index 000000000..c13e16252 Binary files /dev/null and b/public/terrain/19/858477/353861.terrain differ diff --git a/public/terrain/19/858477/353862.terrain b/public/terrain/19/858477/353862.terrain new file mode 100644 index 000000000..45dc72dbe Binary files /dev/null and b/public/terrain/19/858477/353862.terrain differ diff --git a/public/terrain/19/858477/353863.terrain b/public/terrain/19/858477/353863.terrain new file mode 100644 index 000000000..1518a5f07 Binary files /dev/null and b/public/terrain/19/858477/353863.terrain differ diff --git a/public/terrain/19/858477/353864.terrain b/public/terrain/19/858477/353864.terrain new file mode 100644 index 000000000..55136d52b Binary files /dev/null and b/public/terrain/19/858477/353864.terrain differ diff --git a/public/terrain/19/858477/353865.terrain b/public/terrain/19/858477/353865.terrain new file mode 100644 index 000000000..bf9c33f61 Binary files /dev/null and b/public/terrain/19/858477/353865.terrain differ diff --git a/public/terrain/19/858477/353866.terrain b/public/terrain/19/858477/353866.terrain new file mode 100644 index 000000000..172ed58ba Binary files /dev/null and b/public/terrain/19/858477/353866.terrain differ diff --git a/public/terrain/19/858477/353867.terrain b/public/terrain/19/858477/353867.terrain new file mode 100644 index 000000000..2d4dadb53 Binary files /dev/null and b/public/terrain/19/858477/353867.terrain differ diff --git a/public/terrain/19/858477/353868.terrain b/public/terrain/19/858477/353868.terrain new file mode 100644 index 000000000..98afd0a17 Binary files /dev/null and b/public/terrain/19/858477/353868.terrain differ diff --git a/public/terrain/19/858477/353869.terrain b/public/terrain/19/858477/353869.terrain new file mode 100644 index 000000000..7f28f8317 Binary files /dev/null and b/public/terrain/19/858477/353869.terrain differ diff --git a/public/terrain/19/858477/353870.terrain b/public/terrain/19/858477/353870.terrain new file mode 100644 index 000000000..9cc5e782f Binary files /dev/null and b/public/terrain/19/858477/353870.terrain differ diff --git a/public/terrain/19/858477/353871.terrain b/public/terrain/19/858477/353871.terrain new file mode 100644 index 000000000..a9f690c8c Binary files /dev/null and b/public/terrain/19/858477/353871.terrain differ diff --git a/public/terrain/19/858477/353872.terrain b/public/terrain/19/858477/353872.terrain new file mode 100644 index 000000000..64ceeb42b Binary files /dev/null and b/public/terrain/19/858477/353872.terrain differ diff --git a/public/terrain/19/858477/353873.terrain b/public/terrain/19/858477/353873.terrain new file mode 100644 index 000000000..a8e4fa898 Binary files /dev/null and b/public/terrain/19/858477/353873.terrain differ diff --git a/public/terrain/19/858477/353874.terrain b/public/terrain/19/858477/353874.terrain new file mode 100644 index 000000000..2c8281440 Binary files /dev/null and b/public/terrain/19/858477/353874.terrain differ diff --git a/public/terrain/19/858477/353875.terrain b/public/terrain/19/858477/353875.terrain new file mode 100644 index 000000000..5e290fdc4 Binary files /dev/null and b/public/terrain/19/858477/353875.terrain differ diff --git a/public/terrain/19/858477/353876.terrain b/public/terrain/19/858477/353876.terrain new file mode 100644 index 000000000..e2c4237fa Binary files /dev/null and b/public/terrain/19/858477/353876.terrain differ diff --git a/public/terrain/19/858477/353877.terrain b/public/terrain/19/858477/353877.terrain new file mode 100644 index 000000000..e399b95a5 Binary files /dev/null and b/public/terrain/19/858477/353877.terrain differ diff --git a/public/terrain/19/858477/353878.terrain b/public/terrain/19/858477/353878.terrain new file mode 100644 index 000000000..9382e25ba Binary files /dev/null and b/public/terrain/19/858477/353878.terrain differ diff --git a/public/terrain/19/858477/353879.terrain b/public/terrain/19/858477/353879.terrain new file mode 100644 index 000000000..47c228cf9 Binary files /dev/null and b/public/terrain/19/858477/353879.terrain differ diff --git a/public/terrain/19/858477/353880.terrain b/public/terrain/19/858477/353880.terrain new file mode 100644 index 000000000..bb188fc3c Binary files /dev/null and b/public/terrain/19/858477/353880.terrain differ diff --git a/public/terrain/19/858477/353881.terrain b/public/terrain/19/858477/353881.terrain new file mode 100644 index 000000000..2dfe9114e Binary files /dev/null and b/public/terrain/19/858477/353881.terrain differ diff --git a/public/terrain/19/858477/353882.terrain b/public/terrain/19/858477/353882.terrain new file mode 100644 index 000000000..cd769a4ef Binary files /dev/null and b/public/terrain/19/858477/353882.terrain differ diff --git a/public/terrain/19/858477/353883.terrain b/public/terrain/19/858477/353883.terrain new file mode 100644 index 000000000..36aa3288b Binary files /dev/null and b/public/terrain/19/858477/353883.terrain differ diff --git a/public/terrain/19/858477/353884.terrain b/public/terrain/19/858477/353884.terrain new file mode 100644 index 000000000..35098a8ef Binary files /dev/null and b/public/terrain/19/858477/353884.terrain differ diff --git a/public/terrain/19/858477/353885.terrain b/public/terrain/19/858477/353885.terrain new file mode 100644 index 000000000..d65cda9ba Binary files /dev/null and b/public/terrain/19/858477/353885.terrain differ diff --git a/public/terrain/19/858477/353886.terrain b/public/terrain/19/858477/353886.terrain new file mode 100644 index 000000000..37cfb3cc5 Binary files /dev/null and b/public/terrain/19/858477/353886.terrain differ diff --git a/public/terrain/19/858477/353887.terrain b/public/terrain/19/858477/353887.terrain new file mode 100644 index 000000000..dc2a4da40 Binary files /dev/null and b/public/terrain/19/858477/353887.terrain differ diff --git a/public/terrain/19/858477/353888.terrain b/public/terrain/19/858477/353888.terrain new file mode 100644 index 000000000..2d1c62aba Binary files /dev/null and b/public/terrain/19/858477/353888.terrain differ diff --git a/public/terrain/19/858477/353889.terrain b/public/terrain/19/858477/353889.terrain new file mode 100644 index 000000000..b60c61fd8 Binary files /dev/null and b/public/terrain/19/858477/353889.terrain differ diff --git a/public/terrain/19/858477/353890.terrain b/public/terrain/19/858477/353890.terrain new file mode 100644 index 000000000..e5c0a7dc6 Binary files /dev/null and b/public/terrain/19/858477/353890.terrain differ diff --git a/public/terrain/19/858477/353891.terrain b/public/terrain/19/858477/353891.terrain new file mode 100644 index 000000000..e29224045 Binary files /dev/null and b/public/terrain/19/858477/353891.terrain differ diff --git a/public/terrain/19/858477/353892.terrain b/public/terrain/19/858477/353892.terrain new file mode 100644 index 000000000..b37f865ed Binary files /dev/null and b/public/terrain/19/858477/353892.terrain differ diff --git a/public/terrain/19/858477/353893.terrain b/public/terrain/19/858477/353893.terrain new file mode 100644 index 000000000..1945d66b4 Binary files /dev/null and b/public/terrain/19/858477/353893.terrain differ diff --git a/public/terrain/19/858477/353894.terrain b/public/terrain/19/858477/353894.terrain new file mode 100644 index 000000000..1b7098482 Binary files /dev/null and b/public/terrain/19/858477/353894.terrain differ diff --git a/public/terrain/19/858477/353895.terrain b/public/terrain/19/858477/353895.terrain new file mode 100644 index 000000000..caca84be2 Binary files /dev/null and b/public/terrain/19/858477/353895.terrain differ diff --git a/public/terrain/19/858477/353896.terrain b/public/terrain/19/858477/353896.terrain new file mode 100644 index 000000000..1cfa055ee Binary files /dev/null and b/public/terrain/19/858477/353896.terrain differ diff --git a/public/terrain/19/858477/353897.terrain b/public/terrain/19/858477/353897.terrain new file mode 100644 index 000000000..7b2c6bcb5 Binary files /dev/null and b/public/terrain/19/858477/353897.terrain differ diff --git a/public/terrain/19/858477/353898.terrain b/public/terrain/19/858477/353898.terrain new file mode 100644 index 000000000..6dcd07a97 Binary files /dev/null and b/public/terrain/19/858477/353898.terrain differ diff --git a/public/terrain/19/858477/353899.terrain b/public/terrain/19/858477/353899.terrain new file mode 100644 index 000000000..04fffc711 Binary files /dev/null and b/public/terrain/19/858477/353899.terrain differ diff --git a/public/terrain/19/858477/353900.terrain b/public/terrain/19/858477/353900.terrain new file mode 100644 index 000000000..402d79842 Binary files /dev/null and b/public/terrain/19/858477/353900.terrain differ diff --git a/public/terrain/19/858477/353901.terrain b/public/terrain/19/858477/353901.terrain new file mode 100644 index 000000000..0d79e820e Binary files /dev/null and b/public/terrain/19/858477/353901.terrain differ diff --git a/public/terrain/19/858477/353902.terrain b/public/terrain/19/858477/353902.terrain new file mode 100644 index 000000000..b4eb57459 Binary files /dev/null and b/public/terrain/19/858477/353902.terrain differ diff --git a/public/terrain/19/858477/353903.terrain b/public/terrain/19/858477/353903.terrain new file mode 100644 index 000000000..7542255fd Binary files /dev/null and b/public/terrain/19/858477/353903.terrain differ diff --git a/public/terrain/19/858477/353904.terrain b/public/terrain/19/858477/353904.terrain new file mode 100644 index 000000000..bf4d11143 Binary files /dev/null and b/public/terrain/19/858477/353904.terrain differ diff --git a/public/terrain/19/858477/353905.terrain b/public/terrain/19/858477/353905.terrain new file mode 100644 index 000000000..c5baebc5f Binary files /dev/null and b/public/terrain/19/858477/353905.terrain differ diff --git a/public/terrain/19/858477/353906.terrain b/public/terrain/19/858477/353906.terrain new file mode 100644 index 000000000..fde25286e Binary files /dev/null and b/public/terrain/19/858477/353906.terrain differ diff --git a/public/terrain/19/858477/353907.terrain b/public/terrain/19/858477/353907.terrain new file mode 100644 index 000000000..04414153d Binary files /dev/null and b/public/terrain/19/858477/353907.terrain differ diff --git a/public/terrain/19/858477/353908.terrain b/public/terrain/19/858477/353908.terrain new file mode 100644 index 000000000..f93645b8d Binary files /dev/null and b/public/terrain/19/858477/353908.terrain differ diff --git a/public/terrain/19/858477/353909.terrain b/public/terrain/19/858477/353909.terrain new file mode 100644 index 000000000..196c8d64c Binary files /dev/null and b/public/terrain/19/858477/353909.terrain differ diff --git a/public/terrain/19/858477/353910.terrain b/public/terrain/19/858477/353910.terrain new file mode 100644 index 000000000..8c307664d Binary files /dev/null and b/public/terrain/19/858477/353910.terrain differ diff --git a/public/terrain/19/858477/353911.terrain b/public/terrain/19/858477/353911.terrain new file mode 100644 index 000000000..44ea88d8f Binary files /dev/null and b/public/terrain/19/858477/353911.terrain differ diff --git a/public/terrain/19/858477/353912.terrain b/public/terrain/19/858477/353912.terrain new file mode 100644 index 000000000..495e47d26 Binary files /dev/null and b/public/terrain/19/858477/353912.terrain differ diff --git a/public/terrain/19/858477/353913.terrain b/public/terrain/19/858477/353913.terrain new file mode 100644 index 000000000..66e8ff788 Binary files /dev/null and b/public/terrain/19/858477/353913.terrain differ diff --git a/public/terrain/19/858477/353914.terrain b/public/terrain/19/858477/353914.terrain new file mode 100644 index 000000000..dcebc5eb3 Binary files /dev/null and b/public/terrain/19/858477/353914.terrain differ diff --git a/public/terrain/19/858477/353915.terrain b/public/terrain/19/858477/353915.terrain new file mode 100644 index 000000000..4d70fd708 Binary files /dev/null and b/public/terrain/19/858477/353915.terrain differ diff --git a/public/terrain/19/858477/353916.terrain b/public/terrain/19/858477/353916.terrain new file mode 100644 index 000000000..aec04746a Binary files /dev/null and b/public/terrain/19/858477/353916.terrain differ diff --git a/public/terrain/19/858477/353917.terrain b/public/terrain/19/858477/353917.terrain new file mode 100644 index 000000000..f26d4f34d Binary files /dev/null and b/public/terrain/19/858477/353917.terrain differ diff --git a/public/terrain/19/858477/353918.terrain b/public/terrain/19/858477/353918.terrain new file mode 100644 index 000000000..fe803b997 Binary files /dev/null and b/public/terrain/19/858477/353918.terrain differ diff --git a/public/terrain/19/858477/353919.terrain b/public/terrain/19/858477/353919.terrain new file mode 100644 index 000000000..506543668 Binary files /dev/null and b/public/terrain/19/858477/353919.terrain differ diff --git a/public/terrain/19/858477/353920.terrain b/public/terrain/19/858477/353920.terrain new file mode 100644 index 000000000..674aac599 Binary files /dev/null and b/public/terrain/19/858477/353920.terrain differ diff --git a/public/terrain/19/858477/353921.terrain b/public/terrain/19/858477/353921.terrain new file mode 100644 index 000000000..8132164f9 Binary files /dev/null and b/public/terrain/19/858477/353921.terrain differ diff --git a/public/terrain/19/858477/353922.terrain b/public/terrain/19/858477/353922.terrain new file mode 100644 index 000000000..faa8bebe0 Binary files /dev/null and b/public/terrain/19/858477/353922.terrain differ diff --git a/public/terrain/19/858477/353923.terrain b/public/terrain/19/858477/353923.terrain new file mode 100644 index 000000000..092c5105c Binary files /dev/null and b/public/terrain/19/858477/353923.terrain differ diff --git a/public/terrain/19/858477/353924.terrain b/public/terrain/19/858477/353924.terrain new file mode 100644 index 000000000..8a3e4d8e7 Binary files /dev/null and b/public/terrain/19/858477/353924.terrain differ diff --git a/public/terrain/19/858477/353925.terrain b/public/terrain/19/858477/353925.terrain new file mode 100644 index 000000000..dc2929864 Binary files /dev/null and b/public/terrain/19/858477/353925.terrain differ diff --git a/public/terrain/19/858477/353926.terrain b/public/terrain/19/858477/353926.terrain new file mode 100644 index 000000000..df801c7fb Binary files /dev/null and b/public/terrain/19/858477/353926.terrain differ diff --git a/public/terrain/19/858477/353927.terrain b/public/terrain/19/858477/353927.terrain new file mode 100644 index 000000000..ff82bf6d0 Binary files /dev/null and b/public/terrain/19/858477/353927.terrain differ diff --git a/public/terrain/19/858477/353928.terrain b/public/terrain/19/858477/353928.terrain new file mode 100644 index 000000000..2f6933395 Binary files /dev/null and b/public/terrain/19/858477/353928.terrain differ diff --git a/public/terrain/19/858477/353929.terrain b/public/terrain/19/858477/353929.terrain new file mode 100644 index 000000000..9de010035 Binary files /dev/null and b/public/terrain/19/858477/353929.terrain differ diff --git a/public/terrain/19/858477/353930.terrain b/public/terrain/19/858477/353930.terrain new file mode 100644 index 000000000..3dd9a0635 Binary files /dev/null and b/public/terrain/19/858477/353930.terrain differ diff --git a/public/terrain/19/858477/353931.terrain b/public/terrain/19/858477/353931.terrain new file mode 100644 index 000000000..2fa23484e Binary files /dev/null and b/public/terrain/19/858477/353931.terrain differ diff --git a/public/terrain/19/858477/353932.terrain b/public/terrain/19/858477/353932.terrain new file mode 100644 index 000000000..61908ef7a Binary files /dev/null and b/public/terrain/19/858477/353932.terrain differ diff --git a/public/terrain/19/858477/353933.terrain b/public/terrain/19/858477/353933.terrain new file mode 100644 index 000000000..ff5779186 Binary files /dev/null and b/public/terrain/19/858477/353933.terrain differ diff --git a/public/terrain/19/858477/353934.terrain b/public/terrain/19/858477/353934.terrain new file mode 100644 index 000000000..606a00bcb Binary files /dev/null and b/public/terrain/19/858477/353934.terrain differ diff --git a/public/terrain/19/858477/353935.terrain b/public/terrain/19/858477/353935.terrain new file mode 100644 index 000000000..c9a799bb0 Binary files /dev/null and b/public/terrain/19/858477/353935.terrain differ diff --git a/public/terrain/19/858477/353936.terrain b/public/terrain/19/858477/353936.terrain new file mode 100644 index 000000000..7af10a2c5 Binary files /dev/null and b/public/terrain/19/858477/353936.terrain differ diff --git a/public/terrain/19/858477/353937.terrain b/public/terrain/19/858477/353937.terrain new file mode 100644 index 000000000..610a9d2ae Binary files /dev/null and b/public/terrain/19/858477/353937.terrain differ diff --git a/public/terrain/19/858477/353938.terrain b/public/terrain/19/858477/353938.terrain new file mode 100644 index 000000000..632c55045 Binary files /dev/null and b/public/terrain/19/858477/353938.terrain differ diff --git a/public/terrain/19/858477/353939.terrain b/public/terrain/19/858477/353939.terrain new file mode 100644 index 000000000..708a4cea5 Binary files /dev/null and b/public/terrain/19/858477/353939.terrain differ diff --git a/public/terrain/19/858477/353940.terrain b/public/terrain/19/858477/353940.terrain new file mode 100644 index 000000000..a9ef8bf9c Binary files /dev/null and b/public/terrain/19/858477/353940.terrain differ diff --git a/public/terrain/19/858477/353941.terrain b/public/terrain/19/858477/353941.terrain new file mode 100644 index 000000000..930c3337d Binary files /dev/null and b/public/terrain/19/858477/353941.terrain differ diff --git a/public/terrain/19/858477/353942.terrain b/public/terrain/19/858477/353942.terrain new file mode 100644 index 000000000..48876f98d Binary files /dev/null and b/public/terrain/19/858477/353942.terrain differ diff --git a/public/terrain/19/858477/353943.terrain b/public/terrain/19/858477/353943.terrain new file mode 100644 index 000000000..aa4ec23a2 Binary files /dev/null and b/public/terrain/19/858477/353943.terrain differ diff --git a/public/terrain/19/858477/353944.terrain b/public/terrain/19/858477/353944.terrain new file mode 100644 index 000000000..5741f6d40 Binary files /dev/null and b/public/terrain/19/858477/353944.terrain differ diff --git a/public/terrain/19/858477/353945.terrain b/public/terrain/19/858477/353945.terrain new file mode 100644 index 000000000..8d06be21d Binary files /dev/null and b/public/terrain/19/858477/353945.terrain differ diff --git a/public/terrain/19/858477/353946.terrain b/public/terrain/19/858477/353946.terrain new file mode 100644 index 000000000..d49a7810f Binary files /dev/null and b/public/terrain/19/858477/353946.terrain differ diff --git a/public/terrain/19/858477/353947.terrain b/public/terrain/19/858477/353947.terrain new file mode 100644 index 000000000..2492214cb Binary files /dev/null and b/public/terrain/19/858477/353947.terrain differ diff --git a/public/terrain/19/858477/353948.terrain b/public/terrain/19/858477/353948.terrain new file mode 100644 index 000000000..5a1bf8c1c Binary files /dev/null and b/public/terrain/19/858477/353948.terrain differ diff --git a/public/terrain/19/858477/353949.terrain b/public/terrain/19/858477/353949.terrain new file mode 100644 index 000000000..df7ba801d Binary files /dev/null and b/public/terrain/19/858477/353949.terrain differ diff --git a/public/terrain/19/858477/353950.terrain b/public/terrain/19/858477/353950.terrain new file mode 100644 index 000000000..d9429b1cf Binary files /dev/null and b/public/terrain/19/858477/353950.terrain differ diff --git a/public/terrain/19/858477/353951.terrain b/public/terrain/19/858477/353951.terrain new file mode 100644 index 000000000..361997116 Binary files /dev/null and b/public/terrain/19/858477/353951.terrain differ diff --git a/public/terrain/19/858477/353952.terrain b/public/terrain/19/858477/353952.terrain new file mode 100644 index 000000000..a6408017b Binary files /dev/null and b/public/terrain/19/858477/353952.terrain differ diff --git a/public/terrain/19/858477/353953.terrain b/public/terrain/19/858477/353953.terrain new file mode 100644 index 000000000..353c7ccf4 Binary files /dev/null and b/public/terrain/19/858477/353953.terrain differ diff --git a/public/terrain/19/858477/353954.terrain b/public/terrain/19/858477/353954.terrain new file mode 100644 index 000000000..dfce1d8d6 Binary files /dev/null and b/public/terrain/19/858477/353954.terrain differ diff --git a/public/terrain/19/858477/353955.terrain b/public/terrain/19/858477/353955.terrain new file mode 100644 index 000000000..0e2533382 Binary files /dev/null and b/public/terrain/19/858477/353955.terrain differ diff --git a/public/terrain/19/858477/353956.terrain b/public/terrain/19/858477/353956.terrain new file mode 100644 index 000000000..4030c0ad0 Binary files /dev/null and b/public/terrain/19/858477/353956.terrain differ diff --git a/public/terrain/19/858477/353957.terrain b/public/terrain/19/858477/353957.terrain new file mode 100644 index 000000000..67395b575 Binary files /dev/null and b/public/terrain/19/858477/353957.terrain differ diff --git a/public/terrain/19/858477/353958.terrain b/public/terrain/19/858477/353958.terrain new file mode 100644 index 000000000..d22a89428 Binary files /dev/null and b/public/terrain/19/858477/353958.terrain differ diff --git a/public/terrain/19/858477/353959.terrain b/public/terrain/19/858477/353959.terrain new file mode 100644 index 000000000..e5b4dacb1 Binary files /dev/null and b/public/terrain/19/858477/353959.terrain differ diff --git a/public/terrain/19/858477/353960.terrain b/public/terrain/19/858477/353960.terrain new file mode 100644 index 000000000..50feac691 Binary files /dev/null and b/public/terrain/19/858477/353960.terrain differ diff --git a/public/terrain/19/858477/353961.terrain b/public/terrain/19/858477/353961.terrain new file mode 100644 index 000000000..ddfee909b Binary files /dev/null and b/public/terrain/19/858477/353961.terrain differ diff --git a/public/terrain/19/858477/353962.terrain b/public/terrain/19/858477/353962.terrain new file mode 100644 index 000000000..aa58137be Binary files /dev/null and b/public/terrain/19/858477/353962.terrain differ diff --git a/public/terrain/19/858477/353963.terrain b/public/terrain/19/858477/353963.terrain new file mode 100644 index 000000000..d6b340bba Binary files /dev/null and b/public/terrain/19/858477/353963.terrain differ diff --git a/public/terrain/19/858477/353964.terrain b/public/terrain/19/858477/353964.terrain new file mode 100644 index 000000000..cc1e13313 Binary files /dev/null and b/public/terrain/19/858477/353964.terrain differ diff --git a/public/terrain/19/858477/353965.terrain b/public/terrain/19/858477/353965.terrain new file mode 100644 index 000000000..08a8d4348 Binary files /dev/null and b/public/terrain/19/858477/353965.terrain differ diff --git a/public/terrain/19/858477/353966.terrain b/public/terrain/19/858477/353966.terrain new file mode 100644 index 000000000..f2747d648 Binary files /dev/null and b/public/terrain/19/858477/353966.terrain differ diff --git a/public/terrain/19/858477/353967.terrain b/public/terrain/19/858477/353967.terrain new file mode 100644 index 000000000..06a2e7ae2 Binary files /dev/null and b/public/terrain/19/858477/353967.terrain differ diff --git a/public/terrain/19/858477/353968.terrain b/public/terrain/19/858477/353968.terrain new file mode 100644 index 000000000..44ffbedcb Binary files /dev/null and b/public/terrain/19/858477/353968.terrain differ diff --git a/public/terrain/19/858477/353969.terrain b/public/terrain/19/858477/353969.terrain new file mode 100644 index 000000000..41ff541b7 Binary files /dev/null and b/public/terrain/19/858477/353969.terrain differ diff --git a/public/terrain/19/858477/353970.terrain b/public/terrain/19/858477/353970.terrain new file mode 100644 index 000000000..625a11668 Binary files /dev/null and b/public/terrain/19/858477/353970.terrain differ diff --git a/public/terrain/19/858477/353971.terrain b/public/terrain/19/858477/353971.terrain new file mode 100644 index 000000000..1af0a20e5 Binary files /dev/null and b/public/terrain/19/858477/353971.terrain differ diff --git a/public/terrain/19/858477/353972.terrain b/public/terrain/19/858477/353972.terrain new file mode 100644 index 000000000..8606b0190 Binary files /dev/null and b/public/terrain/19/858477/353972.terrain differ diff --git a/public/terrain/19/858477/353973.terrain b/public/terrain/19/858477/353973.terrain new file mode 100644 index 000000000..b85d851b2 Binary files /dev/null and b/public/terrain/19/858477/353973.terrain differ diff --git a/public/terrain/19/858477/353974.terrain b/public/terrain/19/858477/353974.terrain new file mode 100644 index 000000000..b61ebed2e Binary files /dev/null and b/public/terrain/19/858477/353974.terrain differ diff --git a/public/terrain/19/858477/353975.terrain b/public/terrain/19/858477/353975.terrain new file mode 100644 index 000000000..9ee151d68 Binary files /dev/null and b/public/terrain/19/858477/353975.terrain differ diff --git a/public/terrain/19/858477/353976.terrain b/public/terrain/19/858477/353976.terrain new file mode 100644 index 000000000..fe13d16c8 Binary files /dev/null and b/public/terrain/19/858477/353976.terrain differ diff --git a/public/terrain/19/858477/353977.terrain b/public/terrain/19/858477/353977.terrain new file mode 100644 index 000000000..845441079 Binary files /dev/null and b/public/terrain/19/858477/353977.terrain differ diff --git a/public/terrain/19/858477/353978.terrain b/public/terrain/19/858477/353978.terrain new file mode 100644 index 000000000..200020076 Binary files /dev/null and b/public/terrain/19/858477/353978.terrain differ diff --git a/public/terrain/19/858477/353979.terrain b/public/terrain/19/858477/353979.terrain new file mode 100644 index 000000000..6028c5205 Binary files /dev/null and b/public/terrain/19/858477/353979.terrain differ diff --git a/public/terrain/19/858477/353980.terrain b/public/terrain/19/858477/353980.terrain new file mode 100644 index 000000000..1c9aaf98f Binary files /dev/null and b/public/terrain/19/858477/353980.terrain differ diff --git a/public/terrain/19/858477/353981.terrain b/public/terrain/19/858477/353981.terrain new file mode 100644 index 000000000..cad9921fe Binary files /dev/null and b/public/terrain/19/858477/353981.terrain differ diff --git a/public/terrain/19/858477/353982.terrain b/public/terrain/19/858477/353982.terrain new file mode 100644 index 000000000..6df09df63 Binary files /dev/null and b/public/terrain/19/858477/353982.terrain differ diff --git a/public/terrain/19/858477/353983.terrain b/public/terrain/19/858477/353983.terrain new file mode 100644 index 000000000..b770d5775 Binary files /dev/null and b/public/terrain/19/858477/353983.terrain differ diff --git a/public/terrain/19/858477/353984.terrain b/public/terrain/19/858477/353984.terrain new file mode 100644 index 000000000..c29e56487 Binary files /dev/null and b/public/terrain/19/858477/353984.terrain differ diff --git a/public/terrain/19/858477/353985.terrain b/public/terrain/19/858477/353985.terrain new file mode 100644 index 000000000..24e4050bf Binary files /dev/null and b/public/terrain/19/858477/353985.terrain differ diff --git a/public/terrain/19/858477/353986.terrain b/public/terrain/19/858477/353986.terrain new file mode 100644 index 000000000..fe2af8d9a Binary files /dev/null and b/public/terrain/19/858477/353986.terrain differ diff --git a/public/terrain/19/858477/353987.terrain b/public/terrain/19/858477/353987.terrain new file mode 100644 index 000000000..272688e72 Binary files /dev/null and b/public/terrain/19/858477/353987.terrain differ diff --git a/public/terrain/19/858477/353988.terrain b/public/terrain/19/858477/353988.terrain new file mode 100644 index 000000000..939830cd3 Binary files /dev/null and b/public/terrain/19/858477/353988.terrain differ diff --git a/public/terrain/19/858477/353989.terrain b/public/terrain/19/858477/353989.terrain new file mode 100644 index 000000000..fba04a2e6 Binary files /dev/null and b/public/terrain/19/858477/353989.terrain differ diff --git a/public/terrain/19/858477/353990.terrain b/public/terrain/19/858477/353990.terrain new file mode 100644 index 000000000..5930c9c38 Binary files /dev/null and b/public/terrain/19/858477/353990.terrain differ diff --git a/public/terrain/19/858477/353991.terrain b/public/terrain/19/858477/353991.terrain new file mode 100644 index 000000000..4a1771626 Binary files /dev/null and b/public/terrain/19/858477/353991.terrain differ diff --git a/public/terrain/19/858477/353992.terrain b/public/terrain/19/858477/353992.terrain new file mode 100644 index 000000000..1007e06a2 Binary files /dev/null and b/public/terrain/19/858477/353992.terrain differ diff --git a/public/terrain/19/858477/353993.terrain b/public/terrain/19/858477/353993.terrain new file mode 100644 index 000000000..39071cf1b Binary files /dev/null and b/public/terrain/19/858477/353993.terrain differ diff --git a/public/terrain/19/858477/353994.terrain b/public/terrain/19/858477/353994.terrain new file mode 100644 index 000000000..587f280cb Binary files /dev/null and b/public/terrain/19/858477/353994.terrain differ diff --git a/public/terrain/19/858477/353995.terrain b/public/terrain/19/858477/353995.terrain new file mode 100644 index 000000000..665ce6f05 Binary files /dev/null and b/public/terrain/19/858477/353995.terrain differ diff --git a/public/terrain/19/858477/353996.terrain b/public/terrain/19/858477/353996.terrain new file mode 100644 index 000000000..d5a032520 Binary files /dev/null and b/public/terrain/19/858477/353996.terrain differ diff --git a/public/terrain/19/858477/353997.terrain b/public/terrain/19/858477/353997.terrain new file mode 100644 index 000000000..d0142d96a Binary files /dev/null and b/public/terrain/19/858477/353997.terrain differ diff --git a/public/terrain/19/858477/353998.terrain b/public/terrain/19/858477/353998.terrain new file mode 100644 index 000000000..306d3844b Binary files /dev/null and b/public/terrain/19/858477/353998.terrain differ diff --git a/public/terrain/19/858477/353999.terrain b/public/terrain/19/858477/353999.terrain new file mode 100644 index 000000000..f9670695b Binary files /dev/null and b/public/terrain/19/858477/353999.terrain differ diff --git a/public/terrain/19/858477/354000.terrain b/public/terrain/19/858477/354000.terrain new file mode 100644 index 000000000..511696982 Binary files /dev/null and b/public/terrain/19/858477/354000.terrain differ diff --git a/public/terrain/19/858477/354001.terrain b/public/terrain/19/858477/354001.terrain new file mode 100644 index 000000000..71f0edc2c Binary files /dev/null and b/public/terrain/19/858477/354001.terrain differ diff --git a/public/terrain/19/858477/354002.terrain b/public/terrain/19/858477/354002.terrain new file mode 100644 index 000000000..39abc8f0e Binary files /dev/null and b/public/terrain/19/858477/354002.terrain differ diff --git a/public/terrain/19/858477/354003.terrain b/public/terrain/19/858477/354003.terrain new file mode 100644 index 000000000..000b478bb Binary files /dev/null and b/public/terrain/19/858477/354003.terrain differ diff --git a/public/terrain/19/858477/354004.terrain b/public/terrain/19/858477/354004.terrain new file mode 100644 index 000000000..d312b6d90 Binary files /dev/null and b/public/terrain/19/858477/354004.terrain differ diff --git a/public/terrain/19/858477/354005.terrain b/public/terrain/19/858477/354005.terrain new file mode 100644 index 000000000..fba02fde8 Binary files /dev/null and b/public/terrain/19/858477/354005.terrain differ diff --git a/public/terrain/19/858477/354006.terrain b/public/terrain/19/858477/354006.terrain new file mode 100644 index 000000000..109e8d2f5 Binary files /dev/null and b/public/terrain/19/858477/354006.terrain differ diff --git a/public/terrain/19/858477/354007.terrain b/public/terrain/19/858477/354007.terrain new file mode 100644 index 000000000..725f67152 Binary files /dev/null and b/public/terrain/19/858477/354007.terrain differ diff --git a/public/terrain/19/858477/354008.terrain b/public/terrain/19/858477/354008.terrain new file mode 100644 index 000000000..2725c66cb Binary files /dev/null and b/public/terrain/19/858477/354008.terrain differ diff --git a/public/terrain/19/858477/354009.terrain b/public/terrain/19/858477/354009.terrain new file mode 100644 index 000000000..863cefe78 Binary files /dev/null and b/public/terrain/19/858477/354009.terrain differ diff --git a/public/terrain/19/858477/354010.terrain b/public/terrain/19/858477/354010.terrain new file mode 100644 index 000000000..878275dc4 Binary files /dev/null and b/public/terrain/19/858477/354010.terrain differ diff --git a/public/terrain/19/858477/354011.terrain b/public/terrain/19/858477/354011.terrain new file mode 100644 index 000000000..84156f0c7 Binary files /dev/null and b/public/terrain/19/858477/354011.terrain differ diff --git a/public/terrain/19/858477/354012.terrain b/public/terrain/19/858477/354012.terrain new file mode 100644 index 000000000..f83105316 Binary files /dev/null and b/public/terrain/19/858477/354012.terrain differ diff --git a/public/terrain/19/858477/354013.terrain b/public/terrain/19/858477/354013.terrain new file mode 100644 index 000000000..e50e2b096 Binary files /dev/null and b/public/terrain/19/858477/354013.terrain differ diff --git a/public/terrain/19/858477/354014.terrain b/public/terrain/19/858477/354014.terrain new file mode 100644 index 000000000..e6db7f65b Binary files /dev/null and b/public/terrain/19/858477/354014.terrain differ diff --git a/public/terrain/19/858477/354015.terrain b/public/terrain/19/858477/354015.terrain new file mode 100644 index 000000000..84a483446 Binary files /dev/null and b/public/terrain/19/858477/354015.terrain differ diff --git a/public/terrain/19/858477/354016.terrain b/public/terrain/19/858477/354016.terrain new file mode 100644 index 000000000..4c2a96d44 Binary files /dev/null and b/public/terrain/19/858477/354016.terrain differ diff --git a/public/terrain/19/858477/354017.terrain b/public/terrain/19/858477/354017.terrain new file mode 100644 index 000000000..58659a034 Binary files /dev/null and b/public/terrain/19/858477/354017.terrain differ diff --git a/public/terrain/19/858477/354018.terrain b/public/terrain/19/858477/354018.terrain new file mode 100644 index 000000000..e814212f5 Binary files /dev/null and b/public/terrain/19/858477/354018.terrain differ diff --git a/public/terrain/19/858477/354019.terrain b/public/terrain/19/858477/354019.terrain new file mode 100644 index 000000000..6fe72c1f9 Binary files /dev/null and b/public/terrain/19/858477/354019.terrain differ diff --git a/public/terrain/19/858477/354020.terrain b/public/terrain/19/858477/354020.terrain new file mode 100644 index 000000000..54fb7819a Binary files /dev/null and b/public/terrain/19/858477/354020.terrain differ diff --git a/public/terrain/19/858477/354021.terrain b/public/terrain/19/858477/354021.terrain new file mode 100644 index 000000000..12bd62b68 Binary files /dev/null and b/public/terrain/19/858477/354021.terrain differ diff --git a/public/terrain/19/858477/354022.terrain b/public/terrain/19/858477/354022.terrain new file mode 100644 index 000000000..cc970ff0e Binary files /dev/null and b/public/terrain/19/858477/354022.terrain differ diff --git a/public/terrain/19/858477/354023.terrain b/public/terrain/19/858477/354023.terrain new file mode 100644 index 000000000..aeeb26e65 Binary files /dev/null and b/public/terrain/19/858477/354023.terrain differ diff --git a/public/terrain/19/858477/354024.terrain b/public/terrain/19/858477/354024.terrain new file mode 100644 index 000000000..bba20a975 Binary files /dev/null and b/public/terrain/19/858477/354024.terrain differ diff --git a/public/terrain/19/858477/354025.terrain b/public/terrain/19/858477/354025.terrain new file mode 100644 index 000000000..738c3f594 Binary files /dev/null and b/public/terrain/19/858477/354025.terrain differ diff --git a/public/terrain/19/858477/354026.terrain b/public/terrain/19/858477/354026.terrain new file mode 100644 index 000000000..2e256b058 Binary files /dev/null and b/public/terrain/19/858477/354026.terrain differ diff --git a/public/terrain/19/858477/354027.terrain b/public/terrain/19/858477/354027.terrain new file mode 100644 index 000000000..ab03ba2b9 Binary files /dev/null and b/public/terrain/19/858477/354027.terrain differ diff --git a/public/terrain/19/858477/354028.terrain b/public/terrain/19/858477/354028.terrain new file mode 100644 index 000000000..bc51e03e7 Binary files /dev/null and b/public/terrain/19/858477/354028.terrain differ diff --git a/public/terrain/19/858477/354029.terrain b/public/terrain/19/858477/354029.terrain new file mode 100644 index 000000000..425cca3fe Binary files /dev/null and b/public/terrain/19/858477/354029.terrain differ diff --git a/public/terrain/19/858477/354030.terrain b/public/terrain/19/858477/354030.terrain new file mode 100644 index 000000000..c45d142ea Binary files /dev/null and b/public/terrain/19/858477/354030.terrain differ diff --git a/public/terrain/19/858477/354031.terrain b/public/terrain/19/858477/354031.terrain new file mode 100644 index 000000000..812dd7195 Binary files /dev/null and b/public/terrain/19/858477/354031.terrain differ diff --git a/public/terrain/19/858477/354032.terrain b/public/terrain/19/858477/354032.terrain new file mode 100644 index 000000000..e3c31c2bc Binary files /dev/null and b/public/terrain/19/858477/354032.terrain differ diff --git a/public/terrain/19/858477/354033.terrain b/public/terrain/19/858477/354033.terrain new file mode 100644 index 000000000..3dcf51538 Binary files /dev/null and b/public/terrain/19/858477/354033.terrain differ diff --git a/public/terrain/19/858477/354034.terrain b/public/terrain/19/858477/354034.terrain new file mode 100644 index 000000000..913a92192 Binary files /dev/null and b/public/terrain/19/858477/354034.terrain differ diff --git a/public/terrain/19/858477/354035.terrain b/public/terrain/19/858477/354035.terrain new file mode 100644 index 000000000..16194a498 Binary files /dev/null and b/public/terrain/19/858477/354035.terrain differ diff --git a/public/terrain/19/858477/354036.terrain b/public/terrain/19/858477/354036.terrain new file mode 100644 index 000000000..81ca4c2d9 Binary files /dev/null and b/public/terrain/19/858477/354036.terrain differ diff --git a/public/terrain/19/858477/354037.terrain b/public/terrain/19/858477/354037.terrain new file mode 100644 index 000000000..741e361cb Binary files /dev/null and b/public/terrain/19/858477/354037.terrain differ diff --git a/public/terrain/19/858477/354038.terrain b/public/terrain/19/858477/354038.terrain new file mode 100644 index 000000000..36d0e7b87 Binary files /dev/null and b/public/terrain/19/858477/354038.terrain differ diff --git a/public/terrain/19/858477/354039.terrain b/public/terrain/19/858477/354039.terrain new file mode 100644 index 000000000..36c46fd36 Binary files /dev/null and b/public/terrain/19/858477/354039.terrain differ diff --git a/public/terrain/19/858477/354040.terrain b/public/terrain/19/858477/354040.terrain new file mode 100644 index 000000000..279baf3f0 Binary files /dev/null and b/public/terrain/19/858477/354040.terrain differ diff --git a/public/terrain/19/858477/354041.terrain b/public/terrain/19/858477/354041.terrain new file mode 100644 index 000000000..3e678d64f Binary files /dev/null and b/public/terrain/19/858477/354041.terrain differ diff --git a/public/terrain/19/858477/354042.terrain b/public/terrain/19/858477/354042.terrain new file mode 100644 index 000000000..22441cb6e Binary files /dev/null and b/public/terrain/19/858477/354042.terrain differ diff --git a/public/terrain/19/858477/354043.terrain b/public/terrain/19/858477/354043.terrain new file mode 100644 index 000000000..60c45d33a Binary files /dev/null and b/public/terrain/19/858477/354043.terrain differ diff --git a/public/terrain/19/858477/354044.terrain b/public/terrain/19/858477/354044.terrain new file mode 100644 index 000000000..becc660e0 Binary files /dev/null and b/public/terrain/19/858477/354044.terrain differ diff --git a/public/terrain/19/858477/354045.terrain b/public/terrain/19/858477/354045.terrain new file mode 100644 index 000000000..f85a02814 Binary files /dev/null and b/public/terrain/19/858477/354045.terrain differ diff --git a/public/terrain/19/858477/354046.terrain b/public/terrain/19/858477/354046.terrain new file mode 100644 index 000000000..7c578b0c9 Binary files /dev/null and b/public/terrain/19/858477/354046.terrain differ diff --git a/public/terrain/19/858477/354047.terrain b/public/terrain/19/858477/354047.terrain new file mode 100644 index 000000000..ef29b9ec5 Binary files /dev/null and b/public/terrain/19/858477/354047.terrain differ diff --git a/public/terrain/19/858477/354048.terrain b/public/terrain/19/858477/354048.terrain new file mode 100644 index 000000000..442b39d88 Binary files /dev/null and b/public/terrain/19/858477/354048.terrain differ diff --git a/public/terrain/19/858477/354049.terrain b/public/terrain/19/858477/354049.terrain new file mode 100644 index 000000000..d5fe7060d Binary files /dev/null and b/public/terrain/19/858477/354049.terrain differ diff --git a/public/terrain/19/858477/354050.terrain b/public/terrain/19/858477/354050.terrain new file mode 100644 index 000000000..15c4048e5 Binary files /dev/null and b/public/terrain/19/858477/354050.terrain differ diff --git a/public/terrain/19/858477/354051.terrain b/public/terrain/19/858477/354051.terrain new file mode 100644 index 000000000..8b7676fdc Binary files /dev/null and b/public/terrain/19/858477/354051.terrain differ diff --git a/public/terrain/19/858477/354052.terrain b/public/terrain/19/858477/354052.terrain new file mode 100644 index 000000000..9ebbb6cb5 Binary files /dev/null and b/public/terrain/19/858477/354052.terrain differ diff --git a/public/terrain/19/858477/354053.terrain b/public/terrain/19/858477/354053.terrain new file mode 100644 index 000000000..608a9754e Binary files /dev/null and b/public/terrain/19/858477/354053.terrain differ diff --git a/public/terrain/19/858477/354054.terrain b/public/terrain/19/858477/354054.terrain new file mode 100644 index 000000000..8c073d820 Binary files /dev/null and b/public/terrain/19/858477/354054.terrain differ diff --git a/public/terrain/19/858477/354055.terrain b/public/terrain/19/858477/354055.terrain new file mode 100644 index 000000000..d3c89d8a1 Binary files /dev/null and b/public/terrain/19/858477/354055.terrain differ diff --git a/public/terrain/19/858477/354056.terrain b/public/terrain/19/858477/354056.terrain new file mode 100644 index 000000000..27f5072c6 Binary files /dev/null and b/public/terrain/19/858477/354056.terrain differ diff --git a/public/terrain/19/858477/354057.terrain b/public/terrain/19/858477/354057.terrain new file mode 100644 index 000000000..eafef9cca Binary files /dev/null and b/public/terrain/19/858477/354057.terrain differ diff --git a/public/terrain/19/858477/354058.terrain b/public/terrain/19/858477/354058.terrain new file mode 100644 index 000000000..748e3914a Binary files /dev/null and b/public/terrain/19/858477/354058.terrain differ diff --git a/public/terrain/19/858477/354059.terrain b/public/terrain/19/858477/354059.terrain new file mode 100644 index 000000000..feaa824ec Binary files /dev/null and b/public/terrain/19/858477/354059.terrain differ diff --git a/public/terrain/19/858478/353743.terrain b/public/terrain/19/858478/353743.terrain new file mode 100644 index 000000000..15e0f0353 Binary files /dev/null and b/public/terrain/19/858478/353743.terrain differ diff --git a/public/terrain/19/858478/353744.terrain b/public/terrain/19/858478/353744.terrain new file mode 100644 index 000000000..3f6cdba54 Binary files /dev/null and b/public/terrain/19/858478/353744.terrain differ diff --git a/public/terrain/19/858478/353745.terrain b/public/terrain/19/858478/353745.terrain new file mode 100644 index 000000000..39a2dc410 Binary files /dev/null and b/public/terrain/19/858478/353745.terrain differ diff --git a/public/terrain/19/858478/353746.terrain b/public/terrain/19/858478/353746.terrain new file mode 100644 index 000000000..289c7beac Binary files /dev/null and b/public/terrain/19/858478/353746.terrain differ diff --git a/public/terrain/19/858478/353747.terrain b/public/terrain/19/858478/353747.terrain new file mode 100644 index 000000000..deab29ca7 Binary files /dev/null and b/public/terrain/19/858478/353747.terrain differ diff --git a/public/terrain/19/858478/353748.terrain b/public/terrain/19/858478/353748.terrain new file mode 100644 index 000000000..e108c8641 Binary files /dev/null and b/public/terrain/19/858478/353748.terrain differ diff --git a/public/terrain/19/858478/353749.terrain b/public/terrain/19/858478/353749.terrain new file mode 100644 index 000000000..6d66d4fcc Binary files /dev/null and b/public/terrain/19/858478/353749.terrain differ diff --git a/public/terrain/19/858478/353750.terrain b/public/terrain/19/858478/353750.terrain new file mode 100644 index 000000000..ede826127 Binary files /dev/null and b/public/terrain/19/858478/353750.terrain differ diff --git a/public/terrain/19/858478/353751.terrain b/public/terrain/19/858478/353751.terrain new file mode 100644 index 000000000..0adcd0920 Binary files /dev/null and b/public/terrain/19/858478/353751.terrain differ diff --git a/public/terrain/19/858478/353752.terrain b/public/terrain/19/858478/353752.terrain new file mode 100644 index 000000000..2291059c8 Binary files /dev/null and b/public/terrain/19/858478/353752.terrain differ diff --git a/public/terrain/19/858478/353753.terrain b/public/terrain/19/858478/353753.terrain new file mode 100644 index 000000000..c8bfe7406 Binary files /dev/null and b/public/terrain/19/858478/353753.terrain differ diff --git a/public/terrain/19/858478/353754.terrain b/public/terrain/19/858478/353754.terrain new file mode 100644 index 000000000..9d264b2ca Binary files /dev/null and b/public/terrain/19/858478/353754.terrain differ diff --git a/public/terrain/19/858478/353755.terrain b/public/terrain/19/858478/353755.terrain new file mode 100644 index 000000000..f3f77d3cd Binary files /dev/null and b/public/terrain/19/858478/353755.terrain differ diff --git a/public/terrain/19/858478/353756.terrain b/public/terrain/19/858478/353756.terrain new file mode 100644 index 000000000..e3dd78e43 Binary files /dev/null and b/public/terrain/19/858478/353756.terrain differ diff --git a/public/terrain/19/858478/353757.terrain b/public/terrain/19/858478/353757.terrain new file mode 100644 index 000000000..b0cfb85f7 Binary files /dev/null and b/public/terrain/19/858478/353757.terrain differ diff --git a/public/terrain/19/858478/353758.terrain b/public/terrain/19/858478/353758.terrain new file mode 100644 index 000000000..2e76e1098 Binary files /dev/null and b/public/terrain/19/858478/353758.terrain differ diff --git a/public/terrain/19/858478/353759.terrain b/public/terrain/19/858478/353759.terrain new file mode 100644 index 000000000..4b483d082 Binary files /dev/null and b/public/terrain/19/858478/353759.terrain differ diff --git a/public/terrain/19/858478/353760.terrain b/public/terrain/19/858478/353760.terrain new file mode 100644 index 000000000..c56de3ca5 Binary files /dev/null and b/public/terrain/19/858478/353760.terrain differ diff --git a/public/terrain/19/858478/353761.terrain b/public/terrain/19/858478/353761.terrain new file mode 100644 index 000000000..71bb806fa Binary files /dev/null and b/public/terrain/19/858478/353761.terrain differ diff --git a/public/terrain/19/858478/353762.terrain b/public/terrain/19/858478/353762.terrain new file mode 100644 index 000000000..489933e51 Binary files /dev/null and b/public/terrain/19/858478/353762.terrain differ diff --git a/public/terrain/19/858478/353763.terrain b/public/terrain/19/858478/353763.terrain new file mode 100644 index 000000000..58ece1e14 Binary files /dev/null and b/public/terrain/19/858478/353763.terrain differ diff --git a/public/terrain/19/858478/353764.terrain b/public/terrain/19/858478/353764.terrain new file mode 100644 index 000000000..0a9331f89 Binary files /dev/null and b/public/terrain/19/858478/353764.terrain differ diff --git a/public/terrain/19/858478/353765.terrain b/public/terrain/19/858478/353765.terrain new file mode 100644 index 000000000..ce377c584 Binary files /dev/null and b/public/terrain/19/858478/353765.terrain differ diff --git a/public/terrain/19/858478/353766.terrain b/public/terrain/19/858478/353766.terrain new file mode 100644 index 000000000..2914864a6 Binary files /dev/null and b/public/terrain/19/858478/353766.terrain differ diff --git a/public/terrain/19/858478/353767.terrain b/public/terrain/19/858478/353767.terrain new file mode 100644 index 000000000..e0563d369 Binary files /dev/null and b/public/terrain/19/858478/353767.terrain differ diff --git a/public/terrain/19/858478/353768.terrain b/public/terrain/19/858478/353768.terrain new file mode 100644 index 000000000..9f52983e3 Binary files /dev/null and b/public/terrain/19/858478/353768.terrain differ diff --git a/public/terrain/19/858478/353769.terrain b/public/terrain/19/858478/353769.terrain new file mode 100644 index 000000000..a28a812f8 Binary files /dev/null and b/public/terrain/19/858478/353769.terrain differ diff --git a/public/terrain/19/858478/353770.terrain b/public/terrain/19/858478/353770.terrain new file mode 100644 index 000000000..dfdf7a85e Binary files /dev/null and b/public/terrain/19/858478/353770.terrain differ diff --git a/public/terrain/19/858478/353771.terrain b/public/terrain/19/858478/353771.terrain new file mode 100644 index 000000000..b59027494 Binary files /dev/null and b/public/terrain/19/858478/353771.terrain differ diff --git a/public/terrain/19/858478/353772.terrain b/public/terrain/19/858478/353772.terrain new file mode 100644 index 000000000..7a013cc4a Binary files /dev/null and b/public/terrain/19/858478/353772.terrain differ diff --git a/public/terrain/19/858478/353773.terrain b/public/terrain/19/858478/353773.terrain new file mode 100644 index 000000000..a79c2daa0 Binary files /dev/null and b/public/terrain/19/858478/353773.terrain differ diff --git a/public/terrain/19/858478/353774.terrain b/public/terrain/19/858478/353774.terrain new file mode 100644 index 000000000..eb9c5e8ac Binary files /dev/null and b/public/terrain/19/858478/353774.terrain differ diff --git a/public/terrain/19/858478/353775.terrain b/public/terrain/19/858478/353775.terrain new file mode 100644 index 000000000..06757e817 Binary files /dev/null and b/public/terrain/19/858478/353775.terrain differ diff --git a/public/terrain/19/858478/353776.terrain b/public/terrain/19/858478/353776.terrain new file mode 100644 index 000000000..789ee8774 Binary files /dev/null and b/public/terrain/19/858478/353776.terrain differ diff --git a/public/terrain/19/858478/353777.terrain b/public/terrain/19/858478/353777.terrain new file mode 100644 index 000000000..fd689f68b Binary files /dev/null and b/public/terrain/19/858478/353777.terrain differ diff --git a/public/terrain/19/858478/353778.terrain b/public/terrain/19/858478/353778.terrain new file mode 100644 index 000000000..ef4a3ff36 Binary files /dev/null and b/public/terrain/19/858478/353778.terrain differ diff --git a/public/terrain/19/858478/353779.terrain b/public/terrain/19/858478/353779.terrain new file mode 100644 index 000000000..08fcefc20 Binary files /dev/null and b/public/terrain/19/858478/353779.terrain differ diff --git a/public/terrain/19/858478/353780.terrain b/public/terrain/19/858478/353780.terrain new file mode 100644 index 000000000..746be2232 Binary files /dev/null and b/public/terrain/19/858478/353780.terrain differ diff --git a/public/terrain/19/858478/353781.terrain b/public/terrain/19/858478/353781.terrain new file mode 100644 index 000000000..64a00e872 Binary files /dev/null and b/public/terrain/19/858478/353781.terrain differ diff --git a/public/terrain/19/858478/353782.terrain b/public/terrain/19/858478/353782.terrain new file mode 100644 index 000000000..29d343677 Binary files /dev/null and b/public/terrain/19/858478/353782.terrain differ diff --git a/public/terrain/19/858478/353783.terrain b/public/terrain/19/858478/353783.terrain new file mode 100644 index 000000000..d25e76fa7 Binary files /dev/null and b/public/terrain/19/858478/353783.terrain differ diff --git a/public/terrain/19/858478/353784.terrain b/public/terrain/19/858478/353784.terrain new file mode 100644 index 000000000..e81fe1088 Binary files /dev/null and b/public/terrain/19/858478/353784.terrain differ diff --git a/public/terrain/19/858478/353785.terrain b/public/terrain/19/858478/353785.terrain new file mode 100644 index 000000000..d0b37de8c Binary files /dev/null and b/public/terrain/19/858478/353785.terrain differ diff --git a/public/terrain/19/858478/353786.terrain b/public/terrain/19/858478/353786.terrain new file mode 100644 index 000000000..0a6414272 Binary files /dev/null and b/public/terrain/19/858478/353786.terrain differ diff --git a/public/terrain/19/858478/353787.terrain b/public/terrain/19/858478/353787.terrain new file mode 100644 index 000000000..90e59becc Binary files /dev/null and b/public/terrain/19/858478/353787.terrain differ diff --git a/public/terrain/19/858478/353788.terrain b/public/terrain/19/858478/353788.terrain new file mode 100644 index 000000000..2ebec8720 Binary files /dev/null and b/public/terrain/19/858478/353788.terrain differ diff --git a/public/terrain/19/858478/353789.terrain b/public/terrain/19/858478/353789.terrain new file mode 100644 index 000000000..68f9d9103 Binary files /dev/null and b/public/terrain/19/858478/353789.terrain differ diff --git a/public/terrain/19/858478/353790.terrain b/public/terrain/19/858478/353790.terrain new file mode 100644 index 000000000..cda0ff06a Binary files /dev/null and b/public/terrain/19/858478/353790.terrain differ diff --git a/public/terrain/19/858478/353791.terrain b/public/terrain/19/858478/353791.terrain new file mode 100644 index 000000000..41c60f3f6 Binary files /dev/null and b/public/terrain/19/858478/353791.terrain differ diff --git a/public/terrain/19/858478/353792.terrain b/public/terrain/19/858478/353792.terrain new file mode 100644 index 000000000..6985f4c00 Binary files /dev/null and b/public/terrain/19/858478/353792.terrain differ diff --git a/public/terrain/19/858478/353793.terrain b/public/terrain/19/858478/353793.terrain new file mode 100644 index 000000000..110d87beb Binary files /dev/null and b/public/terrain/19/858478/353793.terrain differ diff --git a/public/terrain/19/858478/353794.terrain b/public/terrain/19/858478/353794.terrain new file mode 100644 index 000000000..000fa9f7f Binary files /dev/null and b/public/terrain/19/858478/353794.terrain differ diff --git a/public/terrain/19/858478/353795.terrain b/public/terrain/19/858478/353795.terrain new file mode 100644 index 000000000..20d6f2770 Binary files /dev/null and b/public/terrain/19/858478/353795.terrain differ diff --git a/public/terrain/19/858478/353796.terrain b/public/terrain/19/858478/353796.terrain new file mode 100644 index 000000000..330c36e1f Binary files /dev/null and b/public/terrain/19/858478/353796.terrain differ diff --git a/public/terrain/19/858478/353797.terrain b/public/terrain/19/858478/353797.terrain new file mode 100644 index 000000000..80cc92e7f Binary files /dev/null and b/public/terrain/19/858478/353797.terrain differ diff --git a/public/terrain/19/858478/353798.terrain b/public/terrain/19/858478/353798.terrain new file mode 100644 index 000000000..66c0a5790 Binary files /dev/null and b/public/terrain/19/858478/353798.terrain differ diff --git a/public/terrain/19/858478/353799.terrain b/public/terrain/19/858478/353799.terrain new file mode 100644 index 000000000..d842ced5c Binary files /dev/null and b/public/terrain/19/858478/353799.terrain differ diff --git a/public/terrain/19/858478/353800.terrain b/public/terrain/19/858478/353800.terrain new file mode 100644 index 000000000..dc91ed216 Binary files /dev/null and b/public/terrain/19/858478/353800.terrain differ diff --git a/public/terrain/19/858478/353801.terrain b/public/terrain/19/858478/353801.terrain new file mode 100644 index 000000000..80be5a140 Binary files /dev/null and b/public/terrain/19/858478/353801.terrain differ diff --git a/public/terrain/19/858478/353802.terrain b/public/terrain/19/858478/353802.terrain new file mode 100644 index 000000000..d1c4cf7e5 Binary files /dev/null and b/public/terrain/19/858478/353802.terrain differ diff --git a/public/terrain/19/858478/353803.terrain b/public/terrain/19/858478/353803.terrain new file mode 100644 index 000000000..7e30bd327 Binary files /dev/null and b/public/terrain/19/858478/353803.terrain differ diff --git a/public/terrain/19/858478/353804.terrain b/public/terrain/19/858478/353804.terrain new file mode 100644 index 000000000..dee01a1de Binary files /dev/null and b/public/terrain/19/858478/353804.terrain differ diff --git a/public/terrain/19/858478/353805.terrain b/public/terrain/19/858478/353805.terrain new file mode 100644 index 000000000..11c1c08aa Binary files /dev/null and b/public/terrain/19/858478/353805.terrain differ diff --git a/public/terrain/19/858478/353806.terrain b/public/terrain/19/858478/353806.terrain new file mode 100644 index 000000000..581eb093a Binary files /dev/null and b/public/terrain/19/858478/353806.terrain differ diff --git a/public/terrain/19/858478/353807.terrain b/public/terrain/19/858478/353807.terrain new file mode 100644 index 000000000..df60cc6d7 Binary files /dev/null and b/public/terrain/19/858478/353807.terrain differ diff --git a/public/terrain/19/858478/353808.terrain b/public/terrain/19/858478/353808.terrain new file mode 100644 index 000000000..778433672 Binary files /dev/null and b/public/terrain/19/858478/353808.terrain differ diff --git a/public/terrain/19/858478/353809.terrain b/public/terrain/19/858478/353809.terrain new file mode 100644 index 000000000..e7440529d Binary files /dev/null and b/public/terrain/19/858478/353809.terrain differ diff --git a/public/terrain/19/858478/353810.terrain b/public/terrain/19/858478/353810.terrain new file mode 100644 index 000000000..0c612407f Binary files /dev/null and b/public/terrain/19/858478/353810.terrain differ diff --git a/public/terrain/19/858478/353811.terrain b/public/terrain/19/858478/353811.terrain new file mode 100644 index 000000000..f8f9bc54f Binary files /dev/null and b/public/terrain/19/858478/353811.terrain differ diff --git a/public/terrain/19/858478/353812.terrain b/public/terrain/19/858478/353812.terrain new file mode 100644 index 000000000..02d466fb3 Binary files /dev/null and b/public/terrain/19/858478/353812.terrain differ diff --git a/public/terrain/19/858478/353813.terrain b/public/terrain/19/858478/353813.terrain new file mode 100644 index 000000000..f7b5a5869 Binary files /dev/null and b/public/terrain/19/858478/353813.terrain differ diff --git a/public/terrain/19/858478/353814.terrain b/public/terrain/19/858478/353814.terrain new file mode 100644 index 000000000..c911c784d Binary files /dev/null and b/public/terrain/19/858478/353814.terrain differ diff --git a/public/terrain/19/858478/353815.terrain b/public/terrain/19/858478/353815.terrain new file mode 100644 index 000000000..f5b2c9575 Binary files /dev/null and b/public/terrain/19/858478/353815.terrain differ diff --git a/public/terrain/19/858478/353816.terrain b/public/terrain/19/858478/353816.terrain new file mode 100644 index 000000000..f2a070149 Binary files /dev/null and b/public/terrain/19/858478/353816.terrain differ diff --git a/public/terrain/19/858478/353817.terrain b/public/terrain/19/858478/353817.terrain new file mode 100644 index 000000000..7eb668723 Binary files /dev/null and b/public/terrain/19/858478/353817.terrain differ diff --git a/public/terrain/19/858478/353818.terrain b/public/terrain/19/858478/353818.terrain new file mode 100644 index 000000000..a9427a6be Binary files /dev/null and b/public/terrain/19/858478/353818.terrain differ diff --git a/public/terrain/19/858478/353819.terrain b/public/terrain/19/858478/353819.terrain new file mode 100644 index 000000000..14a0ddd4b Binary files /dev/null and b/public/terrain/19/858478/353819.terrain differ diff --git a/public/terrain/19/858478/353820.terrain b/public/terrain/19/858478/353820.terrain new file mode 100644 index 000000000..f2ccab67c Binary files /dev/null and b/public/terrain/19/858478/353820.terrain differ diff --git a/public/terrain/19/858478/353821.terrain b/public/terrain/19/858478/353821.terrain new file mode 100644 index 000000000..4de488204 Binary files /dev/null and b/public/terrain/19/858478/353821.terrain differ diff --git a/public/terrain/19/858478/353822.terrain b/public/terrain/19/858478/353822.terrain new file mode 100644 index 000000000..c6a00f738 Binary files /dev/null and b/public/terrain/19/858478/353822.terrain differ diff --git a/public/terrain/19/858478/353823.terrain b/public/terrain/19/858478/353823.terrain new file mode 100644 index 000000000..2da8c2ff6 Binary files /dev/null and b/public/terrain/19/858478/353823.terrain differ diff --git a/public/terrain/19/858478/353824.terrain b/public/terrain/19/858478/353824.terrain new file mode 100644 index 000000000..cd8d151c7 Binary files /dev/null and b/public/terrain/19/858478/353824.terrain differ diff --git a/public/terrain/19/858478/353825.terrain b/public/terrain/19/858478/353825.terrain new file mode 100644 index 000000000..ccd8959f1 Binary files /dev/null and b/public/terrain/19/858478/353825.terrain differ diff --git a/public/terrain/19/858478/353826.terrain b/public/terrain/19/858478/353826.terrain new file mode 100644 index 000000000..f56112052 Binary files /dev/null and b/public/terrain/19/858478/353826.terrain differ diff --git a/public/terrain/19/858478/353827.terrain b/public/terrain/19/858478/353827.terrain new file mode 100644 index 000000000..5f9b91f50 Binary files /dev/null and b/public/terrain/19/858478/353827.terrain differ diff --git a/public/terrain/19/858478/353828.terrain b/public/terrain/19/858478/353828.terrain new file mode 100644 index 000000000..48ba4701b Binary files /dev/null and b/public/terrain/19/858478/353828.terrain differ diff --git a/public/terrain/19/858478/353829.terrain b/public/terrain/19/858478/353829.terrain new file mode 100644 index 000000000..47b11c3b1 Binary files /dev/null and b/public/terrain/19/858478/353829.terrain differ diff --git a/public/terrain/19/858478/353830.terrain b/public/terrain/19/858478/353830.terrain new file mode 100644 index 000000000..99d7d7f72 Binary files /dev/null and b/public/terrain/19/858478/353830.terrain differ diff --git a/public/terrain/19/858478/353831.terrain b/public/terrain/19/858478/353831.terrain new file mode 100644 index 000000000..7b7fabee5 Binary files /dev/null and b/public/terrain/19/858478/353831.terrain differ diff --git a/public/terrain/19/858478/353832.terrain b/public/terrain/19/858478/353832.terrain new file mode 100644 index 000000000..a9fe1fc78 Binary files /dev/null and b/public/terrain/19/858478/353832.terrain differ diff --git a/public/terrain/19/858478/353833.terrain b/public/terrain/19/858478/353833.terrain new file mode 100644 index 000000000..9363d0456 Binary files /dev/null and b/public/terrain/19/858478/353833.terrain differ diff --git a/public/terrain/19/858478/353834.terrain b/public/terrain/19/858478/353834.terrain new file mode 100644 index 000000000..65ad90f82 Binary files /dev/null and b/public/terrain/19/858478/353834.terrain differ diff --git a/public/terrain/19/858478/353835.terrain b/public/terrain/19/858478/353835.terrain new file mode 100644 index 000000000..44ae51cfa Binary files /dev/null and b/public/terrain/19/858478/353835.terrain differ diff --git a/public/terrain/19/858478/353836.terrain b/public/terrain/19/858478/353836.terrain new file mode 100644 index 000000000..ba3103799 Binary files /dev/null and b/public/terrain/19/858478/353836.terrain differ diff --git a/public/terrain/19/858478/353837.terrain b/public/terrain/19/858478/353837.terrain new file mode 100644 index 000000000..732d7cda9 Binary files /dev/null and b/public/terrain/19/858478/353837.terrain differ diff --git a/public/terrain/19/858478/353838.terrain b/public/terrain/19/858478/353838.terrain new file mode 100644 index 000000000..4e6deddf6 Binary files /dev/null and b/public/terrain/19/858478/353838.terrain differ diff --git a/public/terrain/19/858478/353839.terrain b/public/terrain/19/858478/353839.terrain new file mode 100644 index 000000000..f07c79c36 Binary files /dev/null and b/public/terrain/19/858478/353839.terrain differ diff --git a/public/terrain/19/858478/353840.terrain b/public/terrain/19/858478/353840.terrain new file mode 100644 index 000000000..3620a026a Binary files /dev/null and b/public/terrain/19/858478/353840.terrain differ diff --git a/public/terrain/19/858478/353841.terrain b/public/terrain/19/858478/353841.terrain new file mode 100644 index 000000000..6eacf6194 Binary files /dev/null and b/public/terrain/19/858478/353841.terrain differ diff --git a/public/terrain/19/858478/353842.terrain b/public/terrain/19/858478/353842.terrain new file mode 100644 index 000000000..e9eec29b6 Binary files /dev/null and b/public/terrain/19/858478/353842.terrain differ diff --git a/public/terrain/19/858478/353843.terrain b/public/terrain/19/858478/353843.terrain new file mode 100644 index 000000000..0005b24d4 Binary files /dev/null and b/public/terrain/19/858478/353843.terrain differ diff --git a/public/terrain/19/858478/353844.terrain b/public/terrain/19/858478/353844.terrain new file mode 100644 index 000000000..5f2a88de0 Binary files /dev/null and b/public/terrain/19/858478/353844.terrain differ diff --git a/public/terrain/19/858478/353845.terrain b/public/terrain/19/858478/353845.terrain new file mode 100644 index 000000000..f33cd334d Binary files /dev/null and b/public/terrain/19/858478/353845.terrain differ diff --git a/public/terrain/19/858478/353846.terrain b/public/terrain/19/858478/353846.terrain new file mode 100644 index 000000000..1eaec05c8 Binary files /dev/null and b/public/terrain/19/858478/353846.terrain differ diff --git a/public/terrain/19/858478/353847.terrain b/public/terrain/19/858478/353847.terrain new file mode 100644 index 000000000..71e693722 Binary files /dev/null and b/public/terrain/19/858478/353847.terrain differ diff --git a/public/terrain/19/858478/353848.terrain b/public/terrain/19/858478/353848.terrain new file mode 100644 index 000000000..13c640ba6 Binary files /dev/null and b/public/terrain/19/858478/353848.terrain differ diff --git a/public/terrain/19/858478/353849.terrain b/public/terrain/19/858478/353849.terrain new file mode 100644 index 000000000..baef80827 Binary files /dev/null and b/public/terrain/19/858478/353849.terrain differ diff --git a/public/terrain/19/858478/353850.terrain b/public/terrain/19/858478/353850.terrain new file mode 100644 index 000000000..640b40c71 Binary files /dev/null and b/public/terrain/19/858478/353850.terrain differ diff --git a/public/terrain/19/858478/353851.terrain b/public/terrain/19/858478/353851.terrain new file mode 100644 index 000000000..d06375653 Binary files /dev/null and b/public/terrain/19/858478/353851.terrain differ diff --git a/public/terrain/19/858478/353852.terrain b/public/terrain/19/858478/353852.terrain new file mode 100644 index 000000000..8489ce5ff Binary files /dev/null and b/public/terrain/19/858478/353852.terrain differ diff --git a/public/terrain/19/858478/353853.terrain b/public/terrain/19/858478/353853.terrain new file mode 100644 index 000000000..21427b35a Binary files /dev/null and b/public/terrain/19/858478/353853.terrain differ diff --git a/public/terrain/19/858478/353854.terrain b/public/terrain/19/858478/353854.terrain new file mode 100644 index 000000000..28dd2493b Binary files /dev/null and b/public/terrain/19/858478/353854.terrain differ diff --git a/public/terrain/19/858478/353855.terrain b/public/terrain/19/858478/353855.terrain new file mode 100644 index 000000000..36bbc832c Binary files /dev/null and b/public/terrain/19/858478/353855.terrain differ diff --git a/public/terrain/19/858478/353856.terrain b/public/terrain/19/858478/353856.terrain new file mode 100644 index 000000000..4959494e2 Binary files /dev/null and b/public/terrain/19/858478/353856.terrain differ diff --git a/public/terrain/19/858478/353857.terrain b/public/terrain/19/858478/353857.terrain new file mode 100644 index 000000000..864ded4ab Binary files /dev/null and b/public/terrain/19/858478/353857.terrain differ diff --git a/public/terrain/19/858478/353858.terrain b/public/terrain/19/858478/353858.terrain new file mode 100644 index 000000000..a230c58cd Binary files /dev/null and b/public/terrain/19/858478/353858.terrain differ diff --git a/public/terrain/19/858478/353859.terrain b/public/terrain/19/858478/353859.terrain new file mode 100644 index 000000000..63538e75c Binary files /dev/null and b/public/terrain/19/858478/353859.terrain differ diff --git a/public/terrain/19/858478/353860.terrain b/public/terrain/19/858478/353860.terrain new file mode 100644 index 000000000..505d4395d Binary files /dev/null and b/public/terrain/19/858478/353860.terrain differ diff --git a/public/terrain/19/858478/353861.terrain b/public/terrain/19/858478/353861.terrain new file mode 100644 index 000000000..a52fc4d33 Binary files /dev/null and b/public/terrain/19/858478/353861.terrain differ diff --git a/public/terrain/19/858478/353862.terrain b/public/terrain/19/858478/353862.terrain new file mode 100644 index 000000000..32c4421d3 Binary files /dev/null and b/public/terrain/19/858478/353862.terrain differ diff --git a/public/terrain/19/858478/353863.terrain b/public/terrain/19/858478/353863.terrain new file mode 100644 index 000000000..85ee38e24 Binary files /dev/null and b/public/terrain/19/858478/353863.terrain differ diff --git a/public/terrain/19/858478/353864.terrain b/public/terrain/19/858478/353864.terrain new file mode 100644 index 000000000..45efcc67b Binary files /dev/null and b/public/terrain/19/858478/353864.terrain differ diff --git a/public/terrain/19/858478/353865.terrain b/public/terrain/19/858478/353865.terrain new file mode 100644 index 000000000..03a91b4dc Binary files /dev/null and b/public/terrain/19/858478/353865.terrain differ diff --git a/public/terrain/19/858478/353866.terrain b/public/terrain/19/858478/353866.terrain new file mode 100644 index 000000000..ac33f4894 Binary files /dev/null and b/public/terrain/19/858478/353866.terrain differ diff --git a/public/terrain/19/858478/353867.terrain b/public/terrain/19/858478/353867.terrain new file mode 100644 index 000000000..66f784154 Binary files /dev/null and b/public/terrain/19/858478/353867.terrain differ diff --git a/public/terrain/19/858478/353868.terrain b/public/terrain/19/858478/353868.terrain new file mode 100644 index 000000000..720864c02 Binary files /dev/null and b/public/terrain/19/858478/353868.terrain differ diff --git a/public/terrain/19/858478/353869.terrain b/public/terrain/19/858478/353869.terrain new file mode 100644 index 000000000..70d27a5b4 Binary files /dev/null and b/public/terrain/19/858478/353869.terrain differ diff --git a/public/terrain/19/858478/353870.terrain b/public/terrain/19/858478/353870.terrain new file mode 100644 index 000000000..5df46c23f Binary files /dev/null and b/public/terrain/19/858478/353870.terrain differ diff --git a/public/terrain/19/858478/353871.terrain b/public/terrain/19/858478/353871.terrain new file mode 100644 index 000000000..882ad71fc Binary files /dev/null and b/public/terrain/19/858478/353871.terrain differ diff --git a/public/terrain/19/858478/353872.terrain b/public/terrain/19/858478/353872.terrain new file mode 100644 index 000000000..abb901856 Binary files /dev/null and b/public/terrain/19/858478/353872.terrain differ diff --git a/public/terrain/19/858478/353873.terrain b/public/terrain/19/858478/353873.terrain new file mode 100644 index 000000000..f03aa86e7 Binary files /dev/null and b/public/terrain/19/858478/353873.terrain differ diff --git a/public/terrain/19/858478/353874.terrain b/public/terrain/19/858478/353874.terrain new file mode 100644 index 000000000..c8a128c7f Binary files /dev/null and b/public/terrain/19/858478/353874.terrain differ diff --git a/public/terrain/19/858478/353875.terrain b/public/terrain/19/858478/353875.terrain new file mode 100644 index 000000000..32eba4162 Binary files /dev/null and b/public/terrain/19/858478/353875.terrain differ diff --git a/public/terrain/19/858478/353876.terrain b/public/terrain/19/858478/353876.terrain new file mode 100644 index 000000000..a5cad0693 Binary files /dev/null and b/public/terrain/19/858478/353876.terrain differ diff --git a/public/terrain/19/858478/353877.terrain b/public/terrain/19/858478/353877.terrain new file mode 100644 index 000000000..2e6ffe47e Binary files /dev/null and b/public/terrain/19/858478/353877.terrain differ diff --git a/public/terrain/19/858478/353878.terrain b/public/terrain/19/858478/353878.terrain new file mode 100644 index 000000000..3a6e634a5 Binary files /dev/null and b/public/terrain/19/858478/353878.terrain differ diff --git a/public/terrain/19/858478/353879.terrain b/public/terrain/19/858478/353879.terrain new file mode 100644 index 000000000..05d55a914 Binary files /dev/null and b/public/terrain/19/858478/353879.terrain differ diff --git a/public/terrain/19/858478/353880.terrain b/public/terrain/19/858478/353880.terrain new file mode 100644 index 000000000..2d7723bb3 Binary files /dev/null and b/public/terrain/19/858478/353880.terrain differ diff --git a/public/terrain/19/858478/353881.terrain b/public/terrain/19/858478/353881.terrain new file mode 100644 index 000000000..66ae7499f Binary files /dev/null and b/public/terrain/19/858478/353881.terrain differ diff --git a/public/terrain/19/858478/353882.terrain b/public/terrain/19/858478/353882.terrain new file mode 100644 index 000000000..845b28d82 Binary files /dev/null and b/public/terrain/19/858478/353882.terrain differ diff --git a/public/terrain/19/858478/353883.terrain b/public/terrain/19/858478/353883.terrain new file mode 100644 index 000000000..5dcc0be72 Binary files /dev/null and b/public/terrain/19/858478/353883.terrain differ diff --git a/public/terrain/19/858478/353884.terrain b/public/terrain/19/858478/353884.terrain new file mode 100644 index 000000000..3d61a69a7 Binary files /dev/null and b/public/terrain/19/858478/353884.terrain differ diff --git a/public/terrain/19/858478/353885.terrain b/public/terrain/19/858478/353885.terrain new file mode 100644 index 000000000..e49b96943 Binary files /dev/null and b/public/terrain/19/858478/353885.terrain differ diff --git a/public/terrain/19/858478/353886.terrain b/public/terrain/19/858478/353886.terrain new file mode 100644 index 000000000..024c9173d Binary files /dev/null and b/public/terrain/19/858478/353886.terrain differ diff --git a/public/terrain/19/858478/353887.terrain b/public/terrain/19/858478/353887.terrain new file mode 100644 index 000000000..fd8d9f140 Binary files /dev/null and b/public/terrain/19/858478/353887.terrain differ diff --git a/public/terrain/19/858478/353888.terrain b/public/terrain/19/858478/353888.terrain new file mode 100644 index 000000000..19301d9e9 Binary files /dev/null and b/public/terrain/19/858478/353888.terrain differ diff --git a/public/terrain/19/858478/353889.terrain b/public/terrain/19/858478/353889.terrain new file mode 100644 index 000000000..5b433ec09 Binary files /dev/null and b/public/terrain/19/858478/353889.terrain differ diff --git a/public/terrain/19/858478/353890.terrain b/public/terrain/19/858478/353890.terrain new file mode 100644 index 000000000..1f8bcb172 Binary files /dev/null and b/public/terrain/19/858478/353890.terrain differ diff --git a/public/terrain/19/858478/353891.terrain b/public/terrain/19/858478/353891.terrain new file mode 100644 index 000000000..c6ffde830 Binary files /dev/null and b/public/terrain/19/858478/353891.terrain differ diff --git a/public/terrain/19/858478/353892.terrain b/public/terrain/19/858478/353892.terrain new file mode 100644 index 000000000..f6413ccb7 Binary files /dev/null and b/public/terrain/19/858478/353892.terrain differ diff --git a/public/terrain/19/858478/353893.terrain b/public/terrain/19/858478/353893.terrain new file mode 100644 index 000000000..2e326b062 Binary files /dev/null and b/public/terrain/19/858478/353893.terrain differ diff --git a/public/terrain/19/858478/353894.terrain b/public/terrain/19/858478/353894.terrain new file mode 100644 index 000000000..7b7103f22 Binary files /dev/null and b/public/terrain/19/858478/353894.terrain differ diff --git a/public/terrain/19/858478/353895.terrain b/public/terrain/19/858478/353895.terrain new file mode 100644 index 000000000..a5eca2aba Binary files /dev/null and b/public/terrain/19/858478/353895.terrain differ diff --git a/public/terrain/19/858478/353896.terrain b/public/terrain/19/858478/353896.terrain new file mode 100644 index 000000000..ea3d6afc2 Binary files /dev/null and b/public/terrain/19/858478/353896.terrain differ diff --git a/public/terrain/19/858478/353897.terrain b/public/terrain/19/858478/353897.terrain new file mode 100644 index 000000000..9fb66b95a Binary files /dev/null and b/public/terrain/19/858478/353897.terrain differ diff --git a/public/terrain/19/858478/353898.terrain b/public/terrain/19/858478/353898.terrain new file mode 100644 index 000000000..52a26dded Binary files /dev/null and b/public/terrain/19/858478/353898.terrain differ diff --git a/public/terrain/19/858478/353899.terrain b/public/terrain/19/858478/353899.terrain new file mode 100644 index 000000000..854f45210 Binary files /dev/null and b/public/terrain/19/858478/353899.terrain differ diff --git a/public/terrain/19/858478/353900.terrain b/public/terrain/19/858478/353900.terrain new file mode 100644 index 000000000..ed7937aa6 Binary files /dev/null and b/public/terrain/19/858478/353900.terrain differ diff --git a/public/terrain/19/858478/353901.terrain b/public/terrain/19/858478/353901.terrain new file mode 100644 index 000000000..17e338980 Binary files /dev/null and b/public/terrain/19/858478/353901.terrain differ diff --git a/public/terrain/19/858478/353902.terrain b/public/terrain/19/858478/353902.terrain new file mode 100644 index 000000000..d7affee4c Binary files /dev/null and b/public/terrain/19/858478/353902.terrain differ diff --git a/public/terrain/19/858478/353903.terrain b/public/terrain/19/858478/353903.terrain new file mode 100644 index 000000000..b1faee3fa Binary files /dev/null and b/public/terrain/19/858478/353903.terrain differ diff --git a/public/terrain/19/858478/353904.terrain b/public/terrain/19/858478/353904.terrain new file mode 100644 index 000000000..1ad43b289 Binary files /dev/null and b/public/terrain/19/858478/353904.terrain differ diff --git a/public/terrain/19/858478/353905.terrain b/public/terrain/19/858478/353905.terrain new file mode 100644 index 000000000..86be83344 Binary files /dev/null and b/public/terrain/19/858478/353905.terrain differ diff --git a/public/terrain/19/858478/353906.terrain b/public/terrain/19/858478/353906.terrain new file mode 100644 index 000000000..e3d6752d8 Binary files /dev/null and b/public/terrain/19/858478/353906.terrain differ diff --git a/public/terrain/19/858478/353907.terrain b/public/terrain/19/858478/353907.terrain new file mode 100644 index 000000000..f83de829d Binary files /dev/null and b/public/terrain/19/858478/353907.terrain differ diff --git a/public/terrain/19/858478/353908.terrain b/public/terrain/19/858478/353908.terrain new file mode 100644 index 000000000..6b9e48fff Binary files /dev/null and b/public/terrain/19/858478/353908.terrain differ diff --git a/public/terrain/19/858478/353909.terrain b/public/terrain/19/858478/353909.terrain new file mode 100644 index 000000000..26e70cf41 Binary files /dev/null and b/public/terrain/19/858478/353909.terrain differ diff --git a/public/terrain/19/858478/353910.terrain b/public/terrain/19/858478/353910.terrain new file mode 100644 index 000000000..a368e64b3 Binary files /dev/null and b/public/terrain/19/858478/353910.terrain differ diff --git a/public/terrain/19/858478/353911.terrain b/public/terrain/19/858478/353911.terrain new file mode 100644 index 000000000..b69ecd10f Binary files /dev/null and b/public/terrain/19/858478/353911.terrain differ diff --git a/public/terrain/19/858478/353912.terrain b/public/terrain/19/858478/353912.terrain new file mode 100644 index 000000000..99f4476c2 Binary files /dev/null and b/public/terrain/19/858478/353912.terrain differ diff --git a/public/terrain/19/858478/353913.terrain b/public/terrain/19/858478/353913.terrain new file mode 100644 index 000000000..a5dd3ae74 Binary files /dev/null and b/public/terrain/19/858478/353913.terrain differ diff --git a/public/terrain/19/858478/353914.terrain b/public/terrain/19/858478/353914.terrain new file mode 100644 index 000000000..ae6420916 Binary files /dev/null and b/public/terrain/19/858478/353914.terrain differ diff --git a/public/terrain/19/858478/353915.terrain b/public/terrain/19/858478/353915.terrain new file mode 100644 index 000000000..4b537baf5 Binary files /dev/null and b/public/terrain/19/858478/353915.terrain differ diff --git a/public/terrain/19/858478/353916.terrain b/public/terrain/19/858478/353916.terrain new file mode 100644 index 000000000..dacf05637 Binary files /dev/null and b/public/terrain/19/858478/353916.terrain differ diff --git a/public/terrain/19/858478/353917.terrain b/public/terrain/19/858478/353917.terrain new file mode 100644 index 000000000..2b8653bdb Binary files /dev/null and b/public/terrain/19/858478/353917.terrain differ diff --git a/public/terrain/19/858478/353918.terrain b/public/terrain/19/858478/353918.terrain new file mode 100644 index 000000000..7da46787d Binary files /dev/null and b/public/terrain/19/858478/353918.terrain differ diff --git a/public/terrain/19/858478/353919.terrain b/public/terrain/19/858478/353919.terrain new file mode 100644 index 000000000..9099805ae Binary files /dev/null and b/public/terrain/19/858478/353919.terrain differ diff --git a/public/terrain/19/858478/353920.terrain b/public/terrain/19/858478/353920.terrain new file mode 100644 index 000000000..8a6ca640d Binary files /dev/null and b/public/terrain/19/858478/353920.terrain differ diff --git a/public/terrain/19/858478/353921.terrain b/public/terrain/19/858478/353921.terrain new file mode 100644 index 000000000..55db0339c Binary files /dev/null and b/public/terrain/19/858478/353921.terrain differ diff --git a/public/terrain/19/858478/353922.terrain b/public/terrain/19/858478/353922.terrain new file mode 100644 index 000000000..a13b8bd75 Binary files /dev/null and b/public/terrain/19/858478/353922.terrain differ diff --git a/public/terrain/19/858478/353923.terrain b/public/terrain/19/858478/353923.terrain new file mode 100644 index 000000000..21f096757 Binary files /dev/null and b/public/terrain/19/858478/353923.terrain differ diff --git a/public/terrain/19/858478/353924.terrain b/public/terrain/19/858478/353924.terrain new file mode 100644 index 000000000..be8a4f77e Binary files /dev/null and b/public/terrain/19/858478/353924.terrain differ diff --git a/public/terrain/19/858478/353925.terrain b/public/terrain/19/858478/353925.terrain new file mode 100644 index 000000000..b3f1ed634 Binary files /dev/null and b/public/terrain/19/858478/353925.terrain differ diff --git a/public/terrain/19/858478/353926.terrain b/public/terrain/19/858478/353926.terrain new file mode 100644 index 000000000..ef8cb2895 Binary files /dev/null and b/public/terrain/19/858478/353926.terrain differ diff --git a/public/terrain/19/858478/353927.terrain b/public/terrain/19/858478/353927.terrain new file mode 100644 index 000000000..2fa4eeda6 Binary files /dev/null and b/public/terrain/19/858478/353927.terrain differ diff --git a/public/terrain/19/858478/353928.terrain b/public/terrain/19/858478/353928.terrain new file mode 100644 index 000000000..047864b14 Binary files /dev/null and b/public/terrain/19/858478/353928.terrain differ diff --git a/public/terrain/19/858478/353929.terrain b/public/terrain/19/858478/353929.terrain new file mode 100644 index 000000000..3a5da70a3 Binary files /dev/null and b/public/terrain/19/858478/353929.terrain differ diff --git a/public/terrain/19/858478/353930.terrain b/public/terrain/19/858478/353930.terrain new file mode 100644 index 000000000..1f1c27c69 Binary files /dev/null and b/public/terrain/19/858478/353930.terrain differ diff --git a/public/terrain/19/858478/353931.terrain b/public/terrain/19/858478/353931.terrain new file mode 100644 index 000000000..221e63bf3 Binary files /dev/null and b/public/terrain/19/858478/353931.terrain differ diff --git a/public/terrain/19/858478/353932.terrain b/public/terrain/19/858478/353932.terrain new file mode 100644 index 000000000..39d3a80e4 Binary files /dev/null and b/public/terrain/19/858478/353932.terrain differ diff --git a/public/terrain/19/858478/353933.terrain b/public/terrain/19/858478/353933.terrain new file mode 100644 index 000000000..58423d78a Binary files /dev/null and b/public/terrain/19/858478/353933.terrain differ diff --git a/public/terrain/19/858478/353934.terrain b/public/terrain/19/858478/353934.terrain new file mode 100644 index 000000000..73e35dada Binary files /dev/null and b/public/terrain/19/858478/353934.terrain differ diff --git a/public/terrain/19/858478/353935.terrain b/public/terrain/19/858478/353935.terrain new file mode 100644 index 000000000..2d475def4 Binary files /dev/null and b/public/terrain/19/858478/353935.terrain differ diff --git a/public/terrain/19/858478/353936.terrain b/public/terrain/19/858478/353936.terrain new file mode 100644 index 000000000..ff194cf5a Binary files /dev/null and b/public/terrain/19/858478/353936.terrain differ diff --git a/public/terrain/19/858478/353937.terrain b/public/terrain/19/858478/353937.terrain new file mode 100644 index 000000000..422fb7210 Binary files /dev/null and b/public/terrain/19/858478/353937.terrain differ diff --git a/public/terrain/19/858478/353938.terrain b/public/terrain/19/858478/353938.terrain new file mode 100644 index 000000000..5625650ed Binary files /dev/null and b/public/terrain/19/858478/353938.terrain differ diff --git a/public/terrain/19/858478/353939.terrain b/public/terrain/19/858478/353939.terrain new file mode 100644 index 000000000..0ab2d146e Binary files /dev/null and b/public/terrain/19/858478/353939.terrain differ diff --git a/public/terrain/19/858478/353940.terrain b/public/terrain/19/858478/353940.terrain new file mode 100644 index 000000000..a1347a21f Binary files /dev/null and b/public/terrain/19/858478/353940.terrain differ diff --git a/public/terrain/19/858478/353941.terrain b/public/terrain/19/858478/353941.terrain new file mode 100644 index 000000000..cde9d7540 Binary files /dev/null and b/public/terrain/19/858478/353941.terrain differ diff --git a/public/terrain/19/858478/353942.terrain b/public/terrain/19/858478/353942.terrain new file mode 100644 index 000000000..668d99346 Binary files /dev/null and b/public/terrain/19/858478/353942.terrain differ diff --git a/public/terrain/19/858478/353943.terrain b/public/terrain/19/858478/353943.terrain new file mode 100644 index 000000000..9d0bb69b2 Binary files /dev/null and b/public/terrain/19/858478/353943.terrain differ diff --git a/public/terrain/19/858478/353944.terrain b/public/terrain/19/858478/353944.terrain new file mode 100644 index 000000000..12f686a6a Binary files /dev/null and b/public/terrain/19/858478/353944.terrain differ diff --git a/public/terrain/19/858478/353945.terrain b/public/terrain/19/858478/353945.terrain new file mode 100644 index 000000000..3c76ec446 Binary files /dev/null and b/public/terrain/19/858478/353945.terrain differ diff --git a/public/terrain/19/858478/353946.terrain b/public/terrain/19/858478/353946.terrain new file mode 100644 index 000000000..0d01fbc92 Binary files /dev/null and b/public/terrain/19/858478/353946.terrain differ diff --git a/public/terrain/19/858478/353947.terrain b/public/terrain/19/858478/353947.terrain new file mode 100644 index 000000000..6940003b0 Binary files /dev/null and b/public/terrain/19/858478/353947.terrain differ diff --git a/public/terrain/19/858478/353948.terrain b/public/terrain/19/858478/353948.terrain new file mode 100644 index 000000000..5c6427cc6 Binary files /dev/null and b/public/terrain/19/858478/353948.terrain differ diff --git a/public/terrain/19/858478/353949.terrain b/public/terrain/19/858478/353949.terrain new file mode 100644 index 000000000..aed7c2df0 Binary files /dev/null and b/public/terrain/19/858478/353949.terrain differ diff --git a/public/terrain/19/858478/353950.terrain b/public/terrain/19/858478/353950.terrain new file mode 100644 index 000000000..5d7564f2a Binary files /dev/null and b/public/terrain/19/858478/353950.terrain differ diff --git a/public/terrain/19/858478/353951.terrain b/public/terrain/19/858478/353951.terrain new file mode 100644 index 000000000..6a48b22a5 Binary files /dev/null and b/public/terrain/19/858478/353951.terrain differ diff --git a/public/terrain/19/858478/353952.terrain b/public/terrain/19/858478/353952.terrain new file mode 100644 index 000000000..505409957 Binary files /dev/null and b/public/terrain/19/858478/353952.terrain differ diff --git a/public/terrain/19/858478/353953.terrain b/public/terrain/19/858478/353953.terrain new file mode 100644 index 000000000..8165796cf Binary files /dev/null and b/public/terrain/19/858478/353953.terrain differ diff --git a/public/terrain/19/858478/353954.terrain b/public/terrain/19/858478/353954.terrain new file mode 100644 index 000000000..972f6a536 Binary files /dev/null and b/public/terrain/19/858478/353954.terrain differ diff --git a/public/terrain/19/858478/353955.terrain b/public/terrain/19/858478/353955.terrain new file mode 100644 index 000000000..e534b5cfa Binary files /dev/null and b/public/terrain/19/858478/353955.terrain differ diff --git a/public/terrain/19/858478/353956.terrain b/public/terrain/19/858478/353956.terrain new file mode 100644 index 000000000..efbf161c2 Binary files /dev/null and b/public/terrain/19/858478/353956.terrain differ diff --git a/public/terrain/19/858478/353957.terrain b/public/terrain/19/858478/353957.terrain new file mode 100644 index 000000000..0b76e5e7a Binary files /dev/null and b/public/terrain/19/858478/353957.terrain differ diff --git a/public/terrain/19/858478/353958.terrain b/public/terrain/19/858478/353958.terrain new file mode 100644 index 000000000..8d791e3fc Binary files /dev/null and b/public/terrain/19/858478/353958.terrain differ diff --git a/public/terrain/19/858478/353959.terrain b/public/terrain/19/858478/353959.terrain new file mode 100644 index 000000000..dd9121a28 Binary files /dev/null and b/public/terrain/19/858478/353959.terrain differ diff --git a/public/terrain/19/858478/353960.terrain b/public/terrain/19/858478/353960.terrain new file mode 100644 index 000000000..371c1db7c Binary files /dev/null and b/public/terrain/19/858478/353960.terrain differ diff --git a/public/terrain/19/858478/353961.terrain b/public/terrain/19/858478/353961.terrain new file mode 100644 index 000000000..c889f9b72 Binary files /dev/null and b/public/terrain/19/858478/353961.terrain differ diff --git a/public/terrain/19/858478/353962.terrain b/public/terrain/19/858478/353962.terrain new file mode 100644 index 000000000..55238e30c Binary files /dev/null and b/public/terrain/19/858478/353962.terrain differ diff --git a/public/terrain/19/858478/353963.terrain b/public/terrain/19/858478/353963.terrain new file mode 100644 index 000000000..51e8b40a6 Binary files /dev/null and b/public/terrain/19/858478/353963.terrain differ diff --git a/public/terrain/19/858478/353964.terrain b/public/terrain/19/858478/353964.terrain new file mode 100644 index 000000000..c06fbe5bd Binary files /dev/null and b/public/terrain/19/858478/353964.terrain differ diff --git a/public/terrain/19/858478/353965.terrain b/public/terrain/19/858478/353965.terrain new file mode 100644 index 000000000..f3de995e9 Binary files /dev/null and b/public/terrain/19/858478/353965.terrain differ diff --git a/public/terrain/19/858478/353966.terrain b/public/terrain/19/858478/353966.terrain new file mode 100644 index 000000000..2f878c22d Binary files /dev/null and b/public/terrain/19/858478/353966.terrain differ diff --git a/public/terrain/19/858478/353967.terrain b/public/terrain/19/858478/353967.terrain new file mode 100644 index 000000000..9dc2325a6 Binary files /dev/null and b/public/terrain/19/858478/353967.terrain differ diff --git a/public/terrain/19/858478/353968.terrain b/public/terrain/19/858478/353968.terrain new file mode 100644 index 000000000..80923ef73 Binary files /dev/null and b/public/terrain/19/858478/353968.terrain differ diff --git a/public/terrain/19/858478/353969.terrain b/public/terrain/19/858478/353969.terrain new file mode 100644 index 000000000..488c5a254 Binary files /dev/null and b/public/terrain/19/858478/353969.terrain differ diff --git a/public/terrain/19/858478/353970.terrain b/public/terrain/19/858478/353970.terrain new file mode 100644 index 000000000..203ad1f9d Binary files /dev/null and b/public/terrain/19/858478/353970.terrain differ diff --git a/public/terrain/19/858478/353971.terrain b/public/terrain/19/858478/353971.terrain new file mode 100644 index 000000000..9fc6141a6 Binary files /dev/null and b/public/terrain/19/858478/353971.terrain differ diff --git a/public/terrain/19/858478/353972.terrain b/public/terrain/19/858478/353972.terrain new file mode 100644 index 000000000..5ae3378e5 Binary files /dev/null and b/public/terrain/19/858478/353972.terrain differ diff --git a/public/terrain/19/858478/353973.terrain b/public/terrain/19/858478/353973.terrain new file mode 100644 index 000000000..271c73de5 Binary files /dev/null and b/public/terrain/19/858478/353973.terrain differ diff --git a/public/terrain/19/858478/353974.terrain b/public/terrain/19/858478/353974.terrain new file mode 100644 index 000000000..3aad933bb Binary files /dev/null and b/public/terrain/19/858478/353974.terrain differ diff --git a/public/terrain/19/858478/353975.terrain b/public/terrain/19/858478/353975.terrain new file mode 100644 index 000000000..c3e0d82aa Binary files /dev/null and b/public/terrain/19/858478/353975.terrain differ diff --git a/public/terrain/19/858478/353976.terrain b/public/terrain/19/858478/353976.terrain new file mode 100644 index 000000000..c7e5c4f3f Binary files /dev/null and b/public/terrain/19/858478/353976.terrain differ diff --git a/public/terrain/19/858478/353977.terrain b/public/terrain/19/858478/353977.terrain new file mode 100644 index 000000000..e6b91f853 Binary files /dev/null and b/public/terrain/19/858478/353977.terrain differ diff --git a/public/terrain/19/858478/353978.terrain b/public/terrain/19/858478/353978.terrain new file mode 100644 index 000000000..e73ede959 Binary files /dev/null and b/public/terrain/19/858478/353978.terrain differ diff --git a/public/terrain/19/858478/353979.terrain b/public/terrain/19/858478/353979.terrain new file mode 100644 index 000000000..f87f57faf Binary files /dev/null and b/public/terrain/19/858478/353979.terrain differ diff --git a/public/terrain/19/858478/353980.terrain b/public/terrain/19/858478/353980.terrain new file mode 100644 index 000000000..52f52c218 Binary files /dev/null and b/public/terrain/19/858478/353980.terrain differ diff --git a/public/terrain/19/858478/353981.terrain b/public/terrain/19/858478/353981.terrain new file mode 100644 index 000000000..4ec6d90ed Binary files /dev/null and b/public/terrain/19/858478/353981.terrain differ diff --git a/public/terrain/19/858478/353982.terrain b/public/terrain/19/858478/353982.terrain new file mode 100644 index 000000000..9bbbf414d Binary files /dev/null and b/public/terrain/19/858478/353982.terrain differ diff --git a/public/terrain/19/858478/353983.terrain b/public/terrain/19/858478/353983.terrain new file mode 100644 index 000000000..21bd59f42 Binary files /dev/null and b/public/terrain/19/858478/353983.terrain differ diff --git a/public/terrain/19/858478/353984.terrain b/public/terrain/19/858478/353984.terrain new file mode 100644 index 000000000..9e4e0eb0a Binary files /dev/null and b/public/terrain/19/858478/353984.terrain differ diff --git a/public/terrain/19/858478/353985.terrain b/public/terrain/19/858478/353985.terrain new file mode 100644 index 000000000..101795c0c Binary files /dev/null and b/public/terrain/19/858478/353985.terrain differ diff --git a/public/terrain/19/858478/353986.terrain b/public/terrain/19/858478/353986.terrain new file mode 100644 index 000000000..de1aa7219 Binary files /dev/null and b/public/terrain/19/858478/353986.terrain differ diff --git a/public/terrain/19/858478/353987.terrain b/public/terrain/19/858478/353987.terrain new file mode 100644 index 000000000..63b9819e9 Binary files /dev/null and b/public/terrain/19/858478/353987.terrain differ diff --git a/public/terrain/19/858478/353988.terrain b/public/terrain/19/858478/353988.terrain new file mode 100644 index 000000000..b391ad8e0 Binary files /dev/null and b/public/terrain/19/858478/353988.terrain differ diff --git a/public/terrain/19/858478/353989.terrain b/public/terrain/19/858478/353989.terrain new file mode 100644 index 000000000..294db7915 Binary files /dev/null and b/public/terrain/19/858478/353989.terrain differ diff --git a/public/terrain/19/858478/353990.terrain b/public/terrain/19/858478/353990.terrain new file mode 100644 index 000000000..f3e1183f5 Binary files /dev/null and b/public/terrain/19/858478/353990.terrain differ diff --git a/public/terrain/19/858478/353991.terrain b/public/terrain/19/858478/353991.terrain new file mode 100644 index 000000000..e567e96f4 Binary files /dev/null and b/public/terrain/19/858478/353991.terrain differ diff --git a/public/terrain/19/858478/353992.terrain b/public/terrain/19/858478/353992.terrain new file mode 100644 index 000000000..55b7feac2 Binary files /dev/null and b/public/terrain/19/858478/353992.terrain differ diff --git a/public/terrain/19/858478/353993.terrain b/public/terrain/19/858478/353993.terrain new file mode 100644 index 000000000..e382d3b2e Binary files /dev/null and b/public/terrain/19/858478/353993.terrain differ diff --git a/public/terrain/19/858478/353994.terrain b/public/terrain/19/858478/353994.terrain new file mode 100644 index 000000000..f70163b36 Binary files /dev/null and b/public/terrain/19/858478/353994.terrain differ diff --git a/public/terrain/19/858478/353995.terrain b/public/terrain/19/858478/353995.terrain new file mode 100644 index 000000000..8eb88f7ae Binary files /dev/null and b/public/terrain/19/858478/353995.terrain differ diff --git a/public/terrain/19/858478/353996.terrain b/public/terrain/19/858478/353996.terrain new file mode 100644 index 000000000..05f8d4f6c Binary files /dev/null and b/public/terrain/19/858478/353996.terrain differ diff --git a/public/terrain/19/858478/353997.terrain b/public/terrain/19/858478/353997.terrain new file mode 100644 index 000000000..8ec1f8ab9 Binary files /dev/null and b/public/terrain/19/858478/353997.terrain differ diff --git a/public/terrain/19/858478/353998.terrain b/public/terrain/19/858478/353998.terrain new file mode 100644 index 000000000..3b83e8177 Binary files /dev/null and b/public/terrain/19/858478/353998.terrain differ diff --git a/public/terrain/19/858478/353999.terrain b/public/terrain/19/858478/353999.terrain new file mode 100644 index 000000000..7753d57d0 Binary files /dev/null and b/public/terrain/19/858478/353999.terrain differ diff --git a/public/terrain/19/858478/354000.terrain b/public/terrain/19/858478/354000.terrain new file mode 100644 index 000000000..5982f221d Binary files /dev/null and b/public/terrain/19/858478/354000.terrain differ diff --git a/public/terrain/19/858478/354001.terrain b/public/terrain/19/858478/354001.terrain new file mode 100644 index 000000000..e7bc27dba Binary files /dev/null and b/public/terrain/19/858478/354001.terrain differ diff --git a/public/terrain/19/858478/354002.terrain b/public/terrain/19/858478/354002.terrain new file mode 100644 index 000000000..1c4b44cea Binary files /dev/null and b/public/terrain/19/858478/354002.terrain differ diff --git a/public/terrain/19/858478/354003.terrain b/public/terrain/19/858478/354003.terrain new file mode 100644 index 000000000..8ff6d24ef Binary files /dev/null and b/public/terrain/19/858478/354003.terrain differ diff --git a/public/terrain/19/858478/354004.terrain b/public/terrain/19/858478/354004.terrain new file mode 100644 index 000000000..b9b043dcf Binary files /dev/null and b/public/terrain/19/858478/354004.terrain differ diff --git a/public/terrain/19/858478/354005.terrain b/public/terrain/19/858478/354005.terrain new file mode 100644 index 000000000..853df6222 Binary files /dev/null and b/public/terrain/19/858478/354005.terrain differ diff --git a/public/terrain/19/858478/354006.terrain b/public/terrain/19/858478/354006.terrain new file mode 100644 index 000000000..b3d1ec82d Binary files /dev/null and b/public/terrain/19/858478/354006.terrain differ diff --git a/public/terrain/19/858478/354007.terrain b/public/terrain/19/858478/354007.terrain new file mode 100644 index 000000000..3cd98a6c6 Binary files /dev/null and b/public/terrain/19/858478/354007.terrain differ diff --git a/public/terrain/19/858478/354008.terrain b/public/terrain/19/858478/354008.terrain new file mode 100644 index 000000000..5ec54ab21 Binary files /dev/null and b/public/terrain/19/858478/354008.terrain differ diff --git a/public/terrain/19/858478/354009.terrain b/public/terrain/19/858478/354009.terrain new file mode 100644 index 000000000..c1872b515 Binary files /dev/null and b/public/terrain/19/858478/354009.terrain differ diff --git a/public/terrain/19/858478/354010.terrain b/public/terrain/19/858478/354010.terrain new file mode 100644 index 000000000..8fe0d0381 Binary files /dev/null and b/public/terrain/19/858478/354010.terrain differ diff --git a/public/terrain/19/858478/354011.terrain b/public/terrain/19/858478/354011.terrain new file mode 100644 index 000000000..c379dd883 Binary files /dev/null and b/public/terrain/19/858478/354011.terrain differ diff --git a/public/terrain/19/858478/354012.terrain b/public/terrain/19/858478/354012.terrain new file mode 100644 index 000000000..2c6e4b57d Binary files /dev/null and b/public/terrain/19/858478/354012.terrain differ diff --git a/public/terrain/19/858478/354013.terrain b/public/terrain/19/858478/354013.terrain new file mode 100644 index 000000000..51ae0770b Binary files /dev/null and b/public/terrain/19/858478/354013.terrain differ diff --git a/public/terrain/19/858478/354014.terrain b/public/terrain/19/858478/354014.terrain new file mode 100644 index 000000000..fc332b417 Binary files /dev/null and b/public/terrain/19/858478/354014.terrain differ diff --git a/public/terrain/19/858478/354015.terrain b/public/terrain/19/858478/354015.terrain new file mode 100644 index 000000000..383feca7a Binary files /dev/null and b/public/terrain/19/858478/354015.terrain differ diff --git a/public/terrain/19/858478/354016.terrain b/public/terrain/19/858478/354016.terrain new file mode 100644 index 000000000..7d636b3ec Binary files /dev/null and b/public/terrain/19/858478/354016.terrain differ diff --git a/public/terrain/19/858478/354017.terrain b/public/terrain/19/858478/354017.terrain new file mode 100644 index 000000000..a219fd88c Binary files /dev/null and b/public/terrain/19/858478/354017.terrain differ diff --git a/public/terrain/19/858478/354018.terrain b/public/terrain/19/858478/354018.terrain new file mode 100644 index 000000000..1f1011748 Binary files /dev/null and b/public/terrain/19/858478/354018.terrain differ diff --git a/public/terrain/19/858478/354019.terrain b/public/terrain/19/858478/354019.terrain new file mode 100644 index 000000000..b4de452b7 Binary files /dev/null and b/public/terrain/19/858478/354019.terrain differ diff --git a/public/terrain/19/858478/354020.terrain b/public/terrain/19/858478/354020.terrain new file mode 100644 index 000000000..201a190c7 Binary files /dev/null and b/public/terrain/19/858478/354020.terrain differ diff --git a/public/terrain/19/858478/354021.terrain b/public/terrain/19/858478/354021.terrain new file mode 100644 index 000000000..174229fa3 Binary files /dev/null and b/public/terrain/19/858478/354021.terrain differ diff --git a/public/terrain/19/858478/354022.terrain b/public/terrain/19/858478/354022.terrain new file mode 100644 index 000000000..a0cd918f0 Binary files /dev/null and b/public/terrain/19/858478/354022.terrain differ diff --git a/public/terrain/19/858478/354023.terrain b/public/terrain/19/858478/354023.terrain new file mode 100644 index 000000000..0d4ad3a52 Binary files /dev/null and b/public/terrain/19/858478/354023.terrain differ diff --git a/public/terrain/19/858478/354024.terrain b/public/terrain/19/858478/354024.terrain new file mode 100644 index 000000000..73aee1a62 Binary files /dev/null and b/public/terrain/19/858478/354024.terrain differ diff --git a/public/terrain/19/858478/354025.terrain b/public/terrain/19/858478/354025.terrain new file mode 100644 index 000000000..0182e4a5f Binary files /dev/null and b/public/terrain/19/858478/354025.terrain differ diff --git a/public/terrain/19/858478/354026.terrain b/public/terrain/19/858478/354026.terrain new file mode 100644 index 000000000..55bf00713 Binary files /dev/null and b/public/terrain/19/858478/354026.terrain differ diff --git a/public/terrain/19/858478/354027.terrain b/public/terrain/19/858478/354027.terrain new file mode 100644 index 000000000..e6b164850 Binary files /dev/null and b/public/terrain/19/858478/354027.terrain differ diff --git a/public/terrain/19/858478/354028.terrain b/public/terrain/19/858478/354028.terrain new file mode 100644 index 000000000..e8476aceb Binary files /dev/null and b/public/terrain/19/858478/354028.terrain differ diff --git a/public/terrain/19/858478/354029.terrain b/public/terrain/19/858478/354029.terrain new file mode 100644 index 000000000..a566e018e Binary files /dev/null and b/public/terrain/19/858478/354029.terrain differ diff --git a/public/terrain/19/858478/354030.terrain b/public/terrain/19/858478/354030.terrain new file mode 100644 index 000000000..63ed5f6a5 Binary files /dev/null and b/public/terrain/19/858478/354030.terrain differ diff --git a/public/terrain/19/858478/354031.terrain b/public/terrain/19/858478/354031.terrain new file mode 100644 index 000000000..8712d18c1 Binary files /dev/null and b/public/terrain/19/858478/354031.terrain differ diff --git a/public/terrain/19/858478/354032.terrain b/public/terrain/19/858478/354032.terrain new file mode 100644 index 000000000..a2116085e Binary files /dev/null and b/public/terrain/19/858478/354032.terrain differ diff --git a/public/terrain/19/858478/354033.terrain b/public/terrain/19/858478/354033.terrain new file mode 100644 index 000000000..5189d2e25 Binary files /dev/null and b/public/terrain/19/858478/354033.terrain differ diff --git a/public/terrain/19/858478/354034.terrain b/public/terrain/19/858478/354034.terrain new file mode 100644 index 000000000..32941f826 Binary files /dev/null and b/public/terrain/19/858478/354034.terrain differ diff --git a/public/terrain/19/858478/354035.terrain b/public/terrain/19/858478/354035.terrain new file mode 100644 index 000000000..cada1b8e2 Binary files /dev/null and b/public/terrain/19/858478/354035.terrain differ diff --git a/public/terrain/19/858478/354036.terrain b/public/terrain/19/858478/354036.terrain new file mode 100644 index 000000000..1bdf07082 Binary files /dev/null and b/public/terrain/19/858478/354036.terrain differ diff --git a/public/terrain/19/858478/354037.terrain b/public/terrain/19/858478/354037.terrain new file mode 100644 index 000000000..14c67bc8a Binary files /dev/null and b/public/terrain/19/858478/354037.terrain differ diff --git a/public/terrain/19/858478/354038.terrain b/public/terrain/19/858478/354038.terrain new file mode 100644 index 000000000..ece148638 Binary files /dev/null and b/public/terrain/19/858478/354038.terrain differ diff --git a/public/terrain/19/858478/354039.terrain b/public/terrain/19/858478/354039.terrain new file mode 100644 index 000000000..1f5a03078 Binary files /dev/null and b/public/terrain/19/858478/354039.terrain differ diff --git a/public/terrain/19/858478/354040.terrain b/public/terrain/19/858478/354040.terrain new file mode 100644 index 000000000..23570e59c Binary files /dev/null and b/public/terrain/19/858478/354040.terrain differ diff --git a/public/terrain/19/858478/354041.terrain b/public/terrain/19/858478/354041.terrain new file mode 100644 index 000000000..859679b44 Binary files /dev/null and b/public/terrain/19/858478/354041.terrain differ diff --git a/public/terrain/19/858478/354042.terrain b/public/terrain/19/858478/354042.terrain new file mode 100644 index 000000000..8f08d10dc Binary files /dev/null and b/public/terrain/19/858478/354042.terrain differ diff --git a/public/terrain/19/858478/354043.terrain b/public/terrain/19/858478/354043.terrain new file mode 100644 index 000000000..f8e86a16f Binary files /dev/null and b/public/terrain/19/858478/354043.terrain differ diff --git a/public/terrain/19/858478/354044.terrain b/public/terrain/19/858478/354044.terrain new file mode 100644 index 000000000..da55cd433 Binary files /dev/null and b/public/terrain/19/858478/354044.terrain differ diff --git a/public/terrain/19/858478/354045.terrain b/public/terrain/19/858478/354045.terrain new file mode 100644 index 000000000..e5c9b666d Binary files /dev/null and b/public/terrain/19/858478/354045.terrain differ diff --git a/public/terrain/19/858478/354046.terrain b/public/terrain/19/858478/354046.terrain new file mode 100644 index 000000000..c7fee7397 Binary files /dev/null and b/public/terrain/19/858478/354046.terrain differ diff --git a/public/terrain/19/858478/354047.terrain b/public/terrain/19/858478/354047.terrain new file mode 100644 index 000000000..85651a0c5 Binary files /dev/null and b/public/terrain/19/858478/354047.terrain differ diff --git a/public/terrain/19/858478/354048.terrain b/public/terrain/19/858478/354048.terrain new file mode 100644 index 000000000..5b3435fce Binary files /dev/null and b/public/terrain/19/858478/354048.terrain differ diff --git a/public/terrain/19/858478/354049.terrain b/public/terrain/19/858478/354049.terrain new file mode 100644 index 000000000..a9457a562 Binary files /dev/null and b/public/terrain/19/858478/354049.terrain differ diff --git a/public/terrain/19/858478/354050.terrain b/public/terrain/19/858478/354050.terrain new file mode 100644 index 000000000..6d496ab5c Binary files /dev/null and b/public/terrain/19/858478/354050.terrain differ diff --git a/public/terrain/19/858478/354051.terrain b/public/terrain/19/858478/354051.terrain new file mode 100644 index 000000000..fb6816f01 Binary files /dev/null and b/public/terrain/19/858478/354051.terrain differ diff --git a/public/terrain/19/858478/354052.terrain b/public/terrain/19/858478/354052.terrain new file mode 100644 index 000000000..29a59ff87 Binary files /dev/null and b/public/terrain/19/858478/354052.terrain differ diff --git a/public/terrain/19/858478/354053.terrain b/public/terrain/19/858478/354053.terrain new file mode 100644 index 000000000..07da7b1f1 Binary files /dev/null and b/public/terrain/19/858478/354053.terrain differ diff --git a/public/terrain/19/858478/354054.terrain b/public/terrain/19/858478/354054.terrain new file mode 100644 index 000000000..58907912e Binary files /dev/null and b/public/terrain/19/858478/354054.terrain differ diff --git a/public/terrain/19/858478/354055.terrain b/public/terrain/19/858478/354055.terrain new file mode 100644 index 000000000..4df66d15b Binary files /dev/null and b/public/terrain/19/858478/354055.terrain differ diff --git a/public/terrain/19/858478/354056.terrain b/public/terrain/19/858478/354056.terrain new file mode 100644 index 000000000..770e3894c Binary files /dev/null and b/public/terrain/19/858478/354056.terrain differ diff --git a/public/terrain/19/858478/354057.terrain b/public/terrain/19/858478/354057.terrain new file mode 100644 index 000000000..be3ebaf4c Binary files /dev/null and b/public/terrain/19/858478/354057.terrain differ diff --git a/public/terrain/19/858478/354058.terrain b/public/terrain/19/858478/354058.terrain new file mode 100644 index 000000000..da183f56d Binary files /dev/null and b/public/terrain/19/858478/354058.terrain differ diff --git a/public/terrain/19/858478/354059.terrain b/public/terrain/19/858478/354059.terrain new file mode 100644 index 000000000..b1600f21e Binary files /dev/null and b/public/terrain/19/858478/354059.terrain differ diff --git a/public/terrain/19/858479/353743.terrain b/public/terrain/19/858479/353743.terrain new file mode 100644 index 000000000..fdec150e0 Binary files /dev/null and b/public/terrain/19/858479/353743.terrain differ diff --git a/public/terrain/19/858479/353744.terrain b/public/terrain/19/858479/353744.terrain new file mode 100644 index 000000000..79a0cf7a5 Binary files /dev/null and b/public/terrain/19/858479/353744.terrain differ diff --git a/public/terrain/19/858479/353745.terrain b/public/terrain/19/858479/353745.terrain new file mode 100644 index 000000000..549d02079 Binary files /dev/null and b/public/terrain/19/858479/353745.terrain differ diff --git a/public/terrain/19/858479/353746.terrain b/public/terrain/19/858479/353746.terrain new file mode 100644 index 000000000..14cb79caa Binary files /dev/null and b/public/terrain/19/858479/353746.terrain differ diff --git a/public/terrain/19/858479/353747.terrain b/public/terrain/19/858479/353747.terrain new file mode 100644 index 000000000..34fe7a23b Binary files /dev/null and b/public/terrain/19/858479/353747.terrain differ diff --git a/public/terrain/19/858479/353748.terrain b/public/terrain/19/858479/353748.terrain new file mode 100644 index 000000000..da3d5335b Binary files /dev/null and b/public/terrain/19/858479/353748.terrain differ diff --git a/public/terrain/19/858479/353749.terrain b/public/terrain/19/858479/353749.terrain new file mode 100644 index 000000000..4e888aaf4 Binary files /dev/null and b/public/terrain/19/858479/353749.terrain differ diff --git a/public/terrain/19/858479/353750.terrain b/public/terrain/19/858479/353750.terrain new file mode 100644 index 000000000..793e4674c Binary files /dev/null and b/public/terrain/19/858479/353750.terrain differ diff --git a/public/terrain/19/858479/353751.terrain b/public/terrain/19/858479/353751.terrain new file mode 100644 index 000000000..12fcf5e44 Binary files /dev/null and b/public/terrain/19/858479/353751.terrain differ diff --git a/public/terrain/19/858479/353752.terrain b/public/terrain/19/858479/353752.terrain new file mode 100644 index 000000000..41ea4f0b6 Binary files /dev/null and b/public/terrain/19/858479/353752.terrain differ diff --git a/public/terrain/19/858479/353753.terrain b/public/terrain/19/858479/353753.terrain new file mode 100644 index 000000000..e9351b22d Binary files /dev/null and b/public/terrain/19/858479/353753.terrain differ diff --git a/public/terrain/19/858479/353754.terrain b/public/terrain/19/858479/353754.terrain new file mode 100644 index 000000000..e78c7c222 Binary files /dev/null and b/public/terrain/19/858479/353754.terrain differ diff --git a/public/terrain/19/858479/353755.terrain b/public/terrain/19/858479/353755.terrain new file mode 100644 index 000000000..dc08293ce Binary files /dev/null and b/public/terrain/19/858479/353755.terrain differ diff --git a/public/terrain/19/858479/353756.terrain b/public/terrain/19/858479/353756.terrain new file mode 100644 index 000000000..d87d4139f Binary files /dev/null and b/public/terrain/19/858479/353756.terrain differ diff --git a/public/terrain/19/858479/353757.terrain b/public/terrain/19/858479/353757.terrain new file mode 100644 index 000000000..c8c3ae371 Binary files /dev/null and b/public/terrain/19/858479/353757.terrain differ diff --git a/public/terrain/19/858479/353758.terrain b/public/terrain/19/858479/353758.terrain new file mode 100644 index 000000000..45fe8b673 Binary files /dev/null and b/public/terrain/19/858479/353758.terrain differ diff --git a/public/terrain/19/858479/353759.terrain b/public/terrain/19/858479/353759.terrain new file mode 100644 index 000000000..1e6f6970f Binary files /dev/null and b/public/terrain/19/858479/353759.terrain differ diff --git a/public/terrain/19/858479/353760.terrain b/public/terrain/19/858479/353760.terrain new file mode 100644 index 000000000..5bf983c2f Binary files /dev/null and b/public/terrain/19/858479/353760.terrain differ diff --git a/public/terrain/19/858479/353761.terrain b/public/terrain/19/858479/353761.terrain new file mode 100644 index 000000000..4b206c390 Binary files /dev/null and b/public/terrain/19/858479/353761.terrain differ diff --git a/public/terrain/19/858479/353762.terrain b/public/terrain/19/858479/353762.terrain new file mode 100644 index 000000000..898e2731e Binary files /dev/null and b/public/terrain/19/858479/353762.terrain differ diff --git a/public/terrain/19/858479/353763.terrain b/public/terrain/19/858479/353763.terrain new file mode 100644 index 000000000..6caceba93 Binary files /dev/null and b/public/terrain/19/858479/353763.terrain differ diff --git a/public/terrain/19/858479/353764.terrain b/public/terrain/19/858479/353764.terrain new file mode 100644 index 000000000..2bc798928 Binary files /dev/null and b/public/terrain/19/858479/353764.terrain differ diff --git a/public/terrain/19/858479/353765.terrain b/public/terrain/19/858479/353765.terrain new file mode 100644 index 000000000..b7cb0e67d Binary files /dev/null and b/public/terrain/19/858479/353765.terrain differ diff --git a/public/terrain/19/858479/353766.terrain b/public/terrain/19/858479/353766.terrain new file mode 100644 index 000000000..af502bf51 Binary files /dev/null and b/public/terrain/19/858479/353766.terrain differ diff --git a/public/terrain/19/858479/353767.terrain b/public/terrain/19/858479/353767.terrain new file mode 100644 index 000000000..c6b0a14e4 Binary files /dev/null and b/public/terrain/19/858479/353767.terrain differ diff --git a/public/terrain/19/858479/353768.terrain b/public/terrain/19/858479/353768.terrain new file mode 100644 index 000000000..173f0ec8c Binary files /dev/null and b/public/terrain/19/858479/353768.terrain differ diff --git a/public/terrain/19/858479/353769.terrain b/public/terrain/19/858479/353769.terrain new file mode 100644 index 000000000..09313343f Binary files /dev/null and b/public/terrain/19/858479/353769.terrain differ diff --git a/public/terrain/19/858479/353770.terrain b/public/terrain/19/858479/353770.terrain new file mode 100644 index 000000000..f8ed3d834 Binary files /dev/null and b/public/terrain/19/858479/353770.terrain differ diff --git a/public/terrain/19/858479/353771.terrain b/public/terrain/19/858479/353771.terrain new file mode 100644 index 000000000..2b34fe610 Binary files /dev/null and b/public/terrain/19/858479/353771.terrain differ diff --git a/public/terrain/19/858479/353772.terrain b/public/terrain/19/858479/353772.terrain new file mode 100644 index 000000000..302c08b62 Binary files /dev/null and b/public/terrain/19/858479/353772.terrain differ diff --git a/public/terrain/19/858479/353773.terrain b/public/terrain/19/858479/353773.terrain new file mode 100644 index 000000000..c716ab466 Binary files /dev/null and b/public/terrain/19/858479/353773.terrain differ diff --git a/public/terrain/19/858479/353774.terrain b/public/terrain/19/858479/353774.terrain new file mode 100644 index 000000000..d475674f2 Binary files /dev/null and b/public/terrain/19/858479/353774.terrain differ diff --git a/public/terrain/19/858479/353775.terrain b/public/terrain/19/858479/353775.terrain new file mode 100644 index 000000000..0dd0e9dc6 Binary files /dev/null and b/public/terrain/19/858479/353775.terrain differ diff --git a/public/terrain/19/858479/353776.terrain b/public/terrain/19/858479/353776.terrain new file mode 100644 index 000000000..2265d8495 Binary files /dev/null and b/public/terrain/19/858479/353776.terrain differ diff --git a/public/terrain/19/858479/353777.terrain b/public/terrain/19/858479/353777.terrain new file mode 100644 index 000000000..42fc7c5c7 Binary files /dev/null and b/public/terrain/19/858479/353777.terrain differ diff --git a/public/terrain/19/858479/353778.terrain b/public/terrain/19/858479/353778.terrain new file mode 100644 index 000000000..8d812f972 Binary files /dev/null and b/public/terrain/19/858479/353778.terrain differ diff --git a/public/terrain/19/858479/353779.terrain b/public/terrain/19/858479/353779.terrain new file mode 100644 index 000000000..a6fab8a74 Binary files /dev/null and b/public/terrain/19/858479/353779.terrain differ diff --git a/public/terrain/19/858479/353780.terrain b/public/terrain/19/858479/353780.terrain new file mode 100644 index 000000000..c89e98d4f Binary files /dev/null and b/public/terrain/19/858479/353780.terrain differ diff --git a/public/terrain/19/858479/353781.terrain b/public/terrain/19/858479/353781.terrain new file mode 100644 index 000000000..9cd476fdb Binary files /dev/null and b/public/terrain/19/858479/353781.terrain differ diff --git a/public/terrain/19/858479/353782.terrain b/public/terrain/19/858479/353782.terrain new file mode 100644 index 000000000..4198a1bbd Binary files /dev/null and b/public/terrain/19/858479/353782.terrain differ diff --git a/public/terrain/19/858479/353783.terrain b/public/terrain/19/858479/353783.terrain new file mode 100644 index 000000000..a9fecf8c5 Binary files /dev/null and b/public/terrain/19/858479/353783.terrain differ diff --git a/public/terrain/19/858479/353784.terrain b/public/terrain/19/858479/353784.terrain new file mode 100644 index 000000000..afb025c13 Binary files /dev/null and b/public/terrain/19/858479/353784.terrain differ diff --git a/public/terrain/19/858479/353785.terrain b/public/terrain/19/858479/353785.terrain new file mode 100644 index 000000000..697842ddc Binary files /dev/null and b/public/terrain/19/858479/353785.terrain differ diff --git a/public/terrain/19/858479/353786.terrain b/public/terrain/19/858479/353786.terrain new file mode 100644 index 000000000..9a98294d1 Binary files /dev/null and b/public/terrain/19/858479/353786.terrain differ diff --git a/public/terrain/19/858479/353787.terrain b/public/terrain/19/858479/353787.terrain new file mode 100644 index 000000000..3fd330836 Binary files /dev/null and b/public/terrain/19/858479/353787.terrain differ diff --git a/public/terrain/19/858479/353788.terrain b/public/terrain/19/858479/353788.terrain new file mode 100644 index 000000000..9a2875603 Binary files /dev/null and b/public/terrain/19/858479/353788.terrain differ diff --git a/public/terrain/19/858479/353789.terrain b/public/terrain/19/858479/353789.terrain new file mode 100644 index 000000000..b6a734805 Binary files /dev/null and b/public/terrain/19/858479/353789.terrain differ diff --git a/public/terrain/19/858479/353790.terrain b/public/terrain/19/858479/353790.terrain new file mode 100644 index 000000000..fa4a422b2 Binary files /dev/null and b/public/terrain/19/858479/353790.terrain differ diff --git a/public/terrain/19/858479/353791.terrain b/public/terrain/19/858479/353791.terrain new file mode 100644 index 000000000..c2b156be5 Binary files /dev/null and b/public/terrain/19/858479/353791.terrain differ diff --git a/public/terrain/19/858479/353792.terrain b/public/terrain/19/858479/353792.terrain new file mode 100644 index 000000000..f0a97b53d Binary files /dev/null and b/public/terrain/19/858479/353792.terrain differ diff --git a/public/terrain/19/858479/353793.terrain b/public/terrain/19/858479/353793.terrain new file mode 100644 index 000000000..cba58be43 Binary files /dev/null and b/public/terrain/19/858479/353793.terrain differ diff --git a/public/terrain/19/858479/353794.terrain b/public/terrain/19/858479/353794.terrain new file mode 100644 index 000000000..f47317872 Binary files /dev/null and b/public/terrain/19/858479/353794.terrain differ diff --git a/public/terrain/19/858479/353795.terrain b/public/terrain/19/858479/353795.terrain new file mode 100644 index 000000000..6ad0b984b Binary files /dev/null and b/public/terrain/19/858479/353795.terrain differ diff --git a/public/terrain/19/858479/353796.terrain b/public/terrain/19/858479/353796.terrain new file mode 100644 index 000000000..d943d74e8 Binary files /dev/null and b/public/terrain/19/858479/353796.terrain differ diff --git a/public/terrain/19/858479/353797.terrain b/public/terrain/19/858479/353797.terrain new file mode 100644 index 000000000..6ed8ea9f7 Binary files /dev/null and b/public/terrain/19/858479/353797.terrain differ diff --git a/public/terrain/19/858479/353798.terrain b/public/terrain/19/858479/353798.terrain new file mode 100644 index 000000000..fd97d6448 Binary files /dev/null and b/public/terrain/19/858479/353798.terrain differ diff --git a/public/terrain/19/858479/353799.terrain b/public/terrain/19/858479/353799.terrain new file mode 100644 index 000000000..b36e53a66 Binary files /dev/null and b/public/terrain/19/858479/353799.terrain differ diff --git a/public/terrain/19/858479/353800.terrain b/public/terrain/19/858479/353800.terrain new file mode 100644 index 000000000..c2c2a38f5 Binary files /dev/null and b/public/terrain/19/858479/353800.terrain differ diff --git a/public/terrain/19/858479/353801.terrain b/public/terrain/19/858479/353801.terrain new file mode 100644 index 000000000..c7b99e9d0 Binary files /dev/null and b/public/terrain/19/858479/353801.terrain differ diff --git a/public/terrain/19/858479/353802.terrain b/public/terrain/19/858479/353802.terrain new file mode 100644 index 000000000..ce0f9ee9b Binary files /dev/null and b/public/terrain/19/858479/353802.terrain differ diff --git a/public/terrain/19/858479/353803.terrain b/public/terrain/19/858479/353803.terrain new file mode 100644 index 000000000..26f9ca64d Binary files /dev/null and b/public/terrain/19/858479/353803.terrain differ diff --git a/public/terrain/19/858479/353804.terrain b/public/terrain/19/858479/353804.terrain new file mode 100644 index 000000000..d63618062 Binary files /dev/null and b/public/terrain/19/858479/353804.terrain differ diff --git a/public/terrain/19/858479/353805.terrain b/public/terrain/19/858479/353805.terrain new file mode 100644 index 000000000..164493e79 Binary files /dev/null and b/public/terrain/19/858479/353805.terrain differ diff --git a/public/terrain/19/858479/353806.terrain b/public/terrain/19/858479/353806.terrain new file mode 100644 index 000000000..bb37b2a26 Binary files /dev/null and b/public/terrain/19/858479/353806.terrain differ diff --git a/public/terrain/19/858479/353807.terrain b/public/terrain/19/858479/353807.terrain new file mode 100644 index 000000000..d91b30a44 Binary files /dev/null and b/public/terrain/19/858479/353807.terrain differ diff --git a/public/terrain/19/858479/353808.terrain b/public/terrain/19/858479/353808.terrain new file mode 100644 index 000000000..921507cfe Binary files /dev/null and b/public/terrain/19/858479/353808.terrain differ diff --git a/public/terrain/19/858479/353809.terrain b/public/terrain/19/858479/353809.terrain new file mode 100644 index 000000000..e1e445b82 Binary files /dev/null and b/public/terrain/19/858479/353809.terrain differ diff --git a/public/terrain/19/858479/353810.terrain b/public/terrain/19/858479/353810.terrain new file mode 100644 index 000000000..20a724174 Binary files /dev/null and b/public/terrain/19/858479/353810.terrain differ diff --git a/public/terrain/19/858479/353811.terrain b/public/terrain/19/858479/353811.terrain new file mode 100644 index 000000000..30d73b9d6 Binary files /dev/null and b/public/terrain/19/858479/353811.terrain differ diff --git a/public/terrain/19/858479/353812.terrain b/public/terrain/19/858479/353812.terrain new file mode 100644 index 000000000..20c3fd9e2 Binary files /dev/null and b/public/terrain/19/858479/353812.terrain differ diff --git a/public/terrain/19/858479/353813.terrain b/public/terrain/19/858479/353813.terrain new file mode 100644 index 000000000..36d77a80b Binary files /dev/null and b/public/terrain/19/858479/353813.terrain differ diff --git a/public/terrain/19/858479/353814.terrain b/public/terrain/19/858479/353814.terrain new file mode 100644 index 000000000..aaaf9f4be Binary files /dev/null and b/public/terrain/19/858479/353814.terrain differ diff --git a/public/terrain/19/858479/353815.terrain b/public/terrain/19/858479/353815.terrain new file mode 100644 index 000000000..566a36333 Binary files /dev/null and b/public/terrain/19/858479/353815.terrain differ diff --git a/public/terrain/19/858479/353816.terrain b/public/terrain/19/858479/353816.terrain new file mode 100644 index 000000000..b8b41eedb Binary files /dev/null and b/public/terrain/19/858479/353816.terrain differ diff --git a/public/terrain/19/858479/353817.terrain b/public/terrain/19/858479/353817.terrain new file mode 100644 index 000000000..d64be56b5 Binary files /dev/null and b/public/terrain/19/858479/353817.terrain differ diff --git a/public/terrain/19/858479/353818.terrain b/public/terrain/19/858479/353818.terrain new file mode 100644 index 000000000..c4d5d6bc1 Binary files /dev/null and b/public/terrain/19/858479/353818.terrain differ diff --git a/public/terrain/19/858479/353819.terrain b/public/terrain/19/858479/353819.terrain new file mode 100644 index 000000000..c0149db37 Binary files /dev/null and b/public/terrain/19/858479/353819.terrain differ diff --git a/public/terrain/19/858479/353820.terrain b/public/terrain/19/858479/353820.terrain new file mode 100644 index 000000000..5dcf56e5f Binary files /dev/null and b/public/terrain/19/858479/353820.terrain differ diff --git a/public/terrain/19/858479/353821.terrain b/public/terrain/19/858479/353821.terrain new file mode 100644 index 000000000..9f10db36e Binary files /dev/null and b/public/terrain/19/858479/353821.terrain differ diff --git a/public/terrain/19/858479/353822.terrain b/public/terrain/19/858479/353822.terrain new file mode 100644 index 000000000..145ee2c01 Binary files /dev/null and b/public/terrain/19/858479/353822.terrain differ diff --git a/public/terrain/19/858479/353823.terrain b/public/terrain/19/858479/353823.terrain new file mode 100644 index 000000000..5509baf3e Binary files /dev/null and b/public/terrain/19/858479/353823.terrain differ diff --git a/public/terrain/19/858479/353824.terrain b/public/terrain/19/858479/353824.terrain new file mode 100644 index 000000000..cd01b038f Binary files /dev/null and b/public/terrain/19/858479/353824.terrain differ diff --git a/public/terrain/19/858479/353825.terrain b/public/terrain/19/858479/353825.terrain new file mode 100644 index 000000000..55d71c601 Binary files /dev/null and b/public/terrain/19/858479/353825.terrain differ diff --git a/public/terrain/19/858479/353826.terrain b/public/terrain/19/858479/353826.terrain new file mode 100644 index 000000000..e3369f50b Binary files /dev/null and b/public/terrain/19/858479/353826.terrain differ diff --git a/public/terrain/19/858479/353827.terrain b/public/terrain/19/858479/353827.terrain new file mode 100644 index 000000000..c990b7c3c Binary files /dev/null and b/public/terrain/19/858479/353827.terrain differ diff --git a/public/terrain/19/858479/353828.terrain b/public/terrain/19/858479/353828.terrain new file mode 100644 index 000000000..581d1d861 Binary files /dev/null and b/public/terrain/19/858479/353828.terrain differ diff --git a/public/terrain/19/858479/353829.terrain b/public/terrain/19/858479/353829.terrain new file mode 100644 index 000000000..61ab242ce Binary files /dev/null and b/public/terrain/19/858479/353829.terrain differ diff --git a/public/terrain/19/858479/353830.terrain b/public/terrain/19/858479/353830.terrain new file mode 100644 index 000000000..bad26a7ed Binary files /dev/null and b/public/terrain/19/858479/353830.terrain differ diff --git a/public/terrain/19/858479/353831.terrain b/public/terrain/19/858479/353831.terrain new file mode 100644 index 000000000..ce81a07c7 Binary files /dev/null and b/public/terrain/19/858479/353831.terrain differ diff --git a/public/terrain/19/858479/353832.terrain b/public/terrain/19/858479/353832.terrain new file mode 100644 index 000000000..2cea3e768 Binary files /dev/null and b/public/terrain/19/858479/353832.terrain differ diff --git a/public/terrain/19/858479/353833.terrain b/public/terrain/19/858479/353833.terrain new file mode 100644 index 000000000..e25bc60cc Binary files /dev/null and b/public/terrain/19/858479/353833.terrain differ diff --git a/public/terrain/19/858479/353834.terrain b/public/terrain/19/858479/353834.terrain new file mode 100644 index 000000000..4b1393d42 Binary files /dev/null and b/public/terrain/19/858479/353834.terrain differ diff --git a/public/terrain/19/858479/353835.terrain b/public/terrain/19/858479/353835.terrain new file mode 100644 index 000000000..d1e191e48 Binary files /dev/null and b/public/terrain/19/858479/353835.terrain differ diff --git a/public/terrain/19/858479/353836.terrain b/public/terrain/19/858479/353836.terrain new file mode 100644 index 000000000..3349021c9 Binary files /dev/null and b/public/terrain/19/858479/353836.terrain differ diff --git a/public/terrain/19/858479/353837.terrain b/public/terrain/19/858479/353837.terrain new file mode 100644 index 000000000..23c89644b Binary files /dev/null and b/public/terrain/19/858479/353837.terrain differ diff --git a/public/terrain/19/858479/353838.terrain b/public/terrain/19/858479/353838.terrain new file mode 100644 index 000000000..7d3166a6e Binary files /dev/null and b/public/terrain/19/858479/353838.terrain differ diff --git a/public/terrain/19/858479/353839.terrain b/public/terrain/19/858479/353839.terrain new file mode 100644 index 000000000..678422a0b Binary files /dev/null and b/public/terrain/19/858479/353839.terrain differ diff --git a/public/terrain/19/858479/353840.terrain b/public/terrain/19/858479/353840.terrain new file mode 100644 index 000000000..f6d5f54a9 Binary files /dev/null and b/public/terrain/19/858479/353840.terrain differ diff --git a/public/terrain/19/858479/353841.terrain b/public/terrain/19/858479/353841.terrain new file mode 100644 index 000000000..6cecfaa47 Binary files /dev/null and b/public/terrain/19/858479/353841.terrain differ diff --git a/public/terrain/19/858479/353842.terrain b/public/terrain/19/858479/353842.terrain new file mode 100644 index 000000000..a8e924b20 Binary files /dev/null and b/public/terrain/19/858479/353842.terrain differ diff --git a/public/terrain/19/858479/353843.terrain b/public/terrain/19/858479/353843.terrain new file mode 100644 index 000000000..02810608d Binary files /dev/null and b/public/terrain/19/858479/353843.terrain differ diff --git a/public/terrain/19/858479/353844.terrain b/public/terrain/19/858479/353844.terrain new file mode 100644 index 000000000..b7ad0a332 Binary files /dev/null and b/public/terrain/19/858479/353844.terrain differ diff --git a/public/terrain/19/858479/353845.terrain b/public/terrain/19/858479/353845.terrain new file mode 100644 index 000000000..da28cb452 Binary files /dev/null and b/public/terrain/19/858479/353845.terrain differ diff --git a/public/terrain/19/858479/353846.terrain b/public/terrain/19/858479/353846.terrain new file mode 100644 index 000000000..6089a21a8 Binary files /dev/null and b/public/terrain/19/858479/353846.terrain differ diff --git a/public/terrain/19/858479/353847.terrain b/public/terrain/19/858479/353847.terrain new file mode 100644 index 000000000..f83ea9f85 Binary files /dev/null and b/public/terrain/19/858479/353847.terrain differ diff --git a/public/terrain/19/858479/353848.terrain b/public/terrain/19/858479/353848.terrain new file mode 100644 index 000000000..a953fa389 Binary files /dev/null and b/public/terrain/19/858479/353848.terrain differ diff --git a/public/terrain/19/858479/353849.terrain b/public/terrain/19/858479/353849.terrain new file mode 100644 index 000000000..269614dc2 Binary files /dev/null and b/public/terrain/19/858479/353849.terrain differ diff --git a/public/terrain/19/858479/353850.terrain b/public/terrain/19/858479/353850.terrain new file mode 100644 index 000000000..339b88a4e Binary files /dev/null and b/public/terrain/19/858479/353850.terrain differ diff --git a/public/terrain/19/858479/353851.terrain b/public/terrain/19/858479/353851.terrain new file mode 100644 index 000000000..b6c0c147d Binary files /dev/null and b/public/terrain/19/858479/353851.terrain differ diff --git a/public/terrain/19/858479/353852.terrain b/public/terrain/19/858479/353852.terrain new file mode 100644 index 000000000..6ea21965b Binary files /dev/null and b/public/terrain/19/858479/353852.terrain differ diff --git a/public/terrain/19/858479/353853.terrain b/public/terrain/19/858479/353853.terrain new file mode 100644 index 000000000..646442817 Binary files /dev/null and b/public/terrain/19/858479/353853.terrain differ diff --git a/public/terrain/19/858479/353854.terrain b/public/terrain/19/858479/353854.terrain new file mode 100644 index 000000000..083eaa38f Binary files /dev/null and b/public/terrain/19/858479/353854.terrain differ diff --git a/public/terrain/19/858479/353855.terrain b/public/terrain/19/858479/353855.terrain new file mode 100644 index 000000000..14aab98ef Binary files /dev/null and b/public/terrain/19/858479/353855.terrain differ diff --git a/public/terrain/19/858479/353856.terrain b/public/terrain/19/858479/353856.terrain new file mode 100644 index 000000000..96e98498d Binary files /dev/null and b/public/terrain/19/858479/353856.terrain differ diff --git a/public/terrain/19/858479/353857.terrain b/public/terrain/19/858479/353857.terrain new file mode 100644 index 000000000..f86590fc3 Binary files /dev/null and b/public/terrain/19/858479/353857.terrain differ diff --git a/public/terrain/19/858479/353858.terrain b/public/terrain/19/858479/353858.terrain new file mode 100644 index 000000000..34df3d240 Binary files /dev/null and b/public/terrain/19/858479/353858.terrain differ diff --git a/public/terrain/19/858479/353859.terrain b/public/terrain/19/858479/353859.terrain new file mode 100644 index 000000000..88e701c1f Binary files /dev/null and b/public/terrain/19/858479/353859.terrain differ diff --git a/public/terrain/19/858479/353860.terrain b/public/terrain/19/858479/353860.terrain new file mode 100644 index 000000000..47f18f49c Binary files /dev/null and b/public/terrain/19/858479/353860.terrain differ diff --git a/public/terrain/19/858479/353861.terrain b/public/terrain/19/858479/353861.terrain new file mode 100644 index 000000000..a72b8d398 Binary files /dev/null and b/public/terrain/19/858479/353861.terrain differ diff --git a/public/terrain/19/858479/353862.terrain b/public/terrain/19/858479/353862.terrain new file mode 100644 index 000000000..19614a6ec Binary files /dev/null and b/public/terrain/19/858479/353862.terrain differ diff --git a/public/terrain/19/858479/353863.terrain b/public/terrain/19/858479/353863.terrain new file mode 100644 index 000000000..f8c68e5a8 Binary files /dev/null and b/public/terrain/19/858479/353863.terrain differ diff --git a/public/terrain/19/858479/353864.terrain b/public/terrain/19/858479/353864.terrain new file mode 100644 index 000000000..5a499bc76 Binary files /dev/null and b/public/terrain/19/858479/353864.terrain differ diff --git a/public/terrain/19/858479/353865.terrain b/public/terrain/19/858479/353865.terrain new file mode 100644 index 000000000..d8ea4c9c1 Binary files /dev/null and b/public/terrain/19/858479/353865.terrain differ diff --git a/public/terrain/19/858479/353866.terrain b/public/terrain/19/858479/353866.terrain new file mode 100644 index 000000000..d7ad085b6 Binary files /dev/null and b/public/terrain/19/858479/353866.terrain differ diff --git a/public/terrain/19/858479/353867.terrain b/public/terrain/19/858479/353867.terrain new file mode 100644 index 000000000..b39c1ffba Binary files /dev/null and b/public/terrain/19/858479/353867.terrain differ diff --git a/public/terrain/19/858479/353868.terrain b/public/terrain/19/858479/353868.terrain new file mode 100644 index 000000000..9a588f581 Binary files /dev/null and b/public/terrain/19/858479/353868.terrain differ diff --git a/public/terrain/19/858479/353869.terrain b/public/terrain/19/858479/353869.terrain new file mode 100644 index 000000000..6eb57f215 Binary files /dev/null and b/public/terrain/19/858479/353869.terrain differ diff --git a/public/terrain/19/858479/353870.terrain b/public/terrain/19/858479/353870.terrain new file mode 100644 index 000000000..dad900fb1 Binary files /dev/null and b/public/terrain/19/858479/353870.terrain differ diff --git a/public/terrain/19/858479/353871.terrain b/public/terrain/19/858479/353871.terrain new file mode 100644 index 000000000..d8a31b131 Binary files /dev/null and b/public/terrain/19/858479/353871.terrain differ diff --git a/public/terrain/19/858479/353872.terrain b/public/terrain/19/858479/353872.terrain new file mode 100644 index 000000000..d2870af8d Binary files /dev/null and b/public/terrain/19/858479/353872.terrain differ diff --git a/public/terrain/19/858479/353873.terrain b/public/terrain/19/858479/353873.terrain new file mode 100644 index 000000000..98804582d Binary files /dev/null and b/public/terrain/19/858479/353873.terrain differ diff --git a/public/terrain/19/858479/353874.terrain b/public/terrain/19/858479/353874.terrain new file mode 100644 index 000000000..bde8a9bf7 Binary files /dev/null and b/public/terrain/19/858479/353874.terrain differ diff --git a/public/terrain/19/858479/353875.terrain b/public/terrain/19/858479/353875.terrain new file mode 100644 index 000000000..9a92b6158 Binary files /dev/null and b/public/terrain/19/858479/353875.terrain differ diff --git a/public/terrain/19/858479/353876.terrain b/public/terrain/19/858479/353876.terrain new file mode 100644 index 000000000..3b7ae595b Binary files /dev/null and b/public/terrain/19/858479/353876.terrain differ diff --git a/public/terrain/19/858479/353877.terrain b/public/terrain/19/858479/353877.terrain new file mode 100644 index 000000000..0562602ca Binary files /dev/null and b/public/terrain/19/858479/353877.terrain differ diff --git a/public/terrain/19/858479/353878.terrain b/public/terrain/19/858479/353878.terrain new file mode 100644 index 000000000..6d017e184 Binary files /dev/null and b/public/terrain/19/858479/353878.terrain differ diff --git a/public/terrain/19/858479/353879.terrain b/public/terrain/19/858479/353879.terrain new file mode 100644 index 000000000..efb881ea2 Binary files /dev/null and b/public/terrain/19/858479/353879.terrain differ diff --git a/public/terrain/19/858479/353880.terrain b/public/terrain/19/858479/353880.terrain new file mode 100644 index 000000000..a328cd890 Binary files /dev/null and b/public/terrain/19/858479/353880.terrain differ diff --git a/public/terrain/19/858479/353881.terrain b/public/terrain/19/858479/353881.terrain new file mode 100644 index 000000000..24867bc6c Binary files /dev/null and b/public/terrain/19/858479/353881.terrain differ diff --git a/public/terrain/19/858479/353882.terrain b/public/terrain/19/858479/353882.terrain new file mode 100644 index 000000000..50eda3f3f Binary files /dev/null and b/public/terrain/19/858479/353882.terrain differ diff --git a/public/terrain/19/858479/353883.terrain b/public/terrain/19/858479/353883.terrain new file mode 100644 index 000000000..51a1c992d Binary files /dev/null and b/public/terrain/19/858479/353883.terrain differ diff --git a/public/terrain/19/858479/353884.terrain b/public/terrain/19/858479/353884.terrain new file mode 100644 index 000000000..7d16fa0ab Binary files /dev/null and b/public/terrain/19/858479/353884.terrain differ diff --git a/public/terrain/19/858479/353885.terrain b/public/terrain/19/858479/353885.terrain new file mode 100644 index 000000000..1b6407071 Binary files /dev/null and b/public/terrain/19/858479/353885.terrain differ diff --git a/public/terrain/19/858479/353886.terrain b/public/terrain/19/858479/353886.terrain new file mode 100644 index 000000000..7564a90df Binary files /dev/null and b/public/terrain/19/858479/353886.terrain differ diff --git a/public/terrain/19/858479/353887.terrain b/public/terrain/19/858479/353887.terrain new file mode 100644 index 000000000..1a3eae551 Binary files /dev/null and b/public/terrain/19/858479/353887.terrain differ diff --git a/public/terrain/19/858479/353888.terrain b/public/terrain/19/858479/353888.terrain new file mode 100644 index 000000000..c838889e8 Binary files /dev/null and b/public/terrain/19/858479/353888.terrain differ diff --git a/public/terrain/19/858479/353889.terrain b/public/terrain/19/858479/353889.terrain new file mode 100644 index 000000000..c10fabad1 Binary files /dev/null and b/public/terrain/19/858479/353889.terrain differ diff --git a/public/terrain/19/858479/353890.terrain b/public/terrain/19/858479/353890.terrain new file mode 100644 index 000000000..af5cd619a Binary files /dev/null and b/public/terrain/19/858479/353890.terrain differ diff --git a/public/terrain/19/858479/353891.terrain b/public/terrain/19/858479/353891.terrain new file mode 100644 index 000000000..02fd9d1ea Binary files /dev/null and b/public/terrain/19/858479/353891.terrain differ diff --git a/public/terrain/19/858479/353892.terrain b/public/terrain/19/858479/353892.terrain new file mode 100644 index 000000000..af452e829 Binary files /dev/null and b/public/terrain/19/858479/353892.terrain differ diff --git a/public/terrain/19/858479/353893.terrain b/public/terrain/19/858479/353893.terrain new file mode 100644 index 000000000..8de07b761 Binary files /dev/null and b/public/terrain/19/858479/353893.terrain differ diff --git a/public/terrain/19/858479/353894.terrain b/public/terrain/19/858479/353894.terrain new file mode 100644 index 000000000..a3f566368 Binary files /dev/null and b/public/terrain/19/858479/353894.terrain differ diff --git a/public/terrain/19/858479/353895.terrain b/public/terrain/19/858479/353895.terrain new file mode 100644 index 000000000..84d1b72fd Binary files /dev/null and b/public/terrain/19/858479/353895.terrain differ diff --git a/public/terrain/19/858479/353896.terrain b/public/terrain/19/858479/353896.terrain new file mode 100644 index 000000000..ecf8afb19 Binary files /dev/null and b/public/terrain/19/858479/353896.terrain differ diff --git a/public/terrain/19/858479/353897.terrain b/public/terrain/19/858479/353897.terrain new file mode 100644 index 000000000..fec4ddbae Binary files /dev/null and b/public/terrain/19/858479/353897.terrain differ diff --git a/public/terrain/19/858479/353898.terrain b/public/terrain/19/858479/353898.terrain new file mode 100644 index 000000000..4792a5a85 Binary files /dev/null and b/public/terrain/19/858479/353898.terrain differ diff --git a/public/terrain/19/858479/353899.terrain b/public/terrain/19/858479/353899.terrain new file mode 100644 index 000000000..1a62c66c8 Binary files /dev/null and b/public/terrain/19/858479/353899.terrain differ diff --git a/public/terrain/19/858479/353900.terrain b/public/terrain/19/858479/353900.terrain new file mode 100644 index 000000000..aa55753d7 Binary files /dev/null and b/public/terrain/19/858479/353900.terrain differ diff --git a/public/terrain/19/858479/353901.terrain b/public/terrain/19/858479/353901.terrain new file mode 100644 index 000000000..49dafffff Binary files /dev/null and b/public/terrain/19/858479/353901.terrain differ diff --git a/public/terrain/19/858479/353902.terrain b/public/terrain/19/858479/353902.terrain new file mode 100644 index 000000000..544461d34 Binary files /dev/null and b/public/terrain/19/858479/353902.terrain differ diff --git a/public/terrain/19/858479/353903.terrain b/public/terrain/19/858479/353903.terrain new file mode 100644 index 000000000..1769f7d1a Binary files /dev/null and b/public/terrain/19/858479/353903.terrain differ diff --git a/public/terrain/19/858479/353904.terrain b/public/terrain/19/858479/353904.terrain new file mode 100644 index 000000000..64e6cdd0c Binary files /dev/null and b/public/terrain/19/858479/353904.terrain differ diff --git a/public/terrain/19/858479/353905.terrain b/public/terrain/19/858479/353905.terrain new file mode 100644 index 000000000..a1f48b26b Binary files /dev/null and b/public/terrain/19/858479/353905.terrain differ diff --git a/public/terrain/19/858479/353906.terrain b/public/terrain/19/858479/353906.terrain new file mode 100644 index 000000000..c1405accb Binary files /dev/null and b/public/terrain/19/858479/353906.terrain differ diff --git a/public/terrain/19/858479/353907.terrain b/public/terrain/19/858479/353907.terrain new file mode 100644 index 000000000..098d3b84e Binary files /dev/null and b/public/terrain/19/858479/353907.terrain differ diff --git a/public/terrain/19/858479/353908.terrain b/public/terrain/19/858479/353908.terrain new file mode 100644 index 000000000..761ff841a Binary files /dev/null and b/public/terrain/19/858479/353908.terrain differ diff --git a/public/terrain/19/858479/353909.terrain b/public/terrain/19/858479/353909.terrain new file mode 100644 index 000000000..7a51751ed Binary files /dev/null and b/public/terrain/19/858479/353909.terrain differ diff --git a/public/terrain/19/858479/353910.terrain b/public/terrain/19/858479/353910.terrain new file mode 100644 index 000000000..ec1814dc3 Binary files /dev/null and b/public/terrain/19/858479/353910.terrain differ diff --git a/public/terrain/19/858479/353911.terrain b/public/terrain/19/858479/353911.terrain new file mode 100644 index 000000000..f0d5eae0a Binary files /dev/null and b/public/terrain/19/858479/353911.terrain differ diff --git a/public/terrain/19/858479/353912.terrain b/public/terrain/19/858479/353912.terrain new file mode 100644 index 000000000..caadbd10c Binary files /dev/null and b/public/terrain/19/858479/353912.terrain differ diff --git a/public/terrain/19/858479/353913.terrain b/public/terrain/19/858479/353913.terrain new file mode 100644 index 000000000..49d6fa80e Binary files /dev/null and b/public/terrain/19/858479/353913.terrain differ diff --git a/public/terrain/19/858479/353914.terrain b/public/terrain/19/858479/353914.terrain new file mode 100644 index 000000000..087d56ef8 Binary files /dev/null and b/public/terrain/19/858479/353914.terrain differ diff --git a/public/terrain/19/858479/353915.terrain b/public/terrain/19/858479/353915.terrain new file mode 100644 index 000000000..9e21e213f Binary files /dev/null and b/public/terrain/19/858479/353915.terrain differ diff --git a/public/terrain/19/858479/353916.terrain b/public/terrain/19/858479/353916.terrain new file mode 100644 index 000000000..cf8068c2b Binary files /dev/null and b/public/terrain/19/858479/353916.terrain differ diff --git a/public/terrain/19/858479/353917.terrain b/public/terrain/19/858479/353917.terrain new file mode 100644 index 000000000..abc287ada Binary files /dev/null and b/public/terrain/19/858479/353917.terrain differ diff --git a/public/terrain/19/858479/353918.terrain b/public/terrain/19/858479/353918.terrain new file mode 100644 index 000000000..0c351a41f Binary files /dev/null and b/public/terrain/19/858479/353918.terrain differ diff --git a/public/terrain/19/858479/353919.terrain b/public/terrain/19/858479/353919.terrain new file mode 100644 index 000000000..b04221467 Binary files /dev/null and b/public/terrain/19/858479/353919.terrain differ diff --git a/public/terrain/19/858479/353920.terrain b/public/terrain/19/858479/353920.terrain new file mode 100644 index 000000000..78873223f Binary files /dev/null and b/public/terrain/19/858479/353920.terrain differ diff --git a/public/terrain/19/858479/353921.terrain b/public/terrain/19/858479/353921.terrain new file mode 100644 index 000000000..d53465708 Binary files /dev/null and b/public/terrain/19/858479/353921.terrain differ diff --git a/public/terrain/19/858479/353922.terrain b/public/terrain/19/858479/353922.terrain new file mode 100644 index 000000000..22ccb29a4 Binary files /dev/null and b/public/terrain/19/858479/353922.terrain differ diff --git a/public/terrain/19/858479/353923.terrain b/public/terrain/19/858479/353923.terrain new file mode 100644 index 000000000..f8c4f9644 Binary files /dev/null and b/public/terrain/19/858479/353923.terrain differ diff --git a/public/terrain/19/858479/353924.terrain b/public/terrain/19/858479/353924.terrain new file mode 100644 index 000000000..8633c33c5 Binary files /dev/null and b/public/terrain/19/858479/353924.terrain differ diff --git a/public/terrain/19/858479/353925.terrain b/public/terrain/19/858479/353925.terrain new file mode 100644 index 000000000..20658e26f Binary files /dev/null and b/public/terrain/19/858479/353925.terrain differ diff --git a/public/terrain/19/858479/353926.terrain b/public/terrain/19/858479/353926.terrain new file mode 100644 index 000000000..c81e94734 Binary files /dev/null and b/public/terrain/19/858479/353926.terrain differ diff --git a/public/terrain/19/858479/353927.terrain b/public/terrain/19/858479/353927.terrain new file mode 100644 index 000000000..a822d9c39 Binary files /dev/null and b/public/terrain/19/858479/353927.terrain differ diff --git a/public/terrain/19/858479/353928.terrain b/public/terrain/19/858479/353928.terrain new file mode 100644 index 000000000..8ff06e552 Binary files /dev/null and b/public/terrain/19/858479/353928.terrain differ diff --git a/public/terrain/19/858479/353929.terrain b/public/terrain/19/858479/353929.terrain new file mode 100644 index 000000000..14ed1a730 Binary files /dev/null and b/public/terrain/19/858479/353929.terrain differ diff --git a/public/terrain/19/858479/353930.terrain b/public/terrain/19/858479/353930.terrain new file mode 100644 index 000000000..8479bbec3 Binary files /dev/null and b/public/terrain/19/858479/353930.terrain differ diff --git a/public/terrain/19/858479/353931.terrain b/public/terrain/19/858479/353931.terrain new file mode 100644 index 000000000..b85502e01 Binary files /dev/null and b/public/terrain/19/858479/353931.terrain differ diff --git a/public/terrain/19/858479/353932.terrain b/public/terrain/19/858479/353932.terrain new file mode 100644 index 000000000..b2a8b61b5 Binary files /dev/null and b/public/terrain/19/858479/353932.terrain differ diff --git a/public/terrain/19/858479/353933.terrain b/public/terrain/19/858479/353933.terrain new file mode 100644 index 000000000..0ac60f1cc Binary files /dev/null and b/public/terrain/19/858479/353933.terrain differ diff --git a/public/terrain/19/858479/353934.terrain b/public/terrain/19/858479/353934.terrain new file mode 100644 index 000000000..c733b1e72 Binary files /dev/null and b/public/terrain/19/858479/353934.terrain differ diff --git a/public/terrain/19/858479/353935.terrain b/public/terrain/19/858479/353935.terrain new file mode 100644 index 000000000..75030a349 Binary files /dev/null and b/public/terrain/19/858479/353935.terrain differ diff --git a/public/terrain/19/858479/353936.terrain b/public/terrain/19/858479/353936.terrain new file mode 100644 index 000000000..ce6f2f21d Binary files /dev/null and b/public/terrain/19/858479/353936.terrain differ diff --git a/public/terrain/19/858479/353937.terrain b/public/terrain/19/858479/353937.terrain new file mode 100644 index 000000000..448115057 Binary files /dev/null and b/public/terrain/19/858479/353937.terrain differ diff --git a/public/terrain/19/858479/353938.terrain b/public/terrain/19/858479/353938.terrain new file mode 100644 index 000000000..6690a1986 Binary files /dev/null and b/public/terrain/19/858479/353938.terrain differ diff --git a/public/terrain/19/858479/353939.terrain b/public/terrain/19/858479/353939.terrain new file mode 100644 index 000000000..7a30e9430 Binary files /dev/null and b/public/terrain/19/858479/353939.terrain differ diff --git a/public/terrain/19/858479/353940.terrain b/public/terrain/19/858479/353940.terrain new file mode 100644 index 000000000..788a504c1 Binary files /dev/null and b/public/terrain/19/858479/353940.terrain differ diff --git a/public/terrain/19/858479/353941.terrain b/public/terrain/19/858479/353941.terrain new file mode 100644 index 000000000..c4b0e5089 Binary files /dev/null and b/public/terrain/19/858479/353941.terrain differ diff --git a/public/terrain/19/858479/353942.terrain b/public/terrain/19/858479/353942.terrain new file mode 100644 index 000000000..7ee502662 Binary files /dev/null and b/public/terrain/19/858479/353942.terrain differ diff --git a/public/terrain/19/858479/353943.terrain b/public/terrain/19/858479/353943.terrain new file mode 100644 index 000000000..a35be8bc8 Binary files /dev/null and b/public/terrain/19/858479/353943.terrain differ diff --git a/public/terrain/19/858479/353944.terrain b/public/terrain/19/858479/353944.terrain new file mode 100644 index 000000000..336aae3f9 Binary files /dev/null and b/public/terrain/19/858479/353944.terrain differ diff --git a/public/terrain/19/858479/353945.terrain b/public/terrain/19/858479/353945.terrain new file mode 100644 index 000000000..db609381b Binary files /dev/null and b/public/terrain/19/858479/353945.terrain differ diff --git a/public/terrain/19/858479/353946.terrain b/public/terrain/19/858479/353946.terrain new file mode 100644 index 000000000..ba64fb6d6 Binary files /dev/null and b/public/terrain/19/858479/353946.terrain differ diff --git a/public/terrain/19/858479/353947.terrain b/public/terrain/19/858479/353947.terrain new file mode 100644 index 000000000..9ab3028e1 Binary files /dev/null and b/public/terrain/19/858479/353947.terrain differ diff --git a/public/terrain/19/858479/353948.terrain b/public/terrain/19/858479/353948.terrain new file mode 100644 index 000000000..9c667fa48 Binary files /dev/null and b/public/terrain/19/858479/353948.terrain differ diff --git a/public/terrain/19/858479/353949.terrain b/public/terrain/19/858479/353949.terrain new file mode 100644 index 000000000..d1267a941 Binary files /dev/null and b/public/terrain/19/858479/353949.terrain differ diff --git a/public/terrain/19/858479/353950.terrain b/public/terrain/19/858479/353950.terrain new file mode 100644 index 000000000..f37b64686 Binary files /dev/null and b/public/terrain/19/858479/353950.terrain differ diff --git a/public/terrain/19/858479/353951.terrain b/public/terrain/19/858479/353951.terrain new file mode 100644 index 000000000..e6c6d70c9 Binary files /dev/null and b/public/terrain/19/858479/353951.terrain differ diff --git a/public/terrain/19/858479/353952.terrain b/public/terrain/19/858479/353952.terrain new file mode 100644 index 000000000..ba8af5dfb Binary files /dev/null and b/public/terrain/19/858479/353952.terrain differ diff --git a/public/terrain/19/858479/353953.terrain b/public/terrain/19/858479/353953.terrain new file mode 100644 index 000000000..093765877 Binary files /dev/null and b/public/terrain/19/858479/353953.terrain differ diff --git a/public/terrain/19/858479/353954.terrain b/public/terrain/19/858479/353954.terrain new file mode 100644 index 000000000..e098f6123 Binary files /dev/null and b/public/terrain/19/858479/353954.terrain differ diff --git a/public/terrain/19/858479/353955.terrain b/public/terrain/19/858479/353955.terrain new file mode 100644 index 000000000..ba86d7c18 Binary files /dev/null and b/public/terrain/19/858479/353955.terrain differ diff --git a/public/terrain/19/858479/353956.terrain b/public/terrain/19/858479/353956.terrain new file mode 100644 index 000000000..41e83f4eb Binary files /dev/null and b/public/terrain/19/858479/353956.terrain differ diff --git a/public/terrain/19/858479/353957.terrain b/public/terrain/19/858479/353957.terrain new file mode 100644 index 000000000..f86fd2654 Binary files /dev/null and b/public/terrain/19/858479/353957.terrain differ diff --git a/public/terrain/19/858479/353958.terrain b/public/terrain/19/858479/353958.terrain new file mode 100644 index 000000000..4bf45c209 Binary files /dev/null and b/public/terrain/19/858479/353958.terrain differ diff --git a/public/terrain/19/858479/353959.terrain b/public/terrain/19/858479/353959.terrain new file mode 100644 index 000000000..3de7289c3 Binary files /dev/null and b/public/terrain/19/858479/353959.terrain differ diff --git a/public/terrain/19/858479/353960.terrain b/public/terrain/19/858479/353960.terrain new file mode 100644 index 000000000..8fa1f28b2 Binary files /dev/null and b/public/terrain/19/858479/353960.terrain differ diff --git a/public/terrain/19/858479/353961.terrain b/public/terrain/19/858479/353961.terrain new file mode 100644 index 000000000..af6b56108 Binary files /dev/null and b/public/terrain/19/858479/353961.terrain differ diff --git a/public/terrain/19/858479/353962.terrain b/public/terrain/19/858479/353962.terrain new file mode 100644 index 000000000..6371d0952 Binary files /dev/null and b/public/terrain/19/858479/353962.terrain differ diff --git a/public/terrain/19/858479/353963.terrain b/public/terrain/19/858479/353963.terrain new file mode 100644 index 000000000..2b552e3b8 Binary files /dev/null and b/public/terrain/19/858479/353963.terrain differ diff --git a/public/terrain/19/858479/353964.terrain b/public/terrain/19/858479/353964.terrain new file mode 100644 index 000000000..1f63e5bff Binary files /dev/null and b/public/terrain/19/858479/353964.terrain differ diff --git a/public/terrain/19/858479/353965.terrain b/public/terrain/19/858479/353965.terrain new file mode 100644 index 000000000..79cff56d8 Binary files /dev/null and b/public/terrain/19/858479/353965.terrain differ diff --git a/public/terrain/19/858479/353966.terrain b/public/terrain/19/858479/353966.terrain new file mode 100644 index 000000000..41059ac37 Binary files /dev/null and b/public/terrain/19/858479/353966.terrain differ diff --git a/public/terrain/19/858479/353967.terrain b/public/terrain/19/858479/353967.terrain new file mode 100644 index 000000000..4848d145e Binary files /dev/null and b/public/terrain/19/858479/353967.terrain differ diff --git a/public/terrain/19/858479/353968.terrain b/public/terrain/19/858479/353968.terrain new file mode 100644 index 000000000..bea5f8ced Binary files /dev/null and b/public/terrain/19/858479/353968.terrain differ diff --git a/public/terrain/19/858479/353969.terrain b/public/terrain/19/858479/353969.terrain new file mode 100644 index 000000000..c78e9032f Binary files /dev/null and b/public/terrain/19/858479/353969.terrain differ diff --git a/public/terrain/19/858479/353970.terrain b/public/terrain/19/858479/353970.terrain new file mode 100644 index 000000000..9a9440d33 Binary files /dev/null and b/public/terrain/19/858479/353970.terrain differ diff --git a/public/terrain/19/858479/353971.terrain b/public/terrain/19/858479/353971.terrain new file mode 100644 index 000000000..e746f6b59 Binary files /dev/null and b/public/terrain/19/858479/353971.terrain differ diff --git a/public/terrain/19/858479/353972.terrain b/public/terrain/19/858479/353972.terrain new file mode 100644 index 000000000..89405f3da Binary files /dev/null and b/public/terrain/19/858479/353972.terrain differ diff --git a/public/terrain/19/858479/353973.terrain b/public/terrain/19/858479/353973.terrain new file mode 100644 index 000000000..6837777d8 Binary files /dev/null and b/public/terrain/19/858479/353973.terrain differ diff --git a/public/terrain/19/858479/353974.terrain b/public/terrain/19/858479/353974.terrain new file mode 100644 index 000000000..b88a22481 Binary files /dev/null and b/public/terrain/19/858479/353974.terrain differ diff --git a/public/terrain/19/858479/353975.terrain b/public/terrain/19/858479/353975.terrain new file mode 100644 index 000000000..c1e908592 Binary files /dev/null and b/public/terrain/19/858479/353975.terrain differ diff --git a/public/terrain/19/858479/353976.terrain b/public/terrain/19/858479/353976.terrain new file mode 100644 index 000000000..7f2a8ef31 Binary files /dev/null and b/public/terrain/19/858479/353976.terrain differ diff --git a/public/terrain/19/858479/353977.terrain b/public/terrain/19/858479/353977.terrain new file mode 100644 index 000000000..c1998efeb Binary files /dev/null and b/public/terrain/19/858479/353977.terrain differ diff --git a/public/terrain/19/858479/353978.terrain b/public/terrain/19/858479/353978.terrain new file mode 100644 index 000000000..bdd89d677 Binary files /dev/null and b/public/terrain/19/858479/353978.terrain differ diff --git a/public/terrain/19/858479/353979.terrain b/public/terrain/19/858479/353979.terrain new file mode 100644 index 000000000..ce408f2d6 Binary files /dev/null and b/public/terrain/19/858479/353979.terrain differ diff --git a/public/terrain/19/858479/353980.terrain b/public/terrain/19/858479/353980.terrain new file mode 100644 index 000000000..a168e4891 Binary files /dev/null and b/public/terrain/19/858479/353980.terrain differ diff --git a/public/terrain/19/858479/353981.terrain b/public/terrain/19/858479/353981.terrain new file mode 100644 index 000000000..3d6332746 Binary files /dev/null and b/public/terrain/19/858479/353981.terrain differ diff --git a/public/terrain/19/858479/353982.terrain b/public/terrain/19/858479/353982.terrain new file mode 100644 index 000000000..e961272c3 Binary files /dev/null and b/public/terrain/19/858479/353982.terrain differ diff --git a/public/terrain/19/858479/353983.terrain b/public/terrain/19/858479/353983.terrain new file mode 100644 index 000000000..da9fbb352 Binary files /dev/null and b/public/terrain/19/858479/353983.terrain differ diff --git a/public/terrain/19/858479/353984.terrain b/public/terrain/19/858479/353984.terrain new file mode 100644 index 000000000..0c1b2f8cc Binary files /dev/null and b/public/terrain/19/858479/353984.terrain differ diff --git a/public/terrain/19/858479/353985.terrain b/public/terrain/19/858479/353985.terrain new file mode 100644 index 000000000..6e450d0e4 Binary files /dev/null and b/public/terrain/19/858479/353985.terrain differ diff --git a/public/terrain/19/858479/353986.terrain b/public/terrain/19/858479/353986.terrain new file mode 100644 index 000000000..57a9bf495 Binary files /dev/null and b/public/terrain/19/858479/353986.terrain differ diff --git a/public/terrain/19/858479/353987.terrain b/public/terrain/19/858479/353987.terrain new file mode 100644 index 000000000..7ba26f8c6 Binary files /dev/null and b/public/terrain/19/858479/353987.terrain differ diff --git a/public/terrain/19/858479/353988.terrain b/public/terrain/19/858479/353988.terrain new file mode 100644 index 000000000..c9c00e265 Binary files /dev/null and b/public/terrain/19/858479/353988.terrain differ diff --git a/public/terrain/19/858479/353989.terrain b/public/terrain/19/858479/353989.terrain new file mode 100644 index 000000000..ca14d4573 Binary files /dev/null and b/public/terrain/19/858479/353989.terrain differ diff --git a/public/terrain/19/858479/353990.terrain b/public/terrain/19/858479/353990.terrain new file mode 100644 index 000000000..1b697383a Binary files /dev/null and b/public/terrain/19/858479/353990.terrain differ diff --git a/public/terrain/19/858479/353991.terrain b/public/terrain/19/858479/353991.terrain new file mode 100644 index 000000000..62076f8b0 Binary files /dev/null and b/public/terrain/19/858479/353991.terrain differ diff --git a/public/terrain/19/858479/353992.terrain b/public/terrain/19/858479/353992.terrain new file mode 100644 index 000000000..36e6b04a1 Binary files /dev/null and b/public/terrain/19/858479/353992.terrain differ diff --git a/public/terrain/19/858479/353993.terrain b/public/terrain/19/858479/353993.terrain new file mode 100644 index 000000000..0abfbd1a5 Binary files /dev/null and b/public/terrain/19/858479/353993.terrain differ diff --git a/public/terrain/19/858479/353994.terrain b/public/terrain/19/858479/353994.terrain new file mode 100644 index 000000000..c96c28e5f Binary files /dev/null and b/public/terrain/19/858479/353994.terrain differ diff --git a/public/terrain/19/858479/353995.terrain b/public/terrain/19/858479/353995.terrain new file mode 100644 index 000000000..df4ee63e3 Binary files /dev/null and b/public/terrain/19/858479/353995.terrain differ diff --git a/public/terrain/19/858479/353996.terrain b/public/terrain/19/858479/353996.terrain new file mode 100644 index 000000000..6bae7c471 Binary files /dev/null and b/public/terrain/19/858479/353996.terrain differ diff --git a/public/terrain/19/858479/353997.terrain b/public/terrain/19/858479/353997.terrain new file mode 100644 index 000000000..48fc3d7ab Binary files /dev/null and b/public/terrain/19/858479/353997.terrain differ diff --git a/public/terrain/19/858479/353998.terrain b/public/terrain/19/858479/353998.terrain new file mode 100644 index 000000000..677c628ed Binary files /dev/null and b/public/terrain/19/858479/353998.terrain differ diff --git a/public/terrain/19/858479/353999.terrain b/public/terrain/19/858479/353999.terrain new file mode 100644 index 000000000..aaf5f723d Binary files /dev/null and b/public/terrain/19/858479/353999.terrain differ diff --git a/public/terrain/19/858479/354000.terrain b/public/terrain/19/858479/354000.terrain new file mode 100644 index 000000000..c64c9e131 Binary files /dev/null and b/public/terrain/19/858479/354000.terrain differ diff --git a/public/terrain/19/858479/354001.terrain b/public/terrain/19/858479/354001.terrain new file mode 100644 index 000000000..fc934964e Binary files /dev/null and b/public/terrain/19/858479/354001.terrain differ diff --git a/public/terrain/19/858479/354002.terrain b/public/terrain/19/858479/354002.terrain new file mode 100644 index 000000000..2900957bd Binary files /dev/null and b/public/terrain/19/858479/354002.terrain differ diff --git a/public/terrain/19/858479/354003.terrain b/public/terrain/19/858479/354003.terrain new file mode 100644 index 000000000..ab74b40e3 Binary files /dev/null and b/public/terrain/19/858479/354003.terrain differ diff --git a/public/terrain/19/858479/354004.terrain b/public/terrain/19/858479/354004.terrain new file mode 100644 index 000000000..daf63fda2 Binary files /dev/null and b/public/terrain/19/858479/354004.terrain differ diff --git a/public/terrain/19/858479/354005.terrain b/public/terrain/19/858479/354005.terrain new file mode 100644 index 000000000..1849a6923 Binary files /dev/null and b/public/terrain/19/858479/354005.terrain differ diff --git a/public/terrain/19/858479/354006.terrain b/public/terrain/19/858479/354006.terrain new file mode 100644 index 000000000..9fc659f49 Binary files /dev/null and b/public/terrain/19/858479/354006.terrain differ diff --git a/public/terrain/19/858479/354007.terrain b/public/terrain/19/858479/354007.terrain new file mode 100644 index 000000000..5ba8015d5 Binary files /dev/null and b/public/terrain/19/858479/354007.terrain differ diff --git a/public/terrain/19/858479/354008.terrain b/public/terrain/19/858479/354008.terrain new file mode 100644 index 000000000..633c37fa3 Binary files /dev/null and b/public/terrain/19/858479/354008.terrain differ diff --git a/public/terrain/19/858479/354009.terrain b/public/terrain/19/858479/354009.terrain new file mode 100644 index 000000000..9752743a5 Binary files /dev/null and b/public/terrain/19/858479/354009.terrain differ diff --git a/public/terrain/19/858479/354010.terrain b/public/terrain/19/858479/354010.terrain new file mode 100644 index 000000000..bc15335d4 Binary files /dev/null and b/public/terrain/19/858479/354010.terrain differ diff --git a/public/terrain/19/858479/354011.terrain b/public/terrain/19/858479/354011.terrain new file mode 100644 index 000000000..ab2f9c6d1 Binary files /dev/null and b/public/terrain/19/858479/354011.terrain differ diff --git a/public/terrain/19/858479/354012.terrain b/public/terrain/19/858479/354012.terrain new file mode 100644 index 000000000..566285e9e Binary files /dev/null and b/public/terrain/19/858479/354012.terrain differ diff --git a/public/terrain/19/858479/354013.terrain b/public/terrain/19/858479/354013.terrain new file mode 100644 index 000000000..d72c2257c Binary files /dev/null and b/public/terrain/19/858479/354013.terrain differ diff --git a/public/terrain/19/858479/354014.terrain b/public/terrain/19/858479/354014.terrain new file mode 100644 index 000000000..2c3f4a3d0 Binary files /dev/null and b/public/terrain/19/858479/354014.terrain differ diff --git a/public/terrain/19/858479/354015.terrain b/public/terrain/19/858479/354015.terrain new file mode 100644 index 000000000..45c91760b Binary files /dev/null and b/public/terrain/19/858479/354015.terrain differ diff --git a/public/terrain/19/858479/354016.terrain b/public/terrain/19/858479/354016.terrain new file mode 100644 index 000000000..a4aceb42d Binary files /dev/null and b/public/terrain/19/858479/354016.terrain differ diff --git a/public/terrain/19/858479/354017.terrain b/public/terrain/19/858479/354017.terrain new file mode 100644 index 000000000..c1dddeb76 Binary files /dev/null and b/public/terrain/19/858479/354017.terrain differ diff --git a/public/terrain/19/858479/354018.terrain b/public/terrain/19/858479/354018.terrain new file mode 100644 index 000000000..bbb5d91ba Binary files /dev/null and b/public/terrain/19/858479/354018.terrain differ diff --git a/public/terrain/19/858479/354019.terrain b/public/terrain/19/858479/354019.terrain new file mode 100644 index 000000000..c4553f37c Binary files /dev/null and b/public/terrain/19/858479/354019.terrain differ diff --git a/public/terrain/19/858479/354020.terrain b/public/terrain/19/858479/354020.terrain new file mode 100644 index 000000000..b26d8fbab Binary files /dev/null and b/public/terrain/19/858479/354020.terrain differ diff --git a/public/terrain/19/858479/354021.terrain b/public/terrain/19/858479/354021.terrain new file mode 100644 index 000000000..57dac78a0 Binary files /dev/null and b/public/terrain/19/858479/354021.terrain differ diff --git a/public/terrain/19/858479/354022.terrain b/public/terrain/19/858479/354022.terrain new file mode 100644 index 000000000..129d49ab3 Binary files /dev/null and b/public/terrain/19/858479/354022.terrain differ diff --git a/public/terrain/19/858479/354023.terrain b/public/terrain/19/858479/354023.terrain new file mode 100644 index 000000000..edfd97b52 Binary files /dev/null and b/public/terrain/19/858479/354023.terrain differ diff --git a/public/terrain/19/858479/354024.terrain b/public/terrain/19/858479/354024.terrain new file mode 100644 index 000000000..c32906480 Binary files /dev/null and b/public/terrain/19/858479/354024.terrain differ diff --git a/public/terrain/19/858479/354025.terrain b/public/terrain/19/858479/354025.terrain new file mode 100644 index 000000000..071871952 Binary files /dev/null and b/public/terrain/19/858479/354025.terrain differ diff --git a/public/terrain/19/858479/354026.terrain b/public/terrain/19/858479/354026.terrain new file mode 100644 index 000000000..767761488 Binary files /dev/null and b/public/terrain/19/858479/354026.terrain differ diff --git a/public/terrain/19/858479/354027.terrain b/public/terrain/19/858479/354027.terrain new file mode 100644 index 000000000..0ce06895a Binary files /dev/null and b/public/terrain/19/858479/354027.terrain differ diff --git a/public/terrain/19/858479/354028.terrain b/public/terrain/19/858479/354028.terrain new file mode 100644 index 000000000..a22e48216 Binary files /dev/null and b/public/terrain/19/858479/354028.terrain differ diff --git a/public/terrain/19/858479/354029.terrain b/public/terrain/19/858479/354029.terrain new file mode 100644 index 000000000..67dab1943 Binary files /dev/null and b/public/terrain/19/858479/354029.terrain differ diff --git a/public/terrain/19/858479/354030.terrain b/public/terrain/19/858479/354030.terrain new file mode 100644 index 000000000..a9b5ff23c Binary files /dev/null and b/public/terrain/19/858479/354030.terrain differ diff --git a/public/terrain/19/858479/354031.terrain b/public/terrain/19/858479/354031.terrain new file mode 100644 index 000000000..dee098f0d Binary files /dev/null and b/public/terrain/19/858479/354031.terrain differ diff --git a/public/terrain/19/858479/354032.terrain b/public/terrain/19/858479/354032.terrain new file mode 100644 index 000000000..1bee99f41 Binary files /dev/null and b/public/terrain/19/858479/354032.terrain differ diff --git a/public/terrain/19/858479/354033.terrain b/public/terrain/19/858479/354033.terrain new file mode 100644 index 000000000..dab3144b5 Binary files /dev/null and b/public/terrain/19/858479/354033.terrain differ diff --git a/public/terrain/19/858479/354034.terrain b/public/terrain/19/858479/354034.terrain new file mode 100644 index 000000000..1ae270a8b Binary files /dev/null and b/public/terrain/19/858479/354034.terrain differ diff --git a/public/terrain/19/858479/354035.terrain b/public/terrain/19/858479/354035.terrain new file mode 100644 index 000000000..7a6bec807 Binary files /dev/null and b/public/terrain/19/858479/354035.terrain differ diff --git a/public/terrain/19/858479/354036.terrain b/public/terrain/19/858479/354036.terrain new file mode 100644 index 000000000..bf2f38531 Binary files /dev/null and b/public/terrain/19/858479/354036.terrain differ diff --git a/public/terrain/19/858479/354037.terrain b/public/terrain/19/858479/354037.terrain new file mode 100644 index 000000000..d8b7c2101 Binary files /dev/null and b/public/terrain/19/858479/354037.terrain differ diff --git a/public/terrain/19/858479/354038.terrain b/public/terrain/19/858479/354038.terrain new file mode 100644 index 000000000..4fd2e7704 Binary files /dev/null and b/public/terrain/19/858479/354038.terrain differ diff --git a/public/terrain/19/858479/354039.terrain b/public/terrain/19/858479/354039.terrain new file mode 100644 index 000000000..9c2060cb3 Binary files /dev/null and b/public/terrain/19/858479/354039.terrain differ diff --git a/public/terrain/19/858479/354040.terrain b/public/terrain/19/858479/354040.terrain new file mode 100644 index 000000000..72dbb41f2 Binary files /dev/null and b/public/terrain/19/858479/354040.terrain differ diff --git a/public/terrain/19/858479/354041.terrain b/public/terrain/19/858479/354041.terrain new file mode 100644 index 000000000..45380cd88 Binary files /dev/null and b/public/terrain/19/858479/354041.terrain differ diff --git a/public/terrain/19/858479/354042.terrain b/public/terrain/19/858479/354042.terrain new file mode 100644 index 000000000..c468166f6 Binary files /dev/null and b/public/terrain/19/858479/354042.terrain differ diff --git a/public/terrain/19/858479/354043.terrain b/public/terrain/19/858479/354043.terrain new file mode 100644 index 000000000..b7c4d4d84 Binary files /dev/null and b/public/terrain/19/858479/354043.terrain differ diff --git a/public/terrain/19/858479/354044.terrain b/public/terrain/19/858479/354044.terrain new file mode 100644 index 000000000..7fd72c890 Binary files /dev/null and b/public/terrain/19/858479/354044.terrain differ diff --git a/public/terrain/19/858479/354045.terrain b/public/terrain/19/858479/354045.terrain new file mode 100644 index 000000000..9d7aed974 Binary files /dev/null and b/public/terrain/19/858479/354045.terrain differ diff --git a/public/terrain/19/858479/354046.terrain b/public/terrain/19/858479/354046.terrain new file mode 100644 index 000000000..51b709d5a Binary files /dev/null and b/public/terrain/19/858479/354046.terrain differ diff --git a/public/terrain/19/858479/354047.terrain b/public/terrain/19/858479/354047.terrain new file mode 100644 index 000000000..55d93cfa5 Binary files /dev/null and b/public/terrain/19/858479/354047.terrain differ diff --git a/public/terrain/19/858479/354048.terrain b/public/terrain/19/858479/354048.terrain new file mode 100644 index 000000000..3bc651f93 Binary files /dev/null and b/public/terrain/19/858479/354048.terrain differ diff --git a/public/terrain/19/858479/354049.terrain b/public/terrain/19/858479/354049.terrain new file mode 100644 index 000000000..98daf4e66 Binary files /dev/null and b/public/terrain/19/858479/354049.terrain differ diff --git a/public/terrain/19/858479/354050.terrain b/public/terrain/19/858479/354050.terrain new file mode 100644 index 000000000..cdb5b6f4f Binary files /dev/null and b/public/terrain/19/858479/354050.terrain differ diff --git a/public/terrain/19/858479/354051.terrain b/public/terrain/19/858479/354051.terrain new file mode 100644 index 000000000..22469763d Binary files /dev/null and b/public/terrain/19/858479/354051.terrain differ diff --git a/public/terrain/19/858479/354052.terrain b/public/terrain/19/858479/354052.terrain new file mode 100644 index 000000000..ce0c1b9c4 Binary files /dev/null and b/public/terrain/19/858479/354052.terrain differ diff --git a/public/terrain/19/858479/354053.terrain b/public/terrain/19/858479/354053.terrain new file mode 100644 index 000000000..6b6059282 Binary files /dev/null and b/public/terrain/19/858479/354053.terrain differ diff --git a/public/terrain/19/858479/354054.terrain b/public/terrain/19/858479/354054.terrain new file mode 100644 index 000000000..fe471c9d5 Binary files /dev/null and b/public/terrain/19/858479/354054.terrain differ diff --git a/public/terrain/19/858479/354055.terrain b/public/terrain/19/858479/354055.terrain new file mode 100644 index 000000000..b988d3593 Binary files /dev/null and b/public/terrain/19/858479/354055.terrain differ diff --git a/public/terrain/19/858479/354056.terrain b/public/terrain/19/858479/354056.terrain new file mode 100644 index 000000000..a77339681 Binary files /dev/null and b/public/terrain/19/858479/354056.terrain differ diff --git a/public/terrain/19/858479/354057.terrain b/public/terrain/19/858479/354057.terrain new file mode 100644 index 000000000..6cc8b1422 Binary files /dev/null and b/public/terrain/19/858479/354057.terrain differ diff --git a/public/terrain/19/858479/354058.terrain b/public/terrain/19/858479/354058.terrain new file mode 100644 index 000000000..c5dfc115a Binary files /dev/null and b/public/terrain/19/858479/354058.terrain differ diff --git a/public/terrain/19/858479/354059.terrain b/public/terrain/19/858479/354059.terrain new file mode 100644 index 000000000..4e9f58ee7 Binary files /dev/null and b/public/terrain/19/858479/354059.terrain differ diff --git a/public/terrain/19/858480/353743.terrain b/public/terrain/19/858480/353743.terrain new file mode 100644 index 000000000..703611518 Binary files /dev/null and b/public/terrain/19/858480/353743.terrain differ diff --git a/public/terrain/19/858480/353744.terrain b/public/terrain/19/858480/353744.terrain new file mode 100644 index 000000000..cd1963898 Binary files /dev/null and b/public/terrain/19/858480/353744.terrain differ diff --git a/public/terrain/19/858480/353745.terrain b/public/terrain/19/858480/353745.terrain new file mode 100644 index 000000000..1011bd313 Binary files /dev/null and b/public/terrain/19/858480/353745.terrain differ diff --git a/public/terrain/19/858480/353746.terrain b/public/terrain/19/858480/353746.terrain new file mode 100644 index 000000000..284fcd49e Binary files /dev/null and b/public/terrain/19/858480/353746.terrain differ diff --git a/public/terrain/19/858480/353747.terrain b/public/terrain/19/858480/353747.terrain new file mode 100644 index 000000000..90172f831 Binary files /dev/null and b/public/terrain/19/858480/353747.terrain differ diff --git a/public/terrain/19/858480/353748.terrain b/public/terrain/19/858480/353748.terrain new file mode 100644 index 000000000..5db4efbf6 Binary files /dev/null and b/public/terrain/19/858480/353748.terrain differ diff --git a/public/terrain/19/858480/353749.terrain b/public/terrain/19/858480/353749.terrain new file mode 100644 index 000000000..c04f92629 Binary files /dev/null and b/public/terrain/19/858480/353749.terrain differ diff --git a/public/terrain/19/858480/353750.terrain b/public/terrain/19/858480/353750.terrain new file mode 100644 index 000000000..83933d54b Binary files /dev/null and b/public/terrain/19/858480/353750.terrain differ diff --git a/public/terrain/19/858480/353751.terrain b/public/terrain/19/858480/353751.terrain new file mode 100644 index 000000000..475fb9980 Binary files /dev/null and b/public/terrain/19/858480/353751.terrain differ diff --git a/public/terrain/19/858480/353752.terrain b/public/terrain/19/858480/353752.terrain new file mode 100644 index 000000000..d7a9b3052 Binary files /dev/null and b/public/terrain/19/858480/353752.terrain differ diff --git a/public/terrain/19/858480/353753.terrain b/public/terrain/19/858480/353753.terrain new file mode 100644 index 000000000..5dbcc663b Binary files /dev/null and b/public/terrain/19/858480/353753.terrain differ diff --git a/public/terrain/19/858480/353754.terrain b/public/terrain/19/858480/353754.terrain new file mode 100644 index 000000000..45518603d Binary files /dev/null and b/public/terrain/19/858480/353754.terrain differ diff --git a/public/terrain/19/858480/353755.terrain b/public/terrain/19/858480/353755.terrain new file mode 100644 index 000000000..fe02201e5 Binary files /dev/null and b/public/terrain/19/858480/353755.terrain differ diff --git a/public/terrain/19/858480/353756.terrain b/public/terrain/19/858480/353756.terrain new file mode 100644 index 000000000..317987c3d Binary files /dev/null and b/public/terrain/19/858480/353756.terrain differ diff --git a/public/terrain/19/858480/353757.terrain b/public/terrain/19/858480/353757.terrain new file mode 100644 index 000000000..51318d479 Binary files /dev/null and b/public/terrain/19/858480/353757.terrain differ diff --git a/public/terrain/19/858480/353758.terrain b/public/terrain/19/858480/353758.terrain new file mode 100644 index 000000000..3666f0108 Binary files /dev/null and b/public/terrain/19/858480/353758.terrain differ diff --git a/public/terrain/19/858480/353759.terrain b/public/terrain/19/858480/353759.terrain new file mode 100644 index 000000000..ca7c3d6d3 Binary files /dev/null and b/public/terrain/19/858480/353759.terrain differ diff --git a/public/terrain/19/858480/353760.terrain b/public/terrain/19/858480/353760.terrain new file mode 100644 index 000000000..6a68ee02a Binary files /dev/null and b/public/terrain/19/858480/353760.terrain differ diff --git a/public/terrain/19/858480/353761.terrain b/public/terrain/19/858480/353761.terrain new file mode 100644 index 000000000..64921b5bf Binary files /dev/null and b/public/terrain/19/858480/353761.terrain differ diff --git a/public/terrain/19/858480/353762.terrain b/public/terrain/19/858480/353762.terrain new file mode 100644 index 000000000..5b8a4f840 Binary files /dev/null and b/public/terrain/19/858480/353762.terrain differ diff --git a/public/terrain/19/858480/353763.terrain b/public/terrain/19/858480/353763.terrain new file mode 100644 index 000000000..480ff7ed0 Binary files /dev/null and b/public/terrain/19/858480/353763.terrain differ diff --git a/public/terrain/19/858480/353764.terrain b/public/terrain/19/858480/353764.terrain new file mode 100644 index 000000000..61ff0bf1d Binary files /dev/null and b/public/terrain/19/858480/353764.terrain differ diff --git a/public/terrain/19/858480/353765.terrain b/public/terrain/19/858480/353765.terrain new file mode 100644 index 000000000..7690294b3 Binary files /dev/null and b/public/terrain/19/858480/353765.terrain differ diff --git a/public/terrain/19/858480/353766.terrain b/public/terrain/19/858480/353766.terrain new file mode 100644 index 000000000..a7ee5c557 Binary files /dev/null and b/public/terrain/19/858480/353766.terrain differ diff --git a/public/terrain/19/858480/353767.terrain b/public/terrain/19/858480/353767.terrain new file mode 100644 index 000000000..437e50806 Binary files /dev/null and b/public/terrain/19/858480/353767.terrain differ diff --git a/public/terrain/19/858480/353768.terrain b/public/terrain/19/858480/353768.terrain new file mode 100644 index 000000000..4b3274af7 Binary files /dev/null and b/public/terrain/19/858480/353768.terrain differ diff --git a/public/terrain/19/858480/353769.terrain b/public/terrain/19/858480/353769.terrain new file mode 100644 index 000000000..ad5057b94 Binary files /dev/null and b/public/terrain/19/858480/353769.terrain differ diff --git a/public/terrain/19/858480/353770.terrain b/public/terrain/19/858480/353770.terrain new file mode 100644 index 000000000..8abb866e7 Binary files /dev/null and b/public/terrain/19/858480/353770.terrain differ diff --git a/public/terrain/19/858480/353771.terrain b/public/terrain/19/858480/353771.terrain new file mode 100644 index 000000000..310c12e7e Binary files /dev/null and b/public/terrain/19/858480/353771.terrain differ diff --git a/public/terrain/19/858480/353772.terrain b/public/terrain/19/858480/353772.terrain new file mode 100644 index 000000000..71c3f6246 Binary files /dev/null and b/public/terrain/19/858480/353772.terrain differ diff --git a/public/terrain/19/858480/353773.terrain b/public/terrain/19/858480/353773.terrain new file mode 100644 index 000000000..ed1fd471d Binary files /dev/null and b/public/terrain/19/858480/353773.terrain differ diff --git a/public/terrain/19/858480/353774.terrain b/public/terrain/19/858480/353774.terrain new file mode 100644 index 000000000..bcf4530ac Binary files /dev/null and b/public/terrain/19/858480/353774.terrain differ diff --git a/public/terrain/19/858480/353775.terrain b/public/terrain/19/858480/353775.terrain new file mode 100644 index 000000000..7ad14b89a Binary files /dev/null and b/public/terrain/19/858480/353775.terrain differ diff --git a/public/terrain/19/858480/353776.terrain b/public/terrain/19/858480/353776.terrain new file mode 100644 index 000000000..cfffc0892 Binary files /dev/null and b/public/terrain/19/858480/353776.terrain differ diff --git a/public/terrain/19/858480/353777.terrain b/public/terrain/19/858480/353777.terrain new file mode 100644 index 000000000..a1c6b489a Binary files /dev/null and b/public/terrain/19/858480/353777.terrain differ diff --git a/public/terrain/19/858480/353778.terrain b/public/terrain/19/858480/353778.terrain new file mode 100644 index 000000000..106db99ba Binary files /dev/null and b/public/terrain/19/858480/353778.terrain differ diff --git a/public/terrain/19/858480/353779.terrain b/public/terrain/19/858480/353779.terrain new file mode 100644 index 000000000..133cf9699 Binary files /dev/null and b/public/terrain/19/858480/353779.terrain differ diff --git a/public/terrain/19/858480/353780.terrain b/public/terrain/19/858480/353780.terrain new file mode 100644 index 000000000..0836bdfff Binary files /dev/null and b/public/terrain/19/858480/353780.terrain differ diff --git a/public/terrain/19/858480/353781.terrain b/public/terrain/19/858480/353781.terrain new file mode 100644 index 000000000..ad43deccf Binary files /dev/null and b/public/terrain/19/858480/353781.terrain differ diff --git a/public/terrain/19/858480/353782.terrain b/public/terrain/19/858480/353782.terrain new file mode 100644 index 000000000..1774513b7 Binary files /dev/null and b/public/terrain/19/858480/353782.terrain differ diff --git a/public/terrain/19/858480/353783.terrain b/public/terrain/19/858480/353783.terrain new file mode 100644 index 000000000..b760abd47 Binary files /dev/null and b/public/terrain/19/858480/353783.terrain differ diff --git a/public/terrain/19/858480/353784.terrain b/public/terrain/19/858480/353784.terrain new file mode 100644 index 000000000..afe35b8be Binary files /dev/null and b/public/terrain/19/858480/353784.terrain differ diff --git a/public/terrain/19/858480/353785.terrain b/public/terrain/19/858480/353785.terrain new file mode 100644 index 000000000..2e28fd7a1 Binary files /dev/null and b/public/terrain/19/858480/353785.terrain differ diff --git a/public/terrain/19/858480/353786.terrain b/public/terrain/19/858480/353786.terrain new file mode 100644 index 000000000..2a94ed256 Binary files /dev/null and b/public/terrain/19/858480/353786.terrain differ diff --git a/public/terrain/19/858480/353787.terrain b/public/terrain/19/858480/353787.terrain new file mode 100644 index 000000000..d56c87b4d Binary files /dev/null and b/public/terrain/19/858480/353787.terrain differ diff --git a/public/terrain/19/858480/353788.terrain b/public/terrain/19/858480/353788.terrain new file mode 100644 index 000000000..ae7f02664 Binary files /dev/null and b/public/terrain/19/858480/353788.terrain differ diff --git a/public/terrain/19/858480/353789.terrain b/public/terrain/19/858480/353789.terrain new file mode 100644 index 000000000..3cd570ae9 Binary files /dev/null and b/public/terrain/19/858480/353789.terrain differ diff --git a/public/terrain/19/858480/353790.terrain b/public/terrain/19/858480/353790.terrain new file mode 100644 index 000000000..f7086d3ee Binary files /dev/null and b/public/terrain/19/858480/353790.terrain differ diff --git a/public/terrain/19/858480/353791.terrain b/public/terrain/19/858480/353791.terrain new file mode 100644 index 000000000..e65b6ad83 Binary files /dev/null and b/public/terrain/19/858480/353791.terrain differ diff --git a/public/terrain/19/858480/353792.terrain b/public/terrain/19/858480/353792.terrain new file mode 100644 index 000000000..11f679a90 Binary files /dev/null and b/public/terrain/19/858480/353792.terrain differ diff --git a/public/terrain/19/858480/353793.terrain b/public/terrain/19/858480/353793.terrain new file mode 100644 index 000000000..89721d1fd Binary files /dev/null and b/public/terrain/19/858480/353793.terrain differ diff --git a/public/terrain/19/858480/353794.terrain b/public/terrain/19/858480/353794.terrain new file mode 100644 index 000000000..a83745f6b Binary files /dev/null and b/public/terrain/19/858480/353794.terrain differ diff --git a/public/terrain/19/858480/353795.terrain b/public/terrain/19/858480/353795.terrain new file mode 100644 index 000000000..ff177c1e8 Binary files /dev/null and b/public/terrain/19/858480/353795.terrain differ diff --git a/public/terrain/19/858480/353796.terrain b/public/terrain/19/858480/353796.terrain new file mode 100644 index 000000000..dd262cb23 Binary files /dev/null and b/public/terrain/19/858480/353796.terrain differ diff --git a/public/terrain/19/858480/353797.terrain b/public/terrain/19/858480/353797.terrain new file mode 100644 index 000000000..9e13eb687 Binary files /dev/null and b/public/terrain/19/858480/353797.terrain differ diff --git a/public/terrain/19/858480/353798.terrain b/public/terrain/19/858480/353798.terrain new file mode 100644 index 000000000..8b3d8ca4e Binary files /dev/null and b/public/terrain/19/858480/353798.terrain differ diff --git a/public/terrain/19/858480/353799.terrain b/public/terrain/19/858480/353799.terrain new file mode 100644 index 000000000..8a1bbc36f Binary files /dev/null and b/public/terrain/19/858480/353799.terrain differ diff --git a/public/terrain/19/858480/353800.terrain b/public/terrain/19/858480/353800.terrain new file mode 100644 index 000000000..fdbe2af34 Binary files /dev/null and b/public/terrain/19/858480/353800.terrain differ diff --git a/public/terrain/19/858480/353801.terrain b/public/terrain/19/858480/353801.terrain new file mode 100644 index 000000000..eeafb35cf Binary files /dev/null and b/public/terrain/19/858480/353801.terrain differ diff --git a/public/terrain/19/858480/353802.terrain b/public/terrain/19/858480/353802.terrain new file mode 100644 index 000000000..eab4d1ec0 Binary files /dev/null and b/public/terrain/19/858480/353802.terrain differ diff --git a/public/terrain/19/858480/353803.terrain b/public/terrain/19/858480/353803.terrain new file mode 100644 index 000000000..c7ee129a9 Binary files /dev/null and b/public/terrain/19/858480/353803.terrain differ diff --git a/public/terrain/19/858480/353804.terrain b/public/terrain/19/858480/353804.terrain new file mode 100644 index 000000000..d10b4d352 Binary files /dev/null and b/public/terrain/19/858480/353804.terrain differ diff --git a/public/terrain/19/858480/353805.terrain b/public/terrain/19/858480/353805.terrain new file mode 100644 index 000000000..ad0401fe6 Binary files /dev/null and b/public/terrain/19/858480/353805.terrain differ diff --git a/public/terrain/19/858480/353806.terrain b/public/terrain/19/858480/353806.terrain new file mode 100644 index 000000000..eb10878c8 Binary files /dev/null and b/public/terrain/19/858480/353806.terrain differ diff --git a/public/terrain/19/858480/353807.terrain b/public/terrain/19/858480/353807.terrain new file mode 100644 index 000000000..df8ab535d Binary files /dev/null and b/public/terrain/19/858480/353807.terrain differ diff --git a/public/terrain/19/858480/353808.terrain b/public/terrain/19/858480/353808.terrain new file mode 100644 index 000000000..bdfcb8c4c Binary files /dev/null and b/public/terrain/19/858480/353808.terrain differ diff --git a/public/terrain/19/858480/353809.terrain b/public/terrain/19/858480/353809.terrain new file mode 100644 index 000000000..95b1ab9b9 Binary files /dev/null and b/public/terrain/19/858480/353809.terrain differ diff --git a/public/terrain/19/858480/353810.terrain b/public/terrain/19/858480/353810.terrain new file mode 100644 index 000000000..fed3c9ff0 Binary files /dev/null and b/public/terrain/19/858480/353810.terrain differ diff --git a/public/terrain/19/858480/353811.terrain b/public/terrain/19/858480/353811.terrain new file mode 100644 index 000000000..ba3f1873e Binary files /dev/null and b/public/terrain/19/858480/353811.terrain differ diff --git a/public/terrain/19/858480/353812.terrain b/public/terrain/19/858480/353812.terrain new file mode 100644 index 000000000..c5777d771 Binary files /dev/null and b/public/terrain/19/858480/353812.terrain differ diff --git a/public/terrain/19/858480/353813.terrain b/public/terrain/19/858480/353813.terrain new file mode 100644 index 000000000..35ecace9b Binary files /dev/null and b/public/terrain/19/858480/353813.terrain differ diff --git a/public/terrain/19/858480/353814.terrain b/public/terrain/19/858480/353814.terrain new file mode 100644 index 000000000..08bf9a954 Binary files /dev/null and b/public/terrain/19/858480/353814.terrain differ diff --git a/public/terrain/19/858480/353815.terrain b/public/terrain/19/858480/353815.terrain new file mode 100644 index 000000000..0ecbe2b8d Binary files /dev/null and b/public/terrain/19/858480/353815.terrain differ diff --git a/public/terrain/19/858480/353816.terrain b/public/terrain/19/858480/353816.terrain new file mode 100644 index 000000000..ca4dd98f0 Binary files /dev/null and b/public/terrain/19/858480/353816.terrain differ diff --git a/public/terrain/19/858480/353817.terrain b/public/terrain/19/858480/353817.terrain new file mode 100644 index 000000000..0ac0c9c8b Binary files /dev/null and b/public/terrain/19/858480/353817.terrain differ diff --git a/public/terrain/19/858480/353818.terrain b/public/terrain/19/858480/353818.terrain new file mode 100644 index 000000000..f6da4c13e Binary files /dev/null and b/public/terrain/19/858480/353818.terrain differ diff --git a/public/terrain/19/858480/353819.terrain b/public/terrain/19/858480/353819.terrain new file mode 100644 index 000000000..370f93338 Binary files /dev/null and b/public/terrain/19/858480/353819.terrain differ diff --git a/public/terrain/19/858480/353820.terrain b/public/terrain/19/858480/353820.terrain new file mode 100644 index 000000000..70633357e Binary files /dev/null and b/public/terrain/19/858480/353820.terrain differ diff --git a/public/terrain/19/858480/353821.terrain b/public/terrain/19/858480/353821.terrain new file mode 100644 index 000000000..89969d990 Binary files /dev/null and b/public/terrain/19/858480/353821.terrain differ diff --git a/public/terrain/19/858480/353822.terrain b/public/terrain/19/858480/353822.terrain new file mode 100644 index 000000000..c1b253f51 Binary files /dev/null and b/public/terrain/19/858480/353822.terrain differ diff --git a/public/terrain/19/858480/353823.terrain b/public/terrain/19/858480/353823.terrain new file mode 100644 index 000000000..4ca157f9f Binary files /dev/null and b/public/terrain/19/858480/353823.terrain differ diff --git a/public/terrain/19/858480/353824.terrain b/public/terrain/19/858480/353824.terrain new file mode 100644 index 000000000..470b62871 Binary files /dev/null and b/public/terrain/19/858480/353824.terrain differ diff --git a/public/terrain/19/858480/353825.terrain b/public/terrain/19/858480/353825.terrain new file mode 100644 index 000000000..6756d395f Binary files /dev/null and b/public/terrain/19/858480/353825.terrain differ diff --git a/public/terrain/19/858480/353826.terrain b/public/terrain/19/858480/353826.terrain new file mode 100644 index 000000000..a5961df3d Binary files /dev/null and b/public/terrain/19/858480/353826.terrain differ diff --git a/public/terrain/19/858480/353827.terrain b/public/terrain/19/858480/353827.terrain new file mode 100644 index 000000000..104e1bcdf Binary files /dev/null and b/public/terrain/19/858480/353827.terrain differ diff --git a/public/terrain/19/858480/353828.terrain b/public/terrain/19/858480/353828.terrain new file mode 100644 index 000000000..538e15247 Binary files /dev/null and b/public/terrain/19/858480/353828.terrain differ diff --git a/public/terrain/19/858480/353829.terrain b/public/terrain/19/858480/353829.terrain new file mode 100644 index 000000000..14af6a8ae Binary files /dev/null and b/public/terrain/19/858480/353829.terrain differ diff --git a/public/terrain/19/858480/353830.terrain b/public/terrain/19/858480/353830.terrain new file mode 100644 index 000000000..24c04ce19 Binary files /dev/null and b/public/terrain/19/858480/353830.terrain differ diff --git a/public/terrain/19/858480/353831.terrain b/public/terrain/19/858480/353831.terrain new file mode 100644 index 000000000..cbebec470 Binary files /dev/null and b/public/terrain/19/858480/353831.terrain differ diff --git a/public/terrain/19/858480/353832.terrain b/public/terrain/19/858480/353832.terrain new file mode 100644 index 000000000..0b3a98806 Binary files /dev/null and b/public/terrain/19/858480/353832.terrain differ diff --git a/public/terrain/19/858480/353833.terrain b/public/terrain/19/858480/353833.terrain new file mode 100644 index 000000000..f29348078 Binary files /dev/null and b/public/terrain/19/858480/353833.terrain differ diff --git a/public/terrain/19/858480/353834.terrain b/public/terrain/19/858480/353834.terrain new file mode 100644 index 000000000..8e0b4c6c6 Binary files /dev/null and b/public/terrain/19/858480/353834.terrain differ diff --git a/public/terrain/19/858480/353835.terrain b/public/terrain/19/858480/353835.terrain new file mode 100644 index 000000000..b7a56cb07 Binary files /dev/null and b/public/terrain/19/858480/353835.terrain differ diff --git a/public/terrain/19/858480/353836.terrain b/public/terrain/19/858480/353836.terrain new file mode 100644 index 000000000..ea3b559b7 Binary files /dev/null and b/public/terrain/19/858480/353836.terrain differ diff --git a/public/terrain/19/858480/353837.terrain b/public/terrain/19/858480/353837.terrain new file mode 100644 index 000000000..211463c9f Binary files /dev/null and b/public/terrain/19/858480/353837.terrain differ diff --git a/public/terrain/19/858480/353838.terrain b/public/terrain/19/858480/353838.terrain new file mode 100644 index 000000000..234b2fcaf Binary files /dev/null and b/public/terrain/19/858480/353838.terrain differ diff --git a/public/terrain/19/858480/353839.terrain b/public/terrain/19/858480/353839.terrain new file mode 100644 index 000000000..af764839b Binary files /dev/null and b/public/terrain/19/858480/353839.terrain differ diff --git a/public/terrain/19/858480/353840.terrain b/public/terrain/19/858480/353840.terrain new file mode 100644 index 000000000..d9bca1930 Binary files /dev/null and b/public/terrain/19/858480/353840.terrain differ diff --git a/public/terrain/19/858480/353841.terrain b/public/terrain/19/858480/353841.terrain new file mode 100644 index 000000000..b3a100ddc Binary files /dev/null and b/public/terrain/19/858480/353841.terrain differ diff --git a/public/terrain/19/858480/353842.terrain b/public/terrain/19/858480/353842.terrain new file mode 100644 index 000000000..ce251e13c Binary files /dev/null and b/public/terrain/19/858480/353842.terrain differ diff --git a/public/terrain/19/858480/353843.terrain b/public/terrain/19/858480/353843.terrain new file mode 100644 index 000000000..99b8c3963 Binary files /dev/null and b/public/terrain/19/858480/353843.terrain differ diff --git a/public/terrain/19/858480/353844.terrain b/public/terrain/19/858480/353844.terrain new file mode 100644 index 000000000..c362a0ced Binary files /dev/null and b/public/terrain/19/858480/353844.terrain differ diff --git a/public/terrain/19/858480/353845.terrain b/public/terrain/19/858480/353845.terrain new file mode 100644 index 000000000..ac941de48 Binary files /dev/null and b/public/terrain/19/858480/353845.terrain differ diff --git a/public/terrain/19/858480/353846.terrain b/public/terrain/19/858480/353846.terrain new file mode 100644 index 000000000..777675b5d Binary files /dev/null and b/public/terrain/19/858480/353846.terrain differ diff --git a/public/terrain/19/858480/353847.terrain b/public/terrain/19/858480/353847.terrain new file mode 100644 index 000000000..d12885a6b Binary files /dev/null and b/public/terrain/19/858480/353847.terrain differ diff --git a/public/terrain/19/858480/353848.terrain b/public/terrain/19/858480/353848.terrain new file mode 100644 index 000000000..9c48df083 Binary files /dev/null and b/public/terrain/19/858480/353848.terrain differ diff --git a/public/terrain/19/858480/353849.terrain b/public/terrain/19/858480/353849.terrain new file mode 100644 index 000000000..f8ebd59b9 Binary files /dev/null and b/public/terrain/19/858480/353849.terrain differ diff --git a/public/terrain/19/858480/353850.terrain b/public/terrain/19/858480/353850.terrain new file mode 100644 index 000000000..6f7573549 Binary files /dev/null and b/public/terrain/19/858480/353850.terrain differ diff --git a/public/terrain/19/858480/353851.terrain b/public/terrain/19/858480/353851.terrain new file mode 100644 index 000000000..e75460b24 Binary files /dev/null and b/public/terrain/19/858480/353851.terrain differ diff --git a/public/terrain/19/858480/353852.terrain b/public/terrain/19/858480/353852.terrain new file mode 100644 index 000000000..f69aad399 Binary files /dev/null and b/public/terrain/19/858480/353852.terrain differ diff --git a/public/terrain/19/858480/353853.terrain b/public/terrain/19/858480/353853.terrain new file mode 100644 index 000000000..3b9221762 Binary files /dev/null and b/public/terrain/19/858480/353853.terrain differ diff --git a/public/terrain/19/858480/353854.terrain b/public/terrain/19/858480/353854.terrain new file mode 100644 index 000000000..8158ba9b5 Binary files /dev/null and b/public/terrain/19/858480/353854.terrain differ diff --git a/public/terrain/19/858480/353855.terrain b/public/terrain/19/858480/353855.terrain new file mode 100644 index 000000000..f5c7fe7fe Binary files /dev/null and b/public/terrain/19/858480/353855.terrain differ diff --git a/public/terrain/19/858480/353856.terrain b/public/terrain/19/858480/353856.terrain new file mode 100644 index 000000000..9990ba12a Binary files /dev/null and b/public/terrain/19/858480/353856.terrain differ diff --git a/public/terrain/19/858480/353857.terrain b/public/terrain/19/858480/353857.terrain new file mode 100644 index 000000000..05ffd0e19 Binary files /dev/null and b/public/terrain/19/858480/353857.terrain differ diff --git a/public/terrain/19/858480/353858.terrain b/public/terrain/19/858480/353858.terrain new file mode 100644 index 000000000..8a733cd34 Binary files /dev/null and b/public/terrain/19/858480/353858.terrain differ diff --git a/public/terrain/19/858480/353859.terrain b/public/terrain/19/858480/353859.terrain new file mode 100644 index 000000000..e79aa9541 Binary files /dev/null and b/public/terrain/19/858480/353859.terrain differ diff --git a/public/terrain/19/858480/353860.terrain b/public/terrain/19/858480/353860.terrain new file mode 100644 index 000000000..6a68f4125 Binary files /dev/null and b/public/terrain/19/858480/353860.terrain differ diff --git a/public/terrain/19/858480/353861.terrain b/public/terrain/19/858480/353861.terrain new file mode 100644 index 000000000..87b4cf128 Binary files /dev/null and b/public/terrain/19/858480/353861.terrain differ diff --git a/public/terrain/19/858480/353862.terrain b/public/terrain/19/858480/353862.terrain new file mode 100644 index 000000000..924b4bf0d Binary files /dev/null and b/public/terrain/19/858480/353862.terrain differ diff --git a/public/terrain/19/858480/353863.terrain b/public/terrain/19/858480/353863.terrain new file mode 100644 index 000000000..a4ac93e94 Binary files /dev/null and b/public/terrain/19/858480/353863.terrain differ diff --git a/public/terrain/19/858480/353864.terrain b/public/terrain/19/858480/353864.terrain new file mode 100644 index 000000000..03b83515f Binary files /dev/null and b/public/terrain/19/858480/353864.terrain differ diff --git a/public/terrain/19/858480/353865.terrain b/public/terrain/19/858480/353865.terrain new file mode 100644 index 000000000..6f00ded42 Binary files /dev/null and b/public/terrain/19/858480/353865.terrain differ diff --git a/public/terrain/19/858480/353866.terrain b/public/terrain/19/858480/353866.terrain new file mode 100644 index 000000000..dd6c1f115 Binary files /dev/null and b/public/terrain/19/858480/353866.terrain differ diff --git a/public/terrain/19/858480/353867.terrain b/public/terrain/19/858480/353867.terrain new file mode 100644 index 000000000..a0384d51e Binary files /dev/null and b/public/terrain/19/858480/353867.terrain differ diff --git a/public/terrain/19/858480/353868.terrain b/public/terrain/19/858480/353868.terrain new file mode 100644 index 000000000..3eae720d3 Binary files /dev/null and b/public/terrain/19/858480/353868.terrain differ diff --git a/public/terrain/19/858480/353869.terrain b/public/terrain/19/858480/353869.terrain new file mode 100644 index 000000000..27fb85815 Binary files /dev/null and b/public/terrain/19/858480/353869.terrain differ diff --git a/public/terrain/19/858480/353870.terrain b/public/terrain/19/858480/353870.terrain new file mode 100644 index 000000000..869785c9c Binary files /dev/null and b/public/terrain/19/858480/353870.terrain differ diff --git a/public/terrain/19/858480/353871.terrain b/public/terrain/19/858480/353871.terrain new file mode 100644 index 000000000..687c20604 Binary files /dev/null and b/public/terrain/19/858480/353871.terrain differ diff --git a/public/terrain/19/858480/353872.terrain b/public/terrain/19/858480/353872.terrain new file mode 100644 index 000000000..61d7e0956 Binary files /dev/null and b/public/terrain/19/858480/353872.terrain differ diff --git a/public/terrain/19/858480/353873.terrain b/public/terrain/19/858480/353873.terrain new file mode 100644 index 000000000..bf230947d Binary files /dev/null and b/public/terrain/19/858480/353873.terrain differ diff --git a/public/terrain/19/858480/353874.terrain b/public/terrain/19/858480/353874.terrain new file mode 100644 index 000000000..26361c06a Binary files /dev/null and b/public/terrain/19/858480/353874.terrain differ diff --git a/public/terrain/19/858480/353875.terrain b/public/terrain/19/858480/353875.terrain new file mode 100644 index 000000000..c0130110a Binary files /dev/null and b/public/terrain/19/858480/353875.terrain differ diff --git a/public/terrain/19/858480/353876.terrain b/public/terrain/19/858480/353876.terrain new file mode 100644 index 000000000..cc9ef0850 Binary files /dev/null and b/public/terrain/19/858480/353876.terrain differ diff --git a/public/terrain/19/858480/353877.terrain b/public/terrain/19/858480/353877.terrain new file mode 100644 index 000000000..5139c2df9 Binary files /dev/null and b/public/terrain/19/858480/353877.terrain differ diff --git a/public/terrain/19/858480/353878.terrain b/public/terrain/19/858480/353878.terrain new file mode 100644 index 000000000..a37478baa Binary files /dev/null and b/public/terrain/19/858480/353878.terrain differ diff --git a/public/terrain/19/858480/353879.terrain b/public/terrain/19/858480/353879.terrain new file mode 100644 index 000000000..bb00fcce9 Binary files /dev/null and b/public/terrain/19/858480/353879.terrain differ diff --git a/public/terrain/19/858480/353880.terrain b/public/terrain/19/858480/353880.terrain new file mode 100644 index 000000000..6180b6cff Binary files /dev/null and b/public/terrain/19/858480/353880.terrain differ diff --git a/public/terrain/19/858480/353881.terrain b/public/terrain/19/858480/353881.terrain new file mode 100644 index 000000000..b7b691c60 Binary files /dev/null and b/public/terrain/19/858480/353881.terrain differ diff --git a/public/terrain/19/858480/353882.terrain b/public/terrain/19/858480/353882.terrain new file mode 100644 index 000000000..23b8c68c6 Binary files /dev/null and b/public/terrain/19/858480/353882.terrain differ diff --git a/public/terrain/19/858480/353883.terrain b/public/terrain/19/858480/353883.terrain new file mode 100644 index 000000000..2e111fdce Binary files /dev/null and b/public/terrain/19/858480/353883.terrain differ diff --git a/public/terrain/19/858480/353884.terrain b/public/terrain/19/858480/353884.terrain new file mode 100644 index 000000000..c2299fd72 Binary files /dev/null and b/public/terrain/19/858480/353884.terrain differ diff --git a/public/terrain/19/858480/353885.terrain b/public/terrain/19/858480/353885.terrain new file mode 100644 index 000000000..5df9f74c6 Binary files /dev/null and b/public/terrain/19/858480/353885.terrain differ diff --git a/public/terrain/19/858480/353886.terrain b/public/terrain/19/858480/353886.terrain new file mode 100644 index 000000000..3100a0fc3 Binary files /dev/null and b/public/terrain/19/858480/353886.terrain differ diff --git a/public/terrain/19/858480/353887.terrain b/public/terrain/19/858480/353887.terrain new file mode 100644 index 000000000..edf7982a9 Binary files /dev/null and b/public/terrain/19/858480/353887.terrain differ diff --git a/public/terrain/19/858480/353888.terrain b/public/terrain/19/858480/353888.terrain new file mode 100644 index 000000000..9b49c95e0 Binary files /dev/null and b/public/terrain/19/858480/353888.terrain differ diff --git a/public/terrain/19/858480/353889.terrain b/public/terrain/19/858480/353889.terrain new file mode 100644 index 000000000..416582c6b Binary files /dev/null and b/public/terrain/19/858480/353889.terrain differ diff --git a/public/terrain/19/858480/353890.terrain b/public/terrain/19/858480/353890.terrain new file mode 100644 index 000000000..c137b0712 Binary files /dev/null and b/public/terrain/19/858480/353890.terrain differ diff --git a/public/terrain/19/858480/353891.terrain b/public/terrain/19/858480/353891.terrain new file mode 100644 index 000000000..ac1a3bf47 Binary files /dev/null and b/public/terrain/19/858480/353891.terrain differ diff --git a/public/terrain/19/858480/353892.terrain b/public/terrain/19/858480/353892.terrain new file mode 100644 index 000000000..04801fb3e Binary files /dev/null and b/public/terrain/19/858480/353892.terrain differ diff --git a/public/terrain/19/858480/353893.terrain b/public/terrain/19/858480/353893.terrain new file mode 100644 index 000000000..d30e5c559 Binary files /dev/null and b/public/terrain/19/858480/353893.terrain differ diff --git a/public/terrain/19/858480/353894.terrain b/public/terrain/19/858480/353894.terrain new file mode 100644 index 000000000..d169c876d Binary files /dev/null and b/public/terrain/19/858480/353894.terrain differ diff --git a/public/terrain/19/858480/353895.terrain b/public/terrain/19/858480/353895.terrain new file mode 100644 index 000000000..f76b954a7 Binary files /dev/null and b/public/terrain/19/858480/353895.terrain differ diff --git a/public/terrain/19/858480/353896.terrain b/public/terrain/19/858480/353896.terrain new file mode 100644 index 000000000..8b08995de Binary files /dev/null and b/public/terrain/19/858480/353896.terrain differ diff --git a/public/terrain/19/858480/353897.terrain b/public/terrain/19/858480/353897.terrain new file mode 100644 index 000000000..a278ec6fa Binary files /dev/null and b/public/terrain/19/858480/353897.terrain differ diff --git a/public/terrain/19/858480/353898.terrain b/public/terrain/19/858480/353898.terrain new file mode 100644 index 000000000..8c2518ba1 Binary files /dev/null and b/public/terrain/19/858480/353898.terrain differ diff --git a/public/terrain/19/858480/353899.terrain b/public/terrain/19/858480/353899.terrain new file mode 100644 index 000000000..141d088e8 Binary files /dev/null and b/public/terrain/19/858480/353899.terrain differ diff --git a/public/terrain/19/858480/353900.terrain b/public/terrain/19/858480/353900.terrain new file mode 100644 index 000000000..6e4955043 Binary files /dev/null and b/public/terrain/19/858480/353900.terrain differ diff --git a/public/terrain/19/858480/353901.terrain b/public/terrain/19/858480/353901.terrain new file mode 100644 index 000000000..a9fffb000 Binary files /dev/null and b/public/terrain/19/858480/353901.terrain differ diff --git a/public/terrain/19/858480/353902.terrain b/public/terrain/19/858480/353902.terrain new file mode 100644 index 000000000..93c29bc77 Binary files /dev/null and b/public/terrain/19/858480/353902.terrain differ diff --git a/public/terrain/19/858480/353903.terrain b/public/terrain/19/858480/353903.terrain new file mode 100644 index 000000000..61f42bbd9 Binary files /dev/null and b/public/terrain/19/858480/353903.terrain differ diff --git a/public/terrain/19/858480/353904.terrain b/public/terrain/19/858480/353904.terrain new file mode 100644 index 000000000..61077b339 Binary files /dev/null and b/public/terrain/19/858480/353904.terrain differ diff --git a/public/terrain/19/858480/353905.terrain b/public/terrain/19/858480/353905.terrain new file mode 100644 index 000000000..4c61ac065 Binary files /dev/null and b/public/terrain/19/858480/353905.terrain differ diff --git a/public/terrain/19/858480/353906.terrain b/public/terrain/19/858480/353906.terrain new file mode 100644 index 000000000..e190022c2 Binary files /dev/null and b/public/terrain/19/858480/353906.terrain differ diff --git a/public/terrain/19/858480/353907.terrain b/public/terrain/19/858480/353907.terrain new file mode 100644 index 000000000..3e8ee525d Binary files /dev/null and b/public/terrain/19/858480/353907.terrain differ diff --git a/public/terrain/19/858480/353908.terrain b/public/terrain/19/858480/353908.terrain new file mode 100644 index 000000000..a9dd89a21 Binary files /dev/null and b/public/terrain/19/858480/353908.terrain differ diff --git a/public/terrain/19/858480/353909.terrain b/public/terrain/19/858480/353909.terrain new file mode 100644 index 000000000..de06f0ade Binary files /dev/null and b/public/terrain/19/858480/353909.terrain differ diff --git a/public/terrain/19/858480/353910.terrain b/public/terrain/19/858480/353910.terrain new file mode 100644 index 000000000..3b47a37f2 Binary files /dev/null and b/public/terrain/19/858480/353910.terrain differ diff --git a/public/terrain/19/858480/353911.terrain b/public/terrain/19/858480/353911.terrain new file mode 100644 index 000000000..18d4cc35c Binary files /dev/null and b/public/terrain/19/858480/353911.terrain differ diff --git a/public/terrain/19/858480/353912.terrain b/public/terrain/19/858480/353912.terrain new file mode 100644 index 000000000..2e951bbf4 Binary files /dev/null and b/public/terrain/19/858480/353912.terrain differ diff --git a/public/terrain/19/858480/353913.terrain b/public/terrain/19/858480/353913.terrain new file mode 100644 index 000000000..6e858eb84 Binary files /dev/null and b/public/terrain/19/858480/353913.terrain differ diff --git a/public/terrain/19/858480/353914.terrain b/public/terrain/19/858480/353914.terrain new file mode 100644 index 000000000..dd5e1ea17 Binary files /dev/null and b/public/terrain/19/858480/353914.terrain differ diff --git a/public/terrain/19/858480/353915.terrain b/public/terrain/19/858480/353915.terrain new file mode 100644 index 000000000..c38ee3802 Binary files /dev/null and b/public/terrain/19/858480/353915.terrain differ diff --git a/public/terrain/19/858480/353916.terrain b/public/terrain/19/858480/353916.terrain new file mode 100644 index 000000000..c62451423 Binary files /dev/null and b/public/terrain/19/858480/353916.terrain differ diff --git a/public/terrain/19/858480/353917.terrain b/public/terrain/19/858480/353917.terrain new file mode 100644 index 000000000..bf3005bb9 Binary files /dev/null and b/public/terrain/19/858480/353917.terrain differ diff --git a/public/terrain/19/858480/353918.terrain b/public/terrain/19/858480/353918.terrain new file mode 100644 index 000000000..6e609ec7a Binary files /dev/null and b/public/terrain/19/858480/353918.terrain differ diff --git a/public/terrain/19/858480/353919.terrain b/public/terrain/19/858480/353919.terrain new file mode 100644 index 000000000..a8300ed61 Binary files /dev/null and b/public/terrain/19/858480/353919.terrain differ diff --git a/public/terrain/19/858480/353920.terrain b/public/terrain/19/858480/353920.terrain new file mode 100644 index 000000000..6647a7fb6 Binary files /dev/null and b/public/terrain/19/858480/353920.terrain differ diff --git a/public/terrain/19/858480/353921.terrain b/public/terrain/19/858480/353921.terrain new file mode 100644 index 000000000..8e3386793 Binary files /dev/null and b/public/terrain/19/858480/353921.terrain differ diff --git a/public/terrain/19/858480/353922.terrain b/public/terrain/19/858480/353922.terrain new file mode 100644 index 000000000..94fcb0ec9 Binary files /dev/null and b/public/terrain/19/858480/353922.terrain differ diff --git a/public/terrain/19/858480/353923.terrain b/public/terrain/19/858480/353923.terrain new file mode 100644 index 000000000..2d63d2b05 Binary files /dev/null and b/public/terrain/19/858480/353923.terrain differ diff --git a/public/terrain/19/858480/353924.terrain b/public/terrain/19/858480/353924.terrain new file mode 100644 index 000000000..9b39a9ab7 Binary files /dev/null and b/public/terrain/19/858480/353924.terrain differ diff --git a/public/terrain/19/858480/353925.terrain b/public/terrain/19/858480/353925.terrain new file mode 100644 index 000000000..187431877 Binary files /dev/null and b/public/terrain/19/858480/353925.terrain differ diff --git a/public/terrain/19/858480/353926.terrain b/public/terrain/19/858480/353926.terrain new file mode 100644 index 000000000..2d2bfeba0 Binary files /dev/null and b/public/terrain/19/858480/353926.terrain differ diff --git a/public/terrain/19/858480/353927.terrain b/public/terrain/19/858480/353927.terrain new file mode 100644 index 000000000..f91534621 Binary files /dev/null and b/public/terrain/19/858480/353927.terrain differ diff --git a/public/terrain/19/858480/353928.terrain b/public/terrain/19/858480/353928.terrain new file mode 100644 index 000000000..3612e0bb3 Binary files /dev/null and b/public/terrain/19/858480/353928.terrain differ diff --git a/public/terrain/19/858480/353929.terrain b/public/terrain/19/858480/353929.terrain new file mode 100644 index 000000000..85af993e2 Binary files /dev/null and b/public/terrain/19/858480/353929.terrain differ diff --git a/public/terrain/19/858480/353930.terrain b/public/terrain/19/858480/353930.terrain new file mode 100644 index 000000000..1cbc2161e Binary files /dev/null and b/public/terrain/19/858480/353930.terrain differ diff --git a/public/terrain/19/858480/353931.terrain b/public/terrain/19/858480/353931.terrain new file mode 100644 index 000000000..c57b3a858 Binary files /dev/null and b/public/terrain/19/858480/353931.terrain differ diff --git a/public/terrain/19/858480/353932.terrain b/public/terrain/19/858480/353932.terrain new file mode 100644 index 000000000..6a67dc686 Binary files /dev/null and b/public/terrain/19/858480/353932.terrain differ diff --git a/public/terrain/19/858480/353933.terrain b/public/terrain/19/858480/353933.terrain new file mode 100644 index 000000000..f0290cbbd Binary files /dev/null and b/public/terrain/19/858480/353933.terrain differ diff --git a/public/terrain/19/858480/353934.terrain b/public/terrain/19/858480/353934.terrain new file mode 100644 index 000000000..49ae41d72 Binary files /dev/null and b/public/terrain/19/858480/353934.terrain differ diff --git a/public/terrain/19/858480/353935.terrain b/public/terrain/19/858480/353935.terrain new file mode 100644 index 000000000..d66826cfd Binary files /dev/null and b/public/terrain/19/858480/353935.terrain differ diff --git a/public/terrain/19/858480/353936.terrain b/public/terrain/19/858480/353936.terrain new file mode 100644 index 000000000..538bfde56 Binary files /dev/null and b/public/terrain/19/858480/353936.terrain differ diff --git a/public/terrain/19/858480/353937.terrain b/public/terrain/19/858480/353937.terrain new file mode 100644 index 000000000..3f9100148 Binary files /dev/null and b/public/terrain/19/858480/353937.terrain differ diff --git a/public/terrain/19/858480/353938.terrain b/public/terrain/19/858480/353938.terrain new file mode 100644 index 000000000..a0caa6f7a Binary files /dev/null and b/public/terrain/19/858480/353938.terrain differ diff --git a/public/terrain/19/858480/353939.terrain b/public/terrain/19/858480/353939.terrain new file mode 100644 index 000000000..9d721ceae Binary files /dev/null and b/public/terrain/19/858480/353939.terrain differ diff --git a/public/terrain/19/858480/353940.terrain b/public/terrain/19/858480/353940.terrain new file mode 100644 index 000000000..9219a01c4 Binary files /dev/null and b/public/terrain/19/858480/353940.terrain differ diff --git a/public/terrain/19/858480/353941.terrain b/public/terrain/19/858480/353941.terrain new file mode 100644 index 000000000..1a4511079 Binary files /dev/null and b/public/terrain/19/858480/353941.terrain differ diff --git a/public/terrain/19/858480/353942.terrain b/public/terrain/19/858480/353942.terrain new file mode 100644 index 000000000..9b5713e8a Binary files /dev/null and b/public/terrain/19/858480/353942.terrain differ diff --git a/public/terrain/19/858480/353943.terrain b/public/terrain/19/858480/353943.terrain new file mode 100644 index 000000000..ba5ca5ab8 Binary files /dev/null and b/public/terrain/19/858480/353943.terrain differ diff --git a/public/terrain/19/858480/353944.terrain b/public/terrain/19/858480/353944.terrain new file mode 100644 index 000000000..35f8b791d Binary files /dev/null and b/public/terrain/19/858480/353944.terrain differ diff --git a/public/terrain/19/858480/353945.terrain b/public/terrain/19/858480/353945.terrain new file mode 100644 index 000000000..46fb545bd Binary files /dev/null and b/public/terrain/19/858480/353945.terrain differ diff --git a/public/terrain/19/858480/353946.terrain b/public/terrain/19/858480/353946.terrain new file mode 100644 index 000000000..77b99d6c5 Binary files /dev/null and b/public/terrain/19/858480/353946.terrain differ diff --git a/public/terrain/19/858480/353947.terrain b/public/terrain/19/858480/353947.terrain new file mode 100644 index 000000000..8e513e5e1 Binary files /dev/null and b/public/terrain/19/858480/353947.terrain differ diff --git a/public/terrain/19/858480/353948.terrain b/public/terrain/19/858480/353948.terrain new file mode 100644 index 000000000..bd84af7bd Binary files /dev/null and b/public/terrain/19/858480/353948.terrain differ diff --git a/public/terrain/19/858480/353949.terrain b/public/terrain/19/858480/353949.terrain new file mode 100644 index 000000000..90570de38 Binary files /dev/null and b/public/terrain/19/858480/353949.terrain differ diff --git a/public/terrain/19/858480/353950.terrain b/public/terrain/19/858480/353950.terrain new file mode 100644 index 000000000..0807dca2a Binary files /dev/null and b/public/terrain/19/858480/353950.terrain differ diff --git a/public/terrain/19/858480/353951.terrain b/public/terrain/19/858480/353951.terrain new file mode 100644 index 000000000..de11e53cd Binary files /dev/null and b/public/terrain/19/858480/353951.terrain differ diff --git a/public/terrain/19/858480/353952.terrain b/public/terrain/19/858480/353952.terrain new file mode 100644 index 000000000..67ccceecf Binary files /dev/null and b/public/terrain/19/858480/353952.terrain differ diff --git a/public/terrain/19/858480/353953.terrain b/public/terrain/19/858480/353953.terrain new file mode 100644 index 000000000..5b68de1aa Binary files /dev/null and b/public/terrain/19/858480/353953.terrain differ diff --git a/public/terrain/19/858480/353954.terrain b/public/terrain/19/858480/353954.terrain new file mode 100644 index 000000000..11d7b7095 Binary files /dev/null and b/public/terrain/19/858480/353954.terrain differ diff --git a/public/terrain/19/858480/353955.terrain b/public/terrain/19/858480/353955.terrain new file mode 100644 index 000000000..585cd5fa8 Binary files /dev/null and b/public/terrain/19/858480/353955.terrain differ diff --git a/public/terrain/19/858480/353956.terrain b/public/terrain/19/858480/353956.terrain new file mode 100644 index 000000000..9dbe7f67d Binary files /dev/null and b/public/terrain/19/858480/353956.terrain differ diff --git a/public/terrain/19/858480/353957.terrain b/public/terrain/19/858480/353957.terrain new file mode 100644 index 000000000..a0e4bf848 Binary files /dev/null and b/public/terrain/19/858480/353957.terrain differ diff --git a/public/terrain/19/858480/353958.terrain b/public/terrain/19/858480/353958.terrain new file mode 100644 index 000000000..3e3152d1f Binary files /dev/null and b/public/terrain/19/858480/353958.terrain differ diff --git a/public/terrain/19/858480/353959.terrain b/public/terrain/19/858480/353959.terrain new file mode 100644 index 000000000..998b7e477 Binary files /dev/null and b/public/terrain/19/858480/353959.terrain differ diff --git a/public/terrain/19/858480/353960.terrain b/public/terrain/19/858480/353960.terrain new file mode 100644 index 000000000..5f0ea322c Binary files /dev/null and b/public/terrain/19/858480/353960.terrain differ diff --git a/public/terrain/19/858480/353961.terrain b/public/terrain/19/858480/353961.terrain new file mode 100644 index 000000000..b5172896f Binary files /dev/null and b/public/terrain/19/858480/353961.terrain differ diff --git a/public/terrain/19/858480/353962.terrain b/public/terrain/19/858480/353962.terrain new file mode 100644 index 000000000..c6fcdfe4a Binary files /dev/null and b/public/terrain/19/858480/353962.terrain differ diff --git a/public/terrain/19/858480/353963.terrain b/public/terrain/19/858480/353963.terrain new file mode 100644 index 000000000..f72d9181d Binary files /dev/null and b/public/terrain/19/858480/353963.terrain differ diff --git a/public/terrain/19/858480/353964.terrain b/public/terrain/19/858480/353964.terrain new file mode 100644 index 000000000..7af76f197 Binary files /dev/null and b/public/terrain/19/858480/353964.terrain differ diff --git a/public/terrain/19/858480/353965.terrain b/public/terrain/19/858480/353965.terrain new file mode 100644 index 000000000..64f0e39a4 Binary files /dev/null and b/public/terrain/19/858480/353965.terrain differ diff --git a/public/terrain/19/858480/353966.terrain b/public/terrain/19/858480/353966.terrain new file mode 100644 index 000000000..df877418d Binary files /dev/null and b/public/terrain/19/858480/353966.terrain differ diff --git a/public/terrain/19/858480/353967.terrain b/public/terrain/19/858480/353967.terrain new file mode 100644 index 000000000..4e57e3d65 Binary files /dev/null and b/public/terrain/19/858480/353967.terrain differ diff --git a/public/terrain/19/858480/353968.terrain b/public/terrain/19/858480/353968.terrain new file mode 100644 index 000000000..87236fa6a Binary files /dev/null and b/public/terrain/19/858480/353968.terrain differ diff --git a/public/terrain/19/858480/353969.terrain b/public/terrain/19/858480/353969.terrain new file mode 100644 index 000000000..f13cfffa9 Binary files /dev/null and b/public/terrain/19/858480/353969.terrain differ diff --git a/public/terrain/19/858480/353970.terrain b/public/terrain/19/858480/353970.terrain new file mode 100644 index 000000000..2fcbe3714 Binary files /dev/null and b/public/terrain/19/858480/353970.terrain differ diff --git a/public/terrain/19/858480/353971.terrain b/public/terrain/19/858480/353971.terrain new file mode 100644 index 000000000..87df4cf2d Binary files /dev/null and b/public/terrain/19/858480/353971.terrain differ diff --git a/public/terrain/19/858480/353972.terrain b/public/terrain/19/858480/353972.terrain new file mode 100644 index 000000000..d415fe5ef Binary files /dev/null and b/public/terrain/19/858480/353972.terrain differ diff --git a/public/terrain/19/858480/353973.terrain b/public/terrain/19/858480/353973.terrain new file mode 100644 index 000000000..d1cea980d Binary files /dev/null and b/public/terrain/19/858480/353973.terrain differ diff --git a/public/terrain/19/858480/353974.terrain b/public/terrain/19/858480/353974.terrain new file mode 100644 index 000000000..5705b7d1f Binary files /dev/null and b/public/terrain/19/858480/353974.terrain differ diff --git a/public/terrain/19/858480/353975.terrain b/public/terrain/19/858480/353975.terrain new file mode 100644 index 000000000..f960a291a Binary files /dev/null and b/public/terrain/19/858480/353975.terrain differ diff --git a/public/terrain/19/858480/353976.terrain b/public/terrain/19/858480/353976.terrain new file mode 100644 index 000000000..91f4b6d03 Binary files /dev/null and b/public/terrain/19/858480/353976.terrain differ diff --git a/public/terrain/19/858480/353977.terrain b/public/terrain/19/858480/353977.terrain new file mode 100644 index 000000000..5a4a0e3be Binary files /dev/null and b/public/terrain/19/858480/353977.terrain differ diff --git a/public/terrain/19/858480/353978.terrain b/public/terrain/19/858480/353978.terrain new file mode 100644 index 000000000..14fde7469 Binary files /dev/null and b/public/terrain/19/858480/353978.terrain differ diff --git a/public/terrain/19/858480/353979.terrain b/public/terrain/19/858480/353979.terrain new file mode 100644 index 000000000..39d76de5c Binary files /dev/null and b/public/terrain/19/858480/353979.terrain differ diff --git a/public/terrain/19/858480/353980.terrain b/public/terrain/19/858480/353980.terrain new file mode 100644 index 000000000..b9c3181bb Binary files /dev/null and b/public/terrain/19/858480/353980.terrain differ diff --git a/public/terrain/19/858480/353981.terrain b/public/terrain/19/858480/353981.terrain new file mode 100644 index 000000000..3693b11af Binary files /dev/null and b/public/terrain/19/858480/353981.terrain differ diff --git a/public/terrain/19/858480/353982.terrain b/public/terrain/19/858480/353982.terrain new file mode 100644 index 000000000..e39ead4fc Binary files /dev/null and b/public/terrain/19/858480/353982.terrain differ diff --git a/public/terrain/19/858480/353983.terrain b/public/terrain/19/858480/353983.terrain new file mode 100644 index 000000000..fc4ccf271 Binary files /dev/null and b/public/terrain/19/858480/353983.terrain differ diff --git a/public/terrain/19/858480/353984.terrain b/public/terrain/19/858480/353984.terrain new file mode 100644 index 000000000..9564075f8 Binary files /dev/null and b/public/terrain/19/858480/353984.terrain differ diff --git a/public/terrain/19/858480/353985.terrain b/public/terrain/19/858480/353985.terrain new file mode 100644 index 000000000..7de0edbe6 Binary files /dev/null and b/public/terrain/19/858480/353985.terrain differ diff --git a/public/terrain/19/858480/353986.terrain b/public/terrain/19/858480/353986.terrain new file mode 100644 index 000000000..ed12e61e0 Binary files /dev/null and b/public/terrain/19/858480/353986.terrain differ diff --git a/public/terrain/19/858480/353987.terrain b/public/terrain/19/858480/353987.terrain new file mode 100644 index 000000000..e4f355f40 Binary files /dev/null and b/public/terrain/19/858480/353987.terrain differ diff --git a/public/terrain/19/858480/353988.terrain b/public/terrain/19/858480/353988.terrain new file mode 100644 index 000000000..f62c1859d Binary files /dev/null and b/public/terrain/19/858480/353988.terrain differ diff --git a/public/terrain/19/858480/353989.terrain b/public/terrain/19/858480/353989.terrain new file mode 100644 index 000000000..c3b753335 Binary files /dev/null and b/public/terrain/19/858480/353989.terrain differ diff --git a/public/terrain/19/858480/353990.terrain b/public/terrain/19/858480/353990.terrain new file mode 100644 index 000000000..708c89871 Binary files /dev/null and b/public/terrain/19/858480/353990.terrain differ diff --git a/public/terrain/19/858480/353991.terrain b/public/terrain/19/858480/353991.terrain new file mode 100644 index 000000000..850cb396e Binary files /dev/null and b/public/terrain/19/858480/353991.terrain differ diff --git a/public/terrain/19/858480/353992.terrain b/public/terrain/19/858480/353992.terrain new file mode 100644 index 000000000..5b51fa2d3 Binary files /dev/null and b/public/terrain/19/858480/353992.terrain differ diff --git a/public/terrain/19/858480/353993.terrain b/public/terrain/19/858480/353993.terrain new file mode 100644 index 000000000..242bb8247 Binary files /dev/null and b/public/terrain/19/858480/353993.terrain differ diff --git a/public/terrain/19/858480/353994.terrain b/public/terrain/19/858480/353994.terrain new file mode 100644 index 000000000..bc6e1e258 Binary files /dev/null and b/public/terrain/19/858480/353994.terrain differ diff --git a/public/terrain/19/858480/353995.terrain b/public/terrain/19/858480/353995.terrain new file mode 100644 index 000000000..0443ca13b Binary files /dev/null and b/public/terrain/19/858480/353995.terrain differ diff --git a/public/terrain/19/858480/353996.terrain b/public/terrain/19/858480/353996.terrain new file mode 100644 index 000000000..2050cb604 Binary files /dev/null and b/public/terrain/19/858480/353996.terrain differ diff --git a/public/terrain/19/858480/353997.terrain b/public/terrain/19/858480/353997.terrain new file mode 100644 index 000000000..5de73d312 Binary files /dev/null and b/public/terrain/19/858480/353997.terrain differ diff --git a/public/terrain/19/858480/353998.terrain b/public/terrain/19/858480/353998.terrain new file mode 100644 index 000000000..389d9bfcf Binary files /dev/null and b/public/terrain/19/858480/353998.terrain differ diff --git a/public/terrain/19/858480/353999.terrain b/public/terrain/19/858480/353999.terrain new file mode 100644 index 000000000..74db84ff7 Binary files /dev/null and b/public/terrain/19/858480/353999.terrain differ diff --git a/public/terrain/19/858480/354000.terrain b/public/terrain/19/858480/354000.terrain new file mode 100644 index 000000000..299dc80f6 Binary files /dev/null and b/public/terrain/19/858480/354000.terrain differ diff --git a/public/terrain/19/858480/354001.terrain b/public/terrain/19/858480/354001.terrain new file mode 100644 index 000000000..8ffc2f070 Binary files /dev/null and b/public/terrain/19/858480/354001.terrain differ diff --git a/public/terrain/19/858480/354002.terrain b/public/terrain/19/858480/354002.terrain new file mode 100644 index 000000000..765633b71 Binary files /dev/null and b/public/terrain/19/858480/354002.terrain differ diff --git a/public/terrain/19/858480/354003.terrain b/public/terrain/19/858480/354003.terrain new file mode 100644 index 000000000..e56a1fa89 Binary files /dev/null and b/public/terrain/19/858480/354003.terrain differ diff --git a/public/terrain/19/858480/354004.terrain b/public/terrain/19/858480/354004.terrain new file mode 100644 index 000000000..dee7a2a7b Binary files /dev/null and b/public/terrain/19/858480/354004.terrain differ diff --git a/public/terrain/19/858480/354005.terrain b/public/terrain/19/858480/354005.terrain new file mode 100644 index 000000000..759c192bf Binary files /dev/null and b/public/terrain/19/858480/354005.terrain differ diff --git a/public/terrain/19/858480/354006.terrain b/public/terrain/19/858480/354006.terrain new file mode 100644 index 000000000..551836632 Binary files /dev/null and b/public/terrain/19/858480/354006.terrain differ diff --git a/public/terrain/19/858480/354007.terrain b/public/terrain/19/858480/354007.terrain new file mode 100644 index 000000000..abc7dfb0f Binary files /dev/null and b/public/terrain/19/858480/354007.terrain differ diff --git a/public/terrain/19/858480/354008.terrain b/public/terrain/19/858480/354008.terrain new file mode 100644 index 000000000..a2dafcc4b Binary files /dev/null and b/public/terrain/19/858480/354008.terrain differ diff --git a/public/terrain/19/858480/354009.terrain b/public/terrain/19/858480/354009.terrain new file mode 100644 index 000000000..aaba80ef2 Binary files /dev/null and b/public/terrain/19/858480/354009.terrain differ diff --git a/public/terrain/19/858480/354010.terrain b/public/terrain/19/858480/354010.terrain new file mode 100644 index 000000000..fca145a23 Binary files /dev/null and b/public/terrain/19/858480/354010.terrain differ diff --git a/public/terrain/19/858480/354011.terrain b/public/terrain/19/858480/354011.terrain new file mode 100644 index 000000000..3ca0029aa Binary files /dev/null and b/public/terrain/19/858480/354011.terrain differ diff --git a/public/terrain/19/858480/354012.terrain b/public/terrain/19/858480/354012.terrain new file mode 100644 index 000000000..edab61308 Binary files /dev/null and b/public/terrain/19/858480/354012.terrain differ diff --git a/public/terrain/19/858480/354013.terrain b/public/terrain/19/858480/354013.terrain new file mode 100644 index 000000000..f6735ae1c Binary files /dev/null and b/public/terrain/19/858480/354013.terrain differ diff --git a/public/terrain/19/858480/354014.terrain b/public/terrain/19/858480/354014.terrain new file mode 100644 index 000000000..70dafc4a8 Binary files /dev/null and b/public/terrain/19/858480/354014.terrain differ diff --git a/public/terrain/19/858480/354015.terrain b/public/terrain/19/858480/354015.terrain new file mode 100644 index 000000000..b65c4da75 Binary files /dev/null and b/public/terrain/19/858480/354015.terrain differ diff --git a/public/terrain/19/858480/354016.terrain b/public/terrain/19/858480/354016.terrain new file mode 100644 index 000000000..7daf66580 Binary files /dev/null and b/public/terrain/19/858480/354016.terrain differ diff --git a/public/terrain/19/858480/354017.terrain b/public/terrain/19/858480/354017.terrain new file mode 100644 index 000000000..a83fe1048 Binary files /dev/null and b/public/terrain/19/858480/354017.terrain differ diff --git a/public/terrain/19/858480/354018.terrain b/public/terrain/19/858480/354018.terrain new file mode 100644 index 000000000..239114277 Binary files /dev/null and b/public/terrain/19/858480/354018.terrain differ diff --git a/public/terrain/19/858480/354019.terrain b/public/terrain/19/858480/354019.terrain new file mode 100644 index 000000000..f90859e60 Binary files /dev/null and b/public/terrain/19/858480/354019.terrain differ diff --git a/public/terrain/19/858480/354020.terrain b/public/terrain/19/858480/354020.terrain new file mode 100644 index 000000000..db23f61af Binary files /dev/null and b/public/terrain/19/858480/354020.terrain differ diff --git a/public/terrain/19/858480/354021.terrain b/public/terrain/19/858480/354021.terrain new file mode 100644 index 000000000..9a56f730b Binary files /dev/null and b/public/terrain/19/858480/354021.terrain differ diff --git a/public/terrain/19/858480/354022.terrain b/public/terrain/19/858480/354022.terrain new file mode 100644 index 000000000..2e1e5c13f Binary files /dev/null and b/public/terrain/19/858480/354022.terrain differ diff --git a/public/terrain/19/858480/354023.terrain b/public/terrain/19/858480/354023.terrain new file mode 100644 index 000000000..c04a22278 Binary files /dev/null and b/public/terrain/19/858480/354023.terrain differ diff --git a/public/terrain/19/858480/354024.terrain b/public/terrain/19/858480/354024.terrain new file mode 100644 index 000000000..c89c9a71e Binary files /dev/null and b/public/terrain/19/858480/354024.terrain differ diff --git a/public/terrain/19/858480/354025.terrain b/public/terrain/19/858480/354025.terrain new file mode 100644 index 000000000..801f770da Binary files /dev/null and b/public/terrain/19/858480/354025.terrain differ diff --git a/public/terrain/19/858480/354026.terrain b/public/terrain/19/858480/354026.terrain new file mode 100644 index 000000000..2b965246b Binary files /dev/null and b/public/terrain/19/858480/354026.terrain differ diff --git a/public/terrain/19/858480/354027.terrain b/public/terrain/19/858480/354027.terrain new file mode 100644 index 000000000..14a41551a Binary files /dev/null and b/public/terrain/19/858480/354027.terrain differ diff --git a/public/terrain/19/858480/354028.terrain b/public/terrain/19/858480/354028.terrain new file mode 100644 index 000000000..30d3429ee Binary files /dev/null and b/public/terrain/19/858480/354028.terrain differ diff --git a/public/terrain/19/858480/354029.terrain b/public/terrain/19/858480/354029.terrain new file mode 100644 index 000000000..f5670c454 Binary files /dev/null and b/public/terrain/19/858480/354029.terrain differ diff --git a/public/terrain/19/858480/354030.terrain b/public/terrain/19/858480/354030.terrain new file mode 100644 index 000000000..157ad10c4 Binary files /dev/null and b/public/terrain/19/858480/354030.terrain differ diff --git a/public/terrain/19/858480/354031.terrain b/public/terrain/19/858480/354031.terrain new file mode 100644 index 000000000..d45441fd5 Binary files /dev/null and b/public/terrain/19/858480/354031.terrain differ diff --git a/public/terrain/19/858480/354032.terrain b/public/terrain/19/858480/354032.terrain new file mode 100644 index 000000000..1443c71d5 Binary files /dev/null and b/public/terrain/19/858480/354032.terrain differ diff --git a/public/terrain/19/858480/354033.terrain b/public/terrain/19/858480/354033.terrain new file mode 100644 index 000000000..5e969ddd0 Binary files /dev/null and b/public/terrain/19/858480/354033.terrain differ diff --git a/public/terrain/19/858480/354034.terrain b/public/terrain/19/858480/354034.terrain new file mode 100644 index 000000000..e75e2a6cb Binary files /dev/null and b/public/terrain/19/858480/354034.terrain differ diff --git a/public/terrain/19/858480/354035.terrain b/public/terrain/19/858480/354035.terrain new file mode 100644 index 000000000..4ac97c729 Binary files /dev/null and b/public/terrain/19/858480/354035.terrain differ diff --git a/public/terrain/19/858480/354036.terrain b/public/terrain/19/858480/354036.terrain new file mode 100644 index 000000000..23b9f0cc7 Binary files /dev/null and b/public/terrain/19/858480/354036.terrain differ diff --git a/public/terrain/19/858480/354037.terrain b/public/terrain/19/858480/354037.terrain new file mode 100644 index 000000000..74ff0b117 Binary files /dev/null and b/public/terrain/19/858480/354037.terrain differ diff --git a/public/terrain/19/858480/354038.terrain b/public/terrain/19/858480/354038.terrain new file mode 100644 index 000000000..4d7ff4109 Binary files /dev/null and b/public/terrain/19/858480/354038.terrain differ diff --git a/public/terrain/19/858480/354039.terrain b/public/terrain/19/858480/354039.terrain new file mode 100644 index 000000000..ac0b36cf5 Binary files /dev/null and b/public/terrain/19/858480/354039.terrain differ diff --git a/public/terrain/19/858480/354040.terrain b/public/terrain/19/858480/354040.terrain new file mode 100644 index 000000000..69135e278 Binary files /dev/null and b/public/terrain/19/858480/354040.terrain differ diff --git a/public/terrain/19/858480/354041.terrain b/public/terrain/19/858480/354041.terrain new file mode 100644 index 000000000..e32f0b05c Binary files /dev/null and b/public/terrain/19/858480/354041.terrain differ diff --git a/public/terrain/19/858480/354042.terrain b/public/terrain/19/858480/354042.terrain new file mode 100644 index 000000000..c16a1d62f Binary files /dev/null and b/public/terrain/19/858480/354042.terrain differ diff --git a/public/terrain/19/858480/354043.terrain b/public/terrain/19/858480/354043.terrain new file mode 100644 index 000000000..52bbb1b5f Binary files /dev/null and b/public/terrain/19/858480/354043.terrain differ diff --git a/public/terrain/19/858480/354044.terrain b/public/terrain/19/858480/354044.terrain new file mode 100644 index 000000000..48d766788 Binary files /dev/null and b/public/terrain/19/858480/354044.terrain differ diff --git a/public/terrain/19/858480/354045.terrain b/public/terrain/19/858480/354045.terrain new file mode 100644 index 000000000..66921034a Binary files /dev/null and b/public/terrain/19/858480/354045.terrain differ diff --git a/public/terrain/19/858480/354046.terrain b/public/terrain/19/858480/354046.terrain new file mode 100644 index 000000000..193e839c7 Binary files /dev/null and b/public/terrain/19/858480/354046.terrain differ diff --git a/public/terrain/19/858480/354047.terrain b/public/terrain/19/858480/354047.terrain new file mode 100644 index 000000000..337c69f50 Binary files /dev/null and b/public/terrain/19/858480/354047.terrain differ diff --git a/public/terrain/19/858480/354048.terrain b/public/terrain/19/858480/354048.terrain new file mode 100644 index 000000000..51a45b053 Binary files /dev/null and b/public/terrain/19/858480/354048.terrain differ diff --git a/public/terrain/19/858480/354049.terrain b/public/terrain/19/858480/354049.terrain new file mode 100644 index 000000000..365740937 Binary files /dev/null and b/public/terrain/19/858480/354049.terrain differ diff --git a/public/terrain/19/858480/354050.terrain b/public/terrain/19/858480/354050.terrain new file mode 100644 index 000000000..4da53c409 Binary files /dev/null and b/public/terrain/19/858480/354050.terrain differ diff --git a/public/terrain/19/858480/354051.terrain b/public/terrain/19/858480/354051.terrain new file mode 100644 index 000000000..efe7a8b17 Binary files /dev/null and b/public/terrain/19/858480/354051.terrain differ diff --git a/public/terrain/19/858480/354052.terrain b/public/terrain/19/858480/354052.terrain new file mode 100644 index 000000000..ab4e2a4b5 Binary files /dev/null and b/public/terrain/19/858480/354052.terrain differ diff --git a/public/terrain/19/858480/354053.terrain b/public/terrain/19/858480/354053.terrain new file mode 100644 index 000000000..6a0c4ba0e Binary files /dev/null and b/public/terrain/19/858480/354053.terrain differ diff --git a/public/terrain/19/858480/354054.terrain b/public/terrain/19/858480/354054.terrain new file mode 100644 index 000000000..aececea1b Binary files /dev/null and b/public/terrain/19/858480/354054.terrain differ diff --git a/public/terrain/19/858480/354055.terrain b/public/terrain/19/858480/354055.terrain new file mode 100644 index 000000000..4a1902f90 Binary files /dev/null and b/public/terrain/19/858480/354055.terrain differ diff --git a/public/terrain/19/858480/354056.terrain b/public/terrain/19/858480/354056.terrain new file mode 100644 index 000000000..29e6bcfa0 Binary files /dev/null and b/public/terrain/19/858480/354056.terrain differ diff --git a/public/terrain/19/858480/354057.terrain b/public/terrain/19/858480/354057.terrain new file mode 100644 index 000000000..264e869e9 Binary files /dev/null and b/public/terrain/19/858480/354057.terrain differ diff --git a/public/terrain/19/858480/354058.terrain b/public/terrain/19/858480/354058.terrain new file mode 100644 index 000000000..fe538d603 Binary files /dev/null and b/public/terrain/19/858480/354058.terrain differ diff --git a/public/terrain/19/858480/354059.terrain b/public/terrain/19/858480/354059.terrain new file mode 100644 index 000000000..3333756cf Binary files /dev/null and b/public/terrain/19/858480/354059.terrain differ diff --git a/public/terrain/19/858481/353743.terrain b/public/terrain/19/858481/353743.terrain new file mode 100644 index 000000000..aa147c37e Binary files /dev/null and b/public/terrain/19/858481/353743.terrain differ diff --git a/public/terrain/19/858481/353744.terrain b/public/terrain/19/858481/353744.terrain new file mode 100644 index 000000000..604d8e579 Binary files /dev/null and b/public/terrain/19/858481/353744.terrain differ diff --git a/public/terrain/19/858481/353745.terrain b/public/terrain/19/858481/353745.terrain new file mode 100644 index 000000000..b1ad3eaa9 Binary files /dev/null and b/public/terrain/19/858481/353745.terrain differ diff --git a/public/terrain/19/858481/353746.terrain b/public/terrain/19/858481/353746.terrain new file mode 100644 index 000000000..e62321028 Binary files /dev/null and b/public/terrain/19/858481/353746.terrain differ diff --git a/public/terrain/19/858481/353747.terrain b/public/terrain/19/858481/353747.terrain new file mode 100644 index 000000000..ea0542f99 Binary files /dev/null and b/public/terrain/19/858481/353747.terrain differ diff --git a/public/terrain/19/858481/353748.terrain b/public/terrain/19/858481/353748.terrain new file mode 100644 index 000000000..03f2349b5 Binary files /dev/null and b/public/terrain/19/858481/353748.terrain differ diff --git a/public/terrain/19/858481/353749.terrain b/public/terrain/19/858481/353749.terrain new file mode 100644 index 000000000..77d7c4e0b Binary files /dev/null and b/public/terrain/19/858481/353749.terrain differ diff --git a/public/terrain/19/858481/353750.terrain b/public/terrain/19/858481/353750.terrain new file mode 100644 index 000000000..20654f41d Binary files /dev/null and b/public/terrain/19/858481/353750.terrain differ diff --git a/public/terrain/19/858481/353751.terrain b/public/terrain/19/858481/353751.terrain new file mode 100644 index 000000000..8c550ee1d Binary files /dev/null and b/public/terrain/19/858481/353751.terrain differ diff --git a/public/terrain/19/858481/353752.terrain b/public/terrain/19/858481/353752.terrain new file mode 100644 index 000000000..0ded77930 Binary files /dev/null and b/public/terrain/19/858481/353752.terrain differ diff --git a/public/terrain/19/858481/353753.terrain b/public/terrain/19/858481/353753.terrain new file mode 100644 index 000000000..f36494abd Binary files /dev/null and b/public/terrain/19/858481/353753.terrain differ diff --git a/public/terrain/19/858481/353754.terrain b/public/terrain/19/858481/353754.terrain new file mode 100644 index 000000000..27e4afb57 Binary files /dev/null and b/public/terrain/19/858481/353754.terrain differ diff --git a/public/terrain/19/858481/353755.terrain b/public/terrain/19/858481/353755.terrain new file mode 100644 index 000000000..1747a91fa Binary files /dev/null and b/public/terrain/19/858481/353755.terrain differ diff --git a/public/terrain/19/858481/353756.terrain b/public/terrain/19/858481/353756.terrain new file mode 100644 index 000000000..2ec64ce9f Binary files /dev/null and b/public/terrain/19/858481/353756.terrain differ diff --git a/public/terrain/19/858481/353757.terrain b/public/terrain/19/858481/353757.terrain new file mode 100644 index 000000000..e4bf047e0 Binary files /dev/null and b/public/terrain/19/858481/353757.terrain differ diff --git a/public/terrain/19/858481/353758.terrain b/public/terrain/19/858481/353758.terrain new file mode 100644 index 000000000..1c58647c6 Binary files /dev/null and b/public/terrain/19/858481/353758.terrain differ diff --git a/public/terrain/19/858481/353759.terrain b/public/terrain/19/858481/353759.terrain new file mode 100644 index 000000000..d3c7bc172 Binary files /dev/null and b/public/terrain/19/858481/353759.terrain differ diff --git a/public/terrain/19/858481/353760.terrain b/public/terrain/19/858481/353760.terrain new file mode 100644 index 000000000..a80719319 Binary files /dev/null and b/public/terrain/19/858481/353760.terrain differ diff --git a/public/terrain/19/858481/353761.terrain b/public/terrain/19/858481/353761.terrain new file mode 100644 index 000000000..93f14722d Binary files /dev/null and b/public/terrain/19/858481/353761.terrain differ diff --git a/public/terrain/19/858481/353762.terrain b/public/terrain/19/858481/353762.terrain new file mode 100644 index 000000000..5fd47b985 Binary files /dev/null and b/public/terrain/19/858481/353762.terrain differ diff --git a/public/terrain/19/858481/353763.terrain b/public/terrain/19/858481/353763.terrain new file mode 100644 index 000000000..c9b461faf Binary files /dev/null and b/public/terrain/19/858481/353763.terrain differ diff --git a/public/terrain/19/858481/353764.terrain b/public/terrain/19/858481/353764.terrain new file mode 100644 index 000000000..35b193a5e Binary files /dev/null and b/public/terrain/19/858481/353764.terrain differ diff --git a/public/terrain/19/858481/353765.terrain b/public/terrain/19/858481/353765.terrain new file mode 100644 index 000000000..42eeac323 Binary files /dev/null and b/public/terrain/19/858481/353765.terrain differ diff --git a/public/terrain/19/858481/353766.terrain b/public/terrain/19/858481/353766.terrain new file mode 100644 index 000000000..27be1ea7e Binary files /dev/null and b/public/terrain/19/858481/353766.terrain differ diff --git a/public/terrain/19/858481/353767.terrain b/public/terrain/19/858481/353767.terrain new file mode 100644 index 000000000..af6e6f265 Binary files /dev/null and b/public/terrain/19/858481/353767.terrain differ diff --git a/public/terrain/19/858481/353768.terrain b/public/terrain/19/858481/353768.terrain new file mode 100644 index 000000000..aae061e49 Binary files /dev/null and b/public/terrain/19/858481/353768.terrain differ diff --git a/public/terrain/19/858481/353769.terrain b/public/terrain/19/858481/353769.terrain new file mode 100644 index 000000000..9252a7a49 Binary files /dev/null and b/public/terrain/19/858481/353769.terrain differ diff --git a/public/terrain/19/858481/353770.terrain b/public/terrain/19/858481/353770.terrain new file mode 100644 index 000000000..ec5495fd5 Binary files /dev/null and b/public/terrain/19/858481/353770.terrain differ diff --git a/public/terrain/19/858481/353771.terrain b/public/terrain/19/858481/353771.terrain new file mode 100644 index 000000000..421b9aa43 Binary files /dev/null and b/public/terrain/19/858481/353771.terrain differ diff --git a/public/terrain/19/858481/353772.terrain b/public/terrain/19/858481/353772.terrain new file mode 100644 index 000000000..ac0c41f21 Binary files /dev/null and b/public/terrain/19/858481/353772.terrain differ diff --git a/public/terrain/19/858481/353773.terrain b/public/terrain/19/858481/353773.terrain new file mode 100644 index 000000000..10bdcc3ad Binary files /dev/null and b/public/terrain/19/858481/353773.terrain differ diff --git a/public/terrain/19/858481/353774.terrain b/public/terrain/19/858481/353774.terrain new file mode 100644 index 000000000..fd051cd92 Binary files /dev/null and b/public/terrain/19/858481/353774.terrain differ diff --git a/public/terrain/19/858481/353775.terrain b/public/terrain/19/858481/353775.terrain new file mode 100644 index 000000000..886b6046a Binary files /dev/null and b/public/terrain/19/858481/353775.terrain differ diff --git a/public/terrain/19/858481/353776.terrain b/public/terrain/19/858481/353776.terrain new file mode 100644 index 000000000..1a3990b87 Binary files /dev/null and b/public/terrain/19/858481/353776.terrain differ diff --git a/public/terrain/19/858481/353777.terrain b/public/terrain/19/858481/353777.terrain new file mode 100644 index 000000000..fa1750cb7 Binary files /dev/null and b/public/terrain/19/858481/353777.terrain differ diff --git a/public/terrain/19/858481/353778.terrain b/public/terrain/19/858481/353778.terrain new file mode 100644 index 000000000..ae6c17226 Binary files /dev/null and b/public/terrain/19/858481/353778.terrain differ diff --git a/public/terrain/19/858481/353779.terrain b/public/terrain/19/858481/353779.terrain new file mode 100644 index 000000000..1f1f23e21 Binary files /dev/null and b/public/terrain/19/858481/353779.terrain differ diff --git a/public/terrain/19/858481/353780.terrain b/public/terrain/19/858481/353780.terrain new file mode 100644 index 000000000..1ff952516 Binary files /dev/null and b/public/terrain/19/858481/353780.terrain differ diff --git a/public/terrain/19/858481/353781.terrain b/public/terrain/19/858481/353781.terrain new file mode 100644 index 000000000..c54d6f66f Binary files /dev/null and b/public/terrain/19/858481/353781.terrain differ diff --git a/public/terrain/19/858481/353782.terrain b/public/terrain/19/858481/353782.terrain new file mode 100644 index 000000000..3b2fcc6aa Binary files /dev/null and b/public/terrain/19/858481/353782.terrain differ diff --git a/public/terrain/19/858481/353783.terrain b/public/terrain/19/858481/353783.terrain new file mode 100644 index 000000000..9bd45c3fa Binary files /dev/null and b/public/terrain/19/858481/353783.terrain differ diff --git a/public/terrain/19/858481/353784.terrain b/public/terrain/19/858481/353784.terrain new file mode 100644 index 000000000..819d9c652 Binary files /dev/null and b/public/terrain/19/858481/353784.terrain differ diff --git a/public/terrain/19/858481/353785.terrain b/public/terrain/19/858481/353785.terrain new file mode 100644 index 000000000..5bda0a338 Binary files /dev/null and b/public/terrain/19/858481/353785.terrain differ diff --git a/public/terrain/19/858481/353786.terrain b/public/terrain/19/858481/353786.terrain new file mode 100644 index 000000000..bcc9e0f50 Binary files /dev/null and b/public/terrain/19/858481/353786.terrain differ diff --git a/public/terrain/19/858481/353787.terrain b/public/terrain/19/858481/353787.terrain new file mode 100644 index 000000000..b7b27c7fc Binary files /dev/null and b/public/terrain/19/858481/353787.terrain differ diff --git a/public/terrain/19/858481/353788.terrain b/public/terrain/19/858481/353788.terrain new file mode 100644 index 000000000..7d2634a48 Binary files /dev/null and b/public/terrain/19/858481/353788.terrain differ diff --git a/public/terrain/19/858481/353789.terrain b/public/terrain/19/858481/353789.terrain new file mode 100644 index 000000000..03f11b499 Binary files /dev/null and b/public/terrain/19/858481/353789.terrain differ diff --git a/public/terrain/19/858481/353790.terrain b/public/terrain/19/858481/353790.terrain new file mode 100644 index 000000000..ed0878951 Binary files /dev/null and b/public/terrain/19/858481/353790.terrain differ diff --git a/public/terrain/19/858481/353791.terrain b/public/terrain/19/858481/353791.terrain new file mode 100644 index 000000000..c4065c5c4 Binary files /dev/null and b/public/terrain/19/858481/353791.terrain differ diff --git a/public/terrain/19/858481/353792.terrain b/public/terrain/19/858481/353792.terrain new file mode 100644 index 000000000..e7db84861 Binary files /dev/null and b/public/terrain/19/858481/353792.terrain differ diff --git a/public/terrain/19/858481/353793.terrain b/public/terrain/19/858481/353793.terrain new file mode 100644 index 000000000..42abbb70b Binary files /dev/null and b/public/terrain/19/858481/353793.terrain differ diff --git a/public/terrain/19/858481/353794.terrain b/public/terrain/19/858481/353794.terrain new file mode 100644 index 000000000..9f2c870dc Binary files /dev/null and b/public/terrain/19/858481/353794.terrain differ diff --git a/public/terrain/19/858481/353795.terrain b/public/terrain/19/858481/353795.terrain new file mode 100644 index 000000000..23a2adcd3 Binary files /dev/null and b/public/terrain/19/858481/353795.terrain differ diff --git a/public/terrain/19/858481/353796.terrain b/public/terrain/19/858481/353796.terrain new file mode 100644 index 000000000..de23aa9cd Binary files /dev/null and b/public/terrain/19/858481/353796.terrain differ diff --git a/public/terrain/19/858481/353797.terrain b/public/terrain/19/858481/353797.terrain new file mode 100644 index 000000000..58b5fa446 Binary files /dev/null and b/public/terrain/19/858481/353797.terrain differ diff --git a/public/terrain/19/858481/353798.terrain b/public/terrain/19/858481/353798.terrain new file mode 100644 index 000000000..51a2d6e11 Binary files /dev/null and b/public/terrain/19/858481/353798.terrain differ diff --git a/public/terrain/19/858481/353799.terrain b/public/terrain/19/858481/353799.terrain new file mode 100644 index 000000000..22787e3a5 Binary files /dev/null and b/public/terrain/19/858481/353799.terrain differ diff --git a/public/terrain/19/858481/353800.terrain b/public/terrain/19/858481/353800.terrain new file mode 100644 index 000000000..2c80075e4 Binary files /dev/null and b/public/terrain/19/858481/353800.terrain differ diff --git a/public/terrain/19/858481/353801.terrain b/public/terrain/19/858481/353801.terrain new file mode 100644 index 000000000..b1204e207 Binary files /dev/null and b/public/terrain/19/858481/353801.terrain differ diff --git a/public/terrain/19/858481/353802.terrain b/public/terrain/19/858481/353802.terrain new file mode 100644 index 000000000..161ee680b Binary files /dev/null and b/public/terrain/19/858481/353802.terrain differ diff --git a/public/terrain/19/858481/353803.terrain b/public/terrain/19/858481/353803.terrain new file mode 100644 index 000000000..3f34be7ce Binary files /dev/null and b/public/terrain/19/858481/353803.terrain differ diff --git a/public/terrain/19/858481/353804.terrain b/public/terrain/19/858481/353804.terrain new file mode 100644 index 000000000..f81dc73f8 Binary files /dev/null and b/public/terrain/19/858481/353804.terrain differ diff --git a/public/terrain/19/858481/353805.terrain b/public/terrain/19/858481/353805.terrain new file mode 100644 index 000000000..9ba383aa6 Binary files /dev/null and b/public/terrain/19/858481/353805.terrain differ diff --git a/public/terrain/19/858481/353806.terrain b/public/terrain/19/858481/353806.terrain new file mode 100644 index 000000000..f7852cf65 Binary files /dev/null and b/public/terrain/19/858481/353806.terrain differ diff --git a/public/terrain/19/858481/353807.terrain b/public/terrain/19/858481/353807.terrain new file mode 100644 index 000000000..d957bb800 Binary files /dev/null and b/public/terrain/19/858481/353807.terrain differ diff --git a/public/terrain/19/858481/353808.terrain b/public/terrain/19/858481/353808.terrain new file mode 100644 index 000000000..476907c4f Binary files /dev/null and b/public/terrain/19/858481/353808.terrain differ diff --git a/public/terrain/19/858481/353809.terrain b/public/terrain/19/858481/353809.terrain new file mode 100644 index 000000000..d36c300fa Binary files /dev/null and b/public/terrain/19/858481/353809.terrain differ diff --git a/public/terrain/19/858481/353810.terrain b/public/terrain/19/858481/353810.terrain new file mode 100644 index 000000000..ddcc973be Binary files /dev/null and b/public/terrain/19/858481/353810.terrain differ diff --git a/public/terrain/19/858481/353811.terrain b/public/terrain/19/858481/353811.terrain new file mode 100644 index 000000000..922520e26 Binary files /dev/null and b/public/terrain/19/858481/353811.terrain differ diff --git a/public/terrain/19/858481/353812.terrain b/public/terrain/19/858481/353812.terrain new file mode 100644 index 000000000..dcd3865b1 Binary files /dev/null and b/public/terrain/19/858481/353812.terrain differ diff --git a/public/terrain/19/858481/353813.terrain b/public/terrain/19/858481/353813.terrain new file mode 100644 index 000000000..9286adf70 Binary files /dev/null and b/public/terrain/19/858481/353813.terrain differ diff --git a/public/terrain/19/858481/353814.terrain b/public/terrain/19/858481/353814.terrain new file mode 100644 index 000000000..77ca91d37 Binary files /dev/null and b/public/terrain/19/858481/353814.terrain differ diff --git a/public/terrain/19/858481/353815.terrain b/public/terrain/19/858481/353815.terrain new file mode 100644 index 000000000..b5d775f24 Binary files /dev/null and b/public/terrain/19/858481/353815.terrain differ diff --git a/public/terrain/19/858481/353816.terrain b/public/terrain/19/858481/353816.terrain new file mode 100644 index 000000000..fa67b1739 Binary files /dev/null and b/public/terrain/19/858481/353816.terrain differ diff --git a/public/terrain/19/858481/353817.terrain b/public/terrain/19/858481/353817.terrain new file mode 100644 index 000000000..b13ec5ac3 Binary files /dev/null and b/public/terrain/19/858481/353817.terrain differ diff --git a/public/terrain/19/858481/353818.terrain b/public/terrain/19/858481/353818.terrain new file mode 100644 index 000000000..6781c0408 Binary files /dev/null and b/public/terrain/19/858481/353818.terrain differ diff --git a/public/terrain/19/858481/353819.terrain b/public/terrain/19/858481/353819.terrain new file mode 100644 index 000000000..17eaae4fa Binary files /dev/null and b/public/terrain/19/858481/353819.terrain differ diff --git a/public/terrain/19/858481/353820.terrain b/public/terrain/19/858481/353820.terrain new file mode 100644 index 000000000..fec7720dc Binary files /dev/null and b/public/terrain/19/858481/353820.terrain differ diff --git a/public/terrain/19/858481/353821.terrain b/public/terrain/19/858481/353821.terrain new file mode 100644 index 000000000..b640da4ac Binary files /dev/null and b/public/terrain/19/858481/353821.terrain differ diff --git a/public/terrain/19/858481/353822.terrain b/public/terrain/19/858481/353822.terrain new file mode 100644 index 000000000..cb6017528 Binary files /dev/null and b/public/terrain/19/858481/353822.terrain differ diff --git a/public/terrain/19/858481/353823.terrain b/public/terrain/19/858481/353823.terrain new file mode 100644 index 000000000..e39dd0aa5 Binary files /dev/null and b/public/terrain/19/858481/353823.terrain differ diff --git a/public/terrain/19/858481/353824.terrain b/public/terrain/19/858481/353824.terrain new file mode 100644 index 000000000..8a23c0c31 Binary files /dev/null and b/public/terrain/19/858481/353824.terrain differ diff --git a/public/terrain/19/858481/353825.terrain b/public/terrain/19/858481/353825.terrain new file mode 100644 index 000000000..11e4578b7 Binary files /dev/null and b/public/terrain/19/858481/353825.terrain differ diff --git a/public/terrain/19/858481/353826.terrain b/public/terrain/19/858481/353826.terrain new file mode 100644 index 000000000..cbc5d5fce Binary files /dev/null and b/public/terrain/19/858481/353826.terrain differ diff --git a/public/terrain/19/858481/353827.terrain b/public/terrain/19/858481/353827.terrain new file mode 100644 index 000000000..655f4b984 Binary files /dev/null and b/public/terrain/19/858481/353827.terrain differ diff --git a/public/terrain/19/858481/353828.terrain b/public/terrain/19/858481/353828.terrain new file mode 100644 index 000000000..86e0c1f7b Binary files /dev/null and b/public/terrain/19/858481/353828.terrain differ diff --git a/public/terrain/19/858481/353829.terrain b/public/terrain/19/858481/353829.terrain new file mode 100644 index 000000000..ed733e9b8 Binary files /dev/null and b/public/terrain/19/858481/353829.terrain differ diff --git a/public/terrain/19/858481/353830.terrain b/public/terrain/19/858481/353830.terrain new file mode 100644 index 000000000..cb095ce1c Binary files /dev/null and b/public/terrain/19/858481/353830.terrain differ diff --git a/public/terrain/19/858481/353831.terrain b/public/terrain/19/858481/353831.terrain new file mode 100644 index 000000000..19cfd8ef9 Binary files /dev/null and b/public/terrain/19/858481/353831.terrain differ diff --git a/public/terrain/19/858481/353832.terrain b/public/terrain/19/858481/353832.terrain new file mode 100644 index 000000000..9ae69ac9c Binary files /dev/null and b/public/terrain/19/858481/353832.terrain differ diff --git a/public/terrain/19/858481/353833.terrain b/public/terrain/19/858481/353833.terrain new file mode 100644 index 000000000..904c2bf59 Binary files /dev/null and b/public/terrain/19/858481/353833.terrain differ diff --git a/public/terrain/19/858481/353834.terrain b/public/terrain/19/858481/353834.terrain new file mode 100644 index 000000000..c86dbc18a Binary files /dev/null and b/public/terrain/19/858481/353834.terrain differ diff --git a/public/terrain/19/858481/353835.terrain b/public/terrain/19/858481/353835.terrain new file mode 100644 index 000000000..9d33e2906 Binary files /dev/null and b/public/terrain/19/858481/353835.terrain differ diff --git a/public/terrain/19/858481/353836.terrain b/public/terrain/19/858481/353836.terrain new file mode 100644 index 000000000..2f0cb8634 Binary files /dev/null and b/public/terrain/19/858481/353836.terrain differ diff --git a/public/terrain/19/858481/353837.terrain b/public/terrain/19/858481/353837.terrain new file mode 100644 index 000000000..f9ddc1b00 Binary files /dev/null and b/public/terrain/19/858481/353837.terrain differ diff --git a/public/terrain/19/858481/353838.terrain b/public/terrain/19/858481/353838.terrain new file mode 100644 index 000000000..cb277839a Binary files /dev/null and b/public/terrain/19/858481/353838.terrain differ diff --git a/public/terrain/19/858481/353839.terrain b/public/terrain/19/858481/353839.terrain new file mode 100644 index 000000000..5c6964739 Binary files /dev/null and b/public/terrain/19/858481/353839.terrain differ diff --git a/public/terrain/19/858481/353840.terrain b/public/terrain/19/858481/353840.terrain new file mode 100644 index 000000000..81b2cf0b3 Binary files /dev/null and b/public/terrain/19/858481/353840.terrain differ diff --git a/public/terrain/19/858481/353841.terrain b/public/terrain/19/858481/353841.terrain new file mode 100644 index 000000000..74b897e13 Binary files /dev/null and b/public/terrain/19/858481/353841.terrain differ diff --git a/public/terrain/19/858481/353842.terrain b/public/terrain/19/858481/353842.terrain new file mode 100644 index 000000000..390345831 Binary files /dev/null and b/public/terrain/19/858481/353842.terrain differ diff --git a/public/terrain/19/858481/353843.terrain b/public/terrain/19/858481/353843.terrain new file mode 100644 index 000000000..ad8a591df Binary files /dev/null and b/public/terrain/19/858481/353843.terrain differ diff --git a/public/terrain/19/858481/353844.terrain b/public/terrain/19/858481/353844.terrain new file mode 100644 index 000000000..8d5137d71 Binary files /dev/null and b/public/terrain/19/858481/353844.terrain differ diff --git a/public/terrain/19/858481/353845.terrain b/public/terrain/19/858481/353845.terrain new file mode 100644 index 000000000..a7c788308 Binary files /dev/null and b/public/terrain/19/858481/353845.terrain differ diff --git a/public/terrain/19/858481/353846.terrain b/public/terrain/19/858481/353846.terrain new file mode 100644 index 000000000..c0879eb89 Binary files /dev/null and b/public/terrain/19/858481/353846.terrain differ diff --git a/public/terrain/19/858481/353847.terrain b/public/terrain/19/858481/353847.terrain new file mode 100644 index 000000000..d2f225be6 Binary files /dev/null and b/public/terrain/19/858481/353847.terrain differ diff --git a/public/terrain/19/858481/353848.terrain b/public/terrain/19/858481/353848.terrain new file mode 100644 index 000000000..1a8baa044 Binary files /dev/null and b/public/terrain/19/858481/353848.terrain differ diff --git a/public/terrain/19/858481/353849.terrain b/public/terrain/19/858481/353849.terrain new file mode 100644 index 000000000..85ef56702 Binary files /dev/null and b/public/terrain/19/858481/353849.terrain differ diff --git a/public/terrain/19/858481/353850.terrain b/public/terrain/19/858481/353850.terrain new file mode 100644 index 000000000..a8e90d279 Binary files /dev/null and b/public/terrain/19/858481/353850.terrain differ diff --git a/public/terrain/19/858481/353851.terrain b/public/terrain/19/858481/353851.terrain new file mode 100644 index 000000000..d20ad2e9e Binary files /dev/null and b/public/terrain/19/858481/353851.terrain differ diff --git a/public/terrain/19/858481/353852.terrain b/public/terrain/19/858481/353852.terrain new file mode 100644 index 000000000..19ff20906 Binary files /dev/null and b/public/terrain/19/858481/353852.terrain differ diff --git a/public/terrain/19/858481/353853.terrain b/public/terrain/19/858481/353853.terrain new file mode 100644 index 000000000..f0f4378b7 Binary files /dev/null and b/public/terrain/19/858481/353853.terrain differ diff --git a/public/terrain/19/858481/353854.terrain b/public/terrain/19/858481/353854.terrain new file mode 100644 index 000000000..e446a59e7 Binary files /dev/null and b/public/terrain/19/858481/353854.terrain differ diff --git a/public/terrain/19/858481/353855.terrain b/public/terrain/19/858481/353855.terrain new file mode 100644 index 000000000..96deae91f Binary files /dev/null and b/public/terrain/19/858481/353855.terrain differ diff --git a/public/terrain/19/858481/353856.terrain b/public/terrain/19/858481/353856.terrain new file mode 100644 index 000000000..325809837 Binary files /dev/null and b/public/terrain/19/858481/353856.terrain differ diff --git a/public/terrain/19/858481/353857.terrain b/public/terrain/19/858481/353857.terrain new file mode 100644 index 000000000..74640b2bf Binary files /dev/null and b/public/terrain/19/858481/353857.terrain differ diff --git a/public/terrain/19/858481/353858.terrain b/public/terrain/19/858481/353858.terrain new file mode 100644 index 000000000..4e08b72c0 Binary files /dev/null and b/public/terrain/19/858481/353858.terrain differ diff --git a/public/terrain/19/858481/353859.terrain b/public/terrain/19/858481/353859.terrain new file mode 100644 index 000000000..fd031bd45 Binary files /dev/null and b/public/terrain/19/858481/353859.terrain differ diff --git a/public/terrain/19/858481/353860.terrain b/public/terrain/19/858481/353860.terrain new file mode 100644 index 000000000..6fde9a62e Binary files /dev/null and b/public/terrain/19/858481/353860.terrain differ diff --git a/public/terrain/19/858481/353861.terrain b/public/terrain/19/858481/353861.terrain new file mode 100644 index 000000000..db82ac5a7 Binary files /dev/null and b/public/terrain/19/858481/353861.terrain differ diff --git a/public/terrain/19/858481/353862.terrain b/public/terrain/19/858481/353862.terrain new file mode 100644 index 000000000..dadb8d3bf Binary files /dev/null and b/public/terrain/19/858481/353862.terrain differ diff --git a/public/terrain/19/858481/353863.terrain b/public/terrain/19/858481/353863.terrain new file mode 100644 index 000000000..eb95b3a6b Binary files /dev/null and b/public/terrain/19/858481/353863.terrain differ diff --git a/public/terrain/19/858481/353864.terrain b/public/terrain/19/858481/353864.terrain new file mode 100644 index 000000000..d0d83df02 Binary files /dev/null and b/public/terrain/19/858481/353864.terrain differ diff --git a/public/terrain/19/858481/353865.terrain b/public/terrain/19/858481/353865.terrain new file mode 100644 index 000000000..0d641f0e0 Binary files /dev/null and b/public/terrain/19/858481/353865.terrain differ diff --git a/public/terrain/19/858481/353866.terrain b/public/terrain/19/858481/353866.terrain new file mode 100644 index 000000000..c2369cbb6 Binary files /dev/null and b/public/terrain/19/858481/353866.terrain differ diff --git a/public/terrain/19/858481/353867.terrain b/public/terrain/19/858481/353867.terrain new file mode 100644 index 000000000..4c31a8148 Binary files /dev/null and b/public/terrain/19/858481/353867.terrain differ diff --git a/public/terrain/19/858481/353868.terrain b/public/terrain/19/858481/353868.terrain new file mode 100644 index 000000000..d4cfd52f6 Binary files /dev/null and b/public/terrain/19/858481/353868.terrain differ diff --git a/public/terrain/19/858481/353869.terrain b/public/terrain/19/858481/353869.terrain new file mode 100644 index 000000000..9dc4f8536 Binary files /dev/null and b/public/terrain/19/858481/353869.terrain differ diff --git a/public/terrain/19/858481/353870.terrain b/public/terrain/19/858481/353870.terrain new file mode 100644 index 000000000..b1cfbea35 Binary files /dev/null and b/public/terrain/19/858481/353870.terrain differ diff --git a/public/terrain/19/858481/353871.terrain b/public/terrain/19/858481/353871.terrain new file mode 100644 index 000000000..8da6e3dac Binary files /dev/null and b/public/terrain/19/858481/353871.terrain differ diff --git a/public/terrain/19/858481/353872.terrain b/public/terrain/19/858481/353872.terrain new file mode 100644 index 000000000..80f6068ac Binary files /dev/null and b/public/terrain/19/858481/353872.terrain differ diff --git a/public/terrain/19/858481/353873.terrain b/public/terrain/19/858481/353873.terrain new file mode 100644 index 000000000..38ea44233 Binary files /dev/null and b/public/terrain/19/858481/353873.terrain differ diff --git a/public/terrain/19/858481/353874.terrain b/public/terrain/19/858481/353874.terrain new file mode 100644 index 000000000..87945ea96 Binary files /dev/null and b/public/terrain/19/858481/353874.terrain differ diff --git a/public/terrain/19/858481/353875.terrain b/public/terrain/19/858481/353875.terrain new file mode 100644 index 000000000..ec81f26dd Binary files /dev/null and b/public/terrain/19/858481/353875.terrain differ diff --git a/public/terrain/19/858481/353876.terrain b/public/terrain/19/858481/353876.terrain new file mode 100644 index 000000000..4752e244b Binary files /dev/null and b/public/terrain/19/858481/353876.terrain differ diff --git a/public/terrain/19/858481/353877.terrain b/public/terrain/19/858481/353877.terrain new file mode 100644 index 000000000..8d2a4c9cf Binary files /dev/null and b/public/terrain/19/858481/353877.terrain differ diff --git a/public/terrain/19/858481/353878.terrain b/public/terrain/19/858481/353878.terrain new file mode 100644 index 000000000..ecffbe08b Binary files /dev/null and b/public/terrain/19/858481/353878.terrain differ diff --git a/public/terrain/19/858481/353879.terrain b/public/terrain/19/858481/353879.terrain new file mode 100644 index 000000000..aa1449c1c Binary files /dev/null and b/public/terrain/19/858481/353879.terrain differ diff --git a/public/terrain/19/858481/353880.terrain b/public/terrain/19/858481/353880.terrain new file mode 100644 index 000000000..055fdc71f Binary files /dev/null and b/public/terrain/19/858481/353880.terrain differ diff --git a/public/terrain/19/858481/353881.terrain b/public/terrain/19/858481/353881.terrain new file mode 100644 index 000000000..12a76568e Binary files /dev/null and b/public/terrain/19/858481/353881.terrain differ diff --git a/public/terrain/19/858481/353882.terrain b/public/terrain/19/858481/353882.terrain new file mode 100644 index 000000000..1679e2e58 Binary files /dev/null and b/public/terrain/19/858481/353882.terrain differ diff --git a/public/terrain/19/858481/353883.terrain b/public/terrain/19/858481/353883.terrain new file mode 100644 index 000000000..4f3de2396 Binary files /dev/null and b/public/terrain/19/858481/353883.terrain differ diff --git a/public/terrain/19/858481/353884.terrain b/public/terrain/19/858481/353884.terrain new file mode 100644 index 000000000..7e50cac5d Binary files /dev/null and b/public/terrain/19/858481/353884.terrain differ diff --git a/public/terrain/19/858481/353885.terrain b/public/terrain/19/858481/353885.terrain new file mode 100644 index 000000000..9e4719d2d Binary files /dev/null and b/public/terrain/19/858481/353885.terrain differ diff --git a/public/terrain/19/858481/353886.terrain b/public/terrain/19/858481/353886.terrain new file mode 100644 index 000000000..490bc3cac Binary files /dev/null and b/public/terrain/19/858481/353886.terrain differ diff --git a/public/terrain/19/858481/353887.terrain b/public/terrain/19/858481/353887.terrain new file mode 100644 index 000000000..7a7f3c575 Binary files /dev/null and b/public/terrain/19/858481/353887.terrain differ diff --git a/public/terrain/19/858481/353888.terrain b/public/terrain/19/858481/353888.terrain new file mode 100644 index 000000000..e89b04a17 Binary files /dev/null and b/public/terrain/19/858481/353888.terrain differ diff --git a/public/terrain/19/858481/353889.terrain b/public/terrain/19/858481/353889.terrain new file mode 100644 index 000000000..39ff2adf7 Binary files /dev/null and b/public/terrain/19/858481/353889.terrain differ diff --git a/public/terrain/19/858481/353890.terrain b/public/terrain/19/858481/353890.terrain new file mode 100644 index 000000000..1b30b82e7 Binary files /dev/null and b/public/terrain/19/858481/353890.terrain differ diff --git a/public/terrain/19/858481/353891.terrain b/public/terrain/19/858481/353891.terrain new file mode 100644 index 000000000..3f5cba96c Binary files /dev/null and b/public/terrain/19/858481/353891.terrain differ diff --git a/public/terrain/19/858481/353892.terrain b/public/terrain/19/858481/353892.terrain new file mode 100644 index 000000000..34be37af2 Binary files /dev/null and b/public/terrain/19/858481/353892.terrain differ diff --git a/public/terrain/19/858481/353893.terrain b/public/terrain/19/858481/353893.terrain new file mode 100644 index 000000000..28f21e624 Binary files /dev/null and b/public/terrain/19/858481/353893.terrain differ diff --git a/public/terrain/19/858481/353894.terrain b/public/terrain/19/858481/353894.terrain new file mode 100644 index 000000000..0e1850b3b Binary files /dev/null and b/public/terrain/19/858481/353894.terrain differ diff --git a/public/terrain/19/858481/353895.terrain b/public/terrain/19/858481/353895.terrain new file mode 100644 index 000000000..edf12d0d8 Binary files /dev/null and b/public/terrain/19/858481/353895.terrain differ diff --git a/public/terrain/19/858481/353896.terrain b/public/terrain/19/858481/353896.terrain new file mode 100644 index 000000000..e481acc6f Binary files /dev/null and b/public/terrain/19/858481/353896.terrain differ diff --git a/public/terrain/19/858481/353897.terrain b/public/terrain/19/858481/353897.terrain new file mode 100644 index 000000000..85f307175 Binary files /dev/null and b/public/terrain/19/858481/353897.terrain differ diff --git a/public/terrain/19/858481/353898.terrain b/public/terrain/19/858481/353898.terrain new file mode 100644 index 000000000..4c845edbd Binary files /dev/null and b/public/terrain/19/858481/353898.terrain differ diff --git a/public/terrain/19/858481/353899.terrain b/public/terrain/19/858481/353899.terrain new file mode 100644 index 000000000..985c2f28b Binary files /dev/null and b/public/terrain/19/858481/353899.terrain differ diff --git a/public/terrain/19/858481/353900.terrain b/public/terrain/19/858481/353900.terrain new file mode 100644 index 000000000..9c3e0e6f8 Binary files /dev/null and b/public/terrain/19/858481/353900.terrain differ diff --git a/public/terrain/19/858481/353901.terrain b/public/terrain/19/858481/353901.terrain new file mode 100644 index 000000000..f8253ff12 Binary files /dev/null and b/public/terrain/19/858481/353901.terrain differ diff --git a/public/terrain/19/858481/353902.terrain b/public/terrain/19/858481/353902.terrain new file mode 100644 index 000000000..9c6e29a17 Binary files /dev/null and b/public/terrain/19/858481/353902.terrain differ diff --git a/public/terrain/19/858481/353903.terrain b/public/terrain/19/858481/353903.terrain new file mode 100644 index 000000000..4448e584d Binary files /dev/null and b/public/terrain/19/858481/353903.terrain differ diff --git a/public/terrain/19/858481/353904.terrain b/public/terrain/19/858481/353904.terrain new file mode 100644 index 000000000..7e5013da0 Binary files /dev/null and b/public/terrain/19/858481/353904.terrain differ diff --git a/public/terrain/19/858481/353905.terrain b/public/terrain/19/858481/353905.terrain new file mode 100644 index 000000000..fc054f0f2 Binary files /dev/null and b/public/terrain/19/858481/353905.terrain differ diff --git a/public/terrain/19/858481/353906.terrain b/public/terrain/19/858481/353906.terrain new file mode 100644 index 000000000..c5b4de25b Binary files /dev/null and b/public/terrain/19/858481/353906.terrain differ diff --git a/public/terrain/19/858481/353907.terrain b/public/terrain/19/858481/353907.terrain new file mode 100644 index 000000000..7472f0de6 Binary files /dev/null and b/public/terrain/19/858481/353907.terrain differ diff --git a/public/terrain/19/858481/353908.terrain b/public/terrain/19/858481/353908.terrain new file mode 100644 index 000000000..273c003fa Binary files /dev/null and b/public/terrain/19/858481/353908.terrain differ diff --git a/public/terrain/19/858481/353909.terrain b/public/terrain/19/858481/353909.terrain new file mode 100644 index 000000000..a863a96eb Binary files /dev/null and b/public/terrain/19/858481/353909.terrain differ diff --git a/public/terrain/19/858481/353910.terrain b/public/terrain/19/858481/353910.terrain new file mode 100644 index 000000000..12bba2d1a Binary files /dev/null and b/public/terrain/19/858481/353910.terrain differ diff --git a/public/terrain/19/858481/353911.terrain b/public/terrain/19/858481/353911.terrain new file mode 100644 index 000000000..c1946c8f2 Binary files /dev/null and b/public/terrain/19/858481/353911.terrain differ diff --git a/public/terrain/19/858481/353912.terrain b/public/terrain/19/858481/353912.terrain new file mode 100644 index 000000000..6ae927a5b Binary files /dev/null and b/public/terrain/19/858481/353912.terrain differ diff --git a/public/terrain/19/858481/353913.terrain b/public/terrain/19/858481/353913.terrain new file mode 100644 index 000000000..c6f46ac0f Binary files /dev/null and b/public/terrain/19/858481/353913.terrain differ diff --git a/public/terrain/19/858481/353914.terrain b/public/terrain/19/858481/353914.terrain new file mode 100644 index 000000000..e6ea02e35 Binary files /dev/null and b/public/terrain/19/858481/353914.terrain differ diff --git a/public/terrain/19/858481/353915.terrain b/public/terrain/19/858481/353915.terrain new file mode 100644 index 000000000..09c3f5e39 Binary files /dev/null and b/public/terrain/19/858481/353915.terrain differ diff --git a/public/terrain/19/858481/353916.terrain b/public/terrain/19/858481/353916.terrain new file mode 100644 index 000000000..93ed00c91 Binary files /dev/null and b/public/terrain/19/858481/353916.terrain differ diff --git a/public/terrain/19/858481/353917.terrain b/public/terrain/19/858481/353917.terrain new file mode 100644 index 000000000..eb6318e30 Binary files /dev/null and b/public/terrain/19/858481/353917.terrain differ diff --git a/public/terrain/19/858481/353918.terrain b/public/terrain/19/858481/353918.terrain new file mode 100644 index 000000000..7a88a7e4f Binary files /dev/null and b/public/terrain/19/858481/353918.terrain differ diff --git a/public/terrain/19/858481/353919.terrain b/public/terrain/19/858481/353919.terrain new file mode 100644 index 000000000..e385d37b9 Binary files /dev/null and b/public/terrain/19/858481/353919.terrain differ diff --git a/public/terrain/19/858481/353920.terrain b/public/terrain/19/858481/353920.terrain new file mode 100644 index 000000000..57bc0365c Binary files /dev/null and b/public/terrain/19/858481/353920.terrain differ diff --git a/public/terrain/19/858481/353921.terrain b/public/terrain/19/858481/353921.terrain new file mode 100644 index 000000000..ece7f04c0 Binary files /dev/null and b/public/terrain/19/858481/353921.terrain differ diff --git a/public/terrain/19/858481/353922.terrain b/public/terrain/19/858481/353922.terrain new file mode 100644 index 000000000..b7c76afdc Binary files /dev/null and b/public/terrain/19/858481/353922.terrain differ diff --git a/public/terrain/19/858481/353923.terrain b/public/terrain/19/858481/353923.terrain new file mode 100644 index 000000000..d2b48f352 Binary files /dev/null and b/public/terrain/19/858481/353923.terrain differ diff --git a/public/terrain/19/858481/353924.terrain b/public/terrain/19/858481/353924.terrain new file mode 100644 index 000000000..56ecde5bd Binary files /dev/null and b/public/terrain/19/858481/353924.terrain differ diff --git a/public/terrain/19/858481/353925.terrain b/public/terrain/19/858481/353925.terrain new file mode 100644 index 000000000..e52a9f215 Binary files /dev/null and b/public/terrain/19/858481/353925.terrain differ diff --git a/public/terrain/19/858481/353926.terrain b/public/terrain/19/858481/353926.terrain new file mode 100644 index 000000000..8a50bac5c Binary files /dev/null and b/public/terrain/19/858481/353926.terrain differ diff --git a/public/terrain/19/858481/353927.terrain b/public/terrain/19/858481/353927.terrain new file mode 100644 index 000000000..1de8f41bb Binary files /dev/null and b/public/terrain/19/858481/353927.terrain differ diff --git a/public/terrain/19/858481/353928.terrain b/public/terrain/19/858481/353928.terrain new file mode 100644 index 000000000..6d312faf1 Binary files /dev/null and b/public/terrain/19/858481/353928.terrain differ diff --git a/public/terrain/19/858481/353929.terrain b/public/terrain/19/858481/353929.terrain new file mode 100644 index 000000000..1eff0c40a Binary files /dev/null and b/public/terrain/19/858481/353929.terrain differ diff --git a/public/terrain/19/858481/353930.terrain b/public/terrain/19/858481/353930.terrain new file mode 100644 index 000000000..c56361926 Binary files /dev/null and b/public/terrain/19/858481/353930.terrain differ diff --git a/public/terrain/19/858481/353931.terrain b/public/terrain/19/858481/353931.terrain new file mode 100644 index 000000000..9ba23ad46 Binary files /dev/null and b/public/terrain/19/858481/353931.terrain differ diff --git a/public/terrain/19/858481/353932.terrain b/public/terrain/19/858481/353932.terrain new file mode 100644 index 000000000..cb774c8a0 Binary files /dev/null and b/public/terrain/19/858481/353932.terrain differ diff --git a/public/terrain/19/858481/353933.terrain b/public/terrain/19/858481/353933.terrain new file mode 100644 index 000000000..c9412924a Binary files /dev/null and b/public/terrain/19/858481/353933.terrain differ diff --git a/public/terrain/19/858481/353934.terrain b/public/terrain/19/858481/353934.terrain new file mode 100644 index 000000000..f9a7277d4 Binary files /dev/null and b/public/terrain/19/858481/353934.terrain differ diff --git a/public/terrain/19/858481/353935.terrain b/public/terrain/19/858481/353935.terrain new file mode 100644 index 000000000..1222c15f9 Binary files /dev/null and b/public/terrain/19/858481/353935.terrain differ diff --git a/public/terrain/19/858481/353936.terrain b/public/terrain/19/858481/353936.terrain new file mode 100644 index 000000000..d8b98dff6 Binary files /dev/null and b/public/terrain/19/858481/353936.terrain differ diff --git a/public/terrain/19/858481/353937.terrain b/public/terrain/19/858481/353937.terrain new file mode 100644 index 000000000..5468095b3 Binary files /dev/null and b/public/terrain/19/858481/353937.terrain differ diff --git a/public/terrain/19/858481/353938.terrain b/public/terrain/19/858481/353938.terrain new file mode 100644 index 000000000..62a14063b Binary files /dev/null and b/public/terrain/19/858481/353938.terrain differ diff --git a/public/terrain/19/858481/353939.terrain b/public/terrain/19/858481/353939.terrain new file mode 100644 index 000000000..bbfa4290b Binary files /dev/null and b/public/terrain/19/858481/353939.terrain differ diff --git a/public/terrain/19/858481/353940.terrain b/public/terrain/19/858481/353940.terrain new file mode 100644 index 000000000..7a15cf314 Binary files /dev/null and b/public/terrain/19/858481/353940.terrain differ diff --git a/public/terrain/19/858481/353941.terrain b/public/terrain/19/858481/353941.terrain new file mode 100644 index 000000000..f4fd8fe6b Binary files /dev/null and b/public/terrain/19/858481/353941.terrain differ diff --git a/public/terrain/19/858481/353942.terrain b/public/terrain/19/858481/353942.terrain new file mode 100644 index 000000000..2b49a0d97 Binary files /dev/null and b/public/terrain/19/858481/353942.terrain differ diff --git a/public/terrain/19/858481/353943.terrain b/public/terrain/19/858481/353943.terrain new file mode 100644 index 000000000..5cc702fd6 Binary files /dev/null and b/public/terrain/19/858481/353943.terrain differ diff --git a/public/terrain/19/858481/353944.terrain b/public/terrain/19/858481/353944.terrain new file mode 100644 index 000000000..6babe33d2 Binary files /dev/null and b/public/terrain/19/858481/353944.terrain differ diff --git a/public/terrain/19/858481/353945.terrain b/public/terrain/19/858481/353945.terrain new file mode 100644 index 000000000..45028e0aa Binary files /dev/null and b/public/terrain/19/858481/353945.terrain differ diff --git a/public/terrain/19/858481/353946.terrain b/public/terrain/19/858481/353946.terrain new file mode 100644 index 000000000..0f52a18c6 Binary files /dev/null and b/public/terrain/19/858481/353946.terrain differ diff --git a/public/terrain/19/858481/353947.terrain b/public/terrain/19/858481/353947.terrain new file mode 100644 index 000000000..18e75c69f Binary files /dev/null and b/public/terrain/19/858481/353947.terrain differ diff --git a/public/terrain/19/858481/353948.terrain b/public/terrain/19/858481/353948.terrain new file mode 100644 index 000000000..ff8f26ced Binary files /dev/null and b/public/terrain/19/858481/353948.terrain differ diff --git a/public/terrain/19/858481/353949.terrain b/public/terrain/19/858481/353949.terrain new file mode 100644 index 000000000..59f50e900 Binary files /dev/null and b/public/terrain/19/858481/353949.terrain differ diff --git a/public/terrain/19/858481/353950.terrain b/public/terrain/19/858481/353950.terrain new file mode 100644 index 000000000..b6dd81690 Binary files /dev/null and b/public/terrain/19/858481/353950.terrain differ diff --git a/public/terrain/19/858481/353951.terrain b/public/terrain/19/858481/353951.terrain new file mode 100644 index 000000000..20feddc06 Binary files /dev/null and b/public/terrain/19/858481/353951.terrain differ diff --git a/public/terrain/19/858481/353952.terrain b/public/terrain/19/858481/353952.terrain new file mode 100644 index 000000000..c45caa9d2 Binary files /dev/null and b/public/terrain/19/858481/353952.terrain differ diff --git a/public/terrain/19/858481/353953.terrain b/public/terrain/19/858481/353953.terrain new file mode 100644 index 000000000..e7b00b144 Binary files /dev/null and b/public/terrain/19/858481/353953.terrain differ diff --git a/public/terrain/19/858481/353954.terrain b/public/terrain/19/858481/353954.terrain new file mode 100644 index 000000000..3421eef6f Binary files /dev/null and b/public/terrain/19/858481/353954.terrain differ diff --git a/public/terrain/19/858481/353955.terrain b/public/terrain/19/858481/353955.terrain new file mode 100644 index 000000000..a18241456 Binary files /dev/null and b/public/terrain/19/858481/353955.terrain differ diff --git a/public/terrain/19/858481/353956.terrain b/public/terrain/19/858481/353956.terrain new file mode 100644 index 000000000..aab8954e5 Binary files /dev/null and b/public/terrain/19/858481/353956.terrain differ diff --git a/public/terrain/19/858481/353957.terrain b/public/terrain/19/858481/353957.terrain new file mode 100644 index 000000000..143d7ce2f Binary files /dev/null and b/public/terrain/19/858481/353957.terrain differ diff --git a/public/terrain/19/858481/353958.terrain b/public/terrain/19/858481/353958.terrain new file mode 100644 index 000000000..593a485da Binary files /dev/null and b/public/terrain/19/858481/353958.terrain differ diff --git a/public/terrain/19/858481/353959.terrain b/public/terrain/19/858481/353959.terrain new file mode 100644 index 000000000..56d528740 Binary files /dev/null and b/public/terrain/19/858481/353959.terrain differ diff --git a/public/terrain/19/858481/353960.terrain b/public/terrain/19/858481/353960.terrain new file mode 100644 index 000000000..981e7df6e Binary files /dev/null and b/public/terrain/19/858481/353960.terrain differ diff --git a/public/terrain/19/858481/353961.terrain b/public/terrain/19/858481/353961.terrain new file mode 100644 index 000000000..15a0fb987 Binary files /dev/null and b/public/terrain/19/858481/353961.terrain differ diff --git a/public/terrain/19/858481/353962.terrain b/public/terrain/19/858481/353962.terrain new file mode 100644 index 000000000..389355eba Binary files /dev/null and b/public/terrain/19/858481/353962.terrain differ diff --git a/public/terrain/19/858481/353963.terrain b/public/terrain/19/858481/353963.terrain new file mode 100644 index 000000000..345604c25 Binary files /dev/null and b/public/terrain/19/858481/353963.terrain differ diff --git a/public/terrain/19/858481/353964.terrain b/public/terrain/19/858481/353964.terrain new file mode 100644 index 000000000..afec68490 Binary files /dev/null and b/public/terrain/19/858481/353964.terrain differ diff --git a/public/terrain/19/858481/353965.terrain b/public/terrain/19/858481/353965.terrain new file mode 100644 index 000000000..6d5d89bbf Binary files /dev/null and b/public/terrain/19/858481/353965.terrain differ diff --git a/public/terrain/19/858481/353966.terrain b/public/terrain/19/858481/353966.terrain new file mode 100644 index 000000000..65f82f1a4 Binary files /dev/null and b/public/terrain/19/858481/353966.terrain differ diff --git a/public/terrain/19/858481/353967.terrain b/public/terrain/19/858481/353967.terrain new file mode 100644 index 000000000..f173727ae Binary files /dev/null and b/public/terrain/19/858481/353967.terrain differ diff --git a/public/terrain/19/858481/353968.terrain b/public/terrain/19/858481/353968.terrain new file mode 100644 index 000000000..fc5d24e92 Binary files /dev/null and b/public/terrain/19/858481/353968.terrain differ diff --git a/public/terrain/19/858481/353969.terrain b/public/terrain/19/858481/353969.terrain new file mode 100644 index 000000000..dc487bd2a Binary files /dev/null and b/public/terrain/19/858481/353969.terrain differ diff --git a/public/terrain/19/858481/353970.terrain b/public/terrain/19/858481/353970.terrain new file mode 100644 index 000000000..350e56899 Binary files /dev/null and b/public/terrain/19/858481/353970.terrain differ diff --git a/public/terrain/19/858481/353971.terrain b/public/terrain/19/858481/353971.terrain new file mode 100644 index 000000000..17add42a3 Binary files /dev/null and b/public/terrain/19/858481/353971.terrain differ diff --git a/public/terrain/19/858481/353972.terrain b/public/terrain/19/858481/353972.terrain new file mode 100644 index 000000000..be08673b6 Binary files /dev/null and b/public/terrain/19/858481/353972.terrain differ diff --git a/public/terrain/19/858481/353973.terrain b/public/terrain/19/858481/353973.terrain new file mode 100644 index 000000000..39e7c2242 Binary files /dev/null and b/public/terrain/19/858481/353973.terrain differ diff --git a/public/terrain/19/858481/353974.terrain b/public/terrain/19/858481/353974.terrain new file mode 100644 index 000000000..4df9e3884 Binary files /dev/null and b/public/terrain/19/858481/353974.terrain differ diff --git a/public/terrain/19/858481/353975.terrain b/public/terrain/19/858481/353975.terrain new file mode 100644 index 000000000..a92074748 Binary files /dev/null and b/public/terrain/19/858481/353975.terrain differ diff --git a/public/terrain/19/858481/353976.terrain b/public/terrain/19/858481/353976.terrain new file mode 100644 index 000000000..3ab9e4c24 Binary files /dev/null and b/public/terrain/19/858481/353976.terrain differ diff --git a/public/terrain/19/858481/353977.terrain b/public/terrain/19/858481/353977.terrain new file mode 100644 index 000000000..687d6ec1c Binary files /dev/null and b/public/terrain/19/858481/353977.terrain differ diff --git a/public/terrain/19/858481/353978.terrain b/public/terrain/19/858481/353978.terrain new file mode 100644 index 000000000..a9fe2e2fe Binary files /dev/null and b/public/terrain/19/858481/353978.terrain differ diff --git a/public/terrain/19/858481/353979.terrain b/public/terrain/19/858481/353979.terrain new file mode 100644 index 000000000..05b68f2e6 Binary files /dev/null and b/public/terrain/19/858481/353979.terrain differ diff --git a/public/terrain/19/858481/353980.terrain b/public/terrain/19/858481/353980.terrain new file mode 100644 index 000000000..5731c37c4 Binary files /dev/null and b/public/terrain/19/858481/353980.terrain differ diff --git a/public/terrain/19/858481/353981.terrain b/public/terrain/19/858481/353981.terrain new file mode 100644 index 000000000..5a6d0adfe Binary files /dev/null and b/public/terrain/19/858481/353981.terrain differ diff --git a/public/terrain/19/858481/353982.terrain b/public/terrain/19/858481/353982.terrain new file mode 100644 index 000000000..4f99a5002 Binary files /dev/null and b/public/terrain/19/858481/353982.terrain differ diff --git a/public/terrain/19/858481/353983.terrain b/public/terrain/19/858481/353983.terrain new file mode 100644 index 000000000..00679e316 Binary files /dev/null and b/public/terrain/19/858481/353983.terrain differ diff --git a/public/terrain/19/858481/353984.terrain b/public/terrain/19/858481/353984.terrain new file mode 100644 index 000000000..c7c0214c2 Binary files /dev/null and b/public/terrain/19/858481/353984.terrain differ diff --git a/public/terrain/19/858481/353985.terrain b/public/terrain/19/858481/353985.terrain new file mode 100644 index 000000000..0e4130525 Binary files /dev/null and b/public/terrain/19/858481/353985.terrain differ diff --git a/public/terrain/19/858481/353986.terrain b/public/terrain/19/858481/353986.terrain new file mode 100644 index 000000000..fbd3bccd3 Binary files /dev/null and b/public/terrain/19/858481/353986.terrain differ diff --git a/public/terrain/19/858481/353987.terrain b/public/terrain/19/858481/353987.terrain new file mode 100644 index 000000000..7ff583594 Binary files /dev/null and b/public/terrain/19/858481/353987.terrain differ diff --git a/public/terrain/19/858481/353988.terrain b/public/terrain/19/858481/353988.terrain new file mode 100644 index 000000000..0af90e1a6 Binary files /dev/null and b/public/terrain/19/858481/353988.terrain differ diff --git a/public/terrain/19/858481/353989.terrain b/public/terrain/19/858481/353989.terrain new file mode 100644 index 000000000..eff85aa17 Binary files /dev/null and b/public/terrain/19/858481/353989.terrain differ diff --git a/public/terrain/19/858481/353990.terrain b/public/terrain/19/858481/353990.terrain new file mode 100644 index 000000000..8f16c1401 Binary files /dev/null and b/public/terrain/19/858481/353990.terrain differ diff --git a/public/terrain/19/858481/353991.terrain b/public/terrain/19/858481/353991.terrain new file mode 100644 index 000000000..982899178 Binary files /dev/null and b/public/terrain/19/858481/353991.terrain differ diff --git a/public/terrain/19/858481/353992.terrain b/public/terrain/19/858481/353992.terrain new file mode 100644 index 000000000..3f2488c82 Binary files /dev/null and b/public/terrain/19/858481/353992.terrain differ diff --git a/public/terrain/19/858481/353993.terrain b/public/terrain/19/858481/353993.terrain new file mode 100644 index 000000000..1f7946fed Binary files /dev/null and b/public/terrain/19/858481/353993.terrain differ diff --git a/public/terrain/19/858481/353994.terrain b/public/terrain/19/858481/353994.terrain new file mode 100644 index 000000000..be59cd4b2 Binary files /dev/null and b/public/terrain/19/858481/353994.terrain differ diff --git a/public/terrain/19/858481/353995.terrain b/public/terrain/19/858481/353995.terrain new file mode 100644 index 000000000..2a9591175 Binary files /dev/null and b/public/terrain/19/858481/353995.terrain differ diff --git a/public/terrain/19/858481/353996.terrain b/public/terrain/19/858481/353996.terrain new file mode 100644 index 000000000..e18c89137 Binary files /dev/null and b/public/terrain/19/858481/353996.terrain differ diff --git a/public/terrain/19/858481/353997.terrain b/public/terrain/19/858481/353997.terrain new file mode 100644 index 000000000..ff905c809 Binary files /dev/null and b/public/terrain/19/858481/353997.terrain differ diff --git a/public/terrain/19/858481/353998.terrain b/public/terrain/19/858481/353998.terrain new file mode 100644 index 000000000..789e5946e Binary files /dev/null and b/public/terrain/19/858481/353998.terrain differ diff --git a/public/terrain/19/858481/353999.terrain b/public/terrain/19/858481/353999.terrain new file mode 100644 index 000000000..b24c3ecc1 Binary files /dev/null and b/public/terrain/19/858481/353999.terrain differ diff --git a/public/terrain/19/858481/354000.terrain b/public/terrain/19/858481/354000.terrain new file mode 100644 index 000000000..8e6e38840 Binary files /dev/null and b/public/terrain/19/858481/354000.terrain differ diff --git a/public/terrain/19/858481/354001.terrain b/public/terrain/19/858481/354001.terrain new file mode 100644 index 000000000..f6b281abd Binary files /dev/null and b/public/terrain/19/858481/354001.terrain differ diff --git a/public/terrain/19/858481/354002.terrain b/public/terrain/19/858481/354002.terrain new file mode 100644 index 000000000..bbc896913 Binary files /dev/null and b/public/terrain/19/858481/354002.terrain differ diff --git a/public/terrain/19/858481/354003.terrain b/public/terrain/19/858481/354003.terrain new file mode 100644 index 000000000..8aec41fab Binary files /dev/null and b/public/terrain/19/858481/354003.terrain differ diff --git a/public/terrain/19/858481/354004.terrain b/public/terrain/19/858481/354004.terrain new file mode 100644 index 000000000..05ff4e4b5 Binary files /dev/null and b/public/terrain/19/858481/354004.terrain differ diff --git a/public/terrain/19/858481/354005.terrain b/public/terrain/19/858481/354005.terrain new file mode 100644 index 000000000..0894d3a58 Binary files /dev/null and b/public/terrain/19/858481/354005.terrain differ diff --git a/public/terrain/19/858481/354006.terrain b/public/terrain/19/858481/354006.terrain new file mode 100644 index 000000000..e7a5e9461 Binary files /dev/null and b/public/terrain/19/858481/354006.terrain differ diff --git a/public/terrain/19/858481/354007.terrain b/public/terrain/19/858481/354007.terrain new file mode 100644 index 000000000..7b1119ca2 Binary files /dev/null and b/public/terrain/19/858481/354007.terrain differ diff --git a/public/terrain/19/858481/354008.terrain b/public/terrain/19/858481/354008.terrain new file mode 100644 index 000000000..2d0db90d2 Binary files /dev/null and b/public/terrain/19/858481/354008.terrain differ diff --git a/public/terrain/19/858481/354009.terrain b/public/terrain/19/858481/354009.terrain new file mode 100644 index 000000000..63cacbb42 Binary files /dev/null and b/public/terrain/19/858481/354009.terrain differ diff --git a/public/terrain/19/858481/354010.terrain b/public/terrain/19/858481/354010.terrain new file mode 100644 index 000000000..c877145f8 Binary files /dev/null and b/public/terrain/19/858481/354010.terrain differ diff --git a/public/terrain/19/858481/354011.terrain b/public/terrain/19/858481/354011.terrain new file mode 100644 index 000000000..e01f2be68 Binary files /dev/null and b/public/terrain/19/858481/354011.terrain differ diff --git a/public/terrain/19/858481/354012.terrain b/public/terrain/19/858481/354012.terrain new file mode 100644 index 000000000..cd2dcd36b Binary files /dev/null and b/public/terrain/19/858481/354012.terrain differ diff --git a/public/terrain/19/858481/354013.terrain b/public/terrain/19/858481/354013.terrain new file mode 100644 index 000000000..02129b3ae Binary files /dev/null and b/public/terrain/19/858481/354013.terrain differ diff --git a/public/terrain/19/858481/354014.terrain b/public/terrain/19/858481/354014.terrain new file mode 100644 index 000000000..ee10ec223 Binary files /dev/null and b/public/terrain/19/858481/354014.terrain differ diff --git a/public/terrain/19/858481/354015.terrain b/public/terrain/19/858481/354015.terrain new file mode 100644 index 000000000..c485f66c1 Binary files /dev/null and b/public/terrain/19/858481/354015.terrain differ diff --git a/public/terrain/19/858481/354016.terrain b/public/terrain/19/858481/354016.terrain new file mode 100644 index 000000000..3f60375fb Binary files /dev/null and b/public/terrain/19/858481/354016.terrain differ diff --git a/public/terrain/19/858481/354017.terrain b/public/terrain/19/858481/354017.terrain new file mode 100644 index 000000000..f96d7622c Binary files /dev/null and b/public/terrain/19/858481/354017.terrain differ diff --git a/public/terrain/19/858481/354018.terrain b/public/terrain/19/858481/354018.terrain new file mode 100644 index 000000000..4b9a7e5e2 Binary files /dev/null and b/public/terrain/19/858481/354018.terrain differ diff --git a/public/terrain/19/858481/354019.terrain b/public/terrain/19/858481/354019.terrain new file mode 100644 index 000000000..25fb9befa Binary files /dev/null and b/public/terrain/19/858481/354019.terrain differ diff --git a/public/terrain/19/858481/354020.terrain b/public/terrain/19/858481/354020.terrain new file mode 100644 index 000000000..40e37c0d8 Binary files /dev/null and b/public/terrain/19/858481/354020.terrain differ diff --git a/public/terrain/19/858481/354021.terrain b/public/terrain/19/858481/354021.terrain new file mode 100644 index 000000000..7491fe6b5 Binary files /dev/null and b/public/terrain/19/858481/354021.terrain differ diff --git a/public/terrain/19/858481/354022.terrain b/public/terrain/19/858481/354022.terrain new file mode 100644 index 000000000..44f772759 Binary files /dev/null and b/public/terrain/19/858481/354022.terrain differ diff --git a/public/terrain/19/858481/354023.terrain b/public/terrain/19/858481/354023.terrain new file mode 100644 index 000000000..ed23f4fc5 Binary files /dev/null and b/public/terrain/19/858481/354023.terrain differ diff --git a/public/terrain/19/858481/354024.terrain b/public/terrain/19/858481/354024.terrain new file mode 100644 index 000000000..3e7e53653 Binary files /dev/null and b/public/terrain/19/858481/354024.terrain differ diff --git a/public/terrain/19/858481/354025.terrain b/public/terrain/19/858481/354025.terrain new file mode 100644 index 000000000..fe9b03318 Binary files /dev/null and b/public/terrain/19/858481/354025.terrain differ diff --git a/public/terrain/19/858481/354026.terrain b/public/terrain/19/858481/354026.terrain new file mode 100644 index 000000000..d3193f311 Binary files /dev/null and b/public/terrain/19/858481/354026.terrain differ diff --git a/public/terrain/19/858481/354027.terrain b/public/terrain/19/858481/354027.terrain new file mode 100644 index 000000000..c69f7f794 Binary files /dev/null and b/public/terrain/19/858481/354027.terrain differ diff --git a/public/terrain/19/858481/354028.terrain b/public/terrain/19/858481/354028.terrain new file mode 100644 index 000000000..b0e12dc67 Binary files /dev/null and b/public/terrain/19/858481/354028.terrain differ diff --git a/public/terrain/19/858481/354029.terrain b/public/terrain/19/858481/354029.terrain new file mode 100644 index 000000000..75323c950 Binary files /dev/null and b/public/terrain/19/858481/354029.terrain differ diff --git a/public/terrain/19/858481/354030.terrain b/public/terrain/19/858481/354030.terrain new file mode 100644 index 000000000..18bd887fc Binary files /dev/null and b/public/terrain/19/858481/354030.terrain differ diff --git a/public/terrain/19/858481/354031.terrain b/public/terrain/19/858481/354031.terrain new file mode 100644 index 000000000..e83b89981 Binary files /dev/null and b/public/terrain/19/858481/354031.terrain differ diff --git a/public/terrain/19/858481/354032.terrain b/public/terrain/19/858481/354032.terrain new file mode 100644 index 000000000..6a72b97d2 Binary files /dev/null and b/public/terrain/19/858481/354032.terrain differ diff --git a/public/terrain/19/858481/354033.terrain b/public/terrain/19/858481/354033.terrain new file mode 100644 index 000000000..48b009e0b Binary files /dev/null and b/public/terrain/19/858481/354033.terrain differ diff --git a/public/terrain/19/858481/354034.terrain b/public/terrain/19/858481/354034.terrain new file mode 100644 index 000000000..6141a22f8 Binary files /dev/null and b/public/terrain/19/858481/354034.terrain differ diff --git a/public/terrain/19/858481/354035.terrain b/public/terrain/19/858481/354035.terrain new file mode 100644 index 000000000..b1c0171b1 Binary files /dev/null and b/public/terrain/19/858481/354035.terrain differ diff --git a/public/terrain/19/858481/354036.terrain b/public/terrain/19/858481/354036.terrain new file mode 100644 index 000000000..6a6f89a54 Binary files /dev/null and b/public/terrain/19/858481/354036.terrain differ diff --git a/public/terrain/19/858481/354037.terrain b/public/terrain/19/858481/354037.terrain new file mode 100644 index 000000000..16225e09e Binary files /dev/null and b/public/terrain/19/858481/354037.terrain differ diff --git a/public/terrain/19/858481/354038.terrain b/public/terrain/19/858481/354038.terrain new file mode 100644 index 000000000..143839282 Binary files /dev/null and b/public/terrain/19/858481/354038.terrain differ diff --git a/public/terrain/19/858481/354039.terrain b/public/terrain/19/858481/354039.terrain new file mode 100644 index 000000000..fcdd37e57 Binary files /dev/null and b/public/terrain/19/858481/354039.terrain differ diff --git a/public/terrain/19/858481/354040.terrain b/public/terrain/19/858481/354040.terrain new file mode 100644 index 000000000..39c8462a5 Binary files /dev/null and b/public/terrain/19/858481/354040.terrain differ diff --git a/public/terrain/19/858481/354041.terrain b/public/terrain/19/858481/354041.terrain new file mode 100644 index 000000000..f410c1ce0 Binary files /dev/null and b/public/terrain/19/858481/354041.terrain differ diff --git a/public/terrain/19/858481/354042.terrain b/public/terrain/19/858481/354042.terrain new file mode 100644 index 000000000..8d7f674bc Binary files /dev/null and b/public/terrain/19/858481/354042.terrain differ diff --git a/public/terrain/19/858481/354043.terrain b/public/terrain/19/858481/354043.terrain new file mode 100644 index 000000000..f5c0c33d8 Binary files /dev/null and b/public/terrain/19/858481/354043.terrain differ diff --git a/public/terrain/19/858481/354044.terrain b/public/terrain/19/858481/354044.terrain new file mode 100644 index 000000000..12639bc31 Binary files /dev/null and b/public/terrain/19/858481/354044.terrain differ diff --git a/public/terrain/19/858481/354045.terrain b/public/terrain/19/858481/354045.terrain new file mode 100644 index 000000000..fc533fd54 Binary files /dev/null and b/public/terrain/19/858481/354045.terrain differ diff --git a/public/terrain/19/858481/354046.terrain b/public/terrain/19/858481/354046.terrain new file mode 100644 index 000000000..eaad2ce5c Binary files /dev/null and b/public/terrain/19/858481/354046.terrain differ diff --git a/public/terrain/19/858481/354047.terrain b/public/terrain/19/858481/354047.terrain new file mode 100644 index 000000000..251b013c7 Binary files /dev/null and b/public/terrain/19/858481/354047.terrain differ diff --git a/public/terrain/19/858481/354048.terrain b/public/terrain/19/858481/354048.terrain new file mode 100644 index 000000000..4dbe94385 Binary files /dev/null and b/public/terrain/19/858481/354048.terrain differ diff --git a/public/terrain/19/858481/354049.terrain b/public/terrain/19/858481/354049.terrain new file mode 100644 index 000000000..fce154589 Binary files /dev/null and b/public/terrain/19/858481/354049.terrain differ diff --git a/public/terrain/19/858481/354050.terrain b/public/terrain/19/858481/354050.terrain new file mode 100644 index 000000000..a98b6bf38 Binary files /dev/null and b/public/terrain/19/858481/354050.terrain differ diff --git a/public/terrain/19/858481/354051.terrain b/public/terrain/19/858481/354051.terrain new file mode 100644 index 000000000..d8e608433 Binary files /dev/null and b/public/terrain/19/858481/354051.terrain differ diff --git a/public/terrain/19/858481/354052.terrain b/public/terrain/19/858481/354052.terrain new file mode 100644 index 000000000..2d7c94c3c Binary files /dev/null and b/public/terrain/19/858481/354052.terrain differ diff --git a/public/terrain/19/858481/354053.terrain b/public/terrain/19/858481/354053.terrain new file mode 100644 index 000000000..0b8d81f74 Binary files /dev/null and b/public/terrain/19/858481/354053.terrain differ diff --git a/public/terrain/19/858481/354054.terrain b/public/terrain/19/858481/354054.terrain new file mode 100644 index 000000000..68d15b731 Binary files /dev/null and b/public/terrain/19/858481/354054.terrain differ diff --git a/public/terrain/19/858481/354055.terrain b/public/terrain/19/858481/354055.terrain new file mode 100644 index 000000000..88e6e3f6a Binary files /dev/null and b/public/terrain/19/858481/354055.terrain differ diff --git a/public/terrain/19/858481/354056.terrain b/public/terrain/19/858481/354056.terrain new file mode 100644 index 000000000..fd3a6cebf Binary files /dev/null and b/public/terrain/19/858481/354056.terrain differ diff --git a/public/terrain/19/858481/354057.terrain b/public/terrain/19/858481/354057.terrain new file mode 100644 index 000000000..0dc632aaf Binary files /dev/null and b/public/terrain/19/858481/354057.terrain differ diff --git a/public/terrain/19/858481/354058.terrain b/public/terrain/19/858481/354058.terrain new file mode 100644 index 000000000..e20d6e288 Binary files /dev/null and b/public/terrain/19/858481/354058.terrain differ diff --git a/public/terrain/19/858481/354059.terrain b/public/terrain/19/858481/354059.terrain new file mode 100644 index 000000000..6ea1b304c Binary files /dev/null and b/public/terrain/19/858481/354059.terrain differ diff --git a/public/terrain/19/858482/353743.terrain b/public/terrain/19/858482/353743.terrain new file mode 100644 index 000000000..a27539268 Binary files /dev/null and b/public/terrain/19/858482/353743.terrain differ diff --git a/public/terrain/19/858482/353744.terrain b/public/terrain/19/858482/353744.terrain new file mode 100644 index 000000000..6443b32f9 Binary files /dev/null and b/public/terrain/19/858482/353744.terrain differ diff --git a/public/terrain/19/858482/353745.terrain b/public/terrain/19/858482/353745.terrain new file mode 100644 index 000000000..d7d731453 Binary files /dev/null and b/public/terrain/19/858482/353745.terrain differ diff --git a/public/terrain/19/858482/353746.terrain b/public/terrain/19/858482/353746.terrain new file mode 100644 index 000000000..0bd243946 Binary files /dev/null and b/public/terrain/19/858482/353746.terrain differ diff --git a/public/terrain/19/858482/353747.terrain b/public/terrain/19/858482/353747.terrain new file mode 100644 index 000000000..b4adda430 Binary files /dev/null and b/public/terrain/19/858482/353747.terrain differ diff --git a/public/terrain/19/858482/353748.terrain b/public/terrain/19/858482/353748.terrain new file mode 100644 index 000000000..43f681184 Binary files /dev/null and b/public/terrain/19/858482/353748.terrain differ diff --git a/public/terrain/19/858482/353749.terrain b/public/terrain/19/858482/353749.terrain new file mode 100644 index 000000000..e441b56f1 Binary files /dev/null and b/public/terrain/19/858482/353749.terrain differ diff --git a/public/terrain/19/858482/353750.terrain b/public/terrain/19/858482/353750.terrain new file mode 100644 index 000000000..38764da31 Binary files /dev/null and b/public/terrain/19/858482/353750.terrain differ diff --git a/public/terrain/19/858482/353751.terrain b/public/terrain/19/858482/353751.terrain new file mode 100644 index 000000000..ca4409add Binary files /dev/null and b/public/terrain/19/858482/353751.terrain differ diff --git a/public/terrain/19/858482/353752.terrain b/public/terrain/19/858482/353752.terrain new file mode 100644 index 000000000..68634ea99 Binary files /dev/null and b/public/terrain/19/858482/353752.terrain differ diff --git a/public/terrain/19/858482/353753.terrain b/public/terrain/19/858482/353753.terrain new file mode 100644 index 000000000..90b59840e Binary files /dev/null and b/public/terrain/19/858482/353753.terrain differ diff --git a/public/terrain/19/858482/353754.terrain b/public/terrain/19/858482/353754.terrain new file mode 100644 index 000000000..6ea662a52 Binary files /dev/null and b/public/terrain/19/858482/353754.terrain differ diff --git a/public/terrain/19/858482/353755.terrain b/public/terrain/19/858482/353755.terrain new file mode 100644 index 000000000..6d3304947 Binary files /dev/null and b/public/terrain/19/858482/353755.terrain differ diff --git a/public/terrain/19/858482/353756.terrain b/public/terrain/19/858482/353756.terrain new file mode 100644 index 000000000..dfed967ad Binary files /dev/null and b/public/terrain/19/858482/353756.terrain differ diff --git a/public/terrain/19/858482/353757.terrain b/public/terrain/19/858482/353757.terrain new file mode 100644 index 000000000..b618f04c4 Binary files /dev/null and b/public/terrain/19/858482/353757.terrain differ diff --git a/public/terrain/19/858482/353758.terrain b/public/terrain/19/858482/353758.terrain new file mode 100644 index 000000000..a747baca6 Binary files /dev/null and b/public/terrain/19/858482/353758.terrain differ diff --git a/public/terrain/19/858482/353759.terrain b/public/terrain/19/858482/353759.terrain new file mode 100644 index 000000000..732c72131 Binary files /dev/null and b/public/terrain/19/858482/353759.terrain differ diff --git a/public/terrain/19/858482/353760.terrain b/public/terrain/19/858482/353760.terrain new file mode 100644 index 000000000..be615221b Binary files /dev/null and b/public/terrain/19/858482/353760.terrain differ diff --git a/public/terrain/19/858482/353761.terrain b/public/terrain/19/858482/353761.terrain new file mode 100644 index 000000000..d90ee949a Binary files /dev/null and b/public/terrain/19/858482/353761.terrain differ diff --git a/public/terrain/19/858482/353762.terrain b/public/terrain/19/858482/353762.terrain new file mode 100644 index 000000000..25ba1d941 Binary files /dev/null and b/public/terrain/19/858482/353762.terrain differ diff --git a/public/terrain/19/858482/353763.terrain b/public/terrain/19/858482/353763.terrain new file mode 100644 index 000000000..c58c5c6c7 Binary files /dev/null and b/public/terrain/19/858482/353763.terrain differ diff --git a/public/terrain/19/858482/353764.terrain b/public/terrain/19/858482/353764.terrain new file mode 100644 index 000000000..5b164a655 Binary files /dev/null and b/public/terrain/19/858482/353764.terrain differ diff --git a/public/terrain/19/858482/353765.terrain b/public/terrain/19/858482/353765.terrain new file mode 100644 index 000000000..ef1cad5a7 Binary files /dev/null and b/public/terrain/19/858482/353765.terrain differ diff --git a/public/terrain/19/858482/353766.terrain b/public/terrain/19/858482/353766.terrain new file mode 100644 index 000000000..197a3b852 Binary files /dev/null and b/public/terrain/19/858482/353766.terrain differ diff --git a/public/terrain/19/858482/353767.terrain b/public/terrain/19/858482/353767.terrain new file mode 100644 index 000000000..63c0bafa2 Binary files /dev/null and b/public/terrain/19/858482/353767.terrain differ diff --git a/public/terrain/19/858482/353768.terrain b/public/terrain/19/858482/353768.terrain new file mode 100644 index 000000000..a260121cf Binary files /dev/null and b/public/terrain/19/858482/353768.terrain differ diff --git a/public/terrain/19/858482/353769.terrain b/public/terrain/19/858482/353769.terrain new file mode 100644 index 000000000..613807ecd Binary files /dev/null and b/public/terrain/19/858482/353769.terrain differ diff --git a/public/terrain/19/858482/353770.terrain b/public/terrain/19/858482/353770.terrain new file mode 100644 index 000000000..b457195ec Binary files /dev/null and b/public/terrain/19/858482/353770.terrain differ diff --git a/public/terrain/19/858482/353771.terrain b/public/terrain/19/858482/353771.terrain new file mode 100644 index 000000000..ad641ff27 Binary files /dev/null and b/public/terrain/19/858482/353771.terrain differ diff --git a/public/terrain/19/858482/353772.terrain b/public/terrain/19/858482/353772.terrain new file mode 100644 index 000000000..8cfe3477e Binary files /dev/null and b/public/terrain/19/858482/353772.terrain differ diff --git a/public/terrain/19/858482/353773.terrain b/public/terrain/19/858482/353773.terrain new file mode 100644 index 000000000..1cd6e6050 Binary files /dev/null and b/public/terrain/19/858482/353773.terrain differ diff --git a/public/terrain/19/858482/353774.terrain b/public/terrain/19/858482/353774.terrain new file mode 100644 index 000000000..8f4c1b5d1 Binary files /dev/null and b/public/terrain/19/858482/353774.terrain differ diff --git a/public/terrain/19/858482/353775.terrain b/public/terrain/19/858482/353775.terrain new file mode 100644 index 000000000..5488ca158 Binary files /dev/null and b/public/terrain/19/858482/353775.terrain differ diff --git a/public/terrain/19/858482/353776.terrain b/public/terrain/19/858482/353776.terrain new file mode 100644 index 000000000..7d8cb657d Binary files /dev/null and b/public/terrain/19/858482/353776.terrain differ diff --git a/public/terrain/19/858482/353777.terrain b/public/terrain/19/858482/353777.terrain new file mode 100644 index 000000000..ba8105e52 Binary files /dev/null and b/public/terrain/19/858482/353777.terrain differ diff --git a/public/terrain/19/858482/353778.terrain b/public/terrain/19/858482/353778.terrain new file mode 100644 index 000000000..5e3ecb474 Binary files /dev/null and b/public/terrain/19/858482/353778.terrain differ diff --git a/public/terrain/19/858482/353779.terrain b/public/terrain/19/858482/353779.terrain new file mode 100644 index 000000000..460795dc0 Binary files /dev/null and b/public/terrain/19/858482/353779.terrain differ diff --git a/public/terrain/19/858482/353780.terrain b/public/terrain/19/858482/353780.terrain new file mode 100644 index 000000000..4d2498db2 Binary files /dev/null and b/public/terrain/19/858482/353780.terrain differ diff --git a/public/terrain/19/858482/353781.terrain b/public/terrain/19/858482/353781.terrain new file mode 100644 index 000000000..b12d7ebd7 Binary files /dev/null and b/public/terrain/19/858482/353781.terrain differ diff --git a/public/terrain/19/858482/353782.terrain b/public/terrain/19/858482/353782.terrain new file mode 100644 index 000000000..0bc566ed1 Binary files /dev/null and b/public/terrain/19/858482/353782.terrain differ diff --git a/public/terrain/19/858482/353783.terrain b/public/terrain/19/858482/353783.terrain new file mode 100644 index 000000000..c7b2b87be Binary files /dev/null and b/public/terrain/19/858482/353783.terrain differ diff --git a/public/terrain/19/858482/353784.terrain b/public/terrain/19/858482/353784.terrain new file mode 100644 index 000000000..d254dcf77 Binary files /dev/null and b/public/terrain/19/858482/353784.terrain differ diff --git a/public/terrain/19/858482/353785.terrain b/public/terrain/19/858482/353785.terrain new file mode 100644 index 000000000..429a6aac7 Binary files /dev/null and b/public/terrain/19/858482/353785.terrain differ diff --git a/public/terrain/19/858482/353786.terrain b/public/terrain/19/858482/353786.terrain new file mode 100644 index 000000000..d56df6f64 Binary files /dev/null and b/public/terrain/19/858482/353786.terrain differ diff --git a/public/terrain/19/858482/353787.terrain b/public/terrain/19/858482/353787.terrain new file mode 100644 index 000000000..fb5d9444a Binary files /dev/null and b/public/terrain/19/858482/353787.terrain differ diff --git a/public/terrain/19/858482/353788.terrain b/public/terrain/19/858482/353788.terrain new file mode 100644 index 000000000..abcf3f9bb Binary files /dev/null and b/public/terrain/19/858482/353788.terrain differ diff --git a/public/terrain/19/858482/353789.terrain b/public/terrain/19/858482/353789.terrain new file mode 100644 index 000000000..77d1586a1 Binary files /dev/null and b/public/terrain/19/858482/353789.terrain differ diff --git a/public/terrain/19/858482/353790.terrain b/public/terrain/19/858482/353790.terrain new file mode 100644 index 000000000..a18ec48a0 Binary files /dev/null and b/public/terrain/19/858482/353790.terrain differ diff --git a/public/terrain/19/858482/353791.terrain b/public/terrain/19/858482/353791.terrain new file mode 100644 index 000000000..8bb45892f Binary files /dev/null and b/public/terrain/19/858482/353791.terrain differ diff --git a/public/terrain/19/858482/353792.terrain b/public/terrain/19/858482/353792.terrain new file mode 100644 index 000000000..4234a1c31 Binary files /dev/null and b/public/terrain/19/858482/353792.terrain differ diff --git a/public/terrain/19/858482/353793.terrain b/public/terrain/19/858482/353793.terrain new file mode 100644 index 000000000..596917b4e Binary files /dev/null and b/public/terrain/19/858482/353793.terrain differ diff --git a/public/terrain/19/858482/353794.terrain b/public/terrain/19/858482/353794.terrain new file mode 100644 index 000000000..b7e4e12ca Binary files /dev/null and b/public/terrain/19/858482/353794.terrain differ diff --git a/public/terrain/19/858482/353795.terrain b/public/terrain/19/858482/353795.terrain new file mode 100644 index 000000000..5e5401ba4 Binary files /dev/null and b/public/terrain/19/858482/353795.terrain differ diff --git a/public/terrain/19/858482/353796.terrain b/public/terrain/19/858482/353796.terrain new file mode 100644 index 000000000..05d67c013 Binary files /dev/null and b/public/terrain/19/858482/353796.terrain differ diff --git a/public/terrain/19/858482/353797.terrain b/public/terrain/19/858482/353797.terrain new file mode 100644 index 000000000..5e82895f4 Binary files /dev/null and b/public/terrain/19/858482/353797.terrain differ diff --git a/public/terrain/19/858482/353798.terrain b/public/terrain/19/858482/353798.terrain new file mode 100644 index 000000000..c26b377d6 Binary files /dev/null and b/public/terrain/19/858482/353798.terrain differ diff --git a/public/terrain/19/858482/353799.terrain b/public/terrain/19/858482/353799.terrain new file mode 100644 index 000000000..fba878283 Binary files /dev/null and b/public/terrain/19/858482/353799.terrain differ diff --git a/public/terrain/19/858482/353800.terrain b/public/terrain/19/858482/353800.terrain new file mode 100644 index 000000000..6df843d33 Binary files /dev/null and b/public/terrain/19/858482/353800.terrain differ diff --git a/public/terrain/19/858482/353801.terrain b/public/terrain/19/858482/353801.terrain new file mode 100644 index 000000000..ff80f3543 Binary files /dev/null and b/public/terrain/19/858482/353801.terrain differ diff --git a/public/terrain/19/858482/353802.terrain b/public/terrain/19/858482/353802.terrain new file mode 100644 index 000000000..7246b8a1f Binary files /dev/null and b/public/terrain/19/858482/353802.terrain differ diff --git a/public/terrain/19/858482/353803.terrain b/public/terrain/19/858482/353803.terrain new file mode 100644 index 000000000..1c7c89c06 Binary files /dev/null and b/public/terrain/19/858482/353803.terrain differ diff --git a/public/terrain/19/858482/353804.terrain b/public/terrain/19/858482/353804.terrain new file mode 100644 index 000000000..964da7c28 Binary files /dev/null and b/public/terrain/19/858482/353804.terrain differ diff --git a/public/terrain/19/858482/353805.terrain b/public/terrain/19/858482/353805.terrain new file mode 100644 index 000000000..b06b4db2a Binary files /dev/null and b/public/terrain/19/858482/353805.terrain differ diff --git a/public/terrain/19/858482/353806.terrain b/public/terrain/19/858482/353806.terrain new file mode 100644 index 000000000..4f5fb1871 Binary files /dev/null and b/public/terrain/19/858482/353806.terrain differ diff --git a/public/terrain/19/858482/353807.terrain b/public/terrain/19/858482/353807.terrain new file mode 100644 index 000000000..17b4d635e Binary files /dev/null and b/public/terrain/19/858482/353807.terrain differ diff --git a/public/terrain/19/858482/353808.terrain b/public/terrain/19/858482/353808.terrain new file mode 100644 index 000000000..12b41169d Binary files /dev/null and b/public/terrain/19/858482/353808.terrain differ diff --git a/public/terrain/19/858482/353809.terrain b/public/terrain/19/858482/353809.terrain new file mode 100644 index 000000000..470895e47 Binary files /dev/null and b/public/terrain/19/858482/353809.terrain differ diff --git a/public/terrain/19/858482/353810.terrain b/public/terrain/19/858482/353810.terrain new file mode 100644 index 000000000..f15292f6f Binary files /dev/null and b/public/terrain/19/858482/353810.terrain differ diff --git a/public/terrain/19/858482/353811.terrain b/public/terrain/19/858482/353811.terrain new file mode 100644 index 000000000..ddf379919 Binary files /dev/null and b/public/terrain/19/858482/353811.terrain differ diff --git a/public/terrain/19/858482/353812.terrain b/public/terrain/19/858482/353812.terrain new file mode 100644 index 000000000..54074773e Binary files /dev/null and b/public/terrain/19/858482/353812.terrain differ diff --git a/public/terrain/19/858482/353813.terrain b/public/terrain/19/858482/353813.terrain new file mode 100644 index 000000000..47d124f6b Binary files /dev/null and b/public/terrain/19/858482/353813.terrain differ diff --git a/public/terrain/19/858482/353814.terrain b/public/terrain/19/858482/353814.terrain new file mode 100644 index 000000000..bae0b8f11 Binary files /dev/null and b/public/terrain/19/858482/353814.terrain differ diff --git a/public/terrain/19/858482/353815.terrain b/public/terrain/19/858482/353815.terrain new file mode 100644 index 000000000..38d4b72f4 Binary files /dev/null and b/public/terrain/19/858482/353815.terrain differ diff --git a/public/terrain/19/858482/353816.terrain b/public/terrain/19/858482/353816.terrain new file mode 100644 index 000000000..64768353c Binary files /dev/null and b/public/terrain/19/858482/353816.terrain differ diff --git a/public/terrain/19/858482/353817.terrain b/public/terrain/19/858482/353817.terrain new file mode 100644 index 000000000..865b2b90b Binary files /dev/null and b/public/terrain/19/858482/353817.terrain differ diff --git a/public/terrain/19/858482/353818.terrain b/public/terrain/19/858482/353818.terrain new file mode 100644 index 000000000..936457673 Binary files /dev/null and b/public/terrain/19/858482/353818.terrain differ diff --git a/public/terrain/19/858482/353819.terrain b/public/terrain/19/858482/353819.terrain new file mode 100644 index 000000000..fcfab1f9e Binary files /dev/null and b/public/terrain/19/858482/353819.terrain differ diff --git a/public/terrain/19/858482/353820.terrain b/public/terrain/19/858482/353820.terrain new file mode 100644 index 000000000..33ecf429c Binary files /dev/null and b/public/terrain/19/858482/353820.terrain differ diff --git a/public/terrain/19/858482/353821.terrain b/public/terrain/19/858482/353821.terrain new file mode 100644 index 000000000..a4a56689b Binary files /dev/null and b/public/terrain/19/858482/353821.terrain differ diff --git a/public/terrain/19/858482/353822.terrain b/public/terrain/19/858482/353822.terrain new file mode 100644 index 000000000..d47336a65 Binary files /dev/null and b/public/terrain/19/858482/353822.terrain differ diff --git a/public/terrain/19/858482/353823.terrain b/public/terrain/19/858482/353823.terrain new file mode 100644 index 000000000..ef5e63fbc Binary files /dev/null and b/public/terrain/19/858482/353823.terrain differ diff --git a/public/terrain/19/858482/353824.terrain b/public/terrain/19/858482/353824.terrain new file mode 100644 index 000000000..b25f137d8 Binary files /dev/null and b/public/terrain/19/858482/353824.terrain differ diff --git a/public/terrain/19/858482/353825.terrain b/public/terrain/19/858482/353825.terrain new file mode 100644 index 000000000..9f6ee81e7 Binary files /dev/null and b/public/terrain/19/858482/353825.terrain differ diff --git a/public/terrain/19/858482/353826.terrain b/public/terrain/19/858482/353826.terrain new file mode 100644 index 000000000..36ed53b2b Binary files /dev/null and b/public/terrain/19/858482/353826.terrain differ diff --git a/public/terrain/19/858482/353827.terrain b/public/terrain/19/858482/353827.terrain new file mode 100644 index 000000000..86f21090e Binary files /dev/null and b/public/terrain/19/858482/353827.terrain differ diff --git a/public/terrain/19/858482/353828.terrain b/public/terrain/19/858482/353828.terrain new file mode 100644 index 000000000..b0ea6a62c Binary files /dev/null and b/public/terrain/19/858482/353828.terrain differ diff --git a/public/terrain/19/858482/353829.terrain b/public/terrain/19/858482/353829.terrain new file mode 100644 index 000000000..c6699bcf7 Binary files /dev/null and b/public/terrain/19/858482/353829.terrain differ diff --git a/public/terrain/19/858482/353830.terrain b/public/terrain/19/858482/353830.terrain new file mode 100644 index 000000000..34d07a4d9 Binary files /dev/null and b/public/terrain/19/858482/353830.terrain differ diff --git a/public/terrain/19/858482/353831.terrain b/public/terrain/19/858482/353831.terrain new file mode 100644 index 000000000..294996890 Binary files /dev/null and b/public/terrain/19/858482/353831.terrain differ diff --git a/public/terrain/19/858482/353832.terrain b/public/terrain/19/858482/353832.terrain new file mode 100644 index 000000000..8aaef9bef Binary files /dev/null and b/public/terrain/19/858482/353832.terrain differ diff --git a/public/terrain/19/858482/353833.terrain b/public/terrain/19/858482/353833.terrain new file mode 100644 index 000000000..902fee36d Binary files /dev/null and b/public/terrain/19/858482/353833.terrain differ diff --git a/public/terrain/19/858482/353834.terrain b/public/terrain/19/858482/353834.terrain new file mode 100644 index 000000000..dcae3d536 Binary files /dev/null and b/public/terrain/19/858482/353834.terrain differ diff --git a/public/terrain/19/858482/353835.terrain b/public/terrain/19/858482/353835.terrain new file mode 100644 index 000000000..f262cba7b Binary files /dev/null and b/public/terrain/19/858482/353835.terrain differ diff --git a/public/terrain/19/858482/353836.terrain b/public/terrain/19/858482/353836.terrain new file mode 100644 index 000000000..f9ec0b5cf Binary files /dev/null and b/public/terrain/19/858482/353836.terrain differ diff --git a/public/terrain/19/858482/353837.terrain b/public/terrain/19/858482/353837.terrain new file mode 100644 index 000000000..a13ab3659 Binary files /dev/null and b/public/terrain/19/858482/353837.terrain differ diff --git a/public/terrain/19/858482/353838.terrain b/public/terrain/19/858482/353838.terrain new file mode 100644 index 000000000..5f01177eb Binary files /dev/null and b/public/terrain/19/858482/353838.terrain differ diff --git a/public/terrain/19/858482/353839.terrain b/public/terrain/19/858482/353839.terrain new file mode 100644 index 000000000..c35624ff2 Binary files /dev/null and b/public/terrain/19/858482/353839.terrain differ diff --git a/public/terrain/19/858482/353840.terrain b/public/terrain/19/858482/353840.terrain new file mode 100644 index 000000000..a55924b31 Binary files /dev/null and b/public/terrain/19/858482/353840.terrain differ diff --git a/public/terrain/19/858482/353841.terrain b/public/terrain/19/858482/353841.terrain new file mode 100644 index 000000000..1a9d9cc3a Binary files /dev/null and b/public/terrain/19/858482/353841.terrain differ diff --git a/public/terrain/19/858482/353842.terrain b/public/terrain/19/858482/353842.terrain new file mode 100644 index 000000000..2d583dc1a Binary files /dev/null and b/public/terrain/19/858482/353842.terrain differ diff --git a/public/terrain/19/858482/353843.terrain b/public/terrain/19/858482/353843.terrain new file mode 100644 index 000000000..f76146e47 Binary files /dev/null and b/public/terrain/19/858482/353843.terrain differ diff --git a/public/terrain/19/858482/353844.terrain b/public/terrain/19/858482/353844.terrain new file mode 100644 index 000000000..42953fdba Binary files /dev/null and b/public/terrain/19/858482/353844.terrain differ diff --git a/public/terrain/19/858482/353845.terrain b/public/terrain/19/858482/353845.terrain new file mode 100644 index 000000000..646f75c3c Binary files /dev/null and b/public/terrain/19/858482/353845.terrain differ diff --git a/public/terrain/19/858482/353846.terrain b/public/terrain/19/858482/353846.terrain new file mode 100644 index 000000000..e5b8b0e07 Binary files /dev/null and b/public/terrain/19/858482/353846.terrain differ diff --git a/public/terrain/19/858482/353847.terrain b/public/terrain/19/858482/353847.terrain new file mode 100644 index 000000000..5eb3f3e01 Binary files /dev/null and b/public/terrain/19/858482/353847.terrain differ diff --git a/public/terrain/19/858482/353848.terrain b/public/terrain/19/858482/353848.terrain new file mode 100644 index 000000000..e0dae3788 Binary files /dev/null and b/public/terrain/19/858482/353848.terrain differ diff --git a/public/terrain/19/858482/353849.terrain b/public/terrain/19/858482/353849.terrain new file mode 100644 index 000000000..99950bf8f Binary files /dev/null and b/public/terrain/19/858482/353849.terrain differ diff --git a/public/terrain/19/858482/353850.terrain b/public/terrain/19/858482/353850.terrain new file mode 100644 index 000000000..230d74e72 Binary files /dev/null and b/public/terrain/19/858482/353850.terrain differ diff --git a/public/terrain/19/858482/353851.terrain b/public/terrain/19/858482/353851.terrain new file mode 100644 index 000000000..0b16e72b6 Binary files /dev/null and b/public/terrain/19/858482/353851.terrain differ diff --git a/public/terrain/19/858482/353852.terrain b/public/terrain/19/858482/353852.terrain new file mode 100644 index 000000000..61169cf6d Binary files /dev/null and b/public/terrain/19/858482/353852.terrain differ diff --git a/public/terrain/19/858482/353853.terrain b/public/terrain/19/858482/353853.terrain new file mode 100644 index 000000000..1b37bd71f Binary files /dev/null and b/public/terrain/19/858482/353853.terrain differ diff --git a/public/terrain/19/858482/353854.terrain b/public/terrain/19/858482/353854.terrain new file mode 100644 index 000000000..e5731acd2 Binary files /dev/null and b/public/terrain/19/858482/353854.terrain differ diff --git a/public/terrain/19/858482/353855.terrain b/public/terrain/19/858482/353855.terrain new file mode 100644 index 000000000..53418210e Binary files /dev/null and b/public/terrain/19/858482/353855.terrain differ diff --git a/public/terrain/19/858482/353856.terrain b/public/terrain/19/858482/353856.terrain new file mode 100644 index 000000000..02213869c Binary files /dev/null and b/public/terrain/19/858482/353856.terrain differ diff --git a/public/terrain/19/858482/353857.terrain b/public/terrain/19/858482/353857.terrain new file mode 100644 index 000000000..e2c0c280b Binary files /dev/null and b/public/terrain/19/858482/353857.terrain differ diff --git a/public/terrain/19/858482/353858.terrain b/public/terrain/19/858482/353858.terrain new file mode 100644 index 000000000..ec05ee494 Binary files /dev/null and b/public/terrain/19/858482/353858.terrain differ diff --git a/public/terrain/19/858482/353859.terrain b/public/terrain/19/858482/353859.terrain new file mode 100644 index 000000000..19df504fa Binary files /dev/null and b/public/terrain/19/858482/353859.terrain differ diff --git a/public/terrain/19/858482/353860.terrain b/public/terrain/19/858482/353860.terrain new file mode 100644 index 000000000..81712f1dc Binary files /dev/null and b/public/terrain/19/858482/353860.terrain differ diff --git a/public/terrain/19/858482/353861.terrain b/public/terrain/19/858482/353861.terrain new file mode 100644 index 000000000..09523630f Binary files /dev/null and b/public/terrain/19/858482/353861.terrain differ diff --git a/public/terrain/19/858482/353862.terrain b/public/terrain/19/858482/353862.terrain new file mode 100644 index 000000000..c8f5125af Binary files /dev/null and b/public/terrain/19/858482/353862.terrain differ diff --git a/public/terrain/19/858482/353863.terrain b/public/terrain/19/858482/353863.terrain new file mode 100644 index 000000000..aca9e29e8 Binary files /dev/null and b/public/terrain/19/858482/353863.terrain differ diff --git a/public/terrain/19/858482/353864.terrain b/public/terrain/19/858482/353864.terrain new file mode 100644 index 000000000..d4e53ca86 Binary files /dev/null and b/public/terrain/19/858482/353864.terrain differ diff --git a/public/terrain/19/858482/353865.terrain b/public/terrain/19/858482/353865.terrain new file mode 100644 index 000000000..28809ce38 Binary files /dev/null and b/public/terrain/19/858482/353865.terrain differ diff --git a/public/terrain/19/858482/353866.terrain b/public/terrain/19/858482/353866.terrain new file mode 100644 index 000000000..0402685d3 Binary files /dev/null and b/public/terrain/19/858482/353866.terrain differ diff --git a/public/terrain/19/858482/353867.terrain b/public/terrain/19/858482/353867.terrain new file mode 100644 index 000000000..006ba9e2f Binary files /dev/null and b/public/terrain/19/858482/353867.terrain differ diff --git a/public/terrain/19/858482/353868.terrain b/public/terrain/19/858482/353868.terrain new file mode 100644 index 000000000..8bfe4ebf2 Binary files /dev/null and b/public/terrain/19/858482/353868.terrain differ diff --git a/public/terrain/19/858482/353869.terrain b/public/terrain/19/858482/353869.terrain new file mode 100644 index 000000000..b145483a6 Binary files /dev/null and b/public/terrain/19/858482/353869.terrain differ diff --git a/public/terrain/19/858482/353870.terrain b/public/terrain/19/858482/353870.terrain new file mode 100644 index 000000000..1d269f107 Binary files /dev/null and b/public/terrain/19/858482/353870.terrain differ diff --git a/public/terrain/19/858482/353871.terrain b/public/terrain/19/858482/353871.terrain new file mode 100644 index 000000000..e24c9d5e4 Binary files /dev/null and b/public/terrain/19/858482/353871.terrain differ diff --git a/public/terrain/19/858482/353872.terrain b/public/terrain/19/858482/353872.terrain new file mode 100644 index 000000000..4f2851e1d Binary files /dev/null and b/public/terrain/19/858482/353872.terrain differ diff --git a/public/terrain/19/858482/353873.terrain b/public/terrain/19/858482/353873.terrain new file mode 100644 index 000000000..4e70d51de Binary files /dev/null and b/public/terrain/19/858482/353873.terrain differ diff --git a/public/terrain/19/858482/353874.terrain b/public/terrain/19/858482/353874.terrain new file mode 100644 index 000000000..6144b3f29 Binary files /dev/null and b/public/terrain/19/858482/353874.terrain differ diff --git a/public/terrain/19/858482/353875.terrain b/public/terrain/19/858482/353875.terrain new file mode 100644 index 000000000..f3f7dfd89 Binary files /dev/null and b/public/terrain/19/858482/353875.terrain differ diff --git a/public/terrain/19/858482/353876.terrain b/public/terrain/19/858482/353876.terrain new file mode 100644 index 000000000..a64ab4a9e Binary files /dev/null and b/public/terrain/19/858482/353876.terrain differ diff --git a/public/terrain/19/858482/353877.terrain b/public/terrain/19/858482/353877.terrain new file mode 100644 index 000000000..ea86f553f Binary files /dev/null and b/public/terrain/19/858482/353877.terrain differ diff --git a/public/terrain/19/858482/353878.terrain b/public/terrain/19/858482/353878.terrain new file mode 100644 index 000000000..eae6780f3 Binary files /dev/null and b/public/terrain/19/858482/353878.terrain differ diff --git a/public/terrain/19/858482/353879.terrain b/public/terrain/19/858482/353879.terrain new file mode 100644 index 000000000..f31b7fcd0 Binary files /dev/null and b/public/terrain/19/858482/353879.terrain differ diff --git a/public/terrain/19/858482/353880.terrain b/public/terrain/19/858482/353880.terrain new file mode 100644 index 000000000..5e64e7046 Binary files /dev/null and b/public/terrain/19/858482/353880.terrain differ diff --git a/public/terrain/19/858482/353881.terrain b/public/terrain/19/858482/353881.terrain new file mode 100644 index 000000000..5810f87e3 Binary files /dev/null and b/public/terrain/19/858482/353881.terrain differ diff --git a/public/terrain/19/858482/353882.terrain b/public/terrain/19/858482/353882.terrain new file mode 100644 index 000000000..280deba01 Binary files /dev/null and b/public/terrain/19/858482/353882.terrain differ diff --git a/public/terrain/19/858482/353883.terrain b/public/terrain/19/858482/353883.terrain new file mode 100644 index 000000000..92812e561 Binary files /dev/null and b/public/terrain/19/858482/353883.terrain differ diff --git a/public/terrain/19/858482/353884.terrain b/public/terrain/19/858482/353884.terrain new file mode 100644 index 000000000..0ce9fd2e8 Binary files /dev/null and b/public/terrain/19/858482/353884.terrain differ diff --git a/public/terrain/19/858482/353885.terrain b/public/terrain/19/858482/353885.terrain new file mode 100644 index 000000000..3db84e6ed Binary files /dev/null and b/public/terrain/19/858482/353885.terrain differ diff --git a/public/terrain/19/858482/353886.terrain b/public/terrain/19/858482/353886.terrain new file mode 100644 index 000000000..e983c07cb Binary files /dev/null and b/public/terrain/19/858482/353886.terrain differ diff --git a/public/terrain/19/858482/353887.terrain b/public/terrain/19/858482/353887.terrain new file mode 100644 index 000000000..d1b62360f Binary files /dev/null and b/public/terrain/19/858482/353887.terrain differ diff --git a/public/terrain/19/858482/353888.terrain b/public/terrain/19/858482/353888.terrain new file mode 100644 index 000000000..1247cf883 Binary files /dev/null and b/public/terrain/19/858482/353888.terrain differ diff --git a/public/terrain/19/858482/353889.terrain b/public/terrain/19/858482/353889.terrain new file mode 100644 index 000000000..53deee64b Binary files /dev/null and b/public/terrain/19/858482/353889.terrain differ diff --git a/public/terrain/19/858482/353890.terrain b/public/terrain/19/858482/353890.terrain new file mode 100644 index 000000000..f5a061fd9 Binary files /dev/null and b/public/terrain/19/858482/353890.terrain differ diff --git a/public/terrain/19/858482/353891.terrain b/public/terrain/19/858482/353891.terrain new file mode 100644 index 000000000..55b717e8b Binary files /dev/null and b/public/terrain/19/858482/353891.terrain differ diff --git a/public/terrain/19/858482/353892.terrain b/public/terrain/19/858482/353892.terrain new file mode 100644 index 000000000..7eba9d820 Binary files /dev/null and b/public/terrain/19/858482/353892.terrain differ diff --git a/public/terrain/19/858482/353893.terrain b/public/terrain/19/858482/353893.terrain new file mode 100644 index 000000000..232f6982d Binary files /dev/null and b/public/terrain/19/858482/353893.terrain differ diff --git a/public/terrain/19/858482/353894.terrain b/public/terrain/19/858482/353894.terrain new file mode 100644 index 000000000..c727d1b0a Binary files /dev/null and b/public/terrain/19/858482/353894.terrain differ diff --git a/public/terrain/19/858482/353895.terrain b/public/terrain/19/858482/353895.terrain new file mode 100644 index 000000000..192ab2502 Binary files /dev/null and b/public/terrain/19/858482/353895.terrain differ diff --git a/public/terrain/19/858482/353896.terrain b/public/terrain/19/858482/353896.terrain new file mode 100644 index 000000000..115db6e53 Binary files /dev/null and b/public/terrain/19/858482/353896.terrain differ diff --git a/public/terrain/19/858482/353897.terrain b/public/terrain/19/858482/353897.terrain new file mode 100644 index 000000000..403098f14 Binary files /dev/null and b/public/terrain/19/858482/353897.terrain differ diff --git a/public/terrain/19/858482/353898.terrain b/public/terrain/19/858482/353898.terrain new file mode 100644 index 000000000..1a9947e32 Binary files /dev/null and b/public/terrain/19/858482/353898.terrain differ diff --git a/public/terrain/19/858482/353899.terrain b/public/terrain/19/858482/353899.terrain new file mode 100644 index 000000000..eb48915a3 Binary files /dev/null and b/public/terrain/19/858482/353899.terrain differ diff --git a/public/terrain/19/858482/353900.terrain b/public/terrain/19/858482/353900.terrain new file mode 100644 index 000000000..9058f7c7b Binary files /dev/null and b/public/terrain/19/858482/353900.terrain differ diff --git a/public/terrain/19/858482/353901.terrain b/public/terrain/19/858482/353901.terrain new file mode 100644 index 000000000..5e2f1c3aa Binary files /dev/null and b/public/terrain/19/858482/353901.terrain differ diff --git a/public/terrain/19/858482/353902.terrain b/public/terrain/19/858482/353902.terrain new file mode 100644 index 000000000..e63586cd0 Binary files /dev/null and b/public/terrain/19/858482/353902.terrain differ diff --git a/public/terrain/19/858482/353903.terrain b/public/terrain/19/858482/353903.terrain new file mode 100644 index 000000000..2a3b8712f Binary files /dev/null and b/public/terrain/19/858482/353903.terrain differ diff --git a/public/terrain/19/858482/353904.terrain b/public/terrain/19/858482/353904.terrain new file mode 100644 index 000000000..b627279f3 Binary files /dev/null and b/public/terrain/19/858482/353904.terrain differ diff --git a/public/terrain/19/858482/353905.terrain b/public/terrain/19/858482/353905.terrain new file mode 100644 index 000000000..785a6a5c3 Binary files /dev/null and b/public/terrain/19/858482/353905.terrain differ diff --git a/public/terrain/19/858482/353906.terrain b/public/terrain/19/858482/353906.terrain new file mode 100644 index 000000000..70b11aed7 Binary files /dev/null and b/public/terrain/19/858482/353906.terrain differ diff --git a/public/terrain/19/858482/353907.terrain b/public/terrain/19/858482/353907.terrain new file mode 100644 index 000000000..33aa230c0 Binary files /dev/null and b/public/terrain/19/858482/353907.terrain differ diff --git a/public/terrain/19/858482/353908.terrain b/public/terrain/19/858482/353908.terrain new file mode 100644 index 000000000..22c70fba2 Binary files /dev/null and b/public/terrain/19/858482/353908.terrain differ diff --git a/public/terrain/19/858482/353909.terrain b/public/terrain/19/858482/353909.terrain new file mode 100644 index 000000000..2cb0afdcf Binary files /dev/null and b/public/terrain/19/858482/353909.terrain differ diff --git a/public/terrain/19/858482/353910.terrain b/public/terrain/19/858482/353910.terrain new file mode 100644 index 000000000..e29dd4326 Binary files /dev/null and b/public/terrain/19/858482/353910.terrain differ diff --git a/public/terrain/19/858482/353911.terrain b/public/terrain/19/858482/353911.terrain new file mode 100644 index 000000000..aeadd7998 Binary files /dev/null and b/public/terrain/19/858482/353911.terrain differ diff --git a/public/terrain/19/858482/353912.terrain b/public/terrain/19/858482/353912.terrain new file mode 100644 index 000000000..27cab65b7 Binary files /dev/null and b/public/terrain/19/858482/353912.terrain differ diff --git a/public/terrain/19/858482/353913.terrain b/public/terrain/19/858482/353913.terrain new file mode 100644 index 000000000..47d05aff8 Binary files /dev/null and b/public/terrain/19/858482/353913.terrain differ diff --git a/public/terrain/19/858482/353914.terrain b/public/terrain/19/858482/353914.terrain new file mode 100644 index 000000000..3c93423ee Binary files /dev/null and b/public/terrain/19/858482/353914.terrain differ diff --git a/public/terrain/19/858482/353915.terrain b/public/terrain/19/858482/353915.terrain new file mode 100644 index 000000000..4e38d75d2 Binary files /dev/null and b/public/terrain/19/858482/353915.terrain differ diff --git a/public/terrain/19/858482/353916.terrain b/public/terrain/19/858482/353916.terrain new file mode 100644 index 000000000..4787df04d Binary files /dev/null and b/public/terrain/19/858482/353916.terrain differ diff --git a/public/terrain/19/858482/353917.terrain b/public/terrain/19/858482/353917.terrain new file mode 100644 index 000000000..905cb42cf Binary files /dev/null and b/public/terrain/19/858482/353917.terrain differ diff --git a/public/terrain/19/858482/353918.terrain b/public/terrain/19/858482/353918.terrain new file mode 100644 index 000000000..3c42f520d Binary files /dev/null and b/public/terrain/19/858482/353918.terrain differ diff --git a/public/terrain/19/858482/353919.terrain b/public/terrain/19/858482/353919.terrain new file mode 100644 index 000000000..633439eba Binary files /dev/null and b/public/terrain/19/858482/353919.terrain differ diff --git a/public/terrain/19/858482/353920.terrain b/public/terrain/19/858482/353920.terrain new file mode 100644 index 000000000..cdc160d60 Binary files /dev/null and b/public/terrain/19/858482/353920.terrain differ diff --git a/public/terrain/19/858482/353921.terrain b/public/terrain/19/858482/353921.terrain new file mode 100644 index 000000000..2c9588ec7 Binary files /dev/null and b/public/terrain/19/858482/353921.terrain differ diff --git a/public/terrain/19/858482/353922.terrain b/public/terrain/19/858482/353922.terrain new file mode 100644 index 000000000..6813c3a3b Binary files /dev/null and b/public/terrain/19/858482/353922.terrain differ diff --git a/public/terrain/19/858482/353923.terrain b/public/terrain/19/858482/353923.terrain new file mode 100644 index 000000000..061e6de86 Binary files /dev/null and b/public/terrain/19/858482/353923.terrain differ diff --git a/public/terrain/19/858482/353924.terrain b/public/terrain/19/858482/353924.terrain new file mode 100644 index 000000000..40b1b5f5e Binary files /dev/null and b/public/terrain/19/858482/353924.terrain differ diff --git a/public/terrain/19/858482/353925.terrain b/public/terrain/19/858482/353925.terrain new file mode 100644 index 000000000..3d0829aac Binary files /dev/null and b/public/terrain/19/858482/353925.terrain differ diff --git a/public/terrain/19/858482/353926.terrain b/public/terrain/19/858482/353926.terrain new file mode 100644 index 000000000..8d2b28e42 Binary files /dev/null and b/public/terrain/19/858482/353926.terrain differ diff --git a/public/terrain/19/858482/353927.terrain b/public/terrain/19/858482/353927.terrain new file mode 100644 index 000000000..e7d11a614 Binary files /dev/null and b/public/terrain/19/858482/353927.terrain differ diff --git a/public/terrain/19/858482/353928.terrain b/public/terrain/19/858482/353928.terrain new file mode 100644 index 000000000..8c412ea02 Binary files /dev/null and b/public/terrain/19/858482/353928.terrain differ diff --git a/public/terrain/19/858482/353929.terrain b/public/terrain/19/858482/353929.terrain new file mode 100644 index 000000000..84cbd7142 Binary files /dev/null and b/public/terrain/19/858482/353929.terrain differ diff --git a/public/terrain/19/858482/353930.terrain b/public/terrain/19/858482/353930.terrain new file mode 100644 index 000000000..06758b667 Binary files /dev/null and b/public/terrain/19/858482/353930.terrain differ diff --git a/public/terrain/19/858482/353931.terrain b/public/terrain/19/858482/353931.terrain new file mode 100644 index 000000000..6d7b064f5 Binary files /dev/null and b/public/terrain/19/858482/353931.terrain differ diff --git a/public/terrain/19/858482/353932.terrain b/public/terrain/19/858482/353932.terrain new file mode 100644 index 000000000..443630dd3 Binary files /dev/null and b/public/terrain/19/858482/353932.terrain differ diff --git a/public/terrain/19/858482/353933.terrain b/public/terrain/19/858482/353933.terrain new file mode 100644 index 000000000..50ad47bda Binary files /dev/null and b/public/terrain/19/858482/353933.terrain differ diff --git a/public/terrain/19/858482/353934.terrain b/public/terrain/19/858482/353934.terrain new file mode 100644 index 000000000..ece22d82e Binary files /dev/null and b/public/terrain/19/858482/353934.terrain differ diff --git a/public/terrain/19/858482/353935.terrain b/public/terrain/19/858482/353935.terrain new file mode 100644 index 000000000..0fdd70736 Binary files /dev/null and b/public/terrain/19/858482/353935.terrain differ diff --git a/public/terrain/19/858482/353936.terrain b/public/terrain/19/858482/353936.terrain new file mode 100644 index 000000000..0b41a420d Binary files /dev/null and b/public/terrain/19/858482/353936.terrain differ diff --git a/public/terrain/19/858482/353937.terrain b/public/terrain/19/858482/353937.terrain new file mode 100644 index 000000000..87e1fa0cc Binary files /dev/null and b/public/terrain/19/858482/353937.terrain differ diff --git a/public/terrain/19/858482/353938.terrain b/public/terrain/19/858482/353938.terrain new file mode 100644 index 000000000..80ee0d364 Binary files /dev/null and b/public/terrain/19/858482/353938.terrain differ diff --git a/public/terrain/19/858482/353939.terrain b/public/terrain/19/858482/353939.terrain new file mode 100644 index 000000000..4eab6f180 Binary files /dev/null and b/public/terrain/19/858482/353939.terrain differ diff --git a/public/terrain/19/858482/353940.terrain b/public/terrain/19/858482/353940.terrain new file mode 100644 index 000000000..592441ce4 Binary files /dev/null and b/public/terrain/19/858482/353940.terrain differ diff --git a/public/terrain/19/858482/353941.terrain b/public/terrain/19/858482/353941.terrain new file mode 100644 index 000000000..f2328a206 Binary files /dev/null and b/public/terrain/19/858482/353941.terrain differ diff --git a/public/terrain/19/858482/353942.terrain b/public/terrain/19/858482/353942.terrain new file mode 100644 index 000000000..65d8fec95 Binary files /dev/null and b/public/terrain/19/858482/353942.terrain differ diff --git a/public/terrain/19/858482/353943.terrain b/public/terrain/19/858482/353943.terrain new file mode 100644 index 000000000..023a7fb1c Binary files /dev/null and b/public/terrain/19/858482/353943.terrain differ diff --git a/public/terrain/19/858482/353944.terrain b/public/terrain/19/858482/353944.terrain new file mode 100644 index 000000000..2ec4ae70d Binary files /dev/null and b/public/terrain/19/858482/353944.terrain differ diff --git a/public/terrain/19/858482/353945.terrain b/public/terrain/19/858482/353945.terrain new file mode 100644 index 000000000..6a87fde62 Binary files /dev/null and b/public/terrain/19/858482/353945.terrain differ diff --git a/public/terrain/19/858482/353946.terrain b/public/terrain/19/858482/353946.terrain new file mode 100644 index 000000000..b75ae5afa Binary files /dev/null and b/public/terrain/19/858482/353946.terrain differ diff --git a/public/terrain/19/858482/353947.terrain b/public/terrain/19/858482/353947.terrain new file mode 100644 index 000000000..b722552a7 Binary files /dev/null and b/public/terrain/19/858482/353947.terrain differ diff --git a/public/terrain/19/858482/353948.terrain b/public/terrain/19/858482/353948.terrain new file mode 100644 index 000000000..b7e4e25d1 Binary files /dev/null and b/public/terrain/19/858482/353948.terrain differ diff --git a/public/terrain/19/858482/353949.terrain b/public/terrain/19/858482/353949.terrain new file mode 100644 index 000000000..ae060e9e2 Binary files /dev/null and b/public/terrain/19/858482/353949.terrain differ diff --git a/public/terrain/19/858482/353950.terrain b/public/terrain/19/858482/353950.terrain new file mode 100644 index 000000000..cb012e2c7 Binary files /dev/null and b/public/terrain/19/858482/353950.terrain differ diff --git a/public/terrain/19/858482/353951.terrain b/public/terrain/19/858482/353951.terrain new file mode 100644 index 000000000..a2a1250a1 Binary files /dev/null and b/public/terrain/19/858482/353951.terrain differ diff --git a/public/terrain/19/858482/353952.terrain b/public/terrain/19/858482/353952.terrain new file mode 100644 index 000000000..a6df2958b Binary files /dev/null and b/public/terrain/19/858482/353952.terrain differ diff --git a/public/terrain/19/858482/353953.terrain b/public/terrain/19/858482/353953.terrain new file mode 100644 index 000000000..e13cedcdb Binary files /dev/null and b/public/terrain/19/858482/353953.terrain differ diff --git a/public/terrain/19/858482/353954.terrain b/public/terrain/19/858482/353954.terrain new file mode 100644 index 000000000..4398484e1 Binary files /dev/null and b/public/terrain/19/858482/353954.terrain differ diff --git a/public/terrain/19/858482/353955.terrain b/public/terrain/19/858482/353955.terrain new file mode 100644 index 000000000..0ec7bc2e8 Binary files /dev/null and b/public/terrain/19/858482/353955.terrain differ diff --git a/public/terrain/19/858482/353956.terrain b/public/terrain/19/858482/353956.terrain new file mode 100644 index 000000000..0201dd5eb Binary files /dev/null and b/public/terrain/19/858482/353956.terrain differ diff --git a/public/terrain/19/858482/353957.terrain b/public/terrain/19/858482/353957.terrain new file mode 100644 index 000000000..be7afb520 Binary files /dev/null and b/public/terrain/19/858482/353957.terrain differ diff --git a/public/terrain/19/858482/353958.terrain b/public/terrain/19/858482/353958.terrain new file mode 100644 index 000000000..34dabad9f Binary files /dev/null and b/public/terrain/19/858482/353958.terrain differ diff --git a/public/terrain/19/858482/353959.terrain b/public/terrain/19/858482/353959.terrain new file mode 100644 index 000000000..d75431845 Binary files /dev/null and b/public/terrain/19/858482/353959.terrain differ diff --git a/public/terrain/19/858482/353960.terrain b/public/terrain/19/858482/353960.terrain new file mode 100644 index 000000000..770d747df Binary files /dev/null and b/public/terrain/19/858482/353960.terrain differ diff --git a/public/terrain/19/858482/353961.terrain b/public/terrain/19/858482/353961.terrain new file mode 100644 index 000000000..776c9cecd Binary files /dev/null and b/public/terrain/19/858482/353961.terrain differ diff --git a/public/terrain/19/858482/353962.terrain b/public/terrain/19/858482/353962.terrain new file mode 100644 index 000000000..389ce5295 Binary files /dev/null and b/public/terrain/19/858482/353962.terrain differ diff --git a/public/terrain/19/858482/353963.terrain b/public/terrain/19/858482/353963.terrain new file mode 100644 index 000000000..b1b2ff282 Binary files /dev/null and b/public/terrain/19/858482/353963.terrain differ diff --git a/public/terrain/19/858482/353964.terrain b/public/terrain/19/858482/353964.terrain new file mode 100644 index 000000000..847607faa Binary files /dev/null and b/public/terrain/19/858482/353964.terrain differ diff --git a/public/terrain/19/858482/353965.terrain b/public/terrain/19/858482/353965.terrain new file mode 100644 index 000000000..ba1577c5b Binary files /dev/null and b/public/terrain/19/858482/353965.terrain differ diff --git a/public/terrain/19/858482/353966.terrain b/public/terrain/19/858482/353966.terrain new file mode 100644 index 000000000..1e8060c6d Binary files /dev/null and b/public/terrain/19/858482/353966.terrain differ diff --git a/public/terrain/19/858482/353967.terrain b/public/terrain/19/858482/353967.terrain new file mode 100644 index 000000000..fee7cc1d4 Binary files /dev/null and b/public/terrain/19/858482/353967.terrain differ diff --git a/public/terrain/19/858482/353968.terrain b/public/terrain/19/858482/353968.terrain new file mode 100644 index 000000000..0663f9e32 Binary files /dev/null and b/public/terrain/19/858482/353968.terrain differ diff --git a/public/terrain/19/858482/353969.terrain b/public/terrain/19/858482/353969.terrain new file mode 100644 index 000000000..024f159a6 Binary files /dev/null and b/public/terrain/19/858482/353969.terrain differ diff --git a/public/terrain/19/858482/353970.terrain b/public/terrain/19/858482/353970.terrain new file mode 100644 index 000000000..54153d126 Binary files /dev/null and b/public/terrain/19/858482/353970.terrain differ diff --git a/public/terrain/19/858482/353971.terrain b/public/terrain/19/858482/353971.terrain new file mode 100644 index 000000000..14f7e6b26 Binary files /dev/null and b/public/terrain/19/858482/353971.terrain differ diff --git a/public/terrain/19/858482/353972.terrain b/public/terrain/19/858482/353972.terrain new file mode 100644 index 000000000..014d93c22 Binary files /dev/null and b/public/terrain/19/858482/353972.terrain differ diff --git a/public/terrain/19/858482/353973.terrain b/public/terrain/19/858482/353973.terrain new file mode 100644 index 000000000..41bb7ace4 Binary files /dev/null and b/public/terrain/19/858482/353973.terrain differ diff --git a/public/terrain/19/858482/353974.terrain b/public/terrain/19/858482/353974.terrain new file mode 100644 index 000000000..d3cea952c Binary files /dev/null and b/public/terrain/19/858482/353974.terrain differ diff --git a/public/terrain/19/858482/353975.terrain b/public/terrain/19/858482/353975.terrain new file mode 100644 index 000000000..49e7176a7 Binary files /dev/null and b/public/terrain/19/858482/353975.terrain differ diff --git a/public/terrain/19/858482/353976.terrain b/public/terrain/19/858482/353976.terrain new file mode 100644 index 000000000..8d39938c0 Binary files /dev/null and b/public/terrain/19/858482/353976.terrain differ diff --git a/public/terrain/19/858482/353977.terrain b/public/terrain/19/858482/353977.terrain new file mode 100644 index 000000000..d0887388d Binary files /dev/null and b/public/terrain/19/858482/353977.terrain differ diff --git a/public/terrain/19/858482/353978.terrain b/public/terrain/19/858482/353978.terrain new file mode 100644 index 000000000..804ab4ca5 Binary files /dev/null and b/public/terrain/19/858482/353978.terrain differ diff --git a/public/terrain/19/858482/353979.terrain b/public/terrain/19/858482/353979.terrain new file mode 100644 index 000000000..056fd6a28 Binary files /dev/null and b/public/terrain/19/858482/353979.terrain differ diff --git a/public/terrain/19/858482/353980.terrain b/public/terrain/19/858482/353980.terrain new file mode 100644 index 000000000..c8d56a2dc Binary files /dev/null and b/public/terrain/19/858482/353980.terrain differ diff --git a/public/terrain/19/858482/353981.terrain b/public/terrain/19/858482/353981.terrain new file mode 100644 index 000000000..4bc4909e9 Binary files /dev/null and b/public/terrain/19/858482/353981.terrain differ diff --git a/public/terrain/19/858482/353982.terrain b/public/terrain/19/858482/353982.terrain new file mode 100644 index 000000000..06fbdb30d Binary files /dev/null and b/public/terrain/19/858482/353982.terrain differ diff --git a/public/terrain/19/858482/353983.terrain b/public/terrain/19/858482/353983.terrain new file mode 100644 index 000000000..0ce3e11dc Binary files /dev/null and b/public/terrain/19/858482/353983.terrain differ diff --git a/public/terrain/19/858482/353984.terrain b/public/terrain/19/858482/353984.terrain new file mode 100644 index 000000000..0d031fbfa Binary files /dev/null and b/public/terrain/19/858482/353984.terrain differ diff --git a/public/terrain/19/858482/353985.terrain b/public/terrain/19/858482/353985.terrain new file mode 100644 index 000000000..0a7522e57 Binary files /dev/null and b/public/terrain/19/858482/353985.terrain differ diff --git a/public/terrain/19/858482/353986.terrain b/public/terrain/19/858482/353986.terrain new file mode 100644 index 000000000..6be737c9b Binary files /dev/null and b/public/terrain/19/858482/353986.terrain differ diff --git a/public/terrain/19/858482/353987.terrain b/public/terrain/19/858482/353987.terrain new file mode 100644 index 000000000..2f0875482 Binary files /dev/null and b/public/terrain/19/858482/353987.terrain differ diff --git a/public/terrain/19/858482/353988.terrain b/public/terrain/19/858482/353988.terrain new file mode 100644 index 000000000..4bc12457f Binary files /dev/null and b/public/terrain/19/858482/353988.terrain differ diff --git a/public/terrain/19/858482/353989.terrain b/public/terrain/19/858482/353989.terrain new file mode 100644 index 000000000..46ce964a3 Binary files /dev/null and b/public/terrain/19/858482/353989.terrain differ diff --git a/public/terrain/19/858482/353990.terrain b/public/terrain/19/858482/353990.terrain new file mode 100644 index 000000000..b72ebb5fc Binary files /dev/null and b/public/terrain/19/858482/353990.terrain differ diff --git a/public/terrain/19/858482/353991.terrain b/public/terrain/19/858482/353991.terrain new file mode 100644 index 000000000..71fde59ea Binary files /dev/null and b/public/terrain/19/858482/353991.terrain differ diff --git a/public/terrain/19/858482/353992.terrain b/public/terrain/19/858482/353992.terrain new file mode 100644 index 000000000..cbb39a8cf Binary files /dev/null and b/public/terrain/19/858482/353992.terrain differ diff --git a/public/terrain/19/858482/353993.terrain b/public/terrain/19/858482/353993.terrain new file mode 100644 index 000000000..9d741136e Binary files /dev/null and b/public/terrain/19/858482/353993.terrain differ diff --git a/public/terrain/19/858482/353994.terrain b/public/terrain/19/858482/353994.terrain new file mode 100644 index 000000000..eb7f0083e Binary files /dev/null and b/public/terrain/19/858482/353994.terrain differ diff --git a/public/terrain/19/858482/353995.terrain b/public/terrain/19/858482/353995.terrain new file mode 100644 index 000000000..794f50185 Binary files /dev/null and b/public/terrain/19/858482/353995.terrain differ diff --git a/public/terrain/19/858482/353996.terrain b/public/terrain/19/858482/353996.terrain new file mode 100644 index 000000000..1350b9774 Binary files /dev/null and b/public/terrain/19/858482/353996.terrain differ diff --git a/public/terrain/19/858482/353997.terrain b/public/terrain/19/858482/353997.terrain new file mode 100644 index 000000000..5b6302a72 Binary files /dev/null and b/public/terrain/19/858482/353997.terrain differ diff --git a/public/terrain/19/858482/353998.terrain b/public/terrain/19/858482/353998.terrain new file mode 100644 index 000000000..3bfec4446 Binary files /dev/null and b/public/terrain/19/858482/353998.terrain differ diff --git a/public/terrain/19/858482/353999.terrain b/public/terrain/19/858482/353999.terrain new file mode 100644 index 000000000..2e2bec498 Binary files /dev/null and b/public/terrain/19/858482/353999.terrain differ diff --git a/public/terrain/19/858482/354000.terrain b/public/terrain/19/858482/354000.terrain new file mode 100644 index 000000000..2835a7dc6 Binary files /dev/null and b/public/terrain/19/858482/354000.terrain differ diff --git a/public/terrain/19/858482/354001.terrain b/public/terrain/19/858482/354001.terrain new file mode 100644 index 000000000..387bbc6d8 Binary files /dev/null and b/public/terrain/19/858482/354001.terrain differ diff --git a/public/terrain/19/858482/354002.terrain b/public/terrain/19/858482/354002.terrain new file mode 100644 index 000000000..2524d1c20 Binary files /dev/null and b/public/terrain/19/858482/354002.terrain differ diff --git a/public/terrain/19/858482/354003.terrain b/public/terrain/19/858482/354003.terrain new file mode 100644 index 000000000..ab635a937 Binary files /dev/null and b/public/terrain/19/858482/354003.terrain differ diff --git a/public/terrain/19/858482/354004.terrain b/public/terrain/19/858482/354004.terrain new file mode 100644 index 000000000..7fc45fdd3 Binary files /dev/null and b/public/terrain/19/858482/354004.terrain differ diff --git a/public/terrain/19/858482/354005.terrain b/public/terrain/19/858482/354005.terrain new file mode 100644 index 000000000..b358f397b Binary files /dev/null and b/public/terrain/19/858482/354005.terrain differ diff --git a/public/terrain/19/858482/354006.terrain b/public/terrain/19/858482/354006.terrain new file mode 100644 index 000000000..9745b40f6 Binary files /dev/null and b/public/terrain/19/858482/354006.terrain differ diff --git a/public/terrain/19/858482/354007.terrain b/public/terrain/19/858482/354007.terrain new file mode 100644 index 000000000..d12589d0e Binary files /dev/null and b/public/terrain/19/858482/354007.terrain differ diff --git a/public/terrain/19/858482/354008.terrain b/public/terrain/19/858482/354008.terrain new file mode 100644 index 000000000..ad611d07a Binary files /dev/null and b/public/terrain/19/858482/354008.terrain differ diff --git a/public/terrain/19/858482/354009.terrain b/public/terrain/19/858482/354009.terrain new file mode 100644 index 000000000..94d2154fa Binary files /dev/null and b/public/terrain/19/858482/354009.terrain differ diff --git a/public/terrain/19/858482/354010.terrain b/public/terrain/19/858482/354010.terrain new file mode 100644 index 000000000..b7c098af5 Binary files /dev/null and b/public/terrain/19/858482/354010.terrain differ diff --git a/public/terrain/19/858482/354011.terrain b/public/terrain/19/858482/354011.terrain new file mode 100644 index 000000000..6f62f8e77 Binary files /dev/null and b/public/terrain/19/858482/354011.terrain differ diff --git a/public/terrain/19/858482/354012.terrain b/public/terrain/19/858482/354012.terrain new file mode 100644 index 000000000..c3f095015 Binary files /dev/null and b/public/terrain/19/858482/354012.terrain differ diff --git a/public/terrain/19/858482/354013.terrain b/public/terrain/19/858482/354013.terrain new file mode 100644 index 000000000..27ad1804f Binary files /dev/null and b/public/terrain/19/858482/354013.terrain differ diff --git a/public/terrain/19/858482/354014.terrain b/public/terrain/19/858482/354014.terrain new file mode 100644 index 000000000..d3bc0d5f4 Binary files /dev/null and b/public/terrain/19/858482/354014.terrain differ diff --git a/public/terrain/19/858482/354015.terrain b/public/terrain/19/858482/354015.terrain new file mode 100644 index 000000000..92fc1aa2f Binary files /dev/null and b/public/terrain/19/858482/354015.terrain differ diff --git a/public/terrain/19/858482/354016.terrain b/public/terrain/19/858482/354016.terrain new file mode 100644 index 000000000..296ff30d0 Binary files /dev/null and b/public/terrain/19/858482/354016.terrain differ diff --git a/public/terrain/19/858482/354017.terrain b/public/terrain/19/858482/354017.terrain new file mode 100644 index 000000000..e52a8f21e Binary files /dev/null and b/public/terrain/19/858482/354017.terrain differ diff --git a/public/terrain/19/858482/354018.terrain b/public/terrain/19/858482/354018.terrain new file mode 100644 index 000000000..246c94227 Binary files /dev/null and b/public/terrain/19/858482/354018.terrain differ diff --git a/public/terrain/19/858482/354019.terrain b/public/terrain/19/858482/354019.terrain new file mode 100644 index 000000000..5575ba651 Binary files /dev/null and b/public/terrain/19/858482/354019.terrain differ diff --git a/public/terrain/19/858482/354020.terrain b/public/terrain/19/858482/354020.terrain new file mode 100644 index 000000000..3ce2db14e Binary files /dev/null and b/public/terrain/19/858482/354020.terrain differ diff --git a/public/terrain/19/858482/354021.terrain b/public/terrain/19/858482/354021.terrain new file mode 100644 index 000000000..90a75cb21 Binary files /dev/null and b/public/terrain/19/858482/354021.terrain differ diff --git a/public/terrain/19/858482/354022.terrain b/public/terrain/19/858482/354022.terrain new file mode 100644 index 000000000..22a02f2ed Binary files /dev/null and b/public/terrain/19/858482/354022.terrain differ diff --git a/public/terrain/19/858482/354023.terrain b/public/terrain/19/858482/354023.terrain new file mode 100644 index 000000000..32854f85f Binary files /dev/null and b/public/terrain/19/858482/354023.terrain differ diff --git a/public/terrain/19/858482/354024.terrain b/public/terrain/19/858482/354024.terrain new file mode 100644 index 000000000..abb26666e Binary files /dev/null and b/public/terrain/19/858482/354024.terrain differ diff --git a/public/terrain/19/858482/354025.terrain b/public/terrain/19/858482/354025.terrain new file mode 100644 index 000000000..34d2fa8ef Binary files /dev/null and b/public/terrain/19/858482/354025.terrain differ diff --git a/public/terrain/19/858482/354026.terrain b/public/terrain/19/858482/354026.terrain new file mode 100644 index 000000000..44a2591a9 Binary files /dev/null and b/public/terrain/19/858482/354026.terrain differ diff --git a/public/terrain/19/858482/354027.terrain b/public/terrain/19/858482/354027.terrain new file mode 100644 index 000000000..189f41b96 Binary files /dev/null and b/public/terrain/19/858482/354027.terrain differ diff --git a/public/terrain/19/858482/354028.terrain b/public/terrain/19/858482/354028.terrain new file mode 100644 index 000000000..4898c91ad Binary files /dev/null and b/public/terrain/19/858482/354028.terrain differ diff --git a/public/terrain/19/858482/354029.terrain b/public/terrain/19/858482/354029.terrain new file mode 100644 index 000000000..bbd5f8152 Binary files /dev/null and b/public/terrain/19/858482/354029.terrain differ diff --git a/public/terrain/19/858482/354030.terrain b/public/terrain/19/858482/354030.terrain new file mode 100644 index 000000000..3475bb30e Binary files /dev/null and b/public/terrain/19/858482/354030.terrain differ diff --git a/public/terrain/19/858482/354031.terrain b/public/terrain/19/858482/354031.terrain new file mode 100644 index 000000000..10dfc9191 Binary files /dev/null and b/public/terrain/19/858482/354031.terrain differ diff --git a/public/terrain/19/858482/354032.terrain b/public/terrain/19/858482/354032.terrain new file mode 100644 index 000000000..80c9c7b49 Binary files /dev/null and b/public/terrain/19/858482/354032.terrain differ diff --git a/public/terrain/19/858482/354033.terrain b/public/terrain/19/858482/354033.terrain new file mode 100644 index 000000000..6402eaca2 Binary files /dev/null and b/public/terrain/19/858482/354033.terrain differ diff --git a/public/terrain/19/858482/354034.terrain b/public/terrain/19/858482/354034.terrain new file mode 100644 index 000000000..da3d8d650 Binary files /dev/null and b/public/terrain/19/858482/354034.terrain differ diff --git a/public/terrain/19/858482/354035.terrain b/public/terrain/19/858482/354035.terrain new file mode 100644 index 000000000..b32618e64 Binary files /dev/null and b/public/terrain/19/858482/354035.terrain differ diff --git a/public/terrain/19/858482/354036.terrain b/public/terrain/19/858482/354036.terrain new file mode 100644 index 000000000..beb1b226d Binary files /dev/null and b/public/terrain/19/858482/354036.terrain differ diff --git a/public/terrain/19/858482/354037.terrain b/public/terrain/19/858482/354037.terrain new file mode 100644 index 000000000..21569752b Binary files /dev/null and b/public/terrain/19/858482/354037.terrain differ diff --git a/public/terrain/19/858482/354038.terrain b/public/terrain/19/858482/354038.terrain new file mode 100644 index 000000000..20c3f75c1 Binary files /dev/null and b/public/terrain/19/858482/354038.terrain differ diff --git a/public/terrain/19/858482/354039.terrain b/public/terrain/19/858482/354039.terrain new file mode 100644 index 000000000..68d69e4f4 Binary files /dev/null and b/public/terrain/19/858482/354039.terrain differ diff --git a/public/terrain/19/858482/354040.terrain b/public/terrain/19/858482/354040.terrain new file mode 100644 index 000000000..84b4badbc Binary files /dev/null and b/public/terrain/19/858482/354040.terrain differ diff --git a/public/terrain/19/858482/354041.terrain b/public/terrain/19/858482/354041.terrain new file mode 100644 index 000000000..92b63852e Binary files /dev/null and b/public/terrain/19/858482/354041.terrain differ diff --git a/public/terrain/19/858482/354042.terrain b/public/terrain/19/858482/354042.terrain new file mode 100644 index 000000000..6fc1b3f3b Binary files /dev/null and b/public/terrain/19/858482/354042.terrain differ diff --git a/public/terrain/19/858482/354043.terrain b/public/terrain/19/858482/354043.terrain new file mode 100644 index 000000000..6f6bb9f79 Binary files /dev/null and b/public/terrain/19/858482/354043.terrain differ diff --git a/public/terrain/19/858482/354044.terrain b/public/terrain/19/858482/354044.terrain new file mode 100644 index 000000000..fe6421c42 Binary files /dev/null and b/public/terrain/19/858482/354044.terrain differ diff --git a/public/terrain/19/858482/354045.terrain b/public/terrain/19/858482/354045.terrain new file mode 100644 index 000000000..e8b9533c3 Binary files /dev/null and b/public/terrain/19/858482/354045.terrain differ diff --git a/public/terrain/19/858482/354046.terrain b/public/terrain/19/858482/354046.terrain new file mode 100644 index 000000000..662bc0103 Binary files /dev/null and b/public/terrain/19/858482/354046.terrain differ diff --git a/public/terrain/19/858482/354047.terrain b/public/terrain/19/858482/354047.terrain new file mode 100644 index 000000000..258a89207 Binary files /dev/null and b/public/terrain/19/858482/354047.terrain differ diff --git a/public/terrain/19/858482/354048.terrain b/public/terrain/19/858482/354048.terrain new file mode 100644 index 000000000..d697eb3ba Binary files /dev/null and b/public/terrain/19/858482/354048.terrain differ diff --git a/public/terrain/19/858482/354049.terrain b/public/terrain/19/858482/354049.terrain new file mode 100644 index 000000000..a8c8eccc5 Binary files /dev/null and b/public/terrain/19/858482/354049.terrain differ diff --git a/public/terrain/19/858482/354050.terrain b/public/terrain/19/858482/354050.terrain new file mode 100644 index 000000000..35d019467 Binary files /dev/null and b/public/terrain/19/858482/354050.terrain differ diff --git a/public/terrain/19/858482/354051.terrain b/public/terrain/19/858482/354051.terrain new file mode 100644 index 000000000..13fbf42d9 Binary files /dev/null and b/public/terrain/19/858482/354051.terrain differ diff --git a/public/terrain/19/858482/354052.terrain b/public/terrain/19/858482/354052.terrain new file mode 100644 index 000000000..e6dcde9b8 Binary files /dev/null and b/public/terrain/19/858482/354052.terrain differ diff --git a/public/terrain/19/858482/354053.terrain b/public/terrain/19/858482/354053.terrain new file mode 100644 index 000000000..aaed86231 Binary files /dev/null and b/public/terrain/19/858482/354053.terrain differ diff --git a/public/terrain/19/858482/354054.terrain b/public/terrain/19/858482/354054.terrain new file mode 100644 index 000000000..b00a00008 Binary files /dev/null and b/public/terrain/19/858482/354054.terrain differ diff --git a/public/terrain/19/858482/354055.terrain b/public/terrain/19/858482/354055.terrain new file mode 100644 index 000000000..9cb9e401e Binary files /dev/null and b/public/terrain/19/858482/354055.terrain differ diff --git a/public/terrain/19/858482/354056.terrain b/public/terrain/19/858482/354056.terrain new file mode 100644 index 000000000..5d5d04fb0 Binary files /dev/null and b/public/terrain/19/858482/354056.terrain differ diff --git a/public/terrain/19/858482/354057.terrain b/public/terrain/19/858482/354057.terrain new file mode 100644 index 000000000..358ad9a1b Binary files /dev/null and b/public/terrain/19/858482/354057.terrain differ diff --git a/public/terrain/19/858482/354058.terrain b/public/terrain/19/858482/354058.terrain new file mode 100644 index 000000000..8cbda0037 Binary files /dev/null and b/public/terrain/19/858482/354058.terrain differ diff --git a/public/terrain/19/858482/354059.terrain b/public/terrain/19/858482/354059.terrain new file mode 100644 index 000000000..331c4f752 Binary files /dev/null and b/public/terrain/19/858482/354059.terrain differ diff --git a/public/terrain/19/858483/353743.terrain b/public/terrain/19/858483/353743.terrain new file mode 100644 index 000000000..16aea03fb Binary files /dev/null and b/public/terrain/19/858483/353743.terrain differ diff --git a/public/terrain/19/858483/353744.terrain b/public/terrain/19/858483/353744.terrain new file mode 100644 index 000000000..87a5ff7e6 Binary files /dev/null and b/public/terrain/19/858483/353744.terrain differ diff --git a/public/terrain/19/858483/353745.terrain b/public/terrain/19/858483/353745.terrain new file mode 100644 index 000000000..416ae4275 Binary files /dev/null and b/public/terrain/19/858483/353745.terrain differ diff --git a/public/terrain/19/858483/353746.terrain b/public/terrain/19/858483/353746.terrain new file mode 100644 index 000000000..423f60658 Binary files /dev/null and b/public/terrain/19/858483/353746.terrain differ diff --git a/public/terrain/19/858483/353747.terrain b/public/terrain/19/858483/353747.terrain new file mode 100644 index 000000000..ca3563a60 Binary files /dev/null and b/public/terrain/19/858483/353747.terrain differ diff --git a/public/terrain/19/858483/353748.terrain b/public/terrain/19/858483/353748.terrain new file mode 100644 index 000000000..8498e179d Binary files /dev/null and b/public/terrain/19/858483/353748.terrain differ diff --git a/public/terrain/19/858483/353749.terrain b/public/terrain/19/858483/353749.terrain new file mode 100644 index 000000000..89fa27395 Binary files /dev/null and b/public/terrain/19/858483/353749.terrain differ diff --git a/public/terrain/19/858483/353750.terrain b/public/terrain/19/858483/353750.terrain new file mode 100644 index 000000000..a49447a7c Binary files /dev/null and b/public/terrain/19/858483/353750.terrain differ diff --git a/public/terrain/19/858483/353751.terrain b/public/terrain/19/858483/353751.terrain new file mode 100644 index 000000000..052060539 Binary files /dev/null and b/public/terrain/19/858483/353751.terrain differ diff --git a/public/terrain/19/858483/353752.terrain b/public/terrain/19/858483/353752.terrain new file mode 100644 index 000000000..581a76368 Binary files /dev/null and b/public/terrain/19/858483/353752.terrain differ diff --git a/public/terrain/19/858483/353753.terrain b/public/terrain/19/858483/353753.terrain new file mode 100644 index 000000000..27dded53f Binary files /dev/null and b/public/terrain/19/858483/353753.terrain differ diff --git a/public/terrain/19/858483/353754.terrain b/public/terrain/19/858483/353754.terrain new file mode 100644 index 000000000..7cbd1c335 Binary files /dev/null and b/public/terrain/19/858483/353754.terrain differ diff --git a/public/terrain/19/858483/353755.terrain b/public/terrain/19/858483/353755.terrain new file mode 100644 index 000000000..66569b137 Binary files /dev/null and b/public/terrain/19/858483/353755.terrain differ diff --git a/public/terrain/19/858483/353756.terrain b/public/terrain/19/858483/353756.terrain new file mode 100644 index 000000000..0b7abc111 Binary files /dev/null and b/public/terrain/19/858483/353756.terrain differ diff --git a/public/terrain/19/858483/353757.terrain b/public/terrain/19/858483/353757.terrain new file mode 100644 index 000000000..5672d0c39 Binary files /dev/null and b/public/terrain/19/858483/353757.terrain differ diff --git a/public/terrain/19/858483/353758.terrain b/public/terrain/19/858483/353758.terrain new file mode 100644 index 000000000..e28452d1e Binary files /dev/null and b/public/terrain/19/858483/353758.terrain differ diff --git a/public/terrain/19/858483/353759.terrain b/public/terrain/19/858483/353759.terrain new file mode 100644 index 000000000..39f7d1e5d Binary files /dev/null and b/public/terrain/19/858483/353759.terrain differ diff --git a/public/terrain/19/858483/353760.terrain b/public/terrain/19/858483/353760.terrain new file mode 100644 index 000000000..e3858ad11 Binary files /dev/null and b/public/terrain/19/858483/353760.terrain differ diff --git a/public/terrain/19/858483/353761.terrain b/public/terrain/19/858483/353761.terrain new file mode 100644 index 000000000..52d86703a Binary files /dev/null and b/public/terrain/19/858483/353761.terrain differ diff --git a/public/terrain/19/858483/353762.terrain b/public/terrain/19/858483/353762.terrain new file mode 100644 index 000000000..e3aaf2fa0 Binary files /dev/null and b/public/terrain/19/858483/353762.terrain differ diff --git a/public/terrain/19/858483/353763.terrain b/public/terrain/19/858483/353763.terrain new file mode 100644 index 000000000..a2e9c1195 Binary files /dev/null and b/public/terrain/19/858483/353763.terrain differ diff --git a/public/terrain/19/858483/353764.terrain b/public/terrain/19/858483/353764.terrain new file mode 100644 index 000000000..7d39a5b6d Binary files /dev/null and b/public/terrain/19/858483/353764.terrain differ diff --git a/public/terrain/19/858483/353765.terrain b/public/terrain/19/858483/353765.terrain new file mode 100644 index 000000000..52ecb6764 Binary files /dev/null and b/public/terrain/19/858483/353765.terrain differ diff --git a/public/terrain/19/858483/353766.terrain b/public/terrain/19/858483/353766.terrain new file mode 100644 index 000000000..65ade0fda Binary files /dev/null and b/public/terrain/19/858483/353766.terrain differ diff --git a/public/terrain/19/858483/353767.terrain b/public/terrain/19/858483/353767.terrain new file mode 100644 index 000000000..f987f0d77 Binary files /dev/null and b/public/terrain/19/858483/353767.terrain differ diff --git a/public/terrain/19/858483/353768.terrain b/public/terrain/19/858483/353768.terrain new file mode 100644 index 000000000..45f3f5148 Binary files /dev/null and b/public/terrain/19/858483/353768.terrain differ diff --git a/public/terrain/19/858483/353769.terrain b/public/terrain/19/858483/353769.terrain new file mode 100644 index 000000000..a7edc677f Binary files /dev/null and b/public/terrain/19/858483/353769.terrain differ diff --git a/public/terrain/19/858483/353770.terrain b/public/terrain/19/858483/353770.terrain new file mode 100644 index 000000000..6691640fe Binary files /dev/null and b/public/terrain/19/858483/353770.terrain differ diff --git a/public/terrain/19/858483/353771.terrain b/public/terrain/19/858483/353771.terrain new file mode 100644 index 000000000..1867a483d Binary files /dev/null and b/public/terrain/19/858483/353771.terrain differ diff --git a/public/terrain/19/858483/353772.terrain b/public/terrain/19/858483/353772.terrain new file mode 100644 index 000000000..cc11408dc Binary files /dev/null and b/public/terrain/19/858483/353772.terrain differ diff --git a/public/terrain/19/858483/353773.terrain b/public/terrain/19/858483/353773.terrain new file mode 100644 index 000000000..6c50ecc14 Binary files /dev/null and b/public/terrain/19/858483/353773.terrain differ diff --git a/public/terrain/19/858483/353774.terrain b/public/terrain/19/858483/353774.terrain new file mode 100644 index 000000000..c2b186d0a Binary files /dev/null and b/public/terrain/19/858483/353774.terrain differ diff --git a/public/terrain/19/858483/353775.terrain b/public/terrain/19/858483/353775.terrain new file mode 100644 index 000000000..becc46367 Binary files /dev/null and b/public/terrain/19/858483/353775.terrain differ diff --git a/public/terrain/19/858483/353776.terrain b/public/terrain/19/858483/353776.terrain new file mode 100644 index 000000000..5301b3c65 Binary files /dev/null and b/public/terrain/19/858483/353776.terrain differ diff --git a/public/terrain/19/858483/353777.terrain b/public/terrain/19/858483/353777.terrain new file mode 100644 index 000000000..b14e87f6e Binary files /dev/null and b/public/terrain/19/858483/353777.terrain differ diff --git a/public/terrain/19/858483/353778.terrain b/public/terrain/19/858483/353778.terrain new file mode 100644 index 000000000..0f4797c97 Binary files /dev/null and b/public/terrain/19/858483/353778.terrain differ diff --git a/public/terrain/19/858483/353779.terrain b/public/terrain/19/858483/353779.terrain new file mode 100644 index 000000000..8f29c3d74 Binary files /dev/null and b/public/terrain/19/858483/353779.terrain differ diff --git a/public/terrain/19/858483/353780.terrain b/public/terrain/19/858483/353780.terrain new file mode 100644 index 000000000..dee122f7f Binary files /dev/null and b/public/terrain/19/858483/353780.terrain differ diff --git a/public/terrain/19/858483/353781.terrain b/public/terrain/19/858483/353781.terrain new file mode 100644 index 000000000..94d76f206 Binary files /dev/null and b/public/terrain/19/858483/353781.terrain differ diff --git a/public/terrain/19/858483/353782.terrain b/public/terrain/19/858483/353782.terrain new file mode 100644 index 000000000..3077ccd50 Binary files /dev/null and b/public/terrain/19/858483/353782.terrain differ diff --git a/public/terrain/19/858483/353783.terrain b/public/terrain/19/858483/353783.terrain new file mode 100644 index 000000000..a453ba2b7 Binary files /dev/null and b/public/terrain/19/858483/353783.terrain differ diff --git a/public/terrain/19/858483/353784.terrain b/public/terrain/19/858483/353784.terrain new file mode 100644 index 000000000..95cee6e19 Binary files /dev/null and b/public/terrain/19/858483/353784.terrain differ diff --git a/public/terrain/19/858483/353785.terrain b/public/terrain/19/858483/353785.terrain new file mode 100644 index 000000000..56a7175bd Binary files /dev/null and b/public/terrain/19/858483/353785.terrain differ diff --git a/public/terrain/19/858483/353786.terrain b/public/terrain/19/858483/353786.terrain new file mode 100644 index 000000000..229a2e748 Binary files /dev/null and b/public/terrain/19/858483/353786.terrain differ diff --git a/public/terrain/19/858483/353787.terrain b/public/terrain/19/858483/353787.terrain new file mode 100644 index 000000000..5f7a13ecb Binary files /dev/null and b/public/terrain/19/858483/353787.terrain differ diff --git a/public/terrain/19/858483/353788.terrain b/public/terrain/19/858483/353788.terrain new file mode 100644 index 000000000..50fa1f032 Binary files /dev/null and b/public/terrain/19/858483/353788.terrain differ diff --git a/public/terrain/19/858483/353789.terrain b/public/terrain/19/858483/353789.terrain new file mode 100644 index 000000000..23e87208f Binary files /dev/null and b/public/terrain/19/858483/353789.terrain differ diff --git a/public/terrain/19/858483/353790.terrain b/public/terrain/19/858483/353790.terrain new file mode 100644 index 000000000..92ba8ec79 Binary files /dev/null and b/public/terrain/19/858483/353790.terrain differ diff --git a/public/terrain/19/858483/353791.terrain b/public/terrain/19/858483/353791.terrain new file mode 100644 index 000000000..46c62c8e8 Binary files /dev/null and b/public/terrain/19/858483/353791.terrain differ diff --git a/public/terrain/19/858483/353792.terrain b/public/terrain/19/858483/353792.terrain new file mode 100644 index 000000000..b751993a0 Binary files /dev/null and b/public/terrain/19/858483/353792.terrain differ diff --git a/public/terrain/19/858483/353793.terrain b/public/terrain/19/858483/353793.terrain new file mode 100644 index 000000000..4c1827254 Binary files /dev/null and b/public/terrain/19/858483/353793.terrain differ diff --git a/public/terrain/19/858483/353794.terrain b/public/terrain/19/858483/353794.terrain new file mode 100644 index 000000000..dbcb699ad Binary files /dev/null and b/public/terrain/19/858483/353794.terrain differ diff --git a/public/terrain/19/858483/353795.terrain b/public/terrain/19/858483/353795.terrain new file mode 100644 index 000000000..50775b639 Binary files /dev/null and b/public/terrain/19/858483/353795.terrain differ diff --git a/public/terrain/19/858483/353796.terrain b/public/terrain/19/858483/353796.terrain new file mode 100644 index 000000000..3ff13b8ba Binary files /dev/null and b/public/terrain/19/858483/353796.terrain differ diff --git a/public/terrain/19/858483/353797.terrain b/public/terrain/19/858483/353797.terrain new file mode 100644 index 000000000..77ee35955 Binary files /dev/null and b/public/terrain/19/858483/353797.terrain differ diff --git a/public/terrain/19/858483/353798.terrain b/public/terrain/19/858483/353798.terrain new file mode 100644 index 000000000..24c2293e6 Binary files /dev/null and b/public/terrain/19/858483/353798.terrain differ diff --git a/public/terrain/19/858483/353799.terrain b/public/terrain/19/858483/353799.terrain new file mode 100644 index 000000000..33f610011 Binary files /dev/null and b/public/terrain/19/858483/353799.terrain differ diff --git a/public/terrain/19/858483/353800.terrain b/public/terrain/19/858483/353800.terrain new file mode 100644 index 000000000..19ff497f1 Binary files /dev/null and b/public/terrain/19/858483/353800.terrain differ diff --git a/public/terrain/19/858483/353801.terrain b/public/terrain/19/858483/353801.terrain new file mode 100644 index 000000000..8d1bd1236 Binary files /dev/null and b/public/terrain/19/858483/353801.terrain differ diff --git a/public/terrain/19/858483/353802.terrain b/public/terrain/19/858483/353802.terrain new file mode 100644 index 000000000..53c4e130a Binary files /dev/null and b/public/terrain/19/858483/353802.terrain differ diff --git a/public/terrain/19/858483/353803.terrain b/public/terrain/19/858483/353803.terrain new file mode 100644 index 000000000..31c2c2271 Binary files /dev/null and b/public/terrain/19/858483/353803.terrain differ diff --git a/public/terrain/19/858483/353804.terrain b/public/terrain/19/858483/353804.terrain new file mode 100644 index 000000000..3bf40d4d3 Binary files /dev/null and b/public/terrain/19/858483/353804.terrain differ diff --git a/public/terrain/19/858483/353805.terrain b/public/terrain/19/858483/353805.terrain new file mode 100644 index 000000000..1a0c0f18e Binary files /dev/null and b/public/terrain/19/858483/353805.terrain differ diff --git a/public/terrain/19/858483/353806.terrain b/public/terrain/19/858483/353806.terrain new file mode 100644 index 000000000..ba1505ad9 Binary files /dev/null and b/public/terrain/19/858483/353806.terrain differ diff --git a/public/terrain/19/858483/353807.terrain b/public/terrain/19/858483/353807.terrain new file mode 100644 index 000000000..ccd358f6b Binary files /dev/null and b/public/terrain/19/858483/353807.terrain differ diff --git a/public/terrain/19/858483/353808.terrain b/public/terrain/19/858483/353808.terrain new file mode 100644 index 000000000..2494dba35 Binary files /dev/null and b/public/terrain/19/858483/353808.terrain differ diff --git a/public/terrain/19/858483/353809.terrain b/public/terrain/19/858483/353809.terrain new file mode 100644 index 000000000..a8be59d5d Binary files /dev/null and b/public/terrain/19/858483/353809.terrain differ diff --git a/public/terrain/19/858483/353810.terrain b/public/terrain/19/858483/353810.terrain new file mode 100644 index 000000000..c4b6636b9 Binary files /dev/null and b/public/terrain/19/858483/353810.terrain differ diff --git a/public/terrain/19/858483/353811.terrain b/public/terrain/19/858483/353811.terrain new file mode 100644 index 000000000..17a0250e4 Binary files /dev/null and b/public/terrain/19/858483/353811.terrain differ diff --git a/public/terrain/19/858483/353812.terrain b/public/terrain/19/858483/353812.terrain new file mode 100644 index 000000000..5274611fb Binary files /dev/null and b/public/terrain/19/858483/353812.terrain differ diff --git a/public/terrain/19/858483/353813.terrain b/public/terrain/19/858483/353813.terrain new file mode 100644 index 000000000..29dd82f67 Binary files /dev/null and b/public/terrain/19/858483/353813.terrain differ diff --git a/public/terrain/19/858483/353814.terrain b/public/terrain/19/858483/353814.terrain new file mode 100644 index 000000000..3ad93bed7 Binary files /dev/null and b/public/terrain/19/858483/353814.terrain differ diff --git a/public/terrain/19/858483/353815.terrain b/public/terrain/19/858483/353815.terrain new file mode 100644 index 000000000..59c980af2 Binary files /dev/null and b/public/terrain/19/858483/353815.terrain differ diff --git a/public/terrain/19/858483/353816.terrain b/public/terrain/19/858483/353816.terrain new file mode 100644 index 000000000..46f4a0f70 Binary files /dev/null and b/public/terrain/19/858483/353816.terrain differ diff --git a/public/terrain/19/858483/353817.terrain b/public/terrain/19/858483/353817.terrain new file mode 100644 index 000000000..fddaeca43 Binary files /dev/null and b/public/terrain/19/858483/353817.terrain differ diff --git a/public/terrain/19/858483/353818.terrain b/public/terrain/19/858483/353818.terrain new file mode 100644 index 000000000..fe19f7e88 Binary files /dev/null and b/public/terrain/19/858483/353818.terrain differ diff --git a/public/terrain/19/858483/353819.terrain b/public/terrain/19/858483/353819.terrain new file mode 100644 index 000000000..53118989f Binary files /dev/null and b/public/terrain/19/858483/353819.terrain differ diff --git a/public/terrain/19/858483/353820.terrain b/public/terrain/19/858483/353820.terrain new file mode 100644 index 000000000..a5ce58062 Binary files /dev/null and b/public/terrain/19/858483/353820.terrain differ diff --git a/public/terrain/19/858483/353821.terrain b/public/terrain/19/858483/353821.terrain new file mode 100644 index 000000000..0fc15a893 Binary files /dev/null and b/public/terrain/19/858483/353821.terrain differ diff --git a/public/terrain/19/858483/353822.terrain b/public/terrain/19/858483/353822.terrain new file mode 100644 index 000000000..e3aad274e Binary files /dev/null and b/public/terrain/19/858483/353822.terrain differ diff --git a/public/terrain/19/858483/353823.terrain b/public/terrain/19/858483/353823.terrain new file mode 100644 index 000000000..f65eb7a9b Binary files /dev/null and b/public/terrain/19/858483/353823.terrain differ diff --git a/public/terrain/19/858483/353824.terrain b/public/terrain/19/858483/353824.terrain new file mode 100644 index 000000000..eb46471d9 Binary files /dev/null and b/public/terrain/19/858483/353824.terrain differ diff --git a/public/terrain/19/858483/353825.terrain b/public/terrain/19/858483/353825.terrain new file mode 100644 index 000000000..3f543de02 Binary files /dev/null and b/public/terrain/19/858483/353825.terrain differ diff --git a/public/terrain/19/858483/353826.terrain b/public/terrain/19/858483/353826.terrain new file mode 100644 index 000000000..2d16b4ab4 Binary files /dev/null and b/public/terrain/19/858483/353826.terrain differ diff --git a/public/terrain/19/858483/353827.terrain b/public/terrain/19/858483/353827.terrain new file mode 100644 index 000000000..ad2b36c1d Binary files /dev/null and b/public/terrain/19/858483/353827.terrain differ diff --git a/public/terrain/19/858483/353828.terrain b/public/terrain/19/858483/353828.terrain new file mode 100644 index 000000000..ced336160 Binary files /dev/null and b/public/terrain/19/858483/353828.terrain differ diff --git a/public/terrain/19/858483/353829.terrain b/public/terrain/19/858483/353829.terrain new file mode 100644 index 000000000..eeb16853e Binary files /dev/null and b/public/terrain/19/858483/353829.terrain differ diff --git a/public/terrain/19/858483/353830.terrain b/public/terrain/19/858483/353830.terrain new file mode 100644 index 000000000..a85376580 Binary files /dev/null and b/public/terrain/19/858483/353830.terrain differ diff --git a/public/terrain/19/858483/353831.terrain b/public/terrain/19/858483/353831.terrain new file mode 100644 index 000000000..4329e7202 Binary files /dev/null and b/public/terrain/19/858483/353831.terrain differ diff --git a/public/terrain/19/858483/353832.terrain b/public/terrain/19/858483/353832.terrain new file mode 100644 index 000000000..7823dcd97 Binary files /dev/null and b/public/terrain/19/858483/353832.terrain differ diff --git a/public/terrain/19/858483/353833.terrain b/public/terrain/19/858483/353833.terrain new file mode 100644 index 000000000..5ae770bce Binary files /dev/null and b/public/terrain/19/858483/353833.terrain differ diff --git a/public/terrain/19/858483/353834.terrain b/public/terrain/19/858483/353834.terrain new file mode 100644 index 000000000..c509dfeec Binary files /dev/null and b/public/terrain/19/858483/353834.terrain differ diff --git a/public/terrain/19/858483/353835.terrain b/public/terrain/19/858483/353835.terrain new file mode 100644 index 000000000..6230309d1 Binary files /dev/null and b/public/terrain/19/858483/353835.terrain differ diff --git a/public/terrain/19/858483/353836.terrain b/public/terrain/19/858483/353836.terrain new file mode 100644 index 000000000..9f6bc77c0 Binary files /dev/null and b/public/terrain/19/858483/353836.terrain differ diff --git a/public/terrain/19/858483/353837.terrain b/public/terrain/19/858483/353837.terrain new file mode 100644 index 000000000..a7edf9a71 Binary files /dev/null and b/public/terrain/19/858483/353837.terrain differ diff --git a/public/terrain/19/858483/353838.terrain b/public/terrain/19/858483/353838.terrain new file mode 100644 index 000000000..1d172f42d Binary files /dev/null and b/public/terrain/19/858483/353838.terrain differ diff --git a/public/terrain/19/858483/353839.terrain b/public/terrain/19/858483/353839.terrain new file mode 100644 index 000000000..300dd1735 Binary files /dev/null and b/public/terrain/19/858483/353839.terrain differ diff --git a/public/terrain/19/858483/353840.terrain b/public/terrain/19/858483/353840.terrain new file mode 100644 index 000000000..211415505 Binary files /dev/null and b/public/terrain/19/858483/353840.terrain differ diff --git a/public/terrain/19/858483/353841.terrain b/public/terrain/19/858483/353841.terrain new file mode 100644 index 000000000..e004c2998 Binary files /dev/null and b/public/terrain/19/858483/353841.terrain differ diff --git a/public/terrain/19/858483/353842.terrain b/public/terrain/19/858483/353842.terrain new file mode 100644 index 000000000..edc2d9ce3 Binary files /dev/null and b/public/terrain/19/858483/353842.terrain differ diff --git a/public/terrain/19/858483/353843.terrain b/public/terrain/19/858483/353843.terrain new file mode 100644 index 000000000..cae7e76c8 Binary files /dev/null and b/public/terrain/19/858483/353843.terrain differ diff --git a/public/terrain/19/858483/353844.terrain b/public/terrain/19/858483/353844.terrain new file mode 100644 index 000000000..6b41b97b3 Binary files /dev/null and b/public/terrain/19/858483/353844.terrain differ diff --git a/public/terrain/19/858483/353845.terrain b/public/terrain/19/858483/353845.terrain new file mode 100644 index 000000000..f92947f5e Binary files /dev/null and b/public/terrain/19/858483/353845.terrain differ diff --git a/public/terrain/19/858483/353846.terrain b/public/terrain/19/858483/353846.terrain new file mode 100644 index 000000000..83b786c7a Binary files /dev/null and b/public/terrain/19/858483/353846.terrain differ diff --git a/public/terrain/19/858483/353847.terrain b/public/terrain/19/858483/353847.terrain new file mode 100644 index 000000000..e06afbc00 Binary files /dev/null and b/public/terrain/19/858483/353847.terrain differ diff --git a/public/terrain/19/858483/353848.terrain b/public/terrain/19/858483/353848.terrain new file mode 100644 index 000000000..167a9e50b Binary files /dev/null and b/public/terrain/19/858483/353848.terrain differ diff --git a/public/terrain/19/858483/353849.terrain b/public/terrain/19/858483/353849.terrain new file mode 100644 index 000000000..10d0d632d Binary files /dev/null and b/public/terrain/19/858483/353849.terrain differ diff --git a/public/terrain/19/858483/353850.terrain b/public/terrain/19/858483/353850.terrain new file mode 100644 index 000000000..f45bc288a Binary files /dev/null and b/public/terrain/19/858483/353850.terrain differ diff --git a/public/terrain/19/858483/353851.terrain b/public/terrain/19/858483/353851.terrain new file mode 100644 index 000000000..4380b0cb6 Binary files /dev/null and b/public/terrain/19/858483/353851.terrain differ diff --git a/public/terrain/19/858483/353852.terrain b/public/terrain/19/858483/353852.terrain new file mode 100644 index 000000000..da97c5a0a Binary files /dev/null and b/public/terrain/19/858483/353852.terrain differ diff --git a/public/terrain/19/858483/353853.terrain b/public/terrain/19/858483/353853.terrain new file mode 100644 index 000000000..954f095dd Binary files /dev/null and b/public/terrain/19/858483/353853.terrain differ diff --git a/public/terrain/19/858483/353854.terrain b/public/terrain/19/858483/353854.terrain new file mode 100644 index 000000000..7c6f3c428 Binary files /dev/null and b/public/terrain/19/858483/353854.terrain differ diff --git a/public/terrain/19/858483/353855.terrain b/public/terrain/19/858483/353855.terrain new file mode 100644 index 000000000..b985f6661 Binary files /dev/null and b/public/terrain/19/858483/353855.terrain differ diff --git a/public/terrain/19/858483/353856.terrain b/public/terrain/19/858483/353856.terrain new file mode 100644 index 000000000..d83e3bd72 Binary files /dev/null and b/public/terrain/19/858483/353856.terrain differ diff --git a/public/terrain/19/858483/353857.terrain b/public/terrain/19/858483/353857.terrain new file mode 100644 index 000000000..46cd8e82b Binary files /dev/null and b/public/terrain/19/858483/353857.terrain differ diff --git a/public/terrain/19/858483/353858.terrain b/public/terrain/19/858483/353858.terrain new file mode 100644 index 000000000..3551e67fd Binary files /dev/null and b/public/terrain/19/858483/353858.terrain differ diff --git a/public/terrain/19/858483/353859.terrain b/public/terrain/19/858483/353859.terrain new file mode 100644 index 000000000..d04ae1754 Binary files /dev/null and b/public/terrain/19/858483/353859.terrain differ diff --git a/public/terrain/19/858483/353860.terrain b/public/terrain/19/858483/353860.terrain new file mode 100644 index 000000000..b9035cb79 Binary files /dev/null and b/public/terrain/19/858483/353860.terrain differ diff --git a/public/terrain/19/858483/353861.terrain b/public/terrain/19/858483/353861.terrain new file mode 100644 index 000000000..e503aec96 Binary files /dev/null and b/public/terrain/19/858483/353861.terrain differ diff --git a/public/terrain/19/858483/353862.terrain b/public/terrain/19/858483/353862.terrain new file mode 100644 index 000000000..183192799 Binary files /dev/null and b/public/terrain/19/858483/353862.terrain differ diff --git a/public/terrain/19/858483/353863.terrain b/public/terrain/19/858483/353863.terrain new file mode 100644 index 000000000..76bf89e14 Binary files /dev/null and b/public/terrain/19/858483/353863.terrain differ diff --git a/public/terrain/19/858483/353864.terrain b/public/terrain/19/858483/353864.terrain new file mode 100644 index 000000000..dd89cced9 Binary files /dev/null and b/public/terrain/19/858483/353864.terrain differ diff --git a/public/terrain/19/858483/353865.terrain b/public/terrain/19/858483/353865.terrain new file mode 100644 index 000000000..38696e046 Binary files /dev/null and b/public/terrain/19/858483/353865.terrain differ diff --git a/public/terrain/19/858483/353866.terrain b/public/terrain/19/858483/353866.terrain new file mode 100644 index 000000000..905f5898d Binary files /dev/null and b/public/terrain/19/858483/353866.terrain differ diff --git a/public/terrain/19/858483/353867.terrain b/public/terrain/19/858483/353867.terrain new file mode 100644 index 000000000..c5b32fd38 Binary files /dev/null and b/public/terrain/19/858483/353867.terrain differ diff --git a/public/terrain/19/858483/353868.terrain b/public/terrain/19/858483/353868.terrain new file mode 100644 index 000000000..d11a8e36e Binary files /dev/null and b/public/terrain/19/858483/353868.terrain differ diff --git a/public/terrain/19/858483/353869.terrain b/public/terrain/19/858483/353869.terrain new file mode 100644 index 000000000..c4919b33d Binary files /dev/null and b/public/terrain/19/858483/353869.terrain differ diff --git a/public/terrain/19/858483/353870.terrain b/public/terrain/19/858483/353870.terrain new file mode 100644 index 000000000..ee0413fb3 Binary files /dev/null and b/public/terrain/19/858483/353870.terrain differ diff --git a/public/terrain/19/858483/353871.terrain b/public/terrain/19/858483/353871.terrain new file mode 100644 index 000000000..022879fac Binary files /dev/null and b/public/terrain/19/858483/353871.terrain differ diff --git a/public/terrain/19/858483/353872.terrain b/public/terrain/19/858483/353872.terrain new file mode 100644 index 000000000..8cecc1954 Binary files /dev/null and b/public/terrain/19/858483/353872.terrain differ diff --git a/public/terrain/19/858483/353873.terrain b/public/terrain/19/858483/353873.terrain new file mode 100644 index 000000000..c7a087ad2 Binary files /dev/null and b/public/terrain/19/858483/353873.terrain differ diff --git a/public/terrain/19/858483/353874.terrain b/public/terrain/19/858483/353874.terrain new file mode 100644 index 000000000..fe34c5682 Binary files /dev/null and b/public/terrain/19/858483/353874.terrain differ diff --git a/public/terrain/19/858483/353875.terrain b/public/terrain/19/858483/353875.terrain new file mode 100644 index 000000000..602ee1d56 Binary files /dev/null and b/public/terrain/19/858483/353875.terrain differ diff --git a/public/terrain/19/858483/353876.terrain b/public/terrain/19/858483/353876.terrain new file mode 100644 index 000000000..ae99191a3 Binary files /dev/null and b/public/terrain/19/858483/353876.terrain differ diff --git a/public/terrain/19/858483/353877.terrain b/public/terrain/19/858483/353877.terrain new file mode 100644 index 000000000..005e72ffa Binary files /dev/null and b/public/terrain/19/858483/353877.terrain differ diff --git a/public/terrain/19/858483/353878.terrain b/public/terrain/19/858483/353878.terrain new file mode 100644 index 000000000..547cbe859 Binary files /dev/null and b/public/terrain/19/858483/353878.terrain differ diff --git a/public/terrain/19/858483/353879.terrain b/public/terrain/19/858483/353879.terrain new file mode 100644 index 000000000..940acae0b Binary files /dev/null and b/public/terrain/19/858483/353879.terrain differ diff --git a/public/terrain/19/858483/353880.terrain b/public/terrain/19/858483/353880.terrain new file mode 100644 index 000000000..20046b52d Binary files /dev/null and b/public/terrain/19/858483/353880.terrain differ diff --git a/public/terrain/19/858483/353881.terrain b/public/terrain/19/858483/353881.terrain new file mode 100644 index 000000000..3ae8e496f Binary files /dev/null and b/public/terrain/19/858483/353881.terrain differ diff --git a/public/terrain/19/858483/353882.terrain b/public/terrain/19/858483/353882.terrain new file mode 100644 index 000000000..14543e38c Binary files /dev/null and b/public/terrain/19/858483/353882.terrain differ diff --git a/public/terrain/19/858483/353883.terrain b/public/terrain/19/858483/353883.terrain new file mode 100644 index 000000000..ccd522bfe Binary files /dev/null and b/public/terrain/19/858483/353883.terrain differ diff --git a/public/terrain/19/858483/353884.terrain b/public/terrain/19/858483/353884.terrain new file mode 100644 index 000000000..bcd2362ad Binary files /dev/null and b/public/terrain/19/858483/353884.terrain differ diff --git a/public/terrain/19/858483/353885.terrain b/public/terrain/19/858483/353885.terrain new file mode 100644 index 000000000..385e068d7 Binary files /dev/null and b/public/terrain/19/858483/353885.terrain differ diff --git a/public/terrain/19/858483/353886.terrain b/public/terrain/19/858483/353886.terrain new file mode 100644 index 000000000..0e13501ef Binary files /dev/null and b/public/terrain/19/858483/353886.terrain differ diff --git a/public/terrain/19/858483/353887.terrain b/public/terrain/19/858483/353887.terrain new file mode 100644 index 000000000..85fa3e2a4 Binary files /dev/null and b/public/terrain/19/858483/353887.terrain differ diff --git a/public/terrain/19/858483/353888.terrain b/public/terrain/19/858483/353888.terrain new file mode 100644 index 000000000..fcc18a213 Binary files /dev/null and b/public/terrain/19/858483/353888.terrain differ diff --git a/public/terrain/19/858483/353889.terrain b/public/terrain/19/858483/353889.terrain new file mode 100644 index 000000000..9a06a501a Binary files /dev/null and b/public/terrain/19/858483/353889.terrain differ diff --git a/public/terrain/19/858483/353890.terrain b/public/terrain/19/858483/353890.terrain new file mode 100644 index 000000000..92d9f2441 Binary files /dev/null and b/public/terrain/19/858483/353890.terrain differ diff --git a/public/terrain/19/858483/353891.terrain b/public/terrain/19/858483/353891.terrain new file mode 100644 index 000000000..d17f9491b Binary files /dev/null and b/public/terrain/19/858483/353891.terrain differ diff --git a/public/terrain/19/858483/353892.terrain b/public/terrain/19/858483/353892.terrain new file mode 100644 index 000000000..4b7d665e2 Binary files /dev/null and b/public/terrain/19/858483/353892.terrain differ diff --git a/public/terrain/19/858483/353893.terrain b/public/terrain/19/858483/353893.terrain new file mode 100644 index 000000000..0bb0749a4 Binary files /dev/null and b/public/terrain/19/858483/353893.terrain differ diff --git a/public/terrain/19/858483/353894.terrain b/public/terrain/19/858483/353894.terrain new file mode 100644 index 000000000..7767b0dd9 Binary files /dev/null and b/public/terrain/19/858483/353894.terrain differ diff --git a/public/terrain/19/858483/353895.terrain b/public/terrain/19/858483/353895.terrain new file mode 100644 index 000000000..55125eb88 Binary files /dev/null and b/public/terrain/19/858483/353895.terrain differ diff --git a/public/terrain/19/858483/353896.terrain b/public/terrain/19/858483/353896.terrain new file mode 100644 index 000000000..49e0025e8 Binary files /dev/null and b/public/terrain/19/858483/353896.terrain differ diff --git a/public/terrain/19/858483/353897.terrain b/public/terrain/19/858483/353897.terrain new file mode 100644 index 000000000..95176954f Binary files /dev/null and b/public/terrain/19/858483/353897.terrain differ diff --git a/public/terrain/19/858483/353898.terrain b/public/terrain/19/858483/353898.terrain new file mode 100644 index 000000000..b8878a1d3 Binary files /dev/null and b/public/terrain/19/858483/353898.terrain differ diff --git a/public/terrain/19/858483/353899.terrain b/public/terrain/19/858483/353899.terrain new file mode 100644 index 000000000..7fdc8fe76 Binary files /dev/null and b/public/terrain/19/858483/353899.terrain differ diff --git a/public/terrain/19/858483/353900.terrain b/public/terrain/19/858483/353900.terrain new file mode 100644 index 000000000..f51b572d1 Binary files /dev/null and b/public/terrain/19/858483/353900.terrain differ diff --git a/public/terrain/19/858483/353901.terrain b/public/terrain/19/858483/353901.terrain new file mode 100644 index 000000000..426153e18 Binary files /dev/null and b/public/terrain/19/858483/353901.terrain differ diff --git a/public/terrain/19/858483/353902.terrain b/public/terrain/19/858483/353902.terrain new file mode 100644 index 000000000..cf0a37c21 Binary files /dev/null and b/public/terrain/19/858483/353902.terrain differ diff --git a/public/terrain/19/858483/353903.terrain b/public/terrain/19/858483/353903.terrain new file mode 100644 index 000000000..6ed54959e Binary files /dev/null and b/public/terrain/19/858483/353903.terrain differ diff --git a/public/terrain/19/858483/353904.terrain b/public/terrain/19/858483/353904.terrain new file mode 100644 index 000000000..989752cfb Binary files /dev/null and b/public/terrain/19/858483/353904.terrain differ diff --git a/public/terrain/19/858483/353905.terrain b/public/terrain/19/858483/353905.terrain new file mode 100644 index 000000000..3b28a5fb0 Binary files /dev/null and b/public/terrain/19/858483/353905.terrain differ diff --git a/public/terrain/19/858483/353906.terrain b/public/terrain/19/858483/353906.terrain new file mode 100644 index 000000000..a99e3f3b5 Binary files /dev/null and b/public/terrain/19/858483/353906.terrain differ diff --git a/public/terrain/19/858483/353907.terrain b/public/terrain/19/858483/353907.terrain new file mode 100644 index 000000000..004dde9bb Binary files /dev/null and b/public/terrain/19/858483/353907.terrain differ diff --git a/public/terrain/19/858483/353908.terrain b/public/terrain/19/858483/353908.terrain new file mode 100644 index 000000000..b9c0b3f98 Binary files /dev/null and b/public/terrain/19/858483/353908.terrain differ diff --git a/public/terrain/19/858483/353909.terrain b/public/terrain/19/858483/353909.terrain new file mode 100644 index 000000000..bb199ecb7 Binary files /dev/null and b/public/terrain/19/858483/353909.terrain differ diff --git a/public/terrain/19/858483/353910.terrain b/public/terrain/19/858483/353910.terrain new file mode 100644 index 000000000..9da126b45 Binary files /dev/null and b/public/terrain/19/858483/353910.terrain differ diff --git a/public/terrain/19/858483/353911.terrain b/public/terrain/19/858483/353911.terrain new file mode 100644 index 000000000..8e0496a5d Binary files /dev/null and b/public/terrain/19/858483/353911.terrain differ diff --git a/public/terrain/19/858483/353912.terrain b/public/terrain/19/858483/353912.terrain new file mode 100644 index 000000000..7fe72ed1b Binary files /dev/null and b/public/terrain/19/858483/353912.terrain differ diff --git a/public/terrain/19/858483/353913.terrain b/public/terrain/19/858483/353913.terrain new file mode 100644 index 000000000..b1c178687 Binary files /dev/null and b/public/terrain/19/858483/353913.terrain differ diff --git a/public/terrain/19/858483/353914.terrain b/public/terrain/19/858483/353914.terrain new file mode 100644 index 000000000..2fdde6f4a Binary files /dev/null and b/public/terrain/19/858483/353914.terrain differ diff --git a/public/terrain/19/858483/353915.terrain b/public/terrain/19/858483/353915.terrain new file mode 100644 index 000000000..3f83e732d Binary files /dev/null and b/public/terrain/19/858483/353915.terrain differ diff --git a/public/terrain/19/858483/353916.terrain b/public/terrain/19/858483/353916.terrain new file mode 100644 index 000000000..36e3ff5a7 Binary files /dev/null and b/public/terrain/19/858483/353916.terrain differ diff --git a/public/terrain/19/858483/353917.terrain b/public/terrain/19/858483/353917.terrain new file mode 100644 index 000000000..030046b03 Binary files /dev/null and b/public/terrain/19/858483/353917.terrain differ diff --git a/public/terrain/19/858483/353918.terrain b/public/terrain/19/858483/353918.terrain new file mode 100644 index 000000000..a071a1114 Binary files /dev/null and b/public/terrain/19/858483/353918.terrain differ diff --git a/public/terrain/19/858483/353919.terrain b/public/terrain/19/858483/353919.terrain new file mode 100644 index 000000000..a4482b265 Binary files /dev/null and b/public/terrain/19/858483/353919.terrain differ diff --git a/public/terrain/19/858483/353920.terrain b/public/terrain/19/858483/353920.terrain new file mode 100644 index 000000000..639d71604 Binary files /dev/null and b/public/terrain/19/858483/353920.terrain differ diff --git a/public/terrain/19/858483/353921.terrain b/public/terrain/19/858483/353921.terrain new file mode 100644 index 000000000..1dc354207 Binary files /dev/null and b/public/terrain/19/858483/353921.terrain differ diff --git a/public/terrain/19/858483/353922.terrain b/public/terrain/19/858483/353922.terrain new file mode 100644 index 000000000..c6f7f8c92 Binary files /dev/null and b/public/terrain/19/858483/353922.terrain differ diff --git a/public/terrain/19/858483/353923.terrain b/public/terrain/19/858483/353923.terrain new file mode 100644 index 000000000..cfbd64e9b Binary files /dev/null and b/public/terrain/19/858483/353923.terrain differ diff --git a/public/terrain/19/858483/353924.terrain b/public/terrain/19/858483/353924.terrain new file mode 100644 index 000000000..a244f32d1 Binary files /dev/null and b/public/terrain/19/858483/353924.terrain differ diff --git a/public/terrain/19/858483/353925.terrain b/public/terrain/19/858483/353925.terrain new file mode 100644 index 000000000..ffe9af286 Binary files /dev/null and b/public/terrain/19/858483/353925.terrain differ diff --git a/public/terrain/19/858483/353926.terrain b/public/terrain/19/858483/353926.terrain new file mode 100644 index 000000000..45325dbba Binary files /dev/null and b/public/terrain/19/858483/353926.terrain differ diff --git a/public/terrain/19/858483/353927.terrain b/public/terrain/19/858483/353927.terrain new file mode 100644 index 000000000..1d30d64af Binary files /dev/null and b/public/terrain/19/858483/353927.terrain differ diff --git a/public/terrain/19/858483/353928.terrain b/public/terrain/19/858483/353928.terrain new file mode 100644 index 000000000..9303533bc Binary files /dev/null and b/public/terrain/19/858483/353928.terrain differ diff --git a/public/terrain/19/858483/353929.terrain b/public/terrain/19/858483/353929.terrain new file mode 100644 index 000000000..d53d85c7a Binary files /dev/null and b/public/terrain/19/858483/353929.terrain differ diff --git a/public/terrain/19/858483/353930.terrain b/public/terrain/19/858483/353930.terrain new file mode 100644 index 000000000..162253896 Binary files /dev/null and b/public/terrain/19/858483/353930.terrain differ diff --git a/public/terrain/19/858483/353931.terrain b/public/terrain/19/858483/353931.terrain new file mode 100644 index 000000000..7b9a088e5 Binary files /dev/null and b/public/terrain/19/858483/353931.terrain differ diff --git a/public/terrain/19/858483/353932.terrain b/public/terrain/19/858483/353932.terrain new file mode 100644 index 000000000..d9c4728d8 Binary files /dev/null and b/public/terrain/19/858483/353932.terrain differ diff --git a/public/terrain/19/858483/353933.terrain b/public/terrain/19/858483/353933.terrain new file mode 100644 index 000000000..110cca2f7 Binary files /dev/null and b/public/terrain/19/858483/353933.terrain differ diff --git a/public/terrain/19/858483/353934.terrain b/public/terrain/19/858483/353934.terrain new file mode 100644 index 000000000..6dc142e51 Binary files /dev/null and b/public/terrain/19/858483/353934.terrain differ diff --git a/public/terrain/19/858483/353935.terrain b/public/terrain/19/858483/353935.terrain new file mode 100644 index 000000000..4ad2e0936 Binary files /dev/null and b/public/terrain/19/858483/353935.terrain differ diff --git a/public/terrain/19/858483/353936.terrain b/public/terrain/19/858483/353936.terrain new file mode 100644 index 000000000..c755c4f00 Binary files /dev/null and b/public/terrain/19/858483/353936.terrain differ diff --git a/public/terrain/19/858483/353937.terrain b/public/terrain/19/858483/353937.terrain new file mode 100644 index 000000000..294abbb39 Binary files /dev/null and b/public/terrain/19/858483/353937.terrain differ diff --git a/public/terrain/19/858483/353938.terrain b/public/terrain/19/858483/353938.terrain new file mode 100644 index 000000000..63ae11f65 Binary files /dev/null and b/public/terrain/19/858483/353938.terrain differ diff --git a/public/terrain/19/858483/353939.terrain b/public/terrain/19/858483/353939.terrain new file mode 100644 index 000000000..d8a88a202 Binary files /dev/null and b/public/terrain/19/858483/353939.terrain differ diff --git a/public/terrain/19/858483/353940.terrain b/public/terrain/19/858483/353940.terrain new file mode 100644 index 000000000..e53300a19 Binary files /dev/null and b/public/terrain/19/858483/353940.terrain differ diff --git a/public/terrain/19/858483/353941.terrain b/public/terrain/19/858483/353941.terrain new file mode 100644 index 000000000..d72b0fabd Binary files /dev/null and b/public/terrain/19/858483/353941.terrain differ diff --git a/public/terrain/19/858483/353942.terrain b/public/terrain/19/858483/353942.terrain new file mode 100644 index 000000000..bad97faff Binary files /dev/null and b/public/terrain/19/858483/353942.terrain differ diff --git a/public/terrain/19/858483/353943.terrain b/public/terrain/19/858483/353943.terrain new file mode 100644 index 000000000..46be97836 Binary files /dev/null and b/public/terrain/19/858483/353943.terrain differ diff --git a/public/terrain/19/858483/353944.terrain b/public/terrain/19/858483/353944.terrain new file mode 100644 index 000000000..c92191215 Binary files /dev/null and b/public/terrain/19/858483/353944.terrain differ diff --git a/public/terrain/19/858483/353945.terrain b/public/terrain/19/858483/353945.terrain new file mode 100644 index 000000000..9e2549254 Binary files /dev/null and b/public/terrain/19/858483/353945.terrain differ diff --git a/public/terrain/19/858483/353946.terrain b/public/terrain/19/858483/353946.terrain new file mode 100644 index 000000000..9b0f3e674 Binary files /dev/null and b/public/terrain/19/858483/353946.terrain differ diff --git a/public/terrain/19/858483/353947.terrain b/public/terrain/19/858483/353947.terrain new file mode 100644 index 000000000..3963e7e38 Binary files /dev/null and b/public/terrain/19/858483/353947.terrain differ diff --git a/public/terrain/19/858483/353948.terrain b/public/terrain/19/858483/353948.terrain new file mode 100644 index 000000000..6e601ed16 Binary files /dev/null and b/public/terrain/19/858483/353948.terrain differ diff --git a/public/terrain/19/858483/353949.terrain b/public/terrain/19/858483/353949.terrain new file mode 100644 index 000000000..a9471d085 Binary files /dev/null and b/public/terrain/19/858483/353949.terrain differ diff --git a/public/terrain/19/858483/353950.terrain b/public/terrain/19/858483/353950.terrain new file mode 100644 index 000000000..56effe92b Binary files /dev/null and b/public/terrain/19/858483/353950.terrain differ diff --git a/public/terrain/19/858483/353951.terrain b/public/terrain/19/858483/353951.terrain new file mode 100644 index 000000000..60f9ce604 Binary files /dev/null and b/public/terrain/19/858483/353951.terrain differ diff --git a/public/terrain/19/858483/353952.terrain b/public/terrain/19/858483/353952.terrain new file mode 100644 index 000000000..360d193eb Binary files /dev/null and b/public/terrain/19/858483/353952.terrain differ diff --git a/public/terrain/19/858483/353953.terrain b/public/terrain/19/858483/353953.terrain new file mode 100644 index 000000000..9081fe925 Binary files /dev/null and b/public/terrain/19/858483/353953.terrain differ diff --git a/public/terrain/19/858483/353954.terrain b/public/terrain/19/858483/353954.terrain new file mode 100644 index 000000000..ba366561f Binary files /dev/null and b/public/terrain/19/858483/353954.terrain differ diff --git a/public/terrain/19/858483/353955.terrain b/public/terrain/19/858483/353955.terrain new file mode 100644 index 000000000..ef5ed3909 Binary files /dev/null and b/public/terrain/19/858483/353955.terrain differ diff --git a/public/terrain/19/858483/353956.terrain b/public/terrain/19/858483/353956.terrain new file mode 100644 index 000000000..040281017 Binary files /dev/null and b/public/terrain/19/858483/353956.terrain differ diff --git a/public/terrain/19/858483/353957.terrain b/public/terrain/19/858483/353957.terrain new file mode 100644 index 000000000..237a01420 Binary files /dev/null and b/public/terrain/19/858483/353957.terrain differ diff --git a/public/terrain/19/858483/353958.terrain b/public/terrain/19/858483/353958.terrain new file mode 100644 index 000000000..7696683c4 Binary files /dev/null and b/public/terrain/19/858483/353958.terrain differ diff --git a/public/terrain/19/858483/353959.terrain b/public/terrain/19/858483/353959.terrain new file mode 100644 index 000000000..11a57521d Binary files /dev/null and b/public/terrain/19/858483/353959.terrain differ diff --git a/public/terrain/19/858483/353960.terrain b/public/terrain/19/858483/353960.terrain new file mode 100644 index 000000000..a3f0c6019 Binary files /dev/null and b/public/terrain/19/858483/353960.terrain differ diff --git a/public/terrain/19/858483/353961.terrain b/public/terrain/19/858483/353961.terrain new file mode 100644 index 000000000..37fb7a62e Binary files /dev/null and b/public/terrain/19/858483/353961.terrain differ diff --git a/public/terrain/19/858483/353962.terrain b/public/terrain/19/858483/353962.terrain new file mode 100644 index 000000000..c3a4c316c Binary files /dev/null and b/public/terrain/19/858483/353962.terrain differ diff --git a/public/terrain/19/858483/353963.terrain b/public/terrain/19/858483/353963.terrain new file mode 100644 index 000000000..a817e60da Binary files /dev/null and b/public/terrain/19/858483/353963.terrain differ diff --git a/public/terrain/19/858483/353964.terrain b/public/terrain/19/858483/353964.terrain new file mode 100644 index 000000000..5a366b591 Binary files /dev/null and b/public/terrain/19/858483/353964.terrain differ diff --git a/public/terrain/19/858483/353965.terrain b/public/terrain/19/858483/353965.terrain new file mode 100644 index 000000000..f5c817710 Binary files /dev/null and b/public/terrain/19/858483/353965.terrain differ diff --git a/public/terrain/19/858483/353966.terrain b/public/terrain/19/858483/353966.terrain new file mode 100644 index 000000000..e6b376b20 Binary files /dev/null and b/public/terrain/19/858483/353966.terrain differ diff --git a/public/terrain/19/858483/353967.terrain b/public/terrain/19/858483/353967.terrain new file mode 100644 index 000000000..d3dcdbbec Binary files /dev/null and b/public/terrain/19/858483/353967.terrain differ diff --git a/public/terrain/19/858483/353968.terrain b/public/terrain/19/858483/353968.terrain new file mode 100644 index 000000000..0f3e8f272 Binary files /dev/null and b/public/terrain/19/858483/353968.terrain differ diff --git a/public/terrain/19/858483/353969.terrain b/public/terrain/19/858483/353969.terrain new file mode 100644 index 000000000..f6ff8b803 Binary files /dev/null and b/public/terrain/19/858483/353969.terrain differ diff --git a/public/terrain/19/858483/353970.terrain b/public/terrain/19/858483/353970.terrain new file mode 100644 index 000000000..5d5d932e9 Binary files /dev/null and b/public/terrain/19/858483/353970.terrain differ diff --git a/public/terrain/19/858483/353971.terrain b/public/terrain/19/858483/353971.terrain new file mode 100644 index 000000000..d20ef8e15 Binary files /dev/null and b/public/terrain/19/858483/353971.terrain differ diff --git a/public/terrain/19/858483/353972.terrain b/public/terrain/19/858483/353972.terrain new file mode 100644 index 000000000..b3b5db4be Binary files /dev/null and b/public/terrain/19/858483/353972.terrain differ diff --git a/public/terrain/19/858483/353973.terrain b/public/terrain/19/858483/353973.terrain new file mode 100644 index 000000000..9a4816986 Binary files /dev/null and b/public/terrain/19/858483/353973.terrain differ diff --git a/public/terrain/19/858483/353974.terrain b/public/terrain/19/858483/353974.terrain new file mode 100644 index 000000000..383709269 Binary files /dev/null and b/public/terrain/19/858483/353974.terrain differ diff --git a/public/terrain/19/858483/353975.terrain b/public/terrain/19/858483/353975.terrain new file mode 100644 index 000000000..bb6a31106 Binary files /dev/null and b/public/terrain/19/858483/353975.terrain differ diff --git a/public/terrain/19/858483/353976.terrain b/public/terrain/19/858483/353976.terrain new file mode 100644 index 000000000..04c50ed45 Binary files /dev/null and b/public/terrain/19/858483/353976.terrain differ diff --git a/public/terrain/19/858483/353977.terrain b/public/terrain/19/858483/353977.terrain new file mode 100644 index 000000000..bec440db6 Binary files /dev/null and b/public/terrain/19/858483/353977.terrain differ diff --git a/public/terrain/19/858483/353978.terrain b/public/terrain/19/858483/353978.terrain new file mode 100644 index 000000000..e4bf5a1de Binary files /dev/null and b/public/terrain/19/858483/353978.terrain differ diff --git a/public/terrain/19/858483/353979.terrain b/public/terrain/19/858483/353979.terrain new file mode 100644 index 000000000..1d099c09f Binary files /dev/null and b/public/terrain/19/858483/353979.terrain differ diff --git a/public/terrain/19/858483/353980.terrain b/public/terrain/19/858483/353980.terrain new file mode 100644 index 000000000..4c8e0556d Binary files /dev/null and b/public/terrain/19/858483/353980.terrain differ diff --git a/public/terrain/19/858483/353981.terrain b/public/terrain/19/858483/353981.terrain new file mode 100644 index 000000000..ec792704a Binary files /dev/null and b/public/terrain/19/858483/353981.terrain differ diff --git a/public/terrain/19/858483/353982.terrain b/public/terrain/19/858483/353982.terrain new file mode 100644 index 000000000..bb0e0d82a Binary files /dev/null and b/public/terrain/19/858483/353982.terrain differ diff --git a/public/terrain/19/858483/353983.terrain b/public/terrain/19/858483/353983.terrain new file mode 100644 index 000000000..f953196c1 Binary files /dev/null and b/public/terrain/19/858483/353983.terrain differ diff --git a/public/terrain/19/858483/353984.terrain b/public/terrain/19/858483/353984.terrain new file mode 100644 index 000000000..a1ce6436a Binary files /dev/null and b/public/terrain/19/858483/353984.terrain differ diff --git a/public/terrain/19/858483/353985.terrain b/public/terrain/19/858483/353985.terrain new file mode 100644 index 000000000..e2722dd14 Binary files /dev/null and b/public/terrain/19/858483/353985.terrain differ diff --git a/public/terrain/19/858483/353986.terrain b/public/terrain/19/858483/353986.terrain new file mode 100644 index 000000000..0675afd71 Binary files /dev/null and b/public/terrain/19/858483/353986.terrain differ diff --git a/public/terrain/19/858483/353987.terrain b/public/terrain/19/858483/353987.terrain new file mode 100644 index 000000000..649a165ba Binary files /dev/null and b/public/terrain/19/858483/353987.terrain differ diff --git a/public/terrain/19/858483/353988.terrain b/public/terrain/19/858483/353988.terrain new file mode 100644 index 000000000..58e905613 Binary files /dev/null and b/public/terrain/19/858483/353988.terrain differ diff --git a/public/terrain/19/858483/353989.terrain b/public/terrain/19/858483/353989.terrain new file mode 100644 index 000000000..c4dc81a9d Binary files /dev/null and b/public/terrain/19/858483/353989.terrain differ diff --git a/public/terrain/19/858483/353990.terrain b/public/terrain/19/858483/353990.terrain new file mode 100644 index 000000000..f220eafee Binary files /dev/null and b/public/terrain/19/858483/353990.terrain differ diff --git a/public/terrain/19/858483/353991.terrain b/public/terrain/19/858483/353991.terrain new file mode 100644 index 000000000..477d3c73a Binary files /dev/null and b/public/terrain/19/858483/353991.terrain differ diff --git a/public/terrain/19/858483/353992.terrain b/public/terrain/19/858483/353992.terrain new file mode 100644 index 000000000..501214c12 Binary files /dev/null and b/public/terrain/19/858483/353992.terrain differ diff --git a/public/terrain/19/858483/353993.terrain b/public/terrain/19/858483/353993.terrain new file mode 100644 index 000000000..9e4417200 Binary files /dev/null and b/public/terrain/19/858483/353993.terrain differ diff --git a/public/terrain/19/858483/353994.terrain b/public/terrain/19/858483/353994.terrain new file mode 100644 index 000000000..41226e107 Binary files /dev/null and b/public/terrain/19/858483/353994.terrain differ diff --git a/public/terrain/19/858483/353995.terrain b/public/terrain/19/858483/353995.terrain new file mode 100644 index 000000000..f2e0c20a3 Binary files /dev/null and b/public/terrain/19/858483/353995.terrain differ diff --git a/public/terrain/19/858483/353996.terrain b/public/terrain/19/858483/353996.terrain new file mode 100644 index 000000000..fb75c31f3 Binary files /dev/null and b/public/terrain/19/858483/353996.terrain differ diff --git a/public/terrain/19/858483/353997.terrain b/public/terrain/19/858483/353997.terrain new file mode 100644 index 000000000..00f6224f9 Binary files /dev/null and b/public/terrain/19/858483/353997.terrain differ diff --git a/public/terrain/19/858483/353998.terrain b/public/terrain/19/858483/353998.terrain new file mode 100644 index 000000000..fb5fefbd7 Binary files /dev/null and b/public/terrain/19/858483/353998.terrain differ diff --git a/public/terrain/19/858483/353999.terrain b/public/terrain/19/858483/353999.terrain new file mode 100644 index 000000000..5470c1448 Binary files /dev/null and b/public/terrain/19/858483/353999.terrain differ diff --git a/public/terrain/19/858483/354000.terrain b/public/terrain/19/858483/354000.terrain new file mode 100644 index 000000000..6138ae437 Binary files /dev/null and b/public/terrain/19/858483/354000.terrain differ diff --git a/public/terrain/19/858483/354001.terrain b/public/terrain/19/858483/354001.terrain new file mode 100644 index 000000000..5dd418424 Binary files /dev/null and b/public/terrain/19/858483/354001.terrain differ diff --git a/public/terrain/19/858483/354002.terrain b/public/terrain/19/858483/354002.terrain new file mode 100644 index 000000000..9ba397106 Binary files /dev/null and b/public/terrain/19/858483/354002.terrain differ diff --git a/public/terrain/19/858483/354003.terrain b/public/terrain/19/858483/354003.terrain new file mode 100644 index 000000000..12cb07c83 Binary files /dev/null and b/public/terrain/19/858483/354003.terrain differ diff --git a/public/terrain/19/858483/354004.terrain b/public/terrain/19/858483/354004.terrain new file mode 100644 index 000000000..2678ad790 Binary files /dev/null and b/public/terrain/19/858483/354004.terrain differ diff --git a/public/terrain/19/858483/354005.terrain b/public/terrain/19/858483/354005.terrain new file mode 100644 index 000000000..f5ac67d2e Binary files /dev/null and b/public/terrain/19/858483/354005.terrain differ diff --git a/public/terrain/19/858483/354006.terrain b/public/terrain/19/858483/354006.terrain new file mode 100644 index 000000000..a022a54d6 Binary files /dev/null and b/public/terrain/19/858483/354006.terrain differ diff --git a/public/terrain/19/858483/354007.terrain b/public/terrain/19/858483/354007.terrain new file mode 100644 index 000000000..27bd412be Binary files /dev/null and b/public/terrain/19/858483/354007.terrain differ diff --git a/public/terrain/19/858483/354008.terrain b/public/terrain/19/858483/354008.terrain new file mode 100644 index 000000000..810b78af4 Binary files /dev/null and b/public/terrain/19/858483/354008.terrain differ diff --git a/public/terrain/19/858483/354009.terrain b/public/terrain/19/858483/354009.terrain new file mode 100644 index 000000000..743cb20c3 Binary files /dev/null and b/public/terrain/19/858483/354009.terrain differ diff --git a/public/terrain/19/858483/354010.terrain b/public/terrain/19/858483/354010.terrain new file mode 100644 index 000000000..5db96c566 Binary files /dev/null and b/public/terrain/19/858483/354010.terrain differ diff --git a/public/terrain/19/858483/354011.terrain b/public/terrain/19/858483/354011.terrain new file mode 100644 index 000000000..0835f6eaa Binary files /dev/null and b/public/terrain/19/858483/354011.terrain differ diff --git a/public/terrain/19/858483/354012.terrain b/public/terrain/19/858483/354012.terrain new file mode 100644 index 000000000..f9e233640 Binary files /dev/null and b/public/terrain/19/858483/354012.terrain differ diff --git a/public/terrain/19/858483/354013.terrain b/public/terrain/19/858483/354013.terrain new file mode 100644 index 000000000..6124f42c0 Binary files /dev/null and b/public/terrain/19/858483/354013.terrain differ diff --git a/public/terrain/19/858483/354014.terrain b/public/terrain/19/858483/354014.terrain new file mode 100644 index 000000000..d1e79a367 Binary files /dev/null and b/public/terrain/19/858483/354014.terrain differ diff --git a/public/terrain/19/858483/354015.terrain b/public/terrain/19/858483/354015.terrain new file mode 100644 index 000000000..741b20df3 Binary files /dev/null and b/public/terrain/19/858483/354015.terrain differ diff --git a/public/terrain/19/858483/354016.terrain b/public/terrain/19/858483/354016.terrain new file mode 100644 index 000000000..dde94a0f5 Binary files /dev/null and b/public/terrain/19/858483/354016.terrain differ diff --git a/public/terrain/19/858483/354017.terrain b/public/terrain/19/858483/354017.terrain new file mode 100644 index 000000000..aaeec59ac Binary files /dev/null and b/public/terrain/19/858483/354017.terrain differ diff --git a/public/terrain/19/858483/354018.terrain b/public/terrain/19/858483/354018.terrain new file mode 100644 index 000000000..137e6d9ec Binary files /dev/null and b/public/terrain/19/858483/354018.terrain differ diff --git a/public/terrain/19/858483/354019.terrain b/public/terrain/19/858483/354019.terrain new file mode 100644 index 000000000..1c58d76d4 Binary files /dev/null and b/public/terrain/19/858483/354019.terrain differ diff --git a/public/terrain/19/858483/354020.terrain b/public/terrain/19/858483/354020.terrain new file mode 100644 index 000000000..368b9731d Binary files /dev/null and b/public/terrain/19/858483/354020.terrain differ diff --git a/public/terrain/19/858483/354021.terrain b/public/terrain/19/858483/354021.terrain new file mode 100644 index 000000000..1fac5ae32 Binary files /dev/null and b/public/terrain/19/858483/354021.terrain differ diff --git a/public/terrain/19/858483/354022.terrain b/public/terrain/19/858483/354022.terrain new file mode 100644 index 000000000..af10d94f1 Binary files /dev/null and b/public/terrain/19/858483/354022.terrain differ diff --git a/public/terrain/19/858483/354023.terrain b/public/terrain/19/858483/354023.terrain new file mode 100644 index 000000000..fb31f30fc Binary files /dev/null and b/public/terrain/19/858483/354023.terrain differ diff --git a/public/terrain/19/858483/354024.terrain b/public/terrain/19/858483/354024.terrain new file mode 100644 index 000000000..f37c5d1e6 Binary files /dev/null and b/public/terrain/19/858483/354024.terrain differ diff --git a/public/terrain/19/858483/354025.terrain b/public/terrain/19/858483/354025.terrain new file mode 100644 index 000000000..e657ebecf Binary files /dev/null and b/public/terrain/19/858483/354025.terrain differ diff --git a/public/terrain/19/858483/354026.terrain b/public/terrain/19/858483/354026.terrain new file mode 100644 index 000000000..f55d4f1b9 Binary files /dev/null and b/public/terrain/19/858483/354026.terrain differ diff --git a/public/terrain/19/858483/354027.terrain b/public/terrain/19/858483/354027.terrain new file mode 100644 index 000000000..c16a3d1b0 Binary files /dev/null and b/public/terrain/19/858483/354027.terrain differ diff --git a/public/terrain/19/858483/354028.terrain b/public/terrain/19/858483/354028.terrain new file mode 100644 index 000000000..e5cec2cbc Binary files /dev/null and b/public/terrain/19/858483/354028.terrain differ diff --git a/public/terrain/19/858483/354029.terrain b/public/terrain/19/858483/354029.terrain new file mode 100644 index 000000000..dd40639d3 Binary files /dev/null and b/public/terrain/19/858483/354029.terrain differ diff --git a/public/terrain/19/858483/354030.terrain b/public/terrain/19/858483/354030.terrain new file mode 100644 index 000000000..efdf0ee12 Binary files /dev/null and b/public/terrain/19/858483/354030.terrain differ diff --git a/public/terrain/19/858483/354031.terrain b/public/terrain/19/858483/354031.terrain new file mode 100644 index 000000000..4293ad3e6 Binary files /dev/null and b/public/terrain/19/858483/354031.terrain differ diff --git a/public/terrain/19/858483/354032.terrain b/public/terrain/19/858483/354032.terrain new file mode 100644 index 000000000..7ca2d0d0b Binary files /dev/null and b/public/terrain/19/858483/354032.terrain differ diff --git a/public/terrain/19/858483/354033.terrain b/public/terrain/19/858483/354033.terrain new file mode 100644 index 000000000..e918c8f0c Binary files /dev/null and b/public/terrain/19/858483/354033.terrain differ diff --git a/public/terrain/19/858483/354034.terrain b/public/terrain/19/858483/354034.terrain new file mode 100644 index 000000000..f18c874c4 Binary files /dev/null and b/public/terrain/19/858483/354034.terrain differ diff --git a/public/terrain/19/858483/354035.terrain b/public/terrain/19/858483/354035.terrain new file mode 100644 index 000000000..ef9f1e8b0 Binary files /dev/null and b/public/terrain/19/858483/354035.terrain differ diff --git a/public/terrain/19/858483/354036.terrain b/public/terrain/19/858483/354036.terrain new file mode 100644 index 000000000..e7a95b192 Binary files /dev/null and b/public/terrain/19/858483/354036.terrain differ diff --git a/public/terrain/19/858483/354037.terrain b/public/terrain/19/858483/354037.terrain new file mode 100644 index 000000000..f18cecd1b Binary files /dev/null and b/public/terrain/19/858483/354037.terrain differ diff --git a/public/terrain/19/858483/354038.terrain b/public/terrain/19/858483/354038.terrain new file mode 100644 index 000000000..13d5ba5e0 Binary files /dev/null and b/public/terrain/19/858483/354038.terrain differ diff --git a/public/terrain/19/858483/354039.terrain b/public/terrain/19/858483/354039.terrain new file mode 100644 index 000000000..32d8e661d Binary files /dev/null and b/public/terrain/19/858483/354039.terrain differ diff --git a/public/terrain/19/858483/354040.terrain b/public/terrain/19/858483/354040.terrain new file mode 100644 index 000000000..d9efa34b5 Binary files /dev/null and b/public/terrain/19/858483/354040.terrain differ diff --git a/public/terrain/19/858483/354041.terrain b/public/terrain/19/858483/354041.terrain new file mode 100644 index 000000000..68659177d Binary files /dev/null and b/public/terrain/19/858483/354041.terrain differ diff --git a/public/terrain/19/858483/354042.terrain b/public/terrain/19/858483/354042.terrain new file mode 100644 index 000000000..3245f5ba7 Binary files /dev/null and b/public/terrain/19/858483/354042.terrain differ diff --git a/public/terrain/19/858483/354043.terrain b/public/terrain/19/858483/354043.terrain new file mode 100644 index 000000000..f79e9041f Binary files /dev/null and b/public/terrain/19/858483/354043.terrain differ diff --git a/public/terrain/19/858483/354044.terrain b/public/terrain/19/858483/354044.terrain new file mode 100644 index 000000000..b830a2669 Binary files /dev/null and b/public/terrain/19/858483/354044.terrain differ diff --git a/public/terrain/19/858483/354045.terrain b/public/terrain/19/858483/354045.terrain new file mode 100644 index 000000000..a68ce713a Binary files /dev/null and b/public/terrain/19/858483/354045.terrain differ diff --git a/public/terrain/19/858483/354046.terrain b/public/terrain/19/858483/354046.terrain new file mode 100644 index 000000000..a76746991 Binary files /dev/null and b/public/terrain/19/858483/354046.terrain differ diff --git a/public/terrain/19/858483/354047.terrain b/public/terrain/19/858483/354047.terrain new file mode 100644 index 000000000..bb9efbeea Binary files /dev/null and b/public/terrain/19/858483/354047.terrain differ diff --git a/public/terrain/19/858483/354048.terrain b/public/terrain/19/858483/354048.terrain new file mode 100644 index 000000000..2d33ec059 Binary files /dev/null and b/public/terrain/19/858483/354048.terrain differ diff --git a/public/terrain/19/858483/354049.terrain b/public/terrain/19/858483/354049.terrain new file mode 100644 index 000000000..058795610 Binary files /dev/null and b/public/terrain/19/858483/354049.terrain differ diff --git a/public/terrain/19/858483/354050.terrain b/public/terrain/19/858483/354050.terrain new file mode 100644 index 000000000..c350cf8f5 Binary files /dev/null and b/public/terrain/19/858483/354050.terrain differ diff --git a/public/terrain/19/858483/354051.terrain b/public/terrain/19/858483/354051.terrain new file mode 100644 index 000000000..121a2f74d Binary files /dev/null and b/public/terrain/19/858483/354051.terrain differ diff --git a/public/terrain/19/858483/354052.terrain b/public/terrain/19/858483/354052.terrain new file mode 100644 index 000000000..c41007f02 Binary files /dev/null and b/public/terrain/19/858483/354052.terrain differ diff --git a/public/terrain/19/858483/354053.terrain b/public/terrain/19/858483/354053.terrain new file mode 100644 index 000000000..d2e064742 Binary files /dev/null and b/public/terrain/19/858483/354053.terrain differ diff --git a/public/terrain/19/858483/354054.terrain b/public/terrain/19/858483/354054.terrain new file mode 100644 index 000000000..916a53c21 Binary files /dev/null and b/public/terrain/19/858483/354054.terrain differ diff --git a/public/terrain/19/858483/354055.terrain b/public/terrain/19/858483/354055.terrain new file mode 100644 index 000000000..d2ffbef27 Binary files /dev/null and b/public/terrain/19/858483/354055.terrain differ diff --git a/public/terrain/19/858483/354056.terrain b/public/terrain/19/858483/354056.terrain new file mode 100644 index 000000000..1c867da7e Binary files /dev/null and b/public/terrain/19/858483/354056.terrain differ diff --git a/public/terrain/19/858483/354057.terrain b/public/terrain/19/858483/354057.terrain new file mode 100644 index 000000000..4d2920b8c Binary files /dev/null and b/public/terrain/19/858483/354057.terrain differ diff --git a/public/terrain/19/858483/354058.terrain b/public/terrain/19/858483/354058.terrain new file mode 100644 index 000000000..11940cd7a Binary files /dev/null and b/public/terrain/19/858483/354058.terrain differ diff --git a/public/terrain/19/858483/354059.terrain b/public/terrain/19/858483/354059.terrain new file mode 100644 index 000000000..fda2d8604 Binary files /dev/null and b/public/terrain/19/858483/354059.terrain differ diff --git a/public/terrain/19/858484/353743.terrain b/public/terrain/19/858484/353743.terrain new file mode 100644 index 000000000..961af3e7e Binary files /dev/null and b/public/terrain/19/858484/353743.terrain differ diff --git a/public/terrain/19/858484/353744.terrain b/public/terrain/19/858484/353744.terrain new file mode 100644 index 000000000..44813cd19 Binary files /dev/null and b/public/terrain/19/858484/353744.terrain differ diff --git a/public/terrain/19/858484/353745.terrain b/public/terrain/19/858484/353745.terrain new file mode 100644 index 000000000..08c8d5bf4 Binary files /dev/null and b/public/terrain/19/858484/353745.terrain differ diff --git a/public/terrain/19/858484/353746.terrain b/public/terrain/19/858484/353746.terrain new file mode 100644 index 000000000..e074a3969 Binary files /dev/null and b/public/terrain/19/858484/353746.terrain differ diff --git a/public/terrain/19/858484/353747.terrain b/public/terrain/19/858484/353747.terrain new file mode 100644 index 000000000..5e3e954c7 Binary files /dev/null and b/public/terrain/19/858484/353747.terrain differ diff --git a/public/terrain/19/858484/353748.terrain b/public/terrain/19/858484/353748.terrain new file mode 100644 index 000000000..c4c9c58a3 Binary files /dev/null and b/public/terrain/19/858484/353748.terrain differ diff --git a/public/terrain/19/858484/353749.terrain b/public/terrain/19/858484/353749.terrain new file mode 100644 index 000000000..5270400b7 Binary files /dev/null and b/public/terrain/19/858484/353749.terrain differ diff --git a/public/terrain/19/858484/353750.terrain b/public/terrain/19/858484/353750.terrain new file mode 100644 index 000000000..9ebb03017 Binary files /dev/null and b/public/terrain/19/858484/353750.terrain differ diff --git a/public/terrain/19/858484/353751.terrain b/public/terrain/19/858484/353751.terrain new file mode 100644 index 000000000..ab08af6dc Binary files /dev/null and b/public/terrain/19/858484/353751.terrain differ diff --git a/public/terrain/19/858484/353752.terrain b/public/terrain/19/858484/353752.terrain new file mode 100644 index 000000000..c77f8c472 Binary files /dev/null and b/public/terrain/19/858484/353752.terrain differ diff --git a/public/terrain/19/858484/353753.terrain b/public/terrain/19/858484/353753.terrain new file mode 100644 index 000000000..7a56071de Binary files /dev/null and b/public/terrain/19/858484/353753.terrain differ diff --git a/public/terrain/19/858484/353754.terrain b/public/terrain/19/858484/353754.terrain new file mode 100644 index 000000000..bdac8c524 Binary files /dev/null and b/public/terrain/19/858484/353754.terrain differ diff --git a/public/terrain/19/858484/353755.terrain b/public/terrain/19/858484/353755.terrain new file mode 100644 index 000000000..cc45ccf90 Binary files /dev/null and b/public/terrain/19/858484/353755.terrain differ diff --git a/public/terrain/19/858484/353756.terrain b/public/terrain/19/858484/353756.terrain new file mode 100644 index 000000000..637885b61 Binary files /dev/null and b/public/terrain/19/858484/353756.terrain differ diff --git a/public/terrain/19/858484/353757.terrain b/public/terrain/19/858484/353757.terrain new file mode 100644 index 000000000..ed14b8dd3 Binary files /dev/null and b/public/terrain/19/858484/353757.terrain differ diff --git a/public/terrain/19/858484/353758.terrain b/public/terrain/19/858484/353758.terrain new file mode 100644 index 000000000..d210084bf Binary files /dev/null and b/public/terrain/19/858484/353758.terrain differ diff --git a/public/terrain/19/858484/353759.terrain b/public/terrain/19/858484/353759.terrain new file mode 100644 index 000000000..d0ac89e35 Binary files /dev/null and b/public/terrain/19/858484/353759.terrain differ diff --git a/public/terrain/19/858484/353760.terrain b/public/terrain/19/858484/353760.terrain new file mode 100644 index 000000000..55986d410 Binary files /dev/null and b/public/terrain/19/858484/353760.terrain differ diff --git a/public/terrain/19/858484/353761.terrain b/public/terrain/19/858484/353761.terrain new file mode 100644 index 000000000..c20d73f0e Binary files /dev/null and b/public/terrain/19/858484/353761.terrain differ diff --git a/public/terrain/19/858484/353762.terrain b/public/terrain/19/858484/353762.terrain new file mode 100644 index 000000000..ce6fdbc6f Binary files /dev/null and b/public/terrain/19/858484/353762.terrain differ diff --git a/public/terrain/19/858484/353763.terrain b/public/terrain/19/858484/353763.terrain new file mode 100644 index 000000000..9ff8d5243 Binary files /dev/null and b/public/terrain/19/858484/353763.terrain differ diff --git a/public/terrain/19/858484/353764.terrain b/public/terrain/19/858484/353764.terrain new file mode 100644 index 000000000..93f4598f5 Binary files /dev/null and b/public/terrain/19/858484/353764.terrain differ diff --git a/public/terrain/19/858484/353765.terrain b/public/terrain/19/858484/353765.terrain new file mode 100644 index 000000000..6490ecfa7 Binary files /dev/null and b/public/terrain/19/858484/353765.terrain differ diff --git a/public/terrain/19/858484/353766.terrain b/public/terrain/19/858484/353766.terrain new file mode 100644 index 000000000..55040c36a Binary files /dev/null and b/public/terrain/19/858484/353766.terrain differ diff --git a/public/terrain/19/858484/353767.terrain b/public/terrain/19/858484/353767.terrain new file mode 100644 index 000000000..7000b1c3d Binary files /dev/null and b/public/terrain/19/858484/353767.terrain differ diff --git a/public/terrain/19/858484/353768.terrain b/public/terrain/19/858484/353768.terrain new file mode 100644 index 000000000..f44239e6d Binary files /dev/null and b/public/terrain/19/858484/353768.terrain differ diff --git a/public/terrain/19/858484/353769.terrain b/public/terrain/19/858484/353769.terrain new file mode 100644 index 000000000..b5f9afc53 Binary files /dev/null and b/public/terrain/19/858484/353769.terrain differ diff --git a/public/terrain/19/858484/353770.terrain b/public/terrain/19/858484/353770.terrain new file mode 100644 index 000000000..a55939168 Binary files /dev/null and b/public/terrain/19/858484/353770.terrain differ diff --git a/public/terrain/19/858484/353771.terrain b/public/terrain/19/858484/353771.terrain new file mode 100644 index 000000000..8b0c364e7 Binary files /dev/null and b/public/terrain/19/858484/353771.terrain differ diff --git a/public/terrain/19/858484/353772.terrain b/public/terrain/19/858484/353772.terrain new file mode 100644 index 000000000..075ce46f9 Binary files /dev/null and b/public/terrain/19/858484/353772.terrain differ diff --git a/public/terrain/19/858484/353773.terrain b/public/terrain/19/858484/353773.terrain new file mode 100644 index 000000000..bd4447ed9 Binary files /dev/null and b/public/terrain/19/858484/353773.terrain differ diff --git a/public/terrain/19/858484/353774.terrain b/public/terrain/19/858484/353774.terrain new file mode 100644 index 000000000..fc6620b0a Binary files /dev/null and b/public/terrain/19/858484/353774.terrain differ diff --git a/public/terrain/19/858484/353775.terrain b/public/terrain/19/858484/353775.terrain new file mode 100644 index 000000000..94f9f20bc Binary files /dev/null and b/public/terrain/19/858484/353775.terrain differ diff --git a/public/terrain/19/858484/353776.terrain b/public/terrain/19/858484/353776.terrain new file mode 100644 index 000000000..fd1b90d39 Binary files /dev/null and b/public/terrain/19/858484/353776.terrain differ diff --git a/public/terrain/19/858484/353777.terrain b/public/terrain/19/858484/353777.terrain new file mode 100644 index 000000000..23e545606 Binary files /dev/null and b/public/terrain/19/858484/353777.terrain differ diff --git a/public/terrain/19/858484/353778.terrain b/public/terrain/19/858484/353778.terrain new file mode 100644 index 000000000..a8e6e2ef4 Binary files /dev/null and b/public/terrain/19/858484/353778.terrain differ diff --git a/public/terrain/19/858484/353779.terrain b/public/terrain/19/858484/353779.terrain new file mode 100644 index 000000000..23f9c34ef Binary files /dev/null and b/public/terrain/19/858484/353779.terrain differ diff --git a/public/terrain/19/858484/353780.terrain b/public/terrain/19/858484/353780.terrain new file mode 100644 index 000000000..5c3e61b82 Binary files /dev/null and b/public/terrain/19/858484/353780.terrain differ diff --git a/public/terrain/19/858484/353781.terrain b/public/terrain/19/858484/353781.terrain new file mode 100644 index 000000000..48e28e8af Binary files /dev/null and b/public/terrain/19/858484/353781.terrain differ diff --git a/public/terrain/19/858484/353782.terrain b/public/terrain/19/858484/353782.terrain new file mode 100644 index 000000000..454ed0e80 Binary files /dev/null and b/public/terrain/19/858484/353782.terrain differ diff --git a/public/terrain/19/858484/353783.terrain b/public/terrain/19/858484/353783.terrain new file mode 100644 index 000000000..2e1ac93ce Binary files /dev/null and b/public/terrain/19/858484/353783.terrain differ diff --git a/public/terrain/19/858484/353784.terrain b/public/terrain/19/858484/353784.terrain new file mode 100644 index 000000000..cf440cd5d Binary files /dev/null and b/public/terrain/19/858484/353784.terrain differ diff --git a/public/terrain/19/858484/353785.terrain b/public/terrain/19/858484/353785.terrain new file mode 100644 index 000000000..8d6c3b3a3 Binary files /dev/null and b/public/terrain/19/858484/353785.terrain differ diff --git a/public/terrain/19/858484/353786.terrain b/public/terrain/19/858484/353786.terrain new file mode 100644 index 000000000..20b4bcf82 Binary files /dev/null and b/public/terrain/19/858484/353786.terrain differ diff --git a/public/terrain/19/858484/353787.terrain b/public/terrain/19/858484/353787.terrain new file mode 100644 index 000000000..46c6bd6ed Binary files /dev/null and b/public/terrain/19/858484/353787.terrain differ diff --git a/public/terrain/19/858484/353788.terrain b/public/terrain/19/858484/353788.terrain new file mode 100644 index 000000000..d68d9ef68 Binary files /dev/null and b/public/terrain/19/858484/353788.terrain differ diff --git a/public/terrain/19/858484/353789.terrain b/public/terrain/19/858484/353789.terrain new file mode 100644 index 000000000..89f1b36b6 Binary files /dev/null and b/public/terrain/19/858484/353789.terrain differ diff --git a/public/terrain/19/858484/353790.terrain b/public/terrain/19/858484/353790.terrain new file mode 100644 index 000000000..3571f9829 Binary files /dev/null and b/public/terrain/19/858484/353790.terrain differ diff --git a/public/terrain/19/858484/353791.terrain b/public/terrain/19/858484/353791.terrain new file mode 100644 index 000000000..02ccebc7f Binary files /dev/null and b/public/terrain/19/858484/353791.terrain differ diff --git a/public/terrain/19/858484/353792.terrain b/public/terrain/19/858484/353792.terrain new file mode 100644 index 000000000..b9dd3ef87 Binary files /dev/null and b/public/terrain/19/858484/353792.terrain differ diff --git a/public/terrain/19/858484/353793.terrain b/public/terrain/19/858484/353793.terrain new file mode 100644 index 000000000..cb59ad644 Binary files /dev/null and b/public/terrain/19/858484/353793.terrain differ diff --git a/public/terrain/19/858484/353794.terrain b/public/terrain/19/858484/353794.terrain new file mode 100644 index 000000000..f1f9a9762 Binary files /dev/null and b/public/terrain/19/858484/353794.terrain differ diff --git a/public/terrain/19/858484/353795.terrain b/public/terrain/19/858484/353795.terrain new file mode 100644 index 000000000..dbf2a83bd Binary files /dev/null and b/public/terrain/19/858484/353795.terrain differ diff --git a/public/terrain/19/858484/353796.terrain b/public/terrain/19/858484/353796.terrain new file mode 100644 index 000000000..30960f97b Binary files /dev/null and b/public/terrain/19/858484/353796.terrain differ diff --git a/public/terrain/19/858484/353797.terrain b/public/terrain/19/858484/353797.terrain new file mode 100644 index 000000000..ea54289d1 Binary files /dev/null and b/public/terrain/19/858484/353797.terrain differ diff --git a/public/terrain/19/858484/353798.terrain b/public/terrain/19/858484/353798.terrain new file mode 100644 index 000000000..c893b0b2f Binary files /dev/null and b/public/terrain/19/858484/353798.terrain differ diff --git a/public/terrain/19/858484/353799.terrain b/public/terrain/19/858484/353799.terrain new file mode 100644 index 000000000..782fc744f Binary files /dev/null and b/public/terrain/19/858484/353799.terrain differ diff --git a/public/terrain/19/858484/353800.terrain b/public/terrain/19/858484/353800.terrain new file mode 100644 index 000000000..537dd6e46 Binary files /dev/null and b/public/terrain/19/858484/353800.terrain differ diff --git a/public/terrain/19/858484/353801.terrain b/public/terrain/19/858484/353801.terrain new file mode 100644 index 000000000..f080acc97 Binary files /dev/null and b/public/terrain/19/858484/353801.terrain differ diff --git a/public/terrain/19/858484/353802.terrain b/public/terrain/19/858484/353802.terrain new file mode 100644 index 000000000..06b2e663f Binary files /dev/null and b/public/terrain/19/858484/353802.terrain differ diff --git a/public/terrain/19/858484/353803.terrain b/public/terrain/19/858484/353803.terrain new file mode 100644 index 000000000..d67118d1b Binary files /dev/null and b/public/terrain/19/858484/353803.terrain differ diff --git a/public/terrain/19/858484/353804.terrain b/public/terrain/19/858484/353804.terrain new file mode 100644 index 000000000..905675653 Binary files /dev/null and b/public/terrain/19/858484/353804.terrain differ diff --git a/public/terrain/19/858484/353805.terrain b/public/terrain/19/858484/353805.terrain new file mode 100644 index 000000000..342db5808 Binary files /dev/null and b/public/terrain/19/858484/353805.terrain differ diff --git a/public/terrain/19/858484/353806.terrain b/public/terrain/19/858484/353806.terrain new file mode 100644 index 000000000..bc2aa526e Binary files /dev/null and b/public/terrain/19/858484/353806.terrain differ diff --git a/public/terrain/19/858484/353807.terrain b/public/terrain/19/858484/353807.terrain new file mode 100644 index 000000000..82e74e4e5 Binary files /dev/null and b/public/terrain/19/858484/353807.terrain differ diff --git a/public/terrain/19/858484/353808.terrain b/public/terrain/19/858484/353808.terrain new file mode 100644 index 000000000..3db13e670 Binary files /dev/null and b/public/terrain/19/858484/353808.terrain differ diff --git a/public/terrain/19/858484/353809.terrain b/public/terrain/19/858484/353809.terrain new file mode 100644 index 000000000..5da1d2deb Binary files /dev/null and b/public/terrain/19/858484/353809.terrain differ diff --git a/public/terrain/19/858484/353810.terrain b/public/terrain/19/858484/353810.terrain new file mode 100644 index 000000000..5897f6721 Binary files /dev/null and b/public/terrain/19/858484/353810.terrain differ diff --git a/public/terrain/19/858484/353811.terrain b/public/terrain/19/858484/353811.terrain new file mode 100644 index 000000000..cb7cbab32 Binary files /dev/null and b/public/terrain/19/858484/353811.terrain differ diff --git a/public/terrain/19/858484/353812.terrain b/public/terrain/19/858484/353812.terrain new file mode 100644 index 000000000..7b516503c Binary files /dev/null and b/public/terrain/19/858484/353812.terrain differ diff --git a/public/terrain/19/858484/353813.terrain b/public/terrain/19/858484/353813.terrain new file mode 100644 index 000000000..05ec70e60 Binary files /dev/null and b/public/terrain/19/858484/353813.terrain differ diff --git a/public/terrain/19/858484/353814.terrain b/public/terrain/19/858484/353814.terrain new file mode 100644 index 000000000..68a765340 Binary files /dev/null and b/public/terrain/19/858484/353814.terrain differ diff --git a/public/terrain/19/858484/353815.terrain b/public/terrain/19/858484/353815.terrain new file mode 100644 index 000000000..3318a90e5 Binary files /dev/null and b/public/terrain/19/858484/353815.terrain differ diff --git a/public/terrain/19/858484/353816.terrain b/public/terrain/19/858484/353816.terrain new file mode 100644 index 000000000..f9b74570a Binary files /dev/null and b/public/terrain/19/858484/353816.terrain differ diff --git a/public/terrain/19/858484/353817.terrain b/public/terrain/19/858484/353817.terrain new file mode 100644 index 000000000..fe5a41151 Binary files /dev/null and b/public/terrain/19/858484/353817.terrain differ diff --git a/public/terrain/19/858484/353818.terrain b/public/terrain/19/858484/353818.terrain new file mode 100644 index 000000000..61f9aa2fd Binary files /dev/null and b/public/terrain/19/858484/353818.terrain differ diff --git a/public/terrain/19/858484/353819.terrain b/public/terrain/19/858484/353819.terrain new file mode 100644 index 000000000..bd40cf796 Binary files /dev/null and b/public/terrain/19/858484/353819.terrain differ diff --git a/public/terrain/19/858484/353820.terrain b/public/terrain/19/858484/353820.terrain new file mode 100644 index 000000000..002406f87 Binary files /dev/null and b/public/terrain/19/858484/353820.terrain differ diff --git a/public/terrain/19/858484/353821.terrain b/public/terrain/19/858484/353821.terrain new file mode 100644 index 000000000..8e814ebc2 Binary files /dev/null and b/public/terrain/19/858484/353821.terrain differ diff --git a/public/terrain/19/858484/353822.terrain b/public/terrain/19/858484/353822.terrain new file mode 100644 index 000000000..edd044b81 Binary files /dev/null and b/public/terrain/19/858484/353822.terrain differ diff --git a/public/terrain/19/858484/353823.terrain b/public/terrain/19/858484/353823.terrain new file mode 100644 index 000000000..b6fe9450d Binary files /dev/null and b/public/terrain/19/858484/353823.terrain differ diff --git a/public/terrain/19/858484/353824.terrain b/public/terrain/19/858484/353824.terrain new file mode 100644 index 000000000..60942753a Binary files /dev/null and b/public/terrain/19/858484/353824.terrain differ diff --git a/public/terrain/19/858484/353825.terrain b/public/terrain/19/858484/353825.terrain new file mode 100644 index 000000000..d28edd0d2 Binary files /dev/null and b/public/terrain/19/858484/353825.terrain differ diff --git a/public/terrain/19/858484/353826.terrain b/public/terrain/19/858484/353826.terrain new file mode 100644 index 000000000..a70155028 Binary files /dev/null and b/public/terrain/19/858484/353826.terrain differ diff --git a/public/terrain/19/858484/353827.terrain b/public/terrain/19/858484/353827.terrain new file mode 100644 index 000000000..6273b6ac6 Binary files /dev/null and b/public/terrain/19/858484/353827.terrain differ diff --git a/public/terrain/19/858484/353828.terrain b/public/terrain/19/858484/353828.terrain new file mode 100644 index 000000000..1bb70e805 Binary files /dev/null and b/public/terrain/19/858484/353828.terrain differ diff --git a/public/terrain/19/858484/353829.terrain b/public/terrain/19/858484/353829.terrain new file mode 100644 index 000000000..6ae1fdcf3 Binary files /dev/null and b/public/terrain/19/858484/353829.terrain differ diff --git a/public/terrain/19/858484/353830.terrain b/public/terrain/19/858484/353830.terrain new file mode 100644 index 000000000..9ff93c5e3 Binary files /dev/null and b/public/terrain/19/858484/353830.terrain differ diff --git a/public/terrain/19/858484/353831.terrain b/public/terrain/19/858484/353831.terrain new file mode 100644 index 000000000..e0e1fed10 Binary files /dev/null and b/public/terrain/19/858484/353831.terrain differ diff --git a/public/terrain/19/858484/353832.terrain b/public/terrain/19/858484/353832.terrain new file mode 100644 index 000000000..d830d1588 Binary files /dev/null and b/public/terrain/19/858484/353832.terrain differ diff --git a/public/terrain/19/858484/353833.terrain b/public/terrain/19/858484/353833.terrain new file mode 100644 index 000000000..890bb034b Binary files /dev/null and b/public/terrain/19/858484/353833.terrain differ diff --git a/public/terrain/19/858484/353834.terrain b/public/terrain/19/858484/353834.terrain new file mode 100644 index 000000000..8f29926a7 Binary files /dev/null and b/public/terrain/19/858484/353834.terrain differ diff --git a/public/terrain/19/858484/353835.terrain b/public/terrain/19/858484/353835.terrain new file mode 100644 index 000000000..abf2d2e44 Binary files /dev/null and b/public/terrain/19/858484/353835.terrain differ diff --git a/public/terrain/19/858484/353836.terrain b/public/terrain/19/858484/353836.terrain new file mode 100644 index 000000000..88b57a122 Binary files /dev/null and b/public/terrain/19/858484/353836.terrain differ diff --git a/public/terrain/19/858484/353837.terrain b/public/terrain/19/858484/353837.terrain new file mode 100644 index 000000000..4e9c79262 Binary files /dev/null and b/public/terrain/19/858484/353837.terrain differ diff --git a/public/terrain/19/858484/353838.terrain b/public/terrain/19/858484/353838.terrain new file mode 100644 index 000000000..c590ac473 Binary files /dev/null and b/public/terrain/19/858484/353838.terrain differ diff --git a/public/terrain/19/858484/353839.terrain b/public/terrain/19/858484/353839.terrain new file mode 100644 index 000000000..10af3947a Binary files /dev/null and b/public/terrain/19/858484/353839.terrain differ diff --git a/public/terrain/19/858484/353840.terrain b/public/terrain/19/858484/353840.terrain new file mode 100644 index 000000000..34f7ded8f Binary files /dev/null and b/public/terrain/19/858484/353840.terrain differ diff --git a/public/terrain/19/858484/353841.terrain b/public/terrain/19/858484/353841.terrain new file mode 100644 index 000000000..e3821958d Binary files /dev/null and b/public/terrain/19/858484/353841.terrain differ diff --git a/public/terrain/19/858484/353842.terrain b/public/terrain/19/858484/353842.terrain new file mode 100644 index 000000000..7663b9488 Binary files /dev/null and b/public/terrain/19/858484/353842.terrain differ diff --git a/public/terrain/19/858484/353843.terrain b/public/terrain/19/858484/353843.terrain new file mode 100644 index 000000000..b9ff0afe5 Binary files /dev/null and b/public/terrain/19/858484/353843.terrain differ diff --git a/public/terrain/19/858484/353844.terrain b/public/terrain/19/858484/353844.terrain new file mode 100644 index 000000000..2dcc47048 Binary files /dev/null and b/public/terrain/19/858484/353844.terrain differ diff --git a/public/terrain/19/858484/353845.terrain b/public/terrain/19/858484/353845.terrain new file mode 100644 index 000000000..b4a291bf3 Binary files /dev/null and b/public/terrain/19/858484/353845.terrain differ diff --git a/public/terrain/19/858484/353846.terrain b/public/terrain/19/858484/353846.terrain new file mode 100644 index 000000000..a8d4ea6f8 Binary files /dev/null and b/public/terrain/19/858484/353846.terrain differ diff --git a/public/terrain/19/858484/353847.terrain b/public/terrain/19/858484/353847.terrain new file mode 100644 index 000000000..df8d01181 Binary files /dev/null and b/public/terrain/19/858484/353847.terrain differ diff --git a/public/terrain/19/858484/353848.terrain b/public/terrain/19/858484/353848.terrain new file mode 100644 index 000000000..221616bd8 Binary files /dev/null and b/public/terrain/19/858484/353848.terrain differ diff --git a/public/terrain/19/858484/353849.terrain b/public/terrain/19/858484/353849.terrain new file mode 100644 index 000000000..5bb81598e Binary files /dev/null and b/public/terrain/19/858484/353849.terrain differ diff --git a/public/terrain/19/858484/353850.terrain b/public/terrain/19/858484/353850.terrain new file mode 100644 index 000000000..cbeb2fb94 Binary files /dev/null and b/public/terrain/19/858484/353850.terrain differ diff --git a/public/terrain/19/858484/353851.terrain b/public/terrain/19/858484/353851.terrain new file mode 100644 index 000000000..50581fa7d Binary files /dev/null and b/public/terrain/19/858484/353851.terrain differ diff --git a/public/terrain/19/858484/353852.terrain b/public/terrain/19/858484/353852.terrain new file mode 100644 index 000000000..bd2b859b8 Binary files /dev/null and b/public/terrain/19/858484/353852.terrain differ diff --git a/public/terrain/19/858484/353853.terrain b/public/terrain/19/858484/353853.terrain new file mode 100644 index 000000000..a688210e6 Binary files /dev/null and b/public/terrain/19/858484/353853.terrain differ diff --git a/public/terrain/19/858484/353854.terrain b/public/terrain/19/858484/353854.terrain new file mode 100644 index 000000000..b10870a70 Binary files /dev/null and b/public/terrain/19/858484/353854.terrain differ diff --git a/public/terrain/19/858484/353855.terrain b/public/terrain/19/858484/353855.terrain new file mode 100644 index 000000000..aa50291bc Binary files /dev/null and b/public/terrain/19/858484/353855.terrain differ diff --git a/public/terrain/19/858484/353856.terrain b/public/terrain/19/858484/353856.terrain new file mode 100644 index 000000000..cbbdce0c3 Binary files /dev/null and b/public/terrain/19/858484/353856.terrain differ diff --git a/public/terrain/19/858484/353857.terrain b/public/terrain/19/858484/353857.terrain new file mode 100644 index 000000000..45d8e1091 Binary files /dev/null and b/public/terrain/19/858484/353857.terrain differ diff --git a/public/terrain/19/858484/353858.terrain b/public/terrain/19/858484/353858.terrain new file mode 100644 index 000000000..13b9fb044 Binary files /dev/null and b/public/terrain/19/858484/353858.terrain differ diff --git a/public/terrain/19/858484/353859.terrain b/public/terrain/19/858484/353859.terrain new file mode 100644 index 000000000..6557ac650 Binary files /dev/null and b/public/terrain/19/858484/353859.terrain differ diff --git a/public/terrain/19/858484/353860.terrain b/public/terrain/19/858484/353860.terrain new file mode 100644 index 000000000..209fc822d Binary files /dev/null and b/public/terrain/19/858484/353860.terrain differ diff --git a/public/terrain/19/858484/353861.terrain b/public/terrain/19/858484/353861.terrain new file mode 100644 index 000000000..93b388e5c Binary files /dev/null and b/public/terrain/19/858484/353861.terrain differ diff --git a/public/terrain/19/858484/353862.terrain b/public/terrain/19/858484/353862.terrain new file mode 100644 index 000000000..129903e2b Binary files /dev/null and b/public/terrain/19/858484/353862.terrain differ diff --git a/public/terrain/19/858484/353863.terrain b/public/terrain/19/858484/353863.terrain new file mode 100644 index 000000000..771c90cb3 Binary files /dev/null and b/public/terrain/19/858484/353863.terrain differ diff --git a/public/terrain/19/858484/353864.terrain b/public/terrain/19/858484/353864.terrain new file mode 100644 index 000000000..087919ed0 Binary files /dev/null and b/public/terrain/19/858484/353864.terrain differ diff --git a/public/terrain/19/858484/353865.terrain b/public/terrain/19/858484/353865.terrain new file mode 100644 index 000000000..6a9d99efa Binary files /dev/null and b/public/terrain/19/858484/353865.terrain differ diff --git a/public/terrain/19/858484/353866.terrain b/public/terrain/19/858484/353866.terrain new file mode 100644 index 000000000..fc7be5941 Binary files /dev/null and b/public/terrain/19/858484/353866.terrain differ diff --git a/public/terrain/19/858484/353867.terrain b/public/terrain/19/858484/353867.terrain new file mode 100644 index 000000000..9a28fc0dc Binary files /dev/null and b/public/terrain/19/858484/353867.terrain differ diff --git a/public/terrain/19/858484/353868.terrain b/public/terrain/19/858484/353868.terrain new file mode 100644 index 000000000..24bdf1c90 Binary files /dev/null and b/public/terrain/19/858484/353868.terrain differ diff --git a/public/terrain/19/858484/353869.terrain b/public/terrain/19/858484/353869.terrain new file mode 100644 index 000000000..161efb914 Binary files /dev/null and b/public/terrain/19/858484/353869.terrain differ diff --git a/public/terrain/19/858484/353870.terrain b/public/terrain/19/858484/353870.terrain new file mode 100644 index 000000000..1a62a68bf Binary files /dev/null and b/public/terrain/19/858484/353870.terrain differ diff --git a/public/terrain/19/858484/353871.terrain b/public/terrain/19/858484/353871.terrain new file mode 100644 index 000000000..dbabf3517 Binary files /dev/null and b/public/terrain/19/858484/353871.terrain differ diff --git a/public/terrain/19/858484/353872.terrain b/public/terrain/19/858484/353872.terrain new file mode 100644 index 000000000..5fbf9f38a Binary files /dev/null and b/public/terrain/19/858484/353872.terrain differ diff --git a/public/terrain/19/858484/353873.terrain b/public/terrain/19/858484/353873.terrain new file mode 100644 index 000000000..7124bf072 Binary files /dev/null and b/public/terrain/19/858484/353873.terrain differ diff --git a/public/terrain/19/858484/353874.terrain b/public/terrain/19/858484/353874.terrain new file mode 100644 index 000000000..9c13a274d Binary files /dev/null and b/public/terrain/19/858484/353874.terrain differ diff --git a/public/terrain/19/858484/353875.terrain b/public/terrain/19/858484/353875.terrain new file mode 100644 index 000000000..bcc6378f2 Binary files /dev/null and b/public/terrain/19/858484/353875.terrain differ diff --git a/public/terrain/19/858484/353876.terrain b/public/terrain/19/858484/353876.terrain new file mode 100644 index 000000000..d2e504054 Binary files /dev/null and b/public/terrain/19/858484/353876.terrain differ diff --git a/public/terrain/19/858484/353877.terrain b/public/terrain/19/858484/353877.terrain new file mode 100644 index 000000000..8ea209a9a Binary files /dev/null and b/public/terrain/19/858484/353877.terrain differ diff --git a/public/terrain/19/858484/353878.terrain b/public/terrain/19/858484/353878.terrain new file mode 100644 index 000000000..05fceb68d Binary files /dev/null and b/public/terrain/19/858484/353878.terrain differ diff --git a/public/terrain/19/858484/353879.terrain b/public/terrain/19/858484/353879.terrain new file mode 100644 index 000000000..e8f13630b Binary files /dev/null and b/public/terrain/19/858484/353879.terrain differ diff --git a/public/terrain/19/858484/353880.terrain b/public/terrain/19/858484/353880.terrain new file mode 100644 index 000000000..652911854 Binary files /dev/null and b/public/terrain/19/858484/353880.terrain differ diff --git a/public/terrain/19/858484/353881.terrain b/public/terrain/19/858484/353881.terrain new file mode 100644 index 000000000..fb7f24938 Binary files /dev/null and b/public/terrain/19/858484/353881.terrain differ diff --git a/public/terrain/19/858484/353882.terrain b/public/terrain/19/858484/353882.terrain new file mode 100644 index 000000000..5bec5abf5 Binary files /dev/null and b/public/terrain/19/858484/353882.terrain differ diff --git a/public/terrain/19/858484/353883.terrain b/public/terrain/19/858484/353883.terrain new file mode 100644 index 000000000..2ffd6dc36 Binary files /dev/null and b/public/terrain/19/858484/353883.terrain differ diff --git a/public/terrain/19/858484/353884.terrain b/public/terrain/19/858484/353884.terrain new file mode 100644 index 000000000..013ef0098 Binary files /dev/null and b/public/terrain/19/858484/353884.terrain differ diff --git a/public/terrain/19/858484/353885.terrain b/public/terrain/19/858484/353885.terrain new file mode 100644 index 000000000..edb220672 Binary files /dev/null and b/public/terrain/19/858484/353885.terrain differ diff --git a/public/terrain/19/858484/353886.terrain b/public/terrain/19/858484/353886.terrain new file mode 100644 index 000000000..6a4ae3b8e Binary files /dev/null and b/public/terrain/19/858484/353886.terrain differ diff --git a/public/terrain/19/858484/353887.terrain b/public/terrain/19/858484/353887.terrain new file mode 100644 index 000000000..f31e8e311 Binary files /dev/null and b/public/terrain/19/858484/353887.terrain differ diff --git a/public/terrain/19/858484/353888.terrain b/public/terrain/19/858484/353888.terrain new file mode 100644 index 000000000..42d592dc7 Binary files /dev/null and b/public/terrain/19/858484/353888.terrain differ diff --git a/public/terrain/19/858484/353889.terrain b/public/terrain/19/858484/353889.terrain new file mode 100644 index 000000000..57d66445b Binary files /dev/null and b/public/terrain/19/858484/353889.terrain differ diff --git a/public/terrain/19/858484/353890.terrain b/public/terrain/19/858484/353890.terrain new file mode 100644 index 000000000..09c459f67 Binary files /dev/null and b/public/terrain/19/858484/353890.terrain differ diff --git a/public/terrain/19/858484/353891.terrain b/public/terrain/19/858484/353891.terrain new file mode 100644 index 000000000..835a56bd0 Binary files /dev/null and b/public/terrain/19/858484/353891.terrain differ diff --git a/public/terrain/19/858484/353892.terrain b/public/terrain/19/858484/353892.terrain new file mode 100644 index 000000000..845e6182e Binary files /dev/null and b/public/terrain/19/858484/353892.terrain differ diff --git a/public/terrain/19/858484/353893.terrain b/public/terrain/19/858484/353893.terrain new file mode 100644 index 000000000..c18116725 Binary files /dev/null and b/public/terrain/19/858484/353893.terrain differ diff --git a/public/terrain/19/858484/353894.terrain b/public/terrain/19/858484/353894.terrain new file mode 100644 index 000000000..e51beb2c0 Binary files /dev/null and b/public/terrain/19/858484/353894.terrain differ diff --git a/public/terrain/19/858484/353895.terrain b/public/terrain/19/858484/353895.terrain new file mode 100644 index 000000000..8e591c1ed Binary files /dev/null and b/public/terrain/19/858484/353895.terrain differ diff --git a/public/terrain/19/858484/353896.terrain b/public/terrain/19/858484/353896.terrain new file mode 100644 index 000000000..c21508e63 Binary files /dev/null and b/public/terrain/19/858484/353896.terrain differ diff --git a/public/terrain/19/858484/353897.terrain b/public/terrain/19/858484/353897.terrain new file mode 100644 index 000000000..ef4c70b1f Binary files /dev/null and b/public/terrain/19/858484/353897.terrain differ diff --git a/public/terrain/19/858484/353898.terrain b/public/terrain/19/858484/353898.terrain new file mode 100644 index 000000000..2b81841c8 Binary files /dev/null and b/public/terrain/19/858484/353898.terrain differ diff --git a/public/terrain/19/858484/353899.terrain b/public/terrain/19/858484/353899.terrain new file mode 100644 index 000000000..1c27d6cba Binary files /dev/null and b/public/terrain/19/858484/353899.terrain differ diff --git a/public/terrain/19/858484/353900.terrain b/public/terrain/19/858484/353900.terrain new file mode 100644 index 000000000..e8491fe90 Binary files /dev/null and b/public/terrain/19/858484/353900.terrain differ diff --git a/public/terrain/19/858484/353901.terrain b/public/terrain/19/858484/353901.terrain new file mode 100644 index 000000000..2ebc281e8 Binary files /dev/null and b/public/terrain/19/858484/353901.terrain differ diff --git a/public/terrain/19/858484/353902.terrain b/public/terrain/19/858484/353902.terrain new file mode 100644 index 000000000..ec4a8a60f Binary files /dev/null and b/public/terrain/19/858484/353902.terrain differ diff --git a/public/terrain/19/858484/353903.terrain b/public/terrain/19/858484/353903.terrain new file mode 100644 index 000000000..1acb2a1a0 Binary files /dev/null and b/public/terrain/19/858484/353903.terrain differ diff --git a/public/terrain/19/858484/353904.terrain b/public/terrain/19/858484/353904.terrain new file mode 100644 index 000000000..04d404757 Binary files /dev/null and b/public/terrain/19/858484/353904.terrain differ diff --git a/public/terrain/19/858484/353905.terrain b/public/terrain/19/858484/353905.terrain new file mode 100644 index 000000000..5602547bd Binary files /dev/null and b/public/terrain/19/858484/353905.terrain differ diff --git a/public/terrain/19/858484/353906.terrain b/public/terrain/19/858484/353906.terrain new file mode 100644 index 000000000..95e353bab Binary files /dev/null and b/public/terrain/19/858484/353906.terrain differ diff --git a/public/terrain/19/858484/353907.terrain b/public/terrain/19/858484/353907.terrain new file mode 100644 index 000000000..3faecf5f8 Binary files /dev/null and b/public/terrain/19/858484/353907.terrain differ diff --git a/public/terrain/19/858484/353908.terrain b/public/terrain/19/858484/353908.terrain new file mode 100644 index 000000000..6056bedf2 Binary files /dev/null and b/public/terrain/19/858484/353908.terrain differ diff --git a/public/terrain/19/858484/353909.terrain b/public/terrain/19/858484/353909.terrain new file mode 100644 index 000000000..6aa355cc5 Binary files /dev/null and b/public/terrain/19/858484/353909.terrain differ diff --git a/public/terrain/19/858484/353910.terrain b/public/terrain/19/858484/353910.terrain new file mode 100644 index 000000000..643aa43b8 Binary files /dev/null and b/public/terrain/19/858484/353910.terrain differ diff --git a/public/terrain/19/858484/353911.terrain b/public/terrain/19/858484/353911.terrain new file mode 100644 index 000000000..ce8db357a Binary files /dev/null and b/public/terrain/19/858484/353911.terrain differ diff --git a/public/terrain/19/858484/353912.terrain b/public/terrain/19/858484/353912.terrain new file mode 100644 index 000000000..14764f0f8 Binary files /dev/null and b/public/terrain/19/858484/353912.terrain differ diff --git a/public/terrain/19/858484/353913.terrain b/public/terrain/19/858484/353913.terrain new file mode 100644 index 000000000..d0990b6e6 Binary files /dev/null and b/public/terrain/19/858484/353913.terrain differ diff --git a/public/terrain/19/858484/353914.terrain b/public/terrain/19/858484/353914.terrain new file mode 100644 index 000000000..eaec15263 Binary files /dev/null and b/public/terrain/19/858484/353914.terrain differ diff --git a/public/terrain/19/858484/353915.terrain b/public/terrain/19/858484/353915.terrain new file mode 100644 index 000000000..ac3cdbcf4 Binary files /dev/null and b/public/terrain/19/858484/353915.terrain differ diff --git a/public/terrain/19/858484/353916.terrain b/public/terrain/19/858484/353916.terrain new file mode 100644 index 000000000..fa0020532 Binary files /dev/null and b/public/terrain/19/858484/353916.terrain differ diff --git a/public/terrain/19/858484/353917.terrain b/public/terrain/19/858484/353917.terrain new file mode 100644 index 000000000..2e9c168e1 Binary files /dev/null and b/public/terrain/19/858484/353917.terrain differ diff --git a/public/terrain/19/858484/353918.terrain b/public/terrain/19/858484/353918.terrain new file mode 100644 index 000000000..9dae40215 Binary files /dev/null and b/public/terrain/19/858484/353918.terrain differ diff --git a/public/terrain/19/858484/353919.terrain b/public/terrain/19/858484/353919.terrain new file mode 100644 index 000000000..15cf63c12 Binary files /dev/null and b/public/terrain/19/858484/353919.terrain differ diff --git a/public/terrain/19/858484/353920.terrain b/public/terrain/19/858484/353920.terrain new file mode 100644 index 000000000..35ec2c11d Binary files /dev/null and b/public/terrain/19/858484/353920.terrain differ diff --git a/public/terrain/19/858484/353921.terrain b/public/terrain/19/858484/353921.terrain new file mode 100644 index 000000000..c01edc92e Binary files /dev/null and b/public/terrain/19/858484/353921.terrain differ diff --git a/public/terrain/19/858484/353922.terrain b/public/terrain/19/858484/353922.terrain new file mode 100644 index 000000000..8fcd124b6 Binary files /dev/null and b/public/terrain/19/858484/353922.terrain differ diff --git a/public/terrain/19/858484/353923.terrain b/public/terrain/19/858484/353923.terrain new file mode 100644 index 000000000..fb49cb7f0 Binary files /dev/null and b/public/terrain/19/858484/353923.terrain differ diff --git a/public/terrain/19/858484/353924.terrain b/public/terrain/19/858484/353924.terrain new file mode 100644 index 000000000..dabb0d132 Binary files /dev/null and b/public/terrain/19/858484/353924.terrain differ diff --git a/public/terrain/19/858484/353925.terrain b/public/terrain/19/858484/353925.terrain new file mode 100644 index 000000000..08c3443b8 Binary files /dev/null and b/public/terrain/19/858484/353925.terrain differ diff --git a/public/terrain/19/858484/353926.terrain b/public/terrain/19/858484/353926.terrain new file mode 100644 index 000000000..56533d74d Binary files /dev/null and b/public/terrain/19/858484/353926.terrain differ diff --git a/public/terrain/19/858484/353927.terrain b/public/terrain/19/858484/353927.terrain new file mode 100644 index 000000000..be435b180 Binary files /dev/null and b/public/terrain/19/858484/353927.terrain differ diff --git a/public/terrain/19/858484/353928.terrain b/public/terrain/19/858484/353928.terrain new file mode 100644 index 000000000..2676db4ef Binary files /dev/null and b/public/terrain/19/858484/353928.terrain differ diff --git a/public/terrain/19/858484/353929.terrain b/public/terrain/19/858484/353929.terrain new file mode 100644 index 000000000..55cbcd14d Binary files /dev/null and b/public/terrain/19/858484/353929.terrain differ diff --git a/public/terrain/19/858484/353930.terrain b/public/terrain/19/858484/353930.terrain new file mode 100644 index 000000000..46edd5a32 Binary files /dev/null and b/public/terrain/19/858484/353930.terrain differ diff --git a/public/terrain/19/858484/353931.terrain b/public/terrain/19/858484/353931.terrain new file mode 100644 index 000000000..ece67ffad Binary files /dev/null and b/public/terrain/19/858484/353931.terrain differ diff --git a/public/terrain/19/858484/353932.terrain b/public/terrain/19/858484/353932.terrain new file mode 100644 index 000000000..e9307e8ef Binary files /dev/null and b/public/terrain/19/858484/353932.terrain differ diff --git a/public/terrain/19/858484/353933.terrain b/public/terrain/19/858484/353933.terrain new file mode 100644 index 000000000..2136644c1 Binary files /dev/null and b/public/terrain/19/858484/353933.terrain differ diff --git a/public/terrain/19/858484/353934.terrain b/public/terrain/19/858484/353934.terrain new file mode 100644 index 000000000..66639348a Binary files /dev/null and b/public/terrain/19/858484/353934.terrain differ diff --git a/public/terrain/19/858484/353935.terrain b/public/terrain/19/858484/353935.terrain new file mode 100644 index 000000000..e463110e0 Binary files /dev/null and b/public/terrain/19/858484/353935.terrain differ diff --git a/public/terrain/19/858484/353936.terrain b/public/terrain/19/858484/353936.terrain new file mode 100644 index 000000000..3676cde0f Binary files /dev/null and b/public/terrain/19/858484/353936.terrain differ diff --git a/public/terrain/19/858484/353937.terrain b/public/terrain/19/858484/353937.terrain new file mode 100644 index 000000000..7264c7eaf Binary files /dev/null and b/public/terrain/19/858484/353937.terrain differ diff --git a/public/terrain/19/858484/353938.terrain b/public/terrain/19/858484/353938.terrain new file mode 100644 index 000000000..2af1c66ad Binary files /dev/null and b/public/terrain/19/858484/353938.terrain differ diff --git a/public/terrain/19/858484/353939.terrain b/public/terrain/19/858484/353939.terrain new file mode 100644 index 000000000..fd4a10d64 Binary files /dev/null and b/public/terrain/19/858484/353939.terrain differ diff --git a/public/terrain/19/858484/353940.terrain b/public/terrain/19/858484/353940.terrain new file mode 100644 index 000000000..ef2998ff7 Binary files /dev/null and b/public/terrain/19/858484/353940.terrain differ diff --git a/public/terrain/19/858484/353941.terrain b/public/terrain/19/858484/353941.terrain new file mode 100644 index 000000000..e467c2caa Binary files /dev/null and b/public/terrain/19/858484/353941.terrain differ diff --git a/public/terrain/19/858484/353942.terrain b/public/terrain/19/858484/353942.terrain new file mode 100644 index 000000000..4d902de6b Binary files /dev/null and b/public/terrain/19/858484/353942.terrain differ diff --git a/public/terrain/19/858484/353943.terrain b/public/terrain/19/858484/353943.terrain new file mode 100644 index 000000000..39599a4eb Binary files /dev/null and b/public/terrain/19/858484/353943.terrain differ diff --git a/public/terrain/19/858484/353944.terrain b/public/terrain/19/858484/353944.terrain new file mode 100644 index 000000000..4c4ad9659 Binary files /dev/null and b/public/terrain/19/858484/353944.terrain differ diff --git a/public/terrain/19/858484/353945.terrain b/public/terrain/19/858484/353945.terrain new file mode 100644 index 000000000..073d8f7a5 Binary files /dev/null and b/public/terrain/19/858484/353945.terrain differ diff --git a/public/terrain/19/858484/353946.terrain b/public/terrain/19/858484/353946.terrain new file mode 100644 index 000000000..83d06e5c0 Binary files /dev/null and b/public/terrain/19/858484/353946.terrain differ diff --git a/public/terrain/19/858484/353947.terrain b/public/terrain/19/858484/353947.terrain new file mode 100644 index 000000000..084f4be4f Binary files /dev/null and b/public/terrain/19/858484/353947.terrain differ diff --git a/public/terrain/19/858484/353948.terrain b/public/terrain/19/858484/353948.terrain new file mode 100644 index 000000000..d3159cb3b Binary files /dev/null and b/public/terrain/19/858484/353948.terrain differ diff --git a/public/terrain/19/858484/353949.terrain b/public/terrain/19/858484/353949.terrain new file mode 100644 index 000000000..05608258e Binary files /dev/null and b/public/terrain/19/858484/353949.terrain differ diff --git a/public/terrain/19/858484/353950.terrain b/public/terrain/19/858484/353950.terrain new file mode 100644 index 000000000..13062ce7d Binary files /dev/null and b/public/terrain/19/858484/353950.terrain differ diff --git a/public/terrain/19/858484/353951.terrain b/public/terrain/19/858484/353951.terrain new file mode 100644 index 000000000..649a05c09 Binary files /dev/null and b/public/terrain/19/858484/353951.terrain differ diff --git a/public/terrain/19/858484/353952.terrain b/public/terrain/19/858484/353952.terrain new file mode 100644 index 000000000..fdb276d7b Binary files /dev/null and b/public/terrain/19/858484/353952.terrain differ diff --git a/public/terrain/19/858484/353953.terrain b/public/terrain/19/858484/353953.terrain new file mode 100644 index 000000000..393623741 Binary files /dev/null and b/public/terrain/19/858484/353953.terrain differ diff --git a/public/terrain/19/858484/353954.terrain b/public/terrain/19/858484/353954.terrain new file mode 100644 index 000000000..94e4d2977 Binary files /dev/null and b/public/terrain/19/858484/353954.terrain differ diff --git a/public/terrain/19/858484/353955.terrain b/public/terrain/19/858484/353955.terrain new file mode 100644 index 000000000..1069cf3c2 Binary files /dev/null and b/public/terrain/19/858484/353955.terrain differ diff --git a/public/terrain/19/858484/353956.terrain b/public/terrain/19/858484/353956.terrain new file mode 100644 index 000000000..7e0178cf3 Binary files /dev/null and b/public/terrain/19/858484/353956.terrain differ diff --git a/public/terrain/19/858484/353957.terrain b/public/terrain/19/858484/353957.terrain new file mode 100644 index 000000000..f31a963fe Binary files /dev/null and b/public/terrain/19/858484/353957.terrain differ diff --git a/public/terrain/19/858484/353958.terrain b/public/terrain/19/858484/353958.terrain new file mode 100644 index 000000000..dea63291d Binary files /dev/null and b/public/terrain/19/858484/353958.terrain differ diff --git a/public/terrain/19/858484/353959.terrain b/public/terrain/19/858484/353959.terrain new file mode 100644 index 000000000..c44abf989 Binary files /dev/null and b/public/terrain/19/858484/353959.terrain differ diff --git a/public/terrain/19/858484/353960.terrain b/public/terrain/19/858484/353960.terrain new file mode 100644 index 000000000..7fdf80deb Binary files /dev/null and b/public/terrain/19/858484/353960.terrain differ diff --git a/public/terrain/19/858484/353961.terrain b/public/terrain/19/858484/353961.terrain new file mode 100644 index 000000000..6eef2cb83 Binary files /dev/null and b/public/terrain/19/858484/353961.terrain differ diff --git a/public/terrain/19/858484/353962.terrain b/public/terrain/19/858484/353962.terrain new file mode 100644 index 000000000..2a3348ab4 Binary files /dev/null and b/public/terrain/19/858484/353962.terrain differ diff --git a/public/terrain/19/858484/353963.terrain b/public/terrain/19/858484/353963.terrain new file mode 100644 index 000000000..60ea598e5 Binary files /dev/null and b/public/terrain/19/858484/353963.terrain differ diff --git a/public/terrain/19/858484/353964.terrain b/public/terrain/19/858484/353964.terrain new file mode 100644 index 000000000..b72e7447b Binary files /dev/null and b/public/terrain/19/858484/353964.terrain differ diff --git a/public/terrain/19/858484/353965.terrain b/public/terrain/19/858484/353965.terrain new file mode 100644 index 000000000..8de3f9752 Binary files /dev/null and b/public/terrain/19/858484/353965.terrain differ diff --git a/public/terrain/19/858484/353966.terrain b/public/terrain/19/858484/353966.terrain new file mode 100644 index 000000000..b8c019cb8 Binary files /dev/null and b/public/terrain/19/858484/353966.terrain differ diff --git a/public/terrain/19/858484/353967.terrain b/public/terrain/19/858484/353967.terrain new file mode 100644 index 000000000..710ec0c6b Binary files /dev/null and b/public/terrain/19/858484/353967.terrain differ diff --git a/public/terrain/19/858484/353968.terrain b/public/terrain/19/858484/353968.terrain new file mode 100644 index 000000000..e750ae0b3 Binary files /dev/null and b/public/terrain/19/858484/353968.terrain differ diff --git a/public/terrain/19/858484/353969.terrain b/public/terrain/19/858484/353969.terrain new file mode 100644 index 000000000..2f721b685 Binary files /dev/null and b/public/terrain/19/858484/353969.terrain differ diff --git a/public/terrain/19/858484/353970.terrain b/public/terrain/19/858484/353970.terrain new file mode 100644 index 000000000..2584cb044 Binary files /dev/null and b/public/terrain/19/858484/353970.terrain differ diff --git a/public/terrain/19/858484/353971.terrain b/public/terrain/19/858484/353971.terrain new file mode 100644 index 000000000..79f9fb643 Binary files /dev/null and b/public/terrain/19/858484/353971.terrain differ diff --git a/public/terrain/19/858484/353972.terrain b/public/terrain/19/858484/353972.terrain new file mode 100644 index 000000000..0d6b31361 Binary files /dev/null and b/public/terrain/19/858484/353972.terrain differ diff --git a/public/terrain/19/858484/353973.terrain b/public/terrain/19/858484/353973.terrain new file mode 100644 index 000000000..33689ab1c Binary files /dev/null and b/public/terrain/19/858484/353973.terrain differ diff --git a/public/terrain/19/858484/353974.terrain b/public/terrain/19/858484/353974.terrain new file mode 100644 index 000000000..78ff704b6 Binary files /dev/null and b/public/terrain/19/858484/353974.terrain differ diff --git a/public/terrain/19/858484/353975.terrain b/public/terrain/19/858484/353975.terrain new file mode 100644 index 000000000..82f67e5a5 Binary files /dev/null and b/public/terrain/19/858484/353975.terrain differ diff --git a/public/terrain/19/858484/353976.terrain b/public/terrain/19/858484/353976.terrain new file mode 100644 index 000000000..16f403ff1 Binary files /dev/null and b/public/terrain/19/858484/353976.terrain differ diff --git a/public/terrain/19/858484/353977.terrain b/public/terrain/19/858484/353977.terrain new file mode 100644 index 000000000..0a9f9fd34 Binary files /dev/null and b/public/terrain/19/858484/353977.terrain differ diff --git a/public/terrain/19/858484/353978.terrain b/public/terrain/19/858484/353978.terrain new file mode 100644 index 000000000..eb70a59cf Binary files /dev/null and b/public/terrain/19/858484/353978.terrain differ diff --git a/public/terrain/19/858484/353979.terrain b/public/terrain/19/858484/353979.terrain new file mode 100644 index 000000000..fe61986a8 Binary files /dev/null and b/public/terrain/19/858484/353979.terrain differ diff --git a/public/terrain/19/858484/353980.terrain b/public/terrain/19/858484/353980.terrain new file mode 100644 index 000000000..1a4248490 Binary files /dev/null and b/public/terrain/19/858484/353980.terrain differ diff --git a/public/terrain/19/858484/353981.terrain b/public/terrain/19/858484/353981.terrain new file mode 100644 index 000000000..1bf276f14 Binary files /dev/null and b/public/terrain/19/858484/353981.terrain differ diff --git a/public/terrain/19/858484/353982.terrain b/public/terrain/19/858484/353982.terrain new file mode 100644 index 000000000..be9b498a3 Binary files /dev/null and b/public/terrain/19/858484/353982.terrain differ diff --git a/public/terrain/19/858484/353983.terrain b/public/terrain/19/858484/353983.terrain new file mode 100644 index 000000000..12ad83c07 Binary files /dev/null and b/public/terrain/19/858484/353983.terrain differ diff --git a/public/terrain/19/858484/353984.terrain b/public/terrain/19/858484/353984.terrain new file mode 100644 index 000000000..4bb4b3a5f Binary files /dev/null and b/public/terrain/19/858484/353984.terrain differ diff --git a/public/terrain/19/858484/353985.terrain b/public/terrain/19/858484/353985.terrain new file mode 100644 index 000000000..51925aad7 Binary files /dev/null and b/public/terrain/19/858484/353985.terrain differ diff --git a/public/terrain/19/858484/353986.terrain b/public/terrain/19/858484/353986.terrain new file mode 100644 index 000000000..53a9c08da Binary files /dev/null and b/public/terrain/19/858484/353986.terrain differ diff --git a/public/terrain/19/858484/353987.terrain b/public/terrain/19/858484/353987.terrain new file mode 100644 index 000000000..0ddeee6ed Binary files /dev/null and b/public/terrain/19/858484/353987.terrain differ diff --git a/public/terrain/19/858484/353988.terrain b/public/terrain/19/858484/353988.terrain new file mode 100644 index 000000000..257d7dae8 Binary files /dev/null and b/public/terrain/19/858484/353988.terrain differ diff --git a/public/terrain/19/858484/353989.terrain b/public/terrain/19/858484/353989.terrain new file mode 100644 index 000000000..f5834e56c Binary files /dev/null and b/public/terrain/19/858484/353989.terrain differ diff --git a/public/terrain/19/858484/353990.terrain b/public/terrain/19/858484/353990.terrain new file mode 100644 index 000000000..51ca87015 Binary files /dev/null and b/public/terrain/19/858484/353990.terrain differ diff --git a/public/terrain/19/858484/353991.terrain b/public/terrain/19/858484/353991.terrain new file mode 100644 index 000000000..0c1fc6790 Binary files /dev/null and b/public/terrain/19/858484/353991.terrain differ diff --git a/public/terrain/19/858484/353992.terrain b/public/terrain/19/858484/353992.terrain new file mode 100644 index 000000000..d1da68548 Binary files /dev/null and b/public/terrain/19/858484/353992.terrain differ diff --git a/public/terrain/19/858484/353993.terrain b/public/terrain/19/858484/353993.terrain new file mode 100644 index 000000000..6282d12e1 Binary files /dev/null and b/public/terrain/19/858484/353993.terrain differ diff --git a/public/terrain/19/858484/353994.terrain b/public/terrain/19/858484/353994.terrain new file mode 100644 index 000000000..fea49f4d3 Binary files /dev/null and b/public/terrain/19/858484/353994.terrain differ diff --git a/public/terrain/19/858484/353995.terrain b/public/terrain/19/858484/353995.terrain new file mode 100644 index 000000000..f3e97523a Binary files /dev/null and b/public/terrain/19/858484/353995.terrain differ diff --git a/public/terrain/19/858484/353996.terrain b/public/terrain/19/858484/353996.terrain new file mode 100644 index 000000000..bc2fd67e4 Binary files /dev/null and b/public/terrain/19/858484/353996.terrain differ diff --git a/public/terrain/19/858484/353997.terrain b/public/terrain/19/858484/353997.terrain new file mode 100644 index 000000000..a7fe4acfb Binary files /dev/null and b/public/terrain/19/858484/353997.terrain differ diff --git a/public/terrain/19/858484/353998.terrain b/public/terrain/19/858484/353998.terrain new file mode 100644 index 000000000..76872f5b1 Binary files /dev/null and b/public/terrain/19/858484/353998.terrain differ diff --git a/public/terrain/19/858484/353999.terrain b/public/terrain/19/858484/353999.terrain new file mode 100644 index 000000000..a4d66613d Binary files /dev/null and b/public/terrain/19/858484/353999.terrain differ diff --git a/public/terrain/19/858484/354000.terrain b/public/terrain/19/858484/354000.terrain new file mode 100644 index 000000000..cdf76f28f Binary files /dev/null and b/public/terrain/19/858484/354000.terrain differ diff --git a/public/terrain/19/858484/354001.terrain b/public/terrain/19/858484/354001.terrain new file mode 100644 index 000000000..35e8345da Binary files /dev/null and b/public/terrain/19/858484/354001.terrain differ diff --git a/public/terrain/19/858484/354002.terrain b/public/terrain/19/858484/354002.terrain new file mode 100644 index 000000000..034fcef95 Binary files /dev/null and b/public/terrain/19/858484/354002.terrain differ diff --git a/public/terrain/19/858484/354003.terrain b/public/terrain/19/858484/354003.terrain new file mode 100644 index 000000000..cbcfad79b Binary files /dev/null and b/public/terrain/19/858484/354003.terrain differ diff --git a/public/terrain/19/858484/354004.terrain b/public/terrain/19/858484/354004.terrain new file mode 100644 index 000000000..5e0acc3b8 Binary files /dev/null and b/public/terrain/19/858484/354004.terrain differ diff --git a/public/terrain/19/858484/354005.terrain b/public/terrain/19/858484/354005.terrain new file mode 100644 index 000000000..ede0f3544 Binary files /dev/null and b/public/terrain/19/858484/354005.terrain differ diff --git a/public/terrain/19/858484/354006.terrain b/public/terrain/19/858484/354006.terrain new file mode 100644 index 000000000..010294f9d Binary files /dev/null and b/public/terrain/19/858484/354006.terrain differ diff --git a/public/terrain/19/858484/354007.terrain b/public/terrain/19/858484/354007.terrain new file mode 100644 index 000000000..bb38b4167 Binary files /dev/null and b/public/terrain/19/858484/354007.terrain differ diff --git a/public/terrain/19/858484/354008.terrain b/public/terrain/19/858484/354008.terrain new file mode 100644 index 000000000..c93675bfc Binary files /dev/null and b/public/terrain/19/858484/354008.terrain differ diff --git a/public/terrain/19/858484/354009.terrain b/public/terrain/19/858484/354009.terrain new file mode 100644 index 000000000..7768d6e42 Binary files /dev/null and b/public/terrain/19/858484/354009.terrain differ diff --git a/public/terrain/19/858484/354010.terrain b/public/terrain/19/858484/354010.terrain new file mode 100644 index 000000000..efd63f031 Binary files /dev/null and b/public/terrain/19/858484/354010.terrain differ diff --git a/public/terrain/19/858484/354011.terrain b/public/terrain/19/858484/354011.terrain new file mode 100644 index 000000000..efe0b4136 Binary files /dev/null and b/public/terrain/19/858484/354011.terrain differ diff --git a/public/terrain/19/858484/354012.terrain b/public/terrain/19/858484/354012.terrain new file mode 100644 index 000000000..07677ba33 Binary files /dev/null and b/public/terrain/19/858484/354012.terrain differ diff --git a/public/terrain/19/858484/354013.terrain b/public/terrain/19/858484/354013.terrain new file mode 100644 index 000000000..85b6a6c64 Binary files /dev/null and b/public/terrain/19/858484/354013.terrain differ diff --git a/public/terrain/19/858484/354014.terrain b/public/terrain/19/858484/354014.terrain new file mode 100644 index 000000000..3a0b5d610 Binary files /dev/null and b/public/terrain/19/858484/354014.terrain differ diff --git a/public/terrain/19/858484/354015.terrain b/public/terrain/19/858484/354015.terrain new file mode 100644 index 000000000..d35d9204c Binary files /dev/null and b/public/terrain/19/858484/354015.terrain differ diff --git a/public/terrain/19/858484/354016.terrain b/public/terrain/19/858484/354016.terrain new file mode 100644 index 000000000..14d2177ad Binary files /dev/null and b/public/terrain/19/858484/354016.terrain differ diff --git a/public/terrain/19/858484/354017.terrain b/public/terrain/19/858484/354017.terrain new file mode 100644 index 000000000..04f9be8ee Binary files /dev/null and b/public/terrain/19/858484/354017.terrain differ diff --git a/public/terrain/19/858484/354018.terrain b/public/terrain/19/858484/354018.terrain new file mode 100644 index 000000000..6c962ea6c Binary files /dev/null and b/public/terrain/19/858484/354018.terrain differ diff --git a/public/terrain/19/858484/354019.terrain b/public/terrain/19/858484/354019.terrain new file mode 100644 index 000000000..817f32162 Binary files /dev/null and b/public/terrain/19/858484/354019.terrain differ diff --git a/public/terrain/19/858484/354020.terrain b/public/terrain/19/858484/354020.terrain new file mode 100644 index 000000000..b061393d8 Binary files /dev/null and b/public/terrain/19/858484/354020.terrain differ diff --git a/public/terrain/19/858484/354021.terrain b/public/terrain/19/858484/354021.terrain new file mode 100644 index 000000000..df121f9fe Binary files /dev/null and b/public/terrain/19/858484/354021.terrain differ diff --git a/public/terrain/19/858484/354022.terrain b/public/terrain/19/858484/354022.terrain new file mode 100644 index 000000000..8cac797e3 Binary files /dev/null and b/public/terrain/19/858484/354022.terrain differ diff --git a/public/terrain/19/858484/354023.terrain b/public/terrain/19/858484/354023.terrain new file mode 100644 index 000000000..3c2debac6 Binary files /dev/null and b/public/terrain/19/858484/354023.terrain differ diff --git a/public/terrain/19/858484/354024.terrain b/public/terrain/19/858484/354024.terrain new file mode 100644 index 000000000..f3102b193 Binary files /dev/null and b/public/terrain/19/858484/354024.terrain differ diff --git a/public/terrain/19/858484/354025.terrain b/public/terrain/19/858484/354025.terrain new file mode 100644 index 000000000..5f4607f5e Binary files /dev/null and b/public/terrain/19/858484/354025.terrain differ diff --git a/public/terrain/19/858484/354026.terrain b/public/terrain/19/858484/354026.terrain new file mode 100644 index 000000000..e5a17208c Binary files /dev/null and b/public/terrain/19/858484/354026.terrain differ diff --git a/public/terrain/19/858484/354027.terrain b/public/terrain/19/858484/354027.terrain new file mode 100644 index 000000000..b845a9d01 Binary files /dev/null and b/public/terrain/19/858484/354027.terrain differ diff --git a/public/terrain/19/858484/354028.terrain b/public/terrain/19/858484/354028.terrain new file mode 100644 index 000000000..7603a6cc6 Binary files /dev/null and b/public/terrain/19/858484/354028.terrain differ diff --git a/public/terrain/19/858484/354029.terrain b/public/terrain/19/858484/354029.terrain new file mode 100644 index 000000000..b67d49b49 Binary files /dev/null and b/public/terrain/19/858484/354029.terrain differ diff --git a/public/terrain/19/858484/354030.terrain b/public/terrain/19/858484/354030.terrain new file mode 100644 index 000000000..09f28bd32 Binary files /dev/null and b/public/terrain/19/858484/354030.terrain differ diff --git a/public/terrain/19/858484/354031.terrain b/public/terrain/19/858484/354031.terrain new file mode 100644 index 000000000..4cb651aab Binary files /dev/null and b/public/terrain/19/858484/354031.terrain differ diff --git a/public/terrain/19/858484/354032.terrain b/public/terrain/19/858484/354032.terrain new file mode 100644 index 000000000..bed426d67 Binary files /dev/null and b/public/terrain/19/858484/354032.terrain differ diff --git a/public/terrain/19/858484/354033.terrain b/public/terrain/19/858484/354033.terrain new file mode 100644 index 000000000..38db0c576 Binary files /dev/null and b/public/terrain/19/858484/354033.terrain differ diff --git a/public/terrain/19/858484/354034.terrain b/public/terrain/19/858484/354034.terrain new file mode 100644 index 000000000..9a7876ba1 Binary files /dev/null and b/public/terrain/19/858484/354034.terrain differ diff --git a/public/terrain/19/858484/354035.terrain b/public/terrain/19/858484/354035.terrain new file mode 100644 index 000000000..e6c1c5ec1 Binary files /dev/null and b/public/terrain/19/858484/354035.terrain differ diff --git a/public/terrain/19/858484/354036.terrain b/public/terrain/19/858484/354036.terrain new file mode 100644 index 000000000..21d8870a0 Binary files /dev/null and b/public/terrain/19/858484/354036.terrain differ diff --git a/public/terrain/19/858484/354037.terrain b/public/terrain/19/858484/354037.terrain new file mode 100644 index 000000000..59998b49f Binary files /dev/null and b/public/terrain/19/858484/354037.terrain differ diff --git a/public/terrain/19/858484/354038.terrain b/public/terrain/19/858484/354038.terrain new file mode 100644 index 000000000..01748f0c2 Binary files /dev/null and b/public/terrain/19/858484/354038.terrain differ diff --git a/public/terrain/19/858484/354039.terrain b/public/terrain/19/858484/354039.terrain new file mode 100644 index 000000000..46740f7da Binary files /dev/null and b/public/terrain/19/858484/354039.terrain differ diff --git a/public/terrain/19/858484/354040.terrain b/public/terrain/19/858484/354040.terrain new file mode 100644 index 000000000..2ec4f7d5d Binary files /dev/null and b/public/terrain/19/858484/354040.terrain differ diff --git a/public/terrain/19/858484/354041.terrain b/public/terrain/19/858484/354041.terrain new file mode 100644 index 000000000..a91ef0e5e Binary files /dev/null and b/public/terrain/19/858484/354041.terrain differ diff --git a/public/terrain/19/858484/354042.terrain b/public/terrain/19/858484/354042.terrain new file mode 100644 index 000000000..bc4e2d7be Binary files /dev/null and b/public/terrain/19/858484/354042.terrain differ diff --git a/public/terrain/19/858484/354043.terrain b/public/terrain/19/858484/354043.terrain new file mode 100644 index 000000000..3c3e8b8ad Binary files /dev/null and b/public/terrain/19/858484/354043.terrain differ diff --git a/public/terrain/19/858484/354044.terrain b/public/terrain/19/858484/354044.terrain new file mode 100644 index 000000000..bad8a7715 Binary files /dev/null and b/public/terrain/19/858484/354044.terrain differ diff --git a/public/terrain/19/858484/354045.terrain b/public/terrain/19/858484/354045.terrain new file mode 100644 index 000000000..ef2b377b6 Binary files /dev/null and b/public/terrain/19/858484/354045.terrain differ diff --git a/public/terrain/19/858484/354046.terrain b/public/terrain/19/858484/354046.terrain new file mode 100644 index 000000000..93a854927 Binary files /dev/null and b/public/terrain/19/858484/354046.terrain differ diff --git a/public/terrain/19/858484/354047.terrain b/public/terrain/19/858484/354047.terrain new file mode 100644 index 000000000..3ee9c734a Binary files /dev/null and b/public/terrain/19/858484/354047.terrain differ diff --git a/public/terrain/19/858484/354048.terrain b/public/terrain/19/858484/354048.terrain new file mode 100644 index 000000000..8373d960c Binary files /dev/null and b/public/terrain/19/858484/354048.terrain differ diff --git a/public/terrain/19/858484/354049.terrain b/public/terrain/19/858484/354049.terrain new file mode 100644 index 000000000..de5afb361 Binary files /dev/null and b/public/terrain/19/858484/354049.terrain differ diff --git a/public/terrain/19/858484/354050.terrain b/public/terrain/19/858484/354050.terrain new file mode 100644 index 000000000..e2297f544 Binary files /dev/null and b/public/terrain/19/858484/354050.terrain differ diff --git a/public/terrain/19/858484/354051.terrain b/public/terrain/19/858484/354051.terrain new file mode 100644 index 000000000..1b4dba814 Binary files /dev/null and b/public/terrain/19/858484/354051.terrain differ diff --git a/public/terrain/19/858484/354052.terrain b/public/terrain/19/858484/354052.terrain new file mode 100644 index 000000000..815176ed0 Binary files /dev/null and b/public/terrain/19/858484/354052.terrain differ diff --git a/public/terrain/19/858484/354053.terrain b/public/terrain/19/858484/354053.terrain new file mode 100644 index 000000000..3b1804e03 Binary files /dev/null and b/public/terrain/19/858484/354053.terrain differ diff --git a/public/terrain/19/858484/354054.terrain b/public/terrain/19/858484/354054.terrain new file mode 100644 index 000000000..af2c70838 Binary files /dev/null and b/public/terrain/19/858484/354054.terrain differ diff --git a/public/terrain/19/858484/354055.terrain b/public/terrain/19/858484/354055.terrain new file mode 100644 index 000000000..e9686308d Binary files /dev/null and b/public/terrain/19/858484/354055.terrain differ diff --git a/public/terrain/19/858484/354056.terrain b/public/terrain/19/858484/354056.terrain new file mode 100644 index 000000000..62fa91078 Binary files /dev/null and b/public/terrain/19/858484/354056.terrain differ diff --git a/public/terrain/19/858484/354057.terrain b/public/terrain/19/858484/354057.terrain new file mode 100644 index 000000000..e291672d1 Binary files /dev/null and b/public/terrain/19/858484/354057.terrain differ diff --git a/public/terrain/19/858484/354058.terrain b/public/terrain/19/858484/354058.terrain new file mode 100644 index 000000000..7572b2c3f Binary files /dev/null and b/public/terrain/19/858484/354058.terrain differ diff --git a/public/terrain/19/858484/354059.terrain b/public/terrain/19/858484/354059.terrain new file mode 100644 index 000000000..a781bc2d3 Binary files /dev/null and b/public/terrain/19/858484/354059.terrain differ diff --git a/public/terrain/19/858485/353743.terrain b/public/terrain/19/858485/353743.terrain new file mode 100644 index 000000000..8fea8b600 Binary files /dev/null and b/public/terrain/19/858485/353743.terrain differ diff --git a/public/terrain/19/858485/353744.terrain b/public/terrain/19/858485/353744.terrain new file mode 100644 index 000000000..5395f1c67 Binary files /dev/null and b/public/terrain/19/858485/353744.terrain differ diff --git a/public/terrain/19/858485/353745.terrain b/public/terrain/19/858485/353745.terrain new file mode 100644 index 000000000..74b7ba408 Binary files /dev/null and b/public/terrain/19/858485/353745.terrain differ diff --git a/public/terrain/19/858485/353746.terrain b/public/terrain/19/858485/353746.terrain new file mode 100644 index 000000000..43699f5ff Binary files /dev/null and b/public/terrain/19/858485/353746.terrain differ diff --git a/public/terrain/19/858485/353747.terrain b/public/terrain/19/858485/353747.terrain new file mode 100644 index 000000000..95e175223 Binary files /dev/null and b/public/terrain/19/858485/353747.terrain differ diff --git a/public/terrain/19/858485/353748.terrain b/public/terrain/19/858485/353748.terrain new file mode 100644 index 000000000..191c3b124 Binary files /dev/null and b/public/terrain/19/858485/353748.terrain differ diff --git a/public/terrain/19/858485/353749.terrain b/public/terrain/19/858485/353749.terrain new file mode 100644 index 000000000..15f7fa418 Binary files /dev/null and b/public/terrain/19/858485/353749.terrain differ diff --git a/public/terrain/19/858485/353750.terrain b/public/terrain/19/858485/353750.terrain new file mode 100644 index 000000000..afdf227b8 Binary files /dev/null and b/public/terrain/19/858485/353750.terrain differ diff --git a/public/terrain/19/858485/353751.terrain b/public/terrain/19/858485/353751.terrain new file mode 100644 index 000000000..963cc3e20 Binary files /dev/null and b/public/terrain/19/858485/353751.terrain differ diff --git a/public/terrain/19/858485/353752.terrain b/public/terrain/19/858485/353752.terrain new file mode 100644 index 000000000..a9673dbe1 Binary files /dev/null and b/public/terrain/19/858485/353752.terrain differ diff --git a/public/terrain/19/858485/353753.terrain b/public/terrain/19/858485/353753.terrain new file mode 100644 index 000000000..38a8023c8 Binary files /dev/null and b/public/terrain/19/858485/353753.terrain differ diff --git a/public/terrain/19/858485/353754.terrain b/public/terrain/19/858485/353754.terrain new file mode 100644 index 000000000..319d865cb Binary files /dev/null and b/public/terrain/19/858485/353754.terrain differ diff --git a/public/terrain/19/858485/353755.terrain b/public/terrain/19/858485/353755.terrain new file mode 100644 index 000000000..28a22cf13 Binary files /dev/null and b/public/terrain/19/858485/353755.terrain differ diff --git a/public/terrain/19/858485/353756.terrain b/public/terrain/19/858485/353756.terrain new file mode 100644 index 000000000..d490ebe23 Binary files /dev/null and b/public/terrain/19/858485/353756.terrain differ diff --git a/public/terrain/19/858485/353757.terrain b/public/terrain/19/858485/353757.terrain new file mode 100644 index 000000000..597a63fab Binary files /dev/null and b/public/terrain/19/858485/353757.terrain differ diff --git a/public/terrain/19/858485/353758.terrain b/public/terrain/19/858485/353758.terrain new file mode 100644 index 000000000..564b1720e Binary files /dev/null and b/public/terrain/19/858485/353758.terrain differ diff --git a/public/terrain/19/858485/353759.terrain b/public/terrain/19/858485/353759.terrain new file mode 100644 index 000000000..9ec081970 Binary files /dev/null and b/public/terrain/19/858485/353759.terrain differ diff --git a/public/terrain/19/858485/353760.terrain b/public/terrain/19/858485/353760.terrain new file mode 100644 index 000000000..13aa72b78 Binary files /dev/null and b/public/terrain/19/858485/353760.terrain differ diff --git a/public/terrain/19/858485/353761.terrain b/public/terrain/19/858485/353761.terrain new file mode 100644 index 000000000..f8bb16321 Binary files /dev/null and b/public/terrain/19/858485/353761.terrain differ diff --git a/public/terrain/19/858485/353762.terrain b/public/terrain/19/858485/353762.terrain new file mode 100644 index 000000000..05089b901 Binary files /dev/null and b/public/terrain/19/858485/353762.terrain differ diff --git a/public/terrain/19/858485/353763.terrain b/public/terrain/19/858485/353763.terrain new file mode 100644 index 000000000..19e75c653 Binary files /dev/null and b/public/terrain/19/858485/353763.terrain differ diff --git a/public/terrain/19/858485/353764.terrain b/public/terrain/19/858485/353764.terrain new file mode 100644 index 000000000..6a6ac437f Binary files /dev/null and b/public/terrain/19/858485/353764.terrain differ diff --git a/public/terrain/19/858485/353765.terrain b/public/terrain/19/858485/353765.terrain new file mode 100644 index 000000000..4dedaca1f Binary files /dev/null and b/public/terrain/19/858485/353765.terrain differ diff --git a/public/terrain/19/858485/353766.terrain b/public/terrain/19/858485/353766.terrain new file mode 100644 index 000000000..c6965376a Binary files /dev/null and b/public/terrain/19/858485/353766.terrain differ diff --git a/public/terrain/19/858485/353767.terrain b/public/terrain/19/858485/353767.terrain new file mode 100644 index 000000000..e153f92f6 Binary files /dev/null and b/public/terrain/19/858485/353767.terrain differ diff --git a/public/terrain/19/858485/353768.terrain b/public/terrain/19/858485/353768.terrain new file mode 100644 index 000000000..719e29824 Binary files /dev/null and b/public/terrain/19/858485/353768.terrain differ diff --git a/public/terrain/19/858485/353769.terrain b/public/terrain/19/858485/353769.terrain new file mode 100644 index 000000000..99a8d3e1b Binary files /dev/null and b/public/terrain/19/858485/353769.terrain differ diff --git a/public/terrain/19/858485/353770.terrain b/public/terrain/19/858485/353770.terrain new file mode 100644 index 000000000..9e7eeb9ca Binary files /dev/null and b/public/terrain/19/858485/353770.terrain differ diff --git a/public/terrain/19/858485/353771.terrain b/public/terrain/19/858485/353771.terrain new file mode 100644 index 000000000..6334531f6 Binary files /dev/null and b/public/terrain/19/858485/353771.terrain differ diff --git a/public/terrain/19/858485/353772.terrain b/public/terrain/19/858485/353772.terrain new file mode 100644 index 000000000..e5fd6935e Binary files /dev/null and b/public/terrain/19/858485/353772.terrain differ diff --git a/public/terrain/19/858485/353773.terrain b/public/terrain/19/858485/353773.terrain new file mode 100644 index 000000000..62f722eae Binary files /dev/null and b/public/terrain/19/858485/353773.terrain differ diff --git a/public/terrain/19/858485/353774.terrain b/public/terrain/19/858485/353774.terrain new file mode 100644 index 000000000..b8b1c0e40 Binary files /dev/null and b/public/terrain/19/858485/353774.terrain differ diff --git a/public/terrain/19/858485/353775.terrain b/public/terrain/19/858485/353775.terrain new file mode 100644 index 000000000..8c1babcb0 Binary files /dev/null and b/public/terrain/19/858485/353775.terrain differ diff --git a/public/terrain/19/858485/353776.terrain b/public/terrain/19/858485/353776.terrain new file mode 100644 index 000000000..614a1e524 Binary files /dev/null and b/public/terrain/19/858485/353776.terrain differ diff --git a/public/terrain/19/858485/353777.terrain b/public/terrain/19/858485/353777.terrain new file mode 100644 index 000000000..59ce8d000 Binary files /dev/null and b/public/terrain/19/858485/353777.terrain differ diff --git a/public/terrain/19/858485/353778.terrain b/public/terrain/19/858485/353778.terrain new file mode 100644 index 000000000..583a07ba1 Binary files /dev/null and b/public/terrain/19/858485/353778.terrain differ diff --git a/public/terrain/19/858485/353779.terrain b/public/terrain/19/858485/353779.terrain new file mode 100644 index 000000000..d7e60a53d Binary files /dev/null and b/public/terrain/19/858485/353779.terrain differ diff --git a/public/terrain/19/858485/353780.terrain b/public/terrain/19/858485/353780.terrain new file mode 100644 index 000000000..8a59705f8 Binary files /dev/null and b/public/terrain/19/858485/353780.terrain differ diff --git a/public/terrain/19/858485/353781.terrain b/public/terrain/19/858485/353781.terrain new file mode 100644 index 000000000..7b0d95d47 Binary files /dev/null and b/public/terrain/19/858485/353781.terrain differ diff --git a/public/terrain/19/858485/353782.terrain b/public/terrain/19/858485/353782.terrain new file mode 100644 index 000000000..48000cced Binary files /dev/null and b/public/terrain/19/858485/353782.terrain differ diff --git a/public/terrain/19/858485/353783.terrain b/public/terrain/19/858485/353783.terrain new file mode 100644 index 000000000..d895359a0 Binary files /dev/null and b/public/terrain/19/858485/353783.terrain differ diff --git a/public/terrain/19/858485/353784.terrain b/public/terrain/19/858485/353784.terrain new file mode 100644 index 000000000..80583cc6a Binary files /dev/null and b/public/terrain/19/858485/353784.terrain differ diff --git a/public/terrain/19/858485/353785.terrain b/public/terrain/19/858485/353785.terrain new file mode 100644 index 000000000..3a4ebdb9d Binary files /dev/null and b/public/terrain/19/858485/353785.terrain differ diff --git a/public/terrain/19/858485/353786.terrain b/public/terrain/19/858485/353786.terrain new file mode 100644 index 000000000..14c0a8799 Binary files /dev/null and b/public/terrain/19/858485/353786.terrain differ diff --git a/public/terrain/19/858485/353787.terrain b/public/terrain/19/858485/353787.terrain new file mode 100644 index 000000000..75bacabb8 Binary files /dev/null and b/public/terrain/19/858485/353787.terrain differ diff --git a/public/terrain/19/858485/353788.terrain b/public/terrain/19/858485/353788.terrain new file mode 100644 index 000000000..ab224250a Binary files /dev/null and b/public/terrain/19/858485/353788.terrain differ diff --git a/public/terrain/19/858485/353789.terrain b/public/terrain/19/858485/353789.terrain new file mode 100644 index 000000000..63d8e2df0 Binary files /dev/null and b/public/terrain/19/858485/353789.terrain differ diff --git a/public/terrain/19/858485/353790.terrain b/public/terrain/19/858485/353790.terrain new file mode 100644 index 000000000..6770dc023 Binary files /dev/null and b/public/terrain/19/858485/353790.terrain differ diff --git a/public/terrain/19/858485/353791.terrain b/public/terrain/19/858485/353791.terrain new file mode 100644 index 000000000..3dfa6222f Binary files /dev/null and b/public/terrain/19/858485/353791.terrain differ diff --git a/public/terrain/19/858485/353792.terrain b/public/terrain/19/858485/353792.terrain new file mode 100644 index 000000000..970c097a6 Binary files /dev/null and b/public/terrain/19/858485/353792.terrain differ diff --git a/public/terrain/19/858485/353793.terrain b/public/terrain/19/858485/353793.terrain new file mode 100644 index 000000000..67bc6e6cb Binary files /dev/null and b/public/terrain/19/858485/353793.terrain differ diff --git a/public/terrain/19/858485/353794.terrain b/public/terrain/19/858485/353794.terrain new file mode 100644 index 000000000..bef27d060 Binary files /dev/null and b/public/terrain/19/858485/353794.terrain differ diff --git a/public/terrain/19/858485/353795.terrain b/public/terrain/19/858485/353795.terrain new file mode 100644 index 000000000..65bf26480 Binary files /dev/null and b/public/terrain/19/858485/353795.terrain differ diff --git a/public/terrain/19/858485/353796.terrain b/public/terrain/19/858485/353796.terrain new file mode 100644 index 000000000..b63472bf2 Binary files /dev/null and b/public/terrain/19/858485/353796.terrain differ diff --git a/public/terrain/19/858485/353797.terrain b/public/terrain/19/858485/353797.terrain new file mode 100644 index 000000000..ae6248682 Binary files /dev/null and b/public/terrain/19/858485/353797.terrain differ diff --git a/public/terrain/19/858485/353798.terrain b/public/terrain/19/858485/353798.terrain new file mode 100644 index 000000000..303574891 Binary files /dev/null and b/public/terrain/19/858485/353798.terrain differ diff --git a/public/terrain/19/858485/353799.terrain b/public/terrain/19/858485/353799.terrain new file mode 100644 index 000000000..b6dededa0 Binary files /dev/null and b/public/terrain/19/858485/353799.terrain differ diff --git a/public/terrain/19/858485/353800.terrain b/public/terrain/19/858485/353800.terrain new file mode 100644 index 000000000..536732093 Binary files /dev/null and b/public/terrain/19/858485/353800.terrain differ diff --git a/public/terrain/19/858485/353801.terrain b/public/terrain/19/858485/353801.terrain new file mode 100644 index 000000000..25ec01a64 Binary files /dev/null and b/public/terrain/19/858485/353801.terrain differ diff --git a/public/terrain/19/858485/353802.terrain b/public/terrain/19/858485/353802.terrain new file mode 100644 index 000000000..fa9cda189 Binary files /dev/null and b/public/terrain/19/858485/353802.terrain differ diff --git a/public/terrain/19/858485/353803.terrain b/public/terrain/19/858485/353803.terrain new file mode 100644 index 000000000..983bf7980 Binary files /dev/null and b/public/terrain/19/858485/353803.terrain differ diff --git a/public/terrain/19/858485/353804.terrain b/public/terrain/19/858485/353804.terrain new file mode 100644 index 000000000..acf7eedb0 Binary files /dev/null and b/public/terrain/19/858485/353804.terrain differ diff --git a/public/terrain/19/858485/353805.terrain b/public/terrain/19/858485/353805.terrain new file mode 100644 index 000000000..f10f71e44 Binary files /dev/null and b/public/terrain/19/858485/353805.terrain differ diff --git a/public/terrain/19/858485/353806.terrain b/public/terrain/19/858485/353806.terrain new file mode 100644 index 000000000..c3c57e38a Binary files /dev/null and b/public/terrain/19/858485/353806.terrain differ diff --git a/public/terrain/19/858485/353807.terrain b/public/terrain/19/858485/353807.terrain new file mode 100644 index 000000000..55e12f446 Binary files /dev/null and b/public/terrain/19/858485/353807.terrain differ diff --git a/public/terrain/19/858485/353808.terrain b/public/terrain/19/858485/353808.terrain new file mode 100644 index 000000000..dd30f71f9 Binary files /dev/null and b/public/terrain/19/858485/353808.terrain differ diff --git a/public/terrain/19/858485/353809.terrain b/public/terrain/19/858485/353809.terrain new file mode 100644 index 000000000..ac7f6e942 Binary files /dev/null and b/public/terrain/19/858485/353809.terrain differ diff --git a/public/terrain/19/858485/353810.terrain b/public/terrain/19/858485/353810.terrain new file mode 100644 index 000000000..50c130448 Binary files /dev/null and b/public/terrain/19/858485/353810.terrain differ diff --git a/public/terrain/19/858485/353811.terrain b/public/terrain/19/858485/353811.terrain new file mode 100644 index 000000000..553f58f3d Binary files /dev/null and b/public/terrain/19/858485/353811.terrain differ diff --git a/public/terrain/19/858485/353812.terrain b/public/terrain/19/858485/353812.terrain new file mode 100644 index 000000000..50a6e1998 Binary files /dev/null and b/public/terrain/19/858485/353812.terrain differ diff --git a/public/terrain/19/858485/353813.terrain b/public/terrain/19/858485/353813.terrain new file mode 100644 index 000000000..d0444e561 Binary files /dev/null and b/public/terrain/19/858485/353813.terrain differ diff --git a/public/terrain/19/858485/353814.terrain b/public/terrain/19/858485/353814.terrain new file mode 100644 index 000000000..2b442e861 Binary files /dev/null and b/public/terrain/19/858485/353814.terrain differ diff --git a/public/terrain/19/858485/353815.terrain b/public/terrain/19/858485/353815.terrain new file mode 100644 index 000000000..e7e7b7ebe Binary files /dev/null and b/public/terrain/19/858485/353815.terrain differ diff --git a/public/terrain/19/858485/353816.terrain b/public/terrain/19/858485/353816.terrain new file mode 100644 index 000000000..90e8537b0 Binary files /dev/null and b/public/terrain/19/858485/353816.terrain differ diff --git a/public/terrain/19/858485/353817.terrain b/public/terrain/19/858485/353817.terrain new file mode 100644 index 000000000..fef87dbae Binary files /dev/null and b/public/terrain/19/858485/353817.terrain differ diff --git a/public/terrain/19/858485/353818.terrain b/public/terrain/19/858485/353818.terrain new file mode 100644 index 000000000..73cf721fb Binary files /dev/null and b/public/terrain/19/858485/353818.terrain differ diff --git a/public/terrain/19/858485/353819.terrain b/public/terrain/19/858485/353819.terrain new file mode 100644 index 000000000..7358780f4 Binary files /dev/null and b/public/terrain/19/858485/353819.terrain differ diff --git a/public/terrain/19/858485/353820.terrain b/public/terrain/19/858485/353820.terrain new file mode 100644 index 000000000..6ca92b085 Binary files /dev/null and b/public/terrain/19/858485/353820.terrain differ diff --git a/public/terrain/19/858485/353821.terrain b/public/terrain/19/858485/353821.terrain new file mode 100644 index 000000000..a74f9526e Binary files /dev/null and b/public/terrain/19/858485/353821.terrain differ diff --git a/public/terrain/19/858485/353822.terrain b/public/terrain/19/858485/353822.terrain new file mode 100644 index 000000000..bb73857fa Binary files /dev/null and b/public/terrain/19/858485/353822.terrain differ diff --git a/public/terrain/19/858485/353823.terrain b/public/terrain/19/858485/353823.terrain new file mode 100644 index 000000000..3c82b758f Binary files /dev/null and b/public/terrain/19/858485/353823.terrain differ diff --git a/public/terrain/19/858485/353824.terrain b/public/terrain/19/858485/353824.terrain new file mode 100644 index 000000000..b73edbf12 Binary files /dev/null and b/public/terrain/19/858485/353824.terrain differ diff --git a/public/terrain/19/858485/353825.terrain b/public/terrain/19/858485/353825.terrain new file mode 100644 index 000000000..e782d9bf8 Binary files /dev/null and b/public/terrain/19/858485/353825.terrain differ diff --git a/public/terrain/19/858485/353826.terrain b/public/terrain/19/858485/353826.terrain new file mode 100644 index 000000000..1b6f6080b Binary files /dev/null and b/public/terrain/19/858485/353826.terrain differ diff --git a/public/terrain/19/858485/353827.terrain b/public/terrain/19/858485/353827.terrain new file mode 100644 index 000000000..21e598583 Binary files /dev/null and b/public/terrain/19/858485/353827.terrain differ diff --git a/public/terrain/19/858485/353828.terrain b/public/terrain/19/858485/353828.terrain new file mode 100644 index 000000000..67c436f60 Binary files /dev/null and b/public/terrain/19/858485/353828.terrain differ diff --git a/public/terrain/19/858485/353829.terrain b/public/terrain/19/858485/353829.terrain new file mode 100644 index 000000000..ab8e79087 Binary files /dev/null and b/public/terrain/19/858485/353829.terrain differ diff --git a/public/terrain/19/858485/353830.terrain b/public/terrain/19/858485/353830.terrain new file mode 100644 index 000000000..34e0f6a01 Binary files /dev/null and b/public/terrain/19/858485/353830.terrain differ diff --git a/public/terrain/19/858485/353831.terrain b/public/terrain/19/858485/353831.terrain new file mode 100644 index 000000000..23664c373 Binary files /dev/null and b/public/terrain/19/858485/353831.terrain differ diff --git a/public/terrain/19/858485/353832.terrain b/public/terrain/19/858485/353832.terrain new file mode 100644 index 000000000..e30b0ab29 Binary files /dev/null and b/public/terrain/19/858485/353832.terrain differ diff --git a/public/terrain/19/858485/353833.terrain b/public/terrain/19/858485/353833.terrain new file mode 100644 index 000000000..845d1aa82 Binary files /dev/null and b/public/terrain/19/858485/353833.terrain differ diff --git a/public/terrain/19/858485/353834.terrain b/public/terrain/19/858485/353834.terrain new file mode 100644 index 000000000..b8a7e889d Binary files /dev/null and b/public/terrain/19/858485/353834.terrain differ diff --git a/public/terrain/19/858485/353835.terrain b/public/terrain/19/858485/353835.terrain new file mode 100644 index 000000000..36cefee09 Binary files /dev/null and b/public/terrain/19/858485/353835.terrain differ diff --git a/public/terrain/19/858485/353836.terrain b/public/terrain/19/858485/353836.terrain new file mode 100644 index 000000000..ea9ac33b0 Binary files /dev/null and b/public/terrain/19/858485/353836.terrain differ diff --git a/public/terrain/19/858485/353837.terrain b/public/terrain/19/858485/353837.terrain new file mode 100644 index 000000000..4abdab306 Binary files /dev/null and b/public/terrain/19/858485/353837.terrain differ diff --git a/public/terrain/19/858485/353838.terrain b/public/terrain/19/858485/353838.terrain new file mode 100644 index 000000000..29fba89d5 Binary files /dev/null and b/public/terrain/19/858485/353838.terrain differ diff --git a/public/terrain/19/858485/353839.terrain b/public/terrain/19/858485/353839.terrain new file mode 100644 index 000000000..23f4cdc8b Binary files /dev/null and b/public/terrain/19/858485/353839.terrain differ diff --git a/public/terrain/19/858485/353840.terrain b/public/terrain/19/858485/353840.terrain new file mode 100644 index 000000000..5bbf364fb Binary files /dev/null and b/public/terrain/19/858485/353840.terrain differ diff --git a/public/terrain/19/858485/353841.terrain b/public/terrain/19/858485/353841.terrain new file mode 100644 index 000000000..86c5eb15b Binary files /dev/null and b/public/terrain/19/858485/353841.terrain differ diff --git a/public/terrain/19/858485/353842.terrain b/public/terrain/19/858485/353842.terrain new file mode 100644 index 000000000..c1681f43e Binary files /dev/null and b/public/terrain/19/858485/353842.terrain differ diff --git a/public/terrain/19/858485/353843.terrain b/public/terrain/19/858485/353843.terrain new file mode 100644 index 000000000..52c2db85d Binary files /dev/null and b/public/terrain/19/858485/353843.terrain differ diff --git a/public/terrain/19/858485/353844.terrain b/public/terrain/19/858485/353844.terrain new file mode 100644 index 000000000..d36eff42e Binary files /dev/null and b/public/terrain/19/858485/353844.terrain differ diff --git a/public/terrain/19/858485/353845.terrain b/public/terrain/19/858485/353845.terrain new file mode 100644 index 000000000..36742128f Binary files /dev/null and b/public/terrain/19/858485/353845.terrain differ diff --git a/public/terrain/19/858485/353846.terrain b/public/terrain/19/858485/353846.terrain new file mode 100644 index 000000000..184788ba8 Binary files /dev/null and b/public/terrain/19/858485/353846.terrain differ diff --git a/public/terrain/19/858485/353847.terrain b/public/terrain/19/858485/353847.terrain new file mode 100644 index 000000000..b09799dd3 Binary files /dev/null and b/public/terrain/19/858485/353847.terrain differ diff --git a/public/terrain/19/858485/353848.terrain b/public/terrain/19/858485/353848.terrain new file mode 100644 index 000000000..b45663990 Binary files /dev/null and b/public/terrain/19/858485/353848.terrain differ diff --git a/public/terrain/19/858485/353849.terrain b/public/terrain/19/858485/353849.terrain new file mode 100644 index 000000000..b74dbd44c Binary files /dev/null and b/public/terrain/19/858485/353849.terrain differ diff --git a/public/terrain/19/858485/353850.terrain b/public/terrain/19/858485/353850.terrain new file mode 100644 index 000000000..a6341916d Binary files /dev/null and b/public/terrain/19/858485/353850.terrain differ diff --git a/public/terrain/19/858485/353851.terrain b/public/terrain/19/858485/353851.terrain new file mode 100644 index 000000000..0acc9f6c8 Binary files /dev/null and b/public/terrain/19/858485/353851.terrain differ diff --git a/public/terrain/19/858485/353852.terrain b/public/terrain/19/858485/353852.terrain new file mode 100644 index 000000000..c8e8bf72a Binary files /dev/null and b/public/terrain/19/858485/353852.terrain differ diff --git a/public/terrain/19/858485/353853.terrain b/public/terrain/19/858485/353853.terrain new file mode 100644 index 000000000..52be80dfe Binary files /dev/null and b/public/terrain/19/858485/353853.terrain differ diff --git a/public/terrain/19/858485/353854.terrain b/public/terrain/19/858485/353854.terrain new file mode 100644 index 000000000..6d773e2e0 Binary files /dev/null and b/public/terrain/19/858485/353854.terrain differ diff --git a/public/terrain/19/858485/353855.terrain b/public/terrain/19/858485/353855.terrain new file mode 100644 index 000000000..c2545f2ba Binary files /dev/null and b/public/terrain/19/858485/353855.terrain differ diff --git a/public/terrain/19/858485/353856.terrain b/public/terrain/19/858485/353856.terrain new file mode 100644 index 000000000..ed3cb786f Binary files /dev/null and b/public/terrain/19/858485/353856.terrain differ diff --git a/public/terrain/19/858485/353857.terrain b/public/terrain/19/858485/353857.terrain new file mode 100644 index 000000000..ca68f6bb6 Binary files /dev/null and b/public/terrain/19/858485/353857.terrain differ diff --git a/public/terrain/19/858485/353858.terrain b/public/terrain/19/858485/353858.terrain new file mode 100644 index 000000000..7d9671757 Binary files /dev/null and b/public/terrain/19/858485/353858.terrain differ diff --git a/public/terrain/19/858485/353859.terrain b/public/terrain/19/858485/353859.terrain new file mode 100644 index 000000000..93695cec2 Binary files /dev/null and b/public/terrain/19/858485/353859.terrain differ diff --git a/public/terrain/19/858485/353860.terrain b/public/terrain/19/858485/353860.terrain new file mode 100644 index 000000000..7539e21a1 Binary files /dev/null and b/public/terrain/19/858485/353860.terrain differ diff --git a/public/terrain/19/858485/353861.terrain b/public/terrain/19/858485/353861.terrain new file mode 100644 index 000000000..03b93a174 Binary files /dev/null and b/public/terrain/19/858485/353861.terrain differ diff --git a/public/terrain/19/858485/353862.terrain b/public/terrain/19/858485/353862.terrain new file mode 100644 index 000000000..e6286a524 Binary files /dev/null and b/public/terrain/19/858485/353862.terrain differ diff --git a/public/terrain/19/858485/353863.terrain b/public/terrain/19/858485/353863.terrain new file mode 100644 index 000000000..f32289273 Binary files /dev/null and b/public/terrain/19/858485/353863.terrain differ diff --git a/public/terrain/19/858485/353864.terrain b/public/terrain/19/858485/353864.terrain new file mode 100644 index 000000000..2522df96f Binary files /dev/null and b/public/terrain/19/858485/353864.terrain differ diff --git a/public/terrain/19/858485/353865.terrain b/public/terrain/19/858485/353865.terrain new file mode 100644 index 000000000..653fbbb1c Binary files /dev/null and b/public/terrain/19/858485/353865.terrain differ diff --git a/public/terrain/19/858485/353866.terrain b/public/terrain/19/858485/353866.terrain new file mode 100644 index 000000000..900616f2f Binary files /dev/null and b/public/terrain/19/858485/353866.terrain differ diff --git a/public/terrain/19/858485/353867.terrain b/public/terrain/19/858485/353867.terrain new file mode 100644 index 000000000..ecb728ccf Binary files /dev/null and b/public/terrain/19/858485/353867.terrain differ diff --git a/public/terrain/19/858485/353868.terrain b/public/terrain/19/858485/353868.terrain new file mode 100644 index 000000000..a553668cd Binary files /dev/null and b/public/terrain/19/858485/353868.terrain differ diff --git a/public/terrain/19/858485/353869.terrain b/public/terrain/19/858485/353869.terrain new file mode 100644 index 000000000..f92bed8a4 Binary files /dev/null and b/public/terrain/19/858485/353869.terrain differ diff --git a/public/terrain/19/858485/353870.terrain b/public/terrain/19/858485/353870.terrain new file mode 100644 index 000000000..3fb6bf8f8 Binary files /dev/null and b/public/terrain/19/858485/353870.terrain differ diff --git a/public/terrain/19/858485/353871.terrain b/public/terrain/19/858485/353871.terrain new file mode 100644 index 000000000..19ecffcfa Binary files /dev/null and b/public/terrain/19/858485/353871.terrain differ diff --git a/public/terrain/19/858485/353872.terrain b/public/terrain/19/858485/353872.terrain new file mode 100644 index 000000000..936bd4243 Binary files /dev/null and b/public/terrain/19/858485/353872.terrain differ diff --git a/public/terrain/19/858485/353873.terrain b/public/terrain/19/858485/353873.terrain new file mode 100644 index 000000000..e0681781c Binary files /dev/null and b/public/terrain/19/858485/353873.terrain differ diff --git a/public/terrain/19/858485/353874.terrain b/public/terrain/19/858485/353874.terrain new file mode 100644 index 000000000..c1296ce0b Binary files /dev/null and b/public/terrain/19/858485/353874.terrain differ diff --git a/public/terrain/19/858485/353875.terrain b/public/terrain/19/858485/353875.terrain new file mode 100644 index 000000000..8332e54bb Binary files /dev/null and b/public/terrain/19/858485/353875.terrain differ diff --git a/public/terrain/19/858485/353876.terrain b/public/terrain/19/858485/353876.terrain new file mode 100644 index 000000000..c041c14a9 Binary files /dev/null and b/public/terrain/19/858485/353876.terrain differ diff --git a/public/terrain/19/858485/353877.terrain b/public/terrain/19/858485/353877.terrain new file mode 100644 index 000000000..ec87742d9 Binary files /dev/null and b/public/terrain/19/858485/353877.terrain differ diff --git a/public/terrain/19/858485/353878.terrain b/public/terrain/19/858485/353878.terrain new file mode 100644 index 000000000..c305785b8 Binary files /dev/null and b/public/terrain/19/858485/353878.terrain differ diff --git a/public/terrain/19/858485/353879.terrain b/public/terrain/19/858485/353879.terrain new file mode 100644 index 000000000..825142ccf Binary files /dev/null and b/public/terrain/19/858485/353879.terrain differ diff --git a/public/terrain/19/858485/353880.terrain b/public/terrain/19/858485/353880.terrain new file mode 100644 index 000000000..7f9ab0a0e Binary files /dev/null and b/public/terrain/19/858485/353880.terrain differ diff --git a/public/terrain/19/858485/353881.terrain b/public/terrain/19/858485/353881.terrain new file mode 100644 index 000000000..fcf3292f1 Binary files /dev/null and b/public/terrain/19/858485/353881.terrain differ diff --git a/public/terrain/19/858485/353882.terrain b/public/terrain/19/858485/353882.terrain new file mode 100644 index 000000000..497d53e24 Binary files /dev/null and b/public/terrain/19/858485/353882.terrain differ diff --git a/public/terrain/19/858485/353883.terrain b/public/terrain/19/858485/353883.terrain new file mode 100644 index 000000000..1d0a7bbeb Binary files /dev/null and b/public/terrain/19/858485/353883.terrain differ diff --git a/public/terrain/19/858485/353884.terrain b/public/terrain/19/858485/353884.terrain new file mode 100644 index 000000000..95affcbb7 Binary files /dev/null and b/public/terrain/19/858485/353884.terrain differ diff --git a/public/terrain/19/858485/353885.terrain b/public/terrain/19/858485/353885.terrain new file mode 100644 index 000000000..4e46a040f Binary files /dev/null and b/public/terrain/19/858485/353885.terrain differ diff --git a/public/terrain/19/858485/353886.terrain b/public/terrain/19/858485/353886.terrain new file mode 100644 index 000000000..bc56e209e Binary files /dev/null and b/public/terrain/19/858485/353886.terrain differ diff --git a/public/terrain/19/858485/353887.terrain b/public/terrain/19/858485/353887.terrain new file mode 100644 index 000000000..4128b281e Binary files /dev/null and b/public/terrain/19/858485/353887.terrain differ diff --git a/public/terrain/19/858485/353888.terrain b/public/terrain/19/858485/353888.terrain new file mode 100644 index 000000000..30b9ec066 Binary files /dev/null and b/public/terrain/19/858485/353888.terrain differ diff --git a/public/terrain/19/858485/353889.terrain b/public/terrain/19/858485/353889.terrain new file mode 100644 index 000000000..834349885 Binary files /dev/null and b/public/terrain/19/858485/353889.terrain differ diff --git a/public/terrain/19/858485/353890.terrain b/public/terrain/19/858485/353890.terrain new file mode 100644 index 000000000..fb3c33d01 Binary files /dev/null and b/public/terrain/19/858485/353890.terrain differ diff --git a/public/terrain/19/858485/353891.terrain b/public/terrain/19/858485/353891.terrain new file mode 100644 index 000000000..d5b58ba14 Binary files /dev/null and b/public/terrain/19/858485/353891.terrain differ diff --git a/public/terrain/19/858485/353892.terrain b/public/terrain/19/858485/353892.terrain new file mode 100644 index 000000000..313b11816 Binary files /dev/null and b/public/terrain/19/858485/353892.terrain differ diff --git a/public/terrain/19/858485/353893.terrain b/public/terrain/19/858485/353893.terrain new file mode 100644 index 000000000..8338a47a1 Binary files /dev/null and b/public/terrain/19/858485/353893.terrain differ diff --git a/public/terrain/19/858485/353894.terrain b/public/terrain/19/858485/353894.terrain new file mode 100644 index 000000000..08ebfac78 Binary files /dev/null and b/public/terrain/19/858485/353894.terrain differ diff --git a/public/terrain/19/858485/353895.terrain b/public/terrain/19/858485/353895.terrain new file mode 100644 index 000000000..3c41f81da Binary files /dev/null and b/public/terrain/19/858485/353895.terrain differ diff --git a/public/terrain/19/858485/353896.terrain b/public/terrain/19/858485/353896.terrain new file mode 100644 index 000000000..f23210799 Binary files /dev/null and b/public/terrain/19/858485/353896.terrain differ diff --git a/public/terrain/19/858485/353897.terrain b/public/terrain/19/858485/353897.terrain new file mode 100644 index 000000000..67c016794 Binary files /dev/null and b/public/terrain/19/858485/353897.terrain differ diff --git a/public/terrain/19/858485/353898.terrain b/public/terrain/19/858485/353898.terrain new file mode 100644 index 000000000..047b02e68 Binary files /dev/null and b/public/terrain/19/858485/353898.terrain differ diff --git a/public/terrain/19/858485/353899.terrain b/public/terrain/19/858485/353899.terrain new file mode 100644 index 000000000..6c7274572 Binary files /dev/null and b/public/terrain/19/858485/353899.terrain differ diff --git a/public/terrain/19/858485/353900.terrain b/public/terrain/19/858485/353900.terrain new file mode 100644 index 000000000..a86ee8906 Binary files /dev/null and b/public/terrain/19/858485/353900.terrain differ diff --git a/public/terrain/19/858485/353901.terrain b/public/terrain/19/858485/353901.terrain new file mode 100644 index 000000000..01ba38edd Binary files /dev/null and b/public/terrain/19/858485/353901.terrain differ diff --git a/public/terrain/19/858485/353902.terrain b/public/terrain/19/858485/353902.terrain new file mode 100644 index 000000000..7bd47089a Binary files /dev/null and b/public/terrain/19/858485/353902.terrain differ diff --git a/public/terrain/19/858485/353903.terrain b/public/terrain/19/858485/353903.terrain new file mode 100644 index 000000000..acb68d11c Binary files /dev/null and b/public/terrain/19/858485/353903.terrain differ diff --git a/public/terrain/19/858485/353904.terrain b/public/terrain/19/858485/353904.terrain new file mode 100644 index 000000000..47894c8e9 Binary files /dev/null and b/public/terrain/19/858485/353904.terrain differ diff --git a/public/terrain/19/858485/353905.terrain b/public/terrain/19/858485/353905.terrain new file mode 100644 index 000000000..a0adfd691 Binary files /dev/null and b/public/terrain/19/858485/353905.terrain differ diff --git a/public/terrain/19/858485/353906.terrain b/public/terrain/19/858485/353906.terrain new file mode 100644 index 000000000..581fae653 Binary files /dev/null and b/public/terrain/19/858485/353906.terrain differ diff --git a/public/terrain/19/858485/353907.terrain b/public/terrain/19/858485/353907.terrain new file mode 100644 index 000000000..cc83f40b8 Binary files /dev/null and b/public/terrain/19/858485/353907.terrain differ diff --git a/public/terrain/19/858485/353908.terrain b/public/terrain/19/858485/353908.terrain new file mode 100644 index 000000000..047e0bfa8 Binary files /dev/null and b/public/terrain/19/858485/353908.terrain differ diff --git a/public/terrain/19/858485/353909.terrain b/public/terrain/19/858485/353909.terrain new file mode 100644 index 000000000..963c8ab8f Binary files /dev/null and b/public/terrain/19/858485/353909.terrain differ diff --git a/public/terrain/19/858485/353910.terrain b/public/terrain/19/858485/353910.terrain new file mode 100644 index 000000000..0cd3e343a Binary files /dev/null and b/public/terrain/19/858485/353910.terrain differ diff --git a/public/terrain/19/858485/353911.terrain b/public/terrain/19/858485/353911.terrain new file mode 100644 index 000000000..cc9fd06cd Binary files /dev/null and b/public/terrain/19/858485/353911.terrain differ diff --git a/public/terrain/19/858485/353912.terrain b/public/terrain/19/858485/353912.terrain new file mode 100644 index 000000000..ad37160db Binary files /dev/null and b/public/terrain/19/858485/353912.terrain differ diff --git a/public/terrain/19/858485/353913.terrain b/public/terrain/19/858485/353913.terrain new file mode 100644 index 000000000..5aa482e22 Binary files /dev/null and b/public/terrain/19/858485/353913.terrain differ diff --git a/public/terrain/19/858485/353914.terrain b/public/terrain/19/858485/353914.terrain new file mode 100644 index 000000000..0437440f3 Binary files /dev/null and b/public/terrain/19/858485/353914.terrain differ diff --git a/public/terrain/19/858485/353915.terrain b/public/terrain/19/858485/353915.terrain new file mode 100644 index 000000000..e1a167f0d Binary files /dev/null and b/public/terrain/19/858485/353915.terrain differ diff --git a/public/terrain/19/858485/353916.terrain b/public/terrain/19/858485/353916.terrain new file mode 100644 index 000000000..eddaffc1b Binary files /dev/null and b/public/terrain/19/858485/353916.terrain differ diff --git a/public/terrain/19/858485/353917.terrain b/public/terrain/19/858485/353917.terrain new file mode 100644 index 000000000..dcb71f7f7 Binary files /dev/null and b/public/terrain/19/858485/353917.terrain differ diff --git a/public/terrain/19/858485/353918.terrain b/public/terrain/19/858485/353918.terrain new file mode 100644 index 000000000..910fbcc45 Binary files /dev/null and b/public/terrain/19/858485/353918.terrain differ diff --git a/public/terrain/19/858485/353919.terrain b/public/terrain/19/858485/353919.terrain new file mode 100644 index 000000000..ca92ae075 Binary files /dev/null and b/public/terrain/19/858485/353919.terrain differ diff --git a/public/terrain/19/858485/353920.terrain b/public/terrain/19/858485/353920.terrain new file mode 100644 index 000000000..f60b624b3 Binary files /dev/null and b/public/terrain/19/858485/353920.terrain differ diff --git a/public/terrain/19/858485/353921.terrain b/public/terrain/19/858485/353921.terrain new file mode 100644 index 000000000..9798c826d Binary files /dev/null and b/public/terrain/19/858485/353921.terrain differ diff --git a/public/terrain/19/858485/353922.terrain b/public/terrain/19/858485/353922.terrain new file mode 100644 index 000000000..bb73e8249 Binary files /dev/null and b/public/terrain/19/858485/353922.terrain differ diff --git a/public/terrain/19/858485/353923.terrain b/public/terrain/19/858485/353923.terrain new file mode 100644 index 000000000..b9527eff5 Binary files /dev/null and b/public/terrain/19/858485/353923.terrain differ diff --git a/public/terrain/19/858485/353924.terrain b/public/terrain/19/858485/353924.terrain new file mode 100644 index 000000000..8fe1eb1a1 Binary files /dev/null and b/public/terrain/19/858485/353924.terrain differ diff --git a/public/terrain/19/858485/353925.terrain b/public/terrain/19/858485/353925.terrain new file mode 100644 index 000000000..72b6f9957 Binary files /dev/null and b/public/terrain/19/858485/353925.terrain differ diff --git a/public/terrain/19/858485/353926.terrain b/public/terrain/19/858485/353926.terrain new file mode 100644 index 000000000..fb58d0dc0 Binary files /dev/null and b/public/terrain/19/858485/353926.terrain differ diff --git a/public/terrain/19/858485/353927.terrain b/public/terrain/19/858485/353927.terrain new file mode 100644 index 000000000..ba95c9770 Binary files /dev/null and b/public/terrain/19/858485/353927.terrain differ diff --git a/public/terrain/19/858485/353928.terrain b/public/terrain/19/858485/353928.terrain new file mode 100644 index 000000000..28ee5eb91 Binary files /dev/null and b/public/terrain/19/858485/353928.terrain differ diff --git a/public/terrain/19/858485/353929.terrain b/public/terrain/19/858485/353929.terrain new file mode 100644 index 000000000..f6d6f8db1 Binary files /dev/null and b/public/terrain/19/858485/353929.terrain differ diff --git a/public/terrain/19/858485/353930.terrain b/public/terrain/19/858485/353930.terrain new file mode 100644 index 000000000..e41ab56e2 Binary files /dev/null and b/public/terrain/19/858485/353930.terrain differ diff --git a/public/terrain/19/858485/353931.terrain b/public/terrain/19/858485/353931.terrain new file mode 100644 index 000000000..3a4c83c1c Binary files /dev/null and b/public/terrain/19/858485/353931.terrain differ diff --git a/public/terrain/19/858485/353932.terrain b/public/terrain/19/858485/353932.terrain new file mode 100644 index 000000000..bf3f31b97 Binary files /dev/null and b/public/terrain/19/858485/353932.terrain differ diff --git a/public/terrain/19/858485/353933.terrain b/public/terrain/19/858485/353933.terrain new file mode 100644 index 000000000..df59fd91a Binary files /dev/null and b/public/terrain/19/858485/353933.terrain differ diff --git a/public/terrain/19/858485/353934.terrain b/public/terrain/19/858485/353934.terrain new file mode 100644 index 000000000..5689901f8 Binary files /dev/null and b/public/terrain/19/858485/353934.terrain differ diff --git a/public/terrain/19/858485/353935.terrain b/public/terrain/19/858485/353935.terrain new file mode 100644 index 000000000..81fa2eb8f Binary files /dev/null and b/public/terrain/19/858485/353935.terrain differ diff --git a/public/terrain/19/858485/353936.terrain b/public/terrain/19/858485/353936.terrain new file mode 100644 index 000000000..20f24c4c1 Binary files /dev/null and b/public/terrain/19/858485/353936.terrain differ diff --git a/public/terrain/19/858485/353937.terrain b/public/terrain/19/858485/353937.terrain new file mode 100644 index 000000000..014e3b66d Binary files /dev/null and b/public/terrain/19/858485/353937.terrain differ diff --git a/public/terrain/19/858485/353938.terrain b/public/terrain/19/858485/353938.terrain new file mode 100644 index 000000000..4ec12c8f1 Binary files /dev/null and b/public/terrain/19/858485/353938.terrain differ diff --git a/public/terrain/19/858485/353939.terrain b/public/terrain/19/858485/353939.terrain new file mode 100644 index 000000000..ee987bd59 Binary files /dev/null and b/public/terrain/19/858485/353939.terrain differ diff --git a/public/terrain/19/858485/353940.terrain b/public/terrain/19/858485/353940.terrain new file mode 100644 index 000000000..fe5a0e7d0 Binary files /dev/null and b/public/terrain/19/858485/353940.terrain differ diff --git a/public/terrain/19/858485/353941.terrain b/public/terrain/19/858485/353941.terrain new file mode 100644 index 000000000..84f570c13 Binary files /dev/null and b/public/terrain/19/858485/353941.terrain differ diff --git a/public/terrain/19/858485/353942.terrain b/public/terrain/19/858485/353942.terrain new file mode 100644 index 000000000..8affbc989 Binary files /dev/null and b/public/terrain/19/858485/353942.terrain differ diff --git a/public/terrain/19/858485/353943.terrain b/public/terrain/19/858485/353943.terrain new file mode 100644 index 000000000..acc006fff Binary files /dev/null and b/public/terrain/19/858485/353943.terrain differ diff --git a/public/terrain/19/858485/353944.terrain b/public/terrain/19/858485/353944.terrain new file mode 100644 index 000000000..3b222443f Binary files /dev/null and b/public/terrain/19/858485/353944.terrain differ diff --git a/public/terrain/19/858485/353945.terrain b/public/terrain/19/858485/353945.terrain new file mode 100644 index 000000000..219798308 Binary files /dev/null and b/public/terrain/19/858485/353945.terrain differ diff --git a/public/terrain/19/858485/353946.terrain b/public/terrain/19/858485/353946.terrain new file mode 100644 index 000000000..bd2ddb598 Binary files /dev/null and b/public/terrain/19/858485/353946.terrain differ diff --git a/public/terrain/19/858485/353947.terrain b/public/terrain/19/858485/353947.terrain new file mode 100644 index 000000000..2d85a2319 Binary files /dev/null and b/public/terrain/19/858485/353947.terrain differ diff --git a/public/terrain/19/858485/353948.terrain b/public/terrain/19/858485/353948.terrain new file mode 100644 index 000000000..609208548 Binary files /dev/null and b/public/terrain/19/858485/353948.terrain differ diff --git a/public/terrain/19/858485/353949.terrain b/public/terrain/19/858485/353949.terrain new file mode 100644 index 000000000..8306a0988 Binary files /dev/null and b/public/terrain/19/858485/353949.terrain differ diff --git a/public/terrain/19/858485/353950.terrain b/public/terrain/19/858485/353950.terrain new file mode 100644 index 000000000..0b592a7a6 Binary files /dev/null and b/public/terrain/19/858485/353950.terrain differ diff --git a/public/terrain/19/858485/353951.terrain b/public/terrain/19/858485/353951.terrain new file mode 100644 index 000000000..ff271c29c Binary files /dev/null and b/public/terrain/19/858485/353951.terrain differ diff --git a/public/terrain/19/858485/353952.terrain b/public/terrain/19/858485/353952.terrain new file mode 100644 index 000000000..e8c92dc9e Binary files /dev/null and b/public/terrain/19/858485/353952.terrain differ diff --git a/public/terrain/19/858485/353953.terrain b/public/terrain/19/858485/353953.terrain new file mode 100644 index 000000000..ee5efd750 Binary files /dev/null and b/public/terrain/19/858485/353953.terrain differ diff --git a/public/terrain/19/858485/353954.terrain b/public/terrain/19/858485/353954.terrain new file mode 100644 index 000000000..8b593e120 Binary files /dev/null and b/public/terrain/19/858485/353954.terrain differ diff --git a/public/terrain/19/858485/353955.terrain b/public/terrain/19/858485/353955.terrain new file mode 100644 index 000000000..ea23085e9 Binary files /dev/null and b/public/terrain/19/858485/353955.terrain differ diff --git a/public/terrain/19/858485/353956.terrain b/public/terrain/19/858485/353956.terrain new file mode 100644 index 000000000..abbac0494 Binary files /dev/null and b/public/terrain/19/858485/353956.terrain differ diff --git a/public/terrain/19/858485/353957.terrain b/public/terrain/19/858485/353957.terrain new file mode 100644 index 000000000..f0bfd8717 Binary files /dev/null and b/public/terrain/19/858485/353957.terrain differ diff --git a/public/terrain/19/858485/353958.terrain b/public/terrain/19/858485/353958.terrain new file mode 100644 index 000000000..0f599288c Binary files /dev/null and b/public/terrain/19/858485/353958.terrain differ diff --git a/public/terrain/19/858485/353959.terrain b/public/terrain/19/858485/353959.terrain new file mode 100644 index 000000000..bf2fd981a Binary files /dev/null and b/public/terrain/19/858485/353959.terrain differ diff --git a/public/terrain/19/858485/353960.terrain b/public/terrain/19/858485/353960.terrain new file mode 100644 index 000000000..e823cc094 Binary files /dev/null and b/public/terrain/19/858485/353960.terrain differ diff --git a/public/terrain/19/858485/353961.terrain b/public/terrain/19/858485/353961.terrain new file mode 100644 index 000000000..b1c709a17 Binary files /dev/null and b/public/terrain/19/858485/353961.terrain differ diff --git a/public/terrain/19/858485/353962.terrain b/public/terrain/19/858485/353962.terrain new file mode 100644 index 000000000..c2d03c001 Binary files /dev/null and b/public/terrain/19/858485/353962.terrain differ diff --git a/public/terrain/19/858485/353963.terrain b/public/terrain/19/858485/353963.terrain new file mode 100644 index 000000000..ebf347f7e Binary files /dev/null and b/public/terrain/19/858485/353963.terrain differ diff --git a/public/terrain/19/858485/353964.terrain b/public/terrain/19/858485/353964.terrain new file mode 100644 index 000000000..71b6314b7 Binary files /dev/null and b/public/terrain/19/858485/353964.terrain differ diff --git a/public/terrain/19/858485/353965.terrain b/public/terrain/19/858485/353965.terrain new file mode 100644 index 000000000..606910c87 Binary files /dev/null and b/public/terrain/19/858485/353965.terrain differ diff --git a/public/terrain/19/858485/353966.terrain b/public/terrain/19/858485/353966.terrain new file mode 100644 index 000000000..605fc0e03 Binary files /dev/null and b/public/terrain/19/858485/353966.terrain differ diff --git a/public/terrain/19/858485/353967.terrain b/public/terrain/19/858485/353967.terrain new file mode 100644 index 000000000..291fe79c8 Binary files /dev/null and b/public/terrain/19/858485/353967.terrain differ diff --git a/public/terrain/19/858485/353968.terrain b/public/terrain/19/858485/353968.terrain new file mode 100644 index 000000000..465e80642 Binary files /dev/null and b/public/terrain/19/858485/353968.terrain differ diff --git a/public/terrain/19/858485/353969.terrain b/public/terrain/19/858485/353969.terrain new file mode 100644 index 000000000..286fc0db4 Binary files /dev/null and b/public/terrain/19/858485/353969.terrain differ diff --git a/public/terrain/19/858485/353970.terrain b/public/terrain/19/858485/353970.terrain new file mode 100644 index 000000000..1291a7a6b Binary files /dev/null and b/public/terrain/19/858485/353970.terrain differ diff --git a/public/terrain/19/858485/353971.terrain b/public/terrain/19/858485/353971.terrain new file mode 100644 index 000000000..d02a71740 Binary files /dev/null and b/public/terrain/19/858485/353971.terrain differ diff --git a/public/terrain/19/858485/353972.terrain b/public/terrain/19/858485/353972.terrain new file mode 100644 index 000000000..8ece73846 Binary files /dev/null and b/public/terrain/19/858485/353972.terrain differ diff --git a/public/terrain/19/858485/353973.terrain b/public/terrain/19/858485/353973.terrain new file mode 100644 index 000000000..c46e233e3 Binary files /dev/null and b/public/terrain/19/858485/353973.terrain differ diff --git a/public/terrain/19/858485/353974.terrain b/public/terrain/19/858485/353974.terrain new file mode 100644 index 000000000..62d1a72cf Binary files /dev/null and b/public/terrain/19/858485/353974.terrain differ diff --git a/public/terrain/19/858485/353975.terrain b/public/terrain/19/858485/353975.terrain new file mode 100644 index 000000000..0c9a623db Binary files /dev/null and b/public/terrain/19/858485/353975.terrain differ diff --git a/public/terrain/19/858485/353976.terrain b/public/terrain/19/858485/353976.terrain new file mode 100644 index 000000000..461f07df8 Binary files /dev/null and b/public/terrain/19/858485/353976.terrain differ diff --git a/public/terrain/19/858485/353977.terrain b/public/terrain/19/858485/353977.terrain new file mode 100644 index 000000000..bb160afde Binary files /dev/null and b/public/terrain/19/858485/353977.terrain differ diff --git a/public/terrain/19/858485/353978.terrain b/public/terrain/19/858485/353978.terrain new file mode 100644 index 000000000..89ce31f65 Binary files /dev/null and b/public/terrain/19/858485/353978.terrain differ diff --git a/public/terrain/19/858485/353979.terrain b/public/terrain/19/858485/353979.terrain new file mode 100644 index 000000000..a8539a338 Binary files /dev/null and b/public/terrain/19/858485/353979.terrain differ diff --git a/public/terrain/19/858485/353980.terrain b/public/terrain/19/858485/353980.terrain new file mode 100644 index 000000000..dccffc0be Binary files /dev/null and b/public/terrain/19/858485/353980.terrain differ diff --git a/public/terrain/19/858485/353981.terrain b/public/terrain/19/858485/353981.terrain new file mode 100644 index 000000000..acb3ccf50 Binary files /dev/null and b/public/terrain/19/858485/353981.terrain differ diff --git a/public/terrain/19/858485/353982.terrain b/public/terrain/19/858485/353982.terrain new file mode 100644 index 000000000..be0aeb71c Binary files /dev/null and b/public/terrain/19/858485/353982.terrain differ diff --git a/public/terrain/19/858485/353983.terrain b/public/terrain/19/858485/353983.terrain new file mode 100644 index 000000000..c0a1ed9ad Binary files /dev/null and b/public/terrain/19/858485/353983.terrain differ diff --git a/public/terrain/19/858485/353984.terrain b/public/terrain/19/858485/353984.terrain new file mode 100644 index 000000000..67649c81d Binary files /dev/null and b/public/terrain/19/858485/353984.terrain differ diff --git a/public/terrain/19/858485/353985.terrain b/public/terrain/19/858485/353985.terrain new file mode 100644 index 000000000..98aaf4908 Binary files /dev/null and b/public/terrain/19/858485/353985.terrain differ diff --git a/public/terrain/19/858485/353986.terrain b/public/terrain/19/858485/353986.terrain new file mode 100644 index 000000000..08d5a7e29 Binary files /dev/null and b/public/terrain/19/858485/353986.terrain differ diff --git a/public/terrain/19/858485/353987.terrain b/public/terrain/19/858485/353987.terrain new file mode 100644 index 000000000..1239b8e17 Binary files /dev/null and b/public/terrain/19/858485/353987.terrain differ diff --git a/public/terrain/19/858485/353988.terrain b/public/terrain/19/858485/353988.terrain new file mode 100644 index 000000000..a5520177a Binary files /dev/null and b/public/terrain/19/858485/353988.terrain differ diff --git a/public/terrain/19/858485/353989.terrain b/public/terrain/19/858485/353989.terrain new file mode 100644 index 000000000..03459ef41 Binary files /dev/null and b/public/terrain/19/858485/353989.terrain differ diff --git a/public/terrain/19/858485/353990.terrain b/public/terrain/19/858485/353990.terrain new file mode 100644 index 000000000..85eca9d47 Binary files /dev/null and b/public/terrain/19/858485/353990.terrain differ diff --git a/public/terrain/19/858485/353991.terrain b/public/terrain/19/858485/353991.terrain new file mode 100644 index 000000000..cf2272104 Binary files /dev/null and b/public/terrain/19/858485/353991.terrain differ diff --git a/public/terrain/19/858485/353992.terrain b/public/terrain/19/858485/353992.terrain new file mode 100644 index 000000000..87785af43 Binary files /dev/null and b/public/terrain/19/858485/353992.terrain differ diff --git a/public/terrain/19/858485/353993.terrain b/public/terrain/19/858485/353993.terrain new file mode 100644 index 000000000..e26262db3 Binary files /dev/null and b/public/terrain/19/858485/353993.terrain differ diff --git a/public/terrain/19/858485/353994.terrain b/public/terrain/19/858485/353994.terrain new file mode 100644 index 000000000..4f2c95ae8 Binary files /dev/null and b/public/terrain/19/858485/353994.terrain differ diff --git a/public/terrain/19/858485/353995.terrain b/public/terrain/19/858485/353995.terrain new file mode 100644 index 000000000..7a7f088a0 Binary files /dev/null and b/public/terrain/19/858485/353995.terrain differ diff --git a/public/terrain/19/858485/353996.terrain b/public/terrain/19/858485/353996.terrain new file mode 100644 index 000000000..b4428a90c Binary files /dev/null and b/public/terrain/19/858485/353996.terrain differ diff --git a/public/terrain/19/858485/353997.terrain b/public/terrain/19/858485/353997.terrain new file mode 100644 index 000000000..49d778d3f Binary files /dev/null and b/public/terrain/19/858485/353997.terrain differ diff --git a/public/terrain/19/858485/353998.terrain b/public/terrain/19/858485/353998.terrain new file mode 100644 index 000000000..f51bf7957 Binary files /dev/null and b/public/terrain/19/858485/353998.terrain differ diff --git a/public/terrain/19/858485/353999.terrain b/public/terrain/19/858485/353999.terrain new file mode 100644 index 000000000..9025cbe1b Binary files /dev/null and b/public/terrain/19/858485/353999.terrain differ diff --git a/public/terrain/19/858485/354000.terrain b/public/terrain/19/858485/354000.terrain new file mode 100644 index 000000000..ecdd58884 Binary files /dev/null and b/public/terrain/19/858485/354000.terrain differ diff --git a/public/terrain/19/858485/354001.terrain b/public/terrain/19/858485/354001.terrain new file mode 100644 index 000000000..2c4f962a9 Binary files /dev/null and b/public/terrain/19/858485/354001.terrain differ diff --git a/public/terrain/19/858485/354002.terrain b/public/terrain/19/858485/354002.terrain new file mode 100644 index 000000000..51de0ef6e Binary files /dev/null and b/public/terrain/19/858485/354002.terrain differ diff --git a/public/terrain/19/858485/354003.terrain b/public/terrain/19/858485/354003.terrain new file mode 100644 index 000000000..42ff32c44 Binary files /dev/null and b/public/terrain/19/858485/354003.terrain differ diff --git a/public/terrain/19/858485/354004.terrain b/public/terrain/19/858485/354004.terrain new file mode 100644 index 000000000..f9740fa08 Binary files /dev/null and b/public/terrain/19/858485/354004.terrain differ diff --git a/public/terrain/19/858485/354005.terrain b/public/terrain/19/858485/354005.terrain new file mode 100644 index 000000000..5b553c124 Binary files /dev/null and b/public/terrain/19/858485/354005.terrain differ diff --git a/public/terrain/19/858485/354006.terrain b/public/terrain/19/858485/354006.terrain new file mode 100644 index 000000000..84d7deb32 Binary files /dev/null and b/public/terrain/19/858485/354006.terrain differ diff --git a/public/terrain/19/858485/354007.terrain b/public/terrain/19/858485/354007.terrain new file mode 100644 index 000000000..929cf6952 Binary files /dev/null and b/public/terrain/19/858485/354007.terrain differ diff --git a/public/terrain/19/858485/354008.terrain b/public/terrain/19/858485/354008.terrain new file mode 100644 index 000000000..813456e3e Binary files /dev/null and b/public/terrain/19/858485/354008.terrain differ diff --git a/public/terrain/19/858485/354009.terrain b/public/terrain/19/858485/354009.terrain new file mode 100644 index 000000000..5b4fa4a8f Binary files /dev/null and b/public/terrain/19/858485/354009.terrain differ diff --git a/public/terrain/19/858485/354010.terrain b/public/terrain/19/858485/354010.terrain new file mode 100644 index 000000000..f633851ad Binary files /dev/null and b/public/terrain/19/858485/354010.terrain differ diff --git a/public/terrain/19/858485/354011.terrain b/public/terrain/19/858485/354011.terrain new file mode 100644 index 000000000..b8a6db9a4 Binary files /dev/null and b/public/terrain/19/858485/354011.terrain differ diff --git a/public/terrain/19/858485/354012.terrain b/public/terrain/19/858485/354012.terrain new file mode 100644 index 000000000..f118ff86a Binary files /dev/null and b/public/terrain/19/858485/354012.terrain differ diff --git a/public/terrain/19/858485/354013.terrain b/public/terrain/19/858485/354013.terrain new file mode 100644 index 000000000..f01e90ac4 Binary files /dev/null and b/public/terrain/19/858485/354013.terrain differ diff --git a/public/terrain/19/858485/354014.terrain b/public/terrain/19/858485/354014.terrain new file mode 100644 index 000000000..723167518 Binary files /dev/null and b/public/terrain/19/858485/354014.terrain differ diff --git a/public/terrain/19/858485/354015.terrain b/public/terrain/19/858485/354015.terrain new file mode 100644 index 000000000..8e1222a6b Binary files /dev/null and b/public/terrain/19/858485/354015.terrain differ diff --git a/public/terrain/19/858485/354016.terrain b/public/terrain/19/858485/354016.terrain new file mode 100644 index 000000000..346ce7293 Binary files /dev/null and b/public/terrain/19/858485/354016.terrain differ diff --git a/public/terrain/19/858485/354017.terrain b/public/terrain/19/858485/354017.terrain new file mode 100644 index 000000000..2ce902c44 Binary files /dev/null and b/public/terrain/19/858485/354017.terrain differ diff --git a/public/terrain/19/858485/354018.terrain b/public/terrain/19/858485/354018.terrain new file mode 100644 index 000000000..9fd95cf92 Binary files /dev/null and b/public/terrain/19/858485/354018.terrain differ diff --git a/public/terrain/19/858485/354019.terrain b/public/terrain/19/858485/354019.terrain new file mode 100644 index 000000000..a3c8569cb Binary files /dev/null and b/public/terrain/19/858485/354019.terrain differ diff --git a/public/terrain/19/858485/354020.terrain b/public/terrain/19/858485/354020.terrain new file mode 100644 index 000000000..c15a0ac18 Binary files /dev/null and b/public/terrain/19/858485/354020.terrain differ diff --git a/public/terrain/19/858485/354021.terrain b/public/terrain/19/858485/354021.terrain new file mode 100644 index 000000000..cc803dc88 Binary files /dev/null and b/public/terrain/19/858485/354021.terrain differ diff --git a/public/terrain/19/858485/354022.terrain b/public/terrain/19/858485/354022.terrain new file mode 100644 index 000000000..e05b67cf2 Binary files /dev/null and b/public/terrain/19/858485/354022.terrain differ diff --git a/public/terrain/19/858485/354023.terrain b/public/terrain/19/858485/354023.terrain new file mode 100644 index 000000000..f1a1ede46 Binary files /dev/null and b/public/terrain/19/858485/354023.terrain differ diff --git a/public/terrain/19/858485/354024.terrain b/public/terrain/19/858485/354024.terrain new file mode 100644 index 000000000..026d06fbd Binary files /dev/null and b/public/terrain/19/858485/354024.terrain differ diff --git a/public/terrain/19/858485/354025.terrain b/public/terrain/19/858485/354025.terrain new file mode 100644 index 000000000..68c0cf997 Binary files /dev/null and b/public/terrain/19/858485/354025.terrain differ diff --git a/public/terrain/19/858485/354026.terrain b/public/terrain/19/858485/354026.terrain new file mode 100644 index 000000000..560c0a77f Binary files /dev/null and b/public/terrain/19/858485/354026.terrain differ diff --git a/public/terrain/19/858485/354027.terrain b/public/terrain/19/858485/354027.terrain new file mode 100644 index 000000000..07c0a2a85 Binary files /dev/null and b/public/terrain/19/858485/354027.terrain differ diff --git a/public/terrain/19/858485/354028.terrain b/public/terrain/19/858485/354028.terrain new file mode 100644 index 000000000..a584902fc Binary files /dev/null and b/public/terrain/19/858485/354028.terrain differ diff --git a/public/terrain/19/858485/354029.terrain b/public/terrain/19/858485/354029.terrain new file mode 100644 index 000000000..f5337ee1d Binary files /dev/null and b/public/terrain/19/858485/354029.terrain differ diff --git a/public/terrain/19/858485/354030.terrain b/public/terrain/19/858485/354030.terrain new file mode 100644 index 000000000..1c5d5af17 Binary files /dev/null and b/public/terrain/19/858485/354030.terrain differ diff --git a/public/terrain/19/858485/354031.terrain b/public/terrain/19/858485/354031.terrain new file mode 100644 index 000000000..8585bca55 Binary files /dev/null and b/public/terrain/19/858485/354031.terrain differ diff --git a/public/terrain/19/858485/354032.terrain b/public/terrain/19/858485/354032.terrain new file mode 100644 index 000000000..35e246cb5 Binary files /dev/null and b/public/terrain/19/858485/354032.terrain differ diff --git a/public/terrain/19/858485/354033.terrain b/public/terrain/19/858485/354033.terrain new file mode 100644 index 000000000..4b6be7c41 Binary files /dev/null and b/public/terrain/19/858485/354033.terrain differ diff --git a/public/terrain/19/858485/354034.terrain b/public/terrain/19/858485/354034.terrain new file mode 100644 index 000000000..f15d1989a Binary files /dev/null and b/public/terrain/19/858485/354034.terrain differ diff --git a/public/terrain/19/858485/354035.terrain b/public/terrain/19/858485/354035.terrain new file mode 100644 index 000000000..bf836f3e9 Binary files /dev/null and b/public/terrain/19/858485/354035.terrain differ diff --git a/public/terrain/19/858485/354036.terrain b/public/terrain/19/858485/354036.terrain new file mode 100644 index 000000000..eeb51cb71 Binary files /dev/null and b/public/terrain/19/858485/354036.terrain differ diff --git a/public/terrain/19/858485/354037.terrain b/public/terrain/19/858485/354037.terrain new file mode 100644 index 000000000..5436ec37f Binary files /dev/null and b/public/terrain/19/858485/354037.terrain differ diff --git a/public/terrain/19/858485/354038.terrain b/public/terrain/19/858485/354038.terrain new file mode 100644 index 000000000..b8d7fae09 Binary files /dev/null and b/public/terrain/19/858485/354038.terrain differ diff --git a/public/terrain/19/858485/354039.terrain b/public/terrain/19/858485/354039.terrain new file mode 100644 index 000000000..a896e641f Binary files /dev/null and b/public/terrain/19/858485/354039.terrain differ diff --git a/public/terrain/19/858485/354040.terrain b/public/terrain/19/858485/354040.terrain new file mode 100644 index 000000000..cc50234ab Binary files /dev/null and b/public/terrain/19/858485/354040.terrain differ diff --git a/public/terrain/19/858485/354041.terrain b/public/terrain/19/858485/354041.terrain new file mode 100644 index 000000000..ab7cf5d20 Binary files /dev/null and b/public/terrain/19/858485/354041.terrain differ diff --git a/public/terrain/19/858485/354042.terrain b/public/terrain/19/858485/354042.terrain new file mode 100644 index 000000000..dfe53f787 Binary files /dev/null and b/public/terrain/19/858485/354042.terrain differ diff --git a/public/terrain/19/858485/354043.terrain b/public/terrain/19/858485/354043.terrain new file mode 100644 index 000000000..19adb7721 Binary files /dev/null and b/public/terrain/19/858485/354043.terrain differ diff --git a/public/terrain/19/858485/354044.terrain b/public/terrain/19/858485/354044.terrain new file mode 100644 index 000000000..992a9f8e0 Binary files /dev/null and b/public/terrain/19/858485/354044.terrain differ diff --git a/public/terrain/19/858485/354045.terrain b/public/terrain/19/858485/354045.terrain new file mode 100644 index 000000000..a0187c2ba Binary files /dev/null and b/public/terrain/19/858485/354045.terrain differ diff --git a/public/terrain/19/858485/354046.terrain b/public/terrain/19/858485/354046.terrain new file mode 100644 index 000000000..6ca811a93 Binary files /dev/null and b/public/terrain/19/858485/354046.terrain differ diff --git a/public/terrain/19/858485/354047.terrain b/public/terrain/19/858485/354047.terrain new file mode 100644 index 000000000..7ca173e46 Binary files /dev/null and b/public/terrain/19/858485/354047.terrain differ diff --git a/public/terrain/19/858485/354048.terrain b/public/terrain/19/858485/354048.terrain new file mode 100644 index 000000000..15b5b03bf Binary files /dev/null and b/public/terrain/19/858485/354048.terrain differ diff --git a/public/terrain/19/858485/354049.terrain b/public/terrain/19/858485/354049.terrain new file mode 100644 index 000000000..fa79baed5 Binary files /dev/null and b/public/terrain/19/858485/354049.terrain differ diff --git a/public/terrain/19/858485/354050.terrain b/public/terrain/19/858485/354050.terrain new file mode 100644 index 000000000..f890e8f70 Binary files /dev/null and b/public/terrain/19/858485/354050.terrain differ diff --git a/public/terrain/19/858485/354051.terrain b/public/terrain/19/858485/354051.terrain new file mode 100644 index 000000000..f891c509f Binary files /dev/null and b/public/terrain/19/858485/354051.terrain differ diff --git a/public/terrain/19/858485/354052.terrain b/public/terrain/19/858485/354052.terrain new file mode 100644 index 000000000..09e873218 Binary files /dev/null and b/public/terrain/19/858485/354052.terrain differ diff --git a/public/terrain/19/858485/354053.terrain b/public/terrain/19/858485/354053.terrain new file mode 100644 index 000000000..f07c71965 Binary files /dev/null and b/public/terrain/19/858485/354053.terrain differ diff --git a/public/terrain/19/858485/354054.terrain b/public/terrain/19/858485/354054.terrain new file mode 100644 index 000000000..eabef1c4f Binary files /dev/null and b/public/terrain/19/858485/354054.terrain differ diff --git a/public/terrain/19/858485/354055.terrain b/public/terrain/19/858485/354055.terrain new file mode 100644 index 000000000..67960a5fb Binary files /dev/null and b/public/terrain/19/858485/354055.terrain differ diff --git a/public/terrain/19/858485/354056.terrain b/public/terrain/19/858485/354056.terrain new file mode 100644 index 000000000..10e799286 Binary files /dev/null and b/public/terrain/19/858485/354056.terrain differ diff --git a/public/terrain/19/858485/354057.terrain b/public/terrain/19/858485/354057.terrain new file mode 100644 index 000000000..faa63b922 Binary files /dev/null and b/public/terrain/19/858485/354057.terrain differ diff --git a/public/terrain/19/858485/354058.terrain b/public/terrain/19/858485/354058.terrain new file mode 100644 index 000000000..c0d001a7a Binary files /dev/null and b/public/terrain/19/858485/354058.terrain differ diff --git a/public/terrain/19/858485/354059.terrain b/public/terrain/19/858485/354059.terrain new file mode 100644 index 000000000..b425c64e6 Binary files /dev/null and b/public/terrain/19/858485/354059.terrain differ diff --git a/public/terrain/19/858486/353743.terrain b/public/terrain/19/858486/353743.terrain new file mode 100644 index 000000000..124309fc7 Binary files /dev/null and b/public/terrain/19/858486/353743.terrain differ diff --git a/public/terrain/19/858486/353744.terrain b/public/terrain/19/858486/353744.terrain new file mode 100644 index 000000000..5f59dc627 Binary files /dev/null and b/public/terrain/19/858486/353744.terrain differ diff --git a/public/terrain/19/858486/353745.terrain b/public/terrain/19/858486/353745.terrain new file mode 100644 index 000000000..8f63b161d Binary files /dev/null and b/public/terrain/19/858486/353745.terrain differ diff --git a/public/terrain/19/858486/353746.terrain b/public/terrain/19/858486/353746.terrain new file mode 100644 index 000000000..59e28c387 Binary files /dev/null and b/public/terrain/19/858486/353746.terrain differ diff --git a/public/terrain/19/858486/353747.terrain b/public/terrain/19/858486/353747.terrain new file mode 100644 index 000000000..7f7ef5d96 Binary files /dev/null and b/public/terrain/19/858486/353747.terrain differ diff --git a/public/terrain/19/858486/353748.terrain b/public/terrain/19/858486/353748.terrain new file mode 100644 index 000000000..8f0c2ea08 Binary files /dev/null and b/public/terrain/19/858486/353748.terrain differ diff --git a/public/terrain/19/858486/353749.terrain b/public/terrain/19/858486/353749.terrain new file mode 100644 index 000000000..2b320a4d3 Binary files /dev/null and b/public/terrain/19/858486/353749.terrain differ diff --git a/public/terrain/19/858486/353750.terrain b/public/terrain/19/858486/353750.terrain new file mode 100644 index 000000000..1f0895692 Binary files /dev/null and b/public/terrain/19/858486/353750.terrain differ diff --git a/public/terrain/19/858486/353751.terrain b/public/terrain/19/858486/353751.terrain new file mode 100644 index 000000000..3d096c448 Binary files /dev/null and b/public/terrain/19/858486/353751.terrain differ diff --git a/public/terrain/19/858486/353752.terrain b/public/terrain/19/858486/353752.terrain new file mode 100644 index 000000000..47c003ce3 Binary files /dev/null and b/public/terrain/19/858486/353752.terrain differ diff --git a/public/terrain/19/858486/353753.terrain b/public/terrain/19/858486/353753.terrain new file mode 100644 index 000000000..4c7c287f0 Binary files /dev/null and b/public/terrain/19/858486/353753.terrain differ diff --git a/public/terrain/19/858486/353754.terrain b/public/terrain/19/858486/353754.terrain new file mode 100644 index 000000000..79cf719db Binary files /dev/null and b/public/terrain/19/858486/353754.terrain differ diff --git a/public/terrain/19/858486/353755.terrain b/public/terrain/19/858486/353755.terrain new file mode 100644 index 000000000..6b5659efb Binary files /dev/null and b/public/terrain/19/858486/353755.terrain differ diff --git a/public/terrain/19/858486/353756.terrain b/public/terrain/19/858486/353756.terrain new file mode 100644 index 000000000..a83853fb4 Binary files /dev/null and b/public/terrain/19/858486/353756.terrain differ diff --git a/public/terrain/19/858486/353757.terrain b/public/terrain/19/858486/353757.terrain new file mode 100644 index 000000000..3bb2c6aa3 Binary files /dev/null and b/public/terrain/19/858486/353757.terrain differ diff --git a/public/terrain/19/858486/353758.terrain b/public/terrain/19/858486/353758.terrain new file mode 100644 index 000000000..c986242a8 Binary files /dev/null and b/public/terrain/19/858486/353758.terrain differ diff --git a/public/terrain/19/858486/353759.terrain b/public/terrain/19/858486/353759.terrain new file mode 100644 index 000000000..4120f6d1a Binary files /dev/null and b/public/terrain/19/858486/353759.terrain differ diff --git a/public/terrain/19/858486/353760.terrain b/public/terrain/19/858486/353760.terrain new file mode 100644 index 000000000..9ebf4f980 Binary files /dev/null and b/public/terrain/19/858486/353760.terrain differ diff --git a/public/terrain/19/858486/353761.terrain b/public/terrain/19/858486/353761.terrain new file mode 100644 index 000000000..ad97d2c04 Binary files /dev/null and b/public/terrain/19/858486/353761.terrain differ diff --git a/public/terrain/19/858486/353762.terrain b/public/terrain/19/858486/353762.terrain new file mode 100644 index 000000000..992608b74 Binary files /dev/null and b/public/terrain/19/858486/353762.terrain differ diff --git a/public/terrain/19/858486/353763.terrain b/public/terrain/19/858486/353763.terrain new file mode 100644 index 000000000..78bca6a78 Binary files /dev/null and b/public/terrain/19/858486/353763.terrain differ diff --git a/public/terrain/19/858486/353764.terrain b/public/terrain/19/858486/353764.terrain new file mode 100644 index 000000000..4348b3786 Binary files /dev/null and b/public/terrain/19/858486/353764.terrain differ diff --git a/public/terrain/19/858486/353765.terrain b/public/terrain/19/858486/353765.terrain new file mode 100644 index 000000000..8de99598c Binary files /dev/null and b/public/terrain/19/858486/353765.terrain differ diff --git a/public/terrain/19/858486/353766.terrain b/public/terrain/19/858486/353766.terrain new file mode 100644 index 000000000..40c15b6ae Binary files /dev/null and b/public/terrain/19/858486/353766.terrain differ diff --git a/public/terrain/19/858486/353767.terrain b/public/terrain/19/858486/353767.terrain new file mode 100644 index 000000000..6c379b67e Binary files /dev/null and b/public/terrain/19/858486/353767.terrain differ diff --git a/public/terrain/19/858486/353768.terrain b/public/terrain/19/858486/353768.terrain new file mode 100644 index 000000000..ecedab573 Binary files /dev/null and b/public/terrain/19/858486/353768.terrain differ diff --git a/public/terrain/19/858486/353769.terrain b/public/terrain/19/858486/353769.terrain new file mode 100644 index 000000000..69ed0bd97 Binary files /dev/null and b/public/terrain/19/858486/353769.terrain differ diff --git a/public/terrain/19/858486/353770.terrain b/public/terrain/19/858486/353770.terrain new file mode 100644 index 000000000..045dec935 Binary files /dev/null and b/public/terrain/19/858486/353770.terrain differ diff --git a/public/terrain/19/858486/353771.terrain b/public/terrain/19/858486/353771.terrain new file mode 100644 index 000000000..086a90b55 Binary files /dev/null and b/public/terrain/19/858486/353771.terrain differ diff --git a/public/terrain/19/858486/353772.terrain b/public/terrain/19/858486/353772.terrain new file mode 100644 index 000000000..3e8405ce5 Binary files /dev/null and b/public/terrain/19/858486/353772.terrain differ diff --git a/public/terrain/19/858486/353773.terrain b/public/terrain/19/858486/353773.terrain new file mode 100644 index 000000000..6dde9633b Binary files /dev/null and b/public/terrain/19/858486/353773.terrain differ diff --git a/public/terrain/19/858486/353774.terrain b/public/terrain/19/858486/353774.terrain new file mode 100644 index 000000000..af47de056 Binary files /dev/null and b/public/terrain/19/858486/353774.terrain differ diff --git a/public/terrain/19/858486/353775.terrain b/public/terrain/19/858486/353775.terrain new file mode 100644 index 000000000..b26fdc0be Binary files /dev/null and b/public/terrain/19/858486/353775.terrain differ diff --git a/public/terrain/19/858486/353776.terrain b/public/terrain/19/858486/353776.terrain new file mode 100644 index 000000000..902465130 Binary files /dev/null and b/public/terrain/19/858486/353776.terrain differ diff --git a/public/terrain/19/858486/353777.terrain b/public/terrain/19/858486/353777.terrain new file mode 100644 index 000000000..0a70a82f6 Binary files /dev/null and b/public/terrain/19/858486/353777.terrain differ diff --git a/public/terrain/19/858486/353778.terrain b/public/terrain/19/858486/353778.terrain new file mode 100644 index 000000000..0ea6134f1 Binary files /dev/null and b/public/terrain/19/858486/353778.terrain differ diff --git a/public/terrain/19/858486/353779.terrain b/public/terrain/19/858486/353779.terrain new file mode 100644 index 000000000..8617d70de Binary files /dev/null and b/public/terrain/19/858486/353779.terrain differ diff --git a/public/terrain/19/858486/353780.terrain b/public/terrain/19/858486/353780.terrain new file mode 100644 index 000000000..be2be86f8 Binary files /dev/null and b/public/terrain/19/858486/353780.terrain differ diff --git a/public/terrain/19/858486/353781.terrain b/public/terrain/19/858486/353781.terrain new file mode 100644 index 000000000..7d0037eb0 Binary files /dev/null and b/public/terrain/19/858486/353781.terrain differ diff --git a/public/terrain/19/858486/353782.terrain b/public/terrain/19/858486/353782.terrain new file mode 100644 index 000000000..60419d23e Binary files /dev/null and b/public/terrain/19/858486/353782.terrain differ diff --git a/public/terrain/19/858486/353783.terrain b/public/terrain/19/858486/353783.terrain new file mode 100644 index 000000000..7a23853f9 Binary files /dev/null and b/public/terrain/19/858486/353783.terrain differ diff --git a/public/terrain/19/858486/353784.terrain b/public/terrain/19/858486/353784.terrain new file mode 100644 index 000000000..57e2f97fb Binary files /dev/null and b/public/terrain/19/858486/353784.terrain differ diff --git a/public/terrain/19/858486/353785.terrain b/public/terrain/19/858486/353785.terrain new file mode 100644 index 000000000..75ea5aea8 Binary files /dev/null and b/public/terrain/19/858486/353785.terrain differ diff --git a/public/terrain/19/858486/353786.terrain b/public/terrain/19/858486/353786.terrain new file mode 100644 index 000000000..ed64a6839 Binary files /dev/null and b/public/terrain/19/858486/353786.terrain differ diff --git a/public/terrain/19/858486/353787.terrain b/public/terrain/19/858486/353787.terrain new file mode 100644 index 000000000..f3e521711 Binary files /dev/null and b/public/terrain/19/858486/353787.terrain differ diff --git a/public/terrain/19/858486/353788.terrain b/public/terrain/19/858486/353788.terrain new file mode 100644 index 000000000..2358285f3 Binary files /dev/null and b/public/terrain/19/858486/353788.terrain differ diff --git a/public/terrain/19/858486/353789.terrain b/public/terrain/19/858486/353789.terrain new file mode 100644 index 000000000..42af1fe63 Binary files /dev/null and b/public/terrain/19/858486/353789.terrain differ diff --git a/public/terrain/19/858486/353790.terrain b/public/terrain/19/858486/353790.terrain new file mode 100644 index 000000000..d317d39c0 Binary files /dev/null and b/public/terrain/19/858486/353790.terrain differ diff --git a/public/terrain/19/858486/353791.terrain b/public/terrain/19/858486/353791.terrain new file mode 100644 index 000000000..62c498842 Binary files /dev/null and b/public/terrain/19/858486/353791.terrain differ diff --git a/public/terrain/19/858486/353792.terrain b/public/terrain/19/858486/353792.terrain new file mode 100644 index 000000000..07f07bf0d Binary files /dev/null and b/public/terrain/19/858486/353792.terrain differ diff --git a/public/terrain/19/858486/353793.terrain b/public/terrain/19/858486/353793.terrain new file mode 100644 index 000000000..aa058f60e Binary files /dev/null and b/public/terrain/19/858486/353793.terrain differ diff --git a/public/terrain/19/858486/353794.terrain b/public/terrain/19/858486/353794.terrain new file mode 100644 index 000000000..64021a1c7 Binary files /dev/null and b/public/terrain/19/858486/353794.terrain differ diff --git a/public/terrain/19/858486/353795.terrain b/public/terrain/19/858486/353795.terrain new file mode 100644 index 000000000..e9e6e4f35 Binary files /dev/null and b/public/terrain/19/858486/353795.terrain differ diff --git a/public/terrain/19/858486/353796.terrain b/public/terrain/19/858486/353796.terrain new file mode 100644 index 000000000..81e135335 Binary files /dev/null and b/public/terrain/19/858486/353796.terrain differ diff --git a/public/terrain/19/858486/353797.terrain b/public/terrain/19/858486/353797.terrain new file mode 100644 index 000000000..42237efd2 Binary files /dev/null and b/public/terrain/19/858486/353797.terrain differ diff --git a/public/terrain/19/858486/353798.terrain b/public/terrain/19/858486/353798.terrain new file mode 100644 index 000000000..b22450f37 Binary files /dev/null and b/public/terrain/19/858486/353798.terrain differ diff --git a/public/terrain/19/858486/353799.terrain b/public/terrain/19/858486/353799.terrain new file mode 100644 index 000000000..ac38de6f9 Binary files /dev/null and b/public/terrain/19/858486/353799.terrain differ diff --git a/public/terrain/19/858486/353800.terrain b/public/terrain/19/858486/353800.terrain new file mode 100644 index 000000000..ef12c06a6 Binary files /dev/null and b/public/terrain/19/858486/353800.terrain differ diff --git a/public/terrain/19/858486/353801.terrain b/public/terrain/19/858486/353801.terrain new file mode 100644 index 000000000..4faee4831 Binary files /dev/null and b/public/terrain/19/858486/353801.terrain differ diff --git a/public/terrain/19/858486/353802.terrain b/public/terrain/19/858486/353802.terrain new file mode 100644 index 000000000..b5bb5ac66 Binary files /dev/null and b/public/terrain/19/858486/353802.terrain differ diff --git a/public/terrain/19/858486/353803.terrain b/public/terrain/19/858486/353803.terrain new file mode 100644 index 000000000..33d4f6636 Binary files /dev/null and b/public/terrain/19/858486/353803.terrain differ diff --git a/public/terrain/19/858486/353804.terrain b/public/terrain/19/858486/353804.terrain new file mode 100644 index 000000000..5807d0bd8 Binary files /dev/null and b/public/terrain/19/858486/353804.terrain differ diff --git a/public/terrain/19/858486/353805.terrain b/public/terrain/19/858486/353805.terrain new file mode 100644 index 000000000..c42614ac5 Binary files /dev/null and b/public/terrain/19/858486/353805.terrain differ diff --git a/public/terrain/19/858486/353806.terrain b/public/terrain/19/858486/353806.terrain new file mode 100644 index 000000000..f33ed228c Binary files /dev/null and b/public/terrain/19/858486/353806.terrain differ diff --git a/public/terrain/19/858486/353807.terrain b/public/terrain/19/858486/353807.terrain new file mode 100644 index 000000000..b51e95c61 Binary files /dev/null and b/public/terrain/19/858486/353807.terrain differ diff --git a/public/terrain/19/858486/353808.terrain b/public/terrain/19/858486/353808.terrain new file mode 100644 index 000000000..6cc592bbf Binary files /dev/null and b/public/terrain/19/858486/353808.terrain differ diff --git a/public/terrain/19/858486/353809.terrain b/public/terrain/19/858486/353809.terrain new file mode 100644 index 000000000..dc71ce8ae Binary files /dev/null and b/public/terrain/19/858486/353809.terrain differ diff --git a/public/terrain/19/858486/353810.terrain b/public/terrain/19/858486/353810.terrain new file mode 100644 index 000000000..dcb5d2a17 Binary files /dev/null and b/public/terrain/19/858486/353810.terrain differ diff --git a/public/terrain/19/858486/353811.terrain b/public/terrain/19/858486/353811.terrain new file mode 100644 index 000000000..eff340107 Binary files /dev/null and b/public/terrain/19/858486/353811.terrain differ diff --git a/public/terrain/19/858486/353812.terrain b/public/terrain/19/858486/353812.terrain new file mode 100644 index 000000000..78c78b9be Binary files /dev/null and b/public/terrain/19/858486/353812.terrain differ diff --git a/public/terrain/19/858486/353813.terrain b/public/terrain/19/858486/353813.terrain new file mode 100644 index 000000000..84e5c4996 Binary files /dev/null and b/public/terrain/19/858486/353813.terrain differ diff --git a/public/terrain/19/858486/353814.terrain b/public/terrain/19/858486/353814.terrain new file mode 100644 index 000000000..2f1f07231 Binary files /dev/null and b/public/terrain/19/858486/353814.terrain differ diff --git a/public/terrain/19/858486/353815.terrain b/public/terrain/19/858486/353815.terrain new file mode 100644 index 000000000..f7e79fbf0 Binary files /dev/null and b/public/terrain/19/858486/353815.terrain differ diff --git a/public/terrain/19/858486/353816.terrain b/public/terrain/19/858486/353816.terrain new file mode 100644 index 000000000..ffc597e8f Binary files /dev/null and b/public/terrain/19/858486/353816.terrain differ diff --git a/public/terrain/19/858486/353817.terrain b/public/terrain/19/858486/353817.terrain new file mode 100644 index 000000000..ccb43e589 Binary files /dev/null and b/public/terrain/19/858486/353817.terrain differ diff --git a/public/terrain/19/858486/353818.terrain b/public/terrain/19/858486/353818.terrain new file mode 100644 index 000000000..17bbed006 Binary files /dev/null and b/public/terrain/19/858486/353818.terrain differ diff --git a/public/terrain/19/858486/353819.terrain b/public/terrain/19/858486/353819.terrain new file mode 100644 index 000000000..e51b06803 Binary files /dev/null and b/public/terrain/19/858486/353819.terrain differ diff --git a/public/terrain/19/858486/353820.terrain b/public/terrain/19/858486/353820.terrain new file mode 100644 index 000000000..3064569ea Binary files /dev/null and b/public/terrain/19/858486/353820.terrain differ diff --git a/public/terrain/19/858486/353821.terrain b/public/terrain/19/858486/353821.terrain new file mode 100644 index 000000000..72ca8e463 Binary files /dev/null and b/public/terrain/19/858486/353821.terrain differ diff --git a/public/terrain/19/858486/353822.terrain b/public/terrain/19/858486/353822.terrain new file mode 100644 index 000000000..475020b10 Binary files /dev/null and b/public/terrain/19/858486/353822.terrain differ diff --git a/public/terrain/19/858486/353823.terrain b/public/terrain/19/858486/353823.terrain new file mode 100644 index 000000000..a8b722276 Binary files /dev/null and b/public/terrain/19/858486/353823.terrain differ diff --git a/public/terrain/19/858486/353824.terrain b/public/terrain/19/858486/353824.terrain new file mode 100644 index 000000000..ce144bfad Binary files /dev/null and b/public/terrain/19/858486/353824.terrain differ diff --git a/public/terrain/19/858486/353825.terrain b/public/terrain/19/858486/353825.terrain new file mode 100644 index 000000000..4ad97d791 Binary files /dev/null and b/public/terrain/19/858486/353825.terrain differ diff --git a/public/terrain/19/858486/353826.terrain b/public/terrain/19/858486/353826.terrain new file mode 100644 index 000000000..901eab971 Binary files /dev/null and b/public/terrain/19/858486/353826.terrain differ diff --git a/public/terrain/19/858486/353827.terrain b/public/terrain/19/858486/353827.terrain new file mode 100644 index 000000000..38c2b887c Binary files /dev/null and b/public/terrain/19/858486/353827.terrain differ diff --git a/public/terrain/19/858486/353828.terrain b/public/terrain/19/858486/353828.terrain new file mode 100644 index 000000000..96a058c6c Binary files /dev/null and b/public/terrain/19/858486/353828.terrain differ diff --git a/public/terrain/19/858486/353829.terrain b/public/terrain/19/858486/353829.terrain new file mode 100644 index 000000000..59a7b2daf Binary files /dev/null and b/public/terrain/19/858486/353829.terrain differ diff --git a/public/terrain/19/858486/353830.terrain b/public/terrain/19/858486/353830.terrain new file mode 100644 index 000000000..06fff01dc Binary files /dev/null and b/public/terrain/19/858486/353830.terrain differ diff --git a/public/terrain/19/858486/353831.terrain b/public/terrain/19/858486/353831.terrain new file mode 100644 index 000000000..608874e55 Binary files /dev/null and b/public/terrain/19/858486/353831.terrain differ diff --git a/public/terrain/19/858486/353832.terrain b/public/terrain/19/858486/353832.terrain new file mode 100644 index 000000000..1cf5dd74d Binary files /dev/null and b/public/terrain/19/858486/353832.terrain differ diff --git a/public/terrain/19/858486/353833.terrain b/public/terrain/19/858486/353833.terrain new file mode 100644 index 000000000..e3566e5ff Binary files /dev/null and b/public/terrain/19/858486/353833.terrain differ diff --git a/public/terrain/19/858486/353834.terrain b/public/terrain/19/858486/353834.terrain new file mode 100644 index 000000000..d3a8a9747 Binary files /dev/null and b/public/terrain/19/858486/353834.terrain differ diff --git a/public/terrain/19/858486/353835.terrain b/public/terrain/19/858486/353835.terrain new file mode 100644 index 000000000..3ec265f0f Binary files /dev/null and b/public/terrain/19/858486/353835.terrain differ diff --git a/public/terrain/19/858486/353836.terrain b/public/terrain/19/858486/353836.terrain new file mode 100644 index 000000000..f5b26e7f6 Binary files /dev/null and b/public/terrain/19/858486/353836.terrain differ diff --git a/public/terrain/19/858486/353837.terrain b/public/terrain/19/858486/353837.terrain new file mode 100644 index 000000000..9e094a292 Binary files /dev/null and b/public/terrain/19/858486/353837.terrain differ diff --git a/public/terrain/19/858486/353838.terrain b/public/terrain/19/858486/353838.terrain new file mode 100644 index 000000000..648cf6f4a Binary files /dev/null and b/public/terrain/19/858486/353838.terrain differ diff --git a/public/terrain/19/858486/353839.terrain b/public/terrain/19/858486/353839.terrain new file mode 100644 index 000000000..1b8804cbf Binary files /dev/null and b/public/terrain/19/858486/353839.terrain differ diff --git a/public/terrain/19/858486/353840.terrain b/public/terrain/19/858486/353840.terrain new file mode 100644 index 000000000..ffb6e1115 Binary files /dev/null and b/public/terrain/19/858486/353840.terrain differ diff --git a/public/terrain/19/858486/353841.terrain b/public/terrain/19/858486/353841.terrain new file mode 100644 index 000000000..4fc28d7c7 Binary files /dev/null and b/public/terrain/19/858486/353841.terrain differ diff --git a/public/terrain/19/858486/353842.terrain b/public/terrain/19/858486/353842.terrain new file mode 100644 index 000000000..7248be6e2 Binary files /dev/null and b/public/terrain/19/858486/353842.terrain differ diff --git a/public/terrain/19/858486/353843.terrain b/public/terrain/19/858486/353843.terrain new file mode 100644 index 000000000..a1e2ba49f Binary files /dev/null and b/public/terrain/19/858486/353843.terrain differ diff --git a/public/terrain/19/858486/353844.terrain b/public/terrain/19/858486/353844.terrain new file mode 100644 index 000000000..e5a8fb20a Binary files /dev/null and b/public/terrain/19/858486/353844.terrain differ diff --git a/public/terrain/19/858486/353845.terrain b/public/terrain/19/858486/353845.terrain new file mode 100644 index 000000000..a9dbaac99 Binary files /dev/null and b/public/terrain/19/858486/353845.terrain differ diff --git a/public/terrain/19/858486/353846.terrain b/public/terrain/19/858486/353846.terrain new file mode 100644 index 000000000..20dcc985c Binary files /dev/null and b/public/terrain/19/858486/353846.terrain differ diff --git a/public/terrain/19/858486/353847.terrain b/public/terrain/19/858486/353847.terrain new file mode 100644 index 000000000..ad6cb0ce2 Binary files /dev/null and b/public/terrain/19/858486/353847.terrain differ diff --git a/public/terrain/19/858486/353848.terrain b/public/terrain/19/858486/353848.terrain new file mode 100644 index 000000000..3b2488ebe Binary files /dev/null and b/public/terrain/19/858486/353848.terrain differ diff --git a/public/terrain/19/858486/353849.terrain b/public/terrain/19/858486/353849.terrain new file mode 100644 index 000000000..216ea92b2 Binary files /dev/null and b/public/terrain/19/858486/353849.terrain differ diff --git a/public/terrain/19/858486/353850.terrain b/public/terrain/19/858486/353850.terrain new file mode 100644 index 000000000..c799cf765 Binary files /dev/null and b/public/terrain/19/858486/353850.terrain differ diff --git a/public/terrain/19/858486/353851.terrain b/public/terrain/19/858486/353851.terrain new file mode 100644 index 000000000..54775b03a Binary files /dev/null and b/public/terrain/19/858486/353851.terrain differ diff --git a/public/terrain/19/858486/353852.terrain b/public/terrain/19/858486/353852.terrain new file mode 100644 index 000000000..9e8146206 Binary files /dev/null and b/public/terrain/19/858486/353852.terrain differ diff --git a/public/terrain/19/858486/353853.terrain b/public/terrain/19/858486/353853.terrain new file mode 100644 index 000000000..661306f1e Binary files /dev/null and b/public/terrain/19/858486/353853.terrain differ diff --git a/public/terrain/19/858486/353854.terrain b/public/terrain/19/858486/353854.terrain new file mode 100644 index 000000000..9c46a9753 Binary files /dev/null and b/public/terrain/19/858486/353854.terrain differ diff --git a/public/terrain/19/858486/353855.terrain b/public/terrain/19/858486/353855.terrain new file mode 100644 index 000000000..b2c50a9c1 Binary files /dev/null and b/public/terrain/19/858486/353855.terrain differ diff --git a/public/terrain/19/858486/353856.terrain b/public/terrain/19/858486/353856.terrain new file mode 100644 index 000000000..472964455 Binary files /dev/null and b/public/terrain/19/858486/353856.terrain differ diff --git a/public/terrain/19/858486/353857.terrain b/public/terrain/19/858486/353857.terrain new file mode 100644 index 000000000..310dc2276 Binary files /dev/null and b/public/terrain/19/858486/353857.terrain differ diff --git a/public/terrain/19/858486/353858.terrain b/public/terrain/19/858486/353858.terrain new file mode 100644 index 000000000..a0c49a5af Binary files /dev/null and b/public/terrain/19/858486/353858.terrain differ diff --git a/public/terrain/19/858486/353859.terrain b/public/terrain/19/858486/353859.terrain new file mode 100644 index 000000000..d5ff0628a Binary files /dev/null and b/public/terrain/19/858486/353859.terrain differ diff --git a/public/terrain/19/858486/353860.terrain b/public/terrain/19/858486/353860.terrain new file mode 100644 index 000000000..e1f1ed615 Binary files /dev/null and b/public/terrain/19/858486/353860.terrain differ diff --git a/public/terrain/19/858486/353861.terrain b/public/terrain/19/858486/353861.terrain new file mode 100644 index 000000000..efdc166de Binary files /dev/null and b/public/terrain/19/858486/353861.terrain differ diff --git a/public/terrain/19/858486/353862.terrain b/public/terrain/19/858486/353862.terrain new file mode 100644 index 000000000..3b97d8423 Binary files /dev/null and b/public/terrain/19/858486/353862.terrain differ diff --git a/public/terrain/19/858486/353863.terrain b/public/terrain/19/858486/353863.terrain new file mode 100644 index 000000000..2e96cd89b Binary files /dev/null and b/public/terrain/19/858486/353863.terrain differ diff --git a/public/terrain/19/858486/353864.terrain b/public/terrain/19/858486/353864.terrain new file mode 100644 index 000000000..07858cd53 Binary files /dev/null and b/public/terrain/19/858486/353864.terrain differ diff --git a/public/terrain/19/858486/353865.terrain b/public/terrain/19/858486/353865.terrain new file mode 100644 index 000000000..2718078bd Binary files /dev/null and b/public/terrain/19/858486/353865.terrain differ diff --git a/public/terrain/19/858486/353866.terrain b/public/terrain/19/858486/353866.terrain new file mode 100644 index 000000000..0ec74e748 Binary files /dev/null and b/public/terrain/19/858486/353866.terrain differ diff --git a/public/terrain/19/858486/353867.terrain b/public/terrain/19/858486/353867.terrain new file mode 100644 index 000000000..79c32894a Binary files /dev/null and b/public/terrain/19/858486/353867.terrain differ diff --git a/public/terrain/19/858486/353868.terrain b/public/terrain/19/858486/353868.terrain new file mode 100644 index 000000000..63b6a5e00 Binary files /dev/null and b/public/terrain/19/858486/353868.terrain differ diff --git a/public/terrain/19/858486/353869.terrain b/public/terrain/19/858486/353869.terrain new file mode 100644 index 000000000..4fc2c0fdb Binary files /dev/null and b/public/terrain/19/858486/353869.terrain differ diff --git a/public/terrain/19/858486/353870.terrain b/public/terrain/19/858486/353870.terrain new file mode 100644 index 000000000..6aaada108 Binary files /dev/null and b/public/terrain/19/858486/353870.terrain differ diff --git a/public/terrain/19/858486/353871.terrain b/public/terrain/19/858486/353871.terrain new file mode 100644 index 000000000..e248025dc Binary files /dev/null and b/public/terrain/19/858486/353871.terrain differ diff --git a/public/terrain/19/858486/353872.terrain b/public/terrain/19/858486/353872.terrain new file mode 100644 index 000000000..41ff8b502 Binary files /dev/null and b/public/terrain/19/858486/353872.terrain differ diff --git a/public/terrain/19/858486/353873.terrain b/public/terrain/19/858486/353873.terrain new file mode 100644 index 000000000..932eea330 Binary files /dev/null and b/public/terrain/19/858486/353873.terrain differ diff --git a/public/terrain/19/858486/353874.terrain b/public/terrain/19/858486/353874.terrain new file mode 100644 index 000000000..647d0fd9f Binary files /dev/null and b/public/terrain/19/858486/353874.terrain differ diff --git a/public/terrain/19/858486/353875.terrain b/public/terrain/19/858486/353875.terrain new file mode 100644 index 000000000..02892652e Binary files /dev/null and b/public/terrain/19/858486/353875.terrain differ diff --git a/public/terrain/19/858486/353876.terrain b/public/terrain/19/858486/353876.terrain new file mode 100644 index 000000000..384517b58 Binary files /dev/null and b/public/terrain/19/858486/353876.terrain differ diff --git a/public/terrain/19/858486/353877.terrain b/public/terrain/19/858486/353877.terrain new file mode 100644 index 000000000..d03ed9a04 Binary files /dev/null and b/public/terrain/19/858486/353877.terrain differ diff --git a/public/terrain/19/858486/353878.terrain b/public/terrain/19/858486/353878.terrain new file mode 100644 index 000000000..a41ee5647 Binary files /dev/null and b/public/terrain/19/858486/353878.terrain differ diff --git a/public/terrain/19/858486/353879.terrain b/public/terrain/19/858486/353879.terrain new file mode 100644 index 000000000..7e1b0d4f9 Binary files /dev/null and b/public/terrain/19/858486/353879.terrain differ diff --git a/public/terrain/19/858486/353880.terrain b/public/terrain/19/858486/353880.terrain new file mode 100644 index 000000000..74a718cc0 Binary files /dev/null and b/public/terrain/19/858486/353880.terrain differ diff --git a/public/terrain/19/858486/353881.terrain b/public/terrain/19/858486/353881.terrain new file mode 100644 index 000000000..5deaf62c8 Binary files /dev/null and b/public/terrain/19/858486/353881.terrain differ diff --git a/public/terrain/19/858486/353882.terrain b/public/terrain/19/858486/353882.terrain new file mode 100644 index 000000000..0ce47ca60 Binary files /dev/null and b/public/terrain/19/858486/353882.terrain differ diff --git a/public/terrain/19/858486/353883.terrain b/public/terrain/19/858486/353883.terrain new file mode 100644 index 000000000..6529845ac Binary files /dev/null and b/public/terrain/19/858486/353883.terrain differ diff --git a/public/terrain/19/858486/353884.terrain b/public/terrain/19/858486/353884.terrain new file mode 100644 index 000000000..94f5cd3d2 Binary files /dev/null and b/public/terrain/19/858486/353884.terrain differ diff --git a/public/terrain/19/858486/353885.terrain b/public/terrain/19/858486/353885.terrain new file mode 100644 index 000000000..9fc775543 Binary files /dev/null and b/public/terrain/19/858486/353885.terrain differ diff --git a/public/terrain/19/858486/353886.terrain b/public/terrain/19/858486/353886.terrain new file mode 100644 index 000000000..ab81b318c Binary files /dev/null and b/public/terrain/19/858486/353886.terrain differ diff --git a/public/terrain/19/858486/353887.terrain b/public/terrain/19/858486/353887.terrain new file mode 100644 index 000000000..9866c049f Binary files /dev/null and b/public/terrain/19/858486/353887.terrain differ diff --git a/public/terrain/19/858486/353888.terrain b/public/terrain/19/858486/353888.terrain new file mode 100644 index 000000000..f8d2a3b59 Binary files /dev/null and b/public/terrain/19/858486/353888.terrain differ diff --git a/public/terrain/19/858486/353889.terrain b/public/terrain/19/858486/353889.terrain new file mode 100644 index 000000000..8c2630193 Binary files /dev/null and b/public/terrain/19/858486/353889.terrain differ diff --git a/public/terrain/19/858486/353890.terrain b/public/terrain/19/858486/353890.terrain new file mode 100644 index 000000000..4730a7176 Binary files /dev/null and b/public/terrain/19/858486/353890.terrain differ diff --git a/public/terrain/19/858486/353891.terrain b/public/terrain/19/858486/353891.terrain new file mode 100644 index 000000000..f80ed7824 Binary files /dev/null and b/public/terrain/19/858486/353891.terrain differ diff --git a/public/terrain/19/858486/353892.terrain b/public/terrain/19/858486/353892.terrain new file mode 100644 index 000000000..9b537987c Binary files /dev/null and b/public/terrain/19/858486/353892.terrain differ diff --git a/public/terrain/19/858486/353893.terrain b/public/terrain/19/858486/353893.terrain new file mode 100644 index 000000000..77818d7e7 Binary files /dev/null and b/public/terrain/19/858486/353893.terrain differ diff --git a/public/terrain/19/858486/353894.terrain b/public/terrain/19/858486/353894.terrain new file mode 100644 index 000000000..3486d32f1 Binary files /dev/null and b/public/terrain/19/858486/353894.terrain differ diff --git a/public/terrain/19/858486/353895.terrain b/public/terrain/19/858486/353895.terrain new file mode 100644 index 000000000..9da3dc326 Binary files /dev/null and b/public/terrain/19/858486/353895.terrain differ diff --git a/public/terrain/19/858486/353896.terrain b/public/terrain/19/858486/353896.terrain new file mode 100644 index 000000000..e898bac6e Binary files /dev/null and b/public/terrain/19/858486/353896.terrain differ diff --git a/public/terrain/19/858486/353897.terrain b/public/terrain/19/858486/353897.terrain new file mode 100644 index 000000000..0833c893a Binary files /dev/null and b/public/terrain/19/858486/353897.terrain differ diff --git a/public/terrain/19/858486/353898.terrain b/public/terrain/19/858486/353898.terrain new file mode 100644 index 000000000..4da561daf Binary files /dev/null and b/public/terrain/19/858486/353898.terrain differ diff --git a/public/terrain/19/858486/353899.terrain b/public/terrain/19/858486/353899.terrain new file mode 100644 index 000000000..0485a4cbc Binary files /dev/null and b/public/terrain/19/858486/353899.terrain differ diff --git a/public/terrain/19/858486/353900.terrain b/public/terrain/19/858486/353900.terrain new file mode 100644 index 000000000..795555f36 Binary files /dev/null and b/public/terrain/19/858486/353900.terrain differ diff --git a/public/terrain/19/858486/353901.terrain b/public/terrain/19/858486/353901.terrain new file mode 100644 index 000000000..5af11e209 Binary files /dev/null and b/public/terrain/19/858486/353901.terrain differ diff --git a/public/terrain/19/858486/353902.terrain b/public/terrain/19/858486/353902.terrain new file mode 100644 index 000000000..0093dfb4c Binary files /dev/null and b/public/terrain/19/858486/353902.terrain differ diff --git a/public/terrain/19/858486/353903.terrain b/public/terrain/19/858486/353903.terrain new file mode 100644 index 000000000..cb04d84b5 Binary files /dev/null and b/public/terrain/19/858486/353903.terrain differ diff --git a/public/terrain/19/858486/353904.terrain b/public/terrain/19/858486/353904.terrain new file mode 100644 index 000000000..04b8acd2e Binary files /dev/null and b/public/terrain/19/858486/353904.terrain differ diff --git a/public/terrain/19/858486/353905.terrain b/public/terrain/19/858486/353905.terrain new file mode 100644 index 000000000..9bc54724a Binary files /dev/null and b/public/terrain/19/858486/353905.terrain differ diff --git a/public/terrain/19/858486/353906.terrain b/public/terrain/19/858486/353906.terrain new file mode 100644 index 000000000..17779452c Binary files /dev/null and b/public/terrain/19/858486/353906.terrain differ diff --git a/public/terrain/19/858486/353907.terrain b/public/terrain/19/858486/353907.terrain new file mode 100644 index 000000000..ecadd4eb6 Binary files /dev/null and b/public/terrain/19/858486/353907.terrain differ diff --git a/public/terrain/19/858486/353908.terrain b/public/terrain/19/858486/353908.terrain new file mode 100644 index 000000000..d23ce7e73 Binary files /dev/null and b/public/terrain/19/858486/353908.terrain differ diff --git a/public/terrain/19/858486/353909.terrain b/public/terrain/19/858486/353909.terrain new file mode 100644 index 000000000..6327919b4 Binary files /dev/null and b/public/terrain/19/858486/353909.terrain differ diff --git a/public/terrain/19/858486/353910.terrain b/public/terrain/19/858486/353910.terrain new file mode 100644 index 000000000..dfe746850 Binary files /dev/null and b/public/terrain/19/858486/353910.terrain differ diff --git a/public/terrain/19/858486/353911.terrain b/public/terrain/19/858486/353911.terrain new file mode 100644 index 000000000..071d59585 Binary files /dev/null and b/public/terrain/19/858486/353911.terrain differ diff --git a/public/terrain/19/858486/353912.terrain b/public/terrain/19/858486/353912.terrain new file mode 100644 index 000000000..d8e94133f Binary files /dev/null and b/public/terrain/19/858486/353912.terrain differ diff --git a/public/terrain/19/858486/353913.terrain b/public/terrain/19/858486/353913.terrain new file mode 100644 index 000000000..45c9f3e64 Binary files /dev/null and b/public/terrain/19/858486/353913.terrain differ diff --git a/public/terrain/19/858486/353914.terrain b/public/terrain/19/858486/353914.terrain new file mode 100644 index 000000000..fe6848138 Binary files /dev/null and b/public/terrain/19/858486/353914.terrain differ diff --git a/public/terrain/19/858486/353915.terrain b/public/terrain/19/858486/353915.terrain new file mode 100644 index 000000000..e158602d2 Binary files /dev/null and b/public/terrain/19/858486/353915.terrain differ diff --git a/public/terrain/19/858486/353916.terrain b/public/terrain/19/858486/353916.terrain new file mode 100644 index 000000000..25727f7f7 Binary files /dev/null and b/public/terrain/19/858486/353916.terrain differ diff --git a/public/terrain/19/858486/353917.terrain b/public/terrain/19/858486/353917.terrain new file mode 100644 index 000000000..d244906e6 Binary files /dev/null and b/public/terrain/19/858486/353917.terrain differ diff --git a/public/terrain/19/858486/353918.terrain b/public/terrain/19/858486/353918.terrain new file mode 100644 index 000000000..ecb164f1a Binary files /dev/null and b/public/terrain/19/858486/353918.terrain differ diff --git a/public/terrain/19/858486/353919.terrain b/public/terrain/19/858486/353919.terrain new file mode 100644 index 000000000..69270ec5d Binary files /dev/null and b/public/terrain/19/858486/353919.terrain differ diff --git a/public/terrain/19/858486/353920.terrain b/public/terrain/19/858486/353920.terrain new file mode 100644 index 000000000..0bb20b0ba Binary files /dev/null and b/public/terrain/19/858486/353920.terrain differ diff --git a/public/terrain/19/858486/353921.terrain b/public/terrain/19/858486/353921.terrain new file mode 100644 index 000000000..08afb2010 Binary files /dev/null and b/public/terrain/19/858486/353921.terrain differ diff --git a/public/terrain/19/858486/353922.terrain b/public/terrain/19/858486/353922.terrain new file mode 100644 index 000000000..495f34d33 Binary files /dev/null and b/public/terrain/19/858486/353922.terrain differ diff --git a/public/terrain/19/858486/353923.terrain b/public/terrain/19/858486/353923.terrain new file mode 100644 index 000000000..8d3f7ec82 Binary files /dev/null and b/public/terrain/19/858486/353923.terrain differ diff --git a/public/terrain/19/858486/353924.terrain b/public/terrain/19/858486/353924.terrain new file mode 100644 index 000000000..6bf4ecb70 Binary files /dev/null and b/public/terrain/19/858486/353924.terrain differ diff --git a/public/terrain/19/858486/353925.terrain b/public/terrain/19/858486/353925.terrain new file mode 100644 index 000000000..a7f40e117 Binary files /dev/null and b/public/terrain/19/858486/353925.terrain differ diff --git a/public/terrain/19/858486/353926.terrain b/public/terrain/19/858486/353926.terrain new file mode 100644 index 000000000..b6b0e3682 Binary files /dev/null and b/public/terrain/19/858486/353926.terrain differ diff --git a/public/terrain/19/858486/353927.terrain b/public/terrain/19/858486/353927.terrain new file mode 100644 index 000000000..7bdd31f0a Binary files /dev/null and b/public/terrain/19/858486/353927.terrain differ diff --git a/public/terrain/19/858486/353928.terrain b/public/terrain/19/858486/353928.terrain new file mode 100644 index 000000000..aa531f1ee Binary files /dev/null and b/public/terrain/19/858486/353928.terrain differ diff --git a/public/terrain/19/858486/353929.terrain b/public/terrain/19/858486/353929.terrain new file mode 100644 index 000000000..eb1380021 Binary files /dev/null and b/public/terrain/19/858486/353929.terrain differ diff --git a/public/terrain/19/858486/353930.terrain b/public/terrain/19/858486/353930.terrain new file mode 100644 index 000000000..e85f4a2df Binary files /dev/null and b/public/terrain/19/858486/353930.terrain differ diff --git a/public/terrain/19/858486/353931.terrain b/public/terrain/19/858486/353931.terrain new file mode 100644 index 000000000..5a6f071c6 Binary files /dev/null and b/public/terrain/19/858486/353931.terrain differ diff --git a/public/terrain/19/858486/353932.terrain b/public/terrain/19/858486/353932.terrain new file mode 100644 index 000000000..ee9f32fe4 Binary files /dev/null and b/public/terrain/19/858486/353932.terrain differ diff --git a/public/terrain/19/858486/353933.terrain b/public/terrain/19/858486/353933.terrain new file mode 100644 index 000000000..8e3fc421b Binary files /dev/null and b/public/terrain/19/858486/353933.terrain differ diff --git a/public/terrain/19/858486/353934.terrain b/public/terrain/19/858486/353934.terrain new file mode 100644 index 000000000..6f7f963c7 Binary files /dev/null and b/public/terrain/19/858486/353934.terrain differ diff --git a/public/terrain/19/858486/353935.terrain b/public/terrain/19/858486/353935.terrain new file mode 100644 index 000000000..a3cabd73e Binary files /dev/null and b/public/terrain/19/858486/353935.terrain differ diff --git a/public/terrain/19/858486/353936.terrain b/public/terrain/19/858486/353936.terrain new file mode 100644 index 000000000..c0ffb1c55 Binary files /dev/null and b/public/terrain/19/858486/353936.terrain differ diff --git a/public/terrain/19/858486/353937.terrain b/public/terrain/19/858486/353937.terrain new file mode 100644 index 000000000..ac33a5022 Binary files /dev/null and b/public/terrain/19/858486/353937.terrain differ diff --git a/public/terrain/19/858486/353938.terrain b/public/terrain/19/858486/353938.terrain new file mode 100644 index 000000000..64bed92ca Binary files /dev/null and b/public/terrain/19/858486/353938.terrain differ diff --git a/public/terrain/19/858486/353939.terrain b/public/terrain/19/858486/353939.terrain new file mode 100644 index 000000000..677eb1f47 Binary files /dev/null and b/public/terrain/19/858486/353939.terrain differ diff --git a/public/terrain/19/858486/353940.terrain b/public/terrain/19/858486/353940.terrain new file mode 100644 index 000000000..0e0b3b51b Binary files /dev/null and b/public/terrain/19/858486/353940.terrain differ diff --git a/public/terrain/19/858486/353941.terrain b/public/terrain/19/858486/353941.terrain new file mode 100644 index 000000000..d01b4e05c Binary files /dev/null and b/public/terrain/19/858486/353941.terrain differ diff --git a/public/terrain/19/858486/353942.terrain b/public/terrain/19/858486/353942.terrain new file mode 100644 index 000000000..f71f2f7f5 Binary files /dev/null and b/public/terrain/19/858486/353942.terrain differ diff --git a/public/terrain/19/858486/353943.terrain b/public/terrain/19/858486/353943.terrain new file mode 100644 index 000000000..6b5161181 Binary files /dev/null and b/public/terrain/19/858486/353943.terrain differ diff --git a/public/terrain/19/858486/353944.terrain b/public/terrain/19/858486/353944.terrain new file mode 100644 index 000000000..5668b8008 Binary files /dev/null and b/public/terrain/19/858486/353944.terrain differ diff --git a/public/terrain/19/858486/353945.terrain b/public/terrain/19/858486/353945.terrain new file mode 100644 index 000000000..4e5db0499 Binary files /dev/null and b/public/terrain/19/858486/353945.terrain differ diff --git a/public/terrain/19/858486/353946.terrain b/public/terrain/19/858486/353946.terrain new file mode 100644 index 000000000..de1269248 Binary files /dev/null and b/public/terrain/19/858486/353946.terrain differ diff --git a/public/terrain/19/858486/353947.terrain b/public/terrain/19/858486/353947.terrain new file mode 100644 index 000000000..09b4cef52 Binary files /dev/null and b/public/terrain/19/858486/353947.terrain differ diff --git a/public/terrain/19/858486/353948.terrain b/public/terrain/19/858486/353948.terrain new file mode 100644 index 000000000..b24b058df Binary files /dev/null and b/public/terrain/19/858486/353948.terrain differ diff --git a/public/terrain/19/858486/353949.terrain b/public/terrain/19/858486/353949.terrain new file mode 100644 index 000000000..a41a41a80 Binary files /dev/null and b/public/terrain/19/858486/353949.terrain differ diff --git a/public/terrain/19/858486/353950.terrain b/public/terrain/19/858486/353950.terrain new file mode 100644 index 000000000..ea6db0d1a Binary files /dev/null and b/public/terrain/19/858486/353950.terrain differ diff --git a/public/terrain/19/858486/353951.terrain b/public/terrain/19/858486/353951.terrain new file mode 100644 index 000000000..160c840af Binary files /dev/null and b/public/terrain/19/858486/353951.terrain differ diff --git a/public/terrain/19/858486/353952.terrain b/public/terrain/19/858486/353952.terrain new file mode 100644 index 000000000..ca6fcc37b Binary files /dev/null and b/public/terrain/19/858486/353952.terrain differ diff --git a/public/terrain/19/858486/353953.terrain b/public/terrain/19/858486/353953.terrain new file mode 100644 index 000000000..c88917bda Binary files /dev/null and b/public/terrain/19/858486/353953.terrain differ diff --git a/public/terrain/19/858486/353954.terrain b/public/terrain/19/858486/353954.terrain new file mode 100644 index 000000000..9d7052c1e Binary files /dev/null and b/public/terrain/19/858486/353954.terrain differ diff --git a/public/terrain/19/858486/353955.terrain b/public/terrain/19/858486/353955.terrain new file mode 100644 index 000000000..9513b41ee Binary files /dev/null and b/public/terrain/19/858486/353955.terrain differ diff --git a/public/terrain/19/858486/353956.terrain b/public/terrain/19/858486/353956.terrain new file mode 100644 index 000000000..af6d96f09 Binary files /dev/null and b/public/terrain/19/858486/353956.terrain differ diff --git a/public/terrain/19/858486/353957.terrain b/public/terrain/19/858486/353957.terrain new file mode 100644 index 000000000..3c31851a8 Binary files /dev/null and b/public/terrain/19/858486/353957.terrain differ diff --git a/public/terrain/19/858486/353958.terrain b/public/terrain/19/858486/353958.terrain new file mode 100644 index 000000000..52911114d Binary files /dev/null and b/public/terrain/19/858486/353958.terrain differ diff --git a/public/terrain/19/858486/353959.terrain b/public/terrain/19/858486/353959.terrain new file mode 100644 index 000000000..82552273a Binary files /dev/null and b/public/terrain/19/858486/353959.terrain differ diff --git a/public/terrain/19/858486/353960.terrain b/public/terrain/19/858486/353960.terrain new file mode 100644 index 000000000..aabc0815e Binary files /dev/null and b/public/terrain/19/858486/353960.terrain differ diff --git a/public/terrain/19/858486/353961.terrain b/public/terrain/19/858486/353961.terrain new file mode 100644 index 000000000..f8cdcba25 Binary files /dev/null and b/public/terrain/19/858486/353961.terrain differ diff --git a/public/terrain/19/858486/353962.terrain b/public/terrain/19/858486/353962.terrain new file mode 100644 index 000000000..f53f4de10 Binary files /dev/null and b/public/terrain/19/858486/353962.terrain differ diff --git a/public/terrain/19/858486/353963.terrain b/public/terrain/19/858486/353963.terrain new file mode 100644 index 000000000..b541be9de Binary files /dev/null and b/public/terrain/19/858486/353963.terrain differ diff --git a/public/terrain/19/858486/353964.terrain b/public/terrain/19/858486/353964.terrain new file mode 100644 index 000000000..e82505004 Binary files /dev/null and b/public/terrain/19/858486/353964.terrain differ diff --git a/public/terrain/19/858486/353965.terrain b/public/terrain/19/858486/353965.terrain new file mode 100644 index 000000000..b80cd0797 Binary files /dev/null and b/public/terrain/19/858486/353965.terrain differ diff --git a/public/terrain/19/858486/353966.terrain b/public/terrain/19/858486/353966.terrain new file mode 100644 index 000000000..083448973 Binary files /dev/null and b/public/terrain/19/858486/353966.terrain differ diff --git a/public/terrain/19/858486/353967.terrain b/public/terrain/19/858486/353967.terrain new file mode 100644 index 000000000..b1120f2b5 Binary files /dev/null and b/public/terrain/19/858486/353967.terrain differ diff --git a/public/terrain/19/858486/353968.terrain b/public/terrain/19/858486/353968.terrain new file mode 100644 index 000000000..07f270005 Binary files /dev/null and b/public/terrain/19/858486/353968.terrain differ diff --git a/public/terrain/19/858486/353969.terrain b/public/terrain/19/858486/353969.terrain new file mode 100644 index 000000000..fafa95a2a Binary files /dev/null and b/public/terrain/19/858486/353969.terrain differ diff --git a/public/terrain/19/858486/353970.terrain b/public/terrain/19/858486/353970.terrain new file mode 100644 index 000000000..73725a542 Binary files /dev/null and b/public/terrain/19/858486/353970.terrain differ diff --git a/public/terrain/19/858486/353971.terrain b/public/terrain/19/858486/353971.terrain new file mode 100644 index 000000000..c4513d318 Binary files /dev/null and b/public/terrain/19/858486/353971.terrain differ diff --git a/public/terrain/19/858486/353972.terrain b/public/terrain/19/858486/353972.terrain new file mode 100644 index 000000000..0dec5de5c Binary files /dev/null and b/public/terrain/19/858486/353972.terrain differ diff --git a/public/terrain/19/858486/353973.terrain b/public/terrain/19/858486/353973.terrain new file mode 100644 index 000000000..2f5d566ea Binary files /dev/null and b/public/terrain/19/858486/353973.terrain differ diff --git a/public/terrain/19/858486/353974.terrain b/public/terrain/19/858486/353974.terrain new file mode 100644 index 000000000..90542c705 Binary files /dev/null and b/public/terrain/19/858486/353974.terrain differ diff --git a/public/terrain/19/858486/353975.terrain b/public/terrain/19/858486/353975.terrain new file mode 100644 index 000000000..51456f1ff Binary files /dev/null and b/public/terrain/19/858486/353975.terrain differ diff --git a/public/terrain/19/858486/353976.terrain b/public/terrain/19/858486/353976.terrain new file mode 100644 index 000000000..73939c878 Binary files /dev/null and b/public/terrain/19/858486/353976.terrain differ diff --git a/public/terrain/19/858486/353977.terrain b/public/terrain/19/858486/353977.terrain new file mode 100644 index 000000000..a56d236b2 Binary files /dev/null and b/public/terrain/19/858486/353977.terrain differ diff --git a/public/terrain/19/858486/353978.terrain b/public/terrain/19/858486/353978.terrain new file mode 100644 index 000000000..871fb3318 Binary files /dev/null and b/public/terrain/19/858486/353978.terrain differ diff --git a/public/terrain/19/858486/353979.terrain b/public/terrain/19/858486/353979.terrain new file mode 100644 index 000000000..0b8b28fd3 Binary files /dev/null and b/public/terrain/19/858486/353979.terrain differ diff --git a/public/terrain/19/858486/353980.terrain b/public/terrain/19/858486/353980.terrain new file mode 100644 index 000000000..85ead5b3c Binary files /dev/null and b/public/terrain/19/858486/353980.terrain differ diff --git a/public/terrain/19/858486/353981.terrain b/public/terrain/19/858486/353981.terrain new file mode 100644 index 000000000..858cd9c35 Binary files /dev/null and b/public/terrain/19/858486/353981.terrain differ diff --git a/public/terrain/19/858486/353982.terrain b/public/terrain/19/858486/353982.terrain new file mode 100644 index 000000000..c920ded3a Binary files /dev/null and b/public/terrain/19/858486/353982.terrain differ diff --git a/public/terrain/19/858486/353983.terrain b/public/terrain/19/858486/353983.terrain new file mode 100644 index 000000000..b523a022d Binary files /dev/null and b/public/terrain/19/858486/353983.terrain differ diff --git a/public/terrain/19/858486/353984.terrain b/public/terrain/19/858486/353984.terrain new file mode 100644 index 000000000..d0d25eb8d Binary files /dev/null and b/public/terrain/19/858486/353984.terrain differ diff --git a/public/terrain/19/858486/353985.terrain b/public/terrain/19/858486/353985.terrain new file mode 100644 index 000000000..883077cda Binary files /dev/null and b/public/terrain/19/858486/353985.terrain differ diff --git a/public/terrain/19/858486/353986.terrain b/public/terrain/19/858486/353986.terrain new file mode 100644 index 000000000..dd2230ac3 Binary files /dev/null and b/public/terrain/19/858486/353986.terrain differ diff --git a/public/terrain/19/858486/353987.terrain b/public/terrain/19/858486/353987.terrain new file mode 100644 index 000000000..05d69d027 Binary files /dev/null and b/public/terrain/19/858486/353987.terrain differ diff --git a/public/terrain/19/858486/353988.terrain b/public/terrain/19/858486/353988.terrain new file mode 100644 index 000000000..e4e90d173 Binary files /dev/null and b/public/terrain/19/858486/353988.terrain differ diff --git a/public/terrain/19/858486/353989.terrain b/public/terrain/19/858486/353989.terrain new file mode 100644 index 000000000..cebbedd2b Binary files /dev/null and b/public/terrain/19/858486/353989.terrain differ diff --git a/public/terrain/19/858486/353990.terrain b/public/terrain/19/858486/353990.terrain new file mode 100644 index 000000000..6836524db Binary files /dev/null and b/public/terrain/19/858486/353990.terrain differ diff --git a/public/terrain/19/858486/353991.terrain b/public/terrain/19/858486/353991.terrain new file mode 100644 index 000000000..94cfcd941 Binary files /dev/null and b/public/terrain/19/858486/353991.terrain differ diff --git a/public/terrain/19/858486/353992.terrain b/public/terrain/19/858486/353992.terrain new file mode 100644 index 000000000..82f3fe0c8 Binary files /dev/null and b/public/terrain/19/858486/353992.terrain differ diff --git a/public/terrain/19/858486/353993.terrain b/public/terrain/19/858486/353993.terrain new file mode 100644 index 000000000..d5578d7ee Binary files /dev/null and b/public/terrain/19/858486/353993.terrain differ diff --git a/public/terrain/19/858486/353994.terrain b/public/terrain/19/858486/353994.terrain new file mode 100644 index 000000000..df2fbb69a Binary files /dev/null and b/public/terrain/19/858486/353994.terrain differ diff --git a/public/terrain/19/858486/353995.terrain b/public/terrain/19/858486/353995.terrain new file mode 100644 index 000000000..051287bdc Binary files /dev/null and b/public/terrain/19/858486/353995.terrain differ diff --git a/public/terrain/19/858486/353996.terrain b/public/terrain/19/858486/353996.terrain new file mode 100644 index 000000000..c9600d075 Binary files /dev/null and b/public/terrain/19/858486/353996.terrain differ diff --git a/public/terrain/19/858486/353997.terrain b/public/terrain/19/858486/353997.terrain new file mode 100644 index 000000000..77f1e4d8d Binary files /dev/null and b/public/terrain/19/858486/353997.terrain differ diff --git a/public/terrain/19/858486/353998.terrain b/public/terrain/19/858486/353998.terrain new file mode 100644 index 000000000..6bbf5be85 Binary files /dev/null and b/public/terrain/19/858486/353998.terrain differ diff --git a/public/terrain/19/858486/353999.terrain b/public/terrain/19/858486/353999.terrain new file mode 100644 index 000000000..5f9143c2d Binary files /dev/null and b/public/terrain/19/858486/353999.terrain differ diff --git a/public/terrain/19/858486/354000.terrain b/public/terrain/19/858486/354000.terrain new file mode 100644 index 000000000..74ba376dc Binary files /dev/null and b/public/terrain/19/858486/354000.terrain differ diff --git a/public/terrain/19/858486/354001.terrain b/public/terrain/19/858486/354001.terrain new file mode 100644 index 000000000..2448d0f61 Binary files /dev/null and b/public/terrain/19/858486/354001.terrain differ diff --git a/public/terrain/19/858486/354002.terrain b/public/terrain/19/858486/354002.terrain new file mode 100644 index 000000000..632173ab9 Binary files /dev/null and b/public/terrain/19/858486/354002.terrain differ diff --git a/public/terrain/19/858486/354003.terrain b/public/terrain/19/858486/354003.terrain new file mode 100644 index 000000000..eea14b073 Binary files /dev/null and b/public/terrain/19/858486/354003.terrain differ diff --git a/public/terrain/19/858486/354004.terrain b/public/terrain/19/858486/354004.terrain new file mode 100644 index 000000000..bad613d8f Binary files /dev/null and b/public/terrain/19/858486/354004.terrain differ diff --git a/public/terrain/19/858486/354005.terrain b/public/terrain/19/858486/354005.terrain new file mode 100644 index 000000000..7727497dd Binary files /dev/null and b/public/terrain/19/858486/354005.terrain differ diff --git a/public/terrain/19/858486/354006.terrain b/public/terrain/19/858486/354006.terrain new file mode 100644 index 000000000..f406c6e7b Binary files /dev/null and b/public/terrain/19/858486/354006.terrain differ diff --git a/public/terrain/19/858486/354007.terrain b/public/terrain/19/858486/354007.terrain new file mode 100644 index 000000000..3550a6f6d Binary files /dev/null and b/public/terrain/19/858486/354007.terrain differ diff --git a/public/terrain/19/858486/354008.terrain b/public/terrain/19/858486/354008.terrain new file mode 100644 index 000000000..65796788d Binary files /dev/null and b/public/terrain/19/858486/354008.terrain differ diff --git a/public/terrain/19/858486/354009.terrain b/public/terrain/19/858486/354009.terrain new file mode 100644 index 000000000..738d31543 Binary files /dev/null and b/public/terrain/19/858486/354009.terrain differ diff --git a/public/terrain/19/858486/354010.terrain b/public/terrain/19/858486/354010.terrain new file mode 100644 index 000000000..49e79ae26 Binary files /dev/null and b/public/terrain/19/858486/354010.terrain differ diff --git a/public/terrain/19/858486/354011.terrain b/public/terrain/19/858486/354011.terrain new file mode 100644 index 000000000..7f515995c Binary files /dev/null and b/public/terrain/19/858486/354011.terrain differ diff --git a/public/terrain/19/858486/354012.terrain b/public/terrain/19/858486/354012.terrain new file mode 100644 index 000000000..1b33a6bec Binary files /dev/null and b/public/terrain/19/858486/354012.terrain differ diff --git a/public/terrain/19/858486/354013.terrain b/public/terrain/19/858486/354013.terrain new file mode 100644 index 000000000..71f0a76d5 Binary files /dev/null and b/public/terrain/19/858486/354013.terrain differ diff --git a/public/terrain/19/858486/354014.terrain b/public/terrain/19/858486/354014.terrain new file mode 100644 index 000000000..8bfb620a4 Binary files /dev/null and b/public/terrain/19/858486/354014.terrain differ diff --git a/public/terrain/19/858486/354015.terrain b/public/terrain/19/858486/354015.terrain new file mode 100644 index 000000000..18c03a96d Binary files /dev/null and b/public/terrain/19/858486/354015.terrain differ diff --git a/public/terrain/19/858486/354016.terrain b/public/terrain/19/858486/354016.terrain new file mode 100644 index 000000000..f2b6d72c1 Binary files /dev/null and b/public/terrain/19/858486/354016.terrain differ diff --git a/public/terrain/19/858486/354017.terrain b/public/terrain/19/858486/354017.terrain new file mode 100644 index 000000000..06461b0eb Binary files /dev/null and b/public/terrain/19/858486/354017.terrain differ diff --git a/public/terrain/19/858486/354018.terrain b/public/terrain/19/858486/354018.terrain new file mode 100644 index 000000000..1b7f62071 Binary files /dev/null and b/public/terrain/19/858486/354018.terrain differ diff --git a/public/terrain/19/858486/354019.terrain b/public/terrain/19/858486/354019.terrain new file mode 100644 index 000000000..f3c829b59 Binary files /dev/null and b/public/terrain/19/858486/354019.terrain differ diff --git a/public/terrain/19/858486/354020.terrain b/public/terrain/19/858486/354020.terrain new file mode 100644 index 000000000..d4a38321f Binary files /dev/null and b/public/terrain/19/858486/354020.terrain differ diff --git a/public/terrain/19/858486/354021.terrain b/public/terrain/19/858486/354021.terrain new file mode 100644 index 000000000..524a62fbd Binary files /dev/null and b/public/terrain/19/858486/354021.terrain differ diff --git a/public/terrain/19/858486/354022.terrain b/public/terrain/19/858486/354022.terrain new file mode 100644 index 000000000..d7b4893ac Binary files /dev/null and b/public/terrain/19/858486/354022.terrain differ diff --git a/public/terrain/19/858486/354023.terrain b/public/terrain/19/858486/354023.terrain new file mode 100644 index 000000000..afc290b1e Binary files /dev/null and b/public/terrain/19/858486/354023.terrain differ diff --git a/public/terrain/19/858486/354024.terrain b/public/terrain/19/858486/354024.terrain new file mode 100644 index 000000000..1a48ca247 Binary files /dev/null and b/public/terrain/19/858486/354024.terrain differ diff --git a/public/terrain/19/858486/354025.terrain b/public/terrain/19/858486/354025.terrain new file mode 100644 index 000000000..c1ba50aca Binary files /dev/null and b/public/terrain/19/858486/354025.terrain differ diff --git a/public/terrain/19/858486/354026.terrain b/public/terrain/19/858486/354026.terrain new file mode 100644 index 000000000..9a185704b Binary files /dev/null and b/public/terrain/19/858486/354026.terrain differ diff --git a/public/terrain/19/858486/354027.terrain b/public/terrain/19/858486/354027.terrain new file mode 100644 index 000000000..efd2722e3 Binary files /dev/null and b/public/terrain/19/858486/354027.terrain differ diff --git a/public/terrain/19/858486/354028.terrain b/public/terrain/19/858486/354028.terrain new file mode 100644 index 000000000..8ce7813b7 Binary files /dev/null and b/public/terrain/19/858486/354028.terrain differ diff --git a/public/terrain/19/858486/354029.terrain b/public/terrain/19/858486/354029.terrain new file mode 100644 index 000000000..458fbf209 Binary files /dev/null and b/public/terrain/19/858486/354029.terrain differ diff --git a/public/terrain/19/858486/354030.terrain b/public/terrain/19/858486/354030.terrain new file mode 100644 index 000000000..aa9a4e803 Binary files /dev/null and b/public/terrain/19/858486/354030.terrain differ diff --git a/public/terrain/19/858486/354031.terrain b/public/terrain/19/858486/354031.terrain new file mode 100644 index 000000000..6b6b15d75 Binary files /dev/null and b/public/terrain/19/858486/354031.terrain differ diff --git a/public/terrain/19/858486/354032.terrain b/public/terrain/19/858486/354032.terrain new file mode 100644 index 000000000..d5b27e3e7 Binary files /dev/null and b/public/terrain/19/858486/354032.terrain differ diff --git a/public/terrain/19/858486/354033.terrain b/public/terrain/19/858486/354033.terrain new file mode 100644 index 000000000..588d5a249 Binary files /dev/null and b/public/terrain/19/858486/354033.terrain differ diff --git a/public/terrain/19/858486/354034.terrain b/public/terrain/19/858486/354034.terrain new file mode 100644 index 000000000..9474f9a55 Binary files /dev/null and b/public/terrain/19/858486/354034.terrain differ diff --git a/public/terrain/19/858486/354035.terrain b/public/terrain/19/858486/354035.terrain new file mode 100644 index 000000000..5003bf908 Binary files /dev/null and b/public/terrain/19/858486/354035.terrain differ diff --git a/public/terrain/19/858486/354036.terrain b/public/terrain/19/858486/354036.terrain new file mode 100644 index 000000000..fbfa62c73 Binary files /dev/null and b/public/terrain/19/858486/354036.terrain differ diff --git a/public/terrain/19/858486/354037.terrain b/public/terrain/19/858486/354037.terrain new file mode 100644 index 000000000..48ee6ffe9 Binary files /dev/null and b/public/terrain/19/858486/354037.terrain differ diff --git a/public/terrain/19/858486/354038.terrain b/public/terrain/19/858486/354038.terrain new file mode 100644 index 000000000..8a1c08ed2 Binary files /dev/null and b/public/terrain/19/858486/354038.terrain differ diff --git a/public/terrain/19/858486/354039.terrain b/public/terrain/19/858486/354039.terrain new file mode 100644 index 000000000..f5a43e284 Binary files /dev/null and b/public/terrain/19/858486/354039.terrain differ diff --git a/public/terrain/19/858486/354040.terrain b/public/terrain/19/858486/354040.terrain new file mode 100644 index 000000000..754f95a6d Binary files /dev/null and b/public/terrain/19/858486/354040.terrain differ diff --git a/public/terrain/19/858486/354041.terrain b/public/terrain/19/858486/354041.terrain new file mode 100644 index 000000000..6c7407ef8 Binary files /dev/null and b/public/terrain/19/858486/354041.terrain differ diff --git a/public/terrain/19/858486/354042.terrain b/public/terrain/19/858486/354042.terrain new file mode 100644 index 000000000..e18d9299b Binary files /dev/null and b/public/terrain/19/858486/354042.terrain differ diff --git a/public/terrain/19/858486/354043.terrain b/public/terrain/19/858486/354043.terrain new file mode 100644 index 000000000..3c768a888 Binary files /dev/null and b/public/terrain/19/858486/354043.terrain differ diff --git a/public/terrain/19/858486/354044.terrain b/public/terrain/19/858486/354044.terrain new file mode 100644 index 000000000..61ee7e6e2 Binary files /dev/null and b/public/terrain/19/858486/354044.terrain differ diff --git a/public/terrain/19/858486/354045.terrain b/public/terrain/19/858486/354045.terrain new file mode 100644 index 000000000..d02102450 Binary files /dev/null and b/public/terrain/19/858486/354045.terrain differ diff --git a/public/terrain/19/858486/354046.terrain b/public/terrain/19/858486/354046.terrain new file mode 100644 index 000000000..5da74997d Binary files /dev/null and b/public/terrain/19/858486/354046.terrain differ diff --git a/public/terrain/19/858486/354047.terrain b/public/terrain/19/858486/354047.terrain new file mode 100644 index 000000000..ab3d8498a Binary files /dev/null and b/public/terrain/19/858486/354047.terrain differ diff --git a/public/terrain/19/858486/354048.terrain b/public/terrain/19/858486/354048.terrain new file mode 100644 index 000000000..b05375d34 Binary files /dev/null and b/public/terrain/19/858486/354048.terrain differ diff --git a/public/terrain/19/858486/354049.terrain b/public/terrain/19/858486/354049.terrain new file mode 100644 index 000000000..e41d38ebf Binary files /dev/null and b/public/terrain/19/858486/354049.terrain differ diff --git a/public/terrain/19/858486/354050.terrain b/public/terrain/19/858486/354050.terrain new file mode 100644 index 000000000..6d40ed101 Binary files /dev/null and b/public/terrain/19/858486/354050.terrain differ diff --git a/public/terrain/19/858486/354051.terrain b/public/terrain/19/858486/354051.terrain new file mode 100644 index 000000000..16f82f430 Binary files /dev/null and b/public/terrain/19/858486/354051.terrain differ diff --git a/public/terrain/19/858486/354052.terrain b/public/terrain/19/858486/354052.terrain new file mode 100644 index 000000000..5a0861492 Binary files /dev/null and b/public/terrain/19/858486/354052.terrain differ diff --git a/public/terrain/19/858486/354053.terrain b/public/terrain/19/858486/354053.terrain new file mode 100644 index 000000000..83233fa1e Binary files /dev/null and b/public/terrain/19/858486/354053.terrain differ diff --git a/public/terrain/19/858486/354054.terrain b/public/terrain/19/858486/354054.terrain new file mode 100644 index 000000000..8c36cd92f Binary files /dev/null and b/public/terrain/19/858486/354054.terrain differ diff --git a/public/terrain/19/858486/354055.terrain b/public/terrain/19/858486/354055.terrain new file mode 100644 index 000000000..49a59fadd Binary files /dev/null and b/public/terrain/19/858486/354055.terrain differ diff --git a/public/terrain/19/858486/354056.terrain b/public/terrain/19/858486/354056.terrain new file mode 100644 index 000000000..6dd0c40b4 Binary files /dev/null and b/public/terrain/19/858486/354056.terrain differ diff --git a/public/terrain/19/858486/354057.terrain b/public/terrain/19/858486/354057.terrain new file mode 100644 index 000000000..5cf03efcb Binary files /dev/null and b/public/terrain/19/858486/354057.terrain differ diff --git a/public/terrain/19/858486/354058.terrain b/public/terrain/19/858486/354058.terrain new file mode 100644 index 000000000..8d901b41f Binary files /dev/null and b/public/terrain/19/858486/354058.terrain differ diff --git a/public/terrain/19/858486/354059.terrain b/public/terrain/19/858486/354059.terrain new file mode 100644 index 000000000..01e18edd7 Binary files /dev/null and b/public/terrain/19/858486/354059.terrain differ diff --git a/public/terrain/19/858487/353743.terrain b/public/terrain/19/858487/353743.terrain new file mode 100644 index 000000000..a13cb970f Binary files /dev/null and b/public/terrain/19/858487/353743.terrain differ diff --git a/public/terrain/19/858487/353744.terrain b/public/terrain/19/858487/353744.terrain new file mode 100644 index 000000000..1620a1258 Binary files /dev/null and b/public/terrain/19/858487/353744.terrain differ diff --git a/public/terrain/19/858487/353745.terrain b/public/terrain/19/858487/353745.terrain new file mode 100644 index 000000000..b64edd9c3 Binary files /dev/null and b/public/terrain/19/858487/353745.terrain differ diff --git a/public/terrain/19/858487/353746.terrain b/public/terrain/19/858487/353746.terrain new file mode 100644 index 000000000..126970209 Binary files /dev/null and b/public/terrain/19/858487/353746.terrain differ diff --git a/public/terrain/19/858487/353747.terrain b/public/terrain/19/858487/353747.terrain new file mode 100644 index 000000000..4b9736728 Binary files /dev/null and b/public/terrain/19/858487/353747.terrain differ diff --git a/public/terrain/19/858487/353748.terrain b/public/terrain/19/858487/353748.terrain new file mode 100644 index 000000000..eb5977566 Binary files /dev/null and b/public/terrain/19/858487/353748.terrain differ diff --git a/public/terrain/19/858487/353749.terrain b/public/terrain/19/858487/353749.terrain new file mode 100644 index 000000000..777e720cf Binary files /dev/null and b/public/terrain/19/858487/353749.terrain differ diff --git a/public/terrain/19/858487/353750.terrain b/public/terrain/19/858487/353750.terrain new file mode 100644 index 000000000..e28b1f555 Binary files /dev/null and b/public/terrain/19/858487/353750.terrain differ diff --git a/public/terrain/19/858487/353751.terrain b/public/terrain/19/858487/353751.terrain new file mode 100644 index 000000000..7e0fff6e4 Binary files /dev/null and b/public/terrain/19/858487/353751.terrain differ diff --git a/public/terrain/19/858487/353752.terrain b/public/terrain/19/858487/353752.terrain new file mode 100644 index 000000000..226ae925f Binary files /dev/null and b/public/terrain/19/858487/353752.terrain differ diff --git a/public/terrain/19/858487/353753.terrain b/public/terrain/19/858487/353753.terrain new file mode 100644 index 000000000..6c1338828 Binary files /dev/null and b/public/terrain/19/858487/353753.terrain differ diff --git a/public/terrain/19/858487/353754.terrain b/public/terrain/19/858487/353754.terrain new file mode 100644 index 000000000..e0775c925 Binary files /dev/null and b/public/terrain/19/858487/353754.terrain differ diff --git a/public/terrain/19/858487/353755.terrain b/public/terrain/19/858487/353755.terrain new file mode 100644 index 000000000..d30d03f42 Binary files /dev/null and b/public/terrain/19/858487/353755.terrain differ diff --git a/public/terrain/19/858487/353756.terrain b/public/terrain/19/858487/353756.terrain new file mode 100644 index 000000000..50cb4ef40 Binary files /dev/null and b/public/terrain/19/858487/353756.terrain differ diff --git a/public/terrain/19/858487/353757.terrain b/public/terrain/19/858487/353757.terrain new file mode 100644 index 000000000..9343692d9 Binary files /dev/null and b/public/terrain/19/858487/353757.terrain differ diff --git a/public/terrain/19/858487/353758.terrain b/public/terrain/19/858487/353758.terrain new file mode 100644 index 000000000..7120a6353 Binary files /dev/null and b/public/terrain/19/858487/353758.terrain differ diff --git a/public/terrain/19/858487/353759.terrain b/public/terrain/19/858487/353759.terrain new file mode 100644 index 000000000..c1f29ba58 Binary files /dev/null and b/public/terrain/19/858487/353759.terrain differ diff --git a/public/terrain/19/858487/353760.terrain b/public/terrain/19/858487/353760.terrain new file mode 100644 index 000000000..5670cad93 Binary files /dev/null and b/public/terrain/19/858487/353760.terrain differ diff --git a/public/terrain/19/858487/353761.terrain b/public/terrain/19/858487/353761.terrain new file mode 100644 index 000000000..2c62d12ba Binary files /dev/null and b/public/terrain/19/858487/353761.terrain differ diff --git a/public/terrain/19/858487/353762.terrain b/public/terrain/19/858487/353762.terrain new file mode 100644 index 000000000..f36012142 Binary files /dev/null and b/public/terrain/19/858487/353762.terrain differ diff --git a/public/terrain/19/858487/353763.terrain b/public/terrain/19/858487/353763.terrain new file mode 100644 index 000000000..58b72db62 Binary files /dev/null and b/public/terrain/19/858487/353763.terrain differ diff --git a/public/terrain/19/858487/353764.terrain b/public/terrain/19/858487/353764.terrain new file mode 100644 index 000000000..f5c5c87d9 Binary files /dev/null and b/public/terrain/19/858487/353764.terrain differ diff --git a/public/terrain/19/858487/353765.terrain b/public/terrain/19/858487/353765.terrain new file mode 100644 index 000000000..3ef87ed60 Binary files /dev/null and b/public/terrain/19/858487/353765.terrain differ diff --git a/public/terrain/19/858487/353766.terrain b/public/terrain/19/858487/353766.terrain new file mode 100644 index 000000000..f5a153960 Binary files /dev/null and b/public/terrain/19/858487/353766.terrain differ diff --git a/public/terrain/19/858487/353767.terrain b/public/terrain/19/858487/353767.terrain new file mode 100644 index 000000000..3b37b7e4e Binary files /dev/null and b/public/terrain/19/858487/353767.terrain differ diff --git a/public/terrain/19/858487/353768.terrain b/public/terrain/19/858487/353768.terrain new file mode 100644 index 000000000..09db01a4b Binary files /dev/null and b/public/terrain/19/858487/353768.terrain differ diff --git a/public/terrain/19/858487/353769.terrain b/public/terrain/19/858487/353769.terrain new file mode 100644 index 000000000..85e17958d Binary files /dev/null and b/public/terrain/19/858487/353769.terrain differ diff --git a/public/terrain/19/858487/353770.terrain b/public/terrain/19/858487/353770.terrain new file mode 100644 index 000000000..df24fea85 Binary files /dev/null and b/public/terrain/19/858487/353770.terrain differ diff --git a/public/terrain/19/858487/353771.terrain b/public/terrain/19/858487/353771.terrain new file mode 100644 index 000000000..04a4b3341 Binary files /dev/null and b/public/terrain/19/858487/353771.terrain differ diff --git a/public/terrain/19/858487/353772.terrain b/public/terrain/19/858487/353772.terrain new file mode 100644 index 000000000..709af9c19 Binary files /dev/null and b/public/terrain/19/858487/353772.terrain differ diff --git a/public/terrain/19/858487/353773.terrain b/public/terrain/19/858487/353773.terrain new file mode 100644 index 000000000..e61977ea7 Binary files /dev/null and b/public/terrain/19/858487/353773.terrain differ diff --git a/public/terrain/19/858487/353774.terrain b/public/terrain/19/858487/353774.terrain new file mode 100644 index 000000000..474b616d7 Binary files /dev/null and b/public/terrain/19/858487/353774.terrain differ diff --git a/public/terrain/19/858487/353775.terrain b/public/terrain/19/858487/353775.terrain new file mode 100644 index 000000000..2217a0b1a Binary files /dev/null and b/public/terrain/19/858487/353775.terrain differ diff --git a/public/terrain/19/858487/353776.terrain b/public/terrain/19/858487/353776.terrain new file mode 100644 index 000000000..69aa98b6e Binary files /dev/null and b/public/terrain/19/858487/353776.terrain differ diff --git a/public/terrain/19/858487/353777.terrain b/public/terrain/19/858487/353777.terrain new file mode 100644 index 000000000..8de9eb7a5 Binary files /dev/null and b/public/terrain/19/858487/353777.terrain differ diff --git a/public/terrain/19/858487/353778.terrain b/public/terrain/19/858487/353778.terrain new file mode 100644 index 000000000..bbbba9827 Binary files /dev/null and b/public/terrain/19/858487/353778.terrain differ diff --git a/public/terrain/19/858487/353779.terrain b/public/terrain/19/858487/353779.terrain new file mode 100644 index 000000000..b3568f175 Binary files /dev/null and b/public/terrain/19/858487/353779.terrain differ diff --git a/public/terrain/19/858487/353780.terrain b/public/terrain/19/858487/353780.terrain new file mode 100644 index 000000000..594dcd9a5 Binary files /dev/null and b/public/terrain/19/858487/353780.terrain differ diff --git a/public/terrain/19/858487/353781.terrain b/public/terrain/19/858487/353781.terrain new file mode 100644 index 000000000..84fc22bed Binary files /dev/null and b/public/terrain/19/858487/353781.terrain differ diff --git a/public/terrain/19/858487/353782.terrain b/public/terrain/19/858487/353782.terrain new file mode 100644 index 000000000..5128933bf Binary files /dev/null and b/public/terrain/19/858487/353782.terrain differ diff --git a/public/terrain/19/858487/353783.terrain b/public/terrain/19/858487/353783.terrain new file mode 100644 index 000000000..214609340 Binary files /dev/null and b/public/terrain/19/858487/353783.terrain differ diff --git a/public/terrain/19/858487/353784.terrain b/public/terrain/19/858487/353784.terrain new file mode 100644 index 000000000..0477f91ba Binary files /dev/null and b/public/terrain/19/858487/353784.terrain differ diff --git a/public/terrain/19/858487/353785.terrain b/public/terrain/19/858487/353785.terrain new file mode 100644 index 000000000..49ff4735d Binary files /dev/null and b/public/terrain/19/858487/353785.terrain differ diff --git a/public/terrain/19/858487/353786.terrain b/public/terrain/19/858487/353786.terrain new file mode 100644 index 000000000..06fc6fa93 Binary files /dev/null and b/public/terrain/19/858487/353786.terrain differ diff --git a/public/terrain/19/858487/353787.terrain b/public/terrain/19/858487/353787.terrain new file mode 100644 index 000000000..fdedc6099 Binary files /dev/null and b/public/terrain/19/858487/353787.terrain differ diff --git a/public/terrain/19/858487/353788.terrain b/public/terrain/19/858487/353788.terrain new file mode 100644 index 000000000..24dba33b0 Binary files /dev/null and b/public/terrain/19/858487/353788.terrain differ diff --git a/public/terrain/19/858487/353789.terrain b/public/terrain/19/858487/353789.terrain new file mode 100644 index 000000000..a81633a2d Binary files /dev/null and b/public/terrain/19/858487/353789.terrain differ diff --git a/public/terrain/19/858487/353790.terrain b/public/terrain/19/858487/353790.terrain new file mode 100644 index 000000000..615ca0683 Binary files /dev/null and b/public/terrain/19/858487/353790.terrain differ diff --git a/public/terrain/19/858487/353791.terrain b/public/terrain/19/858487/353791.terrain new file mode 100644 index 000000000..b8a438e83 Binary files /dev/null and b/public/terrain/19/858487/353791.terrain differ diff --git a/public/terrain/19/858487/353792.terrain b/public/terrain/19/858487/353792.terrain new file mode 100644 index 000000000..d6654ca83 Binary files /dev/null and b/public/terrain/19/858487/353792.terrain differ diff --git a/public/terrain/19/858487/353793.terrain b/public/terrain/19/858487/353793.terrain new file mode 100644 index 000000000..199d3051a Binary files /dev/null and b/public/terrain/19/858487/353793.terrain differ diff --git a/public/terrain/19/858487/353794.terrain b/public/terrain/19/858487/353794.terrain new file mode 100644 index 000000000..1c8c09071 Binary files /dev/null and b/public/terrain/19/858487/353794.terrain differ diff --git a/public/terrain/19/858487/353795.terrain b/public/terrain/19/858487/353795.terrain new file mode 100644 index 000000000..0dad3bc5e Binary files /dev/null and b/public/terrain/19/858487/353795.terrain differ diff --git a/public/terrain/19/858487/353796.terrain b/public/terrain/19/858487/353796.terrain new file mode 100644 index 000000000..04d448045 Binary files /dev/null and b/public/terrain/19/858487/353796.terrain differ diff --git a/public/terrain/19/858487/353797.terrain b/public/terrain/19/858487/353797.terrain new file mode 100644 index 000000000..f77a3a154 Binary files /dev/null and b/public/terrain/19/858487/353797.terrain differ diff --git a/public/terrain/19/858487/353798.terrain b/public/terrain/19/858487/353798.terrain new file mode 100644 index 000000000..128954d30 Binary files /dev/null and b/public/terrain/19/858487/353798.terrain differ diff --git a/public/terrain/19/858487/353799.terrain b/public/terrain/19/858487/353799.terrain new file mode 100644 index 000000000..2793be654 Binary files /dev/null and b/public/terrain/19/858487/353799.terrain differ diff --git a/public/terrain/19/858487/353800.terrain b/public/terrain/19/858487/353800.terrain new file mode 100644 index 000000000..1480c385a Binary files /dev/null and b/public/terrain/19/858487/353800.terrain differ diff --git a/public/terrain/19/858487/353801.terrain b/public/terrain/19/858487/353801.terrain new file mode 100644 index 000000000..cd62985bd Binary files /dev/null and b/public/terrain/19/858487/353801.terrain differ diff --git a/public/terrain/19/858487/353802.terrain b/public/terrain/19/858487/353802.terrain new file mode 100644 index 000000000..943125194 Binary files /dev/null and b/public/terrain/19/858487/353802.terrain differ diff --git a/public/terrain/19/858487/353803.terrain b/public/terrain/19/858487/353803.terrain new file mode 100644 index 000000000..e6b4f2efa Binary files /dev/null and b/public/terrain/19/858487/353803.terrain differ diff --git a/public/terrain/19/858487/353804.terrain b/public/terrain/19/858487/353804.terrain new file mode 100644 index 000000000..ab596fd69 Binary files /dev/null and b/public/terrain/19/858487/353804.terrain differ diff --git a/public/terrain/19/858487/353805.terrain b/public/terrain/19/858487/353805.terrain new file mode 100644 index 000000000..89505f451 Binary files /dev/null and b/public/terrain/19/858487/353805.terrain differ diff --git a/public/terrain/19/858487/353806.terrain b/public/terrain/19/858487/353806.terrain new file mode 100644 index 000000000..620f4c2d9 Binary files /dev/null and b/public/terrain/19/858487/353806.terrain differ diff --git a/public/terrain/19/858487/353807.terrain b/public/terrain/19/858487/353807.terrain new file mode 100644 index 000000000..cefbe05ba Binary files /dev/null and b/public/terrain/19/858487/353807.terrain differ diff --git a/public/terrain/19/858487/353808.terrain b/public/terrain/19/858487/353808.terrain new file mode 100644 index 000000000..90631844d Binary files /dev/null and b/public/terrain/19/858487/353808.terrain differ diff --git a/public/terrain/19/858487/353809.terrain b/public/terrain/19/858487/353809.terrain new file mode 100644 index 000000000..85b8be785 Binary files /dev/null and b/public/terrain/19/858487/353809.terrain differ diff --git a/public/terrain/19/858487/353810.terrain b/public/terrain/19/858487/353810.terrain new file mode 100644 index 000000000..d6283127d Binary files /dev/null and b/public/terrain/19/858487/353810.terrain differ diff --git a/public/terrain/19/858487/353811.terrain b/public/terrain/19/858487/353811.terrain new file mode 100644 index 000000000..93583cfb0 Binary files /dev/null and b/public/terrain/19/858487/353811.terrain differ diff --git a/public/terrain/19/858487/353812.terrain b/public/terrain/19/858487/353812.terrain new file mode 100644 index 000000000..2913d5054 Binary files /dev/null and b/public/terrain/19/858487/353812.terrain differ diff --git a/public/terrain/19/858487/353813.terrain b/public/terrain/19/858487/353813.terrain new file mode 100644 index 000000000..4cfcb3505 Binary files /dev/null and b/public/terrain/19/858487/353813.terrain differ diff --git a/public/terrain/19/858487/353814.terrain b/public/terrain/19/858487/353814.terrain new file mode 100644 index 000000000..61ece0d90 Binary files /dev/null and b/public/terrain/19/858487/353814.terrain differ diff --git a/public/terrain/19/858487/353815.terrain b/public/terrain/19/858487/353815.terrain new file mode 100644 index 000000000..12942d13e Binary files /dev/null and b/public/terrain/19/858487/353815.terrain differ diff --git a/public/terrain/19/858487/353816.terrain b/public/terrain/19/858487/353816.terrain new file mode 100644 index 000000000..05624bec0 Binary files /dev/null and b/public/terrain/19/858487/353816.terrain differ diff --git a/public/terrain/19/858487/353817.terrain b/public/terrain/19/858487/353817.terrain new file mode 100644 index 000000000..10281da52 Binary files /dev/null and b/public/terrain/19/858487/353817.terrain differ diff --git a/public/terrain/19/858487/353818.terrain b/public/terrain/19/858487/353818.terrain new file mode 100644 index 000000000..5ec8b11d1 Binary files /dev/null and b/public/terrain/19/858487/353818.terrain differ diff --git a/public/terrain/19/858487/353819.terrain b/public/terrain/19/858487/353819.terrain new file mode 100644 index 000000000..f7a986a78 Binary files /dev/null and b/public/terrain/19/858487/353819.terrain differ diff --git a/public/terrain/19/858487/353820.terrain b/public/terrain/19/858487/353820.terrain new file mode 100644 index 000000000..40166edc3 Binary files /dev/null and b/public/terrain/19/858487/353820.terrain differ diff --git a/public/terrain/19/858487/353821.terrain b/public/terrain/19/858487/353821.terrain new file mode 100644 index 000000000..fb9020c33 Binary files /dev/null and b/public/terrain/19/858487/353821.terrain differ diff --git a/public/terrain/19/858487/353822.terrain b/public/terrain/19/858487/353822.terrain new file mode 100644 index 000000000..3f8670ffc Binary files /dev/null and b/public/terrain/19/858487/353822.terrain differ diff --git a/public/terrain/19/858487/353823.terrain b/public/terrain/19/858487/353823.terrain new file mode 100644 index 000000000..e21b746f4 Binary files /dev/null and b/public/terrain/19/858487/353823.terrain differ diff --git a/public/terrain/19/858487/353824.terrain b/public/terrain/19/858487/353824.terrain new file mode 100644 index 000000000..48eb6a3ce Binary files /dev/null and b/public/terrain/19/858487/353824.terrain differ diff --git a/public/terrain/19/858487/353825.terrain b/public/terrain/19/858487/353825.terrain new file mode 100644 index 000000000..e160e092d Binary files /dev/null and b/public/terrain/19/858487/353825.terrain differ diff --git a/public/terrain/19/858487/353826.terrain b/public/terrain/19/858487/353826.terrain new file mode 100644 index 000000000..9a765d31e Binary files /dev/null and b/public/terrain/19/858487/353826.terrain differ diff --git a/public/terrain/19/858487/353827.terrain b/public/terrain/19/858487/353827.terrain new file mode 100644 index 000000000..ef4c8b67d Binary files /dev/null and b/public/terrain/19/858487/353827.terrain differ diff --git a/public/terrain/19/858487/353828.terrain b/public/terrain/19/858487/353828.terrain new file mode 100644 index 000000000..9c37de92d Binary files /dev/null and b/public/terrain/19/858487/353828.terrain differ diff --git a/public/terrain/19/858487/353829.terrain b/public/terrain/19/858487/353829.terrain new file mode 100644 index 000000000..0f6803e58 Binary files /dev/null and b/public/terrain/19/858487/353829.terrain differ diff --git a/public/terrain/19/858487/353830.terrain b/public/terrain/19/858487/353830.terrain new file mode 100644 index 000000000..4782b5edf Binary files /dev/null and b/public/terrain/19/858487/353830.terrain differ diff --git a/public/terrain/19/858487/353831.terrain b/public/terrain/19/858487/353831.terrain new file mode 100644 index 000000000..260157025 Binary files /dev/null and b/public/terrain/19/858487/353831.terrain differ diff --git a/public/terrain/19/858487/353832.terrain b/public/terrain/19/858487/353832.terrain new file mode 100644 index 000000000..152f35d8b Binary files /dev/null and b/public/terrain/19/858487/353832.terrain differ diff --git a/public/terrain/19/858487/353833.terrain b/public/terrain/19/858487/353833.terrain new file mode 100644 index 000000000..900302949 Binary files /dev/null and b/public/terrain/19/858487/353833.terrain differ diff --git a/public/terrain/19/858487/353834.terrain b/public/terrain/19/858487/353834.terrain new file mode 100644 index 000000000..f63cbe867 Binary files /dev/null and b/public/terrain/19/858487/353834.terrain differ diff --git a/public/terrain/19/858487/353835.terrain b/public/terrain/19/858487/353835.terrain new file mode 100644 index 000000000..3cb7b002f Binary files /dev/null and b/public/terrain/19/858487/353835.terrain differ diff --git a/public/terrain/19/858487/353836.terrain b/public/terrain/19/858487/353836.terrain new file mode 100644 index 000000000..425c7e885 Binary files /dev/null and b/public/terrain/19/858487/353836.terrain differ diff --git a/public/terrain/19/858487/353837.terrain b/public/terrain/19/858487/353837.terrain new file mode 100644 index 000000000..91630a4fe Binary files /dev/null and b/public/terrain/19/858487/353837.terrain differ diff --git a/public/terrain/19/858487/353838.terrain b/public/terrain/19/858487/353838.terrain new file mode 100644 index 000000000..f2dec4c72 Binary files /dev/null and b/public/terrain/19/858487/353838.terrain differ diff --git a/public/terrain/19/858487/353839.terrain b/public/terrain/19/858487/353839.terrain new file mode 100644 index 000000000..47a2185b4 Binary files /dev/null and b/public/terrain/19/858487/353839.terrain differ diff --git a/public/terrain/19/858487/353840.terrain b/public/terrain/19/858487/353840.terrain new file mode 100644 index 000000000..2cd3a48ad Binary files /dev/null and b/public/terrain/19/858487/353840.terrain differ diff --git a/public/terrain/19/858487/353841.terrain b/public/terrain/19/858487/353841.terrain new file mode 100644 index 000000000..9bcc9e614 Binary files /dev/null and b/public/terrain/19/858487/353841.terrain differ diff --git a/public/terrain/19/858487/353842.terrain b/public/terrain/19/858487/353842.terrain new file mode 100644 index 000000000..81ebdb6d0 Binary files /dev/null and b/public/terrain/19/858487/353842.terrain differ diff --git a/public/terrain/19/858487/353843.terrain b/public/terrain/19/858487/353843.terrain new file mode 100644 index 000000000..6d50cd2f3 Binary files /dev/null and b/public/terrain/19/858487/353843.terrain differ diff --git a/public/terrain/19/858487/353844.terrain b/public/terrain/19/858487/353844.terrain new file mode 100644 index 000000000..8a06373ff Binary files /dev/null and b/public/terrain/19/858487/353844.terrain differ diff --git a/public/terrain/19/858487/353845.terrain b/public/terrain/19/858487/353845.terrain new file mode 100644 index 000000000..770248b92 Binary files /dev/null and b/public/terrain/19/858487/353845.terrain differ diff --git a/public/terrain/19/858487/353846.terrain b/public/terrain/19/858487/353846.terrain new file mode 100644 index 000000000..06a2087c9 Binary files /dev/null and b/public/terrain/19/858487/353846.terrain differ diff --git a/public/terrain/19/858487/353847.terrain b/public/terrain/19/858487/353847.terrain new file mode 100644 index 000000000..4dd074239 Binary files /dev/null and b/public/terrain/19/858487/353847.terrain differ diff --git a/public/terrain/19/858487/353848.terrain b/public/terrain/19/858487/353848.terrain new file mode 100644 index 000000000..f369d6530 Binary files /dev/null and b/public/terrain/19/858487/353848.terrain differ diff --git a/public/terrain/19/858487/353849.terrain b/public/terrain/19/858487/353849.terrain new file mode 100644 index 000000000..2fdf000bf Binary files /dev/null and b/public/terrain/19/858487/353849.terrain differ diff --git a/public/terrain/19/858487/353850.terrain b/public/terrain/19/858487/353850.terrain new file mode 100644 index 000000000..bd9413400 Binary files /dev/null and b/public/terrain/19/858487/353850.terrain differ diff --git a/public/terrain/19/858487/353851.terrain b/public/terrain/19/858487/353851.terrain new file mode 100644 index 000000000..3fe6683f5 Binary files /dev/null and b/public/terrain/19/858487/353851.terrain differ diff --git a/public/terrain/19/858487/353852.terrain b/public/terrain/19/858487/353852.terrain new file mode 100644 index 000000000..3d5e9f8a6 Binary files /dev/null and b/public/terrain/19/858487/353852.terrain differ diff --git a/public/terrain/19/858487/353853.terrain b/public/terrain/19/858487/353853.terrain new file mode 100644 index 000000000..d800a698a Binary files /dev/null and b/public/terrain/19/858487/353853.terrain differ diff --git a/public/terrain/19/858487/353854.terrain b/public/terrain/19/858487/353854.terrain new file mode 100644 index 000000000..79b0fbe6f Binary files /dev/null and b/public/terrain/19/858487/353854.terrain differ diff --git a/public/terrain/19/858487/353855.terrain b/public/terrain/19/858487/353855.terrain new file mode 100644 index 000000000..12ea553a2 Binary files /dev/null and b/public/terrain/19/858487/353855.terrain differ diff --git a/public/terrain/19/858487/353856.terrain b/public/terrain/19/858487/353856.terrain new file mode 100644 index 000000000..800b71151 Binary files /dev/null and b/public/terrain/19/858487/353856.terrain differ diff --git a/public/terrain/19/858487/353857.terrain b/public/terrain/19/858487/353857.terrain new file mode 100644 index 000000000..5d6ed09c3 Binary files /dev/null and b/public/terrain/19/858487/353857.terrain differ diff --git a/public/terrain/19/858487/353858.terrain b/public/terrain/19/858487/353858.terrain new file mode 100644 index 000000000..dd2495303 Binary files /dev/null and b/public/terrain/19/858487/353858.terrain differ diff --git a/public/terrain/19/858487/353859.terrain b/public/terrain/19/858487/353859.terrain new file mode 100644 index 000000000..8a71d497e Binary files /dev/null and b/public/terrain/19/858487/353859.terrain differ diff --git a/public/terrain/19/858487/353860.terrain b/public/terrain/19/858487/353860.terrain new file mode 100644 index 000000000..1742d3b87 Binary files /dev/null and b/public/terrain/19/858487/353860.terrain differ diff --git a/public/terrain/19/858487/353861.terrain b/public/terrain/19/858487/353861.terrain new file mode 100644 index 000000000..702d333b0 Binary files /dev/null and b/public/terrain/19/858487/353861.terrain differ diff --git a/public/terrain/19/858487/353862.terrain b/public/terrain/19/858487/353862.terrain new file mode 100644 index 000000000..3cf8114a3 Binary files /dev/null and b/public/terrain/19/858487/353862.terrain differ diff --git a/public/terrain/19/858487/353863.terrain b/public/terrain/19/858487/353863.terrain new file mode 100644 index 000000000..030e31cb7 Binary files /dev/null and b/public/terrain/19/858487/353863.terrain differ diff --git a/public/terrain/19/858487/353864.terrain b/public/terrain/19/858487/353864.terrain new file mode 100644 index 000000000..3da73838e Binary files /dev/null and b/public/terrain/19/858487/353864.terrain differ diff --git a/public/terrain/19/858487/353865.terrain b/public/terrain/19/858487/353865.terrain new file mode 100644 index 000000000..05359441c Binary files /dev/null and b/public/terrain/19/858487/353865.terrain differ diff --git a/public/terrain/19/858487/353866.terrain b/public/terrain/19/858487/353866.terrain new file mode 100644 index 000000000..d137a83bf Binary files /dev/null and b/public/terrain/19/858487/353866.terrain differ diff --git a/public/terrain/19/858487/353867.terrain b/public/terrain/19/858487/353867.terrain new file mode 100644 index 000000000..b6c95a5ff Binary files /dev/null and b/public/terrain/19/858487/353867.terrain differ diff --git a/public/terrain/19/858487/353868.terrain b/public/terrain/19/858487/353868.terrain new file mode 100644 index 000000000..d7b737b02 Binary files /dev/null and b/public/terrain/19/858487/353868.terrain differ diff --git a/public/terrain/19/858487/353869.terrain b/public/terrain/19/858487/353869.terrain new file mode 100644 index 000000000..2bcfb39bf Binary files /dev/null and b/public/terrain/19/858487/353869.terrain differ diff --git a/public/terrain/19/858487/353870.terrain b/public/terrain/19/858487/353870.terrain new file mode 100644 index 000000000..cbf562ff1 Binary files /dev/null and b/public/terrain/19/858487/353870.terrain differ diff --git a/public/terrain/19/858487/353871.terrain b/public/terrain/19/858487/353871.terrain new file mode 100644 index 000000000..bcebf185d Binary files /dev/null and b/public/terrain/19/858487/353871.terrain differ diff --git a/public/terrain/19/858487/353872.terrain b/public/terrain/19/858487/353872.terrain new file mode 100644 index 000000000..9d53f87f9 Binary files /dev/null and b/public/terrain/19/858487/353872.terrain differ diff --git a/public/terrain/19/858487/353873.terrain b/public/terrain/19/858487/353873.terrain new file mode 100644 index 000000000..0a3977d1c Binary files /dev/null and b/public/terrain/19/858487/353873.terrain differ diff --git a/public/terrain/19/858487/353874.terrain b/public/terrain/19/858487/353874.terrain new file mode 100644 index 000000000..d86749c3a Binary files /dev/null and b/public/terrain/19/858487/353874.terrain differ diff --git a/public/terrain/19/858487/353875.terrain b/public/terrain/19/858487/353875.terrain new file mode 100644 index 000000000..8144ce8c6 Binary files /dev/null and b/public/terrain/19/858487/353875.terrain differ diff --git a/public/terrain/19/858487/353876.terrain b/public/terrain/19/858487/353876.terrain new file mode 100644 index 000000000..06cf12a9a Binary files /dev/null and b/public/terrain/19/858487/353876.terrain differ diff --git a/public/terrain/19/858487/353877.terrain b/public/terrain/19/858487/353877.terrain new file mode 100644 index 000000000..9de2765ac Binary files /dev/null and b/public/terrain/19/858487/353877.terrain differ diff --git a/public/terrain/19/858487/353878.terrain b/public/terrain/19/858487/353878.terrain new file mode 100644 index 000000000..4396d29e0 Binary files /dev/null and b/public/terrain/19/858487/353878.terrain differ diff --git a/public/terrain/19/858487/353879.terrain b/public/terrain/19/858487/353879.terrain new file mode 100644 index 000000000..67c395bf8 Binary files /dev/null and b/public/terrain/19/858487/353879.terrain differ diff --git a/public/terrain/19/858487/353880.terrain b/public/terrain/19/858487/353880.terrain new file mode 100644 index 000000000..18778ebab Binary files /dev/null and b/public/terrain/19/858487/353880.terrain differ diff --git a/public/terrain/19/858487/353881.terrain b/public/terrain/19/858487/353881.terrain new file mode 100644 index 000000000..739c67b75 Binary files /dev/null and b/public/terrain/19/858487/353881.terrain differ diff --git a/public/terrain/19/858487/353882.terrain b/public/terrain/19/858487/353882.terrain new file mode 100644 index 000000000..b92e56c49 Binary files /dev/null and b/public/terrain/19/858487/353882.terrain differ diff --git a/public/terrain/19/858487/353883.terrain b/public/terrain/19/858487/353883.terrain new file mode 100644 index 000000000..f62d99ba5 Binary files /dev/null and b/public/terrain/19/858487/353883.terrain differ diff --git a/public/terrain/19/858487/353884.terrain b/public/terrain/19/858487/353884.terrain new file mode 100644 index 000000000..04d6e3be0 Binary files /dev/null and b/public/terrain/19/858487/353884.terrain differ diff --git a/public/terrain/19/858487/353885.terrain b/public/terrain/19/858487/353885.terrain new file mode 100644 index 000000000..4b73ca09e Binary files /dev/null and b/public/terrain/19/858487/353885.terrain differ diff --git a/public/terrain/19/858487/353886.terrain b/public/terrain/19/858487/353886.terrain new file mode 100644 index 000000000..1ca572232 Binary files /dev/null and b/public/terrain/19/858487/353886.terrain differ diff --git a/public/terrain/19/858487/353887.terrain b/public/terrain/19/858487/353887.terrain new file mode 100644 index 000000000..91754731d Binary files /dev/null and b/public/terrain/19/858487/353887.terrain differ diff --git a/public/terrain/19/858487/353888.terrain b/public/terrain/19/858487/353888.terrain new file mode 100644 index 000000000..9134d766d Binary files /dev/null and b/public/terrain/19/858487/353888.terrain differ diff --git a/public/terrain/19/858487/353889.terrain b/public/terrain/19/858487/353889.terrain new file mode 100644 index 000000000..010bc24dd Binary files /dev/null and b/public/terrain/19/858487/353889.terrain differ diff --git a/public/terrain/19/858487/353890.terrain b/public/terrain/19/858487/353890.terrain new file mode 100644 index 000000000..2fd30192a Binary files /dev/null and b/public/terrain/19/858487/353890.terrain differ diff --git a/public/terrain/19/858487/353891.terrain b/public/terrain/19/858487/353891.terrain new file mode 100644 index 000000000..937bfc0af Binary files /dev/null and b/public/terrain/19/858487/353891.terrain differ diff --git a/public/terrain/19/858487/353892.terrain b/public/terrain/19/858487/353892.terrain new file mode 100644 index 000000000..8954d3b50 Binary files /dev/null and b/public/terrain/19/858487/353892.terrain differ diff --git a/public/terrain/19/858487/353893.terrain b/public/terrain/19/858487/353893.terrain new file mode 100644 index 000000000..f8917b385 Binary files /dev/null and b/public/terrain/19/858487/353893.terrain differ diff --git a/public/terrain/19/858487/353894.terrain b/public/terrain/19/858487/353894.terrain new file mode 100644 index 000000000..ff21f6957 Binary files /dev/null and b/public/terrain/19/858487/353894.terrain differ diff --git a/public/terrain/19/858487/353895.terrain b/public/terrain/19/858487/353895.terrain new file mode 100644 index 000000000..8e1000c41 Binary files /dev/null and b/public/terrain/19/858487/353895.terrain differ diff --git a/public/terrain/19/858487/353896.terrain b/public/terrain/19/858487/353896.terrain new file mode 100644 index 000000000..cfe37caad Binary files /dev/null and b/public/terrain/19/858487/353896.terrain differ diff --git a/public/terrain/19/858487/353897.terrain b/public/terrain/19/858487/353897.terrain new file mode 100644 index 000000000..256ad1b4c Binary files /dev/null and b/public/terrain/19/858487/353897.terrain differ diff --git a/public/terrain/19/858487/353898.terrain b/public/terrain/19/858487/353898.terrain new file mode 100644 index 000000000..c4ad0a7d9 Binary files /dev/null and b/public/terrain/19/858487/353898.terrain differ diff --git a/public/terrain/19/858487/353899.terrain b/public/terrain/19/858487/353899.terrain new file mode 100644 index 000000000..77e68b453 Binary files /dev/null and b/public/terrain/19/858487/353899.terrain differ diff --git a/public/terrain/19/858487/353900.terrain b/public/terrain/19/858487/353900.terrain new file mode 100644 index 000000000..4c322267e Binary files /dev/null and b/public/terrain/19/858487/353900.terrain differ diff --git a/public/terrain/19/858487/353901.terrain b/public/terrain/19/858487/353901.terrain new file mode 100644 index 000000000..aba4df8a3 Binary files /dev/null and b/public/terrain/19/858487/353901.terrain differ diff --git a/public/terrain/19/858487/353902.terrain b/public/terrain/19/858487/353902.terrain new file mode 100644 index 000000000..2f09d63cb Binary files /dev/null and b/public/terrain/19/858487/353902.terrain differ diff --git a/public/terrain/19/858487/353903.terrain b/public/terrain/19/858487/353903.terrain new file mode 100644 index 000000000..65f301cf8 Binary files /dev/null and b/public/terrain/19/858487/353903.terrain differ diff --git a/public/terrain/19/858487/353904.terrain b/public/terrain/19/858487/353904.terrain new file mode 100644 index 000000000..e53dd0391 Binary files /dev/null and b/public/terrain/19/858487/353904.terrain differ diff --git a/public/terrain/19/858487/353905.terrain b/public/terrain/19/858487/353905.terrain new file mode 100644 index 000000000..19f944c25 Binary files /dev/null and b/public/terrain/19/858487/353905.terrain differ diff --git a/public/terrain/19/858487/353906.terrain b/public/terrain/19/858487/353906.terrain new file mode 100644 index 000000000..025b48910 Binary files /dev/null and b/public/terrain/19/858487/353906.terrain differ diff --git a/public/terrain/19/858487/353907.terrain b/public/terrain/19/858487/353907.terrain new file mode 100644 index 000000000..515205197 Binary files /dev/null and b/public/terrain/19/858487/353907.terrain differ diff --git a/public/terrain/19/858487/353908.terrain b/public/terrain/19/858487/353908.terrain new file mode 100644 index 000000000..f184b810b Binary files /dev/null and b/public/terrain/19/858487/353908.terrain differ diff --git a/public/terrain/19/858487/353909.terrain b/public/terrain/19/858487/353909.terrain new file mode 100644 index 000000000..de551db1b Binary files /dev/null and b/public/terrain/19/858487/353909.terrain differ diff --git a/public/terrain/19/858487/353910.terrain b/public/terrain/19/858487/353910.terrain new file mode 100644 index 000000000..142d3543d Binary files /dev/null and b/public/terrain/19/858487/353910.terrain differ diff --git a/public/terrain/19/858487/353911.terrain b/public/terrain/19/858487/353911.terrain new file mode 100644 index 000000000..cf635b038 Binary files /dev/null and b/public/terrain/19/858487/353911.terrain differ diff --git a/public/terrain/19/858487/353912.terrain b/public/terrain/19/858487/353912.terrain new file mode 100644 index 000000000..17ab508d1 Binary files /dev/null and b/public/terrain/19/858487/353912.terrain differ diff --git a/public/terrain/19/858487/353913.terrain b/public/terrain/19/858487/353913.terrain new file mode 100644 index 000000000..32a028b43 Binary files /dev/null and b/public/terrain/19/858487/353913.terrain differ diff --git a/public/terrain/19/858487/353914.terrain b/public/terrain/19/858487/353914.terrain new file mode 100644 index 000000000..f99019e05 Binary files /dev/null and b/public/terrain/19/858487/353914.terrain differ diff --git a/public/terrain/19/858487/353915.terrain b/public/terrain/19/858487/353915.terrain new file mode 100644 index 000000000..0d530782d Binary files /dev/null and b/public/terrain/19/858487/353915.terrain differ diff --git a/public/terrain/19/858487/353916.terrain b/public/terrain/19/858487/353916.terrain new file mode 100644 index 000000000..e7d2e25ea Binary files /dev/null and b/public/terrain/19/858487/353916.terrain differ diff --git a/public/terrain/19/858487/353917.terrain b/public/terrain/19/858487/353917.terrain new file mode 100644 index 000000000..fb625e43e Binary files /dev/null and b/public/terrain/19/858487/353917.terrain differ diff --git a/public/terrain/19/858487/353918.terrain b/public/terrain/19/858487/353918.terrain new file mode 100644 index 000000000..b24a79f4e Binary files /dev/null and b/public/terrain/19/858487/353918.terrain differ diff --git a/public/terrain/19/858487/353919.terrain b/public/terrain/19/858487/353919.terrain new file mode 100644 index 000000000..cad6f3e7b Binary files /dev/null and b/public/terrain/19/858487/353919.terrain differ diff --git a/public/terrain/19/858487/353920.terrain b/public/terrain/19/858487/353920.terrain new file mode 100644 index 000000000..f2854b591 Binary files /dev/null and b/public/terrain/19/858487/353920.terrain differ diff --git a/public/terrain/19/858487/353921.terrain b/public/terrain/19/858487/353921.terrain new file mode 100644 index 000000000..f3702cf40 Binary files /dev/null and b/public/terrain/19/858487/353921.terrain differ diff --git a/public/terrain/19/858487/353922.terrain b/public/terrain/19/858487/353922.terrain new file mode 100644 index 000000000..ef4d1554c Binary files /dev/null and b/public/terrain/19/858487/353922.terrain differ diff --git a/public/terrain/19/858487/353923.terrain b/public/terrain/19/858487/353923.terrain new file mode 100644 index 000000000..e45bb380f Binary files /dev/null and b/public/terrain/19/858487/353923.terrain differ diff --git a/public/terrain/19/858487/353924.terrain b/public/terrain/19/858487/353924.terrain new file mode 100644 index 000000000..0cdf9e125 Binary files /dev/null and b/public/terrain/19/858487/353924.terrain differ diff --git a/public/terrain/19/858487/353925.terrain b/public/terrain/19/858487/353925.terrain new file mode 100644 index 000000000..45bdd737a Binary files /dev/null and b/public/terrain/19/858487/353925.terrain differ diff --git a/public/terrain/19/858487/353926.terrain b/public/terrain/19/858487/353926.terrain new file mode 100644 index 000000000..cd2ebf932 Binary files /dev/null and b/public/terrain/19/858487/353926.terrain differ diff --git a/public/terrain/19/858487/353927.terrain b/public/terrain/19/858487/353927.terrain new file mode 100644 index 000000000..978bc1e2e Binary files /dev/null and b/public/terrain/19/858487/353927.terrain differ diff --git a/public/terrain/19/858487/353928.terrain b/public/terrain/19/858487/353928.terrain new file mode 100644 index 000000000..b50cb3565 Binary files /dev/null and b/public/terrain/19/858487/353928.terrain differ diff --git a/public/terrain/19/858487/353929.terrain b/public/terrain/19/858487/353929.terrain new file mode 100644 index 000000000..fee89040e Binary files /dev/null and b/public/terrain/19/858487/353929.terrain differ diff --git a/public/terrain/19/858487/353930.terrain b/public/terrain/19/858487/353930.terrain new file mode 100644 index 000000000..2d93f0616 Binary files /dev/null and b/public/terrain/19/858487/353930.terrain differ diff --git a/public/terrain/19/858487/353931.terrain b/public/terrain/19/858487/353931.terrain new file mode 100644 index 000000000..42ca90148 Binary files /dev/null and b/public/terrain/19/858487/353931.terrain differ diff --git a/public/terrain/19/858487/353932.terrain b/public/terrain/19/858487/353932.terrain new file mode 100644 index 000000000..df2d804d1 Binary files /dev/null and b/public/terrain/19/858487/353932.terrain differ diff --git a/public/terrain/19/858487/353933.terrain b/public/terrain/19/858487/353933.terrain new file mode 100644 index 000000000..b1f524639 Binary files /dev/null and b/public/terrain/19/858487/353933.terrain differ diff --git a/public/terrain/19/858487/353934.terrain b/public/terrain/19/858487/353934.terrain new file mode 100644 index 000000000..9a36750f3 Binary files /dev/null and b/public/terrain/19/858487/353934.terrain differ diff --git a/public/terrain/19/858487/353935.terrain b/public/terrain/19/858487/353935.terrain new file mode 100644 index 000000000..222dc90df Binary files /dev/null and b/public/terrain/19/858487/353935.terrain differ diff --git a/public/terrain/19/858487/353936.terrain b/public/terrain/19/858487/353936.terrain new file mode 100644 index 000000000..4b5bbc459 Binary files /dev/null and b/public/terrain/19/858487/353936.terrain differ diff --git a/public/terrain/19/858487/353937.terrain b/public/terrain/19/858487/353937.terrain new file mode 100644 index 000000000..2efb28f69 Binary files /dev/null and b/public/terrain/19/858487/353937.terrain differ diff --git a/public/terrain/19/858487/353938.terrain b/public/terrain/19/858487/353938.terrain new file mode 100644 index 000000000..a115d2be5 Binary files /dev/null and b/public/terrain/19/858487/353938.terrain differ diff --git a/public/terrain/19/858487/353939.terrain b/public/terrain/19/858487/353939.terrain new file mode 100644 index 000000000..f4bb75a4b Binary files /dev/null and b/public/terrain/19/858487/353939.terrain differ diff --git a/public/terrain/19/858487/353940.terrain b/public/terrain/19/858487/353940.terrain new file mode 100644 index 000000000..30beba1fe Binary files /dev/null and b/public/terrain/19/858487/353940.terrain differ diff --git a/public/terrain/19/858487/353941.terrain b/public/terrain/19/858487/353941.terrain new file mode 100644 index 000000000..1ad84979f Binary files /dev/null and b/public/terrain/19/858487/353941.terrain differ diff --git a/public/terrain/19/858487/353942.terrain b/public/terrain/19/858487/353942.terrain new file mode 100644 index 000000000..a1a842e12 Binary files /dev/null and b/public/terrain/19/858487/353942.terrain differ diff --git a/public/terrain/19/858487/353943.terrain b/public/terrain/19/858487/353943.terrain new file mode 100644 index 000000000..c319d9e7f Binary files /dev/null and b/public/terrain/19/858487/353943.terrain differ diff --git a/public/terrain/19/858487/353944.terrain b/public/terrain/19/858487/353944.terrain new file mode 100644 index 000000000..b6d67c202 Binary files /dev/null and b/public/terrain/19/858487/353944.terrain differ diff --git a/public/terrain/19/858487/353945.terrain b/public/terrain/19/858487/353945.terrain new file mode 100644 index 000000000..195e2f03e Binary files /dev/null and b/public/terrain/19/858487/353945.terrain differ diff --git a/public/terrain/19/858487/353946.terrain b/public/terrain/19/858487/353946.terrain new file mode 100644 index 000000000..b53c56676 Binary files /dev/null and b/public/terrain/19/858487/353946.terrain differ diff --git a/public/terrain/19/858487/353947.terrain b/public/terrain/19/858487/353947.terrain new file mode 100644 index 000000000..4492b8522 Binary files /dev/null and b/public/terrain/19/858487/353947.terrain differ diff --git a/public/terrain/19/858487/353948.terrain b/public/terrain/19/858487/353948.terrain new file mode 100644 index 000000000..5d8849d49 Binary files /dev/null and b/public/terrain/19/858487/353948.terrain differ diff --git a/public/terrain/19/858487/353949.terrain b/public/terrain/19/858487/353949.terrain new file mode 100644 index 000000000..6d7d68691 Binary files /dev/null and b/public/terrain/19/858487/353949.terrain differ diff --git a/public/terrain/19/858487/353950.terrain b/public/terrain/19/858487/353950.terrain new file mode 100644 index 000000000..116c1feb6 Binary files /dev/null and b/public/terrain/19/858487/353950.terrain differ diff --git a/public/terrain/19/858487/353951.terrain b/public/terrain/19/858487/353951.terrain new file mode 100644 index 000000000..c0ac52fc0 Binary files /dev/null and b/public/terrain/19/858487/353951.terrain differ diff --git a/public/terrain/19/858487/353952.terrain b/public/terrain/19/858487/353952.terrain new file mode 100644 index 000000000..39da56d58 Binary files /dev/null and b/public/terrain/19/858487/353952.terrain differ diff --git a/public/terrain/19/858487/353953.terrain b/public/terrain/19/858487/353953.terrain new file mode 100644 index 000000000..e1d813212 Binary files /dev/null and b/public/terrain/19/858487/353953.terrain differ diff --git a/public/terrain/19/858487/353954.terrain b/public/terrain/19/858487/353954.terrain new file mode 100644 index 000000000..7d63878b5 Binary files /dev/null and b/public/terrain/19/858487/353954.terrain differ diff --git a/public/terrain/19/858487/353955.terrain b/public/terrain/19/858487/353955.terrain new file mode 100644 index 000000000..11b1bc7a7 Binary files /dev/null and b/public/terrain/19/858487/353955.terrain differ diff --git a/public/terrain/19/858487/353956.terrain b/public/terrain/19/858487/353956.terrain new file mode 100644 index 000000000..ce86a9e13 Binary files /dev/null and b/public/terrain/19/858487/353956.terrain differ diff --git a/public/terrain/19/858487/353957.terrain b/public/terrain/19/858487/353957.terrain new file mode 100644 index 000000000..a34bb5d48 Binary files /dev/null and b/public/terrain/19/858487/353957.terrain differ diff --git a/public/terrain/19/858487/353958.terrain b/public/terrain/19/858487/353958.terrain new file mode 100644 index 000000000..4946d3ceb Binary files /dev/null and b/public/terrain/19/858487/353958.terrain differ diff --git a/public/terrain/19/858487/353959.terrain b/public/terrain/19/858487/353959.terrain new file mode 100644 index 000000000..a1a593a6e Binary files /dev/null and b/public/terrain/19/858487/353959.terrain differ diff --git a/public/terrain/19/858487/353960.terrain b/public/terrain/19/858487/353960.terrain new file mode 100644 index 000000000..3f2b721c0 Binary files /dev/null and b/public/terrain/19/858487/353960.terrain differ diff --git a/public/terrain/19/858487/353961.terrain b/public/terrain/19/858487/353961.terrain new file mode 100644 index 000000000..c81bc0a49 Binary files /dev/null and b/public/terrain/19/858487/353961.terrain differ diff --git a/public/terrain/19/858487/353962.terrain b/public/terrain/19/858487/353962.terrain new file mode 100644 index 000000000..3302b1b7e Binary files /dev/null and b/public/terrain/19/858487/353962.terrain differ diff --git a/public/terrain/19/858487/353963.terrain b/public/terrain/19/858487/353963.terrain new file mode 100644 index 000000000..e01383c95 Binary files /dev/null and b/public/terrain/19/858487/353963.terrain differ diff --git a/public/terrain/19/858487/353964.terrain b/public/terrain/19/858487/353964.terrain new file mode 100644 index 000000000..2eb0f5cc2 Binary files /dev/null and b/public/terrain/19/858487/353964.terrain differ diff --git a/public/terrain/19/858487/353965.terrain b/public/terrain/19/858487/353965.terrain new file mode 100644 index 000000000..510ba2eeb Binary files /dev/null and b/public/terrain/19/858487/353965.terrain differ diff --git a/public/terrain/19/858487/353966.terrain b/public/terrain/19/858487/353966.terrain new file mode 100644 index 000000000..89b227057 Binary files /dev/null and b/public/terrain/19/858487/353966.terrain differ diff --git a/public/terrain/19/858487/353967.terrain b/public/terrain/19/858487/353967.terrain new file mode 100644 index 000000000..530e23adf Binary files /dev/null and b/public/terrain/19/858487/353967.terrain differ diff --git a/public/terrain/19/858487/353968.terrain b/public/terrain/19/858487/353968.terrain new file mode 100644 index 000000000..70bb901e7 Binary files /dev/null and b/public/terrain/19/858487/353968.terrain differ diff --git a/public/terrain/19/858487/353969.terrain b/public/terrain/19/858487/353969.terrain new file mode 100644 index 000000000..48ddac69c Binary files /dev/null and b/public/terrain/19/858487/353969.terrain differ diff --git a/public/terrain/19/858487/353970.terrain b/public/terrain/19/858487/353970.terrain new file mode 100644 index 000000000..017cc164b Binary files /dev/null and b/public/terrain/19/858487/353970.terrain differ diff --git a/public/terrain/19/858487/353971.terrain b/public/terrain/19/858487/353971.terrain new file mode 100644 index 000000000..b1f618718 Binary files /dev/null and b/public/terrain/19/858487/353971.terrain differ diff --git a/public/terrain/19/858487/353972.terrain b/public/terrain/19/858487/353972.terrain new file mode 100644 index 000000000..3febeb22e Binary files /dev/null and b/public/terrain/19/858487/353972.terrain differ diff --git a/public/terrain/19/858487/353973.terrain b/public/terrain/19/858487/353973.terrain new file mode 100644 index 000000000..a2f3e7976 Binary files /dev/null and b/public/terrain/19/858487/353973.terrain differ diff --git a/public/terrain/19/858487/353974.terrain b/public/terrain/19/858487/353974.terrain new file mode 100644 index 000000000..841495ab8 Binary files /dev/null and b/public/terrain/19/858487/353974.terrain differ diff --git a/public/terrain/19/858487/353975.terrain b/public/terrain/19/858487/353975.terrain new file mode 100644 index 000000000..3c631d032 Binary files /dev/null and b/public/terrain/19/858487/353975.terrain differ diff --git a/public/terrain/19/858487/353976.terrain b/public/terrain/19/858487/353976.terrain new file mode 100644 index 000000000..b0c1b20fe Binary files /dev/null and b/public/terrain/19/858487/353976.terrain differ diff --git a/public/terrain/19/858487/353977.terrain b/public/terrain/19/858487/353977.terrain new file mode 100644 index 000000000..97f10ca78 Binary files /dev/null and b/public/terrain/19/858487/353977.terrain differ diff --git a/public/terrain/19/858487/353978.terrain b/public/terrain/19/858487/353978.terrain new file mode 100644 index 000000000..e41500bac Binary files /dev/null and b/public/terrain/19/858487/353978.terrain differ diff --git a/public/terrain/19/858487/353979.terrain b/public/terrain/19/858487/353979.terrain new file mode 100644 index 000000000..fffa51fae Binary files /dev/null and b/public/terrain/19/858487/353979.terrain differ diff --git a/public/terrain/19/858487/353980.terrain b/public/terrain/19/858487/353980.terrain new file mode 100644 index 000000000..b427b7bb5 Binary files /dev/null and b/public/terrain/19/858487/353980.terrain differ diff --git a/public/terrain/19/858487/353981.terrain b/public/terrain/19/858487/353981.terrain new file mode 100644 index 000000000..bdacedad1 Binary files /dev/null and b/public/terrain/19/858487/353981.terrain differ diff --git a/public/terrain/19/858487/353982.terrain b/public/terrain/19/858487/353982.terrain new file mode 100644 index 000000000..583cccc4a Binary files /dev/null and b/public/terrain/19/858487/353982.terrain differ diff --git a/public/terrain/19/858487/353983.terrain b/public/terrain/19/858487/353983.terrain new file mode 100644 index 000000000..86fb95a10 Binary files /dev/null and b/public/terrain/19/858487/353983.terrain differ diff --git a/public/terrain/19/858487/353984.terrain b/public/terrain/19/858487/353984.terrain new file mode 100644 index 000000000..f4471cbcc Binary files /dev/null and b/public/terrain/19/858487/353984.terrain differ diff --git a/public/terrain/19/858487/353985.terrain b/public/terrain/19/858487/353985.terrain new file mode 100644 index 000000000..685a3d5f2 Binary files /dev/null and b/public/terrain/19/858487/353985.terrain differ diff --git a/public/terrain/19/858487/353986.terrain b/public/terrain/19/858487/353986.terrain new file mode 100644 index 000000000..e138b8507 Binary files /dev/null and b/public/terrain/19/858487/353986.terrain differ diff --git a/public/terrain/19/858487/353987.terrain b/public/terrain/19/858487/353987.terrain new file mode 100644 index 000000000..f05065606 Binary files /dev/null and b/public/terrain/19/858487/353987.terrain differ diff --git a/public/terrain/19/858487/353988.terrain b/public/terrain/19/858487/353988.terrain new file mode 100644 index 000000000..c3950fa29 Binary files /dev/null and b/public/terrain/19/858487/353988.terrain differ diff --git a/public/terrain/19/858487/353989.terrain b/public/terrain/19/858487/353989.terrain new file mode 100644 index 000000000..eadce8e25 Binary files /dev/null and b/public/terrain/19/858487/353989.terrain differ diff --git a/public/terrain/19/858487/353990.terrain b/public/terrain/19/858487/353990.terrain new file mode 100644 index 000000000..486f87905 Binary files /dev/null and b/public/terrain/19/858487/353990.terrain differ diff --git a/public/terrain/19/858487/353991.terrain b/public/terrain/19/858487/353991.terrain new file mode 100644 index 000000000..a403a72d6 Binary files /dev/null and b/public/terrain/19/858487/353991.terrain differ diff --git a/public/terrain/19/858487/353992.terrain b/public/terrain/19/858487/353992.terrain new file mode 100644 index 000000000..906bee79a Binary files /dev/null and b/public/terrain/19/858487/353992.terrain differ diff --git a/public/terrain/19/858487/353993.terrain b/public/terrain/19/858487/353993.terrain new file mode 100644 index 000000000..2f488eb3e Binary files /dev/null and b/public/terrain/19/858487/353993.terrain differ diff --git a/public/terrain/19/858487/353994.terrain b/public/terrain/19/858487/353994.terrain new file mode 100644 index 000000000..cb2ba62e1 Binary files /dev/null and b/public/terrain/19/858487/353994.terrain differ diff --git a/public/terrain/19/858487/353995.terrain b/public/terrain/19/858487/353995.terrain new file mode 100644 index 000000000..940ffb396 Binary files /dev/null and b/public/terrain/19/858487/353995.terrain differ diff --git a/public/terrain/19/858487/353996.terrain b/public/terrain/19/858487/353996.terrain new file mode 100644 index 000000000..155fea568 Binary files /dev/null and b/public/terrain/19/858487/353996.terrain differ diff --git a/public/terrain/19/858487/353997.terrain b/public/terrain/19/858487/353997.terrain new file mode 100644 index 000000000..6e7dbe42d Binary files /dev/null and b/public/terrain/19/858487/353997.terrain differ diff --git a/public/terrain/19/858487/353998.terrain b/public/terrain/19/858487/353998.terrain new file mode 100644 index 000000000..2acbe2bba Binary files /dev/null and b/public/terrain/19/858487/353998.terrain differ diff --git a/public/terrain/19/858487/353999.terrain b/public/terrain/19/858487/353999.terrain new file mode 100644 index 000000000..23125bdb3 Binary files /dev/null and b/public/terrain/19/858487/353999.terrain differ diff --git a/public/terrain/19/858487/354000.terrain b/public/terrain/19/858487/354000.terrain new file mode 100644 index 000000000..44cd477f6 Binary files /dev/null and b/public/terrain/19/858487/354000.terrain differ diff --git a/public/terrain/19/858487/354001.terrain b/public/terrain/19/858487/354001.terrain new file mode 100644 index 000000000..f668cff70 Binary files /dev/null and b/public/terrain/19/858487/354001.terrain differ diff --git a/public/terrain/19/858487/354002.terrain b/public/terrain/19/858487/354002.terrain new file mode 100644 index 000000000..b168f357b Binary files /dev/null and b/public/terrain/19/858487/354002.terrain differ diff --git a/public/terrain/19/858487/354003.terrain b/public/terrain/19/858487/354003.terrain new file mode 100644 index 000000000..d41d5b3a5 Binary files /dev/null and b/public/terrain/19/858487/354003.terrain differ diff --git a/public/terrain/19/858487/354004.terrain b/public/terrain/19/858487/354004.terrain new file mode 100644 index 000000000..3866fdb59 Binary files /dev/null and b/public/terrain/19/858487/354004.terrain differ diff --git a/public/terrain/19/858487/354005.terrain b/public/terrain/19/858487/354005.terrain new file mode 100644 index 000000000..938d8dba5 Binary files /dev/null and b/public/terrain/19/858487/354005.terrain differ diff --git a/public/terrain/19/858487/354006.terrain b/public/terrain/19/858487/354006.terrain new file mode 100644 index 000000000..cc2ca6d86 Binary files /dev/null and b/public/terrain/19/858487/354006.terrain differ diff --git a/public/terrain/19/858487/354007.terrain b/public/terrain/19/858487/354007.terrain new file mode 100644 index 000000000..e3f4bcf50 Binary files /dev/null and b/public/terrain/19/858487/354007.terrain differ diff --git a/public/terrain/19/858487/354008.terrain b/public/terrain/19/858487/354008.terrain new file mode 100644 index 000000000..d47569db6 Binary files /dev/null and b/public/terrain/19/858487/354008.terrain differ diff --git a/public/terrain/19/858487/354009.terrain b/public/terrain/19/858487/354009.terrain new file mode 100644 index 000000000..6cbbbb46f Binary files /dev/null and b/public/terrain/19/858487/354009.terrain differ diff --git a/public/terrain/19/858487/354010.terrain b/public/terrain/19/858487/354010.terrain new file mode 100644 index 000000000..6e8b1aa28 Binary files /dev/null and b/public/terrain/19/858487/354010.terrain differ diff --git a/public/terrain/19/858487/354011.terrain b/public/terrain/19/858487/354011.terrain new file mode 100644 index 000000000..17f37df89 Binary files /dev/null and b/public/terrain/19/858487/354011.terrain differ diff --git a/public/terrain/19/858487/354012.terrain b/public/terrain/19/858487/354012.terrain new file mode 100644 index 000000000..859824776 Binary files /dev/null and b/public/terrain/19/858487/354012.terrain differ diff --git a/public/terrain/19/858487/354013.terrain b/public/terrain/19/858487/354013.terrain new file mode 100644 index 000000000..0d4abcb7c Binary files /dev/null and b/public/terrain/19/858487/354013.terrain differ diff --git a/public/terrain/19/858487/354014.terrain b/public/terrain/19/858487/354014.terrain new file mode 100644 index 000000000..a0c41ca2d Binary files /dev/null and b/public/terrain/19/858487/354014.terrain differ diff --git a/public/terrain/19/858487/354015.terrain b/public/terrain/19/858487/354015.terrain new file mode 100644 index 000000000..5d9fd509a Binary files /dev/null and b/public/terrain/19/858487/354015.terrain differ diff --git a/public/terrain/19/858487/354016.terrain b/public/terrain/19/858487/354016.terrain new file mode 100644 index 000000000..12c5f9b5b Binary files /dev/null and b/public/terrain/19/858487/354016.terrain differ diff --git a/public/terrain/19/858487/354017.terrain b/public/terrain/19/858487/354017.terrain new file mode 100644 index 000000000..db8d4f912 Binary files /dev/null and b/public/terrain/19/858487/354017.terrain differ diff --git a/public/terrain/19/858487/354018.terrain b/public/terrain/19/858487/354018.terrain new file mode 100644 index 000000000..00f723a07 Binary files /dev/null and b/public/terrain/19/858487/354018.terrain differ diff --git a/public/terrain/19/858487/354019.terrain b/public/terrain/19/858487/354019.terrain new file mode 100644 index 000000000..1750a4405 Binary files /dev/null and b/public/terrain/19/858487/354019.terrain differ diff --git a/public/terrain/19/858487/354020.terrain b/public/terrain/19/858487/354020.terrain new file mode 100644 index 000000000..040a9faa0 Binary files /dev/null and b/public/terrain/19/858487/354020.terrain differ diff --git a/public/terrain/19/858487/354021.terrain b/public/terrain/19/858487/354021.terrain new file mode 100644 index 000000000..fcf499acb Binary files /dev/null and b/public/terrain/19/858487/354021.terrain differ diff --git a/public/terrain/19/858487/354022.terrain b/public/terrain/19/858487/354022.terrain new file mode 100644 index 000000000..63295a076 Binary files /dev/null and b/public/terrain/19/858487/354022.terrain differ diff --git a/public/terrain/19/858487/354023.terrain b/public/terrain/19/858487/354023.terrain new file mode 100644 index 000000000..4a8db3c0a Binary files /dev/null and b/public/terrain/19/858487/354023.terrain differ diff --git a/public/terrain/19/858487/354024.terrain b/public/terrain/19/858487/354024.terrain new file mode 100644 index 000000000..827783a55 Binary files /dev/null and b/public/terrain/19/858487/354024.terrain differ diff --git a/public/terrain/19/858487/354025.terrain b/public/terrain/19/858487/354025.terrain new file mode 100644 index 000000000..e75fabf61 Binary files /dev/null and b/public/terrain/19/858487/354025.terrain differ diff --git a/public/terrain/19/858487/354026.terrain b/public/terrain/19/858487/354026.terrain new file mode 100644 index 000000000..31926fbd9 Binary files /dev/null and b/public/terrain/19/858487/354026.terrain differ diff --git a/public/terrain/19/858487/354027.terrain b/public/terrain/19/858487/354027.terrain new file mode 100644 index 000000000..fe0e8b8e3 Binary files /dev/null and b/public/terrain/19/858487/354027.terrain differ diff --git a/public/terrain/19/858487/354028.terrain b/public/terrain/19/858487/354028.terrain new file mode 100644 index 000000000..cb1b121cd Binary files /dev/null and b/public/terrain/19/858487/354028.terrain differ diff --git a/public/terrain/19/858487/354029.terrain b/public/terrain/19/858487/354029.terrain new file mode 100644 index 000000000..be43f6e05 Binary files /dev/null and b/public/terrain/19/858487/354029.terrain differ diff --git a/public/terrain/19/858487/354030.terrain b/public/terrain/19/858487/354030.terrain new file mode 100644 index 000000000..2e2196a6d Binary files /dev/null and b/public/terrain/19/858487/354030.terrain differ diff --git a/public/terrain/19/858487/354031.terrain b/public/terrain/19/858487/354031.terrain new file mode 100644 index 000000000..b09fff508 Binary files /dev/null and b/public/terrain/19/858487/354031.terrain differ diff --git a/public/terrain/19/858487/354032.terrain b/public/terrain/19/858487/354032.terrain new file mode 100644 index 000000000..ef01219a5 Binary files /dev/null and b/public/terrain/19/858487/354032.terrain differ diff --git a/public/terrain/19/858487/354033.terrain b/public/terrain/19/858487/354033.terrain new file mode 100644 index 000000000..a976d5d15 Binary files /dev/null and b/public/terrain/19/858487/354033.terrain differ diff --git a/public/terrain/19/858487/354034.terrain b/public/terrain/19/858487/354034.terrain new file mode 100644 index 000000000..87a95d60b Binary files /dev/null and b/public/terrain/19/858487/354034.terrain differ diff --git a/public/terrain/19/858487/354035.terrain b/public/terrain/19/858487/354035.terrain new file mode 100644 index 000000000..c82b52470 Binary files /dev/null and b/public/terrain/19/858487/354035.terrain differ diff --git a/public/terrain/19/858487/354036.terrain b/public/terrain/19/858487/354036.terrain new file mode 100644 index 000000000..a4c8ca8c0 Binary files /dev/null and b/public/terrain/19/858487/354036.terrain differ diff --git a/public/terrain/19/858487/354037.terrain b/public/terrain/19/858487/354037.terrain new file mode 100644 index 000000000..45277d560 Binary files /dev/null and b/public/terrain/19/858487/354037.terrain differ diff --git a/public/terrain/19/858487/354038.terrain b/public/terrain/19/858487/354038.terrain new file mode 100644 index 000000000..2e0872574 Binary files /dev/null and b/public/terrain/19/858487/354038.terrain differ diff --git a/public/terrain/19/858487/354039.terrain b/public/terrain/19/858487/354039.terrain new file mode 100644 index 000000000..449b6e4a9 Binary files /dev/null and b/public/terrain/19/858487/354039.terrain differ diff --git a/public/terrain/19/858487/354040.terrain b/public/terrain/19/858487/354040.terrain new file mode 100644 index 000000000..cc3c4877d Binary files /dev/null and b/public/terrain/19/858487/354040.terrain differ diff --git a/public/terrain/19/858487/354041.terrain b/public/terrain/19/858487/354041.terrain new file mode 100644 index 000000000..dd16b44b9 Binary files /dev/null and b/public/terrain/19/858487/354041.terrain differ diff --git a/public/terrain/19/858487/354042.terrain b/public/terrain/19/858487/354042.terrain new file mode 100644 index 000000000..725ff56df Binary files /dev/null and b/public/terrain/19/858487/354042.terrain differ diff --git a/public/terrain/19/858487/354043.terrain b/public/terrain/19/858487/354043.terrain new file mode 100644 index 000000000..f71f4c774 Binary files /dev/null and b/public/terrain/19/858487/354043.terrain differ diff --git a/public/terrain/19/858487/354044.terrain b/public/terrain/19/858487/354044.terrain new file mode 100644 index 000000000..7ba5ce623 Binary files /dev/null and b/public/terrain/19/858487/354044.terrain differ diff --git a/public/terrain/19/858487/354045.terrain b/public/terrain/19/858487/354045.terrain new file mode 100644 index 000000000..bd9ea1cd2 Binary files /dev/null and b/public/terrain/19/858487/354045.terrain differ diff --git a/public/terrain/19/858487/354046.terrain b/public/terrain/19/858487/354046.terrain new file mode 100644 index 000000000..bfd1213b1 Binary files /dev/null and b/public/terrain/19/858487/354046.terrain differ diff --git a/public/terrain/19/858487/354047.terrain b/public/terrain/19/858487/354047.terrain new file mode 100644 index 000000000..5519ab2ba Binary files /dev/null and b/public/terrain/19/858487/354047.terrain differ diff --git a/public/terrain/19/858487/354048.terrain b/public/terrain/19/858487/354048.terrain new file mode 100644 index 000000000..ad5e3087c Binary files /dev/null and b/public/terrain/19/858487/354048.terrain differ diff --git a/public/terrain/19/858487/354049.terrain b/public/terrain/19/858487/354049.terrain new file mode 100644 index 000000000..ffa2896d1 Binary files /dev/null and b/public/terrain/19/858487/354049.terrain differ diff --git a/public/terrain/19/858487/354050.terrain b/public/terrain/19/858487/354050.terrain new file mode 100644 index 000000000..34626f7ef Binary files /dev/null and b/public/terrain/19/858487/354050.terrain differ diff --git a/public/terrain/19/858487/354051.terrain b/public/terrain/19/858487/354051.terrain new file mode 100644 index 000000000..7f38e4236 Binary files /dev/null and b/public/terrain/19/858487/354051.terrain differ diff --git a/public/terrain/19/858487/354052.terrain b/public/terrain/19/858487/354052.terrain new file mode 100644 index 000000000..c86f149ce Binary files /dev/null and b/public/terrain/19/858487/354052.terrain differ diff --git a/public/terrain/19/858487/354053.terrain b/public/terrain/19/858487/354053.terrain new file mode 100644 index 000000000..608daf3ba Binary files /dev/null and b/public/terrain/19/858487/354053.terrain differ diff --git a/public/terrain/19/858487/354054.terrain b/public/terrain/19/858487/354054.terrain new file mode 100644 index 000000000..b4576ae4b Binary files /dev/null and b/public/terrain/19/858487/354054.terrain differ diff --git a/public/terrain/19/858487/354055.terrain b/public/terrain/19/858487/354055.terrain new file mode 100644 index 000000000..e6879876b Binary files /dev/null and b/public/terrain/19/858487/354055.terrain differ diff --git a/public/terrain/19/858487/354056.terrain b/public/terrain/19/858487/354056.terrain new file mode 100644 index 000000000..6e784a896 Binary files /dev/null and b/public/terrain/19/858487/354056.terrain differ diff --git a/public/terrain/19/858487/354057.terrain b/public/terrain/19/858487/354057.terrain new file mode 100644 index 000000000..6affcfbee Binary files /dev/null and b/public/terrain/19/858487/354057.terrain differ diff --git a/public/terrain/19/858487/354058.terrain b/public/terrain/19/858487/354058.terrain new file mode 100644 index 000000000..bb842e5ac Binary files /dev/null and b/public/terrain/19/858487/354058.terrain differ diff --git a/public/terrain/19/858487/354059.terrain b/public/terrain/19/858487/354059.terrain new file mode 100644 index 000000000..cc0c2bd2f Binary files /dev/null and b/public/terrain/19/858487/354059.terrain differ diff --git a/public/terrain/19/858488/353743.terrain b/public/terrain/19/858488/353743.terrain new file mode 100644 index 000000000..57e5760b7 Binary files /dev/null and b/public/terrain/19/858488/353743.terrain differ diff --git a/public/terrain/19/858488/353744.terrain b/public/terrain/19/858488/353744.terrain new file mode 100644 index 000000000..3ebb0188b Binary files /dev/null and b/public/terrain/19/858488/353744.terrain differ diff --git a/public/terrain/19/858488/353745.terrain b/public/terrain/19/858488/353745.terrain new file mode 100644 index 000000000..9e601ac44 Binary files /dev/null and b/public/terrain/19/858488/353745.terrain differ diff --git a/public/terrain/19/858488/353746.terrain b/public/terrain/19/858488/353746.terrain new file mode 100644 index 000000000..fc608181c Binary files /dev/null and b/public/terrain/19/858488/353746.terrain differ diff --git a/public/terrain/19/858488/353747.terrain b/public/terrain/19/858488/353747.terrain new file mode 100644 index 000000000..8449a46b4 Binary files /dev/null and b/public/terrain/19/858488/353747.terrain differ diff --git a/public/terrain/19/858488/353748.terrain b/public/terrain/19/858488/353748.terrain new file mode 100644 index 000000000..be079a70b Binary files /dev/null and b/public/terrain/19/858488/353748.terrain differ diff --git a/public/terrain/19/858488/353749.terrain b/public/terrain/19/858488/353749.terrain new file mode 100644 index 000000000..f4d841f8e Binary files /dev/null and b/public/terrain/19/858488/353749.terrain differ diff --git a/public/terrain/19/858488/353750.terrain b/public/terrain/19/858488/353750.terrain new file mode 100644 index 000000000..6242e7109 Binary files /dev/null and b/public/terrain/19/858488/353750.terrain differ diff --git a/public/terrain/19/858488/353751.terrain b/public/terrain/19/858488/353751.terrain new file mode 100644 index 000000000..5b31601d6 Binary files /dev/null and b/public/terrain/19/858488/353751.terrain differ diff --git a/public/terrain/19/858488/353752.terrain b/public/terrain/19/858488/353752.terrain new file mode 100644 index 000000000..ae4cb08a6 Binary files /dev/null and b/public/terrain/19/858488/353752.terrain differ diff --git a/public/terrain/19/858488/353753.terrain b/public/terrain/19/858488/353753.terrain new file mode 100644 index 000000000..ca3cc1e19 Binary files /dev/null and b/public/terrain/19/858488/353753.terrain differ diff --git a/public/terrain/19/858488/353754.terrain b/public/terrain/19/858488/353754.terrain new file mode 100644 index 000000000..2a552d291 Binary files /dev/null and b/public/terrain/19/858488/353754.terrain differ diff --git a/public/terrain/19/858488/353755.terrain b/public/terrain/19/858488/353755.terrain new file mode 100644 index 000000000..f228443ba Binary files /dev/null and b/public/terrain/19/858488/353755.terrain differ diff --git a/public/terrain/19/858488/353756.terrain b/public/terrain/19/858488/353756.terrain new file mode 100644 index 000000000..55322aa56 Binary files /dev/null and b/public/terrain/19/858488/353756.terrain differ diff --git a/public/terrain/19/858488/353757.terrain b/public/terrain/19/858488/353757.terrain new file mode 100644 index 000000000..35e01f12c Binary files /dev/null and b/public/terrain/19/858488/353757.terrain differ diff --git a/public/terrain/19/858488/353758.terrain b/public/terrain/19/858488/353758.terrain new file mode 100644 index 000000000..a8502a29e Binary files /dev/null and b/public/terrain/19/858488/353758.terrain differ diff --git a/public/terrain/19/858488/353759.terrain b/public/terrain/19/858488/353759.terrain new file mode 100644 index 000000000..1264abfe2 Binary files /dev/null and b/public/terrain/19/858488/353759.terrain differ diff --git a/public/terrain/19/858488/353760.terrain b/public/terrain/19/858488/353760.terrain new file mode 100644 index 000000000..d67a75891 Binary files /dev/null and b/public/terrain/19/858488/353760.terrain differ diff --git a/public/terrain/19/858488/353761.terrain b/public/terrain/19/858488/353761.terrain new file mode 100644 index 000000000..6aaa463ba Binary files /dev/null and b/public/terrain/19/858488/353761.terrain differ diff --git a/public/terrain/19/858488/353762.terrain b/public/terrain/19/858488/353762.terrain new file mode 100644 index 000000000..323e4ee86 Binary files /dev/null and b/public/terrain/19/858488/353762.terrain differ diff --git a/public/terrain/19/858488/353763.terrain b/public/terrain/19/858488/353763.terrain new file mode 100644 index 000000000..02013906a Binary files /dev/null and b/public/terrain/19/858488/353763.terrain differ diff --git a/public/terrain/19/858488/353764.terrain b/public/terrain/19/858488/353764.terrain new file mode 100644 index 000000000..71e7a5daf Binary files /dev/null and b/public/terrain/19/858488/353764.terrain differ diff --git a/public/terrain/19/858488/353765.terrain b/public/terrain/19/858488/353765.terrain new file mode 100644 index 000000000..916534ab4 Binary files /dev/null and b/public/terrain/19/858488/353765.terrain differ diff --git a/public/terrain/19/858488/353766.terrain b/public/terrain/19/858488/353766.terrain new file mode 100644 index 000000000..a49ed0aac Binary files /dev/null and b/public/terrain/19/858488/353766.terrain differ diff --git a/public/terrain/19/858488/353767.terrain b/public/terrain/19/858488/353767.terrain new file mode 100644 index 000000000..3b82ef8ce Binary files /dev/null and b/public/terrain/19/858488/353767.terrain differ diff --git a/public/terrain/19/858488/353768.terrain b/public/terrain/19/858488/353768.terrain new file mode 100644 index 000000000..92dec6926 Binary files /dev/null and b/public/terrain/19/858488/353768.terrain differ diff --git a/public/terrain/19/858488/353769.terrain b/public/terrain/19/858488/353769.terrain new file mode 100644 index 000000000..297cbe4b1 Binary files /dev/null and b/public/terrain/19/858488/353769.terrain differ diff --git a/public/terrain/19/858488/353770.terrain b/public/terrain/19/858488/353770.terrain new file mode 100644 index 000000000..857d815c1 Binary files /dev/null and b/public/terrain/19/858488/353770.terrain differ diff --git a/public/terrain/19/858488/353771.terrain b/public/terrain/19/858488/353771.terrain new file mode 100644 index 000000000..ccd19bacb Binary files /dev/null and b/public/terrain/19/858488/353771.terrain differ diff --git a/public/terrain/19/858488/353772.terrain b/public/terrain/19/858488/353772.terrain new file mode 100644 index 000000000..620eb8378 Binary files /dev/null and b/public/terrain/19/858488/353772.terrain differ diff --git a/public/terrain/19/858488/353773.terrain b/public/terrain/19/858488/353773.terrain new file mode 100644 index 000000000..c25cd4382 Binary files /dev/null and b/public/terrain/19/858488/353773.terrain differ diff --git a/public/terrain/19/858488/353774.terrain b/public/terrain/19/858488/353774.terrain new file mode 100644 index 000000000..2e96c5e72 Binary files /dev/null and b/public/terrain/19/858488/353774.terrain differ diff --git a/public/terrain/19/858488/353775.terrain b/public/terrain/19/858488/353775.terrain new file mode 100644 index 000000000..bf4e56414 Binary files /dev/null and b/public/terrain/19/858488/353775.terrain differ diff --git a/public/terrain/19/858488/353776.terrain b/public/terrain/19/858488/353776.terrain new file mode 100644 index 000000000..d0c7ec088 Binary files /dev/null and b/public/terrain/19/858488/353776.terrain differ diff --git a/public/terrain/19/858488/353777.terrain b/public/terrain/19/858488/353777.terrain new file mode 100644 index 000000000..7a73283d8 Binary files /dev/null and b/public/terrain/19/858488/353777.terrain differ diff --git a/public/terrain/19/858488/353778.terrain b/public/terrain/19/858488/353778.terrain new file mode 100644 index 000000000..1378b652d Binary files /dev/null and b/public/terrain/19/858488/353778.terrain differ diff --git a/public/terrain/19/858488/353779.terrain b/public/terrain/19/858488/353779.terrain new file mode 100644 index 000000000..9d62bdcb6 Binary files /dev/null and b/public/terrain/19/858488/353779.terrain differ diff --git a/public/terrain/19/858488/353780.terrain b/public/terrain/19/858488/353780.terrain new file mode 100644 index 000000000..ba0e4123f Binary files /dev/null and b/public/terrain/19/858488/353780.terrain differ diff --git a/public/terrain/19/858488/353781.terrain b/public/terrain/19/858488/353781.terrain new file mode 100644 index 000000000..7a703465c Binary files /dev/null and b/public/terrain/19/858488/353781.terrain differ diff --git a/public/terrain/19/858488/353782.terrain b/public/terrain/19/858488/353782.terrain new file mode 100644 index 000000000..55d7359a3 Binary files /dev/null and b/public/terrain/19/858488/353782.terrain differ diff --git a/public/terrain/19/858488/353783.terrain b/public/terrain/19/858488/353783.terrain new file mode 100644 index 000000000..2b286399d Binary files /dev/null and b/public/terrain/19/858488/353783.terrain differ diff --git a/public/terrain/19/858488/353784.terrain b/public/terrain/19/858488/353784.terrain new file mode 100644 index 000000000..a1f61df9e Binary files /dev/null and b/public/terrain/19/858488/353784.terrain differ diff --git a/public/terrain/19/858488/353785.terrain b/public/terrain/19/858488/353785.terrain new file mode 100644 index 000000000..ef5cc70d1 Binary files /dev/null and b/public/terrain/19/858488/353785.terrain differ diff --git a/public/terrain/19/858488/353786.terrain b/public/terrain/19/858488/353786.terrain new file mode 100644 index 000000000..ed945f3e7 Binary files /dev/null and b/public/terrain/19/858488/353786.terrain differ diff --git a/public/terrain/19/858488/353787.terrain b/public/terrain/19/858488/353787.terrain new file mode 100644 index 000000000..5eee5f652 Binary files /dev/null and b/public/terrain/19/858488/353787.terrain differ diff --git a/public/terrain/19/858488/353788.terrain b/public/terrain/19/858488/353788.terrain new file mode 100644 index 000000000..31d260d03 Binary files /dev/null and b/public/terrain/19/858488/353788.terrain differ diff --git a/public/terrain/19/858488/353789.terrain b/public/terrain/19/858488/353789.terrain new file mode 100644 index 000000000..ced74e41a Binary files /dev/null and b/public/terrain/19/858488/353789.terrain differ diff --git a/public/terrain/19/858488/353790.terrain b/public/terrain/19/858488/353790.terrain new file mode 100644 index 000000000..d8a798338 Binary files /dev/null and b/public/terrain/19/858488/353790.terrain differ diff --git a/public/terrain/19/858488/353791.terrain b/public/terrain/19/858488/353791.terrain new file mode 100644 index 000000000..ef4ccd7e1 Binary files /dev/null and b/public/terrain/19/858488/353791.terrain differ diff --git a/public/terrain/19/858488/353792.terrain b/public/terrain/19/858488/353792.terrain new file mode 100644 index 000000000..e2ad37f0a Binary files /dev/null and b/public/terrain/19/858488/353792.terrain differ diff --git a/public/terrain/19/858488/353793.terrain b/public/terrain/19/858488/353793.terrain new file mode 100644 index 000000000..298d4b211 Binary files /dev/null and b/public/terrain/19/858488/353793.terrain differ diff --git a/public/terrain/19/858488/353794.terrain b/public/terrain/19/858488/353794.terrain new file mode 100644 index 000000000..f6f09c4a6 Binary files /dev/null and b/public/terrain/19/858488/353794.terrain differ diff --git a/public/terrain/19/858488/353795.terrain b/public/terrain/19/858488/353795.terrain new file mode 100644 index 000000000..dbacae492 Binary files /dev/null and b/public/terrain/19/858488/353795.terrain differ diff --git a/public/terrain/19/858488/353796.terrain b/public/terrain/19/858488/353796.terrain new file mode 100644 index 000000000..92369c1e9 Binary files /dev/null and b/public/terrain/19/858488/353796.terrain differ diff --git a/public/terrain/19/858488/353797.terrain b/public/terrain/19/858488/353797.terrain new file mode 100644 index 000000000..0b1b0c10f Binary files /dev/null and b/public/terrain/19/858488/353797.terrain differ diff --git a/public/terrain/19/858488/353798.terrain b/public/terrain/19/858488/353798.terrain new file mode 100644 index 000000000..da5937ba7 Binary files /dev/null and b/public/terrain/19/858488/353798.terrain differ diff --git a/public/terrain/19/858488/353799.terrain b/public/terrain/19/858488/353799.terrain new file mode 100644 index 000000000..fa9417f8f Binary files /dev/null and b/public/terrain/19/858488/353799.terrain differ diff --git a/public/terrain/19/858488/353800.terrain b/public/terrain/19/858488/353800.terrain new file mode 100644 index 000000000..6198fc116 Binary files /dev/null and b/public/terrain/19/858488/353800.terrain differ diff --git a/public/terrain/19/858488/353801.terrain b/public/terrain/19/858488/353801.terrain new file mode 100644 index 000000000..e94a79a88 Binary files /dev/null and b/public/terrain/19/858488/353801.terrain differ diff --git a/public/terrain/19/858488/353802.terrain b/public/terrain/19/858488/353802.terrain new file mode 100644 index 000000000..e1161412c Binary files /dev/null and b/public/terrain/19/858488/353802.terrain differ diff --git a/public/terrain/19/858488/353803.terrain b/public/terrain/19/858488/353803.terrain new file mode 100644 index 000000000..a7984d4bd Binary files /dev/null and b/public/terrain/19/858488/353803.terrain differ diff --git a/public/terrain/19/858488/353804.terrain b/public/terrain/19/858488/353804.terrain new file mode 100644 index 000000000..2fdec8602 Binary files /dev/null and b/public/terrain/19/858488/353804.terrain differ diff --git a/public/terrain/19/858488/353805.terrain b/public/terrain/19/858488/353805.terrain new file mode 100644 index 000000000..7b735bb5c Binary files /dev/null and b/public/terrain/19/858488/353805.terrain differ diff --git a/public/terrain/19/858488/353806.terrain b/public/terrain/19/858488/353806.terrain new file mode 100644 index 000000000..636e054eb Binary files /dev/null and b/public/terrain/19/858488/353806.terrain differ diff --git a/public/terrain/19/858488/353807.terrain b/public/terrain/19/858488/353807.terrain new file mode 100644 index 000000000..0dff53315 Binary files /dev/null and b/public/terrain/19/858488/353807.terrain differ diff --git a/public/terrain/19/858488/353808.terrain b/public/terrain/19/858488/353808.terrain new file mode 100644 index 000000000..576681d53 Binary files /dev/null and b/public/terrain/19/858488/353808.terrain differ diff --git a/public/terrain/19/858488/353809.terrain b/public/terrain/19/858488/353809.terrain new file mode 100644 index 000000000..80d47cd80 Binary files /dev/null and b/public/terrain/19/858488/353809.terrain differ diff --git a/public/terrain/19/858488/353810.terrain b/public/terrain/19/858488/353810.terrain new file mode 100644 index 000000000..2cee2d73d Binary files /dev/null and b/public/terrain/19/858488/353810.terrain differ diff --git a/public/terrain/19/858488/353811.terrain b/public/terrain/19/858488/353811.terrain new file mode 100644 index 000000000..b9375e4b8 Binary files /dev/null and b/public/terrain/19/858488/353811.terrain differ diff --git a/public/terrain/19/858488/353812.terrain b/public/terrain/19/858488/353812.terrain new file mode 100644 index 000000000..d3edc290a Binary files /dev/null and b/public/terrain/19/858488/353812.terrain differ diff --git a/public/terrain/19/858488/353813.terrain b/public/terrain/19/858488/353813.terrain new file mode 100644 index 000000000..8f12c456e Binary files /dev/null and b/public/terrain/19/858488/353813.terrain differ diff --git a/public/terrain/19/858488/353814.terrain b/public/terrain/19/858488/353814.terrain new file mode 100644 index 000000000..ce851f2bd Binary files /dev/null and b/public/terrain/19/858488/353814.terrain differ diff --git a/public/terrain/19/858488/353815.terrain b/public/terrain/19/858488/353815.terrain new file mode 100644 index 000000000..6993568ff Binary files /dev/null and b/public/terrain/19/858488/353815.terrain differ diff --git a/public/terrain/19/858488/353816.terrain b/public/terrain/19/858488/353816.terrain new file mode 100644 index 000000000..e46296910 Binary files /dev/null and b/public/terrain/19/858488/353816.terrain differ diff --git a/public/terrain/19/858488/353817.terrain b/public/terrain/19/858488/353817.terrain new file mode 100644 index 000000000..64ea33a72 Binary files /dev/null and b/public/terrain/19/858488/353817.terrain differ diff --git a/public/terrain/19/858488/353818.terrain b/public/terrain/19/858488/353818.terrain new file mode 100644 index 000000000..fb7ec604b Binary files /dev/null and b/public/terrain/19/858488/353818.terrain differ diff --git a/public/terrain/19/858488/353819.terrain b/public/terrain/19/858488/353819.terrain new file mode 100644 index 000000000..dbd9df02b Binary files /dev/null and b/public/terrain/19/858488/353819.terrain differ diff --git a/public/terrain/19/858488/353820.terrain b/public/terrain/19/858488/353820.terrain new file mode 100644 index 000000000..31af88d44 Binary files /dev/null and b/public/terrain/19/858488/353820.terrain differ diff --git a/public/terrain/19/858488/353821.terrain b/public/terrain/19/858488/353821.terrain new file mode 100644 index 000000000..22d3874a4 Binary files /dev/null and b/public/terrain/19/858488/353821.terrain differ diff --git a/public/terrain/19/858488/353822.terrain b/public/terrain/19/858488/353822.terrain new file mode 100644 index 000000000..36fdf4bec Binary files /dev/null and b/public/terrain/19/858488/353822.terrain differ diff --git a/public/terrain/19/858488/353823.terrain b/public/terrain/19/858488/353823.terrain new file mode 100644 index 000000000..c2988f70f Binary files /dev/null and b/public/terrain/19/858488/353823.terrain differ diff --git a/public/terrain/19/858488/353824.terrain b/public/terrain/19/858488/353824.terrain new file mode 100644 index 000000000..1d43d850d Binary files /dev/null and b/public/terrain/19/858488/353824.terrain differ diff --git a/public/terrain/19/858488/353825.terrain b/public/terrain/19/858488/353825.terrain new file mode 100644 index 000000000..3f7571c61 Binary files /dev/null and b/public/terrain/19/858488/353825.terrain differ diff --git a/public/terrain/19/858488/353826.terrain b/public/terrain/19/858488/353826.terrain new file mode 100644 index 000000000..51d4e0424 Binary files /dev/null and b/public/terrain/19/858488/353826.terrain differ diff --git a/public/terrain/19/858488/353827.terrain b/public/terrain/19/858488/353827.terrain new file mode 100644 index 000000000..faad28717 Binary files /dev/null and b/public/terrain/19/858488/353827.terrain differ diff --git a/public/terrain/19/858488/353828.terrain b/public/terrain/19/858488/353828.terrain new file mode 100644 index 000000000..486bb27dc Binary files /dev/null and b/public/terrain/19/858488/353828.terrain differ diff --git a/public/terrain/19/858488/353829.terrain b/public/terrain/19/858488/353829.terrain new file mode 100644 index 000000000..9d7141e21 Binary files /dev/null and b/public/terrain/19/858488/353829.terrain differ diff --git a/public/terrain/19/858488/353830.terrain b/public/terrain/19/858488/353830.terrain new file mode 100644 index 000000000..982c73439 Binary files /dev/null and b/public/terrain/19/858488/353830.terrain differ diff --git a/public/terrain/19/858488/353831.terrain b/public/terrain/19/858488/353831.terrain new file mode 100644 index 000000000..98eae36bc Binary files /dev/null and b/public/terrain/19/858488/353831.terrain differ diff --git a/public/terrain/19/858488/353832.terrain b/public/terrain/19/858488/353832.terrain new file mode 100644 index 000000000..9da8e29f1 Binary files /dev/null and b/public/terrain/19/858488/353832.terrain differ diff --git a/public/terrain/19/858488/353833.terrain b/public/terrain/19/858488/353833.terrain new file mode 100644 index 000000000..ec0ec7158 Binary files /dev/null and b/public/terrain/19/858488/353833.terrain differ diff --git a/public/terrain/19/858488/353834.terrain b/public/terrain/19/858488/353834.terrain new file mode 100644 index 000000000..8d13f89e6 Binary files /dev/null and b/public/terrain/19/858488/353834.terrain differ diff --git a/public/terrain/19/858488/353835.terrain b/public/terrain/19/858488/353835.terrain new file mode 100644 index 000000000..42c7f6ed3 Binary files /dev/null and b/public/terrain/19/858488/353835.terrain differ diff --git a/public/terrain/19/858488/353836.terrain b/public/terrain/19/858488/353836.terrain new file mode 100644 index 000000000..21a276dbf Binary files /dev/null and b/public/terrain/19/858488/353836.terrain differ diff --git a/public/terrain/19/858488/353837.terrain b/public/terrain/19/858488/353837.terrain new file mode 100644 index 000000000..e2a1a9ff4 Binary files /dev/null and b/public/terrain/19/858488/353837.terrain differ diff --git a/public/terrain/19/858488/353838.terrain b/public/terrain/19/858488/353838.terrain new file mode 100644 index 000000000..c07a1099a Binary files /dev/null and b/public/terrain/19/858488/353838.terrain differ diff --git a/public/terrain/19/858488/353839.terrain b/public/terrain/19/858488/353839.terrain new file mode 100644 index 000000000..3a995b8ee Binary files /dev/null and b/public/terrain/19/858488/353839.terrain differ diff --git a/public/terrain/19/858488/353840.terrain b/public/terrain/19/858488/353840.terrain new file mode 100644 index 000000000..08437576b Binary files /dev/null and b/public/terrain/19/858488/353840.terrain differ diff --git a/public/terrain/19/858488/353841.terrain b/public/terrain/19/858488/353841.terrain new file mode 100644 index 000000000..cd1a3d643 Binary files /dev/null and b/public/terrain/19/858488/353841.terrain differ diff --git a/public/terrain/19/858488/353842.terrain b/public/terrain/19/858488/353842.terrain new file mode 100644 index 000000000..b19fcda95 Binary files /dev/null and b/public/terrain/19/858488/353842.terrain differ diff --git a/public/terrain/19/858488/353843.terrain b/public/terrain/19/858488/353843.terrain new file mode 100644 index 000000000..41f9ab78b Binary files /dev/null and b/public/terrain/19/858488/353843.terrain differ diff --git a/public/terrain/19/858488/353844.terrain b/public/terrain/19/858488/353844.terrain new file mode 100644 index 000000000..e1a0e22c6 Binary files /dev/null and b/public/terrain/19/858488/353844.terrain differ diff --git a/public/terrain/19/858488/353845.terrain b/public/terrain/19/858488/353845.terrain new file mode 100644 index 000000000..23c209dac Binary files /dev/null and b/public/terrain/19/858488/353845.terrain differ diff --git a/public/terrain/19/858488/353846.terrain b/public/terrain/19/858488/353846.terrain new file mode 100644 index 000000000..111388a2c Binary files /dev/null and b/public/terrain/19/858488/353846.terrain differ diff --git a/public/terrain/19/858488/353847.terrain b/public/terrain/19/858488/353847.terrain new file mode 100644 index 000000000..09f99bee8 Binary files /dev/null and b/public/terrain/19/858488/353847.terrain differ diff --git a/public/terrain/19/858488/353848.terrain b/public/terrain/19/858488/353848.terrain new file mode 100644 index 000000000..1357c6ce3 Binary files /dev/null and b/public/terrain/19/858488/353848.terrain differ diff --git a/public/terrain/19/858488/353849.terrain b/public/terrain/19/858488/353849.terrain new file mode 100644 index 000000000..1cb4bd676 Binary files /dev/null and b/public/terrain/19/858488/353849.terrain differ diff --git a/public/terrain/19/858488/353850.terrain b/public/terrain/19/858488/353850.terrain new file mode 100644 index 000000000..81dd2f776 Binary files /dev/null and b/public/terrain/19/858488/353850.terrain differ diff --git a/public/terrain/19/858488/353851.terrain b/public/terrain/19/858488/353851.terrain new file mode 100644 index 000000000..6e6a40c6a Binary files /dev/null and b/public/terrain/19/858488/353851.terrain differ diff --git a/public/terrain/19/858488/353852.terrain b/public/terrain/19/858488/353852.terrain new file mode 100644 index 000000000..f3998493f Binary files /dev/null and b/public/terrain/19/858488/353852.terrain differ diff --git a/public/terrain/19/858488/353853.terrain b/public/terrain/19/858488/353853.terrain new file mode 100644 index 000000000..d5af4f8c9 Binary files /dev/null and b/public/terrain/19/858488/353853.terrain differ diff --git a/public/terrain/19/858488/353854.terrain b/public/terrain/19/858488/353854.terrain new file mode 100644 index 000000000..fb4c91987 Binary files /dev/null and b/public/terrain/19/858488/353854.terrain differ diff --git a/public/terrain/19/858488/353855.terrain b/public/terrain/19/858488/353855.terrain new file mode 100644 index 000000000..a690e1352 Binary files /dev/null and b/public/terrain/19/858488/353855.terrain differ diff --git a/public/terrain/19/858488/353856.terrain b/public/terrain/19/858488/353856.terrain new file mode 100644 index 000000000..b8863d72b Binary files /dev/null and b/public/terrain/19/858488/353856.terrain differ diff --git a/public/terrain/19/858488/353857.terrain b/public/terrain/19/858488/353857.terrain new file mode 100644 index 000000000..490f55e6f Binary files /dev/null and b/public/terrain/19/858488/353857.terrain differ diff --git a/public/terrain/19/858488/353858.terrain b/public/terrain/19/858488/353858.terrain new file mode 100644 index 000000000..ebc9ba95a Binary files /dev/null and b/public/terrain/19/858488/353858.terrain differ diff --git a/public/terrain/19/858488/353859.terrain b/public/terrain/19/858488/353859.terrain new file mode 100644 index 000000000..e71cf72ab Binary files /dev/null and b/public/terrain/19/858488/353859.terrain differ diff --git a/public/terrain/19/858488/353860.terrain b/public/terrain/19/858488/353860.terrain new file mode 100644 index 000000000..dc709bbac Binary files /dev/null and b/public/terrain/19/858488/353860.terrain differ diff --git a/public/terrain/19/858488/353861.terrain b/public/terrain/19/858488/353861.terrain new file mode 100644 index 000000000..c58d05908 Binary files /dev/null and b/public/terrain/19/858488/353861.terrain differ diff --git a/public/terrain/19/858488/353862.terrain b/public/terrain/19/858488/353862.terrain new file mode 100644 index 000000000..cef592dc0 Binary files /dev/null and b/public/terrain/19/858488/353862.terrain differ diff --git a/public/terrain/19/858488/353863.terrain b/public/terrain/19/858488/353863.terrain new file mode 100644 index 000000000..703bea9a0 Binary files /dev/null and b/public/terrain/19/858488/353863.terrain differ diff --git a/public/terrain/19/858488/353864.terrain b/public/terrain/19/858488/353864.terrain new file mode 100644 index 000000000..2c9141cfe Binary files /dev/null and b/public/terrain/19/858488/353864.terrain differ diff --git a/public/terrain/19/858488/353865.terrain b/public/terrain/19/858488/353865.terrain new file mode 100644 index 000000000..48a6aeb0e Binary files /dev/null and b/public/terrain/19/858488/353865.terrain differ diff --git a/public/terrain/19/858488/353866.terrain b/public/terrain/19/858488/353866.terrain new file mode 100644 index 000000000..514254caf Binary files /dev/null and b/public/terrain/19/858488/353866.terrain differ diff --git a/public/terrain/19/858488/353867.terrain b/public/terrain/19/858488/353867.terrain new file mode 100644 index 000000000..6eca74f18 Binary files /dev/null and b/public/terrain/19/858488/353867.terrain differ diff --git a/public/terrain/19/858488/353868.terrain b/public/terrain/19/858488/353868.terrain new file mode 100644 index 000000000..3ffc336b8 Binary files /dev/null and b/public/terrain/19/858488/353868.terrain differ diff --git a/public/terrain/19/858488/353869.terrain b/public/terrain/19/858488/353869.terrain new file mode 100644 index 000000000..29f4bac68 Binary files /dev/null and b/public/terrain/19/858488/353869.terrain differ diff --git a/public/terrain/19/858488/353870.terrain b/public/terrain/19/858488/353870.terrain new file mode 100644 index 000000000..9d0368a96 Binary files /dev/null and b/public/terrain/19/858488/353870.terrain differ diff --git a/public/terrain/19/858488/353871.terrain b/public/terrain/19/858488/353871.terrain new file mode 100644 index 000000000..61bfa5704 Binary files /dev/null and b/public/terrain/19/858488/353871.terrain differ diff --git a/public/terrain/19/858488/353872.terrain b/public/terrain/19/858488/353872.terrain new file mode 100644 index 000000000..fb688c3ff Binary files /dev/null and b/public/terrain/19/858488/353872.terrain differ diff --git a/public/terrain/19/858488/353873.terrain b/public/terrain/19/858488/353873.terrain new file mode 100644 index 000000000..0bf81ef31 Binary files /dev/null and b/public/terrain/19/858488/353873.terrain differ diff --git a/public/terrain/19/858488/353874.terrain b/public/terrain/19/858488/353874.terrain new file mode 100644 index 000000000..3608ddb7a Binary files /dev/null and b/public/terrain/19/858488/353874.terrain differ diff --git a/public/terrain/19/858488/353875.terrain b/public/terrain/19/858488/353875.terrain new file mode 100644 index 000000000..ff73d8cd8 Binary files /dev/null and b/public/terrain/19/858488/353875.terrain differ diff --git a/public/terrain/19/858488/353876.terrain b/public/terrain/19/858488/353876.terrain new file mode 100644 index 000000000..fc81ec20e Binary files /dev/null and b/public/terrain/19/858488/353876.terrain differ diff --git a/public/terrain/19/858488/353877.terrain b/public/terrain/19/858488/353877.terrain new file mode 100644 index 000000000..95046e46e Binary files /dev/null and b/public/terrain/19/858488/353877.terrain differ diff --git a/public/terrain/19/858488/353878.terrain b/public/terrain/19/858488/353878.terrain new file mode 100644 index 000000000..d0d13e9b4 Binary files /dev/null and b/public/terrain/19/858488/353878.terrain differ diff --git a/public/terrain/19/858488/353879.terrain b/public/terrain/19/858488/353879.terrain new file mode 100644 index 000000000..8ff17e23d Binary files /dev/null and b/public/terrain/19/858488/353879.terrain differ diff --git a/public/terrain/19/858488/353880.terrain b/public/terrain/19/858488/353880.terrain new file mode 100644 index 000000000..74156d07c Binary files /dev/null and b/public/terrain/19/858488/353880.terrain differ diff --git a/public/terrain/19/858488/353881.terrain b/public/terrain/19/858488/353881.terrain new file mode 100644 index 000000000..a0327ab41 Binary files /dev/null and b/public/terrain/19/858488/353881.terrain differ diff --git a/public/terrain/19/858488/353882.terrain b/public/terrain/19/858488/353882.terrain new file mode 100644 index 000000000..26a8013d0 Binary files /dev/null and b/public/terrain/19/858488/353882.terrain differ diff --git a/public/terrain/19/858488/353883.terrain b/public/terrain/19/858488/353883.terrain new file mode 100644 index 000000000..714b70ae2 Binary files /dev/null and b/public/terrain/19/858488/353883.terrain differ diff --git a/public/terrain/19/858488/353884.terrain b/public/terrain/19/858488/353884.terrain new file mode 100644 index 000000000..dbba6be79 Binary files /dev/null and b/public/terrain/19/858488/353884.terrain differ diff --git a/public/terrain/19/858488/353885.terrain b/public/terrain/19/858488/353885.terrain new file mode 100644 index 000000000..6fbf7b44f Binary files /dev/null and b/public/terrain/19/858488/353885.terrain differ diff --git a/public/terrain/19/858488/353886.terrain b/public/terrain/19/858488/353886.terrain new file mode 100644 index 000000000..5812ac06f Binary files /dev/null and b/public/terrain/19/858488/353886.terrain differ diff --git a/public/terrain/19/858488/353887.terrain b/public/terrain/19/858488/353887.terrain new file mode 100644 index 000000000..00038d081 Binary files /dev/null and b/public/terrain/19/858488/353887.terrain differ diff --git a/public/terrain/19/858488/353888.terrain b/public/terrain/19/858488/353888.terrain new file mode 100644 index 000000000..108610396 Binary files /dev/null and b/public/terrain/19/858488/353888.terrain differ diff --git a/public/terrain/19/858488/353889.terrain b/public/terrain/19/858488/353889.terrain new file mode 100644 index 000000000..33b2930cf Binary files /dev/null and b/public/terrain/19/858488/353889.terrain differ diff --git a/public/terrain/19/858488/353890.terrain b/public/terrain/19/858488/353890.terrain new file mode 100644 index 000000000..5eddfa4de Binary files /dev/null and b/public/terrain/19/858488/353890.terrain differ diff --git a/public/terrain/19/858488/353891.terrain b/public/terrain/19/858488/353891.terrain new file mode 100644 index 000000000..eb2254522 Binary files /dev/null and b/public/terrain/19/858488/353891.terrain differ diff --git a/public/terrain/19/858488/353892.terrain b/public/terrain/19/858488/353892.terrain new file mode 100644 index 000000000..7de193b22 Binary files /dev/null and b/public/terrain/19/858488/353892.terrain differ diff --git a/public/terrain/19/858488/353893.terrain b/public/terrain/19/858488/353893.terrain new file mode 100644 index 000000000..ff7b8cd67 Binary files /dev/null and b/public/terrain/19/858488/353893.terrain differ diff --git a/public/terrain/19/858488/353894.terrain b/public/terrain/19/858488/353894.terrain new file mode 100644 index 000000000..4210ed911 Binary files /dev/null and b/public/terrain/19/858488/353894.terrain differ diff --git a/public/terrain/19/858488/353895.terrain b/public/terrain/19/858488/353895.terrain new file mode 100644 index 000000000..b3f95c30c Binary files /dev/null and b/public/terrain/19/858488/353895.terrain differ diff --git a/public/terrain/19/858488/353896.terrain b/public/terrain/19/858488/353896.terrain new file mode 100644 index 000000000..62ccfdb3d Binary files /dev/null and b/public/terrain/19/858488/353896.terrain differ diff --git a/public/terrain/19/858488/353897.terrain b/public/terrain/19/858488/353897.terrain new file mode 100644 index 000000000..93591a9af Binary files /dev/null and b/public/terrain/19/858488/353897.terrain differ diff --git a/public/terrain/19/858488/353898.terrain b/public/terrain/19/858488/353898.terrain new file mode 100644 index 000000000..2ca4ef39d Binary files /dev/null and b/public/terrain/19/858488/353898.terrain differ diff --git a/public/terrain/19/858488/353899.terrain b/public/terrain/19/858488/353899.terrain new file mode 100644 index 000000000..8f40db166 Binary files /dev/null and b/public/terrain/19/858488/353899.terrain differ diff --git a/public/terrain/19/858488/353900.terrain b/public/terrain/19/858488/353900.terrain new file mode 100644 index 000000000..0b2fea770 Binary files /dev/null and b/public/terrain/19/858488/353900.terrain differ diff --git a/public/terrain/19/858488/353901.terrain b/public/terrain/19/858488/353901.terrain new file mode 100644 index 000000000..729c05fdb Binary files /dev/null and b/public/terrain/19/858488/353901.terrain differ diff --git a/public/terrain/19/858488/353902.terrain b/public/terrain/19/858488/353902.terrain new file mode 100644 index 000000000..28d4a2cf9 Binary files /dev/null and b/public/terrain/19/858488/353902.terrain differ diff --git a/public/terrain/19/858488/353903.terrain b/public/terrain/19/858488/353903.terrain new file mode 100644 index 000000000..b9383fa8c Binary files /dev/null and b/public/terrain/19/858488/353903.terrain differ diff --git a/public/terrain/19/858488/353904.terrain b/public/terrain/19/858488/353904.terrain new file mode 100644 index 000000000..66a3638bb Binary files /dev/null and b/public/terrain/19/858488/353904.terrain differ diff --git a/public/terrain/19/858488/353905.terrain b/public/terrain/19/858488/353905.terrain new file mode 100644 index 000000000..dff63de13 Binary files /dev/null and b/public/terrain/19/858488/353905.terrain differ diff --git a/public/terrain/19/858488/353906.terrain b/public/terrain/19/858488/353906.terrain new file mode 100644 index 000000000..f902e28eb Binary files /dev/null and b/public/terrain/19/858488/353906.terrain differ diff --git a/public/terrain/19/858488/353907.terrain b/public/terrain/19/858488/353907.terrain new file mode 100644 index 000000000..faf3f9657 Binary files /dev/null and b/public/terrain/19/858488/353907.terrain differ diff --git a/public/terrain/19/858488/353908.terrain b/public/terrain/19/858488/353908.terrain new file mode 100644 index 000000000..18e620786 Binary files /dev/null and b/public/terrain/19/858488/353908.terrain differ diff --git a/public/terrain/19/858488/353909.terrain b/public/terrain/19/858488/353909.terrain new file mode 100644 index 000000000..1e830da83 Binary files /dev/null and b/public/terrain/19/858488/353909.terrain differ diff --git a/public/terrain/19/858488/353910.terrain b/public/terrain/19/858488/353910.terrain new file mode 100644 index 000000000..ab5fd9be6 Binary files /dev/null and b/public/terrain/19/858488/353910.terrain differ diff --git a/public/terrain/19/858488/353911.terrain b/public/terrain/19/858488/353911.terrain new file mode 100644 index 000000000..661e54319 Binary files /dev/null and b/public/terrain/19/858488/353911.terrain differ diff --git a/public/terrain/19/858488/353912.terrain b/public/terrain/19/858488/353912.terrain new file mode 100644 index 000000000..cf65f6b5a Binary files /dev/null and b/public/terrain/19/858488/353912.terrain differ diff --git a/public/terrain/19/858488/353913.terrain b/public/terrain/19/858488/353913.terrain new file mode 100644 index 000000000..8eedf1072 Binary files /dev/null and b/public/terrain/19/858488/353913.terrain differ diff --git a/public/terrain/19/858488/353914.terrain b/public/terrain/19/858488/353914.terrain new file mode 100644 index 000000000..5c0b49a07 Binary files /dev/null and b/public/terrain/19/858488/353914.terrain differ diff --git a/public/terrain/19/858488/353915.terrain b/public/terrain/19/858488/353915.terrain new file mode 100644 index 000000000..7baefd5dc Binary files /dev/null and b/public/terrain/19/858488/353915.terrain differ diff --git a/public/terrain/19/858488/353916.terrain b/public/terrain/19/858488/353916.terrain new file mode 100644 index 000000000..ea1cc40fe Binary files /dev/null and b/public/terrain/19/858488/353916.terrain differ diff --git a/public/terrain/19/858488/353917.terrain b/public/terrain/19/858488/353917.terrain new file mode 100644 index 000000000..aa68871b8 Binary files /dev/null and b/public/terrain/19/858488/353917.terrain differ diff --git a/public/terrain/19/858488/353918.terrain b/public/terrain/19/858488/353918.terrain new file mode 100644 index 000000000..2d811410d Binary files /dev/null and b/public/terrain/19/858488/353918.terrain differ diff --git a/public/terrain/19/858488/353919.terrain b/public/terrain/19/858488/353919.terrain new file mode 100644 index 000000000..fc6c97bfe Binary files /dev/null and b/public/terrain/19/858488/353919.terrain differ diff --git a/public/terrain/19/858488/353920.terrain b/public/terrain/19/858488/353920.terrain new file mode 100644 index 000000000..ece8241e9 Binary files /dev/null and b/public/terrain/19/858488/353920.terrain differ diff --git a/public/terrain/19/858488/353921.terrain b/public/terrain/19/858488/353921.terrain new file mode 100644 index 000000000..f6cf6e23c Binary files /dev/null and b/public/terrain/19/858488/353921.terrain differ diff --git a/public/terrain/19/858488/353922.terrain b/public/terrain/19/858488/353922.terrain new file mode 100644 index 000000000..194276b86 Binary files /dev/null and b/public/terrain/19/858488/353922.terrain differ diff --git a/public/terrain/19/858488/353923.terrain b/public/terrain/19/858488/353923.terrain new file mode 100644 index 000000000..0e60b69a1 Binary files /dev/null and b/public/terrain/19/858488/353923.terrain differ diff --git a/public/terrain/19/858488/353924.terrain b/public/terrain/19/858488/353924.terrain new file mode 100644 index 000000000..65cc340d0 Binary files /dev/null and b/public/terrain/19/858488/353924.terrain differ diff --git a/public/terrain/19/858488/353925.terrain b/public/terrain/19/858488/353925.terrain new file mode 100644 index 000000000..8f061948f Binary files /dev/null and b/public/terrain/19/858488/353925.terrain differ diff --git a/public/terrain/19/858488/353926.terrain b/public/terrain/19/858488/353926.terrain new file mode 100644 index 000000000..20d7918f7 Binary files /dev/null and b/public/terrain/19/858488/353926.terrain differ diff --git a/public/terrain/19/858488/353927.terrain b/public/terrain/19/858488/353927.terrain new file mode 100644 index 000000000..bedee528b Binary files /dev/null and b/public/terrain/19/858488/353927.terrain differ diff --git a/public/terrain/19/858488/353928.terrain b/public/terrain/19/858488/353928.terrain new file mode 100644 index 000000000..4aa3dc8f8 Binary files /dev/null and b/public/terrain/19/858488/353928.terrain differ diff --git a/public/terrain/19/858488/353929.terrain b/public/terrain/19/858488/353929.terrain new file mode 100644 index 000000000..c1889f8fd Binary files /dev/null and b/public/terrain/19/858488/353929.terrain differ diff --git a/public/terrain/19/858488/353930.terrain b/public/terrain/19/858488/353930.terrain new file mode 100644 index 000000000..698f5d9e6 Binary files /dev/null and b/public/terrain/19/858488/353930.terrain differ diff --git a/public/terrain/19/858488/353931.terrain b/public/terrain/19/858488/353931.terrain new file mode 100644 index 000000000..9ea583f0b Binary files /dev/null and b/public/terrain/19/858488/353931.terrain differ diff --git a/public/terrain/19/858488/353932.terrain b/public/terrain/19/858488/353932.terrain new file mode 100644 index 000000000..db2f9ec61 Binary files /dev/null and b/public/terrain/19/858488/353932.terrain differ diff --git a/public/terrain/19/858488/353933.terrain b/public/terrain/19/858488/353933.terrain new file mode 100644 index 000000000..26700106e Binary files /dev/null and b/public/terrain/19/858488/353933.terrain differ diff --git a/public/terrain/19/858488/353934.terrain b/public/terrain/19/858488/353934.terrain new file mode 100644 index 000000000..0059582e9 Binary files /dev/null and b/public/terrain/19/858488/353934.terrain differ diff --git a/public/terrain/19/858488/353935.terrain b/public/terrain/19/858488/353935.terrain new file mode 100644 index 000000000..d9614c0e1 Binary files /dev/null and b/public/terrain/19/858488/353935.terrain differ diff --git a/public/terrain/19/858488/353936.terrain b/public/terrain/19/858488/353936.terrain new file mode 100644 index 000000000..c0daefc16 Binary files /dev/null and b/public/terrain/19/858488/353936.terrain differ diff --git a/public/terrain/19/858488/353937.terrain b/public/terrain/19/858488/353937.terrain new file mode 100644 index 000000000..4e17dd395 Binary files /dev/null and b/public/terrain/19/858488/353937.terrain differ diff --git a/public/terrain/19/858488/353938.terrain b/public/terrain/19/858488/353938.terrain new file mode 100644 index 000000000..0df5ba79d Binary files /dev/null and b/public/terrain/19/858488/353938.terrain differ diff --git a/public/terrain/19/858488/353939.terrain b/public/terrain/19/858488/353939.terrain new file mode 100644 index 000000000..600ee7cc3 Binary files /dev/null and b/public/terrain/19/858488/353939.terrain differ diff --git a/public/terrain/19/858488/353940.terrain b/public/terrain/19/858488/353940.terrain new file mode 100644 index 000000000..37921272a Binary files /dev/null and b/public/terrain/19/858488/353940.terrain differ diff --git a/public/terrain/19/858488/353941.terrain b/public/terrain/19/858488/353941.terrain new file mode 100644 index 000000000..1892dc95f Binary files /dev/null and b/public/terrain/19/858488/353941.terrain differ diff --git a/public/terrain/19/858488/353942.terrain b/public/terrain/19/858488/353942.terrain new file mode 100644 index 000000000..8d60452b8 Binary files /dev/null and b/public/terrain/19/858488/353942.terrain differ diff --git a/public/terrain/19/858488/353943.terrain b/public/terrain/19/858488/353943.terrain new file mode 100644 index 000000000..6558c28be Binary files /dev/null and b/public/terrain/19/858488/353943.terrain differ diff --git a/public/terrain/19/858488/353944.terrain b/public/terrain/19/858488/353944.terrain new file mode 100644 index 000000000..46bb53b2c Binary files /dev/null and b/public/terrain/19/858488/353944.terrain differ diff --git a/public/terrain/19/858488/353945.terrain b/public/terrain/19/858488/353945.terrain new file mode 100644 index 000000000..d79fe4f20 Binary files /dev/null and b/public/terrain/19/858488/353945.terrain differ diff --git a/public/terrain/19/858488/353946.terrain b/public/terrain/19/858488/353946.terrain new file mode 100644 index 000000000..a20dc31ed Binary files /dev/null and b/public/terrain/19/858488/353946.terrain differ diff --git a/public/terrain/19/858488/353947.terrain b/public/terrain/19/858488/353947.terrain new file mode 100644 index 000000000..67a67e1f0 Binary files /dev/null and b/public/terrain/19/858488/353947.terrain differ diff --git a/public/terrain/19/858488/353948.terrain b/public/terrain/19/858488/353948.terrain new file mode 100644 index 000000000..0718b4a26 Binary files /dev/null and b/public/terrain/19/858488/353948.terrain differ diff --git a/public/terrain/19/858488/353949.terrain b/public/terrain/19/858488/353949.terrain new file mode 100644 index 000000000..67ad948ef Binary files /dev/null and b/public/terrain/19/858488/353949.terrain differ diff --git a/public/terrain/19/858488/353950.terrain b/public/terrain/19/858488/353950.terrain new file mode 100644 index 000000000..ad64b92b9 Binary files /dev/null and b/public/terrain/19/858488/353950.terrain differ diff --git a/public/terrain/19/858488/353951.terrain b/public/terrain/19/858488/353951.terrain new file mode 100644 index 000000000..00979c5cd Binary files /dev/null and b/public/terrain/19/858488/353951.terrain differ diff --git a/public/terrain/19/858488/353952.terrain b/public/terrain/19/858488/353952.terrain new file mode 100644 index 000000000..8725e7378 Binary files /dev/null and b/public/terrain/19/858488/353952.terrain differ diff --git a/public/terrain/19/858488/353953.terrain b/public/terrain/19/858488/353953.terrain new file mode 100644 index 000000000..84231d989 Binary files /dev/null and b/public/terrain/19/858488/353953.terrain differ diff --git a/public/terrain/19/858488/353954.terrain b/public/terrain/19/858488/353954.terrain new file mode 100644 index 000000000..617fadc89 Binary files /dev/null and b/public/terrain/19/858488/353954.terrain differ diff --git a/public/terrain/19/858488/353955.terrain b/public/terrain/19/858488/353955.terrain new file mode 100644 index 000000000..0b52067a3 Binary files /dev/null and b/public/terrain/19/858488/353955.terrain differ diff --git a/public/terrain/19/858488/353956.terrain b/public/terrain/19/858488/353956.terrain new file mode 100644 index 000000000..b2f405519 Binary files /dev/null and b/public/terrain/19/858488/353956.terrain differ diff --git a/public/terrain/19/858488/353957.terrain b/public/terrain/19/858488/353957.terrain new file mode 100644 index 000000000..8316148fc Binary files /dev/null and b/public/terrain/19/858488/353957.terrain differ diff --git a/public/terrain/19/858488/353958.terrain b/public/terrain/19/858488/353958.terrain new file mode 100644 index 000000000..89848a751 Binary files /dev/null and b/public/terrain/19/858488/353958.terrain differ diff --git a/public/terrain/19/858488/353959.terrain b/public/terrain/19/858488/353959.terrain new file mode 100644 index 000000000..a69a90bfa Binary files /dev/null and b/public/terrain/19/858488/353959.terrain differ diff --git a/public/terrain/19/858488/353960.terrain b/public/terrain/19/858488/353960.terrain new file mode 100644 index 000000000..e033d5631 Binary files /dev/null and b/public/terrain/19/858488/353960.terrain differ diff --git a/public/terrain/19/858488/353961.terrain b/public/terrain/19/858488/353961.terrain new file mode 100644 index 000000000..e5a4c0573 Binary files /dev/null and b/public/terrain/19/858488/353961.terrain differ diff --git a/public/terrain/19/858488/353962.terrain b/public/terrain/19/858488/353962.terrain new file mode 100644 index 000000000..f35cd4dd8 Binary files /dev/null and b/public/terrain/19/858488/353962.terrain differ diff --git a/public/terrain/19/858488/353963.terrain b/public/terrain/19/858488/353963.terrain new file mode 100644 index 000000000..1a11444b3 Binary files /dev/null and b/public/terrain/19/858488/353963.terrain differ diff --git a/public/terrain/19/858488/353964.terrain b/public/terrain/19/858488/353964.terrain new file mode 100644 index 000000000..190e698bc Binary files /dev/null and b/public/terrain/19/858488/353964.terrain differ diff --git a/public/terrain/19/858488/353965.terrain b/public/terrain/19/858488/353965.terrain new file mode 100644 index 000000000..edefe42e8 Binary files /dev/null and b/public/terrain/19/858488/353965.terrain differ diff --git a/public/terrain/19/858488/353966.terrain b/public/terrain/19/858488/353966.terrain new file mode 100644 index 000000000..0d7205c59 Binary files /dev/null and b/public/terrain/19/858488/353966.terrain differ diff --git a/public/terrain/19/858488/353967.terrain b/public/terrain/19/858488/353967.terrain new file mode 100644 index 000000000..24be57981 Binary files /dev/null and b/public/terrain/19/858488/353967.terrain differ diff --git a/public/terrain/19/858488/353968.terrain b/public/terrain/19/858488/353968.terrain new file mode 100644 index 000000000..ddc22e8ec Binary files /dev/null and b/public/terrain/19/858488/353968.terrain differ diff --git a/public/terrain/19/858488/353969.terrain b/public/terrain/19/858488/353969.terrain new file mode 100644 index 000000000..ec93af755 Binary files /dev/null and b/public/terrain/19/858488/353969.terrain differ diff --git a/public/terrain/19/858488/353970.terrain b/public/terrain/19/858488/353970.terrain new file mode 100644 index 000000000..d951b4a11 Binary files /dev/null and b/public/terrain/19/858488/353970.terrain differ diff --git a/public/terrain/19/858488/353971.terrain b/public/terrain/19/858488/353971.terrain new file mode 100644 index 000000000..88013662a Binary files /dev/null and b/public/terrain/19/858488/353971.terrain differ diff --git a/public/terrain/19/858488/353972.terrain b/public/terrain/19/858488/353972.terrain new file mode 100644 index 000000000..19afa4709 Binary files /dev/null and b/public/terrain/19/858488/353972.terrain differ diff --git a/public/terrain/19/858488/353973.terrain b/public/terrain/19/858488/353973.terrain new file mode 100644 index 000000000..70c444f5c Binary files /dev/null and b/public/terrain/19/858488/353973.terrain differ diff --git a/public/terrain/19/858488/353974.terrain b/public/terrain/19/858488/353974.terrain new file mode 100644 index 000000000..ddbe065d8 Binary files /dev/null and b/public/terrain/19/858488/353974.terrain differ diff --git a/public/terrain/19/858488/353975.terrain b/public/terrain/19/858488/353975.terrain new file mode 100644 index 000000000..3126e0cd6 Binary files /dev/null and b/public/terrain/19/858488/353975.terrain differ diff --git a/public/terrain/19/858488/353976.terrain b/public/terrain/19/858488/353976.terrain new file mode 100644 index 000000000..02c269f13 Binary files /dev/null and b/public/terrain/19/858488/353976.terrain differ diff --git a/public/terrain/19/858488/353977.terrain b/public/terrain/19/858488/353977.terrain new file mode 100644 index 000000000..fe02b3a39 Binary files /dev/null and b/public/terrain/19/858488/353977.terrain differ diff --git a/public/terrain/19/858488/353978.terrain b/public/terrain/19/858488/353978.terrain new file mode 100644 index 000000000..73058e051 Binary files /dev/null and b/public/terrain/19/858488/353978.terrain differ diff --git a/public/terrain/19/858488/353979.terrain b/public/terrain/19/858488/353979.terrain new file mode 100644 index 000000000..7deb34a4c Binary files /dev/null and b/public/terrain/19/858488/353979.terrain differ diff --git a/public/terrain/19/858488/353980.terrain b/public/terrain/19/858488/353980.terrain new file mode 100644 index 000000000..8e20dc4db Binary files /dev/null and b/public/terrain/19/858488/353980.terrain differ diff --git a/public/terrain/19/858488/353981.terrain b/public/terrain/19/858488/353981.terrain new file mode 100644 index 000000000..4c6a0abdf Binary files /dev/null and b/public/terrain/19/858488/353981.terrain differ diff --git a/public/terrain/19/858488/353982.terrain b/public/terrain/19/858488/353982.terrain new file mode 100644 index 000000000..f2706d218 Binary files /dev/null and b/public/terrain/19/858488/353982.terrain differ diff --git a/public/terrain/19/858488/353983.terrain b/public/terrain/19/858488/353983.terrain new file mode 100644 index 000000000..5fae2611b Binary files /dev/null and b/public/terrain/19/858488/353983.terrain differ diff --git a/public/terrain/19/858488/353984.terrain b/public/terrain/19/858488/353984.terrain new file mode 100644 index 000000000..3b8688d09 Binary files /dev/null and b/public/terrain/19/858488/353984.terrain differ diff --git a/public/terrain/19/858488/353985.terrain b/public/terrain/19/858488/353985.terrain new file mode 100644 index 000000000..e206aa3d1 Binary files /dev/null and b/public/terrain/19/858488/353985.terrain differ diff --git a/public/terrain/19/858488/353986.terrain b/public/terrain/19/858488/353986.terrain new file mode 100644 index 000000000..432e40b47 Binary files /dev/null and b/public/terrain/19/858488/353986.terrain differ diff --git a/public/terrain/19/858488/353987.terrain b/public/terrain/19/858488/353987.terrain new file mode 100644 index 000000000..b7d440c99 Binary files /dev/null and b/public/terrain/19/858488/353987.terrain differ diff --git a/public/terrain/19/858488/353988.terrain b/public/terrain/19/858488/353988.terrain new file mode 100644 index 000000000..ff02ae0e0 Binary files /dev/null and b/public/terrain/19/858488/353988.terrain differ diff --git a/public/terrain/19/858488/353989.terrain b/public/terrain/19/858488/353989.terrain new file mode 100644 index 000000000..d947bfede Binary files /dev/null and b/public/terrain/19/858488/353989.terrain differ diff --git a/public/terrain/19/858488/353990.terrain b/public/terrain/19/858488/353990.terrain new file mode 100644 index 000000000..24fe6db8e Binary files /dev/null and b/public/terrain/19/858488/353990.terrain differ diff --git a/public/terrain/19/858488/353991.terrain b/public/terrain/19/858488/353991.terrain new file mode 100644 index 000000000..2d1fe3939 Binary files /dev/null and b/public/terrain/19/858488/353991.terrain differ diff --git a/public/terrain/19/858488/353992.terrain b/public/terrain/19/858488/353992.terrain new file mode 100644 index 000000000..815d4fb9f Binary files /dev/null and b/public/terrain/19/858488/353992.terrain differ diff --git a/public/terrain/19/858488/353993.terrain b/public/terrain/19/858488/353993.terrain new file mode 100644 index 000000000..3b47bc48a Binary files /dev/null and b/public/terrain/19/858488/353993.terrain differ diff --git a/public/terrain/19/858488/353994.terrain b/public/terrain/19/858488/353994.terrain new file mode 100644 index 000000000..b96afb11a Binary files /dev/null and b/public/terrain/19/858488/353994.terrain differ diff --git a/public/terrain/19/858488/353995.terrain b/public/terrain/19/858488/353995.terrain new file mode 100644 index 000000000..05d3c2d70 Binary files /dev/null and b/public/terrain/19/858488/353995.terrain differ diff --git a/public/terrain/19/858488/353996.terrain b/public/terrain/19/858488/353996.terrain new file mode 100644 index 000000000..66fada39f Binary files /dev/null and b/public/terrain/19/858488/353996.terrain differ diff --git a/public/terrain/19/858488/353997.terrain b/public/terrain/19/858488/353997.terrain new file mode 100644 index 000000000..7a9c23d5c Binary files /dev/null and b/public/terrain/19/858488/353997.terrain differ diff --git a/public/terrain/19/858488/353998.terrain b/public/terrain/19/858488/353998.terrain new file mode 100644 index 000000000..4c4d40677 Binary files /dev/null and b/public/terrain/19/858488/353998.terrain differ diff --git a/public/terrain/19/858488/353999.terrain b/public/terrain/19/858488/353999.terrain new file mode 100644 index 000000000..9b0e2436c Binary files /dev/null and b/public/terrain/19/858488/353999.terrain differ diff --git a/public/terrain/19/858488/354000.terrain b/public/terrain/19/858488/354000.terrain new file mode 100644 index 000000000..b6bdf7f79 Binary files /dev/null and b/public/terrain/19/858488/354000.terrain differ diff --git a/public/terrain/19/858488/354001.terrain b/public/terrain/19/858488/354001.terrain new file mode 100644 index 000000000..318bdc989 Binary files /dev/null and b/public/terrain/19/858488/354001.terrain differ diff --git a/public/terrain/19/858488/354002.terrain b/public/terrain/19/858488/354002.terrain new file mode 100644 index 000000000..2eed76447 Binary files /dev/null and b/public/terrain/19/858488/354002.terrain differ diff --git a/public/terrain/19/858488/354003.terrain b/public/terrain/19/858488/354003.terrain new file mode 100644 index 000000000..b1cb0f851 Binary files /dev/null and b/public/terrain/19/858488/354003.terrain differ diff --git a/public/terrain/19/858488/354004.terrain b/public/terrain/19/858488/354004.terrain new file mode 100644 index 000000000..bfa909477 Binary files /dev/null and b/public/terrain/19/858488/354004.terrain differ diff --git a/public/terrain/19/858488/354005.terrain b/public/terrain/19/858488/354005.terrain new file mode 100644 index 000000000..770db7d02 Binary files /dev/null and b/public/terrain/19/858488/354005.terrain differ diff --git a/public/terrain/19/858488/354006.terrain b/public/terrain/19/858488/354006.terrain new file mode 100644 index 000000000..5167cfb0b Binary files /dev/null and b/public/terrain/19/858488/354006.terrain differ diff --git a/public/terrain/19/858488/354007.terrain b/public/terrain/19/858488/354007.terrain new file mode 100644 index 000000000..683383bc1 Binary files /dev/null and b/public/terrain/19/858488/354007.terrain differ diff --git a/public/terrain/19/858488/354008.terrain b/public/terrain/19/858488/354008.terrain new file mode 100644 index 000000000..46efbddb9 Binary files /dev/null and b/public/terrain/19/858488/354008.terrain differ diff --git a/public/terrain/19/858488/354009.terrain b/public/terrain/19/858488/354009.terrain new file mode 100644 index 000000000..f0d3363d2 Binary files /dev/null and b/public/terrain/19/858488/354009.terrain differ diff --git a/public/terrain/19/858488/354010.terrain b/public/terrain/19/858488/354010.terrain new file mode 100644 index 000000000..557831cff Binary files /dev/null and b/public/terrain/19/858488/354010.terrain differ diff --git a/public/terrain/19/858488/354011.terrain b/public/terrain/19/858488/354011.terrain new file mode 100644 index 000000000..691fb8d78 Binary files /dev/null and b/public/terrain/19/858488/354011.terrain differ diff --git a/public/terrain/19/858488/354012.terrain b/public/terrain/19/858488/354012.terrain new file mode 100644 index 000000000..af52db85d Binary files /dev/null and b/public/terrain/19/858488/354012.terrain differ diff --git a/public/terrain/19/858488/354013.terrain b/public/terrain/19/858488/354013.terrain new file mode 100644 index 000000000..81dfbfb81 Binary files /dev/null and b/public/terrain/19/858488/354013.terrain differ diff --git a/public/terrain/19/858488/354014.terrain b/public/terrain/19/858488/354014.terrain new file mode 100644 index 000000000..62730d924 Binary files /dev/null and b/public/terrain/19/858488/354014.terrain differ diff --git a/public/terrain/19/858488/354015.terrain b/public/terrain/19/858488/354015.terrain new file mode 100644 index 000000000..4827e5891 Binary files /dev/null and b/public/terrain/19/858488/354015.terrain differ diff --git a/public/terrain/19/858488/354016.terrain b/public/terrain/19/858488/354016.terrain new file mode 100644 index 000000000..0833f31f7 Binary files /dev/null and b/public/terrain/19/858488/354016.terrain differ diff --git a/public/terrain/19/858488/354017.terrain b/public/terrain/19/858488/354017.terrain new file mode 100644 index 000000000..7cce0acd0 Binary files /dev/null and b/public/terrain/19/858488/354017.terrain differ diff --git a/public/terrain/19/858488/354018.terrain b/public/terrain/19/858488/354018.terrain new file mode 100644 index 000000000..90fe58e5e Binary files /dev/null and b/public/terrain/19/858488/354018.terrain differ diff --git a/public/terrain/19/858488/354019.terrain b/public/terrain/19/858488/354019.terrain new file mode 100644 index 000000000..b0196464e Binary files /dev/null and b/public/terrain/19/858488/354019.terrain differ diff --git a/public/terrain/19/858488/354020.terrain b/public/terrain/19/858488/354020.terrain new file mode 100644 index 000000000..667ac8895 Binary files /dev/null and b/public/terrain/19/858488/354020.terrain differ diff --git a/public/terrain/19/858488/354021.terrain b/public/terrain/19/858488/354021.terrain new file mode 100644 index 000000000..dded1bc9d Binary files /dev/null and b/public/terrain/19/858488/354021.terrain differ diff --git a/public/terrain/19/858488/354022.terrain b/public/terrain/19/858488/354022.terrain new file mode 100644 index 000000000..a7f133a38 Binary files /dev/null and b/public/terrain/19/858488/354022.terrain differ diff --git a/public/terrain/19/858488/354023.terrain b/public/terrain/19/858488/354023.terrain new file mode 100644 index 000000000..69aae13be Binary files /dev/null and b/public/terrain/19/858488/354023.terrain differ diff --git a/public/terrain/19/858488/354024.terrain b/public/terrain/19/858488/354024.terrain new file mode 100644 index 000000000..fed6d70bb Binary files /dev/null and b/public/terrain/19/858488/354024.terrain differ diff --git a/public/terrain/19/858488/354025.terrain b/public/terrain/19/858488/354025.terrain new file mode 100644 index 000000000..1e317aba4 Binary files /dev/null and b/public/terrain/19/858488/354025.terrain differ diff --git a/public/terrain/19/858488/354026.terrain b/public/terrain/19/858488/354026.terrain new file mode 100644 index 000000000..f0eac96e9 Binary files /dev/null and b/public/terrain/19/858488/354026.terrain differ diff --git a/public/terrain/19/858488/354027.terrain b/public/terrain/19/858488/354027.terrain new file mode 100644 index 000000000..617c79c62 Binary files /dev/null and b/public/terrain/19/858488/354027.terrain differ diff --git a/public/terrain/19/858488/354028.terrain b/public/terrain/19/858488/354028.terrain new file mode 100644 index 000000000..aa15db919 Binary files /dev/null and b/public/terrain/19/858488/354028.terrain differ diff --git a/public/terrain/19/858488/354029.terrain b/public/terrain/19/858488/354029.terrain new file mode 100644 index 000000000..66696f490 Binary files /dev/null and b/public/terrain/19/858488/354029.terrain differ diff --git a/public/terrain/19/858488/354030.terrain b/public/terrain/19/858488/354030.terrain new file mode 100644 index 000000000..51c4180db Binary files /dev/null and b/public/terrain/19/858488/354030.terrain differ diff --git a/public/terrain/19/858488/354031.terrain b/public/terrain/19/858488/354031.terrain new file mode 100644 index 000000000..bcb7115a7 Binary files /dev/null and b/public/terrain/19/858488/354031.terrain differ diff --git a/public/terrain/19/858488/354032.terrain b/public/terrain/19/858488/354032.terrain new file mode 100644 index 000000000..c3c107dae Binary files /dev/null and b/public/terrain/19/858488/354032.terrain differ diff --git a/public/terrain/19/858488/354033.terrain b/public/terrain/19/858488/354033.terrain new file mode 100644 index 000000000..22e97b0cb Binary files /dev/null and b/public/terrain/19/858488/354033.terrain differ diff --git a/public/terrain/19/858488/354034.terrain b/public/terrain/19/858488/354034.terrain new file mode 100644 index 000000000..7f72dfbc5 Binary files /dev/null and b/public/terrain/19/858488/354034.terrain differ diff --git a/public/terrain/19/858488/354035.terrain b/public/terrain/19/858488/354035.terrain new file mode 100644 index 000000000..0188022c3 Binary files /dev/null and b/public/terrain/19/858488/354035.terrain differ diff --git a/public/terrain/19/858488/354036.terrain b/public/terrain/19/858488/354036.terrain new file mode 100644 index 000000000..17aca84b4 Binary files /dev/null and b/public/terrain/19/858488/354036.terrain differ diff --git a/public/terrain/19/858488/354037.terrain b/public/terrain/19/858488/354037.terrain new file mode 100644 index 000000000..059344f4d Binary files /dev/null and b/public/terrain/19/858488/354037.terrain differ diff --git a/public/terrain/19/858488/354038.terrain b/public/terrain/19/858488/354038.terrain new file mode 100644 index 000000000..a5b43311c Binary files /dev/null and b/public/terrain/19/858488/354038.terrain differ diff --git a/public/terrain/19/858488/354039.terrain b/public/terrain/19/858488/354039.terrain new file mode 100644 index 000000000..d71915579 Binary files /dev/null and b/public/terrain/19/858488/354039.terrain differ diff --git a/public/terrain/19/858488/354040.terrain b/public/terrain/19/858488/354040.terrain new file mode 100644 index 000000000..68b4c744d Binary files /dev/null and b/public/terrain/19/858488/354040.terrain differ diff --git a/public/terrain/19/858488/354041.terrain b/public/terrain/19/858488/354041.terrain new file mode 100644 index 000000000..ded1aabd5 Binary files /dev/null and b/public/terrain/19/858488/354041.terrain differ diff --git a/public/terrain/19/858488/354042.terrain b/public/terrain/19/858488/354042.terrain new file mode 100644 index 000000000..c2d9b4206 Binary files /dev/null and b/public/terrain/19/858488/354042.terrain differ diff --git a/public/terrain/19/858488/354043.terrain b/public/terrain/19/858488/354043.terrain new file mode 100644 index 000000000..0c00eb7bb Binary files /dev/null and b/public/terrain/19/858488/354043.terrain differ diff --git a/public/terrain/19/858488/354044.terrain b/public/terrain/19/858488/354044.terrain new file mode 100644 index 000000000..6571e94fc Binary files /dev/null and b/public/terrain/19/858488/354044.terrain differ diff --git a/public/terrain/19/858488/354045.terrain b/public/terrain/19/858488/354045.terrain new file mode 100644 index 000000000..6d8fa1edb Binary files /dev/null and b/public/terrain/19/858488/354045.terrain differ diff --git a/public/terrain/19/858488/354046.terrain b/public/terrain/19/858488/354046.terrain new file mode 100644 index 000000000..ca840c28f Binary files /dev/null and b/public/terrain/19/858488/354046.terrain differ diff --git a/public/terrain/19/858488/354047.terrain b/public/terrain/19/858488/354047.terrain new file mode 100644 index 000000000..cb202e2ec Binary files /dev/null and b/public/terrain/19/858488/354047.terrain differ diff --git a/public/terrain/19/858488/354048.terrain b/public/terrain/19/858488/354048.terrain new file mode 100644 index 000000000..b5f07a5fb Binary files /dev/null and b/public/terrain/19/858488/354048.terrain differ diff --git a/public/terrain/19/858488/354049.terrain b/public/terrain/19/858488/354049.terrain new file mode 100644 index 000000000..544ec631b Binary files /dev/null and b/public/terrain/19/858488/354049.terrain differ diff --git a/public/terrain/19/858488/354050.terrain b/public/terrain/19/858488/354050.terrain new file mode 100644 index 000000000..1bb662bf2 Binary files /dev/null and b/public/terrain/19/858488/354050.terrain differ diff --git a/public/terrain/19/858488/354051.terrain b/public/terrain/19/858488/354051.terrain new file mode 100644 index 000000000..9421ebc73 Binary files /dev/null and b/public/terrain/19/858488/354051.terrain differ diff --git a/public/terrain/19/858488/354052.terrain b/public/terrain/19/858488/354052.terrain new file mode 100644 index 000000000..9065aab25 Binary files /dev/null and b/public/terrain/19/858488/354052.terrain differ diff --git a/public/terrain/19/858488/354053.terrain b/public/terrain/19/858488/354053.terrain new file mode 100644 index 000000000..3b0d6d9f9 Binary files /dev/null and b/public/terrain/19/858488/354053.terrain differ diff --git a/public/terrain/19/858488/354054.terrain b/public/terrain/19/858488/354054.terrain new file mode 100644 index 000000000..c6f1098cc Binary files /dev/null and b/public/terrain/19/858488/354054.terrain differ diff --git a/public/terrain/19/858488/354055.terrain b/public/terrain/19/858488/354055.terrain new file mode 100644 index 000000000..9f62a8536 Binary files /dev/null and b/public/terrain/19/858488/354055.terrain differ diff --git a/public/terrain/19/858488/354056.terrain b/public/terrain/19/858488/354056.terrain new file mode 100644 index 000000000..4cc6df5e3 Binary files /dev/null and b/public/terrain/19/858488/354056.terrain differ diff --git a/public/terrain/19/858488/354057.terrain b/public/terrain/19/858488/354057.terrain new file mode 100644 index 000000000..250aa99fa Binary files /dev/null and b/public/terrain/19/858488/354057.terrain differ diff --git a/public/terrain/19/858488/354058.terrain b/public/terrain/19/858488/354058.terrain new file mode 100644 index 000000000..824b502e6 Binary files /dev/null and b/public/terrain/19/858488/354058.terrain differ diff --git a/public/terrain/19/858488/354059.terrain b/public/terrain/19/858488/354059.terrain new file mode 100644 index 000000000..1ca8ab591 Binary files /dev/null and b/public/terrain/19/858488/354059.terrain differ diff --git a/public/terrain/19/858489/353743.terrain b/public/terrain/19/858489/353743.terrain new file mode 100644 index 000000000..7521c39ac Binary files /dev/null and b/public/terrain/19/858489/353743.terrain differ diff --git a/public/terrain/19/858489/353744.terrain b/public/terrain/19/858489/353744.terrain new file mode 100644 index 000000000..c6f01fc41 Binary files /dev/null and b/public/terrain/19/858489/353744.terrain differ diff --git a/public/terrain/19/858489/353745.terrain b/public/terrain/19/858489/353745.terrain new file mode 100644 index 000000000..e1a83dc07 Binary files /dev/null and b/public/terrain/19/858489/353745.terrain differ diff --git a/public/terrain/19/858489/353746.terrain b/public/terrain/19/858489/353746.terrain new file mode 100644 index 000000000..a58cad37b Binary files /dev/null and b/public/terrain/19/858489/353746.terrain differ diff --git a/public/terrain/19/858489/353747.terrain b/public/terrain/19/858489/353747.terrain new file mode 100644 index 000000000..40022c2d2 Binary files /dev/null and b/public/terrain/19/858489/353747.terrain differ diff --git a/public/terrain/19/858489/353748.terrain b/public/terrain/19/858489/353748.terrain new file mode 100644 index 000000000..8f838a8e5 Binary files /dev/null and b/public/terrain/19/858489/353748.terrain differ diff --git a/public/terrain/19/858489/353749.terrain b/public/terrain/19/858489/353749.terrain new file mode 100644 index 000000000..897057df9 Binary files /dev/null and b/public/terrain/19/858489/353749.terrain differ diff --git a/public/terrain/19/858489/353750.terrain b/public/terrain/19/858489/353750.terrain new file mode 100644 index 000000000..2fd48cce4 Binary files /dev/null and b/public/terrain/19/858489/353750.terrain differ diff --git a/public/terrain/19/858489/353751.terrain b/public/terrain/19/858489/353751.terrain new file mode 100644 index 000000000..e866fc837 Binary files /dev/null and b/public/terrain/19/858489/353751.terrain differ diff --git a/public/terrain/19/858489/353752.terrain b/public/terrain/19/858489/353752.terrain new file mode 100644 index 000000000..556f5d346 Binary files /dev/null and b/public/terrain/19/858489/353752.terrain differ diff --git a/public/terrain/19/858489/353753.terrain b/public/terrain/19/858489/353753.terrain new file mode 100644 index 000000000..4d67859c6 Binary files /dev/null and b/public/terrain/19/858489/353753.terrain differ diff --git a/public/terrain/19/858489/353754.terrain b/public/terrain/19/858489/353754.terrain new file mode 100644 index 000000000..d288763f8 Binary files /dev/null and b/public/terrain/19/858489/353754.terrain differ diff --git a/public/terrain/19/858489/353755.terrain b/public/terrain/19/858489/353755.terrain new file mode 100644 index 000000000..7408b371b Binary files /dev/null and b/public/terrain/19/858489/353755.terrain differ diff --git a/public/terrain/19/858489/353756.terrain b/public/terrain/19/858489/353756.terrain new file mode 100644 index 000000000..13e17b4c6 Binary files /dev/null and b/public/terrain/19/858489/353756.terrain differ diff --git a/public/terrain/19/858489/353757.terrain b/public/terrain/19/858489/353757.terrain new file mode 100644 index 000000000..efb31192c Binary files /dev/null and b/public/terrain/19/858489/353757.terrain differ diff --git a/public/terrain/19/858489/353758.terrain b/public/terrain/19/858489/353758.terrain new file mode 100644 index 000000000..0aa93e12d Binary files /dev/null and b/public/terrain/19/858489/353758.terrain differ diff --git a/public/terrain/19/858489/353759.terrain b/public/terrain/19/858489/353759.terrain new file mode 100644 index 000000000..14f2d3d43 Binary files /dev/null and b/public/terrain/19/858489/353759.terrain differ diff --git a/public/terrain/19/858489/353760.terrain b/public/terrain/19/858489/353760.terrain new file mode 100644 index 000000000..c58e6da51 Binary files /dev/null and b/public/terrain/19/858489/353760.terrain differ diff --git a/public/terrain/19/858489/353761.terrain b/public/terrain/19/858489/353761.terrain new file mode 100644 index 000000000..367c00a5f Binary files /dev/null and b/public/terrain/19/858489/353761.terrain differ diff --git a/public/terrain/19/858489/353762.terrain b/public/terrain/19/858489/353762.terrain new file mode 100644 index 000000000..e34d5f56b Binary files /dev/null and b/public/terrain/19/858489/353762.terrain differ diff --git a/public/terrain/19/858489/353763.terrain b/public/terrain/19/858489/353763.terrain new file mode 100644 index 000000000..27de613ba Binary files /dev/null and b/public/terrain/19/858489/353763.terrain differ diff --git a/public/terrain/19/858489/353764.terrain b/public/terrain/19/858489/353764.terrain new file mode 100644 index 000000000..e0f610672 Binary files /dev/null and b/public/terrain/19/858489/353764.terrain differ diff --git a/public/terrain/19/858489/353765.terrain b/public/terrain/19/858489/353765.terrain new file mode 100644 index 000000000..463f30b01 Binary files /dev/null and b/public/terrain/19/858489/353765.terrain differ diff --git a/public/terrain/19/858489/353766.terrain b/public/terrain/19/858489/353766.terrain new file mode 100644 index 000000000..b3b377e9e Binary files /dev/null and b/public/terrain/19/858489/353766.terrain differ diff --git a/public/terrain/19/858489/353767.terrain b/public/terrain/19/858489/353767.terrain new file mode 100644 index 000000000..3c7e75a85 Binary files /dev/null and b/public/terrain/19/858489/353767.terrain differ diff --git a/public/terrain/19/858489/353768.terrain b/public/terrain/19/858489/353768.terrain new file mode 100644 index 000000000..e0c90c2b7 Binary files /dev/null and b/public/terrain/19/858489/353768.terrain differ diff --git a/public/terrain/19/858489/353769.terrain b/public/terrain/19/858489/353769.terrain new file mode 100644 index 000000000..c521cec1b Binary files /dev/null and b/public/terrain/19/858489/353769.terrain differ diff --git a/public/terrain/19/858489/353770.terrain b/public/terrain/19/858489/353770.terrain new file mode 100644 index 000000000..5ff6f0843 Binary files /dev/null and b/public/terrain/19/858489/353770.terrain differ diff --git a/public/terrain/19/858489/353771.terrain b/public/terrain/19/858489/353771.terrain new file mode 100644 index 000000000..417dfab15 Binary files /dev/null and b/public/terrain/19/858489/353771.terrain differ diff --git a/public/terrain/19/858489/353772.terrain b/public/terrain/19/858489/353772.terrain new file mode 100644 index 000000000..78dae7383 Binary files /dev/null and b/public/terrain/19/858489/353772.terrain differ diff --git a/public/terrain/19/858489/353773.terrain b/public/terrain/19/858489/353773.terrain new file mode 100644 index 000000000..09657f9ab Binary files /dev/null and b/public/terrain/19/858489/353773.terrain differ diff --git a/public/terrain/19/858489/353774.terrain b/public/terrain/19/858489/353774.terrain new file mode 100644 index 000000000..fe143ce52 Binary files /dev/null and b/public/terrain/19/858489/353774.terrain differ diff --git a/public/terrain/19/858489/353775.terrain b/public/terrain/19/858489/353775.terrain new file mode 100644 index 000000000..fd90a6a77 Binary files /dev/null and b/public/terrain/19/858489/353775.terrain differ diff --git a/public/terrain/19/858489/353776.terrain b/public/terrain/19/858489/353776.terrain new file mode 100644 index 000000000..a97af5c3e Binary files /dev/null and b/public/terrain/19/858489/353776.terrain differ diff --git a/public/terrain/19/858489/353777.terrain b/public/terrain/19/858489/353777.terrain new file mode 100644 index 000000000..901116de9 Binary files /dev/null and b/public/terrain/19/858489/353777.terrain differ diff --git a/public/terrain/19/858489/353778.terrain b/public/terrain/19/858489/353778.terrain new file mode 100644 index 000000000..07a124042 Binary files /dev/null and b/public/terrain/19/858489/353778.terrain differ diff --git a/public/terrain/19/858489/353779.terrain b/public/terrain/19/858489/353779.terrain new file mode 100644 index 000000000..f17f0357d Binary files /dev/null and b/public/terrain/19/858489/353779.terrain differ diff --git a/public/terrain/19/858489/353780.terrain b/public/terrain/19/858489/353780.terrain new file mode 100644 index 000000000..8bf66f48c Binary files /dev/null and b/public/terrain/19/858489/353780.terrain differ diff --git a/public/terrain/19/858489/353781.terrain b/public/terrain/19/858489/353781.terrain new file mode 100644 index 000000000..2dc49144d Binary files /dev/null and b/public/terrain/19/858489/353781.terrain differ diff --git a/public/terrain/19/858489/353782.terrain b/public/terrain/19/858489/353782.terrain new file mode 100644 index 000000000..c53057a85 Binary files /dev/null and b/public/terrain/19/858489/353782.terrain differ diff --git a/public/terrain/19/858489/353783.terrain b/public/terrain/19/858489/353783.terrain new file mode 100644 index 000000000..0f4d7302e Binary files /dev/null and b/public/terrain/19/858489/353783.terrain differ diff --git a/public/terrain/19/858489/353784.terrain b/public/terrain/19/858489/353784.terrain new file mode 100644 index 000000000..328cc620c Binary files /dev/null and b/public/terrain/19/858489/353784.terrain differ diff --git a/public/terrain/19/858489/353785.terrain b/public/terrain/19/858489/353785.terrain new file mode 100644 index 000000000..bf59fdc94 Binary files /dev/null and b/public/terrain/19/858489/353785.terrain differ diff --git a/public/terrain/19/858489/353786.terrain b/public/terrain/19/858489/353786.terrain new file mode 100644 index 000000000..25a0f925a Binary files /dev/null and b/public/terrain/19/858489/353786.terrain differ diff --git a/public/terrain/19/858489/353787.terrain b/public/terrain/19/858489/353787.terrain new file mode 100644 index 000000000..ad68411e2 Binary files /dev/null and b/public/terrain/19/858489/353787.terrain differ diff --git a/public/terrain/19/858489/353788.terrain b/public/terrain/19/858489/353788.terrain new file mode 100644 index 000000000..65690a676 Binary files /dev/null and b/public/terrain/19/858489/353788.terrain differ diff --git a/public/terrain/19/858489/353789.terrain b/public/terrain/19/858489/353789.terrain new file mode 100644 index 000000000..9b324007d Binary files /dev/null and b/public/terrain/19/858489/353789.terrain differ diff --git a/public/terrain/19/858489/353790.terrain b/public/terrain/19/858489/353790.terrain new file mode 100644 index 000000000..dd3bd1dca Binary files /dev/null and b/public/terrain/19/858489/353790.terrain differ diff --git a/public/terrain/19/858489/353791.terrain b/public/terrain/19/858489/353791.terrain new file mode 100644 index 000000000..6232246fe Binary files /dev/null and b/public/terrain/19/858489/353791.terrain differ diff --git a/public/terrain/19/858489/353792.terrain b/public/terrain/19/858489/353792.terrain new file mode 100644 index 000000000..b2292d49f Binary files /dev/null and b/public/terrain/19/858489/353792.terrain differ diff --git a/public/terrain/19/858489/353793.terrain b/public/terrain/19/858489/353793.terrain new file mode 100644 index 000000000..8f94c23eb Binary files /dev/null and b/public/terrain/19/858489/353793.terrain differ diff --git a/public/terrain/19/858489/353794.terrain b/public/terrain/19/858489/353794.terrain new file mode 100644 index 000000000..f4c7f5ebd Binary files /dev/null and b/public/terrain/19/858489/353794.terrain differ diff --git a/public/terrain/19/858489/353795.terrain b/public/terrain/19/858489/353795.terrain new file mode 100644 index 000000000..90527cd8a Binary files /dev/null and b/public/terrain/19/858489/353795.terrain differ diff --git a/public/terrain/19/858489/353796.terrain b/public/terrain/19/858489/353796.terrain new file mode 100644 index 000000000..1864aead7 Binary files /dev/null and b/public/terrain/19/858489/353796.terrain differ diff --git a/public/terrain/19/858489/353797.terrain b/public/terrain/19/858489/353797.terrain new file mode 100644 index 000000000..4fb2f886d Binary files /dev/null and b/public/terrain/19/858489/353797.terrain differ diff --git a/public/terrain/19/858489/353798.terrain b/public/terrain/19/858489/353798.terrain new file mode 100644 index 000000000..20ab945e4 Binary files /dev/null and b/public/terrain/19/858489/353798.terrain differ diff --git a/public/terrain/19/858489/353799.terrain b/public/terrain/19/858489/353799.terrain new file mode 100644 index 000000000..ae2070012 Binary files /dev/null and b/public/terrain/19/858489/353799.terrain differ diff --git a/public/terrain/19/858489/353800.terrain b/public/terrain/19/858489/353800.terrain new file mode 100644 index 000000000..e0088d41d Binary files /dev/null and b/public/terrain/19/858489/353800.terrain differ diff --git a/public/terrain/19/858489/353801.terrain b/public/terrain/19/858489/353801.terrain new file mode 100644 index 000000000..3efeb9c09 Binary files /dev/null and b/public/terrain/19/858489/353801.terrain differ diff --git a/public/terrain/19/858489/353802.terrain b/public/terrain/19/858489/353802.terrain new file mode 100644 index 000000000..3305ca0a3 Binary files /dev/null and b/public/terrain/19/858489/353802.terrain differ diff --git a/public/terrain/19/858489/353803.terrain b/public/terrain/19/858489/353803.terrain new file mode 100644 index 000000000..0473fede1 Binary files /dev/null and b/public/terrain/19/858489/353803.terrain differ diff --git a/public/terrain/19/858489/353804.terrain b/public/terrain/19/858489/353804.terrain new file mode 100644 index 000000000..ae9f2c5d0 Binary files /dev/null and b/public/terrain/19/858489/353804.terrain differ diff --git a/public/terrain/19/858489/353805.terrain b/public/terrain/19/858489/353805.terrain new file mode 100644 index 000000000..02ffbbb42 Binary files /dev/null and b/public/terrain/19/858489/353805.terrain differ diff --git a/public/terrain/19/858489/353806.terrain b/public/terrain/19/858489/353806.terrain new file mode 100644 index 000000000..24b017857 Binary files /dev/null and b/public/terrain/19/858489/353806.terrain differ diff --git a/public/terrain/19/858489/353807.terrain b/public/terrain/19/858489/353807.terrain new file mode 100644 index 000000000..00477f99f Binary files /dev/null and b/public/terrain/19/858489/353807.terrain differ diff --git a/public/terrain/19/858489/353808.terrain b/public/terrain/19/858489/353808.terrain new file mode 100644 index 000000000..9dd445e20 Binary files /dev/null and b/public/terrain/19/858489/353808.terrain differ diff --git a/public/terrain/19/858489/353809.terrain b/public/terrain/19/858489/353809.terrain new file mode 100644 index 000000000..5d5dadb09 Binary files /dev/null and b/public/terrain/19/858489/353809.terrain differ diff --git a/public/terrain/19/858489/353810.terrain b/public/terrain/19/858489/353810.terrain new file mode 100644 index 000000000..7c4613fa7 Binary files /dev/null and b/public/terrain/19/858489/353810.terrain differ diff --git a/public/terrain/19/858489/353811.terrain b/public/terrain/19/858489/353811.terrain new file mode 100644 index 000000000..93eb5032f Binary files /dev/null and b/public/terrain/19/858489/353811.terrain differ diff --git a/public/terrain/19/858489/353812.terrain b/public/terrain/19/858489/353812.terrain new file mode 100644 index 000000000..d6d050de9 Binary files /dev/null and b/public/terrain/19/858489/353812.terrain differ diff --git a/public/terrain/19/858489/353813.terrain b/public/terrain/19/858489/353813.terrain new file mode 100644 index 000000000..eecd352ab Binary files /dev/null and b/public/terrain/19/858489/353813.terrain differ diff --git a/public/terrain/19/858489/353814.terrain b/public/terrain/19/858489/353814.terrain new file mode 100644 index 000000000..6b28c74bf Binary files /dev/null and b/public/terrain/19/858489/353814.terrain differ diff --git a/public/terrain/19/858489/353815.terrain b/public/terrain/19/858489/353815.terrain new file mode 100644 index 000000000..67ec80924 Binary files /dev/null and b/public/terrain/19/858489/353815.terrain differ diff --git a/public/terrain/19/858489/353816.terrain b/public/terrain/19/858489/353816.terrain new file mode 100644 index 000000000..c0bb6ce81 Binary files /dev/null and b/public/terrain/19/858489/353816.terrain differ diff --git a/public/terrain/19/858489/353817.terrain b/public/terrain/19/858489/353817.terrain new file mode 100644 index 000000000..ba0bffd49 Binary files /dev/null and b/public/terrain/19/858489/353817.terrain differ diff --git a/public/terrain/19/858489/353818.terrain b/public/terrain/19/858489/353818.terrain new file mode 100644 index 000000000..631aa9e4f Binary files /dev/null and b/public/terrain/19/858489/353818.terrain differ diff --git a/public/terrain/19/858489/353819.terrain b/public/terrain/19/858489/353819.terrain new file mode 100644 index 000000000..f240e994e Binary files /dev/null and b/public/terrain/19/858489/353819.terrain differ diff --git a/public/terrain/19/858489/353820.terrain b/public/terrain/19/858489/353820.terrain new file mode 100644 index 000000000..e8048b609 Binary files /dev/null and b/public/terrain/19/858489/353820.terrain differ diff --git a/public/terrain/19/858489/353821.terrain b/public/terrain/19/858489/353821.terrain new file mode 100644 index 000000000..327862c7d Binary files /dev/null and b/public/terrain/19/858489/353821.terrain differ diff --git a/public/terrain/19/858489/353822.terrain b/public/terrain/19/858489/353822.terrain new file mode 100644 index 000000000..5db96db45 Binary files /dev/null and b/public/terrain/19/858489/353822.terrain differ diff --git a/public/terrain/19/858489/353823.terrain b/public/terrain/19/858489/353823.terrain new file mode 100644 index 000000000..8ecfe218e Binary files /dev/null and b/public/terrain/19/858489/353823.terrain differ diff --git a/public/terrain/19/858489/353824.terrain b/public/terrain/19/858489/353824.terrain new file mode 100644 index 000000000..66525972c Binary files /dev/null and b/public/terrain/19/858489/353824.terrain differ diff --git a/public/terrain/19/858489/353825.terrain b/public/terrain/19/858489/353825.terrain new file mode 100644 index 000000000..0262c2c4e Binary files /dev/null and b/public/terrain/19/858489/353825.terrain differ diff --git a/public/terrain/19/858489/353826.terrain b/public/terrain/19/858489/353826.terrain new file mode 100644 index 000000000..5d4faffdc Binary files /dev/null and b/public/terrain/19/858489/353826.terrain differ diff --git a/public/terrain/19/858489/353827.terrain b/public/terrain/19/858489/353827.terrain new file mode 100644 index 000000000..e3ea2ef0f Binary files /dev/null and b/public/terrain/19/858489/353827.terrain differ diff --git a/public/terrain/19/858489/353828.terrain b/public/terrain/19/858489/353828.terrain new file mode 100644 index 000000000..d5c4e5cd4 Binary files /dev/null and b/public/terrain/19/858489/353828.terrain differ diff --git a/public/terrain/19/858489/353829.terrain b/public/terrain/19/858489/353829.terrain new file mode 100644 index 000000000..eac5d84b5 Binary files /dev/null and b/public/terrain/19/858489/353829.terrain differ diff --git a/public/terrain/19/858489/353830.terrain b/public/terrain/19/858489/353830.terrain new file mode 100644 index 000000000..ac3fcbdae Binary files /dev/null and b/public/terrain/19/858489/353830.terrain differ diff --git a/public/terrain/19/858489/353831.terrain b/public/terrain/19/858489/353831.terrain new file mode 100644 index 000000000..5ec1c6394 Binary files /dev/null and b/public/terrain/19/858489/353831.terrain differ diff --git a/public/terrain/19/858489/353832.terrain b/public/terrain/19/858489/353832.terrain new file mode 100644 index 000000000..449b3e184 Binary files /dev/null and b/public/terrain/19/858489/353832.terrain differ diff --git a/public/terrain/19/858489/353833.terrain b/public/terrain/19/858489/353833.terrain new file mode 100644 index 000000000..264965050 Binary files /dev/null and b/public/terrain/19/858489/353833.terrain differ diff --git a/public/terrain/19/858489/353834.terrain b/public/terrain/19/858489/353834.terrain new file mode 100644 index 000000000..2ee799596 Binary files /dev/null and b/public/terrain/19/858489/353834.terrain differ diff --git a/public/terrain/19/858489/353835.terrain b/public/terrain/19/858489/353835.terrain new file mode 100644 index 000000000..e6d9d2c13 Binary files /dev/null and b/public/terrain/19/858489/353835.terrain differ diff --git a/public/terrain/19/858489/353836.terrain b/public/terrain/19/858489/353836.terrain new file mode 100644 index 000000000..725188e79 Binary files /dev/null and b/public/terrain/19/858489/353836.terrain differ diff --git a/public/terrain/19/858489/353837.terrain b/public/terrain/19/858489/353837.terrain new file mode 100644 index 000000000..8fc6656b2 Binary files /dev/null and b/public/terrain/19/858489/353837.terrain differ diff --git a/public/terrain/19/858489/353838.terrain b/public/terrain/19/858489/353838.terrain new file mode 100644 index 000000000..10d773458 Binary files /dev/null and b/public/terrain/19/858489/353838.terrain differ diff --git a/public/terrain/19/858489/353839.terrain b/public/terrain/19/858489/353839.terrain new file mode 100644 index 000000000..a7db6807d Binary files /dev/null and b/public/terrain/19/858489/353839.terrain differ diff --git a/public/terrain/19/858489/353840.terrain b/public/terrain/19/858489/353840.terrain new file mode 100644 index 000000000..adeec1a52 Binary files /dev/null and b/public/terrain/19/858489/353840.terrain differ diff --git a/public/terrain/19/858489/353841.terrain b/public/terrain/19/858489/353841.terrain new file mode 100644 index 000000000..e89b52751 Binary files /dev/null and b/public/terrain/19/858489/353841.terrain differ diff --git a/public/terrain/19/858489/353842.terrain b/public/terrain/19/858489/353842.terrain new file mode 100644 index 000000000..5656d5701 Binary files /dev/null and b/public/terrain/19/858489/353842.terrain differ diff --git a/public/terrain/19/858489/353843.terrain b/public/terrain/19/858489/353843.terrain new file mode 100644 index 000000000..77a24b9f5 Binary files /dev/null and b/public/terrain/19/858489/353843.terrain differ diff --git a/public/terrain/19/858489/353844.terrain b/public/terrain/19/858489/353844.terrain new file mode 100644 index 000000000..729b159d4 Binary files /dev/null and b/public/terrain/19/858489/353844.terrain differ diff --git a/public/terrain/19/858489/353845.terrain b/public/terrain/19/858489/353845.terrain new file mode 100644 index 000000000..6b4f91688 Binary files /dev/null and b/public/terrain/19/858489/353845.terrain differ diff --git a/public/terrain/19/858489/353846.terrain b/public/terrain/19/858489/353846.terrain new file mode 100644 index 000000000..5dd712c16 Binary files /dev/null and b/public/terrain/19/858489/353846.terrain differ diff --git a/public/terrain/19/858489/353847.terrain b/public/terrain/19/858489/353847.terrain new file mode 100644 index 000000000..1dee996f0 Binary files /dev/null and b/public/terrain/19/858489/353847.terrain differ diff --git a/public/terrain/19/858489/353848.terrain b/public/terrain/19/858489/353848.terrain new file mode 100644 index 000000000..668d13d6e Binary files /dev/null and b/public/terrain/19/858489/353848.terrain differ diff --git a/public/terrain/19/858489/353849.terrain b/public/terrain/19/858489/353849.terrain new file mode 100644 index 000000000..79cf83800 Binary files /dev/null and b/public/terrain/19/858489/353849.terrain differ diff --git a/public/terrain/19/858489/353850.terrain b/public/terrain/19/858489/353850.terrain new file mode 100644 index 000000000..52b6066f5 Binary files /dev/null and b/public/terrain/19/858489/353850.terrain differ diff --git a/public/terrain/19/858489/353851.terrain b/public/terrain/19/858489/353851.terrain new file mode 100644 index 000000000..a0de602f0 Binary files /dev/null and b/public/terrain/19/858489/353851.terrain differ diff --git a/public/terrain/19/858489/353852.terrain b/public/terrain/19/858489/353852.terrain new file mode 100644 index 000000000..4352ff243 Binary files /dev/null and b/public/terrain/19/858489/353852.terrain differ diff --git a/public/terrain/19/858489/353853.terrain b/public/terrain/19/858489/353853.terrain new file mode 100644 index 000000000..7306901fd Binary files /dev/null and b/public/terrain/19/858489/353853.terrain differ diff --git a/public/terrain/19/858489/353854.terrain b/public/terrain/19/858489/353854.terrain new file mode 100644 index 000000000..8ad4b8068 Binary files /dev/null and b/public/terrain/19/858489/353854.terrain differ diff --git a/public/terrain/19/858489/353855.terrain b/public/terrain/19/858489/353855.terrain new file mode 100644 index 000000000..d25da8a67 Binary files /dev/null and b/public/terrain/19/858489/353855.terrain differ diff --git a/public/terrain/19/858489/353856.terrain b/public/terrain/19/858489/353856.terrain new file mode 100644 index 000000000..e193b7fb5 Binary files /dev/null and b/public/terrain/19/858489/353856.terrain differ diff --git a/public/terrain/19/858489/353857.terrain b/public/terrain/19/858489/353857.terrain new file mode 100644 index 000000000..465c60649 Binary files /dev/null and b/public/terrain/19/858489/353857.terrain differ diff --git a/public/terrain/19/858489/353858.terrain b/public/terrain/19/858489/353858.terrain new file mode 100644 index 000000000..547931ba7 Binary files /dev/null and b/public/terrain/19/858489/353858.terrain differ diff --git a/public/terrain/19/858489/353859.terrain b/public/terrain/19/858489/353859.terrain new file mode 100644 index 000000000..1a50134e7 Binary files /dev/null and b/public/terrain/19/858489/353859.terrain differ diff --git a/public/terrain/19/858489/353860.terrain b/public/terrain/19/858489/353860.terrain new file mode 100644 index 000000000..48f1c18e6 Binary files /dev/null and b/public/terrain/19/858489/353860.terrain differ diff --git a/public/terrain/19/858489/353861.terrain b/public/terrain/19/858489/353861.terrain new file mode 100644 index 000000000..e13cc75fc Binary files /dev/null and b/public/terrain/19/858489/353861.terrain differ diff --git a/public/terrain/19/858489/353862.terrain b/public/terrain/19/858489/353862.terrain new file mode 100644 index 000000000..b2eb590e2 Binary files /dev/null and b/public/terrain/19/858489/353862.terrain differ diff --git a/public/terrain/19/858489/353863.terrain b/public/terrain/19/858489/353863.terrain new file mode 100644 index 000000000..a6a480da1 Binary files /dev/null and b/public/terrain/19/858489/353863.terrain differ diff --git a/public/terrain/19/858489/353864.terrain b/public/terrain/19/858489/353864.terrain new file mode 100644 index 000000000..d2add01ec Binary files /dev/null and b/public/terrain/19/858489/353864.terrain differ diff --git a/public/terrain/19/858489/353865.terrain b/public/terrain/19/858489/353865.terrain new file mode 100644 index 000000000..dae21a95f Binary files /dev/null and b/public/terrain/19/858489/353865.terrain differ diff --git a/public/terrain/19/858489/353866.terrain b/public/terrain/19/858489/353866.terrain new file mode 100644 index 000000000..ae016b7ed Binary files /dev/null and b/public/terrain/19/858489/353866.terrain differ diff --git a/public/terrain/19/858489/353867.terrain b/public/terrain/19/858489/353867.terrain new file mode 100644 index 000000000..1af70fa64 Binary files /dev/null and b/public/terrain/19/858489/353867.terrain differ diff --git a/public/terrain/19/858489/353868.terrain b/public/terrain/19/858489/353868.terrain new file mode 100644 index 000000000..2289b1249 Binary files /dev/null and b/public/terrain/19/858489/353868.terrain differ diff --git a/public/terrain/19/858489/353869.terrain b/public/terrain/19/858489/353869.terrain new file mode 100644 index 000000000..b408d48b0 Binary files /dev/null and b/public/terrain/19/858489/353869.terrain differ diff --git a/public/terrain/19/858489/353870.terrain b/public/terrain/19/858489/353870.terrain new file mode 100644 index 000000000..94c73fd3f Binary files /dev/null and b/public/terrain/19/858489/353870.terrain differ diff --git a/public/terrain/19/858489/353871.terrain b/public/terrain/19/858489/353871.terrain new file mode 100644 index 000000000..0ecade46e Binary files /dev/null and b/public/terrain/19/858489/353871.terrain differ diff --git a/public/terrain/19/858489/353872.terrain b/public/terrain/19/858489/353872.terrain new file mode 100644 index 000000000..1eff1c6f0 Binary files /dev/null and b/public/terrain/19/858489/353872.terrain differ diff --git a/public/terrain/19/858489/353873.terrain b/public/terrain/19/858489/353873.terrain new file mode 100644 index 000000000..d5e725ee4 Binary files /dev/null and b/public/terrain/19/858489/353873.terrain differ diff --git a/public/terrain/19/858489/353874.terrain b/public/terrain/19/858489/353874.terrain new file mode 100644 index 000000000..3f0818ce2 Binary files /dev/null and b/public/terrain/19/858489/353874.terrain differ diff --git a/public/terrain/19/858489/353875.terrain b/public/terrain/19/858489/353875.terrain new file mode 100644 index 000000000..f3f213a90 Binary files /dev/null and b/public/terrain/19/858489/353875.terrain differ diff --git a/public/terrain/19/858489/353876.terrain b/public/terrain/19/858489/353876.terrain new file mode 100644 index 000000000..792ead969 Binary files /dev/null and b/public/terrain/19/858489/353876.terrain differ diff --git a/public/terrain/19/858489/353877.terrain b/public/terrain/19/858489/353877.terrain new file mode 100644 index 000000000..07f8fa168 Binary files /dev/null and b/public/terrain/19/858489/353877.terrain differ diff --git a/public/terrain/19/858489/353878.terrain b/public/terrain/19/858489/353878.terrain new file mode 100644 index 000000000..41215f280 Binary files /dev/null and b/public/terrain/19/858489/353878.terrain differ diff --git a/public/terrain/19/858489/353879.terrain b/public/terrain/19/858489/353879.terrain new file mode 100644 index 000000000..7c35582d7 Binary files /dev/null and b/public/terrain/19/858489/353879.terrain differ diff --git a/public/terrain/19/858489/353880.terrain b/public/terrain/19/858489/353880.terrain new file mode 100644 index 000000000..e065428b1 Binary files /dev/null and b/public/terrain/19/858489/353880.terrain differ diff --git a/public/terrain/19/858489/353881.terrain b/public/terrain/19/858489/353881.terrain new file mode 100644 index 000000000..ab1809c69 Binary files /dev/null and b/public/terrain/19/858489/353881.terrain differ diff --git a/public/terrain/19/858489/353882.terrain b/public/terrain/19/858489/353882.terrain new file mode 100644 index 000000000..8b12388b3 Binary files /dev/null and b/public/terrain/19/858489/353882.terrain differ diff --git a/public/terrain/19/858489/353883.terrain b/public/terrain/19/858489/353883.terrain new file mode 100644 index 000000000..ff06a4c46 Binary files /dev/null and b/public/terrain/19/858489/353883.terrain differ diff --git a/public/terrain/19/858489/353884.terrain b/public/terrain/19/858489/353884.terrain new file mode 100644 index 000000000..8d373b20b Binary files /dev/null and b/public/terrain/19/858489/353884.terrain differ diff --git a/public/terrain/19/858489/353885.terrain b/public/terrain/19/858489/353885.terrain new file mode 100644 index 000000000..97843302a Binary files /dev/null and b/public/terrain/19/858489/353885.terrain differ diff --git a/public/terrain/19/858489/353886.terrain b/public/terrain/19/858489/353886.terrain new file mode 100644 index 000000000..a938b704e Binary files /dev/null and b/public/terrain/19/858489/353886.terrain differ diff --git a/public/terrain/19/858489/353887.terrain b/public/terrain/19/858489/353887.terrain new file mode 100644 index 000000000..8b8b03a05 Binary files /dev/null and b/public/terrain/19/858489/353887.terrain differ diff --git a/public/terrain/19/858489/353888.terrain b/public/terrain/19/858489/353888.terrain new file mode 100644 index 000000000..53b710263 Binary files /dev/null and b/public/terrain/19/858489/353888.terrain differ diff --git a/public/terrain/19/858489/353889.terrain b/public/terrain/19/858489/353889.terrain new file mode 100644 index 000000000..553b2ac24 Binary files /dev/null and b/public/terrain/19/858489/353889.terrain differ diff --git a/public/terrain/19/858489/353890.terrain b/public/terrain/19/858489/353890.terrain new file mode 100644 index 000000000..644729a89 Binary files /dev/null and b/public/terrain/19/858489/353890.terrain differ diff --git a/public/terrain/19/858489/353891.terrain b/public/terrain/19/858489/353891.terrain new file mode 100644 index 000000000..2a73bac3e Binary files /dev/null and b/public/terrain/19/858489/353891.terrain differ diff --git a/public/terrain/19/858489/353892.terrain b/public/terrain/19/858489/353892.terrain new file mode 100644 index 000000000..48aed9bec Binary files /dev/null and b/public/terrain/19/858489/353892.terrain differ diff --git a/public/terrain/19/858489/353893.terrain b/public/terrain/19/858489/353893.terrain new file mode 100644 index 000000000..916d5494b Binary files /dev/null and b/public/terrain/19/858489/353893.terrain differ diff --git a/public/terrain/19/858489/353894.terrain b/public/terrain/19/858489/353894.terrain new file mode 100644 index 000000000..d4655d6db Binary files /dev/null and b/public/terrain/19/858489/353894.terrain differ diff --git a/public/terrain/19/858489/353895.terrain b/public/terrain/19/858489/353895.terrain new file mode 100644 index 000000000..1dd88901f Binary files /dev/null and b/public/terrain/19/858489/353895.terrain differ diff --git a/public/terrain/19/858489/353896.terrain b/public/terrain/19/858489/353896.terrain new file mode 100644 index 000000000..a68b021ef Binary files /dev/null and b/public/terrain/19/858489/353896.terrain differ diff --git a/public/terrain/19/858489/353897.terrain b/public/terrain/19/858489/353897.terrain new file mode 100644 index 000000000..89af8cdda Binary files /dev/null and b/public/terrain/19/858489/353897.terrain differ diff --git a/public/terrain/19/858489/353898.terrain b/public/terrain/19/858489/353898.terrain new file mode 100644 index 000000000..36a26e6af Binary files /dev/null and b/public/terrain/19/858489/353898.terrain differ diff --git a/public/terrain/19/858489/353899.terrain b/public/terrain/19/858489/353899.terrain new file mode 100644 index 000000000..958add50c Binary files /dev/null and b/public/terrain/19/858489/353899.terrain differ diff --git a/public/terrain/19/858489/353900.terrain b/public/terrain/19/858489/353900.terrain new file mode 100644 index 000000000..43099f052 Binary files /dev/null and b/public/terrain/19/858489/353900.terrain differ diff --git a/public/terrain/19/858489/353901.terrain b/public/terrain/19/858489/353901.terrain new file mode 100644 index 000000000..fb0c93c55 Binary files /dev/null and b/public/terrain/19/858489/353901.terrain differ diff --git a/public/terrain/19/858489/353902.terrain b/public/terrain/19/858489/353902.terrain new file mode 100644 index 000000000..f04c975f8 Binary files /dev/null and b/public/terrain/19/858489/353902.terrain differ diff --git a/public/terrain/19/858489/353903.terrain b/public/terrain/19/858489/353903.terrain new file mode 100644 index 000000000..3a37c1eef Binary files /dev/null and b/public/terrain/19/858489/353903.terrain differ diff --git a/public/terrain/19/858489/353904.terrain b/public/terrain/19/858489/353904.terrain new file mode 100644 index 000000000..e31eaad14 Binary files /dev/null and b/public/terrain/19/858489/353904.terrain differ diff --git a/public/terrain/19/858489/353905.terrain b/public/terrain/19/858489/353905.terrain new file mode 100644 index 000000000..657c787a8 Binary files /dev/null and b/public/terrain/19/858489/353905.terrain differ diff --git a/public/terrain/19/858489/353906.terrain b/public/terrain/19/858489/353906.terrain new file mode 100644 index 000000000..547e75210 Binary files /dev/null and b/public/terrain/19/858489/353906.terrain differ diff --git a/public/terrain/19/858489/353907.terrain b/public/terrain/19/858489/353907.terrain new file mode 100644 index 000000000..6adb6abda Binary files /dev/null and b/public/terrain/19/858489/353907.terrain differ diff --git a/public/terrain/19/858489/353908.terrain b/public/terrain/19/858489/353908.terrain new file mode 100644 index 000000000..efe7736d3 Binary files /dev/null and b/public/terrain/19/858489/353908.terrain differ diff --git a/public/terrain/19/858489/353909.terrain b/public/terrain/19/858489/353909.terrain new file mode 100644 index 000000000..b0395ebd6 Binary files /dev/null and b/public/terrain/19/858489/353909.terrain differ diff --git a/public/terrain/19/858489/353910.terrain b/public/terrain/19/858489/353910.terrain new file mode 100644 index 000000000..2edf052d2 Binary files /dev/null and b/public/terrain/19/858489/353910.terrain differ diff --git a/public/terrain/19/858489/353911.terrain b/public/terrain/19/858489/353911.terrain new file mode 100644 index 000000000..39370773a Binary files /dev/null and b/public/terrain/19/858489/353911.terrain differ diff --git a/public/terrain/19/858489/353912.terrain b/public/terrain/19/858489/353912.terrain new file mode 100644 index 000000000..3a2f52ccb Binary files /dev/null and b/public/terrain/19/858489/353912.terrain differ diff --git a/public/terrain/19/858489/353913.terrain b/public/terrain/19/858489/353913.terrain new file mode 100644 index 000000000..c10bd1ef5 Binary files /dev/null and b/public/terrain/19/858489/353913.terrain differ diff --git a/public/terrain/19/858489/353914.terrain b/public/terrain/19/858489/353914.terrain new file mode 100644 index 000000000..13b5b6cd9 Binary files /dev/null and b/public/terrain/19/858489/353914.terrain differ diff --git a/public/terrain/19/858489/353915.terrain b/public/terrain/19/858489/353915.terrain new file mode 100644 index 000000000..d2bed3994 Binary files /dev/null and b/public/terrain/19/858489/353915.terrain differ diff --git a/public/terrain/19/858489/353916.terrain b/public/terrain/19/858489/353916.terrain new file mode 100644 index 000000000..0fad1ecf7 Binary files /dev/null and b/public/terrain/19/858489/353916.terrain differ diff --git a/public/terrain/19/858489/353917.terrain b/public/terrain/19/858489/353917.terrain new file mode 100644 index 000000000..793808859 Binary files /dev/null and b/public/terrain/19/858489/353917.terrain differ diff --git a/public/terrain/19/858489/353918.terrain b/public/terrain/19/858489/353918.terrain new file mode 100644 index 000000000..2716ec5d6 Binary files /dev/null and b/public/terrain/19/858489/353918.terrain differ diff --git a/public/terrain/19/858489/353919.terrain b/public/terrain/19/858489/353919.terrain new file mode 100644 index 000000000..274f1c23b Binary files /dev/null and b/public/terrain/19/858489/353919.terrain differ diff --git a/public/terrain/19/858489/353920.terrain b/public/terrain/19/858489/353920.terrain new file mode 100644 index 000000000..737ef25ed Binary files /dev/null and b/public/terrain/19/858489/353920.terrain differ diff --git a/public/terrain/19/858489/353921.terrain b/public/terrain/19/858489/353921.terrain new file mode 100644 index 000000000..d607606ac Binary files /dev/null and b/public/terrain/19/858489/353921.terrain differ diff --git a/public/terrain/19/858489/353922.terrain b/public/terrain/19/858489/353922.terrain new file mode 100644 index 000000000..4ce94c01d Binary files /dev/null and b/public/terrain/19/858489/353922.terrain differ diff --git a/public/terrain/19/858489/353923.terrain b/public/terrain/19/858489/353923.terrain new file mode 100644 index 000000000..9fb148f46 Binary files /dev/null and b/public/terrain/19/858489/353923.terrain differ diff --git a/public/terrain/19/858489/353924.terrain b/public/terrain/19/858489/353924.terrain new file mode 100644 index 000000000..47e1786b0 Binary files /dev/null and b/public/terrain/19/858489/353924.terrain differ diff --git a/public/terrain/19/858489/353925.terrain b/public/terrain/19/858489/353925.terrain new file mode 100644 index 000000000..8cf83e73f Binary files /dev/null and b/public/terrain/19/858489/353925.terrain differ diff --git a/public/terrain/19/858489/353926.terrain b/public/terrain/19/858489/353926.terrain new file mode 100644 index 000000000..664275521 Binary files /dev/null and b/public/terrain/19/858489/353926.terrain differ diff --git a/public/terrain/19/858489/353927.terrain b/public/terrain/19/858489/353927.terrain new file mode 100644 index 000000000..e333b3aa2 Binary files /dev/null and b/public/terrain/19/858489/353927.terrain differ diff --git a/public/terrain/19/858489/353928.terrain b/public/terrain/19/858489/353928.terrain new file mode 100644 index 000000000..f8f2e8de0 Binary files /dev/null and b/public/terrain/19/858489/353928.terrain differ diff --git a/public/terrain/19/858489/353929.terrain b/public/terrain/19/858489/353929.terrain new file mode 100644 index 000000000..a2cfac749 Binary files /dev/null and b/public/terrain/19/858489/353929.terrain differ diff --git a/public/terrain/19/858489/353930.terrain b/public/terrain/19/858489/353930.terrain new file mode 100644 index 000000000..1ed54e755 Binary files /dev/null and b/public/terrain/19/858489/353930.terrain differ diff --git a/public/terrain/19/858489/353931.terrain b/public/terrain/19/858489/353931.terrain new file mode 100644 index 000000000..2cd077e8f Binary files /dev/null and b/public/terrain/19/858489/353931.terrain differ diff --git a/public/terrain/19/858489/353932.terrain b/public/terrain/19/858489/353932.terrain new file mode 100644 index 000000000..3d15ca7ed Binary files /dev/null and b/public/terrain/19/858489/353932.terrain differ diff --git a/public/terrain/19/858489/353933.terrain b/public/terrain/19/858489/353933.terrain new file mode 100644 index 000000000..fbb0e20e2 Binary files /dev/null and b/public/terrain/19/858489/353933.terrain differ diff --git a/public/terrain/19/858489/353934.terrain b/public/terrain/19/858489/353934.terrain new file mode 100644 index 000000000..887d9caac Binary files /dev/null and b/public/terrain/19/858489/353934.terrain differ diff --git a/public/terrain/19/858489/353935.terrain b/public/terrain/19/858489/353935.terrain new file mode 100644 index 000000000..91491c80b Binary files /dev/null and b/public/terrain/19/858489/353935.terrain differ diff --git a/public/terrain/19/858489/353936.terrain b/public/terrain/19/858489/353936.terrain new file mode 100644 index 000000000..411c8839e Binary files /dev/null and b/public/terrain/19/858489/353936.terrain differ diff --git a/public/terrain/19/858489/353937.terrain b/public/terrain/19/858489/353937.terrain new file mode 100644 index 000000000..43b816f33 Binary files /dev/null and b/public/terrain/19/858489/353937.terrain differ diff --git a/public/terrain/19/858489/353938.terrain b/public/terrain/19/858489/353938.terrain new file mode 100644 index 000000000..760d78157 Binary files /dev/null and b/public/terrain/19/858489/353938.terrain differ diff --git a/public/terrain/19/858489/353939.terrain b/public/terrain/19/858489/353939.terrain new file mode 100644 index 000000000..60cf7aafd Binary files /dev/null and b/public/terrain/19/858489/353939.terrain differ diff --git a/public/terrain/19/858489/353940.terrain b/public/terrain/19/858489/353940.terrain new file mode 100644 index 000000000..9bdde6594 Binary files /dev/null and b/public/terrain/19/858489/353940.terrain differ diff --git a/public/terrain/19/858489/353941.terrain b/public/terrain/19/858489/353941.terrain new file mode 100644 index 000000000..fdf6eea1e Binary files /dev/null and b/public/terrain/19/858489/353941.terrain differ diff --git a/public/terrain/19/858489/353942.terrain b/public/terrain/19/858489/353942.terrain new file mode 100644 index 000000000..5e5a01278 Binary files /dev/null and b/public/terrain/19/858489/353942.terrain differ diff --git a/public/terrain/19/858489/353943.terrain b/public/terrain/19/858489/353943.terrain new file mode 100644 index 000000000..4f56290a1 Binary files /dev/null and b/public/terrain/19/858489/353943.terrain differ diff --git a/public/terrain/19/858489/353944.terrain b/public/terrain/19/858489/353944.terrain new file mode 100644 index 000000000..f2538f5d4 Binary files /dev/null and b/public/terrain/19/858489/353944.terrain differ diff --git a/public/terrain/19/858489/353945.terrain b/public/terrain/19/858489/353945.terrain new file mode 100644 index 000000000..7796eb196 Binary files /dev/null and b/public/terrain/19/858489/353945.terrain differ diff --git a/public/terrain/19/858489/353946.terrain b/public/terrain/19/858489/353946.terrain new file mode 100644 index 000000000..fe7e2e368 Binary files /dev/null and b/public/terrain/19/858489/353946.terrain differ diff --git a/public/terrain/19/858489/353947.terrain b/public/terrain/19/858489/353947.terrain new file mode 100644 index 000000000..1af83a9d6 Binary files /dev/null and b/public/terrain/19/858489/353947.terrain differ diff --git a/public/terrain/19/858489/353948.terrain b/public/terrain/19/858489/353948.terrain new file mode 100644 index 000000000..d4ef1c5ec Binary files /dev/null and b/public/terrain/19/858489/353948.terrain differ diff --git a/public/terrain/19/858489/353949.terrain b/public/terrain/19/858489/353949.terrain new file mode 100644 index 000000000..133b0a84e Binary files /dev/null and b/public/terrain/19/858489/353949.terrain differ diff --git a/public/terrain/19/858489/353950.terrain b/public/terrain/19/858489/353950.terrain new file mode 100644 index 000000000..e4ca76170 Binary files /dev/null and b/public/terrain/19/858489/353950.terrain differ diff --git a/public/terrain/19/858489/353951.terrain b/public/terrain/19/858489/353951.terrain new file mode 100644 index 000000000..adb3462c1 Binary files /dev/null and b/public/terrain/19/858489/353951.terrain differ diff --git a/public/terrain/19/858489/353952.terrain b/public/terrain/19/858489/353952.terrain new file mode 100644 index 000000000..0978b629b Binary files /dev/null and b/public/terrain/19/858489/353952.terrain differ diff --git a/public/terrain/19/858489/353953.terrain b/public/terrain/19/858489/353953.terrain new file mode 100644 index 000000000..e204ed33c Binary files /dev/null and b/public/terrain/19/858489/353953.terrain differ diff --git a/public/terrain/19/858489/353954.terrain b/public/terrain/19/858489/353954.terrain new file mode 100644 index 000000000..9b7941246 Binary files /dev/null and b/public/terrain/19/858489/353954.terrain differ diff --git a/public/terrain/19/858489/353955.terrain b/public/terrain/19/858489/353955.terrain new file mode 100644 index 000000000..9dde4ede3 Binary files /dev/null and b/public/terrain/19/858489/353955.terrain differ diff --git a/public/terrain/19/858489/353956.terrain b/public/terrain/19/858489/353956.terrain new file mode 100644 index 000000000..d9e544416 Binary files /dev/null and b/public/terrain/19/858489/353956.terrain differ diff --git a/public/terrain/19/858489/353957.terrain b/public/terrain/19/858489/353957.terrain new file mode 100644 index 000000000..9caf386fa Binary files /dev/null and b/public/terrain/19/858489/353957.terrain differ diff --git a/public/terrain/19/858489/353958.terrain b/public/terrain/19/858489/353958.terrain new file mode 100644 index 000000000..187ab48dc Binary files /dev/null and b/public/terrain/19/858489/353958.terrain differ diff --git a/public/terrain/19/858489/353959.terrain b/public/terrain/19/858489/353959.terrain new file mode 100644 index 000000000..8cb38bb3f Binary files /dev/null and b/public/terrain/19/858489/353959.terrain differ diff --git a/public/terrain/19/858489/353960.terrain b/public/terrain/19/858489/353960.terrain new file mode 100644 index 000000000..e8f6849ac Binary files /dev/null and b/public/terrain/19/858489/353960.terrain differ diff --git a/public/terrain/19/858489/353961.terrain b/public/terrain/19/858489/353961.terrain new file mode 100644 index 000000000..443ad7fdc Binary files /dev/null and b/public/terrain/19/858489/353961.terrain differ diff --git a/public/terrain/19/858489/353962.terrain b/public/terrain/19/858489/353962.terrain new file mode 100644 index 000000000..1b393e172 Binary files /dev/null and b/public/terrain/19/858489/353962.terrain differ diff --git a/public/terrain/19/858489/353963.terrain b/public/terrain/19/858489/353963.terrain new file mode 100644 index 000000000..0925a10b3 Binary files /dev/null and b/public/terrain/19/858489/353963.terrain differ diff --git a/public/terrain/19/858489/353964.terrain b/public/terrain/19/858489/353964.terrain new file mode 100644 index 000000000..6d9265923 Binary files /dev/null and b/public/terrain/19/858489/353964.terrain differ diff --git a/public/terrain/19/858489/353965.terrain b/public/terrain/19/858489/353965.terrain new file mode 100644 index 000000000..c03646daa Binary files /dev/null and b/public/terrain/19/858489/353965.terrain differ diff --git a/public/terrain/19/858489/353966.terrain b/public/terrain/19/858489/353966.terrain new file mode 100644 index 000000000..6bae413f1 Binary files /dev/null and b/public/terrain/19/858489/353966.terrain differ diff --git a/public/terrain/19/858489/353967.terrain b/public/terrain/19/858489/353967.terrain new file mode 100644 index 000000000..4e30661f5 Binary files /dev/null and b/public/terrain/19/858489/353967.terrain differ diff --git a/public/terrain/19/858489/353968.terrain b/public/terrain/19/858489/353968.terrain new file mode 100644 index 000000000..e5cc492a7 Binary files /dev/null and b/public/terrain/19/858489/353968.terrain differ diff --git a/public/terrain/19/858489/353969.terrain b/public/terrain/19/858489/353969.terrain new file mode 100644 index 000000000..84d686e5c Binary files /dev/null and b/public/terrain/19/858489/353969.terrain differ diff --git a/public/terrain/19/858489/353970.terrain b/public/terrain/19/858489/353970.terrain new file mode 100644 index 000000000..c73f12b9c Binary files /dev/null and b/public/terrain/19/858489/353970.terrain differ diff --git a/public/terrain/19/858489/353971.terrain b/public/terrain/19/858489/353971.terrain new file mode 100644 index 000000000..38cb5b0a2 Binary files /dev/null and b/public/terrain/19/858489/353971.terrain differ diff --git a/public/terrain/19/858489/353972.terrain b/public/terrain/19/858489/353972.terrain new file mode 100644 index 000000000..07cc5f381 Binary files /dev/null and b/public/terrain/19/858489/353972.terrain differ diff --git a/public/terrain/19/858489/353973.terrain b/public/terrain/19/858489/353973.terrain new file mode 100644 index 000000000..cbdeb83a5 Binary files /dev/null and b/public/terrain/19/858489/353973.terrain differ diff --git a/public/terrain/19/858489/353974.terrain b/public/terrain/19/858489/353974.terrain new file mode 100644 index 000000000..6c8f5b336 Binary files /dev/null and b/public/terrain/19/858489/353974.terrain differ diff --git a/public/terrain/19/858489/353975.terrain b/public/terrain/19/858489/353975.terrain new file mode 100644 index 000000000..95c5829bb Binary files /dev/null and b/public/terrain/19/858489/353975.terrain differ diff --git a/public/terrain/19/858489/353976.terrain b/public/terrain/19/858489/353976.terrain new file mode 100644 index 000000000..0bc7ad1db Binary files /dev/null and b/public/terrain/19/858489/353976.terrain differ diff --git a/public/terrain/19/858489/353977.terrain b/public/terrain/19/858489/353977.terrain new file mode 100644 index 000000000..af0961063 Binary files /dev/null and b/public/terrain/19/858489/353977.terrain differ diff --git a/public/terrain/19/858489/353978.terrain b/public/terrain/19/858489/353978.terrain new file mode 100644 index 000000000..90051d78c Binary files /dev/null and b/public/terrain/19/858489/353978.terrain differ diff --git a/public/terrain/19/858489/353979.terrain b/public/terrain/19/858489/353979.terrain new file mode 100644 index 000000000..811f0d6dc Binary files /dev/null and b/public/terrain/19/858489/353979.terrain differ diff --git a/public/terrain/19/858489/353980.terrain b/public/terrain/19/858489/353980.terrain new file mode 100644 index 000000000..9789bf63c Binary files /dev/null and b/public/terrain/19/858489/353980.terrain differ diff --git a/public/terrain/19/858489/353981.terrain b/public/terrain/19/858489/353981.terrain new file mode 100644 index 000000000..9ca28459b Binary files /dev/null and b/public/terrain/19/858489/353981.terrain differ diff --git a/public/terrain/19/858489/353982.terrain b/public/terrain/19/858489/353982.terrain new file mode 100644 index 000000000..1fbb7ffe8 Binary files /dev/null and b/public/terrain/19/858489/353982.terrain differ diff --git a/public/terrain/19/858489/353983.terrain b/public/terrain/19/858489/353983.terrain new file mode 100644 index 000000000..8f99519c7 Binary files /dev/null and b/public/terrain/19/858489/353983.terrain differ diff --git a/public/terrain/19/858489/353984.terrain b/public/terrain/19/858489/353984.terrain new file mode 100644 index 000000000..f0322f4f6 Binary files /dev/null and b/public/terrain/19/858489/353984.terrain differ diff --git a/public/terrain/19/858489/353985.terrain b/public/terrain/19/858489/353985.terrain new file mode 100644 index 000000000..68cdc4784 Binary files /dev/null and b/public/terrain/19/858489/353985.terrain differ diff --git a/public/terrain/19/858489/353986.terrain b/public/terrain/19/858489/353986.terrain new file mode 100644 index 000000000..db5028e6c Binary files /dev/null and b/public/terrain/19/858489/353986.terrain differ diff --git a/public/terrain/19/858489/353987.terrain b/public/terrain/19/858489/353987.terrain new file mode 100644 index 000000000..8b6b0f840 Binary files /dev/null and b/public/terrain/19/858489/353987.terrain differ diff --git a/public/terrain/19/858489/353988.terrain b/public/terrain/19/858489/353988.terrain new file mode 100644 index 000000000..738272977 Binary files /dev/null and b/public/terrain/19/858489/353988.terrain differ diff --git a/public/terrain/19/858489/353989.terrain b/public/terrain/19/858489/353989.terrain new file mode 100644 index 000000000..cf3705ca1 Binary files /dev/null and b/public/terrain/19/858489/353989.terrain differ diff --git a/public/terrain/19/858489/353990.terrain b/public/terrain/19/858489/353990.terrain new file mode 100644 index 000000000..c367ec4a9 Binary files /dev/null and b/public/terrain/19/858489/353990.terrain differ diff --git a/public/terrain/19/858489/353991.terrain b/public/terrain/19/858489/353991.terrain new file mode 100644 index 000000000..256c03ca2 Binary files /dev/null and b/public/terrain/19/858489/353991.terrain differ diff --git a/public/terrain/19/858489/353992.terrain b/public/terrain/19/858489/353992.terrain new file mode 100644 index 000000000..57a62b241 Binary files /dev/null and b/public/terrain/19/858489/353992.terrain differ diff --git a/public/terrain/19/858489/353993.terrain b/public/terrain/19/858489/353993.terrain new file mode 100644 index 000000000..b94e16e37 Binary files /dev/null and b/public/terrain/19/858489/353993.terrain differ diff --git a/public/terrain/19/858489/353994.terrain b/public/terrain/19/858489/353994.terrain new file mode 100644 index 000000000..034030685 Binary files /dev/null and b/public/terrain/19/858489/353994.terrain differ diff --git a/public/terrain/19/858489/353995.terrain b/public/terrain/19/858489/353995.terrain new file mode 100644 index 000000000..a81fe3a69 Binary files /dev/null and b/public/terrain/19/858489/353995.terrain differ diff --git a/public/terrain/19/858489/353996.terrain b/public/terrain/19/858489/353996.terrain new file mode 100644 index 000000000..d8a2d140b Binary files /dev/null and b/public/terrain/19/858489/353996.terrain differ diff --git a/public/terrain/19/858489/353997.terrain b/public/terrain/19/858489/353997.terrain new file mode 100644 index 000000000..33a34202b Binary files /dev/null and b/public/terrain/19/858489/353997.terrain differ diff --git a/public/terrain/19/858489/353998.terrain b/public/terrain/19/858489/353998.terrain new file mode 100644 index 000000000..93994d95e Binary files /dev/null and b/public/terrain/19/858489/353998.terrain differ diff --git a/public/terrain/19/858489/353999.terrain b/public/terrain/19/858489/353999.terrain new file mode 100644 index 000000000..941ab9ff0 Binary files /dev/null and b/public/terrain/19/858489/353999.terrain differ diff --git a/public/terrain/19/858489/354000.terrain b/public/terrain/19/858489/354000.terrain new file mode 100644 index 000000000..348deac33 Binary files /dev/null and b/public/terrain/19/858489/354000.terrain differ diff --git a/public/terrain/19/858489/354001.terrain b/public/terrain/19/858489/354001.terrain new file mode 100644 index 000000000..4726f0f37 Binary files /dev/null and b/public/terrain/19/858489/354001.terrain differ diff --git a/public/terrain/19/858489/354002.terrain b/public/terrain/19/858489/354002.terrain new file mode 100644 index 000000000..35c0bf37c Binary files /dev/null and b/public/terrain/19/858489/354002.terrain differ diff --git a/public/terrain/19/858489/354003.terrain b/public/terrain/19/858489/354003.terrain new file mode 100644 index 000000000..47d3a8839 Binary files /dev/null and b/public/terrain/19/858489/354003.terrain differ diff --git a/public/terrain/19/858489/354004.terrain b/public/terrain/19/858489/354004.terrain new file mode 100644 index 000000000..6efe2a89e Binary files /dev/null and b/public/terrain/19/858489/354004.terrain differ diff --git a/public/terrain/19/858489/354005.terrain b/public/terrain/19/858489/354005.terrain new file mode 100644 index 000000000..6a179357f Binary files /dev/null and b/public/terrain/19/858489/354005.terrain differ diff --git a/public/terrain/19/858489/354006.terrain b/public/terrain/19/858489/354006.terrain new file mode 100644 index 000000000..79d0fd6c8 Binary files /dev/null and b/public/terrain/19/858489/354006.terrain differ diff --git a/public/terrain/19/858489/354007.terrain b/public/terrain/19/858489/354007.terrain new file mode 100644 index 000000000..5f779dd43 Binary files /dev/null and b/public/terrain/19/858489/354007.terrain differ diff --git a/public/terrain/19/858489/354008.terrain b/public/terrain/19/858489/354008.terrain new file mode 100644 index 000000000..cdea0429a Binary files /dev/null and b/public/terrain/19/858489/354008.terrain differ diff --git a/public/terrain/19/858489/354009.terrain b/public/terrain/19/858489/354009.terrain new file mode 100644 index 000000000..28e445e47 Binary files /dev/null and b/public/terrain/19/858489/354009.terrain differ diff --git a/public/terrain/19/858489/354010.terrain b/public/terrain/19/858489/354010.terrain new file mode 100644 index 000000000..9261aafdb Binary files /dev/null and b/public/terrain/19/858489/354010.terrain differ diff --git a/public/terrain/19/858489/354011.terrain b/public/terrain/19/858489/354011.terrain new file mode 100644 index 000000000..f7cc60d82 Binary files /dev/null and b/public/terrain/19/858489/354011.terrain differ diff --git a/public/terrain/19/858489/354012.terrain b/public/terrain/19/858489/354012.terrain new file mode 100644 index 000000000..7b26c582b Binary files /dev/null and b/public/terrain/19/858489/354012.terrain differ diff --git a/public/terrain/19/858489/354013.terrain b/public/terrain/19/858489/354013.terrain new file mode 100644 index 000000000..00502c5de Binary files /dev/null and b/public/terrain/19/858489/354013.terrain differ diff --git a/public/terrain/19/858489/354014.terrain b/public/terrain/19/858489/354014.terrain new file mode 100644 index 000000000..bd590f592 Binary files /dev/null and b/public/terrain/19/858489/354014.terrain differ diff --git a/public/terrain/19/858489/354015.terrain b/public/terrain/19/858489/354015.terrain new file mode 100644 index 000000000..6d4b76855 Binary files /dev/null and b/public/terrain/19/858489/354015.terrain differ diff --git a/public/terrain/19/858489/354016.terrain b/public/terrain/19/858489/354016.terrain new file mode 100644 index 000000000..ce7a71188 Binary files /dev/null and b/public/terrain/19/858489/354016.terrain differ diff --git a/public/terrain/19/858489/354017.terrain b/public/terrain/19/858489/354017.terrain new file mode 100644 index 000000000..82d98b417 Binary files /dev/null and b/public/terrain/19/858489/354017.terrain differ diff --git a/public/terrain/19/858489/354018.terrain b/public/terrain/19/858489/354018.terrain new file mode 100644 index 000000000..6efc5fca6 Binary files /dev/null and b/public/terrain/19/858489/354018.terrain differ diff --git a/public/terrain/19/858489/354019.terrain b/public/terrain/19/858489/354019.terrain new file mode 100644 index 000000000..8068b0a6d Binary files /dev/null and b/public/terrain/19/858489/354019.terrain differ diff --git a/public/terrain/19/858489/354020.terrain b/public/terrain/19/858489/354020.terrain new file mode 100644 index 000000000..b66e158bf Binary files /dev/null and b/public/terrain/19/858489/354020.terrain differ diff --git a/public/terrain/19/858489/354021.terrain b/public/terrain/19/858489/354021.terrain new file mode 100644 index 000000000..cd950abd2 Binary files /dev/null and b/public/terrain/19/858489/354021.terrain differ diff --git a/public/terrain/19/858489/354022.terrain b/public/terrain/19/858489/354022.terrain new file mode 100644 index 000000000..53130f4ec Binary files /dev/null and b/public/terrain/19/858489/354022.terrain differ diff --git a/public/terrain/19/858489/354023.terrain b/public/terrain/19/858489/354023.terrain new file mode 100644 index 000000000..71cb3e0b1 Binary files /dev/null and b/public/terrain/19/858489/354023.terrain differ diff --git a/public/terrain/19/858489/354024.terrain b/public/terrain/19/858489/354024.terrain new file mode 100644 index 000000000..a20bf5915 Binary files /dev/null and b/public/terrain/19/858489/354024.terrain differ diff --git a/public/terrain/19/858489/354025.terrain b/public/terrain/19/858489/354025.terrain new file mode 100644 index 000000000..c0332c437 Binary files /dev/null and b/public/terrain/19/858489/354025.terrain differ diff --git a/public/terrain/19/858489/354026.terrain b/public/terrain/19/858489/354026.terrain new file mode 100644 index 000000000..8b2cb1a8e Binary files /dev/null and b/public/terrain/19/858489/354026.terrain differ diff --git a/public/terrain/19/858489/354027.terrain b/public/terrain/19/858489/354027.terrain new file mode 100644 index 000000000..1a6fda5db Binary files /dev/null and b/public/terrain/19/858489/354027.terrain differ diff --git a/public/terrain/19/858489/354028.terrain b/public/terrain/19/858489/354028.terrain new file mode 100644 index 000000000..63c7de072 Binary files /dev/null and b/public/terrain/19/858489/354028.terrain differ diff --git a/public/terrain/19/858489/354029.terrain b/public/terrain/19/858489/354029.terrain new file mode 100644 index 000000000..678eedc17 Binary files /dev/null and b/public/terrain/19/858489/354029.terrain differ diff --git a/public/terrain/19/858489/354030.terrain b/public/terrain/19/858489/354030.terrain new file mode 100644 index 000000000..1a18f127b Binary files /dev/null and b/public/terrain/19/858489/354030.terrain differ diff --git a/public/terrain/19/858489/354031.terrain b/public/terrain/19/858489/354031.terrain new file mode 100644 index 000000000..bda4751df Binary files /dev/null and b/public/terrain/19/858489/354031.terrain differ diff --git a/public/terrain/19/858489/354032.terrain b/public/terrain/19/858489/354032.terrain new file mode 100644 index 000000000..72cadd06c Binary files /dev/null and b/public/terrain/19/858489/354032.terrain differ diff --git a/public/terrain/19/858489/354033.terrain b/public/terrain/19/858489/354033.terrain new file mode 100644 index 000000000..fc99c61ac Binary files /dev/null and b/public/terrain/19/858489/354033.terrain differ diff --git a/public/terrain/19/858489/354034.terrain b/public/terrain/19/858489/354034.terrain new file mode 100644 index 000000000..7419ed745 Binary files /dev/null and b/public/terrain/19/858489/354034.terrain differ diff --git a/public/terrain/19/858489/354035.terrain b/public/terrain/19/858489/354035.terrain new file mode 100644 index 000000000..4e91ea114 Binary files /dev/null and b/public/terrain/19/858489/354035.terrain differ diff --git a/public/terrain/19/858489/354036.terrain b/public/terrain/19/858489/354036.terrain new file mode 100644 index 000000000..196138863 Binary files /dev/null and b/public/terrain/19/858489/354036.terrain differ diff --git a/public/terrain/19/858489/354037.terrain b/public/terrain/19/858489/354037.terrain new file mode 100644 index 000000000..43c1f7ae9 Binary files /dev/null and b/public/terrain/19/858489/354037.terrain differ diff --git a/public/terrain/19/858489/354038.terrain b/public/terrain/19/858489/354038.terrain new file mode 100644 index 000000000..bfc85c21d Binary files /dev/null and b/public/terrain/19/858489/354038.terrain differ diff --git a/public/terrain/19/858489/354039.terrain b/public/terrain/19/858489/354039.terrain new file mode 100644 index 000000000..f4e4d6b62 Binary files /dev/null and b/public/terrain/19/858489/354039.terrain differ diff --git a/public/terrain/19/858489/354040.terrain b/public/terrain/19/858489/354040.terrain new file mode 100644 index 000000000..7140847f4 Binary files /dev/null and b/public/terrain/19/858489/354040.terrain differ diff --git a/public/terrain/19/858489/354041.terrain b/public/terrain/19/858489/354041.terrain new file mode 100644 index 000000000..ac6238b65 Binary files /dev/null and b/public/terrain/19/858489/354041.terrain differ diff --git a/public/terrain/19/858489/354042.terrain b/public/terrain/19/858489/354042.terrain new file mode 100644 index 000000000..a27a74b21 Binary files /dev/null and b/public/terrain/19/858489/354042.terrain differ diff --git a/public/terrain/19/858489/354043.terrain b/public/terrain/19/858489/354043.terrain new file mode 100644 index 000000000..d40f10328 Binary files /dev/null and b/public/terrain/19/858489/354043.terrain differ diff --git a/public/terrain/19/858489/354044.terrain b/public/terrain/19/858489/354044.terrain new file mode 100644 index 000000000..2f2b339ab Binary files /dev/null and b/public/terrain/19/858489/354044.terrain differ diff --git a/public/terrain/19/858489/354045.terrain b/public/terrain/19/858489/354045.terrain new file mode 100644 index 000000000..cd990b632 Binary files /dev/null and b/public/terrain/19/858489/354045.terrain differ diff --git a/public/terrain/19/858489/354046.terrain b/public/terrain/19/858489/354046.terrain new file mode 100644 index 000000000..17997f2ff Binary files /dev/null and b/public/terrain/19/858489/354046.terrain differ diff --git a/public/terrain/19/858489/354047.terrain b/public/terrain/19/858489/354047.terrain new file mode 100644 index 000000000..6b6782959 Binary files /dev/null and b/public/terrain/19/858489/354047.terrain differ diff --git a/public/terrain/19/858489/354048.terrain b/public/terrain/19/858489/354048.terrain new file mode 100644 index 000000000..fc37babe4 Binary files /dev/null and b/public/terrain/19/858489/354048.terrain differ diff --git a/public/terrain/19/858489/354049.terrain b/public/terrain/19/858489/354049.terrain new file mode 100644 index 000000000..cd0e1d7f8 Binary files /dev/null and b/public/terrain/19/858489/354049.terrain differ diff --git a/public/terrain/19/858489/354050.terrain b/public/terrain/19/858489/354050.terrain new file mode 100644 index 000000000..a8f6af772 Binary files /dev/null and b/public/terrain/19/858489/354050.terrain differ diff --git a/public/terrain/19/858489/354051.terrain b/public/terrain/19/858489/354051.terrain new file mode 100644 index 000000000..255e4d01f Binary files /dev/null and b/public/terrain/19/858489/354051.terrain differ diff --git a/public/terrain/19/858489/354052.terrain b/public/terrain/19/858489/354052.terrain new file mode 100644 index 000000000..3bb254a36 Binary files /dev/null and b/public/terrain/19/858489/354052.terrain differ diff --git a/public/terrain/19/858489/354053.terrain b/public/terrain/19/858489/354053.terrain new file mode 100644 index 000000000..3d4909721 Binary files /dev/null and b/public/terrain/19/858489/354053.terrain differ diff --git a/public/terrain/19/858489/354054.terrain b/public/terrain/19/858489/354054.terrain new file mode 100644 index 000000000..1f2473494 Binary files /dev/null and b/public/terrain/19/858489/354054.terrain differ diff --git a/public/terrain/19/858489/354055.terrain b/public/terrain/19/858489/354055.terrain new file mode 100644 index 000000000..314319e67 Binary files /dev/null and b/public/terrain/19/858489/354055.terrain differ diff --git a/public/terrain/19/858489/354056.terrain b/public/terrain/19/858489/354056.terrain new file mode 100644 index 000000000..ce6a543e3 Binary files /dev/null and b/public/terrain/19/858489/354056.terrain differ diff --git a/public/terrain/19/858489/354057.terrain b/public/terrain/19/858489/354057.terrain new file mode 100644 index 000000000..b347e8042 Binary files /dev/null and b/public/terrain/19/858489/354057.terrain differ diff --git a/public/terrain/19/858489/354058.terrain b/public/terrain/19/858489/354058.terrain new file mode 100644 index 000000000..46e614a1a Binary files /dev/null and b/public/terrain/19/858489/354058.terrain differ diff --git a/public/terrain/19/858489/354059.terrain b/public/terrain/19/858489/354059.terrain new file mode 100644 index 000000000..e35962dee Binary files /dev/null and b/public/terrain/19/858489/354059.terrain differ diff --git a/public/terrain/19/858490/353743.terrain b/public/terrain/19/858490/353743.terrain new file mode 100644 index 000000000..09d68d5c7 Binary files /dev/null and b/public/terrain/19/858490/353743.terrain differ diff --git a/public/terrain/19/858490/353744.terrain b/public/terrain/19/858490/353744.terrain new file mode 100644 index 000000000..70be13c4b Binary files /dev/null and b/public/terrain/19/858490/353744.terrain differ diff --git a/public/terrain/19/858490/353745.terrain b/public/terrain/19/858490/353745.terrain new file mode 100644 index 000000000..39af74e65 Binary files /dev/null and b/public/terrain/19/858490/353745.terrain differ diff --git a/public/terrain/19/858490/353746.terrain b/public/terrain/19/858490/353746.terrain new file mode 100644 index 000000000..020716a08 Binary files /dev/null and b/public/terrain/19/858490/353746.terrain differ diff --git a/public/terrain/19/858490/353747.terrain b/public/terrain/19/858490/353747.terrain new file mode 100644 index 000000000..f31433b8c Binary files /dev/null and b/public/terrain/19/858490/353747.terrain differ diff --git a/public/terrain/19/858490/353748.terrain b/public/terrain/19/858490/353748.terrain new file mode 100644 index 000000000..ba71c963c Binary files /dev/null and b/public/terrain/19/858490/353748.terrain differ diff --git a/public/terrain/19/858490/353749.terrain b/public/terrain/19/858490/353749.terrain new file mode 100644 index 000000000..11835f08b Binary files /dev/null and b/public/terrain/19/858490/353749.terrain differ diff --git a/public/terrain/19/858490/353750.terrain b/public/terrain/19/858490/353750.terrain new file mode 100644 index 000000000..7bc87c145 Binary files /dev/null and b/public/terrain/19/858490/353750.terrain differ diff --git a/public/terrain/19/858490/353751.terrain b/public/terrain/19/858490/353751.terrain new file mode 100644 index 000000000..888a3ad75 Binary files /dev/null and b/public/terrain/19/858490/353751.terrain differ diff --git a/public/terrain/19/858490/353752.terrain b/public/terrain/19/858490/353752.terrain new file mode 100644 index 000000000..a1b00df1e Binary files /dev/null and b/public/terrain/19/858490/353752.terrain differ diff --git a/public/terrain/19/858490/353753.terrain b/public/terrain/19/858490/353753.terrain new file mode 100644 index 000000000..577f45c9f Binary files /dev/null and b/public/terrain/19/858490/353753.terrain differ diff --git a/public/terrain/19/858490/353754.terrain b/public/terrain/19/858490/353754.terrain new file mode 100644 index 000000000..03aff0c5b Binary files /dev/null and b/public/terrain/19/858490/353754.terrain differ diff --git a/public/terrain/19/858490/353755.terrain b/public/terrain/19/858490/353755.terrain new file mode 100644 index 000000000..17a372701 Binary files /dev/null and b/public/terrain/19/858490/353755.terrain differ diff --git a/public/terrain/19/858490/353756.terrain b/public/terrain/19/858490/353756.terrain new file mode 100644 index 000000000..19ce15ee6 Binary files /dev/null and b/public/terrain/19/858490/353756.terrain differ diff --git a/public/terrain/19/858490/353757.terrain b/public/terrain/19/858490/353757.terrain new file mode 100644 index 000000000..1fb8d990c Binary files /dev/null and b/public/terrain/19/858490/353757.terrain differ diff --git a/public/terrain/19/858490/353758.terrain b/public/terrain/19/858490/353758.terrain new file mode 100644 index 000000000..9ea962131 Binary files /dev/null and b/public/terrain/19/858490/353758.terrain differ diff --git a/public/terrain/19/858490/353759.terrain b/public/terrain/19/858490/353759.terrain new file mode 100644 index 000000000..d82831821 Binary files /dev/null and b/public/terrain/19/858490/353759.terrain differ diff --git a/public/terrain/19/858490/353760.terrain b/public/terrain/19/858490/353760.terrain new file mode 100644 index 000000000..7210bef35 Binary files /dev/null and b/public/terrain/19/858490/353760.terrain differ diff --git a/public/terrain/19/858490/353761.terrain b/public/terrain/19/858490/353761.terrain new file mode 100644 index 000000000..0ac5a0b4a Binary files /dev/null and b/public/terrain/19/858490/353761.terrain differ diff --git a/public/terrain/19/858490/353762.terrain b/public/terrain/19/858490/353762.terrain new file mode 100644 index 000000000..6afd983a5 Binary files /dev/null and b/public/terrain/19/858490/353762.terrain differ diff --git a/public/terrain/19/858490/353763.terrain b/public/terrain/19/858490/353763.terrain new file mode 100644 index 000000000..3e70a3b05 Binary files /dev/null and b/public/terrain/19/858490/353763.terrain differ diff --git a/public/terrain/19/858490/353764.terrain b/public/terrain/19/858490/353764.terrain new file mode 100644 index 000000000..dc5fdd57a Binary files /dev/null and b/public/terrain/19/858490/353764.terrain differ diff --git a/public/terrain/19/858490/353765.terrain b/public/terrain/19/858490/353765.terrain new file mode 100644 index 000000000..266e60659 Binary files /dev/null and b/public/terrain/19/858490/353765.terrain differ diff --git a/public/terrain/19/858490/353766.terrain b/public/terrain/19/858490/353766.terrain new file mode 100644 index 000000000..d1684a6e9 Binary files /dev/null and b/public/terrain/19/858490/353766.terrain differ diff --git a/public/terrain/19/858490/353767.terrain b/public/terrain/19/858490/353767.terrain new file mode 100644 index 000000000..7e9c6ae77 Binary files /dev/null and b/public/terrain/19/858490/353767.terrain differ diff --git a/public/terrain/19/858490/353768.terrain b/public/terrain/19/858490/353768.terrain new file mode 100644 index 000000000..2b4ccdb3f Binary files /dev/null and b/public/terrain/19/858490/353768.terrain differ diff --git a/public/terrain/19/858490/353769.terrain b/public/terrain/19/858490/353769.terrain new file mode 100644 index 000000000..dbe3da9d5 Binary files /dev/null and b/public/terrain/19/858490/353769.terrain differ diff --git a/public/terrain/19/858490/353770.terrain b/public/terrain/19/858490/353770.terrain new file mode 100644 index 000000000..eb570042a Binary files /dev/null and b/public/terrain/19/858490/353770.terrain differ diff --git a/public/terrain/19/858490/353771.terrain b/public/terrain/19/858490/353771.terrain new file mode 100644 index 000000000..20362d18a Binary files /dev/null and b/public/terrain/19/858490/353771.terrain differ diff --git a/public/terrain/19/858490/353772.terrain b/public/terrain/19/858490/353772.terrain new file mode 100644 index 000000000..f07ea7b56 Binary files /dev/null and b/public/terrain/19/858490/353772.terrain differ diff --git a/public/terrain/19/858490/353773.terrain b/public/terrain/19/858490/353773.terrain new file mode 100644 index 000000000..4b363d0fb Binary files /dev/null and b/public/terrain/19/858490/353773.terrain differ diff --git a/public/terrain/19/858490/353774.terrain b/public/terrain/19/858490/353774.terrain new file mode 100644 index 000000000..78d3f6166 Binary files /dev/null and b/public/terrain/19/858490/353774.terrain differ diff --git a/public/terrain/19/858490/353775.terrain b/public/terrain/19/858490/353775.terrain new file mode 100644 index 000000000..33ca92db0 Binary files /dev/null and b/public/terrain/19/858490/353775.terrain differ diff --git a/public/terrain/19/858490/353776.terrain b/public/terrain/19/858490/353776.terrain new file mode 100644 index 000000000..312dce24a Binary files /dev/null and b/public/terrain/19/858490/353776.terrain differ diff --git a/public/terrain/19/858490/353777.terrain b/public/terrain/19/858490/353777.terrain new file mode 100644 index 000000000..a8c1c2445 Binary files /dev/null and b/public/terrain/19/858490/353777.terrain differ diff --git a/public/terrain/19/858490/353778.terrain b/public/terrain/19/858490/353778.terrain new file mode 100644 index 000000000..7d1af6efe Binary files /dev/null and b/public/terrain/19/858490/353778.terrain differ diff --git a/public/terrain/19/858490/353779.terrain b/public/terrain/19/858490/353779.terrain new file mode 100644 index 000000000..6017b502e Binary files /dev/null and b/public/terrain/19/858490/353779.terrain differ diff --git a/public/terrain/19/858490/353780.terrain b/public/terrain/19/858490/353780.terrain new file mode 100644 index 000000000..b033d6095 Binary files /dev/null and b/public/terrain/19/858490/353780.terrain differ diff --git a/public/terrain/19/858490/353781.terrain b/public/terrain/19/858490/353781.terrain new file mode 100644 index 000000000..cb2156dd7 Binary files /dev/null and b/public/terrain/19/858490/353781.terrain differ diff --git a/public/terrain/19/858490/353782.terrain b/public/terrain/19/858490/353782.terrain new file mode 100644 index 000000000..53f7902df Binary files /dev/null and b/public/terrain/19/858490/353782.terrain differ diff --git a/public/terrain/19/858490/353783.terrain b/public/terrain/19/858490/353783.terrain new file mode 100644 index 000000000..eb186e30a Binary files /dev/null and b/public/terrain/19/858490/353783.terrain differ diff --git a/public/terrain/19/858490/353784.terrain b/public/terrain/19/858490/353784.terrain new file mode 100644 index 000000000..e5899beef Binary files /dev/null and b/public/terrain/19/858490/353784.terrain differ diff --git a/public/terrain/19/858490/353785.terrain b/public/terrain/19/858490/353785.terrain new file mode 100644 index 000000000..13d270601 Binary files /dev/null and b/public/terrain/19/858490/353785.terrain differ diff --git a/public/terrain/19/858490/353786.terrain b/public/terrain/19/858490/353786.terrain new file mode 100644 index 000000000..2baf57b27 Binary files /dev/null and b/public/terrain/19/858490/353786.terrain differ diff --git a/public/terrain/19/858490/353787.terrain b/public/terrain/19/858490/353787.terrain new file mode 100644 index 000000000..caded60ea Binary files /dev/null and b/public/terrain/19/858490/353787.terrain differ diff --git a/public/terrain/19/858490/353788.terrain b/public/terrain/19/858490/353788.terrain new file mode 100644 index 000000000..da02f2641 Binary files /dev/null and b/public/terrain/19/858490/353788.terrain differ diff --git a/public/terrain/19/858490/353789.terrain b/public/terrain/19/858490/353789.terrain new file mode 100644 index 000000000..2e4712cf6 Binary files /dev/null and b/public/terrain/19/858490/353789.terrain differ diff --git a/public/terrain/19/858490/353790.terrain b/public/terrain/19/858490/353790.terrain new file mode 100644 index 000000000..10ddcb4df Binary files /dev/null and b/public/terrain/19/858490/353790.terrain differ diff --git a/public/terrain/19/858490/353791.terrain b/public/terrain/19/858490/353791.terrain new file mode 100644 index 000000000..0e52795a5 Binary files /dev/null and b/public/terrain/19/858490/353791.terrain differ diff --git a/public/terrain/19/858490/353792.terrain b/public/terrain/19/858490/353792.terrain new file mode 100644 index 000000000..78570805d Binary files /dev/null and b/public/terrain/19/858490/353792.terrain differ diff --git a/public/terrain/19/858490/353793.terrain b/public/terrain/19/858490/353793.terrain new file mode 100644 index 000000000..b796fb694 Binary files /dev/null and b/public/terrain/19/858490/353793.terrain differ diff --git a/public/terrain/19/858490/353794.terrain b/public/terrain/19/858490/353794.terrain new file mode 100644 index 000000000..85732521c Binary files /dev/null and b/public/terrain/19/858490/353794.terrain differ diff --git a/public/terrain/19/858490/353795.terrain b/public/terrain/19/858490/353795.terrain new file mode 100644 index 000000000..dcd779a81 Binary files /dev/null and b/public/terrain/19/858490/353795.terrain differ diff --git a/public/terrain/19/858490/353796.terrain b/public/terrain/19/858490/353796.terrain new file mode 100644 index 000000000..bfcf0c2ae Binary files /dev/null and b/public/terrain/19/858490/353796.terrain differ diff --git a/public/terrain/19/858490/353797.terrain b/public/terrain/19/858490/353797.terrain new file mode 100644 index 000000000..ede3a0f3a Binary files /dev/null and b/public/terrain/19/858490/353797.terrain differ diff --git a/public/terrain/19/858490/353798.terrain b/public/terrain/19/858490/353798.terrain new file mode 100644 index 000000000..a85f307b8 Binary files /dev/null and b/public/terrain/19/858490/353798.terrain differ diff --git a/public/terrain/19/858490/353799.terrain b/public/terrain/19/858490/353799.terrain new file mode 100644 index 000000000..19f9ccc25 Binary files /dev/null and b/public/terrain/19/858490/353799.terrain differ diff --git a/public/terrain/19/858490/353800.terrain b/public/terrain/19/858490/353800.terrain new file mode 100644 index 000000000..3fcfefba9 Binary files /dev/null and b/public/terrain/19/858490/353800.terrain differ diff --git a/public/terrain/19/858490/353801.terrain b/public/terrain/19/858490/353801.terrain new file mode 100644 index 000000000..ddc504b73 Binary files /dev/null and b/public/terrain/19/858490/353801.terrain differ diff --git a/public/terrain/19/858490/353802.terrain b/public/terrain/19/858490/353802.terrain new file mode 100644 index 000000000..4e96fe728 Binary files /dev/null and b/public/terrain/19/858490/353802.terrain differ diff --git a/public/terrain/19/858490/353803.terrain b/public/terrain/19/858490/353803.terrain new file mode 100644 index 000000000..393d505c2 Binary files /dev/null and b/public/terrain/19/858490/353803.terrain differ diff --git a/public/terrain/19/858490/353804.terrain b/public/terrain/19/858490/353804.terrain new file mode 100644 index 000000000..7ffbf63b2 Binary files /dev/null and b/public/terrain/19/858490/353804.terrain differ diff --git a/public/terrain/19/858490/353805.terrain b/public/terrain/19/858490/353805.terrain new file mode 100644 index 000000000..cdc1a9e89 Binary files /dev/null and b/public/terrain/19/858490/353805.terrain differ diff --git a/public/terrain/19/858490/353806.terrain b/public/terrain/19/858490/353806.terrain new file mode 100644 index 000000000..d0a4139d8 Binary files /dev/null and b/public/terrain/19/858490/353806.terrain differ diff --git a/public/terrain/19/858490/353807.terrain b/public/terrain/19/858490/353807.terrain new file mode 100644 index 000000000..ae4065d6b Binary files /dev/null and b/public/terrain/19/858490/353807.terrain differ diff --git a/public/terrain/19/858490/353808.terrain b/public/terrain/19/858490/353808.terrain new file mode 100644 index 000000000..ec2ed8466 Binary files /dev/null and b/public/terrain/19/858490/353808.terrain differ diff --git a/public/terrain/19/858490/353809.terrain b/public/terrain/19/858490/353809.terrain new file mode 100644 index 000000000..04b5e4290 Binary files /dev/null and b/public/terrain/19/858490/353809.terrain differ diff --git a/public/terrain/19/858490/353810.terrain b/public/terrain/19/858490/353810.terrain new file mode 100644 index 000000000..75bb4274d Binary files /dev/null and b/public/terrain/19/858490/353810.terrain differ diff --git a/public/terrain/19/858490/353811.terrain b/public/terrain/19/858490/353811.terrain new file mode 100644 index 000000000..31b9a6f62 Binary files /dev/null and b/public/terrain/19/858490/353811.terrain differ diff --git a/public/terrain/19/858490/353812.terrain b/public/terrain/19/858490/353812.terrain new file mode 100644 index 000000000..9b910a750 Binary files /dev/null and b/public/terrain/19/858490/353812.terrain differ diff --git a/public/terrain/19/858490/353813.terrain b/public/terrain/19/858490/353813.terrain new file mode 100644 index 000000000..48fb1ded3 Binary files /dev/null and b/public/terrain/19/858490/353813.terrain differ diff --git a/public/terrain/19/858490/353814.terrain b/public/terrain/19/858490/353814.terrain new file mode 100644 index 000000000..fc3fe0b1e Binary files /dev/null and b/public/terrain/19/858490/353814.terrain differ diff --git a/public/terrain/19/858490/353815.terrain b/public/terrain/19/858490/353815.terrain new file mode 100644 index 000000000..b93d1e17c Binary files /dev/null and b/public/terrain/19/858490/353815.terrain differ diff --git a/public/terrain/19/858490/353816.terrain b/public/terrain/19/858490/353816.terrain new file mode 100644 index 000000000..821bdca78 Binary files /dev/null and b/public/terrain/19/858490/353816.terrain differ diff --git a/public/terrain/19/858490/353817.terrain b/public/terrain/19/858490/353817.terrain new file mode 100644 index 000000000..94c11ccc4 Binary files /dev/null and b/public/terrain/19/858490/353817.terrain differ diff --git a/public/terrain/19/858490/353818.terrain b/public/terrain/19/858490/353818.terrain new file mode 100644 index 000000000..49914b39c Binary files /dev/null and b/public/terrain/19/858490/353818.terrain differ diff --git a/public/terrain/19/858490/353819.terrain b/public/terrain/19/858490/353819.terrain new file mode 100644 index 000000000..1a5b4f0a6 Binary files /dev/null and b/public/terrain/19/858490/353819.terrain differ diff --git a/public/terrain/19/858490/353820.terrain b/public/terrain/19/858490/353820.terrain new file mode 100644 index 000000000..6d5459dd9 Binary files /dev/null and b/public/terrain/19/858490/353820.terrain differ diff --git a/public/terrain/19/858490/353821.terrain b/public/terrain/19/858490/353821.terrain new file mode 100644 index 000000000..4b6f73cbe Binary files /dev/null and b/public/terrain/19/858490/353821.terrain differ diff --git a/public/terrain/19/858490/353822.terrain b/public/terrain/19/858490/353822.terrain new file mode 100644 index 000000000..11c17787d Binary files /dev/null and b/public/terrain/19/858490/353822.terrain differ diff --git a/public/terrain/19/858490/353823.terrain b/public/terrain/19/858490/353823.terrain new file mode 100644 index 000000000..0dfeaff34 Binary files /dev/null and b/public/terrain/19/858490/353823.terrain differ diff --git a/public/terrain/19/858490/353824.terrain b/public/terrain/19/858490/353824.terrain new file mode 100644 index 000000000..634644a1f Binary files /dev/null and b/public/terrain/19/858490/353824.terrain differ diff --git a/public/terrain/19/858490/353825.terrain b/public/terrain/19/858490/353825.terrain new file mode 100644 index 000000000..6d348343d Binary files /dev/null and b/public/terrain/19/858490/353825.terrain differ diff --git a/public/terrain/19/858490/353826.terrain b/public/terrain/19/858490/353826.terrain new file mode 100644 index 000000000..c8879498c Binary files /dev/null and b/public/terrain/19/858490/353826.terrain differ diff --git a/public/terrain/19/858490/353827.terrain b/public/terrain/19/858490/353827.terrain new file mode 100644 index 000000000..c70de9bb9 Binary files /dev/null and b/public/terrain/19/858490/353827.terrain differ diff --git a/public/terrain/19/858490/353828.terrain b/public/terrain/19/858490/353828.terrain new file mode 100644 index 000000000..f0623b1a4 Binary files /dev/null and b/public/terrain/19/858490/353828.terrain differ diff --git a/public/terrain/19/858490/353829.terrain b/public/terrain/19/858490/353829.terrain new file mode 100644 index 000000000..db6ede3e0 Binary files /dev/null and b/public/terrain/19/858490/353829.terrain differ diff --git a/public/terrain/19/858490/353830.terrain b/public/terrain/19/858490/353830.terrain new file mode 100644 index 000000000..cb027228f Binary files /dev/null and b/public/terrain/19/858490/353830.terrain differ diff --git a/public/terrain/19/858490/353831.terrain b/public/terrain/19/858490/353831.terrain new file mode 100644 index 000000000..20c80e750 Binary files /dev/null and b/public/terrain/19/858490/353831.terrain differ diff --git a/public/terrain/19/858490/353832.terrain b/public/terrain/19/858490/353832.terrain new file mode 100644 index 000000000..1520287d8 Binary files /dev/null and b/public/terrain/19/858490/353832.terrain differ diff --git a/public/terrain/19/858490/353833.terrain b/public/terrain/19/858490/353833.terrain new file mode 100644 index 000000000..eac619887 Binary files /dev/null and b/public/terrain/19/858490/353833.terrain differ diff --git a/public/terrain/19/858490/353834.terrain b/public/terrain/19/858490/353834.terrain new file mode 100644 index 000000000..f006f2084 Binary files /dev/null and b/public/terrain/19/858490/353834.terrain differ diff --git a/public/terrain/19/858490/353835.terrain b/public/terrain/19/858490/353835.terrain new file mode 100644 index 000000000..0d1405c52 Binary files /dev/null and b/public/terrain/19/858490/353835.terrain differ diff --git a/public/terrain/19/858490/353836.terrain b/public/terrain/19/858490/353836.terrain new file mode 100644 index 000000000..d56101827 Binary files /dev/null and b/public/terrain/19/858490/353836.terrain differ diff --git a/public/terrain/19/858490/353837.terrain b/public/terrain/19/858490/353837.terrain new file mode 100644 index 000000000..de1618dd3 Binary files /dev/null and b/public/terrain/19/858490/353837.terrain differ diff --git a/public/terrain/19/858490/353838.terrain b/public/terrain/19/858490/353838.terrain new file mode 100644 index 000000000..22fb3c1df Binary files /dev/null and b/public/terrain/19/858490/353838.terrain differ diff --git a/public/terrain/19/858490/353839.terrain b/public/terrain/19/858490/353839.terrain new file mode 100644 index 000000000..6376ebb24 Binary files /dev/null and b/public/terrain/19/858490/353839.terrain differ diff --git a/public/terrain/19/858490/353840.terrain b/public/terrain/19/858490/353840.terrain new file mode 100644 index 000000000..70e86f094 Binary files /dev/null and b/public/terrain/19/858490/353840.terrain differ diff --git a/public/terrain/19/858490/353841.terrain b/public/terrain/19/858490/353841.terrain new file mode 100644 index 000000000..03e6bc26d Binary files /dev/null and b/public/terrain/19/858490/353841.terrain differ diff --git a/public/terrain/19/858490/353842.terrain b/public/terrain/19/858490/353842.terrain new file mode 100644 index 000000000..466891421 Binary files /dev/null and b/public/terrain/19/858490/353842.terrain differ diff --git a/public/terrain/19/858490/353843.terrain b/public/terrain/19/858490/353843.terrain new file mode 100644 index 000000000..f3b4a94f0 Binary files /dev/null and b/public/terrain/19/858490/353843.terrain differ diff --git a/public/terrain/19/858490/353844.terrain b/public/terrain/19/858490/353844.terrain new file mode 100644 index 000000000..edffcef43 Binary files /dev/null and b/public/terrain/19/858490/353844.terrain differ diff --git a/public/terrain/19/858490/353845.terrain b/public/terrain/19/858490/353845.terrain new file mode 100644 index 000000000..6129bfff9 Binary files /dev/null and b/public/terrain/19/858490/353845.terrain differ diff --git a/public/terrain/19/858490/353846.terrain b/public/terrain/19/858490/353846.terrain new file mode 100644 index 000000000..1ffb83375 Binary files /dev/null and b/public/terrain/19/858490/353846.terrain differ diff --git a/public/terrain/19/858490/353847.terrain b/public/terrain/19/858490/353847.terrain new file mode 100644 index 000000000..782b43b18 Binary files /dev/null and b/public/terrain/19/858490/353847.terrain differ diff --git a/public/terrain/19/858490/353848.terrain b/public/terrain/19/858490/353848.terrain new file mode 100644 index 000000000..9ab92791f Binary files /dev/null and b/public/terrain/19/858490/353848.terrain differ diff --git a/public/terrain/19/858490/353849.terrain b/public/terrain/19/858490/353849.terrain new file mode 100644 index 000000000..182b66189 Binary files /dev/null and b/public/terrain/19/858490/353849.terrain differ diff --git a/public/terrain/19/858490/353850.terrain b/public/terrain/19/858490/353850.terrain new file mode 100644 index 000000000..7d8e54fcb Binary files /dev/null and b/public/terrain/19/858490/353850.terrain differ diff --git a/public/terrain/19/858490/353851.terrain b/public/terrain/19/858490/353851.terrain new file mode 100644 index 000000000..30f5edd99 Binary files /dev/null and b/public/terrain/19/858490/353851.terrain differ diff --git a/public/terrain/19/858490/353852.terrain b/public/terrain/19/858490/353852.terrain new file mode 100644 index 000000000..9195e710a Binary files /dev/null and b/public/terrain/19/858490/353852.terrain differ diff --git a/public/terrain/19/858490/353853.terrain b/public/terrain/19/858490/353853.terrain new file mode 100644 index 000000000..8ebae29b5 Binary files /dev/null and b/public/terrain/19/858490/353853.terrain differ diff --git a/public/terrain/19/858490/353854.terrain b/public/terrain/19/858490/353854.terrain new file mode 100644 index 000000000..0826301f6 Binary files /dev/null and b/public/terrain/19/858490/353854.terrain differ diff --git a/public/terrain/19/858490/353855.terrain b/public/terrain/19/858490/353855.terrain new file mode 100644 index 000000000..b12522e76 Binary files /dev/null and b/public/terrain/19/858490/353855.terrain differ diff --git a/public/terrain/19/858490/353856.terrain b/public/terrain/19/858490/353856.terrain new file mode 100644 index 000000000..e0892c161 Binary files /dev/null and b/public/terrain/19/858490/353856.terrain differ diff --git a/public/terrain/19/858490/353857.terrain b/public/terrain/19/858490/353857.terrain new file mode 100644 index 000000000..2b1d65cd7 Binary files /dev/null and b/public/terrain/19/858490/353857.terrain differ diff --git a/public/terrain/19/858490/353858.terrain b/public/terrain/19/858490/353858.terrain new file mode 100644 index 000000000..23827e5c8 Binary files /dev/null and b/public/terrain/19/858490/353858.terrain differ diff --git a/public/terrain/19/858490/353859.terrain b/public/terrain/19/858490/353859.terrain new file mode 100644 index 000000000..2866072b6 Binary files /dev/null and b/public/terrain/19/858490/353859.terrain differ diff --git a/public/terrain/19/858490/353860.terrain b/public/terrain/19/858490/353860.terrain new file mode 100644 index 000000000..4418656d8 Binary files /dev/null and b/public/terrain/19/858490/353860.terrain differ diff --git a/public/terrain/19/858490/353861.terrain b/public/terrain/19/858490/353861.terrain new file mode 100644 index 000000000..0c320b2ee Binary files /dev/null and b/public/terrain/19/858490/353861.terrain differ diff --git a/public/terrain/19/858490/353862.terrain b/public/terrain/19/858490/353862.terrain new file mode 100644 index 000000000..f0497695a Binary files /dev/null and b/public/terrain/19/858490/353862.terrain differ diff --git a/public/terrain/19/858490/353863.terrain b/public/terrain/19/858490/353863.terrain new file mode 100644 index 000000000..d4463fce9 Binary files /dev/null and b/public/terrain/19/858490/353863.terrain differ diff --git a/public/terrain/19/858490/353864.terrain b/public/terrain/19/858490/353864.terrain new file mode 100644 index 000000000..c4b3b8101 Binary files /dev/null and b/public/terrain/19/858490/353864.terrain differ diff --git a/public/terrain/19/858490/353865.terrain b/public/terrain/19/858490/353865.terrain new file mode 100644 index 000000000..961d7d4c5 Binary files /dev/null and b/public/terrain/19/858490/353865.terrain differ diff --git a/public/terrain/19/858490/353866.terrain b/public/terrain/19/858490/353866.terrain new file mode 100644 index 000000000..c886f8e1c Binary files /dev/null and b/public/terrain/19/858490/353866.terrain differ diff --git a/public/terrain/19/858490/353867.terrain b/public/terrain/19/858490/353867.terrain new file mode 100644 index 000000000..d183e8b0b Binary files /dev/null and b/public/terrain/19/858490/353867.terrain differ diff --git a/public/terrain/19/858490/353868.terrain b/public/terrain/19/858490/353868.terrain new file mode 100644 index 000000000..49f43c95b Binary files /dev/null and b/public/terrain/19/858490/353868.terrain differ diff --git a/public/terrain/19/858490/353869.terrain b/public/terrain/19/858490/353869.terrain new file mode 100644 index 000000000..2ea638c95 Binary files /dev/null and b/public/terrain/19/858490/353869.terrain differ diff --git a/public/terrain/19/858490/353870.terrain b/public/terrain/19/858490/353870.terrain new file mode 100644 index 000000000..048bb941c Binary files /dev/null and b/public/terrain/19/858490/353870.terrain differ diff --git a/public/terrain/19/858490/353871.terrain b/public/terrain/19/858490/353871.terrain new file mode 100644 index 000000000..2020ecbb1 Binary files /dev/null and b/public/terrain/19/858490/353871.terrain differ diff --git a/public/terrain/19/858490/353872.terrain b/public/terrain/19/858490/353872.terrain new file mode 100644 index 000000000..185745d18 Binary files /dev/null and b/public/terrain/19/858490/353872.terrain differ diff --git a/public/terrain/19/858490/353873.terrain b/public/terrain/19/858490/353873.terrain new file mode 100644 index 000000000..c0e259b03 Binary files /dev/null and b/public/terrain/19/858490/353873.terrain differ diff --git a/public/terrain/19/858490/353874.terrain b/public/terrain/19/858490/353874.terrain new file mode 100644 index 000000000..0c8d1d8ff Binary files /dev/null and b/public/terrain/19/858490/353874.terrain differ diff --git a/public/terrain/19/858490/353875.terrain b/public/terrain/19/858490/353875.terrain new file mode 100644 index 000000000..bc4ac529a Binary files /dev/null and b/public/terrain/19/858490/353875.terrain differ diff --git a/public/terrain/19/858490/353876.terrain b/public/terrain/19/858490/353876.terrain new file mode 100644 index 000000000..25f2d7633 Binary files /dev/null and b/public/terrain/19/858490/353876.terrain differ diff --git a/public/terrain/19/858490/353877.terrain b/public/terrain/19/858490/353877.terrain new file mode 100644 index 000000000..623906685 Binary files /dev/null and b/public/terrain/19/858490/353877.terrain differ diff --git a/public/terrain/19/858490/353878.terrain b/public/terrain/19/858490/353878.terrain new file mode 100644 index 000000000..bb705336b Binary files /dev/null and b/public/terrain/19/858490/353878.terrain differ diff --git a/public/terrain/19/858490/353879.terrain b/public/terrain/19/858490/353879.terrain new file mode 100644 index 000000000..2a4ca2c75 Binary files /dev/null and b/public/terrain/19/858490/353879.terrain differ diff --git a/public/terrain/19/858490/353880.terrain b/public/terrain/19/858490/353880.terrain new file mode 100644 index 000000000..c739350c8 Binary files /dev/null and b/public/terrain/19/858490/353880.terrain differ diff --git a/public/terrain/19/858490/353881.terrain b/public/terrain/19/858490/353881.terrain new file mode 100644 index 000000000..592e0cfe6 Binary files /dev/null and b/public/terrain/19/858490/353881.terrain differ diff --git a/public/terrain/19/858490/353882.terrain b/public/terrain/19/858490/353882.terrain new file mode 100644 index 000000000..8eca96222 Binary files /dev/null and b/public/terrain/19/858490/353882.terrain differ diff --git a/public/terrain/19/858490/353883.terrain b/public/terrain/19/858490/353883.terrain new file mode 100644 index 000000000..6c6d2d088 Binary files /dev/null and b/public/terrain/19/858490/353883.terrain differ diff --git a/public/terrain/19/858490/353884.terrain b/public/terrain/19/858490/353884.terrain new file mode 100644 index 000000000..32442fe3a Binary files /dev/null and b/public/terrain/19/858490/353884.terrain differ diff --git a/public/terrain/19/858490/353885.terrain b/public/terrain/19/858490/353885.terrain new file mode 100644 index 000000000..2d0c0c65a Binary files /dev/null and b/public/terrain/19/858490/353885.terrain differ diff --git a/public/terrain/19/858490/353886.terrain b/public/terrain/19/858490/353886.terrain new file mode 100644 index 000000000..7cdb19234 Binary files /dev/null and b/public/terrain/19/858490/353886.terrain differ diff --git a/public/terrain/19/858490/353887.terrain b/public/terrain/19/858490/353887.terrain new file mode 100644 index 000000000..269371aa3 Binary files /dev/null and b/public/terrain/19/858490/353887.terrain differ diff --git a/public/terrain/19/858490/353888.terrain b/public/terrain/19/858490/353888.terrain new file mode 100644 index 000000000..e57a56b84 Binary files /dev/null and b/public/terrain/19/858490/353888.terrain differ diff --git a/public/terrain/19/858490/353889.terrain b/public/terrain/19/858490/353889.terrain new file mode 100644 index 000000000..126fc849a Binary files /dev/null and b/public/terrain/19/858490/353889.terrain differ diff --git a/public/terrain/19/858490/353890.terrain b/public/terrain/19/858490/353890.terrain new file mode 100644 index 000000000..d18a5c821 Binary files /dev/null and b/public/terrain/19/858490/353890.terrain differ diff --git a/public/terrain/19/858490/353891.terrain b/public/terrain/19/858490/353891.terrain new file mode 100644 index 000000000..377ca58a8 Binary files /dev/null and b/public/terrain/19/858490/353891.terrain differ diff --git a/public/terrain/19/858490/353892.terrain b/public/terrain/19/858490/353892.terrain new file mode 100644 index 000000000..3e8b85480 Binary files /dev/null and b/public/terrain/19/858490/353892.terrain differ diff --git a/public/terrain/19/858490/353893.terrain b/public/terrain/19/858490/353893.terrain new file mode 100644 index 000000000..dd0a50972 Binary files /dev/null and b/public/terrain/19/858490/353893.terrain differ diff --git a/public/terrain/19/858490/353894.terrain b/public/terrain/19/858490/353894.terrain new file mode 100644 index 000000000..e051a8ae8 Binary files /dev/null and b/public/terrain/19/858490/353894.terrain differ diff --git a/public/terrain/19/858490/353895.terrain b/public/terrain/19/858490/353895.terrain new file mode 100644 index 000000000..2d0339047 Binary files /dev/null and b/public/terrain/19/858490/353895.terrain differ diff --git a/public/terrain/19/858490/353896.terrain b/public/terrain/19/858490/353896.terrain new file mode 100644 index 000000000..1f8bbfb6a Binary files /dev/null and b/public/terrain/19/858490/353896.terrain differ diff --git a/public/terrain/19/858490/353897.terrain b/public/terrain/19/858490/353897.terrain new file mode 100644 index 000000000..7c203f5c1 Binary files /dev/null and b/public/terrain/19/858490/353897.terrain differ diff --git a/public/terrain/19/858490/353898.terrain b/public/terrain/19/858490/353898.terrain new file mode 100644 index 000000000..fc7294b61 Binary files /dev/null and b/public/terrain/19/858490/353898.terrain differ diff --git a/public/terrain/19/858490/353899.terrain b/public/terrain/19/858490/353899.terrain new file mode 100644 index 000000000..ba7c20748 Binary files /dev/null and b/public/terrain/19/858490/353899.terrain differ diff --git a/public/terrain/19/858490/353900.terrain b/public/terrain/19/858490/353900.terrain new file mode 100644 index 000000000..539067cc9 Binary files /dev/null and b/public/terrain/19/858490/353900.terrain differ diff --git a/public/terrain/19/858490/353901.terrain b/public/terrain/19/858490/353901.terrain new file mode 100644 index 000000000..653af6d3d Binary files /dev/null and b/public/terrain/19/858490/353901.terrain differ diff --git a/public/terrain/19/858490/353902.terrain b/public/terrain/19/858490/353902.terrain new file mode 100644 index 000000000..f17cbe6a8 Binary files /dev/null and b/public/terrain/19/858490/353902.terrain differ diff --git a/public/terrain/19/858490/353903.terrain b/public/terrain/19/858490/353903.terrain new file mode 100644 index 000000000..ffbdef415 Binary files /dev/null and b/public/terrain/19/858490/353903.terrain differ diff --git a/public/terrain/19/858490/353904.terrain b/public/terrain/19/858490/353904.terrain new file mode 100644 index 000000000..365536942 Binary files /dev/null and b/public/terrain/19/858490/353904.terrain differ diff --git a/public/terrain/19/858490/353905.terrain b/public/terrain/19/858490/353905.terrain new file mode 100644 index 000000000..e83ddb0e3 Binary files /dev/null and b/public/terrain/19/858490/353905.terrain differ diff --git a/public/terrain/19/858490/353906.terrain b/public/terrain/19/858490/353906.terrain new file mode 100644 index 000000000..a1b36225c Binary files /dev/null and b/public/terrain/19/858490/353906.terrain differ diff --git a/public/terrain/19/858490/353907.terrain b/public/terrain/19/858490/353907.terrain new file mode 100644 index 000000000..872b04d96 Binary files /dev/null and b/public/terrain/19/858490/353907.terrain differ diff --git a/public/terrain/19/858490/353908.terrain b/public/terrain/19/858490/353908.terrain new file mode 100644 index 000000000..0ffaf9ba3 Binary files /dev/null and b/public/terrain/19/858490/353908.terrain differ diff --git a/public/terrain/19/858490/353909.terrain b/public/terrain/19/858490/353909.terrain new file mode 100644 index 000000000..0c6765d70 Binary files /dev/null and b/public/terrain/19/858490/353909.terrain differ diff --git a/public/terrain/19/858490/353910.terrain b/public/terrain/19/858490/353910.terrain new file mode 100644 index 000000000..67bcbef32 Binary files /dev/null and b/public/terrain/19/858490/353910.terrain differ diff --git a/public/terrain/19/858490/353911.terrain b/public/terrain/19/858490/353911.terrain new file mode 100644 index 000000000..58083c0fe Binary files /dev/null and b/public/terrain/19/858490/353911.terrain differ diff --git a/public/terrain/19/858490/353912.terrain b/public/terrain/19/858490/353912.terrain new file mode 100644 index 000000000..c01d139e7 Binary files /dev/null and b/public/terrain/19/858490/353912.terrain differ diff --git a/public/terrain/19/858490/353913.terrain b/public/terrain/19/858490/353913.terrain new file mode 100644 index 000000000..d7b596a18 Binary files /dev/null and b/public/terrain/19/858490/353913.terrain differ diff --git a/public/terrain/19/858490/353914.terrain b/public/terrain/19/858490/353914.terrain new file mode 100644 index 000000000..afeb1c6ee Binary files /dev/null and b/public/terrain/19/858490/353914.terrain differ diff --git a/public/terrain/19/858490/353915.terrain b/public/terrain/19/858490/353915.terrain new file mode 100644 index 000000000..419950036 Binary files /dev/null and b/public/terrain/19/858490/353915.terrain differ diff --git a/public/terrain/19/858490/353916.terrain b/public/terrain/19/858490/353916.terrain new file mode 100644 index 000000000..71bafc983 Binary files /dev/null and b/public/terrain/19/858490/353916.terrain differ diff --git a/public/terrain/19/858490/353917.terrain b/public/terrain/19/858490/353917.terrain new file mode 100644 index 000000000..c20998792 Binary files /dev/null and b/public/terrain/19/858490/353917.terrain differ diff --git a/public/terrain/19/858490/353918.terrain b/public/terrain/19/858490/353918.terrain new file mode 100644 index 000000000..42f15346c Binary files /dev/null and b/public/terrain/19/858490/353918.terrain differ diff --git a/public/terrain/19/858490/353919.terrain b/public/terrain/19/858490/353919.terrain new file mode 100644 index 000000000..2e7f0f7ba Binary files /dev/null and b/public/terrain/19/858490/353919.terrain differ diff --git a/public/terrain/19/858490/353920.terrain b/public/terrain/19/858490/353920.terrain new file mode 100644 index 000000000..84f37f260 Binary files /dev/null and b/public/terrain/19/858490/353920.terrain differ diff --git a/public/terrain/19/858490/353921.terrain b/public/terrain/19/858490/353921.terrain new file mode 100644 index 000000000..baeab3d2b Binary files /dev/null and b/public/terrain/19/858490/353921.terrain differ diff --git a/public/terrain/19/858490/353922.terrain b/public/terrain/19/858490/353922.terrain new file mode 100644 index 000000000..f1687ebc8 Binary files /dev/null and b/public/terrain/19/858490/353922.terrain differ diff --git a/public/terrain/19/858490/353923.terrain b/public/terrain/19/858490/353923.terrain new file mode 100644 index 000000000..3e4eec935 Binary files /dev/null and b/public/terrain/19/858490/353923.terrain differ diff --git a/public/terrain/19/858490/353924.terrain b/public/terrain/19/858490/353924.terrain new file mode 100644 index 000000000..5a37e6e63 Binary files /dev/null and b/public/terrain/19/858490/353924.terrain differ diff --git a/public/terrain/19/858490/353925.terrain b/public/terrain/19/858490/353925.terrain new file mode 100644 index 000000000..acac8db0e Binary files /dev/null and b/public/terrain/19/858490/353925.terrain differ diff --git a/public/terrain/19/858490/353926.terrain b/public/terrain/19/858490/353926.terrain new file mode 100644 index 000000000..d23cfcd51 Binary files /dev/null and b/public/terrain/19/858490/353926.terrain differ diff --git a/public/terrain/19/858490/353927.terrain b/public/terrain/19/858490/353927.terrain new file mode 100644 index 000000000..cf0d9bf33 Binary files /dev/null and b/public/terrain/19/858490/353927.terrain differ diff --git a/public/terrain/19/858490/353928.terrain b/public/terrain/19/858490/353928.terrain new file mode 100644 index 000000000..f8bab4d17 Binary files /dev/null and b/public/terrain/19/858490/353928.terrain differ diff --git a/public/terrain/19/858490/353929.terrain b/public/terrain/19/858490/353929.terrain new file mode 100644 index 000000000..1a4bc1bc7 Binary files /dev/null and b/public/terrain/19/858490/353929.terrain differ diff --git a/public/terrain/19/858490/353930.terrain b/public/terrain/19/858490/353930.terrain new file mode 100644 index 000000000..28ddf5b58 Binary files /dev/null and b/public/terrain/19/858490/353930.terrain differ diff --git a/public/terrain/19/858490/353931.terrain b/public/terrain/19/858490/353931.terrain new file mode 100644 index 000000000..cd0078605 Binary files /dev/null and b/public/terrain/19/858490/353931.terrain differ diff --git a/public/terrain/19/858490/353932.terrain b/public/terrain/19/858490/353932.terrain new file mode 100644 index 000000000..328528e27 Binary files /dev/null and b/public/terrain/19/858490/353932.terrain differ diff --git a/public/terrain/19/858490/353933.terrain b/public/terrain/19/858490/353933.terrain new file mode 100644 index 000000000..aec77859c Binary files /dev/null and b/public/terrain/19/858490/353933.terrain differ diff --git a/public/terrain/19/858490/353934.terrain b/public/terrain/19/858490/353934.terrain new file mode 100644 index 000000000..cd53e8640 Binary files /dev/null and b/public/terrain/19/858490/353934.terrain differ diff --git a/public/terrain/19/858490/353935.terrain b/public/terrain/19/858490/353935.terrain new file mode 100644 index 000000000..bd65e63d8 Binary files /dev/null and b/public/terrain/19/858490/353935.terrain differ diff --git a/public/terrain/19/858490/353936.terrain b/public/terrain/19/858490/353936.terrain new file mode 100644 index 000000000..f7916d61a Binary files /dev/null and b/public/terrain/19/858490/353936.terrain differ diff --git a/public/terrain/19/858490/353937.terrain b/public/terrain/19/858490/353937.terrain new file mode 100644 index 000000000..0b526ec93 Binary files /dev/null and b/public/terrain/19/858490/353937.terrain differ diff --git a/public/terrain/19/858490/353938.terrain b/public/terrain/19/858490/353938.terrain new file mode 100644 index 000000000..1da93c702 Binary files /dev/null and b/public/terrain/19/858490/353938.terrain differ diff --git a/public/terrain/19/858490/353939.terrain b/public/terrain/19/858490/353939.terrain new file mode 100644 index 000000000..85cc94997 Binary files /dev/null and b/public/terrain/19/858490/353939.terrain differ diff --git a/public/terrain/19/858490/353940.terrain b/public/terrain/19/858490/353940.terrain new file mode 100644 index 000000000..15bfab7f6 Binary files /dev/null and b/public/terrain/19/858490/353940.terrain differ diff --git a/public/terrain/19/858490/353941.terrain b/public/terrain/19/858490/353941.terrain new file mode 100644 index 000000000..de8432608 Binary files /dev/null and b/public/terrain/19/858490/353941.terrain differ diff --git a/public/terrain/19/858490/353942.terrain b/public/terrain/19/858490/353942.terrain new file mode 100644 index 000000000..2598261a3 Binary files /dev/null and b/public/terrain/19/858490/353942.terrain differ diff --git a/public/terrain/19/858490/353943.terrain b/public/terrain/19/858490/353943.terrain new file mode 100644 index 000000000..1edda8def Binary files /dev/null and b/public/terrain/19/858490/353943.terrain differ diff --git a/public/terrain/19/858490/353944.terrain b/public/terrain/19/858490/353944.terrain new file mode 100644 index 000000000..40f346d96 Binary files /dev/null and b/public/terrain/19/858490/353944.terrain differ diff --git a/public/terrain/19/858490/353945.terrain b/public/terrain/19/858490/353945.terrain new file mode 100644 index 000000000..3dc801447 Binary files /dev/null and b/public/terrain/19/858490/353945.terrain differ diff --git a/public/terrain/19/858490/353946.terrain b/public/terrain/19/858490/353946.terrain new file mode 100644 index 000000000..e4cc2591a Binary files /dev/null and b/public/terrain/19/858490/353946.terrain differ diff --git a/public/terrain/19/858490/353947.terrain b/public/terrain/19/858490/353947.terrain new file mode 100644 index 000000000..1cc72fa7c Binary files /dev/null and b/public/terrain/19/858490/353947.terrain differ diff --git a/public/terrain/19/858490/353948.terrain b/public/terrain/19/858490/353948.terrain new file mode 100644 index 000000000..a50fdf381 Binary files /dev/null and b/public/terrain/19/858490/353948.terrain differ diff --git a/public/terrain/19/858490/353949.terrain b/public/terrain/19/858490/353949.terrain new file mode 100644 index 000000000..b83904dbe Binary files /dev/null and b/public/terrain/19/858490/353949.terrain differ diff --git a/public/terrain/19/858490/353950.terrain b/public/terrain/19/858490/353950.terrain new file mode 100644 index 000000000..96885c3c8 Binary files /dev/null and b/public/terrain/19/858490/353950.terrain differ diff --git a/public/terrain/19/858490/353951.terrain b/public/terrain/19/858490/353951.terrain new file mode 100644 index 000000000..a44dd6ce6 Binary files /dev/null and b/public/terrain/19/858490/353951.terrain differ diff --git a/public/terrain/19/858490/353952.terrain b/public/terrain/19/858490/353952.terrain new file mode 100644 index 000000000..e059d25d7 Binary files /dev/null and b/public/terrain/19/858490/353952.terrain differ diff --git a/public/terrain/19/858490/353953.terrain b/public/terrain/19/858490/353953.terrain new file mode 100644 index 000000000..1a0c367c9 Binary files /dev/null and b/public/terrain/19/858490/353953.terrain differ diff --git a/public/terrain/19/858490/353954.terrain b/public/terrain/19/858490/353954.terrain new file mode 100644 index 000000000..f1c34a87b Binary files /dev/null and b/public/terrain/19/858490/353954.terrain differ diff --git a/public/terrain/19/858490/353955.terrain b/public/terrain/19/858490/353955.terrain new file mode 100644 index 000000000..bfb895bcc Binary files /dev/null and b/public/terrain/19/858490/353955.terrain differ diff --git a/public/terrain/19/858490/353956.terrain b/public/terrain/19/858490/353956.terrain new file mode 100644 index 000000000..779f920ff Binary files /dev/null and b/public/terrain/19/858490/353956.terrain differ diff --git a/public/terrain/19/858490/353957.terrain b/public/terrain/19/858490/353957.terrain new file mode 100644 index 000000000..75b276bd9 Binary files /dev/null and b/public/terrain/19/858490/353957.terrain differ diff --git a/public/terrain/19/858490/353958.terrain b/public/terrain/19/858490/353958.terrain new file mode 100644 index 000000000..e505935c5 Binary files /dev/null and b/public/terrain/19/858490/353958.terrain differ diff --git a/public/terrain/19/858490/353959.terrain b/public/terrain/19/858490/353959.terrain new file mode 100644 index 000000000..876eaf562 Binary files /dev/null and b/public/terrain/19/858490/353959.terrain differ diff --git a/public/terrain/19/858490/353960.terrain b/public/terrain/19/858490/353960.terrain new file mode 100644 index 000000000..08afe9c09 Binary files /dev/null and b/public/terrain/19/858490/353960.terrain differ diff --git a/public/terrain/19/858490/353961.terrain b/public/terrain/19/858490/353961.terrain new file mode 100644 index 000000000..6ae70d6ed Binary files /dev/null and b/public/terrain/19/858490/353961.terrain differ diff --git a/public/terrain/19/858490/353962.terrain b/public/terrain/19/858490/353962.terrain new file mode 100644 index 000000000..cf90450d2 Binary files /dev/null and b/public/terrain/19/858490/353962.terrain differ diff --git a/public/terrain/19/858490/353963.terrain b/public/terrain/19/858490/353963.terrain new file mode 100644 index 000000000..193dfe6b9 Binary files /dev/null and b/public/terrain/19/858490/353963.terrain differ diff --git a/public/terrain/19/858490/353964.terrain b/public/terrain/19/858490/353964.terrain new file mode 100644 index 000000000..1908ffca8 Binary files /dev/null and b/public/terrain/19/858490/353964.terrain differ diff --git a/public/terrain/19/858490/353965.terrain b/public/terrain/19/858490/353965.terrain new file mode 100644 index 000000000..a46f4d667 Binary files /dev/null and b/public/terrain/19/858490/353965.terrain differ diff --git a/public/terrain/19/858490/353966.terrain b/public/terrain/19/858490/353966.terrain new file mode 100644 index 000000000..b26b06f21 Binary files /dev/null and b/public/terrain/19/858490/353966.terrain differ diff --git a/public/terrain/19/858490/353967.terrain b/public/terrain/19/858490/353967.terrain new file mode 100644 index 000000000..7fc4f7dba Binary files /dev/null and b/public/terrain/19/858490/353967.terrain differ diff --git a/public/terrain/19/858490/353968.terrain b/public/terrain/19/858490/353968.terrain new file mode 100644 index 000000000..3fbf63170 Binary files /dev/null and b/public/terrain/19/858490/353968.terrain differ diff --git a/public/terrain/19/858490/353969.terrain b/public/terrain/19/858490/353969.terrain new file mode 100644 index 000000000..7c5f40fee Binary files /dev/null and b/public/terrain/19/858490/353969.terrain differ diff --git a/public/terrain/19/858490/353970.terrain b/public/terrain/19/858490/353970.terrain new file mode 100644 index 000000000..27572de03 Binary files /dev/null and b/public/terrain/19/858490/353970.terrain differ diff --git a/public/terrain/19/858490/353971.terrain b/public/terrain/19/858490/353971.terrain new file mode 100644 index 000000000..c3d87cf30 Binary files /dev/null and b/public/terrain/19/858490/353971.terrain differ diff --git a/public/terrain/19/858490/353972.terrain b/public/terrain/19/858490/353972.terrain new file mode 100644 index 000000000..2a9747f69 Binary files /dev/null and b/public/terrain/19/858490/353972.terrain differ diff --git a/public/terrain/19/858490/353973.terrain b/public/terrain/19/858490/353973.terrain new file mode 100644 index 000000000..c9a0c36ee Binary files /dev/null and b/public/terrain/19/858490/353973.terrain differ diff --git a/public/terrain/19/858490/353974.terrain b/public/terrain/19/858490/353974.terrain new file mode 100644 index 000000000..05ebde7d4 Binary files /dev/null and b/public/terrain/19/858490/353974.terrain differ diff --git a/public/terrain/19/858490/353975.terrain b/public/terrain/19/858490/353975.terrain new file mode 100644 index 000000000..c50ca3ca9 Binary files /dev/null and b/public/terrain/19/858490/353975.terrain differ diff --git a/public/terrain/19/858490/353976.terrain b/public/terrain/19/858490/353976.terrain new file mode 100644 index 000000000..228f6a077 Binary files /dev/null and b/public/terrain/19/858490/353976.terrain differ diff --git a/public/terrain/19/858490/353977.terrain b/public/terrain/19/858490/353977.terrain new file mode 100644 index 000000000..88f8e8689 Binary files /dev/null and b/public/terrain/19/858490/353977.terrain differ diff --git a/public/terrain/19/858490/353978.terrain b/public/terrain/19/858490/353978.terrain new file mode 100644 index 000000000..181e3f8d8 Binary files /dev/null and b/public/terrain/19/858490/353978.terrain differ diff --git a/public/terrain/19/858490/353979.terrain b/public/terrain/19/858490/353979.terrain new file mode 100644 index 000000000..0fa87017a Binary files /dev/null and b/public/terrain/19/858490/353979.terrain differ diff --git a/public/terrain/19/858490/353980.terrain b/public/terrain/19/858490/353980.terrain new file mode 100644 index 000000000..35efa4919 Binary files /dev/null and b/public/terrain/19/858490/353980.terrain differ diff --git a/public/terrain/19/858490/353981.terrain b/public/terrain/19/858490/353981.terrain new file mode 100644 index 000000000..a6ab73dad Binary files /dev/null and b/public/terrain/19/858490/353981.terrain differ diff --git a/public/terrain/19/858490/353982.terrain b/public/terrain/19/858490/353982.terrain new file mode 100644 index 000000000..33e1b3c4a Binary files /dev/null and b/public/terrain/19/858490/353982.terrain differ diff --git a/public/terrain/19/858490/353983.terrain b/public/terrain/19/858490/353983.terrain new file mode 100644 index 000000000..c8e4e14c9 Binary files /dev/null and b/public/terrain/19/858490/353983.terrain differ diff --git a/public/terrain/19/858490/353984.terrain b/public/terrain/19/858490/353984.terrain new file mode 100644 index 000000000..124896414 Binary files /dev/null and b/public/terrain/19/858490/353984.terrain differ diff --git a/public/terrain/19/858490/353985.terrain b/public/terrain/19/858490/353985.terrain new file mode 100644 index 000000000..d30760b7a Binary files /dev/null and b/public/terrain/19/858490/353985.terrain differ diff --git a/public/terrain/19/858490/353986.terrain b/public/terrain/19/858490/353986.terrain new file mode 100644 index 000000000..7ecd8c748 Binary files /dev/null and b/public/terrain/19/858490/353986.terrain differ diff --git a/public/terrain/19/858490/353987.terrain b/public/terrain/19/858490/353987.terrain new file mode 100644 index 000000000..15793208f Binary files /dev/null and b/public/terrain/19/858490/353987.terrain differ diff --git a/public/terrain/19/858490/353988.terrain b/public/terrain/19/858490/353988.terrain new file mode 100644 index 000000000..23709508d Binary files /dev/null and b/public/terrain/19/858490/353988.terrain differ diff --git a/public/terrain/19/858490/353989.terrain b/public/terrain/19/858490/353989.terrain new file mode 100644 index 000000000..4da2513b8 Binary files /dev/null and b/public/terrain/19/858490/353989.terrain differ diff --git a/public/terrain/19/858490/353990.terrain b/public/terrain/19/858490/353990.terrain new file mode 100644 index 000000000..c30c59ce9 Binary files /dev/null and b/public/terrain/19/858490/353990.terrain differ diff --git a/public/terrain/19/858490/353991.terrain b/public/terrain/19/858490/353991.terrain new file mode 100644 index 000000000..7779f28cc Binary files /dev/null and b/public/terrain/19/858490/353991.terrain differ diff --git a/public/terrain/19/858490/353992.terrain b/public/terrain/19/858490/353992.terrain new file mode 100644 index 000000000..68ee07b53 Binary files /dev/null and b/public/terrain/19/858490/353992.terrain differ diff --git a/public/terrain/19/858490/353993.terrain b/public/terrain/19/858490/353993.terrain new file mode 100644 index 000000000..6124fe8d1 Binary files /dev/null and b/public/terrain/19/858490/353993.terrain differ diff --git a/public/terrain/19/858490/353994.terrain b/public/terrain/19/858490/353994.terrain new file mode 100644 index 000000000..f968da221 Binary files /dev/null and b/public/terrain/19/858490/353994.terrain differ diff --git a/public/terrain/19/858490/353995.terrain b/public/terrain/19/858490/353995.terrain new file mode 100644 index 000000000..5ffcc4b11 Binary files /dev/null and b/public/terrain/19/858490/353995.terrain differ diff --git a/public/terrain/19/858490/353996.terrain b/public/terrain/19/858490/353996.terrain new file mode 100644 index 000000000..c3919aa3f Binary files /dev/null and b/public/terrain/19/858490/353996.terrain differ diff --git a/public/terrain/19/858490/353997.terrain b/public/terrain/19/858490/353997.terrain new file mode 100644 index 000000000..ca5963372 Binary files /dev/null and b/public/terrain/19/858490/353997.terrain differ diff --git a/public/terrain/19/858490/353998.terrain b/public/terrain/19/858490/353998.terrain new file mode 100644 index 000000000..4b8bdc35d Binary files /dev/null and b/public/terrain/19/858490/353998.terrain differ diff --git a/public/terrain/19/858490/353999.terrain b/public/terrain/19/858490/353999.terrain new file mode 100644 index 000000000..3a9f923bd Binary files /dev/null and b/public/terrain/19/858490/353999.terrain differ diff --git a/public/terrain/19/858490/354000.terrain b/public/terrain/19/858490/354000.terrain new file mode 100644 index 000000000..869c88955 Binary files /dev/null and b/public/terrain/19/858490/354000.terrain differ diff --git a/public/terrain/19/858490/354001.terrain b/public/terrain/19/858490/354001.terrain new file mode 100644 index 000000000..ec755879e Binary files /dev/null and b/public/terrain/19/858490/354001.terrain differ diff --git a/public/terrain/19/858490/354002.terrain b/public/terrain/19/858490/354002.terrain new file mode 100644 index 000000000..de429aa4b Binary files /dev/null and b/public/terrain/19/858490/354002.terrain differ diff --git a/public/terrain/19/858490/354003.terrain b/public/terrain/19/858490/354003.terrain new file mode 100644 index 000000000..d14fd663b Binary files /dev/null and b/public/terrain/19/858490/354003.terrain differ diff --git a/public/terrain/19/858490/354004.terrain b/public/terrain/19/858490/354004.terrain new file mode 100644 index 000000000..99c897b79 Binary files /dev/null and b/public/terrain/19/858490/354004.terrain differ diff --git a/public/terrain/19/858490/354005.terrain b/public/terrain/19/858490/354005.terrain new file mode 100644 index 000000000..c459f0ff0 Binary files /dev/null and b/public/terrain/19/858490/354005.terrain differ diff --git a/public/terrain/19/858490/354006.terrain b/public/terrain/19/858490/354006.terrain new file mode 100644 index 000000000..78c79e5d1 Binary files /dev/null and b/public/terrain/19/858490/354006.terrain differ diff --git a/public/terrain/19/858490/354007.terrain b/public/terrain/19/858490/354007.terrain new file mode 100644 index 000000000..7b7e76c73 Binary files /dev/null and b/public/terrain/19/858490/354007.terrain differ diff --git a/public/terrain/19/858490/354008.terrain b/public/terrain/19/858490/354008.terrain new file mode 100644 index 000000000..f4680c204 Binary files /dev/null and b/public/terrain/19/858490/354008.terrain differ diff --git a/public/terrain/19/858490/354009.terrain b/public/terrain/19/858490/354009.terrain new file mode 100644 index 000000000..6f9bbdce8 Binary files /dev/null and b/public/terrain/19/858490/354009.terrain differ diff --git a/public/terrain/19/858490/354010.terrain b/public/terrain/19/858490/354010.terrain new file mode 100644 index 000000000..2e3e2fc08 Binary files /dev/null and b/public/terrain/19/858490/354010.terrain differ diff --git a/public/terrain/19/858490/354011.terrain b/public/terrain/19/858490/354011.terrain new file mode 100644 index 000000000..594616524 Binary files /dev/null and b/public/terrain/19/858490/354011.terrain differ diff --git a/public/terrain/19/858490/354012.terrain b/public/terrain/19/858490/354012.terrain new file mode 100644 index 000000000..33f445139 Binary files /dev/null and b/public/terrain/19/858490/354012.terrain differ diff --git a/public/terrain/19/858490/354013.terrain b/public/terrain/19/858490/354013.terrain new file mode 100644 index 000000000..634cfc31d Binary files /dev/null and b/public/terrain/19/858490/354013.terrain differ diff --git a/public/terrain/19/858490/354014.terrain b/public/terrain/19/858490/354014.terrain new file mode 100644 index 000000000..70db18798 Binary files /dev/null and b/public/terrain/19/858490/354014.terrain differ diff --git a/public/terrain/19/858490/354015.terrain b/public/terrain/19/858490/354015.terrain new file mode 100644 index 000000000..c8bb32ab2 Binary files /dev/null and b/public/terrain/19/858490/354015.terrain differ diff --git a/public/terrain/19/858490/354016.terrain b/public/terrain/19/858490/354016.terrain new file mode 100644 index 000000000..102c5ea64 Binary files /dev/null and b/public/terrain/19/858490/354016.terrain differ diff --git a/public/terrain/19/858490/354017.terrain b/public/terrain/19/858490/354017.terrain new file mode 100644 index 000000000..f8df74c4a Binary files /dev/null and b/public/terrain/19/858490/354017.terrain differ diff --git a/public/terrain/19/858490/354018.terrain b/public/terrain/19/858490/354018.terrain new file mode 100644 index 000000000..9451c89d2 Binary files /dev/null and b/public/terrain/19/858490/354018.terrain differ diff --git a/public/terrain/19/858490/354019.terrain b/public/terrain/19/858490/354019.terrain new file mode 100644 index 000000000..1429086d6 Binary files /dev/null and b/public/terrain/19/858490/354019.terrain differ diff --git a/public/terrain/19/858490/354020.terrain b/public/terrain/19/858490/354020.terrain new file mode 100644 index 000000000..022de7f92 Binary files /dev/null and b/public/terrain/19/858490/354020.terrain differ diff --git a/public/terrain/19/858490/354021.terrain b/public/terrain/19/858490/354021.terrain new file mode 100644 index 000000000..e80807df0 Binary files /dev/null and b/public/terrain/19/858490/354021.terrain differ diff --git a/public/terrain/19/858490/354022.terrain b/public/terrain/19/858490/354022.terrain new file mode 100644 index 000000000..aae53b36e Binary files /dev/null and b/public/terrain/19/858490/354022.terrain differ diff --git a/public/terrain/19/858490/354023.terrain b/public/terrain/19/858490/354023.terrain new file mode 100644 index 000000000..9abdcf3c7 Binary files /dev/null and b/public/terrain/19/858490/354023.terrain differ diff --git a/public/terrain/19/858490/354024.terrain b/public/terrain/19/858490/354024.terrain new file mode 100644 index 000000000..af2f20658 Binary files /dev/null and b/public/terrain/19/858490/354024.terrain differ diff --git a/public/terrain/19/858490/354025.terrain b/public/terrain/19/858490/354025.terrain new file mode 100644 index 000000000..b10e0d5c5 Binary files /dev/null and b/public/terrain/19/858490/354025.terrain differ diff --git a/public/terrain/19/858490/354026.terrain b/public/terrain/19/858490/354026.terrain new file mode 100644 index 000000000..d0b58ab76 Binary files /dev/null and b/public/terrain/19/858490/354026.terrain differ diff --git a/public/terrain/19/858490/354027.terrain b/public/terrain/19/858490/354027.terrain new file mode 100644 index 000000000..55dc41ac7 Binary files /dev/null and b/public/terrain/19/858490/354027.terrain differ diff --git a/public/terrain/19/858490/354028.terrain b/public/terrain/19/858490/354028.terrain new file mode 100644 index 000000000..7612d3bb7 Binary files /dev/null and b/public/terrain/19/858490/354028.terrain differ diff --git a/public/terrain/19/858490/354029.terrain b/public/terrain/19/858490/354029.terrain new file mode 100644 index 000000000..292223bb4 Binary files /dev/null and b/public/terrain/19/858490/354029.terrain differ diff --git a/public/terrain/19/858490/354030.terrain b/public/terrain/19/858490/354030.terrain new file mode 100644 index 000000000..70c055992 Binary files /dev/null and b/public/terrain/19/858490/354030.terrain differ diff --git a/public/terrain/19/858490/354031.terrain b/public/terrain/19/858490/354031.terrain new file mode 100644 index 000000000..1fda40b94 Binary files /dev/null and b/public/terrain/19/858490/354031.terrain differ diff --git a/public/terrain/19/858490/354032.terrain b/public/terrain/19/858490/354032.terrain new file mode 100644 index 000000000..609756d18 Binary files /dev/null and b/public/terrain/19/858490/354032.terrain differ diff --git a/public/terrain/19/858490/354033.terrain b/public/terrain/19/858490/354033.terrain new file mode 100644 index 000000000..199ffca0a Binary files /dev/null and b/public/terrain/19/858490/354033.terrain differ diff --git a/public/terrain/19/858490/354034.terrain b/public/terrain/19/858490/354034.terrain new file mode 100644 index 000000000..f6e6c26dd Binary files /dev/null and b/public/terrain/19/858490/354034.terrain differ diff --git a/public/terrain/19/858490/354035.terrain b/public/terrain/19/858490/354035.terrain new file mode 100644 index 000000000..60151b566 Binary files /dev/null and b/public/terrain/19/858490/354035.terrain differ diff --git a/public/terrain/19/858490/354036.terrain b/public/terrain/19/858490/354036.terrain new file mode 100644 index 000000000..af78de04e Binary files /dev/null and b/public/terrain/19/858490/354036.terrain differ diff --git a/public/terrain/19/858490/354037.terrain b/public/terrain/19/858490/354037.terrain new file mode 100644 index 000000000..7e4085e5a Binary files /dev/null and b/public/terrain/19/858490/354037.terrain differ diff --git a/public/terrain/19/858490/354038.terrain b/public/terrain/19/858490/354038.terrain new file mode 100644 index 000000000..0930e434d Binary files /dev/null and b/public/terrain/19/858490/354038.terrain differ diff --git a/public/terrain/19/858490/354039.terrain b/public/terrain/19/858490/354039.terrain new file mode 100644 index 000000000..39a6ea288 Binary files /dev/null and b/public/terrain/19/858490/354039.terrain differ diff --git a/public/terrain/19/858490/354040.terrain b/public/terrain/19/858490/354040.terrain new file mode 100644 index 000000000..a5fba4c68 Binary files /dev/null and b/public/terrain/19/858490/354040.terrain differ diff --git a/public/terrain/19/858490/354041.terrain b/public/terrain/19/858490/354041.terrain new file mode 100644 index 000000000..2480be04f Binary files /dev/null and b/public/terrain/19/858490/354041.terrain differ diff --git a/public/terrain/19/858490/354042.terrain b/public/terrain/19/858490/354042.terrain new file mode 100644 index 000000000..5b9e909a8 Binary files /dev/null and b/public/terrain/19/858490/354042.terrain differ diff --git a/public/terrain/19/858490/354043.terrain b/public/terrain/19/858490/354043.terrain new file mode 100644 index 000000000..bbef3ecd3 Binary files /dev/null and b/public/terrain/19/858490/354043.terrain differ diff --git a/public/terrain/19/858490/354044.terrain b/public/terrain/19/858490/354044.terrain new file mode 100644 index 000000000..02cc324d4 Binary files /dev/null and b/public/terrain/19/858490/354044.terrain differ diff --git a/public/terrain/19/858490/354045.terrain b/public/terrain/19/858490/354045.terrain new file mode 100644 index 000000000..9babffab1 Binary files /dev/null and b/public/terrain/19/858490/354045.terrain differ diff --git a/public/terrain/19/858490/354046.terrain b/public/terrain/19/858490/354046.terrain new file mode 100644 index 000000000..2206d5422 Binary files /dev/null and b/public/terrain/19/858490/354046.terrain differ diff --git a/public/terrain/19/858490/354047.terrain b/public/terrain/19/858490/354047.terrain new file mode 100644 index 000000000..1a264c357 Binary files /dev/null and b/public/terrain/19/858490/354047.terrain differ diff --git a/public/terrain/19/858490/354048.terrain b/public/terrain/19/858490/354048.terrain new file mode 100644 index 000000000..08e204199 Binary files /dev/null and b/public/terrain/19/858490/354048.terrain differ diff --git a/public/terrain/19/858490/354049.terrain b/public/terrain/19/858490/354049.terrain new file mode 100644 index 000000000..8e9c47cc0 Binary files /dev/null and b/public/terrain/19/858490/354049.terrain differ diff --git a/public/terrain/19/858490/354050.terrain b/public/terrain/19/858490/354050.terrain new file mode 100644 index 000000000..45411074e Binary files /dev/null and b/public/terrain/19/858490/354050.terrain differ diff --git a/public/terrain/19/858490/354051.terrain b/public/terrain/19/858490/354051.terrain new file mode 100644 index 000000000..5df777261 Binary files /dev/null and b/public/terrain/19/858490/354051.terrain differ diff --git a/public/terrain/19/858490/354052.terrain b/public/terrain/19/858490/354052.terrain new file mode 100644 index 000000000..216176b64 Binary files /dev/null and b/public/terrain/19/858490/354052.terrain differ diff --git a/public/terrain/19/858490/354053.terrain b/public/terrain/19/858490/354053.terrain new file mode 100644 index 000000000..01af29272 Binary files /dev/null and b/public/terrain/19/858490/354053.terrain differ diff --git a/public/terrain/19/858490/354054.terrain b/public/terrain/19/858490/354054.terrain new file mode 100644 index 000000000..357fdf5d3 Binary files /dev/null and b/public/terrain/19/858490/354054.terrain differ diff --git a/public/terrain/19/858490/354055.terrain b/public/terrain/19/858490/354055.terrain new file mode 100644 index 000000000..ee7ebd626 Binary files /dev/null and b/public/terrain/19/858490/354055.terrain differ diff --git a/public/terrain/19/858490/354056.terrain b/public/terrain/19/858490/354056.terrain new file mode 100644 index 000000000..fc7fee723 Binary files /dev/null and b/public/terrain/19/858490/354056.terrain differ diff --git a/public/terrain/19/858490/354057.terrain b/public/terrain/19/858490/354057.terrain new file mode 100644 index 000000000..e3558c820 Binary files /dev/null and b/public/terrain/19/858490/354057.terrain differ diff --git a/public/terrain/19/858490/354058.terrain b/public/terrain/19/858490/354058.terrain new file mode 100644 index 000000000..8df5ad0f7 Binary files /dev/null and b/public/terrain/19/858490/354058.terrain differ diff --git a/public/terrain/19/858490/354059.terrain b/public/terrain/19/858490/354059.terrain new file mode 100644 index 000000000..649060260 Binary files /dev/null and b/public/terrain/19/858490/354059.terrain differ diff --git a/public/terrain/19/858491/353743.terrain b/public/terrain/19/858491/353743.terrain new file mode 100644 index 000000000..1e9714f37 Binary files /dev/null and b/public/terrain/19/858491/353743.terrain differ diff --git a/public/terrain/19/858491/353744.terrain b/public/terrain/19/858491/353744.terrain new file mode 100644 index 000000000..8c9420bd3 Binary files /dev/null and b/public/terrain/19/858491/353744.terrain differ diff --git a/public/terrain/19/858491/353745.terrain b/public/terrain/19/858491/353745.terrain new file mode 100644 index 000000000..1a0f8c904 Binary files /dev/null and b/public/terrain/19/858491/353745.terrain differ diff --git a/public/terrain/19/858491/353746.terrain b/public/terrain/19/858491/353746.terrain new file mode 100644 index 000000000..003012226 Binary files /dev/null and b/public/terrain/19/858491/353746.terrain differ diff --git a/public/terrain/19/858491/353747.terrain b/public/terrain/19/858491/353747.terrain new file mode 100644 index 000000000..2b2d8d7ee Binary files /dev/null and b/public/terrain/19/858491/353747.terrain differ diff --git a/public/terrain/19/858491/353748.terrain b/public/terrain/19/858491/353748.terrain new file mode 100644 index 000000000..d7d7fbc45 Binary files /dev/null and b/public/terrain/19/858491/353748.terrain differ diff --git a/public/terrain/19/858491/353749.terrain b/public/terrain/19/858491/353749.terrain new file mode 100644 index 000000000..cc52abb6e Binary files /dev/null and b/public/terrain/19/858491/353749.terrain differ diff --git a/public/terrain/19/858491/353750.terrain b/public/terrain/19/858491/353750.terrain new file mode 100644 index 000000000..9ebf062f1 Binary files /dev/null and b/public/terrain/19/858491/353750.terrain differ diff --git a/public/terrain/19/858491/353751.terrain b/public/terrain/19/858491/353751.terrain new file mode 100644 index 000000000..53616372f Binary files /dev/null and b/public/terrain/19/858491/353751.terrain differ diff --git a/public/terrain/19/858491/353752.terrain b/public/terrain/19/858491/353752.terrain new file mode 100644 index 000000000..33f09b624 Binary files /dev/null and b/public/terrain/19/858491/353752.terrain differ diff --git a/public/terrain/19/858491/353753.terrain b/public/terrain/19/858491/353753.terrain new file mode 100644 index 000000000..622c74dc0 Binary files /dev/null and b/public/terrain/19/858491/353753.terrain differ diff --git a/public/terrain/19/858491/353754.terrain b/public/terrain/19/858491/353754.terrain new file mode 100644 index 000000000..6252ef097 Binary files /dev/null and b/public/terrain/19/858491/353754.terrain differ diff --git a/public/terrain/19/858491/353755.terrain b/public/terrain/19/858491/353755.terrain new file mode 100644 index 000000000..f6a001e80 Binary files /dev/null and b/public/terrain/19/858491/353755.terrain differ diff --git a/public/terrain/19/858491/353756.terrain b/public/terrain/19/858491/353756.terrain new file mode 100644 index 000000000..c164b34de Binary files /dev/null and b/public/terrain/19/858491/353756.terrain differ diff --git a/public/terrain/19/858491/353757.terrain b/public/terrain/19/858491/353757.terrain new file mode 100644 index 000000000..af61f7d06 Binary files /dev/null and b/public/terrain/19/858491/353757.terrain differ diff --git a/public/terrain/19/858491/353758.terrain b/public/terrain/19/858491/353758.terrain new file mode 100644 index 000000000..fbc10a805 Binary files /dev/null and b/public/terrain/19/858491/353758.terrain differ diff --git a/public/terrain/19/858491/353759.terrain b/public/terrain/19/858491/353759.terrain new file mode 100644 index 000000000..8dc8d1aa9 Binary files /dev/null and b/public/terrain/19/858491/353759.terrain differ diff --git a/public/terrain/19/858491/353760.terrain b/public/terrain/19/858491/353760.terrain new file mode 100644 index 000000000..2debe47a9 Binary files /dev/null and b/public/terrain/19/858491/353760.terrain differ diff --git a/public/terrain/19/858491/353761.terrain b/public/terrain/19/858491/353761.terrain new file mode 100644 index 000000000..ef19364a2 Binary files /dev/null and b/public/terrain/19/858491/353761.terrain differ diff --git a/public/terrain/19/858491/353762.terrain b/public/terrain/19/858491/353762.terrain new file mode 100644 index 000000000..5e754d941 Binary files /dev/null and b/public/terrain/19/858491/353762.terrain differ diff --git a/public/terrain/19/858491/353763.terrain b/public/terrain/19/858491/353763.terrain new file mode 100644 index 000000000..2e2832019 Binary files /dev/null and b/public/terrain/19/858491/353763.terrain differ diff --git a/public/terrain/19/858491/353764.terrain b/public/terrain/19/858491/353764.terrain new file mode 100644 index 000000000..6bd388c04 Binary files /dev/null and b/public/terrain/19/858491/353764.terrain differ diff --git a/public/terrain/19/858491/353765.terrain b/public/terrain/19/858491/353765.terrain new file mode 100644 index 000000000..2c01a9b5d Binary files /dev/null and b/public/terrain/19/858491/353765.terrain differ diff --git a/public/terrain/19/858491/353766.terrain b/public/terrain/19/858491/353766.terrain new file mode 100644 index 000000000..542d55d9e Binary files /dev/null and b/public/terrain/19/858491/353766.terrain differ diff --git a/public/terrain/19/858491/353767.terrain b/public/terrain/19/858491/353767.terrain new file mode 100644 index 000000000..5f6fb0a18 Binary files /dev/null and b/public/terrain/19/858491/353767.terrain differ diff --git a/public/terrain/19/858491/353768.terrain b/public/terrain/19/858491/353768.terrain new file mode 100644 index 000000000..216c6856d Binary files /dev/null and b/public/terrain/19/858491/353768.terrain differ diff --git a/public/terrain/19/858491/353769.terrain b/public/terrain/19/858491/353769.terrain new file mode 100644 index 000000000..6924a61a8 Binary files /dev/null and b/public/terrain/19/858491/353769.terrain differ diff --git a/public/terrain/19/858491/353770.terrain b/public/terrain/19/858491/353770.terrain new file mode 100644 index 000000000..1bfc38612 Binary files /dev/null and b/public/terrain/19/858491/353770.terrain differ diff --git a/public/terrain/19/858491/353771.terrain b/public/terrain/19/858491/353771.terrain new file mode 100644 index 000000000..2bd0d5bb5 Binary files /dev/null and b/public/terrain/19/858491/353771.terrain differ diff --git a/public/terrain/19/858491/353772.terrain b/public/terrain/19/858491/353772.terrain new file mode 100644 index 000000000..aff09b3e2 Binary files /dev/null and b/public/terrain/19/858491/353772.terrain differ diff --git a/public/terrain/19/858491/353773.terrain b/public/terrain/19/858491/353773.terrain new file mode 100644 index 000000000..440b1c44c Binary files /dev/null and b/public/terrain/19/858491/353773.terrain differ diff --git a/public/terrain/19/858491/353774.terrain b/public/terrain/19/858491/353774.terrain new file mode 100644 index 000000000..52e1a40d0 Binary files /dev/null and b/public/terrain/19/858491/353774.terrain differ diff --git a/public/terrain/19/858491/353775.terrain b/public/terrain/19/858491/353775.terrain new file mode 100644 index 000000000..14d6806f9 Binary files /dev/null and b/public/terrain/19/858491/353775.terrain differ diff --git a/public/terrain/19/858491/353776.terrain b/public/terrain/19/858491/353776.terrain new file mode 100644 index 000000000..8f7090385 Binary files /dev/null and b/public/terrain/19/858491/353776.terrain differ diff --git a/public/terrain/19/858491/353777.terrain b/public/terrain/19/858491/353777.terrain new file mode 100644 index 000000000..ce6669b18 Binary files /dev/null and b/public/terrain/19/858491/353777.terrain differ diff --git a/public/terrain/19/858491/353778.terrain b/public/terrain/19/858491/353778.terrain new file mode 100644 index 000000000..fcf2710df Binary files /dev/null and b/public/terrain/19/858491/353778.terrain differ diff --git a/public/terrain/19/858491/353779.terrain b/public/terrain/19/858491/353779.terrain new file mode 100644 index 000000000..4f875542d Binary files /dev/null and b/public/terrain/19/858491/353779.terrain differ diff --git a/public/terrain/19/858491/353780.terrain b/public/terrain/19/858491/353780.terrain new file mode 100644 index 000000000..596525980 Binary files /dev/null and b/public/terrain/19/858491/353780.terrain differ diff --git a/public/terrain/19/858491/353781.terrain b/public/terrain/19/858491/353781.terrain new file mode 100644 index 000000000..7e3c2bd4b Binary files /dev/null and b/public/terrain/19/858491/353781.terrain differ diff --git a/public/terrain/19/858491/353782.terrain b/public/terrain/19/858491/353782.terrain new file mode 100644 index 000000000..2cf77b92e Binary files /dev/null and b/public/terrain/19/858491/353782.terrain differ diff --git a/public/terrain/19/858491/353783.terrain b/public/terrain/19/858491/353783.terrain new file mode 100644 index 000000000..5f3681d63 Binary files /dev/null and b/public/terrain/19/858491/353783.terrain differ diff --git a/public/terrain/19/858491/353784.terrain b/public/terrain/19/858491/353784.terrain new file mode 100644 index 000000000..6fdc8053f Binary files /dev/null and b/public/terrain/19/858491/353784.terrain differ diff --git a/public/terrain/19/858491/353785.terrain b/public/terrain/19/858491/353785.terrain new file mode 100644 index 000000000..e1afa34d8 Binary files /dev/null and b/public/terrain/19/858491/353785.terrain differ diff --git a/public/terrain/19/858491/353786.terrain b/public/terrain/19/858491/353786.terrain new file mode 100644 index 000000000..849d5a6da Binary files /dev/null and b/public/terrain/19/858491/353786.terrain differ diff --git a/public/terrain/19/858491/353787.terrain b/public/terrain/19/858491/353787.terrain new file mode 100644 index 000000000..332d626e9 Binary files /dev/null and b/public/terrain/19/858491/353787.terrain differ diff --git a/public/terrain/19/858491/353788.terrain b/public/terrain/19/858491/353788.terrain new file mode 100644 index 000000000..efa2960b3 Binary files /dev/null and b/public/terrain/19/858491/353788.terrain differ diff --git a/public/terrain/19/858491/353789.terrain b/public/terrain/19/858491/353789.terrain new file mode 100644 index 000000000..d909657bd Binary files /dev/null and b/public/terrain/19/858491/353789.terrain differ diff --git a/public/terrain/19/858491/353790.terrain b/public/terrain/19/858491/353790.terrain new file mode 100644 index 000000000..4be0a60cd Binary files /dev/null and b/public/terrain/19/858491/353790.terrain differ diff --git a/public/terrain/19/858491/353791.terrain b/public/terrain/19/858491/353791.terrain new file mode 100644 index 000000000..823d267de Binary files /dev/null and b/public/terrain/19/858491/353791.terrain differ diff --git a/public/terrain/19/858491/353792.terrain b/public/terrain/19/858491/353792.terrain new file mode 100644 index 000000000..d8a5e7b7e Binary files /dev/null and b/public/terrain/19/858491/353792.terrain differ diff --git a/public/terrain/19/858491/353793.terrain b/public/terrain/19/858491/353793.terrain new file mode 100644 index 000000000..b02a04d4b Binary files /dev/null and b/public/terrain/19/858491/353793.terrain differ diff --git a/public/terrain/19/858491/353794.terrain b/public/terrain/19/858491/353794.terrain new file mode 100644 index 000000000..85479765a Binary files /dev/null and b/public/terrain/19/858491/353794.terrain differ diff --git a/public/terrain/19/858491/353795.terrain b/public/terrain/19/858491/353795.terrain new file mode 100644 index 000000000..9af433fd5 Binary files /dev/null and b/public/terrain/19/858491/353795.terrain differ diff --git a/public/terrain/19/858491/353796.terrain b/public/terrain/19/858491/353796.terrain new file mode 100644 index 000000000..049c029fd Binary files /dev/null and b/public/terrain/19/858491/353796.terrain differ diff --git a/public/terrain/19/858491/353797.terrain b/public/terrain/19/858491/353797.terrain new file mode 100644 index 000000000..0727e100c Binary files /dev/null and b/public/terrain/19/858491/353797.terrain differ diff --git a/public/terrain/19/858491/353798.terrain b/public/terrain/19/858491/353798.terrain new file mode 100644 index 000000000..852c038d8 Binary files /dev/null and b/public/terrain/19/858491/353798.terrain differ diff --git a/public/terrain/19/858491/353799.terrain b/public/terrain/19/858491/353799.terrain new file mode 100644 index 000000000..ea633f32c Binary files /dev/null and b/public/terrain/19/858491/353799.terrain differ diff --git a/public/terrain/19/858491/353800.terrain b/public/terrain/19/858491/353800.terrain new file mode 100644 index 000000000..da498223a Binary files /dev/null and b/public/terrain/19/858491/353800.terrain differ diff --git a/public/terrain/19/858491/353801.terrain b/public/terrain/19/858491/353801.terrain new file mode 100644 index 000000000..f8a1abdd5 Binary files /dev/null and b/public/terrain/19/858491/353801.terrain differ diff --git a/public/terrain/19/858491/353802.terrain b/public/terrain/19/858491/353802.terrain new file mode 100644 index 000000000..9a80eb65f Binary files /dev/null and b/public/terrain/19/858491/353802.terrain differ diff --git a/public/terrain/19/858491/353803.terrain b/public/terrain/19/858491/353803.terrain new file mode 100644 index 000000000..d00f97269 Binary files /dev/null and b/public/terrain/19/858491/353803.terrain differ diff --git a/public/terrain/19/858491/353804.terrain b/public/terrain/19/858491/353804.terrain new file mode 100644 index 000000000..7b271fbe4 Binary files /dev/null and b/public/terrain/19/858491/353804.terrain differ diff --git a/public/terrain/19/858491/353805.terrain b/public/terrain/19/858491/353805.terrain new file mode 100644 index 000000000..e5286f526 Binary files /dev/null and b/public/terrain/19/858491/353805.terrain differ diff --git a/public/terrain/19/858491/353806.terrain b/public/terrain/19/858491/353806.terrain new file mode 100644 index 000000000..19ee9e8e5 Binary files /dev/null and b/public/terrain/19/858491/353806.terrain differ diff --git a/public/terrain/19/858491/353807.terrain b/public/terrain/19/858491/353807.terrain new file mode 100644 index 000000000..a6840fece Binary files /dev/null and b/public/terrain/19/858491/353807.terrain differ diff --git a/public/terrain/19/858491/353808.terrain b/public/terrain/19/858491/353808.terrain new file mode 100644 index 000000000..a674d6b0f Binary files /dev/null and b/public/terrain/19/858491/353808.terrain differ diff --git a/public/terrain/19/858491/353809.terrain b/public/terrain/19/858491/353809.terrain new file mode 100644 index 000000000..9bbc14253 Binary files /dev/null and b/public/terrain/19/858491/353809.terrain differ diff --git a/public/terrain/19/858491/353810.terrain b/public/terrain/19/858491/353810.terrain new file mode 100644 index 000000000..1fc55fdc2 Binary files /dev/null and b/public/terrain/19/858491/353810.terrain differ diff --git a/public/terrain/19/858491/353811.terrain b/public/terrain/19/858491/353811.terrain new file mode 100644 index 000000000..20eeb39b6 Binary files /dev/null and b/public/terrain/19/858491/353811.terrain differ diff --git a/public/terrain/19/858491/353812.terrain b/public/terrain/19/858491/353812.terrain new file mode 100644 index 000000000..cf7571a44 Binary files /dev/null and b/public/terrain/19/858491/353812.terrain differ diff --git a/public/terrain/19/858491/353813.terrain b/public/terrain/19/858491/353813.terrain new file mode 100644 index 000000000..7192aafd4 Binary files /dev/null and b/public/terrain/19/858491/353813.terrain differ diff --git a/public/terrain/19/858491/353814.terrain b/public/terrain/19/858491/353814.terrain new file mode 100644 index 000000000..044d2c3df Binary files /dev/null and b/public/terrain/19/858491/353814.terrain differ diff --git a/public/terrain/19/858491/353815.terrain b/public/terrain/19/858491/353815.terrain new file mode 100644 index 000000000..6db5cf18f Binary files /dev/null and b/public/terrain/19/858491/353815.terrain differ diff --git a/public/terrain/19/858491/353816.terrain b/public/terrain/19/858491/353816.terrain new file mode 100644 index 000000000..200124052 Binary files /dev/null and b/public/terrain/19/858491/353816.terrain differ diff --git a/public/terrain/19/858491/353817.terrain b/public/terrain/19/858491/353817.terrain new file mode 100644 index 000000000..bc22694c4 Binary files /dev/null and b/public/terrain/19/858491/353817.terrain differ diff --git a/public/terrain/19/858491/353818.terrain b/public/terrain/19/858491/353818.terrain new file mode 100644 index 000000000..c99355045 Binary files /dev/null and b/public/terrain/19/858491/353818.terrain differ diff --git a/public/terrain/19/858491/353819.terrain b/public/terrain/19/858491/353819.terrain new file mode 100644 index 000000000..7c456b90a Binary files /dev/null and b/public/terrain/19/858491/353819.terrain differ diff --git a/public/terrain/19/858491/353820.terrain b/public/terrain/19/858491/353820.terrain new file mode 100644 index 000000000..39374aa0d Binary files /dev/null and b/public/terrain/19/858491/353820.terrain differ diff --git a/public/terrain/19/858491/353821.terrain b/public/terrain/19/858491/353821.terrain new file mode 100644 index 000000000..edd854ca0 Binary files /dev/null and b/public/terrain/19/858491/353821.terrain differ diff --git a/public/terrain/19/858491/353822.terrain b/public/terrain/19/858491/353822.terrain new file mode 100644 index 000000000..b42c27420 Binary files /dev/null and b/public/terrain/19/858491/353822.terrain differ diff --git a/public/terrain/19/858491/353823.terrain b/public/terrain/19/858491/353823.terrain new file mode 100644 index 000000000..8437906e5 Binary files /dev/null and b/public/terrain/19/858491/353823.terrain differ diff --git a/public/terrain/19/858491/353824.terrain b/public/terrain/19/858491/353824.terrain new file mode 100644 index 000000000..f3136ab51 Binary files /dev/null and b/public/terrain/19/858491/353824.terrain differ diff --git a/public/terrain/19/858491/353825.terrain b/public/terrain/19/858491/353825.terrain new file mode 100644 index 000000000..38a5ed7b3 Binary files /dev/null and b/public/terrain/19/858491/353825.terrain differ diff --git a/public/terrain/19/858491/353826.terrain b/public/terrain/19/858491/353826.terrain new file mode 100644 index 000000000..e5bcb0704 Binary files /dev/null and b/public/terrain/19/858491/353826.terrain differ diff --git a/public/terrain/19/858491/353827.terrain b/public/terrain/19/858491/353827.terrain new file mode 100644 index 000000000..9234c4cfd Binary files /dev/null and b/public/terrain/19/858491/353827.terrain differ diff --git a/public/terrain/19/858491/353828.terrain b/public/terrain/19/858491/353828.terrain new file mode 100644 index 000000000..44cf14f3f Binary files /dev/null and b/public/terrain/19/858491/353828.terrain differ diff --git a/public/terrain/19/858491/353829.terrain b/public/terrain/19/858491/353829.terrain new file mode 100644 index 000000000..a4af9f82a Binary files /dev/null and b/public/terrain/19/858491/353829.terrain differ diff --git a/public/terrain/19/858491/353830.terrain b/public/terrain/19/858491/353830.terrain new file mode 100644 index 000000000..7e306540c Binary files /dev/null and b/public/terrain/19/858491/353830.terrain differ diff --git a/public/terrain/19/858491/353831.terrain b/public/terrain/19/858491/353831.terrain new file mode 100644 index 000000000..d9976069c Binary files /dev/null and b/public/terrain/19/858491/353831.terrain differ diff --git a/public/terrain/19/858491/353832.terrain b/public/terrain/19/858491/353832.terrain new file mode 100644 index 000000000..13d9e408f Binary files /dev/null and b/public/terrain/19/858491/353832.terrain differ diff --git a/public/terrain/19/858491/353833.terrain b/public/terrain/19/858491/353833.terrain new file mode 100644 index 000000000..2aadab10e Binary files /dev/null and b/public/terrain/19/858491/353833.terrain differ diff --git a/public/terrain/19/858491/353834.terrain b/public/terrain/19/858491/353834.terrain new file mode 100644 index 000000000..b3282ebf8 Binary files /dev/null and b/public/terrain/19/858491/353834.terrain differ diff --git a/public/terrain/19/858491/353835.terrain b/public/terrain/19/858491/353835.terrain new file mode 100644 index 000000000..44f14831c Binary files /dev/null and b/public/terrain/19/858491/353835.terrain differ diff --git a/public/terrain/19/858491/353836.terrain b/public/terrain/19/858491/353836.terrain new file mode 100644 index 000000000..74edf428d Binary files /dev/null and b/public/terrain/19/858491/353836.terrain differ diff --git a/public/terrain/19/858491/353837.terrain b/public/terrain/19/858491/353837.terrain new file mode 100644 index 000000000..b41579eca Binary files /dev/null and b/public/terrain/19/858491/353837.terrain differ diff --git a/public/terrain/19/858491/353838.terrain b/public/terrain/19/858491/353838.terrain new file mode 100644 index 000000000..89f9161b3 Binary files /dev/null and b/public/terrain/19/858491/353838.terrain differ diff --git a/public/terrain/19/858491/353839.terrain b/public/terrain/19/858491/353839.terrain new file mode 100644 index 000000000..b0dacbeb1 Binary files /dev/null and b/public/terrain/19/858491/353839.terrain differ diff --git a/public/terrain/19/858491/353840.terrain b/public/terrain/19/858491/353840.terrain new file mode 100644 index 000000000..155060931 Binary files /dev/null and b/public/terrain/19/858491/353840.terrain differ diff --git a/public/terrain/19/858491/353841.terrain b/public/terrain/19/858491/353841.terrain new file mode 100644 index 000000000..4f26d5e2e Binary files /dev/null and b/public/terrain/19/858491/353841.terrain differ diff --git a/public/terrain/19/858491/353842.terrain b/public/terrain/19/858491/353842.terrain new file mode 100644 index 000000000..d67ef99a1 Binary files /dev/null and b/public/terrain/19/858491/353842.terrain differ diff --git a/public/terrain/19/858491/353843.terrain b/public/terrain/19/858491/353843.terrain new file mode 100644 index 000000000..3c9222c76 Binary files /dev/null and b/public/terrain/19/858491/353843.terrain differ diff --git a/public/terrain/19/858491/353844.terrain b/public/terrain/19/858491/353844.terrain new file mode 100644 index 000000000..e982e7d80 Binary files /dev/null and b/public/terrain/19/858491/353844.terrain differ diff --git a/public/terrain/19/858491/353845.terrain b/public/terrain/19/858491/353845.terrain new file mode 100644 index 000000000..cfb1f39aa Binary files /dev/null and b/public/terrain/19/858491/353845.terrain differ diff --git a/public/terrain/19/858491/353846.terrain b/public/terrain/19/858491/353846.terrain new file mode 100644 index 000000000..5aa7a7df0 Binary files /dev/null and b/public/terrain/19/858491/353846.terrain differ diff --git a/public/terrain/19/858491/353847.terrain b/public/terrain/19/858491/353847.terrain new file mode 100644 index 000000000..1beb4d3ce Binary files /dev/null and b/public/terrain/19/858491/353847.terrain differ diff --git a/public/terrain/19/858491/353848.terrain b/public/terrain/19/858491/353848.terrain new file mode 100644 index 000000000..7580a07c8 Binary files /dev/null and b/public/terrain/19/858491/353848.terrain differ diff --git a/public/terrain/19/858491/353849.terrain b/public/terrain/19/858491/353849.terrain new file mode 100644 index 000000000..27628c91b Binary files /dev/null and b/public/terrain/19/858491/353849.terrain differ diff --git a/public/terrain/19/858491/353850.terrain b/public/terrain/19/858491/353850.terrain new file mode 100644 index 000000000..ffef44f8c Binary files /dev/null and b/public/terrain/19/858491/353850.terrain differ diff --git a/public/terrain/19/858491/353851.terrain b/public/terrain/19/858491/353851.terrain new file mode 100644 index 000000000..d0cfdae54 Binary files /dev/null and b/public/terrain/19/858491/353851.terrain differ diff --git a/public/terrain/19/858491/353852.terrain b/public/terrain/19/858491/353852.terrain new file mode 100644 index 000000000..57721c4a4 Binary files /dev/null and b/public/terrain/19/858491/353852.terrain differ diff --git a/public/terrain/19/858491/353853.terrain b/public/terrain/19/858491/353853.terrain new file mode 100644 index 000000000..3dc8439e0 Binary files /dev/null and b/public/terrain/19/858491/353853.terrain differ diff --git a/public/terrain/19/858491/353854.terrain b/public/terrain/19/858491/353854.terrain new file mode 100644 index 000000000..160b252a9 Binary files /dev/null and b/public/terrain/19/858491/353854.terrain differ diff --git a/public/terrain/19/858491/353855.terrain b/public/terrain/19/858491/353855.terrain new file mode 100644 index 000000000..bcafa0949 Binary files /dev/null and b/public/terrain/19/858491/353855.terrain differ diff --git a/public/terrain/19/858491/353856.terrain b/public/terrain/19/858491/353856.terrain new file mode 100644 index 000000000..36fbffd78 Binary files /dev/null and b/public/terrain/19/858491/353856.terrain differ diff --git a/public/terrain/19/858491/353857.terrain b/public/terrain/19/858491/353857.terrain new file mode 100644 index 000000000..8d93c150c Binary files /dev/null and b/public/terrain/19/858491/353857.terrain differ diff --git a/public/terrain/19/858491/353858.terrain b/public/terrain/19/858491/353858.terrain new file mode 100644 index 000000000..3e4aa86b8 Binary files /dev/null and b/public/terrain/19/858491/353858.terrain differ diff --git a/public/terrain/19/858491/353859.terrain b/public/terrain/19/858491/353859.terrain new file mode 100644 index 000000000..a529a90df Binary files /dev/null and b/public/terrain/19/858491/353859.terrain differ diff --git a/public/terrain/19/858491/353860.terrain b/public/terrain/19/858491/353860.terrain new file mode 100644 index 000000000..e61ff7f52 Binary files /dev/null and b/public/terrain/19/858491/353860.terrain differ diff --git a/public/terrain/19/858491/353861.terrain b/public/terrain/19/858491/353861.terrain new file mode 100644 index 000000000..b732d4fe4 Binary files /dev/null and b/public/terrain/19/858491/353861.terrain differ diff --git a/public/terrain/19/858491/353862.terrain b/public/terrain/19/858491/353862.terrain new file mode 100644 index 000000000..dee94d891 Binary files /dev/null and b/public/terrain/19/858491/353862.terrain differ diff --git a/public/terrain/19/858491/353863.terrain b/public/terrain/19/858491/353863.terrain new file mode 100644 index 000000000..05fee1766 Binary files /dev/null and b/public/terrain/19/858491/353863.terrain differ diff --git a/public/terrain/19/858491/353864.terrain b/public/terrain/19/858491/353864.terrain new file mode 100644 index 000000000..b4ca920a9 Binary files /dev/null and b/public/terrain/19/858491/353864.terrain differ diff --git a/public/terrain/19/858491/353865.terrain b/public/terrain/19/858491/353865.terrain new file mode 100644 index 000000000..8f3ebfa40 Binary files /dev/null and b/public/terrain/19/858491/353865.terrain differ diff --git a/public/terrain/19/858491/353866.terrain b/public/terrain/19/858491/353866.terrain new file mode 100644 index 000000000..6bd6a816f Binary files /dev/null and b/public/terrain/19/858491/353866.terrain differ diff --git a/public/terrain/19/858491/353867.terrain b/public/terrain/19/858491/353867.terrain new file mode 100644 index 000000000..6f21be612 Binary files /dev/null and b/public/terrain/19/858491/353867.terrain differ diff --git a/public/terrain/19/858491/353868.terrain b/public/terrain/19/858491/353868.terrain new file mode 100644 index 000000000..84eaf4446 Binary files /dev/null and b/public/terrain/19/858491/353868.terrain differ diff --git a/public/terrain/19/858491/353869.terrain b/public/terrain/19/858491/353869.terrain new file mode 100644 index 000000000..e252a7277 Binary files /dev/null and b/public/terrain/19/858491/353869.terrain differ diff --git a/public/terrain/19/858491/353870.terrain b/public/terrain/19/858491/353870.terrain new file mode 100644 index 000000000..737e2cde8 Binary files /dev/null and b/public/terrain/19/858491/353870.terrain differ diff --git a/public/terrain/19/858491/353871.terrain b/public/terrain/19/858491/353871.terrain new file mode 100644 index 000000000..5e81dafe5 Binary files /dev/null and b/public/terrain/19/858491/353871.terrain differ diff --git a/public/terrain/19/858491/353872.terrain b/public/terrain/19/858491/353872.terrain new file mode 100644 index 000000000..d43406b69 Binary files /dev/null and b/public/terrain/19/858491/353872.terrain differ diff --git a/public/terrain/19/858491/353873.terrain b/public/terrain/19/858491/353873.terrain new file mode 100644 index 000000000..28cb7bbd8 Binary files /dev/null and b/public/terrain/19/858491/353873.terrain differ diff --git a/public/terrain/19/858491/353874.terrain b/public/terrain/19/858491/353874.terrain new file mode 100644 index 000000000..1dc0f8970 Binary files /dev/null and b/public/terrain/19/858491/353874.terrain differ diff --git a/public/terrain/19/858491/353875.terrain b/public/terrain/19/858491/353875.terrain new file mode 100644 index 000000000..d73169727 Binary files /dev/null and b/public/terrain/19/858491/353875.terrain differ diff --git a/public/terrain/19/858491/353876.terrain b/public/terrain/19/858491/353876.terrain new file mode 100644 index 000000000..aae98c086 Binary files /dev/null and b/public/terrain/19/858491/353876.terrain differ diff --git a/public/terrain/19/858491/353877.terrain b/public/terrain/19/858491/353877.terrain new file mode 100644 index 000000000..42719391e Binary files /dev/null and b/public/terrain/19/858491/353877.terrain differ diff --git a/public/terrain/19/858491/353878.terrain b/public/terrain/19/858491/353878.terrain new file mode 100644 index 000000000..47b433579 Binary files /dev/null and b/public/terrain/19/858491/353878.terrain differ diff --git a/public/terrain/19/858491/353879.terrain b/public/terrain/19/858491/353879.terrain new file mode 100644 index 000000000..d27d21b19 Binary files /dev/null and b/public/terrain/19/858491/353879.terrain differ diff --git a/public/terrain/19/858491/353880.terrain b/public/terrain/19/858491/353880.terrain new file mode 100644 index 000000000..9e7f63198 Binary files /dev/null and b/public/terrain/19/858491/353880.terrain differ diff --git a/public/terrain/19/858491/353881.terrain b/public/terrain/19/858491/353881.terrain new file mode 100644 index 000000000..89cdc8684 Binary files /dev/null and b/public/terrain/19/858491/353881.terrain differ diff --git a/public/terrain/19/858491/353882.terrain b/public/terrain/19/858491/353882.terrain new file mode 100644 index 000000000..04c732460 Binary files /dev/null and b/public/terrain/19/858491/353882.terrain differ diff --git a/public/terrain/19/858491/353883.terrain b/public/terrain/19/858491/353883.terrain new file mode 100644 index 000000000..6c97a801b Binary files /dev/null and b/public/terrain/19/858491/353883.terrain differ diff --git a/public/terrain/19/858491/353884.terrain b/public/terrain/19/858491/353884.terrain new file mode 100644 index 000000000..129b0c2cf Binary files /dev/null and b/public/terrain/19/858491/353884.terrain differ diff --git a/public/terrain/19/858491/353885.terrain b/public/terrain/19/858491/353885.terrain new file mode 100644 index 000000000..e9586bf16 Binary files /dev/null and b/public/terrain/19/858491/353885.terrain differ diff --git a/public/terrain/19/858491/353886.terrain b/public/terrain/19/858491/353886.terrain new file mode 100644 index 000000000..699e729de Binary files /dev/null and b/public/terrain/19/858491/353886.terrain differ diff --git a/public/terrain/19/858491/353887.terrain b/public/terrain/19/858491/353887.terrain new file mode 100644 index 000000000..df8d3fa5f Binary files /dev/null and b/public/terrain/19/858491/353887.terrain differ diff --git a/public/terrain/19/858491/353888.terrain b/public/terrain/19/858491/353888.terrain new file mode 100644 index 000000000..b374d5c18 Binary files /dev/null and b/public/terrain/19/858491/353888.terrain differ diff --git a/public/terrain/19/858491/353889.terrain b/public/terrain/19/858491/353889.terrain new file mode 100644 index 000000000..6b96df8f4 Binary files /dev/null and b/public/terrain/19/858491/353889.terrain differ diff --git a/public/terrain/19/858491/353890.terrain b/public/terrain/19/858491/353890.terrain new file mode 100644 index 000000000..174a499d0 Binary files /dev/null and b/public/terrain/19/858491/353890.terrain differ diff --git a/public/terrain/19/858491/353891.terrain b/public/terrain/19/858491/353891.terrain new file mode 100644 index 000000000..e1b6ba11e Binary files /dev/null and b/public/terrain/19/858491/353891.terrain differ diff --git a/public/terrain/19/858491/353892.terrain b/public/terrain/19/858491/353892.terrain new file mode 100644 index 000000000..29d8c9b17 Binary files /dev/null and b/public/terrain/19/858491/353892.terrain differ diff --git a/public/terrain/19/858491/353893.terrain b/public/terrain/19/858491/353893.terrain new file mode 100644 index 000000000..ae79256ac Binary files /dev/null and b/public/terrain/19/858491/353893.terrain differ diff --git a/public/terrain/19/858491/353894.terrain b/public/terrain/19/858491/353894.terrain new file mode 100644 index 000000000..f9525c23f Binary files /dev/null and b/public/terrain/19/858491/353894.terrain differ diff --git a/public/terrain/19/858491/353895.terrain b/public/terrain/19/858491/353895.terrain new file mode 100644 index 000000000..810c42982 Binary files /dev/null and b/public/terrain/19/858491/353895.terrain differ diff --git a/public/terrain/19/858491/353896.terrain b/public/terrain/19/858491/353896.terrain new file mode 100644 index 000000000..ac718b46a Binary files /dev/null and b/public/terrain/19/858491/353896.terrain differ diff --git a/public/terrain/19/858491/353897.terrain b/public/terrain/19/858491/353897.terrain new file mode 100644 index 000000000..42958dfd6 Binary files /dev/null and b/public/terrain/19/858491/353897.terrain differ diff --git a/public/terrain/19/858491/353898.terrain b/public/terrain/19/858491/353898.terrain new file mode 100644 index 000000000..fcc4323a0 Binary files /dev/null and b/public/terrain/19/858491/353898.terrain differ diff --git a/public/terrain/19/858491/353899.terrain b/public/terrain/19/858491/353899.terrain new file mode 100644 index 000000000..d6a9302ce Binary files /dev/null and b/public/terrain/19/858491/353899.terrain differ diff --git a/public/terrain/19/858491/353900.terrain b/public/terrain/19/858491/353900.terrain new file mode 100644 index 000000000..c390125d5 Binary files /dev/null and b/public/terrain/19/858491/353900.terrain differ diff --git a/public/terrain/19/858491/353901.terrain b/public/terrain/19/858491/353901.terrain new file mode 100644 index 000000000..db68c94cc Binary files /dev/null and b/public/terrain/19/858491/353901.terrain differ diff --git a/public/terrain/19/858491/353902.terrain b/public/terrain/19/858491/353902.terrain new file mode 100644 index 000000000..90a0fa737 Binary files /dev/null and b/public/terrain/19/858491/353902.terrain differ diff --git a/public/terrain/19/858491/353903.terrain b/public/terrain/19/858491/353903.terrain new file mode 100644 index 000000000..2b216fa41 Binary files /dev/null and b/public/terrain/19/858491/353903.terrain differ diff --git a/public/terrain/19/858491/353904.terrain b/public/terrain/19/858491/353904.terrain new file mode 100644 index 000000000..d5a7455c7 Binary files /dev/null and b/public/terrain/19/858491/353904.terrain differ diff --git a/public/terrain/19/858491/353905.terrain b/public/terrain/19/858491/353905.terrain new file mode 100644 index 000000000..c70dccf6e Binary files /dev/null and b/public/terrain/19/858491/353905.terrain differ diff --git a/public/terrain/19/858491/353906.terrain b/public/terrain/19/858491/353906.terrain new file mode 100644 index 000000000..1e81e2734 Binary files /dev/null and b/public/terrain/19/858491/353906.terrain differ diff --git a/public/terrain/19/858491/353907.terrain b/public/terrain/19/858491/353907.terrain new file mode 100644 index 000000000..efa431526 Binary files /dev/null and b/public/terrain/19/858491/353907.terrain differ diff --git a/public/terrain/19/858491/353908.terrain b/public/terrain/19/858491/353908.terrain new file mode 100644 index 000000000..488d20f0d Binary files /dev/null and b/public/terrain/19/858491/353908.terrain differ diff --git a/public/terrain/19/858491/353909.terrain b/public/terrain/19/858491/353909.terrain new file mode 100644 index 000000000..c77dbe9b1 Binary files /dev/null and b/public/terrain/19/858491/353909.terrain differ diff --git a/public/terrain/19/858491/353910.terrain b/public/terrain/19/858491/353910.terrain new file mode 100644 index 000000000..3f426131f Binary files /dev/null and b/public/terrain/19/858491/353910.terrain differ diff --git a/public/terrain/19/858491/353911.terrain b/public/terrain/19/858491/353911.terrain new file mode 100644 index 000000000..0be00e235 Binary files /dev/null and b/public/terrain/19/858491/353911.terrain differ diff --git a/public/terrain/19/858491/353912.terrain b/public/terrain/19/858491/353912.terrain new file mode 100644 index 000000000..3590b139e Binary files /dev/null and b/public/terrain/19/858491/353912.terrain differ diff --git a/public/terrain/19/858491/353913.terrain b/public/terrain/19/858491/353913.terrain new file mode 100644 index 000000000..e09c9e8c5 Binary files /dev/null and b/public/terrain/19/858491/353913.terrain differ diff --git a/public/terrain/19/858491/353914.terrain b/public/terrain/19/858491/353914.terrain new file mode 100644 index 000000000..6e1a983b1 Binary files /dev/null and b/public/terrain/19/858491/353914.terrain differ diff --git a/public/terrain/19/858491/353915.terrain b/public/terrain/19/858491/353915.terrain new file mode 100644 index 000000000..6fc9437e2 Binary files /dev/null and b/public/terrain/19/858491/353915.terrain differ diff --git a/public/terrain/19/858491/353916.terrain b/public/terrain/19/858491/353916.terrain new file mode 100644 index 000000000..2570b2ba3 Binary files /dev/null and b/public/terrain/19/858491/353916.terrain differ diff --git a/public/terrain/19/858491/353917.terrain b/public/terrain/19/858491/353917.terrain new file mode 100644 index 000000000..9412faab5 Binary files /dev/null and b/public/terrain/19/858491/353917.terrain differ diff --git a/public/terrain/19/858491/353918.terrain b/public/terrain/19/858491/353918.terrain new file mode 100644 index 000000000..c09142687 Binary files /dev/null and b/public/terrain/19/858491/353918.terrain differ diff --git a/public/terrain/19/858491/353919.terrain b/public/terrain/19/858491/353919.terrain new file mode 100644 index 000000000..6e6055089 Binary files /dev/null and b/public/terrain/19/858491/353919.terrain differ diff --git a/public/terrain/19/858491/353920.terrain b/public/terrain/19/858491/353920.terrain new file mode 100644 index 000000000..87bbea418 Binary files /dev/null and b/public/terrain/19/858491/353920.terrain differ diff --git a/public/terrain/19/858491/353921.terrain b/public/terrain/19/858491/353921.terrain new file mode 100644 index 000000000..89f319826 Binary files /dev/null and b/public/terrain/19/858491/353921.terrain differ diff --git a/public/terrain/19/858491/353922.terrain b/public/terrain/19/858491/353922.terrain new file mode 100644 index 000000000..131d864f6 Binary files /dev/null and b/public/terrain/19/858491/353922.terrain differ diff --git a/public/terrain/19/858491/353923.terrain b/public/terrain/19/858491/353923.terrain new file mode 100644 index 000000000..e09d239a9 Binary files /dev/null and b/public/terrain/19/858491/353923.terrain differ diff --git a/public/terrain/19/858491/353924.terrain b/public/terrain/19/858491/353924.terrain new file mode 100644 index 000000000..ae53b4ea1 Binary files /dev/null and b/public/terrain/19/858491/353924.terrain differ diff --git a/public/terrain/19/858491/353925.terrain b/public/terrain/19/858491/353925.terrain new file mode 100644 index 000000000..1bff38bd2 Binary files /dev/null and b/public/terrain/19/858491/353925.terrain differ diff --git a/public/terrain/19/858491/353926.terrain b/public/terrain/19/858491/353926.terrain new file mode 100644 index 000000000..fc02ba3b9 Binary files /dev/null and b/public/terrain/19/858491/353926.terrain differ diff --git a/public/terrain/19/858491/353927.terrain b/public/terrain/19/858491/353927.terrain new file mode 100644 index 000000000..ffe9013cd Binary files /dev/null and b/public/terrain/19/858491/353927.terrain differ diff --git a/public/terrain/19/858491/353928.terrain b/public/terrain/19/858491/353928.terrain new file mode 100644 index 000000000..0d418561c Binary files /dev/null and b/public/terrain/19/858491/353928.terrain differ diff --git a/public/terrain/19/858491/353929.terrain b/public/terrain/19/858491/353929.terrain new file mode 100644 index 000000000..6947852e4 Binary files /dev/null and b/public/terrain/19/858491/353929.terrain differ diff --git a/public/terrain/19/858491/353930.terrain b/public/terrain/19/858491/353930.terrain new file mode 100644 index 000000000..0737ad5a5 Binary files /dev/null and b/public/terrain/19/858491/353930.terrain differ diff --git a/public/terrain/19/858491/353931.terrain b/public/terrain/19/858491/353931.terrain new file mode 100644 index 000000000..4ac3e2540 Binary files /dev/null and b/public/terrain/19/858491/353931.terrain differ diff --git a/public/terrain/19/858491/353932.terrain b/public/terrain/19/858491/353932.terrain new file mode 100644 index 000000000..7fe025cce Binary files /dev/null and b/public/terrain/19/858491/353932.terrain differ diff --git a/public/terrain/19/858491/353933.terrain b/public/terrain/19/858491/353933.terrain new file mode 100644 index 000000000..65013ac88 Binary files /dev/null and b/public/terrain/19/858491/353933.terrain differ diff --git a/public/terrain/19/858491/353934.terrain b/public/terrain/19/858491/353934.terrain new file mode 100644 index 000000000..eb18cbf26 Binary files /dev/null and b/public/terrain/19/858491/353934.terrain differ diff --git a/public/terrain/19/858491/353935.terrain b/public/terrain/19/858491/353935.terrain new file mode 100644 index 000000000..d37448223 Binary files /dev/null and b/public/terrain/19/858491/353935.terrain differ diff --git a/public/terrain/19/858491/353936.terrain b/public/terrain/19/858491/353936.terrain new file mode 100644 index 000000000..bcf25be84 Binary files /dev/null and b/public/terrain/19/858491/353936.terrain differ diff --git a/public/terrain/19/858491/353937.terrain b/public/terrain/19/858491/353937.terrain new file mode 100644 index 000000000..607adcc7f Binary files /dev/null and b/public/terrain/19/858491/353937.terrain differ diff --git a/public/terrain/19/858491/353938.terrain b/public/terrain/19/858491/353938.terrain new file mode 100644 index 000000000..cea246b03 Binary files /dev/null and b/public/terrain/19/858491/353938.terrain differ diff --git a/public/terrain/19/858491/353939.terrain b/public/terrain/19/858491/353939.terrain new file mode 100644 index 000000000..6aa6db07e Binary files /dev/null and b/public/terrain/19/858491/353939.terrain differ diff --git a/public/terrain/19/858491/353940.terrain b/public/terrain/19/858491/353940.terrain new file mode 100644 index 000000000..65092f53b Binary files /dev/null and b/public/terrain/19/858491/353940.terrain differ diff --git a/public/terrain/19/858491/353941.terrain b/public/terrain/19/858491/353941.terrain new file mode 100644 index 000000000..a99b03449 Binary files /dev/null and b/public/terrain/19/858491/353941.terrain differ diff --git a/public/terrain/19/858491/353942.terrain b/public/terrain/19/858491/353942.terrain new file mode 100644 index 000000000..92e2132fa Binary files /dev/null and b/public/terrain/19/858491/353942.terrain differ diff --git a/public/terrain/19/858491/353943.terrain b/public/terrain/19/858491/353943.terrain new file mode 100644 index 000000000..20bd5b10d Binary files /dev/null and b/public/terrain/19/858491/353943.terrain differ diff --git a/public/terrain/19/858491/353944.terrain b/public/terrain/19/858491/353944.terrain new file mode 100644 index 000000000..9fd873d24 Binary files /dev/null and b/public/terrain/19/858491/353944.terrain differ diff --git a/public/terrain/19/858491/353945.terrain b/public/terrain/19/858491/353945.terrain new file mode 100644 index 000000000..c2f1a3d7e Binary files /dev/null and b/public/terrain/19/858491/353945.terrain differ diff --git a/public/terrain/19/858491/353946.terrain b/public/terrain/19/858491/353946.terrain new file mode 100644 index 000000000..98bf247b5 Binary files /dev/null and b/public/terrain/19/858491/353946.terrain differ diff --git a/public/terrain/19/858491/353947.terrain b/public/terrain/19/858491/353947.terrain new file mode 100644 index 000000000..4a344c8f1 Binary files /dev/null and b/public/terrain/19/858491/353947.terrain differ diff --git a/public/terrain/19/858491/353948.terrain b/public/terrain/19/858491/353948.terrain new file mode 100644 index 000000000..aceacadc3 Binary files /dev/null and b/public/terrain/19/858491/353948.terrain differ diff --git a/public/terrain/19/858491/353949.terrain b/public/terrain/19/858491/353949.terrain new file mode 100644 index 000000000..a6f435f4a Binary files /dev/null and b/public/terrain/19/858491/353949.terrain differ diff --git a/public/terrain/19/858491/353950.terrain b/public/terrain/19/858491/353950.terrain new file mode 100644 index 000000000..380fe572c Binary files /dev/null and b/public/terrain/19/858491/353950.terrain differ diff --git a/public/terrain/19/858491/353951.terrain b/public/terrain/19/858491/353951.terrain new file mode 100644 index 000000000..fc3c00ad2 Binary files /dev/null and b/public/terrain/19/858491/353951.terrain differ diff --git a/public/terrain/19/858491/353952.terrain b/public/terrain/19/858491/353952.terrain new file mode 100644 index 000000000..e4a2a6890 Binary files /dev/null and b/public/terrain/19/858491/353952.terrain differ diff --git a/public/terrain/19/858491/353953.terrain b/public/terrain/19/858491/353953.terrain new file mode 100644 index 000000000..86253c331 Binary files /dev/null and b/public/terrain/19/858491/353953.terrain differ diff --git a/public/terrain/19/858491/353954.terrain b/public/terrain/19/858491/353954.terrain new file mode 100644 index 000000000..39ab104c3 Binary files /dev/null and b/public/terrain/19/858491/353954.terrain differ diff --git a/public/terrain/19/858491/353955.terrain b/public/terrain/19/858491/353955.terrain new file mode 100644 index 000000000..e34e95787 Binary files /dev/null and b/public/terrain/19/858491/353955.terrain differ diff --git a/public/terrain/19/858491/353956.terrain b/public/terrain/19/858491/353956.terrain new file mode 100644 index 000000000..f741f886b Binary files /dev/null and b/public/terrain/19/858491/353956.terrain differ diff --git a/public/terrain/19/858491/353957.terrain b/public/terrain/19/858491/353957.terrain new file mode 100644 index 000000000..473f0673a Binary files /dev/null and b/public/terrain/19/858491/353957.terrain differ diff --git a/public/terrain/19/858491/353958.terrain b/public/terrain/19/858491/353958.terrain new file mode 100644 index 000000000..0e8acb769 Binary files /dev/null and b/public/terrain/19/858491/353958.terrain differ diff --git a/public/terrain/19/858491/353959.terrain b/public/terrain/19/858491/353959.terrain new file mode 100644 index 000000000..0973ee337 Binary files /dev/null and b/public/terrain/19/858491/353959.terrain differ diff --git a/public/terrain/19/858491/353960.terrain b/public/terrain/19/858491/353960.terrain new file mode 100644 index 000000000..bba6240ac Binary files /dev/null and b/public/terrain/19/858491/353960.terrain differ diff --git a/public/terrain/19/858491/353961.terrain b/public/terrain/19/858491/353961.terrain new file mode 100644 index 000000000..53d6da6d8 Binary files /dev/null and b/public/terrain/19/858491/353961.terrain differ diff --git a/public/terrain/19/858491/353962.terrain b/public/terrain/19/858491/353962.terrain new file mode 100644 index 000000000..bac5b988f Binary files /dev/null and b/public/terrain/19/858491/353962.terrain differ diff --git a/public/terrain/19/858491/353963.terrain b/public/terrain/19/858491/353963.terrain new file mode 100644 index 000000000..18e54fb01 Binary files /dev/null and b/public/terrain/19/858491/353963.terrain differ diff --git a/public/terrain/19/858491/353964.terrain b/public/terrain/19/858491/353964.terrain new file mode 100644 index 000000000..be408e4ee Binary files /dev/null and b/public/terrain/19/858491/353964.terrain differ diff --git a/public/terrain/19/858491/353965.terrain b/public/terrain/19/858491/353965.terrain new file mode 100644 index 000000000..fcdab3975 Binary files /dev/null and b/public/terrain/19/858491/353965.terrain differ diff --git a/public/terrain/19/858491/353966.terrain b/public/terrain/19/858491/353966.terrain new file mode 100644 index 000000000..6c3d10a29 Binary files /dev/null and b/public/terrain/19/858491/353966.terrain differ diff --git a/public/terrain/19/858491/353967.terrain b/public/terrain/19/858491/353967.terrain new file mode 100644 index 000000000..98bd598a9 Binary files /dev/null and b/public/terrain/19/858491/353967.terrain differ diff --git a/public/terrain/19/858491/353968.terrain b/public/terrain/19/858491/353968.terrain new file mode 100644 index 000000000..115f54274 Binary files /dev/null and b/public/terrain/19/858491/353968.terrain differ diff --git a/public/terrain/19/858491/353969.terrain b/public/terrain/19/858491/353969.terrain new file mode 100644 index 000000000..95d7a114b Binary files /dev/null and b/public/terrain/19/858491/353969.terrain differ diff --git a/public/terrain/19/858491/353970.terrain b/public/terrain/19/858491/353970.terrain new file mode 100644 index 000000000..67ea4946a Binary files /dev/null and b/public/terrain/19/858491/353970.terrain differ diff --git a/public/terrain/19/858491/353971.terrain b/public/terrain/19/858491/353971.terrain new file mode 100644 index 000000000..64750bebe Binary files /dev/null and b/public/terrain/19/858491/353971.terrain differ diff --git a/public/terrain/19/858491/353972.terrain b/public/terrain/19/858491/353972.terrain new file mode 100644 index 000000000..f4ad8b9e2 Binary files /dev/null and b/public/terrain/19/858491/353972.terrain differ diff --git a/public/terrain/19/858491/353973.terrain b/public/terrain/19/858491/353973.terrain new file mode 100644 index 000000000..3ae4e7bcc Binary files /dev/null and b/public/terrain/19/858491/353973.terrain differ diff --git a/public/terrain/19/858491/353974.terrain b/public/terrain/19/858491/353974.terrain new file mode 100644 index 000000000..bba882b8a Binary files /dev/null and b/public/terrain/19/858491/353974.terrain differ diff --git a/public/terrain/19/858491/353975.terrain b/public/terrain/19/858491/353975.terrain new file mode 100644 index 000000000..bd0c53857 Binary files /dev/null and b/public/terrain/19/858491/353975.terrain differ diff --git a/public/terrain/19/858491/353976.terrain b/public/terrain/19/858491/353976.terrain new file mode 100644 index 000000000..0388aa97b Binary files /dev/null and b/public/terrain/19/858491/353976.terrain differ diff --git a/public/terrain/19/858491/353977.terrain b/public/terrain/19/858491/353977.terrain new file mode 100644 index 000000000..5e196c344 Binary files /dev/null and b/public/terrain/19/858491/353977.terrain differ diff --git a/public/terrain/19/858491/353978.terrain b/public/terrain/19/858491/353978.terrain new file mode 100644 index 000000000..bdaea9e60 Binary files /dev/null and b/public/terrain/19/858491/353978.terrain differ diff --git a/public/terrain/19/858491/353979.terrain b/public/terrain/19/858491/353979.terrain new file mode 100644 index 000000000..846c848c5 Binary files /dev/null and b/public/terrain/19/858491/353979.terrain differ diff --git a/public/terrain/19/858491/353980.terrain b/public/terrain/19/858491/353980.terrain new file mode 100644 index 000000000..e2b22d932 Binary files /dev/null and b/public/terrain/19/858491/353980.terrain differ diff --git a/public/terrain/19/858491/353981.terrain b/public/terrain/19/858491/353981.terrain new file mode 100644 index 000000000..e5c457aa6 Binary files /dev/null and b/public/terrain/19/858491/353981.terrain differ diff --git a/public/terrain/19/858491/353982.terrain b/public/terrain/19/858491/353982.terrain new file mode 100644 index 000000000..6cf1c4ace Binary files /dev/null and b/public/terrain/19/858491/353982.terrain differ diff --git a/public/terrain/19/858491/353983.terrain b/public/terrain/19/858491/353983.terrain new file mode 100644 index 000000000..3994516f1 Binary files /dev/null and b/public/terrain/19/858491/353983.terrain differ diff --git a/public/terrain/19/858491/353984.terrain b/public/terrain/19/858491/353984.terrain new file mode 100644 index 000000000..7249bcb55 Binary files /dev/null and b/public/terrain/19/858491/353984.terrain differ diff --git a/public/terrain/19/858491/353985.terrain b/public/terrain/19/858491/353985.terrain new file mode 100644 index 000000000..bbe43f605 Binary files /dev/null and b/public/terrain/19/858491/353985.terrain differ diff --git a/public/terrain/19/858491/353986.terrain b/public/terrain/19/858491/353986.terrain new file mode 100644 index 000000000..cf279c08a Binary files /dev/null and b/public/terrain/19/858491/353986.terrain differ diff --git a/public/terrain/19/858491/353987.terrain b/public/terrain/19/858491/353987.terrain new file mode 100644 index 000000000..2699158fb Binary files /dev/null and b/public/terrain/19/858491/353987.terrain differ diff --git a/public/terrain/19/858491/353988.terrain b/public/terrain/19/858491/353988.terrain new file mode 100644 index 000000000..59bfc1a8a Binary files /dev/null and b/public/terrain/19/858491/353988.terrain differ diff --git a/public/terrain/19/858491/353989.terrain b/public/terrain/19/858491/353989.terrain new file mode 100644 index 000000000..82bb0dec4 Binary files /dev/null and b/public/terrain/19/858491/353989.terrain differ diff --git a/public/terrain/19/858491/353990.terrain b/public/terrain/19/858491/353990.terrain new file mode 100644 index 000000000..dbcc6ac20 Binary files /dev/null and b/public/terrain/19/858491/353990.terrain differ diff --git a/public/terrain/19/858491/353991.terrain b/public/terrain/19/858491/353991.terrain new file mode 100644 index 000000000..fe5fa3495 Binary files /dev/null and b/public/terrain/19/858491/353991.terrain differ diff --git a/public/terrain/19/858491/353992.terrain b/public/terrain/19/858491/353992.terrain new file mode 100644 index 000000000..b949ab80e Binary files /dev/null and b/public/terrain/19/858491/353992.terrain differ diff --git a/public/terrain/19/858491/353993.terrain b/public/terrain/19/858491/353993.terrain new file mode 100644 index 000000000..e7f3bf0b4 Binary files /dev/null and b/public/terrain/19/858491/353993.terrain differ diff --git a/public/terrain/19/858491/353994.terrain b/public/terrain/19/858491/353994.terrain new file mode 100644 index 000000000..81b20c74e Binary files /dev/null and b/public/terrain/19/858491/353994.terrain differ diff --git a/public/terrain/19/858491/353995.terrain b/public/terrain/19/858491/353995.terrain new file mode 100644 index 000000000..fca53d7e9 Binary files /dev/null and b/public/terrain/19/858491/353995.terrain differ diff --git a/public/terrain/19/858491/353996.terrain b/public/terrain/19/858491/353996.terrain new file mode 100644 index 000000000..60d7d1fd0 Binary files /dev/null and b/public/terrain/19/858491/353996.terrain differ diff --git a/public/terrain/19/858491/353997.terrain b/public/terrain/19/858491/353997.terrain new file mode 100644 index 000000000..7acdcd761 Binary files /dev/null and b/public/terrain/19/858491/353997.terrain differ diff --git a/public/terrain/19/858491/353998.terrain b/public/terrain/19/858491/353998.terrain new file mode 100644 index 000000000..7168bb46e Binary files /dev/null and b/public/terrain/19/858491/353998.terrain differ diff --git a/public/terrain/19/858491/353999.terrain b/public/terrain/19/858491/353999.terrain new file mode 100644 index 000000000..4fee0fbcd Binary files /dev/null and b/public/terrain/19/858491/353999.terrain differ diff --git a/public/terrain/19/858491/354000.terrain b/public/terrain/19/858491/354000.terrain new file mode 100644 index 000000000..fb763bb7c Binary files /dev/null and b/public/terrain/19/858491/354000.terrain differ diff --git a/public/terrain/19/858491/354001.terrain b/public/terrain/19/858491/354001.terrain new file mode 100644 index 000000000..d6eab47a7 Binary files /dev/null and b/public/terrain/19/858491/354001.terrain differ diff --git a/public/terrain/19/858491/354002.terrain b/public/terrain/19/858491/354002.terrain new file mode 100644 index 000000000..61c084e25 Binary files /dev/null and b/public/terrain/19/858491/354002.terrain differ diff --git a/public/terrain/19/858491/354003.terrain b/public/terrain/19/858491/354003.terrain new file mode 100644 index 000000000..9bfe95390 Binary files /dev/null and b/public/terrain/19/858491/354003.terrain differ diff --git a/public/terrain/19/858491/354004.terrain b/public/terrain/19/858491/354004.terrain new file mode 100644 index 000000000..3e55fe6a0 Binary files /dev/null and b/public/terrain/19/858491/354004.terrain differ diff --git a/public/terrain/19/858491/354005.terrain b/public/terrain/19/858491/354005.terrain new file mode 100644 index 000000000..ead88c10c Binary files /dev/null and b/public/terrain/19/858491/354005.terrain differ diff --git a/public/terrain/19/858491/354006.terrain b/public/terrain/19/858491/354006.terrain new file mode 100644 index 000000000..0569ef9c4 Binary files /dev/null and b/public/terrain/19/858491/354006.terrain differ diff --git a/public/terrain/19/858491/354007.terrain b/public/terrain/19/858491/354007.terrain new file mode 100644 index 000000000..2c20a3811 Binary files /dev/null and b/public/terrain/19/858491/354007.terrain differ diff --git a/public/terrain/19/858491/354008.terrain b/public/terrain/19/858491/354008.terrain new file mode 100644 index 000000000..268e54bfc Binary files /dev/null and b/public/terrain/19/858491/354008.terrain differ diff --git a/public/terrain/19/858491/354009.terrain b/public/terrain/19/858491/354009.terrain new file mode 100644 index 000000000..dea2a0c06 Binary files /dev/null and b/public/terrain/19/858491/354009.terrain differ diff --git a/public/terrain/19/858491/354010.terrain b/public/terrain/19/858491/354010.terrain new file mode 100644 index 000000000..28a73d2ba Binary files /dev/null and b/public/terrain/19/858491/354010.terrain differ diff --git a/public/terrain/19/858491/354011.terrain b/public/terrain/19/858491/354011.terrain new file mode 100644 index 000000000..fdfe63ac1 Binary files /dev/null and b/public/terrain/19/858491/354011.terrain differ diff --git a/public/terrain/19/858491/354012.terrain b/public/terrain/19/858491/354012.terrain new file mode 100644 index 000000000..2227347b1 Binary files /dev/null and b/public/terrain/19/858491/354012.terrain differ diff --git a/public/terrain/19/858491/354013.terrain b/public/terrain/19/858491/354013.terrain new file mode 100644 index 000000000..dbfe6dc69 Binary files /dev/null and b/public/terrain/19/858491/354013.terrain differ diff --git a/public/terrain/19/858491/354014.terrain b/public/terrain/19/858491/354014.terrain new file mode 100644 index 000000000..93e6d957e Binary files /dev/null and b/public/terrain/19/858491/354014.terrain differ diff --git a/public/terrain/19/858491/354015.terrain b/public/terrain/19/858491/354015.terrain new file mode 100644 index 000000000..29c9820e4 Binary files /dev/null and b/public/terrain/19/858491/354015.terrain differ diff --git a/public/terrain/19/858491/354016.terrain b/public/terrain/19/858491/354016.terrain new file mode 100644 index 000000000..2c1036c19 Binary files /dev/null and b/public/terrain/19/858491/354016.terrain differ diff --git a/public/terrain/19/858491/354017.terrain b/public/terrain/19/858491/354017.terrain new file mode 100644 index 000000000..2f21882ae Binary files /dev/null and b/public/terrain/19/858491/354017.terrain differ diff --git a/public/terrain/19/858491/354018.terrain b/public/terrain/19/858491/354018.terrain new file mode 100644 index 000000000..924ff3be9 Binary files /dev/null and b/public/terrain/19/858491/354018.terrain differ diff --git a/public/terrain/19/858491/354019.terrain b/public/terrain/19/858491/354019.terrain new file mode 100644 index 000000000..d46b18300 Binary files /dev/null and b/public/terrain/19/858491/354019.terrain differ diff --git a/public/terrain/19/858491/354020.terrain b/public/terrain/19/858491/354020.terrain new file mode 100644 index 000000000..03f5058bc Binary files /dev/null and b/public/terrain/19/858491/354020.terrain differ diff --git a/public/terrain/19/858491/354021.terrain b/public/terrain/19/858491/354021.terrain new file mode 100644 index 000000000..84ef902a5 Binary files /dev/null and b/public/terrain/19/858491/354021.terrain differ diff --git a/public/terrain/19/858491/354022.terrain b/public/terrain/19/858491/354022.terrain new file mode 100644 index 000000000..f1098addc Binary files /dev/null and b/public/terrain/19/858491/354022.terrain differ diff --git a/public/terrain/19/858491/354023.terrain b/public/terrain/19/858491/354023.terrain new file mode 100644 index 000000000..bb875bc34 Binary files /dev/null and b/public/terrain/19/858491/354023.terrain differ diff --git a/public/terrain/19/858491/354024.terrain b/public/terrain/19/858491/354024.terrain new file mode 100644 index 000000000..0558c43b8 Binary files /dev/null and b/public/terrain/19/858491/354024.terrain differ diff --git a/public/terrain/19/858491/354025.terrain b/public/terrain/19/858491/354025.terrain new file mode 100644 index 000000000..d69f72cfc Binary files /dev/null and b/public/terrain/19/858491/354025.terrain differ diff --git a/public/terrain/19/858491/354026.terrain b/public/terrain/19/858491/354026.terrain new file mode 100644 index 000000000..e23a1bcf1 Binary files /dev/null and b/public/terrain/19/858491/354026.terrain differ diff --git a/public/terrain/19/858491/354027.terrain b/public/terrain/19/858491/354027.terrain new file mode 100644 index 000000000..329749a9f Binary files /dev/null and b/public/terrain/19/858491/354027.terrain differ diff --git a/public/terrain/19/858491/354028.terrain b/public/terrain/19/858491/354028.terrain new file mode 100644 index 000000000..82c2b07fc Binary files /dev/null and b/public/terrain/19/858491/354028.terrain differ diff --git a/public/terrain/19/858491/354029.terrain b/public/terrain/19/858491/354029.terrain new file mode 100644 index 000000000..20cd770c3 Binary files /dev/null and b/public/terrain/19/858491/354029.terrain differ diff --git a/public/terrain/19/858491/354030.terrain b/public/terrain/19/858491/354030.terrain new file mode 100644 index 000000000..d96722745 Binary files /dev/null and b/public/terrain/19/858491/354030.terrain differ diff --git a/public/terrain/19/858491/354031.terrain b/public/terrain/19/858491/354031.terrain new file mode 100644 index 000000000..512953d1d Binary files /dev/null and b/public/terrain/19/858491/354031.terrain differ diff --git a/public/terrain/19/858491/354032.terrain b/public/terrain/19/858491/354032.terrain new file mode 100644 index 000000000..448ae36bd Binary files /dev/null and b/public/terrain/19/858491/354032.terrain differ diff --git a/public/terrain/19/858491/354033.terrain b/public/terrain/19/858491/354033.terrain new file mode 100644 index 000000000..7aeb60f73 Binary files /dev/null and b/public/terrain/19/858491/354033.terrain differ diff --git a/public/terrain/19/858491/354034.terrain b/public/terrain/19/858491/354034.terrain new file mode 100644 index 000000000..a31a37ac9 Binary files /dev/null and b/public/terrain/19/858491/354034.terrain differ diff --git a/public/terrain/19/858491/354035.terrain b/public/terrain/19/858491/354035.terrain new file mode 100644 index 000000000..1568b5418 Binary files /dev/null and b/public/terrain/19/858491/354035.terrain differ diff --git a/public/terrain/19/858491/354036.terrain b/public/terrain/19/858491/354036.terrain new file mode 100644 index 000000000..04c5f8d04 Binary files /dev/null and b/public/terrain/19/858491/354036.terrain differ diff --git a/public/terrain/19/858491/354037.terrain b/public/terrain/19/858491/354037.terrain new file mode 100644 index 000000000..9a7e36dfa Binary files /dev/null and b/public/terrain/19/858491/354037.terrain differ diff --git a/public/terrain/19/858491/354038.terrain b/public/terrain/19/858491/354038.terrain new file mode 100644 index 000000000..6e5aa3592 Binary files /dev/null and b/public/terrain/19/858491/354038.terrain differ diff --git a/public/terrain/19/858491/354039.terrain b/public/terrain/19/858491/354039.terrain new file mode 100644 index 000000000..709f538f6 Binary files /dev/null and b/public/terrain/19/858491/354039.terrain differ diff --git a/public/terrain/19/858491/354040.terrain b/public/terrain/19/858491/354040.terrain new file mode 100644 index 000000000..1796f79a8 Binary files /dev/null and b/public/terrain/19/858491/354040.terrain differ diff --git a/public/terrain/19/858491/354041.terrain b/public/terrain/19/858491/354041.terrain new file mode 100644 index 000000000..8027184c5 Binary files /dev/null and b/public/terrain/19/858491/354041.terrain differ diff --git a/public/terrain/19/858491/354042.terrain b/public/terrain/19/858491/354042.terrain new file mode 100644 index 000000000..4dccf7c27 Binary files /dev/null and b/public/terrain/19/858491/354042.terrain differ diff --git a/public/terrain/19/858491/354043.terrain b/public/terrain/19/858491/354043.terrain new file mode 100644 index 000000000..ce1c8e506 Binary files /dev/null and b/public/terrain/19/858491/354043.terrain differ diff --git a/public/terrain/19/858491/354044.terrain b/public/terrain/19/858491/354044.terrain new file mode 100644 index 000000000..8d798489d Binary files /dev/null and b/public/terrain/19/858491/354044.terrain differ diff --git a/public/terrain/19/858491/354045.terrain b/public/terrain/19/858491/354045.terrain new file mode 100644 index 000000000..253ce2e87 Binary files /dev/null and b/public/terrain/19/858491/354045.terrain differ diff --git a/public/terrain/19/858491/354046.terrain b/public/terrain/19/858491/354046.terrain new file mode 100644 index 000000000..fec576015 Binary files /dev/null and b/public/terrain/19/858491/354046.terrain differ diff --git a/public/terrain/19/858491/354047.terrain b/public/terrain/19/858491/354047.terrain new file mode 100644 index 000000000..9d4e00fe9 Binary files /dev/null and b/public/terrain/19/858491/354047.terrain differ diff --git a/public/terrain/19/858491/354048.terrain b/public/terrain/19/858491/354048.terrain new file mode 100644 index 000000000..1959ebb0a Binary files /dev/null and b/public/terrain/19/858491/354048.terrain differ diff --git a/public/terrain/19/858491/354049.terrain b/public/terrain/19/858491/354049.terrain new file mode 100644 index 000000000..ec2e0e9bf Binary files /dev/null and b/public/terrain/19/858491/354049.terrain differ diff --git a/public/terrain/19/858491/354050.terrain b/public/terrain/19/858491/354050.terrain new file mode 100644 index 000000000..f57cd3e80 Binary files /dev/null and b/public/terrain/19/858491/354050.terrain differ diff --git a/public/terrain/19/858491/354051.terrain b/public/terrain/19/858491/354051.terrain new file mode 100644 index 000000000..aa0fb5da1 Binary files /dev/null and b/public/terrain/19/858491/354051.terrain differ diff --git a/public/terrain/19/858491/354052.terrain b/public/terrain/19/858491/354052.terrain new file mode 100644 index 000000000..374d0db49 Binary files /dev/null and b/public/terrain/19/858491/354052.terrain differ diff --git a/public/terrain/19/858491/354053.terrain b/public/terrain/19/858491/354053.terrain new file mode 100644 index 000000000..161cfd77c Binary files /dev/null and b/public/terrain/19/858491/354053.terrain differ diff --git a/public/terrain/19/858491/354054.terrain b/public/terrain/19/858491/354054.terrain new file mode 100644 index 000000000..d5e0abdb0 Binary files /dev/null and b/public/terrain/19/858491/354054.terrain differ diff --git a/public/terrain/19/858491/354055.terrain b/public/terrain/19/858491/354055.terrain new file mode 100644 index 000000000..e0cd5b041 Binary files /dev/null and b/public/terrain/19/858491/354055.terrain differ diff --git a/public/terrain/19/858491/354056.terrain b/public/terrain/19/858491/354056.terrain new file mode 100644 index 000000000..add090cd6 Binary files /dev/null and b/public/terrain/19/858491/354056.terrain differ diff --git a/public/terrain/19/858491/354057.terrain b/public/terrain/19/858491/354057.terrain new file mode 100644 index 000000000..79347a213 Binary files /dev/null and b/public/terrain/19/858491/354057.terrain differ diff --git a/public/terrain/19/858491/354058.terrain b/public/terrain/19/858491/354058.terrain new file mode 100644 index 000000000..f3ec7647f Binary files /dev/null and b/public/terrain/19/858491/354058.terrain differ diff --git a/public/terrain/19/858491/354059.terrain b/public/terrain/19/858491/354059.terrain new file mode 100644 index 000000000..10c5d7403 Binary files /dev/null and b/public/terrain/19/858491/354059.terrain differ diff --git a/public/terrain/19/858492/353743.terrain b/public/terrain/19/858492/353743.terrain new file mode 100644 index 000000000..bec1c626e Binary files /dev/null and b/public/terrain/19/858492/353743.terrain differ diff --git a/public/terrain/19/858492/353744.terrain b/public/terrain/19/858492/353744.terrain new file mode 100644 index 000000000..5792514d5 Binary files /dev/null and b/public/terrain/19/858492/353744.terrain differ diff --git a/public/terrain/19/858492/353745.terrain b/public/terrain/19/858492/353745.terrain new file mode 100644 index 000000000..30c30567c Binary files /dev/null and b/public/terrain/19/858492/353745.terrain differ diff --git a/public/terrain/19/858492/353746.terrain b/public/terrain/19/858492/353746.terrain new file mode 100644 index 000000000..56bd7e7b4 Binary files /dev/null and b/public/terrain/19/858492/353746.terrain differ diff --git a/public/terrain/19/858492/353747.terrain b/public/terrain/19/858492/353747.terrain new file mode 100644 index 000000000..0e70aaf23 Binary files /dev/null and b/public/terrain/19/858492/353747.terrain differ diff --git a/public/terrain/19/858492/353748.terrain b/public/terrain/19/858492/353748.terrain new file mode 100644 index 000000000..19458ca51 Binary files /dev/null and b/public/terrain/19/858492/353748.terrain differ diff --git a/public/terrain/19/858492/353749.terrain b/public/terrain/19/858492/353749.terrain new file mode 100644 index 000000000..d0b8ed12a Binary files /dev/null and b/public/terrain/19/858492/353749.terrain differ diff --git a/public/terrain/19/858492/353750.terrain b/public/terrain/19/858492/353750.terrain new file mode 100644 index 000000000..c805b689e Binary files /dev/null and b/public/terrain/19/858492/353750.terrain differ diff --git a/public/terrain/19/858492/353751.terrain b/public/terrain/19/858492/353751.terrain new file mode 100644 index 000000000..bc52daea3 Binary files /dev/null and b/public/terrain/19/858492/353751.terrain differ diff --git a/public/terrain/19/858492/353752.terrain b/public/terrain/19/858492/353752.terrain new file mode 100644 index 000000000..d21fa5206 Binary files /dev/null and b/public/terrain/19/858492/353752.terrain differ diff --git a/public/terrain/19/858492/353753.terrain b/public/terrain/19/858492/353753.terrain new file mode 100644 index 000000000..3644dc7f2 Binary files /dev/null and b/public/terrain/19/858492/353753.terrain differ diff --git a/public/terrain/19/858492/353754.terrain b/public/terrain/19/858492/353754.terrain new file mode 100644 index 000000000..f72a5fb9f Binary files /dev/null and b/public/terrain/19/858492/353754.terrain differ diff --git a/public/terrain/19/858492/353755.terrain b/public/terrain/19/858492/353755.terrain new file mode 100644 index 000000000..a7078bfc5 Binary files /dev/null and b/public/terrain/19/858492/353755.terrain differ diff --git a/public/terrain/19/858492/353756.terrain b/public/terrain/19/858492/353756.terrain new file mode 100644 index 000000000..b009c28a3 Binary files /dev/null and b/public/terrain/19/858492/353756.terrain differ diff --git a/public/terrain/19/858492/353757.terrain b/public/terrain/19/858492/353757.terrain new file mode 100644 index 000000000..bc9b72101 Binary files /dev/null and b/public/terrain/19/858492/353757.terrain differ diff --git a/public/terrain/19/858492/353758.terrain b/public/terrain/19/858492/353758.terrain new file mode 100644 index 000000000..e3fd8e5c5 Binary files /dev/null and b/public/terrain/19/858492/353758.terrain differ diff --git a/public/terrain/19/858492/353759.terrain b/public/terrain/19/858492/353759.terrain new file mode 100644 index 000000000..82ca1d7bc Binary files /dev/null and b/public/terrain/19/858492/353759.terrain differ diff --git a/public/terrain/19/858492/353760.terrain b/public/terrain/19/858492/353760.terrain new file mode 100644 index 000000000..a2364b617 Binary files /dev/null and b/public/terrain/19/858492/353760.terrain differ diff --git a/public/terrain/19/858492/353761.terrain b/public/terrain/19/858492/353761.terrain new file mode 100644 index 000000000..bc41974d5 Binary files /dev/null and b/public/terrain/19/858492/353761.terrain differ diff --git a/public/terrain/19/858492/353762.terrain b/public/terrain/19/858492/353762.terrain new file mode 100644 index 000000000..ccf07e9c1 Binary files /dev/null and b/public/terrain/19/858492/353762.terrain differ diff --git a/public/terrain/19/858492/353763.terrain b/public/terrain/19/858492/353763.terrain new file mode 100644 index 000000000..442517558 Binary files /dev/null and b/public/terrain/19/858492/353763.terrain differ diff --git a/public/terrain/19/858492/353764.terrain b/public/terrain/19/858492/353764.terrain new file mode 100644 index 000000000..247da650b Binary files /dev/null and b/public/terrain/19/858492/353764.terrain differ diff --git a/public/terrain/19/858492/353765.terrain b/public/terrain/19/858492/353765.terrain new file mode 100644 index 000000000..5456b85aa Binary files /dev/null and b/public/terrain/19/858492/353765.terrain differ diff --git a/public/terrain/19/858492/353766.terrain b/public/terrain/19/858492/353766.terrain new file mode 100644 index 000000000..0d0410aa3 Binary files /dev/null and b/public/terrain/19/858492/353766.terrain differ diff --git a/public/terrain/19/858492/353767.terrain b/public/terrain/19/858492/353767.terrain new file mode 100644 index 000000000..202576a4e Binary files /dev/null and b/public/terrain/19/858492/353767.terrain differ diff --git a/public/terrain/19/858492/353768.terrain b/public/terrain/19/858492/353768.terrain new file mode 100644 index 000000000..6d1ddc5f8 Binary files /dev/null and b/public/terrain/19/858492/353768.terrain differ diff --git a/public/terrain/19/858492/353769.terrain b/public/terrain/19/858492/353769.terrain new file mode 100644 index 000000000..d935fa52e Binary files /dev/null and b/public/terrain/19/858492/353769.terrain differ diff --git a/public/terrain/19/858492/353770.terrain b/public/terrain/19/858492/353770.terrain new file mode 100644 index 000000000..679b2c5ac Binary files /dev/null and b/public/terrain/19/858492/353770.terrain differ diff --git a/public/terrain/19/858492/353771.terrain b/public/terrain/19/858492/353771.terrain new file mode 100644 index 000000000..2a3752854 Binary files /dev/null and b/public/terrain/19/858492/353771.terrain differ diff --git a/public/terrain/19/858492/353772.terrain b/public/terrain/19/858492/353772.terrain new file mode 100644 index 000000000..415fc074e Binary files /dev/null and b/public/terrain/19/858492/353772.terrain differ diff --git a/public/terrain/19/858492/353773.terrain b/public/terrain/19/858492/353773.terrain new file mode 100644 index 000000000..c1a19570f Binary files /dev/null and b/public/terrain/19/858492/353773.terrain differ diff --git a/public/terrain/19/858492/353774.terrain b/public/terrain/19/858492/353774.terrain new file mode 100644 index 000000000..d58f8ac14 Binary files /dev/null and b/public/terrain/19/858492/353774.terrain differ diff --git a/public/terrain/19/858492/353775.terrain b/public/terrain/19/858492/353775.terrain new file mode 100644 index 000000000..fc1778e8a Binary files /dev/null and b/public/terrain/19/858492/353775.terrain differ diff --git a/public/terrain/19/858492/353776.terrain b/public/terrain/19/858492/353776.terrain new file mode 100644 index 000000000..3c8aa8461 Binary files /dev/null and b/public/terrain/19/858492/353776.terrain differ diff --git a/public/terrain/19/858492/353777.terrain b/public/terrain/19/858492/353777.terrain new file mode 100644 index 000000000..8bc971d85 Binary files /dev/null and b/public/terrain/19/858492/353777.terrain differ diff --git a/public/terrain/19/858492/353778.terrain b/public/terrain/19/858492/353778.terrain new file mode 100644 index 000000000..c5e7d4039 Binary files /dev/null and b/public/terrain/19/858492/353778.terrain differ diff --git a/public/terrain/19/858492/353779.terrain b/public/terrain/19/858492/353779.terrain new file mode 100644 index 000000000..fcf301514 Binary files /dev/null and b/public/terrain/19/858492/353779.terrain differ diff --git a/public/terrain/19/858492/353780.terrain b/public/terrain/19/858492/353780.terrain new file mode 100644 index 000000000..60c4e78ba Binary files /dev/null and b/public/terrain/19/858492/353780.terrain differ diff --git a/public/terrain/19/858492/353781.terrain b/public/terrain/19/858492/353781.terrain new file mode 100644 index 000000000..c51df2c2f Binary files /dev/null and b/public/terrain/19/858492/353781.terrain differ diff --git a/public/terrain/19/858492/353782.terrain b/public/terrain/19/858492/353782.terrain new file mode 100644 index 000000000..6dfb4b00d Binary files /dev/null and b/public/terrain/19/858492/353782.terrain differ diff --git a/public/terrain/19/858492/353783.terrain b/public/terrain/19/858492/353783.terrain new file mode 100644 index 000000000..761b64043 Binary files /dev/null and b/public/terrain/19/858492/353783.terrain differ diff --git a/public/terrain/19/858492/353784.terrain b/public/terrain/19/858492/353784.terrain new file mode 100644 index 000000000..2ba946be8 Binary files /dev/null and b/public/terrain/19/858492/353784.terrain differ diff --git a/public/terrain/19/858492/353785.terrain b/public/terrain/19/858492/353785.terrain new file mode 100644 index 000000000..05fb381ac Binary files /dev/null and b/public/terrain/19/858492/353785.terrain differ diff --git a/public/terrain/19/858492/353786.terrain b/public/terrain/19/858492/353786.terrain new file mode 100644 index 000000000..f558c15f2 Binary files /dev/null and b/public/terrain/19/858492/353786.terrain differ diff --git a/public/terrain/19/858492/353787.terrain b/public/terrain/19/858492/353787.terrain new file mode 100644 index 000000000..9229f254c Binary files /dev/null and b/public/terrain/19/858492/353787.terrain differ diff --git a/public/terrain/19/858492/353788.terrain b/public/terrain/19/858492/353788.terrain new file mode 100644 index 000000000..9d899b59e Binary files /dev/null and b/public/terrain/19/858492/353788.terrain differ diff --git a/public/terrain/19/858492/353789.terrain b/public/terrain/19/858492/353789.terrain new file mode 100644 index 000000000..770f498df Binary files /dev/null and b/public/terrain/19/858492/353789.terrain differ diff --git a/public/terrain/19/858492/353790.terrain b/public/terrain/19/858492/353790.terrain new file mode 100644 index 000000000..17050b4dc Binary files /dev/null and b/public/terrain/19/858492/353790.terrain differ diff --git a/public/terrain/19/858492/353791.terrain b/public/terrain/19/858492/353791.terrain new file mode 100644 index 000000000..3bcdab739 Binary files /dev/null and b/public/terrain/19/858492/353791.terrain differ diff --git a/public/terrain/19/858492/353792.terrain b/public/terrain/19/858492/353792.terrain new file mode 100644 index 000000000..a8c3c4593 Binary files /dev/null and b/public/terrain/19/858492/353792.terrain differ diff --git a/public/terrain/19/858492/353793.terrain b/public/terrain/19/858492/353793.terrain new file mode 100644 index 000000000..c2e77ab1d Binary files /dev/null and b/public/terrain/19/858492/353793.terrain differ diff --git a/public/terrain/19/858492/353794.terrain b/public/terrain/19/858492/353794.terrain new file mode 100644 index 000000000..a52a331b7 Binary files /dev/null and b/public/terrain/19/858492/353794.terrain differ diff --git a/public/terrain/19/858492/353795.terrain b/public/terrain/19/858492/353795.terrain new file mode 100644 index 000000000..37e9bd4d4 Binary files /dev/null and b/public/terrain/19/858492/353795.terrain differ diff --git a/public/terrain/19/858492/353796.terrain b/public/terrain/19/858492/353796.terrain new file mode 100644 index 000000000..a66d7b9cf Binary files /dev/null and b/public/terrain/19/858492/353796.terrain differ diff --git a/public/terrain/19/858492/353797.terrain b/public/terrain/19/858492/353797.terrain new file mode 100644 index 000000000..650e36609 Binary files /dev/null and b/public/terrain/19/858492/353797.terrain differ diff --git a/public/terrain/19/858492/353798.terrain b/public/terrain/19/858492/353798.terrain new file mode 100644 index 000000000..09391a51c Binary files /dev/null and b/public/terrain/19/858492/353798.terrain differ diff --git a/public/terrain/19/858492/353799.terrain b/public/terrain/19/858492/353799.terrain new file mode 100644 index 000000000..5b71682f0 Binary files /dev/null and b/public/terrain/19/858492/353799.terrain differ diff --git a/public/terrain/19/858492/353800.terrain b/public/terrain/19/858492/353800.terrain new file mode 100644 index 000000000..0ba1b6274 Binary files /dev/null and b/public/terrain/19/858492/353800.terrain differ diff --git a/public/terrain/19/858492/353801.terrain b/public/terrain/19/858492/353801.terrain new file mode 100644 index 000000000..8c80ba541 Binary files /dev/null and b/public/terrain/19/858492/353801.terrain differ diff --git a/public/terrain/19/858492/353802.terrain b/public/terrain/19/858492/353802.terrain new file mode 100644 index 000000000..38eb2e6f7 Binary files /dev/null and b/public/terrain/19/858492/353802.terrain differ diff --git a/public/terrain/19/858492/353803.terrain b/public/terrain/19/858492/353803.terrain new file mode 100644 index 000000000..6acc2b61e Binary files /dev/null and b/public/terrain/19/858492/353803.terrain differ diff --git a/public/terrain/19/858492/353804.terrain b/public/terrain/19/858492/353804.terrain new file mode 100644 index 000000000..ebe2e7b51 Binary files /dev/null and b/public/terrain/19/858492/353804.terrain differ diff --git a/public/terrain/19/858492/353805.terrain b/public/terrain/19/858492/353805.terrain new file mode 100644 index 000000000..1b2a11646 Binary files /dev/null and b/public/terrain/19/858492/353805.terrain differ diff --git a/public/terrain/19/858492/353806.terrain b/public/terrain/19/858492/353806.terrain new file mode 100644 index 000000000..1cd20b4a6 Binary files /dev/null and b/public/terrain/19/858492/353806.terrain differ diff --git a/public/terrain/19/858492/353807.terrain b/public/terrain/19/858492/353807.terrain new file mode 100644 index 000000000..192a16619 Binary files /dev/null and b/public/terrain/19/858492/353807.terrain differ diff --git a/public/terrain/19/858492/353808.terrain b/public/terrain/19/858492/353808.terrain new file mode 100644 index 000000000..7106e6811 Binary files /dev/null and b/public/terrain/19/858492/353808.terrain differ diff --git a/public/terrain/19/858492/353809.terrain b/public/terrain/19/858492/353809.terrain new file mode 100644 index 000000000..c3e8e8916 Binary files /dev/null and b/public/terrain/19/858492/353809.terrain differ diff --git a/public/terrain/19/858492/353810.terrain b/public/terrain/19/858492/353810.terrain new file mode 100644 index 000000000..e49e08dca Binary files /dev/null and b/public/terrain/19/858492/353810.terrain differ diff --git a/public/terrain/19/858492/353811.terrain b/public/terrain/19/858492/353811.terrain new file mode 100644 index 000000000..ff4ab87dc Binary files /dev/null and b/public/terrain/19/858492/353811.terrain differ diff --git a/public/terrain/19/858492/353812.terrain b/public/terrain/19/858492/353812.terrain new file mode 100644 index 000000000..001ee8257 Binary files /dev/null and b/public/terrain/19/858492/353812.terrain differ diff --git a/public/terrain/19/858492/353813.terrain b/public/terrain/19/858492/353813.terrain new file mode 100644 index 000000000..959605273 Binary files /dev/null and b/public/terrain/19/858492/353813.terrain differ diff --git a/public/terrain/19/858492/353814.terrain b/public/terrain/19/858492/353814.terrain new file mode 100644 index 000000000..bd65faae5 Binary files /dev/null and b/public/terrain/19/858492/353814.terrain differ diff --git a/public/terrain/19/858492/353815.terrain b/public/terrain/19/858492/353815.terrain new file mode 100644 index 000000000..b681fa9ea Binary files /dev/null and b/public/terrain/19/858492/353815.terrain differ diff --git a/public/terrain/19/858492/353816.terrain b/public/terrain/19/858492/353816.terrain new file mode 100644 index 000000000..f8f3d7d61 Binary files /dev/null and b/public/terrain/19/858492/353816.terrain differ diff --git a/public/terrain/19/858492/353817.terrain b/public/terrain/19/858492/353817.terrain new file mode 100644 index 000000000..227b40aa7 Binary files /dev/null and b/public/terrain/19/858492/353817.terrain differ diff --git a/public/terrain/19/858492/353818.terrain b/public/terrain/19/858492/353818.terrain new file mode 100644 index 000000000..927f018ae Binary files /dev/null and b/public/terrain/19/858492/353818.terrain differ diff --git a/public/terrain/19/858492/353819.terrain b/public/terrain/19/858492/353819.terrain new file mode 100644 index 000000000..3a59ce0a9 Binary files /dev/null and b/public/terrain/19/858492/353819.terrain differ diff --git a/public/terrain/19/858492/353820.terrain b/public/terrain/19/858492/353820.terrain new file mode 100644 index 000000000..38f389556 Binary files /dev/null and b/public/terrain/19/858492/353820.terrain differ diff --git a/public/terrain/19/858492/353821.terrain b/public/terrain/19/858492/353821.terrain new file mode 100644 index 000000000..6c9098c7c Binary files /dev/null and b/public/terrain/19/858492/353821.terrain differ diff --git a/public/terrain/19/858492/353822.terrain b/public/terrain/19/858492/353822.terrain new file mode 100644 index 000000000..dabcdc7fc Binary files /dev/null and b/public/terrain/19/858492/353822.terrain differ diff --git a/public/terrain/19/858492/353823.terrain b/public/terrain/19/858492/353823.terrain new file mode 100644 index 000000000..636dbc416 Binary files /dev/null and b/public/terrain/19/858492/353823.terrain differ diff --git a/public/terrain/19/858492/353824.terrain b/public/terrain/19/858492/353824.terrain new file mode 100644 index 000000000..22f6c6468 Binary files /dev/null and b/public/terrain/19/858492/353824.terrain differ diff --git a/public/terrain/19/858492/353825.terrain b/public/terrain/19/858492/353825.terrain new file mode 100644 index 000000000..d4f23289a Binary files /dev/null and b/public/terrain/19/858492/353825.terrain differ diff --git a/public/terrain/19/858492/353826.terrain b/public/terrain/19/858492/353826.terrain new file mode 100644 index 000000000..3ba35ed89 Binary files /dev/null and b/public/terrain/19/858492/353826.terrain differ diff --git a/public/terrain/19/858492/353827.terrain b/public/terrain/19/858492/353827.terrain new file mode 100644 index 000000000..5fe1489b0 Binary files /dev/null and b/public/terrain/19/858492/353827.terrain differ diff --git a/public/terrain/19/858492/353828.terrain b/public/terrain/19/858492/353828.terrain new file mode 100644 index 000000000..8536dfb1c Binary files /dev/null and b/public/terrain/19/858492/353828.terrain differ diff --git a/public/terrain/19/858492/353829.terrain b/public/terrain/19/858492/353829.terrain new file mode 100644 index 000000000..e400ecda3 Binary files /dev/null and b/public/terrain/19/858492/353829.terrain differ diff --git a/public/terrain/19/858492/353830.terrain b/public/terrain/19/858492/353830.terrain new file mode 100644 index 000000000..7c37d88f9 Binary files /dev/null and b/public/terrain/19/858492/353830.terrain differ diff --git a/public/terrain/19/858492/353831.terrain b/public/terrain/19/858492/353831.terrain new file mode 100644 index 000000000..beebafe66 Binary files /dev/null and b/public/terrain/19/858492/353831.terrain differ diff --git a/public/terrain/19/858492/353832.terrain b/public/terrain/19/858492/353832.terrain new file mode 100644 index 000000000..d8293c645 Binary files /dev/null and b/public/terrain/19/858492/353832.terrain differ diff --git a/public/terrain/19/858492/353833.terrain b/public/terrain/19/858492/353833.terrain new file mode 100644 index 000000000..bf8330972 Binary files /dev/null and b/public/terrain/19/858492/353833.terrain differ diff --git a/public/terrain/19/858492/353834.terrain b/public/terrain/19/858492/353834.terrain new file mode 100644 index 000000000..d54ede388 Binary files /dev/null and b/public/terrain/19/858492/353834.terrain differ diff --git a/public/terrain/19/858492/353835.terrain b/public/terrain/19/858492/353835.terrain new file mode 100644 index 000000000..05703a49f Binary files /dev/null and b/public/terrain/19/858492/353835.terrain differ diff --git a/public/terrain/19/858492/353836.terrain b/public/terrain/19/858492/353836.terrain new file mode 100644 index 000000000..f951414e9 Binary files /dev/null and b/public/terrain/19/858492/353836.terrain differ diff --git a/public/terrain/19/858492/353837.terrain b/public/terrain/19/858492/353837.terrain new file mode 100644 index 000000000..d428cb6a0 Binary files /dev/null and b/public/terrain/19/858492/353837.terrain differ diff --git a/public/terrain/19/858492/353838.terrain b/public/terrain/19/858492/353838.terrain new file mode 100644 index 000000000..75964e84c Binary files /dev/null and b/public/terrain/19/858492/353838.terrain differ diff --git a/public/terrain/19/858492/353839.terrain b/public/terrain/19/858492/353839.terrain new file mode 100644 index 000000000..e02403576 Binary files /dev/null and b/public/terrain/19/858492/353839.terrain differ diff --git a/public/terrain/19/858492/353840.terrain b/public/terrain/19/858492/353840.terrain new file mode 100644 index 000000000..6f57441bb Binary files /dev/null and b/public/terrain/19/858492/353840.terrain differ diff --git a/public/terrain/19/858492/353841.terrain b/public/terrain/19/858492/353841.terrain new file mode 100644 index 000000000..3533967ba Binary files /dev/null and b/public/terrain/19/858492/353841.terrain differ diff --git a/public/terrain/19/858492/353842.terrain b/public/terrain/19/858492/353842.terrain new file mode 100644 index 000000000..149a33ed8 Binary files /dev/null and b/public/terrain/19/858492/353842.terrain differ diff --git a/public/terrain/19/858492/353843.terrain b/public/terrain/19/858492/353843.terrain new file mode 100644 index 000000000..db2f60a45 Binary files /dev/null and b/public/terrain/19/858492/353843.terrain differ diff --git a/public/terrain/19/858492/353844.terrain b/public/terrain/19/858492/353844.terrain new file mode 100644 index 000000000..0a3819695 Binary files /dev/null and b/public/terrain/19/858492/353844.terrain differ diff --git a/public/terrain/19/858492/353845.terrain b/public/terrain/19/858492/353845.terrain new file mode 100644 index 000000000..e5acd37e7 Binary files /dev/null and b/public/terrain/19/858492/353845.terrain differ diff --git a/public/terrain/19/858492/353846.terrain b/public/terrain/19/858492/353846.terrain new file mode 100644 index 000000000..0a23d0556 Binary files /dev/null and b/public/terrain/19/858492/353846.terrain differ diff --git a/public/terrain/19/858492/353847.terrain b/public/terrain/19/858492/353847.terrain new file mode 100644 index 000000000..0dae7547b Binary files /dev/null and b/public/terrain/19/858492/353847.terrain differ diff --git a/public/terrain/19/858492/353848.terrain b/public/terrain/19/858492/353848.terrain new file mode 100644 index 000000000..1be76117f Binary files /dev/null and b/public/terrain/19/858492/353848.terrain differ diff --git a/public/terrain/19/858492/353849.terrain b/public/terrain/19/858492/353849.terrain new file mode 100644 index 000000000..38363ef40 Binary files /dev/null and b/public/terrain/19/858492/353849.terrain differ diff --git a/public/terrain/19/858492/353850.terrain b/public/terrain/19/858492/353850.terrain new file mode 100644 index 000000000..13550904c Binary files /dev/null and b/public/terrain/19/858492/353850.terrain differ diff --git a/public/terrain/19/858492/353851.terrain b/public/terrain/19/858492/353851.terrain new file mode 100644 index 000000000..fa6f6b8c2 Binary files /dev/null and b/public/terrain/19/858492/353851.terrain differ diff --git a/public/terrain/19/858492/353852.terrain b/public/terrain/19/858492/353852.terrain new file mode 100644 index 000000000..787bdb42d Binary files /dev/null and b/public/terrain/19/858492/353852.terrain differ diff --git a/public/terrain/19/858492/353853.terrain b/public/terrain/19/858492/353853.terrain new file mode 100644 index 000000000..a779d7ecc Binary files /dev/null and b/public/terrain/19/858492/353853.terrain differ diff --git a/public/terrain/19/858492/353854.terrain b/public/terrain/19/858492/353854.terrain new file mode 100644 index 000000000..ba9bb60a7 Binary files /dev/null and b/public/terrain/19/858492/353854.terrain differ diff --git a/public/terrain/19/858492/353855.terrain b/public/terrain/19/858492/353855.terrain new file mode 100644 index 000000000..4c042b710 Binary files /dev/null and b/public/terrain/19/858492/353855.terrain differ diff --git a/public/terrain/19/858492/353856.terrain b/public/terrain/19/858492/353856.terrain new file mode 100644 index 000000000..ee00fd502 Binary files /dev/null and b/public/terrain/19/858492/353856.terrain differ diff --git a/public/terrain/19/858492/353857.terrain b/public/terrain/19/858492/353857.terrain new file mode 100644 index 000000000..75819d877 Binary files /dev/null and b/public/terrain/19/858492/353857.terrain differ diff --git a/public/terrain/19/858492/353858.terrain b/public/terrain/19/858492/353858.terrain new file mode 100644 index 000000000..cf10aa828 Binary files /dev/null and b/public/terrain/19/858492/353858.terrain differ diff --git a/public/terrain/19/858492/353859.terrain b/public/terrain/19/858492/353859.terrain new file mode 100644 index 000000000..46e795f6d Binary files /dev/null and b/public/terrain/19/858492/353859.terrain differ diff --git a/public/terrain/19/858492/353860.terrain b/public/terrain/19/858492/353860.terrain new file mode 100644 index 000000000..317dcbf68 Binary files /dev/null and b/public/terrain/19/858492/353860.terrain differ diff --git a/public/terrain/19/858492/353861.terrain b/public/terrain/19/858492/353861.terrain new file mode 100644 index 000000000..2b4097df3 Binary files /dev/null and b/public/terrain/19/858492/353861.terrain differ diff --git a/public/terrain/19/858492/353862.terrain b/public/terrain/19/858492/353862.terrain new file mode 100644 index 000000000..f715a52ca Binary files /dev/null and b/public/terrain/19/858492/353862.terrain differ diff --git a/public/terrain/19/858492/353863.terrain b/public/terrain/19/858492/353863.terrain new file mode 100644 index 000000000..cea66a0b6 Binary files /dev/null and b/public/terrain/19/858492/353863.terrain differ diff --git a/public/terrain/19/858492/353864.terrain b/public/terrain/19/858492/353864.terrain new file mode 100644 index 000000000..102afef07 Binary files /dev/null and b/public/terrain/19/858492/353864.terrain differ diff --git a/public/terrain/19/858492/353865.terrain b/public/terrain/19/858492/353865.terrain new file mode 100644 index 000000000..b1af57c49 Binary files /dev/null and b/public/terrain/19/858492/353865.terrain differ diff --git a/public/terrain/19/858492/353866.terrain b/public/terrain/19/858492/353866.terrain new file mode 100644 index 000000000..316e7f9d4 Binary files /dev/null and b/public/terrain/19/858492/353866.terrain differ diff --git a/public/terrain/19/858492/353867.terrain b/public/terrain/19/858492/353867.terrain new file mode 100644 index 000000000..587e91bfb Binary files /dev/null and b/public/terrain/19/858492/353867.terrain differ diff --git a/public/terrain/19/858492/353868.terrain b/public/terrain/19/858492/353868.terrain new file mode 100644 index 000000000..9d2bad1ce Binary files /dev/null and b/public/terrain/19/858492/353868.terrain differ diff --git a/public/terrain/19/858492/353869.terrain b/public/terrain/19/858492/353869.terrain new file mode 100644 index 000000000..283dc3a02 Binary files /dev/null and b/public/terrain/19/858492/353869.terrain differ diff --git a/public/terrain/19/858492/353870.terrain b/public/terrain/19/858492/353870.terrain new file mode 100644 index 000000000..892334764 Binary files /dev/null and b/public/terrain/19/858492/353870.terrain differ diff --git a/public/terrain/19/858492/353871.terrain b/public/terrain/19/858492/353871.terrain new file mode 100644 index 000000000..47fb6888e Binary files /dev/null and b/public/terrain/19/858492/353871.terrain differ diff --git a/public/terrain/19/858492/353872.terrain b/public/terrain/19/858492/353872.terrain new file mode 100644 index 000000000..d25b210cc Binary files /dev/null and b/public/terrain/19/858492/353872.terrain differ diff --git a/public/terrain/19/858492/353873.terrain b/public/terrain/19/858492/353873.terrain new file mode 100644 index 000000000..813536e7a Binary files /dev/null and b/public/terrain/19/858492/353873.terrain differ diff --git a/public/terrain/19/858492/353874.terrain b/public/terrain/19/858492/353874.terrain new file mode 100644 index 000000000..136d8995a Binary files /dev/null and b/public/terrain/19/858492/353874.terrain differ diff --git a/public/terrain/19/858492/353875.terrain b/public/terrain/19/858492/353875.terrain new file mode 100644 index 000000000..311090f9f Binary files /dev/null and b/public/terrain/19/858492/353875.terrain differ diff --git a/public/terrain/19/858492/353876.terrain b/public/terrain/19/858492/353876.terrain new file mode 100644 index 000000000..9d889dc01 Binary files /dev/null and b/public/terrain/19/858492/353876.terrain differ diff --git a/public/terrain/19/858492/353877.terrain b/public/terrain/19/858492/353877.terrain new file mode 100644 index 000000000..a4f026cb6 Binary files /dev/null and b/public/terrain/19/858492/353877.terrain differ diff --git a/public/terrain/19/858492/353878.terrain b/public/terrain/19/858492/353878.terrain new file mode 100644 index 000000000..1a9a51707 Binary files /dev/null and b/public/terrain/19/858492/353878.terrain differ diff --git a/public/terrain/19/858492/353879.terrain b/public/terrain/19/858492/353879.terrain new file mode 100644 index 000000000..781ce4dc9 Binary files /dev/null and b/public/terrain/19/858492/353879.terrain differ diff --git a/public/terrain/19/858492/353880.terrain b/public/terrain/19/858492/353880.terrain new file mode 100644 index 000000000..c6595bda8 Binary files /dev/null and b/public/terrain/19/858492/353880.terrain differ diff --git a/public/terrain/19/858492/353881.terrain b/public/terrain/19/858492/353881.terrain new file mode 100644 index 000000000..f5e437b28 Binary files /dev/null and b/public/terrain/19/858492/353881.terrain differ diff --git a/public/terrain/19/858492/353882.terrain b/public/terrain/19/858492/353882.terrain new file mode 100644 index 000000000..b04b3949f Binary files /dev/null and b/public/terrain/19/858492/353882.terrain differ diff --git a/public/terrain/19/858492/353883.terrain b/public/terrain/19/858492/353883.terrain new file mode 100644 index 000000000..80ad734ba Binary files /dev/null and b/public/terrain/19/858492/353883.terrain differ diff --git a/public/terrain/19/858492/353884.terrain b/public/terrain/19/858492/353884.terrain new file mode 100644 index 000000000..662744bcc Binary files /dev/null and b/public/terrain/19/858492/353884.terrain differ diff --git a/public/terrain/19/858492/353885.terrain b/public/terrain/19/858492/353885.terrain new file mode 100644 index 000000000..782be0456 Binary files /dev/null and b/public/terrain/19/858492/353885.terrain differ diff --git a/public/terrain/19/858492/353886.terrain b/public/terrain/19/858492/353886.terrain new file mode 100644 index 000000000..b74df8b92 Binary files /dev/null and b/public/terrain/19/858492/353886.terrain differ diff --git a/public/terrain/19/858492/353887.terrain b/public/terrain/19/858492/353887.terrain new file mode 100644 index 000000000..061cda835 Binary files /dev/null and b/public/terrain/19/858492/353887.terrain differ diff --git a/public/terrain/19/858492/353888.terrain b/public/terrain/19/858492/353888.terrain new file mode 100644 index 000000000..56ab4adc0 Binary files /dev/null and b/public/terrain/19/858492/353888.terrain differ diff --git a/public/terrain/19/858492/353889.terrain b/public/terrain/19/858492/353889.terrain new file mode 100644 index 000000000..c3caf3ea8 Binary files /dev/null and b/public/terrain/19/858492/353889.terrain differ diff --git a/public/terrain/19/858492/353890.terrain b/public/terrain/19/858492/353890.terrain new file mode 100644 index 000000000..f38056d9f Binary files /dev/null and b/public/terrain/19/858492/353890.terrain differ diff --git a/public/terrain/19/858492/353891.terrain b/public/terrain/19/858492/353891.terrain new file mode 100644 index 000000000..0f41fd17f Binary files /dev/null and b/public/terrain/19/858492/353891.terrain differ diff --git a/public/terrain/19/858492/353892.terrain b/public/terrain/19/858492/353892.terrain new file mode 100644 index 000000000..497b93a9a Binary files /dev/null and b/public/terrain/19/858492/353892.terrain differ diff --git a/public/terrain/19/858492/353893.terrain b/public/terrain/19/858492/353893.terrain new file mode 100644 index 000000000..5131c6b0a Binary files /dev/null and b/public/terrain/19/858492/353893.terrain differ diff --git a/public/terrain/19/858492/353894.terrain b/public/terrain/19/858492/353894.terrain new file mode 100644 index 000000000..5a7d0b7ac Binary files /dev/null and b/public/terrain/19/858492/353894.terrain differ diff --git a/public/terrain/19/858492/353895.terrain b/public/terrain/19/858492/353895.terrain new file mode 100644 index 000000000..8161d8108 Binary files /dev/null and b/public/terrain/19/858492/353895.terrain differ diff --git a/public/terrain/19/858492/353896.terrain b/public/terrain/19/858492/353896.terrain new file mode 100644 index 000000000..5345250c2 Binary files /dev/null and b/public/terrain/19/858492/353896.terrain differ diff --git a/public/terrain/19/858492/353897.terrain b/public/terrain/19/858492/353897.terrain new file mode 100644 index 000000000..a40982dd9 Binary files /dev/null and b/public/terrain/19/858492/353897.terrain differ diff --git a/public/terrain/19/858492/353898.terrain b/public/terrain/19/858492/353898.terrain new file mode 100644 index 000000000..92ba5b5ae Binary files /dev/null and b/public/terrain/19/858492/353898.terrain differ diff --git a/public/terrain/19/858492/353899.terrain b/public/terrain/19/858492/353899.terrain new file mode 100644 index 000000000..40ef159cd Binary files /dev/null and b/public/terrain/19/858492/353899.terrain differ diff --git a/public/terrain/19/858492/353900.terrain b/public/terrain/19/858492/353900.terrain new file mode 100644 index 000000000..d9718f652 Binary files /dev/null and b/public/terrain/19/858492/353900.terrain differ diff --git a/public/terrain/19/858492/353901.terrain b/public/terrain/19/858492/353901.terrain new file mode 100644 index 000000000..a45e2826f Binary files /dev/null and b/public/terrain/19/858492/353901.terrain differ diff --git a/public/terrain/19/858492/353902.terrain b/public/terrain/19/858492/353902.terrain new file mode 100644 index 000000000..4f9cae1ba Binary files /dev/null and b/public/terrain/19/858492/353902.terrain differ diff --git a/public/terrain/19/858492/353903.terrain b/public/terrain/19/858492/353903.terrain new file mode 100644 index 000000000..a97578cd1 Binary files /dev/null and b/public/terrain/19/858492/353903.terrain differ diff --git a/public/terrain/19/858492/353904.terrain b/public/terrain/19/858492/353904.terrain new file mode 100644 index 000000000..6e5d05d55 Binary files /dev/null and b/public/terrain/19/858492/353904.terrain differ diff --git a/public/terrain/19/858492/353905.terrain b/public/terrain/19/858492/353905.terrain new file mode 100644 index 000000000..92b63fea1 Binary files /dev/null and b/public/terrain/19/858492/353905.terrain differ diff --git a/public/terrain/19/858492/353906.terrain b/public/terrain/19/858492/353906.terrain new file mode 100644 index 000000000..46b42879c Binary files /dev/null and b/public/terrain/19/858492/353906.terrain differ diff --git a/public/terrain/19/858492/353907.terrain b/public/terrain/19/858492/353907.terrain new file mode 100644 index 000000000..13c3739b9 Binary files /dev/null and b/public/terrain/19/858492/353907.terrain differ diff --git a/public/terrain/19/858492/353908.terrain b/public/terrain/19/858492/353908.terrain new file mode 100644 index 000000000..514dd8afe Binary files /dev/null and b/public/terrain/19/858492/353908.terrain differ diff --git a/public/terrain/19/858492/353909.terrain b/public/terrain/19/858492/353909.terrain new file mode 100644 index 000000000..477325423 Binary files /dev/null and b/public/terrain/19/858492/353909.terrain differ diff --git a/public/terrain/19/858492/353910.terrain b/public/terrain/19/858492/353910.terrain new file mode 100644 index 000000000..e53bd0a3a Binary files /dev/null and b/public/terrain/19/858492/353910.terrain differ diff --git a/public/terrain/19/858492/353911.terrain b/public/terrain/19/858492/353911.terrain new file mode 100644 index 000000000..5fb2ba537 Binary files /dev/null and b/public/terrain/19/858492/353911.terrain differ diff --git a/public/terrain/19/858492/353912.terrain b/public/terrain/19/858492/353912.terrain new file mode 100644 index 000000000..0fd1cb7e0 Binary files /dev/null and b/public/terrain/19/858492/353912.terrain differ diff --git a/public/terrain/19/858492/353913.terrain b/public/terrain/19/858492/353913.terrain new file mode 100644 index 000000000..464efe20f Binary files /dev/null and b/public/terrain/19/858492/353913.terrain differ diff --git a/public/terrain/19/858492/353914.terrain b/public/terrain/19/858492/353914.terrain new file mode 100644 index 000000000..8aeb47f5d Binary files /dev/null and b/public/terrain/19/858492/353914.terrain differ diff --git a/public/terrain/19/858492/353915.terrain b/public/terrain/19/858492/353915.terrain new file mode 100644 index 000000000..0fd75e974 Binary files /dev/null and b/public/terrain/19/858492/353915.terrain differ diff --git a/public/terrain/19/858492/353916.terrain b/public/terrain/19/858492/353916.terrain new file mode 100644 index 000000000..b9467d0f7 Binary files /dev/null and b/public/terrain/19/858492/353916.terrain differ diff --git a/public/terrain/19/858492/353917.terrain b/public/terrain/19/858492/353917.terrain new file mode 100644 index 000000000..abbad397c Binary files /dev/null and b/public/terrain/19/858492/353917.terrain differ diff --git a/public/terrain/19/858492/353918.terrain b/public/terrain/19/858492/353918.terrain new file mode 100644 index 000000000..47158f09f Binary files /dev/null and b/public/terrain/19/858492/353918.terrain differ diff --git a/public/terrain/19/858492/353919.terrain b/public/terrain/19/858492/353919.terrain new file mode 100644 index 000000000..fda19377d Binary files /dev/null and b/public/terrain/19/858492/353919.terrain differ diff --git a/public/terrain/19/858492/353920.terrain b/public/terrain/19/858492/353920.terrain new file mode 100644 index 000000000..6392ce4dc Binary files /dev/null and b/public/terrain/19/858492/353920.terrain differ diff --git a/public/terrain/19/858492/353921.terrain b/public/terrain/19/858492/353921.terrain new file mode 100644 index 000000000..2c58fe6c5 Binary files /dev/null and b/public/terrain/19/858492/353921.terrain differ diff --git a/public/terrain/19/858492/353922.terrain b/public/terrain/19/858492/353922.terrain new file mode 100644 index 000000000..3747490da Binary files /dev/null and b/public/terrain/19/858492/353922.terrain differ diff --git a/public/terrain/19/858492/353923.terrain b/public/terrain/19/858492/353923.terrain new file mode 100644 index 000000000..2e2403e60 Binary files /dev/null and b/public/terrain/19/858492/353923.terrain differ diff --git a/public/terrain/19/858492/353924.terrain b/public/terrain/19/858492/353924.terrain new file mode 100644 index 000000000..2b8763bf1 Binary files /dev/null and b/public/terrain/19/858492/353924.terrain differ diff --git a/public/terrain/19/858492/353925.terrain b/public/terrain/19/858492/353925.terrain new file mode 100644 index 000000000..e59ec7e57 Binary files /dev/null and b/public/terrain/19/858492/353925.terrain differ diff --git a/public/terrain/19/858492/353926.terrain b/public/terrain/19/858492/353926.terrain new file mode 100644 index 000000000..06b0153b9 Binary files /dev/null and b/public/terrain/19/858492/353926.terrain differ diff --git a/public/terrain/19/858492/353927.terrain b/public/terrain/19/858492/353927.terrain new file mode 100644 index 000000000..4fd01e269 Binary files /dev/null and b/public/terrain/19/858492/353927.terrain differ diff --git a/public/terrain/19/858492/353928.terrain b/public/terrain/19/858492/353928.terrain new file mode 100644 index 000000000..6920795d3 Binary files /dev/null and b/public/terrain/19/858492/353928.terrain differ diff --git a/public/terrain/19/858492/353929.terrain b/public/terrain/19/858492/353929.terrain new file mode 100644 index 000000000..8c0e57699 Binary files /dev/null and b/public/terrain/19/858492/353929.terrain differ diff --git a/public/terrain/19/858492/353930.terrain b/public/terrain/19/858492/353930.terrain new file mode 100644 index 000000000..b433a2508 Binary files /dev/null and b/public/terrain/19/858492/353930.terrain differ diff --git a/public/terrain/19/858492/353931.terrain b/public/terrain/19/858492/353931.terrain new file mode 100644 index 000000000..d4ea540f9 Binary files /dev/null and b/public/terrain/19/858492/353931.terrain differ diff --git a/public/terrain/19/858492/353932.terrain b/public/terrain/19/858492/353932.terrain new file mode 100644 index 000000000..e94a7896e Binary files /dev/null and b/public/terrain/19/858492/353932.terrain differ diff --git a/public/terrain/19/858492/353933.terrain b/public/terrain/19/858492/353933.terrain new file mode 100644 index 000000000..601c57f03 Binary files /dev/null and b/public/terrain/19/858492/353933.terrain differ diff --git a/public/terrain/19/858492/353934.terrain b/public/terrain/19/858492/353934.terrain new file mode 100644 index 000000000..8bda251f9 Binary files /dev/null and b/public/terrain/19/858492/353934.terrain differ diff --git a/public/terrain/19/858492/353935.terrain b/public/terrain/19/858492/353935.terrain new file mode 100644 index 000000000..adfa82c49 Binary files /dev/null and b/public/terrain/19/858492/353935.terrain differ diff --git a/public/terrain/19/858492/353936.terrain b/public/terrain/19/858492/353936.terrain new file mode 100644 index 000000000..56a1e0bc0 Binary files /dev/null and b/public/terrain/19/858492/353936.terrain differ diff --git a/public/terrain/19/858492/353937.terrain b/public/terrain/19/858492/353937.terrain new file mode 100644 index 000000000..b06ed475c Binary files /dev/null and b/public/terrain/19/858492/353937.terrain differ diff --git a/public/terrain/19/858492/353938.terrain b/public/terrain/19/858492/353938.terrain new file mode 100644 index 000000000..a455da7a1 Binary files /dev/null and b/public/terrain/19/858492/353938.terrain differ diff --git a/public/terrain/19/858492/353939.terrain b/public/terrain/19/858492/353939.terrain new file mode 100644 index 000000000..6eda0d07b Binary files /dev/null and b/public/terrain/19/858492/353939.terrain differ diff --git a/public/terrain/19/858492/353940.terrain b/public/terrain/19/858492/353940.terrain new file mode 100644 index 000000000..63315bfb2 Binary files /dev/null and b/public/terrain/19/858492/353940.terrain differ diff --git a/public/terrain/19/858492/353941.terrain b/public/terrain/19/858492/353941.terrain new file mode 100644 index 000000000..c05bbd347 Binary files /dev/null and b/public/terrain/19/858492/353941.terrain differ diff --git a/public/terrain/19/858492/353942.terrain b/public/terrain/19/858492/353942.terrain new file mode 100644 index 000000000..49a859291 Binary files /dev/null and b/public/terrain/19/858492/353942.terrain differ diff --git a/public/terrain/19/858492/353943.terrain b/public/terrain/19/858492/353943.terrain new file mode 100644 index 000000000..c9ec8060c Binary files /dev/null and b/public/terrain/19/858492/353943.terrain differ diff --git a/public/terrain/19/858492/353944.terrain b/public/terrain/19/858492/353944.terrain new file mode 100644 index 000000000..43891dfcb Binary files /dev/null and b/public/terrain/19/858492/353944.terrain differ diff --git a/public/terrain/19/858492/353945.terrain b/public/terrain/19/858492/353945.terrain new file mode 100644 index 000000000..b9980a6d7 Binary files /dev/null and b/public/terrain/19/858492/353945.terrain differ diff --git a/public/terrain/19/858492/353946.terrain b/public/terrain/19/858492/353946.terrain new file mode 100644 index 000000000..f7d111d98 Binary files /dev/null and b/public/terrain/19/858492/353946.terrain differ diff --git a/public/terrain/19/858492/353947.terrain b/public/terrain/19/858492/353947.terrain new file mode 100644 index 000000000..08df8031e Binary files /dev/null and b/public/terrain/19/858492/353947.terrain differ diff --git a/public/terrain/19/858492/353948.terrain b/public/terrain/19/858492/353948.terrain new file mode 100644 index 000000000..c89204aad Binary files /dev/null and b/public/terrain/19/858492/353948.terrain differ diff --git a/public/terrain/19/858492/353949.terrain b/public/terrain/19/858492/353949.terrain new file mode 100644 index 000000000..ee5aa009b Binary files /dev/null and b/public/terrain/19/858492/353949.terrain differ diff --git a/public/terrain/19/858492/353950.terrain b/public/terrain/19/858492/353950.terrain new file mode 100644 index 000000000..d0ad2a09e Binary files /dev/null and b/public/terrain/19/858492/353950.terrain differ diff --git a/public/terrain/19/858492/353951.terrain b/public/terrain/19/858492/353951.terrain new file mode 100644 index 000000000..ad23b6d2f Binary files /dev/null and b/public/terrain/19/858492/353951.terrain differ diff --git a/public/terrain/19/858492/353952.terrain b/public/terrain/19/858492/353952.terrain new file mode 100644 index 000000000..f4d5e0f6f Binary files /dev/null and b/public/terrain/19/858492/353952.terrain differ diff --git a/public/terrain/19/858492/353953.terrain b/public/terrain/19/858492/353953.terrain new file mode 100644 index 000000000..d4c4abe29 Binary files /dev/null and b/public/terrain/19/858492/353953.terrain differ diff --git a/public/terrain/19/858492/353954.terrain b/public/terrain/19/858492/353954.terrain new file mode 100644 index 000000000..6cbf03852 Binary files /dev/null and b/public/terrain/19/858492/353954.terrain differ diff --git a/public/terrain/19/858492/353955.terrain b/public/terrain/19/858492/353955.terrain new file mode 100644 index 000000000..0e4386a7d Binary files /dev/null and b/public/terrain/19/858492/353955.terrain differ diff --git a/public/terrain/19/858492/353956.terrain b/public/terrain/19/858492/353956.terrain new file mode 100644 index 000000000..99797b0dc Binary files /dev/null and b/public/terrain/19/858492/353956.terrain differ diff --git a/public/terrain/19/858492/353957.terrain b/public/terrain/19/858492/353957.terrain new file mode 100644 index 000000000..a09b481c0 Binary files /dev/null and b/public/terrain/19/858492/353957.terrain differ diff --git a/public/terrain/19/858492/353958.terrain b/public/terrain/19/858492/353958.terrain new file mode 100644 index 000000000..00964aa9e Binary files /dev/null and b/public/terrain/19/858492/353958.terrain differ diff --git a/public/terrain/19/858492/353959.terrain b/public/terrain/19/858492/353959.terrain new file mode 100644 index 000000000..079bb3f46 Binary files /dev/null and b/public/terrain/19/858492/353959.terrain differ diff --git a/public/terrain/19/858492/353960.terrain b/public/terrain/19/858492/353960.terrain new file mode 100644 index 000000000..cd6b9c7a4 Binary files /dev/null and b/public/terrain/19/858492/353960.terrain differ diff --git a/public/terrain/19/858492/353961.terrain b/public/terrain/19/858492/353961.terrain new file mode 100644 index 000000000..6f13304b5 Binary files /dev/null and b/public/terrain/19/858492/353961.terrain differ diff --git a/public/terrain/19/858492/353962.terrain b/public/terrain/19/858492/353962.terrain new file mode 100644 index 000000000..66c37075c Binary files /dev/null and b/public/terrain/19/858492/353962.terrain differ diff --git a/public/terrain/19/858492/353963.terrain b/public/terrain/19/858492/353963.terrain new file mode 100644 index 000000000..8417c617e Binary files /dev/null and b/public/terrain/19/858492/353963.terrain differ diff --git a/public/terrain/19/858492/353964.terrain b/public/terrain/19/858492/353964.terrain new file mode 100644 index 000000000..2ba22ddb6 Binary files /dev/null and b/public/terrain/19/858492/353964.terrain differ diff --git a/public/terrain/19/858492/353965.terrain b/public/terrain/19/858492/353965.terrain new file mode 100644 index 000000000..8864e723e Binary files /dev/null and b/public/terrain/19/858492/353965.terrain differ diff --git a/public/terrain/19/858492/353966.terrain b/public/terrain/19/858492/353966.terrain new file mode 100644 index 000000000..a78d72ab1 Binary files /dev/null and b/public/terrain/19/858492/353966.terrain differ diff --git a/public/terrain/19/858492/353967.terrain b/public/terrain/19/858492/353967.terrain new file mode 100644 index 000000000..678b8f324 Binary files /dev/null and b/public/terrain/19/858492/353967.terrain differ diff --git a/public/terrain/19/858492/353968.terrain b/public/terrain/19/858492/353968.terrain new file mode 100644 index 000000000..e2c1a29af Binary files /dev/null and b/public/terrain/19/858492/353968.terrain differ diff --git a/public/terrain/19/858492/353969.terrain b/public/terrain/19/858492/353969.terrain new file mode 100644 index 000000000..6f5fe5005 Binary files /dev/null and b/public/terrain/19/858492/353969.terrain differ diff --git a/public/terrain/19/858492/353970.terrain b/public/terrain/19/858492/353970.terrain new file mode 100644 index 000000000..d61e8d6ae Binary files /dev/null and b/public/terrain/19/858492/353970.terrain differ diff --git a/public/terrain/19/858492/353971.terrain b/public/terrain/19/858492/353971.terrain new file mode 100644 index 000000000..d97d009fa Binary files /dev/null and b/public/terrain/19/858492/353971.terrain differ diff --git a/public/terrain/19/858492/353972.terrain b/public/terrain/19/858492/353972.terrain new file mode 100644 index 000000000..aa89d0c1f Binary files /dev/null and b/public/terrain/19/858492/353972.terrain differ diff --git a/public/terrain/19/858492/353973.terrain b/public/terrain/19/858492/353973.terrain new file mode 100644 index 000000000..b0bf169d5 Binary files /dev/null and b/public/terrain/19/858492/353973.terrain differ diff --git a/public/terrain/19/858492/353974.terrain b/public/terrain/19/858492/353974.terrain new file mode 100644 index 000000000..7f97ae6f2 Binary files /dev/null and b/public/terrain/19/858492/353974.terrain differ diff --git a/public/terrain/19/858492/353975.terrain b/public/terrain/19/858492/353975.terrain new file mode 100644 index 000000000..48d25eb67 Binary files /dev/null and b/public/terrain/19/858492/353975.terrain differ diff --git a/public/terrain/19/858492/353976.terrain b/public/terrain/19/858492/353976.terrain new file mode 100644 index 000000000..c796126cb Binary files /dev/null and b/public/terrain/19/858492/353976.terrain differ diff --git a/public/terrain/19/858492/353977.terrain b/public/terrain/19/858492/353977.terrain new file mode 100644 index 000000000..f09b9b3b7 Binary files /dev/null and b/public/terrain/19/858492/353977.terrain differ diff --git a/public/terrain/19/858492/353978.terrain b/public/terrain/19/858492/353978.terrain new file mode 100644 index 000000000..d36aed095 Binary files /dev/null and b/public/terrain/19/858492/353978.terrain differ diff --git a/public/terrain/19/858492/353979.terrain b/public/terrain/19/858492/353979.terrain new file mode 100644 index 000000000..70fcfdc58 Binary files /dev/null and b/public/terrain/19/858492/353979.terrain differ diff --git a/public/terrain/19/858492/353980.terrain b/public/terrain/19/858492/353980.terrain new file mode 100644 index 000000000..d55a9f3a8 Binary files /dev/null and b/public/terrain/19/858492/353980.terrain differ diff --git a/public/terrain/19/858492/353981.terrain b/public/terrain/19/858492/353981.terrain new file mode 100644 index 000000000..75e9404e4 Binary files /dev/null and b/public/terrain/19/858492/353981.terrain differ diff --git a/public/terrain/19/858492/353982.terrain b/public/terrain/19/858492/353982.terrain new file mode 100644 index 000000000..fd48de37d Binary files /dev/null and b/public/terrain/19/858492/353982.terrain differ diff --git a/public/terrain/19/858492/353983.terrain b/public/terrain/19/858492/353983.terrain new file mode 100644 index 000000000..6cdd91bc1 Binary files /dev/null and b/public/terrain/19/858492/353983.terrain differ diff --git a/public/terrain/19/858492/353984.terrain b/public/terrain/19/858492/353984.terrain new file mode 100644 index 000000000..2adf0de2d Binary files /dev/null and b/public/terrain/19/858492/353984.terrain differ diff --git a/public/terrain/19/858492/353985.terrain b/public/terrain/19/858492/353985.terrain new file mode 100644 index 000000000..14b19ad30 Binary files /dev/null and b/public/terrain/19/858492/353985.terrain differ diff --git a/public/terrain/19/858492/353986.terrain b/public/terrain/19/858492/353986.terrain new file mode 100644 index 000000000..b256a6056 Binary files /dev/null and b/public/terrain/19/858492/353986.terrain differ diff --git a/public/terrain/19/858492/353987.terrain b/public/terrain/19/858492/353987.terrain new file mode 100644 index 000000000..3567def7f Binary files /dev/null and b/public/terrain/19/858492/353987.terrain differ diff --git a/public/terrain/19/858492/353988.terrain b/public/terrain/19/858492/353988.terrain new file mode 100644 index 000000000..d3f0999a1 Binary files /dev/null and b/public/terrain/19/858492/353988.terrain differ diff --git a/public/terrain/19/858492/353989.terrain b/public/terrain/19/858492/353989.terrain new file mode 100644 index 000000000..8fb12b8ca Binary files /dev/null and b/public/terrain/19/858492/353989.terrain differ diff --git a/public/terrain/19/858492/353990.terrain b/public/terrain/19/858492/353990.terrain new file mode 100644 index 000000000..e6b514818 Binary files /dev/null and b/public/terrain/19/858492/353990.terrain differ diff --git a/public/terrain/19/858492/353991.terrain b/public/terrain/19/858492/353991.terrain new file mode 100644 index 000000000..ed0f9d304 Binary files /dev/null and b/public/terrain/19/858492/353991.terrain differ diff --git a/public/terrain/19/858492/353992.terrain b/public/terrain/19/858492/353992.terrain new file mode 100644 index 000000000..24ebda035 Binary files /dev/null and b/public/terrain/19/858492/353992.terrain differ diff --git a/public/terrain/19/858492/353993.terrain b/public/terrain/19/858492/353993.terrain new file mode 100644 index 000000000..b274d5b2b Binary files /dev/null and b/public/terrain/19/858492/353993.terrain differ diff --git a/public/terrain/19/858492/353994.terrain b/public/terrain/19/858492/353994.terrain new file mode 100644 index 000000000..10713c05b Binary files /dev/null and b/public/terrain/19/858492/353994.terrain differ diff --git a/public/terrain/19/858492/353995.terrain b/public/terrain/19/858492/353995.terrain new file mode 100644 index 000000000..b84c9651b Binary files /dev/null and b/public/terrain/19/858492/353995.terrain differ diff --git a/public/terrain/19/858492/353996.terrain b/public/terrain/19/858492/353996.terrain new file mode 100644 index 000000000..108dd83dc Binary files /dev/null and b/public/terrain/19/858492/353996.terrain differ diff --git a/public/terrain/19/858492/353997.terrain b/public/terrain/19/858492/353997.terrain new file mode 100644 index 000000000..a72e54acc Binary files /dev/null and b/public/terrain/19/858492/353997.terrain differ diff --git a/public/terrain/19/858492/353998.terrain b/public/terrain/19/858492/353998.terrain new file mode 100644 index 000000000..6de19f5c1 Binary files /dev/null and b/public/terrain/19/858492/353998.terrain differ diff --git a/public/terrain/19/858492/353999.terrain b/public/terrain/19/858492/353999.terrain new file mode 100644 index 000000000..4f6179d96 Binary files /dev/null and b/public/terrain/19/858492/353999.terrain differ diff --git a/public/terrain/19/858492/354000.terrain b/public/terrain/19/858492/354000.terrain new file mode 100644 index 000000000..510b39444 Binary files /dev/null and b/public/terrain/19/858492/354000.terrain differ diff --git a/public/terrain/19/858492/354001.terrain b/public/terrain/19/858492/354001.terrain new file mode 100644 index 000000000..7dc252b8e Binary files /dev/null and b/public/terrain/19/858492/354001.terrain differ diff --git a/public/terrain/19/858492/354002.terrain b/public/terrain/19/858492/354002.terrain new file mode 100644 index 000000000..5ab90baf7 Binary files /dev/null and b/public/terrain/19/858492/354002.terrain differ diff --git a/public/terrain/19/858492/354003.terrain b/public/terrain/19/858492/354003.terrain new file mode 100644 index 000000000..610129f35 Binary files /dev/null and b/public/terrain/19/858492/354003.terrain differ diff --git a/public/terrain/19/858492/354004.terrain b/public/terrain/19/858492/354004.terrain new file mode 100644 index 000000000..56bdf337e Binary files /dev/null and b/public/terrain/19/858492/354004.terrain differ diff --git a/public/terrain/19/858492/354005.terrain b/public/terrain/19/858492/354005.terrain new file mode 100644 index 000000000..e7df980fe Binary files /dev/null and b/public/terrain/19/858492/354005.terrain differ diff --git a/public/terrain/19/858492/354006.terrain b/public/terrain/19/858492/354006.terrain new file mode 100644 index 000000000..95ed771c7 Binary files /dev/null and b/public/terrain/19/858492/354006.terrain differ diff --git a/public/terrain/19/858492/354007.terrain b/public/terrain/19/858492/354007.terrain new file mode 100644 index 000000000..243622d73 Binary files /dev/null and b/public/terrain/19/858492/354007.terrain differ diff --git a/public/terrain/19/858492/354008.terrain b/public/terrain/19/858492/354008.terrain new file mode 100644 index 000000000..ef3ddc49c Binary files /dev/null and b/public/terrain/19/858492/354008.terrain differ diff --git a/public/terrain/19/858492/354009.terrain b/public/terrain/19/858492/354009.terrain new file mode 100644 index 000000000..941cb6586 Binary files /dev/null and b/public/terrain/19/858492/354009.terrain differ diff --git a/public/terrain/19/858492/354010.terrain b/public/terrain/19/858492/354010.terrain new file mode 100644 index 000000000..73d1e4303 Binary files /dev/null and b/public/terrain/19/858492/354010.terrain differ diff --git a/public/terrain/19/858492/354011.terrain b/public/terrain/19/858492/354011.terrain new file mode 100644 index 000000000..cbb55a5b8 Binary files /dev/null and b/public/terrain/19/858492/354011.terrain differ diff --git a/public/terrain/19/858492/354012.terrain b/public/terrain/19/858492/354012.terrain new file mode 100644 index 000000000..14bbc0950 Binary files /dev/null and b/public/terrain/19/858492/354012.terrain differ diff --git a/public/terrain/19/858492/354013.terrain b/public/terrain/19/858492/354013.terrain new file mode 100644 index 000000000..df5cf7bb0 Binary files /dev/null and b/public/terrain/19/858492/354013.terrain differ diff --git a/public/terrain/19/858492/354014.terrain b/public/terrain/19/858492/354014.terrain new file mode 100644 index 000000000..82be34a26 Binary files /dev/null and b/public/terrain/19/858492/354014.terrain differ diff --git a/public/terrain/19/858492/354015.terrain b/public/terrain/19/858492/354015.terrain new file mode 100644 index 000000000..f67b5ba4b Binary files /dev/null and b/public/terrain/19/858492/354015.terrain differ diff --git a/public/terrain/19/858492/354016.terrain b/public/terrain/19/858492/354016.terrain new file mode 100644 index 000000000..37e0fa1fe Binary files /dev/null and b/public/terrain/19/858492/354016.terrain differ diff --git a/public/terrain/19/858492/354017.terrain b/public/terrain/19/858492/354017.terrain new file mode 100644 index 000000000..22a93c169 Binary files /dev/null and b/public/terrain/19/858492/354017.terrain differ diff --git a/public/terrain/19/858492/354018.terrain b/public/terrain/19/858492/354018.terrain new file mode 100644 index 000000000..b5d2aebb7 Binary files /dev/null and b/public/terrain/19/858492/354018.terrain differ diff --git a/public/terrain/19/858492/354019.terrain b/public/terrain/19/858492/354019.terrain new file mode 100644 index 000000000..c94a260f0 Binary files /dev/null and b/public/terrain/19/858492/354019.terrain differ diff --git a/public/terrain/19/858492/354020.terrain b/public/terrain/19/858492/354020.terrain new file mode 100644 index 000000000..15d6546f4 Binary files /dev/null and b/public/terrain/19/858492/354020.terrain differ diff --git a/public/terrain/19/858492/354021.terrain b/public/terrain/19/858492/354021.terrain new file mode 100644 index 000000000..adaa8b4e7 Binary files /dev/null and b/public/terrain/19/858492/354021.terrain differ diff --git a/public/terrain/19/858492/354022.terrain b/public/terrain/19/858492/354022.terrain new file mode 100644 index 000000000..461b676e8 Binary files /dev/null and b/public/terrain/19/858492/354022.terrain differ diff --git a/public/terrain/19/858492/354023.terrain b/public/terrain/19/858492/354023.terrain new file mode 100644 index 000000000..5b91c0c33 Binary files /dev/null and b/public/terrain/19/858492/354023.terrain differ diff --git a/public/terrain/19/858492/354024.terrain b/public/terrain/19/858492/354024.terrain new file mode 100644 index 000000000..d7c2c6d28 Binary files /dev/null and b/public/terrain/19/858492/354024.terrain differ diff --git a/public/terrain/19/858492/354025.terrain b/public/terrain/19/858492/354025.terrain new file mode 100644 index 000000000..58bb3cd73 Binary files /dev/null and b/public/terrain/19/858492/354025.terrain differ diff --git a/public/terrain/19/858492/354026.terrain b/public/terrain/19/858492/354026.terrain new file mode 100644 index 000000000..b5fd679b2 Binary files /dev/null and b/public/terrain/19/858492/354026.terrain differ diff --git a/public/terrain/19/858492/354027.terrain b/public/terrain/19/858492/354027.terrain new file mode 100644 index 000000000..6f6abccba Binary files /dev/null and b/public/terrain/19/858492/354027.terrain differ diff --git a/public/terrain/19/858492/354028.terrain b/public/terrain/19/858492/354028.terrain new file mode 100644 index 000000000..7f6b1641f Binary files /dev/null and b/public/terrain/19/858492/354028.terrain differ diff --git a/public/terrain/19/858492/354029.terrain b/public/terrain/19/858492/354029.terrain new file mode 100644 index 000000000..ab26d7704 Binary files /dev/null and b/public/terrain/19/858492/354029.terrain differ diff --git a/public/terrain/19/858492/354030.terrain b/public/terrain/19/858492/354030.terrain new file mode 100644 index 000000000..a9f9e882f Binary files /dev/null and b/public/terrain/19/858492/354030.terrain differ diff --git a/public/terrain/19/858492/354031.terrain b/public/terrain/19/858492/354031.terrain new file mode 100644 index 000000000..0b78fd6f8 Binary files /dev/null and b/public/terrain/19/858492/354031.terrain differ diff --git a/public/terrain/19/858492/354032.terrain b/public/terrain/19/858492/354032.terrain new file mode 100644 index 000000000..402992fc9 Binary files /dev/null and b/public/terrain/19/858492/354032.terrain differ diff --git a/public/terrain/19/858492/354033.terrain b/public/terrain/19/858492/354033.terrain new file mode 100644 index 000000000..6faa8f914 Binary files /dev/null and b/public/terrain/19/858492/354033.terrain differ diff --git a/public/terrain/19/858492/354034.terrain b/public/terrain/19/858492/354034.terrain new file mode 100644 index 000000000..e45aa6b0b Binary files /dev/null and b/public/terrain/19/858492/354034.terrain differ diff --git a/public/terrain/19/858492/354035.terrain b/public/terrain/19/858492/354035.terrain new file mode 100644 index 000000000..6d07d604c Binary files /dev/null and b/public/terrain/19/858492/354035.terrain differ diff --git a/public/terrain/19/858492/354036.terrain b/public/terrain/19/858492/354036.terrain new file mode 100644 index 000000000..e1d13a030 Binary files /dev/null and b/public/terrain/19/858492/354036.terrain differ diff --git a/public/terrain/19/858492/354037.terrain b/public/terrain/19/858492/354037.terrain new file mode 100644 index 000000000..c4dbd4f7a Binary files /dev/null and b/public/terrain/19/858492/354037.terrain differ diff --git a/public/terrain/19/858492/354038.terrain b/public/terrain/19/858492/354038.terrain new file mode 100644 index 000000000..28da9f122 Binary files /dev/null and b/public/terrain/19/858492/354038.terrain differ diff --git a/public/terrain/19/858492/354039.terrain b/public/terrain/19/858492/354039.terrain new file mode 100644 index 000000000..321f6405d Binary files /dev/null and b/public/terrain/19/858492/354039.terrain differ diff --git a/public/terrain/19/858492/354040.terrain b/public/terrain/19/858492/354040.terrain new file mode 100644 index 000000000..319c24e8b Binary files /dev/null and b/public/terrain/19/858492/354040.terrain differ diff --git a/public/terrain/19/858492/354041.terrain b/public/terrain/19/858492/354041.terrain new file mode 100644 index 000000000..c75510bc4 Binary files /dev/null and b/public/terrain/19/858492/354041.terrain differ diff --git a/public/terrain/19/858492/354042.terrain b/public/terrain/19/858492/354042.terrain new file mode 100644 index 000000000..b914a3ea7 Binary files /dev/null and b/public/terrain/19/858492/354042.terrain differ diff --git a/public/terrain/19/858492/354043.terrain b/public/terrain/19/858492/354043.terrain new file mode 100644 index 000000000..d491ec319 Binary files /dev/null and b/public/terrain/19/858492/354043.terrain differ diff --git a/public/terrain/19/858492/354044.terrain b/public/terrain/19/858492/354044.terrain new file mode 100644 index 000000000..42c940714 Binary files /dev/null and b/public/terrain/19/858492/354044.terrain differ diff --git a/public/terrain/19/858492/354045.terrain b/public/terrain/19/858492/354045.terrain new file mode 100644 index 000000000..6e573b8ed Binary files /dev/null and b/public/terrain/19/858492/354045.terrain differ diff --git a/public/terrain/19/858492/354046.terrain b/public/terrain/19/858492/354046.terrain new file mode 100644 index 000000000..7424dacf4 Binary files /dev/null and b/public/terrain/19/858492/354046.terrain differ diff --git a/public/terrain/19/858492/354047.terrain b/public/terrain/19/858492/354047.terrain new file mode 100644 index 000000000..d3516cd41 Binary files /dev/null and b/public/terrain/19/858492/354047.terrain differ diff --git a/public/terrain/19/858492/354048.terrain b/public/terrain/19/858492/354048.terrain new file mode 100644 index 000000000..453019d59 Binary files /dev/null and b/public/terrain/19/858492/354048.terrain differ diff --git a/public/terrain/19/858492/354049.terrain b/public/terrain/19/858492/354049.terrain new file mode 100644 index 000000000..35d06622f Binary files /dev/null and b/public/terrain/19/858492/354049.terrain differ diff --git a/public/terrain/19/858492/354050.terrain b/public/terrain/19/858492/354050.terrain new file mode 100644 index 000000000..d4d58c066 Binary files /dev/null and b/public/terrain/19/858492/354050.terrain differ diff --git a/public/terrain/19/858492/354051.terrain b/public/terrain/19/858492/354051.terrain new file mode 100644 index 000000000..4fc667f0d Binary files /dev/null and b/public/terrain/19/858492/354051.terrain differ diff --git a/public/terrain/19/858492/354052.terrain b/public/terrain/19/858492/354052.terrain new file mode 100644 index 000000000..1332cd825 Binary files /dev/null and b/public/terrain/19/858492/354052.terrain differ diff --git a/public/terrain/19/858492/354053.terrain b/public/terrain/19/858492/354053.terrain new file mode 100644 index 000000000..ce7aee799 Binary files /dev/null and b/public/terrain/19/858492/354053.terrain differ diff --git a/public/terrain/19/858492/354054.terrain b/public/terrain/19/858492/354054.terrain new file mode 100644 index 000000000..b2ef277fb Binary files /dev/null and b/public/terrain/19/858492/354054.terrain differ diff --git a/public/terrain/19/858492/354055.terrain b/public/terrain/19/858492/354055.terrain new file mode 100644 index 000000000..5f5012252 Binary files /dev/null and b/public/terrain/19/858492/354055.terrain differ diff --git a/public/terrain/19/858492/354056.terrain b/public/terrain/19/858492/354056.terrain new file mode 100644 index 000000000..18ebfc3d8 Binary files /dev/null and b/public/terrain/19/858492/354056.terrain differ diff --git a/public/terrain/19/858492/354057.terrain b/public/terrain/19/858492/354057.terrain new file mode 100644 index 000000000..dc9578cf3 Binary files /dev/null and b/public/terrain/19/858492/354057.terrain differ diff --git a/public/terrain/19/858492/354058.terrain b/public/terrain/19/858492/354058.terrain new file mode 100644 index 000000000..c2361f1fe Binary files /dev/null and b/public/terrain/19/858492/354058.terrain differ diff --git a/public/terrain/19/858492/354059.terrain b/public/terrain/19/858492/354059.terrain new file mode 100644 index 000000000..8785e19b7 Binary files /dev/null and b/public/terrain/19/858492/354059.terrain differ diff --git a/public/terrain/19/858493/353743.terrain b/public/terrain/19/858493/353743.terrain new file mode 100644 index 000000000..cbd7bc6f8 Binary files /dev/null and b/public/terrain/19/858493/353743.terrain differ diff --git a/public/terrain/19/858493/353744.terrain b/public/terrain/19/858493/353744.terrain new file mode 100644 index 000000000..e3bce53fb Binary files /dev/null and b/public/terrain/19/858493/353744.terrain differ diff --git a/public/terrain/19/858493/353745.terrain b/public/terrain/19/858493/353745.terrain new file mode 100644 index 000000000..7f2a1c2e4 Binary files /dev/null and b/public/terrain/19/858493/353745.terrain differ diff --git a/public/terrain/19/858493/353746.terrain b/public/terrain/19/858493/353746.terrain new file mode 100644 index 000000000..504e90bbf Binary files /dev/null and b/public/terrain/19/858493/353746.terrain differ diff --git a/public/terrain/19/858493/353747.terrain b/public/terrain/19/858493/353747.terrain new file mode 100644 index 000000000..c7509f680 Binary files /dev/null and b/public/terrain/19/858493/353747.terrain differ diff --git a/public/terrain/19/858493/353748.terrain b/public/terrain/19/858493/353748.terrain new file mode 100644 index 000000000..f378f8480 Binary files /dev/null and b/public/terrain/19/858493/353748.terrain differ diff --git a/public/terrain/19/858493/353749.terrain b/public/terrain/19/858493/353749.terrain new file mode 100644 index 000000000..e45e05b1d Binary files /dev/null and b/public/terrain/19/858493/353749.terrain differ diff --git a/public/terrain/19/858493/353750.terrain b/public/terrain/19/858493/353750.terrain new file mode 100644 index 000000000..8b6d12f9e Binary files /dev/null and b/public/terrain/19/858493/353750.terrain differ diff --git a/public/terrain/19/858493/353751.terrain b/public/terrain/19/858493/353751.terrain new file mode 100644 index 000000000..631301a12 Binary files /dev/null and b/public/terrain/19/858493/353751.terrain differ diff --git a/public/terrain/19/858493/353752.terrain b/public/terrain/19/858493/353752.terrain new file mode 100644 index 000000000..ebca9db6b Binary files /dev/null and b/public/terrain/19/858493/353752.terrain differ diff --git a/public/terrain/19/858493/353753.terrain b/public/terrain/19/858493/353753.terrain new file mode 100644 index 000000000..308c8f152 Binary files /dev/null and b/public/terrain/19/858493/353753.terrain differ diff --git a/public/terrain/19/858493/353754.terrain b/public/terrain/19/858493/353754.terrain new file mode 100644 index 000000000..7d8b64625 Binary files /dev/null and b/public/terrain/19/858493/353754.terrain differ diff --git a/public/terrain/19/858493/353755.terrain b/public/terrain/19/858493/353755.terrain new file mode 100644 index 000000000..5e4ce9844 Binary files /dev/null and b/public/terrain/19/858493/353755.terrain differ diff --git a/public/terrain/19/858493/353756.terrain b/public/terrain/19/858493/353756.terrain new file mode 100644 index 000000000..93e6b6e75 Binary files /dev/null and b/public/terrain/19/858493/353756.terrain differ diff --git a/public/terrain/19/858493/353757.terrain b/public/terrain/19/858493/353757.terrain new file mode 100644 index 000000000..ef37e65a3 Binary files /dev/null and b/public/terrain/19/858493/353757.terrain differ diff --git a/public/terrain/19/858493/353758.terrain b/public/terrain/19/858493/353758.terrain new file mode 100644 index 000000000..6aeb63030 Binary files /dev/null and b/public/terrain/19/858493/353758.terrain differ diff --git a/public/terrain/19/858493/353759.terrain b/public/terrain/19/858493/353759.terrain new file mode 100644 index 000000000..0f1fa04ce Binary files /dev/null and b/public/terrain/19/858493/353759.terrain differ diff --git a/public/terrain/19/858493/353760.terrain b/public/terrain/19/858493/353760.terrain new file mode 100644 index 000000000..0ef0fff8e Binary files /dev/null and b/public/terrain/19/858493/353760.terrain differ diff --git a/public/terrain/19/858493/353761.terrain b/public/terrain/19/858493/353761.terrain new file mode 100644 index 000000000..7639368e8 Binary files /dev/null and b/public/terrain/19/858493/353761.terrain differ diff --git a/public/terrain/19/858493/353762.terrain b/public/terrain/19/858493/353762.terrain new file mode 100644 index 000000000..71d4657e8 Binary files /dev/null and b/public/terrain/19/858493/353762.terrain differ diff --git a/public/terrain/19/858493/353763.terrain b/public/terrain/19/858493/353763.terrain new file mode 100644 index 000000000..0e314f506 Binary files /dev/null and b/public/terrain/19/858493/353763.terrain differ diff --git a/public/terrain/19/858493/353764.terrain b/public/terrain/19/858493/353764.terrain new file mode 100644 index 000000000..8ebce56e4 Binary files /dev/null and b/public/terrain/19/858493/353764.terrain differ diff --git a/public/terrain/19/858493/353765.terrain b/public/terrain/19/858493/353765.terrain new file mode 100644 index 000000000..aa45f16e6 Binary files /dev/null and b/public/terrain/19/858493/353765.terrain differ diff --git a/public/terrain/19/858493/353766.terrain b/public/terrain/19/858493/353766.terrain new file mode 100644 index 000000000..f04b52555 Binary files /dev/null and b/public/terrain/19/858493/353766.terrain differ diff --git a/public/terrain/19/858493/353767.terrain b/public/terrain/19/858493/353767.terrain new file mode 100644 index 000000000..7f5935fa7 Binary files /dev/null and b/public/terrain/19/858493/353767.terrain differ diff --git a/public/terrain/19/858493/353768.terrain b/public/terrain/19/858493/353768.terrain new file mode 100644 index 000000000..6def0c17c Binary files /dev/null and b/public/terrain/19/858493/353768.terrain differ diff --git a/public/terrain/19/858493/353769.terrain b/public/terrain/19/858493/353769.terrain new file mode 100644 index 000000000..bccec19b3 Binary files /dev/null and b/public/terrain/19/858493/353769.terrain differ diff --git a/public/terrain/19/858493/353770.terrain b/public/terrain/19/858493/353770.terrain new file mode 100644 index 000000000..61b7d81d6 Binary files /dev/null and b/public/terrain/19/858493/353770.terrain differ diff --git a/public/terrain/19/858493/353771.terrain b/public/terrain/19/858493/353771.terrain new file mode 100644 index 000000000..9ad0bc5de Binary files /dev/null and b/public/terrain/19/858493/353771.terrain differ diff --git a/public/terrain/19/858493/353772.terrain b/public/terrain/19/858493/353772.terrain new file mode 100644 index 000000000..6ddc90171 Binary files /dev/null and b/public/terrain/19/858493/353772.terrain differ diff --git a/public/terrain/19/858493/353773.terrain b/public/terrain/19/858493/353773.terrain new file mode 100644 index 000000000..04d61f226 Binary files /dev/null and b/public/terrain/19/858493/353773.terrain differ diff --git a/public/terrain/19/858493/353774.terrain b/public/terrain/19/858493/353774.terrain new file mode 100644 index 000000000..fb1137019 Binary files /dev/null and b/public/terrain/19/858493/353774.terrain differ diff --git a/public/terrain/19/858493/353775.terrain b/public/terrain/19/858493/353775.terrain new file mode 100644 index 000000000..eb625ec10 Binary files /dev/null and b/public/terrain/19/858493/353775.terrain differ diff --git a/public/terrain/19/858493/353776.terrain b/public/terrain/19/858493/353776.terrain new file mode 100644 index 000000000..e4d1bb0d8 Binary files /dev/null and b/public/terrain/19/858493/353776.terrain differ diff --git a/public/terrain/19/858493/353777.terrain b/public/terrain/19/858493/353777.terrain new file mode 100644 index 000000000..e73af5915 Binary files /dev/null and b/public/terrain/19/858493/353777.terrain differ diff --git a/public/terrain/19/858493/353778.terrain b/public/terrain/19/858493/353778.terrain new file mode 100644 index 000000000..cfb652056 Binary files /dev/null and b/public/terrain/19/858493/353778.terrain differ diff --git a/public/terrain/19/858493/353779.terrain b/public/terrain/19/858493/353779.terrain new file mode 100644 index 000000000..27d4bfd75 Binary files /dev/null and b/public/terrain/19/858493/353779.terrain differ diff --git a/public/terrain/19/858493/353780.terrain b/public/terrain/19/858493/353780.terrain new file mode 100644 index 000000000..955113d47 Binary files /dev/null and b/public/terrain/19/858493/353780.terrain differ diff --git a/public/terrain/19/858493/353781.terrain b/public/terrain/19/858493/353781.terrain new file mode 100644 index 000000000..fec33e156 Binary files /dev/null and b/public/terrain/19/858493/353781.terrain differ diff --git a/public/terrain/19/858493/353782.terrain b/public/terrain/19/858493/353782.terrain new file mode 100644 index 000000000..5ad95ec61 Binary files /dev/null and b/public/terrain/19/858493/353782.terrain differ diff --git a/public/terrain/19/858493/353783.terrain b/public/terrain/19/858493/353783.terrain new file mode 100644 index 000000000..9b5b9b318 Binary files /dev/null and b/public/terrain/19/858493/353783.terrain differ diff --git a/public/terrain/19/858493/353784.terrain b/public/terrain/19/858493/353784.terrain new file mode 100644 index 000000000..69ca46507 Binary files /dev/null and b/public/terrain/19/858493/353784.terrain differ diff --git a/public/terrain/19/858493/353785.terrain b/public/terrain/19/858493/353785.terrain new file mode 100644 index 000000000..5d02e8780 Binary files /dev/null and b/public/terrain/19/858493/353785.terrain differ diff --git a/public/terrain/19/858493/353786.terrain b/public/terrain/19/858493/353786.terrain new file mode 100644 index 000000000..40f2358a2 Binary files /dev/null and b/public/terrain/19/858493/353786.terrain differ diff --git a/public/terrain/19/858493/353787.terrain b/public/terrain/19/858493/353787.terrain new file mode 100644 index 000000000..99458cf77 Binary files /dev/null and b/public/terrain/19/858493/353787.terrain differ diff --git a/public/terrain/19/858493/353788.terrain b/public/terrain/19/858493/353788.terrain new file mode 100644 index 000000000..d755eb6c7 Binary files /dev/null and b/public/terrain/19/858493/353788.terrain differ diff --git a/public/terrain/19/858493/353789.terrain b/public/terrain/19/858493/353789.terrain new file mode 100644 index 000000000..139081ea8 Binary files /dev/null and b/public/terrain/19/858493/353789.terrain differ diff --git a/public/terrain/19/858493/353790.terrain b/public/terrain/19/858493/353790.terrain new file mode 100644 index 000000000..ba65f3e32 Binary files /dev/null and b/public/terrain/19/858493/353790.terrain differ diff --git a/public/terrain/19/858493/353791.terrain b/public/terrain/19/858493/353791.terrain new file mode 100644 index 000000000..72b3f3ba0 Binary files /dev/null and b/public/terrain/19/858493/353791.terrain differ diff --git a/public/terrain/19/858493/353792.terrain b/public/terrain/19/858493/353792.terrain new file mode 100644 index 000000000..f30d2ffda Binary files /dev/null and b/public/terrain/19/858493/353792.terrain differ diff --git a/public/terrain/19/858493/353793.terrain b/public/terrain/19/858493/353793.terrain new file mode 100644 index 000000000..b188874ef Binary files /dev/null and b/public/terrain/19/858493/353793.terrain differ diff --git a/public/terrain/19/858493/353794.terrain b/public/terrain/19/858493/353794.terrain new file mode 100644 index 000000000..0f7991623 Binary files /dev/null and b/public/terrain/19/858493/353794.terrain differ diff --git a/public/terrain/19/858493/353795.terrain b/public/terrain/19/858493/353795.terrain new file mode 100644 index 000000000..3f5eac9fe Binary files /dev/null and b/public/terrain/19/858493/353795.terrain differ diff --git a/public/terrain/19/858493/353796.terrain b/public/terrain/19/858493/353796.terrain new file mode 100644 index 000000000..06f79d132 Binary files /dev/null and b/public/terrain/19/858493/353796.terrain differ diff --git a/public/terrain/19/858493/353797.terrain b/public/terrain/19/858493/353797.terrain new file mode 100644 index 000000000..558f816dd Binary files /dev/null and b/public/terrain/19/858493/353797.terrain differ diff --git a/public/terrain/19/858493/353798.terrain b/public/terrain/19/858493/353798.terrain new file mode 100644 index 000000000..436ceae4b Binary files /dev/null and b/public/terrain/19/858493/353798.terrain differ diff --git a/public/terrain/19/858493/353799.terrain b/public/terrain/19/858493/353799.terrain new file mode 100644 index 000000000..639b68dc6 Binary files /dev/null and b/public/terrain/19/858493/353799.terrain differ diff --git a/public/terrain/19/858493/353800.terrain b/public/terrain/19/858493/353800.terrain new file mode 100644 index 000000000..41370d39d Binary files /dev/null and b/public/terrain/19/858493/353800.terrain differ diff --git a/public/terrain/19/858493/353801.terrain b/public/terrain/19/858493/353801.terrain new file mode 100644 index 000000000..bc6e89c58 Binary files /dev/null and b/public/terrain/19/858493/353801.terrain differ diff --git a/public/terrain/19/858493/353802.terrain b/public/terrain/19/858493/353802.terrain new file mode 100644 index 000000000..f82f38a19 Binary files /dev/null and b/public/terrain/19/858493/353802.terrain differ diff --git a/public/terrain/19/858493/353803.terrain b/public/terrain/19/858493/353803.terrain new file mode 100644 index 000000000..8a5125959 Binary files /dev/null and b/public/terrain/19/858493/353803.terrain differ diff --git a/public/terrain/19/858493/353804.terrain b/public/terrain/19/858493/353804.terrain new file mode 100644 index 000000000..3a953a007 Binary files /dev/null and b/public/terrain/19/858493/353804.terrain differ diff --git a/public/terrain/19/858493/353805.terrain b/public/terrain/19/858493/353805.terrain new file mode 100644 index 000000000..abf56da1d Binary files /dev/null and b/public/terrain/19/858493/353805.terrain differ diff --git a/public/terrain/19/858493/353806.terrain b/public/terrain/19/858493/353806.terrain new file mode 100644 index 000000000..e478c6b90 Binary files /dev/null and b/public/terrain/19/858493/353806.terrain differ diff --git a/public/terrain/19/858493/353807.terrain b/public/terrain/19/858493/353807.terrain new file mode 100644 index 000000000..1fc95b5fb Binary files /dev/null and b/public/terrain/19/858493/353807.terrain differ diff --git a/public/terrain/19/858493/353808.terrain b/public/terrain/19/858493/353808.terrain new file mode 100644 index 000000000..3b3e61a42 Binary files /dev/null and b/public/terrain/19/858493/353808.terrain differ diff --git a/public/terrain/19/858493/353809.terrain b/public/terrain/19/858493/353809.terrain new file mode 100644 index 000000000..80e094f38 Binary files /dev/null and b/public/terrain/19/858493/353809.terrain differ diff --git a/public/terrain/19/858493/353810.terrain b/public/terrain/19/858493/353810.terrain new file mode 100644 index 000000000..bc3830e20 Binary files /dev/null and b/public/terrain/19/858493/353810.terrain differ diff --git a/public/terrain/19/858493/353811.terrain b/public/terrain/19/858493/353811.terrain new file mode 100644 index 000000000..af3369354 Binary files /dev/null and b/public/terrain/19/858493/353811.terrain differ diff --git a/public/terrain/19/858493/353812.terrain b/public/terrain/19/858493/353812.terrain new file mode 100644 index 000000000..a3a41d479 Binary files /dev/null and b/public/terrain/19/858493/353812.terrain differ diff --git a/public/terrain/19/858493/353813.terrain b/public/terrain/19/858493/353813.terrain new file mode 100644 index 000000000..1bf98344f Binary files /dev/null and b/public/terrain/19/858493/353813.terrain differ diff --git a/public/terrain/19/858493/353814.terrain b/public/terrain/19/858493/353814.terrain new file mode 100644 index 000000000..4f62bd7b9 Binary files /dev/null and b/public/terrain/19/858493/353814.terrain differ diff --git a/public/terrain/19/858493/353815.terrain b/public/terrain/19/858493/353815.terrain new file mode 100644 index 000000000..e5b47d017 Binary files /dev/null and b/public/terrain/19/858493/353815.terrain differ diff --git a/public/terrain/19/858493/353816.terrain b/public/terrain/19/858493/353816.terrain new file mode 100644 index 000000000..3b092356e Binary files /dev/null and b/public/terrain/19/858493/353816.terrain differ diff --git a/public/terrain/19/858493/353817.terrain b/public/terrain/19/858493/353817.terrain new file mode 100644 index 000000000..e6eed9559 Binary files /dev/null and b/public/terrain/19/858493/353817.terrain differ diff --git a/public/terrain/19/858493/353818.terrain b/public/terrain/19/858493/353818.terrain new file mode 100644 index 000000000..f23042098 Binary files /dev/null and b/public/terrain/19/858493/353818.terrain differ diff --git a/public/terrain/19/858493/353819.terrain b/public/terrain/19/858493/353819.terrain new file mode 100644 index 000000000..7c465afa5 Binary files /dev/null and b/public/terrain/19/858493/353819.terrain differ diff --git a/public/terrain/19/858493/353820.terrain b/public/terrain/19/858493/353820.terrain new file mode 100644 index 000000000..729ab7578 Binary files /dev/null and b/public/terrain/19/858493/353820.terrain differ diff --git a/public/terrain/19/858493/353821.terrain b/public/terrain/19/858493/353821.terrain new file mode 100644 index 000000000..eb716993a Binary files /dev/null and b/public/terrain/19/858493/353821.terrain differ diff --git a/public/terrain/19/858493/353822.terrain b/public/terrain/19/858493/353822.terrain new file mode 100644 index 000000000..dc4c273fb Binary files /dev/null and b/public/terrain/19/858493/353822.terrain differ diff --git a/public/terrain/19/858493/353823.terrain b/public/terrain/19/858493/353823.terrain new file mode 100644 index 000000000..eec06915b Binary files /dev/null and b/public/terrain/19/858493/353823.terrain differ diff --git a/public/terrain/19/858493/353824.terrain b/public/terrain/19/858493/353824.terrain new file mode 100644 index 000000000..3664734a6 Binary files /dev/null and b/public/terrain/19/858493/353824.terrain differ diff --git a/public/terrain/19/858493/353825.terrain b/public/terrain/19/858493/353825.terrain new file mode 100644 index 000000000..8c1f49376 Binary files /dev/null and b/public/terrain/19/858493/353825.terrain differ diff --git a/public/terrain/19/858493/353826.terrain b/public/terrain/19/858493/353826.terrain new file mode 100644 index 000000000..4bf610f6c Binary files /dev/null and b/public/terrain/19/858493/353826.terrain differ diff --git a/public/terrain/19/858493/353827.terrain b/public/terrain/19/858493/353827.terrain new file mode 100644 index 000000000..2c8f98c96 Binary files /dev/null and b/public/terrain/19/858493/353827.terrain differ diff --git a/public/terrain/19/858493/353828.terrain b/public/terrain/19/858493/353828.terrain new file mode 100644 index 000000000..9851d8bdd Binary files /dev/null and b/public/terrain/19/858493/353828.terrain differ diff --git a/public/terrain/19/858493/353829.terrain b/public/terrain/19/858493/353829.terrain new file mode 100644 index 000000000..e31c540a8 Binary files /dev/null and b/public/terrain/19/858493/353829.terrain differ diff --git a/public/terrain/19/858493/353830.terrain b/public/terrain/19/858493/353830.terrain new file mode 100644 index 000000000..e7146802b Binary files /dev/null and b/public/terrain/19/858493/353830.terrain differ diff --git a/public/terrain/19/858493/353831.terrain b/public/terrain/19/858493/353831.terrain new file mode 100644 index 000000000..d416b7045 Binary files /dev/null and b/public/terrain/19/858493/353831.terrain differ diff --git a/public/terrain/19/858493/353832.terrain b/public/terrain/19/858493/353832.terrain new file mode 100644 index 000000000..a2744d26d Binary files /dev/null and b/public/terrain/19/858493/353832.terrain differ diff --git a/public/terrain/19/858493/353833.terrain b/public/terrain/19/858493/353833.terrain new file mode 100644 index 000000000..e3bbd0e77 Binary files /dev/null and b/public/terrain/19/858493/353833.terrain differ diff --git a/public/terrain/19/858493/353834.terrain b/public/terrain/19/858493/353834.terrain new file mode 100644 index 000000000..9134683cc Binary files /dev/null and b/public/terrain/19/858493/353834.terrain differ diff --git a/public/terrain/19/858493/353835.terrain b/public/terrain/19/858493/353835.terrain new file mode 100644 index 000000000..bbe489bed Binary files /dev/null and b/public/terrain/19/858493/353835.terrain differ diff --git a/public/terrain/19/858493/353836.terrain b/public/terrain/19/858493/353836.terrain new file mode 100644 index 000000000..b9e0b9f96 Binary files /dev/null and b/public/terrain/19/858493/353836.terrain differ diff --git a/public/terrain/19/858493/353837.terrain b/public/terrain/19/858493/353837.terrain new file mode 100644 index 000000000..0861fe202 Binary files /dev/null and b/public/terrain/19/858493/353837.terrain differ diff --git a/public/terrain/19/858493/353838.terrain b/public/terrain/19/858493/353838.terrain new file mode 100644 index 000000000..c3cd67c02 Binary files /dev/null and b/public/terrain/19/858493/353838.terrain differ diff --git a/public/terrain/19/858493/353839.terrain b/public/terrain/19/858493/353839.terrain new file mode 100644 index 000000000..ac6b9bed0 Binary files /dev/null and b/public/terrain/19/858493/353839.terrain differ diff --git a/public/terrain/19/858493/353840.terrain b/public/terrain/19/858493/353840.terrain new file mode 100644 index 000000000..5abd62de0 Binary files /dev/null and b/public/terrain/19/858493/353840.terrain differ diff --git a/public/terrain/19/858493/353841.terrain b/public/terrain/19/858493/353841.terrain new file mode 100644 index 000000000..d33226e21 Binary files /dev/null and b/public/terrain/19/858493/353841.terrain differ diff --git a/public/terrain/19/858493/353842.terrain b/public/terrain/19/858493/353842.terrain new file mode 100644 index 000000000..9bdfb7380 Binary files /dev/null and b/public/terrain/19/858493/353842.terrain differ diff --git a/public/terrain/19/858493/353843.terrain b/public/terrain/19/858493/353843.terrain new file mode 100644 index 000000000..32e1cadcd Binary files /dev/null and b/public/terrain/19/858493/353843.terrain differ diff --git a/public/terrain/19/858493/353844.terrain b/public/terrain/19/858493/353844.terrain new file mode 100644 index 000000000..7c1c4f746 Binary files /dev/null and b/public/terrain/19/858493/353844.terrain differ diff --git a/public/terrain/19/858493/353845.terrain b/public/terrain/19/858493/353845.terrain new file mode 100644 index 000000000..0de2e0f09 Binary files /dev/null and b/public/terrain/19/858493/353845.terrain differ diff --git a/public/terrain/19/858493/353846.terrain b/public/terrain/19/858493/353846.terrain new file mode 100644 index 000000000..3df181370 Binary files /dev/null and b/public/terrain/19/858493/353846.terrain differ diff --git a/public/terrain/19/858493/353847.terrain b/public/terrain/19/858493/353847.terrain new file mode 100644 index 000000000..12ee9bc14 Binary files /dev/null and b/public/terrain/19/858493/353847.terrain differ diff --git a/public/terrain/19/858493/353848.terrain b/public/terrain/19/858493/353848.terrain new file mode 100644 index 000000000..825a0ac1f Binary files /dev/null and b/public/terrain/19/858493/353848.terrain differ diff --git a/public/terrain/19/858493/353849.terrain b/public/terrain/19/858493/353849.terrain new file mode 100644 index 000000000..af749a98b Binary files /dev/null and b/public/terrain/19/858493/353849.terrain differ diff --git a/public/terrain/19/858493/353850.terrain b/public/terrain/19/858493/353850.terrain new file mode 100644 index 000000000..b215c8492 Binary files /dev/null and b/public/terrain/19/858493/353850.terrain differ diff --git a/public/terrain/19/858493/353851.terrain b/public/terrain/19/858493/353851.terrain new file mode 100644 index 000000000..dd5124873 Binary files /dev/null and b/public/terrain/19/858493/353851.terrain differ diff --git a/public/terrain/19/858493/353852.terrain b/public/terrain/19/858493/353852.terrain new file mode 100644 index 000000000..610ec4203 Binary files /dev/null and b/public/terrain/19/858493/353852.terrain differ diff --git a/public/terrain/19/858493/353853.terrain b/public/terrain/19/858493/353853.terrain new file mode 100644 index 000000000..96d5d3d4e Binary files /dev/null and b/public/terrain/19/858493/353853.terrain differ diff --git a/public/terrain/19/858493/353854.terrain b/public/terrain/19/858493/353854.terrain new file mode 100644 index 000000000..b3ad38297 Binary files /dev/null and b/public/terrain/19/858493/353854.terrain differ diff --git a/public/terrain/19/858493/353855.terrain b/public/terrain/19/858493/353855.terrain new file mode 100644 index 000000000..a15d63eaf Binary files /dev/null and b/public/terrain/19/858493/353855.terrain differ diff --git a/public/terrain/19/858493/353856.terrain b/public/terrain/19/858493/353856.terrain new file mode 100644 index 000000000..6367e9b09 Binary files /dev/null and b/public/terrain/19/858493/353856.terrain differ diff --git a/public/terrain/19/858493/353857.terrain b/public/terrain/19/858493/353857.terrain new file mode 100644 index 000000000..3a703b496 Binary files /dev/null and b/public/terrain/19/858493/353857.terrain differ diff --git a/public/terrain/19/858493/353858.terrain b/public/terrain/19/858493/353858.terrain new file mode 100644 index 000000000..92a40b117 Binary files /dev/null and b/public/terrain/19/858493/353858.terrain differ diff --git a/public/terrain/19/858493/353859.terrain b/public/terrain/19/858493/353859.terrain new file mode 100644 index 000000000..bdb8f7a5b Binary files /dev/null and b/public/terrain/19/858493/353859.terrain differ diff --git a/public/terrain/19/858493/353860.terrain b/public/terrain/19/858493/353860.terrain new file mode 100644 index 000000000..7ecc46c27 Binary files /dev/null and b/public/terrain/19/858493/353860.terrain differ diff --git a/public/terrain/19/858493/353861.terrain b/public/terrain/19/858493/353861.terrain new file mode 100644 index 000000000..c3161801a Binary files /dev/null and b/public/terrain/19/858493/353861.terrain differ diff --git a/public/terrain/19/858493/353862.terrain b/public/terrain/19/858493/353862.terrain new file mode 100644 index 000000000..96b607ac4 Binary files /dev/null and b/public/terrain/19/858493/353862.terrain differ diff --git a/public/terrain/19/858493/353863.terrain b/public/terrain/19/858493/353863.terrain new file mode 100644 index 000000000..b8ae9f3da Binary files /dev/null and b/public/terrain/19/858493/353863.terrain differ diff --git a/public/terrain/19/858493/353864.terrain b/public/terrain/19/858493/353864.terrain new file mode 100644 index 000000000..f6e435611 Binary files /dev/null and b/public/terrain/19/858493/353864.terrain differ diff --git a/public/terrain/19/858493/353865.terrain b/public/terrain/19/858493/353865.terrain new file mode 100644 index 000000000..72c0d951b Binary files /dev/null and b/public/terrain/19/858493/353865.terrain differ diff --git a/public/terrain/19/858493/353866.terrain b/public/terrain/19/858493/353866.terrain new file mode 100644 index 000000000..206e6fd55 Binary files /dev/null and b/public/terrain/19/858493/353866.terrain differ diff --git a/public/terrain/19/858493/353867.terrain b/public/terrain/19/858493/353867.terrain new file mode 100644 index 000000000..788350745 Binary files /dev/null and b/public/terrain/19/858493/353867.terrain differ diff --git a/public/terrain/19/858493/353868.terrain b/public/terrain/19/858493/353868.terrain new file mode 100644 index 000000000..6cbccedfd Binary files /dev/null and b/public/terrain/19/858493/353868.terrain differ diff --git a/public/terrain/19/858493/353869.terrain b/public/terrain/19/858493/353869.terrain new file mode 100644 index 000000000..560bbb061 Binary files /dev/null and b/public/terrain/19/858493/353869.terrain differ diff --git a/public/terrain/19/858493/353870.terrain b/public/terrain/19/858493/353870.terrain new file mode 100644 index 000000000..67420ee3d Binary files /dev/null and b/public/terrain/19/858493/353870.terrain differ diff --git a/public/terrain/19/858493/353871.terrain b/public/terrain/19/858493/353871.terrain new file mode 100644 index 000000000..0c576a237 Binary files /dev/null and b/public/terrain/19/858493/353871.terrain differ diff --git a/public/terrain/19/858493/353872.terrain b/public/terrain/19/858493/353872.terrain new file mode 100644 index 000000000..95bb2dbbc Binary files /dev/null and b/public/terrain/19/858493/353872.terrain differ diff --git a/public/terrain/19/858493/353873.terrain b/public/terrain/19/858493/353873.terrain new file mode 100644 index 000000000..e043d45e7 Binary files /dev/null and b/public/terrain/19/858493/353873.terrain differ diff --git a/public/terrain/19/858493/353874.terrain b/public/terrain/19/858493/353874.terrain new file mode 100644 index 000000000..70bf165d1 Binary files /dev/null and b/public/terrain/19/858493/353874.terrain differ diff --git a/public/terrain/19/858493/353875.terrain b/public/terrain/19/858493/353875.terrain new file mode 100644 index 000000000..5593c09ac Binary files /dev/null and b/public/terrain/19/858493/353875.terrain differ diff --git a/public/terrain/19/858493/353876.terrain b/public/terrain/19/858493/353876.terrain new file mode 100644 index 000000000..0457fd7d5 Binary files /dev/null and b/public/terrain/19/858493/353876.terrain differ diff --git a/public/terrain/19/858493/353877.terrain b/public/terrain/19/858493/353877.terrain new file mode 100644 index 000000000..7f8021660 Binary files /dev/null and b/public/terrain/19/858493/353877.terrain differ diff --git a/public/terrain/19/858493/353878.terrain b/public/terrain/19/858493/353878.terrain new file mode 100644 index 000000000..1017b15af Binary files /dev/null and b/public/terrain/19/858493/353878.terrain differ diff --git a/public/terrain/19/858493/353879.terrain b/public/terrain/19/858493/353879.terrain new file mode 100644 index 000000000..bbad7ead9 Binary files /dev/null and b/public/terrain/19/858493/353879.terrain differ diff --git a/public/terrain/19/858493/353880.terrain b/public/terrain/19/858493/353880.terrain new file mode 100644 index 000000000..6f1440c41 Binary files /dev/null and b/public/terrain/19/858493/353880.terrain differ diff --git a/public/terrain/19/858493/353881.terrain b/public/terrain/19/858493/353881.terrain new file mode 100644 index 000000000..f6f51da07 Binary files /dev/null and b/public/terrain/19/858493/353881.terrain differ diff --git a/public/terrain/19/858493/353882.terrain b/public/terrain/19/858493/353882.terrain new file mode 100644 index 000000000..bab6b25be Binary files /dev/null and b/public/terrain/19/858493/353882.terrain differ diff --git a/public/terrain/19/858493/353883.terrain b/public/terrain/19/858493/353883.terrain new file mode 100644 index 000000000..2d0c45233 Binary files /dev/null and b/public/terrain/19/858493/353883.terrain differ diff --git a/public/terrain/19/858493/353884.terrain b/public/terrain/19/858493/353884.terrain new file mode 100644 index 000000000..471303e4b Binary files /dev/null and b/public/terrain/19/858493/353884.terrain differ diff --git a/public/terrain/19/858493/353885.terrain b/public/terrain/19/858493/353885.terrain new file mode 100644 index 000000000..588a455d1 Binary files /dev/null and b/public/terrain/19/858493/353885.terrain differ diff --git a/public/terrain/19/858493/353886.terrain b/public/terrain/19/858493/353886.terrain new file mode 100644 index 000000000..c0e639af9 Binary files /dev/null and b/public/terrain/19/858493/353886.terrain differ diff --git a/public/terrain/19/858493/353887.terrain b/public/terrain/19/858493/353887.terrain new file mode 100644 index 000000000..6a4a42f96 Binary files /dev/null and b/public/terrain/19/858493/353887.terrain differ diff --git a/public/terrain/19/858493/353888.terrain b/public/terrain/19/858493/353888.terrain new file mode 100644 index 000000000..41f2338bb Binary files /dev/null and b/public/terrain/19/858493/353888.terrain differ diff --git a/public/terrain/19/858493/353889.terrain b/public/terrain/19/858493/353889.terrain new file mode 100644 index 000000000..a082f9ec3 Binary files /dev/null and b/public/terrain/19/858493/353889.terrain differ diff --git a/public/terrain/19/858493/353890.terrain b/public/terrain/19/858493/353890.terrain new file mode 100644 index 000000000..1aae43e6b Binary files /dev/null and b/public/terrain/19/858493/353890.terrain differ diff --git a/public/terrain/19/858493/353891.terrain b/public/terrain/19/858493/353891.terrain new file mode 100644 index 000000000..8c99bc404 Binary files /dev/null and b/public/terrain/19/858493/353891.terrain differ diff --git a/public/terrain/19/858493/353892.terrain b/public/terrain/19/858493/353892.terrain new file mode 100644 index 000000000..2f77d271d Binary files /dev/null and b/public/terrain/19/858493/353892.terrain differ diff --git a/public/terrain/19/858493/353893.terrain b/public/terrain/19/858493/353893.terrain new file mode 100644 index 000000000..d74546886 Binary files /dev/null and b/public/terrain/19/858493/353893.terrain differ diff --git a/public/terrain/19/858493/353894.terrain b/public/terrain/19/858493/353894.terrain new file mode 100644 index 000000000..8b4e43354 Binary files /dev/null and b/public/terrain/19/858493/353894.terrain differ diff --git a/public/terrain/19/858493/353895.terrain b/public/terrain/19/858493/353895.terrain new file mode 100644 index 000000000..ed3507de7 Binary files /dev/null and b/public/terrain/19/858493/353895.terrain differ diff --git a/public/terrain/19/858493/353896.terrain b/public/terrain/19/858493/353896.terrain new file mode 100644 index 000000000..1c6e53c28 Binary files /dev/null and b/public/terrain/19/858493/353896.terrain differ diff --git a/public/terrain/19/858493/353897.terrain b/public/terrain/19/858493/353897.terrain new file mode 100644 index 000000000..e7b4f570e Binary files /dev/null and b/public/terrain/19/858493/353897.terrain differ diff --git a/public/terrain/19/858493/353898.terrain b/public/terrain/19/858493/353898.terrain new file mode 100644 index 000000000..415dfd8be Binary files /dev/null and b/public/terrain/19/858493/353898.terrain differ diff --git a/public/terrain/19/858493/353899.terrain b/public/terrain/19/858493/353899.terrain new file mode 100644 index 000000000..b6781a409 Binary files /dev/null and b/public/terrain/19/858493/353899.terrain differ diff --git a/public/terrain/19/858493/353900.terrain b/public/terrain/19/858493/353900.terrain new file mode 100644 index 000000000..5ceea4f82 Binary files /dev/null and b/public/terrain/19/858493/353900.terrain differ diff --git a/public/terrain/19/858493/353901.terrain b/public/terrain/19/858493/353901.terrain new file mode 100644 index 000000000..b9dd4d5c0 Binary files /dev/null and b/public/terrain/19/858493/353901.terrain differ diff --git a/public/terrain/19/858493/353902.terrain b/public/terrain/19/858493/353902.terrain new file mode 100644 index 000000000..144f8184f Binary files /dev/null and b/public/terrain/19/858493/353902.terrain differ diff --git a/public/terrain/19/858493/353903.terrain b/public/terrain/19/858493/353903.terrain new file mode 100644 index 000000000..f0f1792cd Binary files /dev/null and b/public/terrain/19/858493/353903.terrain differ diff --git a/public/terrain/19/858493/353904.terrain b/public/terrain/19/858493/353904.terrain new file mode 100644 index 000000000..262bf9b0b Binary files /dev/null and b/public/terrain/19/858493/353904.terrain differ diff --git a/public/terrain/19/858493/353905.terrain b/public/terrain/19/858493/353905.terrain new file mode 100644 index 000000000..cec8900cd Binary files /dev/null and b/public/terrain/19/858493/353905.terrain differ diff --git a/public/terrain/19/858493/353906.terrain b/public/terrain/19/858493/353906.terrain new file mode 100644 index 000000000..d95481b68 Binary files /dev/null and b/public/terrain/19/858493/353906.terrain differ diff --git a/public/terrain/19/858493/353907.terrain b/public/terrain/19/858493/353907.terrain new file mode 100644 index 000000000..5392d071c Binary files /dev/null and b/public/terrain/19/858493/353907.terrain differ diff --git a/public/terrain/19/858493/353908.terrain b/public/terrain/19/858493/353908.terrain new file mode 100644 index 000000000..ef36cbe82 Binary files /dev/null and b/public/terrain/19/858493/353908.terrain differ diff --git a/public/terrain/19/858493/353909.terrain b/public/terrain/19/858493/353909.terrain new file mode 100644 index 000000000..34bd1907b Binary files /dev/null and b/public/terrain/19/858493/353909.terrain differ diff --git a/public/terrain/19/858493/353910.terrain b/public/terrain/19/858493/353910.terrain new file mode 100644 index 000000000..605f3f8bc Binary files /dev/null and b/public/terrain/19/858493/353910.terrain differ diff --git a/public/terrain/19/858493/353911.terrain b/public/terrain/19/858493/353911.terrain new file mode 100644 index 000000000..c50528121 Binary files /dev/null and b/public/terrain/19/858493/353911.terrain differ diff --git a/public/terrain/19/858493/353912.terrain b/public/terrain/19/858493/353912.terrain new file mode 100644 index 000000000..c5b328544 Binary files /dev/null and b/public/terrain/19/858493/353912.terrain differ diff --git a/public/terrain/19/858493/353913.terrain b/public/terrain/19/858493/353913.terrain new file mode 100644 index 000000000..d663391f6 Binary files /dev/null and b/public/terrain/19/858493/353913.terrain differ diff --git a/public/terrain/19/858493/353914.terrain b/public/terrain/19/858493/353914.terrain new file mode 100644 index 000000000..40e83e241 Binary files /dev/null and b/public/terrain/19/858493/353914.terrain differ diff --git a/public/terrain/19/858493/353915.terrain b/public/terrain/19/858493/353915.terrain new file mode 100644 index 000000000..f4318516a Binary files /dev/null and b/public/terrain/19/858493/353915.terrain differ diff --git a/public/terrain/19/858493/353916.terrain b/public/terrain/19/858493/353916.terrain new file mode 100644 index 000000000..a5c43ff44 Binary files /dev/null and b/public/terrain/19/858493/353916.terrain differ diff --git a/public/terrain/19/858493/353917.terrain b/public/terrain/19/858493/353917.terrain new file mode 100644 index 000000000..7730fe446 Binary files /dev/null and b/public/terrain/19/858493/353917.terrain differ diff --git a/public/terrain/19/858493/353918.terrain b/public/terrain/19/858493/353918.terrain new file mode 100644 index 000000000..68a36c7d6 Binary files /dev/null and b/public/terrain/19/858493/353918.terrain differ diff --git a/public/terrain/19/858493/353919.terrain b/public/terrain/19/858493/353919.terrain new file mode 100644 index 000000000..bc13bd49a Binary files /dev/null and b/public/terrain/19/858493/353919.terrain differ diff --git a/public/terrain/19/858493/353920.terrain b/public/terrain/19/858493/353920.terrain new file mode 100644 index 000000000..4abb5e9f7 Binary files /dev/null and b/public/terrain/19/858493/353920.terrain differ diff --git a/public/terrain/19/858493/353921.terrain b/public/terrain/19/858493/353921.terrain new file mode 100644 index 000000000..cf18e77b4 Binary files /dev/null and b/public/terrain/19/858493/353921.terrain differ diff --git a/public/terrain/19/858493/353922.terrain b/public/terrain/19/858493/353922.terrain new file mode 100644 index 000000000..dafa39c38 Binary files /dev/null and b/public/terrain/19/858493/353922.terrain differ diff --git a/public/terrain/19/858493/353923.terrain b/public/terrain/19/858493/353923.terrain new file mode 100644 index 000000000..7f2a16e20 Binary files /dev/null and b/public/terrain/19/858493/353923.terrain differ diff --git a/public/terrain/19/858493/353924.terrain b/public/terrain/19/858493/353924.terrain new file mode 100644 index 000000000..e05395da6 Binary files /dev/null and b/public/terrain/19/858493/353924.terrain differ diff --git a/public/terrain/19/858493/353925.terrain b/public/terrain/19/858493/353925.terrain new file mode 100644 index 000000000..13b1cf893 Binary files /dev/null and b/public/terrain/19/858493/353925.terrain differ diff --git a/public/terrain/19/858493/353926.terrain b/public/terrain/19/858493/353926.terrain new file mode 100644 index 000000000..92b5ac903 Binary files /dev/null and b/public/terrain/19/858493/353926.terrain differ diff --git a/public/terrain/19/858493/353927.terrain b/public/terrain/19/858493/353927.terrain new file mode 100644 index 000000000..de84f7679 Binary files /dev/null and b/public/terrain/19/858493/353927.terrain differ diff --git a/public/terrain/19/858493/353928.terrain b/public/terrain/19/858493/353928.terrain new file mode 100644 index 000000000..3f6c084fc Binary files /dev/null and b/public/terrain/19/858493/353928.terrain differ diff --git a/public/terrain/19/858493/353929.terrain b/public/terrain/19/858493/353929.terrain new file mode 100644 index 000000000..05f365512 Binary files /dev/null and b/public/terrain/19/858493/353929.terrain differ diff --git a/public/terrain/19/858493/353930.terrain b/public/terrain/19/858493/353930.terrain new file mode 100644 index 000000000..0347cc058 Binary files /dev/null and b/public/terrain/19/858493/353930.terrain differ diff --git a/public/terrain/19/858493/353931.terrain b/public/terrain/19/858493/353931.terrain new file mode 100644 index 000000000..22acb10e8 Binary files /dev/null and b/public/terrain/19/858493/353931.terrain differ diff --git a/public/terrain/19/858493/353932.terrain b/public/terrain/19/858493/353932.terrain new file mode 100644 index 000000000..2ab049cda Binary files /dev/null and b/public/terrain/19/858493/353932.terrain differ diff --git a/public/terrain/19/858493/353933.terrain b/public/terrain/19/858493/353933.terrain new file mode 100644 index 000000000..3b8c167f7 Binary files /dev/null and b/public/terrain/19/858493/353933.terrain differ diff --git a/public/terrain/19/858493/353934.terrain b/public/terrain/19/858493/353934.terrain new file mode 100644 index 000000000..651c62648 Binary files /dev/null and b/public/terrain/19/858493/353934.terrain differ diff --git a/public/terrain/19/858493/353935.terrain b/public/terrain/19/858493/353935.terrain new file mode 100644 index 000000000..3b186d37c Binary files /dev/null and b/public/terrain/19/858493/353935.terrain differ diff --git a/public/terrain/19/858493/353936.terrain b/public/terrain/19/858493/353936.terrain new file mode 100644 index 000000000..4f85f23a1 Binary files /dev/null and b/public/terrain/19/858493/353936.terrain differ diff --git a/public/terrain/19/858493/353937.terrain b/public/terrain/19/858493/353937.terrain new file mode 100644 index 000000000..b1cbb2cde Binary files /dev/null and b/public/terrain/19/858493/353937.terrain differ diff --git a/public/terrain/19/858493/353938.terrain b/public/terrain/19/858493/353938.terrain new file mode 100644 index 000000000..6e18e069f Binary files /dev/null and b/public/terrain/19/858493/353938.terrain differ diff --git a/public/terrain/19/858493/353939.terrain b/public/terrain/19/858493/353939.terrain new file mode 100644 index 000000000..17cec295b Binary files /dev/null and b/public/terrain/19/858493/353939.terrain differ diff --git a/public/terrain/19/858493/353940.terrain b/public/terrain/19/858493/353940.terrain new file mode 100644 index 000000000..9dcd949a8 Binary files /dev/null and b/public/terrain/19/858493/353940.terrain differ diff --git a/public/terrain/19/858493/353941.terrain b/public/terrain/19/858493/353941.terrain new file mode 100644 index 000000000..0a6d0dcd5 Binary files /dev/null and b/public/terrain/19/858493/353941.terrain differ diff --git a/public/terrain/19/858493/353942.terrain b/public/terrain/19/858493/353942.terrain new file mode 100644 index 000000000..36d015583 Binary files /dev/null and b/public/terrain/19/858493/353942.terrain differ diff --git a/public/terrain/19/858493/353943.terrain b/public/terrain/19/858493/353943.terrain new file mode 100644 index 000000000..f35dc57a9 Binary files /dev/null and b/public/terrain/19/858493/353943.terrain differ diff --git a/public/terrain/19/858493/353944.terrain b/public/terrain/19/858493/353944.terrain new file mode 100644 index 000000000..406eb9cdf Binary files /dev/null and b/public/terrain/19/858493/353944.terrain differ diff --git a/public/terrain/19/858493/353945.terrain b/public/terrain/19/858493/353945.terrain new file mode 100644 index 000000000..e07450422 Binary files /dev/null and b/public/terrain/19/858493/353945.terrain differ diff --git a/public/terrain/19/858493/353946.terrain b/public/terrain/19/858493/353946.terrain new file mode 100644 index 000000000..e99db36f6 Binary files /dev/null and b/public/terrain/19/858493/353946.terrain differ diff --git a/public/terrain/19/858493/353947.terrain b/public/terrain/19/858493/353947.terrain new file mode 100644 index 000000000..4445bfd6d Binary files /dev/null and b/public/terrain/19/858493/353947.terrain differ diff --git a/public/terrain/19/858493/353948.terrain b/public/terrain/19/858493/353948.terrain new file mode 100644 index 000000000..b0034f919 Binary files /dev/null and b/public/terrain/19/858493/353948.terrain differ diff --git a/public/terrain/19/858493/353949.terrain b/public/terrain/19/858493/353949.terrain new file mode 100644 index 000000000..2c1a6a3ec Binary files /dev/null and b/public/terrain/19/858493/353949.terrain differ diff --git a/public/terrain/19/858493/353950.terrain b/public/terrain/19/858493/353950.terrain new file mode 100644 index 000000000..2fb07d3a3 Binary files /dev/null and b/public/terrain/19/858493/353950.terrain differ diff --git a/public/terrain/19/858493/353951.terrain b/public/terrain/19/858493/353951.terrain new file mode 100644 index 000000000..7f14f6000 Binary files /dev/null and b/public/terrain/19/858493/353951.terrain differ diff --git a/public/terrain/19/858493/353952.terrain b/public/terrain/19/858493/353952.terrain new file mode 100644 index 000000000..29633df56 Binary files /dev/null and b/public/terrain/19/858493/353952.terrain differ diff --git a/public/terrain/19/858493/353953.terrain b/public/terrain/19/858493/353953.terrain new file mode 100644 index 000000000..d56078d32 Binary files /dev/null and b/public/terrain/19/858493/353953.terrain differ diff --git a/public/terrain/19/858493/353954.terrain b/public/terrain/19/858493/353954.terrain new file mode 100644 index 000000000..643048a33 Binary files /dev/null and b/public/terrain/19/858493/353954.terrain differ diff --git a/public/terrain/19/858493/353955.terrain b/public/terrain/19/858493/353955.terrain new file mode 100644 index 000000000..1727d466c Binary files /dev/null and b/public/terrain/19/858493/353955.terrain differ diff --git a/public/terrain/19/858493/353956.terrain b/public/terrain/19/858493/353956.terrain new file mode 100644 index 000000000..df6513dd0 Binary files /dev/null and b/public/terrain/19/858493/353956.terrain differ diff --git a/public/terrain/19/858493/353957.terrain b/public/terrain/19/858493/353957.terrain new file mode 100644 index 000000000..44de5766f Binary files /dev/null and b/public/terrain/19/858493/353957.terrain differ diff --git a/public/terrain/19/858493/353958.terrain b/public/terrain/19/858493/353958.terrain new file mode 100644 index 000000000..3b6a5bc97 Binary files /dev/null and b/public/terrain/19/858493/353958.terrain differ diff --git a/public/terrain/19/858493/353959.terrain b/public/terrain/19/858493/353959.terrain new file mode 100644 index 000000000..eff8b3dbf Binary files /dev/null and b/public/terrain/19/858493/353959.terrain differ diff --git a/public/terrain/19/858493/353960.terrain b/public/terrain/19/858493/353960.terrain new file mode 100644 index 000000000..6626d072f Binary files /dev/null and b/public/terrain/19/858493/353960.terrain differ diff --git a/public/terrain/19/858493/353961.terrain b/public/terrain/19/858493/353961.terrain new file mode 100644 index 000000000..078f1da55 Binary files /dev/null and b/public/terrain/19/858493/353961.terrain differ diff --git a/public/terrain/19/858493/353962.terrain b/public/terrain/19/858493/353962.terrain new file mode 100644 index 000000000..04d92976f Binary files /dev/null and b/public/terrain/19/858493/353962.terrain differ diff --git a/public/terrain/19/858493/353963.terrain b/public/terrain/19/858493/353963.terrain new file mode 100644 index 000000000..c90b036e6 Binary files /dev/null and b/public/terrain/19/858493/353963.terrain differ diff --git a/public/terrain/19/858493/353964.terrain b/public/terrain/19/858493/353964.terrain new file mode 100644 index 000000000..94fb1d36e Binary files /dev/null and b/public/terrain/19/858493/353964.terrain differ diff --git a/public/terrain/19/858493/353965.terrain b/public/terrain/19/858493/353965.terrain new file mode 100644 index 000000000..97efa5f80 Binary files /dev/null and b/public/terrain/19/858493/353965.terrain differ diff --git a/public/terrain/19/858493/353966.terrain b/public/terrain/19/858493/353966.terrain new file mode 100644 index 000000000..41d1207d8 Binary files /dev/null and b/public/terrain/19/858493/353966.terrain differ diff --git a/public/terrain/19/858493/353967.terrain b/public/terrain/19/858493/353967.terrain new file mode 100644 index 000000000..19f40a2b7 Binary files /dev/null and b/public/terrain/19/858493/353967.terrain differ diff --git a/public/terrain/19/858493/353968.terrain b/public/terrain/19/858493/353968.terrain new file mode 100644 index 000000000..47c446ef3 Binary files /dev/null and b/public/terrain/19/858493/353968.terrain differ diff --git a/public/terrain/19/858493/353969.terrain b/public/terrain/19/858493/353969.terrain new file mode 100644 index 000000000..7790e6142 Binary files /dev/null and b/public/terrain/19/858493/353969.terrain differ diff --git a/public/terrain/19/858493/353970.terrain b/public/terrain/19/858493/353970.terrain new file mode 100644 index 000000000..79ef0cf43 Binary files /dev/null and b/public/terrain/19/858493/353970.terrain differ diff --git a/public/terrain/19/858493/353971.terrain b/public/terrain/19/858493/353971.terrain new file mode 100644 index 000000000..528a2cfb3 Binary files /dev/null and b/public/terrain/19/858493/353971.terrain differ diff --git a/public/terrain/19/858493/353972.terrain b/public/terrain/19/858493/353972.terrain new file mode 100644 index 000000000..4f13287b8 Binary files /dev/null and b/public/terrain/19/858493/353972.terrain differ diff --git a/public/terrain/19/858493/353973.terrain b/public/terrain/19/858493/353973.terrain new file mode 100644 index 000000000..c6f618fd7 Binary files /dev/null and b/public/terrain/19/858493/353973.terrain differ diff --git a/public/terrain/19/858493/353974.terrain b/public/terrain/19/858493/353974.terrain new file mode 100644 index 000000000..a1c06cee9 Binary files /dev/null and b/public/terrain/19/858493/353974.terrain differ diff --git a/public/terrain/19/858493/353975.terrain b/public/terrain/19/858493/353975.terrain new file mode 100644 index 000000000..04d929488 Binary files /dev/null and b/public/terrain/19/858493/353975.terrain differ diff --git a/public/terrain/19/858493/353976.terrain b/public/terrain/19/858493/353976.terrain new file mode 100644 index 000000000..993bef533 Binary files /dev/null and b/public/terrain/19/858493/353976.terrain differ diff --git a/public/terrain/19/858493/353977.terrain b/public/terrain/19/858493/353977.terrain new file mode 100644 index 000000000..c403a0a43 Binary files /dev/null and b/public/terrain/19/858493/353977.terrain differ diff --git a/public/terrain/19/858493/353978.terrain b/public/terrain/19/858493/353978.terrain new file mode 100644 index 000000000..2753c9e07 Binary files /dev/null and b/public/terrain/19/858493/353978.terrain differ diff --git a/public/terrain/19/858493/353979.terrain b/public/terrain/19/858493/353979.terrain new file mode 100644 index 000000000..02be874e7 Binary files /dev/null and b/public/terrain/19/858493/353979.terrain differ diff --git a/public/terrain/19/858493/353980.terrain b/public/terrain/19/858493/353980.terrain new file mode 100644 index 000000000..98a039edc Binary files /dev/null and b/public/terrain/19/858493/353980.terrain differ diff --git a/public/terrain/19/858493/353981.terrain b/public/terrain/19/858493/353981.terrain new file mode 100644 index 000000000..390f781ab Binary files /dev/null and b/public/terrain/19/858493/353981.terrain differ diff --git a/public/terrain/19/858493/353982.terrain b/public/terrain/19/858493/353982.terrain new file mode 100644 index 000000000..177ed32f3 Binary files /dev/null and b/public/terrain/19/858493/353982.terrain differ diff --git a/public/terrain/19/858493/353983.terrain b/public/terrain/19/858493/353983.terrain new file mode 100644 index 000000000..d7b961cd5 Binary files /dev/null and b/public/terrain/19/858493/353983.terrain differ diff --git a/public/terrain/19/858493/353984.terrain b/public/terrain/19/858493/353984.terrain new file mode 100644 index 000000000..7bdf763c9 Binary files /dev/null and b/public/terrain/19/858493/353984.terrain differ diff --git a/public/terrain/19/858493/353985.terrain b/public/terrain/19/858493/353985.terrain new file mode 100644 index 000000000..b830b4f83 Binary files /dev/null and b/public/terrain/19/858493/353985.terrain differ diff --git a/public/terrain/19/858493/353986.terrain b/public/terrain/19/858493/353986.terrain new file mode 100644 index 000000000..88d0be025 Binary files /dev/null and b/public/terrain/19/858493/353986.terrain differ diff --git a/public/terrain/19/858493/353987.terrain b/public/terrain/19/858493/353987.terrain new file mode 100644 index 000000000..467da824b Binary files /dev/null and b/public/terrain/19/858493/353987.terrain differ diff --git a/public/terrain/19/858493/353988.terrain b/public/terrain/19/858493/353988.terrain new file mode 100644 index 000000000..bc8764999 Binary files /dev/null and b/public/terrain/19/858493/353988.terrain differ diff --git a/public/terrain/19/858493/353989.terrain b/public/terrain/19/858493/353989.terrain new file mode 100644 index 000000000..00d89c04d Binary files /dev/null and b/public/terrain/19/858493/353989.terrain differ diff --git a/public/terrain/19/858493/353990.terrain b/public/terrain/19/858493/353990.terrain new file mode 100644 index 000000000..0480d3257 Binary files /dev/null and b/public/terrain/19/858493/353990.terrain differ diff --git a/public/terrain/19/858493/353991.terrain b/public/terrain/19/858493/353991.terrain new file mode 100644 index 000000000..63862913b Binary files /dev/null and b/public/terrain/19/858493/353991.terrain differ diff --git a/public/terrain/19/858493/353992.terrain b/public/terrain/19/858493/353992.terrain new file mode 100644 index 000000000..054162587 Binary files /dev/null and b/public/terrain/19/858493/353992.terrain differ diff --git a/public/terrain/19/858493/353993.terrain b/public/terrain/19/858493/353993.terrain new file mode 100644 index 000000000..7e862543e Binary files /dev/null and b/public/terrain/19/858493/353993.terrain differ diff --git a/public/terrain/19/858493/353994.terrain b/public/terrain/19/858493/353994.terrain new file mode 100644 index 000000000..4cf778cd5 Binary files /dev/null and b/public/terrain/19/858493/353994.terrain differ diff --git a/public/terrain/19/858493/353995.terrain b/public/terrain/19/858493/353995.terrain new file mode 100644 index 000000000..785ea226f Binary files /dev/null and b/public/terrain/19/858493/353995.terrain differ diff --git a/public/terrain/19/858493/353996.terrain b/public/terrain/19/858493/353996.terrain new file mode 100644 index 000000000..e52a75dff Binary files /dev/null and b/public/terrain/19/858493/353996.terrain differ diff --git a/public/terrain/19/858493/353997.terrain b/public/terrain/19/858493/353997.terrain new file mode 100644 index 000000000..4a3bcfa66 Binary files /dev/null and b/public/terrain/19/858493/353997.terrain differ diff --git a/public/terrain/19/858493/353998.terrain b/public/terrain/19/858493/353998.terrain new file mode 100644 index 000000000..e17eeac70 Binary files /dev/null and b/public/terrain/19/858493/353998.terrain differ diff --git a/public/terrain/19/858493/353999.terrain b/public/terrain/19/858493/353999.terrain new file mode 100644 index 000000000..d6ac083b1 Binary files /dev/null and b/public/terrain/19/858493/353999.terrain differ diff --git a/public/terrain/19/858493/354000.terrain b/public/terrain/19/858493/354000.terrain new file mode 100644 index 000000000..3fb7e0757 Binary files /dev/null and b/public/terrain/19/858493/354000.terrain differ diff --git a/public/terrain/19/858493/354001.terrain b/public/terrain/19/858493/354001.terrain new file mode 100644 index 000000000..67083ba13 Binary files /dev/null and b/public/terrain/19/858493/354001.terrain differ diff --git a/public/terrain/19/858493/354002.terrain b/public/terrain/19/858493/354002.terrain new file mode 100644 index 000000000..019673784 Binary files /dev/null and b/public/terrain/19/858493/354002.terrain differ diff --git a/public/terrain/19/858493/354003.terrain b/public/terrain/19/858493/354003.terrain new file mode 100644 index 000000000..6f10f38b6 Binary files /dev/null and b/public/terrain/19/858493/354003.terrain differ diff --git a/public/terrain/19/858493/354004.terrain b/public/terrain/19/858493/354004.terrain new file mode 100644 index 000000000..3e11c80a8 Binary files /dev/null and b/public/terrain/19/858493/354004.terrain differ diff --git a/public/terrain/19/858493/354005.terrain b/public/terrain/19/858493/354005.terrain new file mode 100644 index 000000000..e3407277e Binary files /dev/null and b/public/terrain/19/858493/354005.terrain differ diff --git a/public/terrain/19/858493/354006.terrain b/public/terrain/19/858493/354006.terrain new file mode 100644 index 000000000..097ec5e66 Binary files /dev/null and b/public/terrain/19/858493/354006.terrain differ diff --git a/public/terrain/19/858493/354007.terrain b/public/terrain/19/858493/354007.terrain new file mode 100644 index 000000000..59ea288bc Binary files /dev/null and b/public/terrain/19/858493/354007.terrain differ diff --git a/public/terrain/19/858493/354008.terrain b/public/terrain/19/858493/354008.terrain new file mode 100644 index 000000000..cf1b30544 Binary files /dev/null and b/public/terrain/19/858493/354008.terrain differ diff --git a/public/terrain/19/858493/354009.terrain b/public/terrain/19/858493/354009.terrain new file mode 100644 index 000000000..e02fe4d7f Binary files /dev/null and b/public/terrain/19/858493/354009.terrain differ diff --git a/public/terrain/19/858493/354010.terrain b/public/terrain/19/858493/354010.terrain new file mode 100644 index 000000000..b091236eb Binary files /dev/null and b/public/terrain/19/858493/354010.terrain differ diff --git a/public/terrain/19/858493/354011.terrain b/public/terrain/19/858493/354011.terrain new file mode 100644 index 000000000..61edbf77e Binary files /dev/null and b/public/terrain/19/858493/354011.terrain differ diff --git a/public/terrain/19/858493/354012.terrain b/public/terrain/19/858493/354012.terrain new file mode 100644 index 000000000..fded77ca0 Binary files /dev/null and b/public/terrain/19/858493/354012.terrain differ diff --git a/public/terrain/19/858493/354013.terrain b/public/terrain/19/858493/354013.terrain new file mode 100644 index 000000000..2f644a2d4 Binary files /dev/null and b/public/terrain/19/858493/354013.terrain differ diff --git a/public/terrain/19/858493/354014.terrain b/public/terrain/19/858493/354014.terrain new file mode 100644 index 000000000..8301dd157 Binary files /dev/null and b/public/terrain/19/858493/354014.terrain differ diff --git a/public/terrain/19/858493/354015.terrain b/public/terrain/19/858493/354015.terrain new file mode 100644 index 000000000..f35868695 Binary files /dev/null and b/public/terrain/19/858493/354015.terrain differ diff --git a/public/terrain/19/858493/354016.terrain b/public/terrain/19/858493/354016.terrain new file mode 100644 index 000000000..b60437e0c Binary files /dev/null and b/public/terrain/19/858493/354016.terrain differ diff --git a/public/terrain/19/858493/354017.terrain b/public/terrain/19/858493/354017.terrain new file mode 100644 index 000000000..bd50dbaf1 Binary files /dev/null and b/public/terrain/19/858493/354017.terrain differ diff --git a/public/terrain/19/858493/354018.terrain b/public/terrain/19/858493/354018.terrain new file mode 100644 index 000000000..6d0ed5792 Binary files /dev/null and b/public/terrain/19/858493/354018.terrain differ diff --git a/public/terrain/19/858493/354019.terrain b/public/terrain/19/858493/354019.terrain new file mode 100644 index 000000000..71f0c8548 Binary files /dev/null and b/public/terrain/19/858493/354019.terrain differ diff --git a/public/terrain/19/858493/354020.terrain b/public/terrain/19/858493/354020.terrain new file mode 100644 index 000000000..481a8c27d Binary files /dev/null and b/public/terrain/19/858493/354020.terrain differ diff --git a/public/terrain/19/858493/354021.terrain b/public/terrain/19/858493/354021.terrain new file mode 100644 index 000000000..d1044153f Binary files /dev/null and b/public/terrain/19/858493/354021.terrain differ diff --git a/public/terrain/19/858493/354022.terrain b/public/terrain/19/858493/354022.terrain new file mode 100644 index 000000000..faf527c72 Binary files /dev/null and b/public/terrain/19/858493/354022.terrain differ diff --git a/public/terrain/19/858493/354023.terrain b/public/terrain/19/858493/354023.terrain new file mode 100644 index 000000000..41dba8e2a Binary files /dev/null and b/public/terrain/19/858493/354023.terrain differ diff --git a/public/terrain/19/858493/354024.terrain b/public/terrain/19/858493/354024.terrain new file mode 100644 index 000000000..15e0a5acb Binary files /dev/null and b/public/terrain/19/858493/354024.terrain differ diff --git a/public/terrain/19/858493/354025.terrain b/public/terrain/19/858493/354025.terrain new file mode 100644 index 000000000..c79105df0 Binary files /dev/null and b/public/terrain/19/858493/354025.terrain differ diff --git a/public/terrain/19/858493/354026.terrain b/public/terrain/19/858493/354026.terrain new file mode 100644 index 000000000..c69026076 Binary files /dev/null and b/public/terrain/19/858493/354026.terrain differ diff --git a/public/terrain/19/858493/354027.terrain b/public/terrain/19/858493/354027.terrain new file mode 100644 index 000000000..3ff14de04 Binary files /dev/null and b/public/terrain/19/858493/354027.terrain differ diff --git a/public/terrain/19/858493/354028.terrain b/public/terrain/19/858493/354028.terrain new file mode 100644 index 000000000..0c4248897 Binary files /dev/null and b/public/terrain/19/858493/354028.terrain differ diff --git a/public/terrain/19/858493/354029.terrain b/public/terrain/19/858493/354029.terrain new file mode 100644 index 000000000..fdae46c3d Binary files /dev/null and b/public/terrain/19/858493/354029.terrain differ diff --git a/public/terrain/19/858493/354030.terrain b/public/terrain/19/858493/354030.terrain new file mode 100644 index 000000000..aaed5c096 Binary files /dev/null and b/public/terrain/19/858493/354030.terrain differ diff --git a/public/terrain/19/858493/354031.terrain b/public/terrain/19/858493/354031.terrain new file mode 100644 index 000000000..4b376017b Binary files /dev/null and b/public/terrain/19/858493/354031.terrain differ diff --git a/public/terrain/19/858493/354032.terrain b/public/terrain/19/858493/354032.terrain new file mode 100644 index 000000000..be2159dcc Binary files /dev/null and b/public/terrain/19/858493/354032.terrain differ diff --git a/public/terrain/19/858493/354033.terrain b/public/terrain/19/858493/354033.terrain new file mode 100644 index 000000000..2b8025485 Binary files /dev/null and b/public/terrain/19/858493/354033.terrain differ diff --git a/public/terrain/19/858493/354034.terrain b/public/terrain/19/858493/354034.terrain new file mode 100644 index 000000000..ae2cee021 Binary files /dev/null and b/public/terrain/19/858493/354034.terrain differ diff --git a/public/terrain/19/858493/354035.terrain b/public/terrain/19/858493/354035.terrain new file mode 100644 index 000000000..b1ca98f81 Binary files /dev/null and b/public/terrain/19/858493/354035.terrain differ diff --git a/public/terrain/19/858493/354036.terrain b/public/terrain/19/858493/354036.terrain new file mode 100644 index 000000000..794908158 Binary files /dev/null and b/public/terrain/19/858493/354036.terrain differ diff --git a/public/terrain/19/858493/354037.terrain b/public/terrain/19/858493/354037.terrain new file mode 100644 index 000000000..921b45616 Binary files /dev/null and b/public/terrain/19/858493/354037.terrain differ diff --git a/public/terrain/19/858493/354038.terrain b/public/terrain/19/858493/354038.terrain new file mode 100644 index 000000000..3e8ff082e Binary files /dev/null and b/public/terrain/19/858493/354038.terrain differ diff --git a/public/terrain/19/858493/354039.terrain b/public/terrain/19/858493/354039.terrain new file mode 100644 index 000000000..747823ca0 Binary files /dev/null and b/public/terrain/19/858493/354039.terrain differ diff --git a/public/terrain/19/858493/354040.terrain b/public/terrain/19/858493/354040.terrain new file mode 100644 index 000000000..df085deb8 Binary files /dev/null and b/public/terrain/19/858493/354040.terrain differ diff --git a/public/terrain/19/858493/354041.terrain b/public/terrain/19/858493/354041.terrain new file mode 100644 index 000000000..5ca6ea23f Binary files /dev/null and b/public/terrain/19/858493/354041.terrain differ diff --git a/public/terrain/19/858493/354042.terrain b/public/terrain/19/858493/354042.terrain new file mode 100644 index 000000000..8dd56b19e Binary files /dev/null and b/public/terrain/19/858493/354042.terrain differ diff --git a/public/terrain/19/858493/354043.terrain b/public/terrain/19/858493/354043.terrain new file mode 100644 index 000000000..a0a07f7d2 Binary files /dev/null and b/public/terrain/19/858493/354043.terrain differ diff --git a/public/terrain/19/858493/354044.terrain b/public/terrain/19/858493/354044.terrain new file mode 100644 index 000000000..4601656d1 Binary files /dev/null and b/public/terrain/19/858493/354044.terrain differ diff --git a/public/terrain/19/858493/354045.terrain b/public/terrain/19/858493/354045.terrain new file mode 100644 index 000000000..e1afe5b2f Binary files /dev/null and b/public/terrain/19/858493/354045.terrain differ diff --git a/public/terrain/19/858493/354046.terrain b/public/terrain/19/858493/354046.terrain new file mode 100644 index 000000000..fa2560cb0 Binary files /dev/null and b/public/terrain/19/858493/354046.terrain differ diff --git a/public/terrain/19/858493/354047.terrain b/public/terrain/19/858493/354047.terrain new file mode 100644 index 000000000..16e91ac0f Binary files /dev/null and b/public/terrain/19/858493/354047.terrain differ diff --git a/public/terrain/19/858493/354048.terrain b/public/terrain/19/858493/354048.terrain new file mode 100644 index 000000000..378381763 Binary files /dev/null and b/public/terrain/19/858493/354048.terrain differ diff --git a/public/terrain/19/858493/354049.terrain b/public/terrain/19/858493/354049.terrain new file mode 100644 index 000000000..0d9d11ad2 Binary files /dev/null and b/public/terrain/19/858493/354049.terrain differ diff --git a/public/terrain/19/858493/354050.terrain b/public/terrain/19/858493/354050.terrain new file mode 100644 index 000000000..2f36fa340 Binary files /dev/null and b/public/terrain/19/858493/354050.terrain differ diff --git a/public/terrain/19/858493/354051.terrain b/public/terrain/19/858493/354051.terrain new file mode 100644 index 000000000..9962afa4f Binary files /dev/null and b/public/terrain/19/858493/354051.terrain differ diff --git a/public/terrain/19/858493/354052.terrain b/public/terrain/19/858493/354052.terrain new file mode 100644 index 000000000..0dae841ad Binary files /dev/null and b/public/terrain/19/858493/354052.terrain differ diff --git a/public/terrain/19/858493/354053.terrain b/public/terrain/19/858493/354053.terrain new file mode 100644 index 000000000..52eb0577e Binary files /dev/null and b/public/terrain/19/858493/354053.terrain differ diff --git a/public/terrain/19/858493/354054.terrain b/public/terrain/19/858493/354054.terrain new file mode 100644 index 000000000..74a2c64f4 Binary files /dev/null and b/public/terrain/19/858493/354054.terrain differ diff --git a/public/terrain/19/858493/354055.terrain b/public/terrain/19/858493/354055.terrain new file mode 100644 index 000000000..a582de977 Binary files /dev/null and b/public/terrain/19/858493/354055.terrain differ diff --git a/public/terrain/19/858493/354056.terrain b/public/terrain/19/858493/354056.terrain new file mode 100644 index 000000000..d1f038dcf Binary files /dev/null and b/public/terrain/19/858493/354056.terrain differ diff --git a/public/terrain/19/858493/354057.terrain b/public/terrain/19/858493/354057.terrain new file mode 100644 index 000000000..aaa0e712d Binary files /dev/null and b/public/terrain/19/858493/354057.terrain differ diff --git a/public/terrain/19/858493/354058.terrain b/public/terrain/19/858493/354058.terrain new file mode 100644 index 000000000..a965b41f4 Binary files /dev/null and b/public/terrain/19/858493/354058.terrain differ diff --git a/public/terrain/19/858493/354059.terrain b/public/terrain/19/858493/354059.terrain new file mode 100644 index 000000000..27cf6e208 Binary files /dev/null and b/public/terrain/19/858493/354059.terrain differ diff --git a/public/terrain/19/858494/353743.terrain b/public/terrain/19/858494/353743.terrain new file mode 100644 index 000000000..b51c6d48e Binary files /dev/null and b/public/terrain/19/858494/353743.terrain differ diff --git a/public/terrain/19/858494/353744.terrain b/public/terrain/19/858494/353744.terrain new file mode 100644 index 000000000..4ef49d485 Binary files /dev/null and b/public/terrain/19/858494/353744.terrain differ diff --git a/public/terrain/19/858494/353745.terrain b/public/terrain/19/858494/353745.terrain new file mode 100644 index 000000000..a0453f725 Binary files /dev/null and b/public/terrain/19/858494/353745.terrain differ diff --git a/public/terrain/19/858494/353746.terrain b/public/terrain/19/858494/353746.terrain new file mode 100644 index 000000000..fbdea8cb6 Binary files /dev/null and b/public/terrain/19/858494/353746.terrain differ diff --git a/public/terrain/19/858494/353747.terrain b/public/terrain/19/858494/353747.terrain new file mode 100644 index 000000000..308899ed8 Binary files /dev/null and b/public/terrain/19/858494/353747.terrain differ diff --git a/public/terrain/19/858494/353748.terrain b/public/terrain/19/858494/353748.terrain new file mode 100644 index 000000000..d4d0babaf Binary files /dev/null and b/public/terrain/19/858494/353748.terrain differ diff --git a/public/terrain/19/858494/353749.terrain b/public/terrain/19/858494/353749.terrain new file mode 100644 index 000000000..bd366526d Binary files /dev/null and b/public/terrain/19/858494/353749.terrain differ diff --git a/public/terrain/19/858494/353750.terrain b/public/terrain/19/858494/353750.terrain new file mode 100644 index 000000000..4b303b305 Binary files /dev/null and b/public/terrain/19/858494/353750.terrain differ diff --git a/public/terrain/19/858494/353751.terrain b/public/terrain/19/858494/353751.terrain new file mode 100644 index 000000000..b7f928b6b Binary files /dev/null and b/public/terrain/19/858494/353751.terrain differ diff --git a/public/terrain/19/858494/353752.terrain b/public/terrain/19/858494/353752.terrain new file mode 100644 index 000000000..d18121915 Binary files /dev/null and b/public/terrain/19/858494/353752.terrain differ diff --git a/public/terrain/19/858494/353753.terrain b/public/terrain/19/858494/353753.terrain new file mode 100644 index 000000000..e66e282da Binary files /dev/null and b/public/terrain/19/858494/353753.terrain differ diff --git a/public/terrain/19/858494/353754.terrain b/public/terrain/19/858494/353754.terrain new file mode 100644 index 000000000..8448bc464 Binary files /dev/null and b/public/terrain/19/858494/353754.terrain differ diff --git a/public/terrain/19/858494/353755.terrain b/public/terrain/19/858494/353755.terrain new file mode 100644 index 000000000..d40ada08e Binary files /dev/null and b/public/terrain/19/858494/353755.terrain differ diff --git a/public/terrain/19/858494/353756.terrain b/public/terrain/19/858494/353756.terrain new file mode 100644 index 000000000..07d20647c Binary files /dev/null and b/public/terrain/19/858494/353756.terrain differ diff --git a/public/terrain/19/858494/353757.terrain b/public/terrain/19/858494/353757.terrain new file mode 100644 index 000000000..1fc8a486a Binary files /dev/null and b/public/terrain/19/858494/353757.terrain differ diff --git a/public/terrain/19/858494/353758.terrain b/public/terrain/19/858494/353758.terrain new file mode 100644 index 000000000..596437d3b Binary files /dev/null and b/public/terrain/19/858494/353758.terrain differ diff --git a/public/terrain/19/858494/353759.terrain b/public/terrain/19/858494/353759.terrain new file mode 100644 index 000000000..5faf5a4e6 Binary files /dev/null and b/public/terrain/19/858494/353759.terrain differ diff --git a/public/terrain/19/858494/353760.terrain b/public/terrain/19/858494/353760.terrain new file mode 100644 index 000000000..70afb0574 Binary files /dev/null and b/public/terrain/19/858494/353760.terrain differ diff --git a/public/terrain/19/858494/353761.terrain b/public/terrain/19/858494/353761.terrain new file mode 100644 index 000000000..0a234946b Binary files /dev/null and b/public/terrain/19/858494/353761.terrain differ diff --git a/public/terrain/19/858494/353762.terrain b/public/terrain/19/858494/353762.terrain new file mode 100644 index 000000000..d07e511ea Binary files /dev/null and b/public/terrain/19/858494/353762.terrain differ diff --git a/public/terrain/19/858494/353763.terrain b/public/terrain/19/858494/353763.terrain new file mode 100644 index 000000000..2e14ebdba Binary files /dev/null and b/public/terrain/19/858494/353763.terrain differ diff --git a/public/terrain/19/858494/353764.terrain b/public/terrain/19/858494/353764.terrain new file mode 100644 index 000000000..538c3fbbd Binary files /dev/null and b/public/terrain/19/858494/353764.terrain differ diff --git a/public/terrain/19/858494/353765.terrain b/public/terrain/19/858494/353765.terrain new file mode 100644 index 000000000..59bc19be3 Binary files /dev/null and b/public/terrain/19/858494/353765.terrain differ diff --git a/public/terrain/19/858494/353766.terrain b/public/terrain/19/858494/353766.terrain new file mode 100644 index 000000000..714312744 Binary files /dev/null and b/public/terrain/19/858494/353766.terrain differ diff --git a/public/terrain/19/858494/353767.terrain b/public/terrain/19/858494/353767.terrain new file mode 100644 index 000000000..aef39983e Binary files /dev/null and b/public/terrain/19/858494/353767.terrain differ diff --git a/public/terrain/19/858494/353768.terrain b/public/terrain/19/858494/353768.terrain new file mode 100644 index 000000000..a5dcbd95d Binary files /dev/null and b/public/terrain/19/858494/353768.terrain differ diff --git a/public/terrain/19/858494/353769.terrain b/public/terrain/19/858494/353769.terrain new file mode 100644 index 000000000..cd1a73998 Binary files /dev/null and b/public/terrain/19/858494/353769.terrain differ diff --git a/public/terrain/19/858494/353770.terrain b/public/terrain/19/858494/353770.terrain new file mode 100644 index 000000000..2c198eceb Binary files /dev/null and b/public/terrain/19/858494/353770.terrain differ diff --git a/public/terrain/19/858494/353771.terrain b/public/terrain/19/858494/353771.terrain new file mode 100644 index 000000000..14b4ff401 Binary files /dev/null and b/public/terrain/19/858494/353771.terrain differ diff --git a/public/terrain/19/858494/353772.terrain b/public/terrain/19/858494/353772.terrain new file mode 100644 index 000000000..1852c8520 Binary files /dev/null and b/public/terrain/19/858494/353772.terrain differ diff --git a/public/terrain/19/858494/353773.terrain b/public/terrain/19/858494/353773.terrain new file mode 100644 index 000000000..e51ad4763 Binary files /dev/null and b/public/terrain/19/858494/353773.terrain differ diff --git a/public/terrain/19/858494/353774.terrain b/public/terrain/19/858494/353774.terrain new file mode 100644 index 000000000..651f9ba06 Binary files /dev/null and b/public/terrain/19/858494/353774.terrain differ diff --git a/public/terrain/19/858494/353775.terrain b/public/terrain/19/858494/353775.terrain new file mode 100644 index 000000000..d5c16d90d Binary files /dev/null and b/public/terrain/19/858494/353775.terrain differ diff --git a/public/terrain/19/858494/353776.terrain b/public/terrain/19/858494/353776.terrain new file mode 100644 index 000000000..87be612bd Binary files /dev/null and b/public/terrain/19/858494/353776.terrain differ diff --git a/public/terrain/19/858494/353777.terrain b/public/terrain/19/858494/353777.terrain new file mode 100644 index 000000000..495a283cd Binary files /dev/null and b/public/terrain/19/858494/353777.terrain differ diff --git a/public/terrain/19/858494/353778.terrain b/public/terrain/19/858494/353778.terrain new file mode 100644 index 000000000..4183079fb Binary files /dev/null and b/public/terrain/19/858494/353778.terrain differ diff --git a/public/terrain/19/858494/353779.terrain b/public/terrain/19/858494/353779.terrain new file mode 100644 index 000000000..eb95e72e7 Binary files /dev/null and b/public/terrain/19/858494/353779.terrain differ diff --git a/public/terrain/19/858494/353780.terrain b/public/terrain/19/858494/353780.terrain new file mode 100644 index 000000000..ba7824ee2 Binary files /dev/null and b/public/terrain/19/858494/353780.terrain differ diff --git a/public/terrain/19/858494/353781.terrain b/public/terrain/19/858494/353781.terrain new file mode 100644 index 000000000..24289f2cd Binary files /dev/null and b/public/terrain/19/858494/353781.terrain differ diff --git a/public/terrain/19/858494/353782.terrain b/public/terrain/19/858494/353782.terrain new file mode 100644 index 000000000..a02360077 Binary files /dev/null and b/public/terrain/19/858494/353782.terrain differ diff --git a/public/terrain/19/858494/353783.terrain b/public/terrain/19/858494/353783.terrain new file mode 100644 index 000000000..bceb958e6 Binary files /dev/null and b/public/terrain/19/858494/353783.terrain differ diff --git a/public/terrain/19/858494/353784.terrain b/public/terrain/19/858494/353784.terrain new file mode 100644 index 000000000..2dca971d3 Binary files /dev/null and b/public/terrain/19/858494/353784.terrain differ diff --git a/public/terrain/19/858494/353785.terrain b/public/terrain/19/858494/353785.terrain new file mode 100644 index 000000000..349a7e522 Binary files /dev/null and b/public/terrain/19/858494/353785.terrain differ diff --git a/public/terrain/19/858494/353786.terrain b/public/terrain/19/858494/353786.terrain new file mode 100644 index 000000000..1eeac172b Binary files /dev/null and b/public/terrain/19/858494/353786.terrain differ diff --git a/public/terrain/19/858494/353787.terrain b/public/terrain/19/858494/353787.terrain new file mode 100644 index 000000000..93020207b Binary files /dev/null and b/public/terrain/19/858494/353787.terrain differ diff --git a/public/terrain/19/858494/353788.terrain b/public/terrain/19/858494/353788.terrain new file mode 100644 index 000000000..c76194cdf Binary files /dev/null and b/public/terrain/19/858494/353788.terrain differ diff --git a/public/terrain/19/858494/353789.terrain b/public/terrain/19/858494/353789.terrain new file mode 100644 index 000000000..eef0ff14f Binary files /dev/null and b/public/terrain/19/858494/353789.terrain differ diff --git a/public/terrain/19/858494/353790.terrain b/public/terrain/19/858494/353790.terrain new file mode 100644 index 000000000..01e1ed0e4 Binary files /dev/null and b/public/terrain/19/858494/353790.terrain differ diff --git a/public/terrain/19/858494/353791.terrain b/public/terrain/19/858494/353791.terrain new file mode 100644 index 000000000..76b597f3d Binary files /dev/null and b/public/terrain/19/858494/353791.terrain differ diff --git a/public/terrain/19/858494/353792.terrain b/public/terrain/19/858494/353792.terrain new file mode 100644 index 000000000..f8f8a3e4b Binary files /dev/null and b/public/terrain/19/858494/353792.terrain differ diff --git a/public/terrain/19/858494/353793.terrain b/public/terrain/19/858494/353793.terrain new file mode 100644 index 000000000..4cfe2d15f Binary files /dev/null and b/public/terrain/19/858494/353793.terrain differ diff --git a/public/terrain/19/858494/353794.terrain b/public/terrain/19/858494/353794.terrain new file mode 100644 index 000000000..f57a86e08 Binary files /dev/null and b/public/terrain/19/858494/353794.terrain differ diff --git a/public/terrain/19/858494/353795.terrain b/public/terrain/19/858494/353795.terrain new file mode 100644 index 000000000..e0e6a8f24 Binary files /dev/null and b/public/terrain/19/858494/353795.terrain differ diff --git a/public/terrain/19/858494/353796.terrain b/public/terrain/19/858494/353796.terrain new file mode 100644 index 000000000..483335dbc Binary files /dev/null and b/public/terrain/19/858494/353796.terrain differ diff --git a/public/terrain/19/858494/353797.terrain b/public/terrain/19/858494/353797.terrain new file mode 100644 index 000000000..6e52e60ba Binary files /dev/null and b/public/terrain/19/858494/353797.terrain differ diff --git a/public/terrain/19/858494/353798.terrain b/public/terrain/19/858494/353798.terrain new file mode 100644 index 000000000..6e9c79ba1 Binary files /dev/null and b/public/terrain/19/858494/353798.terrain differ diff --git a/public/terrain/19/858494/353799.terrain b/public/terrain/19/858494/353799.terrain new file mode 100644 index 000000000..96baa6d8e Binary files /dev/null and b/public/terrain/19/858494/353799.terrain differ diff --git a/public/terrain/19/858494/353800.terrain b/public/terrain/19/858494/353800.terrain new file mode 100644 index 000000000..b8ce9d49b Binary files /dev/null and b/public/terrain/19/858494/353800.terrain differ diff --git a/public/terrain/19/858494/353801.terrain b/public/terrain/19/858494/353801.terrain new file mode 100644 index 000000000..1a8859b79 Binary files /dev/null and b/public/terrain/19/858494/353801.terrain differ diff --git a/public/terrain/19/858494/353802.terrain b/public/terrain/19/858494/353802.terrain new file mode 100644 index 000000000..9abdb3537 Binary files /dev/null and b/public/terrain/19/858494/353802.terrain differ diff --git a/public/terrain/19/858494/353803.terrain b/public/terrain/19/858494/353803.terrain new file mode 100644 index 000000000..923d89cc0 Binary files /dev/null and b/public/terrain/19/858494/353803.terrain differ diff --git a/public/terrain/19/858494/353804.terrain b/public/terrain/19/858494/353804.terrain new file mode 100644 index 000000000..aa1b96810 Binary files /dev/null and b/public/terrain/19/858494/353804.terrain differ diff --git a/public/terrain/19/858494/353805.terrain b/public/terrain/19/858494/353805.terrain new file mode 100644 index 000000000..a656fb3bf Binary files /dev/null and b/public/terrain/19/858494/353805.terrain differ diff --git a/public/terrain/19/858494/353806.terrain b/public/terrain/19/858494/353806.terrain new file mode 100644 index 000000000..b4b59e3c4 Binary files /dev/null and b/public/terrain/19/858494/353806.terrain differ diff --git a/public/terrain/19/858494/353807.terrain b/public/terrain/19/858494/353807.terrain new file mode 100644 index 000000000..fa1f1e8a8 Binary files /dev/null and b/public/terrain/19/858494/353807.terrain differ diff --git a/public/terrain/19/858494/353808.terrain b/public/terrain/19/858494/353808.terrain new file mode 100644 index 000000000..188eaa1e1 Binary files /dev/null and b/public/terrain/19/858494/353808.terrain differ diff --git a/public/terrain/19/858494/353809.terrain b/public/terrain/19/858494/353809.terrain new file mode 100644 index 000000000..e1f693653 Binary files /dev/null and b/public/terrain/19/858494/353809.terrain differ diff --git a/public/terrain/19/858494/353810.terrain b/public/terrain/19/858494/353810.terrain new file mode 100644 index 000000000..897cf302a Binary files /dev/null and b/public/terrain/19/858494/353810.terrain differ diff --git a/public/terrain/19/858494/353811.terrain b/public/terrain/19/858494/353811.terrain new file mode 100644 index 000000000..ce92a6e7a Binary files /dev/null and b/public/terrain/19/858494/353811.terrain differ diff --git a/public/terrain/19/858494/353812.terrain b/public/terrain/19/858494/353812.terrain new file mode 100644 index 000000000..adbb0cc5f Binary files /dev/null and b/public/terrain/19/858494/353812.terrain differ diff --git a/public/terrain/19/858494/353813.terrain b/public/terrain/19/858494/353813.terrain new file mode 100644 index 000000000..79e2de948 Binary files /dev/null and b/public/terrain/19/858494/353813.terrain differ diff --git a/public/terrain/19/858494/353814.terrain b/public/terrain/19/858494/353814.terrain new file mode 100644 index 000000000..e7d8e77cb Binary files /dev/null and b/public/terrain/19/858494/353814.terrain differ diff --git a/public/terrain/19/858494/353815.terrain b/public/terrain/19/858494/353815.terrain new file mode 100644 index 000000000..be028fcf5 Binary files /dev/null and b/public/terrain/19/858494/353815.terrain differ diff --git a/public/terrain/19/858494/353816.terrain b/public/terrain/19/858494/353816.terrain new file mode 100644 index 000000000..ae66b0e8c Binary files /dev/null and b/public/terrain/19/858494/353816.terrain differ diff --git a/public/terrain/19/858494/353817.terrain b/public/terrain/19/858494/353817.terrain new file mode 100644 index 000000000..99178009d Binary files /dev/null and b/public/terrain/19/858494/353817.terrain differ diff --git a/public/terrain/19/858494/353818.terrain b/public/terrain/19/858494/353818.terrain new file mode 100644 index 000000000..7505d8a11 Binary files /dev/null and b/public/terrain/19/858494/353818.terrain differ diff --git a/public/terrain/19/858494/353819.terrain b/public/terrain/19/858494/353819.terrain new file mode 100644 index 000000000..a9acd654f Binary files /dev/null and b/public/terrain/19/858494/353819.terrain differ diff --git a/public/terrain/19/858494/353820.terrain b/public/terrain/19/858494/353820.terrain new file mode 100644 index 000000000..78a02f0a2 Binary files /dev/null and b/public/terrain/19/858494/353820.terrain differ diff --git a/public/terrain/19/858494/353821.terrain b/public/terrain/19/858494/353821.terrain new file mode 100644 index 000000000..2aa5173b9 Binary files /dev/null and b/public/terrain/19/858494/353821.terrain differ diff --git a/public/terrain/19/858494/353822.terrain b/public/terrain/19/858494/353822.terrain new file mode 100644 index 000000000..6ffb0390a Binary files /dev/null and b/public/terrain/19/858494/353822.terrain differ diff --git a/public/terrain/19/858494/353823.terrain b/public/terrain/19/858494/353823.terrain new file mode 100644 index 000000000..cd66675b0 Binary files /dev/null and b/public/terrain/19/858494/353823.terrain differ diff --git a/public/terrain/19/858494/353824.terrain b/public/terrain/19/858494/353824.terrain new file mode 100644 index 000000000..1d76a9610 Binary files /dev/null and b/public/terrain/19/858494/353824.terrain differ diff --git a/public/terrain/19/858494/353825.terrain b/public/terrain/19/858494/353825.terrain new file mode 100644 index 000000000..dca7b4165 Binary files /dev/null and b/public/terrain/19/858494/353825.terrain differ diff --git a/public/terrain/19/858494/353826.terrain b/public/terrain/19/858494/353826.terrain new file mode 100644 index 000000000..2d7afe14a Binary files /dev/null and b/public/terrain/19/858494/353826.terrain differ diff --git a/public/terrain/19/858494/353827.terrain b/public/terrain/19/858494/353827.terrain new file mode 100644 index 000000000..56dd78faa Binary files /dev/null and b/public/terrain/19/858494/353827.terrain differ diff --git a/public/terrain/19/858494/353828.terrain b/public/terrain/19/858494/353828.terrain new file mode 100644 index 000000000..4946faae5 Binary files /dev/null and b/public/terrain/19/858494/353828.terrain differ diff --git a/public/terrain/19/858494/353829.terrain b/public/terrain/19/858494/353829.terrain new file mode 100644 index 000000000..f8189b08b Binary files /dev/null and b/public/terrain/19/858494/353829.terrain differ diff --git a/public/terrain/19/858494/353830.terrain b/public/terrain/19/858494/353830.terrain new file mode 100644 index 000000000..0cc8efbda Binary files /dev/null and b/public/terrain/19/858494/353830.terrain differ diff --git a/public/terrain/19/858494/353831.terrain b/public/terrain/19/858494/353831.terrain new file mode 100644 index 000000000..cb53fcc55 Binary files /dev/null and b/public/terrain/19/858494/353831.terrain differ diff --git a/public/terrain/19/858494/353832.terrain b/public/terrain/19/858494/353832.terrain new file mode 100644 index 000000000..0d0a745be Binary files /dev/null and b/public/terrain/19/858494/353832.terrain differ diff --git a/public/terrain/19/858494/353833.terrain b/public/terrain/19/858494/353833.terrain new file mode 100644 index 000000000..2a3cc2a4c Binary files /dev/null and b/public/terrain/19/858494/353833.terrain differ diff --git a/public/terrain/19/858494/353834.terrain b/public/terrain/19/858494/353834.terrain new file mode 100644 index 000000000..72fed7a08 Binary files /dev/null and b/public/terrain/19/858494/353834.terrain differ diff --git a/public/terrain/19/858494/353835.terrain b/public/terrain/19/858494/353835.terrain new file mode 100644 index 000000000..fec4ff01b Binary files /dev/null and b/public/terrain/19/858494/353835.terrain differ diff --git a/public/terrain/19/858494/353836.terrain b/public/terrain/19/858494/353836.terrain new file mode 100644 index 000000000..638b79f18 Binary files /dev/null and b/public/terrain/19/858494/353836.terrain differ diff --git a/public/terrain/19/858494/353837.terrain b/public/terrain/19/858494/353837.terrain new file mode 100644 index 000000000..4477accad Binary files /dev/null and b/public/terrain/19/858494/353837.terrain differ diff --git a/public/terrain/19/858494/353838.terrain b/public/terrain/19/858494/353838.terrain new file mode 100644 index 000000000..688377f01 Binary files /dev/null and b/public/terrain/19/858494/353838.terrain differ diff --git a/public/terrain/19/858494/353839.terrain b/public/terrain/19/858494/353839.terrain new file mode 100644 index 000000000..5cdbd6a67 Binary files /dev/null and b/public/terrain/19/858494/353839.terrain differ diff --git a/public/terrain/19/858494/353840.terrain b/public/terrain/19/858494/353840.terrain new file mode 100644 index 000000000..aa701a94e Binary files /dev/null and b/public/terrain/19/858494/353840.terrain differ diff --git a/public/terrain/19/858494/353841.terrain b/public/terrain/19/858494/353841.terrain new file mode 100644 index 000000000..ae4f0a647 Binary files /dev/null and b/public/terrain/19/858494/353841.terrain differ diff --git a/public/terrain/19/858494/353842.terrain b/public/terrain/19/858494/353842.terrain new file mode 100644 index 000000000..c314a3ac9 Binary files /dev/null and b/public/terrain/19/858494/353842.terrain differ diff --git a/public/terrain/19/858494/353843.terrain b/public/terrain/19/858494/353843.terrain new file mode 100644 index 000000000..4b699458c Binary files /dev/null and b/public/terrain/19/858494/353843.terrain differ diff --git a/public/terrain/19/858494/353844.terrain b/public/terrain/19/858494/353844.terrain new file mode 100644 index 000000000..356f50e56 Binary files /dev/null and b/public/terrain/19/858494/353844.terrain differ diff --git a/public/terrain/19/858494/353845.terrain b/public/terrain/19/858494/353845.terrain new file mode 100644 index 000000000..b0fd06aec Binary files /dev/null and b/public/terrain/19/858494/353845.terrain differ diff --git a/public/terrain/19/858494/353846.terrain b/public/terrain/19/858494/353846.terrain new file mode 100644 index 000000000..73420410f Binary files /dev/null and b/public/terrain/19/858494/353846.terrain differ diff --git a/public/terrain/19/858494/353847.terrain b/public/terrain/19/858494/353847.terrain new file mode 100644 index 000000000..6a31fe1ef Binary files /dev/null and b/public/terrain/19/858494/353847.terrain differ diff --git a/public/terrain/19/858494/353848.terrain b/public/terrain/19/858494/353848.terrain new file mode 100644 index 000000000..2960bd2b6 Binary files /dev/null and b/public/terrain/19/858494/353848.terrain differ diff --git a/public/terrain/19/858494/353849.terrain b/public/terrain/19/858494/353849.terrain new file mode 100644 index 000000000..79b5b8520 Binary files /dev/null and b/public/terrain/19/858494/353849.terrain differ diff --git a/public/terrain/19/858494/353850.terrain b/public/terrain/19/858494/353850.terrain new file mode 100644 index 000000000..c5add97ba Binary files /dev/null and b/public/terrain/19/858494/353850.terrain differ diff --git a/public/terrain/19/858494/353851.terrain b/public/terrain/19/858494/353851.terrain new file mode 100644 index 000000000..eb5b0a9f9 Binary files /dev/null and b/public/terrain/19/858494/353851.terrain differ diff --git a/public/terrain/19/858494/353852.terrain b/public/terrain/19/858494/353852.terrain new file mode 100644 index 000000000..0ae3e5d96 Binary files /dev/null and b/public/terrain/19/858494/353852.terrain differ diff --git a/public/terrain/19/858494/353853.terrain b/public/terrain/19/858494/353853.terrain new file mode 100644 index 000000000..f9a909b1f Binary files /dev/null and b/public/terrain/19/858494/353853.terrain differ diff --git a/public/terrain/19/858494/353854.terrain b/public/terrain/19/858494/353854.terrain new file mode 100644 index 000000000..49daab706 Binary files /dev/null and b/public/terrain/19/858494/353854.terrain differ diff --git a/public/terrain/19/858494/353855.terrain b/public/terrain/19/858494/353855.terrain new file mode 100644 index 000000000..ac1548bfd Binary files /dev/null and b/public/terrain/19/858494/353855.terrain differ diff --git a/public/terrain/19/858494/353856.terrain b/public/terrain/19/858494/353856.terrain new file mode 100644 index 000000000..0d16b0c8f Binary files /dev/null and b/public/terrain/19/858494/353856.terrain differ diff --git a/public/terrain/19/858494/353857.terrain b/public/terrain/19/858494/353857.terrain new file mode 100644 index 000000000..f20c2f978 Binary files /dev/null and b/public/terrain/19/858494/353857.terrain differ diff --git a/public/terrain/19/858494/353858.terrain b/public/terrain/19/858494/353858.terrain new file mode 100644 index 000000000..e615a37ae Binary files /dev/null and b/public/terrain/19/858494/353858.terrain differ diff --git a/public/terrain/19/858494/353859.terrain b/public/terrain/19/858494/353859.terrain new file mode 100644 index 000000000..0f7100698 Binary files /dev/null and b/public/terrain/19/858494/353859.terrain differ diff --git a/public/terrain/19/858494/353860.terrain b/public/terrain/19/858494/353860.terrain new file mode 100644 index 000000000..aad4fe4a5 Binary files /dev/null and b/public/terrain/19/858494/353860.terrain differ diff --git a/public/terrain/19/858494/353861.terrain b/public/terrain/19/858494/353861.terrain new file mode 100644 index 000000000..86c7e6633 Binary files /dev/null and b/public/terrain/19/858494/353861.terrain differ diff --git a/public/terrain/19/858494/353862.terrain b/public/terrain/19/858494/353862.terrain new file mode 100644 index 000000000..479eb7d67 Binary files /dev/null and b/public/terrain/19/858494/353862.terrain differ diff --git a/public/terrain/19/858494/353863.terrain b/public/terrain/19/858494/353863.terrain new file mode 100644 index 000000000..0f33dd333 Binary files /dev/null and b/public/terrain/19/858494/353863.terrain differ diff --git a/public/terrain/19/858494/353864.terrain b/public/terrain/19/858494/353864.terrain new file mode 100644 index 000000000..5e2aa3440 Binary files /dev/null and b/public/terrain/19/858494/353864.terrain differ diff --git a/public/terrain/19/858494/353865.terrain b/public/terrain/19/858494/353865.terrain new file mode 100644 index 000000000..7656b62d9 Binary files /dev/null and b/public/terrain/19/858494/353865.terrain differ diff --git a/public/terrain/19/858494/353866.terrain b/public/terrain/19/858494/353866.terrain new file mode 100644 index 000000000..c1763aa37 Binary files /dev/null and b/public/terrain/19/858494/353866.terrain differ diff --git a/public/terrain/19/858494/353867.terrain b/public/terrain/19/858494/353867.terrain new file mode 100644 index 000000000..b94e2545d Binary files /dev/null and b/public/terrain/19/858494/353867.terrain differ diff --git a/public/terrain/19/858494/353868.terrain b/public/terrain/19/858494/353868.terrain new file mode 100644 index 000000000..465609a43 Binary files /dev/null and b/public/terrain/19/858494/353868.terrain differ diff --git a/public/terrain/19/858494/353869.terrain b/public/terrain/19/858494/353869.terrain new file mode 100644 index 000000000..04c8cfbe0 Binary files /dev/null and b/public/terrain/19/858494/353869.terrain differ diff --git a/public/terrain/19/858494/353870.terrain b/public/terrain/19/858494/353870.terrain new file mode 100644 index 000000000..5b8fcf209 Binary files /dev/null and b/public/terrain/19/858494/353870.terrain differ diff --git a/public/terrain/19/858494/353871.terrain b/public/terrain/19/858494/353871.terrain new file mode 100644 index 000000000..da2721cf8 Binary files /dev/null and b/public/terrain/19/858494/353871.terrain differ diff --git a/public/terrain/19/858494/353872.terrain b/public/terrain/19/858494/353872.terrain new file mode 100644 index 000000000..c2a168bfc Binary files /dev/null and b/public/terrain/19/858494/353872.terrain differ diff --git a/public/terrain/19/858494/353873.terrain b/public/terrain/19/858494/353873.terrain new file mode 100644 index 000000000..34eace3c5 Binary files /dev/null and b/public/terrain/19/858494/353873.terrain differ diff --git a/public/terrain/19/858494/353874.terrain b/public/terrain/19/858494/353874.terrain new file mode 100644 index 000000000..06f02bab5 Binary files /dev/null and b/public/terrain/19/858494/353874.terrain differ diff --git a/public/terrain/19/858494/353875.terrain b/public/terrain/19/858494/353875.terrain new file mode 100644 index 000000000..55f9593a9 Binary files /dev/null and b/public/terrain/19/858494/353875.terrain differ diff --git a/public/terrain/19/858494/353876.terrain b/public/terrain/19/858494/353876.terrain new file mode 100644 index 000000000..41353e74b Binary files /dev/null and b/public/terrain/19/858494/353876.terrain differ diff --git a/public/terrain/19/858494/353877.terrain b/public/terrain/19/858494/353877.terrain new file mode 100644 index 000000000..20833f489 Binary files /dev/null and b/public/terrain/19/858494/353877.terrain differ diff --git a/public/terrain/19/858494/353878.terrain b/public/terrain/19/858494/353878.terrain new file mode 100644 index 000000000..a737dc075 Binary files /dev/null and b/public/terrain/19/858494/353878.terrain differ diff --git a/public/terrain/19/858494/353879.terrain b/public/terrain/19/858494/353879.terrain new file mode 100644 index 000000000..277e75a29 Binary files /dev/null and b/public/terrain/19/858494/353879.terrain differ diff --git a/public/terrain/19/858494/353880.terrain b/public/terrain/19/858494/353880.terrain new file mode 100644 index 000000000..787a1b719 Binary files /dev/null and b/public/terrain/19/858494/353880.terrain differ diff --git a/public/terrain/19/858494/353881.terrain b/public/terrain/19/858494/353881.terrain new file mode 100644 index 000000000..4a0a34d38 Binary files /dev/null and b/public/terrain/19/858494/353881.terrain differ diff --git a/public/terrain/19/858494/353882.terrain b/public/terrain/19/858494/353882.terrain new file mode 100644 index 000000000..662642582 Binary files /dev/null and b/public/terrain/19/858494/353882.terrain differ diff --git a/public/terrain/19/858494/353883.terrain b/public/terrain/19/858494/353883.terrain new file mode 100644 index 000000000..2cf9f401b Binary files /dev/null and b/public/terrain/19/858494/353883.terrain differ diff --git a/public/terrain/19/858494/353884.terrain b/public/terrain/19/858494/353884.terrain new file mode 100644 index 000000000..6a749928d Binary files /dev/null and b/public/terrain/19/858494/353884.terrain differ diff --git a/public/terrain/19/858494/353885.terrain b/public/terrain/19/858494/353885.terrain new file mode 100644 index 000000000..7a7268557 Binary files /dev/null and b/public/terrain/19/858494/353885.terrain differ diff --git a/public/terrain/19/858494/353886.terrain b/public/terrain/19/858494/353886.terrain new file mode 100644 index 000000000..c710aa62a Binary files /dev/null and b/public/terrain/19/858494/353886.terrain differ diff --git a/public/terrain/19/858494/353887.terrain b/public/terrain/19/858494/353887.terrain new file mode 100644 index 000000000..d6d1e2894 Binary files /dev/null and b/public/terrain/19/858494/353887.terrain differ diff --git a/public/terrain/19/858494/353888.terrain b/public/terrain/19/858494/353888.terrain new file mode 100644 index 000000000..ad11d325f Binary files /dev/null and b/public/terrain/19/858494/353888.terrain differ diff --git a/public/terrain/19/858494/353889.terrain b/public/terrain/19/858494/353889.terrain new file mode 100644 index 000000000..4acd05248 Binary files /dev/null and b/public/terrain/19/858494/353889.terrain differ diff --git a/public/terrain/19/858494/353890.terrain b/public/terrain/19/858494/353890.terrain new file mode 100644 index 000000000..a719dc494 Binary files /dev/null and b/public/terrain/19/858494/353890.terrain differ diff --git a/public/terrain/19/858494/353891.terrain b/public/terrain/19/858494/353891.terrain new file mode 100644 index 000000000..83c22de21 Binary files /dev/null and b/public/terrain/19/858494/353891.terrain differ diff --git a/public/terrain/19/858494/353892.terrain b/public/terrain/19/858494/353892.terrain new file mode 100644 index 000000000..9bff18aa9 Binary files /dev/null and b/public/terrain/19/858494/353892.terrain differ diff --git a/public/terrain/19/858494/353893.terrain b/public/terrain/19/858494/353893.terrain new file mode 100644 index 000000000..747befcc4 Binary files /dev/null and b/public/terrain/19/858494/353893.terrain differ diff --git a/public/terrain/19/858494/353894.terrain b/public/terrain/19/858494/353894.terrain new file mode 100644 index 000000000..54a1366a8 Binary files /dev/null and b/public/terrain/19/858494/353894.terrain differ diff --git a/public/terrain/19/858494/353895.terrain b/public/terrain/19/858494/353895.terrain new file mode 100644 index 000000000..426580cbf Binary files /dev/null and b/public/terrain/19/858494/353895.terrain differ diff --git a/public/terrain/19/858494/353896.terrain b/public/terrain/19/858494/353896.terrain new file mode 100644 index 000000000..db870b8b3 Binary files /dev/null and b/public/terrain/19/858494/353896.terrain differ diff --git a/public/terrain/19/858494/353897.terrain b/public/terrain/19/858494/353897.terrain new file mode 100644 index 000000000..d20c3a677 Binary files /dev/null and b/public/terrain/19/858494/353897.terrain differ diff --git a/public/terrain/19/858494/353898.terrain b/public/terrain/19/858494/353898.terrain new file mode 100644 index 000000000..a5953d494 Binary files /dev/null and b/public/terrain/19/858494/353898.terrain differ diff --git a/public/terrain/19/858494/353899.terrain b/public/terrain/19/858494/353899.terrain new file mode 100644 index 000000000..d46b11d9c Binary files /dev/null and b/public/terrain/19/858494/353899.terrain differ diff --git a/public/terrain/19/858494/353900.terrain b/public/terrain/19/858494/353900.terrain new file mode 100644 index 000000000..d9b1a76c0 Binary files /dev/null and b/public/terrain/19/858494/353900.terrain differ diff --git a/public/terrain/19/858494/353901.terrain b/public/terrain/19/858494/353901.terrain new file mode 100644 index 000000000..2e7cf8fc7 Binary files /dev/null and b/public/terrain/19/858494/353901.terrain differ diff --git a/public/terrain/19/858494/353902.terrain b/public/terrain/19/858494/353902.terrain new file mode 100644 index 000000000..dc34f56a8 Binary files /dev/null and b/public/terrain/19/858494/353902.terrain differ diff --git a/public/terrain/19/858494/353903.terrain b/public/terrain/19/858494/353903.terrain new file mode 100644 index 000000000..a5b529e95 Binary files /dev/null and b/public/terrain/19/858494/353903.terrain differ diff --git a/public/terrain/19/858494/353904.terrain b/public/terrain/19/858494/353904.terrain new file mode 100644 index 000000000..a0f825a46 Binary files /dev/null and b/public/terrain/19/858494/353904.terrain differ diff --git a/public/terrain/19/858494/353905.terrain b/public/terrain/19/858494/353905.terrain new file mode 100644 index 000000000..fee5396c0 Binary files /dev/null and b/public/terrain/19/858494/353905.terrain differ diff --git a/public/terrain/19/858494/353906.terrain b/public/terrain/19/858494/353906.terrain new file mode 100644 index 000000000..c121096b8 Binary files /dev/null and b/public/terrain/19/858494/353906.terrain differ diff --git a/public/terrain/19/858494/353907.terrain b/public/terrain/19/858494/353907.terrain new file mode 100644 index 000000000..ee825d225 Binary files /dev/null and b/public/terrain/19/858494/353907.terrain differ diff --git a/public/terrain/19/858494/353908.terrain b/public/terrain/19/858494/353908.terrain new file mode 100644 index 000000000..49f43e3d9 Binary files /dev/null and b/public/terrain/19/858494/353908.terrain differ diff --git a/public/terrain/19/858494/353909.terrain b/public/terrain/19/858494/353909.terrain new file mode 100644 index 000000000..96da4743b Binary files /dev/null and b/public/terrain/19/858494/353909.terrain differ diff --git a/public/terrain/19/858494/353910.terrain b/public/terrain/19/858494/353910.terrain new file mode 100644 index 000000000..7060422cd Binary files /dev/null and b/public/terrain/19/858494/353910.terrain differ diff --git a/public/terrain/19/858494/353911.terrain b/public/terrain/19/858494/353911.terrain new file mode 100644 index 000000000..951282d2e Binary files /dev/null and b/public/terrain/19/858494/353911.terrain differ diff --git a/public/terrain/19/858494/353912.terrain b/public/terrain/19/858494/353912.terrain new file mode 100644 index 000000000..a0e5255e2 Binary files /dev/null and b/public/terrain/19/858494/353912.terrain differ diff --git a/public/terrain/19/858494/353913.terrain b/public/terrain/19/858494/353913.terrain new file mode 100644 index 000000000..949b1f430 Binary files /dev/null and b/public/terrain/19/858494/353913.terrain differ diff --git a/public/terrain/19/858494/353914.terrain b/public/terrain/19/858494/353914.terrain new file mode 100644 index 000000000..a4f168326 Binary files /dev/null and b/public/terrain/19/858494/353914.terrain differ diff --git a/public/terrain/19/858494/353915.terrain b/public/terrain/19/858494/353915.terrain new file mode 100644 index 000000000..c7b868776 Binary files /dev/null and b/public/terrain/19/858494/353915.terrain differ diff --git a/public/terrain/19/858494/353916.terrain b/public/terrain/19/858494/353916.terrain new file mode 100644 index 000000000..8656aa541 Binary files /dev/null and b/public/terrain/19/858494/353916.terrain differ diff --git a/public/terrain/19/858494/353917.terrain b/public/terrain/19/858494/353917.terrain new file mode 100644 index 000000000..1e4a3f1e7 Binary files /dev/null and b/public/terrain/19/858494/353917.terrain differ diff --git a/public/terrain/19/858494/353918.terrain b/public/terrain/19/858494/353918.terrain new file mode 100644 index 000000000..17c525b29 Binary files /dev/null and b/public/terrain/19/858494/353918.terrain differ diff --git a/public/terrain/19/858494/353919.terrain b/public/terrain/19/858494/353919.terrain new file mode 100644 index 000000000..10f1b9c9d Binary files /dev/null and b/public/terrain/19/858494/353919.terrain differ diff --git a/public/terrain/19/858494/353920.terrain b/public/terrain/19/858494/353920.terrain new file mode 100644 index 000000000..2644c55e9 Binary files /dev/null and b/public/terrain/19/858494/353920.terrain differ diff --git a/public/terrain/19/858494/353921.terrain b/public/terrain/19/858494/353921.terrain new file mode 100644 index 000000000..35aad0634 Binary files /dev/null and b/public/terrain/19/858494/353921.terrain differ diff --git a/public/terrain/19/858494/353922.terrain b/public/terrain/19/858494/353922.terrain new file mode 100644 index 000000000..5c535be43 Binary files /dev/null and b/public/terrain/19/858494/353922.terrain differ diff --git a/public/terrain/19/858494/353923.terrain b/public/terrain/19/858494/353923.terrain new file mode 100644 index 000000000..89e9864e5 Binary files /dev/null and b/public/terrain/19/858494/353923.terrain differ diff --git a/public/terrain/19/858494/353924.terrain b/public/terrain/19/858494/353924.terrain new file mode 100644 index 000000000..16b233338 Binary files /dev/null and b/public/terrain/19/858494/353924.terrain differ diff --git a/public/terrain/19/858494/353925.terrain b/public/terrain/19/858494/353925.terrain new file mode 100644 index 000000000..a60e8c54d Binary files /dev/null and b/public/terrain/19/858494/353925.terrain differ diff --git a/public/terrain/19/858494/353926.terrain b/public/terrain/19/858494/353926.terrain new file mode 100644 index 000000000..91e7ea633 Binary files /dev/null and b/public/terrain/19/858494/353926.terrain differ diff --git a/public/terrain/19/858494/353927.terrain b/public/terrain/19/858494/353927.terrain new file mode 100644 index 000000000..c179a6e2d Binary files /dev/null and b/public/terrain/19/858494/353927.terrain differ diff --git a/public/terrain/19/858494/353928.terrain b/public/terrain/19/858494/353928.terrain new file mode 100644 index 000000000..7e0e2da6e Binary files /dev/null and b/public/terrain/19/858494/353928.terrain differ diff --git a/public/terrain/19/858494/353929.terrain b/public/terrain/19/858494/353929.terrain new file mode 100644 index 000000000..3dc9b6f90 Binary files /dev/null and b/public/terrain/19/858494/353929.terrain differ diff --git a/public/terrain/19/858494/353930.terrain b/public/terrain/19/858494/353930.terrain new file mode 100644 index 000000000..f19d3df0d Binary files /dev/null and b/public/terrain/19/858494/353930.terrain differ diff --git a/public/terrain/19/858494/353931.terrain b/public/terrain/19/858494/353931.terrain new file mode 100644 index 000000000..29e23ab55 Binary files /dev/null and b/public/terrain/19/858494/353931.terrain differ diff --git a/public/terrain/19/858494/353932.terrain b/public/terrain/19/858494/353932.terrain new file mode 100644 index 000000000..c6a3630e9 Binary files /dev/null and b/public/terrain/19/858494/353932.terrain differ diff --git a/public/terrain/19/858494/353933.terrain b/public/terrain/19/858494/353933.terrain new file mode 100644 index 000000000..716c9d809 Binary files /dev/null and b/public/terrain/19/858494/353933.terrain differ diff --git a/public/terrain/19/858494/353934.terrain b/public/terrain/19/858494/353934.terrain new file mode 100644 index 000000000..60d685684 Binary files /dev/null and b/public/terrain/19/858494/353934.terrain differ diff --git a/public/terrain/19/858494/353935.terrain b/public/terrain/19/858494/353935.terrain new file mode 100644 index 000000000..c537cea4b Binary files /dev/null and b/public/terrain/19/858494/353935.terrain differ diff --git a/public/terrain/19/858494/353936.terrain b/public/terrain/19/858494/353936.terrain new file mode 100644 index 000000000..5fb6daa08 Binary files /dev/null and b/public/terrain/19/858494/353936.terrain differ diff --git a/public/terrain/19/858494/353937.terrain b/public/terrain/19/858494/353937.terrain new file mode 100644 index 000000000..21947ffd9 Binary files /dev/null and b/public/terrain/19/858494/353937.terrain differ diff --git a/public/terrain/19/858494/353938.terrain b/public/terrain/19/858494/353938.terrain new file mode 100644 index 000000000..b06e06e0c Binary files /dev/null and b/public/terrain/19/858494/353938.terrain differ diff --git a/public/terrain/19/858494/353939.terrain b/public/terrain/19/858494/353939.terrain new file mode 100644 index 000000000..3344ce158 Binary files /dev/null and b/public/terrain/19/858494/353939.terrain differ diff --git a/public/terrain/19/858494/353940.terrain b/public/terrain/19/858494/353940.terrain new file mode 100644 index 000000000..d6f061ea9 Binary files /dev/null and b/public/terrain/19/858494/353940.terrain differ diff --git a/public/terrain/19/858494/353941.terrain b/public/terrain/19/858494/353941.terrain new file mode 100644 index 000000000..39439dbbc Binary files /dev/null and b/public/terrain/19/858494/353941.terrain differ diff --git a/public/terrain/19/858494/353942.terrain b/public/terrain/19/858494/353942.terrain new file mode 100644 index 000000000..bad1cf9bb Binary files /dev/null and b/public/terrain/19/858494/353942.terrain differ diff --git a/public/terrain/19/858494/353943.terrain b/public/terrain/19/858494/353943.terrain new file mode 100644 index 000000000..54f99ccff Binary files /dev/null and b/public/terrain/19/858494/353943.terrain differ diff --git a/public/terrain/19/858494/353944.terrain b/public/terrain/19/858494/353944.terrain new file mode 100644 index 000000000..862de1bb1 Binary files /dev/null and b/public/terrain/19/858494/353944.terrain differ diff --git a/public/terrain/19/858494/353945.terrain b/public/terrain/19/858494/353945.terrain new file mode 100644 index 000000000..f8e1f62e5 Binary files /dev/null and b/public/terrain/19/858494/353945.terrain differ diff --git a/public/terrain/19/858494/353946.terrain b/public/terrain/19/858494/353946.terrain new file mode 100644 index 000000000..4a5ec23f4 Binary files /dev/null and b/public/terrain/19/858494/353946.terrain differ diff --git a/public/terrain/19/858494/353947.terrain b/public/terrain/19/858494/353947.terrain new file mode 100644 index 000000000..f672216e6 Binary files /dev/null and b/public/terrain/19/858494/353947.terrain differ diff --git a/public/terrain/19/858494/353948.terrain b/public/terrain/19/858494/353948.terrain new file mode 100644 index 000000000..5d2f8e1a2 Binary files /dev/null and b/public/terrain/19/858494/353948.terrain differ diff --git a/public/terrain/19/858494/353949.terrain b/public/terrain/19/858494/353949.terrain new file mode 100644 index 000000000..7f9775024 Binary files /dev/null and b/public/terrain/19/858494/353949.terrain differ diff --git a/public/terrain/19/858494/353950.terrain b/public/terrain/19/858494/353950.terrain new file mode 100644 index 000000000..7fc7d0e50 Binary files /dev/null and b/public/terrain/19/858494/353950.terrain differ diff --git a/public/terrain/19/858494/353951.terrain b/public/terrain/19/858494/353951.terrain new file mode 100644 index 000000000..ac43dc8ad Binary files /dev/null and b/public/terrain/19/858494/353951.terrain differ diff --git a/public/terrain/19/858494/353952.terrain b/public/terrain/19/858494/353952.terrain new file mode 100644 index 000000000..da909a3f1 Binary files /dev/null and b/public/terrain/19/858494/353952.terrain differ diff --git a/public/terrain/19/858494/353953.terrain b/public/terrain/19/858494/353953.terrain new file mode 100644 index 000000000..7be3a757a Binary files /dev/null and b/public/terrain/19/858494/353953.terrain differ diff --git a/public/terrain/19/858494/353954.terrain b/public/terrain/19/858494/353954.terrain new file mode 100644 index 000000000..9e0da1182 Binary files /dev/null and b/public/terrain/19/858494/353954.terrain differ diff --git a/public/terrain/19/858494/353955.terrain b/public/terrain/19/858494/353955.terrain new file mode 100644 index 000000000..b8a757c3a Binary files /dev/null and b/public/terrain/19/858494/353955.terrain differ diff --git a/public/terrain/19/858494/353956.terrain b/public/terrain/19/858494/353956.terrain new file mode 100644 index 000000000..7cf22c9a1 Binary files /dev/null and b/public/terrain/19/858494/353956.terrain differ diff --git a/public/terrain/19/858494/353957.terrain b/public/terrain/19/858494/353957.terrain new file mode 100644 index 000000000..5951036a2 Binary files /dev/null and b/public/terrain/19/858494/353957.terrain differ diff --git a/public/terrain/19/858494/353958.terrain b/public/terrain/19/858494/353958.terrain new file mode 100644 index 000000000..aa1ceb3d5 Binary files /dev/null and b/public/terrain/19/858494/353958.terrain differ diff --git a/public/terrain/19/858494/353959.terrain b/public/terrain/19/858494/353959.terrain new file mode 100644 index 000000000..aeae0b825 Binary files /dev/null and b/public/terrain/19/858494/353959.terrain differ diff --git a/public/terrain/19/858494/353960.terrain b/public/terrain/19/858494/353960.terrain new file mode 100644 index 000000000..f8eabb8fb Binary files /dev/null and b/public/terrain/19/858494/353960.terrain differ diff --git a/public/terrain/19/858494/353961.terrain b/public/terrain/19/858494/353961.terrain new file mode 100644 index 000000000..3c1a9a671 Binary files /dev/null and b/public/terrain/19/858494/353961.terrain differ diff --git a/public/terrain/19/858494/353962.terrain b/public/terrain/19/858494/353962.terrain new file mode 100644 index 000000000..a1777988f Binary files /dev/null and b/public/terrain/19/858494/353962.terrain differ diff --git a/public/terrain/19/858494/353963.terrain b/public/terrain/19/858494/353963.terrain new file mode 100644 index 000000000..83fde2b01 Binary files /dev/null and b/public/terrain/19/858494/353963.terrain differ diff --git a/public/terrain/19/858494/353964.terrain b/public/terrain/19/858494/353964.terrain new file mode 100644 index 000000000..4b4f4d388 Binary files /dev/null and b/public/terrain/19/858494/353964.terrain differ diff --git a/public/terrain/19/858494/353965.terrain b/public/terrain/19/858494/353965.terrain new file mode 100644 index 000000000..1814520b5 Binary files /dev/null and b/public/terrain/19/858494/353965.terrain differ diff --git a/public/terrain/19/858494/353966.terrain b/public/terrain/19/858494/353966.terrain new file mode 100644 index 000000000..4d2d7bf65 Binary files /dev/null and b/public/terrain/19/858494/353966.terrain differ diff --git a/public/terrain/19/858494/353967.terrain b/public/terrain/19/858494/353967.terrain new file mode 100644 index 000000000..2ef4e19bd Binary files /dev/null and b/public/terrain/19/858494/353967.terrain differ diff --git a/public/terrain/19/858494/353968.terrain b/public/terrain/19/858494/353968.terrain new file mode 100644 index 000000000..6806f0ea0 Binary files /dev/null and b/public/terrain/19/858494/353968.terrain differ diff --git a/public/terrain/19/858494/353969.terrain b/public/terrain/19/858494/353969.terrain new file mode 100644 index 000000000..cd781bf8d Binary files /dev/null and b/public/terrain/19/858494/353969.terrain differ diff --git a/public/terrain/19/858494/353970.terrain b/public/terrain/19/858494/353970.terrain new file mode 100644 index 000000000..9a1b12c4d Binary files /dev/null and b/public/terrain/19/858494/353970.terrain differ diff --git a/public/terrain/19/858494/353971.terrain b/public/terrain/19/858494/353971.terrain new file mode 100644 index 000000000..ba8d0e6d4 Binary files /dev/null and b/public/terrain/19/858494/353971.terrain differ diff --git a/public/terrain/19/858494/353972.terrain b/public/terrain/19/858494/353972.terrain new file mode 100644 index 000000000..a49a4bf4c Binary files /dev/null and b/public/terrain/19/858494/353972.terrain differ diff --git a/public/terrain/19/858494/353973.terrain b/public/terrain/19/858494/353973.terrain new file mode 100644 index 000000000..916af24cf Binary files /dev/null and b/public/terrain/19/858494/353973.terrain differ diff --git a/public/terrain/19/858494/353974.terrain b/public/terrain/19/858494/353974.terrain new file mode 100644 index 000000000..df8e4b4e8 Binary files /dev/null and b/public/terrain/19/858494/353974.terrain differ diff --git a/public/terrain/19/858494/353975.terrain b/public/terrain/19/858494/353975.terrain new file mode 100644 index 000000000..894178f47 Binary files /dev/null and b/public/terrain/19/858494/353975.terrain differ diff --git a/public/terrain/19/858494/353976.terrain b/public/terrain/19/858494/353976.terrain new file mode 100644 index 000000000..b792641be Binary files /dev/null and b/public/terrain/19/858494/353976.terrain differ diff --git a/public/terrain/19/858494/353977.terrain b/public/terrain/19/858494/353977.terrain new file mode 100644 index 000000000..300a3adb2 Binary files /dev/null and b/public/terrain/19/858494/353977.terrain differ diff --git a/public/terrain/19/858494/353978.terrain b/public/terrain/19/858494/353978.terrain new file mode 100644 index 000000000..dcad59330 Binary files /dev/null and b/public/terrain/19/858494/353978.terrain differ diff --git a/public/terrain/19/858494/353979.terrain b/public/terrain/19/858494/353979.terrain new file mode 100644 index 000000000..03b8ff559 Binary files /dev/null and b/public/terrain/19/858494/353979.terrain differ diff --git a/public/terrain/19/858494/353980.terrain b/public/terrain/19/858494/353980.terrain new file mode 100644 index 000000000..8b5269f75 Binary files /dev/null and b/public/terrain/19/858494/353980.terrain differ diff --git a/public/terrain/19/858494/353981.terrain b/public/terrain/19/858494/353981.terrain new file mode 100644 index 000000000..a656bfed3 Binary files /dev/null and b/public/terrain/19/858494/353981.terrain differ diff --git a/public/terrain/19/858494/353982.terrain b/public/terrain/19/858494/353982.terrain new file mode 100644 index 000000000..9fb4e266d Binary files /dev/null and b/public/terrain/19/858494/353982.terrain differ diff --git a/public/terrain/19/858494/353983.terrain b/public/terrain/19/858494/353983.terrain new file mode 100644 index 000000000..07d6d7554 Binary files /dev/null and b/public/terrain/19/858494/353983.terrain differ diff --git a/public/terrain/19/858494/353984.terrain b/public/terrain/19/858494/353984.terrain new file mode 100644 index 000000000..24fd4c01a Binary files /dev/null and b/public/terrain/19/858494/353984.terrain differ diff --git a/public/terrain/19/858494/353985.terrain b/public/terrain/19/858494/353985.terrain new file mode 100644 index 000000000..1656066e5 Binary files /dev/null and b/public/terrain/19/858494/353985.terrain differ diff --git a/public/terrain/19/858494/353986.terrain b/public/terrain/19/858494/353986.terrain new file mode 100644 index 000000000..4d028b5c3 Binary files /dev/null and b/public/terrain/19/858494/353986.terrain differ diff --git a/public/terrain/19/858494/353987.terrain b/public/terrain/19/858494/353987.terrain new file mode 100644 index 000000000..fc4b12579 Binary files /dev/null and b/public/terrain/19/858494/353987.terrain differ diff --git a/public/terrain/19/858494/353988.terrain b/public/terrain/19/858494/353988.terrain new file mode 100644 index 000000000..3809d91fd Binary files /dev/null and b/public/terrain/19/858494/353988.terrain differ diff --git a/public/terrain/19/858494/353989.terrain b/public/terrain/19/858494/353989.terrain new file mode 100644 index 000000000..89d804efd Binary files /dev/null and b/public/terrain/19/858494/353989.terrain differ diff --git a/public/terrain/19/858494/353990.terrain b/public/terrain/19/858494/353990.terrain new file mode 100644 index 000000000..089d5b0b1 Binary files /dev/null and b/public/terrain/19/858494/353990.terrain differ diff --git a/public/terrain/19/858494/353991.terrain b/public/terrain/19/858494/353991.terrain new file mode 100644 index 000000000..139c45114 Binary files /dev/null and b/public/terrain/19/858494/353991.terrain differ diff --git a/public/terrain/19/858494/353992.terrain b/public/terrain/19/858494/353992.terrain new file mode 100644 index 000000000..fd14d0d85 Binary files /dev/null and b/public/terrain/19/858494/353992.terrain differ diff --git a/public/terrain/19/858494/353993.terrain b/public/terrain/19/858494/353993.terrain new file mode 100644 index 000000000..86777fe1c Binary files /dev/null and b/public/terrain/19/858494/353993.terrain differ diff --git a/public/terrain/19/858494/353994.terrain b/public/terrain/19/858494/353994.terrain new file mode 100644 index 000000000..6f7176414 Binary files /dev/null and b/public/terrain/19/858494/353994.terrain differ diff --git a/public/terrain/19/858494/353995.terrain b/public/terrain/19/858494/353995.terrain new file mode 100644 index 000000000..19c33d70a Binary files /dev/null and b/public/terrain/19/858494/353995.terrain differ diff --git a/public/terrain/19/858494/353996.terrain b/public/terrain/19/858494/353996.terrain new file mode 100644 index 000000000..a9360e8ca Binary files /dev/null and b/public/terrain/19/858494/353996.terrain differ diff --git a/public/terrain/19/858494/353997.terrain b/public/terrain/19/858494/353997.terrain new file mode 100644 index 000000000..7b8c99656 Binary files /dev/null and b/public/terrain/19/858494/353997.terrain differ diff --git a/public/terrain/19/858494/353998.terrain b/public/terrain/19/858494/353998.terrain new file mode 100644 index 000000000..b1d7a46eb Binary files /dev/null and b/public/terrain/19/858494/353998.terrain differ diff --git a/public/terrain/19/858494/353999.terrain b/public/terrain/19/858494/353999.terrain new file mode 100644 index 000000000..c92dc9124 Binary files /dev/null and b/public/terrain/19/858494/353999.terrain differ diff --git a/public/terrain/19/858494/354000.terrain b/public/terrain/19/858494/354000.terrain new file mode 100644 index 000000000..a7b504420 Binary files /dev/null and b/public/terrain/19/858494/354000.terrain differ diff --git a/public/terrain/19/858494/354001.terrain b/public/terrain/19/858494/354001.terrain new file mode 100644 index 000000000..c6fcce688 Binary files /dev/null and b/public/terrain/19/858494/354001.terrain differ diff --git a/public/terrain/19/858494/354002.terrain b/public/terrain/19/858494/354002.terrain new file mode 100644 index 000000000..6c28412bc Binary files /dev/null and b/public/terrain/19/858494/354002.terrain differ diff --git a/public/terrain/19/858494/354003.terrain b/public/terrain/19/858494/354003.terrain new file mode 100644 index 000000000..d80960379 Binary files /dev/null and b/public/terrain/19/858494/354003.terrain differ diff --git a/public/terrain/19/858494/354004.terrain b/public/terrain/19/858494/354004.terrain new file mode 100644 index 000000000..5026c0140 Binary files /dev/null and b/public/terrain/19/858494/354004.terrain differ diff --git a/public/terrain/19/858494/354005.terrain b/public/terrain/19/858494/354005.terrain new file mode 100644 index 000000000..e0af15afb Binary files /dev/null and b/public/terrain/19/858494/354005.terrain differ diff --git a/public/terrain/19/858494/354006.terrain b/public/terrain/19/858494/354006.terrain new file mode 100644 index 000000000..6f034638a Binary files /dev/null and b/public/terrain/19/858494/354006.terrain differ diff --git a/public/terrain/19/858494/354007.terrain b/public/terrain/19/858494/354007.terrain new file mode 100644 index 000000000..3ce80752e Binary files /dev/null and b/public/terrain/19/858494/354007.terrain differ diff --git a/public/terrain/19/858494/354008.terrain b/public/terrain/19/858494/354008.terrain new file mode 100644 index 000000000..a39d7a999 Binary files /dev/null and b/public/terrain/19/858494/354008.terrain differ diff --git a/public/terrain/19/858494/354009.terrain b/public/terrain/19/858494/354009.terrain new file mode 100644 index 000000000..fe8a7ff55 Binary files /dev/null and b/public/terrain/19/858494/354009.terrain differ diff --git a/public/terrain/19/858494/354010.terrain b/public/terrain/19/858494/354010.terrain new file mode 100644 index 000000000..22989ab71 Binary files /dev/null and b/public/terrain/19/858494/354010.terrain differ diff --git a/public/terrain/19/858494/354011.terrain b/public/terrain/19/858494/354011.terrain new file mode 100644 index 000000000..003079df7 Binary files /dev/null and b/public/terrain/19/858494/354011.terrain differ diff --git a/public/terrain/19/858494/354012.terrain b/public/terrain/19/858494/354012.terrain new file mode 100644 index 000000000..69fb20478 Binary files /dev/null and b/public/terrain/19/858494/354012.terrain differ diff --git a/public/terrain/19/858494/354013.terrain b/public/terrain/19/858494/354013.terrain new file mode 100644 index 000000000..f94012253 Binary files /dev/null and b/public/terrain/19/858494/354013.terrain differ diff --git a/public/terrain/19/858494/354014.terrain b/public/terrain/19/858494/354014.terrain new file mode 100644 index 000000000..1f07956ca Binary files /dev/null and b/public/terrain/19/858494/354014.terrain differ diff --git a/public/terrain/19/858494/354015.terrain b/public/terrain/19/858494/354015.terrain new file mode 100644 index 000000000..10d03d785 Binary files /dev/null and b/public/terrain/19/858494/354015.terrain differ diff --git a/public/terrain/19/858494/354016.terrain b/public/terrain/19/858494/354016.terrain new file mode 100644 index 000000000..806b029ea Binary files /dev/null and b/public/terrain/19/858494/354016.terrain differ diff --git a/public/terrain/19/858494/354017.terrain b/public/terrain/19/858494/354017.terrain new file mode 100644 index 000000000..c69005c5f Binary files /dev/null and b/public/terrain/19/858494/354017.terrain differ diff --git a/public/terrain/19/858494/354018.terrain b/public/terrain/19/858494/354018.terrain new file mode 100644 index 000000000..359fe851f Binary files /dev/null and b/public/terrain/19/858494/354018.terrain differ diff --git a/public/terrain/19/858494/354019.terrain b/public/terrain/19/858494/354019.terrain new file mode 100644 index 000000000..c5a9988f1 Binary files /dev/null and b/public/terrain/19/858494/354019.terrain differ diff --git a/public/terrain/19/858494/354020.terrain b/public/terrain/19/858494/354020.terrain new file mode 100644 index 000000000..dfa00f384 Binary files /dev/null and b/public/terrain/19/858494/354020.terrain differ diff --git a/public/terrain/19/858494/354021.terrain b/public/terrain/19/858494/354021.terrain new file mode 100644 index 000000000..6df2c46a9 Binary files /dev/null and b/public/terrain/19/858494/354021.terrain differ diff --git a/public/terrain/19/858494/354022.terrain b/public/terrain/19/858494/354022.terrain new file mode 100644 index 000000000..6db82db51 Binary files /dev/null and b/public/terrain/19/858494/354022.terrain differ diff --git a/public/terrain/19/858494/354023.terrain b/public/terrain/19/858494/354023.terrain new file mode 100644 index 000000000..eecbed252 Binary files /dev/null and b/public/terrain/19/858494/354023.terrain differ diff --git a/public/terrain/19/858494/354024.terrain b/public/terrain/19/858494/354024.terrain new file mode 100644 index 000000000..6dbf11a1a Binary files /dev/null and b/public/terrain/19/858494/354024.terrain differ diff --git a/public/terrain/19/858494/354025.terrain b/public/terrain/19/858494/354025.terrain new file mode 100644 index 000000000..d5a5b544b Binary files /dev/null and b/public/terrain/19/858494/354025.terrain differ diff --git a/public/terrain/19/858494/354026.terrain b/public/terrain/19/858494/354026.terrain new file mode 100644 index 000000000..b2a114801 Binary files /dev/null and b/public/terrain/19/858494/354026.terrain differ diff --git a/public/terrain/19/858494/354027.terrain b/public/terrain/19/858494/354027.terrain new file mode 100644 index 000000000..e914b5012 Binary files /dev/null and b/public/terrain/19/858494/354027.terrain differ diff --git a/public/terrain/19/858494/354028.terrain b/public/terrain/19/858494/354028.terrain new file mode 100644 index 000000000..4299b1bb6 Binary files /dev/null and b/public/terrain/19/858494/354028.terrain differ diff --git a/public/terrain/19/858494/354029.terrain b/public/terrain/19/858494/354029.terrain new file mode 100644 index 000000000..2340f2b60 Binary files /dev/null and b/public/terrain/19/858494/354029.terrain differ diff --git a/public/terrain/19/858494/354030.terrain b/public/terrain/19/858494/354030.terrain new file mode 100644 index 000000000..35c5b8aa7 Binary files /dev/null and b/public/terrain/19/858494/354030.terrain differ diff --git a/public/terrain/19/858494/354031.terrain b/public/terrain/19/858494/354031.terrain new file mode 100644 index 000000000..3d11c5724 Binary files /dev/null and b/public/terrain/19/858494/354031.terrain differ diff --git a/public/terrain/19/858494/354032.terrain b/public/terrain/19/858494/354032.terrain new file mode 100644 index 000000000..c89ec59b8 Binary files /dev/null and b/public/terrain/19/858494/354032.terrain differ diff --git a/public/terrain/19/858494/354033.terrain b/public/terrain/19/858494/354033.terrain new file mode 100644 index 000000000..5d360b8b6 Binary files /dev/null and b/public/terrain/19/858494/354033.terrain differ diff --git a/public/terrain/19/858494/354034.terrain b/public/terrain/19/858494/354034.terrain new file mode 100644 index 000000000..1f5fdd36b Binary files /dev/null and b/public/terrain/19/858494/354034.terrain differ diff --git a/public/terrain/19/858494/354035.terrain b/public/terrain/19/858494/354035.terrain new file mode 100644 index 000000000..4d01953d9 Binary files /dev/null and b/public/terrain/19/858494/354035.terrain differ diff --git a/public/terrain/19/858494/354036.terrain b/public/terrain/19/858494/354036.terrain new file mode 100644 index 000000000..e578c809b Binary files /dev/null and b/public/terrain/19/858494/354036.terrain differ diff --git a/public/terrain/19/858494/354037.terrain b/public/terrain/19/858494/354037.terrain new file mode 100644 index 000000000..c3f3b640c Binary files /dev/null and b/public/terrain/19/858494/354037.terrain differ diff --git a/public/terrain/19/858494/354038.terrain b/public/terrain/19/858494/354038.terrain new file mode 100644 index 000000000..eda0fa4cb Binary files /dev/null and b/public/terrain/19/858494/354038.terrain differ diff --git a/public/terrain/19/858494/354039.terrain b/public/terrain/19/858494/354039.terrain new file mode 100644 index 000000000..be6f8c531 Binary files /dev/null and b/public/terrain/19/858494/354039.terrain differ diff --git a/public/terrain/19/858494/354040.terrain b/public/terrain/19/858494/354040.terrain new file mode 100644 index 000000000..c509905e8 Binary files /dev/null and b/public/terrain/19/858494/354040.terrain differ diff --git a/public/terrain/19/858494/354041.terrain b/public/terrain/19/858494/354041.terrain new file mode 100644 index 000000000..8942c2149 Binary files /dev/null and b/public/terrain/19/858494/354041.terrain differ diff --git a/public/terrain/19/858494/354042.terrain b/public/terrain/19/858494/354042.terrain new file mode 100644 index 000000000..e65813225 Binary files /dev/null and b/public/terrain/19/858494/354042.terrain differ diff --git a/public/terrain/19/858494/354043.terrain b/public/terrain/19/858494/354043.terrain new file mode 100644 index 000000000..3df467874 Binary files /dev/null and b/public/terrain/19/858494/354043.terrain differ diff --git a/public/terrain/19/858494/354044.terrain b/public/terrain/19/858494/354044.terrain new file mode 100644 index 000000000..092b3a9ff Binary files /dev/null and b/public/terrain/19/858494/354044.terrain differ diff --git a/public/terrain/19/858494/354045.terrain b/public/terrain/19/858494/354045.terrain new file mode 100644 index 000000000..bc8348c88 Binary files /dev/null and b/public/terrain/19/858494/354045.terrain differ diff --git a/public/terrain/19/858494/354046.terrain b/public/terrain/19/858494/354046.terrain new file mode 100644 index 000000000..ef3fa3e00 Binary files /dev/null and b/public/terrain/19/858494/354046.terrain differ diff --git a/public/terrain/19/858494/354047.terrain b/public/terrain/19/858494/354047.terrain new file mode 100644 index 000000000..6bcd27acd Binary files /dev/null and b/public/terrain/19/858494/354047.terrain differ diff --git a/public/terrain/19/858494/354048.terrain b/public/terrain/19/858494/354048.terrain new file mode 100644 index 000000000..76f1330cf Binary files /dev/null and b/public/terrain/19/858494/354048.terrain differ diff --git a/public/terrain/19/858494/354049.terrain b/public/terrain/19/858494/354049.terrain new file mode 100644 index 000000000..52e02841a Binary files /dev/null and b/public/terrain/19/858494/354049.terrain differ diff --git a/public/terrain/19/858494/354050.terrain b/public/terrain/19/858494/354050.terrain new file mode 100644 index 000000000..2555afcff Binary files /dev/null and b/public/terrain/19/858494/354050.terrain differ diff --git a/public/terrain/19/858494/354051.terrain b/public/terrain/19/858494/354051.terrain new file mode 100644 index 000000000..73db8891a Binary files /dev/null and b/public/terrain/19/858494/354051.terrain differ diff --git a/public/terrain/19/858494/354052.terrain b/public/terrain/19/858494/354052.terrain new file mode 100644 index 000000000..a807dffa6 Binary files /dev/null and b/public/terrain/19/858494/354052.terrain differ diff --git a/public/terrain/19/858494/354053.terrain b/public/terrain/19/858494/354053.terrain new file mode 100644 index 000000000..88f9317df Binary files /dev/null and b/public/terrain/19/858494/354053.terrain differ diff --git a/public/terrain/19/858494/354054.terrain b/public/terrain/19/858494/354054.terrain new file mode 100644 index 000000000..ee54078f8 Binary files /dev/null and b/public/terrain/19/858494/354054.terrain differ diff --git a/public/terrain/19/858494/354055.terrain b/public/terrain/19/858494/354055.terrain new file mode 100644 index 000000000..f4d7d3f13 Binary files /dev/null and b/public/terrain/19/858494/354055.terrain differ diff --git a/public/terrain/19/858494/354056.terrain b/public/terrain/19/858494/354056.terrain new file mode 100644 index 000000000..848315347 Binary files /dev/null and b/public/terrain/19/858494/354056.terrain differ diff --git a/public/terrain/19/858494/354057.terrain b/public/terrain/19/858494/354057.terrain new file mode 100644 index 000000000..fa0f0f457 Binary files /dev/null and b/public/terrain/19/858494/354057.terrain differ diff --git a/public/terrain/19/858494/354058.terrain b/public/terrain/19/858494/354058.terrain new file mode 100644 index 000000000..7a7125818 Binary files /dev/null and b/public/terrain/19/858494/354058.terrain differ diff --git a/public/terrain/19/858494/354059.terrain b/public/terrain/19/858494/354059.terrain new file mode 100644 index 000000000..53aae00e7 Binary files /dev/null and b/public/terrain/19/858494/354059.terrain differ diff --git a/public/terrain/19/858495/353743.terrain b/public/terrain/19/858495/353743.terrain new file mode 100644 index 000000000..cfb198370 Binary files /dev/null and b/public/terrain/19/858495/353743.terrain differ diff --git a/public/terrain/19/858495/353744.terrain b/public/terrain/19/858495/353744.terrain new file mode 100644 index 000000000..67d2a9093 Binary files /dev/null and b/public/terrain/19/858495/353744.terrain differ diff --git a/public/terrain/19/858495/353745.terrain b/public/terrain/19/858495/353745.terrain new file mode 100644 index 000000000..343574b6f Binary files /dev/null and b/public/terrain/19/858495/353745.terrain differ diff --git a/public/terrain/19/858495/353746.terrain b/public/terrain/19/858495/353746.terrain new file mode 100644 index 000000000..152069637 Binary files /dev/null and b/public/terrain/19/858495/353746.terrain differ diff --git a/public/terrain/19/858495/353747.terrain b/public/terrain/19/858495/353747.terrain new file mode 100644 index 000000000..3ead2ebc5 Binary files /dev/null and b/public/terrain/19/858495/353747.terrain differ diff --git a/public/terrain/19/858495/353748.terrain b/public/terrain/19/858495/353748.terrain new file mode 100644 index 000000000..3f158acfc Binary files /dev/null and b/public/terrain/19/858495/353748.terrain differ diff --git a/public/terrain/19/858495/353749.terrain b/public/terrain/19/858495/353749.terrain new file mode 100644 index 000000000..fd165c96e Binary files /dev/null and b/public/terrain/19/858495/353749.terrain differ diff --git a/public/terrain/19/858495/353750.terrain b/public/terrain/19/858495/353750.terrain new file mode 100644 index 000000000..071256a85 Binary files /dev/null and b/public/terrain/19/858495/353750.terrain differ diff --git a/public/terrain/19/858495/353751.terrain b/public/terrain/19/858495/353751.terrain new file mode 100644 index 000000000..c906acd7b Binary files /dev/null and b/public/terrain/19/858495/353751.terrain differ diff --git a/public/terrain/19/858495/353752.terrain b/public/terrain/19/858495/353752.terrain new file mode 100644 index 000000000..3dbbe415e Binary files /dev/null and b/public/terrain/19/858495/353752.terrain differ diff --git a/public/terrain/19/858495/353753.terrain b/public/terrain/19/858495/353753.terrain new file mode 100644 index 000000000..972386b13 Binary files /dev/null and b/public/terrain/19/858495/353753.terrain differ diff --git a/public/terrain/19/858495/353754.terrain b/public/terrain/19/858495/353754.terrain new file mode 100644 index 000000000..38d93b17f Binary files /dev/null and b/public/terrain/19/858495/353754.terrain differ diff --git a/public/terrain/19/858495/353755.terrain b/public/terrain/19/858495/353755.terrain new file mode 100644 index 000000000..38c98c710 Binary files /dev/null and b/public/terrain/19/858495/353755.terrain differ diff --git a/public/terrain/19/858495/353756.terrain b/public/terrain/19/858495/353756.terrain new file mode 100644 index 000000000..8763ea2cb Binary files /dev/null and b/public/terrain/19/858495/353756.terrain differ diff --git a/public/terrain/19/858495/353757.terrain b/public/terrain/19/858495/353757.terrain new file mode 100644 index 000000000..92289783f Binary files /dev/null and b/public/terrain/19/858495/353757.terrain differ diff --git a/public/terrain/19/858495/353758.terrain b/public/terrain/19/858495/353758.terrain new file mode 100644 index 000000000..322c0cdb2 Binary files /dev/null and b/public/terrain/19/858495/353758.terrain differ diff --git a/public/terrain/19/858495/353759.terrain b/public/terrain/19/858495/353759.terrain new file mode 100644 index 000000000..7606d8eb4 Binary files /dev/null and b/public/terrain/19/858495/353759.terrain differ diff --git a/public/terrain/19/858495/353760.terrain b/public/terrain/19/858495/353760.terrain new file mode 100644 index 000000000..3169a7bc3 Binary files /dev/null and b/public/terrain/19/858495/353760.terrain differ diff --git a/public/terrain/19/858495/353761.terrain b/public/terrain/19/858495/353761.terrain new file mode 100644 index 000000000..2aca539dd Binary files /dev/null and b/public/terrain/19/858495/353761.terrain differ diff --git a/public/terrain/19/858495/353762.terrain b/public/terrain/19/858495/353762.terrain new file mode 100644 index 000000000..3e1554e17 Binary files /dev/null and b/public/terrain/19/858495/353762.terrain differ diff --git a/public/terrain/19/858495/353763.terrain b/public/terrain/19/858495/353763.terrain new file mode 100644 index 000000000..13a8ad0b7 Binary files /dev/null and b/public/terrain/19/858495/353763.terrain differ diff --git a/public/terrain/19/858495/353764.terrain b/public/terrain/19/858495/353764.terrain new file mode 100644 index 000000000..fdf20b96b Binary files /dev/null and b/public/terrain/19/858495/353764.terrain differ diff --git a/public/terrain/19/858495/353765.terrain b/public/terrain/19/858495/353765.terrain new file mode 100644 index 000000000..594a587d8 Binary files /dev/null and b/public/terrain/19/858495/353765.terrain differ diff --git a/public/terrain/19/858495/353766.terrain b/public/terrain/19/858495/353766.terrain new file mode 100644 index 000000000..580214307 Binary files /dev/null and b/public/terrain/19/858495/353766.terrain differ diff --git a/public/terrain/19/858495/353767.terrain b/public/terrain/19/858495/353767.terrain new file mode 100644 index 000000000..1cce863bc Binary files /dev/null and b/public/terrain/19/858495/353767.terrain differ diff --git a/public/terrain/19/858495/353768.terrain b/public/terrain/19/858495/353768.terrain new file mode 100644 index 000000000..1f6cb1732 Binary files /dev/null and b/public/terrain/19/858495/353768.terrain differ diff --git a/public/terrain/19/858495/353769.terrain b/public/terrain/19/858495/353769.terrain new file mode 100644 index 000000000..5da00682d Binary files /dev/null and b/public/terrain/19/858495/353769.terrain differ diff --git a/public/terrain/19/858495/353770.terrain b/public/terrain/19/858495/353770.terrain new file mode 100644 index 000000000..84be50bca Binary files /dev/null and b/public/terrain/19/858495/353770.terrain differ diff --git a/public/terrain/19/858495/353771.terrain b/public/terrain/19/858495/353771.terrain new file mode 100644 index 000000000..69c901572 Binary files /dev/null and b/public/terrain/19/858495/353771.terrain differ diff --git a/public/terrain/19/858495/353772.terrain b/public/terrain/19/858495/353772.terrain new file mode 100644 index 000000000..fe953a14e Binary files /dev/null and b/public/terrain/19/858495/353772.terrain differ diff --git a/public/terrain/19/858495/353773.terrain b/public/terrain/19/858495/353773.terrain new file mode 100644 index 000000000..73114d1f2 Binary files /dev/null and b/public/terrain/19/858495/353773.terrain differ diff --git a/public/terrain/19/858495/353774.terrain b/public/terrain/19/858495/353774.terrain new file mode 100644 index 000000000..4e9a08c2d Binary files /dev/null and b/public/terrain/19/858495/353774.terrain differ diff --git a/public/terrain/19/858495/353775.terrain b/public/terrain/19/858495/353775.terrain new file mode 100644 index 000000000..b11788450 Binary files /dev/null and b/public/terrain/19/858495/353775.terrain differ diff --git a/public/terrain/19/858495/353776.terrain b/public/terrain/19/858495/353776.terrain new file mode 100644 index 000000000..6affbf1c4 Binary files /dev/null and b/public/terrain/19/858495/353776.terrain differ diff --git a/public/terrain/19/858495/353777.terrain b/public/terrain/19/858495/353777.terrain new file mode 100644 index 000000000..2fd028511 Binary files /dev/null and b/public/terrain/19/858495/353777.terrain differ diff --git a/public/terrain/19/858495/353778.terrain b/public/terrain/19/858495/353778.terrain new file mode 100644 index 000000000..9bef48386 Binary files /dev/null and b/public/terrain/19/858495/353778.terrain differ diff --git a/public/terrain/19/858495/353779.terrain b/public/terrain/19/858495/353779.terrain new file mode 100644 index 000000000..6455ece88 Binary files /dev/null and b/public/terrain/19/858495/353779.terrain differ diff --git a/public/terrain/19/858495/353780.terrain b/public/terrain/19/858495/353780.terrain new file mode 100644 index 000000000..240ba0b91 Binary files /dev/null and b/public/terrain/19/858495/353780.terrain differ diff --git a/public/terrain/19/858495/353781.terrain b/public/terrain/19/858495/353781.terrain new file mode 100644 index 000000000..ed24e3395 Binary files /dev/null and b/public/terrain/19/858495/353781.terrain differ diff --git a/public/terrain/19/858495/353782.terrain b/public/terrain/19/858495/353782.terrain new file mode 100644 index 000000000..c642f2d25 Binary files /dev/null and b/public/terrain/19/858495/353782.terrain differ diff --git a/public/terrain/19/858495/353783.terrain b/public/terrain/19/858495/353783.terrain new file mode 100644 index 000000000..7d25028b0 Binary files /dev/null and b/public/terrain/19/858495/353783.terrain differ diff --git a/public/terrain/19/858495/353784.terrain b/public/terrain/19/858495/353784.terrain new file mode 100644 index 000000000..e2d235cec Binary files /dev/null and b/public/terrain/19/858495/353784.terrain differ diff --git a/public/terrain/19/858495/353785.terrain b/public/terrain/19/858495/353785.terrain new file mode 100644 index 000000000..84ba4bbcc Binary files /dev/null and b/public/terrain/19/858495/353785.terrain differ diff --git a/public/terrain/19/858495/353786.terrain b/public/terrain/19/858495/353786.terrain new file mode 100644 index 000000000..830bb5e9c Binary files /dev/null and b/public/terrain/19/858495/353786.terrain differ diff --git a/public/terrain/19/858495/353787.terrain b/public/terrain/19/858495/353787.terrain new file mode 100644 index 000000000..238bd4231 Binary files /dev/null and b/public/terrain/19/858495/353787.terrain differ diff --git a/public/terrain/19/858495/353788.terrain b/public/terrain/19/858495/353788.terrain new file mode 100644 index 000000000..06ce59475 Binary files /dev/null and b/public/terrain/19/858495/353788.terrain differ diff --git a/public/terrain/19/858495/353789.terrain b/public/terrain/19/858495/353789.terrain new file mode 100644 index 000000000..7486ca096 Binary files /dev/null and b/public/terrain/19/858495/353789.terrain differ diff --git a/public/terrain/19/858495/353790.terrain b/public/terrain/19/858495/353790.terrain new file mode 100644 index 000000000..fd60cfe08 Binary files /dev/null and b/public/terrain/19/858495/353790.terrain differ diff --git a/public/terrain/19/858495/353791.terrain b/public/terrain/19/858495/353791.terrain new file mode 100644 index 000000000..be9ac0c9d Binary files /dev/null and b/public/terrain/19/858495/353791.terrain differ diff --git a/public/terrain/19/858495/353792.terrain b/public/terrain/19/858495/353792.terrain new file mode 100644 index 000000000..9b5b8bff4 Binary files /dev/null and b/public/terrain/19/858495/353792.terrain differ diff --git a/public/terrain/19/858495/353793.terrain b/public/terrain/19/858495/353793.terrain new file mode 100644 index 000000000..b52514a2b Binary files /dev/null and b/public/terrain/19/858495/353793.terrain differ diff --git a/public/terrain/19/858495/353794.terrain b/public/terrain/19/858495/353794.terrain new file mode 100644 index 000000000..c3050dbfd Binary files /dev/null and b/public/terrain/19/858495/353794.terrain differ diff --git a/public/terrain/19/858495/353795.terrain b/public/terrain/19/858495/353795.terrain new file mode 100644 index 000000000..2f0bccfa8 Binary files /dev/null and b/public/terrain/19/858495/353795.terrain differ diff --git a/public/terrain/19/858495/353796.terrain b/public/terrain/19/858495/353796.terrain new file mode 100644 index 000000000..3d6c4a28f Binary files /dev/null and b/public/terrain/19/858495/353796.terrain differ diff --git a/public/terrain/19/858495/353797.terrain b/public/terrain/19/858495/353797.terrain new file mode 100644 index 000000000..2c0ea4c4c Binary files /dev/null and b/public/terrain/19/858495/353797.terrain differ diff --git a/public/terrain/19/858495/353798.terrain b/public/terrain/19/858495/353798.terrain new file mode 100644 index 000000000..207aae3ad Binary files /dev/null and b/public/terrain/19/858495/353798.terrain differ diff --git a/public/terrain/19/858495/353799.terrain b/public/terrain/19/858495/353799.terrain new file mode 100644 index 000000000..61c6bf6cd Binary files /dev/null and b/public/terrain/19/858495/353799.terrain differ diff --git a/public/terrain/19/858495/353800.terrain b/public/terrain/19/858495/353800.terrain new file mode 100644 index 000000000..c4614308b Binary files /dev/null and b/public/terrain/19/858495/353800.terrain differ diff --git a/public/terrain/19/858495/353801.terrain b/public/terrain/19/858495/353801.terrain new file mode 100644 index 000000000..c734bffa9 Binary files /dev/null and b/public/terrain/19/858495/353801.terrain differ diff --git a/public/terrain/19/858495/353802.terrain b/public/terrain/19/858495/353802.terrain new file mode 100644 index 000000000..c45084988 Binary files /dev/null and b/public/terrain/19/858495/353802.terrain differ diff --git a/public/terrain/19/858495/353803.terrain b/public/terrain/19/858495/353803.terrain new file mode 100644 index 000000000..2bdb798d2 Binary files /dev/null and b/public/terrain/19/858495/353803.terrain differ diff --git a/public/terrain/19/858495/353804.terrain b/public/terrain/19/858495/353804.terrain new file mode 100644 index 000000000..9285d6c61 Binary files /dev/null and b/public/terrain/19/858495/353804.terrain differ diff --git a/public/terrain/19/858495/353805.terrain b/public/terrain/19/858495/353805.terrain new file mode 100644 index 000000000..a3fbc04ff Binary files /dev/null and b/public/terrain/19/858495/353805.terrain differ diff --git a/public/terrain/19/858495/353806.terrain b/public/terrain/19/858495/353806.terrain new file mode 100644 index 000000000..8addbff70 Binary files /dev/null and b/public/terrain/19/858495/353806.terrain differ diff --git a/public/terrain/19/858495/353807.terrain b/public/terrain/19/858495/353807.terrain new file mode 100644 index 000000000..d6a1a7114 Binary files /dev/null and b/public/terrain/19/858495/353807.terrain differ diff --git a/public/terrain/19/858495/353808.terrain b/public/terrain/19/858495/353808.terrain new file mode 100644 index 000000000..fabc870c6 Binary files /dev/null and b/public/terrain/19/858495/353808.terrain differ diff --git a/public/terrain/19/858495/353809.terrain b/public/terrain/19/858495/353809.terrain new file mode 100644 index 000000000..243d7dd70 Binary files /dev/null and b/public/terrain/19/858495/353809.terrain differ diff --git a/public/terrain/19/858495/353810.terrain b/public/terrain/19/858495/353810.terrain new file mode 100644 index 000000000..51f512122 Binary files /dev/null and b/public/terrain/19/858495/353810.terrain differ diff --git a/public/terrain/19/858495/353811.terrain b/public/terrain/19/858495/353811.terrain new file mode 100644 index 000000000..eb62d7d42 Binary files /dev/null and b/public/terrain/19/858495/353811.terrain differ diff --git a/public/terrain/19/858495/353812.terrain b/public/terrain/19/858495/353812.terrain new file mode 100644 index 000000000..727c91465 Binary files /dev/null and b/public/terrain/19/858495/353812.terrain differ diff --git a/public/terrain/19/858495/353813.terrain b/public/terrain/19/858495/353813.terrain new file mode 100644 index 000000000..11f30e195 Binary files /dev/null and b/public/terrain/19/858495/353813.terrain differ diff --git a/public/terrain/19/858495/353814.terrain b/public/terrain/19/858495/353814.terrain new file mode 100644 index 000000000..c8b7f4f5a Binary files /dev/null and b/public/terrain/19/858495/353814.terrain differ diff --git a/public/terrain/19/858495/353815.terrain b/public/terrain/19/858495/353815.terrain new file mode 100644 index 000000000..af63059cb Binary files /dev/null and b/public/terrain/19/858495/353815.terrain differ diff --git a/public/terrain/19/858495/353816.terrain b/public/terrain/19/858495/353816.terrain new file mode 100644 index 000000000..a20e2bae8 Binary files /dev/null and b/public/terrain/19/858495/353816.terrain differ diff --git a/public/terrain/19/858495/353817.terrain b/public/terrain/19/858495/353817.terrain new file mode 100644 index 000000000..daee74b7c Binary files /dev/null and b/public/terrain/19/858495/353817.terrain differ diff --git a/public/terrain/19/858495/353818.terrain b/public/terrain/19/858495/353818.terrain new file mode 100644 index 000000000..c39950b2e Binary files /dev/null and b/public/terrain/19/858495/353818.terrain differ diff --git a/public/terrain/19/858495/353819.terrain b/public/terrain/19/858495/353819.terrain new file mode 100644 index 000000000..496b47756 Binary files /dev/null and b/public/terrain/19/858495/353819.terrain differ diff --git a/public/terrain/19/858495/353820.terrain b/public/terrain/19/858495/353820.terrain new file mode 100644 index 000000000..1470c7cdc Binary files /dev/null and b/public/terrain/19/858495/353820.terrain differ diff --git a/public/terrain/19/858495/353821.terrain b/public/terrain/19/858495/353821.terrain new file mode 100644 index 000000000..eac756977 Binary files /dev/null and b/public/terrain/19/858495/353821.terrain differ diff --git a/public/terrain/19/858495/353822.terrain b/public/terrain/19/858495/353822.terrain new file mode 100644 index 000000000..a24a4cdb0 Binary files /dev/null and b/public/terrain/19/858495/353822.terrain differ diff --git a/public/terrain/19/858495/353823.terrain b/public/terrain/19/858495/353823.terrain new file mode 100644 index 000000000..00589cf96 Binary files /dev/null and b/public/terrain/19/858495/353823.terrain differ diff --git a/public/terrain/19/858495/353824.terrain b/public/terrain/19/858495/353824.terrain new file mode 100644 index 000000000..51568d04f Binary files /dev/null and b/public/terrain/19/858495/353824.terrain differ diff --git a/public/terrain/19/858495/353825.terrain b/public/terrain/19/858495/353825.terrain new file mode 100644 index 000000000..feaab8951 Binary files /dev/null and b/public/terrain/19/858495/353825.terrain differ diff --git a/public/terrain/19/858495/353826.terrain b/public/terrain/19/858495/353826.terrain new file mode 100644 index 000000000..5f15cd3d9 Binary files /dev/null and b/public/terrain/19/858495/353826.terrain differ diff --git a/public/terrain/19/858495/353827.terrain b/public/terrain/19/858495/353827.terrain new file mode 100644 index 000000000..94f622fe9 Binary files /dev/null and b/public/terrain/19/858495/353827.terrain differ diff --git a/public/terrain/19/858495/353828.terrain b/public/terrain/19/858495/353828.terrain new file mode 100644 index 000000000..f7ee341bc Binary files /dev/null and b/public/terrain/19/858495/353828.terrain differ diff --git a/public/terrain/19/858495/353829.terrain b/public/terrain/19/858495/353829.terrain new file mode 100644 index 000000000..90abb0aba Binary files /dev/null and b/public/terrain/19/858495/353829.terrain differ diff --git a/public/terrain/19/858495/353830.terrain b/public/terrain/19/858495/353830.terrain new file mode 100644 index 000000000..cc7abd73e Binary files /dev/null and b/public/terrain/19/858495/353830.terrain differ diff --git a/public/terrain/19/858495/353831.terrain b/public/terrain/19/858495/353831.terrain new file mode 100644 index 000000000..93712c78f Binary files /dev/null and b/public/terrain/19/858495/353831.terrain differ diff --git a/public/terrain/19/858495/353832.terrain b/public/terrain/19/858495/353832.terrain new file mode 100644 index 000000000..b5b6d650b Binary files /dev/null and b/public/terrain/19/858495/353832.terrain differ diff --git a/public/terrain/19/858495/353833.terrain b/public/terrain/19/858495/353833.terrain new file mode 100644 index 000000000..0f3320e0c Binary files /dev/null and b/public/terrain/19/858495/353833.terrain differ diff --git a/public/terrain/19/858495/353834.terrain b/public/terrain/19/858495/353834.terrain new file mode 100644 index 000000000..9dcea114f Binary files /dev/null and b/public/terrain/19/858495/353834.terrain differ diff --git a/public/terrain/19/858495/353835.terrain b/public/terrain/19/858495/353835.terrain new file mode 100644 index 000000000..580ab60dc Binary files /dev/null and b/public/terrain/19/858495/353835.terrain differ diff --git a/public/terrain/19/858495/353836.terrain b/public/terrain/19/858495/353836.terrain new file mode 100644 index 000000000..0dbaaa8a9 Binary files /dev/null and b/public/terrain/19/858495/353836.terrain differ diff --git a/public/terrain/19/858495/353837.terrain b/public/terrain/19/858495/353837.terrain new file mode 100644 index 000000000..b6a202bbc Binary files /dev/null and b/public/terrain/19/858495/353837.terrain differ diff --git a/public/terrain/19/858495/353838.terrain b/public/terrain/19/858495/353838.terrain new file mode 100644 index 000000000..af742bb88 Binary files /dev/null and b/public/terrain/19/858495/353838.terrain differ diff --git a/public/terrain/19/858495/353839.terrain b/public/terrain/19/858495/353839.terrain new file mode 100644 index 000000000..43868b55b Binary files /dev/null and b/public/terrain/19/858495/353839.terrain differ diff --git a/public/terrain/19/858495/353840.terrain b/public/terrain/19/858495/353840.terrain new file mode 100644 index 000000000..b498a69a8 Binary files /dev/null and b/public/terrain/19/858495/353840.terrain differ diff --git a/public/terrain/19/858495/353841.terrain b/public/terrain/19/858495/353841.terrain new file mode 100644 index 000000000..cb57eeec0 Binary files /dev/null and b/public/terrain/19/858495/353841.terrain differ diff --git a/public/terrain/19/858495/353842.terrain b/public/terrain/19/858495/353842.terrain new file mode 100644 index 000000000..c43280d4c Binary files /dev/null and b/public/terrain/19/858495/353842.terrain differ diff --git a/public/terrain/19/858495/353843.terrain b/public/terrain/19/858495/353843.terrain new file mode 100644 index 000000000..6e5de6401 Binary files /dev/null and b/public/terrain/19/858495/353843.terrain differ diff --git a/public/terrain/19/858495/353844.terrain b/public/terrain/19/858495/353844.terrain new file mode 100644 index 000000000..59cc11e4b Binary files /dev/null and b/public/terrain/19/858495/353844.terrain differ diff --git a/public/terrain/19/858495/353845.terrain b/public/terrain/19/858495/353845.terrain new file mode 100644 index 000000000..aed647db7 Binary files /dev/null and b/public/terrain/19/858495/353845.terrain differ diff --git a/public/terrain/19/858495/353846.terrain b/public/terrain/19/858495/353846.terrain new file mode 100644 index 000000000..43e61a506 Binary files /dev/null and b/public/terrain/19/858495/353846.terrain differ diff --git a/public/terrain/19/858495/353847.terrain b/public/terrain/19/858495/353847.terrain new file mode 100644 index 000000000..3205a8d26 Binary files /dev/null and b/public/terrain/19/858495/353847.terrain differ diff --git a/public/terrain/19/858495/353848.terrain b/public/terrain/19/858495/353848.terrain new file mode 100644 index 000000000..8dcf13f19 Binary files /dev/null and b/public/terrain/19/858495/353848.terrain differ diff --git a/public/terrain/19/858495/353849.terrain b/public/terrain/19/858495/353849.terrain new file mode 100644 index 000000000..e5cfeb368 Binary files /dev/null and b/public/terrain/19/858495/353849.terrain differ diff --git a/public/terrain/19/858495/353850.terrain b/public/terrain/19/858495/353850.terrain new file mode 100644 index 000000000..06e8e8373 Binary files /dev/null and b/public/terrain/19/858495/353850.terrain differ diff --git a/public/terrain/19/858495/353851.terrain b/public/terrain/19/858495/353851.terrain new file mode 100644 index 000000000..6bbd56430 Binary files /dev/null and b/public/terrain/19/858495/353851.terrain differ diff --git a/public/terrain/19/858495/353852.terrain b/public/terrain/19/858495/353852.terrain new file mode 100644 index 000000000..4330c59f6 Binary files /dev/null and b/public/terrain/19/858495/353852.terrain differ diff --git a/public/terrain/19/858495/353853.terrain b/public/terrain/19/858495/353853.terrain new file mode 100644 index 000000000..699ca8294 Binary files /dev/null and b/public/terrain/19/858495/353853.terrain differ diff --git a/public/terrain/19/858495/353854.terrain b/public/terrain/19/858495/353854.terrain new file mode 100644 index 000000000..4b8be28bd Binary files /dev/null and b/public/terrain/19/858495/353854.terrain differ diff --git a/public/terrain/19/858495/353855.terrain b/public/terrain/19/858495/353855.terrain new file mode 100644 index 000000000..504941e6e Binary files /dev/null and b/public/terrain/19/858495/353855.terrain differ diff --git a/public/terrain/19/858495/353856.terrain b/public/terrain/19/858495/353856.terrain new file mode 100644 index 000000000..b6dc4436d Binary files /dev/null and b/public/terrain/19/858495/353856.terrain differ diff --git a/public/terrain/19/858495/353857.terrain b/public/terrain/19/858495/353857.terrain new file mode 100644 index 000000000..3bbb63466 Binary files /dev/null and b/public/terrain/19/858495/353857.terrain differ diff --git a/public/terrain/19/858495/353858.terrain b/public/terrain/19/858495/353858.terrain new file mode 100644 index 000000000..02f3f70b7 Binary files /dev/null and b/public/terrain/19/858495/353858.terrain differ diff --git a/public/terrain/19/858495/353859.terrain b/public/terrain/19/858495/353859.terrain new file mode 100644 index 000000000..5bf348712 Binary files /dev/null and b/public/terrain/19/858495/353859.terrain differ diff --git a/public/terrain/19/858495/353860.terrain b/public/terrain/19/858495/353860.terrain new file mode 100644 index 000000000..1db4372af Binary files /dev/null and b/public/terrain/19/858495/353860.terrain differ diff --git a/public/terrain/19/858495/353861.terrain b/public/terrain/19/858495/353861.terrain new file mode 100644 index 000000000..5e79bec09 Binary files /dev/null and b/public/terrain/19/858495/353861.terrain differ diff --git a/public/terrain/19/858495/353862.terrain b/public/terrain/19/858495/353862.terrain new file mode 100644 index 000000000..c5df88546 Binary files /dev/null and b/public/terrain/19/858495/353862.terrain differ diff --git a/public/terrain/19/858495/353863.terrain b/public/terrain/19/858495/353863.terrain new file mode 100644 index 000000000..b4b37dc1a Binary files /dev/null and b/public/terrain/19/858495/353863.terrain differ diff --git a/public/terrain/19/858495/353864.terrain b/public/terrain/19/858495/353864.terrain new file mode 100644 index 000000000..8da2755dd Binary files /dev/null and b/public/terrain/19/858495/353864.terrain differ diff --git a/public/terrain/19/858495/353865.terrain b/public/terrain/19/858495/353865.terrain new file mode 100644 index 000000000..41eec7491 Binary files /dev/null and b/public/terrain/19/858495/353865.terrain differ diff --git a/public/terrain/19/858495/353866.terrain b/public/terrain/19/858495/353866.terrain new file mode 100644 index 000000000..89627e54b Binary files /dev/null and b/public/terrain/19/858495/353866.terrain differ diff --git a/public/terrain/19/858495/353867.terrain b/public/terrain/19/858495/353867.terrain new file mode 100644 index 000000000..9a0ed165f Binary files /dev/null and b/public/terrain/19/858495/353867.terrain differ diff --git a/public/terrain/19/858495/353868.terrain b/public/terrain/19/858495/353868.terrain new file mode 100644 index 000000000..14d190e1b Binary files /dev/null and b/public/terrain/19/858495/353868.terrain differ diff --git a/public/terrain/19/858495/353869.terrain b/public/terrain/19/858495/353869.terrain new file mode 100644 index 000000000..8e37b1f0d Binary files /dev/null and b/public/terrain/19/858495/353869.terrain differ diff --git a/public/terrain/19/858495/353870.terrain b/public/terrain/19/858495/353870.terrain new file mode 100644 index 000000000..049a80dbd Binary files /dev/null and b/public/terrain/19/858495/353870.terrain differ diff --git a/public/terrain/19/858495/353871.terrain b/public/terrain/19/858495/353871.terrain new file mode 100644 index 000000000..dd0efdda7 Binary files /dev/null and b/public/terrain/19/858495/353871.terrain differ diff --git a/public/terrain/19/858495/353872.terrain b/public/terrain/19/858495/353872.terrain new file mode 100644 index 000000000..59e86400e Binary files /dev/null and b/public/terrain/19/858495/353872.terrain differ diff --git a/public/terrain/19/858495/353873.terrain b/public/terrain/19/858495/353873.terrain new file mode 100644 index 000000000..169ec9454 Binary files /dev/null and b/public/terrain/19/858495/353873.terrain differ diff --git a/public/terrain/19/858495/353874.terrain b/public/terrain/19/858495/353874.terrain new file mode 100644 index 000000000..5ee132014 Binary files /dev/null and b/public/terrain/19/858495/353874.terrain differ diff --git a/public/terrain/19/858495/353875.terrain b/public/terrain/19/858495/353875.terrain new file mode 100644 index 000000000..bed1249c3 Binary files /dev/null and b/public/terrain/19/858495/353875.terrain differ diff --git a/public/terrain/19/858495/353876.terrain b/public/terrain/19/858495/353876.terrain new file mode 100644 index 000000000..6f6d2a15f Binary files /dev/null and b/public/terrain/19/858495/353876.terrain differ diff --git a/public/terrain/19/858495/353877.terrain b/public/terrain/19/858495/353877.terrain new file mode 100644 index 000000000..22ee2d97c Binary files /dev/null and b/public/terrain/19/858495/353877.terrain differ diff --git a/public/terrain/19/858495/353878.terrain b/public/terrain/19/858495/353878.terrain new file mode 100644 index 000000000..bbb02f3a6 Binary files /dev/null and b/public/terrain/19/858495/353878.terrain differ diff --git a/public/terrain/19/858495/353879.terrain b/public/terrain/19/858495/353879.terrain new file mode 100644 index 000000000..55b1576b8 Binary files /dev/null and b/public/terrain/19/858495/353879.terrain differ diff --git a/public/terrain/19/858495/353880.terrain b/public/terrain/19/858495/353880.terrain new file mode 100644 index 000000000..99149a968 Binary files /dev/null and b/public/terrain/19/858495/353880.terrain differ diff --git a/public/terrain/19/858495/353881.terrain b/public/terrain/19/858495/353881.terrain new file mode 100644 index 000000000..7453f026d Binary files /dev/null and b/public/terrain/19/858495/353881.terrain differ diff --git a/public/terrain/19/858495/353882.terrain b/public/terrain/19/858495/353882.terrain new file mode 100644 index 000000000..33938fe72 Binary files /dev/null and b/public/terrain/19/858495/353882.terrain differ diff --git a/public/terrain/19/858495/353883.terrain b/public/terrain/19/858495/353883.terrain new file mode 100644 index 000000000..df7e26742 Binary files /dev/null and b/public/terrain/19/858495/353883.terrain differ diff --git a/public/terrain/19/858495/353884.terrain b/public/terrain/19/858495/353884.terrain new file mode 100644 index 000000000..48b4b1cf3 Binary files /dev/null and b/public/terrain/19/858495/353884.terrain differ diff --git a/public/terrain/19/858495/353885.terrain b/public/terrain/19/858495/353885.terrain new file mode 100644 index 000000000..15d993b6e Binary files /dev/null and b/public/terrain/19/858495/353885.terrain differ diff --git a/public/terrain/19/858495/353886.terrain b/public/terrain/19/858495/353886.terrain new file mode 100644 index 000000000..d057f3cfe Binary files /dev/null and b/public/terrain/19/858495/353886.terrain differ diff --git a/public/terrain/19/858495/353887.terrain b/public/terrain/19/858495/353887.terrain new file mode 100644 index 000000000..1e822d2ad Binary files /dev/null and b/public/terrain/19/858495/353887.terrain differ diff --git a/public/terrain/19/858495/353888.terrain b/public/terrain/19/858495/353888.terrain new file mode 100644 index 000000000..710226ce4 Binary files /dev/null and b/public/terrain/19/858495/353888.terrain differ diff --git a/public/terrain/19/858495/353889.terrain b/public/terrain/19/858495/353889.terrain new file mode 100644 index 000000000..d7c3908f7 Binary files /dev/null and b/public/terrain/19/858495/353889.terrain differ diff --git a/public/terrain/19/858495/353890.terrain b/public/terrain/19/858495/353890.terrain new file mode 100644 index 000000000..351beb974 Binary files /dev/null and b/public/terrain/19/858495/353890.terrain differ diff --git a/public/terrain/19/858495/353891.terrain b/public/terrain/19/858495/353891.terrain new file mode 100644 index 000000000..c24b3510e Binary files /dev/null and b/public/terrain/19/858495/353891.terrain differ diff --git a/public/terrain/19/858495/353892.terrain b/public/terrain/19/858495/353892.terrain new file mode 100644 index 000000000..0c60e989d Binary files /dev/null and b/public/terrain/19/858495/353892.terrain differ diff --git a/public/terrain/19/858495/353893.terrain b/public/terrain/19/858495/353893.terrain new file mode 100644 index 000000000..8a180c060 Binary files /dev/null and b/public/terrain/19/858495/353893.terrain differ diff --git a/public/terrain/19/858495/353894.terrain b/public/terrain/19/858495/353894.terrain new file mode 100644 index 000000000..9616a2578 Binary files /dev/null and b/public/terrain/19/858495/353894.terrain differ diff --git a/public/terrain/19/858495/353895.terrain b/public/terrain/19/858495/353895.terrain new file mode 100644 index 000000000..cb8486d3f Binary files /dev/null and b/public/terrain/19/858495/353895.terrain differ diff --git a/public/terrain/19/858495/353896.terrain b/public/terrain/19/858495/353896.terrain new file mode 100644 index 000000000..7c107d484 Binary files /dev/null and b/public/terrain/19/858495/353896.terrain differ diff --git a/public/terrain/19/858495/353897.terrain b/public/terrain/19/858495/353897.terrain new file mode 100644 index 000000000..0bbf0fcd1 Binary files /dev/null and b/public/terrain/19/858495/353897.terrain differ diff --git a/public/terrain/19/858495/353898.terrain b/public/terrain/19/858495/353898.terrain new file mode 100644 index 000000000..a69bb2782 Binary files /dev/null and b/public/terrain/19/858495/353898.terrain differ diff --git a/public/terrain/19/858495/353899.terrain b/public/terrain/19/858495/353899.terrain new file mode 100644 index 000000000..76822f3ab Binary files /dev/null and b/public/terrain/19/858495/353899.terrain differ diff --git a/public/terrain/19/858495/353900.terrain b/public/terrain/19/858495/353900.terrain new file mode 100644 index 000000000..0f075d891 Binary files /dev/null and b/public/terrain/19/858495/353900.terrain differ diff --git a/public/terrain/19/858495/353901.terrain b/public/terrain/19/858495/353901.terrain new file mode 100644 index 000000000..9fe39dfcd Binary files /dev/null and b/public/terrain/19/858495/353901.terrain differ diff --git a/public/terrain/19/858495/353902.terrain b/public/terrain/19/858495/353902.terrain new file mode 100644 index 000000000..9379cbfb9 Binary files /dev/null and b/public/terrain/19/858495/353902.terrain differ diff --git a/public/terrain/19/858495/353903.terrain b/public/terrain/19/858495/353903.terrain new file mode 100644 index 000000000..68490483d Binary files /dev/null and b/public/terrain/19/858495/353903.terrain differ diff --git a/public/terrain/19/858495/353904.terrain b/public/terrain/19/858495/353904.terrain new file mode 100644 index 000000000..8c4e9dbb1 Binary files /dev/null and b/public/terrain/19/858495/353904.terrain differ diff --git a/public/terrain/19/858495/353905.terrain b/public/terrain/19/858495/353905.terrain new file mode 100644 index 000000000..c57968e44 Binary files /dev/null and b/public/terrain/19/858495/353905.terrain differ diff --git a/public/terrain/19/858495/353906.terrain b/public/terrain/19/858495/353906.terrain new file mode 100644 index 000000000..fc7674cec Binary files /dev/null and b/public/terrain/19/858495/353906.terrain differ diff --git a/public/terrain/19/858495/353907.terrain b/public/terrain/19/858495/353907.terrain new file mode 100644 index 000000000..0c822cfef Binary files /dev/null and b/public/terrain/19/858495/353907.terrain differ diff --git a/public/terrain/19/858495/353908.terrain b/public/terrain/19/858495/353908.terrain new file mode 100644 index 000000000..88e1f25a4 Binary files /dev/null and b/public/terrain/19/858495/353908.terrain differ diff --git a/public/terrain/19/858495/353909.terrain b/public/terrain/19/858495/353909.terrain new file mode 100644 index 000000000..cdde21f3f Binary files /dev/null and b/public/terrain/19/858495/353909.terrain differ diff --git a/public/terrain/19/858495/353910.terrain b/public/terrain/19/858495/353910.terrain new file mode 100644 index 000000000..e1d9a2037 Binary files /dev/null and b/public/terrain/19/858495/353910.terrain differ diff --git a/public/terrain/19/858495/353911.terrain b/public/terrain/19/858495/353911.terrain new file mode 100644 index 000000000..5acac0537 Binary files /dev/null and b/public/terrain/19/858495/353911.terrain differ diff --git a/public/terrain/19/858495/353912.terrain b/public/terrain/19/858495/353912.terrain new file mode 100644 index 000000000..2acad04a0 Binary files /dev/null and b/public/terrain/19/858495/353912.terrain differ diff --git a/public/terrain/19/858495/353913.terrain b/public/terrain/19/858495/353913.terrain new file mode 100644 index 000000000..c90107f87 Binary files /dev/null and b/public/terrain/19/858495/353913.terrain differ diff --git a/public/terrain/19/858495/353914.terrain b/public/terrain/19/858495/353914.terrain new file mode 100644 index 000000000..c220a8987 Binary files /dev/null and b/public/terrain/19/858495/353914.terrain differ diff --git a/public/terrain/19/858495/353915.terrain b/public/terrain/19/858495/353915.terrain new file mode 100644 index 000000000..a26370891 Binary files /dev/null and b/public/terrain/19/858495/353915.terrain differ diff --git a/public/terrain/19/858495/353916.terrain b/public/terrain/19/858495/353916.terrain new file mode 100644 index 000000000..1489fa54d Binary files /dev/null and b/public/terrain/19/858495/353916.terrain differ diff --git a/public/terrain/19/858495/353917.terrain b/public/terrain/19/858495/353917.terrain new file mode 100644 index 000000000..4e6b0151d Binary files /dev/null and b/public/terrain/19/858495/353917.terrain differ diff --git a/public/terrain/19/858495/353918.terrain b/public/terrain/19/858495/353918.terrain new file mode 100644 index 000000000..bd502dead Binary files /dev/null and b/public/terrain/19/858495/353918.terrain differ diff --git a/public/terrain/19/858495/353919.terrain b/public/terrain/19/858495/353919.terrain new file mode 100644 index 000000000..e9a0d109f Binary files /dev/null and b/public/terrain/19/858495/353919.terrain differ diff --git a/public/terrain/19/858495/353920.terrain b/public/terrain/19/858495/353920.terrain new file mode 100644 index 000000000..70b55b56a Binary files /dev/null and b/public/terrain/19/858495/353920.terrain differ diff --git a/public/terrain/19/858495/353921.terrain b/public/terrain/19/858495/353921.terrain new file mode 100644 index 000000000..b418eb187 Binary files /dev/null and b/public/terrain/19/858495/353921.terrain differ diff --git a/public/terrain/19/858495/353922.terrain b/public/terrain/19/858495/353922.terrain new file mode 100644 index 000000000..a56c8775c Binary files /dev/null and b/public/terrain/19/858495/353922.terrain differ diff --git a/public/terrain/19/858495/353923.terrain b/public/terrain/19/858495/353923.terrain new file mode 100644 index 000000000..5ec257d83 Binary files /dev/null and b/public/terrain/19/858495/353923.terrain differ diff --git a/public/terrain/19/858495/353924.terrain b/public/terrain/19/858495/353924.terrain new file mode 100644 index 000000000..5e876e22c Binary files /dev/null and b/public/terrain/19/858495/353924.terrain differ diff --git a/public/terrain/19/858495/353925.terrain b/public/terrain/19/858495/353925.terrain new file mode 100644 index 000000000..83799cc64 Binary files /dev/null and b/public/terrain/19/858495/353925.terrain differ diff --git a/public/terrain/19/858495/353926.terrain b/public/terrain/19/858495/353926.terrain new file mode 100644 index 000000000..c412f58a6 Binary files /dev/null and b/public/terrain/19/858495/353926.terrain differ diff --git a/public/terrain/19/858495/353927.terrain b/public/terrain/19/858495/353927.terrain new file mode 100644 index 000000000..0dd0e13e6 Binary files /dev/null and b/public/terrain/19/858495/353927.terrain differ diff --git a/public/terrain/19/858495/353928.terrain b/public/terrain/19/858495/353928.terrain new file mode 100644 index 000000000..6b3e157a7 Binary files /dev/null and b/public/terrain/19/858495/353928.terrain differ diff --git a/public/terrain/19/858495/353929.terrain b/public/terrain/19/858495/353929.terrain new file mode 100644 index 000000000..f797262b2 Binary files /dev/null and b/public/terrain/19/858495/353929.terrain differ diff --git a/public/terrain/19/858495/353930.terrain b/public/terrain/19/858495/353930.terrain new file mode 100644 index 000000000..93456b649 Binary files /dev/null and b/public/terrain/19/858495/353930.terrain differ diff --git a/public/terrain/19/858495/353931.terrain b/public/terrain/19/858495/353931.terrain new file mode 100644 index 000000000..5dff6ca80 Binary files /dev/null and b/public/terrain/19/858495/353931.terrain differ diff --git a/public/terrain/19/858495/353932.terrain b/public/terrain/19/858495/353932.terrain new file mode 100644 index 000000000..02f751c8e Binary files /dev/null and b/public/terrain/19/858495/353932.terrain differ diff --git a/public/terrain/19/858495/353933.terrain b/public/terrain/19/858495/353933.terrain new file mode 100644 index 000000000..bcd2314ec Binary files /dev/null and b/public/terrain/19/858495/353933.terrain differ diff --git a/public/terrain/19/858495/353934.terrain b/public/terrain/19/858495/353934.terrain new file mode 100644 index 000000000..cc19b18c2 Binary files /dev/null and b/public/terrain/19/858495/353934.terrain differ diff --git a/public/terrain/19/858495/353935.terrain b/public/terrain/19/858495/353935.terrain new file mode 100644 index 000000000..4500080f9 Binary files /dev/null and b/public/terrain/19/858495/353935.terrain differ diff --git a/public/terrain/19/858495/353936.terrain b/public/terrain/19/858495/353936.terrain new file mode 100644 index 000000000..e3e1bcd72 Binary files /dev/null and b/public/terrain/19/858495/353936.terrain differ diff --git a/public/terrain/19/858495/353937.terrain b/public/terrain/19/858495/353937.terrain new file mode 100644 index 000000000..fd20d9d21 Binary files /dev/null and b/public/terrain/19/858495/353937.terrain differ diff --git a/public/terrain/19/858495/353938.terrain b/public/terrain/19/858495/353938.terrain new file mode 100644 index 000000000..c846c1385 Binary files /dev/null and b/public/terrain/19/858495/353938.terrain differ diff --git a/public/terrain/19/858495/353939.terrain b/public/terrain/19/858495/353939.terrain new file mode 100644 index 000000000..10a673026 Binary files /dev/null and b/public/terrain/19/858495/353939.terrain differ diff --git a/public/terrain/19/858495/353940.terrain b/public/terrain/19/858495/353940.terrain new file mode 100644 index 000000000..ddce53a21 Binary files /dev/null and b/public/terrain/19/858495/353940.terrain differ diff --git a/public/terrain/19/858495/353941.terrain b/public/terrain/19/858495/353941.terrain new file mode 100644 index 000000000..dfccb5bc2 Binary files /dev/null and b/public/terrain/19/858495/353941.terrain differ diff --git a/public/terrain/19/858495/353942.terrain b/public/terrain/19/858495/353942.terrain new file mode 100644 index 000000000..c5995ea91 Binary files /dev/null and b/public/terrain/19/858495/353942.terrain differ diff --git a/public/terrain/19/858495/353943.terrain b/public/terrain/19/858495/353943.terrain new file mode 100644 index 000000000..47031380d Binary files /dev/null and b/public/terrain/19/858495/353943.terrain differ diff --git a/public/terrain/19/858495/353944.terrain b/public/terrain/19/858495/353944.terrain new file mode 100644 index 000000000..2e716ca2e Binary files /dev/null and b/public/terrain/19/858495/353944.terrain differ diff --git a/public/terrain/19/858495/353945.terrain b/public/terrain/19/858495/353945.terrain new file mode 100644 index 000000000..44f727766 Binary files /dev/null and b/public/terrain/19/858495/353945.terrain differ diff --git a/public/terrain/19/858495/353946.terrain b/public/terrain/19/858495/353946.terrain new file mode 100644 index 000000000..791cfad48 Binary files /dev/null and b/public/terrain/19/858495/353946.terrain differ diff --git a/public/terrain/19/858495/353947.terrain b/public/terrain/19/858495/353947.terrain new file mode 100644 index 000000000..86206347f Binary files /dev/null and b/public/terrain/19/858495/353947.terrain differ diff --git a/public/terrain/19/858495/353948.terrain b/public/terrain/19/858495/353948.terrain new file mode 100644 index 000000000..1f694b2c8 Binary files /dev/null and b/public/terrain/19/858495/353948.terrain differ diff --git a/public/terrain/19/858495/353949.terrain b/public/terrain/19/858495/353949.terrain new file mode 100644 index 000000000..3ac616770 Binary files /dev/null and b/public/terrain/19/858495/353949.terrain differ diff --git a/public/terrain/19/858495/353950.terrain b/public/terrain/19/858495/353950.terrain new file mode 100644 index 000000000..dd283fa51 Binary files /dev/null and b/public/terrain/19/858495/353950.terrain differ diff --git a/public/terrain/19/858495/353951.terrain b/public/terrain/19/858495/353951.terrain new file mode 100644 index 000000000..be3bbb206 Binary files /dev/null and b/public/terrain/19/858495/353951.terrain differ diff --git a/public/terrain/19/858495/353952.terrain b/public/terrain/19/858495/353952.terrain new file mode 100644 index 000000000..9f672ee16 Binary files /dev/null and b/public/terrain/19/858495/353952.terrain differ diff --git a/public/terrain/19/858495/353953.terrain b/public/terrain/19/858495/353953.terrain new file mode 100644 index 000000000..59f367316 Binary files /dev/null and b/public/terrain/19/858495/353953.terrain differ diff --git a/public/terrain/19/858495/353954.terrain b/public/terrain/19/858495/353954.terrain new file mode 100644 index 000000000..d5e309dd2 Binary files /dev/null and b/public/terrain/19/858495/353954.terrain differ diff --git a/public/terrain/19/858495/353955.terrain b/public/terrain/19/858495/353955.terrain new file mode 100644 index 000000000..c2c19a178 Binary files /dev/null and b/public/terrain/19/858495/353955.terrain differ diff --git a/public/terrain/19/858495/353956.terrain b/public/terrain/19/858495/353956.terrain new file mode 100644 index 000000000..4d5669bef Binary files /dev/null and b/public/terrain/19/858495/353956.terrain differ diff --git a/public/terrain/19/858495/353957.terrain b/public/terrain/19/858495/353957.terrain new file mode 100644 index 000000000..f19d82134 Binary files /dev/null and b/public/terrain/19/858495/353957.terrain differ diff --git a/public/terrain/19/858495/353958.terrain b/public/terrain/19/858495/353958.terrain new file mode 100644 index 000000000..616dc78f5 Binary files /dev/null and b/public/terrain/19/858495/353958.terrain differ diff --git a/public/terrain/19/858495/353959.terrain b/public/terrain/19/858495/353959.terrain new file mode 100644 index 000000000..80b74a6aa Binary files /dev/null and b/public/terrain/19/858495/353959.terrain differ diff --git a/public/terrain/19/858495/353960.terrain b/public/terrain/19/858495/353960.terrain new file mode 100644 index 000000000..9339f4d05 Binary files /dev/null and b/public/terrain/19/858495/353960.terrain differ diff --git a/public/terrain/19/858495/353961.terrain b/public/terrain/19/858495/353961.terrain new file mode 100644 index 000000000..9b00f7ac7 Binary files /dev/null and b/public/terrain/19/858495/353961.terrain differ diff --git a/public/terrain/19/858495/353962.terrain b/public/terrain/19/858495/353962.terrain new file mode 100644 index 000000000..8b8681f9b Binary files /dev/null and b/public/terrain/19/858495/353962.terrain differ diff --git a/public/terrain/19/858495/353963.terrain b/public/terrain/19/858495/353963.terrain new file mode 100644 index 000000000..d5c5d1806 Binary files /dev/null and b/public/terrain/19/858495/353963.terrain differ diff --git a/public/terrain/19/858495/353964.terrain b/public/terrain/19/858495/353964.terrain new file mode 100644 index 000000000..cc0b95706 Binary files /dev/null and b/public/terrain/19/858495/353964.terrain differ diff --git a/public/terrain/19/858495/353965.terrain b/public/terrain/19/858495/353965.terrain new file mode 100644 index 000000000..de9b2239e Binary files /dev/null and b/public/terrain/19/858495/353965.terrain differ diff --git a/public/terrain/19/858495/353966.terrain b/public/terrain/19/858495/353966.terrain new file mode 100644 index 000000000..3aeca46ec Binary files /dev/null and b/public/terrain/19/858495/353966.terrain differ diff --git a/public/terrain/19/858495/353967.terrain b/public/terrain/19/858495/353967.terrain new file mode 100644 index 000000000..a82a85bc5 Binary files /dev/null and b/public/terrain/19/858495/353967.terrain differ diff --git a/public/terrain/19/858495/353968.terrain b/public/terrain/19/858495/353968.terrain new file mode 100644 index 000000000..46093fe38 Binary files /dev/null and b/public/terrain/19/858495/353968.terrain differ diff --git a/public/terrain/19/858495/353969.terrain b/public/terrain/19/858495/353969.terrain new file mode 100644 index 000000000..9ca418412 Binary files /dev/null and b/public/terrain/19/858495/353969.terrain differ diff --git a/public/terrain/19/858495/353970.terrain b/public/terrain/19/858495/353970.terrain new file mode 100644 index 000000000..d98ee1939 Binary files /dev/null and b/public/terrain/19/858495/353970.terrain differ diff --git a/public/terrain/19/858495/353971.terrain b/public/terrain/19/858495/353971.terrain new file mode 100644 index 000000000..337530186 Binary files /dev/null and b/public/terrain/19/858495/353971.terrain differ diff --git a/public/terrain/19/858495/353972.terrain b/public/terrain/19/858495/353972.terrain new file mode 100644 index 000000000..a1f1cb279 Binary files /dev/null and b/public/terrain/19/858495/353972.terrain differ diff --git a/public/terrain/19/858495/353973.terrain b/public/terrain/19/858495/353973.terrain new file mode 100644 index 000000000..b0f0f6da1 Binary files /dev/null and b/public/terrain/19/858495/353973.terrain differ diff --git a/public/terrain/19/858495/353974.terrain b/public/terrain/19/858495/353974.terrain new file mode 100644 index 000000000..57bdc9b58 Binary files /dev/null and b/public/terrain/19/858495/353974.terrain differ diff --git a/public/terrain/19/858495/353975.terrain b/public/terrain/19/858495/353975.terrain new file mode 100644 index 000000000..13c2fbd36 Binary files /dev/null and b/public/terrain/19/858495/353975.terrain differ diff --git a/public/terrain/19/858495/353976.terrain b/public/terrain/19/858495/353976.terrain new file mode 100644 index 000000000..4d20a5203 Binary files /dev/null and b/public/terrain/19/858495/353976.terrain differ diff --git a/public/terrain/19/858495/353977.terrain b/public/terrain/19/858495/353977.terrain new file mode 100644 index 000000000..2beaca8b8 Binary files /dev/null and b/public/terrain/19/858495/353977.terrain differ diff --git a/public/terrain/19/858495/353978.terrain b/public/terrain/19/858495/353978.terrain new file mode 100644 index 000000000..e54d3dfa6 Binary files /dev/null and b/public/terrain/19/858495/353978.terrain differ diff --git a/public/terrain/19/858495/353979.terrain b/public/terrain/19/858495/353979.terrain new file mode 100644 index 000000000..9af6b4114 Binary files /dev/null and b/public/terrain/19/858495/353979.terrain differ diff --git a/public/terrain/19/858495/353980.terrain b/public/terrain/19/858495/353980.terrain new file mode 100644 index 000000000..85e6d8f08 Binary files /dev/null and b/public/terrain/19/858495/353980.terrain differ diff --git a/public/terrain/19/858495/353981.terrain b/public/terrain/19/858495/353981.terrain new file mode 100644 index 000000000..018a0f5f7 Binary files /dev/null and b/public/terrain/19/858495/353981.terrain differ diff --git a/public/terrain/19/858495/353982.terrain b/public/terrain/19/858495/353982.terrain new file mode 100644 index 000000000..4b906f30b Binary files /dev/null and b/public/terrain/19/858495/353982.terrain differ diff --git a/public/terrain/19/858495/353983.terrain b/public/terrain/19/858495/353983.terrain new file mode 100644 index 000000000..d152a371e Binary files /dev/null and b/public/terrain/19/858495/353983.terrain differ diff --git a/public/terrain/19/858495/353984.terrain b/public/terrain/19/858495/353984.terrain new file mode 100644 index 000000000..1431abfae Binary files /dev/null and b/public/terrain/19/858495/353984.terrain differ diff --git a/public/terrain/19/858495/353985.terrain b/public/terrain/19/858495/353985.terrain new file mode 100644 index 000000000..ba4289dbd Binary files /dev/null and b/public/terrain/19/858495/353985.terrain differ diff --git a/public/terrain/19/858495/353986.terrain b/public/terrain/19/858495/353986.terrain new file mode 100644 index 000000000..99c6d463f Binary files /dev/null and b/public/terrain/19/858495/353986.terrain differ diff --git a/public/terrain/19/858495/353987.terrain b/public/terrain/19/858495/353987.terrain new file mode 100644 index 000000000..2b4edc3dc Binary files /dev/null and b/public/terrain/19/858495/353987.terrain differ diff --git a/public/terrain/19/858495/353988.terrain b/public/terrain/19/858495/353988.terrain new file mode 100644 index 000000000..39b3d4daf Binary files /dev/null and b/public/terrain/19/858495/353988.terrain differ diff --git a/public/terrain/19/858495/353989.terrain b/public/terrain/19/858495/353989.terrain new file mode 100644 index 000000000..ea063d02e Binary files /dev/null and b/public/terrain/19/858495/353989.terrain differ diff --git a/public/terrain/19/858495/353990.terrain b/public/terrain/19/858495/353990.terrain new file mode 100644 index 000000000..49e594f15 Binary files /dev/null and b/public/terrain/19/858495/353990.terrain differ diff --git a/public/terrain/19/858495/353991.terrain b/public/terrain/19/858495/353991.terrain new file mode 100644 index 000000000..30e25a3a6 Binary files /dev/null and b/public/terrain/19/858495/353991.terrain differ diff --git a/public/terrain/19/858495/353992.terrain b/public/terrain/19/858495/353992.terrain new file mode 100644 index 000000000..c0e928077 Binary files /dev/null and b/public/terrain/19/858495/353992.terrain differ diff --git a/public/terrain/19/858495/353993.terrain b/public/terrain/19/858495/353993.terrain new file mode 100644 index 000000000..ad23348d0 Binary files /dev/null and b/public/terrain/19/858495/353993.terrain differ diff --git a/public/terrain/19/858495/353994.terrain b/public/terrain/19/858495/353994.terrain new file mode 100644 index 000000000..254bc887d Binary files /dev/null and b/public/terrain/19/858495/353994.terrain differ diff --git a/public/terrain/19/858495/353995.terrain b/public/terrain/19/858495/353995.terrain new file mode 100644 index 000000000..6e7c1095b Binary files /dev/null and b/public/terrain/19/858495/353995.terrain differ diff --git a/public/terrain/19/858495/353996.terrain b/public/terrain/19/858495/353996.terrain new file mode 100644 index 000000000..372acd076 Binary files /dev/null and b/public/terrain/19/858495/353996.terrain differ diff --git a/public/terrain/19/858495/353997.terrain b/public/terrain/19/858495/353997.terrain new file mode 100644 index 000000000..da0b6cf11 Binary files /dev/null and b/public/terrain/19/858495/353997.terrain differ diff --git a/public/terrain/19/858495/353998.terrain b/public/terrain/19/858495/353998.terrain new file mode 100644 index 000000000..2fcc8ff14 Binary files /dev/null and b/public/terrain/19/858495/353998.terrain differ diff --git a/public/terrain/19/858495/353999.terrain b/public/terrain/19/858495/353999.terrain new file mode 100644 index 000000000..32d1f8aff Binary files /dev/null and b/public/terrain/19/858495/353999.terrain differ diff --git a/public/terrain/19/858495/354000.terrain b/public/terrain/19/858495/354000.terrain new file mode 100644 index 000000000..d752e05a5 Binary files /dev/null and b/public/terrain/19/858495/354000.terrain differ diff --git a/public/terrain/19/858495/354001.terrain b/public/terrain/19/858495/354001.terrain new file mode 100644 index 000000000..d664e31a3 Binary files /dev/null and b/public/terrain/19/858495/354001.terrain differ diff --git a/public/terrain/19/858495/354002.terrain b/public/terrain/19/858495/354002.terrain new file mode 100644 index 000000000..b2dbe2af7 Binary files /dev/null and b/public/terrain/19/858495/354002.terrain differ diff --git a/public/terrain/19/858495/354003.terrain b/public/terrain/19/858495/354003.terrain new file mode 100644 index 000000000..7bd9f4143 Binary files /dev/null and b/public/terrain/19/858495/354003.terrain differ diff --git a/public/terrain/19/858495/354004.terrain b/public/terrain/19/858495/354004.terrain new file mode 100644 index 000000000..7e9836ff3 Binary files /dev/null and b/public/terrain/19/858495/354004.terrain differ diff --git a/public/terrain/19/858495/354005.terrain b/public/terrain/19/858495/354005.terrain new file mode 100644 index 000000000..e6b566216 Binary files /dev/null and b/public/terrain/19/858495/354005.terrain differ diff --git a/public/terrain/19/858495/354006.terrain b/public/terrain/19/858495/354006.terrain new file mode 100644 index 000000000..cf3650929 Binary files /dev/null and b/public/terrain/19/858495/354006.terrain differ diff --git a/public/terrain/19/858495/354007.terrain b/public/terrain/19/858495/354007.terrain new file mode 100644 index 000000000..9c32b1c67 Binary files /dev/null and b/public/terrain/19/858495/354007.terrain differ diff --git a/public/terrain/19/858495/354008.terrain b/public/terrain/19/858495/354008.terrain new file mode 100644 index 000000000..6d4b71a70 Binary files /dev/null and b/public/terrain/19/858495/354008.terrain differ diff --git a/public/terrain/19/858495/354009.terrain b/public/terrain/19/858495/354009.terrain new file mode 100644 index 000000000..295e2b873 Binary files /dev/null and b/public/terrain/19/858495/354009.terrain differ diff --git a/public/terrain/19/858495/354010.terrain b/public/terrain/19/858495/354010.terrain new file mode 100644 index 000000000..499416f4c Binary files /dev/null and b/public/terrain/19/858495/354010.terrain differ diff --git a/public/terrain/19/858495/354011.terrain b/public/terrain/19/858495/354011.terrain new file mode 100644 index 000000000..1df33abc2 Binary files /dev/null and b/public/terrain/19/858495/354011.terrain differ diff --git a/public/terrain/19/858495/354012.terrain b/public/terrain/19/858495/354012.terrain new file mode 100644 index 000000000..5990365b9 Binary files /dev/null and b/public/terrain/19/858495/354012.terrain differ diff --git a/public/terrain/19/858495/354013.terrain b/public/terrain/19/858495/354013.terrain new file mode 100644 index 000000000..a5d95f5ad Binary files /dev/null and b/public/terrain/19/858495/354013.terrain differ diff --git a/public/terrain/19/858495/354014.terrain b/public/terrain/19/858495/354014.terrain new file mode 100644 index 000000000..33ec6a313 Binary files /dev/null and b/public/terrain/19/858495/354014.terrain differ diff --git a/public/terrain/19/858495/354015.terrain b/public/terrain/19/858495/354015.terrain new file mode 100644 index 000000000..da112666f Binary files /dev/null and b/public/terrain/19/858495/354015.terrain differ diff --git a/public/terrain/19/858495/354016.terrain b/public/terrain/19/858495/354016.terrain new file mode 100644 index 000000000..ab75c3c43 Binary files /dev/null and b/public/terrain/19/858495/354016.terrain differ diff --git a/public/terrain/19/858495/354017.terrain b/public/terrain/19/858495/354017.terrain new file mode 100644 index 000000000..306c9241e Binary files /dev/null and b/public/terrain/19/858495/354017.terrain differ diff --git a/public/terrain/19/858495/354018.terrain b/public/terrain/19/858495/354018.terrain new file mode 100644 index 000000000..4da512eef Binary files /dev/null and b/public/terrain/19/858495/354018.terrain differ diff --git a/public/terrain/19/858495/354019.terrain b/public/terrain/19/858495/354019.terrain new file mode 100644 index 000000000..277c79efc Binary files /dev/null and b/public/terrain/19/858495/354019.terrain differ diff --git a/public/terrain/19/858495/354020.terrain b/public/terrain/19/858495/354020.terrain new file mode 100644 index 000000000..c83e6e80f Binary files /dev/null and b/public/terrain/19/858495/354020.terrain differ diff --git a/public/terrain/19/858495/354021.terrain b/public/terrain/19/858495/354021.terrain new file mode 100644 index 000000000..b81062a7a Binary files /dev/null and b/public/terrain/19/858495/354021.terrain differ diff --git a/public/terrain/19/858495/354022.terrain b/public/terrain/19/858495/354022.terrain new file mode 100644 index 000000000..e1ebe3a05 Binary files /dev/null and b/public/terrain/19/858495/354022.terrain differ diff --git a/public/terrain/19/858495/354023.terrain b/public/terrain/19/858495/354023.terrain new file mode 100644 index 000000000..928c0a928 Binary files /dev/null and b/public/terrain/19/858495/354023.terrain differ diff --git a/public/terrain/19/858495/354024.terrain b/public/terrain/19/858495/354024.terrain new file mode 100644 index 000000000..d6735d8ef Binary files /dev/null and b/public/terrain/19/858495/354024.terrain differ diff --git a/public/terrain/19/858495/354025.terrain b/public/terrain/19/858495/354025.terrain new file mode 100644 index 000000000..c208a12c8 Binary files /dev/null and b/public/terrain/19/858495/354025.terrain differ diff --git a/public/terrain/19/858495/354026.terrain b/public/terrain/19/858495/354026.terrain new file mode 100644 index 000000000..19883fd35 Binary files /dev/null and b/public/terrain/19/858495/354026.terrain differ diff --git a/public/terrain/19/858495/354027.terrain b/public/terrain/19/858495/354027.terrain new file mode 100644 index 000000000..cf503b1ef Binary files /dev/null and b/public/terrain/19/858495/354027.terrain differ diff --git a/public/terrain/19/858495/354028.terrain b/public/terrain/19/858495/354028.terrain new file mode 100644 index 000000000..42d563e9a Binary files /dev/null and b/public/terrain/19/858495/354028.terrain differ diff --git a/public/terrain/19/858495/354029.terrain b/public/terrain/19/858495/354029.terrain new file mode 100644 index 000000000..df90e5ea3 Binary files /dev/null and b/public/terrain/19/858495/354029.terrain differ diff --git a/public/terrain/19/858495/354030.terrain b/public/terrain/19/858495/354030.terrain new file mode 100644 index 000000000..fe214ac84 Binary files /dev/null and b/public/terrain/19/858495/354030.terrain differ diff --git a/public/terrain/19/858495/354031.terrain b/public/terrain/19/858495/354031.terrain new file mode 100644 index 000000000..b1bfbb15e Binary files /dev/null and b/public/terrain/19/858495/354031.terrain differ diff --git a/public/terrain/19/858495/354032.terrain b/public/terrain/19/858495/354032.terrain new file mode 100644 index 000000000..fd3663026 Binary files /dev/null and b/public/terrain/19/858495/354032.terrain differ diff --git a/public/terrain/19/858495/354033.terrain b/public/terrain/19/858495/354033.terrain new file mode 100644 index 000000000..7d9b17f22 Binary files /dev/null and b/public/terrain/19/858495/354033.terrain differ diff --git a/public/terrain/19/858495/354034.terrain b/public/terrain/19/858495/354034.terrain new file mode 100644 index 000000000..a356a11aa Binary files /dev/null and b/public/terrain/19/858495/354034.terrain differ diff --git a/public/terrain/19/858495/354035.terrain b/public/terrain/19/858495/354035.terrain new file mode 100644 index 000000000..665be5e33 Binary files /dev/null and b/public/terrain/19/858495/354035.terrain differ diff --git a/public/terrain/19/858495/354036.terrain b/public/terrain/19/858495/354036.terrain new file mode 100644 index 000000000..3bce454e7 Binary files /dev/null and b/public/terrain/19/858495/354036.terrain differ diff --git a/public/terrain/19/858495/354037.terrain b/public/terrain/19/858495/354037.terrain new file mode 100644 index 000000000..0b12874b2 Binary files /dev/null and b/public/terrain/19/858495/354037.terrain differ diff --git a/public/terrain/19/858495/354038.terrain b/public/terrain/19/858495/354038.terrain new file mode 100644 index 000000000..14fea3f27 Binary files /dev/null and b/public/terrain/19/858495/354038.terrain differ diff --git a/public/terrain/19/858495/354039.terrain b/public/terrain/19/858495/354039.terrain new file mode 100644 index 000000000..a17663844 Binary files /dev/null and b/public/terrain/19/858495/354039.terrain differ diff --git a/public/terrain/19/858495/354040.terrain b/public/terrain/19/858495/354040.terrain new file mode 100644 index 000000000..0daf6aa70 Binary files /dev/null and b/public/terrain/19/858495/354040.terrain differ diff --git a/public/terrain/19/858495/354041.terrain b/public/terrain/19/858495/354041.terrain new file mode 100644 index 000000000..7d39703bb Binary files /dev/null and b/public/terrain/19/858495/354041.terrain differ diff --git a/public/terrain/19/858495/354042.terrain b/public/terrain/19/858495/354042.terrain new file mode 100644 index 000000000..c46e5b96b Binary files /dev/null and b/public/terrain/19/858495/354042.terrain differ diff --git a/public/terrain/19/858495/354043.terrain b/public/terrain/19/858495/354043.terrain new file mode 100644 index 000000000..71c48cce0 Binary files /dev/null and b/public/terrain/19/858495/354043.terrain differ diff --git a/public/terrain/19/858495/354044.terrain b/public/terrain/19/858495/354044.terrain new file mode 100644 index 000000000..3b30fb7b4 Binary files /dev/null and b/public/terrain/19/858495/354044.terrain differ diff --git a/public/terrain/19/858495/354045.terrain b/public/terrain/19/858495/354045.terrain new file mode 100644 index 000000000..592289111 Binary files /dev/null and b/public/terrain/19/858495/354045.terrain differ diff --git a/public/terrain/19/858495/354046.terrain b/public/terrain/19/858495/354046.terrain new file mode 100644 index 000000000..e566c4b15 Binary files /dev/null and b/public/terrain/19/858495/354046.terrain differ diff --git a/public/terrain/19/858495/354047.terrain b/public/terrain/19/858495/354047.terrain new file mode 100644 index 000000000..de956e1c9 Binary files /dev/null and b/public/terrain/19/858495/354047.terrain differ diff --git a/public/terrain/19/858495/354048.terrain b/public/terrain/19/858495/354048.terrain new file mode 100644 index 000000000..0472d62bb Binary files /dev/null and b/public/terrain/19/858495/354048.terrain differ diff --git a/public/terrain/19/858495/354049.terrain b/public/terrain/19/858495/354049.terrain new file mode 100644 index 000000000..0bb442742 Binary files /dev/null and b/public/terrain/19/858495/354049.terrain differ diff --git a/public/terrain/19/858495/354050.terrain b/public/terrain/19/858495/354050.terrain new file mode 100644 index 000000000..a679a1fcf Binary files /dev/null and b/public/terrain/19/858495/354050.terrain differ diff --git a/public/terrain/19/858495/354051.terrain b/public/terrain/19/858495/354051.terrain new file mode 100644 index 000000000..17c4e1546 Binary files /dev/null and b/public/terrain/19/858495/354051.terrain differ diff --git a/public/terrain/19/858495/354052.terrain b/public/terrain/19/858495/354052.terrain new file mode 100644 index 000000000..7927f130f Binary files /dev/null and b/public/terrain/19/858495/354052.terrain differ diff --git a/public/terrain/19/858495/354053.terrain b/public/terrain/19/858495/354053.terrain new file mode 100644 index 000000000..1138db6d0 Binary files /dev/null and b/public/terrain/19/858495/354053.terrain differ diff --git a/public/terrain/19/858495/354054.terrain b/public/terrain/19/858495/354054.terrain new file mode 100644 index 000000000..2da302537 Binary files /dev/null and b/public/terrain/19/858495/354054.terrain differ diff --git a/public/terrain/19/858495/354055.terrain b/public/terrain/19/858495/354055.terrain new file mode 100644 index 000000000..869992217 Binary files /dev/null and b/public/terrain/19/858495/354055.terrain differ diff --git a/public/terrain/19/858495/354056.terrain b/public/terrain/19/858495/354056.terrain new file mode 100644 index 000000000..e966d37dd Binary files /dev/null and b/public/terrain/19/858495/354056.terrain differ diff --git a/public/terrain/19/858495/354057.terrain b/public/terrain/19/858495/354057.terrain new file mode 100644 index 000000000..ec6c644ab Binary files /dev/null and b/public/terrain/19/858495/354057.terrain differ diff --git a/public/terrain/19/858495/354058.terrain b/public/terrain/19/858495/354058.terrain new file mode 100644 index 000000000..fcb12ee4e Binary files /dev/null and b/public/terrain/19/858495/354058.terrain differ diff --git a/public/terrain/19/858495/354059.terrain b/public/terrain/19/858495/354059.terrain new file mode 100644 index 000000000..dbc1e4c61 Binary files /dev/null and b/public/terrain/19/858495/354059.terrain differ diff --git a/public/terrain/19/858496/353743.terrain b/public/terrain/19/858496/353743.terrain new file mode 100644 index 000000000..facd7c6c1 Binary files /dev/null and b/public/terrain/19/858496/353743.terrain differ diff --git a/public/terrain/19/858496/353744.terrain b/public/terrain/19/858496/353744.terrain new file mode 100644 index 000000000..01b0c6b93 Binary files /dev/null and b/public/terrain/19/858496/353744.terrain differ diff --git a/public/terrain/19/858496/353745.terrain b/public/terrain/19/858496/353745.terrain new file mode 100644 index 000000000..4841e9aea Binary files /dev/null and b/public/terrain/19/858496/353745.terrain differ diff --git a/public/terrain/19/858496/353746.terrain b/public/terrain/19/858496/353746.terrain new file mode 100644 index 000000000..f6d4161c0 Binary files /dev/null and b/public/terrain/19/858496/353746.terrain differ diff --git a/public/terrain/19/858496/353747.terrain b/public/terrain/19/858496/353747.terrain new file mode 100644 index 000000000..e4c5f884c Binary files /dev/null and b/public/terrain/19/858496/353747.terrain differ diff --git a/public/terrain/19/858496/353748.terrain b/public/terrain/19/858496/353748.terrain new file mode 100644 index 000000000..63e5b34b4 Binary files /dev/null and b/public/terrain/19/858496/353748.terrain differ diff --git a/public/terrain/19/858496/353749.terrain b/public/terrain/19/858496/353749.terrain new file mode 100644 index 000000000..60d5432b6 Binary files /dev/null and b/public/terrain/19/858496/353749.terrain differ diff --git a/public/terrain/19/858496/353750.terrain b/public/terrain/19/858496/353750.terrain new file mode 100644 index 000000000..deeb5da16 Binary files /dev/null and b/public/terrain/19/858496/353750.terrain differ diff --git a/public/terrain/19/858496/353751.terrain b/public/terrain/19/858496/353751.terrain new file mode 100644 index 000000000..812390531 Binary files /dev/null and b/public/terrain/19/858496/353751.terrain differ diff --git a/public/terrain/19/858496/353752.terrain b/public/terrain/19/858496/353752.terrain new file mode 100644 index 000000000..cfcdea168 Binary files /dev/null and b/public/terrain/19/858496/353752.terrain differ diff --git a/public/terrain/19/858496/353753.terrain b/public/terrain/19/858496/353753.terrain new file mode 100644 index 000000000..39d804aab Binary files /dev/null and b/public/terrain/19/858496/353753.terrain differ diff --git a/public/terrain/19/858496/353754.terrain b/public/terrain/19/858496/353754.terrain new file mode 100644 index 000000000..487fb10ed Binary files /dev/null and b/public/terrain/19/858496/353754.terrain differ diff --git a/public/terrain/19/858496/353755.terrain b/public/terrain/19/858496/353755.terrain new file mode 100644 index 000000000..efffde0ad Binary files /dev/null and b/public/terrain/19/858496/353755.terrain differ diff --git a/public/terrain/19/858496/353756.terrain b/public/terrain/19/858496/353756.terrain new file mode 100644 index 000000000..99b2bfe07 Binary files /dev/null and b/public/terrain/19/858496/353756.terrain differ diff --git a/public/terrain/19/858496/353757.terrain b/public/terrain/19/858496/353757.terrain new file mode 100644 index 000000000..27081c5a9 Binary files /dev/null and b/public/terrain/19/858496/353757.terrain differ diff --git a/public/terrain/19/858496/353758.terrain b/public/terrain/19/858496/353758.terrain new file mode 100644 index 000000000..b0cd2597d Binary files /dev/null and b/public/terrain/19/858496/353758.terrain differ diff --git a/public/terrain/19/858496/353759.terrain b/public/terrain/19/858496/353759.terrain new file mode 100644 index 000000000..326220322 Binary files /dev/null and b/public/terrain/19/858496/353759.terrain differ diff --git a/public/terrain/19/858496/353760.terrain b/public/terrain/19/858496/353760.terrain new file mode 100644 index 000000000..50d0f01c3 Binary files /dev/null and b/public/terrain/19/858496/353760.terrain differ diff --git a/public/terrain/19/858496/353761.terrain b/public/terrain/19/858496/353761.terrain new file mode 100644 index 000000000..68c225bf2 Binary files /dev/null and b/public/terrain/19/858496/353761.terrain differ diff --git a/public/terrain/19/858496/353762.terrain b/public/terrain/19/858496/353762.terrain new file mode 100644 index 000000000..b3a193da2 Binary files /dev/null and b/public/terrain/19/858496/353762.terrain differ diff --git a/public/terrain/19/858496/353763.terrain b/public/terrain/19/858496/353763.terrain new file mode 100644 index 000000000..add037816 Binary files /dev/null and b/public/terrain/19/858496/353763.terrain differ diff --git a/public/terrain/19/858496/353764.terrain b/public/terrain/19/858496/353764.terrain new file mode 100644 index 000000000..827f6ebe6 Binary files /dev/null and b/public/terrain/19/858496/353764.terrain differ diff --git a/public/terrain/19/858496/353765.terrain b/public/terrain/19/858496/353765.terrain new file mode 100644 index 000000000..e559e77e1 Binary files /dev/null and b/public/terrain/19/858496/353765.terrain differ diff --git a/public/terrain/19/858496/353766.terrain b/public/terrain/19/858496/353766.terrain new file mode 100644 index 000000000..2d169f0a4 Binary files /dev/null and b/public/terrain/19/858496/353766.terrain differ diff --git a/public/terrain/19/858496/353767.terrain b/public/terrain/19/858496/353767.terrain new file mode 100644 index 000000000..1118a2cd2 Binary files /dev/null and b/public/terrain/19/858496/353767.terrain differ diff --git a/public/terrain/19/858496/353768.terrain b/public/terrain/19/858496/353768.terrain new file mode 100644 index 000000000..229f37522 Binary files /dev/null and b/public/terrain/19/858496/353768.terrain differ diff --git a/public/terrain/19/858496/353769.terrain b/public/terrain/19/858496/353769.terrain new file mode 100644 index 000000000..a721d8328 Binary files /dev/null and b/public/terrain/19/858496/353769.terrain differ diff --git a/public/terrain/19/858496/353770.terrain b/public/terrain/19/858496/353770.terrain new file mode 100644 index 000000000..6436b238b Binary files /dev/null and b/public/terrain/19/858496/353770.terrain differ diff --git a/public/terrain/19/858496/353771.terrain b/public/terrain/19/858496/353771.terrain new file mode 100644 index 000000000..4d9360ebd Binary files /dev/null and b/public/terrain/19/858496/353771.terrain differ diff --git a/public/terrain/19/858496/353772.terrain b/public/terrain/19/858496/353772.terrain new file mode 100644 index 000000000..da928ce0d Binary files /dev/null and b/public/terrain/19/858496/353772.terrain differ diff --git a/public/terrain/19/858496/353773.terrain b/public/terrain/19/858496/353773.terrain new file mode 100644 index 000000000..704b96c4f Binary files /dev/null and b/public/terrain/19/858496/353773.terrain differ diff --git a/public/terrain/19/858496/353774.terrain b/public/terrain/19/858496/353774.terrain new file mode 100644 index 000000000..d3c287ea4 Binary files /dev/null and b/public/terrain/19/858496/353774.terrain differ diff --git a/public/terrain/19/858496/353775.terrain b/public/terrain/19/858496/353775.terrain new file mode 100644 index 000000000..3453b0f8e Binary files /dev/null and b/public/terrain/19/858496/353775.terrain differ diff --git a/public/terrain/19/858496/353776.terrain b/public/terrain/19/858496/353776.terrain new file mode 100644 index 000000000..33b8f2f99 Binary files /dev/null and b/public/terrain/19/858496/353776.terrain differ diff --git a/public/terrain/19/858496/353777.terrain b/public/terrain/19/858496/353777.terrain new file mode 100644 index 000000000..44c56b938 Binary files /dev/null and b/public/terrain/19/858496/353777.terrain differ diff --git a/public/terrain/19/858496/353778.terrain b/public/terrain/19/858496/353778.terrain new file mode 100644 index 000000000..731fd90c1 Binary files /dev/null and b/public/terrain/19/858496/353778.terrain differ diff --git a/public/terrain/19/858496/353779.terrain b/public/terrain/19/858496/353779.terrain new file mode 100644 index 000000000..cc5675869 Binary files /dev/null and b/public/terrain/19/858496/353779.terrain differ diff --git a/public/terrain/19/858496/353780.terrain b/public/terrain/19/858496/353780.terrain new file mode 100644 index 000000000..4c80d1cc2 Binary files /dev/null and b/public/terrain/19/858496/353780.terrain differ diff --git a/public/terrain/19/858496/353781.terrain b/public/terrain/19/858496/353781.terrain new file mode 100644 index 000000000..7f76f3001 Binary files /dev/null and b/public/terrain/19/858496/353781.terrain differ diff --git a/public/terrain/19/858496/353782.terrain b/public/terrain/19/858496/353782.terrain new file mode 100644 index 000000000..4e0652b3b Binary files /dev/null and b/public/terrain/19/858496/353782.terrain differ diff --git a/public/terrain/19/858496/353783.terrain b/public/terrain/19/858496/353783.terrain new file mode 100644 index 000000000..506e765d0 Binary files /dev/null and b/public/terrain/19/858496/353783.terrain differ diff --git a/public/terrain/19/858496/353784.terrain b/public/terrain/19/858496/353784.terrain new file mode 100644 index 000000000..ae31af156 Binary files /dev/null and b/public/terrain/19/858496/353784.terrain differ diff --git a/public/terrain/19/858496/353785.terrain b/public/terrain/19/858496/353785.terrain new file mode 100644 index 000000000..5efc5bc0e Binary files /dev/null and b/public/terrain/19/858496/353785.terrain differ diff --git a/public/terrain/19/858496/353786.terrain b/public/terrain/19/858496/353786.terrain new file mode 100644 index 000000000..9110f2791 Binary files /dev/null and b/public/terrain/19/858496/353786.terrain differ diff --git a/public/terrain/19/858496/353787.terrain b/public/terrain/19/858496/353787.terrain new file mode 100644 index 000000000..16a5745c0 Binary files /dev/null and b/public/terrain/19/858496/353787.terrain differ diff --git a/public/terrain/19/858496/353788.terrain b/public/terrain/19/858496/353788.terrain new file mode 100644 index 000000000..417012f92 Binary files /dev/null and b/public/terrain/19/858496/353788.terrain differ diff --git a/public/terrain/19/858496/353789.terrain b/public/terrain/19/858496/353789.terrain new file mode 100644 index 000000000..21aed26cd Binary files /dev/null and b/public/terrain/19/858496/353789.terrain differ diff --git a/public/terrain/19/858496/353790.terrain b/public/terrain/19/858496/353790.terrain new file mode 100644 index 000000000..4880ccdb2 Binary files /dev/null and b/public/terrain/19/858496/353790.terrain differ diff --git a/public/terrain/19/858496/353791.terrain b/public/terrain/19/858496/353791.terrain new file mode 100644 index 000000000..91b7aec32 Binary files /dev/null and b/public/terrain/19/858496/353791.terrain differ diff --git a/public/terrain/19/858496/353792.terrain b/public/terrain/19/858496/353792.terrain new file mode 100644 index 000000000..2f9c37d00 Binary files /dev/null and b/public/terrain/19/858496/353792.terrain differ diff --git a/public/terrain/19/858496/353793.terrain b/public/terrain/19/858496/353793.terrain new file mode 100644 index 000000000..f0eef62ef Binary files /dev/null and b/public/terrain/19/858496/353793.terrain differ diff --git a/public/terrain/19/858496/353794.terrain b/public/terrain/19/858496/353794.terrain new file mode 100644 index 000000000..5ee7f0981 Binary files /dev/null and b/public/terrain/19/858496/353794.terrain differ diff --git a/public/terrain/19/858496/353795.terrain b/public/terrain/19/858496/353795.terrain new file mode 100644 index 000000000..6c323796a Binary files /dev/null and b/public/terrain/19/858496/353795.terrain differ diff --git a/public/terrain/19/858496/353796.terrain b/public/terrain/19/858496/353796.terrain new file mode 100644 index 000000000..051138a41 Binary files /dev/null and b/public/terrain/19/858496/353796.terrain differ diff --git a/public/terrain/19/858496/353797.terrain b/public/terrain/19/858496/353797.terrain new file mode 100644 index 000000000..e8873d1f4 Binary files /dev/null and b/public/terrain/19/858496/353797.terrain differ diff --git a/public/terrain/19/858496/353798.terrain b/public/terrain/19/858496/353798.terrain new file mode 100644 index 000000000..e847627a0 Binary files /dev/null and b/public/terrain/19/858496/353798.terrain differ diff --git a/public/terrain/19/858496/353799.terrain b/public/terrain/19/858496/353799.terrain new file mode 100644 index 000000000..c64f9dc49 Binary files /dev/null and b/public/terrain/19/858496/353799.terrain differ diff --git a/public/terrain/19/858496/353800.terrain b/public/terrain/19/858496/353800.terrain new file mode 100644 index 000000000..dcff7d62c Binary files /dev/null and b/public/terrain/19/858496/353800.terrain differ diff --git a/public/terrain/19/858496/353801.terrain b/public/terrain/19/858496/353801.terrain new file mode 100644 index 000000000..870b59d8b Binary files /dev/null and b/public/terrain/19/858496/353801.terrain differ diff --git a/public/terrain/19/858496/353802.terrain b/public/terrain/19/858496/353802.terrain new file mode 100644 index 000000000..fa1fbfc03 Binary files /dev/null and b/public/terrain/19/858496/353802.terrain differ diff --git a/public/terrain/19/858496/353803.terrain b/public/terrain/19/858496/353803.terrain new file mode 100644 index 000000000..d3e83fa80 Binary files /dev/null and b/public/terrain/19/858496/353803.terrain differ diff --git a/public/terrain/19/858496/353804.terrain b/public/terrain/19/858496/353804.terrain new file mode 100644 index 000000000..8be37b230 Binary files /dev/null and b/public/terrain/19/858496/353804.terrain differ diff --git a/public/terrain/19/858496/353805.terrain b/public/terrain/19/858496/353805.terrain new file mode 100644 index 000000000..02486fc20 Binary files /dev/null and b/public/terrain/19/858496/353805.terrain differ diff --git a/public/terrain/19/858496/353806.terrain b/public/terrain/19/858496/353806.terrain new file mode 100644 index 000000000..6329f6919 Binary files /dev/null and b/public/terrain/19/858496/353806.terrain differ diff --git a/public/terrain/19/858496/353807.terrain b/public/terrain/19/858496/353807.terrain new file mode 100644 index 000000000..f1395f6f6 Binary files /dev/null and b/public/terrain/19/858496/353807.terrain differ diff --git a/public/terrain/19/858496/353808.terrain b/public/terrain/19/858496/353808.terrain new file mode 100644 index 000000000..6be9babae Binary files /dev/null and b/public/terrain/19/858496/353808.terrain differ diff --git a/public/terrain/19/858496/353809.terrain b/public/terrain/19/858496/353809.terrain new file mode 100644 index 000000000..7e1b3e1f8 Binary files /dev/null and b/public/terrain/19/858496/353809.terrain differ diff --git a/public/terrain/19/858496/353810.terrain b/public/terrain/19/858496/353810.terrain new file mode 100644 index 000000000..59d3baa3d Binary files /dev/null and b/public/terrain/19/858496/353810.terrain differ diff --git a/public/terrain/19/858496/353811.terrain b/public/terrain/19/858496/353811.terrain new file mode 100644 index 000000000..6804dcad4 Binary files /dev/null and b/public/terrain/19/858496/353811.terrain differ diff --git a/public/terrain/19/858496/353812.terrain b/public/terrain/19/858496/353812.terrain new file mode 100644 index 000000000..87fbd9937 Binary files /dev/null and b/public/terrain/19/858496/353812.terrain differ diff --git a/public/terrain/19/858496/353813.terrain b/public/terrain/19/858496/353813.terrain new file mode 100644 index 000000000..87dfad6e7 Binary files /dev/null and b/public/terrain/19/858496/353813.terrain differ diff --git a/public/terrain/19/858496/353814.terrain b/public/terrain/19/858496/353814.terrain new file mode 100644 index 000000000..07134a5df Binary files /dev/null and b/public/terrain/19/858496/353814.terrain differ diff --git a/public/terrain/19/858496/353815.terrain b/public/terrain/19/858496/353815.terrain new file mode 100644 index 000000000..63400cafc Binary files /dev/null and b/public/terrain/19/858496/353815.terrain differ diff --git a/public/terrain/19/858496/353816.terrain b/public/terrain/19/858496/353816.terrain new file mode 100644 index 000000000..7a5fc02f3 Binary files /dev/null and b/public/terrain/19/858496/353816.terrain differ diff --git a/public/terrain/19/858496/353817.terrain b/public/terrain/19/858496/353817.terrain new file mode 100644 index 000000000..92b8bcd4f Binary files /dev/null and b/public/terrain/19/858496/353817.terrain differ diff --git a/public/terrain/19/858496/353818.terrain b/public/terrain/19/858496/353818.terrain new file mode 100644 index 000000000..7457848ca Binary files /dev/null and b/public/terrain/19/858496/353818.terrain differ diff --git a/public/terrain/19/858496/353819.terrain b/public/terrain/19/858496/353819.terrain new file mode 100644 index 000000000..3104f9d01 Binary files /dev/null and b/public/terrain/19/858496/353819.terrain differ diff --git a/public/terrain/19/858496/353820.terrain b/public/terrain/19/858496/353820.terrain new file mode 100644 index 000000000..2c7a584cc Binary files /dev/null and b/public/terrain/19/858496/353820.terrain differ diff --git a/public/terrain/19/858496/353821.terrain b/public/terrain/19/858496/353821.terrain new file mode 100644 index 000000000..ea5a891bd Binary files /dev/null and b/public/terrain/19/858496/353821.terrain differ diff --git a/public/terrain/19/858496/353822.terrain b/public/terrain/19/858496/353822.terrain new file mode 100644 index 000000000..f65178055 Binary files /dev/null and b/public/terrain/19/858496/353822.terrain differ diff --git a/public/terrain/19/858496/353823.terrain b/public/terrain/19/858496/353823.terrain new file mode 100644 index 000000000..5dc2ceb62 Binary files /dev/null and b/public/terrain/19/858496/353823.terrain differ diff --git a/public/terrain/19/858496/353824.terrain b/public/terrain/19/858496/353824.terrain new file mode 100644 index 000000000..72fd19532 Binary files /dev/null and b/public/terrain/19/858496/353824.terrain differ diff --git a/public/terrain/19/858496/353825.terrain b/public/terrain/19/858496/353825.terrain new file mode 100644 index 000000000..58e7b248b Binary files /dev/null and b/public/terrain/19/858496/353825.terrain differ diff --git a/public/terrain/19/858496/353826.terrain b/public/terrain/19/858496/353826.terrain new file mode 100644 index 000000000..bc95e9645 Binary files /dev/null and b/public/terrain/19/858496/353826.terrain differ diff --git a/public/terrain/19/858496/353827.terrain b/public/terrain/19/858496/353827.terrain new file mode 100644 index 000000000..559bb99c7 Binary files /dev/null and b/public/terrain/19/858496/353827.terrain differ diff --git a/public/terrain/19/858496/353828.terrain b/public/terrain/19/858496/353828.terrain new file mode 100644 index 000000000..e2775ee59 Binary files /dev/null and b/public/terrain/19/858496/353828.terrain differ diff --git a/public/terrain/19/858496/353829.terrain b/public/terrain/19/858496/353829.terrain new file mode 100644 index 000000000..1ee32013e Binary files /dev/null and b/public/terrain/19/858496/353829.terrain differ diff --git a/public/terrain/19/858496/353830.terrain b/public/terrain/19/858496/353830.terrain new file mode 100644 index 000000000..cdd65d1a1 Binary files /dev/null and b/public/terrain/19/858496/353830.terrain differ diff --git a/public/terrain/19/858496/353831.terrain b/public/terrain/19/858496/353831.terrain new file mode 100644 index 000000000..a525eb93b Binary files /dev/null and b/public/terrain/19/858496/353831.terrain differ diff --git a/public/terrain/19/858496/353832.terrain b/public/terrain/19/858496/353832.terrain new file mode 100644 index 000000000..092ffd987 Binary files /dev/null and b/public/terrain/19/858496/353832.terrain differ diff --git a/public/terrain/19/858496/353833.terrain b/public/terrain/19/858496/353833.terrain new file mode 100644 index 000000000..a1431f081 Binary files /dev/null and b/public/terrain/19/858496/353833.terrain differ diff --git a/public/terrain/19/858496/353834.terrain b/public/terrain/19/858496/353834.terrain new file mode 100644 index 000000000..b2a7d1449 Binary files /dev/null and b/public/terrain/19/858496/353834.terrain differ diff --git a/public/terrain/19/858496/353835.terrain b/public/terrain/19/858496/353835.terrain new file mode 100644 index 000000000..89969e001 Binary files /dev/null and b/public/terrain/19/858496/353835.terrain differ diff --git a/public/terrain/19/858496/353836.terrain b/public/terrain/19/858496/353836.terrain new file mode 100644 index 000000000..01a06038c Binary files /dev/null and b/public/terrain/19/858496/353836.terrain differ diff --git a/public/terrain/19/858496/353837.terrain b/public/terrain/19/858496/353837.terrain new file mode 100644 index 000000000..4c0a6f73c Binary files /dev/null and b/public/terrain/19/858496/353837.terrain differ diff --git a/public/terrain/19/858496/353838.terrain b/public/terrain/19/858496/353838.terrain new file mode 100644 index 000000000..28d8da4da Binary files /dev/null and b/public/terrain/19/858496/353838.terrain differ diff --git a/public/terrain/19/858496/353839.terrain b/public/terrain/19/858496/353839.terrain new file mode 100644 index 000000000..44d1024f5 Binary files /dev/null and b/public/terrain/19/858496/353839.terrain differ diff --git a/public/terrain/19/858496/353840.terrain b/public/terrain/19/858496/353840.terrain new file mode 100644 index 000000000..961d9d40e Binary files /dev/null and b/public/terrain/19/858496/353840.terrain differ diff --git a/public/terrain/19/858496/353841.terrain b/public/terrain/19/858496/353841.terrain new file mode 100644 index 000000000..36445cd49 Binary files /dev/null and b/public/terrain/19/858496/353841.terrain differ diff --git a/public/terrain/19/858496/353842.terrain b/public/terrain/19/858496/353842.terrain new file mode 100644 index 000000000..202b4da06 Binary files /dev/null and b/public/terrain/19/858496/353842.terrain differ diff --git a/public/terrain/19/858496/353843.terrain b/public/terrain/19/858496/353843.terrain new file mode 100644 index 000000000..0385f70f4 Binary files /dev/null and b/public/terrain/19/858496/353843.terrain differ diff --git a/public/terrain/19/858496/353844.terrain b/public/terrain/19/858496/353844.terrain new file mode 100644 index 000000000..362f5e3dd Binary files /dev/null and b/public/terrain/19/858496/353844.terrain differ diff --git a/public/terrain/19/858496/353845.terrain b/public/terrain/19/858496/353845.terrain new file mode 100644 index 000000000..9cdcbb184 Binary files /dev/null and b/public/terrain/19/858496/353845.terrain differ diff --git a/public/terrain/19/858496/353846.terrain b/public/terrain/19/858496/353846.terrain new file mode 100644 index 000000000..0b4e2566a Binary files /dev/null and b/public/terrain/19/858496/353846.terrain differ diff --git a/public/terrain/19/858496/353847.terrain b/public/terrain/19/858496/353847.terrain new file mode 100644 index 000000000..224748b20 Binary files /dev/null and b/public/terrain/19/858496/353847.terrain differ diff --git a/public/terrain/19/858496/353848.terrain b/public/terrain/19/858496/353848.terrain new file mode 100644 index 000000000..f4d15c44c Binary files /dev/null and b/public/terrain/19/858496/353848.terrain differ diff --git a/public/terrain/19/858496/353849.terrain b/public/terrain/19/858496/353849.terrain new file mode 100644 index 000000000..64c19a0e5 Binary files /dev/null and b/public/terrain/19/858496/353849.terrain differ diff --git a/public/terrain/19/858496/353850.terrain b/public/terrain/19/858496/353850.terrain new file mode 100644 index 000000000..8f0eccc11 Binary files /dev/null and b/public/terrain/19/858496/353850.terrain differ diff --git a/public/terrain/19/858496/353851.terrain b/public/terrain/19/858496/353851.terrain new file mode 100644 index 000000000..75671e61a Binary files /dev/null and b/public/terrain/19/858496/353851.terrain differ diff --git a/public/terrain/19/858496/353852.terrain b/public/terrain/19/858496/353852.terrain new file mode 100644 index 000000000..6d86b8d73 Binary files /dev/null and b/public/terrain/19/858496/353852.terrain differ diff --git a/public/terrain/19/858496/353853.terrain b/public/terrain/19/858496/353853.terrain new file mode 100644 index 000000000..582992922 Binary files /dev/null and b/public/terrain/19/858496/353853.terrain differ diff --git a/public/terrain/19/858496/353854.terrain b/public/terrain/19/858496/353854.terrain new file mode 100644 index 000000000..81c4a2f9f Binary files /dev/null and b/public/terrain/19/858496/353854.terrain differ diff --git a/public/terrain/19/858496/353855.terrain b/public/terrain/19/858496/353855.terrain new file mode 100644 index 000000000..9fb9cbe10 Binary files /dev/null and b/public/terrain/19/858496/353855.terrain differ diff --git a/public/terrain/19/858496/353856.terrain b/public/terrain/19/858496/353856.terrain new file mode 100644 index 000000000..c96cca5d8 Binary files /dev/null and b/public/terrain/19/858496/353856.terrain differ diff --git a/public/terrain/19/858496/353857.terrain b/public/terrain/19/858496/353857.terrain new file mode 100644 index 000000000..d104eac47 Binary files /dev/null and b/public/terrain/19/858496/353857.terrain differ diff --git a/public/terrain/19/858496/353858.terrain b/public/terrain/19/858496/353858.terrain new file mode 100644 index 000000000..e5c18fe5b Binary files /dev/null and b/public/terrain/19/858496/353858.terrain differ diff --git a/public/terrain/19/858496/353859.terrain b/public/terrain/19/858496/353859.terrain new file mode 100644 index 000000000..e4a7ca446 Binary files /dev/null and b/public/terrain/19/858496/353859.terrain differ diff --git a/public/terrain/19/858496/353860.terrain b/public/terrain/19/858496/353860.terrain new file mode 100644 index 000000000..6a1b26a4e Binary files /dev/null and b/public/terrain/19/858496/353860.terrain differ diff --git a/public/terrain/19/858496/353861.terrain b/public/terrain/19/858496/353861.terrain new file mode 100644 index 000000000..bc776844b Binary files /dev/null and b/public/terrain/19/858496/353861.terrain differ diff --git a/public/terrain/19/858496/353862.terrain b/public/terrain/19/858496/353862.terrain new file mode 100644 index 000000000..3464dd88c Binary files /dev/null and b/public/terrain/19/858496/353862.terrain differ diff --git a/public/terrain/19/858496/353863.terrain b/public/terrain/19/858496/353863.terrain new file mode 100644 index 000000000..43e2a7305 Binary files /dev/null and b/public/terrain/19/858496/353863.terrain differ diff --git a/public/terrain/19/858496/353864.terrain b/public/terrain/19/858496/353864.terrain new file mode 100644 index 000000000..c2ec00d96 Binary files /dev/null and b/public/terrain/19/858496/353864.terrain differ diff --git a/public/terrain/19/858496/353865.terrain b/public/terrain/19/858496/353865.terrain new file mode 100644 index 000000000..d7d40ee6d Binary files /dev/null and b/public/terrain/19/858496/353865.terrain differ diff --git a/public/terrain/19/858496/353866.terrain b/public/terrain/19/858496/353866.terrain new file mode 100644 index 000000000..2dcae30ff Binary files /dev/null and b/public/terrain/19/858496/353866.terrain differ diff --git a/public/terrain/19/858496/353867.terrain b/public/terrain/19/858496/353867.terrain new file mode 100644 index 000000000..8696717eb Binary files /dev/null and b/public/terrain/19/858496/353867.terrain differ diff --git a/public/terrain/19/858496/353868.terrain b/public/terrain/19/858496/353868.terrain new file mode 100644 index 000000000..9235db62d Binary files /dev/null and b/public/terrain/19/858496/353868.terrain differ diff --git a/public/terrain/19/858496/353869.terrain b/public/terrain/19/858496/353869.terrain new file mode 100644 index 000000000..c093b5a41 Binary files /dev/null and b/public/terrain/19/858496/353869.terrain differ diff --git a/public/terrain/19/858496/353870.terrain b/public/terrain/19/858496/353870.terrain new file mode 100644 index 000000000..cef3b924e Binary files /dev/null and b/public/terrain/19/858496/353870.terrain differ diff --git a/public/terrain/19/858496/353871.terrain b/public/terrain/19/858496/353871.terrain new file mode 100644 index 000000000..e3477e57c Binary files /dev/null and b/public/terrain/19/858496/353871.terrain differ diff --git a/public/terrain/19/858496/353872.terrain b/public/terrain/19/858496/353872.terrain new file mode 100644 index 000000000..0ffa77441 Binary files /dev/null and b/public/terrain/19/858496/353872.terrain differ diff --git a/public/terrain/19/858496/353873.terrain b/public/terrain/19/858496/353873.terrain new file mode 100644 index 000000000..9eb72cee2 Binary files /dev/null and b/public/terrain/19/858496/353873.terrain differ diff --git a/public/terrain/19/858496/353874.terrain b/public/terrain/19/858496/353874.terrain new file mode 100644 index 000000000..512caf47b Binary files /dev/null and b/public/terrain/19/858496/353874.terrain differ diff --git a/public/terrain/19/858496/353875.terrain b/public/terrain/19/858496/353875.terrain new file mode 100644 index 000000000..bca135d99 Binary files /dev/null and b/public/terrain/19/858496/353875.terrain differ diff --git a/public/terrain/19/858496/353876.terrain b/public/terrain/19/858496/353876.terrain new file mode 100644 index 000000000..c00b1df4f Binary files /dev/null and b/public/terrain/19/858496/353876.terrain differ diff --git a/public/terrain/19/858496/353877.terrain b/public/terrain/19/858496/353877.terrain new file mode 100644 index 000000000..9b3ee3bef Binary files /dev/null and b/public/terrain/19/858496/353877.terrain differ diff --git a/public/terrain/19/858496/353878.terrain b/public/terrain/19/858496/353878.terrain new file mode 100644 index 000000000..5d6e79ec9 Binary files /dev/null and b/public/terrain/19/858496/353878.terrain differ diff --git a/public/terrain/19/858496/353879.terrain b/public/terrain/19/858496/353879.terrain new file mode 100644 index 000000000..bd37ad2c6 Binary files /dev/null and b/public/terrain/19/858496/353879.terrain differ diff --git a/public/terrain/19/858496/353880.terrain b/public/terrain/19/858496/353880.terrain new file mode 100644 index 000000000..6cfa33b49 Binary files /dev/null and b/public/terrain/19/858496/353880.terrain differ diff --git a/public/terrain/19/858496/353881.terrain b/public/terrain/19/858496/353881.terrain new file mode 100644 index 000000000..a20a9ebb4 Binary files /dev/null and b/public/terrain/19/858496/353881.terrain differ diff --git a/public/terrain/19/858496/353882.terrain b/public/terrain/19/858496/353882.terrain new file mode 100644 index 000000000..d6b6a8f09 Binary files /dev/null and b/public/terrain/19/858496/353882.terrain differ diff --git a/public/terrain/19/858496/353883.terrain b/public/terrain/19/858496/353883.terrain new file mode 100644 index 000000000..145796ca7 Binary files /dev/null and b/public/terrain/19/858496/353883.terrain differ diff --git a/public/terrain/19/858496/353884.terrain b/public/terrain/19/858496/353884.terrain new file mode 100644 index 000000000..fbe491c16 Binary files /dev/null and b/public/terrain/19/858496/353884.terrain differ diff --git a/public/terrain/19/858496/353885.terrain b/public/terrain/19/858496/353885.terrain new file mode 100644 index 000000000..bb741cecd Binary files /dev/null and b/public/terrain/19/858496/353885.terrain differ diff --git a/public/terrain/19/858496/353886.terrain b/public/terrain/19/858496/353886.terrain new file mode 100644 index 000000000..a476a4ed8 Binary files /dev/null and b/public/terrain/19/858496/353886.terrain differ diff --git a/public/terrain/19/858496/353887.terrain b/public/terrain/19/858496/353887.terrain new file mode 100644 index 000000000..2de927468 Binary files /dev/null and b/public/terrain/19/858496/353887.terrain differ diff --git a/public/terrain/19/858496/353888.terrain b/public/terrain/19/858496/353888.terrain new file mode 100644 index 000000000..2a27d347b Binary files /dev/null and b/public/terrain/19/858496/353888.terrain differ diff --git a/public/terrain/19/858496/353889.terrain b/public/terrain/19/858496/353889.terrain new file mode 100644 index 000000000..3e6c36ff5 Binary files /dev/null and b/public/terrain/19/858496/353889.terrain differ diff --git a/public/terrain/19/858496/353890.terrain b/public/terrain/19/858496/353890.terrain new file mode 100644 index 000000000..29d887d19 Binary files /dev/null and b/public/terrain/19/858496/353890.terrain differ diff --git a/public/terrain/19/858496/353891.terrain b/public/terrain/19/858496/353891.terrain new file mode 100644 index 000000000..ae0946030 Binary files /dev/null and b/public/terrain/19/858496/353891.terrain differ diff --git a/public/terrain/19/858496/353892.terrain b/public/terrain/19/858496/353892.terrain new file mode 100644 index 000000000..db3080cc4 Binary files /dev/null and b/public/terrain/19/858496/353892.terrain differ diff --git a/public/terrain/19/858496/353893.terrain b/public/terrain/19/858496/353893.terrain new file mode 100644 index 000000000..bb67b5b33 Binary files /dev/null and b/public/terrain/19/858496/353893.terrain differ diff --git a/public/terrain/19/858496/353894.terrain b/public/terrain/19/858496/353894.terrain new file mode 100644 index 000000000..b1591f161 Binary files /dev/null and b/public/terrain/19/858496/353894.terrain differ diff --git a/public/terrain/19/858496/353895.terrain b/public/terrain/19/858496/353895.terrain new file mode 100644 index 000000000..35b7a2e66 Binary files /dev/null and b/public/terrain/19/858496/353895.terrain differ diff --git a/public/terrain/19/858496/353896.terrain b/public/terrain/19/858496/353896.terrain new file mode 100644 index 000000000..9d8d333b8 Binary files /dev/null and b/public/terrain/19/858496/353896.terrain differ diff --git a/public/terrain/19/858496/353897.terrain b/public/terrain/19/858496/353897.terrain new file mode 100644 index 000000000..476935ce0 Binary files /dev/null and b/public/terrain/19/858496/353897.terrain differ diff --git a/public/terrain/19/858496/353898.terrain b/public/terrain/19/858496/353898.terrain new file mode 100644 index 000000000..d90a81d91 Binary files /dev/null and b/public/terrain/19/858496/353898.terrain differ diff --git a/public/terrain/19/858496/353899.terrain b/public/terrain/19/858496/353899.terrain new file mode 100644 index 000000000..a89ec31cd Binary files /dev/null and b/public/terrain/19/858496/353899.terrain differ diff --git a/public/terrain/19/858496/353900.terrain b/public/terrain/19/858496/353900.terrain new file mode 100644 index 000000000..48144193f Binary files /dev/null and b/public/terrain/19/858496/353900.terrain differ diff --git a/public/terrain/19/858496/353901.terrain b/public/terrain/19/858496/353901.terrain new file mode 100644 index 000000000..711cad4d8 Binary files /dev/null and b/public/terrain/19/858496/353901.terrain differ diff --git a/public/terrain/19/858496/353902.terrain b/public/terrain/19/858496/353902.terrain new file mode 100644 index 000000000..af250aec1 Binary files /dev/null and b/public/terrain/19/858496/353902.terrain differ diff --git a/public/terrain/19/858496/353903.terrain b/public/terrain/19/858496/353903.terrain new file mode 100644 index 000000000..1ecd7f55d Binary files /dev/null and b/public/terrain/19/858496/353903.terrain differ diff --git a/public/terrain/19/858496/353904.terrain b/public/terrain/19/858496/353904.terrain new file mode 100644 index 000000000..f4b1eca69 Binary files /dev/null and b/public/terrain/19/858496/353904.terrain differ diff --git a/public/terrain/19/858496/353905.terrain b/public/terrain/19/858496/353905.terrain new file mode 100644 index 000000000..1e34bfa4c Binary files /dev/null and b/public/terrain/19/858496/353905.terrain differ diff --git a/public/terrain/19/858496/353906.terrain b/public/terrain/19/858496/353906.terrain new file mode 100644 index 000000000..9f8048eff Binary files /dev/null and b/public/terrain/19/858496/353906.terrain differ diff --git a/public/terrain/19/858496/353907.terrain b/public/terrain/19/858496/353907.terrain new file mode 100644 index 000000000..4fd54819f Binary files /dev/null and b/public/terrain/19/858496/353907.terrain differ diff --git a/public/terrain/19/858496/353908.terrain b/public/terrain/19/858496/353908.terrain new file mode 100644 index 000000000..56a16fbdb Binary files /dev/null and b/public/terrain/19/858496/353908.terrain differ diff --git a/public/terrain/19/858496/353909.terrain b/public/terrain/19/858496/353909.terrain new file mode 100644 index 000000000..94e5a64b7 Binary files /dev/null and b/public/terrain/19/858496/353909.terrain differ diff --git a/public/terrain/19/858496/353910.terrain b/public/terrain/19/858496/353910.terrain new file mode 100644 index 000000000..cbe916b52 Binary files /dev/null and b/public/terrain/19/858496/353910.terrain differ diff --git a/public/terrain/19/858496/353911.terrain b/public/terrain/19/858496/353911.terrain new file mode 100644 index 000000000..d77892db2 Binary files /dev/null and b/public/terrain/19/858496/353911.terrain differ diff --git a/public/terrain/19/858496/353912.terrain b/public/terrain/19/858496/353912.terrain new file mode 100644 index 000000000..36bf48913 Binary files /dev/null and b/public/terrain/19/858496/353912.terrain differ diff --git a/public/terrain/19/858496/353913.terrain b/public/terrain/19/858496/353913.terrain new file mode 100644 index 000000000..845bb4bf5 Binary files /dev/null and b/public/terrain/19/858496/353913.terrain differ diff --git a/public/terrain/19/858496/353914.terrain b/public/terrain/19/858496/353914.terrain new file mode 100644 index 000000000..409030262 Binary files /dev/null and b/public/terrain/19/858496/353914.terrain differ diff --git a/public/terrain/19/858496/353915.terrain b/public/terrain/19/858496/353915.terrain new file mode 100644 index 000000000..c62e2b09f Binary files /dev/null and b/public/terrain/19/858496/353915.terrain differ diff --git a/public/terrain/19/858496/353916.terrain b/public/terrain/19/858496/353916.terrain new file mode 100644 index 000000000..3c52fc89b Binary files /dev/null and b/public/terrain/19/858496/353916.terrain differ diff --git a/public/terrain/19/858496/353917.terrain b/public/terrain/19/858496/353917.terrain new file mode 100644 index 000000000..e7c009e62 Binary files /dev/null and b/public/terrain/19/858496/353917.terrain differ diff --git a/public/terrain/19/858496/353918.terrain b/public/terrain/19/858496/353918.terrain new file mode 100644 index 000000000..dfab30845 Binary files /dev/null and b/public/terrain/19/858496/353918.terrain differ diff --git a/public/terrain/19/858496/353919.terrain b/public/terrain/19/858496/353919.terrain new file mode 100644 index 000000000..928acac61 Binary files /dev/null and b/public/terrain/19/858496/353919.terrain differ diff --git a/public/terrain/19/858496/353920.terrain b/public/terrain/19/858496/353920.terrain new file mode 100644 index 000000000..98618275a Binary files /dev/null and b/public/terrain/19/858496/353920.terrain differ diff --git a/public/terrain/19/858496/353921.terrain b/public/terrain/19/858496/353921.terrain new file mode 100644 index 000000000..b63830913 Binary files /dev/null and b/public/terrain/19/858496/353921.terrain differ diff --git a/public/terrain/19/858496/353922.terrain b/public/terrain/19/858496/353922.terrain new file mode 100644 index 000000000..c7d8d2a04 Binary files /dev/null and b/public/terrain/19/858496/353922.terrain differ diff --git a/public/terrain/19/858496/353923.terrain b/public/terrain/19/858496/353923.terrain new file mode 100644 index 000000000..a91b64174 Binary files /dev/null and b/public/terrain/19/858496/353923.terrain differ diff --git a/public/terrain/19/858496/353924.terrain b/public/terrain/19/858496/353924.terrain new file mode 100644 index 000000000..114600321 Binary files /dev/null and b/public/terrain/19/858496/353924.terrain differ diff --git a/public/terrain/19/858496/353925.terrain b/public/terrain/19/858496/353925.terrain new file mode 100644 index 000000000..089707799 Binary files /dev/null and b/public/terrain/19/858496/353925.terrain differ diff --git a/public/terrain/19/858496/353926.terrain b/public/terrain/19/858496/353926.terrain new file mode 100644 index 000000000..130b5fd48 Binary files /dev/null and b/public/terrain/19/858496/353926.terrain differ diff --git a/public/terrain/19/858496/353927.terrain b/public/terrain/19/858496/353927.terrain new file mode 100644 index 000000000..6fadf172c Binary files /dev/null and b/public/terrain/19/858496/353927.terrain differ diff --git a/public/terrain/19/858496/353928.terrain b/public/terrain/19/858496/353928.terrain new file mode 100644 index 000000000..77e457d93 Binary files /dev/null and b/public/terrain/19/858496/353928.terrain differ diff --git a/public/terrain/19/858496/353929.terrain b/public/terrain/19/858496/353929.terrain new file mode 100644 index 000000000..e4558cf1e Binary files /dev/null and b/public/terrain/19/858496/353929.terrain differ diff --git a/public/terrain/19/858496/353930.terrain b/public/terrain/19/858496/353930.terrain new file mode 100644 index 000000000..56ee34c1b Binary files /dev/null and b/public/terrain/19/858496/353930.terrain differ diff --git a/public/terrain/19/858496/353931.terrain b/public/terrain/19/858496/353931.terrain new file mode 100644 index 000000000..e668c49da Binary files /dev/null and b/public/terrain/19/858496/353931.terrain differ diff --git a/public/terrain/19/858496/353932.terrain b/public/terrain/19/858496/353932.terrain new file mode 100644 index 000000000..51d27c029 Binary files /dev/null and b/public/terrain/19/858496/353932.terrain differ diff --git a/public/terrain/19/858496/353933.terrain b/public/terrain/19/858496/353933.terrain new file mode 100644 index 000000000..4a3284866 Binary files /dev/null and b/public/terrain/19/858496/353933.terrain differ diff --git a/public/terrain/19/858496/353934.terrain b/public/terrain/19/858496/353934.terrain new file mode 100644 index 000000000..d00c22a9a Binary files /dev/null and b/public/terrain/19/858496/353934.terrain differ diff --git a/public/terrain/19/858496/353935.terrain b/public/terrain/19/858496/353935.terrain new file mode 100644 index 000000000..dd3d8b4f0 Binary files /dev/null and b/public/terrain/19/858496/353935.terrain differ diff --git a/public/terrain/19/858496/353936.terrain b/public/terrain/19/858496/353936.terrain new file mode 100644 index 000000000..69b634ed3 Binary files /dev/null and b/public/terrain/19/858496/353936.terrain differ diff --git a/public/terrain/19/858496/353937.terrain b/public/terrain/19/858496/353937.terrain new file mode 100644 index 000000000..9ebdb5e9c Binary files /dev/null and b/public/terrain/19/858496/353937.terrain differ diff --git a/public/terrain/19/858496/353938.terrain b/public/terrain/19/858496/353938.terrain new file mode 100644 index 000000000..2abded17e Binary files /dev/null and b/public/terrain/19/858496/353938.terrain differ diff --git a/public/terrain/19/858496/353939.terrain b/public/terrain/19/858496/353939.terrain new file mode 100644 index 000000000..4480fcc5f Binary files /dev/null and b/public/terrain/19/858496/353939.terrain differ diff --git a/public/terrain/19/858496/353940.terrain b/public/terrain/19/858496/353940.terrain new file mode 100644 index 000000000..d7939a362 Binary files /dev/null and b/public/terrain/19/858496/353940.terrain differ diff --git a/public/terrain/19/858496/353941.terrain b/public/terrain/19/858496/353941.terrain new file mode 100644 index 000000000..c1c7ae57d Binary files /dev/null and b/public/terrain/19/858496/353941.terrain differ diff --git a/public/terrain/19/858496/353942.terrain b/public/terrain/19/858496/353942.terrain new file mode 100644 index 000000000..5c6112b71 Binary files /dev/null and b/public/terrain/19/858496/353942.terrain differ diff --git a/public/terrain/19/858496/353943.terrain b/public/terrain/19/858496/353943.terrain new file mode 100644 index 000000000..8f9e26ba5 Binary files /dev/null and b/public/terrain/19/858496/353943.terrain differ diff --git a/public/terrain/19/858496/353944.terrain b/public/terrain/19/858496/353944.terrain new file mode 100644 index 000000000..a127ffb07 Binary files /dev/null and b/public/terrain/19/858496/353944.terrain differ diff --git a/public/terrain/19/858496/353945.terrain b/public/terrain/19/858496/353945.terrain new file mode 100644 index 000000000..fb3356dad Binary files /dev/null and b/public/terrain/19/858496/353945.terrain differ diff --git a/public/terrain/19/858496/353946.terrain b/public/terrain/19/858496/353946.terrain new file mode 100644 index 000000000..966e6fc20 Binary files /dev/null and b/public/terrain/19/858496/353946.terrain differ diff --git a/public/terrain/19/858496/353947.terrain b/public/terrain/19/858496/353947.terrain new file mode 100644 index 000000000..092b0b6ad Binary files /dev/null and b/public/terrain/19/858496/353947.terrain differ diff --git a/public/terrain/19/858496/353948.terrain b/public/terrain/19/858496/353948.terrain new file mode 100644 index 000000000..d1c995b98 Binary files /dev/null and b/public/terrain/19/858496/353948.terrain differ diff --git a/public/terrain/19/858496/353949.terrain b/public/terrain/19/858496/353949.terrain new file mode 100644 index 000000000..9393a3773 Binary files /dev/null and b/public/terrain/19/858496/353949.terrain differ diff --git a/public/terrain/19/858496/353950.terrain b/public/terrain/19/858496/353950.terrain new file mode 100644 index 000000000..2781bcb1e Binary files /dev/null and b/public/terrain/19/858496/353950.terrain differ diff --git a/public/terrain/19/858496/353951.terrain b/public/terrain/19/858496/353951.terrain new file mode 100644 index 000000000..467bfc675 Binary files /dev/null and b/public/terrain/19/858496/353951.terrain differ diff --git a/public/terrain/19/858496/353952.terrain b/public/terrain/19/858496/353952.terrain new file mode 100644 index 000000000..19fe9babc Binary files /dev/null and b/public/terrain/19/858496/353952.terrain differ diff --git a/public/terrain/19/858496/353953.terrain b/public/terrain/19/858496/353953.terrain new file mode 100644 index 000000000..e7c5aead5 Binary files /dev/null and b/public/terrain/19/858496/353953.terrain differ diff --git a/public/terrain/19/858496/353954.terrain b/public/terrain/19/858496/353954.terrain new file mode 100644 index 000000000..4c4e36389 Binary files /dev/null and b/public/terrain/19/858496/353954.terrain differ diff --git a/public/terrain/19/858496/353955.terrain b/public/terrain/19/858496/353955.terrain new file mode 100644 index 000000000..4bb339eb9 Binary files /dev/null and b/public/terrain/19/858496/353955.terrain differ diff --git a/public/terrain/19/858496/353956.terrain b/public/terrain/19/858496/353956.terrain new file mode 100644 index 000000000..2d40462f4 Binary files /dev/null and b/public/terrain/19/858496/353956.terrain differ diff --git a/public/terrain/19/858496/353957.terrain b/public/terrain/19/858496/353957.terrain new file mode 100644 index 000000000..f7cd6a698 Binary files /dev/null and b/public/terrain/19/858496/353957.terrain differ diff --git a/public/terrain/19/858496/353958.terrain b/public/terrain/19/858496/353958.terrain new file mode 100644 index 000000000..d0256aa19 Binary files /dev/null and b/public/terrain/19/858496/353958.terrain differ diff --git a/public/terrain/19/858496/353959.terrain b/public/terrain/19/858496/353959.terrain new file mode 100644 index 000000000..a0693f9a4 Binary files /dev/null and b/public/terrain/19/858496/353959.terrain differ diff --git a/public/terrain/19/858496/353960.terrain b/public/terrain/19/858496/353960.terrain new file mode 100644 index 000000000..659da1528 Binary files /dev/null and b/public/terrain/19/858496/353960.terrain differ diff --git a/public/terrain/19/858496/353961.terrain b/public/terrain/19/858496/353961.terrain new file mode 100644 index 000000000..cb34b3800 Binary files /dev/null and b/public/terrain/19/858496/353961.terrain differ diff --git a/public/terrain/19/858496/353962.terrain b/public/terrain/19/858496/353962.terrain new file mode 100644 index 000000000..2380fe42b Binary files /dev/null and b/public/terrain/19/858496/353962.terrain differ diff --git a/public/terrain/19/858496/353963.terrain b/public/terrain/19/858496/353963.terrain new file mode 100644 index 000000000..e754911f8 Binary files /dev/null and b/public/terrain/19/858496/353963.terrain differ diff --git a/public/terrain/19/858496/353964.terrain b/public/terrain/19/858496/353964.terrain new file mode 100644 index 000000000..d3711990d Binary files /dev/null and b/public/terrain/19/858496/353964.terrain differ diff --git a/public/terrain/19/858496/353965.terrain b/public/terrain/19/858496/353965.terrain new file mode 100644 index 000000000..87d0f92d8 Binary files /dev/null and b/public/terrain/19/858496/353965.terrain differ diff --git a/public/terrain/19/858496/353966.terrain b/public/terrain/19/858496/353966.terrain new file mode 100644 index 000000000..42dc0622f Binary files /dev/null and b/public/terrain/19/858496/353966.terrain differ diff --git a/public/terrain/19/858496/353967.terrain b/public/terrain/19/858496/353967.terrain new file mode 100644 index 000000000..f34e70b88 Binary files /dev/null and b/public/terrain/19/858496/353967.terrain differ diff --git a/public/terrain/19/858496/353968.terrain b/public/terrain/19/858496/353968.terrain new file mode 100644 index 000000000..6e9131a49 Binary files /dev/null and b/public/terrain/19/858496/353968.terrain differ diff --git a/public/terrain/19/858496/353969.terrain b/public/terrain/19/858496/353969.terrain new file mode 100644 index 000000000..7b61cac91 Binary files /dev/null and b/public/terrain/19/858496/353969.terrain differ diff --git a/public/terrain/19/858496/353970.terrain b/public/terrain/19/858496/353970.terrain new file mode 100644 index 000000000..6ff3d0bf5 Binary files /dev/null and b/public/terrain/19/858496/353970.terrain differ diff --git a/public/terrain/19/858496/353971.terrain b/public/terrain/19/858496/353971.terrain new file mode 100644 index 000000000..9c9c7a6b5 Binary files /dev/null and b/public/terrain/19/858496/353971.terrain differ diff --git a/public/terrain/19/858496/353972.terrain b/public/terrain/19/858496/353972.terrain new file mode 100644 index 000000000..065bcfca9 Binary files /dev/null and b/public/terrain/19/858496/353972.terrain differ diff --git a/public/terrain/19/858496/353973.terrain b/public/terrain/19/858496/353973.terrain new file mode 100644 index 000000000..ed4b31d9e Binary files /dev/null and b/public/terrain/19/858496/353973.terrain differ diff --git a/public/terrain/19/858496/353974.terrain b/public/terrain/19/858496/353974.terrain new file mode 100644 index 000000000..5f28d0de8 Binary files /dev/null and b/public/terrain/19/858496/353974.terrain differ diff --git a/public/terrain/19/858496/353975.terrain b/public/terrain/19/858496/353975.terrain new file mode 100644 index 000000000..7bb6b01ba Binary files /dev/null and b/public/terrain/19/858496/353975.terrain differ diff --git a/public/terrain/19/858496/353976.terrain b/public/terrain/19/858496/353976.terrain new file mode 100644 index 000000000..b1a320890 Binary files /dev/null and b/public/terrain/19/858496/353976.terrain differ diff --git a/public/terrain/19/858496/353977.terrain b/public/terrain/19/858496/353977.terrain new file mode 100644 index 000000000..6bab9af81 Binary files /dev/null and b/public/terrain/19/858496/353977.terrain differ diff --git a/public/terrain/19/858496/353978.terrain b/public/terrain/19/858496/353978.terrain new file mode 100644 index 000000000..e34a3a3da Binary files /dev/null and b/public/terrain/19/858496/353978.terrain differ diff --git a/public/terrain/19/858496/353979.terrain b/public/terrain/19/858496/353979.terrain new file mode 100644 index 000000000..52827d680 Binary files /dev/null and b/public/terrain/19/858496/353979.terrain differ diff --git a/public/terrain/19/858496/353980.terrain b/public/terrain/19/858496/353980.terrain new file mode 100644 index 000000000..048f22fa4 Binary files /dev/null and b/public/terrain/19/858496/353980.terrain differ diff --git a/public/terrain/19/858496/353981.terrain b/public/terrain/19/858496/353981.terrain new file mode 100644 index 000000000..b2f91d663 Binary files /dev/null and b/public/terrain/19/858496/353981.terrain differ diff --git a/public/terrain/19/858496/353982.terrain b/public/terrain/19/858496/353982.terrain new file mode 100644 index 000000000..b8904a5d2 Binary files /dev/null and b/public/terrain/19/858496/353982.terrain differ diff --git a/public/terrain/19/858496/353983.terrain b/public/terrain/19/858496/353983.terrain new file mode 100644 index 000000000..728f9b93f Binary files /dev/null and b/public/terrain/19/858496/353983.terrain differ diff --git a/public/terrain/19/858496/353984.terrain b/public/terrain/19/858496/353984.terrain new file mode 100644 index 000000000..9bf359512 Binary files /dev/null and b/public/terrain/19/858496/353984.terrain differ diff --git a/public/terrain/19/858496/353985.terrain b/public/terrain/19/858496/353985.terrain new file mode 100644 index 000000000..cdb6aa516 Binary files /dev/null and b/public/terrain/19/858496/353985.terrain differ diff --git a/public/terrain/19/858496/353986.terrain b/public/terrain/19/858496/353986.terrain new file mode 100644 index 000000000..cfe03064b Binary files /dev/null and b/public/terrain/19/858496/353986.terrain differ diff --git a/public/terrain/19/858496/353987.terrain b/public/terrain/19/858496/353987.terrain new file mode 100644 index 000000000..bb8c5e8e1 Binary files /dev/null and b/public/terrain/19/858496/353987.terrain differ diff --git a/public/terrain/19/858496/353988.terrain b/public/terrain/19/858496/353988.terrain new file mode 100644 index 000000000..736527f6e Binary files /dev/null and b/public/terrain/19/858496/353988.terrain differ diff --git a/public/terrain/19/858496/353989.terrain b/public/terrain/19/858496/353989.terrain new file mode 100644 index 000000000..9266a5d58 Binary files /dev/null and b/public/terrain/19/858496/353989.terrain differ diff --git a/public/terrain/19/858496/353990.terrain b/public/terrain/19/858496/353990.terrain new file mode 100644 index 000000000..9bb080c30 Binary files /dev/null and b/public/terrain/19/858496/353990.terrain differ diff --git a/public/terrain/19/858496/353991.terrain b/public/terrain/19/858496/353991.terrain new file mode 100644 index 000000000..88d3056db Binary files /dev/null and b/public/terrain/19/858496/353991.terrain differ diff --git a/public/terrain/19/858496/353992.terrain b/public/terrain/19/858496/353992.terrain new file mode 100644 index 000000000..5f0e03305 Binary files /dev/null and b/public/terrain/19/858496/353992.terrain differ diff --git a/public/terrain/19/858496/353993.terrain b/public/terrain/19/858496/353993.terrain new file mode 100644 index 000000000..8f94abe7a Binary files /dev/null and b/public/terrain/19/858496/353993.terrain differ diff --git a/public/terrain/19/858496/353994.terrain b/public/terrain/19/858496/353994.terrain new file mode 100644 index 000000000..c2bd8ec20 Binary files /dev/null and b/public/terrain/19/858496/353994.terrain differ diff --git a/public/terrain/19/858496/353995.terrain b/public/terrain/19/858496/353995.terrain new file mode 100644 index 000000000..be22530a7 Binary files /dev/null and b/public/terrain/19/858496/353995.terrain differ diff --git a/public/terrain/19/858496/353996.terrain b/public/terrain/19/858496/353996.terrain new file mode 100644 index 000000000..9db81f029 Binary files /dev/null and b/public/terrain/19/858496/353996.terrain differ diff --git a/public/terrain/19/858496/353997.terrain b/public/terrain/19/858496/353997.terrain new file mode 100644 index 000000000..1848791fd Binary files /dev/null and b/public/terrain/19/858496/353997.terrain differ diff --git a/public/terrain/19/858496/353998.terrain b/public/terrain/19/858496/353998.terrain new file mode 100644 index 000000000..ac4551c60 Binary files /dev/null and b/public/terrain/19/858496/353998.terrain differ diff --git a/public/terrain/19/858496/353999.terrain b/public/terrain/19/858496/353999.terrain new file mode 100644 index 000000000..a5d14e715 Binary files /dev/null and b/public/terrain/19/858496/353999.terrain differ diff --git a/public/terrain/19/858496/354000.terrain b/public/terrain/19/858496/354000.terrain new file mode 100644 index 000000000..6d9c2efc1 Binary files /dev/null and b/public/terrain/19/858496/354000.terrain differ diff --git a/public/terrain/19/858496/354001.terrain b/public/terrain/19/858496/354001.terrain new file mode 100644 index 000000000..1c9be4314 Binary files /dev/null and b/public/terrain/19/858496/354001.terrain differ diff --git a/public/terrain/19/858496/354002.terrain b/public/terrain/19/858496/354002.terrain new file mode 100644 index 000000000..6984826c3 Binary files /dev/null and b/public/terrain/19/858496/354002.terrain differ diff --git a/public/terrain/19/858496/354003.terrain b/public/terrain/19/858496/354003.terrain new file mode 100644 index 000000000..53ec1167c Binary files /dev/null and b/public/terrain/19/858496/354003.terrain differ diff --git a/public/terrain/19/858496/354004.terrain b/public/terrain/19/858496/354004.terrain new file mode 100644 index 000000000..5480b950a Binary files /dev/null and b/public/terrain/19/858496/354004.terrain differ diff --git a/public/terrain/19/858496/354005.terrain b/public/terrain/19/858496/354005.terrain new file mode 100644 index 000000000..4a339b9bc Binary files /dev/null and b/public/terrain/19/858496/354005.terrain differ diff --git a/public/terrain/19/858496/354006.terrain b/public/terrain/19/858496/354006.terrain new file mode 100644 index 000000000..b329d31c4 Binary files /dev/null and b/public/terrain/19/858496/354006.terrain differ diff --git a/public/terrain/19/858496/354007.terrain b/public/terrain/19/858496/354007.terrain new file mode 100644 index 000000000..00864ec58 Binary files /dev/null and b/public/terrain/19/858496/354007.terrain differ diff --git a/public/terrain/19/858496/354008.terrain b/public/terrain/19/858496/354008.terrain new file mode 100644 index 000000000..53b876bb0 Binary files /dev/null and b/public/terrain/19/858496/354008.terrain differ diff --git a/public/terrain/19/858496/354009.terrain b/public/terrain/19/858496/354009.terrain new file mode 100644 index 000000000..be722194a Binary files /dev/null and b/public/terrain/19/858496/354009.terrain differ diff --git a/public/terrain/19/858496/354010.terrain b/public/terrain/19/858496/354010.terrain new file mode 100644 index 000000000..d8e9927ab Binary files /dev/null and b/public/terrain/19/858496/354010.terrain differ diff --git a/public/terrain/19/858496/354011.terrain b/public/terrain/19/858496/354011.terrain new file mode 100644 index 000000000..97515a371 Binary files /dev/null and b/public/terrain/19/858496/354011.terrain differ diff --git a/public/terrain/19/858496/354012.terrain b/public/terrain/19/858496/354012.terrain new file mode 100644 index 000000000..bcf1327b2 Binary files /dev/null and b/public/terrain/19/858496/354012.terrain differ diff --git a/public/terrain/19/858496/354013.terrain b/public/terrain/19/858496/354013.terrain new file mode 100644 index 000000000..92726d672 Binary files /dev/null and b/public/terrain/19/858496/354013.terrain differ diff --git a/public/terrain/19/858496/354014.terrain b/public/terrain/19/858496/354014.terrain new file mode 100644 index 000000000..0c65d293d Binary files /dev/null and b/public/terrain/19/858496/354014.terrain differ diff --git a/public/terrain/19/858496/354015.terrain b/public/terrain/19/858496/354015.terrain new file mode 100644 index 000000000..5a266775d Binary files /dev/null and b/public/terrain/19/858496/354015.terrain differ diff --git a/public/terrain/19/858496/354016.terrain b/public/terrain/19/858496/354016.terrain new file mode 100644 index 000000000..14a5429af Binary files /dev/null and b/public/terrain/19/858496/354016.terrain differ diff --git a/public/terrain/19/858496/354017.terrain b/public/terrain/19/858496/354017.terrain new file mode 100644 index 000000000..4aea54c38 Binary files /dev/null and b/public/terrain/19/858496/354017.terrain differ diff --git a/public/terrain/19/858496/354018.terrain b/public/terrain/19/858496/354018.terrain new file mode 100644 index 000000000..2a0bbfaa4 Binary files /dev/null and b/public/terrain/19/858496/354018.terrain differ diff --git a/public/terrain/19/858496/354019.terrain b/public/terrain/19/858496/354019.terrain new file mode 100644 index 000000000..4504617d9 Binary files /dev/null and b/public/terrain/19/858496/354019.terrain differ diff --git a/public/terrain/19/858496/354020.terrain b/public/terrain/19/858496/354020.terrain new file mode 100644 index 000000000..f35d79c41 Binary files /dev/null and b/public/terrain/19/858496/354020.terrain differ diff --git a/public/terrain/19/858496/354021.terrain b/public/terrain/19/858496/354021.terrain new file mode 100644 index 000000000..4e7dd9676 Binary files /dev/null and b/public/terrain/19/858496/354021.terrain differ diff --git a/public/terrain/19/858496/354022.terrain b/public/terrain/19/858496/354022.terrain new file mode 100644 index 000000000..09cab57aa Binary files /dev/null and b/public/terrain/19/858496/354022.terrain differ diff --git a/public/terrain/19/858496/354023.terrain b/public/terrain/19/858496/354023.terrain new file mode 100644 index 000000000..313893548 Binary files /dev/null and b/public/terrain/19/858496/354023.terrain differ diff --git a/public/terrain/19/858496/354024.terrain b/public/terrain/19/858496/354024.terrain new file mode 100644 index 000000000..d577eeeed Binary files /dev/null and b/public/terrain/19/858496/354024.terrain differ diff --git a/public/terrain/19/858496/354025.terrain b/public/terrain/19/858496/354025.terrain new file mode 100644 index 000000000..2dc913459 Binary files /dev/null and b/public/terrain/19/858496/354025.terrain differ diff --git a/public/terrain/19/858496/354026.terrain b/public/terrain/19/858496/354026.terrain new file mode 100644 index 000000000..71cbe9723 Binary files /dev/null and b/public/terrain/19/858496/354026.terrain differ diff --git a/public/terrain/19/858496/354027.terrain b/public/terrain/19/858496/354027.terrain new file mode 100644 index 000000000..aa66e8a48 Binary files /dev/null and b/public/terrain/19/858496/354027.terrain differ diff --git a/public/terrain/19/858496/354028.terrain b/public/terrain/19/858496/354028.terrain new file mode 100644 index 000000000..f6ebd54a2 Binary files /dev/null and b/public/terrain/19/858496/354028.terrain differ diff --git a/public/terrain/19/858496/354029.terrain b/public/terrain/19/858496/354029.terrain new file mode 100644 index 000000000..1223e11b3 Binary files /dev/null and b/public/terrain/19/858496/354029.terrain differ diff --git a/public/terrain/19/858496/354030.terrain b/public/terrain/19/858496/354030.terrain new file mode 100644 index 000000000..1fdeef7a8 Binary files /dev/null and b/public/terrain/19/858496/354030.terrain differ diff --git a/public/terrain/19/858496/354031.terrain b/public/terrain/19/858496/354031.terrain new file mode 100644 index 000000000..c94b44ca2 Binary files /dev/null and b/public/terrain/19/858496/354031.terrain differ diff --git a/public/terrain/19/858496/354032.terrain b/public/terrain/19/858496/354032.terrain new file mode 100644 index 000000000..b81cae813 Binary files /dev/null and b/public/terrain/19/858496/354032.terrain differ diff --git a/public/terrain/19/858496/354033.terrain b/public/terrain/19/858496/354033.terrain new file mode 100644 index 000000000..a2a701b30 Binary files /dev/null and b/public/terrain/19/858496/354033.terrain differ diff --git a/public/terrain/19/858496/354034.terrain b/public/terrain/19/858496/354034.terrain new file mode 100644 index 000000000..7883e3aec Binary files /dev/null and b/public/terrain/19/858496/354034.terrain differ diff --git a/public/terrain/19/858496/354035.terrain b/public/terrain/19/858496/354035.terrain new file mode 100644 index 000000000..6a7758952 Binary files /dev/null and b/public/terrain/19/858496/354035.terrain differ diff --git a/public/terrain/19/858496/354036.terrain b/public/terrain/19/858496/354036.terrain new file mode 100644 index 000000000..58e12a34c Binary files /dev/null and b/public/terrain/19/858496/354036.terrain differ diff --git a/public/terrain/19/858496/354037.terrain b/public/terrain/19/858496/354037.terrain new file mode 100644 index 000000000..192aa963c Binary files /dev/null and b/public/terrain/19/858496/354037.terrain differ diff --git a/public/terrain/19/858496/354038.terrain b/public/terrain/19/858496/354038.terrain new file mode 100644 index 000000000..e2ec3f4a2 Binary files /dev/null and b/public/terrain/19/858496/354038.terrain differ diff --git a/public/terrain/19/858496/354039.terrain b/public/terrain/19/858496/354039.terrain new file mode 100644 index 000000000..287941a44 Binary files /dev/null and b/public/terrain/19/858496/354039.terrain differ diff --git a/public/terrain/19/858496/354040.terrain b/public/terrain/19/858496/354040.terrain new file mode 100644 index 000000000..4bdf5a77f Binary files /dev/null and b/public/terrain/19/858496/354040.terrain differ diff --git a/public/terrain/19/858496/354041.terrain b/public/terrain/19/858496/354041.terrain new file mode 100644 index 000000000..76c0bc8b7 Binary files /dev/null and b/public/terrain/19/858496/354041.terrain differ diff --git a/public/terrain/19/858496/354042.terrain b/public/terrain/19/858496/354042.terrain new file mode 100644 index 000000000..d360a2cad Binary files /dev/null and b/public/terrain/19/858496/354042.terrain differ diff --git a/public/terrain/19/858496/354043.terrain b/public/terrain/19/858496/354043.terrain new file mode 100644 index 000000000..f45cf0a80 Binary files /dev/null and b/public/terrain/19/858496/354043.terrain differ diff --git a/public/terrain/19/858496/354044.terrain b/public/terrain/19/858496/354044.terrain new file mode 100644 index 000000000..8e63c682d Binary files /dev/null and b/public/terrain/19/858496/354044.terrain differ diff --git a/public/terrain/19/858496/354045.terrain b/public/terrain/19/858496/354045.terrain new file mode 100644 index 000000000..23d9a46e2 Binary files /dev/null and b/public/terrain/19/858496/354045.terrain differ diff --git a/public/terrain/19/858496/354046.terrain b/public/terrain/19/858496/354046.terrain new file mode 100644 index 000000000..e6060e499 Binary files /dev/null and b/public/terrain/19/858496/354046.terrain differ diff --git a/public/terrain/19/858496/354047.terrain b/public/terrain/19/858496/354047.terrain new file mode 100644 index 000000000..caf149d54 Binary files /dev/null and b/public/terrain/19/858496/354047.terrain differ diff --git a/public/terrain/19/858496/354048.terrain b/public/terrain/19/858496/354048.terrain new file mode 100644 index 000000000..cb6186863 Binary files /dev/null and b/public/terrain/19/858496/354048.terrain differ diff --git a/public/terrain/19/858496/354049.terrain b/public/terrain/19/858496/354049.terrain new file mode 100644 index 000000000..f159a48b4 Binary files /dev/null and b/public/terrain/19/858496/354049.terrain differ diff --git a/public/terrain/19/858496/354050.terrain b/public/terrain/19/858496/354050.terrain new file mode 100644 index 000000000..7aa1dacce Binary files /dev/null and b/public/terrain/19/858496/354050.terrain differ diff --git a/public/terrain/19/858496/354051.terrain b/public/terrain/19/858496/354051.terrain new file mode 100644 index 000000000..1956f1f7f Binary files /dev/null and b/public/terrain/19/858496/354051.terrain differ diff --git a/public/terrain/19/858496/354052.terrain b/public/terrain/19/858496/354052.terrain new file mode 100644 index 000000000..ae6b1a9ec Binary files /dev/null and b/public/terrain/19/858496/354052.terrain differ diff --git a/public/terrain/19/858496/354053.terrain b/public/terrain/19/858496/354053.terrain new file mode 100644 index 000000000..3580bf4dd Binary files /dev/null and b/public/terrain/19/858496/354053.terrain differ diff --git a/public/terrain/19/858496/354054.terrain b/public/terrain/19/858496/354054.terrain new file mode 100644 index 000000000..203b5de99 Binary files /dev/null and b/public/terrain/19/858496/354054.terrain differ diff --git a/public/terrain/19/858496/354055.terrain b/public/terrain/19/858496/354055.terrain new file mode 100644 index 000000000..839a0703e Binary files /dev/null and b/public/terrain/19/858496/354055.terrain differ diff --git a/public/terrain/19/858496/354056.terrain b/public/terrain/19/858496/354056.terrain new file mode 100644 index 000000000..be0046299 Binary files /dev/null and b/public/terrain/19/858496/354056.terrain differ diff --git a/public/terrain/19/858496/354057.terrain b/public/terrain/19/858496/354057.terrain new file mode 100644 index 000000000..ef46fd372 Binary files /dev/null and b/public/terrain/19/858496/354057.terrain differ diff --git a/public/terrain/19/858496/354058.terrain b/public/terrain/19/858496/354058.terrain new file mode 100644 index 000000000..51e0dff18 Binary files /dev/null and b/public/terrain/19/858496/354058.terrain differ diff --git a/public/terrain/19/858496/354059.terrain b/public/terrain/19/858496/354059.terrain new file mode 100644 index 000000000..b0fb73910 Binary files /dev/null and b/public/terrain/19/858496/354059.terrain differ diff --git a/public/terrain/19/858497/353743.terrain b/public/terrain/19/858497/353743.terrain new file mode 100644 index 000000000..4974f5463 Binary files /dev/null and b/public/terrain/19/858497/353743.terrain differ diff --git a/public/terrain/19/858497/353744.terrain b/public/terrain/19/858497/353744.terrain new file mode 100644 index 000000000..00c698a21 Binary files /dev/null and b/public/terrain/19/858497/353744.terrain differ diff --git a/public/terrain/19/858497/353745.terrain b/public/terrain/19/858497/353745.terrain new file mode 100644 index 000000000..dfe8dc6b1 Binary files /dev/null and b/public/terrain/19/858497/353745.terrain differ diff --git a/public/terrain/19/858497/353746.terrain b/public/terrain/19/858497/353746.terrain new file mode 100644 index 000000000..4d130c5cf Binary files /dev/null and b/public/terrain/19/858497/353746.terrain differ diff --git a/public/terrain/19/858497/353747.terrain b/public/terrain/19/858497/353747.terrain new file mode 100644 index 000000000..2362c3fb9 Binary files /dev/null and b/public/terrain/19/858497/353747.terrain differ diff --git a/public/terrain/19/858497/353748.terrain b/public/terrain/19/858497/353748.terrain new file mode 100644 index 000000000..7ab17472f Binary files /dev/null and b/public/terrain/19/858497/353748.terrain differ diff --git a/public/terrain/19/858497/353749.terrain b/public/terrain/19/858497/353749.terrain new file mode 100644 index 000000000..83387c5d0 Binary files /dev/null and b/public/terrain/19/858497/353749.terrain differ diff --git a/public/terrain/19/858497/353750.terrain b/public/terrain/19/858497/353750.terrain new file mode 100644 index 000000000..9467b4924 Binary files /dev/null and b/public/terrain/19/858497/353750.terrain differ diff --git a/public/terrain/19/858497/353751.terrain b/public/terrain/19/858497/353751.terrain new file mode 100644 index 000000000..1f8143649 Binary files /dev/null and b/public/terrain/19/858497/353751.terrain differ diff --git a/public/terrain/19/858497/353752.terrain b/public/terrain/19/858497/353752.terrain new file mode 100644 index 000000000..a1d316a94 Binary files /dev/null and b/public/terrain/19/858497/353752.terrain differ diff --git a/public/terrain/19/858497/353753.terrain b/public/terrain/19/858497/353753.terrain new file mode 100644 index 000000000..1cdafec8f Binary files /dev/null and b/public/terrain/19/858497/353753.terrain differ diff --git a/public/terrain/19/858497/353754.terrain b/public/terrain/19/858497/353754.terrain new file mode 100644 index 000000000..ea7fe8ef1 Binary files /dev/null and b/public/terrain/19/858497/353754.terrain differ diff --git a/public/terrain/19/858497/353755.terrain b/public/terrain/19/858497/353755.terrain new file mode 100644 index 000000000..2060dfd4d Binary files /dev/null and b/public/terrain/19/858497/353755.terrain differ diff --git a/public/terrain/19/858497/353756.terrain b/public/terrain/19/858497/353756.terrain new file mode 100644 index 000000000..826281c26 Binary files /dev/null and b/public/terrain/19/858497/353756.terrain differ diff --git a/public/terrain/19/858497/353757.terrain b/public/terrain/19/858497/353757.terrain new file mode 100644 index 000000000..ff9487cea Binary files /dev/null and b/public/terrain/19/858497/353757.terrain differ diff --git a/public/terrain/19/858497/353758.terrain b/public/terrain/19/858497/353758.terrain new file mode 100644 index 000000000..639db7168 Binary files /dev/null and b/public/terrain/19/858497/353758.terrain differ diff --git a/public/terrain/19/858497/353759.terrain b/public/terrain/19/858497/353759.terrain new file mode 100644 index 000000000..a87136d68 Binary files /dev/null and b/public/terrain/19/858497/353759.terrain differ diff --git a/public/terrain/19/858497/353760.terrain b/public/terrain/19/858497/353760.terrain new file mode 100644 index 000000000..b7144aa04 Binary files /dev/null and b/public/terrain/19/858497/353760.terrain differ diff --git a/public/terrain/19/858497/353761.terrain b/public/terrain/19/858497/353761.terrain new file mode 100644 index 000000000..b2a27aa1d Binary files /dev/null and b/public/terrain/19/858497/353761.terrain differ diff --git a/public/terrain/19/858497/353762.terrain b/public/terrain/19/858497/353762.terrain new file mode 100644 index 000000000..d51f3e1da Binary files /dev/null and b/public/terrain/19/858497/353762.terrain differ diff --git a/public/terrain/19/858497/353763.terrain b/public/terrain/19/858497/353763.terrain new file mode 100644 index 000000000..6f1717cc4 Binary files /dev/null and b/public/terrain/19/858497/353763.terrain differ diff --git a/public/terrain/19/858497/353764.terrain b/public/terrain/19/858497/353764.terrain new file mode 100644 index 000000000..4088d4f0f Binary files /dev/null and b/public/terrain/19/858497/353764.terrain differ diff --git a/public/terrain/19/858497/353765.terrain b/public/terrain/19/858497/353765.terrain new file mode 100644 index 000000000..23f57e150 Binary files /dev/null and b/public/terrain/19/858497/353765.terrain differ diff --git a/public/terrain/19/858497/353766.terrain b/public/terrain/19/858497/353766.terrain new file mode 100644 index 000000000..5f883b562 Binary files /dev/null and b/public/terrain/19/858497/353766.terrain differ diff --git a/public/terrain/19/858497/353767.terrain b/public/terrain/19/858497/353767.terrain new file mode 100644 index 000000000..849e9a2b7 Binary files /dev/null and b/public/terrain/19/858497/353767.terrain differ diff --git a/public/terrain/19/858497/353768.terrain b/public/terrain/19/858497/353768.terrain new file mode 100644 index 000000000..632fcf824 Binary files /dev/null and b/public/terrain/19/858497/353768.terrain differ diff --git a/public/terrain/19/858497/353769.terrain b/public/terrain/19/858497/353769.terrain new file mode 100644 index 000000000..141b946cf Binary files /dev/null and b/public/terrain/19/858497/353769.terrain differ diff --git a/public/terrain/19/858497/353770.terrain b/public/terrain/19/858497/353770.terrain new file mode 100644 index 000000000..f89a6acd3 Binary files /dev/null and b/public/terrain/19/858497/353770.terrain differ diff --git a/public/terrain/19/858497/353771.terrain b/public/terrain/19/858497/353771.terrain new file mode 100644 index 000000000..9a9410e62 Binary files /dev/null and b/public/terrain/19/858497/353771.terrain differ diff --git a/public/terrain/19/858497/353772.terrain b/public/terrain/19/858497/353772.terrain new file mode 100644 index 000000000..226bfbc4e Binary files /dev/null and b/public/terrain/19/858497/353772.terrain differ diff --git a/public/terrain/19/858497/353773.terrain b/public/terrain/19/858497/353773.terrain new file mode 100644 index 000000000..110e94be6 Binary files /dev/null and b/public/terrain/19/858497/353773.terrain differ diff --git a/public/terrain/19/858497/353774.terrain b/public/terrain/19/858497/353774.terrain new file mode 100644 index 000000000..25acb85b6 Binary files /dev/null and b/public/terrain/19/858497/353774.terrain differ diff --git a/public/terrain/19/858497/353775.terrain b/public/terrain/19/858497/353775.terrain new file mode 100644 index 000000000..00a1c2b18 Binary files /dev/null and b/public/terrain/19/858497/353775.terrain differ diff --git a/public/terrain/19/858497/353776.terrain b/public/terrain/19/858497/353776.terrain new file mode 100644 index 000000000..fc04247e0 Binary files /dev/null and b/public/terrain/19/858497/353776.terrain differ diff --git a/public/terrain/19/858497/353777.terrain b/public/terrain/19/858497/353777.terrain new file mode 100644 index 000000000..78f2d0ccc Binary files /dev/null and b/public/terrain/19/858497/353777.terrain differ diff --git a/public/terrain/19/858497/353778.terrain b/public/terrain/19/858497/353778.terrain new file mode 100644 index 000000000..119806aaf Binary files /dev/null and b/public/terrain/19/858497/353778.terrain differ diff --git a/public/terrain/19/858497/353779.terrain b/public/terrain/19/858497/353779.terrain new file mode 100644 index 000000000..2c5849d5f Binary files /dev/null and b/public/terrain/19/858497/353779.terrain differ diff --git a/public/terrain/19/858497/353780.terrain b/public/terrain/19/858497/353780.terrain new file mode 100644 index 000000000..f55df8a34 Binary files /dev/null and b/public/terrain/19/858497/353780.terrain differ diff --git a/public/terrain/19/858497/353781.terrain b/public/terrain/19/858497/353781.terrain new file mode 100644 index 000000000..0db593c9f Binary files /dev/null and b/public/terrain/19/858497/353781.terrain differ diff --git a/public/terrain/19/858497/353782.terrain b/public/terrain/19/858497/353782.terrain new file mode 100644 index 000000000..b0c6f7910 Binary files /dev/null and b/public/terrain/19/858497/353782.terrain differ diff --git a/public/terrain/19/858497/353783.terrain b/public/terrain/19/858497/353783.terrain new file mode 100644 index 000000000..3104f15ae Binary files /dev/null and b/public/terrain/19/858497/353783.terrain differ diff --git a/public/terrain/19/858497/353784.terrain b/public/terrain/19/858497/353784.terrain new file mode 100644 index 000000000..ea8e2c944 Binary files /dev/null and b/public/terrain/19/858497/353784.terrain differ diff --git a/public/terrain/19/858497/353785.terrain b/public/terrain/19/858497/353785.terrain new file mode 100644 index 000000000..58d5c58d7 Binary files /dev/null and b/public/terrain/19/858497/353785.terrain differ diff --git a/public/terrain/19/858497/353786.terrain b/public/terrain/19/858497/353786.terrain new file mode 100644 index 000000000..dcafebfa1 Binary files /dev/null and b/public/terrain/19/858497/353786.terrain differ diff --git a/public/terrain/19/858497/353787.terrain b/public/terrain/19/858497/353787.terrain new file mode 100644 index 000000000..98fad839c Binary files /dev/null and b/public/terrain/19/858497/353787.terrain differ diff --git a/public/terrain/19/858497/353788.terrain b/public/terrain/19/858497/353788.terrain new file mode 100644 index 000000000..410abaa17 Binary files /dev/null and b/public/terrain/19/858497/353788.terrain differ diff --git a/public/terrain/19/858497/353789.terrain b/public/terrain/19/858497/353789.terrain new file mode 100644 index 000000000..b2a86ab32 Binary files /dev/null and b/public/terrain/19/858497/353789.terrain differ diff --git a/public/terrain/19/858497/353790.terrain b/public/terrain/19/858497/353790.terrain new file mode 100644 index 000000000..423f53d39 Binary files /dev/null and b/public/terrain/19/858497/353790.terrain differ diff --git a/public/terrain/19/858497/353791.terrain b/public/terrain/19/858497/353791.terrain new file mode 100644 index 000000000..0f26f7da2 Binary files /dev/null and b/public/terrain/19/858497/353791.terrain differ diff --git a/public/terrain/19/858497/353792.terrain b/public/terrain/19/858497/353792.terrain new file mode 100644 index 000000000..1f68ec1a7 Binary files /dev/null and b/public/terrain/19/858497/353792.terrain differ diff --git a/public/terrain/19/858497/353793.terrain b/public/terrain/19/858497/353793.terrain new file mode 100644 index 000000000..5759abf8e Binary files /dev/null and b/public/terrain/19/858497/353793.terrain differ diff --git a/public/terrain/19/858497/353794.terrain b/public/terrain/19/858497/353794.terrain new file mode 100644 index 000000000..e68310547 Binary files /dev/null and b/public/terrain/19/858497/353794.terrain differ diff --git a/public/terrain/19/858497/353795.terrain b/public/terrain/19/858497/353795.terrain new file mode 100644 index 000000000..c9fb2a5fd Binary files /dev/null and b/public/terrain/19/858497/353795.terrain differ diff --git a/public/terrain/19/858497/353796.terrain b/public/terrain/19/858497/353796.terrain new file mode 100644 index 000000000..6606bd1b2 Binary files /dev/null and b/public/terrain/19/858497/353796.terrain differ diff --git a/public/terrain/19/858497/353797.terrain b/public/terrain/19/858497/353797.terrain new file mode 100644 index 000000000..468736a96 Binary files /dev/null and b/public/terrain/19/858497/353797.terrain differ diff --git a/public/terrain/19/858497/353798.terrain b/public/terrain/19/858497/353798.terrain new file mode 100644 index 000000000..5589ed0a4 Binary files /dev/null and b/public/terrain/19/858497/353798.terrain differ diff --git a/public/terrain/19/858497/353799.terrain b/public/terrain/19/858497/353799.terrain new file mode 100644 index 000000000..56ff65f9e Binary files /dev/null and b/public/terrain/19/858497/353799.terrain differ diff --git a/public/terrain/19/858497/353800.terrain b/public/terrain/19/858497/353800.terrain new file mode 100644 index 000000000..f3475c895 Binary files /dev/null and b/public/terrain/19/858497/353800.terrain differ diff --git a/public/terrain/19/858497/353801.terrain b/public/terrain/19/858497/353801.terrain new file mode 100644 index 000000000..07f5667f4 Binary files /dev/null and b/public/terrain/19/858497/353801.terrain differ diff --git a/public/terrain/19/858497/353802.terrain b/public/terrain/19/858497/353802.terrain new file mode 100644 index 000000000..e967d8fb8 Binary files /dev/null and b/public/terrain/19/858497/353802.terrain differ diff --git a/public/terrain/19/858497/353803.terrain b/public/terrain/19/858497/353803.terrain new file mode 100644 index 000000000..b5126a4d6 Binary files /dev/null and b/public/terrain/19/858497/353803.terrain differ diff --git a/public/terrain/19/858497/353804.terrain b/public/terrain/19/858497/353804.terrain new file mode 100644 index 000000000..ce40c37dc Binary files /dev/null and b/public/terrain/19/858497/353804.terrain differ diff --git a/public/terrain/19/858497/353805.terrain b/public/terrain/19/858497/353805.terrain new file mode 100644 index 000000000..dc893da33 Binary files /dev/null and b/public/terrain/19/858497/353805.terrain differ diff --git a/public/terrain/19/858497/353806.terrain b/public/terrain/19/858497/353806.terrain new file mode 100644 index 000000000..503abc8bf Binary files /dev/null and b/public/terrain/19/858497/353806.terrain differ diff --git a/public/terrain/19/858497/353807.terrain b/public/terrain/19/858497/353807.terrain new file mode 100644 index 000000000..476accf73 Binary files /dev/null and b/public/terrain/19/858497/353807.terrain differ diff --git a/public/terrain/19/858497/353808.terrain b/public/terrain/19/858497/353808.terrain new file mode 100644 index 000000000..c4ae26e69 Binary files /dev/null and b/public/terrain/19/858497/353808.terrain differ diff --git a/public/terrain/19/858497/353809.terrain b/public/terrain/19/858497/353809.terrain new file mode 100644 index 000000000..10ceac5c7 Binary files /dev/null and b/public/terrain/19/858497/353809.terrain differ diff --git a/public/terrain/19/858497/353810.terrain b/public/terrain/19/858497/353810.terrain new file mode 100644 index 000000000..c080b939d Binary files /dev/null and b/public/terrain/19/858497/353810.terrain differ diff --git a/public/terrain/19/858497/353811.terrain b/public/terrain/19/858497/353811.terrain new file mode 100644 index 000000000..9c60a1ed1 Binary files /dev/null and b/public/terrain/19/858497/353811.terrain differ diff --git a/public/terrain/19/858497/353812.terrain b/public/terrain/19/858497/353812.terrain new file mode 100644 index 000000000..2b1fab215 Binary files /dev/null and b/public/terrain/19/858497/353812.terrain differ diff --git a/public/terrain/19/858497/353813.terrain b/public/terrain/19/858497/353813.terrain new file mode 100644 index 000000000..2b800d01b Binary files /dev/null and b/public/terrain/19/858497/353813.terrain differ diff --git a/public/terrain/19/858497/353814.terrain b/public/terrain/19/858497/353814.terrain new file mode 100644 index 000000000..ad282b3d1 Binary files /dev/null and b/public/terrain/19/858497/353814.terrain differ diff --git a/public/terrain/19/858497/353815.terrain b/public/terrain/19/858497/353815.terrain new file mode 100644 index 000000000..e8cf59b0d Binary files /dev/null and b/public/terrain/19/858497/353815.terrain differ diff --git a/public/terrain/19/858497/353816.terrain b/public/terrain/19/858497/353816.terrain new file mode 100644 index 000000000..a5d51bf1b Binary files /dev/null and b/public/terrain/19/858497/353816.terrain differ diff --git a/public/terrain/19/858497/353817.terrain b/public/terrain/19/858497/353817.terrain new file mode 100644 index 000000000..65aeeff43 Binary files /dev/null and b/public/terrain/19/858497/353817.terrain differ diff --git a/public/terrain/19/858497/353818.terrain b/public/terrain/19/858497/353818.terrain new file mode 100644 index 000000000..b5038600f Binary files /dev/null and b/public/terrain/19/858497/353818.terrain differ diff --git a/public/terrain/19/858497/353819.terrain b/public/terrain/19/858497/353819.terrain new file mode 100644 index 000000000..b93f70aa9 Binary files /dev/null and b/public/terrain/19/858497/353819.terrain differ diff --git a/public/terrain/19/858497/353820.terrain b/public/terrain/19/858497/353820.terrain new file mode 100644 index 000000000..0ffd939ad Binary files /dev/null and b/public/terrain/19/858497/353820.terrain differ diff --git a/public/terrain/19/858497/353821.terrain b/public/terrain/19/858497/353821.terrain new file mode 100644 index 000000000..21fc5ece8 Binary files /dev/null and b/public/terrain/19/858497/353821.terrain differ diff --git a/public/terrain/19/858497/353822.terrain b/public/terrain/19/858497/353822.terrain new file mode 100644 index 000000000..489804371 Binary files /dev/null and b/public/terrain/19/858497/353822.terrain differ diff --git a/public/terrain/19/858497/353823.terrain b/public/terrain/19/858497/353823.terrain new file mode 100644 index 000000000..43efce4bf Binary files /dev/null and b/public/terrain/19/858497/353823.terrain differ diff --git a/public/terrain/19/858497/353824.terrain b/public/terrain/19/858497/353824.terrain new file mode 100644 index 000000000..17e4bc5d7 Binary files /dev/null and b/public/terrain/19/858497/353824.terrain differ diff --git a/public/terrain/19/858497/353825.terrain b/public/terrain/19/858497/353825.terrain new file mode 100644 index 000000000..4672667e8 Binary files /dev/null and b/public/terrain/19/858497/353825.terrain differ diff --git a/public/terrain/19/858497/353826.terrain b/public/terrain/19/858497/353826.terrain new file mode 100644 index 000000000..1b69d3fec Binary files /dev/null and b/public/terrain/19/858497/353826.terrain differ diff --git a/public/terrain/19/858497/353827.terrain b/public/terrain/19/858497/353827.terrain new file mode 100644 index 000000000..88f2f5e11 Binary files /dev/null and b/public/terrain/19/858497/353827.terrain differ diff --git a/public/terrain/19/858497/353828.terrain b/public/terrain/19/858497/353828.terrain new file mode 100644 index 000000000..bedd6defa Binary files /dev/null and b/public/terrain/19/858497/353828.terrain differ diff --git a/public/terrain/19/858497/353829.terrain b/public/terrain/19/858497/353829.terrain new file mode 100644 index 000000000..15b0fd272 Binary files /dev/null and b/public/terrain/19/858497/353829.terrain differ diff --git a/public/terrain/19/858497/353830.terrain b/public/terrain/19/858497/353830.terrain new file mode 100644 index 000000000..80fe7fc94 Binary files /dev/null and b/public/terrain/19/858497/353830.terrain differ diff --git a/public/terrain/19/858497/353831.terrain b/public/terrain/19/858497/353831.terrain new file mode 100644 index 000000000..aa9685cb8 Binary files /dev/null and b/public/terrain/19/858497/353831.terrain differ diff --git a/public/terrain/19/858497/353832.terrain b/public/terrain/19/858497/353832.terrain new file mode 100644 index 000000000..569e00037 Binary files /dev/null and b/public/terrain/19/858497/353832.terrain differ diff --git a/public/terrain/19/858497/353833.terrain b/public/terrain/19/858497/353833.terrain new file mode 100644 index 000000000..515eeb70b Binary files /dev/null and b/public/terrain/19/858497/353833.terrain differ diff --git a/public/terrain/19/858497/353834.terrain b/public/terrain/19/858497/353834.terrain new file mode 100644 index 000000000..252e7e4db Binary files /dev/null and b/public/terrain/19/858497/353834.terrain differ diff --git a/public/terrain/19/858497/353835.terrain b/public/terrain/19/858497/353835.terrain new file mode 100644 index 000000000..cc8f44530 Binary files /dev/null and b/public/terrain/19/858497/353835.terrain differ diff --git a/public/terrain/19/858497/353836.terrain b/public/terrain/19/858497/353836.terrain new file mode 100644 index 000000000..a018313a7 Binary files /dev/null and b/public/terrain/19/858497/353836.terrain differ diff --git a/public/terrain/19/858497/353837.terrain b/public/terrain/19/858497/353837.terrain new file mode 100644 index 000000000..b0fd1ade8 Binary files /dev/null and b/public/terrain/19/858497/353837.terrain differ diff --git a/public/terrain/19/858497/353838.terrain b/public/terrain/19/858497/353838.terrain new file mode 100644 index 000000000..ed9b4d6b8 Binary files /dev/null and b/public/terrain/19/858497/353838.terrain differ diff --git a/public/terrain/19/858497/353839.terrain b/public/terrain/19/858497/353839.terrain new file mode 100644 index 000000000..8f539debd Binary files /dev/null and b/public/terrain/19/858497/353839.terrain differ diff --git a/public/terrain/19/858497/353840.terrain b/public/terrain/19/858497/353840.terrain new file mode 100644 index 000000000..8a0a5c19b Binary files /dev/null and b/public/terrain/19/858497/353840.terrain differ diff --git a/public/terrain/19/858497/353841.terrain b/public/terrain/19/858497/353841.terrain new file mode 100644 index 000000000..9b7b05c67 Binary files /dev/null and b/public/terrain/19/858497/353841.terrain differ diff --git a/public/terrain/19/858497/353842.terrain b/public/terrain/19/858497/353842.terrain new file mode 100644 index 000000000..d94b7904e Binary files /dev/null and b/public/terrain/19/858497/353842.terrain differ diff --git a/public/terrain/19/858497/353843.terrain b/public/terrain/19/858497/353843.terrain new file mode 100644 index 000000000..200cfa41a Binary files /dev/null and b/public/terrain/19/858497/353843.terrain differ diff --git a/public/terrain/19/858497/353844.terrain b/public/terrain/19/858497/353844.terrain new file mode 100644 index 000000000..4515d3715 Binary files /dev/null and b/public/terrain/19/858497/353844.terrain differ diff --git a/public/terrain/19/858497/353845.terrain b/public/terrain/19/858497/353845.terrain new file mode 100644 index 000000000..ae065b4f3 Binary files /dev/null and b/public/terrain/19/858497/353845.terrain differ diff --git a/public/terrain/19/858497/353846.terrain b/public/terrain/19/858497/353846.terrain new file mode 100644 index 000000000..4376c6a51 Binary files /dev/null and b/public/terrain/19/858497/353846.terrain differ diff --git a/public/terrain/19/858497/353847.terrain b/public/terrain/19/858497/353847.terrain new file mode 100644 index 000000000..1986327d6 Binary files /dev/null and b/public/terrain/19/858497/353847.terrain differ diff --git a/public/terrain/19/858497/353848.terrain b/public/terrain/19/858497/353848.terrain new file mode 100644 index 000000000..a69b0d376 Binary files /dev/null and b/public/terrain/19/858497/353848.terrain differ diff --git a/public/terrain/19/858497/353849.terrain b/public/terrain/19/858497/353849.terrain new file mode 100644 index 000000000..8d810313a Binary files /dev/null and b/public/terrain/19/858497/353849.terrain differ diff --git a/public/terrain/19/858497/353850.terrain b/public/terrain/19/858497/353850.terrain new file mode 100644 index 000000000..0ef9a651e Binary files /dev/null and b/public/terrain/19/858497/353850.terrain differ diff --git a/public/terrain/19/858497/353851.terrain b/public/terrain/19/858497/353851.terrain new file mode 100644 index 000000000..59b90d8b5 Binary files /dev/null and b/public/terrain/19/858497/353851.terrain differ diff --git a/public/terrain/19/858497/353852.terrain b/public/terrain/19/858497/353852.terrain new file mode 100644 index 000000000..392014429 Binary files /dev/null and b/public/terrain/19/858497/353852.terrain differ diff --git a/public/terrain/19/858497/353853.terrain b/public/terrain/19/858497/353853.terrain new file mode 100644 index 000000000..f3f70a7ea Binary files /dev/null and b/public/terrain/19/858497/353853.terrain differ diff --git a/public/terrain/19/858497/353854.terrain b/public/terrain/19/858497/353854.terrain new file mode 100644 index 000000000..0f26cf387 Binary files /dev/null and b/public/terrain/19/858497/353854.terrain differ diff --git a/public/terrain/19/858497/353855.terrain b/public/terrain/19/858497/353855.terrain new file mode 100644 index 000000000..90eeb5f15 Binary files /dev/null and b/public/terrain/19/858497/353855.terrain differ diff --git a/public/terrain/19/858497/353856.terrain b/public/terrain/19/858497/353856.terrain new file mode 100644 index 000000000..71e4b02b1 Binary files /dev/null and b/public/terrain/19/858497/353856.terrain differ diff --git a/public/terrain/19/858497/353857.terrain b/public/terrain/19/858497/353857.terrain new file mode 100644 index 000000000..62dd1bdcd Binary files /dev/null and b/public/terrain/19/858497/353857.terrain differ diff --git a/public/terrain/19/858497/353858.terrain b/public/terrain/19/858497/353858.terrain new file mode 100644 index 000000000..07917b2da Binary files /dev/null and b/public/terrain/19/858497/353858.terrain differ diff --git a/public/terrain/19/858497/353859.terrain b/public/terrain/19/858497/353859.terrain new file mode 100644 index 000000000..0423ec00a Binary files /dev/null and b/public/terrain/19/858497/353859.terrain differ diff --git a/public/terrain/19/858497/353860.terrain b/public/terrain/19/858497/353860.terrain new file mode 100644 index 000000000..030ec9219 Binary files /dev/null and b/public/terrain/19/858497/353860.terrain differ diff --git a/public/terrain/19/858497/353861.terrain b/public/terrain/19/858497/353861.terrain new file mode 100644 index 000000000..375243af7 Binary files /dev/null and b/public/terrain/19/858497/353861.terrain differ diff --git a/public/terrain/19/858497/353862.terrain b/public/terrain/19/858497/353862.terrain new file mode 100644 index 000000000..b8c87ecb3 Binary files /dev/null and b/public/terrain/19/858497/353862.terrain differ diff --git a/public/terrain/19/858497/353863.terrain b/public/terrain/19/858497/353863.terrain new file mode 100644 index 000000000..24bc9a81c Binary files /dev/null and b/public/terrain/19/858497/353863.terrain differ diff --git a/public/terrain/19/858497/353864.terrain b/public/terrain/19/858497/353864.terrain new file mode 100644 index 000000000..fee77fa89 Binary files /dev/null and b/public/terrain/19/858497/353864.terrain differ diff --git a/public/terrain/19/858497/353865.terrain b/public/terrain/19/858497/353865.terrain new file mode 100644 index 000000000..fbe036fbc Binary files /dev/null and b/public/terrain/19/858497/353865.terrain differ diff --git a/public/terrain/19/858497/353866.terrain b/public/terrain/19/858497/353866.terrain new file mode 100644 index 000000000..feb993f96 Binary files /dev/null and b/public/terrain/19/858497/353866.terrain differ diff --git a/public/terrain/19/858497/353867.terrain b/public/terrain/19/858497/353867.terrain new file mode 100644 index 000000000..59e1afc9a Binary files /dev/null and b/public/terrain/19/858497/353867.terrain differ diff --git a/public/terrain/19/858497/353868.terrain b/public/terrain/19/858497/353868.terrain new file mode 100644 index 000000000..1072e5c8a Binary files /dev/null and b/public/terrain/19/858497/353868.terrain differ diff --git a/public/terrain/19/858497/353869.terrain b/public/terrain/19/858497/353869.terrain new file mode 100644 index 000000000..a2916f5b2 Binary files /dev/null and b/public/terrain/19/858497/353869.terrain differ diff --git a/public/terrain/19/858497/353870.terrain b/public/terrain/19/858497/353870.terrain new file mode 100644 index 000000000..3484653f5 Binary files /dev/null and b/public/terrain/19/858497/353870.terrain differ diff --git a/public/terrain/19/858497/353871.terrain b/public/terrain/19/858497/353871.terrain new file mode 100644 index 000000000..ecfe6139b Binary files /dev/null and b/public/terrain/19/858497/353871.terrain differ diff --git a/public/terrain/19/858497/353872.terrain b/public/terrain/19/858497/353872.terrain new file mode 100644 index 000000000..b446f2e18 Binary files /dev/null and b/public/terrain/19/858497/353872.terrain differ diff --git a/public/terrain/19/858497/353873.terrain b/public/terrain/19/858497/353873.terrain new file mode 100644 index 000000000..a47b7ff6a Binary files /dev/null and b/public/terrain/19/858497/353873.terrain differ diff --git a/public/terrain/19/858497/353874.terrain b/public/terrain/19/858497/353874.terrain new file mode 100644 index 000000000..002dabfd2 Binary files /dev/null and b/public/terrain/19/858497/353874.terrain differ diff --git a/public/terrain/19/858497/353875.terrain b/public/terrain/19/858497/353875.terrain new file mode 100644 index 000000000..c2fa3fbaa Binary files /dev/null and b/public/terrain/19/858497/353875.terrain differ diff --git a/public/terrain/19/858497/353876.terrain b/public/terrain/19/858497/353876.terrain new file mode 100644 index 000000000..d804f5222 Binary files /dev/null and b/public/terrain/19/858497/353876.terrain differ diff --git a/public/terrain/19/858497/353877.terrain b/public/terrain/19/858497/353877.terrain new file mode 100644 index 000000000..7897d200c Binary files /dev/null and b/public/terrain/19/858497/353877.terrain differ diff --git a/public/terrain/19/858497/353878.terrain b/public/terrain/19/858497/353878.terrain new file mode 100644 index 000000000..f7b11d94b Binary files /dev/null and b/public/terrain/19/858497/353878.terrain differ diff --git a/public/terrain/19/858497/353879.terrain b/public/terrain/19/858497/353879.terrain new file mode 100644 index 000000000..e8884c7fd Binary files /dev/null and b/public/terrain/19/858497/353879.terrain differ diff --git a/public/terrain/19/858497/353880.terrain b/public/terrain/19/858497/353880.terrain new file mode 100644 index 000000000..d82a6d817 Binary files /dev/null and b/public/terrain/19/858497/353880.terrain differ diff --git a/public/terrain/19/858497/353881.terrain b/public/terrain/19/858497/353881.terrain new file mode 100644 index 000000000..a66c49f79 Binary files /dev/null and b/public/terrain/19/858497/353881.terrain differ diff --git a/public/terrain/19/858497/353882.terrain b/public/terrain/19/858497/353882.terrain new file mode 100644 index 000000000..855939e07 Binary files /dev/null and b/public/terrain/19/858497/353882.terrain differ diff --git a/public/terrain/19/858497/353883.terrain b/public/terrain/19/858497/353883.terrain new file mode 100644 index 000000000..1a5cb9fc4 Binary files /dev/null and b/public/terrain/19/858497/353883.terrain differ diff --git a/public/terrain/19/858497/353884.terrain b/public/terrain/19/858497/353884.terrain new file mode 100644 index 000000000..deb9fe21f Binary files /dev/null and b/public/terrain/19/858497/353884.terrain differ diff --git a/public/terrain/19/858497/353885.terrain b/public/terrain/19/858497/353885.terrain new file mode 100644 index 000000000..3149756cb Binary files /dev/null and b/public/terrain/19/858497/353885.terrain differ diff --git a/public/terrain/19/858497/353886.terrain b/public/terrain/19/858497/353886.terrain new file mode 100644 index 000000000..b5d09b72f Binary files /dev/null and b/public/terrain/19/858497/353886.terrain differ diff --git a/public/terrain/19/858497/353887.terrain b/public/terrain/19/858497/353887.terrain new file mode 100644 index 000000000..c0727a79f Binary files /dev/null and b/public/terrain/19/858497/353887.terrain differ diff --git a/public/terrain/19/858497/353888.terrain b/public/terrain/19/858497/353888.terrain new file mode 100644 index 000000000..47eae8a26 Binary files /dev/null and b/public/terrain/19/858497/353888.terrain differ diff --git a/public/terrain/19/858497/353889.terrain b/public/terrain/19/858497/353889.terrain new file mode 100644 index 000000000..40ff213ae Binary files /dev/null and b/public/terrain/19/858497/353889.terrain differ diff --git a/public/terrain/19/858497/353890.terrain b/public/terrain/19/858497/353890.terrain new file mode 100644 index 000000000..51f91e671 Binary files /dev/null and b/public/terrain/19/858497/353890.terrain differ diff --git a/public/terrain/19/858497/353891.terrain b/public/terrain/19/858497/353891.terrain new file mode 100644 index 000000000..d41e5a3d9 Binary files /dev/null and b/public/terrain/19/858497/353891.terrain differ diff --git a/public/terrain/19/858497/353892.terrain b/public/terrain/19/858497/353892.terrain new file mode 100644 index 000000000..4468ad1a7 Binary files /dev/null and b/public/terrain/19/858497/353892.terrain differ diff --git a/public/terrain/19/858497/353893.terrain b/public/terrain/19/858497/353893.terrain new file mode 100644 index 000000000..da898a46c Binary files /dev/null and b/public/terrain/19/858497/353893.terrain differ diff --git a/public/terrain/19/858497/353894.terrain b/public/terrain/19/858497/353894.terrain new file mode 100644 index 000000000..1460e53d8 Binary files /dev/null and b/public/terrain/19/858497/353894.terrain differ diff --git a/public/terrain/19/858497/353895.terrain b/public/terrain/19/858497/353895.terrain new file mode 100644 index 000000000..044be46bd Binary files /dev/null and b/public/terrain/19/858497/353895.terrain differ diff --git a/public/terrain/19/858497/353896.terrain b/public/terrain/19/858497/353896.terrain new file mode 100644 index 000000000..a98aa1dcf Binary files /dev/null and b/public/terrain/19/858497/353896.terrain differ diff --git a/public/terrain/19/858497/353897.terrain b/public/terrain/19/858497/353897.terrain new file mode 100644 index 000000000..c4617e349 Binary files /dev/null and b/public/terrain/19/858497/353897.terrain differ diff --git a/public/terrain/19/858497/353898.terrain b/public/terrain/19/858497/353898.terrain new file mode 100644 index 000000000..079a17d36 Binary files /dev/null and b/public/terrain/19/858497/353898.terrain differ diff --git a/public/terrain/19/858497/353899.terrain b/public/terrain/19/858497/353899.terrain new file mode 100644 index 000000000..6be5f1f11 Binary files /dev/null and b/public/terrain/19/858497/353899.terrain differ diff --git a/public/terrain/19/858497/353900.terrain b/public/terrain/19/858497/353900.terrain new file mode 100644 index 000000000..908a40ce4 Binary files /dev/null and b/public/terrain/19/858497/353900.terrain differ diff --git a/public/terrain/19/858497/353901.terrain b/public/terrain/19/858497/353901.terrain new file mode 100644 index 000000000..9290ef0d2 Binary files /dev/null and b/public/terrain/19/858497/353901.terrain differ diff --git a/public/terrain/19/858497/353902.terrain b/public/terrain/19/858497/353902.terrain new file mode 100644 index 000000000..9bd89f225 Binary files /dev/null and b/public/terrain/19/858497/353902.terrain differ diff --git a/public/terrain/19/858497/353903.terrain b/public/terrain/19/858497/353903.terrain new file mode 100644 index 000000000..aa5495140 Binary files /dev/null and b/public/terrain/19/858497/353903.terrain differ diff --git a/public/terrain/19/858497/353904.terrain b/public/terrain/19/858497/353904.terrain new file mode 100644 index 000000000..cba58148e Binary files /dev/null and b/public/terrain/19/858497/353904.terrain differ diff --git a/public/terrain/19/858497/353905.terrain b/public/terrain/19/858497/353905.terrain new file mode 100644 index 000000000..0d8abb4fd Binary files /dev/null and b/public/terrain/19/858497/353905.terrain differ diff --git a/public/terrain/19/858497/353906.terrain b/public/terrain/19/858497/353906.terrain new file mode 100644 index 000000000..5926654ef Binary files /dev/null and b/public/terrain/19/858497/353906.terrain differ diff --git a/public/terrain/19/858497/353907.terrain b/public/terrain/19/858497/353907.terrain new file mode 100644 index 000000000..6ad97adfd Binary files /dev/null and b/public/terrain/19/858497/353907.terrain differ diff --git a/public/terrain/19/858497/353908.terrain b/public/terrain/19/858497/353908.terrain new file mode 100644 index 000000000..a205a0282 Binary files /dev/null and b/public/terrain/19/858497/353908.terrain differ diff --git a/public/terrain/19/858497/353909.terrain b/public/terrain/19/858497/353909.terrain new file mode 100644 index 000000000..546e6ec3c Binary files /dev/null and b/public/terrain/19/858497/353909.terrain differ diff --git a/public/terrain/19/858497/353910.terrain b/public/terrain/19/858497/353910.terrain new file mode 100644 index 000000000..680b63255 Binary files /dev/null and b/public/terrain/19/858497/353910.terrain differ diff --git a/public/terrain/19/858497/353911.terrain b/public/terrain/19/858497/353911.terrain new file mode 100644 index 000000000..aa486a76c Binary files /dev/null and b/public/terrain/19/858497/353911.terrain differ diff --git a/public/terrain/19/858497/353912.terrain b/public/terrain/19/858497/353912.terrain new file mode 100644 index 000000000..277ab9d77 Binary files /dev/null and b/public/terrain/19/858497/353912.terrain differ diff --git a/public/terrain/19/858497/353913.terrain b/public/terrain/19/858497/353913.terrain new file mode 100644 index 000000000..fcd1dbaa9 Binary files /dev/null and b/public/terrain/19/858497/353913.terrain differ diff --git a/public/terrain/19/858497/353914.terrain b/public/terrain/19/858497/353914.terrain new file mode 100644 index 000000000..6f07098f1 Binary files /dev/null and b/public/terrain/19/858497/353914.terrain differ diff --git a/public/terrain/19/858497/353915.terrain b/public/terrain/19/858497/353915.terrain new file mode 100644 index 000000000..d71b2c4d2 Binary files /dev/null and b/public/terrain/19/858497/353915.terrain differ diff --git a/public/terrain/19/858497/353916.terrain b/public/terrain/19/858497/353916.terrain new file mode 100644 index 000000000..c357354fa Binary files /dev/null and b/public/terrain/19/858497/353916.terrain differ diff --git a/public/terrain/19/858497/353917.terrain b/public/terrain/19/858497/353917.terrain new file mode 100644 index 000000000..cb25e7949 Binary files /dev/null and b/public/terrain/19/858497/353917.terrain differ diff --git a/public/terrain/19/858497/353918.terrain b/public/terrain/19/858497/353918.terrain new file mode 100644 index 000000000..4bcc53479 Binary files /dev/null and b/public/terrain/19/858497/353918.terrain differ diff --git a/public/terrain/19/858497/353919.terrain b/public/terrain/19/858497/353919.terrain new file mode 100644 index 000000000..f9b919669 Binary files /dev/null and b/public/terrain/19/858497/353919.terrain differ diff --git a/public/terrain/19/858497/353920.terrain b/public/terrain/19/858497/353920.terrain new file mode 100644 index 000000000..70ddc638e Binary files /dev/null and b/public/terrain/19/858497/353920.terrain differ diff --git a/public/terrain/19/858497/353921.terrain b/public/terrain/19/858497/353921.terrain new file mode 100644 index 000000000..81713b8b3 Binary files /dev/null and b/public/terrain/19/858497/353921.terrain differ diff --git a/public/terrain/19/858497/353922.terrain b/public/terrain/19/858497/353922.terrain new file mode 100644 index 000000000..443430ea4 Binary files /dev/null and b/public/terrain/19/858497/353922.terrain differ diff --git a/public/terrain/19/858497/353923.terrain b/public/terrain/19/858497/353923.terrain new file mode 100644 index 000000000..640507040 Binary files /dev/null and b/public/terrain/19/858497/353923.terrain differ diff --git a/public/terrain/19/858497/353924.terrain b/public/terrain/19/858497/353924.terrain new file mode 100644 index 000000000..c56bc82ae Binary files /dev/null and b/public/terrain/19/858497/353924.terrain differ diff --git a/public/terrain/19/858497/353925.terrain b/public/terrain/19/858497/353925.terrain new file mode 100644 index 000000000..86ede532d Binary files /dev/null and b/public/terrain/19/858497/353925.terrain differ diff --git a/public/terrain/19/858497/353926.terrain b/public/terrain/19/858497/353926.terrain new file mode 100644 index 000000000..0b44b9ef1 Binary files /dev/null and b/public/terrain/19/858497/353926.terrain differ diff --git a/public/terrain/19/858497/353927.terrain b/public/terrain/19/858497/353927.terrain new file mode 100644 index 000000000..82de2e482 Binary files /dev/null and b/public/terrain/19/858497/353927.terrain differ diff --git a/public/terrain/19/858497/353928.terrain b/public/terrain/19/858497/353928.terrain new file mode 100644 index 000000000..65ac88264 Binary files /dev/null and b/public/terrain/19/858497/353928.terrain differ diff --git a/public/terrain/19/858497/353929.terrain b/public/terrain/19/858497/353929.terrain new file mode 100644 index 000000000..1ae9941b1 Binary files /dev/null and b/public/terrain/19/858497/353929.terrain differ diff --git a/public/terrain/19/858497/353930.terrain b/public/terrain/19/858497/353930.terrain new file mode 100644 index 000000000..60ad3d45b Binary files /dev/null and b/public/terrain/19/858497/353930.terrain differ diff --git a/public/terrain/19/858497/353931.terrain b/public/terrain/19/858497/353931.terrain new file mode 100644 index 000000000..c7c56dd45 Binary files /dev/null and b/public/terrain/19/858497/353931.terrain differ diff --git a/public/terrain/19/858497/353932.terrain b/public/terrain/19/858497/353932.terrain new file mode 100644 index 000000000..78edf39fd Binary files /dev/null and b/public/terrain/19/858497/353932.terrain differ diff --git a/public/terrain/19/858497/353933.terrain b/public/terrain/19/858497/353933.terrain new file mode 100644 index 000000000..452ceea1a Binary files /dev/null and b/public/terrain/19/858497/353933.terrain differ diff --git a/public/terrain/19/858497/353934.terrain b/public/terrain/19/858497/353934.terrain new file mode 100644 index 000000000..d93249b01 Binary files /dev/null and b/public/terrain/19/858497/353934.terrain differ diff --git a/public/terrain/19/858497/353935.terrain b/public/terrain/19/858497/353935.terrain new file mode 100644 index 000000000..bdf4de1a2 Binary files /dev/null and b/public/terrain/19/858497/353935.terrain differ diff --git a/public/terrain/19/858497/353936.terrain b/public/terrain/19/858497/353936.terrain new file mode 100644 index 000000000..d5c856186 Binary files /dev/null and b/public/terrain/19/858497/353936.terrain differ diff --git a/public/terrain/19/858497/353937.terrain b/public/terrain/19/858497/353937.terrain new file mode 100644 index 000000000..e373de9bc Binary files /dev/null and b/public/terrain/19/858497/353937.terrain differ diff --git a/public/terrain/19/858497/353938.terrain b/public/terrain/19/858497/353938.terrain new file mode 100644 index 000000000..2fdb77e1e Binary files /dev/null and b/public/terrain/19/858497/353938.terrain differ diff --git a/public/terrain/19/858497/353939.terrain b/public/terrain/19/858497/353939.terrain new file mode 100644 index 000000000..932bd6e2e Binary files /dev/null and b/public/terrain/19/858497/353939.terrain differ diff --git a/public/terrain/19/858497/353940.terrain b/public/terrain/19/858497/353940.terrain new file mode 100644 index 000000000..a86294700 Binary files /dev/null and b/public/terrain/19/858497/353940.terrain differ diff --git a/public/terrain/19/858497/353941.terrain b/public/terrain/19/858497/353941.terrain new file mode 100644 index 000000000..8c6dfacb2 Binary files /dev/null and b/public/terrain/19/858497/353941.terrain differ diff --git a/public/terrain/19/858497/353942.terrain b/public/terrain/19/858497/353942.terrain new file mode 100644 index 000000000..3991feb87 Binary files /dev/null and b/public/terrain/19/858497/353942.terrain differ diff --git a/public/terrain/19/858497/353943.terrain b/public/terrain/19/858497/353943.terrain new file mode 100644 index 000000000..015717665 Binary files /dev/null and b/public/terrain/19/858497/353943.terrain differ diff --git a/public/terrain/19/858497/353944.terrain b/public/terrain/19/858497/353944.terrain new file mode 100644 index 000000000..83c9affc9 Binary files /dev/null and b/public/terrain/19/858497/353944.terrain differ diff --git a/public/terrain/19/858497/353945.terrain b/public/terrain/19/858497/353945.terrain new file mode 100644 index 000000000..fbfbe4129 Binary files /dev/null and b/public/terrain/19/858497/353945.terrain differ diff --git a/public/terrain/19/858497/353946.terrain b/public/terrain/19/858497/353946.terrain new file mode 100644 index 000000000..d52f7f2b5 Binary files /dev/null and b/public/terrain/19/858497/353946.terrain differ diff --git a/public/terrain/19/858497/353947.terrain b/public/terrain/19/858497/353947.terrain new file mode 100644 index 000000000..42e489291 Binary files /dev/null and b/public/terrain/19/858497/353947.terrain differ diff --git a/public/terrain/19/858497/353948.terrain b/public/terrain/19/858497/353948.terrain new file mode 100644 index 000000000..990e865cb Binary files /dev/null and b/public/terrain/19/858497/353948.terrain differ diff --git a/public/terrain/19/858497/353949.terrain b/public/terrain/19/858497/353949.terrain new file mode 100644 index 000000000..d459ac706 Binary files /dev/null and b/public/terrain/19/858497/353949.terrain differ diff --git a/public/terrain/19/858497/353950.terrain b/public/terrain/19/858497/353950.terrain new file mode 100644 index 000000000..b986d95de Binary files /dev/null and b/public/terrain/19/858497/353950.terrain differ diff --git a/public/terrain/19/858497/353951.terrain b/public/terrain/19/858497/353951.terrain new file mode 100644 index 000000000..c99dcbfdc Binary files /dev/null and b/public/terrain/19/858497/353951.terrain differ diff --git a/public/terrain/19/858497/353952.terrain b/public/terrain/19/858497/353952.terrain new file mode 100644 index 000000000..d69f2ebc2 Binary files /dev/null and b/public/terrain/19/858497/353952.terrain differ diff --git a/public/terrain/19/858497/353953.terrain b/public/terrain/19/858497/353953.terrain new file mode 100644 index 000000000..f9b1cc874 Binary files /dev/null and b/public/terrain/19/858497/353953.terrain differ diff --git a/public/terrain/19/858497/353954.terrain b/public/terrain/19/858497/353954.terrain new file mode 100644 index 000000000..8bd128510 Binary files /dev/null and b/public/terrain/19/858497/353954.terrain differ diff --git a/public/terrain/19/858497/353955.terrain b/public/terrain/19/858497/353955.terrain new file mode 100644 index 000000000..16003cf9e Binary files /dev/null and b/public/terrain/19/858497/353955.terrain differ diff --git a/public/terrain/19/858497/353956.terrain b/public/terrain/19/858497/353956.terrain new file mode 100644 index 000000000..7043dedd8 Binary files /dev/null and b/public/terrain/19/858497/353956.terrain differ diff --git a/public/terrain/19/858497/353957.terrain b/public/terrain/19/858497/353957.terrain new file mode 100644 index 000000000..9c3688ede Binary files /dev/null and b/public/terrain/19/858497/353957.terrain differ diff --git a/public/terrain/19/858497/353958.terrain b/public/terrain/19/858497/353958.terrain new file mode 100644 index 000000000..e7b452119 Binary files /dev/null and b/public/terrain/19/858497/353958.terrain differ diff --git a/public/terrain/19/858497/353959.terrain b/public/terrain/19/858497/353959.terrain new file mode 100644 index 000000000..23b7ba490 Binary files /dev/null and b/public/terrain/19/858497/353959.terrain differ diff --git a/public/terrain/19/858497/353960.terrain b/public/terrain/19/858497/353960.terrain new file mode 100644 index 000000000..30cc675c5 Binary files /dev/null and b/public/terrain/19/858497/353960.terrain differ diff --git a/public/terrain/19/858497/353961.terrain b/public/terrain/19/858497/353961.terrain new file mode 100644 index 000000000..454f5785d Binary files /dev/null and b/public/terrain/19/858497/353961.terrain differ diff --git a/public/terrain/19/858497/353962.terrain b/public/terrain/19/858497/353962.terrain new file mode 100644 index 000000000..8c126e5da Binary files /dev/null and b/public/terrain/19/858497/353962.terrain differ diff --git a/public/terrain/19/858497/353963.terrain b/public/terrain/19/858497/353963.terrain new file mode 100644 index 000000000..06a223529 Binary files /dev/null and b/public/terrain/19/858497/353963.terrain differ diff --git a/public/terrain/19/858497/353964.terrain b/public/terrain/19/858497/353964.terrain new file mode 100644 index 000000000..e4b92fe41 Binary files /dev/null and b/public/terrain/19/858497/353964.terrain differ diff --git a/public/terrain/19/858497/353965.terrain b/public/terrain/19/858497/353965.terrain new file mode 100644 index 000000000..edbbb7c63 Binary files /dev/null and b/public/terrain/19/858497/353965.terrain differ diff --git a/public/terrain/19/858497/353966.terrain b/public/terrain/19/858497/353966.terrain new file mode 100644 index 000000000..3d7943f93 Binary files /dev/null and b/public/terrain/19/858497/353966.terrain differ diff --git a/public/terrain/19/858497/353967.terrain b/public/terrain/19/858497/353967.terrain new file mode 100644 index 000000000..a1130e3d8 Binary files /dev/null and b/public/terrain/19/858497/353967.terrain differ diff --git a/public/terrain/19/858497/353968.terrain b/public/terrain/19/858497/353968.terrain new file mode 100644 index 000000000..25cc231ac Binary files /dev/null and b/public/terrain/19/858497/353968.terrain differ diff --git a/public/terrain/19/858497/353969.terrain b/public/terrain/19/858497/353969.terrain new file mode 100644 index 000000000..e86144e45 Binary files /dev/null and b/public/terrain/19/858497/353969.terrain differ diff --git a/public/terrain/19/858497/353970.terrain b/public/terrain/19/858497/353970.terrain new file mode 100644 index 000000000..626535788 Binary files /dev/null and b/public/terrain/19/858497/353970.terrain differ diff --git a/public/terrain/19/858497/353971.terrain b/public/terrain/19/858497/353971.terrain new file mode 100644 index 000000000..7a2a383f9 Binary files /dev/null and b/public/terrain/19/858497/353971.terrain differ diff --git a/public/terrain/19/858497/353972.terrain b/public/terrain/19/858497/353972.terrain new file mode 100644 index 000000000..d6fd7e47d Binary files /dev/null and b/public/terrain/19/858497/353972.terrain differ diff --git a/public/terrain/19/858497/353973.terrain b/public/terrain/19/858497/353973.terrain new file mode 100644 index 000000000..9b77b0e53 Binary files /dev/null and b/public/terrain/19/858497/353973.terrain differ diff --git a/public/terrain/19/858497/353974.terrain b/public/terrain/19/858497/353974.terrain new file mode 100644 index 000000000..db232739f Binary files /dev/null and b/public/terrain/19/858497/353974.terrain differ diff --git a/public/terrain/19/858497/353975.terrain b/public/terrain/19/858497/353975.terrain new file mode 100644 index 000000000..2e69dbf0b Binary files /dev/null and b/public/terrain/19/858497/353975.terrain differ diff --git a/public/terrain/19/858497/353976.terrain b/public/terrain/19/858497/353976.terrain new file mode 100644 index 000000000..434e96e76 Binary files /dev/null and b/public/terrain/19/858497/353976.terrain differ diff --git a/public/terrain/19/858497/353977.terrain b/public/terrain/19/858497/353977.terrain new file mode 100644 index 000000000..d2a2e23ba Binary files /dev/null and b/public/terrain/19/858497/353977.terrain differ diff --git a/public/terrain/19/858497/353978.terrain b/public/terrain/19/858497/353978.terrain new file mode 100644 index 000000000..a16e7f150 Binary files /dev/null and b/public/terrain/19/858497/353978.terrain differ diff --git a/public/terrain/19/858497/353979.terrain b/public/terrain/19/858497/353979.terrain new file mode 100644 index 000000000..8117ff97e Binary files /dev/null and b/public/terrain/19/858497/353979.terrain differ diff --git a/public/terrain/19/858497/353980.terrain b/public/terrain/19/858497/353980.terrain new file mode 100644 index 000000000..ff70414c6 Binary files /dev/null and b/public/terrain/19/858497/353980.terrain differ diff --git a/public/terrain/19/858497/353981.terrain b/public/terrain/19/858497/353981.terrain new file mode 100644 index 000000000..ff268fc3b Binary files /dev/null and b/public/terrain/19/858497/353981.terrain differ diff --git a/public/terrain/19/858497/353982.terrain b/public/terrain/19/858497/353982.terrain new file mode 100644 index 000000000..cf8e6e1c2 Binary files /dev/null and b/public/terrain/19/858497/353982.terrain differ diff --git a/public/terrain/19/858497/353983.terrain b/public/terrain/19/858497/353983.terrain new file mode 100644 index 000000000..cac64344d Binary files /dev/null and b/public/terrain/19/858497/353983.terrain differ diff --git a/public/terrain/19/858497/353984.terrain b/public/terrain/19/858497/353984.terrain new file mode 100644 index 000000000..15a2b0831 Binary files /dev/null and b/public/terrain/19/858497/353984.terrain differ diff --git a/public/terrain/19/858497/353985.terrain b/public/terrain/19/858497/353985.terrain new file mode 100644 index 000000000..7faa65177 Binary files /dev/null and b/public/terrain/19/858497/353985.terrain differ diff --git a/public/terrain/19/858497/353986.terrain b/public/terrain/19/858497/353986.terrain new file mode 100644 index 000000000..d6c41ca52 Binary files /dev/null and b/public/terrain/19/858497/353986.terrain differ diff --git a/public/terrain/19/858497/353987.terrain b/public/terrain/19/858497/353987.terrain new file mode 100644 index 000000000..cd6ded9e7 Binary files /dev/null and b/public/terrain/19/858497/353987.terrain differ diff --git a/public/terrain/19/858497/353988.terrain b/public/terrain/19/858497/353988.terrain new file mode 100644 index 000000000..8fb8333aa Binary files /dev/null and b/public/terrain/19/858497/353988.terrain differ diff --git a/public/terrain/19/858497/353989.terrain b/public/terrain/19/858497/353989.terrain new file mode 100644 index 000000000..acd8a218c Binary files /dev/null and b/public/terrain/19/858497/353989.terrain differ diff --git a/public/terrain/19/858497/353990.terrain b/public/terrain/19/858497/353990.terrain new file mode 100644 index 000000000..05a4e2f2d Binary files /dev/null and b/public/terrain/19/858497/353990.terrain differ diff --git a/public/terrain/19/858497/353991.terrain b/public/terrain/19/858497/353991.terrain new file mode 100644 index 000000000..49e1e9d74 Binary files /dev/null and b/public/terrain/19/858497/353991.terrain differ diff --git a/public/terrain/19/858497/353992.terrain b/public/terrain/19/858497/353992.terrain new file mode 100644 index 000000000..1eb250aae Binary files /dev/null and b/public/terrain/19/858497/353992.terrain differ diff --git a/public/terrain/19/858497/353993.terrain b/public/terrain/19/858497/353993.terrain new file mode 100644 index 000000000..d3344b442 Binary files /dev/null and b/public/terrain/19/858497/353993.terrain differ diff --git a/public/terrain/19/858497/353994.terrain b/public/terrain/19/858497/353994.terrain new file mode 100644 index 000000000..7b9ecdacc Binary files /dev/null and b/public/terrain/19/858497/353994.terrain differ diff --git a/public/terrain/19/858497/353995.terrain b/public/terrain/19/858497/353995.terrain new file mode 100644 index 000000000..11a6f1ec5 Binary files /dev/null and b/public/terrain/19/858497/353995.terrain differ diff --git a/public/terrain/19/858497/353996.terrain b/public/terrain/19/858497/353996.terrain new file mode 100644 index 000000000..27f7de911 Binary files /dev/null and b/public/terrain/19/858497/353996.terrain differ diff --git a/public/terrain/19/858497/353997.terrain b/public/terrain/19/858497/353997.terrain new file mode 100644 index 000000000..80c4d4d81 Binary files /dev/null and b/public/terrain/19/858497/353997.terrain differ diff --git a/public/terrain/19/858497/353998.terrain b/public/terrain/19/858497/353998.terrain new file mode 100644 index 000000000..b347a01c5 Binary files /dev/null and b/public/terrain/19/858497/353998.terrain differ diff --git a/public/terrain/19/858497/353999.terrain b/public/terrain/19/858497/353999.terrain new file mode 100644 index 000000000..687e2f038 Binary files /dev/null and b/public/terrain/19/858497/353999.terrain differ diff --git a/public/terrain/19/858497/354000.terrain b/public/terrain/19/858497/354000.terrain new file mode 100644 index 000000000..3270c9b0e Binary files /dev/null and b/public/terrain/19/858497/354000.terrain differ diff --git a/public/terrain/19/858497/354001.terrain b/public/terrain/19/858497/354001.terrain new file mode 100644 index 000000000..c98997f74 Binary files /dev/null and b/public/terrain/19/858497/354001.terrain differ diff --git a/public/terrain/19/858497/354002.terrain b/public/terrain/19/858497/354002.terrain new file mode 100644 index 000000000..594faddf2 Binary files /dev/null and b/public/terrain/19/858497/354002.terrain differ diff --git a/public/terrain/19/858497/354003.terrain b/public/terrain/19/858497/354003.terrain new file mode 100644 index 000000000..77cbb26e5 Binary files /dev/null and b/public/terrain/19/858497/354003.terrain differ diff --git a/public/terrain/19/858497/354004.terrain b/public/terrain/19/858497/354004.terrain new file mode 100644 index 000000000..968d5b59b Binary files /dev/null and b/public/terrain/19/858497/354004.terrain differ diff --git a/public/terrain/19/858497/354005.terrain b/public/terrain/19/858497/354005.terrain new file mode 100644 index 000000000..b7166afe1 Binary files /dev/null and b/public/terrain/19/858497/354005.terrain differ diff --git a/public/terrain/19/858497/354006.terrain b/public/terrain/19/858497/354006.terrain new file mode 100644 index 000000000..b9417bfca Binary files /dev/null and b/public/terrain/19/858497/354006.terrain differ diff --git a/public/terrain/19/858497/354007.terrain b/public/terrain/19/858497/354007.terrain new file mode 100644 index 000000000..511b671bb Binary files /dev/null and b/public/terrain/19/858497/354007.terrain differ diff --git a/public/terrain/19/858497/354008.terrain b/public/terrain/19/858497/354008.terrain new file mode 100644 index 000000000..d2d687edd Binary files /dev/null and b/public/terrain/19/858497/354008.terrain differ diff --git a/public/terrain/19/858497/354009.terrain b/public/terrain/19/858497/354009.terrain new file mode 100644 index 000000000..c8f99b4fe Binary files /dev/null and b/public/terrain/19/858497/354009.terrain differ diff --git a/public/terrain/19/858497/354010.terrain b/public/terrain/19/858497/354010.terrain new file mode 100644 index 000000000..8ab252150 Binary files /dev/null and b/public/terrain/19/858497/354010.terrain differ diff --git a/public/terrain/19/858497/354011.terrain b/public/terrain/19/858497/354011.terrain new file mode 100644 index 000000000..52d6de415 Binary files /dev/null and b/public/terrain/19/858497/354011.terrain differ diff --git a/public/terrain/19/858497/354012.terrain b/public/terrain/19/858497/354012.terrain new file mode 100644 index 000000000..5995e8122 Binary files /dev/null and b/public/terrain/19/858497/354012.terrain differ diff --git a/public/terrain/19/858497/354013.terrain b/public/terrain/19/858497/354013.terrain new file mode 100644 index 000000000..e88a80114 Binary files /dev/null and b/public/terrain/19/858497/354013.terrain differ diff --git a/public/terrain/19/858497/354014.terrain b/public/terrain/19/858497/354014.terrain new file mode 100644 index 000000000..7ab684f60 Binary files /dev/null and b/public/terrain/19/858497/354014.terrain differ diff --git a/public/terrain/19/858497/354015.terrain b/public/terrain/19/858497/354015.terrain new file mode 100644 index 000000000..7c5892385 Binary files /dev/null and b/public/terrain/19/858497/354015.terrain differ diff --git a/public/terrain/19/858497/354016.terrain b/public/terrain/19/858497/354016.terrain new file mode 100644 index 000000000..134ec3617 Binary files /dev/null and b/public/terrain/19/858497/354016.terrain differ diff --git a/public/terrain/19/858497/354017.terrain b/public/terrain/19/858497/354017.terrain new file mode 100644 index 000000000..7cbc3e33d Binary files /dev/null and b/public/terrain/19/858497/354017.terrain differ diff --git a/public/terrain/19/858497/354018.terrain b/public/terrain/19/858497/354018.terrain new file mode 100644 index 000000000..42bd8040f Binary files /dev/null and b/public/terrain/19/858497/354018.terrain differ diff --git a/public/terrain/19/858497/354019.terrain b/public/terrain/19/858497/354019.terrain new file mode 100644 index 000000000..4c7c98ab3 Binary files /dev/null and b/public/terrain/19/858497/354019.terrain differ diff --git a/public/terrain/19/858497/354020.terrain b/public/terrain/19/858497/354020.terrain new file mode 100644 index 000000000..f7f4b65b1 Binary files /dev/null and b/public/terrain/19/858497/354020.terrain differ diff --git a/public/terrain/19/858497/354021.terrain b/public/terrain/19/858497/354021.terrain new file mode 100644 index 000000000..12355f443 Binary files /dev/null and b/public/terrain/19/858497/354021.terrain differ diff --git a/public/terrain/19/858497/354022.terrain b/public/terrain/19/858497/354022.terrain new file mode 100644 index 000000000..8f56f80a8 Binary files /dev/null and b/public/terrain/19/858497/354022.terrain differ diff --git a/public/terrain/19/858497/354023.terrain b/public/terrain/19/858497/354023.terrain new file mode 100644 index 000000000..c2a3be966 Binary files /dev/null and b/public/terrain/19/858497/354023.terrain differ diff --git a/public/terrain/19/858497/354024.terrain b/public/terrain/19/858497/354024.terrain new file mode 100644 index 000000000..37be3840d Binary files /dev/null and b/public/terrain/19/858497/354024.terrain differ diff --git a/public/terrain/19/858497/354025.terrain b/public/terrain/19/858497/354025.terrain new file mode 100644 index 000000000..34a1afc69 Binary files /dev/null and b/public/terrain/19/858497/354025.terrain differ diff --git a/public/terrain/19/858497/354026.terrain b/public/terrain/19/858497/354026.terrain new file mode 100644 index 000000000..55eb7e9af Binary files /dev/null and b/public/terrain/19/858497/354026.terrain differ diff --git a/public/terrain/19/858497/354027.terrain b/public/terrain/19/858497/354027.terrain new file mode 100644 index 000000000..fdb8392c6 Binary files /dev/null and b/public/terrain/19/858497/354027.terrain differ diff --git a/public/terrain/19/858497/354028.terrain b/public/terrain/19/858497/354028.terrain new file mode 100644 index 000000000..3d61265ef Binary files /dev/null and b/public/terrain/19/858497/354028.terrain differ diff --git a/public/terrain/19/858497/354029.terrain b/public/terrain/19/858497/354029.terrain new file mode 100644 index 000000000..b6f4d06d3 Binary files /dev/null and b/public/terrain/19/858497/354029.terrain differ diff --git a/public/terrain/19/858497/354030.terrain b/public/terrain/19/858497/354030.terrain new file mode 100644 index 000000000..b03ba27e0 Binary files /dev/null and b/public/terrain/19/858497/354030.terrain differ diff --git a/public/terrain/19/858497/354031.terrain b/public/terrain/19/858497/354031.terrain new file mode 100644 index 000000000..83ad1adf7 Binary files /dev/null and b/public/terrain/19/858497/354031.terrain differ diff --git a/public/terrain/19/858497/354032.terrain b/public/terrain/19/858497/354032.terrain new file mode 100644 index 000000000..aab498513 Binary files /dev/null and b/public/terrain/19/858497/354032.terrain differ diff --git a/public/terrain/19/858497/354033.terrain b/public/terrain/19/858497/354033.terrain new file mode 100644 index 000000000..9ee58e222 Binary files /dev/null and b/public/terrain/19/858497/354033.terrain differ diff --git a/public/terrain/19/858497/354034.terrain b/public/terrain/19/858497/354034.terrain new file mode 100644 index 000000000..ad67d1a48 Binary files /dev/null and b/public/terrain/19/858497/354034.terrain differ diff --git a/public/terrain/19/858497/354035.terrain b/public/terrain/19/858497/354035.terrain new file mode 100644 index 000000000..2dbe609bd Binary files /dev/null and b/public/terrain/19/858497/354035.terrain differ diff --git a/public/terrain/19/858497/354036.terrain b/public/terrain/19/858497/354036.terrain new file mode 100644 index 000000000..5ecc6400c Binary files /dev/null and b/public/terrain/19/858497/354036.terrain differ diff --git a/public/terrain/19/858497/354037.terrain b/public/terrain/19/858497/354037.terrain new file mode 100644 index 000000000..548c74f25 Binary files /dev/null and b/public/terrain/19/858497/354037.terrain differ diff --git a/public/terrain/19/858497/354038.terrain b/public/terrain/19/858497/354038.terrain new file mode 100644 index 000000000..475582136 Binary files /dev/null and b/public/terrain/19/858497/354038.terrain differ diff --git a/public/terrain/19/858497/354039.terrain b/public/terrain/19/858497/354039.terrain new file mode 100644 index 000000000..6539d5809 Binary files /dev/null and b/public/terrain/19/858497/354039.terrain differ diff --git a/public/terrain/19/858497/354040.terrain b/public/terrain/19/858497/354040.terrain new file mode 100644 index 000000000..6d9141055 Binary files /dev/null and b/public/terrain/19/858497/354040.terrain differ diff --git a/public/terrain/19/858497/354041.terrain b/public/terrain/19/858497/354041.terrain new file mode 100644 index 000000000..946734c76 Binary files /dev/null and b/public/terrain/19/858497/354041.terrain differ diff --git a/public/terrain/19/858497/354042.terrain b/public/terrain/19/858497/354042.terrain new file mode 100644 index 000000000..19b820bac Binary files /dev/null and b/public/terrain/19/858497/354042.terrain differ diff --git a/public/terrain/19/858497/354043.terrain b/public/terrain/19/858497/354043.terrain new file mode 100644 index 000000000..b9456ee72 Binary files /dev/null and b/public/terrain/19/858497/354043.terrain differ diff --git a/public/terrain/19/858497/354044.terrain b/public/terrain/19/858497/354044.terrain new file mode 100644 index 000000000..7d77921c2 Binary files /dev/null and b/public/terrain/19/858497/354044.terrain differ diff --git a/public/terrain/19/858497/354045.terrain b/public/terrain/19/858497/354045.terrain new file mode 100644 index 000000000..f0f907b24 Binary files /dev/null and b/public/terrain/19/858497/354045.terrain differ diff --git a/public/terrain/19/858497/354046.terrain b/public/terrain/19/858497/354046.terrain new file mode 100644 index 000000000..c269b0ea5 Binary files /dev/null and b/public/terrain/19/858497/354046.terrain differ diff --git a/public/terrain/19/858497/354047.terrain b/public/terrain/19/858497/354047.terrain new file mode 100644 index 000000000..86d6978cb Binary files /dev/null and b/public/terrain/19/858497/354047.terrain differ diff --git a/public/terrain/19/858497/354048.terrain b/public/terrain/19/858497/354048.terrain new file mode 100644 index 000000000..e1226dfa0 Binary files /dev/null and b/public/terrain/19/858497/354048.terrain differ diff --git a/public/terrain/19/858497/354049.terrain b/public/terrain/19/858497/354049.terrain new file mode 100644 index 000000000..da4ea8a4e Binary files /dev/null and b/public/terrain/19/858497/354049.terrain differ diff --git a/public/terrain/19/858497/354050.terrain b/public/terrain/19/858497/354050.terrain new file mode 100644 index 000000000..f87a575b9 Binary files /dev/null and b/public/terrain/19/858497/354050.terrain differ diff --git a/public/terrain/19/858497/354051.terrain b/public/terrain/19/858497/354051.terrain new file mode 100644 index 000000000..2efe578a8 Binary files /dev/null and b/public/terrain/19/858497/354051.terrain differ diff --git a/public/terrain/19/858497/354052.terrain b/public/terrain/19/858497/354052.terrain new file mode 100644 index 000000000..caec48bfb Binary files /dev/null and b/public/terrain/19/858497/354052.terrain differ diff --git a/public/terrain/19/858497/354053.terrain b/public/terrain/19/858497/354053.terrain new file mode 100644 index 000000000..a5e1b45fd Binary files /dev/null and b/public/terrain/19/858497/354053.terrain differ diff --git a/public/terrain/19/858497/354054.terrain b/public/terrain/19/858497/354054.terrain new file mode 100644 index 000000000..61d163747 Binary files /dev/null and b/public/terrain/19/858497/354054.terrain differ diff --git a/public/terrain/19/858497/354055.terrain b/public/terrain/19/858497/354055.terrain new file mode 100644 index 000000000..ec44ad2c0 Binary files /dev/null and b/public/terrain/19/858497/354055.terrain differ diff --git a/public/terrain/19/858497/354056.terrain b/public/terrain/19/858497/354056.terrain new file mode 100644 index 000000000..1f8c51fed Binary files /dev/null and b/public/terrain/19/858497/354056.terrain differ diff --git a/public/terrain/19/858497/354057.terrain b/public/terrain/19/858497/354057.terrain new file mode 100644 index 000000000..c71548bd0 Binary files /dev/null and b/public/terrain/19/858497/354057.terrain differ diff --git a/public/terrain/19/858497/354058.terrain b/public/terrain/19/858497/354058.terrain new file mode 100644 index 000000000..0386b03f0 Binary files /dev/null and b/public/terrain/19/858497/354058.terrain differ diff --git a/public/terrain/19/858497/354059.terrain b/public/terrain/19/858497/354059.terrain new file mode 100644 index 000000000..b4492349a Binary files /dev/null and b/public/terrain/19/858497/354059.terrain differ diff --git a/public/terrain/19/858498/353743.terrain b/public/terrain/19/858498/353743.terrain new file mode 100644 index 000000000..54b31bf45 Binary files /dev/null and b/public/terrain/19/858498/353743.terrain differ diff --git a/public/terrain/19/858498/353744.terrain b/public/terrain/19/858498/353744.terrain new file mode 100644 index 000000000..f971afaa3 Binary files /dev/null and b/public/terrain/19/858498/353744.terrain differ diff --git a/public/terrain/19/858498/353745.terrain b/public/terrain/19/858498/353745.terrain new file mode 100644 index 000000000..f1e3ddd16 Binary files /dev/null and b/public/terrain/19/858498/353745.terrain differ diff --git a/public/terrain/19/858498/353746.terrain b/public/terrain/19/858498/353746.terrain new file mode 100644 index 000000000..3aa219c44 Binary files /dev/null and b/public/terrain/19/858498/353746.terrain differ diff --git a/public/terrain/19/858498/353747.terrain b/public/terrain/19/858498/353747.terrain new file mode 100644 index 000000000..2dffbba8b Binary files /dev/null and b/public/terrain/19/858498/353747.terrain differ diff --git a/public/terrain/19/858498/353748.terrain b/public/terrain/19/858498/353748.terrain new file mode 100644 index 000000000..c38a9fefe Binary files /dev/null and b/public/terrain/19/858498/353748.terrain differ diff --git a/public/terrain/19/858498/353749.terrain b/public/terrain/19/858498/353749.terrain new file mode 100644 index 000000000..e934a71bb Binary files /dev/null and b/public/terrain/19/858498/353749.terrain differ diff --git a/public/terrain/19/858498/353750.terrain b/public/terrain/19/858498/353750.terrain new file mode 100644 index 000000000..eb23e816a Binary files /dev/null and b/public/terrain/19/858498/353750.terrain differ diff --git a/public/terrain/19/858498/353751.terrain b/public/terrain/19/858498/353751.terrain new file mode 100644 index 000000000..415d8f1bb Binary files /dev/null and b/public/terrain/19/858498/353751.terrain differ diff --git a/public/terrain/19/858498/353752.terrain b/public/terrain/19/858498/353752.terrain new file mode 100644 index 000000000..2154bd33c Binary files /dev/null and b/public/terrain/19/858498/353752.terrain differ diff --git a/public/terrain/19/858498/353753.terrain b/public/terrain/19/858498/353753.terrain new file mode 100644 index 000000000..7636fb2ee Binary files /dev/null and b/public/terrain/19/858498/353753.terrain differ diff --git a/public/terrain/19/858498/353754.terrain b/public/terrain/19/858498/353754.terrain new file mode 100644 index 000000000..21ffca946 Binary files /dev/null and b/public/terrain/19/858498/353754.terrain differ diff --git a/public/terrain/19/858498/353755.terrain b/public/terrain/19/858498/353755.terrain new file mode 100644 index 000000000..1ef224092 Binary files /dev/null and b/public/terrain/19/858498/353755.terrain differ diff --git a/public/terrain/19/858498/353756.terrain b/public/terrain/19/858498/353756.terrain new file mode 100644 index 000000000..c25f454e3 Binary files /dev/null and b/public/terrain/19/858498/353756.terrain differ diff --git a/public/terrain/19/858498/353757.terrain b/public/terrain/19/858498/353757.terrain new file mode 100644 index 000000000..a31b5b25a Binary files /dev/null and b/public/terrain/19/858498/353757.terrain differ diff --git a/public/terrain/19/858498/353758.terrain b/public/terrain/19/858498/353758.terrain new file mode 100644 index 000000000..3f3641d1d Binary files /dev/null and b/public/terrain/19/858498/353758.terrain differ diff --git a/public/terrain/19/858498/353759.terrain b/public/terrain/19/858498/353759.terrain new file mode 100644 index 000000000..18b7b4d03 Binary files /dev/null and b/public/terrain/19/858498/353759.terrain differ diff --git a/public/terrain/19/858498/353760.terrain b/public/terrain/19/858498/353760.terrain new file mode 100644 index 000000000..dad26b04d Binary files /dev/null and b/public/terrain/19/858498/353760.terrain differ diff --git a/public/terrain/19/858498/353761.terrain b/public/terrain/19/858498/353761.terrain new file mode 100644 index 000000000..2169dfa0b Binary files /dev/null and b/public/terrain/19/858498/353761.terrain differ diff --git a/public/terrain/19/858498/353762.terrain b/public/terrain/19/858498/353762.terrain new file mode 100644 index 000000000..c64f9a261 Binary files /dev/null and b/public/terrain/19/858498/353762.terrain differ diff --git a/public/terrain/19/858498/353763.terrain b/public/terrain/19/858498/353763.terrain new file mode 100644 index 000000000..41487d0be Binary files /dev/null and b/public/terrain/19/858498/353763.terrain differ diff --git a/public/terrain/19/858498/353764.terrain b/public/terrain/19/858498/353764.terrain new file mode 100644 index 000000000..ac7ea546d Binary files /dev/null and b/public/terrain/19/858498/353764.terrain differ diff --git a/public/terrain/19/858498/353765.terrain b/public/terrain/19/858498/353765.terrain new file mode 100644 index 000000000..22e900237 Binary files /dev/null and b/public/terrain/19/858498/353765.terrain differ diff --git a/public/terrain/19/858498/353766.terrain b/public/terrain/19/858498/353766.terrain new file mode 100644 index 000000000..ffe8aa8c7 Binary files /dev/null and b/public/terrain/19/858498/353766.terrain differ diff --git a/public/terrain/19/858498/353767.terrain b/public/terrain/19/858498/353767.terrain new file mode 100644 index 000000000..a44e1a10e Binary files /dev/null and b/public/terrain/19/858498/353767.terrain differ diff --git a/public/terrain/19/858498/353768.terrain b/public/terrain/19/858498/353768.terrain new file mode 100644 index 000000000..fc8e43723 Binary files /dev/null and b/public/terrain/19/858498/353768.terrain differ diff --git a/public/terrain/19/858498/353769.terrain b/public/terrain/19/858498/353769.terrain new file mode 100644 index 000000000..1d8869982 Binary files /dev/null and b/public/terrain/19/858498/353769.terrain differ diff --git a/public/terrain/19/858498/353770.terrain b/public/terrain/19/858498/353770.terrain new file mode 100644 index 000000000..c8d7d9deb Binary files /dev/null and b/public/terrain/19/858498/353770.terrain differ diff --git a/public/terrain/19/858498/353771.terrain b/public/terrain/19/858498/353771.terrain new file mode 100644 index 000000000..1eed6d899 Binary files /dev/null and b/public/terrain/19/858498/353771.terrain differ diff --git a/public/terrain/19/858498/353772.terrain b/public/terrain/19/858498/353772.terrain new file mode 100644 index 000000000..23f5efd97 Binary files /dev/null and b/public/terrain/19/858498/353772.terrain differ diff --git a/public/terrain/19/858498/353773.terrain b/public/terrain/19/858498/353773.terrain new file mode 100644 index 000000000..3d74a7431 Binary files /dev/null and b/public/terrain/19/858498/353773.terrain differ diff --git a/public/terrain/19/858498/353774.terrain b/public/terrain/19/858498/353774.terrain new file mode 100644 index 000000000..9d168c13e Binary files /dev/null and b/public/terrain/19/858498/353774.terrain differ diff --git a/public/terrain/19/858498/353775.terrain b/public/terrain/19/858498/353775.terrain new file mode 100644 index 000000000..f80522923 Binary files /dev/null and b/public/terrain/19/858498/353775.terrain differ diff --git a/public/terrain/19/858498/353776.terrain b/public/terrain/19/858498/353776.terrain new file mode 100644 index 000000000..d6347427e Binary files /dev/null and b/public/terrain/19/858498/353776.terrain differ diff --git a/public/terrain/19/858498/353777.terrain b/public/terrain/19/858498/353777.terrain new file mode 100644 index 000000000..d2331b3b3 Binary files /dev/null and b/public/terrain/19/858498/353777.terrain differ diff --git a/public/terrain/19/858498/353778.terrain b/public/terrain/19/858498/353778.terrain new file mode 100644 index 000000000..9d2476913 Binary files /dev/null and b/public/terrain/19/858498/353778.terrain differ diff --git a/public/terrain/19/858498/353779.terrain b/public/terrain/19/858498/353779.terrain new file mode 100644 index 000000000..6e73e9c26 Binary files /dev/null and b/public/terrain/19/858498/353779.terrain differ diff --git a/public/terrain/19/858498/353780.terrain b/public/terrain/19/858498/353780.terrain new file mode 100644 index 000000000..0d6712e45 Binary files /dev/null and b/public/terrain/19/858498/353780.terrain differ diff --git a/public/terrain/19/858498/353781.terrain b/public/terrain/19/858498/353781.terrain new file mode 100644 index 000000000..54220acb0 Binary files /dev/null and b/public/terrain/19/858498/353781.terrain differ diff --git a/public/terrain/19/858498/353782.terrain b/public/terrain/19/858498/353782.terrain new file mode 100644 index 000000000..3035a6bfc Binary files /dev/null and b/public/terrain/19/858498/353782.terrain differ diff --git a/public/terrain/19/858498/353783.terrain b/public/terrain/19/858498/353783.terrain new file mode 100644 index 000000000..471dab406 Binary files /dev/null and b/public/terrain/19/858498/353783.terrain differ diff --git a/public/terrain/19/858498/353784.terrain b/public/terrain/19/858498/353784.terrain new file mode 100644 index 000000000..5165fe585 Binary files /dev/null and b/public/terrain/19/858498/353784.terrain differ diff --git a/public/terrain/19/858498/353785.terrain b/public/terrain/19/858498/353785.terrain new file mode 100644 index 000000000..ef1f5daec Binary files /dev/null and b/public/terrain/19/858498/353785.terrain differ diff --git a/public/terrain/19/858498/353786.terrain b/public/terrain/19/858498/353786.terrain new file mode 100644 index 000000000..32ed342e1 Binary files /dev/null and b/public/terrain/19/858498/353786.terrain differ diff --git a/public/terrain/19/858498/353787.terrain b/public/terrain/19/858498/353787.terrain new file mode 100644 index 000000000..8c92f1b40 Binary files /dev/null and b/public/terrain/19/858498/353787.terrain differ diff --git a/public/terrain/19/858498/353788.terrain b/public/terrain/19/858498/353788.terrain new file mode 100644 index 000000000..1d717a266 Binary files /dev/null and b/public/terrain/19/858498/353788.terrain differ diff --git a/public/terrain/19/858498/353789.terrain b/public/terrain/19/858498/353789.terrain new file mode 100644 index 000000000..7e9f170da Binary files /dev/null and b/public/terrain/19/858498/353789.terrain differ diff --git a/public/terrain/19/858498/353790.terrain b/public/terrain/19/858498/353790.terrain new file mode 100644 index 000000000..2843f81d0 Binary files /dev/null and b/public/terrain/19/858498/353790.terrain differ diff --git a/public/terrain/19/858498/353791.terrain b/public/terrain/19/858498/353791.terrain new file mode 100644 index 000000000..642453846 Binary files /dev/null and b/public/terrain/19/858498/353791.terrain differ diff --git a/public/terrain/19/858498/353792.terrain b/public/terrain/19/858498/353792.terrain new file mode 100644 index 000000000..77b3bc18d Binary files /dev/null and b/public/terrain/19/858498/353792.terrain differ diff --git a/public/terrain/19/858498/353793.terrain b/public/terrain/19/858498/353793.terrain new file mode 100644 index 000000000..56bb84661 Binary files /dev/null and b/public/terrain/19/858498/353793.terrain differ diff --git a/public/terrain/19/858498/353794.terrain b/public/terrain/19/858498/353794.terrain new file mode 100644 index 000000000..46f0e48dd Binary files /dev/null and b/public/terrain/19/858498/353794.terrain differ diff --git a/public/terrain/19/858498/353795.terrain b/public/terrain/19/858498/353795.terrain new file mode 100644 index 000000000..7d8a6495f Binary files /dev/null and b/public/terrain/19/858498/353795.terrain differ diff --git a/public/terrain/19/858498/353796.terrain b/public/terrain/19/858498/353796.terrain new file mode 100644 index 000000000..ec615e438 Binary files /dev/null and b/public/terrain/19/858498/353796.terrain differ diff --git a/public/terrain/19/858498/353797.terrain b/public/terrain/19/858498/353797.terrain new file mode 100644 index 000000000..fed0b5288 Binary files /dev/null and b/public/terrain/19/858498/353797.terrain differ diff --git a/public/terrain/19/858498/353798.terrain b/public/terrain/19/858498/353798.terrain new file mode 100644 index 000000000..08397fb5f Binary files /dev/null and b/public/terrain/19/858498/353798.terrain differ diff --git a/public/terrain/19/858498/353799.terrain b/public/terrain/19/858498/353799.terrain new file mode 100644 index 000000000..6ddbe989b Binary files /dev/null and b/public/terrain/19/858498/353799.terrain differ diff --git a/public/terrain/19/858498/353800.terrain b/public/terrain/19/858498/353800.terrain new file mode 100644 index 000000000..1f1189eb3 Binary files /dev/null and b/public/terrain/19/858498/353800.terrain differ diff --git a/public/terrain/19/858498/353801.terrain b/public/terrain/19/858498/353801.terrain new file mode 100644 index 000000000..b48763228 Binary files /dev/null and b/public/terrain/19/858498/353801.terrain differ diff --git a/public/terrain/19/858498/353802.terrain b/public/terrain/19/858498/353802.terrain new file mode 100644 index 000000000..d3f8116f1 Binary files /dev/null and b/public/terrain/19/858498/353802.terrain differ diff --git a/public/terrain/19/858498/353803.terrain b/public/terrain/19/858498/353803.terrain new file mode 100644 index 000000000..b609227f8 Binary files /dev/null and b/public/terrain/19/858498/353803.terrain differ diff --git a/public/terrain/19/858498/353804.terrain b/public/terrain/19/858498/353804.terrain new file mode 100644 index 000000000..9b2b16f07 Binary files /dev/null and b/public/terrain/19/858498/353804.terrain differ diff --git a/public/terrain/19/858498/353805.terrain b/public/terrain/19/858498/353805.terrain new file mode 100644 index 000000000..6e729b9db Binary files /dev/null and b/public/terrain/19/858498/353805.terrain differ diff --git a/public/terrain/19/858498/353806.terrain b/public/terrain/19/858498/353806.terrain new file mode 100644 index 000000000..bbe10f537 Binary files /dev/null and b/public/terrain/19/858498/353806.terrain differ diff --git a/public/terrain/19/858498/353807.terrain b/public/terrain/19/858498/353807.terrain new file mode 100644 index 000000000..1231f90eb Binary files /dev/null and b/public/terrain/19/858498/353807.terrain differ diff --git a/public/terrain/19/858498/353808.terrain b/public/terrain/19/858498/353808.terrain new file mode 100644 index 000000000..27091654d Binary files /dev/null and b/public/terrain/19/858498/353808.terrain differ diff --git a/public/terrain/19/858498/353809.terrain b/public/terrain/19/858498/353809.terrain new file mode 100644 index 000000000..90b692b08 Binary files /dev/null and b/public/terrain/19/858498/353809.terrain differ diff --git a/public/terrain/19/858498/353810.terrain b/public/terrain/19/858498/353810.terrain new file mode 100644 index 000000000..0019711e1 Binary files /dev/null and b/public/terrain/19/858498/353810.terrain differ diff --git a/public/terrain/19/858498/353811.terrain b/public/terrain/19/858498/353811.terrain new file mode 100644 index 000000000..b4ad4e213 Binary files /dev/null and b/public/terrain/19/858498/353811.terrain differ diff --git a/public/terrain/19/858498/353812.terrain b/public/terrain/19/858498/353812.terrain new file mode 100644 index 000000000..7c6ae3c63 Binary files /dev/null and b/public/terrain/19/858498/353812.terrain differ diff --git a/public/terrain/19/858498/353813.terrain b/public/terrain/19/858498/353813.terrain new file mode 100644 index 000000000..3d53e56e8 Binary files /dev/null and b/public/terrain/19/858498/353813.terrain differ diff --git a/public/terrain/19/858498/353814.terrain b/public/terrain/19/858498/353814.terrain new file mode 100644 index 000000000..7a16bbc01 Binary files /dev/null and b/public/terrain/19/858498/353814.terrain differ diff --git a/public/terrain/19/858498/353815.terrain b/public/terrain/19/858498/353815.terrain new file mode 100644 index 000000000..cdd327675 Binary files /dev/null and b/public/terrain/19/858498/353815.terrain differ diff --git a/public/terrain/19/858498/353816.terrain b/public/terrain/19/858498/353816.terrain new file mode 100644 index 000000000..29d5a4b85 Binary files /dev/null and b/public/terrain/19/858498/353816.terrain differ diff --git a/public/terrain/19/858498/353817.terrain b/public/terrain/19/858498/353817.terrain new file mode 100644 index 000000000..22e9da541 Binary files /dev/null and b/public/terrain/19/858498/353817.terrain differ diff --git a/public/terrain/19/858498/353818.terrain b/public/terrain/19/858498/353818.terrain new file mode 100644 index 000000000..1b07a31ed Binary files /dev/null and b/public/terrain/19/858498/353818.terrain differ diff --git a/public/terrain/19/858498/353819.terrain b/public/terrain/19/858498/353819.terrain new file mode 100644 index 000000000..ed2b4f953 Binary files /dev/null and b/public/terrain/19/858498/353819.terrain differ diff --git a/public/terrain/19/858498/353820.terrain b/public/terrain/19/858498/353820.terrain new file mode 100644 index 000000000..64b0bdfa5 Binary files /dev/null and b/public/terrain/19/858498/353820.terrain differ diff --git a/public/terrain/19/858498/353821.terrain b/public/terrain/19/858498/353821.terrain new file mode 100644 index 000000000..2bbac000d Binary files /dev/null and b/public/terrain/19/858498/353821.terrain differ diff --git a/public/terrain/19/858498/353822.terrain b/public/terrain/19/858498/353822.terrain new file mode 100644 index 000000000..979b56a33 Binary files /dev/null and b/public/terrain/19/858498/353822.terrain differ diff --git a/public/terrain/19/858498/353823.terrain b/public/terrain/19/858498/353823.terrain new file mode 100644 index 000000000..93b2ca82c Binary files /dev/null and b/public/terrain/19/858498/353823.terrain differ diff --git a/public/terrain/19/858498/353824.terrain b/public/terrain/19/858498/353824.terrain new file mode 100644 index 000000000..87f5309e5 Binary files /dev/null and b/public/terrain/19/858498/353824.terrain differ diff --git a/public/terrain/19/858498/353825.terrain b/public/terrain/19/858498/353825.terrain new file mode 100644 index 000000000..68a808649 Binary files /dev/null and b/public/terrain/19/858498/353825.terrain differ diff --git a/public/terrain/19/858498/353826.terrain b/public/terrain/19/858498/353826.terrain new file mode 100644 index 000000000..743d74d8b Binary files /dev/null and b/public/terrain/19/858498/353826.terrain differ diff --git a/public/terrain/19/858498/353827.terrain b/public/terrain/19/858498/353827.terrain new file mode 100644 index 000000000..9ece7e486 Binary files /dev/null and b/public/terrain/19/858498/353827.terrain differ diff --git a/public/terrain/19/858498/353828.terrain b/public/terrain/19/858498/353828.terrain new file mode 100644 index 000000000..caa28799e Binary files /dev/null and b/public/terrain/19/858498/353828.terrain differ diff --git a/public/terrain/19/858498/353829.terrain b/public/terrain/19/858498/353829.terrain new file mode 100644 index 000000000..7cdfd88bc Binary files /dev/null and b/public/terrain/19/858498/353829.terrain differ diff --git a/public/terrain/19/858498/353830.terrain b/public/terrain/19/858498/353830.terrain new file mode 100644 index 000000000..8ab33f11f Binary files /dev/null and b/public/terrain/19/858498/353830.terrain differ diff --git a/public/terrain/19/858498/353831.terrain b/public/terrain/19/858498/353831.terrain new file mode 100644 index 000000000..00f9340d9 Binary files /dev/null and b/public/terrain/19/858498/353831.terrain differ diff --git a/public/terrain/19/858498/353832.terrain b/public/terrain/19/858498/353832.terrain new file mode 100644 index 000000000..8e91a43d9 Binary files /dev/null and b/public/terrain/19/858498/353832.terrain differ diff --git a/public/terrain/19/858498/353833.terrain b/public/terrain/19/858498/353833.terrain new file mode 100644 index 000000000..1c01ae71e Binary files /dev/null and b/public/terrain/19/858498/353833.terrain differ diff --git a/public/terrain/19/858498/353834.terrain b/public/terrain/19/858498/353834.terrain new file mode 100644 index 000000000..f9fb49a9c Binary files /dev/null and b/public/terrain/19/858498/353834.terrain differ diff --git a/public/terrain/19/858498/353835.terrain b/public/terrain/19/858498/353835.terrain new file mode 100644 index 000000000..fd65afc50 Binary files /dev/null and b/public/terrain/19/858498/353835.terrain differ diff --git a/public/terrain/19/858498/353836.terrain b/public/terrain/19/858498/353836.terrain new file mode 100644 index 000000000..b9fcfc268 Binary files /dev/null and b/public/terrain/19/858498/353836.terrain differ diff --git a/public/terrain/19/858498/353837.terrain b/public/terrain/19/858498/353837.terrain new file mode 100644 index 000000000..d66b27f07 Binary files /dev/null and b/public/terrain/19/858498/353837.terrain differ diff --git a/public/terrain/19/858498/353838.terrain b/public/terrain/19/858498/353838.terrain new file mode 100644 index 000000000..b7324b19a Binary files /dev/null and b/public/terrain/19/858498/353838.terrain differ diff --git a/public/terrain/19/858498/353839.terrain b/public/terrain/19/858498/353839.terrain new file mode 100644 index 000000000..a25a8e1f0 Binary files /dev/null and b/public/terrain/19/858498/353839.terrain differ diff --git a/public/terrain/19/858498/353840.terrain b/public/terrain/19/858498/353840.terrain new file mode 100644 index 000000000..7e52ff7af Binary files /dev/null and b/public/terrain/19/858498/353840.terrain differ diff --git a/public/terrain/19/858498/353841.terrain b/public/terrain/19/858498/353841.terrain new file mode 100644 index 000000000..6f6645301 Binary files /dev/null and b/public/terrain/19/858498/353841.terrain differ diff --git a/public/terrain/19/858498/353842.terrain b/public/terrain/19/858498/353842.terrain new file mode 100644 index 000000000..631092167 Binary files /dev/null and b/public/terrain/19/858498/353842.terrain differ diff --git a/public/terrain/19/858498/353843.terrain b/public/terrain/19/858498/353843.terrain new file mode 100644 index 000000000..1ba046c0f Binary files /dev/null and b/public/terrain/19/858498/353843.terrain differ diff --git a/public/terrain/19/858498/353844.terrain b/public/terrain/19/858498/353844.terrain new file mode 100644 index 000000000..5daa03d3a Binary files /dev/null and b/public/terrain/19/858498/353844.terrain differ diff --git a/public/terrain/19/858498/353845.terrain b/public/terrain/19/858498/353845.terrain new file mode 100644 index 000000000..29f7f9860 Binary files /dev/null and b/public/terrain/19/858498/353845.terrain differ diff --git a/public/terrain/19/858498/353846.terrain b/public/terrain/19/858498/353846.terrain new file mode 100644 index 000000000..5aa41c7c6 Binary files /dev/null and b/public/terrain/19/858498/353846.terrain differ diff --git a/public/terrain/19/858498/353847.terrain b/public/terrain/19/858498/353847.terrain new file mode 100644 index 000000000..5d9640b98 Binary files /dev/null and b/public/terrain/19/858498/353847.terrain differ diff --git a/public/terrain/19/858498/353848.terrain b/public/terrain/19/858498/353848.terrain new file mode 100644 index 000000000..a4baf8bd7 Binary files /dev/null and b/public/terrain/19/858498/353848.terrain differ diff --git a/public/terrain/19/858498/353849.terrain b/public/terrain/19/858498/353849.terrain new file mode 100644 index 000000000..a57aa7819 Binary files /dev/null and b/public/terrain/19/858498/353849.terrain differ diff --git a/public/terrain/19/858498/353850.terrain b/public/terrain/19/858498/353850.terrain new file mode 100644 index 000000000..4a7a5aaf7 Binary files /dev/null and b/public/terrain/19/858498/353850.terrain differ diff --git a/public/terrain/19/858498/353851.terrain b/public/terrain/19/858498/353851.terrain new file mode 100644 index 000000000..8240a2e05 Binary files /dev/null and b/public/terrain/19/858498/353851.terrain differ diff --git a/public/terrain/19/858498/353852.terrain b/public/terrain/19/858498/353852.terrain new file mode 100644 index 000000000..adc0ba503 Binary files /dev/null and b/public/terrain/19/858498/353852.terrain differ diff --git a/public/terrain/19/858498/353853.terrain b/public/terrain/19/858498/353853.terrain new file mode 100644 index 000000000..d43b76cc2 Binary files /dev/null and b/public/terrain/19/858498/353853.terrain differ diff --git a/public/terrain/19/858498/353854.terrain b/public/terrain/19/858498/353854.terrain new file mode 100644 index 000000000..d90f1a30a Binary files /dev/null and b/public/terrain/19/858498/353854.terrain differ diff --git a/public/terrain/19/858498/353855.terrain b/public/terrain/19/858498/353855.terrain new file mode 100644 index 000000000..7b178f487 Binary files /dev/null and b/public/terrain/19/858498/353855.terrain differ diff --git a/public/terrain/19/858498/353856.terrain b/public/terrain/19/858498/353856.terrain new file mode 100644 index 000000000..fb2d5ed0e Binary files /dev/null and b/public/terrain/19/858498/353856.terrain differ diff --git a/public/terrain/19/858498/353857.terrain b/public/terrain/19/858498/353857.terrain new file mode 100644 index 000000000..3d3a0e8d2 Binary files /dev/null and b/public/terrain/19/858498/353857.terrain differ diff --git a/public/terrain/19/858498/353858.terrain b/public/terrain/19/858498/353858.terrain new file mode 100644 index 000000000..3b3193cbe Binary files /dev/null and b/public/terrain/19/858498/353858.terrain differ diff --git a/public/terrain/19/858498/353859.terrain b/public/terrain/19/858498/353859.terrain new file mode 100644 index 000000000..079f6ee81 Binary files /dev/null and b/public/terrain/19/858498/353859.terrain differ diff --git a/public/terrain/19/858498/353860.terrain b/public/terrain/19/858498/353860.terrain new file mode 100644 index 000000000..96c48ffeb Binary files /dev/null and b/public/terrain/19/858498/353860.terrain differ diff --git a/public/terrain/19/858498/353861.terrain b/public/terrain/19/858498/353861.terrain new file mode 100644 index 000000000..d33afb403 Binary files /dev/null and b/public/terrain/19/858498/353861.terrain differ diff --git a/public/terrain/19/858498/353862.terrain b/public/terrain/19/858498/353862.terrain new file mode 100644 index 000000000..2ecdea2b1 Binary files /dev/null and b/public/terrain/19/858498/353862.terrain differ diff --git a/public/terrain/19/858498/353863.terrain b/public/terrain/19/858498/353863.terrain new file mode 100644 index 000000000..26d1e59c5 Binary files /dev/null and b/public/terrain/19/858498/353863.terrain differ diff --git a/public/terrain/19/858498/353864.terrain b/public/terrain/19/858498/353864.terrain new file mode 100644 index 000000000..1f1e1a2d1 Binary files /dev/null and b/public/terrain/19/858498/353864.terrain differ diff --git a/public/terrain/19/858498/353865.terrain b/public/terrain/19/858498/353865.terrain new file mode 100644 index 000000000..db135e7d9 Binary files /dev/null and b/public/terrain/19/858498/353865.terrain differ diff --git a/public/terrain/19/858498/353866.terrain b/public/terrain/19/858498/353866.terrain new file mode 100644 index 000000000..f9f3e656b Binary files /dev/null and b/public/terrain/19/858498/353866.terrain differ diff --git a/public/terrain/19/858498/353867.terrain b/public/terrain/19/858498/353867.terrain new file mode 100644 index 000000000..5de186d1e Binary files /dev/null and b/public/terrain/19/858498/353867.terrain differ diff --git a/public/terrain/19/858498/353868.terrain b/public/terrain/19/858498/353868.terrain new file mode 100644 index 000000000..4797face1 Binary files /dev/null and b/public/terrain/19/858498/353868.terrain differ diff --git a/public/terrain/19/858498/353869.terrain b/public/terrain/19/858498/353869.terrain new file mode 100644 index 000000000..fa88d6521 Binary files /dev/null and b/public/terrain/19/858498/353869.terrain differ diff --git a/public/terrain/19/858498/353870.terrain b/public/terrain/19/858498/353870.terrain new file mode 100644 index 000000000..c08243b5b Binary files /dev/null and b/public/terrain/19/858498/353870.terrain differ diff --git a/public/terrain/19/858498/353871.terrain b/public/terrain/19/858498/353871.terrain new file mode 100644 index 000000000..bb3edc7ae Binary files /dev/null and b/public/terrain/19/858498/353871.terrain differ diff --git a/public/terrain/19/858498/353872.terrain b/public/terrain/19/858498/353872.terrain new file mode 100644 index 000000000..b2422fb2c Binary files /dev/null and b/public/terrain/19/858498/353872.terrain differ diff --git a/public/terrain/19/858498/353873.terrain b/public/terrain/19/858498/353873.terrain new file mode 100644 index 000000000..e90771d2f Binary files /dev/null and b/public/terrain/19/858498/353873.terrain differ diff --git a/public/terrain/19/858498/353874.terrain b/public/terrain/19/858498/353874.terrain new file mode 100644 index 000000000..dd754aa36 Binary files /dev/null and b/public/terrain/19/858498/353874.terrain differ diff --git a/public/terrain/19/858498/353875.terrain b/public/terrain/19/858498/353875.terrain new file mode 100644 index 000000000..1f83926f7 Binary files /dev/null and b/public/terrain/19/858498/353875.terrain differ diff --git a/public/terrain/19/858498/353876.terrain b/public/terrain/19/858498/353876.terrain new file mode 100644 index 000000000..369f1047e Binary files /dev/null and b/public/terrain/19/858498/353876.terrain differ diff --git a/public/terrain/19/858498/353877.terrain b/public/terrain/19/858498/353877.terrain new file mode 100644 index 000000000..dae0aded6 Binary files /dev/null and b/public/terrain/19/858498/353877.terrain differ diff --git a/public/terrain/19/858498/353878.terrain b/public/terrain/19/858498/353878.terrain new file mode 100644 index 000000000..62d551503 Binary files /dev/null and b/public/terrain/19/858498/353878.terrain differ diff --git a/public/terrain/19/858498/353879.terrain b/public/terrain/19/858498/353879.terrain new file mode 100644 index 000000000..b0abcf845 Binary files /dev/null and b/public/terrain/19/858498/353879.terrain differ diff --git a/public/terrain/19/858498/353880.terrain b/public/terrain/19/858498/353880.terrain new file mode 100644 index 000000000..da2cb2bda Binary files /dev/null and b/public/terrain/19/858498/353880.terrain differ diff --git a/public/terrain/19/858498/353881.terrain b/public/terrain/19/858498/353881.terrain new file mode 100644 index 000000000..2ddd072cf Binary files /dev/null and b/public/terrain/19/858498/353881.terrain differ diff --git a/public/terrain/19/858498/353882.terrain b/public/terrain/19/858498/353882.terrain new file mode 100644 index 000000000..7fe35747b Binary files /dev/null and b/public/terrain/19/858498/353882.terrain differ diff --git a/public/terrain/19/858498/353883.terrain b/public/terrain/19/858498/353883.terrain new file mode 100644 index 000000000..3cf0ccccc Binary files /dev/null and b/public/terrain/19/858498/353883.terrain differ diff --git a/public/terrain/19/858498/353884.terrain b/public/terrain/19/858498/353884.terrain new file mode 100644 index 000000000..690f66777 Binary files /dev/null and b/public/terrain/19/858498/353884.terrain differ diff --git a/public/terrain/19/858498/353885.terrain b/public/terrain/19/858498/353885.terrain new file mode 100644 index 000000000..4270438fd Binary files /dev/null and b/public/terrain/19/858498/353885.terrain differ diff --git a/public/terrain/19/858498/353886.terrain b/public/terrain/19/858498/353886.terrain new file mode 100644 index 000000000..fe862906e Binary files /dev/null and b/public/terrain/19/858498/353886.terrain differ diff --git a/public/terrain/19/858498/353887.terrain b/public/terrain/19/858498/353887.terrain new file mode 100644 index 000000000..4f941e1e0 Binary files /dev/null and b/public/terrain/19/858498/353887.terrain differ diff --git a/public/terrain/19/858498/353888.terrain b/public/terrain/19/858498/353888.terrain new file mode 100644 index 000000000..96fbe321e Binary files /dev/null and b/public/terrain/19/858498/353888.terrain differ diff --git a/public/terrain/19/858498/353889.terrain b/public/terrain/19/858498/353889.terrain new file mode 100644 index 000000000..3d372af5e Binary files /dev/null and b/public/terrain/19/858498/353889.terrain differ diff --git a/public/terrain/19/858498/353890.terrain b/public/terrain/19/858498/353890.terrain new file mode 100644 index 000000000..bdc737a23 Binary files /dev/null and b/public/terrain/19/858498/353890.terrain differ diff --git a/public/terrain/19/858498/353891.terrain b/public/terrain/19/858498/353891.terrain new file mode 100644 index 000000000..4ec6c297d Binary files /dev/null and b/public/terrain/19/858498/353891.terrain differ diff --git a/public/terrain/19/858498/353892.terrain b/public/terrain/19/858498/353892.terrain new file mode 100644 index 000000000..7c8b2b00e Binary files /dev/null and b/public/terrain/19/858498/353892.terrain differ diff --git a/public/terrain/19/858498/353893.terrain b/public/terrain/19/858498/353893.terrain new file mode 100644 index 000000000..e3faf93e4 Binary files /dev/null and b/public/terrain/19/858498/353893.terrain differ diff --git a/public/terrain/19/858498/353894.terrain b/public/terrain/19/858498/353894.terrain new file mode 100644 index 000000000..819109dd5 Binary files /dev/null and b/public/terrain/19/858498/353894.terrain differ diff --git a/public/terrain/19/858498/353895.terrain b/public/terrain/19/858498/353895.terrain new file mode 100644 index 000000000..4be1e904f Binary files /dev/null and b/public/terrain/19/858498/353895.terrain differ diff --git a/public/terrain/19/858498/353896.terrain b/public/terrain/19/858498/353896.terrain new file mode 100644 index 000000000..23f766a4b Binary files /dev/null and b/public/terrain/19/858498/353896.terrain differ diff --git a/public/terrain/19/858498/353897.terrain b/public/terrain/19/858498/353897.terrain new file mode 100644 index 000000000..f099fc1c4 Binary files /dev/null and b/public/terrain/19/858498/353897.terrain differ diff --git a/public/terrain/19/858498/353898.terrain b/public/terrain/19/858498/353898.terrain new file mode 100644 index 000000000..1b87fc850 Binary files /dev/null and b/public/terrain/19/858498/353898.terrain differ diff --git a/public/terrain/19/858498/353899.terrain b/public/terrain/19/858498/353899.terrain new file mode 100644 index 000000000..9fd97e69f Binary files /dev/null and b/public/terrain/19/858498/353899.terrain differ diff --git a/public/terrain/19/858498/353900.terrain b/public/terrain/19/858498/353900.terrain new file mode 100644 index 000000000..d59e06ef1 Binary files /dev/null and b/public/terrain/19/858498/353900.terrain differ diff --git a/public/terrain/19/858498/353901.terrain b/public/terrain/19/858498/353901.terrain new file mode 100644 index 000000000..26ff36644 Binary files /dev/null and b/public/terrain/19/858498/353901.terrain differ diff --git a/public/terrain/19/858498/353902.terrain b/public/terrain/19/858498/353902.terrain new file mode 100644 index 000000000..f0b6c1d35 Binary files /dev/null and b/public/terrain/19/858498/353902.terrain differ diff --git a/public/terrain/19/858498/353903.terrain b/public/terrain/19/858498/353903.terrain new file mode 100644 index 000000000..7970382f5 Binary files /dev/null and b/public/terrain/19/858498/353903.terrain differ diff --git a/public/terrain/19/858498/353904.terrain b/public/terrain/19/858498/353904.terrain new file mode 100644 index 000000000..e17bc839f Binary files /dev/null and b/public/terrain/19/858498/353904.terrain differ diff --git a/public/terrain/19/858498/353905.terrain b/public/terrain/19/858498/353905.terrain new file mode 100644 index 000000000..11667c15d Binary files /dev/null and b/public/terrain/19/858498/353905.terrain differ diff --git a/public/terrain/19/858498/353906.terrain b/public/terrain/19/858498/353906.terrain new file mode 100644 index 000000000..fe5580e3a Binary files /dev/null and b/public/terrain/19/858498/353906.terrain differ diff --git a/public/terrain/19/858498/353907.terrain b/public/terrain/19/858498/353907.terrain new file mode 100644 index 000000000..5a998be83 Binary files /dev/null and b/public/terrain/19/858498/353907.terrain differ diff --git a/public/terrain/19/858498/353908.terrain b/public/terrain/19/858498/353908.terrain new file mode 100644 index 000000000..8db740f2c Binary files /dev/null and b/public/terrain/19/858498/353908.terrain differ diff --git a/public/terrain/19/858498/353909.terrain b/public/terrain/19/858498/353909.terrain new file mode 100644 index 000000000..395a268ad Binary files /dev/null and b/public/terrain/19/858498/353909.terrain differ diff --git a/public/terrain/19/858498/353910.terrain b/public/terrain/19/858498/353910.terrain new file mode 100644 index 000000000..0b24ce684 Binary files /dev/null and b/public/terrain/19/858498/353910.terrain differ diff --git a/public/terrain/19/858498/353911.terrain b/public/terrain/19/858498/353911.terrain new file mode 100644 index 000000000..e8b90f60b Binary files /dev/null and b/public/terrain/19/858498/353911.terrain differ diff --git a/public/terrain/19/858498/353912.terrain b/public/terrain/19/858498/353912.terrain new file mode 100644 index 000000000..6137a80ed Binary files /dev/null and b/public/terrain/19/858498/353912.terrain differ diff --git a/public/terrain/19/858498/353913.terrain b/public/terrain/19/858498/353913.terrain new file mode 100644 index 000000000..99a55d117 Binary files /dev/null and b/public/terrain/19/858498/353913.terrain differ diff --git a/public/terrain/19/858498/353914.terrain b/public/terrain/19/858498/353914.terrain new file mode 100644 index 000000000..e5794b1f9 Binary files /dev/null and b/public/terrain/19/858498/353914.terrain differ diff --git a/public/terrain/19/858498/353915.terrain b/public/terrain/19/858498/353915.terrain new file mode 100644 index 000000000..a81c8fa01 Binary files /dev/null and b/public/terrain/19/858498/353915.terrain differ diff --git a/public/terrain/19/858498/353916.terrain b/public/terrain/19/858498/353916.terrain new file mode 100644 index 000000000..9beef69e5 Binary files /dev/null and b/public/terrain/19/858498/353916.terrain differ diff --git a/public/terrain/19/858498/353917.terrain b/public/terrain/19/858498/353917.terrain new file mode 100644 index 000000000..163bfd6fd Binary files /dev/null and b/public/terrain/19/858498/353917.terrain differ diff --git a/public/terrain/19/858498/353918.terrain b/public/terrain/19/858498/353918.terrain new file mode 100644 index 000000000..9257ce67b Binary files /dev/null and b/public/terrain/19/858498/353918.terrain differ diff --git a/public/terrain/19/858498/353919.terrain b/public/terrain/19/858498/353919.terrain new file mode 100644 index 000000000..cabaea295 Binary files /dev/null and b/public/terrain/19/858498/353919.terrain differ diff --git a/public/terrain/19/858498/353920.terrain b/public/terrain/19/858498/353920.terrain new file mode 100644 index 000000000..f83790e12 Binary files /dev/null and b/public/terrain/19/858498/353920.terrain differ diff --git a/public/terrain/19/858498/353921.terrain b/public/terrain/19/858498/353921.terrain new file mode 100644 index 000000000..9cd13f277 Binary files /dev/null and b/public/terrain/19/858498/353921.terrain differ diff --git a/public/terrain/19/858498/353922.terrain b/public/terrain/19/858498/353922.terrain new file mode 100644 index 000000000..67ed4e298 Binary files /dev/null and b/public/terrain/19/858498/353922.terrain differ diff --git a/public/terrain/19/858498/353923.terrain b/public/terrain/19/858498/353923.terrain new file mode 100644 index 000000000..6301bb3a4 Binary files /dev/null and b/public/terrain/19/858498/353923.terrain differ diff --git a/public/terrain/19/858498/353924.terrain b/public/terrain/19/858498/353924.terrain new file mode 100644 index 000000000..75d6fee4d Binary files /dev/null and b/public/terrain/19/858498/353924.terrain differ diff --git a/public/terrain/19/858498/353925.terrain b/public/terrain/19/858498/353925.terrain new file mode 100644 index 000000000..be4171f53 Binary files /dev/null and b/public/terrain/19/858498/353925.terrain differ diff --git a/public/terrain/19/858498/353926.terrain b/public/terrain/19/858498/353926.terrain new file mode 100644 index 000000000..7ba8fc078 Binary files /dev/null and b/public/terrain/19/858498/353926.terrain differ diff --git a/public/terrain/19/858498/353927.terrain b/public/terrain/19/858498/353927.terrain new file mode 100644 index 000000000..18cd88d04 Binary files /dev/null and b/public/terrain/19/858498/353927.terrain differ diff --git a/public/terrain/19/858498/353928.terrain b/public/terrain/19/858498/353928.terrain new file mode 100644 index 000000000..baae68b31 Binary files /dev/null and b/public/terrain/19/858498/353928.terrain differ diff --git a/public/terrain/19/858498/353929.terrain b/public/terrain/19/858498/353929.terrain new file mode 100644 index 000000000..1d7383796 Binary files /dev/null and b/public/terrain/19/858498/353929.terrain differ diff --git a/public/terrain/19/858498/353930.terrain b/public/terrain/19/858498/353930.terrain new file mode 100644 index 000000000..64d5682f9 Binary files /dev/null and b/public/terrain/19/858498/353930.terrain differ diff --git a/public/terrain/19/858498/353931.terrain b/public/terrain/19/858498/353931.terrain new file mode 100644 index 000000000..58a53fda0 Binary files /dev/null and b/public/terrain/19/858498/353931.terrain differ diff --git a/public/terrain/19/858498/353932.terrain b/public/terrain/19/858498/353932.terrain new file mode 100644 index 000000000..055ca8646 Binary files /dev/null and b/public/terrain/19/858498/353932.terrain differ diff --git a/public/terrain/19/858498/353933.terrain b/public/terrain/19/858498/353933.terrain new file mode 100644 index 000000000..01f5da85b Binary files /dev/null and b/public/terrain/19/858498/353933.terrain differ diff --git a/public/terrain/19/858498/353934.terrain b/public/terrain/19/858498/353934.terrain new file mode 100644 index 000000000..223f105c2 Binary files /dev/null and b/public/terrain/19/858498/353934.terrain differ diff --git a/public/terrain/19/858498/353935.terrain b/public/terrain/19/858498/353935.terrain new file mode 100644 index 000000000..ca70c3d73 Binary files /dev/null and b/public/terrain/19/858498/353935.terrain differ diff --git a/public/terrain/19/858498/353936.terrain b/public/terrain/19/858498/353936.terrain new file mode 100644 index 000000000..736b67275 Binary files /dev/null and b/public/terrain/19/858498/353936.terrain differ diff --git a/public/terrain/19/858498/353937.terrain b/public/terrain/19/858498/353937.terrain new file mode 100644 index 000000000..7cdf746c0 Binary files /dev/null and b/public/terrain/19/858498/353937.terrain differ diff --git a/public/terrain/19/858498/353938.terrain b/public/terrain/19/858498/353938.terrain new file mode 100644 index 000000000..9ef3d44f3 Binary files /dev/null and b/public/terrain/19/858498/353938.terrain differ diff --git a/public/terrain/19/858498/353939.terrain b/public/terrain/19/858498/353939.terrain new file mode 100644 index 000000000..93b84a0a1 Binary files /dev/null and b/public/terrain/19/858498/353939.terrain differ diff --git a/public/terrain/19/858498/353940.terrain b/public/terrain/19/858498/353940.terrain new file mode 100644 index 000000000..8a6e30477 Binary files /dev/null and b/public/terrain/19/858498/353940.terrain differ diff --git a/public/terrain/19/858498/353941.terrain b/public/terrain/19/858498/353941.terrain new file mode 100644 index 000000000..37def5bf1 Binary files /dev/null and b/public/terrain/19/858498/353941.terrain differ diff --git a/public/terrain/19/858498/353942.terrain b/public/terrain/19/858498/353942.terrain new file mode 100644 index 000000000..12dfbaee6 Binary files /dev/null and b/public/terrain/19/858498/353942.terrain differ diff --git a/public/terrain/19/858498/353943.terrain b/public/terrain/19/858498/353943.terrain new file mode 100644 index 000000000..bce8e1347 Binary files /dev/null and b/public/terrain/19/858498/353943.terrain differ diff --git a/public/terrain/19/858498/353944.terrain b/public/terrain/19/858498/353944.terrain new file mode 100644 index 000000000..a8f9cb1c8 Binary files /dev/null and b/public/terrain/19/858498/353944.terrain differ diff --git a/public/terrain/19/858498/353945.terrain b/public/terrain/19/858498/353945.terrain new file mode 100644 index 000000000..05a996b3c Binary files /dev/null and b/public/terrain/19/858498/353945.terrain differ diff --git a/public/terrain/19/858498/353946.terrain b/public/terrain/19/858498/353946.terrain new file mode 100644 index 000000000..04741ccd7 Binary files /dev/null and b/public/terrain/19/858498/353946.terrain differ diff --git a/public/terrain/19/858498/353947.terrain b/public/terrain/19/858498/353947.terrain new file mode 100644 index 000000000..7d93e4366 Binary files /dev/null and b/public/terrain/19/858498/353947.terrain differ diff --git a/public/terrain/19/858498/353948.terrain b/public/terrain/19/858498/353948.terrain new file mode 100644 index 000000000..87da1866e Binary files /dev/null and b/public/terrain/19/858498/353948.terrain differ diff --git a/public/terrain/19/858498/353949.terrain b/public/terrain/19/858498/353949.terrain new file mode 100644 index 000000000..e071cc340 Binary files /dev/null and b/public/terrain/19/858498/353949.terrain differ diff --git a/public/terrain/19/858498/353950.terrain b/public/terrain/19/858498/353950.terrain new file mode 100644 index 000000000..40af42eb7 Binary files /dev/null and b/public/terrain/19/858498/353950.terrain differ diff --git a/public/terrain/19/858498/353951.terrain b/public/terrain/19/858498/353951.terrain new file mode 100644 index 000000000..a40489c49 Binary files /dev/null and b/public/terrain/19/858498/353951.terrain differ diff --git a/public/terrain/19/858498/353952.terrain b/public/terrain/19/858498/353952.terrain new file mode 100644 index 000000000..3afad85e0 Binary files /dev/null and b/public/terrain/19/858498/353952.terrain differ diff --git a/public/terrain/19/858498/353953.terrain b/public/terrain/19/858498/353953.terrain new file mode 100644 index 000000000..c0c318207 Binary files /dev/null and b/public/terrain/19/858498/353953.terrain differ diff --git a/public/terrain/19/858498/353954.terrain b/public/terrain/19/858498/353954.terrain new file mode 100644 index 000000000..eaf97665f Binary files /dev/null and b/public/terrain/19/858498/353954.terrain differ diff --git a/public/terrain/19/858498/353955.terrain b/public/terrain/19/858498/353955.terrain new file mode 100644 index 000000000..6f8628314 Binary files /dev/null and b/public/terrain/19/858498/353955.terrain differ diff --git a/public/terrain/19/858498/353956.terrain b/public/terrain/19/858498/353956.terrain new file mode 100644 index 000000000..ffb979a5a Binary files /dev/null and b/public/terrain/19/858498/353956.terrain differ diff --git a/public/terrain/19/858498/353957.terrain b/public/terrain/19/858498/353957.terrain new file mode 100644 index 000000000..304eeb1a2 Binary files /dev/null and b/public/terrain/19/858498/353957.terrain differ diff --git a/public/terrain/19/858498/353958.terrain b/public/terrain/19/858498/353958.terrain new file mode 100644 index 000000000..039f9bdce Binary files /dev/null and b/public/terrain/19/858498/353958.terrain differ diff --git a/public/terrain/19/858498/353959.terrain b/public/terrain/19/858498/353959.terrain new file mode 100644 index 000000000..13f2d7cf4 Binary files /dev/null and b/public/terrain/19/858498/353959.terrain differ diff --git a/public/terrain/19/858498/353960.terrain b/public/terrain/19/858498/353960.terrain new file mode 100644 index 000000000..1ed2a44f4 Binary files /dev/null and b/public/terrain/19/858498/353960.terrain differ diff --git a/public/terrain/19/858498/353961.terrain b/public/terrain/19/858498/353961.terrain new file mode 100644 index 000000000..a8ad19b7d Binary files /dev/null and b/public/terrain/19/858498/353961.terrain differ diff --git a/public/terrain/19/858498/353962.terrain b/public/terrain/19/858498/353962.terrain new file mode 100644 index 000000000..25ab6ad25 Binary files /dev/null and b/public/terrain/19/858498/353962.terrain differ diff --git a/public/terrain/19/858498/353963.terrain b/public/terrain/19/858498/353963.terrain new file mode 100644 index 000000000..f951ec08c Binary files /dev/null and b/public/terrain/19/858498/353963.terrain differ diff --git a/public/terrain/19/858498/353964.terrain b/public/terrain/19/858498/353964.terrain new file mode 100644 index 000000000..7d1e19d86 Binary files /dev/null and b/public/terrain/19/858498/353964.terrain differ diff --git a/public/terrain/19/858498/353965.terrain b/public/terrain/19/858498/353965.terrain new file mode 100644 index 000000000..f7328e075 Binary files /dev/null and b/public/terrain/19/858498/353965.terrain differ diff --git a/public/terrain/19/858498/353966.terrain b/public/terrain/19/858498/353966.terrain new file mode 100644 index 000000000..c151e8894 Binary files /dev/null and b/public/terrain/19/858498/353966.terrain differ diff --git a/public/terrain/19/858498/353967.terrain b/public/terrain/19/858498/353967.terrain new file mode 100644 index 000000000..ff23c82fe Binary files /dev/null and b/public/terrain/19/858498/353967.terrain differ diff --git a/public/terrain/19/858498/353968.terrain b/public/terrain/19/858498/353968.terrain new file mode 100644 index 000000000..d7e08c0c8 Binary files /dev/null and b/public/terrain/19/858498/353968.terrain differ diff --git a/public/terrain/19/858498/353969.terrain b/public/terrain/19/858498/353969.terrain new file mode 100644 index 000000000..4db650b3d Binary files /dev/null and b/public/terrain/19/858498/353969.terrain differ diff --git a/public/terrain/19/858498/353970.terrain b/public/terrain/19/858498/353970.terrain new file mode 100644 index 000000000..cb2dd0955 Binary files /dev/null and b/public/terrain/19/858498/353970.terrain differ diff --git a/public/terrain/19/858498/353971.terrain b/public/terrain/19/858498/353971.terrain new file mode 100644 index 000000000..5ac36a573 Binary files /dev/null and b/public/terrain/19/858498/353971.terrain differ diff --git a/public/terrain/19/858498/353972.terrain b/public/terrain/19/858498/353972.terrain new file mode 100644 index 000000000..4e0477a19 Binary files /dev/null and b/public/terrain/19/858498/353972.terrain differ diff --git a/public/terrain/19/858498/353973.terrain b/public/terrain/19/858498/353973.terrain new file mode 100644 index 000000000..7f59eeefc Binary files /dev/null and b/public/terrain/19/858498/353973.terrain differ diff --git a/public/terrain/19/858498/353974.terrain b/public/terrain/19/858498/353974.terrain new file mode 100644 index 000000000..ca4f0da69 Binary files /dev/null and b/public/terrain/19/858498/353974.terrain differ diff --git a/public/terrain/19/858498/353975.terrain b/public/terrain/19/858498/353975.terrain new file mode 100644 index 000000000..8c0049832 Binary files /dev/null and b/public/terrain/19/858498/353975.terrain differ diff --git a/public/terrain/19/858498/353976.terrain b/public/terrain/19/858498/353976.terrain new file mode 100644 index 000000000..7b613b568 Binary files /dev/null and b/public/terrain/19/858498/353976.terrain differ diff --git a/public/terrain/19/858498/353977.terrain b/public/terrain/19/858498/353977.terrain new file mode 100644 index 000000000..28823031f Binary files /dev/null and b/public/terrain/19/858498/353977.terrain differ diff --git a/public/terrain/19/858498/353978.terrain b/public/terrain/19/858498/353978.terrain new file mode 100644 index 000000000..10cb3d612 Binary files /dev/null and b/public/terrain/19/858498/353978.terrain differ diff --git a/public/terrain/19/858498/353979.terrain b/public/terrain/19/858498/353979.terrain new file mode 100644 index 000000000..9937ad6aa Binary files /dev/null and b/public/terrain/19/858498/353979.terrain differ diff --git a/public/terrain/19/858498/353980.terrain b/public/terrain/19/858498/353980.terrain new file mode 100644 index 000000000..3aa5281bf Binary files /dev/null and b/public/terrain/19/858498/353980.terrain differ diff --git a/public/terrain/19/858498/353981.terrain b/public/terrain/19/858498/353981.terrain new file mode 100644 index 000000000..b65551c7c Binary files /dev/null and b/public/terrain/19/858498/353981.terrain differ diff --git a/public/terrain/19/858498/353982.terrain b/public/terrain/19/858498/353982.terrain new file mode 100644 index 000000000..ebcfbc6d8 Binary files /dev/null and b/public/terrain/19/858498/353982.terrain differ diff --git a/public/terrain/19/858498/353983.terrain b/public/terrain/19/858498/353983.terrain new file mode 100644 index 000000000..9ceff2742 Binary files /dev/null and b/public/terrain/19/858498/353983.terrain differ diff --git a/public/terrain/19/858498/353984.terrain b/public/terrain/19/858498/353984.terrain new file mode 100644 index 000000000..59d29e677 Binary files /dev/null and b/public/terrain/19/858498/353984.terrain differ diff --git a/public/terrain/19/858498/353985.terrain b/public/terrain/19/858498/353985.terrain new file mode 100644 index 000000000..0343860e0 Binary files /dev/null and b/public/terrain/19/858498/353985.terrain differ diff --git a/public/terrain/19/858498/353986.terrain b/public/terrain/19/858498/353986.terrain new file mode 100644 index 000000000..baa23ab9f Binary files /dev/null and b/public/terrain/19/858498/353986.terrain differ diff --git a/public/terrain/19/858498/353987.terrain b/public/terrain/19/858498/353987.terrain new file mode 100644 index 000000000..c7523dab9 Binary files /dev/null and b/public/terrain/19/858498/353987.terrain differ diff --git a/public/terrain/19/858498/353988.terrain b/public/terrain/19/858498/353988.terrain new file mode 100644 index 000000000..846ed7e7d Binary files /dev/null and b/public/terrain/19/858498/353988.terrain differ diff --git a/public/terrain/19/858498/353989.terrain b/public/terrain/19/858498/353989.terrain new file mode 100644 index 000000000..a19291a81 Binary files /dev/null and b/public/terrain/19/858498/353989.terrain differ diff --git a/public/terrain/19/858498/353990.terrain b/public/terrain/19/858498/353990.terrain new file mode 100644 index 000000000..ede8666d8 Binary files /dev/null and b/public/terrain/19/858498/353990.terrain differ diff --git a/public/terrain/19/858498/353991.terrain b/public/terrain/19/858498/353991.terrain new file mode 100644 index 000000000..72db8c88f Binary files /dev/null and b/public/terrain/19/858498/353991.terrain differ diff --git a/public/terrain/19/858498/353992.terrain b/public/terrain/19/858498/353992.terrain new file mode 100644 index 000000000..4e277d9d8 Binary files /dev/null and b/public/terrain/19/858498/353992.terrain differ diff --git a/public/terrain/19/858498/353993.terrain b/public/terrain/19/858498/353993.terrain new file mode 100644 index 000000000..a77aa0ede Binary files /dev/null and b/public/terrain/19/858498/353993.terrain differ diff --git a/public/terrain/19/858498/353994.terrain b/public/terrain/19/858498/353994.terrain new file mode 100644 index 000000000..fd2e585ca Binary files /dev/null and b/public/terrain/19/858498/353994.terrain differ diff --git a/public/terrain/19/858498/353995.terrain b/public/terrain/19/858498/353995.terrain new file mode 100644 index 000000000..248d668fa Binary files /dev/null and b/public/terrain/19/858498/353995.terrain differ diff --git a/public/terrain/19/858498/353996.terrain b/public/terrain/19/858498/353996.terrain new file mode 100644 index 000000000..83fb7e0cd Binary files /dev/null and b/public/terrain/19/858498/353996.terrain differ diff --git a/public/terrain/19/858498/353997.terrain b/public/terrain/19/858498/353997.terrain new file mode 100644 index 000000000..b2de6e233 Binary files /dev/null and b/public/terrain/19/858498/353997.terrain differ diff --git a/public/terrain/19/858498/353998.terrain b/public/terrain/19/858498/353998.terrain new file mode 100644 index 000000000..758275855 Binary files /dev/null and b/public/terrain/19/858498/353998.terrain differ diff --git a/public/terrain/19/858498/353999.terrain b/public/terrain/19/858498/353999.terrain new file mode 100644 index 000000000..e68d399e1 Binary files /dev/null and b/public/terrain/19/858498/353999.terrain differ diff --git a/public/terrain/19/858498/354000.terrain b/public/terrain/19/858498/354000.terrain new file mode 100644 index 000000000..a7e340a25 Binary files /dev/null and b/public/terrain/19/858498/354000.terrain differ diff --git a/public/terrain/19/858498/354001.terrain b/public/terrain/19/858498/354001.terrain new file mode 100644 index 000000000..890af5d85 Binary files /dev/null and b/public/terrain/19/858498/354001.terrain differ diff --git a/public/terrain/19/858498/354002.terrain b/public/terrain/19/858498/354002.terrain new file mode 100644 index 000000000..18e04d437 Binary files /dev/null and b/public/terrain/19/858498/354002.terrain differ diff --git a/public/terrain/19/858498/354003.terrain b/public/terrain/19/858498/354003.terrain new file mode 100644 index 000000000..57eda14d2 Binary files /dev/null and b/public/terrain/19/858498/354003.terrain differ diff --git a/public/terrain/19/858498/354004.terrain b/public/terrain/19/858498/354004.terrain new file mode 100644 index 000000000..70e304a77 Binary files /dev/null and b/public/terrain/19/858498/354004.terrain differ diff --git a/public/terrain/19/858498/354005.terrain b/public/terrain/19/858498/354005.terrain new file mode 100644 index 000000000..1d006923d Binary files /dev/null and b/public/terrain/19/858498/354005.terrain differ diff --git a/public/terrain/19/858498/354006.terrain b/public/terrain/19/858498/354006.terrain new file mode 100644 index 000000000..c9f33d0ed Binary files /dev/null and b/public/terrain/19/858498/354006.terrain differ diff --git a/public/terrain/19/858498/354007.terrain b/public/terrain/19/858498/354007.terrain new file mode 100644 index 000000000..8e00e65ca Binary files /dev/null and b/public/terrain/19/858498/354007.terrain differ diff --git a/public/terrain/19/858498/354008.terrain b/public/terrain/19/858498/354008.terrain new file mode 100644 index 000000000..542ee665e Binary files /dev/null and b/public/terrain/19/858498/354008.terrain differ diff --git a/public/terrain/19/858498/354009.terrain b/public/terrain/19/858498/354009.terrain new file mode 100644 index 000000000..d9d635118 Binary files /dev/null and b/public/terrain/19/858498/354009.terrain differ diff --git a/public/terrain/19/858498/354010.terrain b/public/terrain/19/858498/354010.terrain new file mode 100644 index 000000000..5b5ff442c Binary files /dev/null and b/public/terrain/19/858498/354010.terrain differ diff --git a/public/terrain/19/858498/354011.terrain b/public/terrain/19/858498/354011.terrain new file mode 100644 index 000000000..c5c7c4a0f Binary files /dev/null and b/public/terrain/19/858498/354011.terrain differ diff --git a/public/terrain/19/858498/354012.terrain b/public/terrain/19/858498/354012.terrain new file mode 100644 index 000000000..5081aacbb Binary files /dev/null and b/public/terrain/19/858498/354012.terrain differ diff --git a/public/terrain/19/858498/354013.terrain b/public/terrain/19/858498/354013.terrain new file mode 100644 index 000000000..3389bb63a Binary files /dev/null and b/public/terrain/19/858498/354013.terrain differ diff --git a/public/terrain/19/858498/354014.terrain b/public/terrain/19/858498/354014.terrain new file mode 100644 index 000000000..e8105e06e Binary files /dev/null and b/public/terrain/19/858498/354014.terrain differ diff --git a/public/terrain/19/858498/354015.terrain b/public/terrain/19/858498/354015.terrain new file mode 100644 index 000000000..45b2f4dc6 Binary files /dev/null and b/public/terrain/19/858498/354015.terrain differ diff --git a/public/terrain/19/858498/354016.terrain b/public/terrain/19/858498/354016.terrain new file mode 100644 index 000000000..f6c9fc849 Binary files /dev/null and b/public/terrain/19/858498/354016.terrain differ diff --git a/public/terrain/19/858498/354017.terrain b/public/terrain/19/858498/354017.terrain new file mode 100644 index 000000000..36be1594b Binary files /dev/null and b/public/terrain/19/858498/354017.terrain differ diff --git a/public/terrain/19/858498/354018.terrain b/public/terrain/19/858498/354018.terrain new file mode 100644 index 000000000..e680f1a3d Binary files /dev/null and b/public/terrain/19/858498/354018.terrain differ diff --git a/public/terrain/19/858498/354019.terrain b/public/terrain/19/858498/354019.terrain new file mode 100644 index 000000000..31bce31e1 Binary files /dev/null and b/public/terrain/19/858498/354019.terrain differ diff --git a/public/terrain/19/858498/354020.terrain b/public/terrain/19/858498/354020.terrain new file mode 100644 index 000000000..c9ee438af Binary files /dev/null and b/public/terrain/19/858498/354020.terrain differ diff --git a/public/terrain/19/858498/354021.terrain b/public/terrain/19/858498/354021.terrain new file mode 100644 index 000000000..4f1185b7e Binary files /dev/null and b/public/terrain/19/858498/354021.terrain differ diff --git a/public/terrain/19/858498/354022.terrain b/public/terrain/19/858498/354022.terrain new file mode 100644 index 000000000..e01db0caf Binary files /dev/null and b/public/terrain/19/858498/354022.terrain differ diff --git a/public/terrain/19/858498/354023.terrain b/public/terrain/19/858498/354023.terrain new file mode 100644 index 000000000..c8078e883 Binary files /dev/null and b/public/terrain/19/858498/354023.terrain differ diff --git a/public/terrain/19/858498/354024.terrain b/public/terrain/19/858498/354024.terrain new file mode 100644 index 000000000..d170a3df5 Binary files /dev/null and b/public/terrain/19/858498/354024.terrain differ diff --git a/public/terrain/19/858498/354025.terrain b/public/terrain/19/858498/354025.terrain new file mode 100644 index 000000000..a9e70cb4d Binary files /dev/null and b/public/terrain/19/858498/354025.terrain differ diff --git a/public/terrain/19/858498/354026.terrain b/public/terrain/19/858498/354026.terrain new file mode 100644 index 000000000..4dbd6bc41 Binary files /dev/null and b/public/terrain/19/858498/354026.terrain differ diff --git a/public/terrain/19/858498/354027.terrain b/public/terrain/19/858498/354027.terrain new file mode 100644 index 000000000..7afbae459 Binary files /dev/null and b/public/terrain/19/858498/354027.terrain differ diff --git a/public/terrain/19/858498/354028.terrain b/public/terrain/19/858498/354028.terrain new file mode 100644 index 000000000..1d2abfc5c Binary files /dev/null and b/public/terrain/19/858498/354028.terrain differ diff --git a/public/terrain/19/858498/354029.terrain b/public/terrain/19/858498/354029.terrain new file mode 100644 index 000000000..584728a67 Binary files /dev/null and b/public/terrain/19/858498/354029.terrain differ diff --git a/public/terrain/19/858498/354030.terrain b/public/terrain/19/858498/354030.terrain new file mode 100644 index 000000000..25b48c9dc Binary files /dev/null and b/public/terrain/19/858498/354030.terrain differ diff --git a/public/terrain/19/858498/354031.terrain b/public/terrain/19/858498/354031.terrain new file mode 100644 index 000000000..5e1dfa383 Binary files /dev/null and b/public/terrain/19/858498/354031.terrain differ diff --git a/public/terrain/19/858498/354032.terrain b/public/terrain/19/858498/354032.terrain new file mode 100644 index 000000000..7ed1c3442 Binary files /dev/null and b/public/terrain/19/858498/354032.terrain differ diff --git a/public/terrain/19/858498/354033.terrain b/public/terrain/19/858498/354033.terrain new file mode 100644 index 000000000..552d0a0af Binary files /dev/null and b/public/terrain/19/858498/354033.terrain differ diff --git a/public/terrain/19/858498/354034.terrain b/public/terrain/19/858498/354034.terrain new file mode 100644 index 000000000..90578b01e Binary files /dev/null and b/public/terrain/19/858498/354034.terrain differ diff --git a/public/terrain/19/858498/354035.terrain b/public/terrain/19/858498/354035.terrain new file mode 100644 index 000000000..343956590 Binary files /dev/null and b/public/terrain/19/858498/354035.terrain differ diff --git a/public/terrain/19/858498/354036.terrain b/public/terrain/19/858498/354036.terrain new file mode 100644 index 000000000..7a88aaf91 Binary files /dev/null and b/public/terrain/19/858498/354036.terrain differ diff --git a/public/terrain/19/858498/354037.terrain b/public/terrain/19/858498/354037.terrain new file mode 100644 index 000000000..79f359711 Binary files /dev/null and b/public/terrain/19/858498/354037.terrain differ diff --git a/public/terrain/19/858498/354038.terrain b/public/terrain/19/858498/354038.terrain new file mode 100644 index 000000000..14c951315 Binary files /dev/null and b/public/terrain/19/858498/354038.terrain differ diff --git a/public/terrain/19/858498/354039.terrain b/public/terrain/19/858498/354039.terrain new file mode 100644 index 000000000..451c23bf7 Binary files /dev/null and b/public/terrain/19/858498/354039.terrain differ diff --git a/public/terrain/19/858498/354040.terrain b/public/terrain/19/858498/354040.terrain new file mode 100644 index 000000000..753c95de5 Binary files /dev/null and b/public/terrain/19/858498/354040.terrain differ diff --git a/public/terrain/19/858498/354041.terrain b/public/terrain/19/858498/354041.terrain new file mode 100644 index 000000000..af378551f Binary files /dev/null and b/public/terrain/19/858498/354041.terrain differ diff --git a/public/terrain/19/858498/354042.terrain b/public/terrain/19/858498/354042.terrain new file mode 100644 index 000000000..e7d9c9231 Binary files /dev/null and b/public/terrain/19/858498/354042.terrain differ diff --git a/public/terrain/19/858498/354043.terrain b/public/terrain/19/858498/354043.terrain new file mode 100644 index 000000000..f2fa5b591 Binary files /dev/null and b/public/terrain/19/858498/354043.terrain differ diff --git a/public/terrain/19/858498/354044.terrain b/public/terrain/19/858498/354044.terrain new file mode 100644 index 000000000..ee65f351c Binary files /dev/null and b/public/terrain/19/858498/354044.terrain differ diff --git a/public/terrain/19/858498/354045.terrain b/public/terrain/19/858498/354045.terrain new file mode 100644 index 000000000..85659c850 Binary files /dev/null and b/public/terrain/19/858498/354045.terrain differ diff --git a/public/terrain/19/858498/354046.terrain b/public/terrain/19/858498/354046.terrain new file mode 100644 index 000000000..dbc229def Binary files /dev/null and b/public/terrain/19/858498/354046.terrain differ diff --git a/public/terrain/19/858498/354047.terrain b/public/terrain/19/858498/354047.terrain new file mode 100644 index 000000000..6b08fc9bf Binary files /dev/null and b/public/terrain/19/858498/354047.terrain differ diff --git a/public/terrain/19/858498/354048.terrain b/public/terrain/19/858498/354048.terrain new file mode 100644 index 000000000..77b6d050c Binary files /dev/null and b/public/terrain/19/858498/354048.terrain differ diff --git a/public/terrain/19/858498/354049.terrain b/public/terrain/19/858498/354049.terrain new file mode 100644 index 000000000..f1ded22ce Binary files /dev/null and b/public/terrain/19/858498/354049.terrain differ diff --git a/public/terrain/19/858498/354050.terrain b/public/terrain/19/858498/354050.terrain new file mode 100644 index 000000000..cb637e33e Binary files /dev/null and b/public/terrain/19/858498/354050.terrain differ diff --git a/public/terrain/19/858498/354051.terrain b/public/terrain/19/858498/354051.terrain new file mode 100644 index 000000000..15d4a7ed0 Binary files /dev/null and b/public/terrain/19/858498/354051.terrain differ diff --git a/public/terrain/19/858498/354052.terrain b/public/terrain/19/858498/354052.terrain new file mode 100644 index 000000000..e21f4eaa7 Binary files /dev/null and b/public/terrain/19/858498/354052.terrain differ diff --git a/public/terrain/19/858498/354053.terrain b/public/terrain/19/858498/354053.terrain new file mode 100644 index 000000000..1ec69c4ac Binary files /dev/null and b/public/terrain/19/858498/354053.terrain differ diff --git a/public/terrain/19/858498/354054.terrain b/public/terrain/19/858498/354054.terrain new file mode 100644 index 000000000..325f60ead Binary files /dev/null and b/public/terrain/19/858498/354054.terrain differ diff --git a/public/terrain/19/858498/354055.terrain b/public/terrain/19/858498/354055.terrain new file mode 100644 index 000000000..e07e33401 Binary files /dev/null and b/public/terrain/19/858498/354055.terrain differ diff --git a/public/terrain/19/858498/354056.terrain b/public/terrain/19/858498/354056.terrain new file mode 100644 index 000000000..e948875aa Binary files /dev/null and b/public/terrain/19/858498/354056.terrain differ diff --git a/public/terrain/19/858498/354057.terrain b/public/terrain/19/858498/354057.terrain new file mode 100644 index 000000000..4c54237a1 Binary files /dev/null and b/public/terrain/19/858498/354057.terrain differ diff --git a/public/terrain/19/858498/354058.terrain b/public/terrain/19/858498/354058.terrain new file mode 100644 index 000000000..c4ac80675 Binary files /dev/null and b/public/terrain/19/858498/354058.terrain differ diff --git a/public/terrain/19/858498/354059.terrain b/public/terrain/19/858498/354059.terrain new file mode 100644 index 000000000..9dd44c7c4 Binary files /dev/null and b/public/terrain/19/858498/354059.terrain differ diff --git a/public/terrain/19/858499/353743.terrain b/public/terrain/19/858499/353743.terrain new file mode 100644 index 000000000..d63f55b4b Binary files /dev/null and b/public/terrain/19/858499/353743.terrain differ diff --git a/public/terrain/19/858499/353744.terrain b/public/terrain/19/858499/353744.terrain new file mode 100644 index 000000000..f4c667833 Binary files /dev/null and b/public/terrain/19/858499/353744.terrain differ diff --git a/public/terrain/19/858499/353745.terrain b/public/terrain/19/858499/353745.terrain new file mode 100644 index 000000000..5ebdcce0f Binary files /dev/null and b/public/terrain/19/858499/353745.terrain differ diff --git a/public/terrain/19/858499/353746.terrain b/public/terrain/19/858499/353746.terrain new file mode 100644 index 000000000..44368d497 Binary files /dev/null and b/public/terrain/19/858499/353746.terrain differ diff --git a/public/terrain/19/858499/353747.terrain b/public/terrain/19/858499/353747.terrain new file mode 100644 index 000000000..3ef332693 Binary files /dev/null and b/public/terrain/19/858499/353747.terrain differ diff --git a/public/terrain/19/858499/353748.terrain b/public/terrain/19/858499/353748.terrain new file mode 100644 index 000000000..4d3750aa7 Binary files /dev/null and b/public/terrain/19/858499/353748.terrain differ diff --git a/public/terrain/19/858499/353749.terrain b/public/terrain/19/858499/353749.terrain new file mode 100644 index 000000000..7a6dd664f Binary files /dev/null and b/public/terrain/19/858499/353749.terrain differ diff --git a/public/terrain/19/858499/353750.terrain b/public/terrain/19/858499/353750.terrain new file mode 100644 index 000000000..50af88078 Binary files /dev/null and b/public/terrain/19/858499/353750.terrain differ diff --git a/public/terrain/19/858499/353751.terrain b/public/terrain/19/858499/353751.terrain new file mode 100644 index 000000000..c03546787 Binary files /dev/null and b/public/terrain/19/858499/353751.terrain differ diff --git a/public/terrain/19/858499/353752.terrain b/public/terrain/19/858499/353752.terrain new file mode 100644 index 000000000..bbeae1a39 Binary files /dev/null and b/public/terrain/19/858499/353752.terrain differ diff --git a/public/terrain/19/858499/353753.terrain b/public/terrain/19/858499/353753.terrain new file mode 100644 index 000000000..3470079fb Binary files /dev/null and b/public/terrain/19/858499/353753.terrain differ diff --git a/public/terrain/19/858499/353754.terrain b/public/terrain/19/858499/353754.terrain new file mode 100644 index 000000000..67cdba0d6 Binary files /dev/null and b/public/terrain/19/858499/353754.terrain differ diff --git a/public/terrain/19/858499/353755.terrain b/public/terrain/19/858499/353755.terrain new file mode 100644 index 000000000..6d2007a38 Binary files /dev/null and b/public/terrain/19/858499/353755.terrain differ diff --git a/public/terrain/19/858499/353756.terrain b/public/terrain/19/858499/353756.terrain new file mode 100644 index 000000000..acb398f11 Binary files /dev/null and b/public/terrain/19/858499/353756.terrain differ diff --git a/public/terrain/19/858499/353757.terrain b/public/terrain/19/858499/353757.terrain new file mode 100644 index 000000000..5d22e0e9e Binary files /dev/null and b/public/terrain/19/858499/353757.terrain differ diff --git a/public/terrain/19/858499/353758.terrain b/public/terrain/19/858499/353758.terrain new file mode 100644 index 000000000..8b09e6809 Binary files /dev/null and b/public/terrain/19/858499/353758.terrain differ diff --git a/public/terrain/19/858499/353759.terrain b/public/terrain/19/858499/353759.terrain new file mode 100644 index 000000000..df9fa1efc Binary files /dev/null and b/public/terrain/19/858499/353759.terrain differ diff --git a/public/terrain/19/858499/353760.terrain b/public/terrain/19/858499/353760.terrain new file mode 100644 index 000000000..6018fb7ad Binary files /dev/null and b/public/terrain/19/858499/353760.terrain differ diff --git a/public/terrain/19/858499/353761.terrain b/public/terrain/19/858499/353761.terrain new file mode 100644 index 000000000..7463e4f98 Binary files /dev/null and b/public/terrain/19/858499/353761.terrain differ diff --git a/public/terrain/19/858499/353762.terrain b/public/terrain/19/858499/353762.terrain new file mode 100644 index 000000000..c5bbd7711 Binary files /dev/null and b/public/terrain/19/858499/353762.terrain differ diff --git a/public/terrain/19/858499/353763.terrain b/public/terrain/19/858499/353763.terrain new file mode 100644 index 000000000..75fa632c2 Binary files /dev/null and b/public/terrain/19/858499/353763.terrain differ diff --git a/public/terrain/19/858499/353764.terrain b/public/terrain/19/858499/353764.terrain new file mode 100644 index 000000000..e0f463903 Binary files /dev/null and b/public/terrain/19/858499/353764.terrain differ diff --git a/public/terrain/19/858499/353765.terrain b/public/terrain/19/858499/353765.terrain new file mode 100644 index 000000000..6136a5e40 Binary files /dev/null and b/public/terrain/19/858499/353765.terrain differ diff --git a/public/terrain/19/858499/353766.terrain b/public/terrain/19/858499/353766.terrain new file mode 100644 index 000000000..f054648b6 Binary files /dev/null and b/public/terrain/19/858499/353766.terrain differ diff --git a/public/terrain/19/858499/353767.terrain b/public/terrain/19/858499/353767.terrain new file mode 100644 index 000000000..de8626296 Binary files /dev/null and b/public/terrain/19/858499/353767.terrain differ diff --git a/public/terrain/19/858499/353768.terrain b/public/terrain/19/858499/353768.terrain new file mode 100644 index 000000000..77a99ff0e Binary files /dev/null and b/public/terrain/19/858499/353768.terrain differ diff --git a/public/terrain/19/858499/353769.terrain b/public/terrain/19/858499/353769.terrain new file mode 100644 index 000000000..4ca366ef4 Binary files /dev/null and b/public/terrain/19/858499/353769.terrain differ diff --git a/public/terrain/19/858499/353770.terrain b/public/terrain/19/858499/353770.terrain new file mode 100644 index 000000000..945237c79 Binary files /dev/null and b/public/terrain/19/858499/353770.terrain differ diff --git a/public/terrain/19/858499/353771.terrain b/public/terrain/19/858499/353771.terrain new file mode 100644 index 000000000..990e4c5db Binary files /dev/null and b/public/terrain/19/858499/353771.terrain differ diff --git a/public/terrain/19/858499/353772.terrain b/public/terrain/19/858499/353772.terrain new file mode 100644 index 000000000..a6d5b6f89 Binary files /dev/null and b/public/terrain/19/858499/353772.terrain differ diff --git a/public/terrain/19/858499/353773.terrain b/public/terrain/19/858499/353773.terrain new file mode 100644 index 000000000..8712464d6 Binary files /dev/null and b/public/terrain/19/858499/353773.terrain differ diff --git a/public/terrain/19/858499/353774.terrain b/public/terrain/19/858499/353774.terrain new file mode 100644 index 000000000..dd344ee6a Binary files /dev/null and b/public/terrain/19/858499/353774.terrain differ diff --git a/public/terrain/19/858499/353775.terrain b/public/terrain/19/858499/353775.terrain new file mode 100644 index 000000000..9853b6196 Binary files /dev/null and b/public/terrain/19/858499/353775.terrain differ diff --git a/public/terrain/19/858499/353776.terrain b/public/terrain/19/858499/353776.terrain new file mode 100644 index 000000000..e8247d171 Binary files /dev/null and b/public/terrain/19/858499/353776.terrain differ diff --git a/public/terrain/19/858499/353777.terrain b/public/terrain/19/858499/353777.terrain new file mode 100644 index 000000000..9ebd50113 Binary files /dev/null and b/public/terrain/19/858499/353777.terrain differ diff --git a/public/terrain/19/858499/353778.terrain b/public/terrain/19/858499/353778.terrain new file mode 100644 index 000000000..3a228d654 Binary files /dev/null and b/public/terrain/19/858499/353778.terrain differ diff --git a/public/terrain/19/858499/353779.terrain b/public/terrain/19/858499/353779.terrain new file mode 100644 index 000000000..54ab141ed Binary files /dev/null and b/public/terrain/19/858499/353779.terrain differ diff --git a/public/terrain/19/858499/353780.terrain b/public/terrain/19/858499/353780.terrain new file mode 100644 index 000000000..c66662d14 Binary files /dev/null and b/public/terrain/19/858499/353780.terrain differ diff --git a/public/terrain/19/858499/353781.terrain b/public/terrain/19/858499/353781.terrain new file mode 100644 index 000000000..c9e05be80 Binary files /dev/null and b/public/terrain/19/858499/353781.terrain differ diff --git a/public/terrain/19/858499/353782.terrain b/public/terrain/19/858499/353782.terrain new file mode 100644 index 000000000..bd13ad3fd Binary files /dev/null and b/public/terrain/19/858499/353782.terrain differ diff --git a/public/terrain/19/858499/353783.terrain b/public/terrain/19/858499/353783.terrain new file mode 100644 index 000000000..9bc2b4997 Binary files /dev/null and b/public/terrain/19/858499/353783.terrain differ diff --git a/public/terrain/19/858499/353784.terrain b/public/terrain/19/858499/353784.terrain new file mode 100644 index 000000000..0f89aa8f7 Binary files /dev/null and b/public/terrain/19/858499/353784.terrain differ diff --git a/public/terrain/19/858499/353785.terrain b/public/terrain/19/858499/353785.terrain new file mode 100644 index 000000000..f7faf412e Binary files /dev/null and b/public/terrain/19/858499/353785.terrain differ diff --git a/public/terrain/19/858499/353786.terrain b/public/terrain/19/858499/353786.terrain new file mode 100644 index 000000000..319e655e9 Binary files /dev/null and b/public/terrain/19/858499/353786.terrain differ diff --git a/public/terrain/19/858499/353787.terrain b/public/terrain/19/858499/353787.terrain new file mode 100644 index 000000000..f66d3eb68 Binary files /dev/null and b/public/terrain/19/858499/353787.terrain differ diff --git a/public/terrain/19/858499/353788.terrain b/public/terrain/19/858499/353788.terrain new file mode 100644 index 000000000..1b8aea788 Binary files /dev/null and b/public/terrain/19/858499/353788.terrain differ diff --git a/public/terrain/19/858499/353789.terrain b/public/terrain/19/858499/353789.terrain new file mode 100644 index 000000000..dd9893aba Binary files /dev/null and b/public/terrain/19/858499/353789.terrain differ diff --git a/public/terrain/19/858499/353790.terrain b/public/terrain/19/858499/353790.terrain new file mode 100644 index 000000000..29d3077a4 Binary files /dev/null and b/public/terrain/19/858499/353790.terrain differ diff --git a/public/terrain/19/858499/353791.terrain b/public/terrain/19/858499/353791.terrain new file mode 100644 index 000000000..356121719 Binary files /dev/null and b/public/terrain/19/858499/353791.terrain differ diff --git a/public/terrain/19/858499/353792.terrain b/public/terrain/19/858499/353792.terrain new file mode 100644 index 000000000..58b2ed5fd Binary files /dev/null and b/public/terrain/19/858499/353792.terrain differ diff --git a/public/terrain/19/858499/353793.terrain b/public/terrain/19/858499/353793.terrain new file mode 100644 index 000000000..7d4f8653e Binary files /dev/null and b/public/terrain/19/858499/353793.terrain differ diff --git a/public/terrain/19/858499/353794.terrain b/public/terrain/19/858499/353794.terrain new file mode 100644 index 000000000..6c0783bc4 Binary files /dev/null and b/public/terrain/19/858499/353794.terrain differ diff --git a/public/terrain/19/858499/353795.terrain b/public/terrain/19/858499/353795.terrain new file mode 100644 index 000000000..0d4555a6e Binary files /dev/null and b/public/terrain/19/858499/353795.terrain differ diff --git a/public/terrain/19/858499/353796.terrain b/public/terrain/19/858499/353796.terrain new file mode 100644 index 000000000..2df20ddc3 Binary files /dev/null and b/public/terrain/19/858499/353796.terrain differ diff --git a/public/terrain/19/858499/353797.terrain b/public/terrain/19/858499/353797.terrain new file mode 100644 index 000000000..9fc3473a9 Binary files /dev/null and b/public/terrain/19/858499/353797.terrain differ diff --git a/public/terrain/19/858499/353798.terrain b/public/terrain/19/858499/353798.terrain new file mode 100644 index 000000000..446cb76f9 Binary files /dev/null and b/public/terrain/19/858499/353798.terrain differ diff --git a/public/terrain/19/858499/353799.terrain b/public/terrain/19/858499/353799.terrain new file mode 100644 index 000000000..92763a673 Binary files /dev/null and b/public/terrain/19/858499/353799.terrain differ diff --git a/public/terrain/19/858499/353800.terrain b/public/terrain/19/858499/353800.terrain new file mode 100644 index 000000000..614b21631 Binary files /dev/null and b/public/terrain/19/858499/353800.terrain differ diff --git a/public/terrain/19/858499/353801.terrain b/public/terrain/19/858499/353801.terrain new file mode 100644 index 000000000..fd2339980 Binary files /dev/null and b/public/terrain/19/858499/353801.terrain differ diff --git a/public/terrain/19/858499/353802.terrain b/public/terrain/19/858499/353802.terrain new file mode 100644 index 000000000..eae2800cd Binary files /dev/null and b/public/terrain/19/858499/353802.terrain differ diff --git a/public/terrain/19/858499/353803.terrain b/public/terrain/19/858499/353803.terrain new file mode 100644 index 000000000..95f75e821 Binary files /dev/null and b/public/terrain/19/858499/353803.terrain differ diff --git a/public/terrain/19/858499/353804.terrain b/public/terrain/19/858499/353804.terrain new file mode 100644 index 000000000..1ea35f813 Binary files /dev/null and b/public/terrain/19/858499/353804.terrain differ diff --git a/public/terrain/19/858499/353805.terrain b/public/terrain/19/858499/353805.terrain new file mode 100644 index 000000000..5e615ea81 Binary files /dev/null and b/public/terrain/19/858499/353805.terrain differ diff --git a/public/terrain/19/858499/353806.terrain b/public/terrain/19/858499/353806.terrain new file mode 100644 index 000000000..0322495a6 Binary files /dev/null and b/public/terrain/19/858499/353806.terrain differ diff --git a/public/terrain/19/858499/353807.terrain b/public/terrain/19/858499/353807.terrain new file mode 100644 index 000000000..0dfbd546a Binary files /dev/null and b/public/terrain/19/858499/353807.terrain differ diff --git a/public/terrain/19/858499/353808.terrain b/public/terrain/19/858499/353808.terrain new file mode 100644 index 000000000..de47bd268 Binary files /dev/null and b/public/terrain/19/858499/353808.terrain differ diff --git a/public/terrain/19/858499/353809.terrain b/public/terrain/19/858499/353809.terrain new file mode 100644 index 000000000..c7d172a7d Binary files /dev/null and b/public/terrain/19/858499/353809.terrain differ diff --git a/public/terrain/19/858499/353810.terrain b/public/terrain/19/858499/353810.terrain new file mode 100644 index 000000000..c25695857 Binary files /dev/null and b/public/terrain/19/858499/353810.terrain differ diff --git a/public/terrain/19/858499/353811.terrain b/public/terrain/19/858499/353811.terrain new file mode 100644 index 000000000..993eed469 Binary files /dev/null and b/public/terrain/19/858499/353811.terrain differ diff --git a/public/terrain/19/858499/353812.terrain b/public/terrain/19/858499/353812.terrain new file mode 100644 index 000000000..6a3bcb513 Binary files /dev/null and b/public/terrain/19/858499/353812.terrain differ diff --git a/public/terrain/19/858499/353813.terrain b/public/terrain/19/858499/353813.terrain new file mode 100644 index 000000000..bf19cd2d6 Binary files /dev/null and b/public/terrain/19/858499/353813.terrain differ diff --git a/public/terrain/19/858499/353814.terrain b/public/terrain/19/858499/353814.terrain new file mode 100644 index 000000000..e8d67e213 Binary files /dev/null and b/public/terrain/19/858499/353814.terrain differ diff --git a/public/terrain/19/858499/353815.terrain b/public/terrain/19/858499/353815.terrain new file mode 100644 index 000000000..3bd44aa06 Binary files /dev/null and b/public/terrain/19/858499/353815.terrain differ diff --git a/public/terrain/19/858499/353816.terrain b/public/terrain/19/858499/353816.terrain new file mode 100644 index 000000000..662376236 Binary files /dev/null and b/public/terrain/19/858499/353816.terrain differ diff --git a/public/terrain/19/858499/353817.terrain b/public/terrain/19/858499/353817.terrain new file mode 100644 index 000000000..0fedcf7a6 Binary files /dev/null and b/public/terrain/19/858499/353817.terrain differ diff --git a/public/terrain/19/858499/353818.terrain b/public/terrain/19/858499/353818.terrain new file mode 100644 index 000000000..5b08df209 Binary files /dev/null and b/public/terrain/19/858499/353818.terrain differ diff --git a/public/terrain/19/858499/353819.terrain b/public/terrain/19/858499/353819.terrain new file mode 100644 index 000000000..fc3159c41 Binary files /dev/null and b/public/terrain/19/858499/353819.terrain differ diff --git a/public/terrain/19/858499/353820.terrain b/public/terrain/19/858499/353820.terrain new file mode 100644 index 000000000..8ffb87b6e Binary files /dev/null and b/public/terrain/19/858499/353820.terrain differ diff --git a/public/terrain/19/858499/353821.terrain b/public/terrain/19/858499/353821.terrain new file mode 100644 index 000000000..8a7939cab Binary files /dev/null and b/public/terrain/19/858499/353821.terrain differ diff --git a/public/terrain/19/858499/353822.terrain b/public/terrain/19/858499/353822.terrain new file mode 100644 index 000000000..9375cc703 Binary files /dev/null and b/public/terrain/19/858499/353822.terrain differ diff --git a/public/terrain/19/858499/353823.terrain b/public/terrain/19/858499/353823.terrain new file mode 100644 index 000000000..ec387488b Binary files /dev/null and b/public/terrain/19/858499/353823.terrain differ diff --git a/public/terrain/19/858499/353824.terrain b/public/terrain/19/858499/353824.terrain new file mode 100644 index 000000000..d17547177 Binary files /dev/null and b/public/terrain/19/858499/353824.terrain differ diff --git a/public/terrain/19/858499/353825.terrain b/public/terrain/19/858499/353825.terrain new file mode 100644 index 000000000..7e2f5a9a4 Binary files /dev/null and b/public/terrain/19/858499/353825.terrain differ diff --git a/public/terrain/19/858499/353826.terrain b/public/terrain/19/858499/353826.terrain new file mode 100644 index 000000000..e7d9899b6 Binary files /dev/null and b/public/terrain/19/858499/353826.terrain differ diff --git a/public/terrain/19/858499/353827.terrain b/public/terrain/19/858499/353827.terrain new file mode 100644 index 000000000..cc9348716 Binary files /dev/null and b/public/terrain/19/858499/353827.terrain differ diff --git a/public/terrain/19/858499/353828.terrain b/public/terrain/19/858499/353828.terrain new file mode 100644 index 000000000..ec12406d7 Binary files /dev/null and b/public/terrain/19/858499/353828.terrain differ diff --git a/public/terrain/19/858499/353829.terrain b/public/terrain/19/858499/353829.terrain new file mode 100644 index 000000000..2fa53f77c Binary files /dev/null and b/public/terrain/19/858499/353829.terrain differ diff --git a/public/terrain/19/858499/353830.terrain b/public/terrain/19/858499/353830.terrain new file mode 100644 index 000000000..882632977 Binary files /dev/null and b/public/terrain/19/858499/353830.terrain differ diff --git a/public/terrain/19/858499/353831.terrain b/public/terrain/19/858499/353831.terrain new file mode 100644 index 000000000..2d4e42708 Binary files /dev/null and b/public/terrain/19/858499/353831.terrain differ diff --git a/public/terrain/19/858499/353832.terrain b/public/terrain/19/858499/353832.terrain new file mode 100644 index 000000000..aac814b30 Binary files /dev/null and b/public/terrain/19/858499/353832.terrain differ diff --git a/public/terrain/19/858499/353833.terrain b/public/terrain/19/858499/353833.terrain new file mode 100644 index 000000000..1b076c018 Binary files /dev/null and b/public/terrain/19/858499/353833.terrain differ diff --git a/public/terrain/19/858499/353834.terrain b/public/terrain/19/858499/353834.terrain new file mode 100644 index 000000000..de82672e4 Binary files /dev/null and b/public/terrain/19/858499/353834.terrain differ diff --git a/public/terrain/19/858499/353835.terrain b/public/terrain/19/858499/353835.terrain new file mode 100644 index 000000000..6a27ac11c Binary files /dev/null and b/public/terrain/19/858499/353835.terrain differ diff --git a/public/terrain/19/858499/353836.terrain b/public/terrain/19/858499/353836.terrain new file mode 100644 index 000000000..4fc266141 Binary files /dev/null and b/public/terrain/19/858499/353836.terrain differ diff --git a/public/terrain/19/858499/353837.terrain b/public/terrain/19/858499/353837.terrain new file mode 100644 index 000000000..0b82097f2 Binary files /dev/null and b/public/terrain/19/858499/353837.terrain differ diff --git a/public/terrain/19/858499/353838.terrain b/public/terrain/19/858499/353838.terrain new file mode 100644 index 000000000..1edfc447e Binary files /dev/null and b/public/terrain/19/858499/353838.terrain differ diff --git a/public/terrain/19/858499/353839.terrain b/public/terrain/19/858499/353839.terrain new file mode 100644 index 000000000..e14000450 Binary files /dev/null and b/public/terrain/19/858499/353839.terrain differ diff --git a/public/terrain/19/858499/353840.terrain b/public/terrain/19/858499/353840.terrain new file mode 100644 index 000000000..61d7df015 Binary files /dev/null and b/public/terrain/19/858499/353840.terrain differ diff --git a/public/terrain/19/858499/353841.terrain b/public/terrain/19/858499/353841.terrain new file mode 100644 index 000000000..1011ff00d Binary files /dev/null and b/public/terrain/19/858499/353841.terrain differ diff --git a/public/terrain/19/858499/353842.terrain b/public/terrain/19/858499/353842.terrain new file mode 100644 index 000000000..5f7e1340c Binary files /dev/null and b/public/terrain/19/858499/353842.terrain differ diff --git a/public/terrain/19/858499/353843.terrain b/public/terrain/19/858499/353843.terrain new file mode 100644 index 000000000..6bcff99ce Binary files /dev/null and b/public/terrain/19/858499/353843.terrain differ diff --git a/public/terrain/19/858499/353844.terrain b/public/terrain/19/858499/353844.terrain new file mode 100644 index 000000000..06b123c83 Binary files /dev/null and b/public/terrain/19/858499/353844.terrain differ diff --git a/public/terrain/19/858499/353845.terrain b/public/terrain/19/858499/353845.terrain new file mode 100644 index 000000000..c2f6244c3 Binary files /dev/null and b/public/terrain/19/858499/353845.terrain differ diff --git a/public/terrain/19/858499/353846.terrain b/public/terrain/19/858499/353846.terrain new file mode 100644 index 000000000..c7ef0e4d2 Binary files /dev/null and b/public/terrain/19/858499/353846.terrain differ diff --git a/public/terrain/19/858499/353847.terrain b/public/terrain/19/858499/353847.terrain new file mode 100644 index 000000000..5e7a2aa43 Binary files /dev/null and b/public/terrain/19/858499/353847.terrain differ diff --git a/public/terrain/19/858499/353848.terrain b/public/terrain/19/858499/353848.terrain new file mode 100644 index 000000000..f04008a63 Binary files /dev/null and b/public/terrain/19/858499/353848.terrain differ diff --git a/public/terrain/19/858499/353849.terrain b/public/terrain/19/858499/353849.terrain new file mode 100644 index 000000000..550cffb2b Binary files /dev/null and b/public/terrain/19/858499/353849.terrain differ diff --git a/public/terrain/19/858499/353850.terrain b/public/terrain/19/858499/353850.terrain new file mode 100644 index 000000000..b285f8fad Binary files /dev/null and b/public/terrain/19/858499/353850.terrain differ diff --git a/public/terrain/19/858499/353851.terrain b/public/terrain/19/858499/353851.terrain new file mode 100644 index 000000000..c1fcb2a52 Binary files /dev/null and b/public/terrain/19/858499/353851.terrain differ diff --git a/public/terrain/19/858499/353852.terrain b/public/terrain/19/858499/353852.terrain new file mode 100644 index 000000000..f5532ca1f Binary files /dev/null and b/public/terrain/19/858499/353852.terrain differ diff --git a/public/terrain/19/858499/353853.terrain b/public/terrain/19/858499/353853.terrain new file mode 100644 index 000000000..88576ac7a Binary files /dev/null and b/public/terrain/19/858499/353853.terrain differ diff --git a/public/terrain/19/858499/353854.terrain b/public/terrain/19/858499/353854.terrain new file mode 100644 index 000000000..1ed448d23 Binary files /dev/null and b/public/terrain/19/858499/353854.terrain differ diff --git a/public/terrain/19/858499/353855.terrain b/public/terrain/19/858499/353855.terrain new file mode 100644 index 000000000..39064396c Binary files /dev/null and b/public/terrain/19/858499/353855.terrain differ diff --git a/public/terrain/19/858499/353856.terrain b/public/terrain/19/858499/353856.terrain new file mode 100644 index 000000000..ff3470bcf Binary files /dev/null and b/public/terrain/19/858499/353856.terrain differ diff --git a/public/terrain/19/858499/353857.terrain b/public/terrain/19/858499/353857.terrain new file mode 100644 index 000000000..885965cf5 Binary files /dev/null and b/public/terrain/19/858499/353857.terrain differ diff --git a/public/terrain/19/858499/353858.terrain b/public/terrain/19/858499/353858.terrain new file mode 100644 index 000000000..b0897be27 Binary files /dev/null and b/public/terrain/19/858499/353858.terrain differ diff --git a/public/terrain/19/858499/353859.terrain b/public/terrain/19/858499/353859.terrain new file mode 100644 index 000000000..72ee18b1e Binary files /dev/null and b/public/terrain/19/858499/353859.terrain differ diff --git a/public/terrain/19/858499/353860.terrain b/public/terrain/19/858499/353860.terrain new file mode 100644 index 000000000..31408ea75 Binary files /dev/null and b/public/terrain/19/858499/353860.terrain differ diff --git a/public/terrain/19/858499/353861.terrain b/public/terrain/19/858499/353861.terrain new file mode 100644 index 000000000..a273c4f76 Binary files /dev/null and b/public/terrain/19/858499/353861.terrain differ diff --git a/public/terrain/19/858499/353862.terrain b/public/terrain/19/858499/353862.terrain new file mode 100644 index 000000000..6668cf9f7 Binary files /dev/null and b/public/terrain/19/858499/353862.terrain differ diff --git a/public/terrain/19/858499/353863.terrain b/public/terrain/19/858499/353863.terrain new file mode 100644 index 000000000..0324e51c1 Binary files /dev/null and b/public/terrain/19/858499/353863.terrain differ diff --git a/public/terrain/19/858499/353864.terrain b/public/terrain/19/858499/353864.terrain new file mode 100644 index 000000000..8e2f4ec47 Binary files /dev/null and b/public/terrain/19/858499/353864.terrain differ diff --git a/public/terrain/19/858499/353865.terrain b/public/terrain/19/858499/353865.terrain new file mode 100644 index 000000000..49eff03ba Binary files /dev/null and b/public/terrain/19/858499/353865.terrain differ diff --git a/public/terrain/19/858499/353866.terrain b/public/terrain/19/858499/353866.terrain new file mode 100644 index 000000000..bf6ab08e0 Binary files /dev/null and b/public/terrain/19/858499/353866.terrain differ diff --git a/public/terrain/19/858499/353867.terrain b/public/terrain/19/858499/353867.terrain new file mode 100644 index 000000000..5485e9838 Binary files /dev/null and b/public/terrain/19/858499/353867.terrain differ diff --git a/public/terrain/19/858499/353868.terrain b/public/terrain/19/858499/353868.terrain new file mode 100644 index 000000000..e48f82f1b Binary files /dev/null and b/public/terrain/19/858499/353868.terrain differ diff --git a/public/terrain/19/858499/353869.terrain b/public/terrain/19/858499/353869.terrain new file mode 100644 index 000000000..cdf644e92 Binary files /dev/null and b/public/terrain/19/858499/353869.terrain differ diff --git a/public/terrain/19/858499/353870.terrain b/public/terrain/19/858499/353870.terrain new file mode 100644 index 000000000..6d9fbdf26 Binary files /dev/null and b/public/terrain/19/858499/353870.terrain differ diff --git a/public/terrain/19/858499/353871.terrain b/public/terrain/19/858499/353871.terrain new file mode 100644 index 000000000..791f3ac57 Binary files /dev/null and b/public/terrain/19/858499/353871.terrain differ diff --git a/public/terrain/19/858499/353872.terrain b/public/terrain/19/858499/353872.terrain new file mode 100644 index 000000000..adf802db4 Binary files /dev/null and b/public/terrain/19/858499/353872.terrain differ diff --git a/public/terrain/19/858499/353873.terrain b/public/terrain/19/858499/353873.terrain new file mode 100644 index 000000000..555c48655 Binary files /dev/null and b/public/terrain/19/858499/353873.terrain differ diff --git a/public/terrain/19/858499/353874.terrain b/public/terrain/19/858499/353874.terrain new file mode 100644 index 000000000..22874c0e2 Binary files /dev/null and b/public/terrain/19/858499/353874.terrain differ diff --git a/public/terrain/19/858499/353875.terrain b/public/terrain/19/858499/353875.terrain new file mode 100644 index 000000000..2f192c853 Binary files /dev/null and b/public/terrain/19/858499/353875.terrain differ diff --git a/public/terrain/19/858499/353876.terrain b/public/terrain/19/858499/353876.terrain new file mode 100644 index 000000000..ab4baaca4 Binary files /dev/null and b/public/terrain/19/858499/353876.terrain differ diff --git a/public/terrain/19/858499/353877.terrain b/public/terrain/19/858499/353877.terrain new file mode 100644 index 000000000..b5b9ce689 Binary files /dev/null and b/public/terrain/19/858499/353877.terrain differ diff --git a/public/terrain/19/858499/353878.terrain b/public/terrain/19/858499/353878.terrain new file mode 100644 index 000000000..fd5a52847 Binary files /dev/null and b/public/terrain/19/858499/353878.terrain differ diff --git a/public/terrain/19/858499/353879.terrain b/public/terrain/19/858499/353879.terrain new file mode 100644 index 000000000..76b736030 Binary files /dev/null and b/public/terrain/19/858499/353879.terrain differ diff --git a/public/terrain/19/858499/353880.terrain b/public/terrain/19/858499/353880.terrain new file mode 100644 index 000000000..26116ba53 Binary files /dev/null and b/public/terrain/19/858499/353880.terrain differ diff --git a/public/terrain/19/858499/353881.terrain b/public/terrain/19/858499/353881.terrain new file mode 100644 index 000000000..50392c736 Binary files /dev/null and b/public/terrain/19/858499/353881.terrain differ diff --git a/public/terrain/19/858499/353882.terrain b/public/terrain/19/858499/353882.terrain new file mode 100644 index 000000000..f41d7af9f Binary files /dev/null and b/public/terrain/19/858499/353882.terrain differ diff --git a/public/terrain/19/858499/353883.terrain b/public/terrain/19/858499/353883.terrain new file mode 100644 index 000000000..fdc6dc165 Binary files /dev/null and b/public/terrain/19/858499/353883.terrain differ diff --git a/public/terrain/19/858499/353884.terrain b/public/terrain/19/858499/353884.terrain new file mode 100644 index 000000000..0decbaf68 Binary files /dev/null and b/public/terrain/19/858499/353884.terrain differ diff --git a/public/terrain/19/858499/353885.terrain b/public/terrain/19/858499/353885.terrain new file mode 100644 index 000000000..d73a484cf Binary files /dev/null and b/public/terrain/19/858499/353885.terrain differ diff --git a/public/terrain/19/858499/353886.terrain b/public/terrain/19/858499/353886.terrain new file mode 100644 index 000000000..6b2e81e51 Binary files /dev/null and b/public/terrain/19/858499/353886.terrain differ diff --git a/public/terrain/19/858499/353887.terrain b/public/terrain/19/858499/353887.terrain new file mode 100644 index 000000000..01275284a Binary files /dev/null and b/public/terrain/19/858499/353887.terrain differ diff --git a/public/terrain/19/858499/353888.terrain b/public/terrain/19/858499/353888.terrain new file mode 100644 index 000000000..01530a905 Binary files /dev/null and b/public/terrain/19/858499/353888.terrain differ diff --git a/public/terrain/19/858499/353889.terrain b/public/terrain/19/858499/353889.terrain new file mode 100644 index 000000000..3f740cb53 Binary files /dev/null and b/public/terrain/19/858499/353889.terrain differ diff --git a/public/terrain/19/858499/353890.terrain b/public/terrain/19/858499/353890.terrain new file mode 100644 index 000000000..599318564 Binary files /dev/null and b/public/terrain/19/858499/353890.terrain differ diff --git a/public/terrain/19/858499/353891.terrain b/public/terrain/19/858499/353891.terrain new file mode 100644 index 000000000..1ac9f652a Binary files /dev/null and b/public/terrain/19/858499/353891.terrain differ diff --git a/public/terrain/19/858499/353892.terrain b/public/terrain/19/858499/353892.terrain new file mode 100644 index 000000000..9f7b92426 Binary files /dev/null and b/public/terrain/19/858499/353892.terrain differ diff --git a/public/terrain/19/858499/353893.terrain b/public/terrain/19/858499/353893.terrain new file mode 100644 index 000000000..dbb1d03a2 Binary files /dev/null and b/public/terrain/19/858499/353893.terrain differ diff --git a/public/terrain/19/858499/353894.terrain b/public/terrain/19/858499/353894.terrain new file mode 100644 index 000000000..86aed1230 Binary files /dev/null and b/public/terrain/19/858499/353894.terrain differ diff --git a/public/terrain/19/858499/353895.terrain b/public/terrain/19/858499/353895.terrain new file mode 100644 index 000000000..3b9ecf3e7 Binary files /dev/null and b/public/terrain/19/858499/353895.terrain differ diff --git a/public/terrain/19/858499/353896.terrain b/public/terrain/19/858499/353896.terrain new file mode 100644 index 000000000..cd0b93623 Binary files /dev/null and b/public/terrain/19/858499/353896.terrain differ diff --git a/public/terrain/19/858499/353897.terrain b/public/terrain/19/858499/353897.terrain new file mode 100644 index 000000000..c5fd6afbf Binary files /dev/null and b/public/terrain/19/858499/353897.terrain differ diff --git a/public/terrain/19/858499/353898.terrain b/public/terrain/19/858499/353898.terrain new file mode 100644 index 000000000..7cf19c098 Binary files /dev/null and b/public/terrain/19/858499/353898.terrain differ diff --git a/public/terrain/19/858499/353899.terrain b/public/terrain/19/858499/353899.terrain new file mode 100644 index 000000000..4bfbf9e3b Binary files /dev/null and b/public/terrain/19/858499/353899.terrain differ diff --git a/public/terrain/19/858499/353900.terrain b/public/terrain/19/858499/353900.terrain new file mode 100644 index 000000000..3a47c7a15 Binary files /dev/null and b/public/terrain/19/858499/353900.terrain differ diff --git a/public/terrain/19/858499/353901.terrain b/public/terrain/19/858499/353901.terrain new file mode 100644 index 000000000..5a92f4c4a Binary files /dev/null and b/public/terrain/19/858499/353901.terrain differ diff --git a/public/terrain/19/858499/353902.terrain b/public/terrain/19/858499/353902.terrain new file mode 100644 index 000000000..5e3b2829f Binary files /dev/null and b/public/terrain/19/858499/353902.terrain differ diff --git a/public/terrain/19/858499/353903.terrain b/public/terrain/19/858499/353903.terrain new file mode 100644 index 000000000..244813672 Binary files /dev/null and b/public/terrain/19/858499/353903.terrain differ diff --git a/public/terrain/19/858499/353904.terrain b/public/terrain/19/858499/353904.terrain new file mode 100644 index 000000000..2c4b6d3d6 Binary files /dev/null and b/public/terrain/19/858499/353904.terrain differ diff --git a/public/terrain/19/858499/353905.terrain b/public/terrain/19/858499/353905.terrain new file mode 100644 index 000000000..7a5a5427e Binary files /dev/null and b/public/terrain/19/858499/353905.terrain differ diff --git a/public/terrain/19/858499/353906.terrain b/public/terrain/19/858499/353906.terrain new file mode 100644 index 000000000..2254d727e Binary files /dev/null and b/public/terrain/19/858499/353906.terrain differ diff --git a/public/terrain/19/858499/353907.terrain b/public/terrain/19/858499/353907.terrain new file mode 100644 index 000000000..57faeb250 Binary files /dev/null and b/public/terrain/19/858499/353907.terrain differ diff --git a/public/terrain/19/858499/353908.terrain b/public/terrain/19/858499/353908.terrain new file mode 100644 index 000000000..ece9598ef Binary files /dev/null and b/public/terrain/19/858499/353908.terrain differ diff --git a/public/terrain/19/858499/353909.terrain b/public/terrain/19/858499/353909.terrain new file mode 100644 index 000000000..32615d241 Binary files /dev/null and b/public/terrain/19/858499/353909.terrain differ diff --git a/public/terrain/19/858499/353910.terrain b/public/terrain/19/858499/353910.terrain new file mode 100644 index 000000000..472cc8ada Binary files /dev/null and b/public/terrain/19/858499/353910.terrain differ diff --git a/public/terrain/19/858499/353911.terrain b/public/terrain/19/858499/353911.terrain new file mode 100644 index 000000000..42039d565 Binary files /dev/null and b/public/terrain/19/858499/353911.terrain differ diff --git a/public/terrain/19/858499/353912.terrain b/public/terrain/19/858499/353912.terrain new file mode 100644 index 000000000..272eb68ed Binary files /dev/null and b/public/terrain/19/858499/353912.terrain differ diff --git a/public/terrain/19/858499/353913.terrain b/public/terrain/19/858499/353913.terrain new file mode 100644 index 000000000..162b73b2c Binary files /dev/null and b/public/terrain/19/858499/353913.terrain differ diff --git a/public/terrain/19/858499/353914.terrain b/public/terrain/19/858499/353914.terrain new file mode 100644 index 000000000..04d02d8da Binary files /dev/null and b/public/terrain/19/858499/353914.terrain differ diff --git a/public/terrain/19/858499/353915.terrain b/public/terrain/19/858499/353915.terrain new file mode 100644 index 000000000..854767001 Binary files /dev/null and b/public/terrain/19/858499/353915.terrain differ diff --git a/public/terrain/19/858499/353916.terrain b/public/terrain/19/858499/353916.terrain new file mode 100644 index 000000000..695c83e39 Binary files /dev/null and b/public/terrain/19/858499/353916.terrain differ diff --git a/public/terrain/19/858499/353917.terrain b/public/terrain/19/858499/353917.terrain new file mode 100644 index 000000000..5e1c3fc5b Binary files /dev/null and b/public/terrain/19/858499/353917.terrain differ diff --git a/public/terrain/19/858499/353918.terrain b/public/terrain/19/858499/353918.terrain new file mode 100644 index 000000000..a6d1388d0 Binary files /dev/null and b/public/terrain/19/858499/353918.terrain differ diff --git a/public/terrain/19/858499/353919.terrain b/public/terrain/19/858499/353919.terrain new file mode 100644 index 000000000..3db866f53 Binary files /dev/null and b/public/terrain/19/858499/353919.terrain differ diff --git a/public/terrain/19/858499/353920.terrain b/public/terrain/19/858499/353920.terrain new file mode 100644 index 000000000..6f2bb6a87 Binary files /dev/null and b/public/terrain/19/858499/353920.terrain differ diff --git a/public/terrain/19/858499/353921.terrain b/public/terrain/19/858499/353921.terrain new file mode 100644 index 000000000..e7659f280 Binary files /dev/null and b/public/terrain/19/858499/353921.terrain differ diff --git a/public/terrain/19/858499/353922.terrain b/public/terrain/19/858499/353922.terrain new file mode 100644 index 000000000..ba04087cd Binary files /dev/null and b/public/terrain/19/858499/353922.terrain differ diff --git a/public/terrain/19/858499/353923.terrain b/public/terrain/19/858499/353923.terrain new file mode 100644 index 000000000..d24b6d70b Binary files /dev/null and b/public/terrain/19/858499/353923.terrain differ diff --git a/public/terrain/19/858499/353924.terrain b/public/terrain/19/858499/353924.terrain new file mode 100644 index 000000000..1d857908e Binary files /dev/null and b/public/terrain/19/858499/353924.terrain differ diff --git a/public/terrain/19/858499/353925.terrain b/public/terrain/19/858499/353925.terrain new file mode 100644 index 000000000..4e097096b Binary files /dev/null and b/public/terrain/19/858499/353925.terrain differ diff --git a/public/terrain/19/858499/353926.terrain b/public/terrain/19/858499/353926.terrain new file mode 100644 index 000000000..bceeecb79 Binary files /dev/null and b/public/terrain/19/858499/353926.terrain differ diff --git a/public/terrain/19/858499/353927.terrain b/public/terrain/19/858499/353927.terrain new file mode 100644 index 000000000..48c867ba9 Binary files /dev/null and b/public/terrain/19/858499/353927.terrain differ diff --git a/public/terrain/19/858499/353928.terrain b/public/terrain/19/858499/353928.terrain new file mode 100644 index 000000000..bf5f3a5bb Binary files /dev/null and b/public/terrain/19/858499/353928.terrain differ diff --git a/public/terrain/19/858499/353929.terrain b/public/terrain/19/858499/353929.terrain new file mode 100644 index 000000000..73508a098 Binary files /dev/null and b/public/terrain/19/858499/353929.terrain differ diff --git a/public/terrain/19/858499/353930.terrain b/public/terrain/19/858499/353930.terrain new file mode 100644 index 000000000..900dc7bb4 Binary files /dev/null and b/public/terrain/19/858499/353930.terrain differ diff --git a/public/terrain/19/858499/353931.terrain b/public/terrain/19/858499/353931.terrain new file mode 100644 index 000000000..8ea18794d Binary files /dev/null and b/public/terrain/19/858499/353931.terrain differ diff --git a/public/terrain/19/858499/353932.terrain b/public/terrain/19/858499/353932.terrain new file mode 100644 index 000000000..10dbe7386 Binary files /dev/null and b/public/terrain/19/858499/353932.terrain differ diff --git a/public/terrain/19/858499/353933.terrain b/public/terrain/19/858499/353933.terrain new file mode 100644 index 000000000..961bb0cc5 Binary files /dev/null and b/public/terrain/19/858499/353933.terrain differ diff --git a/public/terrain/19/858499/353934.terrain b/public/terrain/19/858499/353934.terrain new file mode 100644 index 000000000..eed676001 Binary files /dev/null and b/public/terrain/19/858499/353934.terrain differ diff --git a/public/terrain/19/858499/353935.terrain b/public/terrain/19/858499/353935.terrain new file mode 100644 index 000000000..3cf341c6a Binary files /dev/null and b/public/terrain/19/858499/353935.terrain differ diff --git a/public/terrain/19/858499/353936.terrain b/public/terrain/19/858499/353936.terrain new file mode 100644 index 000000000..57b851668 Binary files /dev/null and b/public/terrain/19/858499/353936.terrain differ diff --git a/public/terrain/19/858499/353937.terrain b/public/terrain/19/858499/353937.terrain new file mode 100644 index 000000000..d5cb4689c Binary files /dev/null and b/public/terrain/19/858499/353937.terrain differ diff --git a/public/terrain/19/858499/353938.terrain b/public/terrain/19/858499/353938.terrain new file mode 100644 index 000000000..dec7de42b Binary files /dev/null and b/public/terrain/19/858499/353938.terrain differ diff --git a/public/terrain/19/858499/353939.terrain b/public/terrain/19/858499/353939.terrain new file mode 100644 index 000000000..c98ea458a Binary files /dev/null and b/public/terrain/19/858499/353939.terrain differ diff --git a/public/terrain/19/858499/353940.terrain b/public/terrain/19/858499/353940.terrain new file mode 100644 index 000000000..a94de233d Binary files /dev/null and b/public/terrain/19/858499/353940.terrain differ diff --git a/public/terrain/19/858499/353941.terrain b/public/terrain/19/858499/353941.terrain new file mode 100644 index 000000000..dc96695c7 Binary files /dev/null and b/public/terrain/19/858499/353941.terrain differ diff --git a/public/terrain/19/858499/353942.terrain b/public/terrain/19/858499/353942.terrain new file mode 100644 index 000000000..8f74e7c9e Binary files /dev/null and b/public/terrain/19/858499/353942.terrain differ diff --git a/public/terrain/19/858499/353943.terrain b/public/terrain/19/858499/353943.terrain new file mode 100644 index 000000000..55b8c78d1 Binary files /dev/null and b/public/terrain/19/858499/353943.terrain differ diff --git a/public/terrain/19/858499/353944.terrain b/public/terrain/19/858499/353944.terrain new file mode 100644 index 000000000..feb20ae0a Binary files /dev/null and b/public/terrain/19/858499/353944.terrain differ diff --git a/public/terrain/19/858499/353945.terrain b/public/terrain/19/858499/353945.terrain new file mode 100644 index 000000000..34fc1db65 Binary files /dev/null and b/public/terrain/19/858499/353945.terrain differ diff --git a/public/terrain/19/858499/353946.terrain b/public/terrain/19/858499/353946.terrain new file mode 100644 index 000000000..247c14e81 Binary files /dev/null and b/public/terrain/19/858499/353946.terrain differ diff --git a/public/terrain/19/858499/353947.terrain b/public/terrain/19/858499/353947.terrain new file mode 100644 index 000000000..7bf7605fd Binary files /dev/null and b/public/terrain/19/858499/353947.terrain differ diff --git a/public/terrain/19/858499/353948.terrain b/public/terrain/19/858499/353948.terrain new file mode 100644 index 000000000..e338f1834 Binary files /dev/null and b/public/terrain/19/858499/353948.terrain differ diff --git a/public/terrain/19/858499/353949.terrain b/public/terrain/19/858499/353949.terrain new file mode 100644 index 000000000..136df0549 Binary files /dev/null and b/public/terrain/19/858499/353949.terrain differ diff --git a/public/terrain/19/858499/353950.terrain b/public/terrain/19/858499/353950.terrain new file mode 100644 index 000000000..cbf0e90b5 Binary files /dev/null and b/public/terrain/19/858499/353950.terrain differ diff --git a/public/terrain/19/858499/353951.terrain b/public/terrain/19/858499/353951.terrain new file mode 100644 index 000000000..81542d44d Binary files /dev/null and b/public/terrain/19/858499/353951.terrain differ diff --git a/public/terrain/19/858499/353952.terrain b/public/terrain/19/858499/353952.terrain new file mode 100644 index 000000000..f0ce9f0ad Binary files /dev/null and b/public/terrain/19/858499/353952.terrain differ diff --git a/public/terrain/19/858499/353953.terrain b/public/terrain/19/858499/353953.terrain new file mode 100644 index 000000000..0ea02b16f Binary files /dev/null and b/public/terrain/19/858499/353953.terrain differ diff --git a/public/terrain/19/858499/353954.terrain b/public/terrain/19/858499/353954.terrain new file mode 100644 index 000000000..7e30977bc Binary files /dev/null and b/public/terrain/19/858499/353954.terrain differ diff --git a/public/terrain/19/858499/353955.terrain b/public/terrain/19/858499/353955.terrain new file mode 100644 index 000000000..b5802390f Binary files /dev/null and b/public/terrain/19/858499/353955.terrain differ diff --git a/public/terrain/19/858499/353956.terrain b/public/terrain/19/858499/353956.terrain new file mode 100644 index 000000000..60f8abb8c Binary files /dev/null and b/public/terrain/19/858499/353956.terrain differ diff --git a/public/terrain/19/858499/353957.terrain b/public/terrain/19/858499/353957.terrain new file mode 100644 index 000000000..53f1e7561 Binary files /dev/null and b/public/terrain/19/858499/353957.terrain differ diff --git a/public/terrain/19/858499/353958.terrain b/public/terrain/19/858499/353958.terrain new file mode 100644 index 000000000..240750bf7 Binary files /dev/null and b/public/terrain/19/858499/353958.terrain differ diff --git a/public/terrain/19/858499/353959.terrain b/public/terrain/19/858499/353959.terrain new file mode 100644 index 000000000..7ee54691d Binary files /dev/null and b/public/terrain/19/858499/353959.terrain differ diff --git a/public/terrain/19/858499/353960.terrain b/public/terrain/19/858499/353960.terrain new file mode 100644 index 000000000..fea90bb17 Binary files /dev/null and b/public/terrain/19/858499/353960.terrain differ diff --git a/public/terrain/19/858499/353961.terrain b/public/terrain/19/858499/353961.terrain new file mode 100644 index 000000000..1a503ac40 Binary files /dev/null and b/public/terrain/19/858499/353961.terrain differ diff --git a/public/terrain/19/858499/353962.terrain b/public/terrain/19/858499/353962.terrain new file mode 100644 index 000000000..0a334f46e Binary files /dev/null and b/public/terrain/19/858499/353962.terrain differ diff --git a/public/terrain/19/858499/353963.terrain b/public/terrain/19/858499/353963.terrain new file mode 100644 index 000000000..5049e49b9 Binary files /dev/null and b/public/terrain/19/858499/353963.terrain differ diff --git a/public/terrain/19/858499/353964.terrain b/public/terrain/19/858499/353964.terrain new file mode 100644 index 000000000..2a127c0b4 Binary files /dev/null and b/public/terrain/19/858499/353964.terrain differ diff --git a/public/terrain/19/858499/353965.terrain b/public/terrain/19/858499/353965.terrain new file mode 100644 index 000000000..797137938 Binary files /dev/null and b/public/terrain/19/858499/353965.terrain differ diff --git a/public/terrain/19/858499/353966.terrain b/public/terrain/19/858499/353966.terrain new file mode 100644 index 000000000..d380a7310 Binary files /dev/null and b/public/terrain/19/858499/353966.terrain differ diff --git a/public/terrain/19/858499/353967.terrain b/public/terrain/19/858499/353967.terrain new file mode 100644 index 000000000..4a0f59001 Binary files /dev/null and b/public/terrain/19/858499/353967.terrain differ diff --git a/public/terrain/19/858499/353968.terrain b/public/terrain/19/858499/353968.terrain new file mode 100644 index 000000000..735eb6baf Binary files /dev/null and b/public/terrain/19/858499/353968.terrain differ diff --git a/public/terrain/19/858499/353969.terrain b/public/terrain/19/858499/353969.terrain new file mode 100644 index 000000000..0a1f45af9 Binary files /dev/null and b/public/terrain/19/858499/353969.terrain differ diff --git a/public/terrain/19/858499/353970.terrain b/public/terrain/19/858499/353970.terrain new file mode 100644 index 000000000..ad53d12f7 Binary files /dev/null and b/public/terrain/19/858499/353970.terrain differ diff --git a/public/terrain/19/858499/353971.terrain b/public/terrain/19/858499/353971.terrain new file mode 100644 index 000000000..d6f99babd Binary files /dev/null and b/public/terrain/19/858499/353971.terrain differ diff --git a/public/terrain/19/858499/353972.terrain b/public/terrain/19/858499/353972.terrain new file mode 100644 index 000000000..fb34fc176 Binary files /dev/null and b/public/terrain/19/858499/353972.terrain differ diff --git a/public/terrain/19/858499/353973.terrain b/public/terrain/19/858499/353973.terrain new file mode 100644 index 000000000..69c8f282b Binary files /dev/null and b/public/terrain/19/858499/353973.terrain differ diff --git a/public/terrain/19/858499/353974.terrain b/public/terrain/19/858499/353974.terrain new file mode 100644 index 000000000..2d29bbe7f Binary files /dev/null and b/public/terrain/19/858499/353974.terrain differ diff --git a/public/terrain/19/858499/353975.terrain b/public/terrain/19/858499/353975.terrain new file mode 100644 index 000000000..17537c45a Binary files /dev/null and b/public/terrain/19/858499/353975.terrain differ diff --git a/public/terrain/19/858499/353976.terrain b/public/terrain/19/858499/353976.terrain new file mode 100644 index 000000000..82c6d004c Binary files /dev/null and b/public/terrain/19/858499/353976.terrain differ diff --git a/public/terrain/19/858499/353977.terrain b/public/terrain/19/858499/353977.terrain new file mode 100644 index 000000000..57b93e207 Binary files /dev/null and b/public/terrain/19/858499/353977.terrain differ diff --git a/public/terrain/19/858499/353978.terrain b/public/terrain/19/858499/353978.terrain new file mode 100644 index 000000000..1c533243f Binary files /dev/null and b/public/terrain/19/858499/353978.terrain differ diff --git a/public/terrain/19/858499/353979.terrain b/public/terrain/19/858499/353979.terrain new file mode 100644 index 000000000..be20b1d67 Binary files /dev/null and b/public/terrain/19/858499/353979.terrain differ diff --git a/public/terrain/19/858499/353980.terrain b/public/terrain/19/858499/353980.terrain new file mode 100644 index 000000000..7f7efe846 Binary files /dev/null and b/public/terrain/19/858499/353980.terrain differ diff --git a/public/terrain/19/858499/353981.terrain b/public/terrain/19/858499/353981.terrain new file mode 100644 index 000000000..4acc49a80 Binary files /dev/null and b/public/terrain/19/858499/353981.terrain differ diff --git a/public/terrain/19/858499/353982.terrain b/public/terrain/19/858499/353982.terrain new file mode 100644 index 000000000..46e29458c Binary files /dev/null and b/public/terrain/19/858499/353982.terrain differ diff --git a/public/terrain/19/858499/353983.terrain b/public/terrain/19/858499/353983.terrain new file mode 100644 index 000000000..dbf729f4c Binary files /dev/null and b/public/terrain/19/858499/353983.terrain differ diff --git a/public/terrain/19/858499/353984.terrain b/public/terrain/19/858499/353984.terrain new file mode 100644 index 000000000..382b27056 Binary files /dev/null and b/public/terrain/19/858499/353984.terrain differ diff --git a/public/terrain/19/858499/353985.terrain b/public/terrain/19/858499/353985.terrain new file mode 100644 index 000000000..eb6219d9c Binary files /dev/null and b/public/terrain/19/858499/353985.terrain differ diff --git a/public/terrain/19/858499/353986.terrain b/public/terrain/19/858499/353986.terrain new file mode 100644 index 000000000..0df20e275 Binary files /dev/null and b/public/terrain/19/858499/353986.terrain differ diff --git a/public/terrain/19/858499/353987.terrain b/public/terrain/19/858499/353987.terrain new file mode 100644 index 000000000..51b14592c Binary files /dev/null and b/public/terrain/19/858499/353987.terrain differ diff --git a/public/terrain/19/858499/353988.terrain b/public/terrain/19/858499/353988.terrain new file mode 100644 index 000000000..dd3e095d1 Binary files /dev/null and b/public/terrain/19/858499/353988.terrain differ diff --git a/public/terrain/19/858499/353989.terrain b/public/terrain/19/858499/353989.terrain new file mode 100644 index 000000000..fae69253e Binary files /dev/null and b/public/terrain/19/858499/353989.terrain differ diff --git a/public/terrain/19/858499/353990.terrain b/public/terrain/19/858499/353990.terrain new file mode 100644 index 000000000..122e21a28 Binary files /dev/null and b/public/terrain/19/858499/353990.terrain differ diff --git a/public/terrain/19/858499/353991.terrain b/public/terrain/19/858499/353991.terrain new file mode 100644 index 000000000..d0c5fb391 Binary files /dev/null and b/public/terrain/19/858499/353991.terrain differ diff --git a/public/terrain/19/858499/353992.terrain b/public/terrain/19/858499/353992.terrain new file mode 100644 index 000000000..278094d4c Binary files /dev/null and b/public/terrain/19/858499/353992.terrain differ diff --git a/public/terrain/19/858499/353993.terrain b/public/terrain/19/858499/353993.terrain new file mode 100644 index 000000000..5ab423265 Binary files /dev/null and b/public/terrain/19/858499/353993.terrain differ diff --git a/public/terrain/19/858499/353994.terrain b/public/terrain/19/858499/353994.terrain new file mode 100644 index 000000000..788bd4895 Binary files /dev/null and b/public/terrain/19/858499/353994.terrain differ diff --git a/public/terrain/19/858499/353995.terrain b/public/terrain/19/858499/353995.terrain new file mode 100644 index 000000000..22aa1ac68 Binary files /dev/null and b/public/terrain/19/858499/353995.terrain differ diff --git a/public/terrain/19/858499/353996.terrain b/public/terrain/19/858499/353996.terrain new file mode 100644 index 000000000..c6f5152be Binary files /dev/null and b/public/terrain/19/858499/353996.terrain differ diff --git a/public/terrain/19/858499/353997.terrain b/public/terrain/19/858499/353997.terrain new file mode 100644 index 000000000..f9f6d8939 Binary files /dev/null and b/public/terrain/19/858499/353997.terrain differ diff --git a/public/terrain/19/858499/353998.terrain b/public/terrain/19/858499/353998.terrain new file mode 100644 index 000000000..05e8b9510 Binary files /dev/null and b/public/terrain/19/858499/353998.terrain differ diff --git a/public/terrain/19/858499/353999.terrain b/public/terrain/19/858499/353999.terrain new file mode 100644 index 000000000..ba775508a Binary files /dev/null and b/public/terrain/19/858499/353999.terrain differ diff --git a/public/terrain/19/858499/354000.terrain b/public/terrain/19/858499/354000.terrain new file mode 100644 index 000000000..0748c3fcb Binary files /dev/null and b/public/terrain/19/858499/354000.terrain differ diff --git a/public/terrain/19/858499/354001.terrain b/public/terrain/19/858499/354001.terrain new file mode 100644 index 000000000..41195ea6f Binary files /dev/null and b/public/terrain/19/858499/354001.terrain differ diff --git a/public/terrain/19/858499/354002.terrain b/public/terrain/19/858499/354002.terrain new file mode 100644 index 000000000..ddfced566 Binary files /dev/null and b/public/terrain/19/858499/354002.terrain differ diff --git a/public/terrain/19/858499/354003.terrain b/public/terrain/19/858499/354003.terrain new file mode 100644 index 000000000..d81c937dc Binary files /dev/null and b/public/terrain/19/858499/354003.terrain differ diff --git a/public/terrain/19/858499/354004.terrain b/public/terrain/19/858499/354004.terrain new file mode 100644 index 000000000..bb140a495 Binary files /dev/null and b/public/terrain/19/858499/354004.terrain differ diff --git a/public/terrain/19/858499/354005.terrain b/public/terrain/19/858499/354005.terrain new file mode 100644 index 000000000..1f5a98492 Binary files /dev/null and b/public/terrain/19/858499/354005.terrain differ diff --git a/public/terrain/19/858499/354006.terrain b/public/terrain/19/858499/354006.terrain new file mode 100644 index 000000000..7ef8435c3 Binary files /dev/null and b/public/terrain/19/858499/354006.terrain differ diff --git a/public/terrain/19/858499/354007.terrain b/public/terrain/19/858499/354007.terrain new file mode 100644 index 000000000..f396ce9ef Binary files /dev/null and b/public/terrain/19/858499/354007.terrain differ diff --git a/public/terrain/19/858499/354008.terrain b/public/terrain/19/858499/354008.terrain new file mode 100644 index 000000000..d26699f05 Binary files /dev/null and b/public/terrain/19/858499/354008.terrain differ diff --git a/public/terrain/19/858499/354009.terrain b/public/terrain/19/858499/354009.terrain new file mode 100644 index 000000000..dfc723add Binary files /dev/null and b/public/terrain/19/858499/354009.terrain differ diff --git a/public/terrain/19/858499/354010.terrain b/public/terrain/19/858499/354010.terrain new file mode 100644 index 000000000..e53e976c9 Binary files /dev/null and b/public/terrain/19/858499/354010.terrain differ diff --git a/public/terrain/19/858499/354011.terrain b/public/terrain/19/858499/354011.terrain new file mode 100644 index 000000000..258c1e3af Binary files /dev/null and b/public/terrain/19/858499/354011.terrain differ diff --git a/public/terrain/19/858499/354012.terrain b/public/terrain/19/858499/354012.terrain new file mode 100644 index 000000000..916a6addb Binary files /dev/null and b/public/terrain/19/858499/354012.terrain differ diff --git a/public/terrain/19/858499/354013.terrain b/public/terrain/19/858499/354013.terrain new file mode 100644 index 000000000..291cd94ae Binary files /dev/null and b/public/terrain/19/858499/354013.terrain differ diff --git a/public/terrain/19/858499/354014.terrain b/public/terrain/19/858499/354014.terrain new file mode 100644 index 000000000..a5078a375 Binary files /dev/null and b/public/terrain/19/858499/354014.terrain differ diff --git a/public/terrain/19/858499/354015.terrain b/public/terrain/19/858499/354015.terrain new file mode 100644 index 000000000..47885777c Binary files /dev/null and b/public/terrain/19/858499/354015.terrain differ diff --git a/public/terrain/19/858499/354016.terrain b/public/terrain/19/858499/354016.terrain new file mode 100644 index 000000000..d999ec388 Binary files /dev/null and b/public/terrain/19/858499/354016.terrain differ diff --git a/public/terrain/19/858499/354017.terrain b/public/terrain/19/858499/354017.terrain new file mode 100644 index 000000000..071ddb8f7 Binary files /dev/null and b/public/terrain/19/858499/354017.terrain differ diff --git a/public/terrain/19/858499/354018.terrain b/public/terrain/19/858499/354018.terrain new file mode 100644 index 000000000..6ec299fc1 Binary files /dev/null and b/public/terrain/19/858499/354018.terrain differ diff --git a/public/terrain/19/858499/354019.terrain b/public/terrain/19/858499/354019.terrain new file mode 100644 index 000000000..c9bd35e92 Binary files /dev/null and b/public/terrain/19/858499/354019.terrain differ diff --git a/public/terrain/19/858499/354020.terrain b/public/terrain/19/858499/354020.terrain new file mode 100644 index 000000000..42bea91bc Binary files /dev/null and b/public/terrain/19/858499/354020.terrain differ diff --git a/public/terrain/19/858499/354021.terrain b/public/terrain/19/858499/354021.terrain new file mode 100644 index 000000000..930b38cc2 Binary files /dev/null and b/public/terrain/19/858499/354021.terrain differ diff --git a/public/terrain/19/858499/354022.terrain b/public/terrain/19/858499/354022.terrain new file mode 100644 index 000000000..a823dd7f8 Binary files /dev/null and b/public/terrain/19/858499/354022.terrain differ diff --git a/public/terrain/19/858499/354023.terrain b/public/terrain/19/858499/354023.terrain new file mode 100644 index 000000000..c316abac9 Binary files /dev/null and b/public/terrain/19/858499/354023.terrain differ diff --git a/public/terrain/19/858499/354024.terrain b/public/terrain/19/858499/354024.terrain new file mode 100644 index 000000000..b97e80c93 Binary files /dev/null and b/public/terrain/19/858499/354024.terrain differ diff --git a/public/terrain/19/858499/354025.terrain b/public/terrain/19/858499/354025.terrain new file mode 100644 index 000000000..453cf7e83 Binary files /dev/null and b/public/terrain/19/858499/354025.terrain differ diff --git a/public/terrain/19/858499/354026.terrain b/public/terrain/19/858499/354026.terrain new file mode 100644 index 000000000..50289f649 Binary files /dev/null and b/public/terrain/19/858499/354026.terrain differ diff --git a/public/terrain/19/858499/354027.terrain b/public/terrain/19/858499/354027.terrain new file mode 100644 index 000000000..3c9289271 Binary files /dev/null and b/public/terrain/19/858499/354027.terrain differ diff --git a/public/terrain/19/858499/354028.terrain b/public/terrain/19/858499/354028.terrain new file mode 100644 index 000000000..f75122217 Binary files /dev/null and b/public/terrain/19/858499/354028.terrain differ diff --git a/public/terrain/19/858499/354029.terrain b/public/terrain/19/858499/354029.terrain new file mode 100644 index 000000000..66ddc2fd0 Binary files /dev/null and b/public/terrain/19/858499/354029.terrain differ diff --git a/public/terrain/19/858499/354030.terrain b/public/terrain/19/858499/354030.terrain new file mode 100644 index 000000000..80d3a352b Binary files /dev/null and b/public/terrain/19/858499/354030.terrain differ diff --git a/public/terrain/19/858499/354031.terrain b/public/terrain/19/858499/354031.terrain new file mode 100644 index 000000000..4b5f24956 Binary files /dev/null and b/public/terrain/19/858499/354031.terrain differ diff --git a/public/terrain/19/858499/354032.terrain b/public/terrain/19/858499/354032.terrain new file mode 100644 index 000000000..3e7cdcbfb Binary files /dev/null and b/public/terrain/19/858499/354032.terrain differ diff --git a/public/terrain/19/858499/354033.terrain b/public/terrain/19/858499/354033.terrain new file mode 100644 index 000000000..27eeb6053 Binary files /dev/null and b/public/terrain/19/858499/354033.terrain differ diff --git a/public/terrain/19/858499/354034.terrain b/public/terrain/19/858499/354034.terrain new file mode 100644 index 000000000..c028aa714 Binary files /dev/null and b/public/terrain/19/858499/354034.terrain differ diff --git a/public/terrain/19/858499/354035.terrain b/public/terrain/19/858499/354035.terrain new file mode 100644 index 000000000..192da670c Binary files /dev/null and b/public/terrain/19/858499/354035.terrain differ diff --git a/public/terrain/19/858499/354036.terrain b/public/terrain/19/858499/354036.terrain new file mode 100644 index 000000000..d52280eca Binary files /dev/null and b/public/terrain/19/858499/354036.terrain differ diff --git a/public/terrain/19/858499/354037.terrain b/public/terrain/19/858499/354037.terrain new file mode 100644 index 000000000..1dad26480 Binary files /dev/null and b/public/terrain/19/858499/354037.terrain differ diff --git a/public/terrain/19/858499/354038.terrain b/public/terrain/19/858499/354038.terrain new file mode 100644 index 000000000..b662ef957 Binary files /dev/null and b/public/terrain/19/858499/354038.terrain differ diff --git a/public/terrain/19/858499/354039.terrain b/public/terrain/19/858499/354039.terrain new file mode 100644 index 000000000..581eed5d8 Binary files /dev/null and b/public/terrain/19/858499/354039.terrain differ diff --git a/public/terrain/19/858499/354040.terrain b/public/terrain/19/858499/354040.terrain new file mode 100644 index 000000000..b1466e501 Binary files /dev/null and b/public/terrain/19/858499/354040.terrain differ diff --git a/public/terrain/19/858499/354041.terrain b/public/terrain/19/858499/354041.terrain new file mode 100644 index 000000000..47054ec6a Binary files /dev/null and b/public/terrain/19/858499/354041.terrain differ diff --git a/public/terrain/19/858499/354042.terrain b/public/terrain/19/858499/354042.terrain new file mode 100644 index 000000000..e99e5195a Binary files /dev/null and b/public/terrain/19/858499/354042.terrain differ diff --git a/public/terrain/19/858499/354043.terrain b/public/terrain/19/858499/354043.terrain new file mode 100644 index 000000000..76d951165 Binary files /dev/null and b/public/terrain/19/858499/354043.terrain differ diff --git a/public/terrain/19/858499/354044.terrain b/public/terrain/19/858499/354044.terrain new file mode 100644 index 000000000..4afb8f0dd Binary files /dev/null and b/public/terrain/19/858499/354044.terrain differ diff --git a/public/terrain/19/858499/354045.terrain b/public/terrain/19/858499/354045.terrain new file mode 100644 index 000000000..62e27a625 Binary files /dev/null and b/public/terrain/19/858499/354045.terrain differ diff --git a/public/terrain/19/858499/354046.terrain b/public/terrain/19/858499/354046.terrain new file mode 100644 index 000000000..1e3a4e06a Binary files /dev/null and b/public/terrain/19/858499/354046.terrain differ diff --git a/public/terrain/19/858499/354047.terrain b/public/terrain/19/858499/354047.terrain new file mode 100644 index 000000000..dd4f21ea2 Binary files /dev/null and b/public/terrain/19/858499/354047.terrain differ diff --git a/public/terrain/19/858499/354048.terrain b/public/terrain/19/858499/354048.terrain new file mode 100644 index 000000000..9dbcdae31 Binary files /dev/null and b/public/terrain/19/858499/354048.terrain differ diff --git a/public/terrain/19/858499/354049.terrain b/public/terrain/19/858499/354049.terrain new file mode 100644 index 000000000..c6e570a9c Binary files /dev/null and b/public/terrain/19/858499/354049.terrain differ diff --git a/public/terrain/19/858499/354050.terrain b/public/terrain/19/858499/354050.terrain new file mode 100644 index 000000000..a00f66dbb Binary files /dev/null and b/public/terrain/19/858499/354050.terrain differ diff --git a/public/terrain/19/858499/354051.terrain b/public/terrain/19/858499/354051.terrain new file mode 100644 index 000000000..366f6c09f Binary files /dev/null and b/public/terrain/19/858499/354051.terrain differ diff --git a/public/terrain/19/858499/354052.terrain b/public/terrain/19/858499/354052.terrain new file mode 100644 index 000000000..474806262 Binary files /dev/null and b/public/terrain/19/858499/354052.terrain differ diff --git a/public/terrain/19/858499/354053.terrain b/public/terrain/19/858499/354053.terrain new file mode 100644 index 000000000..343c3f351 Binary files /dev/null and b/public/terrain/19/858499/354053.terrain differ diff --git a/public/terrain/19/858499/354054.terrain b/public/terrain/19/858499/354054.terrain new file mode 100644 index 000000000..6299b743e Binary files /dev/null and b/public/terrain/19/858499/354054.terrain differ diff --git a/public/terrain/19/858499/354055.terrain b/public/terrain/19/858499/354055.terrain new file mode 100644 index 000000000..b4d58bfcf Binary files /dev/null and b/public/terrain/19/858499/354055.terrain differ diff --git a/public/terrain/19/858499/354056.terrain b/public/terrain/19/858499/354056.terrain new file mode 100644 index 000000000..911ad6fd1 Binary files /dev/null and b/public/terrain/19/858499/354056.terrain differ diff --git a/public/terrain/19/858499/354057.terrain b/public/terrain/19/858499/354057.terrain new file mode 100644 index 000000000..e3b42810a Binary files /dev/null and b/public/terrain/19/858499/354057.terrain differ diff --git a/public/terrain/19/858499/354058.terrain b/public/terrain/19/858499/354058.terrain new file mode 100644 index 000000000..de4c84060 Binary files /dev/null and b/public/terrain/19/858499/354058.terrain differ diff --git a/public/terrain/19/858499/354059.terrain b/public/terrain/19/858499/354059.terrain new file mode 100644 index 000000000..39c08617f Binary files /dev/null and b/public/terrain/19/858499/354059.terrain differ diff --git a/public/terrain/19/858500/353743.terrain b/public/terrain/19/858500/353743.terrain new file mode 100644 index 000000000..d9f44e272 Binary files /dev/null and b/public/terrain/19/858500/353743.terrain differ diff --git a/public/terrain/19/858500/353744.terrain b/public/terrain/19/858500/353744.terrain new file mode 100644 index 000000000..b3035d31b Binary files /dev/null and b/public/terrain/19/858500/353744.terrain differ diff --git a/public/terrain/19/858500/353745.terrain b/public/terrain/19/858500/353745.terrain new file mode 100644 index 000000000..20a3a5b9f Binary files /dev/null and b/public/terrain/19/858500/353745.terrain differ diff --git a/public/terrain/19/858500/353746.terrain b/public/terrain/19/858500/353746.terrain new file mode 100644 index 000000000..cdf5ce115 Binary files /dev/null and b/public/terrain/19/858500/353746.terrain differ diff --git a/public/terrain/19/858500/353747.terrain b/public/terrain/19/858500/353747.terrain new file mode 100644 index 000000000..4e5b1615d Binary files /dev/null and b/public/terrain/19/858500/353747.terrain differ diff --git a/public/terrain/19/858500/353748.terrain b/public/terrain/19/858500/353748.terrain new file mode 100644 index 000000000..88cf4bced Binary files /dev/null and b/public/terrain/19/858500/353748.terrain differ diff --git a/public/terrain/19/858500/353749.terrain b/public/terrain/19/858500/353749.terrain new file mode 100644 index 000000000..45303fae7 Binary files /dev/null and b/public/terrain/19/858500/353749.terrain differ diff --git a/public/terrain/19/858500/353750.terrain b/public/terrain/19/858500/353750.terrain new file mode 100644 index 000000000..222d099cd Binary files /dev/null and b/public/terrain/19/858500/353750.terrain differ diff --git a/public/terrain/19/858500/353751.terrain b/public/terrain/19/858500/353751.terrain new file mode 100644 index 000000000..f91dd02d6 Binary files /dev/null and b/public/terrain/19/858500/353751.terrain differ diff --git a/public/terrain/19/858500/353752.terrain b/public/terrain/19/858500/353752.terrain new file mode 100644 index 000000000..4001c461d Binary files /dev/null and b/public/terrain/19/858500/353752.terrain differ diff --git a/public/terrain/19/858500/353753.terrain b/public/terrain/19/858500/353753.terrain new file mode 100644 index 000000000..dac8cb1de Binary files /dev/null and b/public/terrain/19/858500/353753.terrain differ diff --git a/public/terrain/19/858500/353754.terrain b/public/terrain/19/858500/353754.terrain new file mode 100644 index 000000000..776036307 Binary files /dev/null and b/public/terrain/19/858500/353754.terrain differ diff --git a/public/terrain/19/858500/353755.terrain b/public/terrain/19/858500/353755.terrain new file mode 100644 index 000000000..6358f9ee1 Binary files /dev/null and b/public/terrain/19/858500/353755.terrain differ diff --git a/public/terrain/19/858500/353756.terrain b/public/terrain/19/858500/353756.terrain new file mode 100644 index 000000000..89bfb1c92 Binary files /dev/null and b/public/terrain/19/858500/353756.terrain differ diff --git a/public/terrain/19/858500/353757.terrain b/public/terrain/19/858500/353757.terrain new file mode 100644 index 000000000..d4c7c9ec5 Binary files /dev/null and b/public/terrain/19/858500/353757.terrain differ diff --git a/public/terrain/19/858500/353758.terrain b/public/terrain/19/858500/353758.terrain new file mode 100644 index 000000000..269f182b0 Binary files /dev/null and b/public/terrain/19/858500/353758.terrain differ diff --git a/public/terrain/19/858500/353759.terrain b/public/terrain/19/858500/353759.terrain new file mode 100644 index 000000000..f46e13eec Binary files /dev/null and b/public/terrain/19/858500/353759.terrain differ diff --git a/public/terrain/19/858500/353760.terrain b/public/terrain/19/858500/353760.terrain new file mode 100644 index 000000000..0d2c367ed Binary files /dev/null and b/public/terrain/19/858500/353760.terrain differ diff --git a/public/terrain/19/858500/353761.terrain b/public/terrain/19/858500/353761.terrain new file mode 100644 index 000000000..00c14a77e Binary files /dev/null and b/public/terrain/19/858500/353761.terrain differ diff --git a/public/terrain/19/858500/353762.terrain b/public/terrain/19/858500/353762.terrain new file mode 100644 index 000000000..53aa634dc Binary files /dev/null and b/public/terrain/19/858500/353762.terrain differ diff --git a/public/terrain/19/858500/353763.terrain b/public/terrain/19/858500/353763.terrain new file mode 100644 index 000000000..4885b10dc Binary files /dev/null and b/public/terrain/19/858500/353763.terrain differ diff --git a/public/terrain/19/858500/353764.terrain b/public/terrain/19/858500/353764.terrain new file mode 100644 index 000000000..2b1e0af73 Binary files /dev/null and b/public/terrain/19/858500/353764.terrain differ diff --git a/public/terrain/19/858500/353765.terrain b/public/terrain/19/858500/353765.terrain new file mode 100644 index 000000000..c6896576b Binary files /dev/null and b/public/terrain/19/858500/353765.terrain differ diff --git a/public/terrain/19/858500/353766.terrain b/public/terrain/19/858500/353766.terrain new file mode 100644 index 000000000..1d79fb8e6 Binary files /dev/null and b/public/terrain/19/858500/353766.terrain differ diff --git a/public/terrain/19/858500/353767.terrain b/public/terrain/19/858500/353767.terrain new file mode 100644 index 000000000..6ab31a8d7 Binary files /dev/null and b/public/terrain/19/858500/353767.terrain differ diff --git a/public/terrain/19/858500/353768.terrain b/public/terrain/19/858500/353768.terrain new file mode 100644 index 000000000..1100bebf8 Binary files /dev/null and b/public/terrain/19/858500/353768.terrain differ diff --git a/public/terrain/19/858500/353769.terrain b/public/terrain/19/858500/353769.terrain new file mode 100644 index 000000000..7f7f5fb3d Binary files /dev/null and b/public/terrain/19/858500/353769.terrain differ diff --git a/public/terrain/19/858500/353770.terrain b/public/terrain/19/858500/353770.terrain new file mode 100644 index 000000000..0011072c3 Binary files /dev/null and b/public/terrain/19/858500/353770.terrain differ diff --git a/public/terrain/19/858500/353771.terrain b/public/terrain/19/858500/353771.terrain new file mode 100644 index 000000000..fb09431f4 Binary files /dev/null and b/public/terrain/19/858500/353771.terrain differ diff --git a/public/terrain/19/858500/353772.terrain b/public/terrain/19/858500/353772.terrain new file mode 100644 index 000000000..9f7c31ced Binary files /dev/null and b/public/terrain/19/858500/353772.terrain differ diff --git a/public/terrain/19/858500/353773.terrain b/public/terrain/19/858500/353773.terrain new file mode 100644 index 000000000..8d9074c86 Binary files /dev/null and b/public/terrain/19/858500/353773.terrain differ diff --git a/public/terrain/19/858500/353774.terrain b/public/terrain/19/858500/353774.terrain new file mode 100644 index 000000000..904b774b8 Binary files /dev/null and b/public/terrain/19/858500/353774.terrain differ diff --git a/public/terrain/19/858500/353775.terrain b/public/terrain/19/858500/353775.terrain new file mode 100644 index 000000000..b9ea0d7e2 Binary files /dev/null and b/public/terrain/19/858500/353775.terrain differ diff --git a/public/terrain/19/858500/353776.terrain b/public/terrain/19/858500/353776.terrain new file mode 100644 index 000000000..a2c46b7f5 Binary files /dev/null and b/public/terrain/19/858500/353776.terrain differ diff --git a/public/terrain/19/858500/353777.terrain b/public/terrain/19/858500/353777.terrain new file mode 100644 index 000000000..31bfc4a75 Binary files /dev/null and b/public/terrain/19/858500/353777.terrain differ diff --git a/public/terrain/19/858500/353778.terrain b/public/terrain/19/858500/353778.terrain new file mode 100644 index 000000000..d29b083eb Binary files /dev/null and b/public/terrain/19/858500/353778.terrain differ diff --git a/public/terrain/19/858500/353779.terrain b/public/terrain/19/858500/353779.terrain new file mode 100644 index 000000000..dfc55cac9 Binary files /dev/null and b/public/terrain/19/858500/353779.terrain differ diff --git a/public/terrain/19/858500/353780.terrain b/public/terrain/19/858500/353780.terrain new file mode 100644 index 000000000..f07e690fa Binary files /dev/null and b/public/terrain/19/858500/353780.terrain differ diff --git a/public/terrain/19/858500/353781.terrain b/public/terrain/19/858500/353781.terrain new file mode 100644 index 000000000..2a0fd8a2e Binary files /dev/null and b/public/terrain/19/858500/353781.terrain differ diff --git a/public/terrain/19/858500/353782.terrain b/public/terrain/19/858500/353782.terrain new file mode 100644 index 000000000..5d05da7fc Binary files /dev/null and b/public/terrain/19/858500/353782.terrain differ diff --git a/public/terrain/19/858500/353783.terrain b/public/terrain/19/858500/353783.terrain new file mode 100644 index 000000000..43271f403 Binary files /dev/null and b/public/terrain/19/858500/353783.terrain differ diff --git a/public/terrain/19/858500/353784.terrain b/public/terrain/19/858500/353784.terrain new file mode 100644 index 000000000..a1b178da4 Binary files /dev/null and b/public/terrain/19/858500/353784.terrain differ diff --git a/public/terrain/19/858500/353785.terrain b/public/terrain/19/858500/353785.terrain new file mode 100644 index 000000000..c4892b610 Binary files /dev/null and b/public/terrain/19/858500/353785.terrain differ diff --git a/public/terrain/19/858500/353786.terrain b/public/terrain/19/858500/353786.terrain new file mode 100644 index 000000000..2531b40e8 Binary files /dev/null and b/public/terrain/19/858500/353786.terrain differ diff --git a/public/terrain/19/858500/353787.terrain b/public/terrain/19/858500/353787.terrain new file mode 100644 index 000000000..7178f8d03 Binary files /dev/null and b/public/terrain/19/858500/353787.terrain differ diff --git a/public/terrain/19/858500/353788.terrain b/public/terrain/19/858500/353788.terrain new file mode 100644 index 000000000..46d2f6166 Binary files /dev/null and b/public/terrain/19/858500/353788.terrain differ diff --git a/public/terrain/19/858500/353789.terrain b/public/terrain/19/858500/353789.terrain new file mode 100644 index 000000000..394691117 Binary files /dev/null and b/public/terrain/19/858500/353789.terrain differ diff --git a/public/terrain/19/858500/353790.terrain b/public/terrain/19/858500/353790.terrain new file mode 100644 index 000000000..aeaf0ff2b Binary files /dev/null and b/public/terrain/19/858500/353790.terrain differ diff --git a/public/terrain/19/858500/353791.terrain b/public/terrain/19/858500/353791.terrain new file mode 100644 index 000000000..1bc19e1f1 Binary files /dev/null and b/public/terrain/19/858500/353791.terrain differ diff --git a/public/terrain/19/858500/353792.terrain b/public/terrain/19/858500/353792.terrain new file mode 100644 index 000000000..dcb55a2f5 Binary files /dev/null and b/public/terrain/19/858500/353792.terrain differ diff --git a/public/terrain/19/858500/353793.terrain b/public/terrain/19/858500/353793.terrain new file mode 100644 index 000000000..34fd6b963 Binary files /dev/null and b/public/terrain/19/858500/353793.terrain differ diff --git a/public/terrain/19/858500/353794.terrain b/public/terrain/19/858500/353794.terrain new file mode 100644 index 000000000..5ee108083 Binary files /dev/null and b/public/terrain/19/858500/353794.terrain differ diff --git a/public/terrain/19/858500/353795.terrain b/public/terrain/19/858500/353795.terrain new file mode 100644 index 000000000..ed45514d3 Binary files /dev/null and b/public/terrain/19/858500/353795.terrain differ diff --git a/public/terrain/19/858500/353796.terrain b/public/terrain/19/858500/353796.terrain new file mode 100644 index 000000000..6827b1955 Binary files /dev/null and b/public/terrain/19/858500/353796.terrain differ diff --git a/public/terrain/19/858500/353797.terrain b/public/terrain/19/858500/353797.terrain new file mode 100644 index 000000000..4996a7482 Binary files /dev/null and b/public/terrain/19/858500/353797.terrain differ diff --git a/public/terrain/19/858500/353798.terrain b/public/terrain/19/858500/353798.terrain new file mode 100644 index 000000000..593bd9f72 Binary files /dev/null and b/public/terrain/19/858500/353798.terrain differ diff --git a/public/terrain/19/858500/353799.terrain b/public/terrain/19/858500/353799.terrain new file mode 100644 index 000000000..c06f785c0 Binary files /dev/null and b/public/terrain/19/858500/353799.terrain differ diff --git a/public/terrain/19/858500/353800.terrain b/public/terrain/19/858500/353800.terrain new file mode 100644 index 000000000..13b9734d0 Binary files /dev/null and b/public/terrain/19/858500/353800.terrain differ diff --git a/public/terrain/19/858500/353801.terrain b/public/terrain/19/858500/353801.terrain new file mode 100644 index 000000000..9025d7067 Binary files /dev/null and b/public/terrain/19/858500/353801.terrain differ diff --git a/public/terrain/19/858500/353802.terrain b/public/terrain/19/858500/353802.terrain new file mode 100644 index 000000000..7e0c345d5 Binary files /dev/null and b/public/terrain/19/858500/353802.terrain differ diff --git a/public/terrain/19/858500/353803.terrain b/public/terrain/19/858500/353803.terrain new file mode 100644 index 000000000..5bd85ebec Binary files /dev/null and b/public/terrain/19/858500/353803.terrain differ diff --git a/public/terrain/19/858500/353804.terrain b/public/terrain/19/858500/353804.terrain new file mode 100644 index 000000000..297af1af7 Binary files /dev/null and b/public/terrain/19/858500/353804.terrain differ diff --git a/public/terrain/19/858500/353805.terrain b/public/terrain/19/858500/353805.terrain new file mode 100644 index 000000000..49a481f3b Binary files /dev/null and b/public/terrain/19/858500/353805.terrain differ diff --git a/public/terrain/19/858500/353806.terrain b/public/terrain/19/858500/353806.terrain new file mode 100644 index 000000000..74e29c27d Binary files /dev/null and b/public/terrain/19/858500/353806.terrain differ diff --git a/public/terrain/19/858500/353807.terrain b/public/terrain/19/858500/353807.terrain new file mode 100644 index 000000000..30cb95757 Binary files /dev/null and b/public/terrain/19/858500/353807.terrain differ diff --git a/public/terrain/19/858500/353808.terrain b/public/terrain/19/858500/353808.terrain new file mode 100644 index 000000000..f6504571f Binary files /dev/null and b/public/terrain/19/858500/353808.terrain differ diff --git a/public/terrain/19/858500/353809.terrain b/public/terrain/19/858500/353809.terrain new file mode 100644 index 000000000..a595b00fa Binary files /dev/null and b/public/terrain/19/858500/353809.terrain differ diff --git a/public/terrain/19/858500/353810.terrain b/public/terrain/19/858500/353810.terrain new file mode 100644 index 000000000..58449358d Binary files /dev/null and b/public/terrain/19/858500/353810.terrain differ diff --git a/public/terrain/19/858500/353811.terrain b/public/terrain/19/858500/353811.terrain new file mode 100644 index 000000000..39235a1e2 Binary files /dev/null and b/public/terrain/19/858500/353811.terrain differ diff --git a/public/terrain/19/858500/353812.terrain b/public/terrain/19/858500/353812.terrain new file mode 100644 index 000000000..49bd3bfdd Binary files /dev/null and b/public/terrain/19/858500/353812.terrain differ diff --git a/public/terrain/19/858500/353813.terrain b/public/terrain/19/858500/353813.terrain new file mode 100644 index 000000000..c3604cc1c Binary files /dev/null and b/public/terrain/19/858500/353813.terrain differ diff --git a/public/terrain/19/858500/353814.terrain b/public/terrain/19/858500/353814.terrain new file mode 100644 index 000000000..1e24ae477 Binary files /dev/null and b/public/terrain/19/858500/353814.terrain differ diff --git a/public/terrain/19/858500/353815.terrain b/public/terrain/19/858500/353815.terrain new file mode 100644 index 000000000..f695c000b Binary files /dev/null and b/public/terrain/19/858500/353815.terrain differ diff --git a/public/terrain/19/858500/353816.terrain b/public/terrain/19/858500/353816.terrain new file mode 100644 index 000000000..4c9a2b0df Binary files /dev/null and b/public/terrain/19/858500/353816.terrain differ diff --git a/public/terrain/19/858500/353817.terrain b/public/terrain/19/858500/353817.terrain new file mode 100644 index 000000000..618122601 Binary files /dev/null and b/public/terrain/19/858500/353817.terrain differ diff --git a/public/terrain/19/858500/353818.terrain b/public/terrain/19/858500/353818.terrain new file mode 100644 index 000000000..a296b87ae Binary files /dev/null and b/public/terrain/19/858500/353818.terrain differ diff --git a/public/terrain/19/858500/353819.terrain b/public/terrain/19/858500/353819.terrain new file mode 100644 index 000000000..4b879c68a Binary files /dev/null and b/public/terrain/19/858500/353819.terrain differ diff --git a/public/terrain/19/858500/353820.terrain b/public/terrain/19/858500/353820.terrain new file mode 100644 index 000000000..44db56bd3 Binary files /dev/null and b/public/terrain/19/858500/353820.terrain differ diff --git a/public/terrain/19/858500/353821.terrain b/public/terrain/19/858500/353821.terrain new file mode 100644 index 000000000..8878149b5 Binary files /dev/null and b/public/terrain/19/858500/353821.terrain differ diff --git a/public/terrain/19/858500/353822.terrain b/public/terrain/19/858500/353822.terrain new file mode 100644 index 000000000..5cef33941 Binary files /dev/null and b/public/terrain/19/858500/353822.terrain differ diff --git a/public/terrain/19/858500/353823.terrain b/public/terrain/19/858500/353823.terrain new file mode 100644 index 000000000..ae805d278 Binary files /dev/null and b/public/terrain/19/858500/353823.terrain differ diff --git a/public/terrain/19/858500/353824.terrain b/public/terrain/19/858500/353824.terrain new file mode 100644 index 000000000..0e4bd656e Binary files /dev/null and b/public/terrain/19/858500/353824.terrain differ diff --git a/public/terrain/19/858500/353825.terrain b/public/terrain/19/858500/353825.terrain new file mode 100644 index 000000000..b3d39dc72 Binary files /dev/null and b/public/terrain/19/858500/353825.terrain differ diff --git a/public/terrain/19/858500/353826.terrain b/public/terrain/19/858500/353826.terrain new file mode 100644 index 000000000..15c67d394 Binary files /dev/null and b/public/terrain/19/858500/353826.terrain differ diff --git a/public/terrain/19/858500/353827.terrain b/public/terrain/19/858500/353827.terrain new file mode 100644 index 000000000..c62375dd3 Binary files /dev/null and b/public/terrain/19/858500/353827.terrain differ diff --git a/public/terrain/19/858500/353828.terrain b/public/terrain/19/858500/353828.terrain new file mode 100644 index 000000000..86d2042be Binary files /dev/null and b/public/terrain/19/858500/353828.terrain differ diff --git a/public/terrain/19/858500/353829.terrain b/public/terrain/19/858500/353829.terrain new file mode 100644 index 000000000..1dbcd7ea4 Binary files /dev/null and b/public/terrain/19/858500/353829.terrain differ diff --git a/public/terrain/19/858500/353830.terrain b/public/terrain/19/858500/353830.terrain new file mode 100644 index 000000000..6aa66cc73 Binary files /dev/null and b/public/terrain/19/858500/353830.terrain differ diff --git a/public/terrain/19/858500/353831.terrain b/public/terrain/19/858500/353831.terrain new file mode 100644 index 000000000..38e59406d Binary files /dev/null and b/public/terrain/19/858500/353831.terrain differ diff --git a/public/terrain/19/858500/353832.terrain b/public/terrain/19/858500/353832.terrain new file mode 100644 index 000000000..3f458f68a Binary files /dev/null and b/public/terrain/19/858500/353832.terrain differ diff --git a/public/terrain/19/858500/353833.terrain b/public/terrain/19/858500/353833.terrain new file mode 100644 index 000000000..f831eeb9b Binary files /dev/null and b/public/terrain/19/858500/353833.terrain differ diff --git a/public/terrain/19/858500/353834.terrain b/public/terrain/19/858500/353834.terrain new file mode 100644 index 000000000..406caf22f Binary files /dev/null and b/public/terrain/19/858500/353834.terrain differ diff --git a/public/terrain/19/858500/353835.terrain b/public/terrain/19/858500/353835.terrain new file mode 100644 index 000000000..a963821ee Binary files /dev/null and b/public/terrain/19/858500/353835.terrain differ diff --git a/public/terrain/19/858500/353836.terrain b/public/terrain/19/858500/353836.terrain new file mode 100644 index 000000000..064f9426a Binary files /dev/null and b/public/terrain/19/858500/353836.terrain differ diff --git a/public/terrain/19/858500/353837.terrain b/public/terrain/19/858500/353837.terrain new file mode 100644 index 000000000..4a3a88855 Binary files /dev/null and b/public/terrain/19/858500/353837.terrain differ diff --git a/public/terrain/19/858500/353838.terrain b/public/terrain/19/858500/353838.terrain new file mode 100644 index 000000000..78406e548 Binary files /dev/null and b/public/terrain/19/858500/353838.terrain differ diff --git a/public/terrain/19/858500/353839.terrain b/public/terrain/19/858500/353839.terrain new file mode 100644 index 000000000..27da6f593 Binary files /dev/null and b/public/terrain/19/858500/353839.terrain differ diff --git a/public/terrain/19/858500/353840.terrain b/public/terrain/19/858500/353840.terrain new file mode 100644 index 000000000..8bffcf4d9 Binary files /dev/null and b/public/terrain/19/858500/353840.terrain differ diff --git a/public/terrain/19/858500/353841.terrain b/public/terrain/19/858500/353841.terrain new file mode 100644 index 000000000..19ef659f4 Binary files /dev/null and b/public/terrain/19/858500/353841.terrain differ diff --git a/public/terrain/19/858500/353842.terrain b/public/terrain/19/858500/353842.terrain new file mode 100644 index 000000000..f23622d99 Binary files /dev/null and b/public/terrain/19/858500/353842.terrain differ diff --git a/public/terrain/19/858500/353843.terrain b/public/terrain/19/858500/353843.terrain new file mode 100644 index 000000000..2fc9218bd Binary files /dev/null and b/public/terrain/19/858500/353843.terrain differ diff --git a/public/terrain/19/858500/353844.terrain b/public/terrain/19/858500/353844.terrain new file mode 100644 index 000000000..7a26516f3 Binary files /dev/null and b/public/terrain/19/858500/353844.terrain differ diff --git a/public/terrain/19/858500/353845.terrain b/public/terrain/19/858500/353845.terrain new file mode 100644 index 000000000..dc4303d14 Binary files /dev/null and b/public/terrain/19/858500/353845.terrain differ diff --git a/public/terrain/19/858500/353846.terrain b/public/terrain/19/858500/353846.terrain new file mode 100644 index 000000000..74401e84d Binary files /dev/null and b/public/terrain/19/858500/353846.terrain differ diff --git a/public/terrain/19/858500/353847.terrain b/public/terrain/19/858500/353847.terrain new file mode 100644 index 000000000..93df83149 Binary files /dev/null and b/public/terrain/19/858500/353847.terrain differ diff --git a/public/terrain/19/858500/353848.terrain b/public/terrain/19/858500/353848.terrain new file mode 100644 index 000000000..98faa2da6 Binary files /dev/null and b/public/terrain/19/858500/353848.terrain differ diff --git a/public/terrain/19/858500/353849.terrain b/public/terrain/19/858500/353849.terrain new file mode 100644 index 000000000..4cf882dd7 Binary files /dev/null and b/public/terrain/19/858500/353849.terrain differ diff --git a/public/terrain/19/858500/353850.terrain b/public/terrain/19/858500/353850.terrain new file mode 100644 index 000000000..540139539 Binary files /dev/null and b/public/terrain/19/858500/353850.terrain differ diff --git a/public/terrain/19/858500/353851.terrain b/public/terrain/19/858500/353851.terrain new file mode 100644 index 000000000..7c5a4f19a Binary files /dev/null and b/public/terrain/19/858500/353851.terrain differ diff --git a/public/terrain/19/858500/353852.terrain b/public/terrain/19/858500/353852.terrain new file mode 100644 index 000000000..b1b635b1a Binary files /dev/null and b/public/terrain/19/858500/353852.terrain differ diff --git a/public/terrain/19/858500/353853.terrain b/public/terrain/19/858500/353853.terrain new file mode 100644 index 000000000..515557af3 Binary files /dev/null and b/public/terrain/19/858500/353853.terrain differ diff --git a/public/terrain/19/858500/353854.terrain b/public/terrain/19/858500/353854.terrain new file mode 100644 index 000000000..95743571b Binary files /dev/null and b/public/terrain/19/858500/353854.terrain differ diff --git a/public/terrain/19/858500/353855.terrain b/public/terrain/19/858500/353855.terrain new file mode 100644 index 000000000..4908fc71e Binary files /dev/null and b/public/terrain/19/858500/353855.terrain differ diff --git a/public/terrain/19/858500/353856.terrain b/public/terrain/19/858500/353856.terrain new file mode 100644 index 000000000..719f85a68 Binary files /dev/null and b/public/terrain/19/858500/353856.terrain differ diff --git a/public/terrain/19/858500/353857.terrain b/public/terrain/19/858500/353857.terrain new file mode 100644 index 000000000..8ff3848ab Binary files /dev/null and b/public/terrain/19/858500/353857.terrain differ diff --git a/public/terrain/19/858500/353858.terrain b/public/terrain/19/858500/353858.terrain new file mode 100644 index 000000000..435a4498c Binary files /dev/null and b/public/terrain/19/858500/353858.terrain differ diff --git a/public/terrain/19/858500/353859.terrain b/public/terrain/19/858500/353859.terrain new file mode 100644 index 000000000..ac4a2b1cd Binary files /dev/null and b/public/terrain/19/858500/353859.terrain differ diff --git a/public/terrain/19/858500/353860.terrain b/public/terrain/19/858500/353860.terrain new file mode 100644 index 000000000..26780c371 Binary files /dev/null and b/public/terrain/19/858500/353860.terrain differ diff --git a/public/terrain/19/858500/353861.terrain b/public/terrain/19/858500/353861.terrain new file mode 100644 index 000000000..b60cd242d Binary files /dev/null and b/public/terrain/19/858500/353861.terrain differ diff --git a/public/terrain/19/858500/353862.terrain b/public/terrain/19/858500/353862.terrain new file mode 100644 index 000000000..84a50e76e Binary files /dev/null and b/public/terrain/19/858500/353862.terrain differ diff --git a/public/terrain/19/858500/353863.terrain b/public/terrain/19/858500/353863.terrain new file mode 100644 index 000000000..d7725909a Binary files /dev/null and b/public/terrain/19/858500/353863.terrain differ diff --git a/public/terrain/19/858500/353864.terrain b/public/terrain/19/858500/353864.terrain new file mode 100644 index 000000000..68deadce8 Binary files /dev/null and b/public/terrain/19/858500/353864.terrain differ diff --git a/public/terrain/19/858500/353865.terrain b/public/terrain/19/858500/353865.terrain new file mode 100644 index 000000000..29c31ab8f Binary files /dev/null and b/public/terrain/19/858500/353865.terrain differ diff --git a/public/terrain/19/858500/353866.terrain b/public/terrain/19/858500/353866.terrain new file mode 100644 index 000000000..7d217e3af Binary files /dev/null and b/public/terrain/19/858500/353866.terrain differ diff --git a/public/terrain/19/858500/353867.terrain b/public/terrain/19/858500/353867.terrain new file mode 100644 index 000000000..4b87b13a9 Binary files /dev/null and b/public/terrain/19/858500/353867.terrain differ diff --git a/public/terrain/19/858500/353868.terrain b/public/terrain/19/858500/353868.terrain new file mode 100644 index 000000000..ffffce9eb Binary files /dev/null and b/public/terrain/19/858500/353868.terrain differ diff --git a/public/terrain/19/858500/353869.terrain b/public/terrain/19/858500/353869.terrain new file mode 100644 index 000000000..17c27a55a Binary files /dev/null and b/public/terrain/19/858500/353869.terrain differ diff --git a/public/terrain/19/858500/353870.terrain b/public/terrain/19/858500/353870.terrain new file mode 100644 index 000000000..cad6eade9 Binary files /dev/null and b/public/terrain/19/858500/353870.terrain differ diff --git a/public/terrain/19/858500/353871.terrain b/public/terrain/19/858500/353871.terrain new file mode 100644 index 000000000..0fb6326e2 Binary files /dev/null and b/public/terrain/19/858500/353871.terrain differ diff --git a/public/terrain/19/858500/353872.terrain b/public/terrain/19/858500/353872.terrain new file mode 100644 index 000000000..32f03840d Binary files /dev/null and b/public/terrain/19/858500/353872.terrain differ diff --git a/public/terrain/19/858500/353873.terrain b/public/terrain/19/858500/353873.terrain new file mode 100644 index 000000000..a988b19b6 Binary files /dev/null and b/public/terrain/19/858500/353873.terrain differ diff --git a/public/terrain/19/858500/353874.terrain b/public/terrain/19/858500/353874.terrain new file mode 100644 index 000000000..b9bea8a02 Binary files /dev/null and b/public/terrain/19/858500/353874.terrain differ diff --git a/public/terrain/19/858500/353875.terrain b/public/terrain/19/858500/353875.terrain new file mode 100644 index 000000000..413d247c4 Binary files /dev/null and b/public/terrain/19/858500/353875.terrain differ diff --git a/public/terrain/19/858500/353876.terrain b/public/terrain/19/858500/353876.terrain new file mode 100644 index 000000000..a16ffadc8 Binary files /dev/null and b/public/terrain/19/858500/353876.terrain differ diff --git a/public/terrain/19/858500/353877.terrain b/public/terrain/19/858500/353877.terrain new file mode 100644 index 000000000..b740cb2a2 Binary files /dev/null and b/public/terrain/19/858500/353877.terrain differ diff --git a/public/terrain/19/858500/353878.terrain b/public/terrain/19/858500/353878.terrain new file mode 100644 index 000000000..4a3f090ee Binary files /dev/null and b/public/terrain/19/858500/353878.terrain differ diff --git a/public/terrain/19/858500/353879.terrain b/public/terrain/19/858500/353879.terrain new file mode 100644 index 000000000..d9a762cd3 Binary files /dev/null and b/public/terrain/19/858500/353879.terrain differ diff --git a/public/terrain/19/858500/353880.terrain b/public/terrain/19/858500/353880.terrain new file mode 100644 index 000000000..d3591cb78 Binary files /dev/null and b/public/terrain/19/858500/353880.terrain differ diff --git a/public/terrain/19/858500/353881.terrain b/public/terrain/19/858500/353881.terrain new file mode 100644 index 000000000..bc8e0c582 Binary files /dev/null and b/public/terrain/19/858500/353881.terrain differ diff --git a/public/terrain/19/858500/353882.terrain b/public/terrain/19/858500/353882.terrain new file mode 100644 index 000000000..c597a5ddb Binary files /dev/null and b/public/terrain/19/858500/353882.terrain differ diff --git a/public/terrain/19/858500/353883.terrain b/public/terrain/19/858500/353883.terrain new file mode 100644 index 000000000..5aa448869 Binary files /dev/null and b/public/terrain/19/858500/353883.terrain differ diff --git a/public/terrain/19/858500/353884.terrain b/public/terrain/19/858500/353884.terrain new file mode 100644 index 000000000..187e4ad84 Binary files /dev/null and b/public/terrain/19/858500/353884.terrain differ diff --git a/public/terrain/19/858500/353885.terrain b/public/terrain/19/858500/353885.terrain new file mode 100644 index 000000000..fc169c9bd Binary files /dev/null and b/public/terrain/19/858500/353885.terrain differ diff --git a/public/terrain/19/858500/353886.terrain b/public/terrain/19/858500/353886.terrain new file mode 100644 index 000000000..569d3d993 Binary files /dev/null and b/public/terrain/19/858500/353886.terrain differ diff --git a/public/terrain/19/858500/353887.terrain b/public/terrain/19/858500/353887.terrain new file mode 100644 index 000000000..9e707b0fa Binary files /dev/null and b/public/terrain/19/858500/353887.terrain differ diff --git a/public/terrain/19/858500/353888.terrain b/public/terrain/19/858500/353888.terrain new file mode 100644 index 000000000..2dabb01e8 Binary files /dev/null and b/public/terrain/19/858500/353888.terrain differ diff --git a/public/terrain/19/858500/353889.terrain b/public/terrain/19/858500/353889.terrain new file mode 100644 index 000000000..0a9aeac06 Binary files /dev/null and b/public/terrain/19/858500/353889.terrain differ diff --git a/public/terrain/19/858500/353890.terrain b/public/terrain/19/858500/353890.terrain new file mode 100644 index 000000000..fccf5a394 Binary files /dev/null and b/public/terrain/19/858500/353890.terrain differ diff --git a/public/terrain/19/858500/353891.terrain b/public/terrain/19/858500/353891.terrain new file mode 100644 index 000000000..158e7f236 Binary files /dev/null and b/public/terrain/19/858500/353891.terrain differ diff --git a/public/terrain/19/858500/353892.terrain b/public/terrain/19/858500/353892.terrain new file mode 100644 index 000000000..8a00eb1cc Binary files /dev/null and b/public/terrain/19/858500/353892.terrain differ diff --git a/public/terrain/19/858500/353893.terrain b/public/terrain/19/858500/353893.terrain new file mode 100644 index 000000000..6d73d6adf Binary files /dev/null and b/public/terrain/19/858500/353893.terrain differ diff --git a/public/terrain/19/858500/353894.terrain b/public/terrain/19/858500/353894.terrain new file mode 100644 index 000000000..da0b78f88 Binary files /dev/null and b/public/terrain/19/858500/353894.terrain differ diff --git a/public/terrain/19/858500/353895.terrain b/public/terrain/19/858500/353895.terrain new file mode 100644 index 000000000..de383605e Binary files /dev/null and b/public/terrain/19/858500/353895.terrain differ diff --git a/public/terrain/19/858500/353896.terrain b/public/terrain/19/858500/353896.terrain new file mode 100644 index 000000000..9422df826 Binary files /dev/null and b/public/terrain/19/858500/353896.terrain differ diff --git a/public/terrain/19/858500/353897.terrain b/public/terrain/19/858500/353897.terrain new file mode 100644 index 000000000..fe4a72024 Binary files /dev/null and b/public/terrain/19/858500/353897.terrain differ diff --git a/public/terrain/19/858500/353898.terrain b/public/terrain/19/858500/353898.terrain new file mode 100644 index 000000000..1d79b9166 Binary files /dev/null and b/public/terrain/19/858500/353898.terrain differ diff --git a/public/terrain/19/858500/353899.terrain b/public/terrain/19/858500/353899.terrain new file mode 100644 index 000000000..612afbc3e Binary files /dev/null and b/public/terrain/19/858500/353899.terrain differ diff --git a/public/terrain/19/858500/353900.terrain b/public/terrain/19/858500/353900.terrain new file mode 100644 index 000000000..fabb601f8 Binary files /dev/null and b/public/terrain/19/858500/353900.terrain differ diff --git a/public/terrain/19/858500/353901.terrain b/public/terrain/19/858500/353901.terrain new file mode 100644 index 000000000..791c5cdcb Binary files /dev/null and b/public/terrain/19/858500/353901.terrain differ diff --git a/public/terrain/19/858500/353902.terrain b/public/terrain/19/858500/353902.terrain new file mode 100644 index 000000000..46a1f113d Binary files /dev/null and b/public/terrain/19/858500/353902.terrain differ diff --git a/public/terrain/19/858500/353903.terrain b/public/terrain/19/858500/353903.terrain new file mode 100644 index 000000000..9518b0871 Binary files /dev/null and b/public/terrain/19/858500/353903.terrain differ diff --git a/public/terrain/19/858500/353904.terrain b/public/terrain/19/858500/353904.terrain new file mode 100644 index 000000000..9d1021989 Binary files /dev/null and b/public/terrain/19/858500/353904.terrain differ diff --git a/public/terrain/19/858500/353905.terrain b/public/terrain/19/858500/353905.terrain new file mode 100644 index 000000000..f905a9b62 Binary files /dev/null and b/public/terrain/19/858500/353905.terrain differ diff --git a/public/terrain/19/858500/353906.terrain b/public/terrain/19/858500/353906.terrain new file mode 100644 index 000000000..9380b08af Binary files /dev/null and b/public/terrain/19/858500/353906.terrain differ diff --git a/public/terrain/19/858500/353907.terrain b/public/terrain/19/858500/353907.terrain new file mode 100644 index 000000000..0575b6838 Binary files /dev/null and b/public/terrain/19/858500/353907.terrain differ diff --git a/public/terrain/19/858500/353908.terrain b/public/terrain/19/858500/353908.terrain new file mode 100644 index 000000000..1109d72c7 Binary files /dev/null and b/public/terrain/19/858500/353908.terrain differ diff --git a/public/terrain/19/858500/353909.terrain b/public/terrain/19/858500/353909.terrain new file mode 100644 index 000000000..9935a562f Binary files /dev/null and b/public/terrain/19/858500/353909.terrain differ diff --git a/public/terrain/19/858500/353910.terrain b/public/terrain/19/858500/353910.terrain new file mode 100644 index 000000000..062a05874 Binary files /dev/null and b/public/terrain/19/858500/353910.terrain differ diff --git a/public/terrain/19/858500/353911.terrain b/public/terrain/19/858500/353911.terrain new file mode 100644 index 000000000..e71f00e2a Binary files /dev/null and b/public/terrain/19/858500/353911.terrain differ diff --git a/public/terrain/19/858500/353912.terrain b/public/terrain/19/858500/353912.terrain new file mode 100644 index 000000000..1a117b70a Binary files /dev/null and b/public/terrain/19/858500/353912.terrain differ diff --git a/public/terrain/19/858500/353913.terrain b/public/terrain/19/858500/353913.terrain new file mode 100644 index 000000000..e4ba57181 Binary files /dev/null and b/public/terrain/19/858500/353913.terrain differ diff --git a/public/terrain/19/858500/353914.terrain b/public/terrain/19/858500/353914.terrain new file mode 100644 index 000000000..e8548628b Binary files /dev/null and b/public/terrain/19/858500/353914.terrain differ diff --git a/public/terrain/19/858500/353915.terrain b/public/terrain/19/858500/353915.terrain new file mode 100644 index 000000000..89b808241 Binary files /dev/null and b/public/terrain/19/858500/353915.terrain differ diff --git a/public/terrain/19/858500/353916.terrain b/public/terrain/19/858500/353916.terrain new file mode 100644 index 000000000..84706a0d6 Binary files /dev/null and b/public/terrain/19/858500/353916.terrain differ diff --git a/public/terrain/19/858500/353917.terrain b/public/terrain/19/858500/353917.terrain new file mode 100644 index 000000000..eca80ca65 Binary files /dev/null and b/public/terrain/19/858500/353917.terrain differ diff --git a/public/terrain/19/858500/353918.terrain b/public/terrain/19/858500/353918.terrain new file mode 100644 index 000000000..105df9895 Binary files /dev/null and b/public/terrain/19/858500/353918.terrain differ diff --git a/public/terrain/19/858500/353919.terrain b/public/terrain/19/858500/353919.terrain new file mode 100644 index 000000000..eb3b25c40 Binary files /dev/null and b/public/terrain/19/858500/353919.terrain differ diff --git a/public/terrain/19/858500/353920.terrain b/public/terrain/19/858500/353920.terrain new file mode 100644 index 000000000..34e9d0a2d Binary files /dev/null and b/public/terrain/19/858500/353920.terrain differ diff --git a/public/terrain/19/858500/353921.terrain b/public/terrain/19/858500/353921.terrain new file mode 100644 index 000000000..93f9dd669 Binary files /dev/null and b/public/terrain/19/858500/353921.terrain differ diff --git a/public/terrain/19/858500/353922.terrain b/public/terrain/19/858500/353922.terrain new file mode 100644 index 000000000..9e5d9fae2 Binary files /dev/null and b/public/terrain/19/858500/353922.terrain differ diff --git a/public/terrain/19/858500/353923.terrain b/public/terrain/19/858500/353923.terrain new file mode 100644 index 000000000..caa55b51f Binary files /dev/null and b/public/terrain/19/858500/353923.terrain differ diff --git a/public/terrain/19/858500/353924.terrain b/public/terrain/19/858500/353924.terrain new file mode 100644 index 000000000..ccaa71d3c Binary files /dev/null and b/public/terrain/19/858500/353924.terrain differ diff --git a/public/terrain/19/858500/353925.terrain b/public/terrain/19/858500/353925.terrain new file mode 100644 index 000000000..aaabf5284 Binary files /dev/null and b/public/terrain/19/858500/353925.terrain differ diff --git a/public/terrain/19/858500/353926.terrain b/public/terrain/19/858500/353926.terrain new file mode 100644 index 000000000..814454f45 Binary files /dev/null and b/public/terrain/19/858500/353926.terrain differ diff --git a/public/terrain/19/858500/353927.terrain b/public/terrain/19/858500/353927.terrain new file mode 100644 index 000000000..eaea3111f Binary files /dev/null and b/public/terrain/19/858500/353927.terrain differ diff --git a/public/terrain/19/858500/353928.terrain b/public/terrain/19/858500/353928.terrain new file mode 100644 index 000000000..b115137cc Binary files /dev/null and b/public/terrain/19/858500/353928.terrain differ diff --git a/public/terrain/19/858500/353929.terrain b/public/terrain/19/858500/353929.terrain new file mode 100644 index 000000000..165388b78 Binary files /dev/null and b/public/terrain/19/858500/353929.terrain differ diff --git a/public/terrain/19/858500/353930.terrain b/public/terrain/19/858500/353930.terrain new file mode 100644 index 000000000..5f1d59de9 Binary files /dev/null and b/public/terrain/19/858500/353930.terrain differ diff --git a/public/terrain/19/858500/353931.terrain b/public/terrain/19/858500/353931.terrain new file mode 100644 index 000000000..7b894a977 Binary files /dev/null and b/public/terrain/19/858500/353931.terrain differ diff --git a/public/terrain/19/858500/353932.terrain b/public/terrain/19/858500/353932.terrain new file mode 100644 index 000000000..2a8dcbe70 Binary files /dev/null and b/public/terrain/19/858500/353932.terrain differ diff --git a/public/terrain/19/858500/353933.terrain b/public/terrain/19/858500/353933.terrain new file mode 100644 index 000000000..37711b606 Binary files /dev/null and b/public/terrain/19/858500/353933.terrain differ diff --git a/public/terrain/19/858500/353934.terrain b/public/terrain/19/858500/353934.terrain new file mode 100644 index 000000000..297fb936c Binary files /dev/null and b/public/terrain/19/858500/353934.terrain differ diff --git a/public/terrain/19/858500/353935.terrain b/public/terrain/19/858500/353935.terrain new file mode 100644 index 000000000..fda579209 Binary files /dev/null and b/public/terrain/19/858500/353935.terrain differ diff --git a/public/terrain/19/858500/353936.terrain b/public/terrain/19/858500/353936.terrain new file mode 100644 index 000000000..6bd971d3d Binary files /dev/null and b/public/terrain/19/858500/353936.terrain differ diff --git a/public/terrain/19/858500/353937.terrain b/public/terrain/19/858500/353937.terrain new file mode 100644 index 000000000..86ed68293 Binary files /dev/null and b/public/terrain/19/858500/353937.terrain differ diff --git a/public/terrain/19/858500/353938.terrain b/public/terrain/19/858500/353938.terrain new file mode 100644 index 000000000..efac7bb56 Binary files /dev/null and b/public/terrain/19/858500/353938.terrain differ diff --git a/public/terrain/19/858500/353939.terrain b/public/terrain/19/858500/353939.terrain new file mode 100644 index 000000000..0a7d489a5 Binary files /dev/null and b/public/terrain/19/858500/353939.terrain differ diff --git a/public/terrain/19/858500/353940.terrain b/public/terrain/19/858500/353940.terrain new file mode 100644 index 000000000..0a80cad0e Binary files /dev/null and b/public/terrain/19/858500/353940.terrain differ diff --git a/public/terrain/19/858500/353941.terrain b/public/terrain/19/858500/353941.terrain new file mode 100644 index 000000000..898e5d323 Binary files /dev/null and b/public/terrain/19/858500/353941.terrain differ diff --git a/public/terrain/19/858500/353942.terrain b/public/terrain/19/858500/353942.terrain new file mode 100644 index 000000000..018f105a8 Binary files /dev/null and b/public/terrain/19/858500/353942.terrain differ diff --git a/public/terrain/19/858500/353943.terrain b/public/terrain/19/858500/353943.terrain new file mode 100644 index 000000000..b189fb713 Binary files /dev/null and b/public/terrain/19/858500/353943.terrain differ diff --git a/public/terrain/19/858500/353944.terrain b/public/terrain/19/858500/353944.terrain new file mode 100644 index 000000000..286bf1122 Binary files /dev/null and b/public/terrain/19/858500/353944.terrain differ diff --git a/public/terrain/19/858500/353945.terrain b/public/terrain/19/858500/353945.terrain new file mode 100644 index 000000000..cefdca5b8 Binary files /dev/null and b/public/terrain/19/858500/353945.terrain differ diff --git a/public/terrain/19/858500/353946.terrain b/public/terrain/19/858500/353946.terrain new file mode 100644 index 000000000..1bc34c58d Binary files /dev/null and b/public/terrain/19/858500/353946.terrain differ diff --git a/public/terrain/19/858500/353947.terrain b/public/terrain/19/858500/353947.terrain new file mode 100644 index 000000000..f8991b68a Binary files /dev/null and b/public/terrain/19/858500/353947.terrain differ diff --git a/public/terrain/19/858500/353948.terrain b/public/terrain/19/858500/353948.terrain new file mode 100644 index 000000000..96e75c1b0 Binary files /dev/null and b/public/terrain/19/858500/353948.terrain differ diff --git a/public/terrain/19/858500/353949.terrain b/public/terrain/19/858500/353949.terrain new file mode 100644 index 000000000..3271d0c99 Binary files /dev/null and b/public/terrain/19/858500/353949.terrain differ diff --git a/public/terrain/19/858500/353950.terrain b/public/terrain/19/858500/353950.terrain new file mode 100644 index 000000000..39e1ffbd2 Binary files /dev/null and b/public/terrain/19/858500/353950.terrain differ diff --git a/public/terrain/19/858500/353951.terrain b/public/terrain/19/858500/353951.terrain new file mode 100644 index 000000000..d33fcc0f7 Binary files /dev/null and b/public/terrain/19/858500/353951.terrain differ diff --git a/public/terrain/19/858500/353952.terrain b/public/terrain/19/858500/353952.terrain new file mode 100644 index 000000000..084ab2b80 Binary files /dev/null and b/public/terrain/19/858500/353952.terrain differ diff --git a/public/terrain/19/858500/353953.terrain b/public/terrain/19/858500/353953.terrain new file mode 100644 index 000000000..508281a53 Binary files /dev/null and b/public/terrain/19/858500/353953.terrain differ diff --git a/public/terrain/19/858500/353954.terrain b/public/terrain/19/858500/353954.terrain new file mode 100644 index 000000000..d1e5b3ce4 Binary files /dev/null and b/public/terrain/19/858500/353954.terrain differ diff --git a/public/terrain/19/858500/353955.terrain b/public/terrain/19/858500/353955.terrain new file mode 100644 index 000000000..f287ea3dc Binary files /dev/null and b/public/terrain/19/858500/353955.terrain differ diff --git a/public/terrain/19/858500/353956.terrain b/public/terrain/19/858500/353956.terrain new file mode 100644 index 000000000..52557044b Binary files /dev/null and b/public/terrain/19/858500/353956.terrain differ diff --git a/public/terrain/19/858500/353957.terrain b/public/terrain/19/858500/353957.terrain new file mode 100644 index 000000000..b9662eef2 Binary files /dev/null and b/public/terrain/19/858500/353957.terrain differ diff --git a/public/terrain/19/858500/353958.terrain b/public/terrain/19/858500/353958.terrain new file mode 100644 index 000000000..5fb807ad3 Binary files /dev/null and b/public/terrain/19/858500/353958.terrain differ diff --git a/public/terrain/19/858500/353959.terrain b/public/terrain/19/858500/353959.terrain new file mode 100644 index 000000000..8d9aaabf7 Binary files /dev/null and b/public/terrain/19/858500/353959.terrain differ diff --git a/public/terrain/19/858500/353960.terrain b/public/terrain/19/858500/353960.terrain new file mode 100644 index 000000000..441bda6f6 Binary files /dev/null and b/public/terrain/19/858500/353960.terrain differ diff --git a/public/terrain/19/858500/353961.terrain b/public/terrain/19/858500/353961.terrain new file mode 100644 index 000000000..06d9224a2 Binary files /dev/null and b/public/terrain/19/858500/353961.terrain differ diff --git a/public/terrain/19/858500/353962.terrain b/public/terrain/19/858500/353962.terrain new file mode 100644 index 000000000..491f7f96e Binary files /dev/null and b/public/terrain/19/858500/353962.terrain differ diff --git a/public/terrain/19/858500/353963.terrain b/public/terrain/19/858500/353963.terrain new file mode 100644 index 000000000..c651fd28e Binary files /dev/null and b/public/terrain/19/858500/353963.terrain differ diff --git a/public/terrain/19/858500/353964.terrain b/public/terrain/19/858500/353964.terrain new file mode 100644 index 000000000..9788cc245 Binary files /dev/null and b/public/terrain/19/858500/353964.terrain differ diff --git a/public/terrain/19/858500/353965.terrain b/public/terrain/19/858500/353965.terrain new file mode 100644 index 000000000..34ff9f61e Binary files /dev/null and b/public/terrain/19/858500/353965.terrain differ diff --git a/public/terrain/19/858500/353966.terrain b/public/terrain/19/858500/353966.terrain new file mode 100644 index 000000000..86a0f5ddf Binary files /dev/null and b/public/terrain/19/858500/353966.terrain differ diff --git a/public/terrain/19/858500/353967.terrain b/public/terrain/19/858500/353967.terrain new file mode 100644 index 000000000..d1c41804e Binary files /dev/null and b/public/terrain/19/858500/353967.terrain differ diff --git a/public/terrain/19/858500/353968.terrain b/public/terrain/19/858500/353968.terrain new file mode 100644 index 000000000..79149c025 Binary files /dev/null and b/public/terrain/19/858500/353968.terrain differ diff --git a/public/terrain/19/858500/353969.terrain b/public/terrain/19/858500/353969.terrain new file mode 100644 index 000000000..4ffb1e43c Binary files /dev/null and b/public/terrain/19/858500/353969.terrain differ diff --git a/public/terrain/19/858500/353970.terrain b/public/terrain/19/858500/353970.terrain new file mode 100644 index 000000000..7283c892c Binary files /dev/null and b/public/terrain/19/858500/353970.terrain differ diff --git a/public/terrain/19/858500/353971.terrain b/public/terrain/19/858500/353971.terrain new file mode 100644 index 000000000..7390d258d Binary files /dev/null and b/public/terrain/19/858500/353971.terrain differ diff --git a/public/terrain/19/858500/353972.terrain b/public/terrain/19/858500/353972.terrain new file mode 100644 index 000000000..2f6f18fd6 Binary files /dev/null and b/public/terrain/19/858500/353972.terrain differ diff --git a/public/terrain/19/858500/353973.terrain b/public/terrain/19/858500/353973.terrain new file mode 100644 index 000000000..d5fc2f431 Binary files /dev/null and b/public/terrain/19/858500/353973.terrain differ diff --git a/public/terrain/19/858500/353974.terrain b/public/terrain/19/858500/353974.terrain new file mode 100644 index 000000000..6314d421e Binary files /dev/null and b/public/terrain/19/858500/353974.terrain differ diff --git a/public/terrain/19/858500/353975.terrain b/public/terrain/19/858500/353975.terrain new file mode 100644 index 000000000..44de09910 Binary files /dev/null and b/public/terrain/19/858500/353975.terrain differ diff --git a/public/terrain/19/858500/353976.terrain b/public/terrain/19/858500/353976.terrain new file mode 100644 index 000000000..f2bc7680f Binary files /dev/null and b/public/terrain/19/858500/353976.terrain differ diff --git a/public/terrain/19/858500/353977.terrain b/public/terrain/19/858500/353977.terrain new file mode 100644 index 000000000..b284e4302 Binary files /dev/null and b/public/terrain/19/858500/353977.terrain differ diff --git a/public/terrain/19/858500/353978.terrain b/public/terrain/19/858500/353978.terrain new file mode 100644 index 000000000..9f6c2be8d Binary files /dev/null and b/public/terrain/19/858500/353978.terrain differ diff --git a/public/terrain/19/858500/353979.terrain b/public/terrain/19/858500/353979.terrain new file mode 100644 index 000000000..135b75b49 Binary files /dev/null and b/public/terrain/19/858500/353979.terrain differ diff --git a/public/terrain/19/858500/353980.terrain b/public/terrain/19/858500/353980.terrain new file mode 100644 index 000000000..57c03750c Binary files /dev/null and b/public/terrain/19/858500/353980.terrain differ diff --git a/public/terrain/19/858500/353981.terrain b/public/terrain/19/858500/353981.terrain new file mode 100644 index 000000000..28053d966 Binary files /dev/null and b/public/terrain/19/858500/353981.terrain differ diff --git a/public/terrain/19/858500/353982.terrain b/public/terrain/19/858500/353982.terrain new file mode 100644 index 000000000..4c2087919 Binary files /dev/null and b/public/terrain/19/858500/353982.terrain differ diff --git a/public/terrain/19/858500/353983.terrain b/public/terrain/19/858500/353983.terrain new file mode 100644 index 000000000..51138a435 Binary files /dev/null and b/public/terrain/19/858500/353983.terrain differ diff --git a/public/terrain/19/858500/353984.terrain b/public/terrain/19/858500/353984.terrain new file mode 100644 index 000000000..6f44b6fa6 Binary files /dev/null and b/public/terrain/19/858500/353984.terrain differ diff --git a/public/terrain/19/858500/353985.terrain b/public/terrain/19/858500/353985.terrain new file mode 100644 index 000000000..fd903d656 Binary files /dev/null and b/public/terrain/19/858500/353985.terrain differ diff --git a/public/terrain/19/858500/353986.terrain b/public/terrain/19/858500/353986.terrain new file mode 100644 index 000000000..07333de12 Binary files /dev/null and b/public/terrain/19/858500/353986.terrain differ diff --git a/public/terrain/19/858500/353987.terrain b/public/terrain/19/858500/353987.terrain new file mode 100644 index 000000000..acc10a184 Binary files /dev/null and b/public/terrain/19/858500/353987.terrain differ diff --git a/public/terrain/19/858500/353988.terrain b/public/terrain/19/858500/353988.terrain new file mode 100644 index 000000000..bb9693fde Binary files /dev/null and b/public/terrain/19/858500/353988.terrain differ diff --git a/public/terrain/19/858500/353989.terrain b/public/terrain/19/858500/353989.terrain new file mode 100644 index 000000000..7e6535e46 Binary files /dev/null and b/public/terrain/19/858500/353989.terrain differ diff --git a/public/terrain/19/858500/353990.terrain b/public/terrain/19/858500/353990.terrain new file mode 100644 index 000000000..324737de2 Binary files /dev/null and b/public/terrain/19/858500/353990.terrain differ diff --git a/public/terrain/19/858500/353991.terrain b/public/terrain/19/858500/353991.terrain new file mode 100644 index 000000000..de2ae4eae Binary files /dev/null and b/public/terrain/19/858500/353991.terrain differ diff --git a/public/terrain/19/858500/353992.terrain b/public/terrain/19/858500/353992.terrain new file mode 100644 index 000000000..68729f080 Binary files /dev/null and b/public/terrain/19/858500/353992.terrain differ diff --git a/public/terrain/19/858500/353993.terrain b/public/terrain/19/858500/353993.terrain new file mode 100644 index 000000000..0ecf4b767 Binary files /dev/null and b/public/terrain/19/858500/353993.terrain differ diff --git a/public/terrain/19/858500/353994.terrain b/public/terrain/19/858500/353994.terrain new file mode 100644 index 000000000..4a28225d4 Binary files /dev/null and b/public/terrain/19/858500/353994.terrain differ diff --git a/public/terrain/19/858500/353995.terrain b/public/terrain/19/858500/353995.terrain new file mode 100644 index 000000000..e84bb60c9 Binary files /dev/null and b/public/terrain/19/858500/353995.terrain differ diff --git a/public/terrain/19/858500/353996.terrain b/public/terrain/19/858500/353996.terrain new file mode 100644 index 000000000..59fbb3499 Binary files /dev/null and b/public/terrain/19/858500/353996.terrain differ diff --git a/public/terrain/19/858500/353997.terrain b/public/terrain/19/858500/353997.terrain new file mode 100644 index 000000000..7645a4985 Binary files /dev/null and b/public/terrain/19/858500/353997.terrain differ diff --git a/public/terrain/19/858500/353998.terrain b/public/terrain/19/858500/353998.terrain new file mode 100644 index 000000000..6b34c9050 Binary files /dev/null and b/public/terrain/19/858500/353998.terrain differ diff --git a/public/terrain/19/858500/353999.terrain b/public/terrain/19/858500/353999.terrain new file mode 100644 index 000000000..5ce9ef5c8 Binary files /dev/null and b/public/terrain/19/858500/353999.terrain differ diff --git a/public/terrain/19/858500/354000.terrain b/public/terrain/19/858500/354000.terrain new file mode 100644 index 000000000..a92088407 Binary files /dev/null and b/public/terrain/19/858500/354000.terrain differ diff --git a/public/terrain/19/858500/354001.terrain b/public/terrain/19/858500/354001.terrain new file mode 100644 index 000000000..b20687f43 Binary files /dev/null and b/public/terrain/19/858500/354001.terrain differ diff --git a/public/terrain/19/858500/354002.terrain b/public/terrain/19/858500/354002.terrain new file mode 100644 index 000000000..24bea7eb4 Binary files /dev/null and b/public/terrain/19/858500/354002.terrain differ diff --git a/public/terrain/19/858500/354003.terrain b/public/terrain/19/858500/354003.terrain new file mode 100644 index 000000000..2e6e1b354 Binary files /dev/null and b/public/terrain/19/858500/354003.terrain differ diff --git a/public/terrain/19/858500/354004.terrain b/public/terrain/19/858500/354004.terrain new file mode 100644 index 000000000..09c6edf0e Binary files /dev/null and b/public/terrain/19/858500/354004.terrain differ diff --git a/public/terrain/19/858500/354005.terrain b/public/terrain/19/858500/354005.terrain new file mode 100644 index 000000000..a44a7ac5b Binary files /dev/null and b/public/terrain/19/858500/354005.terrain differ diff --git a/public/terrain/19/858500/354006.terrain b/public/terrain/19/858500/354006.terrain new file mode 100644 index 000000000..580614955 Binary files /dev/null and b/public/terrain/19/858500/354006.terrain differ diff --git a/public/terrain/19/858500/354007.terrain b/public/terrain/19/858500/354007.terrain new file mode 100644 index 000000000..7285cdbd7 Binary files /dev/null and b/public/terrain/19/858500/354007.terrain differ diff --git a/public/terrain/19/858500/354008.terrain b/public/terrain/19/858500/354008.terrain new file mode 100644 index 000000000..6a5cc74a0 Binary files /dev/null and b/public/terrain/19/858500/354008.terrain differ diff --git a/public/terrain/19/858500/354009.terrain b/public/terrain/19/858500/354009.terrain new file mode 100644 index 000000000..b49ff23c2 Binary files /dev/null and b/public/terrain/19/858500/354009.terrain differ diff --git a/public/terrain/19/858500/354010.terrain b/public/terrain/19/858500/354010.terrain new file mode 100644 index 000000000..e781040de Binary files /dev/null and b/public/terrain/19/858500/354010.terrain differ diff --git a/public/terrain/19/858500/354011.terrain b/public/terrain/19/858500/354011.terrain new file mode 100644 index 000000000..cc2c28c0e Binary files /dev/null and b/public/terrain/19/858500/354011.terrain differ diff --git a/public/terrain/19/858500/354012.terrain b/public/terrain/19/858500/354012.terrain new file mode 100644 index 000000000..9ea71e447 Binary files /dev/null and b/public/terrain/19/858500/354012.terrain differ diff --git a/public/terrain/19/858500/354013.terrain b/public/terrain/19/858500/354013.terrain new file mode 100644 index 000000000..75ae077fa Binary files /dev/null and b/public/terrain/19/858500/354013.terrain differ diff --git a/public/terrain/19/858500/354014.terrain b/public/terrain/19/858500/354014.terrain new file mode 100644 index 000000000..afadc2feb Binary files /dev/null and b/public/terrain/19/858500/354014.terrain differ diff --git a/public/terrain/19/858500/354015.terrain b/public/terrain/19/858500/354015.terrain new file mode 100644 index 000000000..469c80896 Binary files /dev/null and b/public/terrain/19/858500/354015.terrain differ diff --git a/public/terrain/19/858500/354016.terrain b/public/terrain/19/858500/354016.terrain new file mode 100644 index 000000000..82f1e9168 Binary files /dev/null and b/public/terrain/19/858500/354016.terrain differ diff --git a/public/terrain/19/858500/354017.terrain b/public/terrain/19/858500/354017.terrain new file mode 100644 index 000000000..421853987 Binary files /dev/null and b/public/terrain/19/858500/354017.terrain differ diff --git a/public/terrain/19/858500/354018.terrain b/public/terrain/19/858500/354018.terrain new file mode 100644 index 000000000..ab289f8cb Binary files /dev/null and b/public/terrain/19/858500/354018.terrain differ diff --git a/public/terrain/19/858500/354019.terrain b/public/terrain/19/858500/354019.terrain new file mode 100644 index 000000000..873ffc954 Binary files /dev/null and b/public/terrain/19/858500/354019.terrain differ diff --git a/public/terrain/19/858500/354020.terrain b/public/terrain/19/858500/354020.terrain new file mode 100644 index 000000000..d0d06b7c5 Binary files /dev/null and b/public/terrain/19/858500/354020.terrain differ diff --git a/public/terrain/19/858500/354021.terrain b/public/terrain/19/858500/354021.terrain new file mode 100644 index 000000000..0c18ca2c1 Binary files /dev/null and b/public/terrain/19/858500/354021.terrain differ diff --git a/public/terrain/19/858500/354022.terrain b/public/terrain/19/858500/354022.terrain new file mode 100644 index 000000000..fc9f67431 Binary files /dev/null and b/public/terrain/19/858500/354022.terrain differ diff --git a/public/terrain/19/858500/354023.terrain b/public/terrain/19/858500/354023.terrain new file mode 100644 index 000000000..36625bf62 Binary files /dev/null and b/public/terrain/19/858500/354023.terrain differ diff --git a/public/terrain/19/858500/354024.terrain b/public/terrain/19/858500/354024.terrain new file mode 100644 index 000000000..2f756fdcd Binary files /dev/null and b/public/terrain/19/858500/354024.terrain differ diff --git a/public/terrain/19/858500/354025.terrain b/public/terrain/19/858500/354025.terrain new file mode 100644 index 000000000..80061fae0 Binary files /dev/null and b/public/terrain/19/858500/354025.terrain differ diff --git a/public/terrain/19/858500/354026.terrain b/public/terrain/19/858500/354026.terrain new file mode 100644 index 000000000..86c81961d Binary files /dev/null and b/public/terrain/19/858500/354026.terrain differ diff --git a/public/terrain/19/858500/354027.terrain b/public/terrain/19/858500/354027.terrain new file mode 100644 index 000000000..e589f7927 Binary files /dev/null and b/public/terrain/19/858500/354027.terrain differ diff --git a/public/terrain/19/858500/354028.terrain b/public/terrain/19/858500/354028.terrain new file mode 100644 index 000000000..32f42b3aa Binary files /dev/null and b/public/terrain/19/858500/354028.terrain differ diff --git a/public/terrain/19/858500/354029.terrain b/public/terrain/19/858500/354029.terrain new file mode 100644 index 000000000..b54c94873 Binary files /dev/null and b/public/terrain/19/858500/354029.terrain differ diff --git a/public/terrain/19/858500/354030.terrain b/public/terrain/19/858500/354030.terrain new file mode 100644 index 000000000..10a4b4f40 Binary files /dev/null and b/public/terrain/19/858500/354030.terrain differ diff --git a/public/terrain/19/858500/354031.terrain b/public/terrain/19/858500/354031.terrain new file mode 100644 index 000000000..e60a4a4c6 Binary files /dev/null and b/public/terrain/19/858500/354031.terrain differ diff --git a/public/terrain/19/858500/354032.terrain b/public/terrain/19/858500/354032.terrain new file mode 100644 index 000000000..dd6f097d4 Binary files /dev/null and b/public/terrain/19/858500/354032.terrain differ diff --git a/public/terrain/19/858500/354033.terrain b/public/terrain/19/858500/354033.terrain new file mode 100644 index 000000000..e21e35956 Binary files /dev/null and b/public/terrain/19/858500/354033.terrain differ diff --git a/public/terrain/19/858500/354034.terrain b/public/terrain/19/858500/354034.terrain new file mode 100644 index 000000000..01f471e05 Binary files /dev/null and b/public/terrain/19/858500/354034.terrain differ diff --git a/public/terrain/19/858500/354035.terrain b/public/terrain/19/858500/354035.terrain new file mode 100644 index 000000000..741938d73 Binary files /dev/null and b/public/terrain/19/858500/354035.terrain differ diff --git a/public/terrain/19/858500/354036.terrain b/public/terrain/19/858500/354036.terrain new file mode 100644 index 000000000..d9db3f4fa Binary files /dev/null and b/public/terrain/19/858500/354036.terrain differ diff --git a/public/terrain/19/858500/354037.terrain b/public/terrain/19/858500/354037.terrain new file mode 100644 index 000000000..4b9853b56 Binary files /dev/null and b/public/terrain/19/858500/354037.terrain differ diff --git a/public/terrain/19/858500/354038.terrain b/public/terrain/19/858500/354038.terrain new file mode 100644 index 000000000..a42031b16 Binary files /dev/null and b/public/terrain/19/858500/354038.terrain differ diff --git a/public/terrain/19/858500/354039.terrain b/public/terrain/19/858500/354039.terrain new file mode 100644 index 000000000..213749d66 Binary files /dev/null and b/public/terrain/19/858500/354039.terrain differ diff --git a/public/terrain/19/858500/354040.terrain b/public/terrain/19/858500/354040.terrain new file mode 100644 index 000000000..05ce575d7 Binary files /dev/null and b/public/terrain/19/858500/354040.terrain differ diff --git a/public/terrain/19/858500/354041.terrain b/public/terrain/19/858500/354041.terrain new file mode 100644 index 000000000..af02ac8c8 Binary files /dev/null and b/public/terrain/19/858500/354041.terrain differ diff --git a/public/terrain/19/858500/354042.terrain b/public/terrain/19/858500/354042.terrain new file mode 100644 index 000000000..8a3c070d6 Binary files /dev/null and b/public/terrain/19/858500/354042.terrain differ diff --git a/public/terrain/19/858500/354043.terrain b/public/terrain/19/858500/354043.terrain new file mode 100644 index 000000000..356ffa91d Binary files /dev/null and b/public/terrain/19/858500/354043.terrain differ diff --git a/public/terrain/19/858500/354044.terrain b/public/terrain/19/858500/354044.terrain new file mode 100644 index 000000000..5b964ae49 Binary files /dev/null and b/public/terrain/19/858500/354044.terrain differ diff --git a/public/terrain/19/858500/354045.terrain b/public/terrain/19/858500/354045.terrain new file mode 100644 index 000000000..91fbd798f Binary files /dev/null and b/public/terrain/19/858500/354045.terrain differ diff --git a/public/terrain/19/858500/354046.terrain b/public/terrain/19/858500/354046.terrain new file mode 100644 index 000000000..2dd0ba207 Binary files /dev/null and b/public/terrain/19/858500/354046.terrain differ diff --git a/public/terrain/19/858500/354047.terrain b/public/terrain/19/858500/354047.terrain new file mode 100644 index 000000000..ed8053360 Binary files /dev/null and b/public/terrain/19/858500/354047.terrain differ diff --git a/public/terrain/19/858500/354048.terrain b/public/terrain/19/858500/354048.terrain new file mode 100644 index 000000000..3ddd48195 Binary files /dev/null and b/public/terrain/19/858500/354048.terrain differ diff --git a/public/terrain/19/858500/354049.terrain b/public/terrain/19/858500/354049.terrain new file mode 100644 index 000000000..016d194ff Binary files /dev/null and b/public/terrain/19/858500/354049.terrain differ diff --git a/public/terrain/19/858500/354050.terrain b/public/terrain/19/858500/354050.terrain new file mode 100644 index 000000000..320bdd44e Binary files /dev/null and b/public/terrain/19/858500/354050.terrain differ diff --git a/public/terrain/19/858500/354051.terrain b/public/terrain/19/858500/354051.terrain new file mode 100644 index 000000000..5122150d4 Binary files /dev/null and b/public/terrain/19/858500/354051.terrain differ diff --git a/public/terrain/19/858500/354052.terrain b/public/terrain/19/858500/354052.terrain new file mode 100644 index 000000000..8caf67a58 Binary files /dev/null and b/public/terrain/19/858500/354052.terrain differ diff --git a/public/terrain/19/858500/354053.terrain b/public/terrain/19/858500/354053.terrain new file mode 100644 index 000000000..d352ea778 Binary files /dev/null and b/public/terrain/19/858500/354053.terrain differ diff --git a/public/terrain/19/858500/354054.terrain b/public/terrain/19/858500/354054.terrain new file mode 100644 index 000000000..c798d1658 Binary files /dev/null and b/public/terrain/19/858500/354054.terrain differ diff --git a/public/terrain/19/858500/354055.terrain b/public/terrain/19/858500/354055.terrain new file mode 100644 index 000000000..395531c29 Binary files /dev/null and b/public/terrain/19/858500/354055.terrain differ diff --git a/public/terrain/19/858500/354056.terrain b/public/terrain/19/858500/354056.terrain new file mode 100644 index 000000000..f21b1eedb Binary files /dev/null and b/public/terrain/19/858500/354056.terrain differ diff --git a/public/terrain/19/858500/354057.terrain b/public/terrain/19/858500/354057.terrain new file mode 100644 index 000000000..80e6fa7f9 Binary files /dev/null and b/public/terrain/19/858500/354057.terrain differ diff --git a/public/terrain/19/858500/354058.terrain b/public/terrain/19/858500/354058.terrain new file mode 100644 index 000000000..4816d9b18 Binary files /dev/null and b/public/terrain/19/858500/354058.terrain differ diff --git a/public/terrain/19/858500/354059.terrain b/public/terrain/19/858500/354059.terrain new file mode 100644 index 000000000..de199f60b Binary files /dev/null and b/public/terrain/19/858500/354059.terrain differ diff --git a/public/terrain/19/858501/353743.terrain b/public/terrain/19/858501/353743.terrain new file mode 100644 index 000000000..541c022b8 Binary files /dev/null and b/public/terrain/19/858501/353743.terrain differ diff --git a/public/terrain/19/858501/353744.terrain b/public/terrain/19/858501/353744.terrain new file mode 100644 index 000000000..5d9edef7d Binary files /dev/null and b/public/terrain/19/858501/353744.terrain differ diff --git a/public/terrain/19/858501/353745.terrain b/public/terrain/19/858501/353745.terrain new file mode 100644 index 000000000..c32e51233 Binary files /dev/null and b/public/terrain/19/858501/353745.terrain differ diff --git a/public/terrain/19/858501/353746.terrain b/public/terrain/19/858501/353746.terrain new file mode 100644 index 000000000..4c98992e5 Binary files /dev/null and b/public/terrain/19/858501/353746.terrain differ diff --git a/public/terrain/19/858501/353747.terrain b/public/terrain/19/858501/353747.terrain new file mode 100644 index 000000000..c9fd03173 Binary files /dev/null and b/public/terrain/19/858501/353747.terrain differ diff --git a/public/terrain/19/858501/353748.terrain b/public/terrain/19/858501/353748.terrain new file mode 100644 index 000000000..455a07ea8 Binary files /dev/null and b/public/terrain/19/858501/353748.terrain differ diff --git a/public/terrain/19/858501/353749.terrain b/public/terrain/19/858501/353749.terrain new file mode 100644 index 000000000..1cd824d96 Binary files /dev/null and b/public/terrain/19/858501/353749.terrain differ diff --git a/public/terrain/19/858501/353750.terrain b/public/terrain/19/858501/353750.terrain new file mode 100644 index 000000000..8d53a7113 Binary files /dev/null and b/public/terrain/19/858501/353750.terrain differ diff --git a/public/terrain/19/858501/353751.terrain b/public/terrain/19/858501/353751.terrain new file mode 100644 index 000000000..63b7e17db Binary files /dev/null and b/public/terrain/19/858501/353751.terrain differ diff --git a/public/terrain/19/858501/353752.terrain b/public/terrain/19/858501/353752.terrain new file mode 100644 index 000000000..2441eedd8 Binary files /dev/null and b/public/terrain/19/858501/353752.terrain differ diff --git a/public/terrain/19/858501/353753.terrain b/public/terrain/19/858501/353753.terrain new file mode 100644 index 000000000..003509632 Binary files /dev/null and b/public/terrain/19/858501/353753.terrain differ diff --git a/public/terrain/19/858501/353754.terrain b/public/terrain/19/858501/353754.terrain new file mode 100644 index 000000000..dfb6d7ee9 Binary files /dev/null and b/public/terrain/19/858501/353754.terrain differ diff --git a/public/terrain/19/858501/353755.terrain b/public/terrain/19/858501/353755.terrain new file mode 100644 index 000000000..7774b3ac0 Binary files /dev/null and b/public/terrain/19/858501/353755.terrain differ diff --git a/public/terrain/19/858501/353756.terrain b/public/terrain/19/858501/353756.terrain new file mode 100644 index 000000000..465ea0045 Binary files /dev/null and b/public/terrain/19/858501/353756.terrain differ diff --git a/public/terrain/19/858501/353757.terrain b/public/terrain/19/858501/353757.terrain new file mode 100644 index 000000000..aef00c86a Binary files /dev/null and b/public/terrain/19/858501/353757.terrain differ diff --git a/public/terrain/19/858501/353758.terrain b/public/terrain/19/858501/353758.terrain new file mode 100644 index 000000000..80adc4c3a Binary files /dev/null and b/public/terrain/19/858501/353758.terrain differ diff --git a/public/terrain/19/858501/353759.terrain b/public/terrain/19/858501/353759.terrain new file mode 100644 index 000000000..a10305555 Binary files /dev/null and b/public/terrain/19/858501/353759.terrain differ diff --git a/public/terrain/19/858501/353760.terrain b/public/terrain/19/858501/353760.terrain new file mode 100644 index 000000000..ddce55888 Binary files /dev/null and b/public/terrain/19/858501/353760.terrain differ diff --git a/public/terrain/19/858501/353761.terrain b/public/terrain/19/858501/353761.terrain new file mode 100644 index 000000000..26241477b Binary files /dev/null and b/public/terrain/19/858501/353761.terrain differ diff --git a/public/terrain/19/858501/353762.terrain b/public/terrain/19/858501/353762.terrain new file mode 100644 index 000000000..d10f0f0f0 Binary files /dev/null and b/public/terrain/19/858501/353762.terrain differ diff --git a/public/terrain/19/858501/353763.terrain b/public/terrain/19/858501/353763.terrain new file mode 100644 index 000000000..3cdffdf3d Binary files /dev/null and b/public/terrain/19/858501/353763.terrain differ diff --git a/public/terrain/19/858501/353764.terrain b/public/terrain/19/858501/353764.terrain new file mode 100644 index 000000000..efb6ca885 Binary files /dev/null and b/public/terrain/19/858501/353764.terrain differ diff --git a/public/terrain/19/858501/353765.terrain b/public/terrain/19/858501/353765.terrain new file mode 100644 index 000000000..1d6a9fac6 Binary files /dev/null and b/public/terrain/19/858501/353765.terrain differ diff --git a/public/terrain/19/858501/353766.terrain b/public/terrain/19/858501/353766.terrain new file mode 100644 index 000000000..2f5c8e238 Binary files /dev/null and b/public/terrain/19/858501/353766.terrain differ diff --git a/public/terrain/19/858501/353767.terrain b/public/terrain/19/858501/353767.terrain new file mode 100644 index 000000000..1a76f1a06 Binary files /dev/null and b/public/terrain/19/858501/353767.terrain differ diff --git a/public/terrain/19/858501/353768.terrain b/public/terrain/19/858501/353768.terrain new file mode 100644 index 000000000..6b6581c1b Binary files /dev/null and b/public/terrain/19/858501/353768.terrain differ diff --git a/public/terrain/19/858501/353769.terrain b/public/terrain/19/858501/353769.terrain new file mode 100644 index 000000000..88449c1ab Binary files /dev/null and b/public/terrain/19/858501/353769.terrain differ diff --git a/public/terrain/19/858501/353770.terrain b/public/terrain/19/858501/353770.terrain new file mode 100644 index 000000000..654471f5c Binary files /dev/null and b/public/terrain/19/858501/353770.terrain differ diff --git a/public/terrain/19/858501/353771.terrain b/public/terrain/19/858501/353771.terrain new file mode 100644 index 000000000..dc3a1ce13 Binary files /dev/null and b/public/terrain/19/858501/353771.terrain differ diff --git a/public/terrain/19/858501/353772.terrain b/public/terrain/19/858501/353772.terrain new file mode 100644 index 000000000..a798559f6 Binary files /dev/null and b/public/terrain/19/858501/353772.terrain differ diff --git a/public/terrain/19/858501/353773.terrain b/public/terrain/19/858501/353773.terrain new file mode 100644 index 000000000..495659f6f Binary files /dev/null and b/public/terrain/19/858501/353773.terrain differ diff --git a/public/terrain/19/858501/353774.terrain b/public/terrain/19/858501/353774.terrain new file mode 100644 index 000000000..6467f1559 Binary files /dev/null and b/public/terrain/19/858501/353774.terrain differ diff --git a/public/terrain/19/858501/353775.terrain b/public/terrain/19/858501/353775.terrain new file mode 100644 index 000000000..68bef2332 Binary files /dev/null and b/public/terrain/19/858501/353775.terrain differ diff --git a/public/terrain/19/858501/353776.terrain b/public/terrain/19/858501/353776.terrain new file mode 100644 index 000000000..b1144972e Binary files /dev/null and b/public/terrain/19/858501/353776.terrain differ diff --git a/public/terrain/19/858501/353777.terrain b/public/terrain/19/858501/353777.terrain new file mode 100644 index 000000000..eeeb9dfdb Binary files /dev/null and b/public/terrain/19/858501/353777.terrain differ diff --git a/public/terrain/19/858501/353778.terrain b/public/terrain/19/858501/353778.terrain new file mode 100644 index 000000000..a05ddf346 Binary files /dev/null and b/public/terrain/19/858501/353778.terrain differ diff --git a/public/terrain/19/858501/353779.terrain b/public/terrain/19/858501/353779.terrain new file mode 100644 index 000000000..95b0ad1a1 Binary files /dev/null and b/public/terrain/19/858501/353779.terrain differ diff --git a/public/terrain/19/858501/353780.terrain b/public/terrain/19/858501/353780.terrain new file mode 100644 index 000000000..d713a9873 Binary files /dev/null and b/public/terrain/19/858501/353780.terrain differ diff --git a/public/terrain/19/858501/353781.terrain b/public/terrain/19/858501/353781.terrain new file mode 100644 index 000000000..677822ac7 Binary files /dev/null and b/public/terrain/19/858501/353781.terrain differ diff --git a/public/terrain/19/858501/353782.terrain b/public/terrain/19/858501/353782.terrain new file mode 100644 index 000000000..1ea77807f Binary files /dev/null and b/public/terrain/19/858501/353782.terrain differ diff --git a/public/terrain/19/858501/353783.terrain b/public/terrain/19/858501/353783.terrain new file mode 100644 index 000000000..ffd6dd72f Binary files /dev/null and b/public/terrain/19/858501/353783.terrain differ diff --git a/public/terrain/19/858501/353784.terrain b/public/terrain/19/858501/353784.terrain new file mode 100644 index 000000000..9f148018e Binary files /dev/null and b/public/terrain/19/858501/353784.terrain differ diff --git a/public/terrain/19/858501/353785.terrain b/public/terrain/19/858501/353785.terrain new file mode 100644 index 000000000..dc09fbf4c Binary files /dev/null and b/public/terrain/19/858501/353785.terrain differ diff --git a/public/terrain/19/858501/353786.terrain b/public/terrain/19/858501/353786.terrain new file mode 100644 index 000000000..a436d69c0 Binary files /dev/null and b/public/terrain/19/858501/353786.terrain differ diff --git a/public/terrain/19/858501/353787.terrain b/public/terrain/19/858501/353787.terrain new file mode 100644 index 000000000..92a8b0af5 Binary files /dev/null and b/public/terrain/19/858501/353787.terrain differ diff --git a/public/terrain/19/858501/353788.terrain b/public/terrain/19/858501/353788.terrain new file mode 100644 index 000000000..3fd2693f2 Binary files /dev/null and b/public/terrain/19/858501/353788.terrain differ diff --git a/public/terrain/19/858501/353789.terrain b/public/terrain/19/858501/353789.terrain new file mode 100644 index 000000000..14b13064e Binary files /dev/null and b/public/terrain/19/858501/353789.terrain differ diff --git a/public/terrain/19/858501/353790.terrain b/public/terrain/19/858501/353790.terrain new file mode 100644 index 000000000..02c0a224f Binary files /dev/null and b/public/terrain/19/858501/353790.terrain differ diff --git a/public/terrain/19/858501/353791.terrain b/public/terrain/19/858501/353791.terrain new file mode 100644 index 000000000..9896a8bf1 Binary files /dev/null and b/public/terrain/19/858501/353791.terrain differ diff --git a/public/terrain/19/858501/353792.terrain b/public/terrain/19/858501/353792.terrain new file mode 100644 index 000000000..ca7e0b390 Binary files /dev/null and b/public/terrain/19/858501/353792.terrain differ diff --git a/public/terrain/19/858501/353793.terrain b/public/terrain/19/858501/353793.terrain new file mode 100644 index 000000000..d718c2f3b Binary files /dev/null and b/public/terrain/19/858501/353793.terrain differ diff --git a/public/terrain/19/858501/353794.terrain b/public/terrain/19/858501/353794.terrain new file mode 100644 index 000000000..bd3bb1bce Binary files /dev/null and b/public/terrain/19/858501/353794.terrain differ diff --git a/public/terrain/19/858501/353795.terrain b/public/terrain/19/858501/353795.terrain new file mode 100644 index 000000000..3f3a3394c Binary files /dev/null and b/public/terrain/19/858501/353795.terrain differ diff --git a/public/terrain/19/858501/353796.terrain b/public/terrain/19/858501/353796.terrain new file mode 100644 index 000000000..5c16b2530 Binary files /dev/null and b/public/terrain/19/858501/353796.terrain differ diff --git a/public/terrain/19/858501/353797.terrain b/public/terrain/19/858501/353797.terrain new file mode 100644 index 000000000..6ebe48eb4 Binary files /dev/null and b/public/terrain/19/858501/353797.terrain differ diff --git a/public/terrain/19/858501/353798.terrain b/public/terrain/19/858501/353798.terrain new file mode 100644 index 000000000..014b56786 Binary files /dev/null and b/public/terrain/19/858501/353798.terrain differ diff --git a/public/terrain/19/858501/353799.terrain b/public/terrain/19/858501/353799.terrain new file mode 100644 index 000000000..8344cf4a2 Binary files /dev/null and b/public/terrain/19/858501/353799.terrain differ diff --git a/public/terrain/19/858501/353800.terrain b/public/terrain/19/858501/353800.terrain new file mode 100644 index 000000000..cb112d372 Binary files /dev/null and b/public/terrain/19/858501/353800.terrain differ diff --git a/public/terrain/19/858501/353801.terrain b/public/terrain/19/858501/353801.terrain new file mode 100644 index 000000000..83043ec8d Binary files /dev/null and b/public/terrain/19/858501/353801.terrain differ diff --git a/public/terrain/19/858501/353802.terrain b/public/terrain/19/858501/353802.terrain new file mode 100644 index 000000000..1da6b43dc Binary files /dev/null and b/public/terrain/19/858501/353802.terrain differ diff --git a/public/terrain/19/858501/353803.terrain b/public/terrain/19/858501/353803.terrain new file mode 100644 index 000000000..7dcd7b737 Binary files /dev/null and b/public/terrain/19/858501/353803.terrain differ diff --git a/public/terrain/19/858501/353804.terrain b/public/terrain/19/858501/353804.terrain new file mode 100644 index 000000000..407589622 Binary files /dev/null and b/public/terrain/19/858501/353804.terrain differ diff --git a/public/terrain/19/858501/353805.terrain b/public/terrain/19/858501/353805.terrain new file mode 100644 index 000000000..de4f1a909 Binary files /dev/null and b/public/terrain/19/858501/353805.terrain differ diff --git a/public/terrain/19/858501/353806.terrain b/public/terrain/19/858501/353806.terrain new file mode 100644 index 000000000..8c632efd6 Binary files /dev/null and b/public/terrain/19/858501/353806.terrain differ diff --git a/public/terrain/19/858501/353807.terrain b/public/terrain/19/858501/353807.terrain new file mode 100644 index 000000000..664bb3cc1 Binary files /dev/null and b/public/terrain/19/858501/353807.terrain differ diff --git a/public/terrain/19/858501/353808.terrain b/public/terrain/19/858501/353808.terrain new file mode 100644 index 000000000..8e0d858b0 Binary files /dev/null and b/public/terrain/19/858501/353808.terrain differ diff --git a/public/terrain/19/858501/353809.terrain b/public/terrain/19/858501/353809.terrain new file mode 100644 index 000000000..3dfd98932 Binary files /dev/null and b/public/terrain/19/858501/353809.terrain differ diff --git a/public/terrain/19/858501/353810.terrain b/public/terrain/19/858501/353810.terrain new file mode 100644 index 000000000..31bf83e38 Binary files /dev/null and b/public/terrain/19/858501/353810.terrain differ diff --git a/public/terrain/19/858501/353811.terrain b/public/terrain/19/858501/353811.terrain new file mode 100644 index 000000000..810c67bd5 Binary files /dev/null and b/public/terrain/19/858501/353811.terrain differ diff --git a/public/terrain/19/858501/353812.terrain b/public/terrain/19/858501/353812.terrain new file mode 100644 index 000000000..0f74ed6d8 Binary files /dev/null and b/public/terrain/19/858501/353812.terrain differ diff --git a/public/terrain/19/858501/353813.terrain b/public/terrain/19/858501/353813.terrain new file mode 100644 index 000000000..25e622df7 Binary files /dev/null and b/public/terrain/19/858501/353813.terrain differ diff --git a/public/terrain/19/858501/353814.terrain b/public/terrain/19/858501/353814.terrain new file mode 100644 index 000000000..51216e221 Binary files /dev/null and b/public/terrain/19/858501/353814.terrain differ diff --git a/public/terrain/19/858501/353815.terrain b/public/terrain/19/858501/353815.terrain new file mode 100644 index 000000000..3c05566e4 Binary files /dev/null and b/public/terrain/19/858501/353815.terrain differ diff --git a/public/terrain/19/858501/353816.terrain b/public/terrain/19/858501/353816.terrain new file mode 100644 index 000000000..3764fc01e Binary files /dev/null and b/public/terrain/19/858501/353816.terrain differ diff --git a/public/terrain/19/858501/353817.terrain b/public/terrain/19/858501/353817.terrain new file mode 100644 index 000000000..13649305c Binary files /dev/null and b/public/terrain/19/858501/353817.terrain differ diff --git a/public/terrain/19/858501/353818.terrain b/public/terrain/19/858501/353818.terrain new file mode 100644 index 000000000..dd9464cd8 Binary files /dev/null and b/public/terrain/19/858501/353818.terrain differ diff --git a/public/terrain/19/858501/353819.terrain b/public/terrain/19/858501/353819.terrain new file mode 100644 index 000000000..36c6e115f Binary files /dev/null and b/public/terrain/19/858501/353819.terrain differ diff --git a/public/terrain/19/858501/353820.terrain b/public/terrain/19/858501/353820.terrain new file mode 100644 index 000000000..0f2b8f55d Binary files /dev/null and b/public/terrain/19/858501/353820.terrain differ diff --git a/public/terrain/19/858501/353821.terrain b/public/terrain/19/858501/353821.terrain new file mode 100644 index 000000000..b9da35760 Binary files /dev/null and b/public/terrain/19/858501/353821.terrain differ diff --git a/public/terrain/19/858501/353822.terrain b/public/terrain/19/858501/353822.terrain new file mode 100644 index 000000000..a83d12710 Binary files /dev/null and b/public/terrain/19/858501/353822.terrain differ diff --git a/public/terrain/19/858501/353823.terrain b/public/terrain/19/858501/353823.terrain new file mode 100644 index 000000000..9c2f7461c Binary files /dev/null and b/public/terrain/19/858501/353823.terrain differ diff --git a/public/terrain/19/858501/353824.terrain b/public/terrain/19/858501/353824.terrain new file mode 100644 index 000000000..cf41e64e0 Binary files /dev/null and b/public/terrain/19/858501/353824.terrain differ diff --git a/public/terrain/19/858501/353825.terrain b/public/terrain/19/858501/353825.terrain new file mode 100644 index 000000000..5baf8f7ff Binary files /dev/null and b/public/terrain/19/858501/353825.terrain differ diff --git a/public/terrain/19/858501/353826.terrain b/public/terrain/19/858501/353826.terrain new file mode 100644 index 000000000..2fc1302c3 Binary files /dev/null and b/public/terrain/19/858501/353826.terrain differ diff --git a/public/terrain/19/858501/353827.terrain b/public/terrain/19/858501/353827.terrain new file mode 100644 index 000000000..c4b3fd760 Binary files /dev/null and b/public/terrain/19/858501/353827.terrain differ diff --git a/public/terrain/19/858501/353828.terrain b/public/terrain/19/858501/353828.terrain new file mode 100644 index 000000000..eff241524 Binary files /dev/null and b/public/terrain/19/858501/353828.terrain differ diff --git a/public/terrain/19/858501/353829.terrain b/public/terrain/19/858501/353829.terrain new file mode 100644 index 000000000..11e719234 Binary files /dev/null and b/public/terrain/19/858501/353829.terrain differ diff --git a/public/terrain/19/858501/353830.terrain b/public/terrain/19/858501/353830.terrain new file mode 100644 index 000000000..5cee51a31 Binary files /dev/null and b/public/terrain/19/858501/353830.terrain differ diff --git a/public/terrain/19/858501/353831.terrain b/public/terrain/19/858501/353831.terrain new file mode 100644 index 000000000..36c9f4b00 Binary files /dev/null and b/public/terrain/19/858501/353831.terrain differ diff --git a/public/terrain/19/858501/353832.terrain b/public/terrain/19/858501/353832.terrain new file mode 100644 index 000000000..c656e0fd8 Binary files /dev/null and b/public/terrain/19/858501/353832.terrain differ diff --git a/public/terrain/19/858501/353833.terrain b/public/terrain/19/858501/353833.terrain new file mode 100644 index 000000000..818444a4d Binary files /dev/null and b/public/terrain/19/858501/353833.terrain differ diff --git a/public/terrain/19/858501/353834.terrain b/public/terrain/19/858501/353834.terrain new file mode 100644 index 000000000..824ca0635 Binary files /dev/null and b/public/terrain/19/858501/353834.terrain differ diff --git a/public/terrain/19/858501/353835.terrain b/public/terrain/19/858501/353835.terrain new file mode 100644 index 000000000..b90a2c74b Binary files /dev/null and b/public/terrain/19/858501/353835.terrain differ diff --git a/public/terrain/19/858501/353836.terrain b/public/terrain/19/858501/353836.terrain new file mode 100644 index 000000000..420c74ff9 Binary files /dev/null and b/public/terrain/19/858501/353836.terrain differ diff --git a/public/terrain/19/858501/353837.terrain b/public/terrain/19/858501/353837.terrain new file mode 100644 index 000000000..41af13344 Binary files /dev/null and b/public/terrain/19/858501/353837.terrain differ diff --git a/public/terrain/19/858501/353838.terrain b/public/terrain/19/858501/353838.terrain new file mode 100644 index 000000000..f7a70a482 Binary files /dev/null and b/public/terrain/19/858501/353838.terrain differ diff --git a/public/terrain/19/858501/353839.terrain b/public/terrain/19/858501/353839.terrain new file mode 100644 index 000000000..dbd3d20ec Binary files /dev/null and b/public/terrain/19/858501/353839.terrain differ diff --git a/public/terrain/19/858501/353840.terrain b/public/terrain/19/858501/353840.terrain new file mode 100644 index 000000000..01d0ef543 Binary files /dev/null and b/public/terrain/19/858501/353840.terrain differ diff --git a/public/terrain/19/858501/353841.terrain b/public/terrain/19/858501/353841.terrain new file mode 100644 index 000000000..42efd1bea Binary files /dev/null and b/public/terrain/19/858501/353841.terrain differ diff --git a/public/terrain/19/858501/353842.terrain b/public/terrain/19/858501/353842.terrain new file mode 100644 index 000000000..0d5f9971f Binary files /dev/null and b/public/terrain/19/858501/353842.terrain differ diff --git a/public/terrain/19/858501/353843.terrain b/public/terrain/19/858501/353843.terrain new file mode 100644 index 000000000..71d459eb6 Binary files /dev/null and b/public/terrain/19/858501/353843.terrain differ diff --git a/public/terrain/19/858501/353844.terrain b/public/terrain/19/858501/353844.terrain new file mode 100644 index 000000000..a2c8660b3 Binary files /dev/null and b/public/terrain/19/858501/353844.terrain differ diff --git a/public/terrain/19/858501/353845.terrain b/public/terrain/19/858501/353845.terrain new file mode 100644 index 000000000..c5b4eda94 Binary files /dev/null and b/public/terrain/19/858501/353845.terrain differ diff --git a/public/terrain/19/858501/353846.terrain b/public/terrain/19/858501/353846.terrain new file mode 100644 index 000000000..0d310d2d6 Binary files /dev/null and b/public/terrain/19/858501/353846.terrain differ diff --git a/public/terrain/19/858501/353847.terrain b/public/terrain/19/858501/353847.terrain new file mode 100644 index 000000000..86b99132d Binary files /dev/null and b/public/terrain/19/858501/353847.terrain differ diff --git a/public/terrain/19/858501/353848.terrain b/public/terrain/19/858501/353848.terrain new file mode 100644 index 000000000..f2f7e66fb Binary files /dev/null and b/public/terrain/19/858501/353848.terrain differ diff --git a/public/terrain/19/858501/353849.terrain b/public/terrain/19/858501/353849.terrain new file mode 100644 index 000000000..7e78e8325 Binary files /dev/null and b/public/terrain/19/858501/353849.terrain differ diff --git a/public/terrain/19/858501/353850.terrain b/public/terrain/19/858501/353850.terrain new file mode 100644 index 000000000..0b2992d5e Binary files /dev/null and b/public/terrain/19/858501/353850.terrain differ diff --git a/public/terrain/19/858501/353851.terrain b/public/terrain/19/858501/353851.terrain new file mode 100644 index 000000000..f05e336fa Binary files /dev/null and b/public/terrain/19/858501/353851.terrain differ diff --git a/public/terrain/19/858501/353852.terrain b/public/terrain/19/858501/353852.terrain new file mode 100644 index 000000000..5645f9abf Binary files /dev/null and b/public/terrain/19/858501/353852.terrain differ diff --git a/public/terrain/19/858501/353853.terrain b/public/terrain/19/858501/353853.terrain new file mode 100644 index 000000000..ed6a6567a Binary files /dev/null and b/public/terrain/19/858501/353853.terrain differ diff --git a/public/terrain/19/858501/353854.terrain b/public/terrain/19/858501/353854.terrain new file mode 100644 index 000000000..2c952a65b Binary files /dev/null and b/public/terrain/19/858501/353854.terrain differ diff --git a/public/terrain/19/858501/353855.terrain b/public/terrain/19/858501/353855.terrain new file mode 100644 index 000000000..57f70dc80 Binary files /dev/null and b/public/terrain/19/858501/353855.terrain differ diff --git a/public/terrain/19/858501/353856.terrain b/public/terrain/19/858501/353856.terrain new file mode 100644 index 000000000..b1a8c6143 Binary files /dev/null and b/public/terrain/19/858501/353856.terrain differ diff --git a/public/terrain/19/858501/353857.terrain b/public/terrain/19/858501/353857.terrain new file mode 100644 index 000000000..d5890d91e Binary files /dev/null and b/public/terrain/19/858501/353857.terrain differ diff --git a/public/terrain/19/858501/353858.terrain b/public/terrain/19/858501/353858.terrain new file mode 100644 index 000000000..dd727fb90 Binary files /dev/null and b/public/terrain/19/858501/353858.terrain differ diff --git a/public/terrain/19/858501/353859.terrain b/public/terrain/19/858501/353859.terrain new file mode 100644 index 000000000..81603bf31 Binary files /dev/null and b/public/terrain/19/858501/353859.terrain differ diff --git a/public/terrain/19/858501/353860.terrain b/public/terrain/19/858501/353860.terrain new file mode 100644 index 000000000..2c12ac522 Binary files /dev/null and b/public/terrain/19/858501/353860.terrain differ diff --git a/public/terrain/19/858501/353861.terrain b/public/terrain/19/858501/353861.terrain new file mode 100644 index 000000000..c78e964f4 Binary files /dev/null and b/public/terrain/19/858501/353861.terrain differ diff --git a/public/terrain/19/858501/353862.terrain b/public/terrain/19/858501/353862.terrain new file mode 100644 index 000000000..738d65028 Binary files /dev/null and b/public/terrain/19/858501/353862.terrain differ diff --git a/public/terrain/19/858501/353863.terrain b/public/terrain/19/858501/353863.terrain new file mode 100644 index 000000000..1eaa194da Binary files /dev/null and b/public/terrain/19/858501/353863.terrain differ diff --git a/public/terrain/19/858501/353864.terrain b/public/terrain/19/858501/353864.terrain new file mode 100644 index 000000000..fe7373e7f Binary files /dev/null and b/public/terrain/19/858501/353864.terrain differ diff --git a/public/terrain/19/858501/353865.terrain b/public/terrain/19/858501/353865.terrain new file mode 100644 index 000000000..862b6ea57 Binary files /dev/null and b/public/terrain/19/858501/353865.terrain differ diff --git a/public/terrain/19/858501/353866.terrain b/public/terrain/19/858501/353866.terrain new file mode 100644 index 000000000..86b018f54 Binary files /dev/null and b/public/terrain/19/858501/353866.terrain differ diff --git a/public/terrain/19/858501/353867.terrain b/public/terrain/19/858501/353867.terrain new file mode 100644 index 000000000..c73e3be0b Binary files /dev/null and b/public/terrain/19/858501/353867.terrain differ diff --git a/public/terrain/19/858501/353868.terrain b/public/terrain/19/858501/353868.terrain new file mode 100644 index 000000000..ba0817169 Binary files /dev/null and b/public/terrain/19/858501/353868.terrain differ diff --git a/public/terrain/19/858501/353869.terrain b/public/terrain/19/858501/353869.terrain new file mode 100644 index 000000000..db806a94d Binary files /dev/null and b/public/terrain/19/858501/353869.terrain differ diff --git a/public/terrain/19/858501/353870.terrain b/public/terrain/19/858501/353870.terrain new file mode 100644 index 000000000..80bef90c3 Binary files /dev/null and b/public/terrain/19/858501/353870.terrain differ diff --git a/public/terrain/19/858501/353871.terrain b/public/terrain/19/858501/353871.terrain new file mode 100644 index 000000000..4854f1ec3 Binary files /dev/null and b/public/terrain/19/858501/353871.terrain differ diff --git a/public/terrain/19/858501/353872.terrain b/public/terrain/19/858501/353872.terrain new file mode 100644 index 000000000..2f27bba0c Binary files /dev/null and b/public/terrain/19/858501/353872.terrain differ diff --git a/public/terrain/19/858501/353873.terrain b/public/terrain/19/858501/353873.terrain new file mode 100644 index 000000000..cf0481b77 Binary files /dev/null and b/public/terrain/19/858501/353873.terrain differ diff --git a/public/terrain/19/858501/353874.terrain b/public/terrain/19/858501/353874.terrain new file mode 100644 index 000000000..2573825a9 Binary files /dev/null and b/public/terrain/19/858501/353874.terrain differ diff --git a/public/terrain/19/858501/353875.terrain b/public/terrain/19/858501/353875.terrain new file mode 100644 index 000000000..93a235bd9 Binary files /dev/null and b/public/terrain/19/858501/353875.terrain differ diff --git a/public/terrain/19/858501/353876.terrain b/public/terrain/19/858501/353876.terrain new file mode 100644 index 000000000..4a84f1a38 Binary files /dev/null and b/public/terrain/19/858501/353876.terrain differ diff --git a/public/terrain/19/858501/353877.terrain b/public/terrain/19/858501/353877.terrain new file mode 100644 index 000000000..c9f41a06e Binary files /dev/null and b/public/terrain/19/858501/353877.terrain differ diff --git a/public/terrain/19/858501/353878.terrain b/public/terrain/19/858501/353878.terrain new file mode 100644 index 000000000..ee75669c7 Binary files /dev/null and b/public/terrain/19/858501/353878.terrain differ diff --git a/public/terrain/19/858501/353879.terrain b/public/terrain/19/858501/353879.terrain new file mode 100644 index 000000000..c3f655990 Binary files /dev/null and b/public/terrain/19/858501/353879.terrain differ diff --git a/public/terrain/19/858501/353880.terrain b/public/terrain/19/858501/353880.terrain new file mode 100644 index 000000000..bd3b7a0cf Binary files /dev/null and b/public/terrain/19/858501/353880.terrain differ diff --git a/public/terrain/19/858501/353881.terrain b/public/terrain/19/858501/353881.terrain new file mode 100644 index 000000000..50f8b6758 Binary files /dev/null and b/public/terrain/19/858501/353881.terrain differ diff --git a/public/terrain/19/858501/353882.terrain b/public/terrain/19/858501/353882.terrain new file mode 100644 index 000000000..ad87c2bf2 Binary files /dev/null and b/public/terrain/19/858501/353882.terrain differ diff --git a/public/terrain/19/858501/353883.terrain b/public/terrain/19/858501/353883.terrain new file mode 100644 index 000000000..346e17828 Binary files /dev/null and b/public/terrain/19/858501/353883.terrain differ diff --git a/public/terrain/19/858501/353884.terrain b/public/terrain/19/858501/353884.terrain new file mode 100644 index 000000000..f426bd89b Binary files /dev/null and b/public/terrain/19/858501/353884.terrain differ diff --git a/public/terrain/19/858501/353885.terrain b/public/terrain/19/858501/353885.terrain new file mode 100644 index 000000000..92fc9a120 Binary files /dev/null and b/public/terrain/19/858501/353885.terrain differ diff --git a/public/terrain/19/858501/353886.terrain b/public/terrain/19/858501/353886.terrain new file mode 100644 index 000000000..c9bacb0d0 Binary files /dev/null and b/public/terrain/19/858501/353886.terrain differ diff --git a/public/terrain/19/858501/353887.terrain b/public/terrain/19/858501/353887.terrain new file mode 100644 index 000000000..b184a6c4f Binary files /dev/null and b/public/terrain/19/858501/353887.terrain differ diff --git a/public/terrain/19/858501/353888.terrain b/public/terrain/19/858501/353888.terrain new file mode 100644 index 000000000..1e29c9826 Binary files /dev/null and b/public/terrain/19/858501/353888.terrain differ diff --git a/public/terrain/19/858501/353889.terrain b/public/terrain/19/858501/353889.terrain new file mode 100644 index 000000000..5caea25b9 Binary files /dev/null and b/public/terrain/19/858501/353889.terrain differ diff --git a/public/terrain/19/858501/353890.terrain b/public/terrain/19/858501/353890.terrain new file mode 100644 index 000000000..fdfacd173 Binary files /dev/null and b/public/terrain/19/858501/353890.terrain differ diff --git a/public/terrain/19/858501/353891.terrain b/public/terrain/19/858501/353891.terrain new file mode 100644 index 000000000..1a4d62340 Binary files /dev/null and b/public/terrain/19/858501/353891.terrain differ diff --git a/public/terrain/19/858501/353892.terrain b/public/terrain/19/858501/353892.terrain new file mode 100644 index 000000000..03fdd0386 Binary files /dev/null and b/public/terrain/19/858501/353892.terrain differ diff --git a/public/terrain/19/858501/353893.terrain b/public/terrain/19/858501/353893.terrain new file mode 100644 index 000000000..dcfab9ada Binary files /dev/null and b/public/terrain/19/858501/353893.terrain differ diff --git a/public/terrain/19/858501/353894.terrain b/public/terrain/19/858501/353894.terrain new file mode 100644 index 000000000..f5328c808 Binary files /dev/null and b/public/terrain/19/858501/353894.terrain differ diff --git a/public/terrain/19/858501/353895.terrain b/public/terrain/19/858501/353895.terrain new file mode 100644 index 000000000..d154904d7 Binary files /dev/null and b/public/terrain/19/858501/353895.terrain differ diff --git a/public/terrain/19/858501/353896.terrain b/public/terrain/19/858501/353896.terrain new file mode 100644 index 000000000..b82f50d26 Binary files /dev/null and b/public/terrain/19/858501/353896.terrain differ diff --git a/public/terrain/19/858501/353897.terrain b/public/terrain/19/858501/353897.terrain new file mode 100644 index 000000000..abcdcaaa6 Binary files /dev/null and b/public/terrain/19/858501/353897.terrain differ diff --git a/public/terrain/19/858501/353898.terrain b/public/terrain/19/858501/353898.terrain new file mode 100644 index 000000000..36e9e9ebc Binary files /dev/null and b/public/terrain/19/858501/353898.terrain differ diff --git a/public/terrain/19/858501/353899.terrain b/public/terrain/19/858501/353899.terrain new file mode 100644 index 000000000..049cc6e1c Binary files /dev/null and b/public/terrain/19/858501/353899.terrain differ diff --git a/public/terrain/19/858501/353900.terrain b/public/terrain/19/858501/353900.terrain new file mode 100644 index 000000000..29246dba8 Binary files /dev/null and b/public/terrain/19/858501/353900.terrain differ diff --git a/public/terrain/19/858501/353901.terrain b/public/terrain/19/858501/353901.terrain new file mode 100644 index 000000000..a78c8def7 Binary files /dev/null and b/public/terrain/19/858501/353901.terrain differ diff --git a/public/terrain/19/858501/353902.terrain b/public/terrain/19/858501/353902.terrain new file mode 100644 index 000000000..043c81364 Binary files /dev/null and b/public/terrain/19/858501/353902.terrain differ diff --git a/public/terrain/19/858501/353903.terrain b/public/terrain/19/858501/353903.terrain new file mode 100644 index 000000000..e62d12a9a Binary files /dev/null and b/public/terrain/19/858501/353903.terrain differ diff --git a/public/terrain/19/858501/353904.terrain b/public/terrain/19/858501/353904.terrain new file mode 100644 index 000000000..3e7d3c53b Binary files /dev/null and b/public/terrain/19/858501/353904.terrain differ diff --git a/public/terrain/19/858501/353905.terrain b/public/terrain/19/858501/353905.terrain new file mode 100644 index 000000000..1de7836ce Binary files /dev/null and b/public/terrain/19/858501/353905.terrain differ diff --git a/public/terrain/19/858501/353906.terrain b/public/terrain/19/858501/353906.terrain new file mode 100644 index 000000000..dfdf70ece Binary files /dev/null and b/public/terrain/19/858501/353906.terrain differ diff --git a/public/terrain/19/858501/353907.terrain b/public/terrain/19/858501/353907.terrain new file mode 100644 index 000000000..aeafa7cf9 Binary files /dev/null and b/public/terrain/19/858501/353907.terrain differ diff --git a/public/terrain/19/858501/353908.terrain b/public/terrain/19/858501/353908.terrain new file mode 100644 index 000000000..dfabb44f4 Binary files /dev/null and b/public/terrain/19/858501/353908.terrain differ diff --git a/public/terrain/19/858501/353909.terrain b/public/terrain/19/858501/353909.terrain new file mode 100644 index 000000000..fff4442d6 Binary files /dev/null and b/public/terrain/19/858501/353909.terrain differ diff --git a/public/terrain/19/858501/353910.terrain b/public/terrain/19/858501/353910.terrain new file mode 100644 index 000000000..945d4db08 Binary files /dev/null and b/public/terrain/19/858501/353910.terrain differ diff --git a/public/terrain/19/858501/353911.terrain b/public/terrain/19/858501/353911.terrain new file mode 100644 index 000000000..af7c24ce5 Binary files /dev/null and b/public/terrain/19/858501/353911.terrain differ diff --git a/public/terrain/19/858501/353912.terrain b/public/terrain/19/858501/353912.terrain new file mode 100644 index 000000000..998d373bf Binary files /dev/null and b/public/terrain/19/858501/353912.terrain differ diff --git a/public/terrain/19/858501/353913.terrain b/public/terrain/19/858501/353913.terrain new file mode 100644 index 000000000..7948df62a Binary files /dev/null and b/public/terrain/19/858501/353913.terrain differ diff --git a/public/terrain/19/858501/353914.terrain b/public/terrain/19/858501/353914.terrain new file mode 100644 index 000000000..17e22d61d Binary files /dev/null and b/public/terrain/19/858501/353914.terrain differ diff --git a/public/terrain/19/858501/353915.terrain b/public/terrain/19/858501/353915.terrain new file mode 100644 index 000000000..6b1b79a84 Binary files /dev/null and b/public/terrain/19/858501/353915.terrain differ diff --git a/public/terrain/19/858501/353916.terrain b/public/terrain/19/858501/353916.terrain new file mode 100644 index 000000000..53931103e Binary files /dev/null and b/public/terrain/19/858501/353916.terrain differ diff --git a/public/terrain/19/858501/353917.terrain b/public/terrain/19/858501/353917.terrain new file mode 100644 index 000000000..8baa5524a Binary files /dev/null and b/public/terrain/19/858501/353917.terrain differ diff --git a/public/terrain/19/858501/353918.terrain b/public/terrain/19/858501/353918.terrain new file mode 100644 index 000000000..d0fe6ddfa Binary files /dev/null and b/public/terrain/19/858501/353918.terrain differ diff --git a/public/terrain/19/858501/353919.terrain b/public/terrain/19/858501/353919.terrain new file mode 100644 index 000000000..428797380 Binary files /dev/null and b/public/terrain/19/858501/353919.terrain differ diff --git a/public/terrain/19/858501/353920.terrain b/public/terrain/19/858501/353920.terrain new file mode 100644 index 000000000..559040cf0 Binary files /dev/null and b/public/terrain/19/858501/353920.terrain differ diff --git a/public/terrain/19/858501/353921.terrain b/public/terrain/19/858501/353921.terrain new file mode 100644 index 000000000..d0ffb8e76 Binary files /dev/null and b/public/terrain/19/858501/353921.terrain differ diff --git a/public/terrain/19/858501/353922.terrain b/public/terrain/19/858501/353922.terrain new file mode 100644 index 000000000..cd41c3596 Binary files /dev/null and b/public/terrain/19/858501/353922.terrain differ diff --git a/public/terrain/19/858501/353923.terrain b/public/terrain/19/858501/353923.terrain new file mode 100644 index 000000000..c69aed294 Binary files /dev/null and b/public/terrain/19/858501/353923.terrain differ diff --git a/public/terrain/19/858501/353924.terrain b/public/terrain/19/858501/353924.terrain new file mode 100644 index 000000000..5453e841f Binary files /dev/null and b/public/terrain/19/858501/353924.terrain differ diff --git a/public/terrain/19/858501/353925.terrain b/public/terrain/19/858501/353925.terrain new file mode 100644 index 000000000..f65af5664 Binary files /dev/null and b/public/terrain/19/858501/353925.terrain differ diff --git a/public/terrain/19/858501/353926.terrain b/public/terrain/19/858501/353926.terrain new file mode 100644 index 000000000..a11472e80 Binary files /dev/null and b/public/terrain/19/858501/353926.terrain differ diff --git a/public/terrain/19/858501/353927.terrain b/public/terrain/19/858501/353927.terrain new file mode 100644 index 000000000..c60a43e10 Binary files /dev/null and b/public/terrain/19/858501/353927.terrain differ diff --git a/public/terrain/19/858501/353928.terrain b/public/terrain/19/858501/353928.terrain new file mode 100644 index 000000000..c48fa1c36 Binary files /dev/null and b/public/terrain/19/858501/353928.terrain differ diff --git a/public/terrain/19/858501/353929.terrain b/public/terrain/19/858501/353929.terrain new file mode 100644 index 000000000..2503ccc6d Binary files /dev/null and b/public/terrain/19/858501/353929.terrain differ diff --git a/public/terrain/19/858501/353930.terrain b/public/terrain/19/858501/353930.terrain new file mode 100644 index 000000000..29c63a68a Binary files /dev/null and b/public/terrain/19/858501/353930.terrain differ diff --git a/public/terrain/19/858501/353931.terrain b/public/terrain/19/858501/353931.terrain new file mode 100644 index 000000000..5dd42785c Binary files /dev/null and b/public/terrain/19/858501/353931.terrain differ diff --git a/public/terrain/19/858501/353932.terrain b/public/terrain/19/858501/353932.terrain new file mode 100644 index 000000000..e37fb6766 Binary files /dev/null and b/public/terrain/19/858501/353932.terrain differ diff --git a/public/terrain/19/858501/353933.terrain b/public/terrain/19/858501/353933.terrain new file mode 100644 index 000000000..d78ebe1a2 Binary files /dev/null and b/public/terrain/19/858501/353933.terrain differ diff --git a/public/terrain/19/858501/353934.terrain b/public/terrain/19/858501/353934.terrain new file mode 100644 index 000000000..053ea2712 Binary files /dev/null and b/public/terrain/19/858501/353934.terrain differ diff --git a/public/terrain/19/858501/353935.terrain b/public/terrain/19/858501/353935.terrain new file mode 100644 index 000000000..19feb36d6 Binary files /dev/null and b/public/terrain/19/858501/353935.terrain differ diff --git a/public/terrain/19/858501/353936.terrain b/public/terrain/19/858501/353936.terrain new file mode 100644 index 000000000..558699521 Binary files /dev/null and b/public/terrain/19/858501/353936.terrain differ diff --git a/public/terrain/19/858501/353937.terrain b/public/terrain/19/858501/353937.terrain new file mode 100644 index 000000000..d25798e7e Binary files /dev/null and b/public/terrain/19/858501/353937.terrain differ diff --git a/public/terrain/19/858501/353938.terrain b/public/terrain/19/858501/353938.terrain new file mode 100644 index 000000000..d5df8c9bc Binary files /dev/null and b/public/terrain/19/858501/353938.terrain differ diff --git a/public/terrain/19/858501/353939.terrain b/public/terrain/19/858501/353939.terrain new file mode 100644 index 000000000..d4fb4163e Binary files /dev/null and b/public/terrain/19/858501/353939.terrain differ diff --git a/public/terrain/19/858501/353940.terrain b/public/terrain/19/858501/353940.terrain new file mode 100644 index 000000000..767c7d003 Binary files /dev/null and b/public/terrain/19/858501/353940.terrain differ diff --git a/public/terrain/19/858501/353941.terrain b/public/terrain/19/858501/353941.terrain new file mode 100644 index 000000000..c7141ac96 Binary files /dev/null and b/public/terrain/19/858501/353941.terrain differ diff --git a/public/terrain/19/858501/353942.terrain b/public/terrain/19/858501/353942.terrain new file mode 100644 index 000000000..825c57293 Binary files /dev/null and b/public/terrain/19/858501/353942.terrain differ diff --git a/public/terrain/19/858501/353943.terrain b/public/terrain/19/858501/353943.terrain new file mode 100644 index 000000000..417a0a5d5 Binary files /dev/null and b/public/terrain/19/858501/353943.terrain differ diff --git a/public/terrain/19/858501/353944.terrain b/public/terrain/19/858501/353944.terrain new file mode 100644 index 000000000..79d86edd9 Binary files /dev/null and b/public/terrain/19/858501/353944.terrain differ diff --git a/public/terrain/19/858501/353945.terrain b/public/terrain/19/858501/353945.terrain new file mode 100644 index 000000000..d5fc35788 Binary files /dev/null and b/public/terrain/19/858501/353945.terrain differ diff --git a/public/terrain/19/858501/353946.terrain b/public/terrain/19/858501/353946.terrain new file mode 100644 index 000000000..b4e18a3f7 Binary files /dev/null and b/public/terrain/19/858501/353946.terrain differ diff --git a/public/terrain/19/858501/353947.terrain b/public/terrain/19/858501/353947.terrain new file mode 100644 index 000000000..87a22c109 Binary files /dev/null and b/public/terrain/19/858501/353947.terrain differ diff --git a/public/terrain/19/858501/353948.terrain b/public/terrain/19/858501/353948.terrain new file mode 100644 index 000000000..633e950f5 Binary files /dev/null and b/public/terrain/19/858501/353948.terrain differ diff --git a/public/terrain/19/858501/353949.terrain b/public/terrain/19/858501/353949.terrain new file mode 100644 index 000000000..b910897d4 Binary files /dev/null and b/public/terrain/19/858501/353949.terrain differ diff --git a/public/terrain/19/858501/353950.terrain b/public/terrain/19/858501/353950.terrain new file mode 100644 index 000000000..d157fee3e Binary files /dev/null and b/public/terrain/19/858501/353950.terrain differ diff --git a/public/terrain/19/858501/353951.terrain b/public/terrain/19/858501/353951.terrain new file mode 100644 index 000000000..7b222f45b Binary files /dev/null and b/public/terrain/19/858501/353951.terrain differ diff --git a/public/terrain/19/858501/353952.terrain b/public/terrain/19/858501/353952.terrain new file mode 100644 index 000000000..575ff3dec Binary files /dev/null and b/public/terrain/19/858501/353952.terrain differ diff --git a/public/terrain/19/858501/353953.terrain b/public/terrain/19/858501/353953.terrain new file mode 100644 index 000000000..02e839241 Binary files /dev/null and b/public/terrain/19/858501/353953.terrain differ diff --git a/public/terrain/19/858501/353954.terrain b/public/terrain/19/858501/353954.terrain new file mode 100644 index 000000000..7e4ecd00d Binary files /dev/null and b/public/terrain/19/858501/353954.terrain differ diff --git a/public/terrain/19/858501/353955.terrain b/public/terrain/19/858501/353955.terrain new file mode 100644 index 000000000..1edf42d7c Binary files /dev/null and b/public/terrain/19/858501/353955.terrain differ diff --git a/public/terrain/19/858501/353956.terrain b/public/terrain/19/858501/353956.terrain new file mode 100644 index 000000000..0d810f8b1 Binary files /dev/null and b/public/terrain/19/858501/353956.terrain differ diff --git a/public/terrain/19/858501/353957.terrain b/public/terrain/19/858501/353957.terrain new file mode 100644 index 000000000..f98cda5e0 Binary files /dev/null and b/public/terrain/19/858501/353957.terrain differ diff --git a/public/terrain/19/858501/353958.terrain b/public/terrain/19/858501/353958.terrain new file mode 100644 index 000000000..16e3f19f2 Binary files /dev/null and b/public/terrain/19/858501/353958.terrain differ diff --git a/public/terrain/19/858501/353959.terrain b/public/terrain/19/858501/353959.terrain new file mode 100644 index 000000000..b61f276f2 Binary files /dev/null and b/public/terrain/19/858501/353959.terrain differ diff --git a/public/terrain/19/858501/353960.terrain b/public/terrain/19/858501/353960.terrain new file mode 100644 index 000000000..3bac47617 Binary files /dev/null and b/public/terrain/19/858501/353960.terrain differ diff --git a/public/terrain/19/858501/353961.terrain b/public/terrain/19/858501/353961.terrain new file mode 100644 index 000000000..d2a5024d5 Binary files /dev/null and b/public/terrain/19/858501/353961.terrain differ diff --git a/public/terrain/19/858501/353962.terrain b/public/terrain/19/858501/353962.terrain new file mode 100644 index 000000000..dc55c6925 Binary files /dev/null and b/public/terrain/19/858501/353962.terrain differ diff --git a/public/terrain/19/858501/353963.terrain b/public/terrain/19/858501/353963.terrain new file mode 100644 index 000000000..b81179217 Binary files /dev/null and b/public/terrain/19/858501/353963.terrain differ diff --git a/public/terrain/19/858501/353964.terrain b/public/terrain/19/858501/353964.terrain new file mode 100644 index 000000000..9ee2686de Binary files /dev/null and b/public/terrain/19/858501/353964.terrain differ diff --git a/public/terrain/19/858501/353965.terrain b/public/terrain/19/858501/353965.terrain new file mode 100644 index 000000000..3e638cc9e Binary files /dev/null and b/public/terrain/19/858501/353965.terrain differ diff --git a/public/terrain/19/858501/353966.terrain b/public/terrain/19/858501/353966.terrain new file mode 100644 index 000000000..53322043f Binary files /dev/null and b/public/terrain/19/858501/353966.terrain differ diff --git a/public/terrain/19/858501/353967.terrain b/public/terrain/19/858501/353967.terrain new file mode 100644 index 000000000..0bdb2476d Binary files /dev/null and b/public/terrain/19/858501/353967.terrain differ diff --git a/public/terrain/19/858501/353968.terrain b/public/terrain/19/858501/353968.terrain new file mode 100644 index 000000000..47b3cfa62 Binary files /dev/null and b/public/terrain/19/858501/353968.terrain differ diff --git a/public/terrain/19/858501/353969.terrain b/public/terrain/19/858501/353969.terrain new file mode 100644 index 000000000..15a6cb650 Binary files /dev/null and b/public/terrain/19/858501/353969.terrain differ diff --git a/public/terrain/19/858501/353970.terrain b/public/terrain/19/858501/353970.terrain new file mode 100644 index 000000000..5e3a904f4 Binary files /dev/null and b/public/terrain/19/858501/353970.terrain differ diff --git a/public/terrain/19/858501/353971.terrain b/public/terrain/19/858501/353971.terrain new file mode 100644 index 000000000..eee1c6110 Binary files /dev/null and b/public/terrain/19/858501/353971.terrain differ diff --git a/public/terrain/19/858501/353972.terrain b/public/terrain/19/858501/353972.terrain new file mode 100644 index 000000000..212975182 Binary files /dev/null and b/public/terrain/19/858501/353972.terrain differ diff --git a/public/terrain/19/858501/353973.terrain b/public/terrain/19/858501/353973.terrain new file mode 100644 index 000000000..ad40aa239 Binary files /dev/null and b/public/terrain/19/858501/353973.terrain differ diff --git a/public/terrain/19/858501/353974.terrain b/public/terrain/19/858501/353974.terrain new file mode 100644 index 000000000..c3d824760 Binary files /dev/null and b/public/terrain/19/858501/353974.terrain differ diff --git a/public/terrain/19/858501/353975.terrain b/public/terrain/19/858501/353975.terrain new file mode 100644 index 000000000..2b0c2a06a Binary files /dev/null and b/public/terrain/19/858501/353975.terrain differ diff --git a/public/terrain/19/858501/353976.terrain b/public/terrain/19/858501/353976.terrain new file mode 100644 index 000000000..6ed1c7fd8 Binary files /dev/null and b/public/terrain/19/858501/353976.terrain differ diff --git a/public/terrain/19/858501/353977.terrain b/public/terrain/19/858501/353977.terrain new file mode 100644 index 000000000..58fdc0abe Binary files /dev/null and b/public/terrain/19/858501/353977.terrain differ diff --git a/public/terrain/19/858501/353978.terrain b/public/terrain/19/858501/353978.terrain new file mode 100644 index 000000000..981d159f1 Binary files /dev/null and b/public/terrain/19/858501/353978.terrain differ diff --git a/public/terrain/19/858501/353979.terrain b/public/terrain/19/858501/353979.terrain new file mode 100644 index 000000000..4c9de8639 Binary files /dev/null and b/public/terrain/19/858501/353979.terrain differ diff --git a/public/terrain/19/858501/353980.terrain b/public/terrain/19/858501/353980.terrain new file mode 100644 index 000000000..8c1417cdf Binary files /dev/null and b/public/terrain/19/858501/353980.terrain differ diff --git a/public/terrain/19/858501/353981.terrain b/public/terrain/19/858501/353981.terrain new file mode 100644 index 000000000..2e8556aa3 Binary files /dev/null and b/public/terrain/19/858501/353981.terrain differ diff --git a/public/terrain/19/858501/353982.terrain b/public/terrain/19/858501/353982.terrain new file mode 100644 index 000000000..cd3570b17 Binary files /dev/null and b/public/terrain/19/858501/353982.terrain differ diff --git a/public/terrain/19/858501/353983.terrain b/public/terrain/19/858501/353983.terrain new file mode 100644 index 000000000..827d5f9c7 Binary files /dev/null and b/public/terrain/19/858501/353983.terrain differ diff --git a/public/terrain/19/858501/353984.terrain b/public/terrain/19/858501/353984.terrain new file mode 100644 index 000000000..63dddc137 Binary files /dev/null and b/public/terrain/19/858501/353984.terrain differ diff --git a/public/terrain/19/858501/353985.terrain b/public/terrain/19/858501/353985.terrain new file mode 100644 index 000000000..715e7b6dd Binary files /dev/null and b/public/terrain/19/858501/353985.terrain differ diff --git a/public/terrain/19/858501/353986.terrain b/public/terrain/19/858501/353986.terrain new file mode 100644 index 000000000..8eec45ecd Binary files /dev/null and b/public/terrain/19/858501/353986.terrain differ diff --git a/public/terrain/19/858501/353987.terrain b/public/terrain/19/858501/353987.terrain new file mode 100644 index 000000000..7c48f4c25 Binary files /dev/null and b/public/terrain/19/858501/353987.terrain differ diff --git a/public/terrain/19/858501/353988.terrain b/public/terrain/19/858501/353988.terrain new file mode 100644 index 000000000..7c5e67af9 Binary files /dev/null and b/public/terrain/19/858501/353988.terrain differ diff --git a/public/terrain/19/858501/353989.terrain b/public/terrain/19/858501/353989.terrain new file mode 100644 index 000000000..9fbbf6747 Binary files /dev/null and b/public/terrain/19/858501/353989.terrain differ diff --git a/public/terrain/19/858501/353990.terrain b/public/terrain/19/858501/353990.terrain new file mode 100644 index 000000000..2e1af5f61 Binary files /dev/null and b/public/terrain/19/858501/353990.terrain differ diff --git a/public/terrain/19/858501/353991.terrain b/public/terrain/19/858501/353991.terrain new file mode 100644 index 000000000..a429c8e21 Binary files /dev/null and b/public/terrain/19/858501/353991.terrain differ diff --git a/public/terrain/19/858501/353992.terrain b/public/terrain/19/858501/353992.terrain new file mode 100644 index 000000000..938601c52 Binary files /dev/null and b/public/terrain/19/858501/353992.terrain differ diff --git a/public/terrain/19/858501/353993.terrain b/public/terrain/19/858501/353993.terrain new file mode 100644 index 000000000..90f6ff555 Binary files /dev/null and b/public/terrain/19/858501/353993.terrain differ diff --git a/public/terrain/19/858501/353994.terrain b/public/terrain/19/858501/353994.terrain new file mode 100644 index 000000000..77c209e36 Binary files /dev/null and b/public/terrain/19/858501/353994.terrain differ diff --git a/public/terrain/19/858501/353995.terrain b/public/terrain/19/858501/353995.terrain new file mode 100644 index 000000000..1f79400f7 Binary files /dev/null and b/public/terrain/19/858501/353995.terrain differ diff --git a/public/terrain/19/858501/353996.terrain b/public/terrain/19/858501/353996.terrain new file mode 100644 index 000000000..a4e3b4716 Binary files /dev/null and b/public/terrain/19/858501/353996.terrain differ diff --git a/public/terrain/19/858501/353997.terrain b/public/terrain/19/858501/353997.terrain new file mode 100644 index 000000000..ebd68157a Binary files /dev/null and b/public/terrain/19/858501/353997.terrain differ diff --git a/public/terrain/19/858501/353998.terrain b/public/terrain/19/858501/353998.terrain new file mode 100644 index 000000000..1c9ca0a1a Binary files /dev/null and b/public/terrain/19/858501/353998.terrain differ diff --git a/public/terrain/19/858501/353999.terrain b/public/terrain/19/858501/353999.terrain new file mode 100644 index 000000000..cd442c309 Binary files /dev/null and b/public/terrain/19/858501/353999.terrain differ diff --git a/public/terrain/19/858501/354000.terrain b/public/terrain/19/858501/354000.terrain new file mode 100644 index 000000000..eb10575a5 Binary files /dev/null and b/public/terrain/19/858501/354000.terrain differ diff --git a/public/terrain/19/858501/354001.terrain b/public/terrain/19/858501/354001.terrain new file mode 100644 index 000000000..f630231cf Binary files /dev/null and b/public/terrain/19/858501/354001.terrain differ diff --git a/public/terrain/19/858501/354002.terrain b/public/terrain/19/858501/354002.terrain new file mode 100644 index 000000000..f321826bb Binary files /dev/null and b/public/terrain/19/858501/354002.terrain differ diff --git a/public/terrain/19/858501/354003.terrain b/public/terrain/19/858501/354003.terrain new file mode 100644 index 000000000..4084f8e4a Binary files /dev/null and b/public/terrain/19/858501/354003.terrain differ diff --git a/public/terrain/19/858501/354004.terrain b/public/terrain/19/858501/354004.terrain new file mode 100644 index 000000000..12fd3b2b1 Binary files /dev/null and b/public/terrain/19/858501/354004.terrain differ diff --git a/public/terrain/19/858501/354005.terrain b/public/terrain/19/858501/354005.terrain new file mode 100644 index 000000000..2c2567adb Binary files /dev/null and b/public/terrain/19/858501/354005.terrain differ diff --git a/public/terrain/19/858501/354006.terrain b/public/terrain/19/858501/354006.terrain new file mode 100644 index 000000000..a8bb14219 Binary files /dev/null and b/public/terrain/19/858501/354006.terrain differ diff --git a/public/terrain/19/858501/354007.terrain b/public/terrain/19/858501/354007.terrain new file mode 100644 index 000000000..6bdc4bc12 Binary files /dev/null and b/public/terrain/19/858501/354007.terrain differ diff --git a/public/terrain/19/858501/354008.terrain b/public/terrain/19/858501/354008.terrain new file mode 100644 index 000000000..ceb39b2cb Binary files /dev/null and b/public/terrain/19/858501/354008.terrain differ diff --git a/public/terrain/19/858501/354009.terrain b/public/terrain/19/858501/354009.terrain new file mode 100644 index 000000000..732c4eabc Binary files /dev/null and b/public/terrain/19/858501/354009.terrain differ diff --git a/public/terrain/19/858501/354010.terrain b/public/terrain/19/858501/354010.terrain new file mode 100644 index 000000000..445373914 Binary files /dev/null and b/public/terrain/19/858501/354010.terrain differ diff --git a/public/terrain/19/858501/354011.terrain b/public/terrain/19/858501/354011.terrain new file mode 100644 index 000000000..94699c663 Binary files /dev/null and b/public/terrain/19/858501/354011.terrain differ diff --git a/public/terrain/19/858501/354012.terrain b/public/terrain/19/858501/354012.terrain new file mode 100644 index 000000000..7bfc72358 Binary files /dev/null and b/public/terrain/19/858501/354012.terrain differ diff --git a/public/terrain/19/858501/354013.terrain b/public/terrain/19/858501/354013.terrain new file mode 100644 index 000000000..8b7fa63e5 Binary files /dev/null and b/public/terrain/19/858501/354013.terrain differ diff --git a/public/terrain/19/858501/354014.terrain b/public/terrain/19/858501/354014.terrain new file mode 100644 index 000000000..554a31bd4 Binary files /dev/null and b/public/terrain/19/858501/354014.terrain differ diff --git a/public/terrain/19/858501/354015.terrain b/public/terrain/19/858501/354015.terrain new file mode 100644 index 000000000..9bcf94c72 Binary files /dev/null and b/public/terrain/19/858501/354015.terrain differ diff --git a/public/terrain/19/858501/354016.terrain b/public/terrain/19/858501/354016.terrain new file mode 100644 index 000000000..8954a117d Binary files /dev/null and b/public/terrain/19/858501/354016.terrain differ diff --git a/public/terrain/19/858501/354017.terrain b/public/terrain/19/858501/354017.terrain new file mode 100644 index 000000000..1d0ab9bf1 Binary files /dev/null and b/public/terrain/19/858501/354017.terrain differ diff --git a/public/terrain/19/858501/354018.terrain b/public/terrain/19/858501/354018.terrain new file mode 100644 index 000000000..cbbea3115 Binary files /dev/null and b/public/terrain/19/858501/354018.terrain differ diff --git a/public/terrain/19/858501/354019.terrain b/public/terrain/19/858501/354019.terrain new file mode 100644 index 000000000..98895f649 Binary files /dev/null and b/public/terrain/19/858501/354019.terrain differ diff --git a/public/terrain/19/858501/354020.terrain b/public/terrain/19/858501/354020.terrain new file mode 100644 index 000000000..295490b85 Binary files /dev/null and b/public/terrain/19/858501/354020.terrain differ diff --git a/public/terrain/19/858501/354021.terrain b/public/terrain/19/858501/354021.terrain new file mode 100644 index 000000000..45ea49558 Binary files /dev/null and b/public/terrain/19/858501/354021.terrain differ diff --git a/public/terrain/19/858501/354022.terrain b/public/terrain/19/858501/354022.terrain new file mode 100644 index 000000000..c0b7d812b Binary files /dev/null and b/public/terrain/19/858501/354022.terrain differ diff --git a/public/terrain/19/858501/354023.terrain b/public/terrain/19/858501/354023.terrain new file mode 100644 index 000000000..cd6a08740 Binary files /dev/null and b/public/terrain/19/858501/354023.terrain differ diff --git a/public/terrain/19/858501/354024.terrain b/public/terrain/19/858501/354024.terrain new file mode 100644 index 000000000..8ebdb5fd5 Binary files /dev/null and b/public/terrain/19/858501/354024.terrain differ diff --git a/public/terrain/19/858501/354025.terrain b/public/terrain/19/858501/354025.terrain new file mode 100644 index 000000000..915750b65 Binary files /dev/null and b/public/terrain/19/858501/354025.terrain differ diff --git a/public/terrain/19/858501/354026.terrain b/public/terrain/19/858501/354026.terrain new file mode 100644 index 000000000..2350a82b8 Binary files /dev/null and b/public/terrain/19/858501/354026.terrain differ diff --git a/public/terrain/19/858501/354027.terrain b/public/terrain/19/858501/354027.terrain new file mode 100644 index 000000000..03bcf67d2 Binary files /dev/null and b/public/terrain/19/858501/354027.terrain differ diff --git a/public/terrain/19/858501/354028.terrain b/public/terrain/19/858501/354028.terrain new file mode 100644 index 000000000..62bca3db1 Binary files /dev/null and b/public/terrain/19/858501/354028.terrain differ diff --git a/public/terrain/19/858501/354029.terrain b/public/terrain/19/858501/354029.terrain new file mode 100644 index 000000000..cfa55c809 Binary files /dev/null and b/public/terrain/19/858501/354029.terrain differ diff --git a/public/terrain/19/858501/354030.terrain b/public/terrain/19/858501/354030.terrain new file mode 100644 index 000000000..dd53a8773 Binary files /dev/null and b/public/terrain/19/858501/354030.terrain differ diff --git a/public/terrain/19/858501/354031.terrain b/public/terrain/19/858501/354031.terrain new file mode 100644 index 000000000..9e4f831b0 Binary files /dev/null and b/public/terrain/19/858501/354031.terrain differ diff --git a/public/terrain/19/858501/354032.terrain b/public/terrain/19/858501/354032.terrain new file mode 100644 index 000000000..558e8e6a2 Binary files /dev/null and b/public/terrain/19/858501/354032.terrain differ diff --git a/public/terrain/19/858501/354033.terrain b/public/terrain/19/858501/354033.terrain new file mode 100644 index 000000000..a95fd904d Binary files /dev/null and b/public/terrain/19/858501/354033.terrain differ diff --git a/public/terrain/19/858501/354034.terrain b/public/terrain/19/858501/354034.terrain new file mode 100644 index 000000000..41d2769c2 Binary files /dev/null and b/public/terrain/19/858501/354034.terrain differ diff --git a/public/terrain/19/858501/354035.terrain b/public/terrain/19/858501/354035.terrain new file mode 100644 index 000000000..b858d692e Binary files /dev/null and b/public/terrain/19/858501/354035.terrain differ diff --git a/public/terrain/19/858501/354036.terrain b/public/terrain/19/858501/354036.terrain new file mode 100644 index 000000000..e981b78c4 Binary files /dev/null and b/public/terrain/19/858501/354036.terrain differ diff --git a/public/terrain/19/858501/354037.terrain b/public/terrain/19/858501/354037.terrain new file mode 100644 index 000000000..12cc9acb5 Binary files /dev/null and b/public/terrain/19/858501/354037.terrain differ diff --git a/public/terrain/19/858501/354038.terrain b/public/terrain/19/858501/354038.terrain new file mode 100644 index 000000000..feb53b261 Binary files /dev/null and b/public/terrain/19/858501/354038.terrain differ diff --git a/public/terrain/19/858501/354039.terrain b/public/terrain/19/858501/354039.terrain new file mode 100644 index 000000000..5213af0ca Binary files /dev/null and b/public/terrain/19/858501/354039.terrain differ diff --git a/public/terrain/19/858501/354040.terrain b/public/terrain/19/858501/354040.terrain new file mode 100644 index 000000000..3326dd4b4 Binary files /dev/null and b/public/terrain/19/858501/354040.terrain differ diff --git a/public/terrain/19/858501/354041.terrain b/public/terrain/19/858501/354041.terrain new file mode 100644 index 000000000..e6577a245 Binary files /dev/null and b/public/terrain/19/858501/354041.terrain differ diff --git a/public/terrain/19/858501/354042.terrain b/public/terrain/19/858501/354042.terrain new file mode 100644 index 000000000..4359b93bc Binary files /dev/null and b/public/terrain/19/858501/354042.terrain differ diff --git a/public/terrain/19/858501/354043.terrain b/public/terrain/19/858501/354043.terrain new file mode 100644 index 000000000..8606047ed Binary files /dev/null and b/public/terrain/19/858501/354043.terrain differ diff --git a/public/terrain/19/858501/354044.terrain b/public/terrain/19/858501/354044.terrain new file mode 100644 index 000000000..104e98ecf Binary files /dev/null and b/public/terrain/19/858501/354044.terrain differ diff --git a/public/terrain/19/858501/354045.terrain b/public/terrain/19/858501/354045.terrain new file mode 100644 index 000000000..19e32c165 Binary files /dev/null and b/public/terrain/19/858501/354045.terrain differ diff --git a/public/terrain/19/858501/354046.terrain b/public/terrain/19/858501/354046.terrain new file mode 100644 index 000000000..6905e1d46 Binary files /dev/null and b/public/terrain/19/858501/354046.terrain differ diff --git a/public/terrain/19/858501/354047.terrain b/public/terrain/19/858501/354047.terrain new file mode 100644 index 000000000..4bece879e Binary files /dev/null and b/public/terrain/19/858501/354047.terrain differ diff --git a/public/terrain/19/858501/354048.terrain b/public/terrain/19/858501/354048.terrain new file mode 100644 index 000000000..7a9d5241d Binary files /dev/null and b/public/terrain/19/858501/354048.terrain differ diff --git a/public/terrain/19/858501/354049.terrain b/public/terrain/19/858501/354049.terrain new file mode 100644 index 000000000..ce73eb2a5 Binary files /dev/null and b/public/terrain/19/858501/354049.terrain differ diff --git a/public/terrain/19/858501/354050.terrain b/public/terrain/19/858501/354050.terrain new file mode 100644 index 000000000..a42279e51 Binary files /dev/null and b/public/terrain/19/858501/354050.terrain differ diff --git a/public/terrain/19/858501/354051.terrain b/public/terrain/19/858501/354051.terrain new file mode 100644 index 000000000..09f14fc1c Binary files /dev/null and b/public/terrain/19/858501/354051.terrain differ diff --git a/public/terrain/19/858501/354052.terrain b/public/terrain/19/858501/354052.terrain new file mode 100644 index 000000000..3a620453e Binary files /dev/null and b/public/terrain/19/858501/354052.terrain differ diff --git a/public/terrain/19/858501/354053.terrain b/public/terrain/19/858501/354053.terrain new file mode 100644 index 000000000..88cb51c16 Binary files /dev/null and b/public/terrain/19/858501/354053.terrain differ diff --git a/public/terrain/19/858501/354054.terrain b/public/terrain/19/858501/354054.terrain new file mode 100644 index 000000000..a49d8da4f Binary files /dev/null and b/public/terrain/19/858501/354054.terrain differ diff --git a/public/terrain/19/858501/354055.terrain b/public/terrain/19/858501/354055.terrain new file mode 100644 index 000000000..d36355306 Binary files /dev/null and b/public/terrain/19/858501/354055.terrain differ diff --git a/public/terrain/19/858501/354056.terrain b/public/terrain/19/858501/354056.terrain new file mode 100644 index 000000000..4c4dc01ff Binary files /dev/null and b/public/terrain/19/858501/354056.terrain differ diff --git a/public/terrain/19/858501/354057.terrain b/public/terrain/19/858501/354057.terrain new file mode 100644 index 000000000..e5c68ee38 Binary files /dev/null and b/public/terrain/19/858501/354057.terrain differ diff --git a/public/terrain/19/858501/354058.terrain b/public/terrain/19/858501/354058.terrain new file mode 100644 index 000000000..ad27791e8 Binary files /dev/null and b/public/terrain/19/858501/354058.terrain differ diff --git a/public/terrain/19/858501/354059.terrain b/public/terrain/19/858501/354059.terrain new file mode 100644 index 000000000..b5fb0069a Binary files /dev/null and b/public/terrain/19/858501/354059.terrain differ diff --git a/public/terrain/19/858502/353743.terrain b/public/terrain/19/858502/353743.terrain new file mode 100644 index 000000000..c64d9ed7d Binary files /dev/null and b/public/terrain/19/858502/353743.terrain differ diff --git a/public/terrain/19/858502/353744.terrain b/public/terrain/19/858502/353744.terrain new file mode 100644 index 000000000..42e25dd27 Binary files /dev/null and b/public/terrain/19/858502/353744.terrain differ diff --git a/public/terrain/19/858502/353745.terrain b/public/terrain/19/858502/353745.terrain new file mode 100644 index 000000000..c7e772689 Binary files /dev/null and b/public/terrain/19/858502/353745.terrain differ diff --git a/public/terrain/19/858502/353746.terrain b/public/terrain/19/858502/353746.terrain new file mode 100644 index 000000000..59a44570c Binary files /dev/null and b/public/terrain/19/858502/353746.terrain differ diff --git a/public/terrain/19/858502/353747.terrain b/public/terrain/19/858502/353747.terrain new file mode 100644 index 000000000..b61822b1a Binary files /dev/null and b/public/terrain/19/858502/353747.terrain differ diff --git a/public/terrain/19/858502/353748.terrain b/public/terrain/19/858502/353748.terrain new file mode 100644 index 000000000..23ed0dcec Binary files /dev/null and b/public/terrain/19/858502/353748.terrain differ diff --git a/public/terrain/19/858502/353749.terrain b/public/terrain/19/858502/353749.terrain new file mode 100644 index 000000000..c0ad8daad Binary files /dev/null and b/public/terrain/19/858502/353749.terrain differ diff --git a/public/terrain/19/858502/353750.terrain b/public/terrain/19/858502/353750.terrain new file mode 100644 index 000000000..9917c9a14 Binary files /dev/null and b/public/terrain/19/858502/353750.terrain differ diff --git a/public/terrain/19/858502/353751.terrain b/public/terrain/19/858502/353751.terrain new file mode 100644 index 000000000..83eeeec64 Binary files /dev/null and b/public/terrain/19/858502/353751.terrain differ diff --git a/public/terrain/19/858502/353752.terrain b/public/terrain/19/858502/353752.terrain new file mode 100644 index 000000000..3b79174fc Binary files /dev/null and b/public/terrain/19/858502/353752.terrain differ diff --git a/public/terrain/19/858502/353753.terrain b/public/terrain/19/858502/353753.terrain new file mode 100644 index 000000000..2df054521 Binary files /dev/null and b/public/terrain/19/858502/353753.terrain differ diff --git a/public/terrain/19/858502/353754.terrain b/public/terrain/19/858502/353754.terrain new file mode 100644 index 000000000..928798f40 Binary files /dev/null and b/public/terrain/19/858502/353754.terrain differ diff --git a/public/terrain/19/858502/353755.terrain b/public/terrain/19/858502/353755.terrain new file mode 100644 index 000000000..16c723924 Binary files /dev/null and b/public/terrain/19/858502/353755.terrain differ diff --git a/public/terrain/19/858502/353756.terrain b/public/terrain/19/858502/353756.terrain new file mode 100644 index 000000000..d96b8c649 Binary files /dev/null and b/public/terrain/19/858502/353756.terrain differ diff --git a/public/terrain/19/858502/353757.terrain b/public/terrain/19/858502/353757.terrain new file mode 100644 index 000000000..2e9def78f Binary files /dev/null and b/public/terrain/19/858502/353757.terrain differ diff --git a/public/terrain/19/858502/353758.terrain b/public/terrain/19/858502/353758.terrain new file mode 100644 index 000000000..0598ba152 Binary files /dev/null and b/public/terrain/19/858502/353758.terrain differ diff --git a/public/terrain/19/858502/353759.terrain b/public/terrain/19/858502/353759.terrain new file mode 100644 index 000000000..721e5b1db Binary files /dev/null and b/public/terrain/19/858502/353759.terrain differ diff --git a/public/terrain/19/858502/353760.terrain b/public/terrain/19/858502/353760.terrain new file mode 100644 index 000000000..3cf1ff2ac Binary files /dev/null and b/public/terrain/19/858502/353760.terrain differ diff --git a/public/terrain/19/858502/353761.terrain b/public/terrain/19/858502/353761.terrain new file mode 100644 index 000000000..cd68e4514 Binary files /dev/null and b/public/terrain/19/858502/353761.terrain differ diff --git a/public/terrain/19/858502/353762.terrain b/public/terrain/19/858502/353762.terrain new file mode 100644 index 000000000..2e6780955 Binary files /dev/null and b/public/terrain/19/858502/353762.terrain differ diff --git a/public/terrain/19/858502/353763.terrain b/public/terrain/19/858502/353763.terrain new file mode 100644 index 000000000..5d684449d Binary files /dev/null and b/public/terrain/19/858502/353763.terrain differ diff --git a/public/terrain/19/858502/353764.terrain b/public/terrain/19/858502/353764.terrain new file mode 100644 index 000000000..47f05d309 Binary files /dev/null and b/public/terrain/19/858502/353764.terrain differ diff --git a/public/terrain/19/858502/353765.terrain b/public/terrain/19/858502/353765.terrain new file mode 100644 index 000000000..697b9d4bc Binary files /dev/null and b/public/terrain/19/858502/353765.terrain differ diff --git a/public/terrain/19/858502/353766.terrain b/public/terrain/19/858502/353766.terrain new file mode 100644 index 000000000..7e3dde826 Binary files /dev/null and b/public/terrain/19/858502/353766.terrain differ diff --git a/public/terrain/19/858502/353767.terrain b/public/terrain/19/858502/353767.terrain new file mode 100644 index 000000000..67d138376 Binary files /dev/null and b/public/terrain/19/858502/353767.terrain differ diff --git a/public/terrain/19/858502/353768.terrain b/public/terrain/19/858502/353768.terrain new file mode 100644 index 000000000..25b039de4 Binary files /dev/null and b/public/terrain/19/858502/353768.terrain differ diff --git a/public/terrain/19/858502/353769.terrain b/public/terrain/19/858502/353769.terrain new file mode 100644 index 000000000..69996119f Binary files /dev/null and b/public/terrain/19/858502/353769.terrain differ diff --git a/public/terrain/19/858502/353770.terrain b/public/terrain/19/858502/353770.terrain new file mode 100644 index 000000000..17afc0c3e Binary files /dev/null and b/public/terrain/19/858502/353770.terrain differ diff --git a/public/terrain/19/858502/353771.terrain b/public/terrain/19/858502/353771.terrain new file mode 100644 index 000000000..0ba361c6a Binary files /dev/null and b/public/terrain/19/858502/353771.terrain differ diff --git a/public/terrain/19/858502/353772.terrain b/public/terrain/19/858502/353772.terrain new file mode 100644 index 000000000..fca9c6bb2 Binary files /dev/null and b/public/terrain/19/858502/353772.terrain differ diff --git a/public/terrain/19/858502/353773.terrain b/public/terrain/19/858502/353773.terrain new file mode 100644 index 000000000..d2db66329 Binary files /dev/null and b/public/terrain/19/858502/353773.terrain differ diff --git a/public/terrain/19/858502/353774.terrain b/public/terrain/19/858502/353774.terrain new file mode 100644 index 000000000..0216221bd Binary files /dev/null and b/public/terrain/19/858502/353774.terrain differ diff --git a/public/terrain/19/858502/353775.terrain b/public/terrain/19/858502/353775.terrain new file mode 100644 index 000000000..6f561e43c Binary files /dev/null and b/public/terrain/19/858502/353775.terrain differ diff --git a/public/terrain/19/858502/353776.terrain b/public/terrain/19/858502/353776.terrain new file mode 100644 index 000000000..38cfe1ca3 Binary files /dev/null and b/public/terrain/19/858502/353776.terrain differ diff --git a/public/terrain/19/858502/353777.terrain b/public/terrain/19/858502/353777.terrain new file mode 100644 index 000000000..01db170ff Binary files /dev/null and b/public/terrain/19/858502/353777.terrain differ diff --git a/public/terrain/19/858502/353778.terrain b/public/terrain/19/858502/353778.terrain new file mode 100644 index 000000000..44a76d49a Binary files /dev/null and b/public/terrain/19/858502/353778.terrain differ diff --git a/public/terrain/19/858502/353779.terrain b/public/terrain/19/858502/353779.terrain new file mode 100644 index 000000000..291002e66 Binary files /dev/null and b/public/terrain/19/858502/353779.terrain differ diff --git a/public/terrain/19/858502/353780.terrain b/public/terrain/19/858502/353780.terrain new file mode 100644 index 000000000..2abfa9080 Binary files /dev/null and b/public/terrain/19/858502/353780.terrain differ diff --git a/public/terrain/19/858502/353781.terrain b/public/terrain/19/858502/353781.terrain new file mode 100644 index 000000000..cef2c1e63 Binary files /dev/null and b/public/terrain/19/858502/353781.terrain differ diff --git a/public/terrain/19/858502/353782.terrain b/public/terrain/19/858502/353782.terrain new file mode 100644 index 000000000..e080a9c19 Binary files /dev/null and b/public/terrain/19/858502/353782.terrain differ diff --git a/public/terrain/19/858502/353783.terrain b/public/terrain/19/858502/353783.terrain new file mode 100644 index 000000000..cd31170eb Binary files /dev/null and b/public/terrain/19/858502/353783.terrain differ diff --git a/public/terrain/19/858502/353784.terrain b/public/terrain/19/858502/353784.terrain new file mode 100644 index 000000000..50e613760 Binary files /dev/null and b/public/terrain/19/858502/353784.terrain differ diff --git a/public/terrain/19/858502/353785.terrain b/public/terrain/19/858502/353785.terrain new file mode 100644 index 000000000..7ec96dcc9 Binary files /dev/null and b/public/terrain/19/858502/353785.terrain differ diff --git a/public/terrain/19/858502/353786.terrain b/public/terrain/19/858502/353786.terrain new file mode 100644 index 000000000..738ee5335 Binary files /dev/null and b/public/terrain/19/858502/353786.terrain differ diff --git a/public/terrain/19/858502/353787.terrain b/public/terrain/19/858502/353787.terrain new file mode 100644 index 000000000..3baf8e7ff Binary files /dev/null and b/public/terrain/19/858502/353787.terrain differ diff --git a/public/terrain/19/858502/353788.terrain b/public/terrain/19/858502/353788.terrain new file mode 100644 index 000000000..604fcac12 Binary files /dev/null and b/public/terrain/19/858502/353788.terrain differ diff --git a/public/terrain/19/858502/353789.terrain b/public/terrain/19/858502/353789.terrain new file mode 100644 index 000000000..8b46de672 Binary files /dev/null and b/public/terrain/19/858502/353789.terrain differ diff --git a/public/terrain/19/858502/353790.terrain b/public/terrain/19/858502/353790.terrain new file mode 100644 index 000000000..280c9c6ce Binary files /dev/null and b/public/terrain/19/858502/353790.terrain differ diff --git a/public/terrain/19/858502/353791.terrain b/public/terrain/19/858502/353791.terrain new file mode 100644 index 000000000..2950a7e4e Binary files /dev/null and b/public/terrain/19/858502/353791.terrain differ diff --git a/public/terrain/19/858502/353792.terrain b/public/terrain/19/858502/353792.terrain new file mode 100644 index 000000000..1529b7b7c Binary files /dev/null and b/public/terrain/19/858502/353792.terrain differ diff --git a/public/terrain/19/858502/353793.terrain b/public/terrain/19/858502/353793.terrain new file mode 100644 index 000000000..1cdc44f81 Binary files /dev/null and b/public/terrain/19/858502/353793.terrain differ diff --git a/public/terrain/19/858502/353794.terrain b/public/terrain/19/858502/353794.terrain new file mode 100644 index 000000000..2782f549f Binary files /dev/null and b/public/terrain/19/858502/353794.terrain differ diff --git a/public/terrain/19/858502/353795.terrain b/public/terrain/19/858502/353795.terrain new file mode 100644 index 000000000..994a60d77 Binary files /dev/null and b/public/terrain/19/858502/353795.terrain differ diff --git a/public/terrain/19/858502/353796.terrain b/public/terrain/19/858502/353796.terrain new file mode 100644 index 000000000..150536869 Binary files /dev/null and b/public/terrain/19/858502/353796.terrain differ diff --git a/public/terrain/19/858502/353797.terrain b/public/terrain/19/858502/353797.terrain new file mode 100644 index 000000000..916bd7cd7 Binary files /dev/null and b/public/terrain/19/858502/353797.terrain differ diff --git a/public/terrain/19/858502/353798.terrain b/public/terrain/19/858502/353798.terrain new file mode 100644 index 000000000..ad16e5429 Binary files /dev/null and b/public/terrain/19/858502/353798.terrain differ diff --git a/public/terrain/19/858502/353799.terrain b/public/terrain/19/858502/353799.terrain new file mode 100644 index 000000000..7333f521d Binary files /dev/null and b/public/terrain/19/858502/353799.terrain differ diff --git a/public/terrain/19/858502/353800.terrain b/public/terrain/19/858502/353800.terrain new file mode 100644 index 000000000..0b65fc0fe Binary files /dev/null and b/public/terrain/19/858502/353800.terrain differ diff --git a/public/terrain/19/858502/353801.terrain b/public/terrain/19/858502/353801.terrain new file mode 100644 index 000000000..54b7ec45a Binary files /dev/null and b/public/terrain/19/858502/353801.terrain differ diff --git a/public/terrain/19/858502/353802.terrain b/public/terrain/19/858502/353802.terrain new file mode 100644 index 000000000..065bb5c01 Binary files /dev/null and b/public/terrain/19/858502/353802.terrain differ diff --git a/public/terrain/19/858502/353803.terrain b/public/terrain/19/858502/353803.terrain new file mode 100644 index 000000000..084f69a0f Binary files /dev/null and b/public/terrain/19/858502/353803.terrain differ diff --git a/public/terrain/19/858502/353804.terrain b/public/terrain/19/858502/353804.terrain new file mode 100644 index 000000000..6d4f3528c Binary files /dev/null and b/public/terrain/19/858502/353804.terrain differ diff --git a/public/terrain/19/858502/353805.terrain b/public/terrain/19/858502/353805.terrain new file mode 100644 index 000000000..8989f4581 Binary files /dev/null and b/public/terrain/19/858502/353805.terrain differ diff --git a/public/terrain/19/858502/353806.terrain b/public/terrain/19/858502/353806.terrain new file mode 100644 index 000000000..ff571d7e0 Binary files /dev/null and b/public/terrain/19/858502/353806.terrain differ diff --git a/public/terrain/19/858502/353807.terrain b/public/terrain/19/858502/353807.terrain new file mode 100644 index 000000000..0a9ea5db8 Binary files /dev/null and b/public/terrain/19/858502/353807.terrain differ diff --git a/public/terrain/19/858502/353808.terrain b/public/terrain/19/858502/353808.terrain new file mode 100644 index 000000000..2512ee4e9 Binary files /dev/null and b/public/terrain/19/858502/353808.terrain differ diff --git a/public/terrain/19/858502/353809.terrain b/public/terrain/19/858502/353809.terrain new file mode 100644 index 000000000..2477aff83 Binary files /dev/null and b/public/terrain/19/858502/353809.terrain differ diff --git a/public/terrain/19/858502/353810.terrain b/public/terrain/19/858502/353810.terrain new file mode 100644 index 000000000..e0abea78f Binary files /dev/null and b/public/terrain/19/858502/353810.terrain differ diff --git a/public/terrain/19/858502/353811.terrain b/public/terrain/19/858502/353811.terrain new file mode 100644 index 000000000..ead6f2d48 Binary files /dev/null and b/public/terrain/19/858502/353811.terrain differ diff --git a/public/terrain/19/858502/353812.terrain b/public/terrain/19/858502/353812.terrain new file mode 100644 index 000000000..507734cdc Binary files /dev/null and b/public/terrain/19/858502/353812.terrain differ diff --git a/public/terrain/19/858502/353813.terrain b/public/terrain/19/858502/353813.terrain new file mode 100644 index 000000000..78fe91e16 Binary files /dev/null and b/public/terrain/19/858502/353813.terrain differ diff --git a/public/terrain/19/858502/353814.terrain b/public/terrain/19/858502/353814.terrain new file mode 100644 index 000000000..e7cb747d3 Binary files /dev/null and b/public/terrain/19/858502/353814.terrain differ diff --git a/public/terrain/19/858502/353815.terrain b/public/terrain/19/858502/353815.terrain new file mode 100644 index 000000000..9470298cd Binary files /dev/null and b/public/terrain/19/858502/353815.terrain differ diff --git a/public/terrain/19/858502/353816.terrain b/public/terrain/19/858502/353816.terrain new file mode 100644 index 000000000..3ae20cdc3 Binary files /dev/null and b/public/terrain/19/858502/353816.terrain differ diff --git a/public/terrain/19/858502/353817.terrain b/public/terrain/19/858502/353817.terrain new file mode 100644 index 000000000..87d7a2ffb Binary files /dev/null and b/public/terrain/19/858502/353817.terrain differ diff --git a/public/terrain/19/858502/353818.terrain b/public/terrain/19/858502/353818.terrain new file mode 100644 index 000000000..7b28e562b Binary files /dev/null and b/public/terrain/19/858502/353818.terrain differ diff --git a/public/terrain/19/858502/353819.terrain b/public/terrain/19/858502/353819.terrain new file mode 100644 index 000000000..09589c933 Binary files /dev/null and b/public/terrain/19/858502/353819.terrain differ diff --git a/public/terrain/19/858502/353820.terrain b/public/terrain/19/858502/353820.terrain new file mode 100644 index 000000000..e9aa307f2 Binary files /dev/null and b/public/terrain/19/858502/353820.terrain differ diff --git a/public/terrain/19/858502/353821.terrain b/public/terrain/19/858502/353821.terrain new file mode 100644 index 000000000..6ae4e4f99 Binary files /dev/null and b/public/terrain/19/858502/353821.terrain differ diff --git a/public/terrain/19/858502/353822.terrain b/public/terrain/19/858502/353822.terrain new file mode 100644 index 000000000..562483c14 Binary files /dev/null and b/public/terrain/19/858502/353822.terrain differ diff --git a/public/terrain/19/858502/353823.terrain b/public/terrain/19/858502/353823.terrain new file mode 100644 index 000000000..0e6fce278 Binary files /dev/null and b/public/terrain/19/858502/353823.terrain differ diff --git a/public/terrain/19/858502/353824.terrain b/public/terrain/19/858502/353824.terrain new file mode 100644 index 000000000..a52fa24bf Binary files /dev/null and b/public/terrain/19/858502/353824.terrain differ diff --git a/public/terrain/19/858502/353825.terrain b/public/terrain/19/858502/353825.terrain new file mode 100644 index 000000000..cc558ff27 Binary files /dev/null and b/public/terrain/19/858502/353825.terrain differ diff --git a/public/terrain/19/858502/353826.terrain b/public/terrain/19/858502/353826.terrain new file mode 100644 index 000000000..081a02457 Binary files /dev/null and b/public/terrain/19/858502/353826.terrain differ diff --git a/public/terrain/19/858502/353827.terrain b/public/terrain/19/858502/353827.terrain new file mode 100644 index 000000000..eceadcd22 Binary files /dev/null and b/public/terrain/19/858502/353827.terrain differ diff --git a/public/terrain/19/858502/353828.terrain b/public/terrain/19/858502/353828.terrain new file mode 100644 index 000000000..5238ae3af Binary files /dev/null and b/public/terrain/19/858502/353828.terrain differ diff --git a/public/terrain/19/858502/353829.terrain b/public/terrain/19/858502/353829.terrain new file mode 100644 index 000000000..073092f31 Binary files /dev/null and b/public/terrain/19/858502/353829.terrain differ diff --git a/public/terrain/19/858502/353830.terrain b/public/terrain/19/858502/353830.terrain new file mode 100644 index 000000000..a502d198f Binary files /dev/null and b/public/terrain/19/858502/353830.terrain differ diff --git a/public/terrain/19/858502/353831.terrain b/public/terrain/19/858502/353831.terrain new file mode 100644 index 000000000..9c59a94df Binary files /dev/null and b/public/terrain/19/858502/353831.terrain differ diff --git a/public/terrain/19/858502/353832.terrain b/public/terrain/19/858502/353832.terrain new file mode 100644 index 000000000..70fec78e2 Binary files /dev/null and b/public/terrain/19/858502/353832.terrain differ diff --git a/public/terrain/19/858502/353833.terrain b/public/terrain/19/858502/353833.terrain new file mode 100644 index 000000000..7b77a6a66 Binary files /dev/null and b/public/terrain/19/858502/353833.terrain differ diff --git a/public/terrain/19/858502/353834.terrain b/public/terrain/19/858502/353834.terrain new file mode 100644 index 000000000..66d332982 Binary files /dev/null and b/public/terrain/19/858502/353834.terrain differ diff --git a/public/terrain/19/858502/353835.terrain b/public/terrain/19/858502/353835.terrain new file mode 100644 index 000000000..049431bf3 Binary files /dev/null and b/public/terrain/19/858502/353835.terrain differ diff --git a/public/terrain/19/858502/353836.terrain b/public/terrain/19/858502/353836.terrain new file mode 100644 index 000000000..17b052e35 Binary files /dev/null and b/public/terrain/19/858502/353836.terrain differ diff --git a/public/terrain/19/858502/353837.terrain b/public/terrain/19/858502/353837.terrain new file mode 100644 index 000000000..9882ced1c Binary files /dev/null and b/public/terrain/19/858502/353837.terrain differ diff --git a/public/terrain/19/858502/353838.terrain b/public/terrain/19/858502/353838.terrain new file mode 100644 index 000000000..d377c1b21 Binary files /dev/null and b/public/terrain/19/858502/353838.terrain differ diff --git a/public/terrain/19/858502/353839.terrain b/public/terrain/19/858502/353839.terrain new file mode 100644 index 000000000..6229f8acd Binary files /dev/null and b/public/terrain/19/858502/353839.terrain differ diff --git a/public/terrain/19/858502/353840.terrain b/public/terrain/19/858502/353840.terrain new file mode 100644 index 000000000..42c38f3f3 Binary files /dev/null and b/public/terrain/19/858502/353840.terrain differ diff --git a/public/terrain/19/858502/353841.terrain b/public/terrain/19/858502/353841.terrain new file mode 100644 index 000000000..252e00180 Binary files /dev/null and b/public/terrain/19/858502/353841.terrain differ diff --git a/public/terrain/19/858502/353842.terrain b/public/terrain/19/858502/353842.terrain new file mode 100644 index 000000000..a81bfe143 Binary files /dev/null and b/public/terrain/19/858502/353842.terrain differ diff --git a/public/terrain/19/858502/353843.terrain b/public/terrain/19/858502/353843.terrain new file mode 100644 index 000000000..17aed78a1 Binary files /dev/null and b/public/terrain/19/858502/353843.terrain differ diff --git a/public/terrain/19/858502/353844.terrain b/public/terrain/19/858502/353844.terrain new file mode 100644 index 000000000..afa9a200c Binary files /dev/null and b/public/terrain/19/858502/353844.terrain differ diff --git a/public/terrain/19/858502/353845.terrain b/public/terrain/19/858502/353845.terrain new file mode 100644 index 000000000..cc2b6fd9b Binary files /dev/null and b/public/terrain/19/858502/353845.terrain differ diff --git a/public/terrain/19/858502/353846.terrain b/public/terrain/19/858502/353846.terrain new file mode 100644 index 000000000..693ea7e0b Binary files /dev/null and b/public/terrain/19/858502/353846.terrain differ diff --git a/public/terrain/19/858502/353847.terrain b/public/terrain/19/858502/353847.terrain new file mode 100644 index 000000000..719dae1d3 Binary files /dev/null and b/public/terrain/19/858502/353847.terrain differ diff --git a/public/terrain/19/858502/353848.terrain b/public/terrain/19/858502/353848.terrain new file mode 100644 index 000000000..41d5579d6 Binary files /dev/null and b/public/terrain/19/858502/353848.terrain differ diff --git a/public/terrain/19/858502/353849.terrain b/public/terrain/19/858502/353849.terrain new file mode 100644 index 000000000..f3d6793a4 Binary files /dev/null and b/public/terrain/19/858502/353849.terrain differ diff --git a/public/terrain/19/858502/353850.terrain b/public/terrain/19/858502/353850.terrain new file mode 100644 index 000000000..91c9f777e Binary files /dev/null and b/public/terrain/19/858502/353850.terrain differ diff --git a/public/terrain/19/858502/353851.terrain b/public/terrain/19/858502/353851.terrain new file mode 100644 index 000000000..fec67c66a Binary files /dev/null and b/public/terrain/19/858502/353851.terrain differ diff --git a/public/terrain/19/858502/353852.terrain b/public/terrain/19/858502/353852.terrain new file mode 100644 index 000000000..ede4bbf18 Binary files /dev/null and b/public/terrain/19/858502/353852.terrain differ diff --git a/public/terrain/19/858502/353853.terrain b/public/terrain/19/858502/353853.terrain new file mode 100644 index 000000000..62a8edad6 Binary files /dev/null and b/public/terrain/19/858502/353853.terrain differ diff --git a/public/terrain/19/858502/353854.terrain b/public/terrain/19/858502/353854.terrain new file mode 100644 index 000000000..7a7afb4bb Binary files /dev/null and b/public/terrain/19/858502/353854.terrain differ diff --git a/public/terrain/19/858502/353855.terrain b/public/terrain/19/858502/353855.terrain new file mode 100644 index 000000000..18a1ff730 Binary files /dev/null and b/public/terrain/19/858502/353855.terrain differ diff --git a/public/terrain/19/858502/353856.terrain b/public/terrain/19/858502/353856.terrain new file mode 100644 index 000000000..267f1f5d1 Binary files /dev/null and b/public/terrain/19/858502/353856.terrain differ diff --git a/public/terrain/19/858502/353857.terrain b/public/terrain/19/858502/353857.terrain new file mode 100644 index 000000000..d2c293d5c Binary files /dev/null and b/public/terrain/19/858502/353857.terrain differ diff --git a/public/terrain/19/858502/353858.terrain b/public/terrain/19/858502/353858.terrain new file mode 100644 index 000000000..af184a518 Binary files /dev/null and b/public/terrain/19/858502/353858.terrain differ diff --git a/public/terrain/19/858502/353859.terrain b/public/terrain/19/858502/353859.terrain new file mode 100644 index 000000000..757578a09 Binary files /dev/null and b/public/terrain/19/858502/353859.terrain differ diff --git a/public/terrain/19/858502/353860.terrain b/public/terrain/19/858502/353860.terrain new file mode 100644 index 000000000..f7cacd968 Binary files /dev/null and b/public/terrain/19/858502/353860.terrain differ diff --git a/public/terrain/19/858502/353861.terrain b/public/terrain/19/858502/353861.terrain new file mode 100644 index 000000000..7edfb5e99 Binary files /dev/null and b/public/terrain/19/858502/353861.terrain differ diff --git a/public/terrain/19/858502/353862.terrain b/public/terrain/19/858502/353862.terrain new file mode 100644 index 000000000..d6e0bb926 Binary files /dev/null and b/public/terrain/19/858502/353862.terrain differ diff --git a/public/terrain/19/858502/353863.terrain b/public/terrain/19/858502/353863.terrain new file mode 100644 index 000000000..267f5b5cf Binary files /dev/null and b/public/terrain/19/858502/353863.terrain differ diff --git a/public/terrain/19/858502/353864.terrain b/public/terrain/19/858502/353864.terrain new file mode 100644 index 000000000..979a1aaa2 Binary files /dev/null and b/public/terrain/19/858502/353864.terrain differ diff --git a/public/terrain/19/858502/353865.terrain b/public/terrain/19/858502/353865.terrain new file mode 100644 index 000000000..809450ae1 Binary files /dev/null and b/public/terrain/19/858502/353865.terrain differ diff --git a/public/terrain/19/858502/353866.terrain b/public/terrain/19/858502/353866.terrain new file mode 100644 index 000000000..d6c81b8f9 Binary files /dev/null and b/public/terrain/19/858502/353866.terrain differ diff --git a/public/terrain/19/858502/353867.terrain b/public/terrain/19/858502/353867.terrain new file mode 100644 index 000000000..3391011b8 Binary files /dev/null and b/public/terrain/19/858502/353867.terrain differ diff --git a/public/terrain/19/858502/353868.terrain b/public/terrain/19/858502/353868.terrain new file mode 100644 index 000000000..a72b645ea Binary files /dev/null and b/public/terrain/19/858502/353868.terrain differ diff --git a/public/terrain/19/858502/353869.terrain b/public/terrain/19/858502/353869.terrain new file mode 100644 index 000000000..d1dc1247d Binary files /dev/null and b/public/terrain/19/858502/353869.terrain differ diff --git a/public/terrain/19/858502/353870.terrain b/public/terrain/19/858502/353870.terrain new file mode 100644 index 000000000..cef8a20cc Binary files /dev/null and b/public/terrain/19/858502/353870.terrain differ diff --git a/public/terrain/19/858502/353871.terrain b/public/terrain/19/858502/353871.terrain new file mode 100644 index 000000000..66faaaa67 Binary files /dev/null and b/public/terrain/19/858502/353871.terrain differ diff --git a/public/terrain/19/858502/353872.terrain b/public/terrain/19/858502/353872.terrain new file mode 100644 index 000000000..d448a0bf5 Binary files /dev/null and b/public/terrain/19/858502/353872.terrain differ diff --git a/public/terrain/19/858502/353873.terrain b/public/terrain/19/858502/353873.terrain new file mode 100644 index 000000000..567157268 Binary files /dev/null and b/public/terrain/19/858502/353873.terrain differ diff --git a/public/terrain/19/858502/353874.terrain b/public/terrain/19/858502/353874.terrain new file mode 100644 index 000000000..5882ad536 Binary files /dev/null and b/public/terrain/19/858502/353874.terrain differ diff --git a/public/terrain/19/858502/353875.terrain b/public/terrain/19/858502/353875.terrain new file mode 100644 index 000000000..def51983c Binary files /dev/null and b/public/terrain/19/858502/353875.terrain differ diff --git a/public/terrain/19/858502/353876.terrain b/public/terrain/19/858502/353876.terrain new file mode 100644 index 000000000..a33bc32bf Binary files /dev/null and b/public/terrain/19/858502/353876.terrain differ diff --git a/public/terrain/19/858502/353877.terrain b/public/terrain/19/858502/353877.terrain new file mode 100644 index 000000000..a4e11779b Binary files /dev/null and b/public/terrain/19/858502/353877.terrain differ diff --git a/public/terrain/19/858502/353878.terrain b/public/terrain/19/858502/353878.terrain new file mode 100644 index 000000000..fdee03eb5 Binary files /dev/null and b/public/terrain/19/858502/353878.terrain differ diff --git a/public/terrain/19/858502/353879.terrain b/public/terrain/19/858502/353879.terrain new file mode 100644 index 000000000..17e489541 Binary files /dev/null and b/public/terrain/19/858502/353879.terrain differ diff --git a/public/terrain/19/858502/353880.terrain b/public/terrain/19/858502/353880.terrain new file mode 100644 index 000000000..23215ba5e Binary files /dev/null and b/public/terrain/19/858502/353880.terrain differ diff --git a/public/terrain/19/858502/353881.terrain b/public/terrain/19/858502/353881.terrain new file mode 100644 index 000000000..c65d2322b Binary files /dev/null and b/public/terrain/19/858502/353881.terrain differ diff --git a/public/terrain/19/858502/353882.terrain b/public/terrain/19/858502/353882.terrain new file mode 100644 index 000000000..ba1b1889c Binary files /dev/null and b/public/terrain/19/858502/353882.terrain differ diff --git a/public/terrain/19/858502/353883.terrain b/public/terrain/19/858502/353883.terrain new file mode 100644 index 000000000..55162db13 Binary files /dev/null and b/public/terrain/19/858502/353883.terrain differ diff --git a/public/terrain/19/858502/353884.terrain b/public/terrain/19/858502/353884.terrain new file mode 100644 index 000000000..caeeb194c Binary files /dev/null and b/public/terrain/19/858502/353884.terrain differ diff --git a/public/terrain/19/858502/353885.terrain b/public/terrain/19/858502/353885.terrain new file mode 100644 index 000000000..9bac3cd3f Binary files /dev/null and b/public/terrain/19/858502/353885.terrain differ diff --git a/public/terrain/19/858502/353886.terrain b/public/terrain/19/858502/353886.terrain new file mode 100644 index 000000000..0d0485adc Binary files /dev/null and b/public/terrain/19/858502/353886.terrain differ diff --git a/public/terrain/19/858502/353887.terrain b/public/terrain/19/858502/353887.terrain new file mode 100644 index 000000000..dd6723928 Binary files /dev/null and b/public/terrain/19/858502/353887.terrain differ diff --git a/public/terrain/19/858502/353888.terrain b/public/terrain/19/858502/353888.terrain new file mode 100644 index 000000000..a868ec780 Binary files /dev/null and b/public/terrain/19/858502/353888.terrain differ diff --git a/public/terrain/19/858502/353889.terrain b/public/terrain/19/858502/353889.terrain new file mode 100644 index 000000000..fedd80cf4 Binary files /dev/null and b/public/terrain/19/858502/353889.terrain differ diff --git a/public/terrain/19/858502/353890.terrain b/public/terrain/19/858502/353890.terrain new file mode 100644 index 000000000..8752d4967 Binary files /dev/null and b/public/terrain/19/858502/353890.terrain differ diff --git a/public/terrain/19/858502/353891.terrain b/public/terrain/19/858502/353891.terrain new file mode 100644 index 000000000..8723e53f7 Binary files /dev/null and b/public/terrain/19/858502/353891.terrain differ diff --git a/public/terrain/19/858502/353892.terrain b/public/terrain/19/858502/353892.terrain new file mode 100644 index 000000000..e0da24e2e Binary files /dev/null and b/public/terrain/19/858502/353892.terrain differ diff --git a/public/terrain/19/858502/353893.terrain b/public/terrain/19/858502/353893.terrain new file mode 100644 index 000000000..563ebe5eb Binary files /dev/null and b/public/terrain/19/858502/353893.terrain differ diff --git a/public/terrain/19/858502/353894.terrain b/public/terrain/19/858502/353894.terrain new file mode 100644 index 000000000..d46a5da3f Binary files /dev/null and b/public/terrain/19/858502/353894.terrain differ diff --git a/public/terrain/19/858502/353895.terrain b/public/terrain/19/858502/353895.terrain new file mode 100644 index 000000000..49eed454f Binary files /dev/null and b/public/terrain/19/858502/353895.terrain differ diff --git a/public/terrain/19/858502/353896.terrain b/public/terrain/19/858502/353896.terrain new file mode 100644 index 000000000..360c87422 Binary files /dev/null and b/public/terrain/19/858502/353896.terrain differ diff --git a/public/terrain/19/858502/353897.terrain b/public/terrain/19/858502/353897.terrain new file mode 100644 index 000000000..519f9e7b5 Binary files /dev/null and b/public/terrain/19/858502/353897.terrain differ diff --git a/public/terrain/19/858502/353898.terrain b/public/terrain/19/858502/353898.terrain new file mode 100644 index 000000000..dd6fe3af6 Binary files /dev/null and b/public/terrain/19/858502/353898.terrain differ diff --git a/public/terrain/19/858502/353899.terrain b/public/terrain/19/858502/353899.terrain new file mode 100644 index 000000000..4f8cfef9f Binary files /dev/null and b/public/terrain/19/858502/353899.terrain differ diff --git a/public/terrain/19/858502/353900.terrain b/public/terrain/19/858502/353900.terrain new file mode 100644 index 000000000..9f308f202 Binary files /dev/null and b/public/terrain/19/858502/353900.terrain differ diff --git a/public/terrain/19/858502/353901.terrain b/public/terrain/19/858502/353901.terrain new file mode 100644 index 000000000..b33780a03 Binary files /dev/null and b/public/terrain/19/858502/353901.terrain differ diff --git a/public/terrain/19/858502/353902.terrain b/public/terrain/19/858502/353902.terrain new file mode 100644 index 000000000..f20350265 Binary files /dev/null and b/public/terrain/19/858502/353902.terrain differ diff --git a/public/terrain/19/858502/353903.terrain b/public/terrain/19/858502/353903.terrain new file mode 100644 index 000000000..8290a0e75 Binary files /dev/null and b/public/terrain/19/858502/353903.terrain differ diff --git a/public/terrain/19/858502/353904.terrain b/public/terrain/19/858502/353904.terrain new file mode 100644 index 000000000..26c68d6cf Binary files /dev/null and b/public/terrain/19/858502/353904.terrain differ diff --git a/public/terrain/19/858502/353905.terrain b/public/terrain/19/858502/353905.terrain new file mode 100644 index 000000000..0189c9aa2 Binary files /dev/null and b/public/terrain/19/858502/353905.terrain differ diff --git a/public/terrain/19/858502/353906.terrain b/public/terrain/19/858502/353906.terrain new file mode 100644 index 000000000..4fad12676 Binary files /dev/null and b/public/terrain/19/858502/353906.terrain differ diff --git a/public/terrain/19/858502/353907.terrain b/public/terrain/19/858502/353907.terrain new file mode 100644 index 000000000..280612ee1 Binary files /dev/null and b/public/terrain/19/858502/353907.terrain differ diff --git a/public/terrain/19/858502/353908.terrain b/public/terrain/19/858502/353908.terrain new file mode 100644 index 000000000..b7eb1b2e2 Binary files /dev/null and b/public/terrain/19/858502/353908.terrain differ diff --git a/public/terrain/19/858502/353909.terrain b/public/terrain/19/858502/353909.terrain new file mode 100644 index 000000000..5eb4270db Binary files /dev/null and b/public/terrain/19/858502/353909.terrain differ diff --git a/public/terrain/19/858502/353910.terrain b/public/terrain/19/858502/353910.terrain new file mode 100644 index 000000000..7d74ff67d Binary files /dev/null and b/public/terrain/19/858502/353910.terrain differ diff --git a/public/terrain/19/858502/353911.terrain b/public/terrain/19/858502/353911.terrain new file mode 100644 index 000000000..ea735f4ec Binary files /dev/null and b/public/terrain/19/858502/353911.terrain differ diff --git a/public/terrain/19/858502/353912.terrain b/public/terrain/19/858502/353912.terrain new file mode 100644 index 000000000..8963c91ac Binary files /dev/null and b/public/terrain/19/858502/353912.terrain differ diff --git a/public/terrain/19/858502/353913.terrain b/public/terrain/19/858502/353913.terrain new file mode 100644 index 000000000..ce688857d Binary files /dev/null and b/public/terrain/19/858502/353913.terrain differ diff --git a/public/terrain/19/858502/353914.terrain b/public/terrain/19/858502/353914.terrain new file mode 100644 index 000000000..fc7b369e9 Binary files /dev/null and b/public/terrain/19/858502/353914.terrain differ diff --git a/public/terrain/19/858502/353915.terrain b/public/terrain/19/858502/353915.terrain new file mode 100644 index 000000000..d1e5b2287 Binary files /dev/null and b/public/terrain/19/858502/353915.terrain differ diff --git a/public/terrain/19/858502/353916.terrain b/public/terrain/19/858502/353916.terrain new file mode 100644 index 000000000..4e8a2bb8a Binary files /dev/null and b/public/terrain/19/858502/353916.terrain differ diff --git a/public/terrain/19/858502/353917.terrain b/public/terrain/19/858502/353917.terrain new file mode 100644 index 000000000..183f6dbe7 Binary files /dev/null and b/public/terrain/19/858502/353917.terrain differ diff --git a/public/terrain/19/858502/353918.terrain b/public/terrain/19/858502/353918.terrain new file mode 100644 index 000000000..d4f8281b2 Binary files /dev/null and b/public/terrain/19/858502/353918.terrain differ diff --git a/public/terrain/19/858502/353919.terrain b/public/terrain/19/858502/353919.terrain new file mode 100644 index 000000000..eb78df4b5 Binary files /dev/null and b/public/terrain/19/858502/353919.terrain differ diff --git a/public/terrain/19/858502/353920.terrain b/public/terrain/19/858502/353920.terrain new file mode 100644 index 000000000..313dfe5b9 Binary files /dev/null and b/public/terrain/19/858502/353920.terrain differ diff --git a/public/terrain/19/858502/353921.terrain b/public/terrain/19/858502/353921.terrain new file mode 100644 index 000000000..eaa94f5df Binary files /dev/null and b/public/terrain/19/858502/353921.terrain differ diff --git a/public/terrain/19/858502/353922.terrain b/public/terrain/19/858502/353922.terrain new file mode 100644 index 000000000..cc4a1003d Binary files /dev/null and b/public/terrain/19/858502/353922.terrain differ diff --git a/public/terrain/19/858502/353923.terrain b/public/terrain/19/858502/353923.terrain new file mode 100644 index 000000000..98ccf45f8 Binary files /dev/null and b/public/terrain/19/858502/353923.terrain differ diff --git a/public/terrain/19/858502/353924.terrain b/public/terrain/19/858502/353924.terrain new file mode 100644 index 000000000..90284cf6c Binary files /dev/null and b/public/terrain/19/858502/353924.terrain differ diff --git a/public/terrain/19/858502/353925.terrain b/public/terrain/19/858502/353925.terrain new file mode 100644 index 000000000..14937a714 Binary files /dev/null and b/public/terrain/19/858502/353925.terrain differ diff --git a/public/terrain/19/858502/353926.terrain b/public/terrain/19/858502/353926.terrain new file mode 100644 index 000000000..4de01eb36 Binary files /dev/null and b/public/terrain/19/858502/353926.terrain differ diff --git a/public/terrain/19/858502/353927.terrain b/public/terrain/19/858502/353927.terrain new file mode 100644 index 000000000..5610f914f Binary files /dev/null and b/public/terrain/19/858502/353927.terrain differ diff --git a/public/terrain/19/858502/353928.terrain b/public/terrain/19/858502/353928.terrain new file mode 100644 index 000000000..dc9ebd7c0 Binary files /dev/null and b/public/terrain/19/858502/353928.terrain differ diff --git a/public/terrain/19/858502/353929.terrain b/public/terrain/19/858502/353929.terrain new file mode 100644 index 000000000..e56e33346 Binary files /dev/null and b/public/terrain/19/858502/353929.terrain differ diff --git a/public/terrain/19/858502/353930.terrain b/public/terrain/19/858502/353930.terrain new file mode 100644 index 000000000..431cabbce Binary files /dev/null and b/public/terrain/19/858502/353930.terrain differ diff --git a/public/terrain/19/858502/353931.terrain b/public/terrain/19/858502/353931.terrain new file mode 100644 index 000000000..7171601fb Binary files /dev/null and b/public/terrain/19/858502/353931.terrain differ diff --git a/public/terrain/19/858502/353932.terrain b/public/terrain/19/858502/353932.terrain new file mode 100644 index 000000000..8955fcd8a Binary files /dev/null and b/public/terrain/19/858502/353932.terrain differ diff --git a/public/terrain/19/858502/353933.terrain b/public/terrain/19/858502/353933.terrain new file mode 100644 index 000000000..eed67fe44 Binary files /dev/null and b/public/terrain/19/858502/353933.terrain differ diff --git a/public/terrain/19/858502/353934.terrain b/public/terrain/19/858502/353934.terrain new file mode 100644 index 000000000..11fa0a607 Binary files /dev/null and b/public/terrain/19/858502/353934.terrain differ diff --git a/public/terrain/19/858502/353935.terrain b/public/terrain/19/858502/353935.terrain new file mode 100644 index 000000000..8e4c2304b Binary files /dev/null and b/public/terrain/19/858502/353935.terrain differ diff --git a/public/terrain/19/858502/353936.terrain b/public/terrain/19/858502/353936.terrain new file mode 100644 index 000000000..32ebae8c3 Binary files /dev/null and b/public/terrain/19/858502/353936.terrain differ diff --git a/public/terrain/19/858502/353937.terrain b/public/terrain/19/858502/353937.terrain new file mode 100644 index 000000000..e01b7ea48 Binary files /dev/null and b/public/terrain/19/858502/353937.terrain differ diff --git a/public/terrain/19/858502/353938.terrain b/public/terrain/19/858502/353938.terrain new file mode 100644 index 000000000..e8bff101c Binary files /dev/null and b/public/terrain/19/858502/353938.terrain differ diff --git a/public/terrain/19/858502/353939.terrain b/public/terrain/19/858502/353939.terrain new file mode 100644 index 000000000..281e5a230 Binary files /dev/null and b/public/terrain/19/858502/353939.terrain differ diff --git a/public/terrain/19/858502/353940.terrain b/public/terrain/19/858502/353940.terrain new file mode 100644 index 000000000..db153f7c4 Binary files /dev/null and b/public/terrain/19/858502/353940.terrain differ diff --git a/public/terrain/19/858502/353941.terrain b/public/terrain/19/858502/353941.terrain new file mode 100644 index 000000000..f343e675f Binary files /dev/null and b/public/terrain/19/858502/353941.terrain differ diff --git a/public/terrain/19/858502/353942.terrain b/public/terrain/19/858502/353942.terrain new file mode 100644 index 000000000..015029570 Binary files /dev/null and b/public/terrain/19/858502/353942.terrain differ diff --git a/public/terrain/19/858502/353943.terrain b/public/terrain/19/858502/353943.terrain new file mode 100644 index 000000000..6057f07a6 Binary files /dev/null and b/public/terrain/19/858502/353943.terrain differ diff --git a/public/terrain/19/858502/353944.terrain b/public/terrain/19/858502/353944.terrain new file mode 100644 index 000000000..6794b9254 Binary files /dev/null and b/public/terrain/19/858502/353944.terrain differ diff --git a/public/terrain/19/858502/353945.terrain b/public/terrain/19/858502/353945.terrain new file mode 100644 index 000000000..f29207e25 Binary files /dev/null and b/public/terrain/19/858502/353945.terrain differ diff --git a/public/terrain/19/858502/353946.terrain b/public/terrain/19/858502/353946.terrain new file mode 100644 index 000000000..1755527d5 Binary files /dev/null and b/public/terrain/19/858502/353946.terrain differ diff --git a/public/terrain/19/858502/353947.terrain b/public/terrain/19/858502/353947.terrain new file mode 100644 index 000000000..2f63e20e9 Binary files /dev/null and b/public/terrain/19/858502/353947.terrain differ diff --git a/public/terrain/19/858502/353948.terrain b/public/terrain/19/858502/353948.terrain new file mode 100644 index 000000000..e8c117324 Binary files /dev/null and b/public/terrain/19/858502/353948.terrain differ diff --git a/public/terrain/19/858502/353949.terrain b/public/terrain/19/858502/353949.terrain new file mode 100644 index 000000000..2d71d520d Binary files /dev/null and b/public/terrain/19/858502/353949.terrain differ diff --git a/public/terrain/19/858502/353950.terrain b/public/terrain/19/858502/353950.terrain new file mode 100644 index 000000000..08064c212 Binary files /dev/null and b/public/terrain/19/858502/353950.terrain differ diff --git a/public/terrain/19/858502/353951.terrain b/public/terrain/19/858502/353951.terrain new file mode 100644 index 000000000..02efd8ee8 Binary files /dev/null and b/public/terrain/19/858502/353951.terrain differ diff --git a/public/terrain/19/858502/353952.terrain b/public/terrain/19/858502/353952.terrain new file mode 100644 index 000000000..449aa7f85 Binary files /dev/null and b/public/terrain/19/858502/353952.terrain differ diff --git a/public/terrain/19/858502/353953.terrain b/public/terrain/19/858502/353953.terrain new file mode 100644 index 000000000..dcb8b5575 Binary files /dev/null and b/public/terrain/19/858502/353953.terrain differ diff --git a/public/terrain/19/858502/353954.terrain b/public/terrain/19/858502/353954.terrain new file mode 100644 index 000000000..730ed302b Binary files /dev/null and b/public/terrain/19/858502/353954.terrain differ diff --git a/public/terrain/19/858502/353955.terrain b/public/terrain/19/858502/353955.terrain new file mode 100644 index 000000000..acda3a246 Binary files /dev/null and b/public/terrain/19/858502/353955.terrain differ diff --git a/public/terrain/19/858502/353956.terrain b/public/terrain/19/858502/353956.terrain new file mode 100644 index 000000000..1efe17b07 Binary files /dev/null and b/public/terrain/19/858502/353956.terrain differ diff --git a/public/terrain/19/858502/353957.terrain b/public/terrain/19/858502/353957.terrain new file mode 100644 index 000000000..010b88b98 Binary files /dev/null and b/public/terrain/19/858502/353957.terrain differ diff --git a/public/terrain/19/858502/353958.terrain b/public/terrain/19/858502/353958.terrain new file mode 100644 index 000000000..67ba45e82 Binary files /dev/null and b/public/terrain/19/858502/353958.terrain differ diff --git a/public/terrain/19/858502/353959.terrain b/public/terrain/19/858502/353959.terrain new file mode 100644 index 000000000..b0bc10fca Binary files /dev/null and b/public/terrain/19/858502/353959.terrain differ diff --git a/public/terrain/19/858502/353960.terrain b/public/terrain/19/858502/353960.terrain new file mode 100644 index 000000000..9ecbe25a5 Binary files /dev/null and b/public/terrain/19/858502/353960.terrain differ diff --git a/public/terrain/19/858502/353961.terrain b/public/terrain/19/858502/353961.terrain new file mode 100644 index 000000000..f61a3f521 Binary files /dev/null and b/public/terrain/19/858502/353961.terrain differ diff --git a/public/terrain/19/858502/353962.terrain b/public/terrain/19/858502/353962.terrain new file mode 100644 index 000000000..adea1b9d1 Binary files /dev/null and b/public/terrain/19/858502/353962.terrain differ diff --git a/public/terrain/19/858502/353963.terrain b/public/terrain/19/858502/353963.terrain new file mode 100644 index 000000000..32097cd22 Binary files /dev/null and b/public/terrain/19/858502/353963.terrain differ diff --git a/public/terrain/19/858502/353964.terrain b/public/terrain/19/858502/353964.terrain new file mode 100644 index 000000000..3f26348a2 Binary files /dev/null and b/public/terrain/19/858502/353964.terrain differ diff --git a/public/terrain/19/858502/353965.terrain b/public/terrain/19/858502/353965.terrain new file mode 100644 index 000000000..125c03d53 Binary files /dev/null and b/public/terrain/19/858502/353965.terrain differ diff --git a/public/terrain/19/858502/353966.terrain b/public/terrain/19/858502/353966.terrain new file mode 100644 index 000000000..4672f427c Binary files /dev/null and b/public/terrain/19/858502/353966.terrain differ diff --git a/public/terrain/19/858502/353967.terrain b/public/terrain/19/858502/353967.terrain new file mode 100644 index 000000000..8d986a781 Binary files /dev/null and b/public/terrain/19/858502/353967.terrain differ diff --git a/public/terrain/19/858502/353968.terrain b/public/terrain/19/858502/353968.terrain new file mode 100644 index 000000000..abc25a51e Binary files /dev/null and b/public/terrain/19/858502/353968.terrain differ diff --git a/public/terrain/19/858502/353969.terrain b/public/terrain/19/858502/353969.terrain new file mode 100644 index 000000000..38d29ffcd Binary files /dev/null and b/public/terrain/19/858502/353969.terrain differ diff --git a/public/terrain/19/858502/353970.terrain b/public/terrain/19/858502/353970.terrain new file mode 100644 index 000000000..d655732e6 Binary files /dev/null and b/public/terrain/19/858502/353970.terrain differ diff --git a/public/terrain/19/858502/353971.terrain b/public/terrain/19/858502/353971.terrain new file mode 100644 index 000000000..b8d4047b0 Binary files /dev/null and b/public/terrain/19/858502/353971.terrain differ diff --git a/public/terrain/19/858502/353972.terrain b/public/terrain/19/858502/353972.terrain new file mode 100644 index 000000000..a27102f8b Binary files /dev/null and b/public/terrain/19/858502/353972.terrain differ diff --git a/public/terrain/19/858502/353973.terrain b/public/terrain/19/858502/353973.terrain new file mode 100644 index 000000000..7a8f90694 Binary files /dev/null and b/public/terrain/19/858502/353973.terrain differ diff --git a/public/terrain/19/858502/353974.terrain b/public/terrain/19/858502/353974.terrain new file mode 100644 index 000000000..c8a2e40e4 Binary files /dev/null and b/public/terrain/19/858502/353974.terrain differ diff --git a/public/terrain/19/858502/353975.terrain b/public/terrain/19/858502/353975.terrain new file mode 100644 index 000000000..76828c189 Binary files /dev/null and b/public/terrain/19/858502/353975.terrain differ diff --git a/public/terrain/19/858502/353976.terrain b/public/terrain/19/858502/353976.terrain new file mode 100644 index 000000000..769fdd0e6 Binary files /dev/null and b/public/terrain/19/858502/353976.terrain differ diff --git a/public/terrain/19/858502/353977.terrain b/public/terrain/19/858502/353977.terrain new file mode 100644 index 000000000..60c5779ad Binary files /dev/null and b/public/terrain/19/858502/353977.terrain differ diff --git a/public/terrain/19/858502/353978.terrain b/public/terrain/19/858502/353978.terrain new file mode 100644 index 000000000..c5331b442 Binary files /dev/null and b/public/terrain/19/858502/353978.terrain differ diff --git a/public/terrain/19/858502/353979.terrain b/public/terrain/19/858502/353979.terrain new file mode 100644 index 000000000..32af6955a Binary files /dev/null and b/public/terrain/19/858502/353979.terrain differ diff --git a/public/terrain/19/858502/353980.terrain b/public/terrain/19/858502/353980.terrain new file mode 100644 index 000000000..7456ab00d Binary files /dev/null and b/public/terrain/19/858502/353980.terrain differ diff --git a/public/terrain/19/858502/353981.terrain b/public/terrain/19/858502/353981.terrain new file mode 100644 index 000000000..a3531356b Binary files /dev/null and b/public/terrain/19/858502/353981.terrain differ diff --git a/public/terrain/19/858502/353982.terrain b/public/terrain/19/858502/353982.terrain new file mode 100644 index 000000000..962c8e57f Binary files /dev/null and b/public/terrain/19/858502/353982.terrain differ diff --git a/public/terrain/19/858502/353983.terrain b/public/terrain/19/858502/353983.terrain new file mode 100644 index 000000000..64589000b Binary files /dev/null and b/public/terrain/19/858502/353983.terrain differ diff --git a/public/terrain/19/858502/353984.terrain b/public/terrain/19/858502/353984.terrain new file mode 100644 index 000000000..4503aa998 Binary files /dev/null and b/public/terrain/19/858502/353984.terrain differ diff --git a/public/terrain/19/858502/353985.terrain b/public/terrain/19/858502/353985.terrain new file mode 100644 index 000000000..d0ff71c59 Binary files /dev/null and b/public/terrain/19/858502/353985.terrain differ diff --git a/public/terrain/19/858502/353986.terrain b/public/terrain/19/858502/353986.terrain new file mode 100644 index 000000000..f45f0370c Binary files /dev/null and b/public/terrain/19/858502/353986.terrain differ diff --git a/public/terrain/19/858502/353987.terrain b/public/terrain/19/858502/353987.terrain new file mode 100644 index 000000000..3a3576e2e Binary files /dev/null and b/public/terrain/19/858502/353987.terrain differ diff --git a/public/terrain/19/858502/353988.terrain b/public/terrain/19/858502/353988.terrain new file mode 100644 index 000000000..41e749285 Binary files /dev/null and b/public/terrain/19/858502/353988.terrain differ diff --git a/public/terrain/19/858502/353989.terrain b/public/terrain/19/858502/353989.terrain new file mode 100644 index 000000000..91208b5e7 Binary files /dev/null and b/public/terrain/19/858502/353989.terrain differ diff --git a/public/terrain/19/858502/353990.terrain b/public/terrain/19/858502/353990.terrain new file mode 100644 index 000000000..e33e0c65f Binary files /dev/null and b/public/terrain/19/858502/353990.terrain differ diff --git a/public/terrain/19/858502/353991.terrain b/public/terrain/19/858502/353991.terrain new file mode 100644 index 000000000..706c565f4 Binary files /dev/null and b/public/terrain/19/858502/353991.terrain differ diff --git a/public/terrain/19/858502/353992.terrain b/public/terrain/19/858502/353992.terrain new file mode 100644 index 000000000..73f4fa62a Binary files /dev/null and b/public/terrain/19/858502/353992.terrain differ diff --git a/public/terrain/19/858502/353993.terrain b/public/terrain/19/858502/353993.terrain new file mode 100644 index 000000000..a2476d61b Binary files /dev/null and b/public/terrain/19/858502/353993.terrain differ diff --git a/public/terrain/19/858502/353994.terrain b/public/terrain/19/858502/353994.terrain new file mode 100644 index 000000000..d4e797310 Binary files /dev/null and b/public/terrain/19/858502/353994.terrain differ diff --git a/public/terrain/19/858502/353995.terrain b/public/terrain/19/858502/353995.terrain new file mode 100644 index 000000000..19441d33b Binary files /dev/null and b/public/terrain/19/858502/353995.terrain differ diff --git a/public/terrain/19/858502/353996.terrain b/public/terrain/19/858502/353996.terrain new file mode 100644 index 000000000..4deb9801c Binary files /dev/null and b/public/terrain/19/858502/353996.terrain differ diff --git a/public/terrain/19/858502/353997.terrain b/public/terrain/19/858502/353997.terrain new file mode 100644 index 000000000..1f88565ab Binary files /dev/null and b/public/terrain/19/858502/353997.terrain differ diff --git a/public/terrain/19/858502/353998.terrain b/public/terrain/19/858502/353998.terrain new file mode 100644 index 000000000..17b477f3f Binary files /dev/null and b/public/terrain/19/858502/353998.terrain differ diff --git a/public/terrain/19/858502/353999.terrain b/public/terrain/19/858502/353999.terrain new file mode 100644 index 000000000..e79df3367 Binary files /dev/null and b/public/terrain/19/858502/353999.terrain differ diff --git a/public/terrain/19/858502/354000.terrain b/public/terrain/19/858502/354000.terrain new file mode 100644 index 000000000..d8c059a73 Binary files /dev/null and b/public/terrain/19/858502/354000.terrain differ diff --git a/public/terrain/19/858502/354001.terrain b/public/terrain/19/858502/354001.terrain new file mode 100644 index 000000000..b7819b483 Binary files /dev/null and b/public/terrain/19/858502/354001.terrain differ diff --git a/public/terrain/19/858502/354002.terrain b/public/terrain/19/858502/354002.terrain new file mode 100644 index 000000000..6ada5ccd9 Binary files /dev/null and b/public/terrain/19/858502/354002.terrain differ diff --git a/public/terrain/19/858502/354003.terrain b/public/terrain/19/858502/354003.terrain new file mode 100644 index 000000000..62ef239b5 Binary files /dev/null and b/public/terrain/19/858502/354003.terrain differ diff --git a/public/terrain/19/858502/354004.terrain b/public/terrain/19/858502/354004.terrain new file mode 100644 index 000000000..3af5d8ef7 Binary files /dev/null and b/public/terrain/19/858502/354004.terrain differ diff --git a/public/terrain/19/858502/354005.terrain b/public/terrain/19/858502/354005.terrain new file mode 100644 index 000000000..50c823862 Binary files /dev/null and b/public/terrain/19/858502/354005.terrain differ diff --git a/public/terrain/19/858502/354006.terrain b/public/terrain/19/858502/354006.terrain new file mode 100644 index 000000000..c497a6db2 Binary files /dev/null and b/public/terrain/19/858502/354006.terrain differ diff --git a/public/terrain/19/858502/354007.terrain b/public/terrain/19/858502/354007.terrain new file mode 100644 index 000000000..82825244c Binary files /dev/null and b/public/terrain/19/858502/354007.terrain differ diff --git a/public/terrain/19/858502/354008.terrain b/public/terrain/19/858502/354008.terrain new file mode 100644 index 000000000..4519b15b6 Binary files /dev/null and b/public/terrain/19/858502/354008.terrain differ diff --git a/public/terrain/19/858502/354009.terrain b/public/terrain/19/858502/354009.terrain new file mode 100644 index 000000000..c9266fd04 Binary files /dev/null and b/public/terrain/19/858502/354009.terrain differ diff --git a/public/terrain/19/858502/354010.terrain b/public/terrain/19/858502/354010.terrain new file mode 100644 index 000000000..f99614c39 Binary files /dev/null and b/public/terrain/19/858502/354010.terrain differ diff --git a/public/terrain/19/858502/354011.terrain b/public/terrain/19/858502/354011.terrain new file mode 100644 index 000000000..f447db164 Binary files /dev/null and b/public/terrain/19/858502/354011.terrain differ diff --git a/public/terrain/19/858502/354012.terrain b/public/terrain/19/858502/354012.terrain new file mode 100644 index 000000000..a52982ffb Binary files /dev/null and b/public/terrain/19/858502/354012.terrain differ diff --git a/public/terrain/19/858502/354013.terrain b/public/terrain/19/858502/354013.terrain new file mode 100644 index 000000000..ef1e0cf9d Binary files /dev/null and b/public/terrain/19/858502/354013.terrain differ diff --git a/public/terrain/19/858502/354014.terrain b/public/terrain/19/858502/354014.terrain new file mode 100644 index 000000000..69c682b45 Binary files /dev/null and b/public/terrain/19/858502/354014.terrain differ diff --git a/public/terrain/19/858502/354015.terrain b/public/terrain/19/858502/354015.terrain new file mode 100644 index 000000000..d59162eb7 Binary files /dev/null and b/public/terrain/19/858502/354015.terrain differ diff --git a/public/terrain/19/858502/354016.terrain b/public/terrain/19/858502/354016.terrain new file mode 100644 index 000000000..5c8bfd84f Binary files /dev/null and b/public/terrain/19/858502/354016.terrain differ diff --git a/public/terrain/19/858502/354017.terrain b/public/terrain/19/858502/354017.terrain new file mode 100644 index 000000000..5266f97c9 Binary files /dev/null and b/public/terrain/19/858502/354017.terrain differ diff --git a/public/terrain/19/858502/354018.terrain b/public/terrain/19/858502/354018.terrain new file mode 100644 index 000000000..ea76a67fd Binary files /dev/null and b/public/terrain/19/858502/354018.terrain differ diff --git a/public/terrain/19/858502/354019.terrain b/public/terrain/19/858502/354019.terrain new file mode 100644 index 000000000..1af397182 Binary files /dev/null and b/public/terrain/19/858502/354019.terrain differ diff --git a/public/terrain/19/858502/354020.terrain b/public/terrain/19/858502/354020.terrain new file mode 100644 index 000000000..0d4495fe3 Binary files /dev/null and b/public/terrain/19/858502/354020.terrain differ diff --git a/public/terrain/19/858502/354021.terrain b/public/terrain/19/858502/354021.terrain new file mode 100644 index 000000000..5ed492555 Binary files /dev/null and b/public/terrain/19/858502/354021.terrain differ diff --git a/public/terrain/19/858502/354022.terrain b/public/terrain/19/858502/354022.terrain new file mode 100644 index 000000000..f0137bcab Binary files /dev/null and b/public/terrain/19/858502/354022.terrain differ diff --git a/public/terrain/19/858502/354023.terrain b/public/terrain/19/858502/354023.terrain new file mode 100644 index 000000000..d3baf12fd Binary files /dev/null and b/public/terrain/19/858502/354023.terrain differ diff --git a/public/terrain/19/858502/354024.terrain b/public/terrain/19/858502/354024.terrain new file mode 100644 index 000000000..08064bd29 Binary files /dev/null and b/public/terrain/19/858502/354024.terrain differ diff --git a/public/terrain/19/858502/354025.terrain b/public/terrain/19/858502/354025.terrain new file mode 100644 index 000000000..3e500d9a1 Binary files /dev/null and b/public/terrain/19/858502/354025.terrain differ diff --git a/public/terrain/19/858502/354026.terrain b/public/terrain/19/858502/354026.terrain new file mode 100644 index 000000000..0e5737b3b Binary files /dev/null and b/public/terrain/19/858502/354026.terrain differ diff --git a/public/terrain/19/858502/354027.terrain b/public/terrain/19/858502/354027.terrain new file mode 100644 index 000000000..1b5f5eaf7 Binary files /dev/null and b/public/terrain/19/858502/354027.terrain differ diff --git a/public/terrain/19/858502/354028.terrain b/public/terrain/19/858502/354028.terrain new file mode 100644 index 000000000..611395280 Binary files /dev/null and b/public/terrain/19/858502/354028.terrain differ diff --git a/public/terrain/19/858502/354029.terrain b/public/terrain/19/858502/354029.terrain new file mode 100644 index 000000000..25c995592 Binary files /dev/null and b/public/terrain/19/858502/354029.terrain differ diff --git a/public/terrain/19/858502/354030.terrain b/public/terrain/19/858502/354030.terrain new file mode 100644 index 000000000..8fc7312ee Binary files /dev/null and b/public/terrain/19/858502/354030.terrain differ diff --git a/public/terrain/19/858502/354031.terrain b/public/terrain/19/858502/354031.terrain new file mode 100644 index 000000000..e699e4608 Binary files /dev/null and b/public/terrain/19/858502/354031.terrain differ diff --git a/public/terrain/19/858502/354032.terrain b/public/terrain/19/858502/354032.terrain new file mode 100644 index 000000000..e52270c37 Binary files /dev/null and b/public/terrain/19/858502/354032.terrain differ diff --git a/public/terrain/19/858502/354033.terrain b/public/terrain/19/858502/354033.terrain new file mode 100644 index 000000000..ad6271600 Binary files /dev/null and b/public/terrain/19/858502/354033.terrain differ diff --git a/public/terrain/19/858502/354034.terrain b/public/terrain/19/858502/354034.terrain new file mode 100644 index 000000000..08f6b4559 Binary files /dev/null and b/public/terrain/19/858502/354034.terrain differ diff --git a/public/terrain/19/858502/354035.terrain b/public/terrain/19/858502/354035.terrain new file mode 100644 index 000000000..ac1e23c3c Binary files /dev/null and b/public/terrain/19/858502/354035.terrain differ diff --git a/public/terrain/19/858502/354036.terrain b/public/terrain/19/858502/354036.terrain new file mode 100644 index 000000000..48ea26f51 Binary files /dev/null and b/public/terrain/19/858502/354036.terrain differ diff --git a/public/terrain/19/858502/354037.terrain b/public/terrain/19/858502/354037.terrain new file mode 100644 index 000000000..0d12d0e0c Binary files /dev/null and b/public/terrain/19/858502/354037.terrain differ diff --git a/public/terrain/19/858502/354038.terrain b/public/terrain/19/858502/354038.terrain new file mode 100644 index 000000000..c0c307e89 Binary files /dev/null and b/public/terrain/19/858502/354038.terrain differ diff --git a/public/terrain/19/858502/354039.terrain b/public/terrain/19/858502/354039.terrain new file mode 100644 index 000000000..e3fb8a6e8 Binary files /dev/null and b/public/terrain/19/858502/354039.terrain differ diff --git a/public/terrain/19/858502/354040.terrain b/public/terrain/19/858502/354040.terrain new file mode 100644 index 000000000..943a02ae4 Binary files /dev/null and b/public/terrain/19/858502/354040.terrain differ diff --git a/public/terrain/19/858502/354041.terrain b/public/terrain/19/858502/354041.terrain new file mode 100644 index 000000000..2c00db6a0 Binary files /dev/null and b/public/terrain/19/858502/354041.terrain differ diff --git a/public/terrain/19/858502/354042.terrain b/public/terrain/19/858502/354042.terrain new file mode 100644 index 000000000..d9724741c Binary files /dev/null and b/public/terrain/19/858502/354042.terrain differ diff --git a/public/terrain/19/858502/354043.terrain b/public/terrain/19/858502/354043.terrain new file mode 100644 index 000000000..8cdc66ec7 Binary files /dev/null and b/public/terrain/19/858502/354043.terrain differ diff --git a/public/terrain/19/858502/354044.terrain b/public/terrain/19/858502/354044.terrain new file mode 100644 index 000000000..f365e12d2 Binary files /dev/null and b/public/terrain/19/858502/354044.terrain differ diff --git a/public/terrain/19/858502/354045.terrain b/public/terrain/19/858502/354045.terrain new file mode 100644 index 000000000..aa4dfbd01 Binary files /dev/null and b/public/terrain/19/858502/354045.terrain differ diff --git a/public/terrain/19/858502/354046.terrain b/public/terrain/19/858502/354046.terrain new file mode 100644 index 000000000..6e65df970 Binary files /dev/null and b/public/terrain/19/858502/354046.terrain differ diff --git a/public/terrain/19/858502/354047.terrain b/public/terrain/19/858502/354047.terrain new file mode 100644 index 000000000..f097b7108 Binary files /dev/null and b/public/terrain/19/858502/354047.terrain differ diff --git a/public/terrain/19/858502/354048.terrain b/public/terrain/19/858502/354048.terrain new file mode 100644 index 000000000..3f42df155 Binary files /dev/null and b/public/terrain/19/858502/354048.terrain differ diff --git a/public/terrain/19/858502/354049.terrain b/public/terrain/19/858502/354049.terrain new file mode 100644 index 000000000..932997558 Binary files /dev/null and b/public/terrain/19/858502/354049.terrain differ diff --git a/public/terrain/19/858502/354050.terrain b/public/terrain/19/858502/354050.terrain new file mode 100644 index 000000000..adaf59e06 Binary files /dev/null and b/public/terrain/19/858502/354050.terrain differ diff --git a/public/terrain/19/858502/354051.terrain b/public/terrain/19/858502/354051.terrain new file mode 100644 index 000000000..8c874d7f9 Binary files /dev/null and b/public/terrain/19/858502/354051.terrain differ diff --git a/public/terrain/19/858502/354052.terrain b/public/terrain/19/858502/354052.terrain new file mode 100644 index 000000000..dde1c350f Binary files /dev/null and b/public/terrain/19/858502/354052.terrain differ diff --git a/public/terrain/19/858502/354053.terrain b/public/terrain/19/858502/354053.terrain new file mode 100644 index 000000000..009d45fec Binary files /dev/null and b/public/terrain/19/858502/354053.terrain differ diff --git a/public/terrain/19/858502/354054.terrain b/public/terrain/19/858502/354054.terrain new file mode 100644 index 000000000..9e20acc47 Binary files /dev/null and b/public/terrain/19/858502/354054.terrain differ diff --git a/public/terrain/19/858502/354055.terrain b/public/terrain/19/858502/354055.terrain new file mode 100644 index 000000000..be58e9d54 Binary files /dev/null and b/public/terrain/19/858502/354055.terrain differ diff --git a/public/terrain/19/858502/354056.terrain b/public/terrain/19/858502/354056.terrain new file mode 100644 index 000000000..48eb2133c Binary files /dev/null and b/public/terrain/19/858502/354056.terrain differ diff --git a/public/terrain/19/858502/354057.terrain b/public/terrain/19/858502/354057.terrain new file mode 100644 index 000000000..c9ffa9027 Binary files /dev/null and b/public/terrain/19/858502/354057.terrain differ diff --git a/public/terrain/19/858502/354058.terrain b/public/terrain/19/858502/354058.terrain new file mode 100644 index 000000000..f5722cacd Binary files /dev/null and b/public/terrain/19/858502/354058.terrain differ diff --git a/public/terrain/19/858502/354059.terrain b/public/terrain/19/858502/354059.terrain new file mode 100644 index 000000000..c6672d89e Binary files /dev/null and b/public/terrain/19/858502/354059.terrain differ diff --git a/public/terrain/19/858503/353743.terrain b/public/terrain/19/858503/353743.terrain new file mode 100644 index 000000000..00e28ecd5 Binary files /dev/null and b/public/terrain/19/858503/353743.terrain differ diff --git a/public/terrain/19/858503/353744.terrain b/public/terrain/19/858503/353744.terrain new file mode 100644 index 000000000..ad2381775 Binary files /dev/null and b/public/terrain/19/858503/353744.terrain differ diff --git a/public/terrain/19/858503/353745.terrain b/public/terrain/19/858503/353745.terrain new file mode 100644 index 000000000..74e269673 Binary files /dev/null and b/public/terrain/19/858503/353745.terrain differ diff --git a/public/terrain/19/858503/353746.terrain b/public/terrain/19/858503/353746.terrain new file mode 100644 index 000000000..16e69be02 Binary files /dev/null and b/public/terrain/19/858503/353746.terrain differ diff --git a/public/terrain/19/858503/353747.terrain b/public/terrain/19/858503/353747.terrain new file mode 100644 index 000000000..e8f1b37b5 Binary files /dev/null and b/public/terrain/19/858503/353747.terrain differ diff --git a/public/terrain/19/858503/353748.terrain b/public/terrain/19/858503/353748.terrain new file mode 100644 index 000000000..5a65efba5 Binary files /dev/null and b/public/terrain/19/858503/353748.terrain differ diff --git a/public/terrain/19/858503/353749.terrain b/public/terrain/19/858503/353749.terrain new file mode 100644 index 000000000..33093e5f7 Binary files /dev/null and b/public/terrain/19/858503/353749.terrain differ diff --git a/public/terrain/19/858503/353750.terrain b/public/terrain/19/858503/353750.terrain new file mode 100644 index 000000000..fd8481894 Binary files /dev/null and b/public/terrain/19/858503/353750.terrain differ diff --git a/public/terrain/19/858503/353751.terrain b/public/terrain/19/858503/353751.terrain new file mode 100644 index 000000000..91b34ecd0 Binary files /dev/null and b/public/terrain/19/858503/353751.terrain differ diff --git a/public/terrain/19/858503/353752.terrain b/public/terrain/19/858503/353752.terrain new file mode 100644 index 000000000..c3399c86c Binary files /dev/null and b/public/terrain/19/858503/353752.terrain differ diff --git a/public/terrain/19/858503/353753.terrain b/public/terrain/19/858503/353753.terrain new file mode 100644 index 000000000..a3b2b321b Binary files /dev/null and b/public/terrain/19/858503/353753.terrain differ diff --git a/public/terrain/19/858503/353754.terrain b/public/terrain/19/858503/353754.terrain new file mode 100644 index 000000000..7282e1e46 Binary files /dev/null and b/public/terrain/19/858503/353754.terrain differ diff --git a/public/terrain/19/858503/353755.terrain b/public/terrain/19/858503/353755.terrain new file mode 100644 index 000000000..464f7572a Binary files /dev/null and b/public/terrain/19/858503/353755.terrain differ diff --git a/public/terrain/19/858503/353756.terrain b/public/terrain/19/858503/353756.terrain new file mode 100644 index 000000000..d75d09715 Binary files /dev/null and b/public/terrain/19/858503/353756.terrain differ diff --git a/public/terrain/19/858503/353757.terrain b/public/terrain/19/858503/353757.terrain new file mode 100644 index 000000000..e8b20eb3f Binary files /dev/null and b/public/terrain/19/858503/353757.terrain differ diff --git a/public/terrain/19/858503/353758.terrain b/public/terrain/19/858503/353758.terrain new file mode 100644 index 000000000..72cf0cb36 Binary files /dev/null and b/public/terrain/19/858503/353758.terrain differ diff --git a/public/terrain/19/858503/353759.terrain b/public/terrain/19/858503/353759.terrain new file mode 100644 index 000000000..f4ebee1b2 Binary files /dev/null and b/public/terrain/19/858503/353759.terrain differ diff --git a/public/terrain/19/858503/353760.terrain b/public/terrain/19/858503/353760.terrain new file mode 100644 index 000000000..7265af325 Binary files /dev/null and b/public/terrain/19/858503/353760.terrain differ diff --git a/public/terrain/19/858503/353761.terrain b/public/terrain/19/858503/353761.terrain new file mode 100644 index 000000000..f62e8616a Binary files /dev/null and b/public/terrain/19/858503/353761.terrain differ diff --git a/public/terrain/19/858503/353762.terrain b/public/terrain/19/858503/353762.terrain new file mode 100644 index 000000000..729e0e5f1 Binary files /dev/null and b/public/terrain/19/858503/353762.terrain differ diff --git a/public/terrain/19/858503/353763.terrain b/public/terrain/19/858503/353763.terrain new file mode 100644 index 000000000..c47df25a7 Binary files /dev/null and b/public/terrain/19/858503/353763.terrain differ diff --git a/public/terrain/19/858503/353764.terrain b/public/terrain/19/858503/353764.terrain new file mode 100644 index 000000000..b187e9d9e Binary files /dev/null and b/public/terrain/19/858503/353764.terrain differ diff --git a/public/terrain/19/858503/353765.terrain b/public/terrain/19/858503/353765.terrain new file mode 100644 index 000000000..d62529d52 Binary files /dev/null and b/public/terrain/19/858503/353765.terrain differ diff --git a/public/terrain/19/858503/353766.terrain b/public/terrain/19/858503/353766.terrain new file mode 100644 index 000000000..2066debfe Binary files /dev/null and b/public/terrain/19/858503/353766.terrain differ diff --git a/public/terrain/19/858503/353767.terrain b/public/terrain/19/858503/353767.terrain new file mode 100644 index 000000000..3b088b8b9 Binary files /dev/null and b/public/terrain/19/858503/353767.terrain differ diff --git a/public/terrain/19/858503/353768.terrain b/public/terrain/19/858503/353768.terrain new file mode 100644 index 000000000..d32a9c519 Binary files /dev/null and b/public/terrain/19/858503/353768.terrain differ diff --git a/public/terrain/19/858503/353769.terrain b/public/terrain/19/858503/353769.terrain new file mode 100644 index 000000000..a0daf789b Binary files /dev/null and b/public/terrain/19/858503/353769.terrain differ diff --git a/public/terrain/19/858503/353770.terrain b/public/terrain/19/858503/353770.terrain new file mode 100644 index 000000000..4b8fcca51 Binary files /dev/null and b/public/terrain/19/858503/353770.terrain differ diff --git a/public/terrain/19/858503/353771.terrain b/public/terrain/19/858503/353771.terrain new file mode 100644 index 000000000..6d09ab730 Binary files /dev/null and b/public/terrain/19/858503/353771.terrain differ diff --git a/public/terrain/19/858503/353772.terrain b/public/terrain/19/858503/353772.terrain new file mode 100644 index 000000000..2188f79a9 Binary files /dev/null and b/public/terrain/19/858503/353772.terrain differ diff --git a/public/terrain/19/858503/353773.terrain b/public/terrain/19/858503/353773.terrain new file mode 100644 index 000000000..2b115f386 Binary files /dev/null and b/public/terrain/19/858503/353773.terrain differ diff --git a/public/terrain/19/858503/353774.terrain b/public/terrain/19/858503/353774.terrain new file mode 100644 index 000000000..ef65d742a Binary files /dev/null and b/public/terrain/19/858503/353774.terrain differ diff --git a/public/terrain/19/858503/353775.terrain b/public/terrain/19/858503/353775.terrain new file mode 100644 index 000000000..452e32e0a Binary files /dev/null and b/public/terrain/19/858503/353775.terrain differ diff --git a/public/terrain/19/858503/353776.terrain b/public/terrain/19/858503/353776.terrain new file mode 100644 index 000000000..baf5cfbc3 Binary files /dev/null and b/public/terrain/19/858503/353776.terrain differ diff --git a/public/terrain/19/858503/353777.terrain b/public/terrain/19/858503/353777.terrain new file mode 100644 index 000000000..120868503 Binary files /dev/null and b/public/terrain/19/858503/353777.terrain differ diff --git a/public/terrain/19/858503/353778.terrain b/public/terrain/19/858503/353778.terrain new file mode 100644 index 000000000..07d777654 Binary files /dev/null and b/public/terrain/19/858503/353778.terrain differ diff --git a/public/terrain/19/858503/353779.terrain b/public/terrain/19/858503/353779.terrain new file mode 100644 index 000000000..2d409169d Binary files /dev/null and b/public/terrain/19/858503/353779.terrain differ diff --git a/public/terrain/19/858503/353780.terrain b/public/terrain/19/858503/353780.terrain new file mode 100644 index 000000000..1501da0a8 Binary files /dev/null and b/public/terrain/19/858503/353780.terrain differ diff --git a/public/terrain/19/858503/353781.terrain b/public/terrain/19/858503/353781.terrain new file mode 100644 index 000000000..b321a836b Binary files /dev/null and b/public/terrain/19/858503/353781.terrain differ diff --git a/public/terrain/19/858503/353782.terrain b/public/terrain/19/858503/353782.terrain new file mode 100644 index 000000000..e9f25085d Binary files /dev/null and b/public/terrain/19/858503/353782.terrain differ diff --git a/public/terrain/19/858503/353783.terrain b/public/terrain/19/858503/353783.terrain new file mode 100644 index 000000000..25caef850 Binary files /dev/null and b/public/terrain/19/858503/353783.terrain differ diff --git a/public/terrain/19/858503/353784.terrain b/public/terrain/19/858503/353784.terrain new file mode 100644 index 000000000..9290419c3 Binary files /dev/null and b/public/terrain/19/858503/353784.terrain differ diff --git a/public/terrain/19/858503/353785.terrain b/public/terrain/19/858503/353785.terrain new file mode 100644 index 000000000..44a9de370 Binary files /dev/null and b/public/terrain/19/858503/353785.terrain differ diff --git a/public/terrain/19/858503/353786.terrain b/public/terrain/19/858503/353786.terrain new file mode 100644 index 000000000..fded2f66d Binary files /dev/null and b/public/terrain/19/858503/353786.terrain differ diff --git a/public/terrain/19/858503/353787.terrain b/public/terrain/19/858503/353787.terrain new file mode 100644 index 000000000..201a00743 Binary files /dev/null and b/public/terrain/19/858503/353787.terrain differ diff --git a/public/terrain/19/858503/353788.terrain b/public/terrain/19/858503/353788.terrain new file mode 100644 index 000000000..77d2e79d4 Binary files /dev/null and b/public/terrain/19/858503/353788.terrain differ diff --git a/public/terrain/19/858503/353789.terrain b/public/terrain/19/858503/353789.terrain new file mode 100644 index 000000000..9271fc344 Binary files /dev/null and b/public/terrain/19/858503/353789.terrain differ diff --git a/public/terrain/19/858503/353790.terrain b/public/terrain/19/858503/353790.terrain new file mode 100644 index 000000000..7028525e0 Binary files /dev/null and b/public/terrain/19/858503/353790.terrain differ diff --git a/public/terrain/19/858503/353791.terrain b/public/terrain/19/858503/353791.terrain new file mode 100644 index 000000000..fb42f543a Binary files /dev/null and b/public/terrain/19/858503/353791.terrain differ diff --git a/public/terrain/19/858503/353792.terrain b/public/terrain/19/858503/353792.terrain new file mode 100644 index 000000000..e2f1f72eb Binary files /dev/null and b/public/terrain/19/858503/353792.terrain differ diff --git a/public/terrain/19/858503/353793.terrain b/public/terrain/19/858503/353793.terrain new file mode 100644 index 000000000..b579000d4 Binary files /dev/null and b/public/terrain/19/858503/353793.terrain differ diff --git a/public/terrain/19/858503/353794.terrain b/public/terrain/19/858503/353794.terrain new file mode 100644 index 000000000..874407069 Binary files /dev/null and b/public/terrain/19/858503/353794.terrain differ diff --git a/public/terrain/19/858503/353795.terrain b/public/terrain/19/858503/353795.terrain new file mode 100644 index 000000000..6e1819bdf Binary files /dev/null and b/public/terrain/19/858503/353795.terrain differ diff --git a/public/terrain/19/858503/353796.terrain b/public/terrain/19/858503/353796.terrain new file mode 100644 index 000000000..1efd1e6db Binary files /dev/null and b/public/terrain/19/858503/353796.terrain differ diff --git a/public/terrain/19/858503/353797.terrain b/public/terrain/19/858503/353797.terrain new file mode 100644 index 000000000..7aee13295 Binary files /dev/null and b/public/terrain/19/858503/353797.terrain differ diff --git a/public/terrain/19/858503/353798.terrain b/public/terrain/19/858503/353798.terrain new file mode 100644 index 000000000..d4dda6b9d Binary files /dev/null and b/public/terrain/19/858503/353798.terrain differ diff --git a/public/terrain/19/858503/353799.terrain b/public/terrain/19/858503/353799.terrain new file mode 100644 index 000000000..2062319c7 Binary files /dev/null and b/public/terrain/19/858503/353799.terrain differ diff --git a/public/terrain/19/858503/353800.terrain b/public/terrain/19/858503/353800.terrain new file mode 100644 index 000000000..eaed92c43 Binary files /dev/null and b/public/terrain/19/858503/353800.terrain differ diff --git a/public/terrain/19/858503/353801.terrain b/public/terrain/19/858503/353801.terrain new file mode 100644 index 000000000..edff70d55 Binary files /dev/null and b/public/terrain/19/858503/353801.terrain differ diff --git a/public/terrain/19/858503/353802.terrain b/public/terrain/19/858503/353802.terrain new file mode 100644 index 000000000..bedd323a2 Binary files /dev/null and b/public/terrain/19/858503/353802.terrain differ diff --git a/public/terrain/19/858503/353803.terrain b/public/terrain/19/858503/353803.terrain new file mode 100644 index 000000000..aa29cc527 Binary files /dev/null and b/public/terrain/19/858503/353803.terrain differ diff --git a/public/terrain/19/858503/353804.terrain b/public/terrain/19/858503/353804.terrain new file mode 100644 index 000000000..3707f2377 Binary files /dev/null and b/public/terrain/19/858503/353804.terrain differ diff --git a/public/terrain/19/858503/353805.terrain b/public/terrain/19/858503/353805.terrain new file mode 100644 index 000000000..b9df57b3f Binary files /dev/null and b/public/terrain/19/858503/353805.terrain differ diff --git a/public/terrain/19/858503/353806.terrain b/public/terrain/19/858503/353806.terrain new file mode 100644 index 000000000..c72fa4fcf Binary files /dev/null and b/public/terrain/19/858503/353806.terrain differ diff --git a/public/terrain/19/858503/353807.terrain b/public/terrain/19/858503/353807.terrain new file mode 100644 index 000000000..99a24f9d8 Binary files /dev/null and b/public/terrain/19/858503/353807.terrain differ diff --git a/public/terrain/19/858503/353808.terrain b/public/terrain/19/858503/353808.terrain new file mode 100644 index 000000000..81d03b266 Binary files /dev/null and b/public/terrain/19/858503/353808.terrain differ diff --git a/public/terrain/19/858503/353809.terrain b/public/terrain/19/858503/353809.terrain new file mode 100644 index 000000000..e593444a1 Binary files /dev/null and b/public/terrain/19/858503/353809.terrain differ diff --git a/public/terrain/19/858503/353810.terrain b/public/terrain/19/858503/353810.terrain new file mode 100644 index 000000000..52af2fee2 Binary files /dev/null and b/public/terrain/19/858503/353810.terrain differ diff --git a/public/terrain/19/858503/353811.terrain b/public/terrain/19/858503/353811.terrain new file mode 100644 index 000000000..7537ccd93 Binary files /dev/null and b/public/terrain/19/858503/353811.terrain differ diff --git a/public/terrain/19/858503/353812.terrain b/public/terrain/19/858503/353812.terrain new file mode 100644 index 000000000..ac2a61d8e Binary files /dev/null and b/public/terrain/19/858503/353812.terrain differ diff --git a/public/terrain/19/858503/353813.terrain b/public/terrain/19/858503/353813.terrain new file mode 100644 index 000000000..017cfcb2d Binary files /dev/null and b/public/terrain/19/858503/353813.terrain differ diff --git a/public/terrain/19/858503/353814.terrain b/public/terrain/19/858503/353814.terrain new file mode 100644 index 000000000..63440acc0 Binary files /dev/null and b/public/terrain/19/858503/353814.terrain differ diff --git a/public/terrain/19/858503/353815.terrain b/public/terrain/19/858503/353815.terrain new file mode 100644 index 000000000..0b5a85b79 Binary files /dev/null and b/public/terrain/19/858503/353815.terrain differ diff --git a/public/terrain/19/858503/353816.terrain b/public/terrain/19/858503/353816.terrain new file mode 100644 index 000000000..f3823377e Binary files /dev/null and b/public/terrain/19/858503/353816.terrain differ diff --git a/public/terrain/19/858503/353817.terrain b/public/terrain/19/858503/353817.terrain new file mode 100644 index 000000000..cff2efef2 Binary files /dev/null and b/public/terrain/19/858503/353817.terrain differ diff --git a/public/terrain/19/858503/353818.terrain b/public/terrain/19/858503/353818.terrain new file mode 100644 index 000000000..4f4860345 Binary files /dev/null and b/public/terrain/19/858503/353818.terrain differ diff --git a/public/terrain/19/858503/353819.terrain b/public/terrain/19/858503/353819.terrain new file mode 100644 index 000000000..aab26e2b5 Binary files /dev/null and b/public/terrain/19/858503/353819.terrain differ diff --git a/public/terrain/19/858503/353820.terrain b/public/terrain/19/858503/353820.terrain new file mode 100644 index 000000000..1310db4b4 Binary files /dev/null and b/public/terrain/19/858503/353820.terrain differ diff --git a/public/terrain/19/858503/353821.terrain b/public/terrain/19/858503/353821.terrain new file mode 100644 index 000000000..5b1624fe0 Binary files /dev/null and b/public/terrain/19/858503/353821.terrain differ diff --git a/public/terrain/19/858503/353822.terrain b/public/terrain/19/858503/353822.terrain new file mode 100644 index 000000000..4f0e62b04 Binary files /dev/null and b/public/terrain/19/858503/353822.terrain differ diff --git a/public/terrain/19/858503/353823.terrain b/public/terrain/19/858503/353823.terrain new file mode 100644 index 000000000..4435cbf9f Binary files /dev/null and b/public/terrain/19/858503/353823.terrain differ diff --git a/public/terrain/19/858503/353824.terrain b/public/terrain/19/858503/353824.terrain new file mode 100644 index 000000000..1b2f3be52 Binary files /dev/null and b/public/terrain/19/858503/353824.terrain differ diff --git a/public/terrain/19/858503/353825.terrain b/public/terrain/19/858503/353825.terrain new file mode 100644 index 000000000..f6f580e0b Binary files /dev/null and b/public/terrain/19/858503/353825.terrain differ diff --git a/public/terrain/19/858503/353826.terrain b/public/terrain/19/858503/353826.terrain new file mode 100644 index 000000000..5e596aa81 Binary files /dev/null and b/public/terrain/19/858503/353826.terrain differ diff --git a/public/terrain/19/858503/353827.terrain b/public/terrain/19/858503/353827.terrain new file mode 100644 index 000000000..610dca9bd Binary files /dev/null and b/public/terrain/19/858503/353827.terrain differ diff --git a/public/terrain/19/858503/353828.terrain b/public/terrain/19/858503/353828.terrain new file mode 100644 index 000000000..8b202e1b6 Binary files /dev/null and b/public/terrain/19/858503/353828.terrain differ diff --git a/public/terrain/19/858503/353829.terrain b/public/terrain/19/858503/353829.terrain new file mode 100644 index 000000000..f6c8f303e Binary files /dev/null and b/public/terrain/19/858503/353829.terrain differ diff --git a/public/terrain/19/858503/353830.terrain b/public/terrain/19/858503/353830.terrain new file mode 100644 index 000000000..19cef9576 Binary files /dev/null and b/public/terrain/19/858503/353830.terrain differ diff --git a/public/terrain/19/858503/353831.terrain b/public/terrain/19/858503/353831.terrain new file mode 100644 index 000000000..584b4d4cb Binary files /dev/null and b/public/terrain/19/858503/353831.terrain differ diff --git a/public/terrain/19/858503/353832.terrain b/public/terrain/19/858503/353832.terrain new file mode 100644 index 000000000..59d9968b8 Binary files /dev/null and b/public/terrain/19/858503/353832.terrain differ diff --git a/public/terrain/19/858503/353833.terrain b/public/terrain/19/858503/353833.terrain new file mode 100644 index 000000000..9ae438797 Binary files /dev/null and b/public/terrain/19/858503/353833.terrain differ diff --git a/public/terrain/19/858503/353834.terrain b/public/terrain/19/858503/353834.terrain new file mode 100644 index 000000000..85e4bd733 Binary files /dev/null and b/public/terrain/19/858503/353834.terrain differ diff --git a/public/terrain/19/858503/353835.terrain b/public/terrain/19/858503/353835.terrain new file mode 100644 index 000000000..6508d7eda Binary files /dev/null and b/public/terrain/19/858503/353835.terrain differ diff --git a/public/terrain/19/858503/353836.terrain b/public/terrain/19/858503/353836.terrain new file mode 100644 index 000000000..13e10440d Binary files /dev/null and b/public/terrain/19/858503/353836.terrain differ diff --git a/public/terrain/19/858503/353837.terrain b/public/terrain/19/858503/353837.terrain new file mode 100644 index 000000000..105fe5d60 Binary files /dev/null and b/public/terrain/19/858503/353837.terrain differ diff --git a/public/terrain/19/858503/353838.terrain b/public/terrain/19/858503/353838.terrain new file mode 100644 index 000000000..43f4fd924 Binary files /dev/null and b/public/terrain/19/858503/353838.terrain differ diff --git a/public/terrain/19/858503/353839.terrain b/public/terrain/19/858503/353839.terrain new file mode 100644 index 000000000..c3757e031 Binary files /dev/null and b/public/terrain/19/858503/353839.terrain differ diff --git a/public/terrain/19/858503/353840.terrain b/public/terrain/19/858503/353840.terrain new file mode 100644 index 000000000..adb02fd83 Binary files /dev/null and b/public/terrain/19/858503/353840.terrain differ diff --git a/public/terrain/19/858503/353841.terrain b/public/terrain/19/858503/353841.terrain new file mode 100644 index 000000000..dafe44bed Binary files /dev/null and b/public/terrain/19/858503/353841.terrain differ diff --git a/public/terrain/19/858503/353842.terrain b/public/terrain/19/858503/353842.terrain new file mode 100644 index 000000000..6fba267e3 Binary files /dev/null and b/public/terrain/19/858503/353842.terrain differ diff --git a/public/terrain/19/858503/353843.terrain b/public/terrain/19/858503/353843.terrain new file mode 100644 index 000000000..a307753d2 Binary files /dev/null and b/public/terrain/19/858503/353843.terrain differ diff --git a/public/terrain/19/858503/353844.terrain b/public/terrain/19/858503/353844.terrain new file mode 100644 index 000000000..c48fdf2f6 Binary files /dev/null and b/public/terrain/19/858503/353844.terrain differ diff --git a/public/terrain/19/858503/353845.terrain b/public/terrain/19/858503/353845.terrain new file mode 100644 index 000000000..f4909a908 Binary files /dev/null and b/public/terrain/19/858503/353845.terrain differ diff --git a/public/terrain/19/858503/353846.terrain b/public/terrain/19/858503/353846.terrain new file mode 100644 index 000000000..36096ae82 Binary files /dev/null and b/public/terrain/19/858503/353846.terrain differ diff --git a/public/terrain/19/858503/353847.terrain b/public/terrain/19/858503/353847.terrain new file mode 100644 index 000000000..fd7f4b228 Binary files /dev/null and b/public/terrain/19/858503/353847.terrain differ diff --git a/public/terrain/19/858503/353848.terrain b/public/terrain/19/858503/353848.terrain new file mode 100644 index 000000000..f0d9c1d05 Binary files /dev/null and b/public/terrain/19/858503/353848.terrain differ diff --git a/public/terrain/19/858503/353849.terrain b/public/terrain/19/858503/353849.terrain new file mode 100644 index 000000000..c710bb9c5 Binary files /dev/null and b/public/terrain/19/858503/353849.terrain differ diff --git a/public/terrain/19/858503/353850.terrain b/public/terrain/19/858503/353850.terrain new file mode 100644 index 000000000..6acf29c3a Binary files /dev/null and b/public/terrain/19/858503/353850.terrain differ diff --git a/public/terrain/19/858503/353851.terrain b/public/terrain/19/858503/353851.terrain new file mode 100644 index 000000000..30a8a8918 Binary files /dev/null and b/public/terrain/19/858503/353851.terrain differ diff --git a/public/terrain/19/858503/353852.terrain b/public/terrain/19/858503/353852.terrain new file mode 100644 index 000000000..ed76acd6c Binary files /dev/null and b/public/terrain/19/858503/353852.terrain differ diff --git a/public/terrain/19/858503/353853.terrain b/public/terrain/19/858503/353853.terrain new file mode 100644 index 000000000..8e21449a3 Binary files /dev/null and b/public/terrain/19/858503/353853.terrain differ diff --git a/public/terrain/19/858503/353854.terrain b/public/terrain/19/858503/353854.terrain new file mode 100644 index 000000000..6da8a2a7b Binary files /dev/null and b/public/terrain/19/858503/353854.terrain differ diff --git a/public/terrain/19/858503/353855.terrain b/public/terrain/19/858503/353855.terrain new file mode 100644 index 000000000..c4bc690d3 Binary files /dev/null and b/public/terrain/19/858503/353855.terrain differ diff --git a/public/terrain/19/858503/353856.terrain b/public/terrain/19/858503/353856.terrain new file mode 100644 index 000000000..8b86924dc Binary files /dev/null and b/public/terrain/19/858503/353856.terrain differ diff --git a/public/terrain/19/858503/353857.terrain b/public/terrain/19/858503/353857.terrain new file mode 100644 index 000000000..196199acd Binary files /dev/null and b/public/terrain/19/858503/353857.terrain differ diff --git a/public/terrain/19/858503/353858.terrain b/public/terrain/19/858503/353858.terrain new file mode 100644 index 000000000..1f5bd4434 Binary files /dev/null and b/public/terrain/19/858503/353858.terrain differ diff --git a/public/terrain/19/858503/353859.terrain b/public/terrain/19/858503/353859.terrain new file mode 100644 index 000000000..d39b8c8c3 Binary files /dev/null and b/public/terrain/19/858503/353859.terrain differ diff --git a/public/terrain/19/858503/353860.terrain b/public/terrain/19/858503/353860.terrain new file mode 100644 index 000000000..f9af4bc5b Binary files /dev/null and b/public/terrain/19/858503/353860.terrain differ diff --git a/public/terrain/19/858503/353861.terrain b/public/terrain/19/858503/353861.terrain new file mode 100644 index 000000000..09910cb41 Binary files /dev/null and b/public/terrain/19/858503/353861.terrain differ diff --git a/public/terrain/19/858503/353862.terrain b/public/terrain/19/858503/353862.terrain new file mode 100644 index 000000000..bb7c73c61 Binary files /dev/null and b/public/terrain/19/858503/353862.terrain differ diff --git a/public/terrain/19/858503/353863.terrain b/public/terrain/19/858503/353863.terrain new file mode 100644 index 000000000..f87419193 Binary files /dev/null and b/public/terrain/19/858503/353863.terrain differ diff --git a/public/terrain/19/858503/353864.terrain b/public/terrain/19/858503/353864.terrain new file mode 100644 index 000000000..40d2e35d4 Binary files /dev/null and b/public/terrain/19/858503/353864.terrain differ diff --git a/public/terrain/19/858503/353865.terrain b/public/terrain/19/858503/353865.terrain new file mode 100644 index 000000000..a0bb3c589 Binary files /dev/null and b/public/terrain/19/858503/353865.terrain differ diff --git a/public/terrain/19/858503/353866.terrain b/public/terrain/19/858503/353866.terrain new file mode 100644 index 000000000..c723fff49 Binary files /dev/null and b/public/terrain/19/858503/353866.terrain differ diff --git a/public/terrain/19/858503/353867.terrain b/public/terrain/19/858503/353867.terrain new file mode 100644 index 000000000..686f29222 Binary files /dev/null and b/public/terrain/19/858503/353867.terrain differ diff --git a/public/terrain/19/858503/353868.terrain b/public/terrain/19/858503/353868.terrain new file mode 100644 index 000000000..25cb0db32 Binary files /dev/null and b/public/terrain/19/858503/353868.terrain differ diff --git a/public/terrain/19/858503/353869.terrain b/public/terrain/19/858503/353869.terrain new file mode 100644 index 000000000..cb20bdc39 Binary files /dev/null and b/public/terrain/19/858503/353869.terrain differ diff --git a/public/terrain/19/858503/353870.terrain b/public/terrain/19/858503/353870.terrain new file mode 100644 index 000000000..9b4f2cdce Binary files /dev/null and b/public/terrain/19/858503/353870.terrain differ diff --git a/public/terrain/19/858503/353871.terrain b/public/terrain/19/858503/353871.terrain new file mode 100644 index 000000000..052a2b3e9 Binary files /dev/null and b/public/terrain/19/858503/353871.terrain differ diff --git a/public/terrain/19/858503/353872.terrain b/public/terrain/19/858503/353872.terrain new file mode 100644 index 000000000..3d4b3082b Binary files /dev/null and b/public/terrain/19/858503/353872.terrain differ diff --git a/public/terrain/19/858503/353873.terrain b/public/terrain/19/858503/353873.terrain new file mode 100644 index 000000000..2a2f852b2 Binary files /dev/null and b/public/terrain/19/858503/353873.terrain differ diff --git a/public/terrain/19/858503/353874.terrain b/public/terrain/19/858503/353874.terrain new file mode 100644 index 000000000..8f61e36b0 Binary files /dev/null and b/public/terrain/19/858503/353874.terrain differ diff --git a/public/terrain/19/858503/353875.terrain b/public/terrain/19/858503/353875.terrain new file mode 100644 index 000000000..b807dbb06 Binary files /dev/null and b/public/terrain/19/858503/353875.terrain differ diff --git a/public/terrain/19/858503/353876.terrain b/public/terrain/19/858503/353876.terrain new file mode 100644 index 000000000..605c33163 Binary files /dev/null and b/public/terrain/19/858503/353876.terrain differ diff --git a/public/terrain/19/858503/353877.terrain b/public/terrain/19/858503/353877.terrain new file mode 100644 index 000000000..1d2d9723d Binary files /dev/null and b/public/terrain/19/858503/353877.terrain differ diff --git a/public/terrain/19/858503/353878.terrain b/public/terrain/19/858503/353878.terrain new file mode 100644 index 000000000..cdf1dab2f Binary files /dev/null and b/public/terrain/19/858503/353878.terrain differ diff --git a/public/terrain/19/858503/353879.terrain b/public/terrain/19/858503/353879.terrain new file mode 100644 index 000000000..2e8361ac5 Binary files /dev/null and b/public/terrain/19/858503/353879.terrain differ diff --git a/public/terrain/19/858503/353880.terrain b/public/terrain/19/858503/353880.terrain new file mode 100644 index 000000000..e01ebfa3a Binary files /dev/null and b/public/terrain/19/858503/353880.terrain differ diff --git a/public/terrain/19/858503/353881.terrain b/public/terrain/19/858503/353881.terrain new file mode 100644 index 000000000..8847cc1cb Binary files /dev/null and b/public/terrain/19/858503/353881.terrain differ diff --git a/public/terrain/19/858503/353882.terrain b/public/terrain/19/858503/353882.terrain new file mode 100644 index 000000000..f0164764b Binary files /dev/null and b/public/terrain/19/858503/353882.terrain differ diff --git a/public/terrain/19/858503/353883.terrain b/public/terrain/19/858503/353883.terrain new file mode 100644 index 000000000..33dcf0190 Binary files /dev/null and b/public/terrain/19/858503/353883.terrain differ diff --git a/public/terrain/19/858503/353884.terrain b/public/terrain/19/858503/353884.terrain new file mode 100644 index 000000000..bb3e8cdda Binary files /dev/null and b/public/terrain/19/858503/353884.terrain differ diff --git a/public/terrain/19/858503/353885.terrain b/public/terrain/19/858503/353885.terrain new file mode 100644 index 000000000..301de8999 Binary files /dev/null and b/public/terrain/19/858503/353885.terrain differ diff --git a/public/terrain/19/858503/353886.terrain b/public/terrain/19/858503/353886.terrain new file mode 100644 index 000000000..5c6ab71f0 Binary files /dev/null and b/public/terrain/19/858503/353886.terrain differ diff --git a/public/terrain/19/858503/353887.terrain b/public/terrain/19/858503/353887.terrain new file mode 100644 index 000000000..0d89794fb Binary files /dev/null and b/public/terrain/19/858503/353887.terrain differ diff --git a/public/terrain/19/858503/353888.terrain b/public/terrain/19/858503/353888.terrain new file mode 100644 index 000000000..a9620f6f2 Binary files /dev/null and b/public/terrain/19/858503/353888.terrain differ diff --git a/public/terrain/19/858503/353889.terrain b/public/terrain/19/858503/353889.terrain new file mode 100644 index 000000000..2b1036b09 Binary files /dev/null and b/public/terrain/19/858503/353889.terrain differ diff --git a/public/terrain/19/858503/353890.terrain b/public/terrain/19/858503/353890.terrain new file mode 100644 index 000000000..d66c023fd Binary files /dev/null and b/public/terrain/19/858503/353890.terrain differ diff --git a/public/terrain/19/858503/353891.terrain b/public/terrain/19/858503/353891.terrain new file mode 100644 index 000000000..f721a0e57 Binary files /dev/null and b/public/terrain/19/858503/353891.terrain differ diff --git a/public/terrain/19/858503/353892.terrain b/public/terrain/19/858503/353892.terrain new file mode 100644 index 000000000..fd242cbb6 Binary files /dev/null and b/public/terrain/19/858503/353892.terrain differ diff --git a/public/terrain/19/858503/353893.terrain b/public/terrain/19/858503/353893.terrain new file mode 100644 index 000000000..8f15e6c76 Binary files /dev/null and b/public/terrain/19/858503/353893.terrain differ diff --git a/public/terrain/19/858503/353894.terrain b/public/terrain/19/858503/353894.terrain new file mode 100644 index 000000000..2b31f739a Binary files /dev/null and b/public/terrain/19/858503/353894.terrain differ diff --git a/public/terrain/19/858503/353895.terrain b/public/terrain/19/858503/353895.terrain new file mode 100644 index 000000000..5ba9d4f44 Binary files /dev/null and b/public/terrain/19/858503/353895.terrain differ diff --git a/public/terrain/19/858503/353896.terrain b/public/terrain/19/858503/353896.terrain new file mode 100644 index 000000000..097af5f2d Binary files /dev/null and b/public/terrain/19/858503/353896.terrain differ diff --git a/public/terrain/19/858503/353897.terrain b/public/terrain/19/858503/353897.terrain new file mode 100644 index 000000000..b7e1d6f63 Binary files /dev/null and b/public/terrain/19/858503/353897.terrain differ diff --git a/public/terrain/19/858503/353898.terrain b/public/terrain/19/858503/353898.terrain new file mode 100644 index 000000000..278f19449 Binary files /dev/null and b/public/terrain/19/858503/353898.terrain differ diff --git a/public/terrain/19/858503/353899.terrain b/public/terrain/19/858503/353899.terrain new file mode 100644 index 000000000..731d1f1c1 Binary files /dev/null and b/public/terrain/19/858503/353899.terrain differ diff --git a/public/terrain/19/858503/353900.terrain b/public/terrain/19/858503/353900.terrain new file mode 100644 index 000000000..883821f95 Binary files /dev/null and b/public/terrain/19/858503/353900.terrain differ diff --git a/public/terrain/19/858503/353901.terrain b/public/terrain/19/858503/353901.terrain new file mode 100644 index 000000000..dd3791670 Binary files /dev/null and b/public/terrain/19/858503/353901.terrain differ diff --git a/public/terrain/19/858503/353902.terrain b/public/terrain/19/858503/353902.terrain new file mode 100644 index 000000000..18ed9b405 Binary files /dev/null and b/public/terrain/19/858503/353902.terrain differ diff --git a/public/terrain/19/858503/353903.terrain b/public/terrain/19/858503/353903.terrain new file mode 100644 index 000000000..773df5185 Binary files /dev/null and b/public/terrain/19/858503/353903.terrain differ diff --git a/public/terrain/19/858503/353904.terrain b/public/terrain/19/858503/353904.terrain new file mode 100644 index 000000000..ad9fa79de Binary files /dev/null and b/public/terrain/19/858503/353904.terrain differ diff --git a/public/terrain/19/858503/353905.terrain b/public/terrain/19/858503/353905.terrain new file mode 100644 index 000000000..1e493318f Binary files /dev/null and b/public/terrain/19/858503/353905.terrain differ diff --git a/public/terrain/19/858503/353906.terrain b/public/terrain/19/858503/353906.terrain new file mode 100644 index 000000000..7edc5d5b5 Binary files /dev/null and b/public/terrain/19/858503/353906.terrain differ diff --git a/public/terrain/19/858503/353907.terrain b/public/terrain/19/858503/353907.terrain new file mode 100644 index 000000000..1eae381b2 Binary files /dev/null and b/public/terrain/19/858503/353907.terrain differ diff --git a/public/terrain/19/858503/353908.terrain b/public/terrain/19/858503/353908.terrain new file mode 100644 index 000000000..5f885d041 Binary files /dev/null and b/public/terrain/19/858503/353908.terrain differ diff --git a/public/terrain/19/858503/353909.terrain b/public/terrain/19/858503/353909.terrain new file mode 100644 index 000000000..8d82c80d2 Binary files /dev/null and b/public/terrain/19/858503/353909.terrain differ diff --git a/public/terrain/19/858503/353910.terrain b/public/terrain/19/858503/353910.terrain new file mode 100644 index 000000000..3459f86ce Binary files /dev/null and b/public/terrain/19/858503/353910.terrain differ diff --git a/public/terrain/19/858503/353911.terrain b/public/terrain/19/858503/353911.terrain new file mode 100644 index 000000000..a6c599741 Binary files /dev/null and b/public/terrain/19/858503/353911.terrain differ diff --git a/public/terrain/19/858503/353912.terrain b/public/terrain/19/858503/353912.terrain new file mode 100644 index 000000000..4f921c74f Binary files /dev/null and b/public/terrain/19/858503/353912.terrain differ diff --git a/public/terrain/19/858503/353913.terrain b/public/terrain/19/858503/353913.terrain new file mode 100644 index 000000000..d6b1f1b1a Binary files /dev/null and b/public/terrain/19/858503/353913.terrain differ diff --git a/public/terrain/19/858503/353914.terrain b/public/terrain/19/858503/353914.terrain new file mode 100644 index 000000000..708244140 Binary files /dev/null and b/public/terrain/19/858503/353914.terrain differ diff --git a/public/terrain/19/858503/353915.terrain b/public/terrain/19/858503/353915.terrain new file mode 100644 index 000000000..9ccc51800 Binary files /dev/null and b/public/terrain/19/858503/353915.terrain differ diff --git a/public/terrain/19/858503/353916.terrain b/public/terrain/19/858503/353916.terrain new file mode 100644 index 000000000..a5c66a06b Binary files /dev/null and b/public/terrain/19/858503/353916.terrain differ diff --git a/public/terrain/19/858503/353917.terrain b/public/terrain/19/858503/353917.terrain new file mode 100644 index 000000000..3cfb498b5 Binary files /dev/null and b/public/terrain/19/858503/353917.terrain differ diff --git a/public/terrain/19/858503/353918.terrain b/public/terrain/19/858503/353918.terrain new file mode 100644 index 000000000..31be290db Binary files /dev/null and b/public/terrain/19/858503/353918.terrain differ diff --git a/public/terrain/19/858503/353919.terrain b/public/terrain/19/858503/353919.terrain new file mode 100644 index 000000000..bc0e9a447 Binary files /dev/null and b/public/terrain/19/858503/353919.terrain differ diff --git a/public/terrain/19/858503/353920.terrain b/public/terrain/19/858503/353920.terrain new file mode 100644 index 000000000..43ae49e85 Binary files /dev/null and b/public/terrain/19/858503/353920.terrain differ diff --git a/public/terrain/19/858503/353921.terrain b/public/terrain/19/858503/353921.terrain new file mode 100644 index 000000000..ab5f1bccd Binary files /dev/null and b/public/terrain/19/858503/353921.terrain differ diff --git a/public/terrain/19/858503/353922.terrain b/public/terrain/19/858503/353922.terrain new file mode 100644 index 000000000..423da2b41 Binary files /dev/null and b/public/terrain/19/858503/353922.terrain differ diff --git a/public/terrain/19/858503/353923.terrain b/public/terrain/19/858503/353923.terrain new file mode 100644 index 000000000..49b7a842a Binary files /dev/null and b/public/terrain/19/858503/353923.terrain differ diff --git a/public/terrain/19/858503/353924.terrain b/public/terrain/19/858503/353924.terrain new file mode 100644 index 000000000..57c1dbf80 Binary files /dev/null and b/public/terrain/19/858503/353924.terrain differ diff --git a/public/terrain/19/858503/353925.terrain b/public/terrain/19/858503/353925.terrain new file mode 100644 index 000000000..9b674960e Binary files /dev/null and b/public/terrain/19/858503/353925.terrain differ diff --git a/public/terrain/19/858503/353926.terrain b/public/terrain/19/858503/353926.terrain new file mode 100644 index 000000000..d88dac6a6 Binary files /dev/null and b/public/terrain/19/858503/353926.terrain differ diff --git a/public/terrain/19/858503/353927.terrain b/public/terrain/19/858503/353927.terrain new file mode 100644 index 000000000..2946eb1ff Binary files /dev/null and b/public/terrain/19/858503/353927.terrain differ diff --git a/public/terrain/19/858503/353928.terrain b/public/terrain/19/858503/353928.terrain new file mode 100644 index 000000000..072ec02b5 Binary files /dev/null and b/public/terrain/19/858503/353928.terrain differ diff --git a/public/terrain/19/858503/353929.terrain b/public/terrain/19/858503/353929.terrain new file mode 100644 index 000000000..ce2c6df17 Binary files /dev/null and b/public/terrain/19/858503/353929.terrain differ diff --git a/public/terrain/19/858503/353930.terrain b/public/terrain/19/858503/353930.terrain new file mode 100644 index 000000000..9156ff00e Binary files /dev/null and b/public/terrain/19/858503/353930.terrain differ diff --git a/public/terrain/19/858503/353931.terrain b/public/terrain/19/858503/353931.terrain new file mode 100644 index 000000000..11d0f69e3 Binary files /dev/null and b/public/terrain/19/858503/353931.terrain differ diff --git a/public/terrain/19/858503/353932.terrain b/public/terrain/19/858503/353932.terrain new file mode 100644 index 000000000..7a646050c Binary files /dev/null and b/public/terrain/19/858503/353932.terrain differ diff --git a/public/terrain/19/858503/353933.terrain b/public/terrain/19/858503/353933.terrain new file mode 100644 index 000000000..588046c3e Binary files /dev/null and b/public/terrain/19/858503/353933.terrain differ diff --git a/public/terrain/19/858503/353934.terrain b/public/terrain/19/858503/353934.terrain new file mode 100644 index 000000000..dc0237ba1 Binary files /dev/null and b/public/terrain/19/858503/353934.terrain differ diff --git a/public/terrain/19/858503/353935.terrain b/public/terrain/19/858503/353935.terrain new file mode 100644 index 000000000..7feaadb01 Binary files /dev/null and b/public/terrain/19/858503/353935.terrain differ diff --git a/public/terrain/19/858503/353936.terrain b/public/terrain/19/858503/353936.terrain new file mode 100644 index 000000000..6c73c9793 Binary files /dev/null and b/public/terrain/19/858503/353936.terrain differ diff --git a/public/terrain/19/858503/353937.terrain b/public/terrain/19/858503/353937.terrain new file mode 100644 index 000000000..d93eff77d Binary files /dev/null and b/public/terrain/19/858503/353937.terrain differ diff --git a/public/terrain/19/858503/353938.terrain b/public/terrain/19/858503/353938.terrain new file mode 100644 index 000000000..9d942500d Binary files /dev/null and b/public/terrain/19/858503/353938.terrain differ diff --git a/public/terrain/19/858503/353939.terrain b/public/terrain/19/858503/353939.terrain new file mode 100644 index 000000000..cef045187 Binary files /dev/null and b/public/terrain/19/858503/353939.terrain differ diff --git a/public/terrain/19/858503/353940.terrain b/public/terrain/19/858503/353940.terrain new file mode 100644 index 000000000..6f76ee355 Binary files /dev/null and b/public/terrain/19/858503/353940.terrain differ diff --git a/public/terrain/19/858503/353941.terrain b/public/terrain/19/858503/353941.terrain new file mode 100644 index 000000000..51b1d1f17 Binary files /dev/null and b/public/terrain/19/858503/353941.terrain differ diff --git a/public/terrain/19/858503/353942.terrain b/public/terrain/19/858503/353942.terrain new file mode 100644 index 000000000..ae6462492 Binary files /dev/null and b/public/terrain/19/858503/353942.terrain differ diff --git a/public/terrain/19/858503/353943.terrain b/public/terrain/19/858503/353943.terrain new file mode 100644 index 000000000..37b2392e2 Binary files /dev/null and b/public/terrain/19/858503/353943.terrain differ diff --git a/public/terrain/19/858503/353944.terrain b/public/terrain/19/858503/353944.terrain new file mode 100644 index 000000000..afa690126 Binary files /dev/null and b/public/terrain/19/858503/353944.terrain differ diff --git a/public/terrain/19/858503/353945.terrain b/public/terrain/19/858503/353945.terrain new file mode 100644 index 000000000..b88c69124 Binary files /dev/null and b/public/terrain/19/858503/353945.terrain differ diff --git a/public/terrain/19/858503/353946.terrain b/public/terrain/19/858503/353946.terrain new file mode 100644 index 000000000..e3ec6efab Binary files /dev/null and b/public/terrain/19/858503/353946.terrain differ diff --git a/public/terrain/19/858503/353947.terrain b/public/terrain/19/858503/353947.terrain new file mode 100644 index 000000000..c0748599d Binary files /dev/null and b/public/terrain/19/858503/353947.terrain differ diff --git a/public/terrain/19/858503/353948.terrain b/public/terrain/19/858503/353948.terrain new file mode 100644 index 000000000..4c9acc8a4 Binary files /dev/null and b/public/terrain/19/858503/353948.terrain differ diff --git a/public/terrain/19/858503/353949.terrain b/public/terrain/19/858503/353949.terrain new file mode 100644 index 000000000..d6206193c Binary files /dev/null and b/public/terrain/19/858503/353949.terrain differ diff --git a/public/terrain/19/858503/353950.terrain b/public/terrain/19/858503/353950.terrain new file mode 100644 index 000000000..981301bf0 Binary files /dev/null and b/public/terrain/19/858503/353950.terrain differ diff --git a/public/terrain/19/858503/353951.terrain b/public/terrain/19/858503/353951.terrain new file mode 100644 index 000000000..ba8aaa76b Binary files /dev/null and b/public/terrain/19/858503/353951.terrain differ diff --git a/public/terrain/19/858503/353952.terrain b/public/terrain/19/858503/353952.terrain new file mode 100644 index 000000000..a0c8aa3af Binary files /dev/null and b/public/terrain/19/858503/353952.terrain differ diff --git a/public/terrain/19/858503/353953.terrain b/public/terrain/19/858503/353953.terrain new file mode 100644 index 000000000..62bfb4477 Binary files /dev/null and b/public/terrain/19/858503/353953.terrain differ diff --git a/public/terrain/19/858503/353954.terrain b/public/terrain/19/858503/353954.terrain new file mode 100644 index 000000000..669ca1148 Binary files /dev/null and b/public/terrain/19/858503/353954.terrain differ diff --git a/public/terrain/19/858503/353955.terrain b/public/terrain/19/858503/353955.terrain new file mode 100644 index 000000000..ccf3703c4 Binary files /dev/null and b/public/terrain/19/858503/353955.terrain differ diff --git a/public/terrain/19/858503/353956.terrain b/public/terrain/19/858503/353956.terrain new file mode 100644 index 000000000..3de04a974 Binary files /dev/null and b/public/terrain/19/858503/353956.terrain differ diff --git a/public/terrain/19/858503/353957.terrain b/public/terrain/19/858503/353957.terrain new file mode 100644 index 000000000..03f895268 Binary files /dev/null and b/public/terrain/19/858503/353957.terrain differ diff --git a/public/terrain/19/858503/353958.terrain b/public/terrain/19/858503/353958.terrain new file mode 100644 index 000000000..c894c02b4 Binary files /dev/null and b/public/terrain/19/858503/353958.terrain differ diff --git a/public/terrain/19/858503/353959.terrain b/public/terrain/19/858503/353959.terrain new file mode 100644 index 000000000..f8c5352fe Binary files /dev/null and b/public/terrain/19/858503/353959.terrain differ diff --git a/public/terrain/19/858503/353960.terrain b/public/terrain/19/858503/353960.terrain new file mode 100644 index 000000000..99f6f0716 Binary files /dev/null and b/public/terrain/19/858503/353960.terrain differ diff --git a/public/terrain/19/858503/353961.terrain b/public/terrain/19/858503/353961.terrain new file mode 100644 index 000000000..e65427d2b Binary files /dev/null and b/public/terrain/19/858503/353961.terrain differ diff --git a/public/terrain/19/858503/353962.terrain b/public/terrain/19/858503/353962.terrain new file mode 100644 index 000000000..7e4626e00 Binary files /dev/null and b/public/terrain/19/858503/353962.terrain differ diff --git a/public/terrain/19/858503/353963.terrain b/public/terrain/19/858503/353963.terrain new file mode 100644 index 000000000..31fec1d46 Binary files /dev/null and b/public/terrain/19/858503/353963.terrain differ diff --git a/public/terrain/19/858503/353964.terrain b/public/terrain/19/858503/353964.terrain new file mode 100644 index 000000000..77f66726f Binary files /dev/null and b/public/terrain/19/858503/353964.terrain differ diff --git a/public/terrain/19/858503/353965.terrain b/public/terrain/19/858503/353965.terrain new file mode 100644 index 000000000..4da919d25 Binary files /dev/null and b/public/terrain/19/858503/353965.terrain differ diff --git a/public/terrain/19/858503/353966.terrain b/public/terrain/19/858503/353966.terrain new file mode 100644 index 000000000..96cf1161e Binary files /dev/null and b/public/terrain/19/858503/353966.terrain differ diff --git a/public/terrain/19/858503/353967.terrain b/public/terrain/19/858503/353967.terrain new file mode 100644 index 000000000..c19c50f08 Binary files /dev/null and b/public/terrain/19/858503/353967.terrain differ diff --git a/public/terrain/19/858503/353968.terrain b/public/terrain/19/858503/353968.terrain new file mode 100644 index 000000000..b76fad600 Binary files /dev/null and b/public/terrain/19/858503/353968.terrain differ diff --git a/public/terrain/19/858503/353969.terrain b/public/terrain/19/858503/353969.terrain new file mode 100644 index 000000000..458c241e6 Binary files /dev/null and b/public/terrain/19/858503/353969.terrain differ diff --git a/public/terrain/19/858503/353970.terrain b/public/terrain/19/858503/353970.terrain new file mode 100644 index 000000000..2470a95dd Binary files /dev/null and b/public/terrain/19/858503/353970.terrain differ diff --git a/public/terrain/19/858503/353971.terrain b/public/terrain/19/858503/353971.terrain new file mode 100644 index 000000000..54ecb93c3 Binary files /dev/null and b/public/terrain/19/858503/353971.terrain differ diff --git a/public/terrain/19/858503/353972.terrain b/public/terrain/19/858503/353972.terrain new file mode 100644 index 000000000..064429b8a Binary files /dev/null and b/public/terrain/19/858503/353972.terrain differ diff --git a/public/terrain/19/858503/353973.terrain b/public/terrain/19/858503/353973.terrain new file mode 100644 index 000000000..d754b10d4 Binary files /dev/null and b/public/terrain/19/858503/353973.terrain differ diff --git a/public/terrain/19/858503/353974.terrain b/public/terrain/19/858503/353974.terrain new file mode 100644 index 000000000..3e66b4c14 Binary files /dev/null and b/public/terrain/19/858503/353974.terrain differ diff --git a/public/terrain/19/858503/353975.terrain b/public/terrain/19/858503/353975.terrain new file mode 100644 index 000000000..37827de1b Binary files /dev/null and b/public/terrain/19/858503/353975.terrain differ diff --git a/public/terrain/19/858503/353976.terrain b/public/terrain/19/858503/353976.terrain new file mode 100644 index 000000000..3d548450b Binary files /dev/null and b/public/terrain/19/858503/353976.terrain differ diff --git a/public/terrain/19/858503/353977.terrain b/public/terrain/19/858503/353977.terrain new file mode 100644 index 000000000..d3604d1fc Binary files /dev/null and b/public/terrain/19/858503/353977.terrain differ diff --git a/public/terrain/19/858503/353978.terrain b/public/terrain/19/858503/353978.terrain new file mode 100644 index 000000000..46443642b Binary files /dev/null and b/public/terrain/19/858503/353978.terrain differ diff --git a/public/terrain/19/858503/353979.terrain b/public/terrain/19/858503/353979.terrain new file mode 100644 index 000000000..8f80a3e20 Binary files /dev/null and b/public/terrain/19/858503/353979.terrain differ diff --git a/public/terrain/19/858503/353980.terrain b/public/terrain/19/858503/353980.terrain new file mode 100644 index 000000000..9f5343402 Binary files /dev/null and b/public/terrain/19/858503/353980.terrain differ diff --git a/public/terrain/19/858503/353981.terrain b/public/terrain/19/858503/353981.terrain new file mode 100644 index 000000000..36fd6edd7 Binary files /dev/null and b/public/terrain/19/858503/353981.terrain differ diff --git a/public/terrain/19/858503/353982.terrain b/public/terrain/19/858503/353982.terrain new file mode 100644 index 000000000..4c361c27d Binary files /dev/null and b/public/terrain/19/858503/353982.terrain differ diff --git a/public/terrain/19/858503/353983.terrain b/public/terrain/19/858503/353983.terrain new file mode 100644 index 000000000..d6b968623 Binary files /dev/null and b/public/terrain/19/858503/353983.terrain differ diff --git a/public/terrain/19/858503/353984.terrain b/public/terrain/19/858503/353984.terrain new file mode 100644 index 000000000..786ba14eb Binary files /dev/null and b/public/terrain/19/858503/353984.terrain differ diff --git a/public/terrain/19/858503/353985.terrain b/public/terrain/19/858503/353985.terrain new file mode 100644 index 000000000..d92d52841 Binary files /dev/null and b/public/terrain/19/858503/353985.terrain differ diff --git a/public/terrain/19/858503/353986.terrain b/public/terrain/19/858503/353986.terrain new file mode 100644 index 000000000..e8cd4c3b3 Binary files /dev/null and b/public/terrain/19/858503/353986.terrain differ diff --git a/public/terrain/19/858503/353987.terrain b/public/terrain/19/858503/353987.terrain new file mode 100644 index 000000000..e15cc0a8a Binary files /dev/null and b/public/terrain/19/858503/353987.terrain differ diff --git a/public/terrain/19/858503/353988.terrain b/public/terrain/19/858503/353988.terrain new file mode 100644 index 000000000..bf4b8d24f Binary files /dev/null and b/public/terrain/19/858503/353988.terrain differ diff --git a/public/terrain/19/858503/353989.terrain b/public/terrain/19/858503/353989.terrain new file mode 100644 index 000000000..d247585d9 Binary files /dev/null and b/public/terrain/19/858503/353989.terrain differ diff --git a/public/terrain/19/858503/353990.terrain b/public/terrain/19/858503/353990.terrain new file mode 100644 index 000000000..91c921ce8 Binary files /dev/null and b/public/terrain/19/858503/353990.terrain differ diff --git a/public/terrain/19/858503/353991.terrain b/public/terrain/19/858503/353991.terrain new file mode 100644 index 000000000..90ee1324b Binary files /dev/null and b/public/terrain/19/858503/353991.terrain differ diff --git a/public/terrain/19/858503/353992.terrain b/public/terrain/19/858503/353992.terrain new file mode 100644 index 000000000..3a96971fd Binary files /dev/null and b/public/terrain/19/858503/353992.terrain differ diff --git a/public/terrain/19/858503/353993.terrain b/public/terrain/19/858503/353993.terrain new file mode 100644 index 000000000..8ba34206a Binary files /dev/null and b/public/terrain/19/858503/353993.terrain differ diff --git a/public/terrain/19/858503/353994.terrain b/public/terrain/19/858503/353994.terrain new file mode 100644 index 000000000..a90a55244 Binary files /dev/null and b/public/terrain/19/858503/353994.terrain differ diff --git a/public/terrain/19/858503/353995.terrain b/public/terrain/19/858503/353995.terrain new file mode 100644 index 000000000..cfbc65825 Binary files /dev/null and b/public/terrain/19/858503/353995.terrain differ diff --git a/public/terrain/19/858503/353996.terrain b/public/terrain/19/858503/353996.terrain new file mode 100644 index 000000000..75c8d9b8b Binary files /dev/null and b/public/terrain/19/858503/353996.terrain differ diff --git a/public/terrain/19/858503/353997.terrain b/public/terrain/19/858503/353997.terrain new file mode 100644 index 000000000..abdc298f0 Binary files /dev/null and b/public/terrain/19/858503/353997.terrain differ diff --git a/public/terrain/19/858503/353998.terrain b/public/terrain/19/858503/353998.terrain new file mode 100644 index 000000000..c683ed50c Binary files /dev/null and b/public/terrain/19/858503/353998.terrain differ diff --git a/public/terrain/19/858503/353999.terrain b/public/terrain/19/858503/353999.terrain new file mode 100644 index 000000000..6f7cf5840 Binary files /dev/null and b/public/terrain/19/858503/353999.terrain differ diff --git a/public/terrain/19/858503/354000.terrain b/public/terrain/19/858503/354000.terrain new file mode 100644 index 000000000..98f7b3bfd Binary files /dev/null and b/public/terrain/19/858503/354000.terrain differ diff --git a/public/terrain/19/858503/354001.terrain b/public/terrain/19/858503/354001.terrain new file mode 100644 index 000000000..c1abbfc60 Binary files /dev/null and b/public/terrain/19/858503/354001.terrain differ diff --git a/public/terrain/19/858503/354002.terrain b/public/terrain/19/858503/354002.terrain new file mode 100644 index 000000000..c586a7277 Binary files /dev/null and b/public/terrain/19/858503/354002.terrain differ diff --git a/public/terrain/19/858503/354003.terrain b/public/terrain/19/858503/354003.terrain new file mode 100644 index 000000000..53dd7f9c4 Binary files /dev/null and b/public/terrain/19/858503/354003.terrain differ diff --git a/public/terrain/19/858503/354004.terrain b/public/terrain/19/858503/354004.terrain new file mode 100644 index 000000000..596260a11 Binary files /dev/null and b/public/terrain/19/858503/354004.terrain differ diff --git a/public/terrain/19/858503/354005.terrain b/public/terrain/19/858503/354005.terrain new file mode 100644 index 000000000..201fa926b Binary files /dev/null and b/public/terrain/19/858503/354005.terrain differ diff --git a/public/terrain/19/858503/354006.terrain b/public/terrain/19/858503/354006.terrain new file mode 100644 index 000000000..5bb29a0d2 Binary files /dev/null and b/public/terrain/19/858503/354006.terrain differ diff --git a/public/terrain/19/858503/354007.terrain b/public/terrain/19/858503/354007.terrain new file mode 100644 index 000000000..254b0b1c6 Binary files /dev/null and b/public/terrain/19/858503/354007.terrain differ diff --git a/public/terrain/19/858503/354008.terrain b/public/terrain/19/858503/354008.terrain new file mode 100644 index 000000000..2968f2e78 Binary files /dev/null and b/public/terrain/19/858503/354008.terrain differ diff --git a/public/terrain/19/858503/354009.terrain b/public/terrain/19/858503/354009.terrain new file mode 100644 index 000000000..ae2fa20ff Binary files /dev/null and b/public/terrain/19/858503/354009.terrain differ diff --git a/public/terrain/19/858503/354010.terrain b/public/terrain/19/858503/354010.terrain new file mode 100644 index 000000000..13bb48405 Binary files /dev/null and b/public/terrain/19/858503/354010.terrain differ diff --git a/public/terrain/19/858503/354011.terrain b/public/terrain/19/858503/354011.terrain new file mode 100644 index 000000000..5315135cd Binary files /dev/null and b/public/terrain/19/858503/354011.terrain differ diff --git a/public/terrain/19/858503/354012.terrain b/public/terrain/19/858503/354012.terrain new file mode 100644 index 000000000..f2d09b4f6 Binary files /dev/null and b/public/terrain/19/858503/354012.terrain differ diff --git a/public/terrain/19/858503/354013.terrain b/public/terrain/19/858503/354013.terrain new file mode 100644 index 000000000..6166aca73 Binary files /dev/null and b/public/terrain/19/858503/354013.terrain differ diff --git a/public/terrain/19/858503/354014.terrain b/public/terrain/19/858503/354014.terrain new file mode 100644 index 000000000..17e9bede3 Binary files /dev/null and b/public/terrain/19/858503/354014.terrain differ diff --git a/public/terrain/19/858503/354015.terrain b/public/terrain/19/858503/354015.terrain new file mode 100644 index 000000000..0fa1c74a1 Binary files /dev/null and b/public/terrain/19/858503/354015.terrain differ diff --git a/public/terrain/19/858503/354016.terrain b/public/terrain/19/858503/354016.terrain new file mode 100644 index 000000000..a3619970d Binary files /dev/null and b/public/terrain/19/858503/354016.terrain differ diff --git a/public/terrain/19/858503/354017.terrain b/public/terrain/19/858503/354017.terrain new file mode 100644 index 000000000..1b370266c Binary files /dev/null and b/public/terrain/19/858503/354017.terrain differ diff --git a/public/terrain/19/858503/354018.terrain b/public/terrain/19/858503/354018.terrain new file mode 100644 index 000000000..13c88c0a1 Binary files /dev/null and b/public/terrain/19/858503/354018.terrain differ diff --git a/public/terrain/19/858503/354019.terrain b/public/terrain/19/858503/354019.terrain new file mode 100644 index 000000000..93535a05d Binary files /dev/null and b/public/terrain/19/858503/354019.terrain differ diff --git a/public/terrain/19/858503/354020.terrain b/public/terrain/19/858503/354020.terrain new file mode 100644 index 000000000..6f25c5fe8 Binary files /dev/null and b/public/terrain/19/858503/354020.terrain differ diff --git a/public/terrain/19/858503/354021.terrain b/public/terrain/19/858503/354021.terrain new file mode 100644 index 000000000..a45a8bec6 Binary files /dev/null and b/public/terrain/19/858503/354021.terrain differ diff --git a/public/terrain/19/858503/354022.terrain b/public/terrain/19/858503/354022.terrain new file mode 100644 index 000000000..cd459be1b Binary files /dev/null and b/public/terrain/19/858503/354022.terrain differ diff --git a/public/terrain/19/858503/354023.terrain b/public/terrain/19/858503/354023.terrain new file mode 100644 index 000000000..42f6ae2ea Binary files /dev/null and b/public/terrain/19/858503/354023.terrain differ diff --git a/public/terrain/19/858503/354024.terrain b/public/terrain/19/858503/354024.terrain new file mode 100644 index 000000000..384398768 Binary files /dev/null and b/public/terrain/19/858503/354024.terrain differ diff --git a/public/terrain/19/858503/354025.terrain b/public/terrain/19/858503/354025.terrain new file mode 100644 index 000000000..b445ada62 Binary files /dev/null and b/public/terrain/19/858503/354025.terrain differ diff --git a/public/terrain/19/858503/354026.terrain b/public/terrain/19/858503/354026.terrain new file mode 100644 index 000000000..276b88409 Binary files /dev/null and b/public/terrain/19/858503/354026.terrain differ diff --git a/public/terrain/19/858503/354027.terrain b/public/terrain/19/858503/354027.terrain new file mode 100644 index 000000000..ffea6ba9d Binary files /dev/null and b/public/terrain/19/858503/354027.terrain differ diff --git a/public/terrain/19/858503/354028.terrain b/public/terrain/19/858503/354028.terrain new file mode 100644 index 000000000..262b7d588 Binary files /dev/null and b/public/terrain/19/858503/354028.terrain differ diff --git a/public/terrain/19/858503/354029.terrain b/public/terrain/19/858503/354029.terrain new file mode 100644 index 000000000..fcd9f742b Binary files /dev/null and b/public/terrain/19/858503/354029.terrain differ diff --git a/public/terrain/19/858503/354030.terrain b/public/terrain/19/858503/354030.terrain new file mode 100644 index 000000000..620ef1d50 Binary files /dev/null and b/public/terrain/19/858503/354030.terrain differ diff --git a/public/terrain/19/858503/354031.terrain b/public/terrain/19/858503/354031.terrain new file mode 100644 index 000000000..d1b58aa6c Binary files /dev/null and b/public/terrain/19/858503/354031.terrain differ diff --git a/public/terrain/19/858503/354032.terrain b/public/terrain/19/858503/354032.terrain new file mode 100644 index 000000000..ad2a8d321 Binary files /dev/null and b/public/terrain/19/858503/354032.terrain differ diff --git a/public/terrain/19/858503/354033.terrain b/public/terrain/19/858503/354033.terrain new file mode 100644 index 000000000..93a5b6744 Binary files /dev/null and b/public/terrain/19/858503/354033.terrain differ diff --git a/public/terrain/19/858503/354034.terrain b/public/terrain/19/858503/354034.terrain new file mode 100644 index 000000000..df7f6d65b Binary files /dev/null and b/public/terrain/19/858503/354034.terrain differ diff --git a/public/terrain/19/858503/354035.terrain b/public/terrain/19/858503/354035.terrain new file mode 100644 index 000000000..f4c19e4de Binary files /dev/null and b/public/terrain/19/858503/354035.terrain differ diff --git a/public/terrain/19/858503/354036.terrain b/public/terrain/19/858503/354036.terrain new file mode 100644 index 000000000..bcfaa184d Binary files /dev/null and b/public/terrain/19/858503/354036.terrain differ diff --git a/public/terrain/19/858503/354037.terrain b/public/terrain/19/858503/354037.terrain new file mode 100644 index 000000000..2c2fcdf48 Binary files /dev/null and b/public/terrain/19/858503/354037.terrain differ diff --git a/public/terrain/19/858503/354038.terrain b/public/terrain/19/858503/354038.terrain new file mode 100644 index 000000000..a48ad90a9 Binary files /dev/null and b/public/terrain/19/858503/354038.terrain differ diff --git a/public/terrain/19/858503/354039.terrain b/public/terrain/19/858503/354039.terrain new file mode 100644 index 000000000..68dd48beb Binary files /dev/null and b/public/terrain/19/858503/354039.terrain differ diff --git a/public/terrain/19/858503/354040.terrain b/public/terrain/19/858503/354040.terrain new file mode 100644 index 000000000..a9f9940c1 Binary files /dev/null and b/public/terrain/19/858503/354040.terrain differ diff --git a/public/terrain/19/858503/354041.terrain b/public/terrain/19/858503/354041.terrain new file mode 100644 index 000000000..2fd257f4b Binary files /dev/null and b/public/terrain/19/858503/354041.terrain differ diff --git a/public/terrain/19/858503/354042.terrain b/public/terrain/19/858503/354042.terrain new file mode 100644 index 000000000..0d24d8abc Binary files /dev/null and b/public/terrain/19/858503/354042.terrain differ diff --git a/public/terrain/19/858503/354043.terrain b/public/terrain/19/858503/354043.terrain new file mode 100644 index 000000000..036092449 Binary files /dev/null and b/public/terrain/19/858503/354043.terrain differ diff --git a/public/terrain/19/858503/354044.terrain b/public/terrain/19/858503/354044.terrain new file mode 100644 index 000000000..6504219db Binary files /dev/null and b/public/terrain/19/858503/354044.terrain differ diff --git a/public/terrain/19/858503/354045.terrain b/public/terrain/19/858503/354045.terrain new file mode 100644 index 000000000..635ebd566 Binary files /dev/null and b/public/terrain/19/858503/354045.terrain differ diff --git a/public/terrain/19/858503/354046.terrain b/public/terrain/19/858503/354046.terrain new file mode 100644 index 000000000..8c4e7f3f4 Binary files /dev/null and b/public/terrain/19/858503/354046.terrain differ diff --git a/public/terrain/19/858503/354047.terrain b/public/terrain/19/858503/354047.terrain new file mode 100644 index 000000000..4789718bf Binary files /dev/null and b/public/terrain/19/858503/354047.terrain differ diff --git a/public/terrain/19/858503/354048.terrain b/public/terrain/19/858503/354048.terrain new file mode 100644 index 000000000..1945b9133 Binary files /dev/null and b/public/terrain/19/858503/354048.terrain differ diff --git a/public/terrain/19/858503/354049.terrain b/public/terrain/19/858503/354049.terrain new file mode 100644 index 000000000..29b50c238 Binary files /dev/null and b/public/terrain/19/858503/354049.terrain differ diff --git a/public/terrain/19/858503/354050.terrain b/public/terrain/19/858503/354050.terrain new file mode 100644 index 000000000..4ad391e1d Binary files /dev/null and b/public/terrain/19/858503/354050.terrain differ diff --git a/public/terrain/19/858503/354051.terrain b/public/terrain/19/858503/354051.terrain new file mode 100644 index 000000000..8338acff2 Binary files /dev/null and b/public/terrain/19/858503/354051.terrain differ diff --git a/public/terrain/19/858503/354052.terrain b/public/terrain/19/858503/354052.terrain new file mode 100644 index 000000000..c731d6a82 Binary files /dev/null and b/public/terrain/19/858503/354052.terrain differ diff --git a/public/terrain/19/858503/354053.terrain b/public/terrain/19/858503/354053.terrain new file mode 100644 index 000000000..30af1996b Binary files /dev/null and b/public/terrain/19/858503/354053.terrain differ diff --git a/public/terrain/19/858503/354054.terrain b/public/terrain/19/858503/354054.terrain new file mode 100644 index 000000000..4c5a5c3f6 Binary files /dev/null and b/public/terrain/19/858503/354054.terrain differ diff --git a/public/terrain/19/858503/354055.terrain b/public/terrain/19/858503/354055.terrain new file mode 100644 index 000000000..16d5eb1e0 Binary files /dev/null and b/public/terrain/19/858503/354055.terrain differ diff --git a/public/terrain/19/858503/354056.terrain b/public/terrain/19/858503/354056.terrain new file mode 100644 index 000000000..0064614eb Binary files /dev/null and b/public/terrain/19/858503/354056.terrain differ diff --git a/public/terrain/19/858503/354057.terrain b/public/terrain/19/858503/354057.terrain new file mode 100644 index 000000000..36d02d3ef Binary files /dev/null and b/public/terrain/19/858503/354057.terrain differ diff --git a/public/terrain/19/858503/354058.terrain b/public/terrain/19/858503/354058.terrain new file mode 100644 index 000000000..b1063ade7 Binary files /dev/null and b/public/terrain/19/858503/354058.terrain differ diff --git a/public/terrain/19/858503/354059.terrain b/public/terrain/19/858503/354059.terrain new file mode 100644 index 000000000..9db66653d Binary files /dev/null and b/public/terrain/19/858503/354059.terrain differ diff --git a/public/terrain/19/858504/353743.terrain b/public/terrain/19/858504/353743.terrain new file mode 100644 index 000000000..aa9969782 Binary files /dev/null and b/public/terrain/19/858504/353743.terrain differ diff --git a/public/terrain/19/858504/353744.terrain b/public/terrain/19/858504/353744.terrain new file mode 100644 index 000000000..7028523c5 Binary files /dev/null and b/public/terrain/19/858504/353744.terrain differ diff --git a/public/terrain/19/858504/353745.terrain b/public/terrain/19/858504/353745.terrain new file mode 100644 index 000000000..7e15f4a88 Binary files /dev/null and b/public/terrain/19/858504/353745.terrain differ diff --git a/public/terrain/19/858504/353746.terrain b/public/terrain/19/858504/353746.terrain new file mode 100644 index 000000000..546403911 Binary files /dev/null and b/public/terrain/19/858504/353746.terrain differ diff --git a/public/terrain/19/858504/353747.terrain b/public/terrain/19/858504/353747.terrain new file mode 100644 index 000000000..624af82a3 Binary files /dev/null and b/public/terrain/19/858504/353747.terrain differ diff --git a/public/terrain/19/858504/353748.terrain b/public/terrain/19/858504/353748.terrain new file mode 100644 index 000000000..1a3f4c21a Binary files /dev/null and b/public/terrain/19/858504/353748.terrain differ diff --git a/public/terrain/19/858504/353749.terrain b/public/terrain/19/858504/353749.terrain new file mode 100644 index 000000000..6644ba997 Binary files /dev/null and b/public/terrain/19/858504/353749.terrain differ diff --git a/public/terrain/19/858504/353750.terrain b/public/terrain/19/858504/353750.terrain new file mode 100644 index 000000000..fd6da74f5 Binary files /dev/null and b/public/terrain/19/858504/353750.terrain differ diff --git a/public/terrain/19/858504/353751.terrain b/public/terrain/19/858504/353751.terrain new file mode 100644 index 000000000..a555eab08 Binary files /dev/null and b/public/terrain/19/858504/353751.terrain differ diff --git a/public/terrain/19/858504/353752.terrain b/public/terrain/19/858504/353752.terrain new file mode 100644 index 000000000..f88bf3d38 Binary files /dev/null and b/public/terrain/19/858504/353752.terrain differ diff --git a/public/terrain/19/858504/353753.terrain b/public/terrain/19/858504/353753.terrain new file mode 100644 index 000000000..1692615d2 Binary files /dev/null and b/public/terrain/19/858504/353753.terrain differ diff --git a/public/terrain/19/858504/353754.terrain b/public/terrain/19/858504/353754.terrain new file mode 100644 index 000000000..aba8b4209 Binary files /dev/null and b/public/terrain/19/858504/353754.terrain differ diff --git a/public/terrain/19/858504/353755.terrain b/public/terrain/19/858504/353755.terrain new file mode 100644 index 000000000..7175da917 Binary files /dev/null and b/public/terrain/19/858504/353755.terrain differ diff --git a/public/terrain/19/858504/353756.terrain b/public/terrain/19/858504/353756.terrain new file mode 100644 index 000000000..11d74bbae Binary files /dev/null and b/public/terrain/19/858504/353756.terrain differ diff --git a/public/terrain/19/858504/353757.terrain b/public/terrain/19/858504/353757.terrain new file mode 100644 index 000000000..0bbb09da2 Binary files /dev/null and b/public/terrain/19/858504/353757.terrain differ diff --git a/public/terrain/19/858504/353758.terrain b/public/terrain/19/858504/353758.terrain new file mode 100644 index 000000000..f52fd1e28 Binary files /dev/null and b/public/terrain/19/858504/353758.terrain differ diff --git a/public/terrain/19/858504/353759.terrain b/public/terrain/19/858504/353759.terrain new file mode 100644 index 000000000..9fa065e44 Binary files /dev/null and b/public/terrain/19/858504/353759.terrain differ diff --git a/public/terrain/19/858504/353760.terrain b/public/terrain/19/858504/353760.terrain new file mode 100644 index 000000000..b75a76be3 Binary files /dev/null and b/public/terrain/19/858504/353760.terrain differ diff --git a/public/terrain/19/858504/353761.terrain b/public/terrain/19/858504/353761.terrain new file mode 100644 index 000000000..d330100d7 Binary files /dev/null and b/public/terrain/19/858504/353761.terrain differ diff --git a/public/terrain/19/858504/353762.terrain b/public/terrain/19/858504/353762.terrain new file mode 100644 index 000000000..82693d436 Binary files /dev/null and b/public/terrain/19/858504/353762.terrain differ diff --git a/public/terrain/19/858504/353763.terrain b/public/terrain/19/858504/353763.terrain new file mode 100644 index 000000000..8ca573a25 Binary files /dev/null and b/public/terrain/19/858504/353763.terrain differ diff --git a/public/terrain/19/858504/353764.terrain b/public/terrain/19/858504/353764.terrain new file mode 100644 index 000000000..fbb47e7e5 Binary files /dev/null and b/public/terrain/19/858504/353764.terrain differ diff --git a/public/terrain/19/858504/353765.terrain b/public/terrain/19/858504/353765.terrain new file mode 100644 index 000000000..d3beb443d Binary files /dev/null and b/public/terrain/19/858504/353765.terrain differ diff --git a/public/terrain/19/858504/353766.terrain b/public/terrain/19/858504/353766.terrain new file mode 100644 index 000000000..912e60b56 Binary files /dev/null and b/public/terrain/19/858504/353766.terrain differ diff --git a/public/terrain/19/858504/353767.terrain b/public/terrain/19/858504/353767.terrain new file mode 100644 index 000000000..66f38540e Binary files /dev/null and b/public/terrain/19/858504/353767.terrain differ diff --git a/public/terrain/19/858504/353768.terrain b/public/terrain/19/858504/353768.terrain new file mode 100644 index 000000000..50ef6dfe5 Binary files /dev/null and b/public/terrain/19/858504/353768.terrain differ diff --git a/public/terrain/19/858504/353769.terrain b/public/terrain/19/858504/353769.terrain new file mode 100644 index 000000000..514e297a6 Binary files /dev/null and b/public/terrain/19/858504/353769.terrain differ diff --git a/public/terrain/19/858504/353770.terrain b/public/terrain/19/858504/353770.terrain new file mode 100644 index 000000000..768173178 Binary files /dev/null and b/public/terrain/19/858504/353770.terrain differ diff --git a/public/terrain/19/858504/353771.terrain b/public/terrain/19/858504/353771.terrain new file mode 100644 index 000000000..86b5d065b Binary files /dev/null and b/public/terrain/19/858504/353771.terrain differ diff --git a/public/terrain/19/858504/353772.terrain b/public/terrain/19/858504/353772.terrain new file mode 100644 index 000000000..67146ed17 Binary files /dev/null and b/public/terrain/19/858504/353772.terrain differ diff --git a/public/terrain/19/858504/353773.terrain b/public/terrain/19/858504/353773.terrain new file mode 100644 index 000000000..f52599fac Binary files /dev/null and b/public/terrain/19/858504/353773.terrain differ diff --git a/public/terrain/19/858504/353774.terrain b/public/terrain/19/858504/353774.terrain new file mode 100644 index 000000000..72ac8c02f Binary files /dev/null and b/public/terrain/19/858504/353774.terrain differ diff --git a/public/terrain/19/858504/353775.terrain b/public/terrain/19/858504/353775.terrain new file mode 100644 index 000000000..2c487e179 Binary files /dev/null and b/public/terrain/19/858504/353775.terrain differ diff --git a/public/terrain/19/858504/353776.terrain b/public/terrain/19/858504/353776.terrain new file mode 100644 index 000000000..26e6d8682 Binary files /dev/null and b/public/terrain/19/858504/353776.terrain differ diff --git a/public/terrain/19/858504/353777.terrain b/public/terrain/19/858504/353777.terrain new file mode 100644 index 000000000..1565107da Binary files /dev/null and b/public/terrain/19/858504/353777.terrain differ diff --git a/public/terrain/19/858504/353778.terrain b/public/terrain/19/858504/353778.terrain new file mode 100644 index 000000000..2c19c40c6 Binary files /dev/null and b/public/terrain/19/858504/353778.terrain differ diff --git a/public/terrain/19/858504/353779.terrain b/public/terrain/19/858504/353779.terrain new file mode 100644 index 000000000..e907b63b7 Binary files /dev/null and b/public/terrain/19/858504/353779.terrain differ diff --git a/public/terrain/19/858504/353780.terrain b/public/terrain/19/858504/353780.terrain new file mode 100644 index 000000000..d4509d33e Binary files /dev/null and b/public/terrain/19/858504/353780.terrain differ diff --git a/public/terrain/19/858504/353781.terrain b/public/terrain/19/858504/353781.terrain new file mode 100644 index 000000000..e89967296 Binary files /dev/null and b/public/terrain/19/858504/353781.terrain differ diff --git a/public/terrain/19/858504/353782.terrain b/public/terrain/19/858504/353782.terrain new file mode 100644 index 000000000..50120b2e9 Binary files /dev/null and b/public/terrain/19/858504/353782.terrain differ diff --git a/public/terrain/19/858504/353783.terrain b/public/terrain/19/858504/353783.terrain new file mode 100644 index 000000000..2c9fcf229 Binary files /dev/null and b/public/terrain/19/858504/353783.terrain differ diff --git a/public/terrain/19/858504/353784.terrain b/public/terrain/19/858504/353784.terrain new file mode 100644 index 000000000..aefa1150b Binary files /dev/null and b/public/terrain/19/858504/353784.terrain differ diff --git a/public/terrain/19/858504/353785.terrain b/public/terrain/19/858504/353785.terrain new file mode 100644 index 000000000..9299d5639 Binary files /dev/null and b/public/terrain/19/858504/353785.terrain differ diff --git a/public/terrain/19/858504/353786.terrain b/public/terrain/19/858504/353786.terrain new file mode 100644 index 000000000..530cf2282 Binary files /dev/null and b/public/terrain/19/858504/353786.terrain differ diff --git a/public/terrain/19/858504/353787.terrain b/public/terrain/19/858504/353787.terrain new file mode 100644 index 000000000..8f78e2263 Binary files /dev/null and b/public/terrain/19/858504/353787.terrain differ diff --git a/public/terrain/19/858504/353788.terrain b/public/terrain/19/858504/353788.terrain new file mode 100644 index 000000000..dd93fc0f8 Binary files /dev/null and b/public/terrain/19/858504/353788.terrain differ diff --git a/public/terrain/19/858504/353789.terrain b/public/terrain/19/858504/353789.terrain new file mode 100644 index 000000000..fa503a641 Binary files /dev/null and b/public/terrain/19/858504/353789.terrain differ diff --git a/public/terrain/19/858504/353790.terrain b/public/terrain/19/858504/353790.terrain new file mode 100644 index 000000000..86fc085fd Binary files /dev/null and b/public/terrain/19/858504/353790.terrain differ diff --git a/public/terrain/19/858504/353791.terrain b/public/terrain/19/858504/353791.terrain new file mode 100644 index 000000000..8102a1c37 Binary files /dev/null and b/public/terrain/19/858504/353791.terrain differ diff --git a/public/terrain/19/858504/353792.terrain b/public/terrain/19/858504/353792.terrain new file mode 100644 index 000000000..fdb06ce40 Binary files /dev/null and b/public/terrain/19/858504/353792.terrain differ diff --git a/public/terrain/19/858504/353793.terrain b/public/terrain/19/858504/353793.terrain new file mode 100644 index 000000000..3775bc1aa Binary files /dev/null and b/public/terrain/19/858504/353793.terrain differ diff --git a/public/terrain/19/858504/353794.terrain b/public/terrain/19/858504/353794.terrain new file mode 100644 index 000000000..90105e5f8 Binary files /dev/null and b/public/terrain/19/858504/353794.terrain differ diff --git a/public/terrain/19/858504/353795.terrain b/public/terrain/19/858504/353795.terrain new file mode 100644 index 000000000..42fd1e210 Binary files /dev/null and b/public/terrain/19/858504/353795.terrain differ diff --git a/public/terrain/19/858504/353796.terrain b/public/terrain/19/858504/353796.terrain new file mode 100644 index 000000000..b957e4e39 Binary files /dev/null and b/public/terrain/19/858504/353796.terrain differ diff --git a/public/terrain/19/858504/353797.terrain b/public/terrain/19/858504/353797.terrain new file mode 100644 index 000000000..f6ff38cef Binary files /dev/null and b/public/terrain/19/858504/353797.terrain differ diff --git a/public/terrain/19/858504/353798.terrain b/public/terrain/19/858504/353798.terrain new file mode 100644 index 000000000..53b323bfb Binary files /dev/null and b/public/terrain/19/858504/353798.terrain differ diff --git a/public/terrain/19/858504/353799.terrain b/public/terrain/19/858504/353799.terrain new file mode 100644 index 000000000..8a29a065e Binary files /dev/null and b/public/terrain/19/858504/353799.terrain differ diff --git a/public/terrain/19/858504/353800.terrain b/public/terrain/19/858504/353800.terrain new file mode 100644 index 000000000..68f1cc9cc Binary files /dev/null and b/public/terrain/19/858504/353800.terrain differ diff --git a/public/terrain/19/858504/353801.terrain b/public/terrain/19/858504/353801.terrain new file mode 100644 index 000000000..2b6720f91 Binary files /dev/null and b/public/terrain/19/858504/353801.terrain differ diff --git a/public/terrain/19/858504/353802.terrain b/public/terrain/19/858504/353802.terrain new file mode 100644 index 000000000..be5994829 Binary files /dev/null and b/public/terrain/19/858504/353802.terrain differ diff --git a/public/terrain/19/858504/353803.terrain b/public/terrain/19/858504/353803.terrain new file mode 100644 index 000000000..2153851f4 Binary files /dev/null and b/public/terrain/19/858504/353803.terrain differ diff --git a/public/terrain/19/858504/353804.terrain b/public/terrain/19/858504/353804.terrain new file mode 100644 index 000000000..3aad57009 Binary files /dev/null and b/public/terrain/19/858504/353804.terrain differ diff --git a/public/terrain/19/858504/353805.terrain b/public/terrain/19/858504/353805.terrain new file mode 100644 index 000000000..d61e02b95 Binary files /dev/null and b/public/terrain/19/858504/353805.terrain differ diff --git a/public/terrain/19/858504/353806.terrain b/public/terrain/19/858504/353806.terrain new file mode 100644 index 000000000..0a33506a7 Binary files /dev/null and b/public/terrain/19/858504/353806.terrain differ diff --git a/public/terrain/19/858504/353807.terrain b/public/terrain/19/858504/353807.terrain new file mode 100644 index 000000000..e6fd83f57 Binary files /dev/null and b/public/terrain/19/858504/353807.terrain differ diff --git a/public/terrain/19/858504/353808.terrain b/public/terrain/19/858504/353808.terrain new file mode 100644 index 000000000..2bdad42f3 Binary files /dev/null and b/public/terrain/19/858504/353808.terrain differ diff --git a/public/terrain/19/858504/353809.terrain b/public/terrain/19/858504/353809.terrain new file mode 100644 index 000000000..e2ff3a108 Binary files /dev/null and b/public/terrain/19/858504/353809.terrain differ diff --git a/public/terrain/19/858504/353810.terrain b/public/terrain/19/858504/353810.terrain new file mode 100644 index 000000000..cd3112b4a Binary files /dev/null and b/public/terrain/19/858504/353810.terrain differ diff --git a/public/terrain/19/858504/353811.terrain b/public/terrain/19/858504/353811.terrain new file mode 100644 index 000000000..d46c1653a Binary files /dev/null and b/public/terrain/19/858504/353811.terrain differ diff --git a/public/terrain/19/858504/353812.terrain b/public/terrain/19/858504/353812.terrain new file mode 100644 index 000000000..d170b03e4 Binary files /dev/null and b/public/terrain/19/858504/353812.terrain differ diff --git a/public/terrain/19/858504/353813.terrain b/public/terrain/19/858504/353813.terrain new file mode 100644 index 000000000..406c62a09 Binary files /dev/null and b/public/terrain/19/858504/353813.terrain differ diff --git a/public/terrain/19/858504/353814.terrain b/public/terrain/19/858504/353814.terrain new file mode 100644 index 000000000..efac67129 Binary files /dev/null and b/public/terrain/19/858504/353814.terrain differ diff --git a/public/terrain/19/858504/353815.terrain b/public/terrain/19/858504/353815.terrain new file mode 100644 index 000000000..135a79283 Binary files /dev/null and b/public/terrain/19/858504/353815.terrain differ diff --git a/public/terrain/19/858504/353816.terrain b/public/terrain/19/858504/353816.terrain new file mode 100644 index 000000000..c3d5f4412 Binary files /dev/null and b/public/terrain/19/858504/353816.terrain differ diff --git a/public/terrain/19/858504/353817.terrain b/public/terrain/19/858504/353817.terrain new file mode 100644 index 000000000..60649fe7b Binary files /dev/null and b/public/terrain/19/858504/353817.terrain differ diff --git a/public/terrain/19/858504/353818.terrain b/public/terrain/19/858504/353818.terrain new file mode 100644 index 000000000..63cbf9354 Binary files /dev/null and b/public/terrain/19/858504/353818.terrain differ diff --git a/public/terrain/19/858504/353819.terrain b/public/terrain/19/858504/353819.terrain new file mode 100644 index 000000000..00570397b Binary files /dev/null and b/public/terrain/19/858504/353819.terrain differ diff --git a/public/terrain/19/858504/353820.terrain b/public/terrain/19/858504/353820.terrain new file mode 100644 index 000000000..cbdfe8ede Binary files /dev/null and b/public/terrain/19/858504/353820.terrain differ diff --git a/public/terrain/19/858504/353821.terrain b/public/terrain/19/858504/353821.terrain new file mode 100644 index 000000000..92c188c7a Binary files /dev/null and b/public/terrain/19/858504/353821.terrain differ diff --git a/public/terrain/19/858504/353822.terrain b/public/terrain/19/858504/353822.terrain new file mode 100644 index 000000000..c90dc55b7 Binary files /dev/null and b/public/terrain/19/858504/353822.terrain differ diff --git a/public/terrain/19/858504/353823.terrain b/public/terrain/19/858504/353823.terrain new file mode 100644 index 000000000..5d91d224c Binary files /dev/null and b/public/terrain/19/858504/353823.terrain differ diff --git a/public/terrain/19/858504/353824.terrain b/public/terrain/19/858504/353824.terrain new file mode 100644 index 000000000..ab9fbedd2 Binary files /dev/null and b/public/terrain/19/858504/353824.terrain differ diff --git a/public/terrain/19/858504/353825.terrain b/public/terrain/19/858504/353825.terrain new file mode 100644 index 000000000..78d237a36 Binary files /dev/null and b/public/terrain/19/858504/353825.terrain differ diff --git a/public/terrain/19/858504/353826.terrain b/public/terrain/19/858504/353826.terrain new file mode 100644 index 000000000..89ed3030e Binary files /dev/null and b/public/terrain/19/858504/353826.terrain differ diff --git a/public/terrain/19/858504/353827.terrain b/public/terrain/19/858504/353827.terrain new file mode 100644 index 000000000..d0fcd2dfd Binary files /dev/null and b/public/terrain/19/858504/353827.terrain differ diff --git a/public/terrain/19/858504/353828.terrain b/public/terrain/19/858504/353828.terrain new file mode 100644 index 000000000..9d6623723 Binary files /dev/null and b/public/terrain/19/858504/353828.terrain differ diff --git a/public/terrain/19/858504/353829.terrain b/public/terrain/19/858504/353829.terrain new file mode 100644 index 000000000..0f9819e56 Binary files /dev/null and b/public/terrain/19/858504/353829.terrain differ diff --git a/public/terrain/19/858504/353830.terrain b/public/terrain/19/858504/353830.terrain new file mode 100644 index 000000000..66e72dd33 Binary files /dev/null and b/public/terrain/19/858504/353830.terrain differ diff --git a/public/terrain/19/858504/353831.terrain b/public/terrain/19/858504/353831.terrain new file mode 100644 index 000000000..9d04d53fb Binary files /dev/null and b/public/terrain/19/858504/353831.terrain differ diff --git a/public/terrain/19/858504/353832.terrain b/public/terrain/19/858504/353832.terrain new file mode 100644 index 000000000..d575eef18 Binary files /dev/null and b/public/terrain/19/858504/353832.terrain differ diff --git a/public/terrain/19/858504/353833.terrain b/public/terrain/19/858504/353833.terrain new file mode 100644 index 000000000..1f9421f24 Binary files /dev/null and b/public/terrain/19/858504/353833.terrain differ diff --git a/public/terrain/19/858504/353834.terrain b/public/terrain/19/858504/353834.terrain new file mode 100644 index 000000000..0d421bb59 Binary files /dev/null and b/public/terrain/19/858504/353834.terrain differ diff --git a/public/terrain/19/858504/353835.terrain b/public/terrain/19/858504/353835.terrain new file mode 100644 index 000000000..0ef5b806f Binary files /dev/null and b/public/terrain/19/858504/353835.terrain differ diff --git a/public/terrain/19/858504/353836.terrain b/public/terrain/19/858504/353836.terrain new file mode 100644 index 000000000..137e47cc7 Binary files /dev/null and b/public/terrain/19/858504/353836.terrain differ diff --git a/public/terrain/19/858504/353837.terrain b/public/terrain/19/858504/353837.terrain new file mode 100644 index 000000000..0fa5b3312 Binary files /dev/null and b/public/terrain/19/858504/353837.terrain differ diff --git a/public/terrain/19/858504/353838.terrain b/public/terrain/19/858504/353838.terrain new file mode 100644 index 000000000..b2779550e Binary files /dev/null and b/public/terrain/19/858504/353838.terrain differ diff --git a/public/terrain/19/858504/353839.terrain b/public/terrain/19/858504/353839.terrain new file mode 100644 index 000000000..fe834c813 Binary files /dev/null and b/public/terrain/19/858504/353839.terrain differ diff --git a/public/terrain/19/858504/353840.terrain b/public/terrain/19/858504/353840.terrain new file mode 100644 index 000000000..31eb606aa Binary files /dev/null and b/public/terrain/19/858504/353840.terrain differ diff --git a/public/terrain/19/858504/353841.terrain b/public/terrain/19/858504/353841.terrain new file mode 100644 index 000000000..24d446661 Binary files /dev/null and b/public/terrain/19/858504/353841.terrain differ diff --git a/public/terrain/19/858504/353842.terrain b/public/terrain/19/858504/353842.terrain new file mode 100644 index 000000000..ec4be697b Binary files /dev/null and b/public/terrain/19/858504/353842.terrain differ diff --git a/public/terrain/19/858504/353843.terrain b/public/terrain/19/858504/353843.terrain new file mode 100644 index 000000000..267b11292 Binary files /dev/null and b/public/terrain/19/858504/353843.terrain differ diff --git a/public/terrain/19/858504/353844.terrain b/public/terrain/19/858504/353844.terrain new file mode 100644 index 000000000..2b852f328 Binary files /dev/null and b/public/terrain/19/858504/353844.terrain differ diff --git a/public/terrain/19/858504/353845.terrain b/public/terrain/19/858504/353845.terrain new file mode 100644 index 000000000..6925b00cc Binary files /dev/null and b/public/terrain/19/858504/353845.terrain differ diff --git a/public/terrain/19/858504/353846.terrain b/public/terrain/19/858504/353846.terrain new file mode 100644 index 000000000..62b4a44ba Binary files /dev/null and b/public/terrain/19/858504/353846.terrain differ diff --git a/public/terrain/19/858504/353847.terrain b/public/terrain/19/858504/353847.terrain new file mode 100644 index 000000000..a9361404a Binary files /dev/null and b/public/terrain/19/858504/353847.terrain differ diff --git a/public/terrain/19/858504/353848.terrain b/public/terrain/19/858504/353848.terrain new file mode 100644 index 000000000..2ba60db70 Binary files /dev/null and b/public/terrain/19/858504/353848.terrain differ diff --git a/public/terrain/19/858504/353849.terrain b/public/terrain/19/858504/353849.terrain new file mode 100644 index 000000000..05499afc9 Binary files /dev/null and b/public/terrain/19/858504/353849.terrain differ diff --git a/public/terrain/19/858504/353850.terrain b/public/terrain/19/858504/353850.terrain new file mode 100644 index 000000000..59c681595 Binary files /dev/null and b/public/terrain/19/858504/353850.terrain differ diff --git a/public/terrain/19/858504/353851.terrain b/public/terrain/19/858504/353851.terrain new file mode 100644 index 000000000..4a9603c41 Binary files /dev/null and b/public/terrain/19/858504/353851.terrain differ diff --git a/public/terrain/19/858504/353852.terrain b/public/terrain/19/858504/353852.terrain new file mode 100644 index 000000000..f0f0cf29e Binary files /dev/null and b/public/terrain/19/858504/353852.terrain differ diff --git a/public/terrain/19/858504/353853.terrain b/public/terrain/19/858504/353853.terrain new file mode 100644 index 000000000..d13e703bc Binary files /dev/null and b/public/terrain/19/858504/353853.terrain differ diff --git a/public/terrain/19/858504/353854.terrain b/public/terrain/19/858504/353854.terrain new file mode 100644 index 000000000..dccaa3b17 Binary files /dev/null and b/public/terrain/19/858504/353854.terrain differ diff --git a/public/terrain/19/858504/353855.terrain b/public/terrain/19/858504/353855.terrain new file mode 100644 index 000000000..7f73e9e5d Binary files /dev/null and b/public/terrain/19/858504/353855.terrain differ diff --git a/public/terrain/19/858504/353856.terrain b/public/terrain/19/858504/353856.terrain new file mode 100644 index 000000000..430144d36 Binary files /dev/null and b/public/terrain/19/858504/353856.terrain differ diff --git a/public/terrain/19/858504/353857.terrain b/public/terrain/19/858504/353857.terrain new file mode 100644 index 000000000..a4502b785 Binary files /dev/null and b/public/terrain/19/858504/353857.terrain differ diff --git a/public/terrain/19/858504/353858.terrain b/public/terrain/19/858504/353858.terrain new file mode 100644 index 000000000..42954245a Binary files /dev/null and b/public/terrain/19/858504/353858.terrain differ diff --git a/public/terrain/19/858504/353859.terrain b/public/terrain/19/858504/353859.terrain new file mode 100644 index 000000000..706d4a1b8 Binary files /dev/null and b/public/terrain/19/858504/353859.terrain differ diff --git a/public/terrain/19/858504/353860.terrain b/public/terrain/19/858504/353860.terrain new file mode 100644 index 000000000..3c0a9068d Binary files /dev/null and b/public/terrain/19/858504/353860.terrain differ diff --git a/public/terrain/19/858504/353861.terrain b/public/terrain/19/858504/353861.terrain new file mode 100644 index 000000000..b40774a16 Binary files /dev/null and b/public/terrain/19/858504/353861.terrain differ diff --git a/public/terrain/19/858504/353862.terrain b/public/terrain/19/858504/353862.terrain new file mode 100644 index 000000000..e4267ecf3 Binary files /dev/null and b/public/terrain/19/858504/353862.terrain differ diff --git a/public/terrain/19/858504/353863.terrain b/public/terrain/19/858504/353863.terrain new file mode 100644 index 000000000..7b64d32ad Binary files /dev/null and b/public/terrain/19/858504/353863.terrain differ diff --git a/public/terrain/19/858504/353864.terrain b/public/terrain/19/858504/353864.terrain new file mode 100644 index 000000000..42fc59d7e Binary files /dev/null and b/public/terrain/19/858504/353864.terrain differ diff --git a/public/terrain/19/858504/353865.terrain b/public/terrain/19/858504/353865.terrain new file mode 100644 index 000000000..87f862b65 Binary files /dev/null and b/public/terrain/19/858504/353865.terrain differ diff --git a/public/terrain/19/858504/353866.terrain b/public/terrain/19/858504/353866.terrain new file mode 100644 index 000000000..65a88d0b4 Binary files /dev/null and b/public/terrain/19/858504/353866.terrain differ diff --git a/public/terrain/19/858504/353867.terrain b/public/terrain/19/858504/353867.terrain new file mode 100644 index 000000000..54678143d Binary files /dev/null and b/public/terrain/19/858504/353867.terrain differ diff --git a/public/terrain/19/858504/353868.terrain b/public/terrain/19/858504/353868.terrain new file mode 100644 index 000000000..9d0d8e638 Binary files /dev/null and b/public/terrain/19/858504/353868.terrain differ diff --git a/public/terrain/19/858504/353869.terrain b/public/terrain/19/858504/353869.terrain new file mode 100644 index 000000000..37adfe99c Binary files /dev/null and b/public/terrain/19/858504/353869.terrain differ diff --git a/public/terrain/19/858504/353870.terrain b/public/terrain/19/858504/353870.terrain new file mode 100644 index 000000000..15f873a8d Binary files /dev/null and b/public/terrain/19/858504/353870.terrain differ diff --git a/public/terrain/19/858504/353871.terrain b/public/terrain/19/858504/353871.terrain new file mode 100644 index 000000000..f36605dc8 Binary files /dev/null and b/public/terrain/19/858504/353871.terrain differ diff --git a/public/terrain/19/858504/353872.terrain b/public/terrain/19/858504/353872.terrain new file mode 100644 index 000000000..39ba4fbe4 Binary files /dev/null and b/public/terrain/19/858504/353872.terrain differ diff --git a/public/terrain/19/858504/353873.terrain b/public/terrain/19/858504/353873.terrain new file mode 100644 index 000000000..06c76d716 Binary files /dev/null and b/public/terrain/19/858504/353873.terrain differ diff --git a/public/terrain/19/858504/353874.terrain b/public/terrain/19/858504/353874.terrain new file mode 100644 index 000000000..08e93e53e Binary files /dev/null and b/public/terrain/19/858504/353874.terrain differ diff --git a/public/terrain/19/858504/353875.terrain b/public/terrain/19/858504/353875.terrain new file mode 100644 index 000000000..d90f60618 Binary files /dev/null and b/public/terrain/19/858504/353875.terrain differ diff --git a/public/terrain/19/858504/353876.terrain b/public/terrain/19/858504/353876.terrain new file mode 100644 index 000000000..bffb2600e Binary files /dev/null and b/public/terrain/19/858504/353876.terrain differ diff --git a/public/terrain/19/858504/353877.terrain b/public/terrain/19/858504/353877.terrain new file mode 100644 index 000000000..cd8cec1fd Binary files /dev/null and b/public/terrain/19/858504/353877.terrain differ diff --git a/public/terrain/19/858504/353878.terrain b/public/terrain/19/858504/353878.terrain new file mode 100644 index 000000000..bcced79a6 Binary files /dev/null and b/public/terrain/19/858504/353878.terrain differ diff --git a/public/terrain/19/858504/353879.terrain b/public/terrain/19/858504/353879.terrain new file mode 100644 index 000000000..72203bdc4 Binary files /dev/null and b/public/terrain/19/858504/353879.terrain differ diff --git a/public/terrain/19/858504/353880.terrain b/public/terrain/19/858504/353880.terrain new file mode 100644 index 000000000..f9581ec04 Binary files /dev/null and b/public/terrain/19/858504/353880.terrain differ diff --git a/public/terrain/19/858504/353881.terrain b/public/terrain/19/858504/353881.terrain new file mode 100644 index 000000000..b56a9e0b0 Binary files /dev/null and b/public/terrain/19/858504/353881.terrain differ diff --git a/public/terrain/19/858504/353882.terrain b/public/terrain/19/858504/353882.terrain new file mode 100644 index 000000000..e9bb25126 Binary files /dev/null and b/public/terrain/19/858504/353882.terrain differ diff --git a/public/terrain/19/858504/353883.terrain b/public/terrain/19/858504/353883.terrain new file mode 100644 index 000000000..c73add9b4 Binary files /dev/null and b/public/terrain/19/858504/353883.terrain differ diff --git a/public/terrain/19/858504/353884.terrain b/public/terrain/19/858504/353884.terrain new file mode 100644 index 000000000..60197c7fe Binary files /dev/null and b/public/terrain/19/858504/353884.terrain differ diff --git a/public/terrain/19/858504/353885.terrain b/public/terrain/19/858504/353885.terrain new file mode 100644 index 000000000..242f7e3b2 Binary files /dev/null and b/public/terrain/19/858504/353885.terrain differ diff --git a/public/terrain/19/858504/353886.terrain b/public/terrain/19/858504/353886.terrain new file mode 100644 index 000000000..83ab12b0b Binary files /dev/null and b/public/terrain/19/858504/353886.terrain differ diff --git a/public/terrain/19/858504/353887.terrain b/public/terrain/19/858504/353887.terrain new file mode 100644 index 000000000..605a9c50f Binary files /dev/null and b/public/terrain/19/858504/353887.terrain differ diff --git a/public/terrain/19/858504/353888.terrain b/public/terrain/19/858504/353888.terrain new file mode 100644 index 000000000..572e312b5 Binary files /dev/null and b/public/terrain/19/858504/353888.terrain differ diff --git a/public/terrain/19/858504/353889.terrain b/public/terrain/19/858504/353889.terrain new file mode 100644 index 000000000..183d6ef08 Binary files /dev/null and b/public/terrain/19/858504/353889.terrain differ diff --git a/public/terrain/19/858504/353890.terrain b/public/terrain/19/858504/353890.terrain new file mode 100644 index 000000000..e35605cc5 Binary files /dev/null and b/public/terrain/19/858504/353890.terrain differ diff --git a/public/terrain/19/858504/353891.terrain b/public/terrain/19/858504/353891.terrain new file mode 100644 index 000000000..f205912fd Binary files /dev/null and b/public/terrain/19/858504/353891.terrain differ diff --git a/public/terrain/19/858504/353892.terrain b/public/terrain/19/858504/353892.terrain new file mode 100644 index 000000000..7507049cb Binary files /dev/null and b/public/terrain/19/858504/353892.terrain differ diff --git a/public/terrain/19/858504/353893.terrain b/public/terrain/19/858504/353893.terrain new file mode 100644 index 000000000..e42b0975e Binary files /dev/null and b/public/terrain/19/858504/353893.terrain differ diff --git a/public/terrain/19/858504/353894.terrain b/public/terrain/19/858504/353894.terrain new file mode 100644 index 000000000..ebcf4a449 Binary files /dev/null and b/public/terrain/19/858504/353894.terrain differ diff --git a/public/terrain/19/858504/353895.terrain b/public/terrain/19/858504/353895.terrain new file mode 100644 index 000000000..9b7cf32a5 Binary files /dev/null and b/public/terrain/19/858504/353895.terrain differ diff --git a/public/terrain/19/858504/353896.terrain b/public/terrain/19/858504/353896.terrain new file mode 100644 index 000000000..4cb780999 Binary files /dev/null and b/public/terrain/19/858504/353896.terrain differ diff --git a/public/terrain/19/858504/353897.terrain b/public/terrain/19/858504/353897.terrain new file mode 100644 index 000000000..2709ccb78 Binary files /dev/null and b/public/terrain/19/858504/353897.terrain differ diff --git a/public/terrain/19/858504/353898.terrain b/public/terrain/19/858504/353898.terrain new file mode 100644 index 000000000..402f86000 Binary files /dev/null and b/public/terrain/19/858504/353898.terrain differ diff --git a/public/terrain/19/858504/353899.terrain b/public/terrain/19/858504/353899.terrain new file mode 100644 index 000000000..11d6a4ae9 Binary files /dev/null and b/public/terrain/19/858504/353899.terrain differ diff --git a/public/terrain/19/858504/353900.terrain b/public/terrain/19/858504/353900.terrain new file mode 100644 index 000000000..a46501976 Binary files /dev/null and b/public/terrain/19/858504/353900.terrain differ diff --git a/public/terrain/19/858504/353901.terrain b/public/terrain/19/858504/353901.terrain new file mode 100644 index 000000000..9384b0d8e Binary files /dev/null and b/public/terrain/19/858504/353901.terrain differ diff --git a/public/terrain/19/858504/353902.terrain b/public/terrain/19/858504/353902.terrain new file mode 100644 index 000000000..9d0ad16c7 Binary files /dev/null and b/public/terrain/19/858504/353902.terrain differ diff --git a/public/terrain/19/858504/353903.terrain b/public/terrain/19/858504/353903.terrain new file mode 100644 index 000000000..de9898a36 Binary files /dev/null and b/public/terrain/19/858504/353903.terrain differ diff --git a/public/terrain/19/858504/353904.terrain b/public/terrain/19/858504/353904.terrain new file mode 100644 index 000000000..d84aa677c Binary files /dev/null and b/public/terrain/19/858504/353904.terrain differ diff --git a/public/terrain/19/858504/353905.terrain b/public/terrain/19/858504/353905.terrain new file mode 100644 index 000000000..22e643896 Binary files /dev/null and b/public/terrain/19/858504/353905.terrain differ diff --git a/public/terrain/19/858504/353906.terrain b/public/terrain/19/858504/353906.terrain new file mode 100644 index 000000000..94b5e3d5d Binary files /dev/null and b/public/terrain/19/858504/353906.terrain differ diff --git a/public/terrain/19/858504/353907.terrain b/public/terrain/19/858504/353907.terrain new file mode 100644 index 000000000..bb35677e6 Binary files /dev/null and b/public/terrain/19/858504/353907.terrain differ diff --git a/public/terrain/19/858504/353908.terrain b/public/terrain/19/858504/353908.terrain new file mode 100644 index 000000000..f3b1e2f10 Binary files /dev/null and b/public/terrain/19/858504/353908.terrain differ diff --git a/public/terrain/19/858504/353909.terrain b/public/terrain/19/858504/353909.terrain new file mode 100644 index 000000000..8180ab041 Binary files /dev/null and b/public/terrain/19/858504/353909.terrain differ diff --git a/public/terrain/19/858504/353910.terrain b/public/terrain/19/858504/353910.terrain new file mode 100644 index 000000000..f9f652e3c Binary files /dev/null and b/public/terrain/19/858504/353910.terrain differ diff --git a/public/terrain/19/858504/353911.terrain b/public/terrain/19/858504/353911.terrain new file mode 100644 index 000000000..78f6e70fd Binary files /dev/null and b/public/terrain/19/858504/353911.terrain differ diff --git a/public/terrain/19/858504/353912.terrain b/public/terrain/19/858504/353912.terrain new file mode 100644 index 000000000..3432edd7c Binary files /dev/null and b/public/terrain/19/858504/353912.terrain differ diff --git a/public/terrain/19/858504/353913.terrain b/public/terrain/19/858504/353913.terrain new file mode 100644 index 000000000..ef05861dc Binary files /dev/null and b/public/terrain/19/858504/353913.terrain differ diff --git a/public/terrain/19/858504/353914.terrain b/public/terrain/19/858504/353914.terrain new file mode 100644 index 000000000..5cc6fb33d Binary files /dev/null and b/public/terrain/19/858504/353914.terrain differ diff --git a/public/terrain/19/858504/353915.terrain b/public/terrain/19/858504/353915.terrain new file mode 100644 index 000000000..446e7c8e6 Binary files /dev/null and b/public/terrain/19/858504/353915.terrain differ diff --git a/public/terrain/19/858504/353916.terrain b/public/terrain/19/858504/353916.terrain new file mode 100644 index 000000000..2ccc89116 Binary files /dev/null and b/public/terrain/19/858504/353916.terrain differ diff --git a/public/terrain/19/858504/353917.terrain b/public/terrain/19/858504/353917.terrain new file mode 100644 index 000000000..d334379c5 Binary files /dev/null and b/public/terrain/19/858504/353917.terrain differ diff --git a/public/terrain/19/858504/353918.terrain b/public/terrain/19/858504/353918.terrain new file mode 100644 index 000000000..df641e12a Binary files /dev/null and b/public/terrain/19/858504/353918.terrain differ diff --git a/public/terrain/19/858504/353919.terrain b/public/terrain/19/858504/353919.terrain new file mode 100644 index 000000000..5835b70bb Binary files /dev/null and b/public/terrain/19/858504/353919.terrain differ diff --git a/public/terrain/19/858504/353920.terrain b/public/terrain/19/858504/353920.terrain new file mode 100644 index 000000000..0067c6055 Binary files /dev/null and b/public/terrain/19/858504/353920.terrain differ diff --git a/public/terrain/19/858504/353921.terrain b/public/terrain/19/858504/353921.terrain new file mode 100644 index 000000000..16dd9c7c2 Binary files /dev/null and b/public/terrain/19/858504/353921.terrain differ diff --git a/public/terrain/19/858504/353922.terrain b/public/terrain/19/858504/353922.terrain new file mode 100644 index 000000000..af4c5e1ec Binary files /dev/null and b/public/terrain/19/858504/353922.terrain differ diff --git a/public/terrain/19/858504/353923.terrain b/public/terrain/19/858504/353923.terrain new file mode 100644 index 000000000..e7a042627 Binary files /dev/null and b/public/terrain/19/858504/353923.terrain differ diff --git a/public/terrain/19/858504/353924.terrain b/public/terrain/19/858504/353924.terrain new file mode 100644 index 000000000..a87c595cd Binary files /dev/null and b/public/terrain/19/858504/353924.terrain differ diff --git a/public/terrain/19/858504/353925.terrain b/public/terrain/19/858504/353925.terrain new file mode 100644 index 000000000..3d6e53506 Binary files /dev/null and b/public/terrain/19/858504/353925.terrain differ diff --git a/public/terrain/19/858504/353926.terrain b/public/terrain/19/858504/353926.terrain new file mode 100644 index 000000000..cae246efa Binary files /dev/null and b/public/terrain/19/858504/353926.terrain differ diff --git a/public/terrain/19/858504/353927.terrain b/public/terrain/19/858504/353927.terrain new file mode 100644 index 000000000..05520e613 Binary files /dev/null and b/public/terrain/19/858504/353927.terrain differ diff --git a/public/terrain/19/858504/353928.terrain b/public/terrain/19/858504/353928.terrain new file mode 100644 index 000000000..1aa13ac95 Binary files /dev/null and b/public/terrain/19/858504/353928.terrain differ diff --git a/public/terrain/19/858504/353929.terrain b/public/terrain/19/858504/353929.terrain new file mode 100644 index 000000000..a59df02e5 Binary files /dev/null and b/public/terrain/19/858504/353929.terrain differ diff --git a/public/terrain/19/858504/353930.terrain b/public/terrain/19/858504/353930.terrain new file mode 100644 index 000000000..2a2e5f2eb Binary files /dev/null and b/public/terrain/19/858504/353930.terrain differ diff --git a/public/terrain/19/858504/353931.terrain b/public/terrain/19/858504/353931.terrain new file mode 100644 index 000000000..6a7e5b586 Binary files /dev/null and b/public/terrain/19/858504/353931.terrain differ diff --git a/public/terrain/19/858504/353932.terrain b/public/terrain/19/858504/353932.terrain new file mode 100644 index 000000000..54e12c87e Binary files /dev/null and b/public/terrain/19/858504/353932.terrain differ diff --git a/public/terrain/19/858504/353933.terrain b/public/terrain/19/858504/353933.terrain new file mode 100644 index 000000000..4afe135e6 Binary files /dev/null and b/public/terrain/19/858504/353933.terrain differ diff --git a/public/terrain/19/858504/353934.terrain b/public/terrain/19/858504/353934.terrain new file mode 100644 index 000000000..d9a680a32 Binary files /dev/null and b/public/terrain/19/858504/353934.terrain differ diff --git a/public/terrain/19/858504/353935.terrain b/public/terrain/19/858504/353935.terrain new file mode 100644 index 000000000..24d392144 Binary files /dev/null and b/public/terrain/19/858504/353935.terrain differ diff --git a/public/terrain/19/858504/353936.terrain b/public/terrain/19/858504/353936.terrain new file mode 100644 index 000000000..3e2ff16a0 Binary files /dev/null and b/public/terrain/19/858504/353936.terrain differ diff --git a/public/terrain/19/858504/353937.terrain b/public/terrain/19/858504/353937.terrain new file mode 100644 index 000000000..fb8163139 Binary files /dev/null and b/public/terrain/19/858504/353937.terrain differ diff --git a/public/terrain/19/858504/353938.terrain b/public/terrain/19/858504/353938.terrain new file mode 100644 index 000000000..a8a4ff245 Binary files /dev/null and b/public/terrain/19/858504/353938.terrain differ diff --git a/public/terrain/19/858504/353939.terrain b/public/terrain/19/858504/353939.terrain new file mode 100644 index 000000000..3bf89d483 Binary files /dev/null and b/public/terrain/19/858504/353939.terrain differ diff --git a/public/terrain/19/858504/353940.terrain b/public/terrain/19/858504/353940.terrain new file mode 100644 index 000000000..82f846989 Binary files /dev/null and b/public/terrain/19/858504/353940.terrain differ diff --git a/public/terrain/19/858504/353941.terrain b/public/terrain/19/858504/353941.terrain new file mode 100644 index 000000000..1ae5da0b1 Binary files /dev/null and b/public/terrain/19/858504/353941.terrain differ diff --git a/public/terrain/19/858504/353942.terrain b/public/terrain/19/858504/353942.terrain new file mode 100644 index 000000000..8684bd88d Binary files /dev/null and b/public/terrain/19/858504/353942.terrain differ diff --git a/public/terrain/19/858504/353943.terrain b/public/terrain/19/858504/353943.terrain new file mode 100644 index 000000000..72a325525 Binary files /dev/null and b/public/terrain/19/858504/353943.terrain differ diff --git a/public/terrain/19/858504/353944.terrain b/public/terrain/19/858504/353944.terrain new file mode 100644 index 000000000..0ce6c5316 Binary files /dev/null and b/public/terrain/19/858504/353944.terrain differ diff --git a/public/terrain/19/858504/353945.terrain b/public/terrain/19/858504/353945.terrain new file mode 100644 index 000000000..f94783a3c Binary files /dev/null and b/public/terrain/19/858504/353945.terrain differ diff --git a/public/terrain/19/858504/353946.terrain b/public/terrain/19/858504/353946.terrain new file mode 100644 index 000000000..98cb88b7c Binary files /dev/null and b/public/terrain/19/858504/353946.terrain differ diff --git a/public/terrain/19/858504/353947.terrain b/public/terrain/19/858504/353947.terrain new file mode 100644 index 000000000..30af2f089 Binary files /dev/null and b/public/terrain/19/858504/353947.terrain differ diff --git a/public/terrain/19/858504/353948.terrain b/public/terrain/19/858504/353948.terrain new file mode 100644 index 000000000..94bb6e9bc Binary files /dev/null and b/public/terrain/19/858504/353948.terrain differ diff --git a/public/terrain/19/858504/353949.terrain b/public/terrain/19/858504/353949.terrain new file mode 100644 index 000000000..5c811763d Binary files /dev/null and b/public/terrain/19/858504/353949.terrain differ diff --git a/public/terrain/19/858504/353950.terrain b/public/terrain/19/858504/353950.terrain new file mode 100644 index 000000000..d25dfa5e0 Binary files /dev/null and b/public/terrain/19/858504/353950.terrain differ diff --git a/public/terrain/19/858504/353951.terrain b/public/terrain/19/858504/353951.terrain new file mode 100644 index 000000000..e6196bc68 Binary files /dev/null and b/public/terrain/19/858504/353951.terrain differ diff --git a/public/terrain/19/858504/353952.terrain b/public/terrain/19/858504/353952.terrain new file mode 100644 index 000000000..004c3a181 Binary files /dev/null and b/public/terrain/19/858504/353952.terrain differ diff --git a/public/terrain/19/858504/353953.terrain b/public/terrain/19/858504/353953.terrain new file mode 100644 index 000000000..2c0839425 Binary files /dev/null and b/public/terrain/19/858504/353953.terrain differ diff --git a/public/terrain/19/858504/353954.terrain b/public/terrain/19/858504/353954.terrain new file mode 100644 index 000000000..73dbf1039 Binary files /dev/null and b/public/terrain/19/858504/353954.terrain differ diff --git a/public/terrain/19/858504/353955.terrain b/public/terrain/19/858504/353955.terrain new file mode 100644 index 000000000..00b372a7f Binary files /dev/null and b/public/terrain/19/858504/353955.terrain differ diff --git a/public/terrain/19/858504/353956.terrain b/public/terrain/19/858504/353956.terrain new file mode 100644 index 000000000..056fcb7d8 Binary files /dev/null and b/public/terrain/19/858504/353956.terrain differ diff --git a/public/terrain/19/858504/353957.terrain b/public/terrain/19/858504/353957.terrain new file mode 100644 index 000000000..24238227a Binary files /dev/null and b/public/terrain/19/858504/353957.terrain differ diff --git a/public/terrain/19/858504/353958.terrain b/public/terrain/19/858504/353958.terrain new file mode 100644 index 000000000..d24051fd4 Binary files /dev/null and b/public/terrain/19/858504/353958.terrain differ diff --git a/public/terrain/19/858504/353959.terrain b/public/terrain/19/858504/353959.terrain new file mode 100644 index 000000000..357f1b08e Binary files /dev/null and b/public/terrain/19/858504/353959.terrain differ diff --git a/public/terrain/19/858504/353960.terrain b/public/terrain/19/858504/353960.terrain new file mode 100644 index 000000000..d41f01395 Binary files /dev/null and b/public/terrain/19/858504/353960.terrain differ diff --git a/public/terrain/19/858504/353961.terrain b/public/terrain/19/858504/353961.terrain new file mode 100644 index 000000000..1593aadb3 Binary files /dev/null and b/public/terrain/19/858504/353961.terrain differ diff --git a/public/terrain/19/858504/353962.terrain b/public/terrain/19/858504/353962.terrain new file mode 100644 index 000000000..7478314e7 Binary files /dev/null and b/public/terrain/19/858504/353962.terrain differ diff --git a/public/terrain/19/858504/353963.terrain b/public/terrain/19/858504/353963.terrain new file mode 100644 index 000000000..701a6bf43 Binary files /dev/null and b/public/terrain/19/858504/353963.terrain differ diff --git a/public/terrain/19/858504/353964.terrain b/public/terrain/19/858504/353964.terrain new file mode 100644 index 000000000..13d20d351 Binary files /dev/null and b/public/terrain/19/858504/353964.terrain differ diff --git a/public/terrain/19/858504/353965.terrain b/public/terrain/19/858504/353965.terrain new file mode 100644 index 000000000..4d1347375 Binary files /dev/null and b/public/terrain/19/858504/353965.terrain differ diff --git a/public/terrain/19/858504/353966.terrain b/public/terrain/19/858504/353966.terrain new file mode 100644 index 000000000..1456d8a48 Binary files /dev/null and b/public/terrain/19/858504/353966.terrain differ diff --git a/public/terrain/19/858504/353967.terrain b/public/terrain/19/858504/353967.terrain new file mode 100644 index 000000000..020678140 Binary files /dev/null and b/public/terrain/19/858504/353967.terrain differ diff --git a/public/terrain/19/858504/353968.terrain b/public/terrain/19/858504/353968.terrain new file mode 100644 index 000000000..054992097 Binary files /dev/null and b/public/terrain/19/858504/353968.terrain differ diff --git a/public/terrain/19/858504/353969.terrain b/public/terrain/19/858504/353969.terrain new file mode 100644 index 000000000..678c081b6 Binary files /dev/null and b/public/terrain/19/858504/353969.terrain differ diff --git a/public/terrain/19/858504/353970.terrain b/public/terrain/19/858504/353970.terrain new file mode 100644 index 000000000..6a00b8c9d Binary files /dev/null and b/public/terrain/19/858504/353970.terrain differ diff --git a/public/terrain/19/858504/353971.terrain b/public/terrain/19/858504/353971.terrain new file mode 100644 index 000000000..b8ca39004 Binary files /dev/null and b/public/terrain/19/858504/353971.terrain differ diff --git a/public/terrain/19/858504/353972.terrain b/public/terrain/19/858504/353972.terrain new file mode 100644 index 000000000..605c53d4d Binary files /dev/null and b/public/terrain/19/858504/353972.terrain differ diff --git a/public/terrain/19/858504/353973.terrain b/public/terrain/19/858504/353973.terrain new file mode 100644 index 000000000..b7b5aee81 Binary files /dev/null and b/public/terrain/19/858504/353973.terrain differ diff --git a/public/terrain/19/858504/353974.terrain b/public/terrain/19/858504/353974.terrain new file mode 100644 index 000000000..3855182b2 Binary files /dev/null and b/public/terrain/19/858504/353974.terrain differ diff --git a/public/terrain/19/858504/353975.terrain b/public/terrain/19/858504/353975.terrain new file mode 100644 index 000000000..ec55c321c Binary files /dev/null and b/public/terrain/19/858504/353975.terrain differ diff --git a/public/terrain/19/858504/353976.terrain b/public/terrain/19/858504/353976.terrain new file mode 100644 index 000000000..349598a5c Binary files /dev/null and b/public/terrain/19/858504/353976.terrain differ diff --git a/public/terrain/19/858504/353977.terrain b/public/terrain/19/858504/353977.terrain new file mode 100644 index 000000000..80cfd0984 Binary files /dev/null and b/public/terrain/19/858504/353977.terrain differ diff --git a/public/terrain/19/858504/353978.terrain b/public/terrain/19/858504/353978.terrain new file mode 100644 index 000000000..a62be0a86 Binary files /dev/null and b/public/terrain/19/858504/353978.terrain differ diff --git a/public/terrain/19/858504/353979.terrain b/public/terrain/19/858504/353979.terrain new file mode 100644 index 000000000..1bbc6fda9 Binary files /dev/null and b/public/terrain/19/858504/353979.terrain differ diff --git a/public/terrain/19/858504/353980.terrain b/public/terrain/19/858504/353980.terrain new file mode 100644 index 000000000..51eda3079 Binary files /dev/null and b/public/terrain/19/858504/353980.terrain differ diff --git a/public/terrain/19/858504/353981.terrain b/public/terrain/19/858504/353981.terrain new file mode 100644 index 000000000..a392de892 Binary files /dev/null and b/public/terrain/19/858504/353981.terrain differ diff --git a/public/terrain/19/858504/353982.terrain b/public/terrain/19/858504/353982.terrain new file mode 100644 index 000000000..020d12898 Binary files /dev/null and b/public/terrain/19/858504/353982.terrain differ diff --git a/public/terrain/19/858504/353983.terrain b/public/terrain/19/858504/353983.terrain new file mode 100644 index 000000000..09e16624f Binary files /dev/null and b/public/terrain/19/858504/353983.terrain differ diff --git a/public/terrain/19/858504/353984.terrain b/public/terrain/19/858504/353984.terrain new file mode 100644 index 000000000..4efb442d5 Binary files /dev/null and b/public/terrain/19/858504/353984.terrain differ diff --git a/public/terrain/19/858504/353985.terrain b/public/terrain/19/858504/353985.terrain new file mode 100644 index 000000000..e013c244f Binary files /dev/null and b/public/terrain/19/858504/353985.terrain differ diff --git a/public/terrain/19/858504/353986.terrain b/public/terrain/19/858504/353986.terrain new file mode 100644 index 000000000..3c1c46044 Binary files /dev/null and b/public/terrain/19/858504/353986.terrain differ diff --git a/public/terrain/19/858504/353987.terrain b/public/terrain/19/858504/353987.terrain new file mode 100644 index 000000000..6b22ad8f9 Binary files /dev/null and b/public/terrain/19/858504/353987.terrain differ diff --git a/public/terrain/19/858504/353988.terrain b/public/terrain/19/858504/353988.terrain new file mode 100644 index 000000000..c85631eef Binary files /dev/null and b/public/terrain/19/858504/353988.terrain differ diff --git a/public/terrain/19/858504/353989.terrain b/public/terrain/19/858504/353989.terrain new file mode 100644 index 000000000..0d84cf3b7 Binary files /dev/null and b/public/terrain/19/858504/353989.terrain differ diff --git a/public/terrain/19/858504/353990.terrain b/public/terrain/19/858504/353990.terrain new file mode 100644 index 000000000..74ff964cf Binary files /dev/null and b/public/terrain/19/858504/353990.terrain differ diff --git a/public/terrain/19/858504/353991.terrain b/public/terrain/19/858504/353991.terrain new file mode 100644 index 000000000..1f5c32c5c Binary files /dev/null and b/public/terrain/19/858504/353991.terrain differ diff --git a/public/terrain/19/858504/353992.terrain b/public/terrain/19/858504/353992.terrain new file mode 100644 index 000000000..8c1f82ef5 Binary files /dev/null and b/public/terrain/19/858504/353992.terrain differ diff --git a/public/terrain/19/858504/353993.terrain b/public/terrain/19/858504/353993.terrain new file mode 100644 index 000000000..9c62c91a6 Binary files /dev/null and b/public/terrain/19/858504/353993.terrain differ diff --git a/public/terrain/19/858504/353994.terrain b/public/terrain/19/858504/353994.terrain new file mode 100644 index 000000000..b06c08851 Binary files /dev/null and b/public/terrain/19/858504/353994.terrain differ diff --git a/public/terrain/19/858504/353995.terrain b/public/terrain/19/858504/353995.terrain new file mode 100644 index 000000000..40f84248e Binary files /dev/null and b/public/terrain/19/858504/353995.terrain differ diff --git a/public/terrain/19/858504/353996.terrain b/public/terrain/19/858504/353996.terrain new file mode 100644 index 000000000..c7a8c9770 Binary files /dev/null and b/public/terrain/19/858504/353996.terrain differ diff --git a/public/terrain/19/858504/353997.terrain b/public/terrain/19/858504/353997.terrain new file mode 100644 index 000000000..db4d2f6b1 Binary files /dev/null and b/public/terrain/19/858504/353997.terrain differ diff --git a/public/terrain/19/858504/353998.terrain b/public/terrain/19/858504/353998.terrain new file mode 100644 index 000000000..b5239e224 Binary files /dev/null and b/public/terrain/19/858504/353998.terrain differ diff --git a/public/terrain/19/858504/353999.terrain b/public/terrain/19/858504/353999.terrain new file mode 100644 index 000000000..f793755a3 Binary files /dev/null and b/public/terrain/19/858504/353999.terrain differ diff --git a/public/terrain/19/858504/354000.terrain b/public/terrain/19/858504/354000.terrain new file mode 100644 index 000000000..486d9e7c4 Binary files /dev/null and b/public/terrain/19/858504/354000.terrain differ diff --git a/public/terrain/19/858504/354001.terrain b/public/terrain/19/858504/354001.terrain new file mode 100644 index 000000000..658169878 Binary files /dev/null and b/public/terrain/19/858504/354001.terrain differ diff --git a/public/terrain/19/858504/354002.terrain b/public/terrain/19/858504/354002.terrain new file mode 100644 index 000000000..9055d5a3f Binary files /dev/null and b/public/terrain/19/858504/354002.terrain differ diff --git a/public/terrain/19/858504/354003.terrain b/public/terrain/19/858504/354003.terrain new file mode 100644 index 000000000..0cfdaf624 Binary files /dev/null and b/public/terrain/19/858504/354003.terrain differ diff --git a/public/terrain/19/858504/354004.terrain b/public/terrain/19/858504/354004.terrain new file mode 100644 index 000000000..bbbc92413 Binary files /dev/null and b/public/terrain/19/858504/354004.terrain differ diff --git a/public/terrain/19/858504/354005.terrain b/public/terrain/19/858504/354005.terrain new file mode 100644 index 000000000..86c9bccff Binary files /dev/null and b/public/terrain/19/858504/354005.terrain differ diff --git a/public/terrain/19/858504/354006.terrain b/public/terrain/19/858504/354006.terrain new file mode 100644 index 000000000..4f52e547f Binary files /dev/null and b/public/terrain/19/858504/354006.terrain differ diff --git a/public/terrain/19/858504/354007.terrain b/public/terrain/19/858504/354007.terrain new file mode 100644 index 000000000..adfb9f6db Binary files /dev/null and b/public/terrain/19/858504/354007.terrain differ diff --git a/public/terrain/19/858504/354008.terrain b/public/terrain/19/858504/354008.terrain new file mode 100644 index 000000000..d945a71c0 Binary files /dev/null and b/public/terrain/19/858504/354008.terrain differ diff --git a/public/terrain/19/858504/354009.terrain b/public/terrain/19/858504/354009.terrain new file mode 100644 index 000000000..164769ad4 Binary files /dev/null and b/public/terrain/19/858504/354009.terrain differ diff --git a/public/terrain/19/858504/354010.terrain b/public/terrain/19/858504/354010.terrain new file mode 100644 index 000000000..f2ecd1463 Binary files /dev/null and b/public/terrain/19/858504/354010.terrain differ diff --git a/public/terrain/19/858504/354011.terrain b/public/terrain/19/858504/354011.terrain new file mode 100644 index 000000000..1162e3ab6 Binary files /dev/null and b/public/terrain/19/858504/354011.terrain differ diff --git a/public/terrain/19/858504/354012.terrain b/public/terrain/19/858504/354012.terrain new file mode 100644 index 000000000..6c34d83de Binary files /dev/null and b/public/terrain/19/858504/354012.terrain differ diff --git a/public/terrain/19/858504/354013.terrain b/public/terrain/19/858504/354013.terrain new file mode 100644 index 000000000..e34bebec9 Binary files /dev/null and b/public/terrain/19/858504/354013.terrain differ diff --git a/public/terrain/19/858504/354014.terrain b/public/terrain/19/858504/354014.terrain new file mode 100644 index 000000000..6bfda0f31 Binary files /dev/null and b/public/terrain/19/858504/354014.terrain differ diff --git a/public/terrain/19/858504/354015.terrain b/public/terrain/19/858504/354015.terrain new file mode 100644 index 000000000..bb504a1f5 Binary files /dev/null and b/public/terrain/19/858504/354015.terrain differ diff --git a/public/terrain/19/858504/354016.terrain b/public/terrain/19/858504/354016.terrain new file mode 100644 index 000000000..89940b090 Binary files /dev/null and b/public/terrain/19/858504/354016.terrain differ diff --git a/public/terrain/19/858504/354017.terrain b/public/terrain/19/858504/354017.terrain new file mode 100644 index 000000000..f31f25a8a Binary files /dev/null and b/public/terrain/19/858504/354017.terrain differ diff --git a/public/terrain/19/858504/354018.terrain b/public/terrain/19/858504/354018.terrain new file mode 100644 index 000000000..c33e2bca6 Binary files /dev/null and b/public/terrain/19/858504/354018.terrain differ diff --git a/public/terrain/19/858504/354019.terrain b/public/terrain/19/858504/354019.terrain new file mode 100644 index 000000000..d7918e036 Binary files /dev/null and b/public/terrain/19/858504/354019.terrain differ diff --git a/public/terrain/19/858504/354020.terrain b/public/terrain/19/858504/354020.terrain new file mode 100644 index 000000000..e0cd7b715 Binary files /dev/null and b/public/terrain/19/858504/354020.terrain differ diff --git a/public/terrain/19/858504/354021.terrain b/public/terrain/19/858504/354021.terrain new file mode 100644 index 000000000..c8e637917 Binary files /dev/null and b/public/terrain/19/858504/354021.terrain differ diff --git a/public/terrain/19/858504/354022.terrain b/public/terrain/19/858504/354022.terrain new file mode 100644 index 000000000..3d014826c Binary files /dev/null and b/public/terrain/19/858504/354022.terrain differ diff --git a/public/terrain/19/858504/354023.terrain b/public/terrain/19/858504/354023.terrain new file mode 100644 index 000000000..0096f0eef Binary files /dev/null and b/public/terrain/19/858504/354023.terrain differ diff --git a/public/terrain/19/858504/354024.terrain b/public/terrain/19/858504/354024.terrain new file mode 100644 index 000000000..1be174815 Binary files /dev/null and b/public/terrain/19/858504/354024.terrain differ diff --git a/public/terrain/19/858504/354025.terrain b/public/terrain/19/858504/354025.terrain new file mode 100644 index 000000000..d406ff431 Binary files /dev/null and b/public/terrain/19/858504/354025.terrain differ diff --git a/public/terrain/19/858504/354026.terrain b/public/terrain/19/858504/354026.terrain new file mode 100644 index 000000000..a67be0e44 Binary files /dev/null and b/public/terrain/19/858504/354026.terrain differ diff --git a/public/terrain/19/858504/354027.terrain b/public/terrain/19/858504/354027.terrain new file mode 100644 index 000000000..09a1389a8 Binary files /dev/null and b/public/terrain/19/858504/354027.terrain differ diff --git a/public/terrain/19/858504/354028.terrain b/public/terrain/19/858504/354028.terrain new file mode 100644 index 000000000..b8a452d65 Binary files /dev/null and b/public/terrain/19/858504/354028.terrain differ diff --git a/public/terrain/19/858504/354029.terrain b/public/terrain/19/858504/354029.terrain new file mode 100644 index 000000000..45537c398 Binary files /dev/null and b/public/terrain/19/858504/354029.terrain differ diff --git a/public/terrain/19/858504/354030.terrain b/public/terrain/19/858504/354030.terrain new file mode 100644 index 000000000..ccdecd441 Binary files /dev/null and b/public/terrain/19/858504/354030.terrain differ diff --git a/public/terrain/19/858504/354031.terrain b/public/terrain/19/858504/354031.terrain new file mode 100644 index 000000000..f4005b08d Binary files /dev/null and b/public/terrain/19/858504/354031.terrain differ diff --git a/public/terrain/19/858504/354032.terrain b/public/terrain/19/858504/354032.terrain new file mode 100644 index 000000000..3568dcdd4 Binary files /dev/null and b/public/terrain/19/858504/354032.terrain differ diff --git a/public/terrain/19/858504/354033.terrain b/public/terrain/19/858504/354033.terrain new file mode 100644 index 000000000..743106864 Binary files /dev/null and b/public/terrain/19/858504/354033.terrain differ diff --git a/public/terrain/19/858504/354034.terrain b/public/terrain/19/858504/354034.terrain new file mode 100644 index 000000000..ae1483654 Binary files /dev/null and b/public/terrain/19/858504/354034.terrain differ diff --git a/public/terrain/19/858504/354035.terrain b/public/terrain/19/858504/354035.terrain new file mode 100644 index 000000000..567207c67 Binary files /dev/null and b/public/terrain/19/858504/354035.terrain differ diff --git a/public/terrain/19/858504/354036.terrain b/public/terrain/19/858504/354036.terrain new file mode 100644 index 000000000..0e853c881 Binary files /dev/null and b/public/terrain/19/858504/354036.terrain differ diff --git a/public/terrain/19/858504/354037.terrain b/public/terrain/19/858504/354037.terrain new file mode 100644 index 000000000..484ff3636 Binary files /dev/null and b/public/terrain/19/858504/354037.terrain differ diff --git a/public/terrain/19/858504/354038.terrain b/public/terrain/19/858504/354038.terrain new file mode 100644 index 000000000..b43578114 Binary files /dev/null and b/public/terrain/19/858504/354038.terrain differ diff --git a/public/terrain/19/858504/354039.terrain b/public/terrain/19/858504/354039.terrain new file mode 100644 index 000000000..70d5b9832 Binary files /dev/null and b/public/terrain/19/858504/354039.terrain differ diff --git a/public/terrain/19/858504/354040.terrain b/public/terrain/19/858504/354040.terrain new file mode 100644 index 000000000..eae4fbb66 Binary files /dev/null and b/public/terrain/19/858504/354040.terrain differ diff --git a/public/terrain/19/858504/354041.terrain b/public/terrain/19/858504/354041.terrain new file mode 100644 index 000000000..3b0bf43e0 Binary files /dev/null and b/public/terrain/19/858504/354041.terrain differ diff --git a/public/terrain/19/858504/354042.terrain b/public/terrain/19/858504/354042.terrain new file mode 100644 index 000000000..83e46fe53 Binary files /dev/null and b/public/terrain/19/858504/354042.terrain differ diff --git a/public/terrain/19/858504/354043.terrain b/public/terrain/19/858504/354043.terrain new file mode 100644 index 000000000..d64f5d50f Binary files /dev/null and b/public/terrain/19/858504/354043.terrain differ diff --git a/public/terrain/19/858504/354044.terrain b/public/terrain/19/858504/354044.terrain new file mode 100644 index 000000000..65537841c Binary files /dev/null and b/public/terrain/19/858504/354044.terrain differ diff --git a/public/terrain/19/858504/354045.terrain b/public/terrain/19/858504/354045.terrain new file mode 100644 index 000000000..dca9d29dd Binary files /dev/null and b/public/terrain/19/858504/354045.terrain differ diff --git a/public/terrain/19/858504/354046.terrain b/public/terrain/19/858504/354046.terrain new file mode 100644 index 000000000..f9ac71d38 Binary files /dev/null and b/public/terrain/19/858504/354046.terrain differ diff --git a/public/terrain/19/858504/354047.terrain b/public/terrain/19/858504/354047.terrain new file mode 100644 index 000000000..48b43bd9b Binary files /dev/null and b/public/terrain/19/858504/354047.terrain differ diff --git a/public/terrain/19/858504/354048.terrain b/public/terrain/19/858504/354048.terrain new file mode 100644 index 000000000..81aa31f78 Binary files /dev/null and b/public/terrain/19/858504/354048.terrain differ diff --git a/public/terrain/19/858504/354049.terrain b/public/terrain/19/858504/354049.terrain new file mode 100644 index 000000000..96a9273d0 Binary files /dev/null and b/public/terrain/19/858504/354049.terrain differ diff --git a/public/terrain/19/858504/354050.terrain b/public/terrain/19/858504/354050.terrain new file mode 100644 index 000000000..67f5acfac Binary files /dev/null and b/public/terrain/19/858504/354050.terrain differ diff --git a/public/terrain/19/858504/354051.terrain b/public/terrain/19/858504/354051.terrain new file mode 100644 index 000000000..676e6de44 Binary files /dev/null and b/public/terrain/19/858504/354051.terrain differ diff --git a/public/terrain/19/858504/354052.terrain b/public/terrain/19/858504/354052.terrain new file mode 100644 index 000000000..59a06ef5f Binary files /dev/null and b/public/terrain/19/858504/354052.terrain differ diff --git a/public/terrain/19/858504/354053.terrain b/public/terrain/19/858504/354053.terrain new file mode 100644 index 000000000..9b7394c05 Binary files /dev/null and b/public/terrain/19/858504/354053.terrain differ diff --git a/public/terrain/19/858504/354054.terrain b/public/terrain/19/858504/354054.terrain new file mode 100644 index 000000000..30bbb7cd3 Binary files /dev/null and b/public/terrain/19/858504/354054.terrain differ diff --git a/public/terrain/19/858504/354055.terrain b/public/terrain/19/858504/354055.terrain new file mode 100644 index 000000000..227121889 Binary files /dev/null and b/public/terrain/19/858504/354055.terrain differ diff --git a/public/terrain/19/858504/354056.terrain b/public/terrain/19/858504/354056.terrain new file mode 100644 index 000000000..8ff0aa5fb Binary files /dev/null and b/public/terrain/19/858504/354056.terrain differ diff --git a/public/terrain/19/858504/354057.terrain b/public/terrain/19/858504/354057.terrain new file mode 100644 index 000000000..1b239dca9 Binary files /dev/null and b/public/terrain/19/858504/354057.terrain differ diff --git a/public/terrain/19/858504/354058.terrain b/public/terrain/19/858504/354058.terrain new file mode 100644 index 000000000..3eb50fd9e Binary files /dev/null and b/public/terrain/19/858504/354058.terrain differ diff --git a/public/terrain/19/858504/354059.terrain b/public/terrain/19/858504/354059.terrain new file mode 100644 index 000000000..3c64b3c2a Binary files /dev/null and b/public/terrain/19/858504/354059.terrain differ diff --git a/public/terrain/19/858505/353743.terrain b/public/terrain/19/858505/353743.terrain new file mode 100644 index 000000000..31ca89f23 Binary files /dev/null and b/public/terrain/19/858505/353743.terrain differ diff --git a/public/terrain/19/858505/353744.terrain b/public/terrain/19/858505/353744.terrain new file mode 100644 index 000000000..bf0fce50b Binary files /dev/null and b/public/terrain/19/858505/353744.terrain differ diff --git a/public/terrain/19/858505/353745.terrain b/public/terrain/19/858505/353745.terrain new file mode 100644 index 000000000..00d824476 Binary files /dev/null and b/public/terrain/19/858505/353745.terrain differ diff --git a/public/terrain/19/858505/353746.terrain b/public/terrain/19/858505/353746.terrain new file mode 100644 index 000000000..8df250471 Binary files /dev/null and b/public/terrain/19/858505/353746.terrain differ diff --git a/public/terrain/19/858505/353747.terrain b/public/terrain/19/858505/353747.terrain new file mode 100644 index 000000000..3158b0558 Binary files /dev/null and b/public/terrain/19/858505/353747.terrain differ diff --git a/public/terrain/19/858505/353748.terrain b/public/terrain/19/858505/353748.terrain new file mode 100644 index 000000000..516fcd5ce Binary files /dev/null and b/public/terrain/19/858505/353748.terrain differ diff --git a/public/terrain/19/858505/353749.terrain b/public/terrain/19/858505/353749.terrain new file mode 100644 index 000000000..313bd79a6 Binary files /dev/null and b/public/terrain/19/858505/353749.terrain differ diff --git a/public/terrain/19/858505/353750.terrain b/public/terrain/19/858505/353750.terrain new file mode 100644 index 000000000..cbf377adc Binary files /dev/null and b/public/terrain/19/858505/353750.terrain differ diff --git a/public/terrain/19/858505/353751.terrain b/public/terrain/19/858505/353751.terrain new file mode 100644 index 000000000..cec93bea2 Binary files /dev/null and b/public/terrain/19/858505/353751.terrain differ diff --git a/public/terrain/19/858505/353752.terrain b/public/terrain/19/858505/353752.terrain new file mode 100644 index 000000000..b495f7f2a Binary files /dev/null and b/public/terrain/19/858505/353752.terrain differ diff --git a/public/terrain/19/858505/353753.terrain b/public/terrain/19/858505/353753.terrain new file mode 100644 index 000000000..ce5faf13f Binary files /dev/null and b/public/terrain/19/858505/353753.terrain differ diff --git a/public/terrain/19/858505/353754.terrain b/public/terrain/19/858505/353754.terrain new file mode 100644 index 000000000..fff5a9771 Binary files /dev/null and b/public/terrain/19/858505/353754.terrain differ diff --git a/public/terrain/19/858505/353755.terrain b/public/terrain/19/858505/353755.terrain new file mode 100644 index 000000000..95bc6cf5f Binary files /dev/null and b/public/terrain/19/858505/353755.terrain differ diff --git a/public/terrain/19/858505/353756.terrain b/public/terrain/19/858505/353756.terrain new file mode 100644 index 000000000..6fa87dfdb Binary files /dev/null and b/public/terrain/19/858505/353756.terrain differ diff --git a/public/terrain/19/858505/353757.terrain b/public/terrain/19/858505/353757.terrain new file mode 100644 index 000000000..dae495e6a Binary files /dev/null and b/public/terrain/19/858505/353757.terrain differ diff --git a/public/terrain/19/858505/353758.terrain b/public/terrain/19/858505/353758.terrain new file mode 100644 index 000000000..34f775c80 Binary files /dev/null and b/public/terrain/19/858505/353758.terrain differ diff --git a/public/terrain/19/858505/353759.terrain b/public/terrain/19/858505/353759.terrain new file mode 100644 index 000000000..41918db12 Binary files /dev/null and b/public/terrain/19/858505/353759.terrain differ diff --git a/public/terrain/19/858505/353760.terrain b/public/terrain/19/858505/353760.terrain new file mode 100644 index 000000000..dfa5466dd Binary files /dev/null and b/public/terrain/19/858505/353760.terrain differ diff --git a/public/terrain/19/858505/353761.terrain b/public/terrain/19/858505/353761.terrain new file mode 100644 index 000000000..9f23b5331 Binary files /dev/null and b/public/terrain/19/858505/353761.terrain differ diff --git a/public/terrain/19/858505/353762.terrain b/public/terrain/19/858505/353762.terrain new file mode 100644 index 000000000..74e01a126 Binary files /dev/null and b/public/terrain/19/858505/353762.terrain differ diff --git a/public/terrain/19/858505/353763.terrain b/public/terrain/19/858505/353763.terrain new file mode 100644 index 000000000..5898ffc1d Binary files /dev/null and b/public/terrain/19/858505/353763.terrain differ diff --git a/public/terrain/19/858505/353764.terrain b/public/terrain/19/858505/353764.terrain new file mode 100644 index 000000000..08ff86a8e Binary files /dev/null and b/public/terrain/19/858505/353764.terrain differ diff --git a/public/terrain/19/858505/353765.terrain b/public/terrain/19/858505/353765.terrain new file mode 100644 index 000000000..0f71a749e Binary files /dev/null and b/public/terrain/19/858505/353765.terrain differ diff --git a/public/terrain/19/858505/353766.terrain b/public/terrain/19/858505/353766.terrain new file mode 100644 index 000000000..e82b64b55 Binary files /dev/null and b/public/terrain/19/858505/353766.terrain differ diff --git a/public/terrain/19/858505/353767.terrain b/public/terrain/19/858505/353767.terrain new file mode 100644 index 000000000..a8007a995 Binary files /dev/null and b/public/terrain/19/858505/353767.terrain differ diff --git a/public/terrain/19/858505/353768.terrain b/public/terrain/19/858505/353768.terrain new file mode 100644 index 000000000..2d093f151 Binary files /dev/null and b/public/terrain/19/858505/353768.terrain differ diff --git a/public/terrain/19/858505/353769.terrain b/public/terrain/19/858505/353769.terrain new file mode 100644 index 000000000..fc68ca2ae Binary files /dev/null and b/public/terrain/19/858505/353769.terrain differ diff --git a/public/terrain/19/858505/353770.terrain b/public/terrain/19/858505/353770.terrain new file mode 100644 index 000000000..ac45d3cc5 Binary files /dev/null and b/public/terrain/19/858505/353770.terrain differ diff --git a/public/terrain/19/858505/353771.terrain b/public/terrain/19/858505/353771.terrain new file mode 100644 index 000000000..643e8aa30 Binary files /dev/null and b/public/terrain/19/858505/353771.terrain differ diff --git a/public/terrain/19/858505/353772.terrain b/public/terrain/19/858505/353772.terrain new file mode 100644 index 000000000..c7c72c8e7 Binary files /dev/null and b/public/terrain/19/858505/353772.terrain differ diff --git a/public/terrain/19/858505/353773.terrain b/public/terrain/19/858505/353773.terrain new file mode 100644 index 000000000..444cddfbf Binary files /dev/null and b/public/terrain/19/858505/353773.terrain differ diff --git a/public/terrain/19/858505/353774.terrain b/public/terrain/19/858505/353774.terrain new file mode 100644 index 000000000..98bac6a11 Binary files /dev/null and b/public/terrain/19/858505/353774.terrain differ diff --git a/public/terrain/19/858505/353775.terrain b/public/terrain/19/858505/353775.terrain new file mode 100644 index 000000000..996848083 Binary files /dev/null and b/public/terrain/19/858505/353775.terrain differ diff --git a/public/terrain/19/858505/353776.terrain b/public/terrain/19/858505/353776.terrain new file mode 100644 index 000000000..69150c7db Binary files /dev/null and b/public/terrain/19/858505/353776.terrain differ diff --git a/public/terrain/19/858505/353777.terrain b/public/terrain/19/858505/353777.terrain new file mode 100644 index 000000000..0aa9f010e Binary files /dev/null and b/public/terrain/19/858505/353777.terrain differ diff --git a/public/terrain/19/858505/353778.terrain b/public/terrain/19/858505/353778.terrain new file mode 100644 index 000000000..804fe922e Binary files /dev/null and b/public/terrain/19/858505/353778.terrain differ diff --git a/public/terrain/19/858505/353779.terrain b/public/terrain/19/858505/353779.terrain new file mode 100644 index 000000000..eb58cd3de Binary files /dev/null and b/public/terrain/19/858505/353779.terrain differ diff --git a/public/terrain/19/858505/353780.terrain b/public/terrain/19/858505/353780.terrain new file mode 100644 index 000000000..b17b00a8a Binary files /dev/null and b/public/terrain/19/858505/353780.terrain differ diff --git a/public/terrain/19/858505/353781.terrain b/public/terrain/19/858505/353781.terrain new file mode 100644 index 000000000..205c2f0c4 Binary files /dev/null and b/public/terrain/19/858505/353781.terrain differ diff --git a/public/terrain/19/858505/353782.terrain b/public/terrain/19/858505/353782.terrain new file mode 100644 index 000000000..511fff390 Binary files /dev/null and b/public/terrain/19/858505/353782.terrain differ diff --git a/public/terrain/19/858505/353783.terrain b/public/terrain/19/858505/353783.terrain new file mode 100644 index 000000000..43d81c35e Binary files /dev/null and b/public/terrain/19/858505/353783.terrain differ diff --git a/public/terrain/19/858505/353784.terrain b/public/terrain/19/858505/353784.terrain new file mode 100644 index 000000000..cfddfcdd8 Binary files /dev/null and b/public/terrain/19/858505/353784.terrain differ diff --git a/public/terrain/19/858505/353785.terrain b/public/terrain/19/858505/353785.terrain new file mode 100644 index 000000000..9d7b5380c Binary files /dev/null and b/public/terrain/19/858505/353785.terrain differ diff --git a/public/terrain/19/858505/353786.terrain b/public/terrain/19/858505/353786.terrain new file mode 100644 index 000000000..6bdc0536d Binary files /dev/null and b/public/terrain/19/858505/353786.terrain differ diff --git a/public/terrain/19/858505/353787.terrain b/public/terrain/19/858505/353787.terrain new file mode 100644 index 000000000..68f043a76 Binary files /dev/null and b/public/terrain/19/858505/353787.terrain differ diff --git a/public/terrain/19/858505/353788.terrain b/public/terrain/19/858505/353788.terrain new file mode 100644 index 000000000..b6f7abdb2 Binary files /dev/null and b/public/terrain/19/858505/353788.terrain differ diff --git a/public/terrain/19/858505/353789.terrain b/public/terrain/19/858505/353789.terrain new file mode 100644 index 000000000..849850de4 Binary files /dev/null and b/public/terrain/19/858505/353789.terrain differ diff --git a/public/terrain/19/858505/353790.terrain b/public/terrain/19/858505/353790.terrain new file mode 100644 index 000000000..b97f640e5 Binary files /dev/null and b/public/terrain/19/858505/353790.terrain differ diff --git a/public/terrain/19/858505/353791.terrain b/public/terrain/19/858505/353791.terrain new file mode 100644 index 000000000..1d41f58be Binary files /dev/null and b/public/terrain/19/858505/353791.terrain differ diff --git a/public/terrain/19/858505/353792.terrain b/public/terrain/19/858505/353792.terrain new file mode 100644 index 000000000..d96206586 Binary files /dev/null and b/public/terrain/19/858505/353792.terrain differ diff --git a/public/terrain/19/858505/353793.terrain b/public/terrain/19/858505/353793.terrain new file mode 100644 index 000000000..518c23ab9 Binary files /dev/null and b/public/terrain/19/858505/353793.terrain differ diff --git a/public/terrain/19/858505/353794.terrain b/public/terrain/19/858505/353794.terrain new file mode 100644 index 000000000..5c6b3bdfc Binary files /dev/null and b/public/terrain/19/858505/353794.terrain differ diff --git a/public/terrain/19/858505/353795.terrain b/public/terrain/19/858505/353795.terrain new file mode 100644 index 000000000..01416fb3d Binary files /dev/null and b/public/terrain/19/858505/353795.terrain differ diff --git a/public/terrain/19/858505/353796.terrain b/public/terrain/19/858505/353796.terrain new file mode 100644 index 000000000..5cbf161ca Binary files /dev/null and b/public/terrain/19/858505/353796.terrain differ diff --git a/public/terrain/19/858505/353797.terrain b/public/terrain/19/858505/353797.terrain new file mode 100644 index 000000000..3d4c4b411 Binary files /dev/null and b/public/terrain/19/858505/353797.terrain differ diff --git a/public/terrain/19/858505/353798.terrain b/public/terrain/19/858505/353798.terrain new file mode 100644 index 000000000..14554584d Binary files /dev/null and b/public/terrain/19/858505/353798.terrain differ diff --git a/public/terrain/19/858505/353799.terrain b/public/terrain/19/858505/353799.terrain new file mode 100644 index 000000000..7082223ac Binary files /dev/null and b/public/terrain/19/858505/353799.terrain differ diff --git a/public/terrain/19/858505/353800.terrain b/public/terrain/19/858505/353800.terrain new file mode 100644 index 000000000..92d19cf07 Binary files /dev/null and b/public/terrain/19/858505/353800.terrain differ diff --git a/public/terrain/19/858505/353801.terrain b/public/terrain/19/858505/353801.terrain new file mode 100644 index 000000000..d65716950 Binary files /dev/null and b/public/terrain/19/858505/353801.terrain differ diff --git a/public/terrain/19/858505/353802.terrain b/public/terrain/19/858505/353802.terrain new file mode 100644 index 000000000..0cd87c52b Binary files /dev/null and b/public/terrain/19/858505/353802.terrain differ diff --git a/public/terrain/19/858505/353803.terrain b/public/terrain/19/858505/353803.terrain new file mode 100644 index 000000000..0cde6449a Binary files /dev/null and b/public/terrain/19/858505/353803.terrain differ diff --git a/public/terrain/19/858505/353804.terrain b/public/terrain/19/858505/353804.terrain new file mode 100644 index 000000000..bcfe2bb10 Binary files /dev/null and b/public/terrain/19/858505/353804.terrain differ diff --git a/public/terrain/19/858505/353805.terrain b/public/terrain/19/858505/353805.terrain new file mode 100644 index 000000000..ed4776287 Binary files /dev/null and b/public/terrain/19/858505/353805.terrain differ diff --git a/public/terrain/19/858505/353806.terrain b/public/terrain/19/858505/353806.terrain new file mode 100644 index 000000000..a15bee8d0 Binary files /dev/null and b/public/terrain/19/858505/353806.terrain differ diff --git a/public/terrain/19/858505/353807.terrain b/public/terrain/19/858505/353807.terrain new file mode 100644 index 000000000..f474e1edc Binary files /dev/null and b/public/terrain/19/858505/353807.terrain differ diff --git a/public/terrain/19/858505/353808.terrain b/public/terrain/19/858505/353808.terrain new file mode 100644 index 000000000..53d151b5d Binary files /dev/null and b/public/terrain/19/858505/353808.terrain differ diff --git a/public/terrain/19/858505/353809.terrain b/public/terrain/19/858505/353809.terrain new file mode 100644 index 000000000..1e98b2dc1 Binary files /dev/null and b/public/terrain/19/858505/353809.terrain differ diff --git a/public/terrain/19/858505/353810.terrain b/public/terrain/19/858505/353810.terrain new file mode 100644 index 000000000..98d6a5f8a Binary files /dev/null and b/public/terrain/19/858505/353810.terrain differ diff --git a/public/terrain/19/858505/353811.terrain b/public/terrain/19/858505/353811.terrain new file mode 100644 index 000000000..e48bca458 Binary files /dev/null and b/public/terrain/19/858505/353811.terrain differ diff --git a/public/terrain/19/858505/353812.terrain b/public/terrain/19/858505/353812.terrain new file mode 100644 index 000000000..29bed0708 Binary files /dev/null and b/public/terrain/19/858505/353812.terrain differ diff --git a/public/terrain/19/858505/353813.terrain b/public/terrain/19/858505/353813.terrain new file mode 100644 index 000000000..f3a36b399 Binary files /dev/null and b/public/terrain/19/858505/353813.terrain differ diff --git a/public/terrain/19/858505/353814.terrain b/public/terrain/19/858505/353814.terrain new file mode 100644 index 000000000..32972ad94 Binary files /dev/null and b/public/terrain/19/858505/353814.terrain differ diff --git a/public/terrain/19/858505/353815.terrain b/public/terrain/19/858505/353815.terrain new file mode 100644 index 000000000..b045fa982 Binary files /dev/null and b/public/terrain/19/858505/353815.terrain differ diff --git a/public/terrain/19/858505/353816.terrain b/public/terrain/19/858505/353816.terrain new file mode 100644 index 000000000..c184a2ccb Binary files /dev/null and b/public/terrain/19/858505/353816.terrain differ diff --git a/public/terrain/19/858505/353817.terrain b/public/terrain/19/858505/353817.terrain new file mode 100644 index 000000000..9653c3dee Binary files /dev/null and b/public/terrain/19/858505/353817.terrain differ diff --git a/public/terrain/19/858505/353818.terrain b/public/terrain/19/858505/353818.terrain new file mode 100644 index 000000000..d518803c1 Binary files /dev/null and b/public/terrain/19/858505/353818.terrain differ diff --git a/public/terrain/19/858505/353819.terrain b/public/terrain/19/858505/353819.terrain new file mode 100644 index 000000000..455fadc4c Binary files /dev/null and b/public/terrain/19/858505/353819.terrain differ diff --git a/public/terrain/19/858505/353820.terrain b/public/terrain/19/858505/353820.terrain new file mode 100644 index 000000000..df4f62361 Binary files /dev/null and b/public/terrain/19/858505/353820.terrain differ diff --git a/public/terrain/19/858505/353821.terrain b/public/terrain/19/858505/353821.terrain new file mode 100644 index 000000000..d53c1d256 Binary files /dev/null and b/public/terrain/19/858505/353821.terrain differ diff --git a/public/terrain/19/858505/353822.terrain b/public/terrain/19/858505/353822.terrain new file mode 100644 index 000000000..4793fddf2 Binary files /dev/null and b/public/terrain/19/858505/353822.terrain differ diff --git a/public/terrain/19/858505/353823.terrain b/public/terrain/19/858505/353823.terrain new file mode 100644 index 000000000..20b189e8c Binary files /dev/null and b/public/terrain/19/858505/353823.terrain differ diff --git a/public/terrain/19/858505/353824.terrain b/public/terrain/19/858505/353824.terrain new file mode 100644 index 000000000..9948c7e5e Binary files /dev/null and b/public/terrain/19/858505/353824.terrain differ diff --git a/public/terrain/19/858505/353825.terrain b/public/terrain/19/858505/353825.terrain new file mode 100644 index 000000000..926947bf9 Binary files /dev/null and b/public/terrain/19/858505/353825.terrain differ diff --git a/public/terrain/19/858505/353826.terrain b/public/terrain/19/858505/353826.terrain new file mode 100644 index 000000000..0ee1c10b0 Binary files /dev/null and b/public/terrain/19/858505/353826.terrain differ diff --git a/public/terrain/19/858505/353827.terrain b/public/terrain/19/858505/353827.terrain new file mode 100644 index 000000000..349f6b656 Binary files /dev/null and b/public/terrain/19/858505/353827.terrain differ diff --git a/public/terrain/19/858505/353828.terrain b/public/terrain/19/858505/353828.terrain new file mode 100644 index 000000000..3b1a5df08 Binary files /dev/null and b/public/terrain/19/858505/353828.terrain differ diff --git a/public/terrain/19/858505/353829.terrain b/public/terrain/19/858505/353829.terrain new file mode 100644 index 000000000..32f6fce52 Binary files /dev/null and b/public/terrain/19/858505/353829.terrain differ diff --git a/public/terrain/19/858505/353830.terrain b/public/terrain/19/858505/353830.terrain new file mode 100644 index 000000000..dfa356571 Binary files /dev/null and b/public/terrain/19/858505/353830.terrain differ diff --git a/public/terrain/19/858505/353831.terrain b/public/terrain/19/858505/353831.terrain new file mode 100644 index 000000000..a44f50144 Binary files /dev/null and b/public/terrain/19/858505/353831.terrain differ diff --git a/public/terrain/19/858505/353832.terrain b/public/terrain/19/858505/353832.terrain new file mode 100644 index 000000000..b16db2661 Binary files /dev/null and b/public/terrain/19/858505/353832.terrain differ diff --git a/public/terrain/19/858505/353833.terrain b/public/terrain/19/858505/353833.terrain new file mode 100644 index 000000000..0f071f163 Binary files /dev/null and b/public/terrain/19/858505/353833.terrain differ diff --git a/public/terrain/19/858505/353834.terrain b/public/terrain/19/858505/353834.terrain new file mode 100644 index 000000000..f270d5c01 Binary files /dev/null and b/public/terrain/19/858505/353834.terrain differ diff --git a/public/terrain/19/858505/353835.terrain b/public/terrain/19/858505/353835.terrain new file mode 100644 index 000000000..9fe74b8c1 Binary files /dev/null and b/public/terrain/19/858505/353835.terrain differ diff --git a/public/terrain/19/858505/353836.terrain b/public/terrain/19/858505/353836.terrain new file mode 100644 index 000000000..49eb10b8d Binary files /dev/null and b/public/terrain/19/858505/353836.terrain differ diff --git a/public/terrain/19/858505/353837.terrain b/public/terrain/19/858505/353837.terrain new file mode 100644 index 000000000..a22ed37ed Binary files /dev/null and b/public/terrain/19/858505/353837.terrain differ diff --git a/public/terrain/19/858505/353838.terrain b/public/terrain/19/858505/353838.terrain new file mode 100644 index 000000000..5342d129b Binary files /dev/null and b/public/terrain/19/858505/353838.terrain differ diff --git a/public/terrain/19/858505/353839.terrain b/public/terrain/19/858505/353839.terrain new file mode 100644 index 000000000..784fd9a42 Binary files /dev/null and b/public/terrain/19/858505/353839.terrain differ diff --git a/public/terrain/19/858505/353840.terrain b/public/terrain/19/858505/353840.terrain new file mode 100644 index 000000000..86f413328 Binary files /dev/null and b/public/terrain/19/858505/353840.terrain differ diff --git a/public/terrain/19/858505/353841.terrain b/public/terrain/19/858505/353841.terrain new file mode 100644 index 000000000..99935b2c7 Binary files /dev/null and b/public/terrain/19/858505/353841.terrain differ diff --git a/public/terrain/19/858505/353842.terrain b/public/terrain/19/858505/353842.terrain new file mode 100644 index 000000000..2fcb7ff2b Binary files /dev/null and b/public/terrain/19/858505/353842.terrain differ diff --git a/public/terrain/19/858505/353843.terrain b/public/terrain/19/858505/353843.terrain new file mode 100644 index 000000000..5bcdf5fbf Binary files /dev/null and b/public/terrain/19/858505/353843.terrain differ diff --git a/public/terrain/19/858505/353844.terrain b/public/terrain/19/858505/353844.terrain new file mode 100644 index 000000000..198b3ee6d Binary files /dev/null and b/public/terrain/19/858505/353844.terrain differ diff --git a/public/terrain/19/858505/353845.terrain b/public/terrain/19/858505/353845.terrain new file mode 100644 index 000000000..56602c50a Binary files /dev/null and b/public/terrain/19/858505/353845.terrain differ diff --git a/public/terrain/19/858505/353846.terrain b/public/terrain/19/858505/353846.terrain new file mode 100644 index 000000000..59949e507 Binary files /dev/null and b/public/terrain/19/858505/353846.terrain differ diff --git a/public/terrain/19/858505/353847.terrain b/public/terrain/19/858505/353847.terrain new file mode 100644 index 000000000..0cf5f9efd Binary files /dev/null and b/public/terrain/19/858505/353847.terrain differ diff --git a/public/terrain/19/858505/353848.terrain b/public/terrain/19/858505/353848.terrain new file mode 100644 index 000000000..55c9d5f52 Binary files /dev/null and b/public/terrain/19/858505/353848.terrain differ diff --git a/public/terrain/19/858505/353849.terrain b/public/terrain/19/858505/353849.terrain new file mode 100644 index 000000000..aefb1ab67 Binary files /dev/null and b/public/terrain/19/858505/353849.terrain differ diff --git a/public/terrain/19/858505/353850.terrain b/public/terrain/19/858505/353850.terrain new file mode 100644 index 000000000..c5838346d Binary files /dev/null and b/public/terrain/19/858505/353850.terrain differ diff --git a/public/terrain/19/858505/353851.terrain b/public/terrain/19/858505/353851.terrain new file mode 100644 index 000000000..077d10a42 Binary files /dev/null and b/public/terrain/19/858505/353851.terrain differ diff --git a/public/terrain/19/858505/353852.terrain b/public/terrain/19/858505/353852.terrain new file mode 100644 index 000000000..3a8b4c561 Binary files /dev/null and b/public/terrain/19/858505/353852.terrain differ diff --git a/public/terrain/19/858505/353853.terrain b/public/terrain/19/858505/353853.terrain new file mode 100644 index 000000000..69ab7dfcd Binary files /dev/null and b/public/terrain/19/858505/353853.terrain differ diff --git a/public/terrain/19/858505/353854.terrain b/public/terrain/19/858505/353854.terrain new file mode 100644 index 000000000..92c449875 Binary files /dev/null and b/public/terrain/19/858505/353854.terrain differ diff --git a/public/terrain/19/858505/353855.terrain b/public/terrain/19/858505/353855.terrain new file mode 100644 index 000000000..da2a1de25 Binary files /dev/null and b/public/terrain/19/858505/353855.terrain differ diff --git a/public/terrain/19/858505/353856.terrain b/public/terrain/19/858505/353856.terrain new file mode 100644 index 000000000..d4f20486a Binary files /dev/null and b/public/terrain/19/858505/353856.terrain differ diff --git a/public/terrain/19/858505/353857.terrain b/public/terrain/19/858505/353857.terrain new file mode 100644 index 000000000..2c0b74628 Binary files /dev/null and b/public/terrain/19/858505/353857.terrain differ diff --git a/public/terrain/19/858505/353858.terrain b/public/terrain/19/858505/353858.terrain new file mode 100644 index 000000000..64c59ba96 Binary files /dev/null and b/public/terrain/19/858505/353858.terrain differ diff --git a/public/terrain/19/858505/353859.terrain b/public/terrain/19/858505/353859.terrain new file mode 100644 index 000000000..d95c6176c Binary files /dev/null and b/public/terrain/19/858505/353859.terrain differ diff --git a/public/terrain/19/858505/353860.terrain b/public/terrain/19/858505/353860.terrain new file mode 100644 index 000000000..fced0264a Binary files /dev/null and b/public/terrain/19/858505/353860.terrain differ diff --git a/public/terrain/19/858505/353861.terrain b/public/terrain/19/858505/353861.terrain new file mode 100644 index 000000000..827179af1 Binary files /dev/null and b/public/terrain/19/858505/353861.terrain differ diff --git a/public/terrain/19/858505/353862.terrain b/public/terrain/19/858505/353862.terrain new file mode 100644 index 000000000..d369dee31 Binary files /dev/null and b/public/terrain/19/858505/353862.terrain differ diff --git a/public/terrain/19/858505/353863.terrain b/public/terrain/19/858505/353863.terrain new file mode 100644 index 000000000..c8e7cd42d Binary files /dev/null and b/public/terrain/19/858505/353863.terrain differ diff --git a/public/terrain/19/858505/353864.terrain b/public/terrain/19/858505/353864.terrain new file mode 100644 index 000000000..ec66f404b Binary files /dev/null and b/public/terrain/19/858505/353864.terrain differ diff --git a/public/terrain/19/858505/353865.terrain b/public/terrain/19/858505/353865.terrain new file mode 100644 index 000000000..59e5061f1 Binary files /dev/null and b/public/terrain/19/858505/353865.terrain differ diff --git a/public/terrain/19/858505/353866.terrain b/public/terrain/19/858505/353866.terrain new file mode 100644 index 000000000..3d938c239 Binary files /dev/null and b/public/terrain/19/858505/353866.terrain differ diff --git a/public/terrain/19/858505/353867.terrain b/public/terrain/19/858505/353867.terrain new file mode 100644 index 000000000..f98d3db5a Binary files /dev/null and b/public/terrain/19/858505/353867.terrain differ diff --git a/public/terrain/19/858505/353868.terrain b/public/terrain/19/858505/353868.terrain new file mode 100644 index 000000000..be32963b1 Binary files /dev/null and b/public/terrain/19/858505/353868.terrain differ diff --git a/public/terrain/19/858505/353869.terrain b/public/terrain/19/858505/353869.terrain new file mode 100644 index 000000000..55c694e6b Binary files /dev/null and b/public/terrain/19/858505/353869.terrain differ diff --git a/public/terrain/19/858505/353870.terrain b/public/terrain/19/858505/353870.terrain new file mode 100644 index 000000000..96956e314 Binary files /dev/null and b/public/terrain/19/858505/353870.terrain differ diff --git a/public/terrain/19/858505/353871.terrain b/public/terrain/19/858505/353871.terrain new file mode 100644 index 000000000..b6daf1a33 Binary files /dev/null and b/public/terrain/19/858505/353871.terrain differ diff --git a/public/terrain/19/858505/353872.terrain b/public/terrain/19/858505/353872.terrain new file mode 100644 index 000000000..e55a0f93a Binary files /dev/null and b/public/terrain/19/858505/353872.terrain differ diff --git a/public/terrain/19/858505/353873.terrain b/public/terrain/19/858505/353873.terrain new file mode 100644 index 000000000..412c18367 Binary files /dev/null and b/public/terrain/19/858505/353873.terrain differ diff --git a/public/terrain/19/858505/353874.terrain b/public/terrain/19/858505/353874.terrain new file mode 100644 index 000000000..c27d27d23 Binary files /dev/null and b/public/terrain/19/858505/353874.terrain differ diff --git a/public/terrain/19/858505/353875.terrain b/public/terrain/19/858505/353875.terrain new file mode 100644 index 000000000..141887025 Binary files /dev/null and b/public/terrain/19/858505/353875.terrain differ diff --git a/public/terrain/19/858505/353876.terrain b/public/terrain/19/858505/353876.terrain new file mode 100644 index 000000000..dc3bae06b Binary files /dev/null and b/public/terrain/19/858505/353876.terrain differ diff --git a/public/terrain/19/858505/353877.terrain b/public/terrain/19/858505/353877.terrain new file mode 100644 index 000000000..a7235311c Binary files /dev/null and b/public/terrain/19/858505/353877.terrain differ diff --git a/public/terrain/19/858505/353878.terrain b/public/terrain/19/858505/353878.terrain new file mode 100644 index 000000000..130da6648 Binary files /dev/null and b/public/terrain/19/858505/353878.terrain differ diff --git a/public/terrain/19/858505/353879.terrain b/public/terrain/19/858505/353879.terrain new file mode 100644 index 000000000..e208b6a5c Binary files /dev/null and b/public/terrain/19/858505/353879.terrain differ diff --git a/public/terrain/19/858505/353880.terrain b/public/terrain/19/858505/353880.terrain new file mode 100644 index 000000000..fae1dc814 Binary files /dev/null and b/public/terrain/19/858505/353880.terrain differ diff --git a/public/terrain/19/858505/353881.terrain b/public/terrain/19/858505/353881.terrain new file mode 100644 index 000000000..b8935d1ed Binary files /dev/null and b/public/terrain/19/858505/353881.terrain differ diff --git a/public/terrain/19/858505/353882.terrain b/public/terrain/19/858505/353882.terrain new file mode 100644 index 000000000..92b19456c Binary files /dev/null and b/public/terrain/19/858505/353882.terrain differ diff --git a/public/terrain/19/858505/353883.terrain b/public/terrain/19/858505/353883.terrain new file mode 100644 index 000000000..b28709a35 Binary files /dev/null and b/public/terrain/19/858505/353883.terrain differ diff --git a/public/terrain/19/858505/353884.terrain b/public/terrain/19/858505/353884.terrain new file mode 100644 index 000000000..c0d4dcba2 Binary files /dev/null and b/public/terrain/19/858505/353884.terrain differ diff --git a/public/terrain/19/858505/353885.terrain b/public/terrain/19/858505/353885.terrain new file mode 100644 index 000000000..badbba3fc Binary files /dev/null and b/public/terrain/19/858505/353885.terrain differ diff --git a/public/terrain/19/858505/353886.terrain b/public/terrain/19/858505/353886.terrain new file mode 100644 index 000000000..074ea2b9d Binary files /dev/null and b/public/terrain/19/858505/353886.terrain differ diff --git a/public/terrain/19/858505/353887.terrain b/public/terrain/19/858505/353887.terrain new file mode 100644 index 000000000..9e7b652a0 Binary files /dev/null and b/public/terrain/19/858505/353887.terrain differ diff --git a/public/terrain/19/858505/353888.terrain b/public/terrain/19/858505/353888.terrain new file mode 100644 index 000000000..d88d82783 Binary files /dev/null and b/public/terrain/19/858505/353888.terrain differ diff --git a/public/terrain/19/858505/353889.terrain b/public/terrain/19/858505/353889.terrain new file mode 100644 index 000000000..1366ccbce Binary files /dev/null and b/public/terrain/19/858505/353889.terrain differ diff --git a/public/terrain/19/858505/353890.terrain b/public/terrain/19/858505/353890.terrain new file mode 100644 index 000000000..8fdd74af1 Binary files /dev/null and b/public/terrain/19/858505/353890.terrain differ diff --git a/public/terrain/19/858505/353891.terrain b/public/terrain/19/858505/353891.terrain new file mode 100644 index 000000000..63a4af4c6 Binary files /dev/null and b/public/terrain/19/858505/353891.terrain differ diff --git a/public/terrain/19/858505/353892.terrain b/public/terrain/19/858505/353892.terrain new file mode 100644 index 000000000..11ce4f9aa Binary files /dev/null and b/public/terrain/19/858505/353892.terrain differ diff --git a/public/terrain/19/858505/353893.terrain b/public/terrain/19/858505/353893.terrain new file mode 100644 index 000000000..c8ee0c2e8 Binary files /dev/null and b/public/terrain/19/858505/353893.terrain differ diff --git a/public/terrain/19/858505/353894.terrain b/public/terrain/19/858505/353894.terrain new file mode 100644 index 000000000..cec9eba66 Binary files /dev/null and b/public/terrain/19/858505/353894.terrain differ diff --git a/public/terrain/19/858505/353895.terrain b/public/terrain/19/858505/353895.terrain new file mode 100644 index 000000000..cb6addd7f Binary files /dev/null and b/public/terrain/19/858505/353895.terrain differ diff --git a/public/terrain/19/858505/353896.terrain b/public/terrain/19/858505/353896.terrain new file mode 100644 index 000000000..e8f521d0d Binary files /dev/null and b/public/terrain/19/858505/353896.terrain differ diff --git a/public/terrain/19/858505/353897.terrain b/public/terrain/19/858505/353897.terrain new file mode 100644 index 000000000..026727fd0 Binary files /dev/null and b/public/terrain/19/858505/353897.terrain differ diff --git a/public/terrain/19/858505/353898.terrain b/public/terrain/19/858505/353898.terrain new file mode 100644 index 000000000..4ea3afb8a Binary files /dev/null and b/public/terrain/19/858505/353898.terrain differ diff --git a/public/terrain/19/858505/353899.terrain b/public/terrain/19/858505/353899.terrain new file mode 100644 index 000000000..26425ecdc Binary files /dev/null and b/public/terrain/19/858505/353899.terrain differ diff --git a/public/terrain/19/858505/353900.terrain b/public/terrain/19/858505/353900.terrain new file mode 100644 index 000000000..3cb89a857 Binary files /dev/null and b/public/terrain/19/858505/353900.terrain differ diff --git a/public/terrain/19/858505/353901.terrain b/public/terrain/19/858505/353901.terrain new file mode 100644 index 000000000..02e10581c Binary files /dev/null and b/public/terrain/19/858505/353901.terrain differ diff --git a/public/terrain/19/858505/353902.terrain b/public/terrain/19/858505/353902.terrain new file mode 100644 index 000000000..b91758f96 Binary files /dev/null and b/public/terrain/19/858505/353902.terrain differ diff --git a/public/terrain/19/858505/353903.terrain b/public/terrain/19/858505/353903.terrain new file mode 100644 index 000000000..96e96d968 Binary files /dev/null and b/public/terrain/19/858505/353903.terrain differ diff --git a/public/terrain/19/858505/353904.terrain b/public/terrain/19/858505/353904.terrain new file mode 100644 index 000000000..0ba38b7d6 Binary files /dev/null and b/public/terrain/19/858505/353904.terrain differ diff --git a/public/terrain/19/858505/353905.terrain b/public/terrain/19/858505/353905.terrain new file mode 100644 index 000000000..733d4c3d2 Binary files /dev/null and b/public/terrain/19/858505/353905.terrain differ diff --git a/public/terrain/19/858505/353906.terrain b/public/terrain/19/858505/353906.terrain new file mode 100644 index 000000000..a48869bdf Binary files /dev/null and b/public/terrain/19/858505/353906.terrain differ diff --git a/public/terrain/19/858505/353907.terrain b/public/terrain/19/858505/353907.terrain new file mode 100644 index 000000000..675f6c66b Binary files /dev/null and b/public/terrain/19/858505/353907.terrain differ diff --git a/public/terrain/19/858505/353908.terrain b/public/terrain/19/858505/353908.terrain new file mode 100644 index 000000000..abf9c115b Binary files /dev/null and b/public/terrain/19/858505/353908.terrain differ diff --git a/public/terrain/19/858505/353909.terrain b/public/terrain/19/858505/353909.terrain new file mode 100644 index 000000000..878d35707 Binary files /dev/null and b/public/terrain/19/858505/353909.terrain differ diff --git a/public/terrain/19/858505/353910.terrain b/public/terrain/19/858505/353910.terrain new file mode 100644 index 000000000..d20846e0b Binary files /dev/null and b/public/terrain/19/858505/353910.terrain differ diff --git a/public/terrain/19/858505/353911.terrain b/public/terrain/19/858505/353911.terrain new file mode 100644 index 000000000..d8c0e0150 Binary files /dev/null and b/public/terrain/19/858505/353911.terrain differ diff --git a/public/terrain/19/858505/353912.terrain b/public/terrain/19/858505/353912.terrain new file mode 100644 index 000000000..053f0df85 Binary files /dev/null and b/public/terrain/19/858505/353912.terrain differ diff --git a/public/terrain/19/858505/353913.terrain b/public/terrain/19/858505/353913.terrain new file mode 100644 index 000000000..b99f525ca Binary files /dev/null and b/public/terrain/19/858505/353913.terrain differ diff --git a/public/terrain/19/858505/353914.terrain b/public/terrain/19/858505/353914.terrain new file mode 100644 index 000000000..92ddd4fe1 Binary files /dev/null and b/public/terrain/19/858505/353914.terrain differ diff --git a/public/terrain/19/858505/353915.terrain b/public/terrain/19/858505/353915.terrain new file mode 100644 index 000000000..1217085a3 Binary files /dev/null and b/public/terrain/19/858505/353915.terrain differ diff --git a/public/terrain/19/858505/353916.terrain b/public/terrain/19/858505/353916.terrain new file mode 100644 index 000000000..b1c597988 Binary files /dev/null and b/public/terrain/19/858505/353916.terrain differ diff --git a/public/terrain/19/858505/353917.terrain b/public/terrain/19/858505/353917.terrain new file mode 100644 index 000000000..ce45f6dd7 Binary files /dev/null and b/public/terrain/19/858505/353917.terrain differ diff --git a/public/terrain/19/858505/353918.terrain b/public/terrain/19/858505/353918.terrain new file mode 100644 index 000000000..bb695e090 Binary files /dev/null and b/public/terrain/19/858505/353918.terrain differ diff --git a/public/terrain/19/858505/353919.terrain b/public/terrain/19/858505/353919.terrain new file mode 100644 index 000000000..3774e1036 Binary files /dev/null and b/public/terrain/19/858505/353919.terrain differ diff --git a/public/terrain/19/858505/353920.terrain b/public/terrain/19/858505/353920.terrain new file mode 100644 index 000000000..ef01b2644 Binary files /dev/null and b/public/terrain/19/858505/353920.terrain differ diff --git a/public/terrain/19/858505/353921.terrain b/public/terrain/19/858505/353921.terrain new file mode 100644 index 000000000..13ea63294 Binary files /dev/null and b/public/terrain/19/858505/353921.terrain differ diff --git a/public/terrain/19/858505/353922.terrain b/public/terrain/19/858505/353922.terrain new file mode 100644 index 000000000..f1885c7ce Binary files /dev/null and b/public/terrain/19/858505/353922.terrain differ diff --git a/public/terrain/19/858505/353923.terrain b/public/terrain/19/858505/353923.terrain new file mode 100644 index 000000000..971a7dfda Binary files /dev/null and b/public/terrain/19/858505/353923.terrain differ diff --git a/public/terrain/19/858505/353924.terrain b/public/terrain/19/858505/353924.terrain new file mode 100644 index 000000000..25ab74970 Binary files /dev/null and b/public/terrain/19/858505/353924.terrain differ diff --git a/public/terrain/19/858505/353925.terrain b/public/terrain/19/858505/353925.terrain new file mode 100644 index 000000000..e45091347 Binary files /dev/null and b/public/terrain/19/858505/353925.terrain differ diff --git a/public/terrain/19/858505/353926.terrain b/public/terrain/19/858505/353926.terrain new file mode 100644 index 000000000..3df0c507c Binary files /dev/null and b/public/terrain/19/858505/353926.terrain differ diff --git a/public/terrain/19/858505/353927.terrain b/public/terrain/19/858505/353927.terrain new file mode 100644 index 000000000..59510131a Binary files /dev/null and b/public/terrain/19/858505/353927.terrain differ diff --git a/public/terrain/19/858505/353928.terrain b/public/terrain/19/858505/353928.terrain new file mode 100644 index 000000000..2c4976ef2 Binary files /dev/null and b/public/terrain/19/858505/353928.terrain differ diff --git a/public/terrain/19/858505/353929.terrain b/public/terrain/19/858505/353929.terrain new file mode 100644 index 000000000..ec7b523c9 Binary files /dev/null and b/public/terrain/19/858505/353929.terrain differ diff --git a/public/terrain/19/858505/353930.terrain b/public/terrain/19/858505/353930.terrain new file mode 100644 index 000000000..86b5b4037 Binary files /dev/null and b/public/terrain/19/858505/353930.terrain differ diff --git a/public/terrain/19/858505/353931.terrain b/public/terrain/19/858505/353931.terrain new file mode 100644 index 000000000..099ca52b4 Binary files /dev/null and b/public/terrain/19/858505/353931.terrain differ diff --git a/public/terrain/19/858505/353932.terrain b/public/terrain/19/858505/353932.terrain new file mode 100644 index 000000000..c55993a58 Binary files /dev/null and b/public/terrain/19/858505/353932.terrain differ diff --git a/public/terrain/19/858505/353933.terrain b/public/terrain/19/858505/353933.terrain new file mode 100644 index 000000000..da4e7dd38 Binary files /dev/null and b/public/terrain/19/858505/353933.terrain differ diff --git a/public/terrain/19/858505/353934.terrain b/public/terrain/19/858505/353934.terrain new file mode 100644 index 000000000..b820404fa Binary files /dev/null and b/public/terrain/19/858505/353934.terrain differ diff --git a/public/terrain/19/858505/353935.terrain b/public/terrain/19/858505/353935.terrain new file mode 100644 index 000000000..7c78f2293 Binary files /dev/null and b/public/terrain/19/858505/353935.terrain differ diff --git a/public/terrain/19/858505/353936.terrain b/public/terrain/19/858505/353936.terrain new file mode 100644 index 000000000..3f3a714ee Binary files /dev/null and b/public/terrain/19/858505/353936.terrain differ diff --git a/public/terrain/19/858505/353937.terrain b/public/terrain/19/858505/353937.terrain new file mode 100644 index 000000000..2685420c9 Binary files /dev/null and b/public/terrain/19/858505/353937.terrain differ diff --git a/public/terrain/19/858505/353938.terrain b/public/terrain/19/858505/353938.terrain new file mode 100644 index 000000000..e534b8467 Binary files /dev/null and b/public/terrain/19/858505/353938.terrain differ diff --git a/public/terrain/19/858505/353939.terrain b/public/terrain/19/858505/353939.terrain new file mode 100644 index 000000000..6bd7aedb3 Binary files /dev/null and b/public/terrain/19/858505/353939.terrain differ diff --git a/public/terrain/19/858505/353940.terrain b/public/terrain/19/858505/353940.terrain new file mode 100644 index 000000000..4c5b97513 Binary files /dev/null and b/public/terrain/19/858505/353940.terrain differ diff --git a/public/terrain/19/858505/353941.terrain b/public/terrain/19/858505/353941.terrain new file mode 100644 index 000000000..c507ffd48 Binary files /dev/null and b/public/terrain/19/858505/353941.terrain differ diff --git a/public/terrain/19/858505/353942.terrain b/public/terrain/19/858505/353942.terrain new file mode 100644 index 000000000..add4575a8 Binary files /dev/null and b/public/terrain/19/858505/353942.terrain differ diff --git a/public/terrain/19/858505/353943.terrain b/public/terrain/19/858505/353943.terrain new file mode 100644 index 000000000..0a689e0a7 Binary files /dev/null and b/public/terrain/19/858505/353943.terrain differ diff --git a/public/terrain/19/858505/353944.terrain b/public/terrain/19/858505/353944.terrain new file mode 100644 index 000000000..2421c30b6 Binary files /dev/null and b/public/terrain/19/858505/353944.terrain differ diff --git a/public/terrain/19/858505/353945.terrain b/public/terrain/19/858505/353945.terrain new file mode 100644 index 000000000..e9802c958 Binary files /dev/null and b/public/terrain/19/858505/353945.terrain differ diff --git a/public/terrain/19/858505/353946.terrain b/public/terrain/19/858505/353946.terrain new file mode 100644 index 000000000..b9248e519 Binary files /dev/null and b/public/terrain/19/858505/353946.terrain differ diff --git a/public/terrain/19/858505/353947.terrain b/public/terrain/19/858505/353947.terrain new file mode 100644 index 000000000..9e3845846 Binary files /dev/null and b/public/terrain/19/858505/353947.terrain differ diff --git a/public/terrain/19/858505/353948.terrain b/public/terrain/19/858505/353948.terrain new file mode 100644 index 000000000..7cac67384 Binary files /dev/null and b/public/terrain/19/858505/353948.terrain differ diff --git a/public/terrain/19/858505/353949.terrain b/public/terrain/19/858505/353949.terrain new file mode 100644 index 000000000..55b63ee84 Binary files /dev/null and b/public/terrain/19/858505/353949.terrain differ diff --git a/public/terrain/19/858505/353950.terrain b/public/terrain/19/858505/353950.terrain new file mode 100644 index 000000000..91e7db78d Binary files /dev/null and b/public/terrain/19/858505/353950.terrain differ diff --git a/public/terrain/19/858505/353951.terrain b/public/terrain/19/858505/353951.terrain new file mode 100644 index 000000000..62248f6e3 Binary files /dev/null and b/public/terrain/19/858505/353951.terrain differ diff --git a/public/terrain/19/858505/353952.terrain b/public/terrain/19/858505/353952.terrain new file mode 100644 index 000000000..dcd048824 Binary files /dev/null and b/public/terrain/19/858505/353952.terrain differ diff --git a/public/terrain/19/858505/353953.terrain b/public/terrain/19/858505/353953.terrain new file mode 100644 index 000000000..f0125fa07 Binary files /dev/null and b/public/terrain/19/858505/353953.terrain differ diff --git a/public/terrain/19/858505/353954.terrain b/public/terrain/19/858505/353954.terrain new file mode 100644 index 000000000..40fc3419e Binary files /dev/null and b/public/terrain/19/858505/353954.terrain differ diff --git a/public/terrain/19/858505/353955.terrain b/public/terrain/19/858505/353955.terrain new file mode 100644 index 000000000..f7e971e95 Binary files /dev/null and b/public/terrain/19/858505/353955.terrain differ diff --git a/public/terrain/19/858505/353956.terrain b/public/terrain/19/858505/353956.terrain new file mode 100644 index 000000000..f8e6b2f55 Binary files /dev/null and b/public/terrain/19/858505/353956.terrain differ diff --git a/public/terrain/19/858505/353957.terrain b/public/terrain/19/858505/353957.terrain new file mode 100644 index 000000000..5df1ad748 Binary files /dev/null and b/public/terrain/19/858505/353957.terrain differ diff --git a/public/terrain/19/858505/353958.terrain b/public/terrain/19/858505/353958.terrain new file mode 100644 index 000000000..345e9f135 Binary files /dev/null and b/public/terrain/19/858505/353958.terrain differ diff --git a/public/terrain/19/858505/353959.terrain b/public/terrain/19/858505/353959.terrain new file mode 100644 index 000000000..60d539792 Binary files /dev/null and b/public/terrain/19/858505/353959.terrain differ diff --git a/public/terrain/19/858505/353960.terrain b/public/terrain/19/858505/353960.terrain new file mode 100644 index 000000000..73a684f84 Binary files /dev/null and b/public/terrain/19/858505/353960.terrain differ diff --git a/public/terrain/19/858505/353961.terrain b/public/terrain/19/858505/353961.terrain new file mode 100644 index 000000000..25c30d61c Binary files /dev/null and b/public/terrain/19/858505/353961.terrain differ diff --git a/public/terrain/19/858505/353962.terrain b/public/terrain/19/858505/353962.terrain new file mode 100644 index 000000000..d2bf58089 Binary files /dev/null and b/public/terrain/19/858505/353962.terrain differ diff --git a/public/terrain/19/858505/353963.terrain b/public/terrain/19/858505/353963.terrain new file mode 100644 index 000000000..d85e00c3f Binary files /dev/null and b/public/terrain/19/858505/353963.terrain differ diff --git a/public/terrain/19/858505/353964.terrain b/public/terrain/19/858505/353964.terrain new file mode 100644 index 000000000..f28d3c3db Binary files /dev/null and b/public/terrain/19/858505/353964.terrain differ diff --git a/public/terrain/19/858505/353965.terrain b/public/terrain/19/858505/353965.terrain new file mode 100644 index 000000000..e68923d12 Binary files /dev/null and b/public/terrain/19/858505/353965.terrain differ diff --git a/public/terrain/19/858505/353966.terrain b/public/terrain/19/858505/353966.terrain new file mode 100644 index 000000000..22e1d36b8 Binary files /dev/null and b/public/terrain/19/858505/353966.terrain differ diff --git a/public/terrain/19/858505/353967.terrain b/public/terrain/19/858505/353967.terrain new file mode 100644 index 000000000..fb0d21507 Binary files /dev/null and b/public/terrain/19/858505/353967.terrain differ diff --git a/public/terrain/19/858505/353968.terrain b/public/terrain/19/858505/353968.terrain new file mode 100644 index 000000000..a00f2c8e5 Binary files /dev/null and b/public/terrain/19/858505/353968.terrain differ diff --git a/public/terrain/19/858505/353969.terrain b/public/terrain/19/858505/353969.terrain new file mode 100644 index 000000000..cce00a10b Binary files /dev/null and b/public/terrain/19/858505/353969.terrain differ diff --git a/public/terrain/19/858505/353970.terrain b/public/terrain/19/858505/353970.terrain new file mode 100644 index 000000000..9a7af3426 Binary files /dev/null and b/public/terrain/19/858505/353970.terrain differ diff --git a/public/terrain/19/858505/353971.terrain b/public/terrain/19/858505/353971.terrain new file mode 100644 index 000000000..b4ade62ef Binary files /dev/null and b/public/terrain/19/858505/353971.terrain differ diff --git a/public/terrain/19/858505/353972.terrain b/public/terrain/19/858505/353972.terrain new file mode 100644 index 000000000..bb0ed71b9 Binary files /dev/null and b/public/terrain/19/858505/353972.terrain differ diff --git a/public/terrain/19/858505/353973.terrain b/public/terrain/19/858505/353973.terrain new file mode 100644 index 000000000..ac6da92ea Binary files /dev/null and b/public/terrain/19/858505/353973.terrain differ diff --git a/public/terrain/19/858505/353974.terrain b/public/terrain/19/858505/353974.terrain new file mode 100644 index 000000000..0e6bf4188 Binary files /dev/null and b/public/terrain/19/858505/353974.terrain differ diff --git a/public/terrain/19/858505/353975.terrain b/public/terrain/19/858505/353975.terrain new file mode 100644 index 000000000..a9fc4f18b Binary files /dev/null and b/public/terrain/19/858505/353975.terrain differ diff --git a/public/terrain/19/858505/353976.terrain b/public/terrain/19/858505/353976.terrain new file mode 100644 index 000000000..7d9034101 Binary files /dev/null and b/public/terrain/19/858505/353976.terrain differ diff --git a/public/terrain/19/858505/353977.terrain b/public/terrain/19/858505/353977.terrain new file mode 100644 index 000000000..a133e4b7f Binary files /dev/null and b/public/terrain/19/858505/353977.terrain differ diff --git a/public/terrain/19/858505/353978.terrain b/public/terrain/19/858505/353978.terrain new file mode 100644 index 000000000..e5b004281 Binary files /dev/null and b/public/terrain/19/858505/353978.terrain differ diff --git a/public/terrain/19/858505/353979.terrain b/public/terrain/19/858505/353979.terrain new file mode 100644 index 000000000..6e7c96adb Binary files /dev/null and b/public/terrain/19/858505/353979.terrain differ diff --git a/public/terrain/19/858505/353980.terrain b/public/terrain/19/858505/353980.terrain new file mode 100644 index 000000000..23a83d267 Binary files /dev/null and b/public/terrain/19/858505/353980.terrain differ diff --git a/public/terrain/19/858505/353981.terrain b/public/terrain/19/858505/353981.terrain new file mode 100644 index 000000000..bd1feafc6 Binary files /dev/null and b/public/terrain/19/858505/353981.terrain differ diff --git a/public/terrain/19/858505/353982.terrain b/public/terrain/19/858505/353982.terrain new file mode 100644 index 000000000..1704a5641 Binary files /dev/null and b/public/terrain/19/858505/353982.terrain differ diff --git a/public/terrain/19/858505/353983.terrain b/public/terrain/19/858505/353983.terrain new file mode 100644 index 000000000..ae7a2421d Binary files /dev/null and b/public/terrain/19/858505/353983.terrain differ diff --git a/public/terrain/19/858505/353984.terrain b/public/terrain/19/858505/353984.terrain new file mode 100644 index 000000000..a0cc39c3e Binary files /dev/null and b/public/terrain/19/858505/353984.terrain differ diff --git a/public/terrain/19/858505/353985.terrain b/public/terrain/19/858505/353985.terrain new file mode 100644 index 000000000..d1cbc60aa Binary files /dev/null and b/public/terrain/19/858505/353985.terrain differ diff --git a/public/terrain/19/858505/353986.terrain b/public/terrain/19/858505/353986.terrain new file mode 100644 index 000000000..6c77e0f3d Binary files /dev/null and b/public/terrain/19/858505/353986.terrain differ diff --git a/public/terrain/19/858505/353987.terrain b/public/terrain/19/858505/353987.terrain new file mode 100644 index 000000000..8a1da5202 Binary files /dev/null and b/public/terrain/19/858505/353987.terrain differ diff --git a/public/terrain/19/858505/353988.terrain b/public/terrain/19/858505/353988.terrain new file mode 100644 index 000000000..9fd355d3c Binary files /dev/null and b/public/terrain/19/858505/353988.terrain differ diff --git a/public/terrain/19/858505/353989.terrain b/public/terrain/19/858505/353989.terrain new file mode 100644 index 000000000..eb6ba781e Binary files /dev/null and b/public/terrain/19/858505/353989.terrain differ diff --git a/public/terrain/19/858505/353990.terrain b/public/terrain/19/858505/353990.terrain new file mode 100644 index 000000000..d42781dd9 Binary files /dev/null and b/public/terrain/19/858505/353990.terrain differ diff --git a/public/terrain/19/858505/353991.terrain b/public/terrain/19/858505/353991.terrain new file mode 100644 index 000000000..5b99eef97 Binary files /dev/null and b/public/terrain/19/858505/353991.terrain differ diff --git a/public/terrain/19/858505/353992.terrain b/public/terrain/19/858505/353992.terrain new file mode 100644 index 000000000..2b143a9f0 Binary files /dev/null and b/public/terrain/19/858505/353992.terrain differ diff --git a/public/terrain/19/858505/353993.terrain b/public/terrain/19/858505/353993.terrain new file mode 100644 index 000000000..c902f563b Binary files /dev/null and b/public/terrain/19/858505/353993.terrain differ diff --git a/public/terrain/19/858505/353994.terrain b/public/terrain/19/858505/353994.terrain new file mode 100644 index 000000000..718fd9838 Binary files /dev/null and b/public/terrain/19/858505/353994.terrain differ diff --git a/public/terrain/19/858505/353995.terrain b/public/terrain/19/858505/353995.terrain new file mode 100644 index 000000000..18f1c993e Binary files /dev/null and b/public/terrain/19/858505/353995.terrain differ diff --git a/public/terrain/19/858505/353996.terrain b/public/terrain/19/858505/353996.terrain new file mode 100644 index 000000000..76c0b5ea2 Binary files /dev/null and b/public/terrain/19/858505/353996.terrain differ diff --git a/public/terrain/19/858505/353997.terrain b/public/terrain/19/858505/353997.terrain new file mode 100644 index 000000000..c867a4906 Binary files /dev/null and b/public/terrain/19/858505/353997.terrain differ diff --git a/public/terrain/19/858505/353998.terrain b/public/terrain/19/858505/353998.terrain new file mode 100644 index 000000000..4b075f4d7 Binary files /dev/null and b/public/terrain/19/858505/353998.terrain differ diff --git a/public/terrain/19/858505/353999.terrain b/public/terrain/19/858505/353999.terrain new file mode 100644 index 000000000..bfa60f718 Binary files /dev/null and b/public/terrain/19/858505/353999.terrain differ diff --git a/public/terrain/19/858505/354000.terrain b/public/terrain/19/858505/354000.terrain new file mode 100644 index 000000000..4535ea56a Binary files /dev/null and b/public/terrain/19/858505/354000.terrain differ diff --git a/public/terrain/19/858505/354001.terrain b/public/terrain/19/858505/354001.terrain new file mode 100644 index 000000000..b6b32f0f3 Binary files /dev/null and b/public/terrain/19/858505/354001.terrain differ diff --git a/public/terrain/19/858505/354002.terrain b/public/terrain/19/858505/354002.terrain new file mode 100644 index 000000000..1328515fc Binary files /dev/null and b/public/terrain/19/858505/354002.terrain differ diff --git a/public/terrain/19/858505/354003.terrain b/public/terrain/19/858505/354003.terrain new file mode 100644 index 000000000..eef749abe Binary files /dev/null and b/public/terrain/19/858505/354003.terrain differ diff --git a/public/terrain/19/858505/354004.terrain b/public/terrain/19/858505/354004.terrain new file mode 100644 index 000000000..75ab38240 Binary files /dev/null and b/public/terrain/19/858505/354004.terrain differ diff --git a/public/terrain/19/858505/354005.terrain b/public/terrain/19/858505/354005.terrain new file mode 100644 index 000000000..501ce4811 Binary files /dev/null and b/public/terrain/19/858505/354005.terrain differ diff --git a/public/terrain/19/858505/354006.terrain b/public/terrain/19/858505/354006.terrain new file mode 100644 index 000000000..e4aaf7837 Binary files /dev/null and b/public/terrain/19/858505/354006.terrain differ diff --git a/public/terrain/19/858505/354007.terrain b/public/terrain/19/858505/354007.terrain new file mode 100644 index 000000000..aec8b2f07 Binary files /dev/null and b/public/terrain/19/858505/354007.terrain differ diff --git a/public/terrain/19/858505/354008.terrain b/public/terrain/19/858505/354008.terrain new file mode 100644 index 000000000..33e35bbb8 Binary files /dev/null and b/public/terrain/19/858505/354008.terrain differ diff --git a/public/terrain/19/858505/354009.terrain b/public/terrain/19/858505/354009.terrain new file mode 100644 index 000000000..6c6537ae5 Binary files /dev/null and b/public/terrain/19/858505/354009.terrain differ diff --git a/public/terrain/19/858505/354010.terrain b/public/terrain/19/858505/354010.terrain new file mode 100644 index 000000000..cd0362e60 Binary files /dev/null and b/public/terrain/19/858505/354010.terrain differ diff --git a/public/terrain/19/858505/354011.terrain b/public/terrain/19/858505/354011.terrain new file mode 100644 index 000000000..9feafa65f Binary files /dev/null and b/public/terrain/19/858505/354011.terrain differ diff --git a/public/terrain/19/858505/354012.terrain b/public/terrain/19/858505/354012.terrain new file mode 100644 index 000000000..1b73193a3 Binary files /dev/null and b/public/terrain/19/858505/354012.terrain differ diff --git a/public/terrain/19/858505/354013.terrain b/public/terrain/19/858505/354013.terrain new file mode 100644 index 000000000..83e723ede Binary files /dev/null and b/public/terrain/19/858505/354013.terrain differ diff --git a/public/terrain/19/858505/354014.terrain b/public/terrain/19/858505/354014.terrain new file mode 100644 index 000000000..9b54e51f9 Binary files /dev/null and b/public/terrain/19/858505/354014.terrain differ diff --git a/public/terrain/19/858505/354015.terrain b/public/terrain/19/858505/354015.terrain new file mode 100644 index 000000000..da7bf671e Binary files /dev/null and b/public/terrain/19/858505/354015.terrain differ diff --git a/public/terrain/19/858505/354016.terrain b/public/terrain/19/858505/354016.terrain new file mode 100644 index 000000000..9ee608c1f Binary files /dev/null and b/public/terrain/19/858505/354016.terrain differ diff --git a/public/terrain/19/858505/354017.terrain b/public/terrain/19/858505/354017.terrain new file mode 100644 index 000000000..76e4381d6 Binary files /dev/null and b/public/terrain/19/858505/354017.terrain differ diff --git a/public/terrain/19/858505/354018.terrain b/public/terrain/19/858505/354018.terrain new file mode 100644 index 000000000..b62efbadd Binary files /dev/null and b/public/terrain/19/858505/354018.terrain differ diff --git a/public/terrain/19/858505/354019.terrain b/public/terrain/19/858505/354019.terrain new file mode 100644 index 000000000..4039af7de Binary files /dev/null and b/public/terrain/19/858505/354019.terrain differ diff --git a/public/terrain/19/858505/354020.terrain b/public/terrain/19/858505/354020.terrain new file mode 100644 index 000000000..bd642c092 Binary files /dev/null and b/public/terrain/19/858505/354020.terrain differ diff --git a/public/terrain/19/858505/354021.terrain b/public/terrain/19/858505/354021.terrain new file mode 100644 index 000000000..e8850001a Binary files /dev/null and b/public/terrain/19/858505/354021.terrain differ diff --git a/public/terrain/19/858505/354022.terrain b/public/terrain/19/858505/354022.terrain new file mode 100644 index 000000000..46da65d1b Binary files /dev/null and b/public/terrain/19/858505/354022.terrain differ diff --git a/public/terrain/19/858505/354023.terrain b/public/terrain/19/858505/354023.terrain new file mode 100644 index 000000000..7776bdc96 Binary files /dev/null and b/public/terrain/19/858505/354023.terrain differ diff --git a/public/terrain/19/858505/354024.terrain b/public/terrain/19/858505/354024.terrain new file mode 100644 index 000000000..93951c840 Binary files /dev/null and b/public/terrain/19/858505/354024.terrain differ diff --git a/public/terrain/19/858505/354025.terrain b/public/terrain/19/858505/354025.terrain new file mode 100644 index 000000000..e98e7f571 Binary files /dev/null and b/public/terrain/19/858505/354025.terrain differ diff --git a/public/terrain/19/858505/354026.terrain b/public/terrain/19/858505/354026.terrain new file mode 100644 index 000000000..1cbd83d4d Binary files /dev/null and b/public/terrain/19/858505/354026.terrain differ diff --git a/public/terrain/19/858505/354027.terrain b/public/terrain/19/858505/354027.terrain new file mode 100644 index 000000000..b42fac804 Binary files /dev/null and b/public/terrain/19/858505/354027.terrain differ diff --git a/public/terrain/19/858505/354028.terrain b/public/terrain/19/858505/354028.terrain new file mode 100644 index 000000000..25ad46de4 Binary files /dev/null and b/public/terrain/19/858505/354028.terrain differ diff --git a/public/terrain/19/858505/354029.terrain b/public/terrain/19/858505/354029.terrain new file mode 100644 index 000000000..2fbdc3f97 Binary files /dev/null and b/public/terrain/19/858505/354029.terrain differ diff --git a/public/terrain/19/858505/354030.terrain b/public/terrain/19/858505/354030.terrain new file mode 100644 index 000000000..eb7604fa8 Binary files /dev/null and b/public/terrain/19/858505/354030.terrain differ diff --git a/public/terrain/19/858505/354031.terrain b/public/terrain/19/858505/354031.terrain new file mode 100644 index 000000000..8a064a3b9 Binary files /dev/null and b/public/terrain/19/858505/354031.terrain differ diff --git a/public/terrain/19/858505/354032.terrain b/public/terrain/19/858505/354032.terrain new file mode 100644 index 000000000..e3e6625ae Binary files /dev/null and b/public/terrain/19/858505/354032.terrain differ diff --git a/public/terrain/19/858505/354033.terrain b/public/terrain/19/858505/354033.terrain new file mode 100644 index 000000000..bee4d9eac Binary files /dev/null and b/public/terrain/19/858505/354033.terrain differ diff --git a/public/terrain/19/858505/354034.terrain b/public/terrain/19/858505/354034.terrain new file mode 100644 index 000000000..2061056e5 Binary files /dev/null and b/public/terrain/19/858505/354034.terrain differ diff --git a/public/terrain/19/858505/354035.terrain b/public/terrain/19/858505/354035.terrain new file mode 100644 index 000000000..3dc448c31 Binary files /dev/null and b/public/terrain/19/858505/354035.terrain differ diff --git a/public/terrain/19/858505/354036.terrain b/public/terrain/19/858505/354036.terrain new file mode 100644 index 000000000..77120f62c Binary files /dev/null and b/public/terrain/19/858505/354036.terrain differ diff --git a/public/terrain/19/858505/354037.terrain b/public/terrain/19/858505/354037.terrain new file mode 100644 index 000000000..0e30def00 Binary files /dev/null and b/public/terrain/19/858505/354037.terrain differ diff --git a/public/terrain/19/858505/354038.terrain b/public/terrain/19/858505/354038.terrain new file mode 100644 index 000000000..40f4d514f Binary files /dev/null and b/public/terrain/19/858505/354038.terrain differ diff --git a/public/terrain/19/858505/354039.terrain b/public/terrain/19/858505/354039.terrain new file mode 100644 index 000000000..80dbcbad1 Binary files /dev/null and b/public/terrain/19/858505/354039.terrain differ diff --git a/public/terrain/19/858505/354040.terrain b/public/terrain/19/858505/354040.terrain new file mode 100644 index 000000000..44e5ed8ad Binary files /dev/null and b/public/terrain/19/858505/354040.terrain differ diff --git a/public/terrain/19/858505/354041.terrain b/public/terrain/19/858505/354041.terrain new file mode 100644 index 000000000..7dda53856 Binary files /dev/null and b/public/terrain/19/858505/354041.terrain differ diff --git a/public/terrain/19/858505/354042.terrain b/public/terrain/19/858505/354042.terrain new file mode 100644 index 000000000..a55857a0a Binary files /dev/null and b/public/terrain/19/858505/354042.terrain differ diff --git a/public/terrain/19/858505/354043.terrain b/public/terrain/19/858505/354043.terrain new file mode 100644 index 000000000..7210c0aff Binary files /dev/null and b/public/terrain/19/858505/354043.terrain differ diff --git a/public/terrain/19/858505/354044.terrain b/public/terrain/19/858505/354044.terrain new file mode 100644 index 000000000..059dcc76e Binary files /dev/null and b/public/terrain/19/858505/354044.terrain differ diff --git a/public/terrain/19/858505/354045.terrain b/public/terrain/19/858505/354045.terrain new file mode 100644 index 000000000..55aee2513 Binary files /dev/null and b/public/terrain/19/858505/354045.terrain differ diff --git a/public/terrain/19/858505/354046.terrain b/public/terrain/19/858505/354046.terrain new file mode 100644 index 000000000..df2d3175e Binary files /dev/null and b/public/terrain/19/858505/354046.terrain differ diff --git a/public/terrain/19/858505/354047.terrain b/public/terrain/19/858505/354047.terrain new file mode 100644 index 000000000..9e1aa6599 Binary files /dev/null and b/public/terrain/19/858505/354047.terrain differ diff --git a/public/terrain/19/858505/354048.terrain b/public/terrain/19/858505/354048.terrain new file mode 100644 index 000000000..77a74b781 Binary files /dev/null and b/public/terrain/19/858505/354048.terrain differ diff --git a/public/terrain/19/858505/354049.terrain b/public/terrain/19/858505/354049.terrain new file mode 100644 index 000000000..af375fd3d Binary files /dev/null and b/public/terrain/19/858505/354049.terrain differ diff --git a/public/terrain/19/858505/354050.terrain b/public/terrain/19/858505/354050.terrain new file mode 100644 index 000000000..dab208455 Binary files /dev/null and b/public/terrain/19/858505/354050.terrain differ diff --git a/public/terrain/19/858505/354051.terrain b/public/terrain/19/858505/354051.terrain new file mode 100644 index 000000000..12e124e5a Binary files /dev/null and b/public/terrain/19/858505/354051.terrain differ diff --git a/public/terrain/19/858505/354052.terrain b/public/terrain/19/858505/354052.terrain new file mode 100644 index 000000000..c8b14ee0c Binary files /dev/null and b/public/terrain/19/858505/354052.terrain differ diff --git a/public/terrain/19/858505/354053.terrain b/public/terrain/19/858505/354053.terrain new file mode 100644 index 000000000..a4fd9be12 Binary files /dev/null and b/public/terrain/19/858505/354053.terrain differ diff --git a/public/terrain/19/858505/354054.terrain b/public/terrain/19/858505/354054.terrain new file mode 100644 index 000000000..c52188842 Binary files /dev/null and b/public/terrain/19/858505/354054.terrain differ diff --git a/public/terrain/19/858505/354055.terrain b/public/terrain/19/858505/354055.terrain new file mode 100644 index 000000000..bdd380696 Binary files /dev/null and b/public/terrain/19/858505/354055.terrain differ diff --git a/public/terrain/19/858505/354056.terrain b/public/terrain/19/858505/354056.terrain new file mode 100644 index 000000000..7442ee628 Binary files /dev/null and b/public/terrain/19/858505/354056.terrain differ diff --git a/public/terrain/19/858505/354057.terrain b/public/terrain/19/858505/354057.terrain new file mode 100644 index 000000000..517a5510a Binary files /dev/null and b/public/terrain/19/858505/354057.terrain differ diff --git a/public/terrain/19/858505/354058.terrain b/public/terrain/19/858505/354058.terrain new file mode 100644 index 000000000..094efb4f5 Binary files /dev/null and b/public/terrain/19/858505/354058.terrain differ diff --git a/public/terrain/19/858505/354059.terrain b/public/terrain/19/858505/354059.terrain new file mode 100644 index 000000000..0b50d3302 Binary files /dev/null and b/public/terrain/19/858505/354059.terrain differ diff --git a/public/terrain/19/858506/353743.terrain b/public/terrain/19/858506/353743.terrain new file mode 100644 index 000000000..0383ac756 Binary files /dev/null and b/public/terrain/19/858506/353743.terrain differ diff --git a/public/terrain/19/858506/353744.terrain b/public/terrain/19/858506/353744.terrain new file mode 100644 index 000000000..cf153e697 Binary files /dev/null and b/public/terrain/19/858506/353744.terrain differ diff --git a/public/terrain/19/858506/353745.terrain b/public/terrain/19/858506/353745.terrain new file mode 100644 index 000000000..11649fd84 Binary files /dev/null and b/public/terrain/19/858506/353745.terrain differ diff --git a/public/terrain/19/858506/353746.terrain b/public/terrain/19/858506/353746.terrain new file mode 100644 index 000000000..cb489c2a5 Binary files /dev/null and b/public/terrain/19/858506/353746.terrain differ diff --git a/public/terrain/19/858506/353747.terrain b/public/terrain/19/858506/353747.terrain new file mode 100644 index 000000000..8b12c554a Binary files /dev/null and b/public/terrain/19/858506/353747.terrain differ diff --git a/public/terrain/19/858506/353748.terrain b/public/terrain/19/858506/353748.terrain new file mode 100644 index 000000000..5f4ba1278 Binary files /dev/null and b/public/terrain/19/858506/353748.terrain differ diff --git a/public/terrain/19/858506/353749.terrain b/public/terrain/19/858506/353749.terrain new file mode 100644 index 000000000..85e1497fe Binary files /dev/null and b/public/terrain/19/858506/353749.terrain differ diff --git a/public/terrain/19/858506/353750.terrain b/public/terrain/19/858506/353750.terrain new file mode 100644 index 000000000..422d10833 Binary files /dev/null and b/public/terrain/19/858506/353750.terrain differ diff --git a/public/terrain/19/858506/353751.terrain b/public/terrain/19/858506/353751.terrain new file mode 100644 index 000000000..88a90628b Binary files /dev/null and b/public/terrain/19/858506/353751.terrain differ diff --git a/public/terrain/19/858506/353752.terrain b/public/terrain/19/858506/353752.terrain new file mode 100644 index 000000000..a030a3e9a Binary files /dev/null and b/public/terrain/19/858506/353752.terrain differ diff --git a/public/terrain/19/858506/353753.terrain b/public/terrain/19/858506/353753.terrain new file mode 100644 index 000000000..7877db70c Binary files /dev/null and b/public/terrain/19/858506/353753.terrain differ diff --git a/public/terrain/19/858506/353754.terrain b/public/terrain/19/858506/353754.terrain new file mode 100644 index 000000000..6459fffed Binary files /dev/null and b/public/terrain/19/858506/353754.terrain differ diff --git a/public/terrain/19/858506/353755.terrain b/public/terrain/19/858506/353755.terrain new file mode 100644 index 000000000..b91476ab7 Binary files /dev/null and b/public/terrain/19/858506/353755.terrain differ diff --git a/public/terrain/19/858506/353756.terrain b/public/terrain/19/858506/353756.terrain new file mode 100644 index 000000000..0d4fb33d8 Binary files /dev/null and b/public/terrain/19/858506/353756.terrain differ diff --git a/public/terrain/19/858506/353757.terrain b/public/terrain/19/858506/353757.terrain new file mode 100644 index 000000000..97f0929d3 Binary files /dev/null and b/public/terrain/19/858506/353757.terrain differ diff --git a/public/terrain/19/858506/353758.terrain b/public/terrain/19/858506/353758.terrain new file mode 100644 index 000000000..568affdf5 Binary files /dev/null and b/public/terrain/19/858506/353758.terrain differ diff --git a/public/terrain/19/858506/353759.terrain b/public/terrain/19/858506/353759.terrain new file mode 100644 index 000000000..ab678a96e Binary files /dev/null and b/public/terrain/19/858506/353759.terrain differ diff --git a/public/terrain/19/858506/353760.terrain b/public/terrain/19/858506/353760.terrain new file mode 100644 index 000000000..76233078e Binary files /dev/null and b/public/terrain/19/858506/353760.terrain differ diff --git a/public/terrain/19/858506/353761.terrain b/public/terrain/19/858506/353761.terrain new file mode 100644 index 000000000..7778eb969 Binary files /dev/null and b/public/terrain/19/858506/353761.terrain differ diff --git a/public/terrain/19/858506/353762.terrain b/public/terrain/19/858506/353762.terrain new file mode 100644 index 000000000..2301eb122 Binary files /dev/null and b/public/terrain/19/858506/353762.terrain differ diff --git a/public/terrain/19/858506/353763.terrain b/public/terrain/19/858506/353763.terrain new file mode 100644 index 000000000..a0bd8c992 Binary files /dev/null and b/public/terrain/19/858506/353763.terrain differ diff --git a/public/terrain/19/858506/353764.terrain b/public/terrain/19/858506/353764.terrain new file mode 100644 index 000000000..2ca282293 Binary files /dev/null and b/public/terrain/19/858506/353764.terrain differ diff --git a/public/terrain/19/858506/353765.terrain b/public/terrain/19/858506/353765.terrain new file mode 100644 index 000000000..5d84354e7 Binary files /dev/null and b/public/terrain/19/858506/353765.terrain differ diff --git a/public/terrain/19/858506/353766.terrain b/public/terrain/19/858506/353766.terrain new file mode 100644 index 000000000..a8745f717 Binary files /dev/null and b/public/terrain/19/858506/353766.terrain differ diff --git a/public/terrain/19/858506/353767.terrain b/public/terrain/19/858506/353767.terrain new file mode 100644 index 000000000..6a594b09e Binary files /dev/null and b/public/terrain/19/858506/353767.terrain differ diff --git a/public/terrain/19/858506/353768.terrain b/public/terrain/19/858506/353768.terrain new file mode 100644 index 000000000..580646171 Binary files /dev/null and b/public/terrain/19/858506/353768.terrain differ diff --git a/public/terrain/19/858506/353769.terrain b/public/terrain/19/858506/353769.terrain new file mode 100644 index 000000000..8123b5931 Binary files /dev/null and b/public/terrain/19/858506/353769.terrain differ diff --git a/public/terrain/19/858506/353770.terrain b/public/terrain/19/858506/353770.terrain new file mode 100644 index 000000000..acdfdd624 Binary files /dev/null and b/public/terrain/19/858506/353770.terrain differ diff --git a/public/terrain/19/858506/353771.terrain b/public/terrain/19/858506/353771.terrain new file mode 100644 index 000000000..335d3d44f Binary files /dev/null and b/public/terrain/19/858506/353771.terrain differ diff --git a/public/terrain/19/858506/353772.terrain b/public/terrain/19/858506/353772.terrain new file mode 100644 index 000000000..ff97aacb9 Binary files /dev/null and b/public/terrain/19/858506/353772.terrain differ diff --git a/public/terrain/19/858506/353773.terrain b/public/terrain/19/858506/353773.terrain new file mode 100644 index 000000000..63c18311b Binary files /dev/null and b/public/terrain/19/858506/353773.terrain differ diff --git a/public/terrain/19/858506/353774.terrain b/public/terrain/19/858506/353774.terrain new file mode 100644 index 000000000..28aebf005 Binary files /dev/null and b/public/terrain/19/858506/353774.terrain differ diff --git a/public/terrain/19/858506/353775.terrain b/public/terrain/19/858506/353775.terrain new file mode 100644 index 000000000..999a87a67 Binary files /dev/null and b/public/terrain/19/858506/353775.terrain differ diff --git a/public/terrain/19/858506/353776.terrain b/public/terrain/19/858506/353776.terrain new file mode 100644 index 000000000..187efd86d Binary files /dev/null and b/public/terrain/19/858506/353776.terrain differ diff --git a/public/terrain/19/858506/353777.terrain b/public/terrain/19/858506/353777.terrain new file mode 100644 index 000000000..7ed4de0a7 Binary files /dev/null and b/public/terrain/19/858506/353777.terrain differ diff --git a/public/terrain/19/858506/353778.terrain b/public/terrain/19/858506/353778.terrain new file mode 100644 index 000000000..95460485c Binary files /dev/null and b/public/terrain/19/858506/353778.terrain differ diff --git a/public/terrain/19/858506/353779.terrain b/public/terrain/19/858506/353779.terrain new file mode 100644 index 000000000..7fc365581 Binary files /dev/null and b/public/terrain/19/858506/353779.terrain differ diff --git a/public/terrain/19/858506/353780.terrain b/public/terrain/19/858506/353780.terrain new file mode 100644 index 000000000..404389f34 Binary files /dev/null and b/public/terrain/19/858506/353780.terrain differ diff --git a/public/terrain/19/858506/353781.terrain b/public/terrain/19/858506/353781.terrain new file mode 100644 index 000000000..ebccc990d Binary files /dev/null and b/public/terrain/19/858506/353781.terrain differ diff --git a/public/terrain/19/858506/353782.terrain b/public/terrain/19/858506/353782.terrain new file mode 100644 index 000000000..0376afd62 Binary files /dev/null and b/public/terrain/19/858506/353782.terrain differ diff --git a/public/terrain/19/858506/353783.terrain b/public/terrain/19/858506/353783.terrain new file mode 100644 index 000000000..dcde8d7b8 Binary files /dev/null and b/public/terrain/19/858506/353783.terrain differ diff --git a/public/terrain/19/858506/353784.terrain b/public/terrain/19/858506/353784.terrain new file mode 100644 index 000000000..115024950 Binary files /dev/null and b/public/terrain/19/858506/353784.terrain differ diff --git a/public/terrain/19/858506/353785.terrain b/public/terrain/19/858506/353785.terrain new file mode 100644 index 000000000..b86d88af5 Binary files /dev/null and b/public/terrain/19/858506/353785.terrain differ diff --git a/public/terrain/19/858506/353786.terrain b/public/terrain/19/858506/353786.terrain new file mode 100644 index 000000000..f17c278ef Binary files /dev/null and b/public/terrain/19/858506/353786.terrain differ diff --git a/public/terrain/19/858506/353787.terrain b/public/terrain/19/858506/353787.terrain new file mode 100644 index 000000000..8e0bb41a6 Binary files /dev/null and b/public/terrain/19/858506/353787.terrain differ diff --git a/public/terrain/19/858506/353788.terrain b/public/terrain/19/858506/353788.terrain new file mode 100644 index 000000000..994260147 Binary files /dev/null and b/public/terrain/19/858506/353788.terrain differ diff --git a/public/terrain/19/858506/353789.terrain b/public/terrain/19/858506/353789.terrain new file mode 100644 index 000000000..f947eb02e Binary files /dev/null and b/public/terrain/19/858506/353789.terrain differ diff --git a/public/terrain/19/858506/353790.terrain b/public/terrain/19/858506/353790.terrain new file mode 100644 index 000000000..60936fc99 Binary files /dev/null and b/public/terrain/19/858506/353790.terrain differ diff --git a/public/terrain/19/858506/353791.terrain b/public/terrain/19/858506/353791.terrain new file mode 100644 index 000000000..a502fa37d Binary files /dev/null and b/public/terrain/19/858506/353791.terrain differ diff --git a/public/terrain/19/858506/353792.terrain b/public/terrain/19/858506/353792.terrain new file mode 100644 index 000000000..32e066e09 Binary files /dev/null and b/public/terrain/19/858506/353792.terrain differ diff --git a/public/terrain/19/858506/353793.terrain b/public/terrain/19/858506/353793.terrain new file mode 100644 index 000000000..f0fc19a6c Binary files /dev/null and b/public/terrain/19/858506/353793.terrain differ diff --git a/public/terrain/19/858506/353794.terrain b/public/terrain/19/858506/353794.terrain new file mode 100644 index 000000000..7a17507a3 Binary files /dev/null and b/public/terrain/19/858506/353794.terrain differ diff --git a/public/terrain/19/858506/353795.terrain b/public/terrain/19/858506/353795.terrain new file mode 100644 index 000000000..baffee2fe Binary files /dev/null and b/public/terrain/19/858506/353795.terrain differ diff --git a/public/terrain/19/858506/353796.terrain b/public/terrain/19/858506/353796.terrain new file mode 100644 index 000000000..d76f89ee4 Binary files /dev/null and b/public/terrain/19/858506/353796.terrain differ diff --git a/public/terrain/19/858506/353797.terrain b/public/terrain/19/858506/353797.terrain new file mode 100644 index 000000000..2630046ba Binary files /dev/null and b/public/terrain/19/858506/353797.terrain differ diff --git a/public/terrain/19/858506/353798.terrain b/public/terrain/19/858506/353798.terrain new file mode 100644 index 000000000..d9198d782 Binary files /dev/null and b/public/terrain/19/858506/353798.terrain differ diff --git a/public/terrain/19/858506/353799.terrain b/public/terrain/19/858506/353799.terrain new file mode 100644 index 000000000..4144d1fa2 Binary files /dev/null and b/public/terrain/19/858506/353799.terrain differ diff --git a/public/terrain/19/858506/353800.terrain b/public/terrain/19/858506/353800.terrain new file mode 100644 index 000000000..cff8a3e5c Binary files /dev/null and b/public/terrain/19/858506/353800.terrain differ diff --git a/public/terrain/19/858506/353801.terrain b/public/terrain/19/858506/353801.terrain new file mode 100644 index 000000000..69c591f35 Binary files /dev/null and b/public/terrain/19/858506/353801.terrain differ diff --git a/public/terrain/19/858506/353802.terrain b/public/terrain/19/858506/353802.terrain new file mode 100644 index 000000000..a22acd82b Binary files /dev/null and b/public/terrain/19/858506/353802.terrain differ diff --git a/public/terrain/19/858506/353803.terrain b/public/terrain/19/858506/353803.terrain new file mode 100644 index 000000000..15b4d80e6 Binary files /dev/null and b/public/terrain/19/858506/353803.terrain differ diff --git a/public/terrain/19/858506/353804.terrain b/public/terrain/19/858506/353804.terrain new file mode 100644 index 000000000..4d37ab99d Binary files /dev/null and b/public/terrain/19/858506/353804.terrain differ diff --git a/public/terrain/19/858506/353805.terrain b/public/terrain/19/858506/353805.terrain new file mode 100644 index 000000000..93905c256 Binary files /dev/null and b/public/terrain/19/858506/353805.terrain differ diff --git a/public/terrain/19/858506/353806.terrain b/public/terrain/19/858506/353806.terrain new file mode 100644 index 000000000..950d3caa8 Binary files /dev/null and b/public/terrain/19/858506/353806.terrain differ diff --git a/public/terrain/19/858506/353807.terrain b/public/terrain/19/858506/353807.terrain new file mode 100644 index 000000000..b8ef75a55 Binary files /dev/null and b/public/terrain/19/858506/353807.terrain differ diff --git a/public/terrain/19/858506/353808.terrain b/public/terrain/19/858506/353808.terrain new file mode 100644 index 000000000..589b2d8ae Binary files /dev/null and b/public/terrain/19/858506/353808.terrain differ diff --git a/public/terrain/19/858506/353809.terrain b/public/terrain/19/858506/353809.terrain new file mode 100644 index 000000000..a7063ec5b Binary files /dev/null and b/public/terrain/19/858506/353809.terrain differ diff --git a/public/terrain/19/858506/353810.terrain b/public/terrain/19/858506/353810.terrain new file mode 100644 index 000000000..888399295 Binary files /dev/null and b/public/terrain/19/858506/353810.terrain differ diff --git a/public/terrain/19/858506/353811.terrain b/public/terrain/19/858506/353811.terrain new file mode 100644 index 000000000..7ac48056f Binary files /dev/null and b/public/terrain/19/858506/353811.terrain differ diff --git a/public/terrain/19/858506/353812.terrain b/public/terrain/19/858506/353812.terrain new file mode 100644 index 000000000..0a0f00838 Binary files /dev/null and b/public/terrain/19/858506/353812.terrain differ diff --git a/public/terrain/19/858506/353813.terrain b/public/terrain/19/858506/353813.terrain new file mode 100644 index 000000000..4bcffef2b Binary files /dev/null and b/public/terrain/19/858506/353813.terrain differ diff --git a/public/terrain/19/858506/353814.terrain b/public/terrain/19/858506/353814.terrain new file mode 100644 index 000000000..ba586c458 Binary files /dev/null and b/public/terrain/19/858506/353814.terrain differ diff --git a/public/terrain/19/858506/353815.terrain b/public/terrain/19/858506/353815.terrain new file mode 100644 index 000000000..906b8d949 Binary files /dev/null and b/public/terrain/19/858506/353815.terrain differ diff --git a/public/terrain/19/858506/353816.terrain b/public/terrain/19/858506/353816.terrain new file mode 100644 index 000000000..12889deba Binary files /dev/null and b/public/terrain/19/858506/353816.terrain differ diff --git a/public/terrain/19/858506/353817.terrain b/public/terrain/19/858506/353817.terrain new file mode 100644 index 000000000..09a1fb907 Binary files /dev/null and b/public/terrain/19/858506/353817.terrain differ diff --git a/public/terrain/19/858506/353818.terrain b/public/terrain/19/858506/353818.terrain new file mode 100644 index 000000000..01c4f87d7 Binary files /dev/null and b/public/terrain/19/858506/353818.terrain differ diff --git a/public/terrain/19/858506/353819.terrain b/public/terrain/19/858506/353819.terrain new file mode 100644 index 000000000..66bc0b8cc Binary files /dev/null and b/public/terrain/19/858506/353819.terrain differ diff --git a/public/terrain/19/858506/353820.terrain b/public/terrain/19/858506/353820.terrain new file mode 100644 index 000000000..2ed0f20a5 Binary files /dev/null and b/public/terrain/19/858506/353820.terrain differ diff --git a/public/terrain/19/858506/353821.terrain b/public/terrain/19/858506/353821.terrain new file mode 100644 index 000000000..eaf0ad1f7 Binary files /dev/null and b/public/terrain/19/858506/353821.terrain differ diff --git a/public/terrain/19/858506/353822.terrain b/public/terrain/19/858506/353822.terrain new file mode 100644 index 000000000..35adc3974 Binary files /dev/null and b/public/terrain/19/858506/353822.terrain differ diff --git a/public/terrain/19/858506/353823.terrain b/public/terrain/19/858506/353823.terrain new file mode 100644 index 000000000..67aff9fad Binary files /dev/null and b/public/terrain/19/858506/353823.terrain differ diff --git a/public/terrain/19/858506/353824.terrain b/public/terrain/19/858506/353824.terrain new file mode 100644 index 000000000..9f6a95379 Binary files /dev/null and b/public/terrain/19/858506/353824.terrain differ diff --git a/public/terrain/19/858506/353825.terrain b/public/terrain/19/858506/353825.terrain new file mode 100644 index 000000000..6f829d885 Binary files /dev/null and b/public/terrain/19/858506/353825.terrain differ diff --git a/public/terrain/19/858506/353826.terrain b/public/terrain/19/858506/353826.terrain new file mode 100644 index 000000000..4117fc50e Binary files /dev/null and b/public/terrain/19/858506/353826.terrain differ diff --git a/public/terrain/19/858506/353827.terrain b/public/terrain/19/858506/353827.terrain new file mode 100644 index 000000000..23d5e97f1 Binary files /dev/null and b/public/terrain/19/858506/353827.terrain differ diff --git a/public/terrain/19/858506/353828.terrain b/public/terrain/19/858506/353828.terrain new file mode 100644 index 000000000..05fbbf23f Binary files /dev/null and b/public/terrain/19/858506/353828.terrain differ diff --git a/public/terrain/19/858506/353829.terrain b/public/terrain/19/858506/353829.terrain new file mode 100644 index 000000000..637fbbe27 Binary files /dev/null and b/public/terrain/19/858506/353829.terrain differ diff --git a/public/terrain/19/858506/353830.terrain b/public/terrain/19/858506/353830.terrain new file mode 100644 index 000000000..53e172062 Binary files /dev/null and b/public/terrain/19/858506/353830.terrain differ diff --git a/public/terrain/19/858506/353831.terrain b/public/terrain/19/858506/353831.terrain new file mode 100644 index 000000000..eef1e9323 Binary files /dev/null and b/public/terrain/19/858506/353831.terrain differ diff --git a/public/terrain/19/858506/353832.terrain b/public/terrain/19/858506/353832.terrain new file mode 100644 index 000000000..3657b3284 Binary files /dev/null and b/public/terrain/19/858506/353832.terrain differ diff --git a/public/terrain/19/858506/353833.terrain b/public/terrain/19/858506/353833.terrain new file mode 100644 index 000000000..fa13efca9 Binary files /dev/null and b/public/terrain/19/858506/353833.terrain differ diff --git a/public/terrain/19/858506/353834.terrain b/public/terrain/19/858506/353834.terrain new file mode 100644 index 000000000..8cbbbe8a3 Binary files /dev/null and b/public/terrain/19/858506/353834.terrain differ diff --git a/public/terrain/19/858506/353835.terrain b/public/terrain/19/858506/353835.terrain new file mode 100644 index 000000000..7f4c60107 Binary files /dev/null and b/public/terrain/19/858506/353835.terrain differ diff --git a/public/terrain/19/858506/353836.terrain b/public/terrain/19/858506/353836.terrain new file mode 100644 index 000000000..5277ee890 Binary files /dev/null and b/public/terrain/19/858506/353836.terrain differ diff --git a/public/terrain/19/858506/353837.terrain b/public/terrain/19/858506/353837.terrain new file mode 100644 index 000000000..b1ae3dd18 Binary files /dev/null and b/public/terrain/19/858506/353837.terrain differ diff --git a/public/terrain/19/858506/353838.terrain b/public/terrain/19/858506/353838.terrain new file mode 100644 index 000000000..1f0d08985 Binary files /dev/null and b/public/terrain/19/858506/353838.terrain differ diff --git a/public/terrain/19/858506/353839.terrain b/public/terrain/19/858506/353839.terrain new file mode 100644 index 000000000..0cd08e1b3 Binary files /dev/null and b/public/terrain/19/858506/353839.terrain differ diff --git a/public/terrain/19/858506/353840.terrain b/public/terrain/19/858506/353840.terrain new file mode 100644 index 000000000..0f668157b Binary files /dev/null and b/public/terrain/19/858506/353840.terrain differ diff --git a/public/terrain/19/858506/353841.terrain b/public/terrain/19/858506/353841.terrain new file mode 100644 index 000000000..a239af1a2 Binary files /dev/null and b/public/terrain/19/858506/353841.terrain differ diff --git a/public/terrain/19/858506/353842.terrain b/public/terrain/19/858506/353842.terrain new file mode 100644 index 000000000..fed987acd Binary files /dev/null and b/public/terrain/19/858506/353842.terrain differ diff --git a/public/terrain/19/858506/353843.terrain b/public/terrain/19/858506/353843.terrain new file mode 100644 index 000000000..f54d7205f Binary files /dev/null and b/public/terrain/19/858506/353843.terrain differ diff --git a/public/terrain/19/858506/353844.terrain b/public/terrain/19/858506/353844.terrain new file mode 100644 index 000000000..5eac45906 Binary files /dev/null and b/public/terrain/19/858506/353844.terrain differ diff --git a/public/terrain/19/858506/353845.terrain b/public/terrain/19/858506/353845.terrain new file mode 100644 index 000000000..10e4575b8 Binary files /dev/null and b/public/terrain/19/858506/353845.terrain differ diff --git a/public/terrain/19/858506/353846.terrain b/public/terrain/19/858506/353846.terrain new file mode 100644 index 000000000..44bbafdfb Binary files /dev/null and b/public/terrain/19/858506/353846.terrain differ diff --git a/public/terrain/19/858506/353847.terrain b/public/terrain/19/858506/353847.terrain new file mode 100644 index 000000000..905781fca Binary files /dev/null and b/public/terrain/19/858506/353847.terrain differ diff --git a/public/terrain/19/858506/353848.terrain b/public/terrain/19/858506/353848.terrain new file mode 100644 index 000000000..e18ed7ecb Binary files /dev/null and b/public/terrain/19/858506/353848.terrain differ diff --git a/public/terrain/19/858506/353849.terrain b/public/terrain/19/858506/353849.terrain new file mode 100644 index 000000000..f692f71fe Binary files /dev/null and b/public/terrain/19/858506/353849.terrain differ diff --git a/public/terrain/19/858506/353850.terrain b/public/terrain/19/858506/353850.terrain new file mode 100644 index 000000000..c259dbb56 Binary files /dev/null and b/public/terrain/19/858506/353850.terrain differ diff --git a/public/terrain/19/858506/353851.terrain b/public/terrain/19/858506/353851.terrain new file mode 100644 index 000000000..3155a77b3 Binary files /dev/null and b/public/terrain/19/858506/353851.terrain differ diff --git a/public/terrain/19/858506/353852.terrain b/public/terrain/19/858506/353852.terrain new file mode 100644 index 000000000..c7ca5636c Binary files /dev/null and b/public/terrain/19/858506/353852.terrain differ diff --git a/public/terrain/19/858506/353853.terrain b/public/terrain/19/858506/353853.terrain new file mode 100644 index 000000000..2ad874373 Binary files /dev/null and b/public/terrain/19/858506/353853.terrain differ diff --git a/public/terrain/19/858506/353854.terrain b/public/terrain/19/858506/353854.terrain new file mode 100644 index 000000000..95859226a Binary files /dev/null and b/public/terrain/19/858506/353854.terrain differ diff --git a/public/terrain/19/858506/353855.terrain b/public/terrain/19/858506/353855.terrain new file mode 100644 index 000000000..974f00172 Binary files /dev/null and b/public/terrain/19/858506/353855.terrain differ diff --git a/public/terrain/19/858506/353856.terrain b/public/terrain/19/858506/353856.terrain new file mode 100644 index 000000000..c8287f47b Binary files /dev/null and b/public/terrain/19/858506/353856.terrain differ diff --git a/public/terrain/19/858506/353857.terrain b/public/terrain/19/858506/353857.terrain new file mode 100644 index 000000000..8e0b895a8 Binary files /dev/null and b/public/terrain/19/858506/353857.terrain differ diff --git a/public/terrain/19/858506/353858.terrain b/public/terrain/19/858506/353858.terrain new file mode 100644 index 000000000..f569531bb Binary files /dev/null and b/public/terrain/19/858506/353858.terrain differ diff --git a/public/terrain/19/858506/353859.terrain b/public/terrain/19/858506/353859.terrain new file mode 100644 index 000000000..92fdb7ea0 Binary files /dev/null and b/public/terrain/19/858506/353859.terrain differ diff --git a/public/terrain/19/858506/353860.terrain b/public/terrain/19/858506/353860.terrain new file mode 100644 index 000000000..7013ae5b7 Binary files /dev/null and b/public/terrain/19/858506/353860.terrain differ diff --git a/public/terrain/19/858506/353861.terrain b/public/terrain/19/858506/353861.terrain new file mode 100644 index 000000000..a6d858618 Binary files /dev/null and b/public/terrain/19/858506/353861.terrain differ diff --git a/public/terrain/19/858506/353862.terrain b/public/terrain/19/858506/353862.terrain new file mode 100644 index 000000000..7d0866426 Binary files /dev/null and b/public/terrain/19/858506/353862.terrain differ diff --git a/public/terrain/19/858506/353863.terrain b/public/terrain/19/858506/353863.terrain new file mode 100644 index 000000000..f083199ca Binary files /dev/null and b/public/terrain/19/858506/353863.terrain differ diff --git a/public/terrain/19/858506/353864.terrain b/public/terrain/19/858506/353864.terrain new file mode 100644 index 000000000..a3b820f32 Binary files /dev/null and b/public/terrain/19/858506/353864.terrain differ diff --git a/public/terrain/19/858506/353865.terrain b/public/terrain/19/858506/353865.terrain new file mode 100644 index 000000000..19516bfa8 Binary files /dev/null and b/public/terrain/19/858506/353865.terrain differ diff --git a/public/terrain/19/858506/353866.terrain b/public/terrain/19/858506/353866.terrain new file mode 100644 index 000000000..3e3beb3cd Binary files /dev/null and b/public/terrain/19/858506/353866.terrain differ diff --git a/public/terrain/19/858506/353867.terrain b/public/terrain/19/858506/353867.terrain new file mode 100644 index 000000000..7b3ed71a0 Binary files /dev/null and b/public/terrain/19/858506/353867.terrain differ diff --git a/public/terrain/19/858506/353868.terrain b/public/terrain/19/858506/353868.terrain new file mode 100644 index 000000000..51218575c Binary files /dev/null and b/public/terrain/19/858506/353868.terrain differ diff --git a/public/terrain/19/858506/353869.terrain b/public/terrain/19/858506/353869.terrain new file mode 100644 index 000000000..244e3730e Binary files /dev/null and b/public/terrain/19/858506/353869.terrain differ diff --git a/public/terrain/19/858506/353870.terrain b/public/terrain/19/858506/353870.terrain new file mode 100644 index 000000000..26cb00618 Binary files /dev/null and b/public/terrain/19/858506/353870.terrain differ diff --git a/public/terrain/19/858506/353871.terrain b/public/terrain/19/858506/353871.terrain new file mode 100644 index 000000000..387baa24e Binary files /dev/null and b/public/terrain/19/858506/353871.terrain differ diff --git a/public/terrain/19/858506/353872.terrain b/public/terrain/19/858506/353872.terrain new file mode 100644 index 000000000..97a448896 Binary files /dev/null and b/public/terrain/19/858506/353872.terrain differ diff --git a/public/terrain/19/858506/353873.terrain b/public/terrain/19/858506/353873.terrain new file mode 100644 index 000000000..5e1c17fb0 Binary files /dev/null and b/public/terrain/19/858506/353873.terrain differ diff --git a/public/terrain/19/858506/353874.terrain b/public/terrain/19/858506/353874.terrain new file mode 100644 index 000000000..6d498b0e3 Binary files /dev/null and b/public/terrain/19/858506/353874.terrain differ diff --git a/public/terrain/19/858506/353875.terrain b/public/terrain/19/858506/353875.terrain new file mode 100644 index 000000000..2c86b5660 Binary files /dev/null and b/public/terrain/19/858506/353875.terrain differ diff --git a/public/terrain/19/858506/353876.terrain b/public/terrain/19/858506/353876.terrain new file mode 100644 index 000000000..e66a9a6d8 Binary files /dev/null and b/public/terrain/19/858506/353876.terrain differ diff --git a/public/terrain/19/858506/353877.terrain b/public/terrain/19/858506/353877.terrain new file mode 100644 index 000000000..77adb0fec Binary files /dev/null and b/public/terrain/19/858506/353877.terrain differ diff --git a/public/terrain/19/858506/353878.terrain b/public/terrain/19/858506/353878.terrain new file mode 100644 index 000000000..cc1731d17 Binary files /dev/null and b/public/terrain/19/858506/353878.terrain differ diff --git a/public/terrain/19/858506/353879.terrain b/public/terrain/19/858506/353879.terrain new file mode 100644 index 000000000..2ac766334 Binary files /dev/null and b/public/terrain/19/858506/353879.terrain differ diff --git a/public/terrain/19/858506/353880.terrain b/public/terrain/19/858506/353880.terrain new file mode 100644 index 000000000..a27b16447 Binary files /dev/null and b/public/terrain/19/858506/353880.terrain differ diff --git a/public/terrain/19/858506/353881.terrain b/public/terrain/19/858506/353881.terrain new file mode 100644 index 000000000..d22b9aca7 Binary files /dev/null and b/public/terrain/19/858506/353881.terrain differ diff --git a/public/terrain/19/858506/353882.terrain b/public/terrain/19/858506/353882.terrain new file mode 100644 index 000000000..55d94f23d Binary files /dev/null and b/public/terrain/19/858506/353882.terrain differ diff --git a/public/terrain/19/858506/353883.terrain b/public/terrain/19/858506/353883.terrain new file mode 100644 index 000000000..a15bffa5f Binary files /dev/null and b/public/terrain/19/858506/353883.terrain differ diff --git a/public/terrain/19/858506/353884.terrain b/public/terrain/19/858506/353884.terrain new file mode 100644 index 000000000..5ce6ebd07 Binary files /dev/null and b/public/terrain/19/858506/353884.terrain differ diff --git a/public/terrain/19/858506/353885.terrain b/public/terrain/19/858506/353885.terrain new file mode 100644 index 000000000..c57f941a4 Binary files /dev/null and b/public/terrain/19/858506/353885.terrain differ diff --git a/public/terrain/19/858506/353886.terrain b/public/terrain/19/858506/353886.terrain new file mode 100644 index 000000000..bf5fb6407 Binary files /dev/null and b/public/terrain/19/858506/353886.terrain differ diff --git a/public/terrain/19/858506/353887.terrain b/public/terrain/19/858506/353887.terrain new file mode 100644 index 000000000..22bf0e7b6 Binary files /dev/null and b/public/terrain/19/858506/353887.terrain differ diff --git a/public/terrain/19/858506/353888.terrain b/public/terrain/19/858506/353888.terrain new file mode 100644 index 000000000..8a5edca16 Binary files /dev/null and b/public/terrain/19/858506/353888.terrain differ diff --git a/public/terrain/19/858506/353889.terrain b/public/terrain/19/858506/353889.terrain new file mode 100644 index 000000000..6649e8612 Binary files /dev/null and b/public/terrain/19/858506/353889.terrain differ diff --git a/public/terrain/19/858506/353890.terrain b/public/terrain/19/858506/353890.terrain new file mode 100644 index 000000000..a3800de4c Binary files /dev/null and b/public/terrain/19/858506/353890.terrain differ diff --git a/public/terrain/19/858506/353891.terrain b/public/terrain/19/858506/353891.terrain new file mode 100644 index 000000000..a63333da5 Binary files /dev/null and b/public/terrain/19/858506/353891.terrain differ diff --git a/public/terrain/19/858506/353892.terrain b/public/terrain/19/858506/353892.terrain new file mode 100644 index 000000000..4714f57c1 Binary files /dev/null and b/public/terrain/19/858506/353892.terrain differ diff --git a/public/terrain/19/858506/353893.terrain b/public/terrain/19/858506/353893.terrain new file mode 100644 index 000000000..715c4d178 Binary files /dev/null and b/public/terrain/19/858506/353893.terrain differ diff --git a/public/terrain/19/858506/353894.terrain b/public/terrain/19/858506/353894.terrain new file mode 100644 index 000000000..dc2e31329 Binary files /dev/null and b/public/terrain/19/858506/353894.terrain differ diff --git a/public/terrain/19/858506/353895.terrain b/public/terrain/19/858506/353895.terrain new file mode 100644 index 000000000..03fcbf2c2 Binary files /dev/null and b/public/terrain/19/858506/353895.terrain differ diff --git a/public/terrain/19/858506/353896.terrain b/public/terrain/19/858506/353896.terrain new file mode 100644 index 000000000..fd300ac64 Binary files /dev/null and b/public/terrain/19/858506/353896.terrain differ diff --git a/public/terrain/19/858506/353897.terrain b/public/terrain/19/858506/353897.terrain new file mode 100644 index 000000000..de986a3ec Binary files /dev/null and b/public/terrain/19/858506/353897.terrain differ diff --git a/public/terrain/19/858506/353898.terrain b/public/terrain/19/858506/353898.terrain new file mode 100644 index 000000000..a342bcf56 Binary files /dev/null and b/public/terrain/19/858506/353898.terrain differ diff --git a/public/terrain/19/858506/353899.terrain b/public/terrain/19/858506/353899.terrain new file mode 100644 index 000000000..05493c199 Binary files /dev/null and b/public/terrain/19/858506/353899.terrain differ diff --git a/public/terrain/19/858506/353900.terrain b/public/terrain/19/858506/353900.terrain new file mode 100644 index 000000000..7929dd548 Binary files /dev/null and b/public/terrain/19/858506/353900.terrain differ diff --git a/public/terrain/19/858506/353901.terrain b/public/terrain/19/858506/353901.terrain new file mode 100644 index 000000000..f4717b734 Binary files /dev/null and b/public/terrain/19/858506/353901.terrain differ diff --git a/public/terrain/19/858506/353902.terrain b/public/terrain/19/858506/353902.terrain new file mode 100644 index 000000000..1c8257400 Binary files /dev/null and b/public/terrain/19/858506/353902.terrain differ diff --git a/public/terrain/19/858506/353903.terrain b/public/terrain/19/858506/353903.terrain new file mode 100644 index 000000000..ca26cc489 Binary files /dev/null and b/public/terrain/19/858506/353903.terrain differ diff --git a/public/terrain/19/858506/353904.terrain b/public/terrain/19/858506/353904.terrain new file mode 100644 index 000000000..f1b25fbc3 Binary files /dev/null and b/public/terrain/19/858506/353904.terrain differ diff --git a/public/terrain/19/858506/353905.terrain b/public/terrain/19/858506/353905.terrain new file mode 100644 index 000000000..06703727d Binary files /dev/null and b/public/terrain/19/858506/353905.terrain differ diff --git a/public/terrain/19/858506/353906.terrain b/public/terrain/19/858506/353906.terrain new file mode 100644 index 000000000..8336402f7 Binary files /dev/null and b/public/terrain/19/858506/353906.terrain differ diff --git a/public/terrain/19/858506/353907.terrain b/public/terrain/19/858506/353907.terrain new file mode 100644 index 000000000..836bed01f Binary files /dev/null and b/public/terrain/19/858506/353907.terrain differ diff --git a/public/terrain/19/858506/353908.terrain b/public/terrain/19/858506/353908.terrain new file mode 100644 index 000000000..e08bf74b9 Binary files /dev/null and b/public/terrain/19/858506/353908.terrain differ diff --git a/public/terrain/19/858506/353909.terrain b/public/terrain/19/858506/353909.terrain new file mode 100644 index 000000000..6813ab453 Binary files /dev/null and b/public/terrain/19/858506/353909.terrain differ diff --git a/public/terrain/19/858506/353910.terrain b/public/terrain/19/858506/353910.terrain new file mode 100644 index 000000000..bdacd7bc2 Binary files /dev/null and b/public/terrain/19/858506/353910.terrain differ diff --git a/public/terrain/19/858506/353911.terrain b/public/terrain/19/858506/353911.terrain new file mode 100644 index 000000000..df9265f74 Binary files /dev/null and b/public/terrain/19/858506/353911.terrain differ diff --git a/public/terrain/19/858506/353912.terrain b/public/terrain/19/858506/353912.terrain new file mode 100644 index 000000000..d3f67cd55 Binary files /dev/null and b/public/terrain/19/858506/353912.terrain differ diff --git a/public/terrain/19/858506/353913.terrain b/public/terrain/19/858506/353913.terrain new file mode 100644 index 000000000..406c5eb6d Binary files /dev/null and b/public/terrain/19/858506/353913.terrain differ diff --git a/public/terrain/19/858506/353914.terrain b/public/terrain/19/858506/353914.terrain new file mode 100644 index 000000000..e1ab2044f Binary files /dev/null and b/public/terrain/19/858506/353914.terrain differ diff --git a/public/terrain/19/858506/353915.terrain b/public/terrain/19/858506/353915.terrain new file mode 100644 index 000000000..485d14aa4 Binary files /dev/null and b/public/terrain/19/858506/353915.terrain differ diff --git a/public/terrain/19/858506/353916.terrain b/public/terrain/19/858506/353916.terrain new file mode 100644 index 000000000..ec521a4c3 Binary files /dev/null and b/public/terrain/19/858506/353916.terrain differ diff --git a/public/terrain/19/858506/353917.terrain b/public/terrain/19/858506/353917.terrain new file mode 100644 index 000000000..5d64eea4c Binary files /dev/null and b/public/terrain/19/858506/353917.terrain differ diff --git a/public/terrain/19/858506/353918.terrain b/public/terrain/19/858506/353918.terrain new file mode 100644 index 000000000..376dfcd27 Binary files /dev/null and b/public/terrain/19/858506/353918.terrain differ diff --git a/public/terrain/19/858506/353919.terrain b/public/terrain/19/858506/353919.terrain new file mode 100644 index 000000000..7a03de784 Binary files /dev/null and b/public/terrain/19/858506/353919.terrain differ diff --git a/public/terrain/19/858506/353920.terrain b/public/terrain/19/858506/353920.terrain new file mode 100644 index 000000000..54f114772 Binary files /dev/null and b/public/terrain/19/858506/353920.terrain differ diff --git a/public/terrain/19/858506/353921.terrain b/public/terrain/19/858506/353921.terrain new file mode 100644 index 000000000..314f87f43 Binary files /dev/null and b/public/terrain/19/858506/353921.terrain differ diff --git a/public/terrain/19/858506/353922.terrain b/public/terrain/19/858506/353922.terrain new file mode 100644 index 000000000..66b592804 Binary files /dev/null and b/public/terrain/19/858506/353922.terrain differ diff --git a/public/terrain/19/858506/353923.terrain b/public/terrain/19/858506/353923.terrain new file mode 100644 index 000000000..fa555ce07 Binary files /dev/null and b/public/terrain/19/858506/353923.terrain differ diff --git a/public/terrain/19/858506/353924.terrain b/public/terrain/19/858506/353924.terrain new file mode 100644 index 000000000..9a572d1a4 Binary files /dev/null and b/public/terrain/19/858506/353924.terrain differ diff --git a/public/terrain/19/858506/353925.terrain b/public/terrain/19/858506/353925.terrain new file mode 100644 index 000000000..50fd3230f Binary files /dev/null and b/public/terrain/19/858506/353925.terrain differ diff --git a/public/terrain/19/858506/353926.terrain b/public/terrain/19/858506/353926.terrain new file mode 100644 index 000000000..c642c29c1 Binary files /dev/null and b/public/terrain/19/858506/353926.terrain differ diff --git a/public/terrain/19/858506/353927.terrain b/public/terrain/19/858506/353927.terrain new file mode 100644 index 000000000..d3bf873f1 Binary files /dev/null and b/public/terrain/19/858506/353927.terrain differ diff --git a/public/terrain/19/858506/353928.terrain b/public/terrain/19/858506/353928.terrain new file mode 100644 index 000000000..785b1feaa Binary files /dev/null and b/public/terrain/19/858506/353928.terrain differ diff --git a/public/terrain/19/858506/353929.terrain b/public/terrain/19/858506/353929.terrain new file mode 100644 index 000000000..57abc555f Binary files /dev/null and b/public/terrain/19/858506/353929.terrain differ diff --git a/public/terrain/19/858506/353930.terrain b/public/terrain/19/858506/353930.terrain new file mode 100644 index 000000000..e2a3ddbe8 Binary files /dev/null and b/public/terrain/19/858506/353930.terrain differ diff --git a/public/terrain/19/858506/353931.terrain b/public/terrain/19/858506/353931.terrain new file mode 100644 index 000000000..bb46b4632 Binary files /dev/null and b/public/terrain/19/858506/353931.terrain differ diff --git a/public/terrain/19/858506/353932.terrain b/public/terrain/19/858506/353932.terrain new file mode 100644 index 000000000..2efc16b33 Binary files /dev/null and b/public/terrain/19/858506/353932.terrain differ diff --git a/public/terrain/19/858506/353933.terrain b/public/terrain/19/858506/353933.terrain new file mode 100644 index 000000000..675af2cfd Binary files /dev/null and b/public/terrain/19/858506/353933.terrain differ diff --git a/public/terrain/19/858506/353934.terrain b/public/terrain/19/858506/353934.terrain new file mode 100644 index 000000000..1b18a2d3a Binary files /dev/null and b/public/terrain/19/858506/353934.terrain differ diff --git a/public/terrain/19/858506/353935.terrain b/public/terrain/19/858506/353935.terrain new file mode 100644 index 000000000..3de7011ce Binary files /dev/null and b/public/terrain/19/858506/353935.terrain differ diff --git a/public/terrain/19/858506/353936.terrain b/public/terrain/19/858506/353936.terrain new file mode 100644 index 000000000..190e5766c Binary files /dev/null and b/public/terrain/19/858506/353936.terrain differ diff --git a/public/terrain/19/858506/353937.terrain b/public/terrain/19/858506/353937.terrain new file mode 100644 index 000000000..208536cb2 Binary files /dev/null and b/public/terrain/19/858506/353937.terrain differ diff --git a/public/terrain/19/858506/353938.terrain b/public/terrain/19/858506/353938.terrain new file mode 100644 index 000000000..2994374ae Binary files /dev/null and b/public/terrain/19/858506/353938.terrain differ diff --git a/public/terrain/19/858506/353939.terrain b/public/terrain/19/858506/353939.terrain new file mode 100644 index 000000000..ec70fef28 Binary files /dev/null and b/public/terrain/19/858506/353939.terrain differ diff --git a/public/terrain/19/858506/353940.terrain b/public/terrain/19/858506/353940.terrain new file mode 100644 index 000000000..7f11fe85a Binary files /dev/null and b/public/terrain/19/858506/353940.terrain differ diff --git a/public/terrain/19/858506/353941.terrain b/public/terrain/19/858506/353941.terrain new file mode 100644 index 000000000..39a88bcc9 Binary files /dev/null and b/public/terrain/19/858506/353941.terrain differ diff --git a/public/terrain/19/858506/353942.terrain b/public/terrain/19/858506/353942.terrain new file mode 100644 index 000000000..ea254ce43 Binary files /dev/null and b/public/terrain/19/858506/353942.terrain differ diff --git a/public/terrain/19/858506/353943.terrain b/public/terrain/19/858506/353943.terrain new file mode 100644 index 000000000..3fb7c8c76 Binary files /dev/null and b/public/terrain/19/858506/353943.terrain differ diff --git a/public/terrain/19/858506/353944.terrain b/public/terrain/19/858506/353944.terrain new file mode 100644 index 000000000..1f71330f4 Binary files /dev/null and b/public/terrain/19/858506/353944.terrain differ diff --git a/public/terrain/19/858506/353945.terrain b/public/terrain/19/858506/353945.terrain new file mode 100644 index 000000000..0e0666329 Binary files /dev/null and b/public/terrain/19/858506/353945.terrain differ diff --git a/public/terrain/19/858506/353946.terrain b/public/terrain/19/858506/353946.terrain new file mode 100644 index 000000000..fe6fa9231 Binary files /dev/null and b/public/terrain/19/858506/353946.terrain differ diff --git a/public/terrain/19/858506/353947.terrain b/public/terrain/19/858506/353947.terrain new file mode 100644 index 000000000..5b62b361f Binary files /dev/null and b/public/terrain/19/858506/353947.terrain differ diff --git a/public/terrain/19/858506/353948.terrain b/public/terrain/19/858506/353948.terrain new file mode 100644 index 000000000..4ce3ae242 Binary files /dev/null and b/public/terrain/19/858506/353948.terrain differ diff --git a/public/terrain/19/858506/353949.terrain b/public/terrain/19/858506/353949.terrain new file mode 100644 index 000000000..54764f71b Binary files /dev/null and b/public/terrain/19/858506/353949.terrain differ diff --git a/public/terrain/19/858506/353950.terrain b/public/terrain/19/858506/353950.terrain new file mode 100644 index 000000000..81236020e Binary files /dev/null and b/public/terrain/19/858506/353950.terrain differ diff --git a/public/terrain/19/858506/353951.terrain b/public/terrain/19/858506/353951.terrain new file mode 100644 index 000000000..0f0a4a51c Binary files /dev/null and b/public/terrain/19/858506/353951.terrain differ diff --git a/public/terrain/19/858506/353952.terrain b/public/terrain/19/858506/353952.terrain new file mode 100644 index 000000000..ae13a059a Binary files /dev/null and b/public/terrain/19/858506/353952.terrain differ diff --git a/public/terrain/19/858506/353953.terrain b/public/terrain/19/858506/353953.terrain new file mode 100644 index 000000000..f04fb4d86 Binary files /dev/null and b/public/terrain/19/858506/353953.terrain differ diff --git a/public/terrain/19/858506/353954.terrain b/public/terrain/19/858506/353954.terrain new file mode 100644 index 000000000..5fa600804 Binary files /dev/null and b/public/terrain/19/858506/353954.terrain differ diff --git a/public/terrain/19/858506/353955.terrain b/public/terrain/19/858506/353955.terrain new file mode 100644 index 000000000..c1557b579 Binary files /dev/null and b/public/terrain/19/858506/353955.terrain differ diff --git a/public/terrain/19/858506/353956.terrain b/public/terrain/19/858506/353956.terrain new file mode 100644 index 000000000..47acc38bb Binary files /dev/null and b/public/terrain/19/858506/353956.terrain differ diff --git a/public/terrain/19/858506/353957.terrain b/public/terrain/19/858506/353957.terrain new file mode 100644 index 000000000..8c6afb364 Binary files /dev/null and b/public/terrain/19/858506/353957.terrain differ diff --git a/public/terrain/19/858506/353958.terrain b/public/terrain/19/858506/353958.terrain new file mode 100644 index 000000000..32e14c5ad Binary files /dev/null and b/public/terrain/19/858506/353958.terrain differ diff --git a/public/terrain/19/858506/353959.terrain b/public/terrain/19/858506/353959.terrain new file mode 100644 index 000000000..b8467f6a0 Binary files /dev/null and b/public/terrain/19/858506/353959.terrain differ diff --git a/public/terrain/19/858506/353960.terrain b/public/terrain/19/858506/353960.terrain new file mode 100644 index 000000000..e81b6cafc Binary files /dev/null and b/public/terrain/19/858506/353960.terrain differ diff --git a/public/terrain/19/858506/353961.terrain b/public/terrain/19/858506/353961.terrain new file mode 100644 index 000000000..b5f52eb79 Binary files /dev/null and b/public/terrain/19/858506/353961.terrain differ diff --git a/public/terrain/19/858506/353962.terrain b/public/terrain/19/858506/353962.terrain new file mode 100644 index 000000000..623c4b4de Binary files /dev/null and b/public/terrain/19/858506/353962.terrain differ diff --git a/public/terrain/19/858506/353963.terrain b/public/terrain/19/858506/353963.terrain new file mode 100644 index 000000000..791ddf146 Binary files /dev/null and b/public/terrain/19/858506/353963.terrain differ diff --git a/public/terrain/19/858506/353964.terrain b/public/terrain/19/858506/353964.terrain new file mode 100644 index 000000000..ab3fc7b35 Binary files /dev/null and b/public/terrain/19/858506/353964.terrain differ diff --git a/public/terrain/19/858506/353965.terrain b/public/terrain/19/858506/353965.terrain new file mode 100644 index 000000000..dce6b17d7 Binary files /dev/null and b/public/terrain/19/858506/353965.terrain differ diff --git a/public/terrain/19/858506/353966.terrain b/public/terrain/19/858506/353966.terrain new file mode 100644 index 000000000..0262566ef Binary files /dev/null and b/public/terrain/19/858506/353966.terrain differ diff --git a/public/terrain/19/858506/353967.terrain b/public/terrain/19/858506/353967.terrain new file mode 100644 index 000000000..488578c35 Binary files /dev/null and b/public/terrain/19/858506/353967.terrain differ diff --git a/public/terrain/19/858506/353968.terrain b/public/terrain/19/858506/353968.terrain new file mode 100644 index 000000000..9eb4d2bb0 Binary files /dev/null and b/public/terrain/19/858506/353968.terrain differ diff --git a/public/terrain/19/858506/353969.terrain b/public/terrain/19/858506/353969.terrain new file mode 100644 index 000000000..e30da98ed Binary files /dev/null and b/public/terrain/19/858506/353969.terrain differ diff --git a/public/terrain/19/858506/353970.terrain b/public/terrain/19/858506/353970.terrain new file mode 100644 index 000000000..9faacc42a Binary files /dev/null and b/public/terrain/19/858506/353970.terrain differ diff --git a/public/terrain/19/858506/353971.terrain b/public/terrain/19/858506/353971.terrain new file mode 100644 index 000000000..b5ef65424 Binary files /dev/null and b/public/terrain/19/858506/353971.terrain differ diff --git a/public/terrain/19/858506/353972.terrain b/public/terrain/19/858506/353972.terrain new file mode 100644 index 000000000..89abb8630 Binary files /dev/null and b/public/terrain/19/858506/353972.terrain differ diff --git a/public/terrain/19/858506/353973.terrain b/public/terrain/19/858506/353973.terrain new file mode 100644 index 000000000..71117b98f Binary files /dev/null and b/public/terrain/19/858506/353973.terrain differ diff --git a/public/terrain/19/858506/353974.terrain b/public/terrain/19/858506/353974.terrain new file mode 100644 index 000000000..9c6a6740e Binary files /dev/null and b/public/terrain/19/858506/353974.terrain differ diff --git a/public/terrain/19/858506/353975.terrain b/public/terrain/19/858506/353975.terrain new file mode 100644 index 000000000..ee237852f Binary files /dev/null and b/public/terrain/19/858506/353975.terrain differ diff --git a/public/terrain/19/858506/353976.terrain b/public/terrain/19/858506/353976.terrain new file mode 100644 index 000000000..d7816e53b Binary files /dev/null and b/public/terrain/19/858506/353976.terrain differ diff --git a/public/terrain/19/858506/353977.terrain b/public/terrain/19/858506/353977.terrain new file mode 100644 index 000000000..50ddb3c2e Binary files /dev/null and b/public/terrain/19/858506/353977.terrain differ diff --git a/public/terrain/19/858506/353978.terrain b/public/terrain/19/858506/353978.terrain new file mode 100644 index 000000000..c09a23ce6 Binary files /dev/null and b/public/terrain/19/858506/353978.terrain differ diff --git a/public/terrain/19/858506/353979.terrain b/public/terrain/19/858506/353979.terrain new file mode 100644 index 000000000..5ef673b42 Binary files /dev/null and b/public/terrain/19/858506/353979.terrain differ diff --git a/public/terrain/19/858506/353980.terrain b/public/terrain/19/858506/353980.terrain new file mode 100644 index 000000000..568ae7b08 Binary files /dev/null and b/public/terrain/19/858506/353980.terrain differ diff --git a/public/terrain/19/858506/353981.terrain b/public/terrain/19/858506/353981.terrain new file mode 100644 index 000000000..013ddb607 Binary files /dev/null and b/public/terrain/19/858506/353981.terrain differ diff --git a/public/terrain/19/858506/353982.terrain b/public/terrain/19/858506/353982.terrain new file mode 100644 index 000000000..2205e2af5 Binary files /dev/null and b/public/terrain/19/858506/353982.terrain differ diff --git a/public/terrain/19/858506/353983.terrain b/public/terrain/19/858506/353983.terrain new file mode 100644 index 000000000..7bf008818 Binary files /dev/null and b/public/terrain/19/858506/353983.terrain differ diff --git a/public/terrain/19/858506/353984.terrain b/public/terrain/19/858506/353984.terrain new file mode 100644 index 000000000..cb6afe30a Binary files /dev/null and b/public/terrain/19/858506/353984.terrain differ diff --git a/public/terrain/19/858506/353985.terrain b/public/terrain/19/858506/353985.terrain new file mode 100644 index 000000000..6aaaea49a Binary files /dev/null and b/public/terrain/19/858506/353985.terrain differ diff --git a/public/terrain/19/858506/353986.terrain b/public/terrain/19/858506/353986.terrain new file mode 100644 index 000000000..efede1c8c Binary files /dev/null and b/public/terrain/19/858506/353986.terrain differ diff --git a/public/terrain/19/858506/353987.terrain b/public/terrain/19/858506/353987.terrain new file mode 100644 index 000000000..f3d379bcb Binary files /dev/null and b/public/terrain/19/858506/353987.terrain differ diff --git a/public/terrain/19/858506/353988.terrain b/public/terrain/19/858506/353988.terrain new file mode 100644 index 000000000..d96dac8b5 Binary files /dev/null and b/public/terrain/19/858506/353988.terrain differ diff --git a/public/terrain/19/858506/353989.terrain b/public/terrain/19/858506/353989.terrain new file mode 100644 index 000000000..c582b90ca Binary files /dev/null and b/public/terrain/19/858506/353989.terrain differ diff --git a/public/terrain/19/858506/353990.terrain b/public/terrain/19/858506/353990.terrain new file mode 100644 index 000000000..90df9ae1c Binary files /dev/null and b/public/terrain/19/858506/353990.terrain differ diff --git a/public/terrain/19/858506/353991.terrain b/public/terrain/19/858506/353991.terrain new file mode 100644 index 000000000..43cde7798 Binary files /dev/null and b/public/terrain/19/858506/353991.terrain differ diff --git a/public/terrain/19/858506/353992.terrain b/public/terrain/19/858506/353992.terrain new file mode 100644 index 000000000..568d1371b Binary files /dev/null and b/public/terrain/19/858506/353992.terrain differ diff --git a/public/terrain/19/858506/353993.terrain b/public/terrain/19/858506/353993.terrain new file mode 100644 index 000000000..4413bdcff Binary files /dev/null and b/public/terrain/19/858506/353993.terrain differ diff --git a/public/terrain/19/858506/353994.terrain b/public/terrain/19/858506/353994.terrain new file mode 100644 index 000000000..90e375a7e Binary files /dev/null and b/public/terrain/19/858506/353994.terrain differ diff --git a/public/terrain/19/858506/353995.terrain b/public/terrain/19/858506/353995.terrain new file mode 100644 index 000000000..ef713dfcd Binary files /dev/null and b/public/terrain/19/858506/353995.terrain differ diff --git a/public/terrain/19/858506/353996.terrain b/public/terrain/19/858506/353996.terrain new file mode 100644 index 000000000..5ca533ebb Binary files /dev/null and b/public/terrain/19/858506/353996.terrain differ diff --git a/public/terrain/19/858506/353997.terrain b/public/terrain/19/858506/353997.terrain new file mode 100644 index 000000000..2247b8614 Binary files /dev/null and b/public/terrain/19/858506/353997.terrain differ diff --git a/public/terrain/19/858506/353998.terrain b/public/terrain/19/858506/353998.terrain new file mode 100644 index 000000000..5964abe42 Binary files /dev/null and b/public/terrain/19/858506/353998.terrain differ diff --git a/public/terrain/19/858506/353999.terrain b/public/terrain/19/858506/353999.terrain new file mode 100644 index 000000000..0648f6f54 Binary files /dev/null and b/public/terrain/19/858506/353999.terrain differ diff --git a/public/terrain/19/858506/354000.terrain b/public/terrain/19/858506/354000.terrain new file mode 100644 index 000000000..0868dda13 Binary files /dev/null and b/public/terrain/19/858506/354000.terrain differ diff --git a/public/terrain/19/858506/354001.terrain b/public/terrain/19/858506/354001.terrain new file mode 100644 index 000000000..babbf74ab Binary files /dev/null and b/public/terrain/19/858506/354001.terrain differ diff --git a/public/terrain/19/858506/354002.terrain b/public/terrain/19/858506/354002.terrain new file mode 100644 index 000000000..ec0af3c8b Binary files /dev/null and b/public/terrain/19/858506/354002.terrain differ diff --git a/public/terrain/19/858506/354003.terrain b/public/terrain/19/858506/354003.terrain new file mode 100644 index 000000000..c3b0a461e Binary files /dev/null and b/public/terrain/19/858506/354003.terrain differ diff --git a/public/terrain/19/858506/354004.terrain b/public/terrain/19/858506/354004.terrain new file mode 100644 index 000000000..5ab89fefe Binary files /dev/null and b/public/terrain/19/858506/354004.terrain differ diff --git a/public/terrain/19/858506/354005.terrain b/public/terrain/19/858506/354005.terrain new file mode 100644 index 000000000..566698a4c Binary files /dev/null and b/public/terrain/19/858506/354005.terrain differ diff --git a/public/terrain/19/858506/354006.terrain b/public/terrain/19/858506/354006.terrain new file mode 100644 index 000000000..e8df40cd2 Binary files /dev/null and b/public/terrain/19/858506/354006.terrain differ diff --git a/public/terrain/19/858506/354007.terrain b/public/terrain/19/858506/354007.terrain new file mode 100644 index 000000000..f08d37b63 Binary files /dev/null and b/public/terrain/19/858506/354007.terrain differ diff --git a/public/terrain/19/858506/354008.terrain b/public/terrain/19/858506/354008.terrain new file mode 100644 index 000000000..376d0c550 Binary files /dev/null and b/public/terrain/19/858506/354008.terrain differ diff --git a/public/terrain/19/858506/354009.terrain b/public/terrain/19/858506/354009.terrain new file mode 100644 index 000000000..1d5b7d409 Binary files /dev/null and b/public/terrain/19/858506/354009.terrain differ diff --git a/public/terrain/19/858506/354010.terrain b/public/terrain/19/858506/354010.terrain new file mode 100644 index 000000000..17a6835ed Binary files /dev/null and b/public/terrain/19/858506/354010.terrain differ diff --git a/public/terrain/19/858506/354011.terrain b/public/terrain/19/858506/354011.terrain new file mode 100644 index 000000000..02ba22b13 Binary files /dev/null and b/public/terrain/19/858506/354011.terrain differ diff --git a/public/terrain/19/858506/354012.terrain b/public/terrain/19/858506/354012.terrain new file mode 100644 index 000000000..67da3375c Binary files /dev/null and b/public/terrain/19/858506/354012.terrain differ diff --git a/public/terrain/19/858506/354013.terrain b/public/terrain/19/858506/354013.terrain new file mode 100644 index 000000000..593f3c891 Binary files /dev/null and b/public/terrain/19/858506/354013.terrain differ diff --git a/public/terrain/19/858506/354014.terrain b/public/terrain/19/858506/354014.terrain new file mode 100644 index 000000000..233191160 Binary files /dev/null and b/public/terrain/19/858506/354014.terrain differ diff --git a/public/terrain/19/858506/354015.terrain b/public/terrain/19/858506/354015.terrain new file mode 100644 index 000000000..87a4d6a48 Binary files /dev/null and b/public/terrain/19/858506/354015.terrain differ diff --git a/public/terrain/19/858506/354016.terrain b/public/terrain/19/858506/354016.terrain new file mode 100644 index 000000000..9da191952 Binary files /dev/null and b/public/terrain/19/858506/354016.terrain differ diff --git a/public/terrain/19/858506/354017.terrain b/public/terrain/19/858506/354017.terrain new file mode 100644 index 000000000..c02c42adc Binary files /dev/null and b/public/terrain/19/858506/354017.terrain differ diff --git a/public/terrain/19/858506/354018.terrain b/public/terrain/19/858506/354018.terrain new file mode 100644 index 000000000..71ed8c0ff Binary files /dev/null and b/public/terrain/19/858506/354018.terrain differ diff --git a/public/terrain/19/858506/354019.terrain b/public/terrain/19/858506/354019.terrain new file mode 100644 index 000000000..6bb285e59 Binary files /dev/null and b/public/terrain/19/858506/354019.terrain differ diff --git a/public/terrain/19/858506/354020.terrain b/public/terrain/19/858506/354020.terrain new file mode 100644 index 000000000..60d019572 Binary files /dev/null and b/public/terrain/19/858506/354020.terrain differ diff --git a/public/terrain/19/858506/354021.terrain b/public/terrain/19/858506/354021.terrain new file mode 100644 index 000000000..68eb2b9e3 Binary files /dev/null and b/public/terrain/19/858506/354021.terrain differ diff --git a/public/terrain/19/858506/354022.terrain b/public/terrain/19/858506/354022.terrain new file mode 100644 index 000000000..6142df330 Binary files /dev/null and b/public/terrain/19/858506/354022.terrain differ diff --git a/public/terrain/19/858506/354023.terrain b/public/terrain/19/858506/354023.terrain new file mode 100644 index 000000000..54cae9656 Binary files /dev/null and b/public/terrain/19/858506/354023.terrain differ diff --git a/public/terrain/19/858506/354024.terrain b/public/terrain/19/858506/354024.terrain new file mode 100644 index 000000000..cd8fa30f7 Binary files /dev/null and b/public/terrain/19/858506/354024.terrain differ diff --git a/public/terrain/19/858506/354025.terrain b/public/terrain/19/858506/354025.terrain new file mode 100644 index 000000000..41e952b02 Binary files /dev/null and b/public/terrain/19/858506/354025.terrain differ diff --git a/public/terrain/19/858506/354026.terrain b/public/terrain/19/858506/354026.terrain new file mode 100644 index 000000000..6f053ed0e Binary files /dev/null and b/public/terrain/19/858506/354026.terrain differ diff --git a/public/terrain/19/858506/354027.terrain b/public/terrain/19/858506/354027.terrain new file mode 100644 index 000000000..b14053274 Binary files /dev/null and b/public/terrain/19/858506/354027.terrain differ diff --git a/public/terrain/19/858506/354028.terrain b/public/terrain/19/858506/354028.terrain new file mode 100644 index 000000000..078f1a373 Binary files /dev/null and b/public/terrain/19/858506/354028.terrain differ diff --git a/public/terrain/19/858506/354029.terrain b/public/terrain/19/858506/354029.terrain new file mode 100644 index 000000000..5c84e7386 Binary files /dev/null and b/public/terrain/19/858506/354029.terrain differ diff --git a/public/terrain/19/858506/354030.terrain b/public/terrain/19/858506/354030.terrain new file mode 100644 index 000000000..efcf1f8db Binary files /dev/null and b/public/terrain/19/858506/354030.terrain differ diff --git a/public/terrain/19/858506/354031.terrain b/public/terrain/19/858506/354031.terrain new file mode 100644 index 000000000..f70452b3b Binary files /dev/null and b/public/terrain/19/858506/354031.terrain differ diff --git a/public/terrain/19/858506/354032.terrain b/public/terrain/19/858506/354032.terrain new file mode 100644 index 000000000..99cdbd0bf Binary files /dev/null and b/public/terrain/19/858506/354032.terrain differ diff --git a/public/terrain/19/858506/354033.terrain b/public/terrain/19/858506/354033.terrain new file mode 100644 index 000000000..572ae7cdd Binary files /dev/null and b/public/terrain/19/858506/354033.terrain differ diff --git a/public/terrain/19/858506/354034.terrain b/public/terrain/19/858506/354034.terrain new file mode 100644 index 000000000..0edddcda0 Binary files /dev/null and b/public/terrain/19/858506/354034.terrain differ diff --git a/public/terrain/19/858506/354035.terrain b/public/terrain/19/858506/354035.terrain new file mode 100644 index 000000000..4a5a9610a Binary files /dev/null and b/public/terrain/19/858506/354035.terrain differ diff --git a/public/terrain/19/858506/354036.terrain b/public/terrain/19/858506/354036.terrain new file mode 100644 index 000000000..befa350f1 Binary files /dev/null and b/public/terrain/19/858506/354036.terrain differ diff --git a/public/terrain/19/858506/354037.terrain b/public/terrain/19/858506/354037.terrain new file mode 100644 index 000000000..0c13f9a3b Binary files /dev/null and b/public/terrain/19/858506/354037.terrain differ diff --git a/public/terrain/19/858506/354038.terrain b/public/terrain/19/858506/354038.terrain new file mode 100644 index 000000000..0cc740e12 Binary files /dev/null and b/public/terrain/19/858506/354038.terrain differ diff --git a/public/terrain/19/858506/354039.terrain b/public/terrain/19/858506/354039.terrain new file mode 100644 index 000000000..11eda12a5 Binary files /dev/null and b/public/terrain/19/858506/354039.terrain differ diff --git a/public/terrain/19/858506/354040.terrain b/public/terrain/19/858506/354040.terrain new file mode 100644 index 000000000..036fd865a Binary files /dev/null and b/public/terrain/19/858506/354040.terrain differ diff --git a/public/terrain/19/858506/354041.terrain b/public/terrain/19/858506/354041.terrain new file mode 100644 index 000000000..f7902b75b Binary files /dev/null and b/public/terrain/19/858506/354041.terrain differ diff --git a/public/terrain/19/858506/354042.terrain b/public/terrain/19/858506/354042.terrain new file mode 100644 index 000000000..c601f80a2 Binary files /dev/null and b/public/terrain/19/858506/354042.terrain differ diff --git a/public/terrain/19/858506/354043.terrain b/public/terrain/19/858506/354043.terrain new file mode 100644 index 000000000..87c7be096 Binary files /dev/null and b/public/terrain/19/858506/354043.terrain differ diff --git a/public/terrain/19/858506/354044.terrain b/public/terrain/19/858506/354044.terrain new file mode 100644 index 000000000..a807e81b7 Binary files /dev/null and b/public/terrain/19/858506/354044.terrain differ diff --git a/public/terrain/19/858506/354045.terrain b/public/terrain/19/858506/354045.terrain new file mode 100644 index 000000000..bbdaf54be Binary files /dev/null and b/public/terrain/19/858506/354045.terrain differ diff --git a/public/terrain/19/858506/354046.terrain b/public/terrain/19/858506/354046.terrain new file mode 100644 index 000000000..5a43bc610 Binary files /dev/null and b/public/terrain/19/858506/354046.terrain differ diff --git a/public/terrain/19/858506/354047.terrain b/public/terrain/19/858506/354047.terrain new file mode 100644 index 000000000..9b6568b25 Binary files /dev/null and b/public/terrain/19/858506/354047.terrain differ diff --git a/public/terrain/19/858506/354048.terrain b/public/terrain/19/858506/354048.terrain new file mode 100644 index 000000000..e0168c8a0 Binary files /dev/null and b/public/terrain/19/858506/354048.terrain differ diff --git a/public/terrain/19/858506/354049.terrain b/public/terrain/19/858506/354049.terrain new file mode 100644 index 000000000..086470328 Binary files /dev/null and b/public/terrain/19/858506/354049.terrain differ diff --git a/public/terrain/19/858506/354050.terrain b/public/terrain/19/858506/354050.terrain new file mode 100644 index 000000000..8e7f98431 Binary files /dev/null and b/public/terrain/19/858506/354050.terrain differ diff --git a/public/terrain/19/858506/354051.terrain b/public/terrain/19/858506/354051.terrain new file mode 100644 index 000000000..a97f76bd9 Binary files /dev/null and b/public/terrain/19/858506/354051.terrain differ diff --git a/public/terrain/19/858506/354052.terrain b/public/terrain/19/858506/354052.terrain new file mode 100644 index 000000000..547ac4382 Binary files /dev/null and b/public/terrain/19/858506/354052.terrain differ diff --git a/public/terrain/19/858506/354053.terrain b/public/terrain/19/858506/354053.terrain new file mode 100644 index 000000000..b7b5d546a Binary files /dev/null and b/public/terrain/19/858506/354053.terrain differ diff --git a/public/terrain/19/858506/354054.terrain b/public/terrain/19/858506/354054.terrain new file mode 100644 index 000000000..ae21641b6 Binary files /dev/null and b/public/terrain/19/858506/354054.terrain differ diff --git a/public/terrain/19/858506/354055.terrain b/public/terrain/19/858506/354055.terrain new file mode 100644 index 000000000..21646e486 Binary files /dev/null and b/public/terrain/19/858506/354055.terrain differ diff --git a/public/terrain/19/858506/354056.terrain b/public/terrain/19/858506/354056.terrain new file mode 100644 index 000000000..4698dfb96 Binary files /dev/null and b/public/terrain/19/858506/354056.terrain differ diff --git a/public/terrain/19/858506/354057.terrain b/public/terrain/19/858506/354057.terrain new file mode 100644 index 000000000..590ee79f1 Binary files /dev/null and b/public/terrain/19/858506/354057.terrain differ diff --git a/public/terrain/19/858506/354058.terrain b/public/terrain/19/858506/354058.terrain new file mode 100644 index 000000000..5307b3f84 Binary files /dev/null and b/public/terrain/19/858506/354058.terrain differ diff --git a/public/terrain/19/858506/354059.terrain b/public/terrain/19/858506/354059.terrain new file mode 100644 index 000000000..5e685b803 Binary files /dev/null and b/public/terrain/19/858506/354059.terrain differ diff --git a/public/terrain/19/858507/353743.terrain b/public/terrain/19/858507/353743.terrain new file mode 100644 index 000000000..756d9b5f5 Binary files /dev/null and b/public/terrain/19/858507/353743.terrain differ diff --git a/public/terrain/19/858507/353744.terrain b/public/terrain/19/858507/353744.terrain new file mode 100644 index 000000000..a62002d65 Binary files /dev/null and b/public/terrain/19/858507/353744.terrain differ diff --git a/public/terrain/19/858507/353745.terrain b/public/terrain/19/858507/353745.terrain new file mode 100644 index 000000000..bd75bd150 Binary files /dev/null and b/public/terrain/19/858507/353745.terrain differ diff --git a/public/terrain/19/858507/353746.terrain b/public/terrain/19/858507/353746.terrain new file mode 100644 index 000000000..b91d9f709 Binary files /dev/null and b/public/terrain/19/858507/353746.terrain differ diff --git a/public/terrain/19/858507/353747.terrain b/public/terrain/19/858507/353747.terrain new file mode 100644 index 000000000..dcd904fd2 Binary files /dev/null and b/public/terrain/19/858507/353747.terrain differ diff --git a/public/terrain/19/858507/353748.terrain b/public/terrain/19/858507/353748.terrain new file mode 100644 index 000000000..8d1426a0b Binary files /dev/null and b/public/terrain/19/858507/353748.terrain differ diff --git a/public/terrain/19/858507/353749.terrain b/public/terrain/19/858507/353749.terrain new file mode 100644 index 000000000..3459cda56 Binary files /dev/null and b/public/terrain/19/858507/353749.terrain differ diff --git a/public/terrain/19/858507/353750.terrain b/public/terrain/19/858507/353750.terrain new file mode 100644 index 000000000..53ca42dd2 Binary files /dev/null and b/public/terrain/19/858507/353750.terrain differ diff --git a/public/terrain/19/858507/353751.terrain b/public/terrain/19/858507/353751.terrain new file mode 100644 index 000000000..848ca8254 Binary files /dev/null and b/public/terrain/19/858507/353751.terrain differ diff --git a/public/terrain/19/858507/353752.terrain b/public/terrain/19/858507/353752.terrain new file mode 100644 index 000000000..27d67693d Binary files /dev/null and b/public/terrain/19/858507/353752.terrain differ diff --git a/public/terrain/19/858507/353753.terrain b/public/terrain/19/858507/353753.terrain new file mode 100644 index 000000000..a0bb1bad6 Binary files /dev/null and b/public/terrain/19/858507/353753.terrain differ diff --git a/public/terrain/19/858507/353754.terrain b/public/terrain/19/858507/353754.terrain new file mode 100644 index 000000000..7d2416f88 Binary files /dev/null and b/public/terrain/19/858507/353754.terrain differ diff --git a/public/terrain/19/858507/353755.terrain b/public/terrain/19/858507/353755.terrain new file mode 100644 index 000000000..6011e2ebe Binary files /dev/null and b/public/terrain/19/858507/353755.terrain differ diff --git a/public/terrain/19/858507/353756.terrain b/public/terrain/19/858507/353756.terrain new file mode 100644 index 000000000..358a3d7a4 Binary files /dev/null and b/public/terrain/19/858507/353756.terrain differ diff --git a/public/terrain/19/858507/353757.terrain b/public/terrain/19/858507/353757.terrain new file mode 100644 index 000000000..5c8bf9a29 Binary files /dev/null and b/public/terrain/19/858507/353757.terrain differ diff --git a/public/terrain/19/858507/353758.terrain b/public/terrain/19/858507/353758.terrain new file mode 100644 index 000000000..ce5fc11af Binary files /dev/null and b/public/terrain/19/858507/353758.terrain differ diff --git a/public/terrain/19/858507/353759.terrain b/public/terrain/19/858507/353759.terrain new file mode 100644 index 000000000..116d5e909 Binary files /dev/null and b/public/terrain/19/858507/353759.terrain differ diff --git a/public/terrain/19/858507/353760.terrain b/public/terrain/19/858507/353760.terrain new file mode 100644 index 000000000..b34f5fb2d Binary files /dev/null and b/public/terrain/19/858507/353760.terrain differ diff --git a/public/terrain/19/858507/353761.terrain b/public/terrain/19/858507/353761.terrain new file mode 100644 index 000000000..a120fa73b Binary files /dev/null and b/public/terrain/19/858507/353761.terrain differ diff --git a/public/terrain/19/858507/353762.terrain b/public/terrain/19/858507/353762.terrain new file mode 100644 index 000000000..74b61434a Binary files /dev/null and b/public/terrain/19/858507/353762.terrain differ diff --git a/public/terrain/19/858507/353763.terrain b/public/terrain/19/858507/353763.terrain new file mode 100644 index 000000000..85c272264 Binary files /dev/null and b/public/terrain/19/858507/353763.terrain differ diff --git a/public/terrain/19/858507/353764.terrain b/public/terrain/19/858507/353764.terrain new file mode 100644 index 000000000..d2516dcb2 Binary files /dev/null and b/public/terrain/19/858507/353764.terrain differ diff --git a/public/terrain/19/858507/353765.terrain b/public/terrain/19/858507/353765.terrain new file mode 100644 index 000000000..7c70ee4c0 Binary files /dev/null and b/public/terrain/19/858507/353765.terrain differ diff --git a/public/terrain/19/858507/353766.terrain b/public/terrain/19/858507/353766.terrain new file mode 100644 index 000000000..2b6c1b404 Binary files /dev/null and b/public/terrain/19/858507/353766.terrain differ diff --git a/public/terrain/19/858507/353767.terrain b/public/terrain/19/858507/353767.terrain new file mode 100644 index 000000000..a720b08b4 Binary files /dev/null and b/public/terrain/19/858507/353767.terrain differ diff --git a/public/terrain/19/858507/353768.terrain b/public/terrain/19/858507/353768.terrain new file mode 100644 index 000000000..0c42795ae Binary files /dev/null and b/public/terrain/19/858507/353768.terrain differ diff --git a/public/terrain/19/858507/353769.terrain b/public/terrain/19/858507/353769.terrain new file mode 100644 index 000000000..04b3b6391 Binary files /dev/null and b/public/terrain/19/858507/353769.terrain differ diff --git a/public/terrain/19/858507/353770.terrain b/public/terrain/19/858507/353770.terrain new file mode 100644 index 000000000..e8cd5bf5a Binary files /dev/null and b/public/terrain/19/858507/353770.terrain differ diff --git a/public/terrain/19/858507/353771.terrain b/public/terrain/19/858507/353771.terrain new file mode 100644 index 000000000..beadd847f Binary files /dev/null and b/public/terrain/19/858507/353771.terrain differ diff --git a/public/terrain/19/858507/353772.terrain b/public/terrain/19/858507/353772.terrain new file mode 100644 index 000000000..fc5263c14 Binary files /dev/null and b/public/terrain/19/858507/353772.terrain differ diff --git a/public/terrain/19/858507/353773.terrain b/public/terrain/19/858507/353773.terrain new file mode 100644 index 000000000..f34d1f812 Binary files /dev/null and b/public/terrain/19/858507/353773.terrain differ diff --git a/public/terrain/19/858507/353774.terrain b/public/terrain/19/858507/353774.terrain new file mode 100644 index 000000000..ba257ab33 Binary files /dev/null and b/public/terrain/19/858507/353774.terrain differ diff --git a/public/terrain/19/858507/353775.terrain b/public/terrain/19/858507/353775.terrain new file mode 100644 index 000000000..4d946cf41 Binary files /dev/null and b/public/terrain/19/858507/353775.terrain differ diff --git a/public/terrain/19/858507/353776.terrain b/public/terrain/19/858507/353776.terrain new file mode 100644 index 000000000..96d6718ad Binary files /dev/null and b/public/terrain/19/858507/353776.terrain differ diff --git a/public/terrain/19/858507/353777.terrain b/public/terrain/19/858507/353777.terrain new file mode 100644 index 000000000..40291a235 Binary files /dev/null and b/public/terrain/19/858507/353777.terrain differ diff --git a/public/terrain/19/858507/353778.terrain b/public/terrain/19/858507/353778.terrain new file mode 100644 index 000000000..bf2f98927 Binary files /dev/null and b/public/terrain/19/858507/353778.terrain differ diff --git a/public/terrain/19/858507/353779.terrain b/public/terrain/19/858507/353779.terrain new file mode 100644 index 000000000..dea6aedd5 Binary files /dev/null and b/public/terrain/19/858507/353779.terrain differ diff --git a/public/terrain/19/858507/353780.terrain b/public/terrain/19/858507/353780.terrain new file mode 100644 index 000000000..19e1b40b3 Binary files /dev/null and b/public/terrain/19/858507/353780.terrain differ diff --git a/public/terrain/19/858507/353781.terrain b/public/terrain/19/858507/353781.terrain new file mode 100644 index 000000000..fb6d76296 Binary files /dev/null and b/public/terrain/19/858507/353781.terrain differ diff --git a/public/terrain/19/858507/353782.terrain b/public/terrain/19/858507/353782.terrain new file mode 100644 index 000000000..3a0b8e012 Binary files /dev/null and b/public/terrain/19/858507/353782.terrain differ diff --git a/public/terrain/19/858507/353783.terrain b/public/terrain/19/858507/353783.terrain new file mode 100644 index 000000000..09d82f6ab Binary files /dev/null and b/public/terrain/19/858507/353783.terrain differ diff --git a/public/terrain/19/858507/353784.terrain b/public/terrain/19/858507/353784.terrain new file mode 100644 index 000000000..b3dccb4fe Binary files /dev/null and b/public/terrain/19/858507/353784.terrain differ diff --git a/public/terrain/19/858507/353785.terrain b/public/terrain/19/858507/353785.terrain new file mode 100644 index 000000000..5f03feb8f Binary files /dev/null and b/public/terrain/19/858507/353785.terrain differ diff --git a/public/terrain/19/858507/353786.terrain b/public/terrain/19/858507/353786.terrain new file mode 100644 index 000000000..42fce1fa1 Binary files /dev/null and b/public/terrain/19/858507/353786.terrain differ diff --git a/public/terrain/19/858507/353787.terrain b/public/terrain/19/858507/353787.terrain new file mode 100644 index 000000000..51b712d66 Binary files /dev/null and b/public/terrain/19/858507/353787.terrain differ diff --git a/public/terrain/19/858507/353788.terrain b/public/terrain/19/858507/353788.terrain new file mode 100644 index 000000000..fd860742e Binary files /dev/null and b/public/terrain/19/858507/353788.terrain differ diff --git a/public/terrain/19/858507/353789.terrain b/public/terrain/19/858507/353789.terrain new file mode 100644 index 000000000..e62d3f582 Binary files /dev/null and b/public/terrain/19/858507/353789.terrain differ diff --git a/public/terrain/19/858507/353790.terrain b/public/terrain/19/858507/353790.terrain new file mode 100644 index 000000000..b94b8d0dc Binary files /dev/null and b/public/terrain/19/858507/353790.terrain differ diff --git a/public/terrain/19/858507/353791.terrain b/public/terrain/19/858507/353791.terrain new file mode 100644 index 000000000..df84b566b Binary files /dev/null and b/public/terrain/19/858507/353791.terrain differ diff --git a/public/terrain/19/858507/353792.terrain b/public/terrain/19/858507/353792.terrain new file mode 100644 index 000000000..11fe02f8c Binary files /dev/null and b/public/terrain/19/858507/353792.terrain differ diff --git a/public/terrain/19/858507/353793.terrain b/public/terrain/19/858507/353793.terrain new file mode 100644 index 000000000..73aa824f4 Binary files /dev/null and b/public/terrain/19/858507/353793.terrain differ diff --git a/public/terrain/19/858507/353794.terrain b/public/terrain/19/858507/353794.terrain new file mode 100644 index 000000000..3087eca8c Binary files /dev/null and b/public/terrain/19/858507/353794.terrain differ diff --git a/public/terrain/19/858507/353795.terrain b/public/terrain/19/858507/353795.terrain new file mode 100644 index 000000000..06f022531 Binary files /dev/null and b/public/terrain/19/858507/353795.terrain differ diff --git a/public/terrain/19/858507/353796.terrain b/public/terrain/19/858507/353796.terrain new file mode 100644 index 000000000..b9cfbed20 Binary files /dev/null and b/public/terrain/19/858507/353796.terrain differ diff --git a/public/terrain/19/858507/353797.terrain b/public/terrain/19/858507/353797.terrain new file mode 100644 index 000000000..e209b3090 Binary files /dev/null and b/public/terrain/19/858507/353797.terrain differ diff --git a/public/terrain/19/858507/353798.terrain b/public/terrain/19/858507/353798.terrain new file mode 100644 index 000000000..f42ec0f32 Binary files /dev/null and b/public/terrain/19/858507/353798.terrain differ diff --git a/public/terrain/19/858507/353799.terrain b/public/terrain/19/858507/353799.terrain new file mode 100644 index 000000000..9f796160a Binary files /dev/null and b/public/terrain/19/858507/353799.terrain differ diff --git a/public/terrain/19/858507/353800.terrain b/public/terrain/19/858507/353800.terrain new file mode 100644 index 000000000..bfcf10e2a Binary files /dev/null and b/public/terrain/19/858507/353800.terrain differ diff --git a/public/terrain/19/858507/353801.terrain b/public/terrain/19/858507/353801.terrain new file mode 100644 index 000000000..3ea32ff54 Binary files /dev/null and b/public/terrain/19/858507/353801.terrain differ diff --git a/public/terrain/19/858507/353802.terrain b/public/terrain/19/858507/353802.terrain new file mode 100644 index 000000000..3eb773a48 Binary files /dev/null and b/public/terrain/19/858507/353802.terrain differ diff --git a/public/terrain/19/858507/353803.terrain b/public/terrain/19/858507/353803.terrain new file mode 100644 index 000000000..4379375d8 Binary files /dev/null and b/public/terrain/19/858507/353803.terrain differ diff --git a/public/terrain/19/858507/353804.terrain b/public/terrain/19/858507/353804.terrain new file mode 100644 index 000000000..5b22322e4 Binary files /dev/null and b/public/terrain/19/858507/353804.terrain differ diff --git a/public/terrain/19/858507/353805.terrain b/public/terrain/19/858507/353805.terrain new file mode 100644 index 000000000..00e9ce0f3 Binary files /dev/null and b/public/terrain/19/858507/353805.terrain differ diff --git a/public/terrain/19/858507/353806.terrain b/public/terrain/19/858507/353806.terrain new file mode 100644 index 000000000..3f7309f4e Binary files /dev/null and b/public/terrain/19/858507/353806.terrain differ diff --git a/public/terrain/19/858507/353807.terrain b/public/terrain/19/858507/353807.terrain new file mode 100644 index 000000000..538a94bf7 Binary files /dev/null and b/public/terrain/19/858507/353807.terrain differ diff --git a/public/terrain/19/858507/353808.terrain b/public/terrain/19/858507/353808.terrain new file mode 100644 index 000000000..b40202959 Binary files /dev/null and b/public/terrain/19/858507/353808.terrain differ diff --git a/public/terrain/19/858507/353809.terrain b/public/terrain/19/858507/353809.terrain new file mode 100644 index 000000000..b837a4a00 Binary files /dev/null and b/public/terrain/19/858507/353809.terrain differ diff --git a/public/terrain/19/858507/353810.terrain b/public/terrain/19/858507/353810.terrain new file mode 100644 index 000000000..10c6a96f1 Binary files /dev/null and b/public/terrain/19/858507/353810.terrain differ diff --git a/public/terrain/19/858507/353811.terrain b/public/terrain/19/858507/353811.terrain new file mode 100644 index 000000000..fa8d32137 Binary files /dev/null and b/public/terrain/19/858507/353811.terrain differ diff --git a/public/terrain/19/858507/353812.terrain b/public/terrain/19/858507/353812.terrain new file mode 100644 index 000000000..f448ca563 Binary files /dev/null and b/public/terrain/19/858507/353812.terrain differ diff --git a/public/terrain/19/858507/353813.terrain b/public/terrain/19/858507/353813.terrain new file mode 100644 index 000000000..70a573656 Binary files /dev/null and b/public/terrain/19/858507/353813.terrain differ diff --git a/public/terrain/19/858507/353814.terrain b/public/terrain/19/858507/353814.terrain new file mode 100644 index 000000000..34a3781c2 Binary files /dev/null and b/public/terrain/19/858507/353814.terrain differ diff --git a/public/terrain/19/858507/353815.terrain b/public/terrain/19/858507/353815.terrain new file mode 100644 index 000000000..0242e8657 Binary files /dev/null and b/public/terrain/19/858507/353815.terrain differ diff --git a/public/terrain/19/858507/353816.terrain b/public/terrain/19/858507/353816.terrain new file mode 100644 index 000000000..cf0472f05 Binary files /dev/null and b/public/terrain/19/858507/353816.terrain differ diff --git a/public/terrain/19/858507/353817.terrain b/public/terrain/19/858507/353817.terrain new file mode 100644 index 000000000..00a9aa50f Binary files /dev/null and b/public/terrain/19/858507/353817.terrain differ diff --git a/public/terrain/19/858507/353818.terrain b/public/terrain/19/858507/353818.terrain new file mode 100644 index 000000000..5fe86fc00 Binary files /dev/null and b/public/terrain/19/858507/353818.terrain differ diff --git a/public/terrain/19/858507/353819.terrain b/public/terrain/19/858507/353819.terrain new file mode 100644 index 000000000..d900f4dc3 Binary files /dev/null and b/public/terrain/19/858507/353819.terrain differ diff --git a/public/terrain/19/858507/353820.terrain b/public/terrain/19/858507/353820.terrain new file mode 100644 index 000000000..04c334144 Binary files /dev/null and b/public/terrain/19/858507/353820.terrain differ diff --git a/public/terrain/19/858507/353821.terrain b/public/terrain/19/858507/353821.terrain new file mode 100644 index 000000000..d5aa5ae9a Binary files /dev/null and b/public/terrain/19/858507/353821.terrain differ diff --git a/public/terrain/19/858507/353822.terrain b/public/terrain/19/858507/353822.terrain new file mode 100644 index 000000000..2bcd8c195 Binary files /dev/null and b/public/terrain/19/858507/353822.terrain differ diff --git a/public/terrain/19/858507/353823.terrain b/public/terrain/19/858507/353823.terrain new file mode 100644 index 000000000..190c1057b Binary files /dev/null and b/public/terrain/19/858507/353823.terrain differ diff --git a/public/terrain/19/858507/353824.terrain b/public/terrain/19/858507/353824.terrain new file mode 100644 index 000000000..458ca3b6f Binary files /dev/null and b/public/terrain/19/858507/353824.terrain differ diff --git a/public/terrain/19/858507/353825.terrain b/public/terrain/19/858507/353825.terrain new file mode 100644 index 000000000..c9b75242b Binary files /dev/null and b/public/terrain/19/858507/353825.terrain differ diff --git a/public/terrain/19/858507/353826.terrain b/public/terrain/19/858507/353826.terrain new file mode 100644 index 000000000..a111cae09 Binary files /dev/null and b/public/terrain/19/858507/353826.terrain differ diff --git a/public/terrain/19/858507/353827.terrain b/public/terrain/19/858507/353827.terrain new file mode 100644 index 000000000..f9e6ec1c4 Binary files /dev/null and b/public/terrain/19/858507/353827.terrain differ diff --git a/public/terrain/19/858507/353828.terrain b/public/terrain/19/858507/353828.terrain new file mode 100644 index 000000000..398164be2 Binary files /dev/null and b/public/terrain/19/858507/353828.terrain differ diff --git a/public/terrain/19/858507/353829.terrain b/public/terrain/19/858507/353829.terrain new file mode 100644 index 000000000..66e955b87 Binary files /dev/null and b/public/terrain/19/858507/353829.terrain differ diff --git a/public/terrain/19/858507/353830.terrain b/public/terrain/19/858507/353830.terrain new file mode 100644 index 000000000..6095d214b Binary files /dev/null and b/public/terrain/19/858507/353830.terrain differ diff --git a/public/terrain/19/858507/353831.terrain b/public/terrain/19/858507/353831.terrain new file mode 100644 index 000000000..4739a7ae5 Binary files /dev/null and b/public/terrain/19/858507/353831.terrain differ diff --git a/public/terrain/19/858507/353832.terrain b/public/terrain/19/858507/353832.terrain new file mode 100644 index 000000000..ed6456f0a Binary files /dev/null and b/public/terrain/19/858507/353832.terrain differ diff --git a/public/terrain/19/858507/353833.terrain b/public/terrain/19/858507/353833.terrain new file mode 100644 index 000000000..2484d370f Binary files /dev/null and b/public/terrain/19/858507/353833.terrain differ diff --git a/public/terrain/19/858507/353834.terrain b/public/terrain/19/858507/353834.terrain new file mode 100644 index 000000000..7f2d914e1 Binary files /dev/null and b/public/terrain/19/858507/353834.terrain differ diff --git a/public/terrain/19/858507/353835.terrain b/public/terrain/19/858507/353835.terrain new file mode 100644 index 000000000..ab0a2e53a Binary files /dev/null and b/public/terrain/19/858507/353835.terrain differ diff --git a/public/terrain/19/858507/353836.terrain b/public/terrain/19/858507/353836.terrain new file mode 100644 index 000000000..3368bb6aa Binary files /dev/null and b/public/terrain/19/858507/353836.terrain differ diff --git a/public/terrain/19/858507/353837.terrain b/public/terrain/19/858507/353837.terrain new file mode 100644 index 000000000..c6a23e3c1 Binary files /dev/null and b/public/terrain/19/858507/353837.terrain differ diff --git a/public/terrain/19/858507/353838.terrain b/public/terrain/19/858507/353838.terrain new file mode 100644 index 000000000..06de7884c Binary files /dev/null and b/public/terrain/19/858507/353838.terrain differ diff --git a/public/terrain/19/858507/353839.terrain b/public/terrain/19/858507/353839.terrain new file mode 100644 index 000000000..c4de0bbd0 Binary files /dev/null and b/public/terrain/19/858507/353839.terrain differ diff --git a/public/terrain/19/858507/353840.terrain b/public/terrain/19/858507/353840.terrain new file mode 100644 index 000000000..5f1bd7171 Binary files /dev/null and b/public/terrain/19/858507/353840.terrain differ diff --git a/public/terrain/19/858507/353841.terrain b/public/terrain/19/858507/353841.terrain new file mode 100644 index 000000000..2eda90967 Binary files /dev/null and b/public/terrain/19/858507/353841.terrain differ diff --git a/public/terrain/19/858507/353842.terrain b/public/terrain/19/858507/353842.terrain new file mode 100644 index 000000000..5dbd84f7b Binary files /dev/null and b/public/terrain/19/858507/353842.terrain differ diff --git a/public/terrain/19/858507/353843.terrain b/public/terrain/19/858507/353843.terrain new file mode 100644 index 000000000..6165b91bc Binary files /dev/null and b/public/terrain/19/858507/353843.terrain differ diff --git a/public/terrain/19/858507/353844.terrain b/public/terrain/19/858507/353844.terrain new file mode 100644 index 000000000..8abf36950 Binary files /dev/null and b/public/terrain/19/858507/353844.terrain differ diff --git a/public/terrain/19/858507/353845.terrain b/public/terrain/19/858507/353845.terrain new file mode 100644 index 000000000..e02fe77df Binary files /dev/null and b/public/terrain/19/858507/353845.terrain differ diff --git a/public/terrain/19/858507/353846.terrain b/public/terrain/19/858507/353846.terrain new file mode 100644 index 000000000..009d86b1a Binary files /dev/null and b/public/terrain/19/858507/353846.terrain differ diff --git a/public/terrain/19/858507/353847.terrain b/public/terrain/19/858507/353847.terrain new file mode 100644 index 000000000..c4c7b384a Binary files /dev/null and b/public/terrain/19/858507/353847.terrain differ diff --git a/public/terrain/19/858507/353848.terrain b/public/terrain/19/858507/353848.terrain new file mode 100644 index 000000000..6f77f68bc Binary files /dev/null and b/public/terrain/19/858507/353848.terrain differ diff --git a/public/terrain/19/858507/353849.terrain b/public/terrain/19/858507/353849.terrain new file mode 100644 index 000000000..e2a85eb48 Binary files /dev/null and b/public/terrain/19/858507/353849.terrain differ diff --git a/public/terrain/19/858507/353850.terrain b/public/terrain/19/858507/353850.terrain new file mode 100644 index 000000000..a6e5b41a8 Binary files /dev/null and b/public/terrain/19/858507/353850.terrain differ diff --git a/public/terrain/19/858507/353851.terrain b/public/terrain/19/858507/353851.terrain new file mode 100644 index 000000000..6a4843310 Binary files /dev/null and b/public/terrain/19/858507/353851.terrain differ diff --git a/public/terrain/19/858507/353852.terrain b/public/terrain/19/858507/353852.terrain new file mode 100644 index 000000000..4f4750e4f Binary files /dev/null and b/public/terrain/19/858507/353852.terrain differ diff --git a/public/terrain/19/858507/353853.terrain b/public/terrain/19/858507/353853.terrain new file mode 100644 index 000000000..84b7b26f8 Binary files /dev/null and b/public/terrain/19/858507/353853.terrain differ diff --git a/public/terrain/19/858507/353854.terrain b/public/terrain/19/858507/353854.terrain new file mode 100644 index 000000000..97533d368 Binary files /dev/null and b/public/terrain/19/858507/353854.terrain differ diff --git a/public/terrain/19/858507/353855.terrain b/public/terrain/19/858507/353855.terrain new file mode 100644 index 000000000..22d697dfb Binary files /dev/null and b/public/terrain/19/858507/353855.terrain differ diff --git a/public/terrain/19/858507/353856.terrain b/public/terrain/19/858507/353856.terrain new file mode 100644 index 000000000..4c1f8b79c Binary files /dev/null and b/public/terrain/19/858507/353856.terrain differ diff --git a/public/terrain/19/858507/353857.terrain b/public/terrain/19/858507/353857.terrain new file mode 100644 index 000000000..a46053403 Binary files /dev/null and b/public/terrain/19/858507/353857.terrain differ diff --git a/public/terrain/19/858507/353858.terrain b/public/terrain/19/858507/353858.terrain new file mode 100644 index 000000000..28bc8072e Binary files /dev/null and b/public/terrain/19/858507/353858.terrain differ diff --git a/public/terrain/19/858507/353859.terrain b/public/terrain/19/858507/353859.terrain new file mode 100644 index 000000000..17966a072 Binary files /dev/null and b/public/terrain/19/858507/353859.terrain differ diff --git a/public/terrain/19/858507/353860.terrain b/public/terrain/19/858507/353860.terrain new file mode 100644 index 000000000..6417a8550 Binary files /dev/null and b/public/terrain/19/858507/353860.terrain differ diff --git a/public/terrain/19/858507/353861.terrain b/public/terrain/19/858507/353861.terrain new file mode 100644 index 000000000..042c59ebf Binary files /dev/null and b/public/terrain/19/858507/353861.terrain differ diff --git a/public/terrain/19/858507/353862.terrain b/public/terrain/19/858507/353862.terrain new file mode 100644 index 000000000..23ef807dc Binary files /dev/null and b/public/terrain/19/858507/353862.terrain differ diff --git a/public/terrain/19/858507/353863.terrain b/public/terrain/19/858507/353863.terrain new file mode 100644 index 000000000..e4d6fd5fc Binary files /dev/null and b/public/terrain/19/858507/353863.terrain differ diff --git a/public/terrain/19/858507/353864.terrain b/public/terrain/19/858507/353864.terrain new file mode 100644 index 000000000..f7b281f48 Binary files /dev/null and b/public/terrain/19/858507/353864.terrain differ diff --git a/public/terrain/19/858507/353865.terrain b/public/terrain/19/858507/353865.terrain new file mode 100644 index 000000000..74f80f459 Binary files /dev/null and b/public/terrain/19/858507/353865.terrain differ diff --git a/public/terrain/19/858507/353866.terrain b/public/terrain/19/858507/353866.terrain new file mode 100644 index 000000000..614ca28a5 Binary files /dev/null and b/public/terrain/19/858507/353866.terrain differ diff --git a/public/terrain/19/858507/353867.terrain b/public/terrain/19/858507/353867.terrain new file mode 100644 index 000000000..171a8ab62 Binary files /dev/null and b/public/terrain/19/858507/353867.terrain differ diff --git a/public/terrain/19/858507/353868.terrain b/public/terrain/19/858507/353868.terrain new file mode 100644 index 000000000..fd3cb46c7 Binary files /dev/null and b/public/terrain/19/858507/353868.terrain differ diff --git a/public/terrain/19/858507/353869.terrain b/public/terrain/19/858507/353869.terrain new file mode 100644 index 000000000..85cbd3009 Binary files /dev/null and b/public/terrain/19/858507/353869.terrain differ diff --git a/public/terrain/19/858507/353870.terrain b/public/terrain/19/858507/353870.terrain new file mode 100644 index 000000000..b5b7aeb3d Binary files /dev/null and b/public/terrain/19/858507/353870.terrain differ diff --git a/public/terrain/19/858507/353871.terrain b/public/terrain/19/858507/353871.terrain new file mode 100644 index 000000000..f710d2c24 Binary files /dev/null and b/public/terrain/19/858507/353871.terrain differ diff --git a/public/terrain/19/858507/353872.terrain b/public/terrain/19/858507/353872.terrain new file mode 100644 index 000000000..8b5984b2d Binary files /dev/null and b/public/terrain/19/858507/353872.terrain differ diff --git a/public/terrain/19/858507/353873.terrain b/public/terrain/19/858507/353873.terrain new file mode 100644 index 000000000..be419f754 Binary files /dev/null and b/public/terrain/19/858507/353873.terrain differ diff --git a/public/terrain/19/858507/353874.terrain b/public/terrain/19/858507/353874.terrain new file mode 100644 index 000000000..4f12a3fdc Binary files /dev/null and b/public/terrain/19/858507/353874.terrain differ diff --git a/public/terrain/19/858507/353875.terrain b/public/terrain/19/858507/353875.terrain new file mode 100644 index 000000000..22fa618ba Binary files /dev/null and b/public/terrain/19/858507/353875.terrain differ diff --git a/public/terrain/19/858507/353876.terrain b/public/terrain/19/858507/353876.terrain new file mode 100644 index 000000000..024f35b64 Binary files /dev/null and b/public/terrain/19/858507/353876.terrain differ diff --git a/public/terrain/19/858507/353877.terrain b/public/terrain/19/858507/353877.terrain new file mode 100644 index 000000000..7d62ced38 Binary files /dev/null and b/public/terrain/19/858507/353877.terrain differ diff --git a/public/terrain/19/858507/353878.terrain b/public/terrain/19/858507/353878.terrain new file mode 100644 index 000000000..e447c0021 Binary files /dev/null and b/public/terrain/19/858507/353878.terrain differ diff --git a/public/terrain/19/858507/353879.terrain b/public/terrain/19/858507/353879.terrain new file mode 100644 index 000000000..4d669ecd4 Binary files /dev/null and b/public/terrain/19/858507/353879.terrain differ diff --git a/public/terrain/19/858507/353880.terrain b/public/terrain/19/858507/353880.terrain new file mode 100644 index 000000000..cf421d9d5 Binary files /dev/null and b/public/terrain/19/858507/353880.terrain differ diff --git a/public/terrain/19/858507/353881.terrain b/public/terrain/19/858507/353881.terrain new file mode 100644 index 000000000..d91a29e96 Binary files /dev/null and b/public/terrain/19/858507/353881.terrain differ diff --git a/public/terrain/19/858507/353882.terrain b/public/terrain/19/858507/353882.terrain new file mode 100644 index 000000000..729de0e54 Binary files /dev/null and b/public/terrain/19/858507/353882.terrain differ diff --git a/public/terrain/19/858507/353883.terrain b/public/terrain/19/858507/353883.terrain new file mode 100644 index 000000000..d3872f916 Binary files /dev/null and b/public/terrain/19/858507/353883.terrain differ diff --git a/public/terrain/19/858507/353884.terrain b/public/terrain/19/858507/353884.terrain new file mode 100644 index 000000000..1868075a9 Binary files /dev/null and b/public/terrain/19/858507/353884.terrain differ diff --git a/public/terrain/19/858507/353885.terrain b/public/terrain/19/858507/353885.terrain new file mode 100644 index 000000000..3fa09604a Binary files /dev/null and b/public/terrain/19/858507/353885.terrain differ diff --git a/public/terrain/19/858507/353886.terrain b/public/terrain/19/858507/353886.terrain new file mode 100644 index 000000000..003c0dfb9 Binary files /dev/null and b/public/terrain/19/858507/353886.terrain differ diff --git a/public/terrain/19/858507/353887.terrain b/public/terrain/19/858507/353887.terrain new file mode 100644 index 000000000..f0094f5d2 Binary files /dev/null and b/public/terrain/19/858507/353887.terrain differ diff --git a/public/terrain/19/858507/353888.terrain b/public/terrain/19/858507/353888.terrain new file mode 100644 index 000000000..a3306264d Binary files /dev/null and b/public/terrain/19/858507/353888.terrain differ diff --git a/public/terrain/19/858507/353889.terrain b/public/terrain/19/858507/353889.terrain new file mode 100644 index 000000000..0fdc41001 Binary files /dev/null and b/public/terrain/19/858507/353889.terrain differ diff --git a/public/terrain/19/858507/353890.terrain b/public/terrain/19/858507/353890.terrain new file mode 100644 index 000000000..301246cbb Binary files /dev/null and b/public/terrain/19/858507/353890.terrain differ diff --git a/public/terrain/19/858507/353891.terrain b/public/terrain/19/858507/353891.terrain new file mode 100644 index 000000000..d1385a2c9 Binary files /dev/null and b/public/terrain/19/858507/353891.terrain differ diff --git a/public/terrain/19/858507/353892.terrain b/public/terrain/19/858507/353892.terrain new file mode 100644 index 000000000..56119118e Binary files /dev/null and b/public/terrain/19/858507/353892.terrain differ diff --git a/public/terrain/19/858507/353893.terrain b/public/terrain/19/858507/353893.terrain new file mode 100644 index 000000000..40bd7c387 Binary files /dev/null and b/public/terrain/19/858507/353893.terrain differ diff --git a/public/terrain/19/858507/353894.terrain b/public/terrain/19/858507/353894.terrain new file mode 100644 index 000000000..f50c733c2 Binary files /dev/null and b/public/terrain/19/858507/353894.terrain differ diff --git a/public/terrain/19/858507/353895.terrain b/public/terrain/19/858507/353895.terrain new file mode 100644 index 000000000..67a71a792 Binary files /dev/null and b/public/terrain/19/858507/353895.terrain differ diff --git a/public/terrain/19/858507/353896.terrain b/public/terrain/19/858507/353896.terrain new file mode 100644 index 000000000..1e72fd83f Binary files /dev/null and b/public/terrain/19/858507/353896.terrain differ diff --git a/public/terrain/19/858507/353897.terrain b/public/terrain/19/858507/353897.terrain new file mode 100644 index 000000000..51bc0db94 Binary files /dev/null and b/public/terrain/19/858507/353897.terrain differ diff --git a/public/terrain/19/858507/353898.terrain b/public/terrain/19/858507/353898.terrain new file mode 100644 index 000000000..3925278e2 Binary files /dev/null and b/public/terrain/19/858507/353898.terrain differ diff --git a/public/terrain/19/858507/353899.terrain b/public/terrain/19/858507/353899.terrain new file mode 100644 index 000000000..1b6364a86 Binary files /dev/null and b/public/terrain/19/858507/353899.terrain differ diff --git a/public/terrain/19/858507/353900.terrain b/public/terrain/19/858507/353900.terrain new file mode 100644 index 000000000..abe6c6d94 Binary files /dev/null and b/public/terrain/19/858507/353900.terrain differ diff --git a/public/terrain/19/858507/353901.terrain b/public/terrain/19/858507/353901.terrain new file mode 100644 index 000000000..9c15b4df5 Binary files /dev/null and b/public/terrain/19/858507/353901.terrain differ diff --git a/public/terrain/19/858507/353902.terrain b/public/terrain/19/858507/353902.terrain new file mode 100644 index 000000000..502831fa3 Binary files /dev/null and b/public/terrain/19/858507/353902.terrain differ diff --git a/public/terrain/19/858507/353903.terrain b/public/terrain/19/858507/353903.terrain new file mode 100644 index 000000000..6a5d66368 Binary files /dev/null and b/public/terrain/19/858507/353903.terrain differ diff --git a/public/terrain/19/858507/353904.terrain b/public/terrain/19/858507/353904.terrain new file mode 100644 index 000000000..3091192f4 Binary files /dev/null and b/public/terrain/19/858507/353904.terrain differ diff --git a/public/terrain/19/858507/353905.terrain b/public/terrain/19/858507/353905.terrain new file mode 100644 index 000000000..8fb6c5a9b Binary files /dev/null and b/public/terrain/19/858507/353905.terrain differ diff --git a/public/terrain/19/858507/353906.terrain b/public/terrain/19/858507/353906.terrain new file mode 100644 index 000000000..1efb71d48 Binary files /dev/null and b/public/terrain/19/858507/353906.terrain differ diff --git a/public/terrain/19/858507/353907.terrain b/public/terrain/19/858507/353907.terrain new file mode 100644 index 000000000..c7b494daa Binary files /dev/null and b/public/terrain/19/858507/353907.terrain differ diff --git a/public/terrain/19/858507/353908.terrain b/public/terrain/19/858507/353908.terrain new file mode 100644 index 000000000..aadc047be Binary files /dev/null and b/public/terrain/19/858507/353908.terrain differ diff --git a/public/terrain/19/858507/353909.terrain b/public/terrain/19/858507/353909.terrain new file mode 100644 index 000000000..16ab014be Binary files /dev/null and b/public/terrain/19/858507/353909.terrain differ diff --git a/public/terrain/19/858507/353910.terrain b/public/terrain/19/858507/353910.terrain new file mode 100644 index 000000000..ed86c0a3b Binary files /dev/null and b/public/terrain/19/858507/353910.terrain differ diff --git a/public/terrain/19/858507/353911.terrain b/public/terrain/19/858507/353911.terrain new file mode 100644 index 000000000..42550e916 Binary files /dev/null and b/public/terrain/19/858507/353911.terrain differ diff --git a/public/terrain/19/858507/353912.terrain b/public/terrain/19/858507/353912.terrain new file mode 100644 index 000000000..0e10dd61c Binary files /dev/null and b/public/terrain/19/858507/353912.terrain differ diff --git a/public/terrain/19/858507/353913.terrain b/public/terrain/19/858507/353913.terrain new file mode 100644 index 000000000..ffd619dd6 Binary files /dev/null and b/public/terrain/19/858507/353913.terrain differ diff --git a/public/terrain/19/858507/353914.terrain b/public/terrain/19/858507/353914.terrain new file mode 100644 index 000000000..5a88045d4 Binary files /dev/null and b/public/terrain/19/858507/353914.terrain differ diff --git a/public/terrain/19/858507/353915.terrain b/public/terrain/19/858507/353915.terrain new file mode 100644 index 000000000..b6ed294db Binary files /dev/null and b/public/terrain/19/858507/353915.terrain differ diff --git a/public/terrain/19/858507/353916.terrain b/public/terrain/19/858507/353916.terrain new file mode 100644 index 000000000..4aba275c7 Binary files /dev/null and b/public/terrain/19/858507/353916.terrain differ diff --git a/public/terrain/19/858507/353917.terrain b/public/terrain/19/858507/353917.terrain new file mode 100644 index 000000000..e98d94053 Binary files /dev/null and b/public/terrain/19/858507/353917.terrain differ diff --git a/public/terrain/19/858507/353918.terrain b/public/terrain/19/858507/353918.terrain new file mode 100644 index 000000000..a873fd11a Binary files /dev/null and b/public/terrain/19/858507/353918.terrain differ diff --git a/public/terrain/19/858507/353919.terrain b/public/terrain/19/858507/353919.terrain new file mode 100644 index 000000000..b9935ecd0 Binary files /dev/null and b/public/terrain/19/858507/353919.terrain differ diff --git a/public/terrain/19/858507/353920.terrain b/public/terrain/19/858507/353920.terrain new file mode 100644 index 000000000..ce7040323 Binary files /dev/null and b/public/terrain/19/858507/353920.terrain differ diff --git a/public/terrain/19/858507/353921.terrain b/public/terrain/19/858507/353921.terrain new file mode 100644 index 000000000..635b3cd6f Binary files /dev/null and b/public/terrain/19/858507/353921.terrain differ diff --git a/public/terrain/19/858507/353922.terrain b/public/terrain/19/858507/353922.terrain new file mode 100644 index 000000000..3531751e1 Binary files /dev/null and b/public/terrain/19/858507/353922.terrain differ diff --git a/public/terrain/19/858507/353923.terrain b/public/terrain/19/858507/353923.terrain new file mode 100644 index 000000000..f799ba1e1 Binary files /dev/null and b/public/terrain/19/858507/353923.terrain differ diff --git a/public/terrain/19/858507/353924.terrain b/public/terrain/19/858507/353924.terrain new file mode 100644 index 000000000..f5592793e Binary files /dev/null and b/public/terrain/19/858507/353924.terrain differ diff --git a/public/terrain/19/858507/353925.terrain b/public/terrain/19/858507/353925.terrain new file mode 100644 index 000000000..82a6b5fa4 Binary files /dev/null and b/public/terrain/19/858507/353925.terrain differ diff --git a/public/terrain/19/858507/353926.terrain b/public/terrain/19/858507/353926.terrain new file mode 100644 index 000000000..e15cf9a1e Binary files /dev/null and b/public/terrain/19/858507/353926.terrain differ diff --git a/public/terrain/19/858507/353927.terrain b/public/terrain/19/858507/353927.terrain new file mode 100644 index 000000000..b02c74972 Binary files /dev/null and b/public/terrain/19/858507/353927.terrain differ diff --git a/public/terrain/19/858507/353928.terrain b/public/terrain/19/858507/353928.terrain new file mode 100644 index 000000000..53f6a61fd Binary files /dev/null and b/public/terrain/19/858507/353928.terrain differ diff --git a/public/terrain/19/858507/353929.terrain b/public/terrain/19/858507/353929.terrain new file mode 100644 index 000000000..427003206 Binary files /dev/null and b/public/terrain/19/858507/353929.terrain differ diff --git a/public/terrain/19/858507/353930.terrain b/public/terrain/19/858507/353930.terrain new file mode 100644 index 000000000..882b38341 Binary files /dev/null and b/public/terrain/19/858507/353930.terrain differ diff --git a/public/terrain/19/858507/353931.terrain b/public/terrain/19/858507/353931.terrain new file mode 100644 index 000000000..c3698ea5e Binary files /dev/null and b/public/terrain/19/858507/353931.terrain differ diff --git a/public/terrain/19/858507/353932.terrain b/public/terrain/19/858507/353932.terrain new file mode 100644 index 000000000..9e81fce62 Binary files /dev/null and b/public/terrain/19/858507/353932.terrain differ diff --git a/public/terrain/19/858507/353933.terrain b/public/terrain/19/858507/353933.terrain new file mode 100644 index 000000000..d241f3bab Binary files /dev/null and b/public/terrain/19/858507/353933.terrain differ diff --git a/public/terrain/19/858507/353934.terrain b/public/terrain/19/858507/353934.terrain new file mode 100644 index 000000000..2ddb4b200 Binary files /dev/null and b/public/terrain/19/858507/353934.terrain differ diff --git a/public/terrain/19/858507/353935.terrain b/public/terrain/19/858507/353935.terrain new file mode 100644 index 000000000..1b5cf90af Binary files /dev/null and b/public/terrain/19/858507/353935.terrain differ diff --git a/public/terrain/19/858507/353936.terrain b/public/terrain/19/858507/353936.terrain new file mode 100644 index 000000000..4175391bb Binary files /dev/null and b/public/terrain/19/858507/353936.terrain differ diff --git a/public/terrain/19/858507/353937.terrain b/public/terrain/19/858507/353937.terrain new file mode 100644 index 000000000..eccfc17e3 Binary files /dev/null and b/public/terrain/19/858507/353937.terrain differ diff --git a/public/terrain/19/858507/353938.terrain b/public/terrain/19/858507/353938.terrain new file mode 100644 index 000000000..63c12fa5c Binary files /dev/null and b/public/terrain/19/858507/353938.terrain differ diff --git a/public/terrain/19/858507/353939.terrain b/public/terrain/19/858507/353939.terrain new file mode 100644 index 000000000..42086409d Binary files /dev/null and b/public/terrain/19/858507/353939.terrain differ diff --git a/public/terrain/19/858507/353940.terrain b/public/terrain/19/858507/353940.terrain new file mode 100644 index 000000000..a17172179 Binary files /dev/null and b/public/terrain/19/858507/353940.terrain differ diff --git a/public/terrain/19/858507/353941.terrain b/public/terrain/19/858507/353941.terrain new file mode 100644 index 000000000..ec94bb7cf Binary files /dev/null and b/public/terrain/19/858507/353941.terrain differ diff --git a/public/terrain/19/858507/353942.terrain b/public/terrain/19/858507/353942.terrain new file mode 100644 index 000000000..20ae3f685 Binary files /dev/null and b/public/terrain/19/858507/353942.terrain differ diff --git a/public/terrain/19/858507/353943.terrain b/public/terrain/19/858507/353943.terrain new file mode 100644 index 000000000..3e7068c47 Binary files /dev/null and b/public/terrain/19/858507/353943.terrain differ diff --git a/public/terrain/19/858507/353944.terrain b/public/terrain/19/858507/353944.terrain new file mode 100644 index 000000000..8268b5ff2 Binary files /dev/null and b/public/terrain/19/858507/353944.terrain differ diff --git a/public/terrain/19/858507/353945.terrain b/public/terrain/19/858507/353945.terrain new file mode 100644 index 000000000..7e5e80438 Binary files /dev/null and b/public/terrain/19/858507/353945.terrain differ diff --git a/public/terrain/19/858507/353946.terrain b/public/terrain/19/858507/353946.terrain new file mode 100644 index 000000000..0e340520f Binary files /dev/null and b/public/terrain/19/858507/353946.terrain differ diff --git a/public/terrain/19/858507/353947.terrain b/public/terrain/19/858507/353947.terrain new file mode 100644 index 000000000..858875fc4 Binary files /dev/null and b/public/terrain/19/858507/353947.terrain differ diff --git a/public/terrain/19/858507/353948.terrain b/public/terrain/19/858507/353948.terrain new file mode 100644 index 000000000..49eb724cc Binary files /dev/null and b/public/terrain/19/858507/353948.terrain differ diff --git a/public/terrain/19/858507/353949.terrain b/public/terrain/19/858507/353949.terrain new file mode 100644 index 000000000..b7981a61b Binary files /dev/null and b/public/terrain/19/858507/353949.terrain differ diff --git a/public/terrain/19/858507/353950.terrain b/public/terrain/19/858507/353950.terrain new file mode 100644 index 000000000..03016f5f2 Binary files /dev/null and b/public/terrain/19/858507/353950.terrain differ diff --git a/public/terrain/19/858507/353951.terrain b/public/terrain/19/858507/353951.terrain new file mode 100644 index 000000000..a6b47e279 Binary files /dev/null and b/public/terrain/19/858507/353951.terrain differ diff --git a/public/terrain/19/858507/353952.terrain b/public/terrain/19/858507/353952.terrain new file mode 100644 index 000000000..5effa4ff1 Binary files /dev/null and b/public/terrain/19/858507/353952.terrain differ diff --git a/public/terrain/19/858507/353953.terrain b/public/terrain/19/858507/353953.terrain new file mode 100644 index 000000000..292cd972b Binary files /dev/null and b/public/terrain/19/858507/353953.terrain differ diff --git a/public/terrain/19/858507/353954.terrain b/public/terrain/19/858507/353954.terrain new file mode 100644 index 000000000..35fffdcc3 Binary files /dev/null and b/public/terrain/19/858507/353954.terrain differ diff --git a/public/terrain/19/858507/353955.terrain b/public/terrain/19/858507/353955.terrain new file mode 100644 index 000000000..63acd9fbd Binary files /dev/null and b/public/terrain/19/858507/353955.terrain differ diff --git a/public/terrain/19/858507/353956.terrain b/public/terrain/19/858507/353956.terrain new file mode 100644 index 000000000..f77523788 Binary files /dev/null and b/public/terrain/19/858507/353956.terrain differ diff --git a/public/terrain/19/858507/353957.terrain b/public/terrain/19/858507/353957.terrain new file mode 100644 index 000000000..afd0c8cab Binary files /dev/null and b/public/terrain/19/858507/353957.terrain differ diff --git a/public/terrain/19/858507/353958.terrain b/public/terrain/19/858507/353958.terrain new file mode 100644 index 000000000..cd7ea59fa Binary files /dev/null and b/public/terrain/19/858507/353958.terrain differ diff --git a/public/terrain/19/858507/353959.terrain b/public/terrain/19/858507/353959.terrain new file mode 100644 index 000000000..f63c4071c Binary files /dev/null and b/public/terrain/19/858507/353959.terrain differ diff --git a/public/terrain/19/858507/353960.terrain b/public/terrain/19/858507/353960.terrain new file mode 100644 index 000000000..ddd1aa13b Binary files /dev/null and b/public/terrain/19/858507/353960.terrain differ diff --git a/public/terrain/19/858507/353961.terrain b/public/terrain/19/858507/353961.terrain new file mode 100644 index 000000000..32ca639cd Binary files /dev/null and b/public/terrain/19/858507/353961.terrain differ diff --git a/public/terrain/19/858507/353962.terrain b/public/terrain/19/858507/353962.terrain new file mode 100644 index 000000000..228b5406a Binary files /dev/null and b/public/terrain/19/858507/353962.terrain differ diff --git a/public/terrain/19/858507/353963.terrain b/public/terrain/19/858507/353963.terrain new file mode 100644 index 000000000..579f66af0 Binary files /dev/null and b/public/terrain/19/858507/353963.terrain differ diff --git a/public/terrain/19/858507/353964.terrain b/public/terrain/19/858507/353964.terrain new file mode 100644 index 000000000..953ec319e Binary files /dev/null and b/public/terrain/19/858507/353964.terrain differ diff --git a/public/terrain/19/858507/353965.terrain b/public/terrain/19/858507/353965.terrain new file mode 100644 index 000000000..0603f6674 Binary files /dev/null and b/public/terrain/19/858507/353965.terrain differ diff --git a/public/terrain/19/858507/353966.terrain b/public/terrain/19/858507/353966.terrain new file mode 100644 index 000000000..333a3c6fd Binary files /dev/null and b/public/terrain/19/858507/353966.terrain differ diff --git a/public/terrain/19/858507/353967.terrain b/public/terrain/19/858507/353967.terrain new file mode 100644 index 000000000..2b8e41b7e Binary files /dev/null and b/public/terrain/19/858507/353967.terrain differ diff --git a/public/terrain/19/858507/353968.terrain b/public/terrain/19/858507/353968.terrain new file mode 100644 index 000000000..08d5c1e97 Binary files /dev/null and b/public/terrain/19/858507/353968.terrain differ diff --git a/public/terrain/19/858507/353969.terrain b/public/terrain/19/858507/353969.terrain new file mode 100644 index 000000000..239e69b01 Binary files /dev/null and b/public/terrain/19/858507/353969.terrain differ diff --git a/public/terrain/19/858507/353970.terrain b/public/terrain/19/858507/353970.terrain new file mode 100644 index 000000000..40fa3c1fb Binary files /dev/null and b/public/terrain/19/858507/353970.terrain differ diff --git a/public/terrain/19/858507/353971.terrain b/public/terrain/19/858507/353971.terrain new file mode 100644 index 000000000..47e1d89d6 Binary files /dev/null and b/public/terrain/19/858507/353971.terrain differ diff --git a/public/terrain/19/858507/353972.terrain b/public/terrain/19/858507/353972.terrain new file mode 100644 index 000000000..f6bbb9053 Binary files /dev/null and b/public/terrain/19/858507/353972.terrain differ diff --git a/public/terrain/19/858507/353973.terrain b/public/terrain/19/858507/353973.terrain new file mode 100644 index 000000000..887f742fb Binary files /dev/null and b/public/terrain/19/858507/353973.terrain differ diff --git a/public/terrain/19/858507/353974.terrain b/public/terrain/19/858507/353974.terrain new file mode 100644 index 000000000..4073466c1 Binary files /dev/null and b/public/terrain/19/858507/353974.terrain differ diff --git a/public/terrain/19/858507/353975.terrain b/public/terrain/19/858507/353975.terrain new file mode 100644 index 000000000..8fbe9962d Binary files /dev/null and b/public/terrain/19/858507/353975.terrain differ diff --git a/public/terrain/19/858507/353976.terrain b/public/terrain/19/858507/353976.terrain new file mode 100644 index 000000000..b768f3263 Binary files /dev/null and b/public/terrain/19/858507/353976.terrain differ diff --git a/public/terrain/19/858507/353977.terrain b/public/terrain/19/858507/353977.terrain new file mode 100644 index 000000000..c789cb834 Binary files /dev/null and b/public/terrain/19/858507/353977.terrain differ diff --git a/public/terrain/19/858507/353978.terrain b/public/terrain/19/858507/353978.terrain new file mode 100644 index 000000000..31cf9184c Binary files /dev/null and b/public/terrain/19/858507/353978.terrain differ diff --git a/public/terrain/19/858507/353979.terrain b/public/terrain/19/858507/353979.terrain new file mode 100644 index 000000000..b73fe533a Binary files /dev/null and b/public/terrain/19/858507/353979.terrain differ diff --git a/public/terrain/19/858507/353980.terrain b/public/terrain/19/858507/353980.terrain new file mode 100644 index 000000000..01d4cf472 Binary files /dev/null and b/public/terrain/19/858507/353980.terrain differ diff --git a/public/terrain/19/858507/353981.terrain b/public/terrain/19/858507/353981.terrain new file mode 100644 index 000000000..9959eaaea Binary files /dev/null and b/public/terrain/19/858507/353981.terrain differ diff --git a/public/terrain/19/858507/353982.terrain b/public/terrain/19/858507/353982.terrain new file mode 100644 index 000000000..cddbb52d8 Binary files /dev/null and b/public/terrain/19/858507/353982.terrain differ diff --git a/public/terrain/19/858507/353983.terrain b/public/terrain/19/858507/353983.terrain new file mode 100644 index 000000000..525eb5d38 Binary files /dev/null and b/public/terrain/19/858507/353983.terrain differ diff --git a/public/terrain/19/858507/353984.terrain b/public/terrain/19/858507/353984.terrain new file mode 100644 index 000000000..c1297875f Binary files /dev/null and b/public/terrain/19/858507/353984.terrain differ diff --git a/public/terrain/19/858507/353985.terrain b/public/terrain/19/858507/353985.terrain new file mode 100644 index 000000000..ba92860d0 Binary files /dev/null and b/public/terrain/19/858507/353985.terrain differ diff --git a/public/terrain/19/858507/353986.terrain b/public/terrain/19/858507/353986.terrain new file mode 100644 index 000000000..be9bf8539 Binary files /dev/null and b/public/terrain/19/858507/353986.terrain differ diff --git a/public/terrain/19/858507/353987.terrain b/public/terrain/19/858507/353987.terrain new file mode 100644 index 000000000..74297a7da Binary files /dev/null and b/public/terrain/19/858507/353987.terrain differ diff --git a/public/terrain/19/858507/353988.terrain b/public/terrain/19/858507/353988.terrain new file mode 100644 index 000000000..5e78acbd2 Binary files /dev/null and b/public/terrain/19/858507/353988.terrain differ diff --git a/public/terrain/19/858507/353989.terrain b/public/terrain/19/858507/353989.terrain new file mode 100644 index 000000000..626ab272c Binary files /dev/null and b/public/terrain/19/858507/353989.terrain differ diff --git a/public/terrain/19/858507/353990.terrain b/public/terrain/19/858507/353990.terrain new file mode 100644 index 000000000..3390f02d7 Binary files /dev/null and b/public/terrain/19/858507/353990.terrain differ diff --git a/public/terrain/19/858507/353991.terrain b/public/terrain/19/858507/353991.terrain new file mode 100644 index 000000000..db1d38e7c Binary files /dev/null and b/public/terrain/19/858507/353991.terrain differ diff --git a/public/terrain/19/858507/353992.terrain b/public/terrain/19/858507/353992.terrain new file mode 100644 index 000000000..c1ee94ba4 Binary files /dev/null and b/public/terrain/19/858507/353992.terrain differ diff --git a/public/terrain/19/858507/353993.terrain b/public/terrain/19/858507/353993.terrain new file mode 100644 index 000000000..3361b449f Binary files /dev/null and b/public/terrain/19/858507/353993.terrain differ diff --git a/public/terrain/19/858507/353994.terrain b/public/terrain/19/858507/353994.terrain new file mode 100644 index 000000000..e6e43fe9b Binary files /dev/null and b/public/terrain/19/858507/353994.terrain differ diff --git a/public/terrain/19/858507/353995.terrain b/public/terrain/19/858507/353995.terrain new file mode 100644 index 000000000..ec5d3aada Binary files /dev/null and b/public/terrain/19/858507/353995.terrain differ diff --git a/public/terrain/19/858507/353996.terrain b/public/terrain/19/858507/353996.terrain new file mode 100644 index 000000000..afe992505 Binary files /dev/null and b/public/terrain/19/858507/353996.terrain differ diff --git a/public/terrain/19/858507/353997.terrain b/public/terrain/19/858507/353997.terrain new file mode 100644 index 000000000..08227d46c Binary files /dev/null and b/public/terrain/19/858507/353997.terrain differ diff --git a/public/terrain/19/858507/353998.terrain b/public/terrain/19/858507/353998.terrain new file mode 100644 index 000000000..c5b8e64a8 Binary files /dev/null and b/public/terrain/19/858507/353998.terrain differ diff --git a/public/terrain/19/858507/353999.terrain b/public/terrain/19/858507/353999.terrain new file mode 100644 index 000000000..63dfa18d3 Binary files /dev/null and b/public/terrain/19/858507/353999.terrain differ diff --git a/public/terrain/19/858507/354000.terrain b/public/terrain/19/858507/354000.terrain new file mode 100644 index 000000000..ae46fedfa Binary files /dev/null and b/public/terrain/19/858507/354000.terrain differ diff --git a/public/terrain/19/858507/354001.terrain b/public/terrain/19/858507/354001.terrain new file mode 100644 index 000000000..3f3e03325 Binary files /dev/null and b/public/terrain/19/858507/354001.terrain differ diff --git a/public/terrain/19/858507/354002.terrain b/public/terrain/19/858507/354002.terrain new file mode 100644 index 000000000..5cf94627d Binary files /dev/null and b/public/terrain/19/858507/354002.terrain differ diff --git a/public/terrain/19/858507/354003.terrain b/public/terrain/19/858507/354003.terrain new file mode 100644 index 000000000..4f634a496 Binary files /dev/null and b/public/terrain/19/858507/354003.terrain differ diff --git a/public/terrain/19/858507/354004.terrain b/public/terrain/19/858507/354004.terrain new file mode 100644 index 000000000..957516ec8 Binary files /dev/null and b/public/terrain/19/858507/354004.terrain differ diff --git a/public/terrain/19/858507/354005.terrain b/public/terrain/19/858507/354005.terrain new file mode 100644 index 000000000..a4898d87b Binary files /dev/null and b/public/terrain/19/858507/354005.terrain differ diff --git a/public/terrain/19/858507/354006.terrain b/public/terrain/19/858507/354006.terrain new file mode 100644 index 000000000..5e88a0059 Binary files /dev/null and b/public/terrain/19/858507/354006.terrain differ diff --git a/public/terrain/19/858507/354007.terrain b/public/terrain/19/858507/354007.terrain new file mode 100644 index 000000000..5484c8da9 Binary files /dev/null and b/public/terrain/19/858507/354007.terrain differ diff --git a/public/terrain/19/858507/354008.terrain b/public/terrain/19/858507/354008.terrain new file mode 100644 index 000000000..eb1939ca6 Binary files /dev/null and b/public/terrain/19/858507/354008.terrain differ diff --git a/public/terrain/19/858507/354009.terrain b/public/terrain/19/858507/354009.terrain new file mode 100644 index 000000000..0a07aad5a Binary files /dev/null and b/public/terrain/19/858507/354009.terrain differ diff --git a/public/terrain/19/858507/354010.terrain b/public/terrain/19/858507/354010.terrain new file mode 100644 index 000000000..ee36ed398 Binary files /dev/null and b/public/terrain/19/858507/354010.terrain differ diff --git a/public/terrain/19/858507/354011.terrain b/public/terrain/19/858507/354011.terrain new file mode 100644 index 000000000..4177de0b5 Binary files /dev/null and b/public/terrain/19/858507/354011.terrain differ diff --git a/public/terrain/19/858507/354012.terrain b/public/terrain/19/858507/354012.terrain new file mode 100644 index 000000000..8a6bc3f28 Binary files /dev/null and b/public/terrain/19/858507/354012.terrain differ diff --git a/public/terrain/19/858507/354013.terrain b/public/terrain/19/858507/354013.terrain new file mode 100644 index 000000000..7b60a0b5a Binary files /dev/null and b/public/terrain/19/858507/354013.terrain differ diff --git a/public/terrain/19/858507/354014.terrain b/public/terrain/19/858507/354014.terrain new file mode 100644 index 000000000..c9718a5af Binary files /dev/null and b/public/terrain/19/858507/354014.terrain differ diff --git a/public/terrain/19/858507/354015.terrain b/public/terrain/19/858507/354015.terrain new file mode 100644 index 000000000..2682d511d Binary files /dev/null and b/public/terrain/19/858507/354015.terrain differ diff --git a/public/terrain/19/858507/354016.terrain b/public/terrain/19/858507/354016.terrain new file mode 100644 index 000000000..26635a79b Binary files /dev/null and b/public/terrain/19/858507/354016.terrain differ diff --git a/public/terrain/19/858507/354017.terrain b/public/terrain/19/858507/354017.terrain new file mode 100644 index 000000000..6cbed8e88 Binary files /dev/null and b/public/terrain/19/858507/354017.terrain differ diff --git a/public/terrain/19/858507/354018.terrain b/public/terrain/19/858507/354018.terrain new file mode 100644 index 000000000..7d11fdd86 Binary files /dev/null and b/public/terrain/19/858507/354018.terrain differ diff --git a/public/terrain/19/858507/354019.terrain b/public/terrain/19/858507/354019.terrain new file mode 100644 index 000000000..367931021 Binary files /dev/null and b/public/terrain/19/858507/354019.terrain differ diff --git a/public/terrain/19/858507/354020.terrain b/public/terrain/19/858507/354020.terrain new file mode 100644 index 000000000..730f0be8e Binary files /dev/null and b/public/terrain/19/858507/354020.terrain differ diff --git a/public/terrain/19/858507/354021.terrain b/public/terrain/19/858507/354021.terrain new file mode 100644 index 000000000..be2e482f2 Binary files /dev/null and b/public/terrain/19/858507/354021.terrain differ diff --git a/public/terrain/19/858507/354022.terrain b/public/terrain/19/858507/354022.terrain new file mode 100644 index 000000000..25804a7a8 Binary files /dev/null and b/public/terrain/19/858507/354022.terrain differ diff --git a/public/terrain/19/858507/354023.terrain b/public/terrain/19/858507/354023.terrain new file mode 100644 index 000000000..da0036eae Binary files /dev/null and b/public/terrain/19/858507/354023.terrain differ diff --git a/public/terrain/19/858507/354024.terrain b/public/terrain/19/858507/354024.terrain new file mode 100644 index 000000000..339f23437 Binary files /dev/null and b/public/terrain/19/858507/354024.terrain differ diff --git a/public/terrain/19/858507/354025.terrain b/public/terrain/19/858507/354025.terrain new file mode 100644 index 000000000..13be8e6e4 Binary files /dev/null and b/public/terrain/19/858507/354025.terrain differ diff --git a/public/terrain/19/858507/354026.terrain b/public/terrain/19/858507/354026.terrain new file mode 100644 index 000000000..ffe3bcb35 Binary files /dev/null and b/public/terrain/19/858507/354026.terrain differ diff --git a/public/terrain/19/858507/354027.terrain b/public/terrain/19/858507/354027.terrain new file mode 100644 index 000000000..65bfc1478 Binary files /dev/null and b/public/terrain/19/858507/354027.terrain differ diff --git a/public/terrain/19/858507/354028.terrain b/public/terrain/19/858507/354028.terrain new file mode 100644 index 000000000..ae9e1d16d Binary files /dev/null and b/public/terrain/19/858507/354028.terrain differ diff --git a/public/terrain/19/858507/354029.terrain b/public/terrain/19/858507/354029.terrain new file mode 100644 index 000000000..1bcf06382 Binary files /dev/null and b/public/terrain/19/858507/354029.terrain differ diff --git a/public/terrain/19/858507/354030.terrain b/public/terrain/19/858507/354030.terrain new file mode 100644 index 000000000..040c0fffb Binary files /dev/null and b/public/terrain/19/858507/354030.terrain differ diff --git a/public/terrain/19/858507/354031.terrain b/public/terrain/19/858507/354031.terrain new file mode 100644 index 000000000..005f7bad7 Binary files /dev/null and b/public/terrain/19/858507/354031.terrain differ diff --git a/public/terrain/19/858507/354032.terrain b/public/terrain/19/858507/354032.terrain new file mode 100644 index 000000000..b00d6bc98 Binary files /dev/null and b/public/terrain/19/858507/354032.terrain differ diff --git a/public/terrain/19/858507/354033.terrain b/public/terrain/19/858507/354033.terrain new file mode 100644 index 000000000..ea56ee5e9 Binary files /dev/null and b/public/terrain/19/858507/354033.terrain differ diff --git a/public/terrain/19/858507/354034.terrain b/public/terrain/19/858507/354034.terrain new file mode 100644 index 000000000..fbe8bf354 Binary files /dev/null and b/public/terrain/19/858507/354034.terrain differ diff --git a/public/terrain/19/858507/354035.terrain b/public/terrain/19/858507/354035.terrain new file mode 100644 index 000000000..f08db64b6 Binary files /dev/null and b/public/terrain/19/858507/354035.terrain differ diff --git a/public/terrain/19/858507/354036.terrain b/public/terrain/19/858507/354036.terrain new file mode 100644 index 000000000..c8af62fe9 Binary files /dev/null and b/public/terrain/19/858507/354036.terrain differ diff --git a/public/terrain/19/858507/354037.terrain b/public/terrain/19/858507/354037.terrain new file mode 100644 index 000000000..3431c2c71 Binary files /dev/null and b/public/terrain/19/858507/354037.terrain differ diff --git a/public/terrain/19/858507/354038.terrain b/public/terrain/19/858507/354038.terrain new file mode 100644 index 000000000..dae77af58 Binary files /dev/null and b/public/terrain/19/858507/354038.terrain differ diff --git a/public/terrain/19/858507/354039.terrain b/public/terrain/19/858507/354039.terrain new file mode 100644 index 000000000..8c84d00a7 Binary files /dev/null and b/public/terrain/19/858507/354039.terrain differ diff --git a/public/terrain/19/858507/354040.terrain b/public/terrain/19/858507/354040.terrain new file mode 100644 index 000000000..35bce1841 Binary files /dev/null and b/public/terrain/19/858507/354040.terrain differ diff --git a/public/terrain/19/858507/354041.terrain b/public/terrain/19/858507/354041.terrain new file mode 100644 index 000000000..a7ee91427 Binary files /dev/null and b/public/terrain/19/858507/354041.terrain differ diff --git a/public/terrain/19/858507/354042.terrain b/public/terrain/19/858507/354042.terrain new file mode 100644 index 000000000..3b7045add Binary files /dev/null and b/public/terrain/19/858507/354042.terrain differ diff --git a/public/terrain/19/858507/354043.terrain b/public/terrain/19/858507/354043.terrain new file mode 100644 index 000000000..fd788b760 Binary files /dev/null and b/public/terrain/19/858507/354043.terrain differ diff --git a/public/terrain/19/858507/354044.terrain b/public/terrain/19/858507/354044.terrain new file mode 100644 index 000000000..57cbe4590 Binary files /dev/null and b/public/terrain/19/858507/354044.terrain differ diff --git a/public/terrain/19/858507/354045.terrain b/public/terrain/19/858507/354045.terrain new file mode 100644 index 000000000..575bd8cfd Binary files /dev/null and b/public/terrain/19/858507/354045.terrain differ diff --git a/public/terrain/19/858507/354046.terrain b/public/terrain/19/858507/354046.terrain new file mode 100644 index 000000000..8be516686 Binary files /dev/null and b/public/terrain/19/858507/354046.terrain differ diff --git a/public/terrain/19/858507/354047.terrain b/public/terrain/19/858507/354047.terrain new file mode 100644 index 000000000..741a6b381 Binary files /dev/null and b/public/terrain/19/858507/354047.terrain differ diff --git a/public/terrain/19/858507/354048.terrain b/public/terrain/19/858507/354048.terrain new file mode 100644 index 000000000..eec3fdb77 Binary files /dev/null and b/public/terrain/19/858507/354048.terrain differ diff --git a/public/terrain/19/858507/354049.terrain b/public/terrain/19/858507/354049.terrain new file mode 100644 index 000000000..09f1cf749 Binary files /dev/null and b/public/terrain/19/858507/354049.terrain differ diff --git a/public/terrain/19/858507/354050.terrain b/public/terrain/19/858507/354050.terrain new file mode 100644 index 000000000..f90b0aefa Binary files /dev/null and b/public/terrain/19/858507/354050.terrain differ diff --git a/public/terrain/19/858507/354051.terrain b/public/terrain/19/858507/354051.terrain new file mode 100644 index 000000000..be54e2f86 Binary files /dev/null and b/public/terrain/19/858507/354051.terrain differ diff --git a/public/terrain/19/858507/354052.terrain b/public/terrain/19/858507/354052.terrain new file mode 100644 index 000000000..84b318999 Binary files /dev/null and b/public/terrain/19/858507/354052.terrain differ diff --git a/public/terrain/19/858507/354053.terrain b/public/terrain/19/858507/354053.terrain new file mode 100644 index 000000000..e23209d79 Binary files /dev/null and b/public/terrain/19/858507/354053.terrain differ diff --git a/public/terrain/19/858507/354054.terrain b/public/terrain/19/858507/354054.terrain new file mode 100644 index 000000000..ed99b4ade Binary files /dev/null and b/public/terrain/19/858507/354054.terrain differ diff --git a/public/terrain/19/858507/354055.terrain b/public/terrain/19/858507/354055.terrain new file mode 100644 index 000000000..8e30ede00 Binary files /dev/null and b/public/terrain/19/858507/354055.terrain differ diff --git a/public/terrain/19/858507/354056.terrain b/public/terrain/19/858507/354056.terrain new file mode 100644 index 000000000..3eb198c1f Binary files /dev/null and b/public/terrain/19/858507/354056.terrain differ diff --git a/public/terrain/19/858507/354057.terrain b/public/terrain/19/858507/354057.terrain new file mode 100644 index 000000000..9b4792b7a Binary files /dev/null and b/public/terrain/19/858507/354057.terrain differ diff --git a/public/terrain/19/858507/354058.terrain b/public/terrain/19/858507/354058.terrain new file mode 100644 index 000000000..320c5ed58 Binary files /dev/null and b/public/terrain/19/858507/354058.terrain differ diff --git a/public/terrain/19/858507/354059.terrain b/public/terrain/19/858507/354059.terrain new file mode 100644 index 000000000..682784329 Binary files /dev/null and b/public/terrain/19/858507/354059.terrain differ diff --git a/public/terrain/19/858508/353743.terrain b/public/terrain/19/858508/353743.terrain new file mode 100644 index 000000000..1e500f43b Binary files /dev/null and b/public/terrain/19/858508/353743.terrain differ diff --git a/public/terrain/19/858508/353744.terrain b/public/terrain/19/858508/353744.terrain new file mode 100644 index 000000000..58b96bff7 Binary files /dev/null and b/public/terrain/19/858508/353744.terrain differ diff --git a/public/terrain/19/858508/353745.terrain b/public/terrain/19/858508/353745.terrain new file mode 100644 index 000000000..660dfb5cf Binary files /dev/null and b/public/terrain/19/858508/353745.terrain differ diff --git a/public/terrain/19/858508/353746.terrain b/public/terrain/19/858508/353746.terrain new file mode 100644 index 000000000..32a3fcf20 Binary files /dev/null and b/public/terrain/19/858508/353746.terrain differ diff --git a/public/terrain/19/858508/353747.terrain b/public/terrain/19/858508/353747.terrain new file mode 100644 index 000000000..ca95fdb1f Binary files /dev/null and b/public/terrain/19/858508/353747.terrain differ diff --git a/public/terrain/19/858508/353748.terrain b/public/terrain/19/858508/353748.terrain new file mode 100644 index 000000000..996fb2049 Binary files /dev/null and b/public/terrain/19/858508/353748.terrain differ diff --git a/public/terrain/19/858508/353749.terrain b/public/terrain/19/858508/353749.terrain new file mode 100644 index 000000000..31880b97b Binary files /dev/null and b/public/terrain/19/858508/353749.terrain differ diff --git a/public/terrain/19/858508/353750.terrain b/public/terrain/19/858508/353750.terrain new file mode 100644 index 000000000..d71c8ca6e Binary files /dev/null and b/public/terrain/19/858508/353750.terrain differ diff --git a/public/terrain/19/858508/353751.terrain b/public/terrain/19/858508/353751.terrain new file mode 100644 index 000000000..c17c15960 Binary files /dev/null and b/public/terrain/19/858508/353751.terrain differ diff --git a/public/terrain/19/858508/353752.terrain b/public/terrain/19/858508/353752.terrain new file mode 100644 index 000000000..6139ab79d Binary files /dev/null and b/public/terrain/19/858508/353752.terrain differ diff --git a/public/terrain/19/858508/353753.terrain b/public/terrain/19/858508/353753.terrain new file mode 100644 index 000000000..d6a36a080 Binary files /dev/null and b/public/terrain/19/858508/353753.terrain differ diff --git a/public/terrain/19/858508/353754.terrain b/public/terrain/19/858508/353754.terrain new file mode 100644 index 000000000..70750ca2c Binary files /dev/null and b/public/terrain/19/858508/353754.terrain differ diff --git a/public/terrain/19/858508/353755.terrain b/public/terrain/19/858508/353755.terrain new file mode 100644 index 000000000..2a1b8edae Binary files /dev/null and b/public/terrain/19/858508/353755.terrain differ diff --git a/public/terrain/19/858508/353756.terrain b/public/terrain/19/858508/353756.terrain new file mode 100644 index 000000000..35e8dbac7 Binary files /dev/null and b/public/terrain/19/858508/353756.terrain differ diff --git a/public/terrain/19/858508/353757.terrain b/public/terrain/19/858508/353757.terrain new file mode 100644 index 000000000..e040908d1 Binary files /dev/null and b/public/terrain/19/858508/353757.terrain differ diff --git a/public/terrain/19/858508/353758.terrain b/public/terrain/19/858508/353758.terrain new file mode 100644 index 000000000..fedd26118 Binary files /dev/null and b/public/terrain/19/858508/353758.terrain differ diff --git a/public/terrain/19/858508/353759.terrain b/public/terrain/19/858508/353759.terrain new file mode 100644 index 000000000..4e68b2035 Binary files /dev/null and b/public/terrain/19/858508/353759.terrain differ diff --git a/public/terrain/19/858508/353760.terrain b/public/terrain/19/858508/353760.terrain new file mode 100644 index 000000000..5d3574b55 Binary files /dev/null and b/public/terrain/19/858508/353760.terrain differ diff --git a/public/terrain/19/858508/353761.terrain b/public/terrain/19/858508/353761.terrain new file mode 100644 index 000000000..214291630 Binary files /dev/null and b/public/terrain/19/858508/353761.terrain differ diff --git a/public/terrain/19/858508/353762.terrain b/public/terrain/19/858508/353762.terrain new file mode 100644 index 000000000..a4dbc8582 Binary files /dev/null and b/public/terrain/19/858508/353762.terrain differ diff --git a/public/terrain/19/858508/353763.terrain b/public/terrain/19/858508/353763.terrain new file mode 100644 index 000000000..397ce1d96 Binary files /dev/null and b/public/terrain/19/858508/353763.terrain differ diff --git a/public/terrain/19/858508/353764.terrain b/public/terrain/19/858508/353764.terrain new file mode 100644 index 000000000..1191f6028 Binary files /dev/null and b/public/terrain/19/858508/353764.terrain differ diff --git a/public/terrain/19/858508/353765.terrain b/public/terrain/19/858508/353765.terrain new file mode 100644 index 000000000..3f0fa32ec Binary files /dev/null and b/public/terrain/19/858508/353765.terrain differ diff --git a/public/terrain/19/858508/353766.terrain b/public/terrain/19/858508/353766.terrain new file mode 100644 index 000000000..d9c50ad11 Binary files /dev/null and b/public/terrain/19/858508/353766.terrain differ diff --git a/public/terrain/19/858508/353767.terrain b/public/terrain/19/858508/353767.terrain new file mode 100644 index 000000000..3f98ffa4b Binary files /dev/null and b/public/terrain/19/858508/353767.terrain differ diff --git a/public/terrain/19/858508/353768.terrain b/public/terrain/19/858508/353768.terrain new file mode 100644 index 000000000..788ffe1b6 Binary files /dev/null and b/public/terrain/19/858508/353768.terrain differ diff --git a/public/terrain/19/858508/353769.terrain b/public/terrain/19/858508/353769.terrain new file mode 100644 index 000000000..44a2a6d12 Binary files /dev/null and b/public/terrain/19/858508/353769.terrain differ diff --git a/public/terrain/19/858508/353770.terrain b/public/terrain/19/858508/353770.terrain new file mode 100644 index 000000000..514eb1921 Binary files /dev/null and b/public/terrain/19/858508/353770.terrain differ diff --git a/public/terrain/19/858508/353771.terrain b/public/terrain/19/858508/353771.terrain new file mode 100644 index 000000000..19c031655 Binary files /dev/null and b/public/terrain/19/858508/353771.terrain differ diff --git a/public/terrain/19/858508/353772.terrain b/public/terrain/19/858508/353772.terrain new file mode 100644 index 000000000..c576d43d0 Binary files /dev/null and b/public/terrain/19/858508/353772.terrain differ diff --git a/public/terrain/19/858508/353773.terrain b/public/terrain/19/858508/353773.terrain new file mode 100644 index 000000000..9953ddf70 Binary files /dev/null and b/public/terrain/19/858508/353773.terrain differ diff --git a/public/terrain/19/858508/353774.terrain b/public/terrain/19/858508/353774.terrain new file mode 100644 index 000000000..b79831def Binary files /dev/null and b/public/terrain/19/858508/353774.terrain differ diff --git a/public/terrain/19/858508/353775.terrain b/public/terrain/19/858508/353775.terrain new file mode 100644 index 000000000..68fe5cea0 Binary files /dev/null and b/public/terrain/19/858508/353775.terrain differ diff --git a/public/terrain/19/858508/353776.terrain b/public/terrain/19/858508/353776.terrain new file mode 100644 index 000000000..616809eff Binary files /dev/null and b/public/terrain/19/858508/353776.terrain differ diff --git a/public/terrain/19/858508/353777.terrain b/public/terrain/19/858508/353777.terrain new file mode 100644 index 000000000..ba93b6d0f Binary files /dev/null and b/public/terrain/19/858508/353777.terrain differ diff --git a/public/terrain/19/858508/353778.terrain b/public/terrain/19/858508/353778.terrain new file mode 100644 index 000000000..6ec0f7dee Binary files /dev/null and b/public/terrain/19/858508/353778.terrain differ diff --git a/public/terrain/19/858508/353779.terrain b/public/terrain/19/858508/353779.terrain new file mode 100644 index 000000000..c0974e668 Binary files /dev/null and b/public/terrain/19/858508/353779.terrain differ diff --git a/public/terrain/19/858508/353780.terrain b/public/terrain/19/858508/353780.terrain new file mode 100644 index 000000000..9749f0a1a Binary files /dev/null and b/public/terrain/19/858508/353780.terrain differ diff --git a/public/terrain/19/858508/353781.terrain b/public/terrain/19/858508/353781.terrain new file mode 100644 index 000000000..6419d1b87 Binary files /dev/null and b/public/terrain/19/858508/353781.terrain differ diff --git a/public/terrain/19/858508/353782.terrain b/public/terrain/19/858508/353782.terrain new file mode 100644 index 000000000..08e88bb4b Binary files /dev/null and b/public/terrain/19/858508/353782.terrain differ diff --git a/public/terrain/19/858508/353783.terrain b/public/terrain/19/858508/353783.terrain new file mode 100644 index 000000000..f866625b9 Binary files /dev/null and b/public/terrain/19/858508/353783.terrain differ diff --git a/public/terrain/19/858508/353784.terrain b/public/terrain/19/858508/353784.terrain new file mode 100644 index 000000000..45a1e24f5 Binary files /dev/null and b/public/terrain/19/858508/353784.terrain differ diff --git a/public/terrain/19/858508/353785.terrain b/public/terrain/19/858508/353785.terrain new file mode 100644 index 000000000..11a12494d Binary files /dev/null and b/public/terrain/19/858508/353785.terrain differ diff --git a/public/terrain/19/858508/353786.terrain b/public/terrain/19/858508/353786.terrain new file mode 100644 index 000000000..5481d031b Binary files /dev/null and b/public/terrain/19/858508/353786.terrain differ diff --git a/public/terrain/19/858508/353787.terrain b/public/terrain/19/858508/353787.terrain new file mode 100644 index 000000000..f79530a26 Binary files /dev/null and b/public/terrain/19/858508/353787.terrain differ diff --git a/public/terrain/19/858508/353788.terrain b/public/terrain/19/858508/353788.terrain new file mode 100644 index 000000000..3d0f6a5fe Binary files /dev/null and b/public/terrain/19/858508/353788.terrain differ diff --git a/public/terrain/19/858508/353789.terrain b/public/terrain/19/858508/353789.terrain new file mode 100644 index 000000000..5675aea5e Binary files /dev/null and b/public/terrain/19/858508/353789.terrain differ diff --git a/public/terrain/19/858508/353790.terrain b/public/terrain/19/858508/353790.terrain new file mode 100644 index 000000000..ee9e4102b Binary files /dev/null and b/public/terrain/19/858508/353790.terrain differ diff --git a/public/terrain/19/858508/353791.terrain b/public/terrain/19/858508/353791.terrain new file mode 100644 index 000000000..cea8ef4d3 Binary files /dev/null and b/public/terrain/19/858508/353791.terrain differ diff --git a/public/terrain/19/858508/353792.terrain b/public/terrain/19/858508/353792.terrain new file mode 100644 index 000000000..60e72539e Binary files /dev/null and b/public/terrain/19/858508/353792.terrain differ diff --git a/public/terrain/19/858508/353793.terrain b/public/terrain/19/858508/353793.terrain new file mode 100644 index 000000000..090c8253c Binary files /dev/null and b/public/terrain/19/858508/353793.terrain differ diff --git a/public/terrain/19/858508/353794.terrain b/public/terrain/19/858508/353794.terrain new file mode 100644 index 000000000..c2f1fb94b Binary files /dev/null and b/public/terrain/19/858508/353794.terrain differ diff --git a/public/terrain/19/858508/353795.terrain b/public/terrain/19/858508/353795.terrain new file mode 100644 index 000000000..3a520bbf2 Binary files /dev/null and b/public/terrain/19/858508/353795.terrain differ diff --git a/public/terrain/19/858508/353796.terrain b/public/terrain/19/858508/353796.terrain new file mode 100644 index 000000000..e16e44c10 Binary files /dev/null and b/public/terrain/19/858508/353796.terrain differ diff --git a/public/terrain/19/858508/353797.terrain b/public/terrain/19/858508/353797.terrain new file mode 100644 index 000000000..c2b6975b2 Binary files /dev/null and b/public/terrain/19/858508/353797.terrain differ diff --git a/public/terrain/19/858508/353798.terrain b/public/terrain/19/858508/353798.terrain new file mode 100644 index 000000000..94abae2dd Binary files /dev/null and b/public/terrain/19/858508/353798.terrain differ diff --git a/public/terrain/19/858508/353799.terrain b/public/terrain/19/858508/353799.terrain new file mode 100644 index 000000000..2c831f341 Binary files /dev/null and b/public/terrain/19/858508/353799.terrain differ diff --git a/public/terrain/19/858508/353800.terrain b/public/terrain/19/858508/353800.terrain new file mode 100644 index 000000000..d0c26bdcd Binary files /dev/null and b/public/terrain/19/858508/353800.terrain differ diff --git a/public/terrain/19/858508/353801.terrain b/public/terrain/19/858508/353801.terrain new file mode 100644 index 000000000..f54e412db Binary files /dev/null and b/public/terrain/19/858508/353801.terrain differ diff --git a/public/terrain/19/858508/353802.terrain b/public/terrain/19/858508/353802.terrain new file mode 100644 index 000000000..83f1040e7 Binary files /dev/null and b/public/terrain/19/858508/353802.terrain differ diff --git a/public/terrain/19/858508/353803.terrain b/public/terrain/19/858508/353803.terrain new file mode 100644 index 000000000..7216d22b3 Binary files /dev/null and b/public/terrain/19/858508/353803.terrain differ diff --git a/public/terrain/19/858508/353804.terrain b/public/terrain/19/858508/353804.terrain new file mode 100644 index 000000000..ee590f997 Binary files /dev/null and b/public/terrain/19/858508/353804.terrain differ diff --git a/public/terrain/19/858508/353805.terrain b/public/terrain/19/858508/353805.terrain new file mode 100644 index 000000000..f539633ed Binary files /dev/null and b/public/terrain/19/858508/353805.terrain differ diff --git a/public/terrain/19/858508/353806.terrain b/public/terrain/19/858508/353806.terrain new file mode 100644 index 000000000..919754927 Binary files /dev/null and b/public/terrain/19/858508/353806.terrain differ diff --git a/public/terrain/19/858508/353807.terrain b/public/terrain/19/858508/353807.terrain new file mode 100644 index 000000000..27816a782 Binary files /dev/null and b/public/terrain/19/858508/353807.terrain differ diff --git a/public/terrain/19/858508/353808.terrain b/public/terrain/19/858508/353808.terrain new file mode 100644 index 000000000..1cce2b07d Binary files /dev/null and b/public/terrain/19/858508/353808.terrain differ diff --git a/public/terrain/19/858508/353809.terrain b/public/terrain/19/858508/353809.terrain new file mode 100644 index 000000000..9872fdb22 Binary files /dev/null and b/public/terrain/19/858508/353809.terrain differ diff --git a/public/terrain/19/858508/353810.terrain b/public/terrain/19/858508/353810.terrain new file mode 100644 index 000000000..1d2a5c399 Binary files /dev/null and b/public/terrain/19/858508/353810.terrain differ diff --git a/public/terrain/19/858508/353811.terrain b/public/terrain/19/858508/353811.terrain new file mode 100644 index 000000000..8b4c46dec Binary files /dev/null and b/public/terrain/19/858508/353811.terrain differ diff --git a/public/terrain/19/858508/353812.terrain b/public/terrain/19/858508/353812.terrain new file mode 100644 index 000000000..1750af4c6 Binary files /dev/null and b/public/terrain/19/858508/353812.terrain differ diff --git a/public/terrain/19/858508/353813.terrain b/public/terrain/19/858508/353813.terrain new file mode 100644 index 000000000..4c35fe26e Binary files /dev/null and b/public/terrain/19/858508/353813.terrain differ diff --git a/public/terrain/19/858508/353814.terrain b/public/terrain/19/858508/353814.terrain new file mode 100644 index 000000000..a70c28434 Binary files /dev/null and b/public/terrain/19/858508/353814.terrain differ diff --git a/public/terrain/19/858508/353815.terrain b/public/terrain/19/858508/353815.terrain new file mode 100644 index 000000000..dcac7872b Binary files /dev/null and b/public/terrain/19/858508/353815.terrain differ diff --git a/public/terrain/19/858508/353816.terrain b/public/terrain/19/858508/353816.terrain new file mode 100644 index 000000000..59c182597 Binary files /dev/null and b/public/terrain/19/858508/353816.terrain differ diff --git a/public/terrain/19/858508/353817.terrain b/public/terrain/19/858508/353817.terrain new file mode 100644 index 000000000..d0c42aaf7 Binary files /dev/null and b/public/terrain/19/858508/353817.terrain differ diff --git a/public/terrain/19/858508/353818.terrain b/public/terrain/19/858508/353818.terrain new file mode 100644 index 000000000..d46e93649 Binary files /dev/null and b/public/terrain/19/858508/353818.terrain differ diff --git a/public/terrain/19/858508/353819.terrain b/public/terrain/19/858508/353819.terrain new file mode 100644 index 000000000..e097da9e7 Binary files /dev/null and b/public/terrain/19/858508/353819.terrain differ diff --git a/public/terrain/19/858508/353820.terrain b/public/terrain/19/858508/353820.terrain new file mode 100644 index 000000000..f8025104e Binary files /dev/null and b/public/terrain/19/858508/353820.terrain differ diff --git a/public/terrain/19/858508/353821.terrain b/public/terrain/19/858508/353821.terrain new file mode 100644 index 000000000..fdf57d7c1 Binary files /dev/null and b/public/terrain/19/858508/353821.terrain differ diff --git a/public/terrain/19/858508/353822.terrain b/public/terrain/19/858508/353822.terrain new file mode 100644 index 000000000..1daa81fa4 Binary files /dev/null and b/public/terrain/19/858508/353822.terrain differ diff --git a/public/terrain/19/858508/353823.terrain b/public/terrain/19/858508/353823.terrain new file mode 100644 index 000000000..58ca05ebb Binary files /dev/null and b/public/terrain/19/858508/353823.terrain differ diff --git a/public/terrain/19/858508/353824.terrain b/public/terrain/19/858508/353824.terrain new file mode 100644 index 000000000..8b4f554e6 Binary files /dev/null and b/public/terrain/19/858508/353824.terrain differ diff --git a/public/terrain/19/858508/353825.terrain b/public/terrain/19/858508/353825.terrain new file mode 100644 index 000000000..e7598f5f4 Binary files /dev/null and b/public/terrain/19/858508/353825.terrain differ diff --git a/public/terrain/19/858508/353826.terrain b/public/terrain/19/858508/353826.terrain new file mode 100644 index 000000000..9eee954ff Binary files /dev/null and b/public/terrain/19/858508/353826.terrain differ diff --git a/public/terrain/19/858508/353827.terrain b/public/terrain/19/858508/353827.terrain new file mode 100644 index 000000000..a9e027193 Binary files /dev/null and b/public/terrain/19/858508/353827.terrain differ diff --git a/public/terrain/19/858508/353828.terrain b/public/terrain/19/858508/353828.terrain new file mode 100644 index 000000000..cb86b4635 Binary files /dev/null and b/public/terrain/19/858508/353828.terrain differ diff --git a/public/terrain/19/858508/353829.terrain b/public/terrain/19/858508/353829.terrain new file mode 100644 index 000000000..5466b66f4 Binary files /dev/null and b/public/terrain/19/858508/353829.terrain differ diff --git a/public/terrain/19/858508/353830.terrain b/public/terrain/19/858508/353830.terrain new file mode 100644 index 000000000..728ddab75 Binary files /dev/null and b/public/terrain/19/858508/353830.terrain differ diff --git a/public/terrain/19/858508/353831.terrain b/public/terrain/19/858508/353831.terrain new file mode 100644 index 000000000..d1734913f Binary files /dev/null and b/public/terrain/19/858508/353831.terrain differ diff --git a/public/terrain/19/858508/353832.terrain b/public/terrain/19/858508/353832.terrain new file mode 100644 index 000000000..68be55430 Binary files /dev/null and b/public/terrain/19/858508/353832.terrain differ diff --git a/public/terrain/19/858508/353833.terrain b/public/terrain/19/858508/353833.terrain new file mode 100644 index 000000000..ad883e030 Binary files /dev/null and b/public/terrain/19/858508/353833.terrain differ diff --git a/public/terrain/19/858508/353834.terrain b/public/terrain/19/858508/353834.terrain new file mode 100644 index 000000000..45c750ab2 Binary files /dev/null and b/public/terrain/19/858508/353834.terrain differ diff --git a/public/terrain/19/858508/353835.terrain b/public/terrain/19/858508/353835.terrain new file mode 100644 index 000000000..9044083d2 Binary files /dev/null and b/public/terrain/19/858508/353835.terrain differ diff --git a/public/terrain/19/858508/353836.terrain b/public/terrain/19/858508/353836.terrain new file mode 100644 index 000000000..bfc0740b2 Binary files /dev/null and b/public/terrain/19/858508/353836.terrain differ diff --git a/public/terrain/19/858508/353837.terrain b/public/terrain/19/858508/353837.terrain new file mode 100644 index 000000000..4235e6e1e Binary files /dev/null and b/public/terrain/19/858508/353837.terrain differ diff --git a/public/terrain/19/858508/353838.terrain b/public/terrain/19/858508/353838.terrain new file mode 100644 index 000000000..fe467b0b9 Binary files /dev/null and b/public/terrain/19/858508/353838.terrain differ diff --git a/public/terrain/19/858508/353839.terrain b/public/terrain/19/858508/353839.terrain new file mode 100644 index 000000000..33d3b316e Binary files /dev/null and b/public/terrain/19/858508/353839.terrain differ diff --git a/public/terrain/19/858508/353840.terrain b/public/terrain/19/858508/353840.terrain new file mode 100644 index 000000000..6a7540442 Binary files /dev/null and b/public/terrain/19/858508/353840.terrain differ diff --git a/public/terrain/19/858508/353841.terrain b/public/terrain/19/858508/353841.terrain new file mode 100644 index 000000000..456fce444 Binary files /dev/null and b/public/terrain/19/858508/353841.terrain differ diff --git a/public/terrain/19/858508/353842.terrain b/public/terrain/19/858508/353842.terrain new file mode 100644 index 000000000..a71b29315 Binary files /dev/null and b/public/terrain/19/858508/353842.terrain differ diff --git a/public/terrain/19/858508/353843.terrain b/public/terrain/19/858508/353843.terrain new file mode 100644 index 000000000..e3d56fc80 Binary files /dev/null and b/public/terrain/19/858508/353843.terrain differ diff --git a/public/terrain/19/858508/353844.terrain b/public/terrain/19/858508/353844.terrain new file mode 100644 index 000000000..3d43815f2 Binary files /dev/null and b/public/terrain/19/858508/353844.terrain differ diff --git a/public/terrain/19/858508/353845.terrain b/public/terrain/19/858508/353845.terrain new file mode 100644 index 000000000..0c099e407 Binary files /dev/null and b/public/terrain/19/858508/353845.terrain differ diff --git a/public/terrain/19/858508/353846.terrain b/public/terrain/19/858508/353846.terrain new file mode 100644 index 000000000..e1a6ead0c Binary files /dev/null and b/public/terrain/19/858508/353846.terrain differ diff --git a/public/terrain/19/858508/353847.terrain b/public/terrain/19/858508/353847.terrain new file mode 100644 index 000000000..3d8bafd4a Binary files /dev/null and b/public/terrain/19/858508/353847.terrain differ diff --git a/public/terrain/19/858508/353848.terrain b/public/terrain/19/858508/353848.terrain new file mode 100644 index 000000000..f9c6d5aa3 Binary files /dev/null and b/public/terrain/19/858508/353848.terrain differ diff --git a/public/terrain/19/858508/353849.terrain b/public/terrain/19/858508/353849.terrain new file mode 100644 index 000000000..fd7e136e0 Binary files /dev/null and b/public/terrain/19/858508/353849.terrain differ diff --git a/public/terrain/19/858508/353850.terrain b/public/terrain/19/858508/353850.terrain new file mode 100644 index 000000000..5de672a30 Binary files /dev/null and b/public/terrain/19/858508/353850.terrain differ diff --git a/public/terrain/19/858508/353851.terrain b/public/terrain/19/858508/353851.terrain new file mode 100644 index 000000000..f633412e9 Binary files /dev/null and b/public/terrain/19/858508/353851.terrain differ diff --git a/public/terrain/19/858508/353852.terrain b/public/terrain/19/858508/353852.terrain new file mode 100644 index 000000000..9ac075d6f Binary files /dev/null and b/public/terrain/19/858508/353852.terrain differ diff --git a/public/terrain/19/858508/353853.terrain b/public/terrain/19/858508/353853.terrain new file mode 100644 index 000000000..eb0fa4b84 Binary files /dev/null and b/public/terrain/19/858508/353853.terrain differ diff --git a/public/terrain/19/858508/353854.terrain b/public/terrain/19/858508/353854.terrain new file mode 100644 index 000000000..ac2a74d88 Binary files /dev/null and b/public/terrain/19/858508/353854.terrain differ diff --git a/public/terrain/19/858508/353855.terrain b/public/terrain/19/858508/353855.terrain new file mode 100644 index 000000000..4bf4eaaa8 Binary files /dev/null and b/public/terrain/19/858508/353855.terrain differ diff --git a/public/terrain/19/858508/353856.terrain b/public/terrain/19/858508/353856.terrain new file mode 100644 index 000000000..0f164e80c Binary files /dev/null and b/public/terrain/19/858508/353856.terrain differ diff --git a/public/terrain/19/858508/353857.terrain b/public/terrain/19/858508/353857.terrain new file mode 100644 index 000000000..bfd37d351 Binary files /dev/null and b/public/terrain/19/858508/353857.terrain differ diff --git a/public/terrain/19/858508/353858.terrain b/public/terrain/19/858508/353858.terrain new file mode 100644 index 000000000..39137ed55 Binary files /dev/null and b/public/terrain/19/858508/353858.terrain differ diff --git a/public/terrain/19/858508/353859.terrain b/public/terrain/19/858508/353859.terrain new file mode 100644 index 000000000..f9165dfc5 Binary files /dev/null and b/public/terrain/19/858508/353859.terrain differ diff --git a/public/terrain/19/858508/353860.terrain b/public/terrain/19/858508/353860.terrain new file mode 100644 index 000000000..f01503083 Binary files /dev/null and b/public/terrain/19/858508/353860.terrain differ diff --git a/public/terrain/19/858508/353861.terrain b/public/terrain/19/858508/353861.terrain new file mode 100644 index 000000000..015ed8e3e Binary files /dev/null and b/public/terrain/19/858508/353861.terrain differ diff --git a/public/terrain/19/858508/353862.terrain b/public/terrain/19/858508/353862.terrain new file mode 100644 index 000000000..e8ba2111a Binary files /dev/null and b/public/terrain/19/858508/353862.terrain differ diff --git a/public/terrain/19/858508/353863.terrain b/public/terrain/19/858508/353863.terrain new file mode 100644 index 000000000..a0ae99cd9 Binary files /dev/null and b/public/terrain/19/858508/353863.terrain differ diff --git a/public/terrain/19/858508/353864.terrain b/public/terrain/19/858508/353864.terrain new file mode 100644 index 000000000..b78ab7ef5 Binary files /dev/null and b/public/terrain/19/858508/353864.terrain differ diff --git a/public/terrain/19/858508/353865.terrain b/public/terrain/19/858508/353865.terrain new file mode 100644 index 000000000..2dd78304c Binary files /dev/null and b/public/terrain/19/858508/353865.terrain differ diff --git a/public/terrain/19/858508/353866.terrain b/public/terrain/19/858508/353866.terrain new file mode 100644 index 000000000..0057be2d6 Binary files /dev/null and b/public/terrain/19/858508/353866.terrain differ diff --git a/public/terrain/19/858508/353867.terrain b/public/terrain/19/858508/353867.terrain new file mode 100644 index 000000000..3780d4a23 Binary files /dev/null and b/public/terrain/19/858508/353867.terrain differ diff --git a/public/terrain/19/858508/353868.terrain b/public/terrain/19/858508/353868.terrain new file mode 100644 index 000000000..926210c25 Binary files /dev/null and b/public/terrain/19/858508/353868.terrain differ diff --git a/public/terrain/19/858508/353869.terrain b/public/terrain/19/858508/353869.terrain new file mode 100644 index 000000000..531cee01e Binary files /dev/null and b/public/terrain/19/858508/353869.terrain differ diff --git a/public/terrain/19/858508/353870.terrain b/public/terrain/19/858508/353870.terrain new file mode 100644 index 000000000..0102cdf43 Binary files /dev/null and b/public/terrain/19/858508/353870.terrain differ diff --git a/public/terrain/19/858508/353871.terrain b/public/terrain/19/858508/353871.terrain new file mode 100644 index 000000000..f0260417d Binary files /dev/null and b/public/terrain/19/858508/353871.terrain differ diff --git a/public/terrain/19/858508/353872.terrain b/public/terrain/19/858508/353872.terrain new file mode 100644 index 000000000..fe1205182 Binary files /dev/null and b/public/terrain/19/858508/353872.terrain differ diff --git a/public/terrain/19/858508/353873.terrain b/public/terrain/19/858508/353873.terrain new file mode 100644 index 000000000..625e495cc Binary files /dev/null and b/public/terrain/19/858508/353873.terrain differ diff --git a/public/terrain/19/858508/353874.terrain b/public/terrain/19/858508/353874.terrain new file mode 100644 index 000000000..5de7131f0 Binary files /dev/null and b/public/terrain/19/858508/353874.terrain differ diff --git a/public/terrain/19/858508/353875.terrain b/public/terrain/19/858508/353875.terrain new file mode 100644 index 000000000..57e339844 Binary files /dev/null and b/public/terrain/19/858508/353875.terrain differ diff --git a/public/terrain/19/858508/353876.terrain b/public/terrain/19/858508/353876.terrain new file mode 100644 index 000000000..8e49d83e3 Binary files /dev/null and b/public/terrain/19/858508/353876.terrain differ diff --git a/public/terrain/19/858508/353877.terrain b/public/terrain/19/858508/353877.terrain new file mode 100644 index 000000000..68e2d32dd Binary files /dev/null and b/public/terrain/19/858508/353877.terrain differ diff --git a/public/terrain/19/858508/353878.terrain b/public/terrain/19/858508/353878.terrain new file mode 100644 index 000000000..937c640a8 Binary files /dev/null and b/public/terrain/19/858508/353878.terrain differ diff --git a/public/terrain/19/858508/353879.terrain b/public/terrain/19/858508/353879.terrain new file mode 100644 index 000000000..d9a7b3a4d Binary files /dev/null and b/public/terrain/19/858508/353879.terrain differ diff --git a/public/terrain/19/858508/353880.terrain b/public/terrain/19/858508/353880.terrain new file mode 100644 index 000000000..be838593c Binary files /dev/null and b/public/terrain/19/858508/353880.terrain differ diff --git a/public/terrain/19/858508/353881.terrain b/public/terrain/19/858508/353881.terrain new file mode 100644 index 000000000..48d549613 Binary files /dev/null and b/public/terrain/19/858508/353881.terrain differ diff --git a/public/terrain/19/858508/353882.terrain b/public/terrain/19/858508/353882.terrain new file mode 100644 index 000000000..95654d9bf Binary files /dev/null and b/public/terrain/19/858508/353882.terrain differ diff --git a/public/terrain/19/858508/353883.terrain b/public/terrain/19/858508/353883.terrain new file mode 100644 index 000000000..3b6a43803 Binary files /dev/null and b/public/terrain/19/858508/353883.terrain differ diff --git a/public/terrain/19/858508/353884.terrain b/public/terrain/19/858508/353884.terrain new file mode 100644 index 000000000..d6ade8086 Binary files /dev/null and b/public/terrain/19/858508/353884.terrain differ diff --git a/public/terrain/19/858508/353885.terrain b/public/terrain/19/858508/353885.terrain new file mode 100644 index 000000000..b20911be5 Binary files /dev/null and b/public/terrain/19/858508/353885.terrain differ diff --git a/public/terrain/19/858508/353886.terrain b/public/terrain/19/858508/353886.terrain new file mode 100644 index 000000000..674e61fbc Binary files /dev/null and b/public/terrain/19/858508/353886.terrain differ diff --git a/public/terrain/19/858508/353887.terrain b/public/terrain/19/858508/353887.terrain new file mode 100644 index 000000000..d285e4870 Binary files /dev/null and b/public/terrain/19/858508/353887.terrain differ diff --git a/public/terrain/19/858508/353888.terrain b/public/terrain/19/858508/353888.terrain new file mode 100644 index 000000000..4c43c7eb0 Binary files /dev/null and b/public/terrain/19/858508/353888.terrain differ diff --git a/public/terrain/19/858508/353889.terrain b/public/terrain/19/858508/353889.terrain new file mode 100644 index 000000000..850da6930 Binary files /dev/null and b/public/terrain/19/858508/353889.terrain differ diff --git a/public/terrain/19/858508/353890.terrain b/public/terrain/19/858508/353890.terrain new file mode 100644 index 000000000..64184ac1a Binary files /dev/null and b/public/terrain/19/858508/353890.terrain differ diff --git a/public/terrain/19/858508/353891.terrain b/public/terrain/19/858508/353891.terrain new file mode 100644 index 000000000..94e3118ef Binary files /dev/null and b/public/terrain/19/858508/353891.terrain differ diff --git a/public/terrain/19/858508/353892.terrain b/public/terrain/19/858508/353892.terrain new file mode 100644 index 000000000..2fc295526 Binary files /dev/null and b/public/terrain/19/858508/353892.terrain differ diff --git a/public/terrain/19/858508/353893.terrain b/public/terrain/19/858508/353893.terrain new file mode 100644 index 000000000..a6ef89b78 Binary files /dev/null and b/public/terrain/19/858508/353893.terrain differ diff --git a/public/terrain/19/858508/353894.terrain b/public/terrain/19/858508/353894.terrain new file mode 100644 index 000000000..d399217f6 Binary files /dev/null and b/public/terrain/19/858508/353894.terrain differ diff --git a/public/terrain/19/858508/353895.terrain b/public/terrain/19/858508/353895.terrain new file mode 100644 index 000000000..465d7c961 Binary files /dev/null and b/public/terrain/19/858508/353895.terrain differ diff --git a/public/terrain/19/858508/353896.terrain b/public/terrain/19/858508/353896.terrain new file mode 100644 index 000000000..1ab962644 Binary files /dev/null and b/public/terrain/19/858508/353896.terrain differ diff --git a/public/terrain/19/858508/353897.terrain b/public/terrain/19/858508/353897.terrain new file mode 100644 index 000000000..a5d892fdf Binary files /dev/null and b/public/terrain/19/858508/353897.terrain differ diff --git a/public/terrain/19/858508/353898.terrain b/public/terrain/19/858508/353898.terrain new file mode 100644 index 000000000..b1b7fce9e Binary files /dev/null and b/public/terrain/19/858508/353898.terrain differ diff --git a/public/terrain/19/858508/353899.terrain b/public/terrain/19/858508/353899.terrain new file mode 100644 index 000000000..d44141371 Binary files /dev/null and b/public/terrain/19/858508/353899.terrain differ diff --git a/public/terrain/19/858508/353900.terrain b/public/terrain/19/858508/353900.terrain new file mode 100644 index 000000000..71a67bee3 Binary files /dev/null and b/public/terrain/19/858508/353900.terrain differ diff --git a/public/terrain/19/858508/353901.terrain b/public/terrain/19/858508/353901.terrain new file mode 100644 index 000000000..a4c04a940 Binary files /dev/null and b/public/terrain/19/858508/353901.terrain differ diff --git a/public/terrain/19/858508/353902.terrain b/public/terrain/19/858508/353902.terrain new file mode 100644 index 000000000..db3c39b93 Binary files /dev/null and b/public/terrain/19/858508/353902.terrain differ diff --git a/public/terrain/19/858508/353903.terrain b/public/terrain/19/858508/353903.terrain new file mode 100644 index 000000000..3325897e8 Binary files /dev/null and b/public/terrain/19/858508/353903.terrain differ diff --git a/public/terrain/19/858508/353904.terrain b/public/terrain/19/858508/353904.terrain new file mode 100644 index 000000000..f68481abc Binary files /dev/null and b/public/terrain/19/858508/353904.terrain differ diff --git a/public/terrain/19/858508/353905.terrain b/public/terrain/19/858508/353905.terrain new file mode 100644 index 000000000..5809ddc08 Binary files /dev/null and b/public/terrain/19/858508/353905.terrain differ diff --git a/public/terrain/19/858508/353906.terrain b/public/terrain/19/858508/353906.terrain new file mode 100644 index 000000000..5ac4f880c Binary files /dev/null and b/public/terrain/19/858508/353906.terrain differ diff --git a/public/terrain/19/858508/353907.terrain b/public/terrain/19/858508/353907.terrain new file mode 100644 index 000000000..0f6356572 Binary files /dev/null and b/public/terrain/19/858508/353907.terrain differ diff --git a/public/terrain/19/858508/353908.terrain b/public/terrain/19/858508/353908.terrain new file mode 100644 index 000000000..81be13966 Binary files /dev/null and b/public/terrain/19/858508/353908.terrain differ diff --git a/public/terrain/19/858508/353909.terrain b/public/terrain/19/858508/353909.terrain new file mode 100644 index 000000000..fcf552a7d Binary files /dev/null and b/public/terrain/19/858508/353909.terrain differ diff --git a/public/terrain/19/858508/353910.terrain b/public/terrain/19/858508/353910.terrain new file mode 100644 index 000000000..5fcda25f5 Binary files /dev/null and b/public/terrain/19/858508/353910.terrain differ diff --git a/public/terrain/19/858508/353911.terrain b/public/terrain/19/858508/353911.terrain new file mode 100644 index 000000000..3cfe81086 Binary files /dev/null and b/public/terrain/19/858508/353911.terrain differ diff --git a/public/terrain/19/858508/353912.terrain b/public/terrain/19/858508/353912.terrain new file mode 100644 index 000000000..958b6518e Binary files /dev/null and b/public/terrain/19/858508/353912.terrain differ diff --git a/public/terrain/19/858508/353913.terrain b/public/terrain/19/858508/353913.terrain new file mode 100644 index 000000000..7c06e0993 Binary files /dev/null and b/public/terrain/19/858508/353913.terrain differ diff --git a/public/terrain/19/858508/353914.terrain b/public/terrain/19/858508/353914.terrain new file mode 100644 index 000000000..52516b376 Binary files /dev/null and b/public/terrain/19/858508/353914.terrain differ diff --git a/public/terrain/19/858508/353915.terrain b/public/terrain/19/858508/353915.terrain new file mode 100644 index 000000000..ebb071627 Binary files /dev/null and b/public/terrain/19/858508/353915.terrain differ diff --git a/public/terrain/19/858508/353916.terrain b/public/terrain/19/858508/353916.terrain new file mode 100644 index 000000000..4c9297be4 Binary files /dev/null and b/public/terrain/19/858508/353916.terrain differ diff --git a/public/terrain/19/858508/353917.terrain b/public/terrain/19/858508/353917.terrain new file mode 100644 index 000000000..91be985a6 Binary files /dev/null and b/public/terrain/19/858508/353917.terrain differ diff --git a/public/terrain/19/858508/353918.terrain b/public/terrain/19/858508/353918.terrain new file mode 100644 index 000000000..07e67364b Binary files /dev/null and b/public/terrain/19/858508/353918.terrain differ diff --git a/public/terrain/19/858508/353919.terrain b/public/terrain/19/858508/353919.terrain new file mode 100644 index 000000000..de9a5685e Binary files /dev/null and b/public/terrain/19/858508/353919.terrain differ diff --git a/public/terrain/19/858508/353920.terrain b/public/terrain/19/858508/353920.terrain new file mode 100644 index 000000000..2b7cea5c3 Binary files /dev/null and b/public/terrain/19/858508/353920.terrain differ diff --git a/public/terrain/19/858508/353921.terrain b/public/terrain/19/858508/353921.terrain new file mode 100644 index 000000000..59491ff78 Binary files /dev/null and b/public/terrain/19/858508/353921.terrain differ diff --git a/public/terrain/19/858508/353922.terrain b/public/terrain/19/858508/353922.terrain new file mode 100644 index 000000000..4fa4e03b9 Binary files /dev/null and b/public/terrain/19/858508/353922.terrain differ diff --git a/public/terrain/19/858508/353923.terrain b/public/terrain/19/858508/353923.terrain new file mode 100644 index 000000000..8d940b1e0 Binary files /dev/null and b/public/terrain/19/858508/353923.terrain differ diff --git a/public/terrain/19/858508/353924.terrain b/public/terrain/19/858508/353924.terrain new file mode 100644 index 000000000..b14b2c17e Binary files /dev/null and b/public/terrain/19/858508/353924.terrain differ diff --git a/public/terrain/19/858508/353925.terrain b/public/terrain/19/858508/353925.terrain new file mode 100644 index 000000000..3080b47f0 Binary files /dev/null and b/public/terrain/19/858508/353925.terrain differ diff --git a/public/terrain/19/858508/353926.terrain b/public/terrain/19/858508/353926.terrain new file mode 100644 index 000000000..df400d048 Binary files /dev/null and b/public/terrain/19/858508/353926.terrain differ diff --git a/public/terrain/19/858508/353927.terrain b/public/terrain/19/858508/353927.terrain new file mode 100644 index 000000000..9a4acf5bc Binary files /dev/null and b/public/terrain/19/858508/353927.terrain differ diff --git a/public/terrain/19/858508/353928.terrain b/public/terrain/19/858508/353928.terrain new file mode 100644 index 000000000..c698f2dca Binary files /dev/null and b/public/terrain/19/858508/353928.terrain differ diff --git a/public/terrain/19/858508/353929.terrain b/public/terrain/19/858508/353929.terrain new file mode 100644 index 000000000..07d7df533 Binary files /dev/null and b/public/terrain/19/858508/353929.terrain differ diff --git a/public/terrain/19/858508/353930.terrain b/public/terrain/19/858508/353930.terrain new file mode 100644 index 000000000..391cdea16 Binary files /dev/null and b/public/terrain/19/858508/353930.terrain differ diff --git a/public/terrain/19/858508/353931.terrain b/public/terrain/19/858508/353931.terrain new file mode 100644 index 000000000..3eb153a7d Binary files /dev/null and b/public/terrain/19/858508/353931.terrain differ diff --git a/public/terrain/19/858508/353932.terrain b/public/terrain/19/858508/353932.terrain new file mode 100644 index 000000000..4220910eb Binary files /dev/null and b/public/terrain/19/858508/353932.terrain differ diff --git a/public/terrain/19/858508/353933.terrain b/public/terrain/19/858508/353933.terrain new file mode 100644 index 000000000..37967e312 Binary files /dev/null and b/public/terrain/19/858508/353933.terrain differ diff --git a/public/terrain/19/858508/353934.terrain b/public/terrain/19/858508/353934.terrain new file mode 100644 index 000000000..0d1d189ec Binary files /dev/null and b/public/terrain/19/858508/353934.terrain differ diff --git a/public/terrain/19/858508/353935.terrain b/public/terrain/19/858508/353935.terrain new file mode 100644 index 000000000..0ba2a5e8f Binary files /dev/null and b/public/terrain/19/858508/353935.terrain differ diff --git a/public/terrain/19/858508/353936.terrain b/public/terrain/19/858508/353936.terrain new file mode 100644 index 000000000..7082156c6 Binary files /dev/null and b/public/terrain/19/858508/353936.terrain differ diff --git a/public/terrain/19/858508/353937.terrain b/public/terrain/19/858508/353937.terrain new file mode 100644 index 000000000..7d52b3496 Binary files /dev/null and b/public/terrain/19/858508/353937.terrain differ diff --git a/public/terrain/19/858508/353938.terrain b/public/terrain/19/858508/353938.terrain new file mode 100644 index 000000000..9acdfc1e0 Binary files /dev/null and b/public/terrain/19/858508/353938.terrain differ diff --git a/public/terrain/19/858508/353939.terrain b/public/terrain/19/858508/353939.terrain new file mode 100644 index 000000000..7dd43f46d Binary files /dev/null and b/public/terrain/19/858508/353939.terrain differ diff --git a/public/terrain/19/858508/353940.terrain b/public/terrain/19/858508/353940.terrain new file mode 100644 index 000000000..00296bff0 Binary files /dev/null and b/public/terrain/19/858508/353940.terrain differ diff --git a/public/terrain/19/858508/353941.terrain b/public/terrain/19/858508/353941.terrain new file mode 100644 index 000000000..2129f6749 Binary files /dev/null and b/public/terrain/19/858508/353941.terrain differ diff --git a/public/terrain/19/858508/353942.terrain b/public/terrain/19/858508/353942.terrain new file mode 100644 index 000000000..486619399 Binary files /dev/null and b/public/terrain/19/858508/353942.terrain differ diff --git a/public/terrain/19/858508/353943.terrain b/public/terrain/19/858508/353943.terrain new file mode 100644 index 000000000..e897ebca0 Binary files /dev/null and b/public/terrain/19/858508/353943.terrain differ diff --git a/public/terrain/19/858508/353944.terrain b/public/terrain/19/858508/353944.terrain new file mode 100644 index 000000000..3587430c3 Binary files /dev/null and b/public/terrain/19/858508/353944.terrain differ diff --git a/public/terrain/19/858508/353945.terrain b/public/terrain/19/858508/353945.terrain new file mode 100644 index 000000000..d23dc79fa Binary files /dev/null and b/public/terrain/19/858508/353945.terrain differ diff --git a/public/terrain/19/858508/353946.terrain b/public/terrain/19/858508/353946.terrain new file mode 100644 index 000000000..4e8ff35f4 Binary files /dev/null and b/public/terrain/19/858508/353946.terrain differ diff --git a/public/terrain/19/858508/353947.terrain b/public/terrain/19/858508/353947.terrain new file mode 100644 index 000000000..3905fe36a Binary files /dev/null and b/public/terrain/19/858508/353947.terrain differ diff --git a/public/terrain/19/858508/353948.terrain b/public/terrain/19/858508/353948.terrain new file mode 100644 index 000000000..af7dff966 Binary files /dev/null and b/public/terrain/19/858508/353948.terrain differ diff --git a/public/terrain/19/858508/353949.terrain b/public/terrain/19/858508/353949.terrain new file mode 100644 index 000000000..9a8c6ac78 Binary files /dev/null and b/public/terrain/19/858508/353949.terrain differ diff --git a/public/terrain/19/858508/353950.terrain b/public/terrain/19/858508/353950.terrain new file mode 100644 index 000000000..4b5f52278 Binary files /dev/null and b/public/terrain/19/858508/353950.terrain differ diff --git a/public/terrain/19/858508/353951.terrain b/public/terrain/19/858508/353951.terrain new file mode 100644 index 000000000..fbd3350b2 Binary files /dev/null and b/public/terrain/19/858508/353951.terrain differ diff --git a/public/terrain/19/858508/353952.terrain b/public/terrain/19/858508/353952.terrain new file mode 100644 index 000000000..554385709 Binary files /dev/null and b/public/terrain/19/858508/353952.terrain differ diff --git a/public/terrain/19/858508/353953.terrain b/public/terrain/19/858508/353953.terrain new file mode 100644 index 000000000..d2b0e60f5 Binary files /dev/null and b/public/terrain/19/858508/353953.terrain differ diff --git a/public/terrain/19/858508/353954.terrain b/public/terrain/19/858508/353954.terrain new file mode 100644 index 000000000..672512879 Binary files /dev/null and b/public/terrain/19/858508/353954.terrain differ diff --git a/public/terrain/19/858508/353955.terrain b/public/terrain/19/858508/353955.terrain new file mode 100644 index 000000000..d720eb12a Binary files /dev/null and b/public/terrain/19/858508/353955.terrain differ diff --git a/public/terrain/19/858508/353956.terrain b/public/terrain/19/858508/353956.terrain new file mode 100644 index 000000000..9ffb9e04d Binary files /dev/null and b/public/terrain/19/858508/353956.terrain differ diff --git a/public/terrain/19/858508/353957.terrain b/public/terrain/19/858508/353957.terrain new file mode 100644 index 000000000..fdd0c0b44 Binary files /dev/null and b/public/terrain/19/858508/353957.terrain differ diff --git a/public/terrain/19/858508/353958.terrain b/public/terrain/19/858508/353958.terrain new file mode 100644 index 000000000..d4c5e7724 Binary files /dev/null and b/public/terrain/19/858508/353958.terrain differ diff --git a/public/terrain/19/858508/353959.terrain b/public/terrain/19/858508/353959.terrain new file mode 100644 index 000000000..c9271db45 Binary files /dev/null and b/public/terrain/19/858508/353959.terrain differ diff --git a/public/terrain/19/858508/353960.terrain b/public/terrain/19/858508/353960.terrain new file mode 100644 index 000000000..141df5b0d Binary files /dev/null and b/public/terrain/19/858508/353960.terrain differ diff --git a/public/terrain/19/858508/353961.terrain b/public/terrain/19/858508/353961.terrain new file mode 100644 index 000000000..e838f60c3 Binary files /dev/null and b/public/terrain/19/858508/353961.terrain differ diff --git a/public/terrain/19/858508/353962.terrain b/public/terrain/19/858508/353962.terrain new file mode 100644 index 000000000..08f41810c Binary files /dev/null and b/public/terrain/19/858508/353962.terrain differ diff --git a/public/terrain/19/858508/353963.terrain b/public/terrain/19/858508/353963.terrain new file mode 100644 index 000000000..8f85143e7 Binary files /dev/null and b/public/terrain/19/858508/353963.terrain differ diff --git a/public/terrain/19/858508/353964.terrain b/public/terrain/19/858508/353964.terrain new file mode 100644 index 000000000..58dd887f6 Binary files /dev/null and b/public/terrain/19/858508/353964.terrain differ diff --git a/public/terrain/19/858508/353965.terrain b/public/terrain/19/858508/353965.terrain new file mode 100644 index 000000000..36dd07eee Binary files /dev/null and b/public/terrain/19/858508/353965.terrain differ diff --git a/public/terrain/19/858508/353966.terrain b/public/terrain/19/858508/353966.terrain new file mode 100644 index 000000000..c9c22357e Binary files /dev/null and b/public/terrain/19/858508/353966.terrain differ diff --git a/public/terrain/19/858508/353967.terrain b/public/terrain/19/858508/353967.terrain new file mode 100644 index 000000000..efecc5364 Binary files /dev/null and b/public/terrain/19/858508/353967.terrain differ diff --git a/public/terrain/19/858508/353968.terrain b/public/terrain/19/858508/353968.terrain new file mode 100644 index 000000000..a564a74fc Binary files /dev/null and b/public/terrain/19/858508/353968.terrain differ diff --git a/public/terrain/19/858508/353969.terrain b/public/terrain/19/858508/353969.terrain new file mode 100644 index 000000000..5adf1cd5a Binary files /dev/null and b/public/terrain/19/858508/353969.terrain differ diff --git a/public/terrain/19/858508/353970.terrain b/public/terrain/19/858508/353970.terrain new file mode 100644 index 000000000..1bc1d5b83 Binary files /dev/null and b/public/terrain/19/858508/353970.terrain differ diff --git a/public/terrain/19/858508/353971.terrain b/public/terrain/19/858508/353971.terrain new file mode 100644 index 000000000..e765575ee Binary files /dev/null and b/public/terrain/19/858508/353971.terrain differ diff --git a/public/terrain/19/858508/353972.terrain b/public/terrain/19/858508/353972.terrain new file mode 100644 index 000000000..af0497a65 Binary files /dev/null and b/public/terrain/19/858508/353972.terrain differ diff --git a/public/terrain/19/858508/353973.terrain b/public/terrain/19/858508/353973.terrain new file mode 100644 index 000000000..5b329b1d5 Binary files /dev/null and b/public/terrain/19/858508/353973.terrain differ diff --git a/public/terrain/19/858508/353974.terrain b/public/terrain/19/858508/353974.terrain new file mode 100644 index 000000000..fa692b1e9 Binary files /dev/null and b/public/terrain/19/858508/353974.terrain differ diff --git a/public/terrain/19/858508/353975.terrain b/public/terrain/19/858508/353975.terrain new file mode 100644 index 000000000..f7d569010 Binary files /dev/null and b/public/terrain/19/858508/353975.terrain differ diff --git a/public/terrain/19/858508/353976.terrain b/public/terrain/19/858508/353976.terrain new file mode 100644 index 000000000..6a160c1fc Binary files /dev/null and b/public/terrain/19/858508/353976.terrain differ diff --git a/public/terrain/19/858508/353977.terrain b/public/terrain/19/858508/353977.terrain new file mode 100644 index 000000000..0182cf900 Binary files /dev/null and b/public/terrain/19/858508/353977.terrain differ diff --git a/public/terrain/19/858508/353978.terrain b/public/terrain/19/858508/353978.terrain new file mode 100644 index 000000000..6f687572b Binary files /dev/null and b/public/terrain/19/858508/353978.terrain differ diff --git a/public/terrain/19/858508/353979.terrain b/public/terrain/19/858508/353979.terrain new file mode 100644 index 000000000..e24014c63 Binary files /dev/null and b/public/terrain/19/858508/353979.terrain differ diff --git a/public/terrain/19/858508/353980.terrain b/public/terrain/19/858508/353980.terrain new file mode 100644 index 000000000..5928d17aa Binary files /dev/null and b/public/terrain/19/858508/353980.terrain differ diff --git a/public/terrain/19/858508/353981.terrain b/public/terrain/19/858508/353981.terrain new file mode 100644 index 000000000..363372bf5 Binary files /dev/null and b/public/terrain/19/858508/353981.terrain differ diff --git a/public/terrain/19/858508/353982.terrain b/public/terrain/19/858508/353982.terrain new file mode 100644 index 000000000..a6f359b93 Binary files /dev/null and b/public/terrain/19/858508/353982.terrain differ diff --git a/public/terrain/19/858508/353983.terrain b/public/terrain/19/858508/353983.terrain new file mode 100644 index 000000000..30f59a494 Binary files /dev/null and b/public/terrain/19/858508/353983.terrain differ diff --git a/public/terrain/19/858508/353984.terrain b/public/terrain/19/858508/353984.terrain new file mode 100644 index 000000000..5a8247bb0 Binary files /dev/null and b/public/terrain/19/858508/353984.terrain differ diff --git a/public/terrain/19/858508/353985.terrain b/public/terrain/19/858508/353985.terrain new file mode 100644 index 000000000..f3979b944 Binary files /dev/null and b/public/terrain/19/858508/353985.terrain differ diff --git a/public/terrain/19/858508/353986.terrain b/public/terrain/19/858508/353986.terrain new file mode 100644 index 000000000..1d34e9bb5 Binary files /dev/null and b/public/terrain/19/858508/353986.terrain differ diff --git a/public/terrain/19/858508/353987.terrain b/public/terrain/19/858508/353987.terrain new file mode 100644 index 000000000..34e66565e Binary files /dev/null and b/public/terrain/19/858508/353987.terrain differ diff --git a/public/terrain/19/858508/353988.terrain b/public/terrain/19/858508/353988.terrain new file mode 100644 index 000000000..e16ae5146 Binary files /dev/null and b/public/terrain/19/858508/353988.terrain differ diff --git a/public/terrain/19/858508/353989.terrain b/public/terrain/19/858508/353989.terrain new file mode 100644 index 000000000..7f22a5e82 Binary files /dev/null and b/public/terrain/19/858508/353989.terrain differ diff --git a/public/terrain/19/858508/353990.terrain b/public/terrain/19/858508/353990.terrain new file mode 100644 index 000000000..f4eda13d5 Binary files /dev/null and b/public/terrain/19/858508/353990.terrain differ diff --git a/public/terrain/19/858508/353991.terrain b/public/terrain/19/858508/353991.terrain new file mode 100644 index 000000000..bef1f97f0 Binary files /dev/null and b/public/terrain/19/858508/353991.terrain differ diff --git a/public/terrain/19/858508/353992.terrain b/public/terrain/19/858508/353992.terrain new file mode 100644 index 000000000..2569907b6 Binary files /dev/null and b/public/terrain/19/858508/353992.terrain differ diff --git a/public/terrain/19/858508/353993.terrain b/public/terrain/19/858508/353993.terrain new file mode 100644 index 000000000..a17fe04e6 Binary files /dev/null and b/public/terrain/19/858508/353993.terrain differ diff --git a/public/terrain/19/858508/353994.terrain b/public/terrain/19/858508/353994.terrain new file mode 100644 index 000000000..b55620134 Binary files /dev/null and b/public/terrain/19/858508/353994.terrain differ diff --git a/public/terrain/19/858508/353995.terrain b/public/terrain/19/858508/353995.terrain new file mode 100644 index 000000000..73406331b Binary files /dev/null and b/public/terrain/19/858508/353995.terrain differ diff --git a/public/terrain/19/858508/353996.terrain b/public/terrain/19/858508/353996.terrain new file mode 100644 index 000000000..fb1b57d03 Binary files /dev/null and b/public/terrain/19/858508/353996.terrain differ diff --git a/public/terrain/19/858508/353997.terrain b/public/terrain/19/858508/353997.terrain new file mode 100644 index 000000000..3fb789775 Binary files /dev/null and b/public/terrain/19/858508/353997.terrain differ diff --git a/public/terrain/19/858508/353998.terrain b/public/terrain/19/858508/353998.terrain new file mode 100644 index 000000000..c6953d87a Binary files /dev/null and b/public/terrain/19/858508/353998.terrain differ diff --git a/public/terrain/19/858508/353999.terrain b/public/terrain/19/858508/353999.terrain new file mode 100644 index 000000000..2e6e1d6ab Binary files /dev/null and b/public/terrain/19/858508/353999.terrain differ diff --git a/public/terrain/19/858508/354000.terrain b/public/terrain/19/858508/354000.terrain new file mode 100644 index 000000000..ff34223a7 Binary files /dev/null and b/public/terrain/19/858508/354000.terrain differ diff --git a/public/terrain/19/858508/354001.terrain b/public/terrain/19/858508/354001.terrain new file mode 100644 index 000000000..09493a5d9 Binary files /dev/null and b/public/terrain/19/858508/354001.terrain differ diff --git a/public/terrain/19/858508/354002.terrain b/public/terrain/19/858508/354002.terrain new file mode 100644 index 000000000..63516d80a Binary files /dev/null and b/public/terrain/19/858508/354002.terrain differ diff --git a/public/terrain/19/858508/354003.terrain b/public/terrain/19/858508/354003.terrain new file mode 100644 index 000000000..cee57f57a Binary files /dev/null and b/public/terrain/19/858508/354003.terrain differ diff --git a/public/terrain/19/858508/354004.terrain b/public/terrain/19/858508/354004.terrain new file mode 100644 index 000000000..f779b94e2 Binary files /dev/null and b/public/terrain/19/858508/354004.terrain differ diff --git a/public/terrain/19/858508/354005.terrain b/public/terrain/19/858508/354005.terrain new file mode 100644 index 000000000..fe4e184b5 Binary files /dev/null and b/public/terrain/19/858508/354005.terrain differ diff --git a/public/terrain/19/858508/354006.terrain b/public/terrain/19/858508/354006.terrain new file mode 100644 index 000000000..52201dbc3 Binary files /dev/null and b/public/terrain/19/858508/354006.terrain differ diff --git a/public/terrain/19/858508/354007.terrain b/public/terrain/19/858508/354007.terrain new file mode 100644 index 000000000..9bf5a0e9c Binary files /dev/null and b/public/terrain/19/858508/354007.terrain differ diff --git a/public/terrain/19/858508/354008.terrain b/public/terrain/19/858508/354008.terrain new file mode 100644 index 000000000..0ff8ef3a8 Binary files /dev/null and b/public/terrain/19/858508/354008.terrain differ diff --git a/public/terrain/19/858508/354009.terrain b/public/terrain/19/858508/354009.terrain new file mode 100644 index 000000000..b1195578d Binary files /dev/null and b/public/terrain/19/858508/354009.terrain differ diff --git a/public/terrain/19/858508/354010.terrain b/public/terrain/19/858508/354010.terrain new file mode 100644 index 000000000..f11ce50b2 Binary files /dev/null and b/public/terrain/19/858508/354010.terrain differ diff --git a/public/terrain/19/858508/354011.terrain b/public/terrain/19/858508/354011.terrain new file mode 100644 index 000000000..4aa7b6883 Binary files /dev/null and b/public/terrain/19/858508/354011.terrain differ diff --git a/public/terrain/19/858508/354012.terrain b/public/terrain/19/858508/354012.terrain new file mode 100644 index 000000000..fa144f279 Binary files /dev/null and b/public/terrain/19/858508/354012.terrain differ diff --git a/public/terrain/19/858508/354013.terrain b/public/terrain/19/858508/354013.terrain new file mode 100644 index 000000000..4a30b6527 Binary files /dev/null and b/public/terrain/19/858508/354013.terrain differ diff --git a/public/terrain/19/858508/354014.terrain b/public/terrain/19/858508/354014.terrain new file mode 100644 index 000000000..401bbc48f Binary files /dev/null and b/public/terrain/19/858508/354014.terrain differ diff --git a/public/terrain/19/858508/354015.terrain b/public/terrain/19/858508/354015.terrain new file mode 100644 index 000000000..452d14357 Binary files /dev/null and b/public/terrain/19/858508/354015.terrain differ diff --git a/public/terrain/19/858508/354016.terrain b/public/terrain/19/858508/354016.terrain new file mode 100644 index 000000000..ae03edf5a Binary files /dev/null and b/public/terrain/19/858508/354016.terrain differ diff --git a/public/terrain/19/858508/354017.terrain b/public/terrain/19/858508/354017.terrain new file mode 100644 index 000000000..cd31f3247 Binary files /dev/null and b/public/terrain/19/858508/354017.terrain differ diff --git a/public/terrain/19/858508/354018.terrain b/public/terrain/19/858508/354018.terrain new file mode 100644 index 000000000..6d490ea6a Binary files /dev/null and b/public/terrain/19/858508/354018.terrain differ diff --git a/public/terrain/19/858508/354019.terrain b/public/terrain/19/858508/354019.terrain new file mode 100644 index 000000000..1120275cc Binary files /dev/null and b/public/terrain/19/858508/354019.terrain differ diff --git a/public/terrain/19/858508/354020.terrain b/public/terrain/19/858508/354020.terrain new file mode 100644 index 000000000..a311d4eff Binary files /dev/null and b/public/terrain/19/858508/354020.terrain differ diff --git a/public/terrain/19/858508/354021.terrain b/public/terrain/19/858508/354021.terrain new file mode 100644 index 000000000..d3e64ddd6 Binary files /dev/null and b/public/terrain/19/858508/354021.terrain differ diff --git a/public/terrain/19/858508/354022.terrain b/public/terrain/19/858508/354022.terrain new file mode 100644 index 000000000..968afcaa6 Binary files /dev/null and b/public/terrain/19/858508/354022.terrain differ diff --git a/public/terrain/19/858508/354023.terrain b/public/terrain/19/858508/354023.terrain new file mode 100644 index 000000000..02c099f44 Binary files /dev/null and b/public/terrain/19/858508/354023.terrain differ diff --git a/public/terrain/19/858508/354024.terrain b/public/terrain/19/858508/354024.terrain new file mode 100644 index 000000000..a44634eb1 Binary files /dev/null and b/public/terrain/19/858508/354024.terrain differ diff --git a/public/terrain/19/858508/354025.terrain b/public/terrain/19/858508/354025.terrain new file mode 100644 index 000000000..d66842c62 Binary files /dev/null and b/public/terrain/19/858508/354025.terrain differ diff --git a/public/terrain/19/858508/354026.terrain b/public/terrain/19/858508/354026.terrain new file mode 100644 index 000000000..8a51725a6 Binary files /dev/null and b/public/terrain/19/858508/354026.terrain differ diff --git a/public/terrain/19/858508/354027.terrain b/public/terrain/19/858508/354027.terrain new file mode 100644 index 000000000..c94a09845 Binary files /dev/null and b/public/terrain/19/858508/354027.terrain differ diff --git a/public/terrain/19/858508/354028.terrain b/public/terrain/19/858508/354028.terrain new file mode 100644 index 000000000..f353d2387 Binary files /dev/null and b/public/terrain/19/858508/354028.terrain differ diff --git a/public/terrain/19/858508/354029.terrain b/public/terrain/19/858508/354029.terrain new file mode 100644 index 000000000..7dfe812c5 Binary files /dev/null and b/public/terrain/19/858508/354029.terrain differ diff --git a/public/terrain/19/858508/354030.terrain b/public/terrain/19/858508/354030.terrain new file mode 100644 index 000000000..cffa08411 Binary files /dev/null and b/public/terrain/19/858508/354030.terrain differ diff --git a/public/terrain/19/858508/354031.terrain b/public/terrain/19/858508/354031.terrain new file mode 100644 index 000000000..b16eb0955 Binary files /dev/null and b/public/terrain/19/858508/354031.terrain differ diff --git a/public/terrain/19/858508/354032.terrain b/public/terrain/19/858508/354032.terrain new file mode 100644 index 000000000..e6a9a9675 Binary files /dev/null and b/public/terrain/19/858508/354032.terrain differ diff --git a/public/terrain/19/858508/354033.terrain b/public/terrain/19/858508/354033.terrain new file mode 100644 index 000000000..dc77ad1ab Binary files /dev/null and b/public/terrain/19/858508/354033.terrain differ diff --git a/public/terrain/19/858508/354034.terrain b/public/terrain/19/858508/354034.terrain new file mode 100644 index 000000000..ece5c935d Binary files /dev/null and b/public/terrain/19/858508/354034.terrain differ diff --git a/public/terrain/19/858508/354035.terrain b/public/terrain/19/858508/354035.terrain new file mode 100644 index 000000000..fe11af66c Binary files /dev/null and b/public/terrain/19/858508/354035.terrain differ diff --git a/public/terrain/19/858508/354036.terrain b/public/terrain/19/858508/354036.terrain new file mode 100644 index 000000000..2e2963b93 Binary files /dev/null and b/public/terrain/19/858508/354036.terrain differ diff --git a/public/terrain/19/858508/354037.terrain b/public/terrain/19/858508/354037.terrain new file mode 100644 index 000000000..01154ea0e Binary files /dev/null and b/public/terrain/19/858508/354037.terrain differ diff --git a/public/terrain/19/858508/354038.terrain b/public/terrain/19/858508/354038.terrain new file mode 100644 index 000000000..095134561 Binary files /dev/null and b/public/terrain/19/858508/354038.terrain differ diff --git a/public/terrain/19/858508/354039.terrain b/public/terrain/19/858508/354039.terrain new file mode 100644 index 000000000..1f19e9ea2 Binary files /dev/null and b/public/terrain/19/858508/354039.terrain differ diff --git a/public/terrain/19/858508/354040.terrain b/public/terrain/19/858508/354040.terrain new file mode 100644 index 000000000..049f1b8d3 Binary files /dev/null and b/public/terrain/19/858508/354040.terrain differ diff --git a/public/terrain/19/858508/354041.terrain b/public/terrain/19/858508/354041.terrain new file mode 100644 index 000000000..5a248ed66 Binary files /dev/null and b/public/terrain/19/858508/354041.terrain differ diff --git a/public/terrain/19/858508/354042.terrain b/public/terrain/19/858508/354042.terrain new file mode 100644 index 000000000..5845c9b30 Binary files /dev/null and b/public/terrain/19/858508/354042.terrain differ diff --git a/public/terrain/19/858508/354043.terrain b/public/terrain/19/858508/354043.terrain new file mode 100644 index 000000000..585da3adf Binary files /dev/null and b/public/terrain/19/858508/354043.terrain differ diff --git a/public/terrain/19/858508/354044.terrain b/public/terrain/19/858508/354044.terrain new file mode 100644 index 000000000..f14022285 Binary files /dev/null and b/public/terrain/19/858508/354044.terrain differ diff --git a/public/terrain/19/858508/354045.terrain b/public/terrain/19/858508/354045.terrain new file mode 100644 index 000000000..42a2b1481 Binary files /dev/null and b/public/terrain/19/858508/354045.terrain differ diff --git a/public/terrain/19/858508/354046.terrain b/public/terrain/19/858508/354046.terrain new file mode 100644 index 000000000..b6afe8a61 Binary files /dev/null and b/public/terrain/19/858508/354046.terrain differ diff --git a/public/terrain/19/858508/354047.terrain b/public/terrain/19/858508/354047.terrain new file mode 100644 index 000000000..ebc25ae4e Binary files /dev/null and b/public/terrain/19/858508/354047.terrain differ diff --git a/public/terrain/19/858508/354048.terrain b/public/terrain/19/858508/354048.terrain new file mode 100644 index 000000000..269be74da Binary files /dev/null and b/public/terrain/19/858508/354048.terrain differ diff --git a/public/terrain/19/858508/354049.terrain b/public/terrain/19/858508/354049.terrain new file mode 100644 index 000000000..260d7da17 Binary files /dev/null and b/public/terrain/19/858508/354049.terrain differ diff --git a/public/terrain/19/858508/354050.terrain b/public/terrain/19/858508/354050.terrain new file mode 100644 index 000000000..b13c45a42 Binary files /dev/null and b/public/terrain/19/858508/354050.terrain differ diff --git a/public/terrain/19/858508/354051.terrain b/public/terrain/19/858508/354051.terrain new file mode 100644 index 000000000..97c194834 Binary files /dev/null and b/public/terrain/19/858508/354051.terrain differ diff --git a/public/terrain/19/858508/354052.terrain b/public/terrain/19/858508/354052.terrain new file mode 100644 index 000000000..4e85fa266 Binary files /dev/null and b/public/terrain/19/858508/354052.terrain differ diff --git a/public/terrain/19/858508/354053.terrain b/public/terrain/19/858508/354053.terrain new file mode 100644 index 000000000..27a1c474f Binary files /dev/null and b/public/terrain/19/858508/354053.terrain differ diff --git a/public/terrain/19/858508/354054.terrain b/public/terrain/19/858508/354054.terrain new file mode 100644 index 000000000..ad872ca07 Binary files /dev/null and b/public/terrain/19/858508/354054.terrain differ diff --git a/public/terrain/19/858508/354055.terrain b/public/terrain/19/858508/354055.terrain new file mode 100644 index 000000000..21ab9dc31 Binary files /dev/null and b/public/terrain/19/858508/354055.terrain differ diff --git a/public/terrain/19/858508/354056.terrain b/public/terrain/19/858508/354056.terrain new file mode 100644 index 000000000..6cb307349 Binary files /dev/null and b/public/terrain/19/858508/354056.terrain differ diff --git a/public/terrain/19/858508/354057.terrain b/public/terrain/19/858508/354057.terrain new file mode 100644 index 000000000..7b491e4d2 Binary files /dev/null and b/public/terrain/19/858508/354057.terrain differ diff --git a/public/terrain/19/858508/354058.terrain b/public/terrain/19/858508/354058.terrain new file mode 100644 index 000000000..f599b46ad Binary files /dev/null and b/public/terrain/19/858508/354058.terrain differ diff --git a/public/terrain/19/858508/354059.terrain b/public/terrain/19/858508/354059.terrain new file mode 100644 index 000000000..0e665cf3f Binary files /dev/null and b/public/terrain/19/858508/354059.terrain differ diff --git a/public/terrain/19/858509/353743.terrain b/public/terrain/19/858509/353743.terrain new file mode 100644 index 000000000..805228e39 Binary files /dev/null and b/public/terrain/19/858509/353743.terrain differ diff --git a/public/terrain/19/858509/353744.terrain b/public/terrain/19/858509/353744.terrain new file mode 100644 index 000000000..31cc6c0fd Binary files /dev/null and b/public/terrain/19/858509/353744.terrain differ diff --git a/public/terrain/19/858509/353745.terrain b/public/terrain/19/858509/353745.terrain new file mode 100644 index 000000000..fb94820e6 Binary files /dev/null and b/public/terrain/19/858509/353745.terrain differ diff --git a/public/terrain/19/858509/353746.terrain b/public/terrain/19/858509/353746.terrain new file mode 100644 index 000000000..0037ea6b3 Binary files /dev/null and b/public/terrain/19/858509/353746.terrain differ diff --git a/public/terrain/19/858509/353747.terrain b/public/terrain/19/858509/353747.terrain new file mode 100644 index 000000000..a60e3956b Binary files /dev/null and b/public/terrain/19/858509/353747.terrain differ diff --git a/public/terrain/19/858509/353748.terrain b/public/terrain/19/858509/353748.terrain new file mode 100644 index 000000000..c95a7a963 Binary files /dev/null and b/public/terrain/19/858509/353748.terrain differ diff --git a/public/terrain/19/858509/353749.terrain b/public/terrain/19/858509/353749.terrain new file mode 100644 index 000000000..dc757ef61 Binary files /dev/null and b/public/terrain/19/858509/353749.terrain differ diff --git a/public/terrain/19/858509/353750.terrain b/public/terrain/19/858509/353750.terrain new file mode 100644 index 000000000..a4cebf32f Binary files /dev/null and b/public/terrain/19/858509/353750.terrain differ diff --git a/public/terrain/19/858509/353751.terrain b/public/terrain/19/858509/353751.terrain new file mode 100644 index 000000000..57faaa9d3 Binary files /dev/null and b/public/terrain/19/858509/353751.terrain differ diff --git a/public/terrain/19/858509/353752.terrain b/public/terrain/19/858509/353752.terrain new file mode 100644 index 000000000..c8b6ef47f Binary files /dev/null and b/public/terrain/19/858509/353752.terrain differ diff --git a/public/terrain/19/858509/353753.terrain b/public/terrain/19/858509/353753.terrain new file mode 100644 index 000000000..172cc624d Binary files /dev/null and b/public/terrain/19/858509/353753.terrain differ diff --git a/public/terrain/19/858509/353754.terrain b/public/terrain/19/858509/353754.terrain new file mode 100644 index 000000000..8fba103d6 Binary files /dev/null and b/public/terrain/19/858509/353754.terrain differ diff --git a/public/terrain/19/858509/353755.terrain b/public/terrain/19/858509/353755.terrain new file mode 100644 index 000000000..d4a0d1ffd Binary files /dev/null and b/public/terrain/19/858509/353755.terrain differ diff --git a/public/terrain/19/858509/353756.terrain b/public/terrain/19/858509/353756.terrain new file mode 100644 index 000000000..5c21dd8a8 Binary files /dev/null and b/public/terrain/19/858509/353756.terrain differ diff --git a/public/terrain/19/858509/353757.terrain b/public/terrain/19/858509/353757.terrain new file mode 100644 index 000000000..7a631c8fa Binary files /dev/null and b/public/terrain/19/858509/353757.terrain differ diff --git a/public/terrain/19/858509/353758.terrain b/public/terrain/19/858509/353758.terrain new file mode 100644 index 000000000..e69c25074 Binary files /dev/null and b/public/terrain/19/858509/353758.terrain differ diff --git a/public/terrain/19/858509/353759.terrain b/public/terrain/19/858509/353759.terrain new file mode 100644 index 000000000..e7de8b459 Binary files /dev/null and b/public/terrain/19/858509/353759.terrain differ diff --git a/public/terrain/19/858509/353760.terrain b/public/terrain/19/858509/353760.terrain new file mode 100644 index 000000000..66a872cce Binary files /dev/null and b/public/terrain/19/858509/353760.terrain differ diff --git a/public/terrain/19/858509/353761.terrain b/public/terrain/19/858509/353761.terrain new file mode 100644 index 000000000..705f723f3 Binary files /dev/null and b/public/terrain/19/858509/353761.terrain differ diff --git a/public/terrain/19/858509/353762.terrain b/public/terrain/19/858509/353762.terrain new file mode 100644 index 000000000..80f182178 Binary files /dev/null and b/public/terrain/19/858509/353762.terrain differ diff --git a/public/terrain/19/858509/353763.terrain b/public/terrain/19/858509/353763.terrain new file mode 100644 index 000000000..f98990625 Binary files /dev/null and b/public/terrain/19/858509/353763.terrain differ diff --git a/public/terrain/19/858509/353764.terrain b/public/terrain/19/858509/353764.terrain new file mode 100644 index 000000000..7d179fbd9 Binary files /dev/null and b/public/terrain/19/858509/353764.terrain differ diff --git a/public/terrain/19/858509/353765.terrain b/public/terrain/19/858509/353765.terrain new file mode 100644 index 000000000..2bb323e96 Binary files /dev/null and b/public/terrain/19/858509/353765.terrain differ diff --git a/public/terrain/19/858509/353766.terrain b/public/terrain/19/858509/353766.terrain new file mode 100644 index 000000000..35cc88d14 Binary files /dev/null and b/public/terrain/19/858509/353766.terrain differ diff --git a/public/terrain/19/858509/353767.terrain b/public/terrain/19/858509/353767.terrain new file mode 100644 index 000000000..32e2524bb Binary files /dev/null and b/public/terrain/19/858509/353767.terrain differ diff --git a/public/terrain/19/858509/353768.terrain b/public/terrain/19/858509/353768.terrain new file mode 100644 index 000000000..1c4f6d926 Binary files /dev/null and b/public/terrain/19/858509/353768.terrain differ diff --git a/public/terrain/19/858509/353769.terrain b/public/terrain/19/858509/353769.terrain new file mode 100644 index 000000000..bab1321c1 Binary files /dev/null and b/public/terrain/19/858509/353769.terrain differ diff --git a/public/terrain/19/858509/353770.terrain b/public/terrain/19/858509/353770.terrain new file mode 100644 index 000000000..1abd32bdc Binary files /dev/null and b/public/terrain/19/858509/353770.terrain differ diff --git a/public/terrain/19/858509/353771.terrain b/public/terrain/19/858509/353771.terrain new file mode 100644 index 000000000..e8074a095 Binary files /dev/null and b/public/terrain/19/858509/353771.terrain differ diff --git a/public/terrain/19/858509/353772.terrain b/public/terrain/19/858509/353772.terrain new file mode 100644 index 000000000..96d9d8375 Binary files /dev/null and b/public/terrain/19/858509/353772.terrain differ diff --git a/public/terrain/19/858509/353773.terrain b/public/terrain/19/858509/353773.terrain new file mode 100644 index 000000000..93f2821ad Binary files /dev/null and b/public/terrain/19/858509/353773.terrain differ diff --git a/public/terrain/19/858509/353774.terrain b/public/terrain/19/858509/353774.terrain new file mode 100644 index 000000000..26c17579d Binary files /dev/null and b/public/terrain/19/858509/353774.terrain differ diff --git a/public/terrain/19/858509/353775.terrain b/public/terrain/19/858509/353775.terrain new file mode 100644 index 000000000..5b730cb06 Binary files /dev/null and b/public/terrain/19/858509/353775.terrain differ diff --git a/public/terrain/19/858509/353776.terrain b/public/terrain/19/858509/353776.terrain new file mode 100644 index 000000000..0c1d771ab Binary files /dev/null and b/public/terrain/19/858509/353776.terrain differ diff --git a/public/terrain/19/858509/353777.terrain b/public/terrain/19/858509/353777.terrain new file mode 100644 index 000000000..30ccf0a73 Binary files /dev/null and b/public/terrain/19/858509/353777.terrain differ diff --git a/public/terrain/19/858509/353778.terrain b/public/terrain/19/858509/353778.terrain new file mode 100644 index 000000000..140bfc106 Binary files /dev/null and b/public/terrain/19/858509/353778.terrain differ diff --git a/public/terrain/19/858509/353779.terrain b/public/terrain/19/858509/353779.terrain new file mode 100644 index 000000000..1e8b2c6f5 Binary files /dev/null and b/public/terrain/19/858509/353779.terrain differ diff --git a/public/terrain/19/858509/353780.terrain b/public/terrain/19/858509/353780.terrain new file mode 100644 index 000000000..2fb30e80e Binary files /dev/null and b/public/terrain/19/858509/353780.terrain differ diff --git a/public/terrain/19/858509/353781.terrain b/public/terrain/19/858509/353781.terrain new file mode 100644 index 000000000..9ce835217 Binary files /dev/null and b/public/terrain/19/858509/353781.terrain differ diff --git a/public/terrain/19/858509/353782.terrain b/public/terrain/19/858509/353782.terrain new file mode 100644 index 000000000..1c8532722 Binary files /dev/null and b/public/terrain/19/858509/353782.terrain differ diff --git a/public/terrain/19/858509/353783.terrain b/public/terrain/19/858509/353783.terrain new file mode 100644 index 000000000..4f26c81c2 Binary files /dev/null and b/public/terrain/19/858509/353783.terrain differ diff --git a/public/terrain/19/858509/353784.terrain b/public/terrain/19/858509/353784.terrain new file mode 100644 index 000000000..ff0cba5ff Binary files /dev/null and b/public/terrain/19/858509/353784.terrain differ diff --git a/public/terrain/19/858509/353785.terrain b/public/terrain/19/858509/353785.terrain new file mode 100644 index 000000000..b4cd532b0 Binary files /dev/null and b/public/terrain/19/858509/353785.terrain differ diff --git a/public/terrain/19/858509/353786.terrain b/public/terrain/19/858509/353786.terrain new file mode 100644 index 000000000..42c0b0668 Binary files /dev/null and b/public/terrain/19/858509/353786.terrain differ diff --git a/public/terrain/19/858509/353787.terrain b/public/terrain/19/858509/353787.terrain new file mode 100644 index 000000000..fcf19b4a5 Binary files /dev/null and b/public/terrain/19/858509/353787.terrain differ diff --git a/public/terrain/19/858509/353788.terrain b/public/terrain/19/858509/353788.terrain new file mode 100644 index 000000000..acf0d8d83 Binary files /dev/null and b/public/terrain/19/858509/353788.terrain differ diff --git a/public/terrain/19/858509/353789.terrain b/public/terrain/19/858509/353789.terrain new file mode 100644 index 000000000..26f53d0f3 Binary files /dev/null and b/public/terrain/19/858509/353789.terrain differ diff --git a/public/terrain/19/858509/353790.terrain b/public/terrain/19/858509/353790.terrain new file mode 100644 index 000000000..1c4eff2d4 Binary files /dev/null and b/public/terrain/19/858509/353790.terrain differ diff --git a/public/terrain/19/858509/353791.terrain b/public/terrain/19/858509/353791.terrain new file mode 100644 index 000000000..757d59e78 Binary files /dev/null and b/public/terrain/19/858509/353791.terrain differ diff --git a/public/terrain/19/858509/353792.terrain b/public/terrain/19/858509/353792.terrain new file mode 100644 index 000000000..6d3282130 Binary files /dev/null and b/public/terrain/19/858509/353792.terrain differ diff --git a/public/terrain/19/858509/353793.terrain b/public/terrain/19/858509/353793.terrain new file mode 100644 index 000000000..3401a3037 Binary files /dev/null and b/public/terrain/19/858509/353793.terrain differ diff --git a/public/terrain/19/858509/353794.terrain b/public/terrain/19/858509/353794.terrain new file mode 100644 index 000000000..e1cd59494 Binary files /dev/null and b/public/terrain/19/858509/353794.terrain differ diff --git a/public/terrain/19/858509/353795.terrain b/public/terrain/19/858509/353795.terrain new file mode 100644 index 000000000..3795c7632 Binary files /dev/null and b/public/terrain/19/858509/353795.terrain differ diff --git a/public/terrain/19/858509/353796.terrain b/public/terrain/19/858509/353796.terrain new file mode 100644 index 000000000..54f532a16 Binary files /dev/null and b/public/terrain/19/858509/353796.terrain differ diff --git a/public/terrain/19/858509/353797.terrain b/public/terrain/19/858509/353797.terrain new file mode 100644 index 000000000..81564c276 Binary files /dev/null and b/public/terrain/19/858509/353797.terrain differ diff --git a/public/terrain/19/858509/353798.terrain b/public/terrain/19/858509/353798.terrain new file mode 100644 index 000000000..fc7a2a735 Binary files /dev/null and b/public/terrain/19/858509/353798.terrain differ diff --git a/public/terrain/19/858509/353799.terrain b/public/terrain/19/858509/353799.terrain new file mode 100644 index 000000000..30d3c9372 Binary files /dev/null and b/public/terrain/19/858509/353799.terrain differ diff --git a/public/terrain/19/858509/353800.terrain b/public/terrain/19/858509/353800.terrain new file mode 100644 index 000000000..3020d5a90 Binary files /dev/null and b/public/terrain/19/858509/353800.terrain differ diff --git a/public/terrain/19/858509/353801.terrain b/public/terrain/19/858509/353801.terrain new file mode 100644 index 000000000..25e35969e Binary files /dev/null and b/public/terrain/19/858509/353801.terrain differ diff --git a/public/terrain/19/858509/353802.terrain b/public/terrain/19/858509/353802.terrain new file mode 100644 index 000000000..6906198ce Binary files /dev/null and b/public/terrain/19/858509/353802.terrain differ diff --git a/public/terrain/19/858509/353803.terrain b/public/terrain/19/858509/353803.terrain new file mode 100644 index 000000000..a2511469e Binary files /dev/null and b/public/terrain/19/858509/353803.terrain differ diff --git a/public/terrain/19/858509/353804.terrain b/public/terrain/19/858509/353804.terrain new file mode 100644 index 000000000..9bf57753d Binary files /dev/null and b/public/terrain/19/858509/353804.terrain differ diff --git a/public/terrain/19/858509/353805.terrain b/public/terrain/19/858509/353805.terrain new file mode 100644 index 000000000..944781866 Binary files /dev/null and b/public/terrain/19/858509/353805.terrain differ diff --git a/public/terrain/19/858509/353806.terrain b/public/terrain/19/858509/353806.terrain new file mode 100644 index 000000000..4701c3831 Binary files /dev/null and b/public/terrain/19/858509/353806.terrain differ diff --git a/public/terrain/19/858509/353807.terrain b/public/terrain/19/858509/353807.terrain new file mode 100644 index 000000000..e52e0266d Binary files /dev/null and b/public/terrain/19/858509/353807.terrain differ diff --git a/public/terrain/19/858509/353808.terrain b/public/terrain/19/858509/353808.terrain new file mode 100644 index 000000000..4227a556d Binary files /dev/null and b/public/terrain/19/858509/353808.terrain differ diff --git a/public/terrain/19/858509/353809.terrain b/public/terrain/19/858509/353809.terrain new file mode 100644 index 000000000..3caf6a91f Binary files /dev/null and b/public/terrain/19/858509/353809.terrain differ diff --git a/public/terrain/19/858509/353810.terrain b/public/terrain/19/858509/353810.terrain new file mode 100644 index 000000000..8f2a524ae Binary files /dev/null and b/public/terrain/19/858509/353810.terrain differ diff --git a/public/terrain/19/858509/353811.terrain b/public/terrain/19/858509/353811.terrain new file mode 100644 index 000000000..b6eb45e8d Binary files /dev/null and b/public/terrain/19/858509/353811.terrain differ diff --git a/public/terrain/19/858509/353812.terrain b/public/terrain/19/858509/353812.terrain new file mode 100644 index 000000000..fc155b689 Binary files /dev/null and b/public/terrain/19/858509/353812.terrain differ diff --git a/public/terrain/19/858509/353813.terrain b/public/terrain/19/858509/353813.terrain new file mode 100644 index 000000000..7a2d2a04f Binary files /dev/null and b/public/terrain/19/858509/353813.terrain differ diff --git a/public/terrain/19/858509/353814.terrain b/public/terrain/19/858509/353814.terrain new file mode 100644 index 000000000..7aee5ed11 Binary files /dev/null and b/public/terrain/19/858509/353814.terrain differ diff --git a/public/terrain/19/858509/353815.terrain b/public/terrain/19/858509/353815.terrain new file mode 100644 index 000000000..c254d5642 Binary files /dev/null and b/public/terrain/19/858509/353815.terrain differ diff --git a/public/terrain/19/858509/353816.terrain b/public/terrain/19/858509/353816.terrain new file mode 100644 index 000000000..b8e5e1c6c Binary files /dev/null and b/public/terrain/19/858509/353816.terrain differ diff --git a/public/terrain/19/858509/353817.terrain b/public/terrain/19/858509/353817.terrain new file mode 100644 index 000000000..86945405e Binary files /dev/null and b/public/terrain/19/858509/353817.terrain differ diff --git a/public/terrain/19/858509/353818.terrain b/public/terrain/19/858509/353818.terrain new file mode 100644 index 000000000..a3a40c030 Binary files /dev/null and b/public/terrain/19/858509/353818.terrain differ diff --git a/public/terrain/19/858509/353819.terrain b/public/terrain/19/858509/353819.terrain new file mode 100644 index 000000000..ef7204aaf Binary files /dev/null and b/public/terrain/19/858509/353819.terrain differ diff --git a/public/terrain/19/858509/353820.terrain b/public/terrain/19/858509/353820.terrain new file mode 100644 index 000000000..f237b91f4 Binary files /dev/null and b/public/terrain/19/858509/353820.terrain differ diff --git a/public/terrain/19/858509/353821.terrain b/public/terrain/19/858509/353821.terrain new file mode 100644 index 000000000..83361c1c1 Binary files /dev/null and b/public/terrain/19/858509/353821.terrain differ diff --git a/public/terrain/19/858509/353822.terrain b/public/terrain/19/858509/353822.terrain new file mode 100644 index 000000000..b983fc700 Binary files /dev/null and b/public/terrain/19/858509/353822.terrain differ diff --git a/public/terrain/19/858509/353823.terrain b/public/terrain/19/858509/353823.terrain new file mode 100644 index 000000000..57dd30f63 Binary files /dev/null and b/public/terrain/19/858509/353823.terrain differ diff --git a/public/terrain/19/858509/353824.terrain b/public/terrain/19/858509/353824.terrain new file mode 100644 index 000000000..99a367c17 Binary files /dev/null and b/public/terrain/19/858509/353824.terrain differ diff --git a/public/terrain/19/858509/353825.terrain b/public/terrain/19/858509/353825.terrain new file mode 100644 index 000000000..7f9387a5e Binary files /dev/null and b/public/terrain/19/858509/353825.terrain differ diff --git a/public/terrain/19/858509/353826.terrain b/public/terrain/19/858509/353826.terrain new file mode 100644 index 000000000..64ab913d6 Binary files /dev/null and b/public/terrain/19/858509/353826.terrain differ diff --git a/public/terrain/19/858509/353827.terrain b/public/terrain/19/858509/353827.terrain new file mode 100644 index 000000000..289a9a191 Binary files /dev/null and b/public/terrain/19/858509/353827.terrain differ diff --git a/public/terrain/19/858509/353828.terrain b/public/terrain/19/858509/353828.terrain new file mode 100644 index 000000000..b7748ff8c Binary files /dev/null and b/public/terrain/19/858509/353828.terrain differ diff --git a/public/terrain/19/858509/353829.terrain b/public/terrain/19/858509/353829.terrain new file mode 100644 index 000000000..e851e948d Binary files /dev/null and b/public/terrain/19/858509/353829.terrain differ diff --git a/public/terrain/19/858509/353830.terrain b/public/terrain/19/858509/353830.terrain new file mode 100644 index 000000000..7fc68dfd3 Binary files /dev/null and b/public/terrain/19/858509/353830.terrain differ diff --git a/public/terrain/19/858509/353831.terrain b/public/terrain/19/858509/353831.terrain new file mode 100644 index 000000000..52fb55642 Binary files /dev/null and b/public/terrain/19/858509/353831.terrain differ diff --git a/public/terrain/19/858509/353832.terrain b/public/terrain/19/858509/353832.terrain new file mode 100644 index 000000000..9bfccc7b1 Binary files /dev/null and b/public/terrain/19/858509/353832.terrain differ diff --git a/public/terrain/19/858509/353833.terrain b/public/terrain/19/858509/353833.terrain new file mode 100644 index 000000000..f218c68f3 Binary files /dev/null and b/public/terrain/19/858509/353833.terrain differ diff --git a/public/terrain/19/858509/353834.terrain b/public/terrain/19/858509/353834.terrain new file mode 100644 index 000000000..697564f72 Binary files /dev/null and b/public/terrain/19/858509/353834.terrain differ diff --git a/public/terrain/19/858509/353835.terrain b/public/terrain/19/858509/353835.terrain new file mode 100644 index 000000000..6aea112a4 Binary files /dev/null and b/public/terrain/19/858509/353835.terrain differ diff --git a/public/terrain/19/858509/353836.terrain b/public/terrain/19/858509/353836.terrain new file mode 100644 index 000000000..42a81e813 Binary files /dev/null and b/public/terrain/19/858509/353836.terrain differ diff --git a/public/terrain/19/858509/353837.terrain b/public/terrain/19/858509/353837.terrain new file mode 100644 index 000000000..1d8c145b3 Binary files /dev/null and b/public/terrain/19/858509/353837.terrain differ diff --git a/public/terrain/19/858509/353838.terrain b/public/terrain/19/858509/353838.terrain new file mode 100644 index 000000000..3a4296be9 Binary files /dev/null and b/public/terrain/19/858509/353838.terrain differ diff --git a/public/terrain/19/858509/353839.terrain b/public/terrain/19/858509/353839.terrain new file mode 100644 index 000000000..84ea8e80c Binary files /dev/null and b/public/terrain/19/858509/353839.terrain differ diff --git a/public/terrain/19/858509/353840.terrain b/public/terrain/19/858509/353840.terrain new file mode 100644 index 000000000..cdd31c888 Binary files /dev/null and b/public/terrain/19/858509/353840.terrain differ diff --git a/public/terrain/19/858509/353841.terrain b/public/terrain/19/858509/353841.terrain new file mode 100644 index 000000000..da778dd00 Binary files /dev/null and b/public/terrain/19/858509/353841.terrain differ diff --git a/public/terrain/19/858509/353842.terrain b/public/terrain/19/858509/353842.terrain new file mode 100644 index 000000000..912cafa30 Binary files /dev/null and b/public/terrain/19/858509/353842.terrain differ diff --git a/public/terrain/19/858509/353843.terrain b/public/terrain/19/858509/353843.terrain new file mode 100644 index 000000000..b3a50bd4e Binary files /dev/null and b/public/terrain/19/858509/353843.terrain differ diff --git a/public/terrain/19/858509/353844.terrain b/public/terrain/19/858509/353844.terrain new file mode 100644 index 000000000..fca5c9bf6 Binary files /dev/null and b/public/terrain/19/858509/353844.terrain differ diff --git a/public/terrain/19/858509/353845.terrain b/public/terrain/19/858509/353845.terrain new file mode 100644 index 000000000..f5a0fc84d Binary files /dev/null and b/public/terrain/19/858509/353845.terrain differ diff --git a/public/terrain/19/858509/353846.terrain b/public/terrain/19/858509/353846.terrain new file mode 100644 index 000000000..6a8b721b2 Binary files /dev/null and b/public/terrain/19/858509/353846.terrain differ diff --git a/public/terrain/19/858509/353847.terrain b/public/terrain/19/858509/353847.terrain new file mode 100644 index 000000000..c933e5829 Binary files /dev/null and b/public/terrain/19/858509/353847.terrain differ diff --git a/public/terrain/19/858509/353848.terrain b/public/terrain/19/858509/353848.terrain new file mode 100644 index 000000000..2145185c9 Binary files /dev/null and b/public/terrain/19/858509/353848.terrain differ diff --git a/public/terrain/19/858509/353849.terrain b/public/terrain/19/858509/353849.terrain new file mode 100644 index 000000000..d33726298 Binary files /dev/null and b/public/terrain/19/858509/353849.terrain differ diff --git a/public/terrain/19/858509/353850.terrain b/public/terrain/19/858509/353850.terrain new file mode 100644 index 000000000..8762b103b Binary files /dev/null and b/public/terrain/19/858509/353850.terrain differ diff --git a/public/terrain/19/858509/353851.terrain b/public/terrain/19/858509/353851.terrain new file mode 100644 index 000000000..138ed7b31 Binary files /dev/null and b/public/terrain/19/858509/353851.terrain differ diff --git a/public/terrain/19/858509/353852.terrain b/public/terrain/19/858509/353852.terrain new file mode 100644 index 000000000..d0b09f2ec Binary files /dev/null and b/public/terrain/19/858509/353852.terrain differ diff --git a/public/terrain/19/858509/353853.terrain b/public/terrain/19/858509/353853.terrain new file mode 100644 index 000000000..24cfd188b Binary files /dev/null and b/public/terrain/19/858509/353853.terrain differ diff --git a/public/terrain/19/858509/353854.terrain b/public/terrain/19/858509/353854.terrain new file mode 100644 index 000000000..417d3fcf4 Binary files /dev/null and b/public/terrain/19/858509/353854.terrain differ diff --git a/public/terrain/19/858509/353855.terrain b/public/terrain/19/858509/353855.terrain new file mode 100644 index 000000000..c284f059b Binary files /dev/null and b/public/terrain/19/858509/353855.terrain differ diff --git a/public/terrain/19/858509/353856.terrain b/public/terrain/19/858509/353856.terrain new file mode 100644 index 000000000..adab5e254 Binary files /dev/null and b/public/terrain/19/858509/353856.terrain differ diff --git a/public/terrain/19/858509/353857.terrain b/public/terrain/19/858509/353857.terrain new file mode 100644 index 000000000..9051231ef Binary files /dev/null and b/public/terrain/19/858509/353857.terrain differ diff --git a/public/terrain/19/858509/353858.terrain b/public/terrain/19/858509/353858.terrain new file mode 100644 index 000000000..73e4750b6 Binary files /dev/null and b/public/terrain/19/858509/353858.terrain differ diff --git a/public/terrain/19/858509/353859.terrain b/public/terrain/19/858509/353859.terrain new file mode 100644 index 000000000..34d3449b5 Binary files /dev/null and b/public/terrain/19/858509/353859.terrain differ diff --git a/public/terrain/19/858509/353860.terrain b/public/terrain/19/858509/353860.terrain new file mode 100644 index 000000000..7087fe893 Binary files /dev/null and b/public/terrain/19/858509/353860.terrain differ diff --git a/public/terrain/19/858509/353861.terrain b/public/terrain/19/858509/353861.terrain new file mode 100644 index 000000000..71d75b892 Binary files /dev/null and b/public/terrain/19/858509/353861.terrain differ diff --git a/public/terrain/19/858509/353862.terrain b/public/terrain/19/858509/353862.terrain new file mode 100644 index 000000000..b801d5b5f Binary files /dev/null and b/public/terrain/19/858509/353862.terrain differ diff --git a/public/terrain/19/858509/353863.terrain b/public/terrain/19/858509/353863.terrain new file mode 100644 index 000000000..65c54b72c Binary files /dev/null and b/public/terrain/19/858509/353863.terrain differ diff --git a/public/terrain/19/858509/353864.terrain b/public/terrain/19/858509/353864.terrain new file mode 100644 index 000000000..8baff548f Binary files /dev/null and b/public/terrain/19/858509/353864.terrain differ diff --git a/public/terrain/19/858509/353865.terrain b/public/terrain/19/858509/353865.terrain new file mode 100644 index 000000000..11dd60dc7 Binary files /dev/null and b/public/terrain/19/858509/353865.terrain differ diff --git a/public/terrain/19/858509/353866.terrain b/public/terrain/19/858509/353866.terrain new file mode 100644 index 000000000..879d396a0 Binary files /dev/null and b/public/terrain/19/858509/353866.terrain differ diff --git a/public/terrain/19/858509/353867.terrain b/public/terrain/19/858509/353867.terrain new file mode 100644 index 000000000..2753cbf9d Binary files /dev/null and b/public/terrain/19/858509/353867.terrain differ diff --git a/public/terrain/19/858509/353868.terrain b/public/terrain/19/858509/353868.terrain new file mode 100644 index 000000000..b7d3569e1 Binary files /dev/null and b/public/terrain/19/858509/353868.terrain differ diff --git a/public/terrain/19/858509/353869.terrain b/public/terrain/19/858509/353869.terrain new file mode 100644 index 000000000..45abde982 Binary files /dev/null and b/public/terrain/19/858509/353869.terrain differ diff --git a/public/terrain/19/858509/353870.terrain b/public/terrain/19/858509/353870.terrain new file mode 100644 index 000000000..33a3320f5 Binary files /dev/null and b/public/terrain/19/858509/353870.terrain differ diff --git a/public/terrain/19/858509/353871.terrain b/public/terrain/19/858509/353871.terrain new file mode 100644 index 000000000..6857e78f9 Binary files /dev/null and b/public/terrain/19/858509/353871.terrain differ diff --git a/public/terrain/19/858509/353872.terrain b/public/terrain/19/858509/353872.terrain new file mode 100644 index 000000000..c0c48f8eb Binary files /dev/null and b/public/terrain/19/858509/353872.terrain differ diff --git a/public/terrain/19/858509/353873.terrain b/public/terrain/19/858509/353873.terrain new file mode 100644 index 000000000..1a9f46a52 Binary files /dev/null and b/public/terrain/19/858509/353873.terrain differ diff --git a/public/terrain/19/858509/353874.terrain b/public/terrain/19/858509/353874.terrain new file mode 100644 index 000000000..e034aeaf7 Binary files /dev/null and b/public/terrain/19/858509/353874.terrain differ diff --git a/public/terrain/19/858509/353875.terrain b/public/terrain/19/858509/353875.terrain new file mode 100644 index 000000000..8701d959c Binary files /dev/null and b/public/terrain/19/858509/353875.terrain differ diff --git a/public/terrain/19/858509/353876.terrain b/public/terrain/19/858509/353876.terrain new file mode 100644 index 000000000..f6be9c936 Binary files /dev/null and b/public/terrain/19/858509/353876.terrain differ diff --git a/public/terrain/19/858509/353877.terrain b/public/terrain/19/858509/353877.terrain new file mode 100644 index 000000000..34d11c100 Binary files /dev/null and b/public/terrain/19/858509/353877.terrain differ diff --git a/public/terrain/19/858509/353878.terrain b/public/terrain/19/858509/353878.terrain new file mode 100644 index 000000000..45a99dbb7 Binary files /dev/null and b/public/terrain/19/858509/353878.terrain differ diff --git a/public/terrain/19/858509/353879.terrain b/public/terrain/19/858509/353879.terrain new file mode 100644 index 000000000..0ae9127e8 Binary files /dev/null and b/public/terrain/19/858509/353879.terrain differ diff --git a/public/terrain/19/858509/353880.terrain b/public/terrain/19/858509/353880.terrain new file mode 100644 index 000000000..b20cdb27e Binary files /dev/null and b/public/terrain/19/858509/353880.terrain differ diff --git a/public/terrain/19/858509/353881.terrain b/public/terrain/19/858509/353881.terrain new file mode 100644 index 000000000..f4baa2d49 Binary files /dev/null and b/public/terrain/19/858509/353881.terrain differ diff --git a/public/terrain/19/858509/353882.terrain b/public/terrain/19/858509/353882.terrain new file mode 100644 index 000000000..a715afc8c Binary files /dev/null and b/public/terrain/19/858509/353882.terrain differ diff --git a/public/terrain/19/858509/353883.terrain b/public/terrain/19/858509/353883.terrain new file mode 100644 index 000000000..1d32b3fef Binary files /dev/null and b/public/terrain/19/858509/353883.terrain differ diff --git a/public/terrain/19/858509/353884.terrain b/public/terrain/19/858509/353884.terrain new file mode 100644 index 000000000..42166f99b Binary files /dev/null and b/public/terrain/19/858509/353884.terrain differ diff --git a/public/terrain/19/858509/353885.terrain b/public/terrain/19/858509/353885.terrain new file mode 100644 index 000000000..77831ad89 Binary files /dev/null and b/public/terrain/19/858509/353885.terrain differ diff --git a/public/terrain/19/858509/353886.terrain b/public/terrain/19/858509/353886.terrain new file mode 100644 index 000000000..91585445d Binary files /dev/null and b/public/terrain/19/858509/353886.terrain differ diff --git a/public/terrain/19/858509/353887.terrain b/public/terrain/19/858509/353887.terrain new file mode 100644 index 000000000..c1222edb3 Binary files /dev/null and b/public/terrain/19/858509/353887.terrain differ diff --git a/public/terrain/19/858509/353888.terrain b/public/terrain/19/858509/353888.terrain new file mode 100644 index 000000000..c1633ad08 Binary files /dev/null and b/public/terrain/19/858509/353888.terrain differ diff --git a/public/terrain/19/858509/353889.terrain b/public/terrain/19/858509/353889.terrain new file mode 100644 index 000000000..1ef5e4082 Binary files /dev/null and b/public/terrain/19/858509/353889.terrain differ diff --git a/public/terrain/19/858509/353890.terrain b/public/terrain/19/858509/353890.terrain new file mode 100644 index 000000000..1768a4ea6 Binary files /dev/null and b/public/terrain/19/858509/353890.terrain differ diff --git a/public/terrain/19/858509/353891.terrain b/public/terrain/19/858509/353891.terrain new file mode 100644 index 000000000..cac304e8e Binary files /dev/null and b/public/terrain/19/858509/353891.terrain differ diff --git a/public/terrain/19/858509/353892.terrain b/public/terrain/19/858509/353892.terrain new file mode 100644 index 000000000..9b82f1b05 Binary files /dev/null and b/public/terrain/19/858509/353892.terrain differ diff --git a/public/terrain/19/858509/353893.terrain b/public/terrain/19/858509/353893.terrain new file mode 100644 index 000000000..d802229b9 Binary files /dev/null and b/public/terrain/19/858509/353893.terrain differ diff --git a/public/terrain/19/858509/353894.terrain b/public/terrain/19/858509/353894.terrain new file mode 100644 index 000000000..b56e44fb6 Binary files /dev/null and b/public/terrain/19/858509/353894.terrain differ diff --git a/public/terrain/19/858509/353895.terrain b/public/terrain/19/858509/353895.terrain new file mode 100644 index 000000000..3d4465438 Binary files /dev/null and b/public/terrain/19/858509/353895.terrain differ diff --git a/public/terrain/19/858509/353896.terrain b/public/terrain/19/858509/353896.terrain new file mode 100644 index 000000000..4895c1a62 Binary files /dev/null and b/public/terrain/19/858509/353896.terrain differ diff --git a/public/terrain/19/858509/353897.terrain b/public/terrain/19/858509/353897.terrain new file mode 100644 index 000000000..1c4535203 Binary files /dev/null and b/public/terrain/19/858509/353897.terrain differ diff --git a/public/terrain/19/858509/353898.terrain b/public/terrain/19/858509/353898.terrain new file mode 100644 index 000000000..a428b062d Binary files /dev/null and b/public/terrain/19/858509/353898.terrain differ diff --git a/public/terrain/19/858509/353899.terrain b/public/terrain/19/858509/353899.terrain new file mode 100644 index 000000000..6e62e8120 Binary files /dev/null and b/public/terrain/19/858509/353899.terrain differ diff --git a/public/terrain/19/858509/353900.terrain b/public/terrain/19/858509/353900.terrain new file mode 100644 index 000000000..0639039fe Binary files /dev/null and b/public/terrain/19/858509/353900.terrain differ diff --git a/public/terrain/19/858509/353901.terrain b/public/terrain/19/858509/353901.terrain new file mode 100644 index 000000000..f2d556db5 Binary files /dev/null and b/public/terrain/19/858509/353901.terrain differ diff --git a/public/terrain/19/858509/353902.terrain b/public/terrain/19/858509/353902.terrain new file mode 100644 index 000000000..c68e99466 Binary files /dev/null and b/public/terrain/19/858509/353902.terrain differ diff --git a/public/terrain/19/858509/353903.terrain b/public/terrain/19/858509/353903.terrain new file mode 100644 index 000000000..76839c59f Binary files /dev/null and b/public/terrain/19/858509/353903.terrain differ diff --git a/public/terrain/19/858509/353904.terrain b/public/terrain/19/858509/353904.terrain new file mode 100644 index 000000000..a7f23463f Binary files /dev/null and b/public/terrain/19/858509/353904.terrain differ diff --git a/public/terrain/19/858509/353905.terrain b/public/terrain/19/858509/353905.terrain new file mode 100644 index 000000000..9b1ce922c Binary files /dev/null and b/public/terrain/19/858509/353905.terrain differ diff --git a/public/terrain/19/858509/353906.terrain b/public/terrain/19/858509/353906.terrain new file mode 100644 index 000000000..5de0d99d0 Binary files /dev/null and b/public/terrain/19/858509/353906.terrain differ diff --git a/public/terrain/19/858509/353907.terrain b/public/terrain/19/858509/353907.terrain new file mode 100644 index 000000000..76f13e0fc Binary files /dev/null and b/public/terrain/19/858509/353907.terrain differ diff --git a/public/terrain/19/858509/353908.terrain b/public/terrain/19/858509/353908.terrain new file mode 100644 index 000000000..bd80d97a9 Binary files /dev/null and b/public/terrain/19/858509/353908.terrain differ diff --git a/public/terrain/19/858509/353909.terrain b/public/terrain/19/858509/353909.terrain new file mode 100644 index 000000000..01451abaa Binary files /dev/null and b/public/terrain/19/858509/353909.terrain differ diff --git a/public/terrain/19/858509/353910.terrain b/public/terrain/19/858509/353910.terrain new file mode 100644 index 000000000..019960b07 Binary files /dev/null and b/public/terrain/19/858509/353910.terrain differ diff --git a/public/terrain/19/858509/353911.terrain b/public/terrain/19/858509/353911.terrain new file mode 100644 index 000000000..18aab632e Binary files /dev/null and b/public/terrain/19/858509/353911.terrain differ diff --git a/public/terrain/19/858509/353912.terrain b/public/terrain/19/858509/353912.terrain new file mode 100644 index 000000000..70a174b45 Binary files /dev/null and b/public/terrain/19/858509/353912.terrain differ diff --git a/public/terrain/19/858509/353913.terrain b/public/terrain/19/858509/353913.terrain new file mode 100644 index 000000000..cffef5a4c Binary files /dev/null and b/public/terrain/19/858509/353913.terrain differ diff --git a/public/terrain/19/858509/353914.terrain b/public/terrain/19/858509/353914.terrain new file mode 100644 index 000000000..070109b23 Binary files /dev/null and b/public/terrain/19/858509/353914.terrain differ diff --git a/public/terrain/19/858509/353915.terrain b/public/terrain/19/858509/353915.terrain new file mode 100644 index 000000000..90ed94fe1 Binary files /dev/null and b/public/terrain/19/858509/353915.terrain differ diff --git a/public/terrain/19/858509/353916.terrain b/public/terrain/19/858509/353916.terrain new file mode 100644 index 000000000..cc2b96b3c Binary files /dev/null and b/public/terrain/19/858509/353916.terrain differ diff --git a/public/terrain/19/858509/353917.terrain b/public/terrain/19/858509/353917.terrain new file mode 100644 index 000000000..4ce1a05c6 Binary files /dev/null and b/public/terrain/19/858509/353917.terrain differ diff --git a/public/terrain/19/858509/353918.terrain b/public/terrain/19/858509/353918.terrain new file mode 100644 index 000000000..26909c73e Binary files /dev/null and b/public/terrain/19/858509/353918.terrain differ diff --git a/public/terrain/19/858509/353919.terrain b/public/terrain/19/858509/353919.terrain new file mode 100644 index 000000000..f83c112b6 Binary files /dev/null and b/public/terrain/19/858509/353919.terrain differ diff --git a/public/terrain/19/858509/353920.terrain b/public/terrain/19/858509/353920.terrain new file mode 100644 index 000000000..f135b1242 Binary files /dev/null and b/public/terrain/19/858509/353920.terrain differ diff --git a/public/terrain/19/858509/353921.terrain b/public/terrain/19/858509/353921.terrain new file mode 100644 index 000000000..7b213a871 Binary files /dev/null and b/public/terrain/19/858509/353921.terrain differ diff --git a/public/terrain/19/858509/353922.terrain b/public/terrain/19/858509/353922.terrain new file mode 100644 index 000000000..1d282f6dc Binary files /dev/null and b/public/terrain/19/858509/353922.terrain differ diff --git a/public/terrain/19/858509/353923.terrain b/public/terrain/19/858509/353923.terrain new file mode 100644 index 000000000..433f39e5a Binary files /dev/null and b/public/terrain/19/858509/353923.terrain differ diff --git a/public/terrain/19/858509/353924.terrain b/public/terrain/19/858509/353924.terrain new file mode 100644 index 000000000..2a8c664fc Binary files /dev/null and b/public/terrain/19/858509/353924.terrain differ diff --git a/public/terrain/19/858509/353925.terrain b/public/terrain/19/858509/353925.terrain new file mode 100644 index 000000000..927ee1357 Binary files /dev/null and b/public/terrain/19/858509/353925.terrain differ diff --git a/public/terrain/19/858509/353926.terrain b/public/terrain/19/858509/353926.terrain new file mode 100644 index 000000000..b5468d826 Binary files /dev/null and b/public/terrain/19/858509/353926.terrain differ diff --git a/public/terrain/19/858509/353927.terrain b/public/terrain/19/858509/353927.terrain new file mode 100644 index 000000000..f225fb40f Binary files /dev/null and b/public/terrain/19/858509/353927.terrain differ diff --git a/public/terrain/19/858509/353928.terrain b/public/terrain/19/858509/353928.terrain new file mode 100644 index 000000000..6f4c875ae Binary files /dev/null and b/public/terrain/19/858509/353928.terrain differ diff --git a/public/terrain/19/858509/353929.terrain b/public/terrain/19/858509/353929.terrain new file mode 100644 index 000000000..c2367bc53 Binary files /dev/null and b/public/terrain/19/858509/353929.terrain differ diff --git a/public/terrain/19/858509/353930.terrain b/public/terrain/19/858509/353930.terrain new file mode 100644 index 000000000..97f37e91d Binary files /dev/null and b/public/terrain/19/858509/353930.terrain differ diff --git a/public/terrain/19/858509/353931.terrain b/public/terrain/19/858509/353931.terrain new file mode 100644 index 000000000..b8f5e337c Binary files /dev/null and b/public/terrain/19/858509/353931.terrain differ diff --git a/public/terrain/19/858509/353932.terrain b/public/terrain/19/858509/353932.terrain new file mode 100644 index 000000000..0449ba64c Binary files /dev/null and b/public/terrain/19/858509/353932.terrain differ diff --git a/public/terrain/19/858509/353933.terrain b/public/terrain/19/858509/353933.terrain new file mode 100644 index 000000000..19a2fe66d Binary files /dev/null and b/public/terrain/19/858509/353933.terrain differ diff --git a/public/terrain/19/858509/353934.terrain b/public/terrain/19/858509/353934.terrain new file mode 100644 index 000000000..550d1a247 Binary files /dev/null and b/public/terrain/19/858509/353934.terrain differ diff --git a/public/terrain/19/858509/353935.terrain b/public/terrain/19/858509/353935.terrain new file mode 100644 index 000000000..90062a08e Binary files /dev/null and b/public/terrain/19/858509/353935.terrain differ diff --git a/public/terrain/19/858509/353936.terrain b/public/terrain/19/858509/353936.terrain new file mode 100644 index 000000000..1f2bb8a2f Binary files /dev/null and b/public/terrain/19/858509/353936.terrain differ diff --git a/public/terrain/19/858509/353937.terrain b/public/terrain/19/858509/353937.terrain new file mode 100644 index 000000000..5ea8b420e Binary files /dev/null and b/public/terrain/19/858509/353937.terrain differ diff --git a/public/terrain/19/858509/353938.terrain b/public/terrain/19/858509/353938.terrain new file mode 100644 index 000000000..39fef4346 Binary files /dev/null and b/public/terrain/19/858509/353938.terrain differ diff --git a/public/terrain/19/858509/353939.terrain b/public/terrain/19/858509/353939.terrain new file mode 100644 index 000000000..7f2775297 Binary files /dev/null and b/public/terrain/19/858509/353939.terrain differ diff --git a/public/terrain/19/858509/353940.terrain b/public/terrain/19/858509/353940.terrain new file mode 100644 index 000000000..782a2f36d Binary files /dev/null and b/public/terrain/19/858509/353940.terrain differ diff --git a/public/terrain/19/858509/353941.terrain b/public/terrain/19/858509/353941.terrain new file mode 100644 index 000000000..2ca1c207c Binary files /dev/null and b/public/terrain/19/858509/353941.terrain differ diff --git a/public/terrain/19/858509/353942.terrain b/public/terrain/19/858509/353942.terrain new file mode 100644 index 000000000..d6b190b36 Binary files /dev/null and b/public/terrain/19/858509/353942.terrain differ diff --git a/public/terrain/19/858509/353943.terrain b/public/terrain/19/858509/353943.terrain new file mode 100644 index 000000000..a9c19b16b Binary files /dev/null and b/public/terrain/19/858509/353943.terrain differ diff --git a/public/terrain/19/858509/353944.terrain b/public/terrain/19/858509/353944.terrain new file mode 100644 index 000000000..922cd633f Binary files /dev/null and b/public/terrain/19/858509/353944.terrain differ diff --git a/public/terrain/19/858509/353945.terrain b/public/terrain/19/858509/353945.terrain new file mode 100644 index 000000000..10cf5945d Binary files /dev/null and b/public/terrain/19/858509/353945.terrain differ diff --git a/public/terrain/19/858509/353946.terrain b/public/terrain/19/858509/353946.terrain new file mode 100644 index 000000000..200a9c731 Binary files /dev/null and b/public/terrain/19/858509/353946.terrain differ diff --git a/public/terrain/19/858509/353947.terrain b/public/terrain/19/858509/353947.terrain new file mode 100644 index 000000000..5da808d9a Binary files /dev/null and b/public/terrain/19/858509/353947.terrain differ diff --git a/public/terrain/19/858509/353948.terrain b/public/terrain/19/858509/353948.terrain new file mode 100644 index 000000000..117bf2d4d Binary files /dev/null and b/public/terrain/19/858509/353948.terrain differ diff --git a/public/terrain/19/858509/353949.terrain b/public/terrain/19/858509/353949.terrain new file mode 100644 index 000000000..72cc46346 Binary files /dev/null and b/public/terrain/19/858509/353949.terrain differ diff --git a/public/terrain/19/858509/353950.terrain b/public/terrain/19/858509/353950.terrain new file mode 100644 index 000000000..ca6c793b0 Binary files /dev/null and b/public/terrain/19/858509/353950.terrain differ diff --git a/public/terrain/19/858509/353951.terrain b/public/terrain/19/858509/353951.terrain new file mode 100644 index 000000000..5c3e5bc43 Binary files /dev/null and b/public/terrain/19/858509/353951.terrain differ diff --git a/public/terrain/19/858509/353952.terrain b/public/terrain/19/858509/353952.terrain new file mode 100644 index 000000000..7e9213f30 Binary files /dev/null and b/public/terrain/19/858509/353952.terrain differ diff --git a/public/terrain/19/858509/353953.terrain b/public/terrain/19/858509/353953.terrain new file mode 100644 index 000000000..d255b7fcd Binary files /dev/null and b/public/terrain/19/858509/353953.terrain differ diff --git a/public/terrain/19/858509/353954.terrain b/public/terrain/19/858509/353954.terrain new file mode 100644 index 000000000..dd92102dd Binary files /dev/null and b/public/terrain/19/858509/353954.terrain differ diff --git a/public/terrain/19/858509/353955.terrain b/public/terrain/19/858509/353955.terrain new file mode 100644 index 000000000..b635f047f Binary files /dev/null and b/public/terrain/19/858509/353955.terrain differ diff --git a/public/terrain/19/858509/353956.terrain b/public/terrain/19/858509/353956.terrain new file mode 100644 index 000000000..2f5848a5f Binary files /dev/null and b/public/terrain/19/858509/353956.terrain differ diff --git a/public/terrain/19/858509/353957.terrain b/public/terrain/19/858509/353957.terrain new file mode 100644 index 000000000..7aae47d4e Binary files /dev/null and b/public/terrain/19/858509/353957.terrain differ diff --git a/public/terrain/19/858509/353958.terrain b/public/terrain/19/858509/353958.terrain new file mode 100644 index 000000000..5b46f40ac Binary files /dev/null and b/public/terrain/19/858509/353958.terrain differ diff --git a/public/terrain/19/858509/353959.terrain b/public/terrain/19/858509/353959.terrain new file mode 100644 index 000000000..0ff9c1b5f Binary files /dev/null and b/public/terrain/19/858509/353959.terrain differ diff --git a/public/terrain/19/858509/353960.terrain b/public/terrain/19/858509/353960.terrain new file mode 100644 index 000000000..8ef9c8eb5 Binary files /dev/null and b/public/terrain/19/858509/353960.terrain differ diff --git a/public/terrain/19/858509/353961.terrain b/public/terrain/19/858509/353961.terrain new file mode 100644 index 000000000..cffd3c219 Binary files /dev/null and b/public/terrain/19/858509/353961.terrain differ diff --git a/public/terrain/19/858509/353962.terrain b/public/terrain/19/858509/353962.terrain new file mode 100644 index 000000000..16a3bb560 Binary files /dev/null and b/public/terrain/19/858509/353962.terrain differ diff --git a/public/terrain/19/858509/353963.terrain b/public/terrain/19/858509/353963.terrain new file mode 100644 index 000000000..b9226d7ca Binary files /dev/null and b/public/terrain/19/858509/353963.terrain differ diff --git a/public/terrain/19/858509/353964.terrain b/public/terrain/19/858509/353964.terrain new file mode 100644 index 000000000..e19e779fb Binary files /dev/null and b/public/terrain/19/858509/353964.terrain differ diff --git a/public/terrain/19/858509/353965.terrain b/public/terrain/19/858509/353965.terrain new file mode 100644 index 000000000..3d25da5c6 Binary files /dev/null and b/public/terrain/19/858509/353965.terrain differ diff --git a/public/terrain/19/858509/353966.terrain b/public/terrain/19/858509/353966.terrain new file mode 100644 index 000000000..f0bb8409a Binary files /dev/null and b/public/terrain/19/858509/353966.terrain differ diff --git a/public/terrain/19/858509/353967.terrain b/public/terrain/19/858509/353967.terrain new file mode 100644 index 000000000..482a9cf60 Binary files /dev/null and b/public/terrain/19/858509/353967.terrain differ diff --git a/public/terrain/19/858509/353968.terrain b/public/terrain/19/858509/353968.terrain new file mode 100644 index 000000000..01902def0 Binary files /dev/null and b/public/terrain/19/858509/353968.terrain differ diff --git a/public/terrain/19/858509/353969.terrain b/public/terrain/19/858509/353969.terrain new file mode 100644 index 000000000..64fc91a6b Binary files /dev/null and b/public/terrain/19/858509/353969.terrain differ diff --git a/public/terrain/19/858509/353970.terrain b/public/terrain/19/858509/353970.terrain new file mode 100644 index 000000000..4bd45261a Binary files /dev/null and b/public/terrain/19/858509/353970.terrain differ diff --git a/public/terrain/19/858509/353971.terrain b/public/terrain/19/858509/353971.terrain new file mode 100644 index 000000000..d2630bbcd Binary files /dev/null and b/public/terrain/19/858509/353971.terrain differ diff --git a/public/terrain/19/858509/353972.terrain b/public/terrain/19/858509/353972.terrain new file mode 100644 index 000000000..764603e79 Binary files /dev/null and b/public/terrain/19/858509/353972.terrain differ diff --git a/public/terrain/19/858509/353973.terrain b/public/terrain/19/858509/353973.terrain new file mode 100644 index 000000000..8aff5492a Binary files /dev/null and b/public/terrain/19/858509/353973.terrain differ diff --git a/public/terrain/19/858509/353974.terrain b/public/terrain/19/858509/353974.terrain new file mode 100644 index 000000000..60aea26dc Binary files /dev/null and b/public/terrain/19/858509/353974.terrain differ diff --git a/public/terrain/19/858509/353975.terrain b/public/terrain/19/858509/353975.terrain new file mode 100644 index 000000000..edd596ef7 Binary files /dev/null and b/public/terrain/19/858509/353975.terrain differ diff --git a/public/terrain/19/858509/353976.terrain b/public/terrain/19/858509/353976.terrain new file mode 100644 index 000000000..8565f6975 Binary files /dev/null and b/public/terrain/19/858509/353976.terrain differ diff --git a/public/terrain/19/858509/353977.terrain b/public/terrain/19/858509/353977.terrain new file mode 100644 index 000000000..5aae9d94c Binary files /dev/null and b/public/terrain/19/858509/353977.terrain differ diff --git a/public/terrain/19/858509/353978.terrain b/public/terrain/19/858509/353978.terrain new file mode 100644 index 000000000..5f714f786 Binary files /dev/null and b/public/terrain/19/858509/353978.terrain differ diff --git a/public/terrain/19/858509/353979.terrain b/public/terrain/19/858509/353979.terrain new file mode 100644 index 000000000..4e1aad6b1 Binary files /dev/null and b/public/terrain/19/858509/353979.terrain differ diff --git a/public/terrain/19/858509/353980.terrain b/public/terrain/19/858509/353980.terrain new file mode 100644 index 000000000..6db6698f5 Binary files /dev/null and b/public/terrain/19/858509/353980.terrain differ diff --git a/public/terrain/19/858509/353981.terrain b/public/terrain/19/858509/353981.terrain new file mode 100644 index 000000000..c194e474c Binary files /dev/null and b/public/terrain/19/858509/353981.terrain differ diff --git a/public/terrain/19/858509/353982.terrain b/public/terrain/19/858509/353982.terrain new file mode 100644 index 000000000..6678dddc8 Binary files /dev/null and b/public/terrain/19/858509/353982.terrain differ diff --git a/public/terrain/19/858509/353983.terrain b/public/terrain/19/858509/353983.terrain new file mode 100644 index 000000000..f78d7520b Binary files /dev/null and b/public/terrain/19/858509/353983.terrain differ diff --git a/public/terrain/19/858509/353984.terrain b/public/terrain/19/858509/353984.terrain new file mode 100644 index 000000000..97a698abf Binary files /dev/null and b/public/terrain/19/858509/353984.terrain differ diff --git a/public/terrain/19/858509/353985.terrain b/public/terrain/19/858509/353985.terrain new file mode 100644 index 000000000..91aa32437 Binary files /dev/null and b/public/terrain/19/858509/353985.terrain differ diff --git a/public/terrain/19/858509/353986.terrain b/public/terrain/19/858509/353986.terrain new file mode 100644 index 000000000..4b19c41ff Binary files /dev/null and b/public/terrain/19/858509/353986.terrain differ diff --git a/public/terrain/19/858509/353987.terrain b/public/terrain/19/858509/353987.terrain new file mode 100644 index 000000000..2d9f3769d Binary files /dev/null and b/public/terrain/19/858509/353987.terrain differ diff --git a/public/terrain/19/858509/353988.terrain b/public/terrain/19/858509/353988.terrain new file mode 100644 index 000000000..9bbca9d09 Binary files /dev/null and b/public/terrain/19/858509/353988.terrain differ diff --git a/public/terrain/19/858509/353989.terrain b/public/terrain/19/858509/353989.terrain new file mode 100644 index 000000000..bfd3b1e40 Binary files /dev/null and b/public/terrain/19/858509/353989.terrain differ diff --git a/public/terrain/19/858509/353990.terrain b/public/terrain/19/858509/353990.terrain new file mode 100644 index 000000000..be91ae3e9 Binary files /dev/null and b/public/terrain/19/858509/353990.terrain differ diff --git a/public/terrain/19/858509/353991.terrain b/public/terrain/19/858509/353991.terrain new file mode 100644 index 000000000..2cd7eb0e7 Binary files /dev/null and b/public/terrain/19/858509/353991.terrain differ diff --git a/public/terrain/19/858509/353992.terrain b/public/terrain/19/858509/353992.terrain new file mode 100644 index 000000000..21de26915 Binary files /dev/null and b/public/terrain/19/858509/353992.terrain differ diff --git a/public/terrain/19/858509/353993.terrain b/public/terrain/19/858509/353993.terrain new file mode 100644 index 000000000..3b03c00a4 Binary files /dev/null and b/public/terrain/19/858509/353993.terrain differ diff --git a/public/terrain/19/858509/353994.terrain b/public/terrain/19/858509/353994.terrain new file mode 100644 index 000000000..551bcc941 Binary files /dev/null and b/public/terrain/19/858509/353994.terrain differ diff --git a/public/terrain/19/858509/353995.terrain b/public/terrain/19/858509/353995.terrain new file mode 100644 index 000000000..c25af060c Binary files /dev/null and b/public/terrain/19/858509/353995.terrain differ diff --git a/public/terrain/19/858509/353996.terrain b/public/terrain/19/858509/353996.terrain new file mode 100644 index 000000000..b335e1871 Binary files /dev/null and b/public/terrain/19/858509/353996.terrain differ diff --git a/public/terrain/19/858509/353997.terrain b/public/terrain/19/858509/353997.terrain new file mode 100644 index 000000000..512cce7b6 Binary files /dev/null and b/public/terrain/19/858509/353997.terrain differ diff --git a/public/terrain/19/858509/353998.terrain b/public/terrain/19/858509/353998.terrain new file mode 100644 index 000000000..ccc3f8a5d Binary files /dev/null and b/public/terrain/19/858509/353998.terrain differ diff --git a/public/terrain/19/858509/353999.terrain b/public/terrain/19/858509/353999.terrain new file mode 100644 index 000000000..88d530e02 Binary files /dev/null and b/public/terrain/19/858509/353999.terrain differ diff --git a/public/terrain/19/858509/354000.terrain b/public/terrain/19/858509/354000.terrain new file mode 100644 index 000000000..01f0e18b6 Binary files /dev/null and b/public/terrain/19/858509/354000.terrain differ diff --git a/public/terrain/19/858509/354001.terrain b/public/terrain/19/858509/354001.terrain new file mode 100644 index 000000000..9f2717998 Binary files /dev/null and b/public/terrain/19/858509/354001.terrain differ diff --git a/public/terrain/19/858509/354002.terrain b/public/terrain/19/858509/354002.terrain new file mode 100644 index 000000000..5b60642e3 Binary files /dev/null and b/public/terrain/19/858509/354002.terrain differ diff --git a/public/terrain/19/858509/354003.terrain b/public/terrain/19/858509/354003.terrain new file mode 100644 index 000000000..b90870d52 Binary files /dev/null and b/public/terrain/19/858509/354003.terrain differ diff --git a/public/terrain/19/858509/354004.terrain b/public/terrain/19/858509/354004.terrain new file mode 100644 index 000000000..6337bea4f Binary files /dev/null and b/public/terrain/19/858509/354004.terrain differ diff --git a/public/terrain/19/858509/354005.terrain b/public/terrain/19/858509/354005.terrain new file mode 100644 index 000000000..611ea9208 Binary files /dev/null and b/public/terrain/19/858509/354005.terrain differ diff --git a/public/terrain/19/858509/354006.terrain b/public/terrain/19/858509/354006.terrain new file mode 100644 index 000000000..69ab33954 Binary files /dev/null and b/public/terrain/19/858509/354006.terrain differ diff --git a/public/terrain/19/858509/354007.terrain b/public/terrain/19/858509/354007.terrain new file mode 100644 index 000000000..268b81488 Binary files /dev/null and b/public/terrain/19/858509/354007.terrain differ diff --git a/public/terrain/19/858509/354008.terrain b/public/terrain/19/858509/354008.terrain new file mode 100644 index 000000000..025a0d0d2 Binary files /dev/null and b/public/terrain/19/858509/354008.terrain differ diff --git a/public/terrain/19/858509/354009.terrain b/public/terrain/19/858509/354009.terrain new file mode 100644 index 000000000..e83576299 Binary files /dev/null and b/public/terrain/19/858509/354009.terrain differ diff --git a/public/terrain/19/858509/354010.terrain b/public/terrain/19/858509/354010.terrain new file mode 100644 index 000000000..3ef624e7f Binary files /dev/null and b/public/terrain/19/858509/354010.terrain differ diff --git a/public/terrain/19/858509/354011.terrain b/public/terrain/19/858509/354011.terrain new file mode 100644 index 000000000..116631076 Binary files /dev/null and b/public/terrain/19/858509/354011.terrain differ diff --git a/public/terrain/19/858509/354012.terrain b/public/terrain/19/858509/354012.terrain new file mode 100644 index 000000000..ed256f48e Binary files /dev/null and b/public/terrain/19/858509/354012.terrain differ diff --git a/public/terrain/19/858509/354013.terrain b/public/terrain/19/858509/354013.terrain new file mode 100644 index 000000000..f2ab37b74 Binary files /dev/null and b/public/terrain/19/858509/354013.terrain differ diff --git a/public/terrain/19/858509/354014.terrain b/public/terrain/19/858509/354014.terrain new file mode 100644 index 000000000..587136e28 Binary files /dev/null and b/public/terrain/19/858509/354014.terrain differ diff --git a/public/terrain/19/858509/354015.terrain b/public/terrain/19/858509/354015.terrain new file mode 100644 index 000000000..a196796c2 Binary files /dev/null and b/public/terrain/19/858509/354015.terrain differ diff --git a/public/terrain/19/858509/354016.terrain b/public/terrain/19/858509/354016.terrain new file mode 100644 index 000000000..125188b56 Binary files /dev/null and b/public/terrain/19/858509/354016.terrain differ diff --git a/public/terrain/19/858509/354017.terrain b/public/terrain/19/858509/354017.terrain new file mode 100644 index 000000000..ab8412f40 Binary files /dev/null and b/public/terrain/19/858509/354017.terrain differ diff --git a/public/terrain/19/858509/354018.terrain b/public/terrain/19/858509/354018.terrain new file mode 100644 index 000000000..c51a53e72 Binary files /dev/null and b/public/terrain/19/858509/354018.terrain differ diff --git a/public/terrain/19/858509/354019.terrain b/public/terrain/19/858509/354019.terrain new file mode 100644 index 000000000..0a0cf2603 Binary files /dev/null and b/public/terrain/19/858509/354019.terrain differ diff --git a/public/terrain/19/858509/354020.terrain b/public/terrain/19/858509/354020.terrain new file mode 100644 index 000000000..14d6e59a3 Binary files /dev/null and b/public/terrain/19/858509/354020.terrain differ diff --git a/public/terrain/19/858509/354021.terrain b/public/terrain/19/858509/354021.terrain new file mode 100644 index 000000000..4f066ed2f Binary files /dev/null and b/public/terrain/19/858509/354021.terrain differ diff --git a/public/terrain/19/858509/354022.terrain b/public/terrain/19/858509/354022.terrain new file mode 100644 index 000000000..30a684b78 Binary files /dev/null and b/public/terrain/19/858509/354022.terrain differ diff --git a/public/terrain/19/858509/354023.terrain b/public/terrain/19/858509/354023.terrain new file mode 100644 index 000000000..1377889bf Binary files /dev/null and b/public/terrain/19/858509/354023.terrain differ diff --git a/public/terrain/19/858509/354024.terrain b/public/terrain/19/858509/354024.terrain new file mode 100644 index 000000000..241ef198f Binary files /dev/null and b/public/terrain/19/858509/354024.terrain differ diff --git a/public/terrain/19/858509/354025.terrain b/public/terrain/19/858509/354025.terrain new file mode 100644 index 000000000..4043d0cf9 Binary files /dev/null and b/public/terrain/19/858509/354025.terrain differ diff --git a/public/terrain/19/858509/354026.terrain b/public/terrain/19/858509/354026.terrain new file mode 100644 index 000000000..5c1f6955b Binary files /dev/null and b/public/terrain/19/858509/354026.terrain differ diff --git a/public/terrain/19/858509/354027.terrain b/public/terrain/19/858509/354027.terrain new file mode 100644 index 000000000..4cb747ae1 Binary files /dev/null and b/public/terrain/19/858509/354027.terrain differ diff --git a/public/terrain/19/858509/354028.terrain b/public/terrain/19/858509/354028.terrain new file mode 100644 index 000000000..1a61f5378 Binary files /dev/null and b/public/terrain/19/858509/354028.terrain differ diff --git a/public/terrain/19/858509/354029.terrain b/public/terrain/19/858509/354029.terrain new file mode 100644 index 000000000..314653478 Binary files /dev/null and b/public/terrain/19/858509/354029.terrain differ diff --git a/public/terrain/19/858509/354030.terrain b/public/terrain/19/858509/354030.terrain new file mode 100644 index 000000000..3e87c6c7d Binary files /dev/null and b/public/terrain/19/858509/354030.terrain differ diff --git a/public/terrain/19/858509/354031.terrain b/public/terrain/19/858509/354031.terrain new file mode 100644 index 000000000..a53b31eff Binary files /dev/null and b/public/terrain/19/858509/354031.terrain differ diff --git a/public/terrain/19/858509/354032.terrain b/public/terrain/19/858509/354032.terrain new file mode 100644 index 000000000..fa93945e2 Binary files /dev/null and b/public/terrain/19/858509/354032.terrain differ diff --git a/public/terrain/19/858509/354033.terrain b/public/terrain/19/858509/354033.terrain new file mode 100644 index 000000000..42fab6f51 Binary files /dev/null and b/public/terrain/19/858509/354033.terrain differ diff --git a/public/terrain/19/858509/354034.terrain b/public/terrain/19/858509/354034.terrain new file mode 100644 index 000000000..b236efcc5 Binary files /dev/null and b/public/terrain/19/858509/354034.terrain differ diff --git a/public/terrain/19/858509/354035.terrain b/public/terrain/19/858509/354035.terrain new file mode 100644 index 000000000..0775f8bb8 Binary files /dev/null and b/public/terrain/19/858509/354035.terrain differ diff --git a/public/terrain/19/858509/354036.terrain b/public/terrain/19/858509/354036.terrain new file mode 100644 index 000000000..48c727f84 Binary files /dev/null and b/public/terrain/19/858509/354036.terrain differ diff --git a/public/terrain/19/858509/354037.terrain b/public/terrain/19/858509/354037.terrain new file mode 100644 index 000000000..cfd43d8ad Binary files /dev/null and b/public/terrain/19/858509/354037.terrain differ diff --git a/public/terrain/19/858509/354038.terrain b/public/terrain/19/858509/354038.terrain new file mode 100644 index 000000000..75714f640 Binary files /dev/null and b/public/terrain/19/858509/354038.terrain differ diff --git a/public/terrain/19/858509/354039.terrain b/public/terrain/19/858509/354039.terrain new file mode 100644 index 000000000..5af4fc009 Binary files /dev/null and b/public/terrain/19/858509/354039.terrain differ diff --git a/public/terrain/19/858509/354040.terrain b/public/terrain/19/858509/354040.terrain new file mode 100644 index 000000000..6ba8956b7 Binary files /dev/null and b/public/terrain/19/858509/354040.terrain differ diff --git a/public/terrain/19/858509/354041.terrain b/public/terrain/19/858509/354041.terrain new file mode 100644 index 000000000..6e6658ab1 Binary files /dev/null and b/public/terrain/19/858509/354041.terrain differ diff --git a/public/terrain/19/858509/354042.terrain b/public/terrain/19/858509/354042.terrain new file mode 100644 index 000000000..4f7b0d9df Binary files /dev/null and b/public/terrain/19/858509/354042.terrain differ diff --git a/public/terrain/19/858509/354043.terrain b/public/terrain/19/858509/354043.terrain new file mode 100644 index 000000000..2deaefa3a Binary files /dev/null and b/public/terrain/19/858509/354043.terrain differ diff --git a/public/terrain/19/858509/354044.terrain b/public/terrain/19/858509/354044.terrain new file mode 100644 index 000000000..dd292e39a Binary files /dev/null and b/public/terrain/19/858509/354044.terrain differ diff --git a/public/terrain/19/858509/354045.terrain b/public/terrain/19/858509/354045.terrain new file mode 100644 index 000000000..6285691fc Binary files /dev/null and b/public/terrain/19/858509/354045.terrain differ diff --git a/public/terrain/19/858509/354046.terrain b/public/terrain/19/858509/354046.terrain new file mode 100644 index 000000000..95278a799 Binary files /dev/null and b/public/terrain/19/858509/354046.terrain differ diff --git a/public/terrain/19/858509/354047.terrain b/public/terrain/19/858509/354047.terrain new file mode 100644 index 000000000..5268a06fa Binary files /dev/null and b/public/terrain/19/858509/354047.terrain differ diff --git a/public/terrain/19/858509/354048.terrain b/public/terrain/19/858509/354048.terrain new file mode 100644 index 000000000..3aaede8c4 Binary files /dev/null and b/public/terrain/19/858509/354048.terrain differ diff --git a/public/terrain/19/858509/354049.terrain b/public/terrain/19/858509/354049.terrain new file mode 100644 index 000000000..4589a2f14 Binary files /dev/null and b/public/terrain/19/858509/354049.terrain differ diff --git a/public/terrain/19/858509/354050.terrain b/public/terrain/19/858509/354050.terrain new file mode 100644 index 000000000..6ee1787b3 Binary files /dev/null and b/public/terrain/19/858509/354050.terrain differ diff --git a/public/terrain/19/858509/354051.terrain b/public/terrain/19/858509/354051.terrain new file mode 100644 index 000000000..1b22b7ebb Binary files /dev/null and b/public/terrain/19/858509/354051.terrain differ diff --git a/public/terrain/19/858509/354052.terrain b/public/terrain/19/858509/354052.terrain new file mode 100644 index 000000000..64d6d2982 Binary files /dev/null and b/public/terrain/19/858509/354052.terrain differ diff --git a/public/terrain/19/858509/354053.terrain b/public/terrain/19/858509/354053.terrain new file mode 100644 index 000000000..42d630990 Binary files /dev/null and b/public/terrain/19/858509/354053.terrain differ diff --git a/public/terrain/19/858509/354054.terrain b/public/terrain/19/858509/354054.terrain new file mode 100644 index 000000000..45cbb703f Binary files /dev/null and b/public/terrain/19/858509/354054.terrain differ diff --git a/public/terrain/19/858509/354055.terrain b/public/terrain/19/858509/354055.terrain new file mode 100644 index 000000000..5c2766e52 Binary files /dev/null and b/public/terrain/19/858509/354055.terrain differ diff --git a/public/terrain/19/858509/354056.terrain b/public/terrain/19/858509/354056.terrain new file mode 100644 index 000000000..f43b9dbdd Binary files /dev/null and b/public/terrain/19/858509/354056.terrain differ diff --git a/public/terrain/19/858509/354057.terrain b/public/terrain/19/858509/354057.terrain new file mode 100644 index 000000000..edc753c2b Binary files /dev/null and b/public/terrain/19/858509/354057.terrain differ diff --git a/public/terrain/19/858509/354058.terrain b/public/terrain/19/858509/354058.terrain new file mode 100644 index 000000000..da8ad6144 Binary files /dev/null and b/public/terrain/19/858509/354058.terrain differ diff --git a/public/terrain/19/858509/354059.terrain b/public/terrain/19/858509/354059.terrain new file mode 100644 index 000000000..b1ab73f58 Binary files /dev/null and b/public/terrain/19/858509/354059.terrain differ diff --git a/public/terrain/19/858510/353743.terrain b/public/terrain/19/858510/353743.terrain new file mode 100644 index 000000000..a7daa7629 Binary files /dev/null and b/public/terrain/19/858510/353743.terrain differ diff --git a/public/terrain/19/858510/353744.terrain b/public/terrain/19/858510/353744.terrain new file mode 100644 index 000000000..987aa519f Binary files /dev/null and b/public/terrain/19/858510/353744.terrain differ diff --git a/public/terrain/19/858510/353745.terrain b/public/terrain/19/858510/353745.terrain new file mode 100644 index 000000000..9cc7168a5 Binary files /dev/null and b/public/terrain/19/858510/353745.terrain differ diff --git a/public/terrain/19/858510/353746.terrain b/public/terrain/19/858510/353746.terrain new file mode 100644 index 000000000..69ef8f830 Binary files /dev/null and b/public/terrain/19/858510/353746.terrain differ diff --git a/public/terrain/19/858510/353747.terrain b/public/terrain/19/858510/353747.terrain new file mode 100644 index 000000000..a3a51102f Binary files /dev/null and b/public/terrain/19/858510/353747.terrain differ diff --git a/public/terrain/19/858510/353748.terrain b/public/terrain/19/858510/353748.terrain new file mode 100644 index 000000000..065d5ccd5 Binary files /dev/null and b/public/terrain/19/858510/353748.terrain differ diff --git a/public/terrain/19/858510/353749.terrain b/public/terrain/19/858510/353749.terrain new file mode 100644 index 000000000..67031b01c Binary files /dev/null and b/public/terrain/19/858510/353749.terrain differ diff --git a/public/terrain/19/858510/353750.terrain b/public/terrain/19/858510/353750.terrain new file mode 100644 index 000000000..0b5a1186f Binary files /dev/null and b/public/terrain/19/858510/353750.terrain differ diff --git a/public/terrain/19/858510/353751.terrain b/public/terrain/19/858510/353751.terrain new file mode 100644 index 000000000..7c7e901cc Binary files /dev/null and b/public/terrain/19/858510/353751.terrain differ diff --git a/public/terrain/19/858510/353752.terrain b/public/terrain/19/858510/353752.terrain new file mode 100644 index 000000000..1207c2e0f Binary files /dev/null and b/public/terrain/19/858510/353752.terrain differ diff --git a/public/terrain/19/858510/353753.terrain b/public/terrain/19/858510/353753.terrain new file mode 100644 index 000000000..425a84106 Binary files /dev/null and b/public/terrain/19/858510/353753.terrain differ diff --git a/public/terrain/19/858510/353754.terrain b/public/terrain/19/858510/353754.terrain new file mode 100644 index 000000000..b7ebfc81a Binary files /dev/null and b/public/terrain/19/858510/353754.terrain differ diff --git a/public/terrain/19/858510/353755.terrain b/public/terrain/19/858510/353755.terrain new file mode 100644 index 000000000..5a0bd0979 Binary files /dev/null and b/public/terrain/19/858510/353755.terrain differ diff --git a/public/terrain/19/858510/353756.terrain b/public/terrain/19/858510/353756.terrain new file mode 100644 index 000000000..8bc22c00d Binary files /dev/null and b/public/terrain/19/858510/353756.terrain differ diff --git a/public/terrain/19/858510/353757.terrain b/public/terrain/19/858510/353757.terrain new file mode 100644 index 000000000..e10b465af Binary files /dev/null and b/public/terrain/19/858510/353757.terrain differ diff --git a/public/terrain/19/858510/353758.terrain b/public/terrain/19/858510/353758.terrain new file mode 100644 index 000000000..cccb88d84 Binary files /dev/null and b/public/terrain/19/858510/353758.terrain differ diff --git a/public/terrain/19/858510/353759.terrain b/public/terrain/19/858510/353759.terrain new file mode 100644 index 000000000..3183f25cf Binary files /dev/null and b/public/terrain/19/858510/353759.terrain differ diff --git a/public/terrain/19/858510/353760.terrain b/public/terrain/19/858510/353760.terrain new file mode 100644 index 000000000..75738ab87 Binary files /dev/null and b/public/terrain/19/858510/353760.terrain differ diff --git a/public/terrain/19/858510/353761.terrain b/public/terrain/19/858510/353761.terrain new file mode 100644 index 000000000..ce5e921e5 Binary files /dev/null and b/public/terrain/19/858510/353761.terrain differ diff --git a/public/terrain/19/858510/353762.terrain b/public/terrain/19/858510/353762.terrain new file mode 100644 index 000000000..8d2d4ac78 Binary files /dev/null and b/public/terrain/19/858510/353762.terrain differ diff --git a/public/terrain/19/858510/353763.terrain b/public/terrain/19/858510/353763.terrain new file mode 100644 index 000000000..00bed97f6 Binary files /dev/null and b/public/terrain/19/858510/353763.terrain differ diff --git a/public/terrain/19/858510/353764.terrain b/public/terrain/19/858510/353764.terrain new file mode 100644 index 000000000..502022d23 Binary files /dev/null and b/public/terrain/19/858510/353764.terrain differ diff --git a/public/terrain/19/858510/353765.terrain b/public/terrain/19/858510/353765.terrain new file mode 100644 index 000000000..ec8750f27 Binary files /dev/null and b/public/terrain/19/858510/353765.terrain differ diff --git a/public/terrain/19/858510/353766.terrain b/public/terrain/19/858510/353766.terrain new file mode 100644 index 000000000..d3985e005 Binary files /dev/null and b/public/terrain/19/858510/353766.terrain differ diff --git a/public/terrain/19/858510/353767.terrain b/public/terrain/19/858510/353767.terrain new file mode 100644 index 000000000..590f9aa2a Binary files /dev/null and b/public/terrain/19/858510/353767.terrain differ diff --git a/public/terrain/19/858510/353768.terrain b/public/terrain/19/858510/353768.terrain new file mode 100644 index 000000000..9df4510b4 Binary files /dev/null and b/public/terrain/19/858510/353768.terrain differ diff --git a/public/terrain/19/858510/353769.terrain b/public/terrain/19/858510/353769.terrain new file mode 100644 index 000000000..c0a0a1f2c Binary files /dev/null and b/public/terrain/19/858510/353769.terrain differ diff --git a/public/terrain/19/858510/353770.terrain b/public/terrain/19/858510/353770.terrain new file mode 100644 index 000000000..b2fd37b32 Binary files /dev/null and b/public/terrain/19/858510/353770.terrain differ diff --git a/public/terrain/19/858510/353771.terrain b/public/terrain/19/858510/353771.terrain new file mode 100644 index 000000000..5eb453e6f Binary files /dev/null and b/public/terrain/19/858510/353771.terrain differ diff --git a/public/terrain/19/858510/353772.terrain b/public/terrain/19/858510/353772.terrain new file mode 100644 index 000000000..a2971825f Binary files /dev/null and b/public/terrain/19/858510/353772.terrain differ diff --git a/public/terrain/19/858510/353773.terrain b/public/terrain/19/858510/353773.terrain new file mode 100644 index 000000000..7b5036eab Binary files /dev/null and b/public/terrain/19/858510/353773.terrain differ diff --git a/public/terrain/19/858510/353774.terrain b/public/terrain/19/858510/353774.terrain new file mode 100644 index 000000000..0aab8e315 Binary files /dev/null and b/public/terrain/19/858510/353774.terrain differ diff --git a/public/terrain/19/858510/353775.terrain b/public/terrain/19/858510/353775.terrain new file mode 100644 index 000000000..b07b432a3 Binary files /dev/null and b/public/terrain/19/858510/353775.terrain differ diff --git a/public/terrain/19/858510/353776.terrain b/public/terrain/19/858510/353776.terrain new file mode 100644 index 000000000..e640d791b Binary files /dev/null and b/public/terrain/19/858510/353776.terrain differ diff --git a/public/terrain/19/858510/353777.terrain b/public/terrain/19/858510/353777.terrain new file mode 100644 index 000000000..0c45bcd81 Binary files /dev/null and b/public/terrain/19/858510/353777.terrain differ diff --git a/public/terrain/19/858510/353778.terrain b/public/terrain/19/858510/353778.terrain new file mode 100644 index 000000000..78ee68845 Binary files /dev/null and b/public/terrain/19/858510/353778.terrain differ diff --git a/public/terrain/19/858510/353779.terrain b/public/terrain/19/858510/353779.terrain new file mode 100644 index 000000000..0433049b3 Binary files /dev/null and b/public/terrain/19/858510/353779.terrain differ diff --git a/public/terrain/19/858510/353780.terrain b/public/terrain/19/858510/353780.terrain new file mode 100644 index 000000000..ee12d6175 Binary files /dev/null and b/public/terrain/19/858510/353780.terrain differ diff --git a/public/terrain/19/858510/353781.terrain b/public/terrain/19/858510/353781.terrain new file mode 100644 index 000000000..d317016c5 Binary files /dev/null and b/public/terrain/19/858510/353781.terrain differ diff --git a/public/terrain/19/858510/353782.terrain b/public/terrain/19/858510/353782.terrain new file mode 100644 index 000000000..ae662d565 Binary files /dev/null and b/public/terrain/19/858510/353782.terrain differ diff --git a/public/terrain/19/858510/353783.terrain b/public/terrain/19/858510/353783.terrain new file mode 100644 index 000000000..4d5677496 Binary files /dev/null and b/public/terrain/19/858510/353783.terrain differ diff --git a/public/terrain/19/858510/353784.terrain b/public/terrain/19/858510/353784.terrain new file mode 100644 index 000000000..1dad76daa Binary files /dev/null and b/public/terrain/19/858510/353784.terrain differ diff --git a/public/terrain/19/858510/353785.terrain b/public/terrain/19/858510/353785.terrain new file mode 100644 index 000000000..48fb47e11 Binary files /dev/null and b/public/terrain/19/858510/353785.terrain differ diff --git a/public/terrain/19/858510/353786.terrain b/public/terrain/19/858510/353786.terrain new file mode 100644 index 000000000..f66375452 Binary files /dev/null and b/public/terrain/19/858510/353786.terrain differ diff --git a/public/terrain/19/858510/353787.terrain b/public/terrain/19/858510/353787.terrain new file mode 100644 index 000000000..58e1e1bde Binary files /dev/null and b/public/terrain/19/858510/353787.terrain differ diff --git a/public/terrain/19/858510/353788.terrain b/public/terrain/19/858510/353788.terrain new file mode 100644 index 000000000..41e13ebc7 Binary files /dev/null and b/public/terrain/19/858510/353788.terrain differ diff --git a/public/terrain/19/858510/353789.terrain b/public/terrain/19/858510/353789.terrain new file mode 100644 index 000000000..598e0fad7 Binary files /dev/null and b/public/terrain/19/858510/353789.terrain differ diff --git a/public/terrain/19/858510/353790.terrain b/public/terrain/19/858510/353790.terrain new file mode 100644 index 000000000..ca2a9a41b Binary files /dev/null and b/public/terrain/19/858510/353790.terrain differ diff --git a/public/terrain/19/858510/353791.terrain b/public/terrain/19/858510/353791.terrain new file mode 100644 index 000000000..806fea496 Binary files /dev/null and b/public/terrain/19/858510/353791.terrain differ diff --git a/public/terrain/19/858510/353792.terrain b/public/terrain/19/858510/353792.terrain new file mode 100644 index 000000000..e2471db98 Binary files /dev/null and b/public/terrain/19/858510/353792.terrain differ diff --git a/public/terrain/19/858510/353793.terrain b/public/terrain/19/858510/353793.terrain new file mode 100644 index 000000000..f2c31a234 Binary files /dev/null and b/public/terrain/19/858510/353793.terrain differ diff --git a/public/terrain/19/858510/353794.terrain b/public/terrain/19/858510/353794.terrain new file mode 100644 index 000000000..9aec9b219 Binary files /dev/null and b/public/terrain/19/858510/353794.terrain differ diff --git a/public/terrain/19/858510/353795.terrain b/public/terrain/19/858510/353795.terrain new file mode 100644 index 000000000..a2a48fce6 Binary files /dev/null and b/public/terrain/19/858510/353795.terrain differ diff --git a/public/terrain/19/858510/353796.terrain b/public/terrain/19/858510/353796.terrain new file mode 100644 index 000000000..38f664fc6 Binary files /dev/null and b/public/terrain/19/858510/353796.terrain differ diff --git a/public/terrain/19/858510/353797.terrain b/public/terrain/19/858510/353797.terrain new file mode 100644 index 000000000..63ca6f336 Binary files /dev/null and b/public/terrain/19/858510/353797.terrain differ diff --git a/public/terrain/19/858510/353798.terrain b/public/terrain/19/858510/353798.terrain new file mode 100644 index 000000000..4aec7680e Binary files /dev/null and b/public/terrain/19/858510/353798.terrain differ diff --git a/public/terrain/19/858510/353799.terrain b/public/terrain/19/858510/353799.terrain new file mode 100644 index 000000000..2febbfc90 Binary files /dev/null and b/public/terrain/19/858510/353799.terrain differ diff --git a/public/terrain/19/858510/353800.terrain b/public/terrain/19/858510/353800.terrain new file mode 100644 index 000000000..a6f798dc6 Binary files /dev/null and b/public/terrain/19/858510/353800.terrain differ diff --git a/public/terrain/19/858510/353801.terrain b/public/terrain/19/858510/353801.terrain new file mode 100644 index 000000000..0892b409d Binary files /dev/null and b/public/terrain/19/858510/353801.terrain differ diff --git a/public/terrain/19/858510/353802.terrain b/public/terrain/19/858510/353802.terrain new file mode 100644 index 000000000..c8052bb22 Binary files /dev/null and b/public/terrain/19/858510/353802.terrain differ diff --git a/public/terrain/19/858510/353803.terrain b/public/terrain/19/858510/353803.terrain new file mode 100644 index 000000000..018a9d446 Binary files /dev/null and b/public/terrain/19/858510/353803.terrain differ diff --git a/public/terrain/19/858510/353804.terrain b/public/terrain/19/858510/353804.terrain new file mode 100644 index 000000000..fb8655ab1 Binary files /dev/null and b/public/terrain/19/858510/353804.terrain differ diff --git a/public/terrain/19/858510/353805.terrain b/public/terrain/19/858510/353805.terrain new file mode 100644 index 000000000..41957db53 Binary files /dev/null and b/public/terrain/19/858510/353805.terrain differ diff --git a/public/terrain/19/858510/353806.terrain b/public/terrain/19/858510/353806.terrain new file mode 100644 index 000000000..d5a829042 Binary files /dev/null and b/public/terrain/19/858510/353806.terrain differ diff --git a/public/terrain/19/858510/353807.terrain b/public/terrain/19/858510/353807.terrain new file mode 100644 index 000000000..0dbf343fe Binary files /dev/null and b/public/terrain/19/858510/353807.terrain differ diff --git a/public/terrain/19/858510/353808.terrain b/public/terrain/19/858510/353808.terrain new file mode 100644 index 000000000..b56872b01 Binary files /dev/null and b/public/terrain/19/858510/353808.terrain differ diff --git a/public/terrain/19/858510/353809.terrain b/public/terrain/19/858510/353809.terrain new file mode 100644 index 000000000..65d486951 Binary files /dev/null and b/public/terrain/19/858510/353809.terrain differ diff --git a/public/terrain/19/858510/353810.terrain b/public/terrain/19/858510/353810.terrain new file mode 100644 index 000000000..0c51dee8f Binary files /dev/null and b/public/terrain/19/858510/353810.terrain differ diff --git a/public/terrain/19/858510/353811.terrain b/public/terrain/19/858510/353811.terrain new file mode 100644 index 000000000..2ce38f8ed Binary files /dev/null and b/public/terrain/19/858510/353811.terrain differ diff --git a/public/terrain/19/858510/353812.terrain b/public/terrain/19/858510/353812.terrain new file mode 100644 index 000000000..9b8bfc322 Binary files /dev/null and b/public/terrain/19/858510/353812.terrain differ diff --git a/public/terrain/19/858510/353813.terrain b/public/terrain/19/858510/353813.terrain new file mode 100644 index 000000000..1041f280d Binary files /dev/null and b/public/terrain/19/858510/353813.terrain differ diff --git a/public/terrain/19/858510/353814.terrain b/public/terrain/19/858510/353814.terrain new file mode 100644 index 000000000..9ec5afde6 Binary files /dev/null and b/public/terrain/19/858510/353814.terrain differ diff --git a/public/terrain/19/858510/353815.terrain b/public/terrain/19/858510/353815.terrain new file mode 100644 index 000000000..04628e4f0 Binary files /dev/null and b/public/terrain/19/858510/353815.terrain differ diff --git a/public/terrain/19/858510/353816.terrain b/public/terrain/19/858510/353816.terrain new file mode 100644 index 000000000..7f6051d53 Binary files /dev/null and b/public/terrain/19/858510/353816.terrain differ diff --git a/public/terrain/19/858510/353817.terrain b/public/terrain/19/858510/353817.terrain new file mode 100644 index 000000000..fd46d6c1b Binary files /dev/null and b/public/terrain/19/858510/353817.terrain differ diff --git a/public/terrain/19/858510/353818.terrain b/public/terrain/19/858510/353818.terrain new file mode 100644 index 000000000..709c877da Binary files /dev/null and b/public/terrain/19/858510/353818.terrain differ diff --git a/public/terrain/19/858510/353819.terrain b/public/terrain/19/858510/353819.terrain new file mode 100644 index 000000000..a701613e6 Binary files /dev/null and b/public/terrain/19/858510/353819.terrain differ diff --git a/public/terrain/19/858510/353820.terrain b/public/terrain/19/858510/353820.terrain new file mode 100644 index 000000000..d46dac534 Binary files /dev/null and b/public/terrain/19/858510/353820.terrain differ diff --git a/public/terrain/19/858510/353821.terrain b/public/terrain/19/858510/353821.terrain new file mode 100644 index 000000000..17cc9d574 Binary files /dev/null and b/public/terrain/19/858510/353821.terrain differ diff --git a/public/terrain/19/858510/353822.terrain b/public/terrain/19/858510/353822.terrain new file mode 100644 index 000000000..e21f2e5b2 Binary files /dev/null and b/public/terrain/19/858510/353822.terrain differ diff --git a/public/terrain/19/858510/353823.terrain b/public/terrain/19/858510/353823.terrain new file mode 100644 index 000000000..a2bd15358 Binary files /dev/null and b/public/terrain/19/858510/353823.terrain differ diff --git a/public/terrain/19/858510/353824.terrain b/public/terrain/19/858510/353824.terrain new file mode 100644 index 000000000..0d1cebd0c Binary files /dev/null and b/public/terrain/19/858510/353824.terrain differ diff --git a/public/terrain/19/858510/353825.terrain b/public/terrain/19/858510/353825.terrain new file mode 100644 index 000000000..1fbc63a15 Binary files /dev/null and b/public/terrain/19/858510/353825.terrain differ diff --git a/public/terrain/19/858510/353826.terrain b/public/terrain/19/858510/353826.terrain new file mode 100644 index 000000000..576a0bf34 Binary files /dev/null and b/public/terrain/19/858510/353826.terrain differ diff --git a/public/terrain/19/858510/353827.terrain b/public/terrain/19/858510/353827.terrain new file mode 100644 index 000000000..bdd5ad5ed Binary files /dev/null and b/public/terrain/19/858510/353827.terrain differ diff --git a/public/terrain/19/858510/353828.terrain b/public/terrain/19/858510/353828.terrain new file mode 100644 index 000000000..8592fd3fa Binary files /dev/null and b/public/terrain/19/858510/353828.terrain differ diff --git a/public/terrain/19/858510/353829.terrain b/public/terrain/19/858510/353829.terrain new file mode 100644 index 000000000..986a81dfb Binary files /dev/null and b/public/terrain/19/858510/353829.terrain differ diff --git a/public/terrain/19/858510/353830.terrain b/public/terrain/19/858510/353830.terrain new file mode 100644 index 000000000..09b711965 Binary files /dev/null and b/public/terrain/19/858510/353830.terrain differ diff --git a/public/terrain/19/858510/353831.terrain b/public/terrain/19/858510/353831.terrain new file mode 100644 index 000000000..9544f905a Binary files /dev/null and b/public/terrain/19/858510/353831.terrain differ diff --git a/public/terrain/19/858510/353832.terrain b/public/terrain/19/858510/353832.terrain new file mode 100644 index 000000000..cb68a7888 Binary files /dev/null and b/public/terrain/19/858510/353832.terrain differ diff --git a/public/terrain/19/858510/353833.terrain b/public/terrain/19/858510/353833.terrain new file mode 100644 index 000000000..da758a397 Binary files /dev/null and b/public/terrain/19/858510/353833.terrain differ diff --git a/public/terrain/19/858510/353834.terrain b/public/terrain/19/858510/353834.terrain new file mode 100644 index 000000000..2cf6b3661 Binary files /dev/null and b/public/terrain/19/858510/353834.terrain differ diff --git a/public/terrain/19/858510/353835.terrain b/public/terrain/19/858510/353835.terrain new file mode 100644 index 000000000..d86d8d9d3 Binary files /dev/null and b/public/terrain/19/858510/353835.terrain differ diff --git a/public/terrain/19/858510/353836.terrain b/public/terrain/19/858510/353836.terrain new file mode 100644 index 000000000..768a623c5 Binary files /dev/null and b/public/terrain/19/858510/353836.terrain differ diff --git a/public/terrain/19/858510/353837.terrain b/public/terrain/19/858510/353837.terrain new file mode 100644 index 000000000..a9b498eda Binary files /dev/null and b/public/terrain/19/858510/353837.terrain differ diff --git a/public/terrain/19/858510/353838.terrain b/public/terrain/19/858510/353838.terrain new file mode 100644 index 000000000..25b76fa69 Binary files /dev/null and b/public/terrain/19/858510/353838.terrain differ diff --git a/public/terrain/19/858510/353839.terrain b/public/terrain/19/858510/353839.terrain new file mode 100644 index 000000000..624264a7c Binary files /dev/null and b/public/terrain/19/858510/353839.terrain differ diff --git a/public/terrain/19/858510/353840.terrain b/public/terrain/19/858510/353840.terrain new file mode 100644 index 000000000..35f0ff5f3 Binary files /dev/null and b/public/terrain/19/858510/353840.terrain differ diff --git a/public/terrain/19/858510/353841.terrain b/public/terrain/19/858510/353841.terrain new file mode 100644 index 000000000..37caad9c1 Binary files /dev/null and b/public/terrain/19/858510/353841.terrain differ diff --git a/public/terrain/19/858510/353842.terrain b/public/terrain/19/858510/353842.terrain new file mode 100644 index 000000000..d724132f2 Binary files /dev/null and b/public/terrain/19/858510/353842.terrain differ diff --git a/public/terrain/19/858510/353843.terrain b/public/terrain/19/858510/353843.terrain new file mode 100644 index 000000000..0b5554e1c Binary files /dev/null and b/public/terrain/19/858510/353843.terrain differ diff --git a/public/terrain/19/858510/353844.terrain b/public/terrain/19/858510/353844.terrain new file mode 100644 index 000000000..4e5cc7870 Binary files /dev/null and b/public/terrain/19/858510/353844.terrain differ diff --git a/public/terrain/19/858510/353845.terrain b/public/terrain/19/858510/353845.terrain new file mode 100644 index 000000000..c99155274 Binary files /dev/null and b/public/terrain/19/858510/353845.terrain differ diff --git a/public/terrain/19/858510/353846.terrain b/public/terrain/19/858510/353846.terrain new file mode 100644 index 000000000..a0a745f65 Binary files /dev/null and b/public/terrain/19/858510/353846.terrain differ diff --git a/public/terrain/19/858510/353847.terrain b/public/terrain/19/858510/353847.terrain new file mode 100644 index 000000000..4e320b8b4 Binary files /dev/null and b/public/terrain/19/858510/353847.terrain differ diff --git a/public/terrain/19/858510/353848.terrain b/public/terrain/19/858510/353848.terrain new file mode 100644 index 000000000..04578e66a Binary files /dev/null and b/public/terrain/19/858510/353848.terrain differ diff --git a/public/terrain/19/858510/353849.terrain b/public/terrain/19/858510/353849.terrain new file mode 100644 index 000000000..42efea9c2 Binary files /dev/null and b/public/terrain/19/858510/353849.terrain differ diff --git a/public/terrain/19/858510/353850.terrain b/public/terrain/19/858510/353850.terrain new file mode 100644 index 000000000..88bfd7dc4 Binary files /dev/null and b/public/terrain/19/858510/353850.terrain differ diff --git a/public/terrain/19/858510/353851.terrain b/public/terrain/19/858510/353851.terrain new file mode 100644 index 000000000..37e82c691 Binary files /dev/null and b/public/terrain/19/858510/353851.terrain differ diff --git a/public/terrain/19/858510/353852.terrain b/public/terrain/19/858510/353852.terrain new file mode 100644 index 000000000..dfe9aacbc Binary files /dev/null and b/public/terrain/19/858510/353852.terrain differ diff --git a/public/terrain/19/858510/353853.terrain b/public/terrain/19/858510/353853.terrain new file mode 100644 index 000000000..d60374645 Binary files /dev/null and b/public/terrain/19/858510/353853.terrain differ diff --git a/public/terrain/19/858510/353854.terrain b/public/terrain/19/858510/353854.terrain new file mode 100644 index 000000000..b939c5bbf Binary files /dev/null and b/public/terrain/19/858510/353854.terrain differ diff --git a/public/terrain/19/858510/353855.terrain b/public/terrain/19/858510/353855.terrain new file mode 100644 index 000000000..2cf165fcb Binary files /dev/null and b/public/terrain/19/858510/353855.terrain differ diff --git a/public/terrain/19/858510/353856.terrain b/public/terrain/19/858510/353856.terrain new file mode 100644 index 000000000..7b8535391 Binary files /dev/null and b/public/terrain/19/858510/353856.terrain differ diff --git a/public/terrain/19/858510/353857.terrain b/public/terrain/19/858510/353857.terrain new file mode 100644 index 000000000..e67b019a2 Binary files /dev/null and b/public/terrain/19/858510/353857.terrain differ diff --git a/public/terrain/19/858510/353858.terrain b/public/terrain/19/858510/353858.terrain new file mode 100644 index 000000000..a0a99d648 Binary files /dev/null and b/public/terrain/19/858510/353858.terrain differ diff --git a/public/terrain/19/858510/353859.terrain b/public/terrain/19/858510/353859.terrain new file mode 100644 index 000000000..1d8281798 Binary files /dev/null and b/public/terrain/19/858510/353859.terrain differ diff --git a/public/terrain/19/858510/353860.terrain b/public/terrain/19/858510/353860.terrain new file mode 100644 index 000000000..8ceea134e Binary files /dev/null and b/public/terrain/19/858510/353860.terrain differ diff --git a/public/terrain/19/858510/353861.terrain b/public/terrain/19/858510/353861.terrain new file mode 100644 index 000000000..d1dd8f4a6 Binary files /dev/null and b/public/terrain/19/858510/353861.terrain differ diff --git a/public/terrain/19/858510/353862.terrain b/public/terrain/19/858510/353862.terrain new file mode 100644 index 000000000..9bc1b4422 Binary files /dev/null and b/public/terrain/19/858510/353862.terrain differ diff --git a/public/terrain/19/858510/353863.terrain b/public/terrain/19/858510/353863.terrain new file mode 100644 index 000000000..f91c3e8d4 Binary files /dev/null and b/public/terrain/19/858510/353863.terrain differ diff --git a/public/terrain/19/858510/353864.terrain b/public/terrain/19/858510/353864.terrain new file mode 100644 index 000000000..9bbceb420 Binary files /dev/null and b/public/terrain/19/858510/353864.terrain differ diff --git a/public/terrain/19/858510/353865.terrain b/public/terrain/19/858510/353865.terrain new file mode 100644 index 000000000..2617f166c Binary files /dev/null and b/public/terrain/19/858510/353865.terrain differ diff --git a/public/terrain/19/858510/353866.terrain b/public/terrain/19/858510/353866.terrain new file mode 100644 index 000000000..50649a770 Binary files /dev/null and b/public/terrain/19/858510/353866.terrain differ diff --git a/public/terrain/19/858510/353867.terrain b/public/terrain/19/858510/353867.terrain new file mode 100644 index 000000000..d874dad09 Binary files /dev/null and b/public/terrain/19/858510/353867.terrain differ diff --git a/public/terrain/19/858510/353868.terrain b/public/terrain/19/858510/353868.terrain new file mode 100644 index 000000000..00437cdef Binary files /dev/null and b/public/terrain/19/858510/353868.terrain differ diff --git a/public/terrain/19/858510/353869.terrain b/public/terrain/19/858510/353869.terrain new file mode 100644 index 000000000..91e0a75fb Binary files /dev/null and b/public/terrain/19/858510/353869.terrain differ diff --git a/public/terrain/19/858510/353870.terrain b/public/terrain/19/858510/353870.terrain new file mode 100644 index 000000000..f8136f187 Binary files /dev/null and b/public/terrain/19/858510/353870.terrain differ diff --git a/public/terrain/19/858510/353871.terrain b/public/terrain/19/858510/353871.terrain new file mode 100644 index 000000000..ae9cba3b5 Binary files /dev/null and b/public/terrain/19/858510/353871.terrain differ diff --git a/public/terrain/19/858510/353872.terrain b/public/terrain/19/858510/353872.terrain new file mode 100644 index 000000000..a29a6edbd Binary files /dev/null and b/public/terrain/19/858510/353872.terrain differ diff --git a/public/terrain/19/858510/353873.terrain b/public/terrain/19/858510/353873.terrain new file mode 100644 index 000000000..9222f3643 Binary files /dev/null and b/public/terrain/19/858510/353873.terrain differ diff --git a/public/terrain/19/858510/353874.terrain b/public/terrain/19/858510/353874.terrain new file mode 100644 index 000000000..eebb2fbc5 Binary files /dev/null and b/public/terrain/19/858510/353874.terrain differ diff --git a/public/terrain/19/858510/353875.terrain b/public/terrain/19/858510/353875.terrain new file mode 100644 index 000000000..ed04b2048 Binary files /dev/null and b/public/terrain/19/858510/353875.terrain differ diff --git a/public/terrain/19/858510/353876.terrain b/public/terrain/19/858510/353876.terrain new file mode 100644 index 000000000..e8dc2aeb1 Binary files /dev/null and b/public/terrain/19/858510/353876.terrain differ diff --git a/public/terrain/19/858510/353877.terrain b/public/terrain/19/858510/353877.terrain new file mode 100644 index 000000000..878180f1f Binary files /dev/null and b/public/terrain/19/858510/353877.terrain differ diff --git a/public/terrain/19/858510/353878.terrain b/public/terrain/19/858510/353878.terrain new file mode 100644 index 000000000..fe24dbf84 Binary files /dev/null and b/public/terrain/19/858510/353878.terrain differ diff --git a/public/terrain/19/858510/353879.terrain b/public/terrain/19/858510/353879.terrain new file mode 100644 index 000000000..e91cff4f4 Binary files /dev/null and b/public/terrain/19/858510/353879.terrain differ diff --git a/public/terrain/19/858510/353880.terrain b/public/terrain/19/858510/353880.terrain new file mode 100644 index 000000000..3502c86d6 Binary files /dev/null and b/public/terrain/19/858510/353880.terrain differ diff --git a/public/terrain/19/858510/353881.terrain b/public/terrain/19/858510/353881.terrain new file mode 100644 index 000000000..0e39383b3 Binary files /dev/null and b/public/terrain/19/858510/353881.terrain differ diff --git a/public/terrain/19/858510/353882.terrain b/public/terrain/19/858510/353882.terrain new file mode 100644 index 000000000..846d9c4cc Binary files /dev/null and b/public/terrain/19/858510/353882.terrain differ diff --git a/public/terrain/19/858510/353883.terrain b/public/terrain/19/858510/353883.terrain new file mode 100644 index 000000000..2c4f84baa Binary files /dev/null and b/public/terrain/19/858510/353883.terrain differ diff --git a/public/terrain/19/858510/353884.terrain b/public/terrain/19/858510/353884.terrain new file mode 100644 index 000000000..4d3c69e63 Binary files /dev/null and b/public/terrain/19/858510/353884.terrain differ diff --git a/public/terrain/19/858510/353885.terrain b/public/terrain/19/858510/353885.terrain new file mode 100644 index 000000000..e5b8a21e8 Binary files /dev/null and b/public/terrain/19/858510/353885.terrain differ diff --git a/public/terrain/19/858510/353886.terrain b/public/terrain/19/858510/353886.terrain new file mode 100644 index 000000000..fab466201 Binary files /dev/null and b/public/terrain/19/858510/353886.terrain differ diff --git a/public/terrain/19/858510/353887.terrain b/public/terrain/19/858510/353887.terrain new file mode 100644 index 000000000..3687c946b Binary files /dev/null and b/public/terrain/19/858510/353887.terrain differ diff --git a/public/terrain/19/858510/353888.terrain b/public/terrain/19/858510/353888.terrain new file mode 100644 index 000000000..c1019cb97 Binary files /dev/null and b/public/terrain/19/858510/353888.terrain differ diff --git a/public/terrain/19/858510/353889.terrain b/public/terrain/19/858510/353889.terrain new file mode 100644 index 000000000..82aa21966 Binary files /dev/null and b/public/terrain/19/858510/353889.terrain differ diff --git a/public/terrain/19/858510/353890.terrain b/public/terrain/19/858510/353890.terrain new file mode 100644 index 000000000..e60d9995c Binary files /dev/null and b/public/terrain/19/858510/353890.terrain differ diff --git a/public/terrain/19/858510/353891.terrain b/public/terrain/19/858510/353891.terrain new file mode 100644 index 000000000..52850a7d5 Binary files /dev/null and b/public/terrain/19/858510/353891.terrain differ diff --git a/public/terrain/19/858510/353892.terrain b/public/terrain/19/858510/353892.terrain new file mode 100644 index 000000000..876b4dc9a Binary files /dev/null and b/public/terrain/19/858510/353892.terrain differ diff --git a/public/terrain/19/858510/353893.terrain b/public/terrain/19/858510/353893.terrain new file mode 100644 index 000000000..1ced37ed0 Binary files /dev/null and b/public/terrain/19/858510/353893.terrain differ diff --git a/public/terrain/19/858510/353894.terrain b/public/terrain/19/858510/353894.terrain new file mode 100644 index 000000000..97bce39c2 Binary files /dev/null and b/public/terrain/19/858510/353894.terrain differ diff --git a/public/terrain/19/858510/353895.terrain b/public/terrain/19/858510/353895.terrain new file mode 100644 index 000000000..833ed04b3 Binary files /dev/null and b/public/terrain/19/858510/353895.terrain differ diff --git a/public/terrain/19/858510/353896.terrain b/public/terrain/19/858510/353896.terrain new file mode 100644 index 000000000..69453cf7a Binary files /dev/null and b/public/terrain/19/858510/353896.terrain differ diff --git a/public/terrain/19/858510/353897.terrain b/public/terrain/19/858510/353897.terrain new file mode 100644 index 000000000..7f7ec2da4 Binary files /dev/null and b/public/terrain/19/858510/353897.terrain differ diff --git a/public/terrain/19/858510/353898.terrain b/public/terrain/19/858510/353898.terrain new file mode 100644 index 000000000..61a8bc526 Binary files /dev/null and b/public/terrain/19/858510/353898.terrain differ diff --git a/public/terrain/19/858510/353899.terrain b/public/terrain/19/858510/353899.terrain new file mode 100644 index 000000000..4c2480a9a Binary files /dev/null and b/public/terrain/19/858510/353899.terrain differ diff --git a/public/terrain/19/858510/353900.terrain b/public/terrain/19/858510/353900.terrain new file mode 100644 index 000000000..de3d2c9a0 Binary files /dev/null and b/public/terrain/19/858510/353900.terrain differ diff --git a/public/terrain/19/858510/353901.terrain b/public/terrain/19/858510/353901.terrain new file mode 100644 index 000000000..0604d3329 Binary files /dev/null and b/public/terrain/19/858510/353901.terrain differ diff --git a/public/terrain/19/858510/353902.terrain b/public/terrain/19/858510/353902.terrain new file mode 100644 index 000000000..d0f2272da Binary files /dev/null and b/public/terrain/19/858510/353902.terrain differ diff --git a/public/terrain/19/858510/353903.terrain b/public/terrain/19/858510/353903.terrain new file mode 100644 index 000000000..3f826abae Binary files /dev/null and b/public/terrain/19/858510/353903.terrain differ diff --git a/public/terrain/19/858510/353904.terrain b/public/terrain/19/858510/353904.terrain new file mode 100644 index 000000000..3f7ea0793 Binary files /dev/null and b/public/terrain/19/858510/353904.terrain differ diff --git a/public/terrain/19/858510/353905.terrain b/public/terrain/19/858510/353905.terrain new file mode 100644 index 000000000..d4b0bb51c Binary files /dev/null and b/public/terrain/19/858510/353905.terrain differ diff --git a/public/terrain/19/858510/353906.terrain b/public/terrain/19/858510/353906.terrain new file mode 100644 index 000000000..958e73ce6 Binary files /dev/null and b/public/terrain/19/858510/353906.terrain differ diff --git a/public/terrain/19/858510/353907.terrain b/public/terrain/19/858510/353907.terrain new file mode 100644 index 000000000..c7118199f Binary files /dev/null and b/public/terrain/19/858510/353907.terrain differ diff --git a/public/terrain/19/858510/353908.terrain b/public/terrain/19/858510/353908.terrain new file mode 100644 index 000000000..e0d9684f3 Binary files /dev/null and b/public/terrain/19/858510/353908.terrain differ diff --git a/public/terrain/19/858510/353909.terrain b/public/terrain/19/858510/353909.terrain new file mode 100644 index 000000000..4af95d3fb Binary files /dev/null and b/public/terrain/19/858510/353909.terrain differ diff --git a/public/terrain/19/858510/353910.terrain b/public/terrain/19/858510/353910.terrain new file mode 100644 index 000000000..5f6d0d5af Binary files /dev/null and b/public/terrain/19/858510/353910.terrain differ diff --git a/public/terrain/19/858510/353911.terrain b/public/terrain/19/858510/353911.terrain new file mode 100644 index 000000000..9e39c64ad Binary files /dev/null and b/public/terrain/19/858510/353911.terrain differ diff --git a/public/terrain/19/858510/353912.terrain b/public/terrain/19/858510/353912.terrain new file mode 100644 index 000000000..c51e5dcd4 Binary files /dev/null and b/public/terrain/19/858510/353912.terrain differ diff --git a/public/terrain/19/858510/353913.terrain b/public/terrain/19/858510/353913.terrain new file mode 100644 index 000000000..828217c5d Binary files /dev/null and b/public/terrain/19/858510/353913.terrain differ diff --git a/public/terrain/19/858510/353914.terrain b/public/terrain/19/858510/353914.terrain new file mode 100644 index 000000000..a1a05c001 Binary files /dev/null and b/public/terrain/19/858510/353914.terrain differ diff --git a/public/terrain/19/858510/353915.terrain b/public/terrain/19/858510/353915.terrain new file mode 100644 index 000000000..328e30903 Binary files /dev/null and b/public/terrain/19/858510/353915.terrain differ diff --git a/public/terrain/19/858510/353916.terrain b/public/terrain/19/858510/353916.terrain new file mode 100644 index 000000000..016d336b7 Binary files /dev/null and b/public/terrain/19/858510/353916.terrain differ diff --git a/public/terrain/19/858510/353917.terrain b/public/terrain/19/858510/353917.terrain new file mode 100644 index 000000000..931ba5425 Binary files /dev/null and b/public/terrain/19/858510/353917.terrain differ diff --git a/public/terrain/19/858510/353918.terrain b/public/terrain/19/858510/353918.terrain new file mode 100644 index 000000000..a05589955 Binary files /dev/null and b/public/terrain/19/858510/353918.terrain differ diff --git a/public/terrain/19/858510/353919.terrain b/public/terrain/19/858510/353919.terrain new file mode 100644 index 000000000..ade486838 Binary files /dev/null and b/public/terrain/19/858510/353919.terrain differ diff --git a/public/terrain/19/858510/353920.terrain b/public/terrain/19/858510/353920.terrain new file mode 100644 index 000000000..9d21faab2 Binary files /dev/null and b/public/terrain/19/858510/353920.terrain differ diff --git a/public/terrain/19/858510/353921.terrain b/public/terrain/19/858510/353921.terrain new file mode 100644 index 000000000..8cac77ae0 Binary files /dev/null and b/public/terrain/19/858510/353921.terrain differ diff --git a/public/terrain/19/858510/353922.terrain b/public/terrain/19/858510/353922.terrain new file mode 100644 index 000000000..a72300f9c Binary files /dev/null and b/public/terrain/19/858510/353922.terrain differ diff --git a/public/terrain/19/858510/353923.terrain b/public/terrain/19/858510/353923.terrain new file mode 100644 index 000000000..0a9509092 Binary files /dev/null and b/public/terrain/19/858510/353923.terrain differ diff --git a/public/terrain/19/858510/353924.terrain b/public/terrain/19/858510/353924.terrain new file mode 100644 index 000000000..b079d01a9 Binary files /dev/null and b/public/terrain/19/858510/353924.terrain differ diff --git a/public/terrain/19/858510/353925.terrain b/public/terrain/19/858510/353925.terrain new file mode 100644 index 000000000..f9d5f5b3f Binary files /dev/null and b/public/terrain/19/858510/353925.terrain differ diff --git a/public/terrain/19/858510/353926.terrain b/public/terrain/19/858510/353926.terrain new file mode 100644 index 000000000..bc4cb9dda Binary files /dev/null and b/public/terrain/19/858510/353926.terrain differ diff --git a/public/terrain/19/858510/353927.terrain b/public/terrain/19/858510/353927.terrain new file mode 100644 index 000000000..4a128a147 Binary files /dev/null and b/public/terrain/19/858510/353927.terrain differ diff --git a/public/terrain/19/858510/353928.terrain b/public/terrain/19/858510/353928.terrain new file mode 100644 index 000000000..de9c87a9b Binary files /dev/null and b/public/terrain/19/858510/353928.terrain differ diff --git a/public/terrain/19/858510/353929.terrain b/public/terrain/19/858510/353929.terrain new file mode 100644 index 000000000..b30fcd48b Binary files /dev/null and b/public/terrain/19/858510/353929.terrain differ diff --git a/public/terrain/19/858510/353930.terrain b/public/terrain/19/858510/353930.terrain new file mode 100644 index 000000000..1f426d59b Binary files /dev/null and b/public/terrain/19/858510/353930.terrain differ diff --git a/public/terrain/19/858510/353931.terrain b/public/terrain/19/858510/353931.terrain new file mode 100644 index 000000000..f610ee489 Binary files /dev/null and b/public/terrain/19/858510/353931.terrain differ diff --git a/public/terrain/19/858510/353932.terrain b/public/terrain/19/858510/353932.terrain new file mode 100644 index 000000000..bc7119d7b Binary files /dev/null and b/public/terrain/19/858510/353932.terrain differ diff --git a/public/terrain/19/858510/353933.terrain b/public/terrain/19/858510/353933.terrain new file mode 100644 index 000000000..1c1e01779 Binary files /dev/null and b/public/terrain/19/858510/353933.terrain differ diff --git a/public/terrain/19/858510/353934.terrain b/public/terrain/19/858510/353934.terrain new file mode 100644 index 000000000..a99b34896 Binary files /dev/null and b/public/terrain/19/858510/353934.terrain differ diff --git a/public/terrain/19/858510/353935.terrain b/public/terrain/19/858510/353935.terrain new file mode 100644 index 000000000..c100233b2 Binary files /dev/null and b/public/terrain/19/858510/353935.terrain differ diff --git a/public/terrain/19/858510/353936.terrain b/public/terrain/19/858510/353936.terrain new file mode 100644 index 000000000..8555de9f2 Binary files /dev/null and b/public/terrain/19/858510/353936.terrain differ diff --git a/public/terrain/19/858510/353937.terrain b/public/terrain/19/858510/353937.terrain new file mode 100644 index 000000000..6fa291c0b Binary files /dev/null and b/public/terrain/19/858510/353937.terrain differ diff --git a/public/terrain/19/858510/353938.terrain b/public/terrain/19/858510/353938.terrain new file mode 100644 index 000000000..f926802b7 Binary files /dev/null and b/public/terrain/19/858510/353938.terrain differ diff --git a/public/terrain/19/858510/353939.terrain b/public/terrain/19/858510/353939.terrain new file mode 100644 index 000000000..d788d9fef Binary files /dev/null and b/public/terrain/19/858510/353939.terrain differ diff --git a/public/terrain/19/858510/353940.terrain b/public/terrain/19/858510/353940.terrain new file mode 100644 index 000000000..1c7ddeb5d Binary files /dev/null and b/public/terrain/19/858510/353940.terrain differ diff --git a/public/terrain/19/858510/353941.terrain b/public/terrain/19/858510/353941.terrain new file mode 100644 index 000000000..73ee6a543 Binary files /dev/null and b/public/terrain/19/858510/353941.terrain differ diff --git a/public/terrain/19/858510/353942.terrain b/public/terrain/19/858510/353942.terrain new file mode 100644 index 000000000..5e9e6e632 Binary files /dev/null and b/public/terrain/19/858510/353942.terrain differ diff --git a/public/terrain/19/858510/353943.terrain b/public/terrain/19/858510/353943.terrain new file mode 100644 index 000000000..0598ee270 Binary files /dev/null and b/public/terrain/19/858510/353943.terrain differ diff --git a/public/terrain/19/858510/353944.terrain b/public/terrain/19/858510/353944.terrain new file mode 100644 index 000000000..2b4b0d10e Binary files /dev/null and b/public/terrain/19/858510/353944.terrain differ diff --git a/public/terrain/19/858510/353945.terrain b/public/terrain/19/858510/353945.terrain new file mode 100644 index 000000000..abda6f9f2 Binary files /dev/null and b/public/terrain/19/858510/353945.terrain differ diff --git a/public/terrain/19/858510/353946.terrain b/public/terrain/19/858510/353946.terrain new file mode 100644 index 000000000..e6ebc398d Binary files /dev/null and b/public/terrain/19/858510/353946.terrain differ diff --git a/public/terrain/19/858510/353947.terrain b/public/terrain/19/858510/353947.terrain new file mode 100644 index 000000000..38349375c Binary files /dev/null and b/public/terrain/19/858510/353947.terrain differ diff --git a/public/terrain/19/858510/353948.terrain b/public/terrain/19/858510/353948.terrain new file mode 100644 index 000000000..02aa19244 Binary files /dev/null and b/public/terrain/19/858510/353948.terrain differ diff --git a/public/terrain/19/858510/353949.terrain b/public/terrain/19/858510/353949.terrain new file mode 100644 index 000000000..6934a3991 Binary files /dev/null and b/public/terrain/19/858510/353949.terrain differ diff --git a/public/terrain/19/858510/353950.terrain b/public/terrain/19/858510/353950.terrain new file mode 100644 index 000000000..4263219a5 Binary files /dev/null and b/public/terrain/19/858510/353950.terrain differ diff --git a/public/terrain/19/858510/353951.terrain b/public/terrain/19/858510/353951.terrain new file mode 100644 index 000000000..70625dc01 Binary files /dev/null and b/public/terrain/19/858510/353951.terrain differ diff --git a/public/terrain/19/858510/353952.terrain b/public/terrain/19/858510/353952.terrain new file mode 100644 index 000000000..80b963cab Binary files /dev/null and b/public/terrain/19/858510/353952.terrain differ diff --git a/public/terrain/19/858510/353953.terrain b/public/terrain/19/858510/353953.terrain new file mode 100644 index 000000000..46a005452 Binary files /dev/null and b/public/terrain/19/858510/353953.terrain differ diff --git a/public/terrain/19/858510/353954.terrain b/public/terrain/19/858510/353954.terrain new file mode 100644 index 000000000..706fbf6d1 Binary files /dev/null and b/public/terrain/19/858510/353954.terrain differ diff --git a/public/terrain/19/858510/353955.terrain b/public/terrain/19/858510/353955.terrain new file mode 100644 index 000000000..6aa5660d0 Binary files /dev/null and b/public/terrain/19/858510/353955.terrain differ diff --git a/public/terrain/19/858510/353956.terrain b/public/terrain/19/858510/353956.terrain new file mode 100644 index 000000000..e6ae3b147 Binary files /dev/null and b/public/terrain/19/858510/353956.terrain differ diff --git a/public/terrain/19/858510/353957.terrain b/public/terrain/19/858510/353957.terrain new file mode 100644 index 000000000..11b720a81 Binary files /dev/null and b/public/terrain/19/858510/353957.terrain differ diff --git a/public/terrain/19/858510/353958.terrain b/public/terrain/19/858510/353958.terrain new file mode 100644 index 000000000..44e578769 Binary files /dev/null and b/public/terrain/19/858510/353958.terrain differ diff --git a/public/terrain/19/858510/353959.terrain b/public/terrain/19/858510/353959.terrain new file mode 100644 index 000000000..e00ce10de Binary files /dev/null and b/public/terrain/19/858510/353959.terrain differ diff --git a/public/terrain/19/858510/353960.terrain b/public/terrain/19/858510/353960.terrain new file mode 100644 index 000000000..1f597e6b4 Binary files /dev/null and b/public/terrain/19/858510/353960.terrain differ diff --git a/public/terrain/19/858510/353961.terrain b/public/terrain/19/858510/353961.terrain new file mode 100644 index 000000000..1dbe83cbb Binary files /dev/null and b/public/terrain/19/858510/353961.terrain differ diff --git a/public/terrain/19/858510/353962.terrain b/public/terrain/19/858510/353962.terrain new file mode 100644 index 000000000..ae0b309eb Binary files /dev/null and b/public/terrain/19/858510/353962.terrain differ diff --git a/public/terrain/19/858510/353963.terrain b/public/terrain/19/858510/353963.terrain new file mode 100644 index 000000000..88955b932 Binary files /dev/null and b/public/terrain/19/858510/353963.terrain differ diff --git a/public/terrain/19/858510/353964.terrain b/public/terrain/19/858510/353964.terrain new file mode 100644 index 000000000..7b18e5a0e Binary files /dev/null and b/public/terrain/19/858510/353964.terrain differ diff --git a/public/terrain/19/858510/353965.terrain b/public/terrain/19/858510/353965.terrain new file mode 100644 index 000000000..0f0f9d400 Binary files /dev/null and b/public/terrain/19/858510/353965.terrain differ diff --git a/public/terrain/19/858510/353966.terrain b/public/terrain/19/858510/353966.terrain new file mode 100644 index 000000000..bd2d9cb97 Binary files /dev/null and b/public/terrain/19/858510/353966.terrain differ diff --git a/public/terrain/19/858510/353967.terrain b/public/terrain/19/858510/353967.terrain new file mode 100644 index 000000000..b785c0ae3 Binary files /dev/null and b/public/terrain/19/858510/353967.terrain differ diff --git a/public/terrain/19/858510/353968.terrain b/public/terrain/19/858510/353968.terrain new file mode 100644 index 000000000..96ab78a87 Binary files /dev/null and b/public/terrain/19/858510/353968.terrain differ diff --git a/public/terrain/19/858510/353969.terrain b/public/terrain/19/858510/353969.terrain new file mode 100644 index 000000000..48e4ec100 Binary files /dev/null and b/public/terrain/19/858510/353969.terrain differ diff --git a/public/terrain/19/858510/353970.terrain b/public/terrain/19/858510/353970.terrain new file mode 100644 index 000000000..4c41a7910 Binary files /dev/null and b/public/terrain/19/858510/353970.terrain differ diff --git a/public/terrain/19/858510/353971.terrain b/public/terrain/19/858510/353971.terrain new file mode 100644 index 000000000..4f73d808d Binary files /dev/null and b/public/terrain/19/858510/353971.terrain differ diff --git a/public/terrain/19/858510/353972.terrain b/public/terrain/19/858510/353972.terrain new file mode 100644 index 000000000..4e2172c66 Binary files /dev/null and b/public/terrain/19/858510/353972.terrain differ diff --git a/public/terrain/19/858510/353973.terrain b/public/terrain/19/858510/353973.terrain new file mode 100644 index 000000000..e66b834fd Binary files /dev/null and b/public/terrain/19/858510/353973.terrain differ diff --git a/public/terrain/19/858510/353974.terrain b/public/terrain/19/858510/353974.terrain new file mode 100644 index 000000000..42e2b64f0 Binary files /dev/null and b/public/terrain/19/858510/353974.terrain differ diff --git a/public/terrain/19/858510/353975.terrain b/public/terrain/19/858510/353975.terrain new file mode 100644 index 000000000..ca645f32a Binary files /dev/null and b/public/terrain/19/858510/353975.terrain differ diff --git a/public/terrain/19/858510/353976.terrain b/public/terrain/19/858510/353976.terrain new file mode 100644 index 000000000..b4a14309e Binary files /dev/null and b/public/terrain/19/858510/353976.terrain differ diff --git a/public/terrain/19/858510/353977.terrain b/public/terrain/19/858510/353977.terrain new file mode 100644 index 000000000..1bbfb848b Binary files /dev/null and b/public/terrain/19/858510/353977.terrain differ diff --git a/public/terrain/19/858510/353978.terrain b/public/terrain/19/858510/353978.terrain new file mode 100644 index 000000000..40218eb5a Binary files /dev/null and b/public/terrain/19/858510/353978.terrain differ diff --git a/public/terrain/19/858510/353979.terrain b/public/terrain/19/858510/353979.terrain new file mode 100644 index 000000000..4c3be8856 Binary files /dev/null and b/public/terrain/19/858510/353979.terrain differ diff --git a/public/terrain/19/858510/353980.terrain b/public/terrain/19/858510/353980.terrain new file mode 100644 index 000000000..088c53943 Binary files /dev/null and b/public/terrain/19/858510/353980.terrain differ diff --git a/public/terrain/19/858510/353981.terrain b/public/terrain/19/858510/353981.terrain new file mode 100644 index 000000000..10723ad67 Binary files /dev/null and b/public/terrain/19/858510/353981.terrain differ diff --git a/public/terrain/19/858510/353982.terrain b/public/terrain/19/858510/353982.terrain new file mode 100644 index 000000000..45a295567 Binary files /dev/null and b/public/terrain/19/858510/353982.terrain differ diff --git a/public/terrain/19/858510/353983.terrain b/public/terrain/19/858510/353983.terrain new file mode 100644 index 000000000..315001507 Binary files /dev/null and b/public/terrain/19/858510/353983.terrain differ diff --git a/public/terrain/19/858510/353984.terrain b/public/terrain/19/858510/353984.terrain new file mode 100644 index 000000000..09ecca1a1 Binary files /dev/null and b/public/terrain/19/858510/353984.terrain differ diff --git a/public/terrain/19/858510/353985.terrain b/public/terrain/19/858510/353985.terrain new file mode 100644 index 000000000..8fc465ece Binary files /dev/null and b/public/terrain/19/858510/353985.terrain differ diff --git a/public/terrain/19/858510/353986.terrain b/public/terrain/19/858510/353986.terrain new file mode 100644 index 000000000..b55a4f92b Binary files /dev/null and b/public/terrain/19/858510/353986.terrain differ diff --git a/public/terrain/19/858510/353987.terrain b/public/terrain/19/858510/353987.terrain new file mode 100644 index 000000000..7fb63dc9c Binary files /dev/null and b/public/terrain/19/858510/353987.terrain differ diff --git a/public/terrain/19/858510/353988.terrain b/public/terrain/19/858510/353988.terrain new file mode 100644 index 000000000..22541f455 Binary files /dev/null and b/public/terrain/19/858510/353988.terrain differ diff --git a/public/terrain/19/858510/353989.terrain b/public/terrain/19/858510/353989.terrain new file mode 100644 index 000000000..edb628563 Binary files /dev/null and b/public/terrain/19/858510/353989.terrain differ diff --git a/public/terrain/19/858510/353990.terrain b/public/terrain/19/858510/353990.terrain new file mode 100644 index 000000000..23af57fa7 Binary files /dev/null and b/public/terrain/19/858510/353990.terrain differ diff --git a/public/terrain/19/858510/353991.terrain b/public/terrain/19/858510/353991.terrain new file mode 100644 index 000000000..33d227afa Binary files /dev/null and b/public/terrain/19/858510/353991.terrain differ diff --git a/public/terrain/19/858510/353992.terrain b/public/terrain/19/858510/353992.terrain new file mode 100644 index 000000000..ff596aa08 Binary files /dev/null and b/public/terrain/19/858510/353992.terrain differ diff --git a/public/terrain/19/858510/353993.terrain b/public/terrain/19/858510/353993.terrain new file mode 100644 index 000000000..9a29fa623 Binary files /dev/null and b/public/terrain/19/858510/353993.terrain differ diff --git a/public/terrain/19/858510/353994.terrain b/public/terrain/19/858510/353994.terrain new file mode 100644 index 000000000..5dbe810cb Binary files /dev/null and b/public/terrain/19/858510/353994.terrain differ diff --git a/public/terrain/19/858510/353995.terrain b/public/terrain/19/858510/353995.terrain new file mode 100644 index 000000000..54b71c90c Binary files /dev/null and b/public/terrain/19/858510/353995.terrain differ diff --git a/public/terrain/19/858510/353996.terrain b/public/terrain/19/858510/353996.terrain new file mode 100644 index 000000000..aab8aa5c1 Binary files /dev/null and b/public/terrain/19/858510/353996.terrain differ diff --git a/public/terrain/19/858510/353997.terrain b/public/terrain/19/858510/353997.terrain new file mode 100644 index 000000000..73cee9d6d Binary files /dev/null and b/public/terrain/19/858510/353997.terrain differ diff --git a/public/terrain/19/858510/353998.terrain b/public/terrain/19/858510/353998.terrain new file mode 100644 index 000000000..21dc37fa2 Binary files /dev/null and b/public/terrain/19/858510/353998.terrain differ diff --git a/public/terrain/19/858510/353999.terrain b/public/terrain/19/858510/353999.terrain new file mode 100644 index 000000000..c55296eca Binary files /dev/null and b/public/terrain/19/858510/353999.terrain differ diff --git a/public/terrain/19/858510/354000.terrain b/public/terrain/19/858510/354000.terrain new file mode 100644 index 000000000..bcb96729f Binary files /dev/null and b/public/terrain/19/858510/354000.terrain differ diff --git a/public/terrain/19/858510/354001.terrain b/public/terrain/19/858510/354001.terrain new file mode 100644 index 000000000..fe8f6f1eb Binary files /dev/null and b/public/terrain/19/858510/354001.terrain differ diff --git a/public/terrain/19/858510/354002.terrain b/public/terrain/19/858510/354002.terrain new file mode 100644 index 000000000..3e2c5adde Binary files /dev/null and b/public/terrain/19/858510/354002.terrain differ diff --git a/public/terrain/19/858510/354003.terrain b/public/terrain/19/858510/354003.terrain new file mode 100644 index 000000000..94ebe3a3f Binary files /dev/null and b/public/terrain/19/858510/354003.terrain differ diff --git a/public/terrain/19/858510/354004.terrain b/public/terrain/19/858510/354004.terrain new file mode 100644 index 000000000..61c618127 Binary files /dev/null and b/public/terrain/19/858510/354004.terrain differ diff --git a/public/terrain/19/858510/354005.terrain b/public/terrain/19/858510/354005.terrain new file mode 100644 index 000000000..2e6785463 Binary files /dev/null and b/public/terrain/19/858510/354005.terrain differ diff --git a/public/terrain/19/858510/354006.terrain b/public/terrain/19/858510/354006.terrain new file mode 100644 index 000000000..ba39e7530 Binary files /dev/null and b/public/terrain/19/858510/354006.terrain differ diff --git a/public/terrain/19/858510/354007.terrain b/public/terrain/19/858510/354007.terrain new file mode 100644 index 000000000..2ac585dd2 Binary files /dev/null and b/public/terrain/19/858510/354007.terrain differ diff --git a/public/terrain/19/858510/354008.terrain b/public/terrain/19/858510/354008.terrain new file mode 100644 index 000000000..27699cf97 Binary files /dev/null and b/public/terrain/19/858510/354008.terrain differ diff --git a/public/terrain/19/858510/354009.terrain b/public/terrain/19/858510/354009.terrain new file mode 100644 index 000000000..a4f937220 Binary files /dev/null and b/public/terrain/19/858510/354009.terrain differ diff --git a/public/terrain/19/858510/354010.terrain b/public/terrain/19/858510/354010.terrain new file mode 100644 index 000000000..ffd8dbc2c Binary files /dev/null and b/public/terrain/19/858510/354010.terrain differ diff --git a/public/terrain/19/858510/354011.terrain b/public/terrain/19/858510/354011.terrain new file mode 100644 index 000000000..50fa1f270 Binary files /dev/null and b/public/terrain/19/858510/354011.terrain differ diff --git a/public/terrain/19/858510/354012.terrain b/public/terrain/19/858510/354012.terrain new file mode 100644 index 000000000..e8ee46bcf Binary files /dev/null and b/public/terrain/19/858510/354012.terrain differ diff --git a/public/terrain/19/858510/354013.terrain b/public/terrain/19/858510/354013.terrain new file mode 100644 index 000000000..8626415e5 Binary files /dev/null and b/public/terrain/19/858510/354013.terrain differ diff --git a/public/terrain/19/858510/354014.terrain b/public/terrain/19/858510/354014.terrain new file mode 100644 index 000000000..5f59417ae Binary files /dev/null and b/public/terrain/19/858510/354014.terrain differ diff --git a/public/terrain/19/858510/354015.terrain b/public/terrain/19/858510/354015.terrain new file mode 100644 index 000000000..fd5815d93 Binary files /dev/null and b/public/terrain/19/858510/354015.terrain differ diff --git a/public/terrain/19/858510/354016.terrain b/public/terrain/19/858510/354016.terrain new file mode 100644 index 000000000..cbf3eccd0 Binary files /dev/null and b/public/terrain/19/858510/354016.terrain differ diff --git a/public/terrain/19/858510/354017.terrain b/public/terrain/19/858510/354017.terrain new file mode 100644 index 000000000..3be97e99e Binary files /dev/null and b/public/terrain/19/858510/354017.terrain differ diff --git a/public/terrain/19/858510/354018.terrain b/public/terrain/19/858510/354018.terrain new file mode 100644 index 000000000..72160656d Binary files /dev/null and b/public/terrain/19/858510/354018.terrain differ diff --git a/public/terrain/19/858510/354019.terrain b/public/terrain/19/858510/354019.terrain new file mode 100644 index 000000000..5fcf3130c Binary files /dev/null and b/public/terrain/19/858510/354019.terrain differ diff --git a/public/terrain/19/858510/354020.terrain b/public/terrain/19/858510/354020.terrain new file mode 100644 index 000000000..266345de2 Binary files /dev/null and b/public/terrain/19/858510/354020.terrain differ diff --git a/public/terrain/19/858510/354021.terrain b/public/terrain/19/858510/354021.terrain new file mode 100644 index 000000000..18dfd4b70 Binary files /dev/null and b/public/terrain/19/858510/354021.terrain differ diff --git a/public/terrain/19/858510/354022.terrain b/public/terrain/19/858510/354022.terrain new file mode 100644 index 000000000..4f49c7447 Binary files /dev/null and b/public/terrain/19/858510/354022.terrain differ diff --git a/public/terrain/19/858510/354023.terrain b/public/terrain/19/858510/354023.terrain new file mode 100644 index 000000000..b45ec1c57 Binary files /dev/null and b/public/terrain/19/858510/354023.terrain differ diff --git a/public/terrain/19/858510/354024.terrain b/public/terrain/19/858510/354024.terrain new file mode 100644 index 000000000..b04ad0138 Binary files /dev/null and b/public/terrain/19/858510/354024.terrain differ diff --git a/public/terrain/19/858510/354025.terrain b/public/terrain/19/858510/354025.terrain new file mode 100644 index 000000000..11a2110af Binary files /dev/null and b/public/terrain/19/858510/354025.terrain differ diff --git a/public/terrain/19/858510/354026.terrain b/public/terrain/19/858510/354026.terrain new file mode 100644 index 000000000..4dcecab56 Binary files /dev/null and b/public/terrain/19/858510/354026.terrain differ diff --git a/public/terrain/19/858510/354027.terrain b/public/terrain/19/858510/354027.terrain new file mode 100644 index 000000000..509ccd0e2 Binary files /dev/null and b/public/terrain/19/858510/354027.terrain differ diff --git a/public/terrain/19/858510/354028.terrain b/public/terrain/19/858510/354028.terrain new file mode 100644 index 000000000..3eca4a4a6 Binary files /dev/null and b/public/terrain/19/858510/354028.terrain differ diff --git a/public/terrain/19/858510/354029.terrain b/public/terrain/19/858510/354029.terrain new file mode 100644 index 000000000..97ea84dde Binary files /dev/null and b/public/terrain/19/858510/354029.terrain differ diff --git a/public/terrain/19/858510/354030.terrain b/public/terrain/19/858510/354030.terrain new file mode 100644 index 000000000..9f6c2e83e Binary files /dev/null and b/public/terrain/19/858510/354030.terrain differ diff --git a/public/terrain/19/858510/354031.terrain b/public/terrain/19/858510/354031.terrain new file mode 100644 index 000000000..b2f864abf Binary files /dev/null and b/public/terrain/19/858510/354031.terrain differ diff --git a/public/terrain/19/858510/354032.terrain b/public/terrain/19/858510/354032.terrain new file mode 100644 index 000000000..d9054e526 Binary files /dev/null and b/public/terrain/19/858510/354032.terrain differ diff --git a/public/terrain/19/858510/354033.terrain b/public/terrain/19/858510/354033.terrain new file mode 100644 index 000000000..8ad4598fa Binary files /dev/null and b/public/terrain/19/858510/354033.terrain differ diff --git a/public/terrain/19/858510/354034.terrain b/public/terrain/19/858510/354034.terrain new file mode 100644 index 000000000..382d7bb6c Binary files /dev/null and b/public/terrain/19/858510/354034.terrain differ diff --git a/public/terrain/19/858510/354035.terrain b/public/terrain/19/858510/354035.terrain new file mode 100644 index 000000000..a736224c1 Binary files /dev/null and b/public/terrain/19/858510/354035.terrain differ diff --git a/public/terrain/19/858510/354036.terrain b/public/terrain/19/858510/354036.terrain new file mode 100644 index 000000000..fb466f8af Binary files /dev/null and b/public/terrain/19/858510/354036.terrain differ diff --git a/public/terrain/19/858510/354037.terrain b/public/terrain/19/858510/354037.terrain new file mode 100644 index 000000000..44fc19214 Binary files /dev/null and b/public/terrain/19/858510/354037.terrain differ diff --git a/public/terrain/19/858510/354038.terrain b/public/terrain/19/858510/354038.terrain new file mode 100644 index 000000000..ffe09135f Binary files /dev/null and b/public/terrain/19/858510/354038.terrain differ diff --git a/public/terrain/19/858510/354039.terrain b/public/terrain/19/858510/354039.terrain new file mode 100644 index 000000000..e86381547 Binary files /dev/null and b/public/terrain/19/858510/354039.terrain differ diff --git a/public/terrain/19/858510/354040.terrain b/public/terrain/19/858510/354040.terrain new file mode 100644 index 000000000..48dd4ae15 Binary files /dev/null and b/public/terrain/19/858510/354040.terrain differ diff --git a/public/terrain/19/858510/354041.terrain b/public/terrain/19/858510/354041.terrain new file mode 100644 index 000000000..a688aecb6 Binary files /dev/null and b/public/terrain/19/858510/354041.terrain differ diff --git a/public/terrain/19/858510/354042.terrain b/public/terrain/19/858510/354042.terrain new file mode 100644 index 000000000..6bb44d675 Binary files /dev/null and b/public/terrain/19/858510/354042.terrain differ diff --git a/public/terrain/19/858510/354043.terrain b/public/terrain/19/858510/354043.terrain new file mode 100644 index 000000000..896148d55 Binary files /dev/null and b/public/terrain/19/858510/354043.terrain differ diff --git a/public/terrain/19/858510/354044.terrain b/public/terrain/19/858510/354044.terrain new file mode 100644 index 000000000..b7c6a65e4 Binary files /dev/null and b/public/terrain/19/858510/354044.terrain differ diff --git a/public/terrain/19/858510/354045.terrain b/public/terrain/19/858510/354045.terrain new file mode 100644 index 000000000..754c6802f Binary files /dev/null and b/public/terrain/19/858510/354045.terrain differ diff --git a/public/terrain/19/858510/354046.terrain b/public/terrain/19/858510/354046.terrain new file mode 100644 index 000000000..ecce96965 Binary files /dev/null and b/public/terrain/19/858510/354046.terrain differ diff --git a/public/terrain/19/858510/354047.terrain b/public/terrain/19/858510/354047.terrain new file mode 100644 index 000000000..915c8220b Binary files /dev/null and b/public/terrain/19/858510/354047.terrain differ diff --git a/public/terrain/19/858510/354048.terrain b/public/terrain/19/858510/354048.terrain new file mode 100644 index 000000000..bc730edc3 Binary files /dev/null and b/public/terrain/19/858510/354048.terrain differ diff --git a/public/terrain/19/858510/354049.terrain b/public/terrain/19/858510/354049.terrain new file mode 100644 index 000000000..103d63b84 Binary files /dev/null and b/public/terrain/19/858510/354049.terrain differ diff --git a/public/terrain/19/858510/354050.terrain b/public/terrain/19/858510/354050.terrain new file mode 100644 index 000000000..6928d03f2 Binary files /dev/null and b/public/terrain/19/858510/354050.terrain differ diff --git a/public/terrain/19/858510/354051.terrain b/public/terrain/19/858510/354051.terrain new file mode 100644 index 000000000..06f74d63c Binary files /dev/null and b/public/terrain/19/858510/354051.terrain differ diff --git a/public/terrain/19/858510/354052.terrain b/public/terrain/19/858510/354052.terrain new file mode 100644 index 000000000..c79bcc262 Binary files /dev/null and b/public/terrain/19/858510/354052.terrain differ diff --git a/public/terrain/19/858510/354053.terrain b/public/terrain/19/858510/354053.terrain new file mode 100644 index 000000000..e0580669d Binary files /dev/null and b/public/terrain/19/858510/354053.terrain differ diff --git a/public/terrain/19/858510/354054.terrain b/public/terrain/19/858510/354054.terrain new file mode 100644 index 000000000..50762db7e Binary files /dev/null and b/public/terrain/19/858510/354054.terrain differ diff --git a/public/terrain/19/858510/354055.terrain b/public/terrain/19/858510/354055.terrain new file mode 100644 index 000000000..8f397d1b5 Binary files /dev/null and b/public/terrain/19/858510/354055.terrain differ diff --git a/public/terrain/19/858510/354056.terrain b/public/terrain/19/858510/354056.terrain new file mode 100644 index 000000000..79509d65d Binary files /dev/null and b/public/terrain/19/858510/354056.terrain differ diff --git a/public/terrain/19/858510/354057.terrain b/public/terrain/19/858510/354057.terrain new file mode 100644 index 000000000..3d005b290 Binary files /dev/null and b/public/terrain/19/858510/354057.terrain differ diff --git a/public/terrain/19/858510/354058.terrain b/public/terrain/19/858510/354058.terrain new file mode 100644 index 000000000..a8d3cc872 Binary files /dev/null and b/public/terrain/19/858510/354058.terrain differ diff --git a/public/terrain/19/858510/354059.terrain b/public/terrain/19/858510/354059.terrain new file mode 100644 index 000000000..3daaccd9f Binary files /dev/null and b/public/terrain/19/858510/354059.terrain differ diff --git a/public/terrain/19/858511/353743.terrain b/public/terrain/19/858511/353743.terrain new file mode 100644 index 000000000..b422414a4 Binary files /dev/null and b/public/terrain/19/858511/353743.terrain differ diff --git a/public/terrain/19/858511/353744.terrain b/public/terrain/19/858511/353744.terrain new file mode 100644 index 000000000..549cce989 Binary files /dev/null and b/public/terrain/19/858511/353744.terrain differ diff --git a/public/terrain/19/858511/353745.terrain b/public/terrain/19/858511/353745.terrain new file mode 100644 index 000000000..9b1239953 Binary files /dev/null and b/public/terrain/19/858511/353745.terrain differ diff --git a/public/terrain/19/858511/353746.terrain b/public/terrain/19/858511/353746.terrain new file mode 100644 index 000000000..036d42389 Binary files /dev/null and b/public/terrain/19/858511/353746.terrain differ diff --git a/public/terrain/19/858511/353747.terrain b/public/terrain/19/858511/353747.terrain new file mode 100644 index 000000000..8f58c0a62 Binary files /dev/null and b/public/terrain/19/858511/353747.terrain differ diff --git a/public/terrain/19/858511/353748.terrain b/public/terrain/19/858511/353748.terrain new file mode 100644 index 000000000..769e8cad2 Binary files /dev/null and b/public/terrain/19/858511/353748.terrain differ diff --git a/public/terrain/19/858511/353749.terrain b/public/terrain/19/858511/353749.terrain new file mode 100644 index 000000000..9dcc0a4ac Binary files /dev/null and b/public/terrain/19/858511/353749.terrain differ diff --git a/public/terrain/19/858511/353750.terrain b/public/terrain/19/858511/353750.terrain new file mode 100644 index 000000000..96a11cee1 Binary files /dev/null and b/public/terrain/19/858511/353750.terrain differ diff --git a/public/terrain/19/858511/353751.terrain b/public/terrain/19/858511/353751.terrain new file mode 100644 index 000000000..cb88500f0 Binary files /dev/null and b/public/terrain/19/858511/353751.terrain differ diff --git a/public/terrain/19/858511/353752.terrain b/public/terrain/19/858511/353752.terrain new file mode 100644 index 000000000..a3b01e30f Binary files /dev/null and b/public/terrain/19/858511/353752.terrain differ diff --git a/public/terrain/19/858511/353753.terrain b/public/terrain/19/858511/353753.terrain new file mode 100644 index 000000000..be7f0b376 Binary files /dev/null and b/public/terrain/19/858511/353753.terrain differ diff --git a/public/terrain/19/858511/353754.terrain b/public/terrain/19/858511/353754.terrain new file mode 100644 index 000000000..fddb004e2 Binary files /dev/null and b/public/terrain/19/858511/353754.terrain differ diff --git a/public/terrain/19/858511/353755.terrain b/public/terrain/19/858511/353755.terrain new file mode 100644 index 000000000..dafc41b3b Binary files /dev/null and b/public/terrain/19/858511/353755.terrain differ diff --git a/public/terrain/19/858511/353756.terrain b/public/terrain/19/858511/353756.terrain new file mode 100644 index 000000000..418fc16ae Binary files /dev/null and b/public/terrain/19/858511/353756.terrain differ diff --git a/public/terrain/19/858511/353757.terrain b/public/terrain/19/858511/353757.terrain new file mode 100644 index 000000000..2b0b397f2 Binary files /dev/null and b/public/terrain/19/858511/353757.terrain differ diff --git a/public/terrain/19/858511/353758.terrain b/public/terrain/19/858511/353758.terrain new file mode 100644 index 000000000..c4f968acd Binary files /dev/null and b/public/terrain/19/858511/353758.terrain differ diff --git a/public/terrain/19/858511/353759.terrain b/public/terrain/19/858511/353759.terrain new file mode 100644 index 000000000..b52b667d5 Binary files /dev/null and b/public/terrain/19/858511/353759.terrain differ diff --git a/public/terrain/19/858511/353760.terrain b/public/terrain/19/858511/353760.terrain new file mode 100644 index 000000000..8856bc42e Binary files /dev/null and b/public/terrain/19/858511/353760.terrain differ diff --git a/public/terrain/19/858511/353761.terrain b/public/terrain/19/858511/353761.terrain new file mode 100644 index 000000000..3157b2f28 Binary files /dev/null and b/public/terrain/19/858511/353761.terrain differ diff --git a/public/terrain/19/858511/353762.terrain b/public/terrain/19/858511/353762.terrain new file mode 100644 index 000000000..416ed927c Binary files /dev/null and b/public/terrain/19/858511/353762.terrain differ diff --git a/public/terrain/19/858511/353763.terrain b/public/terrain/19/858511/353763.terrain new file mode 100644 index 000000000..48b208a0e Binary files /dev/null and b/public/terrain/19/858511/353763.terrain differ diff --git a/public/terrain/19/858511/353764.terrain b/public/terrain/19/858511/353764.terrain new file mode 100644 index 000000000..cf13bd930 Binary files /dev/null and b/public/terrain/19/858511/353764.terrain differ diff --git a/public/terrain/19/858511/353765.terrain b/public/terrain/19/858511/353765.terrain new file mode 100644 index 000000000..b5442b18a Binary files /dev/null and b/public/terrain/19/858511/353765.terrain differ diff --git a/public/terrain/19/858511/353766.terrain b/public/terrain/19/858511/353766.terrain new file mode 100644 index 000000000..b9b0474a8 Binary files /dev/null and b/public/terrain/19/858511/353766.terrain differ diff --git a/public/terrain/19/858511/353767.terrain b/public/terrain/19/858511/353767.terrain new file mode 100644 index 000000000..aebd9ac61 Binary files /dev/null and b/public/terrain/19/858511/353767.terrain differ diff --git a/public/terrain/19/858511/353768.terrain b/public/terrain/19/858511/353768.terrain new file mode 100644 index 000000000..a162bb4f9 Binary files /dev/null and b/public/terrain/19/858511/353768.terrain differ diff --git a/public/terrain/19/858511/353769.terrain b/public/terrain/19/858511/353769.terrain new file mode 100644 index 000000000..af8797ddc Binary files /dev/null and b/public/terrain/19/858511/353769.terrain differ diff --git a/public/terrain/19/858511/353770.terrain b/public/terrain/19/858511/353770.terrain new file mode 100644 index 000000000..9ca58e5bc Binary files /dev/null and b/public/terrain/19/858511/353770.terrain differ diff --git a/public/terrain/19/858511/353771.terrain b/public/terrain/19/858511/353771.terrain new file mode 100644 index 000000000..852a9d2da Binary files /dev/null and b/public/terrain/19/858511/353771.terrain differ diff --git a/public/terrain/19/858511/353772.terrain b/public/terrain/19/858511/353772.terrain new file mode 100644 index 000000000..b0dc6023d Binary files /dev/null and b/public/terrain/19/858511/353772.terrain differ diff --git a/public/terrain/19/858511/353773.terrain b/public/terrain/19/858511/353773.terrain new file mode 100644 index 000000000..5b068219c Binary files /dev/null and b/public/terrain/19/858511/353773.terrain differ diff --git a/public/terrain/19/858511/353774.terrain b/public/terrain/19/858511/353774.terrain new file mode 100644 index 000000000..fb5e79182 Binary files /dev/null and b/public/terrain/19/858511/353774.terrain differ diff --git a/public/terrain/19/858511/353775.terrain b/public/terrain/19/858511/353775.terrain new file mode 100644 index 000000000..82fe327d7 Binary files /dev/null and b/public/terrain/19/858511/353775.terrain differ diff --git a/public/terrain/19/858511/353776.terrain b/public/terrain/19/858511/353776.terrain new file mode 100644 index 000000000..5c2c4ee52 Binary files /dev/null and b/public/terrain/19/858511/353776.terrain differ diff --git a/public/terrain/19/858511/353777.terrain b/public/terrain/19/858511/353777.terrain new file mode 100644 index 000000000..94fb4959c Binary files /dev/null and b/public/terrain/19/858511/353777.terrain differ diff --git a/public/terrain/19/858511/353778.terrain b/public/terrain/19/858511/353778.terrain new file mode 100644 index 000000000..970c7f356 Binary files /dev/null and b/public/terrain/19/858511/353778.terrain differ diff --git a/public/terrain/19/858511/353779.terrain b/public/terrain/19/858511/353779.terrain new file mode 100644 index 000000000..56c7cccd7 Binary files /dev/null and b/public/terrain/19/858511/353779.terrain differ diff --git a/public/terrain/19/858511/353780.terrain b/public/terrain/19/858511/353780.terrain new file mode 100644 index 000000000..c8640c3d0 Binary files /dev/null and b/public/terrain/19/858511/353780.terrain differ diff --git a/public/terrain/19/858511/353781.terrain b/public/terrain/19/858511/353781.terrain new file mode 100644 index 000000000..2414d16c3 Binary files /dev/null and b/public/terrain/19/858511/353781.terrain differ diff --git a/public/terrain/19/858511/353782.terrain b/public/terrain/19/858511/353782.terrain new file mode 100644 index 000000000..551c976e5 Binary files /dev/null and b/public/terrain/19/858511/353782.terrain differ diff --git a/public/terrain/19/858511/353783.terrain b/public/terrain/19/858511/353783.terrain new file mode 100644 index 000000000..67bad53e3 Binary files /dev/null and b/public/terrain/19/858511/353783.terrain differ diff --git a/public/terrain/19/858511/353784.terrain b/public/terrain/19/858511/353784.terrain new file mode 100644 index 000000000..283f137f6 Binary files /dev/null and b/public/terrain/19/858511/353784.terrain differ diff --git a/public/terrain/19/858511/353785.terrain b/public/terrain/19/858511/353785.terrain new file mode 100644 index 000000000..23d1c5ab5 Binary files /dev/null and b/public/terrain/19/858511/353785.terrain differ diff --git a/public/terrain/19/858511/353786.terrain b/public/terrain/19/858511/353786.terrain new file mode 100644 index 000000000..96d84c22b Binary files /dev/null and b/public/terrain/19/858511/353786.terrain differ diff --git a/public/terrain/19/858511/353787.terrain b/public/terrain/19/858511/353787.terrain new file mode 100644 index 000000000..67b69b9cb Binary files /dev/null and b/public/terrain/19/858511/353787.terrain differ diff --git a/public/terrain/19/858511/353788.terrain b/public/terrain/19/858511/353788.terrain new file mode 100644 index 000000000..41b314e44 Binary files /dev/null and b/public/terrain/19/858511/353788.terrain differ diff --git a/public/terrain/19/858511/353789.terrain b/public/terrain/19/858511/353789.terrain new file mode 100644 index 000000000..71efc9a19 Binary files /dev/null and b/public/terrain/19/858511/353789.terrain differ diff --git a/public/terrain/19/858511/353790.terrain b/public/terrain/19/858511/353790.terrain new file mode 100644 index 000000000..d27399c4c Binary files /dev/null and b/public/terrain/19/858511/353790.terrain differ diff --git a/public/terrain/19/858511/353791.terrain b/public/terrain/19/858511/353791.terrain new file mode 100644 index 000000000..a071ee7d7 Binary files /dev/null and b/public/terrain/19/858511/353791.terrain differ diff --git a/public/terrain/19/858511/353792.terrain b/public/terrain/19/858511/353792.terrain new file mode 100644 index 000000000..5b293811a Binary files /dev/null and b/public/terrain/19/858511/353792.terrain differ diff --git a/public/terrain/19/858511/353793.terrain b/public/terrain/19/858511/353793.terrain new file mode 100644 index 000000000..1ebf6e6dd Binary files /dev/null and b/public/terrain/19/858511/353793.terrain differ diff --git a/public/terrain/19/858511/353794.terrain b/public/terrain/19/858511/353794.terrain new file mode 100644 index 000000000..75caa7783 Binary files /dev/null and b/public/terrain/19/858511/353794.terrain differ diff --git a/public/terrain/19/858511/353795.terrain b/public/terrain/19/858511/353795.terrain new file mode 100644 index 000000000..15c6dfef8 Binary files /dev/null and b/public/terrain/19/858511/353795.terrain differ diff --git a/public/terrain/19/858511/353796.terrain b/public/terrain/19/858511/353796.terrain new file mode 100644 index 000000000..4cd5a4662 Binary files /dev/null and b/public/terrain/19/858511/353796.terrain differ diff --git a/public/terrain/19/858511/353797.terrain b/public/terrain/19/858511/353797.terrain new file mode 100644 index 000000000..d7a24c0b6 Binary files /dev/null and b/public/terrain/19/858511/353797.terrain differ diff --git a/public/terrain/19/858511/353798.terrain b/public/terrain/19/858511/353798.terrain new file mode 100644 index 000000000..c703424d5 Binary files /dev/null and b/public/terrain/19/858511/353798.terrain differ diff --git a/public/terrain/19/858511/353799.terrain b/public/terrain/19/858511/353799.terrain new file mode 100644 index 000000000..619f233e4 Binary files /dev/null and b/public/terrain/19/858511/353799.terrain differ diff --git a/public/terrain/19/858511/353800.terrain b/public/terrain/19/858511/353800.terrain new file mode 100644 index 000000000..a8454f893 Binary files /dev/null and b/public/terrain/19/858511/353800.terrain differ diff --git a/public/terrain/19/858511/353801.terrain b/public/terrain/19/858511/353801.terrain new file mode 100644 index 000000000..fe69b1983 Binary files /dev/null and b/public/terrain/19/858511/353801.terrain differ diff --git a/public/terrain/19/858511/353802.terrain b/public/terrain/19/858511/353802.terrain new file mode 100644 index 000000000..b99269bfb Binary files /dev/null and b/public/terrain/19/858511/353802.terrain differ diff --git a/public/terrain/19/858511/353803.terrain b/public/terrain/19/858511/353803.terrain new file mode 100644 index 000000000..caa43f7f9 Binary files /dev/null and b/public/terrain/19/858511/353803.terrain differ diff --git a/public/terrain/19/858511/353804.terrain b/public/terrain/19/858511/353804.terrain new file mode 100644 index 000000000..4c04920a7 Binary files /dev/null and b/public/terrain/19/858511/353804.terrain differ diff --git a/public/terrain/19/858511/353805.terrain b/public/terrain/19/858511/353805.terrain new file mode 100644 index 000000000..451986197 Binary files /dev/null and b/public/terrain/19/858511/353805.terrain differ diff --git a/public/terrain/19/858511/353806.terrain b/public/terrain/19/858511/353806.terrain new file mode 100644 index 000000000..89fa10f23 Binary files /dev/null and b/public/terrain/19/858511/353806.terrain differ diff --git a/public/terrain/19/858511/353807.terrain b/public/terrain/19/858511/353807.terrain new file mode 100644 index 000000000..6950498a3 Binary files /dev/null and b/public/terrain/19/858511/353807.terrain differ diff --git a/public/terrain/19/858511/353808.terrain b/public/terrain/19/858511/353808.terrain new file mode 100644 index 000000000..530614b40 Binary files /dev/null and b/public/terrain/19/858511/353808.terrain differ diff --git a/public/terrain/19/858511/353809.terrain b/public/terrain/19/858511/353809.terrain new file mode 100644 index 000000000..54d10bcbd Binary files /dev/null and b/public/terrain/19/858511/353809.terrain differ diff --git a/public/terrain/19/858511/353810.terrain b/public/terrain/19/858511/353810.terrain new file mode 100644 index 000000000..159ad7e6a Binary files /dev/null and b/public/terrain/19/858511/353810.terrain differ diff --git a/public/terrain/19/858511/353811.terrain b/public/terrain/19/858511/353811.terrain new file mode 100644 index 000000000..75f220088 Binary files /dev/null and b/public/terrain/19/858511/353811.terrain differ diff --git a/public/terrain/19/858511/353812.terrain b/public/terrain/19/858511/353812.terrain new file mode 100644 index 000000000..d84b30238 Binary files /dev/null and b/public/terrain/19/858511/353812.terrain differ diff --git a/public/terrain/19/858511/353813.terrain b/public/terrain/19/858511/353813.terrain new file mode 100644 index 000000000..08922c0ce Binary files /dev/null and b/public/terrain/19/858511/353813.terrain differ diff --git a/public/terrain/19/858511/353814.terrain b/public/terrain/19/858511/353814.terrain new file mode 100644 index 000000000..1f6d838b2 Binary files /dev/null and b/public/terrain/19/858511/353814.terrain differ diff --git a/public/terrain/19/858511/353815.terrain b/public/terrain/19/858511/353815.terrain new file mode 100644 index 000000000..7d9ace6aa Binary files /dev/null and b/public/terrain/19/858511/353815.terrain differ diff --git a/public/terrain/19/858511/353816.terrain b/public/terrain/19/858511/353816.terrain new file mode 100644 index 000000000..0332cc184 Binary files /dev/null and b/public/terrain/19/858511/353816.terrain differ diff --git a/public/terrain/19/858511/353817.terrain b/public/terrain/19/858511/353817.terrain new file mode 100644 index 000000000..840611538 Binary files /dev/null and b/public/terrain/19/858511/353817.terrain differ diff --git a/public/terrain/19/858511/353818.terrain b/public/terrain/19/858511/353818.terrain new file mode 100644 index 000000000..7849cd18e Binary files /dev/null and b/public/terrain/19/858511/353818.terrain differ diff --git a/public/terrain/19/858511/353819.terrain b/public/terrain/19/858511/353819.terrain new file mode 100644 index 000000000..ca1e40e4d Binary files /dev/null and b/public/terrain/19/858511/353819.terrain differ diff --git a/public/terrain/19/858511/353820.terrain b/public/terrain/19/858511/353820.terrain new file mode 100644 index 000000000..393bf33b5 Binary files /dev/null and b/public/terrain/19/858511/353820.terrain differ diff --git a/public/terrain/19/858511/353821.terrain b/public/terrain/19/858511/353821.terrain new file mode 100644 index 000000000..1b04d8ab6 Binary files /dev/null and b/public/terrain/19/858511/353821.terrain differ diff --git a/public/terrain/19/858511/353822.terrain b/public/terrain/19/858511/353822.terrain new file mode 100644 index 000000000..c5637294a Binary files /dev/null and b/public/terrain/19/858511/353822.terrain differ diff --git a/public/terrain/19/858511/353823.terrain b/public/terrain/19/858511/353823.terrain new file mode 100644 index 000000000..fbe21b678 Binary files /dev/null and b/public/terrain/19/858511/353823.terrain differ diff --git a/public/terrain/19/858511/353824.terrain b/public/terrain/19/858511/353824.terrain new file mode 100644 index 000000000..0c3cbb862 Binary files /dev/null and b/public/terrain/19/858511/353824.terrain differ diff --git a/public/terrain/19/858511/353825.terrain b/public/terrain/19/858511/353825.terrain new file mode 100644 index 000000000..cf0889c8b Binary files /dev/null and b/public/terrain/19/858511/353825.terrain differ diff --git a/public/terrain/19/858511/353826.terrain b/public/terrain/19/858511/353826.terrain new file mode 100644 index 000000000..4916d0d62 Binary files /dev/null and b/public/terrain/19/858511/353826.terrain differ diff --git a/public/terrain/19/858511/353827.terrain b/public/terrain/19/858511/353827.terrain new file mode 100644 index 000000000..e24649b30 Binary files /dev/null and b/public/terrain/19/858511/353827.terrain differ diff --git a/public/terrain/19/858511/353828.terrain b/public/terrain/19/858511/353828.terrain new file mode 100644 index 000000000..e86d3e583 Binary files /dev/null and b/public/terrain/19/858511/353828.terrain differ diff --git a/public/terrain/19/858511/353829.terrain b/public/terrain/19/858511/353829.terrain new file mode 100644 index 000000000..abafe487f Binary files /dev/null and b/public/terrain/19/858511/353829.terrain differ diff --git a/public/terrain/19/858511/353830.terrain b/public/terrain/19/858511/353830.terrain new file mode 100644 index 000000000..2d0b9d06b Binary files /dev/null and b/public/terrain/19/858511/353830.terrain differ diff --git a/public/terrain/19/858511/353831.terrain b/public/terrain/19/858511/353831.terrain new file mode 100644 index 000000000..8b01d1b39 Binary files /dev/null and b/public/terrain/19/858511/353831.terrain differ diff --git a/public/terrain/19/858511/353832.terrain b/public/terrain/19/858511/353832.terrain new file mode 100644 index 000000000..0af18b14a Binary files /dev/null and b/public/terrain/19/858511/353832.terrain differ diff --git a/public/terrain/19/858511/353833.terrain b/public/terrain/19/858511/353833.terrain new file mode 100644 index 000000000..cd52fa3e8 Binary files /dev/null and b/public/terrain/19/858511/353833.terrain differ diff --git a/public/terrain/19/858511/353834.terrain b/public/terrain/19/858511/353834.terrain new file mode 100644 index 000000000..e4c8f9345 Binary files /dev/null and b/public/terrain/19/858511/353834.terrain differ diff --git a/public/terrain/19/858511/353835.terrain b/public/terrain/19/858511/353835.terrain new file mode 100644 index 000000000..dc52cc2fa Binary files /dev/null and b/public/terrain/19/858511/353835.terrain differ diff --git a/public/terrain/19/858511/353836.terrain b/public/terrain/19/858511/353836.terrain new file mode 100644 index 000000000..94c5cc0e2 Binary files /dev/null and b/public/terrain/19/858511/353836.terrain differ diff --git a/public/terrain/19/858511/353837.terrain b/public/terrain/19/858511/353837.terrain new file mode 100644 index 000000000..e3a8cda91 Binary files /dev/null and b/public/terrain/19/858511/353837.terrain differ diff --git a/public/terrain/19/858511/353838.terrain b/public/terrain/19/858511/353838.terrain new file mode 100644 index 000000000..b74b2d406 Binary files /dev/null and b/public/terrain/19/858511/353838.terrain differ diff --git a/public/terrain/19/858511/353839.terrain b/public/terrain/19/858511/353839.terrain new file mode 100644 index 000000000..dfbc2e512 Binary files /dev/null and b/public/terrain/19/858511/353839.terrain differ diff --git a/public/terrain/19/858511/353840.terrain b/public/terrain/19/858511/353840.terrain new file mode 100644 index 000000000..b99ff64f6 Binary files /dev/null and b/public/terrain/19/858511/353840.terrain differ diff --git a/public/terrain/19/858511/353841.terrain b/public/terrain/19/858511/353841.terrain new file mode 100644 index 000000000..1b30e1d44 Binary files /dev/null and b/public/terrain/19/858511/353841.terrain differ diff --git a/public/terrain/19/858511/353842.terrain b/public/terrain/19/858511/353842.terrain new file mode 100644 index 000000000..c08ee913a Binary files /dev/null and b/public/terrain/19/858511/353842.terrain differ diff --git a/public/terrain/19/858511/353843.terrain b/public/terrain/19/858511/353843.terrain new file mode 100644 index 000000000..fb7f4e69f Binary files /dev/null and b/public/terrain/19/858511/353843.terrain differ diff --git a/public/terrain/19/858511/353844.terrain b/public/terrain/19/858511/353844.terrain new file mode 100644 index 000000000..0d0286e4b Binary files /dev/null and b/public/terrain/19/858511/353844.terrain differ diff --git a/public/terrain/19/858511/353845.terrain b/public/terrain/19/858511/353845.terrain new file mode 100644 index 000000000..c0af34cda Binary files /dev/null and b/public/terrain/19/858511/353845.terrain differ diff --git a/public/terrain/19/858511/353846.terrain b/public/terrain/19/858511/353846.terrain new file mode 100644 index 000000000..0f81cf95d Binary files /dev/null and b/public/terrain/19/858511/353846.terrain differ diff --git a/public/terrain/19/858511/353847.terrain b/public/terrain/19/858511/353847.terrain new file mode 100644 index 000000000..af9566ceb Binary files /dev/null and b/public/terrain/19/858511/353847.terrain differ diff --git a/public/terrain/19/858511/353848.terrain b/public/terrain/19/858511/353848.terrain new file mode 100644 index 000000000..34c0fc47f Binary files /dev/null and b/public/terrain/19/858511/353848.terrain differ diff --git a/public/terrain/19/858511/353849.terrain b/public/terrain/19/858511/353849.terrain new file mode 100644 index 000000000..5ff1db4f2 Binary files /dev/null and b/public/terrain/19/858511/353849.terrain differ diff --git a/public/terrain/19/858511/353850.terrain b/public/terrain/19/858511/353850.terrain new file mode 100644 index 000000000..c540667b4 Binary files /dev/null and b/public/terrain/19/858511/353850.terrain differ diff --git a/public/terrain/19/858511/353851.terrain b/public/terrain/19/858511/353851.terrain new file mode 100644 index 000000000..6624c72e1 Binary files /dev/null and b/public/terrain/19/858511/353851.terrain differ diff --git a/public/terrain/19/858511/353852.terrain b/public/terrain/19/858511/353852.terrain new file mode 100644 index 000000000..1a26ef9b1 Binary files /dev/null and b/public/terrain/19/858511/353852.terrain differ diff --git a/public/terrain/19/858511/353853.terrain b/public/terrain/19/858511/353853.terrain new file mode 100644 index 000000000..28d980b7b Binary files /dev/null and b/public/terrain/19/858511/353853.terrain differ diff --git a/public/terrain/19/858511/353854.terrain b/public/terrain/19/858511/353854.terrain new file mode 100644 index 000000000..3af0bc826 Binary files /dev/null and b/public/terrain/19/858511/353854.terrain differ diff --git a/public/terrain/19/858511/353855.terrain b/public/terrain/19/858511/353855.terrain new file mode 100644 index 000000000..12cb5d5a0 Binary files /dev/null and b/public/terrain/19/858511/353855.terrain differ diff --git a/public/terrain/19/858511/353856.terrain b/public/terrain/19/858511/353856.terrain new file mode 100644 index 000000000..ea23eed61 Binary files /dev/null and b/public/terrain/19/858511/353856.terrain differ diff --git a/public/terrain/19/858511/353857.terrain b/public/terrain/19/858511/353857.terrain new file mode 100644 index 000000000..ef10e7d32 Binary files /dev/null and b/public/terrain/19/858511/353857.terrain differ diff --git a/public/terrain/19/858511/353858.terrain b/public/terrain/19/858511/353858.terrain new file mode 100644 index 000000000..e41d5a819 Binary files /dev/null and b/public/terrain/19/858511/353858.terrain differ diff --git a/public/terrain/19/858511/353859.terrain b/public/terrain/19/858511/353859.terrain new file mode 100644 index 000000000..8b7580927 Binary files /dev/null and b/public/terrain/19/858511/353859.terrain differ diff --git a/public/terrain/19/858511/353860.terrain b/public/terrain/19/858511/353860.terrain new file mode 100644 index 000000000..d33e997df Binary files /dev/null and b/public/terrain/19/858511/353860.terrain differ diff --git a/public/terrain/19/858511/353861.terrain b/public/terrain/19/858511/353861.terrain new file mode 100644 index 000000000..d1e311fa2 Binary files /dev/null and b/public/terrain/19/858511/353861.terrain differ diff --git a/public/terrain/19/858511/353862.terrain b/public/terrain/19/858511/353862.terrain new file mode 100644 index 000000000..f18e777eb Binary files /dev/null and b/public/terrain/19/858511/353862.terrain differ diff --git a/public/terrain/19/858511/353863.terrain b/public/terrain/19/858511/353863.terrain new file mode 100644 index 000000000..a1061d912 Binary files /dev/null and b/public/terrain/19/858511/353863.terrain differ diff --git a/public/terrain/19/858511/353864.terrain b/public/terrain/19/858511/353864.terrain new file mode 100644 index 000000000..f24f9a19a Binary files /dev/null and b/public/terrain/19/858511/353864.terrain differ diff --git a/public/terrain/19/858511/353865.terrain b/public/terrain/19/858511/353865.terrain new file mode 100644 index 000000000..fe94981a9 Binary files /dev/null and b/public/terrain/19/858511/353865.terrain differ diff --git a/public/terrain/19/858511/353866.terrain b/public/terrain/19/858511/353866.terrain new file mode 100644 index 000000000..9c400515d Binary files /dev/null and b/public/terrain/19/858511/353866.terrain differ diff --git a/public/terrain/19/858511/353867.terrain b/public/terrain/19/858511/353867.terrain new file mode 100644 index 000000000..5331a82e7 Binary files /dev/null and b/public/terrain/19/858511/353867.terrain differ diff --git a/public/terrain/19/858511/353868.terrain b/public/terrain/19/858511/353868.terrain new file mode 100644 index 000000000..0e98f6662 Binary files /dev/null and b/public/terrain/19/858511/353868.terrain differ diff --git a/public/terrain/19/858511/353869.terrain b/public/terrain/19/858511/353869.terrain new file mode 100644 index 000000000..2c8fe4126 Binary files /dev/null and b/public/terrain/19/858511/353869.terrain differ diff --git a/public/terrain/19/858511/353870.terrain b/public/terrain/19/858511/353870.terrain new file mode 100644 index 000000000..41b1b3e57 Binary files /dev/null and b/public/terrain/19/858511/353870.terrain differ diff --git a/public/terrain/19/858511/353871.terrain b/public/terrain/19/858511/353871.terrain new file mode 100644 index 000000000..db79df954 Binary files /dev/null and b/public/terrain/19/858511/353871.terrain differ diff --git a/public/terrain/19/858511/353872.terrain b/public/terrain/19/858511/353872.terrain new file mode 100644 index 000000000..072d3de7b Binary files /dev/null and b/public/terrain/19/858511/353872.terrain differ diff --git a/public/terrain/19/858511/353873.terrain b/public/terrain/19/858511/353873.terrain new file mode 100644 index 000000000..29b5ee967 Binary files /dev/null and b/public/terrain/19/858511/353873.terrain differ diff --git a/public/terrain/19/858511/353874.terrain b/public/terrain/19/858511/353874.terrain new file mode 100644 index 000000000..7525eba29 Binary files /dev/null and b/public/terrain/19/858511/353874.terrain differ diff --git a/public/terrain/19/858511/353875.terrain b/public/terrain/19/858511/353875.terrain new file mode 100644 index 000000000..a9001584d Binary files /dev/null and b/public/terrain/19/858511/353875.terrain differ diff --git a/public/terrain/19/858511/353876.terrain b/public/terrain/19/858511/353876.terrain new file mode 100644 index 000000000..d6c34e96b Binary files /dev/null and b/public/terrain/19/858511/353876.terrain differ diff --git a/public/terrain/19/858511/353877.terrain b/public/terrain/19/858511/353877.terrain new file mode 100644 index 000000000..748dafb0f Binary files /dev/null and b/public/terrain/19/858511/353877.terrain differ diff --git a/public/terrain/19/858511/353878.terrain b/public/terrain/19/858511/353878.terrain new file mode 100644 index 000000000..1020189d0 Binary files /dev/null and b/public/terrain/19/858511/353878.terrain differ diff --git a/public/terrain/19/858511/353879.terrain b/public/terrain/19/858511/353879.terrain new file mode 100644 index 000000000..40359e8c6 Binary files /dev/null and b/public/terrain/19/858511/353879.terrain differ diff --git a/public/terrain/19/858511/353880.terrain b/public/terrain/19/858511/353880.terrain new file mode 100644 index 000000000..f1396216e Binary files /dev/null and b/public/terrain/19/858511/353880.terrain differ diff --git a/public/terrain/19/858511/353881.terrain b/public/terrain/19/858511/353881.terrain new file mode 100644 index 000000000..b5622d700 Binary files /dev/null and b/public/terrain/19/858511/353881.terrain differ diff --git a/public/terrain/19/858511/353882.terrain b/public/terrain/19/858511/353882.terrain new file mode 100644 index 000000000..a797c5010 Binary files /dev/null and b/public/terrain/19/858511/353882.terrain differ diff --git a/public/terrain/19/858511/353883.terrain b/public/terrain/19/858511/353883.terrain new file mode 100644 index 000000000..a2239c808 Binary files /dev/null and b/public/terrain/19/858511/353883.terrain differ diff --git a/public/terrain/19/858511/353884.terrain b/public/terrain/19/858511/353884.terrain new file mode 100644 index 000000000..48d35b15d Binary files /dev/null and b/public/terrain/19/858511/353884.terrain differ diff --git a/public/terrain/19/858511/353885.terrain b/public/terrain/19/858511/353885.terrain new file mode 100644 index 000000000..1801acbae Binary files /dev/null and b/public/terrain/19/858511/353885.terrain differ diff --git a/public/terrain/19/858511/353886.terrain b/public/terrain/19/858511/353886.terrain new file mode 100644 index 000000000..3affd80d9 Binary files /dev/null and b/public/terrain/19/858511/353886.terrain differ diff --git a/public/terrain/19/858511/353887.terrain b/public/terrain/19/858511/353887.terrain new file mode 100644 index 000000000..634b60999 Binary files /dev/null and b/public/terrain/19/858511/353887.terrain differ diff --git a/public/terrain/19/858511/353888.terrain b/public/terrain/19/858511/353888.terrain new file mode 100644 index 000000000..fd80cb670 Binary files /dev/null and b/public/terrain/19/858511/353888.terrain differ diff --git a/public/terrain/19/858511/353889.terrain b/public/terrain/19/858511/353889.terrain new file mode 100644 index 000000000..dc33a3944 Binary files /dev/null and b/public/terrain/19/858511/353889.terrain differ diff --git a/public/terrain/19/858511/353890.terrain b/public/terrain/19/858511/353890.terrain new file mode 100644 index 000000000..c2998d648 Binary files /dev/null and b/public/terrain/19/858511/353890.terrain differ diff --git a/public/terrain/19/858511/353891.terrain b/public/terrain/19/858511/353891.terrain new file mode 100644 index 000000000..1e3032fb5 Binary files /dev/null and b/public/terrain/19/858511/353891.terrain differ diff --git a/public/terrain/19/858511/353892.terrain b/public/terrain/19/858511/353892.terrain new file mode 100644 index 000000000..643cb1d30 Binary files /dev/null and b/public/terrain/19/858511/353892.terrain differ diff --git a/public/terrain/19/858511/353893.terrain b/public/terrain/19/858511/353893.terrain new file mode 100644 index 000000000..07d7570d0 Binary files /dev/null and b/public/terrain/19/858511/353893.terrain differ diff --git a/public/terrain/19/858511/353894.terrain b/public/terrain/19/858511/353894.terrain new file mode 100644 index 000000000..96e568393 Binary files /dev/null and b/public/terrain/19/858511/353894.terrain differ diff --git a/public/terrain/19/858511/353895.terrain b/public/terrain/19/858511/353895.terrain new file mode 100644 index 000000000..c9db6fbe2 Binary files /dev/null and b/public/terrain/19/858511/353895.terrain differ diff --git a/public/terrain/19/858511/353896.terrain b/public/terrain/19/858511/353896.terrain new file mode 100644 index 000000000..a00990db1 Binary files /dev/null and b/public/terrain/19/858511/353896.terrain differ diff --git a/public/terrain/19/858511/353897.terrain b/public/terrain/19/858511/353897.terrain new file mode 100644 index 000000000..1d0d746b6 Binary files /dev/null and b/public/terrain/19/858511/353897.terrain differ diff --git a/public/terrain/19/858511/353898.terrain b/public/terrain/19/858511/353898.terrain new file mode 100644 index 000000000..f9083fa78 Binary files /dev/null and b/public/terrain/19/858511/353898.terrain differ diff --git a/public/terrain/19/858511/353899.terrain b/public/terrain/19/858511/353899.terrain new file mode 100644 index 000000000..60e7a859f Binary files /dev/null and b/public/terrain/19/858511/353899.terrain differ diff --git a/public/terrain/19/858511/353900.terrain b/public/terrain/19/858511/353900.terrain new file mode 100644 index 000000000..b7e5c026b Binary files /dev/null and b/public/terrain/19/858511/353900.terrain differ diff --git a/public/terrain/19/858511/353901.terrain b/public/terrain/19/858511/353901.terrain new file mode 100644 index 000000000..d43db17fd Binary files /dev/null and b/public/terrain/19/858511/353901.terrain differ diff --git a/public/terrain/19/858511/353902.terrain b/public/terrain/19/858511/353902.terrain new file mode 100644 index 000000000..898bc835d Binary files /dev/null and b/public/terrain/19/858511/353902.terrain differ diff --git a/public/terrain/19/858511/353903.terrain b/public/terrain/19/858511/353903.terrain new file mode 100644 index 000000000..7224e237d Binary files /dev/null and b/public/terrain/19/858511/353903.terrain differ diff --git a/public/terrain/19/858511/353904.terrain b/public/terrain/19/858511/353904.terrain new file mode 100644 index 000000000..c973d2b44 Binary files /dev/null and b/public/terrain/19/858511/353904.terrain differ diff --git a/public/terrain/19/858511/353905.terrain b/public/terrain/19/858511/353905.terrain new file mode 100644 index 000000000..e4c50f3a2 Binary files /dev/null and b/public/terrain/19/858511/353905.terrain differ diff --git a/public/terrain/19/858511/353906.terrain b/public/terrain/19/858511/353906.terrain new file mode 100644 index 000000000..1d1534f52 Binary files /dev/null and b/public/terrain/19/858511/353906.terrain differ diff --git a/public/terrain/19/858511/353907.terrain b/public/terrain/19/858511/353907.terrain new file mode 100644 index 000000000..397962884 Binary files /dev/null and b/public/terrain/19/858511/353907.terrain differ diff --git a/public/terrain/19/858511/353908.terrain b/public/terrain/19/858511/353908.terrain new file mode 100644 index 000000000..a6666a2fe Binary files /dev/null and b/public/terrain/19/858511/353908.terrain differ diff --git a/public/terrain/19/858511/353909.terrain b/public/terrain/19/858511/353909.terrain new file mode 100644 index 000000000..ae182e37a Binary files /dev/null and b/public/terrain/19/858511/353909.terrain differ diff --git a/public/terrain/19/858511/353910.terrain b/public/terrain/19/858511/353910.terrain new file mode 100644 index 000000000..11135fed9 Binary files /dev/null and b/public/terrain/19/858511/353910.terrain differ diff --git a/public/terrain/19/858511/353911.terrain b/public/terrain/19/858511/353911.terrain new file mode 100644 index 000000000..32c1719e0 Binary files /dev/null and b/public/terrain/19/858511/353911.terrain differ diff --git a/public/terrain/19/858511/353912.terrain b/public/terrain/19/858511/353912.terrain new file mode 100644 index 000000000..391a72ff1 Binary files /dev/null and b/public/terrain/19/858511/353912.terrain differ diff --git a/public/terrain/19/858511/353913.terrain b/public/terrain/19/858511/353913.terrain new file mode 100644 index 000000000..e99558521 Binary files /dev/null and b/public/terrain/19/858511/353913.terrain differ diff --git a/public/terrain/19/858511/353914.terrain b/public/terrain/19/858511/353914.terrain new file mode 100644 index 000000000..fb3d13da0 Binary files /dev/null and b/public/terrain/19/858511/353914.terrain differ diff --git a/public/terrain/19/858511/353915.terrain b/public/terrain/19/858511/353915.terrain new file mode 100644 index 000000000..309430353 Binary files /dev/null and b/public/terrain/19/858511/353915.terrain differ diff --git a/public/terrain/19/858511/353916.terrain b/public/terrain/19/858511/353916.terrain new file mode 100644 index 000000000..6104121b3 Binary files /dev/null and b/public/terrain/19/858511/353916.terrain differ diff --git a/public/terrain/19/858511/353917.terrain b/public/terrain/19/858511/353917.terrain new file mode 100644 index 000000000..515c01f01 Binary files /dev/null and b/public/terrain/19/858511/353917.terrain differ diff --git a/public/terrain/19/858511/353918.terrain b/public/terrain/19/858511/353918.terrain new file mode 100644 index 000000000..fb2ed5a42 Binary files /dev/null and b/public/terrain/19/858511/353918.terrain differ diff --git a/public/terrain/19/858511/353919.terrain b/public/terrain/19/858511/353919.terrain new file mode 100644 index 000000000..52741d84c Binary files /dev/null and b/public/terrain/19/858511/353919.terrain differ diff --git a/public/terrain/19/858511/353920.terrain b/public/terrain/19/858511/353920.terrain new file mode 100644 index 000000000..9dc75a469 Binary files /dev/null and b/public/terrain/19/858511/353920.terrain differ diff --git a/public/terrain/19/858511/353921.terrain b/public/terrain/19/858511/353921.terrain new file mode 100644 index 000000000..e2cc1c2fb Binary files /dev/null and b/public/terrain/19/858511/353921.terrain differ diff --git a/public/terrain/19/858511/353922.terrain b/public/terrain/19/858511/353922.terrain new file mode 100644 index 000000000..53441948e Binary files /dev/null and b/public/terrain/19/858511/353922.terrain differ diff --git a/public/terrain/19/858511/353923.terrain b/public/terrain/19/858511/353923.terrain new file mode 100644 index 000000000..07dd0c8a5 Binary files /dev/null and b/public/terrain/19/858511/353923.terrain differ diff --git a/public/terrain/19/858511/353924.terrain b/public/terrain/19/858511/353924.terrain new file mode 100644 index 000000000..32dff2b01 Binary files /dev/null and b/public/terrain/19/858511/353924.terrain differ diff --git a/public/terrain/19/858511/353925.terrain b/public/terrain/19/858511/353925.terrain new file mode 100644 index 000000000..b2e9a956a Binary files /dev/null and b/public/terrain/19/858511/353925.terrain differ diff --git a/public/terrain/19/858511/353926.terrain b/public/terrain/19/858511/353926.terrain new file mode 100644 index 000000000..0a857e19d Binary files /dev/null and b/public/terrain/19/858511/353926.terrain differ diff --git a/public/terrain/19/858511/353927.terrain b/public/terrain/19/858511/353927.terrain new file mode 100644 index 000000000..c45778bf6 Binary files /dev/null and b/public/terrain/19/858511/353927.terrain differ diff --git a/public/terrain/19/858511/353928.terrain b/public/terrain/19/858511/353928.terrain new file mode 100644 index 000000000..5786d836e Binary files /dev/null and b/public/terrain/19/858511/353928.terrain differ diff --git a/public/terrain/19/858511/353929.terrain b/public/terrain/19/858511/353929.terrain new file mode 100644 index 000000000..804bee248 Binary files /dev/null and b/public/terrain/19/858511/353929.terrain differ diff --git a/public/terrain/19/858511/353930.terrain b/public/terrain/19/858511/353930.terrain new file mode 100644 index 000000000..9eb23a4e4 Binary files /dev/null and b/public/terrain/19/858511/353930.terrain differ diff --git a/public/terrain/19/858511/353931.terrain b/public/terrain/19/858511/353931.terrain new file mode 100644 index 000000000..664363eda Binary files /dev/null and b/public/terrain/19/858511/353931.terrain differ diff --git a/public/terrain/19/858511/353932.terrain b/public/terrain/19/858511/353932.terrain new file mode 100644 index 000000000..a98d6bab6 Binary files /dev/null and b/public/terrain/19/858511/353932.terrain differ diff --git a/public/terrain/19/858511/353933.terrain b/public/terrain/19/858511/353933.terrain new file mode 100644 index 000000000..fb847adbe Binary files /dev/null and b/public/terrain/19/858511/353933.terrain differ diff --git a/public/terrain/19/858511/353934.terrain b/public/terrain/19/858511/353934.terrain new file mode 100644 index 000000000..5628901bd Binary files /dev/null and b/public/terrain/19/858511/353934.terrain differ diff --git a/public/terrain/19/858511/353935.terrain b/public/terrain/19/858511/353935.terrain new file mode 100644 index 000000000..91eb2bb80 Binary files /dev/null and b/public/terrain/19/858511/353935.terrain differ diff --git a/public/terrain/19/858511/353936.terrain b/public/terrain/19/858511/353936.terrain new file mode 100644 index 000000000..5538e91d7 Binary files /dev/null and b/public/terrain/19/858511/353936.terrain differ diff --git a/public/terrain/19/858511/353937.terrain b/public/terrain/19/858511/353937.terrain new file mode 100644 index 000000000..331c5d69c Binary files /dev/null and b/public/terrain/19/858511/353937.terrain differ diff --git a/public/terrain/19/858511/353938.terrain b/public/terrain/19/858511/353938.terrain new file mode 100644 index 000000000..ceaa9ea3b Binary files /dev/null and b/public/terrain/19/858511/353938.terrain differ diff --git a/public/terrain/19/858511/353939.terrain b/public/terrain/19/858511/353939.terrain new file mode 100644 index 000000000..d2f1292ba Binary files /dev/null and b/public/terrain/19/858511/353939.terrain differ diff --git a/public/terrain/19/858511/353940.terrain b/public/terrain/19/858511/353940.terrain new file mode 100644 index 000000000..cac72b7ec Binary files /dev/null and b/public/terrain/19/858511/353940.terrain differ diff --git a/public/terrain/19/858511/353941.terrain b/public/terrain/19/858511/353941.terrain new file mode 100644 index 000000000..dde786cde Binary files /dev/null and b/public/terrain/19/858511/353941.terrain differ diff --git a/public/terrain/19/858511/353942.terrain b/public/terrain/19/858511/353942.terrain new file mode 100644 index 000000000..30a9e0bd5 Binary files /dev/null and b/public/terrain/19/858511/353942.terrain differ diff --git a/public/terrain/19/858511/353943.terrain b/public/terrain/19/858511/353943.terrain new file mode 100644 index 000000000..31589a454 Binary files /dev/null and b/public/terrain/19/858511/353943.terrain differ diff --git a/public/terrain/19/858511/353944.terrain b/public/terrain/19/858511/353944.terrain new file mode 100644 index 000000000..7c0976a89 Binary files /dev/null and b/public/terrain/19/858511/353944.terrain differ diff --git a/public/terrain/19/858511/353945.terrain b/public/terrain/19/858511/353945.terrain new file mode 100644 index 000000000..d5cc7a9e3 Binary files /dev/null and b/public/terrain/19/858511/353945.terrain differ diff --git a/public/terrain/19/858511/353946.terrain b/public/terrain/19/858511/353946.terrain new file mode 100644 index 000000000..aa1e0d4f4 Binary files /dev/null and b/public/terrain/19/858511/353946.terrain differ diff --git a/public/terrain/19/858511/353947.terrain b/public/terrain/19/858511/353947.terrain new file mode 100644 index 000000000..85a7ac5b2 Binary files /dev/null and b/public/terrain/19/858511/353947.terrain differ diff --git a/public/terrain/19/858511/353948.terrain b/public/terrain/19/858511/353948.terrain new file mode 100644 index 000000000..3848fd327 Binary files /dev/null and b/public/terrain/19/858511/353948.terrain differ diff --git a/public/terrain/19/858511/353949.terrain b/public/terrain/19/858511/353949.terrain new file mode 100644 index 000000000..1d3b86b7d Binary files /dev/null and b/public/terrain/19/858511/353949.terrain differ diff --git a/public/terrain/19/858511/353950.terrain b/public/terrain/19/858511/353950.terrain new file mode 100644 index 000000000..9cde36294 Binary files /dev/null and b/public/terrain/19/858511/353950.terrain differ diff --git a/public/terrain/19/858511/353951.terrain b/public/terrain/19/858511/353951.terrain new file mode 100644 index 000000000..f04209c62 Binary files /dev/null and b/public/terrain/19/858511/353951.terrain differ diff --git a/public/terrain/19/858511/353952.terrain b/public/terrain/19/858511/353952.terrain new file mode 100644 index 000000000..3ec673b7b Binary files /dev/null and b/public/terrain/19/858511/353952.terrain differ diff --git a/public/terrain/19/858511/353953.terrain b/public/terrain/19/858511/353953.terrain new file mode 100644 index 000000000..0931218b4 Binary files /dev/null and b/public/terrain/19/858511/353953.terrain differ diff --git a/public/terrain/19/858511/353954.terrain b/public/terrain/19/858511/353954.terrain new file mode 100644 index 000000000..9d78cc63b Binary files /dev/null and b/public/terrain/19/858511/353954.terrain differ diff --git a/public/terrain/19/858511/353955.terrain b/public/terrain/19/858511/353955.terrain new file mode 100644 index 000000000..f823b72c8 Binary files /dev/null and b/public/terrain/19/858511/353955.terrain differ diff --git a/public/terrain/19/858511/353956.terrain b/public/terrain/19/858511/353956.terrain new file mode 100644 index 000000000..e51b361e0 Binary files /dev/null and b/public/terrain/19/858511/353956.terrain differ diff --git a/public/terrain/19/858511/353957.terrain b/public/terrain/19/858511/353957.terrain new file mode 100644 index 000000000..e7ca3c86d Binary files /dev/null and b/public/terrain/19/858511/353957.terrain differ diff --git a/public/terrain/19/858511/353958.terrain b/public/terrain/19/858511/353958.terrain new file mode 100644 index 000000000..972470987 Binary files /dev/null and b/public/terrain/19/858511/353958.terrain differ diff --git a/public/terrain/19/858511/353959.terrain b/public/terrain/19/858511/353959.terrain new file mode 100644 index 000000000..d32b731b7 Binary files /dev/null and b/public/terrain/19/858511/353959.terrain differ diff --git a/public/terrain/19/858511/353960.terrain b/public/terrain/19/858511/353960.terrain new file mode 100644 index 000000000..17e78737d Binary files /dev/null and b/public/terrain/19/858511/353960.terrain differ diff --git a/public/terrain/19/858511/353961.terrain b/public/terrain/19/858511/353961.terrain new file mode 100644 index 000000000..3561f0fce Binary files /dev/null and b/public/terrain/19/858511/353961.terrain differ diff --git a/public/terrain/19/858511/353962.terrain b/public/terrain/19/858511/353962.terrain new file mode 100644 index 000000000..d8268dd2e Binary files /dev/null and b/public/terrain/19/858511/353962.terrain differ diff --git a/public/terrain/19/858511/353963.terrain b/public/terrain/19/858511/353963.terrain new file mode 100644 index 000000000..07d459ce2 Binary files /dev/null and b/public/terrain/19/858511/353963.terrain differ diff --git a/public/terrain/19/858511/353964.terrain b/public/terrain/19/858511/353964.terrain new file mode 100644 index 000000000..55101a393 Binary files /dev/null and b/public/terrain/19/858511/353964.terrain differ diff --git a/public/terrain/19/858511/353965.terrain b/public/terrain/19/858511/353965.terrain new file mode 100644 index 000000000..8128974ff Binary files /dev/null and b/public/terrain/19/858511/353965.terrain differ diff --git a/public/terrain/19/858511/353966.terrain b/public/terrain/19/858511/353966.terrain new file mode 100644 index 000000000..45c67e829 Binary files /dev/null and b/public/terrain/19/858511/353966.terrain differ diff --git a/public/terrain/19/858511/353967.terrain b/public/terrain/19/858511/353967.terrain new file mode 100644 index 000000000..e0aad42b4 Binary files /dev/null and b/public/terrain/19/858511/353967.terrain differ diff --git a/public/terrain/19/858511/353968.terrain b/public/terrain/19/858511/353968.terrain new file mode 100644 index 000000000..da9d427ea Binary files /dev/null and b/public/terrain/19/858511/353968.terrain differ diff --git a/public/terrain/19/858511/353969.terrain b/public/terrain/19/858511/353969.terrain new file mode 100644 index 000000000..d743d6636 Binary files /dev/null and b/public/terrain/19/858511/353969.terrain differ diff --git a/public/terrain/19/858511/353970.terrain b/public/terrain/19/858511/353970.terrain new file mode 100644 index 000000000..23778c126 Binary files /dev/null and b/public/terrain/19/858511/353970.terrain differ diff --git a/public/terrain/19/858511/353971.terrain b/public/terrain/19/858511/353971.terrain new file mode 100644 index 000000000..2b86e4768 Binary files /dev/null and b/public/terrain/19/858511/353971.terrain differ diff --git a/public/terrain/19/858511/353972.terrain b/public/terrain/19/858511/353972.terrain new file mode 100644 index 000000000..c9d43f8a1 Binary files /dev/null and b/public/terrain/19/858511/353972.terrain differ diff --git a/public/terrain/19/858511/353973.terrain b/public/terrain/19/858511/353973.terrain new file mode 100644 index 000000000..8bf4f4480 Binary files /dev/null and b/public/terrain/19/858511/353973.terrain differ diff --git a/public/terrain/19/858511/353974.terrain b/public/terrain/19/858511/353974.terrain new file mode 100644 index 000000000..de4bbbe5f Binary files /dev/null and b/public/terrain/19/858511/353974.terrain differ diff --git a/public/terrain/19/858511/353975.terrain b/public/terrain/19/858511/353975.terrain new file mode 100644 index 000000000..38d913a65 Binary files /dev/null and b/public/terrain/19/858511/353975.terrain differ diff --git a/public/terrain/19/858511/353976.terrain b/public/terrain/19/858511/353976.terrain new file mode 100644 index 000000000..6a4350cfb Binary files /dev/null and b/public/terrain/19/858511/353976.terrain differ diff --git a/public/terrain/19/858511/353977.terrain b/public/terrain/19/858511/353977.terrain new file mode 100644 index 000000000..4466b6479 Binary files /dev/null and b/public/terrain/19/858511/353977.terrain differ diff --git a/public/terrain/19/858511/353978.terrain b/public/terrain/19/858511/353978.terrain new file mode 100644 index 000000000..27adacf2b Binary files /dev/null and b/public/terrain/19/858511/353978.terrain differ diff --git a/public/terrain/19/858511/353979.terrain b/public/terrain/19/858511/353979.terrain new file mode 100644 index 000000000..e181a2c97 Binary files /dev/null and b/public/terrain/19/858511/353979.terrain differ diff --git a/public/terrain/19/858511/353980.terrain b/public/terrain/19/858511/353980.terrain new file mode 100644 index 000000000..a3a0660f1 Binary files /dev/null and b/public/terrain/19/858511/353980.terrain differ diff --git a/public/terrain/19/858511/353981.terrain b/public/terrain/19/858511/353981.terrain new file mode 100644 index 000000000..2b7046f30 Binary files /dev/null and b/public/terrain/19/858511/353981.terrain differ diff --git a/public/terrain/19/858511/353982.terrain b/public/terrain/19/858511/353982.terrain new file mode 100644 index 000000000..c25b29b14 Binary files /dev/null and b/public/terrain/19/858511/353982.terrain differ diff --git a/public/terrain/19/858511/353983.terrain b/public/terrain/19/858511/353983.terrain new file mode 100644 index 000000000..5f957ca16 Binary files /dev/null and b/public/terrain/19/858511/353983.terrain differ diff --git a/public/terrain/19/858511/353984.terrain b/public/terrain/19/858511/353984.terrain new file mode 100644 index 000000000..1df252e9b Binary files /dev/null and b/public/terrain/19/858511/353984.terrain differ diff --git a/public/terrain/19/858511/353985.terrain b/public/terrain/19/858511/353985.terrain new file mode 100644 index 000000000..908341395 Binary files /dev/null and b/public/terrain/19/858511/353985.terrain differ diff --git a/public/terrain/19/858511/353986.terrain b/public/terrain/19/858511/353986.terrain new file mode 100644 index 000000000..4870443c3 Binary files /dev/null and b/public/terrain/19/858511/353986.terrain differ diff --git a/public/terrain/19/858511/353987.terrain b/public/terrain/19/858511/353987.terrain new file mode 100644 index 000000000..ba801bd57 Binary files /dev/null and b/public/terrain/19/858511/353987.terrain differ diff --git a/public/terrain/19/858511/353988.terrain b/public/terrain/19/858511/353988.terrain new file mode 100644 index 000000000..aaef7ccd6 Binary files /dev/null and b/public/terrain/19/858511/353988.terrain differ diff --git a/public/terrain/19/858511/353989.terrain b/public/terrain/19/858511/353989.terrain new file mode 100644 index 000000000..bf62cca21 Binary files /dev/null and b/public/terrain/19/858511/353989.terrain differ diff --git a/public/terrain/19/858511/353990.terrain b/public/terrain/19/858511/353990.terrain new file mode 100644 index 000000000..5ef6eec31 Binary files /dev/null and b/public/terrain/19/858511/353990.terrain differ diff --git a/public/terrain/19/858511/353991.terrain b/public/terrain/19/858511/353991.terrain new file mode 100644 index 000000000..cde30bc7a Binary files /dev/null and b/public/terrain/19/858511/353991.terrain differ diff --git a/public/terrain/19/858511/353992.terrain b/public/terrain/19/858511/353992.terrain new file mode 100644 index 000000000..70fffbe27 Binary files /dev/null and b/public/terrain/19/858511/353992.terrain differ diff --git a/public/terrain/19/858511/353993.terrain b/public/terrain/19/858511/353993.terrain new file mode 100644 index 000000000..dc27fd2e7 Binary files /dev/null and b/public/terrain/19/858511/353993.terrain differ diff --git a/public/terrain/19/858511/353994.terrain b/public/terrain/19/858511/353994.terrain new file mode 100644 index 000000000..8e2772057 Binary files /dev/null and b/public/terrain/19/858511/353994.terrain differ diff --git a/public/terrain/19/858511/353995.terrain b/public/terrain/19/858511/353995.terrain new file mode 100644 index 000000000..1c4ecdf01 Binary files /dev/null and b/public/terrain/19/858511/353995.terrain differ diff --git a/public/terrain/19/858511/353996.terrain b/public/terrain/19/858511/353996.terrain new file mode 100644 index 000000000..ecc767512 Binary files /dev/null and b/public/terrain/19/858511/353996.terrain differ diff --git a/public/terrain/19/858511/353997.terrain b/public/terrain/19/858511/353997.terrain new file mode 100644 index 000000000..f9c25332c Binary files /dev/null and b/public/terrain/19/858511/353997.terrain differ diff --git a/public/terrain/19/858511/353998.terrain b/public/terrain/19/858511/353998.terrain new file mode 100644 index 000000000..a5a254110 Binary files /dev/null and b/public/terrain/19/858511/353998.terrain differ diff --git a/public/terrain/19/858511/353999.terrain b/public/terrain/19/858511/353999.terrain new file mode 100644 index 000000000..02ebf7dba Binary files /dev/null and b/public/terrain/19/858511/353999.terrain differ diff --git a/public/terrain/19/858511/354000.terrain b/public/terrain/19/858511/354000.terrain new file mode 100644 index 000000000..a2fc8112c Binary files /dev/null and b/public/terrain/19/858511/354000.terrain differ diff --git a/public/terrain/19/858511/354001.terrain b/public/terrain/19/858511/354001.terrain new file mode 100644 index 000000000..fee4a47d7 Binary files /dev/null and b/public/terrain/19/858511/354001.terrain differ diff --git a/public/terrain/19/858511/354002.terrain b/public/terrain/19/858511/354002.terrain new file mode 100644 index 000000000..74e6c36fd Binary files /dev/null and b/public/terrain/19/858511/354002.terrain differ diff --git a/public/terrain/19/858511/354003.terrain b/public/terrain/19/858511/354003.terrain new file mode 100644 index 000000000..e6e8830db Binary files /dev/null and b/public/terrain/19/858511/354003.terrain differ diff --git a/public/terrain/19/858511/354004.terrain b/public/terrain/19/858511/354004.terrain new file mode 100644 index 000000000..8433dfa1d Binary files /dev/null and b/public/terrain/19/858511/354004.terrain differ diff --git a/public/terrain/19/858511/354005.terrain b/public/terrain/19/858511/354005.terrain new file mode 100644 index 000000000..3908081f7 Binary files /dev/null and b/public/terrain/19/858511/354005.terrain differ diff --git a/public/terrain/19/858511/354006.terrain b/public/terrain/19/858511/354006.terrain new file mode 100644 index 000000000..757a41079 Binary files /dev/null and b/public/terrain/19/858511/354006.terrain differ diff --git a/public/terrain/19/858511/354007.terrain b/public/terrain/19/858511/354007.terrain new file mode 100644 index 000000000..cea89de1b Binary files /dev/null and b/public/terrain/19/858511/354007.terrain differ diff --git a/public/terrain/19/858511/354008.terrain b/public/terrain/19/858511/354008.terrain new file mode 100644 index 000000000..2b5bd135f Binary files /dev/null and b/public/terrain/19/858511/354008.terrain differ diff --git a/public/terrain/19/858511/354009.terrain b/public/terrain/19/858511/354009.terrain new file mode 100644 index 000000000..24abe7b76 Binary files /dev/null and b/public/terrain/19/858511/354009.terrain differ diff --git a/public/terrain/19/858511/354010.terrain b/public/terrain/19/858511/354010.terrain new file mode 100644 index 000000000..43c86fa61 Binary files /dev/null and b/public/terrain/19/858511/354010.terrain differ diff --git a/public/terrain/19/858511/354011.terrain b/public/terrain/19/858511/354011.terrain new file mode 100644 index 000000000..135591306 Binary files /dev/null and b/public/terrain/19/858511/354011.terrain differ diff --git a/public/terrain/19/858511/354012.terrain b/public/terrain/19/858511/354012.terrain new file mode 100644 index 000000000..e6c24c3a3 Binary files /dev/null and b/public/terrain/19/858511/354012.terrain differ diff --git a/public/terrain/19/858511/354013.terrain b/public/terrain/19/858511/354013.terrain new file mode 100644 index 000000000..11e3947cd Binary files /dev/null and b/public/terrain/19/858511/354013.terrain differ diff --git a/public/terrain/19/858511/354014.terrain b/public/terrain/19/858511/354014.terrain new file mode 100644 index 000000000..10f8cf60b Binary files /dev/null and b/public/terrain/19/858511/354014.terrain differ diff --git a/public/terrain/19/858511/354015.terrain b/public/terrain/19/858511/354015.terrain new file mode 100644 index 000000000..99eb40e25 Binary files /dev/null and b/public/terrain/19/858511/354015.terrain differ diff --git a/public/terrain/19/858511/354016.terrain b/public/terrain/19/858511/354016.terrain new file mode 100644 index 000000000..6503baeff Binary files /dev/null and b/public/terrain/19/858511/354016.terrain differ diff --git a/public/terrain/19/858511/354017.terrain b/public/terrain/19/858511/354017.terrain new file mode 100644 index 000000000..b1bbc7c5f Binary files /dev/null and b/public/terrain/19/858511/354017.terrain differ diff --git a/public/terrain/19/858511/354018.terrain b/public/terrain/19/858511/354018.terrain new file mode 100644 index 000000000..4fb8c11aa Binary files /dev/null and b/public/terrain/19/858511/354018.terrain differ diff --git a/public/terrain/19/858511/354019.terrain b/public/terrain/19/858511/354019.terrain new file mode 100644 index 000000000..61361914c Binary files /dev/null and b/public/terrain/19/858511/354019.terrain differ diff --git a/public/terrain/19/858511/354020.terrain b/public/terrain/19/858511/354020.terrain new file mode 100644 index 000000000..85832973e Binary files /dev/null and b/public/terrain/19/858511/354020.terrain differ diff --git a/public/terrain/19/858511/354021.terrain b/public/terrain/19/858511/354021.terrain new file mode 100644 index 000000000..8e896b186 Binary files /dev/null and b/public/terrain/19/858511/354021.terrain differ diff --git a/public/terrain/19/858511/354022.terrain b/public/terrain/19/858511/354022.terrain new file mode 100644 index 000000000..6a57ae154 Binary files /dev/null and b/public/terrain/19/858511/354022.terrain differ diff --git a/public/terrain/19/858511/354023.terrain b/public/terrain/19/858511/354023.terrain new file mode 100644 index 000000000..92082ccaf Binary files /dev/null and b/public/terrain/19/858511/354023.terrain differ diff --git a/public/terrain/19/858511/354024.terrain b/public/terrain/19/858511/354024.terrain new file mode 100644 index 000000000..daed59ee9 Binary files /dev/null and b/public/terrain/19/858511/354024.terrain differ diff --git a/public/terrain/19/858511/354025.terrain b/public/terrain/19/858511/354025.terrain new file mode 100644 index 000000000..7f50b13bf Binary files /dev/null and b/public/terrain/19/858511/354025.terrain differ diff --git a/public/terrain/19/858511/354026.terrain b/public/terrain/19/858511/354026.terrain new file mode 100644 index 000000000..4bbb4d980 Binary files /dev/null and b/public/terrain/19/858511/354026.terrain differ diff --git a/public/terrain/19/858511/354027.terrain b/public/terrain/19/858511/354027.terrain new file mode 100644 index 000000000..9eaedbea7 Binary files /dev/null and b/public/terrain/19/858511/354027.terrain differ diff --git a/public/terrain/19/858511/354028.terrain b/public/terrain/19/858511/354028.terrain new file mode 100644 index 000000000..ec26584d4 Binary files /dev/null and b/public/terrain/19/858511/354028.terrain differ diff --git a/public/terrain/19/858511/354029.terrain b/public/terrain/19/858511/354029.terrain new file mode 100644 index 000000000..15fc82a74 Binary files /dev/null and b/public/terrain/19/858511/354029.terrain differ diff --git a/public/terrain/19/858511/354030.terrain b/public/terrain/19/858511/354030.terrain new file mode 100644 index 000000000..42d9ab517 Binary files /dev/null and b/public/terrain/19/858511/354030.terrain differ diff --git a/public/terrain/19/858511/354031.terrain b/public/terrain/19/858511/354031.terrain new file mode 100644 index 000000000..f2874b3ce Binary files /dev/null and b/public/terrain/19/858511/354031.terrain differ diff --git a/public/terrain/19/858511/354032.terrain b/public/terrain/19/858511/354032.terrain new file mode 100644 index 000000000..ede10f48b Binary files /dev/null and b/public/terrain/19/858511/354032.terrain differ diff --git a/public/terrain/19/858511/354033.terrain b/public/terrain/19/858511/354033.terrain new file mode 100644 index 000000000..1e63f00fd Binary files /dev/null and b/public/terrain/19/858511/354033.terrain differ diff --git a/public/terrain/19/858511/354034.terrain b/public/terrain/19/858511/354034.terrain new file mode 100644 index 000000000..e9c371429 Binary files /dev/null and b/public/terrain/19/858511/354034.terrain differ diff --git a/public/terrain/19/858511/354035.terrain b/public/terrain/19/858511/354035.terrain new file mode 100644 index 000000000..64f985aae Binary files /dev/null and b/public/terrain/19/858511/354035.terrain differ diff --git a/public/terrain/19/858511/354036.terrain b/public/terrain/19/858511/354036.terrain new file mode 100644 index 000000000..961822a88 Binary files /dev/null and b/public/terrain/19/858511/354036.terrain differ diff --git a/public/terrain/19/858511/354037.terrain b/public/terrain/19/858511/354037.terrain new file mode 100644 index 000000000..d986a849f Binary files /dev/null and b/public/terrain/19/858511/354037.terrain differ diff --git a/public/terrain/19/858511/354038.terrain b/public/terrain/19/858511/354038.terrain new file mode 100644 index 000000000..e9cc9e668 Binary files /dev/null and b/public/terrain/19/858511/354038.terrain differ diff --git a/public/terrain/19/858511/354039.terrain b/public/terrain/19/858511/354039.terrain new file mode 100644 index 000000000..68bb270d2 Binary files /dev/null and b/public/terrain/19/858511/354039.terrain differ diff --git a/public/terrain/19/858511/354040.terrain b/public/terrain/19/858511/354040.terrain new file mode 100644 index 000000000..b244b5f88 Binary files /dev/null and b/public/terrain/19/858511/354040.terrain differ diff --git a/public/terrain/19/858511/354041.terrain b/public/terrain/19/858511/354041.terrain new file mode 100644 index 000000000..79703f96d Binary files /dev/null and b/public/terrain/19/858511/354041.terrain differ diff --git a/public/terrain/19/858511/354042.terrain b/public/terrain/19/858511/354042.terrain new file mode 100644 index 000000000..8d2d078ab Binary files /dev/null and b/public/terrain/19/858511/354042.terrain differ diff --git a/public/terrain/19/858511/354043.terrain b/public/terrain/19/858511/354043.terrain new file mode 100644 index 000000000..bb38f8292 Binary files /dev/null and b/public/terrain/19/858511/354043.terrain differ diff --git a/public/terrain/19/858511/354044.terrain b/public/terrain/19/858511/354044.terrain new file mode 100644 index 000000000..b5198d83c Binary files /dev/null and b/public/terrain/19/858511/354044.terrain differ diff --git a/public/terrain/19/858511/354045.terrain b/public/terrain/19/858511/354045.terrain new file mode 100644 index 000000000..92a41256e Binary files /dev/null and b/public/terrain/19/858511/354045.terrain differ diff --git a/public/terrain/19/858511/354046.terrain b/public/terrain/19/858511/354046.terrain new file mode 100644 index 000000000..a7b2525f0 Binary files /dev/null and b/public/terrain/19/858511/354046.terrain differ diff --git a/public/terrain/19/858511/354047.terrain b/public/terrain/19/858511/354047.terrain new file mode 100644 index 000000000..78d57bc17 Binary files /dev/null and b/public/terrain/19/858511/354047.terrain differ diff --git a/public/terrain/19/858511/354048.terrain b/public/terrain/19/858511/354048.terrain new file mode 100644 index 000000000..a9afedf9f Binary files /dev/null and b/public/terrain/19/858511/354048.terrain differ diff --git a/public/terrain/19/858511/354049.terrain b/public/terrain/19/858511/354049.terrain new file mode 100644 index 000000000..3e35b7be8 Binary files /dev/null and b/public/terrain/19/858511/354049.terrain differ diff --git a/public/terrain/19/858511/354050.terrain b/public/terrain/19/858511/354050.terrain new file mode 100644 index 000000000..959ee49cb Binary files /dev/null and b/public/terrain/19/858511/354050.terrain differ diff --git a/public/terrain/19/858511/354051.terrain b/public/terrain/19/858511/354051.terrain new file mode 100644 index 000000000..5f79e3141 Binary files /dev/null and b/public/terrain/19/858511/354051.terrain differ diff --git a/public/terrain/19/858511/354052.terrain b/public/terrain/19/858511/354052.terrain new file mode 100644 index 000000000..88aa21d63 Binary files /dev/null and b/public/terrain/19/858511/354052.terrain differ diff --git a/public/terrain/19/858511/354053.terrain b/public/terrain/19/858511/354053.terrain new file mode 100644 index 000000000..607230a88 Binary files /dev/null and b/public/terrain/19/858511/354053.terrain differ diff --git a/public/terrain/19/858511/354054.terrain b/public/terrain/19/858511/354054.terrain new file mode 100644 index 000000000..1b6054672 Binary files /dev/null and b/public/terrain/19/858511/354054.terrain differ diff --git a/public/terrain/19/858511/354055.terrain b/public/terrain/19/858511/354055.terrain new file mode 100644 index 000000000..d4e297ee5 Binary files /dev/null and b/public/terrain/19/858511/354055.terrain differ diff --git a/public/terrain/19/858511/354056.terrain b/public/terrain/19/858511/354056.terrain new file mode 100644 index 000000000..1f297eb42 Binary files /dev/null and b/public/terrain/19/858511/354056.terrain differ diff --git a/public/terrain/19/858511/354057.terrain b/public/terrain/19/858511/354057.terrain new file mode 100644 index 000000000..8af99d9bd Binary files /dev/null and b/public/terrain/19/858511/354057.terrain differ diff --git a/public/terrain/19/858511/354058.terrain b/public/terrain/19/858511/354058.terrain new file mode 100644 index 000000000..580910e48 Binary files /dev/null and b/public/terrain/19/858511/354058.terrain differ diff --git a/public/terrain/19/858511/354059.terrain b/public/terrain/19/858511/354059.terrain new file mode 100644 index 000000000..ca779b5fb Binary files /dev/null and b/public/terrain/19/858511/354059.terrain differ diff --git a/public/terrain/19/858512/353743.terrain b/public/terrain/19/858512/353743.terrain new file mode 100644 index 000000000..2ac6dc411 Binary files /dev/null and b/public/terrain/19/858512/353743.terrain differ diff --git a/public/terrain/19/858512/353744.terrain b/public/terrain/19/858512/353744.terrain new file mode 100644 index 000000000..18a048dea Binary files /dev/null and b/public/terrain/19/858512/353744.terrain differ diff --git a/public/terrain/19/858512/353745.terrain b/public/terrain/19/858512/353745.terrain new file mode 100644 index 000000000..b51f6b17c Binary files /dev/null and b/public/terrain/19/858512/353745.terrain differ diff --git a/public/terrain/19/858512/353746.terrain b/public/terrain/19/858512/353746.terrain new file mode 100644 index 000000000..b0a55aca5 Binary files /dev/null and b/public/terrain/19/858512/353746.terrain differ diff --git a/public/terrain/19/858512/353747.terrain b/public/terrain/19/858512/353747.terrain new file mode 100644 index 000000000..f08435423 Binary files /dev/null and b/public/terrain/19/858512/353747.terrain differ diff --git a/public/terrain/19/858512/353748.terrain b/public/terrain/19/858512/353748.terrain new file mode 100644 index 000000000..00e260940 Binary files /dev/null and b/public/terrain/19/858512/353748.terrain differ diff --git a/public/terrain/19/858512/353749.terrain b/public/terrain/19/858512/353749.terrain new file mode 100644 index 000000000..087c98dff Binary files /dev/null and b/public/terrain/19/858512/353749.terrain differ diff --git a/public/terrain/19/858512/353750.terrain b/public/terrain/19/858512/353750.terrain new file mode 100644 index 000000000..d8f1e36f4 Binary files /dev/null and b/public/terrain/19/858512/353750.terrain differ diff --git a/public/terrain/19/858512/353751.terrain b/public/terrain/19/858512/353751.terrain new file mode 100644 index 000000000..91c3caba0 Binary files /dev/null and b/public/terrain/19/858512/353751.terrain differ diff --git a/public/terrain/19/858512/353752.terrain b/public/terrain/19/858512/353752.terrain new file mode 100644 index 000000000..d271cefda Binary files /dev/null and b/public/terrain/19/858512/353752.terrain differ diff --git a/public/terrain/19/858512/353753.terrain b/public/terrain/19/858512/353753.terrain new file mode 100644 index 000000000..bd173fd71 Binary files /dev/null and b/public/terrain/19/858512/353753.terrain differ diff --git a/public/terrain/19/858512/353754.terrain b/public/terrain/19/858512/353754.terrain new file mode 100644 index 000000000..b9f9ec3f7 Binary files /dev/null and b/public/terrain/19/858512/353754.terrain differ diff --git a/public/terrain/19/858512/353755.terrain b/public/terrain/19/858512/353755.terrain new file mode 100644 index 000000000..a07151e59 Binary files /dev/null and b/public/terrain/19/858512/353755.terrain differ diff --git a/public/terrain/19/858512/353756.terrain b/public/terrain/19/858512/353756.terrain new file mode 100644 index 000000000..d6eccaeb6 Binary files /dev/null and b/public/terrain/19/858512/353756.terrain differ diff --git a/public/terrain/19/858512/353757.terrain b/public/terrain/19/858512/353757.terrain new file mode 100644 index 000000000..0ff34b594 Binary files /dev/null and b/public/terrain/19/858512/353757.terrain differ diff --git a/public/terrain/19/858512/353758.terrain b/public/terrain/19/858512/353758.terrain new file mode 100644 index 000000000..dc4a63fa1 Binary files /dev/null and b/public/terrain/19/858512/353758.terrain differ diff --git a/public/terrain/19/858512/353759.terrain b/public/terrain/19/858512/353759.terrain new file mode 100644 index 000000000..39a5dbc3e Binary files /dev/null and b/public/terrain/19/858512/353759.terrain differ diff --git a/public/terrain/19/858512/353760.terrain b/public/terrain/19/858512/353760.terrain new file mode 100644 index 000000000..39474e33c Binary files /dev/null and b/public/terrain/19/858512/353760.terrain differ diff --git a/public/terrain/19/858512/353761.terrain b/public/terrain/19/858512/353761.terrain new file mode 100644 index 000000000..b5f706aef Binary files /dev/null and b/public/terrain/19/858512/353761.terrain differ diff --git a/public/terrain/19/858512/353762.terrain b/public/terrain/19/858512/353762.terrain new file mode 100644 index 000000000..7e90e31d6 Binary files /dev/null and b/public/terrain/19/858512/353762.terrain differ diff --git a/public/terrain/19/858512/353763.terrain b/public/terrain/19/858512/353763.terrain new file mode 100644 index 000000000..fbc30dafe Binary files /dev/null and b/public/terrain/19/858512/353763.terrain differ diff --git a/public/terrain/19/858512/353764.terrain b/public/terrain/19/858512/353764.terrain new file mode 100644 index 000000000..d8cc98f1d Binary files /dev/null and b/public/terrain/19/858512/353764.terrain differ diff --git a/public/terrain/19/858512/353765.terrain b/public/terrain/19/858512/353765.terrain new file mode 100644 index 000000000..4073d798b Binary files /dev/null and b/public/terrain/19/858512/353765.terrain differ diff --git a/public/terrain/19/858512/353766.terrain b/public/terrain/19/858512/353766.terrain new file mode 100644 index 000000000..9d458e921 Binary files /dev/null and b/public/terrain/19/858512/353766.terrain differ diff --git a/public/terrain/19/858512/353767.terrain b/public/terrain/19/858512/353767.terrain new file mode 100644 index 000000000..a1fea6530 Binary files /dev/null and b/public/terrain/19/858512/353767.terrain differ diff --git a/public/terrain/19/858512/353768.terrain b/public/terrain/19/858512/353768.terrain new file mode 100644 index 000000000..a1896d1e4 Binary files /dev/null and b/public/terrain/19/858512/353768.terrain differ diff --git a/public/terrain/19/858512/353769.terrain b/public/terrain/19/858512/353769.terrain new file mode 100644 index 000000000..83b3bda2a Binary files /dev/null and b/public/terrain/19/858512/353769.terrain differ diff --git a/public/terrain/19/858512/353770.terrain b/public/terrain/19/858512/353770.terrain new file mode 100644 index 000000000..00d443972 Binary files /dev/null and b/public/terrain/19/858512/353770.terrain differ diff --git a/public/terrain/19/858512/353771.terrain b/public/terrain/19/858512/353771.terrain new file mode 100644 index 000000000..24450c169 Binary files /dev/null and b/public/terrain/19/858512/353771.terrain differ diff --git a/public/terrain/19/858512/353772.terrain b/public/terrain/19/858512/353772.terrain new file mode 100644 index 000000000..0301b0f1f Binary files /dev/null and b/public/terrain/19/858512/353772.terrain differ diff --git a/public/terrain/19/858512/353773.terrain b/public/terrain/19/858512/353773.terrain new file mode 100644 index 000000000..9835bab97 Binary files /dev/null and b/public/terrain/19/858512/353773.terrain differ diff --git a/public/terrain/19/858512/353774.terrain b/public/terrain/19/858512/353774.terrain new file mode 100644 index 000000000..3a9144633 Binary files /dev/null and b/public/terrain/19/858512/353774.terrain differ diff --git a/public/terrain/19/858512/353775.terrain b/public/terrain/19/858512/353775.terrain new file mode 100644 index 000000000..91d9b0df8 Binary files /dev/null and b/public/terrain/19/858512/353775.terrain differ diff --git a/public/terrain/19/858512/353776.terrain b/public/terrain/19/858512/353776.terrain new file mode 100644 index 000000000..65dd7a2be Binary files /dev/null and b/public/terrain/19/858512/353776.terrain differ diff --git a/public/terrain/19/858512/353777.terrain b/public/terrain/19/858512/353777.terrain new file mode 100644 index 000000000..7a7025339 Binary files /dev/null and b/public/terrain/19/858512/353777.terrain differ diff --git a/public/terrain/19/858512/353778.terrain b/public/terrain/19/858512/353778.terrain new file mode 100644 index 000000000..cde8c9931 Binary files /dev/null and b/public/terrain/19/858512/353778.terrain differ diff --git a/public/terrain/19/858512/353779.terrain b/public/terrain/19/858512/353779.terrain new file mode 100644 index 000000000..7c9d81e5f Binary files /dev/null and b/public/terrain/19/858512/353779.terrain differ diff --git a/public/terrain/19/858512/353780.terrain b/public/terrain/19/858512/353780.terrain new file mode 100644 index 000000000..e6ebd7a3e Binary files /dev/null and b/public/terrain/19/858512/353780.terrain differ diff --git a/public/terrain/19/858512/353781.terrain b/public/terrain/19/858512/353781.terrain new file mode 100644 index 000000000..475135cf9 Binary files /dev/null and b/public/terrain/19/858512/353781.terrain differ diff --git a/public/terrain/19/858512/353782.terrain b/public/terrain/19/858512/353782.terrain new file mode 100644 index 000000000..2345409a6 Binary files /dev/null and b/public/terrain/19/858512/353782.terrain differ diff --git a/public/terrain/19/858512/353783.terrain b/public/terrain/19/858512/353783.terrain new file mode 100644 index 000000000..c2b169108 Binary files /dev/null and b/public/terrain/19/858512/353783.terrain differ diff --git a/public/terrain/19/858512/353784.terrain b/public/terrain/19/858512/353784.terrain new file mode 100644 index 000000000..4931aa781 Binary files /dev/null and b/public/terrain/19/858512/353784.terrain differ diff --git a/public/terrain/19/858512/353785.terrain b/public/terrain/19/858512/353785.terrain new file mode 100644 index 000000000..97d4a4e76 Binary files /dev/null and b/public/terrain/19/858512/353785.terrain differ diff --git a/public/terrain/19/858512/353786.terrain b/public/terrain/19/858512/353786.terrain new file mode 100644 index 000000000..7b15c7f02 Binary files /dev/null and b/public/terrain/19/858512/353786.terrain differ diff --git a/public/terrain/19/858512/353787.terrain b/public/terrain/19/858512/353787.terrain new file mode 100644 index 000000000..a77c08101 Binary files /dev/null and b/public/terrain/19/858512/353787.terrain differ diff --git a/public/terrain/19/858512/353788.terrain b/public/terrain/19/858512/353788.terrain new file mode 100644 index 000000000..9682f5e8e Binary files /dev/null and b/public/terrain/19/858512/353788.terrain differ diff --git a/public/terrain/19/858512/353789.terrain b/public/terrain/19/858512/353789.terrain new file mode 100644 index 000000000..0052f67fd Binary files /dev/null and b/public/terrain/19/858512/353789.terrain differ diff --git a/public/terrain/19/858512/353790.terrain b/public/terrain/19/858512/353790.terrain new file mode 100644 index 000000000..4f59f05e6 Binary files /dev/null and b/public/terrain/19/858512/353790.terrain differ diff --git a/public/terrain/19/858512/353791.terrain b/public/terrain/19/858512/353791.terrain new file mode 100644 index 000000000..bd0284936 Binary files /dev/null and b/public/terrain/19/858512/353791.terrain differ diff --git a/public/terrain/19/858512/353792.terrain b/public/terrain/19/858512/353792.terrain new file mode 100644 index 000000000..4d12f92a4 Binary files /dev/null and b/public/terrain/19/858512/353792.terrain differ diff --git a/public/terrain/19/858512/353793.terrain b/public/terrain/19/858512/353793.terrain new file mode 100644 index 000000000..788ac6808 Binary files /dev/null and b/public/terrain/19/858512/353793.terrain differ diff --git a/public/terrain/19/858512/353794.terrain b/public/terrain/19/858512/353794.terrain new file mode 100644 index 000000000..e786f38e8 Binary files /dev/null and b/public/terrain/19/858512/353794.terrain differ diff --git a/public/terrain/19/858512/353795.terrain b/public/terrain/19/858512/353795.terrain new file mode 100644 index 000000000..067adfef7 Binary files /dev/null and b/public/terrain/19/858512/353795.terrain differ diff --git a/public/terrain/19/858512/353796.terrain b/public/terrain/19/858512/353796.terrain new file mode 100644 index 000000000..96b9fc454 Binary files /dev/null and b/public/terrain/19/858512/353796.terrain differ diff --git a/public/terrain/19/858512/353797.terrain b/public/terrain/19/858512/353797.terrain new file mode 100644 index 000000000..82c10a171 Binary files /dev/null and b/public/terrain/19/858512/353797.terrain differ diff --git a/public/terrain/19/858512/353798.terrain b/public/terrain/19/858512/353798.terrain new file mode 100644 index 000000000..fa518352a Binary files /dev/null and b/public/terrain/19/858512/353798.terrain differ diff --git a/public/terrain/19/858512/353799.terrain b/public/terrain/19/858512/353799.terrain new file mode 100644 index 000000000..56544a839 Binary files /dev/null and b/public/terrain/19/858512/353799.terrain differ diff --git a/public/terrain/19/858512/353800.terrain b/public/terrain/19/858512/353800.terrain new file mode 100644 index 000000000..1889df134 Binary files /dev/null and b/public/terrain/19/858512/353800.terrain differ diff --git a/public/terrain/19/858512/353801.terrain b/public/terrain/19/858512/353801.terrain new file mode 100644 index 000000000..6035262f7 Binary files /dev/null and b/public/terrain/19/858512/353801.terrain differ diff --git a/public/terrain/19/858512/353802.terrain b/public/terrain/19/858512/353802.terrain new file mode 100644 index 000000000..bc7f6fb65 Binary files /dev/null and b/public/terrain/19/858512/353802.terrain differ diff --git a/public/terrain/19/858512/353803.terrain b/public/terrain/19/858512/353803.terrain new file mode 100644 index 000000000..83523c1e0 Binary files /dev/null and b/public/terrain/19/858512/353803.terrain differ diff --git a/public/terrain/19/858512/353804.terrain b/public/terrain/19/858512/353804.terrain new file mode 100644 index 000000000..5806d641a Binary files /dev/null and b/public/terrain/19/858512/353804.terrain differ diff --git a/public/terrain/19/858512/353805.terrain b/public/terrain/19/858512/353805.terrain new file mode 100644 index 000000000..fd59c3041 Binary files /dev/null and b/public/terrain/19/858512/353805.terrain differ diff --git a/public/terrain/19/858512/353806.terrain b/public/terrain/19/858512/353806.terrain new file mode 100644 index 000000000..934b14259 Binary files /dev/null and b/public/terrain/19/858512/353806.terrain differ diff --git a/public/terrain/19/858512/353807.terrain b/public/terrain/19/858512/353807.terrain new file mode 100644 index 000000000..1d9ae3658 Binary files /dev/null and b/public/terrain/19/858512/353807.terrain differ diff --git a/public/terrain/19/858512/353808.terrain b/public/terrain/19/858512/353808.terrain new file mode 100644 index 000000000..01b55c528 Binary files /dev/null and b/public/terrain/19/858512/353808.terrain differ diff --git a/public/terrain/19/858512/353809.terrain b/public/terrain/19/858512/353809.terrain new file mode 100644 index 000000000..1c79529ce Binary files /dev/null and b/public/terrain/19/858512/353809.terrain differ diff --git a/public/terrain/19/858512/353810.terrain b/public/terrain/19/858512/353810.terrain new file mode 100644 index 000000000..10b90df61 Binary files /dev/null and b/public/terrain/19/858512/353810.terrain differ diff --git a/public/terrain/19/858512/353811.terrain b/public/terrain/19/858512/353811.terrain new file mode 100644 index 000000000..39a2551d9 Binary files /dev/null and b/public/terrain/19/858512/353811.terrain differ diff --git a/public/terrain/19/858512/353812.terrain b/public/terrain/19/858512/353812.terrain new file mode 100644 index 000000000..f40301ea9 Binary files /dev/null and b/public/terrain/19/858512/353812.terrain differ diff --git a/public/terrain/19/858512/353813.terrain b/public/terrain/19/858512/353813.terrain new file mode 100644 index 000000000..4639910cf Binary files /dev/null and b/public/terrain/19/858512/353813.terrain differ diff --git a/public/terrain/19/858512/353814.terrain b/public/terrain/19/858512/353814.terrain new file mode 100644 index 000000000..5a7a765d9 Binary files /dev/null and b/public/terrain/19/858512/353814.terrain differ diff --git a/public/terrain/19/858512/353815.terrain b/public/terrain/19/858512/353815.terrain new file mode 100644 index 000000000..0b7e7012f Binary files /dev/null and b/public/terrain/19/858512/353815.terrain differ diff --git a/public/terrain/19/858512/353816.terrain b/public/terrain/19/858512/353816.terrain new file mode 100644 index 000000000..bc0d3bc3e Binary files /dev/null and b/public/terrain/19/858512/353816.terrain differ diff --git a/public/terrain/19/858512/353817.terrain b/public/terrain/19/858512/353817.terrain new file mode 100644 index 000000000..ee0dc97e1 Binary files /dev/null and b/public/terrain/19/858512/353817.terrain differ diff --git a/public/terrain/19/858512/353818.terrain b/public/terrain/19/858512/353818.terrain new file mode 100644 index 000000000..741a442e7 Binary files /dev/null and b/public/terrain/19/858512/353818.terrain differ diff --git a/public/terrain/19/858512/353819.terrain b/public/terrain/19/858512/353819.terrain new file mode 100644 index 000000000..c343e910c Binary files /dev/null and b/public/terrain/19/858512/353819.terrain differ diff --git a/public/terrain/19/858512/353820.terrain b/public/terrain/19/858512/353820.terrain new file mode 100644 index 000000000..dc3265e1e Binary files /dev/null and b/public/terrain/19/858512/353820.terrain differ diff --git a/public/terrain/19/858512/353821.terrain b/public/terrain/19/858512/353821.terrain new file mode 100644 index 000000000..a226cfd75 Binary files /dev/null and b/public/terrain/19/858512/353821.terrain differ diff --git a/public/terrain/19/858512/353822.terrain b/public/terrain/19/858512/353822.terrain new file mode 100644 index 000000000..e5c14d18d Binary files /dev/null and b/public/terrain/19/858512/353822.terrain differ diff --git a/public/terrain/19/858512/353823.terrain b/public/terrain/19/858512/353823.terrain new file mode 100644 index 000000000..f28f54331 Binary files /dev/null and b/public/terrain/19/858512/353823.terrain differ diff --git a/public/terrain/19/858512/353824.terrain b/public/terrain/19/858512/353824.terrain new file mode 100644 index 000000000..2df86a4e5 Binary files /dev/null and b/public/terrain/19/858512/353824.terrain differ diff --git a/public/terrain/19/858512/353825.terrain b/public/terrain/19/858512/353825.terrain new file mode 100644 index 000000000..efcbb4cdd Binary files /dev/null and b/public/terrain/19/858512/353825.terrain differ diff --git a/public/terrain/19/858512/353826.terrain b/public/terrain/19/858512/353826.terrain new file mode 100644 index 000000000..31fae8b08 Binary files /dev/null and b/public/terrain/19/858512/353826.terrain differ diff --git a/public/terrain/19/858512/353827.terrain b/public/terrain/19/858512/353827.terrain new file mode 100644 index 000000000..3683f4019 Binary files /dev/null and b/public/terrain/19/858512/353827.terrain differ diff --git a/public/terrain/19/858512/353828.terrain b/public/terrain/19/858512/353828.terrain new file mode 100644 index 000000000..bcf1a100f Binary files /dev/null and b/public/terrain/19/858512/353828.terrain differ diff --git a/public/terrain/19/858512/353829.terrain b/public/terrain/19/858512/353829.terrain new file mode 100644 index 000000000..952be8749 Binary files /dev/null and b/public/terrain/19/858512/353829.terrain differ diff --git a/public/terrain/19/858512/353830.terrain b/public/terrain/19/858512/353830.terrain new file mode 100644 index 000000000..0f8090884 Binary files /dev/null and b/public/terrain/19/858512/353830.terrain differ diff --git a/public/terrain/19/858512/353831.terrain b/public/terrain/19/858512/353831.terrain new file mode 100644 index 000000000..37dd96cf9 Binary files /dev/null and b/public/terrain/19/858512/353831.terrain differ diff --git a/public/terrain/19/858512/353832.terrain b/public/terrain/19/858512/353832.terrain new file mode 100644 index 000000000..3a9668f6c Binary files /dev/null and b/public/terrain/19/858512/353832.terrain differ diff --git a/public/terrain/19/858512/353833.terrain b/public/terrain/19/858512/353833.terrain new file mode 100644 index 000000000..7073da8a1 Binary files /dev/null and b/public/terrain/19/858512/353833.terrain differ diff --git a/public/terrain/19/858512/353834.terrain b/public/terrain/19/858512/353834.terrain new file mode 100644 index 000000000..cbaf92ec3 Binary files /dev/null and b/public/terrain/19/858512/353834.terrain differ diff --git a/public/terrain/19/858512/353835.terrain b/public/terrain/19/858512/353835.terrain new file mode 100644 index 000000000..2c8814b6e Binary files /dev/null and b/public/terrain/19/858512/353835.terrain differ diff --git a/public/terrain/19/858512/353836.terrain b/public/terrain/19/858512/353836.terrain new file mode 100644 index 000000000..b52b26644 Binary files /dev/null and b/public/terrain/19/858512/353836.terrain differ diff --git a/public/terrain/19/858512/353837.terrain b/public/terrain/19/858512/353837.terrain new file mode 100644 index 000000000..3d6b0770d Binary files /dev/null and b/public/terrain/19/858512/353837.terrain differ diff --git a/public/terrain/19/858512/353838.terrain b/public/terrain/19/858512/353838.terrain new file mode 100644 index 000000000..bc0c5e051 Binary files /dev/null and b/public/terrain/19/858512/353838.terrain differ diff --git a/public/terrain/19/858512/353839.terrain b/public/terrain/19/858512/353839.terrain new file mode 100644 index 000000000..afa3d2871 Binary files /dev/null and b/public/terrain/19/858512/353839.terrain differ diff --git a/public/terrain/19/858512/353840.terrain b/public/terrain/19/858512/353840.terrain new file mode 100644 index 000000000..91f41eb56 Binary files /dev/null and b/public/terrain/19/858512/353840.terrain differ diff --git a/public/terrain/19/858512/353841.terrain b/public/terrain/19/858512/353841.terrain new file mode 100644 index 000000000..440c064df Binary files /dev/null and b/public/terrain/19/858512/353841.terrain differ diff --git a/public/terrain/19/858512/353842.terrain b/public/terrain/19/858512/353842.terrain new file mode 100644 index 000000000..35aca04af Binary files /dev/null and b/public/terrain/19/858512/353842.terrain differ diff --git a/public/terrain/19/858512/353843.terrain b/public/terrain/19/858512/353843.terrain new file mode 100644 index 000000000..13df1dc39 Binary files /dev/null and b/public/terrain/19/858512/353843.terrain differ diff --git a/public/terrain/19/858512/353844.terrain b/public/terrain/19/858512/353844.terrain new file mode 100644 index 000000000..55eb22ab2 Binary files /dev/null and b/public/terrain/19/858512/353844.terrain differ diff --git a/public/terrain/19/858512/353845.terrain b/public/terrain/19/858512/353845.terrain new file mode 100644 index 000000000..b4944fb1d Binary files /dev/null and b/public/terrain/19/858512/353845.terrain differ diff --git a/public/terrain/19/858512/353846.terrain b/public/terrain/19/858512/353846.terrain new file mode 100644 index 000000000..8489678ff Binary files /dev/null and b/public/terrain/19/858512/353846.terrain differ diff --git a/public/terrain/19/858512/353847.terrain b/public/terrain/19/858512/353847.terrain new file mode 100644 index 000000000..31651f1b4 Binary files /dev/null and b/public/terrain/19/858512/353847.terrain differ diff --git a/public/terrain/19/858512/353848.terrain b/public/terrain/19/858512/353848.terrain new file mode 100644 index 000000000..b30ea2dc9 Binary files /dev/null and b/public/terrain/19/858512/353848.terrain differ diff --git a/public/terrain/19/858512/353849.terrain b/public/terrain/19/858512/353849.terrain new file mode 100644 index 000000000..6d63109f4 Binary files /dev/null and b/public/terrain/19/858512/353849.terrain differ diff --git a/public/terrain/19/858512/353850.terrain b/public/terrain/19/858512/353850.terrain new file mode 100644 index 000000000..b9c320375 Binary files /dev/null and b/public/terrain/19/858512/353850.terrain differ diff --git a/public/terrain/19/858512/353851.terrain b/public/terrain/19/858512/353851.terrain new file mode 100644 index 000000000..0a24d75b1 Binary files /dev/null and b/public/terrain/19/858512/353851.terrain differ diff --git a/public/terrain/19/858512/353852.terrain b/public/terrain/19/858512/353852.terrain new file mode 100644 index 000000000..a915dcb4d Binary files /dev/null and b/public/terrain/19/858512/353852.terrain differ diff --git a/public/terrain/19/858512/353853.terrain b/public/terrain/19/858512/353853.terrain new file mode 100644 index 000000000..02a969a7d Binary files /dev/null and b/public/terrain/19/858512/353853.terrain differ diff --git a/public/terrain/19/858512/353854.terrain b/public/terrain/19/858512/353854.terrain new file mode 100644 index 000000000..33ceb55d0 Binary files /dev/null and b/public/terrain/19/858512/353854.terrain differ diff --git a/public/terrain/19/858512/353855.terrain b/public/terrain/19/858512/353855.terrain new file mode 100644 index 000000000..bb1ac3c62 Binary files /dev/null and b/public/terrain/19/858512/353855.terrain differ diff --git a/public/terrain/19/858512/353856.terrain b/public/terrain/19/858512/353856.terrain new file mode 100644 index 000000000..181ce68d4 Binary files /dev/null and b/public/terrain/19/858512/353856.terrain differ diff --git a/public/terrain/19/858512/353857.terrain b/public/terrain/19/858512/353857.terrain new file mode 100644 index 000000000..ccb79df37 Binary files /dev/null and b/public/terrain/19/858512/353857.terrain differ diff --git a/public/terrain/19/858512/353858.terrain b/public/terrain/19/858512/353858.terrain new file mode 100644 index 000000000..94a63404a Binary files /dev/null and b/public/terrain/19/858512/353858.terrain differ diff --git a/public/terrain/19/858512/353859.terrain b/public/terrain/19/858512/353859.terrain new file mode 100644 index 000000000..ee59b3bf8 Binary files /dev/null and b/public/terrain/19/858512/353859.terrain differ diff --git a/public/terrain/19/858512/353860.terrain b/public/terrain/19/858512/353860.terrain new file mode 100644 index 000000000..40e356f6f Binary files /dev/null and b/public/terrain/19/858512/353860.terrain differ diff --git a/public/terrain/19/858512/353861.terrain b/public/terrain/19/858512/353861.terrain new file mode 100644 index 000000000..2cb51879a Binary files /dev/null and b/public/terrain/19/858512/353861.terrain differ diff --git a/public/terrain/19/858512/353862.terrain b/public/terrain/19/858512/353862.terrain new file mode 100644 index 000000000..7378ecbcf Binary files /dev/null and b/public/terrain/19/858512/353862.terrain differ diff --git a/public/terrain/19/858512/353863.terrain b/public/terrain/19/858512/353863.terrain new file mode 100644 index 000000000..58d690152 Binary files /dev/null and b/public/terrain/19/858512/353863.terrain differ diff --git a/public/terrain/19/858512/353864.terrain b/public/terrain/19/858512/353864.terrain new file mode 100644 index 000000000..4b56e55d7 Binary files /dev/null and b/public/terrain/19/858512/353864.terrain differ diff --git a/public/terrain/19/858512/353865.terrain b/public/terrain/19/858512/353865.terrain new file mode 100644 index 000000000..ba186bf45 Binary files /dev/null and b/public/terrain/19/858512/353865.terrain differ diff --git a/public/terrain/19/858512/353866.terrain b/public/terrain/19/858512/353866.terrain new file mode 100644 index 000000000..ad4281fee Binary files /dev/null and b/public/terrain/19/858512/353866.terrain differ diff --git a/public/terrain/19/858512/353867.terrain b/public/terrain/19/858512/353867.terrain new file mode 100644 index 000000000..825adc0b8 Binary files /dev/null and b/public/terrain/19/858512/353867.terrain differ diff --git a/public/terrain/19/858512/353868.terrain b/public/terrain/19/858512/353868.terrain new file mode 100644 index 000000000..446eca1e4 Binary files /dev/null and b/public/terrain/19/858512/353868.terrain differ diff --git a/public/terrain/19/858512/353869.terrain b/public/terrain/19/858512/353869.terrain new file mode 100644 index 000000000..f3318fbd9 Binary files /dev/null and b/public/terrain/19/858512/353869.terrain differ diff --git a/public/terrain/19/858512/353870.terrain b/public/terrain/19/858512/353870.terrain new file mode 100644 index 000000000..c3ae50b3c Binary files /dev/null and b/public/terrain/19/858512/353870.terrain differ diff --git a/public/terrain/19/858512/353871.terrain b/public/terrain/19/858512/353871.terrain new file mode 100644 index 000000000..55919437c Binary files /dev/null and b/public/terrain/19/858512/353871.terrain differ diff --git a/public/terrain/19/858512/353872.terrain b/public/terrain/19/858512/353872.terrain new file mode 100644 index 000000000..349052355 Binary files /dev/null and b/public/terrain/19/858512/353872.terrain differ diff --git a/public/terrain/19/858512/353873.terrain b/public/terrain/19/858512/353873.terrain new file mode 100644 index 000000000..f5e8fa0ad Binary files /dev/null and b/public/terrain/19/858512/353873.terrain differ diff --git a/public/terrain/19/858512/353874.terrain b/public/terrain/19/858512/353874.terrain new file mode 100644 index 000000000..7e148bc81 Binary files /dev/null and b/public/terrain/19/858512/353874.terrain differ diff --git a/public/terrain/19/858512/353875.terrain b/public/terrain/19/858512/353875.terrain new file mode 100644 index 000000000..c9742b9f9 Binary files /dev/null and b/public/terrain/19/858512/353875.terrain differ diff --git a/public/terrain/19/858512/353876.terrain b/public/terrain/19/858512/353876.terrain new file mode 100644 index 000000000..f8e05d115 Binary files /dev/null and b/public/terrain/19/858512/353876.terrain differ diff --git a/public/terrain/19/858512/353877.terrain b/public/terrain/19/858512/353877.terrain new file mode 100644 index 000000000..16d121ab2 Binary files /dev/null and b/public/terrain/19/858512/353877.terrain differ diff --git a/public/terrain/19/858512/353878.terrain b/public/terrain/19/858512/353878.terrain new file mode 100644 index 000000000..b757f0d3e Binary files /dev/null and b/public/terrain/19/858512/353878.terrain differ diff --git a/public/terrain/19/858512/353879.terrain b/public/terrain/19/858512/353879.terrain new file mode 100644 index 000000000..0ee7aba5d Binary files /dev/null and b/public/terrain/19/858512/353879.terrain differ diff --git a/public/terrain/19/858512/353880.terrain b/public/terrain/19/858512/353880.terrain new file mode 100644 index 000000000..554abb44b Binary files /dev/null and b/public/terrain/19/858512/353880.terrain differ diff --git a/public/terrain/19/858512/353881.terrain b/public/terrain/19/858512/353881.terrain new file mode 100644 index 000000000..93dcc1472 Binary files /dev/null and b/public/terrain/19/858512/353881.terrain differ diff --git a/public/terrain/19/858512/353882.terrain b/public/terrain/19/858512/353882.terrain new file mode 100644 index 000000000..044e0e58c Binary files /dev/null and b/public/terrain/19/858512/353882.terrain differ diff --git a/public/terrain/19/858512/353883.terrain b/public/terrain/19/858512/353883.terrain new file mode 100644 index 000000000..681ddb07f Binary files /dev/null and b/public/terrain/19/858512/353883.terrain differ diff --git a/public/terrain/19/858512/353884.terrain b/public/terrain/19/858512/353884.terrain new file mode 100644 index 000000000..48881bc52 Binary files /dev/null and b/public/terrain/19/858512/353884.terrain differ diff --git a/public/terrain/19/858512/353885.terrain b/public/terrain/19/858512/353885.terrain new file mode 100644 index 000000000..228c0fa96 Binary files /dev/null and b/public/terrain/19/858512/353885.terrain differ diff --git a/public/terrain/19/858512/353886.terrain b/public/terrain/19/858512/353886.terrain new file mode 100644 index 000000000..cc2fc1134 Binary files /dev/null and b/public/terrain/19/858512/353886.terrain differ diff --git a/public/terrain/19/858512/353887.terrain b/public/terrain/19/858512/353887.terrain new file mode 100644 index 000000000..f5334d2a7 Binary files /dev/null and b/public/terrain/19/858512/353887.terrain differ diff --git a/public/terrain/19/858512/353888.terrain b/public/terrain/19/858512/353888.terrain new file mode 100644 index 000000000..ca671d190 Binary files /dev/null and b/public/terrain/19/858512/353888.terrain differ diff --git a/public/terrain/19/858512/353889.terrain b/public/terrain/19/858512/353889.terrain new file mode 100644 index 000000000..c4f6abd34 Binary files /dev/null and b/public/terrain/19/858512/353889.terrain differ diff --git a/public/terrain/19/858512/353890.terrain b/public/terrain/19/858512/353890.terrain new file mode 100644 index 000000000..9c76d89b4 Binary files /dev/null and b/public/terrain/19/858512/353890.terrain differ diff --git a/public/terrain/19/858512/353891.terrain b/public/terrain/19/858512/353891.terrain new file mode 100644 index 000000000..30f5b795d Binary files /dev/null and b/public/terrain/19/858512/353891.terrain differ diff --git a/public/terrain/19/858512/353892.terrain b/public/terrain/19/858512/353892.terrain new file mode 100644 index 000000000..f9af392db Binary files /dev/null and b/public/terrain/19/858512/353892.terrain differ diff --git a/public/terrain/19/858512/353893.terrain b/public/terrain/19/858512/353893.terrain new file mode 100644 index 000000000..1b7e8cd18 Binary files /dev/null and b/public/terrain/19/858512/353893.terrain differ diff --git a/public/terrain/19/858512/353894.terrain b/public/terrain/19/858512/353894.terrain new file mode 100644 index 000000000..2d192b75c Binary files /dev/null and b/public/terrain/19/858512/353894.terrain differ diff --git a/public/terrain/19/858512/353895.terrain b/public/terrain/19/858512/353895.terrain new file mode 100644 index 000000000..644aca789 Binary files /dev/null and b/public/terrain/19/858512/353895.terrain differ diff --git a/public/terrain/19/858512/353896.terrain b/public/terrain/19/858512/353896.terrain new file mode 100644 index 000000000..60f9f82ea Binary files /dev/null and b/public/terrain/19/858512/353896.terrain differ diff --git a/public/terrain/19/858512/353897.terrain b/public/terrain/19/858512/353897.terrain new file mode 100644 index 000000000..973c9f45e Binary files /dev/null and b/public/terrain/19/858512/353897.terrain differ diff --git a/public/terrain/19/858512/353898.terrain b/public/terrain/19/858512/353898.terrain new file mode 100644 index 000000000..1b1ff8275 Binary files /dev/null and b/public/terrain/19/858512/353898.terrain differ diff --git a/public/terrain/19/858512/353899.terrain b/public/terrain/19/858512/353899.terrain new file mode 100644 index 000000000..f6fe05a7f Binary files /dev/null and b/public/terrain/19/858512/353899.terrain differ diff --git a/public/terrain/19/858512/353900.terrain b/public/terrain/19/858512/353900.terrain new file mode 100644 index 000000000..b5e2f8186 Binary files /dev/null and b/public/terrain/19/858512/353900.terrain differ diff --git a/public/terrain/19/858512/353901.terrain b/public/terrain/19/858512/353901.terrain new file mode 100644 index 000000000..7d614d127 Binary files /dev/null and b/public/terrain/19/858512/353901.terrain differ diff --git a/public/terrain/19/858512/353902.terrain b/public/terrain/19/858512/353902.terrain new file mode 100644 index 000000000..06439696e Binary files /dev/null and b/public/terrain/19/858512/353902.terrain differ diff --git a/public/terrain/19/858512/353903.terrain b/public/terrain/19/858512/353903.terrain new file mode 100644 index 000000000..e56c87062 Binary files /dev/null and b/public/terrain/19/858512/353903.terrain differ diff --git a/public/terrain/19/858512/353904.terrain b/public/terrain/19/858512/353904.terrain new file mode 100644 index 000000000..86f71e612 Binary files /dev/null and b/public/terrain/19/858512/353904.terrain differ diff --git a/public/terrain/19/858512/353905.terrain b/public/terrain/19/858512/353905.terrain new file mode 100644 index 000000000..ac8ed05f4 Binary files /dev/null and b/public/terrain/19/858512/353905.terrain differ diff --git a/public/terrain/19/858512/353906.terrain b/public/terrain/19/858512/353906.terrain new file mode 100644 index 000000000..86836a424 Binary files /dev/null and b/public/terrain/19/858512/353906.terrain differ diff --git a/public/terrain/19/858512/353907.terrain b/public/terrain/19/858512/353907.terrain new file mode 100644 index 000000000..9cecfad58 Binary files /dev/null and b/public/terrain/19/858512/353907.terrain differ diff --git a/public/terrain/19/858512/353908.terrain b/public/terrain/19/858512/353908.terrain new file mode 100644 index 000000000..89a0826f7 Binary files /dev/null and b/public/terrain/19/858512/353908.terrain differ diff --git a/public/terrain/19/858512/353909.terrain b/public/terrain/19/858512/353909.terrain new file mode 100644 index 000000000..71c8053cc Binary files /dev/null and b/public/terrain/19/858512/353909.terrain differ diff --git a/public/terrain/19/858512/353910.terrain b/public/terrain/19/858512/353910.terrain new file mode 100644 index 000000000..6c9d8e625 Binary files /dev/null and b/public/terrain/19/858512/353910.terrain differ diff --git a/public/terrain/19/858512/353911.terrain b/public/terrain/19/858512/353911.terrain new file mode 100644 index 000000000..10fcf6d05 Binary files /dev/null and b/public/terrain/19/858512/353911.terrain differ diff --git a/public/terrain/19/858512/353912.terrain b/public/terrain/19/858512/353912.terrain new file mode 100644 index 000000000..931efb868 Binary files /dev/null and b/public/terrain/19/858512/353912.terrain differ diff --git a/public/terrain/19/858512/353913.terrain b/public/terrain/19/858512/353913.terrain new file mode 100644 index 000000000..79838fcec Binary files /dev/null and b/public/terrain/19/858512/353913.terrain differ diff --git a/public/terrain/19/858512/353914.terrain b/public/terrain/19/858512/353914.terrain new file mode 100644 index 000000000..add03a3c9 Binary files /dev/null and b/public/terrain/19/858512/353914.terrain differ diff --git a/public/terrain/19/858512/353915.terrain b/public/terrain/19/858512/353915.terrain new file mode 100644 index 000000000..bf70e71c8 Binary files /dev/null and b/public/terrain/19/858512/353915.terrain differ diff --git a/public/terrain/19/858512/353916.terrain b/public/terrain/19/858512/353916.terrain new file mode 100644 index 000000000..8fa2fbe2a Binary files /dev/null and b/public/terrain/19/858512/353916.terrain differ diff --git a/public/terrain/19/858512/353917.terrain b/public/terrain/19/858512/353917.terrain new file mode 100644 index 000000000..0464cb6aa Binary files /dev/null and b/public/terrain/19/858512/353917.terrain differ diff --git a/public/terrain/19/858512/353918.terrain b/public/terrain/19/858512/353918.terrain new file mode 100644 index 000000000..8b3e1d6d8 Binary files /dev/null and b/public/terrain/19/858512/353918.terrain differ diff --git a/public/terrain/19/858512/353919.terrain b/public/terrain/19/858512/353919.terrain new file mode 100644 index 000000000..c093adac8 Binary files /dev/null and b/public/terrain/19/858512/353919.terrain differ diff --git a/public/terrain/19/858512/353920.terrain b/public/terrain/19/858512/353920.terrain new file mode 100644 index 000000000..6e6bbfde2 Binary files /dev/null and b/public/terrain/19/858512/353920.terrain differ diff --git a/public/terrain/19/858512/353921.terrain b/public/terrain/19/858512/353921.terrain new file mode 100644 index 000000000..5fcccd543 Binary files /dev/null and b/public/terrain/19/858512/353921.terrain differ diff --git a/public/terrain/19/858512/353922.terrain b/public/terrain/19/858512/353922.terrain new file mode 100644 index 000000000..6a7b429d1 Binary files /dev/null and b/public/terrain/19/858512/353922.terrain differ diff --git a/public/terrain/19/858512/353923.terrain b/public/terrain/19/858512/353923.terrain new file mode 100644 index 000000000..8b3195185 Binary files /dev/null and b/public/terrain/19/858512/353923.terrain differ diff --git a/public/terrain/19/858512/353924.terrain b/public/terrain/19/858512/353924.terrain new file mode 100644 index 000000000..b7e11b915 Binary files /dev/null and b/public/terrain/19/858512/353924.terrain differ diff --git a/public/terrain/19/858512/353925.terrain b/public/terrain/19/858512/353925.terrain new file mode 100644 index 000000000..8d3c08a43 Binary files /dev/null and b/public/terrain/19/858512/353925.terrain differ diff --git a/public/terrain/19/858512/353926.terrain b/public/terrain/19/858512/353926.terrain new file mode 100644 index 000000000..1ed137f6c Binary files /dev/null and b/public/terrain/19/858512/353926.terrain differ diff --git a/public/terrain/19/858512/353927.terrain b/public/terrain/19/858512/353927.terrain new file mode 100644 index 000000000..f1e8867e2 Binary files /dev/null and b/public/terrain/19/858512/353927.terrain differ diff --git a/public/terrain/19/858512/353928.terrain b/public/terrain/19/858512/353928.terrain new file mode 100644 index 000000000..bd50d7aff Binary files /dev/null and b/public/terrain/19/858512/353928.terrain differ diff --git a/public/terrain/19/858512/353929.terrain b/public/terrain/19/858512/353929.terrain new file mode 100644 index 000000000..07ad50d70 Binary files /dev/null and b/public/terrain/19/858512/353929.terrain differ diff --git a/public/terrain/19/858512/353930.terrain b/public/terrain/19/858512/353930.terrain new file mode 100644 index 000000000..942f6c60e Binary files /dev/null and b/public/terrain/19/858512/353930.terrain differ diff --git a/public/terrain/19/858512/353931.terrain b/public/terrain/19/858512/353931.terrain new file mode 100644 index 000000000..01d54339f Binary files /dev/null and b/public/terrain/19/858512/353931.terrain differ diff --git a/public/terrain/19/858512/353932.terrain b/public/terrain/19/858512/353932.terrain new file mode 100644 index 000000000..aca47e20d Binary files /dev/null and b/public/terrain/19/858512/353932.terrain differ diff --git a/public/terrain/19/858512/353933.terrain b/public/terrain/19/858512/353933.terrain new file mode 100644 index 000000000..dccca66a7 Binary files /dev/null and b/public/terrain/19/858512/353933.terrain differ diff --git a/public/terrain/19/858512/353934.terrain b/public/terrain/19/858512/353934.terrain new file mode 100644 index 000000000..bc9c5e059 Binary files /dev/null and b/public/terrain/19/858512/353934.terrain differ diff --git a/public/terrain/19/858512/353935.terrain b/public/terrain/19/858512/353935.terrain new file mode 100644 index 000000000..c860a8b06 Binary files /dev/null and b/public/terrain/19/858512/353935.terrain differ diff --git a/public/terrain/19/858512/353936.terrain b/public/terrain/19/858512/353936.terrain new file mode 100644 index 000000000..a508ae893 Binary files /dev/null and b/public/terrain/19/858512/353936.terrain differ diff --git a/public/terrain/19/858512/353937.terrain b/public/terrain/19/858512/353937.terrain new file mode 100644 index 000000000..f1506b415 Binary files /dev/null and b/public/terrain/19/858512/353937.terrain differ diff --git a/public/terrain/19/858512/353938.terrain b/public/terrain/19/858512/353938.terrain new file mode 100644 index 000000000..c4deb880e Binary files /dev/null and b/public/terrain/19/858512/353938.terrain differ diff --git a/public/terrain/19/858512/353939.terrain b/public/terrain/19/858512/353939.terrain new file mode 100644 index 000000000..307ba0354 Binary files /dev/null and b/public/terrain/19/858512/353939.terrain differ diff --git a/public/terrain/19/858512/353940.terrain b/public/terrain/19/858512/353940.terrain new file mode 100644 index 000000000..113b05140 Binary files /dev/null and b/public/terrain/19/858512/353940.terrain differ diff --git a/public/terrain/19/858512/353941.terrain b/public/terrain/19/858512/353941.terrain new file mode 100644 index 000000000..36a69efb8 Binary files /dev/null and b/public/terrain/19/858512/353941.terrain differ diff --git a/public/terrain/19/858512/353942.terrain b/public/terrain/19/858512/353942.terrain new file mode 100644 index 000000000..2eaae5e77 Binary files /dev/null and b/public/terrain/19/858512/353942.terrain differ diff --git a/public/terrain/19/858512/353943.terrain b/public/terrain/19/858512/353943.terrain new file mode 100644 index 000000000..b062c3bd3 Binary files /dev/null and b/public/terrain/19/858512/353943.terrain differ diff --git a/public/terrain/19/858512/353944.terrain b/public/terrain/19/858512/353944.terrain new file mode 100644 index 000000000..fb70ed1f3 Binary files /dev/null and b/public/terrain/19/858512/353944.terrain differ diff --git a/public/terrain/19/858512/353945.terrain b/public/terrain/19/858512/353945.terrain new file mode 100644 index 000000000..e3faf2ff6 Binary files /dev/null and b/public/terrain/19/858512/353945.terrain differ diff --git a/public/terrain/19/858512/353946.terrain b/public/terrain/19/858512/353946.terrain new file mode 100644 index 000000000..9bf00b26b Binary files /dev/null and b/public/terrain/19/858512/353946.terrain differ diff --git a/public/terrain/19/858512/353947.terrain b/public/terrain/19/858512/353947.terrain new file mode 100644 index 000000000..5e541c884 Binary files /dev/null and b/public/terrain/19/858512/353947.terrain differ diff --git a/public/terrain/19/858512/353948.terrain b/public/terrain/19/858512/353948.terrain new file mode 100644 index 000000000..67fa508fb Binary files /dev/null and b/public/terrain/19/858512/353948.terrain differ diff --git a/public/terrain/19/858512/353949.terrain b/public/terrain/19/858512/353949.terrain new file mode 100644 index 000000000..8f2dfdb33 Binary files /dev/null and b/public/terrain/19/858512/353949.terrain differ diff --git a/public/terrain/19/858512/353950.terrain b/public/terrain/19/858512/353950.terrain new file mode 100644 index 000000000..1f3384594 Binary files /dev/null and b/public/terrain/19/858512/353950.terrain differ diff --git a/public/terrain/19/858512/353951.terrain b/public/terrain/19/858512/353951.terrain new file mode 100644 index 000000000..005bcb03a Binary files /dev/null and b/public/terrain/19/858512/353951.terrain differ diff --git a/public/terrain/19/858512/353952.terrain b/public/terrain/19/858512/353952.terrain new file mode 100644 index 000000000..25b800797 Binary files /dev/null and b/public/terrain/19/858512/353952.terrain differ diff --git a/public/terrain/19/858512/353953.terrain b/public/terrain/19/858512/353953.terrain new file mode 100644 index 000000000..7ceb2ba03 Binary files /dev/null and b/public/terrain/19/858512/353953.terrain differ diff --git a/public/terrain/19/858512/353954.terrain b/public/terrain/19/858512/353954.terrain new file mode 100644 index 000000000..e76a9dcf9 Binary files /dev/null and b/public/terrain/19/858512/353954.terrain differ diff --git a/public/terrain/19/858512/353955.terrain b/public/terrain/19/858512/353955.terrain new file mode 100644 index 000000000..91ba6eaa3 Binary files /dev/null and b/public/terrain/19/858512/353955.terrain differ diff --git a/public/terrain/19/858512/353956.terrain b/public/terrain/19/858512/353956.terrain new file mode 100644 index 000000000..0fe135d21 Binary files /dev/null and b/public/terrain/19/858512/353956.terrain differ diff --git a/public/terrain/19/858512/353957.terrain b/public/terrain/19/858512/353957.terrain new file mode 100644 index 000000000..18da5f874 Binary files /dev/null and b/public/terrain/19/858512/353957.terrain differ diff --git a/public/terrain/19/858512/353958.terrain b/public/terrain/19/858512/353958.terrain new file mode 100644 index 000000000..dae5ceaff Binary files /dev/null and b/public/terrain/19/858512/353958.terrain differ diff --git a/public/terrain/19/858512/353959.terrain b/public/terrain/19/858512/353959.terrain new file mode 100644 index 000000000..490dfdbe4 Binary files /dev/null and b/public/terrain/19/858512/353959.terrain differ diff --git a/public/terrain/19/858512/353960.terrain b/public/terrain/19/858512/353960.terrain new file mode 100644 index 000000000..1bc4e734a Binary files /dev/null and b/public/terrain/19/858512/353960.terrain differ diff --git a/public/terrain/19/858512/353961.terrain b/public/terrain/19/858512/353961.terrain new file mode 100644 index 000000000..d5abe14ca Binary files /dev/null and b/public/terrain/19/858512/353961.terrain differ diff --git a/public/terrain/19/858512/353962.terrain b/public/terrain/19/858512/353962.terrain new file mode 100644 index 000000000..997b876e3 Binary files /dev/null and b/public/terrain/19/858512/353962.terrain differ diff --git a/public/terrain/19/858512/353963.terrain b/public/terrain/19/858512/353963.terrain new file mode 100644 index 000000000..3fd4f2ee3 Binary files /dev/null and b/public/terrain/19/858512/353963.terrain differ diff --git a/public/terrain/19/858512/353964.terrain b/public/terrain/19/858512/353964.terrain new file mode 100644 index 000000000..e3035af73 Binary files /dev/null and b/public/terrain/19/858512/353964.terrain differ diff --git a/public/terrain/19/858512/353965.terrain b/public/terrain/19/858512/353965.terrain new file mode 100644 index 000000000..ebecac5cb Binary files /dev/null and b/public/terrain/19/858512/353965.terrain differ diff --git a/public/terrain/19/858512/353966.terrain b/public/terrain/19/858512/353966.terrain new file mode 100644 index 000000000..45bd144a6 Binary files /dev/null and b/public/terrain/19/858512/353966.terrain differ diff --git a/public/terrain/19/858512/353967.terrain b/public/terrain/19/858512/353967.terrain new file mode 100644 index 000000000..1cba141ac Binary files /dev/null and b/public/terrain/19/858512/353967.terrain differ diff --git a/public/terrain/19/858512/353968.terrain b/public/terrain/19/858512/353968.terrain new file mode 100644 index 000000000..8d02bb260 Binary files /dev/null and b/public/terrain/19/858512/353968.terrain differ diff --git a/public/terrain/19/858512/353969.terrain b/public/terrain/19/858512/353969.terrain new file mode 100644 index 000000000..a12380027 Binary files /dev/null and b/public/terrain/19/858512/353969.terrain differ diff --git a/public/terrain/19/858512/353970.terrain b/public/terrain/19/858512/353970.terrain new file mode 100644 index 000000000..ca0b6a466 Binary files /dev/null and b/public/terrain/19/858512/353970.terrain differ diff --git a/public/terrain/19/858512/353971.terrain b/public/terrain/19/858512/353971.terrain new file mode 100644 index 000000000..76be1106c Binary files /dev/null and b/public/terrain/19/858512/353971.terrain differ diff --git a/public/terrain/19/858512/353972.terrain b/public/terrain/19/858512/353972.terrain new file mode 100644 index 000000000..3d232c1cc Binary files /dev/null and b/public/terrain/19/858512/353972.terrain differ diff --git a/public/terrain/19/858512/353973.terrain b/public/terrain/19/858512/353973.terrain new file mode 100644 index 000000000..a898510cb Binary files /dev/null and b/public/terrain/19/858512/353973.terrain differ diff --git a/public/terrain/19/858512/353974.terrain b/public/terrain/19/858512/353974.terrain new file mode 100644 index 000000000..12d18a355 Binary files /dev/null and b/public/terrain/19/858512/353974.terrain differ diff --git a/public/terrain/19/858512/353975.terrain b/public/terrain/19/858512/353975.terrain new file mode 100644 index 000000000..e31eab110 Binary files /dev/null and b/public/terrain/19/858512/353975.terrain differ diff --git a/public/terrain/19/858512/353976.terrain b/public/terrain/19/858512/353976.terrain new file mode 100644 index 000000000..485682b78 Binary files /dev/null and b/public/terrain/19/858512/353976.terrain differ diff --git a/public/terrain/19/858512/353977.terrain b/public/terrain/19/858512/353977.terrain new file mode 100644 index 000000000..c10b263cc Binary files /dev/null and b/public/terrain/19/858512/353977.terrain differ diff --git a/public/terrain/19/858512/353978.terrain b/public/terrain/19/858512/353978.terrain new file mode 100644 index 000000000..7af1dd06a Binary files /dev/null and b/public/terrain/19/858512/353978.terrain differ diff --git a/public/terrain/19/858512/353979.terrain b/public/terrain/19/858512/353979.terrain new file mode 100644 index 000000000..560b04372 Binary files /dev/null and b/public/terrain/19/858512/353979.terrain differ diff --git a/public/terrain/19/858512/353980.terrain b/public/terrain/19/858512/353980.terrain new file mode 100644 index 000000000..97d1aefb4 Binary files /dev/null and b/public/terrain/19/858512/353980.terrain differ diff --git a/public/terrain/19/858512/353981.terrain b/public/terrain/19/858512/353981.terrain new file mode 100644 index 000000000..326684375 Binary files /dev/null and b/public/terrain/19/858512/353981.terrain differ diff --git a/public/terrain/19/858512/353982.terrain b/public/terrain/19/858512/353982.terrain new file mode 100644 index 000000000..29b0243ef Binary files /dev/null and b/public/terrain/19/858512/353982.terrain differ diff --git a/public/terrain/19/858512/353983.terrain b/public/terrain/19/858512/353983.terrain new file mode 100644 index 000000000..c85b65d84 Binary files /dev/null and b/public/terrain/19/858512/353983.terrain differ diff --git a/public/terrain/19/858512/353984.terrain b/public/terrain/19/858512/353984.terrain new file mode 100644 index 000000000..8a874b86f Binary files /dev/null and b/public/terrain/19/858512/353984.terrain differ diff --git a/public/terrain/19/858512/353985.terrain b/public/terrain/19/858512/353985.terrain new file mode 100644 index 000000000..3fe4576eb Binary files /dev/null and b/public/terrain/19/858512/353985.terrain differ diff --git a/public/terrain/19/858512/353986.terrain b/public/terrain/19/858512/353986.terrain new file mode 100644 index 000000000..82ee10abb Binary files /dev/null and b/public/terrain/19/858512/353986.terrain differ diff --git a/public/terrain/19/858512/353987.terrain b/public/terrain/19/858512/353987.terrain new file mode 100644 index 000000000..33e3e3c2e Binary files /dev/null and b/public/terrain/19/858512/353987.terrain differ diff --git a/public/terrain/19/858512/353988.terrain b/public/terrain/19/858512/353988.terrain new file mode 100644 index 000000000..c2636dae2 Binary files /dev/null and b/public/terrain/19/858512/353988.terrain differ diff --git a/public/terrain/19/858512/353989.terrain b/public/terrain/19/858512/353989.terrain new file mode 100644 index 000000000..38a9c298c Binary files /dev/null and b/public/terrain/19/858512/353989.terrain differ diff --git a/public/terrain/19/858512/353990.terrain b/public/terrain/19/858512/353990.terrain new file mode 100644 index 000000000..9514d2200 Binary files /dev/null and b/public/terrain/19/858512/353990.terrain differ diff --git a/public/terrain/19/858512/353991.terrain b/public/terrain/19/858512/353991.terrain new file mode 100644 index 000000000..919c210b5 Binary files /dev/null and b/public/terrain/19/858512/353991.terrain differ diff --git a/public/terrain/19/858512/353992.terrain b/public/terrain/19/858512/353992.terrain new file mode 100644 index 000000000..1337d5742 Binary files /dev/null and b/public/terrain/19/858512/353992.terrain differ diff --git a/public/terrain/19/858512/353993.terrain b/public/terrain/19/858512/353993.terrain new file mode 100644 index 000000000..f42a34642 Binary files /dev/null and b/public/terrain/19/858512/353993.terrain differ diff --git a/public/terrain/19/858512/353994.terrain b/public/terrain/19/858512/353994.terrain new file mode 100644 index 000000000..7da196a3b Binary files /dev/null and b/public/terrain/19/858512/353994.terrain differ diff --git a/public/terrain/19/858512/353995.terrain b/public/terrain/19/858512/353995.terrain new file mode 100644 index 000000000..977c0f55d Binary files /dev/null and b/public/terrain/19/858512/353995.terrain differ diff --git a/public/terrain/19/858512/353996.terrain b/public/terrain/19/858512/353996.terrain new file mode 100644 index 000000000..cc305e7da Binary files /dev/null and b/public/terrain/19/858512/353996.terrain differ diff --git a/public/terrain/19/858512/353997.terrain b/public/terrain/19/858512/353997.terrain new file mode 100644 index 000000000..d8f9f74b4 Binary files /dev/null and b/public/terrain/19/858512/353997.terrain differ diff --git a/public/terrain/19/858512/353998.terrain b/public/terrain/19/858512/353998.terrain new file mode 100644 index 000000000..b0c8f89de Binary files /dev/null and b/public/terrain/19/858512/353998.terrain differ diff --git a/public/terrain/19/858512/353999.terrain b/public/terrain/19/858512/353999.terrain new file mode 100644 index 000000000..77613a735 Binary files /dev/null and b/public/terrain/19/858512/353999.terrain differ diff --git a/public/terrain/19/858512/354000.terrain b/public/terrain/19/858512/354000.terrain new file mode 100644 index 000000000..5fd51fdd4 Binary files /dev/null and b/public/terrain/19/858512/354000.terrain differ diff --git a/public/terrain/19/858512/354001.terrain b/public/terrain/19/858512/354001.terrain new file mode 100644 index 000000000..d0ea53ced Binary files /dev/null and b/public/terrain/19/858512/354001.terrain differ diff --git a/public/terrain/19/858512/354002.terrain b/public/terrain/19/858512/354002.terrain new file mode 100644 index 000000000..56398556c Binary files /dev/null and b/public/terrain/19/858512/354002.terrain differ diff --git a/public/terrain/19/858512/354003.terrain b/public/terrain/19/858512/354003.terrain new file mode 100644 index 000000000..03bfdf9a9 Binary files /dev/null and b/public/terrain/19/858512/354003.terrain differ diff --git a/public/terrain/19/858512/354004.terrain b/public/terrain/19/858512/354004.terrain new file mode 100644 index 000000000..f60ad3cfb Binary files /dev/null and b/public/terrain/19/858512/354004.terrain differ diff --git a/public/terrain/19/858512/354005.terrain b/public/terrain/19/858512/354005.terrain new file mode 100644 index 000000000..ad332f3e3 Binary files /dev/null and b/public/terrain/19/858512/354005.terrain differ diff --git a/public/terrain/19/858512/354006.terrain b/public/terrain/19/858512/354006.terrain new file mode 100644 index 000000000..787522d6b Binary files /dev/null and b/public/terrain/19/858512/354006.terrain differ diff --git a/public/terrain/19/858512/354007.terrain b/public/terrain/19/858512/354007.terrain new file mode 100644 index 000000000..c426d6453 Binary files /dev/null and b/public/terrain/19/858512/354007.terrain differ diff --git a/public/terrain/19/858512/354008.terrain b/public/terrain/19/858512/354008.terrain new file mode 100644 index 000000000..70856f31f Binary files /dev/null and b/public/terrain/19/858512/354008.terrain differ diff --git a/public/terrain/19/858512/354009.terrain b/public/terrain/19/858512/354009.terrain new file mode 100644 index 000000000..0770453d0 Binary files /dev/null and b/public/terrain/19/858512/354009.terrain differ diff --git a/public/terrain/19/858512/354010.terrain b/public/terrain/19/858512/354010.terrain new file mode 100644 index 000000000..63d5a306f Binary files /dev/null and b/public/terrain/19/858512/354010.terrain differ diff --git a/public/terrain/19/858512/354011.terrain b/public/terrain/19/858512/354011.terrain new file mode 100644 index 000000000..38412e71a Binary files /dev/null and b/public/terrain/19/858512/354011.terrain differ diff --git a/public/terrain/19/858512/354012.terrain b/public/terrain/19/858512/354012.terrain new file mode 100644 index 000000000..b123d7dc8 Binary files /dev/null and b/public/terrain/19/858512/354012.terrain differ diff --git a/public/terrain/19/858512/354013.terrain b/public/terrain/19/858512/354013.terrain new file mode 100644 index 000000000..d0a37fa49 Binary files /dev/null and b/public/terrain/19/858512/354013.terrain differ diff --git a/public/terrain/19/858512/354014.terrain b/public/terrain/19/858512/354014.terrain new file mode 100644 index 000000000..b8f47579e Binary files /dev/null and b/public/terrain/19/858512/354014.terrain differ diff --git a/public/terrain/19/858512/354015.terrain b/public/terrain/19/858512/354015.terrain new file mode 100644 index 000000000..d7939d17a Binary files /dev/null and b/public/terrain/19/858512/354015.terrain differ diff --git a/public/terrain/19/858512/354016.terrain b/public/terrain/19/858512/354016.terrain new file mode 100644 index 000000000..85a831d1b Binary files /dev/null and b/public/terrain/19/858512/354016.terrain differ diff --git a/public/terrain/19/858512/354017.terrain b/public/terrain/19/858512/354017.terrain new file mode 100644 index 000000000..02fa0e43b Binary files /dev/null and b/public/terrain/19/858512/354017.terrain differ diff --git a/public/terrain/19/858512/354018.terrain b/public/terrain/19/858512/354018.terrain new file mode 100644 index 000000000..897d0e93e Binary files /dev/null and b/public/terrain/19/858512/354018.terrain differ diff --git a/public/terrain/19/858512/354019.terrain b/public/terrain/19/858512/354019.terrain new file mode 100644 index 000000000..e67c2e415 Binary files /dev/null and b/public/terrain/19/858512/354019.terrain differ diff --git a/public/terrain/19/858512/354020.terrain b/public/terrain/19/858512/354020.terrain new file mode 100644 index 000000000..094f18392 Binary files /dev/null and b/public/terrain/19/858512/354020.terrain differ diff --git a/public/terrain/19/858512/354021.terrain b/public/terrain/19/858512/354021.terrain new file mode 100644 index 000000000..5f2936ed0 Binary files /dev/null and b/public/terrain/19/858512/354021.terrain differ diff --git a/public/terrain/19/858512/354022.terrain b/public/terrain/19/858512/354022.terrain new file mode 100644 index 000000000..5a6b13fe8 Binary files /dev/null and b/public/terrain/19/858512/354022.terrain differ diff --git a/public/terrain/19/858512/354023.terrain b/public/terrain/19/858512/354023.terrain new file mode 100644 index 000000000..e4178a28c Binary files /dev/null and b/public/terrain/19/858512/354023.terrain differ diff --git a/public/terrain/19/858512/354024.terrain b/public/terrain/19/858512/354024.terrain new file mode 100644 index 000000000..b15eb25ac Binary files /dev/null and b/public/terrain/19/858512/354024.terrain differ diff --git a/public/terrain/19/858512/354025.terrain b/public/terrain/19/858512/354025.terrain new file mode 100644 index 000000000..dbb8f79a0 Binary files /dev/null and b/public/terrain/19/858512/354025.terrain differ diff --git a/public/terrain/19/858512/354026.terrain b/public/terrain/19/858512/354026.terrain new file mode 100644 index 000000000..40fc74114 Binary files /dev/null and b/public/terrain/19/858512/354026.terrain differ diff --git a/public/terrain/19/858512/354027.terrain b/public/terrain/19/858512/354027.terrain new file mode 100644 index 000000000..8a0c8b523 Binary files /dev/null and b/public/terrain/19/858512/354027.terrain differ diff --git a/public/terrain/19/858512/354028.terrain b/public/terrain/19/858512/354028.terrain new file mode 100644 index 000000000..1db01f513 Binary files /dev/null and b/public/terrain/19/858512/354028.terrain differ diff --git a/public/terrain/19/858512/354029.terrain b/public/terrain/19/858512/354029.terrain new file mode 100644 index 000000000..bcbebe724 Binary files /dev/null and b/public/terrain/19/858512/354029.terrain differ diff --git a/public/terrain/19/858512/354030.terrain b/public/terrain/19/858512/354030.terrain new file mode 100644 index 000000000..af212c59b Binary files /dev/null and b/public/terrain/19/858512/354030.terrain differ diff --git a/public/terrain/19/858512/354031.terrain b/public/terrain/19/858512/354031.terrain new file mode 100644 index 000000000..80bfb4a45 Binary files /dev/null and b/public/terrain/19/858512/354031.terrain differ diff --git a/public/terrain/19/858512/354032.terrain b/public/terrain/19/858512/354032.terrain new file mode 100644 index 000000000..05266f157 Binary files /dev/null and b/public/terrain/19/858512/354032.terrain differ diff --git a/public/terrain/19/858512/354033.terrain b/public/terrain/19/858512/354033.terrain new file mode 100644 index 000000000..3ff708bb6 Binary files /dev/null and b/public/terrain/19/858512/354033.terrain differ diff --git a/public/terrain/19/858512/354034.terrain b/public/terrain/19/858512/354034.terrain new file mode 100644 index 000000000..e234994eb Binary files /dev/null and b/public/terrain/19/858512/354034.terrain differ diff --git a/public/terrain/19/858512/354035.terrain b/public/terrain/19/858512/354035.terrain new file mode 100644 index 000000000..2bbb9191d Binary files /dev/null and b/public/terrain/19/858512/354035.terrain differ diff --git a/public/terrain/19/858512/354036.terrain b/public/terrain/19/858512/354036.terrain new file mode 100644 index 000000000..11d11d914 Binary files /dev/null and b/public/terrain/19/858512/354036.terrain differ diff --git a/public/terrain/19/858512/354037.terrain b/public/terrain/19/858512/354037.terrain new file mode 100644 index 000000000..f60173ef1 Binary files /dev/null and b/public/terrain/19/858512/354037.terrain differ diff --git a/public/terrain/19/858512/354038.terrain b/public/terrain/19/858512/354038.terrain new file mode 100644 index 000000000..28064bf5a Binary files /dev/null and b/public/terrain/19/858512/354038.terrain differ diff --git a/public/terrain/19/858512/354039.terrain b/public/terrain/19/858512/354039.terrain new file mode 100644 index 000000000..9ae9de10a Binary files /dev/null and b/public/terrain/19/858512/354039.terrain differ diff --git a/public/terrain/19/858512/354040.terrain b/public/terrain/19/858512/354040.terrain new file mode 100644 index 000000000..a6c5c02a6 Binary files /dev/null and b/public/terrain/19/858512/354040.terrain differ diff --git a/public/terrain/19/858512/354041.terrain b/public/terrain/19/858512/354041.terrain new file mode 100644 index 000000000..0848a9dd6 Binary files /dev/null and b/public/terrain/19/858512/354041.terrain differ diff --git a/public/terrain/19/858512/354042.terrain b/public/terrain/19/858512/354042.terrain new file mode 100644 index 000000000..af343cde0 Binary files /dev/null and b/public/terrain/19/858512/354042.terrain differ diff --git a/public/terrain/19/858512/354043.terrain b/public/terrain/19/858512/354043.terrain new file mode 100644 index 000000000..41d136108 Binary files /dev/null and b/public/terrain/19/858512/354043.terrain differ diff --git a/public/terrain/19/858512/354044.terrain b/public/terrain/19/858512/354044.terrain new file mode 100644 index 000000000..c187a5aff Binary files /dev/null and b/public/terrain/19/858512/354044.terrain differ diff --git a/public/terrain/19/858512/354045.terrain b/public/terrain/19/858512/354045.terrain new file mode 100644 index 000000000..6aeb2863a Binary files /dev/null and b/public/terrain/19/858512/354045.terrain differ diff --git a/public/terrain/19/858512/354046.terrain b/public/terrain/19/858512/354046.terrain new file mode 100644 index 000000000..7a9230566 Binary files /dev/null and b/public/terrain/19/858512/354046.terrain differ diff --git a/public/terrain/19/858512/354047.terrain b/public/terrain/19/858512/354047.terrain new file mode 100644 index 000000000..7c8d8627f Binary files /dev/null and b/public/terrain/19/858512/354047.terrain differ diff --git a/public/terrain/19/858512/354048.terrain b/public/terrain/19/858512/354048.terrain new file mode 100644 index 000000000..4ccc2f132 Binary files /dev/null and b/public/terrain/19/858512/354048.terrain differ diff --git a/public/terrain/19/858512/354049.terrain b/public/terrain/19/858512/354049.terrain new file mode 100644 index 000000000..6f8222a26 Binary files /dev/null and b/public/terrain/19/858512/354049.terrain differ diff --git a/public/terrain/19/858512/354050.terrain b/public/terrain/19/858512/354050.terrain new file mode 100644 index 000000000..5f2098aee Binary files /dev/null and b/public/terrain/19/858512/354050.terrain differ diff --git a/public/terrain/19/858512/354051.terrain b/public/terrain/19/858512/354051.terrain new file mode 100644 index 000000000..65f399bd1 Binary files /dev/null and b/public/terrain/19/858512/354051.terrain differ diff --git a/public/terrain/19/858512/354052.terrain b/public/terrain/19/858512/354052.terrain new file mode 100644 index 000000000..dfa486191 Binary files /dev/null and b/public/terrain/19/858512/354052.terrain differ diff --git a/public/terrain/19/858512/354053.terrain b/public/terrain/19/858512/354053.terrain new file mode 100644 index 000000000..53dd59112 Binary files /dev/null and b/public/terrain/19/858512/354053.terrain differ diff --git a/public/terrain/19/858512/354054.terrain b/public/terrain/19/858512/354054.terrain new file mode 100644 index 000000000..eebd4bfd1 Binary files /dev/null and b/public/terrain/19/858512/354054.terrain differ diff --git a/public/terrain/19/858512/354055.terrain b/public/terrain/19/858512/354055.terrain new file mode 100644 index 000000000..b32024d20 Binary files /dev/null and b/public/terrain/19/858512/354055.terrain differ diff --git a/public/terrain/19/858512/354056.terrain b/public/terrain/19/858512/354056.terrain new file mode 100644 index 000000000..ecaf27c37 Binary files /dev/null and b/public/terrain/19/858512/354056.terrain differ diff --git a/public/terrain/19/858512/354057.terrain b/public/terrain/19/858512/354057.terrain new file mode 100644 index 000000000..35f77cf0b Binary files /dev/null and b/public/terrain/19/858512/354057.terrain differ diff --git a/public/terrain/19/858512/354058.terrain b/public/terrain/19/858512/354058.terrain new file mode 100644 index 000000000..68a26069c Binary files /dev/null and b/public/terrain/19/858512/354058.terrain differ diff --git a/public/terrain/19/858512/354059.terrain b/public/terrain/19/858512/354059.terrain new file mode 100644 index 000000000..c3e20ce56 Binary files /dev/null and b/public/terrain/19/858512/354059.terrain differ diff --git a/public/terrain/19/858513/353743.terrain b/public/terrain/19/858513/353743.terrain new file mode 100644 index 000000000..e3b51e7c3 Binary files /dev/null and b/public/terrain/19/858513/353743.terrain differ diff --git a/public/terrain/19/858513/353744.terrain b/public/terrain/19/858513/353744.terrain new file mode 100644 index 000000000..256c145a8 Binary files /dev/null and b/public/terrain/19/858513/353744.terrain differ diff --git a/public/terrain/19/858513/353745.terrain b/public/terrain/19/858513/353745.terrain new file mode 100644 index 000000000..0d9677586 Binary files /dev/null and b/public/terrain/19/858513/353745.terrain differ diff --git a/public/terrain/19/858513/353746.terrain b/public/terrain/19/858513/353746.terrain new file mode 100644 index 000000000..62d00532f Binary files /dev/null and b/public/terrain/19/858513/353746.terrain differ diff --git a/public/terrain/19/858513/353747.terrain b/public/terrain/19/858513/353747.terrain new file mode 100644 index 000000000..f70d7d085 Binary files /dev/null and b/public/terrain/19/858513/353747.terrain differ diff --git a/public/terrain/19/858513/353748.terrain b/public/terrain/19/858513/353748.terrain new file mode 100644 index 000000000..9f28633c8 Binary files /dev/null and b/public/terrain/19/858513/353748.terrain differ diff --git a/public/terrain/19/858513/353749.terrain b/public/terrain/19/858513/353749.terrain new file mode 100644 index 000000000..64e227dcc Binary files /dev/null and b/public/terrain/19/858513/353749.terrain differ diff --git a/public/terrain/19/858513/353750.terrain b/public/terrain/19/858513/353750.terrain new file mode 100644 index 000000000..4ac9ad1f4 Binary files /dev/null and b/public/terrain/19/858513/353750.terrain differ diff --git a/public/terrain/19/858513/353751.terrain b/public/terrain/19/858513/353751.terrain new file mode 100644 index 000000000..a50b9ce37 Binary files /dev/null and b/public/terrain/19/858513/353751.terrain differ diff --git a/public/terrain/19/858513/353752.terrain b/public/terrain/19/858513/353752.terrain new file mode 100644 index 000000000..2bbdf0d7d Binary files /dev/null and b/public/terrain/19/858513/353752.terrain differ diff --git a/public/terrain/19/858513/353753.terrain b/public/terrain/19/858513/353753.terrain new file mode 100644 index 000000000..c62e2599c Binary files /dev/null and b/public/terrain/19/858513/353753.terrain differ diff --git a/public/terrain/19/858513/353754.terrain b/public/terrain/19/858513/353754.terrain new file mode 100644 index 000000000..77ee3c99c Binary files /dev/null and b/public/terrain/19/858513/353754.terrain differ diff --git a/public/terrain/19/858513/353755.terrain b/public/terrain/19/858513/353755.terrain new file mode 100644 index 000000000..df94a8833 Binary files /dev/null and b/public/terrain/19/858513/353755.terrain differ diff --git a/public/terrain/19/858513/353756.terrain b/public/terrain/19/858513/353756.terrain new file mode 100644 index 000000000..4df9088c1 Binary files /dev/null and b/public/terrain/19/858513/353756.terrain differ diff --git a/public/terrain/19/858513/353757.terrain b/public/terrain/19/858513/353757.terrain new file mode 100644 index 000000000..3f1986443 Binary files /dev/null and b/public/terrain/19/858513/353757.terrain differ diff --git a/public/terrain/19/858513/353758.terrain b/public/terrain/19/858513/353758.terrain new file mode 100644 index 000000000..aaca79f89 Binary files /dev/null and b/public/terrain/19/858513/353758.terrain differ diff --git a/public/terrain/19/858513/353759.terrain b/public/terrain/19/858513/353759.terrain new file mode 100644 index 000000000..77ded6bde Binary files /dev/null and b/public/terrain/19/858513/353759.terrain differ diff --git a/public/terrain/19/858513/353760.terrain b/public/terrain/19/858513/353760.terrain new file mode 100644 index 000000000..2ea58207d Binary files /dev/null and b/public/terrain/19/858513/353760.terrain differ diff --git a/public/terrain/19/858513/353761.terrain b/public/terrain/19/858513/353761.terrain new file mode 100644 index 000000000..3d8f904c8 Binary files /dev/null and b/public/terrain/19/858513/353761.terrain differ diff --git a/public/terrain/19/858513/353762.terrain b/public/terrain/19/858513/353762.terrain new file mode 100644 index 000000000..1b35c7fbc Binary files /dev/null and b/public/terrain/19/858513/353762.terrain differ diff --git a/public/terrain/19/858513/353763.terrain b/public/terrain/19/858513/353763.terrain new file mode 100644 index 000000000..ec1da786c Binary files /dev/null and b/public/terrain/19/858513/353763.terrain differ diff --git a/public/terrain/19/858513/353764.terrain b/public/terrain/19/858513/353764.terrain new file mode 100644 index 000000000..8b8fe1a9c Binary files /dev/null and b/public/terrain/19/858513/353764.terrain differ diff --git a/public/terrain/19/858513/353765.terrain b/public/terrain/19/858513/353765.terrain new file mode 100644 index 000000000..23e67c425 Binary files /dev/null and b/public/terrain/19/858513/353765.terrain differ diff --git a/public/terrain/19/858513/353766.terrain b/public/terrain/19/858513/353766.terrain new file mode 100644 index 000000000..836b816cc Binary files /dev/null and b/public/terrain/19/858513/353766.terrain differ diff --git a/public/terrain/19/858513/353767.terrain b/public/terrain/19/858513/353767.terrain new file mode 100644 index 000000000..02c307a0f Binary files /dev/null and b/public/terrain/19/858513/353767.terrain differ diff --git a/public/terrain/19/858513/353768.terrain b/public/terrain/19/858513/353768.terrain new file mode 100644 index 000000000..7f354305a Binary files /dev/null and b/public/terrain/19/858513/353768.terrain differ diff --git a/public/terrain/19/858513/353769.terrain b/public/terrain/19/858513/353769.terrain new file mode 100644 index 000000000..5c71ba35d Binary files /dev/null and b/public/terrain/19/858513/353769.terrain differ diff --git a/public/terrain/19/858513/353770.terrain b/public/terrain/19/858513/353770.terrain new file mode 100644 index 000000000..09c315338 Binary files /dev/null and b/public/terrain/19/858513/353770.terrain differ diff --git a/public/terrain/19/858513/353771.terrain b/public/terrain/19/858513/353771.terrain new file mode 100644 index 000000000..3829b87ce Binary files /dev/null and b/public/terrain/19/858513/353771.terrain differ diff --git a/public/terrain/19/858513/353772.terrain b/public/terrain/19/858513/353772.terrain new file mode 100644 index 000000000..3f04c7ccd Binary files /dev/null and b/public/terrain/19/858513/353772.terrain differ diff --git a/public/terrain/19/858513/353773.terrain b/public/terrain/19/858513/353773.terrain new file mode 100644 index 000000000..d1f266edc Binary files /dev/null and b/public/terrain/19/858513/353773.terrain differ diff --git a/public/terrain/19/858513/353774.terrain b/public/terrain/19/858513/353774.terrain new file mode 100644 index 000000000..2139fb52c Binary files /dev/null and b/public/terrain/19/858513/353774.terrain differ diff --git a/public/terrain/19/858513/353775.terrain b/public/terrain/19/858513/353775.terrain new file mode 100644 index 000000000..ca8ad2507 Binary files /dev/null and b/public/terrain/19/858513/353775.terrain differ diff --git a/public/terrain/19/858513/353776.terrain b/public/terrain/19/858513/353776.terrain new file mode 100644 index 000000000..e7554c246 Binary files /dev/null and b/public/terrain/19/858513/353776.terrain differ diff --git a/public/terrain/19/858513/353777.terrain b/public/terrain/19/858513/353777.terrain new file mode 100644 index 000000000..2349e94bc Binary files /dev/null and b/public/terrain/19/858513/353777.terrain differ diff --git a/public/terrain/19/858513/353778.terrain b/public/terrain/19/858513/353778.terrain new file mode 100644 index 000000000..db7a5f132 Binary files /dev/null and b/public/terrain/19/858513/353778.terrain differ diff --git a/public/terrain/19/858513/353779.terrain b/public/terrain/19/858513/353779.terrain new file mode 100644 index 000000000..b24ef9aef Binary files /dev/null and b/public/terrain/19/858513/353779.terrain differ diff --git a/public/terrain/19/858513/353780.terrain b/public/terrain/19/858513/353780.terrain new file mode 100644 index 000000000..a84fdab65 Binary files /dev/null and b/public/terrain/19/858513/353780.terrain differ diff --git a/public/terrain/19/858513/353781.terrain b/public/terrain/19/858513/353781.terrain new file mode 100644 index 000000000..f0e2a79a3 Binary files /dev/null and b/public/terrain/19/858513/353781.terrain differ diff --git a/public/terrain/19/858513/353782.terrain b/public/terrain/19/858513/353782.terrain new file mode 100644 index 000000000..2a31b954e Binary files /dev/null and b/public/terrain/19/858513/353782.terrain differ diff --git a/public/terrain/19/858513/353783.terrain b/public/terrain/19/858513/353783.terrain new file mode 100644 index 000000000..5859360e0 Binary files /dev/null and b/public/terrain/19/858513/353783.terrain differ diff --git a/public/terrain/19/858513/353784.terrain b/public/terrain/19/858513/353784.terrain new file mode 100644 index 000000000..b841a3239 Binary files /dev/null and b/public/terrain/19/858513/353784.terrain differ diff --git a/public/terrain/19/858513/353785.terrain b/public/terrain/19/858513/353785.terrain new file mode 100644 index 000000000..7ec948722 Binary files /dev/null and b/public/terrain/19/858513/353785.terrain differ diff --git a/public/terrain/19/858513/353786.terrain b/public/terrain/19/858513/353786.terrain new file mode 100644 index 000000000..e8dde8c9a Binary files /dev/null and b/public/terrain/19/858513/353786.terrain differ diff --git a/public/terrain/19/858513/353787.terrain b/public/terrain/19/858513/353787.terrain new file mode 100644 index 000000000..6570b9239 Binary files /dev/null and b/public/terrain/19/858513/353787.terrain differ diff --git a/public/terrain/19/858513/353788.terrain b/public/terrain/19/858513/353788.terrain new file mode 100644 index 000000000..f4b363002 Binary files /dev/null and b/public/terrain/19/858513/353788.terrain differ diff --git a/public/terrain/19/858513/353789.terrain b/public/terrain/19/858513/353789.terrain new file mode 100644 index 000000000..c3cc6dedd Binary files /dev/null and b/public/terrain/19/858513/353789.terrain differ diff --git a/public/terrain/19/858513/353790.terrain b/public/terrain/19/858513/353790.terrain new file mode 100644 index 000000000..816b44d8d Binary files /dev/null and b/public/terrain/19/858513/353790.terrain differ diff --git a/public/terrain/19/858513/353791.terrain b/public/terrain/19/858513/353791.terrain new file mode 100644 index 000000000..7d0a838fb Binary files /dev/null and b/public/terrain/19/858513/353791.terrain differ diff --git a/public/terrain/19/858513/353792.terrain b/public/terrain/19/858513/353792.terrain new file mode 100644 index 000000000..c9894cb01 Binary files /dev/null and b/public/terrain/19/858513/353792.terrain differ diff --git a/public/terrain/19/858513/353793.terrain b/public/terrain/19/858513/353793.terrain new file mode 100644 index 000000000..d950f2fea Binary files /dev/null and b/public/terrain/19/858513/353793.terrain differ diff --git a/public/terrain/19/858513/353794.terrain b/public/terrain/19/858513/353794.terrain new file mode 100644 index 000000000..095ec0759 Binary files /dev/null and b/public/terrain/19/858513/353794.terrain differ diff --git a/public/terrain/19/858513/353795.terrain b/public/terrain/19/858513/353795.terrain new file mode 100644 index 000000000..fc5402e7d Binary files /dev/null and b/public/terrain/19/858513/353795.terrain differ diff --git a/public/terrain/19/858513/353796.terrain b/public/terrain/19/858513/353796.terrain new file mode 100644 index 000000000..81df8cdf3 Binary files /dev/null and b/public/terrain/19/858513/353796.terrain differ diff --git a/public/terrain/19/858513/353797.terrain b/public/terrain/19/858513/353797.terrain new file mode 100644 index 000000000..667083466 Binary files /dev/null and b/public/terrain/19/858513/353797.terrain differ diff --git a/public/terrain/19/858513/353798.terrain b/public/terrain/19/858513/353798.terrain new file mode 100644 index 000000000..af0ee64a8 Binary files /dev/null and b/public/terrain/19/858513/353798.terrain differ diff --git a/public/terrain/19/858513/353799.terrain b/public/terrain/19/858513/353799.terrain new file mode 100644 index 000000000..1037b1b13 Binary files /dev/null and b/public/terrain/19/858513/353799.terrain differ diff --git a/public/terrain/19/858513/353800.terrain b/public/terrain/19/858513/353800.terrain new file mode 100644 index 000000000..53d7af044 Binary files /dev/null and b/public/terrain/19/858513/353800.terrain differ diff --git a/public/terrain/19/858513/353801.terrain b/public/terrain/19/858513/353801.terrain new file mode 100644 index 000000000..18c498c98 Binary files /dev/null and b/public/terrain/19/858513/353801.terrain differ diff --git a/public/terrain/19/858513/353802.terrain b/public/terrain/19/858513/353802.terrain new file mode 100644 index 000000000..b8271e9bc Binary files /dev/null and b/public/terrain/19/858513/353802.terrain differ diff --git a/public/terrain/19/858513/353803.terrain b/public/terrain/19/858513/353803.terrain new file mode 100644 index 000000000..c166555d1 Binary files /dev/null and b/public/terrain/19/858513/353803.terrain differ diff --git a/public/terrain/19/858513/353804.terrain b/public/terrain/19/858513/353804.terrain new file mode 100644 index 000000000..8ce368d76 Binary files /dev/null and b/public/terrain/19/858513/353804.terrain differ diff --git a/public/terrain/19/858513/353805.terrain b/public/terrain/19/858513/353805.terrain new file mode 100644 index 000000000..db4f9b492 Binary files /dev/null and b/public/terrain/19/858513/353805.terrain differ diff --git a/public/terrain/19/858513/353806.terrain b/public/terrain/19/858513/353806.terrain new file mode 100644 index 000000000..17dfcb7df Binary files /dev/null and b/public/terrain/19/858513/353806.terrain differ diff --git a/public/terrain/19/858513/353807.terrain b/public/terrain/19/858513/353807.terrain new file mode 100644 index 000000000..8a03fd27e Binary files /dev/null and b/public/terrain/19/858513/353807.terrain differ diff --git a/public/terrain/19/858513/353808.terrain b/public/terrain/19/858513/353808.terrain new file mode 100644 index 000000000..6ed7fd7fe Binary files /dev/null and b/public/terrain/19/858513/353808.terrain differ diff --git a/public/terrain/19/858513/353809.terrain b/public/terrain/19/858513/353809.terrain new file mode 100644 index 000000000..1fb459578 Binary files /dev/null and b/public/terrain/19/858513/353809.terrain differ diff --git a/public/terrain/19/858513/353810.terrain b/public/terrain/19/858513/353810.terrain new file mode 100644 index 000000000..c9f8c34fd Binary files /dev/null and b/public/terrain/19/858513/353810.terrain differ diff --git a/public/terrain/19/858513/353811.terrain b/public/terrain/19/858513/353811.terrain new file mode 100644 index 000000000..a68ff9ba5 Binary files /dev/null and b/public/terrain/19/858513/353811.terrain differ diff --git a/public/terrain/19/858513/353812.terrain b/public/terrain/19/858513/353812.terrain new file mode 100644 index 000000000..a130ac13d Binary files /dev/null and b/public/terrain/19/858513/353812.terrain differ diff --git a/public/terrain/19/858513/353813.terrain b/public/terrain/19/858513/353813.terrain new file mode 100644 index 000000000..3f19a6fb4 Binary files /dev/null and b/public/terrain/19/858513/353813.terrain differ diff --git a/public/terrain/19/858513/353814.terrain b/public/terrain/19/858513/353814.terrain new file mode 100644 index 000000000..f4f595ecd Binary files /dev/null and b/public/terrain/19/858513/353814.terrain differ diff --git a/public/terrain/19/858513/353815.terrain b/public/terrain/19/858513/353815.terrain new file mode 100644 index 000000000..18de60fa5 Binary files /dev/null and b/public/terrain/19/858513/353815.terrain differ diff --git a/public/terrain/19/858513/353816.terrain b/public/terrain/19/858513/353816.terrain new file mode 100644 index 000000000..b87eb084b Binary files /dev/null and b/public/terrain/19/858513/353816.terrain differ diff --git a/public/terrain/19/858513/353817.terrain b/public/terrain/19/858513/353817.terrain new file mode 100644 index 000000000..a4e57e5d1 Binary files /dev/null and b/public/terrain/19/858513/353817.terrain differ diff --git a/public/terrain/19/858513/353818.terrain b/public/terrain/19/858513/353818.terrain new file mode 100644 index 000000000..c0803a1ce Binary files /dev/null and b/public/terrain/19/858513/353818.terrain differ diff --git a/public/terrain/19/858513/353819.terrain b/public/terrain/19/858513/353819.terrain new file mode 100644 index 000000000..89a8593b0 Binary files /dev/null and b/public/terrain/19/858513/353819.terrain differ diff --git a/public/terrain/19/858513/353820.terrain b/public/terrain/19/858513/353820.terrain new file mode 100644 index 000000000..719e18837 Binary files /dev/null and b/public/terrain/19/858513/353820.terrain differ diff --git a/public/terrain/19/858513/353821.terrain b/public/terrain/19/858513/353821.terrain new file mode 100644 index 000000000..7bd9969f0 Binary files /dev/null and b/public/terrain/19/858513/353821.terrain differ diff --git a/public/terrain/19/858513/353822.terrain b/public/terrain/19/858513/353822.terrain new file mode 100644 index 000000000..437e136ff Binary files /dev/null and b/public/terrain/19/858513/353822.terrain differ diff --git a/public/terrain/19/858513/353823.terrain b/public/terrain/19/858513/353823.terrain new file mode 100644 index 000000000..a2947b3e6 Binary files /dev/null and b/public/terrain/19/858513/353823.terrain differ diff --git a/public/terrain/19/858513/353824.terrain b/public/terrain/19/858513/353824.terrain new file mode 100644 index 000000000..18e2d1cbc Binary files /dev/null and b/public/terrain/19/858513/353824.terrain differ diff --git a/public/terrain/19/858513/353825.terrain b/public/terrain/19/858513/353825.terrain new file mode 100644 index 000000000..15f79e5cd Binary files /dev/null and b/public/terrain/19/858513/353825.terrain differ diff --git a/public/terrain/19/858513/353826.terrain b/public/terrain/19/858513/353826.terrain new file mode 100644 index 000000000..014686b3b Binary files /dev/null and b/public/terrain/19/858513/353826.terrain differ diff --git a/public/terrain/19/858513/353827.terrain b/public/terrain/19/858513/353827.terrain new file mode 100644 index 000000000..15534eade Binary files /dev/null and b/public/terrain/19/858513/353827.terrain differ diff --git a/public/terrain/19/858513/353828.terrain b/public/terrain/19/858513/353828.terrain new file mode 100644 index 000000000..a706f4df3 Binary files /dev/null and b/public/terrain/19/858513/353828.terrain differ diff --git a/public/terrain/19/858513/353829.terrain b/public/terrain/19/858513/353829.terrain new file mode 100644 index 000000000..91df77e94 Binary files /dev/null and b/public/terrain/19/858513/353829.terrain differ diff --git a/public/terrain/19/858513/353830.terrain b/public/terrain/19/858513/353830.terrain new file mode 100644 index 000000000..69e11d8ec Binary files /dev/null and b/public/terrain/19/858513/353830.terrain differ diff --git a/public/terrain/19/858513/353831.terrain b/public/terrain/19/858513/353831.terrain new file mode 100644 index 000000000..5d5f6705f Binary files /dev/null and b/public/terrain/19/858513/353831.terrain differ diff --git a/public/terrain/19/858513/353832.terrain b/public/terrain/19/858513/353832.terrain new file mode 100644 index 000000000..083866b43 Binary files /dev/null and b/public/terrain/19/858513/353832.terrain differ diff --git a/public/terrain/19/858513/353833.terrain b/public/terrain/19/858513/353833.terrain new file mode 100644 index 000000000..81c83147c Binary files /dev/null and b/public/terrain/19/858513/353833.terrain differ diff --git a/public/terrain/19/858513/353834.terrain b/public/terrain/19/858513/353834.terrain new file mode 100644 index 000000000..a2243bcc4 Binary files /dev/null and b/public/terrain/19/858513/353834.terrain differ diff --git a/public/terrain/19/858513/353835.terrain b/public/terrain/19/858513/353835.terrain new file mode 100644 index 000000000..6e4fb9773 Binary files /dev/null and b/public/terrain/19/858513/353835.terrain differ diff --git a/public/terrain/19/858513/353836.terrain b/public/terrain/19/858513/353836.terrain new file mode 100644 index 000000000..40b4a4e41 Binary files /dev/null and b/public/terrain/19/858513/353836.terrain differ diff --git a/public/terrain/19/858513/353837.terrain b/public/terrain/19/858513/353837.terrain new file mode 100644 index 000000000..d4846c2da Binary files /dev/null and b/public/terrain/19/858513/353837.terrain differ diff --git a/public/terrain/19/858513/353838.terrain b/public/terrain/19/858513/353838.terrain new file mode 100644 index 000000000..1cc207111 Binary files /dev/null and b/public/terrain/19/858513/353838.terrain differ diff --git a/public/terrain/19/858513/353839.terrain b/public/terrain/19/858513/353839.terrain new file mode 100644 index 000000000..35a8f8c05 Binary files /dev/null and b/public/terrain/19/858513/353839.terrain differ diff --git a/public/terrain/19/858513/353840.terrain b/public/terrain/19/858513/353840.terrain new file mode 100644 index 000000000..021c28c8b Binary files /dev/null and b/public/terrain/19/858513/353840.terrain differ diff --git a/public/terrain/19/858513/353841.terrain b/public/terrain/19/858513/353841.terrain new file mode 100644 index 000000000..38c3fc5ea Binary files /dev/null and b/public/terrain/19/858513/353841.terrain differ diff --git a/public/terrain/19/858513/353842.terrain b/public/terrain/19/858513/353842.terrain new file mode 100644 index 000000000..d13b008f7 Binary files /dev/null and b/public/terrain/19/858513/353842.terrain differ diff --git a/public/terrain/19/858513/353843.terrain b/public/terrain/19/858513/353843.terrain new file mode 100644 index 000000000..980a69404 Binary files /dev/null and b/public/terrain/19/858513/353843.terrain differ diff --git a/public/terrain/19/858513/353844.terrain b/public/terrain/19/858513/353844.terrain new file mode 100644 index 000000000..b77249f1a Binary files /dev/null and b/public/terrain/19/858513/353844.terrain differ diff --git a/public/terrain/19/858513/353845.terrain b/public/terrain/19/858513/353845.terrain new file mode 100644 index 000000000..85671b411 Binary files /dev/null and b/public/terrain/19/858513/353845.terrain differ diff --git a/public/terrain/19/858513/353846.terrain b/public/terrain/19/858513/353846.terrain new file mode 100644 index 000000000..5033658bc Binary files /dev/null and b/public/terrain/19/858513/353846.terrain differ diff --git a/public/terrain/19/858513/353847.terrain b/public/terrain/19/858513/353847.terrain new file mode 100644 index 000000000..c6293cb14 Binary files /dev/null and b/public/terrain/19/858513/353847.terrain differ diff --git a/public/terrain/19/858513/353848.terrain b/public/terrain/19/858513/353848.terrain new file mode 100644 index 000000000..1c804ecd6 Binary files /dev/null and b/public/terrain/19/858513/353848.terrain differ diff --git a/public/terrain/19/858513/353849.terrain b/public/terrain/19/858513/353849.terrain new file mode 100644 index 000000000..f8d0b7d2f Binary files /dev/null and b/public/terrain/19/858513/353849.terrain differ diff --git a/public/terrain/19/858513/353850.terrain b/public/terrain/19/858513/353850.terrain new file mode 100644 index 000000000..0b612f5c9 Binary files /dev/null and b/public/terrain/19/858513/353850.terrain differ diff --git a/public/terrain/19/858513/353851.terrain b/public/terrain/19/858513/353851.terrain new file mode 100644 index 000000000..e4df176f2 Binary files /dev/null and b/public/terrain/19/858513/353851.terrain differ diff --git a/public/terrain/19/858513/353852.terrain b/public/terrain/19/858513/353852.terrain new file mode 100644 index 000000000..ae326d96d Binary files /dev/null and b/public/terrain/19/858513/353852.terrain differ diff --git a/public/terrain/19/858513/353853.terrain b/public/terrain/19/858513/353853.terrain new file mode 100644 index 000000000..a0368b950 Binary files /dev/null and b/public/terrain/19/858513/353853.terrain differ diff --git a/public/terrain/19/858513/353854.terrain b/public/terrain/19/858513/353854.terrain new file mode 100644 index 000000000..02c5ffb47 Binary files /dev/null and b/public/terrain/19/858513/353854.terrain differ diff --git a/public/terrain/19/858513/353855.terrain b/public/terrain/19/858513/353855.terrain new file mode 100644 index 000000000..88fae144b Binary files /dev/null and b/public/terrain/19/858513/353855.terrain differ diff --git a/public/terrain/19/858513/353856.terrain b/public/terrain/19/858513/353856.terrain new file mode 100644 index 000000000..0cf5a9488 Binary files /dev/null and b/public/terrain/19/858513/353856.terrain differ diff --git a/public/terrain/19/858513/353857.terrain b/public/terrain/19/858513/353857.terrain new file mode 100644 index 000000000..757e17a73 Binary files /dev/null and b/public/terrain/19/858513/353857.terrain differ diff --git a/public/terrain/19/858513/353858.terrain b/public/terrain/19/858513/353858.terrain new file mode 100644 index 000000000..cf747047c Binary files /dev/null and b/public/terrain/19/858513/353858.terrain differ diff --git a/public/terrain/19/858513/353859.terrain b/public/terrain/19/858513/353859.terrain new file mode 100644 index 000000000..b64242604 Binary files /dev/null and b/public/terrain/19/858513/353859.terrain differ diff --git a/public/terrain/19/858513/353860.terrain b/public/terrain/19/858513/353860.terrain new file mode 100644 index 000000000..51f723dc8 Binary files /dev/null and b/public/terrain/19/858513/353860.terrain differ diff --git a/public/terrain/19/858513/353861.terrain b/public/terrain/19/858513/353861.terrain new file mode 100644 index 000000000..69201340f Binary files /dev/null and b/public/terrain/19/858513/353861.terrain differ diff --git a/public/terrain/19/858513/353862.terrain b/public/terrain/19/858513/353862.terrain new file mode 100644 index 000000000..558bd174b Binary files /dev/null and b/public/terrain/19/858513/353862.terrain differ diff --git a/public/terrain/19/858513/353863.terrain b/public/terrain/19/858513/353863.terrain new file mode 100644 index 000000000..d34a3f458 Binary files /dev/null and b/public/terrain/19/858513/353863.terrain differ diff --git a/public/terrain/19/858513/353864.terrain b/public/terrain/19/858513/353864.terrain new file mode 100644 index 000000000..91d015363 Binary files /dev/null and b/public/terrain/19/858513/353864.terrain differ diff --git a/public/terrain/19/858513/353865.terrain b/public/terrain/19/858513/353865.terrain new file mode 100644 index 000000000..2e092b833 Binary files /dev/null and b/public/terrain/19/858513/353865.terrain differ diff --git a/public/terrain/19/858513/353866.terrain b/public/terrain/19/858513/353866.terrain new file mode 100644 index 000000000..f7faeae05 Binary files /dev/null and b/public/terrain/19/858513/353866.terrain differ diff --git a/public/terrain/19/858513/353867.terrain b/public/terrain/19/858513/353867.terrain new file mode 100644 index 000000000..c022594a2 Binary files /dev/null and b/public/terrain/19/858513/353867.terrain differ diff --git a/public/terrain/19/858513/353868.terrain b/public/terrain/19/858513/353868.terrain new file mode 100644 index 000000000..5e70c0779 Binary files /dev/null and b/public/terrain/19/858513/353868.terrain differ diff --git a/public/terrain/19/858513/353869.terrain b/public/terrain/19/858513/353869.terrain new file mode 100644 index 000000000..fc90ce5a8 Binary files /dev/null and b/public/terrain/19/858513/353869.terrain differ diff --git a/public/terrain/19/858513/353870.terrain b/public/terrain/19/858513/353870.terrain new file mode 100644 index 000000000..52b517179 Binary files /dev/null and b/public/terrain/19/858513/353870.terrain differ diff --git a/public/terrain/19/858513/353871.terrain b/public/terrain/19/858513/353871.terrain new file mode 100644 index 000000000..f852035de Binary files /dev/null and b/public/terrain/19/858513/353871.terrain differ diff --git a/public/terrain/19/858513/353872.terrain b/public/terrain/19/858513/353872.terrain new file mode 100644 index 000000000..fbe9e97fc Binary files /dev/null and b/public/terrain/19/858513/353872.terrain differ diff --git a/public/terrain/19/858513/353873.terrain b/public/terrain/19/858513/353873.terrain new file mode 100644 index 000000000..46ab85b84 Binary files /dev/null and b/public/terrain/19/858513/353873.terrain differ diff --git a/public/terrain/19/858513/353874.terrain b/public/terrain/19/858513/353874.terrain new file mode 100644 index 000000000..8ca2e78cc Binary files /dev/null and b/public/terrain/19/858513/353874.terrain differ diff --git a/public/terrain/19/858513/353875.terrain b/public/terrain/19/858513/353875.terrain new file mode 100644 index 000000000..b742e1b75 Binary files /dev/null and b/public/terrain/19/858513/353875.terrain differ diff --git a/public/terrain/19/858513/353876.terrain b/public/terrain/19/858513/353876.terrain new file mode 100644 index 000000000..aeca71d2a Binary files /dev/null and b/public/terrain/19/858513/353876.terrain differ diff --git a/public/terrain/19/858513/353877.terrain b/public/terrain/19/858513/353877.terrain new file mode 100644 index 000000000..121ca45d1 Binary files /dev/null and b/public/terrain/19/858513/353877.terrain differ diff --git a/public/terrain/19/858513/353878.terrain b/public/terrain/19/858513/353878.terrain new file mode 100644 index 000000000..a8d158e23 Binary files /dev/null and b/public/terrain/19/858513/353878.terrain differ diff --git a/public/terrain/19/858513/353879.terrain b/public/terrain/19/858513/353879.terrain new file mode 100644 index 000000000..2753a36f3 Binary files /dev/null and b/public/terrain/19/858513/353879.terrain differ diff --git a/public/terrain/19/858513/353880.terrain b/public/terrain/19/858513/353880.terrain new file mode 100644 index 000000000..e98a033bd Binary files /dev/null and b/public/terrain/19/858513/353880.terrain differ diff --git a/public/terrain/19/858513/353881.terrain b/public/terrain/19/858513/353881.terrain new file mode 100644 index 000000000..be4847fed Binary files /dev/null and b/public/terrain/19/858513/353881.terrain differ diff --git a/public/terrain/19/858513/353882.terrain b/public/terrain/19/858513/353882.terrain new file mode 100644 index 000000000..a7d6fe428 Binary files /dev/null and b/public/terrain/19/858513/353882.terrain differ diff --git a/public/terrain/19/858513/353883.terrain b/public/terrain/19/858513/353883.terrain new file mode 100644 index 000000000..cd9629b84 Binary files /dev/null and b/public/terrain/19/858513/353883.terrain differ diff --git a/public/terrain/19/858513/353884.terrain b/public/terrain/19/858513/353884.terrain new file mode 100644 index 000000000..dc51cbe25 Binary files /dev/null and b/public/terrain/19/858513/353884.terrain differ diff --git a/public/terrain/19/858513/353885.terrain b/public/terrain/19/858513/353885.terrain new file mode 100644 index 000000000..efe3591f5 Binary files /dev/null and b/public/terrain/19/858513/353885.terrain differ diff --git a/public/terrain/19/858513/353886.terrain b/public/terrain/19/858513/353886.terrain new file mode 100644 index 000000000..a6563cbec Binary files /dev/null and b/public/terrain/19/858513/353886.terrain differ diff --git a/public/terrain/19/858513/353887.terrain b/public/terrain/19/858513/353887.terrain new file mode 100644 index 000000000..03709a90b Binary files /dev/null and b/public/terrain/19/858513/353887.terrain differ diff --git a/public/terrain/19/858513/353888.terrain b/public/terrain/19/858513/353888.terrain new file mode 100644 index 000000000..93a353ff3 Binary files /dev/null and b/public/terrain/19/858513/353888.terrain differ diff --git a/public/terrain/19/858513/353889.terrain b/public/terrain/19/858513/353889.terrain new file mode 100644 index 000000000..176f842a5 Binary files /dev/null and b/public/terrain/19/858513/353889.terrain differ diff --git a/public/terrain/19/858513/353890.terrain b/public/terrain/19/858513/353890.terrain new file mode 100644 index 000000000..49881b9a4 Binary files /dev/null and b/public/terrain/19/858513/353890.terrain differ diff --git a/public/terrain/19/858513/353891.terrain b/public/terrain/19/858513/353891.terrain new file mode 100644 index 000000000..0ee89d612 Binary files /dev/null and b/public/terrain/19/858513/353891.terrain differ diff --git a/public/terrain/19/858513/353892.terrain b/public/terrain/19/858513/353892.terrain new file mode 100644 index 000000000..5be00aba5 Binary files /dev/null and b/public/terrain/19/858513/353892.terrain differ diff --git a/public/terrain/19/858513/353893.terrain b/public/terrain/19/858513/353893.terrain new file mode 100644 index 000000000..af86478a5 Binary files /dev/null and b/public/terrain/19/858513/353893.terrain differ diff --git a/public/terrain/19/858513/353894.terrain b/public/terrain/19/858513/353894.terrain new file mode 100644 index 000000000..0eec1a880 Binary files /dev/null and b/public/terrain/19/858513/353894.terrain differ diff --git a/public/terrain/19/858513/353895.terrain b/public/terrain/19/858513/353895.terrain new file mode 100644 index 000000000..9aff3ce83 Binary files /dev/null and b/public/terrain/19/858513/353895.terrain differ diff --git a/public/terrain/19/858513/353896.terrain b/public/terrain/19/858513/353896.terrain new file mode 100644 index 000000000..1bfe9c930 Binary files /dev/null and b/public/terrain/19/858513/353896.terrain differ diff --git a/public/terrain/19/858513/353897.terrain b/public/terrain/19/858513/353897.terrain new file mode 100644 index 000000000..ebe10233c Binary files /dev/null and b/public/terrain/19/858513/353897.terrain differ diff --git a/public/terrain/19/858513/353898.terrain b/public/terrain/19/858513/353898.terrain new file mode 100644 index 000000000..e629f1940 Binary files /dev/null and b/public/terrain/19/858513/353898.terrain differ diff --git a/public/terrain/19/858513/353899.terrain b/public/terrain/19/858513/353899.terrain new file mode 100644 index 000000000..a64f29ac5 Binary files /dev/null and b/public/terrain/19/858513/353899.terrain differ diff --git a/public/terrain/19/858513/353900.terrain b/public/terrain/19/858513/353900.terrain new file mode 100644 index 000000000..db68cbb52 Binary files /dev/null and b/public/terrain/19/858513/353900.terrain differ diff --git a/public/terrain/19/858513/353901.terrain b/public/terrain/19/858513/353901.terrain new file mode 100644 index 000000000..4e9c061a7 Binary files /dev/null and b/public/terrain/19/858513/353901.terrain differ diff --git a/public/terrain/19/858513/353902.terrain b/public/terrain/19/858513/353902.terrain new file mode 100644 index 000000000..b226134c4 Binary files /dev/null and b/public/terrain/19/858513/353902.terrain differ diff --git a/public/terrain/19/858513/353903.terrain b/public/terrain/19/858513/353903.terrain new file mode 100644 index 000000000..9fe3060eb Binary files /dev/null and b/public/terrain/19/858513/353903.terrain differ diff --git a/public/terrain/19/858513/353904.terrain b/public/terrain/19/858513/353904.terrain new file mode 100644 index 000000000..d3eec7a7d Binary files /dev/null and b/public/terrain/19/858513/353904.terrain differ diff --git a/public/terrain/19/858513/353905.terrain b/public/terrain/19/858513/353905.terrain new file mode 100644 index 000000000..9cda116ad Binary files /dev/null and b/public/terrain/19/858513/353905.terrain differ diff --git a/public/terrain/19/858513/353906.terrain b/public/terrain/19/858513/353906.terrain new file mode 100644 index 000000000..e92fe2ee9 Binary files /dev/null and b/public/terrain/19/858513/353906.terrain differ diff --git a/public/terrain/19/858513/353907.terrain b/public/terrain/19/858513/353907.terrain new file mode 100644 index 000000000..32b4727f0 Binary files /dev/null and b/public/terrain/19/858513/353907.terrain differ diff --git a/public/terrain/19/858513/353908.terrain b/public/terrain/19/858513/353908.terrain new file mode 100644 index 000000000..927713438 Binary files /dev/null and b/public/terrain/19/858513/353908.terrain differ diff --git a/public/terrain/19/858513/353909.terrain b/public/terrain/19/858513/353909.terrain new file mode 100644 index 000000000..722f6489d Binary files /dev/null and b/public/terrain/19/858513/353909.terrain differ diff --git a/public/terrain/19/858513/353910.terrain b/public/terrain/19/858513/353910.terrain new file mode 100644 index 000000000..46a0d5365 Binary files /dev/null and b/public/terrain/19/858513/353910.terrain differ diff --git a/public/terrain/19/858513/353911.terrain b/public/terrain/19/858513/353911.terrain new file mode 100644 index 000000000..1b5fecfde Binary files /dev/null and b/public/terrain/19/858513/353911.terrain differ diff --git a/public/terrain/19/858513/353912.terrain b/public/terrain/19/858513/353912.terrain new file mode 100644 index 000000000..23d3012e5 Binary files /dev/null and b/public/terrain/19/858513/353912.terrain differ diff --git a/public/terrain/19/858513/353913.terrain b/public/terrain/19/858513/353913.terrain new file mode 100644 index 000000000..04b21d489 Binary files /dev/null and b/public/terrain/19/858513/353913.terrain differ diff --git a/public/terrain/19/858513/353914.terrain b/public/terrain/19/858513/353914.terrain new file mode 100644 index 000000000..d31cc1151 Binary files /dev/null and b/public/terrain/19/858513/353914.terrain differ diff --git a/public/terrain/19/858513/353915.terrain b/public/terrain/19/858513/353915.terrain new file mode 100644 index 000000000..e5c6d9797 Binary files /dev/null and b/public/terrain/19/858513/353915.terrain differ diff --git a/public/terrain/19/858513/353916.terrain b/public/terrain/19/858513/353916.terrain new file mode 100644 index 000000000..4f055ebad Binary files /dev/null and b/public/terrain/19/858513/353916.terrain differ diff --git a/public/terrain/19/858513/353917.terrain b/public/terrain/19/858513/353917.terrain new file mode 100644 index 000000000..a3430cdbc Binary files /dev/null and b/public/terrain/19/858513/353917.terrain differ diff --git a/public/terrain/19/858513/353918.terrain b/public/terrain/19/858513/353918.terrain new file mode 100644 index 000000000..616019cfa Binary files /dev/null and b/public/terrain/19/858513/353918.terrain differ diff --git a/public/terrain/19/858513/353919.terrain b/public/terrain/19/858513/353919.terrain new file mode 100644 index 000000000..2e8a46549 Binary files /dev/null and b/public/terrain/19/858513/353919.terrain differ diff --git a/public/terrain/19/858513/353920.terrain b/public/terrain/19/858513/353920.terrain new file mode 100644 index 000000000..06b1ee1f4 Binary files /dev/null and b/public/terrain/19/858513/353920.terrain differ diff --git a/public/terrain/19/858513/353921.terrain b/public/terrain/19/858513/353921.terrain new file mode 100644 index 000000000..13a15be36 Binary files /dev/null and b/public/terrain/19/858513/353921.terrain differ diff --git a/public/terrain/19/858513/353922.terrain b/public/terrain/19/858513/353922.terrain new file mode 100644 index 000000000..6ecc08461 Binary files /dev/null and b/public/terrain/19/858513/353922.terrain differ diff --git a/public/terrain/19/858513/353923.terrain b/public/terrain/19/858513/353923.terrain new file mode 100644 index 000000000..2bb96d568 Binary files /dev/null and b/public/terrain/19/858513/353923.terrain differ diff --git a/public/terrain/19/858513/353924.terrain b/public/terrain/19/858513/353924.terrain new file mode 100644 index 000000000..65a8c6bd7 Binary files /dev/null and b/public/terrain/19/858513/353924.terrain differ diff --git a/public/terrain/19/858513/353925.terrain b/public/terrain/19/858513/353925.terrain new file mode 100644 index 000000000..e9601eab0 Binary files /dev/null and b/public/terrain/19/858513/353925.terrain differ diff --git a/public/terrain/19/858513/353926.terrain b/public/terrain/19/858513/353926.terrain new file mode 100644 index 000000000..6984912a5 Binary files /dev/null and b/public/terrain/19/858513/353926.terrain differ diff --git a/public/terrain/19/858513/353927.terrain b/public/terrain/19/858513/353927.terrain new file mode 100644 index 000000000..af32dc376 Binary files /dev/null and b/public/terrain/19/858513/353927.terrain differ diff --git a/public/terrain/19/858513/353928.terrain b/public/terrain/19/858513/353928.terrain new file mode 100644 index 000000000..14965ed14 Binary files /dev/null and b/public/terrain/19/858513/353928.terrain differ diff --git a/public/terrain/19/858513/353929.terrain b/public/terrain/19/858513/353929.terrain new file mode 100644 index 000000000..e0f6b858a Binary files /dev/null and b/public/terrain/19/858513/353929.terrain differ diff --git a/public/terrain/19/858513/353930.terrain b/public/terrain/19/858513/353930.terrain new file mode 100644 index 000000000..3be6bc7f8 Binary files /dev/null and b/public/terrain/19/858513/353930.terrain differ diff --git a/public/terrain/19/858513/353931.terrain b/public/terrain/19/858513/353931.terrain new file mode 100644 index 000000000..d76ce51b4 Binary files /dev/null and b/public/terrain/19/858513/353931.terrain differ diff --git a/public/terrain/19/858513/353932.terrain b/public/terrain/19/858513/353932.terrain new file mode 100644 index 000000000..bb2a8ada8 Binary files /dev/null and b/public/terrain/19/858513/353932.terrain differ diff --git a/public/terrain/19/858513/353933.terrain b/public/terrain/19/858513/353933.terrain new file mode 100644 index 000000000..9b9267354 Binary files /dev/null and b/public/terrain/19/858513/353933.terrain differ diff --git a/public/terrain/19/858513/353934.terrain b/public/terrain/19/858513/353934.terrain new file mode 100644 index 000000000..363400e44 Binary files /dev/null and b/public/terrain/19/858513/353934.terrain differ diff --git a/public/terrain/19/858513/353935.terrain b/public/terrain/19/858513/353935.terrain new file mode 100644 index 000000000..36190d25a Binary files /dev/null and b/public/terrain/19/858513/353935.terrain differ diff --git a/public/terrain/19/858513/353936.terrain b/public/terrain/19/858513/353936.terrain new file mode 100644 index 000000000..b1e76dd94 Binary files /dev/null and b/public/terrain/19/858513/353936.terrain differ diff --git a/public/terrain/19/858513/353937.terrain b/public/terrain/19/858513/353937.terrain new file mode 100644 index 000000000..26798dd71 Binary files /dev/null and b/public/terrain/19/858513/353937.terrain differ diff --git a/public/terrain/19/858513/353938.terrain b/public/terrain/19/858513/353938.terrain new file mode 100644 index 000000000..82684d4a2 Binary files /dev/null and b/public/terrain/19/858513/353938.terrain differ diff --git a/public/terrain/19/858513/353939.terrain b/public/terrain/19/858513/353939.terrain new file mode 100644 index 000000000..8fd6f029c Binary files /dev/null and b/public/terrain/19/858513/353939.terrain differ diff --git a/public/terrain/19/858513/353940.terrain b/public/terrain/19/858513/353940.terrain new file mode 100644 index 000000000..b06ab4ee1 Binary files /dev/null and b/public/terrain/19/858513/353940.terrain differ diff --git a/public/terrain/19/858513/353941.terrain b/public/terrain/19/858513/353941.terrain new file mode 100644 index 000000000..120b1a350 Binary files /dev/null and b/public/terrain/19/858513/353941.terrain differ diff --git a/public/terrain/19/858513/353942.terrain b/public/terrain/19/858513/353942.terrain new file mode 100644 index 000000000..f2a3cd799 Binary files /dev/null and b/public/terrain/19/858513/353942.terrain differ diff --git a/public/terrain/19/858513/353943.terrain b/public/terrain/19/858513/353943.terrain new file mode 100644 index 000000000..6534ffff1 Binary files /dev/null and b/public/terrain/19/858513/353943.terrain differ diff --git a/public/terrain/19/858513/353944.terrain b/public/terrain/19/858513/353944.terrain new file mode 100644 index 000000000..2d26060e7 Binary files /dev/null and b/public/terrain/19/858513/353944.terrain differ diff --git a/public/terrain/19/858513/353945.terrain b/public/terrain/19/858513/353945.terrain new file mode 100644 index 000000000..a32594414 Binary files /dev/null and b/public/terrain/19/858513/353945.terrain differ diff --git a/public/terrain/19/858513/353946.terrain b/public/terrain/19/858513/353946.terrain new file mode 100644 index 000000000..157a2db2c Binary files /dev/null and b/public/terrain/19/858513/353946.terrain differ diff --git a/public/terrain/19/858513/353947.terrain b/public/terrain/19/858513/353947.terrain new file mode 100644 index 000000000..f83959acf Binary files /dev/null and b/public/terrain/19/858513/353947.terrain differ diff --git a/public/terrain/19/858513/353948.terrain b/public/terrain/19/858513/353948.terrain new file mode 100644 index 000000000..a9e840107 Binary files /dev/null and b/public/terrain/19/858513/353948.terrain differ diff --git a/public/terrain/19/858513/353949.terrain b/public/terrain/19/858513/353949.terrain new file mode 100644 index 000000000..d36084830 Binary files /dev/null and b/public/terrain/19/858513/353949.terrain differ diff --git a/public/terrain/19/858513/353950.terrain b/public/terrain/19/858513/353950.terrain new file mode 100644 index 000000000..23a50245e Binary files /dev/null and b/public/terrain/19/858513/353950.terrain differ diff --git a/public/terrain/19/858513/353951.terrain b/public/terrain/19/858513/353951.terrain new file mode 100644 index 000000000..8612c7269 Binary files /dev/null and b/public/terrain/19/858513/353951.terrain differ diff --git a/public/terrain/19/858513/353952.terrain b/public/terrain/19/858513/353952.terrain new file mode 100644 index 000000000..b794cee4f Binary files /dev/null and b/public/terrain/19/858513/353952.terrain differ diff --git a/public/terrain/19/858513/353953.terrain b/public/terrain/19/858513/353953.terrain new file mode 100644 index 000000000..0e0f83c52 Binary files /dev/null and b/public/terrain/19/858513/353953.terrain differ diff --git a/public/terrain/19/858513/353954.terrain b/public/terrain/19/858513/353954.terrain new file mode 100644 index 000000000..8aec78050 Binary files /dev/null and b/public/terrain/19/858513/353954.terrain differ diff --git a/public/terrain/19/858513/353955.terrain b/public/terrain/19/858513/353955.terrain new file mode 100644 index 000000000..2b687f031 Binary files /dev/null and b/public/terrain/19/858513/353955.terrain differ diff --git a/public/terrain/19/858513/353956.terrain b/public/terrain/19/858513/353956.terrain new file mode 100644 index 000000000..6b24a3f7c Binary files /dev/null and b/public/terrain/19/858513/353956.terrain differ diff --git a/public/terrain/19/858513/353957.terrain b/public/terrain/19/858513/353957.terrain new file mode 100644 index 000000000..29e3f5624 Binary files /dev/null and b/public/terrain/19/858513/353957.terrain differ diff --git a/public/terrain/19/858513/353958.terrain b/public/terrain/19/858513/353958.terrain new file mode 100644 index 000000000..78b6bf01a Binary files /dev/null and b/public/terrain/19/858513/353958.terrain differ diff --git a/public/terrain/19/858513/353959.terrain b/public/terrain/19/858513/353959.terrain new file mode 100644 index 000000000..b6089ffe6 Binary files /dev/null and b/public/terrain/19/858513/353959.terrain differ diff --git a/public/terrain/19/858513/353960.terrain b/public/terrain/19/858513/353960.terrain new file mode 100644 index 000000000..afaa4005a Binary files /dev/null and b/public/terrain/19/858513/353960.terrain differ diff --git a/public/terrain/19/858513/353961.terrain b/public/terrain/19/858513/353961.terrain new file mode 100644 index 000000000..481ae91e9 Binary files /dev/null and b/public/terrain/19/858513/353961.terrain differ diff --git a/public/terrain/19/858513/353962.terrain b/public/terrain/19/858513/353962.terrain new file mode 100644 index 000000000..a8037e6f5 Binary files /dev/null and b/public/terrain/19/858513/353962.terrain differ diff --git a/public/terrain/19/858513/353963.terrain b/public/terrain/19/858513/353963.terrain new file mode 100644 index 000000000..0de7bc001 Binary files /dev/null and b/public/terrain/19/858513/353963.terrain differ diff --git a/public/terrain/19/858513/353964.terrain b/public/terrain/19/858513/353964.terrain new file mode 100644 index 000000000..2310256aa Binary files /dev/null and b/public/terrain/19/858513/353964.terrain differ diff --git a/public/terrain/19/858513/353965.terrain b/public/terrain/19/858513/353965.terrain new file mode 100644 index 000000000..220e2e785 Binary files /dev/null and b/public/terrain/19/858513/353965.terrain differ diff --git a/public/terrain/19/858513/353966.terrain b/public/terrain/19/858513/353966.terrain new file mode 100644 index 000000000..1c4327cda Binary files /dev/null and b/public/terrain/19/858513/353966.terrain differ diff --git a/public/terrain/19/858513/353967.terrain b/public/terrain/19/858513/353967.terrain new file mode 100644 index 000000000..288b7f2ab Binary files /dev/null and b/public/terrain/19/858513/353967.terrain differ diff --git a/public/terrain/19/858513/353968.terrain b/public/terrain/19/858513/353968.terrain new file mode 100644 index 000000000..692f5824b Binary files /dev/null and b/public/terrain/19/858513/353968.terrain differ diff --git a/public/terrain/19/858513/353969.terrain b/public/terrain/19/858513/353969.terrain new file mode 100644 index 000000000..f551d2d01 Binary files /dev/null and b/public/terrain/19/858513/353969.terrain differ diff --git a/public/terrain/19/858513/353970.terrain b/public/terrain/19/858513/353970.terrain new file mode 100644 index 000000000..9f5a3330e Binary files /dev/null and b/public/terrain/19/858513/353970.terrain differ diff --git a/public/terrain/19/858513/353971.terrain b/public/terrain/19/858513/353971.terrain new file mode 100644 index 000000000..c54293134 Binary files /dev/null and b/public/terrain/19/858513/353971.terrain differ diff --git a/public/terrain/19/858513/353972.terrain b/public/terrain/19/858513/353972.terrain new file mode 100644 index 000000000..fbe82c051 Binary files /dev/null and b/public/terrain/19/858513/353972.terrain differ diff --git a/public/terrain/19/858513/353973.terrain b/public/terrain/19/858513/353973.terrain new file mode 100644 index 000000000..e55790329 Binary files /dev/null and b/public/terrain/19/858513/353973.terrain differ diff --git a/public/terrain/19/858513/353974.terrain b/public/terrain/19/858513/353974.terrain new file mode 100644 index 000000000..37d80082c Binary files /dev/null and b/public/terrain/19/858513/353974.terrain differ diff --git a/public/terrain/19/858513/353975.terrain b/public/terrain/19/858513/353975.terrain new file mode 100644 index 000000000..f9fe09de1 Binary files /dev/null and b/public/terrain/19/858513/353975.terrain differ diff --git a/public/terrain/19/858513/353976.terrain b/public/terrain/19/858513/353976.terrain new file mode 100644 index 000000000..54f161fe7 Binary files /dev/null and b/public/terrain/19/858513/353976.terrain differ diff --git a/public/terrain/19/858513/353977.terrain b/public/terrain/19/858513/353977.terrain new file mode 100644 index 000000000..038ac709c Binary files /dev/null and b/public/terrain/19/858513/353977.terrain differ diff --git a/public/terrain/19/858513/353978.terrain b/public/terrain/19/858513/353978.terrain new file mode 100644 index 000000000..d78be868d Binary files /dev/null and b/public/terrain/19/858513/353978.terrain differ diff --git a/public/terrain/19/858513/353979.terrain b/public/terrain/19/858513/353979.terrain new file mode 100644 index 000000000..9bf8ca22a Binary files /dev/null and b/public/terrain/19/858513/353979.terrain differ diff --git a/public/terrain/19/858513/353980.terrain b/public/terrain/19/858513/353980.terrain new file mode 100644 index 000000000..dc5c1ab2a Binary files /dev/null and b/public/terrain/19/858513/353980.terrain differ diff --git a/public/terrain/19/858513/353981.terrain b/public/terrain/19/858513/353981.terrain new file mode 100644 index 000000000..b88b4bc83 Binary files /dev/null and b/public/terrain/19/858513/353981.terrain differ diff --git a/public/terrain/19/858513/353982.terrain b/public/terrain/19/858513/353982.terrain new file mode 100644 index 000000000..baeca0dde Binary files /dev/null and b/public/terrain/19/858513/353982.terrain differ diff --git a/public/terrain/19/858513/353983.terrain b/public/terrain/19/858513/353983.terrain new file mode 100644 index 000000000..3633bbd9f Binary files /dev/null and b/public/terrain/19/858513/353983.terrain differ diff --git a/public/terrain/19/858513/353984.terrain b/public/terrain/19/858513/353984.terrain new file mode 100644 index 000000000..5d9b63c12 Binary files /dev/null and b/public/terrain/19/858513/353984.terrain differ diff --git a/public/terrain/19/858513/353985.terrain b/public/terrain/19/858513/353985.terrain new file mode 100644 index 000000000..b4e363c38 Binary files /dev/null and b/public/terrain/19/858513/353985.terrain differ diff --git a/public/terrain/19/858513/353986.terrain b/public/terrain/19/858513/353986.terrain new file mode 100644 index 000000000..9aef6db3f Binary files /dev/null and b/public/terrain/19/858513/353986.terrain differ diff --git a/public/terrain/19/858513/353987.terrain b/public/terrain/19/858513/353987.terrain new file mode 100644 index 000000000..530109d49 Binary files /dev/null and b/public/terrain/19/858513/353987.terrain differ diff --git a/public/terrain/19/858513/353988.terrain b/public/terrain/19/858513/353988.terrain new file mode 100644 index 000000000..7f0b071ea Binary files /dev/null and b/public/terrain/19/858513/353988.terrain differ diff --git a/public/terrain/19/858513/353989.terrain b/public/terrain/19/858513/353989.terrain new file mode 100644 index 000000000..23d8e6b50 Binary files /dev/null and b/public/terrain/19/858513/353989.terrain differ diff --git a/public/terrain/19/858513/353990.terrain b/public/terrain/19/858513/353990.terrain new file mode 100644 index 000000000..65d7eab90 Binary files /dev/null and b/public/terrain/19/858513/353990.terrain differ diff --git a/public/terrain/19/858513/353991.terrain b/public/terrain/19/858513/353991.terrain new file mode 100644 index 000000000..9ffc6da31 Binary files /dev/null and b/public/terrain/19/858513/353991.terrain differ diff --git a/public/terrain/19/858513/353992.terrain b/public/terrain/19/858513/353992.terrain new file mode 100644 index 000000000..f81860920 Binary files /dev/null and b/public/terrain/19/858513/353992.terrain differ diff --git a/public/terrain/19/858513/353993.terrain b/public/terrain/19/858513/353993.terrain new file mode 100644 index 000000000..62a7643a6 Binary files /dev/null and b/public/terrain/19/858513/353993.terrain differ diff --git a/public/terrain/19/858513/353994.terrain b/public/terrain/19/858513/353994.terrain new file mode 100644 index 000000000..2dc942f11 Binary files /dev/null and b/public/terrain/19/858513/353994.terrain differ diff --git a/public/terrain/19/858513/353995.terrain b/public/terrain/19/858513/353995.terrain new file mode 100644 index 000000000..bd9a6b466 Binary files /dev/null and b/public/terrain/19/858513/353995.terrain differ diff --git a/public/terrain/19/858513/353996.terrain b/public/terrain/19/858513/353996.terrain new file mode 100644 index 000000000..2acc36750 Binary files /dev/null and b/public/terrain/19/858513/353996.terrain differ diff --git a/public/terrain/19/858513/353997.terrain b/public/terrain/19/858513/353997.terrain new file mode 100644 index 000000000..848d1f5bc Binary files /dev/null and b/public/terrain/19/858513/353997.terrain differ diff --git a/public/terrain/19/858513/353998.terrain b/public/terrain/19/858513/353998.terrain new file mode 100644 index 000000000..91a41aa6b Binary files /dev/null and b/public/terrain/19/858513/353998.terrain differ diff --git a/public/terrain/19/858513/353999.terrain b/public/terrain/19/858513/353999.terrain new file mode 100644 index 000000000..ca27c7cb6 Binary files /dev/null and b/public/terrain/19/858513/353999.terrain differ diff --git a/public/terrain/19/858513/354000.terrain b/public/terrain/19/858513/354000.terrain new file mode 100644 index 000000000..253073e74 Binary files /dev/null and b/public/terrain/19/858513/354000.terrain differ diff --git a/public/terrain/19/858513/354001.terrain b/public/terrain/19/858513/354001.terrain new file mode 100644 index 000000000..0495a5e37 Binary files /dev/null and b/public/terrain/19/858513/354001.terrain differ diff --git a/public/terrain/19/858513/354002.terrain b/public/terrain/19/858513/354002.terrain new file mode 100644 index 000000000..091049f40 Binary files /dev/null and b/public/terrain/19/858513/354002.terrain differ diff --git a/public/terrain/19/858513/354003.terrain b/public/terrain/19/858513/354003.terrain new file mode 100644 index 000000000..8cdea1abf Binary files /dev/null and b/public/terrain/19/858513/354003.terrain differ diff --git a/public/terrain/19/858513/354004.terrain b/public/terrain/19/858513/354004.terrain new file mode 100644 index 000000000..fa31f9931 Binary files /dev/null and b/public/terrain/19/858513/354004.terrain differ diff --git a/public/terrain/19/858513/354005.terrain b/public/terrain/19/858513/354005.terrain new file mode 100644 index 000000000..4dc96e8bd Binary files /dev/null and b/public/terrain/19/858513/354005.terrain differ diff --git a/public/terrain/19/858513/354006.terrain b/public/terrain/19/858513/354006.terrain new file mode 100644 index 000000000..9759ac0b6 Binary files /dev/null and b/public/terrain/19/858513/354006.terrain differ diff --git a/public/terrain/19/858513/354007.terrain b/public/terrain/19/858513/354007.terrain new file mode 100644 index 000000000..e7c37d0a1 Binary files /dev/null and b/public/terrain/19/858513/354007.terrain differ diff --git a/public/terrain/19/858513/354008.terrain b/public/terrain/19/858513/354008.terrain new file mode 100644 index 000000000..b3133c73f Binary files /dev/null and b/public/terrain/19/858513/354008.terrain differ diff --git a/public/terrain/19/858513/354009.terrain b/public/terrain/19/858513/354009.terrain new file mode 100644 index 000000000..e5a8bcc7c Binary files /dev/null and b/public/terrain/19/858513/354009.terrain differ diff --git a/public/terrain/19/858513/354010.terrain b/public/terrain/19/858513/354010.terrain new file mode 100644 index 000000000..9a4a3f71c Binary files /dev/null and b/public/terrain/19/858513/354010.terrain differ diff --git a/public/terrain/19/858513/354011.terrain b/public/terrain/19/858513/354011.terrain new file mode 100644 index 000000000..971c0fd81 Binary files /dev/null and b/public/terrain/19/858513/354011.terrain differ diff --git a/public/terrain/19/858513/354012.terrain b/public/terrain/19/858513/354012.terrain new file mode 100644 index 000000000..dae5c9a22 Binary files /dev/null and b/public/terrain/19/858513/354012.terrain differ diff --git a/public/terrain/19/858513/354013.terrain b/public/terrain/19/858513/354013.terrain new file mode 100644 index 000000000..9ec64ad43 Binary files /dev/null and b/public/terrain/19/858513/354013.terrain differ diff --git a/public/terrain/19/858513/354014.terrain b/public/terrain/19/858513/354014.terrain new file mode 100644 index 000000000..1e51a9c14 Binary files /dev/null and b/public/terrain/19/858513/354014.terrain differ diff --git a/public/terrain/19/858513/354015.terrain b/public/terrain/19/858513/354015.terrain new file mode 100644 index 000000000..3c74af946 Binary files /dev/null and b/public/terrain/19/858513/354015.terrain differ diff --git a/public/terrain/19/858513/354016.terrain b/public/terrain/19/858513/354016.terrain new file mode 100644 index 000000000..69c6c2035 Binary files /dev/null and b/public/terrain/19/858513/354016.terrain differ diff --git a/public/terrain/19/858513/354017.terrain b/public/terrain/19/858513/354017.terrain new file mode 100644 index 000000000..ab1ce33b2 Binary files /dev/null and b/public/terrain/19/858513/354017.terrain differ diff --git a/public/terrain/19/858513/354018.terrain b/public/terrain/19/858513/354018.terrain new file mode 100644 index 000000000..4efd00390 Binary files /dev/null and b/public/terrain/19/858513/354018.terrain differ diff --git a/public/terrain/19/858513/354019.terrain b/public/terrain/19/858513/354019.terrain new file mode 100644 index 000000000..0af427c17 Binary files /dev/null and b/public/terrain/19/858513/354019.terrain differ diff --git a/public/terrain/19/858513/354020.terrain b/public/terrain/19/858513/354020.terrain new file mode 100644 index 000000000..bb49cb55a Binary files /dev/null and b/public/terrain/19/858513/354020.terrain differ diff --git a/public/terrain/19/858513/354021.terrain b/public/terrain/19/858513/354021.terrain new file mode 100644 index 000000000..37bb85a1f Binary files /dev/null and b/public/terrain/19/858513/354021.terrain differ diff --git a/public/terrain/19/858513/354022.terrain b/public/terrain/19/858513/354022.terrain new file mode 100644 index 000000000..15bed74fc Binary files /dev/null and b/public/terrain/19/858513/354022.terrain differ diff --git a/public/terrain/19/858513/354023.terrain b/public/terrain/19/858513/354023.terrain new file mode 100644 index 000000000..0f10a71ae Binary files /dev/null and b/public/terrain/19/858513/354023.terrain differ diff --git a/public/terrain/19/858513/354024.terrain b/public/terrain/19/858513/354024.terrain new file mode 100644 index 000000000..488759bd2 Binary files /dev/null and b/public/terrain/19/858513/354024.terrain differ diff --git a/public/terrain/19/858513/354025.terrain b/public/terrain/19/858513/354025.terrain new file mode 100644 index 000000000..d7e6acad6 Binary files /dev/null and b/public/terrain/19/858513/354025.terrain differ diff --git a/public/terrain/19/858513/354026.terrain b/public/terrain/19/858513/354026.terrain new file mode 100644 index 000000000..540295ede Binary files /dev/null and b/public/terrain/19/858513/354026.terrain differ diff --git a/public/terrain/19/858513/354027.terrain b/public/terrain/19/858513/354027.terrain new file mode 100644 index 000000000..a7544e5fc Binary files /dev/null and b/public/terrain/19/858513/354027.terrain differ diff --git a/public/terrain/19/858513/354028.terrain b/public/terrain/19/858513/354028.terrain new file mode 100644 index 000000000..7e836dfd5 Binary files /dev/null and b/public/terrain/19/858513/354028.terrain differ diff --git a/public/terrain/19/858513/354029.terrain b/public/terrain/19/858513/354029.terrain new file mode 100644 index 000000000..837a3191d Binary files /dev/null and b/public/terrain/19/858513/354029.terrain differ diff --git a/public/terrain/19/858513/354030.terrain b/public/terrain/19/858513/354030.terrain new file mode 100644 index 000000000..d47cf10fa Binary files /dev/null and b/public/terrain/19/858513/354030.terrain differ diff --git a/public/terrain/19/858513/354031.terrain b/public/terrain/19/858513/354031.terrain new file mode 100644 index 000000000..465287643 Binary files /dev/null and b/public/terrain/19/858513/354031.terrain differ diff --git a/public/terrain/19/858513/354032.terrain b/public/terrain/19/858513/354032.terrain new file mode 100644 index 000000000..7a8130195 Binary files /dev/null and b/public/terrain/19/858513/354032.terrain differ diff --git a/public/terrain/19/858513/354033.terrain b/public/terrain/19/858513/354033.terrain new file mode 100644 index 000000000..29f3542e4 Binary files /dev/null and b/public/terrain/19/858513/354033.terrain differ diff --git a/public/terrain/19/858513/354034.terrain b/public/terrain/19/858513/354034.terrain new file mode 100644 index 000000000..b43250381 Binary files /dev/null and b/public/terrain/19/858513/354034.terrain differ diff --git a/public/terrain/19/858513/354035.terrain b/public/terrain/19/858513/354035.terrain new file mode 100644 index 000000000..b5f821710 Binary files /dev/null and b/public/terrain/19/858513/354035.terrain differ diff --git a/public/terrain/19/858513/354036.terrain b/public/terrain/19/858513/354036.terrain new file mode 100644 index 000000000..5658f2ea5 Binary files /dev/null and b/public/terrain/19/858513/354036.terrain differ diff --git a/public/terrain/19/858513/354037.terrain b/public/terrain/19/858513/354037.terrain new file mode 100644 index 000000000..097e999aa Binary files /dev/null and b/public/terrain/19/858513/354037.terrain differ diff --git a/public/terrain/19/858513/354038.terrain b/public/terrain/19/858513/354038.terrain new file mode 100644 index 000000000..97f3db040 Binary files /dev/null and b/public/terrain/19/858513/354038.terrain differ diff --git a/public/terrain/19/858513/354039.terrain b/public/terrain/19/858513/354039.terrain new file mode 100644 index 000000000..e93e24e1e Binary files /dev/null and b/public/terrain/19/858513/354039.terrain differ diff --git a/public/terrain/19/858513/354040.terrain b/public/terrain/19/858513/354040.terrain new file mode 100644 index 000000000..6744ab04f Binary files /dev/null and b/public/terrain/19/858513/354040.terrain differ diff --git a/public/terrain/19/858513/354041.terrain b/public/terrain/19/858513/354041.terrain new file mode 100644 index 000000000..f0c0d138e Binary files /dev/null and b/public/terrain/19/858513/354041.terrain differ diff --git a/public/terrain/19/858513/354042.terrain b/public/terrain/19/858513/354042.terrain new file mode 100644 index 000000000..7c9b767cb Binary files /dev/null and b/public/terrain/19/858513/354042.terrain differ diff --git a/public/terrain/19/858513/354043.terrain b/public/terrain/19/858513/354043.terrain new file mode 100644 index 000000000..bbdb9ad52 Binary files /dev/null and b/public/terrain/19/858513/354043.terrain differ diff --git a/public/terrain/19/858513/354044.terrain b/public/terrain/19/858513/354044.terrain new file mode 100644 index 000000000..f37641758 Binary files /dev/null and b/public/terrain/19/858513/354044.terrain differ diff --git a/public/terrain/19/858513/354045.terrain b/public/terrain/19/858513/354045.terrain new file mode 100644 index 000000000..9d436b86b Binary files /dev/null and b/public/terrain/19/858513/354045.terrain differ diff --git a/public/terrain/19/858513/354046.terrain b/public/terrain/19/858513/354046.terrain new file mode 100644 index 000000000..84ca0fcf9 Binary files /dev/null and b/public/terrain/19/858513/354046.terrain differ diff --git a/public/terrain/19/858513/354047.terrain b/public/terrain/19/858513/354047.terrain new file mode 100644 index 000000000..d17b4065e Binary files /dev/null and b/public/terrain/19/858513/354047.terrain differ diff --git a/public/terrain/19/858513/354048.terrain b/public/terrain/19/858513/354048.terrain new file mode 100644 index 000000000..403f7fb58 Binary files /dev/null and b/public/terrain/19/858513/354048.terrain differ diff --git a/public/terrain/19/858513/354049.terrain b/public/terrain/19/858513/354049.terrain new file mode 100644 index 000000000..817cac98a Binary files /dev/null and b/public/terrain/19/858513/354049.terrain differ diff --git a/public/terrain/19/858513/354050.terrain b/public/terrain/19/858513/354050.terrain new file mode 100644 index 000000000..cf26d0de1 Binary files /dev/null and b/public/terrain/19/858513/354050.terrain differ diff --git a/public/terrain/19/858513/354051.terrain b/public/terrain/19/858513/354051.terrain new file mode 100644 index 000000000..5285b0455 Binary files /dev/null and b/public/terrain/19/858513/354051.terrain differ diff --git a/public/terrain/19/858513/354052.terrain b/public/terrain/19/858513/354052.terrain new file mode 100644 index 000000000..82776e2a1 Binary files /dev/null and b/public/terrain/19/858513/354052.terrain differ diff --git a/public/terrain/19/858513/354053.terrain b/public/terrain/19/858513/354053.terrain new file mode 100644 index 000000000..3262f7e34 Binary files /dev/null and b/public/terrain/19/858513/354053.terrain differ diff --git a/public/terrain/19/858513/354054.terrain b/public/terrain/19/858513/354054.terrain new file mode 100644 index 000000000..6b481debc Binary files /dev/null and b/public/terrain/19/858513/354054.terrain differ diff --git a/public/terrain/19/858513/354055.terrain b/public/terrain/19/858513/354055.terrain new file mode 100644 index 000000000..9d9b7bf68 Binary files /dev/null and b/public/terrain/19/858513/354055.terrain differ diff --git a/public/terrain/19/858513/354056.terrain b/public/terrain/19/858513/354056.terrain new file mode 100644 index 000000000..f8b787aa3 Binary files /dev/null and b/public/terrain/19/858513/354056.terrain differ diff --git a/public/terrain/19/858513/354057.terrain b/public/terrain/19/858513/354057.terrain new file mode 100644 index 000000000..364e78df6 Binary files /dev/null and b/public/terrain/19/858513/354057.terrain differ diff --git a/public/terrain/19/858513/354058.terrain b/public/terrain/19/858513/354058.terrain new file mode 100644 index 000000000..9b8fe9058 Binary files /dev/null and b/public/terrain/19/858513/354058.terrain differ diff --git a/public/terrain/19/858513/354059.terrain b/public/terrain/19/858513/354059.terrain new file mode 100644 index 000000000..603e82839 Binary files /dev/null and b/public/terrain/19/858513/354059.terrain differ diff --git a/public/terrain/19/858514/353743.terrain b/public/terrain/19/858514/353743.terrain new file mode 100644 index 000000000..17366868e Binary files /dev/null and b/public/terrain/19/858514/353743.terrain differ diff --git a/public/terrain/19/858514/353744.terrain b/public/terrain/19/858514/353744.terrain new file mode 100644 index 000000000..62ebf7bad Binary files /dev/null and b/public/terrain/19/858514/353744.terrain differ diff --git a/public/terrain/19/858514/353745.terrain b/public/terrain/19/858514/353745.terrain new file mode 100644 index 000000000..31dd83baf Binary files /dev/null and b/public/terrain/19/858514/353745.terrain differ diff --git a/public/terrain/19/858514/353746.terrain b/public/terrain/19/858514/353746.terrain new file mode 100644 index 000000000..385cd8abe Binary files /dev/null and b/public/terrain/19/858514/353746.terrain differ diff --git a/public/terrain/19/858514/353747.terrain b/public/terrain/19/858514/353747.terrain new file mode 100644 index 000000000..7321d9fd8 Binary files /dev/null and b/public/terrain/19/858514/353747.terrain differ diff --git a/public/terrain/19/858514/353748.terrain b/public/terrain/19/858514/353748.terrain new file mode 100644 index 000000000..2871ed8ae Binary files /dev/null and b/public/terrain/19/858514/353748.terrain differ diff --git a/public/terrain/19/858514/353749.terrain b/public/terrain/19/858514/353749.terrain new file mode 100644 index 000000000..474a667e6 Binary files /dev/null and b/public/terrain/19/858514/353749.terrain differ diff --git a/public/terrain/19/858514/353750.terrain b/public/terrain/19/858514/353750.terrain new file mode 100644 index 000000000..e2d01d791 Binary files /dev/null and b/public/terrain/19/858514/353750.terrain differ diff --git a/public/terrain/19/858514/353751.terrain b/public/terrain/19/858514/353751.terrain new file mode 100644 index 000000000..dfbbcd069 Binary files /dev/null and b/public/terrain/19/858514/353751.terrain differ diff --git a/public/terrain/19/858514/353752.terrain b/public/terrain/19/858514/353752.terrain new file mode 100644 index 000000000..121bf7b19 Binary files /dev/null and b/public/terrain/19/858514/353752.terrain differ diff --git a/public/terrain/19/858514/353753.terrain b/public/terrain/19/858514/353753.terrain new file mode 100644 index 000000000..bf08afebd Binary files /dev/null and b/public/terrain/19/858514/353753.terrain differ diff --git a/public/terrain/19/858514/353754.terrain b/public/terrain/19/858514/353754.terrain new file mode 100644 index 000000000..9e85b85cb Binary files /dev/null and b/public/terrain/19/858514/353754.terrain differ diff --git a/public/terrain/19/858514/353755.terrain b/public/terrain/19/858514/353755.terrain new file mode 100644 index 000000000..e013746da Binary files /dev/null and b/public/terrain/19/858514/353755.terrain differ diff --git a/public/terrain/19/858514/353756.terrain b/public/terrain/19/858514/353756.terrain new file mode 100644 index 000000000..10a4e35ab Binary files /dev/null and b/public/terrain/19/858514/353756.terrain differ diff --git a/public/terrain/19/858514/353757.terrain b/public/terrain/19/858514/353757.terrain new file mode 100644 index 000000000..23b829f22 Binary files /dev/null and b/public/terrain/19/858514/353757.terrain differ diff --git a/public/terrain/19/858514/353758.terrain b/public/terrain/19/858514/353758.terrain new file mode 100644 index 000000000..9b5ee3ccf Binary files /dev/null and b/public/terrain/19/858514/353758.terrain differ diff --git a/public/terrain/19/858514/353759.terrain b/public/terrain/19/858514/353759.terrain new file mode 100644 index 000000000..0d72747de Binary files /dev/null and b/public/terrain/19/858514/353759.terrain differ diff --git a/public/terrain/19/858514/353760.terrain b/public/terrain/19/858514/353760.terrain new file mode 100644 index 000000000..13e2dd2b2 Binary files /dev/null and b/public/terrain/19/858514/353760.terrain differ diff --git a/public/terrain/19/858514/353761.terrain b/public/terrain/19/858514/353761.terrain new file mode 100644 index 000000000..4d8a72753 Binary files /dev/null and b/public/terrain/19/858514/353761.terrain differ diff --git a/public/terrain/19/858514/353762.terrain b/public/terrain/19/858514/353762.terrain new file mode 100644 index 000000000..07fb7e188 Binary files /dev/null and b/public/terrain/19/858514/353762.terrain differ diff --git a/public/terrain/19/858514/353763.terrain b/public/terrain/19/858514/353763.terrain new file mode 100644 index 000000000..451e7b0e6 Binary files /dev/null and b/public/terrain/19/858514/353763.terrain differ diff --git a/public/terrain/19/858514/353764.terrain b/public/terrain/19/858514/353764.terrain new file mode 100644 index 000000000..2a7216eb6 Binary files /dev/null and b/public/terrain/19/858514/353764.terrain differ diff --git a/public/terrain/19/858514/353765.terrain b/public/terrain/19/858514/353765.terrain new file mode 100644 index 000000000..9521eaccc Binary files /dev/null and b/public/terrain/19/858514/353765.terrain differ diff --git a/public/terrain/19/858514/353766.terrain b/public/terrain/19/858514/353766.terrain new file mode 100644 index 000000000..980cb9e21 Binary files /dev/null and b/public/terrain/19/858514/353766.terrain differ diff --git a/public/terrain/19/858514/353767.terrain b/public/terrain/19/858514/353767.terrain new file mode 100644 index 000000000..6d85e430a Binary files /dev/null and b/public/terrain/19/858514/353767.terrain differ diff --git a/public/terrain/19/858514/353768.terrain b/public/terrain/19/858514/353768.terrain new file mode 100644 index 000000000..bb807bb96 Binary files /dev/null and b/public/terrain/19/858514/353768.terrain differ diff --git a/public/terrain/19/858514/353769.terrain b/public/terrain/19/858514/353769.terrain new file mode 100644 index 000000000..11ec3138a Binary files /dev/null and b/public/terrain/19/858514/353769.terrain differ diff --git a/public/terrain/19/858514/353770.terrain b/public/terrain/19/858514/353770.terrain new file mode 100644 index 000000000..05888eeef Binary files /dev/null and b/public/terrain/19/858514/353770.terrain differ diff --git a/public/terrain/19/858514/353771.terrain b/public/terrain/19/858514/353771.terrain new file mode 100644 index 000000000..f92d6de9a Binary files /dev/null and b/public/terrain/19/858514/353771.terrain differ diff --git a/public/terrain/19/858514/353772.terrain b/public/terrain/19/858514/353772.terrain new file mode 100644 index 000000000..641c81d28 Binary files /dev/null and b/public/terrain/19/858514/353772.terrain differ diff --git a/public/terrain/19/858514/353773.terrain b/public/terrain/19/858514/353773.terrain new file mode 100644 index 000000000..56e4f46f0 Binary files /dev/null and b/public/terrain/19/858514/353773.terrain differ diff --git a/public/terrain/19/858514/353774.terrain b/public/terrain/19/858514/353774.terrain new file mode 100644 index 000000000..144bde37d Binary files /dev/null and b/public/terrain/19/858514/353774.terrain differ diff --git a/public/terrain/19/858514/353775.terrain b/public/terrain/19/858514/353775.terrain new file mode 100644 index 000000000..8ef740b6a Binary files /dev/null and b/public/terrain/19/858514/353775.terrain differ diff --git a/public/terrain/19/858514/353776.terrain b/public/terrain/19/858514/353776.terrain new file mode 100644 index 000000000..8299b5101 Binary files /dev/null and b/public/terrain/19/858514/353776.terrain differ diff --git a/public/terrain/19/858514/353777.terrain b/public/terrain/19/858514/353777.terrain new file mode 100644 index 000000000..95a6f40e9 Binary files /dev/null and b/public/terrain/19/858514/353777.terrain differ diff --git a/public/terrain/19/858514/353778.terrain b/public/terrain/19/858514/353778.terrain new file mode 100644 index 000000000..f3d89b021 Binary files /dev/null and b/public/terrain/19/858514/353778.terrain differ diff --git a/public/terrain/19/858514/353779.terrain b/public/terrain/19/858514/353779.terrain new file mode 100644 index 000000000..e9aaf9255 Binary files /dev/null and b/public/terrain/19/858514/353779.terrain differ diff --git a/public/terrain/19/858514/353780.terrain b/public/terrain/19/858514/353780.terrain new file mode 100644 index 000000000..82bc74277 Binary files /dev/null and b/public/terrain/19/858514/353780.terrain differ diff --git a/public/terrain/19/858514/353781.terrain b/public/terrain/19/858514/353781.terrain new file mode 100644 index 000000000..b1b56fb3b Binary files /dev/null and b/public/terrain/19/858514/353781.terrain differ diff --git a/public/terrain/19/858514/353782.terrain b/public/terrain/19/858514/353782.terrain new file mode 100644 index 000000000..d88bd9b41 Binary files /dev/null and b/public/terrain/19/858514/353782.terrain differ diff --git a/public/terrain/19/858514/353783.terrain b/public/terrain/19/858514/353783.terrain new file mode 100644 index 000000000..bfec3abb3 Binary files /dev/null and b/public/terrain/19/858514/353783.terrain differ diff --git a/public/terrain/19/858514/353784.terrain b/public/terrain/19/858514/353784.terrain new file mode 100644 index 000000000..ed6ef6c04 Binary files /dev/null and b/public/terrain/19/858514/353784.terrain differ diff --git a/public/terrain/19/858514/353785.terrain b/public/terrain/19/858514/353785.terrain new file mode 100644 index 000000000..ead08537e Binary files /dev/null and b/public/terrain/19/858514/353785.terrain differ diff --git a/public/terrain/19/858514/353786.terrain b/public/terrain/19/858514/353786.terrain new file mode 100644 index 000000000..076bb63ab Binary files /dev/null and b/public/terrain/19/858514/353786.terrain differ diff --git a/public/terrain/19/858514/353787.terrain b/public/terrain/19/858514/353787.terrain new file mode 100644 index 000000000..595400301 Binary files /dev/null and b/public/terrain/19/858514/353787.terrain differ diff --git a/public/terrain/19/858514/353788.terrain b/public/terrain/19/858514/353788.terrain new file mode 100644 index 000000000..2bdc5b2dc Binary files /dev/null and b/public/terrain/19/858514/353788.terrain differ diff --git a/public/terrain/19/858514/353789.terrain b/public/terrain/19/858514/353789.terrain new file mode 100644 index 000000000..221da0021 Binary files /dev/null and b/public/terrain/19/858514/353789.terrain differ diff --git a/public/terrain/19/858514/353790.terrain b/public/terrain/19/858514/353790.terrain new file mode 100644 index 000000000..8d89bf219 Binary files /dev/null and b/public/terrain/19/858514/353790.terrain differ diff --git a/public/terrain/19/858514/353791.terrain b/public/terrain/19/858514/353791.terrain new file mode 100644 index 000000000..fde3e7927 Binary files /dev/null and b/public/terrain/19/858514/353791.terrain differ diff --git a/public/terrain/19/858514/353792.terrain b/public/terrain/19/858514/353792.terrain new file mode 100644 index 000000000..11e8a9525 Binary files /dev/null and b/public/terrain/19/858514/353792.terrain differ diff --git a/public/terrain/19/858514/353793.terrain b/public/terrain/19/858514/353793.terrain new file mode 100644 index 000000000..a52901bc4 Binary files /dev/null and b/public/terrain/19/858514/353793.terrain differ diff --git a/public/terrain/19/858514/353794.terrain b/public/terrain/19/858514/353794.terrain new file mode 100644 index 000000000..e98df2829 Binary files /dev/null and b/public/terrain/19/858514/353794.terrain differ diff --git a/public/terrain/19/858514/353795.terrain b/public/terrain/19/858514/353795.terrain new file mode 100644 index 000000000..7675e8c7b Binary files /dev/null and b/public/terrain/19/858514/353795.terrain differ diff --git a/public/terrain/19/858514/353796.terrain b/public/terrain/19/858514/353796.terrain new file mode 100644 index 000000000..fdc16ceb5 Binary files /dev/null and b/public/terrain/19/858514/353796.terrain differ diff --git a/public/terrain/19/858514/353797.terrain b/public/terrain/19/858514/353797.terrain new file mode 100644 index 000000000..3f0784f9b Binary files /dev/null and b/public/terrain/19/858514/353797.terrain differ diff --git a/public/terrain/19/858514/353798.terrain b/public/terrain/19/858514/353798.terrain new file mode 100644 index 000000000..bdcee9d50 Binary files /dev/null and b/public/terrain/19/858514/353798.terrain differ diff --git a/public/terrain/19/858514/353799.terrain b/public/terrain/19/858514/353799.terrain new file mode 100644 index 000000000..4c2c5e045 Binary files /dev/null and b/public/terrain/19/858514/353799.terrain differ diff --git a/public/terrain/19/858514/353800.terrain b/public/terrain/19/858514/353800.terrain new file mode 100644 index 000000000..613048dff Binary files /dev/null and b/public/terrain/19/858514/353800.terrain differ diff --git a/public/terrain/19/858514/353801.terrain b/public/terrain/19/858514/353801.terrain new file mode 100644 index 000000000..1cb1d02b5 Binary files /dev/null and b/public/terrain/19/858514/353801.terrain differ diff --git a/public/terrain/19/858514/353802.terrain b/public/terrain/19/858514/353802.terrain new file mode 100644 index 000000000..8110ebb60 Binary files /dev/null and b/public/terrain/19/858514/353802.terrain differ diff --git a/public/terrain/19/858514/353803.terrain b/public/terrain/19/858514/353803.terrain new file mode 100644 index 000000000..beac8c693 Binary files /dev/null and b/public/terrain/19/858514/353803.terrain differ diff --git a/public/terrain/19/858514/353804.terrain b/public/terrain/19/858514/353804.terrain new file mode 100644 index 000000000..318403e17 Binary files /dev/null and b/public/terrain/19/858514/353804.terrain differ diff --git a/public/terrain/19/858514/353805.terrain b/public/terrain/19/858514/353805.terrain new file mode 100644 index 000000000..21eaa496c Binary files /dev/null and b/public/terrain/19/858514/353805.terrain differ diff --git a/public/terrain/19/858514/353806.terrain b/public/terrain/19/858514/353806.terrain new file mode 100644 index 000000000..b91f4313e Binary files /dev/null and b/public/terrain/19/858514/353806.terrain differ diff --git a/public/terrain/19/858514/353807.terrain b/public/terrain/19/858514/353807.terrain new file mode 100644 index 000000000..db365e0f5 Binary files /dev/null and b/public/terrain/19/858514/353807.terrain differ diff --git a/public/terrain/19/858514/353808.terrain b/public/terrain/19/858514/353808.terrain new file mode 100644 index 000000000..90ff6a530 Binary files /dev/null and b/public/terrain/19/858514/353808.terrain differ diff --git a/public/terrain/19/858514/353809.terrain b/public/terrain/19/858514/353809.terrain new file mode 100644 index 000000000..8a294b0b9 Binary files /dev/null and b/public/terrain/19/858514/353809.terrain differ diff --git a/public/terrain/19/858514/353810.terrain b/public/terrain/19/858514/353810.terrain new file mode 100644 index 000000000..6de9d3df9 Binary files /dev/null and b/public/terrain/19/858514/353810.terrain differ diff --git a/public/terrain/19/858514/353811.terrain b/public/terrain/19/858514/353811.terrain new file mode 100644 index 000000000..c34c5411a Binary files /dev/null and b/public/terrain/19/858514/353811.terrain differ diff --git a/public/terrain/19/858514/353812.terrain b/public/terrain/19/858514/353812.terrain new file mode 100644 index 000000000..c5c98e6c3 Binary files /dev/null and b/public/terrain/19/858514/353812.terrain differ diff --git a/public/terrain/19/858514/353813.terrain b/public/terrain/19/858514/353813.terrain new file mode 100644 index 000000000..c669fa3cc Binary files /dev/null and b/public/terrain/19/858514/353813.terrain differ diff --git a/public/terrain/19/858514/353814.terrain b/public/terrain/19/858514/353814.terrain new file mode 100644 index 000000000..bb425d88d Binary files /dev/null and b/public/terrain/19/858514/353814.terrain differ diff --git a/public/terrain/19/858514/353815.terrain b/public/terrain/19/858514/353815.terrain new file mode 100644 index 000000000..e25f442b3 Binary files /dev/null and b/public/terrain/19/858514/353815.terrain differ diff --git a/public/terrain/19/858514/353816.terrain b/public/terrain/19/858514/353816.terrain new file mode 100644 index 000000000..f95d10b5a Binary files /dev/null and b/public/terrain/19/858514/353816.terrain differ diff --git a/public/terrain/19/858514/353817.terrain b/public/terrain/19/858514/353817.terrain new file mode 100644 index 000000000..ea373ffcf Binary files /dev/null and b/public/terrain/19/858514/353817.terrain differ diff --git a/public/terrain/19/858514/353818.terrain b/public/terrain/19/858514/353818.terrain new file mode 100644 index 000000000..00f92e942 Binary files /dev/null and b/public/terrain/19/858514/353818.terrain differ diff --git a/public/terrain/19/858514/353819.terrain b/public/terrain/19/858514/353819.terrain new file mode 100644 index 000000000..b6c28015d Binary files /dev/null and b/public/terrain/19/858514/353819.terrain differ diff --git a/public/terrain/19/858514/353820.terrain b/public/terrain/19/858514/353820.terrain new file mode 100644 index 000000000..3effb0e09 Binary files /dev/null and b/public/terrain/19/858514/353820.terrain differ diff --git a/public/terrain/19/858514/353821.terrain b/public/terrain/19/858514/353821.terrain new file mode 100644 index 000000000..fb4136ed0 Binary files /dev/null and b/public/terrain/19/858514/353821.terrain differ diff --git a/public/terrain/19/858514/353822.terrain b/public/terrain/19/858514/353822.terrain new file mode 100644 index 000000000..c3a509472 Binary files /dev/null and b/public/terrain/19/858514/353822.terrain differ diff --git a/public/terrain/19/858514/353823.terrain b/public/terrain/19/858514/353823.terrain new file mode 100644 index 000000000..7a4336d31 Binary files /dev/null and b/public/terrain/19/858514/353823.terrain differ diff --git a/public/terrain/19/858514/353824.terrain b/public/terrain/19/858514/353824.terrain new file mode 100644 index 000000000..12b873ac1 Binary files /dev/null and b/public/terrain/19/858514/353824.terrain differ diff --git a/public/terrain/19/858514/353825.terrain b/public/terrain/19/858514/353825.terrain new file mode 100644 index 000000000..6c366b510 Binary files /dev/null and b/public/terrain/19/858514/353825.terrain differ diff --git a/public/terrain/19/858514/353826.terrain b/public/terrain/19/858514/353826.terrain new file mode 100644 index 000000000..b7ef46b7f Binary files /dev/null and b/public/terrain/19/858514/353826.terrain differ diff --git a/public/terrain/19/858514/353827.terrain b/public/terrain/19/858514/353827.terrain new file mode 100644 index 000000000..336e60108 Binary files /dev/null and b/public/terrain/19/858514/353827.terrain differ diff --git a/public/terrain/19/858514/353828.terrain b/public/terrain/19/858514/353828.terrain new file mode 100644 index 000000000..de500b43e Binary files /dev/null and b/public/terrain/19/858514/353828.terrain differ diff --git a/public/terrain/19/858514/353829.terrain b/public/terrain/19/858514/353829.terrain new file mode 100644 index 000000000..d5d32db9a Binary files /dev/null and b/public/terrain/19/858514/353829.terrain differ diff --git a/public/terrain/19/858514/353830.terrain b/public/terrain/19/858514/353830.terrain new file mode 100644 index 000000000..e18a9e7d2 Binary files /dev/null and b/public/terrain/19/858514/353830.terrain differ diff --git a/public/terrain/19/858514/353831.terrain b/public/terrain/19/858514/353831.terrain new file mode 100644 index 000000000..3f0095022 Binary files /dev/null and b/public/terrain/19/858514/353831.terrain differ diff --git a/public/terrain/19/858514/353832.terrain b/public/terrain/19/858514/353832.terrain new file mode 100644 index 000000000..983df2c8d Binary files /dev/null and b/public/terrain/19/858514/353832.terrain differ diff --git a/public/terrain/19/858514/353833.terrain b/public/terrain/19/858514/353833.terrain new file mode 100644 index 000000000..54ce3d9dd Binary files /dev/null and b/public/terrain/19/858514/353833.terrain differ diff --git a/public/terrain/19/858514/353834.terrain b/public/terrain/19/858514/353834.terrain new file mode 100644 index 000000000..fc5c3ec8b Binary files /dev/null and b/public/terrain/19/858514/353834.terrain differ diff --git a/public/terrain/19/858514/353835.terrain b/public/terrain/19/858514/353835.terrain new file mode 100644 index 000000000..3df267155 Binary files /dev/null and b/public/terrain/19/858514/353835.terrain differ diff --git a/public/terrain/19/858514/353836.terrain b/public/terrain/19/858514/353836.terrain new file mode 100644 index 000000000..015dbc0e3 Binary files /dev/null and b/public/terrain/19/858514/353836.terrain differ diff --git a/public/terrain/19/858514/353837.terrain b/public/terrain/19/858514/353837.terrain new file mode 100644 index 000000000..2e77e58c8 Binary files /dev/null and b/public/terrain/19/858514/353837.terrain differ diff --git a/public/terrain/19/858514/353838.terrain b/public/terrain/19/858514/353838.terrain new file mode 100644 index 000000000..261b16bb8 Binary files /dev/null and b/public/terrain/19/858514/353838.terrain differ diff --git a/public/terrain/19/858514/353839.terrain b/public/terrain/19/858514/353839.terrain new file mode 100644 index 000000000..ae9e32191 Binary files /dev/null and b/public/terrain/19/858514/353839.terrain differ diff --git a/public/terrain/19/858514/353840.terrain b/public/terrain/19/858514/353840.terrain new file mode 100644 index 000000000..b61bba19a Binary files /dev/null and b/public/terrain/19/858514/353840.terrain differ diff --git a/public/terrain/19/858514/353841.terrain b/public/terrain/19/858514/353841.terrain new file mode 100644 index 000000000..bd81e949c Binary files /dev/null and b/public/terrain/19/858514/353841.terrain differ diff --git a/public/terrain/19/858514/353842.terrain b/public/terrain/19/858514/353842.terrain new file mode 100644 index 000000000..43cc07c99 Binary files /dev/null and b/public/terrain/19/858514/353842.terrain differ diff --git a/public/terrain/19/858514/353843.terrain b/public/terrain/19/858514/353843.terrain new file mode 100644 index 000000000..32740271e Binary files /dev/null and b/public/terrain/19/858514/353843.terrain differ diff --git a/public/terrain/19/858514/353844.terrain b/public/terrain/19/858514/353844.terrain new file mode 100644 index 000000000..2ec6affb5 Binary files /dev/null and b/public/terrain/19/858514/353844.terrain differ diff --git a/public/terrain/19/858514/353845.terrain b/public/terrain/19/858514/353845.terrain new file mode 100644 index 000000000..1c49b970a Binary files /dev/null and b/public/terrain/19/858514/353845.terrain differ diff --git a/public/terrain/19/858514/353846.terrain b/public/terrain/19/858514/353846.terrain new file mode 100644 index 000000000..52c22ac69 Binary files /dev/null and b/public/terrain/19/858514/353846.terrain differ diff --git a/public/terrain/19/858514/353847.terrain b/public/terrain/19/858514/353847.terrain new file mode 100644 index 000000000..6127eea9d Binary files /dev/null and b/public/terrain/19/858514/353847.terrain differ diff --git a/public/terrain/19/858514/353848.terrain b/public/terrain/19/858514/353848.terrain new file mode 100644 index 000000000..78167fa20 Binary files /dev/null and b/public/terrain/19/858514/353848.terrain differ diff --git a/public/terrain/19/858514/353849.terrain b/public/terrain/19/858514/353849.terrain new file mode 100644 index 000000000..7b05d997c Binary files /dev/null and b/public/terrain/19/858514/353849.terrain differ diff --git a/public/terrain/19/858514/353850.terrain b/public/terrain/19/858514/353850.terrain new file mode 100644 index 000000000..5dbe82ac0 Binary files /dev/null and b/public/terrain/19/858514/353850.terrain differ diff --git a/public/terrain/19/858514/353851.terrain b/public/terrain/19/858514/353851.terrain new file mode 100644 index 000000000..04d3c1139 Binary files /dev/null and b/public/terrain/19/858514/353851.terrain differ diff --git a/public/terrain/19/858514/353852.terrain b/public/terrain/19/858514/353852.terrain new file mode 100644 index 000000000..c837c59bf Binary files /dev/null and b/public/terrain/19/858514/353852.terrain differ diff --git a/public/terrain/19/858514/353853.terrain b/public/terrain/19/858514/353853.terrain new file mode 100644 index 000000000..08e3f6331 Binary files /dev/null and b/public/terrain/19/858514/353853.terrain differ diff --git a/public/terrain/19/858514/353854.terrain b/public/terrain/19/858514/353854.terrain new file mode 100644 index 000000000..71dfdc368 Binary files /dev/null and b/public/terrain/19/858514/353854.terrain differ diff --git a/public/terrain/19/858514/353855.terrain b/public/terrain/19/858514/353855.terrain new file mode 100644 index 000000000..8042a04fe Binary files /dev/null and b/public/terrain/19/858514/353855.terrain differ diff --git a/public/terrain/19/858514/353856.terrain b/public/terrain/19/858514/353856.terrain new file mode 100644 index 000000000..eae7a7cab Binary files /dev/null and b/public/terrain/19/858514/353856.terrain differ diff --git a/public/terrain/19/858514/353857.terrain b/public/terrain/19/858514/353857.terrain new file mode 100644 index 000000000..baa15af11 Binary files /dev/null and b/public/terrain/19/858514/353857.terrain differ diff --git a/public/terrain/19/858514/353858.terrain b/public/terrain/19/858514/353858.terrain new file mode 100644 index 000000000..5404e9ef8 Binary files /dev/null and b/public/terrain/19/858514/353858.terrain differ diff --git a/public/terrain/19/858514/353859.terrain b/public/terrain/19/858514/353859.terrain new file mode 100644 index 000000000..0560234f2 Binary files /dev/null and b/public/terrain/19/858514/353859.terrain differ diff --git a/public/terrain/19/858514/353860.terrain b/public/terrain/19/858514/353860.terrain new file mode 100644 index 000000000..014b9f233 Binary files /dev/null and b/public/terrain/19/858514/353860.terrain differ diff --git a/public/terrain/19/858514/353861.terrain b/public/terrain/19/858514/353861.terrain new file mode 100644 index 000000000..0ea826f93 Binary files /dev/null and b/public/terrain/19/858514/353861.terrain differ diff --git a/public/terrain/19/858514/353862.terrain b/public/terrain/19/858514/353862.terrain new file mode 100644 index 000000000..fac478e15 Binary files /dev/null and b/public/terrain/19/858514/353862.terrain differ diff --git a/public/terrain/19/858514/353863.terrain b/public/terrain/19/858514/353863.terrain new file mode 100644 index 000000000..52c75253d Binary files /dev/null and b/public/terrain/19/858514/353863.terrain differ diff --git a/public/terrain/19/858514/353864.terrain b/public/terrain/19/858514/353864.terrain new file mode 100644 index 000000000..304c57a8e Binary files /dev/null and b/public/terrain/19/858514/353864.terrain differ diff --git a/public/terrain/19/858514/353865.terrain b/public/terrain/19/858514/353865.terrain new file mode 100644 index 000000000..1222ead96 Binary files /dev/null and b/public/terrain/19/858514/353865.terrain differ diff --git a/public/terrain/19/858514/353866.terrain b/public/terrain/19/858514/353866.terrain new file mode 100644 index 000000000..5c29ebf69 Binary files /dev/null and b/public/terrain/19/858514/353866.terrain differ diff --git a/public/terrain/19/858514/353867.terrain b/public/terrain/19/858514/353867.terrain new file mode 100644 index 000000000..358d47cee Binary files /dev/null and b/public/terrain/19/858514/353867.terrain differ diff --git a/public/terrain/19/858514/353868.terrain b/public/terrain/19/858514/353868.terrain new file mode 100644 index 000000000..402c599e2 Binary files /dev/null and b/public/terrain/19/858514/353868.terrain differ diff --git a/public/terrain/19/858514/353869.terrain b/public/terrain/19/858514/353869.terrain new file mode 100644 index 000000000..16c064d1d Binary files /dev/null and b/public/terrain/19/858514/353869.terrain differ diff --git a/public/terrain/19/858514/353870.terrain b/public/terrain/19/858514/353870.terrain new file mode 100644 index 000000000..a33e5593e Binary files /dev/null and b/public/terrain/19/858514/353870.terrain differ diff --git a/public/terrain/19/858514/353871.terrain b/public/terrain/19/858514/353871.terrain new file mode 100644 index 000000000..308a1148d Binary files /dev/null and b/public/terrain/19/858514/353871.terrain differ diff --git a/public/terrain/19/858514/353872.terrain b/public/terrain/19/858514/353872.terrain new file mode 100644 index 000000000..2f4aeea6a Binary files /dev/null and b/public/terrain/19/858514/353872.terrain differ diff --git a/public/terrain/19/858514/353873.terrain b/public/terrain/19/858514/353873.terrain new file mode 100644 index 000000000..c034e39aa Binary files /dev/null and b/public/terrain/19/858514/353873.terrain differ diff --git a/public/terrain/19/858514/353874.terrain b/public/terrain/19/858514/353874.terrain new file mode 100644 index 000000000..bbe38a789 Binary files /dev/null and b/public/terrain/19/858514/353874.terrain differ diff --git a/public/terrain/19/858514/353875.terrain b/public/terrain/19/858514/353875.terrain new file mode 100644 index 000000000..b54feb8e4 Binary files /dev/null and b/public/terrain/19/858514/353875.terrain differ diff --git a/public/terrain/19/858514/353876.terrain b/public/terrain/19/858514/353876.terrain new file mode 100644 index 000000000..e7ed81258 Binary files /dev/null and b/public/terrain/19/858514/353876.terrain differ diff --git a/public/terrain/19/858514/353877.terrain b/public/terrain/19/858514/353877.terrain new file mode 100644 index 000000000..e42ff167e Binary files /dev/null and b/public/terrain/19/858514/353877.terrain differ diff --git a/public/terrain/19/858514/353878.terrain b/public/terrain/19/858514/353878.terrain new file mode 100644 index 000000000..cb5eeac5f Binary files /dev/null and b/public/terrain/19/858514/353878.terrain differ diff --git a/public/terrain/19/858514/353879.terrain b/public/terrain/19/858514/353879.terrain new file mode 100644 index 000000000..1ee56e4fc Binary files /dev/null and b/public/terrain/19/858514/353879.terrain differ diff --git a/public/terrain/19/858514/353880.terrain b/public/terrain/19/858514/353880.terrain new file mode 100644 index 000000000..f24efd2ba Binary files /dev/null and b/public/terrain/19/858514/353880.terrain differ diff --git a/public/terrain/19/858514/353881.terrain b/public/terrain/19/858514/353881.terrain new file mode 100644 index 000000000..68c3a57ba Binary files /dev/null and b/public/terrain/19/858514/353881.terrain differ diff --git a/public/terrain/19/858514/353882.terrain b/public/terrain/19/858514/353882.terrain new file mode 100644 index 000000000..0fc2fd2b4 Binary files /dev/null and b/public/terrain/19/858514/353882.terrain differ diff --git a/public/terrain/19/858514/353883.terrain b/public/terrain/19/858514/353883.terrain new file mode 100644 index 000000000..c4f068ca2 Binary files /dev/null and b/public/terrain/19/858514/353883.terrain differ diff --git a/public/terrain/19/858514/353884.terrain b/public/terrain/19/858514/353884.terrain new file mode 100644 index 000000000..c1e131ff0 Binary files /dev/null and b/public/terrain/19/858514/353884.terrain differ diff --git a/public/terrain/19/858514/353885.terrain b/public/terrain/19/858514/353885.terrain new file mode 100644 index 000000000..594bc533a Binary files /dev/null and b/public/terrain/19/858514/353885.terrain differ diff --git a/public/terrain/19/858514/353886.terrain b/public/terrain/19/858514/353886.terrain new file mode 100644 index 000000000..404c0d991 Binary files /dev/null and b/public/terrain/19/858514/353886.terrain differ diff --git a/public/terrain/19/858514/353887.terrain b/public/terrain/19/858514/353887.terrain new file mode 100644 index 000000000..2a42fa4c8 Binary files /dev/null and b/public/terrain/19/858514/353887.terrain differ diff --git a/public/terrain/19/858514/353888.terrain b/public/terrain/19/858514/353888.terrain new file mode 100644 index 000000000..7cd215bba Binary files /dev/null and b/public/terrain/19/858514/353888.terrain differ diff --git a/public/terrain/19/858514/353889.terrain b/public/terrain/19/858514/353889.terrain new file mode 100644 index 000000000..bc2bc6fb9 Binary files /dev/null and b/public/terrain/19/858514/353889.terrain differ diff --git a/public/terrain/19/858514/353890.terrain b/public/terrain/19/858514/353890.terrain new file mode 100644 index 000000000..63c41b3df Binary files /dev/null and b/public/terrain/19/858514/353890.terrain differ diff --git a/public/terrain/19/858514/353891.terrain b/public/terrain/19/858514/353891.terrain new file mode 100644 index 000000000..0513c5f58 Binary files /dev/null and b/public/terrain/19/858514/353891.terrain differ diff --git a/public/terrain/19/858514/353892.terrain b/public/terrain/19/858514/353892.terrain new file mode 100644 index 000000000..07b7bc5ae Binary files /dev/null and b/public/terrain/19/858514/353892.terrain differ diff --git a/public/terrain/19/858514/353893.terrain b/public/terrain/19/858514/353893.terrain new file mode 100644 index 000000000..7c95cbc78 Binary files /dev/null and b/public/terrain/19/858514/353893.terrain differ diff --git a/public/terrain/19/858514/353894.terrain b/public/terrain/19/858514/353894.terrain new file mode 100644 index 000000000..4a1199ba7 Binary files /dev/null and b/public/terrain/19/858514/353894.terrain differ diff --git a/public/terrain/19/858514/353895.terrain b/public/terrain/19/858514/353895.terrain new file mode 100644 index 000000000..32b3d66db Binary files /dev/null and b/public/terrain/19/858514/353895.terrain differ diff --git a/public/terrain/19/858514/353896.terrain b/public/terrain/19/858514/353896.terrain new file mode 100644 index 000000000..d300655ba Binary files /dev/null and b/public/terrain/19/858514/353896.terrain differ diff --git a/public/terrain/19/858514/353897.terrain b/public/terrain/19/858514/353897.terrain new file mode 100644 index 000000000..2de316557 Binary files /dev/null and b/public/terrain/19/858514/353897.terrain differ diff --git a/public/terrain/19/858514/353898.terrain b/public/terrain/19/858514/353898.terrain new file mode 100644 index 000000000..1bf459c50 Binary files /dev/null and b/public/terrain/19/858514/353898.terrain differ diff --git a/public/terrain/19/858514/353899.terrain b/public/terrain/19/858514/353899.terrain new file mode 100644 index 000000000..821f25225 Binary files /dev/null and b/public/terrain/19/858514/353899.terrain differ diff --git a/public/terrain/19/858514/353900.terrain b/public/terrain/19/858514/353900.terrain new file mode 100644 index 000000000..c6e11899f Binary files /dev/null and b/public/terrain/19/858514/353900.terrain differ diff --git a/public/terrain/19/858514/353901.terrain b/public/terrain/19/858514/353901.terrain new file mode 100644 index 000000000..98eb9bcef Binary files /dev/null and b/public/terrain/19/858514/353901.terrain differ diff --git a/public/terrain/19/858514/353902.terrain b/public/terrain/19/858514/353902.terrain new file mode 100644 index 000000000..99fe4fdc5 Binary files /dev/null and b/public/terrain/19/858514/353902.terrain differ diff --git a/public/terrain/19/858514/353903.terrain b/public/terrain/19/858514/353903.terrain new file mode 100644 index 000000000..fcb6163fc Binary files /dev/null and b/public/terrain/19/858514/353903.terrain differ diff --git a/public/terrain/19/858514/353904.terrain b/public/terrain/19/858514/353904.terrain new file mode 100644 index 000000000..29f414186 Binary files /dev/null and b/public/terrain/19/858514/353904.terrain differ diff --git a/public/terrain/19/858514/353905.terrain b/public/terrain/19/858514/353905.terrain new file mode 100644 index 000000000..c5ebf0e83 Binary files /dev/null and b/public/terrain/19/858514/353905.terrain differ diff --git a/public/terrain/19/858514/353906.terrain b/public/terrain/19/858514/353906.terrain new file mode 100644 index 000000000..f2e16230c Binary files /dev/null and b/public/terrain/19/858514/353906.terrain differ diff --git a/public/terrain/19/858514/353907.terrain b/public/terrain/19/858514/353907.terrain new file mode 100644 index 000000000..b4c05ee32 Binary files /dev/null and b/public/terrain/19/858514/353907.terrain differ diff --git a/public/terrain/19/858514/353908.terrain b/public/terrain/19/858514/353908.terrain new file mode 100644 index 000000000..1ae6dbe44 Binary files /dev/null and b/public/terrain/19/858514/353908.terrain differ diff --git a/public/terrain/19/858514/353909.terrain b/public/terrain/19/858514/353909.terrain new file mode 100644 index 000000000..339a6b977 Binary files /dev/null and b/public/terrain/19/858514/353909.terrain differ diff --git a/public/terrain/19/858514/353910.terrain b/public/terrain/19/858514/353910.terrain new file mode 100644 index 000000000..79e54e103 Binary files /dev/null and b/public/terrain/19/858514/353910.terrain differ diff --git a/public/terrain/19/858514/353911.terrain b/public/terrain/19/858514/353911.terrain new file mode 100644 index 000000000..f4242bd09 Binary files /dev/null and b/public/terrain/19/858514/353911.terrain differ diff --git a/public/terrain/19/858514/353912.terrain b/public/terrain/19/858514/353912.terrain new file mode 100644 index 000000000..feccd1478 Binary files /dev/null and b/public/terrain/19/858514/353912.terrain differ diff --git a/public/terrain/19/858514/353913.terrain b/public/terrain/19/858514/353913.terrain new file mode 100644 index 000000000..1549339e6 Binary files /dev/null and b/public/terrain/19/858514/353913.terrain differ diff --git a/public/terrain/19/858514/353914.terrain b/public/terrain/19/858514/353914.terrain new file mode 100644 index 000000000..266d4a60e Binary files /dev/null and b/public/terrain/19/858514/353914.terrain differ diff --git a/public/terrain/19/858514/353915.terrain b/public/terrain/19/858514/353915.terrain new file mode 100644 index 000000000..79e731521 Binary files /dev/null and b/public/terrain/19/858514/353915.terrain differ diff --git a/public/terrain/19/858514/353916.terrain b/public/terrain/19/858514/353916.terrain new file mode 100644 index 000000000..4dc0750cc Binary files /dev/null and b/public/terrain/19/858514/353916.terrain differ diff --git a/public/terrain/19/858514/353917.terrain b/public/terrain/19/858514/353917.terrain new file mode 100644 index 000000000..c36cf407b Binary files /dev/null and b/public/terrain/19/858514/353917.terrain differ diff --git a/public/terrain/19/858514/353918.terrain b/public/terrain/19/858514/353918.terrain new file mode 100644 index 000000000..13870bcbc Binary files /dev/null and b/public/terrain/19/858514/353918.terrain differ diff --git a/public/terrain/19/858514/353919.terrain b/public/terrain/19/858514/353919.terrain new file mode 100644 index 000000000..ac2619668 Binary files /dev/null and b/public/terrain/19/858514/353919.terrain differ diff --git a/public/terrain/19/858514/353920.terrain b/public/terrain/19/858514/353920.terrain new file mode 100644 index 000000000..2b89dd2b2 Binary files /dev/null and b/public/terrain/19/858514/353920.terrain differ diff --git a/public/terrain/19/858514/353921.terrain b/public/terrain/19/858514/353921.terrain new file mode 100644 index 000000000..06660fae7 Binary files /dev/null and b/public/terrain/19/858514/353921.terrain differ diff --git a/public/terrain/19/858514/353922.terrain b/public/terrain/19/858514/353922.terrain new file mode 100644 index 000000000..e933ae1c3 Binary files /dev/null and b/public/terrain/19/858514/353922.terrain differ diff --git a/public/terrain/19/858514/353923.terrain b/public/terrain/19/858514/353923.terrain new file mode 100644 index 000000000..b7f8c89d2 Binary files /dev/null and b/public/terrain/19/858514/353923.terrain differ diff --git a/public/terrain/19/858514/353924.terrain b/public/terrain/19/858514/353924.terrain new file mode 100644 index 000000000..f5807c58e Binary files /dev/null and b/public/terrain/19/858514/353924.terrain differ diff --git a/public/terrain/19/858514/353925.terrain b/public/terrain/19/858514/353925.terrain new file mode 100644 index 000000000..7613e0c92 Binary files /dev/null and b/public/terrain/19/858514/353925.terrain differ diff --git a/public/terrain/19/858514/353926.terrain b/public/terrain/19/858514/353926.terrain new file mode 100644 index 000000000..4cf60a56f Binary files /dev/null and b/public/terrain/19/858514/353926.terrain differ diff --git a/public/terrain/19/858514/353927.terrain b/public/terrain/19/858514/353927.terrain new file mode 100644 index 000000000..a5a132ffd Binary files /dev/null and b/public/terrain/19/858514/353927.terrain differ diff --git a/public/terrain/19/858514/353928.terrain b/public/terrain/19/858514/353928.terrain new file mode 100644 index 000000000..7951cc34c Binary files /dev/null and b/public/terrain/19/858514/353928.terrain differ diff --git a/public/terrain/19/858514/353929.terrain b/public/terrain/19/858514/353929.terrain new file mode 100644 index 000000000..ce43cdbfb Binary files /dev/null and b/public/terrain/19/858514/353929.terrain differ diff --git a/public/terrain/19/858514/353930.terrain b/public/terrain/19/858514/353930.terrain new file mode 100644 index 000000000..10d7b9af5 Binary files /dev/null and b/public/terrain/19/858514/353930.terrain differ diff --git a/public/terrain/19/858514/353931.terrain b/public/terrain/19/858514/353931.terrain new file mode 100644 index 000000000..47d7c47bd Binary files /dev/null and b/public/terrain/19/858514/353931.terrain differ diff --git a/public/terrain/19/858514/353932.terrain b/public/terrain/19/858514/353932.terrain new file mode 100644 index 000000000..d91cb8af7 Binary files /dev/null and b/public/terrain/19/858514/353932.terrain differ diff --git a/public/terrain/19/858514/353933.terrain b/public/terrain/19/858514/353933.terrain new file mode 100644 index 000000000..a4c5d5be4 Binary files /dev/null and b/public/terrain/19/858514/353933.terrain differ diff --git a/public/terrain/19/858514/353934.terrain b/public/terrain/19/858514/353934.terrain new file mode 100644 index 000000000..e661ced86 Binary files /dev/null and b/public/terrain/19/858514/353934.terrain differ diff --git a/public/terrain/19/858514/353935.terrain b/public/terrain/19/858514/353935.terrain new file mode 100644 index 000000000..0e11dc780 Binary files /dev/null and b/public/terrain/19/858514/353935.terrain differ diff --git a/public/terrain/19/858514/353936.terrain b/public/terrain/19/858514/353936.terrain new file mode 100644 index 000000000..78ad13be6 Binary files /dev/null and b/public/terrain/19/858514/353936.terrain differ diff --git a/public/terrain/19/858514/353937.terrain b/public/terrain/19/858514/353937.terrain new file mode 100644 index 000000000..20332b8f3 Binary files /dev/null and b/public/terrain/19/858514/353937.terrain differ diff --git a/public/terrain/19/858514/353938.terrain b/public/terrain/19/858514/353938.terrain new file mode 100644 index 000000000..8e79ed453 Binary files /dev/null and b/public/terrain/19/858514/353938.terrain differ diff --git a/public/terrain/19/858514/353939.terrain b/public/terrain/19/858514/353939.terrain new file mode 100644 index 000000000..2967d025f Binary files /dev/null and b/public/terrain/19/858514/353939.terrain differ diff --git a/public/terrain/19/858514/353940.terrain b/public/terrain/19/858514/353940.terrain new file mode 100644 index 000000000..2389b96ba Binary files /dev/null and b/public/terrain/19/858514/353940.terrain differ diff --git a/public/terrain/19/858514/353941.terrain b/public/terrain/19/858514/353941.terrain new file mode 100644 index 000000000..4d28eb7c1 Binary files /dev/null and b/public/terrain/19/858514/353941.terrain differ diff --git a/public/terrain/19/858514/353942.terrain b/public/terrain/19/858514/353942.terrain new file mode 100644 index 000000000..460de4b23 Binary files /dev/null and b/public/terrain/19/858514/353942.terrain differ diff --git a/public/terrain/19/858514/353943.terrain b/public/terrain/19/858514/353943.terrain new file mode 100644 index 000000000..19aef990b Binary files /dev/null and b/public/terrain/19/858514/353943.terrain differ diff --git a/public/terrain/19/858514/353944.terrain b/public/terrain/19/858514/353944.terrain new file mode 100644 index 000000000..fdd9b6e0a Binary files /dev/null and b/public/terrain/19/858514/353944.terrain differ diff --git a/public/terrain/19/858514/353945.terrain b/public/terrain/19/858514/353945.terrain new file mode 100644 index 000000000..011e664e9 Binary files /dev/null and b/public/terrain/19/858514/353945.terrain differ diff --git a/public/terrain/19/858514/353946.terrain b/public/terrain/19/858514/353946.terrain new file mode 100644 index 000000000..5d9962f85 Binary files /dev/null and b/public/terrain/19/858514/353946.terrain differ diff --git a/public/terrain/19/858514/353947.terrain b/public/terrain/19/858514/353947.terrain new file mode 100644 index 000000000..5c6ebee6b Binary files /dev/null and b/public/terrain/19/858514/353947.terrain differ diff --git a/public/terrain/19/858514/353948.terrain b/public/terrain/19/858514/353948.terrain new file mode 100644 index 000000000..c9d7361f4 Binary files /dev/null and b/public/terrain/19/858514/353948.terrain differ diff --git a/public/terrain/19/858514/353949.terrain b/public/terrain/19/858514/353949.terrain new file mode 100644 index 000000000..895f74254 Binary files /dev/null and b/public/terrain/19/858514/353949.terrain differ diff --git a/public/terrain/19/858514/353950.terrain b/public/terrain/19/858514/353950.terrain new file mode 100644 index 000000000..793fd2263 Binary files /dev/null and b/public/terrain/19/858514/353950.terrain differ diff --git a/public/terrain/19/858514/353951.terrain b/public/terrain/19/858514/353951.terrain new file mode 100644 index 000000000..dccfe8bda Binary files /dev/null and b/public/terrain/19/858514/353951.terrain differ diff --git a/public/terrain/19/858514/353952.terrain b/public/terrain/19/858514/353952.terrain new file mode 100644 index 000000000..424a54c46 Binary files /dev/null and b/public/terrain/19/858514/353952.terrain differ diff --git a/public/terrain/19/858514/353953.terrain b/public/terrain/19/858514/353953.terrain new file mode 100644 index 000000000..34c12a040 Binary files /dev/null and b/public/terrain/19/858514/353953.terrain differ diff --git a/public/terrain/19/858514/353954.terrain b/public/terrain/19/858514/353954.terrain new file mode 100644 index 000000000..2ae474228 Binary files /dev/null and b/public/terrain/19/858514/353954.terrain differ diff --git a/public/terrain/19/858514/353955.terrain b/public/terrain/19/858514/353955.terrain new file mode 100644 index 000000000..58c4d8bff Binary files /dev/null and b/public/terrain/19/858514/353955.terrain differ diff --git a/public/terrain/19/858514/353956.terrain b/public/terrain/19/858514/353956.terrain new file mode 100644 index 000000000..c72d36818 Binary files /dev/null and b/public/terrain/19/858514/353956.terrain differ diff --git a/public/terrain/19/858514/353957.terrain b/public/terrain/19/858514/353957.terrain new file mode 100644 index 000000000..6d22c770c Binary files /dev/null and b/public/terrain/19/858514/353957.terrain differ diff --git a/public/terrain/19/858514/353958.terrain b/public/terrain/19/858514/353958.terrain new file mode 100644 index 000000000..321875c88 Binary files /dev/null and b/public/terrain/19/858514/353958.terrain differ diff --git a/public/terrain/19/858514/353959.terrain b/public/terrain/19/858514/353959.terrain new file mode 100644 index 000000000..96f205fc2 Binary files /dev/null and b/public/terrain/19/858514/353959.terrain differ diff --git a/public/terrain/19/858514/353960.terrain b/public/terrain/19/858514/353960.terrain new file mode 100644 index 000000000..7c4edbb46 Binary files /dev/null and b/public/terrain/19/858514/353960.terrain differ diff --git a/public/terrain/19/858514/353961.terrain b/public/terrain/19/858514/353961.terrain new file mode 100644 index 000000000..3c13dbf5d Binary files /dev/null and b/public/terrain/19/858514/353961.terrain differ diff --git a/public/terrain/19/858514/353962.terrain b/public/terrain/19/858514/353962.terrain new file mode 100644 index 000000000..fc3f86de1 Binary files /dev/null and b/public/terrain/19/858514/353962.terrain differ diff --git a/public/terrain/19/858514/353963.terrain b/public/terrain/19/858514/353963.terrain new file mode 100644 index 000000000..5d9d84593 Binary files /dev/null and b/public/terrain/19/858514/353963.terrain differ diff --git a/public/terrain/19/858514/353964.terrain b/public/terrain/19/858514/353964.terrain new file mode 100644 index 000000000..f9d415d19 Binary files /dev/null and b/public/terrain/19/858514/353964.terrain differ diff --git a/public/terrain/19/858514/353965.terrain b/public/terrain/19/858514/353965.terrain new file mode 100644 index 000000000..680ccbd10 Binary files /dev/null and b/public/terrain/19/858514/353965.terrain differ diff --git a/public/terrain/19/858514/353966.terrain b/public/terrain/19/858514/353966.terrain new file mode 100644 index 000000000..9580b8338 Binary files /dev/null and b/public/terrain/19/858514/353966.terrain differ diff --git a/public/terrain/19/858514/353967.terrain b/public/terrain/19/858514/353967.terrain new file mode 100644 index 000000000..bd0cf67df Binary files /dev/null and b/public/terrain/19/858514/353967.terrain differ diff --git a/public/terrain/19/858514/353968.terrain b/public/terrain/19/858514/353968.terrain new file mode 100644 index 000000000..07af39197 Binary files /dev/null and b/public/terrain/19/858514/353968.terrain differ diff --git a/public/terrain/19/858514/353969.terrain b/public/terrain/19/858514/353969.terrain new file mode 100644 index 000000000..95a237716 Binary files /dev/null and b/public/terrain/19/858514/353969.terrain differ diff --git a/public/terrain/19/858514/353970.terrain b/public/terrain/19/858514/353970.terrain new file mode 100644 index 000000000..a9d52fd84 Binary files /dev/null and b/public/terrain/19/858514/353970.terrain differ diff --git a/public/terrain/19/858514/353971.terrain b/public/terrain/19/858514/353971.terrain new file mode 100644 index 000000000..f1211fcec Binary files /dev/null and b/public/terrain/19/858514/353971.terrain differ diff --git a/public/terrain/19/858514/353972.terrain b/public/terrain/19/858514/353972.terrain new file mode 100644 index 000000000..a145b5633 Binary files /dev/null and b/public/terrain/19/858514/353972.terrain differ diff --git a/public/terrain/19/858514/353973.terrain b/public/terrain/19/858514/353973.terrain new file mode 100644 index 000000000..7200f303d Binary files /dev/null and b/public/terrain/19/858514/353973.terrain differ diff --git a/public/terrain/19/858514/353974.terrain b/public/terrain/19/858514/353974.terrain new file mode 100644 index 000000000..98634852a Binary files /dev/null and b/public/terrain/19/858514/353974.terrain differ diff --git a/public/terrain/19/858514/353975.terrain b/public/terrain/19/858514/353975.terrain new file mode 100644 index 000000000..c19437674 Binary files /dev/null and b/public/terrain/19/858514/353975.terrain differ diff --git a/public/terrain/19/858514/353976.terrain b/public/terrain/19/858514/353976.terrain new file mode 100644 index 000000000..60436f3ae Binary files /dev/null and b/public/terrain/19/858514/353976.terrain differ diff --git a/public/terrain/19/858514/353977.terrain b/public/terrain/19/858514/353977.terrain new file mode 100644 index 000000000..09fde9689 Binary files /dev/null and b/public/terrain/19/858514/353977.terrain differ diff --git a/public/terrain/19/858514/353978.terrain b/public/terrain/19/858514/353978.terrain new file mode 100644 index 000000000..2b5763b8c Binary files /dev/null and b/public/terrain/19/858514/353978.terrain differ diff --git a/public/terrain/19/858514/353979.terrain b/public/terrain/19/858514/353979.terrain new file mode 100644 index 000000000..28cdeef58 Binary files /dev/null and b/public/terrain/19/858514/353979.terrain differ diff --git a/public/terrain/19/858514/353980.terrain b/public/terrain/19/858514/353980.terrain new file mode 100644 index 000000000..d895e5b41 Binary files /dev/null and b/public/terrain/19/858514/353980.terrain differ diff --git a/public/terrain/19/858514/353981.terrain b/public/terrain/19/858514/353981.terrain new file mode 100644 index 000000000..b0b4ae19d Binary files /dev/null and b/public/terrain/19/858514/353981.terrain differ diff --git a/public/terrain/19/858514/353982.terrain b/public/terrain/19/858514/353982.terrain new file mode 100644 index 000000000..744f5e157 Binary files /dev/null and b/public/terrain/19/858514/353982.terrain differ diff --git a/public/terrain/19/858514/353983.terrain b/public/terrain/19/858514/353983.terrain new file mode 100644 index 000000000..e9fe03107 Binary files /dev/null and b/public/terrain/19/858514/353983.terrain differ diff --git a/public/terrain/19/858514/353984.terrain b/public/terrain/19/858514/353984.terrain new file mode 100644 index 000000000..9ae409905 Binary files /dev/null and b/public/terrain/19/858514/353984.terrain differ diff --git a/public/terrain/19/858514/353985.terrain b/public/terrain/19/858514/353985.terrain new file mode 100644 index 000000000..f79ac6cf5 Binary files /dev/null and b/public/terrain/19/858514/353985.terrain differ diff --git a/public/terrain/19/858514/353986.terrain b/public/terrain/19/858514/353986.terrain new file mode 100644 index 000000000..7ea8e6748 Binary files /dev/null and b/public/terrain/19/858514/353986.terrain differ diff --git a/public/terrain/19/858514/353987.terrain b/public/terrain/19/858514/353987.terrain new file mode 100644 index 000000000..948fde80d Binary files /dev/null and b/public/terrain/19/858514/353987.terrain differ diff --git a/public/terrain/19/858514/353988.terrain b/public/terrain/19/858514/353988.terrain new file mode 100644 index 000000000..50544c09c Binary files /dev/null and b/public/terrain/19/858514/353988.terrain differ diff --git a/public/terrain/19/858514/353989.terrain b/public/terrain/19/858514/353989.terrain new file mode 100644 index 000000000..0a919ca8d Binary files /dev/null and b/public/terrain/19/858514/353989.terrain differ diff --git a/public/terrain/19/858514/353990.terrain b/public/terrain/19/858514/353990.terrain new file mode 100644 index 000000000..848a693b0 Binary files /dev/null and b/public/terrain/19/858514/353990.terrain differ diff --git a/public/terrain/19/858514/353991.terrain b/public/terrain/19/858514/353991.terrain new file mode 100644 index 000000000..8d40ee477 Binary files /dev/null and b/public/terrain/19/858514/353991.terrain differ diff --git a/public/terrain/19/858514/353992.terrain b/public/terrain/19/858514/353992.terrain new file mode 100644 index 000000000..b6ab41a95 Binary files /dev/null and b/public/terrain/19/858514/353992.terrain differ diff --git a/public/terrain/19/858514/353993.terrain b/public/terrain/19/858514/353993.terrain new file mode 100644 index 000000000..add5f9088 Binary files /dev/null and b/public/terrain/19/858514/353993.terrain differ diff --git a/public/terrain/19/858514/353994.terrain b/public/terrain/19/858514/353994.terrain new file mode 100644 index 000000000..0e271aeae Binary files /dev/null and b/public/terrain/19/858514/353994.terrain differ diff --git a/public/terrain/19/858514/353995.terrain b/public/terrain/19/858514/353995.terrain new file mode 100644 index 000000000..93be0e9ba Binary files /dev/null and b/public/terrain/19/858514/353995.terrain differ diff --git a/public/terrain/19/858514/353996.terrain b/public/terrain/19/858514/353996.terrain new file mode 100644 index 000000000..5695e045a Binary files /dev/null and b/public/terrain/19/858514/353996.terrain differ diff --git a/public/terrain/19/858514/353997.terrain b/public/terrain/19/858514/353997.terrain new file mode 100644 index 000000000..3fa130b68 Binary files /dev/null and b/public/terrain/19/858514/353997.terrain differ diff --git a/public/terrain/19/858514/353998.terrain b/public/terrain/19/858514/353998.terrain new file mode 100644 index 000000000..a4c0145e9 Binary files /dev/null and b/public/terrain/19/858514/353998.terrain differ diff --git a/public/terrain/19/858514/353999.terrain b/public/terrain/19/858514/353999.terrain new file mode 100644 index 000000000..a7438258f Binary files /dev/null and b/public/terrain/19/858514/353999.terrain differ diff --git a/public/terrain/19/858514/354000.terrain b/public/terrain/19/858514/354000.terrain new file mode 100644 index 000000000..26c4e5f40 Binary files /dev/null and b/public/terrain/19/858514/354000.terrain differ diff --git a/public/terrain/19/858514/354001.terrain b/public/terrain/19/858514/354001.terrain new file mode 100644 index 000000000..1c18a53c1 Binary files /dev/null and b/public/terrain/19/858514/354001.terrain differ diff --git a/public/terrain/19/858514/354002.terrain b/public/terrain/19/858514/354002.terrain new file mode 100644 index 000000000..637aa4272 Binary files /dev/null and b/public/terrain/19/858514/354002.terrain differ diff --git a/public/terrain/19/858514/354003.terrain b/public/terrain/19/858514/354003.terrain new file mode 100644 index 000000000..96c5b4734 Binary files /dev/null and b/public/terrain/19/858514/354003.terrain differ diff --git a/public/terrain/19/858514/354004.terrain b/public/terrain/19/858514/354004.terrain new file mode 100644 index 000000000..849317bab Binary files /dev/null and b/public/terrain/19/858514/354004.terrain differ diff --git a/public/terrain/19/858514/354005.terrain b/public/terrain/19/858514/354005.terrain new file mode 100644 index 000000000..389b20f10 Binary files /dev/null and b/public/terrain/19/858514/354005.terrain differ diff --git a/public/terrain/19/858514/354006.terrain b/public/terrain/19/858514/354006.terrain new file mode 100644 index 000000000..06713bc65 Binary files /dev/null and b/public/terrain/19/858514/354006.terrain differ diff --git a/public/terrain/19/858514/354007.terrain b/public/terrain/19/858514/354007.terrain new file mode 100644 index 000000000..80544b4af Binary files /dev/null and b/public/terrain/19/858514/354007.terrain differ diff --git a/public/terrain/19/858514/354008.terrain b/public/terrain/19/858514/354008.terrain new file mode 100644 index 000000000..34e2618a6 Binary files /dev/null and b/public/terrain/19/858514/354008.terrain differ diff --git a/public/terrain/19/858514/354009.terrain b/public/terrain/19/858514/354009.terrain new file mode 100644 index 000000000..49f96e8a9 Binary files /dev/null and b/public/terrain/19/858514/354009.terrain differ diff --git a/public/terrain/19/858514/354010.terrain b/public/terrain/19/858514/354010.terrain new file mode 100644 index 000000000..3c5429ce6 Binary files /dev/null and b/public/terrain/19/858514/354010.terrain differ diff --git a/public/terrain/19/858514/354011.terrain b/public/terrain/19/858514/354011.terrain new file mode 100644 index 000000000..7a197a32d Binary files /dev/null and b/public/terrain/19/858514/354011.terrain differ diff --git a/public/terrain/19/858514/354012.terrain b/public/terrain/19/858514/354012.terrain new file mode 100644 index 000000000..45c465363 Binary files /dev/null and b/public/terrain/19/858514/354012.terrain differ diff --git a/public/terrain/19/858514/354013.terrain b/public/terrain/19/858514/354013.terrain new file mode 100644 index 000000000..cc9d0daa6 Binary files /dev/null and b/public/terrain/19/858514/354013.terrain differ diff --git a/public/terrain/19/858514/354014.terrain b/public/terrain/19/858514/354014.terrain new file mode 100644 index 000000000..b9a5fb069 Binary files /dev/null and b/public/terrain/19/858514/354014.terrain differ diff --git a/public/terrain/19/858514/354015.terrain b/public/terrain/19/858514/354015.terrain new file mode 100644 index 000000000..4e0ceb92c Binary files /dev/null and b/public/terrain/19/858514/354015.terrain differ diff --git a/public/terrain/19/858514/354016.terrain b/public/terrain/19/858514/354016.terrain new file mode 100644 index 000000000..c491e6f1a Binary files /dev/null and b/public/terrain/19/858514/354016.terrain differ diff --git a/public/terrain/19/858514/354017.terrain b/public/terrain/19/858514/354017.terrain new file mode 100644 index 000000000..c7f2fb5a5 Binary files /dev/null and b/public/terrain/19/858514/354017.terrain differ diff --git a/public/terrain/19/858514/354018.terrain b/public/terrain/19/858514/354018.terrain new file mode 100644 index 000000000..fba67658b Binary files /dev/null and b/public/terrain/19/858514/354018.terrain differ diff --git a/public/terrain/19/858514/354019.terrain b/public/terrain/19/858514/354019.terrain new file mode 100644 index 000000000..1bccbe0ae Binary files /dev/null and b/public/terrain/19/858514/354019.terrain differ diff --git a/public/terrain/19/858514/354020.terrain b/public/terrain/19/858514/354020.terrain new file mode 100644 index 000000000..02a4d82c4 Binary files /dev/null and b/public/terrain/19/858514/354020.terrain differ diff --git a/public/terrain/19/858514/354021.terrain b/public/terrain/19/858514/354021.terrain new file mode 100644 index 000000000..a43bcc933 Binary files /dev/null and b/public/terrain/19/858514/354021.terrain differ diff --git a/public/terrain/19/858514/354022.terrain b/public/terrain/19/858514/354022.terrain new file mode 100644 index 000000000..c329d93af Binary files /dev/null and b/public/terrain/19/858514/354022.terrain differ diff --git a/public/terrain/19/858514/354023.terrain b/public/terrain/19/858514/354023.terrain new file mode 100644 index 000000000..4e7420e37 Binary files /dev/null and b/public/terrain/19/858514/354023.terrain differ diff --git a/public/terrain/19/858514/354024.terrain b/public/terrain/19/858514/354024.terrain new file mode 100644 index 000000000..1a959704e Binary files /dev/null and b/public/terrain/19/858514/354024.terrain differ diff --git a/public/terrain/19/858514/354025.terrain b/public/terrain/19/858514/354025.terrain new file mode 100644 index 000000000..730beb902 Binary files /dev/null and b/public/terrain/19/858514/354025.terrain differ diff --git a/public/terrain/19/858514/354026.terrain b/public/terrain/19/858514/354026.terrain new file mode 100644 index 000000000..38b4a3411 Binary files /dev/null and b/public/terrain/19/858514/354026.terrain differ diff --git a/public/terrain/19/858514/354027.terrain b/public/terrain/19/858514/354027.terrain new file mode 100644 index 000000000..98de1f155 Binary files /dev/null and b/public/terrain/19/858514/354027.terrain differ diff --git a/public/terrain/19/858514/354028.terrain b/public/terrain/19/858514/354028.terrain new file mode 100644 index 000000000..04b05e6a0 Binary files /dev/null and b/public/terrain/19/858514/354028.terrain differ diff --git a/public/terrain/19/858514/354029.terrain b/public/terrain/19/858514/354029.terrain new file mode 100644 index 000000000..997a979a6 Binary files /dev/null and b/public/terrain/19/858514/354029.terrain differ diff --git a/public/terrain/19/858514/354030.terrain b/public/terrain/19/858514/354030.terrain new file mode 100644 index 000000000..bce38c9c7 Binary files /dev/null and b/public/terrain/19/858514/354030.terrain differ diff --git a/public/terrain/19/858514/354031.terrain b/public/terrain/19/858514/354031.terrain new file mode 100644 index 000000000..24b738308 Binary files /dev/null and b/public/terrain/19/858514/354031.terrain differ diff --git a/public/terrain/19/858514/354032.terrain b/public/terrain/19/858514/354032.terrain new file mode 100644 index 000000000..f47bdf736 Binary files /dev/null and b/public/terrain/19/858514/354032.terrain differ diff --git a/public/terrain/19/858514/354033.terrain b/public/terrain/19/858514/354033.terrain new file mode 100644 index 000000000..45d341b95 Binary files /dev/null and b/public/terrain/19/858514/354033.terrain differ diff --git a/public/terrain/19/858514/354034.terrain b/public/terrain/19/858514/354034.terrain new file mode 100644 index 000000000..e3a8b4bf2 Binary files /dev/null and b/public/terrain/19/858514/354034.terrain differ diff --git a/public/terrain/19/858514/354035.terrain b/public/terrain/19/858514/354035.terrain new file mode 100644 index 000000000..b43cc20a3 Binary files /dev/null and b/public/terrain/19/858514/354035.terrain differ diff --git a/public/terrain/19/858514/354036.terrain b/public/terrain/19/858514/354036.terrain new file mode 100644 index 000000000..38d4e5fe8 Binary files /dev/null and b/public/terrain/19/858514/354036.terrain differ diff --git a/public/terrain/19/858514/354037.terrain b/public/terrain/19/858514/354037.terrain new file mode 100644 index 000000000..6a553d361 Binary files /dev/null and b/public/terrain/19/858514/354037.terrain differ diff --git a/public/terrain/19/858514/354038.terrain b/public/terrain/19/858514/354038.terrain new file mode 100644 index 000000000..77120c59e Binary files /dev/null and b/public/terrain/19/858514/354038.terrain differ diff --git a/public/terrain/19/858514/354039.terrain b/public/terrain/19/858514/354039.terrain new file mode 100644 index 000000000..31c4b9606 Binary files /dev/null and b/public/terrain/19/858514/354039.terrain differ diff --git a/public/terrain/19/858514/354040.terrain b/public/terrain/19/858514/354040.terrain new file mode 100644 index 000000000..892725f8b Binary files /dev/null and b/public/terrain/19/858514/354040.terrain differ diff --git a/public/terrain/19/858514/354041.terrain b/public/terrain/19/858514/354041.terrain new file mode 100644 index 000000000..b9a14abcf Binary files /dev/null and b/public/terrain/19/858514/354041.terrain differ diff --git a/public/terrain/19/858514/354042.terrain b/public/terrain/19/858514/354042.terrain new file mode 100644 index 000000000..71554a9ee Binary files /dev/null and b/public/terrain/19/858514/354042.terrain differ diff --git a/public/terrain/19/858514/354043.terrain b/public/terrain/19/858514/354043.terrain new file mode 100644 index 000000000..4a4092abb Binary files /dev/null and b/public/terrain/19/858514/354043.terrain differ diff --git a/public/terrain/19/858514/354044.terrain b/public/terrain/19/858514/354044.terrain new file mode 100644 index 000000000..42bb33b58 Binary files /dev/null and b/public/terrain/19/858514/354044.terrain differ diff --git a/public/terrain/19/858514/354045.terrain b/public/terrain/19/858514/354045.terrain new file mode 100644 index 000000000..23f637408 Binary files /dev/null and b/public/terrain/19/858514/354045.terrain differ diff --git a/public/terrain/19/858514/354046.terrain b/public/terrain/19/858514/354046.terrain new file mode 100644 index 000000000..5c77c56ba Binary files /dev/null and b/public/terrain/19/858514/354046.terrain differ diff --git a/public/terrain/19/858514/354047.terrain b/public/terrain/19/858514/354047.terrain new file mode 100644 index 000000000..abb37988c Binary files /dev/null and b/public/terrain/19/858514/354047.terrain differ diff --git a/public/terrain/19/858514/354048.terrain b/public/terrain/19/858514/354048.terrain new file mode 100644 index 000000000..b016eb71a Binary files /dev/null and b/public/terrain/19/858514/354048.terrain differ diff --git a/public/terrain/19/858514/354049.terrain b/public/terrain/19/858514/354049.terrain new file mode 100644 index 000000000..09c119b66 Binary files /dev/null and b/public/terrain/19/858514/354049.terrain differ diff --git a/public/terrain/19/858514/354050.terrain b/public/terrain/19/858514/354050.terrain new file mode 100644 index 000000000..a31f90ca9 Binary files /dev/null and b/public/terrain/19/858514/354050.terrain differ diff --git a/public/terrain/19/858514/354051.terrain b/public/terrain/19/858514/354051.terrain new file mode 100644 index 000000000..e0266e5ea Binary files /dev/null and b/public/terrain/19/858514/354051.terrain differ diff --git a/public/terrain/19/858514/354052.terrain b/public/terrain/19/858514/354052.terrain new file mode 100644 index 000000000..42f057b5d Binary files /dev/null and b/public/terrain/19/858514/354052.terrain differ diff --git a/public/terrain/19/858514/354053.terrain b/public/terrain/19/858514/354053.terrain new file mode 100644 index 000000000..6b3ef7397 Binary files /dev/null and b/public/terrain/19/858514/354053.terrain differ diff --git a/public/terrain/19/858514/354054.terrain b/public/terrain/19/858514/354054.terrain new file mode 100644 index 000000000..87acda01d Binary files /dev/null and b/public/terrain/19/858514/354054.terrain differ diff --git a/public/terrain/19/858514/354055.terrain b/public/terrain/19/858514/354055.terrain new file mode 100644 index 000000000..9959d991d Binary files /dev/null and b/public/terrain/19/858514/354055.terrain differ diff --git a/public/terrain/19/858514/354056.terrain b/public/terrain/19/858514/354056.terrain new file mode 100644 index 000000000..b9cb75a6a Binary files /dev/null and b/public/terrain/19/858514/354056.terrain differ diff --git a/public/terrain/19/858514/354057.terrain b/public/terrain/19/858514/354057.terrain new file mode 100644 index 000000000..1165cbad0 Binary files /dev/null and b/public/terrain/19/858514/354057.terrain differ diff --git a/public/terrain/19/858514/354058.terrain b/public/terrain/19/858514/354058.terrain new file mode 100644 index 000000000..cc6478a56 Binary files /dev/null and b/public/terrain/19/858514/354058.terrain differ diff --git a/public/terrain/19/858514/354059.terrain b/public/terrain/19/858514/354059.terrain new file mode 100644 index 000000000..57fe3f47d Binary files /dev/null and b/public/terrain/19/858514/354059.terrain differ diff --git a/public/terrain/19/858515/353743.terrain b/public/terrain/19/858515/353743.terrain new file mode 100644 index 000000000..0bd5b2f03 Binary files /dev/null and b/public/terrain/19/858515/353743.terrain differ diff --git a/public/terrain/19/858515/353744.terrain b/public/terrain/19/858515/353744.terrain new file mode 100644 index 000000000..22368390f Binary files /dev/null and b/public/terrain/19/858515/353744.terrain differ diff --git a/public/terrain/19/858515/353745.terrain b/public/terrain/19/858515/353745.terrain new file mode 100644 index 000000000..32e229433 Binary files /dev/null and b/public/terrain/19/858515/353745.terrain differ diff --git a/public/terrain/19/858515/353746.terrain b/public/terrain/19/858515/353746.terrain new file mode 100644 index 000000000..a8e987f98 Binary files /dev/null and b/public/terrain/19/858515/353746.terrain differ diff --git a/public/terrain/19/858515/353747.terrain b/public/terrain/19/858515/353747.terrain new file mode 100644 index 000000000..f912b62e9 Binary files /dev/null and b/public/terrain/19/858515/353747.terrain differ diff --git a/public/terrain/19/858515/353748.terrain b/public/terrain/19/858515/353748.terrain new file mode 100644 index 000000000..ecbd8bd6a Binary files /dev/null and b/public/terrain/19/858515/353748.terrain differ diff --git a/public/terrain/19/858515/353749.terrain b/public/terrain/19/858515/353749.terrain new file mode 100644 index 000000000..3dd827594 Binary files /dev/null and b/public/terrain/19/858515/353749.terrain differ diff --git a/public/terrain/19/858515/353750.terrain b/public/terrain/19/858515/353750.terrain new file mode 100644 index 000000000..355e0e95a Binary files /dev/null and b/public/terrain/19/858515/353750.terrain differ diff --git a/public/terrain/19/858515/353751.terrain b/public/terrain/19/858515/353751.terrain new file mode 100644 index 000000000..5381428d6 Binary files /dev/null and b/public/terrain/19/858515/353751.terrain differ diff --git a/public/terrain/19/858515/353752.terrain b/public/terrain/19/858515/353752.terrain new file mode 100644 index 000000000..1e063c9a1 Binary files /dev/null and b/public/terrain/19/858515/353752.terrain differ diff --git a/public/terrain/19/858515/353753.terrain b/public/terrain/19/858515/353753.terrain new file mode 100644 index 000000000..b3e5e1f01 Binary files /dev/null and b/public/terrain/19/858515/353753.terrain differ diff --git a/public/terrain/19/858515/353754.terrain b/public/terrain/19/858515/353754.terrain new file mode 100644 index 000000000..e9267a66b Binary files /dev/null and b/public/terrain/19/858515/353754.terrain differ diff --git a/public/terrain/19/858515/353755.terrain b/public/terrain/19/858515/353755.terrain new file mode 100644 index 000000000..b97c05f6c Binary files /dev/null and b/public/terrain/19/858515/353755.terrain differ diff --git a/public/terrain/19/858515/353756.terrain b/public/terrain/19/858515/353756.terrain new file mode 100644 index 000000000..f73a7d42f Binary files /dev/null and b/public/terrain/19/858515/353756.terrain differ diff --git a/public/terrain/19/858515/353757.terrain b/public/terrain/19/858515/353757.terrain new file mode 100644 index 000000000..4ad4634e6 Binary files /dev/null and b/public/terrain/19/858515/353757.terrain differ diff --git a/public/terrain/19/858515/353758.terrain b/public/terrain/19/858515/353758.terrain new file mode 100644 index 000000000..7f2a7aee8 Binary files /dev/null and b/public/terrain/19/858515/353758.terrain differ diff --git a/public/terrain/19/858515/353759.terrain b/public/terrain/19/858515/353759.terrain new file mode 100644 index 000000000..8add5543d Binary files /dev/null and b/public/terrain/19/858515/353759.terrain differ diff --git a/public/terrain/19/858515/353760.terrain b/public/terrain/19/858515/353760.terrain new file mode 100644 index 000000000..a0da4dff8 Binary files /dev/null and b/public/terrain/19/858515/353760.terrain differ diff --git a/public/terrain/19/858515/353761.terrain b/public/terrain/19/858515/353761.terrain new file mode 100644 index 000000000..fc514d9d8 Binary files /dev/null and b/public/terrain/19/858515/353761.terrain differ diff --git a/public/terrain/19/858515/353762.terrain b/public/terrain/19/858515/353762.terrain new file mode 100644 index 000000000..6ab76f298 Binary files /dev/null and b/public/terrain/19/858515/353762.terrain differ diff --git a/public/terrain/19/858515/353763.terrain b/public/terrain/19/858515/353763.terrain new file mode 100644 index 000000000..c0b65a600 Binary files /dev/null and b/public/terrain/19/858515/353763.terrain differ diff --git a/public/terrain/19/858515/353764.terrain b/public/terrain/19/858515/353764.terrain new file mode 100644 index 000000000..fda7f90ae Binary files /dev/null and b/public/terrain/19/858515/353764.terrain differ diff --git a/public/terrain/19/858515/353765.terrain b/public/terrain/19/858515/353765.terrain new file mode 100644 index 000000000..38be32103 Binary files /dev/null and b/public/terrain/19/858515/353765.terrain differ diff --git a/public/terrain/19/858515/353766.terrain b/public/terrain/19/858515/353766.terrain new file mode 100644 index 000000000..c7359af7a Binary files /dev/null and b/public/terrain/19/858515/353766.terrain differ diff --git a/public/terrain/19/858515/353767.terrain b/public/terrain/19/858515/353767.terrain new file mode 100644 index 000000000..981d39d1a Binary files /dev/null and b/public/terrain/19/858515/353767.terrain differ diff --git a/public/terrain/19/858515/353768.terrain b/public/terrain/19/858515/353768.terrain new file mode 100644 index 000000000..fe1cc957a Binary files /dev/null and b/public/terrain/19/858515/353768.terrain differ diff --git a/public/terrain/19/858515/353769.terrain b/public/terrain/19/858515/353769.terrain new file mode 100644 index 000000000..9f040140c Binary files /dev/null and b/public/terrain/19/858515/353769.terrain differ diff --git a/public/terrain/19/858515/353770.terrain b/public/terrain/19/858515/353770.terrain new file mode 100644 index 000000000..efc2540ba Binary files /dev/null and b/public/terrain/19/858515/353770.terrain differ diff --git a/public/terrain/19/858515/353771.terrain b/public/terrain/19/858515/353771.terrain new file mode 100644 index 000000000..21f176cb0 Binary files /dev/null and b/public/terrain/19/858515/353771.terrain differ diff --git a/public/terrain/19/858515/353772.terrain b/public/terrain/19/858515/353772.terrain new file mode 100644 index 000000000..665a3fe82 Binary files /dev/null and b/public/terrain/19/858515/353772.terrain differ diff --git a/public/terrain/19/858515/353773.terrain b/public/terrain/19/858515/353773.terrain new file mode 100644 index 000000000..d6a3d5b92 Binary files /dev/null and b/public/terrain/19/858515/353773.terrain differ diff --git a/public/terrain/19/858515/353774.terrain b/public/terrain/19/858515/353774.terrain new file mode 100644 index 000000000..c8673b6d1 Binary files /dev/null and b/public/terrain/19/858515/353774.terrain differ diff --git a/public/terrain/19/858515/353775.terrain b/public/terrain/19/858515/353775.terrain new file mode 100644 index 000000000..481fbaa6b Binary files /dev/null and b/public/terrain/19/858515/353775.terrain differ diff --git a/public/terrain/19/858515/353776.terrain b/public/terrain/19/858515/353776.terrain new file mode 100644 index 000000000..8665b5241 Binary files /dev/null and b/public/terrain/19/858515/353776.terrain differ diff --git a/public/terrain/19/858515/353777.terrain b/public/terrain/19/858515/353777.terrain new file mode 100644 index 000000000..73349c6df Binary files /dev/null and b/public/terrain/19/858515/353777.terrain differ diff --git a/public/terrain/19/858515/353778.terrain b/public/terrain/19/858515/353778.terrain new file mode 100644 index 000000000..531fd406c Binary files /dev/null and b/public/terrain/19/858515/353778.terrain differ diff --git a/public/terrain/19/858515/353779.terrain b/public/terrain/19/858515/353779.terrain new file mode 100644 index 000000000..70aa094ab Binary files /dev/null and b/public/terrain/19/858515/353779.terrain differ diff --git a/public/terrain/19/858515/353780.terrain b/public/terrain/19/858515/353780.terrain new file mode 100644 index 000000000..5eab31fcc Binary files /dev/null and b/public/terrain/19/858515/353780.terrain differ diff --git a/public/terrain/19/858515/353781.terrain b/public/terrain/19/858515/353781.terrain new file mode 100644 index 000000000..26262d70b Binary files /dev/null and b/public/terrain/19/858515/353781.terrain differ diff --git a/public/terrain/19/858515/353782.terrain b/public/terrain/19/858515/353782.terrain new file mode 100644 index 000000000..a4850857b Binary files /dev/null and b/public/terrain/19/858515/353782.terrain differ diff --git a/public/terrain/19/858515/353783.terrain b/public/terrain/19/858515/353783.terrain new file mode 100644 index 000000000..d9c8f7a33 Binary files /dev/null and b/public/terrain/19/858515/353783.terrain differ diff --git a/public/terrain/19/858515/353784.terrain b/public/terrain/19/858515/353784.terrain new file mode 100644 index 000000000..32ce73222 Binary files /dev/null and b/public/terrain/19/858515/353784.terrain differ diff --git a/public/terrain/19/858515/353785.terrain b/public/terrain/19/858515/353785.terrain new file mode 100644 index 000000000..7ffe580f0 Binary files /dev/null and b/public/terrain/19/858515/353785.terrain differ diff --git a/public/terrain/19/858515/353786.terrain b/public/terrain/19/858515/353786.terrain new file mode 100644 index 000000000..eb8a05a9c Binary files /dev/null and b/public/terrain/19/858515/353786.terrain differ diff --git a/public/terrain/19/858515/353787.terrain b/public/terrain/19/858515/353787.terrain new file mode 100644 index 000000000..b1432693f Binary files /dev/null and b/public/terrain/19/858515/353787.terrain differ diff --git a/public/terrain/19/858515/353788.terrain b/public/terrain/19/858515/353788.terrain new file mode 100644 index 000000000..b2f0bfbdf Binary files /dev/null and b/public/terrain/19/858515/353788.terrain differ diff --git a/public/terrain/19/858515/353789.terrain b/public/terrain/19/858515/353789.terrain new file mode 100644 index 000000000..ca32dbe34 Binary files /dev/null and b/public/terrain/19/858515/353789.terrain differ diff --git a/public/terrain/19/858515/353790.terrain b/public/terrain/19/858515/353790.terrain new file mode 100644 index 000000000..a8e40d126 Binary files /dev/null and b/public/terrain/19/858515/353790.terrain differ diff --git a/public/terrain/19/858515/353791.terrain b/public/terrain/19/858515/353791.terrain new file mode 100644 index 000000000..88b5f7768 Binary files /dev/null and b/public/terrain/19/858515/353791.terrain differ diff --git a/public/terrain/19/858515/353792.terrain b/public/terrain/19/858515/353792.terrain new file mode 100644 index 000000000..f89a452e1 Binary files /dev/null and b/public/terrain/19/858515/353792.terrain differ diff --git a/public/terrain/19/858515/353793.terrain b/public/terrain/19/858515/353793.terrain new file mode 100644 index 000000000..835a75eab Binary files /dev/null and b/public/terrain/19/858515/353793.terrain differ diff --git a/public/terrain/19/858515/353794.terrain b/public/terrain/19/858515/353794.terrain new file mode 100644 index 000000000..4bd025803 Binary files /dev/null and b/public/terrain/19/858515/353794.terrain differ diff --git a/public/terrain/19/858515/353795.terrain b/public/terrain/19/858515/353795.terrain new file mode 100644 index 000000000..c32319ae1 Binary files /dev/null and b/public/terrain/19/858515/353795.terrain differ diff --git a/public/terrain/19/858515/353796.terrain b/public/terrain/19/858515/353796.terrain new file mode 100644 index 000000000..3f0f1360f Binary files /dev/null and b/public/terrain/19/858515/353796.terrain differ diff --git a/public/terrain/19/858515/353797.terrain b/public/terrain/19/858515/353797.terrain new file mode 100644 index 000000000..5a7a443ed Binary files /dev/null and b/public/terrain/19/858515/353797.terrain differ diff --git a/public/terrain/19/858515/353798.terrain b/public/terrain/19/858515/353798.terrain new file mode 100644 index 000000000..25f651686 Binary files /dev/null and b/public/terrain/19/858515/353798.terrain differ diff --git a/public/terrain/19/858515/353799.terrain b/public/terrain/19/858515/353799.terrain new file mode 100644 index 000000000..b8a7619ee Binary files /dev/null and b/public/terrain/19/858515/353799.terrain differ diff --git a/public/terrain/19/858515/353800.terrain b/public/terrain/19/858515/353800.terrain new file mode 100644 index 000000000..70e3e14f4 Binary files /dev/null and b/public/terrain/19/858515/353800.terrain differ diff --git a/public/terrain/19/858515/353801.terrain b/public/terrain/19/858515/353801.terrain new file mode 100644 index 000000000..9a8219c42 Binary files /dev/null and b/public/terrain/19/858515/353801.terrain differ diff --git a/public/terrain/19/858515/353802.terrain b/public/terrain/19/858515/353802.terrain new file mode 100644 index 000000000..45817e9f4 Binary files /dev/null and b/public/terrain/19/858515/353802.terrain differ diff --git a/public/terrain/19/858515/353803.terrain b/public/terrain/19/858515/353803.terrain new file mode 100644 index 000000000..0dc14ecec Binary files /dev/null and b/public/terrain/19/858515/353803.terrain differ diff --git a/public/terrain/19/858515/353804.terrain b/public/terrain/19/858515/353804.terrain new file mode 100644 index 000000000..79fd15124 Binary files /dev/null and b/public/terrain/19/858515/353804.terrain differ diff --git a/public/terrain/19/858515/353805.terrain b/public/terrain/19/858515/353805.terrain new file mode 100644 index 000000000..f617f191e Binary files /dev/null and b/public/terrain/19/858515/353805.terrain differ diff --git a/public/terrain/19/858515/353806.terrain b/public/terrain/19/858515/353806.terrain new file mode 100644 index 000000000..e86eed01c Binary files /dev/null and b/public/terrain/19/858515/353806.terrain differ diff --git a/public/terrain/19/858515/353807.terrain b/public/terrain/19/858515/353807.terrain new file mode 100644 index 000000000..3736c5cd8 Binary files /dev/null and b/public/terrain/19/858515/353807.terrain differ diff --git a/public/terrain/19/858515/353808.terrain b/public/terrain/19/858515/353808.terrain new file mode 100644 index 000000000..0c7588e7e Binary files /dev/null and b/public/terrain/19/858515/353808.terrain differ diff --git a/public/terrain/19/858515/353809.terrain b/public/terrain/19/858515/353809.terrain new file mode 100644 index 000000000..d63af581c Binary files /dev/null and b/public/terrain/19/858515/353809.terrain differ diff --git a/public/terrain/19/858515/353810.terrain b/public/terrain/19/858515/353810.terrain new file mode 100644 index 000000000..48a235e4b Binary files /dev/null and b/public/terrain/19/858515/353810.terrain differ diff --git a/public/terrain/19/858515/353811.terrain b/public/terrain/19/858515/353811.terrain new file mode 100644 index 000000000..51017dea1 Binary files /dev/null and b/public/terrain/19/858515/353811.terrain differ diff --git a/public/terrain/19/858515/353812.terrain b/public/terrain/19/858515/353812.terrain new file mode 100644 index 000000000..98e70148c Binary files /dev/null and b/public/terrain/19/858515/353812.terrain differ diff --git a/public/terrain/19/858515/353813.terrain b/public/terrain/19/858515/353813.terrain new file mode 100644 index 000000000..6d9ec5b94 Binary files /dev/null and b/public/terrain/19/858515/353813.terrain differ diff --git a/public/terrain/19/858515/353814.terrain b/public/terrain/19/858515/353814.terrain new file mode 100644 index 000000000..cb67b075a Binary files /dev/null and b/public/terrain/19/858515/353814.terrain differ diff --git a/public/terrain/19/858515/353815.terrain b/public/terrain/19/858515/353815.terrain new file mode 100644 index 000000000..584e129ce Binary files /dev/null and b/public/terrain/19/858515/353815.terrain differ diff --git a/public/terrain/19/858515/353816.terrain b/public/terrain/19/858515/353816.terrain new file mode 100644 index 000000000..661e1df5f Binary files /dev/null and b/public/terrain/19/858515/353816.terrain differ diff --git a/public/terrain/19/858515/353817.terrain b/public/terrain/19/858515/353817.terrain new file mode 100644 index 000000000..db10f4691 Binary files /dev/null and b/public/terrain/19/858515/353817.terrain differ diff --git a/public/terrain/19/858515/353818.terrain b/public/terrain/19/858515/353818.terrain new file mode 100644 index 000000000..bb8f586c0 Binary files /dev/null and b/public/terrain/19/858515/353818.terrain differ diff --git a/public/terrain/19/858515/353819.terrain b/public/terrain/19/858515/353819.terrain new file mode 100644 index 000000000..897726598 Binary files /dev/null and b/public/terrain/19/858515/353819.terrain differ diff --git a/public/terrain/19/858515/353820.terrain b/public/terrain/19/858515/353820.terrain new file mode 100644 index 000000000..f8d01ed5c Binary files /dev/null and b/public/terrain/19/858515/353820.terrain differ diff --git a/public/terrain/19/858515/353821.terrain b/public/terrain/19/858515/353821.terrain new file mode 100644 index 000000000..0bcadc0bd Binary files /dev/null and b/public/terrain/19/858515/353821.terrain differ diff --git a/public/terrain/19/858515/353822.terrain b/public/terrain/19/858515/353822.terrain new file mode 100644 index 000000000..0f7029533 Binary files /dev/null and b/public/terrain/19/858515/353822.terrain differ diff --git a/public/terrain/19/858515/353823.terrain b/public/terrain/19/858515/353823.terrain new file mode 100644 index 000000000..954de6859 Binary files /dev/null and b/public/terrain/19/858515/353823.terrain differ diff --git a/public/terrain/19/858515/353824.terrain b/public/terrain/19/858515/353824.terrain new file mode 100644 index 000000000..b3007cc1a Binary files /dev/null and b/public/terrain/19/858515/353824.terrain differ diff --git a/public/terrain/19/858515/353825.terrain b/public/terrain/19/858515/353825.terrain new file mode 100644 index 000000000..eeb982555 Binary files /dev/null and b/public/terrain/19/858515/353825.terrain differ diff --git a/public/terrain/19/858515/353826.terrain b/public/terrain/19/858515/353826.terrain new file mode 100644 index 000000000..ed568466d Binary files /dev/null and b/public/terrain/19/858515/353826.terrain differ diff --git a/public/terrain/19/858515/353827.terrain b/public/terrain/19/858515/353827.terrain new file mode 100644 index 000000000..0a4d123b4 Binary files /dev/null and b/public/terrain/19/858515/353827.terrain differ diff --git a/public/terrain/19/858515/353828.terrain b/public/terrain/19/858515/353828.terrain new file mode 100644 index 000000000..4b4d06403 Binary files /dev/null and b/public/terrain/19/858515/353828.terrain differ diff --git a/public/terrain/19/858515/353829.terrain b/public/terrain/19/858515/353829.terrain new file mode 100644 index 000000000..48d89ec90 Binary files /dev/null and b/public/terrain/19/858515/353829.terrain differ diff --git a/public/terrain/19/858515/353830.terrain b/public/terrain/19/858515/353830.terrain new file mode 100644 index 000000000..966906aee Binary files /dev/null and b/public/terrain/19/858515/353830.terrain differ diff --git a/public/terrain/19/858515/353831.terrain b/public/terrain/19/858515/353831.terrain new file mode 100644 index 000000000..8f15e958e Binary files /dev/null and b/public/terrain/19/858515/353831.terrain differ diff --git a/public/terrain/19/858515/353832.terrain b/public/terrain/19/858515/353832.terrain new file mode 100644 index 000000000..2a85b42fc Binary files /dev/null and b/public/terrain/19/858515/353832.terrain differ diff --git a/public/terrain/19/858515/353833.terrain b/public/terrain/19/858515/353833.terrain new file mode 100644 index 000000000..09a5350dd Binary files /dev/null and b/public/terrain/19/858515/353833.terrain differ diff --git a/public/terrain/19/858515/353834.terrain b/public/terrain/19/858515/353834.terrain new file mode 100644 index 000000000..c1758bbb3 Binary files /dev/null and b/public/terrain/19/858515/353834.terrain differ diff --git a/public/terrain/19/858515/353835.terrain b/public/terrain/19/858515/353835.terrain new file mode 100644 index 000000000..5bba90e11 Binary files /dev/null and b/public/terrain/19/858515/353835.terrain differ diff --git a/public/terrain/19/858515/353836.terrain b/public/terrain/19/858515/353836.terrain new file mode 100644 index 000000000..9336b689c Binary files /dev/null and b/public/terrain/19/858515/353836.terrain differ diff --git a/public/terrain/19/858515/353837.terrain b/public/terrain/19/858515/353837.terrain new file mode 100644 index 000000000..02cfc48da Binary files /dev/null and b/public/terrain/19/858515/353837.terrain differ diff --git a/public/terrain/19/858515/353838.terrain b/public/terrain/19/858515/353838.terrain new file mode 100644 index 000000000..1064c94b5 Binary files /dev/null and b/public/terrain/19/858515/353838.terrain differ diff --git a/public/terrain/19/858515/353839.terrain b/public/terrain/19/858515/353839.terrain new file mode 100644 index 000000000..e227ffeb0 Binary files /dev/null and b/public/terrain/19/858515/353839.terrain differ diff --git a/public/terrain/19/858515/353840.terrain b/public/terrain/19/858515/353840.terrain new file mode 100644 index 000000000..ce59f33c5 Binary files /dev/null and b/public/terrain/19/858515/353840.terrain differ diff --git a/public/terrain/19/858515/353841.terrain b/public/terrain/19/858515/353841.terrain new file mode 100644 index 000000000..31cb38301 Binary files /dev/null and b/public/terrain/19/858515/353841.terrain differ diff --git a/public/terrain/19/858515/353842.terrain b/public/terrain/19/858515/353842.terrain new file mode 100644 index 000000000..0c8d4922c Binary files /dev/null and b/public/terrain/19/858515/353842.terrain differ diff --git a/public/terrain/19/858515/353843.terrain b/public/terrain/19/858515/353843.terrain new file mode 100644 index 000000000..f86c15425 Binary files /dev/null and b/public/terrain/19/858515/353843.terrain differ diff --git a/public/terrain/19/858515/353844.terrain b/public/terrain/19/858515/353844.terrain new file mode 100644 index 000000000..7b8afd274 Binary files /dev/null and b/public/terrain/19/858515/353844.terrain differ diff --git a/public/terrain/19/858515/353845.terrain b/public/terrain/19/858515/353845.terrain new file mode 100644 index 000000000..f562a32c0 Binary files /dev/null and b/public/terrain/19/858515/353845.terrain differ diff --git a/public/terrain/19/858515/353846.terrain b/public/terrain/19/858515/353846.terrain new file mode 100644 index 000000000..601e3ba11 Binary files /dev/null and b/public/terrain/19/858515/353846.terrain differ diff --git a/public/terrain/19/858515/353847.terrain b/public/terrain/19/858515/353847.terrain new file mode 100644 index 000000000..1b55dc2be Binary files /dev/null and b/public/terrain/19/858515/353847.terrain differ diff --git a/public/terrain/19/858515/353848.terrain b/public/terrain/19/858515/353848.terrain new file mode 100644 index 000000000..aa9e23873 Binary files /dev/null and b/public/terrain/19/858515/353848.terrain differ diff --git a/public/terrain/19/858515/353849.terrain b/public/terrain/19/858515/353849.terrain new file mode 100644 index 000000000..be16dcb87 Binary files /dev/null and b/public/terrain/19/858515/353849.terrain differ diff --git a/public/terrain/19/858515/353850.terrain b/public/terrain/19/858515/353850.terrain new file mode 100644 index 000000000..f174c53f0 Binary files /dev/null and b/public/terrain/19/858515/353850.terrain differ diff --git a/public/terrain/19/858515/353851.terrain b/public/terrain/19/858515/353851.terrain new file mode 100644 index 000000000..0e88ff96b Binary files /dev/null and b/public/terrain/19/858515/353851.terrain differ diff --git a/public/terrain/19/858515/353852.terrain b/public/terrain/19/858515/353852.terrain new file mode 100644 index 000000000..7af16f121 Binary files /dev/null and b/public/terrain/19/858515/353852.terrain differ diff --git a/public/terrain/19/858515/353853.terrain b/public/terrain/19/858515/353853.terrain new file mode 100644 index 000000000..e3eb9bffd Binary files /dev/null and b/public/terrain/19/858515/353853.terrain differ diff --git a/public/terrain/19/858515/353854.terrain b/public/terrain/19/858515/353854.terrain new file mode 100644 index 000000000..fd3d75def Binary files /dev/null and b/public/terrain/19/858515/353854.terrain differ diff --git a/public/terrain/19/858515/353855.terrain b/public/terrain/19/858515/353855.terrain new file mode 100644 index 000000000..cb58026c1 Binary files /dev/null and b/public/terrain/19/858515/353855.terrain differ diff --git a/public/terrain/19/858515/353856.terrain b/public/terrain/19/858515/353856.terrain new file mode 100644 index 000000000..87d562395 Binary files /dev/null and b/public/terrain/19/858515/353856.terrain differ diff --git a/public/terrain/19/858515/353857.terrain b/public/terrain/19/858515/353857.terrain new file mode 100644 index 000000000..dd83fc11d Binary files /dev/null and b/public/terrain/19/858515/353857.terrain differ diff --git a/public/terrain/19/858515/353858.terrain b/public/terrain/19/858515/353858.terrain new file mode 100644 index 000000000..4c05c6894 Binary files /dev/null and b/public/terrain/19/858515/353858.terrain differ diff --git a/public/terrain/19/858515/353859.terrain b/public/terrain/19/858515/353859.terrain new file mode 100644 index 000000000..e6b99a0e6 Binary files /dev/null and b/public/terrain/19/858515/353859.terrain differ diff --git a/public/terrain/19/858515/353860.terrain b/public/terrain/19/858515/353860.terrain new file mode 100644 index 000000000..c8d0897bf Binary files /dev/null and b/public/terrain/19/858515/353860.terrain differ diff --git a/public/terrain/19/858515/353861.terrain b/public/terrain/19/858515/353861.terrain new file mode 100644 index 000000000..bf4fdfbde Binary files /dev/null and b/public/terrain/19/858515/353861.terrain differ diff --git a/public/terrain/19/858515/353862.terrain b/public/terrain/19/858515/353862.terrain new file mode 100644 index 000000000..0fc8a8b7a Binary files /dev/null and b/public/terrain/19/858515/353862.terrain differ diff --git a/public/terrain/19/858515/353863.terrain b/public/terrain/19/858515/353863.terrain new file mode 100644 index 000000000..71d3a279f Binary files /dev/null and b/public/terrain/19/858515/353863.terrain differ diff --git a/public/terrain/19/858515/353864.terrain b/public/terrain/19/858515/353864.terrain new file mode 100644 index 000000000..f00836e63 Binary files /dev/null and b/public/terrain/19/858515/353864.terrain differ diff --git a/public/terrain/19/858515/353865.terrain b/public/terrain/19/858515/353865.terrain new file mode 100644 index 000000000..2382feede Binary files /dev/null and b/public/terrain/19/858515/353865.terrain differ diff --git a/public/terrain/19/858515/353866.terrain b/public/terrain/19/858515/353866.terrain new file mode 100644 index 000000000..f1af74911 Binary files /dev/null and b/public/terrain/19/858515/353866.terrain differ diff --git a/public/terrain/19/858515/353867.terrain b/public/terrain/19/858515/353867.terrain new file mode 100644 index 000000000..ff270ea3e Binary files /dev/null and b/public/terrain/19/858515/353867.terrain differ diff --git a/public/terrain/19/858515/353868.terrain b/public/terrain/19/858515/353868.terrain new file mode 100644 index 000000000..2d4ee53b0 Binary files /dev/null and b/public/terrain/19/858515/353868.terrain differ diff --git a/public/terrain/19/858515/353869.terrain b/public/terrain/19/858515/353869.terrain new file mode 100644 index 000000000..fef05f300 Binary files /dev/null and b/public/terrain/19/858515/353869.terrain differ diff --git a/public/terrain/19/858515/353870.terrain b/public/terrain/19/858515/353870.terrain new file mode 100644 index 000000000..d6583bd1e Binary files /dev/null and b/public/terrain/19/858515/353870.terrain differ diff --git a/public/terrain/19/858515/353871.terrain b/public/terrain/19/858515/353871.terrain new file mode 100644 index 000000000..2d5177f6b Binary files /dev/null and b/public/terrain/19/858515/353871.terrain differ diff --git a/public/terrain/19/858515/353872.terrain b/public/terrain/19/858515/353872.terrain new file mode 100644 index 000000000..25469f7e1 Binary files /dev/null and b/public/terrain/19/858515/353872.terrain differ diff --git a/public/terrain/19/858515/353873.terrain b/public/terrain/19/858515/353873.terrain new file mode 100644 index 000000000..6002a5870 Binary files /dev/null and b/public/terrain/19/858515/353873.terrain differ diff --git a/public/terrain/19/858515/353874.terrain b/public/terrain/19/858515/353874.terrain new file mode 100644 index 000000000..55fea8c5a Binary files /dev/null and b/public/terrain/19/858515/353874.terrain differ diff --git a/public/terrain/19/858515/353875.terrain b/public/terrain/19/858515/353875.terrain new file mode 100644 index 000000000..491968af6 Binary files /dev/null and b/public/terrain/19/858515/353875.terrain differ diff --git a/public/terrain/19/858515/353876.terrain b/public/terrain/19/858515/353876.terrain new file mode 100644 index 000000000..a8e50ed07 Binary files /dev/null and b/public/terrain/19/858515/353876.terrain differ diff --git a/public/terrain/19/858515/353877.terrain b/public/terrain/19/858515/353877.terrain new file mode 100644 index 000000000..30ec4e1b8 Binary files /dev/null and b/public/terrain/19/858515/353877.terrain differ diff --git a/public/terrain/19/858515/353878.terrain b/public/terrain/19/858515/353878.terrain new file mode 100644 index 000000000..ecbd2a634 Binary files /dev/null and b/public/terrain/19/858515/353878.terrain differ diff --git a/public/terrain/19/858515/353879.terrain b/public/terrain/19/858515/353879.terrain new file mode 100644 index 000000000..b4efb1673 Binary files /dev/null and b/public/terrain/19/858515/353879.terrain differ diff --git a/public/terrain/19/858515/353880.terrain b/public/terrain/19/858515/353880.terrain new file mode 100644 index 000000000..ca3b62f8d Binary files /dev/null and b/public/terrain/19/858515/353880.terrain differ diff --git a/public/terrain/19/858515/353881.terrain b/public/terrain/19/858515/353881.terrain new file mode 100644 index 000000000..8e7f47074 Binary files /dev/null and b/public/terrain/19/858515/353881.terrain differ diff --git a/public/terrain/19/858515/353882.terrain b/public/terrain/19/858515/353882.terrain new file mode 100644 index 000000000..9be35fd39 Binary files /dev/null and b/public/terrain/19/858515/353882.terrain differ diff --git a/public/terrain/19/858515/353883.terrain b/public/terrain/19/858515/353883.terrain new file mode 100644 index 000000000..736a6a2fe Binary files /dev/null and b/public/terrain/19/858515/353883.terrain differ diff --git a/public/terrain/19/858515/353884.terrain b/public/terrain/19/858515/353884.terrain new file mode 100644 index 000000000..671858687 Binary files /dev/null and b/public/terrain/19/858515/353884.terrain differ diff --git a/public/terrain/19/858515/353885.terrain b/public/terrain/19/858515/353885.terrain new file mode 100644 index 000000000..a92bb8a7c Binary files /dev/null and b/public/terrain/19/858515/353885.terrain differ diff --git a/public/terrain/19/858515/353886.terrain b/public/terrain/19/858515/353886.terrain new file mode 100644 index 000000000..89b715f20 Binary files /dev/null and b/public/terrain/19/858515/353886.terrain differ diff --git a/public/terrain/19/858515/353887.terrain b/public/terrain/19/858515/353887.terrain new file mode 100644 index 000000000..4dbf25bb3 Binary files /dev/null and b/public/terrain/19/858515/353887.terrain differ diff --git a/public/terrain/19/858515/353888.terrain b/public/terrain/19/858515/353888.terrain new file mode 100644 index 000000000..1766876da Binary files /dev/null and b/public/terrain/19/858515/353888.terrain differ diff --git a/public/terrain/19/858515/353889.terrain b/public/terrain/19/858515/353889.terrain new file mode 100644 index 000000000..77e195c3b Binary files /dev/null and b/public/terrain/19/858515/353889.terrain differ diff --git a/public/terrain/19/858515/353890.terrain b/public/terrain/19/858515/353890.terrain new file mode 100644 index 000000000..585d306d8 Binary files /dev/null and b/public/terrain/19/858515/353890.terrain differ diff --git a/public/terrain/19/858515/353891.terrain b/public/terrain/19/858515/353891.terrain new file mode 100644 index 000000000..bfb2d35a8 Binary files /dev/null and b/public/terrain/19/858515/353891.terrain differ diff --git a/public/terrain/19/858515/353892.terrain b/public/terrain/19/858515/353892.terrain new file mode 100644 index 000000000..920c15d1f Binary files /dev/null and b/public/terrain/19/858515/353892.terrain differ diff --git a/public/terrain/19/858515/353893.terrain b/public/terrain/19/858515/353893.terrain new file mode 100644 index 000000000..3116a9ba6 Binary files /dev/null and b/public/terrain/19/858515/353893.terrain differ diff --git a/public/terrain/19/858515/353894.terrain b/public/terrain/19/858515/353894.terrain new file mode 100644 index 000000000..2ea8bf04e Binary files /dev/null and b/public/terrain/19/858515/353894.terrain differ diff --git a/public/terrain/19/858515/353895.terrain b/public/terrain/19/858515/353895.terrain new file mode 100644 index 000000000..e8e55cfe4 Binary files /dev/null and b/public/terrain/19/858515/353895.terrain differ diff --git a/public/terrain/19/858515/353896.terrain b/public/terrain/19/858515/353896.terrain new file mode 100644 index 000000000..7f574f827 Binary files /dev/null and b/public/terrain/19/858515/353896.terrain differ diff --git a/public/terrain/19/858515/353897.terrain b/public/terrain/19/858515/353897.terrain new file mode 100644 index 000000000..06a220a28 Binary files /dev/null and b/public/terrain/19/858515/353897.terrain differ diff --git a/public/terrain/19/858515/353898.terrain b/public/terrain/19/858515/353898.terrain new file mode 100644 index 000000000..1425c643c Binary files /dev/null and b/public/terrain/19/858515/353898.terrain differ diff --git a/public/terrain/19/858515/353899.terrain b/public/terrain/19/858515/353899.terrain new file mode 100644 index 000000000..8e6faba51 Binary files /dev/null and b/public/terrain/19/858515/353899.terrain differ diff --git a/public/terrain/19/858515/353900.terrain b/public/terrain/19/858515/353900.terrain new file mode 100644 index 000000000..dd47494d4 Binary files /dev/null and b/public/terrain/19/858515/353900.terrain differ diff --git a/public/terrain/19/858515/353901.terrain b/public/terrain/19/858515/353901.terrain new file mode 100644 index 000000000..974d503b3 Binary files /dev/null and b/public/terrain/19/858515/353901.terrain differ diff --git a/public/terrain/19/858515/353902.terrain b/public/terrain/19/858515/353902.terrain new file mode 100644 index 000000000..33a248600 Binary files /dev/null and b/public/terrain/19/858515/353902.terrain differ diff --git a/public/terrain/19/858515/353903.terrain b/public/terrain/19/858515/353903.terrain new file mode 100644 index 000000000..e060c3408 Binary files /dev/null and b/public/terrain/19/858515/353903.terrain differ diff --git a/public/terrain/19/858515/353904.terrain b/public/terrain/19/858515/353904.terrain new file mode 100644 index 000000000..e0a23bc90 Binary files /dev/null and b/public/terrain/19/858515/353904.terrain differ diff --git a/public/terrain/19/858515/353905.terrain b/public/terrain/19/858515/353905.terrain new file mode 100644 index 000000000..cdb046d43 Binary files /dev/null and b/public/terrain/19/858515/353905.terrain differ diff --git a/public/terrain/19/858515/353906.terrain b/public/terrain/19/858515/353906.terrain new file mode 100644 index 000000000..e6b837a86 Binary files /dev/null and b/public/terrain/19/858515/353906.terrain differ diff --git a/public/terrain/19/858515/353907.terrain b/public/terrain/19/858515/353907.terrain new file mode 100644 index 000000000..0833ec562 Binary files /dev/null and b/public/terrain/19/858515/353907.terrain differ diff --git a/public/terrain/19/858515/353908.terrain b/public/terrain/19/858515/353908.terrain new file mode 100644 index 000000000..4995c060e Binary files /dev/null and b/public/terrain/19/858515/353908.terrain differ diff --git a/public/terrain/19/858515/353909.terrain b/public/terrain/19/858515/353909.terrain new file mode 100644 index 000000000..791a2d890 Binary files /dev/null and b/public/terrain/19/858515/353909.terrain differ diff --git a/public/terrain/19/858515/353910.terrain b/public/terrain/19/858515/353910.terrain new file mode 100644 index 000000000..0d4cf6be3 Binary files /dev/null and b/public/terrain/19/858515/353910.terrain differ diff --git a/public/terrain/19/858515/353911.terrain b/public/terrain/19/858515/353911.terrain new file mode 100644 index 000000000..cd2cbc482 Binary files /dev/null and b/public/terrain/19/858515/353911.terrain differ diff --git a/public/terrain/19/858515/353912.terrain b/public/terrain/19/858515/353912.terrain new file mode 100644 index 000000000..929145692 Binary files /dev/null and b/public/terrain/19/858515/353912.terrain differ diff --git a/public/terrain/19/858515/353913.terrain b/public/terrain/19/858515/353913.terrain new file mode 100644 index 000000000..d33d78f3e Binary files /dev/null and b/public/terrain/19/858515/353913.terrain differ diff --git a/public/terrain/19/858515/353914.terrain b/public/terrain/19/858515/353914.terrain new file mode 100644 index 000000000..2ac716720 Binary files /dev/null and b/public/terrain/19/858515/353914.terrain differ diff --git a/public/terrain/19/858515/353915.terrain b/public/terrain/19/858515/353915.terrain new file mode 100644 index 000000000..f7fc64149 Binary files /dev/null and b/public/terrain/19/858515/353915.terrain differ diff --git a/public/terrain/19/858515/353916.terrain b/public/terrain/19/858515/353916.terrain new file mode 100644 index 000000000..565d912c1 Binary files /dev/null and b/public/terrain/19/858515/353916.terrain differ diff --git a/public/terrain/19/858515/353917.terrain b/public/terrain/19/858515/353917.terrain new file mode 100644 index 000000000..ea74b4d55 Binary files /dev/null and b/public/terrain/19/858515/353917.terrain differ diff --git a/public/terrain/19/858515/353918.terrain b/public/terrain/19/858515/353918.terrain new file mode 100644 index 000000000..3f3f46dfe Binary files /dev/null and b/public/terrain/19/858515/353918.terrain differ diff --git a/public/terrain/19/858515/353919.terrain b/public/terrain/19/858515/353919.terrain new file mode 100644 index 000000000..5868e2c4c Binary files /dev/null and b/public/terrain/19/858515/353919.terrain differ diff --git a/public/terrain/19/858515/353920.terrain b/public/terrain/19/858515/353920.terrain new file mode 100644 index 000000000..c1a6d1e24 Binary files /dev/null and b/public/terrain/19/858515/353920.terrain differ diff --git a/public/terrain/19/858515/353921.terrain b/public/terrain/19/858515/353921.terrain new file mode 100644 index 000000000..83a140d11 Binary files /dev/null and b/public/terrain/19/858515/353921.terrain differ diff --git a/public/terrain/19/858515/353922.terrain b/public/terrain/19/858515/353922.terrain new file mode 100644 index 000000000..2ef033154 Binary files /dev/null and b/public/terrain/19/858515/353922.terrain differ diff --git a/public/terrain/19/858515/353923.terrain b/public/terrain/19/858515/353923.terrain new file mode 100644 index 000000000..197288634 Binary files /dev/null and b/public/terrain/19/858515/353923.terrain differ diff --git a/public/terrain/19/858515/353924.terrain b/public/terrain/19/858515/353924.terrain new file mode 100644 index 000000000..7552905a7 Binary files /dev/null and b/public/terrain/19/858515/353924.terrain differ diff --git a/public/terrain/19/858515/353925.terrain b/public/terrain/19/858515/353925.terrain new file mode 100644 index 000000000..ecfcddf0c Binary files /dev/null and b/public/terrain/19/858515/353925.terrain differ diff --git a/public/terrain/19/858515/353926.terrain b/public/terrain/19/858515/353926.terrain new file mode 100644 index 000000000..7ddd467e0 Binary files /dev/null and b/public/terrain/19/858515/353926.terrain differ diff --git a/public/terrain/19/858515/353927.terrain b/public/terrain/19/858515/353927.terrain new file mode 100644 index 000000000..ad547b5f1 Binary files /dev/null and b/public/terrain/19/858515/353927.terrain differ diff --git a/public/terrain/19/858515/353928.terrain b/public/terrain/19/858515/353928.terrain new file mode 100644 index 000000000..9e1ed183f Binary files /dev/null and b/public/terrain/19/858515/353928.terrain differ diff --git a/public/terrain/19/858515/353929.terrain b/public/terrain/19/858515/353929.terrain new file mode 100644 index 000000000..4336a016a Binary files /dev/null and b/public/terrain/19/858515/353929.terrain differ diff --git a/public/terrain/19/858515/353930.terrain b/public/terrain/19/858515/353930.terrain new file mode 100644 index 000000000..b75e8a05a Binary files /dev/null and b/public/terrain/19/858515/353930.terrain differ diff --git a/public/terrain/19/858515/353931.terrain b/public/terrain/19/858515/353931.terrain new file mode 100644 index 000000000..9f8b403c0 Binary files /dev/null and b/public/terrain/19/858515/353931.terrain differ diff --git a/public/terrain/19/858515/353932.terrain b/public/terrain/19/858515/353932.terrain new file mode 100644 index 000000000..45847d97d Binary files /dev/null and b/public/terrain/19/858515/353932.terrain differ diff --git a/public/terrain/19/858515/353933.terrain b/public/terrain/19/858515/353933.terrain new file mode 100644 index 000000000..cadfabebd Binary files /dev/null and b/public/terrain/19/858515/353933.terrain differ diff --git a/public/terrain/19/858515/353934.terrain b/public/terrain/19/858515/353934.terrain new file mode 100644 index 000000000..07e6c2d64 Binary files /dev/null and b/public/terrain/19/858515/353934.terrain differ diff --git a/public/terrain/19/858515/353935.terrain b/public/terrain/19/858515/353935.terrain new file mode 100644 index 000000000..5988f2014 Binary files /dev/null and b/public/terrain/19/858515/353935.terrain differ diff --git a/public/terrain/19/858515/353936.terrain b/public/terrain/19/858515/353936.terrain new file mode 100644 index 000000000..683e42aa9 Binary files /dev/null and b/public/terrain/19/858515/353936.terrain differ diff --git a/public/terrain/19/858515/353937.terrain b/public/terrain/19/858515/353937.terrain new file mode 100644 index 000000000..9c3509814 Binary files /dev/null and b/public/terrain/19/858515/353937.terrain differ diff --git a/public/terrain/19/858515/353938.terrain b/public/terrain/19/858515/353938.terrain new file mode 100644 index 000000000..6fe109f64 Binary files /dev/null and b/public/terrain/19/858515/353938.terrain differ diff --git a/public/terrain/19/858515/353939.terrain b/public/terrain/19/858515/353939.terrain new file mode 100644 index 000000000..e8c9b84aa Binary files /dev/null and b/public/terrain/19/858515/353939.terrain differ diff --git a/public/terrain/19/858515/353940.terrain b/public/terrain/19/858515/353940.terrain new file mode 100644 index 000000000..af77b8327 Binary files /dev/null and b/public/terrain/19/858515/353940.terrain differ diff --git a/public/terrain/19/858515/353941.terrain b/public/terrain/19/858515/353941.terrain new file mode 100644 index 000000000..f8154de5e Binary files /dev/null and b/public/terrain/19/858515/353941.terrain differ diff --git a/public/terrain/19/858515/353942.terrain b/public/terrain/19/858515/353942.terrain new file mode 100644 index 000000000..8d8cbc531 Binary files /dev/null and b/public/terrain/19/858515/353942.terrain differ diff --git a/public/terrain/19/858515/353943.terrain b/public/terrain/19/858515/353943.terrain new file mode 100644 index 000000000..feb65376c Binary files /dev/null and b/public/terrain/19/858515/353943.terrain differ diff --git a/public/terrain/19/858515/353944.terrain b/public/terrain/19/858515/353944.terrain new file mode 100644 index 000000000..2f7f82766 Binary files /dev/null and b/public/terrain/19/858515/353944.terrain differ diff --git a/public/terrain/19/858515/353945.terrain b/public/terrain/19/858515/353945.terrain new file mode 100644 index 000000000..66a061223 Binary files /dev/null and b/public/terrain/19/858515/353945.terrain differ diff --git a/public/terrain/19/858515/353946.terrain b/public/terrain/19/858515/353946.terrain new file mode 100644 index 000000000..4b7c14c83 Binary files /dev/null and b/public/terrain/19/858515/353946.terrain differ diff --git a/public/terrain/19/858515/353947.terrain b/public/terrain/19/858515/353947.terrain new file mode 100644 index 000000000..0d48f45d2 Binary files /dev/null and b/public/terrain/19/858515/353947.terrain differ diff --git a/public/terrain/19/858515/353948.terrain b/public/terrain/19/858515/353948.terrain new file mode 100644 index 000000000..83747c1a1 Binary files /dev/null and b/public/terrain/19/858515/353948.terrain differ diff --git a/public/terrain/19/858515/353949.terrain b/public/terrain/19/858515/353949.terrain new file mode 100644 index 000000000..cb4d3e9da Binary files /dev/null and b/public/terrain/19/858515/353949.terrain differ diff --git a/public/terrain/19/858515/353950.terrain b/public/terrain/19/858515/353950.terrain new file mode 100644 index 000000000..466b2c30f Binary files /dev/null and b/public/terrain/19/858515/353950.terrain differ diff --git a/public/terrain/19/858515/353951.terrain b/public/terrain/19/858515/353951.terrain new file mode 100644 index 000000000..a7044c664 Binary files /dev/null and b/public/terrain/19/858515/353951.terrain differ diff --git a/public/terrain/19/858515/353952.terrain b/public/terrain/19/858515/353952.terrain new file mode 100644 index 000000000..ec9e8cc10 Binary files /dev/null and b/public/terrain/19/858515/353952.terrain differ diff --git a/public/terrain/19/858515/353953.terrain b/public/terrain/19/858515/353953.terrain new file mode 100644 index 000000000..f2fed70c4 Binary files /dev/null and b/public/terrain/19/858515/353953.terrain differ diff --git a/public/terrain/19/858515/353954.terrain b/public/terrain/19/858515/353954.terrain new file mode 100644 index 000000000..f49ad94e3 Binary files /dev/null and b/public/terrain/19/858515/353954.terrain differ diff --git a/public/terrain/19/858515/353955.terrain b/public/terrain/19/858515/353955.terrain new file mode 100644 index 000000000..548d1282b Binary files /dev/null and b/public/terrain/19/858515/353955.terrain differ diff --git a/public/terrain/19/858515/353956.terrain b/public/terrain/19/858515/353956.terrain new file mode 100644 index 000000000..7ecbca842 Binary files /dev/null and b/public/terrain/19/858515/353956.terrain differ diff --git a/public/terrain/19/858515/353957.terrain b/public/terrain/19/858515/353957.terrain new file mode 100644 index 000000000..371cb8d16 Binary files /dev/null and b/public/terrain/19/858515/353957.terrain differ diff --git a/public/terrain/19/858515/353958.terrain b/public/terrain/19/858515/353958.terrain new file mode 100644 index 000000000..e000ba8d8 Binary files /dev/null and b/public/terrain/19/858515/353958.terrain differ diff --git a/public/terrain/19/858515/353959.terrain b/public/terrain/19/858515/353959.terrain new file mode 100644 index 000000000..dac50e4cf Binary files /dev/null and b/public/terrain/19/858515/353959.terrain differ diff --git a/public/terrain/19/858515/353960.terrain b/public/terrain/19/858515/353960.terrain new file mode 100644 index 000000000..87de50da9 Binary files /dev/null and b/public/terrain/19/858515/353960.terrain differ diff --git a/public/terrain/19/858515/353961.terrain b/public/terrain/19/858515/353961.terrain new file mode 100644 index 000000000..56c547614 Binary files /dev/null and b/public/terrain/19/858515/353961.terrain differ diff --git a/public/terrain/19/858515/353962.terrain b/public/terrain/19/858515/353962.terrain new file mode 100644 index 000000000..e2ce93ca2 Binary files /dev/null and b/public/terrain/19/858515/353962.terrain differ diff --git a/public/terrain/19/858515/353963.terrain b/public/terrain/19/858515/353963.terrain new file mode 100644 index 000000000..b6793e86c Binary files /dev/null and b/public/terrain/19/858515/353963.terrain differ diff --git a/public/terrain/19/858515/353964.terrain b/public/terrain/19/858515/353964.terrain new file mode 100644 index 000000000..d6408fad6 Binary files /dev/null and b/public/terrain/19/858515/353964.terrain differ diff --git a/public/terrain/19/858515/353965.terrain b/public/terrain/19/858515/353965.terrain new file mode 100644 index 000000000..f624c9a6f Binary files /dev/null and b/public/terrain/19/858515/353965.terrain differ diff --git a/public/terrain/19/858515/353966.terrain b/public/terrain/19/858515/353966.terrain new file mode 100644 index 000000000..ead6f0f6c Binary files /dev/null and b/public/terrain/19/858515/353966.terrain differ diff --git a/public/terrain/19/858515/353967.terrain b/public/terrain/19/858515/353967.terrain new file mode 100644 index 000000000..0bd08cc5b Binary files /dev/null and b/public/terrain/19/858515/353967.terrain differ diff --git a/public/terrain/19/858515/353968.terrain b/public/terrain/19/858515/353968.terrain new file mode 100644 index 000000000..e84b3950a Binary files /dev/null and b/public/terrain/19/858515/353968.terrain differ diff --git a/public/terrain/19/858515/353969.terrain b/public/terrain/19/858515/353969.terrain new file mode 100644 index 000000000..23813926c Binary files /dev/null and b/public/terrain/19/858515/353969.terrain differ diff --git a/public/terrain/19/858515/353970.terrain b/public/terrain/19/858515/353970.terrain new file mode 100644 index 000000000..348d2764f Binary files /dev/null and b/public/terrain/19/858515/353970.terrain differ diff --git a/public/terrain/19/858515/353971.terrain b/public/terrain/19/858515/353971.terrain new file mode 100644 index 000000000..b9253abe3 Binary files /dev/null and b/public/terrain/19/858515/353971.terrain differ diff --git a/public/terrain/19/858515/353972.terrain b/public/terrain/19/858515/353972.terrain new file mode 100644 index 000000000..550142068 Binary files /dev/null and b/public/terrain/19/858515/353972.terrain differ diff --git a/public/terrain/19/858515/353973.terrain b/public/terrain/19/858515/353973.terrain new file mode 100644 index 000000000..cacb41e04 Binary files /dev/null and b/public/terrain/19/858515/353973.terrain differ diff --git a/public/terrain/19/858515/353974.terrain b/public/terrain/19/858515/353974.terrain new file mode 100644 index 000000000..7107cfb71 Binary files /dev/null and b/public/terrain/19/858515/353974.terrain differ diff --git a/public/terrain/19/858515/353975.terrain b/public/terrain/19/858515/353975.terrain new file mode 100644 index 000000000..2523c1598 Binary files /dev/null and b/public/terrain/19/858515/353975.terrain differ diff --git a/public/terrain/19/858515/353976.terrain b/public/terrain/19/858515/353976.terrain new file mode 100644 index 000000000..9cc0d6004 Binary files /dev/null and b/public/terrain/19/858515/353976.terrain differ diff --git a/public/terrain/19/858515/353977.terrain b/public/terrain/19/858515/353977.terrain new file mode 100644 index 000000000..7ae30c386 Binary files /dev/null and b/public/terrain/19/858515/353977.terrain differ diff --git a/public/terrain/19/858515/353978.terrain b/public/terrain/19/858515/353978.terrain new file mode 100644 index 000000000..b0d5989fb Binary files /dev/null and b/public/terrain/19/858515/353978.terrain differ diff --git a/public/terrain/19/858515/353979.terrain b/public/terrain/19/858515/353979.terrain new file mode 100644 index 000000000..479f86956 Binary files /dev/null and b/public/terrain/19/858515/353979.terrain differ diff --git a/public/terrain/19/858515/353980.terrain b/public/terrain/19/858515/353980.terrain new file mode 100644 index 000000000..37feac177 Binary files /dev/null and b/public/terrain/19/858515/353980.terrain differ diff --git a/public/terrain/19/858515/353981.terrain b/public/terrain/19/858515/353981.terrain new file mode 100644 index 000000000..fa9f6cbfb Binary files /dev/null and b/public/terrain/19/858515/353981.terrain differ diff --git a/public/terrain/19/858515/353982.terrain b/public/terrain/19/858515/353982.terrain new file mode 100644 index 000000000..5cf83518c Binary files /dev/null and b/public/terrain/19/858515/353982.terrain differ diff --git a/public/terrain/19/858515/353983.terrain b/public/terrain/19/858515/353983.terrain new file mode 100644 index 000000000..9d1d0320a Binary files /dev/null and b/public/terrain/19/858515/353983.terrain differ diff --git a/public/terrain/19/858515/353984.terrain b/public/terrain/19/858515/353984.terrain new file mode 100644 index 000000000..7a7124144 Binary files /dev/null and b/public/terrain/19/858515/353984.terrain differ diff --git a/public/terrain/19/858515/353985.terrain b/public/terrain/19/858515/353985.terrain new file mode 100644 index 000000000..f868d8ca7 Binary files /dev/null and b/public/terrain/19/858515/353985.terrain differ diff --git a/public/terrain/19/858515/353986.terrain b/public/terrain/19/858515/353986.terrain new file mode 100644 index 000000000..3456d4c9c Binary files /dev/null and b/public/terrain/19/858515/353986.terrain differ diff --git a/public/terrain/19/858515/353987.terrain b/public/terrain/19/858515/353987.terrain new file mode 100644 index 000000000..7697e7ea3 Binary files /dev/null and b/public/terrain/19/858515/353987.terrain differ diff --git a/public/terrain/19/858515/353988.terrain b/public/terrain/19/858515/353988.terrain new file mode 100644 index 000000000..8a7aae06d Binary files /dev/null and b/public/terrain/19/858515/353988.terrain differ diff --git a/public/terrain/19/858515/353989.terrain b/public/terrain/19/858515/353989.terrain new file mode 100644 index 000000000..680068cd8 Binary files /dev/null and b/public/terrain/19/858515/353989.terrain differ diff --git a/public/terrain/19/858515/353990.terrain b/public/terrain/19/858515/353990.terrain new file mode 100644 index 000000000..fd8463709 Binary files /dev/null and b/public/terrain/19/858515/353990.terrain differ diff --git a/public/terrain/19/858515/353991.terrain b/public/terrain/19/858515/353991.terrain new file mode 100644 index 000000000..c0d6596ef Binary files /dev/null and b/public/terrain/19/858515/353991.terrain differ diff --git a/public/terrain/19/858515/353992.terrain b/public/terrain/19/858515/353992.terrain new file mode 100644 index 000000000..00d1d0e3e Binary files /dev/null and b/public/terrain/19/858515/353992.terrain differ diff --git a/public/terrain/19/858515/353993.terrain b/public/terrain/19/858515/353993.terrain new file mode 100644 index 000000000..5abb0168f Binary files /dev/null and b/public/terrain/19/858515/353993.terrain differ diff --git a/public/terrain/19/858515/353994.terrain b/public/terrain/19/858515/353994.terrain new file mode 100644 index 000000000..4de63a013 Binary files /dev/null and b/public/terrain/19/858515/353994.terrain differ diff --git a/public/terrain/19/858515/353995.terrain b/public/terrain/19/858515/353995.terrain new file mode 100644 index 000000000..1a7dae8bf Binary files /dev/null and b/public/terrain/19/858515/353995.terrain differ diff --git a/public/terrain/19/858515/353996.terrain b/public/terrain/19/858515/353996.terrain new file mode 100644 index 000000000..8950fd3ee Binary files /dev/null and b/public/terrain/19/858515/353996.terrain differ diff --git a/public/terrain/19/858515/353997.terrain b/public/terrain/19/858515/353997.terrain new file mode 100644 index 000000000..e58261df5 Binary files /dev/null and b/public/terrain/19/858515/353997.terrain differ diff --git a/public/terrain/19/858515/353998.terrain b/public/terrain/19/858515/353998.terrain new file mode 100644 index 000000000..aeb22fdba Binary files /dev/null and b/public/terrain/19/858515/353998.terrain differ diff --git a/public/terrain/19/858515/353999.terrain b/public/terrain/19/858515/353999.terrain new file mode 100644 index 000000000..b12c1f8f6 Binary files /dev/null and b/public/terrain/19/858515/353999.terrain differ diff --git a/public/terrain/19/858515/354000.terrain b/public/terrain/19/858515/354000.terrain new file mode 100644 index 000000000..32ee7cd34 Binary files /dev/null and b/public/terrain/19/858515/354000.terrain differ diff --git a/public/terrain/19/858515/354001.terrain b/public/terrain/19/858515/354001.terrain new file mode 100644 index 000000000..677de852c Binary files /dev/null and b/public/terrain/19/858515/354001.terrain differ diff --git a/public/terrain/19/858515/354002.terrain b/public/terrain/19/858515/354002.terrain new file mode 100644 index 000000000..957924543 Binary files /dev/null and b/public/terrain/19/858515/354002.terrain differ diff --git a/public/terrain/19/858515/354003.terrain b/public/terrain/19/858515/354003.terrain new file mode 100644 index 000000000..8b8b8ccd0 Binary files /dev/null and b/public/terrain/19/858515/354003.terrain differ diff --git a/public/terrain/19/858515/354004.terrain b/public/terrain/19/858515/354004.terrain new file mode 100644 index 000000000..bb0b2a577 Binary files /dev/null and b/public/terrain/19/858515/354004.terrain differ diff --git a/public/terrain/19/858515/354005.terrain b/public/terrain/19/858515/354005.terrain new file mode 100644 index 000000000..ebb4d6050 Binary files /dev/null and b/public/terrain/19/858515/354005.terrain differ diff --git a/public/terrain/19/858515/354006.terrain b/public/terrain/19/858515/354006.terrain new file mode 100644 index 000000000..bf3be1048 Binary files /dev/null and b/public/terrain/19/858515/354006.terrain differ diff --git a/public/terrain/19/858515/354007.terrain b/public/terrain/19/858515/354007.terrain new file mode 100644 index 000000000..c65ff8192 Binary files /dev/null and b/public/terrain/19/858515/354007.terrain differ diff --git a/public/terrain/19/858515/354008.terrain b/public/terrain/19/858515/354008.terrain new file mode 100644 index 000000000..8d9c5117c Binary files /dev/null and b/public/terrain/19/858515/354008.terrain differ diff --git a/public/terrain/19/858515/354009.terrain b/public/terrain/19/858515/354009.terrain new file mode 100644 index 000000000..f1f0a618a Binary files /dev/null and b/public/terrain/19/858515/354009.terrain differ diff --git a/public/terrain/19/858515/354010.terrain b/public/terrain/19/858515/354010.terrain new file mode 100644 index 000000000..558922ee9 Binary files /dev/null and b/public/terrain/19/858515/354010.terrain differ diff --git a/public/terrain/19/858515/354011.terrain b/public/terrain/19/858515/354011.terrain new file mode 100644 index 000000000..58447c8ee Binary files /dev/null and b/public/terrain/19/858515/354011.terrain differ diff --git a/public/terrain/19/858515/354012.terrain b/public/terrain/19/858515/354012.terrain new file mode 100644 index 000000000..c345bf49d Binary files /dev/null and b/public/terrain/19/858515/354012.terrain differ diff --git a/public/terrain/19/858515/354013.terrain b/public/terrain/19/858515/354013.terrain new file mode 100644 index 000000000..bf1764694 Binary files /dev/null and b/public/terrain/19/858515/354013.terrain differ diff --git a/public/terrain/19/858515/354014.terrain b/public/terrain/19/858515/354014.terrain new file mode 100644 index 000000000..aeb413d1c Binary files /dev/null and b/public/terrain/19/858515/354014.terrain differ diff --git a/public/terrain/19/858515/354015.terrain b/public/terrain/19/858515/354015.terrain new file mode 100644 index 000000000..5aa5a19b0 Binary files /dev/null and b/public/terrain/19/858515/354015.terrain differ diff --git a/public/terrain/19/858515/354016.terrain b/public/terrain/19/858515/354016.terrain new file mode 100644 index 000000000..0344e821c Binary files /dev/null and b/public/terrain/19/858515/354016.terrain differ diff --git a/public/terrain/19/858515/354017.terrain b/public/terrain/19/858515/354017.terrain new file mode 100644 index 000000000..c6e55e228 Binary files /dev/null and b/public/terrain/19/858515/354017.terrain differ diff --git a/public/terrain/19/858515/354018.terrain b/public/terrain/19/858515/354018.terrain new file mode 100644 index 000000000..35ac80e7b Binary files /dev/null and b/public/terrain/19/858515/354018.terrain differ diff --git a/public/terrain/19/858515/354019.terrain b/public/terrain/19/858515/354019.terrain new file mode 100644 index 000000000..8d83f6e09 Binary files /dev/null and b/public/terrain/19/858515/354019.terrain differ diff --git a/public/terrain/19/858515/354020.terrain b/public/terrain/19/858515/354020.terrain new file mode 100644 index 000000000..407bfba4a Binary files /dev/null and b/public/terrain/19/858515/354020.terrain differ diff --git a/public/terrain/19/858515/354021.terrain b/public/terrain/19/858515/354021.terrain new file mode 100644 index 000000000..46988b467 Binary files /dev/null and b/public/terrain/19/858515/354021.terrain differ diff --git a/public/terrain/19/858515/354022.terrain b/public/terrain/19/858515/354022.terrain new file mode 100644 index 000000000..239d79362 Binary files /dev/null and b/public/terrain/19/858515/354022.terrain differ diff --git a/public/terrain/19/858515/354023.terrain b/public/terrain/19/858515/354023.terrain new file mode 100644 index 000000000..5f40d807d Binary files /dev/null and b/public/terrain/19/858515/354023.terrain differ diff --git a/public/terrain/19/858515/354024.terrain b/public/terrain/19/858515/354024.terrain new file mode 100644 index 000000000..c2b22439c Binary files /dev/null and b/public/terrain/19/858515/354024.terrain differ diff --git a/public/terrain/19/858515/354025.terrain b/public/terrain/19/858515/354025.terrain new file mode 100644 index 000000000..0d42ee648 Binary files /dev/null and b/public/terrain/19/858515/354025.terrain differ diff --git a/public/terrain/19/858515/354026.terrain b/public/terrain/19/858515/354026.terrain new file mode 100644 index 000000000..4cac4624d Binary files /dev/null and b/public/terrain/19/858515/354026.terrain differ diff --git a/public/terrain/19/858515/354027.terrain b/public/terrain/19/858515/354027.terrain new file mode 100644 index 000000000..f8fd8fb38 Binary files /dev/null and b/public/terrain/19/858515/354027.terrain differ diff --git a/public/terrain/19/858515/354028.terrain b/public/terrain/19/858515/354028.terrain new file mode 100644 index 000000000..f55ec8402 Binary files /dev/null and b/public/terrain/19/858515/354028.terrain differ diff --git a/public/terrain/19/858515/354029.terrain b/public/terrain/19/858515/354029.terrain new file mode 100644 index 000000000..a5575dd42 Binary files /dev/null and b/public/terrain/19/858515/354029.terrain differ diff --git a/public/terrain/19/858515/354030.terrain b/public/terrain/19/858515/354030.terrain new file mode 100644 index 000000000..d3c797fdc Binary files /dev/null and b/public/terrain/19/858515/354030.terrain differ diff --git a/public/terrain/19/858515/354031.terrain b/public/terrain/19/858515/354031.terrain new file mode 100644 index 000000000..6d2df1dbf Binary files /dev/null and b/public/terrain/19/858515/354031.terrain differ diff --git a/public/terrain/19/858515/354032.terrain b/public/terrain/19/858515/354032.terrain new file mode 100644 index 000000000..916d73fc5 Binary files /dev/null and b/public/terrain/19/858515/354032.terrain differ diff --git a/public/terrain/19/858515/354033.terrain b/public/terrain/19/858515/354033.terrain new file mode 100644 index 000000000..a8fa66c06 Binary files /dev/null and b/public/terrain/19/858515/354033.terrain differ diff --git a/public/terrain/19/858515/354034.terrain b/public/terrain/19/858515/354034.terrain new file mode 100644 index 000000000..932d397d0 Binary files /dev/null and b/public/terrain/19/858515/354034.terrain differ diff --git a/public/terrain/19/858515/354035.terrain b/public/terrain/19/858515/354035.terrain new file mode 100644 index 000000000..820e29948 Binary files /dev/null and b/public/terrain/19/858515/354035.terrain differ diff --git a/public/terrain/19/858515/354036.terrain b/public/terrain/19/858515/354036.terrain new file mode 100644 index 000000000..e37d959ac Binary files /dev/null and b/public/terrain/19/858515/354036.terrain differ diff --git a/public/terrain/19/858515/354037.terrain b/public/terrain/19/858515/354037.terrain new file mode 100644 index 000000000..0e3fe4085 Binary files /dev/null and b/public/terrain/19/858515/354037.terrain differ diff --git a/public/terrain/19/858515/354038.terrain b/public/terrain/19/858515/354038.terrain new file mode 100644 index 000000000..768e56773 Binary files /dev/null and b/public/terrain/19/858515/354038.terrain differ diff --git a/public/terrain/19/858515/354039.terrain b/public/terrain/19/858515/354039.terrain new file mode 100644 index 000000000..31cba7c3e Binary files /dev/null and b/public/terrain/19/858515/354039.terrain differ diff --git a/public/terrain/19/858515/354040.terrain b/public/terrain/19/858515/354040.terrain new file mode 100644 index 000000000..c5518022d Binary files /dev/null and b/public/terrain/19/858515/354040.terrain differ diff --git a/public/terrain/19/858515/354041.terrain b/public/terrain/19/858515/354041.terrain new file mode 100644 index 000000000..9a8354f07 Binary files /dev/null and b/public/terrain/19/858515/354041.terrain differ diff --git a/public/terrain/19/858515/354042.terrain b/public/terrain/19/858515/354042.terrain new file mode 100644 index 000000000..6c31d4831 Binary files /dev/null and b/public/terrain/19/858515/354042.terrain differ diff --git a/public/terrain/19/858515/354043.terrain b/public/terrain/19/858515/354043.terrain new file mode 100644 index 000000000..8dfaed062 Binary files /dev/null and b/public/terrain/19/858515/354043.terrain differ diff --git a/public/terrain/19/858515/354044.terrain b/public/terrain/19/858515/354044.terrain new file mode 100644 index 000000000..95b152132 Binary files /dev/null and b/public/terrain/19/858515/354044.terrain differ diff --git a/public/terrain/19/858515/354045.terrain b/public/terrain/19/858515/354045.terrain new file mode 100644 index 000000000..d0e3d1150 Binary files /dev/null and b/public/terrain/19/858515/354045.terrain differ diff --git a/public/terrain/19/858515/354046.terrain b/public/terrain/19/858515/354046.terrain new file mode 100644 index 000000000..a4f13acd4 Binary files /dev/null and b/public/terrain/19/858515/354046.terrain differ diff --git a/public/terrain/19/858515/354047.terrain b/public/terrain/19/858515/354047.terrain new file mode 100644 index 000000000..5500a0d41 Binary files /dev/null and b/public/terrain/19/858515/354047.terrain differ diff --git a/public/terrain/19/858515/354048.terrain b/public/terrain/19/858515/354048.terrain new file mode 100644 index 000000000..e64268b65 Binary files /dev/null and b/public/terrain/19/858515/354048.terrain differ diff --git a/public/terrain/19/858515/354049.terrain b/public/terrain/19/858515/354049.terrain new file mode 100644 index 000000000..817668865 Binary files /dev/null and b/public/terrain/19/858515/354049.terrain differ diff --git a/public/terrain/19/858515/354050.terrain b/public/terrain/19/858515/354050.terrain new file mode 100644 index 000000000..33c72e262 Binary files /dev/null and b/public/terrain/19/858515/354050.terrain differ diff --git a/public/terrain/19/858515/354051.terrain b/public/terrain/19/858515/354051.terrain new file mode 100644 index 000000000..bf890644c Binary files /dev/null and b/public/terrain/19/858515/354051.terrain differ diff --git a/public/terrain/19/858515/354052.terrain b/public/terrain/19/858515/354052.terrain new file mode 100644 index 000000000..5027d6337 Binary files /dev/null and b/public/terrain/19/858515/354052.terrain differ diff --git a/public/terrain/19/858515/354053.terrain b/public/terrain/19/858515/354053.terrain new file mode 100644 index 000000000..d063d40f1 Binary files /dev/null and b/public/terrain/19/858515/354053.terrain differ diff --git a/public/terrain/19/858515/354054.terrain b/public/terrain/19/858515/354054.terrain new file mode 100644 index 000000000..841e22511 Binary files /dev/null and b/public/terrain/19/858515/354054.terrain differ diff --git a/public/terrain/19/858515/354055.terrain b/public/terrain/19/858515/354055.terrain new file mode 100644 index 000000000..88474addd Binary files /dev/null and b/public/terrain/19/858515/354055.terrain differ diff --git a/public/terrain/19/858515/354056.terrain b/public/terrain/19/858515/354056.terrain new file mode 100644 index 000000000..3dcf92036 Binary files /dev/null and b/public/terrain/19/858515/354056.terrain differ diff --git a/public/terrain/19/858515/354057.terrain b/public/terrain/19/858515/354057.terrain new file mode 100644 index 000000000..6deaf9813 Binary files /dev/null and b/public/terrain/19/858515/354057.terrain differ diff --git a/public/terrain/19/858515/354058.terrain b/public/terrain/19/858515/354058.terrain new file mode 100644 index 000000000..648801ef5 Binary files /dev/null and b/public/terrain/19/858515/354058.terrain differ diff --git a/public/terrain/19/858515/354059.terrain b/public/terrain/19/858515/354059.terrain new file mode 100644 index 000000000..9bf44c9f2 Binary files /dev/null and b/public/terrain/19/858515/354059.terrain differ diff --git a/public/terrain/19/858516/353743.terrain b/public/terrain/19/858516/353743.terrain new file mode 100644 index 000000000..0fcf8850e Binary files /dev/null and b/public/terrain/19/858516/353743.terrain differ diff --git a/public/terrain/19/858516/353744.terrain b/public/terrain/19/858516/353744.terrain new file mode 100644 index 000000000..2c42c10ef Binary files /dev/null and b/public/terrain/19/858516/353744.terrain differ diff --git a/public/terrain/19/858516/353745.terrain b/public/terrain/19/858516/353745.terrain new file mode 100644 index 000000000..0df78659b Binary files /dev/null and b/public/terrain/19/858516/353745.terrain differ diff --git a/public/terrain/19/858516/353746.terrain b/public/terrain/19/858516/353746.terrain new file mode 100644 index 000000000..9b7657764 Binary files /dev/null and b/public/terrain/19/858516/353746.terrain differ diff --git a/public/terrain/19/858516/353747.terrain b/public/terrain/19/858516/353747.terrain new file mode 100644 index 000000000..05c17f813 Binary files /dev/null and b/public/terrain/19/858516/353747.terrain differ diff --git a/public/terrain/19/858516/353748.terrain b/public/terrain/19/858516/353748.terrain new file mode 100644 index 000000000..858a57c4f Binary files /dev/null and b/public/terrain/19/858516/353748.terrain differ diff --git a/public/terrain/19/858516/353749.terrain b/public/terrain/19/858516/353749.terrain new file mode 100644 index 000000000..67148c9ee Binary files /dev/null and b/public/terrain/19/858516/353749.terrain differ diff --git a/public/terrain/19/858516/353750.terrain b/public/terrain/19/858516/353750.terrain new file mode 100644 index 000000000..125a83ca5 Binary files /dev/null and b/public/terrain/19/858516/353750.terrain differ diff --git a/public/terrain/19/858516/353751.terrain b/public/terrain/19/858516/353751.terrain new file mode 100644 index 000000000..8f8206f2f Binary files /dev/null and b/public/terrain/19/858516/353751.terrain differ diff --git a/public/terrain/19/858516/353752.terrain b/public/terrain/19/858516/353752.terrain new file mode 100644 index 000000000..132d72dd0 Binary files /dev/null and b/public/terrain/19/858516/353752.terrain differ diff --git a/public/terrain/19/858516/353753.terrain b/public/terrain/19/858516/353753.terrain new file mode 100644 index 000000000..9d60bede1 Binary files /dev/null and b/public/terrain/19/858516/353753.terrain differ diff --git a/public/terrain/19/858516/353754.terrain b/public/terrain/19/858516/353754.terrain new file mode 100644 index 000000000..cd9218e26 Binary files /dev/null and b/public/terrain/19/858516/353754.terrain differ diff --git a/public/terrain/19/858516/353755.terrain b/public/terrain/19/858516/353755.terrain new file mode 100644 index 000000000..c159caf7b Binary files /dev/null and b/public/terrain/19/858516/353755.terrain differ diff --git a/public/terrain/19/858516/353756.terrain b/public/terrain/19/858516/353756.terrain new file mode 100644 index 000000000..e23a96d9e Binary files /dev/null and b/public/terrain/19/858516/353756.terrain differ diff --git a/public/terrain/19/858516/353757.terrain b/public/terrain/19/858516/353757.terrain new file mode 100644 index 000000000..4c184a839 Binary files /dev/null and b/public/terrain/19/858516/353757.terrain differ diff --git a/public/terrain/19/858516/353758.terrain b/public/terrain/19/858516/353758.terrain new file mode 100644 index 000000000..c244edbcb Binary files /dev/null and b/public/terrain/19/858516/353758.terrain differ diff --git a/public/terrain/19/858516/353759.terrain b/public/terrain/19/858516/353759.terrain new file mode 100644 index 000000000..66a9af5f2 Binary files /dev/null and b/public/terrain/19/858516/353759.terrain differ diff --git a/public/terrain/19/858516/353760.terrain b/public/terrain/19/858516/353760.terrain new file mode 100644 index 000000000..823c3478a Binary files /dev/null and b/public/terrain/19/858516/353760.terrain differ diff --git a/public/terrain/19/858516/353761.terrain b/public/terrain/19/858516/353761.terrain new file mode 100644 index 000000000..a1f8bba77 Binary files /dev/null and b/public/terrain/19/858516/353761.terrain differ diff --git a/public/terrain/19/858516/353762.terrain b/public/terrain/19/858516/353762.terrain new file mode 100644 index 000000000..714335346 Binary files /dev/null and b/public/terrain/19/858516/353762.terrain differ diff --git a/public/terrain/19/858516/353763.terrain b/public/terrain/19/858516/353763.terrain new file mode 100644 index 000000000..60ed6792a Binary files /dev/null and b/public/terrain/19/858516/353763.terrain differ diff --git a/public/terrain/19/858516/353764.terrain b/public/terrain/19/858516/353764.terrain new file mode 100644 index 000000000..f50f057d0 Binary files /dev/null and b/public/terrain/19/858516/353764.terrain differ diff --git a/public/terrain/19/858516/353765.terrain b/public/terrain/19/858516/353765.terrain new file mode 100644 index 000000000..5710d279d Binary files /dev/null and b/public/terrain/19/858516/353765.terrain differ diff --git a/public/terrain/19/858516/353766.terrain b/public/terrain/19/858516/353766.terrain new file mode 100644 index 000000000..191485147 Binary files /dev/null and b/public/terrain/19/858516/353766.terrain differ diff --git a/public/terrain/19/858516/353767.terrain b/public/terrain/19/858516/353767.terrain new file mode 100644 index 000000000..d615aa2eb Binary files /dev/null and b/public/terrain/19/858516/353767.terrain differ diff --git a/public/terrain/19/858516/353768.terrain b/public/terrain/19/858516/353768.terrain new file mode 100644 index 000000000..fd08aaa37 Binary files /dev/null and b/public/terrain/19/858516/353768.terrain differ diff --git a/public/terrain/19/858516/353769.terrain b/public/terrain/19/858516/353769.terrain new file mode 100644 index 000000000..50e4566c7 Binary files /dev/null and b/public/terrain/19/858516/353769.terrain differ diff --git a/public/terrain/19/858516/353770.terrain b/public/terrain/19/858516/353770.terrain new file mode 100644 index 000000000..0c6e7e7dd Binary files /dev/null and b/public/terrain/19/858516/353770.terrain differ diff --git a/public/terrain/19/858516/353771.terrain b/public/terrain/19/858516/353771.terrain new file mode 100644 index 000000000..26a2564a7 Binary files /dev/null and b/public/terrain/19/858516/353771.terrain differ diff --git a/public/terrain/19/858516/353772.terrain b/public/terrain/19/858516/353772.terrain new file mode 100644 index 000000000..c259499d3 Binary files /dev/null and b/public/terrain/19/858516/353772.terrain differ diff --git a/public/terrain/19/858516/353773.terrain b/public/terrain/19/858516/353773.terrain new file mode 100644 index 000000000..0d4049a77 Binary files /dev/null and b/public/terrain/19/858516/353773.terrain differ diff --git a/public/terrain/19/858516/353774.terrain b/public/terrain/19/858516/353774.terrain new file mode 100644 index 000000000..86487c8de Binary files /dev/null and b/public/terrain/19/858516/353774.terrain differ diff --git a/public/terrain/19/858516/353775.terrain b/public/terrain/19/858516/353775.terrain new file mode 100644 index 000000000..3c7d40d09 Binary files /dev/null and b/public/terrain/19/858516/353775.terrain differ diff --git a/public/terrain/19/858516/353776.terrain b/public/terrain/19/858516/353776.terrain new file mode 100644 index 000000000..257bd1158 Binary files /dev/null and b/public/terrain/19/858516/353776.terrain differ diff --git a/public/terrain/19/858516/353777.terrain b/public/terrain/19/858516/353777.terrain new file mode 100644 index 000000000..dc407d5cc Binary files /dev/null and b/public/terrain/19/858516/353777.terrain differ diff --git a/public/terrain/19/858516/353778.terrain b/public/terrain/19/858516/353778.terrain new file mode 100644 index 000000000..4f97deb25 Binary files /dev/null and b/public/terrain/19/858516/353778.terrain differ diff --git a/public/terrain/19/858516/353779.terrain b/public/terrain/19/858516/353779.terrain new file mode 100644 index 000000000..197a2370b Binary files /dev/null and b/public/terrain/19/858516/353779.terrain differ diff --git a/public/terrain/19/858516/353780.terrain b/public/terrain/19/858516/353780.terrain new file mode 100644 index 000000000..537c764bf Binary files /dev/null and b/public/terrain/19/858516/353780.terrain differ diff --git a/public/terrain/19/858516/353781.terrain b/public/terrain/19/858516/353781.terrain new file mode 100644 index 000000000..864048b59 Binary files /dev/null and b/public/terrain/19/858516/353781.terrain differ diff --git a/public/terrain/19/858516/353782.terrain b/public/terrain/19/858516/353782.terrain new file mode 100644 index 000000000..f340edf7b Binary files /dev/null and b/public/terrain/19/858516/353782.terrain differ diff --git a/public/terrain/19/858516/353783.terrain b/public/terrain/19/858516/353783.terrain new file mode 100644 index 000000000..f6ea51fdb Binary files /dev/null and b/public/terrain/19/858516/353783.terrain differ diff --git a/public/terrain/19/858516/353784.terrain b/public/terrain/19/858516/353784.terrain new file mode 100644 index 000000000..983227417 Binary files /dev/null and b/public/terrain/19/858516/353784.terrain differ diff --git a/public/terrain/19/858516/353785.terrain b/public/terrain/19/858516/353785.terrain new file mode 100644 index 000000000..7585841be Binary files /dev/null and b/public/terrain/19/858516/353785.terrain differ diff --git a/public/terrain/19/858516/353786.terrain b/public/terrain/19/858516/353786.terrain new file mode 100644 index 000000000..53b0599ea Binary files /dev/null and b/public/terrain/19/858516/353786.terrain differ diff --git a/public/terrain/19/858516/353787.terrain b/public/terrain/19/858516/353787.terrain new file mode 100644 index 000000000..5eae8b30a Binary files /dev/null and b/public/terrain/19/858516/353787.terrain differ diff --git a/public/terrain/19/858516/353788.terrain b/public/terrain/19/858516/353788.terrain new file mode 100644 index 000000000..a5807bb47 Binary files /dev/null and b/public/terrain/19/858516/353788.terrain differ diff --git a/public/terrain/19/858516/353789.terrain b/public/terrain/19/858516/353789.terrain new file mode 100644 index 000000000..d966dbd65 Binary files /dev/null and b/public/terrain/19/858516/353789.terrain differ diff --git a/public/terrain/19/858516/353790.terrain b/public/terrain/19/858516/353790.terrain new file mode 100644 index 000000000..55458dc0c Binary files /dev/null and b/public/terrain/19/858516/353790.terrain differ diff --git a/public/terrain/19/858516/353791.terrain b/public/terrain/19/858516/353791.terrain new file mode 100644 index 000000000..7854e3cd7 Binary files /dev/null and b/public/terrain/19/858516/353791.terrain differ diff --git a/public/terrain/19/858516/353792.terrain b/public/terrain/19/858516/353792.terrain new file mode 100644 index 000000000..5004a6626 Binary files /dev/null and b/public/terrain/19/858516/353792.terrain differ diff --git a/public/terrain/19/858516/353793.terrain b/public/terrain/19/858516/353793.terrain new file mode 100644 index 000000000..ed052a0c7 Binary files /dev/null and b/public/terrain/19/858516/353793.terrain differ diff --git a/public/terrain/19/858516/353794.terrain b/public/terrain/19/858516/353794.terrain new file mode 100644 index 000000000..c1babee65 Binary files /dev/null and b/public/terrain/19/858516/353794.terrain differ diff --git a/public/terrain/19/858516/353795.terrain b/public/terrain/19/858516/353795.terrain new file mode 100644 index 000000000..f774f92a1 Binary files /dev/null and b/public/terrain/19/858516/353795.terrain differ diff --git a/public/terrain/19/858516/353796.terrain b/public/terrain/19/858516/353796.terrain new file mode 100644 index 000000000..8655d4601 Binary files /dev/null and b/public/terrain/19/858516/353796.terrain differ diff --git a/public/terrain/19/858516/353797.terrain b/public/terrain/19/858516/353797.terrain new file mode 100644 index 000000000..777be8cb0 Binary files /dev/null and b/public/terrain/19/858516/353797.terrain differ diff --git a/public/terrain/19/858516/353798.terrain b/public/terrain/19/858516/353798.terrain new file mode 100644 index 000000000..8b3869d54 Binary files /dev/null and b/public/terrain/19/858516/353798.terrain differ diff --git a/public/terrain/19/858516/353799.terrain b/public/terrain/19/858516/353799.terrain new file mode 100644 index 000000000..f8517584f Binary files /dev/null and b/public/terrain/19/858516/353799.terrain differ diff --git a/public/terrain/19/858516/353800.terrain b/public/terrain/19/858516/353800.terrain new file mode 100644 index 000000000..cf2ef6207 Binary files /dev/null and b/public/terrain/19/858516/353800.terrain differ diff --git a/public/terrain/19/858516/353801.terrain b/public/terrain/19/858516/353801.terrain new file mode 100644 index 000000000..3ddcede50 Binary files /dev/null and b/public/terrain/19/858516/353801.terrain differ diff --git a/public/terrain/19/858516/353802.terrain b/public/terrain/19/858516/353802.terrain new file mode 100644 index 000000000..0f521fefb Binary files /dev/null and b/public/terrain/19/858516/353802.terrain differ diff --git a/public/terrain/19/858516/353803.terrain b/public/terrain/19/858516/353803.terrain new file mode 100644 index 000000000..ad5032995 Binary files /dev/null and b/public/terrain/19/858516/353803.terrain differ diff --git a/public/terrain/19/858516/353804.terrain b/public/terrain/19/858516/353804.terrain new file mode 100644 index 000000000..4cd3992e5 Binary files /dev/null and b/public/terrain/19/858516/353804.terrain differ diff --git a/public/terrain/19/858516/353805.terrain b/public/terrain/19/858516/353805.terrain new file mode 100644 index 000000000..3bf1398c8 Binary files /dev/null and b/public/terrain/19/858516/353805.terrain differ diff --git a/public/terrain/19/858516/353806.terrain b/public/terrain/19/858516/353806.terrain new file mode 100644 index 000000000..05182ed81 Binary files /dev/null and b/public/terrain/19/858516/353806.terrain differ diff --git a/public/terrain/19/858516/353807.terrain b/public/terrain/19/858516/353807.terrain new file mode 100644 index 000000000..16be86a6c Binary files /dev/null and b/public/terrain/19/858516/353807.terrain differ diff --git a/public/terrain/19/858516/353808.terrain b/public/terrain/19/858516/353808.terrain new file mode 100644 index 000000000..735f6c14f Binary files /dev/null and b/public/terrain/19/858516/353808.terrain differ diff --git a/public/terrain/19/858516/353809.terrain b/public/terrain/19/858516/353809.terrain new file mode 100644 index 000000000..a1ae78688 Binary files /dev/null and b/public/terrain/19/858516/353809.terrain differ diff --git a/public/terrain/19/858516/353810.terrain b/public/terrain/19/858516/353810.terrain new file mode 100644 index 000000000..273faee8e Binary files /dev/null and b/public/terrain/19/858516/353810.terrain differ diff --git a/public/terrain/19/858516/353811.terrain b/public/terrain/19/858516/353811.terrain new file mode 100644 index 000000000..d56e4affa Binary files /dev/null and b/public/terrain/19/858516/353811.terrain differ diff --git a/public/terrain/19/858516/353812.terrain b/public/terrain/19/858516/353812.terrain new file mode 100644 index 000000000..4771db363 Binary files /dev/null and b/public/terrain/19/858516/353812.terrain differ diff --git a/public/terrain/19/858516/353813.terrain b/public/terrain/19/858516/353813.terrain new file mode 100644 index 000000000..94bfa0503 Binary files /dev/null and b/public/terrain/19/858516/353813.terrain differ diff --git a/public/terrain/19/858516/353814.terrain b/public/terrain/19/858516/353814.terrain new file mode 100644 index 000000000..4da14cbf3 Binary files /dev/null and b/public/terrain/19/858516/353814.terrain differ diff --git a/public/terrain/19/858516/353815.terrain b/public/terrain/19/858516/353815.terrain new file mode 100644 index 000000000..b0f55a44a Binary files /dev/null and b/public/terrain/19/858516/353815.terrain differ diff --git a/public/terrain/19/858516/353816.terrain b/public/terrain/19/858516/353816.terrain new file mode 100644 index 000000000..b086f0bcc Binary files /dev/null and b/public/terrain/19/858516/353816.terrain differ diff --git a/public/terrain/19/858516/353817.terrain b/public/terrain/19/858516/353817.terrain new file mode 100644 index 000000000..6f5a3e31e Binary files /dev/null and b/public/terrain/19/858516/353817.terrain differ diff --git a/public/terrain/19/858516/353818.terrain b/public/terrain/19/858516/353818.terrain new file mode 100644 index 000000000..8e1bc3015 Binary files /dev/null and b/public/terrain/19/858516/353818.terrain differ diff --git a/public/terrain/19/858516/353819.terrain b/public/terrain/19/858516/353819.terrain new file mode 100644 index 000000000..4780ac280 Binary files /dev/null and b/public/terrain/19/858516/353819.terrain differ diff --git a/public/terrain/19/858516/353820.terrain b/public/terrain/19/858516/353820.terrain new file mode 100644 index 000000000..b50d931b0 Binary files /dev/null and b/public/terrain/19/858516/353820.terrain differ diff --git a/public/terrain/19/858516/353821.terrain b/public/terrain/19/858516/353821.terrain new file mode 100644 index 000000000..d678e08ed Binary files /dev/null and b/public/terrain/19/858516/353821.terrain differ diff --git a/public/terrain/19/858516/353822.terrain b/public/terrain/19/858516/353822.terrain new file mode 100644 index 000000000..e1d82c470 Binary files /dev/null and b/public/terrain/19/858516/353822.terrain differ diff --git a/public/terrain/19/858516/353823.terrain b/public/terrain/19/858516/353823.terrain new file mode 100644 index 000000000..62d31886a Binary files /dev/null and b/public/terrain/19/858516/353823.terrain differ diff --git a/public/terrain/19/858516/353824.terrain b/public/terrain/19/858516/353824.terrain new file mode 100644 index 000000000..0885c3f71 Binary files /dev/null and b/public/terrain/19/858516/353824.terrain differ diff --git a/public/terrain/19/858516/353825.terrain b/public/terrain/19/858516/353825.terrain new file mode 100644 index 000000000..d73f67dc0 Binary files /dev/null and b/public/terrain/19/858516/353825.terrain differ diff --git a/public/terrain/19/858516/353826.terrain b/public/terrain/19/858516/353826.terrain new file mode 100644 index 000000000..0c36e97aa Binary files /dev/null and b/public/terrain/19/858516/353826.terrain differ diff --git a/public/terrain/19/858516/353827.terrain b/public/terrain/19/858516/353827.terrain new file mode 100644 index 000000000..2c4eb4fda Binary files /dev/null and b/public/terrain/19/858516/353827.terrain differ diff --git a/public/terrain/19/858516/353828.terrain b/public/terrain/19/858516/353828.terrain new file mode 100644 index 000000000..9da248315 Binary files /dev/null and b/public/terrain/19/858516/353828.terrain differ diff --git a/public/terrain/19/858516/353829.terrain b/public/terrain/19/858516/353829.terrain new file mode 100644 index 000000000..d9f7ba966 Binary files /dev/null and b/public/terrain/19/858516/353829.terrain differ diff --git a/public/terrain/19/858516/353830.terrain b/public/terrain/19/858516/353830.terrain new file mode 100644 index 000000000..b980354e0 Binary files /dev/null and b/public/terrain/19/858516/353830.terrain differ diff --git a/public/terrain/19/858516/353831.terrain b/public/terrain/19/858516/353831.terrain new file mode 100644 index 000000000..b9c082fcf Binary files /dev/null and b/public/terrain/19/858516/353831.terrain differ diff --git a/public/terrain/19/858516/353832.terrain b/public/terrain/19/858516/353832.terrain new file mode 100644 index 000000000..9a440cd3d Binary files /dev/null and b/public/terrain/19/858516/353832.terrain differ diff --git a/public/terrain/19/858516/353833.terrain b/public/terrain/19/858516/353833.terrain new file mode 100644 index 000000000..ac9d1dccb Binary files /dev/null and b/public/terrain/19/858516/353833.terrain differ diff --git a/public/terrain/19/858516/353834.terrain b/public/terrain/19/858516/353834.terrain new file mode 100644 index 000000000..92da61901 Binary files /dev/null and b/public/terrain/19/858516/353834.terrain differ diff --git a/public/terrain/19/858516/353835.terrain b/public/terrain/19/858516/353835.terrain new file mode 100644 index 000000000..e0d70ff79 Binary files /dev/null and b/public/terrain/19/858516/353835.terrain differ diff --git a/public/terrain/19/858516/353836.terrain b/public/terrain/19/858516/353836.terrain new file mode 100644 index 000000000..3c0f66d12 Binary files /dev/null and b/public/terrain/19/858516/353836.terrain differ diff --git a/public/terrain/19/858516/353837.terrain b/public/terrain/19/858516/353837.terrain new file mode 100644 index 000000000..c6f015b03 Binary files /dev/null and b/public/terrain/19/858516/353837.terrain differ diff --git a/public/terrain/19/858516/353838.terrain b/public/terrain/19/858516/353838.terrain new file mode 100644 index 000000000..441458847 Binary files /dev/null and b/public/terrain/19/858516/353838.terrain differ diff --git a/public/terrain/19/858516/353839.terrain b/public/terrain/19/858516/353839.terrain new file mode 100644 index 000000000..54bfdebfd Binary files /dev/null and b/public/terrain/19/858516/353839.terrain differ diff --git a/public/terrain/19/858516/353840.terrain b/public/terrain/19/858516/353840.terrain new file mode 100644 index 000000000..f684872bf Binary files /dev/null and b/public/terrain/19/858516/353840.terrain differ diff --git a/public/terrain/19/858516/353841.terrain b/public/terrain/19/858516/353841.terrain new file mode 100644 index 000000000..330f2b409 Binary files /dev/null and b/public/terrain/19/858516/353841.terrain differ diff --git a/public/terrain/19/858516/353842.terrain b/public/terrain/19/858516/353842.terrain new file mode 100644 index 000000000..289fedc35 Binary files /dev/null and b/public/terrain/19/858516/353842.terrain differ diff --git a/public/terrain/19/858516/353843.terrain b/public/terrain/19/858516/353843.terrain new file mode 100644 index 000000000..985907d1c Binary files /dev/null and b/public/terrain/19/858516/353843.terrain differ diff --git a/public/terrain/19/858516/353844.terrain b/public/terrain/19/858516/353844.terrain new file mode 100644 index 000000000..3ae9e3615 Binary files /dev/null and b/public/terrain/19/858516/353844.terrain differ diff --git a/public/terrain/19/858516/353845.terrain b/public/terrain/19/858516/353845.terrain new file mode 100644 index 000000000..d2782deb8 Binary files /dev/null and b/public/terrain/19/858516/353845.terrain differ diff --git a/public/terrain/19/858516/353846.terrain b/public/terrain/19/858516/353846.terrain new file mode 100644 index 000000000..5ac0e14ec Binary files /dev/null and b/public/terrain/19/858516/353846.terrain differ diff --git a/public/terrain/19/858516/353847.terrain b/public/terrain/19/858516/353847.terrain new file mode 100644 index 000000000..d43ef3ea0 Binary files /dev/null and b/public/terrain/19/858516/353847.terrain differ diff --git a/public/terrain/19/858516/353848.terrain b/public/terrain/19/858516/353848.terrain new file mode 100644 index 000000000..8cbe575f7 Binary files /dev/null and b/public/terrain/19/858516/353848.terrain differ diff --git a/public/terrain/19/858516/353849.terrain b/public/terrain/19/858516/353849.terrain new file mode 100644 index 000000000..61243709c Binary files /dev/null and b/public/terrain/19/858516/353849.terrain differ diff --git a/public/terrain/19/858516/353850.terrain b/public/terrain/19/858516/353850.terrain new file mode 100644 index 000000000..062500fa5 Binary files /dev/null and b/public/terrain/19/858516/353850.terrain differ diff --git a/public/terrain/19/858516/353851.terrain b/public/terrain/19/858516/353851.terrain new file mode 100644 index 000000000..0efcd2a69 Binary files /dev/null and b/public/terrain/19/858516/353851.terrain differ diff --git a/public/terrain/19/858516/353852.terrain b/public/terrain/19/858516/353852.terrain new file mode 100644 index 000000000..f29626a01 Binary files /dev/null and b/public/terrain/19/858516/353852.terrain differ diff --git a/public/terrain/19/858516/353853.terrain b/public/terrain/19/858516/353853.terrain new file mode 100644 index 000000000..b2e0622a4 Binary files /dev/null and b/public/terrain/19/858516/353853.terrain differ diff --git a/public/terrain/19/858516/353854.terrain b/public/terrain/19/858516/353854.terrain new file mode 100644 index 000000000..fd1d271cb Binary files /dev/null and b/public/terrain/19/858516/353854.terrain differ diff --git a/public/terrain/19/858516/353855.terrain b/public/terrain/19/858516/353855.terrain new file mode 100644 index 000000000..ddd5b3042 Binary files /dev/null and b/public/terrain/19/858516/353855.terrain differ diff --git a/public/terrain/19/858516/353856.terrain b/public/terrain/19/858516/353856.terrain new file mode 100644 index 000000000..a6b00eaec Binary files /dev/null and b/public/terrain/19/858516/353856.terrain differ diff --git a/public/terrain/19/858516/353857.terrain b/public/terrain/19/858516/353857.terrain new file mode 100644 index 000000000..923fbfb60 Binary files /dev/null and b/public/terrain/19/858516/353857.terrain differ diff --git a/public/terrain/19/858516/353858.terrain b/public/terrain/19/858516/353858.terrain new file mode 100644 index 000000000..f00a0e2b2 Binary files /dev/null and b/public/terrain/19/858516/353858.terrain differ diff --git a/public/terrain/19/858516/353859.terrain b/public/terrain/19/858516/353859.terrain new file mode 100644 index 000000000..3e5fdd5a2 Binary files /dev/null and b/public/terrain/19/858516/353859.terrain differ diff --git a/public/terrain/19/858516/353860.terrain b/public/terrain/19/858516/353860.terrain new file mode 100644 index 000000000..71aeb34b1 Binary files /dev/null and b/public/terrain/19/858516/353860.terrain differ diff --git a/public/terrain/19/858516/353861.terrain b/public/terrain/19/858516/353861.terrain new file mode 100644 index 000000000..02e0e8bcc Binary files /dev/null and b/public/terrain/19/858516/353861.terrain differ diff --git a/public/terrain/19/858516/353862.terrain b/public/terrain/19/858516/353862.terrain new file mode 100644 index 000000000..7194e27bd Binary files /dev/null and b/public/terrain/19/858516/353862.terrain differ diff --git a/public/terrain/19/858516/353863.terrain b/public/terrain/19/858516/353863.terrain new file mode 100644 index 000000000..830e5b9d6 Binary files /dev/null and b/public/terrain/19/858516/353863.terrain differ diff --git a/public/terrain/19/858516/353864.terrain b/public/terrain/19/858516/353864.terrain new file mode 100644 index 000000000..166fc04dc Binary files /dev/null and b/public/terrain/19/858516/353864.terrain differ diff --git a/public/terrain/19/858516/353865.terrain b/public/terrain/19/858516/353865.terrain new file mode 100644 index 000000000..521f5f6b4 Binary files /dev/null and b/public/terrain/19/858516/353865.terrain differ diff --git a/public/terrain/19/858516/353866.terrain b/public/terrain/19/858516/353866.terrain new file mode 100644 index 000000000..586bdb3e9 Binary files /dev/null and b/public/terrain/19/858516/353866.terrain differ diff --git a/public/terrain/19/858516/353867.terrain b/public/terrain/19/858516/353867.terrain new file mode 100644 index 000000000..c24de60de Binary files /dev/null and b/public/terrain/19/858516/353867.terrain differ diff --git a/public/terrain/19/858516/353868.terrain b/public/terrain/19/858516/353868.terrain new file mode 100644 index 000000000..a92cf3645 Binary files /dev/null and b/public/terrain/19/858516/353868.terrain differ diff --git a/public/terrain/19/858516/353869.terrain b/public/terrain/19/858516/353869.terrain new file mode 100644 index 000000000..2f1af570b Binary files /dev/null and b/public/terrain/19/858516/353869.terrain differ diff --git a/public/terrain/19/858516/353870.terrain b/public/terrain/19/858516/353870.terrain new file mode 100644 index 000000000..e3813f0be Binary files /dev/null and b/public/terrain/19/858516/353870.terrain differ diff --git a/public/terrain/19/858516/353871.terrain b/public/terrain/19/858516/353871.terrain new file mode 100644 index 000000000..bb65ef7ec Binary files /dev/null and b/public/terrain/19/858516/353871.terrain differ diff --git a/public/terrain/19/858516/353872.terrain b/public/terrain/19/858516/353872.terrain new file mode 100644 index 000000000..b6b44b772 Binary files /dev/null and b/public/terrain/19/858516/353872.terrain differ diff --git a/public/terrain/19/858516/353873.terrain b/public/terrain/19/858516/353873.terrain new file mode 100644 index 000000000..0fd8013a7 Binary files /dev/null and b/public/terrain/19/858516/353873.terrain differ diff --git a/public/terrain/19/858516/353874.terrain b/public/terrain/19/858516/353874.terrain new file mode 100644 index 000000000..079a01ea4 Binary files /dev/null and b/public/terrain/19/858516/353874.terrain differ diff --git a/public/terrain/19/858516/353875.terrain b/public/terrain/19/858516/353875.terrain new file mode 100644 index 000000000..853900f64 Binary files /dev/null and b/public/terrain/19/858516/353875.terrain differ diff --git a/public/terrain/19/858516/353876.terrain b/public/terrain/19/858516/353876.terrain new file mode 100644 index 000000000..81ab36879 Binary files /dev/null and b/public/terrain/19/858516/353876.terrain differ diff --git a/public/terrain/19/858516/353877.terrain b/public/terrain/19/858516/353877.terrain new file mode 100644 index 000000000..cde98e5cd Binary files /dev/null and b/public/terrain/19/858516/353877.terrain differ diff --git a/public/terrain/19/858516/353878.terrain b/public/terrain/19/858516/353878.terrain new file mode 100644 index 000000000..beece8ca4 Binary files /dev/null and b/public/terrain/19/858516/353878.terrain differ diff --git a/public/terrain/19/858516/353879.terrain b/public/terrain/19/858516/353879.terrain new file mode 100644 index 000000000..9263906e3 Binary files /dev/null and b/public/terrain/19/858516/353879.terrain differ diff --git a/public/terrain/19/858516/353880.terrain b/public/terrain/19/858516/353880.terrain new file mode 100644 index 000000000..7106885b2 Binary files /dev/null and b/public/terrain/19/858516/353880.terrain differ diff --git a/public/terrain/19/858516/353881.terrain b/public/terrain/19/858516/353881.terrain new file mode 100644 index 000000000..582dd91b6 Binary files /dev/null and b/public/terrain/19/858516/353881.terrain differ diff --git a/public/terrain/19/858516/353882.terrain b/public/terrain/19/858516/353882.terrain new file mode 100644 index 000000000..b54f7d917 Binary files /dev/null and b/public/terrain/19/858516/353882.terrain differ diff --git a/public/terrain/19/858516/353883.terrain b/public/terrain/19/858516/353883.terrain new file mode 100644 index 000000000..8d43d4659 Binary files /dev/null and b/public/terrain/19/858516/353883.terrain differ diff --git a/public/terrain/19/858516/353884.terrain b/public/terrain/19/858516/353884.terrain new file mode 100644 index 000000000..a4d34c12f Binary files /dev/null and b/public/terrain/19/858516/353884.terrain differ diff --git a/public/terrain/19/858516/353885.terrain b/public/terrain/19/858516/353885.terrain new file mode 100644 index 000000000..8a56622b2 Binary files /dev/null and b/public/terrain/19/858516/353885.terrain differ diff --git a/public/terrain/19/858516/353886.terrain b/public/terrain/19/858516/353886.terrain new file mode 100644 index 000000000..6b18930c5 Binary files /dev/null and b/public/terrain/19/858516/353886.terrain differ diff --git a/public/terrain/19/858516/353887.terrain b/public/terrain/19/858516/353887.terrain new file mode 100644 index 000000000..f5d9ef4f9 Binary files /dev/null and b/public/terrain/19/858516/353887.terrain differ diff --git a/public/terrain/19/858516/353888.terrain b/public/terrain/19/858516/353888.terrain new file mode 100644 index 000000000..d6b9d05dd Binary files /dev/null and b/public/terrain/19/858516/353888.terrain differ diff --git a/public/terrain/19/858516/353889.terrain b/public/terrain/19/858516/353889.terrain new file mode 100644 index 000000000..04e40d8b2 Binary files /dev/null and b/public/terrain/19/858516/353889.terrain differ diff --git a/public/terrain/19/858516/353890.terrain b/public/terrain/19/858516/353890.terrain new file mode 100644 index 000000000..800354983 Binary files /dev/null and b/public/terrain/19/858516/353890.terrain differ diff --git a/public/terrain/19/858516/353891.terrain b/public/terrain/19/858516/353891.terrain new file mode 100644 index 000000000..bd4a89dfb Binary files /dev/null and b/public/terrain/19/858516/353891.terrain differ diff --git a/public/terrain/19/858516/353892.terrain b/public/terrain/19/858516/353892.terrain new file mode 100644 index 000000000..ec238c5d4 Binary files /dev/null and b/public/terrain/19/858516/353892.terrain differ diff --git a/public/terrain/19/858516/353893.terrain b/public/terrain/19/858516/353893.terrain new file mode 100644 index 000000000..6032ba428 Binary files /dev/null and b/public/terrain/19/858516/353893.terrain differ diff --git a/public/terrain/19/858516/353894.terrain b/public/terrain/19/858516/353894.terrain new file mode 100644 index 000000000..cabac39bb Binary files /dev/null and b/public/terrain/19/858516/353894.terrain differ diff --git a/public/terrain/19/858516/353895.terrain b/public/terrain/19/858516/353895.terrain new file mode 100644 index 000000000..862964ee0 Binary files /dev/null and b/public/terrain/19/858516/353895.terrain differ diff --git a/public/terrain/19/858516/353896.terrain b/public/terrain/19/858516/353896.terrain new file mode 100644 index 000000000..acd3e4c18 Binary files /dev/null and b/public/terrain/19/858516/353896.terrain differ diff --git a/public/terrain/19/858516/353897.terrain b/public/terrain/19/858516/353897.terrain new file mode 100644 index 000000000..8574dd925 Binary files /dev/null and b/public/terrain/19/858516/353897.terrain differ diff --git a/public/terrain/19/858516/353898.terrain b/public/terrain/19/858516/353898.terrain new file mode 100644 index 000000000..230d5b480 Binary files /dev/null and b/public/terrain/19/858516/353898.terrain differ diff --git a/public/terrain/19/858516/353899.terrain b/public/terrain/19/858516/353899.terrain new file mode 100644 index 000000000..305c64aef Binary files /dev/null and b/public/terrain/19/858516/353899.terrain differ diff --git a/public/terrain/19/858516/353900.terrain b/public/terrain/19/858516/353900.terrain new file mode 100644 index 000000000..ff70b9602 Binary files /dev/null and b/public/terrain/19/858516/353900.terrain differ diff --git a/public/terrain/19/858516/353901.terrain b/public/terrain/19/858516/353901.terrain new file mode 100644 index 000000000..4382638bc Binary files /dev/null and b/public/terrain/19/858516/353901.terrain differ diff --git a/public/terrain/19/858516/353902.terrain b/public/terrain/19/858516/353902.terrain new file mode 100644 index 000000000..9191732ad Binary files /dev/null and b/public/terrain/19/858516/353902.terrain differ diff --git a/public/terrain/19/858516/353903.terrain b/public/terrain/19/858516/353903.terrain new file mode 100644 index 000000000..063c4bd31 Binary files /dev/null and b/public/terrain/19/858516/353903.terrain differ diff --git a/public/terrain/19/858516/353904.terrain b/public/terrain/19/858516/353904.terrain new file mode 100644 index 000000000..8ccf0b24c Binary files /dev/null and b/public/terrain/19/858516/353904.terrain differ diff --git a/public/terrain/19/858516/353905.terrain b/public/terrain/19/858516/353905.terrain new file mode 100644 index 000000000..03ce47ce8 Binary files /dev/null and b/public/terrain/19/858516/353905.terrain differ diff --git a/public/terrain/19/858516/353906.terrain b/public/terrain/19/858516/353906.terrain new file mode 100644 index 000000000..f078c77b0 Binary files /dev/null and b/public/terrain/19/858516/353906.terrain differ diff --git a/public/terrain/19/858516/353907.terrain b/public/terrain/19/858516/353907.terrain new file mode 100644 index 000000000..d67d965aa Binary files /dev/null and b/public/terrain/19/858516/353907.terrain differ diff --git a/public/terrain/19/858516/353908.terrain b/public/terrain/19/858516/353908.terrain new file mode 100644 index 000000000..62a73a8d5 Binary files /dev/null and b/public/terrain/19/858516/353908.terrain differ diff --git a/public/terrain/19/858516/353909.terrain b/public/terrain/19/858516/353909.terrain new file mode 100644 index 000000000..af36dd768 Binary files /dev/null and b/public/terrain/19/858516/353909.terrain differ diff --git a/public/terrain/19/858516/353910.terrain b/public/terrain/19/858516/353910.terrain new file mode 100644 index 000000000..bcfac9ffa Binary files /dev/null and b/public/terrain/19/858516/353910.terrain differ diff --git a/public/terrain/19/858516/353911.terrain b/public/terrain/19/858516/353911.terrain new file mode 100644 index 000000000..5508db27a Binary files /dev/null and b/public/terrain/19/858516/353911.terrain differ diff --git a/public/terrain/19/858516/353912.terrain b/public/terrain/19/858516/353912.terrain new file mode 100644 index 000000000..b81f0f51f Binary files /dev/null and b/public/terrain/19/858516/353912.terrain differ diff --git a/public/terrain/19/858516/353913.terrain b/public/terrain/19/858516/353913.terrain new file mode 100644 index 000000000..9d14a3230 Binary files /dev/null and b/public/terrain/19/858516/353913.terrain differ diff --git a/public/terrain/19/858516/353914.terrain b/public/terrain/19/858516/353914.terrain new file mode 100644 index 000000000..d3be4604d Binary files /dev/null and b/public/terrain/19/858516/353914.terrain differ diff --git a/public/terrain/19/858516/353915.terrain b/public/terrain/19/858516/353915.terrain new file mode 100644 index 000000000..1cb6f726f Binary files /dev/null and b/public/terrain/19/858516/353915.terrain differ diff --git a/public/terrain/19/858516/353916.terrain b/public/terrain/19/858516/353916.terrain new file mode 100644 index 000000000..54ff26d2c Binary files /dev/null and b/public/terrain/19/858516/353916.terrain differ diff --git a/public/terrain/19/858516/353917.terrain b/public/terrain/19/858516/353917.terrain new file mode 100644 index 000000000..3ec1baa0f Binary files /dev/null and b/public/terrain/19/858516/353917.terrain differ diff --git a/public/terrain/19/858516/353918.terrain b/public/terrain/19/858516/353918.terrain new file mode 100644 index 000000000..8ebb1d536 Binary files /dev/null and b/public/terrain/19/858516/353918.terrain differ diff --git a/public/terrain/19/858516/353919.terrain b/public/terrain/19/858516/353919.terrain new file mode 100644 index 000000000..5790ff794 Binary files /dev/null and b/public/terrain/19/858516/353919.terrain differ diff --git a/public/terrain/19/858516/353920.terrain b/public/terrain/19/858516/353920.terrain new file mode 100644 index 000000000..b0b81896b Binary files /dev/null and b/public/terrain/19/858516/353920.terrain differ diff --git a/public/terrain/19/858516/353921.terrain b/public/terrain/19/858516/353921.terrain new file mode 100644 index 000000000..52c214a92 Binary files /dev/null and b/public/terrain/19/858516/353921.terrain differ diff --git a/public/terrain/19/858516/353922.terrain b/public/terrain/19/858516/353922.terrain new file mode 100644 index 000000000..2884ae153 Binary files /dev/null and b/public/terrain/19/858516/353922.terrain differ diff --git a/public/terrain/19/858516/353923.terrain b/public/terrain/19/858516/353923.terrain new file mode 100644 index 000000000..8ec1b2776 Binary files /dev/null and b/public/terrain/19/858516/353923.terrain differ diff --git a/public/terrain/19/858516/353924.terrain b/public/terrain/19/858516/353924.terrain new file mode 100644 index 000000000..25e1c7f85 Binary files /dev/null and b/public/terrain/19/858516/353924.terrain differ diff --git a/public/terrain/19/858516/353925.terrain b/public/terrain/19/858516/353925.terrain new file mode 100644 index 000000000..bed9dda90 Binary files /dev/null and b/public/terrain/19/858516/353925.terrain differ diff --git a/public/terrain/19/858516/353926.terrain b/public/terrain/19/858516/353926.terrain new file mode 100644 index 000000000..070696ba0 Binary files /dev/null and b/public/terrain/19/858516/353926.terrain differ diff --git a/public/terrain/19/858516/353927.terrain b/public/terrain/19/858516/353927.terrain new file mode 100644 index 000000000..fb7368b5a Binary files /dev/null and b/public/terrain/19/858516/353927.terrain differ diff --git a/public/terrain/19/858516/353928.terrain b/public/terrain/19/858516/353928.terrain new file mode 100644 index 000000000..f006ea79a Binary files /dev/null and b/public/terrain/19/858516/353928.terrain differ diff --git a/public/terrain/19/858516/353929.terrain b/public/terrain/19/858516/353929.terrain new file mode 100644 index 000000000..8a3bc29fb Binary files /dev/null and b/public/terrain/19/858516/353929.terrain differ diff --git a/public/terrain/19/858516/353930.terrain b/public/terrain/19/858516/353930.terrain new file mode 100644 index 000000000..fb742a9a3 Binary files /dev/null and b/public/terrain/19/858516/353930.terrain differ diff --git a/public/terrain/19/858516/353931.terrain b/public/terrain/19/858516/353931.terrain new file mode 100644 index 000000000..a72fafeb0 Binary files /dev/null and b/public/terrain/19/858516/353931.terrain differ diff --git a/public/terrain/19/858516/353932.terrain b/public/terrain/19/858516/353932.terrain new file mode 100644 index 000000000..7c76a4e71 Binary files /dev/null and b/public/terrain/19/858516/353932.terrain differ diff --git a/public/terrain/19/858516/353933.terrain b/public/terrain/19/858516/353933.terrain new file mode 100644 index 000000000..5adacb401 Binary files /dev/null and b/public/terrain/19/858516/353933.terrain differ diff --git a/public/terrain/19/858516/353934.terrain b/public/terrain/19/858516/353934.terrain new file mode 100644 index 000000000..b11617c9b Binary files /dev/null and b/public/terrain/19/858516/353934.terrain differ diff --git a/public/terrain/19/858516/353935.terrain b/public/terrain/19/858516/353935.terrain new file mode 100644 index 000000000..5790beb69 Binary files /dev/null and b/public/terrain/19/858516/353935.terrain differ diff --git a/public/terrain/19/858516/353936.terrain b/public/terrain/19/858516/353936.terrain new file mode 100644 index 000000000..eccec525f Binary files /dev/null and b/public/terrain/19/858516/353936.terrain differ diff --git a/public/terrain/19/858516/353937.terrain b/public/terrain/19/858516/353937.terrain new file mode 100644 index 000000000..ee029ed86 Binary files /dev/null and b/public/terrain/19/858516/353937.terrain differ diff --git a/public/terrain/19/858516/353938.terrain b/public/terrain/19/858516/353938.terrain new file mode 100644 index 000000000..7d7b3a90b Binary files /dev/null and b/public/terrain/19/858516/353938.terrain differ diff --git a/public/terrain/19/858516/353939.terrain b/public/terrain/19/858516/353939.terrain new file mode 100644 index 000000000..7e6ce5709 Binary files /dev/null and b/public/terrain/19/858516/353939.terrain differ diff --git a/public/terrain/19/858516/353940.terrain b/public/terrain/19/858516/353940.terrain new file mode 100644 index 000000000..36cda80e6 Binary files /dev/null and b/public/terrain/19/858516/353940.terrain differ diff --git a/public/terrain/19/858516/353941.terrain b/public/terrain/19/858516/353941.terrain new file mode 100644 index 000000000..d9c64ad1a Binary files /dev/null and b/public/terrain/19/858516/353941.terrain differ diff --git a/public/terrain/19/858516/353942.terrain b/public/terrain/19/858516/353942.terrain new file mode 100644 index 000000000..4c2fbeeca Binary files /dev/null and b/public/terrain/19/858516/353942.terrain differ diff --git a/public/terrain/19/858516/353943.terrain b/public/terrain/19/858516/353943.terrain new file mode 100644 index 000000000..c6966079a Binary files /dev/null and b/public/terrain/19/858516/353943.terrain differ diff --git a/public/terrain/19/858516/353944.terrain b/public/terrain/19/858516/353944.terrain new file mode 100644 index 000000000..da8da36cc Binary files /dev/null and b/public/terrain/19/858516/353944.terrain differ diff --git a/public/terrain/19/858516/353945.terrain b/public/terrain/19/858516/353945.terrain new file mode 100644 index 000000000..82c44968a Binary files /dev/null and b/public/terrain/19/858516/353945.terrain differ diff --git a/public/terrain/19/858516/353946.terrain b/public/terrain/19/858516/353946.terrain new file mode 100644 index 000000000..f88349b36 Binary files /dev/null and b/public/terrain/19/858516/353946.terrain differ diff --git a/public/terrain/19/858516/353947.terrain b/public/terrain/19/858516/353947.terrain new file mode 100644 index 000000000..a94dec682 Binary files /dev/null and b/public/terrain/19/858516/353947.terrain differ diff --git a/public/terrain/19/858516/353948.terrain b/public/terrain/19/858516/353948.terrain new file mode 100644 index 000000000..757e005fb Binary files /dev/null and b/public/terrain/19/858516/353948.terrain differ diff --git a/public/terrain/19/858516/353949.terrain b/public/terrain/19/858516/353949.terrain new file mode 100644 index 000000000..fef7c4083 Binary files /dev/null and b/public/terrain/19/858516/353949.terrain differ diff --git a/public/terrain/19/858516/353950.terrain b/public/terrain/19/858516/353950.terrain new file mode 100644 index 000000000..7aebfc71c Binary files /dev/null and b/public/terrain/19/858516/353950.terrain differ diff --git a/public/terrain/19/858516/353951.terrain b/public/terrain/19/858516/353951.terrain new file mode 100644 index 000000000..01e5c4862 Binary files /dev/null and b/public/terrain/19/858516/353951.terrain differ diff --git a/public/terrain/19/858516/353952.terrain b/public/terrain/19/858516/353952.terrain new file mode 100644 index 000000000..9413d5eff Binary files /dev/null and b/public/terrain/19/858516/353952.terrain differ diff --git a/public/terrain/19/858516/353953.terrain b/public/terrain/19/858516/353953.terrain new file mode 100644 index 000000000..d2bf70f51 Binary files /dev/null and b/public/terrain/19/858516/353953.terrain differ diff --git a/public/terrain/19/858516/353954.terrain b/public/terrain/19/858516/353954.terrain new file mode 100644 index 000000000..4a1db3eea Binary files /dev/null and b/public/terrain/19/858516/353954.terrain differ diff --git a/public/terrain/19/858516/353955.terrain b/public/terrain/19/858516/353955.terrain new file mode 100644 index 000000000..a721dee56 Binary files /dev/null and b/public/terrain/19/858516/353955.terrain differ diff --git a/public/terrain/19/858516/353956.terrain b/public/terrain/19/858516/353956.terrain new file mode 100644 index 000000000..eb9851494 Binary files /dev/null and b/public/terrain/19/858516/353956.terrain differ diff --git a/public/terrain/19/858516/353957.terrain b/public/terrain/19/858516/353957.terrain new file mode 100644 index 000000000..a073ef9de Binary files /dev/null and b/public/terrain/19/858516/353957.terrain differ diff --git a/public/terrain/19/858516/353958.terrain b/public/terrain/19/858516/353958.terrain new file mode 100644 index 000000000..6c4dae9b0 Binary files /dev/null and b/public/terrain/19/858516/353958.terrain differ diff --git a/public/terrain/19/858516/353959.terrain b/public/terrain/19/858516/353959.terrain new file mode 100644 index 000000000..ebc7678d5 Binary files /dev/null and b/public/terrain/19/858516/353959.terrain differ diff --git a/public/terrain/19/858516/353960.terrain b/public/terrain/19/858516/353960.terrain new file mode 100644 index 000000000..9c6223b51 Binary files /dev/null and b/public/terrain/19/858516/353960.terrain differ diff --git a/public/terrain/19/858516/353961.terrain b/public/terrain/19/858516/353961.terrain new file mode 100644 index 000000000..c929e6561 Binary files /dev/null and b/public/terrain/19/858516/353961.terrain differ diff --git a/public/terrain/19/858516/353962.terrain b/public/terrain/19/858516/353962.terrain new file mode 100644 index 000000000..dbed45967 Binary files /dev/null and b/public/terrain/19/858516/353962.terrain differ diff --git a/public/terrain/19/858516/353963.terrain b/public/terrain/19/858516/353963.terrain new file mode 100644 index 000000000..4bcf06665 Binary files /dev/null and b/public/terrain/19/858516/353963.terrain differ diff --git a/public/terrain/19/858516/353964.terrain b/public/terrain/19/858516/353964.terrain new file mode 100644 index 000000000..a93486378 Binary files /dev/null and b/public/terrain/19/858516/353964.terrain differ diff --git a/public/terrain/19/858516/353965.terrain b/public/terrain/19/858516/353965.terrain new file mode 100644 index 000000000..5a670774d Binary files /dev/null and b/public/terrain/19/858516/353965.terrain differ diff --git a/public/terrain/19/858516/353966.terrain b/public/terrain/19/858516/353966.terrain new file mode 100644 index 000000000..cf53dca24 Binary files /dev/null and b/public/terrain/19/858516/353966.terrain differ diff --git a/public/terrain/19/858516/353967.terrain b/public/terrain/19/858516/353967.terrain new file mode 100644 index 000000000..78f0d3eaf Binary files /dev/null and b/public/terrain/19/858516/353967.terrain differ diff --git a/public/terrain/19/858516/353968.terrain b/public/terrain/19/858516/353968.terrain new file mode 100644 index 000000000..f78a39c16 Binary files /dev/null and b/public/terrain/19/858516/353968.terrain differ diff --git a/public/terrain/19/858516/353969.terrain b/public/terrain/19/858516/353969.terrain new file mode 100644 index 000000000..99850c232 Binary files /dev/null and b/public/terrain/19/858516/353969.terrain differ diff --git a/public/terrain/19/858516/353970.terrain b/public/terrain/19/858516/353970.terrain new file mode 100644 index 000000000..9c6e02bbc Binary files /dev/null and b/public/terrain/19/858516/353970.terrain differ diff --git a/public/terrain/19/858516/353971.terrain b/public/terrain/19/858516/353971.terrain new file mode 100644 index 000000000..695e62932 Binary files /dev/null and b/public/terrain/19/858516/353971.terrain differ diff --git a/public/terrain/19/858516/353972.terrain b/public/terrain/19/858516/353972.terrain new file mode 100644 index 000000000..1a0674101 Binary files /dev/null and b/public/terrain/19/858516/353972.terrain differ diff --git a/public/terrain/19/858516/353973.terrain b/public/terrain/19/858516/353973.terrain new file mode 100644 index 000000000..a5430e4bb Binary files /dev/null and b/public/terrain/19/858516/353973.terrain differ diff --git a/public/terrain/19/858516/353974.terrain b/public/terrain/19/858516/353974.terrain new file mode 100644 index 000000000..62b239b55 Binary files /dev/null and b/public/terrain/19/858516/353974.terrain differ diff --git a/public/terrain/19/858516/353975.terrain b/public/terrain/19/858516/353975.terrain new file mode 100644 index 000000000..f8cd00f70 Binary files /dev/null and b/public/terrain/19/858516/353975.terrain differ diff --git a/public/terrain/19/858516/353976.terrain b/public/terrain/19/858516/353976.terrain new file mode 100644 index 000000000..0c1e45d41 Binary files /dev/null and b/public/terrain/19/858516/353976.terrain differ diff --git a/public/terrain/19/858516/353977.terrain b/public/terrain/19/858516/353977.terrain new file mode 100644 index 000000000..7e472ebbd Binary files /dev/null and b/public/terrain/19/858516/353977.terrain differ diff --git a/public/terrain/19/858516/353978.terrain b/public/terrain/19/858516/353978.terrain new file mode 100644 index 000000000..82fb534bb Binary files /dev/null and b/public/terrain/19/858516/353978.terrain differ diff --git a/public/terrain/19/858516/353979.terrain b/public/terrain/19/858516/353979.terrain new file mode 100644 index 000000000..89c34cce5 Binary files /dev/null and b/public/terrain/19/858516/353979.terrain differ diff --git a/public/terrain/19/858516/353980.terrain b/public/terrain/19/858516/353980.terrain new file mode 100644 index 000000000..4a694dd4d Binary files /dev/null and b/public/terrain/19/858516/353980.terrain differ diff --git a/public/terrain/19/858516/353981.terrain b/public/terrain/19/858516/353981.terrain new file mode 100644 index 000000000..2a5423681 Binary files /dev/null and b/public/terrain/19/858516/353981.terrain differ diff --git a/public/terrain/19/858516/353982.terrain b/public/terrain/19/858516/353982.terrain new file mode 100644 index 000000000..aed0e3266 Binary files /dev/null and b/public/terrain/19/858516/353982.terrain differ diff --git a/public/terrain/19/858516/353983.terrain b/public/terrain/19/858516/353983.terrain new file mode 100644 index 000000000..5b6475521 Binary files /dev/null and b/public/terrain/19/858516/353983.terrain differ diff --git a/public/terrain/19/858516/353984.terrain b/public/terrain/19/858516/353984.terrain new file mode 100644 index 000000000..e517b1e8c Binary files /dev/null and b/public/terrain/19/858516/353984.terrain differ diff --git a/public/terrain/19/858516/353985.terrain b/public/terrain/19/858516/353985.terrain new file mode 100644 index 000000000..ff2fb4865 Binary files /dev/null and b/public/terrain/19/858516/353985.terrain differ diff --git a/public/terrain/19/858516/353986.terrain b/public/terrain/19/858516/353986.terrain new file mode 100644 index 000000000..f936d6ea9 Binary files /dev/null and b/public/terrain/19/858516/353986.terrain differ diff --git a/public/terrain/19/858516/353987.terrain b/public/terrain/19/858516/353987.terrain new file mode 100644 index 000000000..6e9a9b65e Binary files /dev/null and b/public/terrain/19/858516/353987.terrain differ diff --git a/public/terrain/19/858516/353988.terrain b/public/terrain/19/858516/353988.terrain new file mode 100644 index 000000000..246f86137 Binary files /dev/null and b/public/terrain/19/858516/353988.terrain differ diff --git a/public/terrain/19/858516/353989.terrain b/public/terrain/19/858516/353989.terrain new file mode 100644 index 000000000..5de824a14 Binary files /dev/null and b/public/terrain/19/858516/353989.terrain differ diff --git a/public/terrain/19/858516/353990.terrain b/public/terrain/19/858516/353990.terrain new file mode 100644 index 000000000..d9ce9b7df Binary files /dev/null and b/public/terrain/19/858516/353990.terrain differ diff --git a/public/terrain/19/858516/353991.terrain b/public/terrain/19/858516/353991.terrain new file mode 100644 index 000000000..92ceb8ead Binary files /dev/null and b/public/terrain/19/858516/353991.terrain differ diff --git a/public/terrain/19/858516/353992.terrain b/public/terrain/19/858516/353992.terrain new file mode 100644 index 000000000..f8c0650bc Binary files /dev/null and b/public/terrain/19/858516/353992.terrain differ diff --git a/public/terrain/19/858516/353993.terrain b/public/terrain/19/858516/353993.terrain new file mode 100644 index 000000000..ef84aa13f Binary files /dev/null and b/public/terrain/19/858516/353993.terrain differ diff --git a/public/terrain/19/858516/353994.terrain b/public/terrain/19/858516/353994.terrain new file mode 100644 index 000000000..677c0564f Binary files /dev/null and b/public/terrain/19/858516/353994.terrain differ diff --git a/public/terrain/19/858516/353995.terrain b/public/terrain/19/858516/353995.terrain new file mode 100644 index 000000000..0bda5c7a3 Binary files /dev/null and b/public/terrain/19/858516/353995.terrain differ diff --git a/public/terrain/19/858516/353996.terrain b/public/terrain/19/858516/353996.terrain new file mode 100644 index 000000000..d99d7a39d Binary files /dev/null and b/public/terrain/19/858516/353996.terrain differ diff --git a/public/terrain/19/858516/353997.terrain b/public/terrain/19/858516/353997.terrain new file mode 100644 index 000000000..2083ec341 Binary files /dev/null and b/public/terrain/19/858516/353997.terrain differ diff --git a/public/terrain/19/858516/353998.terrain b/public/terrain/19/858516/353998.terrain new file mode 100644 index 000000000..c8785622a Binary files /dev/null and b/public/terrain/19/858516/353998.terrain differ diff --git a/public/terrain/19/858516/353999.terrain b/public/terrain/19/858516/353999.terrain new file mode 100644 index 000000000..2c8c61e14 Binary files /dev/null and b/public/terrain/19/858516/353999.terrain differ diff --git a/public/terrain/19/858516/354000.terrain b/public/terrain/19/858516/354000.terrain new file mode 100644 index 000000000..823b74675 Binary files /dev/null and b/public/terrain/19/858516/354000.terrain differ diff --git a/public/terrain/19/858516/354001.terrain b/public/terrain/19/858516/354001.terrain new file mode 100644 index 000000000..0ca5a55dc Binary files /dev/null and b/public/terrain/19/858516/354001.terrain differ diff --git a/public/terrain/19/858516/354002.terrain b/public/terrain/19/858516/354002.terrain new file mode 100644 index 000000000..dd3a69e47 Binary files /dev/null and b/public/terrain/19/858516/354002.terrain differ diff --git a/public/terrain/19/858516/354003.terrain b/public/terrain/19/858516/354003.terrain new file mode 100644 index 000000000..06e336fa7 Binary files /dev/null and b/public/terrain/19/858516/354003.terrain differ diff --git a/public/terrain/19/858516/354004.terrain b/public/terrain/19/858516/354004.terrain new file mode 100644 index 000000000..cbb3cb72d Binary files /dev/null and b/public/terrain/19/858516/354004.terrain differ diff --git a/public/terrain/19/858516/354005.terrain b/public/terrain/19/858516/354005.terrain new file mode 100644 index 000000000..8b7ad9ca8 Binary files /dev/null and b/public/terrain/19/858516/354005.terrain differ diff --git a/public/terrain/19/858516/354006.terrain b/public/terrain/19/858516/354006.terrain new file mode 100644 index 000000000..b82000445 Binary files /dev/null and b/public/terrain/19/858516/354006.terrain differ diff --git a/public/terrain/19/858516/354007.terrain b/public/terrain/19/858516/354007.terrain new file mode 100644 index 000000000..23b72fdbf Binary files /dev/null and b/public/terrain/19/858516/354007.terrain differ diff --git a/public/terrain/19/858516/354008.terrain b/public/terrain/19/858516/354008.terrain new file mode 100644 index 000000000..50d501e94 Binary files /dev/null and b/public/terrain/19/858516/354008.terrain differ diff --git a/public/terrain/19/858516/354009.terrain b/public/terrain/19/858516/354009.terrain new file mode 100644 index 000000000..9201664ac Binary files /dev/null and b/public/terrain/19/858516/354009.terrain differ diff --git a/public/terrain/19/858516/354010.terrain b/public/terrain/19/858516/354010.terrain new file mode 100644 index 000000000..3200b6962 Binary files /dev/null and b/public/terrain/19/858516/354010.terrain differ diff --git a/public/terrain/19/858516/354011.terrain b/public/terrain/19/858516/354011.terrain new file mode 100644 index 000000000..5b42b9360 Binary files /dev/null and b/public/terrain/19/858516/354011.terrain differ diff --git a/public/terrain/19/858516/354012.terrain b/public/terrain/19/858516/354012.terrain new file mode 100644 index 000000000..745413988 Binary files /dev/null and b/public/terrain/19/858516/354012.terrain differ diff --git a/public/terrain/19/858516/354013.terrain b/public/terrain/19/858516/354013.terrain new file mode 100644 index 000000000..7065027d5 Binary files /dev/null and b/public/terrain/19/858516/354013.terrain differ diff --git a/public/terrain/19/858516/354014.terrain b/public/terrain/19/858516/354014.terrain new file mode 100644 index 000000000..af2c40952 Binary files /dev/null and b/public/terrain/19/858516/354014.terrain differ diff --git a/public/terrain/19/858516/354015.terrain b/public/terrain/19/858516/354015.terrain new file mode 100644 index 000000000..76e75c595 Binary files /dev/null and b/public/terrain/19/858516/354015.terrain differ diff --git a/public/terrain/19/858516/354016.terrain b/public/terrain/19/858516/354016.terrain new file mode 100644 index 000000000..4398d0356 Binary files /dev/null and b/public/terrain/19/858516/354016.terrain differ diff --git a/public/terrain/19/858516/354017.terrain b/public/terrain/19/858516/354017.terrain new file mode 100644 index 000000000..83286d819 Binary files /dev/null and b/public/terrain/19/858516/354017.terrain differ diff --git a/public/terrain/19/858516/354018.terrain b/public/terrain/19/858516/354018.terrain new file mode 100644 index 000000000..44bbb59f2 Binary files /dev/null and b/public/terrain/19/858516/354018.terrain differ diff --git a/public/terrain/19/858516/354019.terrain b/public/terrain/19/858516/354019.terrain new file mode 100644 index 000000000..100d1d353 Binary files /dev/null and b/public/terrain/19/858516/354019.terrain differ diff --git a/public/terrain/19/858516/354020.terrain b/public/terrain/19/858516/354020.terrain new file mode 100644 index 000000000..db6931a2f Binary files /dev/null and b/public/terrain/19/858516/354020.terrain differ diff --git a/public/terrain/19/858516/354021.terrain b/public/terrain/19/858516/354021.terrain new file mode 100644 index 000000000..1ad67d2ec Binary files /dev/null and b/public/terrain/19/858516/354021.terrain differ diff --git a/public/terrain/19/858516/354022.terrain b/public/terrain/19/858516/354022.terrain new file mode 100644 index 000000000..3c57cbd2a Binary files /dev/null and b/public/terrain/19/858516/354022.terrain differ diff --git a/public/terrain/19/858516/354023.terrain b/public/terrain/19/858516/354023.terrain new file mode 100644 index 000000000..e3de15f3b Binary files /dev/null and b/public/terrain/19/858516/354023.terrain differ diff --git a/public/terrain/19/858516/354024.terrain b/public/terrain/19/858516/354024.terrain new file mode 100644 index 000000000..aaad15d56 Binary files /dev/null and b/public/terrain/19/858516/354024.terrain differ diff --git a/public/terrain/19/858516/354025.terrain b/public/terrain/19/858516/354025.terrain new file mode 100644 index 000000000..ba59238fc Binary files /dev/null and b/public/terrain/19/858516/354025.terrain differ diff --git a/public/terrain/19/858516/354026.terrain b/public/terrain/19/858516/354026.terrain new file mode 100644 index 000000000..73e3ec53f Binary files /dev/null and b/public/terrain/19/858516/354026.terrain differ diff --git a/public/terrain/19/858516/354027.terrain b/public/terrain/19/858516/354027.terrain new file mode 100644 index 000000000..ccf90838a Binary files /dev/null and b/public/terrain/19/858516/354027.terrain differ diff --git a/public/terrain/19/858516/354028.terrain b/public/terrain/19/858516/354028.terrain new file mode 100644 index 000000000..7a0ee6d05 Binary files /dev/null and b/public/terrain/19/858516/354028.terrain differ diff --git a/public/terrain/19/858516/354029.terrain b/public/terrain/19/858516/354029.terrain new file mode 100644 index 000000000..4270a7eb6 Binary files /dev/null and b/public/terrain/19/858516/354029.terrain differ diff --git a/public/terrain/19/858516/354030.terrain b/public/terrain/19/858516/354030.terrain new file mode 100644 index 000000000..7aa61a8b3 Binary files /dev/null and b/public/terrain/19/858516/354030.terrain differ diff --git a/public/terrain/19/858516/354031.terrain b/public/terrain/19/858516/354031.terrain new file mode 100644 index 000000000..ccfd8e749 Binary files /dev/null and b/public/terrain/19/858516/354031.terrain differ diff --git a/public/terrain/19/858516/354032.terrain b/public/terrain/19/858516/354032.terrain new file mode 100644 index 000000000..0aafb5495 Binary files /dev/null and b/public/terrain/19/858516/354032.terrain differ diff --git a/public/terrain/19/858516/354033.terrain b/public/terrain/19/858516/354033.terrain new file mode 100644 index 000000000..77bdd6dc0 Binary files /dev/null and b/public/terrain/19/858516/354033.terrain differ diff --git a/public/terrain/19/858516/354034.terrain b/public/terrain/19/858516/354034.terrain new file mode 100644 index 000000000..3ecd0c44a Binary files /dev/null and b/public/terrain/19/858516/354034.terrain differ diff --git a/public/terrain/19/858516/354035.terrain b/public/terrain/19/858516/354035.terrain new file mode 100644 index 000000000..0250f5a66 Binary files /dev/null and b/public/terrain/19/858516/354035.terrain differ diff --git a/public/terrain/19/858516/354036.terrain b/public/terrain/19/858516/354036.terrain new file mode 100644 index 000000000..eb3348b9d Binary files /dev/null and b/public/terrain/19/858516/354036.terrain differ diff --git a/public/terrain/19/858516/354037.terrain b/public/terrain/19/858516/354037.terrain new file mode 100644 index 000000000..95cf4d32c Binary files /dev/null and b/public/terrain/19/858516/354037.terrain differ diff --git a/public/terrain/19/858516/354038.terrain b/public/terrain/19/858516/354038.terrain new file mode 100644 index 000000000..40efd1e78 Binary files /dev/null and b/public/terrain/19/858516/354038.terrain differ diff --git a/public/terrain/19/858516/354039.terrain b/public/terrain/19/858516/354039.terrain new file mode 100644 index 000000000..aca923f36 Binary files /dev/null and b/public/terrain/19/858516/354039.terrain differ diff --git a/public/terrain/19/858516/354040.terrain b/public/terrain/19/858516/354040.terrain new file mode 100644 index 000000000..4bffa875f Binary files /dev/null and b/public/terrain/19/858516/354040.terrain differ diff --git a/public/terrain/19/858516/354041.terrain b/public/terrain/19/858516/354041.terrain new file mode 100644 index 000000000..af90b460b Binary files /dev/null and b/public/terrain/19/858516/354041.terrain differ diff --git a/public/terrain/19/858516/354042.terrain b/public/terrain/19/858516/354042.terrain new file mode 100644 index 000000000..0547ee8b5 Binary files /dev/null and b/public/terrain/19/858516/354042.terrain differ diff --git a/public/terrain/19/858516/354043.terrain b/public/terrain/19/858516/354043.terrain new file mode 100644 index 000000000..6739d53a2 Binary files /dev/null and b/public/terrain/19/858516/354043.terrain differ diff --git a/public/terrain/19/858516/354044.terrain b/public/terrain/19/858516/354044.terrain new file mode 100644 index 000000000..984144eda Binary files /dev/null and b/public/terrain/19/858516/354044.terrain differ diff --git a/public/terrain/19/858516/354045.terrain b/public/terrain/19/858516/354045.terrain new file mode 100644 index 000000000..5c2717f27 Binary files /dev/null and b/public/terrain/19/858516/354045.terrain differ diff --git a/public/terrain/19/858516/354046.terrain b/public/terrain/19/858516/354046.terrain new file mode 100644 index 000000000..8a4c3d903 Binary files /dev/null and b/public/terrain/19/858516/354046.terrain differ diff --git a/public/terrain/19/858516/354047.terrain b/public/terrain/19/858516/354047.terrain new file mode 100644 index 000000000..0f89f6f2b Binary files /dev/null and b/public/terrain/19/858516/354047.terrain differ diff --git a/public/terrain/19/858516/354048.terrain b/public/terrain/19/858516/354048.terrain new file mode 100644 index 000000000..7efb69876 Binary files /dev/null and b/public/terrain/19/858516/354048.terrain differ diff --git a/public/terrain/19/858516/354049.terrain b/public/terrain/19/858516/354049.terrain new file mode 100644 index 000000000..805fd2f5b Binary files /dev/null and b/public/terrain/19/858516/354049.terrain differ diff --git a/public/terrain/19/858516/354050.terrain b/public/terrain/19/858516/354050.terrain new file mode 100644 index 000000000..0b218ac76 Binary files /dev/null and b/public/terrain/19/858516/354050.terrain differ diff --git a/public/terrain/19/858516/354051.terrain b/public/terrain/19/858516/354051.terrain new file mode 100644 index 000000000..3c5b22a22 Binary files /dev/null and b/public/terrain/19/858516/354051.terrain differ diff --git a/public/terrain/19/858516/354052.terrain b/public/terrain/19/858516/354052.terrain new file mode 100644 index 000000000..dd8ce29ba Binary files /dev/null and b/public/terrain/19/858516/354052.terrain differ diff --git a/public/terrain/19/858516/354053.terrain b/public/terrain/19/858516/354053.terrain new file mode 100644 index 000000000..9c66b5949 Binary files /dev/null and b/public/terrain/19/858516/354053.terrain differ diff --git a/public/terrain/19/858516/354054.terrain b/public/terrain/19/858516/354054.terrain new file mode 100644 index 000000000..8b06333bc Binary files /dev/null and b/public/terrain/19/858516/354054.terrain differ diff --git a/public/terrain/19/858516/354055.terrain b/public/terrain/19/858516/354055.terrain new file mode 100644 index 000000000..8a3ac7bed Binary files /dev/null and b/public/terrain/19/858516/354055.terrain differ diff --git a/public/terrain/19/858516/354056.terrain b/public/terrain/19/858516/354056.terrain new file mode 100644 index 000000000..21bca2f51 Binary files /dev/null and b/public/terrain/19/858516/354056.terrain differ diff --git a/public/terrain/19/858516/354057.terrain b/public/terrain/19/858516/354057.terrain new file mode 100644 index 000000000..43927d416 Binary files /dev/null and b/public/terrain/19/858516/354057.terrain differ diff --git a/public/terrain/19/858516/354058.terrain b/public/terrain/19/858516/354058.terrain new file mode 100644 index 000000000..bfd0582bf Binary files /dev/null and b/public/terrain/19/858516/354058.terrain differ diff --git a/public/terrain/19/858516/354059.terrain b/public/terrain/19/858516/354059.terrain new file mode 100644 index 000000000..e7b8f61aa Binary files /dev/null and b/public/terrain/19/858516/354059.terrain differ diff --git a/public/terrain/19/858517/353743.terrain b/public/terrain/19/858517/353743.terrain new file mode 100644 index 000000000..944c36f79 Binary files /dev/null and b/public/terrain/19/858517/353743.terrain differ diff --git a/public/terrain/19/858517/353744.terrain b/public/terrain/19/858517/353744.terrain new file mode 100644 index 000000000..615ae438e Binary files /dev/null and b/public/terrain/19/858517/353744.terrain differ diff --git a/public/terrain/19/858517/353745.terrain b/public/terrain/19/858517/353745.terrain new file mode 100644 index 000000000..e041db7c7 Binary files /dev/null and b/public/terrain/19/858517/353745.terrain differ diff --git a/public/terrain/19/858517/353746.terrain b/public/terrain/19/858517/353746.terrain new file mode 100644 index 000000000..443e2abe4 Binary files /dev/null and b/public/terrain/19/858517/353746.terrain differ diff --git a/public/terrain/19/858517/353747.terrain b/public/terrain/19/858517/353747.terrain new file mode 100644 index 000000000..a916cbc80 Binary files /dev/null and b/public/terrain/19/858517/353747.terrain differ diff --git a/public/terrain/19/858517/353748.terrain b/public/terrain/19/858517/353748.terrain new file mode 100644 index 000000000..ad083d624 Binary files /dev/null and b/public/terrain/19/858517/353748.terrain differ diff --git a/public/terrain/19/858517/353749.terrain b/public/terrain/19/858517/353749.terrain new file mode 100644 index 000000000..82709a1d2 Binary files /dev/null and b/public/terrain/19/858517/353749.terrain differ diff --git a/public/terrain/19/858517/353750.terrain b/public/terrain/19/858517/353750.terrain new file mode 100644 index 000000000..1250fec1a Binary files /dev/null and b/public/terrain/19/858517/353750.terrain differ diff --git a/public/terrain/19/858517/353751.terrain b/public/terrain/19/858517/353751.terrain new file mode 100644 index 000000000..a90e21220 Binary files /dev/null and b/public/terrain/19/858517/353751.terrain differ diff --git a/public/terrain/19/858517/353752.terrain b/public/terrain/19/858517/353752.terrain new file mode 100644 index 000000000..d27df61e7 Binary files /dev/null and b/public/terrain/19/858517/353752.terrain differ diff --git a/public/terrain/19/858517/353753.terrain b/public/terrain/19/858517/353753.terrain new file mode 100644 index 000000000..3963dac02 Binary files /dev/null and b/public/terrain/19/858517/353753.terrain differ diff --git a/public/terrain/19/858517/353754.terrain b/public/terrain/19/858517/353754.terrain new file mode 100644 index 000000000..3f68a4687 Binary files /dev/null and b/public/terrain/19/858517/353754.terrain differ diff --git a/public/terrain/19/858517/353755.terrain b/public/terrain/19/858517/353755.terrain new file mode 100644 index 000000000..8ca0e8af6 Binary files /dev/null and b/public/terrain/19/858517/353755.terrain differ diff --git a/public/terrain/19/858517/353756.terrain b/public/terrain/19/858517/353756.terrain new file mode 100644 index 000000000..a6d0b18ad Binary files /dev/null and b/public/terrain/19/858517/353756.terrain differ diff --git a/public/terrain/19/858517/353757.terrain b/public/terrain/19/858517/353757.terrain new file mode 100644 index 000000000..fdf6e3f59 Binary files /dev/null and b/public/terrain/19/858517/353757.terrain differ diff --git a/public/terrain/19/858517/353758.terrain b/public/terrain/19/858517/353758.terrain new file mode 100644 index 000000000..738bb7d56 Binary files /dev/null and b/public/terrain/19/858517/353758.terrain differ diff --git a/public/terrain/19/858517/353759.terrain b/public/terrain/19/858517/353759.terrain new file mode 100644 index 000000000..0c11a06a6 Binary files /dev/null and b/public/terrain/19/858517/353759.terrain differ diff --git a/public/terrain/19/858517/353760.terrain b/public/terrain/19/858517/353760.terrain new file mode 100644 index 000000000..abc38b2fc Binary files /dev/null and b/public/terrain/19/858517/353760.terrain differ diff --git a/public/terrain/19/858517/353761.terrain b/public/terrain/19/858517/353761.terrain new file mode 100644 index 000000000..f3120d775 Binary files /dev/null and b/public/terrain/19/858517/353761.terrain differ diff --git a/public/terrain/19/858517/353762.terrain b/public/terrain/19/858517/353762.terrain new file mode 100644 index 000000000..fcc6a1217 Binary files /dev/null and b/public/terrain/19/858517/353762.terrain differ diff --git a/public/terrain/19/858517/353763.terrain b/public/terrain/19/858517/353763.terrain new file mode 100644 index 000000000..1f9b19fd9 Binary files /dev/null and b/public/terrain/19/858517/353763.terrain differ diff --git a/public/terrain/19/858517/353764.terrain b/public/terrain/19/858517/353764.terrain new file mode 100644 index 000000000..1936c2551 Binary files /dev/null and b/public/terrain/19/858517/353764.terrain differ diff --git a/public/terrain/19/858517/353765.terrain b/public/terrain/19/858517/353765.terrain new file mode 100644 index 000000000..916ac5a43 Binary files /dev/null and b/public/terrain/19/858517/353765.terrain differ diff --git a/public/terrain/19/858517/353766.terrain b/public/terrain/19/858517/353766.terrain new file mode 100644 index 000000000..cb4135722 Binary files /dev/null and b/public/terrain/19/858517/353766.terrain differ diff --git a/public/terrain/19/858517/353767.terrain b/public/terrain/19/858517/353767.terrain new file mode 100644 index 000000000..7f3c1d639 Binary files /dev/null and b/public/terrain/19/858517/353767.terrain differ diff --git a/public/terrain/19/858517/353768.terrain b/public/terrain/19/858517/353768.terrain new file mode 100644 index 000000000..3e3a131b1 Binary files /dev/null and b/public/terrain/19/858517/353768.terrain differ diff --git a/public/terrain/19/858517/353769.terrain b/public/terrain/19/858517/353769.terrain new file mode 100644 index 000000000..bba3466e9 Binary files /dev/null and b/public/terrain/19/858517/353769.terrain differ diff --git a/public/terrain/19/858517/353770.terrain b/public/terrain/19/858517/353770.terrain new file mode 100644 index 000000000..83c3d7522 Binary files /dev/null and b/public/terrain/19/858517/353770.terrain differ diff --git a/public/terrain/19/858517/353771.terrain b/public/terrain/19/858517/353771.terrain new file mode 100644 index 000000000..f1e95cfc4 Binary files /dev/null and b/public/terrain/19/858517/353771.terrain differ diff --git a/public/terrain/19/858517/353772.terrain b/public/terrain/19/858517/353772.terrain new file mode 100644 index 000000000..2f3348c87 Binary files /dev/null and b/public/terrain/19/858517/353772.terrain differ diff --git a/public/terrain/19/858517/353773.terrain b/public/terrain/19/858517/353773.terrain new file mode 100644 index 000000000..2eb8411ba Binary files /dev/null and b/public/terrain/19/858517/353773.terrain differ diff --git a/public/terrain/19/858517/353774.terrain b/public/terrain/19/858517/353774.terrain new file mode 100644 index 000000000..7df00d7f2 Binary files /dev/null and b/public/terrain/19/858517/353774.terrain differ diff --git a/public/terrain/19/858517/353775.terrain b/public/terrain/19/858517/353775.terrain new file mode 100644 index 000000000..a607da7e2 Binary files /dev/null and b/public/terrain/19/858517/353775.terrain differ diff --git a/public/terrain/19/858517/353776.terrain b/public/terrain/19/858517/353776.terrain new file mode 100644 index 000000000..2b11bf8bb Binary files /dev/null and b/public/terrain/19/858517/353776.terrain differ diff --git a/public/terrain/19/858517/353777.terrain b/public/terrain/19/858517/353777.terrain new file mode 100644 index 000000000..1581fcf77 Binary files /dev/null and b/public/terrain/19/858517/353777.terrain differ diff --git a/public/terrain/19/858517/353778.terrain b/public/terrain/19/858517/353778.terrain new file mode 100644 index 000000000..5a84e7e25 Binary files /dev/null and b/public/terrain/19/858517/353778.terrain differ diff --git a/public/terrain/19/858517/353779.terrain b/public/terrain/19/858517/353779.terrain new file mode 100644 index 000000000..3ca51cd4e Binary files /dev/null and b/public/terrain/19/858517/353779.terrain differ diff --git a/public/terrain/19/858517/353780.terrain b/public/terrain/19/858517/353780.terrain new file mode 100644 index 000000000..050498800 Binary files /dev/null and b/public/terrain/19/858517/353780.terrain differ diff --git a/public/terrain/19/858517/353781.terrain b/public/terrain/19/858517/353781.terrain new file mode 100644 index 000000000..b1dee6564 Binary files /dev/null and b/public/terrain/19/858517/353781.terrain differ diff --git a/public/terrain/19/858517/353782.terrain b/public/terrain/19/858517/353782.terrain new file mode 100644 index 000000000..0499f3be8 Binary files /dev/null and b/public/terrain/19/858517/353782.terrain differ diff --git a/public/terrain/19/858517/353783.terrain b/public/terrain/19/858517/353783.terrain new file mode 100644 index 000000000..61b1455bd Binary files /dev/null and b/public/terrain/19/858517/353783.terrain differ diff --git a/public/terrain/19/858517/353784.terrain b/public/terrain/19/858517/353784.terrain new file mode 100644 index 000000000..9fa90340e Binary files /dev/null and b/public/terrain/19/858517/353784.terrain differ diff --git a/public/terrain/19/858517/353785.terrain b/public/terrain/19/858517/353785.terrain new file mode 100644 index 000000000..720e486cd Binary files /dev/null and b/public/terrain/19/858517/353785.terrain differ diff --git a/public/terrain/19/858517/353786.terrain b/public/terrain/19/858517/353786.terrain new file mode 100644 index 000000000..931c1bc0f Binary files /dev/null and b/public/terrain/19/858517/353786.terrain differ diff --git a/public/terrain/19/858517/353787.terrain b/public/terrain/19/858517/353787.terrain new file mode 100644 index 000000000..13b61d978 Binary files /dev/null and b/public/terrain/19/858517/353787.terrain differ diff --git a/public/terrain/19/858517/353788.terrain b/public/terrain/19/858517/353788.terrain new file mode 100644 index 000000000..7de24365f Binary files /dev/null and b/public/terrain/19/858517/353788.terrain differ diff --git a/public/terrain/19/858517/353789.terrain b/public/terrain/19/858517/353789.terrain new file mode 100644 index 000000000..6189b4eee Binary files /dev/null and b/public/terrain/19/858517/353789.terrain differ diff --git a/public/terrain/19/858517/353790.terrain b/public/terrain/19/858517/353790.terrain new file mode 100644 index 000000000..c2b33f873 Binary files /dev/null and b/public/terrain/19/858517/353790.terrain differ diff --git a/public/terrain/19/858517/353791.terrain b/public/terrain/19/858517/353791.terrain new file mode 100644 index 000000000..5934eaf32 Binary files /dev/null and b/public/terrain/19/858517/353791.terrain differ diff --git a/public/terrain/19/858517/353792.terrain b/public/terrain/19/858517/353792.terrain new file mode 100644 index 000000000..20604688a Binary files /dev/null and b/public/terrain/19/858517/353792.terrain differ diff --git a/public/terrain/19/858517/353793.terrain b/public/terrain/19/858517/353793.terrain new file mode 100644 index 000000000..785aebfa5 Binary files /dev/null and b/public/terrain/19/858517/353793.terrain differ diff --git a/public/terrain/19/858517/353794.terrain b/public/terrain/19/858517/353794.terrain new file mode 100644 index 000000000..6522c9f61 Binary files /dev/null and b/public/terrain/19/858517/353794.terrain differ diff --git a/public/terrain/19/858517/353795.terrain b/public/terrain/19/858517/353795.terrain new file mode 100644 index 000000000..8888c2587 Binary files /dev/null and b/public/terrain/19/858517/353795.terrain differ diff --git a/public/terrain/19/858517/353796.terrain b/public/terrain/19/858517/353796.terrain new file mode 100644 index 000000000..ddf0171ae Binary files /dev/null and b/public/terrain/19/858517/353796.terrain differ diff --git a/public/terrain/19/858517/353797.terrain b/public/terrain/19/858517/353797.terrain new file mode 100644 index 000000000..088753654 Binary files /dev/null and b/public/terrain/19/858517/353797.terrain differ diff --git a/public/terrain/19/858517/353798.terrain b/public/terrain/19/858517/353798.terrain new file mode 100644 index 000000000..28a78132e Binary files /dev/null and b/public/terrain/19/858517/353798.terrain differ diff --git a/public/terrain/19/858517/353799.terrain b/public/terrain/19/858517/353799.terrain new file mode 100644 index 000000000..288857934 Binary files /dev/null and b/public/terrain/19/858517/353799.terrain differ diff --git a/public/terrain/19/858517/353800.terrain b/public/terrain/19/858517/353800.terrain new file mode 100644 index 000000000..a76a18965 Binary files /dev/null and b/public/terrain/19/858517/353800.terrain differ diff --git a/public/terrain/19/858517/353801.terrain b/public/terrain/19/858517/353801.terrain new file mode 100644 index 000000000..1e593820f Binary files /dev/null and b/public/terrain/19/858517/353801.terrain differ diff --git a/public/terrain/19/858517/353802.terrain b/public/terrain/19/858517/353802.terrain new file mode 100644 index 000000000..e9704c87c Binary files /dev/null and b/public/terrain/19/858517/353802.terrain differ diff --git a/public/terrain/19/858517/353803.terrain b/public/terrain/19/858517/353803.terrain new file mode 100644 index 000000000..a415dd179 Binary files /dev/null and b/public/terrain/19/858517/353803.terrain differ diff --git a/public/terrain/19/858517/353804.terrain b/public/terrain/19/858517/353804.terrain new file mode 100644 index 000000000..33ff27516 Binary files /dev/null and b/public/terrain/19/858517/353804.terrain differ diff --git a/public/terrain/19/858517/353805.terrain b/public/terrain/19/858517/353805.terrain new file mode 100644 index 000000000..8d5d87423 Binary files /dev/null and b/public/terrain/19/858517/353805.terrain differ diff --git a/public/terrain/19/858517/353806.terrain b/public/terrain/19/858517/353806.terrain new file mode 100644 index 000000000..485da0e40 Binary files /dev/null and b/public/terrain/19/858517/353806.terrain differ diff --git a/public/terrain/19/858517/353807.terrain b/public/terrain/19/858517/353807.terrain new file mode 100644 index 000000000..de7c7595a Binary files /dev/null and b/public/terrain/19/858517/353807.terrain differ diff --git a/public/terrain/19/858517/353808.terrain b/public/terrain/19/858517/353808.terrain new file mode 100644 index 000000000..9efe198f0 Binary files /dev/null and b/public/terrain/19/858517/353808.terrain differ diff --git a/public/terrain/19/858517/353809.terrain b/public/terrain/19/858517/353809.terrain new file mode 100644 index 000000000..0bf92743b Binary files /dev/null and b/public/terrain/19/858517/353809.terrain differ diff --git a/public/terrain/19/858517/353810.terrain b/public/terrain/19/858517/353810.terrain new file mode 100644 index 000000000..94190c925 Binary files /dev/null and b/public/terrain/19/858517/353810.terrain differ diff --git a/public/terrain/19/858517/353811.terrain b/public/terrain/19/858517/353811.terrain new file mode 100644 index 000000000..56e123112 Binary files /dev/null and b/public/terrain/19/858517/353811.terrain differ diff --git a/public/terrain/19/858517/353812.terrain b/public/terrain/19/858517/353812.terrain new file mode 100644 index 000000000..1e1eb92d8 Binary files /dev/null and b/public/terrain/19/858517/353812.terrain differ diff --git a/public/terrain/19/858517/353813.terrain b/public/terrain/19/858517/353813.terrain new file mode 100644 index 000000000..dddbc8fa5 Binary files /dev/null and b/public/terrain/19/858517/353813.terrain differ diff --git a/public/terrain/19/858517/353814.terrain b/public/terrain/19/858517/353814.terrain new file mode 100644 index 000000000..1b6fd607d Binary files /dev/null and b/public/terrain/19/858517/353814.terrain differ diff --git a/public/terrain/19/858517/353815.terrain b/public/terrain/19/858517/353815.terrain new file mode 100644 index 000000000..ee802398d Binary files /dev/null and b/public/terrain/19/858517/353815.terrain differ diff --git a/public/terrain/19/858517/353816.terrain b/public/terrain/19/858517/353816.terrain new file mode 100644 index 000000000..e02fae6ad Binary files /dev/null and b/public/terrain/19/858517/353816.terrain differ diff --git a/public/terrain/19/858517/353817.terrain b/public/terrain/19/858517/353817.terrain new file mode 100644 index 000000000..171a1f9d2 Binary files /dev/null and b/public/terrain/19/858517/353817.terrain differ diff --git a/public/terrain/19/858517/353818.terrain b/public/terrain/19/858517/353818.terrain new file mode 100644 index 000000000..d58b829ee Binary files /dev/null and b/public/terrain/19/858517/353818.terrain differ diff --git a/public/terrain/19/858517/353819.terrain b/public/terrain/19/858517/353819.terrain new file mode 100644 index 000000000..184f0042d Binary files /dev/null and b/public/terrain/19/858517/353819.terrain differ diff --git a/public/terrain/19/858517/353820.terrain b/public/terrain/19/858517/353820.terrain new file mode 100644 index 000000000..02e30ffc8 Binary files /dev/null and b/public/terrain/19/858517/353820.terrain differ diff --git a/public/terrain/19/858517/353821.terrain b/public/terrain/19/858517/353821.terrain new file mode 100644 index 000000000..41041ebc9 Binary files /dev/null and b/public/terrain/19/858517/353821.terrain differ diff --git a/public/terrain/19/858517/353822.terrain b/public/terrain/19/858517/353822.terrain new file mode 100644 index 000000000..12b41e15c Binary files /dev/null and b/public/terrain/19/858517/353822.terrain differ diff --git a/public/terrain/19/858517/353823.terrain b/public/terrain/19/858517/353823.terrain new file mode 100644 index 000000000..e0cada5fa Binary files /dev/null and b/public/terrain/19/858517/353823.terrain differ diff --git a/public/terrain/19/858517/353824.terrain b/public/terrain/19/858517/353824.terrain new file mode 100644 index 000000000..ee0fcd98b Binary files /dev/null and b/public/terrain/19/858517/353824.terrain differ diff --git a/public/terrain/19/858517/353825.terrain b/public/terrain/19/858517/353825.terrain new file mode 100644 index 000000000..a9eb92e9d Binary files /dev/null and b/public/terrain/19/858517/353825.terrain differ diff --git a/public/terrain/19/858517/353826.terrain b/public/terrain/19/858517/353826.terrain new file mode 100644 index 000000000..495fe9175 Binary files /dev/null and b/public/terrain/19/858517/353826.terrain differ diff --git a/public/terrain/19/858517/353827.terrain b/public/terrain/19/858517/353827.terrain new file mode 100644 index 000000000..89785782f Binary files /dev/null and b/public/terrain/19/858517/353827.terrain differ diff --git a/public/terrain/19/858517/353828.terrain b/public/terrain/19/858517/353828.terrain new file mode 100644 index 000000000..0509397c6 Binary files /dev/null and b/public/terrain/19/858517/353828.terrain differ diff --git a/public/terrain/19/858517/353829.terrain b/public/terrain/19/858517/353829.terrain new file mode 100644 index 000000000..e61baf7af Binary files /dev/null and b/public/terrain/19/858517/353829.terrain differ diff --git a/public/terrain/19/858517/353830.terrain b/public/terrain/19/858517/353830.terrain new file mode 100644 index 000000000..9cec16e0a Binary files /dev/null and b/public/terrain/19/858517/353830.terrain differ diff --git a/public/terrain/19/858517/353831.terrain b/public/terrain/19/858517/353831.terrain new file mode 100644 index 000000000..c7010b659 Binary files /dev/null and b/public/terrain/19/858517/353831.terrain differ diff --git a/public/terrain/19/858517/353832.terrain b/public/terrain/19/858517/353832.terrain new file mode 100644 index 000000000..7c2874126 Binary files /dev/null and b/public/terrain/19/858517/353832.terrain differ diff --git a/public/terrain/19/858517/353833.terrain b/public/terrain/19/858517/353833.terrain new file mode 100644 index 000000000..103298cb5 Binary files /dev/null and b/public/terrain/19/858517/353833.terrain differ diff --git a/public/terrain/19/858517/353834.terrain b/public/terrain/19/858517/353834.terrain new file mode 100644 index 000000000..e0dcf63e7 Binary files /dev/null and b/public/terrain/19/858517/353834.terrain differ diff --git a/public/terrain/19/858517/353835.terrain b/public/terrain/19/858517/353835.terrain new file mode 100644 index 000000000..6b26a085e Binary files /dev/null and b/public/terrain/19/858517/353835.terrain differ diff --git a/public/terrain/19/858517/353836.terrain b/public/terrain/19/858517/353836.terrain new file mode 100644 index 000000000..463905c29 Binary files /dev/null and b/public/terrain/19/858517/353836.terrain differ diff --git a/public/terrain/19/858517/353837.terrain b/public/terrain/19/858517/353837.terrain new file mode 100644 index 000000000..3501f22f8 Binary files /dev/null and b/public/terrain/19/858517/353837.terrain differ diff --git a/public/terrain/19/858517/353838.terrain b/public/terrain/19/858517/353838.terrain new file mode 100644 index 000000000..80c95a990 Binary files /dev/null and b/public/terrain/19/858517/353838.terrain differ diff --git a/public/terrain/19/858517/353839.terrain b/public/terrain/19/858517/353839.terrain new file mode 100644 index 000000000..987251b03 Binary files /dev/null and b/public/terrain/19/858517/353839.terrain differ diff --git a/public/terrain/19/858517/353840.terrain b/public/terrain/19/858517/353840.terrain new file mode 100644 index 000000000..6aa6cf251 Binary files /dev/null and b/public/terrain/19/858517/353840.terrain differ diff --git a/public/terrain/19/858517/353841.terrain b/public/terrain/19/858517/353841.terrain new file mode 100644 index 000000000..885ca12ef Binary files /dev/null and b/public/terrain/19/858517/353841.terrain differ diff --git a/public/terrain/19/858517/353842.terrain b/public/terrain/19/858517/353842.terrain new file mode 100644 index 000000000..0ec37dfff Binary files /dev/null and b/public/terrain/19/858517/353842.terrain differ diff --git a/public/terrain/19/858517/353843.terrain b/public/terrain/19/858517/353843.terrain new file mode 100644 index 000000000..07ea025e7 Binary files /dev/null and b/public/terrain/19/858517/353843.terrain differ diff --git a/public/terrain/19/858517/353844.terrain b/public/terrain/19/858517/353844.terrain new file mode 100644 index 000000000..45afaa6e8 Binary files /dev/null and b/public/terrain/19/858517/353844.terrain differ diff --git a/public/terrain/19/858517/353845.terrain b/public/terrain/19/858517/353845.terrain new file mode 100644 index 000000000..30904b7fa Binary files /dev/null and b/public/terrain/19/858517/353845.terrain differ diff --git a/public/terrain/19/858517/353846.terrain b/public/terrain/19/858517/353846.terrain new file mode 100644 index 000000000..b6cc18a0f Binary files /dev/null and b/public/terrain/19/858517/353846.terrain differ diff --git a/public/terrain/19/858517/353847.terrain b/public/terrain/19/858517/353847.terrain new file mode 100644 index 000000000..0202db4f4 Binary files /dev/null and b/public/terrain/19/858517/353847.terrain differ diff --git a/public/terrain/19/858517/353848.terrain b/public/terrain/19/858517/353848.terrain new file mode 100644 index 000000000..208ad32f9 Binary files /dev/null and b/public/terrain/19/858517/353848.terrain differ diff --git a/public/terrain/19/858517/353849.terrain b/public/terrain/19/858517/353849.terrain new file mode 100644 index 000000000..aff10b2d1 Binary files /dev/null and b/public/terrain/19/858517/353849.terrain differ diff --git a/public/terrain/19/858517/353850.terrain b/public/terrain/19/858517/353850.terrain new file mode 100644 index 000000000..e9e72482b Binary files /dev/null and b/public/terrain/19/858517/353850.terrain differ diff --git a/public/terrain/19/858517/353851.terrain b/public/terrain/19/858517/353851.terrain new file mode 100644 index 000000000..3ce555417 Binary files /dev/null and b/public/terrain/19/858517/353851.terrain differ diff --git a/public/terrain/19/858517/353852.terrain b/public/terrain/19/858517/353852.terrain new file mode 100644 index 000000000..1a1484735 Binary files /dev/null and b/public/terrain/19/858517/353852.terrain differ diff --git a/public/terrain/19/858517/353853.terrain b/public/terrain/19/858517/353853.terrain new file mode 100644 index 000000000..975362263 Binary files /dev/null and b/public/terrain/19/858517/353853.terrain differ diff --git a/public/terrain/19/858517/353854.terrain b/public/terrain/19/858517/353854.terrain new file mode 100644 index 000000000..5c05fa342 Binary files /dev/null and b/public/terrain/19/858517/353854.terrain differ diff --git a/public/terrain/19/858517/353855.terrain b/public/terrain/19/858517/353855.terrain new file mode 100644 index 000000000..19a8e15df Binary files /dev/null and b/public/terrain/19/858517/353855.terrain differ diff --git a/public/terrain/19/858517/353856.terrain b/public/terrain/19/858517/353856.terrain new file mode 100644 index 000000000..d7ff69bed Binary files /dev/null and b/public/terrain/19/858517/353856.terrain differ diff --git a/public/terrain/19/858517/353857.terrain b/public/terrain/19/858517/353857.terrain new file mode 100644 index 000000000..621e524b6 Binary files /dev/null and b/public/terrain/19/858517/353857.terrain differ diff --git a/public/terrain/19/858517/353858.terrain b/public/terrain/19/858517/353858.terrain new file mode 100644 index 000000000..c03d6813a Binary files /dev/null and b/public/terrain/19/858517/353858.terrain differ diff --git a/public/terrain/19/858517/353859.terrain b/public/terrain/19/858517/353859.terrain new file mode 100644 index 000000000..0d5ebd63a Binary files /dev/null and b/public/terrain/19/858517/353859.terrain differ diff --git a/public/terrain/19/858517/353860.terrain b/public/terrain/19/858517/353860.terrain new file mode 100644 index 000000000..a70d7893e Binary files /dev/null and b/public/terrain/19/858517/353860.terrain differ diff --git a/public/terrain/19/858517/353861.terrain b/public/terrain/19/858517/353861.terrain new file mode 100644 index 000000000..61c7929c6 Binary files /dev/null and b/public/terrain/19/858517/353861.terrain differ diff --git a/public/terrain/19/858517/353862.terrain b/public/terrain/19/858517/353862.terrain new file mode 100644 index 000000000..6f565ce25 Binary files /dev/null and b/public/terrain/19/858517/353862.terrain differ diff --git a/public/terrain/19/858517/353863.terrain b/public/terrain/19/858517/353863.terrain new file mode 100644 index 000000000..a298e832f Binary files /dev/null and b/public/terrain/19/858517/353863.terrain differ diff --git a/public/terrain/19/858517/353864.terrain b/public/terrain/19/858517/353864.terrain new file mode 100644 index 000000000..a074a8ce1 Binary files /dev/null and b/public/terrain/19/858517/353864.terrain differ diff --git a/public/terrain/19/858517/353865.terrain b/public/terrain/19/858517/353865.terrain new file mode 100644 index 000000000..050088710 Binary files /dev/null and b/public/terrain/19/858517/353865.terrain differ diff --git a/public/terrain/19/858517/353866.terrain b/public/terrain/19/858517/353866.terrain new file mode 100644 index 000000000..c70ab29b7 Binary files /dev/null and b/public/terrain/19/858517/353866.terrain differ diff --git a/public/terrain/19/858517/353867.terrain b/public/terrain/19/858517/353867.terrain new file mode 100644 index 000000000..e66a46e4a Binary files /dev/null and b/public/terrain/19/858517/353867.terrain differ diff --git a/public/terrain/19/858517/353868.terrain b/public/terrain/19/858517/353868.terrain new file mode 100644 index 000000000..6731568a1 Binary files /dev/null and b/public/terrain/19/858517/353868.terrain differ diff --git a/public/terrain/19/858517/353869.terrain b/public/terrain/19/858517/353869.terrain new file mode 100644 index 000000000..edb9340c4 Binary files /dev/null and b/public/terrain/19/858517/353869.terrain differ diff --git a/public/terrain/19/858517/353870.terrain b/public/terrain/19/858517/353870.terrain new file mode 100644 index 000000000..a43db4325 Binary files /dev/null and b/public/terrain/19/858517/353870.terrain differ diff --git a/public/terrain/19/858517/353871.terrain b/public/terrain/19/858517/353871.terrain new file mode 100644 index 000000000..1bc536d8a Binary files /dev/null and b/public/terrain/19/858517/353871.terrain differ diff --git a/public/terrain/19/858517/353872.terrain b/public/terrain/19/858517/353872.terrain new file mode 100644 index 000000000..b3d989704 Binary files /dev/null and b/public/terrain/19/858517/353872.terrain differ diff --git a/public/terrain/19/858517/353873.terrain b/public/terrain/19/858517/353873.terrain new file mode 100644 index 000000000..45f581e1f Binary files /dev/null and b/public/terrain/19/858517/353873.terrain differ diff --git a/public/terrain/19/858517/353874.terrain b/public/terrain/19/858517/353874.terrain new file mode 100644 index 000000000..044d4acff Binary files /dev/null and b/public/terrain/19/858517/353874.terrain differ diff --git a/public/terrain/19/858517/353875.terrain b/public/terrain/19/858517/353875.terrain new file mode 100644 index 000000000..34859ac25 Binary files /dev/null and b/public/terrain/19/858517/353875.terrain differ diff --git a/public/terrain/19/858517/353876.terrain b/public/terrain/19/858517/353876.terrain new file mode 100644 index 000000000..066cd5953 Binary files /dev/null and b/public/terrain/19/858517/353876.terrain differ diff --git a/public/terrain/19/858517/353877.terrain b/public/terrain/19/858517/353877.terrain new file mode 100644 index 000000000..878222750 Binary files /dev/null and b/public/terrain/19/858517/353877.terrain differ diff --git a/public/terrain/19/858517/353878.terrain b/public/terrain/19/858517/353878.terrain new file mode 100644 index 000000000..352711db4 Binary files /dev/null and b/public/terrain/19/858517/353878.terrain differ diff --git a/public/terrain/19/858517/353879.terrain b/public/terrain/19/858517/353879.terrain new file mode 100644 index 000000000..4117583f9 Binary files /dev/null and b/public/terrain/19/858517/353879.terrain differ diff --git a/public/terrain/19/858517/353880.terrain b/public/terrain/19/858517/353880.terrain new file mode 100644 index 000000000..a68b373fb Binary files /dev/null and b/public/terrain/19/858517/353880.terrain differ diff --git a/public/terrain/19/858517/353881.terrain b/public/terrain/19/858517/353881.terrain new file mode 100644 index 000000000..964c687ca Binary files /dev/null and b/public/terrain/19/858517/353881.terrain differ diff --git a/public/terrain/19/858517/353882.terrain b/public/terrain/19/858517/353882.terrain new file mode 100644 index 000000000..eb6011536 Binary files /dev/null and b/public/terrain/19/858517/353882.terrain differ diff --git a/public/terrain/19/858517/353883.terrain b/public/terrain/19/858517/353883.terrain new file mode 100644 index 000000000..00087805b Binary files /dev/null and b/public/terrain/19/858517/353883.terrain differ diff --git a/public/terrain/19/858517/353884.terrain b/public/terrain/19/858517/353884.terrain new file mode 100644 index 000000000..d25dcdd9a Binary files /dev/null and b/public/terrain/19/858517/353884.terrain differ diff --git a/public/terrain/19/858517/353885.terrain b/public/terrain/19/858517/353885.terrain new file mode 100644 index 000000000..3c2fcfcfa Binary files /dev/null and b/public/terrain/19/858517/353885.terrain differ diff --git a/public/terrain/19/858517/353886.terrain b/public/terrain/19/858517/353886.terrain new file mode 100644 index 000000000..a375b2871 Binary files /dev/null and b/public/terrain/19/858517/353886.terrain differ diff --git a/public/terrain/19/858517/353887.terrain b/public/terrain/19/858517/353887.terrain new file mode 100644 index 000000000..c3e203c88 Binary files /dev/null and b/public/terrain/19/858517/353887.terrain differ diff --git a/public/terrain/19/858517/353888.terrain b/public/terrain/19/858517/353888.terrain new file mode 100644 index 000000000..3c01fff56 Binary files /dev/null and b/public/terrain/19/858517/353888.terrain differ diff --git a/public/terrain/19/858517/353889.terrain b/public/terrain/19/858517/353889.terrain new file mode 100644 index 000000000..fefdbdf9b Binary files /dev/null and b/public/terrain/19/858517/353889.terrain differ diff --git a/public/terrain/19/858517/353890.terrain b/public/terrain/19/858517/353890.terrain new file mode 100644 index 000000000..d48703531 Binary files /dev/null and b/public/terrain/19/858517/353890.terrain differ diff --git a/public/terrain/19/858517/353891.terrain b/public/terrain/19/858517/353891.terrain new file mode 100644 index 000000000..40dc70361 Binary files /dev/null and b/public/terrain/19/858517/353891.terrain differ diff --git a/public/terrain/19/858517/353892.terrain b/public/terrain/19/858517/353892.terrain new file mode 100644 index 000000000..abe66b731 Binary files /dev/null and b/public/terrain/19/858517/353892.terrain differ diff --git a/public/terrain/19/858517/353893.terrain b/public/terrain/19/858517/353893.terrain new file mode 100644 index 000000000..f544d533d Binary files /dev/null and b/public/terrain/19/858517/353893.terrain differ diff --git a/public/terrain/19/858517/353894.terrain b/public/terrain/19/858517/353894.terrain new file mode 100644 index 000000000..5386ba9b1 Binary files /dev/null and b/public/terrain/19/858517/353894.terrain differ diff --git a/public/terrain/19/858517/353895.terrain b/public/terrain/19/858517/353895.terrain new file mode 100644 index 000000000..b58e79011 Binary files /dev/null and b/public/terrain/19/858517/353895.terrain differ diff --git a/public/terrain/19/858517/353896.terrain b/public/terrain/19/858517/353896.terrain new file mode 100644 index 000000000..2f8e2c7f1 Binary files /dev/null and b/public/terrain/19/858517/353896.terrain differ diff --git a/public/terrain/19/858517/353897.terrain b/public/terrain/19/858517/353897.terrain new file mode 100644 index 000000000..575d327a1 Binary files /dev/null and b/public/terrain/19/858517/353897.terrain differ diff --git a/public/terrain/19/858517/353898.terrain b/public/terrain/19/858517/353898.terrain new file mode 100644 index 000000000..e8664f649 Binary files /dev/null and b/public/terrain/19/858517/353898.terrain differ diff --git a/public/terrain/19/858517/353899.terrain b/public/terrain/19/858517/353899.terrain new file mode 100644 index 000000000..7f9b42b46 Binary files /dev/null and b/public/terrain/19/858517/353899.terrain differ diff --git a/public/terrain/19/858517/353900.terrain b/public/terrain/19/858517/353900.terrain new file mode 100644 index 000000000..469f685b5 Binary files /dev/null and b/public/terrain/19/858517/353900.terrain differ diff --git a/public/terrain/19/858517/353901.terrain b/public/terrain/19/858517/353901.terrain new file mode 100644 index 000000000..a692d7c58 Binary files /dev/null and b/public/terrain/19/858517/353901.terrain differ diff --git a/public/terrain/19/858517/353902.terrain b/public/terrain/19/858517/353902.terrain new file mode 100644 index 000000000..eb31ad6e7 Binary files /dev/null and b/public/terrain/19/858517/353902.terrain differ diff --git a/public/terrain/19/858517/353903.terrain b/public/terrain/19/858517/353903.terrain new file mode 100644 index 000000000..ea6e84fdb Binary files /dev/null and b/public/terrain/19/858517/353903.terrain differ diff --git a/public/terrain/19/858517/353904.terrain b/public/terrain/19/858517/353904.terrain new file mode 100644 index 000000000..2948eedae Binary files /dev/null and b/public/terrain/19/858517/353904.terrain differ diff --git a/public/terrain/19/858517/353905.terrain b/public/terrain/19/858517/353905.terrain new file mode 100644 index 000000000..19732b610 Binary files /dev/null and b/public/terrain/19/858517/353905.terrain differ diff --git a/public/terrain/19/858517/353906.terrain b/public/terrain/19/858517/353906.terrain new file mode 100644 index 000000000..c9df0f203 Binary files /dev/null and b/public/terrain/19/858517/353906.terrain differ diff --git a/public/terrain/19/858517/353907.terrain b/public/terrain/19/858517/353907.terrain new file mode 100644 index 000000000..a603ee1be Binary files /dev/null and b/public/terrain/19/858517/353907.terrain differ diff --git a/public/terrain/19/858517/353908.terrain b/public/terrain/19/858517/353908.terrain new file mode 100644 index 000000000..074ec0644 Binary files /dev/null and b/public/terrain/19/858517/353908.terrain differ diff --git a/public/terrain/19/858517/353909.terrain b/public/terrain/19/858517/353909.terrain new file mode 100644 index 000000000..5499e7dfd Binary files /dev/null and b/public/terrain/19/858517/353909.terrain differ diff --git a/public/terrain/19/858517/353910.terrain b/public/terrain/19/858517/353910.terrain new file mode 100644 index 000000000..c41f3cbf9 Binary files /dev/null and b/public/terrain/19/858517/353910.terrain differ diff --git a/public/terrain/19/858517/353911.terrain b/public/terrain/19/858517/353911.terrain new file mode 100644 index 000000000..df2db6ade Binary files /dev/null and b/public/terrain/19/858517/353911.terrain differ diff --git a/public/terrain/19/858517/353912.terrain b/public/terrain/19/858517/353912.terrain new file mode 100644 index 000000000..05870c31e Binary files /dev/null and b/public/terrain/19/858517/353912.terrain differ diff --git a/public/terrain/19/858517/353913.terrain b/public/terrain/19/858517/353913.terrain new file mode 100644 index 000000000..a4fbeac28 Binary files /dev/null and b/public/terrain/19/858517/353913.terrain differ diff --git a/public/terrain/19/858517/353914.terrain b/public/terrain/19/858517/353914.terrain new file mode 100644 index 000000000..5a9327417 Binary files /dev/null and b/public/terrain/19/858517/353914.terrain differ diff --git a/public/terrain/19/858517/353915.terrain b/public/terrain/19/858517/353915.terrain new file mode 100644 index 000000000..386be4117 Binary files /dev/null and b/public/terrain/19/858517/353915.terrain differ diff --git a/public/terrain/19/858517/353916.terrain b/public/terrain/19/858517/353916.terrain new file mode 100644 index 000000000..474f78e33 Binary files /dev/null and b/public/terrain/19/858517/353916.terrain differ diff --git a/public/terrain/19/858517/353917.terrain b/public/terrain/19/858517/353917.terrain new file mode 100644 index 000000000..65b269b23 Binary files /dev/null and b/public/terrain/19/858517/353917.terrain differ diff --git a/public/terrain/19/858517/353918.terrain b/public/terrain/19/858517/353918.terrain new file mode 100644 index 000000000..f61994254 Binary files /dev/null and b/public/terrain/19/858517/353918.terrain differ diff --git a/public/terrain/19/858517/353919.terrain b/public/terrain/19/858517/353919.terrain new file mode 100644 index 000000000..f8426d24e Binary files /dev/null and b/public/terrain/19/858517/353919.terrain differ diff --git a/public/terrain/19/858517/353920.terrain b/public/terrain/19/858517/353920.terrain new file mode 100644 index 000000000..4cfab6338 Binary files /dev/null and b/public/terrain/19/858517/353920.terrain differ diff --git a/public/terrain/19/858517/353921.terrain b/public/terrain/19/858517/353921.terrain new file mode 100644 index 000000000..f4d126903 Binary files /dev/null and b/public/terrain/19/858517/353921.terrain differ diff --git a/public/terrain/19/858517/353922.terrain b/public/terrain/19/858517/353922.terrain new file mode 100644 index 000000000..89a9f08a3 Binary files /dev/null and b/public/terrain/19/858517/353922.terrain differ diff --git a/public/terrain/19/858517/353923.terrain b/public/terrain/19/858517/353923.terrain new file mode 100644 index 000000000..1df3e3890 Binary files /dev/null and b/public/terrain/19/858517/353923.terrain differ diff --git a/public/terrain/19/858517/353924.terrain b/public/terrain/19/858517/353924.terrain new file mode 100644 index 000000000..d643c841e Binary files /dev/null and b/public/terrain/19/858517/353924.terrain differ diff --git a/public/terrain/19/858517/353925.terrain b/public/terrain/19/858517/353925.terrain new file mode 100644 index 000000000..deec06fe3 Binary files /dev/null and b/public/terrain/19/858517/353925.terrain differ diff --git a/public/terrain/19/858517/353926.terrain b/public/terrain/19/858517/353926.terrain new file mode 100644 index 000000000..8e21d6980 Binary files /dev/null and b/public/terrain/19/858517/353926.terrain differ diff --git a/public/terrain/19/858517/353927.terrain b/public/terrain/19/858517/353927.terrain new file mode 100644 index 000000000..6bcaba704 Binary files /dev/null and b/public/terrain/19/858517/353927.terrain differ diff --git a/public/terrain/19/858517/353928.terrain b/public/terrain/19/858517/353928.terrain new file mode 100644 index 000000000..cb5580f9a Binary files /dev/null and b/public/terrain/19/858517/353928.terrain differ diff --git a/public/terrain/19/858517/353929.terrain b/public/terrain/19/858517/353929.terrain new file mode 100644 index 000000000..b5c9e1f2b Binary files /dev/null and b/public/terrain/19/858517/353929.terrain differ diff --git a/public/terrain/19/858517/353930.terrain b/public/terrain/19/858517/353930.terrain new file mode 100644 index 000000000..324783bde Binary files /dev/null and b/public/terrain/19/858517/353930.terrain differ diff --git a/public/terrain/19/858517/353931.terrain b/public/terrain/19/858517/353931.terrain new file mode 100644 index 000000000..84059288a Binary files /dev/null and b/public/terrain/19/858517/353931.terrain differ diff --git a/public/terrain/19/858517/353932.terrain b/public/terrain/19/858517/353932.terrain new file mode 100644 index 000000000..54d414bb4 Binary files /dev/null and b/public/terrain/19/858517/353932.terrain differ diff --git a/public/terrain/19/858517/353933.terrain b/public/terrain/19/858517/353933.terrain new file mode 100644 index 000000000..5f1d62050 Binary files /dev/null and b/public/terrain/19/858517/353933.terrain differ diff --git a/public/terrain/19/858517/353934.terrain b/public/terrain/19/858517/353934.terrain new file mode 100644 index 000000000..febdee514 Binary files /dev/null and b/public/terrain/19/858517/353934.terrain differ diff --git a/public/terrain/19/858517/353935.terrain b/public/terrain/19/858517/353935.terrain new file mode 100644 index 000000000..ba90402bc Binary files /dev/null and b/public/terrain/19/858517/353935.terrain differ diff --git a/public/terrain/19/858517/353936.terrain b/public/terrain/19/858517/353936.terrain new file mode 100644 index 000000000..ef571adfa Binary files /dev/null and b/public/terrain/19/858517/353936.terrain differ diff --git a/public/terrain/19/858517/353937.terrain b/public/terrain/19/858517/353937.terrain new file mode 100644 index 000000000..43f620609 Binary files /dev/null and b/public/terrain/19/858517/353937.terrain differ diff --git a/public/terrain/19/858517/353938.terrain b/public/terrain/19/858517/353938.terrain new file mode 100644 index 000000000..ea5fe9d54 Binary files /dev/null and b/public/terrain/19/858517/353938.terrain differ diff --git a/public/terrain/19/858517/353939.terrain b/public/terrain/19/858517/353939.terrain new file mode 100644 index 000000000..7e4c45b66 Binary files /dev/null and b/public/terrain/19/858517/353939.terrain differ diff --git a/public/terrain/19/858517/353940.terrain b/public/terrain/19/858517/353940.terrain new file mode 100644 index 000000000..2ab7e1443 Binary files /dev/null and b/public/terrain/19/858517/353940.terrain differ diff --git a/public/terrain/19/858517/353941.terrain b/public/terrain/19/858517/353941.terrain new file mode 100644 index 000000000..09a28d691 Binary files /dev/null and b/public/terrain/19/858517/353941.terrain differ diff --git a/public/terrain/19/858517/353942.terrain b/public/terrain/19/858517/353942.terrain new file mode 100644 index 000000000..9d31f08db Binary files /dev/null and b/public/terrain/19/858517/353942.terrain differ diff --git a/public/terrain/19/858517/353943.terrain b/public/terrain/19/858517/353943.terrain new file mode 100644 index 000000000..0a890aa35 Binary files /dev/null and b/public/terrain/19/858517/353943.terrain differ diff --git a/public/terrain/19/858517/353944.terrain b/public/terrain/19/858517/353944.terrain new file mode 100644 index 000000000..6263be8bf Binary files /dev/null and b/public/terrain/19/858517/353944.terrain differ diff --git a/public/terrain/19/858517/353945.terrain b/public/terrain/19/858517/353945.terrain new file mode 100644 index 000000000..d2cb12509 Binary files /dev/null and b/public/terrain/19/858517/353945.terrain differ diff --git a/public/terrain/19/858517/353946.terrain b/public/terrain/19/858517/353946.terrain new file mode 100644 index 000000000..a9178c0b6 Binary files /dev/null and b/public/terrain/19/858517/353946.terrain differ diff --git a/public/terrain/19/858517/353947.terrain b/public/terrain/19/858517/353947.terrain new file mode 100644 index 000000000..72e5e66c8 Binary files /dev/null and b/public/terrain/19/858517/353947.terrain differ diff --git a/public/terrain/19/858517/353948.terrain b/public/terrain/19/858517/353948.terrain new file mode 100644 index 000000000..370c98dd9 Binary files /dev/null and b/public/terrain/19/858517/353948.terrain differ diff --git a/public/terrain/19/858517/353949.terrain b/public/terrain/19/858517/353949.terrain new file mode 100644 index 000000000..eeff8ba94 Binary files /dev/null and b/public/terrain/19/858517/353949.terrain differ diff --git a/public/terrain/19/858517/353950.terrain b/public/terrain/19/858517/353950.terrain new file mode 100644 index 000000000..ed913377d Binary files /dev/null and b/public/terrain/19/858517/353950.terrain differ diff --git a/public/terrain/19/858517/353951.terrain b/public/terrain/19/858517/353951.terrain new file mode 100644 index 000000000..5dc0c59a6 Binary files /dev/null and b/public/terrain/19/858517/353951.terrain differ diff --git a/public/terrain/19/858517/353952.terrain b/public/terrain/19/858517/353952.terrain new file mode 100644 index 000000000..62c340446 Binary files /dev/null and b/public/terrain/19/858517/353952.terrain differ diff --git a/public/terrain/19/858517/353953.terrain b/public/terrain/19/858517/353953.terrain new file mode 100644 index 000000000..cb7ee15eb Binary files /dev/null and b/public/terrain/19/858517/353953.terrain differ diff --git a/public/terrain/19/858517/353954.terrain b/public/terrain/19/858517/353954.terrain new file mode 100644 index 000000000..5aae31225 Binary files /dev/null and b/public/terrain/19/858517/353954.terrain differ diff --git a/public/terrain/19/858517/353955.terrain b/public/terrain/19/858517/353955.terrain new file mode 100644 index 000000000..1ba0603f9 Binary files /dev/null and b/public/terrain/19/858517/353955.terrain differ diff --git a/public/terrain/19/858517/353956.terrain b/public/terrain/19/858517/353956.terrain new file mode 100644 index 000000000..eee3219f4 Binary files /dev/null and b/public/terrain/19/858517/353956.terrain differ diff --git a/public/terrain/19/858517/353957.terrain b/public/terrain/19/858517/353957.terrain new file mode 100644 index 000000000..ce7644211 Binary files /dev/null and b/public/terrain/19/858517/353957.terrain differ diff --git a/public/terrain/19/858517/353958.terrain b/public/terrain/19/858517/353958.terrain new file mode 100644 index 000000000..a0b8d3822 Binary files /dev/null and b/public/terrain/19/858517/353958.terrain differ diff --git a/public/terrain/19/858517/353959.terrain b/public/terrain/19/858517/353959.terrain new file mode 100644 index 000000000..3b3604042 Binary files /dev/null and b/public/terrain/19/858517/353959.terrain differ diff --git a/public/terrain/19/858517/353960.terrain b/public/terrain/19/858517/353960.terrain new file mode 100644 index 000000000..e6c95f8e8 Binary files /dev/null and b/public/terrain/19/858517/353960.terrain differ diff --git a/public/terrain/19/858517/353961.terrain b/public/terrain/19/858517/353961.terrain new file mode 100644 index 000000000..0b17eba50 Binary files /dev/null and b/public/terrain/19/858517/353961.terrain differ diff --git a/public/terrain/19/858517/353962.terrain b/public/terrain/19/858517/353962.terrain new file mode 100644 index 000000000..e8c16bb1a Binary files /dev/null and b/public/terrain/19/858517/353962.terrain differ diff --git a/public/terrain/19/858517/353963.terrain b/public/terrain/19/858517/353963.terrain new file mode 100644 index 000000000..224c6fe83 Binary files /dev/null and b/public/terrain/19/858517/353963.terrain differ diff --git a/public/terrain/19/858517/353964.terrain b/public/terrain/19/858517/353964.terrain new file mode 100644 index 000000000..ec074c890 Binary files /dev/null and b/public/terrain/19/858517/353964.terrain differ diff --git a/public/terrain/19/858517/353965.terrain b/public/terrain/19/858517/353965.terrain new file mode 100644 index 000000000..fb2727a29 Binary files /dev/null and b/public/terrain/19/858517/353965.terrain differ diff --git a/public/terrain/19/858517/353966.terrain b/public/terrain/19/858517/353966.terrain new file mode 100644 index 000000000..e2990011c Binary files /dev/null and b/public/terrain/19/858517/353966.terrain differ diff --git a/public/terrain/19/858517/353967.terrain b/public/terrain/19/858517/353967.terrain new file mode 100644 index 000000000..1054cd6e3 Binary files /dev/null and b/public/terrain/19/858517/353967.terrain differ diff --git a/public/terrain/19/858517/353968.terrain b/public/terrain/19/858517/353968.terrain new file mode 100644 index 000000000..4f00ea878 Binary files /dev/null and b/public/terrain/19/858517/353968.terrain differ diff --git a/public/terrain/19/858517/353969.terrain b/public/terrain/19/858517/353969.terrain new file mode 100644 index 000000000..59543e535 Binary files /dev/null and b/public/terrain/19/858517/353969.terrain differ diff --git a/public/terrain/19/858517/353970.terrain b/public/terrain/19/858517/353970.terrain new file mode 100644 index 000000000..c47a2549c Binary files /dev/null and b/public/terrain/19/858517/353970.terrain differ diff --git a/public/terrain/19/858517/353971.terrain b/public/terrain/19/858517/353971.terrain new file mode 100644 index 000000000..06aa23d79 Binary files /dev/null and b/public/terrain/19/858517/353971.terrain differ diff --git a/public/terrain/19/858517/353972.terrain b/public/terrain/19/858517/353972.terrain new file mode 100644 index 000000000..b54d25fa0 Binary files /dev/null and b/public/terrain/19/858517/353972.terrain differ diff --git a/public/terrain/19/858517/353973.terrain b/public/terrain/19/858517/353973.terrain new file mode 100644 index 000000000..4dfc0345c Binary files /dev/null and b/public/terrain/19/858517/353973.terrain differ diff --git a/public/terrain/19/858517/353974.terrain b/public/terrain/19/858517/353974.terrain new file mode 100644 index 000000000..8966557d8 Binary files /dev/null and b/public/terrain/19/858517/353974.terrain differ diff --git a/public/terrain/19/858517/353975.terrain b/public/terrain/19/858517/353975.terrain new file mode 100644 index 000000000..0cb296897 Binary files /dev/null and b/public/terrain/19/858517/353975.terrain differ diff --git a/public/terrain/19/858517/353976.terrain b/public/terrain/19/858517/353976.terrain new file mode 100644 index 000000000..480d800b5 Binary files /dev/null and b/public/terrain/19/858517/353976.terrain differ diff --git a/public/terrain/19/858517/353977.terrain b/public/terrain/19/858517/353977.terrain new file mode 100644 index 000000000..382bd41f4 Binary files /dev/null and b/public/terrain/19/858517/353977.terrain differ diff --git a/public/terrain/19/858517/353978.terrain b/public/terrain/19/858517/353978.terrain new file mode 100644 index 000000000..3e18d066f Binary files /dev/null and b/public/terrain/19/858517/353978.terrain differ diff --git a/public/terrain/19/858517/353979.terrain b/public/terrain/19/858517/353979.terrain new file mode 100644 index 000000000..9f9fc47fb Binary files /dev/null and b/public/terrain/19/858517/353979.terrain differ diff --git a/public/terrain/19/858517/353980.terrain b/public/terrain/19/858517/353980.terrain new file mode 100644 index 000000000..8c227f28f Binary files /dev/null and b/public/terrain/19/858517/353980.terrain differ diff --git a/public/terrain/19/858517/353981.terrain b/public/terrain/19/858517/353981.terrain new file mode 100644 index 000000000..fa93f7d45 Binary files /dev/null and b/public/terrain/19/858517/353981.terrain differ diff --git a/public/terrain/19/858517/353982.terrain b/public/terrain/19/858517/353982.terrain new file mode 100644 index 000000000..1cdc70753 Binary files /dev/null and b/public/terrain/19/858517/353982.terrain differ diff --git a/public/terrain/19/858517/353983.terrain b/public/terrain/19/858517/353983.terrain new file mode 100644 index 000000000..a299acbfb Binary files /dev/null and b/public/terrain/19/858517/353983.terrain differ diff --git a/public/terrain/19/858517/353984.terrain b/public/terrain/19/858517/353984.terrain new file mode 100644 index 000000000..17db03998 Binary files /dev/null and b/public/terrain/19/858517/353984.terrain differ diff --git a/public/terrain/19/858517/353985.terrain b/public/terrain/19/858517/353985.terrain new file mode 100644 index 000000000..79bb21b1e Binary files /dev/null and b/public/terrain/19/858517/353985.terrain differ diff --git a/public/terrain/19/858517/353986.terrain b/public/terrain/19/858517/353986.terrain new file mode 100644 index 000000000..4e7c915e5 Binary files /dev/null and b/public/terrain/19/858517/353986.terrain differ diff --git a/public/terrain/19/858517/353987.terrain b/public/terrain/19/858517/353987.terrain new file mode 100644 index 000000000..8885b4faf Binary files /dev/null and b/public/terrain/19/858517/353987.terrain differ diff --git a/public/terrain/19/858517/353988.terrain b/public/terrain/19/858517/353988.terrain new file mode 100644 index 000000000..317c0adb6 Binary files /dev/null and b/public/terrain/19/858517/353988.terrain differ diff --git a/public/terrain/19/858517/353989.terrain b/public/terrain/19/858517/353989.terrain new file mode 100644 index 000000000..9a9cd12ce Binary files /dev/null and b/public/terrain/19/858517/353989.terrain differ diff --git a/public/terrain/19/858517/353990.terrain b/public/terrain/19/858517/353990.terrain new file mode 100644 index 000000000..04279d832 Binary files /dev/null and b/public/terrain/19/858517/353990.terrain differ diff --git a/public/terrain/19/858517/353991.terrain b/public/terrain/19/858517/353991.terrain new file mode 100644 index 000000000..cbb9acc30 Binary files /dev/null and b/public/terrain/19/858517/353991.terrain differ diff --git a/public/terrain/19/858517/353992.terrain b/public/terrain/19/858517/353992.terrain new file mode 100644 index 000000000..8b727dc36 Binary files /dev/null and b/public/terrain/19/858517/353992.terrain differ diff --git a/public/terrain/19/858517/353993.terrain b/public/terrain/19/858517/353993.terrain new file mode 100644 index 000000000..333561216 Binary files /dev/null and b/public/terrain/19/858517/353993.terrain differ diff --git a/public/terrain/19/858517/353994.terrain b/public/terrain/19/858517/353994.terrain new file mode 100644 index 000000000..3c8577b62 Binary files /dev/null and b/public/terrain/19/858517/353994.terrain differ diff --git a/public/terrain/19/858517/353995.terrain b/public/terrain/19/858517/353995.terrain new file mode 100644 index 000000000..5210da41b Binary files /dev/null and b/public/terrain/19/858517/353995.terrain differ diff --git a/public/terrain/19/858517/353996.terrain b/public/terrain/19/858517/353996.terrain new file mode 100644 index 000000000..ba70651fd Binary files /dev/null and b/public/terrain/19/858517/353996.terrain differ diff --git a/public/terrain/19/858517/353997.terrain b/public/terrain/19/858517/353997.terrain new file mode 100644 index 000000000..fd639d293 Binary files /dev/null and b/public/terrain/19/858517/353997.terrain differ diff --git a/public/terrain/19/858517/353998.terrain b/public/terrain/19/858517/353998.terrain new file mode 100644 index 000000000..e8a0d0913 Binary files /dev/null and b/public/terrain/19/858517/353998.terrain differ diff --git a/public/terrain/19/858517/353999.terrain b/public/terrain/19/858517/353999.terrain new file mode 100644 index 000000000..f74b5d7cb Binary files /dev/null and b/public/terrain/19/858517/353999.terrain differ diff --git a/public/terrain/19/858517/354000.terrain b/public/terrain/19/858517/354000.terrain new file mode 100644 index 000000000..0c94fbcb8 Binary files /dev/null and b/public/terrain/19/858517/354000.terrain differ diff --git a/public/terrain/19/858517/354001.terrain b/public/terrain/19/858517/354001.terrain new file mode 100644 index 000000000..c1477df8a Binary files /dev/null and b/public/terrain/19/858517/354001.terrain differ diff --git a/public/terrain/19/858517/354002.terrain b/public/terrain/19/858517/354002.terrain new file mode 100644 index 000000000..bb4007613 Binary files /dev/null and b/public/terrain/19/858517/354002.terrain differ diff --git a/public/terrain/19/858517/354003.terrain b/public/terrain/19/858517/354003.terrain new file mode 100644 index 000000000..3316461e9 Binary files /dev/null and b/public/terrain/19/858517/354003.terrain differ diff --git a/public/terrain/19/858517/354004.terrain b/public/terrain/19/858517/354004.terrain new file mode 100644 index 000000000..7cb11b369 Binary files /dev/null and b/public/terrain/19/858517/354004.terrain differ diff --git a/public/terrain/19/858517/354005.terrain b/public/terrain/19/858517/354005.terrain new file mode 100644 index 000000000..887276f66 Binary files /dev/null and b/public/terrain/19/858517/354005.terrain differ diff --git a/public/terrain/19/858517/354006.terrain b/public/terrain/19/858517/354006.terrain new file mode 100644 index 000000000..398c03eaf Binary files /dev/null and b/public/terrain/19/858517/354006.terrain differ diff --git a/public/terrain/19/858517/354007.terrain b/public/terrain/19/858517/354007.terrain new file mode 100644 index 000000000..cc369291a Binary files /dev/null and b/public/terrain/19/858517/354007.terrain differ diff --git a/public/terrain/19/858517/354008.terrain b/public/terrain/19/858517/354008.terrain new file mode 100644 index 000000000..766baef83 Binary files /dev/null and b/public/terrain/19/858517/354008.terrain differ diff --git a/public/terrain/19/858517/354009.terrain b/public/terrain/19/858517/354009.terrain new file mode 100644 index 000000000..7e6bbfe93 Binary files /dev/null and b/public/terrain/19/858517/354009.terrain differ diff --git a/public/terrain/19/858517/354010.terrain b/public/terrain/19/858517/354010.terrain new file mode 100644 index 000000000..54aac2f9d Binary files /dev/null and b/public/terrain/19/858517/354010.terrain differ diff --git a/public/terrain/19/858517/354011.terrain b/public/terrain/19/858517/354011.terrain new file mode 100644 index 000000000..4daeffd5c Binary files /dev/null and b/public/terrain/19/858517/354011.terrain differ diff --git a/public/terrain/19/858517/354012.terrain b/public/terrain/19/858517/354012.terrain new file mode 100644 index 000000000..82175b596 Binary files /dev/null and b/public/terrain/19/858517/354012.terrain differ diff --git a/public/terrain/19/858517/354013.terrain b/public/terrain/19/858517/354013.terrain new file mode 100644 index 000000000..1e4a8c3bb Binary files /dev/null and b/public/terrain/19/858517/354013.terrain differ diff --git a/public/terrain/19/858517/354014.terrain b/public/terrain/19/858517/354014.terrain new file mode 100644 index 000000000..d2200cb9d Binary files /dev/null and b/public/terrain/19/858517/354014.terrain differ diff --git a/public/terrain/19/858517/354015.terrain b/public/terrain/19/858517/354015.terrain new file mode 100644 index 000000000..c88b9b6d0 Binary files /dev/null and b/public/terrain/19/858517/354015.terrain differ diff --git a/public/terrain/19/858517/354016.terrain b/public/terrain/19/858517/354016.terrain new file mode 100644 index 000000000..0acc4fa46 Binary files /dev/null and b/public/terrain/19/858517/354016.terrain differ diff --git a/public/terrain/19/858517/354017.terrain b/public/terrain/19/858517/354017.terrain new file mode 100644 index 000000000..265deae0f Binary files /dev/null and b/public/terrain/19/858517/354017.terrain differ diff --git a/public/terrain/19/858517/354018.terrain b/public/terrain/19/858517/354018.terrain new file mode 100644 index 000000000..37b4b7501 Binary files /dev/null and b/public/terrain/19/858517/354018.terrain differ diff --git a/public/terrain/19/858517/354019.terrain b/public/terrain/19/858517/354019.terrain new file mode 100644 index 000000000..d6087e30b Binary files /dev/null and b/public/terrain/19/858517/354019.terrain differ diff --git a/public/terrain/19/858517/354020.terrain b/public/terrain/19/858517/354020.terrain new file mode 100644 index 000000000..8b746eca2 Binary files /dev/null and b/public/terrain/19/858517/354020.terrain differ diff --git a/public/terrain/19/858517/354021.terrain b/public/terrain/19/858517/354021.terrain new file mode 100644 index 000000000..0f7324861 Binary files /dev/null and b/public/terrain/19/858517/354021.terrain differ diff --git a/public/terrain/19/858517/354022.terrain b/public/terrain/19/858517/354022.terrain new file mode 100644 index 000000000..91fd50026 Binary files /dev/null and b/public/terrain/19/858517/354022.terrain differ diff --git a/public/terrain/19/858517/354023.terrain b/public/terrain/19/858517/354023.terrain new file mode 100644 index 000000000..47c7266bd Binary files /dev/null and b/public/terrain/19/858517/354023.terrain differ diff --git a/public/terrain/19/858517/354024.terrain b/public/terrain/19/858517/354024.terrain new file mode 100644 index 000000000..50ab40a2f Binary files /dev/null and b/public/terrain/19/858517/354024.terrain differ diff --git a/public/terrain/19/858517/354025.terrain b/public/terrain/19/858517/354025.terrain new file mode 100644 index 000000000..0e7e61e2e Binary files /dev/null and b/public/terrain/19/858517/354025.terrain differ diff --git a/public/terrain/19/858517/354026.terrain b/public/terrain/19/858517/354026.terrain new file mode 100644 index 000000000..820d94a3a Binary files /dev/null and b/public/terrain/19/858517/354026.terrain differ diff --git a/public/terrain/19/858517/354027.terrain b/public/terrain/19/858517/354027.terrain new file mode 100644 index 000000000..a9f14d27c Binary files /dev/null and b/public/terrain/19/858517/354027.terrain differ diff --git a/public/terrain/19/858517/354028.terrain b/public/terrain/19/858517/354028.terrain new file mode 100644 index 000000000..665055563 Binary files /dev/null and b/public/terrain/19/858517/354028.terrain differ diff --git a/public/terrain/19/858517/354029.terrain b/public/terrain/19/858517/354029.terrain new file mode 100644 index 000000000..735f51065 Binary files /dev/null and b/public/terrain/19/858517/354029.terrain differ diff --git a/public/terrain/19/858517/354030.terrain b/public/terrain/19/858517/354030.terrain new file mode 100644 index 000000000..fb4570330 Binary files /dev/null and b/public/terrain/19/858517/354030.terrain differ diff --git a/public/terrain/19/858517/354031.terrain b/public/terrain/19/858517/354031.terrain new file mode 100644 index 000000000..70e9b5e95 Binary files /dev/null and b/public/terrain/19/858517/354031.terrain differ diff --git a/public/terrain/19/858517/354032.terrain b/public/terrain/19/858517/354032.terrain new file mode 100644 index 000000000..50d6c9bd9 Binary files /dev/null and b/public/terrain/19/858517/354032.terrain differ diff --git a/public/terrain/19/858517/354033.terrain b/public/terrain/19/858517/354033.terrain new file mode 100644 index 000000000..80b005287 Binary files /dev/null and b/public/terrain/19/858517/354033.terrain differ diff --git a/public/terrain/19/858517/354034.terrain b/public/terrain/19/858517/354034.terrain new file mode 100644 index 000000000..490fe0e83 Binary files /dev/null and b/public/terrain/19/858517/354034.terrain differ diff --git a/public/terrain/19/858517/354035.terrain b/public/terrain/19/858517/354035.terrain new file mode 100644 index 000000000..b8cf5f43a Binary files /dev/null and b/public/terrain/19/858517/354035.terrain differ diff --git a/public/terrain/19/858517/354036.terrain b/public/terrain/19/858517/354036.terrain new file mode 100644 index 000000000..9ad7879ed Binary files /dev/null and b/public/terrain/19/858517/354036.terrain differ diff --git a/public/terrain/19/858517/354037.terrain b/public/terrain/19/858517/354037.terrain new file mode 100644 index 000000000..3741539ae Binary files /dev/null and b/public/terrain/19/858517/354037.terrain differ diff --git a/public/terrain/19/858517/354038.terrain b/public/terrain/19/858517/354038.terrain new file mode 100644 index 000000000..1a6528def Binary files /dev/null and b/public/terrain/19/858517/354038.terrain differ diff --git a/public/terrain/19/858517/354039.terrain b/public/terrain/19/858517/354039.terrain new file mode 100644 index 000000000..2f2278db7 Binary files /dev/null and b/public/terrain/19/858517/354039.terrain differ diff --git a/public/terrain/19/858517/354040.terrain b/public/terrain/19/858517/354040.terrain new file mode 100644 index 000000000..429b242a8 Binary files /dev/null and b/public/terrain/19/858517/354040.terrain differ diff --git a/public/terrain/19/858517/354041.terrain b/public/terrain/19/858517/354041.terrain new file mode 100644 index 000000000..612a1f69b Binary files /dev/null and b/public/terrain/19/858517/354041.terrain differ diff --git a/public/terrain/19/858517/354042.terrain b/public/terrain/19/858517/354042.terrain new file mode 100644 index 000000000..4e384c842 Binary files /dev/null and b/public/terrain/19/858517/354042.terrain differ diff --git a/public/terrain/19/858517/354043.terrain b/public/terrain/19/858517/354043.terrain new file mode 100644 index 000000000..94bb20990 Binary files /dev/null and b/public/terrain/19/858517/354043.terrain differ diff --git a/public/terrain/19/858517/354044.terrain b/public/terrain/19/858517/354044.terrain new file mode 100644 index 000000000..fb816cbbc Binary files /dev/null and b/public/terrain/19/858517/354044.terrain differ diff --git a/public/terrain/19/858517/354045.terrain b/public/terrain/19/858517/354045.terrain new file mode 100644 index 000000000..3bbabaf15 Binary files /dev/null and b/public/terrain/19/858517/354045.terrain differ diff --git a/public/terrain/19/858517/354046.terrain b/public/terrain/19/858517/354046.terrain new file mode 100644 index 000000000..0dbb90d6e Binary files /dev/null and b/public/terrain/19/858517/354046.terrain differ diff --git a/public/terrain/19/858517/354047.terrain b/public/terrain/19/858517/354047.terrain new file mode 100644 index 000000000..627b8d463 Binary files /dev/null and b/public/terrain/19/858517/354047.terrain differ diff --git a/public/terrain/19/858517/354048.terrain b/public/terrain/19/858517/354048.terrain new file mode 100644 index 000000000..391910bc0 Binary files /dev/null and b/public/terrain/19/858517/354048.terrain differ diff --git a/public/terrain/19/858517/354049.terrain b/public/terrain/19/858517/354049.terrain new file mode 100644 index 000000000..7d720555c Binary files /dev/null and b/public/terrain/19/858517/354049.terrain differ diff --git a/public/terrain/19/858517/354050.terrain b/public/terrain/19/858517/354050.terrain new file mode 100644 index 000000000..0df593513 Binary files /dev/null and b/public/terrain/19/858517/354050.terrain differ diff --git a/public/terrain/19/858517/354051.terrain b/public/terrain/19/858517/354051.terrain new file mode 100644 index 000000000..cdca43be2 Binary files /dev/null and b/public/terrain/19/858517/354051.terrain differ diff --git a/public/terrain/19/858517/354052.terrain b/public/terrain/19/858517/354052.terrain new file mode 100644 index 000000000..ee496bfd5 Binary files /dev/null and b/public/terrain/19/858517/354052.terrain differ diff --git a/public/terrain/19/858517/354053.terrain b/public/terrain/19/858517/354053.terrain new file mode 100644 index 000000000..282c1cabb Binary files /dev/null and b/public/terrain/19/858517/354053.terrain differ diff --git a/public/terrain/19/858517/354054.terrain b/public/terrain/19/858517/354054.terrain new file mode 100644 index 000000000..097f9f9a4 Binary files /dev/null and b/public/terrain/19/858517/354054.terrain differ diff --git a/public/terrain/19/858517/354055.terrain b/public/terrain/19/858517/354055.terrain new file mode 100644 index 000000000..27fc7298f Binary files /dev/null and b/public/terrain/19/858517/354055.terrain differ diff --git a/public/terrain/19/858517/354056.terrain b/public/terrain/19/858517/354056.terrain new file mode 100644 index 000000000..342d5e80c Binary files /dev/null and b/public/terrain/19/858517/354056.terrain differ diff --git a/public/terrain/19/858517/354057.terrain b/public/terrain/19/858517/354057.terrain new file mode 100644 index 000000000..a8ba64795 Binary files /dev/null and b/public/terrain/19/858517/354057.terrain differ diff --git a/public/terrain/19/858517/354058.terrain b/public/terrain/19/858517/354058.terrain new file mode 100644 index 000000000..63b906300 Binary files /dev/null and b/public/terrain/19/858517/354058.terrain differ diff --git a/public/terrain/19/858517/354059.terrain b/public/terrain/19/858517/354059.terrain new file mode 100644 index 000000000..d4542fb22 Binary files /dev/null and b/public/terrain/19/858517/354059.terrain differ diff --git a/public/terrain/19/858518/353743.terrain b/public/terrain/19/858518/353743.terrain new file mode 100644 index 000000000..de363cca1 Binary files /dev/null and b/public/terrain/19/858518/353743.terrain differ diff --git a/public/terrain/19/858518/353744.terrain b/public/terrain/19/858518/353744.terrain new file mode 100644 index 000000000..78dc5ea57 Binary files /dev/null and b/public/terrain/19/858518/353744.terrain differ diff --git a/public/terrain/19/858518/353745.terrain b/public/terrain/19/858518/353745.terrain new file mode 100644 index 000000000..db856fbc9 Binary files /dev/null and b/public/terrain/19/858518/353745.terrain differ diff --git a/public/terrain/19/858518/353746.terrain b/public/terrain/19/858518/353746.terrain new file mode 100644 index 000000000..431148bcb Binary files /dev/null and b/public/terrain/19/858518/353746.terrain differ diff --git a/public/terrain/19/858518/353747.terrain b/public/terrain/19/858518/353747.terrain new file mode 100644 index 000000000..ac8f6b1b8 Binary files /dev/null and b/public/terrain/19/858518/353747.terrain differ diff --git a/public/terrain/19/858518/353748.terrain b/public/terrain/19/858518/353748.terrain new file mode 100644 index 000000000..1f22a36d6 Binary files /dev/null and b/public/terrain/19/858518/353748.terrain differ diff --git a/public/terrain/19/858518/353749.terrain b/public/terrain/19/858518/353749.terrain new file mode 100644 index 000000000..cc3f63d67 Binary files /dev/null and b/public/terrain/19/858518/353749.terrain differ diff --git a/public/terrain/19/858518/353750.terrain b/public/terrain/19/858518/353750.terrain new file mode 100644 index 000000000..ba8d316b7 Binary files /dev/null and b/public/terrain/19/858518/353750.terrain differ diff --git a/public/terrain/19/858518/353751.terrain b/public/terrain/19/858518/353751.terrain new file mode 100644 index 000000000..e6f35042f Binary files /dev/null and b/public/terrain/19/858518/353751.terrain differ diff --git a/public/terrain/19/858518/353752.terrain b/public/terrain/19/858518/353752.terrain new file mode 100644 index 000000000..6f10cfb92 Binary files /dev/null and b/public/terrain/19/858518/353752.terrain differ diff --git a/public/terrain/19/858518/353753.terrain b/public/terrain/19/858518/353753.terrain new file mode 100644 index 000000000..b3f57652c Binary files /dev/null and b/public/terrain/19/858518/353753.terrain differ diff --git a/public/terrain/19/858518/353754.terrain b/public/terrain/19/858518/353754.terrain new file mode 100644 index 000000000..a35b50d06 Binary files /dev/null and b/public/terrain/19/858518/353754.terrain differ diff --git a/public/terrain/19/858518/353755.terrain b/public/terrain/19/858518/353755.terrain new file mode 100644 index 000000000..be9f28fac Binary files /dev/null and b/public/terrain/19/858518/353755.terrain differ diff --git a/public/terrain/19/858518/353756.terrain b/public/terrain/19/858518/353756.terrain new file mode 100644 index 000000000..a28abb28d Binary files /dev/null and b/public/terrain/19/858518/353756.terrain differ diff --git a/public/terrain/19/858518/353757.terrain b/public/terrain/19/858518/353757.terrain new file mode 100644 index 000000000..c1d03c2dc Binary files /dev/null and b/public/terrain/19/858518/353757.terrain differ diff --git a/public/terrain/19/858518/353758.terrain b/public/terrain/19/858518/353758.terrain new file mode 100644 index 000000000..94a7da944 Binary files /dev/null and b/public/terrain/19/858518/353758.terrain differ diff --git a/public/terrain/19/858518/353759.terrain b/public/terrain/19/858518/353759.terrain new file mode 100644 index 000000000..da06eb9e2 Binary files /dev/null and b/public/terrain/19/858518/353759.terrain differ diff --git a/public/terrain/19/858518/353760.terrain b/public/terrain/19/858518/353760.terrain new file mode 100644 index 000000000..bb770c5d6 Binary files /dev/null and b/public/terrain/19/858518/353760.terrain differ diff --git a/public/terrain/19/858518/353761.terrain b/public/terrain/19/858518/353761.terrain new file mode 100644 index 000000000..01404acd3 Binary files /dev/null and b/public/terrain/19/858518/353761.terrain differ diff --git a/public/terrain/19/858518/353762.terrain b/public/terrain/19/858518/353762.terrain new file mode 100644 index 000000000..0f80a60df Binary files /dev/null and b/public/terrain/19/858518/353762.terrain differ diff --git a/public/terrain/19/858518/353763.terrain b/public/terrain/19/858518/353763.terrain new file mode 100644 index 000000000..e6f9a5d2a Binary files /dev/null and b/public/terrain/19/858518/353763.terrain differ diff --git a/public/terrain/19/858518/353764.terrain b/public/terrain/19/858518/353764.terrain new file mode 100644 index 000000000..f659dadf5 Binary files /dev/null and b/public/terrain/19/858518/353764.terrain differ diff --git a/public/terrain/19/858518/353765.terrain b/public/terrain/19/858518/353765.terrain new file mode 100644 index 000000000..6a1888384 Binary files /dev/null and b/public/terrain/19/858518/353765.terrain differ diff --git a/public/terrain/19/858518/353766.terrain b/public/terrain/19/858518/353766.terrain new file mode 100644 index 000000000..0f3016b5a Binary files /dev/null and b/public/terrain/19/858518/353766.terrain differ diff --git a/public/terrain/19/858518/353767.terrain b/public/terrain/19/858518/353767.terrain new file mode 100644 index 000000000..8dbd526b9 Binary files /dev/null and b/public/terrain/19/858518/353767.terrain differ diff --git a/public/terrain/19/858518/353768.terrain b/public/terrain/19/858518/353768.terrain new file mode 100644 index 000000000..10f3eba49 Binary files /dev/null and b/public/terrain/19/858518/353768.terrain differ diff --git a/public/terrain/19/858518/353769.terrain b/public/terrain/19/858518/353769.terrain new file mode 100644 index 000000000..a9c83c79b Binary files /dev/null and b/public/terrain/19/858518/353769.terrain differ diff --git a/public/terrain/19/858518/353770.terrain b/public/terrain/19/858518/353770.terrain new file mode 100644 index 000000000..7bef03ba3 Binary files /dev/null and b/public/terrain/19/858518/353770.terrain differ diff --git a/public/terrain/19/858518/353771.terrain b/public/terrain/19/858518/353771.terrain new file mode 100644 index 000000000..bec1180b4 Binary files /dev/null and b/public/terrain/19/858518/353771.terrain differ diff --git a/public/terrain/19/858518/353772.terrain b/public/terrain/19/858518/353772.terrain new file mode 100644 index 000000000..608260df6 Binary files /dev/null and b/public/terrain/19/858518/353772.terrain differ diff --git a/public/terrain/19/858518/353773.terrain b/public/terrain/19/858518/353773.terrain new file mode 100644 index 000000000..c9ee4bc1a Binary files /dev/null and b/public/terrain/19/858518/353773.terrain differ diff --git a/public/terrain/19/858518/353774.terrain b/public/terrain/19/858518/353774.terrain new file mode 100644 index 000000000..0fe88a9da Binary files /dev/null and b/public/terrain/19/858518/353774.terrain differ diff --git a/public/terrain/19/858518/353775.terrain b/public/terrain/19/858518/353775.terrain new file mode 100644 index 000000000..ec5d2a7a6 Binary files /dev/null and b/public/terrain/19/858518/353775.terrain differ diff --git a/public/terrain/19/858518/353776.terrain b/public/terrain/19/858518/353776.terrain new file mode 100644 index 000000000..649d6aa76 Binary files /dev/null and b/public/terrain/19/858518/353776.terrain differ diff --git a/public/terrain/19/858518/353777.terrain b/public/terrain/19/858518/353777.terrain new file mode 100644 index 000000000..aeee84ebc Binary files /dev/null and b/public/terrain/19/858518/353777.terrain differ diff --git a/public/terrain/19/858518/353778.terrain b/public/terrain/19/858518/353778.terrain new file mode 100644 index 000000000..72fd9898f Binary files /dev/null and b/public/terrain/19/858518/353778.terrain differ diff --git a/public/terrain/19/858518/353779.terrain b/public/terrain/19/858518/353779.terrain new file mode 100644 index 000000000..fd9320fe2 Binary files /dev/null and b/public/terrain/19/858518/353779.terrain differ diff --git a/public/terrain/19/858518/353780.terrain b/public/terrain/19/858518/353780.terrain new file mode 100644 index 000000000..d2f52451b Binary files /dev/null and b/public/terrain/19/858518/353780.terrain differ diff --git a/public/terrain/19/858518/353781.terrain b/public/terrain/19/858518/353781.terrain new file mode 100644 index 000000000..547d91938 Binary files /dev/null and b/public/terrain/19/858518/353781.terrain differ diff --git a/public/terrain/19/858518/353782.terrain b/public/terrain/19/858518/353782.terrain new file mode 100644 index 000000000..d977d7b74 Binary files /dev/null and b/public/terrain/19/858518/353782.terrain differ diff --git a/public/terrain/19/858518/353783.terrain b/public/terrain/19/858518/353783.terrain new file mode 100644 index 000000000..2bce256b9 Binary files /dev/null and b/public/terrain/19/858518/353783.terrain differ diff --git a/public/terrain/19/858518/353784.terrain b/public/terrain/19/858518/353784.terrain new file mode 100644 index 000000000..63ad593ab Binary files /dev/null and b/public/terrain/19/858518/353784.terrain differ diff --git a/public/terrain/19/858518/353785.terrain b/public/terrain/19/858518/353785.terrain new file mode 100644 index 000000000..bc2ae30d2 Binary files /dev/null and b/public/terrain/19/858518/353785.terrain differ diff --git a/public/terrain/19/858518/353786.terrain b/public/terrain/19/858518/353786.terrain new file mode 100644 index 000000000..0076be75f Binary files /dev/null and b/public/terrain/19/858518/353786.terrain differ diff --git a/public/terrain/19/858518/353787.terrain b/public/terrain/19/858518/353787.terrain new file mode 100644 index 000000000..57821c910 Binary files /dev/null and b/public/terrain/19/858518/353787.terrain differ diff --git a/public/terrain/19/858518/353788.terrain b/public/terrain/19/858518/353788.terrain new file mode 100644 index 000000000..3864094c8 Binary files /dev/null and b/public/terrain/19/858518/353788.terrain differ diff --git a/public/terrain/19/858518/353789.terrain b/public/terrain/19/858518/353789.terrain new file mode 100644 index 000000000..de508f5a6 Binary files /dev/null and b/public/terrain/19/858518/353789.terrain differ diff --git a/public/terrain/19/858518/353790.terrain b/public/terrain/19/858518/353790.terrain new file mode 100644 index 000000000..aa89e30a8 Binary files /dev/null and b/public/terrain/19/858518/353790.terrain differ diff --git a/public/terrain/19/858518/353791.terrain b/public/terrain/19/858518/353791.terrain new file mode 100644 index 000000000..20eb64634 Binary files /dev/null and b/public/terrain/19/858518/353791.terrain differ diff --git a/public/terrain/19/858518/353792.terrain b/public/terrain/19/858518/353792.terrain new file mode 100644 index 000000000..589d51a8a Binary files /dev/null and b/public/terrain/19/858518/353792.terrain differ diff --git a/public/terrain/19/858518/353793.terrain b/public/terrain/19/858518/353793.terrain new file mode 100644 index 000000000..e785b1a59 Binary files /dev/null and b/public/terrain/19/858518/353793.terrain differ diff --git a/public/terrain/19/858518/353794.terrain b/public/terrain/19/858518/353794.terrain new file mode 100644 index 000000000..3b56fc7b5 Binary files /dev/null and b/public/terrain/19/858518/353794.terrain differ diff --git a/public/terrain/19/858518/353795.terrain b/public/terrain/19/858518/353795.terrain new file mode 100644 index 000000000..867242458 Binary files /dev/null and b/public/terrain/19/858518/353795.terrain differ diff --git a/public/terrain/19/858518/353796.terrain b/public/terrain/19/858518/353796.terrain new file mode 100644 index 000000000..9ee09103c Binary files /dev/null and b/public/terrain/19/858518/353796.terrain differ diff --git a/public/terrain/19/858518/353797.terrain b/public/terrain/19/858518/353797.terrain new file mode 100644 index 000000000..2d57a0cf1 Binary files /dev/null and b/public/terrain/19/858518/353797.terrain differ diff --git a/public/terrain/19/858518/353798.terrain b/public/terrain/19/858518/353798.terrain new file mode 100644 index 000000000..2b79cc05e Binary files /dev/null and b/public/terrain/19/858518/353798.terrain differ diff --git a/public/terrain/19/858518/353799.terrain b/public/terrain/19/858518/353799.terrain new file mode 100644 index 000000000..1706bc041 Binary files /dev/null and b/public/terrain/19/858518/353799.terrain differ diff --git a/public/terrain/19/858518/353800.terrain b/public/terrain/19/858518/353800.terrain new file mode 100644 index 000000000..97fa630ed Binary files /dev/null and b/public/terrain/19/858518/353800.terrain differ diff --git a/public/terrain/19/858518/353801.terrain b/public/terrain/19/858518/353801.terrain new file mode 100644 index 000000000..2f8f131ef Binary files /dev/null and b/public/terrain/19/858518/353801.terrain differ diff --git a/public/terrain/19/858518/353802.terrain b/public/terrain/19/858518/353802.terrain new file mode 100644 index 000000000..530cf8908 Binary files /dev/null and b/public/terrain/19/858518/353802.terrain differ diff --git a/public/terrain/19/858518/353803.terrain b/public/terrain/19/858518/353803.terrain new file mode 100644 index 000000000..c8f41ea98 Binary files /dev/null and b/public/terrain/19/858518/353803.terrain differ diff --git a/public/terrain/19/858518/353804.terrain b/public/terrain/19/858518/353804.terrain new file mode 100644 index 000000000..16a8e7351 Binary files /dev/null and b/public/terrain/19/858518/353804.terrain differ diff --git a/public/terrain/19/858518/353805.terrain b/public/terrain/19/858518/353805.terrain new file mode 100644 index 000000000..7f90af2b8 Binary files /dev/null and b/public/terrain/19/858518/353805.terrain differ diff --git a/public/terrain/19/858518/353806.terrain b/public/terrain/19/858518/353806.terrain new file mode 100644 index 000000000..ebd1a6d7b Binary files /dev/null and b/public/terrain/19/858518/353806.terrain differ diff --git a/public/terrain/19/858518/353807.terrain b/public/terrain/19/858518/353807.terrain new file mode 100644 index 000000000..d5266fdb9 Binary files /dev/null and b/public/terrain/19/858518/353807.terrain differ diff --git a/public/terrain/19/858518/353808.terrain b/public/terrain/19/858518/353808.terrain new file mode 100644 index 000000000..6f0d1a99b Binary files /dev/null and b/public/terrain/19/858518/353808.terrain differ diff --git a/public/terrain/19/858518/353809.terrain b/public/terrain/19/858518/353809.terrain new file mode 100644 index 000000000..a1c9f29c5 Binary files /dev/null and b/public/terrain/19/858518/353809.terrain differ diff --git a/public/terrain/19/858518/353810.terrain b/public/terrain/19/858518/353810.terrain new file mode 100644 index 000000000..5eff0dff7 Binary files /dev/null and b/public/terrain/19/858518/353810.terrain differ diff --git a/public/terrain/19/858518/353811.terrain b/public/terrain/19/858518/353811.terrain new file mode 100644 index 000000000..638ec431b Binary files /dev/null and b/public/terrain/19/858518/353811.terrain differ diff --git a/public/terrain/19/858518/353812.terrain b/public/terrain/19/858518/353812.terrain new file mode 100644 index 000000000..267b34b05 Binary files /dev/null and b/public/terrain/19/858518/353812.terrain differ diff --git a/public/terrain/19/858518/353813.terrain b/public/terrain/19/858518/353813.terrain new file mode 100644 index 000000000..ff8177987 Binary files /dev/null and b/public/terrain/19/858518/353813.terrain differ diff --git a/public/terrain/19/858518/353814.terrain b/public/terrain/19/858518/353814.terrain new file mode 100644 index 000000000..3148fdec3 Binary files /dev/null and b/public/terrain/19/858518/353814.terrain differ diff --git a/public/terrain/19/858518/353815.terrain b/public/terrain/19/858518/353815.terrain new file mode 100644 index 000000000..823e51b88 Binary files /dev/null and b/public/terrain/19/858518/353815.terrain differ diff --git a/public/terrain/19/858518/353816.terrain b/public/terrain/19/858518/353816.terrain new file mode 100644 index 000000000..67db5186b Binary files /dev/null and b/public/terrain/19/858518/353816.terrain differ diff --git a/public/terrain/19/858518/353817.terrain b/public/terrain/19/858518/353817.terrain new file mode 100644 index 000000000..a40964a66 Binary files /dev/null and b/public/terrain/19/858518/353817.terrain differ diff --git a/public/terrain/19/858518/353818.terrain b/public/terrain/19/858518/353818.terrain new file mode 100644 index 000000000..31e496b3a Binary files /dev/null and b/public/terrain/19/858518/353818.terrain differ diff --git a/public/terrain/19/858518/353819.terrain b/public/terrain/19/858518/353819.terrain new file mode 100644 index 000000000..b512b4b23 Binary files /dev/null and b/public/terrain/19/858518/353819.terrain differ diff --git a/public/terrain/19/858518/353820.terrain b/public/terrain/19/858518/353820.terrain new file mode 100644 index 000000000..19e5e3072 Binary files /dev/null and b/public/terrain/19/858518/353820.terrain differ diff --git a/public/terrain/19/858518/353821.terrain b/public/terrain/19/858518/353821.terrain new file mode 100644 index 000000000..c82e3886c Binary files /dev/null and b/public/terrain/19/858518/353821.terrain differ diff --git a/public/terrain/19/858518/353822.terrain b/public/terrain/19/858518/353822.terrain new file mode 100644 index 000000000..74bca222b Binary files /dev/null and b/public/terrain/19/858518/353822.terrain differ diff --git a/public/terrain/19/858518/353823.terrain b/public/terrain/19/858518/353823.terrain new file mode 100644 index 000000000..139a41f34 Binary files /dev/null and b/public/terrain/19/858518/353823.terrain differ diff --git a/public/terrain/19/858518/353824.terrain b/public/terrain/19/858518/353824.terrain new file mode 100644 index 000000000..bf2b7eaa1 Binary files /dev/null and b/public/terrain/19/858518/353824.terrain differ diff --git a/public/terrain/19/858518/353825.terrain b/public/terrain/19/858518/353825.terrain new file mode 100644 index 000000000..2d508542c Binary files /dev/null and b/public/terrain/19/858518/353825.terrain differ diff --git a/public/terrain/19/858518/353826.terrain b/public/terrain/19/858518/353826.terrain new file mode 100644 index 000000000..4e37716f7 Binary files /dev/null and b/public/terrain/19/858518/353826.terrain differ diff --git a/public/terrain/19/858518/353827.terrain b/public/terrain/19/858518/353827.terrain new file mode 100644 index 000000000..5cb188b09 Binary files /dev/null and b/public/terrain/19/858518/353827.terrain differ diff --git a/public/terrain/19/858518/353828.terrain b/public/terrain/19/858518/353828.terrain new file mode 100644 index 000000000..62581f800 Binary files /dev/null and b/public/terrain/19/858518/353828.terrain differ diff --git a/public/terrain/19/858518/353829.terrain b/public/terrain/19/858518/353829.terrain new file mode 100644 index 000000000..371e96a41 Binary files /dev/null and b/public/terrain/19/858518/353829.terrain differ diff --git a/public/terrain/19/858518/353830.terrain b/public/terrain/19/858518/353830.terrain new file mode 100644 index 000000000..5e4a6542c Binary files /dev/null and b/public/terrain/19/858518/353830.terrain differ diff --git a/public/terrain/19/858518/353831.terrain b/public/terrain/19/858518/353831.terrain new file mode 100644 index 000000000..377f465fd Binary files /dev/null and b/public/terrain/19/858518/353831.terrain differ diff --git a/public/terrain/19/858518/353832.terrain b/public/terrain/19/858518/353832.terrain new file mode 100644 index 000000000..fdbc7e3b7 Binary files /dev/null and b/public/terrain/19/858518/353832.terrain differ diff --git a/public/terrain/19/858518/353833.terrain b/public/terrain/19/858518/353833.terrain new file mode 100644 index 000000000..5b993366b Binary files /dev/null and b/public/terrain/19/858518/353833.terrain differ diff --git a/public/terrain/19/858518/353834.terrain b/public/terrain/19/858518/353834.terrain new file mode 100644 index 000000000..d7b5bd25f Binary files /dev/null and b/public/terrain/19/858518/353834.terrain differ diff --git a/public/terrain/19/858518/353835.terrain b/public/terrain/19/858518/353835.terrain new file mode 100644 index 000000000..02e3240c1 Binary files /dev/null and b/public/terrain/19/858518/353835.terrain differ diff --git a/public/terrain/19/858518/353836.terrain b/public/terrain/19/858518/353836.terrain new file mode 100644 index 000000000..8f413100d Binary files /dev/null and b/public/terrain/19/858518/353836.terrain differ diff --git a/public/terrain/19/858518/353837.terrain b/public/terrain/19/858518/353837.terrain new file mode 100644 index 000000000..0e5b054ac Binary files /dev/null and b/public/terrain/19/858518/353837.terrain differ diff --git a/public/terrain/19/858518/353838.terrain b/public/terrain/19/858518/353838.terrain new file mode 100644 index 000000000..a590ce6ac Binary files /dev/null and b/public/terrain/19/858518/353838.terrain differ diff --git a/public/terrain/19/858518/353839.terrain b/public/terrain/19/858518/353839.terrain new file mode 100644 index 000000000..7b91887da Binary files /dev/null and b/public/terrain/19/858518/353839.terrain differ diff --git a/public/terrain/19/858518/353840.terrain b/public/terrain/19/858518/353840.terrain new file mode 100644 index 000000000..700af6ad8 Binary files /dev/null and b/public/terrain/19/858518/353840.terrain differ diff --git a/public/terrain/19/858518/353841.terrain b/public/terrain/19/858518/353841.terrain new file mode 100644 index 000000000..fdba5bab9 Binary files /dev/null and b/public/terrain/19/858518/353841.terrain differ diff --git a/public/terrain/19/858518/353842.terrain b/public/terrain/19/858518/353842.terrain new file mode 100644 index 000000000..1c3f2093a Binary files /dev/null and b/public/terrain/19/858518/353842.terrain differ diff --git a/public/terrain/19/858518/353843.terrain b/public/terrain/19/858518/353843.terrain new file mode 100644 index 000000000..995c4893b Binary files /dev/null and b/public/terrain/19/858518/353843.terrain differ diff --git a/public/terrain/19/858518/353844.terrain b/public/terrain/19/858518/353844.terrain new file mode 100644 index 000000000..fdea74abb Binary files /dev/null and b/public/terrain/19/858518/353844.terrain differ diff --git a/public/terrain/19/858518/353845.terrain b/public/terrain/19/858518/353845.terrain new file mode 100644 index 000000000..31a8c5348 Binary files /dev/null and b/public/terrain/19/858518/353845.terrain differ diff --git a/public/terrain/19/858518/353846.terrain b/public/terrain/19/858518/353846.terrain new file mode 100644 index 000000000..d71fc86c8 Binary files /dev/null and b/public/terrain/19/858518/353846.terrain differ diff --git a/public/terrain/19/858518/353847.terrain b/public/terrain/19/858518/353847.terrain new file mode 100644 index 000000000..c7622f925 Binary files /dev/null and b/public/terrain/19/858518/353847.terrain differ diff --git a/public/terrain/19/858518/353848.terrain b/public/terrain/19/858518/353848.terrain new file mode 100644 index 000000000..adea7165a Binary files /dev/null and b/public/terrain/19/858518/353848.terrain differ diff --git a/public/terrain/19/858518/353849.terrain b/public/terrain/19/858518/353849.terrain new file mode 100644 index 000000000..3e368c8f4 Binary files /dev/null and b/public/terrain/19/858518/353849.terrain differ diff --git a/public/terrain/19/858518/353850.terrain b/public/terrain/19/858518/353850.terrain new file mode 100644 index 000000000..7dffd3fd9 Binary files /dev/null and b/public/terrain/19/858518/353850.terrain differ diff --git a/public/terrain/19/858518/353851.terrain b/public/terrain/19/858518/353851.terrain new file mode 100644 index 000000000..427428c08 Binary files /dev/null and b/public/terrain/19/858518/353851.terrain differ diff --git a/public/terrain/19/858518/353852.terrain b/public/terrain/19/858518/353852.terrain new file mode 100644 index 000000000..1e603e456 Binary files /dev/null and b/public/terrain/19/858518/353852.terrain differ diff --git a/public/terrain/19/858518/353853.terrain b/public/terrain/19/858518/353853.terrain new file mode 100644 index 000000000..47604485f Binary files /dev/null and b/public/terrain/19/858518/353853.terrain differ diff --git a/public/terrain/19/858518/353854.terrain b/public/terrain/19/858518/353854.terrain new file mode 100644 index 000000000..3a99c1a8d Binary files /dev/null and b/public/terrain/19/858518/353854.terrain differ diff --git a/public/terrain/19/858518/353855.terrain b/public/terrain/19/858518/353855.terrain new file mode 100644 index 000000000..06d08cd4c Binary files /dev/null and b/public/terrain/19/858518/353855.terrain differ diff --git a/public/terrain/19/858518/353856.terrain b/public/terrain/19/858518/353856.terrain new file mode 100644 index 000000000..5d0224e8b Binary files /dev/null and b/public/terrain/19/858518/353856.terrain differ diff --git a/public/terrain/19/858518/353857.terrain b/public/terrain/19/858518/353857.terrain new file mode 100644 index 000000000..657600719 Binary files /dev/null and b/public/terrain/19/858518/353857.terrain differ diff --git a/public/terrain/19/858518/353858.terrain b/public/terrain/19/858518/353858.terrain new file mode 100644 index 000000000..d5aa6963b Binary files /dev/null and b/public/terrain/19/858518/353858.terrain differ diff --git a/public/terrain/19/858518/353859.terrain b/public/terrain/19/858518/353859.terrain new file mode 100644 index 000000000..9b9e8029d Binary files /dev/null and b/public/terrain/19/858518/353859.terrain differ diff --git a/public/terrain/19/858518/353860.terrain b/public/terrain/19/858518/353860.terrain new file mode 100644 index 000000000..95054f918 Binary files /dev/null and b/public/terrain/19/858518/353860.terrain differ diff --git a/public/terrain/19/858518/353861.terrain b/public/terrain/19/858518/353861.terrain new file mode 100644 index 000000000..c997eb817 Binary files /dev/null and b/public/terrain/19/858518/353861.terrain differ diff --git a/public/terrain/19/858518/353862.terrain b/public/terrain/19/858518/353862.terrain new file mode 100644 index 000000000..13e30e2c5 Binary files /dev/null and b/public/terrain/19/858518/353862.terrain differ diff --git a/public/terrain/19/858518/353863.terrain b/public/terrain/19/858518/353863.terrain new file mode 100644 index 000000000..171bdfd15 Binary files /dev/null and b/public/terrain/19/858518/353863.terrain differ diff --git a/public/terrain/19/858518/353864.terrain b/public/terrain/19/858518/353864.terrain new file mode 100644 index 000000000..1217af422 Binary files /dev/null and b/public/terrain/19/858518/353864.terrain differ diff --git a/public/terrain/19/858518/353865.terrain b/public/terrain/19/858518/353865.terrain new file mode 100644 index 000000000..1c9e970b7 Binary files /dev/null and b/public/terrain/19/858518/353865.terrain differ diff --git a/public/terrain/19/858518/353866.terrain b/public/terrain/19/858518/353866.terrain new file mode 100644 index 000000000..21d4bf0f1 Binary files /dev/null and b/public/terrain/19/858518/353866.terrain differ diff --git a/public/terrain/19/858518/353867.terrain b/public/terrain/19/858518/353867.terrain new file mode 100644 index 000000000..db9a45271 Binary files /dev/null and b/public/terrain/19/858518/353867.terrain differ diff --git a/public/terrain/19/858518/353868.terrain b/public/terrain/19/858518/353868.terrain new file mode 100644 index 000000000..74e21863f Binary files /dev/null and b/public/terrain/19/858518/353868.terrain differ diff --git a/public/terrain/19/858518/353869.terrain b/public/terrain/19/858518/353869.terrain new file mode 100644 index 000000000..c034fcf1e Binary files /dev/null and b/public/terrain/19/858518/353869.terrain differ diff --git a/public/terrain/19/858518/353870.terrain b/public/terrain/19/858518/353870.terrain new file mode 100644 index 000000000..967444acb Binary files /dev/null and b/public/terrain/19/858518/353870.terrain differ diff --git a/public/terrain/19/858518/353871.terrain b/public/terrain/19/858518/353871.terrain new file mode 100644 index 000000000..78b047798 Binary files /dev/null and b/public/terrain/19/858518/353871.terrain differ diff --git a/public/terrain/19/858518/353872.terrain b/public/terrain/19/858518/353872.terrain new file mode 100644 index 000000000..caad52a46 Binary files /dev/null and b/public/terrain/19/858518/353872.terrain differ diff --git a/public/terrain/19/858518/353873.terrain b/public/terrain/19/858518/353873.terrain new file mode 100644 index 000000000..8f83ac0d3 Binary files /dev/null and b/public/terrain/19/858518/353873.terrain differ diff --git a/public/terrain/19/858518/353874.terrain b/public/terrain/19/858518/353874.terrain new file mode 100644 index 000000000..11fe16cb0 Binary files /dev/null and b/public/terrain/19/858518/353874.terrain differ diff --git a/public/terrain/19/858518/353875.terrain b/public/terrain/19/858518/353875.terrain new file mode 100644 index 000000000..4f7195bc8 Binary files /dev/null and b/public/terrain/19/858518/353875.terrain differ diff --git a/public/terrain/19/858518/353876.terrain b/public/terrain/19/858518/353876.terrain new file mode 100644 index 000000000..16a5e1146 Binary files /dev/null and b/public/terrain/19/858518/353876.terrain differ diff --git a/public/terrain/19/858518/353877.terrain b/public/terrain/19/858518/353877.terrain new file mode 100644 index 000000000..b3907f41c Binary files /dev/null and b/public/terrain/19/858518/353877.terrain differ diff --git a/public/terrain/19/858518/353878.terrain b/public/terrain/19/858518/353878.terrain new file mode 100644 index 000000000..6b983c96a Binary files /dev/null and b/public/terrain/19/858518/353878.terrain differ diff --git a/public/terrain/19/858518/353879.terrain b/public/terrain/19/858518/353879.terrain new file mode 100644 index 000000000..f09e1849b Binary files /dev/null and b/public/terrain/19/858518/353879.terrain differ diff --git a/public/terrain/19/858518/353880.terrain b/public/terrain/19/858518/353880.terrain new file mode 100644 index 000000000..2481811fe Binary files /dev/null and b/public/terrain/19/858518/353880.terrain differ diff --git a/public/terrain/19/858518/353881.terrain b/public/terrain/19/858518/353881.terrain new file mode 100644 index 000000000..0182ffbdb Binary files /dev/null and b/public/terrain/19/858518/353881.terrain differ diff --git a/public/terrain/19/858518/353882.terrain b/public/terrain/19/858518/353882.terrain new file mode 100644 index 000000000..eb8537759 Binary files /dev/null and b/public/terrain/19/858518/353882.terrain differ diff --git a/public/terrain/19/858518/353883.terrain b/public/terrain/19/858518/353883.terrain new file mode 100644 index 000000000..e1b5fb199 Binary files /dev/null and b/public/terrain/19/858518/353883.terrain differ diff --git a/public/terrain/19/858518/353884.terrain b/public/terrain/19/858518/353884.terrain new file mode 100644 index 000000000..5abf99124 Binary files /dev/null and b/public/terrain/19/858518/353884.terrain differ diff --git a/public/terrain/19/858518/353885.terrain b/public/terrain/19/858518/353885.terrain new file mode 100644 index 000000000..1d73eb4b2 Binary files /dev/null and b/public/terrain/19/858518/353885.terrain differ diff --git a/public/terrain/19/858518/353886.terrain b/public/terrain/19/858518/353886.terrain new file mode 100644 index 000000000..c6d97baf5 Binary files /dev/null and b/public/terrain/19/858518/353886.terrain differ diff --git a/public/terrain/19/858518/353887.terrain b/public/terrain/19/858518/353887.terrain new file mode 100644 index 000000000..0f9234aa1 Binary files /dev/null and b/public/terrain/19/858518/353887.terrain differ diff --git a/public/terrain/19/858518/353888.terrain b/public/terrain/19/858518/353888.terrain new file mode 100644 index 000000000..b7fb9fa47 Binary files /dev/null and b/public/terrain/19/858518/353888.terrain differ diff --git a/public/terrain/19/858518/353889.terrain b/public/terrain/19/858518/353889.terrain new file mode 100644 index 000000000..0e5f4fd47 Binary files /dev/null and b/public/terrain/19/858518/353889.terrain differ diff --git a/public/terrain/19/858518/353890.terrain b/public/terrain/19/858518/353890.terrain new file mode 100644 index 000000000..7d8cb2ac3 Binary files /dev/null and b/public/terrain/19/858518/353890.terrain differ diff --git a/public/terrain/19/858518/353891.terrain b/public/terrain/19/858518/353891.terrain new file mode 100644 index 000000000..4d02307d9 Binary files /dev/null and b/public/terrain/19/858518/353891.terrain differ diff --git a/public/terrain/19/858518/353892.terrain b/public/terrain/19/858518/353892.terrain new file mode 100644 index 000000000..96096a77c Binary files /dev/null and b/public/terrain/19/858518/353892.terrain differ diff --git a/public/terrain/19/858518/353893.terrain b/public/terrain/19/858518/353893.terrain new file mode 100644 index 000000000..840def360 Binary files /dev/null and b/public/terrain/19/858518/353893.terrain differ diff --git a/public/terrain/19/858518/353894.terrain b/public/terrain/19/858518/353894.terrain new file mode 100644 index 000000000..9411bd6f8 Binary files /dev/null and b/public/terrain/19/858518/353894.terrain differ diff --git a/public/terrain/19/858518/353895.terrain b/public/terrain/19/858518/353895.terrain new file mode 100644 index 000000000..10a705c10 Binary files /dev/null and b/public/terrain/19/858518/353895.terrain differ diff --git a/public/terrain/19/858518/353896.terrain b/public/terrain/19/858518/353896.terrain new file mode 100644 index 000000000..1c629dd1f Binary files /dev/null and b/public/terrain/19/858518/353896.terrain differ diff --git a/public/terrain/19/858518/353897.terrain b/public/terrain/19/858518/353897.terrain new file mode 100644 index 000000000..906df00bb Binary files /dev/null and b/public/terrain/19/858518/353897.terrain differ diff --git a/public/terrain/19/858518/353898.terrain b/public/terrain/19/858518/353898.terrain new file mode 100644 index 000000000..d55bbcebb Binary files /dev/null and b/public/terrain/19/858518/353898.terrain differ diff --git a/public/terrain/19/858518/353899.terrain b/public/terrain/19/858518/353899.terrain new file mode 100644 index 000000000..ce3ab5e3b Binary files /dev/null and b/public/terrain/19/858518/353899.terrain differ diff --git a/public/terrain/19/858518/353900.terrain b/public/terrain/19/858518/353900.terrain new file mode 100644 index 000000000..da20ed6f9 Binary files /dev/null and b/public/terrain/19/858518/353900.terrain differ diff --git a/public/terrain/19/858518/353901.terrain b/public/terrain/19/858518/353901.terrain new file mode 100644 index 000000000..35dad8b6d Binary files /dev/null and b/public/terrain/19/858518/353901.terrain differ diff --git a/public/terrain/19/858518/353902.terrain b/public/terrain/19/858518/353902.terrain new file mode 100644 index 000000000..062dc4a2f Binary files /dev/null and b/public/terrain/19/858518/353902.terrain differ diff --git a/public/terrain/19/858518/353903.terrain b/public/terrain/19/858518/353903.terrain new file mode 100644 index 000000000..5aa2d5474 Binary files /dev/null and b/public/terrain/19/858518/353903.terrain differ diff --git a/public/terrain/19/858518/353904.terrain b/public/terrain/19/858518/353904.terrain new file mode 100644 index 000000000..c83c3db5a Binary files /dev/null and b/public/terrain/19/858518/353904.terrain differ diff --git a/public/terrain/19/858518/353905.terrain b/public/terrain/19/858518/353905.terrain new file mode 100644 index 000000000..7b8d4e25a Binary files /dev/null and b/public/terrain/19/858518/353905.terrain differ diff --git a/public/terrain/19/858518/353906.terrain b/public/terrain/19/858518/353906.terrain new file mode 100644 index 000000000..db9dc70be Binary files /dev/null and b/public/terrain/19/858518/353906.terrain differ diff --git a/public/terrain/19/858518/353907.terrain b/public/terrain/19/858518/353907.terrain new file mode 100644 index 000000000..92fa2a560 Binary files /dev/null and b/public/terrain/19/858518/353907.terrain differ diff --git a/public/terrain/19/858518/353908.terrain b/public/terrain/19/858518/353908.terrain new file mode 100644 index 000000000..1b08543e5 Binary files /dev/null and b/public/terrain/19/858518/353908.terrain differ diff --git a/public/terrain/19/858518/353909.terrain b/public/terrain/19/858518/353909.terrain new file mode 100644 index 000000000..c0b0c2aa5 Binary files /dev/null and b/public/terrain/19/858518/353909.terrain differ diff --git a/public/terrain/19/858518/353910.terrain b/public/terrain/19/858518/353910.terrain new file mode 100644 index 000000000..087cb766e Binary files /dev/null and b/public/terrain/19/858518/353910.terrain differ diff --git a/public/terrain/19/858518/353911.terrain b/public/terrain/19/858518/353911.terrain new file mode 100644 index 000000000..b0d08ad87 Binary files /dev/null and b/public/terrain/19/858518/353911.terrain differ diff --git a/public/terrain/19/858518/353912.terrain b/public/terrain/19/858518/353912.terrain new file mode 100644 index 000000000..0104f7b59 Binary files /dev/null and b/public/terrain/19/858518/353912.terrain differ diff --git a/public/terrain/19/858518/353913.terrain b/public/terrain/19/858518/353913.terrain new file mode 100644 index 000000000..fb06b1cad Binary files /dev/null and b/public/terrain/19/858518/353913.terrain differ diff --git a/public/terrain/19/858518/353914.terrain b/public/terrain/19/858518/353914.terrain new file mode 100644 index 000000000..39fcafabe Binary files /dev/null and b/public/terrain/19/858518/353914.terrain differ diff --git a/public/terrain/19/858518/353915.terrain b/public/terrain/19/858518/353915.terrain new file mode 100644 index 000000000..9d12a5228 Binary files /dev/null and b/public/terrain/19/858518/353915.terrain differ diff --git a/public/terrain/19/858518/353916.terrain b/public/terrain/19/858518/353916.terrain new file mode 100644 index 000000000..472e7c534 Binary files /dev/null and b/public/terrain/19/858518/353916.terrain differ diff --git a/public/terrain/19/858518/353917.terrain b/public/terrain/19/858518/353917.terrain new file mode 100644 index 000000000..b61743f2e Binary files /dev/null and b/public/terrain/19/858518/353917.terrain differ diff --git a/public/terrain/19/858518/353918.terrain b/public/terrain/19/858518/353918.terrain new file mode 100644 index 000000000..56dc9260a Binary files /dev/null and b/public/terrain/19/858518/353918.terrain differ diff --git a/public/terrain/19/858518/353919.terrain b/public/terrain/19/858518/353919.terrain new file mode 100644 index 000000000..3e6985c50 Binary files /dev/null and b/public/terrain/19/858518/353919.terrain differ diff --git a/public/terrain/19/858518/353920.terrain b/public/terrain/19/858518/353920.terrain new file mode 100644 index 000000000..9786492e3 Binary files /dev/null and b/public/terrain/19/858518/353920.terrain differ diff --git a/public/terrain/19/858518/353921.terrain b/public/terrain/19/858518/353921.terrain new file mode 100644 index 000000000..f075756d1 Binary files /dev/null and b/public/terrain/19/858518/353921.terrain differ diff --git a/public/terrain/19/858518/353922.terrain b/public/terrain/19/858518/353922.terrain new file mode 100644 index 000000000..01ed5f77f Binary files /dev/null and b/public/terrain/19/858518/353922.terrain differ diff --git a/public/terrain/19/858518/353923.terrain b/public/terrain/19/858518/353923.terrain new file mode 100644 index 000000000..e2136edc9 Binary files /dev/null and b/public/terrain/19/858518/353923.terrain differ diff --git a/public/terrain/19/858518/353924.terrain b/public/terrain/19/858518/353924.terrain new file mode 100644 index 000000000..b451e2caf Binary files /dev/null and b/public/terrain/19/858518/353924.terrain differ diff --git a/public/terrain/19/858518/353925.terrain b/public/terrain/19/858518/353925.terrain new file mode 100644 index 000000000..82e697c13 Binary files /dev/null and b/public/terrain/19/858518/353925.terrain differ diff --git a/public/terrain/19/858518/353926.terrain b/public/terrain/19/858518/353926.terrain new file mode 100644 index 000000000..53583c38e Binary files /dev/null and b/public/terrain/19/858518/353926.terrain differ diff --git a/public/terrain/19/858518/353927.terrain b/public/terrain/19/858518/353927.terrain new file mode 100644 index 000000000..c439503df Binary files /dev/null and b/public/terrain/19/858518/353927.terrain differ diff --git a/public/terrain/19/858518/353928.terrain b/public/terrain/19/858518/353928.terrain new file mode 100644 index 000000000..1b5f2652d Binary files /dev/null and b/public/terrain/19/858518/353928.terrain differ diff --git a/public/terrain/19/858518/353929.terrain b/public/terrain/19/858518/353929.terrain new file mode 100644 index 000000000..c2df329f9 Binary files /dev/null and b/public/terrain/19/858518/353929.terrain differ diff --git a/public/terrain/19/858518/353930.terrain b/public/terrain/19/858518/353930.terrain new file mode 100644 index 000000000..28779ec59 Binary files /dev/null and b/public/terrain/19/858518/353930.terrain differ diff --git a/public/terrain/19/858518/353931.terrain b/public/terrain/19/858518/353931.terrain new file mode 100644 index 000000000..49d069e77 Binary files /dev/null and b/public/terrain/19/858518/353931.terrain differ diff --git a/public/terrain/19/858518/353932.terrain b/public/terrain/19/858518/353932.terrain new file mode 100644 index 000000000..f1d74b15d Binary files /dev/null and b/public/terrain/19/858518/353932.terrain differ diff --git a/public/terrain/19/858518/353933.terrain b/public/terrain/19/858518/353933.terrain new file mode 100644 index 000000000..94859b342 Binary files /dev/null and b/public/terrain/19/858518/353933.terrain differ diff --git a/public/terrain/19/858518/353934.terrain b/public/terrain/19/858518/353934.terrain new file mode 100644 index 000000000..757c09f34 Binary files /dev/null and b/public/terrain/19/858518/353934.terrain differ diff --git a/public/terrain/19/858518/353935.terrain b/public/terrain/19/858518/353935.terrain new file mode 100644 index 000000000..c6e837b19 Binary files /dev/null and b/public/terrain/19/858518/353935.terrain differ diff --git a/public/terrain/19/858518/353936.terrain b/public/terrain/19/858518/353936.terrain new file mode 100644 index 000000000..fd85ed101 Binary files /dev/null and b/public/terrain/19/858518/353936.terrain differ diff --git a/public/terrain/19/858518/353937.terrain b/public/terrain/19/858518/353937.terrain new file mode 100644 index 000000000..68554adbb Binary files /dev/null and b/public/terrain/19/858518/353937.terrain differ diff --git a/public/terrain/19/858518/353938.terrain b/public/terrain/19/858518/353938.terrain new file mode 100644 index 000000000..2c7d17f55 Binary files /dev/null and b/public/terrain/19/858518/353938.terrain differ diff --git a/public/terrain/19/858518/353939.terrain b/public/terrain/19/858518/353939.terrain new file mode 100644 index 000000000..2b8f8401c Binary files /dev/null and b/public/terrain/19/858518/353939.terrain differ diff --git a/public/terrain/19/858518/353940.terrain b/public/terrain/19/858518/353940.terrain new file mode 100644 index 000000000..dd91f469a Binary files /dev/null and b/public/terrain/19/858518/353940.terrain differ diff --git a/public/terrain/19/858518/353941.terrain b/public/terrain/19/858518/353941.terrain new file mode 100644 index 000000000..8b34500e7 Binary files /dev/null and b/public/terrain/19/858518/353941.terrain differ diff --git a/public/terrain/19/858518/353942.terrain b/public/terrain/19/858518/353942.terrain new file mode 100644 index 000000000..b2522b983 Binary files /dev/null and b/public/terrain/19/858518/353942.terrain differ diff --git a/public/terrain/19/858518/353943.terrain b/public/terrain/19/858518/353943.terrain new file mode 100644 index 000000000..5b39c72c3 Binary files /dev/null and b/public/terrain/19/858518/353943.terrain differ diff --git a/public/terrain/19/858518/353944.terrain b/public/terrain/19/858518/353944.terrain new file mode 100644 index 000000000..8f663c13b Binary files /dev/null and b/public/terrain/19/858518/353944.terrain differ diff --git a/public/terrain/19/858518/353945.terrain b/public/terrain/19/858518/353945.terrain new file mode 100644 index 000000000..cf4dd80bf Binary files /dev/null and b/public/terrain/19/858518/353945.terrain differ diff --git a/public/terrain/19/858518/353946.terrain b/public/terrain/19/858518/353946.terrain new file mode 100644 index 000000000..73c1c4d75 Binary files /dev/null and b/public/terrain/19/858518/353946.terrain differ diff --git a/public/terrain/19/858518/353947.terrain b/public/terrain/19/858518/353947.terrain new file mode 100644 index 000000000..58baecc31 Binary files /dev/null and b/public/terrain/19/858518/353947.terrain differ diff --git a/public/terrain/19/858518/353948.terrain b/public/terrain/19/858518/353948.terrain new file mode 100644 index 000000000..c3edcecf3 Binary files /dev/null and b/public/terrain/19/858518/353948.terrain differ diff --git a/public/terrain/19/858518/353949.terrain b/public/terrain/19/858518/353949.terrain new file mode 100644 index 000000000..249251100 Binary files /dev/null and b/public/terrain/19/858518/353949.terrain differ diff --git a/public/terrain/19/858518/353950.terrain b/public/terrain/19/858518/353950.terrain new file mode 100644 index 000000000..fe974637d Binary files /dev/null and b/public/terrain/19/858518/353950.terrain differ diff --git a/public/terrain/19/858518/353951.terrain b/public/terrain/19/858518/353951.terrain new file mode 100644 index 000000000..ef92d3882 Binary files /dev/null and b/public/terrain/19/858518/353951.terrain differ diff --git a/public/terrain/19/858518/353952.terrain b/public/terrain/19/858518/353952.terrain new file mode 100644 index 000000000..9d86cb8d1 Binary files /dev/null and b/public/terrain/19/858518/353952.terrain differ diff --git a/public/terrain/19/858518/353953.terrain b/public/terrain/19/858518/353953.terrain new file mode 100644 index 000000000..ea59ddff4 Binary files /dev/null and b/public/terrain/19/858518/353953.terrain differ diff --git a/public/terrain/19/858518/353954.terrain b/public/terrain/19/858518/353954.terrain new file mode 100644 index 000000000..781dcad41 Binary files /dev/null and b/public/terrain/19/858518/353954.terrain differ diff --git a/public/terrain/19/858518/353955.terrain b/public/terrain/19/858518/353955.terrain new file mode 100644 index 000000000..f499bce36 Binary files /dev/null and b/public/terrain/19/858518/353955.terrain differ diff --git a/public/terrain/19/858518/353956.terrain b/public/terrain/19/858518/353956.terrain new file mode 100644 index 000000000..e49cc480d Binary files /dev/null and b/public/terrain/19/858518/353956.terrain differ diff --git a/public/terrain/19/858518/353957.terrain b/public/terrain/19/858518/353957.terrain new file mode 100644 index 000000000..ecce71f78 Binary files /dev/null and b/public/terrain/19/858518/353957.terrain differ diff --git a/public/terrain/19/858518/353958.terrain b/public/terrain/19/858518/353958.terrain new file mode 100644 index 000000000..02f65f587 Binary files /dev/null and b/public/terrain/19/858518/353958.terrain differ diff --git a/public/terrain/19/858518/353959.terrain b/public/terrain/19/858518/353959.terrain new file mode 100644 index 000000000..ff959eb62 Binary files /dev/null and b/public/terrain/19/858518/353959.terrain differ diff --git a/public/terrain/19/858518/353960.terrain b/public/terrain/19/858518/353960.terrain new file mode 100644 index 000000000..d4f03067a Binary files /dev/null and b/public/terrain/19/858518/353960.terrain differ diff --git a/public/terrain/19/858518/353961.terrain b/public/terrain/19/858518/353961.terrain new file mode 100644 index 000000000..0e6c8666c Binary files /dev/null and b/public/terrain/19/858518/353961.terrain differ diff --git a/public/terrain/19/858518/353962.terrain b/public/terrain/19/858518/353962.terrain new file mode 100644 index 000000000..a44b1a743 Binary files /dev/null and b/public/terrain/19/858518/353962.terrain differ diff --git a/public/terrain/19/858518/353963.terrain b/public/terrain/19/858518/353963.terrain new file mode 100644 index 000000000..269b42d1d Binary files /dev/null and b/public/terrain/19/858518/353963.terrain differ diff --git a/public/terrain/19/858518/353964.terrain b/public/terrain/19/858518/353964.terrain new file mode 100644 index 000000000..8b4682349 Binary files /dev/null and b/public/terrain/19/858518/353964.terrain differ diff --git a/public/terrain/19/858518/353965.terrain b/public/terrain/19/858518/353965.terrain new file mode 100644 index 000000000..b93fc2b13 Binary files /dev/null and b/public/terrain/19/858518/353965.terrain differ diff --git a/public/terrain/19/858518/353966.terrain b/public/terrain/19/858518/353966.terrain new file mode 100644 index 000000000..75d8b4f77 Binary files /dev/null and b/public/terrain/19/858518/353966.terrain differ diff --git a/public/terrain/19/858518/353967.terrain b/public/terrain/19/858518/353967.terrain new file mode 100644 index 000000000..7471a6ed7 Binary files /dev/null and b/public/terrain/19/858518/353967.terrain differ diff --git a/public/terrain/19/858518/353968.terrain b/public/terrain/19/858518/353968.terrain new file mode 100644 index 000000000..473ac1060 Binary files /dev/null and b/public/terrain/19/858518/353968.terrain differ diff --git a/public/terrain/19/858518/353969.terrain b/public/terrain/19/858518/353969.terrain new file mode 100644 index 000000000..1fdd7261c Binary files /dev/null and b/public/terrain/19/858518/353969.terrain differ diff --git a/public/terrain/19/858518/353970.terrain b/public/terrain/19/858518/353970.terrain new file mode 100644 index 000000000..10cd1b366 Binary files /dev/null and b/public/terrain/19/858518/353970.terrain differ diff --git a/public/terrain/19/858518/353971.terrain b/public/terrain/19/858518/353971.terrain new file mode 100644 index 000000000..c599155fd Binary files /dev/null and b/public/terrain/19/858518/353971.terrain differ diff --git a/public/terrain/19/858518/353972.terrain b/public/terrain/19/858518/353972.terrain new file mode 100644 index 000000000..a7c6a2172 Binary files /dev/null and b/public/terrain/19/858518/353972.terrain differ diff --git a/public/terrain/19/858518/353973.terrain b/public/terrain/19/858518/353973.terrain new file mode 100644 index 000000000..efb4e243d Binary files /dev/null and b/public/terrain/19/858518/353973.terrain differ diff --git a/public/terrain/19/858518/353974.terrain b/public/terrain/19/858518/353974.terrain new file mode 100644 index 000000000..80c70cac9 Binary files /dev/null and b/public/terrain/19/858518/353974.terrain differ diff --git a/public/terrain/19/858518/353975.terrain b/public/terrain/19/858518/353975.terrain new file mode 100644 index 000000000..d7d715131 Binary files /dev/null and b/public/terrain/19/858518/353975.terrain differ diff --git a/public/terrain/19/858518/353976.terrain b/public/terrain/19/858518/353976.terrain new file mode 100644 index 000000000..7a9f00d61 Binary files /dev/null and b/public/terrain/19/858518/353976.terrain differ diff --git a/public/terrain/19/858518/353977.terrain b/public/terrain/19/858518/353977.terrain new file mode 100644 index 000000000..61f4bff26 Binary files /dev/null and b/public/terrain/19/858518/353977.terrain differ diff --git a/public/terrain/19/858518/353978.terrain b/public/terrain/19/858518/353978.terrain new file mode 100644 index 000000000..ce0ef900f Binary files /dev/null and b/public/terrain/19/858518/353978.terrain differ diff --git a/public/terrain/19/858518/353979.terrain b/public/terrain/19/858518/353979.terrain new file mode 100644 index 000000000..ad1241805 Binary files /dev/null and b/public/terrain/19/858518/353979.terrain differ diff --git a/public/terrain/19/858518/353980.terrain b/public/terrain/19/858518/353980.terrain new file mode 100644 index 000000000..077096e27 Binary files /dev/null and b/public/terrain/19/858518/353980.terrain differ diff --git a/public/terrain/19/858518/353981.terrain b/public/terrain/19/858518/353981.terrain new file mode 100644 index 000000000..c69e6457b Binary files /dev/null and b/public/terrain/19/858518/353981.terrain differ diff --git a/public/terrain/19/858518/353982.terrain b/public/terrain/19/858518/353982.terrain new file mode 100644 index 000000000..602910148 Binary files /dev/null and b/public/terrain/19/858518/353982.terrain differ diff --git a/public/terrain/19/858518/353983.terrain b/public/terrain/19/858518/353983.terrain new file mode 100644 index 000000000..698bf0e1f Binary files /dev/null and b/public/terrain/19/858518/353983.terrain differ diff --git a/public/terrain/19/858518/353984.terrain b/public/terrain/19/858518/353984.terrain new file mode 100644 index 000000000..9d5b89ec4 Binary files /dev/null and b/public/terrain/19/858518/353984.terrain differ diff --git a/public/terrain/19/858518/353985.terrain b/public/terrain/19/858518/353985.terrain new file mode 100644 index 000000000..f468ee396 Binary files /dev/null and b/public/terrain/19/858518/353985.terrain differ diff --git a/public/terrain/19/858518/353986.terrain b/public/terrain/19/858518/353986.terrain new file mode 100644 index 000000000..d3326a9bf Binary files /dev/null and b/public/terrain/19/858518/353986.terrain differ diff --git a/public/terrain/19/858518/353987.terrain b/public/terrain/19/858518/353987.terrain new file mode 100644 index 000000000..d5b78ec87 Binary files /dev/null and b/public/terrain/19/858518/353987.terrain differ diff --git a/public/terrain/19/858518/353988.terrain b/public/terrain/19/858518/353988.terrain new file mode 100644 index 000000000..755eac396 Binary files /dev/null and b/public/terrain/19/858518/353988.terrain differ diff --git a/public/terrain/19/858518/353989.terrain b/public/terrain/19/858518/353989.terrain new file mode 100644 index 000000000..504cfd516 Binary files /dev/null and b/public/terrain/19/858518/353989.terrain differ diff --git a/public/terrain/19/858518/353990.terrain b/public/terrain/19/858518/353990.terrain new file mode 100644 index 000000000..027b5f74b Binary files /dev/null and b/public/terrain/19/858518/353990.terrain differ diff --git a/public/terrain/19/858518/353991.terrain b/public/terrain/19/858518/353991.terrain new file mode 100644 index 000000000..7467ae7e8 Binary files /dev/null and b/public/terrain/19/858518/353991.terrain differ diff --git a/public/terrain/19/858518/353992.terrain b/public/terrain/19/858518/353992.terrain new file mode 100644 index 000000000..63ec856ee Binary files /dev/null and b/public/terrain/19/858518/353992.terrain differ diff --git a/public/terrain/19/858518/353993.terrain b/public/terrain/19/858518/353993.terrain new file mode 100644 index 000000000..dc9cfed46 Binary files /dev/null and b/public/terrain/19/858518/353993.terrain differ diff --git a/public/terrain/19/858518/353994.terrain b/public/terrain/19/858518/353994.terrain new file mode 100644 index 000000000..c23e1c400 Binary files /dev/null and b/public/terrain/19/858518/353994.terrain differ diff --git a/public/terrain/19/858518/353995.terrain b/public/terrain/19/858518/353995.terrain new file mode 100644 index 000000000..cae93b7f6 Binary files /dev/null and b/public/terrain/19/858518/353995.terrain differ diff --git a/public/terrain/19/858518/353996.terrain b/public/terrain/19/858518/353996.terrain new file mode 100644 index 000000000..aaad6e20b Binary files /dev/null and b/public/terrain/19/858518/353996.terrain differ diff --git a/public/terrain/19/858518/353997.terrain b/public/terrain/19/858518/353997.terrain new file mode 100644 index 000000000..c19566b5d Binary files /dev/null and b/public/terrain/19/858518/353997.terrain differ diff --git a/public/terrain/19/858518/353998.terrain b/public/terrain/19/858518/353998.terrain new file mode 100644 index 000000000..29e5a4fe6 Binary files /dev/null and b/public/terrain/19/858518/353998.terrain differ diff --git a/public/terrain/19/858518/353999.terrain b/public/terrain/19/858518/353999.terrain new file mode 100644 index 000000000..cb6fe7dbb Binary files /dev/null and b/public/terrain/19/858518/353999.terrain differ diff --git a/public/terrain/19/858518/354000.terrain b/public/terrain/19/858518/354000.terrain new file mode 100644 index 000000000..90fb7e832 Binary files /dev/null and b/public/terrain/19/858518/354000.terrain differ diff --git a/public/terrain/19/858518/354001.terrain b/public/terrain/19/858518/354001.terrain new file mode 100644 index 000000000..0e9d155d8 Binary files /dev/null and b/public/terrain/19/858518/354001.terrain differ diff --git a/public/terrain/19/858518/354002.terrain b/public/terrain/19/858518/354002.terrain new file mode 100644 index 000000000..f12b89f34 Binary files /dev/null and b/public/terrain/19/858518/354002.terrain differ diff --git a/public/terrain/19/858518/354003.terrain b/public/terrain/19/858518/354003.terrain new file mode 100644 index 000000000..38bf961b6 Binary files /dev/null and b/public/terrain/19/858518/354003.terrain differ diff --git a/public/terrain/19/858518/354004.terrain b/public/terrain/19/858518/354004.terrain new file mode 100644 index 000000000..db46b4ad2 Binary files /dev/null and b/public/terrain/19/858518/354004.terrain differ diff --git a/public/terrain/19/858518/354005.terrain b/public/terrain/19/858518/354005.terrain new file mode 100644 index 000000000..e46f13ebc Binary files /dev/null and b/public/terrain/19/858518/354005.terrain differ diff --git a/public/terrain/19/858518/354006.terrain b/public/terrain/19/858518/354006.terrain new file mode 100644 index 000000000..f8ebea0f4 Binary files /dev/null and b/public/terrain/19/858518/354006.terrain differ diff --git a/public/terrain/19/858518/354007.terrain b/public/terrain/19/858518/354007.terrain new file mode 100644 index 000000000..79054484d Binary files /dev/null and b/public/terrain/19/858518/354007.terrain differ diff --git a/public/terrain/19/858518/354008.terrain b/public/terrain/19/858518/354008.terrain new file mode 100644 index 000000000..67f43ec30 Binary files /dev/null and b/public/terrain/19/858518/354008.terrain differ diff --git a/public/terrain/19/858518/354009.terrain b/public/terrain/19/858518/354009.terrain new file mode 100644 index 000000000..fd6bcc39b Binary files /dev/null and b/public/terrain/19/858518/354009.terrain differ diff --git a/public/terrain/19/858518/354010.terrain b/public/terrain/19/858518/354010.terrain new file mode 100644 index 000000000..7e3ad3996 Binary files /dev/null and b/public/terrain/19/858518/354010.terrain differ diff --git a/public/terrain/19/858518/354011.terrain b/public/terrain/19/858518/354011.terrain new file mode 100644 index 000000000..0613d4ad9 Binary files /dev/null and b/public/terrain/19/858518/354011.terrain differ diff --git a/public/terrain/19/858518/354012.terrain b/public/terrain/19/858518/354012.terrain new file mode 100644 index 000000000..a15e7a404 Binary files /dev/null and b/public/terrain/19/858518/354012.terrain differ diff --git a/public/terrain/19/858518/354013.terrain b/public/terrain/19/858518/354013.terrain new file mode 100644 index 000000000..52eb7562b Binary files /dev/null and b/public/terrain/19/858518/354013.terrain differ diff --git a/public/terrain/19/858518/354014.terrain b/public/terrain/19/858518/354014.terrain new file mode 100644 index 000000000..b6d8fd501 Binary files /dev/null and b/public/terrain/19/858518/354014.terrain differ diff --git a/public/terrain/19/858518/354015.terrain b/public/terrain/19/858518/354015.terrain new file mode 100644 index 000000000..961bc1184 Binary files /dev/null and b/public/terrain/19/858518/354015.terrain differ diff --git a/public/terrain/19/858518/354016.terrain b/public/terrain/19/858518/354016.terrain new file mode 100644 index 000000000..d90eeed15 Binary files /dev/null and b/public/terrain/19/858518/354016.terrain differ diff --git a/public/terrain/19/858518/354017.terrain b/public/terrain/19/858518/354017.terrain new file mode 100644 index 000000000..f784133de Binary files /dev/null and b/public/terrain/19/858518/354017.terrain differ diff --git a/public/terrain/19/858518/354018.terrain b/public/terrain/19/858518/354018.terrain new file mode 100644 index 000000000..9edf897fd Binary files /dev/null and b/public/terrain/19/858518/354018.terrain differ diff --git a/public/terrain/19/858518/354019.terrain b/public/terrain/19/858518/354019.terrain new file mode 100644 index 000000000..e663c2188 Binary files /dev/null and b/public/terrain/19/858518/354019.terrain differ diff --git a/public/terrain/19/858518/354020.terrain b/public/terrain/19/858518/354020.terrain new file mode 100644 index 000000000..64d8b79bd Binary files /dev/null and b/public/terrain/19/858518/354020.terrain differ diff --git a/public/terrain/19/858518/354021.terrain b/public/terrain/19/858518/354021.terrain new file mode 100644 index 000000000..4ab701b2c Binary files /dev/null and b/public/terrain/19/858518/354021.terrain differ diff --git a/public/terrain/19/858518/354022.terrain b/public/terrain/19/858518/354022.terrain new file mode 100644 index 000000000..93c9538a9 Binary files /dev/null and b/public/terrain/19/858518/354022.terrain differ diff --git a/public/terrain/19/858518/354023.terrain b/public/terrain/19/858518/354023.terrain new file mode 100644 index 000000000..a2af0a288 Binary files /dev/null and b/public/terrain/19/858518/354023.terrain differ diff --git a/public/terrain/19/858518/354024.terrain b/public/terrain/19/858518/354024.terrain new file mode 100644 index 000000000..ff0a0054e Binary files /dev/null and b/public/terrain/19/858518/354024.terrain differ diff --git a/public/terrain/19/858518/354025.terrain b/public/terrain/19/858518/354025.terrain new file mode 100644 index 000000000..2de59a465 Binary files /dev/null and b/public/terrain/19/858518/354025.terrain differ diff --git a/public/terrain/19/858518/354026.terrain b/public/terrain/19/858518/354026.terrain new file mode 100644 index 000000000..31ceb6574 Binary files /dev/null and b/public/terrain/19/858518/354026.terrain differ diff --git a/public/terrain/19/858518/354027.terrain b/public/terrain/19/858518/354027.terrain new file mode 100644 index 000000000..478f337ec Binary files /dev/null and b/public/terrain/19/858518/354027.terrain differ diff --git a/public/terrain/19/858518/354028.terrain b/public/terrain/19/858518/354028.terrain new file mode 100644 index 000000000..332e40e52 Binary files /dev/null and b/public/terrain/19/858518/354028.terrain differ diff --git a/public/terrain/19/858518/354029.terrain b/public/terrain/19/858518/354029.terrain new file mode 100644 index 000000000..789016076 Binary files /dev/null and b/public/terrain/19/858518/354029.terrain differ diff --git a/public/terrain/19/858518/354030.terrain b/public/terrain/19/858518/354030.terrain new file mode 100644 index 000000000..90ac87361 Binary files /dev/null and b/public/terrain/19/858518/354030.terrain differ diff --git a/public/terrain/19/858518/354031.terrain b/public/terrain/19/858518/354031.terrain new file mode 100644 index 000000000..9de3cde6e Binary files /dev/null and b/public/terrain/19/858518/354031.terrain differ diff --git a/public/terrain/19/858518/354032.terrain b/public/terrain/19/858518/354032.terrain new file mode 100644 index 000000000..5f2a4bd95 Binary files /dev/null and b/public/terrain/19/858518/354032.terrain differ diff --git a/public/terrain/19/858518/354033.terrain b/public/terrain/19/858518/354033.terrain new file mode 100644 index 000000000..b9f068deb Binary files /dev/null and b/public/terrain/19/858518/354033.terrain differ diff --git a/public/terrain/19/858518/354034.terrain b/public/terrain/19/858518/354034.terrain new file mode 100644 index 000000000..a5743aeb6 Binary files /dev/null and b/public/terrain/19/858518/354034.terrain differ diff --git a/public/terrain/19/858518/354035.terrain b/public/terrain/19/858518/354035.terrain new file mode 100644 index 000000000..163b29f0a Binary files /dev/null and b/public/terrain/19/858518/354035.terrain differ diff --git a/public/terrain/19/858518/354036.terrain b/public/terrain/19/858518/354036.terrain new file mode 100644 index 000000000..e4b464f77 Binary files /dev/null and b/public/terrain/19/858518/354036.terrain differ diff --git a/public/terrain/19/858518/354037.terrain b/public/terrain/19/858518/354037.terrain new file mode 100644 index 000000000..64f6c367d Binary files /dev/null and b/public/terrain/19/858518/354037.terrain differ diff --git a/public/terrain/19/858518/354038.terrain b/public/terrain/19/858518/354038.terrain new file mode 100644 index 000000000..68e27de5d Binary files /dev/null and b/public/terrain/19/858518/354038.terrain differ diff --git a/public/terrain/19/858518/354039.terrain b/public/terrain/19/858518/354039.terrain new file mode 100644 index 000000000..2a6ed4ca8 Binary files /dev/null and b/public/terrain/19/858518/354039.terrain differ diff --git a/public/terrain/19/858518/354040.terrain b/public/terrain/19/858518/354040.terrain new file mode 100644 index 000000000..587f6dc04 Binary files /dev/null and b/public/terrain/19/858518/354040.terrain differ diff --git a/public/terrain/19/858518/354041.terrain b/public/terrain/19/858518/354041.terrain new file mode 100644 index 000000000..ca9774ef9 Binary files /dev/null and b/public/terrain/19/858518/354041.terrain differ diff --git a/public/terrain/19/858518/354042.terrain b/public/terrain/19/858518/354042.terrain new file mode 100644 index 000000000..94a1c92c5 Binary files /dev/null and b/public/terrain/19/858518/354042.terrain differ diff --git a/public/terrain/19/858518/354043.terrain b/public/terrain/19/858518/354043.terrain new file mode 100644 index 000000000..84fc2868f Binary files /dev/null and b/public/terrain/19/858518/354043.terrain differ diff --git a/public/terrain/19/858518/354044.terrain b/public/terrain/19/858518/354044.terrain new file mode 100644 index 000000000..2b106e3c2 Binary files /dev/null and b/public/terrain/19/858518/354044.terrain differ diff --git a/public/terrain/19/858518/354045.terrain b/public/terrain/19/858518/354045.terrain new file mode 100644 index 000000000..60eff5538 Binary files /dev/null and b/public/terrain/19/858518/354045.terrain differ diff --git a/public/terrain/19/858518/354046.terrain b/public/terrain/19/858518/354046.terrain new file mode 100644 index 000000000..62aa53791 Binary files /dev/null and b/public/terrain/19/858518/354046.terrain differ diff --git a/public/terrain/19/858518/354047.terrain b/public/terrain/19/858518/354047.terrain new file mode 100644 index 000000000..1f5f328a5 Binary files /dev/null and b/public/terrain/19/858518/354047.terrain differ diff --git a/public/terrain/19/858518/354048.terrain b/public/terrain/19/858518/354048.terrain new file mode 100644 index 000000000..b0004b808 Binary files /dev/null and b/public/terrain/19/858518/354048.terrain differ diff --git a/public/terrain/19/858518/354049.terrain b/public/terrain/19/858518/354049.terrain new file mode 100644 index 000000000..6190a126e Binary files /dev/null and b/public/terrain/19/858518/354049.terrain differ diff --git a/public/terrain/19/858518/354050.terrain b/public/terrain/19/858518/354050.terrain new file mode 100644 index 000000000..73ca39039 Binary files /dev/null and b/public/terrain/19/858518/354050.terrain differ diff --git a/public/terrain/19/858518/354051.terrain b/public/terrain/19/858518/354051.terrain new file mode 100644 index 000000000..a8cd632de Binary files /dev/null and b/public/terrain/19/858518/354051.terrain differ diff --git a/public/terrain/19/858518/354052.terrain b/public/terrain/19/858518/354052.terrain new file mode 100644 index 000000000..972d42994 Binary files /dev/null and b/public/terrain/19/858518/354052.terrain differ diff --git a/public/terrain/19/858518/354053.terrain b/public/terrain/19/858518/354053.terrain new file mode 100644 index 000000000..ebf08ded2 Binary files /dev/null and b/public/terrain/19/858518/354053.terrain differ diff --git a/public/terrain/19/858518/354054.terrain b/public/terrain/19/858518/354054.terrain new file mode 100644 index 000000000..47c1d07d7 Binary files /dev/null and b/public/terrain/19/858518/354054.terrain differ diff --git a/public/terrain/19/858518/354055.terrain b/public/terrain/19/858518/354055.terrain new file mode 100644 index 000000000..d07acd0e2 Binary files /dev/null and b/public/terrain/19/858518/354055.terrain differ diff --git a/public/terrain/19/858518/354056.terrain b/public/terrain/19/858518/354056.terrain new file mode 100644 index 000000000..897f5bcb9 Binary files /dev/null and b/public/terrain/19/858518/354056.terrain differ diff --git a/public/terrain/19/858518/354057.terrain b/public/terrain/19/858518/354057.terrain new file mode 100644 index 000000000..ddf90c13c Binary files /dev/null and b/public/terrain/19/858518/354057.terrain differ diff --git a/public/terrain/19/858518/354058.terrain b/public/terrain/19/858518/354058.terrain new file mode 100644 index 000000000..efdfd0c40 Binary files /dev/null and b/public/terrain/19/858518/354058.terrain differ diff --git a/public/terrain/19/858518/354059.terrain b/public/terrain/19/858518/354059.terrain new file mode 100644 index 000000000..0cb58c766 Binary files /dev/null and b/public/terrain/19/858518/354059.terrain differ diff --git a/public/terrain/19/858519/353743.terrain b/public/terrain/19/858519/353743.terrain new file mode 100644 index 000000000..dd9f90c82 Binary files /dev/null and b/public/terrain/19/858519/353743.terrain differ diff --git a/public/terrain/19/858519/353744.terrain b/public/terrain/19/858519/353744.terrain new file mode 100644 index 000000000..fd25fc05f Binary files /dev/null and b/public/terrain/19/858519/353744.terrain differ diff --git a/public/terrain/19/858519/353745.terrain b/public/terrain/19/858519/353745.terrain new file mode 100644 index 000000000..a3043fafc Binary files /dev/null and b/public/terrain/19/858519/353745.terrain differ diff --git a/public/terrain/19/858519/353746.terrain b/public/terrain/19/858519/353746.terrain new file mode 100644 index 000000000..4b629cffc Binary files /dev/null and b/public/terrain/19/858519/353746.terrain differ diff --git a/public/terrain/19/858519/353747.terrain b/public/terrain/19/858519/353747.terrain new file mode 100644 index 000000000..48a057d75 Binary files /dev/null and b/public/terrain/19/858519/353747.terrain differ diff --git a/public/terrain/19/858519/353748.terrain b/public/terrain/19/858519/353748.terrain new file mode 100644 index 000000000..9c04ab641 Binary files /dev/null and b/public/terrain/19/858519/353748.terrain differ diff --git a/public/terrain/19/858519/353749.terrain b/public/terrain/19/858519/353749.terrain new file mode 100644 index 000000000..6682d1998 Binary files /dev/null and b/public/terrain/19/858519/353749.terrain differ diff --git a/public/terrain/19/858519/353750.terrain b/public/terrain/19/858519/353750.terrain new file mode 100644 index 000000000..08d654824 Binary files /dev/null and b/public/terrain/19/858519/353750.terrain differ diff --git a/public/terrain/19/858519/353751.terrain b/public/terrain/19/858519/353751.terrain new file mode 100644 index 000000000..ff0c8b923 Binary files /dev/null and b/public/terrain/19/858519/353751.terrain differ diff --git a/public/terrain/19/858519/353752.terrain b/public/terrain/19/858519/353752.terrain new file mode 100644 index 000000000..9b86ab483 Binary files /dev/null and b/public/terrain/19/858519/353752.terrain differ diff --git a/public/terrain/19/858519/353753.terrain b/public/terrain/19/858519/353753.terrain new file mode 100644 index 000000000..b49830ced Binary files /dev/null and b/public/terrain/19/858519/353753.terrain differ diff --git a/public/terrain/19/858519/353754.terrain b/public/terrain/19/858519/353754.terrain new file mode 100644 index 000000000..05b26d30a Binary files /dev/null and b/public/terrain/19/858519/353754.terrain differ diff --git a/public/terrain/19/858519/353755.terrain b/public/terrain/19/858519/353755.terrain new file mode 100644 index 000000000..7ebb3cb0e Binary files /dev/null and b/public/terrain/19/858519/353755.terrain differ diff --git a/public/terrain/19/858519/353756.terrain b/public/terrain/19/858519/353756.terrain new file mode 100644 index 000000000..c19674411 Binary files /dev/null and b/public/terrain/19/858519/353756.terrain differ diff --git a/public/terrain/19/858519/353757.terrain b/public/terrain/19/858519/353757.terrain new file mode 100644 index 000000000..c3a1124ec Binary files /dev/null and b/public/terrain/19/858519/353757.terrain differ diff --git a/public/terrain/19/858519/353758.terrain b/public/terrain/19/858519/353758.terrain new file mode 100644 index 000000000..b627ac056 Binary files /dev/null and b/public/terrain/19/858519/353758.terrain differ diff --git a/public/terrain/19/858519/353759.terrain b/public/terrain/19/858519/353759.terrain new file mode 100644 index 000000000..1978464ae Binary files /dev/null and b/public/terrain/19/858519/353759.terrain differ diff --git a/public/terrain/19/858519/353760.terrain b/public/terrain/19/858519/353760.terrain new file mode 100644 index 000000000..c3befb94b Binary files /dev/null and b/public/terrain/19/858519/353760.terrain differ diff --git a/public/terrain/19/858519/353761.terrain b/public/terrain/19/858519/353761.terrain new file mode 100644 index 000000000..ee80a726c Binary files /dev/null and b/public/terrain/19/858519/353761.terrain differ diff --git a/public/terrain/19/858519/353762.terrain b/public/terrain/19/858519/353762.terrain new file mode 100644 index 000000000..ed610ddf6 Binary files /dev/null and b/public/terrain/19/858519/353762.terrain differ diff --git a/public/terrain/19/858519/353763.terrain b/public/terrain/19/858519/353763.terrain new file mode 100644 index 000000000..56be003be Binary files /dev/null and b/public/terrain/19/858519/353763.terrain differ diff --git a/public/terrain/19/858519/353764.terrain b/public/terrain/19/858519/353764.terrain new file mode 100644 index 000000000..11951923b Binary files /dev/null and b/public/terrain/19/858519/353764.terrain differ diff --git a/public/terrain/19/858519/353765.terrain b/public/terrain/19/858519/353765.terrain new file mode 100644 index 000000000..b65926264 Binary files /dev/null and b/public/terrain/19/858519/353765.terrain differ diff --git a/public/terrain/19/858519/353766.terrain b/public/terrain/19/858519/353766.terrain new file mode 100644 index 000000000..2f79909e3 Binary files /dev/null and b/public/terrain/19/858519/353766.terrain differ diff --git a/public/terrain/19/858519/353767.terrain b/public/terrain/19/858519/353767.terrain new file mode 100644 index 000000000..6ebb8dde7 Binary files /dev/null and b/public/terrain/19/858519/353767.terrain differ diff --git a/public/terrain/19/858519/353768.terrain b/public/terrain/19/858519/353768.terrain new file mode 100644 index 000000000..2dd0a4c3a Binary files /dev/null and b/public/terrain/19/858519/353768.terrain differ diff --git a/public/terrain/19/858519/353769.terrain b/public/terrain/19/858519/353769.terrain new file mode 100644 index 000000000..9797bbc32 Binary files /dev/null and b/public/terrain/19/858519/353769.terrain differ diff --git a/public/terrain/19/858519/353770.terrain b/public/terrain/19/858519/353770.terrain new file mode 100644 index 000000000..9d68ed7f8 Binary files /dev/null and b/public/terrain/19/858519/353770.terrain differ diff --git a/public/terrain/19/858519/353771.terrain b/public/terrain/19/858519/353771.terrain new file mode 100644 index 000000000..c3f13ee4f Binary files /dev/null and b/public/terrain/19/858519/353771.terrain differ diff --git a/public/terrain/19/858519/353772.terrain b/public/terrain/19/858519/353772.terrain new file mode 100644 index 000000000..b3accf6f1 Binary files /dev/null and b/public/terrain/19/858519/353772.terrain differ diff --git a/public/terrain/19/858519/353773.terrain b/public/terrain/19/858519/353773.terrain new file mode 100644 index 000000000..d09ab97e1 Binary files /dev/null and b/public/terrain/19/858519/353773.terrain differ diff --git a/public/terrain/19/858519/353774.terrain b/public/terrain/19/858519/353774.terrain new file mode 100644 index 000000000..7f2184ae9 Binary files /dev/null and b/public/terrain/19/858519/353774.terrain differ diff --git a/public/terrain/19/858519/353775.terrain b/public/terrain/19/858519/353775.terrain new file mode 100644 index 000000000..07b0ab5b4 Binary files /dev/null and b/public/terrain/19/858519/353775.terrain differ diff --git a/public/terrain/19/858519/353776.terrain b/public/terrain/19/858519/353776.terrain new file mode 100644 index 000000000..39c952707 Binary files /dev/null and b/public/terrain/19/858519/353776.terrain differ diff --git a/public/terrain/19/858519/353777.terrain b/public/terrain/19/858519/353777.terrain new file mode 100644 index 000000000..8bc4a74ec Binary files /dev/null and b/public/terrain/19/858519/353777.terrain differ diff --git a/public/terrain/19/858519/353778.terrain b/public/terrain/19/858519/353778.terrain new file mode 100644 index 000000000..56ae63e75 Binary files /dev/null and b/public/terrain/19/858519/353778.terrain differ diff --git a/public/terrain/19/858519/353779.terrain b/public/terrain/19/858519/353779.terrain new file mode 100644 index 000000000..b459aceb4 Binary files /dev/null and b/public/terrain/19/858519/353779.terrain differ diff --git a/public/terrain/19/858519/353780.terrain b/public/terrain/19/858519/353780.terrain new file mode 100644 index 000000000..8d8d22f69 Binary files /dev/null and b/public/terrain/19/858519/353780.terrain differ diff --git a/public/terrain/19/858519/353781.terrain b/public/terrain/19/858519/353781.terrain new file mode 100644 index 000000000..3e3295b4d Binary files /dev/null and b/public/terrain/19/858519/353781.terrain differ diff --git a/public/terrain/19/858519/353782.terrain b/public/terrain/19/858519/353782.terrain new file mode 100644 index 000000000..9377572ef Binary files /dev/null and b/public/terrain/19/858519/353782.terrain differ diff --git a/public/terrain/19/858519/353783.terrain b/public/terrain/19/858519/353783.terrain new file mode 100644 index 000000000..822cb2f49 Binary files /dev/null and b/public/terrain/19/858519/353783.terrain differ diff --git a/public/terrain/19/858519/353784.terrain b/public/terrain/19/858519/353784.terrain new file mode 100644 index 000000000..e0303a908 Binary files /dev/null and b/public/terrain/19/858519/353784.terrain differ diff --git a/public/terrain/19/858519/353785.terrain b/public/terrain/19/858519/353785.terrain new file mode 100644 index 000000000..08c7f3bed Binary files /dev/null and b/public/terrain/19/858519/353785.terrain differ diff --git a/public/terrain/19/858519/353786.terrain b/public/terrain/19/858519/353786.terrain new file mode 100644 index 000000000..a86a49370 Binary files /dev/null and b/public/terrain/19/858519/353786.terrain differ diff --git a/public/terrain/19/858519/353787.terrain b/public/terrain/19/858519/353787.terrain new file mode 100644 index 000000000..4480e5d6c Binary files /dev/null and b/public/terrain/19/858519/353787.terrain differ diff --git a/public/terrain/19/858519/353788.terrain b/public/terrain/19/858519/353788.terrain new file mode 100644 index 000000000..2581d0f9e Binary files /dev/null and b/public/terrain/19/858519/353788.terrain differ diff --git a/public/terrain/19/858519/353789.terrain b/public/terrain/19/858519/353789.terrain new file mode 100644 index 000000000..217e5bcad Binary files /dev/null and b/public/terrain/19/858519/353789.terrain differ diff --git a/public/terrain/19/858519/353790.terrain b/public/terrain/19/858519/353790.terrain new file mode 100644 index 000000000..24b6d7da9 Binary files /dev/null and b/public/terrain/19/858519/353790.terrain differ diff --git a/public/terrain/19/858519/353791.terrain b/public/terrain/19/858519/353791.terrain new file mode 100644 index 000000000..b6cf5dc4b Binary files /dev/null and b/public/terrain/19/858519/353791.terrain differ diff --git a/public/terrain/19/858519/353792.terrain b/public/terrain/19/858519/353792.terrain new file mode 100644 index 000000000..93cb2b936 Binary files /dev/null and b/public/terrain/19/858519/353792.terrain differ diff --git a/public/terrain/19/858519/353793.terrain b/public/terrain/19/858519/353793.terrain new file mode 100644 index 000000000..17167004c Binary files /dev/null and b/public/terrain/19/858519/353793.terrain differ diff --git a/public/terrain/19/858519/353794.terrain b/public/terrain/19/858519/353794.terrain new file mode 100644 index 000000000..32136b45d Binary files /dev/null and b/public/terrain/19/858519/353794.terrain differ diff --git a/public/terrain/19/858519/353795.terrain b/public/terrain/19/858519/353795.terrain new file mode 100644 index 000000000..79d8b5df2 Binary files /dev/null and b/public/terrain/19/858519/353795.terrain differ diff --git a/public/terrain/19/858519/353796.terrain b/public/terrain/19/858519/353796.terrain new file mode 100644 index 000000000..306414b65 Binary files /dev/null and b/public/terrain/19/858519/353796.terrain differ diff --git a/public/terrain/19/858519/353797.terrain b/public/terrain/19/858519/353797.terrain new file mode 100644 index 000000000..1e63031b5 Binary files /dev/null and b/public/terrain/19/858519/353797.terrain differ diff --git a/public/terrain/19/858519/353798.terrain b/public/terrain/19/858519/353798.terrain new file mode 100644 index 000000000..019056a69 Binary files /dev/null and b/public/terrain/19/858519/353798.terrain differ diff --git a/public/terrain/19/858519/353799.terrain b/public/terrain/19/858519/353799.terrain new file mode 100644 index 000000000..f8e406664 Binary files /dev/null and b/public/terrain/19/858519/353799.terrain differ diff --git a/public/terrain/19/858519/353800.terrain b/public/terrain/19/858519/353800.terrain new file mode 100644 index 000000000..96d0bc76f Binary files /dev/null and b/public/terrain/19/858519/353800.terrain differ diff --git a/public/terrain/19/858519/353801.terrain b/public/terrain/19/858519/353801.terrain new file mode 100644 index 000000000..631d17461 Binary files /dev/null and b/public/terrain/19/858519/353801.terrain differ diff --git a/public/terrain/19/858519/353802.terrain b/public/terrain/19/858519/353802.terrain new file mode 100644 index 000000000..7ce562080 Binary files /dev/null and b/public/terrain/19/858519/353802.terrain differ diff --git a/public/terrain/19/858519/353803.terrain b/public/terrain/19/858519/353803.terrain new file mode 100644 index 000000000..6385ac990 Binary files /dev/null and b/public/terrain/19/858519/353803.terrain differ diff --git a/public/terrain/19/858519/353804.terrain b/public/terrain/19/858519/353804.terrain new file mode 100644 index 000000000..b7d16dad9 Binary files /dev/null and b/public/terrain/19/858519/353804.terrain differ diff --git a/public/terrain/19/858519/353805.terrain b/public/terrain/19/858519/353805.terrain new file mode 100644 index 000000000..bdfd5903e Binary files /dev/null and b/public/terrain/19/858519/353805.terrain differ diff --git a/public/terrain/19/858519/353806.terrain b/public/terrain/19/858519/353806.terrain new file mode 100644 index 000000000..7a3d0373a Binary files /dev/null and b/public/terrain/19/858519/353806.terrain differ diff --git a/public/terrain/19/858519/353807.terrain b/public/terrain/19/858519/353807.terrain new file mode 100644 index 000000000..29fc790e5 Binary files /dev/null and b/public/terrain/19/858519/353807.terrain differ diff --git a/public/terrain/19/858519/353808.terrain b/public/terrain/19/858519/353808.terrain new file mode 100644 index 000000000..457d94b6b Binary files /dev/null and b/public/terrain/19/858519/353808.terrain differ diff --git a/public/terrain/19/858519/353809.terrain b/public/terrain/19/858519/353809.terrain new file mode 100644 index 000000000..3895b705d Binary files /dev/null and b/public/terrain/19/858519/353809.terrain differ diff --git a/public/terrain/19/858519/353810.terrain b/public/terrain/19/858519/353810.terrain new file mode 100644 index 000000000..650870972 Binary files /dev/null and b/public/terrain/19/858519/353810.terrain differ diff --git a/public/terrain/19/858519/353811.terrain b/public/terrain/19/858519/353811.terrain new file mode 100644 index 000000000..cdd9d7961 Binary files /dev/null and b/public/terrain/19/858519/353811.terrain differ diff --git a/public/terrain/19/858519/353812.terrain b/public/terrain/19/858519/353812.terrain new file mode 100644 index 000000000..4cea69ff4 Binary files /dev/null and b/public/terrain/19/858519/353812.terrain differ diff --git a/public/terrain/19/858519/353813.terrain b/public/terrain/19/858519/353813.terrain new file mode 100644 index 000000000..f800b402f Binary files /dev/null and b/public/terrain/19/858519/353813.terrain differ diff --git a/public/terrain/19/858519/353814.terrain b/public/terrain/19/858519/353814.terrain new file mode 100644 index 000000000..825637237 Binary files /dev/null and b/public/terrain/19/858519/353814.terrain differ diff --git a/public/terrain/19/858519/353815.terrain b/public/terrain/19/858519/353815.terrain new file mode 100644 index 000000000..f1370600e Binary files /dev/null and b/public/terrain/19/858519/353815.terrain differ diff --git a/public/terrain/19/858519/353816.terrain b/public/terrain/19/858519/353816.terrain new file mode 100644 index 000000000..aefbdb0ea Binary files /dev/null and b/public/terrain/19/858519/353816.terrain differ diff --git a/public/terrain/19/858519/353817.terrain b/public/terrain/19/858519/353817.terrain new file mode 100644 index 000000000..d69af57d8 Binary files /dev/null and b/public/terrain/19/858519/353817.terrain differ diff --git a/public/terrain/19/858519/353818.terrain b/public/terrain/19/858519/353818.terrain new file mode 100644 index 000000000..5af653f9d Binary files /dev/null and b/public/terrain/19/858519/353818.terrain differ diff --git a/public/terrain/19/858519/353819.terrain b/public/terrain/19/858519/353819.terrain new file mode 100644 index 000000000..d1e542e50 Binary files /dev/null and b/public/terrain/19/858519/353819.terrain differ diff --git a/public/terrain/19/858519/353820.terrain b/public/terrain/19/858519/353820.terrain new file mode 100644 index 000000000..1fd00d9fc Binary files /dev/null and b/public/terrain/19/858519/353820.terrain differ diff --git a/public/terrain/19/858519/353821.terrain b/public/terrain/19/858519/353821.terrain new file mode 100644 index 000000000..e893d23ef Binary files /dev/null and b/public/terrain/19/858519/353821.terrain differ diff --git a/public/terrain/19/858519/353822.terrain b/public/terrain/19/858519/353822.terrain new file mode 100644 index 000000000..e5180f0d2 Binary files /dev/null and b/public/terrain/19/858519/353822.terrain differ diff --git a/public/terrain/19/858519/353823.terrain b/public/terrain/19/858519/353823.terrain new file mode 100644 index 000000000..dfd1fda1f Binary files /dev/null and b/public/terrain/19/858519/353823.terrain differ diff --git a/public/terrain/19/858519/353824.terrain b/public/terrain/19/858519/353824.terrain new file mode 100644 index 000000000..4af20cb4b Binary files /dev/null and b/public/terrain/19/858519/353824.terrain differ diff --git a/public/terrain/19/858519/353825.terrain b/public/terrain/19/858519/353825.terrain new file mode 100644 index 000000000..5efbf7559 Binary files /dev/null and b/public/terrain/19/858519/353825.terrain differ diff --git a/public/terrain/19/858519/353826.terrain b/public/terrain/19/858519/353826.terrain new file mode 100644 index 000000000..75adea55f Binary files /dev/null and b/public/terrain/19/858519/353826.terrain differ diff --git a/public/terrain/19/858519/353827.terrain b/public/terrain/19/858519/353827.terrain new file mode 100644 index 000000000..d145b1154 Binary files /dev/null and b/public/terrain/19/858519/353827.terrain differ diff --git a/public/terrain/19/858519/353828.terrain b/public/terrain/19/858519/353828.terrain new file mode 100644 index 000000000..2299c4033 Binary files /dev/null and b/public/terrain/19/858519/353828.terrain differ diff --git a/public/terrain/19/858519/353829.terrain b/public/terrain/19/858519/353829.terrain new file mode 100644 index 000000000..b163774a1 Binary files /dev/null and b/public/terrain/19/858519/353829.terrain differ diff --git a/public/terrain/19/858519/353830.terrain b/public/terrain/19/858519/353830.terrain new file mode 100644 index 000000000..4e386fb4f Binary files /dev/null and b/public/terrain/19/858519/353830.terrain differ diff --git a/public/terrain/19/858519/353831.terrain b/public/terrain/19/858519/353831.terrain new file mode 100644 index 000000000..2173f812d Binary files /dev/null and b/public/terrain/19/858519/353831.terrain differ diff --git a/public/terrain/19/858519/353832.terrain b/public/terrain/19/858519/353832.terrain new file mode 100644 index 000000000..f4e0d3ffc Binary files /dev/null and b/public/terrain/19/858519/353832.terrain differ diff --git a/public/terrain/19/858519/353833.terrain b/public/terrain/19/858519/353833.terrain new file mode 100644 index 000000000..76f19bc67 Binary files /dev/null and b/public/terrain/19/858519/353833.terrain differ diff --git a/public/terrain/19/858519/353834.terrain b/public/terrain/19/858519/353834.terrain new file mode 100644 index 000000000..019a9da5d Binary files /dev/null and b/public/terrain/19/858519/353834.terrain differ diff --git a/public/terrain/19/858519/353835.terrain b/public/terrain/19/858519/353835.terrain new file mode 100644 index 000000000..80f78fe6e Binary files /dev/null and b/public/terrain/19/858519/353835.terrain differ diff --git a/public/terrain/19/858519/353836.terrain b/public/terrain/19/858519/353836.terrain new file mode 100644 index 000000000..a9e739d79 Binary files /dev/null and b/public/terrain/19/858519/353836.terrain differ diff --git a/public/terrain/19/858519/353837.terrain b/public/terrain/19/858519/353837.terrain new file mode 100644 index 000000000..6e06ea22e Binary files /dev/null and b/public/terrain/19/858519/353837.terrain differ diff --git a/public/terrain/19/858519/353838.terrain b/public/terrain/19/858519/353838.terrain new file mode 100644 index 000000000..87efc7795 Binary files /dev/null and b/public/terrain/19/858519/353838.terrain differ diff --git a/public/terrain/19/858519/353839.terrain b/public/terrain/19/858519/353839.terrain new file mode 100644 index 000000000..6ef16a0e8 Binary files /dev/null and b/public/terrain/19/858519/353839.terrain differ diff --git a/public/terrain/19/858519/353840.terrain b/public/terrain/19/858519/353840.terrain new file mode 100644 index 000000000..7ceef610e Binary files /dev/null and b/public/terrain/19/858519/353840.terrain differ diff --git a/public/terrain/19/858519/353841.terrain b/public/terrain/19/858519/353841.terrain new file mode 100644 index 000000000..70898e70a Binary files /dev/null and b/public/terrain/19/858519/353841.terrain differ diff --git a/public/terrain/19/858519/353842.terrain b/public/terrain/19/858519/353842.terrain new file mode 100644 index 000000000..9c92d1225 Binary files /dev/null and b/public/terrain/19/858519/353842.terrain differ diff --git a/public/terrain/19/858519/353843.terrain b/public/terrain/19/858519/353843.terrain new file mode 100644 index 000000000..c0e017536 Binary files /dev/null and b/public/terrain/19/858519/353843.terrain differ diff --git a/public/terrain/19/858519/353844.terrain b/public/terrain/19/858519/353844.terrain new file mode 100644 index 000000000..9718fdd00 Binary files /dev/null and b/public/terrain/19/858519/353844.terrain differ diff --git a/public/terrain/19/858519/353845.terrain b/public/terrain/19/858519/353845.terrain new file mode 100644 index 000000000..918a4a038 Binary files /dev/null and b/public/terrain/19/858519/353845.terrain differ diff --git a/public/terrain/19/858519/353846.terrain b/public/terrain/19/858519/353846.terrain new file mode 100644 index 000000000..fed71eb12 Binary files /dev/null and b/public/terrain/19/858519/353846.terrain differ diff --git a/public/terrain/19/858519/353847.terrain b/public/terrain/19/858519/353847.terrain new file mode 100644 index 000000000..4e9e78083 Binary files /dev/null and b/public/terrain/19/858519/353847.terrain differ diff --git a/public/terrain/19/858519/353848.terrain b/public/terrain/19/858519/353848.terrain new file mode 100644 index 000000000..4c55c5824 Binary files /dev/null and b/public/terrain/19/858519/353848.terrain differ diff --git a/public/terrain/19/858519/353849.terrain b/public/terrain/19/858519/353849.terrain new file mode 100644 index 000000000..b93effa4d Binary files /dev/null and b/public/terrain/19/858519/353849.terrain differ diff --git a/public/terrain/19/858519/353850.terrain b/public/terrain/19/858519/353850.terrain new file mode 100644 index 000000000..9c334da97 Binary files /dev/null and b/public/terrain/19/858519/353850.terrain differ diff --git a/public/terrain/19/858519/353851.terrain b/public/terrain/19/858519/353851.terrain new file mode 100644 index 000000000..42ffd5a35 Binary files /dev/null and b/public/terrain/19/858519/353851.terrain differ diff --git a/public/terrain/19/858519/353852.terrain b/public/terrain/19/858519/353852.terrain new file mode 100644 index 000000000..e56149624 Binary files /dev/null and b/public/terrain/19/858519/353852.terrain differ diff --git a/public/terrain/19/858519/353853.terrain b/public/terrain/19/858519/353853.terrain new file mode 100644 index 000000000..e28e20450 Binary files /dev/null and b/public/terrain/19/858519/353853.terrain differ diff --git a/public/terrain/19/858519/353854.terrain b/public/terrain/19/858519/353854.terrain new file mode 100644 index 000000000..ee54c680d Binary files /dev/null and b/public/terrain/19/858519/353854.terrain differ diff --git a/public/terrain/19/858519/353855.terrain b/public/terrain/19/858519/353855.terrain new file mode 100644 index 000000000..188e83227 Binary files /dev/null and b/public/terrain/19/858519/353855.terrain differ diff --git a/public/terrain/19/858519/353856.terrain b/public/terrain/19/858519/353856.terrain new file mode 100644 index 000000000..f0b08c8a1 Binary files /dev/null and b/public/terrain/19/858519/353856.terrain differ diff --git a/public/terrain/19/858519/353857.terrain b/public/terrain/19/858519/353857.terrain new file mode 100644 index 000000000..301d459eb Binary files /dev/null and b/public/terrain/19/858519/353857.terrain differ diff --git a/public/terrain/19/858519/353858.terrain b/public/terrain/19/858519/353858.terrain new file mode 100644 index 000000000..e255b66b6 Binary files /dev/null and b/public/terrain/19/858519/353858.terrain differ diff --git a/public/terrain/19/858519/353859.terrain b/public/terrain/19/858519/353859.terrain new file mode 100644 index 000000000..e31acb178 Binary files /dev/null and b/public/terrain/19/858519/353859.terrain differ diff --git a/public/terrain/19/858519/353860.terrain b/public/terrain/19/858519/353860.terrain new file mode 100644 index 000000000..f4b075eb2 Binary files /dev/null and b/public/terrain/19/858519/353860.terrain differ diff --git a/public/terrain/19/858519/353861.terrain b/public/terrain/19/858519/353861.terrain new file mode 100644 index 000000000..e1f505385 Binary files /dev/null and b/public/terrain/19/858519/353861.terrain differ diff --git a/public/terrain/19/858519/353862.terrain b/public/terrain/19/858519/353862.terrain new file mode 100644 index 000000000..1d4e35465 Binary files /dev/null and b/public/terrain/19/858519/353862.terrain differ diff --git a/public/terrain/19/858519/353863.terrain b/public/terrain/19/858519/353863.terrain new file mode 100644 index 000000000..767e6c0b4 Binary files /dev/null and b/public/terrain/19/858519/353863.terrain differ diff --git a/public/terrain/19/858519/353864.terrain b/public/terrain/19/858519/353864.terrain new file mode 100644 index 000000000..93273bde1 Binary files /dev/null and b/public/terrain/19/858519/353864.terrain differ diff --git a/public/terrain/19/858519/353865.terrain b/public/terrain/19/858519/353865.terrain new file mode 100644 index 000000000..67b2938ec Binary files /dev/null and b/public/terrain/19/858519/353865.terrain differ diff --git a/public/terrain/19/858519/353866.terrain b/public/terrain/19/858519/353866.terrain new file mode 100644 index 000000000..56f85d337 Binary files /dev/null and b/public/terrain/19/858519/353866.terrain differ diff --git a/public/terrain/19/858519/353867.terrain b/public/terrain/19/858519/353867.terrain new file mode 100644 index 000000000..4f756e1df Binary files /dev/null and b/public/terrain/19/858519/353867.terrain differ diff --git a/public/terrain/19/858519/353868.terrain b/public/terrain/19/858519/353868.terrain new file mode 100644 index 000000000..4a05c2eab Binary files /dev/null and b/public/terrain/19/858519/353868.terrain differ diff --git a/public/terrain/19/858519/353869.terrain b/public/terrain/19/858519/353869.terrain new file mode 100644 index 000000000..f0fbf943f Binary files /dev/null and b/public/terrain/19/858519/353869.terrain differ diff --git a/public/terrain/19/858519/353870.terrain b/public/terrain/19/858519/353870.terrain new file mode 100644 index 000000000..88eb9a8f6 Binary files /dev/null and b/public/terrain/19/858519/353870.terrain differ diff --git a/public/terrain/19/858519/353871.terrain b/public/terrain/19/858519/353871.terrain new file mode 100644 index 000000000..600219982 Binary files /dev/null and b/public/terrain/19/858519/353871.terrain differ diff --git a/public/terrain/19/858519/353872.terrain b/public/terrain/19/858519/353872.terrain new file mode 100644 index 000000000..d5dd8c1dd Binary files /dev/null and b/public/terrain/19/858519/353872.terrain differ diff --git a/public/terrain/19/858519/353873.terrain b/public/terrain/19/858519/353873.terrain new file mode 100644 index 000000000..aca1fce3b Binary files /dev/null and b/public/terrain/19/858519/353873.terrain differ diff --git a/public/terrain/19/858519/353874.terrain b/public/terrain/19/858519/353874.terrain new file mode 100644 index 000000000..839fcb722 Binary files /dev/null and b/public/terrain/19/858519/353874.terrain differ diff --git a/public/terrain/19/858519/353875.terrain b/public/terrain/19/858519/353875.terrain new file mode 100644 index 000000000..a7b40bd41 Binary files /dev/null and b/public/terrain/19/858519/353875.terrain differ diff --git a/public/terrain/19/858519/353876.terrain b/public/terrain/19/858519/353876.terrain new file mode 100644 index 000000000..48ab557d6 Binary files /dev/null and b/public/terrain/19/858519/353876.terrain differ diff --git a/public/terrain/19/858519/353877.terrain b/public/terrain/19/858519/353877.terrain new file mode 100644 index 000000000..cacc4aee0 Binary files /dev/null and b/public/terrain/19/858519/353877.terrain differ diff --git a/public/terrain/19/858519/353878.terrain b/public/terrain/19/858519/353878.terrain new file mode 100644 index 000000000..f6fcf243c Binary files /dev/null and b/public/terrain/19/858519/353878.terrain differ diff --git a/public/terrain/19/858519/353879.terrain b/public/terrain/19/858519/353879.terrain new file mode 100644 index 000000000..ee16364ed Binary files /dev/null and b/public/terrain/19/858519/353879.terrain differ diff --git a/public/terrain/19/858519/353880.terrain b/public/terrain/19/858519/353880.terrain new file mode 100644 index 000000000..653e0102e Binary files /dev/null and b/public/terrain/19/858519/353880.terrain differ diff --git a/public/terrain/19/858519/353881.terrain b/public/terrain/19/858519/353881.terrain new file mode 100644 index 000000000..5f35bb4e5 Binary files /dev/null and b/public/terrain/19/858519/353881.terrain differ diff --git a/public/terrain/19/858519/353882.terrain b/public/terrain/19/858519/353882.terrain new file mode 100644 index 000000000..db2868b9b Binary files /dev/null and b/public/terrain/19/858519/353882.terrain differ diff --git a/public/terrain/19/858519/353883.terrain b/public/terrain/19/858519/353883.terrain new file mode 100644 index 000000000..b8b376c46 Binary files /dev/null and b/public/terrain/19/858519/353883.terrain differ diff --git a/public/terrain/19/858519/353884.terrain b/public/terrain/19/858519/353884.terrain new file mode 100644 index 000000000..67336edd1 Binary files /dev/null and b/public/terrain/19/858519/353884.terrain differ diff --git a/public/terrain/19/858519/353885.terrain b/public/terrain/19/858519/353885.terrain new file mode 100644 index 000000000..132dabdde Binary files /dev/null and b/public/terrain/19/858519/353885.terrain differ diff --git a/public/terrain/19/858519/353886.terrain b/public/terrain/19/858519/353886.terrain new file mode 100644 index 000000000..c92282dfd Binary files /dev/null and b/public/terrain/19/858519/353886.terrain differ diff --git a/public/terrain/19/858519/353887.terrain b/public/terrain/19/858519/353887.terrain new file mode 100644 index 000000000..59d406afa Binary files /dev/null and b/public/terrain/19/858519/353887.terrain differ diff --git a/public/terrain/19/858519/353888.terrain b/public/terrain/19/858519/353888.terrain new file mode 100644 index 000000000..37029dcd9 Binary files /dev/null and b/public/terrain/19/858519/353888.terrain differ diff --git a/public/terrain/19/858519/353889.terrain b/public/terrain/19/858519/353889.terrain new file mode 100644 index 000000000..5f43c1036 Binary files /dev/null and b/public/terrain/19/858519/353889.terrain differ diff --git a/public/terrain/19/858519/353890.terrain b/public/terrain/19/858519/353890.terrain new file mode 100644 index 000000000..9dc3fa74a Binary files /dev/null and b/public/terrain/19/858519/353890.terrain differ diff --git a/public/terrain/19/858519/353891.terrain b/public/terrain/19/858519/353891.terrain new file mode 100644 index 000000000..e7a940b30 Binary files /dev/null and b/public/terrain/19/858519/353891.terrain differ diff --git a/public/terrain/19/858519/353892.terrain b/public/terrain/19/858519/353892.terrain new file mode 100644 index 000000000..ce90c28a3 Binary files /dev/null and b/public/terrain/19/858519/353892.terrain differ diff --git a/public/terrain/19/858519/353893.terrain b/public/terrain/19/858519/353893.terrain new file mode 100644 index 000000000..dd4984682 Binary files /dev/null and b/public/terrain/19/858519/353893.terrain differ diff --git a/public/terrain/19/858519/353894.terrain b/public/terrain/19/858519/353894.terrain new file mode 100644 index 000000000..cd125a138 Binary files /dev/null and b/public/terrain/19/858519/353894.terrain differ diff --git a/public/terrain/19/858519/353895.terrain b/public/terrain/19/858519/353895.terrain new file mode 100644 index 000000000..112428565 Binary files /dev/null and b/public/terrain/19/858519/353895.terrain differ diff --git a/public/terrain/19/858519/353896.terrain b/public/terrain/19/858519/353896.terrain new file mode 100644 index 000000000..ef3ff325f Binary files /dev/null and b/public/terrain/19/858519/353896.terrain differ diff --git a/public/terrain/19/858519/353897.terrain b/public/terrain/19/858519/353897.terrain new file mode 100644 index 000000000..8e79cef44 Binary files /dev/null and b/public/terrain/19/858519/353897.terrain differ diff --git a/public/terrain/19/858519/353898.terrain b/public/terrain/19/858519/353898.terrain new file mode 100644 index 000000000..05cb87063 Binary files /dev/null and b/public/terrain/19/858519/353898.terrain differ diff --git a/public/terrain/19/858519/353899.terrain b/public/terrain/19/858519/353899.terrain new file mode 100644 index 000000000..b35d4d87f Binary files /dev/null and b/public/terrain/19/858519/353899.terrain differ diff --git a/public/terrain/19/858519/353900.terrain b/public/terrain/19/858519/353900.terrain new file mode 100644 index 000000000..f38c35906 Binary files /dev/null and b/public/terrain/19/858519/353900.terrain differ diff --git a/public/terrain/19/858519/353901.terrain b/public/terrain/19/858519/353901.terrain new file mode 100644 index 000000000..3c43712bd Binary files /dev/null and b/public/terrain/19/858519/353901.terrain differ diff --git a/public/terrain/19/858519/353902.terrain b/public/terrain/19/858519/353902.terrain new file mode 100644 index 000000000..54eababd6 Binary files /dev/null and b/public/terrain/19/858519/353902.terrain differ diff --git a/public/terrain/19/858519/353903.terrain b/public/terrain/19/858519/353903.terrain new file mode 100644 index 000000000..76ce9f87e Binary files /dev/null and b/public/terrain/19/858519/353903.terrain differ diff --git a/public/terrain/19/858519/353904.terrain b/public/terrain/19/858519/353904.terrain new file mode 100644 index 000000000..fbe66200e Binary files /dev/null and b/public/terrain/19/858519/353904.terrain differ diff --git a/public/terrain/19/858519/353905.terrain b/public/terrain/19/858519/353905.terrain new file mode 100644 index 000000000..3bff4d3b7 Binary files /dev/null and b/public/terrain/19/858519/353905.terrain differ diff --git a/public/terrain/19/858519/353906.terrain b/public/terrain/19/858519/353906.terrain new file mode 100644 index 000000000..a89fd1afb Binary files /dev/null and b/public/terrain/19/858519/353906.terrain differ diff --git a/public/terrain/19/858519/353907.terrain b/public/terrain/19/858519/353907.terrain new file mode 100644 index 000000000..951464680 Binary files /dev/null and b/public/terrain/19/858519/353907.terrain differ diff --git a/public/terrain/19/858519/353908.terrain b/public/terrain/19/858519/353908.terrain new file mode 100644 index 000000000..a2753a1fe Binary files /dev/null and b/public/terrain/19/858519/353908.terrain differ diff --git a/public/terrain/19/858519/353909.terrain b/public/terrain/19/858519/353909.terrain new file mode 100644 index 000000000..7bb14cbbf Binary files /dev/null and b/public/terrain/19/858519/353909.terrain differ diff --git a/public/terrain/19/858519/353910.terrain b/public/terrain/19/858519/353910.terrain new file mode 100644 index 000000000..f5e7e6204 Binary files /dev/null and b/public/terrain/19/858519/353910.terrain differ diff --git a/public/terrain/19/858519/353911.terrain b/public/terrain/19/858519/353911.terrain new file mode 100644 index 000000000..87c6b9fca Binary files /dev/null and b/public/terrain/19/858519/353911.terrain differ diff --git a/public/terrain/19/858519/353912.terrain b/public/terrain/19/858519/353912.terrain new file mode 100644 index 000000000..977e4c486 Binary files /dev/null and b/public/terrain/19/858519/353912.terrain differ diff --git a/public/terrain/19/858519/353913.terrain b/public/terrain/19/858519/353913.terrain new file mode 100644 index 000000000..12cd1040c Binary files /dev/null and b/public/terrain/19/858519/353913.terrain differ diff --git a/public/terrain/19/858519/353914.terrain b/public/terrain/19/858519/353914.terrain new file mode 100644 index 000000000..cebc55623 Binary files /dev/null and b/public/terrain/19/858519/353914.terrain differ diff --git a/public/terrain/19/858519/353915.terrain b/public/terrain/19/858519/353915.terrain new file mode 100644 index 000000000..d1009580c Binary files /dev/null and b/public/terrain/19/858519/353915.terrain differ diff --git a/public/terrain/19/858519/353916.terrain b/public/terrain/19/858519/353916.terrain new file mode 100644 index 000000000..457114f7d Binary files /dev/null and b/public/terrain/19/858519/353916.terrain differ diff --git a/public/terrain/19/858519/353917.terrain b/public/terrain/19/858519/353917.terrain new file mode 100644 index 000000000..faa80f196 Binary files /dev/null and b/public/terrain/19/858519/353917.terrain differ diff --git a/public/terrain/19/858519/353918.terrain b/public/terrain/19/858519/353918.terrain new file mode 100644 index 000000000..41a587255 Binary files /dev/null and b/public/terrain/19/858519/353918.terrain differ diff --git a/public/terrain/19/858519/353919.terrain b/public/terrain/19/858519/353919.terrain new file mode 100644 index 000000000..92449f160 Binary files /dev/null and b/public/terrain/19/858519/353919.terrain differ diff --git a/public/terrain/19/858519/353920.terrain b/public/terrain/19/858519/353920.terrain new file mode 100644 index 000000000..90a595924 Binary files /dev/null and b/public/terrain/19/858519/353920.terrain differ diff --git a/public/terrain/19/858519/353921.terrain b/public/terrain/19/858519/353921.terrain new file mode 100644 index 000000000..bfb9dd77f Binary files /dev/null and b/public/terrain/19/858519/353921.terrain differ diff --git a/public/terrain/19/858519/353922.terrain b/public/terrain/19/858519/353922.terrain new file mode 100644 index 000000000..e22181e34 Binary files /dev/null and b/public/terrain/19/858519/353922.terrain differ diff --git a/public/terrain/19/858519/353923.terrain b/public/terrain/19/858519/353923.terrain new file mode 100644 index 000000000..88f60efd4 Binary files /dev/null and b/public/terrain/19/858519/353923.terrain differ diff --git a/public/terrain/19/858519/353924.terrain b/public/terrain/19/858519/353924.terrain new file mode 100644 index 000000000..7b4715bea Binary files /dev/null and b/public/terrain/19/858519/353924.terrain differ diff --git a/public/terrain/19/858519/353925.terrain b/public/terrain/19/858519/353925.terrain new file mode 100644 index 000000000..364ea8ace Binary files /dev/null and b/public/terrain/19/858519/353925.terrain differ diff --git a/public/terrain/19/858519/353926.terrain b/public/terrain/19/858519/353926.terrain new file mode 100644 index 000000000..f3f3c9134 Binary files /dev/null and b/public/terrain/19/858519/353926.terrain differ diff --git a/public/terrain/19/858519/353927.terrain b/public/terrain/19/858519/353927.terrain new file mode 100644 index 000000000..66a75e1d0 Binary files /dev/null and b/public/terrain/19/858519/353927.terrain differ diff --git a/public/terrain/19/858519/353928.terrain b/public/terrain/19/858519/353928.terrain new file mode 100644 index 000000000..6179df6f0 Binary files /dev/null and b/public/terrain/19/858519/353928.terrain differ diff --git a/public/terrain/19/858519/353929.terrain b/public/terrain/19/858519/353929.terrain new file mode 100644 index 000000000..4434a0566 Binary files /dev/null and b/public/terrain/19/858519/353929.terrain differ diff --git a/public/terrain/19/858519/353930.terrain b/public/terrain/19/858519/353930.terrain new file mode 100644 index 000000000..8a6342647 Binary files /dev/null and b/public/terrain/19/858519/353930.terrain differ diff --git a/public/terrain/19/858519/353931.terrain b/public/terrain/19/858519/353931.terrain new file mode 100644 index 000000000..320db9d82 Binary files /dev/null and b/public/terrain/19/858519/353931.terrain differ diff --git a/public/terrain/19/858519/353932.terrain b/public/terrain/19/858519/353932.terrain new file mode 100644 index 000000000..6388b4339 Binary files /dev/null and b/public/terrain/19/858519/353932.terrain differ diff --git a/public/terrain/19/858519/353933.terrain b/public/terrain/19/858519/353933.terrain new file mode 100644 index 000000000..46faafc53 Binary files /dev/null and b/public/terrain/19/858519/353933.terrain differ diff --git a/public/terrain/19/858519/353934.terrain b/public/terrain/19/858519/353934.terrain new file mode 100644 index 000000000..fec9df711 Binary files /dev/null and b/public/terrain/19/858519/353934.terrain differ diff --git a/public/terrain/19/858519/353935.terrain b/public/terrain/19/858519/353935.terrain new file mode 100644 index 000000000..90ec69958 Binary files /dev/null and b/public/terrain/19/858519/353935.terrain differ diff --git a/public/terrain/19/858519/353936.terrain b/public/terrain/19/858519/353936.terrain new file mode 100644 index 000000000..79cd5dd0f Binary files /dev/null and b/public/terrain/19/858519/353936.terrain differ diff --git a/public/terrain/19/858519/353937.terrain b/public/terrain/19/858519/353937.terrain new file mode 100644 index 000000000..b5d70cf6b Binary files /dev/null and b/public/terrain/19/858519/353937.terrain differ diff --git a/public/terrain/19/858519/353938.terrain b/public/terrain/19/858519/353938.terrain new file mode 100644 index 000000000..3da3043da Binary files /dev/null and b/public/terrain/19/858519/353938.terrain differ diff --git a/public/terrain/19/858519/353939.terrain b/public/terrain/19/858519/353939.terrain new file mode 100644 index 000000000..97362e4b7 Binary files /dev/null and b/public/terrain/19/858519/353939.terrain differ diff --git a/public/terrain/19/858519/353940.terrain b/public/terrain/19/858519/353940.terrain new file mode 100644 index 000000000..0b68aa0c5 Binary files /dev/null and b/public/terrain/19/858519/353940.terrain differ diff --git a/public/terrain/19/858519/353941.terrain b/public/terrain/19/858519/353941.terrain new file mode 100644 index 000000000..b4a3826a2 Binary files /dev/null and b/public/terrain/19/858519/353941.terrain differ diff --git a/public/terrain/19/858519/353942.terrain b/public/terrain/19/858519/353942.terrain new file mode 100644 index 000000000..3faa89028 Binary files /dev/null and b/public/terrain/19/858519/353942.terrain differ diff --git a/public/terrain/19/858519/353943.terrain b/public/terrain/19/858519/353943.terrain new file mode 100644 index 000000000..044527b24 Binary files /dev/null and b/public/terrain/19/858519/353943.terrain differ diff --git a/public/terrain/19/858519/353944.terrain b/public/terrain/19/858519/353944.terrain new file mode 100644 index 000000000..3c4bbb3f2 Binary files /dev/null and b/public/terrain/19/858519/353944.terrain differ diff --git a/public/terrain/19/858519/353945.terrain b/public/terrain/19/858519/353945.terrain new file mode 100644 index 000000000..bfdd13abf Binary files /dev/null and b/public/terrain/19/858519/353945.terrain differ diff --git a/public/terrain/19/858519/353946.terrain b/public/terrain/19/858519/353946.terrain new file mode 100644 index 000000000..b6b4fde0c Binary files /dev/null and b/public/terrain/19/858519/353946.terrain differ diff --git a/public/terrain/19/858519/353947.terrain b/public/terrain/19/858519/353947.terrain new file mode 100644 index 000000000..e52490413 Binary files /dev/null and b/public/terrain/19/858519/353947.terrain differ diff --git a/public/terrain/19/858519/353948.terrain b/public/terrain/19/858519/353948.terrain new file mode 100644 index 000000000..12cbbaea0 Binary files /dev/null and b/public/terrain/19/858519/353948.terrain differ diff --git a/public/terrain/19/858519/353949.terrain b/public/terrain/19/858519/353949.terrain new file mode 100644 index 000000000..f7db35f34 Binary files /dev/null and b/public/terrain/19/858519/353949.terrain differ diff --git a/public/terrain/19/858519/353950.terrain b/public/terrain/19/858519/353950.terrain new file mode 100644 index 000000000..bb8d9b74e Binary files /dev/null and b/public/terrain/19/858519/353950.terrain differ diff --git a/public/terrain/19/858519/353951.terrain b/public/terrain/19/858519/353951.terrain new file mode 100644 index 000000000..de322593d Binary files /dev/null and b/public/terrain/19/858519/353951.terrain differ diff --git a/public/terrain/19/858519/353952.terrain b/public/terrain/19/858519/353952.terrain new file mode 100644 index 000000000..daf2cd249 Binary files /dev/null and b/public/terrain/19/858519/353952.terrain differ diff --git a/public/terrain/19/858519/353953.terrain b/public/terrain/19/858519/353953.terrain new file mode 100644 index 000000000..ffacb0e28 Binary files /dev/null and b/public/terrain/19/858519/353953.terrain differ diff --git a/public/terrain/19/858519/353954.terrain b/public/terrain/19/858519/353954.terrain new file mode 100644 index 000000000..c9e4af490 Binary files /dev/null and b/public/terrain/19/858519/353954.terrain differ diff --git a/public/terrain/19/858519/353955.terrain b/public/terrain/19/858519/353955.terrain new file mode 100644 index 000000000..c2615b8f1 Binary files /dev/null and b/public/terrain/19/858519/353955.terrain differ diff --git a/public/terrain/19/858519/353956.terrain b/public/terrain/19/858519/353956.terrain new file mode 100644 index 000000000..9f68d4b8b Binary files /dev/null and b/public/terrain/19/858519/353956.terrain differ diff --git a/public/terrain/19/858519/353957.terrain b/public/terrain/19/858519/353957.terrain new file mode 100644 index 000000000..546dcc9b9 Binary files /dev/null and b/public/terrain/19/858519/353957.terrain differ diff --git a/public/terrain/19/858519/353958.terrain b/public/terrain/19/858519/353958.terrain new file mode 100644 index 000000000..a8cea238a Binary files /dev/null and b/public/terrain/19/858519/353958.terrain differ diff --git a/public/terrain/19/858519/353959.terrain b/public/terrain/19/858519/353959.terrain new file mode 100644 index 000000000..7e7bca239 Binary files /dev/null and b/public/terrain/19/858519/353959.terrain differ diff --git a/public/terrain/19/858519/353960.terrain b/public/terrain/19/858519/353960.terrain new file mode 100644 index 000000000..5a37b09c3 Binary files /dev/null and b/public/terrain/19/858519/353960.terrain differ diff --git a/public/terrain/19/858519/353961.terrain b/public/terrain/19/858519/353961.terrain new file mode 100644 index 000000000..f9851f514 Binary files /dev/null and b/public/terrain/19/858519/353961.terrain differ diff --git a/public/terrain/19/858519/353962.terrain b/public/terrain/19/858519/353962.terrain new file mode 100644 index 000000000..3b4e495db Binary files /dev/null and b/public/terrain/19/858519/353962.terrain differ diff --git a/public/terrain/19/858519/353963.terrain b/public/terrain/19/858519/353963.terrain new file mode 100644 index 000000000..e91ce082e Binary files /dev/null and b/public/terrain/19/858519/353963.terrain differ diff --git a/public/terrain/19/858519/353964.terrain b/public/terrain/19/858519/353964.terrain new file mode 100644 index 000000000..566412695 Binary files /dev/null and b/public/terrain/19/858519/353964.terrain differ diff --git a/public/terrain/19/858519/353965.terrain b/public/terrain/19/858519/353965.terrain new file mode 100644 index 000000000..6e21245dd Binary files /dev/null and b/public/terrain/19/858519/353965.terrain differ diff --git a/public/terrain/19/858519/353966.terrain b/public/terrain/19/858519/353966.terrain new file mode 100644 index 000000000..e9a0dbea3 Binary files /dev/null and b/public/terrain/19/858519/353966.terrain differ diff --git a/public/terrain/19/858519/353967.terrain b/public/terrain/19/858519/353967.terrain new file mode 100644 index 000000000..ea0845509 Binary files /dev/null and b/public/terrain/19/858519/353967.terrain differ diff --git a/public/terrain/19/858519/353968.terrain b/public/terrain/19/858519/353968.terrain new file mode 100644 index 000000000..2e2379c07 Binary files /dev/null and b/public/terrain/19/858519/353968.terrain differ diff --git a/public/terrain/19/858519/353969.terrain b/public/terrain/19/858519/353969.terrain new file mode 100644 index 000000000..c8429b8bd Binary files /dev/null and b/public/terrain/19/858519/353969.terrain differ diff --git a/public/terrain/19/858519/353970.terrain b/public/terrain/19/858519/353970.terrain new file mode 100644 index 000000000..64f1d3a7e Binary files /dev/null and b/public/terrain/19/858519/353970.terrain differ diff --git a/public/terrain/19/858519/353971.terrain b/public/terrain/19/858519/353971.terrain new file mode 100644 index 000000000..76c3d3a88 Binary files /dev/null and b/public/terrain/19/858519/353971.terrain differ diff --git a/public/terrain/19/858519/353972.terrain b/public/terrain/19/858519/353972.terrain new file mode 100644 index 000000000..ea3467845 Binary files /dev/null and b/public/terrain/19/858519/353972.terrain differ diff --git a/public/terrain/19/858519/353973.terrain b/public/terrain/19/858519/353973.terrain new file mode 100644 index 000000000..448b63ba8 Binary files /dev/null and b/public/terrain/19/858519/353973.terrain differ diff --git a/public/terrain/19/858519/353974.terrain b/public/terrain/19/858519/353974.terrain new file mode 100644 index 000000000..ba16dd025 Binary files /dev/null and b/public/terrain/19/858519/353974.terrain differ diff --git a/public/terrain/19/858519/353975.terrain b/public/terrain/19/858519/353975.terrain new file mode 100644 index 000000000..4b124ab21 Binary files /dev/null and b/public/terrain/19/858519/353975.terrain differ diff --git a/public/terrain/19/858519/353976.terrain b/public/terrain/19/858519/353976.terrain new file mode 100644 index 000000000..d58d96baf Binary files /dev/null and b/public/terrain/19/858519/353976.terrain differ diff --git a/public/terrain/19/858519/353977.terrain b/public/terrain/19/858519/353977.terrain new file mode 100644 index 000000000..d6f763e68 Binary files /dev/null and b/public/terrain/19/858519/353977.terrain differ diff --git a/public/terrain/19/858519/353978.terrain b/public/terrain/19/858519/353978.terrain new file mode 100644 index 000000000..af2f5c400 Binary files /dev/null and b/public/terrain/19/858519/353978.terrain differ diff --git a/public/terrain/19/858519/353979.terrain b/public/terrain/19/858519/353979.terrain new file mode 100644 index 000000000..039a49c7a Binary files /dev/null and b/public/terrain/19/858519/353979.terrain differ diff --git a/public/terrain/19/858519/353980.terrain b/public/terrain/19/858519/353980.terrain new file mode 100644 index 000000000..548af60d4 Binary files /dev/null and b/public/terrain/19/858519/353980.terrain differ diff --git a/public/terrain/19/858519/353981.terrain b/public/terrain/19/858519/353981.terrain new file mode 100644 index 000000000..988f9f9ce Binary files /dev/null and b/public/terrain/19/858519/353981.terrain differ diff --git a/public/terrain/19/858519/353982.terrain b/public/terrain/19/858519/353982.terrain new file mode 100644 index 000000000..afe185bd6 Binary files /dev/null and b/public/terrain/19/858519/353982.terrain differ diff --git a/public/terrain/19/858519/353983.terrain b/public/terrain/19/858519/353983.terrain new file mode 100644 index 000000000..fd63c9403 Binary files /dev/null and b/public/terrain/19/858519/353983.terrain differ diff --git a/public/terrain/19/858519/353984.terrain b/public/terrain/19/858519/353984.terrain new file mode 100644 index 000000000..082168765 Binary files /dev/null and b/public/terrain/19/858519/353984.terrain differ diff --git a/public/terrain/19/858519/353985.terrain b/public/terrain/19/858519/353985.terrain new file mode 100644 index 000000000..aa4300bf5 Binary files /dev/null and b/public/terrain/19/858519/353985.terrain differ diff --git a/public/terrain/19/858519/353986.terrain b/public/terrain/19/858519/353986.terrain new file mode 100644 index 000000000..4d0e95b3a Binary files /dev/null and b/public/terrain/19/858519/353986.terrain differ diff --git a/public/terrain/19/858519/353987.terrain b/public/terrain/19/858519/353987.terrain new file mode 100644 index 000000000..44f802684 Binary files /dev/null and b/public/terrain/19/858519/353987.terrain differ diff --git a/public/terrain/19/858519/353988.terrain b/public/terrain/19/858519/353988.terrain new file mode 100644 index 000000000..7d7c41894 Binary files /dev/null and b/public/terrain/19/858519/353988.terrain differ diff --git a/public/terrain/19/858519/353989.terrain b/public/terrain/19/858519/353989.terrain new file mode 100644 index 000000000..9117a155e Binary files /dev/null and b/public/terrain/19/858519/353989.terrain differ diff --git a/public/terrain/19/858519/353990.terrain b/public/terrain/19/858519/353990.terrain new file mode 100644 index 000000000..b8d10c355 Binary files /dev/null and b/public/terrain/19/858519/353990.terrain differ diff --git a/public/terrain/19/858519/353991.terrain b/public/terrain/19/858519/353991.terrain new file mode 100644 index 000000000..f89ca1180 Binary files /dev/null and b/public/terrain/19/858519/353991.terrain differ diff --git a/public/terrain/19/858519/353992.terrain b/public/terrain/19/858519/353992.terrain new file mode 100644 index 000000000..8778dae9f Binary files /dev/null and b/public/terrain/19/858519/353992.terrain differ diff --git a/public/terrain/19/858519/353993.terrain b/public/terrain/19/858519/353993.terrain new file mode 100644 index 000000000..ec16190f5 Binary files /dev/null and b/public/terrain/19/858519/353993.terrain differ diff --git a/public/terrain/19/858519/353994.terrain b/public/terrain/19/858519/353994.terrain new file mode 100644 index 000000000..936645fc7 Binary files /dev/null and b/public/terrain/19/858519/353994.terrain differ diff --git a/public/terrain/19/858519/353995.terrain b/public/terrain/19/858519/353995.terrain new file mode 100644 index 000000000..d60db3abb Binary files /dev/null and b/public/terrain/19/858519/353995.terrain differ diff --git a/public/terrain/19/858519/353996.terrain b/public/terrain/19/858519/353996.terrain new file mode 100644 index 000000000..7c49909d9 Binary files /dev/null and b/public/terrain/19/858519/353996.terrain differ diff --git a/public/terrain/19/858519/353997.terrain b/public/terrain/19/858519/353997.terrain new file mode 100644 index 000000000..641602d42 Binary files /dev/null and b/public/terrain/19/858519/353997.terrain differ diff --git a/public/terrain/19/858519/353998.terrain b/public/terrain/19/858519/353998.terrain new file mode 100644 index 000000000..dcab74103 Binary files /dev/null and b/public/terrain/19/858519/353998.terrain differ diff --git a/public/terrain/19/858519/353999.terrain b/public/terrain/19/858519/353999.terrain new file mode 100644 index 000000000..5cff8a9f7 Binary files /dev/null and b/public/terrain/19/858519/353999.terrain differ diff --git a/public/terrain/19/858519/354000.terrain b/public/terrain/19/858519/354000.terrain new file mode 100644 index 000000000..f70887137 Binary files /dev/null and b/public/terrain/19/858519/354000.terrain differ diff --git a/public/terrain/19/858519/354001.terrain b/public/terrain/19/858519/354001.terrain new file mode 100644 index 000000000..68fecec9d Binary files /dev/null and b/public/terrain/19/858519/354001.terrain differ diff --git a/public/terrain/19/858519/354002.terrain b/public/terrain/19/858519/354002.terrain new file mode 100644 index 000000000..00800bd71 Binary files /dev/null and b/public/terrain/19/858519/354002.terrain differ diff --git a/public/terrain/19/858519/354003.terrain b/public/terrain/19/858519/354003.terrain new file mode 100644 index 000000000..e57618cb6 Binary files /dev/null and b/public/terrain/19/858519/354003.terrain differ diff --git a/public/terrain/19/858519/354004.terrain b/public/terrain/19/858519/354004.terrain new file mode 100644 index 000000000..5dff32f61 Binary files /dev/null and b/public/terrain/19/858519/354004.terrain differ diff --git a/public/terrain/19/858519/354005.terrain b/public/terrain/19/858519/354005.terrain new file mode 100644 index 000000000..d75f0514e Binary files /dev/null and b/public/terrain/19/858519/354005.terrain differ diff --git a/public/terrain/19/858519/354006.terrain b/public/terrain/19/858519/354006.terrain new file mode 100644 index 000000000..b1e9ed566 Binary files /dev/null and b/public/terrain/19/858519/354006.terrain differ diff --git a/public/terrain/19/858519/354007.terrain b/public/terrain/19/858519/354007.terrain new file mode 100644 index 000000000..6f676cf3f Binary files /dev/null and b/public/terrain/19/858519/354007.terrain differ diff --git a/public/terrain/19/858519/354008.terrain b/public/terrain/19/858519/354008.terrain new file mode 100644 index 000000000..bf9102a87 Binary files /dev/null and b/public/terrain/19/858519/354008.terrain differ diff --git a/public/terrain/19/858519/354009.terrain b/public/terrain/19/858519/354009.terrain new file mode 100644 index 000000000..44f7c9c46 Binary files /dev/null and b/public/terrain/19/858519/354009.terrain differ diff --git a/public/terrain/19/858519/354010.terrain b/public/terrain/19/858519/354010.terrain new file mode 100644 index 000000000..c786bfdd2 Binary files /dev/null and b/public/terrain/19/858519/354010.terrain differ diff --git a/public/terrain/19/858519/354011.terrain b/public/terrain/19/858519/354011.terrain new file mode 100644 index 000000000..c3f4932cd Binary files /dev/null and b/public/terrain/19/858519/354011.terrain differ diff --git a/public/terrain/19/858519/354012.terrain b/public/terrain/19/858519/354012.terrain new file mode 100644 index 000000000..f721da52c Binary files /dev/null and b/public/terrain/19/858519/354012.terrain differ diff --git a/public/terrain/19/858519/354013.terrain b/public/terrain/19/858519/354013.terrain new file mode 100644 index 000000000..bdb608b55 Binary files /dev/null and b/public/terrain/19/858519/354013.terrain differ diff --git a/public/terrain/19/858519/354014.terrain b/public/terrain/19/858519/354014.terrain new file mode 100644 index 000000000..6954b7d48 Binary files /dev/null and b/public/terrain/19/858519/354014.terrain differ diff --git a/public/terrain/19/858519/354015.terrain b/public/terrain/19/858519/354015.terrain new file mode 100644 index 000000000..08e3f2384 Binary files /dev/null and b/public/terrain/19/858519/354015.terrain differ diff --git a/public/terrain/19/858519/354016.terrain b/public/terrain/19/858519/354016.terrain new file mode 100644 index 000000000..de101ed06 Binary files /dev/null and b/public/terrain/19/858519/354016.terrain differ diff --git a/public/terrain/19/858519/354017.terrain b/public/terrain/19/858519/354017.terrain new file mode 100644 index 000000000..cbd44b832 Binary files /dev/null and b/public/terrain/19/858519/354017.terrain differ diff --git a/public/terrain/19/858519/354018.terrain b/public/terrain/19/858519/354018.terrain new file mode 100644 index 000000000..a9ac5f31b Binary files /dev/null and b/public/terrain/19/858519/354018.terrain differ diff --git a/public/terrain/19/858519/354019.terrain b/public/terrain/19/858519/354019.terrain new file mode 100644 index 000000000..d44a03d60 Binary files /dev/null and b/public/terrain/19/858519/354019.terrain differ diff --git a/public/terrain/19/858519/354020.terrain b/public/terrain/19/858519/354020.terrain new file mode 100644 index 000000000..4c81c4842 Binary files /dev/null and b/public/terrain/19/858519/354020.terrain differ diff --git a/public/terrain/19/858519/354021.terrain b/public/terrain/19/858519/354021.terrain new file mode 100644 index 000000000..a0174eb3c Binary files /dev/null and b/public/terrain/19/858519/354021.terrain differ diff --git a/public/terrain/19/858519/354022.terrain b/public/terrain/19/858519/354022.terrain new file mode 100644 index 000000000..16b96986e Binary files /dev/null and b/public/terrain/19/858519/354022.terrain differ diff --git a/public/terrain/19/858519/354023.terrain b/public/terrain/19/858519/354023.terrain new file mode 100644 index 000000000..301edb38d Binary files /dev/null and b/public/terrain/19/858519/354023.terrain differ diff --git a/public/terrain/19/858519/354024.terrain b/public/terrain/19/858519/354024.terrain new file mode 100644 index 000000000..ebfb4b8b6 Binary files /dev/null and b/public/terrain/19/858519/354024.terrain differ diff --git a/public/terrain/19/858519/354025.terrain b/public/terrain/19/858519/354025.terrain new file mode 100644 index 000000000..2bc516fb1 Binary files /dev/null and b/public/terrain/19/858519/354025.terrain differ diff --git a/public/terrain/19/858519/354026.terrain b/public/terrain/19/858519/354026.terrain new file mode 100644 index 000000000..3947496c1 Binary files /dev/null and b/public/terrain/19/858519/354026.terrain differ diff --git a/public/terrain/19/858519/354027.terrain b/public/terrain/19/858519/354027.terrain new file mode 100644 index 000000000..7a55ba10c Binary files /dev/null and b/public/terrain/19/858519/354027.terrain differ diff --git a/public/terrain/19/858519/354028.terrain b/public/terrain/19/858519/354028.terrain new file mode 100644 index 000000000..144f8ac05 Binary files /dev/null and b/public/terrain/19/858519/354028.terrain differ diff --git a/public/terrain/19/858519/354029.terrain b/public/terrain/19/858519/354029.terrain new file mode 100644 index 000000000..f4f3893d9 Binary files /dev/null and b/public/terrain/19/858519/354029.terrain differ diff --git a/public/terrain/19/858519/354030.terrain b/public/terrain/19/858519/354030.terrain new file mode 100644 index 000000000..42b6f5ab3 Binary files /dev/null and b/public/terrain/19/858519/354030.terrain differ diff --git a/public/terrain/19/858519/354031.terrain b/public/terrain/19/858519/354031.terrain new file mode 100644 index 000000000..6860734ff Binary files /dev/null and b/public/terrain/19/858519/354031.terrain differ diff --git a/public/terrain/19/858519/354032.terrain b/public/terrain/19/858519/354032.terrain new file mode 100644 index 000000000..bceef43d7 Binary files /dev/null and b/public/terrain/19/858519/354032.terrain differ diff --git a/public/terrain/19/858519/354033.terrain b/public/terrain/19/858519/354033.terrain new file mode 100644 index 000000000..29efb0c88 Binary files /dev/null and b/public/terrain/19/858519/354033.terrain differ diff --git a/public/terrain/19/858519/354034.terrain b/public/terrain/19/858519/354034.terrain new file mode 100644 index 000000000..627fefacf Binary files /dev/null and b/public/terrain/19/858519/354034.terrain differ diff --git a/public/terrain/19/858519/354035.terrain b/public/terrain/19/858519/354035.terrain new file mode 100644 index 000000000..2504e9818 Binary files /dev/null and b/public/terrain/19/858519/354035.terrain differ diff --git a/public/terrain/19/858519/354036.terrain b/public/terrain/19/858519/354036.terrain new file mode 100644 index 000000000..c2ded94c6 Binary files /dev/null and b/public/terrain/19/858519/354036.terrain differ diff --git a/public/terrain/19/858519/354037.terrain b/public/terrain/19/858519/354037.terrain new file mode 100644 index 000000000..8ecfc2d76 Binary files /dev/null and b/public/terrain/19/858519/354037.terrain differ diff --git a/public/terrain/19/858519/354038.terrain b/public/terrain/19/858519/354038.terrain new file mode 100644 index 000000000..59c96a725 Binary files /dev/null and b/public/terrain/19/858519/354038.terrain differ diff --git a/public/terrain/19/858519/354039.terrain b/public/terrain/19/858519/354039.terrain new file mode 100644 index 000000000..154053c77 Binary files /dev/null and b/public/terrain/19/858519/354039.terrain differ diff --git a/public/terrain/19/858519/354040.terrain b/public/terrain/19/858519/354040.terrain new file mode 100644 index 000000000..21c45bd58 Binary files /dev/null and b/public/terrain/19/858519/354040.terrain differ diff --git a/public/terrain/19/858519/354041.terrain b/public/terrain/19/858519/354041.terrain new file mode 100644 index 000000000..77f20800c Binary files /dev/null and b/public/terrain/19/858519/354041.terrain differ diff --git a/public/terrain/19/858519/354042.terrain b/public/terrain/19/858519/354042.terrain new file mode 100644 index 000000000..6c4a0d2ba Binary files /dev/null and b/public/terrain/19/858519/354042.terrain differ diff --git a/public/terrain/19/858519/354043.terrain b/public/terrain/19/858519/354043.terrain new file mode 100644 index 000000000..9010e03c2 Binary files /dev/null and b/public/terrain/19/858519/354043.terrain differ diff --git a/public/terrain/19/858519/354044.terrain b/public/terrain/19/858519/354044.terrain new file mode 100644 index 000000000..1fa687fee Binary files /dev/null and b/public/terrain/19/858519/354044.terrain differ diff --git a/public/terrain/19/858519/354045.terrain b/public/terrain/19/858519/354045.terrain new file mode 100644 index 000000000..43c3d0b03 Binary files /dev/null and b/public/terrain/19/858519/354045.terrain differ diff --git a/public/terrain/19/858519/354046.terrain b/public/terrain/19/858519/354046.terrain new file mode 100644 index 000000000..106e6c26e Binary files /dev/null and b/public/terrain/19/858519/354046.terrain differ diff --git a/public/terrain/19/858519/354047.terrain b/public/terrain/19/858519/354047.terrain new file mode 100644 index 000000000..4abfd2702 Binary files /dev/null and b/public/terrain/19/858519/354047.terrain differ diff --git a/public/terrain/19/858519/354048.terrain b/public/terrain/19/858519/354048.terrain new file mode 100644 index 000000000..efce67f64 Binary files /dev/null and b/public/terrain/19/858519/354048.terrain differ diff --git a/public/terrain/19/858519/354049.terrain b/public/terrain/19/858519/354049.terrain new file mode 100644 index 000000000..f2f1b42cd Binary files /dev/null and b/public/terrain/19/858519/354049.terrain differ diff --git a/public/terrain/19/858519/354050.terrain b/public/terrain/19/858519/354050.terrain new file mode 100644 index 000000000..9c39fda1d Binary files /dev/null and b/public/terrain/19/858519/354050.terrain differ diff --git a/public/terrain/19/858519/354051.terrain b/public/terrain/19/858519/354051.terrain new file mode 100644 index 000000000..8aa0d6ae1 Binary files /dev/null and b/public/terrain/19/858519/354051.terrain differ diff --git a/public/terrain/19/858519/354052.terrain b/public/terrain/19/858519/354052.terrain new file mode 100644 index 000000000..4eb68960d Binary files /dev/null and b/public/terrain/19/858519/354052.terrain differ diff --git a/public/terrain/19/858519/354053.terrain b/public/terrain/19/858519/354053.terrain new file mode 100644 index 000000000..084ee3553 Binary files /dev/null and b/public/terrain/19/858519/354053.terrain differ diff --git a/public/terrain/19/858519/354054.terrain b/public/terrain/19/858519/354054.terrain new file mode 100644 index 000000000..b3caf35d0 Binary files /dev/null and b/public/terrain/19/858519/354054.terrain differ diff --git a/public/terrain/19/858519/354055.terrain b/public/terrain/19/858519/354055.terrain new file mode 100644 index 000000000..0121ab516 Binary files /dev/null and b/public/terrain/19/858519/354055.terrain differ diff --git a/public/terrain/19/858519/354056.terrain b/public/terrain/19/858519/354056.terrain new file mode 100644 index 000000000..7c6c048be Binary files /dev/null and b/public/terrain/19/858519/354056.terrain differ diff --git a/public/terrain/19/858519/354057.terrain b/public/terrain/19/858519/354057.terrain new file mode 100644 index 000000000..9cfcc4d41 Binary files /dev/null and b/public/terrain/19/858519/354057.terrain differ diff --git a/public/terrain/19/858519/354058.terrain b/public/terrain/19/858519/354058.terrain new file mode 100644 index 000000000..668c01684 Binary files /dev/null and b/public/terrain/19/858519/354058.terrain differ diff --git a/public/terrain/19/858519/354059.terrain b/public/terrain/19/858519/354059.terrain new file mode 100644 index 000000000..f8c3c9be2 Binary files /dev/null and b/public/terrain/19/858519/354059.terrain differ diff --git a/public/terrain/19/858520/353743.terrain b/public/terrain/19/858520/353743.terrain new file mode 100644 index 000000000..2d1ab9a78 Binary files /dev/null and b/public/terrain/19/858520/353743.terrain differ diff --git a/public/terrain/19/858520/353744.terrain b/public/terrain/19/858520/353744.terrain new file mode 100644 index 000000000..b426eb9fb Binary files /dev/null and b/public/terrain/19/858520/353744.terrain differ diff --git a/public/terrain/19/858520/353745.terrain b/public/terrain/19/858520/353745.terrain new file mode 100644 index 000000000..2c0ef27d1 Binary files /dev/null and b/public/terrain/19/858520/353745.terrain differ diff --git a/public/terrain/19/858520/353746.terrain b/public/terrain/19/858520/353746.terrain new file mode 100644 index 000000000..ac53a7bfb Binary files /dev/null and b/public/terrain/19/858520/353746.terrain differ diff --git a/public/terrain/19/858520/353747.terrain b/public/terrain/19/858520/353747.terrain new file mode 100644 index 000000000..ecbc694da Binary files /dev/null and b/public/terrain/19/858520/353747.terrain differ diff --git a/public/terrain/19/858520/353748.terrain b/public/terrain/19/858520/353748.terrain new file mode 100644 index 000000000..72f28a57e Binary files /dev/null and b/public/terrain/19/858520/353748.terrain differ diff --git a/public/terrain/19/858520/353749.terrain b/public/terrain/19/858520/353749.terrain new file mode 100644 index 000000000..e6b6618b9 Binary files /dev/null and b/public/terrain/19/858520/353749.terrain differ diff --git a/public/terrain/19/858520/353750.terrain b/public/terrain/19/858520/353750.terrain new file mode 100644 index 000000000..16f3a8e2f Binary files /dev/null and b/public/terrain/19/858520/353750.terrain differ diff --git a/public/terrain/19/858520/353751.terrain b/public/terrain/19/858520/353751.terrain new file mode 100644 index 000000000..d017120fd Binary files /dev/null and b/public/terrain/19/858520/353751.terrain differ diff --git a/public/terrain/19/858520/353752.terrain b/public/terrain/19/858520/353752.terrain new file mode 100644 index 000000000..68755bfb2 Binary files /dev/null and b/public/terrain/19/858520/353752.terrain differ diff --git a/public/terrain/19/858520/353753.terrain b/public/terrain/19/858520/353753.terrain new file mode 100644 index 000000000..a043edbbe Binary files /dev/null and b/public/terrain/19/858520/353753.terrain differ diff --git a/public/terrain/19/858520/353754.terrain b/public/terrain/19/858520/353754.terrain new file mode 100644 index 000000000..ceec6fa88 Binary files /dev/null and b/public/terrain/19/858520/353754.terrain differ diff --git a/public/terrain/19/858520/353755.terrain b/public/terrain/19/858520/353755.terrain new file mode 100644 index 000000000..3bcd100fb Binary files /dev/null and b/public/terrain/19/858520/353755.terrain differ diff --git a/public/terrain/19/858520/353756.terrain b/public/terrain/19/858520/353756.terrain new file mode 100644 index 000000000..bc3e9d124 Binary files /dev/null and b/public/terrain/19/858520/353756.terrain differ diff --git a/public/terrain/19/858520/353757.terrain b/public/terrain/19/858520/353757.terrain new file mode 100644 index 000000000..5cbaa2046 Binary files /dev/null and b/public/terrain/19/858520/353757.terrain differ diff --git a/public/terrain/19/858520/353758.terrain b/public/terrain/19/858520/353758.terrain new file mode 100644 index 000000000..e7a029095 Binary files /dev/null and b/public/terrain/19/858520/353758.terrain differ diff --git a/public/terrain/19/858520/353759.terrain b/public/terrain/19/858520/353759.terrain new file mode 100644 index 000000000..d3c2bf198 Binary files /dev/null and b/public/terrain/19/858520/353759.terrain differ diff --git a/public/terrain/19/858520/353760.terrain b/public/terrain/19/858520/353760.terrain new file mode 100644 index 000000000..1b19eef41 Binary files /dev/null and b/public/terrain/19/858520/353760.terrain differ diff --git a/public/terrain/19/858520/353761.terrain b/public/terrain/19/858520/353761.terrain new file mode 100644 index 000000000..ca60d57a7 Binary files /dev/null and b/public/terrain/19/858520/353761.terrain differ diff --git a/public/terrain/19/858520/353762.terrain b/public/terrain/19/858520/353762.terrain new file mode 100644 index 000000000..2ebbaaa0e Binary files /dev/null and b/public/terrain/19/858520/353762.terrain differ diff --git a/public/terrain/19/858520/353763.terrain b/public/terrain/19/858520/353763.terrain new file mode 100644 index 000000000..308d1c557 Binary files /dev/null and b/public/terrain/19/858520/353763.terrain differ diff --git a/public/terrain/19/858520/353764.terrain b/public/terrain/19/858520/353764.terrain new file mode 100644 index 000000000..dfb4ba61d Binary files /dev/null and b/public/terrain/19/858520/353764.terrain differ diff --git a/public/terrain/19/858520/353765.terrain b/public/terrain/19/858520/353765.terrain new file mode 100644 index 000000000..84e664b26 Binary files /dev/null and b/public/terrain/19/858520/353765.terrain differ diff --git a/public/terrain/19/858520/353766.terrain b/public/terrain/19/858520/353766.terrain new file mode 100644 index 000000000..014e4eb41 Binary files /dev/null and b/public/terrain/19/858520/353766.terrain differ diff --git a/public/terrain/19/858520/353767.terrain b/public/terrain/19/858520/353767.terrain new file mode 100644 index 000000000..34e3e568e Binary files /dev/null and b/public/terrain/19/858520/353767.terrain differ diff --git a/public/terrain/19/858520/353768.terrain b/public/terrain/19/858520/353768.terrain new file mode 100644 index 000000000..5fc380acf Binary files /dev/null and b/public/terrain/19/858520/353768.terrain differ diff --git a/public/terrain/19/858520/353769.terrain b/public/terrain/19/858520/353769.terrain new file mode 100644 index 000000000..0ccb24073 Binary files /dev/null and b/public/terrain/19/858520/353769.terrain differ diff --git a/public/terrain/19/858520/353770.terrain b/public/terrain/19/858520/353770.terrain new file mode 100644 index 000000000..11f68d162 Binary files /dev/null and b/public/terrain/19/858520/353770.terrain differ diff --git a/public/terrain/19/858520/353771.terrain b/public/terrain/19/858520/353771.terrain new file mode 100644 index 000000000..1b81f9843 Binary files /dev/null and b/public/terrain/19/858520/353771.terrain differ diff --git a/public/terrain/19/858520/353772.terrain b/public/terrain/19/858520/353772.terrain new file mode 100644 index 000000000..fc6b817c4 Binary files /dev/null and b/public/terrain/19/858520/353772.terrain differ diff --git a/public/terrain/19/858520/353773.terrain b/public/terrain/19/858520/353773.terrain new file mode 100644 index 000000000..2721521ac Binary files /dev/null and b/public/terrain/19/858520/353773.terrain differ diff --git a/public/terrain/19/858520/353774.terrain b/public/terrain/19/858520/353774.terrain new file mode 100644 index 000000000..ca9915015 Binary files /dev/null and b/public/terrain/19/858520/353774.terrain differ diff --git a/public/terrain/19/858520/353775.terrain b/public/terrain/19/858520/353775.terrain new file mode 100644 index 000000000..6e9bc0892 Binary files /dev/null and b/public/terrain/19/858520/353775.terrain differ diff --git a/public/terrain/19/858520/353776.terrain b/public/terrain/19/858520/353776.terrain new file mode 100644 index 000000000..cfa3dd1a2 Binary files /dev/null and b/public/terrain/19/858520/353776.terrain differ diff --git a/public/terrain/19/858520/353777.terrain b/public/terrain/19/858520/353777.terrain new file mode 100644 index 000000000..5dab0b48e Binary files /dev/null and b/public/terrain/19/858520/353777.terrain differ diff --git a/public/terrain/19/858520/353778.terrain b/public/terrain/19/858520/353778.terrain new file mode 100644 index 000000000..565ad31a5 Binary files /dev/null and b/public/terrain/19/858520/353778.terrain differ diff --git a/public/terrain/19/858520/353779.terrain b/public/terrain/19/858520/353779.terrain new file mode 100644 index 000000000..8967d9653 Binary files /dev/null and b/public/terrain/19/858520/353779.terrain differ diff --git a/public/terrain/19/858520/353780.terrain b/public/terrain/19/858520/353780.terrain new file mode 100644 index 000000000..0cd359c20 Binary files /dev/null and b/public/terrain/19/858520/353780.terrain differ diff --git a/public/terrain/19/858520/353781.terrain b/public/terrain/19/858520/353781.terrain new file mode 100644 index 000000000..766beaa68 Binary files /dev/null and b/public/terrain/19/858520/353781.terrain differ diff --git a/public/terrain/19/858520/353782.terrain b/public/terrain/19/858520/353782.terrain new file mode 100644 index 000000000..97d8b9142 Binary files /dev/null and b/public/terrain/19/858520/353782.terrain differ diff --git a/public/terrain/19/858520/353783.terrain b/public/terrain/19/858520/353783.terrain new file mode 100644 index 000000000..38c740af7 Binary files /dev/null and b/public/terrain/19/858520/353783.terrain differ diff --git a/public/terrain/19/858520/353784.terrain b/public/terrain/19/858520/353784.terrain new file mode 100644 index 000000000..86bd0800d Binary files /dev/null and b/public/terrain/19/858520/353784.terrain differ diff --git a/public/terrain/19/858520/353785.terrain b/public/terrain/19/858520/353785.terrain new file mode 100644 index 000000000..763d279f7 Binary files /dev/null and b/public/terrain/19/858520/353785.terrain differ diff --git a/public/terrain/19/858520/353786.terrain b/public/terrain/19/858520/353786.terrain new file mode 100644 index 000000000..7a7b387af Binary files /dev/null and b/public/terrain/19/858520/353786.terrain differ diff --git a/public/terrain/19/858520/353787.terrain b/public/terrain/19/858520/353787.terrain new file mode 100644 index 000000000..aef069d35 Binary files /dev/null and b/public/terrain/19/858520/353787.terrain differ diff --git a/public/terrain/19/858520/353788.terrain b/public/terrain/19/858520/353788.terrain new file mode 100644 index 000000000..3c6d26bcd Binary files /dev/null and b/public/terrain/19/858520/353788.terrain differ diff --git a/public/terrain/19/858520/353789.terrain b/public/terrain/19/858520/353789.terrain new file mode 100644 index 000000000..c2700afa9 Binary files /dev/null and b/public/terrain/19/858520/353789.terrain differ diff --git a/public/terrain/19/858520/353790.terrain b/public/terrain/19/858520/353790.terrain new file mode 100644 index 000000000..0608a17fb Binary files /dev/null and b/public/terrain/19/858520/353790.terrain differ diff --git a/public/terrain/19/858520/353791.terrain b/public/terrain/19/858520/353791.terrain new file mode 100644 index 000000000..6316f8079 Binary files /dev/null and b/public/terrain/19/858520/353791.terrain differ diff --git a/public/terrain/19/858520/353792.terrain b/public/terrain/19/858520/353792.terrain new file mode 100644 index 000000000..1d6aca39e Binary files /dev/null and b/public/terrain/19/858520/353792.terrain differ diff --git a/public/terrain/19/858520/353793.terrain b/public/terrain/19/858520/353793.terrain new file mode 100644 index 000000000..28391f485 Binary files /dev/null and b/public/terrain/19/858520/353793.terrain differ diff --git a/public/terrain/19/858520/353794.terrain b/public/terrain/19/858520/353794.terrain new file mode 100644 index 000000000..28df2178a Binary files /dev/null and b/public/terrain/19/858520/353794.terrain differ diff --git a/public/terrain/19/858520/353795.terrain b/public/terrain/19/858520/353795.terrain new file mode 100644 index 000000000..f70586703 Binary files /dev/null and b/public/terrain/19/858520/353795.terrain differ diff --git a/public/terrain/19/858520/353796.terrain b/public/terrain/19/858520/353796.terrain new file mode 100644 index 000000000..a444c6391 Binary files /dev/null and b/public/terrain/19/858520/353796.terrain differ diff --git a/public/terrain/19/858520/353797.terrain b/public/terrain/19/858520/353797.terrain new file mode 100644 index 000000000..3d820eaf7 Binary files /dev/null and b/public/terrain/19/858520/353797.terrain differ diff --git a/public/terrain/19/858520/353798.terrain b/public/terrain/19/858520/353798.terrain new file mode 100644 index 000000000..2e01ed56f Binary files /dev/null and b/public/terrain/19/858520/353798.terrain differ diff --git a/public/terrain/19/858520/353799.terrain b/public/terrain/19/858520/353799.terrain new file mode 100644 index 000000000..2e4a5575b Binary files /dev/null and b/public/terrain/19/858520/353799.terrain differ diff --git a/public/terrain/19/858520/353800.terrain b/public/terrain/19/858520/353800.terrain new file mode 100644 index 000000000..5b4fb689b Binary files /dev/null and b/public/terrain/19/858520/353800.terrain differ diff --git a/public/terrain/19/858520/353801.terrain b/public/terrain/19/858520/353801.terrain new file mode 100644 index 000000000..4ba771245 Binary files /dev/null and b/public/terrain/19/858520/353801.terrain differ diff --git a/public/terrain/19/858520/353802.terrain b/public/terrain/19/858520/353802.terrain new file mode 100644 index 000000000..32bf7371c Binary files /dev/null and b/public/terrain/19/858520/353802.terrain differ diff --git a/public/terrain/19/858520/353803.terrain b/public/terrain/19/858520/353803.terrain new file mode 100644 index 000000000..35f57dd8e Binary files /dev/null and b/public/terrain/19/858520/353803.terrain differ diff --git a/public/terrain/19/858520/353804.terrain b/public/terrain/19/858520/353804.terrain new file mode 100644 index 000000000..e4c9d5379 Binary files /dev/null and b/public/terrain/19/858520/353804.terrain differ diff --git a/public/terrain/19/858520/353805.terrain b/public/terrain/19/858520/353805.terrain new file mode 100644 index 000000000..1d5aa06fe Binary files /dev/null and b/public/terrain/19/858520/353805.terrain differ diff --git a/public/terrain/19/858520/353806.terrain b/public/terrain/19/858520/353806.terrain new file mode 100644 index 000000000..97ff7d4ff Binary files /dev/null and b/public/terrain/19/858520/353806.terrain differ diff --git a/public/terrain/19/858520/353807.terrain b/public/terrain/19/858520/353807.terrain new file mode 100644 index 000000000..d2f6fe577 Binary files /dev/null and b/public/terrain/19/858520/353807.terrain differ diff --git a/public/terrain/19/858520/353808.terrain b/public/terrain/19/858520/353808.terrain new file mode 100644 index 000000000..88bc0227b Binary files /dev/null and b/public/terrain/19/858520/353808.terrain differ diff --git a/public/terrain/19/858520/353809.terrain b/public/terrain/19/858520/353809.terrain new file mode 100644 index 000000000..ae7433584 Binary files /dev/null and b/public/terrain/19/858520/353809.terrain differ diff --git a/public/terrain/19/858520/353810.terrain b/public/terrain/19/858520/353810.terrain new file mode 100644 index 000000000..444f7f7ff Binary files /dev/null and b/public/terrain/19/858520/353810.terrain differ diff --git a/public/terrain/19/858520/353811.terrain b/public/terrain/19/858520/353811.terrain new file mode 100644 index 000000000..80a6a1a4e Binary files /dev/null and b/public/terrain/19/858520/353811.terrain differ diff --git a/public/terrain/19/858520/353812.terrain b/public/terrain/19/858520/353812.terrain new file mode 100644 index 000000000..2644b784f Binary files /dev/null and b/public/terrain/19/858520/353812.terrain differ diff --git a/public/terrain/19/858520/353813.terrain b/public/terrain/19/858520/353813.terrain new file mode 100644 index 000000000..67199cb6e Binary files /dev/null and b/public/terrain/19/858520/353813.terrain differ diff --git a/public/terrain/19/858520/353814.terrain b/public/terrain/19/858520/353814.terrain new file mode 100644 index 000000000..36bb4c3bd Binary files /dev/null and b/public/terrain/19/858520/353814.terrain differ diff --git a/public/terrain/19/858520/353815.terrain b/public/terrain/19/858520/353815.terrain new file mode 100644 index 000000000..d173ba85d Binary files /dev/null and b/public/terrain/19/858520/353815.terrain differ diff --git a/public/terrain/19/858520/353816.terrain b/public/terrain/19/858520/353816.terrain new file mode 100644 index 000000000..7d34e22d8 Binary files /dev/null and b/public/terrain/19/858520/353816.terrain differ diff --git a/public/terrain/19/858520/353817.terrain b/public/terrain/19/858520/353817.terrain new file mode 100644 index 000000000..0eb8894c3 Binary files /dev/null and b/public/terrain/19/858520/353817.terrain differ diff --git a/public/terrain/19/858520/353818.terrain b/public/terrain/19/858520/353818.terrain new file mode 100644 index 000000000..aed13e4f2 Binary files /dev/null and b/public/terrain/19/858520/353818.terrain differ diff --git a/public/terrain/19/858520/353819.terrain b/public/terrain/19/858520/353819.terrain new file mode 100644 index 000000000..7961c9a13 Binary files /dev/null and b/public/terrain/19/858520/353819.terrain differ diff --git a/public/terrain/19/858520/353820.terrain b/public/terrain/19/858520/353820.terrain new file mode 100644 index 000000000..5e6617e8f Binary files /dev/null and b/public/terrain/19/858520/353820.terrain differ diff --git a/public/terrain/19/858520/353821.terrain b/public/terrain/19/858520/353821.terrain new file mode 100644 index 000000000..884c63701 Binary files /dev/null and b/public/terrain/19/858520/353821.terrain differ diff --git a/public/terrain/19/858520/353822.terrain b/public/terrain/19/858520/353822.terrain new file mode 100644 index 000000000..c092f6f4a Binary files /dev/null and b/public/terrain/19/858520/353822.terrain differ diff --git a/public/terrain/19/858520/353823.terrain b/public/terrain/19/858520/353823.terrain new file mode 100644 index 000000000..b341185e2 Binary files /dev/null and b/public/terrain/19/858520/353823.terrain differ diff --git a/public/terrain/19/858520/353824.terrain b/public/terrain/19/858520/353824.terrain new file mode 100644 index 000000000..24713d9d6 Binary files /dev/null and b/public/terrain/19/858520/353824.terrain differ diff --git a/public/terrain/19/858520/353825.terrain b/public/terrain/19/858520/353825.terrain new file mode 100644 index 000000000..13bc083ca Binary files /dev/null and b/public/terrain/19/858520/353825.terrain differ diff --git a/public/terrain/19/858520/353826.terrain b/public/terrain/19/858520/353826.terrain new file mode 100644 index 000000000..2137e0348 Binary files /dev/null and b/public/terrain/19/858520/353826.terrain differ diff --git a/public/terrain/19/858520/353827.terrain b/public/terrain/19/858520/353827.terrain new file mode 100644 index 000000000..15c04e36a Binary files /dev/null and b/public/terrain/19/858520/353827.terrain differ diff --git a/public/terrain/19/858520/353828.terrain b/public/terrain/19/858520/353828.terrain new file mode 100644 index 000000000..435336f27 Binary files /dev/null and b/public/terrain/19/858520/353828.terrain differ diff --git a/public/terrain/19/858520/353829.terrain b/public/terrain/19/858520/353829.terrain new file mode 100644 index 000000000..89779ec89 Binary files /dev/null and b/public/terrain/19/858520/353829.terrain differ diff --git a/public/terrain/19/858520/353830.terrain b/public/terrain/19/858520/353830.terrain new file mode 100644 index 000000000..9dd5adba0 Binary files /dev/null and b/public/terrain/19/858520/353830.terrain differ diff --git a/public/terrain/19/858520/353831.terrain b/public/terrain/19/858520/353831.terrain new file mode 100644 index 000000000..d0efea64b Binary files /dev/null and b/public/terrain/19/858520/353831.terrain differ diff --git a/public/terrain/19/858520/353832.terrain b/public/terrain/19/858520/353832.terrain new file mode 100644 index 000000000..acb401aff Binary files /dev/null and b/public/terrain/19/858520/353832.terrain differ diff --git a/public/terrain/19/858520/353833.terrain b/public/terrain/19/858520/353833.terrain new file mode 100644 index 000000000..93b071a2e Binary files /dev/null and b/public/terrain/19/858520/353833.terrain differ diff --git a/public/terrain/19/858520/353834.terrain b/public/terrain/19/858520/353834.terrain new file mode 100644 index 000000000..46022b69b Binary files /dev/null and b/public/terrain/19/858520/353834.terrain differ diff --git a/public/terrain/19/858520/353835.terrain b/public/terrain/19/858520/353835.terrain new file mode 100644 index 000000000..76d31ef5c Binary files /dev/null and b/public/terrain/19/858520/353835.terrain differ diff --git a/public/terrain/19/858520/353836.terrain b/public/terrain/19/858520/353836.terrain new file mode 100644 index 000000000..b0be3511d Binary files /dev/null and b/public/terrain/19/858520/353836.terrain differ diff --git a/public/terrain/19/858520/353837.terrain b/public/terrain/19/858520/353837.terrain new file mode 100644 index 000000000..3c1f835c9 Binary files /dev/null and b/public/terrain/19/858520/353837.terrain differ diff --git a/public/terrain/19/858520/353838.terrain b/public/terrain/19/858520/353838.terrain new file mode 100644 index 000000000..9c86ccbfd Binary files /dev/null and b/public/terrain/19/858520/353838.terrain differ diff --git a/public/terrain/19/858520/353839.terrain b/public/terrain/19/858520/353839.terrain new file mode 100644 index 000000000..8b63226a1 Binary files /dev/null and b/public/terrain/19/858520/353839.terrain differ diff --git a/public/terrain/19/858520/353840.terrain b/public/terrain/19/858520/353840.terrain new file mode 100644 index 000000000..b94934449 Binary files /dev/null and b/public/terrain/19/858520/353840.terrain differ diff --git a/public/terrain/19/858520/353841.terrain b/public/terrain/19/858520/353841.terrain new file mode 100644 index 000000000..54a19f92f Binary files /dev/null and b/public/terrain/19/858520/353841.terrain differ diff --git a/public/terrain/19/858520/353842.terrain b/public/terrain/19/858520/353842.terrain new file mode 100644 index 000000000..40918719e Binary files /dev/null and b/public/terrain/19/858520/353842.terrain differ diff --git a/public/terrain/19/858520/353843.terrain b/public/terrain/19/858520/353843.terrain new file mode 100644 index 000000000..08b5fd404 Binary files /dev/null and b/public/terrain/19/858520/353843.terrain differ diff --git a/public/terrain/19/858520/353844.terrain b/public/terrain/19/858520/353844.terrain new file mode 100644 index 000000000..6ece04347 Binary files /dev/null and b/public/terrain/19/858520/353844.terrain differ diff --git a/public/terrain/19/858520/353845.terrain b/public/terrain/19/858520/353845.terrain new file mode 100644 index 000000000..bee39514a Binary files /dev/null and b/public/terrain/19/858520/353845.terrain differ diff --git a/public/terrain/19/858520/353846.terrain b/public/terrain/19/858520/353846.terrain new file mode 100644 index 000000000..5291b8627 Binary files /dev/null and b/public/terrain/19/858520/353846.terrain differ diff --git a/public/terrain/19/858520/353847.terrain b/public/terrain/19/858520/353847.terrain new file mode 100644 index 000000000..17a18f5cb Binary files /dev/null and b/public/terrain/19/858520/353847.terrain differ diff --git a/public/terrain/19/858520/353848.terrain b/public/terrain/19/858520/353848.terrain new file mode 100644 index 000000000..13a7dc179 Binary files /dev/null and b/public/terrain/19/858520/353848.terrain differ diff --git a/public/terrain/19/858520/353849.terrain b/public/terrain/19/858520/353849.terrain new file mode 100644 index 000000000..1615677bc Binary files /dev/null and b/public/terrain/19/858520/353849.terrain differ diff --git a/public/terrain/19/858520/353850.terrain b/public/terrain/19/858520/353850.terrain new file mode 100644 index 000000000..14b499e5d Binary files /dev/null and b/public/terrain/19/858520/353850.terrain differ diff --git a/public/terrain/19/858520/353851.terrain b/public/terrain/19/858520/353851.terrain new file mode 100644 index 000000000..d1739a2aa Binary files /dev/null and b/public/terrain/19/858520/353851.terrain differ diff --git a/public/terrain/19/858520/353852.terrain b/public/terrain/19/858520/353852.terrain new file mode 100644 index 000000000..2d8135f3c Binary files /dev/null and b/public/terrain/19/858520/353852.terrain differ diff --git a/public/terrain/19/858520/353853.terrain b/public/terrain/19/858520/353853.terrain new file mode 100644 index 000000000..ce509d0ac Binary files /dev/null and b/public/terrain/19/858520/353853.terrain differ diff --git a/public/terrain/19/858520/353854.terrain b/public/terrain/19/858520/353854.terrain new file mode 100644 index 000000000..dd395d258 Binary files /dev/null and b/public/terrain/19/858520/353854.terrain differ diff --git a/public/terrain/19/858520/353855.terrain b/public/terrain/19/858520/353855.terrain new file mode 100644 index 000000000..590d9c422 Binary files /dev/null and b/public/terrain/19/858520/353855.terrain differ diff --git a/public/terrain/19/858520/353856.terrain b/public/terrain/19/858520/353856.terrain new file mode 100644 index 000000000..562aa5ce3 Binary files /dev/null and b/public/terrain/19/858520/353856.terrain differ diff --git a/public/terrain/19/858520/353857.terrain b/public/terrain/19/858520/353857.terrain new file mode 100644 index 000000000..b84a0618f Binary files /dev/null and b/public/terrain/19/858520/353857.terrain differ diff --git a/public/terrain/19/858520/353858.terrain b/public/terrain/19/858520/353858.terrain new file mode 100644 index 000000000..147f1fcb0 Binary files /dev/null and b/public/terrain/19/858520/353858.terrain differ diff --git a/public/terrain/19/858520/353859.terrain b/public/terrain/19/858520/353859.terrain new file mode 100644 index 000000000..3b60bb080 Binary files /dev/null and b/public/terrain/19/858520/353859.terrain differ diff --git a/public/terrain/19/858520/353860.terrain b/public/terrain/19/858520/353860.terrain new file mode 100644 index 000000000..430df19e6 Binary files /dev/null and b/public/terrain/19/858520/353860.terrain differ diff --git a/public/terrain/19/858520/353861.terrain b/public/terrain/19/858520/353861.terrain new file mode 100644 index 000000000..e05a178ea Binary files /dev/null and b/public/terrain/19/858520/353861.terrain differ diff --git a/public/terrain/19/858520/353862.terrain b/public/terrain/19/858520/353862.terrain new file mode 100644 index 000000000..12dff8b1d Binary files /dev/null and b/public/terrain/19/858520/353862.terrain differ diff --git a/public/terrain/19/858520/353863.terrain b/public/terrain/19/858520/353863.terrain new file mode 100644 index 000000000..ab92bf5ee Binary files /dev/null and b/public/terrain/19/858520/353863.terrain differ diff --git a/public/terrain/19/858520/353864.terrain b/public/terrain/19/858520/353864.terrain new file mode 100644 index 000000000..418ba2636 Binary files /dev/null and b/public/terrain/19/858520/353864.terrain differ diff --git a/public/terrain/19/858520/353865.terrain b/public/terrain/19/858520/353865.terrain new file mode 100644 index 000000000..5004eea2b Binary files /dev/null and b/public/terrain/19/858520/353865.terrain differ diff --git a/public/terrain/19/858520/353866.terrain b/public/terrain/19/858520/353866.terrain new file mode 100644 index 000000000..04c8664ca Binary files /dev/null and b/public/terrain/19/858520/353866.terrain differ diff --git a/public/terrain/19/858520/353867.terrain b/public/terrain/19/858520/353867.terrain new file mode 100644 index 000000000..dfc93dd80 Binary files /dev/null and b/public/terrain/19/858520/353867.terrain differ diff --git a/public/terrain/19/858520/353868.terrain b/public/terrain/19/858520/353868.terrain new file mode 100644 index 000000000..0a4f8ee9b Binary files /dev/null and b/public/terrain/19/858520/353868.terrain differ diff --git a/public/terrain/19/858520/353869.terrain b/public/terrain/19/858520/353869.terrain new file mode 100644 index 000000000..ce402bd73 Binary files /dev/null and b/public/terrain/19/858520/353869.terrain differ diff --git a/public/terrain/19/858520/353870.terrain b/public/terrain/19/858520/353870.terrain new file mode 100644 index 000000000..5312ffa74 Binary files /dev/null and b/public/terrain/19/858520/353870.terrain differ diff --git a/public/terrain/19/858520/353871.terrain b/public/terrain/19/858520/353871.terrain new file mode 100644 index 000000000..d02c4b2ee Binary files /dev/null and b/public/terrain/19/858520/353871.terrain differ diff --git a/public/terrain/19/858520/353872.terrain b/public/terrain/19/858520/353872.terrain new file mode 100644 index 000000000..0eca331b2 Binary files /dev/null and b/public/terrain/19/858520/353872.terrain differ diff --git a/public/terrain/19/858520/353873.terrain b/public/terrain/19/858520/353873.terrain new file mode 100644 index 000000000..707d590f8 Binary files /dev/null and b/public/terrain/19/858520/353873.terrain differ diff --git a/public/terrain/19/858520/353874.terrain b/public/terrain/19/858520/353874.terrain new file mode 100644 index 000000000..369d006e9 Binary files /dev/null and b/public/terrain/19/858520/353874.terrain differ diff --git a/public/terrain/19/858520/353875.terrain b/public/terrain/19/858520/353875.terrain new file mode 100644 index 000000000..d1b31f073 Binary files /dev/null and b/public/terrain/19/858520/353875.terrain differ diff --git a/public/terrain/19/858520/353876.terrain b/public/terrain/19/858520/353876.terrain new file mode 100644 index 000000000..9a6265cdb Binary files /dev/null and b/public/terrain/19/858520/353876.terrain differ diff --git a/public/terrain/19/858520/353877.terrain b/public/terrain/19/858520/353877.terrain new file mode 100644 index 000000000..38c39cf68 Binary files /dev/null and b/public/terrain/19/858520/353877.terrain differ diff --git a/public/terrain/19/858520/353878.terrain b/public/terrain/19/858520/353878.terrain new file mode 100644 index 000000000..460304ac2 Binary files /dev/null and b/public/terrain/19/858520/353878.terrain differ diff --git a/public/terrain/19/858520/353879.terrain b/public/terrain/19/858520/353879.terrain new file mode 100644 index 000000000..ce51a75f5 Binary files /dev/null and b/public/terrain/19/858520/353879.terrain differ diff --git a/public/terrain/19/858520/353880.terrain b/public/terrain/19/858520/353880.terrain new file mode 100644 index 000000000..fd2dc605c Binary files /dev/null and b/public/terrain/19/858520/353880.terrain differ diff --git a/public/terrain/19/858520/353881.terrain b/public/terrain/19/858520/353881.terrain new file mode 100644 index 000000000..7afdbbbfe Binary files /dev/null and b/public/terrain/19/858520/353881.terrain differ diff --git a/public/terrain/19/858520/353882.terrain b/public/terrain/19/858520/353882.terrain new file mode 100644 index 000000000..ba66c3f15 Binary files /dev/null and b/public/terrain/19/858520/353882.terrain differ diff --git a/public/terrain/19/858520/353883.terrain b/public/terrain/19/858520/353883.terrain new file mode 100644 index 000000000..addb90044 Binary files /dev/null and b/public/terrain/19/858520/353883.terrain differ diff --git a/public/terrain/19/858520/353884.terrain b/public/terrain/19/858520/353884.terrain new file mode 100644 index 000000000..d62084cc6 Binary files /dev/null and b/public/terrain/19/858520/353884.terrain differ diff --git a/public/terrain/19/858520/353885.terrain b/public/terrain/19/858520/353885.terrain new file mode 100644 index 000000000..e89404686 Binary files /dev/null and b/public/terrain/19/858520/353885.terrain differ diff --git a/public/terrain/19/858520/353886.terrain b/public/terrain/19/858520/353886.terrain new file mode 100644 index 000000000..0cf16017c Binary files /dev/null and b/public/terrain/19/858520/353886.terrain differ diff --git a/public/terrain/19/858520/353887.terrain b/public/terrain/19/858520/353887.terrain new file mode 100644 index 000000000..afca8e30c Binary files /dev/null and b/public/terrain/19/858520/353887.terrain differ diff --git a/public/terrain/19/858520/353888.terrain b/public/terrain/19/858520/353888.terrain new file mode 100644 index 000000000..b8627ac45 Binary files /dev/null and b/public/terrain/19/858520/353888.terrain differ diff --git a/public/terrain/19/858520/353889.terrain b/public/terrain/19/858520/353889.terrain new file mode 100644 index 000000000..903fb7342 Binary files /dev/null and b/public/terrain/19/858520/353889.terrain differ diff --git a/public/terrain/19/858520/353890.terrain b/public/terrain/19/858520/353890.terrain new file mode 100644 index 000000000..597b3f30b Binary files /dev/null and b/public/terrain/19/858520/353890.terrain differ diff --git a/public/terrain/19/858520/353891.terrain b/public/terrain/19/858520/353891.terrain new file mode 100644 index 000000000..2d8fcaf5d Binary files /dev/null and b/public/terrain/19/858520/353891.terrain differ diff --git a/public/terrain/19/858520/353892.terrain b/public/terrain/19/858520/353892.terrain new file mode 100644 index 000000000..1542b09a7 Binary files /dev/null and b/public/terrain/19/858520/353892.terrain differ diff --git a/public/terrain/19/858520/353893.terrain b/public/terrain/19/858520/353893.terrain new file mode 100644 index 000000000..11546736c Binary files /dev/null and b/public/terrain/19/858520/353893.terrain differ diff --git a/public/terrain/19/858520/353894.terrain b/public/terrain/19/858520/353894.terrain new file mode 100644 index 000000000..1a7e5efb3 Binary files /dev/null and b/public/terrain/19/858520/353894.terrain differ diff --git a/public/terrain/19/858520/353895.terrain b/public/terrain/19/858520/353895.terrain new file mode 100644 index 000000000..b24a645c5 Binary files /dev/null and b/public/terrain/19/858520/353895.terrain differ diff --git a/public/terrain/19/858520/353896.terrain b/public/terrain/19/858520/353896.terrain new file mode 100644 index 000000000..e70581bcc Binary files /dev/null and b/public/terrain/19/858520/353896.terrain differ diff --git a/public/terrain/19/858520/353897.terrain b/public/terrain/19/858520/353897.terrain new file mode 100644 index 000000000..3667a578e Binary files /dev/null and b/public/terrain/19/858520/353897.terrain differ diff --git a/public/terrain/19/858520/353898.terrain b/public/terrain/19/858520/353898.terrain new file mode 100644 index 000000000..5340e9607 Binary files /dev/null and b/public/terrain/19/858520/353898.terrain differ diff --git a/public/terrain/19/858520/353899.terrain b/public/terrain/19/858520/353899.terrain new file mode 100644 index 000000000..342b6476b Binary files /dev/null and b/public/terrain/19/858520/353899.terrain differ diff --git a/public/terrain/19/858520/353900.terrain b/public/terrain/19/858520/353900.terrain new file mode 100644 index 000000000..64030c07b Binary files /dev/null and b/public/terrain/19/858520/353900.terrain differ diff --git a/public/terrain/19/858520/353901.terrain b/public/terrain/19/858520/353901.terrain new file mode 100644 index 000000000..63b62821b Binary files /dev/null and b/public/terrain/19/858520/353901.terrain differ diff --git a/public/terrain/19/858520/353902.terrain b/public/terrain/19/858520/353902.terrain new file mode 100644 index 000000000..cf1b2c98c Binary files /dev/null and b/public/terrain/19/858520/353902.terrain differ diff --git a/public/terrain/19/858520/353903.terrain b/public/terrain/19/858520/353903.terrain new file mode 100644 index 000000000..4cf131d20 Binary files /dev/null and b/public/terrain/19/858520/353903.terrain differ diff --git a/public/terrain/19/858520/353904.terrain b/public/terrain/19/858520/353904.terrain new file mode 100644 index 000000000..ecaae3674 Binary files /dev/null and b/public/terrain/19/858520/353904.terrain differ diff --git a/public/terrain/19/858520/353905.terrain b/public/terrain/19/858520/353905.terrain new file mode 100644 index 000000000..9e5f14a45 Binary files /dev/null and b/public/terrain/19/858520/353905.terrain differ diff --git a/public/terrain/19/858520/353906.terrain b/public/terrain/19/858520/353906.terrain new file mode 100644 index 000000000..fe326338d Binary files /dev/null and b/public/terrain/19/858520/353906.terrain differ diff --git a/public/terrain/19/858520/353907.terrain b/public/terrain/19/858520/353907.terrain new file mode 100644 index 000000000..5dde237c7 Binary files /dev/null and b/public/terrain/19/858520/353907.terrain differ diff --git a/public/terrain/19/858520/353908.terrain b/public/terrain/19/858520/353908.terrain new file mode 100644 index 000000000..27c351f4d Binary files /dev/null and b/public/terrain/19/858520/353908.terrain differ diff --git a/public/terrain/19/858520/353909.terrain b/public/terrain/19/858520/353909.terrain new file mode 100644 index 000000000..5b4eca501 Binary files /dev/null and b/public/terrain/19/858520/353909.terrain differ diff --git a/public/terrain/19/858520/353910.terrain b/public/terrain/19/858520/353910.terrain new file mode 100644 index 000000000..2976e40ba Binary files /dev/null and b/public/terrain/19/858520/353910.terrain differ diff --git a/public/terrain/19/858520/353911.terrain b/public/terrain/19/858520/353911.terrain new file mode 100644 index 000000000..85b828eb8 Binary files /dev/null and b/public/terrain/19/858520/353911.terrain differ diff --git a/public/terrain/19/858520/353912.terrain b/public/terrain/19/858520/353912.terrain new file mode 100644 index 000000000..07cc662e0 Binary files /dev/null and b/public/terrain/19/858520/353912.terrain differ diff --git a/public/terrain/19/858520/353913.terrain b/public/terrain/19/858520/353913.terrain new file mode 100644 index 000000000..c506717eb Binary files /dev/null and b/public/terrain/19/858520/353913.terrain differ diff --git a/public/terrain/19/858520/353914.terrain b/public/terrain/19/858520/353914.terrain new file mode 100644 index 000000000..8e1899221 Binary files /dev/null and b/public/terrain/19/858520/353914.terrain differ diff --git a/public/terrain/19/858520/353915.terrain b/public/terrain/19/858520/353915.terrain new file mode 100644 index 000000000..16dcb573c Binary files /dev/null and b/public/terrain/19/858520/353915.terrain differ diff --git a/public/terrain/19/858520/353916.terrain b/public/terrain/19/858520/353916.terrain new file mode 100644 index 000000000..58fd4a304 Binary files /dev/null and b/public/terrain/19/858520/353916.terrain differ diff --git a/public/terrain/19/858520/353917.terrain b/public/terrain/19/858520/353917.terrain new file mode 100644 index 000000000..4f380debf Binary files /dev/null and b/public/terrain/19/858520/353917.terrain differ diff --git a/public/terrain/19/858520/353918.terrain b/public/terrain/19/858520/353918.terrain new file mode 100644 index 000000000..a1be4807d Binary files /dev/null and b/public/terrain/19/858520/353918.terrain differ diff --git a/public/terrain/19/858520/353919.terrain b/public/terrain/19/858520/353919.terrain new file mode 100644 index 000000000..9a49b50e0 Binary files /dev/null and b/public/terrain/19/858520/353919.terrain differ diff --git a/public/terrain/19/858520/353920.terrain b/public/terrain/19/858520/353920.terrain new file mode 100644 index 000000000..fddc05d5a Binary files /dev/null and b/public/terrain/19/858520/353920.terrain differ diff --git a/public/terrain/19/858520/353921.terrain b/public/terrain/19/858520/353921.terrain new file mode 100644 index 000000000..71efcf6e1 Binary files /dev/null and b/public/terrain/19/858520/353921.terrain differ diff --git a/public/terrain/19/858520/353922.terrain b/public/terrain/19/858520/353922.terrain new file mode 100644 index 000000000..98a681c61 Binary files /dev/null and b/public/terrain/19/858520/353922.terrain differ diff --git a/public/terrain/19/858520/353923.terrain b/public/terrain/19/858520/353923.terrain new file mode 100644 index 000000000..54209e55a Binary files /dev/null and b/public/terrain/19/858520/353923.terrain differ diff --git a/public/terrain/19/858520/353924.terrain b/public/terrain/19/858520/353924.terrain new file mode 100644 index 000000000..a288319aa Binary files /dev/null and b/public/terrain/19/858520/353924.terrain differ diff --git a/public/terrain/19/858520/353925.terrain b/public/terrain/19/858520/353925.terrain new file mode 100644 index 000000000..51182a3fe Binary files /dev/null and b/public/terrain/19/858520/353925.terrain differ diff --git a/public/terrain/19/858520/353926.terrain b/public/terrain/19/858520/353926.terrain new file mode 100644 index 000000000..5c8999842 Binary files /dev/null and b/public/terrain/19/858520/353926.terrain differ diff --git a/public/terrain/19/858520/353927.terrain b/public/terrain/19/858520/353927.terrain new file mode 100644 index 000000000..f83e55753 Binary files /dev/null and b/public/terrain/19/858520/353927.terrain differ diff --git a/public/terrain/19/858520/353928.terrain b/public/terrain/19/858520/353928.terrain new file mode 100644 index 000000000..27f08a32f Binary files /dev/null and b/public/terrain/19/858520/353928.terrain differ diff --git a/public/terrain/19/858520/353929.terrain b/public/terrain/19/858520/353929.terrain new file mode 100644 index 000000000..fc0ab9d52 Binary files /dev/null and b/public/terrain/19/858520/353929.terrain differ diff --git a/public/terrain/19/858520/353930.terrain b/public/terrain/19/858520/353930.terrain new file mode 100644 index 000000000..aa239e1ec Binary files /dev/null and b/public/terrain/19/858520/353930.terrain differ diff --git a/public/terrain/19/858520/353931.terrain b/public/terrain/19/858520/353931.terrain new file mode 100644 index 000000000..3f7ce8784 Binary files /dev/null and b/public/terrain/19/858520/353931.terrain differ diff --git a/public/terrain/19/858520/353932.terrain b/public/terrain/19/858520/353932.terrain new file mode 100644 index 000000000..6d0e28328 Binary files /dev/null and b/public/terrain/19/858520/353932.terrain differ diff --git a/public/terrain/19/858520/353933.terrain b/public/terrain/19/858520/353933.terrain new file mode 100644 index 000000000..d2c132766 Binary files /dev/null and b/public/terrain/19/858520/353933.terrain differ diff --git a/public/terrain/19/858520/353934.terrain b/public/terrain/19/858520/353934.terrain new file mode 100644 index 000000000..da23866a2 Binary files /dev/null and b/public/terrain/19/858520/353934.terrain differ diff --git a/public/terrain/19/858520/353935.terrain b/public/terrain/19/858520/353935.terrain new file mode 100644 index 000000000..0a3530c8c Binary files /dev/null and b/public/terrain/19/858520/353935.terrain differ diff --git a/public/terrain/19/858520/353936.terrain b/public/terrain/19/858520/353936.terrain new file mode 100644 index 000000000..958afd150 Binary files /dev/null and b/public/terrain/19/858520/353936.terrain differ diff --git a/public/terrain/19/858520/353937.terrain b/public/terrain/19/858520/353937.terrain new file mode 100644 index 000000000..2189cbd5e Binary files /dev/null and b/public/terrain/19/858520/353937.terrain differ diff --git a/public/terrain/19/858520/353938.terrain b/public/terrain/19/858520/353938.terrain new file mode 100644 index 000000000..bf399ef77 Binary files /dev/null and b/public/terrain/19/858520/353938.terrain differ diff --git a/public/terrain/19/858520/353939.terrain b/public/terrain/19/858520/353939.terrain new file mode 100644 index 000000000..3fbaef16e Binary files /dev/null and b/public/terrain/19/858520/353939.terrain differ diff --git a/public/terrain/19/858520/353940.terrain b/public/terrain/19/858520/353940.terrain new file mode 100644 index 000000000..fd5f50f8d Binary files /dev/null and b/public/terrain/19/858520/353940.terrain differ diff --git a/public/terrain/19/858520/353941.terrain b/public/terrain/19/858520/353941.terrain new file mode 100644 index 000000000..3e59f4b03 Binary files /dev/null and b/public/terrain/19/858520/353941.terrain differ diff --git a/public/terrain/19/858520/353942.terrain b/public/terrain/19/858520/353942.terrain new file mode 100644 index 000000000..febf2a56e Binary files /dev/null and b/public/terrain/19/858520/353942.terrain differ diff --git a/public/terrain/19/858520/353943.terrain b/public/terrain/19/858520/353943.terrain new file mode 100644 index 000000000..3a48a4aab Binary files /dev/null and b/public/terrain/19/858520/353943.terrain differ diff --git a/public/terrain/19/858520/353944.terrain b/public/terrain/19/858520/353944.terrain new file mode 100644 index 000000000..a5da260d2 Binary files /dev/null and b/public/terrain/19/858520/353944.terrain differ diff --git a/public/terrain/19/858520/353945.terrain b/public/terrain/19/858520/353945.terrain new file mode 100644 index 000000000..745a26c09 Binary files /dev/null and b/public/terrain/19/858520/353945.terrain differ diff --git a/public/terrain/19/858520/353946.terrain b/public/terrain/19/858520/353946.terrain new file mode 100644 index 000000000..7c2c72483 Binary files /dev/null and b/public/terrain/19/858520/353946.terrain differ diff --git a/public/terrain/19/858520/353947.terrain b/public/terrain/19/858520/353947.terrain new file mode 100644 index 000000000..ba0b4a05a Binary files /dev/null and b/public/terrain/19/858520/353947.terrain differ diff --git a/public/terrain/19/858520/353948.terrain b/public/terrain/19/858520/353948.terrain new file mode 100644 index 000000000..d9717e8a4 Binary files /dev/null and b/public/terrain/19/858520/353948.terrain differ diff --git a/public/terrain/19/858520/353949.terrain b/public/terrain/19/858520/353949.terrain new file mode 100644 index 000000000..94b18f2e5 Binary files /dev/null and b/public/terrain/19/858520/353949.terrain differ diff --git a/public/terrain/19/858520/353950.terrain b/public/terrain/19/858520/353950.terrain new file mode 100644 index 000000000..907864b56 Binary files /dev/null and b/public/terrain/19/858520/353950.terrain differ diff --git a/public/terrain/19/858520/353951.terrain b/public/terrain/19/858520/353951.terrain new file mode 100644 index 000000000..2a6419fad Binary files /dev/null and b/public/terrain/19/858520/353951.terrain differ diff --git a/public/terrain/19/858520/353952.terrain b/public/terrain/19/858520/353952.terrain new file mode 100644 index 000000000..a37168985 Binary files /dev/null and b/public/terrain/19/858520/353952.terrain differ diff --git a/public/terrain/19/858520/353953.terrain b/public/terrain/19/858520/353953.terrain new file mode 100644 index 000000000..a6624d186 Binary files /dev/null and b/public/terrain/19/858520/353953.terrain differ diff --git a/public/terrain/19/858520/353954.terrain b/public/terrain/19/858520/353954.terrain new file mode 100644 index 000000000..942b4231f Binary files /dev/null and b/public/terrain/19/858520/353954.terrain differ diff --git a/public/terrain/19/858520/353955.terrain b/public/terrain/19/858520/353955.terrain new file mode 100644 index 000000000..adaf3e511 Binary files /dev/null and b/public/terrain/19/858520/353955.terrain differ diff --git a/public/terrain/19/858520/353956.terrain b/public/terrain/19/858520/353956.terrain new file mode 100644 index 000000000..6f20e7a24 Binary files /dev/null and b/public/terrain/19/858520/353956.terrain differ diff --git a/public/terrain/19/858520/353957.terrain b/public/terrain/19/858520/353957.terrain new file mode 100644 index 000000000..1cc32d51e Binary files /dev/null and b/public/terrain/19/858520/353957.terrain differ diff --git a/public/terrain/19/858520/353958.terrain b/public/terrain/19/858520/353958.terrain new file mode 100644 index 000000000..6d5a96fec Binary files /dev/null and b/public/terrain/19/858520/353958.terrain differ diff --git a/public/terrain/19/858520/353959.terrain b/public/terrain/19/858520/353959.terrain new file mode 100644 index 000000000..224509874 Binary files /dev/null and b/public/terrain/19/858520/353959.terrain differ diff --git a/public/terrain/19/858520/353960.terrain b/public/terrain/19/858520/353960.terrain new file mode 100644 index 000000000..44bd5c20a Binary files /dev/null and b/public/terrain/19/858520/353960.terrain differ diff --git a/public/terrain/19/858520/353961.terrain b/public/terrain/19/858520/353961.terrain new file mode 100644 index 000000000..12cefc282 Binary files /dev/null and b/public/terrain/19/858520/353961.terrain differ diff --git a/public/terrain/19/858520/353962.terrain b/public/terrain/19/858520/353962.terrain new file mode 100644 index 000000000..56c034605 Binary files /dev/null and b/public/terrain/19/858520/353962.terrain differ diff --git a/public/terrain/19/858520/353963.terrain b/public/terrain/19/858520/353963.terrain new file mode 100644 index 000000000..a19b3580c Binary files /dev/null and b/public/terrain/19/858520/353963.terrain differ diff --git a/public/terrain/19/858520/353964.terrain b/public/terrain/19/858520/353964.terrain new file mode 100644 index 000000000..911348d20 Binary files /dev/null and b/public/terrain/19/858520/353964.terrain differ diff --git a/public/terrain/19/858520/353965.terrain b/public/terrain/19/858520/353965.terrain new file mode 100644 index 000000000..111b2ba20 Binary files /dev/null and b/public/terrain/19/858520/353965.terrain differ diff --git a/public/terrain/19/858520/353966.terrain b/public/terrain/19/858520/353966.terrain new file mode 100644 index 000000000..c7cabfb81 Binary files /dev/null and b/public/terrain/19/858520/353966.terrain differ diff --git a/public/terrain/19/858520/353967.terrain b/public/terrain/19/858520/353967.terrain new file mode 100644 index 000000000..3c8d9b817 Binary files /dev/null and b/public/terrain/19/858520/353967.terrain differ diff --git a/public/terrain/19/858520/353968.terrain b/public/terrain/19/858520/353968.terrain new file mode 100644 index 000000000..2ada2ec07 Binary files /dev/null and b/public/terrain/19/858520/353968.terrain differ diff --git a/public/terrain/19/858520/353969.terrain b/public/terrain/19/858520/353969.terrain new file mode 100644 index 000000000..2c836b8fd Binary files /dev/null and b/public/terrain/19/858520/353969.terrain differ diff --git a/public/terrain/19/858520/353970.terrain b/public/terrain/19/858520/353970.terrain new file mode 100644 index 000000000..b62450259 Binary files /dev/null and b/public/terrain/19/858520/353970.terrain differ diff --git a/public/terrain/19/858520/353971.terrain b/public/terrain/19/858520/353971.terrain new file mode 100644 index 000000000..e5350fb12 Binary files /dev/null and b/public/terrain/19/858520/353971.terrain differ diff --git a/public/terrain/19/858520/353972.terrain b/public/terrain/19/858520/353972.terrain new file mode 100644 index 000000000..5cebcac58 Binary files /dev/null and b/public/terrain/19/858520/353972.terrain differ diff --git a/public/terrain/19/858520/353973.terrain b/public/terrain/19/858520/353973.terrain new file mode 100644 index 000000000..2e8fee505 Binary files /dev/null and b/public/terrain/19/858520/353973.terrain differ diff --git a/public/terrain/19/858520/353974.terrain b/public/terrain/19/858520/353974.terrain new file mode 100644 index 000000000..2ed1915d6 Binary files /dev/null and b/public/terrain/19/858520/353974.terrain differ diff --git a/public/terrain/19/858520/353975.terrain b/public/terrain/19/858520/353975.terrain new file mode 100644 index 000000000..292788cc0 Binary files /dev/null and b/public/terrain/19/858520/353975.terrain differ diff --git a/public/terrain/19/858520/353976.terrain b/public/terrain/19/858520/353976.terrain new file mode 100644 index 000000000..caa1060cf Binary files /dev/null and b/public/terrain/19/858520/353976.terrain differ diff --git a/public/terrain/19/858520/353977.terrain b/public/terrain/19/858520/353977.terrain new file mode 100644 index 000000000..1118da04f Binary files /dev/null and b/public/terrain/19/858520/353977.terrain differ diff --git a/public/terrain/19/858520/353978.terrain b/public/terrain/19/858520/353978.terrain new file mode 100644 index 000000000..fbb904420 Binary files /dev/null and b/public/terrain/19/858520/353978.terrain differ diff --git a/public/terrain/19/858520/353979.terrain b/public/terrain/19/858520/353979.terrain new file mode 100644 index 000000000..346584978 Binary files /dev/null and b/public/terrain/19/858520/353979.terrain differ diff --git a/public/terrain/19/858520/353980.terrain b/public/terrain/19/858520/353980.terrain new file mode 100644 index 000000000..24713f75d Binary files /dev/null and b/public/terrain/19/858520/353980.terrain differ diff --git a/public/terrain/19/858520/353981.terrain b/public/terrain/19/858520/353981.terrain new file mode 100644 index 000000000..e618bfbff Binary files /dev/null and b/public/terrain/19/858520/353981.terrain differ diff --git a/public/terrain/19/858520/353982.terrain b/public/terrain/19/858520/353982.terrain new file mode 100644 index 000000000..ad8621666 Binary files /dev/null and b/public/terrain/19/858520/353982.terrain differ diff --git a/public/terrain/19/858520/353983.terrain b/public/terrain/19/858520/353983.terrain new file mode 100644 index 000000000..37b2fa708 Binary files /dev/null and b/public/terrain/19/858520/353983.terrain differ diff --git a/public/terrain/19/858520/353984.terrain b/public/terrain/19/858520/353984.terrain new file mode 100644 index 000000000..e585053c4 Binary files /dev/null and b/public/terrain/19/858520/353984.terrain differ diff --git a/public/terrain/19/858520/353985.terrain b/public/terrain/19/858520/353985.terrain new file mode 100644 index 000000000..c1e0978be Binary files /dev/null and b/public/terrain/19/858520/353985.terrain differ diff --git a/public/terrain/19/858520/353986.terrain b/public/terrain/19/858520/353986.terrain new file mode 100644 index 000000000..f719a288f Binary files /dev/null and b/public/terrain/19/858520/353986.terrain differ diff --git a/public/terrain/19/858520/353987.terrain b/public/terrain/19/858520/353987.terrain new file mode 100644 index 000000000..8fe5a4d27 Binary files /dev/null and b/public/terrain/19/858520/353987.terrain differ diff --git a/public/terrain/19/858520/353988.terrain b/public/terrain/19/858520/353988.terrain new file mode 100644 index 000000000..10359ba93 Binary files /dev/null and b/public/terrain/19/858520/353988.terrain differ diff --git a/public/terrain/19/858520/353989.terrain b/public/terrain/19/858520/353989.terrain new file mode 100644 index 000000000..9232934fd Binary files /dev/null and b/public/terrain/19/858520/353989.terrain differ diff --git a/public/terrain/19/858520/353990.terrain b/public/terrain/19/858520/353990.terrain new file mode 100644 index 000000000..ccf65beff Binary files /dev/null and b/public/terrain/19/858520/353990.terrain differ diff --git a/public/terrain/19/858520/353991.terrain b/public/terrain/19/858520/353991.terrain new file mode 100644 index 000000000..ae3f7f337 Binary files /dev/null and b/public/terrain/19/858520/353991.terrain differ diff --git a/public/terrain/19/858520/353992.terrain b/public/terrain/19/858520/353992.terrain new file mode 100644 index 000000000..abc7affa7 Binary files /dev/null and b/public/terrain/19/858520/353992.terrain differ diff --git a/public/terrain/19/858520/353993.terrain b/public/terrain/19/858520/353993.terrain new file mode 100644 index 000000000..afb4032e9 Binary files /dev/null and b/public/terrain/19/858520/353993.terrain differ diff --git a/public/terrain/19/858520/353994.terrain b/public/terrain/19/858520/353994.terrain new file mode 100644 index 000000000..07c7bcc2b Binary files /dev/null and b/public/terrain/19/858520/353994.terrain differ diff --git a/public/terrain/19/858520/353995.terrain b/public/terrain/19/858520/353995.terrain new file mode 100644 index 000000000..4662990c9 Binary files /dev/null and b/public/terrain/19/858520/353995.terrain differ diff --git a/public/terrain/19/858520/353996.terrain b/public/terrain/19/858520/353996.terrain new file mode 100644 index 000000000..f292d6c31 Binary files /dev/null and b/public/terrain/19/858520/353996.terrain differ diff --git a/public/terrain/19/858520/353997.terrain b/public/terrain/19/858520/353997.terrain new file mode 100644 index 000000000..a4d498bca Binary files /dev/null and b/public/terrain/19/858520/353997.terrain differ diff --git a/public/terrain/19/858520/353998.terrain b/public/terrain/19/858520/353998.terrain new file mode 100644 index 000000000..bd7af41b4 Binary files /dev/null and b/public/terrain/19/858520/353998.terrain differ diff --git a/public/terrain/19/858520/353999.terrain b/public/terrain/19/858520/353999.terrain new file mode 100644 index 000000000..4ae437fe6 Binary files /dev/null and b/public/terrain/19/858520/353999.terrain differ diff --git a/public/terrain/19/858520/354000.terrain b/public/terrain/19/858520/354000.terrain new file mode 100644 index 000000000..35c05cc5b Binary files /dev/null and b/public/terrain/19/858520/354000.terrain differ diff --git a/public/terrain/19/858520/354001.terrain b/public/terrain/19/858520/354001.terrain new file mode 100644 index 000000000..994415ba4 Binary files /dev/null and b/public/terrain/19/858520/354001.terrain differ diff --git a/public/terrain/19/858520/354002.terrain b/public/terrain/19/858520/354002.terrain new file mode 100644 index 000000000..592ac79b7 Binary files /dev/null and b/public/terrain/19/858520/354002.terrain differ diff --git a/public/terrain/19/858520/354003.terrain b/public/terrain/19/858520/354003.terrain new file mode 100644 index 000000000..1186e31f6 Binary files /dev/null and b/public/terrain/19/858520/354003.terrain differ diff --git a/public/terrain/19/858520/354004.terrain b/public/terrain/19/858520/354004.terrain new file mode 100644 index 000000000..8712dfe29 Binary files /dev/null and b/public/terrain/19/858520/354004.terrain differ diff --git a/public/terrain/19/858520/354005.terrain b/public/terrain/19/858520/354005.terrain new file mode 100644 index 000000000..d214b10d1 Binary files /dev/null and b/public/terrain/19/858520/354005.terrain differ diff --git a/public/terrain/19/858520/354006.terrain b/public/terrain/19/858520/354006.terrain new file mode 100644 index 000000000..f5a523be7 Binary files /dev/null and b/public/terrain/19/858520/354006.terrain differ diff --git a/public/terrain/19/858520/354007.terrain b/public/terrain/19/858520/354007.terrain new file mode 100644 index 000000000..879a127d3 Binary files /dev/null and b/public/terrain/19/858520/354007.terrain differ diff --git a/public/terrain/19/858520/354008.terrain b/public/terrain/19/858520/354008.terrain new file mode 100644 index 000000000..a9d9f539b Binary files /dev/null and b/public/terrain/19/858520/354008.terrain differ diff --git a/public/terrain/19/858520/354009.terrain b/public/terrain/19/858520/354009.terrain new file mode 100644 index 000000000..82ffd0db9 Binary files /dev/null and b/public/terrain/19/858520/354009.terrain differ diff --git a/public/terrain/19/858520/354010.terrain b/public/terrain/19/858520/354010.terrain new file mode 100644 index 000000000..ded3582c5 Binary files /dev/null and b/public/terrain/19/858520/354010.terrain differ diff --git a/public/terrain/19/858520/354011.terrain b/public/terrain/19/858520/354011.terrain new file mode 100644 index 000000000..84e23a85c Binary files /dev/null and b/public/terrain/19/858520/354011.terrain differ diff --git a/public/terrain/19/858520/354012.terrain b/public/terrain/19/858520/354012.terrain new file mode 100644 index 000000000..c1f3046c5 Binary files /dev/null and b/public/terrain/19/858520/354012.terrain differ diff --git a/public/terrain/19/858520/354013.terrain b/public/terrain/19/858520/354013.terrain new file mode 100644 index 000000000..49d9b02ca Binary files /dev/null and b/public/terrain/19/858520/354013.terrain differ diff --git a/public/terrain/19/858520/354014.terrain b/public/terrain/19/858520/354014.terrain new file mode 100644 index 000000000..4dfa0c1bc Binary files /dev/null and b/public/terrain/19/858520/354014.terrain differ diff --git a/public/terrain/19/858520/354015.terrain b/public/terrain/19/858520/354015.terrain new file mode 100644 index 000000000..38c23ffca Binary files /dev/null and b/public/terrain/19/858520/354015.terrain differ diff --git a/public/terrain/19/858520/354016.terrain b/public/terrain/19/858520/354016.terrain new file mode 100644 index 000000000..a9b3fd134 Binary files /dev/null and b/public/terrain/19/858520/354016.terrain differ diff --git a/public/terrain/19/858520/354017.terrain b/public/terrain/19/858520/354017.terrain new file mode 100644 index 000000000..6c9e2801a Binary files /dev/null and b/public/terrain/19/858520/354017.terrain differ diff --git a/public/terrain/19/858520/354018.terrain b/public/terrain/19/858520/354018.terrain new file mode 100644 index 000000000..9279cb3d2 Binary files /dev/null and b/public/terrain/19/858520/354018.terrain differ diff --git a/public/terrain/19/858520/354019.terrain b/public/terrain/19/858520/354019.terrain new file mode 100644 index 000000000..a99dffeab Binary files /dev/null and b/public/terrain/19/858520/354019.terrain differ diff --git a/public/terrain/19/858520/354020.terrain b/public/terrain/19/858520/354020.terrain new file mode 100644 index 000000000..b80012b93 Binary files /dev/null and b/public/terrain/19/858520/354020.terrain differ diff --git a/public/terrain/19/858520/354021.terrain b/public/terrain/19/858520/354021.terrain new file mode 100644 index 000000000..68d48cc43 Binary files /dev/null and b/public/terrain/19/858520/354021.terrain differ diff --git a/public/terrain/19/858520/354022.terrain b/public/terrain/19/858520/354022.terrain new file mode 100644 index 000000000..871ad3065 Binary files /dev/null and b/public/terrain/19/858520/354022.terrain differ diff --git a/public/terrain/19/858520/354023.terrain b/public/terrain/19/858520/354023.terrain new file mode 100644 index 000000000..15eb2df40 Binary files /dev/null and b/public/terrain/19/858520/354023.terrain differ diff --git a/public/terrain/19/858520/354024.terrain b/public/terrain/19/858520/354024.terrain new file mode 100644 index 000000000..9cc65a08e Binary files /dev/null and b/public/terrain/19/858520/354024.terrain differ diff --git a/public/terrain/19/858520/354025.terrain b/public/terrain/19/858520/354025.terrain new file mode 100644 index 000000000..0a92609ff Binary files /dev/null and b/public/terrain/19/858520/354025.terrain differ diff --git a/public/terrain/19/858520/354026.terrain b/public/terrain/19/858520/354026.terrain new file mode 100644 index 000000000..37d83dec8 Binary files /dev/null and b/public/terrain/19/858520/354026.terrain differ diff --git a/public/terrain/19/858520/354027.terrain b/public/terrain/19/858520/354027.terrain new file mode 100644 index 000000000..ee5d2d7d0 Binary files /dev/null and b/public/terrain/19/858520/354027.terrain differ diff --git a/public/terrain/19/858520/354028.terrain b/public/terrain/19/858520/354028.terrain new file mode 100644 index 000000000..ee9a48fd2 Binary files /dev/null and b/public/terrain/19/858520/354028.terrain differ diff --git a/public/terrain/19/858520/354029.terrain b/public/terrain/19/858520/354029.terrain new file mode 100644 index 000000000..fe8a6675d Binary files /dev/null and b/public/terrain/19/858520/354029.terrain differ diff --git a/public/terrain/19/858520/354030.terrain b/public/terrain/19/858520/354030.terrain new file mode 100644 index 000000000..10fbb5578 Binary files /dev/null and b/public/terrain/19/858520/354030.terrain differ diff --git a/public/terrain/19/858520/354031.terrain b/public/terrain/19/858520/354031.terrain new file mode 100644 index 000000000..602dcc792 Binary files /dev/null and b/public/terrain/19/858520/354031.terrain differ diff --git a/public/terrain/19/858520/354032.terrain b/public/terrain/19/858520/354032.terrain new file mode 100644 index 000000000..0e255001a Binary files /dev/null and b/public/terrain/19/858520/354032.terrain differ diff --git a/public/terrain/19/858520/354033.terrain b/public/terrain/19/858520/354033.terrain new file mode 100644 index 000000000..ab4269a85 Binary files /dev/null and b/public/terrain/19/858520/354033.terrain differ diff --git a/public/terrain/19/858520/354034.terrain b/public/terrain/19/858520/354034.terrain new file mode 100644 index 000000000..2f11427e8 Binary files /dev/null and b/public/terrain/19/858520/354034.terrain differ diff --git a/public/terrain/19/858520/354035.terrain b/public/terrain/19/858520/354035.terrain new file mode 100644 index 000000000..f2466610e Binary files /dev/null and b/public/terrain/19/858520/354035.terrain differ diff --git a/public/terrain/19/858520/354036.terrain b/public/terrain/19/858520/354036.terrain new file mode 100644 index 000000000..e1460689e Binary files /dev/null and b/public/terrain/19/858520/354036.terrain differ diff --git a/public/terrain/19/858520/354037.terrain b/public/terrain/19/858520/354037.terrain new file mode 100644 index 000000000..57d2bbd35 Binary files /dev/null and b/public/terrain/19/858520/354037.terrain differ diff --git a/public/terrain/19/858520/354038.terrain b/public/terrain/19/858520/354038.terrain new file mode 100644 index 000000000..7a6aedd65 Binary files /dev/null and b/public/terrain/19/858520/354038.terrain differ diff --git a/public/terrain/19/858520/354039.terrain b/public/terrain/19/858520/354039.terrain new file mode 100644 index 000000000..883c2fb7d Binary files /dev/null and b/public/terrain/19/858520/354039.terrain differ diff --git a/public/terrain/19/858520/354040.terrain b/public/terrain/19/858520/354040.terrain new file mode 100644 index 000000000..0c6dc9952 Binary files /dev/null and b/public/terrain/19/858520/354040.terrain differ diff --git a/public/terrain/19/858520/354041.terrain b/public/terrain/19/858520/354041.terrain new file mode 100644 index 000000000..50bb70de6 Binary files /dev/null and b/public/terrain/19/858520/354041.terrain differ diff --git a/public/terrain/19/858520/354042.terrain b/public/terrain/19/858520/354042.terrain new file mode 100644 index 000000000..bee05db98 Binary files /dev/null and b/public/terrain/19/858520/354042.terrain differ diff --git a/public/terrain/19/858520/354043.terrain b/public/terrain/19/858520/354043.terrain new file mode 100644 index 000000000..dcef9b7ba Binary files /dev/null and b/public/terrain/19/858520/354043.terrain differ diff --git a/public/terrain/19/858520/354044.terrain b/public/terrain/19/858520/354044.terrain new file mode 100644 index 000000000..dc8541773 Binary files /dev/null and b/public/terrain/19/858520/354044.terrain differ diff --git a/public/terrain/19/858520/354045.terrain b/public/terrain/19/858520/354045.terrain new file mode 100644 index 000000000..b54ba3f57 Binary files /dev/null and b/public/terrain/19/858520/354045.terrain differ diff --git a/public/terrain/19/858520/354046.terrain b/public/terrain/19/858520/354046.terrain new file mode 100644 index 000000000..ef79740b7 Binary files /dev/null and b/public/terrain/19/858520/354046.terrain differ diff --git a/public/terrain/19/858520/354047.terrain b/public/terrain/19/858520/354047.terrain new file mode 100644 index 000000000..45117f6a9 Binary files /dev/null and b/public/terrain/19/858520/354047.terrain differ diff --git a/public/terrain/19/858520/354048.terrain b/public/terrain/19/858520/354048.terrain new file mode 100644 index 000000000..6a6b5c657 Binary files /dev/null and b/public/terrain/19/858520/354048.terrain differ diff --git a/public/terrain/19/858520/354049.terrain b/public/terrain/19/858520/354049.terrain new file mode 100644 index 000000000..fedd841ee Binary files /dev/null and b/public/terrain/19/858520/354049.terrain differ diff --git a/public/terrain/19/858520/354050.terrain b/public/terrain/19/858520/354050.terrain new file mode 100644 index 000000000..078506001 Binary files /dev/null and b/public/terrain/19/858520/354050.terrain differ diff --git a/public/terrain/19/858520/354051.terrain b/public/terrain/19/858520/354051.terrain new file mode 100644 index 000000000..c168c4a55 Binary files /dev/null and b/public/terrain/19/858520/354051.terrain differ diff --git a/public/terrain/19/858520/354052.terrain b/public/terrain/19/858520/354052.terrain new file mode 100644 index 000000000..d5dfc5280 Binary files /dev/null and b/public/terrain/19/858520/354052.terrain differ diff --git a/public/terrain/19/858520/354053.terrain b/public/terrain/19/858520/354053.terrain new file mode 100644 index 000000000..4dc6429bd Binary files /dev/null and b/public/terrain/19/858520/354053.terrain differ diff --git a/public/terrain/19/858520/354054.terrain b/public/terrain/19/858520/354054.terrain new file mode 100644 index 000000000..0c379d438 Binary files /dev/null and b/public/terrain/19/858520/354054.terrain differ diff --git a/public/terrain/19/858520/354055.terrain b/public/terrain/19/858520/354055.terrain new file mode 100644 index 000000000..9422e9bc4 Binary files /dev/null and b/public/terrain/19/858520/354055.terrain differ diff --git a/public/terrain/19/858520/354056.terrain b/public/terrain/19/858520/354056.terrain new file mode 100644 index 000000000..0a1d893a1 Binary files /dev/null and b/public/terrain/19/858520/354056.terrain differ diff --git a/public/terrain/19/858520/354057.terrain b/public/terrain/19/858520/354057.terrain new file mode 100644 index 000000000..2270cfa25 Binary files /dev/null and b/public/terrain/19/858520/354057.terrain differ diff --git a/public/terrain/19/858520/354058.terrain b/public/terrain/19/858520/354058.terrain new file mode 100644 index 000000000..c6467c41b Binary files /dev/null and b/public/terrain/19/858520/354058.terrain differ diff --git a/public/terrain/19/858520/354059.terrain b/public/terrain/19/858520/354059.terrain new file mode 100644 index 000000000..df83a5056 Binary files /dev/null and b/public/terrain/19/858520/354059.terrain differ diff --git a/public/terrain/19/858521/353743.terrain b/public/terrain/19/858521/353743.terrain new file mode 100644 index 000000000..0e511e4a7 Binary files /dev/null and b/public/terrain/19/858521/353743.terrain differ diff --git a/public/terrain/19/858521/353744.terrain b/public/terrain/19/858521/353744.terrain new file mode 100644 index 000000000..b7e0db246 Binary files /dev/null and b/public/terrain/19/858521/353744.terrain differ diff --git a/public/terrain/19/858521/353745.terrain b/public/terrain/19/858521/353745.terrain new file mode 100644 index 000000000..db64a1e2a Binary files /dev/null and b/public/terrain/19/858521/353745.terrain differ diff --git a/public/terrain/19/858521/353746.terrain b/public/terrain/19/858521/353746.terrain new file mode 100644 index 000000000..d73147086 Binary files /dev/null and b/public/terrain/19/858521/353746.terrain differ diff --git a/public/terrain/19/858521/353747.terrain b/public/terrain/19/858521/353747.terrain new file mode 100644 index 000000000..2edff4f1c Binary files /dev/null and b/public/terrain/19/858521/353747.terrain differ diff --git a/public/terrain/19/858521/353748.terrain b/public/terrain/19/858521/353748.terrain new file mode 100644 index 000000000..a629e321a Binary files /dev/null and b/public/terrain/19/858521/353748.terrain differ diff --git a/public/terrain/19/858521/353749.terrain b/public/terrain/19/858521/353749.terrain new file mode 100644 index 000000000..74415e5c2 Binary files /dev/null and b/public/terrain/19/858521/353749.terrain differ diff --git a/public/terrain/19/858521/353750.terrain b/public/terrain/19/858521/353750.terrain new file mode 100644 index 000000000..b47b57906 Binary files /dev/null and b/public/terrain/19/858521/353750.terrain differ diff --git a/public/terrain/19/858521/353751.terrain b/public/terrain/19/858521/353751.terrain new file mode 100644 index 000000000..ee8ab293a Binary files /dev/null and b/public/terrain/19/858521/353751.terrain differ diff --git a/public/terrain/19/858521/353752.terrain b/public/terrain/19/858521/353752.terrain new file mode 100644 index 000000000..e4c02b126 Binary files /dev/null and b/public/terrain/19/858521/353752.terrain differ diff --git a/public/terrain/19/858521/353753.terrain b/public/terrain/19/858521/353753.terrain new file mode 100644 index 000000000..ce7254ed3 Binary files /dev/null and b/public/terrain/19/858521/353753.terrain differ diff --git a/public/terrain/19/858521/353754.terrain b/public/terrain/19/858521/353754.terrain new file mode 100644 index 000000000..3affcf60e Binary files /dev/null and b/public/terrain/19/858521/353754.terrain differ diff --git a/public/terrain/19/858521/353755.terrain b/public/terrain/19/858521/353755.terrain new file mode 100644 index 000000000..bd61c8fe2 Binary files /dev/null and b/public/terrain/19/858521/353755.terrain differ diff --git a/public/terrain/19/858521/353756.terrain b/public/terrain/19/858521/353756.terrain new file mode 100644 index 000000000..6408f0513 Binary files /dev/null and b/public/terrain/19/858521/353756.terrain differ diff --git a/public/terrain/19/858521/353757.terrain b/public/terrain/19/858521/353757.terrain new file mode 100644 index 000000000..319cdce04 Binary files /dev/null and b/public/terrain/19/858521/353757.terrain differ diff --git a/public/terrain/19/858521/353758.terrain b/public/terrain/19/858521/353758.terrain new file mode 100644 index 000000000..f997ff3e9 Binary files /dev/null and b/public/terrain/19/858521/353758.terrain differ diff --git a/public/terrain/19/858521/353759.terrain b/public/terrain/19/858521/353759.terrain new file mode 100644 index 000000000..34cf9e665 Binary files /dev/null and b/public/terrain/19/858521/353759.terrain differ diff --git a/public/terrain/19/858521/353760.terrain b/public/terrain/19/858521/353760.terrain new file mode 100644 index 000000000..0a95cd044 Binary files /dev/null and b/public/terrain/19/858521/353760.terrain differ diff --git a/public/terrain/19/858521/353761.terrain b/public/terrain/19/858521/353761.terrain new file mode 100644 index 000000000..ac273e7e2 Binary files /dev/null and b/public/terrain/19/858521/353761.terrain differ diff --git a/public/terrain/19/858521/353762.terrain b/public/terrain/19/858521/353762.terrain new file mode 100644 index 000000000..ee84b2472 Binary files /dev/null and b/public/terrain/19/858521/353762.terrain differ diff --git a/public/terrain/19/858521/353763.terrain b/public/terrain/19/858521/353763.terrain new file mode 100644 index 000000000..6828fdb7d Binary files /dev/null and b/public/terrain/19/858521/353763.terrain differ diff --git a/public/terrain/19/858521/353764.terrain b/public/terrain/19/858521/353764.terrain new file mode 100644 index 000000000..858e93c65 Binary files /dev/null and b/public/terrain/19/858521/353764.terrain differ diff --git a/public/terrain/19/858521/353765.terrain b/public/terrain/19/858521/353765.terrain new file mode 100644 index 000000000..efb53be9d Binary files /dev/null and b/public/terrain/19/858521/353765.terrain differ diff --git a/public/terrain/19/858521/353766.terrain b/public/terrain/19/858521/353766.terrain new file mode 100644 index 000000000..77c4e8290 Binary files /dev/null and b/public/terrain/19/858521/353766.terrain differ diff --git a/public/terrain/19/858521/353767.terrain b/public/terrain/19/858521/353767.terrain new file mode 100644 index 000000000..0a4cec15b Binary files /dev/null and b/public/terrain/19/858521/353767.terrain differ diff --git a/public/terrain/19/858521/353768.terrain b/public/terrain/19/858521/353768.terrain new file mode 100644 index 000000000..45f5bf84f Binary files /dev/null and b/public/terrain/19/858521/353768.terrain differ diff --git a/public/terrain/19/858521/353769.terrain b/public/terrain/19/858521/353769.terrain new file mode 100644 index 000000000..3aec192a8 Binary files /dev/null and b/public/terrain/19/858521/353769.terrain differ diff --git a/public/terrain/19/858521/353770.terrain b/public/terrain/19/858521/353770.terrain new file mode 100644 index 000000000..6490e9842 Binary files /dev/null and b/public/terrain/19/858521/353770.terrain differ diff --git a/public/terrain/19/858521/353771.terrain b/public/terrain/19/858521/353771.terrain new file mode 100644 index 000000000..757f2b711 Binary files /dev/null and b/public/terrain/19/858521/353771.terrain differ diff --git a/public/terrain/19/858521/353772.terrain b/public/terrain/19/858521/353772.terrain new file mode 100644 index 000000000..6cb3b5986 Binary files /dev/null and b/public/terrain/19/858521/353772.terrain differ diff --git a/public/terrain/19/858521/353773.terrain b/public/terrain/19/858521/353773.terrain new file mode 100644 index 000000000..3075f359c Binary files /dev/null and b/public/terrain/19/858521/353773.terrain differ diff --git a/public/terrain/19/858521/353774.terrain b/public/terrain/19/858521/353774.terrain new file mode 100644 index 000000000..3307b072f Binary files /dev/null and b/public/terrain/19/858521/353774.terrain differ diff --git a/public/terrain/19/858521/353775.terrain b/public/terrain/19/858521/353775.terrain new file mode 100644 index 000000000..e4fd4aa12 Binary files /dev/null and b/public/terrain/19/858521/353775.terrain differ diff --git a/public/terrain/19/858521/353776.terrain b/public/terrain/19/858521/353776.terrain new file mode 100644 index 000000000..5c81afff1 Binary files /dev/null and b/public/terrain/19/858521/353776.terrain differ diff --git a/public/terrain/19/858521/353777.terrain b/public/terrain/19/858521/353777.terrain new file mode 100644 index 000000000..c84984380 Binary files /dev/null and b/public/terrain/19/858521/353777.terrain differ diff --git a/public/terrain/19/858521/353778.terrain b/public/terrain/19/858521/353778.terrain new file mode 100644 index 000000000..4900bf089 Binary files /dev/null and b/public/terrain/19/858521/353778.terrain differ diff --git a/public/terrain/19/858521/353779.terrain b/public/terrain/19/858521/353779.terrain new file mode 100644 index 000000000..b93548c33 Binary files /dev/null and b/public/terrain/19/858521/353779.terrain differ diff --git a/public/terrain/19/858521/353780.terrain b/public/terrain/19/858521/353780.terrain new file mode 100644 index 000000000..0f7bc934a Binary files /dev/null and b/public/terrain/19/858521/353780.terrain differ diff --git a/public/terrain/19/858521/353781.terrain b/public/terrain/19/858521/353781.terrain new file mode 100644 index 000000000..a435e1366 Binary files /dev/null and b/public/terrain/19/858521/353781.terrain differ diff --git a/public/terrain/19/858521/353782.terrain b/public/terrain/19/858521/353782.terrain new file mode 100644 index 000000000..067387ebe Binary files /dev/null and b/public/terrain/19/858521/353782.terrain differ diff --git a/public/terrain/19/858521/353783.terrain b/public/terrain/19/858521/353783.terrain new file mode 100644 index 000000000..2d4161e84 Binary files /dev/null and b/public/terrain/19/858521/353783.terrain differ diff --git a/public/terrain/19/858521/353784.terrain b/public/terrain/19/858521/353784.terrain new file mode 100644 index 000000000..6417b9603 Binary files /dev/null and b/public/terrain/19/858521/353784.terrain differ diff --git a/public/terrain/19/858521/353785.terrain b/public/terrain/19/858521/353785.terrain new file mode 100644 index 000000000..c5c5a4be5 Binary files /dev/null and b/public/terrain/19/858521/353785.terrain differ diff --git a/public/terrain/19/858521/353786.terrain b/public/terrain/19/858521/353786.terrain new file mode 100644 index 000000000..1897e4193 Binary files /dev/null and b/public/terrain/19/858521/353786.terrain differ diff --git a/public/terrain/19/858521/353787.terrain b/public/terrain/19/858521/353787.terrain new file mode 100644 index 000000000..44051d63a Binary files /dev/null and b/public/terrain/19/858521/353787.terrain differ diff --git a/public/terrain/19/858521/353788.terrain b/public/terrain/19/858521/353788.terrain new file mode 100644 index 000000000..9c00d2738 Binary files /dev/null and b/public/terrain/19/858521/353788.terrain differ diff --git a/public/terrain/19/858521/353789.terrain b/public/terrain/19/858521/353789.terrain new file mode 100644 index 000000000..cc817f9e5 Binary files /dev/null and b/public/terrain/19/858521/353789.terrain differ diff --git a/public/terrain/19/858521/353790.terrain b/public/terrain/19/858521/353790.terrain new file mode 100644 index 000000000..fecfb7c3e Binary files /dev/null and b/public/terrain/19/858521/353790.terrain differ diff --git a/public/terrain/19/858521/353791.terrain b/public/terrain/19/858521/353791.terrain new file mode 100644 index 000000000..a33a23872 Binary files /dev/null and b/public/terrain/19/858521/353791.terrain differ diff --git a/public/terrain/19/858521/353792.terrain b/public/terrain/19/858521/353792.terrain new file mode 100644 index 000000000..bc6839515 Binary files /dev/null and b/public/terrain/19/858521/353792.terrain differ diff --git a/public/terrain/19/858521/353793.terrain b/public/terrain/19/858521/353793.terrain new file mode 100644 index 000000000..418efe4d0 Binary files /dev/null and b/public/terrain/19/858521/353793.terrain differ diff --git a/public/terrain/19/858521/353794.terrain b/public/terrain/19/858521/353794.terrain new file mode 100644 index 000000000..27eda2d07 Binary files /dev/null and b/public/terrain/19/858521/353794.terrain differ diff --git a/public/terrain/19/858521/353795.terrain b/public/terrain/19/858521/353795.terrain new file mode 100644 index 000000000..909a3bf10 Binary files /dev/null and b/public/terrain/19/858521/353795.terrain differ diff --git a/public/terrain/19/858521/353796.terrain b/public/terrain/19/858521/353796.terrain new file mode 100644 index 000000000..7cf4d3651 Binary files /dev/null and b/public/terrain/19/858521/353796.terrain differ diff --git a/public/terrain/19/858521/353797.terrain b/public/terrain/19/858521/353797.terrain new file mode 100644 index 000000000..420ee8465 Binary files /dev/null and b/public/terrain/19/858521/353797.terrain differ diff --git a/public/terrain/19/858521/353798.terrain b/public/terrain/19/858521/353798.terrain new file mode 100644 index 000000000..8b1cee138 Binary files /dev/null and b/public/terrain/19/858521/353798.terrain differ diff --git a/public/terrain/19/858521/353799.terrain b/public/terrain/19/858521/353799.terrain new file mode 100644 index 000000000..a67780320 Binary files /dev/null and b/public/terrain/19/858521/353799.terrain differ diff --git a/public/terrain/19/858521/353800.terrain b/public/terrain/19/858521/353800.terrain new file mode 100644 index 000000000..aef855c8a Binary files /dev/null and b/public/terrain/19/858521/353800.terrain differ diff --git a/public/terrain/19/858521/353801.terrain b/public/terrain/19/858521/353801.terrain new file mode 100644 index 000000000..c9a1a6830 Binary files /dev/null and b/public/terrain/19/858521/353801.terrain differ diff --git a/public/terrain/19/858521/353802.terrain b/public/terrain/19/858521/353802.terrain new file mode 100644 index 000000000..c292c1331 Binary files /dev/null and b/public/terrain/19/858521/353802.terrain differ diff --git a/public/terrain/19/858521/353803.terrain b/public/terrain/19/858521/353803.terrain new file mode 100644 index 000000000..53713c7b0 Binary files /dev/null and b/public/terrain/19/858521/353803.terrain differ diff --git a/public/terrain/19/858521/353804.terrain b/public/terrain/19/858521/353804.terrain new file mode 100644 index 000000000..193f98902 Binary files /dev/null and b/public/terrain/19/858521/353804.terrain differ diff --git a/public/terrain/19/858521/353805.terrain b/public/terrain/19/858521/353805.terrain new file mode 100644 index 000000000..03990c334 Binary files /dev/null and b/public/terrain/19/858521/353805.terrain differ diff --git a/public/terrain/19/858521/353806.terrain b/public/terrain/19/858521/353806.terrain new file mode 100644 index 000000000..28f4fc874 Binary files /dev/null and b/public/terrain/19/858521/353806.terrain differ diff --git a/public/terrain/19/858521/353807.terrain b/public/terrain/19/858521/353807.terrain new file mode 100644 index 000000000..b1425e553 Binary files /dev/null and b/public/terrain/19/858521/353807.terrain differ diff --git a/public/terrain/19/858521/353808.terrain b/public/terrain/19/858521/353808.terrain new file mode 100644 index 000000000..67f6cab3c Binary files /dev/null and b/public/terrain/19/858521/353808.terrain differ diff --git a/public/terrain/19/858521/353809.terrain b/public/terrain/19/858521/353809.terrain new file mode 100644 index 000000000..1778c6824 Binary files /dev/null and b/public/terrain/19/858521/353809.terrain differ diff --git a/public/terrain/19/858521/353810.terrain b/public/terrain/19/858521/353810.terrain new file mode 100644 index 000000000..9d5e7d8d9 Binary files /dev/null and b/public/terrain/19/858521/353810.terrain differ diff --git a/public/terrain/19/858521/353811.terrain b/public/terrain/19/858521/353811.terrain new file mode 100644 index 000000000..d501a6d17 Binary files /dev/null and b/public/terrain/19/858521/353811.terrain differ diff --git a/public/terrain/19/858521/353812.terrain b/public/terrain/19/858521/353812.terrain new file mode 100644 index 000000000..eeb9889cc Binary files /dev/null and b/public/terrain/19/858521/353812.terrain differ diff --git a/public/terrain/19/858521/353813.terrain b/public/terrain/19/858521/353813.terrain new file mode 100644 index 000000000..5a6f56d8e Binary files /dev/null and b/public/terrain/19/858521/353813.terrain differ diff --git a/public/terrain/19/858521/353814.terrain b/public/terrain/19/858521/353814.terrain new file mode 100644 index 000000000..7bc944664 Binary files /dev/null and b/public/terrain/19/858521/353814.terrain differ diff --git a/public/terrain/19/858521/353815.terrain b/public/terrain/19/858521/353815.terrain new file mode 100644 index 000000000..cb1a2761f Binary files /dev/null and b/public/terrain/19/858521/353815.terrain differ diff --git a/public/terrain/19/858521/353816.terrain b/public/terrain/19/858521/353816.terrain new file mode 100644 index 000000000..02f74ae9a Binary files /dev/null and b/public/terrain/19/858521/353816.terrain differ diff --git a/public/terrain/19/858521/353817.terrain b/public/terrain/19/858521/353817.terrain new file mode 100644 index 000000000..ac1b87aca Binary files /dev/null and b/public/terrain/19/858521/353817.terrain differ diff --git a/public/terrain/19/858521/353818.terrain b/public/terrain/19/858521/353818.terrain new file mode 100644 index 000000000..e3f8b5442 Binary files /dev/null and b/public/terrain/19/858521/353818.terrain differ diff --git a/public/terrain/19/858521/353819.terrain b/public/terrain/19/858521/353819.terrain new file mode 100644 index 000000000..d04a1ad29 Binary files /dev/null and b/public/terrain/19/858521/353819.terrain differ diff --git a/public/terrain/19/858521/353820.terrain b/public/terrain/19/858521/353820.terrain new file mode 100644 index 000000000..bca765582 Binary files /dev/null and b/public/terrain/19/858521/353820.terrain differ diff --git a/public/terrain/19/858521/353821.terrain b/public/terrain/19/858521/353821.terrain new file mode 100644 index 000000000..1e044d3bc Binary files /dev/null and b/public/terrain/19/858521/353821.terrain differ diff --git a/public/terrain/19/858521/353822.terrain b/public/terrain/19/858521/353822.terrain new file mode 100644 index 000000000..8d73aa278 Binary files /dev/null and b/public/terrain/19/858521/353822.terrain differ diff --git a/public/terrain/19/858521/353823.terrain b/public/terrain/19/858521/353823.terrain new file mode 100644 index 000000000..61e3c19a4 Binary files /dev/null and b/public/terrain/19/858521/353823.terrain differ diff --git a/public/terrain/19/858521/353824.terrain b/public/terrain/19/858521/353824.terrain new file mode 100644 index 000000000..8f351ba0c Binary files /dev/null and b/public/terrain/19/858521/353824.terrain differ diff --git a/public/terrain/19/858521/353825.terrain b/public/terrain/19/858521/353825.terrain new file mode 100644 index 000000000..286c476e5 Binary files /dev/null and b/public/terrain/19/858521/353825.terrain differ diff --git a/public/terrain/19/858521/353826.terrain b/public/terrain/19/858521/353826.terrain new file mode 100644 index 000000000..8fea67323 Binary files /dev/null and b/public/terrain/19/858521/353826.terrain differ diff --git a/public/terrain/19/858521/353827.terrain b/public/terrain/19/858521/353827.terrain new file mode 100644 index 000000000..b400e270c Binary files /dev/null and b/public/terrain/19/858521/353827.terrain differ diff --git a/public/terrain/19/858521/353828.terrain b/public/terrain/19/858521/353828.terrain new file mode 100644 index 000000000..6a29e2c87 Binary files /dev/null and b/public/terrain/19/858521/353828.terrain differ diff --git a/public/terrain/19/858521/353829.terrain b/public/terrain/19/858521/353829.terrain new file mode 100644 index 000000000..a3685ceab Binary files /dev/null and b/public/terrain/19/858521/353829.terrain differ diff --git a/public/terrain/19/858521/353830.terrain b/public/terrain/19/858521/353830.terrain new file mode 100644 index 000000000..412f14d5b Binary files /dev/null and b/public/terrain/19/858521/353830.terrain differ diff --git a/public/terrain/19/858521/353831.terrain b/public/terrain/19/858521/353831.terrain new file mode 100644 index 000000000..8bae44ca2 Binary files /dev/null and b/public/terrain/19/858521/353831.terrain differ diff --git a/public/terrain/19/858521/353832.terrain b/public/terrain/19/858521/353832.terrain new file mode 100644 index 000000000..b48d99707 Binary files /dev/null and b/public/terrain/19/858521/353832.terrain differ diff --git a/public/terrain/19/858521/353833.terrain b/public/terrain/19/858521/353833.terrain new file mode 100644 index 000000000..a235af507 Binary files /dev/null and b/public/terrain/19/858521/353833.terrain differ diff --git a/public/terrain/19/858521/353834.terrain b/public/terrain/19/858521/353834.terrain new file mode 100644 index 000000000..a03ab5648 Binary files /dev/null and b/public/terrain/19/858521/353834.terrain differ diff --git a/public/terrain/19/858521/353835.terrain b/public/terrain/19/858521/353835.terrain new file mode 100644 index 000000000..074a57db8 Binary files /dev/null and b/public/terrain/19/858521/353835.terrain differ diff --git a/public/terrain/19/858521/353836.terrain b/public/terrain/19/858521/353836.terrain new file mode 100644 index 000000000..85ab52b3d Binary files /dev/null and b/public/terrain/19/858521/353836.terrain differ diff --git a/public/terrain/19/858521/353837.terrain b/public/terrain/19/858521/353837.terrain new file mode 100644 index 000000000..3fd707bfa Binary files /dev/null and b/public/terrain/19/858521/353837.terrain differ diff --git a/public/terrain/19/858521/353838.terrain b/public/terrain/19/858521/353838.terrain new file mode 100644 index 000000000..a8a59def1 Binary files /dev/null and b/public/terrain/19/858521/353838.terrain differ diff --git a/public/terrain/19/858521/353839.terrain b/public/terrain/19/858521/353839.terrain new file mode 100644 index 000000000..7c55fcb2a Binary files /dev/null and b/public/terrain/19/858521/353839.terrain differ diff --git a/public/terrain/19/858521/353840.terrain b/public/terrain/19/858521/353840.terrain new file mode 100644 index 000000000..2958f80d8 Binary files /dev/null and b/public/terrain/19/858521/353840.terrain differ diff --git a/public/terrain/19/858521/353841.terrain b/public/terrain/19/858521/353841.terrain new file mode 100644 index 000000000..ef392a8d2 Binary files /dev/null and b/public/terrain/19/858521/353841.terrain differ diff --git a/public/terrain/19/858521/353842.terrain b/public/terrain/19/858521/353842.terrain new file mode 100644 index 000000000..5aa6f8387 Binary files /dev/null and b/public/terrain/19/858521/353842.terrain differ diff --git a/public/terrain/19/858521/353843.terrain b/public/terrain/19/858521/353843.terrain new file mode 100644 index 000000000..605c177fa Binary files /dev/null and b/public/terrain/19/858521/353843.terrain differ diff --git a/public/terrain/19/858521/353844.terrain b/public/terrain/19/858521/353844.terrain new file mode 100644 index 000000000..1b0973dbb Binary files /dev/null and b/public/terrain/19/858521/353844.terrain differ diff --git a/public/terrain/19/858521/353845.terrain b/public/terrain/19/858521/353845.terrain new file mode 100644 index 000000000..d3aad8dfd Binary files /dev/null and b/public/terrain/19/858521/353845.terrain differ diff --git a/public/terrain/19/858521/353846.terrain b/public/terrain/19/858521/353846.terrain new file mode 100644 index 000000000..d24ee4d33 Binary files /dev/null and b/public/terrain/19/858521/353846.terrain differ diff --git a/public/terrain/19/858521/353847.terrain b/public/terrain/19/858521/353847.terrain new file mode 100644 index 000000000..a6b6038e2 Binary files /dev/null and b/public/terrain/19/858521/353847.terrain differ diff --git a/public/terrain/19/858521/353848.terrain b/public/terrain/19/858521/353848.terrain new file mode 100644 index 000000000..2bcd7fe57 Binary files /dev/null and b/public/terrain/19/858521/353848.terrain differ diff --git a/public/terrain/19/858521/353849.terrain b/public/terrain/19/858521/353849.terrain new file mode 100644 index 000000000..28b4a33ca Binary files /dev/null and b/public/terrain/19/858521/353849.terrain differ diff --git a/public/terrain/19/858521/353850.terrain b/public/terrain/19/858521/353850.terrain new file mode 100644 index 000000000..6335fe986 Binary files /dev/null and b/public/terrain/19/858521/353850.terrain differ diff --git a/public/terrain/19/858521/353851.terrain b/public/terrain/19/858521/353851.terrain new file mode 100644 index 000000000..bd340a077 Binary files /dev/null and b/public/terrain/19/858521/353851.terrain differ diff --git a/public/terrain/19/858521/353852.terrain b/public/terrain/19/858521/353852.terrain new file mode 100644 index 000000000..3c0cfcf4b Binary files /dev/null and b/public/terrain/19/858521/353852.terrain differ diff --git a/public/terrain/19/858521/353853.terrain b/public/terrain/19/858521/353853.terrain new file mode 100644 index 000000000..722b827be Binary files /dev/null and b/public/terrain/19/858521/353853.terrain differ diff --git a/public/terrain/19/858521/353854.terrain b/public/terrain/19/858521/353854.terrain new file mode 100644 index 000000000..b1a71b8b1 Binary files /dev/null and b/public/terrain/19/858521/353854.terrain differ diff --git a/public/terrain/19/858521/353855.terrain b/public/terrain/19/858521/353855.terrain new file mode 100644 index 000000000..78aeffdcf Binary files /dev/null and b/public/terrain/19/858521/353855.terrain differ diff --git a/public/terrain/19/858521/353856.terrain b/public/terrain/19/858521/353856.terrain new file mode 100644 index 000000000..f64fecb80 Binary files /dev/null and b/public/terrain/19/858521/353856.terrain differ diff --git a/public/terrain/19/858521/353857.terrain b/public/terrain/19/858521/353857.terrain new file mode 100644 index 000000000..2a9012180 Binary files /dev/null and b/public/terrain/19/858521/353857.terrain differ diff --git a/public/terrain/19/858521/353858.terrain b/public/terrain/19/858521/353858.terrain new file mode 100644 index 000000000..a0c4ac2dd Binary files /dev/null and b/public/terrain/19/858521/353858.terrain differ diff --git a/public/terrain/19/858521/353859.terrain b/public/terrain/19/858521/353859.terrain new file mode 100644 index 000000000..6015e608e Binary files /dev/null and b/public/terrain/19/858521/353859.terrain differ diff --git a/public/terrain/19/858521/353860.terrain b/public/terrain/19/858521/353860.terrain new file mode 100644 index 000000000..2bee6c567 Binary files /dev/null and b/public/terrain/19/858521/353860.terrain differ diff --git a/public/terrain/19/858521/353861.terrain b/public/terrain/19/858521/353861.terrain new file mode 100644 index 000000000..be144c3c0 Binary files /dev/null and b/public/terrain/19/858521/353861.terrain differ diff --git a/public/terrain/19/858521/353862.terrain b/public/terrain/19/858521/353862.terrain new file mode 100644 index 000000000..dd6012c98 Binary files /dev/null and b/public/terrain/19/858521/353862.terrain differ diff --git a/public/terrain/19/858521/353863.terrain b/public/terrain/19/858521/353863.terrain new file mode 100644 index 000000000..c830adeb6 Binary files /dev/null and b/public/terrain/19/858521/353863.terrain differ diff --git a/public/terrain/19/858521/353864.terrain b/public/terrain/19/858521/353864.terrain new file mode 100644 index 000000000..efc6d9ffe Binary files /dev/null and b/public/terrain/19/858521/353864.terrain differ diff --git a/public/terrain/19/858521/353865.terrain b/public/terrain/19/858521/353865.terrain new file mode 100644 index 000000000..ceeebb21a Binary files /dev/null and b/public/terrain/19/858521/353865.terrain differ diff --git a/public/terrain/19/858521/353866.terrain b/public/terrain/19/858521/353866.terrain new file mode 100644 index 000000000..d75abbe40 Binary files /dev/null and b/public/terrain/19/858521/353866.terrain differ diff --git a/public/terrain/19/858521/353867.terrain b/public/terrain/19/858521/353867.terrain new file mode 100644 index 000000000..6e86e88fe Binary files /dev/null and b/public/terrain/19/858521/353867.terrain differ diff --git a/public/terrain/19/858521/353868.terrain b/public/terrain/19/858521/353868.terrain new file mode 100644 index 000000000..cb2ec9b38 Binary files /dev/null and b/public/terrain/19/858521/353868.terrain differ diff --git a/public/terrain/19/858521/353869.terrain b/public/terrain/19/858521/353869.terrain new file mode 100644 index 000000000..25072bc8d Binary files /dev/null and b/public/terrain/19/858521/353869.terrain differ diff --git a/public/terrain/19/858521/353870.terrain b/public/terrain/19/858521/353870.terrain new file mode 100644 index 000000000..a78393397 Binary files /dev/null and b/public/terrain/19/858521/353870.terrain differ diff --git a/public/terrain/19/858521/353871.terrain b/public/terrain/19/858521/353871.terrain new file mode 100644 index 000000000..6ac1727f4 Binary files /dev/null and b/public/terrain/19/858521/353871.terrain differ diff --git a/public/terrain/19/858521/353872.terrain b/public/terrain/19/858521/353872.terrain new file mode 100644 index 000000000..060118196 Binary files /dev/null and b/public/terrain/19/858521/353872.terrain differ diff --git a/public/terrain/19/858521/353873.terrain b/public/terrain/19/858521/353873.terrain new file mode 100644 index 000000000..6caaf8eb6 Binary files /dev/null and b/public/terrain/19/858521/353873.terrain differ diff --git a/public/terrain/19/858521/353874.terrain b/public/terrain/19/858521/353874.terrain new file mode 100644 index 000000000..514b3e5e3 Binary files /dev/null and b/public/terrain/19/858521/353874.terrain differ diff --git a/public/terrain/19/858521/353875.terrain b/public/terrain/19/858521/353875.terrain new file mode 100644 index 000000000..1200d8f3c Binary files /dev/null and b/public/terrain/19/858521/353875.terrain differ diff --git a/public/terrain/19/858521/353876.terrain b/public/terrain/19/858521/353876.terrain new file mode 100644 index 000000000..51a74a713 Binary files /dev/null and b/public/terrain/19/858521/353876.terrain differ diff --git a/public/terrain/19/858521/353877.terrain b/public/terrain/19/858521/353877.terrain new file mode 100644 index 000000000..95787fc22 Binary files /dev/null and b/public/terrain/19/858521/353877.terrain differ diff --git a/public/terrain/19/858521/353878.terrain b/public/terrain/19/858521/353878.terrain new file mode 100644 index 000000000..da444d534 Binary files /dev/null and b/public/terrain/19/858521/353878.terrain differ diff --git a/public/terrain/19/858521/353879.terrain b/public/terrain/19/858521/353879.terrain new file mode 100644 index 000000000..40e66d5f1 Binary files /dev/null and b/public/terrain/19/858521/353879.terrain differ diff --git a/public/terrain/19/858521/353880.terrain b/public/terrain/19/858521/353880.terrain new file mode 100644 index 000000000..9b3df096e Binary files /dev/null and b/public/terrain/19/858521/353880.terrain differ diff --git a/public/terrain/19/858521/353881.terrain b/public/terrain/19/858521/353881.terrain new file mode 100644 index 000000000..f3f728220 Binary files /dev/null and b/public/terrain/19/858521/353881.terrain differ diff --git a/public/terrain/19/858521/353882.terrain b/public/terrain/19/858521/353882.terrain new file mode 100644 index 000000000..e3ed22f22 Binary files /dev/null and b/public/terrain/19/858521/353882.terrain differ diff --git a/public/terrain/19/858521/353883.terrain b/public/terrain/19/858521/353883.terrain new file mode 100644 index 000000000..62b0d1a84 Binary files /dev/null and b/public/terrain/19/858521/353883.terrain differ diff --git a/public/terrain/19/858521/353884.terrain b/public/terrain/19/858521/353884.terrain new file mode 100644 index 000000000..e32ca7692 Binary files /dev/null and b/public/terrain/19/858521/353884.terrain differ diff --git a/public/terrain/19/858521/353885.terrain b/public/terrain/19/858521/353885.terrain new file mode 100644 index 000000000..f3707ed5c Binary files /dev/null and b/public/terrain/19/858521/353885.terrain differ diff --git a/public/terrain/19/858521/353886.terrain b/public/terrain/19/858521/353886.terrain new file mode 100644 index 000000000..13512c340 Binary files /dev/null and b/public/terrain/19/858521/353886.terrain differ diff --git a/public/terrain/19/858521/353887.terrain b/public/terrain/19/858521/353887.terrain new file mode 100644 index 000000000..8a3f94ad4 Binary files /dev/null and b/public/terrain/19/858521/353887.terrain differ diff --git a/public/terrain/19/858521/353888.terrain b/public/terrain/19/858521/353888.terrain new file mode 100644 index 000000000..763e120a3 Binary files /dev/null and b/public/terrain/19/858521/353888.terrain differ diff --git a/public/terrain/19/858521/353889.terrain b/public/terrain/19/858521/353889.terrain new file mode 100644 index 000000000..bbeebb202 Binary files /dev/null and b/public/terrain/19/858521/353889.terrain differ diff --git a/public/terrain/19/858521/353890.terrain b/public/terrain/19/858521/353890.terrain new file mode 100644 index 000000000..eadb1ba4d Binary files /dev/null and b/public/terrain/19/858521/353890.terrain differ diff --git a/public/terrain/19/858521/353891.terrain b/public/terrain/19/858521/353891.terrain new file mode 100644 index 000000000..47f5b8cd0 Binary files /dev/null and b/public/terrain/19/858521/353891.terrain differ diff --git a/public/terrain/19/858521/353892.terrain b/public/terrain/19/858521/353892.terrain new file mode 100644 index 000000000..e7d97549d Binary files /dev/null and b/public/terrain/19/858521/353892.terrain differ diff --git a/public/terrain/19/858521/353893.terrain b/public/terrain/19/858521/353893.terrain new file mode 100644 index 000000000..2ec756f92 Binary files /dev/null and b/public/terrain/19/858521/353893.terrain differ diff --git a/public/terrain/19/858521/353894.terrain b/public/terrain/19/858521/353894.terrain new file mode 100644 index 000000000..a0adf7bca Binary files /dev/null and b/public/terrain/19/858521/353894.terrain differ diff --git a/public/terrain/19/858521/353895.terrain b/public/terrain/19/858521/353895.terrain new file mode 100644 index 000000000..6b748e4c2 Binary files /dev/null and b/public/terrain/19/858521/353895.terrain differ diff --git a/public/terrain/19/858521/353896.terrain b/public/terrain/19/858521/353896.terrain new file mode 100644 index 000000000..5a64b217c Binary files /dev/null and b/public/terrain/19/858521/353896.terrain differ diff --git a/public/terrain/19/858521/353897.terrain b/public/terrain/19/858521/353897.terrain new file mode 100644 index 000000000..74d21c6de Binary files /dev/null and b/public/terrain/19/858521/353897.terrain differ diff --git a/public/terrain/19/858521/353898.terrain b/public/terrain/19/858521/353898.terrain new file mode 100644 index 000000000..2272dc5d5 Binary files /dev/null and b/public/terrain/19/858521/353898.terrain differ diff --git a/public/terrain/19/858521/353899.terrain b/public/terrain/19/858521/353899.terrain new file mode 100644 index 000000000..edc477848 Binary files /dev/null and b/public/terrain/19/858521/353899.terrain differ diff --git a/public/terrain/19/858521/353900.terrain b/public/terrain/19/858521/353900.terrain new file mode 100644 index 000000000..2aa28add6 Binary files /dev/null and b/public/terrain/19/858521/353900.terrain differ diff --git a/public/terrain/19/858521/353901.terrain b/public/terrain/19/858521/353901.terrain new file mode 100644 index 000000000..b486240b6 Binary files /dev/null and b/public/terrain/19/858521/353901.terrain differ diff --git a/public/terrain/19/858521/353902.terrain b/public/terrain/19/858521/353902.terrain new file mode 100644 index 000000000..fddbe4607 Binary files /dev/null and b/public/terrain/19/858521/353902.terrain differ diff --git a/public/terrain/19/858521/353903.terrain b/public/terrain/19/858521/353903.terrain new file mode 100644 index 000000000..985e406c9 Binary files /dev/null and b/public/terrain/19/858521/353903.terrain differ diff --git a/public/terrain/19/858521/353904.terrain b/public/terrain/19/858521/353904.terrain new file mode 100644 index 000000000..7b0ec6bea Binary files /dev/null and b/public/terrain/19/858521/353904.terrain differ diff --git a/public/terrain/19/858521/353905.terrain b/public/terrain/19/858521/353905.terrain new file mode 100644 index 000000000..929e690cd Binary files /dev/null and b/public/terrain/19/858521/353905.terrain differ diff --git a/public/terrain/19/858521/353906.terrain b/public/terrain/19/858521/353906.terrain new file mode 100644 index 000000000..fcf751610 Binary files /dev/null and b/public/terrain/19/858521/353906.terrain differ diff --git a/public/terrain/19/858521/353907.terrain b/public/terrain/19/858521/353907.terrain new file mode 100644 index 000000000..e8139b89b Binary files /dev/null and b/public/terrain/19/858521/353907.terrain differ diff --git a/public/terrain/19/858521/353908.terrain b/public/terrain/19/858521/353908.terrain new file mode 100644 index 000000000..1acfba0d5 Binary files /dev/null and b/public/terrain/19/858521/353908.terrain differ diff --git a/public/terrain/19/858521/353909.terrain b/public/terrain/19/858521/353909.terrain new file mode 100644 index 000000000..704e7eef2 Binary files /dev/null and b/public/terrain/19/858521/353909.terrain differ diff --git a/public/terrain/19/858521/353910.terrain b/public/terrain/19/858521/353910.terrain new file mode 100644 index 000000000..3ccc74a28 Binary files /dev/null and b/public/terrain/19/858521/353910.terrain differ diff --git a/public/terrain/19/858521/353911.terrain b/public/terrain/19/858521/353911.terrain new file mode 100644 index 000000000..128cb179c Binary files /dev/null and b/public/terrain/19/858521/353911.terrain differ diff --git a/public/terrain/19/858521/353912.terrain b/public/terrain/19/858521/353912.terrain new file mode 100644 index 000000000..bb4eaa728 Binary files /dev/null and b/public/terrain/19/858521/353912.terrain differ diff --git a/public/terrain/19/858521/353913.terrain b/public/terrain/19/858521/353913.terrain new file mode 100644 index 000000000..37d71ab2a Binary files /dev/null and b/public/terrain/19/858521/353913.terrain differ diff --git a/public/terrain/19/858521/353914.terrain b/public/terrain/19/858521/353914.terrain new file mode 100644 index 000000000..c1500cc8f Binary files /dev/null and b/public/terrain/19/858521/353914.terrain differ diff --git a/public/terrain/19/858521/353915.terrain b/public/terrain/19/858521/353915.terrain new file mode 100644 index 000000000..8f5823fd2 Binary files /dev/null and b/public/terrain/19/858521/353915.terrain differ diff --git a/public/terrain/19/858521/353916.terrain b/public/terrain/19/858521/353916.terrain new file mode 100644 index 000000000..de09a16bf Binary files /dev/null and b/public/terrain/19/858521/353916.terrain differ diff --git a/public/terrain/19/858521/353917.terrain b/public/terrain/19/858521/353917.terrain new file mode 100644 index 000000000..b2d7cdfae Binary files /dev/null and b/public/terrain/19/858521/353917.terrain differ diff --git a/public/terrain/19/858521/353918.terrain b/public/terrain/19/858521/353918.terrain new file mode 100644 index 000000000..09f0bf0e3 Binary files /dev/null and b/public/terrain/19/858521/353918.terrain differ diff --git a/public/terrain/19/858521/353919.terrain b/public/terrain/19/858521/353919.terrain new file mode 100644 index 000000000..6f640c9b8 Binary files /dev/null and b/public/terrain/19/858521/353919.terrain differ diff --git a/public/terrain/19/858521/353920.terrain b/public/terrain/19/858521/353920.terrain new file mode 100644 index 000000000..8f2038dc4 Binary files /dev/null and b/public/terrain/19/858521/353920.terrain differ diff --git a/public/terrain/19/858521/353921.terrain b/public/terrain/19/858521/353921.terrain new file mode 100644 index 000000000..227457620 Binary files /dev/null and b/public/terrain/19/858521/353921.terrain differ diff --git a/public/terrain/19/858521/353922.terrain b/public/terrain/19/858521/353922.terrain new file mode 100644 index 000000000..8aba9de1f Binary files /dev/null and b/public/terrain/19/858521/353922.terrain differ diff --git a/public/terrain/19/858521/353923.terrain b/public/terrain/19/858521/353923.terrain new file mode 100644 index 000000000..dfbb4a217 Binary files /dev/null and b/public/terrain/19/858521/353923.terrain differ diff --git a/public/terrain/19/858521/353924.terrain b/public/terrain/19/858521/353924.terrain new file mode 100644 index 000000000..db44661f4 Binary files /dev/null and b/public/terrain/19/858521/353924.terrain differ diff --git a/public/terrain/19/858521/353925.terrain b/public/terrain/19/858521/353925.terrain new file mode 100644 index 000000000..d34226f95 Binary files /dev/null and b/public/terrain/19/858521/353925.terrain differ diff --git a/public/terrain/19/858521/353926.terrain b/public/terrain/19/858521/353926.terrain new file mode 100644 index 000000000..e8b636bca Binary files /dev/null and b/public/terrain/19/858521/353926.terrain differ diff --git a/public/terrain/19/858521/353927.terrain b/public/terrain/19/858521/353927.terrain new file mode 100644 index 000000000..e161a605a Binary files /dev/null and b/public/terrain/19/858521/353927.terrain differ diff --git a/public/terrain/19/858521/353928.terrain b/public/terrain/19/858521/353928.terrain new file mode 100644 index 000000000..ca03ef2f6 Binary files /dev/null and b/public/terrain/19/858521/353928.terrain differ diff --git a/public/terrain/19/858521/353929.terrain b/public/terrain/19/858521/353929.terrain new file mode 100644 index 000000000..38f9740b2 Binary files /dev/null and b/public/terrain/19/858521/353929.terrain differ diff --git a/public/terrain/19/858521/353930.terrain b/public/terrain/19/858521/353930.terrain new file mode 100644 index 000000000..dc0e27109 Binary files /dev/null and b/public/terrain/19/858521/353930.terrain differ diff --git a/public/terrain/19/858521/353931.terrain b/public/terrain/19/858521/353931.terrain new file mode 100644 index 000000000..d736416ec Binary files /dev/null and b/public/terrain/19/858521/353931.terrain differ diff --git a/public/terrain/19/858521/353932.terrain b/public/terrain/19/858521/353932.terrain new file mode 100644 index 000000000..1fab7c90c Binary files /dev/null and b/public/terrain/19/858521/353932.terrain differ diff --git a/public/terrain/19/858521/353933.terrain b/public/terrain/19/858521/353933.terrain new file mode 100644 index 000000000..37bf98e43 Binary files /dev/null and b/public/terrain/19/858521/353933.terrain differ diff --git a/public/terrain/19/858521/353934.terrain b/public/terrain/19/858521/353934.terrain new file mode 100644 index 000000000..6605012be Binary files /dev/null and b/public/terrain/19/858521/353934.terrain differ diff --git a/public/terrain/19/858521/353935.terrain b/public/terrain/19/858521/353935.terrain new file mode 100644 index 000000000..a26b5aa8a Binary files /dev/null and b/public/terrain/19/858521/353935.terrain differ diff --git a/public/terrain/19/858521/353936.terrain b/public/terrain/19/858521/353936.terrain new file mode 100644 index 000000000..8540262b1 Binary files /dev/null and b/public/terrain/19/858521/353936.terrain differ diff --git a/public/terrain/19/858521/353937.terrain b/public/terrain/19/858521/353937.terrain new file mode 100644 index 000000000..c1e9c28e0 Binary files /dev/null and b/public/terrain/19/858521/353937.terrain differ diff --git a/public/terrain/19/858521/353938.terrain b/public/terrain/19/858521/353938.terrain new file mode 100644 index 000000000..b02181ee6 Binary files /dev/null and b/public/terrain/19/858521/353938.terrain differ diff --git a/public/terrain/19/858521/353939.terrain b/public/terrain/19/858521/353939.terrain new file mode 100644 index 000000000..45cbeca6b Binary files /dev/null and b/public/terrain/19/858521/353939.terrain differ diff --git a/public/terrain/19/858521/353940.terrain b/public/terrain/19/858521/353940.terrain new file mode 100644 index 000000000..c56feba7a Binary files /dev/null and b/public/terrain/19/858521/353940.terrain differ diff --git a/public/terrain/19/858521/353941.terrain b/public/terrain/19/858521/353941.terrain new file mode 100644 index 000000000..3f573aa4b Binary files /dev/null and b/public/terrain/19/858521/353941.terrain differ diff --git a/public/terrain/19/858521/353942.terrain b/public/terrain/19/858521/353942.terrain new file mode 100644 index 000000000..858314a90 Binary files /dev/null and b/public/terrain/19/858521/353942.terrain differ diff --git a/public/terrain/19/858521/353943.terrain b/public/terrain/19/858521/353943.terrain new file mode 100644 index 000000000..814b322a3 Binary files /dev/null and b/public/terrain/19/858521/353943.terrain differ diff --git a/public/terrain/19/858521/353944.terrain b/public/terrain/19/858521/353944.terrain new file mode 100644 index 000000000..4ee9503a9 Binary files /dev/null and b/public/terrain/19/858521/353944.terrain differ diff --git a/public/terrain/19/858521/353945.terrain b/public/terrain/19/858521/353945.terrain new file mode 100644 index 000000000..d4d3bab01 Binary files /dev/null and b/public/terrain/19/858521/353945.terrain differ diff --git a/public/terrain/19/858521/353946.terrain b/public/terrain/19/858521/353946.terrain new file mode 100644 index 000000000..77f6dee5a Binary files /dev/null and b/public/terrain/19/858521/353946.terrain differ diff --git a/public/terrain/19/858521/353947.terrain b/public/terrain/19/858521/353947.terrain new file mode 100644 index 000000000..4ebb8974c Binary files /dev/null and b/public/terrain/19/858521/353947.terrain differ diff --git a/public/terrain/19/858521/353948.terrain b/public/terrain/19/858521/353948.terrain new file mode 100644 index 000000000..e2a2adbcc Binary files /dev/null and b/public/terrain/19/858521/353948.terrain differ diff --git a/public/terrain/19/858521/353949.terrain b/public/terrain/19/858521/353949.terrain new file mode 100644 index 000000000..9139cfbb3 Binary files /dev/null and b/public/terrain/19/858521/353949.terrain differ diff --git a/public/terrain/19/858521/353950.terrain b/public/terrain/19/858521/353950.terrain new file mode 100644 index 000000000..a97aabf9e Binary files /dev/null and b/public/terrain/19/858521/353950.terrain differ diff --git a/public/terrain/19/858521/353951.terrain b/public/terrain/19/858521/353951.terrain new file mode 100644 index 000000000..1afcdc2b6 Binary files /dev/null and b/public/terrain/19/858521/353951.terrain differ diff --git a/public/terrain/19/858521/353952.terrain b/public/terrain/19/858521/353952.terrain new file mode 100644 index 000000000..ebfeee58f Binary files /dev/null and b/public/terrain/19/858521/353952.terrain differ diff --git a/public/terrain/19/858521/353953.terrain b/public/terrain/19/858521/353953.terrain new file mode 100644 index 000000000..027dd257b Binary files /dev/null and b/public/terrain/19/858521/353953.terrain differ diff --git a/public/terrain/19/858521/353954.terrain b/public/terrain/19/858521/353954.terrain new file mode 100644 index 000000000..a562ffb5a Binary files /dev/null and b/public/terrain/19/858521/353954.terrain differ diff --git a/public/terrain/19/858521/353955.terrain b/public/terrain/19/858521/353955.terrain new file mode 100644 index 000000000..1934f2d54 Binary files /dev/null and b/public/terrain/19/858521/353955.terrain differ diff --git a/public/terrain/19/858521/353956.terrain b/public/terrain/19/858521/353956.terrain new file mode 100644 index 000000000..2c0863cd1 Binary files /dev/null and b/public/terrain/19/858521/353956.terrain differ diff --git a/public/terrain/19/858521/353957.terrain b/public/terrain/19/858521/353957.terrain new file mode 100644 index 000000000..07b316ac8 Binary files /dev/null and b/public/terrain/19/858521/353957.terrain differ diff --git a/public/terrain/19/858521/353958.terrain b/public/terrain/19/858521/353958.terrain new file mode 100644 index 000000000..28b4b44b9 Binary files /dev/null and b/public/terrain/19/858521/353958.terrain differ diff --git a/public/terrain/19/858521/353959.terrain b/public/terrain/19/858521/353959.terrain new file mode 100644 index 000000000..532bbd430 Binary files /dev/null and b/public/terrain/19/858521/353959.terrain differ diff --git a/public/terrain/19/858521/353960.terrain b/public/terrain/19/858521/353960.terrain new file mode 100644 index 000000000..897cbc5a9 Binary files /dev/null and b/public/terrain/19/858521/353960.terrain differ diff --git a/public/terrain/19/858521/353961.terrain b/public/terrain/19/858521/353961.terrain new file mode 100644 index 000000000..da14807f0 Binary files /dev/null and b/public/terrain/19/858521/353961.terrain differ diff --git a/public/terrain/19/858521/353962.terrain b/public/terrain/19/858521/353962.terrain new file mode 100644 index 000000000..7ddfc8eae Binary files /dev/null and b/public/terrain/19/858521/353962.terrain differ diff --git a/public/terrain/19/858521/353963.terrain b/public/terrain/19/858521/353963.terrain new file mode 100644 index 000000000..9f3555c71 Binary files /dev/null and b/public/terrain/19/858521/353963.terrain differ diff --git a/public/terrain/19/858521/353964.terrain b/public/terrain/19/858521/353964.terrain new file mode 100644 index 000000000..920957130 Binary files /dev/null and b/public/terrain/19/858521/353964.terrain differ diff --git a/public/terrain/19/858521/353965.terrain b/public/terrain/19/858521/353965.terrain new file mode 100644 index 000000000..573710532 Binary files /dev/null and b/public/terrain/19/858521/353965.terrain differ diff --git a/public/terrain/19/858521/353966.terrain b/public/terrain/19/858521/353966.terrain new file mode 100644 index 000000000..a30e7df52 Binary files /dev/null and b/public/terrain/19/858521/353966.terrain differ diff --git a/public/terrain/19/858521/353967.terrain b/public/terrain/19/858521/353967.terrain new file mode 100644 index 000000000..c98123eb2 Binary files /dev/null and b/public/terrain/19/858521/353967.terrain differ diff --git a/public/terrain/19/858521/353968.terrain b/public/terrain/19/858521/353968.terrain new file mode 100644 index 000000000..8d8b86d6f Binary files /dev/null and b/public/terrain/19/858521/353968.terrain differ diff --git a/public/terrain/19/858521/353969.terrain b/public/terrain/19/858521/353969.terrain new file mode 100644 index 000000000..a705621a7 Binary files /dev/null and b/public/terrain/19/858521/353969.terrain differ diff --git a/public/terrain/19/858521/353970.terrain b/public/terrain/19/858521/353970.terrain new file mode 100644 index 000000000..4e6493ea8 Binary files /dev/null and b/public/terrain/19/858521/353970.terrain differ diff --git a/public/terrain/19/858521/353971.terrain b/public/terrain/19/858521/353971.terrain new file mode 100644 index 000000000..d5dd8555f Binary files /dev/null and b/public/terrain/19/858521/353971.terrain differ diff --git a/public/terrain/19/858521/353972.terrain b/public/terrain/19/858521/353972.terrain new file mode 100644 index 000000000..94719a574 Binary files /dev/null and b/public/terrain/19/858521/353972.terrain differ diff --git a/public/terrain/19/858521/353973.terrain b/public/terrain/19/858521/353973.terrain new file mode 100644 index 000000000..47cf04339 Binary files /dev/null and b/public/terrain/19/858521/353973.terrain differ diff --git a/public/terrain/19/858521/353974.terrain b/public/terrain/19/858521/353974.terrain new file mode 100644 index 000000000..78956c83e Binary files /dev/null and b/public/terrain/19/858521/353974.terrain differ diff --git a/public/terrain/19/858521/353975.terrain b/public/terrain/19/858521/353975.terrain new file mode 100644 index 000000000..12b47b178 Binary files /dev/null and b/public/terrain/19/858521/353975.terrain differ diff --git a/public/terrain/19/858521/353976.terrain b/public/terrain/19/858521/353976.terrain new file mode 100644 index 000000000..a7e205d3b Binary files /dev/null and b/public/terrain/19/858521/353976.terrain differ diff --git a/public/terrain/19/858521/353977.terrain b/public/terrain/19/858521/353977.terrain new file mode 100644 index 000000000..33e742c15 Binary files /dev/null and b/public/terrain/19/858521/353977.terrain differ diff --git a/public/terrain/19/858521/353978.terrain b/public/terrain/19/858521/353978.terrain new file mode 100644 index 000000000..27f9b5dbe Binary files /dev/null and b/public/terrain/19/858521/353978.terrain differ diff --git a/public/terrain/19/858521/353979.terrain b/public/terrain/19/858521/353979.terrain new file mode 100644 index 000000000..dfafc439a Binary files /dev/null and b/public/terrain/19/858521/353979.terrain differ diff --git a/public/terrain/19/858521/353980.terrain b/public/terrain/19/858521/353980.terrain new file mode 100644 index 000000000..214f836c9 Binary files /dev/null and b/public/terrain/19/858521/353980.terrain differ diff --git a/public/terrain/19/858521/353981.terrain b/public/terrain/19/858521/353981.terrain new file mode 100644 index 000000000..bb81b2f7c Binary files /dev/null and b/public/terrain/19/858521/353981.terrain differ diff --git a/public/terrain/19/858521/353982.terrain b/public/terrain/19/858521/353982.terrain new file mode 100644 index 000000000..4b1d037aa Binary files /dev/null and b/public/terrain/19/858521/353982.terrain differ diff --git a/public/terrain/19/858521/353983.terrain b/public/terrain/19/858521/353983.terrain new file mode 100644 index 000000000..98d8f59be Binary files /dev/null and b/public/terrain/19/858521/353983.terrain differ diff --git a/public/terrain/19/858521/353984.terrain b/public/terrain/19/858521/353984.terrain new file mode 100644 index 000000000..57a79bbb5 Binary files /dev/null and b/public/terrain/19/858521/353984.terrain differ diff --git a/public/terrain/19/858521/353985.terrain b/public/terrain/19/858521/353985.terrain new file mode 100644 index 000000000..19776a665 Binary files /dev/null and b/public/terrain/19/858521/353985.terrain differ diff --git a/public/terrain/19/858521/353986.terrain b/public/terrain/19/858521/353986.terrain new file mode 100644 index 000000000..f5ef5dd7b Binary files /dev/null and b/public/terrain/19/858521/353986.terrain differ diff --git a/public/terrain/19/858521/353987.terrain b/public/terrain/19/858521/353987.terrain new file mode 100644 index 000000000..304d6ef93 Binary files /dev/null and b/public/terrain/19/858521/353987.terrain differ diff --git a/public/terrain/19/858521/353988.terrain b/public/terrain/19/858521/353988.terrain new file mode 100644 index 000000000..4d3195e03 Binary files /dev/null and b/public/terrain/19/858521/353988.terrain differ diff --git a/public/terrain/19/858521/353989.terrain b/public/terrain/19/858521/353989.terrain new file mode 100644 index 000000000..2c08a593d Binary files /dev/null and b/public/terrain/19/858521/353989.terrain differ diff --git a/public/terrain/19/858521/353990.terrain b/public/terrain/19/858521/353990.terrain new file mode 100644 index 000000000..5f4d55629 Binary files /dev/null and b/public/terrain/19/858521/353990.terrain differ diff --git a/public/terrain/19/858521/353991.terrain b/public/terrain/19/858521/353991.terrain new file mode 100644 index 000000000..47894764d Binary files /dev/null and b/public/terrain/19/858521/353991.terrain differ diff --git a/public/terrain/19/858521/353992.terrain b/public/terrain/19/858521/353992.terrain new file mode 100644 index 000000000..bb55854ea Binary files /dev/null and b/public/terrain/19/858521/353992.terrain differ diff --git a/public/terrain/19/858521/353993.terrain b/public/terrain/19/858521/353993.terrain new file mode 100644 index 000000000..525aefe52 Binary files /dev/null and b/public/terrain/19/858521/353993.terrain differ diff --git a/public/terrain/19/858521/353994.terrain b/public/terrain/19/858521/353994.terrain new file mode 100644 index 000000000..9542a8d8f Binary files /dev/null and b/public/terrain/19/858521/353994.terrain differ diff --git a/public/terrain/19/858521/353995.terrain b/public/terrain/19/858521/353995.terrain new file mode 100644 index 000000000..bc64c12f8 Binary files /dev/null and b/public/terrain/19/858521/353995.terrain differ diff --git a/public/terrain/19/858521/353996.terrain b/public/terrain/19/858521/353996.terrain new file mode 100644 index 000000000..14535f7e8 Binary files /dev/null and b/public/terrain/19/858521/353996.terrain differ diff --git a/public/terrain/19/858521/353997.terrain b/public/terrain/19/858521/353997.terrain new file mode 100644 index 000000000..27f59373b Binary files /dev/null and b/public/terrain/19/858521/353997.terrain differ diff --git a/public/terrain/19/858521/353998.terrain b/public/terrain/19/858521/353998.terrain new file mode 100644 index 000000000..ac0833dc5 Binary files /dev/null and b/public/terrain/19/858521/353998.terrain differ diff --git a/public/terrain/19/858521/353999.terrain b/public/terrain/19/858521/353999.terrain new file mode 100644 index 000000000..d1b8273bb Binary files /dev/null and b/public/terrain/19/858521/353999.terrain differ diff --git a/public/terrain/19/858521/354000.terrain b/public/terrain/19/858521/354000.terrain new file mode 100644 index 000000000..141dac737 Binary files /dev/null and b/public/terrain/19/858521/354000.terrain differ diff --git a/public/terrain/19/858521/354001.terrain b/public/terrain/19/858521/354001.terrain new file mode 100644 index 000000000..235f6bf18 Binary files /dev/null and b/public/terrain/19/858521/354001.terrain differ diff --git a/public/terrain/19/858521/354002.terrain b/public/terrain/19/858521/354002.terrain new file mode 100644 index 000000000..48486e709 Binary files /dev/null and b/public/terrain/19/858521/354002.terrain differ diff --git a/public/terrain/19/858521/354003.terrain b/public/terrain/19/858521/354003.terrain new file mode 100644 index 000000000..411784203 Binary files /dev/null and b/public/terrain/19/858521/354003.terrain differ diff --git a/public/terrain/19/858521/354004.terrain b/public/terrain/19/858521/354004.terrain new file mode 100644 index 000000000..8e059e28a Binary files /dev/null and b/public/terrain/19/858521/354004.terrain differ diff --git a/public/terrain/19/858521/354005.terrain b/public/terrain/19/858521/354005.terrain new file mode 100644 index 000000000..3449bd6f3 Binary files /dev/null and b/public/terrain/19/858521/354005.terrain differ diff --git a/public/terrain/19/858521/354006.terrain b/public/terrain/19/858521/354006.terrain new file mode 100644 index 000000000..9a9b7f685 Binary files /dev/null and b/public/terrain/19/858521/354006.terrain differ diff --git a/public/terrain/19/858521/354007.terrain b/public/terrain/19/858521/354007.terrain new file mode 100644 index 000000000..aa4108a53 Binary files /dev/null and b/public/terrain/19/858521/354007.terrain differ diff --git a/public/terrain/19/858521/354008.terrain b/public/terrain/19/858521/354008.terrain new file mode 100644 index 000000000..0d0b1ee6f Binary files /dev/null and b/public/terrain/19/858521/354008.terrain differ diff --git a/public/terrain/19/858521/354009.terrain b/public/terrain/19/858521/354009.terrain new file mode 100644 index 000000000..3a9ad130d Binary files /dev/null and b/public/terrain/19/858521/354009.terrain differ diff --git a/public/terrain/19/858521/354010.terrain b/public/terrain/19/858521/354010.terrain new file mode 100644 index 000000000..b2bab9218 Binary files /dev/null and b/public/terrain/19/858521/354010.terrain differ diff --git a/public/terrain/19/858521/354011.terrain b/public/terrain/19/858521/354011.terrain new file mode 100644 index 000000000..a6ad23567 Binary files /dev/null and b/public/terrain/19/858521/354011.terrain differ diff --git a/public/terrain/19/858521/354012.terrain b/public/terrain/19/858521/354012.terrain new file mode 100644 index 000000000..a6e6f9c69 Binary files /dev/null and b/public/terrain/19/858521/354012.terrain differ diff --git a/public/terrain/19/858521/354013.terrain b/public/terrain/19/858521/354013.terrain new file mode 100644 index 000000000..0ce5b560b Binary files /dev/null and b/public/terrain/19/858521/354013.terrain differ diff --git a/public/terrain/19/858521/354014.terrain b/public/terrain/19/858521/354014.terrain new file mode 100644 index 000000000..2de1454e4 Binary files /dev/null and b/public/terrain/19/858521/354014.terrain differ diff --git a/public/terrain/19/858521/354015.terrain b/public/terrain/19/858521/354015.terrain new file mode 100644 index 000000000..1d9454fb6 Binary files /dev/null and b/public/terrain/19/858521/354015.terrain differ diff --git a/public/terrain/19/858521/354016.terrain b/public/terrain/19/858521/354016.terrain new file mode 100644 index 000000000..1ff53c585 Binary files /dev/null and b/public/terrain/19/858521/354016.terrain differ diff --git a/public/terrain/19/858521/354017.terrain b/public/terrain/19/858521/354017.terrain new file mode 100644 index 000000000..04da6b067 Binary files /dev/null and b/public/terrain/19/858521/354017.terrain differ diff --git a/public/terrain/19/858521/354018.terrain b/public/terrain/19/858521/354018.terrain new file mode 100644 index 000000000..8693eb2ee Binary files /dev/null and b/public/terrain/19/858521/354018.terrain differ diff --git a/public/terrain/19/858521/354019.terrain b/public/terrain/19/858521/354019.terrain new file mode 100644 index 000000000..9ee2ca9de Binary files /dev/null and b/public/terrain/19/858521/354019.terrain differ diff --git a/public/terrain/19/858521/354020.terrain b/public/terrain/19/858521/354020.terrain new file mode 100644 index 000000000..d5f1381e5 Binary files /dev/null and b/public/terrain/19/858521/354020.terrain differ diff --git a/public/terrain/19/858521/354021.terrain b/public/terrain/19/858521/354021.terrain new file mode 100644 index 000000000..0f8c022ca Binary files /dev/null and b/public/terrain/19/858521/354021.terrain differ diff --git a/public/terrain/19/858521/354022.terrain b/public/terrain/19/858521/354022.terrain new file mode 100644 index 000000000..e306d1f75 Binary files /dev/null and b/public/terrain/19/858521/354022.terrain differ diff --git a/public/terrain/19/858521/354023.terrain b/public/terrain/19/858521/354023.terrain new file mode 100644 index 000000000..02a981bb5 Binary files /dev/null and b/public/terrain/19/858521/354023.terrain differ diff --git a/public/terrain/19/858521/354024.terrain b/public/terrain/19/858521/354024.terrain new file mode 100644 index 000000000..1228ff6fe Binary files /dev/null and b/public/terrain/19/858521/354024.terrain differ diff --git a/public/terrain/19/858521/354025.terrain b/public/terrain/19/858521/354025.terrain new file mode 100644 index 000000000..0d662b486 Binary files /dev/null and b/public/terrain/19/858521/354025.terrain differ diff --git a/public/terrain/19/858521/354026.terrain b/public/terrain/19/858521/354026.terrain new file mode 100644 index 000000000..bdf038728 Binary files /dev/null and b/public/terrain/19/858521/354026.terrain differ diff --git a/public/terrain/19/858521/354027.terrain b/public/terrain/19/858521/354027.terrain new file mode 100644 index 000000000..82201da5b Binary files /dev/null and b/public/terrain/19/858521/354027.terrain differ diff --git a/public/terrain/19/858521/354028.terrain b/public/terrain/19/858521/354028.terrain new file mode 100644 index 000000000..bbe854776 Binary files /dev/null and b/public/terrain/19/858521/354028.terrain differ diff --git a/public/terrain/19/858521/354029.terrain b/public/terrain/19/858521/354029.terrain new file mode 100644 index 000000000..0b05ecbed Binary files /dev/null and b/public/terrain/19/858521/354029.terrain differ diff --git a/public/terrain/19/858521/354030.terrain b/public/terrain/19/858521/354030.terrain new file mode 100644 index 000000000..215898dbc Binary files /dev/null and b/public/terrain/19/858521/354030.terrain differ diff --git a/public/terrain/19/858521/354031.terrain b/public/terrain/19/858521/354031.terrain new file mode 100644 index 000000000..09f84d79e Binary files /dev/null and b/public/terrain/19/858521/354031.terrain differ diff --git a/public/terrain/19/858521/354032.terrain b/public/terrain/19/858521/354032.terrain new file mode 100644 index 000000000..07a47b06f Binary files /dev/null and b/public/terrain/19/858521/354032.terrain differ diff --git a/public/terrain/19/858521/354033.terrain b/public/terrain/19/858521/354033.terrain new file mode 100644 index 000000000..623aefeeb Binary files /dev/null and b/public/terrain/19/858521/354033.terrain differ diff --git a/public/terrain/19/858521/354034.terrain b/public/terrain/19/858521/354034.terrain new file mode 100644 index 000000000..feb9d66a9 Binary files /dev/null and b/public/terrain/19/858521/354034.terrain differ diff --git a/public/terrain/19/858521/354035.terrain b/public/terrain/19/858521/354035.terrain new file mode 100644 index 000000000..0eb30740c Binary files /dev/null and b/public/terrain/19/858521/354035.terrain differ diff --git a/public/terrain/19/858521/354036.terrain b/public/terrain/19/858521/354036.terrain new file mode 100644 index 000000000..ff1338da4 Binary files /dev/null and b/public/terrain/19/858521/354036.terrain differ diff --git a/public/terrain/19/858521/354037.terrain b/public/terrain/19/858521/354037.terrain new file mode 100644 index 000000000..956990b6c Binary files /dev/null and b/public/terrain/19/858521/354037.terrain differ diff --git a/public/terrain/19/858521/354038.terrain b/public/terrain/19/858521/354038.terrain new file mode 100644 index 000000000..978759c9e Binary files /dev/null and b/public/terrain/19/858521/354038.terrain differ diff --git a/public/terrain/19/858521/354039.terrain b/public/terrain/19/858521/354039.terrain new file mode 100644 index 000000000..49c251ca4 Binary files /dev/null and b/public/terrain/19/858521/354039.terrain differ diff --git a/public/terrain/19/858521/354040.terrain b/public/terrain/19/858521/354040.terrain new file mode 100644 index 000000000..dc83531ce Binary files /dev/null and b/public/terrain/19/858521/354040.terrain differ diff --git a/public/terrain/19/858521/354041.terrain b/public/terrain/19/858521/354041.terrain new file mode 100644 index 000000000..1ea69a86f Binary files /dev/null and b/public/terrain/19/858521/354041.terrain differ diff --git a/public/terrain/19/858521/354042.terrain b/public/terrain/19/858521/354042.terrain new file mode 100644 index 000000000..ce8cd4e09 Binary files /dev/null and b/public/terrain/19/858521/354042.terrain differ diff --git a/public/terrain/19/858521/354043.terrain b/public/terrain/19/858521/354043.terrain new file mode 100644 index 000000000..974f4bb6d Binary files /dev/null and b/public/terrain/19/858521/354043.terrain differ diff --git a/public/terrain/19/858521/354044.terrain b/public/terrain/19/858521/354044.terrain new file mode 100644 index 000000000..71e6d3fb2 Binary files /dev/null and b/public/terrain/19/858521/354044.terrain differ diff --git a/public/terrain/19/858521/354045.terrain b/public/terrain/19/858521/354045.terrain new file mode 100644 index 000000000..d990e6a4c Binary files /dev/null and b/public/terrain/19/858521/354045.terrain differ diff --git a/public/terrain/19/858521/354046.terrain b/public/terrain/19/858521/354046.terrain new file mode 100644 index 000000000..df25b35bd Binary files /dev/null and b/public/terrain/19/858521/354046.terrain differ diff --git a/public/terrain/19/858521/354047.terrain b/public/terrain/19/858521/354047.terrain new file mode 100644 index 000000000..49e72009e Binary files /dev/null and b/public/terrain/19/858521/354047.terrain differ diff --git a/public/terrain/19/858521/354048.terrain b/public/terrain/19/858521/354048.terrain new file mode 100644 index 000000000..ca3daef8f Binary files /dev/null and b/public/terrain/19/858521/354048.terrain differ diff --git a/public/terrain/19/858521/354049.terrain b/public/terrain/19/858521/354049.terrain new file mode 100644 index 000000000..684267a1d Binary files /dev/null and b/public/terrain/19/858521/354049.terrain differ diff --git a/public/terrain/19/858521/354050.terrain b/public/terrain/19/858521/354050.terrain new file mode 100644 index 000000000..d6a1effd0 Binary files /dev/null and b/public/terrain/19/858521/354050.terrain differ diff --git a/public/terrain/19/858521/354051.terrain b/public/terrain/19/858521/354051.terrain new file mode 100644 index 000000000..d5671d4b4 Binary files /dev/null and b/public/terrain/19/858521/354051.terrain differ diff --git a/public/terrain/19/858521/354052.terrain b/public/terrain/19/858521/354052.terrain new file mode 100644 index 000000000..657fe2831 Binary files /dev/null and b/public/terrain/19/858521/354052.terrain differ diff --git a/public/terrain/19/858521/354053.terrain b/public/terrain/19/858521/354053.terrain new file mode 100644 index 000000000..2c30e36de Binary files /dev/null and b/public/terrain/19/858521/354053.terrain differ diff --git a/public/terrain/19/858521/354054.terrain b/public/terrain/19/858521/354054.terrain new file mode 100644 index 000000000..b01531ee2 Binary files /dev/null and b/public/terrain/19/858521/354054.terrain differ diff --git a/public/terrain/19/858521/354055.terrain b/public/terrain/19/858521/354055.terrain new file mode 100644 index 000000000..074df8cc0 Binary files /dev/null and b/public/terrain/19/858521/354055.terrain differ diff --git a/public/terrain/19/858521/354056.terrain b/public/terrain/19/858521/354056.terrain new file mode 100644 index 000000000..43c753bf4 Binary files /dev/null and b/public/terrain/19/858521/354056.terrain differ diff --git a/public/terrain/19/858521/354057.terrain b/public/terrain/19/858521/354057.terrain new file mode 100644 index 000000000..ed21de7eb Binary files /dev/null and b/public/terrain/19/858521/354057.terrain differ diff --git a/public/terrain/19/858521/354058.terrain b/public/terrain/19/858521/354058.terrain new file mode 100644 index 000000000..89b1aaa4c Binary files /dev/null and b/public/terrain/19/858521/354058.terrain differ diff --git a/public/terrain/19/858521/354059.terrain b/public/terrain/19/858521/354059.terrain new file mode 100644 index 000000000..6a5c52abc Binary files /dev/null and b/public/terrain/19/858521/354059.terrain differ diff --git a/public/terrain/19/858522/353743.terrain b/public/terrain/19/858522/353743.terrain new file mode 100644 index 000000000..7776ebbb6 Binary files /dev/null and b/public/terrain/19/858522/353743.terrain differ diff --git a/public/terrain/19/858522/353744.terrain b/public/terrain/19/858522/353744.terrain new file mode 100644 index 000000000..05f41fb92 Binary files /dev/null and b/public/terrain/19/858522/353744.terrain differ diff --git a/public/terrain/19/858522/353745.terrain b/public/terrain/19/858522/353745.terrain new file mode 100644 index 000000000..673014ae3 Binary files /dev/null and b/public/terrain/19/858522/353745.terrain differ diff --git a/public/terrain/19/858522/353746.terrain b/public/terrain/19/858522/353746.terrain new file mode 100644 index 000000000..2e26815f7 Binary files /dev/null and b/public/terrain/19/858522/353746.terrain differ diff --git a/public/terrain/19/858522/353747.terrain b/public/terrain/19/858522/353747.terrain new file mode 100644 index 000000000..1b2f4b3f4 Binary files /dev/null and b/public/terrain/19/858522/353747.terrain differ diff --git a/public/terrain/19/858522/353748.terrain b/public/terrain/19/858522/353748.terrain new file mode 100644 index 000000000..1bac12bae Binary files /dev/null and b/public/terrain/19/858522/353748.terrain differ diff --git a/public/terrain/19/858522/353749.terrain b/public/terrain/19/858522/353749.terrain new file mode 100644 index 000000000..28ea7fff6 Binary files /dev/null and b/public/terrain/19/858522/353749.terrain differ diff --git a/public/terrain/19/858522/353750.terrain b/public/terrain/19/858522/353750.terrain new file mode 100644 index 000000000..e7bb04c9b Binary files /dev/null and b/public/terrain/19/858522/353750.terrain differ diff --git a/public/terrain/19/858522/353751.terrain b/public/terrain/19/858522/353751.terrain new file mode 100644 index 000000000..04248aaf7 Binary files /dev/null and b/public/terrain/19/858522/353751.terrain differ diff --git a/public/terrain/19/858522/353752.terrain b/public/terrain/19/858522/353752.terrain new file mode 100644 index 000000000..85b952dda Binary files /dev/null and b/public/terrain/19/858522/353752.terrain differ diff --git a/public/terrain/19/858522/353753.terrain b/public/terrain/19/858522/353753.terrain new file mode 100644 index 000000000..89b4fa65c Binary files /dev/null and b/public/terrain/19/858522/353753.terrain differ diff --git a/public/terrain/19/858522/353754.terrain b/public/terrain/19/858522/353754.terrain new file mode 100644 index 000000000..51f965089 Binary files /dev/null and b/public/terrain/19/858522/353754.terrain differ diff --git a/public/terrain/19/858522/353755.terrain b/public/terrain/19/858522/353755.terrain new file mode 100644 index 000000000..3a1772bec Binary files /dev/null and b/public/terrain/19/858522/353755.terrain differ diff --git a/public/terrain/19/858522/353756.terrain b/public/terrain/19/858522/353756.terrain new file mode 100644 index 000000000..7d12ec923 Binary files /dev/null and b/public/terrain/19/858522/353756.terrain differ diff --git a/public/terrain/19/858522/353757.terrain b/public/terrain/19/858522/353757.terrain new file mode 100644 index 000000000..c4031c247 Binary files /dev/null and b/public/terrain/19/858522/353757.terrain differ diff --git a/public/terrain/19/858522/353758.terrain b/public/terrain/19/858522/353758.terrain new file mode 100644 index 000000000..b00d656a2 Binary files /dev/null and b/public/terrain/19/858522/353758.terrain differ diff --git a/public/terrain/19/858522/353759.terrain b/public/terrain/19/858522/353759.terrain new file mode 100644 index 000000000..dd0a5ff4f Binary files /dev/null and b/public/terrain/19/858522/353759.terrain differ diff --git a/public/terrain/19/858522/353760.terrain b/public/terrain/19/858522/353760.terrain new file mode 100644 index 000000000..75e993187 Binary files /dev/null and b/public/terrain/19/858522/353760.terrain differ diff --git a/public/terrain/19/858522/353761.terrain b/public/terrain/19/858522/353761.terrain new file mode 100644 index 000000000..7c01f4e09 Binary files /dev/null and b/public/terrain/19/858522/353761.terrain differ diff --git a/public/terrain/19/858522/353762.terrain b/public/terrain/19/858522/353762.terrain new file mode 100644 index 000000000..89d70e159 Binary files /dev/null and b/public/terrain/19/858522/353762.terrain differ diff --git a/public/terrain/19/858522/353763.terrain b/public/terrain/19/858522/353763.terrain new file mode 100644 index 000000000..958e1df72 Binary files /dev/null and b/public/terrain/19/858522/353763.terrain differ diff --git a/public/terrain/19/858522/353764.terrain b/public/terrain/19/858522/353764.terrain new file mode 100644 index 000000000..bf9996f01 Binary files /dev/null and b/public/terrain/19/858522/353764.terrain differ diff --git a/public/terrain/19/858522/353765.terrain b/public/terrain/19/858522/353765.terrain new file mode 100644 index 000000000..b5da5dcbb Binary files /dev/null and b/public/terrain/19/858522/353765.terrain differ diff --git a/public/terrain/19/858522/353766.terrain b/public/terrain/19/858522/353766.terrain new file mode 100644 index 000000000..47d453675 Binary files /dev/null and b/public/terrain/19/858522/353766.terrain differ diff --git a/public/terrain/19/858522/353767.terrain b/public/terrain/19/858522/353767.terrain new file mode 100644 index 000000000..a1267ed7f Binary files /dev/null and b/public/terrain/19/858522/353767.terrain differ diff --git a/public/terrain/19/858522/353768.terrain b/public/terrain/19/858522/353768.terrain new file mode 100644 index 000000000..536bf3d1a Binary files /dev/null and b/public/terrain/19/858522/353768.terrain differ diff --git a/public/terrain/19/858522/353769.terrain b/public/terrain/19/858522/353769.terrain new file mode 100644 index 000000000..9325d41cc Binary files /dev/null and b/public/terrain/19/858522/353769.terrain differ diff --git a/public/terrain/19/858522/353770.terrain b/public/terrain/19/858522/353770.terrain new file mode 100644 index 000000000..383d0bda4 Binary files /dev/null and b/public/terrain/19/858522/353770.terrain differ diff --git a/public/terrain/19/858522/353771.terrain b/public/terrain/19/858522/353771.terrain new file mode 100644 index 000000000..6bc355b1e Binary files /dev/null and b/public/terrain/19/858522/353771.terrain differ diff --git a/public/terrain/19/858522/353772.terrain b/public/terrain/19/858522/353772.terrain new file mode 100644 index 000000000..b5105d7ab Binary files /dev/null and b/public/terrain/19/858522/353772.terrain differ diff --git a/public/terrain/19/858522/353773.terrain b/public/terrain/19/858522/353773.terrain new file mode 100644 index 000000000..cf4bb329c Binary files /dev/null and b/public/terrain/19/858522/353773.terrain differ diff --git a/public/terrain/19/858522/353774.terrain b/public/terrain/19/858522/353774.terrain new file mode 100644 index 000000000..1908f8bf8 Binary files /dev/null and b/public/terrain/19/858522/353774.terrain differ diff --git a/public/terrain/19/858522/353775.terrain b/public/terrain/19/858522/353775.terrain new file mode 100644 index 000000000..420cc4a85 Binary files /dev/null and b/public/terrain/19/858522/353775.terrain differ diff --git a/public/terrain/19/858522/353776.terrain b/public/terrain/19/858522/353776.terrain new file mode 100644 index 000000000..10800c954 Binary files /dev/null and b/public/terrain/19/858522/353776.terrain differ diff --git a/public/terrain/19/858522/353777.terrain b/public/terrain/19/858522/353777.terrain new file mode 100644 index 000000000..9ec4c9770 Binary files /dev/null and b/public/terrain/19/858522/353777.terrain differ diff --git a/public/terrain/19/858522/353778.terrain b/public/terrain/19/858522/353778.terrain new file mode 100644 index 000000000..f4aebd734 Binary files /dev/null and b/public/terrain/19/858522/353778.terrain differ diff --git a/public/terrain/19/858522/353779.terrain b/public/terrain/19/858522/353779.terrain new file mode 100644 index 000000000..2bd185a5d Binary files /dev/null and b/public/terrain/19/858522/353779.terrain differ diff --git a/public/terrain/19/858522/353780.terrain b/public/terrain/19/858522/353780.terrain new file mode 100644 index 000000000..ca4703ad7 Binary files /dev/null and b/public/terrain/19/858522/353780.terrain differ diff --git a/public/terrain/19/858522/353781.terrain b/public/terrain/19/858522/353781.terrain new file mode 100644 index 000000000..60c55e9c7 Binary files /dev/null and b/public/terrain/19/858522/353781.terrain differ diff --git a/public/terrain/19/858522/353782.terrain b/public/terrain/19/858522/353782.terrain new file mode 100644 index 000000000..902bc8c3f Binary files /dev/null and b/public/terrain/19/858522/353782.terrain differ diff --git a/public/terrain/19/858522/353783.terrain b/public/terrain/19/858522/353783.terrain new file mode 100644 index 000000000..3041a105d Binary files /dev/null and b/public/terrain/19/858522/353783.terrain differ diff --git a/public/terrain/19/858522/353784.terrain b/public/terrain/19/858522/353784.terrain new file mode 100644 index 000000000..586fc01dd Binary files /dev/null and b/public/terrain/19/858522/353784.terrain differ diff --git a/public/terrain/19/858522/353785.terrain b/public/terrain/19/858522/353785.terrain new file mode 100644 index 000000000..f6bc5f977 Binary files /dev/null and b/public/terrain/19/858522/353785.terrain differ diff --git a/public/terrain/19/858522/353786.terrain b/public/terrain/19/858522/353786.terrain new file mode 100644 index 000000000..d7ec9a269 Binary files /dev/null and b/public/terrain/19/858522/353786.terrain differ diff --git a/public/terrain/19/858522/353787.terrain b/public/terrain/19/858522/353787.terrain new file mode 100644 index 000000000..7cbb96fa9 Binary files /dev/null and b/public/terrain/19/858522/353787.terrain differ diff --git a/public/terrain/19/858522/353788.terrain b/public/terrain/19/858522/353788.terrain new file mode 100644 index 000000000..8724a03c3 Binary files /dev/null and b/public/terrain/19/858522/353788.terrain differ diff --git a/public/terrain/19/858522/353789.terrain b/public/terrain/19/858522/353789.terrain new file mode 100644 index 000000000..b6cc66d7a Binary files /dev/null and b/public/terrain/19/858522/353789.terrain differ diff --git a/public/terrain/19/858522/353790.terrain b/public/terrain/19/858522/353790.terrain new file mode 100644 index 000000000..d63d15ec7 Binary files /dev/null and b/public/terrain/19/858522/353790.terrain differ diff --git a/public/terrain/19/858522/353791.terrain b/public/terrain/19/858522/353791.terrain new file mode 100644 index 000000000..0454a38b2 Binary files /dev/null and b/public/terrain/19/858522/353791.terrain differ diff --git a/public/terrain/19/858522/353792.terrain b/public/terrain/19/858522/353792.terrain new file mode 100644 index 000000000..56e4ded1b Binary files /dev/null and b/public/terrain/19/858522/353792.terrain differ diff --git a/public/terrain/19/858522/353793.terrain b/public/terrain/19/858522/353793.terrain new file mode 100644 index 000000000..91e016a62 Binary files /dev/null and b/public/terrain/19/858522/353793.terrain differ diff --git a/public/terrain/19/858522/353794.terrain b/public/terrain/19/858522/353794.terrain new file mode 100644 index 000000000..a5b36d214 Binary files /dev/null and b/public/terrain/19/858522/353794.terrain differ diff --git a/public/terrain/19/858522/353795.terrain b/public/terrain/19/858522/353795.terrain new file mode 100644 index 000000000..37f299157 Binary files /dev/null and b/public/terrain/19/858522/353795.terrain differ diff --git a/public/terrain/19/858522/353796.terrain b/public/terrain/19/858522/353796.terrain new file mode 100644 index 000000000..07c4f6c0a Binary files /dev/null and b/public/terrain/19/858522/353796.terrain differ diff --git a/public/terrain/19/858522/353797.terrain b/public/terrain/19/858522/353797.terrain new file mode 100644 index 000000000..e8826af4b Binary files /dev/null and b/public/terrain/19/858522/353797.terrain differ diff --git a/public/terrain/19/858522/353798.terrain b/public/terrain/19/858522/353798.terrain new file mode 100644 index 000000000..9ca820d9e Binary files /dev/null and b/public/terrain/19/858522/353798.terrain differ diff --git a/public/terrain/19/858522/353799.terrain b/public/terrain/19/858522/353799.terrain new file mode 100644 index 000000000..b71a5049c Binary files /dev/null and b/public/terrain/19/858522/353799.terrain differ diff --git a/public/terrain/19/858522/353800.terrain b/public/terrain/19/858522/353800.terrain new file mode 100644 index 000000000..3edb8a371 Binary files /dev/null and b/public/terrain/19/858522/353800.terrain differ diff --git a/public/terrain/19/858522/353801.terrain b/public/terrain/19/858522/353801.terrain new file mode 100644 index 000000000..a0ea4c303 Binary files /dev/null and b/public/terrain/19/858522/353801.terrain differ diff --git a/public/terrain/19/858522/353802.terrain b/public/terrain/19/858522/353802.terrain new file mode 100644 index 000000000..8d57e7672 Binary files /dev/null and b/public/terrain/19/858522/353802.terrain differ diff --git a/public/terrain/19/858522/353803.terrain b/public/terrain/19/858522/353803.terrain new file mode 100644 index 000000000..863dd84b9 Binary files /dev/null and b/public/terrain/19/858522/353803.terrain differ diff --git a/public/terrain/19/858522/353804.terrain b/public/terrain/19/858522/353804.terrain new file mode 100644 index 000000000..18f974d9d Binary files /dev/null and b/public/terrain/19/858522/353804.terrain differ diff --git a/public/terrain/19/858522/353805.terrain b/public/terrain/19/858522/353805.terrain new file mode 100644 index 000000000..9e2dd0a65 Binary files /dev/null and b/public/terrain/19/858522/353805.terrain differ diff --git a/public/terrain/19/858522/353806.terrain b/public/terrain/19/858522/353806.terrain new file mode 100644 index 000000000..7c99b9bc9 Binary files /dev/null and b/public/terrain/19/858522/353806.terrain differ diff --git a/public/terrain/19/858522/353807.terrain b/public/terrain/19/858522/353807.terrain new file mode 100644 index 000000000..601229516 Binary files /dev/null and b/public/terrain/19/858522/353807.terrain differ diff --git a/public/terrain/19/858522/353808.terrain b/public/terrain/19/858522/353808.terrain new file mode 100644 index 000000000..0e33b2e76 Binary files /dev/null and b/public/terrain/19/858522/353808.terrain differ diff --git a/public/terrain/19/858522/353809.terrain b/public/terrain/19/858522/353809.terrain new file mode 100644 index 000000000..a2b32082b Binary files /dev/null and b/public/terrain/19/858522/353809.terrain differ diff --git a/public/terrain/19/858522/353810.terrain b/public/terrain/19/858522/353810.terrain new file mode 100644 index 000000000..287a937cc Binary files /dev/null and b/public/terrain/19/858522/353810.terrain differ diff --git a/public/terrain/19/858522/353811.terrain b/public/terrain/19/858522/353811.terrain new file mode 100644 index 000000000..955250cc2 Binary files /dev/null and b/public/terrain/19/858522/353811.terrain differ diff --git a/public/terrain/19/858522/353812.terrain b/public/terrain/19/858522/353812.terrain new file mode 100644 index 000000000..c2c3092a7 Binary files /dev/null and b/public/terrain/19/858522/353812.terrain differ diff --git a/public/terrain/19/858522/353813.terrain b/public/terrain/19/858522/353813.terrain new file mode 100644 index 000000000..c58466844 Binary files /dev/null and b/public/terrain/19/858522/353813.terrain differ diff --git a/public/terrain/19/858522/353814.terrain b/public/terrain/19/858522/353814.terrain new file mode 100644 index 000000000..9808b042a Binary files /dev/null and b/public/terrain/19/858522/353814.terrain differ diff --git a/public/terrain/19/858522/353815.terrain b/public/terrain/19/858522/353815.terrain new file mode 100644 index 000000000..231ef4636 Binary files /dev/null and b/public/terrain/19/858522/353815.terrain differ diff --git a/public/terrain/19/858522/353816.terrain b/public/terrain/19/858522/353816.terrain new file mode 100644 index 000000000..4d3475973 Binary files /dev/null and b/public/terrain/19/858522/353816.terrain differ diff --git a/public/terrain/19/858522/353817.terrain b/public/terrain/19/858522/353817.terrain new file mode 100644 index 000000000..4d114f199 Binary files /dev/null and b/public/terrain/19/858522/353817.terrain differ diff --git a/public/terrain/19/858522/353818.terrain b/public/terrain/19/858522/353818.terrain new file mode 100644 index 000000000..af00a58ef Binary files /dev/null and b/public/terrain/19/858522/353818.terrain differ diff --git a/public/terrain/19/858522/353819.terrain b/public/terrain/19/858522/353819.terrain new file mode 100644 index 000000000..69be35867 Binary files /dev/null and b/public/terrain/19/858522/353819.terrain differ diff --git a/public/terrain/19/858522/353820.terrain b/public/terrain/19/858522/353820.terrain new file mode 100644 index 000000000..76507e609 Binary files /dev/null and b/public/terrain/19/858522/353820.terrain differ diff --git a/public/terrain/19/858522/353821.terrain b/public/terrain/19/858522/353821.terrain new file mode 100644 index 000000000..a07ff7bff Binary files /dev/null and b/public/terrain/19/858522/353821.terrain differ diff --git a/public/terrain/19/858522/353822.terrain b/public/terrain/19/858522/353822.terrain new file mode 100644 index 000000000..5defa3532 Binary files /dev/null and b/public/terrain/19/858522/353822.terrain differ diff --git a/public/terrain/19/858522/353823.terrain b/public/terrain/19/858522/353823.terrain new file mode 100644 index 000000000..3b38b5e43 Binary files /dev/null and b/public/terrain/19/858522/353823.terrain differ diff --git a/public/terrain/19/858522/353824.terrain b/public/terrain/19/858522/353824.terrain new file mode 100644 index 000000000..0d4b2e1bd Binary files /dev/null and b/public/terrain/19/858522/353824.terrain differ diff --git a/public/terrain/19/858522/353825.terrain b/public/terrain/19/858522/353825.terrain new file mode 100644 index 000000000..7a4fe1dda Binary files /dev/null and b/public/terrain/19/858522/353825.terrain differ diff --git a/public/terrain/19/858522/353826.terrain b/public/terrain/19/858522/353826.terrain new file mode 100644 index 000000000..68111e654 Binary files /dev/null and b/public/terrain/19/858522/353826.terrain differ diff --git a/public/terrain/19/858522/353827.terrain b/public/terrain/19/858522/353827.terrain new file mode 100644 index 000000000..e5eb8d2d8 Binary files /dev/null and b/public/terrain/19/858522/353827.terrain differ diff --git a/public/terrain/19/858522/353828.terrain b/public/terrain/19/858522/353828.terrain new file mode 100644 index 000000000..7bb5fdc0a Binary files /dev/null and b/public/terrain/19/858522/353828.terrain differ diff --git a/public/terrain/19/858522/353829.terrain b/public/terrain/19/858522/353829.terrain new file mode 100644 index 000000000..79f290400 Binary files /dev/null and b/public/terrain/19/858522/353829.terrain differ diff --git a/public/terrain/19/858522/353830.terrain b/public/terrain/19/858522/353830.terrain new file mode 100644 index 000000000..c9ddacd8d Binary files /dev/null and b/public/terrain/19/858522/353830.terrain differ diff --git a/public/terrain/19/858522/353831.terrain b/public/terrain/19/858522/353831.terrain new file mode 100644 index 000000000..4178bb52a Binary files /dev/null and b/public/terrain/19/858522/353831.terrain differ diff --git a/public/terrain/19/858522/353832.terrain b/public/terrain/19/858522/353832.terrain new file mode 100644 index 000000000..09abf4d2a Binary files /dev/null and b/public/terrain/19/858522/353832.terrain differ diff --git a/public/terrain/19/858522/353833.terrain b/public/terrain/19/858522/353833.terrain new file mode 100644 index 000000000..6ecf113b7 Binary files /dev/null and b/public/terrain/19/858522/353833.terrain differ diff --git a/public/terrain/19/858522/353834.terrain b/public/terrain/19/858522/353834.terrain new file mode 100644 index 000000000..10a821f3b Binary files /dev/null and b/public/terrain/19/858522/353834.terrain differ diff --git a/public/terrain/19/858522/353835.terrain b/public/terrain/19/858522/353835.terrain new file mode 100644 index 000000000..675e37e15 Binary files /dev/null and b/public/terrain/19/858522/353835.terrain differ diff --git a/public/terrain/19/858522/353836.terrain b/public/terrain/19/858522/353836.terrain new file mode 100644 index 000000000..1f30929de Binary files /dev/null and b/public/terrain/19/858522/353836.terrain differ diff --git a/public/terrain/19/858522/353837.terrain b/public/terrain/19/858522/353837.terrain new file mode 100644 index 000000000..51a519ebd Binary files /dev/null and b/public/terrain/19/858522/353837.terrain differ diff --git a/public/terrain/19/858522/353838.terrain b/public/terrain/19/858522/353838.terrain new file mode 100644 index 000000000..5d1fe9d87 Binary files /dev/null and b/public/terrain/19/858522/353838.terrain differ diff --git a/public/terrain/19/858522/353839.terrain b/public/terrain/19/858522/353839.terrain new file mode 100644 index 000000000..d0049738d Binary files /dev/null and b/public/terrain/19/858522/353839.terrain differ diff --git a/public/terrain/19/858522/353840.terrain b/public/terrain/19/858522/353840.terrain new file mode 100644 index 000000000..b5341fb59 Binary files /dev/null and b/public/terrain/19/858522/353840.terrain differ diff --git a/public/terrain/19/858522/353841.terrain b/public/terrain/19/858522/353841.terrain new file mode 100644 index 000000000..1ed9678c2 Binary files /dev/null and b/public/terrain/19/858522/353841.terrain differ diff --git a/public/terrain/19/858522/353842.terrain b/public/terrain/19/858522/353842.terrain new file mode 100644 index 000000000..2c09e973d Binary files /dev/null and b/public/terrain/19/858522/353842.terrain differ diff --git a/public/terrain/19/858522/353843.terrain b/public/terrain/19/858522/353843.terrain new file mode 100644 index 000000000..1559bc395 Binary files /dev/null and b/public/terrain/19/858522/353843.terrain differ diff --git a/public/terrain/19/858522/353844.terrain b/public/terrain/19/858522/353844.terrain new file mode 100644 index 000000000..df51f226f Binary files /dev/null and b/public/terrain/19/858522/353844.terrain differ diff --git a/public/terrain/19/858522/353845.terrain b/public/terrain/19/858522/353845.terrain new file mode 100644 index 000000000..20dd39138 Binary files /dev/null and b/public/terrain/19/858522/353845.terrain differ diff --git a/public/terrain/19/858522/353846.terrain b/public/terrain/19/858522/353846.terrain new file mode 100644 index 000000000..c0e3bb414 Binary files /dev/null and b/public/terrain/19/858522/353846.terrain differ diff --git a/public/terrain/19/858522/353847.terrain b/public/terrain/19/858522/353847.terrain new file mode 100644 index 000000000..154eb5865 Binary files /dev/null and b/public/terrain/19/858522/353847.terrain differ diff --git a/public/terrain/19/858522/353848.terrain b/public/terrain/19/858522/353848.terrain new file mode 100644 index 000000000..56c29ed48 Binary files /dev/null and b/public/terrain/19/858522/353848.terrain differ diff --git a/public/terrain/19/858522/353849.terrain b/public/terrain/19/858522/353849.terrain new file mode 100644 index 000000000..92eef51ed Binary files /dev/null and b/public/terrain/19/858522/353849.terrain differ diff --git a/public/terrain/19/858522/353850.terrain b/public/terrain/19/858522/353850.terrain new file mode 100644 index 000000000..d986ffffc Binary files /dev/null and b/public/terrain/19/858522/353850.terrain differ diff --git a/public/terrain/19/858522/353851.terrain b/public/terrain/19/858522/353851.terrain new file mode 100644 index 000000000..f78e1526d Binary files /dev/null and b/public/terrain/19/858522/353851.terrain differ diff --git a/public/terrain/19/858522/353852.terrain b/public/terrain/19/858522/353852.terrain new file mode 100644 index 000000000..b8ac33fd2 Binary files /dev/null and b/public/terrain/19/858522/353852.terrain differ diff --git a/public/terrain/19/858522/353853.terrain b/public/terrain/19/858522/353853.terrain new file mode 100644 index 000000000..baaf96e5f Binary files /dev/null and b/public/terrain/19/858522/353853.terrain differ diff --git a/public/terrain/19/858522/353854.terrain b/public/terrain/19/858522/353854.terrain new file mode 100644 index 000000000..47550e201 Binary files /dev/null and b/public/terrain/19/858522/353854.terrain differ diff --git a/public/terrain/19/858522/353855.terrain b/public/terrain/19/858522/353855.terrain new file mode 100644 index 000000000..49bd9eb22 Binary files /dev/null and b/public/terrain/19/858522/353855.terrain differ diff --git a/public/terrain/19/858522/353856.terrain b/public/terrain/19/858522/353856.terrain new file mode 100644 index 000000000..562595281 Binary files /dev/null and b/public/terrain/19/858522/353856.terrain differ diff --git a/public/terrain/19/858522/353857.terrain b/public/terrain/19/858522/353857.terrain new file mode 100644 index 000000000..5e93957ac Binary files /dev/null and b/public/terrain/19/858522/353857.terrain differ diff --git a/public/terrain/19/858522/353858.terrain b/public/terrain/19/858522/353858.terrain new file mode 100644 index 000000000..115665592 Binary files /dev/null and b/public/terrain/19/858522/353858.terrain differ diff --git a/public/terrain/19/858522/353859.terrain b/public/terrain/19/858522/353859.terrain new file mode 100644 index 000000000..860dca752 Binary files /dev/null and b/public/terrain/19/858522/353859.terrain differ diff --git a/public/terrain/19/858522/353860.terrain b/public/terrain/19/858522/353860.terrain new file mode 100644 index 000000000..a47b02f5d Binary files /dev/null and b/public/terrain/19/858522/353860.terrain differ diff --git a/public/terrain/19/858522/353861.terrain b/public/terrain/19/858522/353861.terrain new file mode 100644 index 000000000..3cb6ac84a Binary files /dev/null and b/public/terrain/19/858522/353861.terrain differ diff --git a/public/terrain/19/858522/353862.terrain b/public/terrain/19/858522/353862.terrain new file mode 100644 index 000000000..eae7e4174 Binary files /dev/null and b/public/terrain/19/858522/353862.terrain differ diff --git a/public/terrain/19/858522/353863.terrain b/public/terrain/19/858522/353863.terrain new file mode 100644 index 000000000..d356a98e4 Binary files /dev/null and b/public/terrain/19/858522/353863.terrain differ diff --git a/public/terrain/19/858522/353864.terrain b/public/terrain/19/858522/353864.terrain new file mode 100644 index 000000000..2dd79e91e Binary files /dev/null and b/public/terrain/19/858522/353864.terrain differ diff --git a/public/terrain/19/858522/353865.terrain b/public/terrain/19/858522/353865.terrain new file mode 100644 index 000000000..e8cbded14 Binary files /dev/null and b/public/terrain/19/858522/353865.terrain differ diff --git a/public/terrain/19/858522/353866.terrain b/public/terrain/19/858522/353866.terrain new file mode 100644 index 000000000..c5e804b5d Binary files /dev/null and b/public/terrain/19/858522/353866.terrain differ diff --git a/public/terrain/19/858522/353867.terrain b/public/terrain/19/858522/353867.terrain new file mode 100644 index 000000000..c2abbf3d4 Binary files /dev/null and b/public/terrain/19/858522/353867.terrain differ diff --git a/public/terrain/19/858522/353868.terrain b/public/terrain/19/858522/353868.terrain new file mode 100644 index 000000000..785152bd6 Binary files /dev/null and b/public/terrain/19/858522/353868.terrain differ diff --git a/public/terrain/19/858522/353869.terrain b/public/terrain/19/858522/353869.terrain new file mode 100644 index 000000000..f542f59ef Binary files /dev/null and b/public/terrain/19/858522/353869.terrain differ diff --git a/public/terrain/19/858522/353870.terrain b/public/terrain/19/858522/353870.terrain new file mode 100644 index 000000000..4a89dcd93 Binary files /dev/null and b/public/terrain/19/858522/353870.terrain differ diff --git a/public/terrain/19/858522/353871.terrain b/public/terrain/19/858522/353871.terrain new file mode 100644 index 000000000..f2259f68c Binary files /dev/null and b/public/terrain/19/858522/353871.terrain differ diff --git a/public/terrain/19/858522/353872.terrain b/public/terrain/19/858522/353872.terrain new file mode 100644 index 000000000..657fbe0e3 Binary files /dev/null and b/public/terrain/19/858522/353872.terrain differ diff --git a/public/terrain/19/858522/353873.terrain b/public/terrain/19/858522/353873.terrain new file mode 100644 index 000000000..0d7714db5 Binary files /dev/null and b/public/terrain/19/858522/353873.terrain differ diff --git a/public/terrain/19/858522/353874.terrain b/public/terrain/19/858522/353874.terrain new file mode 100644 index 000000000..2f65d8868 Binary files /dev/null and b/public/terrain/19/858522/353874.terrain differ diff --git a/public/terrain/19/858522/353875.terrain b/public/terrain/19/858522/353875.terrain new file mode 100644 index 000000000..a282bacbd Binary files /dev/null and b/public/terrain/19/858522/353875.terrain differ diff --git a/public/terrain/19/858522/353876.terrain b/public/terrain/19/858522/353876.terrain new file mode 100644 index 000000000..d0c708ba9 Binary files /dev/null and b/public/terrain/19/858522/353876.terrain differ diff --git a/public/terrain/19/858522/353877.terrain b/public/terrain/19/858522/353877.terrain new file mode 100644 index 000000000..15f5c671e Binary files /dev/null and b/public/terrain/19/858522/353877.terrain differ diff --git a/public/terrain/19/858522/353878.terrain b/public/terrain/19/858522/353878.terrain new file mode 100644 index 000000000..3fa2df008 Binary files /dev/null and b/public/terrain/19/858522/353878.terrain differ diff --git a/public/terrain/19/858522/353879.terrain b/public/terrain/19/858522/353879.terrain new file mode 100644 index 000000000..d9636c106 Binary files /dev/null and b/public/terrain/19/858522/353879.terrain differ diff --git a/public/terrain/19/858522/353880.terrain b/public/terrain/19/858522/353880.terrain new file mode 100644 index 000000000..6cb150b60 Binary files /dev/null and b/public/terrain/19/858522/353880.terrain differ diff --git a/public/terrain/19/858522/353881.terrain b/public/terrain/19/858522/353881.terrain new file mode 100644 index 000000000..37bbfb45c Binary files /dev/null and b/public/terrain/19/858522/353881.terrain differ diff --git a/public/terrain/19/858522/353882.terrain b/public/terrain/19/858522/353882.terrain new file mode 100644 index 000000000..99359d87f Binary files /dev/null and b/public/terrain/19/858522/353882.terrain differ diff --git a/public/terrain/19/858522/353883.terrain b/public/terrain/19/858522/353883.terrain new file mode 100644 index 000000000..ceb2769ca Binary files /dev/null and b/public/terrain/19/858522/353883.terrain differ diff --git a/public/terrain/19/858522/353884.terrain b/public/terrain/19/858522/353884.terrain new file mode 100644 index 000000000..8442fffcd Binary files /dev/null and b/public/terrain/19/858522/353884.terrain differ diff --git a/public/terrain/19/858522/353885.terrain b/public/terrain/19/858522/353885.terrain new file mode 100644 index 000000000..1931f2cfe Binary files /dev/null and b/public/terrain/19/858522/353885.terrain differ diff --git a/public/terrain/19/858522/353886.terrain b/public/terrain/19/858522/353886.terrain new file mode 100644 index 000000000..7fadd4c77 Binary files /dev/null and b/public/terrain/19/858522/353886.terrain differ diff --git a/public/terrain/19/858522/353887.terrain b/public/terrain/19/858522/353887.terrain new file mode 100644 index 000000000..da53ef5e3 Binary files /dev/null and b/public/terrain/19/858522/353887.terrain differ diff --git a/public/terrain/19/858522/353888.terrain b/public/terrain/19/858522/353888.terrain new file mode 100644 index 000000000..cad9474d3 Binary files /dev/null and b/public/terrain/19/858522/353888.terrain differ diff --git a/public/terrain/19/858522/353889.terrain b/public/terrain/19/858522/353889.terrain new file mode 100644 index 000000000..0f49da731 Binary files /dev/null and b/public/terrain/19/858522/353889.terrain differ diff --git a/public/terrain/19/858522/353890.terrain b/public/terrain/19/858522/353890.terrain new file mode 100644 index 000000000..1c139e4cf Binary files /dev/null and b/public/terrain/19/858522/353890.terrain differ diff --git a/public/terrain/19/858522/353891.terrain b/public/terrain/19/858522/353891.terrain new file mode 100644 index 000000000..33cad7364 Binary files /dev/null and b/public/terrain/19/858522/353891.terrain differ diff --git a/public/terrain/19/858522/353892.terrain b/public/terrain/19/858522/353892.terrain new file mode 100644 index 000000000..d190257e7 Binary files /dev/null and b/public/terrain/19/858522/353892.terrain differ diff --git a/public/terrain/19/858522/353893.terrain b/public/terrain/19/858522/353893.terrain new file mode 100644 index 000000000..c964f1a80 Binary files /dev/null and b/public/terrain/19/858522/353893.terrain differ diff --git a/public/terrain/19/858522/353894.terrain b/public/terrain/19/858522/353894.terrain new file mode 100644 index 000000000..21bc328db Binary files /dev/null and b/public/terrain/19/858522/353894.terrain differ diff --git a/public/terrain/19/858522/353895.terrain b/public/terrain/19/858522/353895.terrain new file mode 100644 index 000000000..54064ebcf Binary files /dev/null and b/public/terrain/19/858522/353895.terrain differ diff --git a/public/terrain/19/858522/353896.terrain b/public/terrain/19/858522/353896.terrain new file mode 100644 index 000000000..8cafe15b4 Binary files /dev/null and b/public/terrain/19/858522/353896.terrain differ diff --git a/public/terrain/19/858522/353897.terrain b/public/terrain/19/858522/353897.terrain new file mode 100644 index 000000000..f9fe35ba4 Binary files /dev/null and b/public/terrain/19/858522/353897.terrain differ diff --git a/public/terrain/19/858522/353898.terrain b/public/terrain/19/858522/353898.terrain new file mode 100644 index 000000000..1ba0a0b71 Binary files /dev/null and b/public/terrain/19/858522/353898.terrain differ diff --git a/public/terrain/19/858522/353899.terrain b/public/terrain/19/858522/353899.terrain new file mode 100644 index 000000000..1c0f91d32 Binary files /dev/null and b/public/terrain/19/858522/353899.terrain differ diff --git a/public/terrain/19/858522/353900.terrain b/public/terrain/19/858522/353900.terrain new file mode 100644 index 000000000..e7758e400 Binary files /dev/null and b/public/terrain/19/858522/353900.terrain differ diff --git a/public/terrain/19/858522/353901.terrain b/public/terrain/19/858522/353901.terrain new file mode 100644 index 000000000..6e658fb2c Binary files /dev/null and b/public/terrain/19/858522/353901.terrain differ diff --git a/public/terrain/19/858522/353902.terrain b/public/terrain/19/858522/353902.terrain new file mode 100644 index 000000000..1e348d72e Binary files /dev/null and b/public/terrain/19/858522/353902.terrain differ diff --git a/public/terrain/19/858522/353903.terrain b/public/terrain/19/858522/353903.terrain new file mode 100644 index 000000000..5f79bfffb Binary files /dev/null and b/public/terrain/19/858522/353903.terrain differ diff --git a/public/terrain/19/858522/353904.terrain b/public/terrain/19/858522/353904.terrain new file mode 100644 index 000000000..da2f61180 Binary files /dev/null and b/public/terrain/19/858522/353904.terrain differ diff --git a/public/terrain/19/858522/353905.terrain b/public/terrain/19/858522/353905.terrain new file mode 100644 index 000000000..431fa76d1 Binary files /dev/null and b/public/terrain/19/858522/353905.terrain differ diff --git a/public/terrain/19/858522/353906.terrain b/public/terrain/19/858522/353906.terrain new file mode 100644 index 000000000..4a8aab323 Binary files /dev/null and b/public/terrain/19/858522/353906.terrain differ diff --git a/public/terrain/19/858522/353907.terrain b/public/terrain/19/858522/353907.terrain new file mode 100644 index 000000000..6f38697a7 Binary files /dev/null and b/public/terrain/19/858522/353907.terrain differ diff --git a/public/terrain/19/858522/353908.terrain b/public/terrain/19/858522/353908.terrain new file mode 100644 index 000000000..3f1bde60e Binary files /dev/null and b/public/terrain/19/858522/353908.terrain differ diff --git a/public/terrain/19/858522/353909.terrain b/public/terrain/19/858522/353909.terrain new file mode 100644 index 000000000..5e2c6385c Binary files /dev/null and b/public/terrain/19/858522/353909.terrain differ diff --git a/public/terrain/19/858522/353910.terrain b/public/terrain/19/858522/353910.terrain new file mode 100644 index 000000000..527941ad9 Binary files /dev/null and b/public/terrain/19/858522/353910.terrain differ diff --git a/public/terrain/19/858522/353911.terrain b/public/terrain/19/858522/353911.terrain new file mode 100644 index 000000000..6c6857b7b Binary files /dev/null and b/public/terrain/19/858522/353911.terrain differ diff --git a/public/terrain/19/858522/353912.terrain b/public/terrain/19/858522/353912.terrain new file mode 100644 index 000000000..3177bb2d1 Binary files /dev/null and b/public/terrain/19/858522/353912.terrain differ diff --git a/public/terrain/19/858522/353913.terrain b/public/terrain/19/858522/353913.terrain new file mode 100644 index 000000000..2831bf15c Binary files /dev/null and b/public/terrain/19/858522/353913.terrain differ diff --git a/public/terrain/19/858522/353914.terrain b/public/terrain/19/858522/353914.terrain new file mode 100644 index 000000000..239241a95 Binary files /dev/null and b/public/terrain/19/858522/353914.terrain differ diff --git a/public/terrain/19/858522/353915.terrain b/public/terrain/19/858522/353915.terrain new file mode 100644 index 000000000..649e5f446 Binary files /dev/null and b/public/terrain/19/858522/353915.terrain differ diff --git a/public/terrain/19/858522/353916.terrain b/public/terrain/19/858522/353916.terrain new file mode 100644 index 000000000..bb6a700f9 Binary files /dev/null and b/public/terrain/19/858522/353916.terrain differ diff --git a/public/terrain/19/858522/353917.terrain b/public/terrain/19/858522/353917.terrain new file mode 100644 index 000000000..f30af1a9e Binary files /dev/null and b/public/terrain/19/858522/353917.terrain differ diff --git a/public/terrain/19/858522/353918.terrain b/public/terrain/19/858522/353918.terrain new file mode 100644 index 000000000..017e47714 Binary files /dev/null and b/public/terrain/19/858522/353918.terrain differ diff --git a/public/terrain/19/858522/353919.terrain b/public/terrain/19/858522/353919.terrain new file mode 100644 index 000000000..78b36bf0a Binary files /dev/null and b/public/terrain/19/858522/353919.terrain differ diff --git a/public/terrain/19/858522/353920.terrain b/public/terrain/19/858522/353920.terrain new file mode 100644 index 000000000..808531482 Binary files /dev/null and b/public/terrain/19/858522/353920.terrain differ diff --git a/public/terrain/19/858522/353921.terrain b/public/terrain/19/858522/353921.terrain new file mode 100644 index 000000000..3ee945d3b Binary files /dev/null and b/public/terrain/19/858522/353921.terrain differ diff --git a/public/terrain/19/858522/353922.terrain b/public/terrain/19/858522/353922.terrain new file mode 100644 index 000000000..dc295bf62 Binary files /dev/null and b/public/terrain/19/858522/353922.terrain differ diff --git a/public/terrain/19/858522/353923.terrain b/public/terrain/19/858522/353923.terrain new file mode 100644 index 000000000..a2fa11913 Binary files /dev/null and b/public/terrain/19/858522/353923.terrain differ diff --git a/public/terrain/19/858522/353924.terrain b/public/terrain/19/858522/353924.terrain new file mode 100644 index 000000000..925dd384f Binary files /dev/null and b/public/terrain/19/858522/353924.terrain differ diff --git a/public/terrain/19/858522/353925.terrain b/public/terrain/19/858522/353925.terrain new file mode 100644 index 000000000..abbc177b3 Binary files /dev/null and b/public/terrain/19/858522/353925.terrain differ diff --git a/public/terrain/19/858522/353926.terrain b/public/terrain/19/858522/353926.terrain new file mode 100644 index 000000000..090da3874 Binary files /dev/null and b/public/terrain/19/858522/353926.terrain differ diff --git a/public/terrain/19/858522/353927.terrain b/public/terrain/19/858522/353927.terrain new file mode 100644 index 000000000..0eaf5165a Binary files /dev/null and b/public/terrain/19/858522/353927.terrain differ diff --git a/public/terrain/19/858522/353928.terrain b/public/terrain/19/858522/353928.terrain new file mode 100644 index 000000000..4e4a49e94 Binary files /dev/null and b/public/terrain/19/858522/353928.terrain differ diff --git a/public/terrain/19/858522/353929.terrain b/public/terrain/19/858522/353929.terrain new file mode 100644 index 000000000..a2c76e6a0 Binary files /dev/null and b/public/terrain/19/858522/353929.terrain differ diff --git a/public/terrain/19/858522/353930.terrain b/public/terrain/19/858522/353930.terrain new file mode 100644 index 000000000..0b2655fc4 Binary files /dev/null and b/public/terrain/19/858522/353930.terrain differ diff --git a/public/terrain/19/858522/353931.terrain b/public/terrain/19/858522/353931.terrain new file mode 100644 index 000000000..a120fed1e Binary files /dev/null and b/public/terrain/19/858522/353931.terrain differ diff --git a/public/terrain/19/858522/353932.terrain b/public/terrain/19/858522/353932.terrain new file mode 100644 index 000000000..8303ba236 Binary files /dev/null and b/public/terrain/19/858522/353932.terrain differ diff --git a/public/terrain/19/858522/353933.terrain b/public/terrain/19/858522/353933.terrain new file mode 100644 index 000000000..8da1ab4ef Binary files /dev/null and b/public/terrain/19/858522/353933.terrain differ diff --git a/public/terrain/19/858522/353934.terrain b/public/terrain/19/858522/353934.terrain new file mode 100644 index 000000000..cd248bdef Binary files /dev/null and b/public/terrain/19/858522/353934.terrain differ diff --git a/public/terrain/19/858522/353935.terrain b/public/terrain/19/858522/353935.terrain new file mode 100644 index 000000000..285c7e468 Binary files /dev/null and b/public/terrain/19/858522/353935.terrain differ diff --git a/public/terrain/19/858522/353936.terrain b/public/terrain/19/858522/353936.terrain new file mode 100644 index 000000000..4aa92e0f9 Binary files /dev/null and b/public/terrain/19/858522/353936.terrain differ diff --git a/public/terrain/19/858522/353937.terrain b/public/terrain/19/858522/353937.terrain new file mode 100644 index 000000000..c8e2d3d80 Binary files /dev/null and b/public/terrain/19/858522/353937.terrain differ diff --git a/public/terrain/19/858522/353938.terrain b/public/terrain/19/858522/353938.terrain new file mode 100644 index 000000000..d73b88455 Binary files /dev/null and b/public/terrain/19/858522/353938.terrain differ diff --git a/public/terrain/19/858522/353939.terrain b/public/terrain/19/858522/353939.terrain new file mode 100644 index 000000000..fd6b60d55 Binary files /dev/null and b/public/terrain/19/858522/353939.terrain differ diff --git a/public/terrain/19/858522/353940.terrain b/public/terrain/19/858522/353940.terrain new file mode 100644 index 000000000..c3c468fe0 Binary files /dev/null and b/public/terrain/19/858522/353940.terrain differ diff --git a/public/terrain/19/858522/353941.terrain b/public/terrain/19/858522/353941.terrain new file mode 100644 index 000000000..45aef8620 Binary files /dev/null and b/public/terrain/19/858522/353941.terrain differ diff --git a/public/terrain/19/858522/353942.terrain b/public/terrain/19/858522/353942.terrain new file mode 100644 index 000000000..e2c4dc6e6 Binary files /dev/null and b/public/terrain/19/858522/353942.terrain differ diff --git a/public/terrain/19/858522/353943.terrain b/public/terrain/19/858522/353943.terrain new file mode 100644 index 000000000..503b41197 Binary files /dev/null and b/public/terrain/19/858522/353943.terrain differ diff --git a/public/terrain/19/858522/353944.terrain b/public/terrain/19/858522/353944.terrain new file mode 100644 index 000000000..4aecc52da Binary files /dev/null and b/public/terrain/19/858522/353944.terrain differ diff --git a/public/terrain/19/858522/353945.terrain b/public/terrain/19/858522/353945.terrain new file mode 100644 index 000000000..b97c3d5b0 Binary files /dev/null and b/public/terrain/19/858522/353945.terrain differ diff --git a/public/terrain/19/858522/353946.terrain b/public/terrain/19/858522/353946.terrain new file mode 100644 index 000000000..9c6a42748 Binary files /dev/null and b/public/terrain/19/858522/353946.terrain differ diff --git a/public/terrain/19/858522/353947.terrain b/public/terrain/19/858522/353947.terrain new file mode 100644 index 000000000..faa63cd45 Binary files /dev/null and b/public/terrain/19/858522/353947.terrain differ diff --git a/public/terrain/19/858522/353948.terrain b/public/terrain/19/858522/353948.terrain new file mode 100644 index 000000000..fc1d3a3d3 Binary files /dev/null and b/public/terrain/19/858522/353948.terrain differ diff --git a/public/terrain/19/858522/353949.terrain b/public/terrain/19/858522/353949.terrain new file mode 100644 index 000000000..35df4e0cb Binary files /dev/null and b/public/terrain/19/858522/353949.terrain differ diff --git a/public/terrain/19/858522/353950.terrain b/public/terrain/19/858522/353950.terrain new file mode 100644 index 000000000..cea3868aa Binary files /dev/null and b/public/terrain/19/858522/353950.terrain differ diff --git a/public/terrain/19/858522/353951.terrain b/public/terrain/19/858522/353951.terrain new file mode 100644 index 000000000..bb2aa49a9 Binary files /dev/null and b/public/terrain/19/858522/353951.terrain differ diff --git a/public/terrain/19/858522/353952.terrain b/public/terrain/19/858522/353952.terrain new file mode 100644 index 000000000..daba496a0 Binary files /dev/null and b/public/terrain/19/858522/353952.terrain differ diff --git a/public/terrain/19/858522/353953.terrain b/public/terrain/19/858522/353953.terrain new file mode 100644 index 000000000..bd7e14f2f Binary files /dev/null and b/public/terrain/19/858522/353953.terrain differ diff --git a/public/terrain/19/858522/353954.terrain b/public/terrain/19/858522/353954.terrain new file mode 100644 index 000000000..dca332ec6 Binary files /dev/null and b/public/terrain/19/858522/353954.terrain differ diff --git a/public/terrain/19/858522/353955.terrain b/public/terrain/19/858522/353955.terrain new file mode 100644 index 000000000..59e0c093e Binary files /dev/null and b/public/terrain/19/858522/353955.terrain differ diff --git a/public/terrain/19/858522/353956.terrain b/public/terrain/19/858522/353956.terrain new file mode 100644 index 000000000..23e7aae3e Binary files /dev/null and b/public/terrain/19/858522/353956.terrain differ diff --git a/public/terrain/19/858522/353957.terrain b/public/terrain/19/858522/353957.terrain new file mode 100644 index 000000000..8fadcb766 Binary files /dev/null and b/public/terrain/19/858522/353957.terrain differ diff --git a/public/terrain/19/858522/353958.terrain b/public/terrain/19/858522/353958.terrain new file mode 100644 index 000000000..81db9ae5a Binary files /dev/null and b/public/terrain/19/858522/353958.terrain differ diff --git a/public/terrain/19/858522/353959.terrain b/public/terrain/19/858522/353959.terrain new file mode 100644 index 000000000..08f959c44 Binary files /dev/null and b/public/terrain/19/858522/353959.terrain differ diff --git a/public/terrain/19/858522/353960.terrain b/public/terrain/19/858522/353960.terrain new file mode 100644 index 000000000..d596b4ded Binary files /dev/null and b/public/terrain/19/858522/353960.terrain differ diff --git a/public/terrain/19/858522/353961.terrain b/public/terrain/19/858522/353961.terrain new file mode 100644 index 000000000..f77b44519 Binary files /dev/null and b/public/terrain/19/858522/353961.terrain differ diff --git a/public/terrain/19/858522/353962.terrain b/public/terrain/19/858522/353962.terrain new file mode 100644 index 000000000..206209533 Binary files /dev/null and b/public/terrain/19/858522/353962.terrain differ diff --git a/public/terrain/19/858522/353963.terrain b/public/terrain/19/858522/353963.terrain new file mode 100644 index 000000000..dcbc03321 Binary files /dev/null and b/public/terrain/19/858522/353963.terrain differ diff --git a/public/terrain/19/858522/353964.terrain b/public/terrain/19/858522/353964.terrain new file mode 100644 index 000000000..d793e6d1b Binary files /dev/null and b/public/terrain/19/858522/353964.terrain differ diff --git a/public/terrain/19/858522/353965.terrain b/public/terrain/19/858522/353965.terrain new file mode 100644 index 000000000..581d8334b Binary files /dev/null and b/public/terrain/19/858522/353965.terrain differ diff --git a/public/terrain/19/858522/353966.terrain b/public/terrain/19/858522/353966.terrain new file mode 100644 index 000000000..e05617904 Binary files /dev/null and b/public/terrain/19/858522/353966.terrain differ diff --git a/public/terrain/19/858522/353967.terrain b/public/terrain/19/858522/353967.terrain new file mode 100644 index 000000000..026f24961 Binary files /dev/null and b/public/terrain/19/858522/353967.terrain differ diff --git a/public/terrain/19/858522/353968.terrain b/public/terrain/19/858522/353968.terrain new file mode 100644 index 000000000..a8f05dc13 Binary files /dev/null and b/public/terrain/19/858522/353968.terrain differ diff --git a/public/terrain/19/858522/353969.terrain b/public/terrain/19/858522/353969.terrain new file mode 100644 index 000000000..c9f98b3bf Binary files /dev/null and b/public/terrain/19/858522/353969.terrain differ diff --git a/public/terrain/19/858522/353970.terrain b/public/terrain/19/858522/353970.terrain new file mode 100644 index 000000000..136d94d03 Binary files /dev/null and b/public/terrain/19/858522/353970.terrain differ diff --git a/public/terrain/19/858522/353971.terrain b/public/terrain/19/858522/353971.terrain new file mode 100644 index 000000000..3d7524b52 Binary files /dev/null and b/public/terrain/19/858522/353971.terrain differ diff --git a/public/terrain/19/858522/353972.terrain b/public/terrain/19/858522/353972.terrain new file mode 100644 index 000000000..ab80ba57b Binary files /dev/null and b/public/terrain/19/858522/353972.terrain differ diff --git a/public/terrain/19/858522/353973.terrain b/public/terrain/19/858522/353973.terrain new file mode 100644 index 000000000..a19ae8df3 Binary files /dev/null and b/public/terrain/19/858522/353973.terrain differ diff --git a/public/terrain/19/858522/353974.terrain b/public/terrain/19/858522/353974.terrain new file mode 100644 index 000000000..c17e60f90 Binary files /dev/null and b/public/terrain/19/858522/353974.terrain differ diff --git a/public/terrain/19/858522/353975.terrain b/public/terrain/19/858522/353975.terrain new file mode 100644 index 000000000..fc9eb7933 Binary files /dev/null and b/public/terrain/19/858522/353975.terrain differ diff --git a/public/terrain/19/858522/353976.terrain b/public/terrain/19/858522/353976.terrain new file mode 100644 index 000000000..f74c7bcab Binary files /dev/null and b/public/terrain/19/858522/353976.terrain differ diff --git a/public/terrain/19/858522/353977.terrain b/public/terrain/19/858522/353977.terrain new file mode 100644 index 000000000..1c77ff447 Binary files /dev/null and b/public/terrain/19/858522/353977.terrain differ diff --git a/public/terrain/19/858522/353978.terrain b/public/terrain/19/858522/353978.terrain new file mode 100644 index 000000000..25bae8d2f Binary files /dev/null and b/public/terrain/19/858522/353978.terrain differ diff --git a/public/terrain/19/858522/353979.terrain b/public/terrain/19/858522/353979.terrain new file mode 100644 index 000000000..8691c9946 Binary files /dev/null and b/public/terrain/19/858522/353979.terrain differ diff --git a/public/terrain/19/858522/353980.terrain b/public/terrain/19/858522/353980.terrain new file mode 100644 index 000000000..20a4fd58c Binary files /dev/null and b/public/terrain/19/858522/353980.terrain differ diff --git a/public/terrain/19/858522/353981.terrain b/public/terrain/19/858522/353981.terrain new file mode 100644 index 000000000..707bf16ad Binary files /dev/null and b/public/terrain/19/858522/353981.terrain differ diff --git a/public/terrain/19/858522/353982.terrain b/public/terrain/19/858522/353982.terrain new file mode 100644 index 000000000..5849b8833 Binary files /dev/null and b/public/terrain/19/858522/353982.terrain differ diff --git a/public/terrain/19/858522/353983.terrain b/public/terrain/19/858522/353983.terrain new file mode 100644 index 000000000..aa7c0d0c4 Binary files /dev/null and b/public/terrain/19/858522/353983.terrain differ diff --git a/public/terrain/19/858522/353984.terrain b/public/terrain/19/858522/353984.terrain new file mode 100644 index 000000000..870cd988a Binary files /dev/null and b/public/terrain/19/858522/353984.terrain differ diff --git a/public/terrain/19/858522/353985.terrain b/public/terrain/19/858522/353985.terrain new file mode 100644 index 000000000..38a5ee607 Binary files /dev/null and b/public/terrain/19/858522/353985.terrain differ diff --git a/public/terrain/19/858522/353986.terrain b/public/terrain/19/858522/353986.terrain new file mode 100644 index 000000000..55e65db9e Binary files /dev/null and b/public/terrain/19/858522/353986.terrain differ diff --git a/public/terrain/19/858522/353987.terrain b/public/terrain/19/858522/353987.terrain new file mode 100644 index 000000000..ff53613c1 Binary files /dev/null and b/public/terrain/19/858522/353987.terrain differ diff --git a/public/terrain/19/858522/353988.terrain b/public/terrain/19/858522/353988.terrain new file mode 100644 index 000000000..5c1f2086a Binary files /dev/null and b/public/terrain/19/858522/353988.terrain differ diff --git a/public/terrain/19/858522/353989.terrain b/public/terrain/19/858522/353989.terrain new file mode 100644 index 000000000..5ddae5d76 Binary files /dev/null and b/public/terrain/19/858522/353989.terrain differ diff --git a/public/terrain/19/858522/353990.terrain b/public/terrain/19/858522/353990.terrain new file mode 100644 index 000000000..57eb44234 Binary files /dev/null and b/public/terrain/19/858522/353990.terrain differ diff --git a/public/terrain/19/858522/353991.terrain b/public/terrain/19/858522/353991.terrain new file mode 100644 index 000000000..738a0184e Binary files /dev/null and b/public/terrain/19/858522/353991.terrain differ diff --git a/public/terrain/19/858522/353992.terrain b/public/terrain/19/858522/353992.terrain new file mode 100644 index 000000000..f4750804a Binary files /dev/null and b/public/terrain/19/858522/353992.terrain differ diff --git a/public/terrain/19/858522/353993.terrain b/public/terrain/19/858522/353993.terrain new file mode 100644 index 000000000..3f4c203c2 Binary files /dev/null and b/public/terrain/19/858522/353993.terrain differ diff --git a/public/terrain/19/858522/353994.terrain b/public/terrain/19/858522/353994.terrain new file mode 100644 index 000000000..20390f3b5 Binary files /dev/null and b/public/terrain/19/858522/353994.terrain differ diff --git a/public/terrain/19/858522/353995.terrain b/public/terrain/19/858522/353995.terrain new file mode 100644 index 000000000..887628682 Binary files /dev/null and b/public/terrain/19/858522/353995.terrain differ diff --git a/public/terrain/19/858522/353996.terrain b/public/terrain/19/858522/353996.terrain new file mode 100644 index 000000000..4371b6323 Binary files /dev/null and b/public/terrain/19/858522/353996.terrain differ diff --git a/public/terrain/19/858522/353997.terrain b/public/terrain/19/858522/353997.terrain new file mode 100644 index 000000000..d1965daa8 Binary files /dev/null and b/public/terrain/19/858522/353997.terrain differ diff --git a/public/terrain/19/858522/353998.terrain b/public/terrain/19/858522/353998.terrain new file mode 100644 index 000000000..48a521810 Binary files /dev/null and b/public/terrain/19/858522/353998.terrain differ diff --git a/public/terrain/19/858522/353999.terrain b/public/terrain/19/858522/353999.terrain new file mode 100644 index 000000000..4c0c5b928 Binary files /dev/null and b/public/terrain/19/858522/353999.terrain differ diff --git a/public/terrain/19/858522/354000.terrain b/public/terrain/19/858522/354000.terrain new file mode 100644 index 000000000..58d25c171 Binary files /dev/null and b/public/terrain/19/858522/354000.terrain differ diff --git a/public/terrain/19/858522/354001.terrain b/public/terrain/19/858522/354001.terrain new file mode 100644 index 000000000..3f351cde1 Binary files /dev/null and b/public/terrain/19/858522/354001.terrain differ diff --git a/public/terrain/19/858522/354002.terrain b/public/terrain/19/858522/354002.terrain new file mode 100644 index 000000000..e5e7cbd03 Binary files /dev/null and b/public/terrain/19/858522/354002.terrain differ diff --git a/public/terrain/19/858522/354003.terrain b/public/terrain/19/858522/354003.terrain new file mode 100644 index 000000000..2710e6590 Binary files /dev/null and b/public/terrain/19/858522/354003.terrain differ diff --git a/public/terrain/19/858522/354004.terrain b/public/terrain/19/858522/354004.terrain new file mode 100644 index 000000000..91b282ce9 Binary files /dev/null and b/public/terrain/19/858522/354004.terrain differ diff --git a/public/terrain/19/858522/354005.terrain b/public/terrain/19/858522/354005.terrain new file mode 100644 index 000000000..942526fe0 Binary files /dev/null and b/public/terrain/19/858522/354005.terrain differ diff --git a/public/terrain/19/858522/354006.terrain b/public/terrain/19/858522/354006.terrain new file mode 100644 index 000000000..4b94e1826 Binary files /dev/null and b/public/terrain/19/858522/354006.terrain differ diff --git a/public/terrain/19/858522/354007.terrain b/public/terrain/19/858522/354007.terrain new file mode 100644 index 000000000..03ac63a6e Binary files /dev/null and b/public/terrain/19/858522/354007.terrain differ diff --git a/public/terrain/19/858522/354008.terrain b/public/terrain/19/858522/354008.terrain new file mode 100644 index 000000000..d5c738323 Binary files /dev/null and b/public/terrain/19/858522/354008.terrain differ diff --git a/public/terrain/19/858522/354009.terrain b/public/terrain/19/858522/354009.terrain new file mode 100644 index 000000000..5b756ea3f Binary files /dev/null and b/public/terrain/19/858522/354009.terrain differ diff --git a/public/terrain/19/858522/354010.terrain b/public/terrain/19/858522/354010.terrain new file mode 100644 index 000000000..2094ff8db Binary files /dev/null and b/public/terrain/19/858522/354010.terrain differ diff --git a/public/terrain/19/858522/354011.terrain b/public/terrain/19/858522/354011.terrain new file mode 100644 index 000000000..8002f84f1 Binary files /dev/null and b/public/terrain/19/858522/354011.terrain differ diff --git a/public/terrain/19/858522/354012.terrain b/public/terrain/19/858522/354012.terrain new file mode 100644 index 000000000..66362d600 Binary files /dev/null and b/public/terrain/19/858522/354012.terrain differ diff --git a/public/terrain/19/858522/354013.terrain b/public/terrain/19/858522/354013.terrain new file mode 100644 index 000000000..fd295ddc6 Binary files /dev/null and b/public/terrain/19/858522/354013.terrain differ diff --git a/public/terrain/19/858522/354014.terrain b/public/terrain/19/858522/354014.terrain new file mode 100644 index 000000000..621917d62 Binary files /dev/null and b/public/terrain/19/858522/354014.terrain differ diff --git a/public/terrain/19/858522/354015.terrain b/public/terrain/19/858522/354015.terrain new file mode 100644 index 000000000..971ec9420 Binary files /dev/null and b/public/terrain/19/858522/354015.terrain differ diff --git a/public/terrain/19/858522/354016.terrain b/public/terrain/19/858522/354016.terrain new file mode 100644 index 000000000..3d1f917f6 Binary files /dev/null and b/public/terrain/19/858522/354016.terrain differ diff --git a/public/terrain/19/858522/354017.terrain b/public/terrain/19/858522/354017.terrain new file mode 100644 index 000000000..86ed5c960 Binary files /dev/null and b/public/terrain/19/858522/354017.terrain differ diff --git a/public/terrain/19/858522/354018.terrain b/public/terrain/19/858522/354018.terrain new file mode 100644 index 000000000..2b09904eb Binary files /dev/null and b/public/terrain/19/858522/354018.terrain differ diff --git a/public/terrain/19/858522/354019.terrain b/public/terrain/19/858522/354019.terrain new file mode 100644 index 000000000..201d4c86d Binary files /dev/null and b/public/terrain/19/858522/354019.terrain differ diff --git a/public/terrain/19/858522/354020.terrain b/public/terrain/19/858522/354020.terrain new file mode 100644 index 000000000..12bc946c7 Binary files /dev/null and b/public/terrain/19/858522/354020.terrain differ diff --git a/public/terrain/19/858522/354021.terrain b/public/terrain/19/858522/354021.terrain new file mode 100644 index 000000000..40ff01189 Binary files /dev/null and b/public/terrain/19/858522/354021.terrain differ diff --git a/public/terrain/19/858522/354022.terrain b/public/terrain/19/858522/354022.terrain new file mode 100644 index 000000000..605645150 Binary files /dev/null and b/public/terrain/19/858522/354022.terrain differ diff --git a/public/terrain/19/858522/354023.terrain b/public/terrain/19/858522/354023.terrain new file mode 100644 index 000000000..99d7e7394 Binary files /dev/null and b/public/terrain/19/858522/354023.terrain differ diff --git a/public/terrain/19/858522/354024.terrain b/public/terrain/19/858522/354024.terrain new file mode 100644 index 000000000..1ab62ec81 Binary files /dev/null and b/public/terrain/19/858522/354024.terrain differ diff --git a/public/terrain/19/858522/354025.terrain b/public/terrain/19/858522/354025.terrain new file mode 100644 index 000000000..d8de8d5f4 Binary files /dev/null and b/public/terrain/19/858522/354025.terrain differ diff --git a/public/terrain/19/858522/354026.terrain b/public/terrain/19/858522/354026.terrain new file mode 100644 index 000000000..65bbeae05 Binary files /dev/null and b/public/terrain/19/858522/354026.terrain differ diff --git a/public/terrain/19/858522/354027.terrain b/public/terrain/19/858522/354027.terrain new file mode 100644 index 000000000..05a8548f3 Binary files /dev/null and b/public/terrain/19/858522/354027.terrain differ diff --git a/public/terrain/19/858522/354028.terrain b/public/terrain/19/858522/354028.terrain new file mode 100644 index 000000000..4342f7e1d Binary files /dev/null and b/public/terrain/19/858522/354028.terrain differ diff --git a/public/terrain/19/858522/354029.terrain b/public/terrain/19/858522/354029.terrain new file mode 100644 index 000000000..6484059c6 Binary files /dev/null and b/public/terrain/19/858522/354029.terrain differ diff --git a/public/terrain/19/858522/354030.terrain b/public/terrain/19/858522/354030.terrain new file mode 100644 index 000000000..9f8fabfeb Binary files /dev/null and b/public/terrain/19/858522/354030.terrain differ diff --git a/public/terrain/19/858522/354031.terrain b/public/terrain/19/858522/354031.terrain new file mode 100644 index 000000000..604e83364 Binary files /dev/null and b/public/terrain/19/858522/354031.terrain differ diff --git a/public/terrain/19/858522/354032.terrain b/public/terrain/19/858522/354032.terrain new file mode 100644 index 000000000..783b15770 Binary files /dev/null and b/public/terrain/19/858522/354032.terrain differ diff --git a/public/terrain/19/858522/354033.terrain b/public/terrain/19/858522/354033.terrain new file mode 100644 index 000000000..ba946001c Binary files /dev/null and b/public/terrain/19/858522/354033.terrain differ diff --git a/public/terrain/19/858522/354034.terrain b/public/terrain/19/858522/354034.terrain new file mode 100644 index 000000000..ec89947df Binary files /dev/null and b/public/terrain/19/858522/354034.terrain differ diff --git a/public/terrain/19/858522/354035.terrain b/public/terrain/19/858522/354035.terrain new file mode 100644 index 000000000..c75d4a26e Binary files /dev/null and b/public/terrain/19/858522/354035.terrain differ diff --git a/public/terrain/19/858522/354036.terrain b/public/terrain/19/858522/354036.terrain new file mode 100644 index 000000000..fcafbf8ff Binary files /dev/null and b/public/terrain/19/858522/354036.terrain differ diff --git a/public/terrain/19/858522/354037.terrain b/public/terrain/19/858522/354037.terrain new file mode 100644 index 000000000..e0fc92f27 Binary files /dev/null and b/public/terrain/19/858522/354037.terrain differ diff --git a/public/terrain/19/858522/354038.terrain b/public/terrain/19/858522/354038.terrain new file mode 100644 index 000000000..12f9b2387 Binary files /dev/null and b/public/terrain/19/858522/354038.terrain differ diff --git a/public/terrain/19/858522/354039.terrain b/public/terrain/19/858522/354039.terrain new file mode 100644 index 000000000..7214696f0 Binary files /dev/null and b/public/terrain/19/858522/354039.terrain differ diff --git a/public/terrain/19/858522/354040.terrain b/public/terrain/19/858522/354040.terrain new file mode 100644 index 000000000..78ef6a516 Binary files /dev/null and b/public/terrain/19/858522/354040.terrain differ diff --git a/public/terrain/19/858522/354041.terrain b/public/terrain/19/858522/354041.terrain new file mode 100644 index 000000000..0cb89320a Binary files /dev/null and b/public/terrain/19/858522/354041.terrain differ diff --git a/public/terrain/19/858522/354042.terrain b/public/terrain/19/858522/354042.terrain new file mode 100644 index 000000000..70f10402c Binary files /dev/null and b/public/terrain/19/858522/354042.terrain differ diff --git a/public/terrain/19/858522/354043.terrain b/public/terrain/19/858522/354043.terrain new file mode 100644 index 000000000..15910e2bf Binary files /dev/null and b/public/terrain/19/858522/354043.terrain differ diff --git a/public/terrain/19/858522/354044.terrain b/public/terrain/19/858522/354044.terrain new file mode 100644 index 000000000..fc5e0526b Binary files /dev/null and b/public/terrain/19/858522/354044.terrain differ diff --git a/public/terrain/19/858522/354045.terrain b/public/terrain/19/858522/354045.terrain new file mode 100644 index 000000000..6608c068e Binary files /dev/null and b/public/terrain/19/858522/354045.terrain differ diff --git a/public/terrain/19/858522/354046.terrain b/public/terrain/19/858522/354046.terrain new file mode 100644 index 000000000..752e54ceb Binary files /dev/null and b/public/terrain/19/858522/354046.terrain differ diff --git a/public/terrain/19/858522/354047.terrain b/public/terrain/19/858522/354047.terrain new file mode 100644 index 000000000..3547ece9c Binary files /dev/null and b/public/terrain/19/858522/354047.terrain differ diff --git a/public/terrain/19/858522/354048.terrain b/public/terrain/19/858522/354048.terrain new file mode 100644 index 000000000..35137992d Binary files /dev/null and b/public/terrain/19/858522/354048.terrain differ diff --git a/public/terrain/19/858522/354049.terrain b/public/terrain/19/858522/354049.terrain new file mode 100644 index 000000000..c385510a0 Binary files /dev/null and b/public/terrain/19/858522/354049.terrain differ diff --git a/public/terrain/19/858522/354050.terrain b/public/terrain/19/858522/354050.terrain new file mode 100644 index 000000000..7fe3c8af0 Binary files /dev/null and b/public/terrain/19/858522/354050.terrain differ diff --git a/public/terrain/19/858522/354051.terrain b/public/terrain/19/858522/354051.terrain new file mode 100644 index 000000000..0d87e80a3 Binary files /dev/null and b/public/terrain/19/858522/354051.terrain differ diff --git a/public/terrain/19/858522/354052.terrain b/public/terrain/19/858522/354052.terrain new file mode 100644 index 000000000..ecf100845 Binary files /dev/null and b/public/terrain/19/858522/354052.terrain differ diff --git a/public/terrain/19/858522/354053.terrain b/public/terrain/19/858522/354053.terrain new file mode 100644 index 000000000..02ac213c2 Binary files /dev/null and b/public/terrain/19/858522/354053.terrain differ diff --git a/public/terrain/19/858522/354054.terrain b/public/terrain/19/858522/354054.terrain new file mode 100644 index 000000000..ff166a0a3 Binary files /dev/null and b/public/terrain/19/858522/354054.terrain differ diff --git a/public/terrain/19/858522/354055.terrain b/public/terrain/19/858522/354055.terrain new file mode 100644 index 000000000..00615d5dd Binary files /dev/null and b/public/terrain/19/858522/354055.terrain differ diff --git a/public/terrain/19/858522/354056.terrain b/public/terrain/19/858522/354056.terrain new file mode 100644 index 000000000..7360f87eb Binary files /dev/null and b/public/terrain/19/858522/354056.terrain differ diff --git a/public/terrain/19/858522/354057.terrain b/public/terrain/19/858522/354057.terrain new file mode 100644 index 000000000..327679073 Binary files /dev/null and b/public/terrain/19/858522/354057.terrain differ diff --git a/public/terrain/19/858522/354058.terrain b/public/terrain/19/858522/354058.terrain new file mode 100644 index 000000000..03d077ea4 Binary files /dev/null and b/public/terrain/19/858522/354058.terrain differ diff --git a/public/terrain/19/858522/354059.terrain b/public/terrain/19/858522/354059.terrain new file mode 100644 index 000000000..d81a80060 Binary files /dev/null and b/public/terrain/19/858522/354059.terrain differ diff --git a/public/terrain/19/858523/353743.terrain b/public/terrain/19/858523/353743.terrain new file mode 100644 index 000000000..c0e1e6420 Binary files /dev/null and b/public/terrain/19/858523/353743.terrain differ diff --git a/public/terrain/19/858523/353744.terrain b/public/terrain/19/858523/353744.terrain new file mode 100644 index 000000000..b7d86d6e5 Binary files /dev/null and b/public/terrain/19/858523/353744.terrain differ diff --git a/public/terrain/19/858523/353745.terrain b/public/terrain/19/858523/353745.terrain new file mode 100644 index 000000000..72957a299 Binary files /dev/null and b/public/terrain/19/858523/353745.terrain differ diff --git a/public/terrain/19/858523/353746.terrain b/public/terrain/19/858523/353746.terrain new file mode 100644 index 000000000..2e488c2dd Binary files /dev/null and b/public/terrain/19/858523/353746.terrain differ diff --git a/public/terrain/19/858523/353747.terrain b/public/terrain/19/858523/353747.terrain new file mode 100644 index 000000000..45ed5764b Binary files /dev/null and b/public/terrain/19/858523/353747.terrain differ diff --git a/public/terrain/19/858523/353748.terrain b/public/terrain/19/858523/353748.terrain new file mode 100644 index 000000000..86bd6a631 Binary files /dev/null and b/public/terrain/19/858523/353748.terrain differ diff --git a/public/terrain/19/858523/353749.terrain b/public/terrain/19/858523/353749.terrain new file mode 100644 index 000000000..80cad3c22 Binary files /dev/null and b/public/terrain/19/858523/353749.terrain differ diff --git a/public/terrain/19/858523/353750.terrain b/public/terrain/19/858523/353750.terrain new file mode 100644 index 000000000..89a46adef Binary files /dev/null and b/public/terrain/19/858523/353750.terrain differ diff --git a/public/terrain/19/858523/353751.terrain b/public/terrain/19/858523/353751.terrain new file mode 100644 index 000000000..1fa49262c Binary files /dev/null and b/public/terrain/19/858523/353751.terrain differ diff --git a/public/terrain/19/858523/353752.terrain b/public/terrain/19/858523/353752.terrain new file mode 100644 index 000000000..741e63144 Binary files /dev/null and b/public/terrain/19/858523/353752.terrain differ diff --git a/public/terrain/19/858523/353753.terrain b/public/terrain/19/858523/353753.terrain new file mode 100644 index 000000000..925d24221 Binary files /dev/null and b/public/terrain/19/858523/353753.terrain differ diff --git a/public/terrain/19/858523/353754.terrain b/public/terrain/19/858523/353754.terrain new file mode 100644 index 000000000..6cc20c82c Binary files /dev/null and b/public/terrain/19/858523/353754.terrain differ diff --git a/public/terrain/19/858523/353755.terrain b/public/terrain/19/858523/353755.terrain new file mode 100644 index 000000000..476a569f7 Binary files /dev/null and b/public/terrain/19/858523/353755.terrain differ diff --git a/public/terrain/19/858523/353756.terrain b/public/terrain/19/858523/353756.terrain new file mode 100644 index 000000000..9d809b038 Binary files /dev/null and b/public/terrain/19/858523/353756.terrain differ diff --git a/public/terrain/19/858523/353757.terrain b/public/terrain/19/858523/353757.terrain new file mode 100644 index 000000000..aa6a7e02a Binary files /dev/null and b/public/terrain/19/858523/353757.terrain differ diff --git a/public/terrain/19/858523/353758.terrain b/public/terrain/19/858523/353758.terrain new file mode 100644 index 000000000..22b0b7a05 Binary files /dev/null and b/public/terrain/19/858523/353758.terrain differ diff --git a/public/terrain/19/858523/353759.terrain b/public/terrain/19/858523/353759.terrain new file mode 100644 index 000000000..cacc301ec Binary files /dev/null and b/public/terrain/19/858523/353759.terrain differ diff --git a/public/terrain/19/858523/353760.terrain b/public/terrain/19/858523/353760.terrain new file mode 100644 index 000000000..65def47cb Binary files /dev/null and b/public/terrain/19/858523/353760.terrain differ diff --git a/public/terrain/19/858523/353761.terrain b/public/terrain/19/858523/353761.terrain new file mode 100644 index 000000000..392e2daf0 Binary files /dev/null and b/public/terrain/19/858523/353761.terrain differ diff --git a/public/terrain/19/858523/353762.terrain b/public/terrain/19/858523/353762.terrain new file mode 100644 index 000000000..a024fb529 Binary files /dev/null and b/public/terrain/19/858523/353762.terrain differ diff --git a/public/terrain/19/858523/353763.terrain b/public/terrain/19/858523/353763.terrain new file mode 100644 index 000000000..d23448312 Binary files /dev/null and b/public/terrain/19/858523/353763.terrain differ diff --git a/public/terrain/19/858523/353764.terrain b/public/terrain/19/858523/353764.terrain new file mode 100644 index 000000000..1f69380a1 Binary files /dev/null and b/public/terrain/19/858523/353764.terrain differ diff --git a/public/terrain/19/858523/353765.terrain b/public/terrain/19/858523/353765.terrain new file mode 100644 index 000000000..5ceb1003b Binary files /dev/null and b/public/terrain/19/858523/353765.terrain differ diff --git a/public/terrain/19/858523/353766.terrain b/public/terrain/19/858523/353766.terrain new file mode 100644 index 000000000..41f2e6353 Binary files /dev/null and b/public/terrain/19/858523/353766.terrain differ diff --git a/public/terrain/19/858523/353767.terrain b/public/terrain/19/858523/353767.terrain new file mode 100644 index 000000000..cd6a1d154 Binary files /dev/null and b/public/terrain/19/858523/353767.terrain differ diff --git a/public/terrain/19/858523/353768.terrain b/public/terrain/19/858523/353768.terrain new file mode 100644 index 000000000..31a632418 Binary files /dev/null and b/public/terrain/19/858523/353768.terrain differ diff --git a/public/terrain/19/858523/353769.terrain b/public/terrain/19/858523/353769.terrain new file mode 100644 index 000000000..6c09d242b Binary files /dev/null and b/public/terrain/19/858523/353769.terrain differ diff --git a/public/terrain/19/858523/353770.terrain b/public/terrain/19/858523/353770.terrain new file mode 100644 index 000000000..17f414f60 Binary files /dev/null and b/public/terrain/19/858523/353770.terrain differ diff --git a/public/terrain/19/858523/353771.terrain b/public/terrain/19/858523/353771.terrain new file mode 100644 index 000000000..472de1bb8 Binary files /dev/null and b/public/terrain/19/858523/353771.terrain differ diff --git a/public/terrain/19/858523/353772.terrain b/public/terrain/19/858523/353772.terrain new file mode 100644 index 000000000..acae61114 Binary files /dev/null and b/public/terrain/19/858523/353772.terrain differ diff --git a/public/terrain/19/858523/353773.terrain b/public/terrain/19/858523/353773.terrain new file mode 100644 index 000000000..2bc15206a Binary files /dev/null and b/public/terrain/19/858523/353773.terrain differ diff --git a/public/terrain/19/858523/353774.terrain b/public/terrain/19/858523/353774.terrain new file mode 100644 index 000000000..9184002af Binary files /dev/null and b/public/terrain/19/858523/353774.terrain differ diff --git a/public/terrain/19/858523/353775.terrain b/public/terrain/19/858523/353775.terrain new file mode 100644 index 000000000..ee5c9c73f Binary files /dev/null and b/public/terrain/19/858523/353775.terrain differ diff --git a/public/terrain/19/858523/353776.terrain b/public/terrain/19/858523/353776.terrain new file mode 100644 index 000000000..b9bd3f03c Binary files /dev/null and b/public/terrain/19/858523/353776.terrain differ diff --git a/public/terrain/19/858523/353777.terrain b/public/terrain/19/858523/353777.terrain new file mode 100644 index 000000000..1b3c8b47d Binary files /dev/null and b/public/terrain/19/858523/353777.terrain differ diff --git a/public/terrain/19/858523/353778.terrain b/public/terrain/19/858523/353778.terrain new file mode 100644 index 000000000..3c5ea93fb Binary files /dev/null and b/public/terrain/19/858523/353778.terrain differ diff --git a/public/terrain/19/858523/353779.terrain b/public/terrain/19/858523/353779.terrain new file mode 100644 index 000000000..39b6899eb Binary files /dev/null and b/public/terrain/19/858523/353779.terrain differ diff --git a/public/terrain/19/858523/353780.terrain b/public/terrain/19/858523/353780.terrain new file mode 100644 index 000000000..d5076a602 Binary files /dev/null and b/public/terrain/19/858523/353780.terrain differ diff --git a/public/terrain/19/858523/353781.terrain b/public/terrain/19/858523/353781.terrain new file mode 100644 index 000000000..2063aa6db Binary files /dev/null and b/public/terrain/19/858523/353781.terrain differ diff --git a/public/terrain/19/858523/353782.terrain b/public/terrain/19/858523/353782.terrain new file mode 100644 index 000000000..4f1f0e70a Binary files /dev/null and b/public/terrain/19/858523/353782.terrain differ diff --git a/public/terrain/19/858523/353783.terrain b/public/terrain/19/858523/353783.terrain new file mode 100644 index 000000000..363e325c2 Binary files /dev/null and b/public/terrain/19/858523/353783.terrain differ diff --git a/public/terrain/19/858523/353784.terrain b/public/terrain/19/858523/353784.terrain new file mode 100644 index 000000000..e1a592a52 Binary files /dev/null and b/public/terrain/19/858523/353784.terrain differ diff --git a/public/terrain/19/858523/353785.terrain b/public/terrain/19/858523/353785.terrain new file mode 100644 index 000000000..057ab43a8 Binary files /dev/null and b/public/terrain/19/858523/353785.terrain differ diff --git a/public/terrain/19/858523/353786.terrain b/public/terrain/19/858523/353786.terrain new file mode 100644 index 000000000..f96dc5070 Binary files /dev/null and b/public/terrain/19/858523/353786.terrain differ diff --git a/public/terrain/19/858523/353787.terrain b/public/terrain/19/858523/353787.terrain new file mode 100644 index 000000000..5a7984164 Binary files /dev/null and b/public/terrain/19/858523/353787.terrain differ diff --git a/public/terrain/19/858523/353788.terrain b/public/terrain/19/858523/353788.terrain new file mode 100644 index 000000000..b08740b50 Binary files /dev/null and b/public/terrain/19/858523/353788.terrain differ diff --git a/public/terrain/19/858523/353789.terrain b/public/terrain/19/858523/353789.terrain new file mode 100644 index 000000000..c85ee7125 Binary files /dev/null and b/public/terrain/19/858523/353789.terrain differ diff --git a/public/terrain/19/858523/353790.terrain b/public/terrain/19/858523/353790.terrain new file mode 100644 index 000000000..d9fc3df7e Binary files /dev/null and b/public/terrain/19/858523/353790.terrain differ diff --git a/public/terrain/19/858523/353791.terrain b/public/terrain/19/858523/353791.terrain new file mode 100644 index 000000000..e771df9ca Binary files /dev/null and b/public/terrain/19/858523/353791.terrain differ diff --git a/public/terrain/19/858523/353792.terrain b/public/terrain/19/858523/353792.terrain new file mode 100644 index 000000000..94222709c Binary files /dev/null and b/public/terrain/19/858523/353792.terrain differ diff --git a/public/terrain/19/858523/353793.terrain b/public/terrain/19/858523/353793.terrain new file mode 100644 index 000000000..7f5fbb834 Binary files /dev/null and b/public/terrain/19/858523/353793.terrain differ diff --git a/public/terrain/19/858523/353794.terrain b/public/terrain/19/858523/353794.terrain new file mode 100644 index 000000000..5b83934db Binary files /dev/null and b/public/terrain/19/858523/353794.terrain differ diff --git a/public/terrain/19/858523/353795.terrain b/public/terrain/19/858523/353795.terrain new file mode 100644 index 000000000..f660d861d Binary files /dev/null and b/public/terrain/19/858523/353795.terrain differ diff --git a/public/terrain/19/858523/353796.terrain b/public/terrain/19/858523/353796.terrain new file mode 100644 index 000000000..43e28428b Binary files /dev/null and b/public/terrain/19/858523/353796.terrain differ diff --git a/public/terrain/19/858523/353797.terrain b/public/terrain/19/858523/353797.terrain new file mode 100644 index 000000000..69d792f5b Binary files /dev/null and b/public/terrain/19/858523/353797.terrain differ diff --git a/public/terrain/19/858523/353798.terrain b/public/terrain/19/858523/353798.terrain new file mode 100644 index 000000000..9f939156b Binary files /dev/null and b/public/terrain/19/858523/353798.terrain differ diff --git a/public/terrain/19/858523/353799.terrain b/public/terrain/19/858523/353799.terrain new file mode 100644 index 000000000..ef5862ed4 Binary files /dev/null and b/public/terrain/19/858523/353799.terrain differ diff --git a/public/terrain/19/858523/353800.terrain b/public/terrain/19/858523/353800.terrain new file mode 100644 index 000000000..251bb593c Binary files /dev/null and b/public/terrain/19/858523/353800.terrain differ diff --git a/public/terrain/19/858523/353801.terrain b/public/terrain/19/858523/353801.terrain new file mode 100644 index 000000000..c79c5bbd1 Binary files /dev/null and b/public/terrain/19/858523/353801.terrain differ diff --git a/public/terrain/19/858523/353802.terrain b/public/terrain/19/858523/353802.terrain new file mode 100644 index 000000000..741125ba8 Binary files /dev/null and b/public/terrain/19/858523/353802.terrain differ diff --git a/public/terrain/19/858523/353803.terrain b/public/terrain/19/858523/353803.terrain new file mode 100644 index 000000000..eeafd47da Binary files /dev/null and b/public/terrain/19/858523/353803.terrain differ diff --git a/public/terrain/19/858523/353804.terrain b/public/terrain/19/858523/353804.terrain new file mode 100644 index 000000000..d3fe847a6 Binary files /dev/null and b/public/terrain/19/858523/353804.terrain differ diff --git a/public/terrain/19/858523/353805.terrain b/public/terrain/19/858523/353805.terrain new file mode 100644 index 000000000..670413293 Binary files /dev/null and b/public/terrain/19/858523/353805.terrain differ diff --git a/public/terrain/19/858523/353806.terrain b/public/terrain/19/858523/353806.terrain new file mode 100644 index 000000000..546e4715e Binary files /dev/null and b/public/terrain/19/858523/353806.terrain differ diff --git a/public/terrain/19/858523/353807.terrain b/public/terrain/19/858523/353807.terrain new file mode 100644 index 000000000..30529da7d Binary files /dev/null and b/public/terrain/19/858523/353807.terrain differ diff --git a/public/terrain/19/858523/353808.terrain b/public/terrain/19/858523/353808.terrain new file mode 100644 index 000000000..44ccde7b3 Binary files /dev/null and b/public/terrain/19/858523/353808.terrain differ diff --git a/public/terrain/19/858523/353809.terrain b/public/terrain/19/858523/353809.terrain new file mode 100644 index 000000000..af157d2ee Binary files /dev/null and b/public/terrain/19/858523/353809.terrain differ diff --git a/public/terrain/19/858523/353810.terrain b/public/terrain/19/858523/353810.terrain new file mode 100644 index 000000000..0b72cf7ad Binary files /dev/null and b/public/terrain/19/858523/353810.terrain differ diff --git a/public/terrain/19/858523/353811.terrain b/public/terrain/19/858523/353811.terrain new file mode 100644 index 000000000..76dafda5a Binary files /dev/null and b/public/terrain/19/858523/353811.terrain differ diff --git a/public/terrain/19/858523/353812.terrain b/public/terrain/19/858523/353812.terrain new file mode 100644 index 000000000..2d332383d Binary files /dev/null and b/public/terrain/19/858523/353812.terrain differ diff --git a/public/terrain/19/858523/353813.terrain b/public/terrain/19/858523/353813.terrain new file mode 100644 index 000000000..6698b481f Binary files /dev/null and b/public/terrain/19/858523/353813.terrain differ diff --git a/public/terrain/19/858523/353814.terrain b/public/terrain/19/858523/353814.terrain new file mode 100644 index 000000000..fa2662bd5 Binary files /dev/null and b/public/terrain/19/858523/353814.terrain differ diff --git a/public/terrain/19/858523/353815.terrain b/public/terrain/19/858523/353815.terrain new file mode 100644 index 000000000..7af82612a Binary files /dev/null and b/public/terrain/19/858523/353815.terrain differ diff --git a/public/terrain/19/858523/353816.terrain b/public/terrain/19/858523/353816.terrain new file mode 100644 index 000000000..69068441c Binary files /dev/null and b/public/terrain/19/858523/353816.terrain differ diff --git a/public/terrain/19/858523/353817.terrain b/public/terrain/19/858523/353817.terrain new file mode 100644 index 000000000..8de4317fe Binary files /dev/null and b/public/terrain/19/858523/353817.terrain differ diff --git a/public/terrain/19/858523/353818.terrain b/public/terrain/19/858523/353818.terrain new file mode 100644 index 000000000..2d6c2bd23 Binary files /dev/null and b/public/terrain/19/858523/353818.terrain differ diff --git a/public/terrain/19/858523/353819.terrain b/public/terrain/19/858523/353819.terrain new file mode 100644 index 000000000..1a7ab0361 Binary files /dev/null and b/public/terrain/19/858523/353819.terrain differ diff --git a/public/terrain/19/858523/353820.terrain b/public/terrain/19/858523/353820.terrain new file mode 100644 index 000000000..3d691cd7a Binary files /dev/null and b/public/terrain/19/858523/353820.terrain differ diff --git a/public/terrain/19/858523/353821.terrain b/public/terrain/19/858523/353821.terrain new file mode 100644 index 000000000..6ad874f43 Binary files /dev/null and b/public/terrain/19/858523/353821.terrain differ diff --git a/public/terrain/19/858523/353822.terrain b/public/terrain/19/858523/353822.terrain new file mode 100644 index 000000000..3924fccba Binary files /dev/null and b/public/terrain/19/858523/353822.terrain differ diff --git a/public/terrain/19/858523/353823.terrain b/public/terrain/19/858523/353823.terrain new file mode 100644 index 000000000..c982cc5df Binary files /dev/null and b/public/terrain/19/858523/353823.terrain differ diff --git a/public/terrain/19/858523/353824.terrain b/public/terrain/19/858523/353824.terrain new file mode 100644 index 000000000..effabf56a Binary files /dev/null and b/public/terrain/19/858523/353824.terrain differ diff --git a/public/terrain/19/858523/353825.terrain b/public/terrain/19/858523/353825.terrain new file mode 100644 index 000000000..59dd07883 Binary files /dev/null and b/public/terrain/19/858523/353825.terrain differ diff --git a/public/terrain/19/858523/353826.terrain b/public/terrain/19/858523/353826.terrain new file mode 100644 index 000000000..7aaacb0e1 Binary files /dev/null and b/public/terrain/19/858523/353826.terrain differ diff --git a/public/terrain/19/858523/353827.terrain b/public/terrain/19/858523/353827.terrain new file mode 100644 index 000000000..a2abc3fa6 Binary files /dev/null and b/public/terrain/19/858523/353827.terrain differ diff --git a/public/terrain/19/858523/353828.terrain b/public/terrain/19/858523/353828.terrain new file mode 100644 index 000000000..2a73daeb9 Binary files /dev/null and b/public/terrain/19/858523/353828.terrain differ diff --git a/public/terrain/19/858523/353829.terrain b/public/terrain/19/858523/353829.terrain new file mode 100644 index 000000000..5a11772a9 Binary files /dev/null and b/public/terrain/19/858523/353829.terrain differ diff --git a/public/terrain/19/858523/353830.terrain b/public/terrain/19/858523/353830.terrain new file mode 100644 index 000000000..4a6e39d81 Binary files /dev/null and b/public/terrain/19/858523/353830.terrain differ diff --git a/public/terrain/19/858523/353831.terrain b/public/terrain/19/858523/353831.terrain new file mode 100644 index 000000000..71cb3e3b6 Binary files /dev/null and b/public/terrain/19/858523/353831.terrain differ diff --git a/public/terrain/19/858523/353832.terrain b/public/terrain/19/858523/353832.terrain new file mode 100644 index 000000000..9baa31a5c Binary files /dev/null and b/public/terrain/19/858523/353832.terrain differ diff --git a/public/terrain/19/858523/353833.terrain b/public/terrain/19/858523/353833.terrain new file mode 100644 index 000000000..4d47c4af2 Binary files /dev/null and b/public/terrain/19/858523/353833.terrain differ diff --git a/public/terrain/19/858523/353834.terrain b/public/terrain/19/858523/353834.terrain new file mode 100644 index 000000000..0febad7fe Binary files /dev/null and b/public/terrain/19/858523/353834.terrain differ diff --git a/public/terrain/19/858523/353835.terrain b/public/terrain/19/858523/353835.terrain new file mode 100644 index 000000000..9348773cd Binary files /dev/null and b/public/terrain/19/858523/353835.terrain differ diff --git a/public/terrain/19/858523/353836.terrain b/public/terrain/19/858523/353836.terrain new file mode 100644 index 000000000..627d6c6bb Binary files /dev/null and b/public/terrain/19/858523/353836.terrain differ diff --git a/public/terrain/19/858523/353837.terrain b/public/terrain/19/858523/353837.terrain new file mode 100644 index 000000000..611acc7b6 Binary files /dev/null and b/public/terrain/19/858523/353837.terrain differ diff --git a/public/terrain/19/858523/353838.terrain b/public/terrain/19/858523/353838.terrain new file mode 100644 index 000000000..f8d1e2dd2 Binary files /dev/null and b/public/terrain/19/858523/353838.terrain differ diff --git a/public/terrain/19/858523/353839.terrain b/public/terrain/19/858523/353839.terrain new file mode 100644 index 000000000..4b9fedbfd Binary files /dev/null and b/public/terrain/19/858523/353839.terrain differ diff --git a/public/terrain/19/858523/353840.terrain b/public/terrain/19/858523/353840.terrain new file mode 100644 index 000000000..c15c6a537 Binary files /dev/null and b/public/terrain/19/858523/353840.terrain differ diff --git a/public/terrain/19/858523/353841.terrain b/public/terrain/19/858523/353841.terrain new file mode 100644 index 000000000..e17efbef4 Binary files /dev/null and b/public/terrain/19/858523/353841.terrain differ diff --git a/public/terrain/19/858523/353842.terrain b/public/terrain/19/858523/353842.terrain new file mode 100644 index 000000000..9a2c42c93 Binary files /dev/null and b/public/terrain/19/858523/353842.terrain differ diff --git a/public/terrain/19/858523/353843.terrain b/public/terrain/19/858523/353843.terrain new file mode 100644 index 000000000..995fd90cf Binary files /dev/null and b/public/terrain/19/858523/353843.terrain differ diff --git a/public/terrain/19/858523/353844.terrain b/public/terrain/19/858523/353844.terrain new file mode 100644 index 000000000..c1034b42d Binary files /dev/null and b/public/terrain/19/858523/353844.terrain differ diff --git a/public/terrain/19/858523/353845.terrain b/public/terrain/19/858523/353845.terrain new file mode 100644 index 000000000..476c3f9c6 Binary files /dev/null and b/public/terrain/19/858523/353845.terrain differ diff --git a/public/terrain/19/858523/353846.terrain b/public/terrain/19/858523/353846.terrain new file mode 100644 index 000000000..6e36b99b7 Binary files /dev/null and b/public/terrain/19/858523/353846.terrain differ diff --git a/public/terrain/19/858523/353847.terrain b/public/terrain/19/858523/353847.terrain new file mode 100644 index 000000000..c82d1b4c4 Binary files /dev/null and b/public/terrain/19/858523/353847.terrain differ diff --git a/public/terrain/19/858523/353848.terrain b/public/terrain/19/858523/353848.terrain new file mode 100644 index 000000000..2d03c86e4 Binary files /dev/null and b/public/terrain/19/858523/353848.terrain differ diff --git a/public/terrain/19/858523/353849.terrain b/public/terrain/19/858523/353849.terrain new file mode 100644 index 000000000..f67c549a2 Binary files /dev/null and b/public/terrain/19/858523/353849.terrain differ diff --git a/public/terrain/19/858523/353850.terrain b/public/terrain/19/858523/353850.terrain new file mode 100644 index 000000000..7852b4f32 Binary files /dev/null and b/public/terrain/19/858523/353850.terrain differ diff --git a/public/terrain/19/858523/353851.terrain b/public/terrain/19/858523/353851.terrain new file mode 100644 index 000000000..b18517d94 Binary files /dev/null and b/public/terrain/19/858523/353851.terrain differ diff --git a/public/terrain/19/858523/353852.terrain b/public/terrain/19/858523/353852.terrain new file mode 100644 index 000000000..7c51ba1d4 Binary files /dev/null and b/public/terrain/19/858523/353852.terrain differ diff --git a/public/terrain/19/858523/353853.terrain b/public/terrain/19/858523/353853.terrain new file mode 100644 index 000000000..943ad25e0 Binary files /dev/null and b/public/terrain/19/858523/353853.terrain differ diff --git a/public/terrain/19/858523/353854.terrain b/public/terrain/19/858523/353854.terrain new file mode 100644 index 000000000..ce84d84e4 Binary files /dev/null and b/public/terrain/19/858523/353854.terrain differ diff --git a/public/terrain/19/858523/353855.terrain b/public/terrain/19/858523/353855.terrain new file mode 100644 index 000000000..acd088b0e Binary files /dev/null and b/public/terrain/19/858523/353855.terrain differ diff --git a/public/terrain/19/858523/353856.terrain b/public/terrain/19/858523/353856.terrain new file mode 100644 index 000000000..454663731 Binary files /dev/null and b/public/terrain/19/858523/353856.terrain differ diff --git a/public/terrain/19/858523/353857.terrain b/public/terrain/19/858523/353857.terrain new file mode 100644 index 000000000..f10ec5579 Binary files /dev/null and b/public/terrain/19/858523/353857.terrain differ diff --git a/public/terrain/19/858523/353858.terrain b/public/terrain/19/858523/353858.terrain new file mode 100644 index 000000000..3d844e2d7 Binary files /dev/null and b/public/terrain/19/858523/353858.terrain differ diff --git a/public/terrain/19/858523/353859.terrain b/public/terrain/19/858523/353859.terrain new file mode 100644 index 000000000..e49969aae Binary files /dev/null and b/public/terrain/19/858523/353859.terrain differ diff --git a/public/terrain/19/858523/353860.terrain b/public/terrain/19/858523/353860.terrain new file mode 100644 index 000000000..6104c500b Binary files /dev/null and b/public/terrain/19/858523/353860.terrain differ diff --git a/public/terrain/19/858523/353861.terrain b/public/terrain/19/858523/353861.terrain new file mode 100644 index 000000000..9f8a2b92b Binary files /dev/null and b/public/terrain/19/858523/353861.terrain differ diff --git a/public/terrain/19/858523/353862.terrain b/public/terrain/19/858523/353862.terrain new file mode 100644 index 000000000..34973f933 Binary files /dev/null and b/public/terrain/19/858523/353862.terrain differ diff --git a/public/terrain/19/858523/353863.terrain b/public/terrain/19/858523/353863.terrain new file mode 100644 index 000000000..13e5493d0 Binary files /dev/null and b/public/terrain/19/858523/353863.terrain differ diff --git a/public/terrain/19/858523/353864.terrain b/public/terrain/19/858523/353864.terrain new file mode 100644 index 000000000..33168e715 Binary files /dev/null and b/public/terrain/19/858523/353864.terrain differ diff --git a/public/terrain/19/858523/353865.terrain b/public/terrain/19/858523/353865.terrain new file mode 100644 index 000000000..72fd030e3 Binary files /dev/null and b/public/terrain/19/858523/353865.terrain differ diff --git a/public/terrain/19/858523/353866.terrain b/public/terrain/19/858523/353866.terrain new file mode 100644 index 000000000..2177b82f3 Binary files /dev/null and b/public/terrain/19/858523/353866.terrain differ diff --git a/public/terrain/19/858523/353867.terrain b/public/terrain/19/858523/353867.terrain new file mode 100644 index 000000000..69232a6a0 Binary files /dev/null and b/public/terrain/19/858523/353867.terrain differ diff --git a/public/terrain/19/858523/353868.terrain b/public/terrain/19/858523/353868.terrain new file mode 100644 index 000000000..69f6cb2bf Binary files /dev/null and b/public/terrain/19/858523/353868.terrain differ diff --git a/public/terrain/19/858523/353869.terrain b/public/terrain/19/858523/353869.terrain new file mode 100644 index 000000000..98f2d14b8 Binary files /dev/null and b/public/terrain/19/858523/353869.terrain differ diff --git a/public/terrain/19/858523/353870.terrain b/public/terrain/19/858523/353870.terrain new file mode 100644 index 000000000..1d0c27165 Binary files /dev/null and b/public/terrain/19/858523/353870.terrain differ diff --git a/public/terrain/19/858523/353871.terrain b/public/terrain/19/858523/353871.terrain new file mode 100644 index 000000000..c537a1942 Binary files /dev/null and b/public/terrain/19/858523/353871.terrain differ diff --git a/public/terrain/19/858523/353872.terrain b/public/terrain/19/858523/353872.terrain new file mode 100644 index 000000000..007e79540 Binary files /dev/null and b/public/terrain/19/858523/353872.terrain differ diff --git a/public/terrain/19/858523/353873.terrain b/public/terrain/19/858523/353873.terrain new file mode 100644 index 000000000..26db5e490 Binary files /dev/null and b/public/terrain/19/858523/353873.terrain differ diff --git a/public/terrain/19/858523/353874.terrain b/public/terrain/19/858523/353874.terrain new file mode 100644 index 000000000..40dd575de Binary files /dev/null and b/public/terrain/19/858523/353874.terrain differ diff --git a/public/terrain/19/858523/353875.terrain b/public/terrain/19/858523/353875.terrain new file mode 100644 index 000000000..82e559238 Binary files /dev/null and b/public/terrain/19/858523/353875.terrain differ diff --git a/public/terrain/19/858523/353876.terrain b/public/terrain/19/858523/353876.terrain new file mode 100644 index 000000000..39e8adbfd Binary files /dev/null and b/public/terrain/19/858523/353876.terrain differ diff --git a/public/terrain/19/858523/353877.terrain b/public/terrain/19/858523/353877.terrain new file mode 100644 index 000000000..32031b2a7 Binary files /dev/null and b/public/terrain/19/858523/353877.terrain differ diff --git a/public/terrain/19/858523/353878.terrain b/public/terrain/19/858523/353878.terrain new file mode 100644 index 000000000..5729b6c59 Binary files /dev/null and b/public/terrain/19/858523/353878.terrain differ diff --git a/public/terrain/19/858523/353879.terrain b/public/terrain/19/858523/353879.terrain new file mode 100644 index 000000000..890fa483b Binary files /dev/null and b/public/terrain/19/858523/353879.terrain differ diff --git a/public/terrain/19/858523/353880.terrain b/public/terrain/19/858523/353880.terrain new file mode 100644 index 000000000..a5404ce83 Binary files /dev/null and b/public/terrain/19/858523/353880.terrain differ diff --git a/public/terrain/19/858523/353881.terrain b/public/terrain/19/858523/353881.terrain new file mode 100644 index 000000000..95a0e854a Binary files /dev/null and b/public/terrain/19/858523/353881.terrain differ diff --git a/public/terrain/19/858523/353882.terrain b/public/terrain/19/858523/353882.terrain new file mode 100644 index 000000000..97b0a9cee Binary files /dev/null and b/public/terrain/19/858523/353882.terrain differ diff --git a/public/terrain/19/858523/353883.terrain b/public/terrain/19/858523/353883.terrain new file mode 100644 index 000000000..1a57ceaa5 Binary files /dev/null and b/public/terrain/19/858523/353883.terrain differ diff --git a/public/terrain/19/858523/353884.terrain b/public/terrain/19/858523/353884.terrain new file mode 100644 index 000000000..6cbcfa84e Binary files /dev/null and b/public/terrain/19/858523/353884.terrain differ diff --git a/public/terrain/19/858523/353885.terrain b/public/terrain/19/858523/353885.terrain new file mode 100644 index 000000000..2b6436e79 Binary files /dev/null and b/public/terrain/19/858523/353885.terrain differ diff --git a/public/terrain/19/858523/353886.terrain b/public/terrain/19/858523/353886.terrain new file mode 100644 index 000000000..85f9218bc Binary files /dev/null and b/public/terrain/19/858523/353886.terrain differ diff --git a/public/terrain/19/858523/353887.terrain b/public/terrain/19/858523/353887.terrain new file mode 100644 index 000000000..d22c5215a Binary files /dev/null and b/public/terrain/19/858523/353887.terrain differ diff --git a/public/terrain/19/858523/353888.terrain b/public/terrain/19/858523/353888.terrain new file mode 100644 index 000000000..3999290a0 Binary files /dev/null and b/public/terrain/19/858523/353888.terrain differ diff --git a/public/terrain/19/858523/353889.terrain b/public/terrain/19/858523/353889.terrain new file mode 100644 index 000000000..d674cdb4c Binary files /dev/null and b/public/terrain/19/858523/353889.terrain differ diff --git a/public/terrain/19/858523/353890.terrain b/public/terrain/19/858523/353890.terrain new file mode 100644 index 000000000..33f019319 Binary files /dev/null and b/public/terrain/19/858523/353890.terrain differ diff --git a/public/terrain/19/858523/353891.terrain b/public/terrain/19/858523/353891.terrain new file mode 100644 index 000000000..8c8f2e508 Binary files /dev/null and b/public/terrain/19/858523/353891.terrain differ diff --git a/public/terrain/19/858523/353892.terrain b/public/terrain/19/858523/353892.terrain new file mode 100644 index 000000000..b9580caaf Binary files /dev/null and b/public/terrain/19/858523/353892.terrain differ diff --git a/public/terrain/19/858523/353893.terrain b/public/terrain/19/858523/353893.terrain new file mode 100644 index 000000000..27c0e1486 Binary files /dev/null and b/public/terrain/19/858523/353893.terrain differ diff --git a/public/terrain/19/858523/353894.terrain b/public/terrain/19/858523/353894.terrain new file mode 100644 index 000000000..418155afb Binary files /dev/null and b/public/terrain/19/858523/353894.terrain differ diff --git a/public/terrain/19/858523/353895.terrain b/public/terrain/19/858523/353895.terrain new file mode 100644 index 000000000..c481adb65 Binary files /dev/null and b/public/terrain/19/858523/353895.terrain differ diff --git a/public/terrain/19/858523/353896.terrain b/public/terrain/19/858523/353896.terrain new file mode 100644 index 000000000..2e0e074de Binary files /dev/null and b/public/terrain/19/858523/353896.terrain differ diff --git a/public/terrain/19/858523/353897.terrain b/public/terrain/19/858523/353897.terrain new file mode 100644 index 000000000..9235bc72b Binary files /dev/null and b/public/terrain/19/858523/353897.terrain differ diff --git a/public/terrain/19/858523/353898.terrain b/public/terrain/19/858523/353898.terrain new file mode 100644 index 000000000..e067d1b6d Binary files /dev/null and b/public/terrain/19/858523/353898.terrain differ diff --git a/public/terrain/19/858523/353899.terrain b/public/terrain/19/858523/353899.terrain new file mode 100644 index 000000000..f3fa554e5 Binary files /dev/null and b/public/terrain/19/858523/353899.terrain differ diff --git a/public/terrain/19/858523/353900.terrain b/public/terrain/19/858523/353900.terrain new file mode 100644 index 000000000..8e8bf2fd9 Binary files /dev/null and b/public/terrain/19/858523/353900.terrain differ diff --git a/public/terrain/19/858523/353901.terrain b/public/terrain/19/858523/353901.terrain new file mode 100644 index 000000000..4eef287b1 Binary files /dev/null and b/public/terrain/19/858523/353901.terrain differ diff --git a/public/terrain/19/858523/353902.terrain b/public/terrain/19/858523/353902.terrain new file mode 100644 index 000000000..6b043c8e1 Binary files /dev/null and b/public/terrain/19/858523/353902.terrain differ diff --git a/public/terrain/19/858523/353903.terrain b/public/terrain/19/858523/353903.terrain new file mode 100644 index 000000000..6ccb8d110 Binary files /dev/null and b/public/terrain/19/858523/353903.terrain differ diff --git a/public/terrain/19/858523/353904.terrain b/public/terrain/19/858523/353904.terrain new file mode 100644 index 000000000..a4a74b336 Binary files /dev/null and b/public/terrain/19/858523/353904.terrain differ diff --git a/public/terrain/19/858523/353905.terrain b/public/terrain/19/858523/353905.terrain new file mode 100644 index 000000000..bcfd56c35 Binary files /dev/null and b/public/terrain/19/858523/353905.terrain differ diff --git a/public/terrain/19/858523/353906.terrain b/public/terrain/19/858523/353906.terrain new file mode 100644 index 000000000..f119d0b63 Binary files /dev/null and b/public/terrain/19/858523/353906.terrain differ diff --git a/public/terrain/19/858523/353907.terrain b/public/terrain/19/858523/353907.terrain new file mode 100644 index 000000000..c351208dc Binary files /dev/null and b/public/terrain/19/858523/353907.terrain differ diff --git a/public/terrain/19/858523/353908.terrain b/public/terrain/19/858523/353908.terrain new file mode 100644 index 000000000..690acb858 Binary files /dev/null and b/public/terrain/19/858523/353908.terrain differ diff --git a/public/terrain/19/858523/353909.terrain b/public/terrain/19/858523/353909.terrain new file mode 100644 index 000000000..a433fffb1 Binary files /dev/null and b/public/terrain/19/858523/353909.terrain differ diff --git a/public/terrain/19/858523/353910.terrain b/public/terrain/19/858523/353910.terrain new file mode 100644 index 000000000..e7eaaea48 Binary files /dev/null and b/public/terrain/19/858523/353910.terrain differ diff --git a/public/terrain/19/858523/353911.terrain b/public/terrain/19/858523/353911.terrain new file mode 100644 index 000000000..10e4791be Binary files /dev/null and b/public/terrain/19/858523/353911.terrain differ diff --git a/public/terrain/19/858523/353912.terrain b/public/terrain/19/858523/353912.terrain new file mode 100644 index 000000000..a6bf8cab3 Binary files /dev/null and b/public/terrain/19/858523/353912.terrain differ diff --git a/public/terrain/19/858523/353913.terrain b/public/terrain/19/858523/353913.terrain new file mode 100644 index 000000000..73a204e55 Binary files /dev/null and b/public/terrain/19/858523/353913.terrain differ diff --git a/public/terrain/19/858523/353914.terrain b/public/terrain/19/858523/353914.terrain new file mode 100644 index 000000000..9075b9889 Binary files /dev/null and b/public/terrain/19/858523/353914.terrain differ diff --git a/public/terrain/19/858523/353915.terrain b/public/terrain/19/858523/353915.terrain new file mode 100644 index 000000000..ebf58f770 Binary files /dev/null and b/public/terrain/19/858523/353915.terrain differ diff --git a/public/terrain/19/858523/353916.terrain b/public/terrain/19/858523/353916.terrain new file mode 100644 index 000000000..e25dde04a Binary files /dev/null and b/public/terrain/19/858523/353916.terrain differ diff --git a/public/terrain/19/858523/353917.terrain b/public/terrain/19/858523/353917.terrain new file mode 100644 index 000000000..0a0995028 Binary files /dev/null and b/public/terrain/19/858523/353917.terrain differ diff --git a/public/terrain/19/858523/353918.terrain b/public/terrain/19/858523/353918.terrain new file mode 100644 index 000000000..999f6cbe0 Binary files /dev/null and b/public/terrain/19/858523/353918.terrain differ diff --git a/public/terrain/19/858523/353919.terrain b/public/terrain/19/858523/353919.terrain new file mode 100644 index 000000000..9bac10f1c Binary files /dev/null and b/public/terrain/19/858523/353919.terrain differ diff --git a/public/terrain/19/858523/353920.terrain b/public/terrain/19/858523/353920.terrain new file mode 100644 index 000000000..7bc9b37ff Binary files /dev/null and b/public/terrain/19/858523/353920.terrain differ diff --git a/public/terrain/19/858523/353921.terrain b/public/terrain/19/858523/353921.terrain new file mode 100644 index 000000000..199b6b0c9 Binary files /dev/null and b/public/terrain/19/858523/353921.terrain differ diff --git a/public/terrain/19/858523/353922.terrain b/public/terrain/19/858523/353922.terrain new file mode 100644 index 000000000..1f42aacef Binary files /dev/null and b/public/terrain/19/858523/353922.terrain differ diff --git a/public/terrain/19/858523/353923.terrain b/public/terrain/19/858523/353923.terrain new file mode 100644 index 000000000..139b2a98e Binary files /dev/null and b/public/terrain/19/858523/353923.terrain differ diff --git a/public/terrain/19/858523/353924.terrain b/public/terrain/19/858523/353924.terrain new file mode 100644 index 000000000..4da6ed94f Binary files /dev/null and b/public/terrain/19/858523/353924.terrain differ diff --git a/public/terrain/19/858523/353925.terrain b/public/terrain/19/858523/353925.terrain new file mode 100644 index 000000000..6dbb56326 Binary files /dev/null and b/public/terrain/19/858523/353925.terrain differ diff --git a/public/terrain/19/858523/353926.terrain b/public/terrain/19/858523/353926.terrain new file mode 100644 index 000000000..99593b1b7 Binary files /dev/null and b/public/terrain/19/858523/353926.terrain differ diff --git a/public/terrain/19/858523/353927.terrain b/public/terrain/19/858523/353927.terrain new file mode 100644 index 000000000..06b72ff97 Binary files /dev/null and b/public/terrain/19/858523/353927.terrain differ diff --git a/public/terrain/19/858523/353928.terrain b/public/terrain/19/858523/353928.terrain new file mode 100644 index 000000000..3f2c2d6d1 Binary files /dev/null and b/public/terrain/19/858523/353928.terrain differ diff --git a/public/terrain/19/858523/353929.terrain b/public/terrain/19/858523/353929.terrain new file mode 100644 index 000000000..7aead8955 Binary files /dev/null and b/public/terrain/19/858523/353929.terrain differ diff --git a/public/terrain/19/858523/353930.terrain b/public/terrain/19/858523/353930.terrain new file mode 100644 index 000000000..5a7cfa283 Binary files /dev/null and b/public/terrain/19/858523/353930.terrain differ diff --git a/public/terrain/19/858523/353931.terrain b/public/terrain/19/858523/353931.terrain new file mode 100644 index 000000000..999fb3928 Binary files /dev/null and b/public/terrain/19/858523/353931.terrain differ diff --git a/public/terrain/19/858523/353932.terrain b/public/terrain/19/858523/353932.terrain new file mode 100644 index 000000000..9576fe96f Binary files /dev/null and b/public/terrain/19/858523/353932.terrain differ diff --git a/public/terrain/19/858523/353933.terrain b/public/terrain/19/858523/353933.terrain new file mode 100644 index 000000000..07bbfc776 Binary files /dev/null and b/public/terrain/19/858523/353933.terrain differ diff --git a/public/terrain/19/858523/353934.terrain b/public/terrain/19/858523/353934.terrain new file mode 100644 index 000000000..381cdd158 Binary files /dev/null and b/public/terrain/19/858523/353934.terrain differ diff --git a/public/terrain/19/858523/353935.terrain b/public/terrain/19/858523/353935.terrain new file mode 100644 index 000000000..67220b61d Binary files /dev/null and b/public/terrain/19/858523/353935.terrain differ diff --git a/public/terrain/19/858523/353936.terrain b/public/terrain/19/858523/353936.terrain new file mode 100644 index 000000000..1c75a0034 Binary files /dev/null and b/public/terrain/19/858523/353936.terrain differ diff --git a/public/terrain/19/858523/353937.terrain b/public/terrain/19/858523/353937.terrain new file mode 100644 index 000000000..2c0d785e4 Binary files /dev/null and b/public/terrain/19/858523/353937.terrain differ diff --git a/public/terrain/19/858523/353938.terrain b/public/terrain/19/858523/353938.terrain new file mode 100644 index 000000000..dfcff3c1f Binary files /dev/null and b/public/terrain/19/858523/353938.terrain differ diff --git a/public/terrain/19/858523/353939.terrain b/public/terrain/19/858523/353939.terrain new file mode 100644 index 000000000..030a39467 Binary files /dev/null and b/public/terrain/19/858523/353939.terrain differ diff --git a/public/terrain/19/858523/353940.terrain b/public/terrain/19/858523/353940.terrain new file mode 100644 index 000000000..68804908b Binary files /dev/null and b/public/terrain/19/858523/353940.terrain differ diff --git a/public/terrain/19/858523/353941.terrain b/public/terrain/19/858523/353941.terrain new file mode 100644 index 000000000..388323477 Binary files /dev/null and b/public/terrain/19/858523/353941.terrain differ diff --git a/public/terrain/19/858523/353942.terrain b/public/terrain/19/858523/353942.terrain new file mode 100644 index 000000000..5e252efb1 Binary files /dev/null and b/public/terrain/19/858523/353942.terrain differ diff --git a/public/terrain/19/858523/353943.terrain b/public/terrain/19/858523/353943.terrain new file mode 100644 index 000000000..c50b0dada Binary files /dev/null and b/public/terrain/19/858523/353943.terrain differ diff --git a/public/terrain/19/858523/353944.terrain b/public/terrain/19/858523/353944.terrain new file mode 100644 index 000000000..d7a031697 Binary files /dev/null and b/public/terrain/19/858523/353944.terrain differ diff --git a/public/terrain/19/858523/353945.terrain b/public/terrain/19/858523/353945.terrain new file mode 100644 index 000000000..f7712fa4a Binary files /dev/null and b/public/terrain/19/858523/353945.terrain differ diff --git a/public/terrain/19/858523/353946.terrain b/public/terrain/19/858523/353946.terrain new file mode 100644 index 000000000..2cca0bebf Binary files /dev/null and b/public/terrain/19/858523/353946.terrain differ diff --git a/public/terrain/19/858523/353947.terrain b/public/terrain/19/858523/353947.terrain new file mode 100644 index 000000000..6e2ec6a03 Binary files /dev/null and b/public/terrain/19/858523/353947.terrain differ diff --git a/public/terrain/19/858523/353948.terrain b/public/terrain/19/858523/353948.terrain new file mode 100644 index 000000000..55594597a Binary files /dev/null and b/public/terrain/19/858523/353948.terrain differ diff --git a/public/terrain/19/858523/353949.terrain b/public/terrain/19/858523/353949.terrain new file mode 100644 index 000000000..4885ee458 Binary files /dev/null and b/public/terrain/19/858523/353949.terrain differ diff --git a/public/terrain/19/858523/353950.terrain b/public/terrain/19/858523/353950.terrain new file mode 100644 index 000000000..00729c76f Binary files /dev/null and b/public/terrain/19/858523/353950.terrain differ diff --git a/public/terrain/19/858523/353951.terrain b/public/terrain/19/858523/353951.terrain new file mode 100644 index 000000000..9be4c021c Binary files /dev/null and b/public/terrain/19/858523/353951.terrain differ diff --git a/public/terrain/19/858523/353952.terrain b/public/terrain/19/858523/353952.terrain new file mode 100644 index 000000000..b763bd2bd Binary files /dev/null and b/public/terrain/19/858523/353952.terrain differ diff --git a/public/terrain/19/858523/353953.terrain b/public/terrain/19/858523/353953.terrain new file mode 100644 index 000000000..1413f6c00 Binary files /dev/null and b/public/terrain/19/858523/353953.terrain differ diff --git a/public/terrain/19/858523/353954.terrain b/public/terrain/19/858523/353954.terrain new file mode 100644 index 000000000..d781c2247 Binary files /dev/null and b/public/terrain/19/858523/353954.terrain differ diff --git a/public/terrain/19/858523/353955.terrain b/public/terrain/19/858523/353955.terrain new file mode 100644 index 000000000..a9b11fe89 Binary files /dev/null and b/public/terrain/19/858523/353955.terrain differ diff --git a/public/terrain/19/858523/353956.terrain b/public/terrain/19/858523/353956.terrain new file mode 100644 index 000000000..884b5811a Binary files /dev/null and b/public/terrain/19/858523/353956.terrain differ diff --git a/public/terrain/19/858523/353957.terrain b/public/terrain/19/858523/353957.terrain new file mode 100644 index 000000000..fc6035ae3 Binary files /dev/null and b/public/terrain/19/858523/353957.terrain differ diff --git a/public/terrain/19/858523/353958.terrain b/public/terrain/19/858523/353958.terrain new file mode 100644 index 000000000..336ffd937 Binary files /dev/null and b/public/terrain/19/858523/353958.terrain differ diff --git a/public/terrain/19/858523/353959.terrain b/public/terrain/19/858523/353959.terrain new file mode 100644 index 000000000..9883c5c77 Binary files /dev/null and b/public/terrain/19/858523/353959.terrain differ diff --git a/public/terrain/19/858523/353960.terrain b/public/terrain/19/858523/353960.terrain new file mode 100644 index 000000000..66d53ef9a Binary files /dev/null and b/public/terrain/19/858523/353960.terrain differ diff --git a/public/terrain/19/858523/353961.terrain b/public/terrain/19/858523/353961.terrain new file mode 100644 index 000000000..3abf526c1 Binary files /dev/null and b/public/terrain/19/858523/353961.terrain differ diff --git a/public/terrain/19/858523/353962.terrain b/public/terrain/19/858523/353962.terrain new file mode 100644 index 000000000..e62e140d7 Binary files /dev/null and b/public/terrain/19/858523/353962.terrain differ diff --git a/public/terrain/19/858523/353963.terrain b/public/terrain/19/858523/353963.terrain new file mode 100644 index 000000000..9899eade1 Binary files /dev/null and b/public/terrain/19/858523/353963.terrain differ diff --git a/public/terrain/19/858523/353964.terrain b/public/terrain/19/858523/353964.terrain new file mode 100644 index 000000000..e99427029 Binary files /dev/null and b/public/terrain/19/858523/353964.terrain differ diff --git a/public/terrain/19/858523/353965.terrain b/public/terrain/19/858523/353965.terrain new file mode 100644 index 000000000..6637afde5 Binary files /dev/null and b/public/terrain/19/858523/353965.terrain differ diff --git a/public/terrain/19/858523/353966.terrain b/public/terrain/19/858523/353966.terrain new file mode 100644 index 000000000..0a106e8c8 Binary files /dev/null and b/public/terrain/19/858523/353966.terrain differ diff --git a/public/terrain/19/858523/353967.terrain b/public/terrain/19/858523/353967.terrain new file mode 100644 index 000000000..4c9663647 Binary files /dev/null and b/public/terrain/19/858523/353967.terrain differ diff --git a/public/terrain/19/858523/353968.terrain b/public/terrain/19/858523/353968.terrain new file mode 100644 index 000000000..ed5cfef87 Binary files /dev/null and b/public/terrain/19/858523/353968.terrain differ diff --git a/public/terrain/19/858523/353969.terrain b/public/terrain/19/858523/353969.terrain new file mode 100644 index 000000000..dd1e788d3 Binary files /dev/null and b/public/terrain/19/858523/353969.terrain differ diff --git a/public/terrain/19/858523/353970.terrain b/public/terrain/19/858523/353970.terrain new file mode 100644 index 000000000..a6ae65c73 Binary files /dev/null and b/public/terrain/19/858523/353970.terrain differ diff --git a/public/terrain/19/858523/353971.terrain b/public/terrain/19/858523/353971.terrain new file mode 100644 index 000000000..c7b7604e9 Binary files /dev/null and b/public/terrain/19/858523/353971.terrain differ diff --git a/public/terrain/19/858523/353972.terrain b/public/terrain/19/858523/353972.terrain new file mode 100644 index 000000000..f02739125 Binary files /dev/null and b/public/terrain/19/858523/353972.terrain differ diff --git a/public/terrain/19/858523/353973.terrain b/public/terrain/19/858523/353973.terrain new file mode 100644 index 000000000..d4e3d0825 Binary files /dev/null and b/public/terrain/19/858523/353973.terrain differ diff --git a/public/terrain/19/858523/353974.terrain b/public/terrain/19/858523/353974.terrain new file mode 100644 index 000000000..b1db2b864 Binary files /dev/null and b/public/terrain/19/858523/353974.terrain differ diff --git a/public/terrain/19/858523/353975.terrain b/public/terrain/19/858523/353975.terrain new file mode 100644 index 000000000..37a3c3f89 Binary files /dev/null and b/public/terrain/19/858523/353975.terrain differ diff --git a/public/terrain/19/858523/353976.terrain b/public/terrain/19/858523/353976.terrain new file mode 100644 index 000000000..2f7d913ae Binary files /dev/null and b/public/terrain/19/858523/353976.terrain differ diff --git a/public/terrain/19/858523/353977.terrain b/public/terrain/19/858523/353977.terrain new file mode 100644 index 000000000..942670fab Binary files /dev/null and b/public/terrain/19/858523/353977.terrain differ diff --git a/public/terrain/19/858523/353978.terrain b/public/terrain/19/858523/353978.terrain new file mode 100644 index 000000000..01a659e7c Binary files /dev/null and b/public/terrain/19/858523/353978.terrain differ diff --git a/public/terrain/19/858523/353979.terrain b/public/terrain/19/858523/353979.terrain new file mode 100644 index 000000000..86d445261 Binary files /dev/null and b/public/terrain/19/858523/353979.terrain differ diff --git a/public/terrain/19/858523/353980.terrain b/public/terrain/19/858523/353980.terrain new file mode 100644 index 000000000..d9137a153 Binary files /dev/null and b/public/terrain/19/858523/353980.terrain differ diff --git a/public/terrain/19/858523/353981.terrain b/public/terrain/19/858523/353981.terrain new file mode 100644 index 000000000..dc3de40d0 Binary files /dev/null and b/public/terrain/19/858523/353981.terrain differ diff --git a/public/terrain/19/858523/353982.terrain b/public/terrain/19/858523/353982.terrain new file mode 100644 index 000000000..4f86d4c31 Binary files /dev/null and b/public/terrain/19/858523/353982.terrain differ diff --git a/public/terrain/19/858523/353983.terrain b/public/terrain/19/858523/353983.terrain new file mode 100644 index 000000000..6ec42fad7 Binary files /dev/null and b/public/terrain/19/858523/353983.terrain differ diff --git a/public/terrain/19/858523/353984.terrain b/public/terrain/19/858523/353984.terrain new file mode 100644 index 000000000..d6e8273c2 Binary files /dev/null and b/public/terrain/19/858523/353984.terrain differ diff --git a/public/terrain/19/858523/353985.terrain b/public/terrain/19/858523/353985.terrain new file mode 100644 index 000000000..b0847bc10 Binary files /dev/null and b/public/terrain/19/858523/353985.terrain differ diff --git a/public/terrain/19/858523/353986.terrain b/public/terrain/19/858523/353986.terrain new file mode 100644 index 000000000..bdda09fef Binary files /dev/null and b/public/terrain/19/858523/353986.terrain differ diff --git a/public/terrain/19/858523/353987.terrain b/public/terrain/19/858523/353987.terrain new file mode 100644 index 000000000..ddb70bb9f Binary files /dev/null and b/public/terrain/19/858523/353987.terrain differ diff --git a/public/terrain/19/858523/353988.terrain b/public/terrain/19/858523/353988.terrain new file mode 100644 index 000000000..cd4c3d4b6 Binary files /dev/null and b/public/terrain/19/858523/353988.terrain differ diff --git a/public/terrain/19/858523/353989.terrain b/public/terrain/19/858523/353989.terrain new file mode 100644 index 000000000..28daef7b7 Binary files /dev/null and b/public/terrain/19/858523/353989.terrain differ diff --git a/public/terrain/19/858523/353990.terrain b/public/terrain/19/858523/353990.terrain new file mode 100644 index 000000000..e7ffc81af Binary files /dev/null and b/public/terrain/19/858523/353990.terrain differ diff --git a/public/terrain/19/858523/353991.terrain b/public/terrain/19/858523/353991.terrain new file mode 100644 index 000000000..477137974 Binary files /dev/null and b/public/terrain/19/858523/353991.terrain differ diff --git a/public/terrain/19/858523/353992.terrain b/public/terrain/19/858523/353992.terrain new file mode 100644 index 000000000..5c77b73c0 Binary files /dev/null and b/public/terrain/19/858523/353992.terrain differ diff --git a/public/terrain/19/858523/353993.terrain b/public/terrain/19/858523/353993.terrain new file mode 100644 index 000000000..c2141b811 Binary files /dev/null and b/public/terrain/19/858523/353993.terrain differ diff --git a/public/terrain/19/858523/353994.terrain b/public/terrain/19/858523/353994.terrain new file mode 100644 index 000000000..674c1c4d2 Binary files /dev/null and b/public/terrain/19/858523/353994.terrain differ diff --git a/public/terrain/19/858523/353995.terrain b/public/terrain/19/858523/353995.terrain new file mode 100644 index 000000000..800fdb817 Binary files /dev/null and b/public/terrain/19/858523/353995.terrain differ diff --git a/public/terrain/19/858523/353996.terrain b/public/terrain/19/858523/353996.terrain new file mode 100644 index 000000000..d309c31ee Binary files /dev/null and b/public/terrain/19/858523/353996.terrain differ diff --git a/public/terrain/19/858523/353997.terrain b/public/terrain/19/858523/353997.terrain new file mode 100644 index 000000000..6185af1bb Binary files /dev/null and b/public/terrain/19/858523/353997.terrain differ diff --git a/public/terrain/19/858523/353998.terrain b/public/terrain/19/858523/353998.terrain new file mode 100644 index 000000000..cfc8c3344 Binary files /dev/null and b/public/terrain/19/858523/353998.terrain differ diff --git a/public/terrain/19/858523/353999.terrain b/public/terrain/19/858523/353999.terrain new file mode 100644 index 000000000..3ed9c159b Binary files /dev/null and b/public/terrain/19/858523/353999.terrain differ diff --git a/public/terrain/19/858523/354000.terrain b/public/terrain/19/858523/354000.terrain new file mode 100644 index 000000000..5e1c60d8e Binary files /dev/null and b/public/terrain/19/858523/354000.terrain differ diff --git a/public/terrain/19/858523/354001.terrain b/public/terrain/19/858523/354001.terrain new file mode 100644 index 000000000..18f5e3434 Binary files /dev/null and b/public/terrain/19/858523/354001.terrain differ diff --git a/public/terrain/19/858523/354002.terrain b/public/terrain/19/858523/354002.terrain new file mode 100644 index 000000000..643c17df2 Binary files /dev/null and b/public/terrain/19/858523/354002.terrain differ diff --git a/public/terrain/19/858523/354003.terrain b/public/terrain/19/858523/354003.terrain new file mode 100644 index 000000000..6f2851c71 Binary files /dev/null and b/public/terrain/19/858523/354003.terrain differ diff --git a/public/terrain/19/858523/354004.terrain b/public/terrain/19/858523/354004.terrain new file mode 100644 index 000000000..665d02698 Binary files /dev/null and b/public/terrain/19/858523/354004.terrain differ diff --git a/public/terrain/19/858523/354005.terrain b/public/terrain/19/858523/354005.terrain new file mode 100644 index 000000000..6bd38d4a1 Binary files /dev/null and b/public/terrain/19/858523/354005.terrain differ diff --git a/public/terrain/19/858523/354006.terrain b/public/terrain/19/858523/354006.terrain new file mode 100644 index 000000000..422de0c66 Binary files /dev/null and b/public/terrain/19/858523/354006.terrain differ diff --git a/public/terrain/19/858523/354007.terrain b/public/terrain/19/858523/354007.terrain new file mode 100644 index 000000000..20d376e7b Binary files /dev/null and b/public/terrain/19/858523/354007.terrain differ diff --git a/public/terrain/19/858523/354008.terrain b/public/terrain/19/858523/354008.terrain new file mode 100644 index 000000000..8e3aa90e4 Binary files /dev/null and b/public/terrain/19/858523/354008.terrain differ diff --git a/public/terrain/19/858523/354009.terrain b/public/terrain/19/858523/354009.terrain new file mode 100644 index 000000000..878a087c1 Binary files /dev/null and b/public/terrain/19/858523/354009.terrain differ diff --git a/public/terrain/19/858523/354010.terrain b/public/terrain/19/858523/354010.terrain new file mode 100644 index 000000000..d15bae7c1 Binary files /dev/null and b/public/terrain/19/858523/354010.terrain differ diff --git a/public/terrain/19/858523/354011.terrain b/public/terrain/19/858523/354011.terrain new file mode 100644 index 000000000..8aa988c7b Binary files /dev/null and b/public/terrain/19/858523/354011.terrain differ diff --git a/public/terrain/19/858523/354012.terrain b/public/terrain/19/858523/354012.terrain new file mode 100644 index 000000000..b39022df7 Binary files /dev/null and b/public/terrain/19/858523/354012.terrain differ diff --git a/public/terrain/19/858523/354013.terrain b/public/terrain/19/858523/354013.terrain new file mode 100644 index 000000000..b7e7a3d79 Binary files /dev/null and b/public/terrain/19/858523/354013.terrain differ diff --git a/public/terrain/19/858523/354014.terrain b/public/terrain/19/858523/354014.terrain new file mode 100644 index 000000000..3d3dde495 Binary files /dev/null and b/public/terrain/19/858523/354014.terrain differ diff --git a/public/terrain/19/858523/354015.terrain b/public/terrain/19/858523/354015.terrain new file mode 100644 index 000000000..d31b33d02 Binary files /dev/null and b/public/terrain/19/858523/354015.terrain differ diff --git a/public/terrain/19/858523/354016.terrain b/public/terrain/19/858523/354016.terrain new file mode 100644 index 000000000..ef9daeaf2 Binary files /dev/null and b/public/terrain/19/858523/354016.terrain differ diff --git a/public/terrain/19/858523/354017.terrain b/public/terrain/19/858523/354017.terrain new file mode 100644 index 000000000..769351870 Binary files /dev/null and b/public/terrain/19/858523/354017.terrain differ diff --git a/public/terrain/19/858523/354018.terrain b/public/terrain/19/858523/354018.terrain new file mode 100644 index 000000000..2fa57f53c Binary files /dev/null and b/public/terrain/19/858523/354018.terrain differ diff --git a/public/terrain/19/858523/354019.terrain b/public/terrain/19/858523/354019.terrain new file mode 100644 index 000000000..6bf43042f Binary files /dev/null and b/public/terrain/19/858523/354019.terrain differ diff --git a/public/terrain/19/858523/354020.terrain b/public/terrain/19/858523/354020.terrain new file mode 100644 index 000000000..980f93445 Binary files /dev/null and b/public/terrain/19/858523/354020.terrain differ diff --git a/public/terrain/19/858523/354021.terrain b/public/terrain/19/858523/354021.terrain new file mode 100644 index 000000000..f7b3fc8a9 Binary files /dev/null and b/public/terrain/19/858523/354021.terrain differ diff --git a/public/terrain/19/858523/354022.terrain b/public/terrain/19/858523/354022.terrain new file mode 100644 index 000000000..89e27fb41 Binary files /dev/null and b/public/terrain/19/858523/354022.terrain differ diff --git a/public/terrain/19/858523/354023.terrain b/public/terrain/19/858523/354023.terrain new file mode 100644 index 000000000..cd4beb986 Binary files /dev/null and b/public/terrain/19/858523/354023.terrain differ diff --git a/public/terrain/19/858523/354024.terrain b/public/terrain/19/858523/354024.terrain new file mode 100644 index 000000000..5a555122c Binary files /dev/null and b/public/terrain/19/858523/354024.terrain differ diff --git a/public/terrain/19/858523/354025.terrain b/public/terrain/19/858523/354025.terrain new file mode 100644 index 000000000..7fbb4be9d Binary files /dev/null and b/public/terrain/19/858523/354025.terrain differ diff --git a/public/terrain/19/858523/354026.terrain b/public/terrain/19/858523/354026.terrain new file mode 100644 index 000000000..4c0560259 Binary files /dev/null and b/public/terrain/19/858523/354026.terrain differ diff --git a/public/terrain/19/858523/354027.terrain b/public/terrain/19/858523/354027.terrain new file mode 100644 index 000000000..eefa0ac87 Binary files /dev/null and b/public/terrain/19/858523/354027.terrain differ diff --git a/public/terrain/19/858523/354028.terrain b/public/terrain/19/858523/354028.terrain new file mode 100644 index 000000000..a6609f6e7 Binary files /dev/null and b/public/terrain/19/858523/354028.terrain differ diff --git a/public/terrain/19/858523/354029.terrain b/public/terrain/19/858523/354029.terrain new file mode 100644 index 000000000..03134e31a Binary files /dev/null and b/public/terrain/19/858523/354029.terrain differ diff --git a/public/terrain/19/858523/354030.terrain b/public/terrain/19/858523/354030.terrain new file mode 100644 index 000000000..af5313561 Binary files /dev/null and b/public/terrain/19/858523/354030.terrain differ diff --git a/public/terrain/19/858523/354031.terrain b/public/terrain/19/858523/354031.terrain new file mode 100644 index 000000000..e80398cb9 Binary files /dev/null and b/public/terrain/19/858523/354031.terrain differ diff --git a/public/terrain/19/858523/354032.terrain b/public/terrain/19/858523/354032.terrain new file mode 100644 index 000000000..3523c288e Binary files /dev/null and b/public/terrain/19/858523/354032.terrain differ diff --git a/public/terrain/19/858523/354033.terrain b/public/terrain/19/858523/354033.terrain new file mode 100644 index 000000000..c922cf9cb Binary files /dev/null and b/public/terrain/19/858523/354033.terrain differ diff --git a/public/terrain/19/858523/354034.terrain b/public/terrain/19/858523/354034.terrain new file mode 100644 index 000000000..7b3d959da Binary files /dev/null and b/public/terrain/19/858523/354034.terrain differ diff --git a/public/terrain/19/858523/354035.terrain b/public/terrain/19/858523/354035.terrain new file mode 100644 index 000000000..d50f6b70b Binary files /dev/null and b/public/terrain/19/858523/354035.terrain differ diff --git a/public/terrain/19/858523/354036.terrain b/public/terrain/19/858523/354036.terrain new file mode 100644 index 000000000..6c38336cf Binary files /dev/null and b/public/terrain/19/858523/354036.terrain differ diff --git a/public/terrain/19/858523/354037.terrain b/public/terrain/19/858523/354037.terrain new file mode 100644 index 000000000..bb16a5f14 Binary files /dev/null and b/public/terrain/19/858523/354037.terrain differ diff --git a/public/terrain/19/858523/354038.terrain b/public/terrain/19/858523/354038.terrain new file mode 100644 index 000000000..9a8f88539 Binary files /dev/null and b/public/terrain/19/858523/354038.terrain differ diff --git a/public/terrain/19/858523/354039.terrain b/public/terrain/19/858523/354039.terrain new file mode 100644 index 000000000..e620c5db4 Binary files /dev/null and b/public/terrain/19/858523/354039.terrain differ diff --git a/public/terrain/19/858523/354040.terrain b/public/terrain/19/858523/354040.terrain new file mode 100644 index 000000000..97e977421 Binary files /dev/null and b/public/terrain/19/858523/354040.terrain differ diff --git a/public/terrain/19/858523/354041.terrain b/public/terrain/19/858523/354041.terrain new file mode 100644 index 000000000..3539393ea Binary files /dev/null and b/public/terrain/19/858523/354041.terrain differ diff --git a/public/terrain/19/858523/354042.terrain b/public/terrain/19/858523/354042.terrain new file mode 100644 index 000000000..897201a99 Binary files /dev/null and b/public/terrain/19/858523/354042.terrain differ diff --git a/public/terrain/19/858523/354043.terrain b/public/terrain/19/858523/354043.terrain new file mode 100644 index 000000000..037982e59 Binary files /dev/null and b/public/terrain/19/858523/354043.terrain differ diff --git a/public/terrain/19/858523/354044.terrain b/public/terrain/19/858523/354044.terrain new file mode 100644 index 000000000..5f244aa06 Binary files /dev/null and b/public/terrain/19/858523/354044.terrain differ diff --git a/public/terrain/19/858523/354045.terrain b/public/terrain/19/858523/354045.terrain new file mode 100644 index 000000000..a806d477e Binary files /dev/null and b/public/terrain/19/858523/354045.terrain differ diff --git a/public/terrain/19/858523/354046.terrain b/public/terrain/19/858523/354046.terrain new file mode 100644 index 000000000..deeeafc68 Binary files /dev/null and b/public/terrain/19/858523/354046.terrain differ diff --git a/public/terrain/19/858523/354047.terrain b/public/terrain/19/858523/354047.terrain new file mode 100644 index 000000000..256cfa3ee Binary files /dev/null and b/public/terrain/19/858523/354047.terrain differ diff --git a/public/terrain/19/858523/354048.terrain b/public/terrain/19/858523/354048.terrain new file mode 100644 index 000000000..154954104 Binary files /dev/null and b/public/terrain/19/858523/354048.terrain differ diff --git a/public/terrain/19/858523/354049.terrain b/public/terrain/19/858523/354049.terrain new file mode 100644 index 000000000..879c007bb Binary files /dev/null and b/public/terrain/19/858523/354049.terrain differ diff --git a/public/terrain/19/858523/354050.terrain b/public/terrain/19/858523/354050.terrain new file mode 100644 index 000000000..5c2c5d561 Binary files /dev/null and b/public/terrain/19/858523/354050.terrain differ diff --git a/public/terrain/19/858523/354051.terrain b/public/terrain/19/858523/354051.terrain new file mode 100644 index 000000000..c9c79f732 Binary files /dev/null and b/public/terrain/19/858523/354051.terrain differ diff --git a/public/terrain/19/858523/354052.terrain b/public/terrain/19/858523/354052.terrain new file mode 100644 index 000000000..8af4bfc6f Binary files /dev/null and b/public/terrain/19/858523/354052.terrain differ diff --git a/public/terrain/19/858523/354053.terrain b/public/terrain/19/858523/354053.terrain new file mode 100644 index 000000000..6912a847a Binary files /dev/null and b/public/terrain/19/858523/354053.terrain differ diff --git a/public/terrain/19/858523/354054.terrain b/public/terrain/19/858523/354054.terrain new file mode 100644 index 000000000..60cdd9d06 Binary files /dev/null and b/public/terrain/19/858523/354054.terrain differ diff --git a/public/terrain/19/858523/354055.terrain b/public/terrain/19/858523/354055.terrain new file mode 100644 index 000000000..27de63fe0 Binary files /dev/null and b/public/terrain/19/858523/354055.terrain differ diff --git a/public/terrain/19/858523/354056.terrain b/public/terrain/19/858523/354056.terrain new file mode 100644 index 000000000..9ef62a6c1 Binary files /dev/null and b/public/terrain/19/858523/354056.terrain differ diff --git a/public/terrain/19/858523/354057.terrain b/public/terrain/19/858523/354057.terrain new file mode 100644 index 000000000..d535c8211 Binary files /dev/null and b/public/terrain/19/858523/354057.terrain differ diff --git a/public/terrain/19/858523/354058.terrain b/public/terrain/19/858523/354058.terrain new file mode 100644 index 000000000..0c625d887 Binary files /dev/null and b/public/terrain/19/858523/354058.terrain differ diff --git a/public/terrain/19/858523/354059.terrain b/public/terrain/19/858523/354059.terrain new file mode 100644 index 000000000..23cd1adba Binary files /dev/null and b/public/terrain/19/858523/354059.terrain differ diff --git a/public/terrain/19/858524/353743.terrain b/public/terrain/19/858524/353743.terrain new file mode 100644 index 000000000..53903fa66 Binary files /dev/null and b/public/terrain/19/858524/353743.terrain differ diff --git a/public/terrain/19/858524/353744.terrain b/public/terrain/19/858524/353744.terrain new file mode 100644 index 000000000..cd353733a Binary files /dev/null and b/public/terrain/19/858524/353744.terrain differ diff --git a/public/terrain/19/858524/353745.terrain b/public/terrain/19/858524/353745.terrain new file mode 100644 index 000000000..ebc81b8fd Binary files /dev/null and b/public/terrain/19/858524/353745.terrain differ diff --git a/public/terrain/19/858524/353746.terrain b/public/terrain/19/858524/353746.terrain new file mode 100644 index 000000000..18bb5adaf Binary files /dev/null and b/public/terrain/19/858524/353746.terrain differ diff --git a/public/terrain/19/858524/353747.terrain b/public/terrain/19/858524/353747.terrain new file mode 100644 index 000000000..6ff75b571 Binary files /dev/null and b/public/terrain/19/858524/353747.terrain differ diff --git a/public/terrain/19/858524/353748.terrain b/public/terrain/19/858524/353748.terrain new file mode 100644 index 000000000..065be70cd Binary files /dev/null and b/public/terrain/19/858524/353748.terrain differ diff --git a/public/terrain/19/858524/353749.terrain b/public/terrain/19/858524/353749.terrain new file mode 100644 index 000000000..e2a107806 Binary files /dev/null and b/public/terrain/19/858524/353749.terrain differ diff --git a/public/terrain/19/858524/353750.terrain b/public/terrain/19/858524/353750.terrain new file mode 100644 index 000000000..50c770108 Binary files /dev/null and b/public/terrain/19/858524/353750.terrain differ diff --git a/public/terrain/19/858524/353751.terrain b/public/terrain/19/858524/353751.terrain new file mode 100644 index 000000000..3070a1247 Binary files /dev/null and b/public/terrain/19/858524/353751.terrain differ diff --git a/public/terrain/19/858524/353752.terrain b/public/terrain/19/858524/353752.terrain new file mode 100644 index 000000000..977840c80 Binary files /dev/null and b/public/terrain/19/858524/353752.terrain differ diff --git a/public/terrain/19/858524/353753.terrain b/public/terrain/19/858524/353753.terrain new file mode 100644 index 000000000..24a8ebaac Binary files /dev/null and b/public/terrain/19/858524/353753.terrain differ diff --git a/public/terrain/19/858524/353754.terrain b/public/terrain/19/858524/353754.terrain new file mode 100644 index 000000000..5efbfa93c Binary files /dev/null and b/public/terrain/19/858524/353754.terrain differ diff --git a/public/terrain/19/858524/353755.terrain b/public/terrain/19/858524/353755.terrain new file mode 100644 index 000000000..509e47171 Binary files /dev/null and b/public/terrain/19/858524/353755.terrain differ diff --git a/public/terrain/19/858524/353756.terrain b/public/terrain/19/858524/353756.terrain new file mode 100644 index 000000000..cf21abdcc Binary files /dev/null and b/public/terrain/19/858524/353756.terrain differ diff --git a/public/terrain/19/858524/353757.terrain b/public/terrain/19/858524/353757.terrain new file mode 100644 index 000000000..01af8c6ba Binary files /dev/null and b/public/terrain/19/858524/353757.terrain differ diff --git a/public/terrain/19/858524/353758.terrain b/public/terrain/19/858524/353758.terrain new file mode 100644 index 000000000..47a749420 Binary files /dev/null and b/public/terrain/19/858524/353758.terrain differ diff --git a/public/terrain/19/858524/353759.terrain b/public/terrain/19/858524/353759.terrain new file mode 100644 index 000000000..2ca378623 Binary files /dev/null and b/public/terrain/19/858524/353759.terrain differ diff --git a/public/terrain/19/858524/353760.terrain b/public/terrain/19/858524/353760.terrain new file mode 100644 index 000000000..260f21588 Binary files /dev/null and b/public/terrain/19/858524/353760.terrain differ diff --git a/public/terrain/19/858524/353761.terrain b/public/terrain/19/858524/353761.terrain new file mode 100644 index 000000000..c19cf56ba Binary files /dev/null and b/public/terrain/19/858524/353761.terrain differ diff --git a/public/terrain/19/858524/353762.terrain b/public/terrain/19/858524/353762.terrain new file mode 100644 index 000000000..f0109090c Binary files /dev/null and b/public/terrain/19/858524/353762.terrain differ diff --git a/public/terrain/19/858524/353763.terrain b/public/terrain/19/858524/353763.terrain new file mode 100644 index 000000000..bb20320e6 Binary files /dev/null and b/public/terrain/19/858524/353763.terrain differ diff --git a/public/terrain/19/858524/353764.terrain b/public/terrain/19/858524/353764.terrain new file mode 100644 index 000000000..ceabd247a Binary files /dev/null and b/public/terrain/19/858524/353764.terrain differ diff --git a/public/terrain/19/858524/353765.terrain b/public/terrain/19/858524/353765.terrain new file mode 100644 index 000000000..39473a027 Binary files /dev/null and b/public/terrain/19/858524/353765.terrain differ diff --git a/public/terrain/19/858524/353766.terrain b/public/terrain/19/858524/353766.terrain new file mode 100644 index 000000000..2454ffb8b Binary files /dev/null and b/public/terrain/19/858524/353766.terrain differ diff --git a/public/terrain/19/858524/353767.terrain b/public/terrain/19/858524/353767.terrain new file mode 100644 index 000000000..aec3b73a0 Binary files /dev/null and b/public/terrain/19/858524/353767.terrain differ diff --git a/public/terrain/19/858524/353768.terrain b/public/terrain/19/858524/353768.terrain new file mode 100644 index 000000000..7819c0d9d Binary files /dev/null and b/public/terrain/19/858524/353768.terrain differ diff --git a/public/terrain/19/858524/353769.terrain b/public/terrain/19/858524/353769.terrain new file mode 100644 index 000000000..f859a639f Binary files /dev/null and b/public/terrain/19/858524/353769.terrain differ diff --git a/public/terrain/19/858524/353770.terrain b/public/terrain/19/858524/353770.terrain new file mode 100644 index 000000000..8c58bf020 Binary files /dev/null and b/public/terrain/19/858524/353770.terrain differ diff --git a/public/terrain/19/858524/353771.terrain b/public/terrain/19/858524/353771.terrain new file mode 100644 index 000000000..5f6fb9c04 Binary files /dev/null and b/public/terrain/19/858524/353771.terrain differ diff --git a/public/terrain/19/858524/353772.terrain b/public/terrain/19/858524/353772.terrain new file mode 100644 index 000000000..4fad9c7a3 Binary files /dev/null and b/public/terrain/19/858524/353772.terrain differ diff --git a/public/terrain/19/858524/353773.terrain b/public/terrain/19/858524/353773.terrain new file mode 100644 index 000000000..4d2e37ddf Binary files /dev/null and b/public/terrain/19/858524/353773.terrain differ diff --git a/public/terrain/19/858524/353774.terrain b/public/terrain/19/858524/353774.terrain new file mode 100644 index 000000000..0e5f9b874 Binary files /dev/null and b/public/terrain/19/858524/353774.terrain differ diff --git a/public/terrain/19/858524/353775.terrain b/public/terrain/19/858524/353775.terrain new file mode 100644 index 000000000..04e7b4974 Binary files /dev/null and b/public/terrain/19/858524/353775.terrain differ diff --git a/public/terrain/19/858524/353776.terrain b/public/terrain/19/858524/353776.terrain new file mode 100644 index 000000000..c1ac58b34 Binary files /dev/null and b/public/terrain/19/858524/353776.terrain differ diff --git a/public/terrain/19/858524/353777.terrain b/public/terrain/19/858524/353777.terrain new file mode 100644 index 000000000..f35d8ec9b Binary files /dev/null and b/public/terrain/19/858524/353777.terrain differ diff --git a/public/terrain/19/858524/353778.terrain b/public/terrain/19/858524/353778.terrain new file mode 100644 index 000000000..a3b1e2c9c Binary files /dev/null and b/public/terrain/19/858524/353778.terrain differ diff --git a/public/terrain/19/858524/353779.terrain b/public/terrain/19/858524/353779.terrain new file mode 100644 index 000000000..88a6410d7 Binary files /dev/null and b/public/terrain/19/858524/353779.terrain differ diff --git a/public/terrain/19/858524/353780.terrain b/public/terrain/19/858524/353780.terrain new file mode 100644 index 000000000..1ba57f2d4 Binary files /dev/null and b/public/terrain/19/858524/353780.terrain differ diff --git a/public/terrain/19/858524/353781.terrain b/public/terrain/19/858524/353781.terrain new file mode 100644 index 000000000..12634a856 Binary files /dev/null and b/public/terrain/19/858524/353781.terrain differ diff --git a/public/terrain/19/858524/353782.terrain b/public/terrain/19/858524/353782.terrain new file mode 100644 index 000000000..0c8275daf Binary files /dev/null and b/public/terrain/19/858524/353782.terrain differ diff --git a/public/terrain/19/858524/353783.terrain b/public/terrain/19/858524/353783.terrain new file mode 100644 index 000000000..8d04281e7 Binary files /dev/null and b/public/terrain/19/858524/353783.terrain differ diff --git a/public/terrain/19/858524/353784.terrain b/public/terrain/19/858524/353784.terrain new file mode 100644 index 000000000..d189b6489 Binary files /dev/null and b/public/terrain/19/858524/353784.terrain differ diff --git a/public/terrain/19/858524/353785.terrain b/public/terrain/19/858524/353785.terrain new file mode 100644 index 000000000..4287734c9 Binary files /dev/null and b/public/terrain/19/858524/353785.terrain differ diff --git a/public/terrain/19/858524/353786.terrain b/public/terrain/19/858524/353786.terrain new file mode 100644 index 000000000..9ca7a5718 Binary files /dev/null and b/public/terrain/19/858524/353786.terrain differ diff --git a/public/terrain/19/858524/353787.terrain b/public/terrain/19/858524/353787.terrain new file mode 100644 index 000000000..267f4994b Binary files /dev/null and b/public/terrain/19/858524/353787.terrain differ diff --git a/public/terrain/19/858524/353788.terrain b/public/terrain/19/858524/353788.terrain new file mode 100644 index 000000000..025f47e62 Binary files /dev/null and b/public/terrain/19/858524/353788.terrain differ diff --git a/public/terrain/19/858524/353789.terrain b/public/terrain/19/858524/353789.terrain new file mode 100644 index 000000000..789c4aa70 Binary files /dev/null and b/public/terrain/19/858524/353789.terrain differ diff --git a/public/terrain/19/858524/353790.terrain b/public/terrain/19/858524/353790.terrain new file mode 100644 index 000000000..9da457a60 Binary files /dev/null and b/public/terrain/19/858524/353790.terrain differ diff --git a/public/terrain/19/858524/353791.terrain b/public/terrain/19/858524/353791.terrain new file mode 100644 index 000000000..a56fee624 Binary files /dev/null and b/public/terrain/19/858524/353791.terrain differ diff --git a/public/terrain/19/858524/353792.terrain b/public/terrain/19/858524/353792.terrain new file mode 100644 index 000000000..b37e6866b Binary files /dev/null and b/public/terrain/19/858524/353792.terrain differ diff --git a/public/terrain/19/858524/353793.terrain b/public/terrain/19/858524/353793.terrain new file mode 100644 index 000000000..09afeab0c Binary files /dev/null and b/public/terrain/19/858524/353793.terrain differ diff --git a/public/terrain/19/858524/353794.terrain b/public/terrain/19/858524/353794.terrain new file mode 100644 index 000000000..eabbfa496 Binary files /dev/null and b/public/terrain/19/858524/353794.terrain differ diff --git a/public/terrain/19/858524/353795.terrain b/public/terrain/19/858524/353795.terrain new file mode 100644 index 000000000..c77b9e127 Binary files /dev/null and b/public/terrain/19/858524/353795.terrain differ diff --git a/public/terrain/19/858524/353796.terrain b/public/terrain/19/858524/353796.terrain new file mode 100644 index 000000000..2a1030369 Binary files /dev/null and b/public/terrain/19/858524/353796.terrain differ diff --git a/public/terrain/19/858524/353797.terrain b/public/terrain/19/858524/353797.terrain new file mode 100644 index 000000000..824a9b2f5 Binary files /dev/null and b/public/terrain/19/858524/353797.terrain differ diff --git a/public/terrain/19/858524/353798.terrain b/public/terrain/19/858524/353798.terrain new file mode 100644 index 000000000..0383304e3 Binary files /dev/null and b/public/terrain/19/858524/353798.terrain differ diff --git a/public/terrain/19/858524/353799.terrain b/public/terrain/19/858524/353799.terrain new file mode 100644 index 000000000..a82bf4f47 Binary files /dev/null and b/public/terrain/19/858524/353799.terrain differ diff --git a/public/terrain/19/858524/353800.terrain b/public/terrain/19/858524/353800.terrain new file mode 100644 index 000000000..cfd0d5c1a Binary files /dev/null and b/public/terrain/19/858524/353800.terrain differ diff --git a/public/terrain/19/858524/353801.terrain b/public/terrain/19/858524/353801.terrain new file mode 100644 index 000000000..b05b0fa6b Binary files /dev/null and b/public/terrain/19/858524/353801.terrain differ diff --git a/public/terrain/19/858524/353802.terrain b/public/terrain/19/858524/353802.terrain new file mode 100644 index 000000000..2a8ee9f9e Binary files /dev/null and b/public/terrain/19/858524/353802.terrain differ diff --git a/public/terrain/19/858524/353803.terrain b/public/terrain/19/858524/353803.terrain new file mode 100644 index 000000000..d6a6e4599 Binary files /dev/null and b/public/terrain/19/858524/353803.terrain differ diff --git a/public/terrain/19/858524/353804.terrain b/public/terrain/19/858524/353804.terrain new file mode 100644 index 000000000..4782895fc Binary files /dev/null and b/public/terrain/19/858524/353804.terrain differ diff --git a/public/terrain/19/858524/353805.terrain b/public/terrain/19/858524/353805.terrain new file mode 100644 index 000000000..56c49e312 Binary files /dev/null and b/public/terrain/19/858524/353805.terrain differ diff --git a/public/terrain/19/858524/353806.terrain b/public/terrain/19/858524/353806.terrain new file mode 100644 index 000000000..2ec60f0cd Binary files /dev/null and b/public/terrain/19/858524/353806.terrain differ diff --git a/public/terrain/19/858524/353807.terrain b/public/terrain/19/858524/353807.terrain new file mode 100644 index 000000000..322bd408a Binary files /dev/null and b/public/terrain/19/858524/353807.terrain differ diff --git a/public/terrain/19/858524/353808.terrain b/public/terrain/19/858524/353808.terrain new file mode 100644 index 000000000..2d615a93d Binary files /dev/null and b/public/terrain/19/858524/353808.terrain differ diff --git a/public/terrain/19/858524/353809.terrain b/public/terrain/19/858524/353809.terrain new file mode 100644 index 000000000..a0a978957 Binary files /dev/null and b/public/terrain/19/858524/353809.terrain differ diff --git a/public/terrain/19/858524/353810.terrain b/public/terrain/19/858524/353810.terrain new file mode 100644 index 000000000..02fcb6c2b Binary files /dev/null and b/public/terrain/19/858524/353810.terrain differ diff --git a/public/terrain/19/858524/353811.terrain b/public/terrain/19/858524/353811.terrain new file mode 100644 index 000000000..fec4df30c Binary files /dev/null and b/public/terrain/19/858524/353811.terrain differ diff --git a/public/terrain/19/858524/353812.terrain b/public/terrain/19/858524/353812.terrain new file mode 100644 index 000000000..2b5861b0c Binary files /dev/null and b/public/terrain/19/858524/353812.terrain differ diff --git a/public/terrain/19/858524/353813.terrain b/public/terrain/19/858524/353813.terrain new file mode 100644 index 000000000..b857f2cb1 Binary files /dev/null and b/public/terrain/19/858524/353813.terrain differ diff --git a/public/terrain/19/858524/353814.terrain b/public/terrain/19/858524/353814.terrain new file mode 100644 index 000000000..232c2f4cb Binary files /dev/null and b/public/terrain/19/858524/353814.terrain differ diff --git a/public/terrain/19/858524/353815.terrain b/public/terrain/19/858524/353815.terrain new file mode 100644 index 000000000..fd4b59659 Binary files /dev/null and b/public/terrain/19/858524/353815.terrain differ diff --git a/public/terrain/19/858524/353816.terrain b/public/terrain/19/858524/353816.terrain new file mode 100644 index 000000000..c346e40f3 Binary files /dev/null and b/public/terrain/19/858524/353816.terrain differ diff --git a/public/terrain/19/858524/353817.terrain b/public/terrain/19/858524/353817.terrain new file mode 100644 index 000000000..251044a3e Binary files /dev/null and b/public/terrain/19/858524/353817.terrain differ diff --git a/public/terrain/19/858524/353818.terrain b/public/terrain/19/858524/353818.terrain new file mode 100644 index 000000000..39eef266c Binary files /dev/null and b/public/terrain/19/858524/353818.terrain differ diff --git a/public/terrain/19/858524/353819.terrain b/public/terrain/19/858524/353819.terrain new file mode 100644 index 000000000..6fa11d55e Binary files /dev/null and b/public/terrain/19/858524/353819.terrain differ diff --git a/public/terrain/19/858524/353820.terrain b/public/terrain/19/858524/353820.terrain new file mode 100644 index 000000000..a82a81e16 Binary files /dev/null and b/public/terrain/19/858524/353820.terrain differ diff --git a/public/terrain/19/858524/353821.terrain b/public/terrain/19/858524/353821.terrain new file mode 100644 index 000000000..aaa08e2e3 Binary files /dev/null and b/public/terrain/19/858524/353821.terrain differ diff --git a/public/terrain/19/858524/353822.terrain b/public/terrain/19/858524/353822.terrain new file mode 100644 index 000000000..961f37dbd Binary files /dev/null and b/public/terrain/19/858524/353822.terrain differ diff --git a/public/terrain/19/858524/353823.terrain b/public/terrain/19/858524/353823.terrain new file mode 100644 index 000000000..2513bdfc9 Binary files /dev/null and b/public/terrain/19/858524/353823.terrain differ diff --git a/public/terrain/19/858524/353824.terrain b/public/terrain/19/858524/353824.terrain new file mode 100644 index 000000000..3cdda9dd3 Binary files /dev/null and b/public/terrain/19/858524/353824.terrain differ diff --git a/public/terrain/19/858524/353825.terrain b/public/terrain/19/858524/353825.terrain new file mode 100644 index 000000000..cfbcd38d3 Binary files /dev/null and b/public/terrain/19/858524/353825.terrain differ diff --git a/public/terrain/19/858524/353826.terrain b/public/terrain/19/858524/353826.terrain new file mode 100644 index 000000000..1962e7629 Binary files /dev/null and b/public/terrain/19/858524/353826.terrain differ diff --git a/public/terrain/19/858524/353827.terrain b/public/terrain/19/858524/353827.terrain new file mode 100644 index 000000000..de9168606 Binary files /dev/null and b/public/terrain/19/858524/353827.terrain differ diff --git a/public/terrain/19/858524/353828.terrain b/public/terrain/19/858524/353828.terrain new file mode 100644 index 000000000..eb4a8edde Binary files /dev/null and b/public/terrain/19/858524/353828.terrain differ diff --git a/public/terrain/19/858524/353829.terrain b/public/terrain/19/858524/353829.terrain new file mode 100644 index 000000000..0f564d729 Binary files /dev/null and b/public/terrain/19/858524/353829.terrain differ diff --git a/public/terrain/19/858524/353830.terrain b/public/terrain/19/858524/353830.terrain new file mode 100644 index 000000000..03d6aac38 Binary files /dev/null and b/public/terrain/19/858524/353830.terrain differ diff --git a/public/terrain/19/858524/353831.terrain b/public/terrain/19/858524/353831.terrain new file mode 100644 index 000000000..de244b6fc Binary files /dev/null and b/public/terrain/19/858524/353831.terrain differ diff --git a/public/terrain/19/858524/353832.terrain b/public/terrain/19/858524/353832.terrain new file mode 100644 index 000000000..03d34f194 Binary files /dev/null and b/public/terrain/19/858524/353832.terrain differ diff --git a/public/terrain/19/858524/353833.terrain b/public/terrain/19/858524/353833.terrain new file mode 100644 index 000000000..700b00fbc Binary files /dev/null and b/public/terrain/19/858524/353833.terrain differ diff --git a/public/terrain/19/858524/353834.terrain b/public/terrain/19/858524/353834.terrain new file mode 100644 index 000000000..72df998aa Binary files /dev/null and b/public/terrain/19/858524/353834.terrain differ diff --git a/public/terrain/19/858524/353835.terrain b/public/terrain/19/858524/353835.terrain new file mode 100644 index 000000000..3c010a34d Binary files /dev/null and b/public/terrain/19/858524/353835.terrain differ diff --git a/public/terrain/19/858524/353836.terrain b/public/terrain/19/858524/353836.terrain new file mode 100644 index 000000000..b93254b32 Binary files /dev/null and b/public/terrain/19/858524/353836.terrain differ diff --git a/public/terrain/19/858524/353837.terrain b/public/terrain/19/858524/353837.terrain new file mode 100644 index 000000000..d1fc475dd Binary files /dev/null and b/public/terrain/19/858524/353837.terrain differ diff --git a/public/terrain/19/858524/353838.terrain b/public/terrain/19/858524/353838.terrain new file mode 100644 index 000000000..f589feefd Binary files /dev/null and b/public/terrain/19/858524/353838.terrain differ diff --git a/public/terrain/19/858524/353839.terrain b/public/terrain/19/858524/353839.terrain new file mode 100644 index 000000000..fd7b370b0 Binary files /dev/null and b/public/terrain/19/858524/353839.terrain differ diff --git a/public/terrain/19/858524/353840.terrain b/public/terrain/19/858524/353840.terrain new file mode 100644 index 000000000..6fd3cec88 Binary files /dev/null and b/public/terrain/19/858524/353840.terrain differ diff --git a/public/terrain/19/858524/353841.terrain b/public/terrain/19/858524/353841.terrain new file mode 100644 index 000000000..8e6cb3588 Binary files /dev/null and b/public/terrain/19/858524/353841.terrain differ diff --git a/public/terrain/19/858524/353842.terrain b/public/terrain/19/858524/353842.terrain new file mode 100644 index 000000000..fc89a20de Binary files /dev/null and b/public/terrain/19/858524/353842.terrain differ diff --git a/public/terrain/19/858524/353843.terrain b/public/terrain/19/858524/353843.terrain new file mode 100644 index 000000000..ab001bd45 Binary files /dev/null and b/public/terrain/19/858524/353843.terrain differ diff --git a/public/terrain/19/858524/353844.terrain b/public/terrain/19/858524/353844.terrain new file mode 100644 index 000000000..0864c3b94 Binary files /dev/null and b/public/terrain/19/858524/353844.terrain differ diff --git a/public/terrain/19/858524/353845.terrain b/public/terrain/19/858524/353845.terrain new file mode 100644 index 000000000..14c88a702 Binary files /dev/null and b/public/terrain/19/858524/353845.terrain differ diff --git a/public/terrain/19/858524/353846.terrain b/public/terrain/19/858524/353846.terrain new file mode 100644 index 000000000..d2686223f Binary files /dev/null and b/public/terrain/19/858524/353846.terrain differ diff --git a/public/terrain/19/858524/353847.terrain b/public/terrain/19/858524/353847.terrain new file mode 100644 index 000000000..2f6d2fc4e Binary files /dev/null and b/public/terrain/19/858524/353847.terrain differ diff --git a/public/terrain/19/858524/353848.terrain b/public/terrain/19/858524/353848.terrain new file mode 100644 index 000000000..a2ed680ce Binary files /dev/null and b/public/terrain/19/858524/353848.terrain differ diff --git a/public/terrain/19/858524/353849.terrain b/public/terrain/19/858524/353849.terrain new file mode 100644 index 000000000..ad6acb7fd Binary files /dev/null and b/public/terrain/19/858524/353849.terrain differ diff --git a/public/terrain/19/858524/353850.terrain b/public/terrain/19/858524/353850.terrain new file mode 100644 index 000000000..9be483916 Binary files /dev/null and b/public/terrain/19/858524/353850.terrain differ diff --git a/public/terrain/19/858524/353851.terrain b/public/terrain/19/858524/353851.terrain new file mode 100644 index 000000000..ae7104c2c Binary files /dev/null and b/public/terrain/19/858524/353851.terrain differ diff --git a/public/terrain/19/858524/353852.terrain b/public/terrain/19/858524/353852.terrain new file mode 100644 index 000000000..7f78af234 Binary files /dev/null and b/public/terrain/19/858524/353852.terrain differ diff --git a/public/terrain/19/858524/353853.terrain b/public/terrain/19/858524/353853.terrain new file mode 100644 index 000000000..5d2888e54 Binary files /dev/null and b/public/terrain/19/858524/353853.terrain differ diff --git a/public/terrain/19/858524/353854.terrain b/public/terrain/19/858524/353854.terrain new file mode 100644 index 000000000..80ff0ba0b Binary files /dev/null and b/public/terrain/19/858524/353854.terrain differ diff --git a/public/terrain/19/858524/353855.terrain b/public/terrain/19/858524/353855.terrain new file mode 100644 index 000000000..0f2614c2a Binary files /dev/null and b/public/terrain/19/858524/353855.terrain differ diff --git a/public/terrain/19/858524/353856.terrain b/public/terrain/19/858524/353856.terrain new file mode 100644 index 000000000..811e99423 Binary files /dev/null and b/public/terrain/19/858524/353856.terrain differ diff --git a/public/terrain/19/858524/353857.terrain b/public/terrain/19/858524/353857.terrain new file mode 100644 index 000000000..969da560f Binary files /dev/null and b/public/terrain/19/858524/353857.terrain differ diff --git a/public/terrain/19/858524/353858.terrain b/public/terrain/19/858524/353858.terrain new file mode 100644 index 000000000..eae74e024 Binary files /dev/null and b/public/terrain/19/858524/353858.terrain differ diff --git a/public/terrain/19/858524/353859.terrain b/public/terrain/19/858524/353859.terrain new file mode 100644 index 000000000..c29cacb66 Binary files /dev/null and b/public/terrain/19/858524/353859.terrain differ diff --git a/public/terrain/19/858524/353860.terrain b/public/terrain/19/858524/353860.terrain new file mode 100644 index 000000000..2519bd895 Binary files /dev/null and b/public/terrain/19/858524/353860.terrain differ diff --git a/public/terrain/19/858524/353861.terrain b/public/terrain/19/858524/353861.terrain new file mode 100644 index 000000000..0bacba406 Binary files /dev/null and b/public/terrain/19/858524/353861.terrain differ diff --git a/public/terrain/19/858524/353862.terrain b/public/terrain/19/858524/353862.terrain new file mode 100644 index 000000000..5c7b56cde Binary files /dev/null and b/public/terrain/19/858524/353862.terrain differ diff --git a/public/terrain/19/858524/353863.terrain b/public/terrain/19/858524/353863.terrain new file mode 100644 index 000000000..7affd5101 Binary files /dev/null and b/public/terrain/19/858524/353863.terrain differ diff --git a/public/terrain/19/858524/353864.terrain b/public/terrain/19/858524/353864.terrain new file mode 100644 index 000000000..71308788f Binary files /dev/null and b/public/terrain/19/858524/353864.terrain differ diff --git a/public/terrain/19/858524/353865.terrain b/public/terrain/19/858524/353865.terrain new file mode 100644 index 000000000..5972ffc0c Binary files /dev/null and b/public/terrain/19/858524/353865.terrain differ diff --git a/public/terrain/19/858524/353866.terrain b/public/terrain/19/858524/353866.terrain new file mode 100644 index 000000000..a7c6f23b8 Binary files /dev/null and b/public/terrain/19/858524/353866.terrain differ diff --git a/public/terrain/19/858524/353867.terrain b/public/terrain/19/858524/353867.terrain new file mode 100644 index 000000000..028eb98e7 Binary files /dev/null and b/public/terrain/19/858524/353867.terrain differ diff --git a/public/terrain/19/858524/353868.terrain b/public/terrain/19/858524/353868.terrain new file mode 100644 index 000000000..953663e1e Binary files /dev/null and b/public/terrain/19/858524/353868.terrain differ diff --git a/public/terrain/19/858524/353869.terrain b/public/terrain/19/858524/353869.terrain new file mode 100644 index 000000000..af5b6d0f3 Binary files /dev/null and b/public/terrain/19/858524/353869.terrain differ diff --git a/public/terrain/19/858524/353870.terrain b/public/terrain/19/858524/353870.terrain new file mode 100644 index 000000000..39701ac10 Binary files /dev/null and b/public/terrain/19/858524/353870.terrain differ diff --git a/public/terrain/19/858524/353871.terrain b/public/terrain/19/858524/353871.terrain new file mode 100644 index 000000000..8bfbb8f62 Binary files /dev/null and b/public/terrain/19/858524/353871.terrain differ diff --git a/public/terrain/19/858524/353872.terrain b/public/terrain/19/858524/353872.terrain new file mode 100644 index 000000000..f2937dd6d Binary files /dev/null and b/public/terrain/19/858524/353872.terrain differ diff --git a/public/terrain/19/858524/353873.terrain b/public/terrain/19/858524/353873.terrain new file mode 100644 index 000000000..c1c72c280 Binary files /dev/null and b/public/terrain/19/858524/353873.terrain differ diff --git a/public/terrain/19/858524/353874.terrain b/public/terrain/19/858524/353874.terrain new file mode 100644 index 000000000..89dc3ba7f Binary files /dev/null and b/public/terrain/19/858524/353874.terrain differ diff --git a/public/terrain/19/858524/353875.terrain b/public/terrain/19/858524/353875.terrain new file mode 100644 index 000000000..1e0f1243a Binary files /dev/null and b/public/terrain/19/858524/353875.terrain differ diff --git a/public/terrain/19/858524/353876.terrain b/public/terrain/19/858524/353876.terrain new file mode 100644 index 000000000..83c83ab5a Binary files /dev/null and b/public/terrain/19/858524/353876.terrain differ diff --git a/public/terrain/19/858524/353877.terrain b/public/terrain/19/858524/353877.terrain new file mode 100644 index 000000000..a2bdd4307 Binary files /dev/null and b/public/terrain/19/858524/353877.terrain differ diff --git a/public/terrain/19/858524/353878.terrain b/public/terrain/19/858524/353878.terrain new file mode 100644 index 000000000..c9bf43399 Binary files /dev/null and b/public/terrain/19/858524/353878.terrain differ diff --git a/public/terrain/19/858524/353879.terrain b/public/terrain/19/858524/353879.terrain new file mode 100644 index 000000000..f1f9e8f3e Binary files /dev/null and b/public/terrain/19/858524/353879.terrain differ diff --git a/public/terrain/19/858524/353880.terrain b/public/terrain/19/858524/353880.terrain new file mode 100644 index 000000000..d12cb0a6f Binary files /dev/null and b/public/terrain/19/858524/353880.terrain differ diff --git a/public/terrain/19/858524/353881.terrain b/public/terrain/19/858524/353881.terrain new file mode 100644 index 000000000..0b666dd27 Binary files /dev/null and b/public/terrain/19/858524/353881.terrain differ diff --git a/public/terrain/19/858524/353882.terrain b/public/terrain/19/858524/353882.terrain new file mode 100644 index 000000000..40351a4a4 Binary files /dev/null and b/public/terrain/19/858524/353882.terrain differ diff --git a/public/terrain/19/858524/353883.terrain b/public/terrain/19/858524/353883.terrain new file mode 100644 index 000000000..3db9992f4 Binary files /dev/null and b/public/terrain/19/858524/353883.terrain differ diff --git a/public/terrain/19/858524/353884.terrain b/public/terrain/19/858524/353884.terrain new file mode 100644 index 000000000..9438cceff Binary files /dev/null and b/public/terrain/19/858524/353884.terrain differ diff --git a/public/terrain/19/858524/353885.terrain b/public/terrain/19/858524/353885.terrain new file mode 100644 index 000000000..5ae43e3f7 Binary files /dev/null and b/public/terrain/19/858524/353885.terrain differ diff --git a/public/terrain/19/858524/353886.terrain b/public/terrain/19/858524/353886.terrain new file mode 100644 index 000000000..9cbd4f25f Binary files /dev/null and b/public/terrain/19/858524/353886.terrain differ diff --git a/public/terrain/19/858524/353887.terrain b/public/terrain/19/858524/353887.terrain new file mode 100644 index 000000000..cf1cea2a1 Binary files /dev/null and b/public/terrain/19/858524/353887.terrain differ diff --git a/public/terrain/19/858524/353888.terrain b/public/terrain/19/858524/353888.terrain new file mode 100644 index 000000000..9870a347d Binary files /dev/null and b/public/terrain/19/858524/353888.terrain differ diff --git a/public/terrain/19/858524/353889.terrain b/public/terrain/19/858524/353889.terrain new file mode 100644 index 000000000..1c0133cb1 Binary files /dev/null and b/public/terrain/19/858524/353889.terrain differ diff --git a/public/terrain/19/858524/353890.terrain b/public/terrain/19/858524/353890.terrain new file mode 100644 index 000000000..666589ca5 Binary files /dev/null and b/public/terrain/19/858524/353890.terrain differ diff --git a/public/terrain/19/858524/353891.terrain b/public/terrain/19/858524/353891.terrain new file mode 100644 index 000000000..f99d6f41e Binary files /dev/null and b/public/terrain/19/858524/353891.terrain differ diff --git a/public/terrain/19/858524/353892.terrain b/public/terrain/19/858524/353892.terrain new file mode 100644 index 000000000..187ac25e2 Binary files /dev/null and b/public/terrain/19/858524/353892.terrain differ diff --git a/public/terrain/19/858524/353893.terrain b/public/terrain/19/858524/353893.terrain new file mode 100644 index 000000000..3aea7a78a Binary files /dev/null and b/public/terrain/19/858524/353893.terrain differ diff --git a/public/terrain/19/858524/353894.terrain b/public/terrain/19/858524/353894.terrain new file mode 100644 index 000000000..6a022b895 Binary files /dev/null and b/public/terrain/19/858524/353894.terrain differ diff --git a/public/terrain/19/858524/353895.terrain b/public/terrain/19/858524/353895.terrain new file mode 100644 index 000000000..d1b94a664 Binary files /dev/null and b/public/terrain/19/858524/353895.terrain differ diff --git a/public/terrain/19/858524/353896.terrain b/public/terrain/19/858524/353896.terrain new file mode 100644 index 000000000..5da5895be Binary files /dev/null and b/public/terrain/19/858524/353896.terrain differ diff --git a/public/terrain/19/858524/353897.terrain b/public/terrain/19/858524/353897.terrain new file mode 100644 index 000000000..526fbd2e0 Binary files /dev/null and b/public/terrain/19/858524/353897.terrain differ diff --git a/public/terrain/19/858524/353898.terrain b/public/terrain/19/858524/353898.terrain new file mode 100644 index 000000000..bf678b4cf Binary files /dev/null and b/public/terrain/19/858524/353898.terrain differ diff --git a/public/terrain/19/858524/353899.terrain b/public/terrain/19/858524/353899.terrain new file mode 100644 index 000000000..423da95ec Binary files /dev/null and b/public/terrain/19/858524/353899.terrain differ diff --git a/public/terrain/19/858524/353900.terrain b/public/terrain/19/858524/353900.terrain new file mode 100644 index 000000000..8c9061074 Binary files /dev/null and b/public/terrain/19/858524/353900.terrain differ diff --git a/public/terrain/19/858524/353901.terrain b/public/terrain/19/858524/353901.terrain new file mode 100644 index 000000000..1d17511b6 Binary files /dev/null and b/public/terrain/19/858524/353901.terrain differ diff --git a/public/terrain/19/858524/353902.terrain b/public/terrain/19/858524/353902.terrain new file mode 100644 index 000000000..fe887479a Binary files /dev/null and b/public/terrain/19/858524/353902.terrain differ diff --git a/public/terrain/19/858524/353903.terrain b/public/terrain/19/858524/353903.terrain new file mode 100644 index 000000000..828b93c4d Binary files /dev/null and b/public/terrain/19/858524/353903.terrain differ diff --git a/public/terrain/19/858524/353904.terrain b/public/terrain/19/858524/353904.terrain new file mode 100644 index 000000000..fb0ac49e4 Binary files /dev/null and b/public/terrain/19/858524/353904.terrain differ diff --git a/public/terrain/19/858524/353905.terrain b/public/terrain/19/858524/353905.terrain new file mode 100644 index 000000000..f300b42ed Binary files /dev/null and b/public/terrain/19/858524/353905.terrain differ diff --git a/public/terrain/19/858524/353906.terrain b/public/terrain/19/858524/353906.terrain new file mode 100644 index 000000000..d73b5624b Binary files /dev/null and b/public/terrain/19/858524/353906.terrain differ diff --git a/public/terrain/19/858524/353907.terrain b/public/terrain/19/858524/353907.terrain new file mode 100644 index 000000000..21dd90355 Binary files /dev/null and b/public/terrain/19/858524/353907.terrain differ diff --git a/public/terrain/19/858524/353908.terrain b/public/terrain/19/858524/353908.terrain new file mode 100644 index 000000000..b674740c3 Binary files /dev/null and b/public/terrain/19/858524/353908.terrain differ diff --git a/public/terrain/19/858524/353909.terrain b/public/terrain/19/858524/353909.terrain new file mode 100644 index 000000000..f13bfe951 Binary files /dev/null and b/public/terrain/19/858524/353909.terrain differ diff --git a/public/terrain/19/858524/353910.terrain b/public/terrain/19/858524/353910.terrain new file mode 100644 index 000000000..68557bc22 Binary files /dev/null and b/public/terrain/19/858524/353910.terrain differ diff --git a/public/terrain/19/858524/353911.terrain b/public/terrain/19/858524/353911.terrain new file mode 100644 index 000000000..413d5b8b5 Binary files /dev/null and b/public/terrain/19/858524/353911.terrain differ diff --git a/public/terrain/19/858524/353912.terrain b/public/terrain/19/858524/353912.terrain new file mode 100644 index 000000000..741d1a9c4 Binary files /dev/null and b/public/terrain/19/858524/353912.terrain differ diff --git a/public/terrain/19/858524/353913.terrain b/public/terrain/19/858524/353913.terrain new file mode 100644 index 000000000..19ae264ea Binary files /dev/null and b/public/terrain/19/858524/353913.terrain differ diff --git a/public/terrain/19/858524/353914.terrain b/public/terrain/19/858524/353914.terrain new file mode 100644 index 000000000..4d3c8e6f7 Binary files /dev/null and b/public/terrain/19/858524/353914.terrain differ diff --git a/public/terrain/19/858524/353915.terrain b/public/terrain/19/858524/353915.terrain new file mode 100644 index 000000000..dfbe46586 Binary files /dev/null and b/public/terrain/19/858524/353915.terrain differ diff --git a/public/terrain/19/858524/353916.terrain b/public/terrain/19/858524/353916.terrain new file mode 100644 index 000000000..7012e68e9 Binary files /dev/null and b/public/terrain/19/858524/353916.terrain differ diff --git a/public/terrain/19/858524/353917.terrain b/public/terrain/19/858524/353917.terrain new file mode 100644 index 000000000..902763014 Binary files /dev/null and b/public/terrain/19/858524/353917.terrain differ diff --git a/public/terrain/19/858524/353918.terrain b/public/terrain/19/858524/353918.terrain new file mode 100644 index 000000000..5a57d04c8 Binary files /dev/null and b/public/terrain/19/858524/353918.terrain differ diff --git a/public/terrain/19/858524/353919.terrain b/public/terrain/19/858524/353919.terrain new file mode 100644 index 000000000..c34f5102b Binary files /dev/null and b/public/terrain/19/858524/353919.terrain differ diff --git a/public/terrain/19/858524/353920.terrain b/public/terrain/19/858524/353920.terrain new file mode 100644 index 000000000..afaf2f700 Binary files /dev/null and b/public/terrain/19/858524/353920.terrain differ diff --git a/public/terrain/19/858524/353921.terrain b/public/terrain/19/858524/353921.terrain new file mode 100644 index 000000000..ad767163c Binary files /dev/null and b/public/terrain/19/858524/353921.terrain differ diff --git a/public/terrain/19/858524/353922.terrain b/public/terrain/19/858524/353922.terrain new file mode 100644 index 000000000..b7c73f8b5 Binary files /dev/null and b/public/terrain/19/858524/353922.terrain differ diff --git a/public/terrain/19/858524/353923.terrain b/public/terrain/19/858524/353923.terrain new file mode 100644 index 000000000..2b41c4cf2 Binary files /dev/null and b/public/terrain/19/858524/353923.terrain differ diff --git a/public/terrain/19/858524/353924.terrain b/public/terrain/19/858524/353924.terrain new file mode 100644 index 000000000..1607568d7 Binary files /dev/null and b/public/terrain/19/858524/353924.terrain differ diff --git a/public/terrain/19/858524/353925.terrain b/public/terrain/19/858524/353925.terrain new file mode 100644 index 000000000..858397286 Binary files /dev/null and b/public/terrain/19/858524/353925.terrain differ diff --git a/public/terrain/19/858524/353926.terrain b/public/terrain/19/858524/353926.terrain new file mode 100644 index 000000000..9eef3668d Binary files /dev/null and b/public/terrain/19/858524/353926.terrain differ diff --git a/public/terrain/19/858524/353927.terrain b/public/terrain/19/858524/353927.terrain new file mode 100644 index 000000000..8fb87c473 Binary files /dev/null and b/public/terrain/19/858524/353927.terrain differ diff --git a/public/terrain/19/858524/353928.terrain b/public/terrain/19/858524/353928.terrain new file mode 100644 index 000000000..69d621b55 Binary files /dev/null and b/public/terrain/19/858524/353928.terrain differ diff --git a/public/terrain/19/858524/353929.terrain b/public/terrain/19/858524/353929.terrain new file mode 100644 index 000000000..f22c116e2 Binary files /dev/null and b/public/terrain/19/858524/353929.terrain differ diff --git a/public/terrain/19/858524/353930.terrain b/public/terrain/19/858524/353930.terrain new file mode 100644 index 000000000..5d941e23a Binary files /dev/null and b/public/terrain/19/858524/353930.terrain differ diff --git a/public/terrain/19/858524/353931.terrain b/public/terrain/19/858524/353931.terrain new file mode 100644 index 000000000..47b0866d7 Binary files /dev/null and b/public/terrain/19/858524/353931.terrain differ diff --git a/public/terrain/19/858524/353932.terrain b/public/terrain/19/858524/353932.terrain new file mode 100644 index 000000000..26d192f6e Binary files /dev/null and b/public/terrain/19/858524/353932.terrain differ diff --git a/public/terrain/19/858524/353933.terrain b/public/terrain/19/858524/353933.terrain new file mode 100644 index 000000000..cc67f6580 Binary files /dev/null and b/public/terrain/19/858524/353933.terrain differ diff --git a/public/terrain/19/858524/353934.terrain b/public/terrain/19/858524/353934.terrain new file mode 100644 index 000000000..568d00f0f Binary files /dev/null and b/public/terrain/19/858524/353934.terrain differ diff --git a/public/terrain/19/858524/353935.terrain b/public/terrain/19/858524/353935.terrain new file mode 100644 index 000000000..60ebb5f06 Binary files /dev/null and b/public/terrain/19/858524/353935.terrain differ diff --git a/public/terrain/19/858524/353936.terrain b/public/terrain/19/858524/353936.terrain new file mode 100644 index 000000000..8d5d2e559 Binary files /dev/null and b/public/terrain/19/858524/353936.terrain differ diff --git a/public/terrain/19/858524/353937.terrain b/public/terrain/19/858524/353937.terrain new file mode 100644 index 000000000..cecc738a2 Binary files /dev/null and b/public/terrain/19/858524/353937.terrain differ diff --git a/public/terrain/19/858524/353938.terrain b/public/terrain/19/858524/353938.terrain new file mode 100644 index 000000000..ca0ad8c78 Binary files /dev/null and b/public/terrain/19/858524/353938.terrain differ diff --git a/public/terrain/19/858524/353939.terrain b/public/terrain/19/858524/353939.terrain new file mode 100644 index 000000000..cdfa09675 Binary files /dev/null and b/public/terrain/19/858524/353939.terrain differ diff --git a/public/terrain/19/858524/353940.terrain b/public/terrain/19/858524/353940.terrain new file mode 100644 index 000000000..bbaf5b8b0 Binary files /dev/null and b/public/terrain/19/858524/353940.terrain differ diff --git a/public/terrain/19/858524/353941.terrain b/public/terrain/19/858524/353941.terrain new file mode 100644 index 000000000..1970fdef0 Binary files /dev/null and b/public/terrain/19/858524/353941.terrain differ diff --git a/public/terrain/19/858524/353942.terrain b/public/terrain/19/858524/353942.terrain new file mode 100644 index 000000000..640854a15 Binary files /dev/null and b/public/terrain/19/858524/353942.terrain differ diff --git a/public/terrain/19/858524/353943.terrain b/public/terrain/19/858524/353943.terrain new file mode 100644 index 000000000..4073f9a67 Binary files /dev/null and b/public/terrain/19/858524/353943.terrain differ diff --git a/public/terrain/19/858524/353944.terrain b/public/terrain/19/858524/353944.terrain new file mode 100644 index 000000000..a4a0fb3a6 Binary files /dev/null and b/public/terrain/19/858524/353944.terrain differ diff --git a/public/terrain/19/858524/353945.terrain b/public/terrain/19/858524/353945.terrain new file mode 100644 index 000000000..452e0ff0d Binary files /dev/null and b/public/terrain/19/858524/353945.terrain differ diff --git a/public/terrain/19/858524/353946.terrain b/public/terrain/19/858524/353946.terrain new file mode 100644 index 000000000..1034ebe9f Binary files /dev/null and b/public/terrain/19/858524/353946.terrain differ diff --git a/public/terrain/19/858524/353947.terrain b/public/terrain/19/858524/353947.terrain new file mode 100644 index 000000000..46331502d Binary files /dev/null and b/public/terrain/19/858524/353947.terrain differ diff --git a/public/terrain/19/858524/353948.terrain b/public/terrain/19/858524/353948.terrain new file mode 100644 index 000000000..9d8de55f3 Binary files /dev/null and b/public/terrain/19/858524/353948.terrain differ diff --git a/public/terrain/19/858524/353949.terrain b/public/terrain/19/858524/353949.terrain new file mode 100644 index 000000000..446929825 Binary files /dev/null and b/public/terrain/19/858524/353949.terrain differ diff --git a/public/terrain/19/858524/353950.terrain b/public/terrain/19/858524/353950.terrain new file mode 100644 index 000000000..6cec2b80e Binary files /dev/null and b/public/terrain/19/858524/353950.terrain differ diff --git a/public/terrain/19/858524/353951.terrain b/public/terrain/19/858524/353951.terrain new file mode 100644 index 000000000..29fe04ebc Binary files /dev/null and b/public/terrain/19/858524/353951.terrain differ diff --git a/public/terrain/19/858524/353952.terrain b/public/terrain/19/858524/353952.terrain new file mode 100644 index 000000000..2773b3034 Binary files /dev/null and b/public/terrain/19/858524/353952.terrain differ diff --git a/public/terrain/19/858524/353953.terrain b/public/terrain/19/858524/353953.terrain new file mode 100644 index 000000000..95aaaae00 Binary files /dev/null and b/public/terrain/19/858524/353953.terrain differ diff --git a/public/terrain/19/858524/353954.terrain b/public/terrain/19/858524/353954.terrain new file mode 100644 index 000000000..81ab2cfb3 Binary files /dev/null and b/public/terrain/19/858524/353954.terrain differ diff --git a/public/terrain/19/858524/353955.terrain b/public/terrain/19/858524/353955.terrain new file mode 100644 index 000000000..c5f26da52 Binary files /dev/null and b/public/terrain/19/858524/353955.terrain differ diff --git a/public/terrain/19/858524/353956.terrain b/public/terrain/19/858524/353956.terrain new file mode 100644 index 000000000..f205c6c95 Binary files /dev/null and b/public/terrain/19/858524/353956.terrain differ diff --git a/public/terrain/19/858524/353957.terrain b/public/terrain/19/858524/353957.terrain new file mode 100644 index 000000000..5d9d709b9 Binary files /dev/null and b/public/terrain/19/858524/353957.terrain differ diff --git a/public/terrain/19/858524/353958.terrain b/public/terrain/19/858524/353958.terrain new file mode 100644 index 000000000..6d88c3468 Binary files /dev/null and b/public/terrain/19/858524/353958.terrain differ diff --git a/public/terrain/19/858524/353959.terrain b/public/terrain/19/858524/353959.terrain new file mode 100644 index 000000000..c8989034d Binary files /dev/null and b/public/terrain/19/858524/353959.terrain differ diff --git a/public/terrain/19/858524/353960.terrain b/public/terrain/19/858524/353960.terrain new file mode 100644 index 000000000..9f1a41012 Binary files /dev/null and b/public/terrain/19/858524/353960.terrain differ diff --git a/public/terrain/19/858524/353961.terrain b/public/terrain/19/858524/353961.terrain new file mode 100644 index 000000000..eaf16567f Binary files /dev/null and b/public/terrain/19/858524/353961.terrain differ diff --git a/public/terrain/19/858524/353962.terrain b/public/terrain/19/858524/353962.terrain new file mode 100644 index 000000000..73da10ef9 Binary files /dev/null and b/public/terrain/19/858524/353962.terrain differ diff --git a/public/terrain/19/858524/353963.terrain b/public/terrain/19/858524/353963.terrain new file mode 100644 index 000000000..c5cabdfee Binary files /dev/null and b/public/terrain/19/858524/353963.terrain differ diff --git a/public/terrain/19/858524/353964.terrain b/public/terrain/19/858524/353964.terrain new file mode 100644 index 000000000..19b2efed9 Binary files /dev/null and b/public/terrain/19/858524/353964.terrain differ diff --git a/public/terrain/19/858524/353965.terrain b/public/terrain/19/858524/353965.terrain new file mode 100644 index 000000000..bdd9fe33d Binary files /dev/null and b/public/terrain/19/858524/353965.terrain differ diff --git a/public/terrain/19/858524/353966.terrain b/public/terrain/19/858524/353966.terrain new file mode 100644 index 000000000..fb392629e Binary files /dev/null and b/public/terrain/19/858524/353966.terrain differ diff --git a/public/terrain/19/858524/353967.terrain b/public/terrain/19/858524/353967.terrain new file mode 100644 index 000000000..f0920c0ea Binary files /dev/null and b/public/terrain/19/858524/353967.terrain differ diff --git a/public/terrain/19/858524/353968.terrain b/public/terrain/19/858524/353968.terrain new file mode 100644 index 000000000..98b728a66 Binary files /dev/null and b/public/terrain/19/858524/353968.terrain differ diff --git a/public/terrain/19/858524/353969.terrain b/public/terrain/19/858524/353969.terrain new file mode 100644 index 000000000..86d1edb38 Binary files /dev/null and b/public/terrain/19/858524/353969.terrain differ diff --git a/public/terrain/19/858524/353970.terrain b/public/terrain/19/858524/353970.terrain new file mode 100644 index 000000000..2c2949e32 Binary files /dev/null and b/public/terrain/19/858524/353970.terrain differ diff --git a/public/terrain/19/858524/353971.terrain b/public/terrain/19/858524/353971.terrain new file mode 100644 index 000000000..ee670bd5e Binary files /dev/null and b/public/terrain/19/858524/353971.terrain differ diff --git a/public/terrain/19/858524/353972.terrain b/public/terrain/19/858524/353972.terrain new file mode 100644 index 000000000..28dc09b2d Binary files /dev/null and b/public/terrain/19/858524/353972.terrain differ diff --git a/public/terrain/19/858524/353973.terrain b/public/terrain/19/858524/353973.terrain new file mode 100644 index 000000000..eedd0d4a0 Binary files /dev/null and b/public/terrain/19/858524/353973.terrain differ diff --git a/public/terrain/19/858524/353974.terrain b/public/terrain/19/858524/353974.terrain new file mode 100644 index 000000000..912720a3f Binary files /dev/null and b/public/terrain/19/858524/353974.terrain differ diff --git a/public/terrain/19/858524/353975.terrain b/public/terrain/19/858524/353975.terrain new file mode 100644 index 000000000..1e067f115 Binary files /dev/null and b/public/terrain/19/858524/353975.terrain differ diff --git a/public/terrain/19/858524/353976.terrain b/public/terrain/19/858524/353976.terrain new file mode 100644 index 000000000..e57952e71 Binary files /dev/null and b/public/terrain/19/858524/353976.terrain differ diff --git a/public/terrain/19/858524/353977.terrain b/public/terrain/19/858524/353977.terrain new file mode 100644 index 000000000..3747fc20c Binary files /dev/null and b/public/terrain/19/858524/353977.terrain differ diff --git a/public/terrain/19/858524/353978.terrain b/public/terrain/19/858524/353978.terrain new file mode 100644 index 000000000..8391fcdd4 Binary files /dev/null and b/public/terrain/19/858524/353978.terrain differ diff --git a/public/terrain/19/858524/353979.terrain b/public/terrain/19/858524/353979.terrain new file mode 100644 index 000000000..af37fb394 Binary files /dev/null and b/public/terrain/19/858524/353979.terrain differ diff --git a/public/terrain/19/858524/353980.terrain b/public/terrain/19/858524/353980.terrain new file mode 100644 index 000000000..b81e6296e Binary files /dev/null and b/public/terrain/19/858524/353980.terrain differ diff --git a/public/terrain/19/858524/353981.terrain b/public/terrain/19/858524/353981.terrain new file mode 100644 index 000000000..b04525aa5 Binary files /dev/null and b/public/terrain/19/858524/353981.terrain differ diff --git a/public/terrain/19/858524/353982.terrain b/public/terrain/19/858524/353982.terrain new file mode 100644 index 000000000..4afffd7fb Binary files /dev/null and b/public/terrain/19/858524/353982.terrain differ diff --git a/public/terrain/19/858524/353983.terrain b/public/terrain/19/858524/353983.terrain new file mode 100644 index 000000000..b905274c5 Binary files /dev/null and b/public/terrain/19/858524/353983.terrain differ diff --git a/public/terrain/19/858524/353984.terrain b/public/terrain/19/858524/353984.terrain new file mode 100644 index 000000000..a613c9b96 Binary files /dev/null and b/public/terrain/19/858524/353984.terrain differ diff --git a/public/terrain/19/858524/353985.terrain b/public/terrain/19/858524/353985.terrain new file mode 100644 index 000000000..ee5348a49 Binary files /dev/null and b/public/terrain/19/858524/353985.terrain differ diff --git a/public/terrain/19/858524/353986.terrain b/public/terrain/19/858524/353986.terrain new file mode 100644 index 000000000..5e2445d72 Binary files /dev/null and b/public/terrain/19/858524/353986.terrain differ diff --git a/public/terrain/19/858524/353987.terrain b/public/terrain/19/858524/353987.terrain new file mode 100644 index 000000000..e747ef5b8 Binary files /dev/null and b/public/terrain/19/858524/353987.terrain differ diff --git a/public/terrain/19/858524/353988.terrain b/public/terrain/19/858524/353988.terrain new file mode 100644 index 000000000..6f41a92aa Binary files /dev/null and b/public/terrain/19/858524/353988.terrain differ diff --git a/public/terrain/19/858524/353989.terrain b/public/terrain/19/858524/353989.terrain new file mode 100644 index 000000000..5d4bfefd4 Binary files /dev/null and b/public/terrain/19/858524/353989.terrain differ diff --git a/public/terrain/19/858524/353990.terrain b/public/terrain/19/858524/353990.terrain new file mode 100644 index 000000000..c294e31f7 Binary files /dev/null and b/public/terrain/19/858524/353990.terrain differ diff --git a/public/terrain/19/858524/353991.terrain b/public/terrain/19/858524/353991.terrain new file mode 100644 index 000000000..2798f3416 Binary files /dev/null and b/public/terrain/19/858524/353991.terrain differ diff --git a/public/terrain/19/858524/353992.terrain b/public/terrain/19/858524/353992.terrain new file mode 100644 index 000000000..8ec54ff36 Binary files /dev/null and b/public/terrain/19/858524/353992.terrain differ diff --git a/public/terrain/19/858524/353993.terrain b/public/terrain/19/858524/353993.terrain new file mode 100644 index 000000000..7d4661015 Binary files /dev/null and b/public/terrain/19/858524/353993.terrain differ diff --git a/public/terrain/19/858524/353994.terrain b/public/terrain/19/858524/353994.terrain new file mode 100644 index 000000000..0f8e631f7 Binary files /dev/null and b/public/terrain/19/858524/353994.terrain differ diff --git a/public/terrain/19/858524/353995.terrain b/public/terrain/19/858524/353995.terrain new file mode 100644 index 000000000..8ea8de592 Binary files /dev/null and b/public/terrain/19/858524/353995.terrain differ diff --git a/public/terrain/19/858524/353996.terrain b/public/terrain/19/858524/353996.terrain new file mode 100644 index 000000000..0b2f6633e Binary files /dev/null and b/public/terrain/19/858524/353996.terrain differ diff --git a/public/terrain/19/858524/353997.terrain b/public/terrain/19/858524/353997.terrain new file mode 100644 index 000000000..2ebc53e84 Binary files /dev/null and b/public/terrain/19/858524/353997.terrain differ diff --git a/public/terrain/19/858524/353998.terrain b/public/terrain/19/858524/353998.terrain new file mode 100644 index 000000000..b73eee9f2 Binary files /dev/null and b/public/terrain/19/858524/353998.terrain differ diff --git a/public/terrain/19/858524/353999.terrain b/public/terrain/19/858524/353999.terrain new file mode 100644 index 000000000..929457c30 Binary files /dev/null and b/public/terrain/19/858524/353999.terrain differ diff --git a/public/terrain/19/858524/354000.terrain b/public/terrain/19/858524/354000.terrain new file mode 100644 index 000000000..0a5f51b28 Binary files /dev/null and b/public/terrain/19/858524/354000.terrain differ diff --git a/public/terrain/19/858524/354001.terrain b/public/terrain/19/858524/354001.terrain new file mode 100644 index 000000000..b30ff58c6 Binary files /dev/null and b/public/terrain/19/858524/354001.terrain differ diff --git a/public/terrain/19/858524/354002.terrain b/public/terrain/19/858524/354002.terrain new file mode 100644 index 000000000..2f2ac87af Binary files /dev/null and b/public/terrain/19/858524/354002.terrain differ diff --git a/public/terrain/19/858524/354003.terrain b/public/terrain/19/858524/354003.terrain new file mode 100644 index 000000000..f1ac3daac Binary files /dev/null and b/public/terrain/19/858524/354003.terrain differ diff --git a/public/terrain/19/858524/354004.terrain b/public/terrain/19/858524/354004.terrain new file mode 100644 index 000000000..0f511dadd Binary files /dev/null and b/public/terrain/19/858524/354004.terrain differ diff --git a/public/terrain/19/858524/354005.terrain b/public/terrain/19/858524/354005.terrain new file mode 100644 index 000000000..272502fbd Binary files /dev/null and b/public/terrain/19/858524/354005.terrain differ diff --git a/public/terrain/19/858524/354006.terrain b/public/terrain/19/858524/354006.terrain new file mode 100644 index 000000000..c2edec389 Binary files /dev/null and b/public/terrain/19/858524/354006.terrain differ diff --git a/public/terrain/19/858524/354007.terrain b/public/terrain/19/858524/354007.terrain new file mode 100644 index 000000000..6c2d84cc1 Binary files /dev/null and b/public/terrain/19/858524/354007.terrain differ diff --git a/public/terrain/19/858524/354008.terrain b/public/terrain/19/858524/354008.terrain new file mode 100644 index 000000000..2c9eef84d Binary files /dev/null and b/public/terrain/19/858524/354008.terrain differ diff --git a/public/terrain/19/858524/354009.terrain b/public/terrain/19/858524/354009.terrain new file mode 100644 index 000000000..db47b6fde Binary files /dev/null and b/public/terrain/19/858524/354009.terrain differ diff --git a/public/terrain/19/858524/354010.terrain b/public/terrain/19/858524/354010.terrain new file mode 100644 index 000000000..be82b75dc Binary files /dev/null and b/public/terrain/19/858524/354010.terrain differ diff --git a/public/terrain/19/858524/354011.terrain b/public/terrain/19/858524/354011.terrain new file mode 100644 index 000000000..bdefc07c6 Binary files /dev/null and b/public/terrain/19/858524/354011.terrain differ diff --git a/public/terrain/19/858524/354012.terrain b/public/terrain/19/858524/354012.terrain new file mode 100644 index 000000000..6216a3e4a Binary files /dev/null and b/public/terrain/19/858524/354012.terrain differ diff --git a/public/terrain/19/858524/354013.terrain b/public/terrain/19/858524/354013.terrain new file mode 100644 index 000000000..4f32ccf09 Binary files /dev/null and b/public/terrain/19/858524/354013.terrain differ diff --git a/public/terrain/19/858524/354014.terrain b/public/terrain/19/858524/354014.terrain new file mode 100644 index 000000000..5bac0f688 Binary files /dev/null and b/public/terrain/19/858524/354014.terrain differ diff --git a/public/terrain/19/858524/354015.terrain b/public/terrain/19/858524/354015.terrain new file mode 100644 index 000000000..555c85e0a Binary files /dev/null and b/public/terrain/19/858524/354015.terrain differ diff --git a/public/terrain/19/858524/354016.terrain b/public/terrain/19/858524/354016.terrain new file mode 100644 index 000000000..dd9bea808 Binary files /dev/null and b/public/terrain/19/858524/354016.terrain differ diff --git a/public/terrain/19/858524/354017.terrain b/public/terrain/19/858524/354017.terrain new file mode 100644 index 000000000..5d329aaab Binary files /dev/null and b/public/terrain/19/858524/354017.terrain differ diff --git a/public/terrain/19/858524/354018.terrain b/public/terrain/19/858524/354018.terrain new file mode 100644 index 000000000..1695dc6cb Binary files /dev/null and b/public/terrain/19/858524/354018.terrain differ diff --git a/public/terrain/19/858524/354019.terrain b/public/terrain/19/858524/354019.terrain new file mode 100644 index 000000000..2c943bb7f Binary files /dev/null and b/public/terrain/19/858524/354019.terrain differ diff --git a/public/terrain/19/858524/354020.terrain b/public/terrain/19/858524/354020.terrain new file mode 100644 index 000000000..a257f485b Binary files /dev/null and b/public/terrain/19/858524/354020.terrain differ diff --git a/public/terrain/19/858524/354021.terrain b/public/terrain/19/858524/354021.terrain new file mode 100644 index 000000000..d29f7b0df Binary files /dev/null and b/public/terrain/19/858524/354021.terrain differ diff --git a/public/terrain/19/858524/354022.terrain b/public/terrain/19/858524/354022.terrain new file mode 100644 index 000000000..461f7c3e5 Binary files /dev/null and b/public/terrain/19/858524/354022.terrain differ diff --git a/public/terrain/19/858524/354023.terrain b/public/terrain/19/858524/354023.terrain new file mode 100644 index 000000000..6c1c81d8e Binary files /dev/null and b/public/terrain/19/858524/354023.terrain differ diff --git a/public/terrain/19/858524/354024.terrain b/public/terrain/19/858524/354024.terrain new file mode 100644 index 000000000..c792fb340 Binary files /dev/null and b/public/terrain/19/858524/354024.terrain differ diff --git a/public/terrain/19/858524/354025.terrain b/public/terrain/19/858524/354025.terrain new file mode 100644 index 000000000..face7bda9 Binary files /dev/null and b/public/terrain/19/858524/354025.terrain differ diff --git a/public/terrain/19/858524/354026.terrain b/public/terrain/19/858524/354026.terrain new file mode 100644 index 000000000..379fb3d80 Binary files /dev/null and b/public/terrain/19/858524/354026.terrain differ diff --git a/public/terrain/19/858524/354027.terrain b/public/terrain/19/858524/354027.terrain new file mode 100644 index 000000000..65b7e495e Binary files /dev/null and b/public/terrain/19/858524/354027.terrain differ diff --git a/public/terrain/19/858524/354028.terrain b/public/terrain/19/858524/354028.terrain new file mode 100644 index 000000000..98f81765d Binary files /dev/null and b/public/terrain/19/858524/354028.terrain differ diff --git a/public/terrain/19/858524/354029.terrain b/public/terrain/19/858524/354029.terrain new file mode 100644 index 000000000..8c3637809 Binary files /dev/null and b/public/terrain/19/858524/354029.terrain differ diff --git a/public/terrain/19/858524/354030.terrain b/public/terrain/19/858524/354030.terrain new file mode 100644 index 000000000..bf8261639 Binary files /dev/null and b/public/terrain/19/858524/354030.terrain differ diff --git a/public/terrain/19/858524/354031.terrain b/public/terrain/19/858524/354031.terrain new file mode 100644 index 000000000..cf99fe876 Binary files /dev/null and b/public/terrain/19/858524/354031.terrain differ diff --git a/public/terrain/19/858524/354032.terrain b/public/terrain/19/858524/354032.terrain new file mode 100644 index 000000000..851ce705a Binary files /dev/null and b/public/terrain/19/858524/354032.terrain differ diff --git a/public/terrain/19/858524/354033.terrain b/public/terrain/19/858524/354033.terrain new file mode 100644 index 000000000..a8c0be8d5 Binary files /dev/null and b/public/terrain/19/858524/354033.terrain differ diff --git a/public/terrain/19/858524/354034.terrain b/public/terrain/19/858524/354034.terrain new file mode 100644 index 000000000..04e66543b Binary files /dev/null and b/public/terrain/19/858524/354034.terrain differ diff --git a/public/terrain/19/858524/354035.terrain b/public/terrain/19/858524/354035.terrain new file mode 100644 index 000000000..a0e7c49e6 Binary files /dev/null and b/public/terrain/19/858524/354035.terrain differ diff --git a/public/terrain/19/858524/354036.terrain b/public/terrain/19/858524/354036.terrain new file mode 100644 index 000000000..7df65b235 Binary files /dev/null and b/public/terrain/19/858524/354036.terrain differ diff --git a/public/terrain/19/858524/354037.terrain b/public/terrain/19/858524/354037.terrain new file mode 100644 index 000000000..e2201f5cc Binary files /dev/null and b/public/terrain/19/858524/354037.terrain differ diff --git a/public/terrain/19/858524/354038.terrain b/public/terrain/19/858524/354038.terrain new file mode 100644 index 000000000..bbaef716a Binary files /dev/null and b/public/terrain/19/858524/354038.terrain differ diff --git a/public/terrain/19/858524/354039.terrain b/public/terrain/19/858524/354039.terrain new file mode 100644 index 000000000..bf545a514 Binary files /dev/null and b/public/terrain/19/858524/354039.terrain differ diff --git a/public/terrain/19/858524/354040.terrain b/public/terrain/19/858524/354040.terrain new file mode 100644 index 000000000..f3360c4b9 Binary files /dev/null and b/public/terrain/19/858524/354040.terrain differ diff --git a/public/terrain/19/858524/354041.terrain b/public/terrain/19/858524/354041.terrain new file mode 100644 index 000000000..93113dcd4 Binary files /dev/null and b/public/terrain/19/858524/354041.terrain differ diff --git a/public/terrain/19/858524/354042.terrain b/public/terrain/19/858524/354042.terrain new file mode 100644 index 000000000..8ab99e8ec Binary files /dev/null and b/public/terrain/19/858524/354042.terrain differ diff --git a/public/terrain/19/858524/354043.terrain b/public/terrain/19/858524/354043.terrain new file mode 100644 index 000000000..965b18753 Binary files /dev/null and b/public/terrain/19/858524/354043.terrain differ diff --git a/public/terrain/19/858524/354044.terrain b/public/terrain/19/858524/354044.terrain new file mode 100644 index 000000000..8e1e157a4 Binary files /dev/null and b/public/terrain/19/858524/354044.terrain differ diff --git a/public/terrain/19/858524/354045.terrain b/public/terrain/19/858524/354045.terrain new file mode 100644 index 000000000..52845dc0b Binary files /dev/null and b/public/terrain/19/858524/354045.terrain differ diff --git a/public/terrain/19/858524/354046.terrain b/public/terrain/19/858524/354046.terrain new file mode 100644 index 000000000..9e12ffd94 Binary files /dev/null and b/public/terrain/19/858524/354046.terrain differ diff --git a/public/terrain/19/858524/354047.terrain b/public/terrain/19/858524/354047.terrain new file mode 100644 index 000000000..dbe5739f0 Binary files /dev/null and b/public/terrain/19/858524/354047.terrain differ diff --git a/public/terrain/19/858524/354048.terrain b/public/terrain/19/858524/354048.terrain new file mode 100644 index 000000000..ae454c510 Binary files /dev/null and b/public/terrain/19/858524/354048.terrain differ diff --git a/public/terrain/19/858524/354049.terrain b/public/terrain/19/858524/354049.terrain new file mode 100644 index 000000000..29878aae7 Binary files /dev/null and b/public/terrain/19/858524/354049.terrain differ diff --git a/public/terrain/19/858524/354050.terrain b/public/terrain/19/858524/354050.terrain new file mode 100644 index 000000000..d1a1d148d Binary files /dev/null and b/public/terrain/19/858524/354050.terrain differ diff --git a/public/terrain/19/858524/354051.terrain b/public/terrain/19/858524/354051.terrain new file mode 100644 index 000000000..8d1c170cb Binary files /dev/null and b/public/terrain/19/858524/354051.terrain differ diff --git a/public/terrain/19/858524/354052.terrain b/public/terrain/19/858524/354052.terrain new file mode 100644 index 000000000..a3201a149 Binary files /dev/null and b/public/terrain/19/858524/354052.terrain differ diff --git a/public/terrain/19/858524/354053.terrain b/public/terrain/19/858524/354053.terrain new file mode 100644 index 000000000..f499156c5 Binary files /dev/null and b/public/terrain/19/858524/354053.terrain differ diff --git a/public/terrain/19/858524/354054.terrain b/public/terrain/19/858524/354054.terrain new file mode 100644 index 000000000..b6587fd6d Binary files /dev/null and b/public/terrain/19/858524/354054.terrain differ diff --git a/public/terrain/19/858524/354055.terrain b/public/terrain/19/858524/354055.terrain new file mode 100644 index 000000000..67ea89815 Binary files /dev/null and b/public/terrain/19/858524/354055.terrain differ diff --git a/public/terrain/19/858524/354056.terrain b/public/terrain/19/858524/354056.terrain new file mode 100644 index 000000000..de725c32c Binary files /dev/null and b/public/terrain/19/858524/354056.terrain differ diff --git a/public/terrain/19/858524/354057.terrain b/public/terrain/19/858524/354057.terrain new file mode 100644 index 000000000..1e3fb90dc Binary files /dev/null and b/public/terrain/19/858524/354057.terrain differ diff --git a/public/terrain/19/858524/354058.terrain b/public/terrain/19/858524/354058.terrain new file mode 100644 index 000000000..1f6761d6a Binary files /dev/null and b/public/terrain/19/858524/354058.terrain differ diff --git a/public/terrain/19/858524/354059.terrain b/public/terrain/19/858524/354059.terrain new file mode 100644 index 000000000..ffafe298e Binary files /dev/null and b/public/terrain/19/858524/354059.terrain differ diff --git a/public/terrain/19/858525/353743.terrain b/public/terrain/19/858525/353743.terrain new file mode 100644 index 000000000..959e0683e Binary files /dev/null and b/public/terrain/19/858525/353743.terrain differ diff --git a/public/terrain/19/858525/353744.terrain b/public/terrain/19/858525/353744.terrain new file mode 100644 index 000000000..d9cc0013e Binary files /dev/null and b/public/terrain/19/858525/353744.terrain differ diff --git a/public/terrain/19/858525/353745.terrain b/public/terrain/19/858525/353745.terrain new file mode 100644 index 000000000..217b7bc90 Binary files /dev/null and b/public/terrain/19/858525/353745.terrain differ diff --git a/public/terrain/19/858525/353746.terrain b/public/terrain/19/858525/353746.terrain new file mode 100644 index 000000000..663545156 Binary files /dev/null and b/public/terrain/19/858525/353746.terrain differ diff --git a/public/terrain/19/858525/353747.terrain b/public/terrain/19/858525/353747.terrain new file mode 100644 index 000000000..5384b3c84 Binary files /dev/null and b/public/terrain/19/858525/353747.terrain differ diff --git a/public/terrain/19/858525/353748.terrain b/public/terrain/19/858525/353748.terrain new file mode 100644 index 000000000..1188d6100 Binary files /dev/null and b/public/terrain/19/858525/353748.terrain differ diff --git a/public/terrain/19/858525/353749.terrain b/public/terrain/19/858525/353749.terrain new file mode 100644 index 000000000..dd45e7c1e Binary files /dev/null and b/public/terrain/19/858525/353749.terrain differ diff --git a/public/terrain/19/858525/353750.terrain b/public/terrain/19/858525/353750.terrain new file mode 100644 index 000000000..5e5ceef73 Binary files /dev/null and b/public/terrain/19/858525/353750.terrain differ diff --git a/public/terrain/19/858525/353751.terrain b/public/terrain/19/858525/353751.terrain new file mode 100644 index 000000000..1d8ae797e Binary files /dev/null and b/public/terrain/19/858525/353751.terrain differ diff --git a/public/terrain/19/858525/353752.terrain b/public/terrain/19/858525/353752.terrain new file mode 100644 index 000000000..4a0e3a2e6 Binary files /dev/null and b/public/terrain/19/858525/353752.terrain differ diff --git a/public/terrain/19/858525/353753.terrain b/public/terrain/19/858525/353753.terrain new file mode 100644 index 000000000..60c358afe Binary files /dev/null and b/public/terrain/19/858525/353753.terrain differ diff --git a/public/terrain/19/858525/353754.terrain b/public/terrain/19/858525/353754.terrain new file mode 100644 index 000000000..fb8ff150e Binary files /dev/null and b/public/terrain/19/858525/353754.terrain differ diff --git a/public/terrain/19/858525/353755.terrain b/public/terrain/19/858525/353755.terrain new file mode 100644 index 000000000..1b23f3e7e Binary files /dev/null and b/public/terrain/19/858525/353755.terrain differ diff --git a/public/terrain/19/858525/353756.terrain b/public/terrain/19/858525/353756.terrain new file mode 100644 index 000000000..78ec62e83 Binary files /dev/null and b/public/terrain/19/858525/353756.terrain differ diff --git a/public/terrain/19/858525/353757.terrain b/public/terrain/19/858525/353757.terrain new file mode 100644 index 000000000..14472cc93 Binary files /dev/null and b/public/terrain/19/858525/353757.terrain differ diff --git a/public/terrain/19/858525/353758.terrain b/public/terrain/19/858525/353758.terrain new file mode 100644 index 000000000..c12593f46 Binary files /dev/null and b/public/terrain/19/858525/353758.terrain differ diff --git a/public/terrain/19/858525/353759.terrain b/public/terrain/19/858525/353759.terrain new file mode 100644 index 000000000..3e05f9042 Binary files /dev/null and b/public/terrain/19/858525/353759.terrain differ diff --git a/public/terrain/19/858525/353760.terrain b/public/terrain/19/858525/353760.terrain new file mode 100644 index 000000000..0be585c48 Binary files /dev/null and b/public/terrain/19/858525/353760.terrain differ diff --git a/public/terrain/19/858525/353761.terrain b/public/terrain/19/858525/353761.terrain new file mode 100644 index 000000000..667edf042 Binary files /dev/null and b/public/terrain/19/858525/353761.terrain differ diff --git a/public/terrain/19/858525/353762.terrain b/public/terrain/19/858525/353762.terrain new file mode 100644 index 000000000..72a3021b3 Binary files /dev/null and b/public/terrain/19/858525/353762.terrain differ diff --git a/public/terrain/19/858525/353763.terrain b/public/terrain/19/858525/353763.terrain new file mode 100644 index 000000000..aee59e782 Binary files /dev/null and b/public/terrain/19/858525/353763.terrain differ diff --git a/public/terrain/19/858525/353764.terrain b/public/terrain/19/858525/353764.terrain new file mode 100644 index 000000000..9c8e79c8a Binary files /dev/null and b/public/terrain/19/858525/353764.terrain differ diff --git a/public/terrain/19/858525/353765.terrain b/public/terrain/19/858525/353765.terrain new file mode 100644 index 000000000..665756432 Binary files /dev/null and b/public/terrain/19/858525/353765.terrain differ diff --git a/public/terrain/19/858525/353766.terrain b/public/terrain/19/858525/353766.terrain new file mode 100644 index 000000000..293b587f2 Binary files /dev/null and b/public/terrain/19/858525/353766.terrain differ diff --git a/public/terrain/19/858525/353767.terrain b/public/terrain/19/858525/353767.terrain new file mode 100644 index 000000000..bd195a319 Binary files /dev/null and b/public/terrain/19/858525/353767.terrain differ diff --git a/public/terrain/19/858525/353768.terrain b/public/terrain/19/858525/353768.terrain new file mode 100644 index 000000000..ad65eecf6 Binary files /dev/null and b/public/terrain/19/858525/353768.terrain differ diff --git a/public/terrain/19/858525/353769.terrain b/public/terrain/19/858525/353769.terrain new file mode 100644 index 000000000..c648281f1 Binary files /dev/null and b/public/terrain/19/858525/353769.terrain differ diff --git a/public/terrain/19/858525/353770.terrain b/public/terrain/19/858525/353770.terrain new file mode 100644 index 000000000..f4ca5ac09 Binary files /dev/null and b/public/terrain/19/858525/353770.terrain differ diff --git a/public/terrain/19/858525/353771.terrain b/public/terrain/19/858525/353771.terrain new file mode 100644 index 000000000..273430850 Binary files /dev/null and b/public/terrain/19/858525/353771.terrain differ diff --git a/public/terrain/19/858525/353772.terrain b/public/terrain/19/858525/353772.terrain new file mode 100644 index 000000000..dc39f7cd3 Binary files /dev/null and b/public/terrain/19/858525/353772.terrain differ diff --git a/public/terrain/19/858525/353773.terrain b/public/terrain/19/858525/353773.terrain new file mode 100644 index 000000000..92997df26 Binary files /dev/null and b/public/terrain/19/858525/353773.terrain differ diff --git a/public/terrain/19/858525/353774.terrain b/public/terrain/19/858525/353774.terrain new file mode 100644 index 000000000..888cd5356 Binary files /dev/null and b/public/terrain/19/858525/353774.terrain differ diff --git a/public/terrain/19/858525/353775.terrain b/public/terrain/19/858525/353775.terrain new file mode 100644 index 000000000..7bc5088c1 Binary files /dev/null and b/public/terrain/19/858525/353775.terrain differ diff --git a/public/terrain/19/858525/353776.terrain b/public/terrain/19/858525/353776.terrain new file mode 100644 index 000000000..bc57d9d05 Binary files /dev/null and b/public/terrain/19/858525/353776.terrain differ diff --git a/public/terrain/19/858525/353777.terrain b/public/terrain/19/858525/353777.terrain new file mode 100644 index 000000000..31bf49a1a Binary files /dev/null and b/public/terrain/19/858525/353777.terrain differ diff --git a/public/terrain/19/858525/353778.terrain b/public/terrain/19/858525/353778.terrain new file mode 100644 index 000000000..cfcbdda63 Binary files /dev/null and b/public/terrain/19/858525/353778.terrain differ diff --git a/public/terrain/19/858525/353779.terrain b/public/terrain/19/858525/353779.terrain new file mode 100644 index 000000000..951c9ee93 Binary files /dev/null and b/public/terrain/19/858525/353779.terrain differ diff --git a/public/terrain/19/858525/353780.terrain b/public/terrain/19/858525/353780.terrain new file mode 100644 index 000000000..002d14476 Binary files /dev/null and b/public/terrain/19/858525/353780.terrain differ diff --git a/public/terrain/19/858525/353781.terrain b/public/terrain/19/858525/353781.terrain new file mode 100644 index 000000000..bd89da937 Binary files /dev/null and b/public/terrain/19/858525/353781.terrain differ diff --git a/public/terrain/19/858525/353782.terrain b/public/terrain/19/858525/353782.terrain new file mode 100644 index 000000000..b36ebc924 Binary files /dev/null and b/public/terrain/19/858525/353782.terrain differ diff --git a/public/terrain/19/858525/353783.terrain b/public/terrain/19/858525/353783.terrain new file mode 100644 index 000000000..12feaaefd Binary files /dev/null and b/public/terrain/19/858525/353783.terrain differ diff --git a/public/terrain/19/858525/353784.terrain b/public/terrain/19/858525/353784.terrain new file mode 100644 index 000000000..f6df7421c Binary files /dev/null and b/public/terrain/19/858525/353784.terrain differ diff --git a/public/terrain/19/858525/353785.terrain b/public/terrain/19/858525/353785.terrain new file mode 100644 index 000000000..e6893fd2a Binary files /dev/null and b/public/terrain/19/858525/353785.terrain differ diff --git a/public/terrain/19/858525/353786.terrain b/public/terrain/19/858525/353786.terrain new file mode 100644 index 000000000..ab2f6d23f Binary files /dev/null and b/public/terrain/19/858525/353786.terrain differ diff --git a/public/terrain/19/858525/353787.terrain b/public/terrain/19/858525/353787.terrain new file mode 100644 index 000000000..b991490f5 Binary files /dev/null and b/public/terrain/19/858525/353787.terrain differ diff --git a/public/terrain/19/858525/353788.terrain b/public/terrain/19/858525/353788.terrain new file mode 100644 index 000000000..4909b905b Binary files /dev/null and b/public/terrain/19/858525/353788.terrain differ diff --git a/public/terrain/19/858525/353789.terrain b/public/terrain/19/858525/353789.terrain new file mode 100644 index 000000000..e1f8a823e Binary files /dev/null and b/public/terrain/19/858525/353789.terrain differ diff --git a/public/terrain/19/858525/353790.terrain b/public/terrain/19/858525/353790.terrain new file mode 100644 index 000000000..f87bce41d Binary files /dev/null and b/public/terrain/19/858525/353790.terrain differ diff --git a/public/terrain/19/858525/353791.terrain b/public/terrain/19/858525/353791.terrain new file mode 100644 index 000000000..ead1cebe9 Binary files /dev/null and b/public/terrain/19/858525/353791.terrain differ diff --git a/public/terrain/19/858525/353792.terrain b/public/terrain/19/858525/353792.terrain new file mode 100644 index 000000000..efad9650e Binary files /dev/null and b/public/terrain/19/858525/353792.terrain differ diff --git a/public/terrain/19/858525/353793.terrain b/public/terrain/19/858525/353793.terrain new file mode 100644 index 000000000..0b62bac75 Binary files /dev/null and b/public/terrain/19/858525/353793.terrain differ diff --git a/public/terrain/19/858525/353794.terrain b/public/terrain/19/858525/353794.terrain new file mode 100644 index 000000000..dbbd7cda4 Binary files /dev/null and b/public/terrain/19/858525/353794.terrain differ diff --git a/public/terrain/19/858525/353795.terrain b/public/terrain/19/858525/353795.terrain new file mode 100644 index 000000000..d35e9e89d Binary files /dev/null and b/public/terrain/19/858525/353795.terrain differ diff --git a/public/terrain/19/858525/353796.terrain b/public/terrain/19/858525/353796.terrain new file mode 100644 index 000000000..efcaa3de7 Binary files /dev/null and b/public/terrain/19/858525/353796.terrain differ diff --git a/public/terrain/19/858525/353797.terrain b/public/terrain/19/858525/353797.terrain new file mode 100644 index 000000000..52615d359 Binary files /dev/null and b/public/terrain/19/858525/353797.terrain differ diff --git a/public/terrain/19/858525/353798.terrain b/public/terrain/19/858525/353798.terrain new file mode 100644 index 000000000..7d2f754c0 Binary files /dev/null and b/public/terrain/19/858525/353798.terrain differ diff --git a/public/terrain/19/858525/353799.terrain b/public/terrain/19/858525/353799.terrain new file mode 100644 index 000000000..1ddcdb9dc Binary files /dev/null and b/public/terrain/19/858525/353799.terrain differ diff --git a/public/terrain/19/858525/353800.terrain b/public/terrain/19/858525/353800.terrain new file mode 100644 index 000000000..6c8d4b670 Binary files /dev/null and b/public/terrain/19/858525/353800.terrain differ diff --git a/public/terrain/19/858525/353801.terrain b/public/terrain/19/858525/353801.terrain new file mode 100644 index 000000000..caada9d1c Binary files /dev/null and b/public/terrain/19/858525/353801.terrain differ diff --git a/public/terrain/19/858525/353802.terrain b/public/terrain/19/858525/353802.terrain new file mode 100644 index 000000000..5f4ffbc0b Binary files /dev/null and b/public/terrain/19/858525/353802.terrain differ diff --git a/public/terrain/19/858525/353803.terrain b/public/terrain/19/858525/353803.terrain new file mode 100644 index 000000000..27652c115 Binary files /dev/null and b/public/terrain/19/858525/353803.terrain differ diff --git a/public/terrain/19/858525/353804.terrain b/public/terrain/19/858525/353804.terrain new file mode 100644 index 000000000..921f3de94 Binary files /dev/null and b/public/terrain/19/858525/353804.terrain differ diff --git a/public/terrain/19/858525/353805.terrain b/public/terrain/19/858525/353805.terrain new file mode 100644 index 000000000..e635f2fd5 Binary files /dev/null and b/public/terrain/19/858525/353805.terrain differ diff --git a/public/terrain/19/858525/353806.terrain b/public/terrain/19/858525/353806.terrain new file mode 100644 index 000000000..37b2fd025 Binary files /dev/null and b/public/terrain/19/858525/353806.terrain differ diff --git a/public/terrain/19/858525/353807.terrain b/public/terrain/19/858525/353807.terrain new file mode 100644 index 000000000..cf257a4d7 Binary files /dev/null and b/public/terrain/19/858525/353807.terrain differ diff --git a/public/terrain/19/858525/353808.terrain b/public/terrain/19/858525/353808.terrain new file mode 100644 index 000000000..df5ba3338 Binary files /dev/null and b/public/terrain/19/858525/353808.terrain differ diff --git a/public/terrain/19/858525/353809.terrain b/public/terrain/19/858525/353809.terrain new file mode 100644 index 000000000..f0759a02c Binary files /dev/null and b/public/terrain/19/858525/353809.terrain differ diff --git a/public/terrain/19/858525/353810.terrain b/public/terrain/19/858525/353810.terrain new file mode 100644 index 000000000..a243e6c54 Binary files /dev/null and b/public/terrain/19/858525/353810.terrain differ diff --git a/public/terrain/19/858525/353811.terrain b/public/terrain/19/858525/353811.terrain new file mode 100644 index 000000000..528695858 Binary files /dev/null and b/public/terrain/19/858525/353811.terrain differ diff --git a/public/terrain/19/858525/353812.terrain b/public/terrain/19/858525/353812.terrain new file mode 100644 index 000000000..b47d11f82 Binary files /dev/null and b/public/terrain/19/858525/353812.terrain differ diff --git a/public/terrain/19/858525/353813.terrain b/public/terrain/19/858525/353813.terrain new file mode 100644 index 000000000..75e290768 Binary files /dev/null and b/public/terrain/19/858525/353813.terrain differ diff --git a/public/terrain/19/858525/353814.terrain b/public/terrain/19/858525/353814.terrain new file mode 100644 index 000000000..af92903fb Binary files /dev/null and b/public/terrain/19/858525/353814.terrain differ diff --git a/public/terrain/19/858525/353815.terrain b/public/terrain/19/858525/353815.terrain new file mode 100644 index 000000000..245638b9f Binary files /dev/null and b/public/terrain/19/858525/353815.terrain differ diff --git a/public/terrain/19/858525/353816.terrain b/public/terrain/19/858525/353816.terrain new file mode 100644 index 000000000..ee10569b6 Binary files /dev/null and b/public/terrain/19/858525/353816.terrain differ diff --git a/public/terrain/19/858525/353817.terrain b/public/terrain/19/858525/353817.terrain new file mode 100644 index 000000000..97226a504 Binary files /dev/null and b/public/terrain/19/858525/353817.terrain differ diff --git a/public/terrain/19/858525/353818.terrain b/public/terrain/19/858525/353818.terrain new file mode 100644 index 000000000..99039a400 Binary files /dev/null and b/public/terrain/19/858525/353818.terrain differ diff --git a/public/terrain/19/858525/353819.terrain b/public/terrain/19/858525/353819.terrain new file mode 100644 index 000000000..2e498d1ae Binary files /dev/null and b/public/terrain/19/858525/353819.terrain differ diff --git a/public/terrain/19/858525/353820.terrain b/public/terrain/19/858525/353820.terrain new file mode 100644 index 000000000..58086e256 Binary files /dev/null and b/public/terrain/19/858525/353820.terrain differ diff --git a/public/terrain/19/858525/353821.terrain b/public/terrain/19/858525/353821.terrain new file mode 100644 index 000000000..b2c5f5c09 Binary files /dev/null and b/public/terrain/19/858525/353821.terrain differ diff --git a/public/terrain/19/858525/353822.terrain b/public/terrain/19/858525/353822.terrain new file mode 100644 index 000000000..022bf4fdc Binary files /dev/null and b/public/terrain/19/858525/353822.terrain differ diff --git a/public/terrain/19/858525/353823.terrain b/public/terrain/19/858525/353823.terrain new file mode 100644 index 000000000..b09308041 Binary files /dev/null and b/public/terrain/19/858525/353823.terrain differ diff --git a/public/terrain/19/858525/353824.terrain b/public/terrain/19/858525/353824.terrain new file mode 100644 index 000000000..167b94155 Binary files /dev/null and b/public/terrain/19/858525/353824.terrain differ diff --git a/public/terrain/19/858525/353825.terrain b/public/terrain/19/858525/353825.terrain new file mode 100644 index 000000000..48acf1d3f Binary files /dev/null and b/public/terrain/19/858525/353825.terrain differ diff --git a/public/terrain/19/858525/353826.terrain b/public/terrain/19/858525/353826.terrain new file mode 100644 index 000000000..22b42c67c Binary files /dev/null and b/public/terrain/19/858525/353826.terrain differ diff --git a/public/terrain/19/858525/353827.terrain b/public/terrain/19/858525/353827.terrain new file mode 100644 index 000000000..3a3c149b8 Binary files /dev/null and b/public/terrain/19/858525/353827.terrain differ diff --git a/public/terrain/19/858525/353828.terrain b/public/terrain/19/858525/353828.terrain new file mode 100644 index 000000000..74c3cab34 Binary files /dev/null and b/public/terrain/19/858525/353828.terrain differ diff --git a/public/terrain/19/858525/353829.terrain b/public/terrain/19/858525/353829.terrain new file mode 100644 index 000000000..f00cf4c6b Binary files /dev/null and b/public/terrain/19/858525/353829.terrain differ diff --git a/public/terrain/19/858525/353830.terrain b/public/terrain/19/858525/353830.terrain new file mode 100644 index 000000000..a71fcb1a8 Binary files /dev/null and b/public/terrain/19/858525/353830.terrain differ diff --git a/public/terrain/19/858525/353831.terrain b/public/terrain/19/858525/353831.terrain new file mode 100644 index 000000000..07f707a55 Binary files /dev/null and b/public/terrain/19/858525/353831.terrain differ diff --git a/public/terrain/19/858525/353832.terrain b/public/terrain/19/858525/353832.terrain new file mode 100644 index 000000000..a870b03c4 Binary files /dev/null and b/public/terrain/19/858525/353832.terrain differ diff --git a/public/terrain/19/858525/353833.terrain b/public/terrain/19/858525/353833.terrain new file mode 100644 index 000000000..32b2748d9 Binary files /dev/null and b/public/terrain/19/858525/353833.terrain differ diff --git a/public/terrain/19/858525/353834.terrain b/public/terrain/19/858525/353834.terrain new file mode 100644 index 000000000..353ef6695 Binary files /dev/null and b/public/terrain/19/858525/353834.terrain differ diff --git a/public/terrain/19/858525/353835.terrain b/public/terrain/19/858525/353835.terrain new file mode 100644 index 000000000..f26a9462e Binary files /dev/null and b/public/terrain/19/858525/353835.terrain differ diff --git a/public/terrain/19/858525/353836.terrain b/public/terrain/19/858525/353836.terrain new file mode 100644 index 000000000..dbe1d4448 Binary files /dev/null and b/public/terrain/19/858525/353836.terrain differ diff --git a/public/terrain/19/858525/353837.terrain b/public/terrain/19/858525/353837.terrain new file mode 100644 index 000000000..8df5177eb Binary files /dev/null and b/public/terrain/19/858525/353837.terrain differ diff --git a/public/terrain/19/858525/353838.terrain b/public/terrain/19/858525/353838.terrain new file mode 100644 index 000000000..c64946822 Binary files /dev/null and b/public/terrain/19/858525/353838.terrain differ diff --git a/public/terrain/19/858525/353839.terrain b/public/terrain/19/858525/353839.terrain new file mode 100644 index 000000000..e735dcbe2 Binary files /dev/null and b/public/terrain/19/858525/353839.terrain differ diff --git a/public/terrain/19/858525/353840.terrain b/public/terrain/19/858525/353840.terrain new file mode 100644 index 000000000..9174fb23d Binary files /dev/null and b/public/terrain/19/858525/353840.terrain differ diff --git a/public/terrain/19/858525/353841.terrain b/public/terrain/19/858525/353841.terrain new file mode 100644 index 000000000..82df599d3 Binary files /dev/null and b/public/terrain/19/858525/353841.terrain differ diff --git a/public/terrain/19/858525/353842.terrain b/public/terrain/19/858525/353842.terrain new file mode 100644 index 000000000..1a14f35c7 Binary files /dev/null and b/public/terrain/19/858525/353842.terrain differ diff --git a/public/terrain/19/858525/353843.terrain b/public/terrain/19/858525/353843.terrain new file mode 100644 index 000000000..54e4a3b83 Binary files /dev/null and b/public/terrain/19/858525/353843.terrain differ diff --git a/public/terrain/19/858525/353844.terrain b/public/terrain/19/858525/353844.terrain new file mode 100644 index 000000000..d16b60dd9 Binary files /dev/null and b/public/terrain/19/858525/353844.terrain differ diff --git a/public/terrain/19/858525/353845.terrain b/public/terrain/19/858525/353845.terrain new file mode 100644 index 000000000..ebf489575 Binary files /dev/null and b/public/terrain/19/858525/353845.terrain differ diff --git a/public/terrain/19/858525/353846.terrain b/public/terrain/19/858525/353846.terrain new file mode 100644 index 000000000..b1f2b0839 Binary files /dev/null and b/public/terrain/19/858525/353846.terrain differ diff --git a/public/terrain/19/858525/353847.terrain b/public/terrain/19/858525/353847.terrain new file mode 100644 index 000000000..654487ae3 Binary files /dev/null and b/public/terrain/19/858525/353847.terrain differ diff --git a/public/terrain/19/858525/353848.terrain b/public/terrain/19/858525/353848.terrain new file mode 100644 index 000000000..4a0b51937 Binary files /dev/null and b/public/terrain/19/858525/353848.terrain differ diff --git a/public/terrain/19/858525/353849.terrain b/public/terrain/19/858525/353849.terrain new file mode 100644 index 000000000..c7db30185 Binary files /dev/null and b/public/terrain/19/858525/353849.terrain differ diff --git a/public/terrain/19/858525/353850.terrain b/public/terrain/19/858525/353850.terrain new file mode 100644 index 000000000..783b6f630 Binary files /dev/null and b/public/terrain/19/858525/353850.terrain differ diff --git a/public/terrain/19/858525/353851.terrain b/public/terrain/19/858525/353851.terrain new file mode 100644 index 000000000..bf7031eea Binary files /dev/null and b/public/terrain/19/858525/353851.terrain differ diff --git a/public/terrain/19/858525/353852.terrain b/public/terrain/19/858525/353852.terrain new file mode 100644 index 000000000..8fe80f768 Binary files /dev/null and b/public/terrain/19/858525/353852.terrain differ diff --git a/public/terrain/19/858525/353853.terrain b/public/terrain/19/858525/353853.terrain new file mode 100644 index 000000000..27eab5fcc Binary files /dev/null and b/public/terrain/19/858525/353853.terrain differ diff --git a/public/terrain/19/858525/353854.terrain b/public/terrain/19/858525/353854.terrain new file mode 100644 index 000000000..bc0955b11 Binary files /dev/null and b/public/terrain/19/858525/353854.terrain differ diff --git a/public/terrain/19/858525/353855.terrain b/public/terrain/19/858525/353855.terrain new file mode 100644 index 000000000..47ae9c12c Binary files /dev/null and b/public/terrain/19/858525/353855.terrain differ diff --git a/public/terrain/19/858525/353856.terrain b/public/terrain/19/858525/353856.terrain new file mode 100644 index 000000000..752f2822c Binary files /dev/null and b/public/terrain/19/858525/353856.terrain differ diff --git a/public/terrain/19/858525/353857.terrain b/public/terrain/19/858525/353857.terrain new file mode 100644 index 000000000..0352738ad Binary files /dev/null and b/public/terrain/19/858525/353857.terrain differ diff --git a/public/terrain/19/858525/353858.terrain b/public/terrain/19/858525/353858.terrain new file mode 100644 index 000000000..3984dc9fd Binary files /dev/null and b/public/terrain/19/858525/353858.terrain differ diff --git a/public/terrain/19/858525/353859.terrain b/public/terrain/19/858525/353859.terrain new file mode 100644 index 000000000..146a0dd36 Binary files /dev/null and b/public/terrain/19/858525/353859.terrain differ diff --git a/public/terrain/19/858525/353860.terrain b/public/terrain/19/858525/353860.terrain new file mode 100644 index 000000000..ed945e1bc Binary files /dev/null and b/public/terrain/19/858525/353860.terrain differ diff --git a/public/terrain/19/858525/353861.terrain b/public/terrain/19/858525/353861.terrain new file mode 100644 index 000000000..062ac24d3 Binary files /dev/null and b/public/terrain/19/858525/353861.terrain differ diff --git a/public/terrain/19/858525/353862.terrain b/public/terrain/19/858525/353862.terrain new file mode 100644 index 000000000..b94dca723 Binary files /dev/null and b/public/terrain/19/858525/353862.terrain differ diff --git a/public/terrain/19/858525/353863.terrain b/public/terrain/19/858525/353863.terrain new file mode 100644 index 000000000..3e5d6b47a Binary files /dev/null and b/public/terrain/19/858525/353863.terrain differ diff --git a/public/terrain/19/858525/353864.terrain b/public/terrain/19/858525/353864.terrain new file mode 100644 index 000000000..2fe1810e8 Binary files /dev/null and b/public/terrain/19/858525/353864.terrain differ diff --git a/public/terrain/19/858525/353865.terrain b/public/terrain/19/858525/353865.terrain new file mode 100644 index 000000000..d34b8ca9d Binary files /dev/null and b/public/terrain/19/858525/353865.terrain differ diff --git a/public/terrain/19/858525/353866.terrain b/public/terrain/19/858525/353866.terrain new file mode 100644 index 000000000..bd3f0f9f7 Binary files /dev/null and b/public/terrain/19/858525/353866.terrain differ diff --git a/public/terrain/19/858525/353867.terrain b/public/terrain/19/858525/353867.terrain new file mode 100644 index 000000000..aa14980f4 Binary files /dev/null and b/public/terrain/19/858525/353867.terrain differ diff --git a/public/terrain/19/858525/353868.terrain b/public/terrain/19/858525/353868.terrain new file mode 100644 index 000000000..36c63f83a Binary files /dev/null and b/public/terrain/19/858525/353868.terrain differ diff --git a/public/terrain/19/858525/353869.terrain b/public/terrain/19/858525/353869.terrain new file mode 100644 index 000000000..1b1541b96 Binary files /dev/null and b/public/terrain/19/858525/353869.terrain differ diff --git a/public/terrain/19/858525/353870.terrain b/public/terrain/19/858525/353870.terrain new file mode 100644 index 000000000..dc60f1a8b Binary files /dev/null and b/public/terrain/19/858525/353870.terrain differ diff --git a/public/terrain/19/858525/353871.terrain b/public/terrain/19/858525/353871.terrain new file mode 100644 index 000000000..634cdacc2 Binary files /dev/null and b/public/terrain/19/858525/353871.terrain differ diff --git a/public/terrain/19/858525/353872.terrain b/public/terrain/19/858525/353872.terrain new file mode 100644 index 000000000..d91c81099 Binary files /dev/null and b/public/terrain/19/858525/353872.terrain differ diff --git a/public/terrain/19/858525/353873.terrain b/public/terrain/19/858525/353873.terrain new file mode 100644 index 000000000..84929d7f7 Binary files /dev/null and b/public/terrain/19/858525/353873.terrain differ diff --git a/public/terrain/19/858525/353874.terrain b/public/terrain/19/858525/353874.terrain new file mode 100644 index 000000000..5164b0ef8 Binary files /dev/null and b/public/terrain/19/858525/353874.terrain differ diff --git a/public/terrain/19/858525/353875.terrain b/public/terrain/19/858525/353875.terrain new file mode 100644 index 000000000..b673d41c4 Binary files /dev/null and b/public/terrain/19/858525/353875.terrain differ diff --git a/public/terrain/19/858525/353876.terrain b/public/terrain/19/858525/353876.terrain new file mode 100644 index 000000000..fdc6de079 Binary files /dev/null and b/public/terrain/19/858525/353876.terrain differ diff --git a/public/terrain/19/858525/353877.terrain b/public/terrain/19/858525/353877.terrain new file mode 100644 index 000000000..3a04d0233 Binary files /dev/null and b/public/terrain/19/858525/353877.terrain differ diff --git a/public/terrain/19/858525/353878.terrain b/public/terrain/19/858525/353878.terrain new file mode 100644 index 000000000..897fdd7a9 Binary files /dev/null and b/public/terrain/19/858525/353878.terrain differ diff --git a/public/terrain/19/858525/353879.terrain b/public/terrain/19/858525/353879.terrain new file mode 100644 index 000000000..56f492aaf Binary files /dev/null and b/public/terrain/19/858525/353879.terrain differ diff --git a/public/terrain/19/858525/353880.terrain b/public/terrain/19/858525/353880.terrain new file mode 100644 index 000000000..ea22aab70 Binary files /dev/null and b/public/terrain/19/858525/353880.terrain differ diff --git a/public/terrain/19/858525/353881.terrain b/public/terrain/19/858525/353881.terrain new file mode 100644 index 000000000..f9aec4688 Binary files /dev/null and b/public/terrain/19/858525/353881.terrain differ diff --git a/public/terrain/19/858525/353882.terrain b/public/terrain/19/858525/353882.terrain new file mode 100644 index 000000000..6d01ba087 Binary files /dev/null and b/public/terrain/19/858525/353882.terrain differ diff --git a/public/terrain/19/858525/353883.terrain b/public/terrain/19/858525/353883.terrain new file mode 100644 index 000000000..a6eaf34be Binary files /dev/null and b/public/terrain/19/858525/353883.terrain differ diff --git a/public/terrain/19/858525/353884.terrain b/public/terrain/19/858525/353884.terrain new file mode 100644 index 000000000..1b07259e3 Binary files /dev/null and b/public/terrain/19/858525/353884.terrain differ diff --git a/public/terrain/19/858525/353885.terrain b/public/terrain/19/858525/353885.terrain new file mode 100644 index 000000000..b4ff5c7d5 Binary files /dev/null and b/public/terrain/19/858525/353885.terrain differ diff --git a/public/terrain/19/858525/353886.terrain b/public/terrain/19/858525/353886.terrain new file mode 100644 index 000000000..e3b8de465 Binary files /dev/null and b/public/terrain/19/858525/353886.terrain differ diff --git a/public/terrain/19/858525/353887.terrain b/public/terrain/19/858525/353887.terrain new file mode 100644 index 000000000..b75c11dbc Binary files /dev/null and b/public/terrain/19/858525/353887.terrain differ diff --git a/public/terrain/19/858525/353888.terrain b/public/terrain/19/858525/353888.terrain new file mode 100644 index 000000000..e322cd233 Binary files /dev/null and b/public/terrain/19/858525/353888.terrain differ diff --git a/public/terrain/19/858525/353889.terrain b/public/terrain/19/858525/353889.terrain new file mode 100644 index 000000000..b2e2f1326 Binary files /dev/null and b/public/terrain/19/858525/353889.terrain differ diff --git a/public/terrain/19/858525/353890.terrain b/public/terrain/19/858525/353890.terrain new file mode 100644 index 000000000..bff45125a Binary files /dev/null and b/public/terrain/19/858525/353890.terrain differ diff --git a/public/terrain/19/858525/353891.terrain b/public/terrain/19/858525/353891.terrain new file mode 100644 index 000000000..ad518e657 Binary files /dev/null and b/public/terrain/19/858525/353891.terrain differ diff --git a/public/terrain/19/858525/353892.terrain b/public/terrain/19/858525/353892.terrain new file mode 100644 index 000000000..c91b25695 Binary files /dev/null and b/public/terrain/19/858525/353892.terrain differ diff --git a/public/terrain/19/858525/353893.terrain b/public/terrain/19/858525/353893.terrain new file mode 100644 index 000000000..dd7d8aba9 Binary files /dev/null and b/public/terrain/19/858525/353893.terrain differ diff --git a/public/terrain/19/858525/353894.terrain b/public/terrain/19/858525/353894.terrain new file mode 100644 index 000000000..d50d721fa Binary files /dev/null and b/public/terrain/19/858525/353894.terrain differ diff --git a/public/terrain/19/858525/353895.terrain b/public/terrain/19/858525/353895.terrain new file mode 100644 index 000000000..6382984d6 Binary files /dev/null and b/public/terrain/19/858525/353895.terrain differ diff --git a/public/terrain/19/858525/353896.terrain b/public/terrain/19/858525/353896.terrain new file mode 100644 index 000000000..6a5e60816 Binary files /dev/null and b/public/terrain/19/858525/353896.terrain differ diff --git a/public/terrain/19/858525/353897.terrain b/public/terrain/19/858525/353897.terrain new file mode 100644 index 000000000..505d75136 Binary files /dev/null and b/public/terrain/19/858525/353897.terrain differ diff --git a/public/terrain/19/858525/353898.terrain b/public/terrain/19/858525/353898.terrain new file mode 100644 index 000000000..b96123845 Binary files /dev/null and b/public/terrain/19/858525/353898.terrain differ diff --git a/public/terrain/19/858525/353899.terrain b/public/terrain/19/858525/353899.terrain new file mode 100644 index 000000000..70c0659c3 Binary files /dev/null and b/public/terrain/19/858525/353899.terrain differ diff --git a/public/terrain/19/858525/353900.terrain b/public/terrain/19/858525/353900.terrain new file mode 100644 index 000000000..5760040e3 Binary files /dev/null and b/public/terrain/19/858525/353900.terrain differ diff --git a/public/terrain/19/858525/353901.terrain b/public/terrain/19/858525/353901.terrain new file mode 100644 index 000000000..d206cfb33 Binary files /dev/null and b/public/terrain/19/858525/353901.terrain differ diff --git a/public/terrain/19/858525/353902.terrain b/public/terrain/19/858525/353902.terrain new file mode 100644 index 000000000..d580b2019 Binary files /dev/null and b/public/terrain/19/858525/353902.terrain differ diff --git a/public/terrain/19/858525/353903.terrain b/public/terrain/19/858525/353903.terrain new file mode 100644 index 000000000..cddfa5db8 Binary files /dev/null and b/public/terrain/19/858525/353903.terrain differ diff --git a/public/terrain/19/858525/353904.terrain b/public/terrain/19/858525/353904.terrain new file mode 100644 index 000000000..ebb823565 Binary files /dev/null and b/public/terrain/19/858525/353904.terrain differ diff --git a/public/terrain/19/858525/353905.terrain b/public/terrain/19/858525/353905.terrain new file mode 100644 index 000000000..4cc219a07 Binary files /dev/null and b/public/terrain/19/858525/353905.terrain differ diff --git a/public/terrain/19/858525/353906.terrain b/public/terrain/19/858525/353906.terrain new file mode 100644 index 000000000..d97a2d1eb Binary files /dev/null and b/public/terrain/19/858525/353906.terrain differ diff --git a/public/terrain/19/858525/353907.terrain b/public/terrain/19/858525/353907.terrain new file mode 100644 index 000000000..6924746ed Binary files /dev/null and b/public/terrain/19/858525/353907.terrain differ diff --git a/public/terrain/19/858525/353908.terrain b/public/terrain/19/858525/353908.terrain new file mode 100644 index 000000000..f4291c40b Binary files /dev/null and b/public/terrain/19/858525/353908.terrain differ diff --git a/public/terrain/19/858525/353909.terrain b/public/terrain/19/858525/353909.terrain new file mode 100644 index 000000000..3fecda440 Binary files /dev/null and b/public/terrain/19/858525/353909.terrain differ diff --git a/public/terrain/19/858525/353910.terrain b/public/terrain/19/858525/353910.terrain new file mode 100644 index 000000000..55b6cd59f Binary files /dev/null and b/public/terrain/19/858525/353910.terrain differ diff --git a/public/terrain/19/858525/353911.terrain b/public/terrain/19/858525/353911.terrain new file mode 100644 index 000000000..b88b8c584 Binary files /dev/null and b/public/terrain/19/858525/353911.terrain differ diff --git a/public/terrain/19/858525/353912.terrain b/public/terrain/19/858525/353912.terrain new file mode 100644 index 000000000..75a440b18 Binary files /dev/null and b/public/terrain/19/858525/353912.terrain differ diff --git a/public/terrain/19/858525/353913.terrain b/public/terrain/19/858525/353913.terrain new file mode 100644 index 000000000..18c89c916 Binary files /dev/null and b/public/terrain/19/858525/353913.terrain differ diff --git a/public/terrain/19/858525/353914.terrain b/public/terrain/19/858525/353914.terrain new file mode 100644 index 000000000..5a7c059b5 Binary files /dev/null and b/public/terrain/19/858525/353914.terrain differ diff --git a/public/terrain/19/858525/353915.terrain b/public/terrain/19/858525/353915.terrain new file mode 100644 index 000000000..dd14a826a Binary files /dev/null and b/public/terrain/19/858525/353915.terrain differ diff --git a/public/terrain/19/858525/353916.terrain b/public/terrain/19/858525/353916.terrain new file mode 100644 index 000000000..433b0e71b Binary files /dev/null and b/public/terrain/19/858525/353916.terrain differ diff --git a/public/terrain/19/858525/353917.terrain b/public/terrain/19/858525/353917.terrain new file mode 100644 index 000000000..070b64f0a Binary files /dev/null and b/public/terrain/19/858525/353917.terrain differ diff --git a/public/terrain/19/858525/353918.terrain b/public/terrain/19/858525/353918.terrain new file mode 100644 index 000000000..80ec4d755 Binary files /dev/null and b/public/terrain/19/858525/353918.terrain differ diff --git a/public/terrain/19/858525/353919.terrain b/public/terrain/19/858525/353919.terrain new file mode 100644 index 000000000..fbb63c730 Binary files /dev/null and b/public/terrain/19/858525/353919.terrain differ diff --git a/public/terrain/19/858525/353920.terrain b/public/terrain/19/858525/353920.terrain new file mode 100644 index 000000000..f6478a11b Binary files /dev/null and b/public/terrain/19/858525/353920.terrain differ diff --git a/public/terrain/19/858525/353921.terrain b/public/terrain/19/858525/353921.terrain new file mode 100644 index 000000000..ff6930d45 Binary files /dev/null and b/public/terrain/19/858525/353921.terrain differ diff --git a/public/terrain/19/858525/353922.terrain b/public/terrain/19/858525/353922.terrain new file mode 100644 index 000000000..b84dbfe8f Binary files /dev/null and b/public/terrain/19/858525/353922.terrain differ diff --git a/public/terrain/19/858525/353923.terrain b/public/terrain/19/858525/353923.terrain new file mode 100644 index 000000000..53d0b6484 Binary files /dev/null and b/public/terrain/19/858525/353923.terrain differ diff --git a/public/terrain/19/858525/353924.terrain b/public/terrain/19/858525/353924.terrain new file mode 100644 index 000000000..e7dc6f10b Binary files /dev/null and b/public/terrain/19/858525/353924.terrain differ diff --git a/public/terrain/19/858525/353925.terrain b/public/terrain/19/858525/353925.terrain new file mode 100644 index 000000000..8b31350a4 Binary files /dev/null and b/public/terrain/19/858525/353925.terrain differ diff --git a/public/terrain/19/858525/353926.terrain b/public/terrain/19/858525/353926.terrain new file mode 100644 index 000000000..8f76a4c59 Binary files /dev/null and b/public/terrain/19/858525/353926.terrain differ diff --git a/public/terrain/19/858525/353927.terrain b/public/terrain/19/858525/353927.terrain new file mode 100644 index 000000000..1c6167388 Binary files /dev/null and b/public/terrain/19/858525/353927.terrain differ diff --git a/public/terrain/19/858525/353928.terrain b/public/terrain/19/858525/353928.terrain new file mode 100644 index 000000000..76698ce0d Binary files /dev/null and b/public/terrain/19/858525/353928.terrain differ diff --git a/public/terrain/19/858525/353929.terrain b/public/terrain/19/858525/353929.terrain new file mode 100644 index 000000000..828c9895d Binary files /dev/null and b/public/terrain/19/858525/353929.terrain differ diff --git a/public/terrain/19/858525/353930.terrain b/public/terrain/19/858525/353930.terrain new file mode 100644 index 000000000..ae1fcf6b8 Binary files /dev/null and b/public/terrain/19/858525/353930.terrain differ diff --git a/public/terrain/19/858525/353931.terrain b/public/terrain/19/858525/353931.terrain new file mode 100644 index 000000000..6a09158b8 Binary files /dev/null and b/public/terrain/19/858525/353931.terrain differ diff --git a/public/terrain/19/858525/353932.terrain b/public/terrain/19/858525/353932.terrain new file mode 100644 index 000000000..8ee86faf8 Binary files /dev/null and b/public/terrain/19/858525/353932.terrain differ diff --git a/public/terrain/19/858525/353933.terrain b/public/terrain/19/858525/353933.terrain new file mode 100644 index 000000000..a053e807e Binary files /dev/null and b/public/terrain/19/858525/353933.terrain differ diff --git a/public/terrain/19/858525/353934.terrain b/public/terrain/19/858525/353934.terrain new file mode 100644 index 000000000..f8cc7f068 Binary files /dev/null and b/public/terrain/19/858525/353934.terrain differ diff --git a/public/terrain/19/858525/353935.terrain b/public/terrain/19/858525/353935.terrain new file mode 100644 index 000000000..0ddcab3a6 Binary files /dev/null and b/public/terrain/19/858525/353935.terrain differ diff --git a/public/terrain/19/858525/353936.terrain b/public/terrain/19/858525/353936.terrain new file mode 100644 index 000000000..ba593ff4d Binary files /dev/null and b/public/terrain/19/858525/353936.terrain differ diff --git a/public/terrain/19/858525/353937.terrain b/public/terrain/19/858525/353937.terrain new file mode 100644 index 000000000..51dc320dd Binary files /dev/null and b/public/terrain/19/858525/353937.terrain differ diff --git a/public/terrain/19/858525/353938.terrain b/public/terrain/19/858525/353938.terrain new file mode 100644 index 000000000..0edc12c8e Binary files /dev/null and b/public/terrain/19/858525/353938.terrain differ diff --git a/public/terrain/19/858525/353939.terrain b/public/terrain/19/858525/353939.terrain new file mode 100644 index 000000000..67a0f1585 Binary files /dev/null and b/public/terrain/19/858525/353939.terrain differ diff --git a/public/terrain/19/858525/353940.terrain b/public/terrain/19/858525/353940.terrain new file mode 100644 index 000000000..e86b141cd Binary files /dev/null and b/public/terrain/19/858525/353940.terrain differ diff --git a/public/terrain/19/858525/353941.terrain b/public/terrain/19/858525/353941.terrain new file mode 100644 index 000000000..c9c5de9c7 Binary files /dev/null and b/public/terrain/19/858525/353941.terrain differ diff --git a/public/terrain/19/858525/353942.terrain b/public/terrain/19/858525/353942.terrain new file mode 100644 index 000000000..1bc44d9fb Binary files /dev/null and b/public/terrain/19/858525/353942.terrain differ diff --git a/public/terrain/19/858525/353943.terrain b/public/terrain/19/858525/353943.terrain new file mode 100644 index 000000000..e30bbaac3 Binary files /dev/null and b/public/terrain/19/858525/353943.terrain differ diff --git a/public/terrain/19/858525/353944.terrain b/public/terrain/19/858525/353944.terrain new file mode 100644 index 000000000..17f79d10d Binary files /dev/null and b/public/terrain/19/858525/353944.terrain differ diff --git a/public/terrain/19/858525/353945.terrain b/public/terrain/19/858525/353945.terrain new file mode 100644 index 000000000..24376d609 Binary files /dev/null and b/public/terrain/19/858525/353945.terrain differ diff --git a/public/terrain/19/858525/353946.terrain b/public/terrain/19/858525/353946.terrain new file mode 100644 index 000000000..efaa83a7b Binary files /dev/null and b/public/terrain/19/858525/353946.terrain differ diff --git a/public/terrain/19/858525/353947.terrain b/public/terrain/19/858525/353947.terrain new file mode 100644 index 000000000..424bbaed3 Binary files /dev/null and b/public/terrain/19/858525/353947.terrain differ diff --git a/public/terrain/19/858525/353948.terrain b/public/terrain/19/858525/353948.terrain new file mode 100644 index 000000000..6734aeea9 Binary files /dev/null and b/public/terrain/19/858525/353948.terrain differ diff --git a/public/terrain/19/858525/353949.terrain b/public/terrain/19/858525/353949.terrain new file mode 100644 index 000000000..ba7fc60d9 Binary files /dev/null and b/public/terrain/19/858525/353949.terrain differ diff --git a/public/terrain/19/858525/353950.terrain b/public/terrain/19/858525/353950.terrain new file mode 100644 index 000000000..cfe9f70d7 Binary files /dev/null and b/public/terrain/19/858525/353950.terrain differ diff --git a/public/terrain/19/858525/353951.terrain b/public/terrain/19/858525/353951.terrain new file mode 100644 index 000000000..07398e64e Binary files /dev/null and b/public/terrain/19/858525/353951.terrain differ diff --git a/public/terrain/19/858525/353952.terrain b/public/terrain/19/858525/353952.terrain new file mode 100644 index 000000000..6c1f984a9 Binary files /dev/null and b/public/terrain/19/858525/353952.terrain differ diff --git a/public/terrain/19/858525/353953.terrain b/public/terrain/19/858525/353953.terrain new file mode 100644 index 000000000..391deb686 Binary files /dev/null and b/public/terrain/19/858525/353953.terrain differ diff --git a/public/terrain/19/858525/353954.terrain b/public/terrain/19/858525/353954.terrain new file mode 100644 index 000000000..875913091 Binary files /dev/null and b/public/terrain/19/858525/353954.terrain differ diff --git a/public/terrain/19/858525/353955.terrain b/public/terrain/19/858525/353955.terrain new file mode 100644 index 000000000..0ca6ade48 Binary files /dev/null and b/public/terrain/19/858525/353955.terrain differ diff --git a/public/terrain/19/858525/353956.terrain b/public/terrain/19/858525/353956.terrain new file mode 100644 index 000000000..6f9c9d3d2 Binary files /dev/null and b/public/terrain/19/858525/353956.terrain differ diff --git a/public/terrain/19/858525/353957.terrain b/public/terrain/19/858525/353957.terrain new file mode 100644 index 000000000..f680cde3d Binary files /dev/null and b/public/terrain/19/858525/353957.terrain differ diff --git a/public/terrain/19/858525/353958.terrain b/public/terrain/19/858525/353958.terrain new file mode 100644 index 000000000..9f34cb903 Binary files /dev/null and b/public/terrain/19/858525/353958.terrain differ diff --git a/public/terrain/19/858525/353959.terrain b/public/terrain/19/858525/353959.terrain new file mode 100644 index 000000000..69e7b8c66 Binary files /dev/null and b/public/terrain/19/858525/353959.terrain differ diff --git a/public/terrain/19/858525/353960.terrain b/public/terrain/19/858525/353960.terrain new file mode 100644 index 000000000..9725a9635 Binary files /dev/null and b/public/terrain/19/858525/353960.terrain differ diff --git a/public/terrain/19/858525/353961.terrain b/public/terrain/19/858525/353961.terrain new file mode 100644 index 000000000..059178b0e Binary files /dev/null and b/public/terrain/19/858525/353961.terrain differ diff --git a/public/terrain/19/858525/353962.terrain b/public/terrain/19/858525/353962.terrain new file mode 100644 index 000000000..8d39f3ddf Binary files /dev/null and b/public/terrain/19/858525/353962.terrain differ diff --git a/public/terrain/19/858525/353963.terrain b/public/terrain/19/858525/353963.terrain new file mode 100644 index 000000000..132206fa8 Binary files /dev/null and b/public/terrain/19/858525/353963.terrain differ diff --git a/public/terrain/19/858525/353964.terrain b/public/terrain/19/858525/353964.terrain new file mode 100644 index 000000000..9fcd32b0e Binary files /dev/null and b/public/terrain/19/858525/353964.terrain differ diff --git a/public/terrain/19/858525/353965.terrain b/public/terrain/19/858525/353965.terrain new file mode 100644 index 000000000..2bae85e0b Binary files /dev/null and b/public/terrain/19/858525/353965.terrain differ diff --git a/public/terrain/19/858525/353966.terrain b/public/terrain/19/858525/353966.terrain new file mode 100644 index 000000000..6482da436 Binary files /dev/null and b/public/terrain/19/858525/353966.terrain differ diff --git a/public/terrain/19/858525/353967.terrain b/public/terrain/19/858525/353967.terrain new file mode 100644 index 000000000..81a52093e Binary files /dev/null and b/public/terrain/19/858525/353967.terrain differ diff --git a/public/terrain/19/858525/353968.terrain b/public/terrain/19/858525/353968.terrain new file mode 100644 index 000000000..2dd9c7822 Binary files /dev/null and b/public/terrain/19/858525/353968.terrain differ diff --git a/public/terrain/19/858525/353969.terrain b/public/terrain/19/858525/353969.terrain new file mode 100644 index 000000000..6815d4007 Binary files /dev/null and b/public/terrain/19/858525/353969.terrain differ diff --git a/public/terrain/19/858525/353970.terrain b/public/terrain/19/858525/353970.terrain new file mode 100644 index 000000000..20eaffe07 Binary files /dev/null and b/public/terrain/19/858525/353970.terrain differ diff --git a/public/terrain/19/858525/353971.terrain b/public/terrain/19/858525/353971.terrain new file mode 100644 index 000000000..7b766d7b3 Binary files /dev/null and b/public/terrain/19/858525/353971.terrain differ diff --git a/public/terrain/19/858525/353972.terrain b/public/terrain/19/858525/353972.terrain new file mode 100644 index 000000000..89a7f8d4f Binary files /dev/null and b/public/terrain/19/858525/353972.terrain differ diff --git a/public/terrain/19/858525/353973.terrain b/public/terrain/19/858525/353973.terrain new file mode 100644 index 000000000..a51136b2c Binary files /dev/null and b/public/terrain/19/858525/353973.terrain differ diff --git a/public/terrain/19/858525/353974.terrain b/public/terrain/19/858525/353974.terrain new file mode 100644 index 000000000..a44ee4556 Binary files /dev/null and b/public/terrain/19/858525/353974.terrain differ diff --git a/public/terrain/19/858525/353975.terrain b/public/terrain/19/858525/353975.terrain new file mode 100644 index 000000000..bf27edb31 Binary files /dev/null and b/public/terrain/19/858525/353975.terrain differ diff --git a/public/terrain/19/858525/353976.terrain b/public/terrain/19/858525/353976.terrain new file mode 100644 index 000000000..efe51a4d2 Binary files /dev/null and b/public/terrain/19/858525/353976.terrain differ diff --git a/public/terrain/19/858525/353977.terrain b/public/terrain/19/858525/353977.terrain new file mode 100644 index 000000000..8021477e8 Binary files /dev/null and b/public/terrain/19/858525/353977.terrain differ diff --git a/public/terrain/19/858525/353978.terrain b/public/terrain/19/858525/353978.terrain new file mode 100644 index 000000000..7aa2658fa Binary files /dev/null and b/public/terrain/19/858525/353978.terrain differ diff --git a/public/terrain/19/858525/353979.terrain b/public/terrain/19/858525/353979.terrain new file mode 100644 index 000000000..f74858dc6 Binary files /dev/null and b/public/terrain/19/858525/353979.terrain differ diff --git a/public/terrain/19/858525/353980.terrain b/public/terrain/19/858525/353980.terrain new file mode 100644 index 000000000..2429c5dda Binary files /dev/null and b/public/terrain/19/858525/353980.terrain differ diff --git a/public/terrain/19/858525/353981.terrain b/public/terrain/19/858525/353981.terrain new file mode 100644 index 000000000..9e60e36bd Binary files /dev/null and b/public/terrain/19/858525/353981.terrain differ diff --git a/public/terrain/19/858525/353982.terrain b/public/terrain/19/858525/353982.terrain new file mode 100644 index 000000000..679a87ab7 Binary files /dev/null and b/public/terrain/19/858525/353982.terrain differ diff --git a/public/terrain/19/858525/353983.terrain b/public/terrain/19/858525/353983.terrain new file mode 100644 index 000000000..ae6e54430 Binary files /dev/null and b/public/terrain/19/858525/353983.terrain differ diff --git a/public/terrain/19/858525/353984.terrain b/public/terrain/19/858525/353984.terrain new file mode 100644 index 000000000..ebaf29ff6 Binary files /dev/null and b/public/terrain/19/858525/353984.terrain differ diff --git a/public/terrain/19/858525/353985.terrain b/public/terrain/19/858525/353985.terrain new file mode 100644 index 000000000..4f3a59370 Binary files /dev/null and b/public/terrain/19/858525/353985.terrain differ diff --git a/public/terrain/19/858525/353986.terrain b/public/terrain/19/858525/353986.terrain new file mode 100644 index 000000000..cf5aa86a4 Binary files /dev/null and b/public/terrain/19/858525/353986.terrain differ diff --git a/public/terrain/19/858525/353987.terrain b/public/terrain/19/858525/353987.terrain new file mode 100644 index 000000000..3b09bfe9a Binary files /dev/null and b/public/terrain/19/858525/353987.terrain differ diff --git a/public/terrain/19/858525/353988.terrain b/public/terrain/19/858525/353988.terrain new file mode 100644 index 000000000..7cc276ae5 Binary files /dev/null and b/public/terrain/19/858525/353988.terrain differ diff --git a/public/terrain/19/858525/353989.terrain b/public/terrain/19/858525/353989.terrain new file mode 100644 index 000000000..193b893bd Binary files /dev/null and b/public/terrain/19/858525/353989.terrain differ diff --git a/public/terrain/19/858525/353990.terrain b/public/terrain/19/858525/353990.terrain new file mode 100644 index 000000000..335b370f1 Binary files /dev/null and b/public/terrain/19/858525/353990.terrain differ diff --git a/public/terrain/19/858525/353991.terrain b/public/terrain/19/858525/353991.terrain new file mode 100644 index 000000000..bc2855fad Binary files /dev/null and b/public/terrain/19/858525/353991.terrain differ diff --git a/public/terrain/19/858525/353992.terrain b/public/terrain/19/858525/353992.terrain new file mode 100644 index 000000000..d61ef71e8 Binary files /dev/null and b/public/terrain/19/858525/353992.terrain differ diff --git a/public/terrain/19/858525/353993.terrain b/public/terrain/19/858525/353993.terrain new file mode 100644 index 000000000..ab7219fa2 Binary files /dev/null and b/public/terrain/19/858525/353993.terrain differ diff --git a/public/terrain/19/858525/353994.terrain b/public/terrain/19/858525/353994.terrain new file mode 100644 index 000000000..85f1548c8 Binary files /dev/null and b/public/terrain/19/858525/353994.terrain differ diff --git a/public/terrain/19/858525/353995.terrain b/public/terrain/19/858525/353995.terrain new file mode 100644 index 000000000..b67cd63b0 Binary files /dev/null and b/public/terrain/19/858525/353995.terrain differ diff --git a/public/terrain/19/858525/353996.terrain b/public/terrain/19/858525/353996.terrain new file mode 100644 index 000000000..f57c670cb Binary files /dev/null and b/public/terrain/19/858525/353996.terrain differ diff --git a/public/terrain/19/858525/353997.terrain b/public/terrain/19/858525/353997.terrain new file mode 100644 index 000000000..9013b0ac2 Binary files /dev/null and b/public/terrain/19/858525/353997.terrain differ diff --git a/public/terrain/19/858525/353998.terrain b/public/terrain/19/858525/353998.terrain new file mode 100644 index 000000000..f7308ae80 Binary files /dev/null and b/public/terrain/19/858525/353998.terrain differ diff --git a/public/terrain/19/858525/353999.terrain b/public/terrain/19/858525/353999.terrain new file mode 100644 index 000000000..ee56789d7 Binary files /dev/null and b/public/terrain/19/858525/353999.terrain differ diff --git a/public/terrain/19/858525/354000.terrain b/public/terrain/19/858525/354000.terrain new file mode 100644 index 000000000..44acaf3fd Binary files /dev/null and b/public/terrain/19/858525/354000.terrain differ diff --git a/public/terrain/19/858525/354001.terrain b/public/terrain/19/858525/354001.terrain new file mode 100644 index 000000000..ec233f12e Binary files /dev/null and b/public/terrain/19/858525/354001.terrain differ diff --git a/public/terrain/19/858525/354002.terrain b/public/terrain/19/858525/354002.terrain new file mode 100644 index 000000000..135346409 Binary files /dev/null and b/public/terrain/19/858525/354002.terrain differ diff --git a/public/terrain/19/858525/354003.terrain b/public/terrain/19/858525/354003.terrain new file mode 100644 index 000000000..67b8c4a60 Binary files /dev/null and b/public/terrain/19/858525/354003.terrain differ diff --git a/public/terrain/19/858525/354004.terrain b/public/terrain/19/858525/354004.terrain new file mode 100644 index 000000000..b475b2e27 Binary files /dev/null and b/public/terrain/19/858525/354004.terrain differ diff --git a/public/terrain/19/858525/354005.terrain b/public/terrain/19/858525/354005.terrain new file mode 100644 index 000000000..34ab88b7e Binary files /dev/null and b/public/terrain/19/858525/354005.terrain differ diff --git a/public/terrain/19/858525/354006.terrain b/public/terrain/19/858525/354006.terrain new file mode 100644 index 000000000..6266ef5c3 Binary files /dev/null and b/public/terrain/19/858525/354006.terrain differ diff --git a/public/terrain/19/858525/354007.terrain b/public/terrain/19/858525/354007.terrain new file mode 100644 index 000000000..8845a4a73 Binary files /dev/null and b/public/terrain/19/858525/354007.terrain differ diff --git a/public/terrain/19/858525/354008.terrain b/public/terrain/19/858525/354008.terrain new file mode 100644 index 000000000..33d905999 Binary files /dev/null and b/public/terrain/19/858525/354008.terrain differ diff --git a/public/terrain/19/858525/354009.terrain b/public/terrain/19/858525/354009.terrain new file mode 100644 index 000000000..16d0b3e88 Binary files /dev/null and b/public/terrain/19/858525/354009.terrain differ diff --git a/public/terrain/19/858525/354010.terrain b/public/terrain/19/858525/354010.terrain new file mode 100644 index 000000000..e612cc1e1 Binary files /dev/null and b/public/terrain/19/858525/354010.terrain differ diff --git a/public/terrain/19/858525/354011.terrain b/public/terrain/19/858525/354011.terrain new file mode 100644 index 000000000..f5f626a50 Binary files /dev/null and b/public/terrain/19/858525/354011.terrain differ diff --git a/public/terrain/19/858525/354012.terrain b/public/terrain/19/858525/354012.terrain new file mode 100644 index 000000000..01e2196d7 Binary files /dev/null and b/public/terrain/19/858525/354012.terrain differ diff --git a/public/terrain/19/858525/354013.terrain b/public/terrain/19/858525/354013.terrain new file mode 100644 index 000000000..7953b6fbb Binary files /dev/null and b/public/terrain/19/858525/354013.terrain differ diff --git a/public/terrain/19/858525/354014.terrain b/public/terrain/19/858525/354014.terrain new file mode 100644 index 000000000..88c25a212 Binary files /dev/null and b/public/terrain/19/858525/354014.terrain differ diff --git a/public/terrain/19/858525/354015.terrain b/public/terrain/19/858525/354015.terrain new file mode 100644 index 000000000..c2d92335f Binary files /dev/null and b/public/terrain/19/858525/354015.terrain differ diff --git a/public/terrain/19/858525/354016.terrain b/public/terrain/19/858525/354016.terrain new file mode 100644 index 000000000..9271d829a Binary files /dev/null and b/public/terrain/19/858525/354016.terrain differ diff --git a/public/terrain/19/858525/354017.terrain b/public/terrain/19/858525/354017.terrain new file mode 100644 index 000000000..4d653edaf Binary files /dev/null and b/public/terrain/19/858525/354017.terrain differ diff --git a/public/terrain/19/858525/354018.terrain b/public/terrain/19/858525/354018.terrain new file mode 100644 index 000000000..6dce1136f Binary files /dev/null and b/public/terrain/19/858525/354018.terrain differ diff --git a/public/terrain/19/858525/354019.terrain b/public/terrain/19/858525/354019.terrain new file mode 100644 index 000000000..c39270244 Binary files /dev/null and b/public/terrain/19/858525/354019.terrain differ diff --git a/public/terrain/19/858525/354020.terrain b/public/terrain/19/858525/354020.terrain new file mode 100644 index 000000000..3dba09868 Binary files /dev/null and b/public/terrain/19/858525/354020.terrain differ diff --git a/public/terrain/19/858525/354021.terrain b/public/terrain/19/858525/354021.terrain new file mode 100644 index 000000000..088dedbfe Binary files /dev/null and b/public/terrain/19/858525/354021.terrain differ diff --git a/public/terrain/19/858525/354022.terrain b/public/terrain/19/858525/354022.terrain new file mode 100644 index 000000000..114fa1e4d Binary files /dev/null and b/public/terrain/19/858525/354022.terrain differ diff --git a/public/terrain/19/858525/354023.terrain b/public/terrain/19/858525/354023.terrain new file mode 100644 index 000000000..57325183d Binary files /dev/null and b/public/terrain/19/858525/354023.terrain differ diff --git a/public/terrain/19/858525/354024.terrain b/public/terrain/19/858525/354024.terrain new file mode 100644 index 000000000..94b1033b6 Binary files /dev/null and b/public/terrain/19/858525/354024.terrain differ diff --git a/public/terrain/19/858525/354025.terrain b/public/terrain/19/858525/354025.terrain new file mode 100644 index 000000000..5f66bf0ad Binary files /dev/null and b/public/terrain/19/858525/354025.terrain differ diff --git a/public/terrain/19/858525/354026.terrain b/public/terrain/19/858525/354026.terrain new file mode 100644 index 000000000..a295ef4de Binary files /dev/null and b/public/terrain/19/858525/354026.terrain differ diff --git a/public/terrain/19/858525/354027.terrain b/public/terrain/19/858525/354027.terrain new file mode 100644 index 000000000..7e65de009 Binary files /dev/null and b/public/terrain/19/858525/354027.terrain differ diff --git a/public/terrain/19/858525/354028.terrain b/public/terrain/19/858525/354028.terrain new file mode 100644 index 000000000..fed6c73fd Binary files /dev/null and b/public/terrain/19/858525/354028.terrain differ diff --git a/public/terrain/19/858525/354029.terrain b/public/terrain/19/858525/354029.terrain new file mode 100644 index 000000000..dc51370bd Binary files /dev/null and b/public/terrain/19/858525/354029.terrain differ diff --git a/public/terrain/19/858525/354030.terrain b/public/terrain/19/858525/354030.terrain new file mode 100644 index 000000000..9c3c83627 Binary files /dev/null and b/public/terrain/19/858525/354030.terrain differ diff --git a/public/terrain/19/858525/354031.terrain b/public/terrain/19/858525/354031.terrain new file mode 100644 index 000000000..f65d366cc Binary files /dev/null and b/public/terrain/19/858525/354031.terrain differ diff --git a/public/terrain/19/858525/354032.terrain b/public/terrain/19/858525/354032.terrain new file mode 100644 index 000000000..bf2799914 Binary files /dev/null and b/public/terrain/19/858525/354032.terrain differ diff --git a/public/terrain/19/858525/354033.terrain b/public/terrain/19/858525/354033.terrain new file mode 100644 index 000000000..f702b09a4 Binary files /dev/null and b/public/terrain/19/858525/354033.terrain differ diff --git a/public/terrain/19/858525/354034.terrain b/public/terrain/19/858525/354034.terrain new file mode 100644 index 000000000..1a2d87aa1 Binary files /dev/null and b/public/terrain/19/858525/354034.terrain differ diff --git a/public/terrain/19/858525/354035.terrain b/public/terrain/19/858525/354035.terrain new file mode 100644 index 000000000..ff3b25906 Binary files /dev/null and b/public/terrain/19/858525/354035.terrain differ diff --git a/public/terrain/19/858525/354036.terrain b/public/terrain/19/858525/354036.terrain new file mode 100644 index 000000000..362487a7f Binary files /dev/null and b/public/terrain/19/858525/354036.terrain differ diff --git a/public/terrain/19/858525/354037.terrain b/public/terrain/19/858525/354037.terrain new file mode 100644 index 000000000..2c4da07c1 Binary files /dev/null and b/public/terrain/19/858525/354037.terrain differ diff --git a/public/terrain/19/858525/354038.terrain b/public/terrain/19/858525/354038.terrain new file mode 100644 index 000000000..921d934cd Binary files /dev/null and b/public/terrain/19/858525/354038.terrain differ diff --git a/public/terrain/19/858525/354039.terrain b/public/terrain/19/858525/354039.terrain new file mode 100644 index 000000000..b5d829ba0 Binary files /dev/null and b/public/terrain/19/858525/354039.terrain differ diff --git a/public/terrain/19/858525/354040.terrain b/public/terrain/19/858525/354040.terrain new file mode 100644 index 000000000..7ec47adf4 Binary files /dev/null and b/public/terrain/19/858525/354040.terrain differ diff --git a/public/terrain/19/858525/354041.terrain b/public/terrain/19/858525/354041.terrain new file mode 100644 index 000000000..f5b0e97af Binary files /dev/null and b/public/terrain/19/858525/354041.terrain differ diff --git a/public/terrain/19/858525/354042.terrain b/public/terrain/19/858525/354042.terrain new file mode 100644 index 000000000..7e6037ca6 Binary files /dev/null and b/public/terrain/19/858525/354042.terrain differ diff --git a/public/terrain/19/858525/354043.terrain b/public/terrain/19/858525/354043.terrain new file mode 100644 index 000000000..d4c2a2a99 Binary files /dev/null and b/public/terrain/19/858525/354043.terrain differ diff --git a/public/terrain/19/858525/354044.terrain b/public/terrain/19/858525/354044.terrain new file mode 100644 index 000000000..c9c121809 Binary files /dev/null and b/public/terrain/19/858525/354044.terrain differ diff --git a/public/terrain/19/858525/354045.terrain b/public/terrain/19/858525/354045.terrain new file mode 100644 index 000000000..9b0188693 Binary files /dev/null and b/public/terrain/19/858525/354045.terrain differ diff --git a/public/terrain/19/858525/354046.terrain b/public/terrain/19/858525/354046.terrain new file mode 100644 index 000000000..75d67d925 Binary files /dev/null and b/public/terrain/19/858525/354046.terrain differ diff --git a/public/terrain/19/858525/354047.terrain b/public/terrain/19/858525/354047.terrain new file mode 100644 index 000000000..c21986b1c Binary files /dev/null and b/public/terrain/19/858525/354047.terrain differ diff --git a/public/terrain/19/858525/354048.terrain b/public/terrain/19/858525/354048.terrain new file mode 100644 index 000000000..665279059 Binary files /dev/null and b/public/terrain/19/858525/354048.terrain differ diff --git a/public/terrain/19/858525/354049.terrain b/public/terrain/19/858525/354049.terrain new file mode 100644 index 000000000..fa7dbb98d Binary files /dev/null and b/public/terrain/19/858525/354049.terrain differ diff --git a/public/terrain/19/858525/354050.terrain b/public/terrain/19/858525/354050.terrain new file mode 100644 index 000000000..ac06a4017 Binary files /dev/null and b/public/terrain/19/858525/354050.terrain differ diff --git a/public/terrain/19/858525/354051.terrain b/public/terrain/19/858525/354051.terrain new file mode 100644 index 000000000..fe90cd769 Binary files /dev/null and b/public/terrain/19/858525/354051.terrain differ diff --git a/public/terrain/19/858525/354052.terrain b/public/terrain/19/858525/354052.terrain new file mode 100644 index 000000000..097ba7906 Binary files /dev/null and b/public/terrain/19/858525/354052.terrain differ diff --git a/public/terrain/19/858525/354053.terrain b/public/terrain/19/858525/354053.terrain new file mode 100644 index 000000000..cccadba26 Binary files /dev/null and b/public/terrain/19/858525/354053.terrain differ diff --git a/public/terrain/19/858525/354054.terrain b/public/terrain/19/858525/354054.terrain new file mode 100644 index 000000000..cbcb38698 Binary files /dev/null and b/public/terrain/19/858525/354054.terrain differ diff --git a/public/terrain/19/858525/354055.terrain b/public/terrain/19/858525/354055.terrain new file mode 100644 index 000000000..4340fee9e Binary files /dev/null and b/public/terrain/19/858525/354055.terrain differ diff --git a/public/terrain/19/858525/354056.terrain b/public/terrain/19/858525/354056.terrain new file mode 100644 index 000000000..28a7d0cf4 Binary files /dev/null and b/public/terrain/19/858525/354056.terrain differ diff --git a/public/terrain/19/858525/354057.terrain b/public/terrain/19/858525/354057.terrain new file mode 100644 index 000000000..9665e0a3d Binary files /dev/null and b/public/terrain/19/858525/354057.terrain differ diff --git a/public/terrain/19/858525/354058.terrain b/public/terrain/19/858525/354058.terrain new file mode 100644 index 000000000..cdc3a5d05 Binary files /dev/null and b/public/terrain/19/858525/354058.terrain differ diff --git a/public/terrain/19/858525/354059.terrain b/public/terrain/19/858525/354059.terrain new file mode 100644 index 000000000..02fcc7ad9 Binary files /dev/null and b/public/terrain/19/858525/354059.terrain differ diff --git a/public/terrain/19/858526/353743.terrain b/public/terrain/19/858526/353743.terrain new file mode 100644 index 000000000..d40943a9c Binary files /dev/null and b/public/terrain/19/858526/353743.terrain differ diff --git a/public/terrain/19/858526/353744.terrain b/public/terrain/19/858526/353744.terrain new file mode 100644 index 000000000..75d2da137 Binary files /dev/null and b/public/terrain/19/858526/353744.terrain differ diff --git a/public/terrain/19/858526/353745.terrain b/public/terrain/19/858526/353745.terrain new file mode 100644 index 000000000..c9614d21c Binary files /dev/null and b/public/terrain/19/858526/353745.terrain differ diff --git a/public/terrain/19/858526/353746.terrain b/public/terrain/19/858526/353746.terrain new file mode 100644 index 000000000..55f8007fe Binary files /dev/null and b/public/terrain/19/858526/353746.terrain differ diff --git a/public/terrain/19/858526/353747.terrain b/public/terrain/19/858526/353747.terrain new file mode 100644 index 000000000..0174dacb7 Binary files /dev/null and b/public/terrain/19/858526/353747.terrain differ diff --git a/public/terrain/19/858526/353748.terrain b/public/terrain/19/858526/353748.terrain new file mode 100644 index 000000000..dcb66d284 Binary files /dev/null and b/public/terrain/19/858526/353748.terrain differ diff --git a/public/terrain/19/858526/353749.terrain b/public/terrain/19/858526/353749.terrain new file mode 100644 index 000000000..fdef9ca29 Binary files /dev/null and b/public/terrain/19/858526/353749.terrain differ diff --git a/public/terrain/19/858526/353750.terrain b/public/terrain/19/858526/353750.terrain new file mode 100644 index 000000000..8850bc285 Binary files /dev/null and b/public/terrain/19/858526/353750.terrain differ diff --git a/public/terrain/19/858526/353751.terrain b/public/terrain/19/858526/353751.terrain new file mode 100644 index 000000000..9bddd3cf6 Binary files /dev/null and b/public/terrain/19/858526/353751.terrain differ diff --git a/public/terrain/19/858526/353752.terrain b/public/terrain/19/858526/353752.terrain new file mode 100644 index 000000000..f0036ac1d Binary files /dev/null and b/public/terrain/19/858526/353752.terrain differ diff --git a/public/terrain/19/858526/353753.terrain b/public/terrain/19/858526/353753.terrain new file mode 100644 index 000000000..2f768da51 Binary files /dev/null and b/public/terrain/19/858526/353753.terrain differ diff --git a/public/terrain/19/858526/353754.terrain b/public/terrain/19/858526/353754.terrain new file mode 100644 index 000000000..e351e44e7 Binary files /dev/null and b/public/terrain/19/858526/353754.terrain differ diff --git a/public/terrain/19/858526/353755.terrain b/public/terrain/19/858526/353755.terrain new file mode 100644 index 000000000..b717bc876 Binary files /dev/null and b/public/terrain/19/858526/353755.terrain differ diff --git a/public/terrain/19/858526/353756.terrain b/public/terrain/19/858526/353756.terrain new file mode 100644 index 000000000..cdb3f672f Binary files /dev/null and b/public/terrain/19/858526/353756.terrain differ diff --git a/public/terrain/19/858526/353757.terrain b/public/terrain/19/858526/353757.terrain new file mode 100644 index 000000000..700395309 Binary files /dev/null and b/public/terrain/19/858526/353757.terrain differ diff --git a/public/terrain/19/858526/353758.terrain b/public/terrain/19/858526/353758.terrain new file mode 100644 index 000000000..9393f3e59 Binary files /dev/null and b/public/terrain/19/858526/353758.terrain differ diff --git a/public/terrain/19/858526/353759.terrain b/public/terrain/19/858526/353759.terrain new file mode 100644 index 000000000..6a38bf95a Binary files /dev/null and b/public/terrain/19/858526/353759.terrain differ diff --git a/public/terrain/19/858526/353760.terrain b/public/terrain/19/858526/353760.terrain new file mode 100644 index 000000000..21a323756 Binary files /dev/null and b/public/terrain/19/858526/353760.terrain differ diff --git a/public/terrain/19/858526/353761.terrain b/public/terrain/19/858526/353761.terrain new file mode 100644 index 000000000..f3104fa7d Binary files /dev/null and b/public/terrain/19/858526/353761.terrain differ diff --git a/public/terrain/19/858526/353762.terrain b/public/terrain/19/858526/353762.terrain new file mode 100644 index 000000000..198c2288e Binary files /dev/null and b/public/terrain/19/858526/353762.terrain differ diff --git a/public/terrain/19/858526/353763.terrain b/public/terrain/19/858526/353763.terrain new file mode 100644 index 000000000..b0cbc2770 Binary files /dev/null and b/public/terrain/19/858526/353763.terrain differ diff --git a/public/terrain/19/858526/353764.terrain b/public/terrain/19/858526/353764.terrain new file mode 100644 index 000000000..b54e7ca5a Binary files /dev/null and b/public/terrain/19/858526/353764.terrain differ diff --git a/public/terrain/19/858526/353765.terrain b/public/terrain/19/858526/353765.terrain new file mode 100644 index 000000000..20cb65d7b Binary files /dev/null and b/public/terrain/19/858526/353765.terrain differ diff --git a/public/terrain/19/858526/353766.terrain b/public/terrain/19/858526/353766.terrain new file mode 100644 index 000000000..ecf500ba6 Binary files /dev/null and b/public/terrain/19/858526/353766.terrain differ diff --git a/public/terrain/19/858526/353767.terrain b/public/terrain/19/858526/353767.terrain new file mode 100644 index 000000000..004cf81f8 Binary files /dev/null and b/public/terrain/19/858526/353767.terrain differ diff --git a/public/terrain/19/858526/353768.terrain b/public/terrain/19/858526/353768.terrain new file mode 100644 index 000000000..208ea04fb Binary files /dev/null and b/public/terrain/19/858526/353768.terrain differ diff --git a/public/terrain/19/858526/353769.terrain b/public/terrain/19/858526/353769.terrain new file mode 100644 index 000000000..d635b19f6 Binary files /dev/null and b/public/terrain/19/858526/353769.terrain differ diff --git a/public/terrain/19/858526/353770.terrain b/public/terrain/19/858526/353770.terrain new file mode 100644 index 000000000..cf4d4d0f1 Binary files /dev/null and b/public/terrain/19/858526/353770.terrain differ diff --git a/public/terrain/19/858526/353771.terrain b/public/terrain/19/858526/353771.terrain new file mode 100644 index 000000000..b23968379 Binary files /dev/null and b/public/terrain/19/858526/353771.terrain differ diff --git a/public/terrain/19/858526/353772.terrain b/public/terrain/19/858526/353772.terrain new file mode 100644 index 000000000..283fc8959 Binary files /dev/null and b/public/terrain/19/858526/353772.terrain differ diff --git a/public/terrain/19/858526/353773.terrain b/public/terrain/19/858526/353773.terrain new file mode 100644 index 000000000..c1d4bd675 Binary files /dev/null and b/public/terrain/19/858526/353773.terrain differ diff --git a/public/terrain/19/858526/353774.terrain b/public/terrain/19/858526/353774.terrain new file mode 100644 index 000000000..fa97f3314 Binary files /dev/null and b/public/terrain/19/858526/353774.terrain differ diff --git a/public/terrain/19/858526/353775.terrain b/public/terrain/19/858526/353775.terrain new file mode 100644 index 000000000..177ce1a14 Binary files /dev/null and b/public/terrain/19/858526/353775.terrain differ diff --git a/public/terrain/19/858526/353776.terrain b/public/terrain/19/858526/353776.terrain new file mode 100644 index 000000000..1ba14d038 Binary files /dev/null and b/public/terrain/19/858526/353776.terrain differ diff --git a/public/terrain/19/858526/353777.terrain b/public/terrain/19/858526/353777.terrain new file mode 100644 index 000000000..6d2d887da Binary files /dev/null and b/public/terrain/19/858526/353777.terrain differ diff --git a/public/terrain/19/858526/353778.terrain b/public/terrain/19/858526/353778.terrain new file mode 100644 index 000000000..4529be958 Binary files /dev/null and b/public/terrain/19/858526/353778.terrain differ diff --git a/public/terrain/19/858526/353779.terrain b/public/terrain/19/858526/353779.terrain new file mode 100644 index 000000000..4559a6464 Binary files /dev/null and b/public/terrain/19/858526/353779.terrain differ diff --git a/public/terrain/19/858526/353780.terrain b/public/terrain/19/858526/353780.terrain new file mode 100644 index 000000000..4866bdf3f Binary files /dev/null and b/public/terrain/19/858526/353780.terrain differ diff --git a/public/terrain/19/858526/353781.terrain b/public/terrain/19/858526/353781.terrain new file mode 100644 index 000000000..79830fa6a Binary files /dev/null and b/public/terrain/19/858526/353781.terrain differ diff --git a/public/terrain/19/858526/353782.terrain b/public/terrain/19/858526/353782.terrain new file mode 100644 index 000000000..19ea59464 Binary files /dev/null and b/public/terrain/19/858526/353782.terrain differ diff --git a/public/terrain/19/858526/353783.terrain b/public/terrain/19/858526/353783.terrain new file mode 100644 index 000000000..5ff28fc7b Binary files /dev/null and b/public/terrain/19/858526/353783.terrain differ diff --git a/public/terrain/19/858526/353784.terrain b/public/terrain/19/858526/353784.terrain new file mode 100644 index 000000000..756e80ce2 Binary files /dev/null and b/public/terrain/19/858526/353784.terrain differ diff --git a/public/terrain/19/858526/353785.terrain b/public/terrain/19/858526/353785.terrain new file mode 100644 index 000000000..fc2cf80fc Binary files /dev/null and b/public/terrain/19/858526/353785.terrain differ diff --git a/public/terrain/19/858526/353786.terrain b/public/terrain/19/858526/353786.terrain new file mode 100644 index 000000000..7497c0c25 Binary files /dev/null and b/public/terrain/19/858526/353786.terrain differ diff --git a/public/terrain/19/858526/353787.terrain b/public/terrain/19/858526/353787.terrain new file mode 100644 index 000000000..58ac289cb Binary files /dev/null and b/public/terrain/19/858526/353787.terrain differ diff --git a/public/terrain/19/858526/353788.terrain b/public/terrain/19/858526/353788.terrain new file mode 100644 index 000000000..40192703d Binary files /dev/null and b/public/terrain/19/858526/353788.terrain differ diff --git a/public/terrain/19/858526/353789.terrain b/public/terrain/19/858526/353789.terrain new file mode 100644 index 000000000..9267b3c12 Binary files /dev/null and b/public/terrain/19/858526/353789.terrain differ diff --git a/public/terrain/19/858526/353790.terrain b/public/terrain/19/858526/353790.terrain new file mode 100644 index 000000000..6c083de22 Binary files /dev/null and b/public/terrain/19/858526/353790.terrain differ diff --git a/public/terrain/19/858526/353791.terrain b/public/terrain/19/858526/353791.terrain new file mode 100644 index 000000000..08375cff1 Binary files /dev/null and b/public/terrain/19/858526/353791.terrain differ diff --git a/public/terrain/19/858526/353792.terrain b/public/terrain/19/858526/353792.terrain new file mode 100644 index 000000000..e7e56c388 Binary files /dev/null and b/public/terrain/19/858526/353792.terrain differ diff --git a/public/terrain/19/858526/353793.terrain b/public/terrain/19/858526/353793.terrain new file mode 100644 index 000000000..dbc75720f Binary files /dev/null and b/public/terrain/19/858526/353793.terrain differ diff --git a/public/terrain/19/858526/353794.terrain b/public/terrain/19/858526/353794.terrain new file mode 100644 index 000000000..f07a4b9ee Binary files /dev/null and b/public/terrain/19/858526/353794.terrain differ diff --git a/public/terrain/19/858526/353795.terrain b/public/terrain/19/858526/353795.terrain new file mode 100644 index 000000000..cde50c511 Binary files /dev/null and b/public/terrain/19/858526/353795.terrain differ diff --git a/public/terrain/19/858526/353796.terrain b/public/terrain/19/858526/353796.terrain new file mode 100644 index 000000000..4abee0a46 Binary files /dev/null and b/public/terrain/19/858526/353796.terrain differ diff --git a/public/terrain/19/858526/353797.terrain b/public/terrain/19/858526/353797.terrain new file mode 100644 index 000000000..b82d71144 Binary files /dev/null and b/public/terrain/19/858526/353797.terrain differ diff --git a/public/terrain/19/858526/353798.terrain b/public/terrain/19/858526/353798.terrain new file mode 100644 index 000000000..c7a85483e Binary files /dev/null and b/public/terrain/19/858526/353798.terrain differ diff --git a/public/terrain/19/858526/353799.terrain b/public/terrain/19/858526/353799.terrain new file mode 100644 index 000000000..fa7f1142b Binary files /dev/null and b/public/terrain/19/858526/353799.terrain differ diff --git a/public/terrain/19/858526/353800.terrain b/public/terrain/19/858526/353800.terrain new file mode 100644 index 000000000..30a3d55de Binary files /dev/null and b/public/terrain/19/858526/353800.terrain differ diff --git a/public/terrain/19/858526/353801.terrain b/public/terrain/19/858526/353801.terrain new file mode 100644 index 000000000..13ac170e6 Binary files /dev/null and b/public/terrain/19/858526/353801.terrain differ diff --git a/public/terrain/19/858526/353802.terrain b/public/terrain/19/858526/353802.terrain new file mode 100644 index 000000000..89622d65b Binary files /dev/null and b/public/terrain/19/858526/353802.terrain differ diff --git a/public/terrain/19/858526/353803.terrain b/public/terrain/19/858526/353803.terrain new file mode 100644 index 000000000..c3d1c4743 Binary files /dev/null and b/public/terrain/19/858526/353803.terrain differ diff --git a/public/terrain/19/858526/353804.terrain b/public/terrain/19/858526/353804.terrain new file mode 100644 index 000000000..36f5ebe54 Binary files /dev/null and b/public/terrain/19/858526/353804.terrain differ diff --git a/public/terrain/19/858526/353805.terrain b/public/terrain/19/858526/353805.terrain new file mode 100644 index 000000000..59e99192d Binary files /dev/null and b/public/terrain/19/858526/353805.terrain differ diff --git a/public/terrain/19/858526/353806.terrain b/public/terrain/19/858526/353806.terrain new file mode 100644 index 000000000..17dd844cf Binary files /dev/null and b/public/terrain/19/858526/353806.terrain differ diff --git a/public/terrain/19/858526/353807.terrain b/public/terrain/19/858526/353807.terrain new file mode 100644 index 000000000..7173c0c0d Binary files /dev/null and b/public/terrain/19/858526/353807.terrain differ diff --git a/public/terrain/19/858526/353808.terrain b/public/terrain/19/858526/353808.terrain new file mode 100644 index 000000000..7c5e6dbbb Binary files /dev/null and b/public/terrain/19/858526/353808.terrain differ diff --git a/public/terrain/19/858526/353809.terrain b/public/terrain/19/858526/353809.terrain new file mode 100644 index 000000000..244eb390d Binary files /dev/null and b/public/terrain/19/858526/353809.terrain differ diff --git a/public/terrain/19/858526/353810.terrain b/public/terrain/19/858526/353810.terrain new file mode 100644 index 000000000..c8d984591 Binary files /dev/null and b/public/terrain/19/858526/353810.terrain differ diff --git a/public/terrain/19/858526/353811.terrain b/public/terrain/19/858526/353811.terrain new file mode 100644 index 000000000..28ab669fb Binary files /dev/null and b/public/terrain/19/858526/353811.terrain differ diff --git a/public/terrain/19/858526/353812.terrain b/public/terrain/19/858526/353812.terrain new file mode 100644 index 000000000..b5bfa841c Binary files /dev/null and b/public/terrain/19/858526/353812.terrain differ diff --git a/public/terrain/19/858526/353813.terrain b/public/terrain/19/858526/353813.terrain new file mode 100644 index 000000000..4bb8a62d4 Binary files /dev/null and b/public/terrain/19/858526/353813.terrain differ diff --git a/public/terrain/19/858526/353814.terrain b/public/terrain/19/858526/353814.terrain new file mode 100644 index 000000000..7cd4ad88a Binary files /dev/null and b/public/terrain/19/858526/353814.terrain differ diff --git a/public/terrain/19/858526/353815.terrain b/public/terrain/19/858526/353815.terrain new file mode 100644 index 000000000..cbd89900f Binary files /dev/null and b/public/terrain/19/858526/353815.terrain differ diff --git a/public/terrain/19/858526/353816.terrain b/public/terrain/19/858526/353816.terrain new file mode 100644 index 000000000..3fb61cef2 Binary files /dev/null and b/public/terrain/19/858526/353816.terrain differ diff --git a/public/terrain/19/858526/353817.terrain b/public/terrain/19/858526/353817.terrain new file mode 100644 index 000000000..56df1840f Binary files /dev/null and b/public/terrain/19/858526/353817.terrain differ diff --git a/public/terrain/19/858526/353818.terrain b/public/terrain/19/858526/353818.terrain new file mode 100644 index 000000000..63347bb92 Binary files /dev/null and b/public/terrain/19/858526/353818.terrain differ diff --git a/public/terrain/19/858526/353819.terrain b/public/terrain/19/858526/353819.terrain new file mode 100644 index 000000000..4e030770b Binary files /dev/null and b/public/terrain/19/858526/353819.terrain differ diff --git a/public/terrain/19/858526/353820.terrain b/public/terrain/19/858526/353820.terrain new file mode 100644 index 000000000..b5048f51c Binary files /dev/null and b/public/terrain/19/858526/353820.terrain differ diff --git a/public/terrain/19/858526/353821.terrain b/public/terrain/19/858526/353821.terrain new file mode 100644 index 000000000..cf056e8ee Binary files /dev/null and b/public/terrain/19/858526/353821.terrain differ diff --git a/public/terrain/19/858526/353822.terrain b/public/terrain/19/858526/353822.terrain new file mode 100644 index 000000000..ae7b39f9f Binary files /dev/null and b/public/terrain/19/858526/353822.terrain differ diff --git a/public/terrain/19/858526/353823.terrain b/public/terrain/19/858526/353823.terrain new file mode 100644 index 000000000..e1019dd60 Binary files /dev/null and b/public/terrain/19/858526/353823.terrain differ diff --git a/public/terrain/19/858526/353824.terrain b/public/terrain/19/858526/353824.terrain new file mode 100644 index 000000000..746c8a8eb Binary files /dev/null and b/public/terrain/19/858526/353824.terrain differ diff --git a/public/terrain/19/858526/353825.terrain b/public/terrain/19/858526/353825.terrain new file mode 100644 index 000000000..ae723c92c Binary files /dev/null and b/public/terrain/19/858526/353825.terrain differ diff --git a/public/terrain/19/858526/353826.terrain b/public/terrain/19/858526/353826.terrain new file mode 100644 index 000000000..30181faa1 Binary files /dev/null and b/public/terrain/19/858526/353826.terrain differ diff --git a/public/terrain/19/858526/353827.terrain b/public/terrain/19/858526/353827.terrain new file mode 100644 index 000000000..89517778e Binary files /dev/null and b/public/terrain/19/858526/353827.terrain differ diff --git a/public/terrain/19/858526/353828.terrain b/public/terrain/19/858526/353828.terrain new file mode 100644 index 000000000..6a9fff9e5 Binary files /dev/null and b/public/terrain/19/858526/353828.terrain differ diff --git a/public/terrain/19/858526/353829.terrain b/public/terrain/19/858526/353829.terrain new file mode 100644 index 000000000..a0e97694b Binary files /dev/null and b/public/terrain/19/858526/353829.terrain differ diff --git a/public/terrain/19/858526/353830.terrain b/public/terrain/19/858526/353830.terrain new file mode 100644 index 000000000..3a489d591 Binary files /dev/null and b/public/terrain/19/858526/353830.terrain differ diff --git a/public/terrain/19/858526/353831.terrain b/public/terrain/19/858526/353831.terrain new file mode 100644 index 000000000..1727decf1 Binary files /dev/null and b/public/terrain/19/858526/353831.terrain differ diff --git a/public/terrain/19/858526/353832.terrain b/public/terrain/19/858526/353832.terrain new file mode 100644 index 000000000..972989f9e Binary files /dev/null and b/public/terrain/19/858526/353832.terrain differ diff --git a/public/terrain/19/858526/353833.terrain b/public/terrain/19/858526/353833.terrain new file mode 100644 index 000000000..152b1080f Binary files /dev/null and b/public/terrain/19/858526/353833.terrain differ diff --git a/public/terrain/19/858526/353834.terrain b/public/terrain/19/858526/353834.terrain new file mode 100644 index 000000000..58c90cf6d Binary files /dev/null and b/public/terrain/19/858526/353834.terrain differ diff --git a/public/terrain/19/858526/353835.terrain b/public/terrain/19/858526/353835.terrain new file mode 100644 index 000000000..3341e5dd1 Binary files /dev/null and b/public/terrain/19/858526/353835.terrain differ diff --git a/public/terrain/19/858526/353836.terrain b/public/terrain/19/858526/353836.terrain new file mode 100644 index 000000000..04dd11add Binary files /dev/null and b/public/terrain/19/858526/353836.terrain differ diff --git a/public/terrain/19/858526/353837.terrain b/public/terrain/19/858526/353837.terrain new file mode 100644 index 000000000..94321f56e Binary files /dev/null and b/public/terrain/19/858526/353837.terrain differ diff --git a/public/terrain/19/858526/353838.terrain b/public/terrain/19/858526/353838.terrain new file mode 100644 index 000000000..340c335d1 Binary files /dev/null and b/public/terrain/19/858526/353838.terrain differ diff --git a/public/terrain/19/858526/353839.terrain b/public/terrain/19/858526/353839.terrain new file mode 100644 index 000000000..c90154b61 Binary files /dev/null and b/public/terrain/19/858526/353839.terrain differ diff --git a/public/terrain/19/858526/353840.terrain b/public/terrain/19/858526/353840.terrain new file mode 100644 index 000000000..b92195d7e Binary files /dev/null and b/public/terrain/19/858526/353840.terrain differ diff --git a/public/terrain/19/858526/353841.terrain b/public/terrain/19/858526/353841.terrain new file mode 100644 index 000000000..3996319b3 Binary files /dev/null and b/public/terrain/19/858526/353841.terrain differ diff --git a/public/terrain/19/858526/353842.terrain b/public/terrain/19/858526/353842.terrain new file mode 100644 index 000000000..67a7519f1 Binary files /dev/null and b/public/terrain/19/858526/353842.terrain differ diff --git a/public/terrain/19/858526/353843.terrain b/public/terrain/19/858526/353843.terrain new file mode 100644 index 000000000..2a7daf282 Binary files /dev/null and b/public/terrain/19/858526/353843.terrain differ diff --git a/public/terrain/19/858526/353844.terrain b/public/terrain/19/858526/353844.terrain new file mode 100644 index 000000000..8a6452a6f Binary files /dev/null and b/public/terrain/19/858526/353844.terrain differ diff --git a/public/terrain/19/858526/353845.terrain b/public/terrain/19/858526/353845.terrain new file mode 100644 index 000000000..a2d796984 Binary files /dev/null and b/public/terrain/19/858526/353845.terrain differ diff --git a/public/terrain/19/858526/353846.terrain b/public/terrain/19/858526/353846.terrain new file mode 100644 index 000000000..63127f138 Binary files /dev/null and b/public/terrain/19/858526/353846.terrain differ diff --git a/public/terrain/19/858526/353847.terrain b/public/terrain/19/858526/353847.terrain new file mode 100644 index 000000000..8d7b23ba8 Binary files /dev/null and b/public/terrain/19/858526/353847.terrain differ diff --git a/public/terrain/19/858526/353848.terrain b/public/terrain/19/858526/353848.terrain new file mode 100644 index 000000000..14cc1e5ca Binary files /dev/null and b/public/terrain/19/858526/353848.terrain differ diff --git a/public/terrain/19/858526/353849.terrain b/public/terrain/19/858526/353849.terrain new file mode 100644 index 000000000..4d435744c Binary files /dev/null and b/public/terrain/19/858526/353849.terrain differ diff --git a/public/terrain/19/858526/353850.terrain b/public/terrain/19/858526/353850.terrain new file mode 100644 index 000000000..dbad620d2 Binary files /dev/null and b/public/terrain/19/858526/353850.terrain differ diff --git a/public/terrain/19/858526/353851.terrain b/public/terrain/19/858526/353851.terrain new file mode 100644 index 000000000..3c2a64659 Binary files /dev/null and b/public/terrain/19/858526/353851.terrain differ diff --git a/public/terrain/19/858526/353852.terrain b/public/terrain/19/858526/353852.terrain new file mode 100644 index 000000000..ab5d6f9db Binary files /dev/null and b/public/terrain/19/858526/353852.terrain differ diff --git a/public/terrain/19/858526/353853.terrain b/public/terrain/19/858526/353853.terrain new file mode 100644 index 000000000..7721dabe2 Binary files /dev/null and b/public/terrain/19/858526/353853.terrain differ diff --git a/public/terrain/19/858526/353854.terrain b/public/terrain/19/858526/353854.terrain new file mode 100644 index 000000000..4af899654 Binary files /dev/null and b/public/terrain/19/858526/353854.terrain differ diff --git a/public/terrain/19/858526/353855.terrain b/public/terrain/19/858526/353855.terrain new file mode 100644 index 000000000..21e70996b Binary files /dev/null and b/public/terrain/19/858526/353855.terrain differ diff --git a/public/terrain/19/858526/353856.terrain b/public/terrain/19/858526/353856.terrain new file mode 100644 index 000000000..b0bb4a65b Binary files /dev/null and b/public/terrain/19/858526/353856.terrain differ diff --git a/public/terrain/19/858526/353857.terrain b/public/terrain/19/858526/353857.terrain new file mode 100644 index 000000000..b60bbd6a9 Binary files /dev/null and b/public/terrain/19/858526/353857.terrain differ diff --git a/public/terrain/19/858526/353858.terrain b/public/terrain/19/858526/353858.terrain new file mode 100644 index 000000000..e22fbbd61 Binary files /dev/null and b/public/terrain/19/858526/353858.terrain differ diff --git a/public/terrain/19/858526/353859.terrain b/public/terrain/19/858526/353859.terrain new file mode 100644 index 000000000..062f9664d Binary files /dev/null and b/public/terrain/19/858526/353859.terrain differ diff --git a/public/terrain/19/858526/353860.terrain b/public/terrain/19/858526/353860.terrain new file mode 100644 index 000000000..4023a28ed Binary files /dev/null and b/public/terrain/19/858526/353860.terrain differ diff --git a/public/terrain/19/858526/353861.terrain b/public/terrain/19/858526/353861.terrain new file mode 100644 index 000000000..566312a44 Binary files /dev/null and b/public/terrain/19/858526/353861.terrain differ diff --git a/public/terrain/19/858526/353862.terrain b/public/terrain/19/858526/353862.terrain new file mode 100644 index 000000000..1d3feb1dd Binary files /dev/null and b/public/terrain/19/858526/353862.terrain differ diff --git a/public/terrain/19/858526/353863.terrain b/public/terrain/19/858526/353863.terrain new file mode 100644 index 000000000..8f215fcbf Binary files /dev/null and b/public/terrain/19/858526/353863.terrain differ diff --git a/public/terrain/19/858526/353864.terrain b/public/terrain/19/858526/353864.terrain new file mode 100644 index 000000000..38e13e08b Binary files /dev/null and b/public/terrain/19/858526/353864.terrain differ diff --git a/public/terrain/19/858526/353865.terrain b/public/terrain/19/858526/353865.terrain new file mode 100644 index 000000000..7624761b2 Binary files /dev/null and b/public/terrain/19/858526/353865.terrain differ diff --git a/public/terrain/19/858526/353866.terrain b/public/terrain/19/858526/353866.terrain new file mode 100644 index 000000000..348f66d5e Binary files /dev/null and b/public/terrain/19/858526/353866.terrain differ diff --git a/public/terrain/19/858526/353867.terrain b/public/terrain/19/858526/353867.terrain new file mode 100644 index 000000000..2b60bad5a Binary files /dev/null and b/public/terrain/19/858526/353867.terrain differ diff --git a/public/terrain/19/858526/353868.terrain b/public/terrain/19/858526/353868.terrain new file mode 100644 index 000000000..6f6a27bc6 Binary files /dev/null and b/public/terrain/19/858526/353868.terrain differ diff --git a/public/terrain/19/858526/353869.terrain b/public/terrain/19/858526/353869.terrain new file mode 100644 index 000000000..acbc9cf3f Binary files /dev/null and b/public/terrain/19/858526/353869.terrain differ diff --git a/public/terrain/19/858526/353870.terrain b/public/terrain/19/858526/353870.terrain new file mode 100644 index 000000000..be3c6e6c8 Binary files /dev/null and b/public/terrain/19/858526/353870.terrain differ diff --git a/public/terrain/19/858526/353871.terrain b/public/terrain/19/858526/353871.terrain new file mode 100644 index 000000000..1ad2206fc Binary files /dev/null and b/public/terrain/19/858526/353871.terrain differ diff --git a/public/terrain/19/858526/353872.terrain b/public/terrain/19/858526/353872.terrain new file mode 100644 index 000000000..6d5e99102 Binary files /dev/null and b/public/terrain/19/858526/353872.terrain differ diff --git a/public/terrain/19/858526/353873.terrain b/public/terrain/19/858526/353873.terrain new file mode 100644 index 000000000..26adef96f Binary files /dev/null and b/public/terrain/19/858526/353873.terrain differ diff --git a/public/terrain/19/858526/353874.terrain b/public/terrain/19/858526/353874.terrain new file mode 100644 index 000000000..3c30ff4b8 Binary files /dev/null and b/public/terrain/19/858526/353874.terrain differ diff --git a/public/terrain/19/858526/353875.terrain b/public/terrain/19/858526/353875.terrain new file mode 100644 index 000000000..2a386d962 Binary files /dev/null and b/public/terrain/19/858526/353875.terrain differ diff --git a/public/terrain/19/858526/353876.terrain b/public/terrain/19/858526/353876.terrain new file mode 100644 index 000000000..32941df62 Binary files /dev/null and b/public/terrain/19/858526/353876.terrain differ diff --git a/public/terrain/19/858526/353877.terrain b/public/terrain/19/858526/353877.terrain new file mode 100644 index 000000000..146aee4df Binary files /dev/null and b/public/terrain/19/858526/353877.terrain differ diff --git a/public/terrain/19/858526/353878.terrain b/public/terrain/19/858526/353878.terrain new file mode 100644 index 000000000..9c1ac96bc Binary files /dev/null and b/public/terrain/19/858526/353878.terrain differ diff --git a/public/terrain/19/858526/353879.terrain b/public/terrain/19/858526/353879.terrain new file mode 100644 index 000000000..941967417 Binary files /dev/null and b/public/terrain/19/858526/353879.terrain differ diff --git a/public/terrain/19/858526/353880.terrain b/public/terrain/19/858526/353880.terrain new file mode 100644 index 000000000..04046c531 Binary files /dev/null and b/public/terrain/19/858526/353880.terrain differ diff --git a/public/terrain/19/858526/353881.terrain b/public/terrain/19/858526/353881.terrain new file mode 100644 index 000000000..c7693152b Binary files /dev/null and b/public/terrain/19/858526/353881.terrain differ diff --git a/public/terrain/19/858526/353882.terrain b/public/terrain/19/858526/353882.terrain new file mode 100644 index 000000000..6d580721a Binary files /dev/null and b/public/terrain/19/858526/353882.terrain differ diff --git a/public/terrain/19/858526/353883.terrain b/public/terrain/19/858526/353883.terrain new file mode 100644 index 000000000..a869586b3 Binary files /dev/null and b/public/terrain/19/858526/353883.terrain differ diff --git a/public/terrain/19/858526/353884.terrain b/public/terrain/19/858526/353884.terrain new file mode 100644 index 000000000..c3f6c82a1 Binary files /dev/null and b/public/terrain/19/858526/353884.terrain differ diff --git a/public/terrain/19/858526/353885.terrain b/public/terrain/19/858526/353885.terrain new file mode 100644 index 000000000..1240e79ef Binary files /dev/null and b/public/terrain/19/858526/353885.terrain differ diff --git a/public/terrain/19/858526/353886.terrain b/public/terrain/19/858526/353886.terrain new file mode 100644 index 000000000..6a0a2eac6 Binary files /dev/null and b/public/terrain/19/858526/353886.terrain differ diff --git a/public/terrain/19/858526/353887.terrain b/public/terrain/19/858526/353887.terrain new file mode 100644 index 000000000..9dd37b965 Binary files /dev/null and b/public/terrain/19/858526/353887.terrain differ diff --git a/public/terrain/19/858526/353888.terrain b/public/terrain/19/858526/353888.terrain new file mode 100644 index 000000000..6e43d0d2c Binary files /dev/null and b/public/terrain/19/858526/353888.terrain differ diff --git a/public/terrain/19/858526/353889.terrain b/public/terrain/19/858526/353889.terrain new file mode 100644 index 000000000..8eddf7c5a Binary files /dev/null and b/public/terrain/19/858526/353889.terrain differ diff --git a/public/terrain/19/858526/353890.terrain b/public/terrain/19/858526/353890.terrain new file mode 100644 index 000000000..a2c183f0e Binary files /dev/null and b/public/terrain/19/858526/353890.terrain differ diff --git a/public/terrain/19/858526/353891.terrain b/public/terrain/19/858526/353891.terrain new file mode 100644 index 000000000..545ec1c1a Binary files /dev/null and b/public/terrain/19/858526/353891.terrain differ diff --git a/public/terrain/19/858526/353892.terrain b/public/terrain/19/858526/353892.terrain new file mode 100644 index 000000000..bd45b1916 Binary files /dev/null and b/public/terrain/19/858526/353892.terrain differ diff --git a/public/terrain/19/858526/353893.terrain b/public/terrain/19/858526/353893.terrain new file mode 100644 index 000000000..38c35473d Binary files /dev/null and b/public/terrain/19/858526/353893.terrain differ diff --git a/public/terrain/19/858526/353894.terrain b/public/terrain/19/858526/353894.terrain new file mode 100644 index 000000000..ade70a315 Binary files /dev/null and b/public/terrain/19/858526/353894.terrain differ diff --git a/public/terrain/19/858526/353895.terrain b/public/terrain/19/858526/353895.terrain new file mode 100644 index 000000000..4c196298f Binary files /dev/null and b/public/terrain/19/858526/353895.terrain differ diff --git a/public/terrain/19/858526/353896.terrain b/public/terrain/19/858526/353896.terrain new file mode 100644 index 000000000..f78d4f627 Binary files /dev/null and b/public/terrain/19/858526/353896.terrain differ diff --git a/public/terrain/19/858526/353897.terrain b/public/terrain/19/858526/353897.terrain new file mode 100644 index 000000000..03c307388 Binary files /dev/null and b/public/terrain/19/858526/353897.terrain differ diff --git a/public/terrain/19/858526/353898.terrain b/public/terrain/19/858526/353898.terrain new file mode 100644 index 000000000..f853cbace Binary files /dev/null and b/public/terrain/19/858526/353898.terrain differ diff --git a/public/terrain/19/858526/353899.terrain b/public/terrain/19/858526/353899.terrain new file mode 100644 index 000000000..89b884970 Binary files /dev/null and b/public/terrain/19/858526/353899.terrain differ diff --git a/public/terrain/19/858526/353900.terrain b/public/terrain/19/858526/353900.terrain new file mode 100644 index 000000000..770669ba6 Binary files /dev/null and b/public/terrain/19/858526/353900.terrain differ diff --git a/public/terrain/19/858526/353901.terrain b/public/terrain/19/858526/353901.terrain new file mode 100644 index 000000000..d9d6eeceb Binary files /dev/null and b/public/terrain/19/858526/353901.terrain differ diff --git a/public/terrain/19/858526/353902.terrain b/public/terrain/19/858526/353902.terrain new file mode 100644 index 000000000..d876cd8b2 Binary files /dev/null and b/public/terrain/19/858526/353902.terrain differ diff --git a/public/terrain/19/858526/353903.terrain b/public/terrain/19/858526/353903.terrain new file mode 100644 index 000000000..b5e399e8a Binary files /dev/null and b/public/terrain/19/858526/353903.terrain differ diff --git a/public/terrain/19/858526/353904.terrain b/public/terrain/19/858526/353904.terrain new file mode 100644 index 000000000..ec6052d8b Binary files /dev/null and b/public/terrain/19/858526/353904.terrain differ diff --git a/public/terrain/19/858526/353905.terrain b/public/terrain/19/858526/353905.terrain new file mode 100644 index 000000000..64604b05a Binary files /dev/null and b/public/terrain/19/858526/353905.terrain differ diff --git a/public/terrain/19/858526/353906.terrain b/public/terrain/19/858526/353906.terrain new file mode 100644 index 000000000..805de8890 Binary files /dev/null and b/public/terrain/19/858526/353906.terrain differ diff --git a/public/terrain/19/858526/353907.terrain b/public/terrain/19/858526/353907.terrain new file mode 100644 index 000000000..5917d4038 Binary files /dev/null and b/public/terrain/19/858526/353907.terrain differ diff --git a/public/terrain/19/858526/353908.terrain b/public/terrain/19/858526/353908.terrain new file mode 100644 index 000000000..b02783bc2 Binary files /dev/null and b/public/terrain/19/858526/353908.terrain differ diff --git a/public/terrain/19/858526/353909.terrain b/public/terrain/19/858526/353909.terrain new file mode 100644 index 000000000..c3614b5a1 Binary files /dev/null and b/public/terrain/19/858526/353909.terrain differ diff --git a/public/terrain/19/858526/353910.terrain b/public/terrain/19/858526/353910.terrain new file mode 100644 index 000000000..1755dfbda Binary files /dev/null and b/public/terrain/19/858526/353910.terrain differ diff --git a/public/terrain/19/858526/353911.terrain b/public/terrain/19/858526/353911.terrain new file mode 100644 index 000000000..82464d7e2 Binary files /dev/null and b/public/terrain/19/858526/353911.terrain differ diff --git a/public/terrain/19/858526/353912.terrain b/public/terrain/19/858526/353912.terrain new file mode 100644 index 000000000..6431c7e34 Binary files /dev/null and b/public/terrain/19/858526/353912.terrain differ diff --git a/public/terrain/19/858526/353913.terrain b/public/terrain/19/858526/353913.terrain new file mode 100644 index 000000000..0e8d26def Binary files /dev/null and b/public/terrain/19/858526/353913.terrain differ diff --git a/public/terrain/19/858526/353914.terrain b/public/terrain/19/858526/353914.terrain new file mode 100644 index 000000000..988ad5717 Binary files /dev/null and b/public/terrain/19/858526/353914.terrain differ diff --git a/public/terrain/19/858526/353915.terrain b/public/terrain/19/858526/353915.terrain new file mode 100644 index 000000000..92b250ccd Binary files /dev/null and b/public/terrain/19/858526/353915.terrain differ diff --git a/public/terrain/19/858526/353916.terrain b/public/terrain/19/858526/353916.terrain new file mode 100644 index 000000000..596eeab47 Binary files /dev/null and b/public/terrain/19/858526/353916.terrain differ diff --git a/public/terrain/19/858526/353917.terrain b/public/terrain/19/858526/353917.terrain new file mode 100644 index 000000000..b1f6a1b05 Binary files /dev/null and b/public/terrain/19/858526/353917.terrain differ diff --git a/public/terrain/19/858526/353918.terrain b/public/terrain/19/858526/353918.terrain new file mode 100644 index 000000000..e71530962 Binary files /dev/null and b/public/terrain/19/858526/353918.terrain differ diff --git a/public/terrain/19/858526/353919.terrain b/public/terrain/19/858526/353919.terrain new file mode 100644 index 000000000..f5a54cc0a Binary files /dev/null and b/public/terrain/19/858526/353919.terrain differ diff --git a/public/terrain/19/858526/353920.terrain b/public/terrain/19/858526/353920.terrain new file mode 100644 index 000000000..b8c04621c Binary files /dev/null and b/public/terrain/19/858526/353920.terrain differ diff --git a/public/terrain/19/858526/353921.terrain b/public/terrain/19/858526/353921.terrain new file mode 100644 index 000000000..7c1fd4394 Binary files /dev/null and b/public/terrain/19/858526/353921.terrain differ diff --git a/public/terrain/19/858526/353922.terrain b/public/terrain/19/858526/353922.terrain new file mode 100644 index 000000000..37e8589e1 Binary files /dev/null and b/public/terrain/19/858526/353922.terrain differ diff --git a/public/terrain/19/858526/353923.terrain b/public/terrain/19/858526/353923.terrain new file mode 100644 index 000000000..00703932e Binary files /dev/null and b/public/terrain/19/858526/353923.terrain differ diff --git a/public/terrain/19/858526/353924.terrain b/public/terrain/19/858526/353924.terrain new file mode 100644 index 000000000..dcc314774 Binary files /dev/null and b/public/terrain/19/858526/353924.terrain differ diff --git a/public/terrain/19/858526/353925.terrain b/public/terrain/19/858526/353925.terrain new file mode 100644 index 000000000..734638862 Binary files /dev/null and b/public/terrain/19/858526/353925.terrain differ diff --git a/public/terrain/19/858526/353926.terrain b/public/terrain/19/858526/353926.terrain new file mode 100644 index 000000000..2aac1cd2e Binary files /dev/null and b/public/terrain/19/858526/353926.terrain differ diff --git a/public/terrain/19/858526/353927.terrain b/public/terrain/19/858526/353927.terrain new file mode 100644 index 000000000..f37b4679e Binary files /dev/null and b/public/terrain/19/858526/353927.terrain differ diff --git a/public/terrain/19/858526/353928.terrain b/public/terrain/19/858526/353928.terrain new file mode 100644 index 000000000..54bc8dd77 Binary files /dev/null and b/public/terrain/19/858526/353928.terrain differ diff --git a/public/terrain/19/858526/353929.terrain b/public/terrain/19/858526/353929.terrain new file mode 100644 index 000000000..54f1a293c Binary files /dev/null and b/public/terrain/19/858526/353929.terrain differ diff --git a/public/terrain/19/858526/353930.terrain b/public/terrain/19/858526/353930.terrain new file mode 100644 index 000000000..bc74c1499 Binary files /dev/null and b/public/terrain/19/858526/353930.terrain differ diff --git a/public/terrain/19/858526/353931.terrain b/public/terrain/19/858526/353931.terrain new file mode 100644 index 000000000..55e9dd119 Binary files /dev/null and b/public/terrain/19/858526/353931.terrain differ diff --git a/public/terrain/19/858526/353932.terrain b/public/terrain/19/858526/353932.terrain new file mode 100644 index 000000000..9098f793c Binary files /dev/null and b/public/terrain/19/858526/353932.terrain differ diff --git a/public/terrain/19/858526/353933.terrain b/public/terrain/19/858526/353933.terrain new file mode 100644 index 000000000..fbdfa8e13 Binary files /dev/null and b/public/terrain/19/858526/353933.terrain differ diff --git a/public/terrain/19/858526/353934.terrain b/public/terrain/19/858526/353934.terrain new file mode 100644 index 000000000..b222103c9 Binary files /dev/null and b/public/terrain/19/858526/353934.terrain differ diff --git a/public/terrain/19/858526/353935.terrain b/public/terrain/19/858526/353935.terrain new file mode 100644 index 000000000..0dd3d3897 Binary files /dev/null and b/public/terrain/19/858526/353935.terrain differ diff --git a/public/terrain/19/858526/353936.terrain b/public/terrain/19/858526/353936.terrain new file mode 100644 index 000000000..3a4812488 Binary files /dev/null and b/public/terrain/19/858526/353936.terrain differ diff --git a/public/terrain/19/858526/353937.terrain b/public/terrain/19/858526/353937.terrain new file mode 100644 index 000000000..61f9be613 Binary files /dev/null and b/public/terrain/19/858526/353937.terrain differ diff --git a/public/terrain/19/858526/353938.terrain b/public/terrain/19/858526/353938.terrain new file mode 100644 index 000000000..cf43f1b33 Binary files /dev/null and b/public/terrain/19/858526/353938.terrain differ diff --git a/public/terrain/19/858526/353939.terrain b/public/terrain/19/858526/353939.terrain new file mode 100644 index 000000000..f1aaa1a6d Binary files /dev/null and b/public/terrain/19/858526/353939.terrain differ diff --git a/public/terrain/19/858526/353940.terrain b/public/terrain/19/858526/353940.terrain new file mode 100644 index 000000000..da1a3d3ff Binary files /dev/null and b/public/terrain/19/858526/353940.terrain differ diff --git a/public/terrain/19/858526/353941.terrain b/public/terrain/19/858526/353941.terrain new file mode 100644 index 000000000..7fda65fa9 Binary files /dev/null and b/public/terrain/19/858526/353941.terrain differ diff --git a/public/terrain/19/858526/353942.terrain b/public/terrain/19/858526/353942.terrain new file mode 100644 index 000000000..fb9da4344 Binary files /dev/null and b/public/terrain/19/858526/353942.terrain differ diff --git a/public/terrain/19/858526/353943.terrain b/public/terrain/19/858526/353943.terrain new file mode 100644 index 000000000..07edaca7c Binary files /dev/null and b/public/terrain/19/858526/353943.terrain differ diff --git a/public/terrain/19/858526/353944.terrain b/public/terrain/19/858526/353944.terrain new file mode 100644 index 000000000..eed016df9 Binary files /dev/null and b/public/terrain/19/858526/353944.terrain differ diff --git a/public/terrain/19/858526/353945.terrain b/public/terrain/19/858526/353945.terrain new file mode 100644 index 000000000..3e829651c Binary files /dev/null and b/public/terrain/19/858526/353945.terrain differ diff --git a/public/terrain/19/858526/353946.terrain b/public/terrain/19/858526/353946.terrain new file mode 100644 index 000000000..2dc528546 Binary files /dev/null and b/public/terrain/19/858526/353946.terrain differ diff --git a/public/terrain/19/858526/353947.terrain b/public/terrain/19/858526/353947.terrain new file mode 100644 index 000000000..553b74726 Binary files /dev/null and b/public/terrain/19/858526/353947.terrain differ diff --git a/public/terrain/19/858526/353948.terrain b/public/terrain/19/858526/353948.terrain new file mode 100644 index 000000000..11edbabfd Binary files /dev/null and b/public/terrain/19/858526/353948.terrain differ diff --git a/public/terrain/19/858526/353949.terrain b/public/terrain/19/858526/353949.terrain new file mode 100644 index 000000000..2198f4a55 Binary files /dev/null and b/public/terrain/19/858526/353949.terrain differ diff --git a/public/terrain/19/858526/353950.terrain b/public/terrain/19/858526/353950.terrain new file mode 100644 index 000000000..2a6d2b537 Binary files /dev/null and b/public/terrain/19/858526/353950.terrain differ diff --git a/public/terrain/19/858526/353951.terrain b/public/terrain/19/858526/353951.terrain new file mode 100644 index 000000000..6f59323eb Binary files /dev/null and b/public/terrain/19/858526/353951.terrain differ diff --git a/public/terrain/19/858526/353952.terrain b/public/terrain/19/858526/353952.terrain new file mode 100644 index 000000000..fa8d6dadb Binary files /dev/null and b/public/terrain/19/858526/353952.terrain differ diff --git a/public/terrain/19/858526/353953.terrain b/public/terrain/19/858526/353953.terrain new file mode 100644 index 000000000..123ef7390 Binary files /dev/null and b/public/terrain/19/858526/353953.terrain differ diff --git a/public/terrain/19/858526/353954.terrain b/public/terrain/19/858526/353954.terrain new file mode 100644 index 000000000..a2a713075 Binary files /dev/null and b/public/terrain/19/858526/353954.terrain differ diff --git a/public/terrain/19/858526/353955.terrain b/public/terrain/19/858526/353955.terrain new file mode 100644 index 000000000..78401b7f6 Binary files /dev/null and b/public/terrain/19/858526/353955.terrain differ diff --git a/public/terrain/19/858526/353956.terrain b/public/terrain/19/858526/353956.terrain new file mode 100644 index 000000000..7d946538e Binary files /dev/null and b/public/terrain/19/858526/353956.terrain differ diff --git a/public/terrain/19/858526/353957.terrain b/public/terrain/19/858526/353957.terrain new file mode 100644 index 000000000..87ddf6ad6 Binary files /dev/null and b/public/terrain/19/858526/353957.terrain differ diff --git a/public/terrain/19/858526/353958.terrain b/public/terrain/19/858526/353958.terrain new file mode 100644 index 000000000..b7c74305b Binary files /dev/null and b/public/terrain/19/858526/353958.terrain differ diff --git a/public/terrain/19/858526/353959.terrain b/public/terrain/19/858526/353959.terrain new file mode 100644 index 000000000..bdfbadc94 Binary files /dev/null and b/public/terrain/19/858526/353959.terrain differ diff --git a/public/terrain/19/858526/353960.terrain b/public/terrain/19/858526/353960.terrain new file mode 100644 index 000000000..19b406fdd Binary files /dev/null and b/public/terrain/19/858526/353960.terrain differ diff --git a/public/terrain/19/858526/353961.terrain b/public/terrain/19/858526/353961.terrain new file mode 100644 index 000000000..d259c3be2 Binary files /dev/null and b/public/terrain/19/858526/353961.terrain differ diff --git a/public/terrain/19/858526/353962.terrain b/public/terrain/19/858526/353962.terrain new file mode 100644 index 000000000..0112679dc Binary files /dev/null and b/public/terrain/19/858526/353962.terrain differ diff --git a/public/terrain/19/858526/353963.terrain b/public/terrain/19/858526/353963.terrain new file mode 100644 index 000000000..b8e9cf0c9 Binary files /dev/null and b/public/terrain/19/858526/353963.terrain differ diff --git a/public/terrain/19/858526/353964.terrain b/public/terrain/19/858526/353964.terrain new file mode 100644 index 000000000..5bef2e2c3 Binary files /dev/null and b/public/terrain/19/858526/353964.terrain differ diff --git a/public/terrain/19/858526/353965.terrain b/public/terrain/19/858526/353965.terrain new file mode 100644 index 000000000..02f795d33 Binary files /dev/null and b/public/terrain/19/858526/353965.terrain differ diff --git a/public/terrain/19/858526/353966.terrain b/public/terrain/19/858526/353966.terrain new file mode 100644 index 000000000..b70cdbd80 Binary files /dev/null and b/public/terrain/19/858526/353966.terrain differ diff --git a/public/terrain/19/858526/353967.terrain b/public/terrain/19/858526/353967.terrain new file mode 100644 index 000000000..5eeef5011 Binary files /dev/null and b/public/terrain/19/858526/353967.terrain differ diff --git a/public/terrain/19/858526/353968.terrain b/public/terrain/19/858526/353968.terrain new file mode 100644 index 000000000..1e8303d7c Binary files /dev/null and b/public/terrain/19/858526/353968.terrain differ diff --git a/public/terrain/19/858526/353969.terrain b/public/terrain/19/858526/353969.terrain new file mode 100644 index 000000000..04843c798 Binary files /dev/null and b/public/terrain/19/858526/353969.terrain differ diff --git a/public/terrain/19/858526/353970.terrain b/public/terrain/19/858526/353970.terrain new file mode 100644 index 000000000..c7e84fae0 Binary files /dev/null and b/public/terrain/19/858526/353970.terrain differ diff --git a/public/terrain/19/858526/353971.terrain b/public/terrain/19/858526/353971.terrain new file mode 100644 index 000000000..4b20f762f Binary files /dev/null and b/public/terrain/19/858526/353971.terrain differ diff --git a/public/terrain/19/858526/353972.terrain b/public/terrain/19/858526/353972.terrain new file mode 100644 index 000000000..1cfa9b9db Binary files /dev/null and b/public/terrain/19/858526/353972.terrain differ diff --git a/public/terrain/19/858526/353973.terrain b/public/terrain/19/858526/353973.terrain new file mode 100644 index 000000000..e54291ef0 Binary files /dev/null and b/public/terrain/19/858526/353973.terrain differ diff --git a/public/terrain/19/858526/353974.terrain b/public/terrain/19/858526/353974.terrain new file mode 100644 index 000000000..05cc62211 Binary files /dev/null and b/public/terrain/19/858526/353974.terrain differ diff --git a/public/terrain/19/858526/353975.terrain b/public/terrain/19/858526/353975.terrain new file mode 100644 index 000000000..ca6773230 Binary files /dev/null and b/public/terrain/19/858526/353975.terrain differ diff --git a/public/terrain/19/858526/353976.terrain b/public/terrain/19/858526/353976.terrain new file mode 100644 index 000000000..9e84ee9c0 Binary files /dev/null and b/public/terrain/19/858526/353976.terrain differ diff --git a/public/terrain/19/858526/353977.terrain b/public/terrain/19/858526/353977.terrain new file mode 100644 index 000000000..51af8e42e Binary files /dev/null and b/public/terrain/19/858526/353977.terrain differ diff --git a/public/terrain/19/858526/353978.terrain b/public/terrain/19/858526/353978.terrain new file mode 100644 index 000000000..3d4e2ad00 Binary files /dev/null and b/public/terrain/19/858526/353978.terrain differ diff --git a/public/terrain/19/858526/353979.terrain b/public/terrain/19/858526/353979.terrain new file mode 100644 index 000000000..b22bbf623 Binary files /dev/null and b/public/terrain/19/858526/353979.terrain differ diff --git a/public/terrain/19/858526/353980.terrain b/public/terrain/19/858526/353980.terrain new file mode 100644 index 000000000..0b90ac2c4 Binary files /dev/null and b/public/terrain/19/858526/353980.terrain differ diff --git a/public/terrain/19/858526/353981.terrain b/public/terrain/19/858526/353981.terrain new file mode 100644 index 000000000..4cc2f081a Binary files /dev/null and b/public/terrain/19/858526/353981.terrain differ diff --git a/public/terrain/19/858526/353982.terrain b/public/terrain/19/858526/353982.terrain new file mode 100644 index 000000000..3a0f8ec55 Binary files /dev/null and b/public/terrain/19/858526/353982.terrain differ diff --git a/public/terrain/19/858526/353983.terrain b/public/terrain/19/858526/353983.terrain new file mode 100644 index 000000000..a5759d7e3 Binary files /dev/null and b/public/terrain/19/858526/353983.terrain differ diff --git a/public/terrain/19/858526/353984.terrain b/public/terrain/19/858526/353984.terrain new file mode 100644 index 000000000..3b46ace12 Binary files /dev/null and b/public/terrain/19/858526/353984.terrain differ diff --git a/public/terrain/19/858526/353985.terrain b/public/terrain/19/858526/353985.terrain new file mode 100644 index 000000000..1b70f8304 Binary files /dev/null and b/public/terrain/19/858526/353985.terrain differ diff --git a/public/terrain/19/858526/353986.terrain b/public/terrain/19/858526/353986.terrain new file mode 100644 index 000000000..db561a037 Binary files /dev/null and b/public/terrain/19/858526/353986.terrain differ diff --git a/public/terrain/19/858526/353987.terrain b/public/terrain/19/858526/353987.terrain new file mode 100644 index 000000000..9d20e0325 Binary files /dev/null and b/public/terrain/19/858526/353987.terrain differ diff --git a/public/terrain/19/858526/353988.terrain b/public/terrain/19/858526/353988.terrain new file mode 100644 index 000000000..eaea3aea6 Binary files /dev/null and b/public/terrain/19/858526/353988.terrain differ diff --git a/public/terrain/19/858526/353989.terrain b/public/terrain/19/858526/353989.terrain new file mode 100644 index 000000000..be705bdc5 Binary files /dev/null and b/public/terrain/19/858526/353989.terrain differ diff --git a/public/terrain/19/858526/353990.terrain b/public/terrain/19/858526/353990.terrain new file mode 100644 index 000000000..c713f5c43 Binary files /dev/null and b/public/terrain/19/858526/353990.terrain differ diff --git a/public/terrain/19/858526/353991.terrain b/public/terrain/19/858526/353991.terrain new file mode 100644 index 000000000..6022a8af9 Binary files /dev/null and b/public/terrain/19/858526/353991.terrain differ diff --git a/public/terrain/19/858526/353992.terrain b/public/terrain/19/858526/353992.terrain new file mode 100644 index 000000000..7c4ff0234 Binary files /dev/null and b/public/terrain/19/858526/353992.terrain differ diff --git a/public/terrain/19/858526/353993.terrain b/public/terrain/19/858526/353993.terrain new file mode 100644 index 000000000..982c69b82 Binary files /dev/null and b/public/terrain/19/858526/353993.terrain differ diff --git a/public/terrain/19/858526/353994.terrain b/public/terrain/19/858526/353994.terrain new file mode 100644 index 000000000..a2690c5f8 Binary files /dev/null and b/public/terrain/19/858526/353994.terrain differ diff --git a/public/terrain/19/858526/353995.terrain b/public/terrain/19/858526/353995.terrain new file mode 100644 index 000000000..2272dbe84 Binary files /dev/null and b/public/terrain/19/858526/353995.terrain differ diff --git a/public/terrain/19/858526/353996.terrain b/public/terrain/19/858526/353996.terrain new file mode 100644 index 000000000..23cae5971 Binary files /dev/null and b/public/terrain/19/858526/353996.terrain differ diff --git a/public/terrain/19/858526/353997.terrain b/public/terrain/19/858526/353997.terrain new file mode 100644 index 000000000..dd5c7a548 Binary files /dev/null and b/public/terrain/19/858526/353997.terrain differ diff --git a/public/terrain/19/858526/353998.terrain b/public/terrain/19/858526/353998.terrain new file mode 100644 index 000000000..7facbf37f Binary files /dev/null and b/public/terrain/19/858526/353998.terrain differ diff --git a/public/terrain/19/858526/353999.terrain b/public/terrain/19/858526/353999.terrain new file mode 100644 index 000000000..9524bc36a Binary files /dev/null and b/public/terrain/19/858526/353999.terrain differ diff --git a/public/terrain/19/858526/354000.terrain b/public/terrain/19/858526/354000.terrain new file mode 100644 index 000000000..8ff808cdb Binary files /dev/null and b/public/terrain/19/858526/354000.terrain differ diff --git a/public/terrain/19/858526/354001.terrain b/public/terrain/19/858526/354001.terrain new file mode 100644 index 000000000..14f23671b Binary files /dev/null and b/public/terrain/19/858526/354001.terrain differ diff --git a/public/terrain/19/858526/354002.terrain b/public/terrain/19/858526/354002.terrain new file mode 100644 index 000000000..c8f26ce73 Binary files /dev/null and b/public/terrain/19/858526/354002.terrain differ diff --git a/public/terrain/19/858526/354003.terrain b/public/terrain/19/858526/354003.terrain new file mode 100644 index 000000000..d1df6bc3c Binary files /dev/null and b/public/terrain/19/858526/354003.terrain differ diff --git a/public/terrain/19/858526/354004.terrain b/public/terrain/19/858526/354004.terrain new file mode 100644 index 000000000..01aec4d95 Binary files /dev/null and b/public/terrain/19/858526/354004.terrain differ diff --git a/public/terrain/19/858526/354005.terrain b/public/terrain/19/858526/354005.terrain new file mode 100644 index 000000000..8fbfdeaf3 Binary files /dev/null and b/public/terrain/19/858526/354005.terrain differ diff --git a/public/terrain/19/858526/354006.terrain b/public/terrain/19/858526/354006.terrain new file mode 100644 index 000000000..898ab90ec Binary files /dev/null and b/public/terrain/19/858526/354006.terrain differ diff --git a/public/terrain/19/858526/354007.terrain b/public/terrain/19/858526/354007.terrain new file mode 100644 index 000000000..48501795e Binary files /dev/null and b/public/terrain/19/858526/354007.terrain differ diff --git a/public/terrain/19/858526/354008.terrain b/public/terrain/19/858526/354008.terrain new file mode 100644 index 000000000..d9f567e40 Binary files /dev/null and b/public/terrain/19/858526/354008.terrain differ diff --git a/public/terrain/19/858526/354009.terrain b/public/terrain/19/858526/354009.terrain new file mode 100644 index 000000000..ae23ca238 Binary files /dev/null and b/public/terrain/19/858526/354009.terrain differ diff --git a/public/terrain/19/858526/354010.terrain b/public/terrain/19/858526/354010.terrain new file mode 100644 index 000000000..32d1bf48a Binary files /dev/null and b/public/terrain/19/858526/354010.terrain differ diff --git a/public/terrain/19/858526/354011.terrain b/public/terrain/19/858526/354011.terrain new file mode 100644 index 000000000..8dfc7a64f Binary files /dev/null and b/public/terrain/19/858526/354011.terrain differ diff --git a/public/terrain/19/858526/354012.terrain b/public/terrain/19/858526/354012.terrain new file mode 100644 index 000000000..2e5d159cc Binary files /dev/null and b/public/terrain/19/858526/354012.terrain differ diff --git a/public/terrain/19/858526/354013.terrain b/public/terrain/19/858526/354013.terrain new file mode 100644 index 000000000..bdc570eb9 Binary files /dev/null and b/public/terrain/19/858526/354013.terrain differ diff --git a/public/terrain/19/858526/354014.terrain b/public/terrain/19/858526/354014.terrain new file mode 100644 index 000000000..2608b9ea1 Binary files /dev/null and b/public/terrain/19/858526/354014.terrain differ diff --git a/public/terrain/19/858526/354015.terrain b/public/terrain/19/858526/354015.terrain new file mode 100644 index 000000000..1ac45adcf Binary files /dev/null and b/public/terrain/19/858526/354015.terrain differ diff --git a/public/terrain/19/858526/354016.terrain b/public/terrain/19/858526/354016.terrain new file mode 100644 index 000000000..418883ab3 Binary files /dev/null and b/public/terrain/19/858526/354016.terrain differ diff --git a/public/terrain/19/858526/354017.terrain b/public/terrain/19/858526/354017.terrain new file mode 100644 index 000000000..69153c605 Binary files /dev/null and b/public/terrain/19/858526/354017.terrain differ diff --git a/public/terrain/19/858526/354018.terrain b/public/terrain/19/858526/354018.terrain new file mode 100644 index 000000000..bceb0f627 Binary files /dev/null and b/public/terrain/19/858526/354018.terrain differ diff --git a/public/terrain/19/858526/354019.terrain b/public/terrain/19/858526/354019.terrain new file mode 100644 index 000000000..daf2b68d6 Binary files /dev/null and b/public/terrain/19/858526/354019.terrain differ diff --git a/public/terrain/19/858526/354020.terrain b/public/terrain/19/858526/354020.terrain new file mode 100644 index 000000000..d937c24e1 Binary files /dev/null and b/public/terrain/19/858526/354020.terrain differ diff --git a/public/terrain/19/858526/354021.terrain b/public/terrain/19/858526/354021.terrain new file mode 100644 index 000000000..b87b9a0ac Binary files /dev/null and b/public/terrain/19/858526/354021.terrain differ diff --git a/public/terrain/19/858526/354022.terrain b/public/terrain/19/858526/354022.terrain new file mode 100644 index 000000000..6e2100995 Binary files /dev/null and b/public/terrain/19/858526/354022.terrain differ diff --git a/public/terrain/19/858526/354023.terrain b/public/terrain/19/858526/354023.terrain new file mode 100644 index 000000000..975ef5e82 Binary files /dev/null and b/public/terrain/19/858526/354023.terrain differ diff --git a/public/terrain/19/858526/354024.terrain b/public/terrain/19/858526/354024.terrain new file mode 100644 index 000000000..cde8e787a Binary files /dev/null and b/public/terrain/19/858526/354024.terrain differ diff --git a/public/terrain/19/858526/354025.terrain b/public/terrain/19/858526/354025.terrain new file mode 100644 index 000000000..a1ff9e407 Binary files /dev/null and b/public/terrain/19/858526/354025.terrain differ diff --git a/public/terrain/19/858526/354026.terrain b/public/terrain/19/858526/354026.terrain new file mode 100644 index 000000000..cd5f4341e Binary files /dev/null and b/public/terrain/19/858526/354026.terrain differ diff --git a/public/terrain/19/858526/354027.terrain b/public/terrain/19/858526/354027.terrain new file mode 100644 index 000000000..bef6ef29e Binary files /dev/null and b/public/terrain/19/858526/354027.terrain differ diff --git a/public/terrain/19/858526/354028.terrain b/public/terrain/19/858526/354028.terrain new file mode 100644 index 000000000..cf5753309 Binary files /dev/null and b/public/terrain/19/858526/354028.terrain differ diff --git a/public/terrain/19/858526/354029.terrain b/public/terrain/19/858526/354029.terrain new file mode 100644 index 000000000..f2ec9221c Binary files /dev/null and b/public/terrain/19/858526/354029.terrain differ diff --git a/public/terrain/19/858526/354030.terrain b/public/terrain/19/858526/354030.terrain new file mode 100644 index 000000000..6a132af95 Binary files /dev/null and b/public/terrain/19/858526/354030.terrain differ diff --git a/public/terrain/19/858526/354031.terrain b/public/terrain/19/858526/354031.terrain new file mode 100644 index 000000000..05c8f4d07 Binary files /dev/null and b/public/terrain/19/858526/354031.terrain differ diff --git a/public/terrain/19/858526/354032.terrain b/public/terrain/19/858526/354032.terrain new file mode 100644 index 000000000..c274fb79c Binary files /dev/null and b/public/terrain/19/858526/354032.terrain differ diff --git a/public/terrain/19/858526/354033.terrain b/public/terrain/19/858526/354033.terrain new file mode 100644 index 000000000..3652cc62f Binary files /dev/null and b/public/terrain/19/858526/354033.terrain differ diff --git a/public/terrain/19/858526/354034.terrain b/public/terrain/19/858526/354034.terrain new file mode 100644 index 000000000..2b1390602 Binary files /dev/null and b/public/terrain/19/858526/354034.terrain differ diff --git a/public/terrain/19/858526/354035.terrain b/public/terrain/19/858526/354035.terrain new file mode 100644 index 000000000..9435f15e7 Binary files /dev/null and b/public/terrain/19/858526/354035.terrain differ diff --git a/public/terrain/19/858526/354036.terrain b/public/terrain/19/858526/354036.terrain new file mode 100644 index 000000000..6152885e1 Binary files /dev/null and b/public/terrain/19/858526/354036.terrain differ diff --git a/public/terrain/19/858526/354037.terrain b/public/terrain/19/858526/354037.terrain new file mode 100644 index 000000000..ed26c5b2f Binary files /dev/null and b/public/terrain/19/858526/354037.terrain differ diff --git a/public/terrain/19/858526/354038.terrain b/public/terrain/19/858526/354038.terrain new file mode 100644 index 000000000..0aca23425 Binary files /dev/null and b/public/terrain/19/858526/354038.terrain differ diff --git a/public/terrain/19/858526/354039.terrain b/public/terrain/19/858526/354039.terrain new file mode 100644 index 000000000..ed29a89a2 Binary files /dev/null and b/public/terrain/19/858526/354039.terrain differ diff --git a/public/terrain/19/858526/354040.terrain b/public/terrain/19/858526/354040.terrain new file mode 100644 index 000000000..bcbad2fb2 Binary files /dev/null and b/public/terrain/19/858526/354040.terrain differ diff --git a/public/terrain/19/858526/354041.terrain b/public/terrain/19/858526/354041.terrain new file mode 100644 index 000000000..993bf6c06 Binary files /dev/null and b/public/terrain/19/858526/354041.terrain differ diff --git a/public/terrain/19/858526/354042.terrain b/public/terrain/19/858526/354042.terrain new file mode 100644 index 000000000..0c7030a65 Binary files /dev/null and b/public/terrain/19/858526/354042.terrain differ diff --git a/public/terrain/19/858526/354043.terrain b/public/terrain/19/858526/354043.terrain new file mode 100644 index 000000000..969f5cb48 Binary files /dev/null and b/public/terrain/19/858526/354043.terrain differ diff --git a/public/terrain/19/858526/354044.terrain b/public/terrain/19/858526/354044.terrain new file mode 100644 index 000000000..95ca6460d Binary files /dev/null and b/public/terrain/19/858526/354044.terrain differ diff --git a/public/terrain/19/858526/354045.terrain b/public/terrain/19/858526/354045.terrain new file mode 100644 index 000000000..19ae6ea86 Binary files /dev/null and b/public/terrain/19/858526/354045.terrain differ diff --git a/public/terrain/19/858526/354046.terrain b/public/terrain/19/858526/354046.terrain new file mode 100644 index 000000000..82c02bea8 Binary files /dev/null and b/public/terrain/19/858526/354046.terrain differ diff --git a/public/terrain/19/858526/354047.terrain b/public/terrain/19/858526/354047.terrain new file mode 100644 index 000000000..4d976f7ba Binary files /dev/null and b/public/terrain/19/858526/354047.terrain differ diff --git a/public/terrain/19/858526/354048.terrain b/public/terrain/19/858526/354048.terrain new file mode 100644 index 000000000..33b80f4b0 Binary files /dev/null and b/public/terrain/19/858526/354048.terrain differ diff --git a/public/terrain/19/858526/354049.terrain b/public/terrain/19/858526/354049.terrain new file mode 100644 index 000000000..1a911d815 Binary files /dev/null and b/public/terrain/19/858526/354049.terrain differ diff --git a/public/terrain/19/858526/354050.terrain b/public/terrain/19/858526/354050.terrain new file mode 100644 index 000000000..bb7646dc1 Binary files /dev/null and b/public/terrain/19/858526/354050.terrain differ diff --git a/public/terrain/19/858526/354051.terrain b/public/terrain/19/858526/354051.terrain new file mode 100644 index 000000000..a2ff1606f Binary files /dev/null and b/public/terrain/19/858526/354051.terrain differ diff --git a/public/terrain/19/858526/354052.terrain b/public/terrain/19/858526/354052.terrain new file mode 100644 index 000000000..187abcb53 Binary files /dev/null and b/public/terrain/19/858526/354052.terrain differ diff --git a/public/terrain/19/858526/354053.terrain b/public/terrain/19/858526/354053.terrain new file mode 100644 index 000000000..40b8eb626 Binary files /dev/null and b/public/terrain/19/858526/354053.terrain differ diff --git a/public/terrain/19/858526/354054.terrain b/public/terrain/19/858526/354054.terrain new file mode 100644 index 000000000..1ea0b288a Binary files /dev/null and b/public/terrain/19/858526/354054.terrain differ diff --git a/public/terrain/19/858526/354055.terrain b/public/terrain/19/858526/354055.terrain new file mode 100644 index 000000000..8a1e6bc5c Binary files /dev/null and b/public/terrain/19/858526/354055.terrain differ diff --git a/public/terrain/19/858526/354056.terrain b/public/terrain/19/858526/354056.terrain new file mode 100644 index 000000000..804ec4b0e Binary files /dev/null and b/public/terrain/19/858526/354056.terrain differ diff --git a/public/terrain/19/858526/354057.terrain b/public/terrain/19/858526/354057.terrain new file mode 100644 index 000000000..1dc7015ed Binary files /dev/null and b/public/terrain/19/858526/354057.terrain differ diff --git a/public/terrain/19/858526/354058.terrain b/public/terrain/19/858526/354058.terrain new file mode 100644 index 000000000..172c5ef4f Binary files /dev/null and b/public/terrain/19/858526/354058.terrain differ diff --git a/public/terrain/19/858526/354059.terrain b/public/terrain/19/858526/354059.terrain new file mode 100644 index 000000000..f5185057d Binary files /dev/null and b/public/terrain/19/858526/354059.terrain differ diff --git a/public/terrain/19/858527/353743.terrain b/public/terrain/19/858527/353743.terrain new file mode 100644 index 000000000..3b5de7706 Binary files /dev/null and b/public/terrain/19/858527/353743.terrain differ diff --git a/public/terrain/19/858527/353744.terrain b/public/terrain/19/858527/353744.terrain new file mode 100644 index 000000000..98976f6b9 Binary files /dev/null and b/public/terrain/19/858527/353744.terrain differ diff --git a/public/terrain/19/858527/353745.terrain b/public/terrain/19/858527/353745.terrain new file mode 100644 index 000000000..b76a1897a Binary files /dev/null and b/public/terrain/19/858527/353745.terrain differ diff --git a/public/terrain/19/858527/353746.terrain b/public/terrain/19/858527/353746.terrain new file mode 100644 index 000000000..4e9002f00 Binary files /dev/null and b/public/terrain/19/858527/353746.terrain differ diff --git a/public/terrain/19/858527/353747.terrain b/public/terrain/19/858527/353747.terrain new file mode 100644 index 000000000..bc64fd40d Binary files /dev/null and b/public/terrain/19/858527/353747.terrain differ diff --git a/public/terrain/19/858527/353748.terrain b/public/terrain/19/858527/353748.terrain new file mode 100644 index 000000000..c62ee751f Binary files /dev/null and b/public/terrain/19/858527/353748.terrain differ diff --git a/public/terrain/19/858527/353749.terrain b/public/terrain/19/858527/353749.terrain new file mode 100644 index 000000000..9f24b367b Binary files /dev/null and b/public/terrain/19/858527/353749.terrain differ diff --git a/public/terrain/19/858527/353750.terrain b/public/terrain/19/858527/353750.terrain new file mode 100644 index 000000000..b30cade6f Binary files /dev/null and b/public/terrain/19/858527/353750.terrain differ diff --git a/public/terrain/19/858527/353751.terrain b/public/terrain/19/858527/353751.terrain new file mode 100644 index 000000000..af98e64b7 Binary files /dev/null and b/public/terrain/19/858527/353751.terrain differ diff --git a/public/terrain/19/858527/353752.terrain b/public/terrain/19/858527/353752.terrain new file mode 100644 index 000000000..5abcfc052 Binary files /dev/null and b/public/terrain/19/858527/353752.terrain differ diff --git a/public/terrain/19/858527/353753.terrain b/public/terrain/19/858527/353753.terrain new file mode 100644 index 000000000..4467350d5 Binary files /dev/null and b/public/terrain/19/858527/353753.terrain differ diff --git a/public/terrain/19/858527/353754.terrain b/public/terrain/19/858527/353754.terrain new file mode 100644 index 000000000..e485e1115 Binary files /dev/null and b/public/terrain/19/858527/353754.terrain differ diff --git a/public/terrain/19/858527/353755.terrain b/public/terrain/19/858527/353755.terrain new file mode 100644 index 000000000..fa5aad26e Binary files /dev/null and b/public/terrain/19/858527/353755.terrain differ diff --git a/public/terrain/19/858527/353756.terrain b/public/terrain/19/858527/353756.terrain new file mode 100644 index 000000000..46d5bda32 Binary files /dev/null and b/public/terrain/19/858527/353756.terrain differ diff --git a/public/terrain/19/858527/353757.terrain b/public/terrain/19/858527/353757.terrain new file mode 100644 index 000000000..9ee00fc90 Binary files /dev/null and b/public/terrain/19/858527/353757.terrain differ diff --git a/public/terrain/19/858527/353758.terrain b/public/terrain/19/858527/353758.terrain new file mode 100644 index 000000000..14d48ce5b Binary files /dev/null and b/public/terrain/19/858527/353758.terrain differ diff --git a/public/terrain/19/858527/353759.terrain b/public/terrain/19/858527/353759.terrain new file mode 100644 index 000000000..f05a554fc Binary files /dev/null and b/public/terrain/19/858527/353759.terrain differ diff --git a/public/terrain/19/858527/353760.terrain b/public/terrain/19/858527/353760.terrain new file mode 100644 index 000000000..5fa45f36d Binary files /dev/null and b/public/terrain/19/858527/353760.terrain differ diff --git a/public/terrain/19/858527/353761.terrain b/public/terrain/19/858527/353761.terrain new file mode 100644 index 000000000..edc114c4f Binary files /dev/null and b/public/terrain/19/858527/353761.terrain differ diff --git a/public/terrain/19/858527/353762.terrain b/public/terrain/19/858527/353762.terrain new file mode 100644 index 000000000..b355438e0 Binary files /dev/null and b/public/terrain/19/858527/353762.terrain differ diff --git a/public/terrain/19/858527/353763.terrain b/public/terrain/19/858527/353763.terrain new file mode 100644 index 000000000..774776b9e Binary files /dev/null and b/public/terrain/19/858527/353763.terrain differ diff --git a/public/terrain/19/858527/353764.terrain b/public/terrain/19/858527/353764.terrain new file mode 100644 index 000000000..f48f053b5 Binary files /dev/null and b/public/terrain/19/858527/353764.terrain differ diff --git a/public/terrain/19/858527/353765.terrain b/public/terrain/19/858527/353765.terrain new file mode 100644 index 000000000..f47164023 Binary files /dev/null and b/public/terrain/19/858527/353765.terrain differ diff --git a/public/terrain/19/858527/353766.terrain b/public/terrain/19/858527/353766.terrain new file mode 100644 index 000000000..b6d03ebba Binary files /dev/null and b/public/terrain/19/858527/353766.terrain differ diff --git a/public/terrain/19/858527/353767.terrain b/public/terrain/19/858527/353767.terrain new file mode 100644 index 000000000..bb7c7b96c Binary files /dev/null and b/public/terrain/19/858527/353767.terrain differ diff --git a/public/terrain/19/858527/353768.terrain b/public/terrain/19/858527/353768.terrain new file mode 100644 index 000000000..69ea41880 Binary files /dev/null and b/public/terrain/19/858527/353768.terrain differ diff --git a/public/terrain/19/858527/353769.terrain b/public/terrain/19/858527/353769.terrain new file mode 100644 index 000000000..03aafe9e1 Binary files /dev/null and b/public/terrain/19/858527/353769.terrain differ diff --git a/public/terrain/19/858527/353770.terrain b/public/terrain/19/858527/353770.terrain new file mode 100644 index 000000000..0ce48587d Binary files /dev/null and b/public/terrain/19/858527/353770.terrain differ diff --git a/public/terrain/19/858527/353771.terrain b/public/terrain/19/858527/353771.terrain new file mode 100644 index 000000000..058d0d8d1 Binary files /dev/null and b/public/terrain/19/858527/353771.terrain differ diff --git a/public/terrain/19/858527/353772.terrain b/public/terrain/19/858527/353772.terrain new file mode 100644 index 000000000..442a5fc70 Binary files /dev/null and b/public/terrain/19/858527/353772.terrain differ diff --git a/public/terrain/19/858527/353773.terrain b/public/terrain/19/858527/353773.terrain new file mode 100644 index 000000000..a0e5b32c7 Binary files /dev/null and b/public/terrain/19/858527/353773.terrain differ diff --git a/public/terrain/19/858527/353774.terrain b/public/terrain/19/858527/353774.terrain new file mode 100644 index 000000000..1f18d99aa Binary files /dev/null and b/public/terrain/19/858527/353774.terrain differ diff --git a/public/terrain/19/858527/353775.terrain b/public/terrain/19/858527/353775.terrain new file mode 100644 index 000000000..60af3c6d7 Binary files /dev/null and b/public/terrain/19/858527/353775.terrain differ diff --git a/public/terrain/19/858527/353776.terrain b/public/terrain/19/858527/353776.terrain new file mode 100644 index 000000000..508f1ae59 Binary files /dev/null and b/public/terrain/19/858527/353776.terrain differ diff --git a/public/terrain/19/858527/353777.terrain b/public/terrain/19/858527/353777.terrain new file mode 100644 index 000000000..69439d1c2 Binary files /dev/null and b/public/terrain/19/858527/353777.terrain differ diff --git a/public/terrain/19/858527/353778.terrain b/public/terrain/19/858527/353778.terrain new file mode 100644 index 000000000..1aea9ea2d Binary files /dev/null and b/public/terrain/19/858527/353778.terrain differ diff --git a/public/terrain/19/858527/353779.terrain b/public/terrain/19/858527/353779.terrain new file mode 100644 index 000000000..be134bd59 Binary files /dev/null and b/public/terrain/19/858527/353779.terrain differ diff --git a/public/terrain/19/858527/353780.terrain b/public/terrain/19/858527/353780.terrain new file mode 100644 index 000000000..ce1efad86 Binary files /dev/null and b/public/terrain/19/858527/353780.terrain differ diff --git a/public/terrain/19/858527/353781.terrain b/public/terrain/19/858527/353781.terrain new file mode 100644 index 000000000..eed9b1f77 Binary files /dev/null and b/public/terrain/19/858527/353781.terrain differ diff --git a/public/terrain/19/858527/353782.terrain b/public/terrain/19/858527/353782.terrain new file mode 100644 index 000000000..ac4d34a4e Binary files /dev/null and b/public/terrain/19/858527/353782.terrain differ diff --git a/public/terrain/19/858527/353783.terrain b/public/terrain/19/858527/353783.terrain new file mode 100644 index 000000000..e0283cde5 Binary files /dev/null and b/public/terrain/19/858527/353783.terrain differ diff --git a/public/terrain/19/858527/353784.terrain b/public/terrain/19/858527/353784.terrain new file mode 100644 index 000000000..6a0fec4cf Binary files /dev/null and b/public/terrain/19/858527/353784.terrain differ diff --git a/public/terrain/19/858527/353785.terrain b/public/terrain/19/858527/353785.terrain new file mode 100644 index 000000000..2fab3403a Binary files /dev/null and b/public/terrain/19/858527/353785.terrain differ diff --git a/public/terrain/19/858527/353786.terrain b/public/terrain/19/858527/353786.terrain new file mode 100644 index 000000000..3e62ec394 Binary files /dev/null and b/public/terrain/19/858527/353786.terrain differ diff --git a/public/terrain/19/858527/353787.terrain b/public/terrain/19/858527/353787.terrain new file mode 100644 index 000000000..296e4597b Binary files /dev/null and b/public/terrain/19/858527/353787.terrain differ diff --git a/public/terrain/19/858527/353788.terrain b/public/terrain/19/858527/353788.terrain new file mode 100644 index 000000000..22a4def46 Binary files /dev/null and b/public/terrain/19/858527/353788.terrain differ diff --git a/public/terrain/19/858527/353789.terrain b/public/terrain/19/858527/353789.terrain new file mode 100644 index 000000000..5ce93f932 Binary files /dev/null and b/public/terrain/19/858527/353789.terrain differ diff --git a/public/terrain/19/858527/353790.terrain b/public/terrain/19/858527/353790.terrain new file mode 100644 index 000000000..f5c96bdab Binary files /dev/null and b/public/terrain/19/858527/353790.terrain differ diff --git a/public/terrain/19/858527/353791.terrain b/public/terrain/19/858527/353791.terrain new file mode 100644 index 000000000..be786667f Binary files /dev/null and b/public/terrain/19/858527/353791.terrain differ diff --git a/public/terrain/19/858527/353792.terrain b/public/terrain/19/858527/353792.terrain new file mode 100644 index 000000000..d3f8977ea Binary files /dev/null and b/public/terrain/19/858527/353792.terrain differ diff --git a/public/terrain/19/858527/353793.terrain b/public/terrain/19/858527/353793.terrain new file mode 100644 index 000000000..45460bf87 Binary files /dev/null and b/public/terrain/19/858527/353793.terrain differ diff --git a/public/terrain/19/858527/353794.terrain b/public/terrain/19/858527/353794.terrain new file mode 100644 index 000000000..7603b1ab5 Binary files /dev/null and b/public/terrain/19/858527/353794.terrain differ diff --git a/public/terrain/19/858527/353795.terrain b/public/terrain/19/858527/353795.terrain new file mode 100644 index 000000000..cf46300f0 Binary files /dev/null and b/public/terrain/19/858527/353795.terrain differ diff --git a/public/terrain/19/858527/353796.terrain b/public/terrain/19/858527/353796.terrain new file mode 100644 index 000000000..3fd5a2874 Binary files /dev/null and b/public/terrain/19/858527/353796.terrain differ diff --git a/public/terrain/19/858527/353797.terrain b/public/terrain/19/858527/353797.terrain new file mode 100644 index 000000000..0192b658e Binary files /dev/null and b/public/terrain/19/858527/353797.terrain differ diff --git a/public/terrain/19/858527/353798.terrain b/public/terrain/19/858527/353798.terrain new file mode 100644 index 000000000..dee663497 Binary files /dev/null and b/public/terrain/19/858527/353798.terrain differ diff --git a/public/terrain/19/858527/353799.terrain b/public/terrain/19/858527/353799.terrain new file mode 100644 index 000000000..5f75dc7ab Binary files /dev/null and b/public/terrain/19/858527/353799.terrain differ diff --git a/public/terrain/19/858527/353800.terrain b/public/terrain/19/858527/353800.terrain new file mode 100644 index 000000000..cbb61976b Binary files /dev/null and b/public/terrain/19/858527/353800.terrain differ diff --git a/public/terrain/19/858527/353801.terrain b/public/terrain/19/858527/353801.terrain new file mode 100644 index 000000000..e67260506 Binary files /dev/null and b/public/terrain/19/858527/353801.terrain differ diff --git a/public/terrain/19/858527/353802.terrain b/public/terrain/19/858527/353802.terrain new file mode 100644 index 000000000..053ed7212 Binary files /dev/null and b/public/terrain/19/858527/353802.terrain differ diff --git a/public/terrain/19/858527/353803.terrain b/public/terrain/19/858527/353803.terrain new file mode 100644 index 000000000..40a0acc10 Binary files /dev/null and b/public/terrain/19/858527/353803.terrain differ diff --git a/public/terrain/19/858527/353804.terrain b/public/terrain/19/858527/353804.terrain new file mode 100644 index 000000000..ad1339f39 Binary files /dev/null and b/public/terrain/19/858527/353804.terrain differ diff --git a/public/terrain/19/858527/353805.terrain b/public/terrain/19/858527/353805.terrain new file mode 100644 index 000000000..06bc19fa4 Binary files /dev/null and b/public/terrain/19/858527/353805.terrain differ diff --git a/public/terrain/19/858527/353806.terrain b/public/terrain/19/858527/353806.terrain new file mode 100644 index 000000000..8a86e8699 Binary files /dev/null and b/public/terrain/19/858527/353806.terrain differ diff --git a/public/terrain/19/858527/353807.terrain b/public/terrain/19/858527/353807.terrain new file mode 100644 index 000000000..815662798 Binary files /dev/null and b/public/terrain/19/858527/353807.terrain differ diff --git a/public/terrain/19/858527/353808.terrain b/public/terrain/19/858527/353808.terrain new file mode 100644 index 000000000..64192733f Binary files /dev/null and b/public/terrain/19/858527/353808.terrain differ diff --git a/public/terrain/19/858527/353809.terrain b/public/terrain/19/858527/353809.terrain new file mode 100644 index 000000000..cb800be08 Binary files /dev/null and b/public/terrain/19/858527/353809.terrain differ diff --git a/public/terrain/19/858527/353810.terrain b/public/terrain/19/858527/353810.terrain new file mode 100644 index 000000000..382523a07 Binary files /dev/null and b/public/terrain/19/858527/353810.terrain differ diff --git a/public/terrain/19/858527/353811.terrain b/public/terrain/19/858527/353811.terrain new file mode 100644 index 000000000..349aeff47 Binary files /dev/null and b/public/terrain/19/858527/353811.terrain differ diff --git a/public/terrain/19/858527/353812.terrain b/public/terrain/19/858527/353812.terrain new file mode 100644 index 000000000..5a4a7bdea Binary files /dev/null and b/public/terrain/19/858527/353812.terrain differ diff --git a/public/terrain/19/858527/353813.terrain b/public/terrain/19/858527/353813.terrain new file mode 100644 index 000000000..e3b62584b Binary files /dev/null and b/public/terrain/19/858527/353813.terrain differ diff --git a/public/terrain/19/858527/353814.terrain b/public/terrain/19/858527/353814.terrain new file mode 100644 index 000000000..285107405 Binary files /dev/null and b/public/terrain/19/858527/353814.terrain differ diff --git a/public/terrain/19/858527/353815.terrain b/public/terrain/19/858527/353815.terrain new file mode 100644 index 000000000..d94b5fd74 Binary files /dev/null and b/public/terrain/19/858527/353815.terrain differ diff --git a/public/terrain/19/858527/353816.terrain b/public/terrain/19/858527/353816.terrain new file mode 100644 index 000000000..913751f43 Binary files /dev/null and b/public/terrain/19/858527/353816.terrain differ diff --git a/public/terrain/19/858527/353817.terrain b/public/terrain/19/858527/353817.terrain new file mode 100644 index 000000000..b47f82c69 Binary files /dev/null and b/public/terrain/19/858527/353817.terrain differ diff --git a/public/terrain/19/858527/353818.terrain b/public/terrain/19/858527/353818.terrain new file mode 100644 index 000000000..fd1e6c7c2 Binary files /dev/null and b/public/terrain/19/858527/353818.terrain differ diff --git a/public/terrain/19/858527/353819.terrain b/public/terrain/19/858527/353819.terrain new file mode 100644 index 000000000..ce44cfaf3 Binary files /dev/null and b/public/terrain/19/858527/353819.terrain differ diff --git a/public/terrain/19/858527/353820.terrain b/public/terrain/19/858527/353820.terrain new file mode 100644 index 000000000..db8222b78 Binary files /dev/null and b/public/terrain/19/858527/353820.terrain differ diff --git a/public/terrain/19/858527/353821.terrain b/public/terrain/19/858527/353821.terrain new file mode 100644 index 000000000..07dcda0d7 Binary files /dev/null and b/public/terrain/19/858527/353821.terrain differ diff --git a/public/terrain/19/858527/353822.terrain b/public/terrain/19/858527/353822.terrain new file mode 100644 index 000000000..82c1e7bd9 Binary files /dev/null and b/public/terrain/19/858527/353822.terrain differ diff --git a/public/terrain/19/858527/353823.terrain b/public/terrain/19/858527/353823.terrain new file mode 100644 index 000000000..bb1ef018a Binary files /dev/null and b/public/terrain/19/858527/353823.terrain differ diff --git a/public/terrain/19/858527/353824.terrain b/public/terrain/19/858527/353824.terrain new file mode 100644 index 000000000..9d1f6d26d Binary files /dev/null and b/public/terrain/19/858527/353824.terrain differ diff --git a/public/terrain/19/858527/353825.terrain b/public/terrain/19/858527/353825.terrain new file mode 100644 index 000000000..361ca7c10 Binary files /dev/null and b/public/terrain/19/858527/353825.terrain differ diff --git a/public/terrain/19/858527/353826.terrain b/public/terrain/19/858527/353826.terrain new file mode 100644 index 000000000..d32b01363 Binary files /dev/null and b/public/terrain/19/858527/353826.terrain differ diff --git a/public/terrain/19/858527/353827.terrain b/public/terrain/19/858527/353827.terrain new file mode 100644 index 000000000..e5a8c1a6b Binary files /dev/null and b/public/terrain/19/858527/353827.terrain differ diff --git a/public/terrain/19/858527/353828.terrain b/public/terrain/19/858527/353828.terrain new file mode 100644 index 000000000..098d23c36 Binary files /dev/null and b/public/terrain/19/858527/353828.terrain differ diff --git a/public/terrain/19/858527/353829.terrain b/public/terrain/19/858527/353829.terrain new file mode 100644 index 000000000..7d77c3aa0 Binary files /dev/null and b/public/terrain/19/858527/353829.terrain differ diff --git a/public/terrain/19/858527/353830.terrain b/public/terrain/19/858527/353830.terrain new file mode 100644 index 000000000..af9879f6a Binary files /dev/null and b/public/terrain/19/858527/353830.terrain differ diff --git a/public/terrain/19/858527/353831.terrain b/public/terrain/19/858527/353831.terrain new file mode 100644 index 000000000..d8b37c39d Binary files /dev/null and b/public/terrain/19/858527/353831.terrain differ diff --git a/public/terrain/19/858527/353832.terrain b/public/terrain/19/858527/353832.terrain new file mode 100644 index 000000000..f2cfc04dd Binary files /dev/null and b/public/terrain/19/858527/353832.terrain differ diff --git a/public/terrain/19/858527/353833.terrain b/public/terrain/19/858527/353833.terrain new file mode 100644 index 000000000..e81835531 Binary files /dev/null and b/public/terrain/19/858527/353833.terrain differ diff --git a/public/terrain/19/858527/353834.terrain b/public/terrain/19/858527/353834.terrain new file mode 100644 index 000000000..4c2eff0c7 Binary files /dev/null and b/public/terrain/19/858527/353834.terrain differ diff --git a/public/terrain/19/858527/353835.terrain b/public/terrain/19/858527/353835.terrain new file mode 100644 index 000000000..a0e18f400 Binary files /dev/null and b/public/terrain/19/858527/353835.terrain differ diff --git a/public/terrain/19/858527/353836.terrain b/public/terrain/19/858527/353836.terrain new file mode 100644 index 000000000..be0cb4d6e Binary files /dev/null and b/public/terrain/19/858527/353836.terrain differ diff --git a/public/terrain/19/858527/353837.terrain b/public/terrain/19/858527/353837.terrain new file mode 100644 index 000000000..9227b2224 Binary files /dev/null and b/public/terrain/19/858527/353837.terrain differ diff --git a/public/terrain/19/858527/353838.terrain b/public/terrain/19/858527/353838.terrain new file mode 100644 index 000000000..472ec9dfa Binary files /dev/null and b/public/terrain/19/858527/353838.terrain differ diff --git a/public/terrain/19/858527/353839.terrain b/public/terrain/19/858527/353839.terrain new file mode 100644 index 000000000..fbbb6ba34 Binary files /dev/null and b/public/terrain/19/858527/353839.terrain differ diff --git a/public/terrain/19/858527/353840.terrain b/public/terrain/19/858527/353840.terrain new file mode 100644 index 000000000..d286a63cd Binary files /dev/null and b/public/terrain/19/858527/353840.terrain differ diff --git a/public/terrain/19/858527/353841.terrain b/public/terrain/19/858527/353841.terrain new file mode 100644 index 000000000..d5fdaf28e Binary files /dev/null and b/public/terrain/19/858527/353841.terrain differ diff --git a/public/terrain/19/858527/353842.terrain b/public/terrain/19/858527/353842.terrain new file mode 100644 index 000000000..3c93d53db Binary files /dev/null and b/public/terrain/19/858527/353842.terrain differ diff --git a/public/terrain/19/858527/353843.terrain b/public/terrain/19/858527/353843.terrain new file mode 100644 index 000000000..d7a7e7d07 Binary files /dev/null and b/public/terrain/19/858527/353843.terrain differ diff --git a/public/terrain/19/858527/353844.terrain b/public/terrain/19/858527/353844.terrain new file mode 100644 index 000000000..25aed4f83 Binary files /dev/null and b/public/terrain/19/858527/353844.terrain differ diff --git a/public/terrain/19/858527/353845.terrain b/public/terrain/19/858527/353845.terrain new file mode 100644 index 000000000..ff2fa6878 Binary files /dev/null and b/public/terrain/19/858527/353845.terrain differ diff --git a/public/terrain/19/858527/353846.terrain b/public/terrain/19/858527/353846.terrain new file mode 100644 index 000000000..dfea4a26f Binary files /dev/null and b/public/terrain/19/858527/353846.terrain differ diff --git a/public/terrain/19/858527/353847.terrain b/public/terrain/19/858527/353847.terrain new file mode 100644 index 000000000..cf8e18685 Binary files /dev/null and b/public/terrain/19/858527/353847.terrain differ diff --git a/public/terrain/19/858527/353848.terrain b/public/terrain/19/858527/353848.terrain new file mode 100644 index 000000000..604f4b5dc Binary files /dev/null and b/public/terrain/19/858527/353848.terrain differ diff --git a/public/terrain/19/858527/353849.terrain b/public/terrain/19/858527/353849.terrain new file mode 100644 index 000000000..a373614cc Binary files /dev/null and b/public/terrain/19/858527/353849.terrain differ diff --git a/public/terrain/19/858527/353850.terrain b/public/terrain/19/858527/353850.terrain new file mode 100644 index 000000000..4ff5ced2b Binary files /dev/null and b/public/terrain/19/858527/353850.terrain differ diff --git a/public/terrain/19/858527/353851.terrain b/public/terrain/19/858527/353851.terrain new file mode 100644 index 000000000..6fdb6db7d Binary files /dev/null and b/public/terrain/19/858527/353851.terrain differ diff --git a/public/terrain/19/858527/353852.terrain b/public/terrain/19/858527/353852.terrain new file mode 100644 index 000000000..4d246c2ed Binary files /dev/null and b/public/terrain/19/858527/353852.terrain differ diff --git a/public/terrain/19/858527/353853.terrain b/public/terrain/19/858527/353853.terrain new file mode 100644 index 000000000..cb6f5fd9b Binary files /dev/null and b/public/terrain/19/858527/353853.terrain differ diff --git a/public/terrain/19/858527/353854.terrain b/public/terrain/19/858527/353854.terrain new file mode 100644 index 000000000..3c76c91c2 Binary files /dev/null and b/public/terrain/19/858527/353854.terrain differ diff --git a/public/terrain/19/858527/353855.terrain b/public/terrain/19/858527/353855.terrain new file mode 100644 index 000000000..62ef73ab0 Binary files /dev/null and b/public/terrain/19/858527/353855.terrain differ diff --git a/public/terrain/19/858527/353856.terrain b/public/terrain/19/858527/353856.terrain new file mode 100644 index 000000000..6df33008c Binary files /dev/null and b/public/terrain/19/858527/353856.terrain differ diff --git a/public/terrain/19/858527/353857.terrain b/public/terrain/19/858527/353857.terrain new file mode 100644 index 000000000..15e59dde3 Binary files /dev/null and b/public/terrain/19/858527/353857.terrain differ diff --git a/public/terrain/19/858527/353858.terrain b/public/terrain/19/858527/353858.terrain new file mode 100644 index 000000000..39d87ff04 Binary files /dev/null and b/public/terrain/19/858527/353858.terrain differ diff --git a/public/terrain/19/858527/353859.terrain b/public/terrain/19/858527/353859.terrain new file mode 100644 index 000000000..5e0f1bfd5 Binary files /dev/null and b/public/terrain/19/858527/353859.terrain differ diff --git a/public/terrain/19/858527/353860.terrain b/public/terrain/19/858527/353860.terrain new file mode 100644 index 000000000..ea5c4660f Binary files /dev/null and b/public/terrain/19/858527/353860.terrain differ diff --git a/public/terrain/19/858527/353861.terrain b/public/terrain/19/858527/353861.terrain new file mode 100644 index 000000000..71d061acb Binary files /dev/null and b/public/terrain/19/858527/353861.terrain differ diff --git a/public/terrain/19/858527/353862.terrain b/public/terrain/19/858527/353862.terrain new file mode 100644 index 000000000..8eb2fddca Binary files /dev/null and b/public/terrain/19/858527/353862.terrain differ diff --git a/public/terrain/19/858527/353863.terrain b/public/terrain/19/858527/353863.terrain new file mode 100644 index 000000000..ffa6f7483 Binary files /dev/null and b/public/terrain/19/858527/353863.terrain differ diff --git a/public/terrain/19/858527/353864.terrain b/public/terrain/19/858527/353864.terrain new file mode 100644 index 000000000..a81560605 Binary files /dev/null and b/public/terrain/19/858527/353864.terrain differ diff --git a/public/terrain/19/858527/353865.terrain b/public/terrain/19/858527/353865.terrain new file mode 100644 index 000000000..2d265d02f Binary files /dev/null and b/public/terrain/19/858527/353865.terrain differ diff --git a/public/terrain/19/858527/353866.terrain b/public/terrain/19/858527/353866.terrain new file mode 100644 index 000000000..ccb0262f0 Binary files /dev/null and b/public/terrain/19/858527/353866.terrain differ diff --git a/public/terrain/19/858527/353867.terrain b/public/terrain/19/858527/353867.terrain new file mode 100644 index 000000000..a5316b754 Binary files /dev/null and b/public/terrain/19/858527/353867.terrain differ diff --git a/public/terrain/19/858527/353868.terrain b/public/terrain/19/858527/353868.terrain new file mode 100644 index 000000000..20018ae09 Binary files /dev/null and b/public/terrain/19/858527/353868.terrain differ diff --git a/public/terrain/19/858527/353869.terrain b/public/terrain/19/858527/353869.terrain new file mode 100644 index 000000000..427a95011 Binary files /dev/null and b/public/terrain/19/858527/353869.terrain differ diff --git a/public/terrain/19/858527/353870.terrain b/public/terrain/19/858527/353870.terrain new file mode 100644 index 000000000..82f3449d1 Binary files /dev/null and b/public/terrain/19/858527/353870.terrain differ diff --git a/public/terrain/19/858527/353871.terrain b/public/terrain/19/858527/353871.terrain new file mode 100644 index 000000000..06f38fc34 Binary files /dev/null and b/public/terrain/19/858527/353871.terrain differ diff --git a/public/terrain/19/858527/353872.terrain b/public/terrain/19/858527/353872.terrain new file mode 100644 index 000000000..aa521288a Binary files /dev/null and b/public/terrain/19/858527/353872.terrain differ diff --git a/public/terrain/19/858527/353873.terrain b/public/terrain/19/858527/353873.terrain new file mode 100644 index 000000000..a629ba066 Binary files /dev/null and b/public/terrain/19/858527/353873.terrain differ diff --git a/public/terrain/19/858527/353874.terrain b/public/terrain/19/858527/353874.terrain new file mode 100644 index 000000000..19b77d701 Binary files /dev/null and b/public/terrain/19/858527/353874.terrain differ diff --git a/public/terrain/19/858527/353875.terrain b/public/terrain/19/858527/353875.terrain new file mode 100644 index 000000000..5a698b80a Binary files /dev/null and b/public/terrain/19/858527/353875.terrain differ diff --git a/public/terrain/19/858527/353876.terrain b/public/terrain/19/858527/353876.terrain new file mode 100644 index 000000000..d624cf09e Binary files /dev/null and b/public/terrain/19/858527/353876.terrain differ diff --git a/public/terrain/19/858527/353877.terrain b/public/terrain/19/858527/353877.terrain new file mode 100644 index 000000000..59f90a782 Binary files /dev/null and b/public/terrain/19/858527/353877.terrain differ diff --git a/public/terrain/19/858527/353878.terrain b/public/terrain/19/858527/353878.terrain new file mode 100644 index 000000000..c7d627bbd Binary files /dev/null and b/public/terrain/19/858527/353878.terrain differ diff --git a/public/terrain/19/858527/353879.terrain b/public/terrain/19/858527/353879.terrain new file mode 100644 index 000000000..cce9ea78f Binary files /dev/null and b/public/terrain/19/858527/353879.terrain differ diff --git a/public/terrain/19/858527/353880.terrain b/public/terrain/19/858527/353880.terrain new file mode 100644 index 000000000..329116bd0 Binary files /dev/null and b/public/terrain/19/858527/353880.terrain differ diff --git a/public/terrain/19/858527/353881.terrain b/public/terrain/19/858527/353881.terrain new file mode 100644 index 000000000..6db9c60e3 Binary files /dev/null and b/public/terrain/19/858527/353881.terrain differ diff --git a/public/terrain/19/858527/353882.terrain b/public/terrain/19/858527/353882.terrain new file mode 100644 index 000000000..2e1eb86e7 Binary files /dev/null and b/public/terrain/19/858527/353882.terrain differ diff --git a/public/terrain/19/858527/353883.terrain b/public/terrain/19/858527/353883.terrain new file mode 100644 index 000000000..e2ac276eb Binary files /dev/null and b/public/terrain/19/858527/353883.terrain differ diff --git a/public/terrain/19/858527/353884.terrain b/public/terrain/19/858527/353884.terrain new file mode 100644 index 000000000..79c8155ef Binary files /dev/null and b/public/terrain/19/858527/353884.terrain differ diff --git a/public/terrain/19/858527/353885.terrain b/public/terrain/19/858527/353885.terrain new file mode 100644 index 000000000..5900aa5ab Binary files /dev/null and b/public/terrain/19/858527/353885.terrain differ diff --git a/public/terrain/19/858527/353886.terrain b/public/terrain/19/858527/353886.terrain new file mode 100644 index 000000000..50875fea6 Binary files /dev/null and b/public/terrain/19/858527/353886.terrain differ diff --git a/public/terrain/19/858527/353887.terrain b/public/terrain/19/858527/353887.terrain new file mode 100644 index 000000000..c3663323a Binary files /dev/null and b/public/terrain/19/858527/353887.terrain differ diff --git a/public/terrain/19/858527/353888.terrain b/public/terrain/19/858527/353888.terrain new file mode 100644 index 000000000..13efe9eea Binary files /dev/null and b/public/terrain/19/858527/353888.terrain differ diff --git a/public/terrain/19/858527/353889.terrain b/public/terrain/19/858527/353889.terrain new file mode 100644 index 000000000..3cccc97b3 Binary files /dev/null and b/public/terrain/19/858527/353889.terrain differ diff --git a/public/terrain/19/858527/353890.terrain b/public/terrain/19/858527/353890.terrain new file mode 100644 index 000000000..eb132ee93 Binary files /dev/null and b/public/terrain/19/858527/353890.terrain differ diff --git a/public/terrain/19/858527/353891.terrain b/public/terrain/19/858527/353891.terrain new file mode 100644 index 000000000..8845138fd Binary files /dev/null and b/public/terrain/19/858527/353891.terrain differ diff --git a/public/terrain/19/858527/353892.terrain b/public/terrain/19/858527/353892.terrain new file mode 100644 index 000000000..1590fdca2 Binary files /dev/null and b/public/terrain/19/858527/353892.terrain differ diff --git a/public/terrain/19/858527/353893.terrain b/public/terrain/19/858527/353893.terrain new file mode 100644 index 000000000..397d1a975 Binary files /dev/null and b/public/terrain/19/858527/353893.terrain differ diff --git a/public/terrain/19/858527/353894.terrain b/public/terrain/19/858527/353894.terrain new file mode 100644 index 000000000..1c3261063 Binary files /dev/null and b/public/terrain/19/858527/353894.terrain differ diff --git a/public/terrain/19/858527/353895.terrain b/public/terrain/19/858527/353895.terrain new file mode 100644 index 000000000..e02755388 Binary files /dev/null and b/public/terrain/19/858527/353895.terrain differ diff --git a/public/terrain/19/858527/353896.terrain b/public/terrain/19/858527/353896.terrain new file mode 100644 index 000000000..4cc3a5258 Binary files /dev/null and b/public/terrain/19/858527/353896.terrain differ diff --git a/public/terrain/19/858527/353897.terrain b/public/terrain/19/858527/353897.terrain new file mode 100644 index 000000000..caf462e7b Binary files /dev/null and b/public/terrain/19/858527/353897.terrain differ diff --git a/public/terrain/19/858527/353898.terrain b/public/terrain/19/858527/353898.terrain new file mode 100644 index 000000000..774c833b3 Binary files /dev/null and b/public/terrain/19/858527/353898.terrain differ diff --git a/public/terrain/19/858527/353899.terrain b/public/terrain/19/858527/353899.terrain new file mode 100644 index 000000000..ca619bd99 Binary files /dev/null and b/public/terrain/19/858527/353899.terrain differ diff --git a/public/terrain/19/858527/353900.terrain b/public/terrain/19/858527/353900.terrain new file mode 100644 index 000000000..8040d1bcb Binary files /dev/null and b/public/terrain/19/858527/353900.terrain differ diff --git a/public/terrain/19/858527/353901.terrain b/public/terrain/19/858527/353901.terrain new file mode 100644 index 000000000..db9c4c7e7 Binary files /dev/null and b/public/terrain/19/858527/353901.terrain differ diff --git a/public/terrain/19/858527/353902.terrain b/public/terrain/19/858527/353902.terrain new file mode 100644 index 000000000..0bc9f2a1a Binary files /dev/null and b/public/terrain/19/858527/353902.terrain differ diff --git a/public/terrain/19/858527/353903.terrain b/public/terrain/19/858527/353903.terrain new file mode 100644 index 000000000..1af7f4e3d Binary files /dev/null and b/public/terrain/19/858527/353903.terrain differ diff --git a/public/terrain/19/858527/353904.terrain b/public/terrain/19/858527/353904.terrain new file mode 100644 index 000000000..1cc210d7f Binary files /dev/null and b/public/terrain/19/858527/353904.terrain differ diff --git a/public/terrain/19/858527/353905.terrain b/public/terrain/19/858527/353905.terrain new file mode 100644 index 000000000..85f8cab3f Binary files /dev/null and b/public/terrain/19/858527/353905.terrain differ diff --git a/public/terrain/19/858527/353906.terrain b/public/terrain/19/858527/353906.terrain new file mode 100644 index 000000000..cc69222d7 Binary files /dev/null and b/public/terrain/19/858527/353906.terrain differ diff --git a/public/terrain/19/858527/353907.terrain b/public/terrain/19/858527/353907.terrain new file mode 100644 index 000000000..02449237b Binary files /dev/null and b/public/terrain/19/858527/353907.terrain differ diff --git a/public/terrain/19/858527/353908.terrain b/public/terrain/19/858527/353908.terrain new file mode 100644 index 000000000..4d8a5bba5 Binary files /dev/null and b/public/terrain/19/858527/353908.terrain differ diff --git a/public/terrain/19/858527/353909.terrain b/public/terrain/19/858527/353909.terrain new file mode 100644 index 000000000..4d48ba8d7 Binary files /dev/null and b/public/terrain/19/858527/353909.terrain differ diff --git a/public/terrain/19/858527/353910.terrain b/public/terrain/19/858527/353910.terrain new file mode 100644 index 000000000..912a357ca Binary files /dev/null and b/public/terrain/19/858527/353910.terrain differ diff --git a/public/terrain/19/858527/353911.terrain b/public/terrain/19/858527/353911.terrain new file mode 100644 index 000000000..9e6a40752 Binary files /dev/null and b/public/terrain/19/858527/353911.terrain differ diff --git a/public/terrain/19/858527/353912.terrain b/public/terrain/19/858527/353912.terrain new file mode 100644 index 000000000..9e96cf560 Binary files /dev/null and b/public/terrain/19/858527/353912.terrain differ diff --git a/public/terrain/19/858527/353913.terrain b/public/terrain/19/858527/353913.terrain new file mode 100644 index 000000000..957f1d4aa Binary files /dev/null and b/public/terrain/19/858527/353913.terrain differ diff --git a/public/terrain/19/858527/353914.terrain b/public/terrain/19/858527/353914.terrain new file mode 100644 index 000000000..5a9e11991 Binary files /dev/null and b/public/terrain/19/858527/353914.terrain differ diff --git a/public/terrain/19/858527/353915.terrain b/public/terrain/19/858527/353915.terrain new file mode 100644 index 000000000..9c91d43fa Binary files /dev/null and b/public/terrain/19/858527/353915.terrain differ diff --git a/public/terrain/19/858527/353916.terrain b/public/terrain/19/858527/353916.terrain new file mode 100644 index 000000000..44fecc4e2 Binary files /dev/null and b/public/terrain/19/858527/353916.terrain differ diff --git a/public/terrain/19/858527/353917.terrain b/public/terrain/19/858527/353917.terrain new file mode 100644 index 000000000..e4ddda9e4 Binary files /dev/null and b/public/terrain/19/858527/353917.terrain differ diff --git a/public/terrain/19/858527/353918.terrain b/public/terrain/19/858527/353918.terrain new file mode 100644 index 000000000..51ed0d869 Binary files /dev/null and b/public/terrain/19/858527/353918.terrain differ diff --git a/public/terrain/19/858527/353919.terrain b/public/terrain/19/858527/353919.terrain new file mode 100644 index 000000000..cd4d28400 Binary files /dev/null and b/public/terrain/19/858527/353919.terrain differ diff --git a/public/terrain/19/858527/353920.terrain b/public/terrain/19/858527/353920.terrain new file mode 100644 index 000000000..e890523d1 Binary files /dev/null and b/public/terrain/19/858527/353920.terrain differ diff --git a/public/terrain/19/858527/353921.terrain b/public/terrain/19/858527/353921.terrain new file mode 100644 index 000000000..7376bcb3f Binary files /dev/null and b/public/terrain/19/858527/353921.terrain differ diff --git a/public/terrain/19/858527/353922.terrain b/public/terrain/19/858527/353922.terrain new file mode 100644 index 000000000..89794293d Binary files /dev/null and b/public/terrain/19/858527/353922.terrain differ diff --git a/public/terrain/19/858527/353923.terrain b/public/terrain/19/858527/353923.terrain new file mode 100644 index 000000000..0cf92462a Binary files /dev/null and b/public/terrain/19/858527/353923.terrain differ diff --git a/public/terrain/19/858527/353924.terrain b/public/terrain/19/858527/353924.terrain new file mode 100644 index 000000000..2b5f86eea Binary files /dev/null and b/public/terrain/19/858527/353924.terrain differ diff --git a/public/terrain/19/858527/353925.terrain b/public/terrain/19/858527/353925.terrain new file mode 100644 index 000000000..e08f5934a Binary files /dev/null and b/public/terrain/19/858527/353925.terrain differ diff --git a/public/terrain/19/858527/353926.terrain b/public/terrain/19/858527/353926.terrain new file mode 100644 index 000000000..b16386000 Binary files /dev/null and b/public/terrain/19/858527/353926.terrain differ diff --git a/public/terrain/19/858527/353927.terrain b/public/terrain/19/858527/353927.terrain new file mode 100644 index 000000000..63f5b9043 Binary files /dev/null and b/public/terrain/19/858527/353927.terrain differ diff --git a/public/terrain/19/858527/353928.terrain b/public/terrain/19/858527/353928.terrain new file mode 100644 index 000000000..ca0116366 Binary files /dev/null and b/public/terrain/19/858527/353928.terrain differ diff --git a/public/terrain/19/858527/353929.terrain b/public/terrain/19/858527/353929.terrain new file mode 100644 index 000000000..750ba8376 Binary files /dev/null and b/public/terrain/19/858527/353929.terrain differ diff --git a/public/terrain/19/858527/353930.terrain b/public/terrain/19/858527/353930.terrain new file mode 100644 index 000000000..f8039fbb7 Binary files /dev/null and b/public/terrain/19/858527/353930.terrain differ diff --git a/public/terrain/19/858527/353931.terrain b/public/terrain/19/858527/353931.terrain new file mode 100644 index 000000000..7fa40547b Binary files /dev/null and b/public/terrain/19/858527/353931.terrain differ diff --git a/public/terrain/19/858527/353932.terrain b/public/terrain/19/858527/353932.terrain new file mode 100644 index 000000000..4d4572807 Binary files /dev/null and b/public/terrain/19/858527/353932.terrain differ diff --git a/public/terrain/19/858527/353933.terrain b/public/terrain/19/858527/353933.terrain new file mode 100644 index 000000000..a6845e9f9 Binary files /dev/null and b/public/terrain/19/858527/353933.terrain differ diff --git a/public/terrain/19/858527/353934.terrain b/public/terrain/19/858527/353934.terrain new file mode 100644 index 000000000..433269a1a Binary files /dev/null and b/public/terrain/19/858527/353934.terrain differ diff --git a/public/terrain/19/858527/353935.terrain b/public/terrain/19/858527/353935.terrain new file mode 100644 index 000000000..10b2854a4 Binary files /dev/null and b/public/terrain/19/858527/353935.terrain differ diff --git a/public/terrain/19/858527/353936.terrain b/public/terrain/19/858527/353936.terrain new file mode 100644 index 000000000..fadf7c015 Binary files /dev/null and b/public/terrain/19/858527/353936.terrain differ diff --git a/public/terrain/19/858527/353937.terrain b/public/terrain/19/858527/353937.terrain new file mode 100644 index 000000000..43284994b Binary files /dev/null and b/public/terrain/19/858527/353937.terrain differ diff --git a/public/terrain/19/858527/353938.terrain b/public/terrain/19/858527/353938.terrain new file mode 100644 index 000000000..f855e51e8 Binary files /dev/null and b/public/terrain/19/858527/353938.terrain differ diff --git a/public/terrain/19/858527/353939.terrain b/public/terrain/19/858527/353939.terrain new file mode 100644 index 000000000..75fb9ee22 Binary files /dev/null and b/public/terrain/19/858527/353939.terrain differ diff --git a/public/terrain/19/858527/353940.terrain b/public/terrain/19/858527/353940.terrain new file mode 100644 index 000000000..bd47fe3f7 Binary files /dev/null and b/public/terrain/19/858527/353940.terrain differ diff --git a/public/terrain/19/858527/353941.terrain b/public/terrain/19/858527/353941.terrain new file mode 100644 index 000000000..368a5040f Binary files /dev/null and b/public/terrain/19/858527/353941.terrain differ diff --git a/public/terrain/19/858527/353942.terrain b/public/terrain/19/858527/353942.terrain new file mode 100644 index 000000000..34698bd28 Binary files /dev/null and b/public/terrain/19/858527/353942.terrain differ diff --git a/public/terrain/19/858527/353943.terrain b/public/terrain/19/858527/353943.terrain new file mode 100644 index 000000000..c93c8105c Binary files /dev/null and b/public/terrain/19/858527/353943.terrain differ diff --git a/public/terrain/19/858527/353944.terrain b/public/terrain/19/858527/353944.terrain new file mode 100644 index 000000000..d8539bc8f Binary files /dev/null and b/public/terrain/19/858527/353944.terrain differ diff --git a/public/terrain/19/858527/353945.terrain b/public/terrain/19/858527/353945.terrain new file mode 100644 index 000000000..4e03e3cbb Binary files /dev/null and b/public/terrain/19/858527/353945.terrain differ diff --git a/public/terrain/19/858527/353946.terrain b/public/terrain/19/858527/353946.terrain new file mode 100644 index 000000000..8d05a3c8e Binary files /dev/null and b/public/terrain/19/858527/353946.terrain differ diff --git a/public/terrain/19/858527/353947.terrain b/public/terrain/19/858527/353947.terrain new file mode 100644 index 000000000..6da70e008 Binary files /dev/null and b/public/terrain/19/858527/353947.terrain differ diff --git a/public/terrain/19/858527/353948.terrain b/public/terrain/19/858527/353948.terrain new file mode 100644 index 000000000..2c253d9e1 Binary files /dev/null and b/public/terrain/19/858527/353948.terrain differ diff --git a/public/terrain/19/858527/353949.terrain b/public/terrain/19/858527/353949.terrain new file mode 100644 index 000000000..3d98fec7d Binary files /dev/null and b/public/terrain/19/858527/353949.terrain differ diff --git a/public/terrain/19/858527/353950.terrain b/public/terrain/19/858527/353950.terrain new file mode 100644 index 000000000..559fa94c0 Binary files /dev/null and b/public/terrain/19/858527/353950.terrain differ diff --git a/public/terrain/19/858527/353951.terrain b/public/terrain/19/858527/353951.terrain new file mode 100644 index 000000000..ffeca7c42 Binary files /dev/null and b/public/terrain/19/858527/353951.terrain differ diff --git a/public/terrain/19/858527/353952.terrain b/public/terrain/19/858527/353952.terrain new file mode 100644 index 000000000..7ae0e7626 Binary files /dev/null and b/public/terrain/19/858527/353952.terrain differ diff --git a/public/terrain/19/858527/353953.terrain b/public/terrain/19/858527/353953.terrain new file mode 100644 index 000000000..49be65d9b Binary files /dev/null and b/public/terrain/19/858527/353953.terrain differ diff --git a/public/terrain/19/858527/353954.terrain b/public/terrain/19/858527/353954.terrain new file mode 100644 index 000000000..3025b07a1 Binary files /dev/null and b/public/terrain/19/858527/353954.terrain differ diff --git a/public/terrain/19/858527/353955.terrain b/public/terrain/19/858527/353955.terrain new file mode 100644 index 000000000..d09f6a4a1 Binary files /dev/null and b/public/terrain/19/858527/353955.terrain differ diff --git a/public/terrain/19/858527/353956.terrain b/public/terrain/19/858527/353956.terrain new file mode 100644 index 000000000..8889ba8bc Binary files /dev/null and b/public/terrain/19/858527/353956.terrain differ diff --git a/public/terrain/19/858527/353957.terrain b/public/terrain/19/858527/353957.terrain new file mode 100644 index 000000000..f3c9b7fd5 Binary files /dev/null and b/public/terrain/19/858527/353957.terrain differ diff --git a/public/terrain/19/858527/353958.terrain b/public/terrain/19/858527/353958.terrain new file mode 100644 index 000000000..4a7f26cca Binary files /dev/null and b/public/terrain/19/858527/353958.terrain differ diff --git a/public/terrain/19/858527/353959.terrain b/public/terrain/19/858527/353959.terrain new file mode 100644 index 000000000..7fa4bd5ca Binary files /dev/null and b/public/terrain/19/858527/353959.terrain differ diff --git a/public/terrain/19/858527/353960.terrain b/public/terrain/19/858527/353960.terrain new file mode 100644 index 000000000..4d822c3d4 Binary files /dev/null and b/public/terrain/19/858527/353960.terrain differ diff --git a/public/terrain/19/858527/353961.terrain b/public/terrain/19/858527/353961.terrain new file mode 100644 index 000000000..76e4b0c7a Binary files /dev/null and b/public/terrain/19/858527/353961.terrain differ diff --git a/public/terrain/19/858527/353962.terrain b/public/terrain/19/858527/353962.terrain new file mode 100644 index 000000000..224c8798f Binary files /dev/null and b/public/terrain/19/858527/353962.terrain differ diff --git a/public/terrain/19/858527/353963.terrain b/public/terrain/19/858527/353963.terrain new file mode 100644 index 000000000..e47254334 Binary files /dev/null and b/public/terrain/19/858527/353963.terrain differ diff --git a/public/terrain/19/858527/353964.terrain b/public/terrain/19/858527/353964.terrain new file mode 100644 index 000000000..7ed5b7438 Binary files /dev/null and b/public/terrain/19/858527/353964.terrain differ diff --git a/public/terrain/19/858527/353965.terrain b/public/terrain/19/858527/353965.terrain new file mode 100644 index 000000000..1f3c149a7 Binary files /dev/null and b/public/terrain/19/858527/353965.terrain differ diff --git a/public/terrain/19/858527/353966.terrain b/public/terrain/19/858527/353966.terrain new file mode 100644 index 000000000..1e220172c Binary files /dev/null and b/public/terrain/19/858527/353966.terrain differ diff --git a/public/terrain/19/858527/353967.terrain b/public/terrain/19/858527/353967.terrain new file mode 100644 index 000000000..edfb82947 Binary files /dev/null and b/public/terrain/19/858527/353967.terrain differ diff --git a/public/terrain/19/858527/353968.terrain b/public/terrain/19/858527/353968.terrain new file mode 100644 index 000000000..d185b223f Binary files /dev/null and b/public/terrain/19/858527/353968.terrain differ diff --git a/public/terrain/19/858527/353969.terrain b/public/terrain/19/858527/353969.terrain new file mode 100644 index 000000000..6217b9663 Binary files /dev/null and b/public/terrain/19/858527/353969.terrain differ diff --git a/public/terrain/19/858527/353970.terrain b/public/terrain/19/858527/353970.terrain new file mode 100644 index 000000000..00b8fb735 Binary files /dev/null and b/public/terrain/19/858527/353970.terrain differ diff --git a/public/terrain/19/858527/353971.terrain b/public/terrain/19/858527/353971.terrain new file mode 100644 index 000000000..29c535811 Binary files /dev/null and b/public/terrain/19/858527/353971.terrain differ diff --git a/public/terrain/19/858527/353972.terrain b/public/terrain/19/858527/353972.terrain new file mode 100644 index 000000000..3f29a15ad Binary files /dev/null and b/public/terrain/19/858527/353972.terrain differ diff --git a/public/terrain/19/858527/353973.terrain b/public/terrain/19/858527/353973.terrain new file mode 100644 index 000000000..4d54adb61 Binary files /dev/null and b/public/terrain/19/858527/353973.terrain differ diff --git a/public/terrain/19/858527/353974.terrain b/public/terrain/19/858527/353974.terrain new file mode 100644 index 000000000..de8816707 Binary files /dev/null and b/public/terrain/19/858527/353974.terrain differ diff --git a/public/terrain/19/858527/353975.terrain b/public/terrain/19/858527/353975.terrain new file mode 100644 index 000000000..366ad7a26 Binary files /dev/null and b/public/terrain/19/858527/353975.terrain differ diff --git a/public/terrain/19/858527/353976.terrain b/public/terrain/19/858527/353976.terrain new file mode 100644 index 000000000..81179ddc5 Binary files /dev/null and b/public/terrain/19/858527/353976.terrain differ diff --git a/public/terrain/19/858527/353977.terrain b/public/terrain/19/858527/353977.terrain new file mode 100644 index 000000000..efebe5b0c Binary files /dev/null and b/public/terrain/19/858527/353977.terrain differ diff --git a/public/terrain/19/858527/353978.terrain b/public/terrain/19/858527/353978.terrain new file mode 100644 index 000000000..24563f121 Binary files /dev/null and b/public/terrain/19/858527/353978.terrain differ diff --git a/public/terrain/19/858527/353979.terrain b/public/terrain/19/858527/353979.terrain new file mode 100644 index 000000000..8d3594b52 Binary files /dev/null and b/public/terrain/19/858527/353979.terrain differ diff --git a/public/terrain/19/858527/353980.terrain b/public/terrain/19/858527/353980.terrain new file mode 100644 index 000000000..84155bcd1 Binary files /dev/null and b/public/terrain/19/858527/353980.terrain differ diff --git a/public/terrain/19/858527/353981.terrain b/public/terrain/19/858527/353981.terrain new file mode 100644 index 000000000..be31d4ecd Binary files /dev/null and b/public/terrain/19/858527/353981.terrain differ diff --git a/public/terrain/19/858527/353982.terrain b/public/terrain/19/858527/353982.terrain new file mode 100644 index 000000000..efb897aeb Binary files /dev/null and b/public/terrain/19/858527/353982.terrain differ diff --git a/public/terrain/19/858527/353983.terrain b/public/terrain/19/858527/353983.terrain new file mode 100644 index 000000000..21751de7d Binary files /dev/null and b/public/terrain/19/858527/353983.terrain differ diff --git a/public/terrain/19/858527/353984.terrain b/public/terrain/19/858527/353984.terrain new file mode 100644 index 000000000..f0a727695 Binary files /dev/null and b/public/terrain/19/858527/353984.terrain differ diff --git a/public/terrain/19/858527/353985.terrain b/public/terrain/19/858527/353985.terrain new file mode 100644 index 000000000..74b71e30b Binary files /dev/null and b/public/terrain/19/858527/353985.terrain differ diff --git a/public/terrain/19/858527/353986.terrain b/public/terrain/19/858527/353986.terrain new file mode 100644 index 000000000..8279ef69c Binary files /dev/null and b/public/terrain/19/858527/353986.terrain differ diff --git a/public/terrain/19/858527/353987.terrain b/public/terrain/19/858527/353987.terrain new file mode 100644 index 000000000..c21b97b63 Binary files /dev/null and b/public/terrain/19/858527/353987.terrain differ diff --git a/public/terrain/19/858527/353988.terrain b/public/terrain/19/858527/353988.terrain new file mode 100644 index 000000000..a414de33e Binary files /dev/null and b/public/terrain/19/858527/353988.terrain differ diff --git a/public/terrain/19/858527/353989.terrain b/public/terrain/19/858527/353989.terrain new file mode 100644 index 000000000..2c4260f43 Binary files /dev/null and b/public/terrain/19/858527/353989.terrain differ diff --git a/public/terrain/19/858527/353990.terrain b/public/terrain/19/858527/353990.terrain new file mode 100644 index 000000000..aab19f4aa Binary files /dev/null and b/public/terrain/19/858527/353990.terrain differ diff --git a/public/terrain/19/858527/353991.terrain b/public/terrain/19/858527/353991.terrain new file mode 100644 index 000000000..4f4165fb2 Binary files /dev/null and b/public/terrain/19/858527/353991.terrain differ diff --git a/public/terrain/19/858527/353992.terrain b/public/terrain/19/858527/353992.terrain new file mode 100644 index 000000000..32555a523 Binary files /dev/null and b/public/terrain/19/858527/353992.terrain differ diff --git a/public/terrain/19/858527/353993.terrain b/public/terrain/19/858527/353993.terrain new file mode 100644 index 000000000..d4c84fc7a Binary files /dev/null and b/public/terrain/19/858527/353993.terrain differ diff --git a/public/terrain/19/858527/353994.terrain b/public/terrain/19/858527/353994.terrain new file mode 100644 index 000000000..a9c4aea24 Binary files /dev/null and b/public/terrain/19/858527/353994.terrain differ diff --git a/public/terrain/19/858527/353995.terrain b/public/terrain/19/858527/353995.terrain new file mode 100644 index 000000000..dd2b14d06 Binary files /dev/null and b/public/terrain/19/858527/353995.terrain differ diff --git a/public/terrain/19/858527/353996.terrain b/public/terrain/19/858527/353996.terrain new file mode 100644 index 000000000..b28185302 Binary files /dev/null and b/public/terrain/19/858527/353996.terrain differ diff --git a/public/terrain/19/858527/353997.terrain b/public/terrain/19/858527/353997.terrain new file mode 100644 index 000000000..3932577a7 Binary files /dev/null and b/public/terrain/19/858527/353997.terrain differ diff --git a/public/terrain/19/858527/353998.terrain b/public/terrain/19/858527/353998.terrain new file mode 100644 index 000000000..9f846e6eb Binary files /dev/null and b/public/terrain/19/858527/353998.terrain differ diff --git a/public/terrain/19/858527/353999.terrain b/public/terrain/19/858527/353999.terrain new file mode 100644 index 000000000..3f8d017a0 Binary files /dev/null and b/public/terrain/19/858527/353999.terrain differ diff --git a/public/terrain/19/858527/354000.terrain b/public/terrain/19/858527/354000.terrain new file mode 100644 index 000000000..bca186a57 Binary files /dev/null and b/public/terrain/19/858527/354000.terrain differ diff --git a/public/terrain/19/858527/354001.terrain b/public/terrain/19/858527/354001.terrain new file mode 100644 index 000000000..4154dd26a Binary files /dev/null and b/public/terrain/19/858527/354001.terrain differ diff --git a/public/terrain/19/858527/354002.terrain b/public/terrain/19/858527/354002.terrain new file mode 100644 index 000000000..5737d0d42 Binary files /dev/null and b/public/terrain/19/858527/354002.terrain differ diff --git a/public/terrain/19/858527/354003.terrain b/public/terrain/19/858527/354003.terrain new file mode 100644 index 000000000..629ba976e Binary files /dev/null and b/public/terrain/19/858527/354003.terrain differ diff --git a/public/terrain/19/858527/354004.terrain b/public/terrain/19/858527/354004.terrain new file mode 100644 index 000000000..1c35b25e3 Binary files /dev/null and b/public/terrain/19/858527/354004.terrain differ diff --git a/public/terrain/19/858527/354005.terrain b/public/terrain/19/858527/354005.terrain new file mode 100644 index 000000000..9e53e5459 Binary files /dev/null and b/public/terrain/19/858527/354005.terrain differ diff --git a/public/terrain/19/858527/354006.terrain b/public/terrain/19/858527/354006.terrain new file mode 100644 index 000000000..dc7f86136 Binary files /dev/null and b/public/terrain/19/858527/354006.terrain differ diff --git a/public/terrain/19/858527/354007.terrain b/public/terrain/19/858527/354007.terrain new file mode 100644 index 000000000..8f6f16a48 Binary files /dev/null and b/public/terrain/19/858527/354007.terrain differ diff --git a/public/terrain/19/858527/354008.terrain b/public/terrain/19/858527/354008.terrain new file mode 100644 index 000000000..3c01d210d Binary files /dev/null and b/public/terrain/19/858527/354008.terrain differ diff --git a/public/terrain/19/858527/354009.terrain b/public/terrain/19/858527/354009.terrain new file mode 100644 index 000000000..265229c2d Binary files /dev/null and b/public/terrain/19/858527/354009.terrain differ diff --git a/public/terrain/19/858527/354010.terrain b/public/terrain/19/858527/354010.terrain new file mode 100644 index 000000000..9a0a3b5be Binary files /dev/null and b/public/terrain/19/858527/354010.terrain differ diff --git a/public/terrain/19/858527/354011.terrain b/public/terrain/19/858527/354011.terrain new file mode 100644 index 000000000..af6c60d8b Binary files /dev/null and b/public/terrain/19/858527/354011.terrain differ diff --git a/public/terrain/19/858527/354012.terrain b/public/terrain/19/858527/354012.terrain new file mode 100644 index 000000000..b55e8bd19 Binary files /dev/null and b/public/terrain/19/858527/354012.terrain differ diff --git a/public/terrain/19/858527/354013.terrain b/public/terrain/19/858527/354013.terrain new file mode 100644 index 000000000..e347f3913 Binary files /dev/null and b/public/terrain/19/858527/354013.terrain differ diff --git a/public/terrain/19/858527/354014.terrain b/public/terrain/19/858527/354014.terrain new file mode 100644 index 000000000..322c7a971 Binary files /dev/null and b/public/terrain/19/858527/354014.terrain differ diff --git a/public/terrain/19/858527/354015.terrain b/public/terrain/19/858527/354015.terrain new file mode 100644 index 000000000..3c56a7ce7 Binary files /dev/null and b/public/terrain/19/858527/354015.terrain differ diff --git a/public/terrain/19/858527/354016.terrain b/public/terrain/19/858527/354016.terrain new file mode 100644 index 000000000..f1c37419e Binary files /dev/null and b/public/terrain/19/858527/354016.terrain differ diff --git a/public/terrain/19/858527/354017.terrain b/public/terrain/19/858527/354017.terrain new file mode 100644 index 000000000..f5436e0fa Binary files /dev/null and b/public/terrain/19/858527/354017.terrain differ diff --git a/public/terrain/19/858527/354018.terrain b/public/terrain/19/858527/354018.terrain new file mode 100644 index 000000000..2d70714d6 Binary files /dev/null and b/public/terrain/19/858527/354018.terrain differ diff --git a/public/terrain/19/858527/354019.terrain b/public/terrain/19/858527/354019.terrain new file mode 100644 index 000000000..61d3c5d50 Binary files /dev/null and b/public/terrain/19/858527/354019.terrain differ diff --git a/public/terrain/19/858527/354020.terrain b/public/terrain/19/858527/354020.terrain new file mode 100644 index 000000000..d3a6c320f Binary files /dev/null and b/public/terrain/19/858527/354020.terrain differ diff --git a/public/terrain/19/858527/354021.terrain b/public/terrain/19/858527/354021.terrain new file mode 100644 index 000000000..c4f177391 Binary files /dev/null and b/public/terrain/19/858527/354021.terrain differ diff --git a/public/terrain/19/858527/354022.terrain b/public/terrain/19/858527/354022.terrain new file mode 100644 index 000000000..3ed5a87e2 Binary files /dev/null and b/public/terrain/19/858527/354022.terrain differ diff --git a/public/terrain/19/858527/354023.terrain b/public/terrain/19/858527/354023.terrain new file mode 100644 index 000000000..c62b13f05 Binary files /dev/null and b/public/terrain/19/858527/354023.terrain differ diff --git a/public/terrain/19/858527/354024.terrain b/public/terrain/19/858527/354024.terrain new file mode 100644 index 000000000..d7224870f Binary files /dev/null and b/public/terrain/19/858527/354024.terrain differ diff --git a/public/terrain/19/858527/354025.terrain b/public/terrain/19/858527/354025.terrain new file mode 100644 index 000000000..f1c7e1c7d Binary files /dev/null and b/public/terrain/19/858527/354025.terrain differ diff --git a/public/terrain/19/858527/354026.terrain b/public/terrain/19/858527/354026.terrain new file mode 100644 index 000000000..652cf1ef9 Binary files /dev/null and b/public/terrain/19/858527/354026.terrain differ diff --git a/public/terrain/19/858527/354027.terrain b/public/terrain/19/858527/354027.terrain new file mode 100644 index 000000000..cba604870 Binary files /dev/null and b/public/terrain/19/858527/354027.terrain differ diff --git a/public/terrain/19/858527/354028.terrain b/public/terrain/19/858527/354028.terrain new file mode 100644 index 000000000..4215f936d Binary files /dev/null and b/public/terrain/19/858527/354028.terrain differ diff --git a/public/terrain/19/858527/354029.terrain b/public/terrain/19/858527/354029.terrain new file mode 100644 index 000000000..6343703be Binary files /dev/null and b/public/terrain/19/858527/354029.terrain differ diff --git a/public/terrain/19/858527/354030.terrain b/public/terrain/19/858527/354030.terrain new file mode 100644 index 000000000..26842eb45 Binary files /dev/null and b/public/terrain/19/858527/354030.terrain differ diff --git a/public/terrain/19/858527/354031.terrain b/public/terrain/19/858527/354031.terrain new file mode 100644 index 000000000..931dc7866 Binary files /dev/null and b/public/terrain/19/858527/354031.terrain differ diff --git a/public/terrain/19/858527/354032.terrain b/public/terrain/19/858527/354032.terrain new file mode 100644 index 000000000..b42a10744 Binary files /dev/null and b/public/terrain/19/858527/354032.terrain differ diff --git a/public/terrain/19/858527/354033.terrain b/public/terrain/19/858527/354033.terrain new file mode 100644 index 000000000..bd457d33a Binary files /dev/null and b/public/terrain/19/858527/354033.terrain differ diff --git a/public/terrain/19/858527/354034.terrain b/public/terrain/19/858527/354034.terrain new file mode 100644 index 000000000..d4826f7da Binary files /dev/null and b/public/terrain/19/858527/354034.terrain differ diff --git a/public/terrain/19/858527/354035.terrain b/public/terrain/19/858527/354035.terrain new file mode 100644 index 000000000..541e69ef3 Binary files /dev/null and b/public/terrain/19/858527/354035.terrain differ diff --git a/public/terrain/19/858527/354036.terrain b/public/terrain/19/858527/354036.terrain new file mode 100644 index 000000000..dc36e11bd Binary files /dev/null and b/public/terrain/19/858527/354036.terrain differ diff --git a/public/terrain/19/858527/354037.terrain b/public/terrain/19/858527/354037.terrain new file mode 100644 index 000000000..73b8efdc2 Binary files /dev/null and b/public/terrain/19/858527/354037.terrain differ diff --git a/public/terrain/19/858527/354038.terrain b/public/terrain/19/858527/354038.terrain new file mode 100644 index 000000000..c468b3c65 Binary files /dev/null and b/public/terrain/19/858527/354038.terrain differ diff --git a/public/terrain/19/858527/354039.terrain b/public/terrain/19/858527/354039.terrain new file mode 100644 index 000000000..fec14b4e2 Binary files /dev/null and b/public/terrain/19/858527/354039.terrain differ diff --git a/public/terrain/19/858527/354040.terrain b/public/terrain/19/858527/354040.terrain new file mode 100644 index 000000000..078b31a8f Binary files /dev/null and b/public/terrain/19/858527/354040.terrain differ diff --git a/public/terrain/19/858527/354041.terrain b/public/terrain/19/858527/354041.terrain new file mode 100644 index 000000000..6e99d0b0d Binary files /dev/null and b/public/terrain/19/858527/354041.terrain differ diff --git a/public/terrain/19/858527/354042.terrain b/public/terrain/19/858527/354042.terrain new file mode 100644 index 000000000..86e9eac10 Binary files /dev/null and b/public/terrain/19/858527/354042.terrain differ diff --git a/public/terrain/19/858527/354043.terrain b/public/terrain/19/858527/354043.terrain new file mode 100644 index 000000000..313550602 Binary files /dev/null and b/public/terrain/19/858527/354043.terrain differ diff --git a/public/terrain/19/858527/354044.terrain b/public/terrain/19/858527/354044.terrain new file mode 100644 index 000000000..b592e486d Binary files /dev/null and b/public/terrain/19/858527/354044.terrain differ diff --git a/public/terrain/19/858527/354045.terrain b/public/terrain/19/858527/354045.terrain new file mode 100644 index 000000000..c85b3d00f Binary files /dev/null and b/public/terrain/19/858527/354045.terrain differ diff --git a/public/terrain/19/858527/354046.terrain b/public/terrain/19/858527/354046.terrain new file mode 100644 index 000000000..f07ce6c19 Binary files /dev/null and b/public/terrain/19/858527/354046.terrain differ diff --git a/public/terrain/19/858527/354047.terrain b/public/terrain/19/858527/354047.terrain new file mode 100644 index 000000000..c5a2a6646 Binary files /dev/null and b/public/terrain/19/858527/354047.terrain differ diff --git a/public/terrain/19/858527/354048.terrain b/public/terrain/19/858527/354048.terrain new file mode 100644 index 000000000..1719e3798 Binary files /dev/null and b/public/terrain/19/858527/354048.terrain differ diff --git a/public/terrain/19/858527/354049.terrain b/public/terrain/19/858527/354049.terrain new file mode 100644 index 000000000..46cb1c54b Binary files /dev/null and b/public/terrain/19/858527/354049.terrain differ diff --git a/public/terrain/19/858527/354050.terrain b/public/terrain/19/858527/354050.terrain new file mode 100644 index 000000000..4aa6f891a Binary files /dev/null and b/public/terrain/19/858527/354050.terrain differ diff --git a/public/terrain/19/858527/354051.terrain b/public/terrain/19/858527/354051.terrain new file mode 100644 index 000000000..4b6fc7ab3 Binary files /dev/null and b/public/terrain/19/858527/354051.terrain differ diff --git a/public/terrain/19/858527/354052.terrain b/public/terrain/19/858527/354052.terrain new file mode 100644 index 000000000..91afefa7d Binary files /dev/null and b/public/terrain/19/858527/354052.terrain differ diff --git a/public/terrain/19/858527/354053.terrain b/public/terrain/19/858527/354053.terrain new file mode 100644 index 000000000..679cb1966 Binary files /dev/null and b/public/terrain/19/858527/354053.terrain differ diff --git a/public/terrain/19/858527/354054.terrain b/public/terrain/19/858527/354054.terrain new file mode 100644 index 000000000..b94c3b1f2 Binary files /dev/null and b/public/terrain/19/858527/354054.terrain differ diff --git a/public/terrain/19/858527/354055.terrain b/public/terrain/19/858527/354055.terrain new file mode 100644 index 000000000..dcec3b79f Binary files /dev/null and b/public/terrain/19/858527/354055.terrain differ diff --git a/public/terrain/19/858527/354056.terrain b/public/terrain/19/858527/354056.terrain new file mode 100644 index 000000000..757a4bed0 Binary files /dev/null and b/public/terrain/19/858527/354056.terrain differ diff --git a/public/terrain/19/858527/354057.terrain b/public/terrain/19/858527/354057.terrain new file mode 100644 index 000000000..08ed7b38c Binary files /dev/null and b/public/terrain/19/858527/354057.terrain differ diff --git a/public/terrain/19/858527/354058.terrain b/public/terrain/19/858527/354058.terrain new file mode 100644 index 000000000..cb0d19fe7 Binary files /dev/null and b/public/terrain/19/858527/354058.terrain differ diff --git a/public/terrain/19/858527/354059.terrain b/public/terrain/19/858527/354059.terrain new file mode 100644 index 000000000..b33174cb5 Binary files /dev/null and b/public/terrain/19/858527/354059.terrain differ diff --git a/public/terrain/19/858528/353743.terrain b/public/terrain/19/858528/353743.terrain new file mode 100644 index 000000000..616812d2c Binary files /dev/null and b/public/terrain/19/858528/353743.terrain differ diff --git a/public/terrain/19/858528/353744.terrain b/public/terrain/19/858528/353744.terrain new file mode 100644 index 000000000..327f8929d Binary files /dev/null and b/public/terrain/19/858528/353744.terrain differ diff --git a/public/terrain/19/858528/353745.terrain b/public/terrain/19/858528/353745.terrain new file mode 100644 index 000000000..706d7fa9d Binary files /dev/null and b/public/terrain/19/858528/353745.terrain differ diff --git a/public/terrain/19/858528/353746.terrain b/public/terrain/19/858528/353746.terrain new file mode 100644 index 000000000..0604cc27e Binary files /dev/null and b/public/terrain/19/858528/353746.terrain differ diff --git a/public/terrain/19/858528/353747.terrain b/public/terrain/19/858528/353747.terrain new file mode 100644 index 000000000..a355f8046 Binary files /dev/null and b/public/terrain/19/858528/353747.terrain differ diff --git a/public/terrain/19/858528/353748.terrain b/public/terrain/19/858528/353748.terrain new file mode 100644 index 000000000..dd1c1fb94 Binary files /dev/null and b/public/terrain/19/858528/353748.terrain differ diff --git a/public/terrain/19/858528/353749.terrain b/public/terrain/19/858528/353749.terrain new file mode 100644 index 000000000..9a2621427 Binary files /dev/null and b/public/terrain/19/858528/353749.terrain differ diff --git a/public/terrain/19/858528/353750.terrain b/public/terrain/19/858528/353750.terrain new file mode 100644 index 000000000..f4e78c637 Binary files /dev/null and b/public/terrain/19/858528/353750.terrain differ diff --git a/public/terrain/19/858528/353751.terrain b/public/terrain/19/858528/353751.terrain new file mode 100644 index 000000000..5dce51af0 Binary files /dev/null and b/public/terrain/19/858528/353751.terrain differ diff --git a/public/terrain/19/858528/353752.terrain b/public/terrain/19/858528/353752.terrain new file mode 100644 index 000000000..555399ca2 Binary files /dev/null and b/public/terrain/19/858528/353752.terrain differ diff --git a/public/terrain/19/858528/353753.terrain b/public/terrain/19/858528/353753.terrain new file mode 100644 index 000000000..638f128c4 Binary files /dev/null and b/public/terrain/19/858528/353753.terrain differ diff --git a/public/terrain/19/858528/353754.terrain b/public/terrain/19/858528/353754.terrain new file mode 100644 index 000000000..6b972de12 Binary files /dev/null and b/public/terrain/19/858528/353754.terrain differ diff --git a/public/terrain/19/858528/353755.terrain b/public/terrain/19/858528/353755.terrain new file mode 100644 index 000000000..eaf3e80e6 Binary files /dev/null and b/public/terrain/19/858528/353755.terrain differ diff --git a/public/terrain/19/858528/353756.terrain b/public/terrain/19/858528/353756.terrain new file mode 100644 index 000000000..7da4e6dcb Binary files /dev/null and b/public/terrain/19/858528/353756.terrain differ diff --git a/public/terrain/19/858528/353757.terrain b/public/terrain/19/858528/353757.terrain new file mode 100644 index 000000000..bec0ad7e2 Binary files /dev/null and b/public/terrain/19/858528/353757.terrain differ diff --git a/public/terrain/19/858528/353758.terrain b/public/terrain/19/858528/353758.terrain new file mode 100644 index 000000000..0d6fa2f54 Binary files /dev/null and b/public/terrain/19/858528/353758.terrain differ diff --git a/public/terrain/19/858528/353759.terrain b/public/terrain/19/858528/353759.terrain new file mode 100644 index 000000000..88a3f661d Binary files /dev/null and b/public/terrain/19/858528/353759.terrain differ diff --git a/public/terrain/19/858528/353760.terrain b/public/terrain/19/858528/353760.terrain new file mode 100644 index 000000000..3e2a3cf5a Binary files /dev/null and b/public/terrain/19/858528/353760.terrain differ diff --git a/public/terrain/19/858528/353761.terrain b/public/terrain/19/858528/353761.terrain new file mode 100644 index 000000000..8879f4e5f Binary files /dev/null and b/public/terrain/19/858528/353761.terrain differ diff --git a/public/terrain/19/858528/353762.terrain b/public/terrain/19/858528/353762.terrain new file mode 100644 index 000000000..96670f317 Binary files /dev/null and b/public/terrain/19/858528/353762.terrain differ diff --git a/public/terrain/19/858528/353763.terrain b/public/terrain/19/858528/353763.terrain new file mode 100644 index 000000000..f40cd2d63 Binary files /dev/null and b/public/terrain/19/858528/353763.terrain differ diff --git a/public/terrain/19/858528/353764.terrain b/public/terrain/19/858528/353764.terrain new file mode 100644 index 000000000..dfcde5d9c Binary files /dev/null and b/public/terrain/19/858528/353764.terrain differ diff --git a/public/terrain/19/858528/353765.terrain b/public/terrain/19/858528/353765.terrain new file mode 100644 index 000000000..9a066656f Binary files /dev/null and b/public/terrain/19/858528/353765.terrain differ diff --git a/public/terrain/19/858528/353766.terrain b/public/terrain/19/858528/353766.terrain new file mode 100644 index 000000000..016959e1f Binary files /dev/null and b/public/terrain/19/858528/353766.terrain differ diff --git a/public/terrain/19/858528/353767.terrain b/public/terrain/19/858528/353767.terrain new file mode 100644 index 000000000..e3a898a84 Binary files /dev/null and b/public/terrain/19/858528/353767.terrain differ diff --git a/public/terrain/19/858528/353768.terrain b/public/terrain/19/858528/353768.terrain new file mode 100644 index 000000000..104a51da4 Binary files /dev/null and b/public/terrain/19/858528/353768.terrain differ diff --git a/public/terrain/19/858528/353769.terrain b/public/terrain/19/858528/353769.terrain new file mode 100644 index 000000000..d02ee2d26 Binary files /dev/null and b/public/terrain/19/858528/353769.terrain differ diff --git a/public/terrain/19/858528/353770.terrain b/public/terrain/19/858528/353770.terrain new file mode 100644 index 000000000..93ce76808 Binary files /dev/null and b/public/terrain/19/858528/353770.terrain differ diff --git a/public/terrain/19/858528/353771.terrain b/public/terrain/19/858528/353771.terrain new file mode 100644 index 000000000..3b01148ec Binary files /dev/null and b/public/terrain/19/858528/353771.terrain differ diff --git a/public/terrain/19/858528/353772.terrain b/public/terrain/19/858528/353772.terrain new file mode 100644 index 000000000..0c7eb2911 Binary files /dev/null and b/public/terrain/19/858528/353772.terrain differ diff --git a/public/terrain/19/858528/353773.terrain b/public/terrain/19/858528/353773.terrain new file mode 100644 index 000000000..c217a4215 Binary files /dev/null and b/public/terrain/19/858528/353773.terrain differ diff --git a/public/terrain/19/858528/353774.terrain b/public/terrain/19/858528/353774.terrain new file mode 100644 index 000000000..8690c071a Binary files /dev/null and b/public/terrain/19/858528/353774.terrain differ diff --git a/public/terrain/19/858528/353775.terrain b/public/terrain/19/858528/353775.terrain new file mode 100644 index 000000000..30429235f Binary files /dev/null and b/public/terrain/19/858528/353775.terrain differ diff --git a/public/terrain/19/858528/353776.terrain b/public/terrain/19/858528/353776.terrain new file mode 100644 index 000000000..8b225cd03 Binary files /dev/null and b/public/terrain/19/858528/353776.terrain differ diff --git a/public/terrain/19/858528/353777.terrain b/public/terrain/19/858528/353777.terrain new file mode 100644 index 000000000..5ef9f1e33 Binary files /dev/null and b/public/terrain/19/858528/353777.terrain differ diff --git a/public/terrain/19/858528/353778.terrain b/public/terrain/19/858528/353778.terrain new file mode 100644 index 000000000..bbe2929a5 Binary files /dev/null and b/public/terrain/19/858528/353778.terrain differ diff --git a/public/terrain/19/858528/353779.terrain b/public/terrain/19/858528/353779.terrain new file mode 100644 index 000000000..56b918315 Binary files /dev/null and b/public/terrain/19/858528/353779.terrain differ diff --git a/public/terrain/19/858528/353780.terrain b/public/terrain/19/858528/353780.terrain new file mode 100644 index 000000000..3dbad92e8 Binary files /dev/null and b/public/terrain/19/858528/353780.terrain differ diff --git a/public/terrain/19/858528/353781.terrain b/public/terrain/19/858528/353781.terrain new file mode 100644 index 000000000..f207b6f60 Binary files /dev/null and b/public/terrain/19/858528/353781.terrain differ diff --git a/public/terrain/19/858528/353782.terrain b/public/terrain/19/858528/353782.terrain new file mode 100644 index 000000000..c48becd0e Binary files /dev/null and b/public/terrain/19/858528/353782.terrain differ diff --git a/public/terrain/19/858528/353783.terrain b/public/terrain/19/858528/353783.terrain new file mode 100644 index 000000000..5c403dece Binary files /dev/null and b/public/terrain/19/858528/353783.terrain differ diff --git a/public/terrain/19/858528/353784.terrain b/public/terrain/19/858528/353784.terrain new file mode 100644 index 000000000..6f2ea5f50 Binary files /dev/null and b/public/terrain/19/858528/353784.terrain differ diff --git a/public/terrain/19/858528/353785.terrain b/public/terrain/19/858528/353785.terrain new file mode 100644 index 000000000..8663bb9bc Binary files /dev/null and b/public/terrain/19/858528/353785.terrain differ diff --git a/public/terrain/19/858528/353786.terrain b/public/terrain/19/858528/353786.terrain new file mode 100644 index 000000000..88d234fb8 Binary files /dev/null and b/public/terrain/19/858528/353786.terrain differ diff --git a/public/terrain/19/858528/353787.terrain b/public/terrain/19/858528/353787.terrain new file mode 100644 index 000000000..3930312a2 Binary files /dev/null and b/public/terrain/19/858528/353787.terrain differ diff --git a/public/terrain/19/858528/353788.terrain b/public/terrain/19/858528/353788.terrain new file mode 100644 index 000000000..61e7f804f Binary files /dev/null and b/public/terrain/19/858528/353788.terrain differ diff --git a/public/terrain/19/858528/353789.terrain b/public/terrain/19/858528/353789.terrain new file mode 100644 index 000000000..bacf90deb Binary files /dev/null and b/public/terrain/19/858528/353789.terrain differ diff --git a/public/terrain/19/858528/353790.terrain b/public/terrain/19/858528/353790.terrain new file mode 100644 index 000000000..d0a4e6568 Binary files /dev/null and b/public/terrain/19/858528/353790.terrain differ diff --git a/public/terrain/19/858528/353791.terrain b/public/terrain/19/858528/353791.terrain new file mode 100644 index 000000000..c0afe1035 Binary files /dev/null and b/public/terrain/19/858528/353791.terrain differ diff --git a/public/terrain/19/858528/353792.terrain b/public/terrain/19/858528/353792.terrain new file mode 100644 index 000000000..dcd0ddd15 Binary files /dev/null and b/public/terrain/19/858528/353792.terrain differ diff --git a/public/terrain/19/858528/353793.terrain b/public/terrain/19/858528/353793.terrain new file mode 100644 index 000000000..7011cdd0e Binary files /dev/null and b/public/terrain/19/858528/353793.terrain differ diff --git a/public/terrain/19/858528/353794.terrain b/public/terrain/19/858528/353794.terrain new file mode 100644 index 000000000..d726465f3 Binary files /dev/null and b/public/terrain/19/858528/353794.terrain differ diff --git a/public/terrain/19/858528/353795.terrain b/public/terrain/19/858528/353795.terrain new file mode 100644 index 000000000..19e6fbe29 Binary files /dev/null and b/public/terrain/19/858528/353795.terrain differ diff --git a/public/terrain/19/858528/353796.terrain b/public/terrain/19/858528/353796.terrain new file mode 100644 index 000000000..f62cf7d84 Binary files /dev/null and b/public/terrain/19/858528/353796.terrain differ diff --git a/public/terrain/19/858528/353797.terrain b/public/terrain/19/858528/353797.terrain new file mode 100644 index 000000000..41d4ae44d Binary files /dev/null and b/public/terrain/19/858528/353797.terrain differ diff --git a/public/terrain/19/858528/353798.terrain b/public/terrain/19/858528/353798.terrain new file mode 100644 index 000000000..fcc136f3a Binary files /dev/null and b/public/terrain/19/858528/353798.terrain differ diff --git a/public/terrain/19/858528/353799.terrain b/public/terrain/19/858528/353799.terrain new file mode 100644 index 000000000..ed3d3fd8d Binary files /dev/null and b/public/terrain/19/858528/353799.terrain differ diff --git a/public/terrain/19/858528/353800.terrain b/public/terrain/19/858528/353800.terrain new file mode 100644 index 000000000..162a19551 Binary files /dev/null and b/public/terrain/19/858528/353800.terrain differ diff --git a/public/terrain/19/858528/353801.terrain b/public/terrain/19/858528/353801.terrain new file mode 100644 index 000000000..df7b8f77b Binary files /dev/null and b/public/terrain/19/858528/353801.terrain differ diff --git a/public/terrain/19/858528/353802.terrain b/public/terrain/19/858528/353802.terrain new file mode 100644 index 000000000..ef02d848b Binary files /dev/null and b/public/terrain/19/858528/353802.terrain differ diff --git a/public/terrain/19/858528/353803.terrain b/public/terrain/19/858528/353803.terrain new file mode 100644 index 000000000..dd74cf49a Binary files /dev/null and b/public/terrain/19/858528/353803.terrain differ diff --git a/public/terrain/19/858528/353804.terrain b/public/terrain/19/858528/353804.terrain new file mode 100644 index 000000000..32f51d4df Binary files /dev/null and b/public/terrain/19/858528/353804.terrain differ diff --git a/public/terrain/19/858528/353805.terrain b/public/terrain/19/858528/353805.terrain new file mode 100644 index 000000000..17ba1e762 Binary files /dev/null and b/public/terrain/19/858528/353805.terrain differ diff --git a/public/terrain/19/858528/353806.terrain b/public/terrain/19/858528/353806.terrain new file mode 100644 index 000000000..ec4305120 Binary files /dev/null and b/public/terrain/19/858528/353806.terrain differ diff --git a/public/terrain/19/858528/353807.terrain b/public/terrain/19/858528/353807.terrain new file mode 100644 index 000000000..fe2f4d780 Binary files /dev/null and b/public/terrain/19/858528/353807.terrain differ diff --git a/public/terrain/19/858528/353808.terrain b/public/terrain/19/858528/353808.terrain new file mode 100644 index 000000000..1200a1389 Binary files /dev/null and b/public/terrain/19/858528/353808.terrain differ diff --git a/public/terrain/19/858528/353809.terrain b/public/terrain/19/858528/353809.terrain new file mode 100644 index 000000000..a58264aee Binary files /dev/null and b/public/terrain/19/858528/353809.terrain differ diff --git a/public/terrain/19/858528/353810.terrain b/public/terrain/19/858528/353810.terrain new file mode 100644 index 000000000..bcca24810 Binary files /dev/null and b/public/terrain/19/858528/353810.terrain differ diff --git a/public/terrain/19/858528/353811.terrain b/public/terrain/19/858528/353811.terrain new file mode 100644 index 000000000..532aaf9d6 Binary files /dev/null and b/public/terrain/19/858528/353811.terrain differ diff --git a/public/terrain/19/858528/353812.terrain b/public/terrain/19/858528/353812.terrain new file mode 100644 index 000000000..4be8b414d Binary files /dev/null and b/public/terrain/19/858528/353812.terrain differ diff --git a/public/terrain/19/858528/353813.terrain b/public/terrain/19/858528/353813.terrain new file mode 100644 index 000000000..f71e66e35 Binary files /dev/null and b/public/terrain/19/858528/353813.terrain differ diff --git a/public/terrain/19/858528/353814.terrain b/public/terrain/19/858528/353814.terrain new file mode 100644 index 000000000..2baac3885 Binary files /dev/null and b/public/terrain/19/858528/353814.terrain differ diff --git a/public/terrain/19/858528/353815.terrain b/public/terrain/19/858528/353815.terrain new file mode 100644 index 000000000..f76e81308 Binary files /dev/null and b/public/terrain/19/858528/353815.terrain differ diff --git a/public/terrain/19/858528/353816.terrain b/public/terrain/19/858528/353816.terrain new file mode 100644 index 000000000..a5815d5cd Binary files /dev/null and b/public/terrain/19/858528/353816.terrain differ diff --git a/public/terrain/19/858528/353817.terrain b/public/terrain/19/858528/353817.terrain new file mode 100644 index 000000000..31b7e5f9d Binary files /dev/null and b/public/terrain/19/858528/353817.terrain differ diff --git a/public/terrain/19/858528/353818.terrain b/public/terrain/19/858528/353818.terrain new file mode 100644 index 000000000..f90d6d634 Binary files /dev/null and b/public/terrain/19/858528/353818.terrain differ diff --git a/public/terrain/19/858528/353819.terrain b/public/terrain/19/858528/353819.terrain new file mode 100644 index 000000000..5ccd45203 Binary files /dev/null and b/public/terrain/19/858528/353819.terrain differ diff --git a/public/terrain/19/858528/353820.terrain b/public/terrain/19/858528/353820.terrain new file mode 100644 index 000000000..5c9b4e5a2 Binary files /dev/null and b/public/terrain/19/858528/353820.terrain differ diff --git a/public/terrain/19/858528/353821.terrain b/public/terrain/19/858528/353821.terrain new file mode 100644 index 000000000..764ef4fb2 Binary files /dev/null and b/public/terrain/19/858528/353821.terrain differ diff --git a/public/terrain/19/858528/353822.terrain b/public/terrain/19/858528/353822.terrain new file mode 100644 index 000000000..b7d00c6cb Binary files /dev/null and b/public/terrain/19/858528/353822.terrain differ diff --git a/public/terrain/19/858528/353823.terrain b/public/terrain/19/858528/353823.terrain new file mode 100644 index 000000000..0f4986125 Binary files /dev/null and b/public/terrain/19/858528/353823.terrain differ diff --git a/public/terrain/19/858528/353824.terrain b/public/terrain/19/858528/353824.terrain new file mode 100644 index 000000000..1a717d0f3 Binary files /dev/null and b/public/terrain/19/858528/353824.terrain differ diff --git a/public/terrain/19/858528/353825.terrain b/public/terrain/19/858528/353825.terrain new file mode 100644 index 000000000..0e273c3d5 Binary files /dev/null and b/public/terrain/19/858528/353825.terrain differ diff --git a/public/terrain/19/858528/353826.terrain b/public/terrain/19/858528/353826.terrain new file mode 100644 index 000000000..43bbb405e Binary files /dev/null and b/public/terrain/19/858528/353826.terrain differ diff --git a/public/terrain/19/858528/353827.terrain b/public/terrain/19/858528/353827.terrain new file mode 100644 index 000000000..0bc0be206 Binary files /dev/null and b/public/terrain/19/858528/353827.terrain differ diff --git a/public/terrain/19/858528/353828.terrain b/public/terrain/19/858528/353828.terrain new file mode 100644 index 000000000..67a855084 Binary files /dev/null and b/public/terrain/19/858528/353828.terrain differ diff --git a/public/terrain/19/858528/353829.terrain b/public/terrain/19/858528/353829.terrain new file mode 100644 index 000000000..23a785a6f Binary files /dev/null and b/public/terrain/19/858528/353829.terrain differ diff --git a/public/terrain/19/858528/353830.terrain b/public/terrain/19/858528/353830.terrain new file mode 100644 index 000000000..0586c05a2 Binary files /dev/null and b/public/terrain/19/858528/353830.terrain differ diff --git a/public/terrain/19/858528/353831.terrain b/public/terrain/19/858528/353831.terrain new file mode 100644 index 000000000..e48aaf62c Binary files /dev/null and b/public/terrain/19/858528/353831.terrain differ diff --git a/public/terrain/19/858528/353832.terrain b/public/terrain/19/858528/353832.terrain new file mode 100644 index 000000000..2b7ed7745 Binary files /dev/null and b/public/terrain/19/858528/353832.terrain differ diff --git a/public/terrain/19/858528/353833.terrain b/public/terrain/19/858528/353833.terrain new file mode 100644 index 000000000..78a4fceb4 Binary files /dev/null and b/public/terrain/19/858528/353833.terrain differ diff --git a/public/terrain/19/858528/353834.terrain b/public/terrain/19/858528/353834.terrain new file mode 100644 index 000000000..4d5f796e3 Binary files /dev/null and b/public/terrain/19/858528/353834.terrain differ diff --git a/public/terrain/19/858528/353835.terrain b/public/terrain/19/858528/353835.terrain new file mode 100644 index 000000000..8eb23bc17 Binary files /dev/null and b/public/terrain/19/858528/353835.terrain differ diff --git a/public/terrain/19/858528/353836.terrain b/public/terrain/19/858528/353836.terrain new file mode 100644 index 000000000..97bfdef12 Binary files /dev/null and b/public/terrain/19/858528/353836.terrain differ diff --git a/public/terrain/19/858528/353837.terrain b/public/terrain/19/858528/353837.terrain new file mode 100644 index 000000000..5b9bf1b88 Binary files /dev/null and b/public/terrain/19/858528/353837.terrain differ diff --git a/public/terrain/19/858528/353838.terrain b/public/terrain/19/858528/353838.terrain new file mode 100644 index 000000000..ad5b82380 Binary files /dev/null and b/public/terrain/19/858528/353838.terrain differ diff --git a/public/terrain/19/858528/353839.terrain b/public/terrain/19/858528/353839.terrain new file mode 100644 index 000000000..c9fdafc2b Binary files /dev/null and b/public/terrain/19/858528/353839.terrain differ diff --git a/public/terrain/19/858528/353840.terrain b/public/terrain/19/858528/353840.terrain new file mode 100644 index 000000000..ffa2b6909 Binary files /dev/null and b/public/terrain/19/858528/353840.terrain differ diff --git a/public/terrain/19/858528/353841.terrain b/public/terrain/19/858528/353841.terrain new file mode 100644 index 000000000..71c893f41 Binary files /dev/null and b/public/terrain/19/858528/353841.terrain differ diff --git a/public/terrain/19/858528/353842.terrain b/public/terrain/19/858528/353842.terrain new file mode 100644 index 000000000..ce87c7360 Binary files /dev/null and b/public/terrain/19/858528/353842.terrain differ diff --git a/public/terrain/19/858528/353843.terrain b/public/terrain/19/858528/353843.terrain new file mode 100644 index 000000000..e08b06c1c Binary files /dev/null and b/public/terrain/19/858528/353843.terrain differ diff --git a/public/terrain/19/858528/353844.terrain b/public/terrain/19/858528/353844.terrain new file mode 100644 index 000000000..c5832d937 Binary files /dev/null and b/public/terrain/19/858528/353844.terrain differ diff --git a/public/terrain/19/858528/353845.terrain b/public/terrain/19/858528/353845.terrain new file mode 100644 index 000000000..c3ccf0cdd Binary files /dev/null and b/public/terrain/19/858528/353845.terrain differ diff --git a/public/terrain/19/858528/353846.terrain b/public/terrain/19/858528/353846.terrain new file mode 100644 index 000000000..8a55a8909 Binary files /dev/null and b/public/terrain/19/858528/353846.terrain differ diff --git a/public/terrain/19/858528/353847.terrain b/public/terrain/19/858528/353847.terrain new file mode 100644 index 000000000..53a0e1dd4 Binary files /dev/null and b/public/terrain/19/858528/353847.terrain differ diff --git a/public/terrain/19/858528/353848.terrain b/public/terrain/19/858528/353848.terrain new file mode 100644 index 000000000..53a2b9502 Binary files /dev/null and b/public/terrain/19/858528/353848.terrain differ diff --git a/public/terrain/19/858528/353849.terrain b/public/terrain/19/858528/353849.terrain new file mode 100644 index 000000000..0d6c93fcd Binary files /dev/null and b/public/terrain/19/858528/353849.terrain differ diff --git a/public/terrain/19/858528/353850.terrain b/public/terrain/19/858528/353850.terrain new file mode 100644 index 000000000..652bae160 Binary files /dev/null and b/public/terrain/19/858528/353850.terrain differ diff --git a/public/terrain/19/858528/353851.terrain b/public/terrain/19/858528/353851.terrain new file mode 100644 index 000000000..949fa925f Binary files /dev/null and b/public/terrain/19/858528/353851.terrain differ diff --git a/public/terrain/19/858528/353852.terrain b/public/terrain/19/858528/353852.terrain new file mode 100644 index 000000000..c9bfb4a3d Binary files /dev/null and b/public/terrain/19/858528/353852.terrain differ diff --git a/public/terrain/19/858528/353853.terrain b/public/terrain/19/858528/353853.terrain new file mode 100644 index 000000000..4ddb0667c Binary files /dev/null and b/public/terrain/19/858528/353853.terrain differ diff --git a/public/terrain/19/858528/353854.terrain b/public/terrain/19/858528/353854.terrain new file mode 100644 index 000000000..cf73ee814 Binary files /dev/null and b/public/terrain/19/858528/353854.terrain differ diff --git a/public/terrain/19/858528/353855.terrain b/public/terrain/19/858528/353855.terrain new file mode 100644 index 000000000..24ffc7246 Binary files /dev/null and b/public/terrain/19/858528/353855.terrain differ diff --git a/public/terrain/19/858528/353856.terrain b/public/terrain/19/858528/353856.terrain new file mode 100644 index 000000000..54b9c2171 Binary files /dev/null and b/public/terrain/19/858528/353856.terrain differ diff --git a/public/terrain/19/858528/353857.terrain b/public/terrain/19/858528/353857.terrain new file mode 100644 index 000000000..e44765b84 Binary files /dev/null and b/public/terrain/19/858528/353857.terrain differ diff --git a/public/terrain/19/858528/353858.terrain b/public/terrain/19/858528/353858.terrain new file mode 100644 index 000000000..75fcb747c Binary files /dev/null and b/public/terrain/19/858528/353858.terrain differ diff --git a/public/terrain/19/858528/353859.terrain b/public/terrain/19/858528/353859.terrain new file mode 100644 index 000000000..9e15dfe78 Binary files /dev/null and b/public/terrain/19/858528/353859.terrain differ diff --git a/public/terrain/19/858528/353860.terrain b/public/terrain/19/858528/353860.terrain new file mode 100644 index 000000000..f2bc3b0e1 Binary files /dev/null and b/public/terrain/19/858528/353860.terrain differ diff --git a/public/terrain/19/858528/353861.terrain b/public/terrain/19/858528/353861.terrain new file mode 100644 index 000000000..ae2c87073 Binary files /dev/null and b/public/terrain/19/858528/353861.terrain differ diff --git a/public/terrain/19/858528/353862.terrain b/public/terrain/19/858528/353862.terrain new file mode 100644 index 000000000..fc823b254 Binary files /dev/null and b/public/terrain/19/858528/353862.terrain differ diff --git a/public/terrain/19/858528/353863.terrain b/public/terrain/19/858528/353863.terrain new file mode 100644 index 000000000..455715413 Binary files /dev/null and b/public/terrain/19/858528/353863.terrain differ diff --git a/public/terrain/19/858528/353864.terrain b/public/terrain/19/858528/353864.terrain new file mode 100644 index 000000000..fa2744fe9 Binary files /dev/null and b/public/terrain/19/858528/353864.terrain differ diff --git a/public/terrain/19/858528/353865.terrain b/public/terrain/19/858528/353865.terrain new file mode 100644 index 000000000..dd90ffda4 Binary files /dev/null and b/public/terrain/19/858528/353865.terrain differ diff --git a/public/terrain/19/858528/353866.terrain b/public/terrain/19/858528/353866.terrain new file mode 100644 index 000000000..82b0a68db Binary files /dev/null and b/public/terrain/19/858528/353866.terrain differ diff --git a/public/terrain/19/858528/353867.terrain b/public/terrain/19/858528/353867.terrain new file mode 100644 index 000000000..a284d493b Binary files /dev/null and b/public/terrain/19/858528/353867.terrain differ diff --git a/public/terrain/19/858528/353868.terrain b/public/terrain/19/858528/353868.terrain new file mode 100644 index 000000000..16318ffd0 Binary files /dev/null and b/public/terrain/19/858528/353868.terrain differ diff --git a/public/terrain/19/858528/353869.terrain b/public/terrain/19/858528/353869.terrain new file mode 100644 index 000000000..db90a42b2 Binary files /dev/null and b/public/terrain/19/858528/353869.terrain differ diff --git a/public/terrain/19/858528/353870.terrain b/public/terrain/19/858528/353870.terrain new file mode 100644 index 000000000..f9fd087f9 Binary files /dev/null and b/public/terrain/19/858528/353870.terrain differ diff --git a/public/terrain/19/858528/353871.terrain b/public/terrain/19/858528/353871.terrain new file mode 100644 index 000000000..e74c386bf Binary files /dev/null and b/public/terrain/19/858528/353871.terrain differ diff --git a/public/terrain/19/858528/353872.terrain b/public/terrain/19/858528/353872.terrain new file mode 100644 index 000000000..21f800f02 Binary files /dev/null and b/public/terrain/19/858528/353872.terrain differ diff --git a/public/terrain/19/858528/353873.terrain b/public/terrain/19/858528/353873.terrain new file mode 100644 index 000000000..0570989c2 Binary files /dev/null and b/public/terrain/19/858528/353873.terrain differ diff --git a/public/terrain/19/858528/353874.terrain b/public/terrain/19/858528/353874.terrain new file mode 100644 index 000000000..3bf31e050 Binary files /dev/null and b/public/terrain/19/858528/353874.terrain differ diff --git a/public/terrain/19/858528/353875.terrain b/public/terrain/19/858528/353875.terrain new file mode 100644 index 000000000..6389bc816 Binary files /dev/null and b/public/terrain/19/858528/353875.terrain differ diff --git a/public/terrain/19/858528/353876.terrain b/public/terrain/19/858528/353876.terrain new file mode 100644 index 000000000..bf0c4d6fd Binary files /dev/null and b/public/terrain/19/858528/353876.terrain differ diff --git a/public/terrain/19/858528/353877.terrain b/public/terrain/19/858528/353877.terrain new file mode 100644 index 000000000..8b4d5f9cd Binary files /dev/null and b/public/terrain/19/858528/353877.terrain differ diff --git a/public/terrain/19/858528/353878.terrain b/public/terrain/19/858528/353878.terrain new file mode 100644 index 000000000..c79d9dc26 Binary files /dev/null and b/public/terrain/19/858528/353878.terrain differ diff --git a/public/terrain/19/858528/353879.terrain b/public/terrain/19/858528/353879.terrain new file mode 100644 index 000000000..b1b7d0766 Binary files /dev/null and b/public/terrain/19/858528/353879.terrain differ diff --git a/public/terrain/19/858528/353880.terrain b/public/terrain/19/858528/353880.terrain new file mode 100644 index 000000000..933d5422b Binary files /dev/null and b/public/terrain/19/858528/353880.terrain differ diff --git a/public/terrain/19/858528/353881.terrain b/public/terrain/19/858528/353881.terrain new file mode 100644 index 000000000..96a8d0a9f Binary files /dev/null and b/public/terrain/19/858528/353881.terrain differ diff --git a/public/terrain/19/858528/353882.terrain b/public/terrain/19/858528/353882.terrain new file mode 100644 index 000000000..b23ac80b6 Binary files /dev/null and b/public/terrain/19/858528/353882.terrain differ diff --git a/public/terrain/19/858528/353883.terrain b/public/terrain/19/858528/353883.terrain new file mode 100644 index 000000000..4e8d4bb9d Binary files /dev/null and b/public/terrain/19/858528/353883.terrain differ diff --git a/public/terrain/19/858528/353884.terrain b/public/terrain/19/858528/353884.terrain new file mode 100644 index 000000000..7484a9f25 Binary files /dev/null and b/public/terrain/19/858528/353884.terrain differ diff --git a/public/terrain/19/858528/353885.terrain b/public/terrain/19/858528/353885.terrain new file mode 100644 index 000000000..328bd804c Binary files /dev/null and b/public/terrain/19/858528/353885.terrain differ diff --git a/public/terrain/19/858528/353886.terrain b/public/terrain/19/858528/353886.terrain new file mode 100644 index 000000000..872451641 Binary files /dev/null and b/public/terrain/19/858528/353886.terrain differ diff --git a/public/terrain/19/858528/353887.terrain b/public/terrain/19/858528/353887.terrain new file mode 100644 index 000000000..5bad3c18b Binary files /dev/null and b/public/terrain/19/858528/353887.terrain differ diff --git a/public/terrain/19/858528/353888.terrain b/public/terrain/19/858528/353888.terrain new file mode 100644 index 000000000..10eb4370a Binary files /dev/null and b/public/terrain/19/858528/353888.terrain differ diff --git a/public/terrain/19/858528/353889.terrain b/public/terrain/19/858528/353889.terrain new file mode 100644 index 000000000..4d55ab1e5 Binary files /dev/null and b/public/terrain/19/858528/353889.terrain differ diff --git a/public/terrain/19/858528/353890.terrain b/public/terrain/19/858528/353890.terrain new file mode 100644 index 000000000..d62f653f3 Binary files /dev/null and b/public/terrain/19/858528/353890.terrain differ diff --git a/public/terrain/19/858528/353891.terrain b/public/terrain/19/858528/353891.terrain new file mode 100644 index 000000000..f31e832de Binary files /dev/null and b/public/terrain/19/858528/353891.terrain differ diff --git a/public/terrain/19/858528/353892.terrain b/public/terrain/19/858528/353892.terrain new file mode 100644 index 000000000..38e6a81d6 Binary files /dev/null and b/public/terrain/19/858528/353892.terrain differ diff --git a/public/terrain/19/858528/353893.terrain b/public/terrain/19/858528/353893.terrain new file mode 100644 index 000000000..998ac8248 Binary files /dev/null and b/public/terrain/19/858528/353893.terrain differ diff --git a/public/terrain/19/858528/353894.terrain b/public/terrain/19/858528/353894.terrain new file mode 100644 index 000000000..63b4294b8 Binary files /dev/null and b/public/terrain/19/858528/353894.terrain differ diff --git a/public/terrain/19/858528/353895.terrain b/public/terrain/19/858528/353895.terrain new file mode 100644 index 000000000..fb6b94d16 Binary files /dev/null and b/public/terrain/19/858528/353895.terrain differ diff --git a/public/terrain/19/858528/353896.terrain b/public/terrain/19/858528/353896.terrain new file mode 100644 index 000000000..395a69848 Binary files /dev/null and b/public/terrain/19/858528/353896.terrain differ diff --git a/public/terrain/19/858528/353897.terrain b/public/terrain/19/858528/353897.terrain new file mode 100644 index 000000000..59f4e7139 Binary files /dev/null and b/public/terrain/19/858528/353897.terrain differ diff --git a/public/terrain/19/858528/353898.terrain b/public/terrain/19/858528/353898.terrain new file mode 100644 index 000000000..eec59ed6f Binary files /dev/null and b/public/terrain/19/858528/353898.terrain differ diff --git a/public/terrain/19/858528/353899.terrain b/public/terrain/19/858528/353899.terrain new file mode 100644 index 000000000..8aeebbb35 Binary files /dev/null and b/public/terrain/19/858528/353899.terrain differ diff --git a/public/terrain/19/858528/353900.terrain b/public/terrain/19/858528/353900.terrain new file mode 100644 index 000000000..2d9ac0405 Binary files /dev/null and b/public/terrain/19/858528/353900.terrain differ diff --git a/public/terrain/19/858528/353901.terrain b/public/terrain/19/858528/353901.terrain new file mode 100644 index 000000000..5cecde0b6 Binary files /dev/null and b/public/terrain/19/858528/353901.terrain differ diff --git a/public/terrain/19/858528/353902.terrain b/public/terrain/19/858528/353902.terrain new file mode 100644 index 000000000..60463383f Binary files /dev/null and b/public/terrain/19/858528/353902.terrain differ diff --git a/public/terrain/19/858528/353903.terrain b/public/terrain/19/858528/353903.terrain new file mode 100644 index 000000000..0fd3752a3 Binary files /dev/null and b/public/terrain/19/858528/353903.terrain differ diff --git a/public/terrain/19/858528/353904.terrain b/public/terrain/19/858528/353904.terrain new file mode 100644 index 000000000..e312a0233 Binary files /dev/null and b/public/terrain/19/858528/353904.terrain differ diff --git a/public/terrain/19/858528/353905.terrain b/public/terrain/19/858528/353905.terrain new file mode 100644 index 000000000..4032dd8ef Binary files /dev/null and b/public/terrain/19/858528/353905.terrain differ diff --git a/public/terrain/19/858528/353906.terrain b/public/terrain/19/858528/353906.terrain new file mode 100644 index 000000000..8f48c88d8 Binary files /dev/null and b/public/terrain/19/858528/353906.terrain differ diff --git a/public/terrain/19/858528/353907.terrain b/public/terrain/19/858528/353907.terrain new file mode 100644 index 000000000..e6bba2cf4 Binary files /dev/null and b/public/terrain/19/858528/353907.terrain differ diff --git a/public/terrain/19/858528/353908.terrain b/public/terrain/19/858528/353908.terrain new file mode 100644 index 000000000..539228937 Binary files /dev/null and b/public/terrain/19/858528/353908.terrain differ diff --git a/public/terrain/19/858528/353909.terrain b/public/terrain/19/858528/353909.terrain new file mode 100644 index 000000000..614b05437 Binary files /dev/null and b/public/terrain/19/858528/353909.terrain differ diff --git a/public/terrain/19/858528/353910.terrain b/public/terrain/19/858528/353910.terrain new file mode 100644 index 000000000..8e1dfa06f Binary files /dev/null and b/public/terrain/19/858528/353910.terrain differ diff --git a/public/terrain/19/858528/353911.terrain b/public/terrain/19/858528/353911.terrain new file mode 100644 index 000000000..83f3cca56 Binary files /dev/null and b/public/terrain/19/858528/353911.terrain differ diff --git a/public/terrain/19/858528/353912.terrain b/public/terrain/19/858528/353912.terrain new file mode 100644 index 000000000..2e3aa5c7d Binary files /dev/null and b/public/terrain/19/858528/353912.terrain differ diff --git a/public/terrain/19/858528/353913.terrain b/public/terrain/19/858528/353913.terrain new file mode 100644 index 000000000..04a0164a3 Binary files /dev/null and b/public/terrain/19/858528/353913.terrain differ diff --git a/public/terrain/19/858528/353914.terrain b/public/terrain/19/858528/353914.terrain new file mode 100644 index 000000000..3f822af71 Binary files /dev/null and b/public/terrain/19/858528/353914.terrain differ diff --git a/public/terrain/19/858528/353915.terrain b/public/terrain/19/858528/353915.terrain new file mode 100644 index 000000000..2062f08a1 Binary files /dev/null and b/public/terrain/19/858528/353915.terrain differ diff --git a/public/terrain/19/858528/353916.terrain b/public/terrain/19/858528/353916.terrain new file mode 100644 index 000000000..b20f33497 Binary files /dev/null and b/public/terrain/19/858528/353916.terrain differ diff --git a/public/terrain/19/858528/353917.terrain b/public/terrain/19/858528/353917.terrain new file mode 100644 index 000000000..266c10720 Binary files /dev/null and b/public/terrain/19/858528/353917.terrain differ diff --git a/public/terrain/19/858528/353918.terrain b/public/terrain/19/858528/353918.terrain new file mode 100644 index 000000000..6f4937794 Binary files /dev/null and b/public/terrain/19/858528/353918.terrain differ diff --git a/public/terrain/19/858528/353919.terrain b/public/terrain/19/858528/353919.terrain new file mode 100644 index 000000000..246575b37 Binary files /dev/null and b/public/terrain/19/858528/353919.terrain differ diff --git a/public/terrain/19/858528/353920.terrain b/public/terrain/19/858528/353920.terrain new file mode 100644 index 000000000..6a0d27d4e Binary files /dev/null and b/public/terrain/19/858528/353920.terrain differ diff --git a/public/terrain/19/858528/353921.terrain b/public/terrain/19/858528/353921.terrain new file mode 100644 index 000000000..ba9d9f228 Binary files /dev/null and b/public/terrain/19/858528/353921.terrain differ diff --git a/public/terrain/19/858528/353922.terrain b/public/terrain/19/858528/353922.terrain new file mode 100644 index 000000000..a4e66fa70 Binary files /dev/null and b/public/terrain/19/858528/353922.terrain differ diff --git a/public/terrain/19/858528/353923.terrain b/public/terrain/19/858528/353923.terrain new file mode 100644 index 000000000..8a38d351d Binary files /dev/null and b/public/terrain/19/858528/353923.terrain differ diff --git a/public/terrain/19/858528/353924.terrain b/public/terrain/19/858528/353924.terrain new file mode 100644 index 000000000..a1ce181b2 Binary files /dev/null and b/public/terrain/19/858528/353924.terrain differ diff --git a/public/terrain/19/858528/353925.terrain b/public/terrain/19/858528/353925.terrain new file mode 100644 index 000000000..894967c98 Binary files /dev/null and b/public/terrain/19/858528/353925.terrain differ diff --git a/public/terrain/19/858528/353926.terrain b/public/terrain/19/858528/353926.terrain new file mode 100644 index 000000000..c91adb1bd Binary files /dev/null and b/public/terrain/19/858528/353926.terrain differ diff --git a/public/terrain/19/858528/353927.terrain b/public/terrain/19/858528/353927.terrain new file mode 100644 index 000000000..57d4a95be Binary files /dev/null and b/public/terrain/19/858528/353927.terrain differ diff --git a/public/terrain/19/858528/353928.terrain b/public/terrain/19/858528/353928.terrain new file mode 100644 index 000000000..607939980 Binary files /dev/null and b/public/terrain/19/858528/353928.terrain differ diff --git a/public/terrain/19/858528/353929.terrain b/public/terrain/19/858528/353929.terrain new file mode 100644 index 000000000..488f80be4 Binary files /dev/null and b/public/terrain/19/858528/353929.terrain differ diff --git a/public/terrain/19/858528/353930.terrain b/public/terrain/19/858528/353930.terrain new file mode 100644 index 000000000..3a55d573d Binary files /dev/null and b/public/terrain/19/858528/353930.terrain differ diff --git a/public/terrain/19/858528/353931.terrain b/public/terrain/19/858528/353931.terrain new file mode 100644 index 000000000..466785ed9 Binary files /dev/null and b/public/terrain/19/858528/353931.terrain differ diff --git a/public/terrain/19/858528/353932.terrain b/public/terrain/19/858528/353932.terrain new file mode 100644 index 000000000..46a387e45 Binary files /dev/null and b/public/terrain/19/858528/353932.terrain differ diff --git a/public/terrain/19/858528/353933.terrain b/public/terrain/19/858528/353933.terrain new file mode 100644 index 000000000..89dbcfb0f Binary files /dev/null and b/public/terrain/19/858528/353933.terrain differ diff --git a/public/terrain/19/858528/353934.terrain b/public/terrain/19/858528/353934.terrain new file mode 100644 index 000000000..1aaa0911e Binary files /dev/null and b/public/terrain/19/858528/353934.terrain differ diff --git a/public/terrain/19/858528/353935.terrain b/public/terrain/19/858528/353935.terrain new file mode 100644 index 000000000..0b102de6e Binary files /dev/null and b/public/terrain/19/858528/353935.terrain differ diff --git a/public/terrain/19/858528/353936.terrain b/public/terrain/19/858528/353936.terrain new file mode 100644 index 000000000..6b3daba8e Binary files /dev/null and b/public/terrain/19/858528/353936.terrain differ diff --git a/public/terrain/19/858528/353937.terrain b/public/terrain/19/858528/353937.terrain new file mode 100644 index 000000000..3793cf7ca Binary files /dev/null and b/public/terrain/19/858528/353937.terrain differ diff --git a/public/terrain/19/858528/353938.terrain b/public/terrain/19/858528/353938.terrain new file mode 100644 index 000000000..cd372745f Binary files /dev/null and b/public/terrain/19/858528/353938.terrain differ diff --git a/public/terrain/19/858528/353939.terrain b/public/terrain/19/858528/353939.terrain new file mode 100644 index 000000000..50f8ae2e1 Binary files /dev/null and b/public/terrain/19/858528/353939.terrain differ diff --git a/public/terrain/19/858528/353940.terrain b/public/terrain/19/858528/353940.terrain new file mode 100644 index 000000000..4025d84f6 Binary files /dev/null and b/public/terrain/19/858528/353940.terrain differ diff --git a/public/terrain/19/858528/353941.terrain b/public/terrain/19/858528/353941.terrain new file mode 100644 index 000000000..490956264 Binary files /dev/null and b/public/terrain/19/858528/353941.terrain differ diff --git a/public/terrain/19/858528/353942.terrain b/public/terrain/19/858528/353942.terrain new file mode 100644 index 000000000..5d6d93a62 Binary files /dev/null and b/public/terrain/19/858528/353942.terrain differ diff --git a/public/terrain/19/858528/353943.terrain b/public/terrain/19/858528/353943.terrain new file mode 100644 index 000000000..11fc41ba2 Binary files /dev/null and b/public/terrain/19/858528/353943.terrain differ diff --git a/public/terrain/19/858528/353944.terrain b/public/terrain/19/858528/353944.terrain new file mode 100644 index 000000000..f5a1f52c9 Binary files /dev/null and b/public/terrain/19/858528/353944.terrain differ diff --git a/public/terrain/19/858528/353945.terrain b/public/terrain/19/858528/353945.terrain new file mode 100644 index 000000000..0cea8bf2d Binary files /dev/null and b/public/terrain/19/858528/353945.terrain differ diff --git a/public/terrain/19/858528/353946.terrain b/public/terrain/19/858528/353946.terrain new file mode 100644 index 000000000..f82c8e0f3 Binary files /dev/null and b/public/terrain/19/858528/353946.terrain differ diff --git a/public/terrain/19/858528/353947.terrain b/public/terrain/19/858528/353947.terrain new file mode 100644 index 000000000..7e30464d7 Binary files /dev/null and b/public/terrain/19/858528/353947.terrain differ diff --git a/public/terrain/19/858528/353948.terrain b/public/terrain/19/858528/353948.terrain new file mode 100644 index 000000000..3fc015b51 Binary files /dev/null and b/public/terrain/19/858528/353948.terrain differ diff --git a/public/terrain/19/858528/353949.terrain b/public/terrain/19/858528/353949.terrain new file mode 100644 index 000000000..aeb49e077 Binary files /dev/null and b/public/terrain/19/858528/353949.terrain differ diff --git a/public/terrain/19/858528/353950.terrain b/public/terrain/19/858528/353950.terrain new file mode 100644 index 000000000..25485e208 Binary files /dev/null and b/public/terrain/19/858528/353950.terrain differ diff --git a/public/terrain/19/858528/353951.terrain b/public/terrain/19/858528/353951.terrain new file mode 100644 index 000000000..9bf062e10 Binary files /dev/null and b/public/terrain/19/858528/353951.terrain differ diff --git a/public/terrain/19/858528/353952.terrain b/public/terrain/19/858528/353952.terrain new file mode 100644 index 000000000..5aea494f2 Binary files /dev/null and b/public/terrain/19/858528/353952.terrain differ diff --git a/public/terrain/19/858528/353953.terrain b/public/terrain/19/858528/353953.terrain new file mode 100644 index 000000000..e835acfd3 Binary files /dev/null and b/public/terrain/19/858528/353953.terrain differ diff --git a/public/terrain/19/858528/353954.terrain b/public/terrain/19/858528/353954.terrain new file mode 100644 index 000000000..3df4e2186 Binary files /dev/null and b/public/terrain/19/858528/353954.terrain differ diff --git a/public/terrain/19/858528/353955.terrain b/public/terrain/19/858528/353955.terrain new file mode 100644 index 000000000..8dcb7ed3b Binary files /dev/null and b/public/terrain/19/858528/353955.terrain differ diff --git a/public/terrain/19/858528/353956.terrain b/public/terrain/19/858528/353956.terrain new file mode 100644 index 000000000..cd72c13cf Binary files /dev/null and b/public/terrain/19/858528/353956.terrain differ diff --git a/public/terrain/19/858528/353957.terrain b/public/terrain/19/858528/353957.terrain new file mode 100644 index 000000000..cbb49bc90 Binary files /dev/null and b/public/terrain/19/858528/353957.terrain differ diff --git a/public/terrain/19/858528/353958.terrain b/public/terrain/19/858528/353958.terrain new file mode 100644 index 000000000..1ae07c087 Binary files /dev/null and b/public/terrain/19/858528/353958.terrain differ diff --git a/public/terrain/19/858528/353959.terrain b/public/terrain/19/858528/353959.terrain new file mode 100644 index 000000000..2ffa83445 Binary files /dev/null and b/public/terrain/19/858528/353959.terrain differ diff --git a/public/terrain/19/858528/353960.terrain b/public/terrain/19/858528/353960.terrain new file mode 100644 index 000000000..4ae3b6f94 Binary files /dev/null and b/public/terrain/19/858528/353960.terrain differ diff --git a/public/terrain/19/858528/353961.terrain b/public/terrain/19/858528/353961.terrain new file mode 100644 index 000000000..d10081f02 Binary files /dev/null and b/public/terrain/19/858528/353961.terrain differ diff --git a/public/terrain/19/858528/353962.terrain b/public/terrain/19/858528/353962.terrain new file mode 100644 index 000000000..88992f8bf Binary files /dev/null and b/public/terrain/19/858528/353962.terrain differ diff --git a/public/terrain/19/858528/353963.terrain b/public/terrain/19/858528/353963.terrain new file mode 100644 index 000000000..b19f8d6e6 Binary files /dev/null and b/public/terrain/19/858528/353963.terrain differ diff --git a/public/terrain/19/858528/353964.terrain b/public/terrain/19/858528/353964.terrain new file mode 100644 index 000000000..2dfb8c75c Binary files /dev/null and b/public/terrain/19/858528/353964.terrain differ diff --git a/public/terrain/19/858528/353965.terrain b/public/terrain/19/858528/353965.terrain new file mode 100644 index 000000000..123b4b998 Binary files /dev/null and b/public/terrain/19/858528/353965.terrain differ diff --git a/public/terrain/19/858528/353966.terrain b/public/terrain/19/858528/353966.terrain new file mode 100644 index 000000000..8ffa616ae Binary files /dev/null and b/public/terrain/19/858528/353966.terrain differ diff --git a/public/terrain/19/858528/353967.terrain b/public/terrain/19/858528/353967.terrain new file mode 100644 index 000000000..303547de5 Binary files /dev/null and b/public/terrain/19/858528/353967.terrain differ diff --git a/public/terrain/19/858528/353968.terrain b/public/terrain/19/858528/353968.terrain new file mode 100644 index 000000000..0c0d300a5 Binary files /dev/null and b/public/terrain/19/858528/353968.terrain differ diff --git a/public/terrain/19/858528/353969.terrain b/public/terrain/19/858528/353969.terrain new file mode 100644 index 000000000..fab6ca3b2 Binary files /dev/null and b/public/terrain/19/858528/353969.terrain differ diff --git a/public/terrain/19/858528/353970.terrain b/public/terrain/19/858528/353970.terrain new file mode 100644 index 000000000..4cc19cf6f Binary files /dev/null and b/public/terrain/19/858528/353970.terrain differ diff --git a/public/terrain/19/858528/353971.terrain b/public/terrain/19/858528/353971.terrain new file mode 100644 index 000000000..61d58cd80 Binary files /dev/null and b/public/terrain/19/858528/353971.terrain differ diff --git a/public/terrain/19/858528/353972.terrain b/public/terrain/19/858528/353972.terrain new file mode 100644 index 000000000..04dd3b53b Binary files /dev/null and b/public/terrain/19/858528/353972.terrain differ diff --git a/public/terrain/19/858528/353973.terrain b/public/terrain/19/858528/353973.terrain new file mode 100644 index 000000000..f8a8c6133 Binary files /dev/null and b/public/terrain/19/858528/353973.terrain differ diff --git a/public/terrain/19/858528/353974.terrain b/public/terrain/19/858528/353974.terrain new file mode 100644 index 000000000..0df8037a3 Binary files /dev/null and b/public/terrain/19/858528/353974.terrain differ diff --git a/public/terrain/19/858528/353975.terrain b/public/terrain/19/858528/353975.terrain new file mode 100644 index 000000000..ca7b37669 Binary files /dev/null and b/public/terrain/19/858528/353975.terrain differ diff --git a/public/terrain/19/858528/353976.terrain b/public/terrain/19/858528/353976.terrain new file mode 100644 index 000000000..242ae9f4f Binary files /dev/null and b/public/terrain/19/858528/353976.terrain differ diff --git a/public/terrain/19/858528/353977.terrain b/public/terrain/19/858528/353977.terrain new file mode 100644 index 000000000..cb6682b75 Binary files /dev/null and b/public/terrain/19/858528/353977.terrain differ diff --git a/public/terrain/19/858528/353978.terrain b/public/terrain/19/858528/353978.terrain new file mode 100644 index 000000000..b39d4f9e9 Binary files /dev/null and b/public/terrain/19/858528/353978.terrain differ diff --git a/public/terrain/19/858528/353979.terrain b/public/terrain/19/858528/353979.terrain new file mode 100644 index 000000000..8c840982c Binary files /dev/null and b/public/terrain/19/858528/353979.terrain differ diff --git a/public/terrain/19/858528/353980.terrain b/public/terrain/19/858528/353980.terrain new file mode 100644 index 000000000..e8916a224 Binary files /dev/null and b/public/terrain/19/858528/353980.terrain differ diff --git a/public/terrain/19/858528/353981.terrain b/public/terrain/19/858528/353981.terrain new file mode 100644 index 000000000..1ca918051 Binary files /dev/null and b/public/terrain/19/858528/353981.terrain differ diff --git a/public/terrain/19/858528/353982.terrain b/public/terrain/19/858528/353982.terrain new file mode 100644 index 000000000..164af5d89 Binary files /dev/null and b/public/terrain/19/858528/353982.terrain differ diff --git a/public/terrain/19/858528/353983.terrain b/public/terrain/19/858528/353983.terrain new file mode 100644 index 000000000..cb8b047db Binary files /dev/null and b/public/terrain/19/858528/353983.terrain differ diff --git a/public/terrain/19/858528/353984.terrain b/public/terrain/19/858528/353984.terrain new file mode 100644 index 000000000..a3c12ce7e Binary files /dev/null and b/public/terrain/19/858528/353984.terrain differ diff --git a/public/terrain/19/858528/353985.terrain b/public/terrain/19/858528/353985.terrain new file mode 100644 index 000000000..13600a83f Binary files /dev/null and b/public/terrain/19/858528/353985.terrain differ diff --git a/public/terrain/19/858528/353986.terrain b/public/terrain/19/858528/353986.terrain new file mode 100644 index 000000000..1f37f59e2 Binary files /dev/null and b/public/terrain/19/858528/353986.terrain differ diff --git a/public/terrain/19/858528/353987.terrain b/public/terrain/19/858528/353987.terrain new file mode 100644 index 000000000..110c8f1a2 Binary files /dev/null and b/public/terrain/19/858528/353987.terrain differ diff --git a/public/terrain/19/858528/353988.terrain b/public/terrain/19/858528/353988.terrain new file mode 100644 index 000000000..555696a77 Binary files /dev/null and b/public/terrain/19/858528/353988.terrain differ diff --git a/public/terrain/19/858528/353989.terrain b/public/terrain/19/858528/353989.terrain new file mode 100644 index 000000000..e111f6225 Binary files /dev/null and b/public/terrain/19/858528/353989.terrain differ diff --git a/public/terrain/19/858528/353990.terrain b/public/terrain/19/858528/353990.terrain new file mode 100644 index 000000000..f7b9e8ca8 Binary files /dev/null and b/public/terrain/19/858528/353990.terrain differ diff --git a/public/terrain/19/858528/353991.terrain b/public/terrain/19/858528/353991.terrain new file mode 100644 index 000000000..33af8715c Binary files /dev/null and b/public/terrain/19/858528/353991.terrain differ diff --git a/public/terrain/19/858528/353992.terrain b/public/terrain/19/858528/353992.terrain new file mode 100644 index 000000000..76e41c8d6 Binary files /dev/null and b/public/terrain/19/858528/353992.terrain differ diff --git a/public/terrain/19/858528/353993.terrain b/public/terrain/19/858528/353993.terrain new file mode 100644 index 000000000..b917dffce Binary files /dev/null and b/public/terrain/19/858528/353993.terrain differ diff --git a/public/terrain/19/858528/353994.terrain b/public/terrain/19/858528/353994.terrain new file mode 100644 index 000000000..a36f0fa77 Binary files /dev/null and b/public/terrain/19/858528/353994.terrain differ diff --git a/public/terrain/19/858528/353995.terrain b/public/terrain/19/858528/353995.terrain new file mode 100644 index 000000000..0b9e543a3 Binary files /dev/null and b/public/terrain/19/858528/353995.terrain differ diff --git a/public/terrain/19/858528/353996.terrain b/public/terrain/19/858528/353996.terrain new file mode 100644 index 000000000..2355800be Binary files /dev/null and b/public/terrain/19/858528/353996.terrain differ diff --git a/public/terrain/19/858528/353997.terrain b/public/terrain/19/858528/353997.terrain new file mode 100644 index 000000000..0ddde8c9e Binary files /dev/null and b/public/terrain/19/858528/353997.terrain differ diff --git a/public/terrain/19/858528/353998.terrain b/public/terrain/19/858528/353998.terrain new file mode 100644 index 000000000..395637b2f Binary files /dev/null and b/public/terrain/19/858528/353998.terrain differ diff --git a/public/terrain/19/858528/353999.terrain b/public/terrain/19/858528/353999.terrain new file mode 100644 index 000000000..79d59500c Binary files /dev/null and b/public/terrain/19/858528/353999.terrain differ diff --git a/public/terrain/19/858528/354000.terrain b/public/terrain/19/858528/354000.terrain new file mode 100644 index 000000000..e932e91b1 Binary files /dev/null and b/public/terrain/19/858528/354000.terrain differ diff --git a/public/terrain/19/858528/354001.terrain b/public/terrain/19/858528/354001.terrain new file mode 100644 index 000000000..c85d47a2b Binary files /dev/null and b/public/terrain/19/858528/354001.terrain differ diff --git a/public/terrain/19/858528/354002.terrain b/public/terrain/19/858528/354002.terrain new file mode 100644 index 000000000..b3ec3cd99 Binary files /dev/null and b/public/terrain/19/858528/354002.terrain differ diff --git a/public/terrain/19/858528/354003.terrain b/public/terrain/19/858528/354003.terrain new file mode 100644 index 000000000..f797fcb4d Binary files /dev/null and b/public/terrain/19/858528/354003.terrain differ diff --git a/public/terrain/19/858528/354004.terrain b/public/terrain/19/858528/354004.terrain new file mode 100644 index 000000000..20a55bc4f Binary files /dev/null and b/public/terrain/19/858528/354004.terrain differ diff --git a/public/terrain/19/858528/354005.terrain b/public/terrain/19/858528/354005.terrain new file mode 100644 index 000000000..c968d94cb Binary files /dev/null and b/public/terrain/19/858528/354005.terrain differ diff --git a/public/terrain/19/858528/354006.terrain b/public/terrain/19/858528/354006.terrain new file mode 100644 index 000000000..3edf93b83 Binary files /dev/null and b/public/terrain/19/858528/354006.terrain differ diff --git a/public/terrain/19/858528/354007.terrain b/public/terrain/19/858528/354007.terrain new file mode 100644 index 000000000..0c283574a Binary files /dev/null and b/public/terrain/19/858528/354007.terrain differ diff --git a/public/terrain/19/858528/354008.terrain b/public/terrain/19/858528/354008.terrain new file mode 100644 index 000000000..47b13a228 Binary files /dev/null and b/public/terrain/19/858528/354008.terrain differ diff --git a/public/terrain/19/858528/354009.terrain b/public/terrain/19/858528/354009.terrain new file mode 100644 index 000000000..746ae9626 Binary files /dev/null and b/public/terrain/19/858528/354009.terrain differ diff --git a/public/terrain/19/858528/354010.terrain b/public/terrain/19/858528/354010.terrain new file mode 100644 index 000000000..2851b8ef3 Binary files /dev/null and b/public/terrain/19/858528/354010.terrain differ diff --git a/public/terrain/19/858528/354011.terrain b/public/terrain/19/858528/354011.terrain new file mode 100644 index 000000000..5b900df48 Binary files /dev/null and b/public/terrain/19/858528/354011.terrain differ diff --git a/public/terrain/19/858528/354012.terrain b/public/terrain/19/858528/354012.terrain new file mode 100644 index 000000000..d85d635b2 Binary files /dev/null and b/public/terrain/19/858528/354012.terrain differ diff --git a/public/terrain/19/858528/354013.terrain b/public/terrain/19/858528/354013.terrain new file mode 100644 index 000000000..f7c461389 Binary files /dev/null and b/public/terrain/19/858528/354013.terrain differ diff --git a/public/terrain/19/858528/354014.terrain b/public/terrain/19/858528/354014.terrain new file mode 100644 index 000000000..988fce410 Binary files /dev/null and b/public/terrain/19/858528/354014.terrain differ diff --git a/public/terrain/19/858528/354015.terrain b/public/terrain/19/858528/354015.terrain new file mode 100644 index 000000000..0eb58ebca Binary files /dev/null and b/public/terrain/19/858528/354015.terrain differ diff --git a/public/terrain/19/858528/354016.terrain b/public/terrain/19/858528/354016.terrain new file mode 100644 index 000000000..e489bfc07 Binary files /dev/null and b/public/terrain/19/858528/354016.terrain differ diff --git a/public/terrain/19/858528/354017.terrain b/public/terrain/19/858528/354017.terrain new file mode 100644 index 000000000..a44ba1e0b Binary files /dev/null and b/public/terrain/19/858528/354017.terrain differ diff --git a/public/terrain/19/858528/354018.terrain b/public/terrain/19/858528/354018.terrain new file mode 100644 index 000000000..7618f027e Binary files /dev/null and b/public/terrain/19/858528/354018.terrain differ diff --git a/public/terrain/19/858528/354019.terrain b/public/terrain/19/858528/354019.terrain new file mode 100644 index 000000000..6740c906c Binary files /dev/null and b/public/terrain/19/858528/354019.terrain differ diff --git a/public/terrain/19/858528/354020.terrain b/public/terrain/19/858528/354020.terrain new file mode 100644 index 000000000..72f259d2e Binary files /dev/null and b/public/terrain/19/858528/354020.terrain differ diff --git a/public/terrain/19/858528/354021.terrain b/public/terrain/19/858528/354021.terrain new file mode 100644 index 000000000..8570642f1 Binary files /dev/null and b/public/terrain/19/858528/354021.terrain differ diff --git a/public/terrain/19/858528/354022.terrain b/public/terrain/19/858528/354022.terrain new file mode 100644 index 000000000..ec2532179 Binary files /dev/null and b/public/terrain/19/858528/354022.terrain differ diff --git a/public/terrain/19/858528/354023.terrain b/public/terrain/19/858528/354023.terrain new file mode 100644 index 000000000..93cd78525 Binary files /dev/null and b/public/terrain/19/858528/354023.terrain differ diff --git a/public/terrain/19/858528/354024.terrain b/public/terrain/19/858528/354024.terrain new file mode 100644 index 000000000..42a148fbc Binary files /dev/null and b/public/terrain/19/858528/354024.terrain differ diff --git a/public/terrain/19/858528/354025.terrain b/public/terrain/19/858528/354025.terrain new file mode 100644 index 000000000..b6e45f8ab Binary files /dev/null and b/public/terrain/19/858528/354025.terrain differ diff --git a/public/terrain/19/858528/354026.terrain b/public/terrain/19/858528/354026.terrain new file mode 100644 index 000000000..148137db3 Binary files /dev/null and b/public/terrain/19/858528/354026.terrain differ diff --git a/public/terrain/19/858528/354027.terrain b/public/terrain/19/858528/354027.terrain new file mode 100644 index 000000000..49a6675c3 Binary files /dev/null and b/public/terrain/19/858528/354027.terrain differ diff --git a/public/terrain/19/858528/354028.terrain b/public/terrain/19/858528/354028.terrain new file mode 100644 index 000000000..511ae1f6c Binary files /dev/null and b/public/terrain/19/858528/354028.terrain differ diff --git a/public/terrain/19/858528/354029.terrain b/public/terrain/19/858528/354029.terrain new file mode 100644 index 000000000..de0286651 Binary files /dev/null and b/public/terrain/19/858528/354029.terrain differ diff --git a/public/terrain/19/858528/354030.terrain b/public/terrain/19/858528/354030.terrain new file mode 100644 index 000000000..7d06b6015 Binary files /dev/null and b/public/terrain/19/858528/354030.terrain differ diff --git a/public/terrain/19/858528/354031.terrain b/public/terrain/19/858528/354031.terrain new file mode 100644 index 000000000..f2a698491 Binary files /dev/null and b/public/terrain/19/858528/354031.terrain differ diff --git a/public/terrain/19/858528/354032.terrain b/public/terrain/19/858528/354032.terrain new file mode 100644 index 000000000..a690d6ddd Binary files /dev/null and b/public/terrain/19/858528/354032.terrain differ diff --git a/public/terrain/19/858528/354033.terrain b/public/terrain/19/858528/354033.terrain new file mode 100644 index 000000000..00f0dc1c1 Binary files /dev/null and b/public/terrain/19/858528/354033.terrain differ diff --git a/public/terrain/19/858528/354034.terrain b/public/terrain/19/858528/354034.terrain new file mode 100644 index 000000000..1740ef02b Binary files /dev/null and b/public/terrain/19/858528/354034.terrain differ diff --git a/public/terrain/19/858528/354035.terrain b/public/terrain/19/858528/354035.terrain new file mode 100644 index 000000000..694d60b40 Binary files /dev/null and b/public/terrain/19/858528/354035.terrain differ diff --git a/public/terrain/19/858528/354036.terrain b/public/terrain/19/858528/354036.terrain new file mode 100644 index 000000000..2971239ed Binary files /dev/null and b/public/terrain/19/858528/354036.terrain differ diff --git a/public/terrain/19/858528/354037.terrain b/public/terrain/19/858528/354037.terrain new file mode 100644 index 000000000..2bc5336ed Binary files /dev/null and b/public/terrain/19/858528/354037.terrain differ diff --git a/public/terrain/19/858528/354038.terrain b/public/terrain/19/858528/354038.terrain new file mode 100644 index 000000000..e677a4cdb Binary files /dev/null and b/public/terrain/19/858528/354038.terrain differ diff --git a/public/terrain/19/858528/354039.terrain b/public/terrain/19/858528/354039.terrain new file mode 100644 index 000000000..d90f00a63 Binary files /dev/null and b/public/terrain/19/858528/354039.terrain differ diff --git a/public/terrain/19/858528/354040.terrain b/public/terrain/19/858528/354040.terrain new file mode 100644 index 000000000..df29cd299 Binary files /dev/null and b/public/terrain/19/858528/354040.terrain differ diff --git a/public/terrain/19/858528/354041.terrain b/public/terrain/19/858528/354041.terrain new file mode 100644 index 000000000..f937e2ab9 Binary files /dev/null and b/public/terrain/19/858528/354041.terrain differ diff --git a/public/terrain/19/858528/354042.terrain b/public/terrain/19/858528/354042.terrain new file mode 100644 index 000000000..ba6710312 Binary files /dev/null and b/public/terrain/19/858528/354042.terrain differ diff --git a/public/terrain/19/858528/354043.terrain b/public/terrain/19/858528/354043.terrain new file mode 100644 index 000000000..749ce0b96 Binary files /dev/null and b/public/terrain/19/858528/354043.terrain differ diff --git a/public/terrain/19/858528/354044.terrain b/public/terrain/19/858528/354044.terrain new file mode 100644 index 000000000..75b5bf622 Binary files /dev/null and b/public/terrain/19/858528/354044.terrain differ diff --git a/public/terrain/19/858528/354045.terrain b/public/terrain/19/858528/354045.terrain new file mode 100644 index 000000000..3085591a0 Binary files /dev/null and b/public/terrain/19/858528/354045.terrain differ diff --git a/public/terrain/19/858528/354046.terrain b/public/terrain/19/858528/354046.terrain new file mode 100644 index 000000000..6de0593e8 Binary files /dev/null and b/public/terrain/19/858528/354046.terrain differ diff --git a/public/terrain/19/858528/354047.terrain b/public/terrain/19/858528/354047.terrain new file mode 100644 index 000000000..1769aad0f Binary files /dev/null and b/public/terrain/19/858528/354047.terrain differ diff --git a/public/terrain/19/858528/354048.terrain b/public/terrain/19/858528/354048.terrain new file mode 100644 index 000000000..8a06b8017 Binary files /dev/null and b/public/terrain/19/858528/354048.terrain differ diff --git a/public/terrain/19/858528/354049.terrain b/public/terrain/19/858528/354049.terrain new file mode 100644 index 000000000..7b3296425 Binary files /dev/null and b/public/terrain/19/858528/354049.terrain differ diff --git a/public/terrain/19/858528/354050.terrain b/public/terrain/19/858528/354050.terrain new file mode 100644 index 000000000..8345222b8 Binary files /dev/null and b/public/terrain/19/858528/354050.terrain differ diff --git a/public/terrain/19/858528/354051.terrain b/public/terrain/19/858528/354051.terrain new file mode 100644 index 000000000..406020f5c Binary files /dev/null and b/public/terrain/19/858528/354051.terrain differ diff --git a/public/terrain/19/858528/354052.terrain b/public/terrain/19/858528/354052.terrain new file mode 100644 index 000000000..85d11eacd Binary files /dev/null and b/public/terrain/19/858528/354052.terrain differ diff --git a/public/terrain/19/858528/354053.terrain b/public/terrain/19/858528/354053.terrain new file mode 100644 index 000000000..7a169eaab Binary files /dev/null and b/public/terrain/19/858528/354053.terrain differ diff --git a/public/terrain/19/858528/354054.terrain b/public/terrain/19/858528/354054.terrain new file mode 100644 index 000000000..331574058 Binary files /dev/null and b/public/terrain/19/858528/354054.terrain differ diff --git a/public/terrain/19/858528/354055.terrain b/public/terrain/19/858528/354055.terrain new file mode 100644 index 000000000..c61b7ed98 Binary files /dev/null and b/public/terrain/19/858528/354055.terrain differ diff --git a/public/terrain/19/858528/354056.terrain b/public/terrain/19/858528/354056.terrain new file mode 100644 index 000000000..8ded41192 Binary files /dev/null and b/public/terrain/19/858528/354056.terrain differ diff --git a/public/terrain/19/858528/354057.terrain b/public/terrain/19/858528/354057.terrain new file mode 100644 index 000000000..1255bfcf9 Binary files /dev/null and b/public/terrain/19/858528/354057.terrain differ diff --git a/public/terrain/19/858528/354058.terrain b/public/terrain/19/858528/354058.terrain new file mode 100644 index 000000000..5ebf75427 Binary files /dev/null and b/public/terrain/19/858528/354058.terrain differ diff --git a/public/terrain/19/858528/354059.terrain b/public/terrain/19/858528/354059.terrain new file mode 100644 index 000000000..eb3d05a4b Binary files /dev/null and b/public/terrain/19/858528/354059.terrain differ diff --git a/public/terrain/19/858529/353743.terrain b/public/terrain/19/858529/353743.terrain new file mode 100644 index 000000000..893838e3a Binary files /dev/null and b/public/terrain/19/858529/353743.terrain differ diff --git a/public/terrain/19/858529/353744.terrain b/public/terrain/19/858529/353744.terrain new file mode 100644 index 000000000..cf3120a9e Binary files /dev/null and b/public/terrain/19/858529/353744.terrain differ diff --git a/public/terrain/19/858529/353745.terrain b/public/terrain/19/858529/353745.terrain new file mode 100644 index 000000000..a0a3fd152 Binary files /dev/null and b/public/terrain/19/858529/353745.terrain differ diff --git a/public/terrain/19/858529/353746.terrain b/public/terrain/19/858529/353746.terrain new file mode 100644 index 000000000..a014beca7 Binary files /dev/null and b/public/terrain/19/858529/353746.terrain differ diff --git a/public/terrain/19/858529/353747.terrain b/public/terrain/19/858529/353747.terrain new file mode 100644 index 000000000..76214cfe9 Binary files /dev/null and b/public/terrain/19/858529/353747.terrain differ diff --git a/public/terrain/19/858529/353748.terrain b/public/terrain/19/858529/353748.terrain new file mode 100644 index 000000000..91c165d28 Binary files /dev/null and b/public/terrain/19/858529/353748.terrain differ diff --git a/public/terrain/19/858529/353749.terrain b/public/terrain/19/858529/353749.terrain new file mode 100644 index 000000000..c50d91449 Binary files /dev/null and b/public/terrain/19/858529/353749.terrain differ diff --git a/public/terrain/19/858529/353750.terrain b/public/terrain/19/858529/353750.terrain new file mode 100644 index 000000000..c31186aab Binary files /dev/null and b/public/terrain/19/858529/353750.terrain differ diff --git a/public/terrain/19/858529/353751.terrain b/public/terrain/19/858529/353751.terrain new file mode 100644 index 000000000..ef52003c5 Binary files /dev/null and b/public/terrain/19/858529/353751.terrain differ diff --git a/public/terrain/19/858529/353752.terrain b/public/terrain/19/858529/353752.terrain new file mode 100644 index 000000000..87d85e251 Binary files /dev/null and b/public/terrain/19/858529/353752.terrain differ diff --git a/public/terrain/19/858529/353753.terrain b/public/terrain/19/858529/353753.terrain new file mode 100644 index 000000000..fd36324b1 Binary files /dev/null and b/public/terrain/19/858529/353753.terrain differ diff --git a/public/terrain/19/858529/353754.terrain b/public/terrain/19/858529/353754.terrain new file mode 100644 index 000000000..7f9b80d96 Binary files /dev/null and b/public/terrain/19/858529/353754.terrain differ diff --git a/public/terrain/19/858529/353755.terrain b/public/terrain/19/858529/353755.terrain new file mode 100644 index 000000000..af3177341 Binary files /dev/null and b/public/terrain/19/858529/353755.terrain differ diff --git a/public/terrain/19/858529/353756.terrain b/public/terrain/19/858529/353756.terrain new file mode 100644 index 000000000..87e2d1ced Binary files /dev/null and b/public/terrain/19/858529/353756.terrain differ diff --git a/public/terrain/19/858529/353757.terrain b/public/terrain/19/858529/353757.terrain new file mode 100644 index 000000000..bf40b4b64 Binary files /dev/null and b/public/terrain/19/858529/353757.terrain differ diff --git a/public/terrain/19/858529/353758.terrain b/public/terrain/19/858529/353758.terrain new file mode 100644 index 000000000..82ef0101d Binary files /dev/null and b/public/terrain/19/858529/353758.terrain differ diff --git a/public/terrain/19/858529/353759.terrain b/public/terrain/19/858529/353759.terrain new file mode 100644 index 000000000..4f76c5c47 Binary files /dev/null and b/public/terrain/19/858529/353759.terrain differ diff --git a/public/terrain/19/858529/353760.terrain b/public/terrain/19/858529/353760.terrain new file mode 100644 index 000000000..364612996 Binary files /dev/null and b/public/terrain/19/858529/353760.terrain differ diff --git a/public/terrain/19/858529/353761.terrain b/public/terrain/19/858529/353761.terrain new file mode 100644 index 000000000..ddfd1a2cd Binary files /dev/null and b/public/terrain/19/858529/353761.terrain differ diff --git a/public/terrain/19/858529/353762.terrain b/public/terrain/19/858529/353762.terrain new file mode 100644 index 000000000..7f49debe4 Binary files /dev/null and b/public/terrain/19/858529/353762.terrain differ diff --git a/public/terrain/19/858529/353763.terrain b/public/terrain/19/858529/353763.terrain new file mode 100644 index 000000000..c688f8653 Binary files /dev/null and b/public/terrain/19/858529/353763.terrain differ diff --git a/public/terrain/19/858529/353764.terrain b/public/terrain/19/858529/353764.terrain new file mode 100644 index 000000000..f6b3c1b14 Binary files /dev/null and b/public/terrain/19/858529/353764.terrain differ diff --git a/public/terrain/19/858529/353765.terrain b/public/terrain/19/858529/353765.terrain new file mode 100644 index 000000000..6e9871f0e Binary files /dev/null and b/public/terrain/19/858529/353765.terrain differ diff --git a/public/terrain/19/858529/353766.terrain b/public/terrain/19/858529/353766.terrain new file mode 100644 index 000000000..66d2c484b Binary files /dev/null and b/public/terrain/19/858529/353766.terrain differ diff --git a/public/terrain/19/858529/353767.terrain b/public/terrain/19/858529/353767.terrain new file mode 100644 index 000000000..d5bdec58b Binary files /dev/null and b/public/terrain/19/858529/353767.terrain differ diff --git a/public/terrain/19/858529/353768.terrain b/public/terrain/19/858529/353768.terrain new file mode 100644 index 000000000..d68be9eae Binary files /dev/null and b/public/terrain/19/858529/353768.terrain differ diff --git a/public/terrain/19/858529/353769.terrain b/public/terrain/19/858529/353769.terrain new file mode 100644 index 000000000..18d3332e7 Binary files /dev/null and b/public/terrain/19/858529/353769.terrain differ diff --git a/public/terrain/19/858529/353770.terrain b/public/terrain/19/858529/353770.terrain new file mode 100644 index 000000000..2108ccafd Binary files /dev/null and b/public/terrain/19/858529/353770.terrain differ diff --git a/public/terrain/19/858529/353771.terrain b/public/terrain/19/858529/353771.terrain new file mode 100644 index 000000000..6e43c73f0 Binary files /dev/null and b/public/terrain/19/858529/353771.terrain differ diff --git a/public/terrain/19/858529/353772.terrain b/public/terrain/19/858529/353772.terrain new file mode 100644 index 000000000..49f290df6 Binary files /dev/null and b/public/terrain/19/858529/353772.terrain differ diff --git a/public/terrain/19/858529/353773.terrain b/public/terrain/19/858529/353773.terrain new file mode 100644 index 000000000..07cbf2f46 Binary files /dev/null and b/public/terrain/19/858529/353773.terrain differ diff --git a/public/terrain/19/858529/353774.terrain b/public/terrain/19/858529/353774.terrain new file mode 100644 index 000000000..6f1bac172 Binary files /dev/null and b/public/terrain/19/858529/353774.terrain differ diff --git a/public/terrain/19/858529/353775.terrain b/public/terrain/19/858529/353775.terrain new file mode 100644 index 000000000..a5b132021 Binary files /dev/null and b/public/terrain/19/858529/353775.terrain differ diff --git a/public/terrain/19/858529/353776.terrain b/public/terrain/19/858529/353776.terrain new file mode 100644 index 000000000..6e6dc2788 Binary files /dev/null and b/public/terrain/19/858529/353776.terrain differ diff --git a/public/terrain/19/858529/353777.terrain b/public/terrain/19/858529/353777.terrain new file mode 100644 index 000000000..c4e3c8ea4 Binary files /dev/null and b/public/terrain/19/858529/353777.terrain differ diff --git a/public/terrain/19/858529/353778.terrain b/public/terrain/19/858529/353778.terrain new file mode 100644 index 000000000..53708fe9e Binary files /dev/null and b/public/terrain/19/858529/353778.terrain differ diff --git a/public/terrain/19/858529/353779.terrain b/public/terrain/19/858529/353779.terrain new file mode 100644 index 000000000..f25fffe0f Binary files /dev/null and b/public/terrain/19/858529/353779.terrain differ diff --git a/public/terrain/19/858529/353780.terrain b/public/terrain/19/858529/353780.terrain new file mode 100644 index 000000000..a963a063c Binary files /dev/null and b/public/terrain/19/858529/353780.terrain differ diff --git a/public/terrain/19/858529/353781.terrain b/public/terrain/19/858529/353781.terrain new file mode 100644 index 000000000..b459a9e04 Binary files /dev/null and b/public/terrain/19/858529/353781.terrain differ diff --git a/public/terrain/19/858529/353782.terrain b/public/terrain/19/858529/353782.terrain new file mode 100644 index 000000000..dfc84e371 Binary files /dev/null and b/public/terrain/19/858529/353782.terrain differ diff --git a/public/terrain/19/858529/353783.terrain b/public/terrain/19/858529/353783.terrain new file mode 100644 index 000000000..8b1509531 Binary files /dev/null and b/public/terrain/19/858529/353783.terrain differ diff --git a/public/terrain/19/858529/353784.terrain b/public/terrain/19/858529/353784.terrain new file mode 100644 index 000000000..9648c30c3 Binary files /dev/null and b/public/terrain/19/858529/353784.terrain differ diff --git a/public/terrain/19/858529/353785.terrain b/public/terrain/19/858529/353785.terrain new file mode 100644 index 000000000..b0dcf6980 Binary files /dev/null and b/public/terrain/19/858529/353785.terrain differ diff --git a/public/terrain/19/858529/353786.terrain b/public/terrain/19/858529/353786.terrain new file mode 100644 index 000000000..7c0fc2872 Binary files /dev/null and b/public/terrain/19/858529/353786.terrain differ diff --git a/public/terrain/19/858529/353787.terrain b/public/terrain/19/858529/353787.terrain new file mode 100644 index 000000000..1a6ee68b5 Binary files /dev/null and b/public/terrain/19/858529/353787.terrain differ diff --git a/public/terrain/19/858529/353788.terrain b/public/terrain/19/858529/353788.terrain new file mode 100644 index 000000000..f7a569a2a Binary files /dev/null and b/public/terrain/19/858529/353788.terrain differ diff --git a/public/terrain/19/858529/353789.terrain b/public/terrain/19/858529/353789.terrain new file mode 100644 index 000000000..5b0c58eae Binary files /dev/null and b/public/terrain/19/858529/353789.terrain differ diff --git a/public/terrain/19/858529/353790.terrain b/public/terrain/19/858529/353790.terrain new file mode 100644 index 000000000..78f48e862 Binary files /dev/null and b/public/terrain/19/858529/353790.terrain differ diff --git a/public/terrain/19/858529/353791.terrain b/public/terrain/19/858529/353791.terrain new file mode 100644 index 000000000..a35cb6803 Binary files /dev/null and b/public/terrain/19/858529/353791.terrain differ diff --git a/public/terrain/19/858529/353792.terrain b/public/terrain/19/858529/353792.terrain new file mode 100644 index 000000000..e70bc7ce7 Binary files /dev/null and b/public/terrain/19/858529/353792.terrain differ diff --git a/public/terrain/19/858529/353793.terrain b/public/terrain/19/858529/353793.terrain new file mode 100644 index 000000000..ebea629cc Binary files /dev/null and b/public/terrain/19/858529/353793.terrain differ diff --git a/public/terrain/19/858529/353794.terrain b/public/terrain/19/858529/353794.terrain new file mode 100644 index 000000000..a761e9cb0 Binary files /dev/null and b/public/terrain/19/858529/353794.terrain differ diff --git a/public/terrain/19/858529/353795.terrain b/public/terrain/19/858529/353795.terrain new file mode 100644 index 000000000..97d9a61cc Binary files /dev/null and b/public/terrain/19/858529/353795.terrain differ diff --git a/public/terrain/19/858529/353796.terrain b/public/terrain/19/858529/353796.terrain new file mode 100644 index 000000000..da5f45271 Binary files /dev/null and b/public/terrain/19/858529/353796.terrain differ diff --git a/public/terrain/19/858529/353797.terrain b/public/terrain/19/858529/353797.terrain new file mode 100644 index 000000000..987b47235 Binary files /dev/null and b/public/terrain/19/858529/353797.terrain differ diff --git a/public/terrain/19/858529/353798.terrain b/public/terrain/19/858529/353798.terrain new file mode 100644 index 000000000..5e4dd9690 Binary files /dev/null and b/public/terrain/19/858529/353798.terrain differ diff --git a/public/terrain/19/858529/353799.terrain b/public/terrain/19/858529/353799.terrain new file mode 100644 index 000000000..93bb40887 Binary files /dev/null and b/public/terrain/19/858529/353799.terrain differ diff --git a/public/terrain/19/858529/353800.terrain b/public/terrain/19/858529/353800.terrain new file mode 100644 index 000000000..c4b1e5c09 Binary files /dev/null and b/public/terrain/19/858529/353800.terrain differ diff --git a/public/terrain/19/858529/353801.terrain b/public/terrain/19/858529/353801.terrain new file mode 100644 index 000000000..6cd496345 Binary files /dev/null and b/public/terrain/19/858529/353801.terrain differ diff --git a/public/terrain/19/858529/353802.terrain b/public/terrain/19/858529/353802.terrain new file mode 100644 index 000000000..5d33e78c0 Binary files /dev/null and b/public/terrain/19/858529/353802.terrain differ diff --git a/public/terrain/19/858529/353803.terrain b/public/terrain/19/858529/353803.terrain new file mode 100644 index 000000000..98547ef78 Binary files /dev/null and b/public/terrain/19/858529/353803.terrain differ diff --git a/public/terrain/19/858529/353804.terrain b/public/terrain/19/858529/353804.terrain new file mode 100644 index 000000000..2dbee74ca Binary files /dev/null and b/public/terrain/19/858529/353804.terrain differ diff --git a/public/terrain/19/858529/353805.terrain b/public/terrain/19/858529/353805.terrain new file mode 100644 index 000000000..59de34596 Binary files /dev/null and b/public/terrain/19/858529/353805.terrain differ diff --git a/public/terrain/19/858529/353806.terrain b/public/terrain/19/858529/353806.terrain new file mode 100644 index 000000000..4a7d8e594 Binary files /dev/null and b/public/terrain/19/858529/353806.terrain differ diff --git a/public/terrain/19/858529/353807.terrain b/public/terrain/19/858529/353807.terrain new file mode 100644 index 000000000..15cf336b0 Binary files /dev/null and b/public/terrain/19/858529/353807.terrain differ diff --git a/public/terrain/19/858529/353808.terrain b/public/terrain/19/858529/353808.terrain new file mode 100644 index 000000000..d7bd475da Binary files /dev/null and b/public/terrain/19/858529/353808.terrain differ diff --git a/public/terrain/19/858529/353809.terrain b/public/terrain/19/858529/353809.terrain new file mode 100644 index 000000000..f183a99f6 Binary files /dev/null and b/public/terrain/19/858529/353809.terrain differ diff --git a/public/terrain/19/858529/353810.terrain b/public/terrain/19/858529/353810.terrain new file mode 100644 index 000000000..e3a07d62c Binary files /dev/null and b/public/terrain/19/858529/353810.terrain differ diff --git a/public/terrain/19/858529/353811.terrain b/public/terrain/19/858529/353811.terrain new file mode 100644 index 000000000..0634f762d Binary files /dev/null and b/public/terrain/19/858529/353811.terrain differ diff --git a/public/terrain/19/858529/353812.terrain b/public/terrain/19/858529/353812.terrain new file mode 100644 index 000000000..a924ad5d5 Binary files /dev/null and b/public/terrain/19/858529/353812.terrain differ diff --git a/public/terrain/19/858529/353813.terrain b/public/terrain/19/858529/353813.terrain new file mode 100644 index 000000000..b8473659d Binary files /dev/null and b/public/terrain/19/858529/353813.terrain differ diff --git a/public/terrain/19/858529/353814.terrain b/public/terrain/19/858529/353814.terrain new file mode 100644 index 000000000..5dd2310a0 Binary files /dev/null and b/public/terrain/19/858529/353814.terrain differ diff --git a/public/terrain/19/858529/353815.terrain b/public/terrain/19/858529/353815.terrain new file mode 100644 index 000000000..031100a3d Binary files /dev/null and b/public/terrain/19/858529/353815.terrain differ diff --git a/public/terrain/19/858529/353816.terrain b/public/terrain/19/858529/353816.terrain new file mode 100644 index 000000000..43afc8002 Binary files /dev/null and b/public/terrain/19/858529/353816.terrain differ diff --git a/public/terrain/19/858529/353817.terrain b/public/terrain/19/858529/353817.terrain new file mode 100644 index 000000000..79818cc25 Binary files /dev/null and b/public/terrain/19/858529/353817.terrain differ diff --git a/public/terrain/19/858529/353818.terrain b/public/terrain/19/858529/353818.terrain new file mode 100644 index 000000000..da2dc38fe Binary files /dev/null and b/public/terrain/19/858529/353818.terrain differ diff --git a/public/terrain/19/858529/353819.terrain b/public/terrain/19/858529/353819.terrain new file mode 100644 index 000000000..9d9c68c7d Binary files /dev/null and b/public/terrain/19/858529/353819.terrain differ diff --git a/public/terrain/19/858529/353820.terrain b/public/terrain/19/858529/353820.terrain new file mode 100644 index 000000000..a7fbc08e1 Binary files /dev/null and b/public/terrain/19/858529/353820.terrain differ diff --git a/public/terrain/19/858529/353821.terrain b/public/terrain/19/858529/353821.terrain new file mode 100644 index 000000000..848b21213 Binary files /dev/null and b/public/terrain/19/858529/353821.terrain differ diff --git a/public/terrain/19/858529/353822.terrain b/public/terrain/19/858529/353822.terrain new file mode 100644 index 000000000..9a93a6f53 Binary files /dev/null and b/public/terrain/19/858529/353822.terrain differ diff --git a/public/terrain/19/858529/353823.terrain b/public/terrain/19/858529/353823.terrain new file mode 100644 index 000000000..52f42d655 Binary files /dev/null and b/public/terrain/19/858529/353823.terrain differ diff --git a/public/terrain/19/858529/353824.terrain b/public/terrain/19/858529/353824.terrain new file mode 100644 index 000000000..7427aa41e Binary files /dev/null and b/public/terrain/19/858529/353824.terrain differ diff --git a/public/terrain/19/858529/353825.terrain b/public/terrain/19/858529/353825.terrain new file mode 100644 index 000000000..dc0c8c4c5 Binary files /dev/null and b/public/terrain/19/858529/353825.terrain differ diff --git a/public/terrain/19/858529/353826.terrain b/public/terrain/19/858529/353826.terrain new file mode 100644 index 000000000..b99ace147 Binary files /dev/null and b/public/terrain/19/858529/353826.terrain differ diff --git a/public/terrain/19/858529/353827.terrain b/public/terrain/19/858529/353827.terrain new file mode 100644 index 000000000..6e63569fd Binary files /dev/null and b/public/terrain/19/858529/353827.terrain differ diff --git a/public/terrain/19/858529/353828.terrain b/public/terrain/19/858529/353828.terrain new file mode 100644 index 000000000..d765d9a45 Binary files /dev/null and b/public/terrain/19/858529/353828.terrain differ diff --git a/public/terrain/19/858529/353829.terrain b/public/terrain/19/858529/353829.terrain new file mode 100644 index 000000000..96832b29e Binary files /dev/null and b/public/terrain/19/858529/353829.terrain differ diff --git a/public/terrain/19/858529/353830.terrain b/public/terrain/19/858529/353830.terrain new file mode 100644 index 000000000..ceb3d896b Binary files /dev/null and b/public/terrain/19/858529/353830.terrain differ diff --git a/public/terrain/19/858529/353831.terrain b/public/terrain/19/858529/353831.terrain new file mode 100644 index 000000000..9e361cdea Binary files /dev/null and b/public/terrain/19/858529/353831.terrain differ diff --git a/public/terrain/19/858529/353832.terrain b/public/terrain/19/858529/353832.terrain new file mode 100644 index 000000000..cf72e4164 Binary files /dev/null and b/public/terrain/19/858529/353832.terrain differ diff --git a/public/terrain/19/858529/353833.terrain b/public/terrain/19/858529/353833.terrain new file mode 100644 index 000000000..2487c2eaa Binary files /dev/null and b/public/terrain/19/858529/353833.terrain differ diff --git a/public/terrain/19/858529/353834.terrain b/public/terrain/19/858529/353834.terrain new file mode 100644 index 000000000..9052613c0 Binary files /dev/null and b/public/terrain/19/858529/353834.terrain differ diff --git a/public/terrain/19/858529/353835.terrain b/public/terrain/19/858529/353835.terrain new file mode 100644 index 000000000..b53724b01 Binary files /dev/null and b/public/terrain/19/858529/353835.terrain differ diff --git a/public/terrain/19/858529/353836.terrain b/public/terrain/19/858529/353836.terrain new file mode 100644 index 000000000..32158bc09 Binary files /dev/null and b/public/terrain/19/858529/353836.terrain differ diff --git a/public/terrain/19/858529/353837.terrain b/public/terrain/19/858529/353837.terrain new file mode 100644 index 000000000..98a5b4a23 Binary files /dev/null and b/public/terrain/19/858529/353837.terrain differ diff --git a/public/terrain/19/858529/353838.terrain b/public/terrain/19/858529/353838.terrain new file mode 100644 index 000000000..0f96e1aa7 Binary files /dev/null and b/public/terrain/19/858529/353838.terrain differ diff --git a/public/terrain/19/858529/353839.terrain b/public/terrain/19/858529/353839.terrain new file mode 100644 index 000000000..2c35b1f48 Binary files /dev/null and b/public/terrain/19/858529/353839.terrain differ diff --git a/public/terrain/19/858529/353840.terrain b/public/terrain/19/858529/353840.terrain new file mode 100644 index 000000000..5e3262377 Binary files /dev/null and b/public/terrain/19/858529/353840.terrain differ diff --git a/public/terrain/19/858529/353841.terrain b/public/terrain/19/858529/353841.terrain new file mode 100644 index 000000000..8e64b2456 Binary files /dev/null and b/public/terrain/19/858529/353841.terrain differ diff --git a/public/terrain/19/858529/353842.terrain b/public/terrain/19/858529/353842.terrain new file mode 100644 index 000000000..d975590a0 Binary files /dev/null and b/public/terrain/19/858529/353842.terrain differ diff --git a/public/terrain/19/858529/353843.terrain b/public/terrain/19/858529/353843.terrain new file mode 100644 index 000000000..79095dbb5 Binary files /dev/null and b/public/terrain/19/858529/353843.terrain differ diff --git a/public/terrain/19/858529/353844.terrain b/public/terrain/19/858529/353844.terrain new file mode 100644 index 000000000..bce9fc0b1 Binary files /dev/null and b/public/terrain/19/858529/353844.terrain differ diff --git a/public/terrain/19/858529/353845.terrain b/public/terrain/19/858529/353845.terrain new file mode 100644 index 000000000..3cd93287a Binary files /dev/null and b/public/terrain/19/858529/353845.terrain differ diff --git a/public/terrain/19/858529/353846.terrain b/public/terrain/19/858529/353846.terrain new file mode 100644 index 000000000..4129f58e7 Binary files /dev/null and b/public/terrain/19/858529/353846.terrain differ diff --git a/public/terrain/19/858529/353847.terrain b/public/terrain/19/858529/353847.terrain new file mode 100644 index 000000000..7f8acc49f Binary files /dev/null and b/public/terrain/19/858529/353847.terrain differ diff --git a/public/terrain/19/858529/353848.terrain b/public/terrain/19/858529/353848.terrain new file mode 100644 index 000000000..ea3acd60c Binary files /dev/null and b/public/terrain/19/858529/353848.terrain differ diff --git a/public/terrain/19/858529/353849.terrain b/public/terrain/19/858529/353849.terrain new file mode 100644 index 000000000..a889748ce Binary files /dev/null and b/public/terrain/19/858529/353849.terrain differ diff --git a/public/terrain/19/858529/353850.terrain b/public/terrain/19/858529/353850.terrain new file mode 100644 index 000000000..420b3addf Binary files /dev/null and b/public/terrain/19/858529/353850.terrain differ diff --git a/public/terrain/19/858529/353851.terrain b/public/terrain/19/858529/353851.terrain new file mode 100644 index 000000000..f5674de24 Binary files /dev/null and b/public/terrain/19/858529/353851.terrain differ diff --git a/public/terrain/19/858529/353852.terrain b/public/terrain/19/858529/353852.terrain new file mode 100644 index 000000000..98b0ace91 Binary files /dev/null and b/public/terrain/19/858529/353852.terrain differ diff --git a/public/terrain/19/858529/353853.terrain b/public/terrain/19/858529/353853.terrain new file mode 100644 index 000000000..a55445ac8 Binary files /dev/null and b/public/terrain/19/858529/353853.terrain differ diff --git a/public/terrain/19/858529/353854.terrain b/public/terrain/19/858529/353854.terrain new file mode 100644 index 000000000..4537ede7b Binary files /dev/null and b/public/terrain/19/858529/353854.terrain differ diff --git a/public/terrain/19/858529/353855.terrain b/public/terrain/19/858529/353855.terrain new file mode 100644 index 000000000..d7396c5e6 Binary files /dev/null and b/public/terrain/19/858529/353855.terrain differ diff --git a/public/terrain/19/858529/353856.terrain b/public/terrain/19/858529/353856.terrain new file mode 100644 index 000000000..eb40b86ef Binary files /dev/null and b/public/terrain/19/858529/353856.terrain differ diff --git a/public/terrain/19/858529/353857.terrain b/public/terrain/19/858529/353857.terrain new file mode 100644 index 000000000..d6e0b2295 Binary files /dev/null and b/public/terrain/19/858529/353857.terrain differ diff --git a/public/terrain/19/858529/353858.terrain b/public/terrain/19/858529/353858.terrain new file mode 100644 index 000000000..a2ace8538 Binary files /dev/null and b/public/terrain/19/858529/353858.terrain differ diff --git a/public/terrain/19/858529/353859.terrain b/public/terrain/19/858529/353859.terrain new file mode 100644 index 000000000..a01092af1 Binary files /dev/null and b/public/terrain/19/858529/353859.terrain differ diff --git a/public/terrain/19/858529/353860.terrain b/public/terrain/19/858529/353860.terrain new file mode 100644 index 000000000..840b3b533 Binary files /dev/null and b/public/terrain/19/858529/353860.terrain differ diff --git a/public/terrain/19/858529/353861.terrain b/public/terrain/19/858529/353861.terrain new file mode 100644 index 000000000..d109cd40e Binary files /dev/null and b/public/terrain/19/858529/353861.terrain differ diff --git a/public/terrain/19/858529/353862.terrain b/public/terrain/19/858529/353862.terrain new file mode 100644 index 000000000..66eef0645 Binary files /dev/null and b/public/terrain/19/858529/353862.terrain differ diff --git a/public/terrain/19/858529/353863.terrain b/public/terrain/19/858529/353863.terrain new file mode 100644 index 000000000..b55b9d229 Binary files /dev/null and b/public/terrain/19/858529/353863.terrain differ diff --git a/public/terrain/19/858529/353864.terrain b/public/terrain/19/858529/353864.terrain new file mode 100644 index 000000000..979fcc081 Binary files /dev/null and b/public/terrain/19/858529/353864.terrain differ diff --git a/public/terrain/19/858529/353865.terrain b/public/terrain/19/858529/353865.terrain new file mode 100644 index 000000000..cf0fa48b1 Binary files /dev/null and b/public/terrain/19/858529/353865.terrain differ diff --git a/public/terrain/19/858529/353866.terrain b/public/terrain/19/858529/353866.terrain new file mode 100644 index 000000000..0a0fc1c1e Binary files /dev/null and b/public/terrain/19/858529/353866.terrain differ diff --git a/public/terrain/19/858529/353867.terrain b/public/terrain/19/858529/353867.terrain new file mode 100644 index 000000000..22c55f8e4 Binary files /dev/null and b/public/terrain/19/858529/353867.terrain differ diff --git a/public/terrain/19/858529/353868.terrain b/public/terrain/19/858529/353868.terrain new file mode 100644 index 000000000..39e39fe1a Binary files /dev/null and b/public/terrain/19/858529/353868.terrain differ diff --git a/public/terrain/19/858529/353869.terrain b/public/terrain/19/858529/353869.terrain new file mode 100644 index 000000000..c1cf4bd1e Binary files /dev/null and b/public/terrain/19/858529/353869.terrain differ diff --git a/public/terrain/19/858529/353870.terrain b/public/terrain/19/858529/353870.terrain new file mode 100644 index 000000000..c42b149d7 Binary files /dev/null and b/public/terrain/19/858529/353870.terrain differ diff --git a/public/terrain/19/858529/353871.terrain b/public/terrain/19/858529/353871.terrain new file mode 100644 index 000000000..f365c1b0a Binary files /dev/null and b/public/terrain/19/858529/353871.terrain differ diff --git a/public/terrain/19/858529/353872.terrain b/public/terrain/19/858529/353872.terrain new file mode 100644 index 000000000..8bc82e07d Binary files /dev/null and b/public/terrain/19/858529/353872.terrain differ diff --git a/public/terrain/19/858529/353873.terrain b/public/terrain/19/858529/353873.terrain new file mode 100644 index 000000000..d31a26d5b Binary files /dev/null and b/public/terrain/19/858529/353873.terrain differ diff --git a/public/terrain/19/858529/353874.terrain b/public/terrain/19/858529/353874.terrain new file mode 100644 index 000000000..555fd92e8 Binary files /dev/null and b/public/terrain/19/858529/353874.terrain differ diff --git a/public/terrain/19/858529/353875.terrain b/public/terrain/19/858529/353875.terrain new file mode 100644 index 000000000..f3e59b100 Binary files /dev/null and b/public/terrain/19/858529/353875.terrain differ diff --git a/public/terrain/19/858529/353876.terrain b/public/terrain/19/858529/353876.terrain new file mode 100644 index 000000000..410f79ab2 Binary files /dev/null and b/public/terrain/19/858529/353876.terrain differ diff --git a/public/terrain/19/858529/353877.terrain b/public/terrain/19/858529/353877.terrain new file mode 100644 index 000000000..20f565854 Binary files /dev/null and b/public/terrain/19/858529/353877.terrain differ diff --git a/public/terrain/19/858529/353878.terrain b/public/terrain/19/858529/353878.terrain new file mode 100644 index 000000000..42bf30d08 Binary files /dev/null and b/public/terrain/19/858529/353878.terrain differ diff --git a/public/terrain/19/858529/353879.terrain b/public/terrain/19/858529/353879.terrain new file mode 100644 index 000000000..4f30dc534 Binary files /dev/null and b/public/terrain/19/858529/353879.terrain differ diff --git a/public/terrain/19/858529/353880.terrain b/public/terrain/19/858529/353880.terrain new file mode 100644 index 000000000..99c0b8196 Binary files /dev/null and b/public/terrain/19/858529/353880.terrain differ diff --git a/public/terrain/19/858529/353881.terrain b/public/terrain/19/858529/353881.terrain new file mode 100644 index 000000000..2e62a260c Binary files /dev/null and b/public/terrain/19/858529/353881.terrain differ diff --git a/public/terrain/19/858529/353882.terrain b/public/terrain/19/858529/353882.terrain new file mode 100644 index 000000000..18068954b Binary files /dev/null and b/public/terrain/19/858529/353882.terrain differ diff --git a/public/terrain/19/858529/353883.terrain b/public/terrain/19/858529/353883.terrain new file mode 100644 index 000000000..7ffe2b3ab Binary files /dev/null and b/public/terrain/19/858529/353883.terrain differ diff --git a/public/terrain/19/858529/353884.terrain b/public/terrain/19/858529/353884.terrain new file mode 100644 index 000000000..956c6fa58 Binary files /dev/null and b/public/terrain/19/858529/353884.terrain differ diff --git a/public/terrain/19/858529/353885.terrain b/public/terrain/19/858529/353885.terrain new file mode 100644 index 000000000..12e72ee71 Binary files /dev/null and b/public/terrain/19/858529/353885.terrain differ diff --git a/public/terrain/19/858529/353886.terrain b/public/terrain/19/858529/353886.terrain new file mode 100644 index 000000000..123fea771 Binary files /dev/null and b/public/terrain/19/858529/353886.terrain differ diff --git a/public/terrain/19/858529/353887.terrain b/public/terrain/19/858529/353887.terrain new file mode 100644 index 000000000..8b148e641 Binary files /dev/null and b/public/terrain/19/858529/353887.terrain differ diff --git a/public/terrain/19/858529/353888.terrain b/public/terrain/19/858529/353888.terrain new file mode 100644 index 000000000..73fe6b3b9 Binary files /dev/null and b/public/terrain/19/858529/353888.terrain differ diff --git a/public/terrain/19/858529/353889.terrain b/public/terrain/19/858529/353889.terrain new file mode 100644 index 000000000..b918406ea Binary files /dev/null and b/public/terrain/19/858529/353889.terrain differ diff --git a/public/terrain/19/858529/353890.terrain b/public/terrain/19/858529/353890.terrain new file mode 100644 index 000000000..c088f8273 Binary files /dev/null and b/public/terrain/19/858529/353890.terrain differ diff --git a/public/terrain/19/858529/353891.terrain b/public/terrain/19/858529/353891.terrain new file mode 100644 index 000000000..f20446cc7 Binary files /dev/null and b/public/terrain/19/858529/353891.terrain differ diff --git a/public/terrain/19/858529/353892.terrain b/public/terrain/19/858529/353892.terrain new file mode 100644 index 000000000..bcfbbb610 Binary files /dev/null and b/public/terrain/19/858529/353892.terrain differ diff --git a/public/terrain/19/858529/353893.terrain b/public/terrain/19/858529/353893.terrain new file mode 100644 index 000000000..73e9fe46d Binary files /dev/null and b/public/terrain/19/858529/353893.terrain differ diff --git a/public/terrain/19/858529/353894.terrain b/public/terrain/19/858529/353894.terrain new file mode 100644 index 000000000..f47225dbf Binary files /dev/null and b/public/terrain/19/858529/353894.terrain differ diff --git a/public/terrain/19/858529/353895.terrain b/public/terrain/19/858529/353895.terrain new file mode 100644 index 000000000..322c22921 Binary files /dev/null and b/public/terrain/19/858529/353895.terrain differ diff --git a/public/terrain/19/858529/353896.terrain b/public/terrain/19/858529/353896.terrain new file mode 100644 index 000000000..7ab54c402 Binary files /dev/null and b/public/terrain/19/858529/353896.terrain differ diff --git a/public/terrain/19/858529/353897.terrain b/public/terrain/19/858529/353897.terrain new file mode 100644 index 000000000..71c679bb6 Binary files /dev/null and b/public/terrain/19/858529/353897.terrain differ diff --git a/public/terrain/19/858529/353898.terrain b/public/terrain/19/858529/353898.terrain new file mode 100644 index 000000000..7e11ff795 Binary files /dev/null and b/public/terrain/19/858529/353898.terrain differ diff --git a/public/terrain/19/858529/353899.terrain b/public/terrain/19/858529/353899.terrain new file mode 100644 index 000000000..5ed410f5e Binary files /dev/null and b/public/terrain/19/858529/353899.terrain differ diff --git a/public/terrain/19/858529/353900.terrain b/public/terrain/19/858529/353900.terrain new file mode 100644 index 000000000..7d3acebef Binary files /dev/null and b/public/terrain/19/858529/353900.terrain differ diff --git a/public/terrain/19/858529/353901.terrain b/public/terrain/19/858529/353901.terrain new file mode 100644 index 000000000..68cbb031a Binary files /dev/null and b/public/terrain/19/858529/353901.terrain differ diff --git a/public/terrain/19/858529/353902.terrain b/public/terrain/19/858529/353902.terrain new file mode 100644 index 000000000..29060e9e1 Binary files /dev/null and b/public/terrain/19/858529/353902.terrain differ diff --git a/public/terrain/19/858529/353903.terrain b/public/terrain/19/858529/353903.terrain new file mode 100644 index 000000000..51f60468f Binary files /dev/null and b/public/terrain/19/858529/353903.terrain differ diff --git a/public/terrain/19/858529/353904.terrain b/public/terrain/19/858529/353904.terrain new file mode 100644 index 000000000..2a4f2e2f8 Binary files /dev/null and b/public/terrain/19/858529/353904.terrain differ diff --git a/public/terrain/19/858529/353905.terrain b/public/terrain/19/858529/353905.terrain new file mode 100644 index 000000000..548f00c50 Binary files /dev/null and b/public/terrain/19/858529/353905.terrain differ diff --git a/public/terrain/19/858529/353906.terrain b/public/terrain/19/858529/353906.terrain new file mode 100644 index 000000000..eb14f3957 Binary files /dev/null and b/public/terrain/19/858529/353906.terrain differ diff --git a/public/terrain/19/858529/353907.terrain b/public/terrain/19/858529/353907.terrain new file mode 100644 index 000000000..e80c93aa6 Binary files /dev/null and b/public/terrain/19/858529/353907.terrain differ diff --git a/public/terrain/19/858529/353908.terrain b/public/terrain/19/858529/353908.terrain new file mode 100644 index 000000000..b76bb3bbf Binary files /dev/null and b/public/terrain/19/858529/353908.terrain differ diff --git a/public/terrain/19/858529/353909.terrain b/public/terrain/19/858529/353909.terrain new file mode 100644 index 000000000..701494f46 Binary files /dev/null and b/public/terrain/19/858529/353909.terrain differ diff --git a/public/terrain/19/858529/353910.terrain b/public/terrain/19/858529/353910.terrain new file mode 100644 index 000000000..0bbd157cc Binary files /dev/null and b/public/terrain/19/858529/353910.terrain differ diff --git a/public/terrain/19/858529/353911.terrain b/public/terrain/19/858529/353911.terrain new file mode 100644 index 000000000..dfb3e879e Binary files /dev/null and b/public/terrain/19/858529/353911.terrain differ diff --git a/public/terrain/19/858529/353912.terrain b/public/terrain/19/858529/353912.terrain new file mode 100644 index 000000000..3cb0a8f6d Binary files /dev/null and b/public/terrain/19/858529/353912.terrain differ diff --git a/public/terrain/19/858529/353913.terrain b/public/terrain/19/858529/353913.terrain new file mode 100644 index 000000000..44f8abfc3 Binary files /dev/null and b/public/terrain/19/858529/353913.terrain differ diff --git a/public/terrain/19/858529/353914.terrain b/public/terrain/19/858529/353914.terrain new file mode 100644 index 000000000..d3a58d6fd Binary files /dev/null and b/public/terrain/19/858529/353914.terrain differ diff --git a/public/terrain/19/858529/353915.terrain b/public/terrain/19/858529/353915.terrain new file mode 100644 index 000000000..66818a010 Binary files /dev/null and b/public/terrain/19/858529/353915.terrain differ diff --git a/public/terrain/19/858529/353916.terrain b/public/terrain/19/858529/353916.terrain new file mode 100644 index 000000000..552afcae9 Binary files /dev/null and b/public/terrain/19/858529/353916.terrain differ diff --git a/public/terrain/19/858529/353917.terrain b/public/terrain/19/858529/353917.terrain new file mode 100644 index 000000000..908500daa Binary files /dev/null and b/public/terrain/19/858529/353917.terrain differ diff --git a/public/terrain/19/858529/353918.terrain b/public/terrain/19/858529/353918.terrain new file mode 100644 index 000000000..000b8ad19 Binary files /dev/null and b/public/terrain/19/858529/353918.terrain differ diff --git a/public/terrain/19/858529/353919.terrain b/public/terrain/19/858529/353919.terrain new file mode 100644 index 000000000..781db1284 Binary files /dev/null and b/public/terrain/19/858529/353919.terrain differ diff --git a/public/terrain/19/858529/353920.terrain b/public/terrain/19/858529/353920.terrain new file mode 100644 index 000000000..47feb5970 Binary files /dev/null and b/public/terrain/19/858529/353920.terrain differ diff --git a/public/terrain/19/858529/353921.terrain b/public/terrain/19/858529/353921.terrain new file mode 100644 index 000000000..0e3987dee Binary files /dev/null and b/public/terrain/19/858529/353921.terrain differ diff --git a/public/terrain/19/858529/353922.terrain b/public/terrain/19/858529/353922.terrain new file mode 100644 index 000000000..c3ba4b31f Binary files /dev/null and b/public/terrain/19/858529/353922.terrain differ diff --git a/public/terrain/19/858529/353923.terrain b/public/terrain/19/858529/353923.terrain new file mode 100644 index 000000000..858992f67 Binary files /dev/null and b/public/terrain/19/858529/353923.terrain differ diff --git a/public/terrain/19/858529/353924.terrain b/public/terrain/19/858529/353924.terrain new file mode 100644 index 000000000..4a9b33a52 Binary files /dev/null and b/public/terrain/19/858529/353924.terrain differ diff --git a/public/terrain/19/858529/353925.terrain b/public/terrain/19/858529/353925.terrain new file mode 100644 index 000000000..cc8ba7be5 Binary files /dev/null and b/public/terrain/19/858529/353925.terrain differ diff --git a/public/terrain/19/858529/353926.terrain b/public/terrain/19/858529/353926.terrain new file mode 100644 index 000000000..afef244c9 Binary files /dev/null and b/public/terrain/19/858529/353926.terrain differ diff --git a/public/terrain/19/858529/353927.terrain b/public/terrain/19/858529/353927.terrain new file mode 100644 index 000000000..957ae8f97 Binary files /dev/null and b/public/terrain/19/858529/353927.terrain differ diff --git a/public/terrain/19/858529/353928.terrain b/public/terrain/19/858529/353928.terrain new file mode 100644 index 000000000..dfc38b290 Binary files /dev/null and b/public/terrain/19/858529/353928.terrain differ diff --git a/public/terrain/19/858529/353929.terrain b/public/terrain/19/858529/353929.terrain new file mode 100644 index 000000000..95705df88 Binary files /dev/null and b/public/terrain/19/858529/353929.terrain differ diff --git a/public/terrain/19/858529/353930.terrain b/public/terrain/19/858529/353930.terrain new file mode 100644 index 000000000..ab6a10c90 Binary files /dev/null and b/public/terrain/19/858529/353930.terrain differ diff --git a/public/terrain/19/858529/353931.terrain b/public/terrain/19/858529/353931.terrain new file mode 100644 index 000000000..85c266ffa Binary files /dev/null and b/public/terrain/19/858529/353931.terrain differ diff --git a/public/terrain/19/858529/353932.terrain b/public/terrain/19/858529/353932.terrain new file mode 100644 index 000000000..437bbc728 Binary files /dev/null and b/public/terrain/19/858529/353932.terrain differ diff --git a/public/terrain/19/858529/353933.terrain b/public/terrain/19/858529/353933.terrain new file mode 100644 index 000000000..a044049f1 Binary files /dev/null and b/public/terrain/19/858529/353933.terrain differ diff --git a/public/terrain/19/858529/353934.terrain b/public/terrain/19/858529/353934.terrain new file mode 100644 index 000000000..5a3cdae8b Binary files /dev/null and b/public/terrain/19/858529/353934.terrain differ diff --git a/public/terrain/19/858529/353935.terrain b/public/terrain/19/858529/353935.terrain new file mode 100644 index 000000000..507792b77 Binary files /dev/null and b/public/terrain/19/858529/353935.terrain differ diff --git a/public/terrain/19/858529/353936.terrain b/public/terrain/19/858529/353936.terrain new file mode 100644 index 000000000..21277cdc6 Binary files /dev/null and b/public/terrain/19/858529/353936.terrain differ diff --git a/public/terrain/19/858529/353937.terrain b/public/terrain/19/858529/353937.terrain new file mode 100644 index 000000000..20653acfa Binary files /dev/null and b/public/terrain/19/858529/353937.terrain differ diff --git a/public/terrain/19/858529/353938.terrain b/public/terrain/19/858529/353938.terrain new file mode 100644 index 000000000..c55d79d77 Binary files /dev/null and b/public/terrain/19/858529/353938.terrain differ diff --git a/public/terrain/19/858529/353939.terrain b/public/terrain/19/858529/353939.terrain new file mode 100644 index 000000000..a43fc8109 Binary files /dev/null and b/public/terrain/19/858529/353939.terrain differ diff --git a/public/terrain/19/858529/353940.terrain b/public/terrain/19/858529/353940.terrain new file mode 100644 index 000000000..59363340d Binary files /dev/null and b/public/terrain/19/858529/353940.terrain differ diff --git a/public/terrain/19/858529/353941.terrain b/public/terrain/19/858529/353941.terrain new file mode 100644 index 000000000..cdcc4199c Binary files /dev/null and b/public/terrain/19/858529/353941.terrain differ diff --git a/public/terrain/19/858529/353942.terrain b/public/terrain/19/858529/353942.terrain new file mode 100644 index 000000000..90f2315cd Binary files /dev/null and b/public/terrain/19/858529/353942.terrain differ diff --git a/public/terrain/19/858529/353943.terrain b/public/terrain/19/858529/353943.terrain new file mode 100644 index 000000000..7ae7fdb2b Binary files /dev/null and b/public/terrain/19/858529/353943.terrain differ diff --git a/public/terrain/19/858529/353944.terrain b/public/terrain/19/858529/353944.terrain new file mode 100644 index 000000000..729334f60 Binary files /dev/null and b/public/terrain/19/858529/353944.terrain differ diff --git a/public/terrain/19/858529/353945.terrain b/public/terrain/19/858529/353945.terrain new file mode 100644 index 000000000..5dd131d76 Binary files /dev/null and b/public/terrain/19/858529/353945.terrain differ diff --git a/public/terrain/19/858529/353946.terrain b/public/terrain/19/858529/353946.terrain new file mode 100644 index 000000000..5437f3106 Binary files /dev/null and b/public/terrain/19/858529/353946.terrain differ diff --git a/public/terrain/19/858529/353947.terrain b/public/terrain/19/858529/353947.terrain new file mode 100644 index 000000000..91ef99789 Binary files /dev/null and b/public/terrain/19/858529/353947.terrain differ diff --git a/public/terrain/19/858529/353948.terrain b/public/terrain/19/858529/353948.terrain new file mode 100644 index 000000000..3d6485685 Binary files /dev/null and b/public/terrain/19/858529/353948.terrain differ diff --git a/public/terrain/19/858529/353949.terrain b/public/terrain/19/858529/353949.terrain new file mode 100644 index 000000000..6c3ff8b37 Binary files /dev/null and b/public/terrain/19/858529/353949.terrain differ diff --git a/public/terrain/19/858529/353950.terrain b/public/terrain/19/858529/353950.terrain new file mode 100644 index 000000000..d2eea43ec Binary files /dev/null and b/public/terrain/19/858529/353950.terrain differ diff --git a/public/terrain/19/858529/353951.terrain b/public/terrain/19/858529/353951.terrain new file mode 100644 index 000000000..2e351b61e Binary files /dev/null and b/public/terrain/19/858529/353951.terrain differ diff --git a/public/terrain/19/858529/353952.terrain b/public/terrain/19/858529/353952.terrain new file mode 100644 index 000000000..4edf40a4d Binary files /dev/null and b/public/terrain/19/858529/353952.terrain differ diff --git a/public/terrain/19/858529/353953.terrain b/public/terrain/19/858529/353953.terrain new file mode 100644 index 000000000..f8721068a Binary files /dev/null and b/public/terrain/19/858529/353953.terrain differ diff --git a/public/terrain/19/858529/353954.terrain b/public/terrain/19/858529/353954.terrain new file mode 100644 index 000000000..653cc3f12 Binary files /dev/null and b/public/terrain/19/858529/353954.terrain differ diff --git a/public/terrain/19/858529/353955.terrain b/public/terrain/19/858529/353955.terrain new file mode 100644 index 000000000..58afe0b04 Binary files /dev/null and b/public/terrain/19/858529/353955.terrain differ diff --git a/public/terrain/19/858529/353956.terrain b/public/terrain/19/858529/353956.terrain new file mode 100644 index 000000000..9d039df03 Binary files /dev/null and b/public/terrain/19/858529/353956.terrain differ diff --git a/public/terrain/19/858529/353957.terrain b/public/terrain/19/858529/353957.terrain new file mode 100644 index 000000000..866937287 Binary files /dev/null and b/public/terrain/19/858529/353957.terrain differ diff --git a/public/terrain/19/858529/353958.terrain b/public/terrain/19/858529/353958.terrain new file mode 100644 index 000000000..3292f7a90 Binary files /dev/null and b/public/terrain/19/858529/353958.terrain differ diff --git a/public/terrain/19/858529/353959.terrain b/public/terrain/19/858529/353959.terrain new file mode 100644 index 000000000..5b64084c2 Binary files /dev/null and b/public/terrain/19/858529/353959.terrain differ diff --git a/public/terrain/19/858529/353960.terrain b/public/terrain/19/858529/353960.terrain new file mode 100644 index 000000000..23e85a718 Binary files /dev/null and b/public/terrain/19/858529/353960.terrain differ diff --git a/public/terrain/19/858529/353961.terrain b/public/terrain/19/858529/353961.terrain new file mode 100644 index 000000000..af896a95d Binary files /dev/null and b/public/terrain/19/858529/353961.terrain differ diff --git a/public/terrain/19/858529/353962.terrain b/public/terrain/19/858529/353962.terrain new file mode 100644 index 000000000..bd5aad4ef Binary files /dev/null and b/public/terrain/19/858529/353962.terrain differ diff --git a/public/terrain/19/858529/353963.terrain b/public/terrain/19/858529/353963.terrain new file mode 100644 index 000000000..bd69c0692 Binary files /dev/null and b/public/terrain/19/858529/353963.terrain differ diff --git a/public/terrain/19/858529/353964.terrain b/public/terrain/19/858529/353964.terrain new file mode 100644 index 000000000..ef30c4dd7 Binary files /dev/null and b/public/terrain/19/858529/353964.terrain differ diff --git a/public/terrain/19/858529/353965.terrain b/public/terrain/19/858529/353965.terrain new file mode 100644 index 000000000..f26f8bceb Binary files /dev/null and b/public/terrain/19/858529/353965.terrain differ diff --git a/public/terrain/19/858529/353966.terrain b/public/terrain/19/858529/353966.terrain new file mode 100644 index 000000000..009c7fce3 Binary files /dev/null and b/public/terrain/19/858529/353966.terrain differ diff --git a/public/terrain/19/858529/353967.terrain b/public/terrain/19/858529/353967.terrain new file mode 100644 index 000000000..0fa8bed81 Binary files /dev/null and b/public/terrain/19/858529/353967.terrain differ diff --git a/public/terrain/19/858529/353968.terrain b/public/terrain/19/858529/353968.terrain new file mode 100644 index 000000000..ff82395c6 Binary files /dev/null and b/public/terrain/19/858529/353968.terrain differ diff --git a/public/terrain/19/858529/353969.terrain b/public/terrain/19/858529/353969.terrain new file mode 100644 index 000000000..642749438 Binary files /dev/null and b/public/terrain/19/858529/353969.terrain differ diff --git a/public/terrain/19/858529/353970.terrain b/public/terrain/19/858529/353970.terrain new file mode 100644 index 000000000..200259aa8 Binary files /dev/null and b/public/terrain/19/858529/353970.terrain differ diff --git a/public/terrain/19/858529/353971.terrain b/public/terrain/19/858529/353971.terrain new file mode 100644 index 000000000..1a22aecf1 Binary files /dev/null and b/public/terrain/19/858529/353971.terrain differ diff --git a/public/terrain/19/858529/353972.terrain b/public/terrain/19/858529/353972.terrain new file mode 100644 index 000000000..3bcd90e8d Binary files /dev/null and b/public/terrain/19/858529/353972.terrain differ diff --git a/public/terrain/19/858529/353973.terrain b/public/terrain/19/858529/353973.terrain new file mode 100644 index 000000000..f152f6af0 Binary files /dev/null and b/public/terrain/19/858529/353973.terrain differ diff --git a/public/terrain/19/858529/353974.terrain b/public/terrain/19/858529/353974.terrain new file mode 100644 index 000000000..c603ea5bd Binary files /dev/null and b/public/terrain/19/858529/353974.terrain differ diff --git a/public/terrain/19/858529/353975.terrain b/public/terrain/19/858529/353975.terrain new file mode 100644 index 000000000..5b36edc87 Binary files /dev/null and b/public/terrain/19/858529/353975.terrain differ diff --git a/public/terrain/19/858529/353976.terrain b/public/terrain/19/858529/353976.terrain new file mode 100644 index 000000000..eb9a02be5 Binary files /dev/null and b/public/terrain/19/858529/353976.terrain differ diff --git a/public/terrain/19/858529/353977.terrain b/public/terrain/19/858529/353977.terrain new file mode 100644 index 000000000..1fe34c4a1 Binary files /dev/null and b/public/terrain/19/858529/353977.terrain differ diff --git a/public/terrain/19/858529/353978.terrain b/public/terrain/19/858529/353978.terrain new file mode 100644 index 000000000..9c31d244a Binary files /dev/null and b/public/terrain/19/858529/353978.terrain differ diff --git a/public/terrain/19/858529/353979.terrain b/public/terrain/19/858529/353979.terrain new file mode 100644 index 000000000..727f48f75 Binary files /dev/null and b/public/terrain/19/858529/353979.terrain differ diff --git a/public/terrain/19/858529/353980.terrain b/public/terrain/19/858529/353980.terrain new file mode 100644 index 000000000..a1caa09f3 Binary files /dev/null and b/public/terrain/19/858529/353980.terrain differ diff --git a/public/terrain/19/858529/353981.terrain b/public/terrain/19/858529/353981.terrain new file mode 100644 index 000000000..63b11d539 Binary files /dev/null and b/public/terrain/19/858529/353981.terrain differ diff --git a/public/terrain/19/858529/353982.terrain b/public/terrain/19/858529/353982.terrain new file mode 100644 index 000000000..45d75db6f Binary files /dev/null and b/public/terrain/19/858529/353982.terrain differ diff --git a/public/terrain/19/858529/353983.terrain b/public/terrain/19/858529/353983.terrain new file mode 100644 index 000000000..2cb038ea7 Binary files /dev/null and b/public/terrain/19/858529/353983.terrain differ diff --git a/public/terrain/19/858529/353984.terrain b/public/terrain/19/858529/353984.terrain new file mode 100644 index 000000000..45ece4375 Binary files /dev/null and b/public/terrain/19/858529/353984.terrain differ diff --git a/public/terrain/19/858529/353985.terrain b/public/terrain/19/858529/353985.terrain new file mode 100644 index 000000000..4c3ea6e4c Binary files /dev/null and b/public/terrain/19/858529/353985.terrain differ diff --git a/public/terrain/19/858529/353986.terrain b/public/terrain/19/858529/353986.terrain new file mode 100644 index 000000000..173cf0995 Binary files /dev/null and b/public/terrain/19/858529/353986.terrain differ diff --git a/public/terrain/19/858529/353987.terrain b/public/terrain/19/858529/353987.terrain new file mode 100644 index 000000000..87c8bd904 Binary files /dev/null and b/public/terrain/19/858529/353987.terrain differ diff --git a/public/terrain/19/858529/353988.terrain b/public/terrain/19/858529/353988.terrain new file mode 100644 index 000000000..39dfb7f4e Binary files /dev/null and b/public/terrain/19/858529/353988.terrain differ diff --git a/public/terrain/19/858529/353989.terrain b/public/terrain/19/858529/353989.terrain new file mode 100644 index 000000000..88f459ea7 Binary files /dev/null and b/public/terrain/19/858529/353989.terrain differ diff --git a/public/terrain/19/858529/353990.terrain b/public/terrain/19/858529/353990.terrain new file mode 100644 index 000000000..9703caa04 Binary files /dev/null and b/public/terrain/19/858529/353990.terrain differ diff --git a/public/terrain/19/858529/353991.terrain b/public/terrain/19/858529/353991.terrain new file mode 100644 index 000000000..d71f4bf67 Binary files /dev/null and b/public/terrain/19/858529/353991.terrain differ diff --git a/public/terrain/19/858529/353992.terrain b/public/terrain/19/858529/353992.terrain new file mode 100644 index 000000000..681afe42d Binary files /dev/null and b/public/terrain/19/858529/353992.terrain differ diff --git a/public/terrain/19/858529/353993.terrain b/public/terrain/19/858529/353993.terrain new file mode 100644 index 000000000..3add68637 Binary files /dev/null and b/public/terrain/19/858529/353993.terrain differ diff --git a/public/terrain/19/858529/353994.terrain b/public/terrain/19/858529/353994.terrain new file mode 100644 index 000000000..d686e5931 Binary files /dev/null and b/public/terrain/19/858529/353994.terrain differ diff --git a/public/terrain/19/858529/353995.terrain b/public/terrain/19/858529/353995.terrain new file mode 100644 index 000000000..ce392c83b Binary files /dev/null and b/public/terrain/19/858529/353995.terrain differ diff --git a/public/terrain/19/858529/353996.terrain b/public/terrain/19/858529/353996.terrain new file mode 100644 index 000000000..f1721df24 Binary files /dev/null and b/public/terrain/19/858529/353996.terrain differ diff --git a/public/terrain/19/858529/353997.terrain b/public/terrain/19/858529/353997.terrain new file mode 100644 index 000000000..06262055d Binary files /dev/null and b/public/terrain/19/858529/353997.terrain differ diff --git a/public/terrain/19/858529/353998.terrain b/public/terrain/19/858529/353998.terrain new file mode 100644 index 000000000..c7e7b2bd3 Binary files /dev/null and b/public/terrain/19/858529/353998.terrain differ diff --git a/public/terrain/19/858529/353999.terrain b/public/terrain/19/858529/353999.terrain new file mode 100644 index 000000000..eb0530b88 Binary files /dev/null and b/public/terrain/19/858529/353999.terrain differ diff --git a/public/terrain/19/858529/354000.terrain b/public/terrain/19/858529/354000.terrain new file mode 100644 index 000000000..1dc6c1795 Binary files /dev/null and b/public/terrain/19/858529/354000.terrain differ diff --git a/public/terrain/19/858529/354001.terrain b/public/terrain/19/858529/354001.terrain new file mode 100644 index 000000000..80edde820 Binary files /dev/null and b/public/terrain/19/858529/354001.terrain differ diff --git a/public/terrain/19/858529/354002.terrain b/public/terrain/19/858529/354002.terrain new file mode 100644 index 000000000..27fc5948a Binary files /dev/null and b/public/terrain/19/858529/354002.terrain differ diff --git a/public/terrain/19/858529/354003.terrain b/public/terrain/19/858529/354003.terrain new file mode 100644 index 000000000..d3b155d12 Binary files /dev/null and b/public/terrain/19/858529/354003.terrain differ diff --git a/public/terrain/19/858529/354004.terrain b/public/terrain/19/858529/354004.terrain new file mode 100644 index 000000000..2e3dd9190 Binary files /dev/null and b/public/terrain/19/858529/354004.terrain differ diff --git a/public/terrain/19/858529/354005.terrain b/public/terrain/19/858529/354005.terrain new file mode 100644 index 000000000..d4dbd1fa7 Binary files /dev/null and b/public/terrain/19/858529/354005.terrain differ diff --git a/public/terrain/19/858529/354006.terrain b/public/terrain/19/858529/354006.terrain new file mode 100644 index 000000000..cb829ef37 Binary files /dev/null and b/public/terrain/19/858529/354006.terrain differ diff --git a/public/terrain/19/858529/354007.terrain b/public/terrain/19/858529/354007.terrain new file mode 100644 index 000000000..d950d9d0c Binary files /dev/null and b/public/terrain/19/858529/354007.terrain differ diff --git a/public/terrain/19/858529/354008.terrain b/public/terrain/19/858529/354008.terrain new file mode 100644 index 000000000..ee066b2bd Binary files /dev/null and b/public/terrain/19/858529/354008.terrain differ diff --git a/public/terrain/19/858529/354009.terrain b/public/terrain/19/858529/354009.terrain new file mode 100644 index 000000000..3c9b1d1b0 Binary files /dev/null and b/public/terrain/19/858529/354009.terrain differ diff --git a/public/terrain/19/858529/354010.terrain b/public/terrain/19/858529/354010.terrain new file mode 100644 index 000000000..ee3c51a0a Binary files /dev/null and b/public/terrain/19/858529/354010.terrain differ diff --git a/public/terrain/19/858529/354011.terrain b/public/terrain/19/858529/354011.terrain new file mode 100644 index 000000000..1b1505121 Binary files /dev/null and b/public/terrain/19/858529/354011.terrain differ diff --git a/public/terrain/19/858529/354012.terrain b/public/terrain/19/858529/354012.terrain new file mode 100644 index 000000000..8b52d8a59 Binary files /dev/null and b/public/terrain/19/858529/354012.terrain differ diff --git a/public/terrain/19/858529/354013.terrain b/public/terrain/19/858529/354013.terrain new file mode 100644 index 000000000..acb0c34a5 Binary files /dev/null and b/public/terrain/19/858529/354013.terrain differ diff --git a/public/terrain/19/858529/354014.terrain b/public/terrain/19/858529/354014.terrain new file mode 100644 index 000000000..190cca753 Binary files /dev/null and b/public/terrain/19/858529/354014.terrain differ diff --git a/public/terrain/19/858529/354015.terrain b/public/terrain/19/858529/354015.terrain new file mode 100644 index 000000000..d3bd0fa92 Binary files /dev/null and b/public/terrain/19/858529/354015.terrain differ diff --git a/public/terrain/19/858529/354016.terrain b/public/terrain/19/858529/354016.terrain new file mode 100644 index 000000000..eb292c6a0 Binary files /dev/null and b/public/terrain/19/858529/354016.terrain differ diff --git a/public/terrain/19/858529/354017.terrain b/public/terrain/19/858529/354017.terrain new file mode 100644 index 000000000..46e0f4121 Binary files /dev/null and b/public/terrain/19/858529/354017.terrain differ diff --git a/public/terrain/19/858529/354018.terrain b/public/terrain/19/858529/354018.terrain new file mode 100644 index 000000000..0f5849916 Binary files /dev/null and b/public/terrain/19/858529/354018.terrain differ diff --git a/public/terrain/19/858529/354019.terrain b/public/terrain/19/858529/354019.terrain new file mode 100644 index 000000000..73867a20a Binary files /dev/null and b/public/terrain/19/858529/354019.terrain differ diff --git a/public/terrain/19/858529/354020.terrain b/public/terrain/19/858529/354020.terrain new file mode 100644 index 000000000..1073d47b2 Binary files /dev/null and b/public/terrain/19/858529/354020.terrain differ diff --git a/public/terrain/19/858529/354021.terrain b/public/terrain/19/858529/354021.terrain new file mode 100644 index 000000000..06bdb74e3 Binary files /dev/null and b/public/terrain/19/858529/354021.terrain differ diff --git a/public/terrain/19/858529/354022.terrain b/public/terrain/19/858529/354022.terrain new file mode 100644 index 000000000..0308fcf29 Binary files /dev/null and b/public/terrain/19/858529/354022.terrain differ diff --git a/public/terrain/19/858529/354023.terrain b/public/terrain/19/858529/354023.terrain new file mode 100644 index 000000000..91c9d59cf Binary files /dev/null and b/public/terrain/19/858529/354023.terrain differ diff --git a/public/terrain/19/858529/354024.terrain b/public/terrain/19/858529/354024.terrain new file mode 100644 index 000000000..188d504e5 Binary files /dev/null and b/public/terrain/19/858529/354024.terrain differ diff --git a/public/terrain/19/858529/354025.terrain b/public/terrain/19/858529/354025.terrain new file mode 100644 index 000000000..7912923f2 Binary files /dev/null and b/public/terrain/19/858529/354025.terrain differ diff --git a/public/terrain/19/858529/354026.terrain b/public/terrain/19/858529/354026.terrain new file mode 100644 index 000000000..8eb94e537 Binary files /dev/null and b/public/terrain/19/858529/354026.terrain differ diff --git a/public/terrain/19/858529/354027.terrain b/public/terrain/19/858529/354027.terrain new file mode 100644 index 000000000..00804846d Binary files /dev/null and b/public/terrain/19/858529/354027.terrain differ diff --git a/public/terrain/19/858529/354028.terrain b/public/terrain/19/858529/354028.terrain new file mode 100644 index 000000000..063ecc42c Binary files /dev/null and b/public/terrain/19/858529/354028.terrain differ diff --git a/public/terrain/19/858529/354029.terrain b/public/terrain/19/858529/354029.terrain new file mode 100644 index 000000000..100b3f06c Binary files /dev/null and b/public/terrain/19/858529/354029.terrain differ diff --git a/public/terrain/19/858529/354030.terrain b/public/terrain/19/858529/354030.terrain new file mode 100644 index 000000000..cd9fc5376 Binary files /dev/null and b/public/terrain/19/858529/354030.terrain differ diff --git a/public/terrain/19/858529/354031.terrain b/public/terrain/19/858529/354031.terrain new file mode 100644 index 000000000..b6f26da07 Binary files /dev/null and b/public/terrain/19/858529/354031.terrain differ diff --git a/public/terrain/19/858529/354032.terrain b/public/terrain/19/858529/354032.terrain new file mode 100644 index 000000000..a3fb7407a Binary files /dev/null and b/public/terrain/19/858529/354032.terrain differ diff --git a/public/terrain/19/858529/354033.terrain b/public/terrain/19/858529/354033.terrain new file mode 100644 index 000000000..0a2dfa20d Binary files /dev/null and b/public/terrain/19/858529/354033.terrain differ diff --git a/public/terrain/19/858529/354034.terrain b/public/terrain/19/858529/354034.terrain new file mode 100644 index 000000000..4cc559f65 Binary files /dev/null and b/public/terrain/19/858529/354034.terrain differ diff --git a/public/terrain/19/858529/354035.terrain b/public/terrain/19/858529/354035.terrain new file mode 100644 index 000000000..ab8206fa3 Binary files /dev/null and b/public/terrain/19/858529/354035.terrain differ diff --git a/public/terrain/19/858529/354036.terrain b/public/terrain/19/858529/354036.terrain new file mode 100644 index 000000000..fede2bc09 Binary files /dev/null and b/public/terrain/19/858529/354036.terrain differ diff --git a/public/terrain/19/858529/354037.terrain b/public/terrain/19/858529/354037.terrain new file mode 100644 index 000000000..2512fa140 Binary files /dev/null and b/public/terrain/19/858529/354037.terrain differ diff --git a/public/terrain/19/858529/354038.terrain b/public/terrain/19/858529/354038.terrain new file mode 100644 index 000000000..8f8470ecd Binary files /dev/null and b/public/terrain/19/858529/354038.terrain differ diff --git a/public/terrain/19/858529/354039.terrain b/public/terrain/19/858529/354039.terrain new file mode 100644 index 000000000..2a9ba90da Binary files /dev/null and b/public/terrain/19/858529/354039.terrain differ diff --git a/public/terrain/19/858529/354040.terrain b/public/terrain/19/858529/354040.terrain new file mode 100644 index 000000000..9616932de Binary files /dev/null and b/public/terrain/19/858529/354040.terrain differ diff --git a/public/terrain/19/858529/354041.terrain b/public/terrain/19/858529/354041.terrain new file mode 100644 index 000000000..aee2d80fd Binary files /dev/null and b/public/terrain/19/858529/354041.terrain differ diff --git a/public/terrain/19/858529/354042.terrain b/public/terrain/19/858529/354042.terrain new file mode 100644 index 000000000..03ee3ce01 Binary files /dev/null and b/public/terrain/19/858529/354042.terrain differ diff --git a/public/terrain/19/858529/354043.terrain b/public/terrain/19/858529/354043.terrain new file mode 100644 index 000000000..a98ec09bf Binary files /dev/null and b/public/terrain/19/858529/354043.terrain differ diff --git a/public/terrain/19/858529/354044.terrain b/public/terrain/19/858529/354044.terrain new file mode 100644 index 000000000..d953c4850 Binary files /dev/null and b/public/terrain/19/858529/354044.terrain differ diff --git a/public/terrain/19/858529/354045.terrain b/public/terrain/19/858529/354045.terrain new file mode 100644 index 000000000..9d085c8c3 Binary files /dev/null and b/public/terrain/19/858529/354045.terrain differ diff --git a/public/terrain/19/858529/354046.terrain b/public/terrain/19/858529/354046.terrain new file mode 100644 index 000000000..9d383e96f Binary files /dev/null and b/public/terrain/19/858529/354046.terrain differ diff --git a/public/terrain/19/858529/354047.terrain b/public/terrain/19/858529/354047.terrain new file mode 100644 index 000000000..e1f47591c Binary files /dev/null and b/public/terrain/19/858529/354047.terrain differ diff --git a/public/terrain/19/858529/354048.terrain b/public/terrain/19/858529/354048.terrain new file mode 100644 index 000000000..5047f1234 Binary files /dev/null and b/public/terrain/19/858529/354048.terrain differ diff --git a/public/terrain/19/858529/354049.terrain b/public/terrain/19/858529/354049.terrain new file mode 100644 index 000000000..7a25a1069 Binary files /dev/null and b/public/terrain/19/858529/354049.terrain differ diff --git a/public/terrain/19/858529/354050.terrain b/public/terrain/19/858529/354050.terrain new file mode 100644 index 000000000..4928b618e Binary files /dev/null and b/public/terrain/19/858529/354050.terrain differ diff --git a/public/terrain/19/858529/354051.terrain b/public/terrain/19/858529/354051.terrain new file mode 100644 index 000000000..77f828b90 Binary files /dev/null and b/public/terrain/19/858529/354051.terrain differ diff --git a/public/terrain/19/858529/354052.terrain b/public/terrain/19/858529/354052.terrain new file mode 100644 index 000000000..baedfd32c Binary files /dev/null and b/public/terrain/19/858529/354052.terrain differ diff --git a/public/terrain/19/858529/354053.terrain b/public/terrain/19/858529/354053.terrain new file mode 100644 index 000000000..8d1f04c9f Binary files /dev/null and b/public/terrain/19/858529/354053.terrain differ diff --git a/public/terrain/19/858529/354054.terrain b/public/terrain/19/858529/354054.terrain new file mode 100644 index 000000000..0ef38ae3f Binary files /dev/null and b/public/terrain/19/858529/354054.terrain differ diff --git a/public/terrain/19/858529/354055.terrain b/public/terrain/19/858529/354055.terrain new file mode 100644 index 000000000..2c3bc5dd2 Binary files /dev/null and b/public/terrain/19/858529/354055.terrain differ diff --git a/public/terrain/19/858529/354056.terrain b/public/terrain/19/858529/354056.terrain new file mode 100644 index 000000000..bd6223315 Binary files /dev/null and b/public/terrain/19/858529/354056.terrain differ diff --git a/public/terrain/19/858529/354057.terrain b/public/terrain/19/858529/354057.terrain new file mode 100644 index 000000000..924e67b1e Binary files /dev/null and b/public/terrain/19/858529/354057.terrain differ diff --git a/public/terrain/19/858529/354058.terrain b/public/terrain/19/858529/354058.terrain new file mode 100644 index 000000000..30520c8e6 Binary files /dev/null and b/public/terrain/19/858529/354058.terrain differ diff --git a/public/terrain/19/858529/354059.terrain b/public/terrain/19/858529/354059.terrain new file mode 100644 index 000000000..40b0c6d34 Binary files /dev/null and b/public/terrain/19/858529/354059.terrain differ diff --git a/public/terrain/19/858530/353743.terrain b/public/terrain/19/858530/353743.terrain new file mode 100644 index 000000000..4802ba57c Binary files /dev/null and b/public/terrain/19/858530/353743.terrain differ diff --git a/public/terrain/19/858530/353744.terrain b/public/terrain/19/858530/353744.terrain new file mode 100644 index 000000000..d83abc10a Binary files /dev/null and b/public/terrain/19/858530/353744.terrain differ diff --git a/public/terrain/19/858530/353745.terrain b/public/terrain/19/858530/353745.terrain new file mode 100644 index 000000000..8f73827fd Binary files /dev/null and b/public/terrain/19/858530/353745.terrain differ diff --git a/public/terrain/19/858530/353746.terrain b/public/terrain/19/858530/353746.terrain new file mode 100644 index 000000000..3d42a3050 Binary files /dev/null and b/public/terrain/19/858530/353746.terrain differ diff --git a/public/terrain/19/858530/353747.terrain b/public/terrain/19/858530/353747.terrain new file mode 100644 index 000000000..f05115bf0 Binary files /dev/null and b/public/terrain/19/858530/353747.terrain differ diff --git a/public/terrain/19/858530/353748.terrain b/public/terrain/19/858530/353748.terrain new file mode 100644 index 000000000..4af5b317f Binary files /dev/null and b/public/terrain/19/858530/353748.terrain differ diff --git a/public/terrain/19/858530/353749.terrain b/public/terrain/19/858530/353749.terrain new file mode 100644 index 000000000..25bab5f85 Binary files /dev/null and b/public/terrain/19/858530/353749.terrain differ diff --git a/public/terrain/19/858530/353750.terrain b/public/terrain/19/858530/353750.terrain new file mode 100644 index 000000000..bc7698d5a Binary files /dev/null and b/public/terrain/19/858530/353750.terrain differ diff --git a/public/terrain/19/858530/353751.terrain b/public/terrain/19/858530/353751.terrain new file mode 100644 index 000000000..8a350ba27 Binary files /dev/null and b/public/terrain/19/858530/353751.terrain differ diff --git a/public/terrain/19/858530/353752.terrain b/public/terrain/19/858530/353752.terrain new file mode 100644 index 000000000..ff7650247 Binary files /dev/null and b/public/terrain/19/858530/353752.terrain differ diff --git a/public/terrain/19/858530/353753.terrain b/public/terrain/19/858530/353753.terrain new file mode 100644 index 000000000..c05f166d7 Binary files /dev/null and b/public/terrain/19/858530/353753.terrain differ diff --git a/public/terrain/19/858530/353754.terrain b/public/terrain/19/858530/353754.terrain new file mode 100644 index 000000000..eaf4b8b2d Binary files /dev/null and b/public/terrain/19/858530/353754.terrain differ diff --git a/public/terrain/19/858530/353755.terrain b/public/terrain/19/858530/353755.terrain new file mode 100644 index 000000000..ec78c74a9 Binary files /dev/null and b/public/terrain/19/858530/353755.terrain differ diff --git a/public/terrain/19/858530/353756.terrain b/public/terrain/19/858530/353756.terrain new file mode 100644 index 000000000..eed559600 Binary files /dev/null and b/public/terrain/19/858530/353756.terrain differ diff --git a/public/terrain/19/858530/353757.terrain b/public/terrain/19/858530/353757.terrain new file mode 100644 index 000000000..889afc81a Binary files /dev/null and b/public/terrain/19/858530/353757.terrain differ diff --git a/public/terrain/19/858530/353758.terrain b/public/terrain/19/858530/353758.terrain new file mode 100644 index 000000000..817ae4dbc Binary files /dev/null and b/public/terrain/19/858530/353758.terrain differ diff --git a/public/terrain/19/858530/353759.terrain b/public/terrain/19/858530/353759.terrain new file mode 100644 index 000000000..08f997114 Binary files /dev/null and b/public/terrain/19/858530/353759.terrain differ diff --git a/public/terrain/19/858530/353760.terrain b/public/terrain/19/858530/353760.terrain new file mode 100644 index 000000000..421785289 Binary files /dev/null and b/public/terrain/19/858530/353760.terrain differ diff --git a/public/terrain/19/858530/353761.terrain b/public/terrain/19/858530/353761.terrain new file mode 100644 index 000000000..c0e374f97 Binary files /dev/null and b/public/terrain/19/858530/353761.terrain differ diff --git a/public/terrain/19/858530/353762.terrain b/public/terrain/19/858530/353762.terrain new file mode 100644 index 000000000..14384c6b5 Binary files /dev/null and b/public/terrain/19/858530/353762.terrain differ diff --git a/public/terrain/19/858530/353763.terrain b/public/terrain/19/858530/353763.terrain new file mode 100644 index 000000000..47507b953 Binary files /dev/null and b/public/terrain/19/858530/353763.terrain differ diff --git a/public/terrain/19/858530/353764.terrain b/public/terrain/19/858530/353764.terrain new file mode 100644 index 000000000..b69d2c267 Binary files /dev/null and b/public/terrain/19/858530/353764.terrain differ diff --git a/public/terrain/19/858530/353765.terrain b/public/terrain/19/858530/353765.terrain new file mode 100644 index 000000000..0ef596d4a Binary files /dev/null and b/public/terrain/19/858530/353765.terrain differ diff --git a/public/terrain/19/858530/353766.terrain b/public/terrain/19/858530/353766.terrain new file mode 100644 index 000000000..bbebd3382 Binary files /dev/null and b/public/terrain/19/858530/353766.terrain differ diff --git a/public/terrain/19/858530/353767.terrain b/public/terrain/19/858530/353767.terrain new file mode 100644 index 000000000..f8c8f66cd Binary files /dev/null and b/public/terrain/19/858530/353767.terrain differ diff --git a/public/terrain/19/858530/353768.terrain b/public/terrain/19/858530/353768.terrain new file mode 100644 index 000000000..f3c9a6018 Binary files /dev/null and b/public/terrain/19/858530/353768.terrain differ diff --git a/public/terrain/19/858530/353769.terrain b/public/terrain/19/858530/353769.terrain new file mode 100644 index 000000000..30657a246 Binary files /dev/null and b/public/terrain/19/858530/353769.terrain differ diff --git a/public/terrain/19/858530/353770.terrain b/public/terrain/19/858530/353770.terrain new file mode 100644 index 000000000..be27b55ec Binary files /dev/null and b/public/terrain/19/858530/353770.terrain differ diff --git a/public/terrain/19/858530/353771.terrain b/public/terrain/19/858530/353771.terrain new file mode 100644 index 000000000..5266f94da Binary files /dev/null and b/public/terrain/19/858530/353771.terrain differ diff --git a/public/terrain/19/858530/353772.terrain b/public/terrain/19/858530/353772.terrain new file mode 100644 index 000000000..6717c0b75 Binary files /dev/null and b/public/terrain/19/858530/353772.terrain differ diff --git a/public/terrain/19/858530/353773.terrain b/public/terrain/19/858530/353773.terrain new file mode 100644 index 000000000..d1762afb1 Binary files /dev/null and b/public/terrain/19/858530/353773.terrain differ diff --git a/public/terrain/19/858530/353774.terrain b/public/terrain/19/858530/353774.terrain new file mode 100644 index 000000000..23c6db564 Binary files /dev/null and b/public/terrain/19/858530/353774.terrain differ diff --git a/public/terrain/19/858530/353775.terrain b/public/terrain/19/858530/353775.terrain new file mode 100644 index 000000000..73c1de2d7 Binary files /dev/null and b/public/terrain/19/858530/353775.terrain differ diff --git a/public/terrain/19/858530/353776.terrain b/public/terrain/19/858530/353776.terrain new file mode 100644 index 000000000..3fdf34579 Binary files /dev/null and b/public/terrain/19/858530/353776.terrain differ diff --git a/public/terrain/19/858530/353777.terrain b/public/terrain/19/858530/353777.terrain new file mode 100644 index 000000000..63f8e8f3a Binary files /dev/null and b/public/terrain/19/858530/353777.terrain differ diff --git a/public/terrain/19/858530/353778.terrain b/public/terrain/19/858530/353778.terrain new file mode 100644 index 000000000..348616e43 Binary files /dev/null and b/public/terrain/19/858530/353778.terrain differ diff --git a/public/terrain/19/858530/353779.terrain b/public/terrain/19/858530/353779.terrain new file mode 100644 index 000000000..d73621206 Binary files /dev/null and b/public/terrain/19/858530/353779.terrain differ diff --git a/public/terrain/19/858530/353780.terrain b/public/terrain/19/858530/353780.terrain new file mode 100644 index 000000000..9d15b5ac9 Binary files /dev/null and b/public/terrain/19/858530/353780.terrain differ diff --git a/public/terrain/19/858530/353781.terrain b/public/terrain/19/858530/353781.terrain new file mode 100644 index 000000000..1b2a97a4b Binary files /dev/null and b/public/terrain/19/858530/353781.terrain differ diff --git a/public/terrain/19/858530/353782.terrain b/public/terrain/19/858530/353782.terrain new file mode 100644 index 000000000..00330cfed Binary files /dev/null and b/public/terrain/19/858530/353782.terrain differ diff --git a/public/terrain/19/858530/353783.terrain b/public/terrain/19/858530/353783.terrain new file mode 100644 index 000000000..31619cffc Binary files /dev/null and b/public/terrain/19/858530/353783.terrain differ diff --git a/public/terrain/19/858530/353784.terrain b/public/terrain/19/858530/353784.terrain new file mode 100644 index 000000000..98aef247a Binary files /dev/null and b/public/terrain/19/858530/353784.terrain differ diff --git a/public/terrain/19/858530/353785.terrain b/public/terrain/19/858530/353785.terrain new file mode 100644 index 000000000..ba32e971d Binary files /dev/null and b/public/terrain/19/858530/353785.terrain differ diff --git a/public/terrain/19/858530/353786.terrain b/public/terrain/19/858530/353786.terrain new file mode 100644 index 000000000..437c94f63 Binary files /dev/null and b/public/terrain/19/858530/353786.terrain differ diff --git a/public/terrain/19/858530/353787.terrain b/public/terrain/19/858530/353787.terrain new file mode 100644 index 000000000..26883b7b1 Binary files /dev/null and b/public/terrain/19/858530/353787.terrain differ diff --git a/public/terrain/19/858530/353788.terrain b/public/terrain/19/858530/353788.terrain new file mode 100644 index 000000000..2ebbf762d Binary files /dev/null and b/public/terrain/19/858530/353788.terrain differ diff --git a/public/terrain/19/858530/353789.terrain b/public/terrain/19/858530/353789.terrain new file mode 100644 index 000000000..adf52cccf Binary files /dev/null and b/public/terrain/19/858530/353789.terrain differ diff --git a/public/terrain/19/858530/353790.terrain b/public/terrain/19/858530/353790.terrain new file mode 100644 index 000000000..77505c2fc Binary files /dev/null and b/public/terrain/19/858530/353790.terrain differ diff --git a/public/terrain/19/858530/353791.terrain b/public/terrain/19/858530/353791.terrain new file mode 100644 index 000000000..dfa38649c Binary files /dev/null and b/public/terrain/19/858530/353791.terrain differ diff --git a/public/terrain/19/858530/353792.terrain b/public/terrain/19/858530/353792.terrain new file mode 100644 index 000000000..18bf8edc1 Binary files /dev/null and b/public/terrain/19/858530/353792.terrain differ diff --git a/public/terrain/19/858530/353793.terrain b/public/terrain/19/858530/353793.terrain new file mode 100644 index 000000000..88d86d9bf Binary files /dev/null and b/public/terrain/19/858530/353793.terrain differ diff --git a/public/terrain/19/858530/353794.terrain b/public/terrain/19/858530/353794.terrain new file mode 100644 index 000000000..db99a4b76 Binary files /dev/null and b/public/terrain/19/858530/353794.terrain differ diff --git a/public/terrain/19/858530/353795.terrain b/public/terrain/19/858530/353795.terrain new file mode 100644 index 000000000..8de254ff2 Binary files /dev/null and b/public/terrain/19/858530/353795.terrain differ diff --git a/public/terrain/19/858530/353796.terrain b/public/terrain/19/858530/353796.terrain new file mode 100644 index 000000000..aedf69e1e Binary files /dev/null and b/public/terrain/19/858530/353796.terrain differ diff --git a/public/terrain/19/858530/353797.terrain b/public/terrain/19/858530/353797.terrain new file mode 100644 index 000000000..ede32c2f0 Binary files /dev/null and b/public/terrain/19/858530/353797.terrain differ diff --git a/public/terrain/19/858530/353798.terrain b/public/terrain/19/858530/353798.terrain new file mode 100644 index 000000000..1da931ef8 Binary files /dev/null and b/public/terrain/19/858530/353798.terrain differ diff --git a/public/terrain/19/858530/353799.terrain b/public/terrain/19/858530/353799.terrain new file mode 100644 index 000000000..f390438b1 Binary files /dev/null and b/public/terrain/19/858530/353799.terrain differ diff --git a/public/terrain/19/858530/353800.terrain b/public/terrain/19/858530/353800.terrain new file mode 100644 index 000000000..86e46982e Binary files /dev/null and b/public/terrain/19/858530/353800.terrain differ diff --git a/public/terrain/19/858530/353801.terrain b/public/terrain/19/858530/353801.terrain new file mode 100644 index 000000000..bfb3265e9 Binary files /dev/null and b/public/terrain/19/858530/353801.terrain differ diff --git a/public/terrain/19/858530/353802.terrain b/public/terrain/19/858530/353802.terrain new file mode 100644 index 000000000..ec9922117 Binary files /dev/null and b/public/terrain/19/858530/353802.terrain differ diff --git a/public/terrain/19/858530/353803.terrain b/public/terrain/19/858530/353803.terrain new file mode 100644 index 000000000..6e1649ab8 Binary files /dev/null and b/public/terrain/19/858530/353803.terrain differ diff --git a/public/terrain/19/858530/353804.terrain b/public/terrain/19/858530/353804.terrain new file mode 100644 index 000000000..c7c29cdaf Binary files /dev/null and b/public/terrain/19/858530/353804.terrain differ diff --git a/public/terrain/19/858530/353805.terrain b/public/terrain/19/858530/353805.terrain new file mode 100644 index 000000000..ad68e48d8 Binary files /dev/null and b/public/terrain/19/858530/353805.terrain differ diff --git a/public/terrain/19/858530/353806.terrain b/public/terrain/19/858530/353806.terrain new file mode 100644 index 000000000..cee917236 Binary files /dev/null and b/public/terrain/19/858530/353806.terrain differ diff --git a/public/terrain/19/858530/353807.terrain b/public/terrain/19/858530/353807.terrain new file mode 100644 index 000000000..5ad659507 Binary files /dev/null and b/public/terrain/19/858530/353807.terrain differ diff --git a/public/terrain/19/858530/353808.terrain b/public/terrain/19/858530/353808.terrain new file mode 100644 index 000000000..b6e99ed5f Binary files /dev/null and b/public/terrain/19/858530/353808.terrain differ diff --git a/public/terrain/19/858530/353809.terrain b/public/terrain/19/858530/353809.terrain new file mode 100644 index 000000000..86f3b3074 Binary files /dev/null and b/public/terrain/19/858530/353809.terrain differ diff --git a/public/terrain/19/858530/353810.terrain b/public/terrain/19/858530/353810.terrain new file mode 100644 index 000000000..292c09298 Binary files /dev/null and b/public/terrain/19/858530/353810.terrain differ diff --git a/public/terrain/19/858530/353811.terrain b/public/terrain/19/858530/353811.terrain new file mode 100644 index 000000000..fa87a27cb Binary files /dev/null and b/public/terrain/19/858530/353811.terrain differ diff --git a/public/terrain/19/858530/353812.terrain b/public/terrain/19/858530/353812.terrain new file mode 100644 index 000000000..130116c10 Binary files /dev/null and b/public/terrain/19/858530/353812.terrain differ diff --git a/public/terrain/19/858530/353813.terrain b/public/terrain/19/858530/353813.terrain new file mode 100644 index 000000000..c11cdb3b2 Binary files /dev/null and b/public/terrain/19/858530/353813.terrain differ diff --git a/public/terrain/19/858530/353814.terrain b/public/terrain/19/858530/353814.terrain new file mode 100644 index 000000000..455107f78 Binary files /dev/null and b/public/terrain/19/858530/353814.terrain differ diff --git a/public/terrain/19/858530/353815.terrain b/public/terrain/19/858530/353815.terrain new file mode 100644 index 000000000..83acb687c Binary files /dev/null and b/public/terrain/19/858530/353815.terrain differ diff --git a/public/terrain/19/858530/353816.terrain b/public/terrain/19/858530/353816.terrain new file mode 100644 index 000000000..209202e48 Binary files /dev/null and b/public/terrain/19/858530/353816.terrain differ diff --git a/public/terrain/19/858530/353817.terrain b/public/terrain/19/858530/353817.terrain new file mode 100644 index 000000000..31bc7a0aa Binary files /dev/null and b/public/terrain/19/858530/353817.terrain differ diff --git a/public/terrain/19/858530/353818.terrain b/public/terrain/19/858530/353818.terrain new file mode 100644 index 000000000..4d7ed4725 Binary files /dev/null and b/public/terrain/19/858530/353818.terrain differ diff --git a/public/terrain/19/858530/353819.terrain b/public/terrain/19/858530/353819.terrain new file mode 100644 index 000000000..f8d74023a Binary files /dev/null and b/public/terrain/19/858530/353819.terrain differ diff --git a/public/terrain/19/858530/353820.terrain b/public/terrain/19/858530/353820.terrain new file mode 100644 index 000000000..19ac0bcbf Binary files /dev/null and b/public/terrain/19/858530/353820.terrain differ diff --git a/public/terrain/19/858530/353821.terrain b/public/terrain/19/858530/353821.terrain new file mode 100644 index 000000000..0ec7cde63 Binary files /dev/null and b/public/terrain/19/858530/353821.terrain differ diff --git a/public/terrain/19/858530/353822.terrain b/public/terrain/19/858530/353822.terrain new file mode 100644 index 000000000..ad4346e03 Binary files /dev/null and b/public/terrain/19/858530/353822.terrain differ diff --git a/public/terrain/19/858530/353823.terrain b/public/terrain/19/858530/353823.terrain new file mode 100644 index 000000000..30de4802a Binary files /dev/null and b/public/terrain/19/858530/353823.terrain differ diff --git a/public/terrain/19/858530/353824.terrain b/public/terrain/19/858530/353824.terrain new file mode 100644 index 000000000..4e4b72c4c Binary files /dev/null and b/public/terrain/19/858530/353824.terrain differ diff --git a/public/terrain/19/858530/353825.terrain b/public/terrain/19/858530/353825.terrain new file mode 100644 index 000000000..ece1d8545 Binary files /dev/null and b/public/terrain/19/858530/353825.terrain differ diff --git a/public/terrain/19/858530/353826.terrain b/public/terrain/19/858530/353826.terrain new file mode 100644 index 000000000..258671d87 Binary files /dev/null and b/public/terrain/19/858530/353826.terrain differ diff --git a/public/terrain/19/858530/353827.terrain b/public/terrain/19/858530/353827.terrain new file mode 100644 index 000000000..839026672 Binary files /dev/null and b/public/terrain/19/858530/353827.terrain differ diff --git a/public/terrain/19/858530/353828.terrain b/public/terrain/19/858530/353828.terrain new file mode 100644 index 000000000..b759076b4 Binary files /dev/null and b/public/terrain/19/858530/353828.terrain differ diff --git a/public/terrain/19/858530/353829.terrain b/public/terrain/19/858530/353829.terrain new file mode 100644 index 000000000..b7b25c6b9 Binary files /dev/null and b/public/terrain/19/858530/353829.terrain differ diff --git a/public/terrain/19/858530/353830.terrain b/public/terrain/19/858530/353830.terrain new file mode 100644 index 000000000..1e7461d5c Binary files /dev/null and b/public/terrain/19/858530/353830.terrain differ diff --git a/public/terrain/19/858530/353831.terrain b/public/terrain/19/858530/353831.terrain new file mode 100644 index 000000000..4a2c34236 Binary files /dev/null and b/public/terrain/19/858530/353831.terrain differ diff --git a/public/terrain/19/858530/353832.terrain b/public/terrain/19/858530/353832.terrain new file mode 100644 index 000000000..b58d2e1e0 Binary files /dev/null and b/public/terrain/19/858530/353832.terrain differ diff --git a/public/terrain/19/858530/353833.terrain b/public/terrain/19/858530/353833.terrain new file mode 100644 index 000000000..06c662b61 Binary files /dev/null and b/public/terrain/19/858530/353833.terrain differ diff --git a/public/terrain/19/858530/353834.terrain b/public/terrain/19/858530/353834.terrain new file mode 100644 index 000000000..618ee29da Binary files /dev/null and b/public/terrain/19/858530/353834.terrain differ diff --git a/public/terrain/19/858530/353835.terrain b/public/terrain/19/858530/353835.terrain new file mode 100644 index 000000000..70c408c24 Binary files /dev/null and b/public/terrain/19/858530/353835.terrain differ diff --git a/public/terrain/19/858530/353836.terrain b/public/terrain/19/858530/353836.terrain new file mode 100644 index 000000000..8de71bc6d Binary files /dev/null and b/public/terrain/19/858530/353836.terrain differ diff --git a/public/terrain/19/858530/353837.terrain b/public/terrain/19/858530/353837.terrain new file mode 100644 index 000000000..b6f9b43c6 Binary files /dev/null and b/public/terrain/19/858530/353837.terrain differ diff --git a/public/terrain/19/858530/353838.terrain b/public/terrain/19/858530/353838.terrain new file mode 100644 index 000000000..0dd1510f3 Binary files /dev/null and b/public/terrain/19/858530/353838.terrain differ diff --git a/public/terrain/19/858530/353839.terrain b/public/terrain/19/858530/353839.terrain new file mode 100644 index 000000000..f9aeae570 Binary files /dev/null and b/public/terrain/19/858530/353839.terrain differ diff --git a/public/terrain/19/858530/353840.terrain b/public/terrain/19/858530/353840.terrain new file mode 100644 index 000000000..d753b7d31 Binary files /dev/null and b/public/terrain/19/858530/353840.terrain differ diff --git a/public/terrain/19/858530/353841.terrain b/public/terrain/19/858530/353841.terrain new file mode 100644 index 000000000..5ed8e8713 Binary files /dev/null and b/public/terrain/19/858530/353841.terrain differ diff --git a/public/terrain/19/858530/353842.terrain b/public/terrain/19/858530/353842.terrain new file mode 100644 index 000000000..2a7223540 Binary files /dev/null and b/public/terrain/19/858530/353842.terrain differ diff --git a/public/terrain/19/858530/353843.terrain b/public/terrain/19/858530/353843.terrain new file mode 100644 index 000000000..e4c1bb19b Binary files /dev/null and b/public/terrain/19/858530/353843.terrain differ diff --git a/public/terrain/19/858530/353844.terrain b/public/terrain/19/858530/353844.terrain new file mode 100644 index 000000000..5a4ec9a36 Binary files /dev/null and b/public/terrain/19/858530/353844.terrain differ diff --git a/public/terrain/19/858530/353845.terrain b/public/terrain/19/858530/353845.terrain new file mode 100644 index 000000000..145ccec1e Binary files /dev/null and b/public/terrain/19/858530/353845.terrain differ diff --git a/public/terrain/19/858530/353846.terrain b/public/terrain/19/858530/353846.terrain new file mode 100644 index 000000000..b77bf4aad Binary files /dev/null and b/public/terrain/19/858530/353846.terrain differ diff --git a/public/terrain/19/858530/353847.terrain b/public/terrain/19/858530/353847.terrain new file mode 100644 index 000000000..6d21c2f1c Binary files /dev/null and b/public/terrain/19/858530/353847.terrain differ diff --git a/public/terrain/19/858530/353848.terrain b/public/terrain/19/858530/353848.terrain new file mode 100644 index 000000000..8189390e5 Binary files /dev/null and b/public/terrain/19/858530/353848.terrain differ diff --git a/public/terrain/19/858530/353849.terrain b/public/terrain/19/858530/353849.terrain new file mode 100644 index 000000000..2d383df66 Binary files /dev/null and b/public/terrain/19/858530/353849.terrain differ diff --git a/public/terrain/19/858530/353850.terrain b/public/terrain/19/858530/353850.terrain new file mode 100644 index 000000000..1f59e71b1 Binary files /dev/null and b/public/terrain/19/858530/353850.terrain differ diff --git a/public/terrain/19/858530/353851.terrain b/public/terrain/19/858530/353851.terrain new file mode 100644 index 000000000..a22f9c412 Binary files /dev/null and b/public/terrain/19/858530/353851.terrain differ diff --git a/public/terrain/19/858530/353852.terrain b/public/terrain/19/858530/353852.terrain new file mode 100644 index 000000000..b748e794e Binary files /dev/null and b/public/terrain/19/858530/353852.terrain differ diff --git a/public/terrain/19/858530/353853.terrain b/public/terrain/19/858530/353853.terrain new file mode 100644 index 000000000..138de000d Binary files /dev/null and b/public/terrain/19/858530/353853.terrain differ diff --git a/public/terrain/19/858530/353854.terrain b/public/terrain/19/858530/353854.terrain new file mode 100644 index 000000000..c00073c33 Binary files /dev/null and b/public/terrain/19/858530/353854.terrain differ diff --git a/public/terrain/19/858530/353855.terrain b/public/terrain/19/858530/353855.terrain new file mode 100644 index 000000000..710d8fc4f Binary files /dev/null and b/public/terrain/19/858530/353855.terrain differ diff --git a/public/terrain/19/858530/353856.terrain b/public/terrain/19/858530/353856.terrain new file mode 100644 index 000000000..70d118a75 Binary files /dev/null and b/public/terrain/19/858530/353856.terrain differ diff --git a/public/terrain/19/858530/353857.terrain b/public/terrain/19/858530/353857.terrain new file mode 100644 index 000000000..94a90e020 Binary files /dev/null and b/public/terrain/19/858530/353857.terrain differ diff --git a/public/terrain/19/858530/353858.terrain b/public/terrain/19/858530/353858.terrain new file mode 100644 index 000000000..6b97efd07 Binary files /dev/null and b/public/terrain/19/858530/353858.terrain differ diff --git a/public/terrain/19/858530/353859.terrain b/public/terrain/19/858530/353859.terrain new file mode 100644 index 000000000..5d17060d8 Binary files /dev/null and b/public/terrain/19/858530/353859.terrain differ diff --git a/public/terrain/19/858530/353860.terrain b/public/terrain/19/858530/353860.terrain new file mode 100644 index 000000000..a5ea91028 Binary files /dev/null and b/public/terrain/19/858530/353860.terrain differ diff --git a/public/terrain/19/858530/353861.terrain b/public/terrain/19/858530/353861.terrain new file mode 100644 index 000000000..3ac45e798 Binary files /dev/null and b/public/terrain/19/858530/353861.terrain differ diff --git a/public/terrain/19/858530/353862.terrain b/public/terrain/19/858530/353862.terrain new file mode 100644 index 000000000..f802959f4 Binary files /dev/null and b/public/terrain/19/858530/353862.terrain differ diff --git a/public/terrain/19/858530/353863.terrain b/public/terrain/19/858530/353863.terrain new file mode 100644 index 000000000..a50dc1fe1 Binary files /dev/null and b/public/terrain/19/858530/353863.terrain differ diff --git a/public/terrain/19/858530/353864.terrain b/public/terrain/19/858530/353864.terrain new file mode 100644 index 000000000..ad5eb162b Binary files /dev/null and b/public/terrain/19/858530/353864.terrain differ diff --git a/public/terrain/19/858530/353865.terrain b/public/terrain/19/858530/353865.terrain new file mode 100644 index 000000000..b13858085 Binary files /dev/null and b/public/terrain/19/858530/353865.terrain differ diff --git a/public/terrain/19/858530/353866.terrain b/public/terrain/19/858530/353866.terrain new file mode 100644 index 000000000..e9a1ca1c4 Binary files /dev/null and b/public/terrain/19/858530/353866.terrain differ diff --git a/public/terrain/19/858530/353867.terrain b/public/terrain/19/858530/353867.terrain new file mode 100644 index 000000000..caecbc19d Binary files /dev/null and b/public/terrain/19/858530/353867.terrain differ diff --git a/public/terrain/19/858530/353868.terrain b/public/terrain/19/858530/353868.terrain new file mode 100644 index 000000000..9dc9b8bcd Binary files /dev/null and b/public/terrain/19/858530/353868.terrain differ diff --git a/public/terrain/19/858530/353869.terrain b/public/terrain/19/858530/353869.terrain new file mode 100644 index 000000000..f0c78e452 Binary files /dev/null and b/public/terrain/19/858530/353869.terrain differ diff --git a/public/terrain/19/858530/353870.terrain b/public/terrain/19/858530/353870.terrain new file mode 100644 index 000000000..c29bba13a Binary files /dev/null and b/public/terrain/19/858530/353870.terrain differ diff --git a/public/terrain/19/858530/353871.terrain b/public/terrain/19/858530/353871.terrain new file mode 100644 index 000000000..5b5414da4 Binary files /dev/null and b/public/terrain/19/858530/353871.terrain differ diff --git a/public/terrain/19/858530/353872.terrain b/public/terrain/19/858530/353872.terrain new file mode 100644 index 000000000..de47329f7 Binary files /dev/null and b/public/terrain/19/858530/353872.terrain differ diff --git a/public/terrain/19/858530/353873.terrain b/public/terrain/19/858530/353873.terrain new file mode 100644 index 000000000..c5053d18d Binary files /dev/null and b/public/terrain/19/858530/353873.terrain differ diff --git a/public/terrain/19/858530/353874.terrain b/public/terrain/19/858530/353874.terrain new file mode 100644 index 000000000..8f74884b9 Binary files /dev/null and b/public/terrain/19/858530/353874.terrain differ diff --git a/public/terrain/19/858530/353875.terrain b/public/terrain/19/858530/353875.terrain new file mode 100644 index 000000000..db15b510e Binary files /dev/null and b/public/terrain/19/858530/353875.terrain differ diff --git a/public/terrain/19/858530/353876.terrain b/public/terrain/19/858530/353876.terrain new file mode 100644 index 000000000..5045c6597 Binary files /dev/null and b/public/terrain/19/858530/353876.terrain differ diff --git a/public/terrain/19/858530/353877.terrain b/public/terrain/19/858530/353877.terrain new file mode 100644 index 000000000..3ab4e879d Binary files /dev/null and b/public/terrain/19/858530/353877.terrain differ diff --git a/public/terrain/19/858530/353878.terrain b/public/terrain/19/858530/353878.terrain new file mode 100644 index 000000000..4863f56f0 Binary files /dev/null and b/public/terrain/19/858530/353878.terrain differ diff --git a/public/terrain/19/858530/353879.terrain b/public/terrain/19/858530/353879.terrain new file mode 100644 index 000000000..3577e0cd1 Binary files /dev/null and b/public/terrain/19/858530/353879.terrain differ diff --git a/public/terrain/19/858530/353880.terrain b/public/terrain/19/858530/353880.terrain new file mode 100644 index 000000000..e402ae09d Binary files /dev/null and b/public/terrain/19/858530/353880.terrain differ diff --git a/public/terrain/19/858530/353881.terrain b/public/terrain/19/858530/353881.terrain new file mode 100644 index 000000000..b883b3f37 Binary files /dev/null and b/public/terrain/19/858530/353881.terrain differ diff --git a/public/terrain/19/858530/353882.terrain b/public/terrain/19/858530/353882.terrain new file mode 100644 index 000000000..c1aee8ac2 Binary files /dev/null and b/public/terrain/19/858530/353882.terrain differ diff --git a/public/terrain/19/858530/353883.terrain b/public/terrain/19/858530/353883.terrain new file mode 100644 index 000000000..e5736b924 Binary files /dev/null and b/public/terrain/19/858530/353883.terrain differ diff --git a/public/terrain/19/858530/353884.terrain b/public/terrain/19/858530/353884.terrain new file mode 100644 index 000000000..ecf848a4c Binary files /dev/null and b/public/terrain/19/858530/353884.terrain differ diff --git a/public/terrain/19/858530/353885.terrain b/public/terrain/19/858530/353885.terrain new file mode 100644 index 000000000..73c2931b2 Binary files /dev/null and b/public/terrain/19/858530/353885.terrain differ diff --git a/public/terrain/19/858530/353886.terrain b/public/terrain/19/858530/353886.terrain new file mode 100644 index 000000000..a2e499c41 Binary files /dev/null and b/public/terrain/19/858530/353886.terrain differ diff --git a/public/terrain/19/858530/353887.terrain b/public/terrain/19/858530/353887.terrain new file mode 100644 index 000000000..569f8f11a Binary files /dev/null and b/public/terrain/19/858530/353887.terrain differ diff --git a/public/terrain/19/858530/353888.terrain b/public/terrain/19/858530/353888.terrain new file mode 100644 index 000000000..84915c4d5 Binary files /dev/null and b/public/terrain/19/858530/353888.terrain differ diff --git a/public/terrain/19/858530/353889.terrain b/public/terrain/19/858530/353889.terrain new file mode 100644 index 000000000..e4446209c Binary files /dev/null and b/public/terrain/19/858530/353889.terrain differ diff --git a/public/terrain/19/858530/353890.terrain b/public/terrain/19/858530/353890.terrain new file mode 100644 index 000000000..db40c17a0 Binary files /dev/null and b/public/terrain/19/858530/353890.terrain differ diff --git a/public/terrain/19/858530/353891.terrain b/public/terrain/19/858530/353891.terrain new file mode 100644 index 000000000..d258ec8f2 Binary files /dev/null and b/public/terrain/19/858530/353891.terrain differ diff --git a/public/terrain/19/858530/353892.terrain b/public/terrain/19/858530/353892.terrain new file mode 100644 index 000000000..fb8d6e8e6 Binary files /dev/null and b/public/terrain/19/858530/353892.terrain differ diff --git a/public/terrain/19/858530/353893.terrain b/public/terrain/19/858530/353893.terrain new file mode 100644 index 000000000..dc190e1d8 Binary files /dev/null and b/public/terrain/19/858530/353893.terrain differ diff --git a/public/terrain/19/858530/353894.terrain b/public/terrain/19/858530/353894.terrain new file mode 100644 index 000000000..04eeae245 Binary files /dev/null and b/public/terrain/19/858530/353894.terrain differ diff --git a/public/terrain/19/858530/353895.terrain b/public/terrain/19/858530/353895.terrain new file mode 100644 index 000000000..e5d33ba8c Binary files /dev/null and b/public/terrain/19/858530/353895.terrain differ diff --git a/public/terrain/19/858530/353896.terrain b/public/terrain/19/858530/353896.terrain new file mode 100644 index 000000000..f6da7ca8b Binary files /dev/null and b/public/terrain/19/858530/353896.terrain differ diff --git a/public/terrain/19/858530/353897.terrain b/public/terrain/19/858530/353897.terrain new file mode 100644 index 000000000..c8c608f62 Binary files /dev/null and b/public/terrain/19/858530/353897.terrain differ diff --git a/public/terrain/19/858530/353898.terrain b/public/terrain/19/858530/353898.terrain new file mode 100644 index 000000000..477c93275 Binary files /dev/null and b/public/terrain/19/858530/353898.terrain differ diff --git a/public/terrain/19/858530/353899.terrain b/public/terrain/19/858530/353899.terrain new file mode 100644 index 000000000..135082f18 Binary files /dev/null and b/public/terrain/19/858530/353899.terrain differ diff --git a/public/terrain/19/858530/353900.terrain b/public/terrain/19/858530/353900.terrain new file mode 100644 index 000000000..a94e2adca Binary files /dev/null and b/public/terrain/19/858530/353900.terrain differ diff --git a/public/terrain/19/858530/353901.terrain b/public/terrain/19/858530/353901.terrain new file mode 100644 index 000000000..4e9a95b7a Binary files /dev/null and b/public/terrain/19/858530/353901.terrain differ diff --git a/public/terrain/19/858530/353902.terrain b/public/terrain/19/858530/353902.terrain new file mode 100644 index 000000000..88d5fd0d9 Binary files /dev/null and b/public/terrain/19/858530/353902.terrain differ diff --git a/public/terrain/19/858530/353903.terrain b/public/terrain/19/858530/353903.terrain new file mode 100644 index 000000000..82eead1c6 Binary files /dev/null and b/public/terrain/19/858530/353903.terrain differ diff --git a/public/terrain/19/858530/353904.terrain b/public/terrain/19/858530/353904.terrain new file mode 100644 index 000000000..9f512c881 Binary files /dev/null and b/public/terrain/19/858530/353904.terrain differ diff --git a/public/terrain/19/858530/353905.terrain b/public/terrain/19/858530/353905.terrain new file mode 100644 index 000000000..f85d712ed Binary files /dev/null and b/public/terrain/19/858530/353905.terrain differ diff --git a/public/terrain/19/858530/353906.terrain b/public/terrain/19/858530/353906.terrain new file mode 100644 index 000000000..3c77564c6 Binary files /dev/null and b/public/terrain/19/858530/353906.terrain differ diff --git a/public/terrain/19/858530/353907.terrain b/public/terrain/19/858530/353907.terrain new file mode 100644 index 000000000..fbce098d3 Binary files /dev/null and b/public/terrain/19/858530/353907.terrain differ diff --git a/public/terrain/19/858530/353908.terrain b/public/terrain/19/858530/353908.terrain new file mode 100644 index 000000000..737e07bd2 Binary files /dev/null and b/public/terrain/19/858530/353908.terrain differ diff --git a/public/terrain/19/858530/353909.terrain b/public/terrain/19/858530/353909.terrain new file mode 100644 index 000000000..dadde42cb Binary files /dev/null and b/public/terrain/19/858530/353909.terrain differ diff --git a/public/terrain/19/858530/353910.terrain b/public/terrain/19/858530/353910.terrain new file mode 100644 index 000000000..6e8c5125b Binary files /dev/null and b/public/terrain/19/858530/353910.terrain differ diff --git a/public/terrain/19/858530/353911.terrain b/public/terrain/19/858530/353911.terrain new file mode 100644 index 000000000..3a9f45a4f Binary files /dev/null and b/public/terrain/19/858530/353911.terrain differ diff --git a/public/terrain/19/858530/353912.terrain b/public/terrain/19/858530/353912.terrain new file mode 100644 index 000000000..4271801ff Binary files /dev/null and b/public/terrain/19/858530/353912.terrain differ diff --git a/public/terrain/19/858530/353913.terrain b/public/terrain/19/858530/353913.terrain new file mode 100644 index 000000000..467d7074d Binary files /dev/null and b/public/terrain/19/858530/353913.terrain differ diff --git a/public/terrain/19/858530/353914.terrain b/public/terrain/19/858530/353914.terrain new file mode 100644 index 000000000..51b6639ac Binary files /dev/null and b/public/terrain/19/858530/353914.terrain differ diff --git a/public/terrain/19/858530/353915.terrain b/public/terrain/19/858530/353915.terrain new file mode 100644 index 000000000..471a88bba Binary files /dev/null and b/public/terrain/19/858530/353915.terrain differ diff --git a/public/terrain/19/858530/353916.terrain b/public/terrain/19/858530/353916.terrain new file mode 100644 index 000000000..3c12adc2e Binary files /dev/null and b/public/terrain/19/858530/353916.terrain differ diff --git a/public/terrain/19/858530/353917.terrain b/public/terrain/19/858530/353917.terrain new file mode 100644 index 000000000..cf2169d84 Binary files /dev/null and b/public/terrain/19/858530/353917.terrain differ diff --git a/public/terrain/19/858530/353918.terrain b/public/terrain/19/858530/353918.terrain new file mode 100644 index 000000000..5ab6d123b Binary files /dev/null and b/public/terrain/19/858530/353918.terrain differ diff --git a/public/terrain/19/858530/353919.terrain b/public/terrain/19/858530/353919.terrain new file mode 100644 index 000000000..c3e1b901d Binary files /dev/null and b/public/terrain/19/858530/353919.terrain differ diff --git a/public/terrain/19/858530/353920.terrain b/public/terrain/19/858530/353920.terrain new file mode 100644 index 000000000..c240aeab2 Binary files /dev/null and b/public/terrain/19/858530/353920.terrain differ diff --git a/public/terrain/19/858530/353921.terrain b/public/terrain/19/858530/353921.terrain new file mode 100644 index 000000000..248a3fd14 Binary files /dev/null and b/public/terrain/19/858530/353921.terrain differ diff --git a/public/terrain/19/858530/353922.terrain b/public/terrain/19/858530/353922.terrain new file mode 100644 index 000000000..959cd92f2 Binary files /dev/null and b/public/terrain/19/858530/353922.terrain differ diff --git a/public/terrain/19/858530/353923.terrain b/public/terrain/19/858530/353923.terrain new file mode 100644 index 000000000..183a84559 Binary files /dev/null and b/public/terrain/19/858530/353923.terrain differ diff --git a/public/terrain/19/858530/353924.terrain b/public/terrain/19/858530/353924.terrain new file mode 100644 index 000000000..8fb475113 Binary files /dev/null and b/public/terrain/19/858530/353924.terrain differ diff --git a/public/terrain/19/858530/353925.terrain b/public/terrain/19/858530/353925.terrain new file mode 100644 index 000000000..51b914a3f Binary files /dev/null and b/public/terrain/19/858530/353925.terrain differ diff --git a/public/terrain/19/858530/353926.terrain b/public/terrain/19/858530/353926.terrain new file mode 100644 index 000000000..8d425fa1f Binary files /dev/null and b/public/terrain/19/858530/353926.terrain differ diff --git a/public/terrain/19/858530/353927.terrain b/public/terrain/19/858530/353927.terrain new file mode 100644 index 000000000..e6d35823a Binary files /dev/null and b/public/terrain/19/858530/353927.terrain differ diff --git a/public/terrain/19/858530/353928.terrain b/public/terrain/19/858530/353928.terrain new file mode 100644 index 000000000..ee22edf81 Binary files /dev/null and b/public/terrain/19/858530/353928.terrain differ diff --git a/public/terrain/19/858530/353929.terrain b/public/terrain/19/858530/353929.terrain new file mode 100644 index 000000000..1ce09e348 Binary files /dev/null and b/public/terrain/19/858530/353929.terrain differ diff --git a/public/terrain/19/858530/353930.terrain b/public/terrain/19/858530/353930.terrain new file mode 100644 index 000000000..245d11f3d Binary files /dev/null and b/public/terrain/19/858530/353930.terrain differ diff --git a/public/terrain/19/858530/353931.terrain b/public/terrain/19/858530/353931.terrain new file mode 100644 index 000000000..67a6cad2e Binary files /dev/null and b/public/terrain/19/858530/353931.terrain differ diff --git a/public/terrain/19/858530/353932.terrain b/public/terrain/19/858530/353932.terrain new file mode 100644 index 000000000..2b8a6b8eb Binary files /dev/null and b/public/terrain/19/858530/353932.terrain differ diff --git a/public/terrain/19/858530/353933.terrain b/public/terrain/19/858530/353933.terrain new file mode 100644 index 000000000..a914fb2e2 Binary files /dev/null and b/public/terrain/19/858530/353933.terrain differ diff --git a/public/terrain/19/858530/353934.terrain b/public/terrain/19/858530/353934.terrain new file mode 100644 index 000000000..d1e7de7fd Binary files /dev/null and b/public/terrain/19/858530/353934.terrain differ diff --git a/public/terrain/19/858530/353935.terrain b/public/terrain/19/858530/353935.terrain new file mode 100644 index 000000000..b9beca9ed Binary files /dev/null and b/public/terrain/19/858530/353935.terrain differ diff --git a/public/terrain/19/858530/353936.terrain b/public/terrain/19/858530/353936.terrain new file mode 100644 index 000000000..bc44c5c3c Binary files /dev/null and b/public/terrain/19/858530/353936.terrain differ diff --git a/public/terrain/19/858530/353937.terrain b/public/terrain/19/858530/353937.terrain new file mode 100644 index 000000000..a65f86afc Binary files /dev/null and b/public/terrain/19/858530/353937.terrain differ diff --git a/public/terrain/19/858530/353938.terrain b/public/terrain/19/858530/353938.terrain new file mode 100644 index 000000000..f9c3aa542 Binary files /dev/null and b/public/terrain/19/858530/353938.terrain differ diff --git a/public/terrain/19/858530/353939.terrain b/public/terrain/19/858530/353939.terrain new file mode 100644 index 000000000..8951353fb Binary files /dev/null and b/public/terrain/19/858530/353939.terrain differ diff --git a/public/terrain/19/858530/353940.terrain b/public/terrain/19/858530/353940.terrain new file mode 100644 index 000000000..0f570d3f3 Binary files /dev/null and b/public/terrain/19/858530/353940.terrain differ diff --git a/public/terrain/19/858530/353941.terrain b/public/terrain/19/858530/353941.terrain new file mode 100644 index 000000000..0c21acc73 Binary files /dev/null and b/public/terrain/19/858530/353941.terrain differ diff --git a/public/terrain/19/858530/353942.terrain b/public/terrain/19/858530/353942.terrain new file mode 100644 index 000000000..e5a356e7d Binary files /dev/null and b/public/terrain/19/858530/353942.terrain differ diff --git a/public/terrain/19/858530/353943.terrain b/public/terrain/19/858530/353943.terrain new file mode 100644 index 000000000..76109a1d6 Binary files /dev/null and b/public/terrain/19/858530/353943.terrain differ diff --git a/public/terrain/19/858530/353944.terrain b/public/terrain/19/858530/353944.terrain new file mode 100644 index 000000000..ea53e321d Binary files /dev/null and b/public/terrain/19/858530/353944.terrain differ diff --git a/public/terrain/19/858530/353945.terrain b/public/terrain/19/858530/353945.terrain new file mode 100644 index 000000000..c50ab7cb0 Binary files /dev/null and b/public/terrain/19/858530/353945.terrain differ diff --git a/public/terrain/19/858530/353946.terrain b/public/terrain/19/858530/353946.terrain new file mode 100644 index 000000000..48d87a818 Binary files /dev/null and b/public/terrain/19/858530/353946.terrain differ diff --git a/public/terrain/19/858530/353947.terrain b/public/terrain/19/858530/353947.terrain new file mode 100644 index 000000000..c1f3413a7 Binary files /dev/null and b/public/terrain/19/858530/353947.terrain differ diff --git a/public/terrain/19/858530/353948.terrain b/public/terrain/19/858530/353948.terrain new file mode 100644 index 000000000..d16baef77 Binary files /dev/null and b/public/terrain/19/858530/353948.terrain differ diff --git a/public/terrain/19/858530/353949.terrain b/public/terrain/19/858530/353949.terrain new file mode 100644 index 000000000..7f44455dd Binary files /dev/null and b/public/terrain/19/858530/353949.terrain differ diff --git a/public/terrain/19/858530/353950.terrain b/public/terrain/19/858530/353950.terrain new file mode 100644 index 000000000..6587ded90 Binary files /dev/null and b/public/terrain/19/858530/353950.terrain differ diff --git a/public/terrain/19/858530/353951.terrain b/public/terrain/19/858530/353951.terrain new file mode 100644 index 000000000..3211274e3 Binary files /dev/null and b/public/terrain/19/858530/353951.terrain differ diff --git a/public/terrain/19/858530/353952.terrain b/public/terrain/19/858530/353952.terrain new file mode 100644 index 000000000..1e6922d00 Binary files /dev/null and b/public/terrain/19/858530/353952.terrain differ diff --git a/public/terrain/19/858530/353953.terrain b/public/terrain/19/858530/353953.terrain new file mode 100644 index 000000000..69d1715c0 Binary files /dev/null and b/public/terrain/19/858530/353953.terrain differ diff --git a/public/terrain/19/858530/353954.terrain b/public/terrain/19/858530/353954.terrain new file mode 100644 index 000000000..76fce9dea Binary files /dev/null and b/public/terrain/19/858530/353954.terrain differ diff --git a/public/terrain/19/858530/353955.terrain b/public/terrain/19/858530/353955.terrain new file mode 100644 index 000000000..76e94a913 Binary files /dev/null and b/public/terrain/19/858530/353955.terrain differ diff --git a/public/terrain/19/858530/353956.terrain b/public/terrain/19/858530/353956.terrain new file mode 100644 index 000000000..35e62082e Binary files /dev/null and b/public/terrain/19/858530/353956.terrain differ diff --git a/public/terrain/19/858530/353957.terrain b/public/terrain/19/858530/353957.terrain new file mode 100644 index 000000000..5fa4a72eb Binary files /dev/null and b/public/terrain/19/858530/353957.terrain differ diff --git a/public/terrain/19/858530/353958.terrain b/public/terrain/19/858530/353958.terrain new file mode 100644 index 000000000..33b081dc3 Binary files /dev/null and b/public/terrain/19/858530/353958.terrain differ diff --git a/public/terrain/19/858530/353959.terrain b/public/terrain/19/858530/353959.terrain new file mode 100644 index 000000000..349f707ec Binary files /dev/null and b/public/terrain/19/858530/353959.terrain differ diff --git a/public/terrain/19/858530/353960.terrain b/public/terrain/19/858530/353960.terrain new file mode 100644 index 000000000..10c7b6a87 Binary files /dev/null and b/public/terrain/19/858530/353960.terrain differ diff --git a/public/terrain/19/858530/353961.terrain b/public/terrain/19/858530/353961.terrain new file mode 100644 index 000000000..5b8e2ff90 Binary files /dev/null and b/public/terrain/19/858530/353961.terrain differ diff --git a/public/terrain/19/858530/353962.terrain b/public/terrain/19/858530/353962.terrain new file mode 100644 index 000000000..0544bbe52 Binary files /dev/null and b/public/terrain/19/858530/353962.terrain differ diff --git a/public/terrain/19/858530/353963.terrain b/public/terrain/19/858530/353963.terrain new file mode 100644 index 000000000..ed62dd8c3 Binary files /dev/null and b/public/terrain/19/858530/353963.terrain differ diff --git a/public/terrain/19/858530/353964.terrain b/public/terrain/19/858530/353964.terrain new file mode 100644 index 000000000..7d30393ba Binary files /dev/null and b/public/terrain/19/858530/353964.terrain differ diff --git a/public/terrain/19/858530/353965.terrain b/public/terrain/19/858530/353965.terrain new file mode 100644 index 000000000..cdbc1792f Binary files /dev/null and b/public/terrain/19/858530/353965.terrain differ diff --git a/public/terrain/19/858530/353966.terrain b/public/terrain/19/858530/353966.terrain new file mode 100644 index 000000000..28be657b4 Binary files /dev/null and b/public/terrain/19/858530/353966.terrain differ diff --git a/public/terrain/19/858530/353967.terrain b/public/terrain/19/858530/353967.terrain new file mode 100644 index 000000000..a2e5d3fd8 Binary files /dev/null and b/public/terrain/19/858530/353967.terrain differ diff --git a/public/terrain/19/858530/353968.terrain b/public/terrain/19/858530/353968.terrain new file mode 100644 index 000000000..3a7606d18 Binary files /dev/null and b/public/terrain/19/858530/353968.terrain differ diff --git a/public/terrain/19/858530/353969.terrain b/public/terrain/19/858530/353969.terrain new file mode 100644 index 000000000..8cd84af4a Binary files /dev/null and b/public/terrain/19/858530/353969.terrain differ diff --git a/public/terrain/19/858530/353970.terrain b/public/terrain/19/858530/353970.terrain new file mode 100644 index 000000000..d0c5f058c Binary files /dev/null and b/public/terrain/19/858530/353970.terrain differ diff --git a/public/terrain/19/858530/353971.terrain b/public/terrain/19/858530/353971.terrain new file mode 100644 index 000000000..10e59e31f Binary files /dev/null and b/public/terrain/19/858530/353971.terrain differ diff --git a/public/terrain/19/858530/353972.terrain b/public/terrain/19/858530/353972.terrain new file mode 100644 index 000000000..dda3d5910 Binary files /dev/null and b/public/terrain/19/858530/353972.terrain differ diff --git a/public/terrain/19/858530/353973.terrain b/public/terrain/19/858530/353973.terrain new file mode 100644 index 000000000..433acbff4 Binary files /dev/null and b/public/terrain/19/858530/353973.terrain differ diff --git a/public/terrain/19/858530/353974.terrain b/public/terrain/19/858530/353974.terrain new file mode 100644 index 000000000..d79b11418 Binary files /dev/null and b/public/terrain/19/858530/353974.terrain differ diff --git a/public/terrain/19/858530/353975.terrain b/public/terrain/19/858530/353975.terrain new file mode 100644 index 000000000..3089efb6c Binary files /dev/null and b/public/terrain/19/858530/353975.terrain differ diff --git a/public/terrain/19/858530/353976.terrain b/public/terrain/19/858530/353976.terrain new file mode 100644 index 000000000..46bac30be Binary files /dev/null and b/public/terrain/19/858530/353976.terrain differ diff --git a/public/terrain/19/858530/353977.terrain b/public/terrain/19/858530/353977.terrain new file mode 100644 index 000000000..78ae35c7a Binary files /dev/null and b/public/terrain/19/858530/353977.terrain differ diff --git a/public/terrain/19/858530/353978.terrain b/public/terrain/19/858530/353978.terrain new file mode 100644 index 000000000..a8211bf30 Binary files /dev/null and b/public/terrain/19/858530/353978.terrain differ diff --git a/public/terrain/19/858530/353979.terrain b/public/terrain/19/858530/353979.terrain new file mode 100644 index 000000000..b50bbf474 Binary files /dev/null and b/public/terrain/19/858530/353979.terrain differ diff --git a/public/terrain/19/858530/353980.terrain b/public/terrain/19/858530/353980.terrain new file mode 100644 index 000000000..2e20b2fab Binary files /dev/null and b/public/terrain/19/858530/353980.terrain differ diff --git a/public/terrain/19/858530/353981.terrain b/public/terrain/19/858530/353981.terrain new file mode 100644 index 000000000..b73f8111c Binary files /dev/null and b/public/terrain/19/858530/353981.terrain differ diff --git a/public/terrain/19/858530/353982.terrain b/public/terrain/19/858530/353982.terrain new file mode 100644 index 000000000..b3434a2ce Binary files /dev/null and b/public/terrain/19/858530/353982.terrain differ diff --git a/public/terrain/19/858530/353983.terrain b/public/terrain/19/858530/353983.terrain new file mode 100644 index 000000000..0b2df74ae Binary files /dev/null and b/public/terrain/19/858530/353983.terrain differ diff --git a/public/terrain/19/858530/353984.terrain b/public/terrain/19/858530/353984.terrain new file mode 100644 index 000000000..eb462476a Binary files /dev/null and b/public/terrain/19/858530/353984.terrain differ diff --git a/public/terrain/19/858530/353985.terrain b/public/terrain/19/858530/353985.terrain new file mode 100644 index 000000000..6ea58acd8 Binary files /dev/null and b/public/terrain/19/858530/353985.terrain differ diff --git a/public/terrain/19/858530/353986.terrain b/public/terrain/19/858530/353986.terrain new file mode 100644 index 000000000..ed73f5f7b Binary files /dev/null and b/public/terrain/19/858530/353986.terrain differ diff --git a/public/terrain/19/858530/353987.terrain b/public/terrain/19/858530/353987.terrain new file mode 100644 index 000000000..2d8b08a61 Binary files /dev/null and b/public/terrain/19/858530/353987.terrain differ diff --git a/public/terrain/19/858530/353988.terrain b/public/terrain/19/858530/353988.terrain new file mode 100644 index 000000000..7eec03243 Binary files /dev/null and b/public/terrain/19/858530/353988.terrain differ diff --git a/public/terrain/19/858530/353989.terrain b/public/terrain/19/858530/353989.terrain new file mode 100644 index 000000000..d6003501e Binary files /dev/null and b/public/terrain/19/858530/353989.terrain differ diff --git a/public/terrain/19/858530/353990.terrain b/public/terrain/19/858530/353990.terrain new file mode 100644 index 000000000..cc1e39bed Binary files /dev/null and b/public/terrain/19/858530/353990.terrain differ diff --git a/public/terrain/19/858530/353991.terrain b/public/terrain/19/858530/353991.terrain new file mode 100644 index 000000000..844502679 Binary files /dev/null and b/public/terrain/19/858530/353991.terrain differ diff --git a/public/terrain/19/858530/353992.terrain b/public/terrain/19/858530/353992.terrain new file mode 100644 index 000000000..3400331cd Binary files /dev/null and b/public/terrain/19/858530/353992.terrain differ diff --git a/public/terrain/19/858530/353993.terrain b/public/terrain/19/858530/353993.terrain new file mode 100644 index 000000000..e1a613af5 Binary files /dev/null and b/public/terrain/19/858530/353993.terrain differ diff --git a/public/terrain/19/858530/353994.terrain b/public/terrain/19/858530/353994.terrain new file mode 100644 index 000000000..f8829b16f Binary files /dev/null and b/public/terrain/19/858530/353994.terrain differ diff --git a/public/terrain/19/858530/353995.terrain b/public/terrain/19/858530/353995.terrain new file mode 100644 index 000000000..d641bf2f2 Binary files /dev/null and b/public/terrain/19/858530/353995.terrain differ diff --git a/public/terrain/19/858530/353996.terrain b/public/terrain/19/858530/353996.terrain new file mode 100644 index 000000000..b217b98bd Binary files /dev/null and b/public/terrain/19/858530/353996.terrain differ diff --git a/public/terrain/19/858530/353997.terrain b/public/terrain/19/858530/353997.terrain new file mode 100644 index 000000000..838cd7668 Binary files /dev/null and b/public/terrain/19/858530/353997.terrain differ diff --git a/public/terrain/19/858530/353998.terrain b/public/terrain/19/858530/353998.terrain new file mode 100644 index 000000000..fb4dd8558 Binary files /dev/null and b/public/terrain/19/858530/353998.terrain differ diff --git a/public/terrain/19/858530/353999.terrain b/public/terrain/19/858530/353999.terrain new file mode 100644 index 000000000..a91f26ead Binary files /dev/null and b/public/terrain/19/858530/353999.terrain differ diff --git a/public/terrain/19/858530/354000.terrain b/public/terrain/19/858530/354000.terrain new file mode 100644 index 000000000..228166f10 Binary files /dev/null and b/public/terrain/19/858530/354000.terrain differ diff --git a/public/terrain/19/858530/354001.terrain b/public/terrain/19/858530/354001.terrain new file mode 100644 index 000000000..b3b2924a4 Binary files /dev/null and b/public/terrain/19/858530/354001.terrain differ diff --git a/public/terrain/19/858530/354002.terrain b/public/terrain/19/858530/354002.terrain new file mode 100644 index 000000000..84a2ea7d9 Binary files /dev/null and b/public/terrain/19/858530/354002.terrain differ diff --git a/public/terrain/19/858530/354003.terrain b/public/terrain/19/858530/354003.terrain new file mode 100644 index 000000000..48606188d Binary files /dev/null and b/public/terrain/19/858530/354003.terrain differ diff --git a/public/terrain/19/858530/354004.terrain b/public/terrain/19/858530/354004.terrain new file mode 100644 index 000000000..c8d66ae5e Binary files /dev/null and b/public/terrain/19/858530/354004.terrain differ diff --git a/public/terrain/19/858530/354005.terrain b/public/terrain/19/858530/354005.terrain new file mode 100644 index 000000000..37ba1bc9b Binary files /dev/null and b/public/terrain/19/858530/354005.terrain differ diff --git a/public/terrain/19/858530/354006.terrain b/public/terrain/19/858530/354006.terrain new file mode 100644 index 000000000..1f987cbc9 Binary files /dev/null and b/public/terrain/19/858530/354006.terrain differ diff --git a/public/terrain/19/858530/354007.terrain b/public/terrain/19/858530/354007.terrain new file mode 100644 index 000000000..31bbd4921 Binary files /dev/null and b/public/terrain/19/858530/354007.terrain differ diff --git a/public/terrain/19/858530/354008.terrain b/public/terrain/19/858530/354008.terrain new file mode 100644 index 000000000..4dd0cd6de Binary files /dev/null and b/public/terrain/19/858530/354008.terrain differ diff --git a/public/terrain/19/858530/354009.terrain b/public/terrain/19/858530/354009.terrain new file mode 100644 index 000000000..6714e96dd Binary files /dev/null and b/public/terrain/19/858530/354009.terrain differ diff --git a/public/terrain/19/858530/354010.terrain b/public/terrain/19/858530/354010.terrain new file mode 100644 index 000000000..ac1b1f988 Binary files /dev/null and b/public/terrain/19/858530/354010.terrain differ diff --git a/public/terrain/19/858530/354011.terrain b/public/terrain/19/858530/354011.terrain new file mode 100644 index 000000000..30fc50dae Binary files /dev/null and b/public/terrain/19/858530/354011.terrain differ diff --git a/public/terrain/19/858530/354012.terrain b/public/terrain/19/858530/354012.terrain new file mode 100644 index 000000000..30456a74c Binary files /dev/null and b/public/terrain/19/858530/354012.terrain differ diff --git a/public/terrain/19/858530/354013.terrain b/public/terrain/19/858530/354013.terrain new file mode 100644 index 000000000..c995fa0ba Binary files /dev/null and b/public/terrain/19/858530/354013.terrain differ diff --git a/public/terrain/19/858530/354014.terrain b/public/terrain/19/858530/354014.terrain new file mode 100644 index 000000000..dc179264f Binary files /dev/null and b/public/terrain/19/858530/354014.terrain differ diff --git a/public/terrain/19/858530/354015.terrain b/public/terrain/19/858530/354015.terrain new file mode 100644 index 000000000..941ecb4ad Binary files /dev/null and b/public/terrain/19/858530/354015.terrain differ diff --git a/public/terrain/19/858530/354016.terrain b/public/terrain/19/858530/354016.terrain new file mode 100644 index 000000000..14e47ff03 Binary files /dev/null and b/public/terrain/19/858530/354016.terrain differ diff --git a/public/terrain/19/858530/354017.terrain b/public/terrain/19/858530/354017.terrain new file mode 100644 index 000000000..609eb06f2 Binary files /dev/null and b/public/terrain/19/858530/354017.terrain differ diff --git a/public/terrain/19/858530/354018.terrain b/public/terrain/19/858530/354018.terrain new file mode 100644 index 000000000..6347dbffa Binary files /dev/null and b/public/terrain/19/858530/354018.terrain differ diff --git a/public/terrain/19/858530/354019.terrain b/public/terrain/19/858530/354019.terrain new file mode 100644 index 000000000..9187d5586 Binary files /dev/null and b/public/terrain/19/858530/354019.terrain differ diff --git a/public/terrain/19/858530/354020.terrain b/public/terrain/19/858530/354020.terrain new file mode 100644 index 000000000..208ab5ad5 Binary files /dev/null and b/public/terrain/19/858530/354020.terrain differ diff --git a/public/terrain/19/858530/354021.terrain b/public/terrain/19/858530/354021.terrain new file mode 100644 index 000000000..24bd94088 Binary files /dev/null and b/public/terrain/19/858530/354021.terrain differ diff --git a/public/terrain/19/858530/354022.terrain b/public/terrain/19/858530/354022.terrain new file mode 100644 index 000000000..93b7edaa8 Binary files /dev/null and b/public/terrain/19/858530/354022.terrain differ diff --git a/public/terrain/19/858530/354023.terrain b/public/terrain/19/858530/354023.terrain new file mode 100644 index 000000000..25aed4e3a Binary files /dev/null and b/public/terrain/19/858530/354023.terrain differ diff --git a/public/terrain/19/858530/354024.terrain b/public/terrain/19/858530/354024.terrain new file mode 100644 index 000000000..0f53c9d14 Binary files /dev/null and b/public/terrain/19/858530/354024.terrain differ diff --git a/public/terrain/19/858530/354025.terrain b/public/terrain/19/858530/354025.terrain new file mode 100644 index 000000000..1ddb7438f Binary files /dev/null and b/public/terrain/19/858530/354025.terrain differ diff --git a/public/terrain/19/858530/354026.terrain b/public/terrain/19/858530/354026.terrain new file mode 100644 index 000000000..86d13ce72 Binary files /dev/null and b/public/terrain/19/858530/354026.terrain differ diff --git a/public/terrain/19/858530/354027.terrain b/public/terrain/19/858530/354027.terrain new file mode 100644 index 000000000..c20481e00 Binary files /dev/null and b/public/terrain/19/858530/354027.terrain differ diff --git a/public/terrain/19/858530/354028.terrain b/public/terrain/19/858530/354028.terrain new file mode 100644 index 000000000..0a97ad130 Binary files /dev/null and b/public/terrain/19/858530/354028.terrain differ diff --git a/public/terrain/19/858530/354029.terrain b/public/terrain/19/858530/354029.terrain new file mode 100644 index 000000000..699378800 Binary files /dev/null and b/public/terrain/19/858530/354029.terrain differ diff --git a/public/terrain/19/858530/354030.terrain b/public/terrain/19/858530/354030.terrain new file mode 100644 index 000000000..da0d80a68 Binary files /dev/null and b/public/terrain/19/858530/354030.terrain differ diff --git a/public/terrain/19/858530/354031.terrain b/public/terrain/19/858530/354031.terrain new file mode 100644 index 000000000..92cb805f3 Binary files /dev/null and b/public/terrain/19/858530/354031.terrain differ diff --git a/public/terrain/19/858530/354032.terrain b/public/terrain/19/858530/354032.terrain new file mode 100644 index 000000000..46987041f Binary files /dev/null and b/public/terrain/19/858530/354032.terrain differ diff --git a/public/terrain/19/858530/354033.terrain b/public/terrain/19/858530/354033.terrain new file mode 100644 index 000000000..78df080b4 Binary files /dev/null and b/public/terrain/19/858530/354033.terrain differ diff --git a/public/terrain/19/858530/354034.terrain b/public/terrain/19/858530/354034.terrain new file mode 100644 index 000000000..f7a893d17 Binary files /dev/null and b/public/terrain/19/858530/354034.terrain differ diff --git a/public/terrain/19/858530/354035.terrain b/public/terrain/19/858530/354035.terrain new file mode 100644 index 000000000..711c956e0 Binary files /dev/null and b/public/terrain/19/858530/354035.terrain differ diff --git a/public/terrain/19/858530/354036.terrain b/public/terrain/19/858530/354036.terrain new file mode 100644 index 000000000..6cb713d9e Binary files /dev/null and b/public/terrain/19/858530/354036.terrain differ diff --git a/public/terrain/19/858530/354037.terrain b/public/terrain/19/858530/354037.terrain new file mode 100644 index 000000000..b5465922b Binary files /dev/null and b/public/terrain/19/858530/354037.terrain differ diff --git a/public/terrain/19/858530/354038.terrain b/public/terrain/19/858530/354038.terrain new file mode 100644 index 000000000..477fcc851 Binary files /dev/null and b/public/terrain/19/858530/354038.terrain differ diff --git a/public/terrain/19/858530/354039.terrain b/public/terrain/19/858530/354039.terrain new file mode 100644 index 000000000..d8510b453 Binary files /dev/null and b/public/terrain/19/858530/354039.terrain differ diff --git a/public/terrain/19/858530/354040.terrain b/public/terrain/19/858530/354040.terrain new file mode 100644 index 000000000..71220d5fa Binary files /dev/null and b/public/terrain/19/858530/354040.terrain differ diff --git a/public/terrain/19/858530/354041.terrain b/public/terrain/19/858530/354041.terrain new file mode 100644 index 000000000..1572bd44e Binary files /dev/null and b/public/terrain/19/858530/354041.terrain differ diff --git a/public/terrain/19/858530/354042.terrain b/public/terrain/19/858530/354042.terrain new file mode 100644 index 000000000..65d89c3bc Binary files /dev/null and b/public/terrain/19/858530/354042.terrain differ diff --git a/public/terrain/19/858530/354043.terrain b/public/terrain/19/858530/354043.terrain new file mode 100644 index 000000000..d6e372825 Binary files /dev/null and b/public/terrain/19/858530/354043.terrain differ diff --git a/public/terrain/19/858530/354044.terrain b/public/terrain/19/858530/354044.terrain new file mode 100644 index 000000000..bf0d6828b Binary files /dev/null and b/public/terrain/19/858530/354044.terrain differ diff --git a/public/terrain/19/858530/354045.terrain b/public/terrain/19/858530/354045.terrain new file mode 100644 index 000000000..a7e8ddcb5 Binary files /dev/null and b/public/terrain/19/858530/354045.terrain differ diff --git a/public/terrain/19/858530/354046.terrain b/public/terrain/19/858530/354046.terrain new file mode 100644 index 000000000..5ede1981b Binary files /dev/null and b/public/terrain/19/858530/354046.terrain differ diff --git a/public/terrain/19/858530/354047.terrain b/public/terrain/19/858530/354047.terrain new file mode 100644 index 000000000..edd0b444a Binary files /dev/null and b/public/terrain/19/858530/354047.terrain differ diff --git a/public/terrain/19/858530/354048.terrain b/public/terrain/19/858530/354048.terrain new file mode 100644 index 000000000..7283362dd Binary files /dev/null and b/public/terrain/19/858530/354048.terrain differ diff --git a/public/terrain/19/858530/354049.terrain b/public/terrain/19/858530/354049.terrain new file mode 100644 index 000000000..34bf3aab0 Binary files /dev/null and b/public/terrain/19/858530/354049.terrain differ diff --git a/public/terrain/19/858530/354050.terrain b/public/terrain/19/858530/354050.terrain new file mode 100644 index 000000000..746658a9e Binary files /dev/null and b/public/terrain/19/858530/354050.terrain differ diff --git a/public/terrain/19/858530/354051.terrain b/public/terrain/19/858530/354051.terrain new file mode 100644 index 000000000..cec7a7a40 Binary files /dev/null and b/public/terrain/19/858530/354051.terrain differ diff --git a/public/terrain/19/858530/354052.terrain b/public/terrain/19/858530/354052.terrain new file mode 100644 index 000000000..c3b14a5d1 Binary files /dev/null and b/public/terrain/19/858530/354052.terrain differ diff --git a/public/terrain/19/858530/354053.terrain b/public/terrain/19/858530/354053.terrain new file mode 100644 index 000000000..d281f5980 Binary files /dev/null and b/public/terrain/19/858530/354053.terrain differ diff --git a/public/terrain/19/858530/354054.terrain b/public/terrain/19/858530/354054.terrain new file mode 100644 index 000000000..0d3965d4b Binary files /dev/null and b/public/terrain/19/858530/354054.terrain differ diff --git a/public/terrain/19/858530/354055.terrain b/public/terrain/19/858530/354055.terrain new file mode 100644 index 000000000..89b44fd85 Binary files /dev/null and b/public/terrain/19/858530/354055.terrain differ diff --git a/public/terrain/19/858530/354056.terrain b/public/terrain/19/858530/354056.terrain new file mode 100644 index 000000000..8764fba4f Binary files /dev/null and b/public/terrain/19/858530/354056.terrain differ diff --git a/public/terrain/19/858530/354057.terrain b/public/terrain/19/858530/354057.terrain new file mode 100644 index 000000000..d0eb5a0a4 Binary files /dev/null and b/public/terrain/19/858530/354057.terrain differ diff --git a/public/terrain/19/858530/354058.terrain b/public/terrain/19/858530/354058.terrain new file mode 100644 index 000000000..cd002d343 Binary files /dev/null and b/public/terrain/19/858530/354058.terrain differ diff --git a/public/terrain/19/858530/354059.terrain b/public/terrain/19/858530/354059.terrain new file mode 100644 index 000000000..8100ec5fb Binary files /dev/null and b/public/terrain/19/858530/354059.terrain differ diff --git a/public/terrain/19/858531/353743.terrain b/public/terrain/19/858531/353743.terrain new file mode 100644 index 000000000..f7ff0d7bb Binary files /dev/null and b/public/terrain/19/858531/353743.terrain differ diff --git a/public/terrain/19/858531/353744.terrain b/public/terrain/19/858531/353744.terrain new file mode 100644 index 000000000..f25da427b Binary files /dev/null and b/public/terrain/19/858531/353744.terrain differ diff --git a/public/terrain/19/858531/353745.terrain b/public/terrain/19/858531/353745.terrain new file mode 100644 index 000000000..5d204a87c Binary files /dev/null and b/public/terrain/19/858531/353745.terrain differ diff --git a/public/terrain/19/858531/353746.terrain b/public/terrain/19/858531/353746.terrain new file mode 100644 index 000000000..008231b29 Binary files /dev/null and b/public/terrain/19/858531/353746.terrain differ diff --git a/public/terrain/19/858531/353747.terrain b/public/terrain/19/858531/353747.terrain new file mode 100644 index 000000000..2be3dc8e2 Binary files /dev/null and b/public/terrain/19/858531/353747.terrain differ diff --git a/public/terrain/19/858531/353748.terrain b/public/terrain/19/858531/353748.terrain new file mode 100644 index 000000000..2ed96662f Binary files /dev/null and b/public/terrain/19/858531/353748.terrain differ diff --git a/public/terrain/19/858531/353749.terrain b/public/terrain/19/858531/353749.terrain new file mode 100644 index 000000000..853ff50fe Binary files /dev/null and b/public/terrain/19/858531/353749.terrain differ diff --git a/public/terrain/19/858531/353750.terrain b/public/terrain/19/858531/353750.terrain new file mode 100644 index 000000000..8b8882c61 Binary files /dev/null and b/public/terrain/19/858531/353750.terrain differ diff --git a/public/terrain/19/858531/353751.terrain b/public/terrain/19/858531/353751.terrain new file mode 100644 index 000000000..67be3698d Binary files /dev/null and b/public/terrain/19/858531/353751.terrain differ diff --git a/public/terrain/19/858531/353752.terrain b/public/terrain/19/858531/353752.terrain new file mode 100644 index 000000000..887a39646 Binary files /dev/null and b/public/terrain/19/858531/353752.terrain differ diff --git a/public/terrain/19/858531/353753.terrain b/public/terrain/19/858531/353753.terrain new file mode 100644 index 000000000..fba59c4fd Binary files /dev/null and b/public/terrain/19/858531/353753.terrain differ diff --git a/public/terrain/19/858531/353754.terrain b/public/terrain/19/858531/353754.terrain new file mode 100644 index 000000000..94780601c Binary files /dev/null and b/public/terrain/19/858531/353754.terrain differ diff --git a/public/terrain/19/858531/353755.terrain b/public/terrain/19/858531/353755.terrain new file mode 100644 index 000000000..f7a23d0c4 Binary files /dev/null and b/public/terrain/19/858531/353755.terrain differ diff --git a/public/terrain/19/858531/353756.terrain b/public/terrain/19/858531/353756.terrain new file mode 100644 index 000000000..c56b3361b Binary files /dev/null and b/public/terrain/19/858531/353756.terrain differ diff --git a/public/terrain/19/858531/353757.terrain b/public/terrain/19/858531/353757.terrain new file mode 100644 index 000000000..f16e78e32 Binary files /dev/null and b/public/terrain/19/858531/353757.terrain differ diff --git a/public/terrain/19/858531/353758.terrain b/public/terrain/19/858531/353758.terrain new file mode 100644 index 000000000..2f40e5bf1 Binary files /dev/null and b/public/terrain/19/858531/353758.terrain differ diff --git a/public/terrain/19/858531/353759.terrain b/public/terrain/19/858531/353759.terrain new file mode 100644 index 000000000..9e6f68e92 Binary files /dev/null and b/public/terrain/19/858531/353759.terrain differ diff --git a/public/terrain/19/858531/353760.terrain b/public/terrain/19/858531/353760.terrain new file mode 100644 index 000000000..4810a5463 Binary files /dev/null and b/public/terrain/19/858531/353760.terrain differ diff --git a/public/terrain/19/858531/353761.terrain b/public/terrain/19/858531/353761.terrain new file mode 100644 index 000000000..eb1feafb2 Binary files /dev/null and b/public/terrain/19/858531/353761.terrain differ diff --git a/public/terrain/19/858531/353762.terrain b/public/terrain/19/858531/353762.terrain new file mode 100644 index 000000000..6f49be8d8 Binary files /dev/null and b/public/terrain/19/858531/353762.terrain differ diff --git a/public/terrain/19/858531/353763.terrain b/public/terrain/19/858531/353763.terrain new file mode 100644 index 000000000..1597dfde3 Binary files /dev/null and b/public/terrain/19/858531/353763.terrain differ diff --git a/public/terrain/19/858531/353764.terrain b/public/terrain/19/858531/353764.terrain new file mode 100644 index 000000000..38b70f0a4 Binary files /dev/null and b/public/terrain/19/858531/353764.terrain differ diff --git a/public/terrain/19/858531/353765.terrain b/public/terrain/19/858531/353765.terrain new file mode 100644 index 000000000..67fc6ccd8 Binary files /dev/null and b/public/terrain/19/858531/353765.terrain differ diff --git a/public/terrain/19/858531/353766.terrain b/public/terrain/19/858531/353766.terrain new file mode 100644 index 000000000..016b08ad1 Binary files /dev/null and b/public/terrain/19/858531/353766.terrain differ diff --git a/public/terrain/19/858531/353767.terrain b/public/terrain/19/858531/353767.terrain new file mode 100644 index 000000000..cd35b9401 Binary files /dev/null and b/public/terrain/19/858531/353767.terrain differ diff --git a/public/terrain/19/858531/353768.terrain b/public/terrain/19/858531/353768.terrain new file mode 100644 index 000000000..4a64b4b83 Binary files /dev/null and b/public/terrain/19/858531/353768.terrain differ diff --git a/public/terrain/19/858531/353769.terrain b/public/terrain/19/858531/353769.terrain new file mode 100644 index 000000000..4d1635b47 Binary files /dev/null and b/public/terrain/19/858531/353769.terrain differ diff --git a/public/terrain/19/858531/353770.terrain b/public/terrain/19/858531/353770.terrain new file mode 100644 index 000000000..971e1715c Binary files /dev/null and b/public/terrain/19/858531/353770.terrain differ diff --git a/public/terrain/19/858531/353771.terrain b/public/terrain/19/858531/353771.terrain new file mode 100644 index 000000000..b79dd9aaa Binary files /dev/null and b/public/terrain/19/858531/353771.terrain differ diff --git a/public/terrain/19/858531/353772.terrain b/public/terrain/19/858531/353772.terrain new file mode 100644 index 000000000..b5268e91d Binary files /dev/null and b/public/terrain/19/858531/353772.terrain differ diff --git a/public/terrain/19/858531/353773.terrain b/public/terrain/19/858531/353773.terrain new file mode 100644 index 000000000..d595df229 Binary files /dev/null and b/public/terrain/19/858531/353773.terrain differ diff --git a/public/terrain/19/858531/353774.terrain b/public/terrain/19/858531/353774.terrain new file mode 100644 index 000000000..43edb2fec Binary files /dev/null and b/public/terrain/19/858531/353774.terrain differ diff --git a/public/terrain/19/858531/353775.terrain b/public/terrain/19/858531/353775.terrain new file mode 100644 index 000000000..f4e54ab5d Binary files /dev/null and b/public/terrain/19/858531/353775.terrain differ diff --git a/public/terrain/19/858531/353776.terrain b/public/terrain/19/858531/353776.terrain new file mode 100644 index 000000000..6d85d2aba Binary files /dev/null and b/public/terrain/19/858531/353776.terrain differ diff --git a/public/terrain/19/858531/353777.terrain b/public/terrain/19/858531/353777.terrain new file mode 100644 index 000000000..07d6f739f Binary files /dev/null and b/public/terrain/19/858531/353777.terrain differ diff --git a/public/terrain/19/858531/353778.terrain b/public/terrain/19/858531/353778.terrain new file mode 100644 index 000000000..eb7d75ba8 Binary files /dev/null and b/public/terrain/19/858531/353778.terrain differ diff --git a/public/terrain/19/858531/353779.terrain b/public/terrain/19/858531/353779.terrain new file mode 100644 index 000000000..dbd464058 Binary files /dev/null and b/public/terrain/19/858531/353779.terrain differ diff --git a/public/terrain/19/858531/353780.terrain b/public/terrain/19/858531/353780.terrain new file mode 100644 index 000000000..8549da5fe Binary files /dev/null and b/public/terrain/19/858531/353780.terrain differ diff --git a/public/terrain/19/858531/353781.terrain b/public/terrain/19/858531/353781.terrain new file mode 100644 index 000000000..5bab63833 Binary files /dev/null and b/public/terrain/19/858531/353781.terrain differ diff --git a/public/terrain/19/858531/353782.terrain b/public/terrain/19/858531/353782.terrain new file mode 100644 index 000000000..b1eb5f98c Binary files /dev/null and b/public/terrain/19/858531/353782.terrain differ diff --git a/public/terrain/19/858531/353783.terrain b/public/terrain/19/858531/353783.terrain new file mode 100644 index 000000000..13906af62 Binary files /dev/null and b/public/terrain/19/858531/353783.terrain differ diff --git a/public/terrain/19/858531/353784.terrain b/public/terrain/19/858531/353784.terrain new file mode 100644 index 000000000..5dd6b8479 Binary files /dev/null and b/public/terrain/19/858531/353784.terrain differ diff --git a/public/terrain/19/858531/353785.terrain b/public/terrain/19/858531/353785.terrain new file mode 100644 index 000000000..ab3f78fbe Binary files /dev/null and b/public/terrain/19/858531/353785.terrain differ diff --git a/public/terrain/19/858531/353786.terrain b/public/terrain/19/858531/353786.terrain new file mode 100644 index 000000000..0b0141185 Binary files /dev/null and b/public/terrain/19/858531/353786.terrain differ diff --git a/public/terrain/19/858531/353787.terrain b/public/terrain/19/858531/353787.terrain new file mode 100644 index 000000000..f883c1840 Binary files /dev/null and b/public/terrain/19/858531/353787.terrain differ diff --git a/public/terrain/19/858531/353788.terrain b/public/terrain/19/858531/353788.terrain new file mode 100644 index 000000000..868df9604 Binary files /dev/null and b/public/terrain/19/858531/353788.terrain differ diff --git a/public/terrain/19/858531/353789.terrain b/public/terrain/19/858531/353789.terrain new file mode 100644 index 000000000..a4c9e08e8 Binary files /dev/null and b/public/terrain/19/858531/353789.terrain differ diff --git a/public/terrain/19/858531/353790.terrain b/public/terrain/19/858531/353790.terrain new file mode 100644 index 000000000..9fac52086 Binary files /dev/null and b/public/terrain/19/858531/353790.terrain differ diff --git a/public/terrain/19/858531/353791.terrain b/public/terrain/19/858531/353791.terrain new file mode 100644 index 000000000..2641619f9 Binary files /dev/null and b/public/terrain/19/858531/353791.terrain differ diff --git a/public/terrain/19/858531/353792.terrain b/public/terrain/19/858531/353792.terrain new file mode 100644 index 000000000..1acf70001 Binary files /dev/null and b/public/terrain/19/858531/353792.terrain differ diff --git a/public/terrain/19/858531/353793.terrain b/public/terrain/19/858531/353793.terrain new file mode 100644 index 000000000..185f6053b Binary files /dev/null and b/public/terrain/19/858531/353793.terrain differ diff --git a/public/terrain/19/858531/353794.terrain b/public/terrain/19/858531/353794.terrain new file mode 100644 index 000000000..7869b7be8 Binary files /dev/null and b/public/terrain/19/858531/353794.terrain differ diff --git a/public/terrain/19/858531/353795.terrain b/public/terrain/19/858531/353795.terrain new file mode 100644 index 000000000..d47c98763 Binary files /dev/null and b/public/terrain/19/858531/353795.terrain differ diff --git a/public/terrain/19/858531/353796.terrain b/public/terrain/19/858531/353796.terrain new file mode 100644 index 000000000..ef6a832a3 Binary files /dev/null and b/public/terrain/19/858531/353796.terrain differ diff --git a/public/terrain/19/858531/353797.terrain b/public/terrain/19/858531/353797.terrain new file mode 100644 index 000000000..8dcca21cf Binary files /dev/null and b/public/terrain/19/858531/353797.terrain differ diff --git a/public/terrain/19/858531/353798.terrain b/public/terrain/19/858531/353798.terrain new file mode 100644 index 000000000..eb3e1fdc9 Binary files /dev/null and b/public/terrain/19/858531/353798.terrain differ diff --git a/public/terrain/19/858531/353799.terrain b/public/terrain/19/858531/353799.terrain new file mode 100644 index 000000000..a5ddcd615 Binary files /dev/null and b/public/terrain/19/858531/353799.terrain differ diff --git a/public/terrain/19/858531/353800.terrain b/public/terrain/19/858531/353800.terrain new file mode 100644 index 000000000..bc01548f6 Binary files /dev/null and b/public/terrain/19/858531/353800.terrain differ diff --git a/public/terrain/19/858531/353801.terrain b/public/terrain/19/858531/353801.terrain new file mode 100644 index 000000000..ed5b2dd95 Binary files /dev/null and b/public/terrain/19/858531/353801.terrain differ diff --git a/public/terrain/19/858531/353802.terrain b/public/terrain/19/858531/353802.terrain new file mode 100644 index 000000000..00876a38f Binary files /dev/null and b/public/terrain/19/858531/353802.terrain differ diff --git a/public/terrain/19/858531/353803.terrain b/public/terrain/19/858531/353803.terrain new file mode 100644 index 000000000..b35c0ba48 Binary files /dev/null and b/public/terrain/19/858531/353803.terrain differ diff --git a/public/terrain/19/858531/353804.terrain b/public/terrain/19/858531/353804.terrain new file mode 100644 index 000000000..96c215506 Binary files /dev/null and b/public/terrain/19/858531/353804.terrain differ diff --git a/public/terrain/19/858531/353805.terrain b/public/terrain/19/858531/353805.terrain new file mode 100644 index 000000000..c03315a1d Binary files /dev/null and b/public/terrain/19/858531/353805.terrain differ diff --git a/public/terrain/19/858531/353806.terrain b/public/terrain/19/858531/353806.terrain new file mode 100644 index 000000000..73a82f76b Binary files /dev/null and b/public/terrain/19/858531/353806.terrain differ diff --git a/public/terrain/19/858531/353807.terrain b/public/terrain/19/858531/353807.terrain new file mode 100644 index 000000000..c497116a8 Binary files /dev/null and b/public/terrain/19/858531/353807.terrain differ diff --git a/public/terrain/19/858531/353808.terrain b/public/terrain/19/858531/353808.terrain new file mode 100644 index 000000000..b54e616dc Binary files /dev/null and b/public/terrain/19/858531/353808.terrain differ diff --git a/public/terrain/19/858531/353809.terrain b/public/terrain/19/858531/353809.terrain new file mode 100644 index 000000000..bd975a25b Binary files /dev/null and b/public/terrain/19/858531/353809.terrain differ diff --git a/public/terrain/19/858531/353810.terrain b/public/terrain/19/858531/353810.terrain new file mode 100644 index 000000000..dcc43bd20 Binary files /dev/null and b/public/terrain/19/858531/353810.terrain differ diff --git a/public/terrain/19/858531/353811.terrain b/public/terrain/19/858531/353811.terrain new file mode 100644 index 000000000..775e378f5 Binary files /dev/null and b/public/terrain/19/858531/353811.terrain differ diff --git a/public/terrain/19/858531/353812.terrain b/public/terrain/19/858531/353812.terrain new file mode 100644 index 000000000..47ce8a91f Binary files /dev/null and b/public/terrain/19/858531/353812.terrain differ diff --git a/public/terrain/19/858531/353813.terrain b/public/terrain/19/858531/353813.terrain new file mode 100644 index 000000000..ac1e3b9b1 Binary files /dev/null and b/public/terrain/19/858531/353813.terrain differ diff --git a/public/terrain/19/858531/353814.terrain b/public/terrain/19/858531/353814.terrain new file mode 100644 index 000000000..b4d8abf84 Binary files /dev/null and b/public/terrain/19/858531/353814.terrain differ diff --git a/public/terrain/19/858531/353815.terrain b/public/terrain/19/858531/353815.terrain new file mode 100644 index 000000000..17bf34fa9 Binary files /dev/null and b/public/terrain/19/858531/353815.terrain differ diff --git a/public/terrain/19/858531/353816.terrain b/public/terrain/19/858531/353816.terrain new file mode 100644 index 000000000..4e97c1a56 Binary files /dev/null and b/public/terrain/19/858531/353816.terrain differ diff --git a/public/terrain/19/858531/353817.terrain b/public/terrain/19/858531/353817.terrain new file mode 100644 index 000000000..ba6616fea Binary files /dev/null and b/public/terrain/19/858531/353817.terrain differ diff --git a/public/terrain/19/858531/353818.terrain b/public/terrain/19/858531/353818.terrain new file mode 100644 index 000000000..115f9a6a9 Binary files /dev/null and b/public/terrain/19/858531/353818.terrain differ diff --git a/public/terrain/19/858531/353819.terrain b/public/terrain/19/858531/353819.terrain new file mode 100644 index 000000000..009e5a604 Binary files /dev/null and b/public/terrain/19/858531/353819.terrain differ diff --git a/public/terrain/19/858531/353820.terrain b/public/terrain/19/858531/353820.terrain new file mode 100644 index 000000000..83f4aa09f Binary files /dev/null and b/public/terrain/19/858531/353820.terrain differ diff --git a/public/terrain/19/858531/353821.terrain b/public/terrain/19/858531/353821.terrain new file mode 100644 index 000000000..4534404d2 Binary files /dev/null and b/public/terrain/19/858531/353821.terrain differ diff --git a/public/terrain/19/858531/353822.terrain b/public/terrain/19/858531/353822.terrain new file mode 100644 index 000000000..c89aa8eb5 Binary files /dev/null and b/public/terrain/19/858531/353822.terrain differ diff --git a/public/terrain/19/858531/353823.terrain b/public/terrain/19/858531/353823.terrain new file mode 100644 index 000000000..113ddfcec Binary files /dev/null and b/public/terrain/19/858531/353823.terrain differ diff --git a/public/terrain/19/858531/353824.terrain b/public/terrain/19/858531/353824.terrain new file mode 100644 index 000000000..b9b4cd7b4 Binary files /dev/null and b/public/terrain/19/858531/353824.terrain differ diff --git a/public/terrain/19/858531/353825.terrain b/public/terrain/19/858531/353825.terrain new file mode 100644 index 000000000..65c1ed067 Binary files /dev/null and b/public/terrain/19/858531/353825.terrain differ diff --git a/public/terrain/19/858531/353826.terrain b/public/terrain/19/858531/353826.terrain new file mode 100644 index 000000000..20fd8a312 Binary files /dev/null and b/public/terrain/19/858531/353826.terrain differ diff --git a/public/terrain/19/858531/353827.terrain b/public/terrain/19/858531/353827.terrain new file mode 100644 index 000000000..8a2546eca Binary files /dev/null and b/public/terrain/19/858531/353827.terrain differ diff --git a/public/terrain/19/858531/353828.terrain b/public/terrain/19/858531/353828.terrain new file mode 100644 index 000000000..918b65bc2 Binary files /dev/null and b/public/terrain/19/858531/353828.terrain differ diff --git a/public/terrain/19/858531/353829.terrain b/public/terrain/19/858531/353829.terrain new file mode 100644 index 000000000..27514d4f1 Binary files /dev/null and b/public/terrain/19/858531/353829.terrain differ diff --git a/public/terrain/19/858531/353830.terrain b/public/terrain/19/858531/353830.terrain new file mode 100644 index 000000000..3e2908c23 Binary files /dev/null and b/public/terrain/19/858531/353830.terrain differ diff --git a/public/terrain/19/858531/353831.terrain b/public/terrain/19/858531/353831.terrain new file mode 100644 index 000000000..338dd1568 Binary files /dev/null and b/public/terrain/19/858531/353831.terrain differ diff --git a/public/terrain/19/858531/353832.terrain b/public/terrain/19/858531/353832.terrain new file mode 100644 index 000000000..364a96d96 Binary files /dev/null and b/public/terrain/19/858531/353832.terrain differ diff --git a/public/terrain/19/858531/353833.terrain b/public/terrain/19/858531/353833.terrain new file mode 100644 index 000000000..a0797ea3d Binary files /dev/null and b/public/terrain/19/858531/353833.terrain differ diff --git a/public/terrain/19/858531/353834.terrain b/public/terrain/19/858531/353834.terrain new file mode 100644 index 000000000..43da02a80 Binary files /dev/null and b/public/terrain/19/858531/353834.terrain differ diff --git a/public/terrain/19/858531/353835.terrain b/public/terrain/19/858531/353835.terrain new file mode 100644 index 000000000..cdcb7f41a Binary files /dev/null and b/public/terrain/19/858531/353835.terrain differ diff --git a/public/terrain/19/858531/353836.terrain b/public/terrain/19/858531/353836.terrain new file mode 100644 index 000000000..d39fa4a17 Binary files /dev/null and b/public/terrain/19/858531/353836.terrain differ diff --git a/public/terrain/19/858531/353837.terrain b/public/terrain/19/858531/353837.terrain new file mode 100644 index 000000000..0a2945341 Binary files /dev/null and b/public/terrain/19/858531/353837.terrain differ diff --git a/public/terrain/19/858531/353838.terrain b/public/terrain/19/858531/353838.terrain new file mode 100644 index 000000000..48f2ebeee Binary files /dev/null and b/public/terrain/19/858531/353838.terrain differ diff --git a/public/terrain/19/858531/353839.terrain b/public/terrain/19/858531/353839.terrain new file mode 100644 index 000000000..648ff02d6 Binary files /dev/null and b/public/terrain/19/858531/353839.terrain differ diff --git a/public/terrain/19/858531/353840.terrain b/public/terrain/19/858531/353840.terrain new file mode 100644 index 000000000..e8fcb4f13 Binary files /dev/null and b/public/terrain/19/858531/353840.terrain differ diff --git a/public/terrain/19/858531/353841.terrain b/public/terrain/19/858531/353841.terrain new file mode 100644 index 000000000..03bb430df Binary files /dev/null and b/public/terrain/19/858531/353841.terrain differ diff --git a/public/terrain/19/858531/353842.terrain b/public/terrain/19/858531/353842.terrain new file mode 100644 index 000000000..8a7d3582f Binary files /dev/null and b/public/terrain/19/858531/353842.terrain differ diff --git a/public/terrain/19/858531/353843.terrain b/public/terrain/19/858531/353843.terrain new file mode 100644 index 000000000..d9b2b2083 Binary files /dev/null and b/public/terrain/19/858531/353843.terrain differ diff --git a/public/terrain/19/858531/353844.terrain b/public/terrain/19/858531/353844.terrain new file mode 100644 index 000000000..2b2a0b027 Binary files /dev/null and b/public/terrain/19/858531/353844.terrain differ diff --git a/public/terrain/19/858531/353845.terrain b/public/terrain/19/858531/353845.terrain new file mode 100644 index 000000000..1a1118ac4 Binary files /dev/null and b/public/terrain/19/858531/353845.terrain differ diff --git a/public/terrain/19/858531/353846.terrain b/public/terrain/19/858531/353846.terrain new file mode 100644 index 000000000..b7030560a Binary files /dev/null and b/public/terrain/19/858531/353846.terrain differ diff --git a/public/terrain/19/858531/353847.terrain b/public/terrain/19/858531/353847.terrain new file mode 100644 index 000000000..a55f55602 Binary files /dev/null and b/public/terrain/19/858531/353847.terrain differ diff --git a/public/terrain/19/858531/353848.terrain b/public/terrain/19/858531/353848.terrain new file mode 100644 index 000000000..981e77405 Binary files /dev/null and b/public/terrain/19/858531/353848.terrain differ diff --git a/public/terrain/19/858531/353849.terrain b/public/terrain/19/858531/353849.terrain new file mode 100644 index 000000000..b1e191617 Binary files /dev/null and b/public/terrain/19/858531/353849.terrain differ diff --git a/public/terrain/19/858531/353850.terrain b/public/terrain/19/858531/353850.terrain new file mode 100644 index 000000000..ede04bdac Binary files /dev/null and b/public/terrain/19/858531/353850.terrain differ diff --git a/public/terrain/19/858531/353851.terrain b/public/terrain/19/858531/353851.terrain new file mode 100644 index 000000000..b9e54b946 Binary files /dev/null and b/public/terrain/19/858531/353851.terrain differ diff --git a/public/terrain/19/858531/353852.terrain b/public/terrain/19/858531/353852.terrain new file mode 100644 index 000000000..ed0614306 Binary files /dev/null and b/public/terrain/19/858531/353852.terrain differ diff --git a/public/terrain/19/858531/353853.terrain b/public/terrain/19/858531/353853.terrain new file mode 100644 index 000000000..312e4d646 Binary files /dev/null and b/public/terrain/19/858531/353853.terrain differ diff --git a/public/terrain/19/858531/353854.terrain b/public/terrain/19/858531/353854.terrain new file mode 100644 index 000000000..0f5e9be62 Binary files /dev/null and b/public/terrain/19/858531/353854.terrain differ diff --git a/public/terrain/19/858531/353855.terrain b/public/terrain/19/858531/353855.terrain new file mode 100644 index 000000000..956015fab Binary files /dev/null and b/public/terrain/19/858531/353855.terrain differ diff --git a/public/terrain/19/858531/353856.terrain b/public/terrain/19/858531/353856.terrain new file mode 100644 index 000000000..b343502ec Binary files /dev/null and b/public/terrain/19/858531/353856.terrain differ diff --git a/public/terrain/19/858531/353857.terrain b/public/terrain/19/858531/353857.terrain new file mode 100644 index 000000000..0ce84840f Binary files /dev/null and b/public/terrain/19/858531/353857.terrain differ diff --git a/public/terrain/19/858531/353858.terrain b/public/terrain/19/858531/353858.terrain new file mode 100644 index 000000000..f849eb15b Binary files /dev/null and b/public/terrain/19/858531/353858.terrain differ diff --git a/public/terrain/19/858531/353859.terrain b/public/terrain/19/858531/353859.terrain new file mode 100644 index 000000000..2776fc4fd Binary files /dev/null and b/public/terrain/19/858531/353859.terrain differ diff --git a/public/terrain/19/858531/353860.terrain b/public/terrain/19/858531/353860.terrain new file mode 100644 index 000000000..3b9f0034f Binary files /dev/null and b/public/terrain/19/858531/353860.terrain differ diff --git a/public/terrain/19/858531/353861.terrain b/public/terrain/19/858531/353861.terrain new file mode 100644 index 000000000..e9fd1c1e6 Binary files /dev/null and b/public/terrain/19/858531/353861.terrain differ diff --git a/public/terrain/19/858531/353862.terrain b/public/terrain/19/858531/353862.terrain new file mode 100644 index 000000000..62b6c8ba5 Binary files /dev/null and b/public/terrain/19/858531/353862.terrain differ diff --git a/public/terrain/19/858531/353863.terrain b/public/terrain/19/858531/353863.terrain new file mode 100644 index 000000000..df7deb985 Binary files /dev/null and b/public/terrain/19/858531/353863.terrain differ diff --git a/public/terrain/19/858531/353864.terrain b/public/terrain/19/858531/353864.terrain new file mode 100644 index 000000000..55c212c6a Binary files /dev/null and b/public/terrain/19/858531/353864.terrain differ diff --git a/public/terrain/19/858531/353865.terrain b/public/terrain/19/858531/353865.terrain new file mode 100644 index 000000000..97607473a Binary files /dev/null and b/public/terrain/19/858531/353865.terrain differ diff --git a/public/terrain/19/858531/353866.terrain b/public/terrain/19/858531/353866.terrain new file mode 100644 index 000000000..02b8af56a Binary files /dev/null and b/public/terrain/19/858531/353866.terrain differ diff --git a/public/terrain/19/858531/353867.terrain b/public/terrain/19/858531/353867.terrain new file mode 100644 index 000000000..46e892c29 Binary files /dev/null and b/public/terrain/19/858531/353867.terrain differ diff --git a/public/terrain/19/858531/353868.terrain b/public/terrain/19/858531/353868.terrain new file mode 100644 index 000000000..a2cd985cf Binary files /dev/null and b/public/terrain/19/858531/353868.terrain differ diff --git a/public/terrain/19/858531/353869.terrain b/public/terrain/19/858531/353869.terrain new file mode 100644 index 000000000..cda2adec4 Binary files /dev/null and b/public/terrain/19/858531/353869.terrain differ diff --git a/public/terrain/19/858531/353870.terrain b/public/terrain/19/858531/353870.terrain new file mode 100644 index 000000000..526070182 Binary files /dev/null and b/public/terrain/19/858531/353870.terrain differ diff --git a/public/terrain/19/858531/353871.terrain b/public/terrain/19/858531/353871.terrain new file mode 100644 index 000000000..fa8d960f1 Binary files /dev/null and b/public/terrain/19/858531/353871.terrain differ diff --git a/public/terrain/19/858531/353872.terrain b/public/terrain/19/858531/353872.terrain new file mode 100644 index 000000000..4546b72ca Binary files /dev/null and b/public/terrain/19/858531/353872.terrain differ diff --git a/public/terrain/19/858531/353873.terrain b/public/terrain/19/858531/353873.terrain new file mode 100644 index 000000000..0ee5b1a4b Binary files /dev/null and b/public/terrain/19/858531/353873.terrain differ diff --git a/public/terrain/19/858531/353874.terrain b/public/terrain/19/858531/353874.terrain new file mode 100644 index 000000000..1eda9a1a1 Binary files /dev/null and b/public/terrain/19/858531/353874.terrain differ diff --git a/public/terrain/19/858531/353875.terrain b/public/terrain/19/858531/353875.terrain new file mode 100644 index 000000000..5ff191adc Binary files /dev/null and b/public/terrain/19/858531/353875.terrain differ diff --git a/public/terrain/19/858531/353876.terrain b/public/terrain/19/858531/353876.terrain new file mode 100644 index 000000000..cf47c0a00 Binary files /dev/null and b/public/terrain/19/858531/353876.terrain differ diff --git a/public/terrain/19/858531/353877.terrain b/public/terrain/19/858531/353877.terrain new file mode 100644 index 000000000..b51430646 Binary files /dev/null and b/public/terrain/19/858531/353877.terrain differ diff --git a/public/terrain/19/858531/353878.terrain b/public/terrain/19/858531/353878.terrain new file mode 100644 index 000000000..8ddb9abd2 Binary files /dev/null and b/public/terrain/19/858531/353878.terrain differ diff --git a/public/terrain/19/858531/353879.terrain b/public/terrain/19/858531/353879.terrain new file mode 100644 index 000000000..eeb5330ad Binary files /dev/null and b/public/terrain/19/858531/353879.terrain differ diff --git a/public/terrain/19/858531/353880.terrain b/public/terrain/19/858531/353880.terrain new file mode 100644 index 000000000..aa913f87a Binary files /dev/null and b/public/terrain/19/858531/353880.terrain differ diff --git a/public/terrain/19/858531/353881.terrain b/public/terrain/19/858531/353881.terrain new file mode 100644 index 000000000..dda59e212 Binary files /dev/null and b/public/terrain/19/858531/353881.terrain differ diff --git a/public/terrain/19/858531/353882.terrain b/public/terrain/19/858531/353882.terrain new file mode 100644 index 000000000..e9a5fa910 Binary files /dev/null and b/public/terrain/19/858531/353882.terrain differ diff --git a/public/terrain/19/858531/353883.terrain b/public/terrain/19/858531/353883.terrain new file mode 100644 index 000000000..9b319763d Binary files /dev/null and b/public/terrain/19/858531/353883.terrain differ diff --git a/public/terrain/19/858531/353884.terrain b/public/terrain/19/858531/353884.terrain new file mode 100644 index 000000000..7d63d79df Binary files /dev/null and b/public/terrain/19/858531/353884.terrain differ diff --git a/public/terrain/19/858531/353885.terrain b/public/terrain/19/858531/353885.terrain new file mode 100644 index 000000000..d5d82f941 Binary files /dev/null and b/public/terrain/19/858531/353885.terrain differ diff --git a/public/terrain/19/858531/353886.terrain b/public/terrain/19/858531/353886.terrain new file mode 100644 index 000000000..21dc2d50d Binary files /dev/null and b/public/terrain/19/858531/353886.terrain differ diff --git a/public/terrain/19/858531/353887.terrain b/public/terrain/19/858531/353887.terrain new file mode 100644 index 000000000..cb6a838d0 Binary files /dev/null and b/public/terrain/19/858531/353887.terrain differ diff --git a/public/terrain/19/858531/353888.terrain b/public/terrain/19/858531/353888.terrain new file mode 100644 index 000000000..8f527e287 Binary files /dev/null and b/public/terrain/19/858531/353888.terrain differ diff --git a/public/terrain/19/858531/353889.terrain b/public/terrain/19/858531/353889.terrain new file mode 100644 index 000000000..a1149f112 Binary files /dev/null and b/public/terrain/19/858531/353889.terrain differ diff --git a/public/terrain/19/858531/353890.terrain b/public/terrain/19/858531/353890.terrain new file mode 100644 index 000000000..5dfdbc28c Binary files /dev/null and b/public/terrain/19/858531/353890.terrain differ diff --git a/public/terrain/19/858531/353891.terrain b/public/terrain/19/858531/353891.terrain new file mode 100644 index 000000000..7f47bb9aa Binary files /dev/null and b/public/terrain/19/858531/353891.terrain differ diff --git a/public/terrain/19/858531/353892.terrain b/public/terrain/19/858531/353892.terrain new file mode 100644 index 000000000..dc82bd5f3 Binary files /dev/null and b/public/terrain/19/858531/353892.terrain differ diff --git a/public/terrain/19/858531/353893.terrain b/public/terrain/19/858531/353893.terrain new file mode 100644 index 000000000..131bf7366 Binary files /dev/null and b/public/terrain/19/858531/353893.terrain differ diff --git a/public/terrain/19/858531/353894.terrain b/public/terrain/19/858531/353894.terrain new file mode 100644 index 000000000..861a4d348 Binary files /dev/null and b/public/terrain/19/858531/353894.terrain differ diff --git a/public/terrain/19/858531/353895.terrain b/public/terrain/19/858531/353895.terrain new file mode 100644 index 000000000..8530a3323 Binary files /dev/null and b/public/terrain/19/858531/353895.terrain differ diff --git a/public/terrain/19/858531/353896.terrain b/public/terrain/19/858531/353896.terrain new file mode 100644 index 000000000..3c3cc9baa Binary files /dev/null and b/public/terrain/19/858531/353896.terrain differ diff --git a/public/terrain/19/858531/353897.terrain b/public/terrain/19/858531/353897.terrain new file mode 100644 index 000000000..37d8eabc5 Binary files /dev/null and b/public/terrain/19/858531/353897.terrain differ diff --git a/public/terrain/19/858531/353898.terrain b/public/terrain/19/858531/353898.terrain new file mode 100644 index 000000000..a4d0ab106 Binary files /dev/null and b/public/terrain/19/858531/353898.terrain differ diff --git a/public/terrain/19/858531/353899.terrain b/public/terrain/19/858531/353899.terrain new file mode 100644 index 000000000..bc3d9fc37 Binary files /dev/null and b/public/terrain/19/858531/353899.terrain differ diff --git a/public/terrain/19/858531/353900.terrain b/public/terrain/19/858531/353900.terrain new file mode 100644 index 000000000..93d78aab8 Binary files /dev/null and b/public/terrain/19/858531/353900.terrain differ diff --git a/public/terrain/19/858531/353901.terrain b/public/terrain/19/858531/353901.terrain new file mode 100644 index 000000000..85aa03bc5 Binary files /dev/null and b/public/terrain/19/858531/353901.terrain differ diff --git a/public/terrain/19/858531/353902.terrain b/public/terrain/19/858531/353902.terrain new file mode 100644 index 000000000..7ef69bc5d Binary files /dev/null and b/public/terrain/19/858531/353902.terrain differ diff --git a/public/terrain/19/858531/353903.terrain b/public/terrain/19/858531/353903.terrain new file mode 100644 index 000000000..15ed4f867 Binary files /dev/null and b/public/terrain/19/858531/353903.terrain differ diff --git a/public/terrain/19/858531/353904.terrain b/public/terrain/19/858531/353904.terrain new file mode 100644 index 000000000..e92ee2f0f Binary files /dev/null and b/public/terrain/19/858531/353904.terrain differ diff --git a/public/terrain/19/858531/353905.terrain b/public/terrain/19/858531/353905.terrain new file mode 100644 index 000000000..5fab3ebe3 Binary files /dev/null and b/public/terrain/19/858531/353905.terrain differ diff --git a/public/terrain/19/858531/353906.terrain b/public/terrain/19/858531/353906.terrain new file mode 100644 index 000000000..5b0ebe509 Binary files /dev/null and b/public/terrain/19/858531/353906.terrain differ diff --git a/public/terrain/19/858531/353907.terrain b/public/terrain/19/858531/353907.terrain new file mode 100644 index 000000000..1e4d43b71 Binary files /dev/null and b/public/terrain/19/858531/353907.terrain differ diff --git a/public/terrain/19/858531/353908.terrain b/public/terrain/19/858531/353908.terrain new file mode 100644 index 000000000..d507497da Binary files /dev/null and b/public/terrain/19/858531/353908.terrain differ diff --git a/public/terrain/19/858531/353909.terrain b/public/terrain/19/858531/353909.terrain new file mode 100644 index 000000000..847f66ff7 Binary files /dev/null and b/public/terrain/19/858531/353909.terrain differ diff --git a/public/terrain/19/858531/353910.terrain b/public/terrain/19/858531/353910.terrain new file mode 100644 index 000000000..6b3831e83 Binary files /dev/null and b/public/terrain/19/858531/353910.terrain differ diff --git a/public/terrain/19/858531/353911.terrain b/public/terrain/19/858531/353911.terrain new file mode 100644 index 000000000..a33905304 Binary files /dev/null and b/public/terrain/19/858531/353911.terrain differ diff --git a/public/terrain/19/858531/353912.terrain b/public/terrain/19/858531/353912.terrain new file mode 100644 index 000000000..c25ad0e13 Binary files /dev/null and b/public/terrain/19/858531/353912.terrain differ diff --git a/public/terrain/19/858531/353913.terrain b/public/terrain/19/858531/353913.terrain new file mode 100644 index 000000000..d94b7a1ef Binary files /dev/null and b/public/terrain/19/858531/353913.terrain differ diff --git a/public/terrain/19/858531/353914.terrain b/public/terrain/19/858531/353914.terrain new file mode 100644 index 000000000..1398b4baf Binary files /dev/null and b/public/terrain/19/858531/353914.terrain differ diff --git a/public/terrain/19/858531/353915.terrain b/public/terrain/19/858531/353915.terrain new file mode 100644 index 000000000..833da33ac Binary files /dev/null and b/public/terrain/19/858531/353915.terrain differ diff --git a/public/terrain/19/858531/353916.terrain b/public/terrain/19/858531/353916.terrain new file mode 100644 index 000000000..8e2a143db Binary files /dev/null and b/public/terrain/19/858531/353916.terrain differ diff --git a/public/terrain/19/858531/353917.terrain b/public/terrain/19/858531/353917.terrain new file mode 100644 index 000000000..c8404d168 Binary files /dev/null and b/public/terrain/19/858531/353917.terrain differ diff --git a/public/terrain/19/858531/353918.terrain b/public/terrain/19/858531/353918.terrain new file mode 100644 index 000000000..cfc1999cf Binary files /dev/null and b/public/terrain/19/858531/353918.terrain differ diff --git a/public/terrain/19/858531/353919.terrain b/public/terrain/19/858531/353919.terrain new file mode 100644 index 000000000..e17f0b81f Binary files /dev/null and b/public/terrain/19/858531/353919.terrain differ diff --git a/public/terrain/19/858531/353920.terrain b/public/terrain/19/858531/353920.terrain new file mode 100644 index 000000000..b71cdf637 Binary files /dev/null and b/public/terrain/19/858531/353920.terrain differ diff --git a/public/terrain/19/858531/353921.terrain b/public/terrain/19/858531/353921.terrain new file mode 100644 index 000000000..a7394cfae Binary files /dev/null and b/public/terrain/19/858531/353921.terrain differ diff --git a/public/terrain/19/858531/353922.terrain b/public/terrain/19/858531/353922.terrain new file mode 100644 index 000000000..0b7e5e1d8 Binary files /dev/null and b/public/terrain/19/858531/353922.terrain differ diff --git a/public/terrain/19/858531/353923.terrain b/public/terrain/19/858531/353923.terrain new file mode 100644 index 000000000..970ecbc9b Binary files /dev/null and b/public/terrain/19/858531/353923.terrain differ diff --git a/public/terrain/19/858531/353924.terrain b/public/terrain/19/858531/353924.terrain new file mode 100644 index 000000000..387cb2e36 Binary files /dev/null and b/public/terrain/19/858531/353924.terrain differ diff --git a/public/terrain/19/858531/353925.terrain b/public/terrain/19/858531/353925.terrain new file mode 100644 index 000000000..a5ede7db6 Binary files /dev/null and b/public/terrain/19/858531/353925.terrain differ diff --git a/public/terrain/19/858531/353926.terrain b/public/terrain/19/858531/353926.terrain new file mode 100644 index 000000000..08d8fd770 Binary files /dev/null and b/public/terrain/19/858531/353926.terrain differ diff --git a/public/terrain/19/858531/353927.terrain b/public/terrain/19/858531/353927.terrain new file mode 100644 index 000000000..64b596c00 Binary files /dev/null and b/public/terrain/19/858531/353927.terrain differ diff --git a/public/terrain/19/858531/353928.terrain b/public/terrain/19/858531/353928.terrain new file mode 100644 index 000000000..81c6ca752 Binary files /dev/null and b/public/terrain/19/858531/353928.terrain differ diff --git a/public/terrain/19/858531/353929.terrain b/public/terrain/19/858531/353929.terrain new file mode 100644 index 000000000..615278d42 Binary files /dev/null and b/public/terrain/19/858531/353929.terrain differ diff --git a/public/terrain/19/858531/353930.terrain b/public/terrain/19/858531/353930.terrain new file mode 100644 index 000000000..d73ea5f74 Binary files /dev/null and b/public/terrain/19/858531/353930.terrain differ diff --git a/public/terrain/19/858531/353931.terrain b/public/terrain/19/858531/353931.terrain new file mode 100644 index 000000000..7f9f70028 Binary files /dev/null and b/public/terrain/19/858531/353931.terrain differ diff --git a/public/terrain/19/858531/353932.terrain b/public/terrain/19/858531/353932.terrain new file mode 100644 index 000000000..d7948f25f Binary files /dev/null and b/public/terrain/19/858531/353932.terrain differ diff --git a/public/terrain/19/858531/353933.terrain b/public/terrain/19/858531/353933.terrain new file mode 100644 index 000000000..939445efc Binary files /dev/null and b/public/terrain/19/858531/353933.terrain differ diff --git a/public/terrain/19/858531/353934.terrain b/public/terrain/19/858531/353934.terrain new file mode 100644 index 000000000..3d802ae00 Binary files /dev/null and b/public/terrain/19/858531/353934.terrain differ diff --git a/public/terrain/19/858531/353935.terrain b/public/terrain/19/858531/353935.terrain new file mode 100644 index 000000000..65805aff6 Binary files /dev/null and b/public/terrain/19/858531/353935.terrain differ diff --git a/public/terrain/19/858531/353936.terrain b/public/terrain/19/858531/353936.terrain new file mode 100644 index 000000000..b48ab3014 Binary files /dev/null and b/public/terrain/19/858531/353936.terrain differ diff --git a/public/terrain/19/858531/353937.terrain b/public/terrain/19/858531/353937.terrain new file mode 100644 index 000000000..b4cdb342d Binary files /dev/null and b/public/terrain/19/858531/353937.terrain differ diff --git a/public/terrain/19/858531/353938.terrain b/public/terrain/19/858531/353938.terrain new file mode 100644 index 000000000..34af07719 Binary files /dev/null and b/public/terrain/19/858531/353938.terrain differ diff --git a/public/terrain/19/858531/353939.terrain b/public/terrain/19/858531/353939.terrain new file mode 100644 index 000000000..c2038ae59 Binary files /dev/null and b/public/terrain/19/858531/353939.terrain differ diff --git a/public/terrain/19/858531/353940.terrain b/public/terrain/19/858531/353940.terrain new file mode 100644 index 000000000..c92144b4b Binary files /dev/null and b/public/terrain/19/858531/353940.terrain differ diff --git a/public/terrain/19/858531/353941.terrain b/public/terrain/19/858531/353941.terrain new file mode 100644 index 000000000..597d66070 Binary files /dev/null and b/public/terrain/19/858531/353941.terrain differ diff --git a/public/terrain/19/858531/353942.terrain b/public/terrain/19/858531/353942.terrain new file mode 100644 index 000000000..422336de5 Binary files /dev/null and b/public/terrain/19/858531/353942.terrain differ diff --git a/public/terrain/19/858531/353943.terrain b/public/terrain/19/858531/353943.terrain new file mode 100644 index 000000000..943a43915 Binary files /dev/null and b/public/terrain/19/858531/353943.terrain differ diff --git a/public/terrain/19/858531/353944.terrain b/public/terrain/19/858531/353944.terrain new file mode 100644 index 000000000..071a040ac Binary files /dev/null and b/public/terrain/19/858531/353944.terrain differ diff --git a/public/terrain/19/858531/353945.terrain b/public/terrain/19/858531/353945.terrain new file mode 100644 index 000000000..093ea4789 Binary files /dev/null and b/public/terrain/19/858531/353945.terrain differ diff --git a/public/terrain/19/858531/353946.terrain b/public/terrain/19/858531/353946.terrain new file mode 100644 index 000000000..5b988c3d2 Binary files /dev/null and b/public/terrain/19/858531/353946.terrain differ diff --git a/public/terrain/19/858531/353947.terrain b/public/terrain/19/858531/353947.terrain new file mode 100644 index 000000000..5cf90b589 Binary files /dev/null and b/public/terrain/19/858531/353947.terrain differ diff --git a/public/terrain/19/858531/353948.terrain b/public/terrain/19/858531/353948.terrain new file mode 100644 index 000000000..7cc4d4159 Binary files /dev/null and b/public/terrain/19/858531/353948.terrain differ diff --git a/public/terrain/19/858531/353949.terrain b/public/terrain/19/858531/353949.terrain new file mode 100644 index 000000000..d9b3d9b5b Binary files /dev/null and b/public/terrain/19/858531/353949.terrain differ diff --git a/public/terrain/19/858531/353950.terrain b/public/terrain/19/858531/353950.terrain new file mode 100644 index 000000000..eda053178 Binary files /dev/null and b/public/terrain/19/858531/353950.terrain differ diff --git a/public/terrain/19/858531/353951.terrain b/public/terrain/19/858531/353951.terrain new file mode 100644 index 000000000..bba7bd8ca Binary files /dev/null and b/public/terrain/19/858531/353951.terrain differ diff --git a/public/terrain/19/858531/353952.terrain b/public/terrain/19/858531/353952.terrain new file mode 100644 index 000000000..bbc232ea8 Binary files /dev/null and b/public/terrain/19/858531/353952.terrain differ diff --git a/public/terrain/19/858531/353953.terrain b/public/terrain/19/858531/353953.terrain new file mode 100644 index 000000000..54c786e0f Binary files /dev/null and b/public/terrain/19/858531/353953.terrain differ diff --git a/public/terrain/19/858531/353954.terrain b/public/terrain/19/858531/353954.terrain new file mode 100644 index 000000000..ecd9605b7 Binary files /dev/null and b/public/terrain/19/858531/353954.terrain differ diff --git a/public/terrain/19/858531/353955.terrain b/public/terrain/19/858531/353955.terrain new file mode 100644 index 000000000..2eb53135a Binary files /dev/null and b/public/terrain/19/858531/353955.terrain differ diff --git a/public/terrain/19/858531/353956.terrain b/public/terrain/19/858531/353956.terrain new file mode 100644 index 000000000..115df6e76 Binary files /dev/null and b/public/terrain/19/858531/353956.terrain differ diff --git a/public/terrain/19/858531/353957.terrain b/public/terrain/19/858531/353957.terrain new file mode 100644 index 000000000..2cd37a2c1 Binary files /dev/null and b/public/terrain/19/858531/353957.terrain differ diff --git a/public/terrain/19/858531/353958.terrain b/public/terrain/19/858531/353958.terrain new file mode 100644 index 000000000..ef1d5cc7e Binary files /dev/null and b/public/terrain/19/858531/353958.terrain differ diff --git a/public/terrain/19/858531/353959.terrain b/public/terrain/19/858531/353959.terrain new file mode 100644 index 000000000..2f484d2ca Binary files /dev/null and b/public/terrain/19/858531/353959.terrain differ diff --git a/public/terrain/19/858531/353960.terrain b/public/terrain/19/858531/353960.terrain new file mode 100644 index 000000000..9b4a16f20 Binary files /dev/null and b/public/terrain/19/858531/353960.terrain differ diff --git a/public/terrain/19/858531/353961.terrain b/public/terrain/19/858531/353961.terrain new file mode 100644 index 000000000..096a0b89d Binary files /dev/null and b/public/terrain/19/858531/353961.terrain differ diff --git a/public/terrain/19/858531/353962.terrain b/public/terrain/19/858531/353962.terrain new file mode 100644 index 000000000..a5d7df777 Binary files /dev/null and b/public/terrain/19/858531/353962.terrain differ diff --git a/public/terrain/19/858531/353963.terrain b/public/terrain/19/858531/353963.terrain new file mode 100644 index 000000000..b8a1e0833 Binary files /dev/null and b/public/terrain/19/858531/353963.terrain differ diff --git a/public/terrain/19/858531/353964.terrain b/public/terrain/19/858531/353964.terrain new file mode 100644 index 000000000..f5292d25d Binary files /dev/null and b/public/terrain/19/858531/353964.terrain differ diff --git a/public/terrain/19/858531/353965.terrain b/public/terrain/19/858531/353965.terrain new file mode 100644 index 000000000..bf48486c8 Binary files /dev/null and b/public/terrain/19/858531/353965.terrain differ diff --git a/public/terrain/19/858531/353966.terrain b/public/terrain/19/858531/353966.terrain new file mode 100644 index 000000000..20f4e216f Binary files /dev/null and b/public/terrain/19/858531/353966.terrain differ diff --git a/public/terrain/19/858531/353967.terrain b/public/terrain/19/858531/353967.terrain new file mode 100644 index 000000000..b3b544ae1 Binary files /dev/null and b/public/terrain/19/858531/353967.terrain differ diff --git a/public/terrain/19/858531/353968.terrain b/public/terrain/19/858531/353968.terrain new file mode 100644 index 000000000..bf510f1f7 Binary files /dev/null and b/public/terrain/19/858531/353968.terrain differ diff --git a/public/terrain/19/858531/353969.terrain b/public/terrain/19/858531/353969.terrain new file mode 100644 index 000000000..8548f8e3e Binary files /dev/null and b/public/terrain/19/858531/353969.terrain differ diff --git a/public/terrain/19/858531/353970.terrain b/public/terrain/19/858531/353970.terrain new file mode 100644 index 000000000..57a9ecbaf Binary files /dev/null and b/public/terrain/19/858531/353970.terrain differ diff --git a/public/terrain/19/858531/353971.terrain b/public/terrain/19/858531/353971.terrain new file mode 100644 index 000000000..63bcf3c57 Binary files /dev/null and b/public/terrain/19/858531/353971.terrain differ diff --git a/public/terrain/19/858531/353972.terrain b/public/terrain/19/858531/353972.terrain new file mode 100644 index 000000000..0dc468286 Binary files /dev/null and b/public/terrain/19/858531/353972.terrain differ diff --git a/public/terrain/19/858531/353973.terrain b/public/terrain/19/858531/353973.terrain new file mode 100644 index 000000000..d82793c7a Binary files /dev/null and b/public/terrain/19/858531/353973.terrain differ diff --git a/public/terrain/19/858531/353974.terrain b/public/terrain/19/858531/353974.terrain new file mode 100644 index 000000000..78d8eece5 Binary files /dev/null and b/public/terrain/19/858531/353974.terrain differ diff --git a/public/terrain/19/858531/353975.terrain b/public/terrain/19/858531/353975.terrain new file mode 100644 index 000000000..c5706f1d9 Binary files /dev/null and b/public/terrain/19/858531/353975.terrain differ diff --git a/public/terrain/19/858531/353976.terrain b/public/terrain/19/858531/353976.terrain new file mode 100644 index 000000000..e4dd4451a Binary files /dev/null and b/public/terrain/19/858531/353976.terrain differ diff --git a/public/terrain/19/858531/353977.terrain b/public/terrain/19/858531/353977.terrain new file mode 100644 index 000000000..9fdf7c4e6 Binary files /dev/null and b/public/terrain/19/858531/353977.terrain differ diff --git a/public/terrain/19/858531/353978.terrain b/public/terrain/19/858531/353978.terrain new file mode 100644 index 000000000..43e7d264d Binary files /dev/null and b/public/terrain/19/858531/353978.terrain differ diff --git a/public/terrain/19/858531/353979.terrain b/public/terrain/19/858531/353979.terrain new file mode 100644 index 000000000..e0068fcaf Binary files /dev/null and b/public/terrain/19/858531/353979.terrain differ diff --git a/public/terrain/19/858531/353980.terrain b/public/terrain/19/858531/353980.terrain new file mode 100644 index 000000000..b64ee758c Binary files /dev/null and b/public/terrain/19/858531/353980.terrain differ diff --git a/public/terrain/19/858531/353981.terrain b/public/terrain/19/858531/353981.terrain new file mode 100644 index 000000000..3b75978f7 Binary files /dev/null and b/public/terrain/19/858531/353981.terrain differ diff --git a/public/terrain/19/858531/353982.terrain b/public/terrain/19/858531/353982.terrain new file mode 100644 index 000000000..0563db9e0 Binary files /dev/null and b/public/terrain/19/858531/353982.terrain differ diff --git a/public/terrain/19/858531/353983.terrain b/public/terrain/19/858531/353983.terrain new file mode 100644 index 000000000..aef3f51cb Binary files /dev/null and b/public/terrain/19/858531/353983.terrain differ diff --git a/public/terrain/19/858531/353984.terrain b/public/terrain/19/858531/353984.terrain new file mode 100644 index 000000000..76dff574f Binary files /dev/null and b/public/terrain/19/858531/353984.terrain differ diff --git a/public/terrain/19/858531/353985.terrain b/public/terrain/19/858531/353985.terrain new file mode 100644 index 000000000..118661143 Binary files /dev/null and b/public/terrain/19/858531/353985.terrain differ diff --git a/public/terrain/19/858531/353986.terrain b/public/terrain/19/858531/353986.terrain new file mode 100644 index 000000000..125ee2a42 Binary files /dev/null and b/public/terrain/19/858531/353986.terrain differ diff --git a/public/terrain/19/858531/353987.terrain b/public/terrain/19/858531/353987.terrain new file mode 100644 index 000000000..1edef627a Binary files /dev/null and b/public/terrain/19/858531/353987.terrain differ diff --git a/public/terrain/19/858531/353988.terrain b/public/terrain/19/858531/353988.terrain new file mode 100644 index 000000000..01a579d48 Binary files /dev/null and b/public/terrain/19/858531/353988.terrain differ diff --git a/public/terrain/19/858531/353989.terrain b/public/terrain/19/858531/353989.terrain new file mode 100644 index 000000000..f3d4ec895 Binary files /dev/null and b/public/terrain/19/858531/353989.terrain differ diff --git a/public/terrain/19/858531/353990.terrain b/public/terrain/19/858531/353990.terrain new file mode 100644 index 000000000..04d7c61eb Binary files /dev/null and b/public/terrain/19/858531/353990.terrain differ diff --git a/public/terrain/19/858531/353991.terrain b/public/terrain/19/858531/353991.terrain new file mode 100644 index 000000000..3d0089f31 Binary files /dev/null and b/public/terrain/19/858531/353991.terrain differ diff --git a/public/terrain/19/858531/353992.terrain b/public/terrain/19/858531/353992.terrain new file mode 100644 index 000000000..c2a29a1e3 Binary files /dev/null and b/public/terrain/19/858531/353992.terrain differ diff --git a/public/terrain/19/858531/353993.terrain b/public/terrain/19/858531/353993.terrain new file mode 100644 index 000000000..5117c8644 Binary files /dev/null and b/public/terrain/19/858531/353993.terrain differ diff --git a/public/terrain/19/858531/353994.terrain b/public/terrain/19/858531/353994.terrain new file mode 100644 index 000000000..01e14227a Binary files /dev/null and b/public/terrain/19/858531/353994.terrain differ diff --git a/public/terrain/19/858531/353995.terrain b/public/terrain/19/858531/353995.terrain new file mode 100644 index 000000000..eaa386bdc Binary files /dev/null and b/public/terrain/19/858531/353995.terrain differ diff --git a/public/terrain/19/858531/353996.terrain b/public/terrain/19/858531/353996.terrain new file mode 100644 index 000000000..6ee6ce434 Binary files /dev/null and b/public/terrain/19/858531/353996.terrain differ diff --git a/public/terrain/19/858531/353997.terrain b/public/terrain/19/858531/353997.terrain new file mode 100644 index 000000000..c5641f020 Binary files /dev/null and b/public/terrain/19/858531/353997.terrain differ diff --git a/public/terrain/19/858531/353998.terrain b/public/terrain/19/858531/353998.terrain new file mode 100644 index 000000000..f0f6c8eae Binary files /dev/null and b/public/terrain/19/858531/353998.terrain differ diff --git a/public/terrain/19/858531/353999.terrain b/public/terrain/19/858531/353999.terrain new file mode 100644 index 000000000..428c88e48 Binary files /dev/null and b/public/terrain/19/858531/353999.terrain differ diff --git a/public/terrain/19/858531/354000.terrain b/public/terrain/19/858531/354000.terrain new file mode 100644 index 000000000..9bfced405 Binary files /dev/null and b/public/terrain/19/858531/354000.terrain differ diff --git a/public/terrain/19/858531/354001.terrain b/public/terrain/19/858531/354001.terrain new file mode 100644 index 000000000..575aa0721 Binary files /dev/null and b/public/terrain/19/858531/354001.terrain differ diff --git a/public/terrain/19/858531/354002.terrain b/public/terrain/19/858531/354002.terrain new file mode 100644 index 000000000..4c28d01b1 Binary files /dev/null and b/public/terrain/19/858531/354002.terrain differ diff --git a/public/terrain/19/858531/354003.terrain b/public/terrain/19/858531/354003.terrain new file mode 100644 index 000000000..601caad81 Binary files /dev/null and b/public/terrain/19/858531/354003.terrain differ diff --git a/public/terrain/19/858531/354004.terrain b/public/terrain/19/858531/354004.terrain new file mode 100644 index 000000000..b22c1ef6f Binary files /dev/null and b/public/terrain/19/858531/354004.terrain differ diff --git a/public/terrain/19/858531/354005.terrain b/public/terrain/19/858531/354005.terrain new file mode 100644 index 000000000..1834c1492 Binary files /dev/null and b/public/terrain/19/858531/354005.terrain differ diff --git a/public/terrain/19/858531/354006.terrain b/public/terrain/19/858531/354006.terrain new file mode 100644 index 000000000..a2fa68829 Binary files /dev/null and b/public/terrain/19/858531/354006.terrain differ diff --git a/public/terrain/19/858531/354007.terrain b/public/terrain/19/858531/354007.terrain new file mode 100644 index 000000000..ec9b04be9 Binary files /dev/null and b/public/terrain/19/858531/354007.terrain differ diff --git a/public/terrain/19/858531/354008.terrain b/public/terrain/19/858531/354008.terrain new file mode 100644 index 000000000..eb18e3a08 Binary files /dev/null and b/public/terrain/19/858531/354008.terrain differ diff --git a/public/terrain/19/858531/354009.terrain b/public/terrain/19/858531/354009.terrain new file mode 100644 index 000000000..e2e61f472 Binary files /dev/null and b/public/terrain/19/858531/354009.terrain differ diff --git a/public/terrain/19/858531/354010.terrain b/public/terrain/19/858531/354010.terrain new file mode 100644 index 000000000..6921817b5 Binary files /dev/null and b/public/terrain/19/858531/354010.terrain differ diff --git a/public/terrain/19/858531/354011.terrain b/public/terrain/19/858531/354011.terrain new file mode 100644 index 000000000..3c6fb7e2e Binary files /dev/null and b/public/terrain/19/858531/354011.terrain differ diff --git a/public/terrain/19/858531/354012.terrain b/public/terrain/19/858531/354012.terrain new file mode 100644 index 000000000..3043599da Binary files /dev/null and b/public/terrain/19/858531/354012.terrain differ diff --git a/public/terrain/19/858531/354013.terrain b/public/terrain/19/858531/354013.terrain new file mode 100644 index 000000000..07c85ecc8 Binary files /dev/null and b/public/terrain/19/858531/354013.terrain differ diff --git a/public/terrain/19/858531/354014.terrain b/public/terrain/19/858531/354014.terrain new file mode 100644 index 000000000..ce942824f Binary files /dev/null and b/public/terrain/19/858531/354014.terrain differ diff --git a/public/terrain/19/858531/354015.terrain b/public/terrain/19/858531/354015.terrain new file mode 100644 index 000000000..41234f075 Binary files /dev/null and b/public/terrain/19/858531/354015.terrain differ diff --git a/public/terrain/19/858531/354016.terrain b/public/terrain/19/858531/354016.terrain new file mode 100644 index 000000000..37253f709 Binary files /dev/null and b/public/terrain/19/858531/354016.terrain differ diff --git a/public/terrain/19/858531/354017.terrain b/public/terrain/19/858531/354017.terrain new file mode 100644 index 000000000..dc720607b Binary files /dev/null and b/public/terrain/19/858531/354017.terrain differ diff --git a/public/terrain/19/858531/354018.terrain b/public/terrain/19/858531/354018.terrain new file mode 100644 index 000000000..58ea8d306 Binary files /dev/null and b/public/terrain/19/858531/354018.terrain differ diff --git a/public/terrain/19/858531/354019.terrain b/public/terrain/19/858531/354019.terrain new file mode 100644 index 000000000..ef320085e Binary files /dev/null and b/public/terrain/19/858531/354019.terrain differ diff --git a/public/terrain/19/858531/354020.terrain b/public/terrain/19/858531/354020.terrain new file mode 100644 index 000000000..d029633f9 Binary files /dev/null and b/public/terrain/19/858531/354020.terrain differ diff --git a/public/terrain/19/858531/354021.terrain b/public/terrain/19/858531/354021.terrain new file mode 100644 index 000000000..36a65a678 Binary files /dev/null and b/public/terrain/19/858531/354021.terrain differ diff --git a/public/terrain/19/858531/354022.terrain b/public/terrain/19/858531/354022.terrain new file mode 100644 index 000000000..718760b9e Binary files /dev/null and b/public/terrain/19/858531/354022.terrain differ diff --git a/public/terrain/19/858531/354023.terrain b/public/terrain/19/858531/354023.terrain new file mode 100644 index 000000000..c646298ed Binary files /dev/null and b/public/terrain/19/858531/354023.terrain differ diff --git a/public/terrain/19/858531/354024.terrain b/public/terrain/19/858531/354024.terrain new file mode 100644 index 000000000..422371c77 Binary files /dev/null and b/public/terrain/19/858531/354024.terrain differ diff --git a/public/terrain/19/858531/354025.terrain b/public/terrain/19/858531/354025.terrain new file mode 100644 index 000000000..2bb9687cc Binary files /dev/null and b/public/terrain/19/858531/354025.terrain differ diff --git a/public/terrain/19/858531/354026.terrain b/public/terrain/19/858531/354026.terrain new file mode 100644 index 000000000..34e7fbeb5 Binary files /dev/null and b/public/terrain/19/858531/354026.terrain differ diff --git a/public/terrain/19/858531/354027.terrain b/public/terrain/19/858531/354027.terrain new file mode 100644 index 000000000..3d295c35c Binary files /dev/null and b/public/terrain/19/858531/354027.terrain differ diff --git a/public/terrain/19/858531/354028.terrain b/public/terrain/19/858531/354028.terrain new file mode 100644 index 000000000..d48f375b3 Binary files /dev/null and b/public/terrain/19/858531/354028.terrain differ diff --git a/public/terrain/19/858531/354029.terrain b/public/terrain/19/858531/354029.terrain new file mode 100644 index 000000000..b986fa8e6 Binary files /dev/null and b/public/terrain/19/858531/354029.terrain differ diff --git a/public/terrain/19/858531/354030.terrain b/public/terrain/19/858531/354030.terrain new file mode 100644 index 000000000..401af5430 Binary files /dev/null and b/public/terrain/19/858531/354030.terrain differ diff --git a/public/terrain/19/858531/354031.terrain b/public/terrain/19/858531/354031.terrain new file mode 100644 index 000000000..b50b1bce4 Binary files /dev/null and b/public/terrain/19/858531/354031.terrain differ diff --git a/public/terrain/19/858531/354032.terrain b/public/terrain/19/858531/354032.terrain new file mode 100644 index 000000000..6bb2f4ad3 Binary files /dev/null and b/public/terrain/19/858531/354032.terrain differ diff --git a/public/terrain/19/858531/354033.terrain b/public/terrain/19/858531/354033.terrain new file mode 100644 index 000000000..7718f53c9 Binary files /dev/null and b/public/terrain/19/858531/354033.terrain differ diff --git a/public/terrain/19/858531/354034.terrain b/public/terrain/19/858531/354034.terrain new file mode 100644 index 000000000..5b4f15e6e Binary files /dev/null and b/public/terrain/19/858531/354034.terrain differ diff --git a/public/terrain/19/858531/354035.terrain b/public/terrain/19/858531/354035.terrain new file mode 100644 index 000000000..5df02f1bb Binary files /dev/null and b/public/terrain/19/858531/354035.terrain differ diff --git a/public/terrain/19/858531/354036.terrain b/public/terrain/19/858531/354036.terrain new file mode 100644 index 000000000..1d1b7735e Binary files /dev/null and b/public/terrain/19/858531/354036.terrain differ diff --git a/public/terrain/19/858531/354037.terrain b/public/terrain/19/858531/354037.terrain new file mode 100644 index 000000000..4e40bdcd7 Binary files /dev/null and b/public/terrain/19/858531/354037.terrain differ diff --git a/public/terrain/19/858531/354038.terrain b/public/terrain/19/858531/354038.terrain new file mode 100644 index 000000000..4e79a84fb Binary files /dev/null and b/public/terrain/19/858531/354038.terrain differ diff --git a/public/terrain/19/858531/354039.terrain b/public/terrain/19/858531/354039.terrain new file mode 100644 index 000000000..54827a7e4 Binary files /dev/null and b/public/terrain/19/858531/354039.terrain differ diff --git a/public/terrain/19/858531/354040.terrain b/public/terrain/19/858531/354040.terrain new file mode 100644 index 000000000..0090fd1bf Binary files /dev/null and b/public/terrain/19/858531/354040.terrain differ diff --git a/public/terrain/19/858531/354041.terrain b/public/terrain/19/858531/354041.terrain new file mode 100644 index 000000000..2960abbb5 Binary files /dev/null and b/public/terrain/19/858531/354041.terrain differ diff --git a/public/terrain/19/858531/354042.terrain b/public/terrain/19/858531/354042.terrain new file mode 100644 index 000000000..1f47126c0 Binary files /dev/null and b/public/terrain/19/858531/354042.terrain differ diff --git a/public/terrain/19/858531/354043.terrain b/public/terrain/19/858531/354043.terrain new file mode 100644 index 000000000..a9c75d51d Binary files /dev/null and b/public/terrain/19/858531/354043.terrain differ diff --git a/public/terrain/19/858531/354044.terrain b/public/terrain/19/858531/354044.terrain new file mode 100644 index 000000000..fe9592188 Binary files /dev/null and b/public/terrain/19/858531/354044.terrain differ diff --git a/public/terrain/19/858531/354045.terrain b/public/terrain/19/858531/354045.terrain new file mode 100644 index 000000000..adae96504 Binary files /dev/null and b/public/terrain/19/858531/354045.terrain differ diff --git a/public/terrain/19/858531/354046.terrain b/public/terrain/19/858531/354046.terrain new file mode 100644 index 000000000..51ef2599f Binary files /dev/null and b/public/terrain/19/858531/354046.terrain differ diff --git a/public/terrain/19/858531/354047.terrain b/public/terrain/19/858531/354047.terrain new file mode 100644 index 000000000..89c083364 Binary files /dev/null and b/public/terrain/19/858531/354047.terrain differ diff --git a/public/terrain/19/858531/354048.terrain b/public/terrain/19/858531/354048.terrain new file mode 100644 index 000000000..3bd3a2d2b Binary files /dev/null and b/public/terrain/19/858531/354048.terrain differ diff --git a/public/terrain/19/858531/354049.terrain b/public/terrain/19/858531/354049.terrain new file mode 100644 index 000000000..895c26f96 Binary files /dev/null and b/public/terrain/19/858531/354049.terrain differ diff --git a/public/terrain/19/858531/354050.terrain b/public/terrain/19/858531/354050.terrain new file mode 100644 index 000000000..7db3f606f Binary files /dev/null and b/public/terrain/19/858531/354050.terrain differ diff --git a/public/terrain/19/858531/354051.terrain b/public/terrain/19/858531/354051.terrain new file mode 100644 index 000000000..ff15d05c0 Binary files /dev/null and b/public/terrain/19/858531/354051.terrain differ diff --git a/public/terrain/19/858531/354052.terrain b/public/terrain/19/858531/354052.terrain new file mode 100644 index 000000000..1b88f762b Binary files /dev/null and b/public/terrain/19/858531/354052.terrain differ diff --git a/public/terrain/19/858531/354053.terrain b/public/terrain/19/858531/354053.terrain new file mode 100644 index 000000000..cc335fa51 Binary files /dev/null and b/public/terrain/19/858531/354053.terrain differ diff --git a/public/terrain/19/858531/354054.terrain b/public/terrain/19/858531/354054.terrain new file mode 100644 index 000000000..e3a160f1c Binary files /dev/null and b/public/terrain/19/858531/354054.terrain differ diff --git a/public/terrain/19/858531/354055.terrain b/public/terrain/19/858531/354055.terrain new file mode 100644 index 000000000..94b0ded43 Binary files /dev/null and b/public/terrain/19/858531/354055.terrain differ diff --git a/public/terrain/19/858531/354056.terrain b/public/terrain/19/858531/354056.terrain new file mode 100644 index 000000000..34a4b5baa Binary files /dev/null and b/public/terrain/19/858531/354056.terrain differ diff --git a/public/terrain/19/858531/354057.terrain b/public/terrain/19/858531/354057.terrain new file mode 100644 index 000000000..0208f8800 Binary files /dev/null and b/public/terrain/19/858531/354057.terrain differ diff --git a/public/terrain/19/858531/354058.terrain b/public/terrain/19/858531/354058.terrain new file mode 100644 index 000000000..c25e38e0c Binary files /dev/null and b/public/terrain/19/858531/354058.terrain differ diff --git a/public/terrain/19/858531/354059.terrain b/public/terrain/19/858531/354059.terrain new file mode 100644 index 000000000..8f14ee037 Binary files /dev/null and b/public/terrain/19/858531/354059.terrain differ diff --git a/public/terrain/19/858532/353743.terrain b/public/terrain/19/858532/353743.terrain new file mode 100644 index 000000000..4712bd113 Binary files /dev/null and b/public/terrain/19/858532/353743.terrain differ diff --git a/public/terrain/19/858532/353744.terrain b/public/terrain/19/858532/353744.terrain new file mode 100644 index 000000000..e7225ad63 Binary files /dev/null and b/public/terrain/19/858532/353744.terrain differ diff --git a/public/terrain/19/858532/353745.terrain b/public/terrain/19/858532/353745.terrain new file mode 100644 index 000000000..edf19a339 Binary files /dev/null and b/public/terrain/19/858532/353745.terrain differ diff --git a/public/terrain/19/858532/353746.terrain b/public/terrain/19/858532/353746.terrain new file mode 100644 index 000000000..7e7a4ac6b Binary files /dev/null and b/public/terrain/19/858532/353746.terrain differ diff --git a/public/terrain/19/858532/353747.terrain b/public/terrain/19/858532/353747.terrain new file mode 100644 index 000000000..2d2bacd55 Binary files /dev/null and b/public/terrain/19/858532/353747.terrain differ diff --git a/public/terrain/19/858532/353748.terrain b/public/terrain/19/858532/353748.terrain new file mode 100644 index 000000000..d9d41821a Binary files /dev/null and b/public/terrain/19/858532/353748.terrain differ diff --git a/public/terrain/19/858532/353749.terrain b/public/terrain/19/858532/353749.terrain new file mode 100644 index 000000000..497188a02 Binary files /dev/null and b/public/terrain/19/858532/353749.terrain differ diff --git a/public/terrain/19/858532/353750.terrain b/public/terrain/19/858532/353750.terrain new file mode 100644 index 000000000..9e71b914c Binary files /dev/null and b/public/terrain/19/858532/353750.terrain differ diff --git a/public/terrain/19/858532/353751.terrain b/public/terrain/19/858532/353751.terrain new file mode 100644 index 000000000..b255a18a0 Binary files /dev/null and b/public/terrain/19/858532/353751.terrain differ diff --git a/public/terrain/19/858532/353752.terrain b/public/terrain/19/858532/353752.terrain new file mode 100644 index 000000000..494c15893 Binary files /dev/null and b/public/terrain/19/858532/353752.terrain differ diff --git a/public/terrain/19/858532/353753.terrain b/public/terrain/19/858532/353753.terrain new file mode 100644 index 000000000..f1deca2e5 Binary files /dev/null and b/public/terrain/19/858532/353753.terrain differ diff --git a/public/terrain/19/858532/353754.terrain b/public/terrain/19/858532/353754.terrain new file mode 100644 index 000000000..6615217e1 Binary files /dev/null and b/public/terrain/19/858532/353754.terrain differ diff --git a/public/terrain/19/858532/353755.terrain b/public/terrain/19/858532/353755.terrain new file mode 100644 index 000000000..7ad822944 Binary files /dev/null and b/public/terrain/19/858532/353755.terrain differ diff --git a/public/terrain/19/858532/353756.terrain b/public/terrain/19/858532/353756.terrain new file mode 100644 index 000000000..92f23fa45 Binary files /dev/null and b/public/terrain/19/858532/353756.terrain differ diff --git a/public/terrain/19/858532/353757.terrain b/public/terrain/19/858532/353757.terrain new file mode 100644 index 000000000..4d4a12bb4 Binary files /dev/null and b/public/terrain/19/858532/353757.terrain differ diff --git a/public/terrain/19/858532/353758.terrain b/public/terrain/19/858532/353758.terrain new file mode 100644 index 000000000..9a29ad1bf Binary files /dev/null and b/public/terrain/19/858532/353758.terrain differ diff --git a/public/terrain/19/858532/353759.terrain b/public/terrain/19/858532/353759.terrain new file mode 100644 index 000000000..35802ecd1 Binary files /dev/null and b/public/terrain/19/858532/353759.terrain differ diff --git a/public/terrain/19/858532/353760.terrain b/public/terrain/19/858532/353760.terrain new file mode 100644 index 000000000..b9e89f37d Binary files /dev/null and b/public/terrain/19/858532/353760.terrain differ diff --git a/public/terrain/19/858532/353761.terrain b/public/terrain/19/858532/353761.terrain new file mode 100644 index 000000000..20a1c9fab Binary files /dev/null and b/public/terrain/19/858532/353761.terrain differ diff --git a/public/terrain/19/858532/353762.terrain b/public/terrain/19/858532/353762.terrain new file mode 100644 index 000000000..1a5184583 Binary files /dev/null and b/public/terrain/19/858532/353762.terrain differ diff --git a/public/terrain/19/858532/353763.terrain b/public/terrain/19/858532/353763.terrain new file mode 100644 index 000000000..23daf8142 Binary files /dev/null and b/public/terrain/19/858532/353763.terrain differ diff --git a/public/terrain/19/858532/353764.terrain b/public/terrain/19/858532/353764.terrain new file mode 100644 index 000000000..4407637b3 Binary files /dev/null and b/public/terrain/19/858532/353764.terrain differ diff --git a/public/terrain/19/858532/353765.terrain b/public/terrain/19/858532/353765.terrain new file mode 100644 index 000000000..18df8c0bf Binary files /dev/null and b/public/terrain/19/858532/353765.terrain differ diff --git a/public/terrain/19/858532/353766.terrain b/public/terrain/19/858532/353766.terrain new file mode 100644 index 000000000..43eaf2b46 Binary files /dev/null and b/public/terrain/19/858532/353766.terrain differ diff --git a/public/terrain/19/858532/353767.terrain b/public/terrain/19/858532/353767.terrain new file mode 100644 index 000000000..74260b6ec Binary files /dev/null and b/public/terrain/19/858532/353767.terrain differ diff --git a/public/terrain/19/858532/353768.terrain b/public/terrain/19/858532/353768.terrain new file mode 100644 index 000000000..ad208f81c Binary files /dev/null and b/public/terrain/19/858532/353768.terrain differ diff --git a/public/terrain/19/858532/353769.terrain b/public/terrain/19/858532/353769.terrain new file mode 100644 index 000000000..d5f27201c Binary files /dev/null and b/public/terrain/19/858532/353769.terrain differ diff --git a/public/terrain/19/858532/353770.terrain b/public/terrain/19/858532/353770.terrain new file mode 100644 index 000000000..d7046d1f9 Binary files /dev/null and b/public/terrain/19/858532/353770.terrain differ diff --git a/public/terrain/19/858532/353771.terrain b/public/terrain/19/858532/353771.terrain new file mode 100644 index 000000000..bf070e5b8 Binary files /dev/null and b/public/terrain/19/858532/353771.terrain differ diff --git a/public/terrain/19/858532/353772.terrain b/public/terrain/19/858532/353772.terrain new file mode 100644 index 000000000..c514ab49b Binary files /dev/null and b/public/terrain/19/858532/353772.terrain differ diff --git a/public/terrain/19/858532/353773.terrain b/public/terrain/19/858532/353773.terrain new file mode 100644 index 000000000..c82804a4a Binary files /dev/null and b/public/terrain/19/858532/353773.terrain differ diff --git a/public/terrain/19/858532/353774.terrain b/public/terrain/19/858532/353774.terrain new file mode 100644 index 000000000..c979696bb Binary files /dev/null and b/public/terrain/19/858532/353774.terrain differ diff --git a/public/terrain/19/858532/353775.terrain b/public/terrain/19/858532/353775.terrain new file mode 100644 index 000000000..7f3fb6b63 Binary files /dev/null and b/public/terrain/19/858532/353775.terrain differ diff --git a/public/terrain/19/858532/353776.terrain b/public/terrain/19/858532/353776.terrain new file mode 100644 index 000000000..21af4b6e5 Binary files /dev/null and b/public/terrain/19/858532/353776.terrain differ diff --git a/public/terrain/19/858532/353777.terrain b/public/terrain/19/858532/353777.terrain new file mode 100644 index 000000000..1aadbfa6d Binary files /dev/null and b/public/terrain/19/858532/353777.terrain differ diff --git a/public/terrain/19/858532/353778.terrain b/public/terrain/19/858532/353778.terrain new file mode 100644 index 000000000..09ff25c00 Binary files /dev/null and b/public/terrain/19/858532/353778.terrain differ diff --git a/public/terrain/19/858532/353779.terrain b/public/terrain/19/858532/353779.terrain new file mode 100644 index 000000000..bf37a7b01 Binary files /dev/null and b/public/terrain/19/858532/353779.terrain differ diff --git a/public/terrain/19/858532/353780.terrain b/public/terrain/19/858532/353780.terrain new file mode 100644 index 000000000..2c9a491dc Binary files /dev/null and b/public/terrain/19/858532/353780.terrain differ diff --git a/public/terrain/19/858532/353781.terrain b/public/terrain/19/858532/353781.terrain new file mode 100644 index 000000000..98b9645cd Binary files /dev/null and b/public/terrain/19/858532/353781.terrain differ diff --git a/public/terrain/19/858532/353782.terrain b/public/terrain/19/858532/353782.terrain new file mode 100644 index 000000000..ae1c869f2 Binary files /dev/null and b/public/terrain/19/858532/353782.terrain differ diff --git a/public/terrain/19/858532/353783.terrain b/public/terrain/19/858532/353783.terrain new file mode 100644 index 000000000..c7bfc923a Binary files /dev/null and b/public/terrain/19/858532/353783.terrain differ diff --git a/public/terrain/19/858532/353784.terrain b/public/terrain/19/858532/353784.terrain new file mode 100644 index 000000000..5140d1c81 Binary files /dev/null and b/public/terrain/19/858532/353784.terrain differ diff --git a/public/terrain/19/858532/353785.terrain b/public/terrain/19/858532/353785.terrain new file mode 100644 index 000000000..259a37bb7 Binary files /dev/null and b/public/terrain/19/858532/353785.terrain differ diff --git a/public/terrain/19/858532/353786.terrain b/public/terrain/19/858532/353786.terrain new file mode 100644 index 000000000..2ce80de34 Binary files /dev/null and b/public/terrain/19/858532/353786.terrain differ diff --git a/public/terrain/19/858532/353787.terrain b/public/terrain/19/858532/353787.terrain new file mode 100644 index 000000000..b122fd6b4 Binary files /dev/null and b/public/terrain/19/858532/353787.terrain differ diff --git a/public/terrain/19/858532/353788.terrain b/public/terrain/19/858532/353788.terrain new file mode 100644 index 000000000..1a2a6fce7 Binary files /dev/null and b/public/terrain/19/858532/353788.terrain differ diff --git a/public/terrain/19/858532/353789.terrain b/public/terrain/19/858532/353789.terrain new file mode 100644 index 000000000..0d54ad090 Binary files /dev/null and b/public/terrain/19/858532/353789.terrain differ diff --git a/public/terrain/19/858532/353790.terrain b/public/terrain/19/858532/353790.terrain new file mode 100644 index 000000000..2365f2cd5 Binary files /dev/null and b/public/terrain/19/858532/353790.terrain differ diff --git a/public/terrain/19/858532/353791.terrain b/public/terrain/19/858532/353791.terrain new file mode 100644 index 000000000..c74aa6505 Binary files /dev/null and b/public/terrain/19/858532/353791.terrain differ diff --git a/public/terrain/19/858532/353792.terrain b/public/terrain/19/858532/353792.terrain new file mode 100644 index 000000000..368f8ec65 Binary files /dev/null and b/public/terrain/19/858532/353792.terrain differ diff --git a/public/terrain/19/858532/353793.terrain b/public/terrain/19/858532/353793.terrain new file mode 100644 index 000000000..fd2f783fc Binary files /dev/null and b/public/terrain/19/858532/353793.terrain differ diff --git a/public/terrain/19/858532/353794.terrain b/public/terrain/19/858532/353794.terrain new file mode 100644 index 000000000..157f6457d Binary files /dev/null and b/public/terrain/19/858532/353794.terrain differ diff --git a/public/terrain/19/858532/353795.terrain b/public/terrain/19/858532/353795.terrain new file mode 100644 index 000000000..23c9aa6a7 Binary files /dev/null and b/public/terrain/19/858532/353795.terrain differ diff --git a/public/terrain/19/858532/353796.terrain b/public/terrain/19/858532/353796.terrain new file mode 100644 index 000000000..2acc9f0d9 Binary files /dev/null and b/public/terrain/19/858532/353796.terrain differ diff --git a/public/terrain/19/858532/353797.terrain b/public/terrain/19/858532/353797.terrain new file mode 100644 index 000000000..ad5181e9d Binary files /dev/null and b/public/terrain/19/858532/353797.terrain differ diff --git a/public/terrain/19/858532/353798.terrain b/public/terrain/19/858532/353798.terrain new file mode 100644 index 000000000..00f64256d Binary files /dev/null and b/public/terrain/19/858532/353798.terrain differ diff --git a/public/terrain/19/858532/353799.terrain b/public/terrain/19/858532/353799.terrain new file mode 100644 index 000000000..2cde5546c Binary files /dev/null and b/public/terrain/19/858532/353799.terrain differ diff --git a/public/terrain/19/858532/353800.terrain b/public/terrain/19/858532/353800.terrain new file mode 100644 index 000000000..7a72ff435 Binary files /dev/null and b/public/terrain/19/858532/353800.terrain differ diff --git a/public/terrain/19/858532/353801.terrain b/public/terrain/19/858532/353801.terrain new file mode 100644 index 000000000..e85e62aa4 Binary files /dev/null and b/public/terrain/19/858532/353801.terrain differ diff --git a/public/terrain/19/858532/353802.terrain b/public/terrain/19/858532/353802.terrain new file mode 100644 index 000000000..2f932d774 Binary files /dev/null and b/public/terrain/19/858532/353802.terrain differ diff --git a/public/terrain/19/858532/353803.terrain b/public/terrain/19/858532/353803.terrain new file mode 100644 index 000000000..5e90ad075 Binary files /dev/null and b/public/terrain/19/858532/353803.terrain differ diff --git a/public/terrain/19/858532/353804.terrain b/public/terrain/19/858532/353804.terrain new file mode 100644 index 000000000..702f1da55 Binary files /dev/null and b/public/terrain/19/858532/353804.terrain differ diff --git a/public/terrain/19/858532/353805.terrain b/public/terrain/19/858532/353805.terrain new file mode 100644 index 000000000..67e0158de Binary files /dev/null and b/public/terrain/19/858532/353805.terrain differ diff --git a/public/terrain/19/858532/353806.terrain b/public/terrain/19/858532/353806.terrain new file mode 100644 index 000000000..8f3ac6fde Binary files /dev/null and b/public/terrain/19/858532/353806.terrain differ diff --git a/public/terrain/19/858532/353807.terrain b/public/terrain/19/858532/353807.terrain new file mode 100644 index 000000000..677bd7883 Binary files /dev/null and b/public/terrain/19/858532/353807.terrain differ diff --git a/public/terrain/19/858532/353808.terrain b/public/terrain/19/858532/353808.terrain new file mode 100644 index 000000000..b0188fa18 Binary files /dev/null and b/public/terrain/19/858532/353808.terrain differ diff --git a/public/terrain/19/858532/353809.terrain b/public/terrain/19/858532/353809.terrain new file mode 100644 index 000000000..2dcd917d2 Binary files /dev/null and b/public/terrain/19/858532/353809.terrain differ diff --git a/public/terrain/19/858532/353810.terrain b/public/terrain/19/858532/353810.terrain new file mode 100644 index 000000000..86b412d77 Binary files /dev/null and b/public/terrain/19/858532/353810.terrain differ diff --git a/public/terrain/19/858532/353811.terrain b/public/terrain/19/858532/353811.terrain new file mode 100644 index 000000000..69571100c Binary files /dev/null and b/public/terrain/19/858532/353811.terrain differ diff --git a/public/terrain/19/858532/353812.terrain b/public/terrain/19/858532/353812.terrain new file mode 100644 index 000000000..4a2d58258 Binary files /dev/null and b/public/terrain/19/858532/353812.terrain differ diff --git a/public/terrain/19/858532/353813.terrain b/public/terrain/19/858532/353813.terrain new file mode 100644 index 000000000..094432fc0 Binary files /dev/null and b/public/terrain/19/858532/353813.terrain differ diff --git a/public/terrain/19/858532/353814.terrain b/public/terrain/19/858532/353814.terrain new file mode 100644 index 000000000..904592d05 Binary files /dev/null and b/public/terrain/19/858532/353814.terrain differ diff --git a/public/terrain/19/858532/353815.terrain b/public/terrain/19/858532/353815.terrain new file mode 100644 index 000000000..02efdfd0a Binary files /dev/null and b/public/terrain/19/858532/353815.terrain differ diff --git a/public/terrain/19/858532/353816.terrain b/public/terrain/19/858532/353816.terrain new file mode 100644 index 000000000..6260996bd Binary files /dev/null and b/public/terrain/19/858532/353816.terrain differ diff --git a/public/terrain/19/858532/353817.terrain b/public/terrain/19/858532/353817.terrain new file mode 100644 index 000000000..ea8b73b05 Binary files /dev/null and b/public/terrain/19/858532/353817.terrain differ diff --git a/public/terrain/19/858532/353818.terrain b/public/terrain/19/858532/353818.terrain new file mode 100644 index 000000000..81504c61b Binary files /dev/null and b/public/terrain/19/858532/353818.terrain differ diff --git a/public/terrain/19/858532/353819.terrain b/public/terrain/19/858532/353819.terrain new file mode 100644 index 000000000..35e2fe8bf Binary files /dev/null and b/public/terrain/19/858532/353819.terrain differ diff --git a/public/terrain/19/858532/353820.terrain b/public/terrain/19/858532/353820.terrain new file mode 100644 index 000000000..f7828ab7c Binary files /dev/null and b/public/terrain/19/858532/353820.terrain differ diff --git a/public/terrain/19/858532/353821.terrain b/public/terrain/19/858532/353821.terrain new file mode 100644 index 000000000..24b39e3e2 Binary files /dev/null and b/public/terrain/19/858532/353821.terrain differ diff --git a/public/terrain/19/858532/353822.terrain b/public/terrain/19/858532/353822.terrain new file mode 100644 index 000000000..28ff78227 Binary files /dev/null and b/public/terrain/19/858532/353822.terrain differ diff --git a/public/terrain/19/858532/353823.terrain b/public/terrain/19/858532/353823.terrain new file mode 100644 index 000000000..15c485726 Binary files /dev/null and b/public/terrain/19/858532/353823.terrain differ diff --git a/public/terrain/19/858532/353824.terrain b/public/terrain/19/858532/353824.terrain new file mode 100644 index 000000000..bba6387b0 Binary files /dev/null and b/public/terrain/19/858532/353824.terrain differ diff --git a/public/terrain/19/858532/353825.terrain b/public/terrain/19/858532/353825.terrain new file mode 100644 index 000000000..14edf73e1 Binary files /dev/null and b/public/terrain/19/858532/353825.terrain differ diff --git a/public/terrain/19/858532/353826.terrain b/public/terrain/19/858532/353826.terrain new file mode 100644 index 000000000..51405f023 Binary files /dev/null and b/public/terrain/19/858532/353826.terrain differ diff --git a/public/terrain/19/858532/353827.terrain b/public/terrain/19/858532/353827.terrain new file mode 100644 index 000000000..3bcd66fd1 Binary files /dev/null and b/public/terrain/19/858532/353827.terrain differ diff --git a/public/terrain/19/858532/353828.terrain b/public/terrain/19/858532/353828.terrain new file mode 100644 index 000000000..75105905e Binary files /dev/null and b/public/terrain/19/858532/353828.terrain differ diff --git a/public/terrain/19/858532/353829.terrain b/public/terrain/19/858532/353829.terrain new file mode 100644 index 000000000..5740ad2f3 Binary files /dev/null and b/public/terrain/19/858532/353829.terrain differ diff --git a/public/terrain/19/858532/353830.terrain b/public/terrain/19/858532/353830.terrain new file mode 100644 index 000000000..9222210e5 Binary files /dev/null and b/public/terrain/19/858532/353830.terrain differ diff --git a/public/terrain/19/858532/353831.terrain b/public/terrain/19/858532/353831.terrain new file mode 100644 index 000000000..5d4bc92f3 Binary files /dev/null and b/public/terrain/19/858532/353831.terrain differ diff --git a/public/terrain/19/858532/353832.terrain b/public/terrain/19/858532/353832.terrain new file mode 100644 index 000000000..a53a994e1 Binary files /dev/null and b/public/terrain/19/858532/353832.terrain differ diff --git a/public/terrain/19/858532/353833.terrain b/public/terrain/19/858532/353833.terrain new file mode 100644 index 000000000..142b48de2 Binary files /dev/null and b/public/terrain/19/858532/353833.terrain differ diff --git a/public/terrain/19/858532/353834.terrain b/public/terrain/19/858532/353834.terrain new file mode 100644 index 000000000..9987e1c84 Binary files /dev/null and b/public/terrain/19/858532/353834.terrain differ diff --git a/public/terrain/19/858532/353835.terrain b/public/terrain/19/858532/353835.terrain new file mode 100644 index 000000000..3876e4500 Binary files /dev/null and b/public/terrain/19/858532/353835.terrain differ diff --git a/public/terrain/19/858532/353836.terrain b/public/terrain/19/858532/353836.terrain new file mode 100644 index 000000000..02e0c1c53 Binary files /dev/null and b/public/terrain/19/858532/353836.terrain differ diff --git a/public/terrain/19/858532/353837.terrain b/public/terrain/19/858532/353837.terrain new file mode 100644 index 000000000..38f23c5d4 Binary files /dev/null and b/public/terrain/19/858532/353837.terrain differ diff --git a/public/terrain/19/858532/353838.terrain b/public/terrain/19/858532/353838.terrain new file mode 100644 index 000000000..276303268 Binary files /dev/null and b/public/terrain/19/858532/353838.terrain differ diff --git a/public/terrain/19/858532/353839.terrain b/public/terrain/19/858532/353839.terrain new file mode 100644 index 000000000..aafc57dbf Binary files /dev/null and b/public/terrain/19/858532/353839.terrain differ diff --git a/public/terrain/19/858532/353840.terrain b/public/terrain/19/858532/353840.terrain new file mode 100644 index 000000000..57273f723 Binary files /dev/null and b/public/terrain/19/858532/353840.terrain differ diff --git a/public/terrain/19/858532/353841.terrain b/public/terrain/19/858532/353841.terrain new file mode 100644 index 000000000..da0a894e8 Binary files /dev/null and b/public/terrain/19/858532/353841.terrain differ diff --git a/public/terrain/19/858532/353842.terrain b/public/terrain/19/858532/353842.terrain new file mode 100644 index 000000000..40bc9d30d Binary files /dev/null and b/public/terrain/19/858532/353842.terrain differ diff --git a/public/terrain/19/858532/353843.terrain b/public/terrain/19/858532/353843.terrain new file mode 100644 index 000000000..2986fb845 Binary files /dev/null and b/public/terrain/19/858532/353843.terrain differ diff --git a/public/terrain/19/858532/353844.terrain b/public/terrain/19/858532/353844.terrain new file mode 100644 index 000000000..626bbc10f Binary files /dev/null and b/public/terrain/19/858532/353844.terrain differ diff --git a/public/terrain/19/858532/353845.terrain b/public/terrain/19/858532/353845.terrain new file mode 100644 index 000000000..b578e43f8 Binary files /dev/null and b/public/terrain/19/858532/353845.terrain differ diff --git a/public/terrain/19/858532/353846.terrain b/public/terrain/19/858532/353846.terrain new file mode 100644 index 000000000..ce1c1f053 Binary files /dev/null and b/public/terrain/19/858532/353846.terrain differ diff --git a/public/terrain/19/858532/353847.terrain b/public/terrain/19/858532/353847.terrain new file mode 100644 index 000000000..a2adb781d Binary files /dev/null and b/public/terrain/19/858532/353847.terrain differ diff --git a/public/terrain/19/858532/353848.terrain b/public/terrain/19/858532/353848.terrain new file mode 100644 index 000000000..a20d08c23 Binary files /dev/null and b/public/terrain/19/858532/353848.terrain differ diff --git a/public/terrain/19/858532/353849.terrain b/public/terrain/19/858532/353849.terrain new file mode 100644 index 000000000..fd41b1da0 Binary files /dev/null and b/public/terrain/19/858532/353849.terrain differ diff --git a/public/terrain/19/858532/353850.terrain b/public/terrain/19/858532/353850.terrain new file mode 100644 index 000000000..d97c2c006 Binary files /dev/null and b/public/terrain/19/858532/353850.terrain differ diff --git a/public/terrain/19/858532/353851.terrain b/public/terrain/19/858532/353851.terrain new file mode 100644 index 000000000..3619ded2a Binary files /dev/null and b/public/terrain/19/858532/353851.terrain differ diff --git a/public/terrain/19/858532/353852.terrain b/public/terrain/19/858532/353852.terrain new file mode 100644 index 000000000..b89d0051b Binary files /dev/null and b/public/terrain/19/858532/353852.terrain differ diff --git a/public/terrain/19/858532/353853.terrain b/public/terrain/19/858532/353853.terrain new file mode 100644 index 000000000..b97038688 Binary files /dev/null and b/public/terrain/19/858532/353853.terrain differ diff --git a/public/terrain/19/858532/353854.terrain b/public/terrain/19/858532/353854.terrain new file mode 100644 index 000000000..06d9ab5f0 Binary files /dev/null and b/public/terrain/19/858532/353854.terrain differ diff --git a/public/terrain/19/858532/353855.terrain b/public/terrain/19/858532/353855.terrain new file mode 100644 index 000000000..28a0a582b Binary files /dev/null and b/public/terrain/19/858532/353855.terrain differ diff --git a/public/terrain/19/858532/353856.terrain b/public/terrain/19/858532/353856.terrain new file mode 100644 index 000000000..2a0b68411 Binary files /dev/null and b/public/terrain/19/858532/353856.terrain differ diff --git a/public/terrain/19/858532/353857.terrain b/public/terrain/19/858532/353857.terrain new file mode 100644 index 000000000..ba1d42046 Binary files /dev/null and b/public/terrain/19/858532/353857.terrain differ diff --git a/public/terrain/19/858532/353858.terrain b/public/terrain/19/858532/353858.terrain new file mode 100644 index 000000000..cce23300c Binary files /dev/null and b/public/terrain/19/858532/353858.terrain differ diff --git a/public/terrain/19/858532/353859.terrain b/public/terrain/19/858532/353859.terrain new file mode 100644 index 000000000..594d81723 Binary files /dev/null and b/public/terrain/19/858532/353859.terrain differ diff --git a/public/terrain/19/858532/353860.terrain b/public/terrain/19/858532/353860.terrain new file mode 100644 index 000000000..73ec86c21 Binary files /dev/null and b/public/terrain/19/858532/353860.terrain differ diff --git a/public/terrain/19/858532/353861.terrain b/public/terrain/19/858532/353861.terrain new file mode 100644 index 000000000..9b1d26c00 Binary files /dev/null and b/public/terrain/19/858532/353861.terrain differ diff --git a/public/terrain/19/858532/353862.terrain b/public/terrain/19/858532/353862.terrain new file mode 100644 index 000000000..7b732aca8 Binary files /dev/null and b/public/terrain/19/858532/353862.terrain differ diff --git a/public/terrain/19/858532/353863.terrain b/public/terrain/19/858532/353863.terrain new file mode 100644 index 000000000..24d69ba85 Binary files /dev/null and b/public/terrain/19/858532/353863.terrain differ diff --git a/public/terrain/19/858532/353864.terrain b/public/terrain/19/858532/353864.terrain new file mode 100644 index 000000000..79b1300d8 Binary files /dev/null and b/public/terrain/19/858532/353864.terrain differ diff --git a/public/terrain/19/858532/353865.terrain b/public/terrain/19/858532/353865.terrain new file mode 100644 index 000000000..f042ba52d Binary files /dev/null and b/public/terrain/19/858532/353865.terrain differ diff --git a/public/terrain/19/858532/353866.terrain b/public/terrain/19/858532/353866.terrain new file mode 100644 index 000000000..0460b6f83 Binary files /dev/null and b/public/terrain/19/858532/353866.terrain differ diff --git a/public/terrain/19/858532/353867.terrain b/public/terrain/19/858532/353867.terrain new file mode 100644 index 000000000..a3ca41a23 Binary files /dev/null and b/public/terrain/19/858532/353867.terrain differ diff --git a/public/terrain/19/858532/353868.terrain b/public/terrain/19/858532/353868.terrain new file mode 100644 index 000000000..2b5ab9902 Binary files /dev/null and b/public/terrain/19/858532/353868.terrain differ diff --git a/public/terrain/19/858532/353869.terrain b/public/terrain/19/858532/353869.terrain new file mode 100644 index 000000000..3edef5d7f Binary files /dev/null and b/public/terrain/19/858532/353869.terrain differ diff --git a/public/terrain/19/858532/353870.terrain b/public/terrain/19/858532/353870.terrain new file mode 100644 index 000000000..6768d0a7c Binary files /dev/null and b/public/terrain/19/858532/353870.terrain differ diff --git a/public/terrain/19/858532/353871.terrain b/public/terrain/19/858532/353871.terrain new file mode 100644 index 000000000..b890c22bd Binary files /dev/null and b/public/terrain/19/858532/353871.terrain differ diff --git a/public/terrain/19/858532/353872.terrain b/public/terrain/19/858532/353872.terrain new file mode 100644 index 000000000..e074a729c Binary files /dev/null and b/public/terrain/19/858532/353872.terrain differ diff --git a/public/terrain/19/858532/353873.terrain b/public/terrain/19/858532/353873.terrain new file mode 100644 index 000000000..27c1ed076 Binary files /dev/null and b/public/terrain/19/858532/353873.terrain differ diff --git a/public/terrain/19/858532/353874.terrain b/public/terrain/19/858532/353874.terrain new file mode 100644 index 000000000..494938613 Binary files /dev/null and b/public/terrain/19/858532/353874.terrain differ diff --git a/public/terrain/19/858532/353875.terrain b/public/terrain/19/858532/353875.terrain new file mode 100644 index 000000000..198bb5795 Binary files /dev/null and b/public/terrain/19/858532/353875.terrain differ diff --git a/public/terrain/19/858532/353876.terrain b/public/terrain/19/858532/353876.terrain new file mode 100644 index 000000000..5de55e81f Binary files /dev/null and b/public/terrain/19/858532/353876.terrain differ diff --git a/public/terrain/19/858532/353877.terrain b/public/terrain/19/858532/353877.terrain new file mode 100644 index 000000000..d3db70ecf Binary files /dev/null and b/public/terrain/19/858532/353877.terrain differ diff --git a/public/terrain/19/858532/353878.terrain b/public/terrain/19/858532/353878.terrain new file mode 100644 index 000000000..efeb9c7be Binary files /dev/null and b/public/terrain/19/858532/353878.terrain differ diff --git a/public/terrain/19/858532/353879.terrain b/public/terrain/19/858532/353879.terrain new file mode 100644 index 000000000..8588a9b24 Binary files /dev/null and b/public/terrain/19/858532/353879.terrain differ diff --git a/public/terrain/19/858532/353880.terrain b/public/terrain/19/858532/353880.terrain new file mode 100644 index 000000000..4120ed964 Binary files /dev/null and b/public/terrain/19/858532/353880.terrain differ diff --git a/public/terrain/19/858532/353881.terrain b/public/terrain/19/858532/353881.terrain new file mode 100644 index 000000000..d07d7775b Binary files /dev/null and b/public/terrain/19/858532/353881.terrain differ diff --git a/public/terrain/19/858532/353882.terrain b/public/terrain/19/858532/353882.terrain new file mode 100644 index 000000000..4153a77a4 Binary files /dev/null and b/public/terrain/19/858532/353882.terrain differ diff --git a/public/terrain/19/858532/353883.terrain b/public/terrain/19/858532/353883.terrain new file mode 100644 index 000000000..eb89dc131 Binary files /dev/null and b/public/terrain/19/858532/353883.terrain differ diff --git a/public/terrain/19/858532/353884.terrain b/public/terrain/19/858532/353884.terrain new file mode 100644 index 000000000..0e7ef5479 Binary files /dev/null and b/public/terrain/19/858532/353884.terrain differ diff --git a/public/terrain/19/858532/353885.terrain b/public/terrain/19/858532/353885.terrain new file mode 100644 index 000000000..9b4c87bd0 Binary files /dev/null and b/public/terrain/19/858532/353885.terrain differ diff --git a/public/terrain/19/858532/353886.terrain b/public/terrain/19/858532/353886.terrain new file mode 100644 index 000000000..ae97dbe8f Binary files /dev/null and b/public/terrain/19/858532/353886.terrain differ diff --git a/public/terrain/19/858532/353887.terrain b/public/terrain/19/858532/353887.terrain new file mode 100644 index 000000000..280ed07e0 Binary files /dev/null and b/public/terrain/19/858532/353887.terrain differ diff --git a/public/terrain/19/858532/353888.terrain b/public/terrain/19/858532/353888.terrain new file mode 100644 index 000000000..ead0ce25c Binary files /dev/null and b/public/terrain/19/858532/353888.terrain differ diff --git a/public/terrain/19/858532/353889.terrain b/public/terrain/19/858532/353889.terrain new file mode 100644 index 000000000..de136c42f Binary files /dev/null and b/public/terrain/19/858532/353889.terrain differ diff --git a/public/terrain/19/858532/353890.terrain b/public/terrain/19/858532/353890.terrain new file mode 100644 index 000000000..28d2860d8 Binary files /dev/null and b/public/terrain/19/858532/353890.terrain differ diff --git a/public/terrain/19/858532/353891.terrain b/public/terrain/19/858532/353891.terrain new file mode 100644 index 000000000..a92f7ee17 Binary files /dev/null and b/public/terrain/19/858532/353891.terrain differ diff --git a/public/terrain/19/858532/353892.terrain b/public/terrain/19/858532/353892.terrain new file mode 100644 index 000000000..3bfe22ed7 Binary files /dev/null and b/public/terrain/19/858532/353892.terrain differ diff --git a/public/terrain/19/858532/353893.terrain b/public/terrain/19/858532/353893.terrain new file mode 100644 index 000000000..a81ada479 Binary files /dev/null and b/public/terrain/19/858532/353893.terrain differ diff --git a/public/terrain/19/858532/353894.terrain b/public/terrain/19/858532/353894.terrain new file mode 100644 index 000000000..087c9ea0d Binary files /dev/null and b/public/terrain/19/858532/353894.terrain differ diff --git a/public/terrain/19/858532/353895.terrain b/public/terrain/19/858532/353895.terrain new file mode 100644 index 000000000..9f72d3c31 Binary files /dev/null and b/public/terrain/19/858532/353895.terrain differ diff --git a/public/terrain/19/858532/353896.terrain b/public/terrain/19/858532/353896.terrain new file mode 100644 index 000000000..18475aeba Binary files /dev/null and b/public/terrain/19/858532/353896.terrain differ diff --git a/public/terrain/19/858532/353897.terrain b/public/terrain/19/858532/353897.terrain new file mode 100644 index 000000000..257b61129 Binary files /dev/null and b/public/terrain/19/858532/353897.terrain differ diff --git a/public/terrain/19/858532/353898.terrain b/public/terrain/19/858532/353898.terrain new file mode 100644 index 000000000..7b9024fc5 Binary files /dev/null and b/public/terrain/19/858532/353898.terrain differ diff --git a/public/terrain/19/858532/353899.terrain b/public/terrain/19/858532/353899.terrain new file mode 100644 index 000000000..a6e13b8a9 Binary files /dev/null and b/public/terrain/19/858532/353899.terrain differ diff --git a/public/terrain/19/858532/353900.terrain b/public/terrain/19/858532/353900.terrain new file mode 100644 index 000000000..784653457 Binary files /dev/null and b/public/terrain/19/858532/353900.terrain differ diff --git a/public/terrain/19/858532/353901.terrain b/public/terrain/19/858532/353901.terrain new file mode 100644 index 000000000..1e15c8ce1 Binary files /dev/null and b/public/terrain/19/858532/353901.terrain differ diff --git a/public/terrain/19/858532/353902.terrain b/public/terrain/19/858532/353902.terrain new file mode 100644 index 000000000..55d536408 Binary files /dev/null and b/public/terrain/19/858532/353902.terrain differ diff --git a/public/terrain/19/858532/353903.terrain b/public/terrain/19/858532/353903.terrain new file mode 100644 index 000000000..79b8b9ae8 Binary files /dev/null and b/public/terrain/19/858532/353903.terrain differ diff --git a/public/terrain/19/858532/353904.terrain b/public/terrain/19/858532/353904.terrain new file mode 100644 index 000000000..032154b88 Binary files /dev/null and b/public/terrain/19/858532/353904.terrain differ diff --git a/public/terrain/19/858532/353905.terrain b/public/terrain/19/858532/353905.terrain new file mode 100644 index 000000000..0d8f97bf2 Binary files /dev/null and b/public/terrain/19/858532/353905.terrain differ diff --git a/public/terrain/19/858532/353906.terrain b/public/terrain/19/858532/353906.terrain new file mode 100644 index 000000000..3ba5ebe14 Binary files /dev/null and b/public/terrain/19/858532/353906.terrain differ diff --git a/public/terrain/19/858532/353907.terrain b/public/terrain/19/858532/353907.terrain new file mode 100644 index 000000000..505ed76ee Binary files /dev/null and b/public/terrain/19/858532/353907.terrain differ diff --git a/public/terrain/19/858532/353908.terrain b/public/terrain/19/858532/353908.terrain new file mode 100644 index 000000000..871cd9511 Binary files /dev/null and b/public/terrain/19/858532/353908.terrain differ diff --git a/public/terrain/19/858532/353909.terrain b/public/terrain/19/858532/353909.terrain new file mode 100644 index 000000000..ddfbec904 Binary files /dev/null and b/public/terrain/19/858532/353909.terrain differ diff --git a/public/terrain/19/858532/353910.terrain b/public/terrain/19/858532/353910.terrain new file mode 100644 index 000000000..e661c8b42 Binary files /dev/null and b/public/terrain/19/858532/353910.terrain differ diff --git a/public/terrain/19/858532/353911.terrain b/public/terrain/19/858532/353911.terrain new file mode 100644 index 000000000..15347c1ee Binary files /dev/null and b/public/terrain/19/858532/353911.terrain differ diff --git a/public/terrain/19/858532/353912.terrain b/public/terrain/19/858532/353912.terrain new file mode 100644 index 000000000..cc2dae96d Binary files /dev/null and b/public/terrain/19/858532/353912.terrain differ diff --git a/public/terrain/19/858532/353913.terrain b/public/terrain/19/858532/353913.terrain new file mode 100644 index 000000000..94d34ed37 Binary files /dev/null and b/public/terrain/19/858532/353913.terrain differ diff --git a/public/terrain/19/858532/353914.terrain b/public/terrain/19/858532/353914.terrain new file mode 100644 index 000000000..a0a817576 Binary files /dev/null and b/public/terrain/19/858532/353914.terrain differ diff --git a/public/terrain/19/858532/353915.terrain b/public/terrain/19/858532/353915.terrain new file mode 100644 index 000000000..a198e3ddb Binary files /dev/null and b/public/terrain/19/858532/353915.terrain differ diff --git a/public/terrain/19/858532/353916.terrain b/public/terrain/19/858532/353916.terrain new file mode 100644 index 000000000..f2b1a659d Binary files /dev/null and b/public/terrain/19/858532/353916.terrain differ diff --git a/public/terrain/19/858532/353917.terrain b/public/terrain/19/858532/353917.terrain new file mode 100644 index 000000000..e0e6b2c37 Binary files /dev/null and b/public/terrain/19/858532/353917.terrain differ diff --git a/public/terrain/19/858532/353918.terrain b/public/terrain/19/858532/353918.terrain new file mode 100644 index 000000000..1bee260eb Binary files /dev/null and b/public/terrain/19/858532/353918.terrain differ diff --git a/public/terrain/19/858532/353919.terrain b/public/terrain/19/858532/353919.terrain new file mode 100644 index 000000000..a2c90fd74 Binary files /dev/null and b/public/terrain/19/858532/353919.terrain differ diff --git a/public/terrain/19/858532/353920.terrain b/public/terrain/19/858532/353920.terrain new file mode 100644 index 000000000..636854fce Binary files /dev/null and b/public/terrain/19/858532/353920.terrain differ diff --git a/public/terrain/19/858532/353921.terrain b/public/terrain/19/858532/353921.terrain new file mode 100644 index 000000000..16fb85607 Binary files /dev/null and b/public/terrain/19/858532/353921.terrain differ diff --git a/public/terrain/19/858532/353922.terrain b/public/terrain/19/858532/353922.terrain new file mode 100644 index 000000000..c57c8c150 Binary files /dev/null and b/public/terrain/19/858532/353922.terrain differ diff --git a/public/terrain/19/858532/353923.terrain b/public/terrain/19/858532/353923.terrain new file mode 100644 index 000000000..1659dfb9f Binary files /dev/null and b/public/terrain/19/858532/353923.terrain differ diff --git a/public/terrain/19/858532/353924.terrain b/public/terrain/19/858532/353924.terrain new file mode 100644 index 000000000..6942240b5 Binary files /dev/null and b/public/terrain/19/858532/353924.terrain differ diff --git a/public/terrain/19/858532/353925.terrain b/public/terrain/19/858532/353925.terrain new file mode 100644 index 000000000..71d6497c8 Binary files /dev/null and b/public/terrain/19/858532/353925.terrain differ diff --git a/public/terrain/19/858532/353926.terrain b/public/terrain/19/858532/353926.terrain new file mode 100644 index 000000000..2ffb6440f Binary files /dev/null and b/public/terrain/19/858532/353926.terrain differ diff --git a/public/terrain/19/858532/353927.terrain b/public/terrain/19/858532/353927.terrain new file mode 100644 index 000000000..3020ad46f Binary files /dev/null and b/public/terrain/19/858532/353927.terrain differ diff --git a/public/terrain/19/858532/353928.terrain b/public/terrain/19/858532/353928.terrain new file mode 100644 index 000000000..3650239c3 Binary files /dev/null and b/public/terrain/19/858532/353928.terrain differ diff --git a/public/terrain/19/858532/353929.terrain b/public/terrain/19/858532/353929.terrain new file mode 100644 index 000000000..2622e2221 Binary files /dev/null and b/public/terrain/19/858532/353929.terrain differ diff --git a/public/terrain/19/858532/353930.terrain b/public/terrain/19/858532/353930.terrain new file mode 100644 index 000000000..a53ac3324 Binary files /dev/null and b/public/terrain/19/858532/353930.terrain differ diff --git a/public/terrain/19/858532/353931.terrain b/public/terrain/19/858532/353931.terrain new file mode 100644 index 000000000..a9257a7e9 Binary files /dev/null and b/public/terrain/19/858532/353931.terrain differ diff --git a/public/terrain/19/858532/353932.terrain b/public/terrain/19/858532/353932.terrain new file mode 100644 index 000000000..7ce5103c2 Binary files /dev/null and b/public/terrain/19/858532/353932.terrain differ diff --git a/public/terrain/19/858532/353933.terrain b/public/terrain/19/858532/353933.terrain new file mode 100644 index 000000000..70822f3cb Binary files /dev/null and b/public/terrain/19/858532/353933.terrain differ diff --git a/public/terrain/19/858532/353934.terrain b/public/terrain/19/858532/353934.terrain new file mode 100644 index 000000000..d3f13d1ee Binary files /dev/null and b/public/terrain/19/858532/353934.terrain differ diff --git a/public/terrain/19/858532/353935.terrain b/public/terrain/19/858532/353935.terrain new file mode 100644 index 000000000..a6f7bfffc Binary files /dev/null and b/public/terrain/19/858532/353935.terrain differ diff --git a/public/terrain/19/858532/353936.terrain b/public/terrain/19/858532/353936.terrain new file mode 100644 index 000000000..ea78efb40 Binary files /dev/null and b/public/terrain/19/858532/353936.terrain differ diff --git a/public/terrain/19/858532/353937.terrain b/public/terrain/19/858532/353937.terrain new file mode 100644 index 000000000..c6b975f2f Binary files /dev/null and b/public/terrain/19/858532/353937.terrain differ diff --git a/public/terrain/19/858532/353938.terrain b/public/terrain/19/858532/353938.terrain new file mode 100644 index 000000000..d46ef6a3a Binary files /dev/null and b/public/terrain/19/858532/353938.terrain differ diff --git a/public/terrain/19/858532/353939.terrain b/public/terrain/19/858532/353939.terrain new file mode 100644 index 000000000..4614ca2f4 Binary files /dev/null and b/public/terrain/19/858532/353939.terrain differ diff --git a/public/terrain/19/858532/353940.terrain b/public/terrain/19/858532/353940.terrain new file mode 100644 index 000000000..1438a61f6 Binary files /dev/null and b/public/terrain/19/858532/353940.terrain differ diff --git a/public/terrain/19/858532/353941.terrain b/public/terrain/19/858532/353941.terrain new file mode 100644 index 000000000..f9e46b13c Binary files /dev/null and b/public/terrain/19/858532/353941.terrain differ diff --git a/public/terrain/19/858532/353942.terrain b/public/terrain/19/858532/353942.terrain new file mode 100644 index 000000000..93e1a1518 Binary files /dev/null and b/public/terrain/19/858532/353942.terrain differ diff --git a/public/terrain/19/858532/353943.terrain b/public/terrain/19/858532/353943.terrain new file mode 100644 index 000000000..7c58215d3 Binary files /dev/null and b/public/terrain/19/858532/353943.terrain differ diff --git a/public/terrain/19/858532/353944.terrain b/public/terrain/19/858532/353944.terrain new file mode 100644 index 000000000..293a10980 Binary files /dev/null and b/public/terrain/19/858532/353944.terrain differ diff --git a/public/terrain/19/858532/353945.terrain b/public/terrain/19/858532/353945.terrain new file mode 100644 index 000000000..30f4bd167 Binary files /dev/null and b/public/terrain/19/858532/353945.terrain differ diff --git a/public/terrain/19/858532/353946.terrain b/public/terrain/19/858532/353946.terrain new file mode 100644 index 000000000..cfbf66abb Binary files /dev/null and b/public/terrain/19/858532/353946.terrain differ diff --git a/public/terrain/19/858532/353947.terrain b/public/terrain/19/858532/353947.terrain new file mode 100644 index 000000000..f143aa861 Binary files /dev/null and b/public/terrain/19/858532/353947.terrain differ diff --git a/public/terrain/19/858532/353948.terrain b/public/terrain/19/858532/353948.terrain new file mode 100644 index 000000000..6593ed0f9 Binary files /dev/null and b/public/terrain/19/858532/353948.terrain differ diff --git a/public/terrain/19/858532/353949.terrain b/public/terrain/19/858532/353949.terrain new file mode 100644 index 000000000..91aae2606 Binary files /dev/null and b/public/terrain/19/858532/353949.terrain differ diff --git a/public/terrain/19/858532/353950.terrain b/public/terrain/19/858532/353950.terrain new file mode 100644 index 000000000..81f8b54c0 Binary files /dev/null and b/public/terrain/19/858532/353950.terrain differ diff --git a/public/terrain/19/858532/353951.terrain b/public/terrain/19/858532/353951.terrain new file mode 100644 index 000000000..1ef42f191 Binary files /dev/null and b/public/terrain/19/858532/353951.terrain differ diff --git a/public/terrain/19/858532/353952.terrain b/public/terrain/19/858532/353952.terrain new file mode 100644 index 000000000..648576cd2 Binary files /dev/null and b/public/terrain/19/858532/353952.terrain differ diff --git a/public/terrain/19/858532/353953.terrain b/public/terrain/19/858532/353953.terrain new file mode 100644 index 000000000..8772fc7e9 Binary files /dev/null and b/public/terrain/19/858532/353953.terrain differ diff --git a/public/terrain/19/858532/353954.terrain b/public/terrain/19/858532/353954.terrain new file mode 100644 index 000000000..a41ccf04c Binary files /dev/null and b/public/terrain/19/858532/353954.terrain differ diff --git a/public/terrain/19/858532/353955.terrain b/public/terrain/19/858532/353955.terrain new file mode 100644 index 000000000..59fb75fdf Binary files /dev/null and b/public/terrain/19/858532/353955.terrain differ diff --git a/public/terrain/19/858532/353956.terrain b/public/terrain/19/858532/353956.terrain new file mode 100644 index 000000000..aef57f0c2 Binary files /dev/null and b/public/terrain/19/858532/353956.terrain differ diff --git a/public/terrain/19/858532/353957.terrain b/public/terrain/19/858532/353957.terrain new file mode 100644 index 000000000..0e24db5bf Binary files /dev/null and b/public/terrain/19/858532/353957.terrain differ diff --git a/public/terrain/19/858532/353958.terrain b/public/terrain/19/858532/353958.terrain new file mode 100644 index 000000000..9c8365e99 Binary files /dev/null and b/public/terrain/19/858532/353958.terrain differ diff --git a/public/terrain/19/858532/353959.terrain b/public/terrain/19/858532/353959.terrain new file mode 100644 index 000000000..c94a365fa Binary files /dev/null and b/public/terrain/19/858532/353959.terrain differ diff --git a/public/terrain/19/858532/353960.terrain b/public/terrain/19/858532/353960.terrain new file mode 100644 index 000000000..bfa7e984b Binary files /dev/null and b/public/terrain/19/858532/353960.terrain differ diff --git a/public/terrain/19/858532/353961.terrain b/public/terrain/19/858532/353961.terrain new file mode 100644 index 000000000..47ab328ce Binary files /dev/null and b/public/terrain/19/858532/353961.terrain differ diff --git a/public/terrain/19/858532/353962.terrain b/public/terrain/19/858532/353962.terrain new file mode 100644 index 000000000..dce3541cf Binary files /dev/null and b/public/terrain/19/858532/353962.terrain differ diff --git a/public/terrain/19/858532/353963.terrain b/public/terrain/19/858532/353963.terrain new file mode 100644 index 000000000..4a5843458 Binary files /dev/null and b/public/terrain/19/858532/353963.terrain differ diff --git a/public/terrain/19/858532/353964.terrain b/public/terrain/19/858532/353964.terrain new file mode 100644 index 000000000..638e1e424 Binary files /dev/null and b/public/terrain/19/858532/353964.terrain differ diff --git a/public/terrain/19/858532/353965.terrain b/public/terrain/19/858532/353965.terrain new file mode 100644 index 000000000..9eefcdfcd Binary files /dev/null and b/public/terrain/19/858532/353965.terrain differ diff --git a/public/terrain/19/858532/353966.terrain b/public/terrain/19/858532/353966.terrain new file mode 100644 index 000000000..2562e1616 Binary files /dev/null and b/public/terrain/19/858532/353966.terrain differ diff --git a/public/terrain/19/858532/353967.terrain b/public/terrain/19/858532/353967.terrain new file mode 100644 index 000000000..7e9704fc8 Binary files /dev/null and b/public/terrain/19/858532/353967.terrain differ diff --git a/public/terrain/19/858532/353968.terrain b/public/terrain/19/858532/353968.terrain new file mode 100644 index 000000000..fa5909285 Binary files /dev/null and b/public/terrain/19/858532/353968.terrain differ diff --git a/public/terrain/19/858532/353969.terrain b/public/terrain/19/858532/353969.terrain new file mode 100644 index 000000000..79a70a664 Binary files /dev/null and b/public/terrain/19/858532/353969.terrain differ diff --git a/public/terrain/19/858532/353970.terrain b/public/terrain/19/858532/353970.terrain new file mode 100644 index 000000000..f7f094402 Binary files /dev/null and b/public/terrain/19/858532/353970.terrain differ diff --git a/public/terrain/19/858532/353971.terrain b/public/terrain/19/858532/353971.terrain new file mode 100644 index 000000000..664bd300c Binary files /dev/null and b/public/terrain/19/858532/353971.terrain differ diff --git a/public/terrain/19/858532/353972.terrain b/public/terrain/19/858532/353972.terrain new file mode 100644 index 000000000..ab1864952 Binary files /dev/null and b/public/terrain/19/858532/353972.terrain differ diff --git a/public/terrain/19/858532/353973.terrain b/public/terrain/19/858532/353973.terrain new file mode 100644 index 000000000..448108110 Binary files /dev/null and b/public/terrain/19/858532/353973.terrain differ diff --git a/public/terrain/19/858532/353974.terrain b/public/terrain/19/858532/353974.terrain new file mode 100644 index 000000000..e6f5504b0 Binary files /dev/null and b/public/terrain/19/858532/353974.terrain differ diff --git a/public/terrain/19/858532/353975.terrain b/public/terrain/19/858532/353975.terrain new file mode 100644 index 000000000..23b49c969 Binary files /dev/null and b/public/terrain/19/858532/353975.terrain differ diff --git a/public/terrain/19/858532/353976.terrain b/public/terrain/19/858532/353976.terrain new file mode 100644 index 000000000..78fd28d97 Binary files /dev/null and b/public/terrain/19/858532/353976.terrain differ diff --git a/public/terrain/19/858532/353977.terrain b/public/terrain/19/858532/353977.terrain new file mode 100644 index 000000000..ec633de0b Binary files /dev/null and b/public/terrain/19/858532/353977.terrain differ diff --git a/public/terrain/19/858532/353978.terrain b/public/terrain/19/858532/353978.terrain new file mode 100644 index 000000000..51ef1512e Binary files /dev/null and b/public/terrain/19/858532/353978.terrain differ diff --git a/public/terrain/19/858532/353979.terrain b/public/terrain/19/858532/353979.terrain new file mode 100644 index 000000000..485f322ac Binary files /dev/null and b/public/terrain/19/858532/353979.terrain differ diff --git a/public/terrain/19/858532/353980.terrain b/public/terrain/19/858532/353980.terrain new file mode 100644 index 000000000..5141ce82f Binary files /dev/null and b/public/terrain/19/858532/353980.terrain differ diff --git a/public/terrain/19/858532/353981.terrain b/public/terrain/19/858532/353981.terrain new file mode 100644 index 000000000..d795fcf69 Binary files /dev/null and b/public/terrain/19/858532/353981.terrain differ diff --git a/public/terrain/19/858532/353982.terrain b/public/terrain/19/858532/353982.terrain new file mode 100644 index 000000000..0180acd7d Binary files /dev/null and b/public/terrain/19/858532/353982.terrain differ diff --git a/public/terrain/19/858532/353983.terrain b/public/terrain/19/858532/353983.terrain new file mode 100644 index 000000000..4956739dc Binary files /dev/null and b/public/terrain/19/858532/353983.terrain differ diff --git a/public/terrain/19/858532/353984.terrain b/public/terrain/19/858532/353984.terrain new file mode 100644 index 000000000..f52f450dd Binary files /dev/null and b/public/terrain/19/858532/353984.terrain differ diff --git a/public/terrain/19/858532/353985.terrain b/public/terrain/19/858532/353985.terrain new file mode 100644 index 000000000..92322498d Binary files /dev/null and b/public/terrain/19/858532/353985.terrain differ diff --git a/public/terrain/19/858532/353986.terrain b/public/terrain/19/858532/353986.terrain new file mode 100644 index 000000000..74dc5cb98 Binary files /dev/null and b/public/terrain/19/858532/353986.terrain differ diff --git a/public/terrain/19/858532/353987.terrain b/public/terrain/19/858532/353987.terrain new file mode 100644 index 000000000..9aafc368c Binary files /dev/null and b/public/terrain/19/858532/353987.terrain differ diff --git a/public/terrain/19/858532/353988.terrain b/public/terrain/19/858532/353988.terrain new file mode 100644 index 000000000..01a4052c0 Binary files /dev/null and b/public/terrain/19/858532/353988.terrain differ diff --git a/public/terrain/19/858532/353989.terrain b/public/terrain/19/858532/353989.terrain new file mode 100644 index 000000000..bbc6ee79a Binary files /dev/null and b/public/terrain/19/858532/353989.terrain differ diff --git a/public/terrain/19/858532/353990.terrain b/public/terrain/19/858532/353990.terrain new file mode 100644 index 000000000..e2dc87c53 Binary files /dev/null and b/public/terrain/19/858532/353990.terrain differ diff --git a/public/terrain/19/858532/353991.terrain b/public/terrain/19/858532/353991.terrain new file mode 100644 index 000000000..36c6af05f Binary files /dev/null and b/public/terrain/19/858532/353991.terrain differ diff --git a/public/terrain/19/858532/353992.terrain b/public/terrain/19/858532/353992.terrain new file mode 100644 index 000000000..f847e4c5c Binary files /dev/null and b/public/terrain/19/858532/353992.terrain differ diff --git a/public/terrain/19/858532/353993.terrain b/public/terrain/19/858532/353993.terrain new file mode 100644 index 000000000..4fb9c3ee5 Binary files /dev/null and b/public/terrain/19/858532/353993.terrain differ diff --git a/public/terrain/19/858532/353994.terrain b/public/terrain/19/858532/353994.terrain new file mode 100644 index 000000000..d965f0f66 Binary files /dev/null and b/public/terrain/19/858532/353994.terrain differ diff --git a/public/terrain/19/858532/353995.terrain b/public/terrain/19/858532/353995.terrain new file mode 100644 index 000000000..7a24f65f2 Binary files /dev/null and b/public/terrain/19/858532/353995.terrain differ diff --git a/public/terrain/19/858532/353996.terrain b/public/terrain/19/858532/353996.terrain new file mode 100644 index 000000000..1bc6ac04d Binary files /dev/null and b/public/terrain/19/858532/353996.terrain differ diff --git a/public/terrain/19/858532/353997.terrain b/public/terrain/19/858532/353997.terrain new file mode 100644 index 000000000..458ccee3b Binary files /dev/null and b/public/terrain/19/858532/353997.terrain differ diff --git a/public/terrain/19/858532/353998.terrain b/public/terrain/19/858532/353998.terrain new file mode 100644 index 000000000..21264a9d6 Binary files /dev/null and b/public/terrain/19/858532/353998.terrain differ diff --git a/public/terrain/19/858532/353999.terrain b/public/terrain/19/858532/353999.terrain new file mode 100644 index 000000000..dafb2a297 Binary files /dev/null and b/public/terrain/19/858532/353999.terrain differ diff --git a/public/terrain/19/858532/354000.terrain b/public/terrain/19/858532/354000.terrain new file mode 100644 index 000000000..ee4e7e7e0 Binary files /dev/null and b/public/terrain/19/858532/354000.terrain differ diff --git a/public/terrain/19/858532/354001.terrain b/public/terrain/19/858532/354001.terrain new file mode 100644 index 000000000..935c637a6 Binary files /dev/null and b/public/terrain/19/858532/354001.terrain differ diff --git a/public/terrain/19/858532/354002.terrain b/public/terrain/19/858532/354002.terrain new file mode 100644 index 000000000..9d8cbfa8b Binary files /dev/null and b/public/terrain/19/858532/354002.terrain differ diff --git a/public/terrain/19/858532/354003.terrain b/public/terrain/19/858532/354003.terrain new file mode 100644 index 000000000..6f4034858 Binary files /dev/null and b/public/terrain/19/858532/354003.terrain differ diff --git a/public/terrain/19/858532/354004.terrain b/public/terrain/19/858532/354004.terrain new file mode 100644 index 000000000..a159193a1 Binary files /dev/null and b/public/terrain/19/858532/354004.terrain differ diff --git a/public/terrain/19/858532/354005.terrain b/public/terrain/19/858532/354005.terrain new file mode 100644 index 000000000..a5763f8a2 Binary files /dev/null and b/public/terrain/19/858532/354005.terrain differ diff --git a/public/terrain/19/858532/354006.terrain b/public/terrain/19/858532/354006.terrain new file mode 100644 index 000000000..306ec2925 Binary files /dev/null and b/public/terrain/19/858532/354006.terrain differ diff --git a/public/terrain/19/858532/354007.terrain b/public/terrain/19/858532/354007.terrain new file mode 100644 index 000000000..6f0014f57 Binary files /dev/null and b/public/terrain/19/858532/354007.terrain differ diff --git a/public/terrain/19/858532/354008.terrain b/public/terrain/19/858532/354008.terrain new file mode 100644 index 000000000..68053ab0f Binary files /dev/null and b/public/terrain/19/858532/354008.terrain differ diff --git a/public/terrain/19/858532/354009.terrain b/public/terrain/19/858532/354009.terrain new file mode 100644 index 000000000..34a5b3554 Binary files /dev/null and b/public/terrain/19/858532/354009.terrain differ diff --git a/public/terrain/19/858532/354010.terrain b/public/terrain/19/858532/354010.terrain new file mode 100644 index 000000000..6daf5152c Binary files /dev/null and b/public/terrain/19/858532/354010.terrain differ diff --git a/public/terrain/19/858532/354011.terrain b/public/terrain/19/858532/354011.terrain new file mode 100644 index 000000000..1aa7f8310 Binary files /dev/null and b/public/terrain/19/858532/354011.terrain differ diff --git a/public/terrain/19/858532/354012.terrain b/public/terrain/19/858532/354012.terrain new file mode 100644 index 000000000..fd74ed895 Binary files /dev/null and b/public/terrain/19/858532/354012.terrain differ diff --git a/public/terrain/19/858532/354013.terrain b/public/terrain/19/858532/354013.terrain new file mode 100644 index 000000000..eadaba1a8 Binary files /dev/null and b/public/terrain/19/858532/354013.terrain differ diff --git a/public/terrain/19/858532/354014.terrain b/public/terrain/19/858532/354014.terrain new file mode 100644 index 000000000..9f3debf9e Binary files /dev/null and b/public/terrain/19/858532/354014.terrain differ diff --git a/public/terrain/19/858532/354015.terrain b/public/terrain/19/858532/354015.terrain new file mode 100644 index 000000000..d2eaa090d Binary files /dev/null and b/public/terrain/19/858532/354015.terrain differ diff --git a/public/terrain/19/858532/354016.terrain b/public/terrain/19/858532/354016.terrain new file mode 100644 index 000000000..e79a6b3b8 Binary files /dev/null and b/public/terrain/19/858532/354016.terrain differ diff --git a/public/terrain/19/858532/354017.terrain b/public/terrain/19/858532/354017.terrain new file mode 100644 index 000000000..cf2178f51 Binary files /dev/null and b/public/terrain/19/858532/354017.terrain differ diff --git a/public/terrain/19/858532/354018.terrain b/public/terrain/19/858532/354018.terrain new file mode 100644 index 000000000..84df21073 Binary files /dev/null and b/public/terrain/19/858532/354018.terrain differ diff --git a/public/terrain/19/858532/354019.terrain b/public/terrain/19/858532/354019.terrain new file mode 100644 index 000000000..5762b2c9c Binary files /dev/null and b/public/terrain/19/858532/354019.terrain differ diff --git a/public/terrain/19/858532/354020.terrain b/public/terrain/19/858532/354020.terrain new file mode 100644 index 000000000..7829737eb Binary files /dev/null and b/public/terrain/19/858532/354020.terrain differ diff --git a/public/terrain/19/858532/354021.terrain b/public/terrain/19/858532/354021.terrain new file mode 100644 index 000000000..729bbdabd Binary files /dev/null and b/public/terrain/19/858532/354021.terrain differ diff --git a/public/terrain/19/858532/354022.terrain b/public/terrain/19/858532/354022.terrain new file mode 100644 index 000000000..96e1c357e Binary files /dev/null and b/public/terrain/19/858532/354022.terrain differ diff --git a/public/terrain/19/858532/354023.terrain b/public/terrain/19/858532/354023.terrain new file mode 100644 index 000000000..1edc5b725 Binary files /dev/null and b/public/terrain/19/858532/354023.terrain differ diff --git a/public/terrain/19/858532/354024.terrain b/public/terrain/19/858532/354024.terrain new file mode 100644 index 000000000..50e1d9a71 Binary files /dev/null and b/public/terrain/19/858532/354024.terrain differ diff --git a/public/terrain/19/858532/354025.terrain b/public/terrain/19/858532/354025.terrain new file mode 100644 index 000000000..6f2a811fa Binary files /dev/null and b/public/terrain/19/858532/354025.terrain differ diff --git a/public/terrain/19/858532/354026.terrain b/public/terrain/19/858532/354026.terrain new file mode 100644 index 000000000..8e7b32911 Binary files /dev/null and b/public/terrain/19/858532/354026.terrain differ diff --git a/public/terrain/19/858532/354027.terrain b/public/terrain/19/858532/354027.terrain new file mode 100644 index 000000000..e8da40ca5 Binary files /dev/null and b/public/terrain/19/858532/354027.terrain differ diff --git a/public/terrain/19/858532/354028.terrain b/public/terrain/19/858532/354028.terrain new file mode 100644 index 000000000..4a797a189 Binary files /dev/null and b/public/terrain/19/858532/354028.terrain differ diff --git a/public/terrain/19/858532/354029.terrain b/public/terrain/19/858532/354029.terrain new file mode 100644 index 000000000..64e9c5ec2 Binary files /dev/null and b/public/terrain/19/858532/354029.terrain differ diff --git a/public/terrain/19/858532/354030.terrain b/public/terrain/19/858532/354030.terrain new file mode 100644 index 000000000..1c5a97925 Binary files /dev/null and b/public/terrain/19/858532/354030.terrain differ diff --git a/public/terrain/19/858532/354031.terrain b/public/terrain/19/858532/354031.terrain new file mode 100644 index 000000000..2331e778e Binary files /dev/null and b/public/terrain/19/858532/354031.terrain differ diff --git a/public/terrain/19/858532/354032.terrain b/public/terrain/19/858532/354032.terrain new file mode 100644 index 000000000..1a17ab3d6 Binary files /dev/null and b/public/terrain/19/858532/354032.terrain differ diff --git a/public/terrain/19/858532/354033.terrain b/public/terrain/19/858532/354033.terrain new file mode 100644 index 000000000..944a1c891 Binary files /dev/null and b/public/terrain/19/858532/354033.terrain differ diff --git a/public/terrain/19/858532/354034.terrain b/public/terrain/19/858532/354034.terrain new file mode 100644 index 000000000..ab3ab8a49 Binary files /dev/null and b/public/terrain/19/858532/354034.terrain differ diff --git a/public/terrain/19/858532/354035.terrain b/public/terrain/19/858532/354035.terrain new file mode 100644 index 000000000..b1a7f60c2 Binary files /dev/null and b/public/terrain/19/858532/354035.terrain differ diff --git a/public/terrain/19/858532/354036.terrain b/public/terrain/19/858532/354036.terrain new file mode 100644 index 000000000..43ec9904c Binary files /dev/null and b/public/terrain/19/858532/354036.terrain differ diff --git a/public/terrain/19/858532/354037.terrain b/public/terrain/19/858532/354037.terrain new file mode 100644 index 000000000..0caf8dfc8 Binary files /dev/null and b/public/terrain/19/858532/354037.terrain differ diff --git a/public/terrain/19/858532/354038.terrain b/public/terrain/19/858532/354038.terrain new file mode 100644 index 000000000..0b9b014de Binary files /dev/null and b/public/terrain/19/858532/354038.terrain differ diff --git a/public/terrain/19/858532/354039.terrain b/public/terrain/19/858532/354039.terrain new file mode 100644 index 000000000..782bb9bed Binary files /dev/null and b/public/terrain/19/858532/354039.terrain differ diff --git a/public/terrain/19/858532/354040.terrain b/public/terrain/19/858532/354040.terrain new file mode 100644 index 000000000..0210d53a2 Binary files /dev/null and b/public/terrain/19/858532/354040.terrain differ diff --git a/public/terrain/19/858532/354041.terrain b/public/terrain/19/858532/354041.terrain new file mode 100644 index 000000000..0fdf29910 Binary files /dev/null and b/public/terrain/19/858532/354041.terrain differ diff --git a/public/terrain/19/858532/354042.terrain b/public/terrain/19/858532/354042.terrain new file mode 100644 index 000000000..6bfa285d8 Binary files /dev/null and b/public/terrain/19/858532/354042.terrain differ diff --git a/public/terrain/19/858532/354043.terrain b/public/terrain/19/858532/354043.terrain new file mode 100644 index 000000000..96394ed66 Binary files /dev/null and b/public/terrain/19/858532/354043.terrain differ diff --git a/public/terrain/19/858532/354044.terrain b/public/terrain/19/858532/354044.terrain new file mode 100644 index 000000000..547eed48c Binary files /dev/null and b/public/terrain/19/858532/354044.terrain differ diff --git a/public/terrain/19/858532/354045.terrain b/public/terrain/19/858532/354045.terrain new file mode 100644 index 000000000..1ad0c0cef Binary files /dev/null and b/public/terrain/19/858532/354045.terrain differ diff --git a/public/terrain/19/858532/354046.terrain b/public/terrain/19/858532/354046.terrain new file mode 100644 index 000000000..1e850a1af Binary files /dev/null and b/public/terrain/19/858532/354046.terrain differ diff --git a/public/terrain/19/858532/354047.terrain b/public/terrain/19/858532/354047.terrain new file mode 100644 index 000000000..3ccf057b6 Binary files /dev/null and b/public/terrain/19/858532/354047.terrain differ diff --git a/public/terrain/19/858532/354048.terrain b/public/terrain/19/858532/354048.terrain new file mode 100644 index 000000000..472161a27 Binary files /dev/null and b/public/terrain/19/858532/354048.terrain differ diff --git a/public/terrain/19/858532/354049.terrain b/public/terrain/19/858532/354049.terrain new file mode 100644 index 000000000..aec2e2420 Binary files /dev/null and b/public/terrain/19/858532/354049.terrain differ diff --git a/public/terrain/19/858532/354050.terrain b/public/terrain/19/858532/354050.terrain new file mode 100644 index 000000000..89c92b82c Binary files /dev/null and b/public/terrain/19/858532/354050.terrain differ diff --git a/public/terrain/19/858532/354051.terrain b/public/terrain/19/858532/354051.terrain new file mode 100644 index 000000000..c5a42c030 Binary files /dev/null and b/public/terrain/19/858532/354051.terrain differ diff --git a/public/terrain/19/858532/354052.terrain b/public/terrain/19/858532/354052.terrain new file mode 100644 index 000000000..8d1322026 Binary files /dev/null and b/public/terrain/19/858532/354052.terrain differ diff --git a/public/terrain/19/858532/354053.terrain b/public/terrain/19/858532/354053.terrain new file mode 100644 index 000000000..8a2e3685a Binary files /dev/null and b/public/terrain/19/858532/354053.terrain differ diff --git a/public/terrain/19/858532/354054.terrain b/public/terrain/19/858532/354054.terrain new file mode 100644 index 000000000..b7b45b55f Binary files /dev/null and b/public/terrain/19/858532/354054.terrain differ diff --git a/public/terrain/19/858532/354055.terrain b/public/terrain/19/858532/354055.terrain new file mode 100644 index 000000000..0ddbb82dc Binary files /dev/null and b/public/terrain/19/858532/354055.terrain differ diff --git a/public/terrain/19/858532/354056.terrain b/public/terrain/19/858532/354056.terrain new file mode 100644 index 000000000..07365f9ca Binary files /dev/null and b/public/terrain/19/858532/354056.terrain differ diff --git a/public/terrain/19/858532/354057.terrain b/public/terrain/19/858532/354057.terrain new file mode 100644 index 000000000..f73e8e751 Binary files /dev/null and b/public/terrain/19/858532/354057.terrain differ diff --git a/public/terrain/19/858532/354058.terrain b/public/terrain/19/858532/354058.terrain new file mode 100644 index 000000000..7f89b8124 Binary files /dev/null and b/public/terrain/19/858532/354058.terrain differ diff --git a/public/terrain/19/858532/354059.terrain b/public/terrain/19/858532/354059.terrain new file mode 100644 index 000000000..155ab9c6a Binary files /dev/null and b/public/terrain/19/858532/354059.terrain differ diff --git a/public/terrain/19/858533/353743.terrain b/public/terrain/19/858533/353743.terrain new file mode 100644 index 000000000..24a082951 Binary files /dev/null and b/public/terrain/19/858533/353743.terrain differ diff --git a/public/terrain/19/858533/353744.terrain b/public/terrain/19/858533/353744.terrain new file mode 100644 index 000000000..141035d41 Binary files /dev/null and b/public/terrain/19/858533/353744.terrain differ diff --git a/public/terrain/19/858533/353745.terrain b/public/terrain/19/858533/353745.terrain new file mode 100644 index 000000000..bcf5944fd Binary files /dev/null and b/public/terrain/19/858533/353745.terrain differ diff --git a/public/terrain/19/858533/353746.terrain b/public/terrain/19/858533/353746.terrain new file mode 100644 index 000000000..a7fe1df6f Binary files /dev/null and b/public/terrain/19/858533/353746.terrain differ diff --git a/public/terrain/19/858533/353747.terrain b/public/terrain/19/858533/353747.terrain new file mode 100644 index 000000000..a5dad77b0 Binary files /dev/null and b/public/terrain/19/858533/353747.terrain differ diff --git a/public/terrain/19/858533/353748.terrain b/public/terrain/19/858533/353748.terrain new file mode 100644 index 000000000..50bafc90a Binary files /dev/null and b/public/terrain/19/858533/353748.terrain differ diff --git a/public/terrain/19/858533/353749.terrain b/public/terrain/19/858533/353749.terrain new file mode 100644 index 000000000..f3d26a2e1 Binary files /dev/null and b/public/terrain/19/858533/353749.terrain differ diff --git a/public/terrain/19/858533/353750.terrain b/public/terrain/19/858533/353750.terrain new file mode 100644 index 000000000..a84f6c45c Binary files /dev/null and b/public/terrain/19/858533/353750.terrain differ diff --git a/public/terrain/19/858533/353751.terrain b/public/terrain/19/858533/353751.terrain new file mode 100644 index 000000000..a605f553a Binary files /dev/null and b/public/terrain/19/858533/353751.terrain differ diff --git a/public/terrain/19/858533/353752.terrain b/public/terrain/19/858533/353752.terrain new file mode 100644 index 000000000..28a06720c Binary files /dev/null and b/public/terrain/19/858533/353752.terrain differ diff --git a/public/terrain/19/858533/353753.terrain b/public/terrain/19/858533/353753.terrain new file mode 100644 index 000000000..e3c4c8ed2 Binary files /dev/null and b/public/terrain/19/858533/353753.terrain differ diff --git a/public/terrain/19/858533/353754.terrain b/public/terrain/19/858533/353754.terrain new file mode 100644 index 000000000..5c1dc801f Binary files /dev/null and b/public/terrain/19/858533/353754.terrain differ diff --git a/public/terrain/19/858533/353755.terrain b/public/terrain/19/858533/353755.terrain new file mode 100644 index 000000000..96924ca04 Binary files /dev/null and b/public/terrain/19/858533/353755.terrain differ diff --git a/public/terrain/19/858533/353756.terrain b/public/terrain/19/858533/353756.terrain new file mode 100644 index 000000000..13e183a89 Binary files /dev/null and b/public/terrain/19/858533/353756.terrain differ diff --git a/public/terrain/19/858533/353757.terrain b/public/terrain/19/858533/353757.terrain new file mode 100644 index 000000000..95db1f66b Binary files /dev/null and b/public/terrain/19/858533/353757.terrain differ diff --git a/public/terrain/19/858533/353758.terrain b/public/terrain/19/858533/353758.terrain new file mode 100644 index 000000000..406f6ca0f Binary files /dev/null and b/public/terrain/19/858533/353758.terrain differ diff --git a/public/terrain/19/858533/353759.terrain b/public/terrain/19/858533/353759.terrain new file mode 100644 index 000000000..5d6a09127 Binary files /dev/null and b/public/terrain/19/858533/353759.terrain differ diff --git a/public/terrain/19/858533/353760.terrain b/public/terrain/19/858533/353760.terrain new file mode 100644 index 000000000..ffe164b55 Binary files /dev/null and b/public/terrain/19/858533/353760.terrain differ diff --git a/public/terrain/19/858533/353761.terrain b/public/terrain/19/858533/353761.terrain new file mode 100644 index 000000000..dd1135af2 Binary files /dev/null and b/public/terrain/19/858533/353761.terrain differ diff --git a/public/terrain/19/858533/353762.terrain b/public/terrain/19/858533/353762.terrain new file mode 100644 index 000000000..0b36dfaa1 Binary files /dev/null and b/public/terrain/19/858533/353762.terrain differ diff --git a/public/terrain/19/858533/353763.terrain b/public/terrain/19/858533/353763.terrain new file mode 100644 index 000000000..483be2669 Binary files /dev/null and b/public/terrain/19/858533/353763.terrain differ diff --git a/public/terrain/19/858533/353764.terrain b/public/terrain/19/858533/353764.terrain new file mode 100644 index 000000000..22036179b Binary files /dev/null and b/public/terrain/19/858533/353764.terrain differ diff --git a/public/terrain/19/858533/353765.terrain b/public/terrain/19/858533/353765.terrain new file mode 100644 index 000000000..ad8dc09c8 Binary files /dev/null and b/public/terrain/19/858533/353765.terrain differ diff --git a/public/terrain/19/858533/353766.terrain b/public/terrain/19/858533/353766.terrain new file mode 100644 index 000000000..73028236b Binary files /dev/null and b/public/terrain/19/858533/353766.terrain differ diff --git a/public/terrain/19/858533/353767.terrain b/public/terrain/19/858533/353767.terrain new file mode 100644 index 000000000..58b3d3032 Binary files /dev/null and b/public/terrain/19/858533/353767.terrain differ diff --git a/public/terrain/19/858533/353768.terrain b/public/terrain/19/858533/353768.terrain new file mode 100644 index 000000000..840139da6 Binary files /dev/null and b/public/terrain/19/858533/353768.terrain differ diff --git a/public/terrain/19/858533/353769.terrain b/public/terrain/19/858533/353769.terrain new file mode 100644 index 000000000..d37ad1980 Binary files /dev/null and b/public/terrain/19/858533/353769.terrain differ diff --git a/public/terrain/19/858533/353770.terrain b/public/terrain/19/858533/353770.terrain new file mode 100644 index 000000000..5a21dcf0d Binary files /dev/null and b/public/terrain/19/858533/353770.terrain differ diff --git a/public/terrain/19/858533/353771.terrain b/public/terrain/19/858533/353771.terrain new file mode 100644 index 000000000..ec997dd1d Binary files /dev/null and b/public/terrain/19/858533/353771.terrain differ diff --git a/public/terrain/19/858533/353772.terrain b/public/terrain/19/858533/353772.terrain new file mode 100644 index 000000000..5198bd69a Binary files /dev/null and b/public/terrain/19/858533/353772.terrain differ diff --git a/public/terrain/19/858533/353773.terrain b/public/terrain/19/858533/353773.terrain new file mode 100644 index 000000000..fd39d5cbb Binary files /dev/null and b/public/terrain/19/858533/353773.terrain differ diff --git a/public/terrain/19/858533/353774.terrain b/public/terrain/19/858533/353774.terrain new file mode 100644 index 000000000..09c6a5917 Binary files /dev/null and b/public/terrain/19/858533/353774.terrain differ diff --git a/public/terrain/19/858533/353775.terrain b/public/terrain/19/858533/353775.terrain new file mode 100644 index 000000000..d6bca7ed3 Binary files /dev/null and b/public/terrain/19/858533/353775.terrain differ diff --git a/public/terrain/19/858533/353776.terrain b/public/terrain/19/858533/353776.terrain new file mode 100644 index 000000000..b61795e74 Binary files /dev/null and b/public/terrain/19/858533/353776.terrain differ diff --git a/public/terrain/19/858533/353777.terrain b/public/terrain/19/858533/353777.terrain new file mode 100644 index 000000000..6c8909a5c Binary files /dev/null and b/public/terrain/19/858533/353777.terrain differ diff --git a/public/terrain/19/858533/353778.terrain b/public/terrain/19/858533/353778.terrain new file mode 100644 index 000000000..91a859279 Binary files /dev/null and b/public/terrain/19/858533/353778.terrain differ diff --git a/public/terrain/19/858533/353779.terrain b/public/terrain/19/858533/353779.terrain new file mode 100644 index 000000000..b13e05cf0 Binary files /dev/null and b/public/terrain/19/858533/353779.terrain differ diff --git a/public/terrain/19/858533/353780.terrain b/public/terrain/19/858533/353780.terrain new file mode 100644 index 000000000..965b075a5 Binary files /dev/null and b/public/terrain/19/858533/353780.terrain differ diff --git a/public/terrain/19/858533/353781.terrain b/public/terrain/19/858533/353781.terrain new file mode 100644 index 000000000..6f36ed97b Binary files /dev/null and b/public/terrain/19/858533/353781.terrain differ diff --git a/public/terrain/19/858533/353782.terrain b/public/terrain/19/858533/353782.terrain new file mode 100644 index 000000000..22cb40314 Binary files /dev/null and b/public/terrain/19/858533/353782.terrain differ diff --git a/public/terrain/19/858533/353783.terrain b/public/terrain/19/858533/353783.terrain new file mode 100644 index 000000000..a6783c70c Binary files /dev/null and b/public/terrain/19/858533/353783.terrain differ diff --git a/public/terrain/19/858533/353784.terrain b/public/terrain/19/858533/353784.terrain new file mode 100644 index 000000000..c3ce1f630 Binary files /dev/null and b/public/terrain/19/858533/353784.terrain differ diff --git a/public/terrain/19/858533/353785.terrain b/public/terrain/19/858533/353785.terrain new file mode 100644 index 000000000..af365393f Binary files /dev/null and b/public/terrain/19/858533/353785.terrain differ diff --git a/public/terrain/19/858533/353786.terrain b/public/terrain/19/858533/353786.terrain new file mode 100644 index 000000000..a16fb52d7 Binary files /dev/null and b/public/terrain/19/858533/353786.terrain differ diff --git a/public/terrain/19/858533/353787.terrain b/public/terrain/19/858533/353787.terrain new file mode 100644 index 000000000..84eeb2f3c Binary files /dev/null and b/public/terrain/19/858533/353787.terrain differ diff --git a/public/terrain/19/858533/353788.terrain b/public/terrain/19/858533/353788.terrain new file mode 100644 index 000000000..b8c354e6a Binary files /dev/null and b/public/terrain/19/858533/353788.terrain differ diff --git a/public/terrain/19/858533/353789.terrain b/public/terrain/19/858533/353789.terrain new file mode 100644 index 000000000..a1d96767c Binary files /dev/null and b/public/terrain/19/858533/353789.terrain differ diff --git a/public/terrain/19/858533/353790.terrain b/public/terrain/19/858533/353790.terrain new file mode 100644 index 000000000..ef59d44bc Binary files /dev/null and b/public/terrain/19/858533/353790.terrain differ diff --git a/public/terrain/19/858533/353791.terrain b/public/terrain/19/858533/353791.terrain new file mode 100644 index 000000000..a60a10961 Binary files /dev/null and b/public/terrain/19/858533/353791.terrain differ diff --git a/public/terrain/19/858533/353792.terrain b/public/terrain/19/858533/353792.terrain new file mode 100644 index 000000000..24a3e3b44 Binary files /dev/null and b/public/terrain/19/858533/353792.terrain differ diff --git a/public/terrain/19/858533/353793.terrain b/public/terrain/19/858533/353793.terrain new file mode 100644 index 000000000..fee90c3f8 Binary files /dev/null and b/public/terrain/19/858533/353793.terrain differ diff --git a/public/terrain/19/858533/353794.terrain b/public/terrain/19/858533/353794.terrain new file mode 100644 index 000000000..e2987f905 Binary files /dev/null and b/public/terrain/19/858533/353794.terrain differ diff --git a/public/terrain/19/858533/353795.terrain b/public/terrain/19/858533/353795.terrain new file mode 100644 index 000000000..1d17d7a02 Binary files /dev/null and b/public/terrain/19/858533/353795.terrain differ diff --git a/public/terrain/19/858533/353796.terrain b/public/terrain/19/858533/353796.terrain new file mode 100644 index 000000000..e1534a8c1 Binary files /dev/null and b/public/terrain/19/858533/353796.terrain differ diff --git a/public/terrain/19/858533/353797.terrain b/public/terrain/19/858533/353797.terrain new file mode 100644 index 000000000..0f794d3f6 Binary files /dev/null and b/public/terrain/19/858533/353797.terrain differ diff --git a/public/terrain/19/858533/353798.terrain b/public/terrain/19/858533/353798.terrain new file mode 100644 index 000000000..77f0fbbca Binary files /dev/null and b/public/terrain/19/858533/353798.terrain differ diff --git a/public/terrain/19/858533/353799.terrain b/public/terrain/19/858533/353799.terrain new file mode 100644 index 000000000..b55e5123c Binary files /dev/null and b/public/terrain/19/858533/353799.terrain differ diff --git a/public/terrain/19/858533/353800.terrain b/public/terrain/19/858533/353800.terrain new file mode 100644 index 000000000..7b025df7e Binary files /dev/null and b/public/terrain/19/858533/353800.terrain differ diff --git a/public/terrain/19/858533/353801.terrain b/public/terrain/19/858533/353801.terrain new file mode 100644 index 000000000..f2e0d0b5f Binary files /dev/null and b/public/terrain/19/858533/353801.terrain differ diff --git a/public/terrain/19/858533/353802.terrain b/public/terrain/19/858533/353802.terrain new file mode 100644 index 000000000..61bd51922 Binary files /dev/null and b/public/terrain/19/858533/353802.terrain differ diff --git a/public/terrain/19/858533/353803.terrain b/public/terrain/19/858533/353803.terrain new file mode 100644 index 000000000..647db3001 Binary files /dev/null and b/public/terrain/19/858533/353803.terrain differ diff --git a/public/terrain/19/858533/353804.terrain b/public/terrain/19/858533/353804.terrain new file mode 100644 index 000000000..3c79e45f7 Binary files /dev/null and b/public/terrain/19/858533/353804.terrain differ diff --git a/public/terrain/19/858533/353805.terrain b/public/terrain/19/858533/353805.terrain new file mode 100644 index 000000000..ebb5d2fd9 Binary files /dev/null and b/public/terrain/19/858533/353805.terrain differ diff --git a/public/terrain/19/858533/353806.terrain b/public/terrain/19/858533/353806.terrain new file mode 100644 index 000000000..e178fed46 Binary files /dev/null and b/public/terrain/19/858533/353806.terrain differ diff --git a/public/terrain/19/858533/353807.terrain b/public/terrain/19/858533/353807.terrain new file mode 100644 index 000000000..22aaec57f Binary files /dev/null and b/public/terrain/19/858533/353807.terrain differ diff --git a/public/terrain/19/858533/353808.terrain b/public/terrain/19/858533/353808.terrain new file mode 100644 index 000000000..4fe55cd02 Binary files /dev/null and b/public/terrain/19/858533/353808.terrain differ diff --git a/public/terrain/19/858533/353809.terrain b/public/terrain/19/858533/353809.terrain new file mode 100644 index 000000000..6d972a367 Binary files /dev/null and b/public/terrain/19/858533/353809.terrain differ diff --git a/public/terrain/19/858533/353810.terrain b/public/terrain/19/858533/353810.terrain new file mode 100644 index 000000000..6760bea1f Binary files /dev/null and b/public/terrain/19/858533/353810.terrain differ diff --git a/public/terrain/19/858533/353811.terrain b/public/terrain/19/858533/353811.terrain new file mode 100644 index 000000000..5895b5673 Binary files /dev/null and b/public/terrain/19/858533/353811.terrain differ diff --git a/public/terrain/19/858533/353812.terrain b/public/terrain/19/858533/353812.terrain new file mode 100644 index 000000000..5a7b426e1 Binary files /dev/null and b/public/terrain/19/858533/353812.terrain differ diff --git a/public/terrain/19/858533/353813.terrain b/public/terrain/19/858533/353813.terrain new file mode 100644 index 000000000..5f08ed224 Binary files /dev/null and b/public/terrain/19/858533/353813.terrain differ diff --git a/public/terrain/19/858533/353814.terrain b/public/terrain/19/858533/353814.terrain new file mode 100644 index 000000000..f45e961ad Binary files /dev/null and b/public/terrain/19/858533/353814.terrain differ diff --git a/public/terrain/19/858533/353815.terrain b/public/terrain/19/858533/353815.terrain new file mode 100644 index 000000000..bb75f831a Binary files /dev/null and b/public/terrain/19/858533/353815.terrain differ diff --git a/public/terrain/19/858533/353816.terrain b/public/terrain/19/858533/353816.terrain new file mode 100644 index 000000000..d2d7d1bf4 Binary files /dev/null and b/public/terrain/19/858533/353816.terrain differ diff --git a/public/terrain/19/858533/353817.terrain b/public/terrain/19/858533/353817.terrain new file mode 100644 index 000000000..c03031115 Binary files /dev/null and b/public/terrain/19/858533/353817.terrain differ diff --git a/public/terrain/19/858533/353818.terrain b/public/terrain/19/858533/353818.terrain new file mode 100644 index 000000000..77929fb1b Binary files /dev/null and b/public/terrain/19/858533/353818.terrain differ diff --git a/public/terrain/19/858533/353819.terrain b/public/terrain/19/858533/353819.terrain new file mode 100644 index 000000000..52876637d Binary files /dev/null and b/public/terrain/19/858533/353819.terrain differ diff --git a/public/terrain/19/858533/353820.terrain b/public/terrain/19/858533/353820.terrain new file mode 100644 index 000000000..f76c9b757 Binary files /dev/null and b/public/terrain/19/858533/353820.terrain differ diff --git a/public/terrain/19/858533/353821.terrain b/public/terrain/19/858533/353821.terrain new file mode 100644 index 000000000..964923b8b Binary files /dev/null and b/public/terrain/19/858533/353821.terrain differ diff --git a/public/terrain/19/858533/353822.terrain b/public/terrain/19/858533/353822.terrain new file mode 100644 index 000000000..02f97bcc8 Binary files /dev/null and b/public/terrain/19/858533/353822.terrain differ diff --git a/public/terrain/19/858533/353823.terrain b/public/terrain/19/858533/353823.terrain new file mode 100644 index 000000000..4ce969b86 Binary files /dev/null and b/public/terrain/19/858533/353823.terrain differ diff --git a/public/terrain/19/858533/353824.terrain b/public/terrain/19/858533/353824.terrain new file mode 100644 index 000000000..2e0085ad1 Binary files /dev/null and b/public/terrain/19/858533/353824.terrain differ diff --git a/public/terrain/19/858533/353825.terrain b/public/terrain/19/858533/353825.terrain new file mode 100644 index 000000000..ed0ffd7de Binary files /dev/null and b/public/terrain/19/858533/353825.terrain differ diff --git a/public/terrain/19/858533/353826.terrain b/public/terrain/19/858533/353826.terrain new file mode 100644 index 000000000..b6d599a43 Binary files /dev/null and b/public/terrain/19/858533/353826.terrain differ diff --git a/public/terrain/19/858533/353827.terrain b/public/terrain/19/858533/353827.terrain new file mode 100644 index 000000000..b24dd2d75 Binary files /dev/null and b/public/terrain/19/858533/353827.terrain differ diff --git a/public/terrain/19/858533/353828.terrain b/public/terrain/19/858533/353828.terrain new file mode 100644 index 000000000..eb1951b22 Binary files /dev/null and b/public/terrain/19/858533/353828.terrain differ diff --git a/public/terrain/19/858533/353829.terrain b/public/terrain/19/858533/353829.terrain new file mode 100644 index 000000000..a06154241 Binary files /dev/null and b/public/terrain/19/858533/353829.terrain differ diff --git a/public/terrain/19/858533/353830.terrain b/public/terrain/19/858533/353830.terrain new file mode 100644 index 000000000..79e414df5 Binary files /dev/null and b/public/terrain/19/858533/353830.terrain differ diff --git a/public/terrain/19/858533/353831.terrain b/public/terrain/19/858533/353831.terrain new file mode 100644 index 000000000..4deae2b24 Binary files /dev/null and b/public/terrain/19/858533/353831.terrain differ diff --git a/public/terrain/19/858533/353832.terrain b/public/terrain/19/858533/353832.terrain new file mode 100644 index 000000000..d5f544dcd Binary files /dev/null and b/public/terrain/19/858533/353832.terrain differ diff --git a/public/terrain/19/858533/353833.terrain b/public/terrain/19/858533/353833.terrain new file mode 100644 index 000000000..daa0725a5 Binary files /dev/null and b/public/terrain/19/858533/353833.terrain differ diff --git a/public/terrain/19/858533/353834.terrain b/public/terrain/19/858533/353834.terrain new file mode 100644 index 000000000..4ff194d12 Binary files /dev/null and b/public/terrain/19/858533/353834.terrain differ diff --git a/public/terrain/19/858533/353835.terrain b/public/terrain/19/858533/353835.terrain new file mode 100644 index 000000000..132c7cb0f Binary files /dev/null and b/public/terrain/19/858533/353835.terrain differ diff --git a/public/terrain/19/858533/353836.terrain b/public/terrain/19/858533/353836.terrain new file mode 100644 index 000000000..a97c762fd Binary files /dev/null and b/public/terrain/19/858533/353836.terrain differ diff --git a/public/terrain/19/858533/353837.terrain b/public/terrain/19/858533/353837.terrain new file mode 100644 index 000000000..6ae8de356 Binary files /dev/null and b/public/terrain/19/858533/353837.terrain differ diff --git a/public/terrain/19/858533/353838.terrain b/public/terrain/19/858533/353838.terrain new file mode 100644 index 000000000..50556c9b9 Binary files /dev/null and b/public/terrain/19/858533/353838.terrain differ diff --git a/public/terrain/19/858533/353839.terrain b/public/terrain/19/858533/353839.terrain new file mode 100644 index 000000000..b63449743 Binary files /dev/null and b/public/terrain/19/858533/353839.terrain differ diff --git a/public/terrain/19/858533/353840.terrain b/public/terrain/19/858533/353840.terrain new file mode 100644 index 000000000..8d02be1c2 Binary files /dev/null and b/public/terrain/19/858533/353840.terrain differ diff --git a/public/terrain/19/858533/353841.terrain b/public/terrain/19/858533/353841.terrain new file mode 100644 index 000000000..6a4e35178 Binary files /dev/null and b/public/terrain/19/858533/353841.terrain differ diff --git a/public/terrain/19/858533/353842.terrain b/public/terrain/19/858533/353842.terrain new file mode 100644 index 000000000..4532092a3 Binary files /dev/null and b/public/terrain/19/858533/353842.terrain differ diff --git a/public/terrain/19/858533/353843.terrain b/public/terrain/19/858533/353843.terrain new file mode 100644 index 000000000..66678d0dc Binary files /dev/null and b/public/terrain/19/858533/353843.terrain differ diff --git a/public/terrain/19/858533/353844.terrain b/public/terrain/19/858533/353844.terrain new file mode 100644 index 000000000..d887181af Binary files /dev/null and b/public/terrain/19/858533/353844.terrain differ diff --git a/public/terrain/19/858533/353845.terrain b/public/terrain/19/858533/353845.terrain new file mode 100644 index 000000000..3d8f2eb61 Binary files /dev/null and b/public/terrain/19/858533/353845.terrain differ diff --git a/public/terrain/19/858533/353846.terrain b/public/terrain/19/858533/353846.terrain new file mode 100644 index 000000000..3f9a68a86 Binary files /dev/null and b/public/terrain/19/858533/353846.terrain differ diff --git a/public/terrain/19/858533/353847.terrain b/public/terrain/19/858533/353847.terrain new file mode 100644 index 000000000..3ebb74b6a Binary files /dev/null and b/public/terrain/19/858533/353847.terrain differ diff --git a/public/terrain/19/858533/353848.terrain b/public/terrain/19/858533/353848.terrain new file mode 100644 index 000000000..db2e6ebfb Binary files /dev/null and b/public/terrain/19/858533/353848.terrain differ diff --git a/public/terrain/19/858533/353849.terrain b/public/terrain/19/858533/353849.terrain new file mode 100644 index 000000000..fb4bed42c Binary files /dev/null and b/public/terrain/19/858533/353849.terrain differ diff --git a/public/terrain/19/858533/353850.terrain b/public/terrain/19/858533/353850.terrain new file mode 100644 index 000000000..7c3b9a88f Binary files /dev/null and b/public/terrain/19/858533/353850.terrain differ diff --git a/public/terrain/19/858533/353851.terrain b/public/terrain/19/858533/353851.terrain new file mode 100644 index 000000000..2da471c37 Binary files /dev/null and b/public/terrain/19/858533/353851.terrain differ diff --git a/public/terrain/19/858533/353852.terrain b/public/terrain/19/858533/353852.terrain new file mode 100644 index 000000000..a456b11d7 Binary files /dev/null and b/public/terrain/19/858533/353852.terrain differ diff --git a/public/terrain/19/858533/353853.terrain b/public/terrain/19/858533/353853.terrain new file mode 100644 index 000000000..25dd2e442 Binary files /dev/null and b/public/terrain/19/858533/353853.terrain differ diff --git a/public/terrain/19/858533/353854.terrain b/public/terrain/19/858533/353854.terrain new file mode 100644 index 000000000..99a00316f Binary files /dev/null and b/public/terrain/19/858533/353854.terrain differ diff --git a/public/terrain/19/858533/353855.terrain b/public/terrain/19/858533/353855.terrain new file mode 100644 index 000000000..1affd04e4 Binary files /dev/null and b/public/terrain/19/858533/353855.terrain differ diff --git a/public/terrain/19/858533/353856.terrain b/public/terrain/19/858533/353856.terrain new file mode 100644 index 000000000..96047630f Binary files /dev/null and b/public/terrain/19/858533/353856.terrain differ diff --git a/public/terrain/19/858533/353857.terrain b/public/terrain/19/858533/353857.terrain new file mode 100644 index 000000000..eda701d69 Binary files /dev/null and b/public/terrain/19/858533/353857.terrain differ diff --git a/public/terrain/19/858533/353858.terrain b/public/terrain/19/858533/353858.terrain new file mode 100644 index 000000000..ab0893309 Binary files /dev/null and b/public/terrain/19/858533/353858.terrain differ diff --git a/public/terrain/19/858533/353859.terrain b/public/terrain/19/858533/353859.terrain new file mode 100644 index 000000000..2c617d50c Binary files /dev/null and b/public/terrain/19/858533/353859.terrain differ diff --git a/public/terrain/19/858533/353860.terrain b/public/terrain/19/858533/353860.terrain new file mode 100644 index 000000000..82c3e77ee Binary files /dev/null and b/public/terrain/19/858533/353860.terrain differ diff --git a/public/terrain/19/858533/353861.terrain b/public/terrain/19/858533/353861.terrain new file mode 100644 index 000000000..8a8ab9dd1 Binary files /dev/null and b/public/terrain/19/858533/353861.terrain differ diff --git a/public/terrain/19/858533/353862.terrain b/public/terrain/19/858533/353862.terrain new file mode 100644 index 000000000..d67d4a7d1 Binary files /dev/null and b/public/terrain/19/858533/353862.terrain differ diff --git a/public/terrain/19/858533/353863.terrain b/public/terrain/19/858533/353863.terrain new file mode 100644 index 000000000..2d4584515 Binary files /dev/null and b/public/terrain/19/858533/353863.terrain differ diff --git a/public/terrain/19/858533/353864.terrain b/public/terrain/19/858533/353864.terrain new file mode 100644 index 000000000..9e29e5f85 Binary files /dev/null and b/public/terrain/19/858533/353864.terrain differ diff --git a/public/terrain/19/858533/353865.terrain b/public/terrain/19/858533/353865.terrain new file mode 100644 index 000000000..d26711eb0 Binary files /dev/null and b/public/terrain/19/858533/353865.terrain differ diff --git a/public/terrain/19/858533/353866.terrain b/public/terrain/19/858533/353866.terrain new file mode 100644 index 000000000..a04ed6274 Binary files /dev/null and b/public/terrain/19/858533/353866.terrain differ diff --git a/public/terrain/19/858533/353867.terrain b/public/terrain/19/858533/353867.terrain new file mode 100644 index 000000000..868efa159 Binary files /dev/null and b/public/terrain/19/858533/353867.terrain differ diff --git a/public/terrain/19/858533/353868.terrain b/public/terrain/19/858533/353868.terrain new file mode 100644 index 000000000..30d10665c Binary files /dev/null and b/public/terrain/19/858533/353868.terrain differ diff --git a/public/terrain/19/858533/353869.terrain b/public/terrain/19/858533/353869.terrain new file mode 100644 index 000000000..e1d46a12f Binary files /dev/null and b/public/terrain/19/858533/353869.terrain differ diff --git a/public/terrain/19/858533/353870.terrain b/public/terrain/19/858533/353870.terrain new file mode 100644 index 000000000..68207a145 Binary files /dev/null and b/public/terrain/19/858533/353870.terrain differ diff --git a/public/terrain/19/858533/353871.terrain b/public/terrain/19/858533/353871.terrain new file mode 100644 index 000000000..9b1b0ae94 Binary files /dev/null and b/public/terrain/19/858533/353871.terrain differ diff --git a/public/terrain/19/858533/353872.terrain b/public/terrain/19/858533/353872.terrain new file mode 100644 index 000000000..4c2217da1 Binary files /dev/null and b/public/terrain/19/858533/353872.terrain differ diff --git a/public/terrain/19/858533/353873.terrain b/public/terrain/19/858533/353873.terrain new file mode 100644 index 000000000..8bc3ecef0 Binary files /dev/null and b/public/terrain/19/858533/353873.terrain differ diff --git a/public/terrain/19/858533/353874.terrain b/public/terrain/19/858533/353874.terrain new file mode 100644 index 000000000..08b2defdd Binary files /dev/null and b/public/terrain/19/858533/353874.terrain differ diff --git a/public/terrain/19/858533/353875.terrain b/public/terrain/19/858533/353875.terrain new file mode 100644 index 000000000..4c071f484 Binary files /dev/null and b/public/terrain/19/858533/353875.terrain differ diff --git a/public/terrain/19/858533/353876.terrain b/public/terrain/19/858533/353876.terrain new file mode 100644 index 000000000..042f12faa Binary files /dev/null and b/public/terrain/19/858533/353876.terrain differ diff --git a/public/terrain/19/858533/353877.terrain b/public/terrain/19/858533/353877.terrain new file mode 100644 index 000000000..c364e1ada Binary files /dev/null and b/public/terrain/19/858533/353877.terrain differ diff --git a/public/terrain/19/858533/353878.terrain b/public/terrain/19/858533/353878.terrain new file mode 100644 index 000000000..1576904e2 Binary files /dev/null and b/public/terrain/19/858533/353878.terrain differ diff --git a/public/terrain/19/858533/353879.terrain b/public/terrain/19/858533/353879.terrain new file mode 100644 index 000000000..4786d510e Binary files /dev/null and b/public/terrain/19/858533/353879.terrain differ diff --git a/public/terrain/19/858533/353880.terrain b/public/terrain/19/858533/353880.terrain new file mode 100644 index 000000000..6f5b630d3 Binary files /dev/null and b/public/terrain/19/858533/353880.terrain differ diff --git a/public/terrain/19/858533/353881.terrain b/public/terrain/19/858533/353881.terrain new file mode 100644 index 000000000..b4d28577d Binary files /dev/null and b/public/terrain/19/858533/353881.terrain differ diff --git a/public/terrain/19/858533/353882.terrain b/public/terrain/19/858533/353882.terrain new file mode 100644 index 000000000..7abcff4f5 Binary files /dev/null and b/public/terrain/19/858533/353882.terrain differ diff --git a/public/terrain/19/858533/353883.terrain b/public/terrain/19/858533/353883.terrain new file mode 100644 index 000000000..a1c440fe2 Binary files /dev/null and b/public/terrain/19/858533/353883.terrain differ diff --git a/public/terrain/19/858533/353884.terrain b/public/terrain/19/858533/353884.terrain new file mode 100644 index 000000000..e56a613c4 Binary files /dev/null and b/public/terrain/19/858533/353884.terrain differ diff --git a/public/terrain/19/858533/353885.terrain b/public/terrain/19/858533/353885.terrain new file mode 100644 index 000000000..c1310e9b3 Binary files /dev/null and b/public/terrain/19/858533/353885.terrain differ diff --git a/public/terrain/19/858533/353886.terrain b/public/terrain/19/858533/353886.terrain new file mode 100644 index 000000000..7401a11c8 Binary files /dev/null and b/public/terrain/19/858533/353886.terrain differ diff --git a/public/terrain/19/858533/353887.terrain b/public/terrain/19/858533/353887.terrain new file mode 100644 index 000000000..8d1da3174 Binary files /dev/null and b/public/terrain/19/858533/353887.terrain differ diff --git a/public/terrain/19/858533/353888.terrain b/public/terrain/19/858533/353888.terrain new file mode 100644 index 000000000..dfbd36d31 Binary files /dev/null and b/public/terrain/19/858533/353888.terrain differ diff --git a/public/terrain/19/858533/353889.terrain b/public/terrain/19/858533/353889.terrain new file mode 100644 index 000000000..151534a3f Binary files /dev/null and b/public/terrain/19/858533/353889.terrain differ diff --git a/public/terrain/19/858533/353890.terrain b/public/terrain/19/858533/353890.terrain new file mode 100644 index 000000000..e0a6e055e Binary files /dev/null and b/public/terrain/19/858533/353890.terrain differ diff --git a/public/terrain/19/858533/353891.terrain b/public/terrain/19/858533/353891.terrain new file mode 100644 index 000000000..1ec422af7 Binary files /dev/null and b/public/terrain/19/858533/353891.terrain differ diff --git a/public/terrain/19/858533/353892.terrain b/public/terrain/19/858533/353892.terrain new file mode 100644 index 000000000..1dc798210 Binary files /dev/null and b/public/terrain/19/858533/353892.terrain differ diff --git a/public/terrain/19/858533/353893.terrain b/public/terrain/19/858533/353893.terrain new file mode 100644 index 000000000..75ea3456b Binary files /dev/null and b/public/terrain/19/858533/353893.terrain differ diff --git a/public/terrain/19/858533/353894.terrain b/public/terrain/19/858533/353894.terrain new file mode 100644 index 000000000..ed1c2429a Binary files /dev/null and b/public/terrain/19/858533/353894.terrain differ diff --git a/public/terrain/19/858533/353895.terrain b/public/terrain/19/858533/353895.terrain new file mode 100644 index 000000000..763a83e61 Binary files /dev/null and b/public/terrain/19/858533/353895.terrain differ diff --git a/public/terrain/19/858533/353896.terrain b/public/terrain/19/858533/353896.terrain new file mode 100644 index 000000000..826d8e7c0 Binary files /dev/null and b/public/terrain/19/858533/353896.terrain differ diff --git a/public/terrain/19/858533/353897.terrain b/public/terrain/19/858533/353897.terrain new file mode 100644 index 000000000..5096c7afc Binary files /dev/null and b/public/terrain/19/858533/353897.terrain differ diff --git a/public/terrain/19/858533/353898.terrain b/public/terrain/19/858533/353898.terrain new file mode 100644 index 000000000..00be0add8 Binary files /dev/null and b/public/terrain/19/858533/353898.terrain differ diff --git a/public/terrain/19/858533/353899.terrain b/public/terrain/19/858533/353899.terrain new file mode 100644 index 000000000..91fb1fc18 Binary files /dev/null and b/public/terrain/19/858533/353899.terrain differ diff --git a/public/terrain/19/858533/353900.terrain b/public/terrain/19/858533/353900.terrain new file mode 100644 index 000000000..b9b44b313 Binary files /dev/null and b/public/terrain/19/858533/353900.terrain differ diff --git a/public/terrain/19/858533/353901.terrain b/public/terrain/19/858533/353901.terrain new file mode 100644 index 000000000..a017f6266 Binary files /dev/null and b/public/terrain/19/858533/353901.terrain differ diff --git a/public/terrain/19/858533/353902.terrain b/public/terrain/19/858533/353902.terrain new file mode 100644 index 000000000..2ac7e6f0d Binary files /dev/null and b/public/terrain/19/858533/353902.terrain differ diff --git a/public/terrain/19/858533/353903.terrain b/public/terrain/19/858533/353903.terrain new file mode 100644 index 000000000..3e67a962a Binary files /dev/null and b/public/terrain/19/858533/353903.terrain differ diff --git a/public/terrain/19/858533/353904.terrain b/public/terrain/19/858533/353904.terrain new file mode 100644 index 000000000..cac895dfc Binary files /dev/null and b/public/terrain/19/858533/353904.terrain differ diff --git a/public/terrain/19/858533/353905.terrain b/public/terrain/19/858533/353905.terrain new file mode 100644 index 000000000..cc6fd2ba3 Binary files /dev/null and b/public/terrain/19/858533/353905.terrain differ diff --git a/public/terrain/19/858533/353906.terrain b/public/terrain/19/858533/353906.terrain new file mode 100644 index 000000000..4de65fa01 Binary files /dev/null and b/public/terrain/19/858533/353906.terrain differ diff --git a/public/terrain/19/858533/353907.terrain b/public/terrain/19/858533/353907.terrain new file mode 100644 index 000000000..c0b880dc1 Binary files /dev/null and b/public/terrain/19/858533/353907.terrain differ diff --git a/public/terrain/19/858533/353908.terrain b/public/terrain/19/858533/353908.terrain new file mode 100644 index 000000000..f428f2751 Binary files /dev/null and b/public/terrain/19/858533/353908.terrain differ diff --git a/public/terrain/19/858533/353909.terrain b/public/terrain/19/858533/353909.terrain new file mode 100644 index 000000000..9a5e54355 Binary files /dev/null and b/public/terrain/19/858533/353909.terrain differ diff --git a/public/terrain/19/858533/353910.terrain b/public/terrain/19/858533/353910.terrain new file mode 100644 index 000000000..94755df6d Binary files /dev/null and b/public/terrain/19/858533/353910.terrain differ diff --git a/public/terrain/19/858533/353911.terrain b/public/terrain/19/858533/353911.terrain new file mode 100644 index 000000000..a0914c340 Binary files /dev/null and b/public/terrain/19/858533/353911.terrain differ diff --git a/public/terrain/19/858533/353912.terrain b/public/terrain/19/858533/353912.terrain new file mode 100644 index 000000000..3851e456f Binary files /dev/null and b/public/terrain/19/858533/353912.terrain differ diff --git a/public/terrain/19/858533/353913.terrain b/public/terrain/19/858533/353913.terrain new file mode 100644 index 000000000..72e24faf3 Binary files /dev/null and b/public/terrain/19/858533/353913.terrain differ diff --git a/public/terrain/19/858533/353914.terrain b/public/terrain/19/858533/353914.terrain new file mode 100644 index 000000000..7a1bd35a6 Binary files /dev/null and b/public/terrain/19/858533/353914.terrain differ diff --git a/public/terrain/19/858533/353915.terrain b/public/terrain/19/858533/353915.terrain new file mode 100644 index 000000000..04c70e4ce Binary files /dev/null and b/public/terrain/19/858533/353915.terrain differ diff --git a/public/terrain/19/858533/353916.terrain b/public/terrain/19/858533/353916.terrain new file mode 100644 index 000000000..9912e636e Binary files /dev/null and b/public/terrain/19/858533/353916.terrain differ diff --git a/public/terrain/19/858533/353917.terrain b/public/terrain/19/858533/353917.terrain new file mode 100644 index 000000000..46a7f853e Binary files /dev/null and b/public/terrain/19/858533/353917.terrain differ diff --git a/public/terrain/19/858533/353918.terrain b/public/terrain/19/858533/353918.terrain new file mode 100644 index 000000000..e50eb5047 Binary files /dev/null and b/public/terrain/19/858533/353918.terrain differ diff --git a/public/terrain/19/858533/353919.terrain b/public/terrain/19/858533/353919.terrain new file mode 100644 index 000000000..df5b436d0 Binary files /dev/null and b/public/terrain/19/858533/353919.terrain differ diff --git a/public/terrain/19/858533/353920.terrain b/public/terrain/19/858533/353920.terrain new file mode 100644 index 000000000..fcce1a47a Binary files /dev/null and b/public/terrain/19/858533/353920.terrain differ diff --git a/public/terrain/19/858533/353921.terrain b/public/terrain/19/858533/353921.terrain new file mode 100644 index 000000000..1083baa74 Binary files /dev/null and b/public/terrain/19/858533/353921.terrain differ diff --git a/public/terrain/19/858533/353922.terrain b/public/terrain/19/858533/353922.terrain new file mode 100644 index 000000000..a5d036f9b Binary files /dev/null and b/public/terrain/19/858533/353922.terrain differ diff --git a/public/terrain/19/858533/353923.terrain b/public/terrain/19/858533/353923.terrain new file mode 100644 index 000000000..333310fa5 Binary files /dev/null and b/public/terrain/19/858533/353923.terrain differ diff --git a/public/terrain/19/858533/353924.terrain b/public/terrain/19/858533/353924.terrain new file mode 100644 index 000000000..67f109045 Binary files /dev/null and b/public/terrain/19/858533/353924.terrain differ diff --git a/public/terrain/19/858533/353925.terrain b/public/terrain/19/858533/353925.terrain new file mode 100644 index 000000000..03dcac725 Binary files /dev/null and b/public/terrain/19/858533/353925.terrain differ diff --git a/public/terrain/19/858533/353926.terrain b/public/terrain/19/858533/353926.terrain new file mode 100644 index 000000000..36be90c83 Binary files /dev/null and b/public/terrain/19/858533/353926.terrain differ diff --git a/public/terrain/19/858533/353927.terrain b/public/terrain/19/858533/353927.terrain new file mode 100644 index 000000000..9c6875393 Binary files /dev/null and b/public/terrain/19/858533/353927.terrain differ diff --git a/public/terrain/19/858533/353928.terrain b/public/terrain/19/858533/353928.terrain new file mode 100644 index 000000000..c3355a869 Binary files /dev/null and b/public/terrain/19/858533/353928.terrain differ diff --git a/public/terrain/19/858533/353929.terrain b/public/terrain/19/858533/353929.terrain new file mode 100644 index 000000000..3a0f5a0bc Binary files /dev/null and b/public/terrain/19/858533/353929.terrain differ diff --git a/public/terrain/19/858533/353930.terrain b/public/terrain/19/858533/353930.terrain new file mode 100644 index 000000000..21e7b5e89 Binary files /dev/null and b/public/terrain/19/858533/353930.terrain differ diff --git a/public/terrain/19/858533/353931.terrain b/public/terrain/19/858533/353931.terrain new file mode 100644 index 000000000..24ffaa379 Binary files /dev/null and b/public/terrain/19/858533/353931.terrain differ diff --git a/public/terrain/19/858533/353932.terrain b/public/terrain/19/858533/353932.terrain new file mode 100644 index 000000000..7fd3b6e48 Binary files /dev/null and b/public/terrain/19/858533/353932.terrain differ diff --git a/public/terrain/19/858533/353933.terrain b/public/terrain/19/858533/353933.terrain new file mode 100644 index 000000000..646353256 Binary files /dev/null and b/public/terrain/19/858533/353933.terrain differ diff --git a/public/terrain/19/858533/353934.terrain b/public/terrain/19/858533/353934.terrain new file mode 100644 index 000000000..cf242b15a Binary files /dev/null and b/public/terrain/19/858533/353934.terrain differ diff --git a/public/terrain/19/858533/353935.terrain b/public/terrain/19/858533/353935.terrain new file mode 100644 index 000000000..843d3bfc3 Binary files /dev/null and b/public/terrain/19/858533/353935.terrain differ diff --git a/public/terrain/19/858533/353936.terrain b/public/terrain/19/858533/353936.terrain new file mode 100644 index 000000000..d4431891e Binary files /dev/null and b/public/terrain/19/858533/353936.terrain differ diff --git a/public/terrain/19/858533/353937.terrain b/public/terrain/19/858533/353937.terrain new file mode 100644 index 000000000..509063070 Binary files /dev/null and b/public/terrain/19/858533/353937.terrain differ diff --git a/public/terrain/19/858533/353938.terrain b/public/terrain/19/858533/353938.terrain new file mode 100644 index 000000000..d9ae7e4d0 Binary files /dev/null and b/public/terrain/19/858533/353938.terrain differ diff --git a/public/terrain/19/858533/353939.terrain b/public/terrain/19/858533/353939.terrain new file mode 100644 index 000000000..9c95aee1b Binary files /dev/null and b/public/terrain/19/858533/353939.terrain differ diff --git a/public/terrain/19/858533/353940.terrain b/public/terrain/19/858533/353940.terrain new file mode 100644 index 000000000..f559fd90d Binary files /dev/null and b/public/terrain/19/858533/353940.terrain differ diff --git a/public/terrain/19/858533/353941.terrain b/public/terrain/19/858533/353941.terrain new file mode 100644 index 000000000..2fd736016 Binary files /dev/null and b/public/terrain/19/858533/353941.terrain differ diff --git a/public/terrain/19/858533/353942.terrain b/public/terrain/19/858533/353942.terrain new file mode 100644 index 000000000..27680d7a2 Binary files /dev/null and b/public/terrain/19/858533/353942.terrain differ diff --git a/public/terrain/19/858533/353943.terrain b/public/terrain/19/858533/353943.terrain new file mode 100644 index 000000000..bac3934a8 Binary files /dev/null and b/public/terrain/19/858533/353943.terrain differ diff --git a/public/terrain/19/858533/353944.terrain b/public/terrain/19/858533/353944.terrain new file mode 100644 index 000000000..e10b84691 Binary files /dev/null and b/public/terrain/19/858533/353944.terrain differ diff --git a/public/terrain/19/858533/353945.terrain b/public/terrain/19/858533/353945.terrain new file mode 100644 index 000000000..517c711ca Binary files /dev/null and b/public/terrain/19/858533/353945.terrain differ diff --git a/public/terrain/19/858533/353946.terrain b/public/terrain/19/858533/353946.terrain new file mode 100644 index 000000000..637312656 Binary files /dev/null and b/public/terrain/19/858533/353946.terrain differ diff --git a/public/terrain/19/858533/353947.terrain b/public/terrain/19/858533/353947.terrain new file mode 100644 index 000000000..9bb48af76 Binary files /dev/null and b/public/terrain/19/858533/353947.terrain differ diff --git a/public/terrain/19/858533/353948.terrain b/public/terrain/19/858533/353948.terrain new file mode 100644 index 000000000..25a16228f Binary files /dev/null and b/public/terrain/19/858533/353948.terrain differ diff --git a/public/terrain/19/858533/353949.terrain b/public/terrain/19/858533/353949.terrain new file mode 100644 index 000000000..83fa6bdd9 Binary files /dev/null and b/public/terrain/19/858533/353949.terrain differ diff --git a/public/terrain/19/858533/353950.terrain b/public/terrain/19/858533/353950.terrain new file mode 100644 index 000000000..22a5f307f Binary files /dev/null and b/public/terrain/19/858533/353950.terrain differ diff --git a/public/terrain/19/858533/353951.terrain b/public/terrain/19/858533/353951.terrain new file mode 100644 index 000000000..b2b34c92f Binary files /dev/null and b/public/terrain/19/858533/353951.terrain differ diff --git a/public/terrain/19/858533/353952.terrain b/public/terrain/19/858533/353952.terrain new file mode 100644 index 000000000..97f87385b Binary files /dev/null and b/public/terrain/19/858533/353952.terrain differ diff --git a/public/terrain/19/858533/353953.terrain b/public/terrain/19/858533/353953.terrain new file mode 100644 index 000000000..b6276c8da Binary files /dev/null and b/public/terrain/19/858533/353953.terrain differ diff --git a/public/terrain/19/858533/353954.terrain b/public/terrain/19/858533/353954.terrain new file mode 100644 index 000000000..21bb2ea29 Binary files /dev/null and b/public/terrain/19/858533/353954.terrain differ diff --git a/public/terrain/19/858533/353955.terrain b/public/terrain/19/858533/353955.terrain new file mode 100644 index 000000000..aab28b070 Binary files /dev/null and b/public/terrain/19/858533/353955.terrain differ diff --git a/public/terrain/19/858533/353956.terrain b/public/terrain/19/858533/353956.terrain new file mode 100644 index 000000000..009183e53 Binary files /dev/null and b/public/terrain/19/858533/353956.terrain differ diff --git a/public/terrain/19/858533/353957.terrain b/public/terrain/19/858533/353957.terrain new file mode 100644 index 000000000..f31aad40e Binary files /dev/null and b/public/terrain/19/858533/353957.terrain differ diff --git a/public/terrain/19/858533/353958.terrain b/public/terrain/19/858533/353958.terrain new file mode 100644 index 000000000..1aa2ec958 Binary files /dev/null and b/public/terrain/19/858533/353958.terrain differ diff --git a/public/terrain/19/858533/353959.terrain b/public/terrain/19/858533/353959.terrain new file mode 100644 index 000000000..450e7bcf3 Binary files /dev/null and b/public/terrain/19/858533/353959.terrain differ diff --git a/public/terrain/19/858533/353960.terrain b/public/terrain/19/858533/353960.terrain new file mode 100644 index 000000000..8af98e85a Binary files /dev/null and b/public/terrain/19/858533/353960.terrain differ diff --git a/public/terrain/19/858533/353961.terrain b/public/terrain/19/858533/353961.terrain new file mode 100644 index 000000000..31f2d3b51 Binary files /dev/null and b/public/terrain/19/858533/353961.terrain differ diff --git a/public/terrain/19/858533/353962.terrain b/public/terrain/19/858533/353962.terrain new file mode 100644 index 000000000..fd450bcf2 Binary files /dev/null and b/public/terrain/19/858533/353962.terrain differ diff --git a/public/terrain/19/858533/353963.terrain b/public/terrain/19/858533/353963.terrain new file mode 100644 index 000000000..218bbe080 Binary files /dev/null and b/public/terrain/19/858533/353963.terrain differ diff --git a/public/terrain/19/858533/353964.terrain b/public/terrain/19/858533/353964.terrain new file mode 100644 index 000000000..ed43fab4b Binary files /dev/null and b/public/terrain/19/858533/353964.terrain differ diff --git a/public/terrain/19/858533/353965.terrain b/public/terrain/19/858533/353965.terrain new file mode 100644 index 000000000..a1b91089e Binary files /dev/null and b/public/terrain/19/858533/353965.terrain differ diff --git a/public/terrain/19/858533/353966.terrain b/public/terrain/19/858533/353966.terrain new file mode 100644 index 000000000..cc6380edf Binary files /dev/null and b/public/terrain/19/858533/353966.terrain differ diff --git a/public/terrain/19/858533/353967.terrain b/public/terrain/19/858533/353967.terrain new file mode 100644 index 000000000..95b590c0a Binary files /dev/null and b/public/terrain/19/858533/353967.terrain differ diff --git a/public/terrain/19/858533/353968.terrain b/public/terrain/19/858533/353968.terrain new file mode 100644 index 000000000..2bff1db70 Binary files /dev/null and b/public/terrain/19/858533/353968.terrain differ diff --git a/public/terrain/19/858533/353969.terrain b/public/terrain/19/858533/353969.terrain new file mode 100644 index 000000000..dcfa06803 Binary files /dev/null and b/public/terrain/19/858533/353969.terrain differ diff --git a/public/terrain/19/858533/353970.terrain b/public/terrain/19/858533/353970.terrain new file mode 100644 index 000000000..83dd0eae0 Binary files /dev/null and b/public/terrain/19/858533/353970.terrain differ diff --git a/public/terrain/19/858533/353971.terrain b/public/terrain/19/858533/353971.terrain new file mode 100644 index 000000000..bb90ab5b0 Binary files /dev/null and b/public/terrain/19/858533/353971.terrain differ diff --git a/public/terrain/19/858533/353972.terrain b/public/terrain/19/858533/353972.terrain new file mode 100644 index 000000000..a5e8ebca3 Binary files /dev/null and b/public/terrain/19/858533/353972.terrain differ diff --git a/public/terrain/19/858533/353973.terrain b/public/terrain/19/858533/353973.terrain new file mode 100644 index 000000000..bd6b2f83c Binary files /dev/null and b/public/terrain/19/858533/353973.terrain differ diff --git a/public/terrain/19/858533/353974.terrain b/public/terrain/19/858533/353974.terrain new file mode 100644 index 000000000..8aadece49 Binary files /dev/null and b/public/terrain/19/858533/353974.terrain differ diff --git a/public/terrain/19/858533/353975.terrain b/public/terrain/19/858533/353975.terrain new file mode 100644 index 000000000..fd6943847 Binary files /dev/null and b/public/terrain/19/858533/353975.terrain differ diff --git a/public/terrain/19/858533/353976.terrain b/public/terrain/19/858533/353976.terrain new file mode 100644 index 000000000..5513132ba Binary files /dev/null and b/public/terrain/19/858533/353976.terrain differ diff --git a/public/terrain/19/858533/353977.terrain b/public/terrain/19/858533/353977.terrain new file mode 100644 index 000000000..88aaed5ad Binary files /dev/null and b/public/terrain/19/858533/353977.terrain differ diff --git a/public/terrain/19/858533/353978.terrain b/public/terrain/19/858533/353978.terrain new file mode 100644 index 000000000..140675139 Binary files /dev/null and b/public/terrain/19/858533/353978.terrain differ diff --git a/public/terrain/19/858533/353979.terrain b/public/terrain/19/858533/353979.terrain new file mode 100644 index 000000000..4b7724e5f Binary files /dev/null and b/public/terrain/19/858533/353979.terrain differ diff --git a/public/terrain/19/858533/353980.terrain b/public/terrain/19/858533/353980.terrain new file mode 100644 index 000000000..321961a06 Binary files /dev/null and b/public/terrain/19/858533/353980.terrain differ diff --git a/public/terrain/19/858533/353981.terrain b/public/terrain/19/858533/353981.terrain new file mode 100644 index 000000000..204f9d2e9 Binary files /dev/null and b/public/terrain/19/858533/353981.terrain differ diff --git a/public/terrain/19/858533/353982.terrain b/public/terrain/19/858533/353982.terrain new file mode 100644 index 000000000..1d784d825 Binary files /dev/null and b/public/terrain/19/858533/353982.terrain differ diff --git a/public/terrain/19/858533/353983.terrain b/public/terrain/19/858533/353983.terrain new file mode 100644 index 000000000..9f0ac1978 Binary files /dev/null and b/public/terrain/19/858533/353983.terrain differ diff --git a/public/terrain/19/858533/353984.terrain b/public/terrain/19/858533/353984.terrain new file mode 100644 index 000000000..15329e948 Binary files /dev/null and b/public/terrain/19/858533/353984.terrain differ diff --git a/public/terrain/19/858533/353985.terrain b/public/terrain/19/858533/353985.terrain new file mode 100644 index 000000000..9e21543bb Binary files /dev/null and b/public/terrain/19/858533/353985.terrain differ diff --git a/public/terrain/19/858533/353986.terrain b/public/terrain/19/858533/353986.terrain new file mode 100644 index 000000000..70824fc3f Binary files /dev/null and b/public/terrain/19/858533/353986.terrain differ diff --git a/public/terrain/19/858533/353987.terrain b/public/terrain/19/858533/353987.terrain new file mode 100644 index 000000000..2a2035e4a Binary files /dev/null and b/public/terrain/19/858533/353987.terrain differ diff --git a/public/terrain/19/858533/353988.terrain b/public/terrain/19/858533/353988.terrain new file mode 100644 index 000000000..fb4c38543 Binary files /dev/null and b/public/terrain/19/858533/353988.terrain differ diff --git a/public/terrain/19/858533/353989.terrain b/public/terrain/19/858533/353989.terrain new file mode 100644 index 000000000..3d54fb82d Binary files /dev/null and b/public/terrain/19/858533/353989.terrain differ diff --git a/public/terrain/19/858533/353990.terrain b/public/terrain/19/858533/353990.terrain new file mode 100644 index 000000000..c8f501f3b Binary files /dev/null and b/public/terrain/19/858533/353990.terrain differ diff --git a/public/terrain/19/858533/353991.terrain b/public/terrain/19/858533/353991.terrain new file mode 100644 index 000000000..739e14c87 Binary files /dev/null and b/public/terrain/19/858533/353991.terrain differ diff --git a/public/terrain/19/858533/353992.terrain b/public/terrain/19/858533/353992.terrain new file mode 100644 index 000000000..4c36fc6b5 Binary files /dev/null and b/public/terrain/19/858533/353992.terrain differ diff --git a/public/terrain/19/858533/353993.terrain b/public/terrain/19/858533/353993.terrain new file mode 100644 index 000000000..4a5cfeb80 Binary files /dev/null and b/public/terrain/19/858533/353993.terrain differ diff --git a/public/terrain/19/858533/353994.terrain b/public/terrain/19/858533/353994.terrain new file mode 100644 index 000000000..e0844361c Binary files /dev/null and b/public/terrain/19/858533/353994.terrain differ diff --git a/public/terrain/19/858533/353995.terrain b/public/terrain/19/858533/353995.terrain new file mode 100644 index 000000000..cf3e75114 Binary files /dev/null and b/public/terrain/19/858533/353995.terrain differ diff --git a/public/terrain/19/858533/353996.terrain b/public/terrain/19/858533/353996.terrain new file mode 100644 index 000000000..972c81d7b Binary files /dev/null and b/public/terrain/19/858533/353996.terrain differ diff --git a/public/terrain/19/858533/353997.terrain b/public/terrain/19/858533/353997.terrain new file mode 100644 index 000000000..c50e84995 Binary files /dev/null and b/public/terrain/19/858533/353997.terrain differ diff --git a/public/terrain/19/858533/353998.terrain b/public/terrain/19/858533/353998.terrain new file mode 100644 index 000000000..c575d7ab9 Binary files /dev/null and b/public/terrain/19/858533/353998.terrain differ diff --git a/public/terrain/19/858533/353999.terrain b/public/terrain/19/858533/353999.terrain new file mode 100644 index 000000000..cf1078fa9 Binary files /dev/null and b/public/terrain/19/858533/353999.terrain differ diff --git a/public/terrain/19/858533/354000.terrain b/public/terrain/19/858533/354000.terrain new file mode 100644 index 000000000..7765b2d71 Binary files /dev/null and b/public/terrain/19/858533/354000.terrain differ diff --git a/public/terrain/19/858533/354001.terrain b/public/terrain/19/858533/354001.terrain new file mode 100644 index 000000000..71c5b2cd1 Binary files /dev/null and b/public/terrain/19/858533/354001.terrain differ diff --git a/public/terrain/19/858533/354002.terrain b/public/terrain/19/858533/354002.terrain new file mode 100644 index 000000000..1c0b7effe Binary files /dev/null and b/public/terrain/19/858533/354002.terrain differ diff --git a/public/terrain/19/858533/354003.terrain b/public/terrain/19/858533/354003.terrain new file mode 100644 index 000000000..a1fb46ca8 Binary files /dev/null and b/public/terrain/19/858533/354003.terrain differ diff --git a/public/terrain/19/858533/354004.terrain b/public/terrain/19/858533/354004.terrain new file mode 100644 index 000000000..0d815b26a Binary files /dev/null and b/public/terrain/19/858533/354004.terrain differ diff --git a/public/terrain/19/858533/354005.terrain b/public/terrain/19/858533/354005.terrain new file mode 100644 index 000000000..aaeea3100 Binary files /dev/null and b/public/terrain/19/858533/354005.terrain differ diff --git a/public/terrain/19/858533/354006.terrain b/public/terrain/19/858533/354006.terrain new file mode 100644 index 000000000..41156d872 Binary files /dev/null and b/public/terrain/19/858533/354006.terrain differ diff --git a/public/terrain/19/858533/354007.terrain b/public/terrain/19/858533/354007.terrain new file mode 100644 index 000000000..6dfbaf8f3 Binary files /dev/null and b/public/terrain/19/858533/354007.terrain differ diff --git a/public/terrain/19/858533/354008.terrain b/public/terrain/19/858533/354008.terrain new file mode 100644 index 000000000..d8fa1cad9 Binary files /dev/null and b/public/terrain/19/858533/354008.terrain differ diff --git a/public/terrain/19/858533/354009.terrain b/public/terrain/19/858533/354009.terrain new file mode 100644 index 000000000..a6de53716 Binary files /dev/null and b/public/terrain/19/858533/354009.terrain differ diff --git a/public/terrain/19/858533/354010.terrain b/public/terrain/19/858533/354010.terrain new file mode 100644 index 000000000..4ac8e2ab1 Binary files /dev/null and b/public/terrain/19/858533/354010.terrain differ diff --git a/public/terrain/19/858533/354011.terrain b/public/terrain/19/858533/354011.terrain new file mode 100644 index 000000000..d818b19a4 Binary files /dev/null and b/public/terrain/19/858533/354011.terrain differ diff --git a/public/terrain/19/858533/354012.terrain b/public/terrain/19/858533/354012.terrain new file mode 100644 index 000000000..e4cec6444 Binary files /dev/null and b/public/terrain/19/858533/354012.terrain differ diff --git a/public/terrain/19/858533/354013.terrain b/public/terrain/19/858533/354013.terrain new file mode 100644 index 000000000..46baad49e Binary files /dev/null and b/public/terrain/19/858533/354013.terrain differ diff --git a/public/terrain/19/858533/354014.terrain b/public/terrain/19/858533/354014.terrain new file mode 100644 index 000000000..ba06d2e6e Binary files /dev/null and b/public/terrain/19/858533/354014.terrain differ diff --git a/public/terrain/19/858533/354015.terrain b/public/terrain/19/858533/354015.terrain new file mode 100644 index 000000000..bab531606 Binary files /dev/null and b/public/terrain/19/858533/354015.terrain differ diff --git a/public/terrain/19/858533/354016.terrain b/public/terrain/19/858533/354016.terrain new file mode 100644 index 000000000..cd021dace Binary files /dev/null and b/public/terrain/19/858533/354016.terrain differ diff --git a/public/terrain/19/858533/354017.terrain b/public/terrain/19/858533/354017.terrain new file mode 100644 index 000000000..cb8d4ddb5 Binary files /dev/null and b/public/terrain/19/858533/354017.terrain differ diff --git a/public/terrain/19/858533/354018.terrain b/public/terrain/19/858533/354018.terrain new file mode 100644 index 000000000..fbac14a45 Binary files /dev/null and b/public/terrain/19/858533/354018.terrain differ diff --git a/public/terrain/19/858533/354019.terrain b/public/terrain/19/858533/354019.terrain new file mode 100644 index 000000000..e9b481adc Binary files /dev/null and b/public/terrain/19/858533/354019.terrain differ diff --git a/public/terrain/19/858533/354020.terrain b/public/terrain/19/858533/354020.terrain new file mode 100644 index 000000000..abbdb20cc Binary files /dev/null and b/public/terrain/19/858533/354020.terrain differ diff --git a/public/terrain/19/858533/354021.terrain b/public/terrain/19/858533/354021.terrain new file mode 100644 index 000000000..63a1c389a Binary files /dev/null and b/public/terrain/19/858533/354021.terrain differ diff --git a/public/terrain/19/858533/354022.terrain b/public/terrain/19/858533/354022.terrain new file mode 100644 index 000000000..06857676d Binary files /dev/null and b/public/terrain/19/858533/354022.terrain differ diff --git a/public/terrain/19/858533/354023.terrain b/public/terrain/19/858533/354023.terrain new file mode 100644 index 000000000..67e26dff7 Binary files /dev/null and b/public/terrain/19/858533/354023.terrain differ diff --git a/public/terrain/19/858533/354024.terrain b/public/terrain/19/858533/354024.terrain new file mode 100644 index 000000000..14c3ddf50 Binary files /dev/null and b/public/terrain/19/858533/354024.terrain differ diff --git a/public/terrain/19/858533/354025.terrain b/public/terrain/19/858533/354025.terrain new file mode 100644 index 000000000..9a33db9a6 Binary files /dev/null and b/public/terrain/19/858533/354025.terrain differ diff --git a/public/terrain/19/858533/354026.terrain b/public/terrain/19/858533/354026.terrain new file mode 100644 index 000000000..73139438c Binary files /dev/null and b/public/terrain/19/858533/354026.terrain differ diff --git a/public/terrain/19/858533/354027.terrain b/public/terrain/19/858533/354027.terrain new file mode 100644 index 000000000..363225bf7 Binary files /dev/null and b/public/terrain/19/858533/354027.terrain differ diff --git a/public/terrain/19/858533/354028.terrain b/public/terrain/19/858533/354028.terrain new file mode 100644 index 000000000..f32ff1d66 Binary files /dev/null and b/public/terrain/19/858533/354028.terrain differ diff --git a/public/terrain/19/858533/354029.terrain b/public/terrain/19/858533/354029.terrain new file mode 100644 index 000000000..c9f82b45b Binary files /dev/null and b/public/terrain/19/858533/354029.terrain differ diff --git a/public/terrain/19/858533/354030.terrain b/public/terrain/19/858533/354030.terrain new file mode 100644 index 000000000..c2b3d10c0 Binary files /dev/null and b/public/terrain/19/858533/354030.terrain differ diff --git a/public/terrain/19/858533/354031.terrain b/public/terrain/19/858533/354031.terrain new file mode 100644 index 000000000..f70eb56b5 Binary files /dev/null and b/public/terrain/19/858533/354031.terrain differ diff --git a/public/terrain/19/858533/354032.terrain b/public/terrain/19/858533/354032.terrain new file mode 100644 index 000000000..3c0ed9e34 Binary files /dev/null and b/public/terrain/19/858533/354032.terrain differ diff --git a/public/terrain/19/858533/354033.terrain b/public/terrain/19/858533/354033.terrain new file mode 100644 index 000000000..34c3c35a2 Binary files /dev/null and b/public/terrain/19/858533/354033.terrain differ diff --git a/public/terrain/19/858533/354034.terrain b/public/terrain/19/858533/354034.terrain new file mode 100644 index 000000000..42e7cc904 Binary files /dev/null and b/public/terrain/19/858533/354034.terrain differ diff --git a/public/terrain/19/858533/354035.terrain b/public/terrain/19/858533/354035.terrain new file mode 100644 index 000000000..37f552f01 Binary files /dev/null and b/public/terrain/19/858533/354035.terrain differ diff --git a/public/terrain/19/858533/354036.terrain b/public/terrain/19/858533/354036.terrain new file mode 100644 index 000000000..a01b1d1c1 Binary files /dev/null and b/public/terrain/19/858533/354036.terrain differ diff --git a/public/terrain/19/858533/354037.terrain b/public/terrain/19/858533/354037.terrain new file mode 100644 index 000000000..a8e2e4c9d Binary files /dev/null and b/public/terrain/19/858533/354037.terrain differ diff --git a/public/terrain/19/858533/354038.terrain b/public/terrain/19/858533/354038.terrain new file mode 100644 index 000000000..153780573 Binary files /dev/null and b/public/terrain/19/858533/354038.terrain differ diff --git a/public/terrain/19/858533/354039.terrain b/public/terrain/19/858533/354039.terrain new file mode 100644 index 000000000..17af1eed6 Binary files /dev/null and b/public/terrain/19/858533/354039.terrain differ diff --git a/public/terrain/19/858533/354040.terrain b/public/terrain/19/858533/354040.terrain new file mode 100644 index 000000000..45dcef067 Binary files /dev/null and b/public/terrain/19/858533/354040.terrain differ diff --git a/public/terrain/19/858533/354041.terrain b/public/terrain/19/858533/354041.terrain new file mode 100644 index 000000000..ee922dc02 Binary files /dev/null and b/public/terrain/19/858533/354041.terrain differ diff --git a/public/terrain/19/858533/354042.terrain b/public/terrain/19/858533/354042.terrain new file mode 100644 index 000000000..edb1183bb Binary files /dev/null and b/public/terrain/19/858533/354042.terrain differ diff --git a/public/terrain/19/858533/354043.terrain b/public/terrain/19/858533/354043.terrain new file mode 100644 index 000000000..cf0fda670 Binary files /dev/null and b/public/terrain/19/858533/354043.terrain differ diff --git a/public/terrain/19/858533/354044.terrain b/public/terrain/19/858533/354044.terrain new file mode 100644 index 000000000..0b2eb8b0c Binary files /dev/null and b/public/terrain/19/858533/354044.terrain differ diff --git a/public/terrain/19/858533/354045.terrain b/public/terrain/19/858533/354045.terrain new file mode 100644 index 000000000..802069c04 Binary files /dev/null and b/public/terrain/19/858533/354045.terrain differ diff --git a/public/terrain/19/858533/354046.terrain b/public/terrain/19/858533/354046.terrain new file mode 100644 index 000000000..2914ba59a Binary files /dev/null and b/public/terrain/19/858533/354046.terrain differ diff --git a/public/terrain/19/858533/354047.terrain b/public/terrain/19/858533/354047.terrain new file mode 100644 index 000000000..1a01e0065 Binary files /dev/null and b/public/terrain/19/858533/354047.terrain differ diff --git a/public/terrain/19/858533/354048.terrain b/public/terrain/19/858533/354048.terrain new file mode 100644 index 000000000..91e16e5f3 Binary files /dev/null and b/public/terrain/19/858533/354048.terrain differ diff --git a/public/terrain/19/858533/354049.terrain b/public/terrain/19/858533/354049.terrain new file mode 100644 index 000000000..648fc69ce Binary files /dev/null and b/public/terrain/19/858533/354049.terrain differ diff --git a/public/terrain/19/858533/354050.terrain b/public/terrain/19/858533/354050.terrain new file mode 100644 index 000000000..c1ed98c50 Binary files /dev/null and b/public/terrain/19/858533/354050.terrain differ diff --git a/public/terrain/19/858533/354051.terrain b/public/terrain/19/858533/354051.terrain new file mode 100644 index 000000000..f48f48488 Binary files /dev/null and b/public/terrain/19/858533/354051.terrain differ diff --git a/public/terrain/19/858533/354052.terrain b/public/terrain/19/858533/354052.terrain new file mode 100644 index 000000000..c23003c92 Binary files /dev/null and b/public/terrain/19/858533/354052.terrain differ diff --git a/public/terrain/19/858533/354053.terrain b/public/terrain/19/858533/354053.terrain new file mode 100644 index 000000000..6bf0c7fea Binary files /dev/null and b/public/terrain/19/858533/354053.terrain differ diff --git a/public/terrain/19/858533/354054.terrain b/public/terrain/19/858533/354054.terrain new file mode 100644 index 000000000..4c8f64d8e Binary files /dev/null and b/public/terrain/19/858533/354054.terrain differ diff --git a/public/terrain/19/858533/354055.terrain b/public/terrain/19/858533/354055.terrain new file mode 100644 index 000000000..e14ccf13f Binary files /dev/null and b/public/terrain/19/858533/354055.terrain differ diff --git a/public/terrain/19/858533/354056.terrain b/public/terrain/19/858533/354056.terrain new file mode 100644 index 000000000..298aa7744 Binary files /dev/null and b/public/terrain/19/858533/354056.terrain differ diff --git a/public/terrain/19/858533/354057.terrain b/public/terrain/19/858533/354057.terrain new file mode 100644 index 000000000..b3e831976 Binary files /dev/null and b/public/terrain/19/858533/354057.terrain differ diff --git a/public/terrain/19/858533/354058.terrain b/public/terrain/19/858533/354058.terrain new file mode 100644 index 000000000..d0fe22f05 Binary files /dev/null and b/public/terrain/19/858533/354058.terrain differ diff --git a/public/terrain/19/858533/354059.terrain b/public/terrain/19/858533/354059.terrain new file mode 100644 index 000000000..f6ef18152 Binary files /dev/null and b/public/terrain/19/858533/354059.terrain differ diff --git a/public/terrain/19/858534/353743.terrain b/public/terrain/19/858534/353743.terrain new file mode 100644 index 000000000..3e1ad2c69 Binary files /dev/null and b/public/terrain/19/858534/353743.terrain differ diff --git a/public/terrain/19/858534/353744.terrain b/public/terrain/19/858534/353744.terrain new file mode 100644 index 000000000..c05b01048 Binary files /dev/null and b/public/terrain/19/858534/353744.terrain differ diff --git a/public/terrain/19/858534/353745.terrain b/public/terrain/19/858534/353745.terrain new file mode 100644 index 000000000..49c275a07 Binary files /dev/null and b/public/terrain/19/858534/353745.terrain differ diff --git a/public/terrain/19/858534/353746.terrain b/public/terrain/19/858534/353746.terrain new file mode 100644 index 000000000..2673df42d Binary files /dev/null and b/public/terrain/19/858534/353746.terrain differ diff --git a/public/terrain/19/858534/353747.terrain b/public/terrain/19/858534/353747.terrain new file mode 100644 index 000000000..60ec2293a Binary files /dev/null and b/public/terrain/19/858534/353747.terrain differ diff --git a/public/terrain/19/858534/353748.terrain b/public/terrain/19/858534/353748.terrain new file mode 100644 index 000000000..4c1d2056e Binary files /dev/null and b/public/terrain/19/858534/353748.terrain differ diff --git a/public/terrain/19/858534/353749.terrain b/public/terrain/19/858534/353749.terrain new file mode 100644 index 000000000..2d4c9febd Binary files /dev/null and b/public/terrain/19/858534/353749.terrain differ diff --git a/public/terrain/19/858534/353750.terrain b/public/terrain/19/858534/353750.terrain new file mode 100644 index 000000000..11badf23a Binary files /dev/null and b/public/terrain/19/858534/353750.terrain differ diff --git a/public/terrain/19/858534/353751.terrain b/public/terrain/19/858534/353751.terrain new file mode 100644 index 000000000..62c8121b2 Binary files /dev/null and b/public/terrain/19/858534/353751.terrain differ diff --git a/public/terrain/19/858534/353752.terrain b/public/terrain/19/858534/353752.terrain new file mode 100644 index 000000000..7736b21de Binary files /dev/null and b/public/terrain/19/858534/353752.terrain differ diff --git a/public/terrain/19/858534/353753.terrain b/public/terrain/19/858534/353753.terrain new file mode 100644 index 000000000..956a22928 Binary files /dev/null and b/public/terrain/19/858534/353753.terrain differ diff --git a/public/terrain/19/858534/353754.terrain b/public/terrain/19/858534/353754.terrain new file mode 100644 index 000000000..7d761996e Binary files /dev/null and b/public/terrain/19/858534/353754.terrain differ diff --git a/public/terrain/19/858534/353755.terrain b/public/terrain/19/858534/353755.terrain new file mode 100644 index 000000000..7c405b9e0 Binary files /dev/null and b/public/terrain/19/858534/353755.terrain differ diff --git a/public/terrain/19/858534/353756.terrain b/public/terrain/19/858534/353756.terrain new file mode 100644 index 000000000..c3b7c827a Binary files /dev/null and b/public/terrain/19/858534/353756.terrain differ diff --git a/public/terrain/19/858534/353757.terrain b/public/terrain/19/858534/353757.terrain new file mode 100644 index 000000000..339230ee5 Binary files /dev/null and b/public/terrain/19/858534/353757.terrain differ diff --git a/public/terrain/19/858534/353758.terrain b/public/terrain/19/858534/353758.terrain new file mode 100644 index 000000000..0451fb0fa Binary files /dev/null and b/public/terrain/19/858534/353758.terrain differ diff --git a/public/terrain/19/858534/353759.terrain b/public/terrain/19/858534/353759.terrain new file mode 100644 index 000000000..2ddc02adf Binary files /dev/null and b/public/terrain/19/858534/353759.terrain differ diff --git a/public/terrain/19/858534/353760.terrain b/public/terrain/19/858534/353760.terrain new file mode 100644 index 000000000..264d24842 Binary files /dev/null and b/public/terrain/19/858534/353760.terrain differ diff --git a/public/terrain/19/858534/353761.terrain b/public/terrain/19/858534/353761.terrain new file mode 100644 index 000000000..883b8bb0a Binary files /dev/null and b/public/terrain/19/858534/353761.terrain differ diff --git a/public/terrain/19/858534/353762.terrain b/public/terrain/19/858534/353762.terrain new file mode 100644 index 000000000..7c6d03ee0 Binary files /dev/null and b/public/terrain/19/858534/353762.terrain differ diff --git a/public/terrain/19/858534/353763.terrain b/public/terrain/19/858534/353763.terrain new file mode 100644 index 000000000..fa2852dd1 Binary files /dev/null and b/public/terrain/19/858534/353763.terrain differ diff --git a/public/terrain/19/858534/353764.terrain b/public/terrain/19/858534/353764.terrain new file mode 100644 index 000000000..045830092 Binary files /dev/null and b/public/terrain/19/858534/353764.terrain differ diff --git a/public/terrain/19/858534/353765.terrain b/public/terrain/19/858534/353765.terrain new file mode 100644 index 000000000..4a93afd77 Binary files /dev/null and b/public/terrain/19/858534/353765.terrain differ diff --git a/public/terrain/19/858534/353766.terrain b/public/terrain/19/858534/353766.terrain new file mode 100644 index 000000000..cb40385ed Binary files /dev/null and b/public/terrain/19/858534/353766.terrain differ diff --git a/public/terrain/19/858534/353767.terrain b/public/terrain/19/858534/353767.terrain new file mode 100644 index 000000000..7e2524c10 Binary files /dev/null and b/public/terrain/19/858534/353767.terrain differ diff --git a/public/terrain/19/858534/353768.terrain b/public/terrain/19/858534/353768.terrain new file mode 100644 index 000000000..56d5224e7 Binary files /dev/null and b/public/terrain/19/858534/353768.terrain differ diff --git a/public/terrain/19/858534/353769.terrain b/public/terrain/19/858534/353769.terrain new file mode 100644 index 000000000..628c7f840 Binary files /dev/null and b/public/terrain/19/858534/353769.terrain differ diff --git a/public/terrain/19/858534/353770.terrain b/public/terrain/19/858534/353770.terrain new file mode 100644 index 000000000..3f0a5bf4a Binary files /dev/null and b/public/terrain/19/858534/353770.terrain differ diff --git a/public/terrain/19/858534/353771.terrain b/public/terrain/19/858534/353771.terrain new file mode 100644 index 000000000..9a7199781 Binary files /dev/null and b/public/terrain/19/858534/353771.terrain differ diff --git a/public/terrain/19/858534/353772.terrain b/public/terrain/19/858534/353772.terrain new file mode 100644 index 000000000..2abe63aa6 Binary files /dev/null and b/public/terrain/19/858534/353772.terrain differ diff --git a/public/terrain/19/858534/353773.terrain b/public/terrain/19/858534/353773.terrain new file mode 100644 index 000000000..74feec724 Binary files /dev/null and b/public/terrain/19/858534/353773.terrain differ diff --git a/public/terrain/19/858534/353774.terrain b/public/terrain/19/858534/353774.terrain new file mode 100644 index 000000000..3f441afe2 Binary files /dev/null and b/public/terrain/19/858534/353774.terrain differ diff --git a/public/terrain/19/858534/353775.terrain b/public/terrain/19/858534/353775.terrain new file mode 100644 index 000000000..0e6d14cd8 Binary files /dev/null and b/public/terrain/19/858534/353775.terrain differ diff --git a/public/terrain/19/858534/353776.terrain b/public/terrain/19/858534/353776.terrain new file mode 100644 index 000000000..31ed34607 Binary files /dev/null and b/public/terrain/19/858534/353776.terrain differ diff --git a/public/terrain/19/858534/353777.terrain b/public/terrain/19/858534/353777.terrain new file mode 100644 index 000000000..d79c4e09b Binary files /dev/null and b/public/terrain/19/858534/353777.terrain differ diff --git a/public/terrain/19/858534/353778.terrain b/public/terrain/19/858534/353778.terrain new file mode 100644 index 000000000..39224467e Binary files /dev/null and b/public/terrain/19/858534/353778.terrain differ diff --git a/public/terrain/19/858534/353779.terrain b/public/terrain/19/858534/353779.terrain new file mode 100644 index 000000000..d4f9ff6db Binary files /dev/null and b/public/terrain/19/858534/353779.terrain differ diff --git a/public/terrain/19/858534/353780.terrain b/public/terrain/19/858534/353780.terrain new file mode 100644 index 000000000..f64124828 Binary files /dev/null and b/public/terrain/19/858534/353780.terrain differ diff --git a/public/terrain/19/858534/353781.terrain b/public/terrain/19/858534/353781.terrain new file mode 100644 index 000000000..a4cd7e15a Binary files /dev/null and b/public/terrain/19/858534/353781.terrain differ diff --git a/public/terrain/19/858534/353782.terrain b/public/terrain/19/858534/353782.terrain new file mode 100644 index 000000000..dc5d7a3ed Binary files /dev/null and b/public/terrain/19/858534/353782.terrain differ diff --git a/public/terrain/19/858534/353783.terrain b/public/terrain/19/858534/353783.terrain new file mode 100644 index 000000000..88781c89d Binary files /dev/null and b/public/terrain/19/858534/353783.terrain differ diff --git a/public/terrain/19/858534/353784.terrain b/public/terrain/19/858534/353784.terrain new file mode 100644 index 000000000..40d6ac21a Binary files /dev/null and b/public/terrain/19/858534/353784.terrain differ diff --git a/public/terrain/19/858534/353785.terrain b/public/terrain/19/858534/353785.terrain new file mode 100644 index 000000000..92fa2c6d3 Binary files /dev/null and b/public/terrain/19/858534/353785.terrain differ diff --git a/public/terrain/19/858534/353786.terrain b/public/terrain/19/858534/353786.terrain new file mode 100644 index 000000000..c2b0ec395 Binary files /dev/null and b/public/terrain/19/858534/353786.terrain differ diff --git a/public/terrain/19/858534/353787.terrain b/public/terrain/19/858534/353787.terrain new file mode 100644 index 000000000..d74b28601 Binary files /dev/null and b/public/terrain/19/858534/353787.terrain differ diff --git a/public/terrain/19/858534/353788.terrain b/public/terrain/19/858534/353788.terrain new file mode 100644 index 000000000..a68629ddd Binary files /dev/null and b/public/terrain/19/858534/353788.terrain differ diff --git a/public/terrain/19/858534/353789.terrain b/public/terrain/19/858534/353789.terrain new file mode 100644 index 000000000..b49f83ee0 Binary files /dev/null and b/public/terrain/19/858534/353789.terrain differ diff --git a/public/terrain/19/858534/353790.terrain b/public/terrain/19/858534/353790.terrain new file mode 100644 index 000000000..cd07d8769 Binary files /dev/null and b/public/terrain/19/858534/353790.terrain differ diff --git a/public/terrain/19/858534/353791.terrain b/public/terrain/19/858534/353791.terrain new file mode 100644 index 000000000..4a900eb71 Binary files /dev/null and b/public/terrain/19/858534/353791.terrain differ diff --git a/public/terrain/19/858534/353792.terrain b/public/terrain/19/858534/353792.terrain new file mode 100644 index 000000000..396de2cab Binary files /dev/null and b/public/terrain/19/858534/353792.terrain differ diff --git a/public/terrain/19/858534/353793.terrain b/public/terrain/19/858534/353793.terrain new file mode 100644 index 000000000..2aaa97653 Binary files /dev/null and b/public/terrain/19/858534/353793.terrain differ diff --git a/public/terrain/19/858534/353794.terrain b/public/terrain/19/858534/353794.terrain new file mode 100644 index 000000000..2c95222ca Binary files /dev/null and b/public/terrain/19/858534/353794.terrain differ diff --git a/public/terrain/19/858534/353795.terrain b/public/terrain/19/858534/353795.terrain new file mode 100644 index 000000000..f8ede768d Binary files /dev/null and b/public/terrain/19/858534/353795.terrain differ diff --git a/public/terrain/19/858534/353796.terrain b/public/terrain/19/858534/353796.terrain new file mode 100644 index 000000000..7106b81b0 Binary files /dev/null and b/public/terrain/19/858534/353796.terrain differ diff --git a/public/terrain/19/858534/353797.terrain b/public/terrain/19/858534/353797.terrain new file mode 100644 index 000000000..aedfc5972 Binary files /dev/null and b/public/terrain/19/858534/353797.terrain differ diff --git a/public/terrain/19/858534/353798.terrain b/public/terrain/19/858534/353798.terrain new file mode 100644 index 000000000..eb035b41f Binary files /dev/null and b/public/terrain/19/858534/353798.terrain differ diff --git a/public/terrain/19/858534/353799.terrain b/public/terrain/19/858534/353799.terrain new file mode 100644 index 000000000..8399f615e Binary files /dev/null and b/public/terrain/19/858534/353799.terrain differ diff --git a/public/terrain/19/858534/353800.terrain b/public/terrain/19/858534/353800.terrain new file mode 100644 index 000000000..febdcb920 Binary files /dev/null and b/public/terrain/19/858534/353800.terrain differ diff --git a/public/terrain/19/858534/353801.terrain b/public/terrain/19/858534/353801.terrain new file mode 100644 index 000000000..66e8db263 Binary files /dev/null and b/public/terrain/19/858534/353801.terrain differ diff --git a/public/terrain/19/858534/353802.terrain b/public/terrain/19/858534/353802.terrain new file mode 100644 index 000000000..a516600c6 Binary files /dev/null and b/public/terrain/19/858534/353802.terrain differ diff --git a/public/terrain/19/858534/353803.terrain b/public/terrain/19/858534/353803.terrain new file mode 100644 index 000000000..87ee914f4 Binary files /dev/null and b/public/terrain/19/858534/353803.terrain differ diff --git a/public/terrain/19/858534/353804.terrain b/public/terrain/19/858534/353804.terrain new file mode 100644 index 000000000..28cf1345a Binary files /dev/null and b/public/terrain/19/858534/353804.terrain differ diff --git a/public/terrain/19/858534/353805.terrain b/public/terrain/19/858534/353805.terrain new file mode 100644 index 000000000..1b3220ec3 Binary files /dev/null and b/public/terrain/19/858534/353805.terrain differ diff --git a/public/terrain/19/858534/353806.terrain b/public/terrain/19/858534/353806.terrain new file mode 100644 index 000000000..b29535a6f Binary files /dev/null and b/public/terrain/19/858534/353806.terrain differ diff --git a/public/terrain/19/858534/353807.terrain b/public/terrain/19/858534/353807.terrain new file mode 100644 index 000000000..3bb467f7e Binary files /dev/null and b/public/terrain/19/858534/353807.terrain differ diff --git a/public/terrain/19/858534/353808.terrain b/public/terrain/19/858534/353808.terrain new file mode 100644 index 000000000..56df4b879 Binary files /dev/null and b/public/terrain/19/858534/353808.terrain differ diff --git a/public/terrain/19/858534/353809.terrain b/public/terrain/19/858534/353809.terrain new file mode 100644 index 000000000..e48cd164f Binary files /dev/null and b/public/terrain/19/858534/353809.terrain differ diff --git a/public/terrain/19/858534/353810.terrain b/public/terrain/19/858534/353810.terrain new file mode 100644 index 000000000..02ef8eff8 Binary files /dev/null and b/public/terrain/19/858534/353810.terrain differ diff --git a/public/terrain/19/858534/353811.terrain b/public/terrain/19/858534/353811.terrain new file mode 100644 index 000000000..0534cc6a3 Binary files /dev/null and b/public/terrain/19/858534/353811.terrain differ diff --git a/public/terrain/19/858534/353812.terrain b/public/terrain/19/858534/353812.terrain new file mode 100644 index 000000000..5c325e966 Binary files /dev/null and b/public/terrain/19/858534/353812.terrain differ diff --git a/public/terrain/19/858534/353813.terrain b/public/terrain/19/858534/353813.terrain new file mode 100644 index 000000000..a7c27face Binary files /dev/null and b/public/terrain/19/858534/353813.terrain differ diff --git a/public/terrain/19/858534/353814.terrain b/public/terrain/19/858534/353814.terrain new file mode 100644 index 000000000..e6f2b6d32 Binary files /dev/null and b/public/terrain/19/858534/353814.terrain differ diff --git a/public/terrain/19/858534/353815.terrain b/public/terrain/19/858534/353815.terrain new file mode 100644 index 000000000..149138a6a Binary files /dev/null and b/public/terrain/19/858534/353815.terrain differ diff --git a/public/terrain/19/858534/353816.terrain b/public/terrain/19/858534/353816.terrain new file mode 100644 index 000000000..2775bc3e3 Binary files /dev/null and b/public/terrain/19/858534/353816.terrain differ diff --git a/public/terrain/19/858534/353817.terrain b/public/terrain/19/858534/353817.terrain new file mode 100644 index 000000000..a3bc522fe Binary files /dev/null and b/public/terrain/19/858534/353817.terrain differ diff --git a/public/terrain/19/858534/353818.terrain b/public/terrain/19/858534/353818.terrain new file mode 100644 index 000000000..f2d56c2e4 Binary files /dev/null and b/public/terrain/19/858534/353818.terrain differ diff --git a/public/terrain/19/858534/353819.terrain b/public/terrain/19/858534/353819.terrain new file mode 100644 index 000000000..8b8c827ed Binary files /dev/null and b/public/terrain/19/858534/353819.terrain differ diff --git a/public/terrain/19/858534/353820.terrain b/public/terrain/19/858534/353820.terrain new file mode 100644 index 000000000..d6de616f2 Binary files /dev/null and b/public/terrain/19/858534/353820.terrain differ diff --git a/public/terrain/19/858534/353821.terrain b/public/terrain/19/858534/353821.terrain new file mode 100644 index 000000000..b592c40b2 Binary files /dev/null and b/public/terrain/19/858534/353821.terrain differ diff --git a/public/terrain/19/858534/353822.terrain b/public/terrain/19/858534/353822.terrain new file mode 100644 index 000000000..229b9b256 Binary files /dev/null and b/public/terrain/19/858534/353822.terrain differ diff --git a/public/terrain/19/858534/353823.terrain b/public/terrain/19/858534/353823.terrain new file mode 100644 index 000000000..13eea1b0c Binary files /dev/null and b/public/terrain/19/858534/353823.terrain differ diff --git a/public/terrain/19/858534/353824.terrain b/public/terrain/19/858534/353824.terrain new file mode 100644 index 000000000..87dd484f7 Binary files /dev/null and b/public/terrain/19/858534/353824.terrain differ diff --git a/public/terrain/19/858534/353825.terrain b/public/terrain/19/858534/353825.terrain new file mode 100644 index 000000000..adf7f5184 Binary files /dev/null and b/public/terrain/19/858534/353825.terrain differ diff --git a/public/terrain/19/858534/353826.terrain b/public/terrain/19/858534/353826.terrain new file mode 100644 index 000000000..3586fe263 Binary files /dev/null and b/public/terrain/19/858534/353826.terrain differ diff --git a/public/terrain/19/858534/353827.terrain b/public/terrain/19/858534/353827.terrain new file mode 100644 index 000000000..6e04bcb8c Binary files /dev/null and b/public/terrain/19/858534/353827.terrain differ diff --git a/public/terrain/19/858534/353828.terrain b/public/terrain/19/858534/353828.terrain new file mode 100644 index 000000000..54d8c3087 Binary files /dev/null and b/public/terrain/19/858534/353828.terrain differ diff --git a/public/terrain/19/858534/353829.terrain b/public/terrain/19/858534/353829.terrain new file mode 100644 index 000000000..20e0c3dad Binary files /dev/null and b/public/terrain/19/858534/353829.terrain differ diff --git a/public/terrain/19/858534/353830.terrain b/public/terrain/19/858534/353830.terrain new file mode 100644 index 000000000..fe6013d21 Binary files /dev/null and b/public/terrain/19/858534/353830.terrain differ diff --git a/public/terrain/19/858534/353831.terrain b/public/terrain/19/858534/353831.terrain new file mode 100644 index 000000000..903b8d1ea Binary files /dev/null and b/public/terrain/19/858534/353831.terrain differ diff --git a/public/terrain/19/858534/353832.terrain b/public/terrain/19/858534/353832.terrain new file mode 100644 index 000000000..90856a06e Binary files /dev/null and b/public/terrain/19/858534/353832.terrain differ diff --git a/public/terrain/19/858534/353833.terrain b/public/terrain/19/858534/353833.terrain new file mode 100644 index 000000000..aae43afb6 Binary files /dev/null and b/public/terrain/19/858534/353833.terrain differ diff --git a/public/terrain/19/858534/353834.terrain b/public/terrain/19/858534/353834.terrain new file mode 100644 index 000000000..8e3cc223b Binary files /dev/null and b/public/terrain/19/858534/353834.terrain differ diff --git a/public/terrain/19/858534/353835.terrain b/public/terrain/19/858534/353835.terrain new file mode 100644 index 000000000..97dff2705 Binary files /dev/null and b/public/terrain/19/858534/353835.terrain differ diff --git a/public/terrain/19/858534/353836.terrain b/public/terrain/19/858534/353836.terrain new file mode 100644 index 000000000..7e32b7a9e Binary files /dev/null and b/public/terrain/19/858534/353836.terrain differ diff --git a/public/terrain/19/858534/353837.terrain b/public/terrain/19/858534/353837.terrain new file mode 100644 index 000000000..6afade6d8 Binary files /dev/null and b/public/terrain/19/858534/353837.terrain differ diff --git a/public/terrain/19/858534/353838.terrain b/public/terrain/19/858534/353838.terrain new file mode 100644 index 000000000..5bba2bdc0 Binary files /dev/null and b/public/terrain/19/858534/353838.terrain differ diff --git a/public/terrain/19/858534/353839.terrain b/public/terrain/19/858534/353839.terrain new file mode 100644 index 000000000..bd10ad9e8 Binary files /dev/null and b/public/terrain/19/858534/353839.terrain differ diff --git a/public/terrain/19/858534/353840.terrain b/public/terrain/19/858534/353840.terrain new file mode 100644 index 000000000..041ee4703 Binary files /dev/null and b/public/terrain/19/858534/353840.terrain differ diff --git a/public/terrain/19/858534/353841.terrain b/public/terrain/19/858534/353841.terrain new file mode 100644 index 000000000..e03536450 Binary files /dev/null and b/public/terrain/19/858534/353841.terrain differ diff --git a/public/terrain/19/858534/353842.terrain b/public/terrain/19/858534/353842.terrain new file mode 100644 index 000000000..114bad609 Binary files /dev/null and b/public/terrain/19/858534/353842.terrain differ diff --git a/public/terrain/19/858534/353843.terrain b/public/terrain/19/858534/353843.terrain new file mode 100644 index 000000000..d8d98e674 Binary files /dev/null and b/public/terrain/19/858534/353843.terrain differ diff --git a/public/terrain/19/858534/353844.terrain b/public/terrain/19/858534/353844.terrain new file mode 100644 index 000000000..13e620425 Binary files /dev/null and b/public/terrain/19/858534/353844.terrain differ diff --git a/public/terrain/19/858534/353845.terrain b/public/terrain/19/858534/353845.terrain new file mode 100644 index 000000000..cc17e9117 Binary files /dev/null and b/public/terrain/19/858534/353845.terrain differ diff --git a/public/terrain/19/858534/353846.terrain b/public/terrain/19/858534/353846.terrain new file mode 100644 index 000000000..02576936d Binary files /dev/null and b/public/terrain/19/858534/353846.terrain differ diff --git a/public/terrain/19/858534/353847.terrain b/public/terrain/19/858534/353847.terrain new file mode 100644 index 000000000..7ecc58d71 Binary files /dev/null and b/public/terrain/19/858534/353847.terrain differ diff --git a/public/terrain/19/858534/353848.terrain b/public/terrain/19/858534/353848.terrain new file mode 100644 index 000000000..e81d2f0ad Binary files /dev/null and b/public/terrain/19/858534/353848.terrain differ diff --git a/public/terrain/19/858534/353849.terrain b/public/terrain/19/858534/353849.terrain new file mode 100644 index 000000000..2638f4ced Binary files /dev/null and b/public/terrain/19/858534/353849.terrain differ diff --git a/public/terrain/19/858534/353850.terrain b/public/terrain/19/858534/353850.terrain new file mode 100644 index 000000000..95f3bb36a Binary files /dev/null and b/public/terrain/19/858534/353850.terrain differ diff --git a/public/terrain/19/858534/353851.terrain b/public/terrain/19/858534/353851.terrain new file mode 100644 index 000000000..1b67f90f1 Binary files /dev/null and b/public/terrain/19/858534/353851.terrain differ diff --git a/public/terrain/19/858534/353852.terrain b/public/terrain/19/858534/353852.terrain new file mode 100644 index 000000000..41b1fbf78 Binary files /dev/null and b/public/terrain/19/858534/353852.terrain differ diff --git a/public/terrain/19/858534/353853.terrain b/public/terrain/19/858534/353853.terrain new file mode 100644 index 000000000..a6cd29801 Binary files /dev/null and b/public/terrain/19/858534/353853.terrain differ diff --git a/public/terrain/19/858534/353854.terrain b/public/terrain/19/858534/353854.terrain new file mode 100644 index 000000000..ff5284810 Binary files /dev/null and b/public/terrain/19/858534/353854.terrain differ diff --git a/public/terrain/19/858534/353855.terrain b/public/terrain/19/858534/353855.terrain new file mode 100644 index 000000000..7abf59813 Binary files /dev/null and b/public/terrain/19/858534/353855.terrain differ diff --git a/public/terrain/19/858534/353856.terrain b/public/terrain/19/858534/353856.terrain new file mode 100644 index 000000000..d43de59ff Binary files /dev/null and b/public/terrain/19/858534/353856.terrain differ diff --git a/public/terrain/19/858534/353857.terrain b/public/terrain/19/858534/353857.terrain new file mode 100644 index 000000000..3ea8783bb Binary files /dev/null and b/public/terrain/19/858534/353857.terrain differ diff --git a/public/terrain/19/858534/353858.terrain b/public/terrain/19/858534/353858.terrain new file mode 100644 index 000000000..b0c28d4ee Binary files /dev/null and b/public/terrain/19/858534/353858.terrain differ diff --git a/public/terrain/19/858534/353859.terrain b/public/terrain/19/858534/353859.terrain new file mode 100644 index 000000000..a127072e4 Binary files /dev/null and b/public/terrain/19/858534/353859.terrain differ diff --git a/public/terrain/19/858534/353860.terrain b/public/terrain/19/858534/353860.terrain new file mode 100644 index 000000000..e17d55f72 Binary files /dev/null and b/public/terrain/19/858534/353860.terrain differ diff --git a/public/terrain/19/858534/353861.terrain b/public/terrain/19/858534/353861.terrain new file mode 100644 index 000000000..ea407eca6 Binary files /dev/null and b/public/terrain/19/858534/353861.terrain differ diff --git a/public/terrain/19/858534/353862.terrain b/public/terrain/19/858534/353862.terrain new file mode 100644 index 000000000..023525153 Binary files /dev/null and b/public/terrain/19/858534/353862.terrain differ diff --git a/public/terrain/19/858534/353863.terrain b/public/terrain/19/858534/353863.terrain new file mode 100644 index 000000000..7cf03470b Binary files /dev/null and b/public/terrain/19/858534/353863.terrain differ diff --git a/public/terrain/19/858534/353864.terrain b/public/terrain/19/858534/353864.terrain new file mode 100644 index 000000000..9becfd482 Binary files /dev/null and b/public/terrain/19/858534/353864.terrain differ diff --git a/public/terrain/19/858534/353865.terrain b/public/terrain/19/858534/353865.terrain new file mode 100644 index 000000000..8f23a7f85 Binary files /dev/null and b/public/terrain/19/858534/353865.terrain differ diff --git a/public/terrain/19/858534/353866.terrain b/public/terrain/19/858534/353866.terrain new file mode 100644 index 000000000..a57f9a14b Binary files /dev/null and b/public/terrain/19/858534/353866.terrain differ diff --git a/public/terrain/19/858534/353867.terrain b/public/terrain/19/858534/353867.terrain new file mode 100644 index 000000000..b077d3b2a Binary files /dev/null and b/public/terrain/19/858534/353867.terrain differ diff --git a/public/terrain/19/858534/353868.terrain b/public/terrain/19/858534/353868.terrain new file mode 100644 index 000000000..750ad3e0f Binary files /dev/null and b/public/terrain/19/858534/353868.terrain differ diff --git a/public/terrain/19/858534/353869.terrain b/public/terrain/19/858534/353869.terrain new file mode 100644 index 000000000..85586b948 Binary files /dev/null and b/public/terrain/19/858534/353869.terrain differ diff --git a/public/terrain/19/858534/353870.terrain b/public/terrain/19/858534/353870.terrain new file mode 100644 index 000000000..c5264e907 Binary files /dev/null and b/public/terrain/19/858534/353870.terrain differ diff --git a/public/terrain/19/858534/353871.terrain b/public/terrain/19/858534/353871.terrain new file mode 100644 index 000000000..61c3065d9 Binary files /dev/null and b/public/terrain/19/858534/353871.terrain differ diff --git a/public/terrain/19/858534/353872.terrain b/public/terrain/19/858534/353872.terrain new file mode 100644 index 000000000..1b319eb03 Binary files /dev/null and b/public/terrain/19/858534/353872.terrain differ diff --git a/public/terrain/19/858534/353873.terrain b/public/terrain/19/858534/353873.terrain new file mode 100644 index 000000000..dd801bbfa Binary files /dev/null and b/public/terrain/19/858534/353873.terrain differ diff --git a/public/terrain/19/858534/353874.terrain b/public/terrain/19/858534/353874.terrain new file mode 100644 index 000000000..46bcb034e Binary files /dev/null and b/public/terrain/19/858534/353874.terrain differ diff --git a/public/terrain/19/858534/353875.terrain b/public/terrain/19/858534/353875.terrain new file mode 100644 index 000000000..58683744b Binary files /dev/null and b/public/terrain/19/858534/353875.terrain differ diff --git a/public/terrain/19/858534/353876.terrain b/public/terrain/19/858534/353876.terrain new file mode 100644 index 000000000..44ced2b77 Binary files /dev/null and b/public/terrain/19/858534/353876.terrain differ diff --git a/public/terrain/19/858534/353877.terrain b/public/terrain/19/858534/353877.terrain new file mode 100644 index 000000000..acd90a439 Binary files /dev/null and b/public/terrain/19/858534/353877.terrain differ diff --git a/public/terrain/19/858534/353878.terrain b/public/terrain/19/858534/353878.terrain new file mode 100644 index 000000000..074ffde05 Binary files /dev/null and b/public/terrain/19/858534/353878.terrain differ diff --git a/public/terrain/19/858534/353879.terrain b/public/terrain/19/858534/353879.terrain new file mode 100644 index 000000000..28a001c07 Binary files /dev/null and b/public/terrain/19/858534/353879.terrain differ diff --git a/public/terrain/19/858534/353880.terrain b/public/terrain/19/858534/353880.terrain new file mode 100644 index 000000000..d65c16f58 Binary files /dev/null and b/public/terrain/19/858534/353880.terrain differ diff --git a/public/terrain/19/858534/353881.terrain b/public/terrain/19/858534/353881.terrain new file mode 100644 index 000000000..63cff347c Binary files /dev/null and b/public/terrain/19/858534/353881.terrain differ diff --git a/public/terrain/19/858534/353882.terrain b/public/terrain/19/858534/353882.terrain new file mode 100644 index 000000000..81cd91896 Binary files /dev/null and b/public/terrain/19/858534/353882.terrain differ diff --git a/public/terrain/19/858534/353883.terrain b/public/terrain/19/858534/353883.terrain new file mode 100644 index 000000000..1c89a3a00 Binary files /dev/null and b/public/terrain/19/858534/353883.terrain differ diff --git a/public/terrain/19/858534/353884.terrain b/public/terrain/19/858534/353884.terrain new file mode 100644 index 000000000..4242af68f Binary files /dev/null and b/public/terrain/19/858534/353884.terrain differ diff --git a/public/terrain/19/858534/353885.terrain b/public/terrain/19/858534/353885.terrain new file mode 100644 index 000000000..2c77d6219 Binary files /dev/null and b/public/terrain/19/858534/353885.terrain differ diff --git a/public/terrain/19/858534/353886.terrain b/public/terrain/19/858534/353886.terrain new file mode 100644 index 000000000..70afd26e5 Binary files /dev/null and b/public/terrain/19/858534/353886.terrain differ diff --git a/public/terrain/19/858534/353887.terrain b/public/terrain/19/858534/353887.terrain new file mode 100644 index 000000000..f34e24153 Binary files /dev/null and b/public/terrain/19/858534/353887.terrain differ diff --git a/public/terrain/19/858534/353888.terrain b/public/terrain/19/858534/353888.terrain new file mode 100644 index 000000000..7c38e439c Binary files /dev/null and b/public/terrain/19/858534/353888.terrain differ diff --git a/public/terrain/19/858534/353889.terrain b/public/terrain/19/858534/353889.terrain new file mode 100644 index 000000000..b815565e7 Binary files /dev/null and b/public/terrain/19/858534/353889.terrain differ diff --git a/public/terrain/19/858534/353890.terrain b/public/terrain/19/858534/353890.terrain new file mode 100644 index 000000000..15cabd041 Binary files /dev/null and b/public/terrain/19/858534/353890.terrain differ diff --git a/public/terrain/19/858534/353891.terrain b/public/terrain/19/858534/353891.terrain new file mode 100644 index 000000000..5c6689afb Binary files /dev/null and b/public/terrain/19/858534/353891.terrain differ diff --git a/public/terrain/19/858534/353892.terrain b/public/terrain/19/858534/353892.terrain new file mode 100644 index 000000000..72fffe260 Binary files /dev/null and b/public/terrain/19/858534/353892.terrain differ diff --git a/public/terrain/19/858534/353893.terrain b/public/terrain/19/858534/353893.terrain new file mode 100644 index 000000000..49124f8b3 Binary files /dev/null and b/public/terrain/19/858534/353893.terrain differ diff --git a/public/terrain/19/858534/353894.terrain b/public/terrain/19/858534/353894.terrain new file mode 100644 index 000000000..61c83553a Binary files /dev/null and b/public/terrain/19/858534/353894.terrain differ diff --git a/public/terrain/19/858534/353895.terrain b/public/terrain/19/858534/353895.terrain new file mode 100644 index 000000000..b5035c88e Binary files /dev/null and b/public/terrain/19/858534/353895.terrain differ diff --git a/public/terrain/19/858534/353896.terrain b/public/terrain/19/858534/353896.terrain new file mode 100644 index 000000000..e55939f36 Binary files /dev/null and b/public/terrain/19/858534/353896.terrain differ diff --git a/public/terrain/19/858534/353897.terrain b/public/terrain/19/858534/353897.terrain new file mode 100644 index 000000000..62ce7b410 Binary files /dev/null and b/public/terrain/19/858534/353897.terrain differ diff --git a/public/terrain/19/858534/353898.terrain b/public/terrain/19/858534/353898.terrain new file mode 100644 index 000000000..9766cb97a Binary files /dev/null and b/public/terrain/19/858534/353898.terrain differ diff --git a/public/terrain/19/858534/353899.terrain b/public/terrain/19/858534/353899.terrain new file mode 100644 index 000000000..5eef13518 Binary files /dev/null and b/public/terrain/19/858534/353899.terrain differ diff --git a/public/terrain/19/858534/353900.terrain b/public/terrain/19/858534/353900.terrain new file mode 100644 index 000000000..e5691d0fe Binary files /dev/null and b/public/terrain/19/858534/353900.terrain differ diff --git a/public/terrain/19/858534/353901.terrain b/public/terrain/19/858534/353901.terrain new file mode 100644 index 000000000..b8f262c84 Binary files /dev/null and b/public/terrain/19/858534/353901.terrain differ diff --git a/public/terrain/19/858534/353902.terrain b/public/terrain/19/858534/353902.terrain new file mode 100644 index 000000000..f22bfe33a Binary files /dev/null and b/public/terrain/19/858534/353902.terrain differ diff --git a/public/terrain/19/858534/353903.terrain b/public/terrain/19/858534/353903.terrain new file mode 100644 index 000000000..67fbda3b7 Binary files /dev/null and b/public/terrain/19/858534/353903.terrain differ diff --git a/public/terrain/19/858534/353904.terrain b/public/terrain/19/858534/353904.terrain new file mode 100644 index 000000000..ec4aacd31 Binary files /dev/null and b/public/terrain/19/858534/353904.terrain differ diff --git a/public/terrain/19/858534/353905.terrain b/public/terrain/19/858534/353905.terrain new file mode 100644 index 000000000..127c03bdb Binary files /dev/null and b/public/terrain/19/858534/353905.terrain differ diff --git a/public/terrain/19/858534/353906.terrain b/public/terrain/19/858534/353906.terrain new file mode 100644 index 000000000..450a47691 Binary files /dev/null and b/public/terrain/19/858534/353906.terrain differ diff --git a/public/terrain/19/858534/353907.terrain b/public/terrain/19/858534/353907.terrain new file mode 100644 index 000000000..e5c26b2c0 Binary files /dev/null and b/public/terrain/19/858534/353907.terrain differ diff --git a/public/terrain/19/858534/353908.terrain b/public/terrain/19/858534/353908.terrain new file mode 100644 index 000000000..e878a4fc0 Binary files /dev/null and b/public/terrain/19/858534/353908.terrain differ diff --git a/public/terrain/19/858534/353909.terrain b/public/terrain/19/858534/353909.terrain new file mode 100644 index 000000000..aecc32a70 Binary files /dev/null and b/public/terrain/19/858534/353909.terrain differ diff --git a/public/terrain/19/858534/353910.terrain b/public/terrain/19/858534/353910.terrain new file mode 100644 index 000000000..cd3be1c2d Binary files /dev/null and b/public/terrain/19/858534/353910.terrain differ diff --git a/public/terrain/19/858534/353911.terrain b/public/terrain/19/858534/353911.terrain new file mode 100644 index 000000000..31e62a32c Binary files /dev/null and b/public/terrain/19/858534/353911.terrain differ diff --git a/public/terrain/19/858534/353912.terrain b/public/terrain/19/858534/353912.terrain new file mode 100644 index 000000000..918b5aa79 Binary files /dev/null and b/public/terrain/19/858534/353912.terrain differ diff --git a/public/terrain/19/858534/353913.terrain b/public/terrain/19/858534/353913.terrain new file mode 100644 index 000000000..a0e0a7014 Binary files /dev/null and b/public/terrain/19/858534/353913.terrain differ diff --git a/public/terrain/19/858534/353914.terrain b/public/terrain/19/858534/353914.terrain new file mode 100644 index 000000000..cb43e2331 Binary files /dev/null and b/public/terrain/19/858534/353914.terrain differ diff --git a/public/terrain/19/858534/353915.terrain b/public/terrain/19/858534/353915.terrain new file mode 100644 index 000000000..9c76b5826 Binary files /dev/null and b/public/terrain/19/858534/353915.terrain differ diff --git a/public/terrain/19/858534/353916.terrain b/public/terrain/19/858534/353916.terrain new file mode 100644 index 000000000..efb9c02d5 Binary files /dev/null and b/public/terrain/19/858534/353916.terrain differ diff --git a/public/terrain/19/858534/353917.terrain b/public/terrain/19/858534/353917.terrain new file mode 100644 index 000000000..006a52322 Binary files /dev/null and b/public/terrain/19/858534/353917.terrain differ diff --git a/public/terrain/19/858534/353918.terrain b/public/terrain/19/858534/353918.terrain new file mode 100644 index 000000000..db231292c Binary files /dev/null and b/public/terrain/19/858534/353918.terrain differ diff --git a/public/terrain/19/858534/353919.terrain b/public/terrain/19/858534/353919.terrain new file mode 100644 index 000000000..5de5f3e26 Binary files /dev/null and b/public/terrain/19/858534/353919.terrain differ diff --git a/public/terrain/19/858534/353920.terrain b/public/terrain/19/858534/353920.terrain new file mode 100644 index 000000000..4195e1150 Binary files /dev/null and b/public/terrain/19/858534/353920.terrain differ diff --git a/public/terrain/19/858534/353921.terrain b/public/terrain/19/858534/353921.terrain new file mode 100644 index 000000000..4a7562154 Binary files /dev/null and b/public/terrain/19/858534/353921.terrain differ diff --git a/public/terrain/19/858534/353922.terrain b/public/terrain/19/858534/353922.terrain new file mode 100644 index 000000000..020965316 Binary files /dev/null and b/public/terrain/19/858534/353922.terrain differ diff --git a/public/terrain/19/858534/353923.terrain b/public/terrain/19/858534/353923.terrain new file mode 100644 index 000000000..83f6868a1 Binary files /dev/null and b/public/terrain/19/858534/353923.terrain differ diff --git a/public/terrain/19/858534/353924.terrain b/public/terrain/19/858534/353924.terrain new file mode 100644 index 000000000..6b9290508 Binary files /dev/null and b/public/terrain/19/858534/353924.terrain differ diff --git a/public/terrain/19/858534/353925.terrain b/public/terrain/19/858534/353925.terrain new file mode 100644 index 000000000..24e553790 Binary files /dev/null and b/public/terrain/19/858534/353925.terrain differ diff --git a/public/terrain/19/858534/353926.terrain b/public/terrain/19/858534/353926.terrain new file mode 100644 index 000000000..e019f16b0 Binary files /dev/null and b/public/terrain/19/858534/353926.terrain differ diff --git a/public/terrain/19/858534/353927.terrain b/public/terrain/19/858534/353927.terrain new file mode 100644 index 000000000..d25443f80 Binary files /dev/null and b/public/terrain/19/858534/353927.terrain differ diff --git a/public/terrain/19/858534/353928.terrain b/public/terrain/19/858534/353928.terrain new file mode 100644 index 000000000..8f3d60a00 Binary files /dev/null and b/public/terrain/19/858534/353928.terrain differ diff --git a/public/terrain/19/858534/353929.terrain b/public/terrain/19/858534/353929.terrain new file mode 100644 index 000000000..639355b7b Binary files /dev/null and b/public/terrain/19/858534/353929.terrain differ diff --git a/public/terrain/19/858534/353930.terrain b/public/terrain/19/858534/353930.terrain new file mode 100644 index 000000000..f9b8f4576 Binary files /dev/null and b/public/terrain/19/858534/353930.terrain differ diff --git a/public/terrain/19/858534/353931.terrain b/public/terrain/19/858534/353931.terrain new file mode 100644 index 000000000..965998419 Binary files /dev/null and b/public/terrain/19/858534/353931.terrain differ diff --git a/public/terrain/19/858534/353932.terrain b/public/terrain/19/858534/353932.terrain new file mode 100644 index 000000000..0c129e173 Binary files /dev/null and b/public/terrain/19/858534/353932.terrain differ diff --git a/public/terrain/19/858534/353933.terrain b/public/terrain/19/858534/353933.terrain new file mode 100644 index 000000000..2558fb8b2 Binary files /dev/null and b/public/terrain/19/858534/353933.terrain differ diff --git a/public/terrain/19/858534/353934.terrain b/public/terrain/19/858534/353934.terrain new file mode 100644 index 000000000..a04c40f7e Binary files /dev/null and b/public/terrain/19/858534/353934.terrain differ diff --git a/public/terrain/19/858534/353935.terrain b/public/terrain/19/858534/353935.terrain new file mode 100644 index 000000000..7afb94a56 Binary files /dev/null and b/public/terrain/19/858534/353935.terrain differ diff --git a/public/terrain/19/858534/353936.terrain b/public/terrain/19/858534/353936.terrain new file mode 100644 index 000000000..a78ae52d9 Binary files /dev/null and b/public/terrain/19/858534/353936.terrain differ diff --git a/public/terrain/19/858534/353937.terrain b/public/terrain/19/858534/353937.terrain new file mode 100644 index 000000000..410562199 Binary files /dev/null and b/public/terrain/19/858534/353937.terrain differ diff --git a/public/terrain/19/858534/353938.terrain b/public/terrain/19/858534/353938.terrain new file mode 100644 index 000000000..f831030b4 Binary files /dev/null and b/public/terrain/19/858534/353938.terrain differ diff --git a/public/terrain/19/858534/353939.terrain b/public/terrain/19/858534/353939.terrain new file mode 100644 index 000000000..e236524a1 Binary files /dev/null and b/public/terrain/19/858534/353939.terrain differ diff --git a/public/terrain/19/858534/353940.terrain b/public/terrain/19/858534/353940.terrain new file mode 100644 index 000000000..6200adfe0 Binary files /dev/null and b/public/terrain/19/858534/353940.terrain differ diff --git a/public/terrain/19/858534/353941.terrain b/public/terrain/19/858534/353941.terrain new file mode 100644 index 000000000..b23f61a9d Binary files /dev/null and b/public/terrain/19/858534/353941.terrain differ diff --git a/public/terrain/19/858534/353942.terrain b/public/terrain/19/858534/353942.terrain new file mode 100644 index 000000000..01c7d1b85 Binary files /dev/null and b/public/terrain/19/858534/353942.terrain differ diff --git a/public/terrain/19/858534/353943.terrain b/public/terrain/19/858534/353943.terrain new file mode 100644 index 000000000..35c3a4c53 Binary files /dev/null and b/public/terrain/19/858534/353943.terrain differ diff --git a/public/terrain/19/858534/353944.terrain b/public/terrain/19/858534/353944.terrain new file mode 100644 index 000000000..27a135168 Binary files /dev/null and b/public/terrain/19/858534/353944.terrain differ diff --git a/public/terrain/19/858534/353945.terrain b/public/terrain/19/858534/353945.terrain new file mode 100644 index 000000000..e3ec998c4 Binary files /dev/null and b/public/terrain/19/858534/353945.terrain differ diff --git a/public/terrain/19/858534/353946.terrain b/public/terrain/19/858534/353946.terrain new file mode 100644 index 000000000..93840f5aa Binary files /dev/null and b/public/terrain/19/858534/353946.terrain differ diff --git a/public/terrain/19/858534/353947.terrain b/public/terrain/19/858534/353947.terrain new file mode 100644 index 000000000..928c62221 Binary files /dev/null and b/public/terrain/19/858534/353947.terrain differ diff --git a/public/terrain/19/858534/353948.terrain b/public/terrain/19/858534/353948.terrain new file mode 100644 index 000000000..b42c155c2 Binary files /dev/null and b/public/terrain/19/858534/353948.terrain differ diff --git a/public/terrain/19/858534/353949.terrain b/public/terrain/19/858534/353949.terrain new file mode 100644 index 000000000..f0ccfc616 Binary files /dev/null and b/public/terrain/19/858534/353949.terrain differ diff --git a/public/terrain/19/858534/353950.terrain b/public/terrain/19/858534/353950.terrain new file mode 100644 index 000000000..10bab1a9a Binary files /dev/null and b/public/terrain/19/858534/353950.terrain differ diff --git a/public/terrain/19/858534/353951.terrain b/public/terrain/19/858534/353951.terrain new file mode 100644 index 000000000..af72a1128 Binary files /dev/null and b/public/terrain/19/858534/353951.terrain differ diff --git a/public/terrain/19/858534/353952.terrain b/public/terrain/19/858534/353952.terrain new file mode 100644 index 000000000..0a7c99668 Binary files /dev/null and b/public/terrain/19/858534/353952.terrain differ diff --git a/public/terrain/19/858534/353953.terrain b/public/terrain/19/858534/353953.terrain new file mode 100644 index 000000000..ae1c9969c Binary files /dev/null and b/public/terrain/19/858534/353953.terrain differ diff --git a/public/terrain/19/858534/353954.terrain b/public/terrain/19/858534/353954.terrain new file mode 100644 index 000000000..4ef63c509 Binary files /dev/null and b/public/terrain/19/858534/353954.terrain differ diff --git a/public/terrain/19/858534/353955.terrain b/public/terrain/19/858534/353955.terrain new file mode 100644 index 000000000..d986e9229 Binary files /dev/null and b/public/terrain/19/858534/353955.terrain differ diff --git a/public/terrain/19/858534/353956.terrain b/public/terrain/19/858534/353956.terrain new file mode 100644 index 000000000..6302fe3c1 Binary files /dev/null and b/public/terrain/19/858534/353956.terrain differ diff --git a/public/terrain/19/858534/353957.terrain b/public/terrain/19/858534/353957.terrain new file mode 100644 index 000000000..591821caf Binary files /dev/null and b/public/terrain/19/858534/353957.terrain differ diff --git a/public/terrain/19/858534/353958.terrain b/public/terrain/19/858534/353958.terrain new file mode 100644 index 000000000..4bd0ead59 Binary files /dev/null and b/public/terrain/19/858534/353958.terrain differ diff --git a/public/terrain/19/858534/353959.terrain b/public/terrain/19/858534/353959.terrain new file mode 100644 index 000000000..12ecd2610 Binary files /dev/null and b/public/terrain/19/858534/353959.terrain differ diff --git a/public/terrain/19/858534/353960.terrain b/public/terrain/19/858534/353960.terrain new file mode 100644 index 000000000..7c86ce61f Binary files /dev/null and b/public/terrain/19/858534/353960.terrain differ diff --git a/public/terrain/19/858534/353961.terrain b/public/terrain/19/858534/353961.terrain new file mode 100644 index 000000000..ee7b8296a Binary files /dev/null and b/public/terrain/19/858534/353961.terrain differ diff --git a/public/terrain/19/858534/353962.terrain b/public/terrain/19/858534/353962.terrain new file mode 100644 index 000000000..099bcfb73 Binary files /dev/null and b/public/terrain/19/858534/353962.terrain differ diff --git a/public/terrain/19/858534/353963.terrain b/public/terrain/19/858534/353963.terrain new file mode 100644 index 000000000..473a0ad25 Binary files /dev/null and b/public/terrain/19/858534/353963.terrain differ diff --git a/public/terrain/19/858534/353964.terrain b/public/terrain/19/858534/353964.terrain new file mode 100644 index 000000000..088608a4f Binary files /dev/null and b/public/terrain/19/858534/353964.terrain differ diff --git a/public/terrain/19/858534/353965.terrain b/public/terrain/19/858534/353965.terrain new file mode 100644 index 000000000..fce72b23d Binary files /dev/null and b/public/terrain/19/858534/353965.terrain differ diff --git a/public/terrain/19/858534/353966.terrain b/public/terrain/19/858534/353966.terrain new file mode 100644 index 000000000..b4b53ef5b Binary files /dev/null and b/public/terrain/19/858534/353966.terrain differ diff --git a/public/terrain/19/858534/353967.terrain b/public/terrain/19/858534/353967.terrain new file mode 100644 index 000000000..95a8183f9 Binary files /dev/null and b/public/terrain/19/858534/353967.terrain differ diff --git a/public/terrain/19/858534/353968.terrain b/public/terrain/19/858534/353968.terrain new file mode 100644 index 000000000..00085fc12 Binary files /dev/null and b/public/terrain/19/858534/353968.terrain differ diff --git a/public/terrain/19/858534/353969.terrain b/public/terrain/19/858534/353969.terrain new file mode 100644 index 000000000..4fc1c1648 Binary files /dev/null and b/public/terrain/19/858534/353969.terrain differ diff --git a/public/terrain/19/858534/353970.terrain b/public/terrain/19/858534/353970.terrain new file mode 100644 index 000000000..baaa35383 Binary files /dev/null and b/public/terrain/19/858534/353970.terrain differ diff --git a/public/terrain/19/858534/353971.terrain b/public/terrain/19/858534/353971.terrain new file mode 100644 index 000000000..c363ef6c2 Binary files /dev/null and b/public/terrain/19/858534/353971.terrain differ diff --git a/public/terrain/19/858534/353972.terrain b/public/terrain/19/858534/353972.terrain new file mode 100644 index 000000000..02ecbb21c Binary files /dev/null and b/public/terrain/19/858534/353972.terrain differ diff --git a/public/terrain/19/858534/353973.terrain b/public/terrain/19/858534/353973.terrain new file mode 100644 index 000000000..4c8efd9e3 Binary files /dev/null and b/public/terrain/19/858534/353973.terrain differ diff --git a/public/terrain/19/858534/353974.terrain b/public/terrain/19/858534/353974.terrain new file mode 100644 index 000000000..7fd4d33a3 Binary files /dev/null and b/public/terrain/19/858534/353974.terrain differ diff --git a/public/terrain/19/858534/353975.terrain b/public/terrain/19/858534/353975.terrain new file mode 100644 index 000000000..703e13a17 Binary files /dev/null and b/public/terrain/19/858534/353975.terrain differ diff --git a/public/terrain/19/858534/353976.terrain b/public/terrain/19/858534/353976.terrain new file mode 100644 index 000000000..4e8cda558 Binary files /dev/null and b/public/terrain/19/858534/353976.terrain differ diff --git a/public/terrain/19/858534/353977.terrain b/public/terrain/19/858534/353977.terrain new file mode 100644 index 000000000..ade329aed Binary files /dev/null and b/public/terrain/19/858534/353977.terrain differ diff --git a/public/terrain/19/858534/353978.terrain b/public/terrain/19/858534/353978.terrain new file mode 100644 index 000000000..16ac24fb3 Binary files /dev/null and b/public/terrain/19/858534/353978.terrain differ diff --git a/public/terrain/19/858534/353979.terrain b/public/terrain/19/858534/353979.terrain new file mode 100644 index 000000000..a33ef83de Binary files /dev/null and b/public/terrain/19/858534/353979.terrain differ diff --git a/public/terrain/19/858534/353980.terrain b/public/terrain/19/858534/353980.terrain new file mode 100644 index 000000000..db1ca25a3 Binary files /dev/null and b/public/terrain/19/858534/353980.terrain differ diff --git a/public/terrain/19/858534/353981.terrain b/public/terrain/19/858534/353981.terrain new file mode 100644 index 000000000..7fcf0f823 Binary files /dev/null and b/public/terrain/19/858534/353981.terrain differ diff --git a/public/terrain/19/858534/353982.terrain b/public/terrain/19/858534/353982.terrain new file mode 100644 index 000000000..68a38ac6a Binary files /dev/null and b/public/terrain/19/858534/353982.terrain differ diff --git a/public/terrain/19/858534/353983.terrain b/public/terrain/19/858534/353983.terrain new file mode 100644 index 000000000..fbc142e1a Binary files /dev/null and b/public/terrain/19/858534/353983.terrain differ diff --git a/public/terrain/19/858534/353984.terrain b/public/terrain/19/858534/353984.terrain new file mode 100644 index 000000000..5245ff1bf Binary files /dev/null and b/public/terrain/19/858534/353984.terrain differ diff --git a/public/terrain/19/858534/353985.terrain b/public/terrain/19/858534/353985.terrain new file mode 100644 index 000000000..d65cf0029 Binary files /dev/null and b/public/terrain/19/858534/353985.terrain differ diff --git a/public/terrain/19/858534/353986.terrain b/public/terrain/19/858534/353986.terrain new file mode 100644 index 000000000..ec77934e6 Binary files /dev/null and b/public/terrain/19/858534/353986.terrain differ diff --git a/public/terrain/19/858534/353987.terrain b/public/terrain/19/858534/353987.terrain new file mode 100644 index 000000000..d9b80066f Binary files /dev/null and b/public/terrain/19/858534/353987.terrain differ diff --git a/public/terrain/19/858534/353988.terrain b/public/terrain/19/858534/353988.terrain new file mode 100644 index 000000000..52004dfa2 Binary files /dev/null and b/public/terrain/19/858534/353988.terrain differ diff --git a/public/terrain/19/858534/353989.terrain b/public/terrain/19/858534/353989.terrain new file mode 100644 index 000000000..0b02e38c5 Binary files /dev/null and b/public/terrain/19/858534/353989.terrain differ diff --git a/public/terrain/19/858534/353990.terrain b/public/terrain/19/858534/353990.terrain new file mode 100644 index 000000000..f037dbaca Binary files /dev/null and b/public/terrain/19/858534/353990.terrain differ diff --git a/public/terrain/19/858534/353991.terrain b/public/terrain/19/858534/353991.terrain new file mode 100644 index 000000000..3a4488d91 Binary files /dev/null and b/public/terrain/19/858534/353991.terrain differ diff --git a/public/terrain/19/858534/353992.terrain b/public/terrain/19/858534/353992.terrain new file mode 100644 index 000000000..5cb1f973c Binary files /dev/null and b/public/terrain/19/858534/353992.terrain differ diff --git a/public/terrain/19/858534/353993.terrain b/public/terrain/19/858534/353993.terrain new file mode 100644 index 000000000..2b1ecee08 Binary files /dev/null and b/public/terrain/19/858534/353993.terrain differ diff --git a/public/terrain/19/858534/353994.terrain b/public/terrain/19/858534/353994.terrain new file mode 100644 index 000000000..a2c05c143 Binary files /dev/null and b/public/terrain/19/858534/353994.terrain differ diff --git a/public/terrain/19/858534/353995.terrain b/public/terrain/19/858534/353995.terrain new file mode 100644 index 000000000..d2d035936 Binary files /dev/null and b/public/terrain/19/858534/353995.terrain differ diff --git a/public/terrain/19/858534/353996.terrain b/public/terrain/19/858534/353996.terrain new file mode 100644 index 000000000..02364924f Binary files /dev/null and b/public/terrain/19/858534/353996.terrain differ diff --git a/public/terrain/19/858534/353997.terrain b/public/terrain/19/858534/353997.terrain new file mode 100644 index 000000000..57fa93287 Binary files /dev/null and b/public/terrain/19/858534/353997.terrain differ diff --git a/public/terrain/19/858534/353998.terrain b/public/terrain/19/858534/353998.terrain new file mode 100644 index 000000000..da4043ac4 Binary files /dev/null and b/public/terrain/19/858534/353998.terrain differ diff --git a/public/terrain/19/858534/353999.terrain b/public/terrain/19/858534/353999.terrain new file mode 100644 index 000000000..17fed9239 Binary files /dev/null and b/public/terrain/19/858534/353999.terrain differ diff --git a/public/terrain/19/858534/354000.terrain b/public/terrain/19/858534/354000.terrain new file mode 100644 index 000000000..132fdc6c3 Binary files /dev/null and b/public/terrain/19/858534/354000.terrain differ diff --git a/public/terrain/19/858534/354001.terrain b/public/terrain/19/858534/354001.terrain new file mode 100644 index 000000000..0303d06c8 Binary files /dev/null and b/public/terrain/19/858534/354001.terrain differ diff --git a/public/terrain/19/858534/354002.terrain b/public/terrain/19/858534/354002.terrain new file mode 100644 index 000000000..aeb4af48a Binary files /dev/null and b/public/terrain/19/858534/354002.terrain differ diff --git a/public/terrain/19/858534/354003.terrain b/public/terrain/19/858534/354003.terrain new file mode 100644 index 000000000..8efedaa84 Binary files /dev/null and b/public/terrain/19/858534/354003.terrain differ diff --git a/public/terrain/19/858534/354004.terrain b/public/terrain/19/858534/354004.terrain new file mode 100644 index 000000000..f89b3196f Binary files /dev/null and b/public/terrain/19/858534/354004.terrain differ diff --git a/public/terrain/19/858534/354005.terrain b/public/terrain/19/858534/354005.terrain new file mode 100644 index 000000000..ee33e56f2 Binary files /dev/null and b/public/terrain/19/858534/354005.terrain differ diff --git a/public/terrain/19/858534/354006.terrain b/public/terrain/19/858534/354006.terrain new file mode 100644 index 000000000..9cf9d0960 Binary files /dev/null and b/public/terrain/19/858534/354006.terrain differ diff --git a/public/terrain/19/858534/354007.terrain b/public/terrain/19/858534/354007.terrain new file mode 100644 index 000000000..6fef02850 Binary files /dev/null and b/public/terrain/19/858534/354007.terrain differ diff --git a/public/terrain/19/858534/354008.terrain b/public/terrain/19/858534/354008.terrain new file mode 100644 index 000000000..40c6c1d7a Binary files /dev/null and b/public/terrain/19/858534/354008.terrain differ diff --git a/public/terrain/19/858534/354009.terrain b/public/terrain/19/858534/354009.terrain new file mode 100644 index 000000000..dde536471 Binary files /dev/null and b/public/terrain/19/858534/354009.terrain differ diff --git a/public/terrain/19/858534/354010.terrain b/public/terrain/19/858534/354010.terrain new file mode 100644 index 000000000..0d530a86b Binary files /dev/null and b/public/terrain/19/858534/354010.terrain differ diff --git a/public/terrain/19/858534/354011.terrain b/public/terrain/19/858534/354011.terrain new file mode 100644 index 000000000..d2afcf496 Binary files /dev/null and b/public/terrain/19/858534/354011.terrain differ diff --git a/public/terrain/19/858534/354012.terrain b/public/terrain/19/858534/354012.terrain new file mode 100644 index 000000000..7e033800c Binary files /dev/null and b/public/terrain/19/858534/354012.terrain differ diff --git a/public/terrain/19/858534/354013.terrain b/public/terrain/19/858534/354013.terrain new file mode 100644 index 000000000..559ef2a67 Binary files /dev/null and b/public/terrain/19/858534/354013.terrain differ diff --git a/public/terrain/19/858534/354014.terrain b/public/terrain/19/858534/354014.terrain new file mode 100644 index 000000000..6db831e69 Binary files /dev/null and b/public/terrain/19/858534/354014.terrain differ diff --git a/public/terrain/19/858534/354015.terrain b/public/terrain/19/858534/354015.terrain new file mode 100644 index 000000000..e012bfeaf Binary files /dev/null and b/public/terrain/19/858534/354015.terrain differ diff --git a/public/terrain/19/858534/354016.terrain b/public/terrain/19/858534/354016.terrain new file mode 100644 index 000000000..6ba2c1cda Binary files /dev/null and b/public/terrain/19/858534/354016.terrain differ diff --git a/public/terrain/19/858534/354017.terrain b/public/terrain/19/858534/354017.terrain new file mode 100644 index 000000000..40e20614f Binary files /dev/null and b/public/terrain/19/858534/354017.terrain differ diff --git a/public/terrain/19/858534/354018.terrain b/public/terrain/19/858534/354018.terrain new file mode 100644 index 000000000..dbfab7c34 Binary files /dev/null and b/public/terrain/19/858534/354018.terrain differ diff --git a/public/terrain/19/858534/354019.terrain b/public/terrain/19/858534/354019.terrain new file mode 100644 index 000000000..60984ebb8 Binary files /dev/null and b/public/terrain/19/858534/354019.terrain differ diff --git a/public/terrain/19/858534/354020.terrain b/public/terrain/19/858534/354020.terrain new file mode 100644 index 000000000..e56dcf6de Binary files /dev/null and b/public/terrain/19/858534/354020.terrain differ diff --git a/public/terrain/19/858534/354021.terrain b/public/terrain/19/858534/354021.terrain new file mode 100644 index 000000000..87250f817 Binary files /dev/null and b/public/terrain/19/858534/354021.terrain differ diff --git a/public/terrain/19/858534/354022.terrain b/public/terrain/19/858534/354022.terrain new file mode 100644 index 000000000..6a254f1a3 Binary files /dev/null and b/public/terrain/19/858534/354022.terrain differ diff --git a/public/terrain/19/858534/354023.terrain b/public/terrain/19/858534/354023.terrain new file mode 100644 index 000000000..a531700ad Binary files /dev/null and b/public/terrain/19/858534/354023.terrain differ diff --git a/public/terrain/19/858534/354024.terrain b/public/terrain/19/858534/354024.terrain new file mode 100644 index 000000000..fa4b43e16 Binary files /dev/null and b/public/terrain/19/858534/354024.terrain differ diff --git a/public/terrain/19/858534/354025.terrain b/public/terrain/19/858534/354025.terrain new file mode 100644 index 000000000..1e706cf99 Binary files /dev/null and b/public/terrain/19/858534/354025.terrain differ diff --git a/public/terrain/19/858534/354026.terrain b/public/terrain/19/858534/354026.terrain new file mode 100644 index 000000000..2141ec527 Binary files /dev/null and b/public/terrain/19/858534/354026.terrain differ diff --git a/public/terrain/19/858534/354027.terrain b/public/terrain/19/858534/354027.terrain new file mode 100644 index 000000000..8f06c20e4 Binary files /dev/null and b/public/terrain/19/858534/354027.terrain differ diff --git a/public/terrain/19/858534/354028.terrain b/public/terrain/19/858534/354028.terrain new file mode 100644 index 000000000..3ef766c93 Binary files /dev/null and b/public/terrain/19/858534/354028.terrain differ diff --git a/public/terrain/19/858534/354029.terrain b/public/terrain/19/858534/354029.terrain new file mode 100644 index 000000000..219958139 Binary files /dev/null and b/public/terrain/19/858534/354029.terrain differ diff --git a/public/terrain/19/858534/354030.terrain b/public/terrain/19/858534/354030.terrain new file mode 100644 index 000000000..ba1e7bf89 Binary files /dev/null and b/public/terrain/19/858534/354030.terrain differ diff --git a/public/terrain/19/858534/354031.terrain b/public/terrain/19/858534/354031.terrain new file mode 100644 index 000000000..816a29925 Binary files /dev/null and b/public/terrain/19/858534/354031.terrain differ diff --git a/public/terrain/19/858534/354032.terrain b/public/terrain/19/858534/354032.terrain new file mode 100644 index 000000000..186fef857 Binary files /dev/null and b/public/terrain/19/858534/354032.terrain differ diff --git a/public/terrain/19/858534/354033.terrain b/public/terrain/19/858534/354033.terrain new file mode 100644 index 000000000..f6e4aa9db Binary files /dev/null and b/public/terrain/19/858534/354033.terrain differ diff --git a/public/terrain/19/858534/354034.terrain b/public/terrain/19/858534/354034.terrain new file mode 100644 index 000000000..c29ae7fc2 Binary files /dev/null and b/public/terrain/19/858534/354034.terrain differ diff --git a/public/terrain/19/858534/354035.terrain b/public/terrain/19/858534/354035.terrain new file mode 100644 index 000000000..0cc74e09b Binary files /dev/null and b/public/terrain/19/858534/354035.terrain differ diff --git a/public/terrain/19/858534/354036.terrain b/public/terrain/19/858534/354036.terrain new file mode 100644 index 000000000..223c056be Binary files /dev/null and b/public/terrain/19/858534/354036.terrain differ diff --git a/public/terrain/19/858534/354037.terrain b/public/terrain/19/858534/354037.terrain new file mode 100644 index 000000000..e7c8fd662 Binary files /dev/null and b/public/terrain/19/858534/354037.terrain differ diff --git a/public/terrain/19/858534/354038.terrain b/public/terrain/19/858534/354038.terrain new file mode 100644 index 000000000..5eb5b8676 Binary files /dev/null and b/public/terrain/19/858534/354038.terrain differ diff --git a/public/terrain/19/858534/354039.terrain b/public/terrain/19/858534/354039.terrain new file mode 100644 index 000000000..bc31d98a5 Binary files /dev/null and b/public/terrain/19/858534/354039.terrain differ diff --git a/public/terrain/19/858534/354040.terrain b/public/terrain/19/858534/354040.terrain new file mode 100644 index 000000000..9f17ee607 Binary files /dev/null and b/public/terrain/19/858534/354040.terrain differ diff --git a/public/terrain/19/858534/354041.terrain b/public/terrain/19/858534/354041.terrain new file mode 100644 index 000000000..2e0a9ca77 Binary files /dev/null and b/public/terrain/19/858534/354041.terrain differ diff --git a/public/terrain/19/858534/354042.terrain b/public/terrain/19/858534/354042.terrain new file mode 100644 index 000000000..94ffb313b Binary files /dev/null and b/public/terrain/19/858534/354042.terrain differ diff --git a/public/terrain/19/858534/354043.terrain b/public/terrain/19/858534/354043.terrain new file mode 100644 index 000000000..34d4b8847 Binary files /dev/null and b/public/terrain/19/858534/354043.terrain differ diff --git a/public/terrain/19/858534/354044.terrain b/public/terrain/19/858534/354044.terrain new file mode 100644 index 000000000..f24c58273 Binary files /dev/null and b/public/terrain/19/858534/354044.terrain differ diff --git a/public/terrain/19/858534/354045.terrain b/public/terrain/19/858534/354045.terrain new file mode 100644 index 000000000..6fae8d72a Binary files /dev/null and b/public/terrain/19/858534/354045.terrain differ diff --git a/public/terrain/19/858534/354046.terrain b/public/terrain/19/858534/354046.terrain new file mode 100644 index 000000000..97a2bc97a Binary files /dev/null and b/public/terrain/19/858534/354046.terrain differ diff --git a/public/terrain/19/858534/354047.terrain b/public/terrain/19/858534/354047.terrain new file mode 100644 index 000000000..d50528f49 Binary files /dev/null and b/public/terrain/19/858534/354047.terrain differ diff --git a/public/terrain/19/858534/354048.terrain b/public/terrain/19/858534/354048.terrain new file mode 100644 index 000000000..00c463790 Binary files /dev/null and b/public/terrain/19/858534/354048.terrain differ diff --git a/public/terrain/19/858534/354049.terrain b/public/terrain/19/858534/354049.terrain new file mode 100644 index 000000000..a8528aea9 Binary files /dev/null and b/public/terrain/19/858534/354049.terrain differ diff --git a/public/terrain/19/858534/354050.terrain b/public/terrain/19/858534/354050.terrain new file mode 100644 index 000000000..1ce0d4dab Binary files /dev/null and b/public/terrain/19/858534/354050.terrain differ diff --git a/public/terrain/19/858534/354051.terrain b/public/terrain/19/858534/354051.terrain new file mode 100644 index 000000000..c9aa03c14 Binary files /dev/null and b/public/terrain/19/858534/354051.terrain differ diff --git a/public/terrain/19/858534/354052.terrain b/public/terrain/19/858534/354052.terrain new file mode 100644 index 000000000..5b677beb7 Binary files /dev/null and b/public/terrain/19/858534/354052.terrain differ diff --git a/public/terrain/19/858534/354053.terrain b/public/terrain/19/858534/354053.terrain new file mode 100644 index 000000000..312d33c23 Binary files /dev/null and b/public/terrain/19/858534/354053.terrain differ diff --git a/public/terrain/19/858534/354054.terrain b/public/terrain/19/858534/354054.terrain new file mode 100644 index 000000000..a43b418fc Binary files /dev/null and b/public/terrain/19/858534/354054.terrain differ diff --git a/public/terrain/19/858534/354055.terrain b/public/terrain/19/858534/354055.terrain new file mode 100644 index 000000000..1d5f29174 Binary files /dev/null and b/public/terrain/19/858534/354055.terrain differ diff --git a/public/terrain/19/858534/354056.terrain b/public/terrain/19/858534/354056.terrain new file mode 100644 index 000000000..18a7c0269 Binary files /dev/null and b/public/terrain/19/858534/354056.terrain differ diff --git a/public/terrain/19/858534/354057.terrain b/public/terrain/19/858534/354057.terrain new file mode 100644 index 000000000..e51f964cb Binary files /dev/null and b/public/terrain/19/858534/354057.terrain differ diff --git a/public/terrain/19/858534/354058.terrain b/public/terrain/19/858534/354058.terrain new file mode 100644 index 000000000..2c9f2ebe1 Binary files /dev/null and b/public/terrain/19/858534/354058.terrain differ diff --git a/public/terrain/19/858534/354059.terrain b/public/terrain/19/858534/354059.terrain new file mode 100644 index 000000000..c6beece44 Binary files /dev/null and b/public/terrain/19/858534/354059.terrain differ diff --git a/public/terrain/19/858535/353743.terrain b/public/terrain/19/858535/353743.terrain new file mode 100644 index 000000000..942351382 Binary files /dev/null and b/public/terrain/19/858535/353743.terrain differ diff --git a/public/terrain/19/858535/353744.terrain b/public/terrain/19/858535/353744.terrain new file mode 100644 index 000000000..7da36904c Binary files /dev/null and b/public/terrain/19/858535/353744.terrain differ diff --git a/public/terrain/19/858535/353745.terrain b/public/terrain/19/858535/353745.terrain new file mode 100644 index 000000000..b8a16192a Binary files /dev/null and b/public/terrain/19/858535/353745.terrain differ diff --git a/public/terrain/19/858535/353746.terrain b/public/terrain/19/858535/353746.terrain new file mode 100644 index 000000000..a718f98af Binary files /dev/null and b/public/terrain/19/858535/353746.terrain differ diff --git a/public/terrain/19/858535/353747.terrain b/public/terrain/19/858535/353747.terrain new file mode 100644 index 000000000..9e7f3c759 Binary files /dev/null and b/public/terrain/19/858535/353747.terrain differ diff --git a/public/terrain/19/858535/353748.terrain b/public/terrain/19/858535/353748.terrain new file mode 100644 index 000000000..06a15c3b6 Binary files /dev/null and b/public/terrain/19/858535/353748.terrain differ diff --git a/public/terrain/19/858535/353749.terrain b/public/terrain/19/858535/353749.terrain new file mode 100644 index 000000000..b1fc33763 Binary files /dev/null and b/public/terrain/19/858535/353749.terrain differ diff --git a/public/terrain/19/858535/353750.terrain b/public/terrain/19/858535/353750.terrain new file mode 100644 index 000000000..c1c8058e4 Binary files /dev/null and b/public/terrain/19/858535/353750.terrain differ diff --git a/public/terrain/19/858535/353751.terrain b/public/terrain/19/858535/353751.terrain new file mode 100644 index 000000000..70f2b9254 Binary files /dev/null and b/public/terrain/19/858535/353751.terrain differ diff --git a/public/terrain/19/858535/353752.terrain b/public/terrain/19/858535/353752.terrain new file mode 100644 index 000000000..54a30737d Binary files /dev/null and b/public/terrain/19/858535/353752.terrain differ diff --git a/public/terrain/19/858535/353753.terrain b/public/terrain/19/858535/353753.terrain new file mode 100644 index 000000000..f4fda3f81 Binary files /dev/null and b/public/terrain/19/858535/353753.terrain differ diff --git a/public/terrain/19/858535/353754.terrain b/public/terrain/19/858535/353754.terrain new file mode 100644 index 000000000..f0cc73112 Binary files /dev/null and b/public/terrain/19/858535/353754.terrain differ diff --git a/public/terrain/19/858535/353755.terrain b/public/terrain/19/858535/353755.terrain new file mode 100644 index 000000000..56c155624 Binary files /dev/null and b/public/terrain/19/858535/353755.terrain differ diff --git a/public/terrain/19/858535/353756.terrain b/public/terrain/19/858535/353756.terrain new file mode 100644 index 000000000..860a28271 Binary files /dev/null and b/public/terrain/19/858535/353756.terrain differ diff --git a/public/terrain/19/858535/353757.terrain b/public/terrain/19/858535/353757.terrain new file mode 100644 index 000000000..ec6ff38b1 Binary files /dev/null and b/public/terrain/19/858535/353757.terrain differ diff --git a/public/terrain/19/858535/353758.terrain b/public/terrain/19/858535/353758.terrain new file mode 100644 index 000000000..3548f47c4 Binary files /dev/null and b/public/terrain/19/858535/353758.terrain differ diff --git a/public/terrain/19/858535/353759.terrain b/public/terrain/19/858535/353759.terrain new file mode 100644 index 000000000..a0df47c3d Binary files /dev/null and b/public/terrain/19/858535/353759.terrain differ diff --git a/public/terrain/19/858535/353760.terrain b/public/terrain/19/858535/353760.terrain new file mode 100644 index 000000000..216113f72 Binary files /dev/null and b/public/terrain/19/858535/353760.terrain differ diff --git a/public/terrain/19/858535/353761.terrain b/public/terrain/19/858535/353761.terrain new file mode 100644 index 000000000..cf12b8265 Binary files /dev/null and b/public/terrain/19/858535/353761.terrain differ diff --git a/public/terrain/19/858535/353762.terrain b/public/terrain/19/858535/353762.terrain new file mode 100644 index 000000000..2ac14db5a Binary files /dev/null and b/public/terrain/19/858535/353762.terrain differ diff --git a/public/terrain/19/858535/353763.terrain b/public/terrain/19/858535/353763.terrain new file mode 100644 index 000000000..893e1f99a Binary files /dev/null and b/public/terrain/19/858535/353763.terrain differ diff --git a/public/terrain/19/858535/353764.terrain b/public/terrain/19/858535/353764.terrain new file mode 100644 index 000000000..e970ad331 Binary files /dev/null and b/public/terrain/19/858535/353764.terrain differ diff --git a/public/terrain/19/858535/353765.terrain b/public/terrain/19/858535/353765.terrain new file mode 100644 index 000000000..e1335615d Binary files /dev/null and b/public/terrain/19/858535/353765.terrain differ diff --git a/public/terrain/19/858535/353766.terrain b/public/terrain/19/858535/353766.terrain new file mode 100644 index 000000000..dab4fa0c6 Binary files /dev/null and b/public/terrain/19/858535/353766.terrain differ diff --git a/public/terrain/19/858535/353767.terrain b/public/terrain/19/858535/353767.terrain new file mode 100644 index 000000000..afd821382 Binary files /dev/null and b/public/terrain/19/858535/353767.terrain differ diff --git a/public/terrain/19/858535/353768.terrain b/public/terrain/19/858535/353768.terrain new file mode 100644 index 000000000..5e614a092 Binary files /dev/null and b/public/terrain/19/858535/353768.terrain differ diff --git a/public/terrain/19/858535/353769.terrain b/public/terrain/19/858535/353769.terrain new file mode 100644 index 000000000..451303486 Binary files /dev/null and b/public/terrain/19/858535/353769.terrain differ diff --git a/public/terrain/19/858535/353770.terrain b/public/terrain/19/858535/353770.terrain new file mode 100644 index 000000000..20709872f Binary files /dev/null and b/public/terrain/19/858535/353770.terrain differ diff --git a/public/terrain/19/858535/353771.terrain b/public/terrain/19/858535/353771.terrain new file mode 100644 index 000000000..d5bd4060b Binary files /dev/null and b/public/terrain/19/858535/353771.terrain differ diff --git a/public/terrain/19/858535/353772.terrain b/public/terrain/19/858535/353772.terrain new file mode 100644 index 000000000..686b2f5c1 Binary files /dev/null and b/public/terrain/19/858535/353772.terrain differ diff --git a/public/terrain/19/858535/353773.terrain b/public/terrain/19/858535/353773.terrain new file mode 100644 index 000000000..300b99c4e Binary files /dev/null and b/public/terrain/19/858535/353773.terrain differ diff --git a/public/terrain/19/858535/353774.terrain b/public/terrain/19/858535/353774.terrain new file mode 100644 index 000000000..93a5da7dd Binary files /dev/null and b/public/terrain/19/858535/353774.terrain differ diff --git a/public/terrain/19/858535/353775.terrain b/public/terrain/19/858535/353775.terrain new file mode 100644 index 000000000..7943f944d Binary files /dev/null and b/public/terrain/19/858535/353775.terrain differ diff --git a/public/terrain/19/858535/353776.terrain b/public/terrain/19/858535/353776.terrain new file mode 100644 index 000000000..d3d079078 Binary files /dev/null and b/public/terrain/19/858535/353776.terrain differ diff --git a/public/terrain/19/858535/353777.terrain b/public/terrain/19/858535/353777.terrain new file mode 100644 index 000000000..b1f049c28 Binary files /dev/null and b/public/terrain/19/858535/353777.terrain differ diff --git a/public/terrain/19/858535/353778.terrain b/public/terrain/19/858535/353778.terrain new file mode 100644 index 000000000..157c3f6de Binary files /dev/null and b/public/terrain/19/858535/353778.terrain differ diff --git a/public/terrain/19/858535/353779.terrain b/public/terrain/19/858535/353779.terrain new file mode 100644 index 000000000..7538280f9 Binary files /dev/null and b/public/terrain/19/858535/353779.terrain differ diff --git a/public/terrain/19/858535/353780.terrain b/public/terrain/19/858535/353780.terrain new file mode 100644 index 000000000..640862e52 Binary files /dev/null and b/public/terrain/19/858535/353780.terrain differ diff --git a/public/terrain/19/858535/353781.terrain b/public/terrain/19/858535/353781.terrain new file mode 100644 index 000000000..bd2c47641 Binary files /dev/null and b/public/terrain/19/858535/353781.terrain differ diff --git a/public/terrain/19/858535/353782.terrain b/public/terrain/19/858535/353782.terrain new file mode 100644 index 000000000..dbaa8b8d6 Binary files /dev/null and b/public/terrain/19/858535/353782.terrain differ diff --git a/public/terrain/19/858535/353783.terrain b/public/terrain/19/858535/353783.terrain new file mode 100644 index 000000000..ff737d638 Binary files /dev/null and b/public/terrain/19/858535/353783.terrain differ diff --git a/public/terrain/19/858535/353784.terrain b/public/terrain/19/858535/353784.terrain new file mode 100644 index 000000000..da1e672d2 Binary files /dev/null and b/public/terrain/19/858535/353784.terrain differ diff --git a/public/terrain/19/858535/353785.terrain b/public/terrain/19/858535/353785.terrain new file mode 100644 index 000000000..39073b4b5 Binary files /dev/null and b/public/terrain/19/858535/353785.terrain differ diff --git a/public/terrain/19/858535/353786.terrain b/public/terrain/19/858535/353786.terrain new file mode 100644 index 000000000..bb5bc2ea8 Binary files /dev/null and b/public/terrain/19/858535/353786.terrain differ diff --git a/public/terrain/19/858535/353787.terrain b/public/terrain/19/858535/353787.terrain new file mode 100644 index 000000000..79005d38c Binary files /dev/null and b/public/terrain/19/858535/353787.terrain differ diff --git a/public/terrain/19/858535/353788.terrain b/public/terrain/19/858535/353788.terrain new file mode 100644 index 000000000..db5620ff8 Binary files /dev/null and b/public/terrain/19/858535/353788.terrain differ diff --git a/public/terrain/19/858535/353789.terrain b/public/terrain/19/858535/353789.terrain new file mode 100644 index 000000000..f13ba564e Binary files /dev/null and b/public/terrain/19/858535/353789.terrain differ diff --git a/public/terrain/19/858535/353790.terrain b/public/terrain/19/858535/353790.terrain new file mode 100644 index 000000000..8358c759f Binary files /dev/null and b/public/terrain/19/858535/353790.terrain differ diff --git a/public/terrain/19/858535/353791.terrain b/public/terrain/19/858535/353791.terrain new file mode 100644 index 000000000..4e7d42e2e Binary files /dev/null and b/public/terrain/19/858535/353791.terrain differ diff --git a/public/terrain/19/858535/353792.terrain b/public/terrain/19/858535/353792.terrain new file mode 100644 index 000000000..5c72cd48f Binary files /dev/null and b/public/terrain/19/858535/353792.terrain differ diff --git a/public/terrain/19/858535/353793.terrain b/public/terrain/19/858535/353793.terrain new file mode 100644 index 000000000..ec68c4bcb Binary files /dev/null and b/public/terrain/19/858535/353793.terrain differ diff --git a/public/terrain/19/858535/353794.terrain b/public/terrain/19/858535/353794.terrain new file mode 100644 index 000000000..492d5863f Binary files /dev/null and b/public/terrain/19/858535/353794.terrain differ diff --git a/public/terrain/19/858535/353795.terrain b/public/terrain/19/858535/353795.terrain new file mode 100644 index 000000000..679113f13 Binary files /dev/null and b/public/terrain/19/858535/353795.terrain differ diff --git a/public/terrain/19/858535/353796.terrain b/public/terrain/19/858535/353796.terrain new file mode 100644 index 000000000..b86daf50e Binary files /dev/null and b/public/terrain/19/858535/353796.terrain differ diff --git a/public/terrain/19/858535/353797.terrain b/public/terrain/19/858535/353797.terrain new file mode 100644 index 000000000..8d9441a84 Binary files /dev/null and b/public/terrain/19/858535/353797.terrain differ diff --git a/public/terrain/19/858535/353798.terrain b/public/terrain/19/858535/353798.terrain new file mode 100644 index 000000000..401db33f0 Binary files /dev/null and b/public/terrain/19/858535/353798.terrain differ diff --git a/public/terrain/19/858535/353799.terrain b/public/terrain/19/858535/353799.terrain new file mode 100644 index 000000000..8af36100a Binary files /dev/null and b/public/terrain/19/858535/353799.terrain differ diff --git a/public/terrain/19/858535/353800.terrain b/public/terrain/19/858535/353800.terrain new file mode 100644 index 000000000..7826d1b6b Binary files /dev/null and b/public/terrain/19/858535/353800.terrain differ diff --git a/public/terrain/19/858535/353801.terrain b/public/terrain/19/858535/353801.terrain new file mode 100644 index 000000000..b6c1d288e Binary files /dev/null and b/public/terrain/19/858535/353801.terrain differ diff --git a/public/terrain/19/858535/353802.terrain b/public/terrain/19/858535/353802.terrain new file mode 100644 index 000000000..cba3de6c3 Binary files /dev/null and b/public/terrain/19/858535/353802.terrain differ diff --git a/public/terrain/19/858535/353803.terrain b/public/terrain/19/858535/353803.terrain new file mode 100644 index 000000000..9bb7c28d9 Binary files /dev/null and b/public/terrain/19/858535/353803.terrain differ diff --git a/public/terrain/19/858535/353804.terrain b/public/terrain/19/858535/353804.terrain new file mode 100644 index 000000000..c5f98f278 Binary files /dev/null and b/public/terrain/19/858535/353804.terrain differ diff --git a/public/terrain/19/858535/353805.terrain b/public/terrain/19/858535/353805.terrain new file mode 100644 index 000000000..c1ec9689e Binary files /dev/null and b/public/terrain/19/858535/353805.terrain differ diff --git a/public/terrain/19/858535/353806.terrain b/public/terrain/19/858535/353806.terrain new file mode 100644 index 000000000..652a57368 Binary files /dev/null and b/public/terrain/19/858535/353806.terrain differ diff --git a/public/terrain/19/858535/353807.terrain b/public/terrain/19/858535/353807.terrain new file mode 100644 index 000000000..be489cd6f Binary files /dev/null and b/public/terrain/19/858535/353807.terrain differ diff --git a/public/terrain/19/858535/353808.terrain b/public/terrain/19/858535/353808.terrain new file mode 100644 index 000000000..0d2eda560 Binary files /dev/null and b/public/terrain/19/858535/353808.terrain differ diff --git a/public/terrain/19/858535/353809.terrain b/public/terrain/19/858535/353809.terrain new file mode 100644 index 000000000..a842b4796 Binary files /dev/null and b/public/terrain/19/858535/353809.terrain differ diff --git a/public/terrain/19/858535/353810.terrain b/public/terrain/19/858535/353810.terrain new file mode 100644 index 000000000..27c56440e Binary files /dev/null and b/public/terrain/19/858535/353810.terrain differ diff --git a/public/terrain/19/858535/353811.terrain b/public/terrain/19/858535/353811.terrain new file mode 100644 index 000000000..4df155421 Binary files /dev/null and b/public/terrain/19/858535/353811.terrain differ diff --git a/public/terrain/19/858535/353812.terrain b/public/terrain/19/858535/353812.terrain new file mode 100644 index 000000000..c1f2d8bf2 Binary files /dev/null and b/public/terrain/19/858535/353812.terrain differ diff --git a/public/terrain/19/858535/353813.terrain b/public/terrain/19/858535/353813.terrain new file mode 100644 index 000000000..a0977685b Binary files /dev/null and b/public/terrain/19/858535/353813.terrain differ diff --git a/public/terrain/19/858535/353814.terrain b/public/terrain/19/858535/353814.terrain new file mode 100644 index 000000000..e3eef1f0e Binary files /dev/null and b/public/terrain/19/858535/353814.terrain differ diff --git a/public/terrain/19/858535/353815.terrain b/public/terrain/19/858535/353815.terrain new file mode 100644 index 000000000..f2f7b0c14 Binary files /dev/null and b/public/terrain/19/858535/353815.terrain differ diff --git a/public/terrain/19/858535/353816.terrain b/public/terrain/19/858535/353816.terrain new file mode 100644 index 000000000..980ab771c Binary files /dev/null and b/public/terrain/19/858535/353816.terrain differ diff --git a/public/terrain/19/858535/353817.terrain b/public/terrain/19/858535/353817.terrain new file mode 100644 index 000000000..0ab0ffc57 Binary files /dev/null and b/public/terrain/19/858535/353817.terrain differ diff --git a/public/terrain/19/858535/353818.terrain b/public/terrain/19/858535/353818.terrain new file mode 100644 index 000000000..92b804156 Binary files /dev/null and b/public/terrain/19/858535/353818.terrain differ diff --git a/public/terrain/19/858535/353819.terrain b/public/terrain/19/858535/353819.terrain new file mode 100644 index 000000000..393e361a3 Binary files /dev/null and b/public/terrain/19/858535/353819.terrain differ diff --git a/public/terrain/19/858535/353820.terrain b/public/terrain/19/858535/353820.terrain new file mode 100644 index 000000000..9d0ce428b Binary files /dev/null and b/public/terrain/19/858535/353820.terrain differ diff --git a/public/terrain/19/858535/353821.terrain b/public/terrain/19/858535/353821.terrain new file mode 100644 index 000000000..b612e81ff Binary files /dev/null and b/public/terrain/19/858535/353821.terrain differ diff --git a/public/terrain/19/858535/353822.terrain b/public/terrain/19/858535/353822.terrain new file mode 100644 index 000000000..198e55c4c Binary files /dev/null and b/public/terrain/19/858535/353822.terrain differ diff --git a/public/terrain/19/858535/353823.terrain b/public/terrain/19/858535/353823.terrain new file mode 100644 index 000000000..658a36be3 Binary files /dev/null and b/public/terrain/19/858535/353823.terrain differ diff --git a/public/terrain/19/858535/353824.terrain b/public/terrain/19/858535/353824.terrain new file mode 100644 index 000000000..997678171 Binary files /dev/null and b/public/terrain/19/858535/353824.terrain differ diff --git a/public/terrain/19/858535/353825.terrain b/public/terrain/19/858535/353825.terrain new file mode 100644 index 000000000..ef80b04b4 Binary files /dev/null and b/public/terrain/19/858535/353825.terrain differ diff --git a/public/terrain/19/858535/353826.terrain b/public/terrain/19/858535/353826.terrain new file mode 100644 index 000000000..55f9092ad Binary files /dev/null and b/public/terrain/19/858535/353826.terrain differ diff --git a/public/terrain/19/858535/353827.terrain b/public/terrain/19/858535/353827.terrain new file mode 100644 index 000000000..48a09454c Binary files /dev/null and b/public/terrain/19/858535/353827.terrain differ diff --git a/public/terrain/19/858535/353828.terrain b/public/terrain/19/858535/353828.terrain new file mode 100644 index 000000000..d55f89ccf Binary files /dev/null and b/public/terrain/19/858535/353828.terrain differ diff --git a/public/terrain/19/858535/353829.terrain b/public/terrain/19/858535/353829.terrain new file mode 100644 index 000000000..08f0774a9 Binary files /dev/null and b/public/terrain/19/858535/353829.terrain differ diff --git a/public/terrain/19/858535/353830.terrain b/public/terrain/19/858535/353830.terrain new file mode 100644 index 000000000..d5c96f578 Binary files /dev/null and b/public/terrain/19/858535/353830.terrain differ diff --git a/public/terrain/19/858535/353831.terrain b/public/terrain/19/858535/353831.terrain new file mode 100644 index 000000000..5d4ce604c Binary files /dev/null and b/public/terrain/19/858535/353831.terrain differ diff --git a/public/terrain/19/858535/353832.terrain b/public/terrain/19/858535/353832.terrain new file mode 100644 index 000000000..c118acf05 Binary files /dev/null and b/public/terrain/19/858535/353832.terrain differ diff --git a/public/terrain/19/858535/353833.terrain b/public/terrain/19/858535/353833.terrain new file mode 100644 index 000000000..32f3398ed Binary files /dev/null and b/public/terrain/19/858535/353833.terrain differ diff --git a/public/terrain/19/858535/353834.terrain b/public/terrain/19/858535/353834.terrain new file mode 100644 index 000000000..ef12a217a Binary files /dev/null and b/public/terrain/19/858535/353834.terrain differ diff --git a/public/terrain/19/858535/353835.terrain b/public/terrain/19/858535/353835.terrain new file mode 100644 index 000000000..cc9212d97 Binary files /dev/null and b/public/terrain/19/858535/353835.terrain differ diff --git a/public/terrain/19/858535/353836.terrain b/public/terrain/19/858535/353836.terrain new file mode 100644 index 000000000..8831f6d15 Binary files /dev/null and b/public/terrain/19/858535/353836.terrain differ diff --git a/public/terrain/19/858535/353837.terrain b/public/terrain/19/858535/353837.terrain new file mode 100644 index 000000000..0b36a1787 Binary files /dev/null and b/public/terrain/19/858535/353837.terrain differ diff --git a/public/terrain/19/858535/353838.terrain b/public/terrain/19/858535/353838.terrain new file mode 100644 index 000000000..6ca57d4cd Binary files /dev/null and b/public/terrain/19/858535/353838.terrain differ diff --git a/public/terrain/19/858535/353839.terrain b/public/terrain/19/858535/353839.terrain new file mode 100644 index 000000000..b6622e7be Binary files /dev/null and b/public/terrain/19/858535/353839.terrain differ diff --git a/public/terrain/19/858535/353840.terrain b/public/terrain/19/858535/353840.terrain new file mode 100644 index 000000000..2de8507f3 Binary files /dev/null and b/public/terrain/19/858535/353840.terrain differ diff --git a/public/terrain/19/858535/353841.terrain b/public/terrain/19/858535/353841.terrain new file mode 100644 index 000000000..8f8e2249b Binary files /dev/null and b/public/terrain/19/858535/353841.terrain differ diff --git a/public/terrain/19/858535/353842.terrain b/public/terrain/19/858535/353842.terrain new file mode 100644 index 000000000..044c542d9 Binary files /dev/null and b/public/terrain/19/858535/353842.terrain differ diff --git a/public/terrain/19/858535/353843.terrain b/public/terrain/19/858535/353843.terrain new file mode 100644 index 000000000..3062ad5f4 Binary files /dev/null and b/public/terrain/19/858535/353843.terrain differ diff --git a/public/terrain/19/858535/353844.terrain b/public/terrain/19/858535/353844.terrain new file mode 100644 index 000000000..53fa69ff0 Binary files /dev/null and b/public/terrain/19/858535/353844.terrain differ diff --git a/public/terrain/19/858535/353845.terrain b/public/terrain/19/858535/353845.terrain new file mode 100644 index 000000000..664207ca6 Binary files /dev/null and b/public/terrain/19/858535/353845.terrain differ diff --git a/public/terrain/19/858535/353846.terrain b/public/terrain/19/858535/353846.terrain new file mode 100644 index 000000000..799d75c04 Binary files /dev/null and b/public/terrain/19/858535/353846.terrain differ diff --git a/public/terrain/19/858535/353847.terrain b/public/terrain/19/858535/353847.terrain new file mode 100644 index 000000000..a7ff98ad0 Binary files /dev/null and b/public/terrain/19/858535/353847.terrain differ diff --git a/public/terrain/19/858535/353848.terrain b/public/terrain/19/858535/353848.terrain new file mode 100644 index 000000000..10bd8c9ed Binary files /dev/null and b/public/terrain/19/858535/353848.terrain differ diff --git a/public/terrain/19/858535/353849.terrain b/public/terrain/19/858535/353849.terrain new file mode 100644 index 000000000..49c027d93 Binary files /dev/null and b/public/terrain/19/858535/353849.terrain differ diff --git a/public/terrain/19/858535/353850.terrain b/public/terrain/19/858535/353850.terrain new file mode 100644 index 000000000..d8d62f266 Binary files /dev/null and b/public/terrain/19/858535/353850.terrain differ diff --git a/public/terrain/19/858535/353851.terrain b/public/terrain/19/858535/353851.terrain new file mode 100644 index 000000000..7fc8fd87d Binary files /dev/null and b/public/terrain/19/858535/353851.terrain differ diff --git a/public/terrain/19/858535/353852.terrain b/public/terrain/19/858535/353852.terrain new file mode 100644 index 000000000..aadc7ece3 Binary files /dev/null and b/public/terrain/19/858535/353852.terrain differ diff --git a/public/terrain/19/858535/353853.terrain b/public/terrain/19/858535/353853.terrain new file mode 100644 index 000000000..27fdf7fd7 Binary files /dev/null and b/public/terrain/19/858535/353853.terrain differ diff --git a/public/terrain/19/858535/353854.terrain b/public/terrain/19/858535/353854.terrain new file mode 100644 index 000000000..a94f8dac3 Binary files /dev/null and b/public/terrain/19/858535/353854.terrain differ diff --git a/public/terrain/19/858535/353855.terrain b/public/terrain/19/858535/353855.terrain new file mode 100644 index 000000000..f1a70fc50 Binary files /dev/null and b/public/terrain/19/858535/353855.terrain differ diff --git a/public/terrain/19/858535/353856.terrain b/public/terrain/19/858535/353856.terrain new file mode 100644 index 000000000..32f05bceb Binary files /dev/null and b/public/terrain/19/858535/353856.terrain differ diff --git a/public/terrain/19/858535/353857.terrain b/public/terrain/19/858535/353857.terrain new file mode 100644 index 000000000..9497f8242 Binary files /dev/null and b/public/terrain/19/858535/353857.terrain differ diff --git a/public/terrain/19/858535/353858.terrain b/public/terrain/19/858535/353858.terrain new file mode 100644 index 000000000..56552a3bd Binary files /dev/null and b/public/terrain/19/858535/353858.terrain differ diff --git a/public/terrain/19/858535/353859.terrain b/public/terrain/19/858535/353859.terrain new file mode 100644 index 000000000..4d4578233 Binary files /dev/null and b/public/terrain/19/858535/353859.terrain differ diff --git a/public/terrain/19/858535/353860.terrain b/public/terrain/19/858535/353860.terrain new file mode 100644 index 000000000..942398db7 Binary files /dev/null and b/public/terrain/19/858535/353860.terrain differ diff --git a/public/terrain/19/858535/353861.terrain b/public/terrain/19/858535/353861.terrain new file mode 100644 index 000000000..3a9918196 Binary files /dev/null and b/public/terrain/19/858535/353861.terrain differ diff --git a/public/terrain/19/858535/353862.terrain b/public/terrain/19/858535/353862.terrain new file mode 100644 index 000000000..fec50cab0 Binary files /dev/null and b/public/terrain/19/858535/353862.terrain differ diff --git a/public/terrain/19/858535/353863.terrain b/public/terrain/19/858535/353863.terrain new file mode 100644 index 000000000..d2de2ac68 Binary files /dev/null and b/public/terrain/19/858535/353863.terrain differ diff --git a/public/terrain/19/858535/353864.terrain b/public/terrain/19/858535/353864.terrain new file mode 100644 index 000000000..868e4bb7c Binary files /dev/null and b/public/terrain/19/858535/353864.terrain differ diff --git a/public/terrain/19/858535/353865.terrain b/public/terrain/19/858535/353865.terrain new file mode 100644 index 000000000..f2756bfc6 Binary files /dev/null and b/public/terrain/19/858535/353865.terrain differ diff --git a/public/terrain/19/858535/353866.terrain b/public/terrain/19/858535/353866.terrain new file mode 100644 index 000000000..22bf648c5 Binary files /dev/null and b/public/terrain/19/858535/353866.terrain differ diff --git a/public/terrain/19/858535/353867.terrain b/public/terrain/19/858535/353867.terrain new file mode 100644 index 000000000..692446873 Binary files /dev/null and b/public/terrain/19/858535/353867.terrain differ diff --git a/public/terrain/19/858535/353868.terrain b/public/terrain/19/858535/353868.terrain new file mode 100644 index 000000000..06f7226f5 Binary files /dev/null and b/public/terrain/19/858535/353868.terrain differ diff --git a/public/terrain/19/858535/353869.terrain b/public/terrain/19/858535/353869.terrain new file mode 100644 index 000000000..aa32b4b37 Binary files /dev/null and b/public/terrain/19/858535/353869.terrain differ diff --git a/public/terrain/19/858535/353870.terrain b/public/terrain/19/858535/353870.terrain new file mode 100644 index 000000000..d14fd841c Binary files /dev/null and b/public/terrain/19/858535/353870.terrain differ diff --git a/public/terrain/19/858535/353871.terrain b/public/terrain/19/858535/353871.terrain new file mode 100644 index 000000000..ff0a04ebb Binary files /dev/null and b/public/terrain/19/858535/353871.terrain differ diff --git a/public/terrain/19/858535/353872.terrain b/public/terrain/19/858535/353872.terrain new file mode 100644 index 000000000..fc8eddba0 Binary files /dev/null and b/public/terrain/19/858535/353872.terrain differ diff --git a/public/terrain/19/858535/353873.terrain b/public/terrain/19/858535/353873.terrain new file mode 100644 index 000000000..aad03be32 Binary files /dev/null and b/public/terrain/19/858535/353873.terrain differ diff --git a/public/terrain/19/858535/353874.terrain b/public/terrain/19/858535/353874.terrain new file mode 100644 index 000000000..f40ccf584 Binary files /dev/null and b/public/terrain/19/858535/353874.terrain differ diff --git a/public/terrain/19/858535/353875.terrain b/public/terrain/19/858535/353875.terrain new file mode 100644 index 000000000..bd1fa2f8c Binary files /dev/null and b/public/terrain/19/858535/353875.terrain differ diff --git a/public/terrain/19/858535/353876.terrain b/public/terrain/19/858535/353876.terrain new file mode 100644 index 000000000..289f91c06 Binary files /dev/null and b/public/terrain/19/858535/353876.terrain differ diff --git a/public/terrain/19/858535/353877.terrain b/public/terrain/19/858535/353877.terrain new file mode 100644 index 000000000..a32e53e3c Binary files /dev/null and b/public/terrain/19/858535/353877.terrain differ diff --git a/public/terrain/19/858535/353878.terrain b/public/terrain/19/858535/353878.terrain new file mode 100644 index 000000000..46761a6f1 Binary files /dev/null and b/public/terrain/19/858535/353878.terrain differ diff --git a/public/terrain/19/858535/353879.terrain b/public/terrain/19/858535/353879.terrain new file mode 100644 index 000000000..e26f5e9d2 Binary files /dev/null and b/public/terrain/19/858535/353879.terrain differ diff --git a/public/terrain/19/858535/353880.terrain b/public/terrain/19/858535/353880.terrain new file mode 100644 index 000000000..eaab1e365 Binary files /dev/null and b/public/terrain/19/858535/353880.terrain differ diff --git a/public/terrain/19/858535/353881.terrain b/public/terrain/19/858535/353881.terrain new file mode 100644 index 000000000..ec7c67bbc Binary files /dev/null and b/public/terrain/19/858535/353881.terrain differ diff --git a/public/terrain/19/858535/353882.terrain b/public/terrain/19/858535/353882.terrain new file mode 100644 index 000000000..70290c2a9 Binary files /dev/null and b/public/terrain/19/858535/353882.terrain differ diff --git a/public/terrain/19/858535/353883.terrain b/public/terrain/19/858535/353883.terrain new file mode 100644 index 000000000..5b2e1b9b1 Binary files /dev/null and b/public/terrain/19/858535/353883.terrain differ diff --git a/public/terrain/19/858535/353884.terrain b/public/terrain/19/858535/353884.terrain new file mode 100644 index 000000000..a6f8fa32d Binary files /dev/null and b/public/terrain/19/858535/353884.terrain differ diff --git a/public/terrain/19/858535/353885.terrain b/public/terrain/19/858535/353885.terrain new file mode 100644 index 000000000..73b59679a Binary files /dev/null and b/public/terrain/19/858535/353885.terrain differ diff --git a/public/terrain/19/858535/353886.terrain b/public/terrain/19/858535/353886.terrain new file mode 100644 index 000000000..3ff37b1b5 Binary files /dev/null and b/public/terrain/19/858535/353886.terrain differ diff --git a/public/terrain/19/858535/353887.terrain b/public/terrain/19/858535/353887.terrain new file mode 100644 index 000000000..e3940bc52 Binary files /dev/null and b/public/terrain/19/858535/353887.terrain differ diff --git a/public/terrain/19/858535/353888.terrain b/public/terrain/19/858535/353888.terrain new file mode 100644 index 000000000..1844adb30 Binary files /dev/null and b/public/terrain/19/858535/353888.terrain differ diff --git a/public/terrain/19/858535/353889.terrain b/public/terrain/19/858535/353889.terrain new file mode 100644 index 000000000..6d70b4fd8 Binary files /dev/null and b/public/terrain/19/858535/353889.terrain differ diff --git a/public/terrain/19/858535/353890.terrain b/public/terrain/19/858535/353890.terrain new file mode 100644 index 000000000..7b6d7c407 Binary files /dev/null and b/public/terrain/19/858535/353890.terrain differ diff --git a/public/terrain/19/858535/353891.terrain b/public/terrain/19/858535/353891.terrain new file mode 100644 index 000000000..314ebab42 Binary files /dev/null and b/public/terrain/19/858535/353891.terrain differ diff --git a/public/terrain/19/858535/353892.terrain b/public/terrain/19/858535/353892.terrain new file mode 100644 index 000000000..8f146861a Binary files /dev/null and b/public/terrain/19/858535/353892.terrain differ diff --git a/public/terrain/19/858535/353893.terrain b/public/terrain/19/858535/353893.terrain new file mode 100644 index 000000000..6ed90e1ff Binary files /dev/null and b/public/terrain/19/858535/353893.terrain differ diff --git a/public/terrain/19/858535/353894.terrain b/public/terrain/19/858535/353894.terrain new file mode 100644 index 000000000..d78977cf2 Binary files /dev/null and b/public/terrain/19/858535/353894.terrain differ diff --git a/public/terrain/19/858535/353895.terrain b/public/terrain/19/858535/353895.terrain new file mode 100644 index 000000000..323476aab Binary files /dev/null and b/public/terrain/19/858535/353895.terrain differ diff --git a/public/terrain/19/858535/353896.terrain b/public/terrain/19/858535/353896.terrain new file mode 100644 index 000000000..59af91702 Binary files /dev/null and b/public/terrain/19/858535/353896.terrain differ diff --git a/public/terrain/19/858535/353897.terrain b/public/terrain/19/858535/353897.terrain new file mode 100644 index 000000000..688dceb11 Binary files /dev/null and b/public/terrain/19/858535/353897.terrain differ diff --git a/public/terrain/19/858535/353898.terrain b/public/terrain/19/858535/353898.terrain new file mode 100644 index 000000000..b6837d331 Binary files /dev/null and b/public/terrain/19/858535/353898.terrain differ diff --git a/public/terrain/19/858535/353899.terrain b/public/terrain/19/858535/353899.terrain new file mode 100644 index 000000000..7b71533a9 Binary files /dev/null and b/public/terrain/19/858535/353899.terrain differ diff --git a/public/terrain/19/858535/353900.terrain b/public/terrain/19/858535/353900.terrain new file mode 100644 index 000000000..22f4728b5 Binary files /dev/null and b/public/terrain/19/858535/353900.terrain differ diff --git a/public/terrain/19/858535/353901.terrain b/public/terrain/19/858535/353901.terrain new file mode 100644 index 000000000..d6e8899c5 Binary files /dev/null and b/public/terrain/19/858535/353901.terrain differ diff --git a/public/terrain/19/858535/353902.terrain b/public/terrain/19/858535/353902.terrain new file mode 100644 index 000000000..6e3360463 Binary files /dev/null and b/public/terrain/19/858535/353902.terrain differ diff --git a/public/terrain/19/858535/353903.terrain b/public/terrain/19/858535/353903.terrain new file mode 100644 index 000000000..8e935b317 Binary files /dev/null and b/public/terrain/19/858535/353903.terrain differ diff --git a/public/terrain/19/858535/353904.terrain b/public/terrain/19/858535/353904.terrain new file mode 100644 index 000000000..d0196b2e4 Binary files /dev/null and b/public/terrain/19/858535/353904.terrain differ diff --git a/public/terrain/19/858535/353905.terrain b/public/terrain/19/858535/353905.terrain new file mode 100644 index 000000000..61984d757 Binary files /dev/null and b/public/terrain/19/858535/353905.terrain differ diff --git a/public/terrain/19/858535/353906.terrain b/public/terrain/19/858535/353906.terrain new file mode 100644 index 000000000..f9b0e0b4e Binary files /dev/null and b/public/terrain/19/858535/353906.terrain differ diff --git a/public/terrain/19/858535/353907.terrain b/public/terrain/19/858535/353907.terrain new file mode 100644 index 000000000..14db4369e Binary files /dev/null and b/public/terrain/19/858535/353907.terrain differ diff --git a/public/terrain/19/858535/353908.terrain b/public/terrain/19/858535/353908.terrain new file mode 100644 index 000000000..8899b6e1c Binary files /dev/null and b/public/terrain/19/858535/353908.terrain differ diff --git a/public/terrain/19/858535/353909.terrain b/public/terrain/19/858535/353909.terrain new file mode 100644 index 000000000..d15f22792 Binary files /dev/null and b/public/terrain/19/858535/353909.terrain differ diff --git a/public/terrain/19/858535/353910.terrain b/public/terrain/19/858535/353910.terrain new file mode 100644 index 000000000..f28c7f820 Binary files /dev/null and b/public/terrain/19/858535/353910.terrain differ diff --git a/public/terrain/19/858535/353911.terrain b/public/terrain/19/858535/353911.terrain new file mode 100644 index 000000000..9691bf991 Binary files /dev/null and b/public/terrain/19/858535/353911.terrain differ diff --git a/public/terrain/19/858535/353912.terrain b/public/terrain/19/858535/353912.terrain new file mode 100644 index 000000000..c6281ed75 Binary files /dev/null and b/public/terrain/19/858535/353912.terrain differ diff --git a/public/terrain/19/858535/353913.terrain b/public/terrain/19/858535/353913.terrain new file mode 100644 index 000000000..46260e48e Binary files /dev/null and b/public/terrain/19/858535/353913.terrain differ diff --git a/public/terrain/19/858535/353914.terrain b/public/terrain/19/858535/353914.terrain new file mode 100644 index 000000000..b6e5f4286 Binary files /dev/null and b/public/terrain/19/858535/353914.terrain differ diff --git a/public/terrain/19/858535/353915.terrain b/public/terrain/19/858535/353915.terrain new file mode 100644 index 000000000..552bbafcd Binary files /dev/null and b/public/terrain/19/858535/353915.terrain differ diff --git a/public/terrain/19/858535/353916.terrain b/public/terrain/19/858535/353916.terrain new file mode 100644 index 000000000..9726eefcd Binary files /dev/null and b/public/terrain/19/858535/353916.terrain differ diff --git a/public/terrain/19/858535/353917.terrain b/public/terrain/19/858535/353917.terrain new file mode 100644 index 000000000..2fef21d33 Binary files /dev/null and b/public/terrain/19/858535/353917.terrain differ diff --git a/public/terrain/19/858535/353918.terrain b/public/terrain/19/858535/353918.terrain new file mode 100644 index 000000000..82f2d1ae4 Binary files /dev/null and b/public/terrain/19/858535/353918.terrain differ diff --git a/public/terrain/19/858535/353919.terrain b/public/terrain/19/858535/353919.terrain new file mode 100644 index 000000000..5a4e02804 Binary files /dev/null and b/public/terrain/19/858535/353919.terrain differ diff --git a/public/terrain/19/858535/353920.terrain b/public/terrain/19/858535/353920.terrain new file mode 100644 index 000000000..e8b0b5cc0 Binary files /dev/null and b/public/terrain/19/858535/353920.terrain differ diff --git a/public/terrain/19/858535/353921.terrain b/public/terrain/19/858535/353921.terrain new file mode 100644 index 000000000..2e83a0cdb Binary files /dev/null and b/public/terrain/19/858535/353921.terrain differ diff --git a/public/terrain/19/858535/353922.terrain b/public/terrain/19/858535/353922.terrain new file mode 100644 index 000000000..7e9945d79 Binary files /dev/null and b/public/terrain/19/858535/353922.terrain differ diff --git a/public/terrain/19/858535/353923.terrain b/public/terrain/19/858535/353923.terrain new file mode 100644 index 000000000..3e209f4b1 Binary files /dev/null and b/public/terrain/19/858535/353923.terrain differ diff --git a/public/terrain/19/858535/353924.terrain b/public/terrain/19/858535/353924.terrain new file mode 100644 index 000000000..dbb3b0733 Binary files /dev/null and b/public/terrain/19/858535/353924.terrain differ diff --git a/public/terrain/19/858535/353925.terrain b/public/terrain/19/858535/353925.terrain new file mode 100644 index 000000000..57dd07157 Binary files /dev/null and b/public/terrain/19/858535/353925.terrain differ diff --git a/public/terrain/19/858535/353926.terrain b/public/terrain/19/858535/353926.terrain new file mode 100644 index 000000000..1de56165d Binary files /dev/null and b/public/terrain/19/858535/353926.terrain differ diff --git a/public/terrain/19/858535/353927.terrain b/public/terrain/19/858535/353927.terrain new file mode 100644 index 000000000..4b236d792 Binary files /dev/null and b/public/terrain/19/858535/353927.terrain differ diff --git a/public/terrain/19/858535/353928.terrain b/public/terrain/19/858535/353928.terrain new file mode 100644 index 000000000..fc76c27d7 Binary files /dev/null and b/public/terrain/19/858535/353928.terrain differ diff --git a/public/terrain/19/858535/353929.terrain b/public/terrain/19/858535/353929.terrain new file mode 100644 index 000000000..7142239ca Binary files /dev/null and b/public/terrain/19/858535/353929.terrain differ diff --git a/public/terrain/19/858535/353930.terrain b/public/terrain/19/858535/353930.terrain new file mode 100644 index 000000000..a00c49d0c Binary files /dev/null and b/public/terrain/19/858535/353930.terrain differ diff --git a/public/terrain/19/858535/353931.terrain b/public/terrain/19/858535/353931.terrain new file mode 100644 index 000000000..0e921cf36 Binary files /dev/null and b/public/terrain/19/858535/353931.terrain differ diff --git a/public/terrain/19/858535/353932.terrain b/public/terrain/19/858535/353932.terrain new file mode 100644 index 000000000..8d5ec234e Binary files /dev/null and b/public/terrain/19/858535/353932.terrain differ diff --git a/public/terrain/19/858535/353933.terrain b/public/terrain/19/858535/353933.terrain new file mode 100644 index 000000000..53dd939a4 Binary files /dev/null and b/public/terrain/19/858535/353933.terrain differ diff --git a/public/terrain/19/858535/353934.terrain b/public/terrain/19/858535/353934.terrain new file mode 100644 index 000000000..6a73d1144 Binary files /dev/null and b/public/terrain/19/858535/353934.terrain differ diff --git a/public/terrain/19/858535/353935.terrain b/public/terrain/19/858535/353935.terrain new file mode 100644 index 000000000..de212e790 Binary files /dev/null and b/public/terrain/19/858535/353935.terrain differ diff --git a/public/terrain/19/858535/353936.terrain b/public/terrain/19/858535/353936.terrain new file mode 100644 index 000000000..e542a6f9f Binary files /dev/null and b/public/terrain/19/858535/353936.terrain differ diff --git a/public/terrain/19/858535/353937.terrain b/public/terrain/19/858535/353937.terrain new file mode 100644 index 000000000..1622a869c Binary files /dev/null and b/public/terrain/19/858535/353937.terrain differ diff --git a/public/terrain/19/858535/353938.terrain b/public/terrain/19/858535/353938.terrain new file mode 100644 index 000000000..e9fa1d829 Binary files /dev/null and b/public/terrain/19/858535/353938.terrain differ diff --git a/public/terrain/19/858535/353939.terrain b/public/terrain/19/858535/353939.terrain new file mode 100644 index 000000000..b008e5562 Binary files /dev/null and b/public/terrain/19/858535/353939.terrain differ diff --git a/public/terrain/19/858535/353940.terrain b/public/terrain/19/858535/353940.terrain new file mode 100644 index 000000000..e96bfd354 Binary files /dev/null and b/public/terrain/19/858535/353940.terrain differ diff --git a/public/terrain/19/858535/353941.terrain b/public/terrain/19/858535/353941.terrain new file mode 100644 index 000000000..34bac8aea Binary files /dev/null and b/public/terrain/19/858535/353941.terrain differ diff --git a/public/terrain/19/858535/353942.terrain b/public/terrain/19/858535/353942.terrain new file mode 100644 index 000000000..ba12024d0 Binary files /dev/null and b/public/terrain/19/858535/353942.terrain differ diff --git a/public/terrain/19/858535/353943.terrain b/public/terrain/19/858535/353943.terrain new file mode 100644 index 000000000..01f27cb42 Binary files /dev/null and b/public/terrain/19/858535/353943.terrain differ diff --git a/public/terrain/19/858535/353944.terrain b/public/terrain/19/858535/353944.terrain new file mode 100644 index 000000000..1e74a697b Binary files /dev/null and b/public/terrain/19/858535/353944.terrain differ diff --git a/public/terrain/19/858535/353945.terrain b/public/terrain/19/858535/353945.terrain new file mode 100644 index 000000000..910b5cd21 Binary files /dev/null and b/public/terrain/19/858535/353945.terrain differ diff --git a/public/terrain/19/858535/353946.terrain b/public/terrain/19/858535/353946.terrain new file mode 100644 index 000000000..bb455aa14 Binary files /dev/null and b/public/terrain/19/858535/353946.terrain differ diff --git a/public/terrain/19/858535/353947.terrain b/public/terrain/19/858535/353947.terrain new file mode 100644 index 000000000..d6ceba46d Binary files /dev/null and b/public/terrain/19/858535/353947.terrain differ diff --git a/public/terrain/19/858535/353948.terrain b/public/terrain/19/858535/353948.terrain new file mode 100644 index 000000000..eac79ddc3 Binary files /dev/null and b/public/terrain/19/858535/353948.terrain differ diff --git a/public/terrain/19/858535/353949.terrain b/public/terrain/19/858535/353949.terrain new file mode 100644 index 000000000..4e1e9eade Binary files /dev/null and b/public/terrain/19/858535/353949.terrain differ diff --git a/public/terrain/19/858535/353950.terrain b/public/terrain/19/858535/353950.terrain new file mode 100644 index 000000000..4160c4d85 Binary files /dev/null and b/public/terrain/19/858535/353950.terrain differ diff --git a/public/terrain/19/858535/353951.terrain b/public/terrain/19/858535/353951.terrain new file mode 100644 index 000000000..2f5ccbfa7 Binary files /dev/null and b/public/terrain/19/858535/353951.terrain differ diff --git a/public/terrain/19/858535/353952.terrain b/public/terrain/19/858535/353952.terrain new file mode 100644 index 000000000..5db7c7b3c Binary files /dev/null and b/public/terrain/19/858535/353952.terrain differ diff --git a/public/terrain/19/858535/353953.terrain b/public/terrain/19/858535/353953.terrain new file mode 100644 index 000000000..06bcec6f0 Binary files /dev/null and b/public/terrain/19/858535/353953.terrain differ diff --git a/public/terrain/19/858535/353954.terrain b/public/terrain/19/858535/353954.terrain new file mode 100644 index 000000000..b9a4f1117 Binary files /dev/null and b/public/terrain/19/858535/353954.terrain differ diff --git a/public/terrain/19/858535/353955.terrain b/public/terrain/19/858535/353955.terrain new file mode 100644 index 000000000..8fc4246f8 Binary files /dev/null and b/public/terrain/19/858535/353955.terrain differ diff --git a/public/terrain/19/858535/353956.terrain b/public/terrain/19/858535/353956.terrain new file mode 100644 index 000000000..e2538b767 Binary files /dev/null and b/public/terrain/19/858535/353956.terrain differ diff --git a/public/terrain/19/858535/353957.terrain b/public/terrain/19/858535/353957.terrain new file mode 100644 index 000000000..e1a1f86ff Binary files /dev/null and b/public/terrain/19/858535/353957.terrain differ diff --git a/public/terrain/19/858535/353958.terrain b/public/terrain/19/858535/353958.terrain new file mode 100644 index 000000000..ae17e2eb6 Binary files /dev/null and b/public/terrain/19/858535/353958.terrain differ diff --git a/public/terrain/19/858535/353959.terrain b/public/terrain/19/858535/353959.terrain new file mode 100644 index 000000000..589685037 Binary files /dev/null and b/public/terrain/19/858535/353959.terrain differ diff --git a/public/terrain/19/858535/353960.terrain b/public/terrain/19/858535/353960.terrain new file mode 100644 index 000000000..497b5f64d Binary files /dev/null and b/public/terrain/19/858535/353960.terrain differ diff --git a/public/terrain/19/858535/353961.terrain b/public/terrain/19/858535/353961.terrain new file mode 100644 index 000000000..81653e388 Binary files /dev/null and b/public/terrain/19/858535/353961.terrain differ diff --git a/public/terrain/19/858535/353962.terrain b/public/terrain/19/858535/353962.terrain new file mode 100644 index 000000000..ae54de604 Binary files /dev/null and b/public/terrain/19/858535/353962.terrain differ diff --git a/public/terrain/19/858535/353963.terrain b/public/terrain/19/858535/353963.terrain new file mode 100644 index 000000000..0592225bd Binary files /dev/null and b/public/terrain/19/858535/353963.terrain differ diff --git a/public/terrain/19/858535/353964.terrain b/public/terrain/19/858535/353964.terrain new file mode 100644 index 000000000..40bd2e3ab Binary files /dev/null and b/public/terrain/19/858535/353964.terrain differ diff --git a/public/terrain/19/858535/353965.terrain b/public/terrain/19/858535/353965.terrain new file mode 100644 index 000000000..bc54e0a0d Binary files /dev/null and b/public/terrain/19/858535/353965.terrain differ diff --git a/public/terrain/19/858535/353966.terrain b/public/terrain/19/858535/353966.terrain new file mode 100644 index 000000000..3f6b28676 Binary files /dev/null and b/public/terrain/19/858535/353966.terrain differ diff --git a/public/terrain/19/858535/353967.terrain b/public/terrain/19/858535/353967.terrain new file mode 100644 index 000000000..763311333 Binary files /dev/null and b/public/terrain/19/858535/353967.terrain differ diff --git a/public/terrain/19/858535/353968.terrain b/public/terrain/19/858535/353968.terrain new file mode 100644 index 000000000..1778e693a Binary files /dev/null and b/public/terrain/19/858535/353968.terrain differ diff --git a/public/terrain/19/858535/353969.terrain b/public/terrain/19/858535/353969.terrain new file mode 100644 index 000000000..0070024a5 Binary files /dev/null and b/public/terrain/19/858535/353969.terrain differ diff --git a/public/terrain/19/858535/353970.terrain b/public/terrain/19/858535/353970.terrain new file mode 100644 index 000000000..0bdcf8ed5 Binary files /dev/null and b/public/terrain/19/858535/353970.terrain differ diff --git a/public/terrain/19/858535/353971.terrain b/public/terrain/19/858535/353971.terrain new file mode 100644 index 000000000..a027b73be Binary files /dev/null and b/public/terrain/19/858535/353971.terrain differ diff --git a/public/terrain/19/858535/353972.terrain b/public/terrain/19/858535/353972.terrain new file mode 100644 index 000000000..3247b5245 Binary files /dev/null and b/public/terrain/19/858535/353972.terrain differ diff --git a/public/terrain/19/858535/353973.terrain b/public/terrain/19/858535/353973.terrain new file mode 100644 index 000000000..448c204ce Binary files /dev/null and b/public/terrain/19/858535/353973.terrain differ diff --git a/public/terrain/19/858535/353974.terrain b/public/terrain/19/858535/353974.terrain new file mode 100644 index 000000000..8361666a6 Binary files /dev/null and b/public/terrain/19/858535/353974.terrain differ diff --git a/public/terrain/19/858535/353975.terrain b/public/terrain/19/858535/353975.terrain new file mode 100644 index 000000000..e68f892de Binary files /dev/null and b/public/terrain/19/858535/353975.terrain differ diff --git a/public/terrain/19/858535/353976.terrain b/public/terrain/19/858535/353976.terrain new file mode 100644 index 000000000..32f5629cd Binary files /dev/null and b/public/terrain/19/858535/353976.terrain differ diff --git a/public/terrain/19/858535/353977.terrain b/public/terrain/19/858535/353977.terrain new file mode 100644 index 000000000..0642a44c2 Binary files /dev/null and b/public/terrain/19/858535/353977.terrain differ diff --git a/public/terrain/19/858535/353978.terrain b/public/terrain/19/858535/353978.terrain new file mode 100644 index 000000000..477c2b025 Binary files /dev/null and b/public/terrain/19/858535/353978.terrain differ diff --git a/public/terrain/19/858535/353979.terrain b/public/terrain/19/858535/353979.terrain new file mode 100644 index 000000000..6f909e8a2 Binary files /dev/null and b/public/terrain/19/858535/353979.terrain differ diff --git a/public/terrain/19/858535/353980.terrain b/public/terrain/19/858535/353980.terrain new file mode 100644 index 000000000..fac0555b5 Binary files /dev/null and b/public/terrain/19/858535/353980.terrain differ diff --git a/public/terrain/19/858535/353981.terrain b/public/terrain/19/858535/353981.terrain new file mode 100644 index 000000000..be12900e6 Binary files /dev/null and b/public/terrain/19/858535/353981.terrain differ diff --git a/public/terrain/19/858535/353982.terrain b/public/terrain/19/858535/353982.terrain new file mode 100644 index 000000000..b4d7473a4 Binary files /dev/null and b/public/terrain/19/858535/353982.terrain differ diff --git a/public/terrain/19/858535/353983.terrain b/public/terrain/19/858535/353983.terrain new file mode 100644 index 000000000..ad4d11ff6 Binary files /dev/null and b/public/terrain/19/858535/353983.terrain differ diff --git a/public/terrain/19/858535/353984.terrain b/public/terrain/19/858535/353984.terrain new file mode 100644 index 000000000..3bc9371a4 Binary files /dev/null and b/public/terrain/19/858535/353984.terrain differ diff --git a/public/terrain/19/858535/353985.terrain b/public/terrain/19/858535/353985.terrain new file mode 100644 index 000000000..cf880bf8a Binary files /dev/null and b/public/terrain/19/858535/353985.terrain differ diff --git a/public/terrain/19/858535/353986.terrain b/public/terrain/19/858535/353986.terrain new file mode 100644 index 000000000..62157975f Binary files /dev/null and b/public/terrain/19/858535/353986.terrain differ diff --git a/public/terrain/19/858535/353987.terrain b/public/terrain/19/858535/353987.terrain new file mode 100644 index 000000000..a5f377dcb Binary files /dev/null and b/public/terrain/19/858535/353987.terrain differ diff --git a/public/terrain/19/858535/353988.terrain b/public/terrain/19/858535/353988.terrain new file mode 100644 index 000000000..f1195afcf Binary files /dev/null and b/public/terrain/19/858535/353988.terrain differ diff --git a/public/terrain/19/858535/353989.terrain b/public/terrain/19/858535/353989.terrain new file mode 100644 index 000000000..4609e5b3b Binary files /dev/null and b/public/terrain/19/858535/353989.terrain differ diff --git a/public/terrain/19/858535/353990.terrain b/public/terrain/19/858535/353990.terrain new file mode 100644 index 000000000..3725bb3aa Binary files /dev/null and b/public/terrain/19/858535/353990.terrain differ diff --git a/public/terrain/19/858535/353991.terrain b/public/terrain/19/858535/353991.terrain new file mode 100644 index 000000000..c7e01a87d Binary files /dev/null and b/public/terrain/19/858535/353991.terrain differ diff --git a/public/terrain/19/858535/353992.terrain b/public/terrain/19/858535/353992.terrain new file mode 100644 index 000000000..a24e6ef91 Binary files /dev/null and b/public/terrain/19/858535/353992.terrain differ diff --git a/public/terrain/19/858535/353993.terrain b/public/terrain/19/858535/353993.terrain new file mode 100644 index 000000000..8a5dccd77 Binary files /dev/null and b/public/terrain/19/858535/353993.terrain differ diff --git a/public/terrain/19/858535/353994.terrain b/public/terrain/19/858535/353994.terrain new file mode 100644 index 000000000..bbe83816f Binary files /dev/null and b/public/terrain/19/858535/353994.terrain differ diff --git a/public/terrain/19/858535/353995.terrain b/public/terrain/19/858535/353995.terrain new file mode 100644 index 000000000..f7133701d Binary files /dev/null and b/public/terrain/19/858535/353995.terrain differ diff --git a/public/terrain/19/858535/353996.terrain b/public/terrain/19/858535/353996.terrain new file mode 100644 index 000000000..62c4f4ae1 Binary files /dev/null and b/public/terrain/19/858535/353996.terrain differ diff --git a/public/terrain/19/858535/353997.terrain b/public/terrain/19/858535/353997.terrain new file mode 100644 index 000000000..2eb9140e9 Binary files /dev/null and b/public/terrain/19/858535/353997.terrain differ diff --git a/public/terrain/19/858535/353998.terrain b/public/terrain/19/858535/353998.terrain new file mode 100644 index 000000000..ed504b793 Binary files /dev/null and b/public/terrain/19/858535/353998.terrain differ diff --git a/public/terrain/19/858535/353999.terrain b/public/terrain/19/858535/353999.terrain new file mode 100644 index 000000000..89ab0ce01 Binary files /dev/null and b/public/terrain/19/858535/353999.terrain differ diff --git a/public/terrain/19/858535/354000.terrain b/public/terrain/19/858535/354000.terrain new file mode 100644 index 000000000..e41e5278b Binary files /dev/null and b/public/terrain/19/858535/354000.terrain differ diff --git a/public/terrain/19/858535/354001.terrain b/public/terrain/19/858535/354001.terrain new file mode 100644 index 000000000..5f4b9deef Binary files /dev/null and b/public/terrain/19/858535/354001.terrain differ diff --git a/public/terrain/19/858535/354002.terrain b/public/terrain/19/858535/354002.terrain new file mode 100644 index 000000000..4b19179e7 Binary files /dev/null and b/public/terrain/19/858535/354002.terrain differ diff --git a/public/terrain/19/858535/354003.terrain b/public/terrain/19/858535/354003.terrain new file mode 100644 index 000000000..cbded62d1 Binary files /dev/null and b/public/terrain/19/858535/354003.terrain differ diff --git a/public/terrain/19/858535/354004.terrain b/public/terrain/19/858535/354004.terrain new file mode 100644 index 000000000..39b3339ec Binary files /dev/null and b/public/terrain/19/858535/354004.terrain differ diff --git a/public/terrain/19/858535/354005.terrain b/public/terrain/19/858535/354005.terrain new file mode 100644 index 000000000..ff97cb073 Binary files /dev/null and b/public/terrain/19/858535/354005.terrain differ diff --git a/public/terrain/19/858535/354006.terrain b/public/terrain/19/858535/354006.terrain new file mode 100644 index 000000000..46a2c99c2 Binary files /dev/null and b/public/terrain/19/858535/354006.terrain differ diff --git a/public/terrain/19/858535/354007.terrain b/public/terrain/19/858535/354007.terrain new file mode 100644 index 000000000..cacd5ce36 Binary files /dev/null and b/public/terrain/19/858535/354007.terrain differ diff --git a/public/terrain/19/858535/354008.terrain b/public/terrain/19/858535/354008.terrain new file mode 100644 index 000000000..dccea5141 Binary files /dev/null and b/public/terrain/19/858535/354008.terrain differ diff --git a/public/terrain/19/858535/354009.terrain b/public/terrain/19/858535/354009.terrain new file mode 100644 index 000000000..4efae574c Binary files /dev/null and b/public/terrain/19/858535/354009.terrain differ diff --git a/public/terrain/19/858535/354010.terrain b/public/terrain/19/858535/354010.terrain new file mode 100644 index 000000000..a8762218a Binary files /dev/null and b/public/terrain/19/858535/354010.terrain differ diff --git a/public/terrain/19/858535/354011.terrain b/public/terrain/19/858535/354011.terrain new file mode 100644 index 000000000..0425928b4 Binary files /dev/null and b/public/terrain/19/858535/354011.terrain differ diff --git a/public/terrain/19/858535/354012.terrain b/public/terrain/19/858535/354012.terrain new file mode 100644 index 000000000..45fa8a1c5 Binary files /dev/null and b/public/terrain/19/858535/354012.terrain differ diff --git a/public/terrain/19/858535/354013.terrain b/public/terrain/19/858535/354013.terrain new file mode 100644 index 000000000..ee1e3e16e Binary files /dev/null and b/public/terrain/19/858535/354013.terrain differ diff --git a/public/terrain/19/858535/354014.terrain b/public/terrain/19/858535/354014.terrain new file mode 100644 index 000000000..914a8828a Binary files /dev/null and b/public/terrain/19/858535/354014.terrain differ diff --git a/public/terrain/19/858535/354015.terrain b/public/terrain/19/858535/354015.terrain new file mode 100644 index 000000000..18759440c Binary files /dev/null and b/public/terrain/19/858535/354015.terrain differ diff --git a/public/terrain/19/858535/354016.terrain b/public/terrain/19/858535/354016.terrain new file mode 100644 index 000000000..d186437ee Binary files /dev/null and b/public/terrain/19/858535/354016.terrain differ diff --git a/public/terrain/19/858535/354017.terrain b/public/terrain/19/858535/354017.terrain new file mode 100644 index 000000000..73e65e506 Binary files /dev/null and b/public/terrain/19/858535/354017.terrain differ diff --git a/public/terrain/19/858535/354018.terrain b/public/terrain/19/858535/354018.terrain new file mode 100644 index 000000000..bd19b1272 Binary files /dev/null and b/public/terrain/19/858535/354018.terrain differ diff --git a/public/terrain/19/858535/354019.terrain b/public/terrain/19/858535/354019.terrain new file mode 100644 index 000000000..3ca781914 Binary files /dev/null and b/public/terrain/19/858535/354019.terrain differ diff --git a/public/terrain/19/858535/354020.terrain b/public/terrain/19/858535/354020.terrain new file mode 100644 index 000000000..d694d4fa8 Binary files /dev/null and b/public/terrain/19/858535/354020.terrain differ diff --git a/public/terrain/19/858535/354021.terrain b/public/terrain/19/858535/354021.terrain new file mode 100644 index 000000000..1b37603d2 Binary files /dev/null and b/public/terrain/19/858535/354021.terrain differ diff --git a/public/terrain/19/858535/354022.terrain b/public/terrain/19/858535/354022.terrain new file mode 100644 index 000000000..02494adde Binary files /dev/null and b/public/terrain/19/858535/354022.terrain differ diff --git a/public/terrain/19/858535/354023.terrain b/public/terrain/19/858535/354023.terrain new file mode 100644 index 000000000..3ec894321 Binary files /dev/null and b/public/terrain/19/858535/354023.terrain differ diff --git a/public/terrain/19/858535/354024.terrain b/public/terrain/19/858535/354024.terrain new file mode 100644 index 000000000..f7d8c5460 Binary files /dev/null and b/public/terrain/19/858535/354024.terrain differ diff --git a/public/terrain/19/858535/354025.terrain b/public/terrain/19/858535/354025.terrain new file mode 100644 index 000000000..c7d2a4223 Binary files /dev/null and b/public/terrain/19/858535/354025.terrain differ diff --git a/public/terrain/19/858535/354026.terrain b/public/terrain/19/858535/354026.terrain new file mode 100644 index 000000000..f80f57086 Binary files /dev/null and b/public/terrain/19/858535/354026.terrain differ diff --git a/public/terrain/19/858535/354027.terrain b/public/terrain/19/858535/354027.terrain new file mode 100644 index 000000000..8102d36ec Binary files /dev/null and b/public/terrain/19/858535/354027.terrain differ diff --git a/public/terrain/19/858535/354028.terrain b/public/terrain/19/858535/354028.terrain new file mode 100644 index 000000000..0f3aa92b4 Binary files /dev/null and b/public/terrain/19/858535/354028.terrain differ diff --git a/public/terrain/19/858535/354029.terrain b/public/terrain/19/858535/354029.terrain new file mode 100644 index 000000000..e8e36edc5 Binary files /dev/null and b/public/terrain/19/858535/354029.terrain differ diff --git a/public/terrain/19/858535/354030.terrain b/public/terrain/19/858535/354030.terrain new file mode 100644 index 000000000..35c53d1f5 Binary files /dev/null and b/public/terrain/19/858535/354030.terrain differ diff --git a/public/terrain/19/858535/354031.terrain b/public/terrain/19/858535/354031.terrain new file mode 100644 index 000000000..acea25c4e Binary files /dev/null and b/public/terrain/19/858535/354031.terrain differ diff --git a/public/terrain/19/858535/354032.terrain b/public/terrain/19/858535/354032.terrain new file mode 100644 index 000000000..8cbb140cd Binary files /dev/null and b/public/terrain/19/858535/354032.terrain differ diff --git a/public/terrain/19/858535/354033.terrain b/public/terrain/19/858535/354033.terrain new file mode 100644 index 000000000..620d5697c Binary files /dev/null and b/public/terrain/19/858535/354033.terrain differ diff --git a/public/terrain/19/858535/354034.terrain b/public/terrain/19/858535/354034.terrain new file mode 100644 index 000000000..415d54d0b Binary files /dev/null and b/public/terrain/19/858535/354034.terrain differ diff --git a/public/terrain/19/858535/354035.terrain b/public/terrain/19/858535/354035.terrain new file mode 100644 index 000000000..1756de49d Binary files /dev/null and b/public/terrain/19/858535/354035.terrain differ diff --git a/public/terrain/19/858535/354036.terrain b/public/terrain/19/858535/354036.terrain new file mode 100644 index 000000000..bcbc0cb18 Binary files /dev/null and b/public/terrain/19/858535/354036.terrain differ diff --git a/public/terrain/19/858535/354037.terrain b/public/terrain/19/858535/354037.terrain new file mode 100644 index 000000000..8e41c8ed4 Binary files /dev/null and b/public/terrain/19/858535/354037.terrain differ diff --git a/public/terrain/19/858535/354038.terrain b/public/terrain/19/858535/354038.terrain new file mode 100644 index 000000000..70e8bd96f Binary files /dev/null and b/public/terrain/19/858535/354038.terrain differ diff --git a/public/terrain/19/858535/354039.terrain b/public/terrain/19/858535/354039.terrain new file mode 100644 index 000000000..ae52ddbee Binary files /dev/null and b/public/terrain/19/858535/354039.terrain differ diff --git a/public/terrain/19/858535/354040.terrain b/public/terrain/19/858535/354040.terrain new file mode 100644 index 000000000..bd68a9e0c Binary files /dev/null and b/public/terrain/19/858535/354040.terrain differ diff --git a/public/terrain/19/858535/354041.terrain b/public/terrain/19/858535/354041.terrain new file mode 100644 index 000000000..945b37e6e Binary files /dev/null and b/public/terrain/19/858535/354041.terrain differ diff --git a/public/terrain/19/858535/354042.terrain b/public/terrain/19/858535/354042.terrain new file mode 100644 index 000000000..c2f01035c Binary files /dev/null and b/public/terrain/19/858535/354042.terrain differ diff --git a/public/terrain/19/858535/354043.terrain b/public/terrain/19/858535/354043.terrain new file mode 100644 index 000000000..40e7f3ba3 Binary files /dev/null and b/public/terrain/19/858535/354043.terrain differ diff --git a/public/terrain/19/858535/354044.terrain b/public/terrain/19/858535/354044.terrain new file mode 100644 index 000000000..6aca6daad Binary files /dev/null and b/public/terrain/19/858535/354044.terrain differ diff --git a/public/terrain/19/858535/354045.terrain b/public/terrain/19/858535/354045.terrain new file mode 100644 index 000000000..c44d94a1c Binary files /dev/null and b/public/terrain/19/858535/354045.terrain differ diff --git a/public/terrain/19/858535/354046.terrain b/public/terrain/19/858535/354046.terrain new file mode 100644 index 000000000..090b9ea54 Binary files /dev/null and b/public/terrain/19/858535/354046.terrain differ diff --git a/public/terrain/19/858535/354047.terrain b/public/terrain/19/858535/354047.terrain new file mode 100644 index 000000000..7eabffd38 Binary files /dev/null and b/public/terrain/19/858535/354047.terrain differ diff --git a/public/terrain/19/858535/354048.terrain b/public/terrain/19/858535/354048.terrain new file mode 100644 index 000000000..cbd0a8cd0 Binary files /dev/null and b/public/terrain/19/858535/354048.terrain differ diff --git a/public/terrain/19/858535/354049.terrain b/public/terrain/19/858535/354049.terrain new file mode 100644 index 000000000..2a004460c Binary files /dev/null and b/public/terrain/19/858535/354049.terrain differ diff --git a/public/terrain/19/858535/354050.terrain b/public/terrain/19/858535/354050.terrain new file mode 100644 index 000000000..ab557d889 Binary files /dev/null and b/public/terrain/19/858535/354050.terrain differ diff --git a/public/terrain/19/858535/354051.terrain b/public/terrain/19/858535/354051.terrain new file mode 100644 index 000000000..956f92d23 Binary files /dev/null and b/public/terrain/19/858535/354051.terrain differ diff --git a/public/terrain/19/858535/354052.terrain b/public/terrain/19/858535/354052.terrain new file mode 100644 index 000000000..af9af1c1b Binary files /dev/null and b/public/terrain/19/858535/354052.terrain differ diff --git a/public/terrain/19/858535/354053.terrain b/public/terrain/19/858535/354053.terrain new file mode 100644 index 000000000..647dd699b Binary files /dev/null and b/public/terrain/19/858535/354053.terrain differ diff --git a/public/terrain/19/858535/354054.terrain b/public/terrain/19/858535/354054.terrain new file mode 100644 index 000000000..d51b71756 Binary files /dev/null and b/public/terrain/19/858535/354054.terrain differ diff --git a/public/terrain/19/858535/354055.terrain b/public/terrain/19/858535/354055.terrain new file mode 100644 index 000000000..dd59265d6 Binary files /dev/null and b/public/terrain/19/858535/354055.terrain differ diff --git a/public/terrain/19/858535/354056.terrain b/public/terrain/19/858535/354056.terrain new file mode 100644 index 000000000..121df98fa Binary files /dev/null and b/public/terrain/19/858535/354056.terrain differ diff --git a/public/terrain/19/858535/354057.terrain b/public/terrain/19/858535/354057.terrain new file mode 100644 index 000000000..f47546b94 Binary files /dev/null and b/public/terrain/19/858535/354057.terrain differ diff --git a/public/terrain/19/858535/354058.terrain b/public/terrain/19/858535/354058.terrain new file mode 100644 index 000000000..0043a32f5 Binary files /dev/null and b/public/terrain/19/858535/354058.terrain differ diff --git a/public/terrain/19/858535/354059.terrain b/public/terrain/19/858535/354059.terrain new file mode 100644 index 000000000..a624aa9e7 Binary files /dev/null and b/public/terrain/19/858535/354059.terrain differ diff --git a/public/terrain/19/858536/353743.terrain b/public/terrain/19/858536/353743.terrain new file mode 100644 index 000000000..8065fe2d1 Binary files /dev/null and b/public/terrain/19/858536/353743.terrain differ diff --git a/public/terrain/19/858536/353744.terrain b/public/terrain/19/858536/353744.terrain new file mode 100644 index 000000000..64511cf3b Binary files /dev/null and b/public/terrain/19/858536/353744.terrain differ diff --git a/public/terrain/19/858536/353745.terrain b/public/terrain/19/858536/353745.terrain new file mode 100644 index 000000000..a6ed73e60 Binary files /dev/null and b/public/terrain/19/858536/353745.terrain differ diff --git a/public/terrain/19/858536/353746.terrain b/public/terrain/19/858536/353746.terrain new file mode 100644 index 000000000..030df2aba Binary files /dev/null and b/public/terrain/19/858536/353746.terrain differ diff --git a/public/terrain/19/858536/353747.terrain b/public/terrain/19/858536/353747.terrain new file mode 100644 index 000000000..e63da6ddd Binary files /dev/null and b/public/terrain/19/858536/353747.terrain differ diff --git a/public/terrain/19/858536/353748.terrain b/public/terrain/19/858536/353748.terrain new file mode 100644 index 000000000..39a93cfde Binary files /dev/null and b/public/terrain/19/858536/353748.terrain differ diff --git a/public/terrain/19/858536/353749.terrain b/public/terrain/19/858536/353749.terrain new file mode 100644 index 000000000..57a2d2706 Binary files /dev/null and b/public/terrain/19/858536/353749.terrain differ diff --git a/public/terrain/19/858536/353750.terrain b/public/terrain/19/858536/353750.terrain new file mode 100644 index 000000000..3ba76c71f Binary files /dev/null and b/public/terrain/19/858536/353750.terrain differ diff --git a/public/terrain/19/858536/353751.terrain b/public/terrain/19/858536/353751.terrain new file mode 100644 index 000000000..06a569919 Binary files /dev/null and b/public/terrain/19/858536/353751.terrain differ diff --git a/public/terrain/19/858536/353752.terrain b/public/terrain/19/858536/353752.terrain new file mode 100644 index 000000000..3c935ec80 Binary files /dev/null and b/public/terrain/19/858536/353752.terrain differ diff --git a/public/terrain/19/858536/353753.terrain b/public/terrain/19/858536/353753.terrain new file mode 100644 index 000000000..bf6d958a2 Binary files /dev/null and b/public/terrain/19/858536/353753.terrain differ diff --git a/public/terrain/19/858536/353754.terrain b/public/terrain/19/858536/353754.terrain new file mode 100644 index 000000000..d10cb7d3d Binary files /dev/null and b/public/terrain/19/858536/353754.terrain differ diff --git a/public/terrain/19/858536/353755.terrain b/public/terrain/19/858536/353755.terrain new file mode 100644 index 000000000..5af2da524 Binary files /dev/null and b/public/terrain/19/858536/353755.terrain differ diff --git a/public/terrain/19/858536/353756.terrain b/public/terrain/19/858536/353756.terrain new file mode 100644 index 000000000..4777c36a9 Binary files /dev/null and b/public/terrain/19/858536/353756.terrain differ diff --git a/public/terrain/19/858536/353757.terrain b/public/terrain/19/858536/353757.terrain new file mode 100644 index 000000000..43b36dcdf Binary files /dev/null and b/public/terrain/19/858536/353757.terrain differ diff --git a/public/terrain/19/858536/353758.terrain b/public/terrain/19/858536/353758.terrain new file mode 100644 index 000000000..1e6d79463 Binary files /dev/null and b/public/terrain/19/858536/353758.terrain differ diff --git a/public/terrain/19/858536/353759.terrain b/public/terrain/19/858536/353759.terrain new file mode 100644 index 000000000..79079e351 Binary files /dev/null and b/public/terrain/19/858536/353759.terrain differ diff --git a/public/terrain/19/858536/353760.terrain b/public/terrain/19/858536/353760.terrain new file mode 100644 index 000000000..2eb8e3aaf Binary files /dev/null and b/public/terrain/19/858536/353760.terrain differ diff --git a/public/terrain/19/858536/353761.terrain b/public/terrain/19/858536/353761.terrain new file mode 100644 index 000000000..a929d3e2e Binary files /dev/null and b/public/terrain/19/858536/353761.terrain differ diff --git a/public/terrain/19/858536/353762.terrain b/public/terrain/19/858536/353762.terrain new file mode 100644 index 000000000..3116a961d Binary files /dev/null and b/public/terrain/19/858536/353762.terrain differ diff --git a/public/terrain/19/858536/353763.terrain b/public/terrain/19/858536/353763.terrain new file mode 100644 index 000000000..3e59a7989 Binary files /dev/null and b/public/terrain/19/858536/353763.terrain differ diff --git a/public/terrain/19/858536/353764.terrain b/public/terrain/19/858536/353764.terrain new file mode 100644 index 000000000..075fc9992 Binary files /dev/null and b/public/terrain/19/858536/353764.terrain differ diff --git a/public/terrain/19/858536/353765.terrain b/public/terrain/19/858536/353765.terrain new file mode 100644 index 000000000..a94ea20f9 Binary files /dev/null and b/public/terrain/19/858536/353765.terrain differ diff --git a/public/terrain/19/858536/353766.terrain b/public/terrain/19/858536/353766.terrain new file mode 100644 index 000000000..03e5c20ef Binary files /dev/null and b/public/terrain/19/858536/353766.terrain differ diff --git a/public/terrain/19/858536/353767.terrain b/public/terrain/19/858536/353767.terrain new file mode 100644 index 000000000..1fb37261b Binary files /dev/null and b/public/terrain/19/858536/353767.terrain differ diff --git a/public/terrain/19/858536/353768.terrain b/public/terrain/19/858536/353768.terrain new file mode 100644 index 000000000..ca6feec52 Binary files /dev/null and b/public/terrain/19/858536/353768.terrain differ diff --git a/public/terrain/19/858536/353769.terrain b/public/terrain/19/858536/353769.terrain new file mode 100644 index 000000000..6e3609525 Binary files /dev/null and b/public/terrain/19/858536/353769.terrain differ diff --git a/public/terrain/19/858536/353770.terrain b/public/terrain/19/858536/353770.terrain new file mode 100644 index 000000000..3d97af04b Binary files /dev/null and b/public/terrain/19/858536/353770.terrain differ diff --git a/public/terrain/19/858536/353771.terrain b/public/terrain/19/858536/353771.terrain new file mode 100644 index 000000000..c57d9372f Binary files /dev/null and b/public/terrain/19/858536/353771.terrain differ diff --git a/public/terrain/19/858536/353772.terrain b/public/terrain/19/858536/353772.terrain new file mode 100644 index 000000000..064633858 Binary files /dev/null and b/public/terrain/19/858536/353772.terrain differ diff --git a/public/terrain/19/858536/353773.terrain b/public/terrain/19/858536/353773.terrain new file mode 100644 index 000000000..bf9d9ef03 Binary files /dev/null and b/public/terrain/19/858536/353773.terrain differ diff --git a/public/terrain/19/858536/353774.terrain b/public/terrain/19/858536/353774.terrain new file mode 100644 index 000000000..d12b479a2 Binary files /dev/null and b/public/terrain/19/858536/353774.terrain differ diff --git a/public/terrain/19/858536/353775.terrain b/public/terrain/19/858536/353775.terrain new file mode 100644 index 000000000..037b487e0 Binary files /dev/null and b/public/terrain/19/858536/353775.terrain differ diff --git a/public/terrain/19/858536/353776.terrain b/public/terrain/19/858536/353776.terrain new file mode 100644 index 000000000..8087b3036 Binary files /dev/null and b/public/terrain/19/858536/353776.terrain differ diff --git a/public/terrain/19/858536/353777.terrain b/public/terrain/19/858536/353777.terrain new file mode 100644 index 000000000..f496ca20c Binary files /dev/null and b/public/terrain/19/858536/353777.terrain differ diff --git a/public/terrain/19/858536/353778.terrain b/public/terrain/19/858536/353778.terrain new file mode 100644 index 000000000..5e472d532 Binary files /dev/null and b/public/terrain/19/858536/353778.terrain differ diff --git a/public/terrain/19/858536/353779.terrain b/public/terrain/19/858536/353779.terrain new file mode 100644 index 000000000..2afe0e894 Binary files /dev/null and b/public/terrain/19/858536/353779.terrain differ diff --git a/public/terrain/19/858536/353780.terrain b/public/terrain/19/858536/353780.terrain new file mode 100644 index 000000000..c8b1e87ea Binary files /dev/null and b/public/terrain/19/858536/353780.terrain differ diff --git a/public/terrain/19/858536/353781.terrain b/public/terrain/19/858536/353781.terrain new file mode 100644 index 000000000..228c142c8 Binary files /dev/null and b/public/terrain/19/858536/353781.terrain differ diff --git a/public/terrain/19/858536/353782.terrain b/public/terrain/19/858536/353782.terrain new file mode 100644 index 000000000..09ba24fb5 Binary files /dev/null and b/public/terrain/19/858536/353782.terrain differ diff --git a/public/terrain/19/858536/353783.terrain b/public/terrain/19/858536/353783.terrain new file mode 100644 index 000000000..dbe00e7a8 Binary files /dev/null and b/public/terrain/19/858536/353783.terrain differ diff --git a/public/terrain/19/858536/353784.terrain b/public/terrain/19/858536/353784.terrain new file mode 100644 index 000000000..49180ffc1 Binary files /dev/null and b/public/terrain/19/858536/353784.terrain differ diff --git a/public/terrain/19/858536/353785.terrain b/public/terrain/19/858536/353785.terrain new file mode 100644 index 000000000..8c320a47e Binary files /dev/null and b/public/terrain/19/858536/353785.terrain differ diff --git a/public/terrain/19/858536/353786.terrain b/public/terrain/19/858536/353786.terrain new file mode 100644 index 000000000..f5e482d66 Binary files /dev/null and b/public/terrain/19/858536/353786.terrain differ diff --git a/public/terrain/19/858536/353787.terrain b/public/terrain/19/858536/353787.terrain new file mode 100644 index 000000000..b1b2559d6 Binary files /dev/null and b/public/terrain/19/858536/353787.terrain differ diff --git a/public/terrain/19/858536/353788.terrain b/public/terrain/19/858536/353788.terrain new file mode 100644 index 000000000..4c48e802b Binary files /dev/null and b/public/terrain/19/858536/353788.terrain differ diff --git a/public/terrain/19/858536/353789.terrain b/public/terrain/19/858536/353789.terrain new file mode 100644 index 000000000..01b380ba9 Binary files /dev/null and b/public/terrain/19/858536/353789.terrain differ diff --git a/public/terrain/19/858536/353790.terrain b/public/terrain/19/858536/353790.terrain new file mode 100644 index 000000000..af8ee7db7 Binary files /dev/null and b/public/terrain/19/858536/353790.terrain differ diff --git a/public/terrain/19/858536/353791.terrain b/public/terrain/19/858536/353791.terrain new file mode 100644 index 000000000..3023a282f Binary files /dev/null and b/public/terrain/19/858536/353791.terrain differ diff --git a/public/terrain/19/858536/353792.terrain b/public/terrain/19/858536/353792.terrain new file mode 100644 index 000000000..e81c3ff98 Binary files /dev/null and b/public/terrain/19/858536/353792.terrain differ diff --git a/public/terrain/19/858536/353793.terrain b/public/terrain/19/858536/353793.terrain new file mode 100644 index 000000000..086b97c5d Binary files /dev/null and b/public/terrain/19/858536/353793.terrain differ diff --git a/public/terrain/19/858536/353794.terrain b/public/terrain/19/858536/353794.terrain new file mode 100644 index 000000000..7cced012e Binary files /dev/null and b/public/terrain/19/858536/353794.terrain differ diff --git a/public/terrain/19/858536/353795.terrain b/public/terrain/19/858536/353795.terrain new file mode 100644 index 000000000..f4ecedc5d Binary files /dev/null and b/public/terrain/19/858536/353795.terrain differ diff --git a/public/terrain/19/858536/353796.terrain b/public/terrain/19/858536/353796.terrain new file mode 100644 index 000000000..c8dca3e95 Binary files /dev/null and b/public/terrain/19/858536/353796.terrain differ diff --git a/public/terrain/19/858536/353797.terrain b/public/terrain/19/858536/353797.terrain new file mode 100644 index 000000000..028824a3f Binary files /dev/null and b/public/terrain/19/858536/353797.terrain differ diff --git a/public/terrain/19/858536/353798.terrain b/public/terrain/19/858536/353798.terrain new file mode 100644 index 000000000..66c069151 Binary files /dev/null and b/public/terrain/19/858536/353798.terrain differ diff --git a/public/terrain/19/858536/353799.terrain b/public/terrain/19/858536/353799.terrain new file mode 100644 index 000000000..f41d3fc11 Binary files /dev/null and b/public/terrain/19/858536/353799.terrain differ diff --git a/public/terrain/19/858536/353800.terrain b/public/terrain/19/858536/353800.terrain new file mode 100644 index 000000000..5a7991932 Binary files /dev/null and b/public/terrain/19/858536/353800.terrain differ diff --git a/public/terrain/19/858536/353801.terrain b/public/terrain/19/858536/353801.terrain new file mode 100644 index 000000000..104efcad2 Binary files /dev/null and b/public/terrain/19/858536/353801.terrain differ diff --git a/public/terrain/19/858536/353802.terrain b/public/terrain/19/858536/353802.terrain new file mode 100644 index 000000000..2cb213624 Binary files /dev/null and b/public/terrain/19/858536/353802.terrain differ diff --git a/public/terrain/19/858536/353803.terrain b/public/terrain/19/858536/353803.terrain new file mode 100644 index 000000000..94d3c6476 Binary files /dev/null and b/public/terrain/19/858536/353803.terrain differ diff --git a/public/terrain/19/858536/353804.terrain b/public/terrain/19/858536/353804.terrain new file mode 100644 index 000000000..0a6976293 Binary files /dev/null and b/public/terrain/19/858536/353804.terrain differ diff --git a/public/terrain/19/858536/353805.terrain b/public/terrain/19/858536/353805.terrain new file mode 100644 index 000000000..3dff22588 Binary files /dev/null and b/public/terrain/19/858536/353805.terrain differ diff --git a/public/terrain/19/858536/353806.terrain b/public/terrain/19/858536/353806.terrain new file mode 100644 index 000000000..48a62600f Binary files /dev/null and b/public/terrain/19/858536/353806.terrain differ diff --git a/public/terrain/19/858536/353807.terrain b/public/terrain/19/858536/353807.terrain new file mode 100644 index 000000000..12cb4f2f0 Binary files /dev/null and b/public/terrain/19/858536/353807.terrain differ diff --git a/public/terrain/19/858536/353808.terrain b/public/terrain/19/858536/353808.terrain new file mode 100644 index 000000000..1ec43dcc0 Binary files /dev/null and b/public/terrain/19/858536/353808.terrain differ diff --git a/public/terrain/19/858536/353809.terrain b/public/terrain/19/858536/353809.terrain new file mode 100644 index 000000000..064645c87 Binary files /dev/null and b/public/terrain/19/858536/353809.terrain differ diff --git a/public/terrain/19/858536/353810.terrain b/public/terrain/19/858536/353810.terrain new file mode 100644 index 000000000..2ee2faee1 Binary files /dev/null and b/public/terrain/19/858536/353810.terrain differ diff --git a/public/terrain/19/858536/353811.terrain b/public/terrain/19/858536/353811.terrain new file mode 100644 index 000000000..c103ab8ca Binary files /dev/null and b/public/terrain/19/858536/353811.terrain differ diff --git a/public/terrain/19/858536/353812.terrain b/public/terrain/19/858536/353812.terrain new file mode 100644 index 000000000..fc928f8cb Binary files /dev/null and b/public/terrain/19/858536/353812.terrain differ diff --git a/public/terrain/19/858536/353813.terrain b/public/terrain/19/858536/353813.terrain new file mode 100644 index 000000000..e210e82bb Binary files /dev/null and b/public/terrain/19/858536/353813.terrain differ diff --git a/public/terrain/19/858536/353814.terrain b/public/terrain/19/858536/353814.terrain new file mode 100644 index 000000000..510f60a78 Binary files /dev/null and b/public/terrain/19/858536/353814.terrain differ diff --git a/public/terrain/19/858536/353815.terrain b/public/terrain/19/858536/353815.terrain new file mode 100644 index 000000000..7c0c63724 Binary files /dev/null and b/public/terrain/19/858536/353815.terrain differ diff --git a/public/terrain/19/858536/353816.terrain b/public/terrain/19/858536/353816.terrain new file mode 100644 index 000000000..1c6db9319 Binary files /dev/null and b/public/terrain/19/858536/353816.terrain differ diff --git a/public/terrain/19/858536/353817.terrain b/public/terrain/19/858536/353817.terrain new file mode 100644 index 000000000..e34b07d34 Binary files /dev/null and b/public/terrain/19/858536/353817.terrain differ diff --git a/public/terrain/19/858536/353818.terrain b/public/terrain/19/858536/353818.terrain new file mode 100644 index 000000000..acd47792f Binary files /dev/null and b/public/terrain/19/858536/353818.terrain differ diff --git a/public/terrain/19/858536/353819.terrain b/public/terrain/19/858536/353819.terrain new file mode 100644 index 000000000..faf9ea916 Binary files /dev/null and b/public/terrain/19/858536/353819.terrain differ diff --git a/public/terrain/19/858536/353820.terrain b/public/terrain/19/858536/353820.terrain new file mode 100644 index 000000000..1eb9d7fc0 Binary files /dev/null and b/public/terrain/19/858536/353820.terrain differ diff --git a/public/terrain/19/858536/353821.terrain b/public/terrain/19/858536/353821.terrain new file mode 100644 index 000000000..85aab3a0a Binary files /dev/null and b/public/terrain/19/858536/353821.terrain differ diff --git a/public/terrain/19/858536/353822.terrain b/public/terrain/19/858536/353822.terrain new file mode 100644 index 000000000..81cb6af96 Binary files /dev/null and b/public/terrain/19/858536/353822.terrain differ diff --git a/public/terrain/19/858536/353823.terrain b/public/terrain/19/858536/353823.terrain new file mode 100644 index 000000000..66cf0916c Binary files /dev/null and b/public/terrain/19/858536/353823.terrain differ diff --git a/public/terrain/19/858536/353824.terrain b/public/terrain/19/858536/353824.terrain new file mode 100644 index 000000000..7b30aeda9 Binary files /dev/null and b/public/terrain/19/858536/353824.terrain differ diff --git a/public/terrain/19/858536/353825.terrain b/public/terrain/19/858536/353825.terrain new file mode 100644 index 000000000..4dcb5e1e3 Binary files /dev/null and b/public/terrain/19/858536/353825.terrain differ diff --git a/public/terrain/19/858536/353826.terrain b/public/terrain/19/858536/353826.terrain new file mode 100644 index 000000000..79285313d Binary files /dev/null and b/public/terrain/19/858536/353826.terrain differ diff --git a/public/terrain/19/858536/353827.terrain b/public/terrain/19/858536/353827.terrain new file mode 100644 index 000000000..da7e297a6 Binary files /dev/null and b/public/terrain/19/858536/353827.terrain differ diff --git a/public/terrain/19/858536/353828.terrain b/public/terrain/19/858536/353828.terrain new file mode 100644 index 000000000..9409fd819 Binary files /dev/null and b/public/terrain/19/858536/353828.terrain differ diff --git a/public/terrain/19/858536/353829.terrain b/public/terrain/19/858536/353829.terrain new file mode 100644 index 000000000..c084cbd19 Binary files /dev/null and b/public/terrain/19/858536/353829.terrain differ diff --git a/public/terrain/19/858536/353830.terrain b/public/terrain/19/858536/353830.terrain new file mode 100644 index 000000000..d126a2785 Binary files /dev/null and b/public/terrain/19/858536/353830.terrain differ diff --git a/public/terrain/19/858536/353831.terrain b/public/terrain/19/858536/353831.terrain new file mode 100644 index 000000000..a9e1b3f00 Binary files /dev/null and b/public/terrain/19/858536/353831.terrain differ diff --git a/public/terrain/19/858536/353832.terrain b/public/terrain/19/858536/353832.terrain new file mode 100644 index 000000000..4a4253245 Binary files /dev/null and b/public/terrain/19/858536/353832.terrain differ diff --git a/public/terrain/19/858536/353833.terrain b/public/terrain/19/858536/353833.terrain new file mode 100644 index 000000000..c60aabed4 Binary files /dev/null and b/public/terrain/19/858536/353833.terrain differ diff --git a/public/terrain/19/858536/353834.terrain b/public/terrain/19/858536/353834.terrain new file mode 100644 index 000000000..3c350aad8 Binary files /dev/null and b/public/terrain/19/858536/353834.terrain differ diff --git a/public/terrain/19/858536/353835.terrain b/public/terrain/19/858536/353835.terrain new file mode 100644 index 000000000..35b89c812 Binary files /dev/null and b/public/terrain/19/858536/353835.terrain differ diff --git a/public/terrain/19/858536/353836.terrain b/public/terrain/19/858536/353836.terrain new file mode 100644 index 000000000..2763035e2 Binary files /dev/null and b/public/terrain/19/858536/353836.terrain differ diff --git a/public/terrain/19/858536/353837.terrain b/public/terrain/19/858536/353837.terrain new file mode 100644 index 000000000..307c1b16e Binary files /dev/null and b/public/terrain/19/858536/353837.terrain differ diff --git a/public/terrain/19/858536/353838.terrain b/public/terrain/19/858536/353838.terrain new file mode 100644 index 000000000..7d5d11cd8 Binary files /dev/null and b/public/terrain/19/858536/353838.terrain differ diff --git a/public/terrain/19/858536/353839.terrain b/public/terrain/19/858536/353839.terrain new file mode 100644 index 000000000..3bcaa8e25 Binary files /dev/null and b/public/terrain/19/858536/353839.terrain differ diff --git a/public/terrain/19/858536/353840.terrain b/public/terrain/19/858536/353840.terrain new file mode 100644 index 000000000..af7e7ed4a Binary files /dev/null and b/public/terrain/19/858536/353840.terrain differ diff --git a/public/terrain/19/858536/353841.terrain b/public/terrain/19/858536/353841.terrain new file mode 100644 index 000000000..3e2e4f46e Binary files /dev/null and b/public/terrain/19/858536/353841.terrain differ diff --git a/public/terrain/19/858536/353842.terrain b/public/terrain/19/858536/353842.terrain new file mode 100644 index 000000000..60799686c Binary files /dev/null and b/public/terrain/19/858536/353842.terrain differ diff --git a/public/terrain/19/858536/353843.terrain b/public/terrain/19/858536/353843.terrain new file mode 100644 index 000000000..69e838d83 Binary files /dev/null and b/public/terrain/19/858536/353843.terrain differ diff --git a/public/terrain/19/858536/353844.terrain b/public/terrain/19/858536/353844.terrain new file mode 100644 index 000000000..a6d935d96 Binary files /dev/null and b/public/terrain/19/858536/353844.terrain differ diff --git a/public/terrain/19/858536/353845.terrain b/public/terrain/19/858536/353845.terrain new file mode 100644 index 000000000..495f9d03a Binary files /dev/null and b/public/terrain/19/858536/353845.terrain differ diff --git a/public/terrain/19/858536/353846.terrain b/public/terrain/19/858536/353846.terrain new file mode 100644 index 000000000..0f1e77e3c Binary files /dev/null and b/public/terrain/19/858536/353846.terrain differ diff --git a/public/terrain/19/858536/353847.terrain b/public/terrain/19/858536/353847.terrain new file mode 100644 index 000000000..3adf8d975 Binary files /dev/null and b/public/terrain/19/858536/353847.terrain differ diff --git a/public/terrain/19/858536/353848.terrain b/public/terrain/19/858536/353848.terrain new file mode 100644 index 000000000..a01ffbe5d Binary files /dev/null and b/public/terrain/19/858536/353848.terrain differ diff --git a/public/terrain/19/858536/353849.terrain b/public/terrain/19/858536/353849.terrain new file mode 100644 index 000000000..513972ea2 Binary files /dev/null and b/public/terrain/19/858536/353849.terrain differ diff --git a/public/terrain/19/858536/353850.terrain b/public/terrain/19/858536/353850.terrain new file mode 100644 index 000000000..c12a2047a Binary files /dev/null and b/public/terrain/19/858536/353850.terrain differ diff --git a/public/terrain/19/858536/353851.terrain b/public/terrain/19/858536/353851.terrain new file mode 100644 index 000000000..6623e508d Binary files /dev/null and b/public/terrain/19/858536/353851.terrain differ diff --git a/public/terrain/19/858536/353852.terrain b/public/terrain/19/858536/353852.terrain new file mode 100644 index 000000000..bc067a471 Binary files /dev/null and b/public/terrain/19/858536/353852.terrain differ diff --git a/public/terrain/19/858536/353853.terrain b/public/terrain/19/858536/353853.terrain new file mode 100644 index 000000000..37925b9b5 Binary files /dev/null and b/public/terrain/19/858536/353853.terrain differ diff --git a/public/terrain/19/858536/353854.terrain b/public/terrain/19/858536/353854.terrain new file mode 100644 index 000000000..b1af5ddd2 Binary files /dev/null and b/public/terrain/19/858536/353854.terrain differ diff --git a/public/terrain/19/858536/353855.terrain b/public/terrain/19/858536/353855.terrain new file mode 100644 index 000000000..380aaf4b4 Binary files /dev/null and b/public/terrain/19/858536/353855.terrain differ diff --git a/public/terrain/19/858536/353856.terrain b/public/terrain/19/858536/353856.terrain new file mode 100644 index 000000000..709f28d0a Binary files /dev/null and b/public/terrain/19/858536/353856.terrain differ diff --git a/public/terrain/19/858536/353857.terrain b/public/terrain/19/858536/353857.terrain new file mode 100644 index 000000000..0261553e2 Binary files /dev/null and b/public/terrain/19/858536/353857.terrain differ diff --git a/public/terrain/19/858536/353858.terrain b/public/terrain/19/858536/353858.terrain new file mode 100644 index 000000000..add3f709d Binary files /dev/null and b/public/terrain/19/858536/353858.terrain differ diff --git a/public/terrain/19/858536/353859.terrain b/public/terrain/19/858536/353859.terrain new file mode 100644 index 000000000..b8abae2d4 Binary files /dev/null and b/public/terrain/19/858536/353859.terrain differ diff --git a/public/terrain/19/858536/353860.terrain b/public/terrain/19/858536/353860.terrain new file mode 100644 index 000000000..178692c97 Binary files /dev/null and b/public/terrain/19/858536/353860.terrain differ diff --git a/public/terrain/19/858536/353861.terrain b/public/terrain/19/858536/353861.terrain new file mode 100644 index 000000000..05d5c715c Binary files /dev/null and b/public/terrain/19/858536/353861.terrain differ diff --git a/public/terrain/19/858536/353862.terrain b/public/terrain/19/858536/353862.terrain new file mode 100644 index 000000000..379136cef Binary files /dev/null and b/public/terrain/19/858536/353862.terrain differ diff --git a/public/terrain/19/858536/353863.terrain b/public/terrain/19/858536/353863.terrain new file mode 100644 index 000000000..f7fff9ee8 Binary files /dev/null and b/public/terrain/19/858536/353863.terrain differ diff --git a/public/terrain/19/858536/353864.terrain b/public/terrain/19/858536/353864.terrain new file mode 100644 index 000000000..dd9e52944 Binary files /dev/null and b/public/terrain/19/858536/353864.terrain differ diff --git a/public/terrain/19/858536/353865.terrain b/public/terrain/19/858536/353865.terrain new file mode 100644 index 000000000..373fa30b0 Binary files /dev/null and b/public/terrain/19/858536/353865.terrain differ diff --git a/public/terrain/19/858536/353866.terrain b/public/terrain/19/858536/353866.terrain new file mode 100644 index 000000000..23e582adf Binary files /dev/null and b/public/terrain/19/858536/353866.terrain differ diff --git a/public/terrain/19/858536/353867.terrain b/public/terrain/19/858536/353867.terrain new file mode 100644 index 000000000..6a7b55879 Binary files /dev/null and b/public/terrain/19/858536/353867.terrain differ diff --git a/public/terrain/19/858536/353868.terrain b/public/terrain/19/858536/353868.terrain new file mode 100644 index 000000000..372c996d2 Binary files /dev/null and b/public/terrain/19/858536/353868.terrain differ diff --git a/public/terrain/19/858536/353869.terrain b/public/terrain/19/858536/353869.terrain new file mode 100644 index 000000000..24ed5f4db Binary files /dev/null and b/public/terrain/19/858536/353869.terrain differ diff --git a/public/terrain/19/858536/353870.terrain b/public/terrain/19/858536/353870.terrain new file mode 100644 index 000000000..3e4560a1e Binary files /dev/null and b/public/terrain/19/858536/353870.terrain differ diff --git a/public/terrain/19/858536/353871.terrain b/public/terrain/19/858536/353871.terrain new file mode 100644 index 000000000..29d0d6f53 Binary files /dev/null and b/public/terrain/19/858536/353871.terrain differ diff --git a/public/terrain/19/858536/353872.terrain b/public/terrain/19/858536/353872.terrain new file mode 100644 index 000000000..2a91477d4 Binary files /dev/null and b/public/terrain/19/858536/353872.terrain differ diff --git a/public/terrain/19/858536/353873.terrain b/public/terrain/19/858536/353873.terrain new file mode 100644 index 000000000..1ffbed2e6 Binary files /dev/null and b/public/terrain/19/858536/353873.terrain differ diff --git a/public/terrain/19/858536/353874.terrain b/public/terrain/19/858536/353874.terrain new file mode 100644 index 000000000..efa78165a Binary files /dev/null and b/public/terrain/19/858536/353874.terrain differ diff --git a/public/terrain/19/858536/353875.terrain b/public/terrain/19/858536/353875.terrain new file mode 100644 index 000000000..2cbd9988b Binary files /dev/null and b/public/terrain/19/858536/353875.terrain differ diff --git a/public/terrain/19/858536/353876.terrain b/public/terrain/19/858536/353876.terrain new file mode 100644 index 000000000..5ceef3a1f Binary files /dev/null and b/public/terrain/19/858536/353876.terrain differ diff --git a/public/terrain/19/858536/353877.terrain b/public/terrain/19/858536/353877.terrain new file mode 100644 index 000000000..69057f1ed Binary files /dev/null and b/public/terrain/19/858536/353877.terrain differ diff --git a/public/terrain/19/858536/353878.terrain b/public/terrain/19/858536/353878.terrain new file mode 100644 index 000000000..90d6ae704 Binary files /dev/null and b/public/terrain/19/858536/353878.terrain differ diff --git a/public/terrain/19/858536/353879.terrain b/public/terrain/19/858536/353879.terrain new file mode 100644 index 000000000..f91dd5e8d Binary files /dev/null and b/public/terrain/19/858536/353879.terrain differ diff --git a/public/terrain/19/858536/353880.terrain b/public/terrain/19/858536/353880.terrain new file mode 100644 index 000000000..d437386b2 Binary files /dev/null and b/public/terrain/19/858536/353880.terrain differ diff --git a/public/terrain/19/858536/353881.terrain b/public/terrain/19/858536/353881.terrain new file mode 100644 index 000000000..f4c1d35d0 Binary files /dev/null and b/public/terrain/19/858536/353881.terrain differ diff --git a/public/terrain/19/858536/353882.terrain b/public/terrain/19/858536/353882.terrain new file mode 100644 index 000000000..8e41bca1b Binary files /dev/null and b/public/terrain/19/858536/353882.terrain differ diff --git a/public/terrain/19/858536/353883.terrain b/public/terrain/19/858536/353883.terrain new file mode 100644 index 000000000..539ef45a9 Binary files /dev/null and b/public/terrain/19/858536/353883.terrain differ diff --git a/public/terrain/19/858536/353884.terrain b/public/terrain/19/858536/353884.terrain new file mode 100644 index 000000000..a16e28aa2 Binary files /dev/null and b/public/terrain/19/858536/353884.terrain differ diff --git a/public/terrain/19/858536/353885.terrain b/public/terrain/19/858536/353885.terrain new file mode 100644 index 000000000..bc1212890 Binary files /dev/null and b/public/terrain/19/858536/353885.terrain differ diff --git a/public/terrain/19/858536/353886.terrain b/public/terrain/19/858536/353886.terrain new file mode 100644 index 000000000..799513c3a Binary files /dev/null and b/public/terrain/19/858536/353886.terrain differ diff --git a/public/terrain/19/858536/353887.terrain b/public/terrain/19/858536/353887.terrain new file mode 100644 index 000000000..c01d57472 Binary files /dev/null and b/public/terrain/19/858536/353887.terrain differ diff --git a/public/terrain/19/858536/353888.terrain b/public/terrain/19/858536/353888.terrain new file mode 100644 index 000000000..dde66a235 Binary files /dev/null and b/public/terrain/19/858536/353888.terrain differ diff --git a/public/terrain/19/858536/353889.terrain b/public/terrain/19/858536/353889.terrain new file mode 100644 index 000000000..17afdb2be Binary files /dev/null and b/public/terrain/19/858536/353889.terrain differ diff --git a/public/terrain/19/858536/353890.terrain b/public/terrain/19/858536/353890.terrain new file mode 100644 index 000000000..cff05eba9 Binary files /dev/null and b/public/terrain/19/858536/353890.terrain differ diff --git a/public/terrain/19/858536/353891.terrain b/public/terrain/19/858536/353891.terrain new file mode 100644 index 000000000..fcf9c4e71 Binary files /dev/null and b/public/terrain/19/858536/353891.terrain differ diff --git a/public/terrain/19/858536/353892.terrain b/public/terrain/19/858536/353892.terrain new file mode 100644 index 000000000..3aff61c06 Binary files /dev/null and b/public/terrain/19/858536/353892.terrain differ diff --git a/public/terrain/19/858536/353893.terrain b/public/terrain/19/858536/353893.terrain new file mode 100644 index 000000000..e3c73bb4a Binary files /dev/null and b/public/terrain/19/858536/353893.terrain differ diff --git a/public/terrain/19/858536/353894.terrain b/public/terrain/19/858536/353894.terrain new file mode 100644 index 000000000..56c25a2d5 Binary files /dev/null and b/public/terrain/19/858536/353894.terrain differ diff --git a/public/terrain/19/858536/353895.terrain b/public/terrain/19/858536/353895.terrain new file mode 100644 index 000000000..e5e91add7 Binary files /dev/null and b/public/terrain/19/858536/353895.terrain differ diff --git a/public/terrain/19/858536/353896.terrain b/public/terrain/19/858536/353896.terrain new file mode 100644 index 000000000..8db555e93 Binary files /dev/null and b/public/terrain/19/858536/353896.terrain differ diff --git a/public/terrain/19/858536/353897.terrain b/public/terrain/19/858536/353897.terrain new file mode 100644 index 000000000..288f932fd Binary files /dev/null and b/public/terrain/19/858536/353897.terrain differ diff --git a/public/terrain/19/858536/353898.terrain b/public/terrain/19/858536/353898.terrain new file mode 100644 index 000000000..33acd8d7b Binary files /dev/null and b/public/terrain/19/858536/353898.terrain differ diff --git a/public/terrain/19/858536/353899.terrain b/public/terrain/19/858536/353899.terrain new file mode 100644 index 000000000..79488b09f Binary files /dev/null and b/public/terrain/19/858536/353899.terrain differ diff --git a/public/terrain/19/858536/353900.terrain b/public/terrain/19/858536/353900.terrain new file mode 100644 index 000000000..810d1d42f Binary files /dev/null and b/public/terrain/19/858536/353900.terrain differ diff --git a/public/terrain/19/858536/353901.terrain b/public/terrain/19/858536/353901.terrain new file mode 100644 index 000000000..78eed50b8 Binary files /dev/null and b/public/terrain/19/858536/353901.terrain differ diff --git a/public/terrain/19/858536/353902.terrain b/public/terrain/19/858536/353902.terrain new file mode 100644 index 000000000..2f3cc3a16 Binary files /dev/null and b/public/terrain/19/858536/353902.terrain differ diff --git a/public/terrain/19/858536/353903.terrain b/public/terrain/19/858536/353903.terrain new file mode 100644 index 000000000..d380d3854 Binary files /dev/null and b/public/terrain/19/858536/353903.terrain differ diff --git a/public/terrain/19/858536/353904.terrain b/public/terrain/19/858536/353904.terrain new file mode 100644 index 000000000..c3389d99c Binary files /dev/null and b/public/terrain/19/858536/353904.terrain differ diff --git a/public/terrain/19/858536/353905.terrain b/public/terrain/19/858536/353905.terrain new file mode 100644 index 000000000..b7e02e09a Binary files /dev/null and b/public/terrain/19/858536/353905.terrain differ diff --git a/public/terrain/19/858536/353906.terrain b/public/terrain/19/858536/353906.terrain new file mode 100644 index 000000000..13cd4dbe4 Binary files /dev/null and b/public/terrain/19/858536/353906.terrain differ diff --git a/public/terrain/19/858536/353907.terrain b/public/terrain/19/858536/353907.terrain new file mode 100644 index 000000000..561838aae Binary files /dev/null and b/public/terrain/19/858536/353907.terrain differ diff --git a/public/terrain/19/858536/353908.terrain b/public/terrain/19/858536/353908.terrain new file mode 100644 index 000000000..1608d1b1f Binary files /dev/null and b/public/terrain/19/858536/353908.terrain differ diff --git a/public/terrain/19/858536/353909.terrain b/public/terrain/19/858536/353909.terrain new file mode 100644 index 000000000..17b3c6f99 Binary files /dev/null and b/public/terrain/19/858536/353909.terrain differ diff --git a/public/terrain/19/858536/353910.terrain b/public/terrain/19/858536/353910.terrain new file mode 100644 index 000000000..4126f83cb Binary files /dev/null and b/public/terrain/19/858536/353910.terrain differ diff --git a/public/terrain/19/858536/353911.terrain b/public/terrain/19/858536/353911.terrain new file mode 100644 index 000000000..143593751 Binary files /dev/null and b/public/terrain/19/858536/353911.terrain differ diff --git a/public/terrain/19/858536/353912.terrain b/public/terrain/19/858536/353912.terrain new file mode 100644 index 000000000..3a8360b20 Binary files /dev/null and b/public/terrain/19/858536/353912.terrain differ diff --git a/public/terrain/19/858536/353913.terrain b/public/terrain/19/858536/353913.terrain new file mode 100644 index 000000000..f8412de24 Binary files /dev/null and b/public/terrain/19/858536/353913.terrain differ diff --git a/public/terrain/19/858536/353914.terrain b/public/terrain/19/858536/353914.terrain new file mode 100644 index 000000000..3d08ac6cd Binary files /dev/null and b/public/terrain/19/858536/353914.terrain differ diff --git a/public/terrain/19/858536/353915.terrain b/public/terrain/19/858536/353915.terrain new file mode 100644 index 000000000..477ca0b4b Binary files /dev/null and b/public/terrain/19/858536/353915.terrain differ diff --git a/public/terrain/19/858536/353916.terrain b/public/terrain/19/858536/353916.terrain new file mode 100644 index 000000000..91a73ad07 Binary files /dev/null and b/public/terrain/19/858536/353916.terrain differ diff --git a/public/terrain/19/858536/353917.terrain b/public/terrain/19/858536/353917.terrain new file mode 100644 index 000000000..1d6cd1908 Binary files /dev/null and b/public/terrain/19/858536/353917.terrain differ diff --git a/public/terrain/19/858536/353918.terrain b/public/terrain/19/858536/353918.terrain new file mode 100644 index 000000000..d257790dc Binary files /dev/null and b/public/terrain/19/858536/353918.terrain differ diff --git a/public/terrain/19/858536/353919.terrain b/public/terrain/19/858536/353919.terrain new file mode 100644 index 000000000..a567995a2 Binary files /dev/null and b/public/terrain/19/858536/353919.terrain differ diff --git a/public/terrain/19/858536/353920.terrain b/public/terrain/19/858536/353920.terrain new file mode 100644 index 000000000..f071d4c23 Binary files /dev/null and b/public/terrain/19/858536/353920.terrain differ diff --git a/public/terrain/19/858536/353921.terrain b/public/terrain/19/858536/353921.terrain new file mode 100644 index 000000000..fc03424e2 Binary files /dev/null and b/public/terrain/19/858536/353921.terrain differ diff --git a/public/terrain/19/858536/353922.terrain b/public/terrain/19/858536/353922.terrain new file mode 100644 index 000000000..3d56478b6 Binary files /dev/null and b/public/terrain/19/858536/353922.terrain differ diff --git a/public/terrain/19/858536/353923.terrain b/public/terrain/19/858536/353923.terrain new file mode 100644 index 000000000..4767dd5a0 Binary files /dev/null and b/public/terrain/19/858536/353923.terrain differ diff --git a/public/terrain/19/858536/353924.terrain b/public/terrain/19/858536/353924.terrain new file mode 100644 index 000000000..45be6a290 Binary files /dev/null and b/public/terrain/19/858536/353924.terrain differ diff --git a/public/terrain/19/858536/353925.terrain b/public/terrain/19/858536/353925.terrain new file mode 100644 index 000000000..59ad0f97d Binary files /dev/null and b/public/terrain/19/858536/353925.terrain differ diff --git a/public/terrain/19/858536/353926.terrain b/public/terrain/19/858536/353926.terrain new file mode 100644 index 000000000..242aa6900 Binary files /dev/null and b/public/terrain/19/858536/353926.terrain differ diff --git a/public/terrain/19/858536/353927.terrain b/public/terrain/19/858536/353927.terrain new file mode 100644 index 000000000..3f0955b40 Binary files /dev/null and b/public/terrain/19/858536/353927.terrain differ diff --git a/public/terrain/19/858536/353928.terrain b/public/terrain/19/858536/353928.terrain new file mode 100644 index 000000000..50b647dce Binary files /dev/null and b/public/terrain/19/858536/353928.terrain differ diff --git a/public/terrain/19/858536/353929.terrain b/public/terrain/19/858536/353929.terrain new file mode 100644 index 000000000..792dcf737 Binary files /dev/null and b/public/terrain/19/858536/353929.terrain differ diff --git a/public/terrain/19/858536/353930.terrain b/public/terrain/19/858536/353930.terrain new file mode 100644 index 000000000..15cf3c195 Binary files /dev/null and b/public/terrain/19/858536/353930.terrain differ diff --git a/public/terrain/19/858536/353931.terrain b/public/terrain/19/858536/353931.terrain new file mode 100644 index 000000000..3099099fe Binary files /dev/null and b/public/terrain/19/858536/353931.terrain differ diff --git a/public/terrain/19/858536/353932.terrain b/public/terrain/19/858536/353932.terrain new file mode 100644 index 000000000..6ca950918 Binary files /dev/null and b/public/terrain/19/858536/353932.terrain differ diff --git a/public/terrain/19/858536/353933.terrain b/public/terrain/19/858536/353933.terrain new file mode 100644 index 000000000..a5a729765 Binary files /dev/null and b/public/terrain/19/858536/353933.terrain differ diff --git a/public/terrain/19/858536/353934.terrain b/public/terrain/19/858536/353934.terrain new file mode 100644 index 000000000..4e6f6db3c Binary files /dev/null and b/public/terrain/19/858536/353934.terrain differ diff --git a/public/terrain/19/858536/353935.terrain b/public/terrain/19/858536/353935.terrain new file mode 100644 index 000000000..7154f56f5 Binary files /dev/null and b/public/terrain/19/858536/353935.terrain differ diff --git a/public/terrain/19/858536/353936.terrain b/public/terrain/19/858536/353936.terrain new file mode 100644 index 000000000..1bb143dc4 Binary files /dev/null and b/public/terrain/19/858536/353936.terrain differ diff --git a/public/terrain/19/858536/353937.terrain b/public/terrain/19/858536/353937.terrain new file mode 100644 index 000000000..db0f773c3 Binary files /dev/null and b/public/terrain/19/858536/353937.terrain differ diff --git a/public/terrain/19/858536/353938.terrain b/public/terrain/19/858536/353938.terrain new file mode 100644 index 000000000..3c8298908 Binary files /dev/null and b/public/terrain/19/858536/353938.terrain differ diff --git a/public/terrain/19/858536/353939.terrain b/public/terrain/19/858536/353939.terrain new file mode 100644 index 000000000..94fed7bda Binary files /dev/null and b/public/terrain/19/858536/353939.terrain differ diff --git a/public/terrain/19/858536/353940.terrain b/public/terrain/19/858536/353940.terrain new file mode 100644 index 000000000..90330a240 Binary files /dev/null and b/public/terrain/19/858536/353940.terrain differ diff --git a/public/terrain/19/858536/353941.terrain b/public/terrain/19/858536/353941.terrain new file mode 100644 index 000000000..34900a695 Binary files /dev/null and b/public/terrain/19/858536/353941.terrain differ diff --git a/public/terrain/19/858536/353942.terrain b/public/terrain/19/858536/353942.terrain new file mode 100644 index 000000000..f9f6d6b19 Binary files /dev/null and b/public/terrain/19/858536/353942.terrain differ diff --git a/public/terrain/19/858536/353943.terrain b/public/terrain/19/858536/353943.terrain new file mode 100644 index 000000000..95117fb4c Binary files /dev/null and b/public/terrain/19/858536/353943.terrain differ diff --git a/public/terrain/19/858536/353944.terrain b/public/terrain/19/858536/353944.terrain new file mode 100644 index 000000000..711046b4c Binary files /dev/null and b/public/terrain/19/858536/353944.terrain differ diff --git a/public/terrain/19/858536/353945.terrain b/public/terrain/19/858536/353945.terrain new file mode 100644 index 000000000..44c814233 Binary files /dev/null and b/public/terrain/19/858536/353945.terrain differ diff --git a/public/terrain/19/858536/353946.terrain b/public/terrain/19/858536/353946.terrain new file mode 100644 index 000000000..59f45d5be Binary files /dev/null and b/public/terrain/19/858536/353946.terrain differ diff --git a/public/terrain/19/858536/353947.terrain b/public/terrain/19/858536/353947.terrain new file mode 100644 index 000000000..db2e277d9 Binary files /dev/null and b/public/terrain/19/858536/353947.terrain differ diff --git a/public/terrain/19/858536/353948.terrain b/public/terrain/19/858536/353948.terrain new file mode 100644 index 000000000..89ada9e96 Binary files /dev/null and b/public/terrain/19/858536/353948.terrain differ diff --git a/public/terrain/19/858536/353949.terrain b/public/terrain/19/858536/353949.terrain new file mode 100644 index 000000000..3a1932c19 Binary files /dev/null and b/public/terrain/19/858536/353949.terrain differ diff --git a/public/terrain/19/858536/353950.terrain b/public/terrain/19/858536/353950.terrain new file mode 100644 index 000000000..02066fd2d Binary files /dev/null and b/public/terrain/19/858536/353950.terrain differ diff --git a/public/terrain/19/858536/353951.terrain b/public/terrain/19/858536/353951.terrain new file mode 100644 index 000000000..654b303d6 Binary files /dev/null and b/public/terrain/19/858536/353951.terrain differ diff --git a/public/terrain/19/858536/353952.terrain b/public/terrain/19/858536/353952.terrain new file mode 100644 index 000000000..84ab96b93 Binary files /dev/null and b/public/terrain/19/858536/353952.terrain differ diff --git a/public/terrain/19/858536/353953.terrain b/public/terrain/19/858536/353953.terrain new file mode 100644 index 000000000..683409a42 Binary files /dev/null and b/public/terrain/19/858536/353953.terrain differ diff --git a/public/terrain/19/858536/353954.terrain b/public/terrain/19/858536/353954.terrain new file mode 100644 index 000000000..cb07a5e15 Binary files /dev/null and b/public/terrain/19/858536/353954.terrain differ diff --git a/public/terrain/19/858536/353955.terrain b/public/terrain/19/858536/353955.terrain new file mode 100644 index 000000000..c3317f1f1 Binary files /dev/null and b/public/terrain/19/858536/353955.terrain differ diff --git a/public/terrain/19/858536/353956.terrain b/public/terrain/19/858536/353956.terrain new file mode 100644 index 000000000..0e6d57406 Binary files /dev/null and b/public/terrain/19/858536/353956.terrain differ diff --git a/public/terrain/19/858536/353957.terrain b/public/terrain/19/858536/353957.terrain new file mode 100644 index 000000000..4610b41f2 Binary files /dev/null and b/public/terrain/19/858536/353957.terrain differ diff --git a/public/terrain/19/858536/353958.terrain b/public/terrain/19/858536/353958.terrain new file mode 100644 index 000000000..a7aa5d58d Binary files /dev/null and b/public/terrain/19/858536/353958.terrain differ diff --git a/public/terrain/19/858536/353959.terrain b/public/terrain/19/858536/353959.terrain new file mode 100644 index 000000000..1e74c65bf Binary files /dev/null and b/public/terrain/19/858536/353959.terrain differ diff --git a/public/terrain/19/858536/353960.terrain b/public/terrain/19/858536/353960.terrain new file mode 100644 index 000000000..5bda5f9c8 Binary files /dev/null and b/public/terrain/19/858536/353960.terrain differ diff --git a/public/terrain/19/858536/353961.terrain b/public/terrain/19/858536/353961.terrain new file mode 100644 index 000000000..53c3eed82 Binary files /dev/null and b/public/terrain/19/858536/353961.terrain differ diff --git a/public/terrain/19/858536/353962.terrain b/public/terrain/19/858536/353962.terrain new file mode 100644 index 000000000..bd38afde7 Binary files /dev/null and b/public/terrain/19/858536/353962.terrain differ diff --git a/public/terrain/19/858536/353963.terrain b/public/terrain/19/858536/353963.terrain new file mode 100644 index 000000000..c3e36fe92 Binary files /dev/null and b/public/terrain/19/858536/353963.terrain differ diff --git a/public/terrain/19/858536/353964.terrain b/public/terrain/19/858536/353964.terrain new file mode 100644 index 000000000..1323ff581 Binary files /dev/null and b/public/terrain/19/858536/353964.terrain differ diff --git a/public/terrain/19/858536/353965.terrain b/public/terrain/19/858536/353965.terrain new file mode 100644 index 000000000..7b8532982 Binary files /dev/null and b/public/terrain/19/858536/353965.terrain differ diff --git a/public/terrain/19/858536/353966.terrain b/public/terrain/19/858536/353966.terrain new file mode 100644 index 000000000..1912dd186 Binary files /dev/null and b/public/terrain/19/858536/353966.terrain differ diff --git a/public/terrain/19/858536/353967.terrain b/public/terrain/19/858536/353967.terrain new file mode 100644 index 000000000..5a719066a Binary files /dev/null and b/public/terrain/19/858536/353967.terrain differ diff --git a/public/terrain/19/858536/353968.terrain b/public/terrain/19/858536/353968.terrain new file mode 100644 index 000000000..8fbb10c54 Binary files /dev/null and b/public/terrain/19/858536/353968.terrain differ diff --git a/public/terrain/19/858536/353969.terrain b/public/terrain/19/858536/353969.terrain new file mode 100644 index 000000000..dfc49259e Binary files /dev/null and b/public/terrain/19/858536/353969.terrain differ diff --git a/public/terrain/19/858536/353970.terrain b/public/terrain/19/858536/353970.terrain new file mode 100644 index 000000000..b71f01f30 Binary files /dev/null and b/public/terrain/19/858536/353970.terrain differ diff --git a/public/terrain/19/858536/353971.terrain b/public/terrain/19/858536/353971.terrain new file mode 100644 index 000000000..48314a928 Binary files /dev/null and b/public/terrain/19/858536/353971.terrain differ diff --git a/public/terrain/19/858536/353972.terrain b/public/terrain/19/858536/353972.terrain new file mode 100644 index 000000000..47ec7ff5b Binary files /dev/null and b/public/terrain/19/858536/353972.terrain differ diff --git a/public/terrain/19/858536/353973.terrain b/public/terrain/19/858536/353973.terrain new file mode 100644 index 000000000..0a52b3209 Binary files /dev/null and b/public/terrain/19/858536/353973.terrain differ diff --git a/public/terrain/19/858536/353974.terrain b/public/terrain/19/858536/353974.terrain new file mode 100644 index 000000000..1e6a37704 Binary files /dev/null and b/public/terrain/19/858536/353974.terrain differ diff --git a/public/terrain/19/858536/353975.terrain b/public/terrain/19/858536/353975.terrain new file mode 100644 index 000000000..0f4f0ae3b Binary files /dev/null and b/public/terrain/19/858536/353975.terrain differ diff --git a/public/terrain/19/858536/353976.terrain b/public/terrain/19/858536/353976.terrain new file mode 100644 index 000000000..013faad9d Binary files /dev/null and b/public/terrain/19/858536/353976.terrain differ diff --git a/public/terrain/19/858536/353977.terrain b/public/terrain/19/858536/353977.terrain new file mode 100644 index 000000000..3709ef0a6 Binary files /dev/null and b/public/terrain/19/858536/353977.terrain differ diff --git a/public/terrain/19/858536/353978.terrain b/public/terrain/19/858536/353978.terrain new file mode 100644 index 000000000..2d55a27f1 Binary files /dev/null and b/public/terrain/19/858536/353978.terrain differ diff --git a/public/terrain/19/858536/353979.terrain b/public/terrain/19/858536/353979.terrain new file mode 100644 index 000000000..4866f1654 Binary files /dev/null and b/public/terrain/19/858536/353979.terrain differ diff --git a/public/terrain/19/858536/353980.terrain b/public/terrain/19/858536/353980.terrain new file mode 100644 index 000000000..9e2d5b090 Binary files /dev/null and b/public/terrain/19/858536/353980.terrain differ diff --git a/public/terrain/19/858536/353981.terrain b/public/terrain/19/858536/353981.terrain new file mode 100644 index 000000000..82cb93cb0 Binary files /dev/null and b/public/terrain/19/858536/353981.terrain differ diff --git a/public/terrain/19/858536/353982.terrain b/public/terrain/19/858536/353982.terrain new file mode 100644 index 000000000..78b1d028d Binary files /dev/null and b/public/terrain/19/858536/353982.terrain differ diff --git a/public/terrain/19/858536/353983.terrain b/public/terrain/19/858536/353983.terrain new file mode 100644 index 000000000..ba31681db Binary files /dev/null and b/public/terrain/19/858536/353983.terrain differ diff --git a/public/terrain/19/858536/353984.terrain b/public/terrain/19/858536/353984.terrain new file mode 100644 index 000000000..cb60b439c Binary files /dev/null and b/public/terrain/19/858536/353984.terrain differ diff --git a/public/terrain/19/858536/353985.terrain b/public/terrain/19/858536/353985.terrain new file mode 100644 index 000000000..d52ae0f75 Binary files /dev/null and b/public/terrain/19/858536/353985.terrain differ diff --git a/public/terrain/19/858536/353986.terrain b/public/terrain/19/858536/353986.terrain new file mode 100644 index 000000000..5760da31a Binary files /dev/null and b/public/terrain/19/858536/353986.terrain differ diff --git a/public/terrain/19/858536/353987.terrain b/public/terrain/19/858536/353987.terrain new file mode 100644 index 000000000..4db7ff3a2 Binary files /dev/null and b/public/terrain/19/858536/353987.terrain differ diff --git a/public/terrain/19/858536/353988.terrain b/public/terrain/19/858536/353988.terrain new file mode 100644 index 000000000..671afa02b Binary files /dev/null and b/public/terrain/19/858536/353988.terrain differ diff --git a/public/terrain/19/858536/353989.terrain b/public/terrain/19/858536/353989.terrain new file mode 100644 index 000000000..35a470989 Binary files /dev/null and b/public/terrain/19/858536/353989.terrain differ diff --git a/public/terrain/19/858536/353990.terrain b/public/terrain/19/858536/353990.terrain new file mode 100644 index 000000000..fee99118d Binary files /dev/null and b/public/terrain/19/858536/353990.terrain differ diff --git a/public/terrain/19/858536/353991.terrain b/public/terrain/19/858536/353991.terrain new file mode 100644 index 000000000..5a4e5a56c Binary files /dev/null and b/public/terrain/19/858536/353991.terrain differ diff --git a/public/terrain/19/858536/353992.terrain b/public/terrain/19/858536/353992.terrain new file mode 100644 index 000000000..308dc1866 Binary files /dev/null and b/public/terrain/19/858536/353992.terrain differ diff --git a/public/terrain/19/858536/353993.terrain b/public/terrain/19/858536/353993.terrain new file mode 100644 index 000000000..2e75c939f Binary files /dev/null and b/public/terrain/19/858536/353993.terrain differ diff --git a/public/terrain/19/858536/353994.terrain b/public/terrain/19/858536/353994.terrain new file mode 100644 index 000000000..9e8fe5b7e Binary files /dev/null and b/public/terrain/19/858536/353994.terrain differ diff --git a/public/terrain/19/858536/353995.terrain b/public/terrain/19/858536/353995.terrain new file mode 100644 index 000000000..1af6e93ea Binary files /dev/null and b/public/terrain/19/858536/353995.terrain differ diff --git a/public/terrain/19/858536/353996.terrain b/public/terrain/19/858536/353996.terrain new file mode 100644 index 000000000..40b470bf7 Binary files /dev/null and b/public/terrain/19/858536/353996.terrain differ diff --git a/public/terrain/19/858536/353997.terrain b/public/terrain/19/858536/353997.terrain new file mode 100644 index 000000000..e4dc1f5ff Binary files /dev/null and b/public/terrain/19/858536/353997.terrain differ diff --git a/public/terrain/19/858536/353998.terrain b/public/terrain/19/858536/353998.terrain new file mode 100644 index 000000000..29aa26885 Binary files /dev/null and b/public/terrain/19/858536/353998.terrain differ diff --git a/public/terrain/19/858536/353999.terrain b/public/terrain/19/858536/353999.terrain new file mode 100644 index 000000000..36d358205 Binary files /dev/null and b/public/terrain/19/858536/353999.terrain differ diff --git a/public/terrain/19/858536/354000.terrain b/public/terrain/19/858536/354000.terrain new file mode 100644 index 000000000..558b93c13 Binary files /dev/null and b/public/terrain/19/858536/354000.terrain differ diff --git a/public/terrain/19/858536/354001.terrain b/public/terrain/19/858536/354001.terrain new file mode 100644 index 000000000..299e7d464 Binary files /dev/null and b/public/terrain/19/858536/354001.terrain differ diff --git a/public/terrain/19/858536/354002.terrain b/public/terrain/19/858536/354002.terrain new file mode 100644 index 000000000..5f45f4a71 Binary files /dev/null and b/public/terrain/19/858536/354002.terrain differ diff --git a/public/terrain/19/858536/354003.terrain b/public/terrain/19/858536/354003.terrain new file mode 100644 index 000000000..69ddf07f1 Binary files /dev/null and b/public/terrain/19/858536/354003.terrain differ diff --git a/public/terrain/19/858536/354004.terrain b/public/terrain/19/858536/354004.terrain new file mode 100644 index 000000000..07f365169 Binary files /dev/null and b/public/terrain/19/858536/354004.terrain differ diff --git a/public/terrain/19/858536/354005.terrain b/public/terrain/19/858536/354005.terrain new file mode 100644 index 000000000..c7ace1bd7 Binary files /dev/null and b/public/terrain/19/858536/354005.terrain differ diff --git a/public/terrain/19/858536/354006.terrain b/public/terrain/19/858536/354006.terrain new file mode 100644 index 000000000..a4d384d45 Binary files /dev/null and b/public/terrain/19/858536/354006.terrain differ diff --git a/public/terrain/19/858536/354007.terrain b/public/terrain/19/858536/354007.terrain new file mode 100644 index 000000000..c311718cf Binary files /dev/null and b/public/terrain/19/858536/354007.terrain differ diff --git a/public/terrain/19/858536/354008.terrain b/public/terrain/19/858536/354008.terrain new file mode 100644 index 000000000..9cc328ceb Binary files /dev/null and b/public/terrain/19/858536/354008.terrain differ diff --git a/public/terrain/19/858536/354009.terrain b/public/terrain/19/858536/354009.terrain new file mode 100644 index 000000000..f3c9f836d Binary files /dev/null and b/public/terrain/19/858536/354009.terrain differ diff --git a/public/terrain/19/858536/354010.terrain b/public/terrain/19/858536/354010.terrain new file mode 100644 index 000000000..4bc2ac6b5 Binary files /dev/null and b/public/terrain/19/858536/354010.terrain differ diff --git a/public/terrain/19/858536/354011.terrain b/public/terrain/19/858536/354011.terrain new file mode 100644 index 000000000..52b77c766 Binary files /dev/null and b/public/terrain/19/858536/354011.terrain differ diff --git a/public/terrain/19/858536/354012.terrain b/public/terrain/19/858536/354012.terrain new file mode 100644 index 000000000..3f5fd2767 Binary files /dev/null and b/public/terrain/19/858536/354012.terrain differ diff --git a/public/terrain/19/858536/354013.terrain b/public/terrain/19/858536/354013.terrain new file mode 100644 index 000000000..40d26adbb Binary files /dev/null and b/public/terrain/19/858536/354013.terrain differ diff --git a/public/terrain/19/858536/354014.terrain b/public/terrain/19/858536/354014.terrain new file mode 100644 index 000000000..045dbbda7 Binary files /dev/null and b/public/terrain/19/858536/354014.terrain differ diff --git a/public/terrain/19/858536/354015.terrain b/public/terrain/19/858536/354015.terrain new file mode 100644 index 000000000..c38634cbb Binary files /dev/null and b/public/terrain/19/858536/354015.terrain differ diff --git a/public/terrain/19/858536/354016.terrain b/public/terrain/19/858536/354016.terrain new file mode 100644 index 000000000..2497f1c81 Binary files /dev/null and b/public/terrain/19/858536/354016.terrain differ diff --git a/public/terrain/19/858536/354017.terrain b/public/terrain/19/858536/354017.terrain new file mode 100644 index 000000000..ff233d870 Binary files /dev/null and b/public/terrain/19/858536/354017.terrain differ diff --git a/public/terrain/19/858536/354018.terrain b/public/terrain/19/858536/354018.terrain new file mode 100644 index 000000000..0c0bae347 Binary files /dev/null and b/public/terrain/19/858536/354018.terrain differ diff --git a/public/terrain/19/858536/354019.terrain b/public/terrain/19/858536/354019.terrain new file mode 100644 index 000000000..fee9fcaae Binary files /dev/null and b/public/terrain/19/858536/354019.terrain differ diff --git a/public/terrain/19/858536/354020.terrain b/public/terrain/19/858536/354020.terrain new file mode 100644 index 000000000..cbeba5a6b Binary files /dev/null and b/public/terrain/19/858536/354020.terrain differ diff --git a/public/terrain/19/858536/354021.terrain b/public/terrain/19/858536/354021.terrain new file mode 100644 index 000000000..5de90a6bb Binary files /dev/null and b/public/terrain/19/858536/354021.terrain differ diff --git a/public/terrain/19/858536/354022.terrain b/public/terrain/19/858536/354022.terrain new file mode 100644 index 000000000..9518b8d3f Binary files /dev/null and b/public/terrain/19/858536/354022.terrain differ diff --git a/public/terrain/19/858536/354023.terrain b/public/terrain/19/858536/354023.terrain new file mode 100644 index 000000000..6d34069a7 Binary files /dev/null and b/public/terrain/19/858536/354023.terrain differ diff --git a/public/terrain/19/858536/354024.terrain b/public/terrain/19/858536/354024.terrain new file mode 100644 index 000000000..ce9e94707 Binary files /dev/null and b/public/terrain/19/858536/354024.terrain differ diff --git a/public/terrain/19/858536/354025.terrain b/public/terrain/19/858536/354025.terrain new file mode 100644 index 000000000..6050db188 Binary files /dev/null and b/public/terrain/19/858536/354025.terrain differ diff --git a/public/terrain/19/858536/354026.terrain b/public/terrain/19/858536/354026.terrain new file mode 100644 index 000000000..346d62c57 Binary files /dev/null and b/public/terrain/19/858536/354026.terrain differ diff --git a/public/terrain/19/858536/354027.terrain b/public/terrain/19/858536/354027.terrain new file mode 100644 index 000000000..a7d3d8d9b Binary files /dev/null and b/public/terrain/19/858536/354027.terrain differ diff --git a/public/terrain/19/858536/354028.terrain b/public/terrain/19/858536/354028.terrain new file mode 100644 index 000000000..e5d9febe8 Binary files /dev/null and b/public/terrain/19/858536/354028.terrain differ diff --git a/public/terrain/19/858536/354029.terrain b/public/terrain/19/858536/354029.terrain new file mode 100644 index 000000000..d28307b90 Binary files /dev/null and b/public/terrain/19/858536/354029.terrain differ diff --git a/public/terrain/19/858536/354030.terrain b/public/terrain/19/858536/354030.terrain new file mode 100644 index 000000000..860e25dd0 Binary files /dev/null and b/public/terrain/19/858536/354030.terrain differ diff --git a/public/terrain/19/858536/354031.terrain b/public/terrain/19/858536/354031.terrain new file mode 100644 index 000000000..f445241f9 Binary files /dev/null and b/public/terrain/19/858536/354031.terrain differ diff --git a/public/terrain/19/858536/354032.terrain b/public/terrain/19/858536/354032.terrain new file mode 100644 index 000000000..a0c3f53e7 Binary files /dev/null and b/public/terrain/19/858536/354032.terrain differ diff --git a/public/terrain/19/858536/354033.terrain b/public/terrain/19/858536/354033.terrain new file mode 100644 index 000000000..d09d2a91d Binary files /dev/null and b/public/terrain/19/858536/354033.terrain differ diff --git a/public/terrain/19/858536/354034.terrain b/public/terrain/19/858536/354034.terrain new file mode 100644 index 000000000..cb126f39d Binary files /dev/null and b/public/terrain/19/858536/354034.terrain differ diff --git a/public/terrain/19/858536/354035.terrain b/public/terrain/19/858536/354035.terrain new file mode 100644 index 000000000..1aeb05ed5 Binary files /dev/null and b/public/terrain/19/858536/354035.terrain differ diff --git a/public/terrain/19/858536/354036.terrain b/public/terrain/19/858536/354036.terrain new file mode 100644 index 000000000..0d51d8c26 Binary files /dev/null and b/public/terrain/19/858536/354036.terrain differ diff --git a/public/terrain/19/858536/354037.terrain b/public/terrain/19/858536/354037.terrain new file mode 100644 index 000000000..fb1997ad5 Binary files /dev/null and b/public/terrain/19/858536/354037.terrain differ diff --git a/public/terrain/19/858536/354038.terrain b/public/terrain/19/858536/354038.terrain new file mode 100644 index 000000000..9746dc978 Binary files /dev/null and b/public/terrain/19/858536/354038.terrain differ diff --git a/public/terrain/19/858536/354039.terrain b/public/terrain/19/858536/354039.terrain new file mode 100644 index 000000000..1ff6f1314 Binary files /dev/null and b/public/terrain/19/858536/354039.terrain differ diff --git a/public/terrain/19/858536/354040.terrain b/public/terrain/19/858536/354040.terrain new file mode 100644 index 000000000..40b105492 Binary files /dev/null and b/public/terrain/19/858536/354040.terrain differ diff --git a/public/terrain/19/858536/354041.terrain b/public/terrain/19/858536/354041.terrain new file mode 100644 index 000000000..f7199ce66 Binary files /dev/null and b/public/terrain/19/858536/354041.terrain differ diff --git a/public/terrain/19/858536/354042.terrain b/public/terrain/19/858536/354042.terrain new file mode 100644 index 000000000..15468dfa1 Binary files /dev/null and b/public/terrain/19/858536/354042.terrain differ diff --git a/public/terrain/19/858536/354043.terrain b/public/terrain/19/858536/354043.terrain new file mode 100644 index 000000000..8a84b921b Binary files /dev/null and b/public/terrain/19/858536/354043.terrain differ diff --git a/public/terrain/19/858536/354044.terrain b/public/terrain/19/858536/354044.terrain new file mode 100644 index 000000000..81eae955e Binary files /dev/null and b/public/terrain/19/858536/354044.terrain differ diff --git a/public/terrain/19/858536/354045.terrain b/public/terrain/19/858536/354045.terrain new file mode 100644 index 000000000..3f16a4969 Binary files /dev/null and b/public/terrain/19/858536/354045.terrain differ diff --git a/public/terrain/19/858536/354046.terrain b/public/terrain/19/858536/354046.terrain new file mode 100644 index 000000000..c1a516ffb Binary files /dev/null and b/public/terrain/19/858536/354046.terrain differ diff --git a/public/terrain/19/858536/354047.terrain b/public/terrain/19/858536/354047.terrain new file mode 100644 index 000000000..75f37c1b0 Binary files /dev/null and b/public/terrain/19/858536/354047.terrain differ diff --git a/public/terrain/19/858536/354048.terrain b/public/terrain/19/858536/354048.terrain new file mode 100644 index 000000000..7f9397249 Binary files /dev/null and b/public/terrain/19/858536/354048.terrain differ diff --git a/public/terrain/19/858536/354049.terrain b/public/terrain/19/858536/354049.terrain new file mode 100644 index 000000000..c9ced010f Binary files /dev/null and b/public/terrain/19/858536/354049.terrain differ diff --git a/public/terrain/19/858536/354050.terrain b/public/terrain/19/858536/354050.terrain new file mode 100644 index 000000000..f17c24807 Binary files /dev/null and b/public/terrain/19/858536/354050.terrain differ diff --git a/public/terrain/19/858536/354051.terrain b/public/terrain/19/858536/354051.terrain new file mode 100644 index 000000000..083241a3e Binary files /dev/null and b/public/terrain/19/858536/354051.terrain differ diff --git a/public/terrain/19/858536/354052.terrain b/public/terrain/19/858536/354052.terrain new file mode 100644 index 000000000..3d64cd592 Binary files /dev/null and b/public/terrain/19/858536/354052.terrain differ diff --git a/public/terrain/19/858536/354053.terrain b/public/terrain/19/858536/354053.terrain new file mode 100644 index 000000000..250856600 Binary files /dev/null and b/public/terrain/19/858536/354053.terrain differ diff --git a/public/terrain/19/858536/354054.terrain b/public/terrain/19/858536/354054.terrain new file mode 100644 index 000000000..8e78d29fa Binary files /dev/null and b/public/terrain/19/858536/354054.terrain differ diff --git a/public/terrain/19/858536/354055.terrain b/public/terrain/19/858536/354055.terrain new file mode 100644 index 000000000..5e97a5204 Binary files /dev/null and b/public/terrain/19/858536/354055.terrain differ diff --git a/public/terrain/19/858536/354056.terrain b/public/terrain/19/858536/354056.terrain new file mode 100644 index 000000000..7a824fb54 Binary files /dev/null and b/public/terrain/19/858536/354056.terrain differ diff --git a/public/terrain/19/858536/354057.terrain b/public/terrain/19/858536/354057.terrain new file mode 100644 index 000000000..064d9186f Binary files /dev/null and b/public/terrain/19/858536/354057.terrain differ diff --git a/public/terrain/19/858536/354058.terrain b/public/terrain/19/858536/354058.terrain new file mode 100644 index 000000000..c255bebaa Binary files /dev/null and b/public/terrain/19/858536/354058.terrain differ diff --git a/public/terrain/19/858536/354059.terrain b/public/terrain/19/858536/354059.terrain new file mode 100644 index 000000000..49c006a0b Binary files /dev/null and b/public/terrain/19/858536/354059.terrain differ diff --git a/public/terrain/19/858537/353743.terrain b/public/terrain/19/858537/353743.terrain new file mode 100644 index 000000000..0432cf67d Binary files /dev/null and b/public/terrain/19/858537/353743.terrain differ diff --git a/public/terrain/19/858537/353744.terrain b/public/terrain/19/858537/353744.terrain new file mode 100644 index 000000000..7295650ac Binary files /dev/null and b/public/terrain/19/858537/353744.terrain differ diff --git a/public/terrain/19/858537/353745.terrain b/public/terrain/19/858537/353745.terrain new file mode 100644 index 000000000..81882c301 Binary files /dev/null and b/public/terrain/19/858537/353745.terrain differ diff --git a/public/terrain/19/858537/353746.terrain b/public/terrain/19/858537/353746.terrain new file mode 100644 index 000000000..16441719f Binary files /dev/null and b/public/terrain/19/858537/353746.terrain differ diff --git a/public/terrain/19/858537/353747.terrain b/public/terrain/19/858537/353747.terrain new file mode 100644 index 000000000..e5d3db25a Binary files /dev/null and b/public/terrain/19/858537/353747.terrain differ diff --git a/public/terrain/19/858537/353748.terrain b/public/terrain/19/858537/353748.terrain new file mode 100644 index 000000000..574baf50f Binary files /dev/null and b/public/terrain/19/858537/353748.terrain differ diff --git a/public/terrain/19/858537/353749.terrain b/public/terrain/19/858537/353749.terrain new file mode 100644 index 000000000..bf06253ef Binary files /dev/null and b/public/terrain/19/858537/353749.terrain differ diff --git a/public/terrain/19/858537/353750.terrain b/public/terrain/19/858537/353750.terrain new file mode 100644 index 000000000..9cf849b23 Binary files /dev/null and b/public/terrain/19/858537/353750.terrain differ diff --git a/public/terrain/19/858537/353751.terrain b/public/terrain/19/858537/353751.terrain new file mode 100644 index 000000000..77a417617 Binary files /dev/null and b/public/terrain/19/858537/353751.terrain differ diff --git a/public/terrain/19/858537/353752.terrain b/public/terrain/19/858537/353752.terrain new file mode 100644 index 000000000..053c69bf7 Binary files /dev/null and b/public/terrain/19/858537/353752.terrain differ diff --git a/public/terrain/19/858537/353753.terrain b/public/terrain/19/858537/353753.terrain new file mode 100644 index 000000000..a967a1970 Binary files /dev/null and b/public/terrain/19/858537/353753.terrain differ diff --git a/public/terrain/19/858537/353754.terrain b/public/terrain/19/858537/353754.terrain new file mode 100644 index 000000000..5d88db29c Binary files /dev/null and b/public/terrain/19/858537/353754.terrain differ diff --git a/public/terrain/19/858537/353755.terrain b/public/terrain/19/858537/353755.terrain new file mode 100644 index 000000000..3337beec2 Binary files /dev/null and b/public/terrain/19/858537/353755.terrain differ diff --git a/public/terrain/19/858537/353756.terrain b/public/terrain/19/858537/353756.terrain new file mode 100644 index 000000000..ebb03eacc Binary files /dev/null and b/public/terrain/19/858537/353756.terrain differ diff --git a/public/terrain/19/858537/353757.terrain b/public/terrain/19/858537/353757.terrain new file mode 100644 index 000000000..f63a6e5be Binary files /dev/null and b/public/terrain/19/858537/353757.terrain differ diff --git a/public/terrain/19/858537/353758.terrain b/public/terrain/19/858537/353758.terrain new file mode 100644 index 000000000..3a45ad41e Binary files /dev/null and b/public/terrain/19/858537/353758.terrain differ diff --git a/public/terrain/19/858537/353759.terrain b/public/terrain/19/858537/353759.terrain new file mode 100644 index 000000000..c5b95f2dd Binary files /dev/null and b/public/terrain/19/858537/353759.terrain differ diff --git a/public/terrain/19/858537/353760.terrain b/public/terrain/19/858537/353760.terrain new file mode 100644 index 000000000..34758b677 Binary files /dev/null and b/public/terrain/19/858537/353760.terrain differ diff --git a/public/terrain/19/858537/353761.terrain b/public/terrain/19/858537/353761.terrain new file mode 100644 index 000000000..b943b0c81 Binary files /dev/null and b/public/terrain/19/858537/353761.terrain differ diff --git a/public/terrain/19/858537/353762.terrain b/public/terrain/19/858537/353762.terrain new file mode 100644 index 000000000..cf424e78e Binary files /dev/null and b/public/terrain/19/858537/353762.terrain differ diff --git a/public/terrain/19/858537/353763.terrain b/public/terrain/19/858537/353763.terrain new file mode 100644 index 000000000..92de7efaa Binary files /dev/null and b/public/terrain/19/858537/353763.terrain differ diff --git a/public/terrain/19/858537/353764.terrain b/public/terrain/19/858537/353764.terrain new file mode 100644 index 000000000..a117e871e Binary files /dev/null and b/public/terrain/19/858537/353764.terrain differ diff --git a/public/terrain/19/858537/353765.terrain b/public/terrain/19/858537/353765.terrain new file mode 100644 index 000000000..774930561 Binary files /dev/null and b/public/terrain/19/858537/353765.terrain differ diff --git a/public/terrain/19/858537/353766.terrain b/public/terrain/19/858537/353766.terrain new file mode 100644 index 000000000..c314fc5ca Binary files /dev/null and b/public/terrain/19/858537/353766.terrain differ diff --git a/public/terrain/19/858537/353767.terrain b/public/terrain/19/858537/353767.terrain new file mode 100644 index 000000000..789e14fd2 Binary files /dev/null and b/public/terrain/19/858537/353767.terrain differ diff --git a/public/terrain/19/858537/353768.terrain b/public/terrain/19/858537/353768.terrain new file mode 100644 index 000000000..cd3052d9c Binary files /dev/null and b/public/terrain/19/858537/353768.terrain differ diff --git a/public/terrain/19/858537/353769.terrain b/public/terrain/19/858537/353769.terrain new file mode 100644 index 000000000..868f0e5bc Binary files /dev/null and b/public/terrain/19/858537/353769.terrain differ diff --git a/public/terrain/19/858537/353770.terrain b/public/terrain/19/858537/353770.terrain new file mode 100644 index 000000000..d6fb53f58 Binary files /dev/null and b/public/terrain/19/858537/353770.terrain differ diff --git a/public/terrain/19/858537/353771.terrain b/public/terrain/19/858537/353771.terrain new file mode 100644 index 000000000..75a7e4c5d Binary files /dev/null and b/public/terrain/19/858537/353771.terrain differ diff --git a/public/terrain/19/858537/353772.terrain b/public/terrain/19/858537/353772.terrain new file mode 100644 index 000000000..2e87e04ac Binary files /dev/null and b/public/terrain/19/858537/353772.terrain differ diff --git a/public/terrain/19/858537/353773.terrain b/public/terrain/19/858537/353773.terrain new file mode 100644 index 000000000..11f82e012 Binary files /dev/null and b/public/terrain/19/858537/353773.terrain differ diff --git a/public/terrain/19/858537/353774.terrain b/public/terrain/19/858537/353774.terrain new file mode 100644 index 000000000..1b6b74a34 Binary files /dev/null and b/public/terrain/19/858537/353774.terrain differ diff --git a/public/terrain/19/858537/353775.terrain b/public/terrain/19/858537/353775.terrain new file mode 100644 index 000000000..66b83d42d Binary files /dev/null and b/public/terrain/19/858537/353775.terrain differ diff --git a/public/terrain/19/858537/353776.terrain b/public/terrain/19/858537/353776.terrain new file mode 100644 index 000000000..0335f9555 Binary files /dev/null and b/public/terrain/19/858537/353776.terrain differ diff --git a/public/terrain/19/858537/353777.terrain b/public/terrain/19/858537/353777.terrain new file mode 100644 index 000000000..708e7833a Binary files /dev/null and b/public/terrain/19/858537/353777.terrain differ diff --git a/public/terrain/19/858537/353778.terrain b/public/terrain/19/858537/353778.terrain new file mode 100644 index 000000000..acb69bce5 Binary files /dev/null and b/public/terrain/19/858537/353778.terrain differ diff --git a/public/terrain/19/858537/353779.terrain b/public/terrain/19/858537/353779.terrain new file mode 100644 index 000000000..fd27a9039 Binary files /dev/null and b/public/terrain/19/858537/353779.terrain differ diff --git a/public/terrain/19/858537/353780.terrain b/public/terrain/19/858537/353780.terrain new file mode 100644 index 000000000..bb7170101 Binary files /dev/null and b/public/terrain/19/858537/353780.terrain differ diff --git a/public/terrain/19/858537/353781.terrain b/public/terrain/19/858537/353781.terrain new file mode 100644 index 000000000..9ef1f6411 Binary files /dev/null and b/public/terrain/19/858537/353781.terrain differ diff --git a/public/terrain/19/858537/353782.terrain b/public/terrain/19/858537/353782.terrain new file mode 100644 index 000000000..efac16fab Binary files /dev/null and b/public/terrain/19/858537/353782.terrain differ diff --git a/public/terrain/19/858537/353783.terrain b/public/terrain/19/858537/353783.terrain new file mode 100644 index 000000000..869b7637f Binary files /dev/null and b/public/terrain/19/858537/353783.terrain differ diff --git a/public/terrain/19/858537/353784.terrain b/public/terrain/19/858537/353784.terrain new file mode 100644 index 000000000..5c7690564 Binary files /dev/null and b/public/terrain/19/858537/353784.terrain differ diff --git a/public/terrain/19/858537/353785.terrain b/public/terrain/19/858537/353785.terrain new file mode 100644 index 000000000..3f5d955e2 Binary files /dev/null and b/public/terrain/19/858537/353785.terrain differ diff --git a/public/terrain/19/858537/353786.terrain b/public/terrain/19/858537/353786.terrain new file mode 100644 index 000000000..9d138faae Binary files /dev/null and b/public/terrain/19/858537/353786.terrain differ diff --git a/public/terrain/19/858537/353787.terrain b/public/terrain/19/858537/353787.terrain new file mode 100644 index 000000000..3e8137b87 Binary files /dev/null and b/public/terrain/19/858537/353787.terrain differ diff --git a/public/terrain/19/858537/353788.terrain b/public/terrain/19/858537/353788.terrain new file mode 100644 index 000000000..411136c42 Binary files /dev/null and b/public/terrain/19/858537/353788.terrain differ diff --git a/public/terrain/19/858537/353789.terrain b/public/terrain/19/858537/353789.terrain new file mode 100644 index 000000000..025a173ad Binary files /dev/null and b/public/terrain/19/858537/353789.terrain differ diff --git a/public/terrain/19/858537/353790.terrain b/public/terrain/19/858537/353790.terrain new file mode 100644 index 000000000..3f95c92aa Binary files /dev/null and b/public/terrain/19/858537/353790.terrain differ diff --git a/public/terrain/19/858537/353791.terrain b/public/terrain/19/858537/353791.terrain new file mode 100644 index 000000000..e1156ae7c Binary files /dev/null and b/public/terrain/19/858537/353791.terrain differ diff --git a/public/terrain/19/858537/353792.terrain b/public/terrain/19/858537/353792.terrain new file mode 100644 index 000000000..71fab9aea Binary files /dev/null and b/public/terrain/19/858537/353792.terrain differ diff --git a/public/terrain/19/858537/353793.terrain b/public/terrain/19/858537/353793.terrain new file mode 100644 index 000000000..dd0bd7d25 Binary files /dev/null and b/public/terrain/19/858537/353793.terrain differ diff --git a/public/terrain/19/858537/353794.terrain b/public/terrain/19/858537/353794.terrain new file mode 100644 index 000000000..0b761a82d Binary files /dev/null and b/public/terrain/19/858537/353794.terrain differ diff --git a/public/terrain/19/858537/353795.terrain b/public/terrain/19/858537/353795.terrain new file mode 100644 index 000000000..8a96f73de Binary files /dev/null and b/public/terrain/19/858537/353795.terrain differ diff --git a/public/terrain/19/858537/353796.terrain b/public/terrain/19/858537/353796.terrain new file mode 100644 index 000000000..316ed913d Binary files /dev/null and b/public/terrain/19/858537/353796.terrain differ diff --git a/public/terrain/19/858537/353797.terrain b/public/terrain/19/858537/353797.terrain new file mode 100644 index 000000000..9e1f517d6 Binary files /dev/null and b/public/terrain/19/858537/353797.terrain differ diff --git a/public/terrain/19/858537/353798.terrain b/public/terrain/19/858537/353798.terrain new file mode 100644 index 000000000..a77734faa Binary files /dev/null and b/public/terrain/19/858537/353798.terrain differ diff --git a/public/terrain/19/858537/353799.terrain b/public/terrain/19/858537/353799.terrain new file mode 100644 index 000000000..5d88ece6a Binary files /dev/null and b/public/terrain/19/858537/353799.terrain differ diff --git a/public/terrain/19/858537/353800.terrain b/public/terrain/19/858537/353800.terrain new file mode 100644 index 000000000..128d1ec0d Binary files /dev/null and b/public/terrain/19/858537/353800.terrain differ diff --git a/public/terrain/19/858537/353801.terrain b/public/terrain/19/858537/353801.terrain new file mode 100644 index 000000000..e89dab1f8 Binary files /dev/null and b/public/terrain/19/858537/353801.terrain differ diff --git a/public/terrain/19/858537/353802.terrain b/public/terrain/19/858537/353802.terrain new file mode 100644 index 000000000..81a489af0 Binary files /dev/null and b/public/terrain/19/858537/353802.terrain differ diff --git a/public/terrain/19/858537/353803.terrain b/public/terrain/19/858537/353803.terrain new file mode 100644 index 000000000..b22082bf7 Binary files /dev/null and b/public/terrain/19/858537/353803.terrain differ diff --git a/public/terrain/19/858537/353804.terrain b/public/terrain/19/858537/353804.terrain new file mode 100644 index 000000000..06c397b1c Binary files /dev/null and b/public/terrain/19/858537/353804.terrain differ diff --git a/public/terrain/19/858537/353805.terrain b/public/terrain/19/858537/353805.terrain new file mode 100644 index 000000000..6badfe270 Binary files /dev/null and b/public/terrain/19/858537/353805.terrain differ diff --git a/public/terrain/19/858537/353806.terrain b/public/terrain/19/858537/353806.terrain new file mode 100644 index 000000000..58c34ce90 Binary files /dev/null and b/public/terrain/19/858537/353806.terrain differ diff --git a/public/terrain/19/858537/353807.terrain b/public/terrain/19/858537/353807.terrain new file mode 100644 index 000000000..6a95c6db8 Binary files /dev/null and b/public/terrain/19/858537/353807.terrain differ diff --git a/public/terrain/19/858537/353808.terrain b/public/terrain/19/858537/353808.terrain new file mode 100644 index 000000000..f4d738ff6 Binary files /dev/null and b/public/terrain/19/858537/353808.terrain differ diff --git a/public/terrain/19/858537/353809.terrain b/public/terrain/19/858537/353809.terrain new file mode 100644 index 000000000..1b9acd55c Binary files /dev/null and b/public/terrain/19/858537/353809.terrain differ diff --git a/public/terrain/19/858537/353810.terrain b/public/terrain/19/858537/353810.terrain new file mode 100644 index 000000000..5eddc2058 Binary files /dev/null and b/public/terrain/19/858537/353810.terrain differ diff --git a/public/terrain/19/858537/353811.terrain b/public/terrain/19/858537/353811.terrain new file mode 100644 index 000000000..a45c1c014 Binary files /dev/null and b/public/terrain/19/858537/353811.terrain differ diff --git a/public/terrain/19/858537/353812.terrain b/public/terrain/19/858537/353812.terrain new file mode 100644 index 000000000..55a4d5501 Binary files /dev/null and b/public/terrain/19/858537/353812.terrain differ diff --git a/public/terrain/19/858537/353813.terrain b/public/terrain/19/858537/353813.terrain new file mode 100644 index 000000000..94682bca9 Binary files /dev/null and b/public/terrain/19/858537/353813.terrain differ diff --git a/public/terrain/19/858537/353814.terrain b/public/terrain/19/858537/353814.terrain new file mode 100644 index 000000000..9e6360bca Binary files /dev/null and b/public/terrain/19/858537/353814.terrain differ diff --git a/public/terrain/19/858537/353815.terrain b/public/terrain/19/858537/353815.terrain new file mode 100644 index 000000000..35f6974b8 Binary files /dev/null and b/public/terrain/19/858537/353815.terrain differ diff --git a/public/terrain/19/858537/353816.terrain b/public/terrain/19/858537/353816.terrain new file mode 100644 index 000000000..0bd20fc87 Binary files /dev/null and b/public/terrain/19/858537/353816.terrain differ diff --git a/public/terrain/19/858537/353817.terrain b/public/terrain/19/858537/353817.terrain new file mode 100644 index 000000000..1ffb6901e Binary files /dev/null and b/public/terrain/19/858537/353817.terrain differ diff --git a/public/terrain/19/858537/353818.terrain b/public/terrain/19/858537/353818.terrain new file mode 100644 index 000000000..d794604ad Binary files /dev/null and b/public/terrain/19/858537/353818.terrain differ diff --git a/public/terrain/19/858537/353819.terrain b/public/terrain/19/858537/353819.terrain new file mode 100644 index 000000000..cd237974b Binary files /dev/null and b/public/terrain/19/858537/353819.terrain differ diff --git a/public/terrain/19/858537/353820.terrain b/public/terrain/19/858537/353820.terrain new file mode 100644 index 000000000..a1dfa356b Binary files /dev/null and b/public/terrain/19/858537/353820.terrain differ diff --git a/public/terrain/19/858537/353821.terrain b/public/terrain/19/858537/353821.terrain new file mode 100644 index 000000000..576055241 Binary files /dev/null and b/public/terrain/19/858537/353821.terrain differ diff --git a/public/terrain/19/858537/353822.terrain b/public/terrain/19/858537/353822.terrain new file mode 100644 index 000000000..501ff3c34 Binary files /dev/null and b/public/terrain/19/858537/353822.terrain differ diff --git a/public/terrain/19/858537/353823.terrain b/public/terrain/19/858537/353823.terrain new file mode 100644 index 000000000..a268eba6b Binary files /dev/null and b/public/terrain/19/858537/353823.terrain differ diff --git a/public/terrain/19/858537/353824.terrain b/public/terrain/19/858537/353824.terrain new file mode 100644 index 000000000..ea8b6a941 Binary files /dev/null and b/public/terrain/19/858537/353824.terrain differ diff --git a/public/terrain/19/858537/353825.terrain b/public/terrain/19/858537/353825.terrain new file mode 100644 index 000000000..c768088bc Binary files /dev/null and b/public/terrain/19/858537/353825.terrain differ diff --git a/public/terrain/19/858537/353826.terrain b/public/terrain/19/858537/353826.terrain new file mode 100644 index 000000000..37c55b6a8 Binary files /dev/null and b/public/terrain/19/858537/353826.terrain differ diff --git a/public/terrain/19/858537/353827.terrain b/public/terrain/19/858537/353827.terrain new file mode 100644 index 000000000..de98bd416 Binary files /dev/null and b/public/terrain/19/858537/353827.terrain differ diff --git a/public/terrain/19/858537/353828.terrain b/public/terrain/19/858537/353828.terrain new file mode 100644 index 000000000..e20d159d0 Binary files /dev/null and b/public/terrain/19/858537/353828.terrain differ diff --git a/public/terrain/19/858537/353829.terrain b/public/terrain/19/858537/353829.terrain new file mode 100644 index 000000000..48f5336a6 Binary files /dev/null and b/public/terrain/19/858537/353829.terrain differ diff --git a/public/terrain/19/858537/353830.terrain b/public/terrain/19/858537/353830.terrain new file mode 100644 index 000000000..a3e17e077 Binary files /dev/null and b/public/terrain/19/858537/353830.terrain differ diff --git a/public/terrain/19/858537/353831.terrain b/public/terrain/19/858537/353831.terrain new file mode 100644 index 000000000..f4fd0ee00 Binary files /dev/null and b/public/terrain/19/858537/353831.terrain differ diff --git a/public/terrain/19/858537/353832.terrain b/public/terrain/19/858537/353832.terrain new file mode 100644 index 000000000..807f83632 Binary files /dev/null and b/public/terrain/19/858537/353832.terrain differ diff --git a/public/terrain/19/858537/353833.terrain b/public/terrain/19/858537/353833.terrain new file mode 100644 index 000000000..44fa79c9e Binary files /dev/null and b/public/terrain/19/858537/353833.terrain differ diff --git a/public/terrain/19/858537/353834.terrain b/public/terrain/19/858537/353834.terrain new file mode 100644 index 000000000..930cb9b6c Binary files /dev/null and b/public/terrain/19/858537/353834.terrain differ diff --git a/public/terrain/19/858537/353835.terrain b/public/terrain/19/858537/353835.terrain new file mode 100644 index 000000000..386cd8814 Binary files /dev/null and b/public/terrain/19/858537/353835.terrain differ diff --git a/public/terrain/19/858537/353836.terrain b/public/terrain/19/858537/353836.terrain new file mode 100644 index 000000000..e5df85883 Binary files /dev/null and b/public/terrain/19/858537/353836.terrain differ diff --git a/public/terrain/19/858537/353837.terrain b/public/terrain/19/858537/353837.terrain new file mode 100644 index 000000000..dadd15366 Binary files /dev/null and b/public/terrain/19/858537/353837.terrain differ diff --git a/public/terrain/19/858537/353838.terrain b/public/terrain/19/858537/353838.terrain new file mode 100644 index 000000000..40af68389 Binary files /dev/null and b/public/terrain/19/858537/353838.terrain differ diff --git a/public/terrain/19/858537/353839.terrain b/public/terrain/19/858537/353839.terrain new file mode 100644 index 000000000..4194ef6bc Binary files /dev/null and b/public/terrain/19/858537/353839.terrain differ diff --git a/public/terrain/19/858537/353840.terrain b/public/terrain/19/858537/353840.terrain new file mode 100644 index 000000000..d9fa61369 Binary files /dev/null and b/public/terrain/19/858537/353840.terrain differ diff --git a/public/terrain/19/858537/353841.terrain b/public/terrain/19/858537/353841.terrain new file mode 100644 index 000000000..ab381e3c4 Binary files /dev/null and b/public/terrain/19/858537/353841.terrain differ diff --git a/public/terrain/19/858537/353842.terrain b/public/terrain/19/858537/353842.terrain new file mode 100644 index 000000000..405ce3a57 Binary files /dev/null and b/public/terrain/19/858537/353842.terrain differ diff --git a/public/terrain/19/858537/353843.terrain b/public/terrain/19/858537/353843.terrain new file mode 100644 index 000000000..df382daa5 Binary files /dev/null and b/public/terrain/19/858537/353843.terrain differ diff --git a/public/terrain/19/858537/353844.terrain b/public/terrain/19/858537/353844.terrain new file mode 100644 index 000000000..600bc447e Binary files /dev/null and b/public/terrain/19/858537/353844.terrain differ diff --git a/public/terrain/19/858537/353845.terrain b/public/terrain/19/858537/353845.terrain new file mode 100644 index 000000000..f7fef206a Binary files /dev/null and b/public/terrain/19/858537/353845.terrain differ diff --git a/public/terrain/19/858537/353846.terrain b/public/terrain/19/858537/353846.terrain new file mode 100644 index 000000000..c6b031ec2 Binary files /dev/null and b/public/terrain/19/858537/353846.terrain differ diff --git a/public/terrain/19/858537/353847.terrain b/public/terrain/19/858537/353847.terrain new file mode 100644 index 000000000..50437707a Binary files /dev/null and b/public/terrain/19/858537/353847.terrain differ diff --git a/public/terrain/19/858537/353848.terrain b/public/terrain/19/858537/353848.terrain new file mode 100644 index 000000000..310dc75e0 Binary files /dev/null and b/public/terrain/19/858537/353848.terrain differ diff --git a/public/terrain/19/858537/353849.terrain b/public/terrain/19/858537/353849.terrain new file mode 100644 index 000000000..b729719d0 Binary files /dev/null and b/public/terrain/19/858537/353849.terrain differ diff --git a/public/terrain/19/858537/353850.terrain b/public/terrain/19/858537/353850.terrain new file mode 100644 index 000000000..90aa11003 Binary files /dev/null and b/public/terrain/19/858537/353850.terrain differ diff --git a/public/terrain/19/858537/353851.terrain b/public/terrain/19/858537/353851.terrain new file mode 100644 index 000000000..422aff967 Binary files /dev/null and b/public/terrain/19/858537/353851.terrain differ diff --git a/public/terrain/19/858537/353852.terrain b/public/terrain/19/858537/353852.terrain new file mode 100644 index 000000000..7912036a2 Binary files /dev/null and b/public/terrain/19/858537/353852.terrain differ diff --git a/public/terrain/19/858537/353853.terrain b/public/terrain/19/858537/353853.terrain new file mode 100644 index 000000000..8c59736e8 Binary files /dev/null and b/public/terrain/19/858537/353853.terrain differ diff --git a/public/terrain/19/858537/353854.terrain b/public/terrain/19/858537/353854.terrain new file mode 100644 index 000000000..840d12b0b Binary files /dev/null and b/public/terrain/19/858537/353854.terrain differ diff --git a/public/terrain/19/858537/353855.terrain b/public/terrain/19/858537/353855.terrain new file mode 100644 index 000000000..33c8ef053 Binary files /dev/null and b/public/terrain/19/858537/353855.terrain differ diff --git a/public/terrain/19/858537/353856.terrain b/public/terrain/19/858537/353856.terrain new file mode 100644 index 000000000..24bf8c1e6 Binary files /dev/null and b/public/terrain/19/858537/353856.terrain differ diff --git a/public/terrain/19/858537/353857.terrain b/public/terrain/19/858537/353857.terrain new file mode 100644 index 000000000..f8ff3244c Binary files /dev/null and b/public/terrain/19/858537/353857.terrain differ diff --git a/public/terrain/19/858537/353858.terrain b/public/terrain/19/858537/353858.terrain new file mode 100644 index 000000000..67f44b120 Binary files /dev/null and b/public/terrain/19/858537/353858.terrain differ diff --git a/public/terrain/19/858537/353859.terrain b/public/terrain/19/858537/353859.terrain new file mode 100644 index 000000000..b486f7ffa Binary files /dev/null and b/public/terrain/19/858537/353859.terrain differ diff --git a/public/terrain/19/858537/353860.terrain b/public/terrain/19/858537/353860.terrain new file mode 100644 index 000000000..b7a3d88d7 Binary files /dev/null and b/public/terrain/19/858537/353860.terrain differ diff --git a/public/terrain/19/858537/353861.terrain b/public/terrain/19/858537/353861.terrain new file mode 100644 index 000000000..abee7e1b7 Binary files /dev/null and b/public/terrain/19/858537/353861.terrain differ diff --git a/public/terrain/19/858537/353862.terrain b/public/terrain/19/858537/353862.terrain new file mode 100644 index 000000000..7e9746cf0 Binary files /dev/null and b/public/terrain/19/858537/353862.terrain differ diff --git a/public/terrain/19/858537/353863.terrain b/public/terrain/19/858537/353863.terrain new file mode 100644 index 000000000..75b5ada17 Binary files /dev/null and b/public/terrain/19/858537/353863.terrain differ diff --git a/public/terrain/19/858537/353864.terrain b/public/terrain/19/858537/353864.terrain new file mode 100644 index 000000000..4ac46605e Binary files /dev/null and b/public/terrain/19/858537/353864.terrain differ diff --git a/public/terrain/19/858537/353865.terrain b/public/terrain/19/858537/353865.terrain new file mode 100644 index 000000000..644035ffb Binary files /dev/null and b/public/terrain/19/858537/353865.terrain differ diff --git a/public/terrain/19/858537/353866.terrain b/public/terrain/19/858537/353866.terrain new file mode 100644 index 000000000..6945d8d09 Binary files /dev/null and b/public/terrain/19/858537/353866.terrain differ diff --git a/public/terrain/19/858537/353867.terrain b/public/terrain/19/858537/353867.terrain new file mode 100644 index 000000000..e024769d8 Binary files /dev/null and b/public/terrain/19/858537/353867.terrain differ diff --git a/public/terrain/19/858537/353868.terrain b/public/terrain/19/858537/353868.terrain new file mode 100644 index 000000000..27118b28f Binary files /dev/null and b/public/terrain/19/858537/353868.terrain differ diff --git a/public/terrain/19/858537/353869.terrain b/public/terrain/19/858537/353869.terrain new file mode 100644 index 000000000..78f447053 Binary files /dev/null and b/public/terrain/19/858537/353869.terrain differ diff --git a/public/terrain/19/858537/353870.terrain b/public/terrain/19/858537/353870.terrain new file mode 100644 index 000000000..c42e025b1 Binary files /dev/null and b/public/terrain/19/858537/353870.terrain differ diff --git a/public/terrain/19/858537/353871.terrain b/public/terrain/19/858537/353871.terrain new file mode 100644 index 000000000..877e50514 Binary files /dev/null and b/public/terrain/19/858537/353871.terrain differ diff --git a/public/terrain/19/858537/353872.terrain b/public/terrain/19/858537/353872.terrain new file mode 100644 index 000000000..19e26b19b Binary files /dev/null and b/public/terrain/19/858537/353872.terrain differ diff --git a/public/terrain/19/858537/353873.terrain b/public/terrain/19/858537/353873.terrain new file mode 100644 index 000000000..5dcc3caed Binary files /dev/null and b/public/terrain/19/858537/353873.terrain differ diff --git a/public/terrain/19/858537/353874.terrain b/public/terrain/19/858537/353874.terrain new file mode 100644 index 000000000..68930e262 Binary files /dev/null and b/public/terrain/19/858537/353874.terrain differ diff --git a/public/terrain/19/858537/353875.terrain b/public/terrain/19/858537/353875.terrain new file mode 100644 index 000000000..e4f6ff46e Binary files /dev/null and b/public/terrain/19/858537/353875.terrain differ diff --git a/public/terrain/19/858537/353876.terrain b/public/terrain/19/858537/353876.terrain new file mode 100644 index 000000000..9c50b2228 Binary files /dev/null and b/public/terrain/19/858537/353876.terrain differ diff --git a/public/terrain/19/858537/353877.terrain b/public/terrain/19/858537/353877.terrain new file mode 100644 index 000000000..a58ccf2bb Binary files /dev/null and b/public/terrain/19/858537/353877.terrain differ diff --git a/public/terrain/19/858537/353878.terrain b/public/terrain/19/858537/353878.terrain new file mode 100644 index 000000000..f43a7e73e Binary files /dev/null and b/public/terrain/19/858537/353878.terrain differ diff --git a/public/terrain/19/858537/353879.terrain b/public/terrain/19/858537/353879.terrain new file mode 100644 index 000000000..716ce36c3 Binary files /dev/null and b/public/terrain/19/858537/353879.terrain differ diff --git a/public/terrain/19/858537/353880.terrain b/public/terrain/19/858537/353880.terrain new file mode 100644 index 000000000..87bc95d02 Binary files /dev/null and b/public/terrain/19/858537/353880.terrain differ diff --git a/public/terrain/19/858537/353881.terrain b/public/terrain/19/858537/353881.terrain new file mode 100644 index 000000000..840e4db8e Binary files /dev/null and b/public/terrain/19/858537/353881.terrain differ diff --git a/public/terrain/19/858537/353882.terrain b/public/terrain/19/858537/353882.terrain new file mode 100644 index 000000000..d0d1ff854 Binary files /dev/null and b/public/terrain/19/858537/353882.terrain differ diff --git a/public/terrain/19/858537/353883.terrain b/public/terrain/19/858537/353883.terrain new file mode 100644 index 000000000..ba2ae0d78 Binary files /dev/null and b/public/terrain/19/858537/353883.terrain differ diff --git a/public/terrain/19/858537/353884.terrain b/public/terrain/19/858537/353884.terrain new file mode 100644 index 000000000..6ce37b0d5 Binary files /dev/null and b/public/terrain/19/858537/353884.terrain differ diff --git a/public/terrain/19/858537/353885.terrain b/public/terrain/19/858537/353885.terrain new file mode 100644 index 000000000..e2027304b Binary files /dev/null and b/public/terrain/19/858537/353885.terrain differ diff --git a/public/terrain/19/858537/353886.terrain b/public/terrain/19/858537/353886.terrain new file mode 100644 index 000000000..e28da9417 Binary files /dev/null and b/public/terrain/19/858537/353886.terrain differ diff --git a/public/terrain/19/858537/353887.terrain b/public/terrain/19/858537/353887.terrain new file mode 100644 index 000000000..3db66f1b7 Binary files /dev/null and b/public/terrain/19/858537/353887.terrain differ diff --git a/public/terrain/19/858537/353888.terrain b/public/terrain/19/858537/353888.terrain new file mode 100644 index 000000000..a853c28bf Binary files /dev/null and b/public/terrain/19/858537/353888.terrain differ diff --git a/public/terrain/19/858537/353889.terrain b/public/terrain/19/858537/353889.terrain new file mode 100644 index 000000000..c76faab78 Binary files /dev/null and b/public/terrain/19/858537/353889.terrain differ diff --git a/public/terrain/19/858537/353890.terrain b/public/terrain/19/858537/353890.terrain new file mode 100644 index 000000000..e0ad2ea75 Binary files /dev/null and b/public/terrain/19/858537/353890.terrain differ diff --git a/public/terrain/19/858537/353891.terrain b/public/terrain/19/858537/353891.terrain new file mode 100644 index 000000000..814e094df Binary files /dev/null and b/public/terrain/19/858537/353891.terrain differ diff --git a/public/terrain/19/858537/353892.terrain b/public/terrain/19/858537/353892.terrain new file mode 100644 index 000000000..b30dbe859 Binary files /dev/null and b/public/terrain/19/858537/353892.terrain differ diff --git a/public/terrain/19/858537/353893.terrain b/public/terrain/19/858537/353893.terrain new file mode 100644 index 000000000..af9101afe Binary files /dev/null and b/public/terrain/19/858537/353893.terrain differ diff --git a/public/terrain/19/858537/353894.terrain b/public/terrain/19/858537/353894.terrain new file mode 100644 index 000000000..80028828b Binary files /dev/null and b/public/terrain/19/858537/353894.terrain differ diff --git a/public/terrain/19/858537/353895.terrain b/public/terrain/19/858537/353895.terrain new file mode 100644 index 000000000..5fa266df3 Binary files /dev/null and b/public/terrain/19/858537/353895.terrain differ diff --git a/public/terrain/19/858537/353896.terrain b/public/terrain/19/858537/353896.terrain new file mode 100644 index 000000000..8efac677d Binary files /dev/null and b/public/terrain/19/858537/353896.terrain differ diff --git a/public/terrain/19/858537/353897.terrain b/public/terrain/19/858537/353897.terrain new file mode 100644 index 000000000..b481c6af3 Binary files /dev/null and b/public/terrain/19/858537/353897.terrain differ diff --git a/public/terrain/19/858537/353898.terrain b/public/terrain/19/858537/353898.terrain new file mode 100644 index 000000000..3575548b1 Binary files /dev/null and b/public/terrain/19/858537/353898.terrain differ diff --git a/public/terrain/19/858537/353899.terrain b/public/terrain/19/858537/353899.terrain new file mode 100644 index 000000000..fa645bb46 Binary files /dev/null and b/public/terrain/19/858537/353899.terrain differ diff --git a/public/terrain/19/858537/353900.terrain b/public/terrain/19/858537/353900.terrain new file mode 100644 index 000000000..e24fdb9f6 Binary files /dev/null and b/public/terrain/19/858537/353900.terrain differ diff --git a/public/terrain/19/858537/353901.terrain b/public/terrain/19/858537/353901.terrain new file mode 100644 index 000000000..0e064b3eb Binary files /dev/null and b/public/terrain/19/858537/353901.terrain differ diff --git a/public/terrain/19/858537/353902.terrain b/public/terrain/19/858537/353902.terrain new file mode 100644 index 000000000..d3ddcf928 Binary files /dev/null and b/public/terrain/19/858537/353902.terrain differ diff --git a/public/terrain/19/858537/353903.terrain b/public/terrain/19/858537/353903.terrain new file mode 100644 index 000000000..3bbbb0bdd Binary files /dev/null and b/public/terrain/19/858537/353903.terrain differ diff --git a/public/terrain/19/858537/353904.terrain b/public/terrain/19/858537/353904.terrain new file mode 100644 index 000000000..78bdf4405 Binary files /dev/null and b/public/terrain/19/858537/353904.terrain differ diff --git a/public/terrain/19/858537/353905.terrain b/public/terrain/19/858537/353905.terrain new file mode 100644 index 000000000..48666bd2d Binary files /dev/null and b/public/terrain/19/858537/353905.terrain differ diff --git a/public/terrain/19/858537/353906.terrain b/public/terrain/19/858537/353906.terrain new file mode 100644 index 000000000..b54775809 Binary files /dev/null and b/public/terrain/19/858537/353906.terrain differ diff --git a/public/terrain/19/858537/353907.terrain b/public/terrain/19/858537/353907.terrain new file mode 100644 index 000000000..646161c50 Binary files /dev/null and b/public/terrain/19/858537/353907.terrain differ diff --git a/public/terrain/19/858537/353908.terrain b/public/terrain/19/858537/353908.terrain new file mode 100644 index 000000000..f07c8722c Binary files /dev/null and b/public/terrain/19/858537/353908.terrain differ diff --git a/public/terrain/19/858537/353909.terrain b/public/terrain/19/858537/353909.terrain new file mode 100644 index 000000000..87fc3da6f Binary files /dev/null and b/public/terrain/19/858537/353909.terrain differ diff --git a/public/terrain/19/858537/353910.terrain b/public/terrain/19/858537/353910.terrain new file mode 100644 index 000000000..ad8bd2ed7 Binary files /dev/null and b/public/terrain/19/858537/353910.terrain differ diff --git a/public/terrain/19/858537/353911.terrain b/public/terrain/19/858537/353911.terrain new file mode 100644 index 000000000..061ca8eac Binary files /dev/null and b/public/terrain/19/858537/353911.terrain differ diff --git a/public/terrain/19/858537/353912.terrain b/public/terrain/19/858537/353912.terrain new file mode 100644 index 000000000..3c9362291 Binary files /dev/null and b/public/terrain/19/858537/353912.terrain differ diff --git a/public/terrain/19/858537/353913.terrain b/public/terrain/19/858537/353913.terrain new file mode 100644 index 000000000..b651c35a1 Binary files /dev/null and b/public/terrain/19/858537/353913.terrain differ diff --git a/public/terrain/19/858537/353914.terrain b/public/terrain/19/858537/353914.terrain new file mode 100644 index 000000000..445c83860 Binary files /dev/null and b/public/terrain/19/858537/353914.terrain differ diff --git a/public/terrain/19/858537/353915.terrain b/public/terrain/19/858537/353915.terrain new file mode 100644 index 000000000..cd0dce2ac Binary files /dev/null and b/public/terrain/19/858537/353915.terrain differ diff --git a/public/terrain/19/858537/353916.terrain b/public/terrain/19/858537/353916.terrain new file mode 100644 index 000000000..0478b4ac3 Binary files /dev/null and b/public/terrain/19/858537/353916.terrain differ diff --git a/public/terrain/19/858537/353917.terrain b/public/terrain/19/858537/353917.terrain new file mode 100644 index 000000000..75500d98b Binary files /dev/null and b/public/terrain/19/858537/353917.terrain differ diff --git a/public/terrain/19/858537/353918.terrain b/public/terrain/19/858537/353918.terrain new file mode 100644 index 000000000..421216a87 Binary files /dev/null and b/public/terrain/19/858537/353918.terrain differ diff --git a/public/terrain/19/858537/353919.terrain b/public/terrain/19/858537/353919.terrain new file mode 100644 index 000000000..7ad2f6750 Binary files /dev/null and b/public/terrain/19/858537/353919.terrain differ diff --git a/public/terrain/19/858537/353920.terrain b/public/terrain/19/858537/353920.terrain new file mode 100644 index 000000000..f4d3ed1ca Binary files /dev/null and b/public/terrain/19/858537/353920.terrain differ diff --git a/public/terrain/19/858537/353921.terrain b/public/terrain/19/858537/353921.terrain new file mode 100644 index 000000000..dd82555fc Binary files /dev/null and b/public/terrain/19/858537/353921.terrain differ diff --git a/public/terrain/19/858537/353922.terrain b/public/terrain/19/858537/353922.terrain new file mode 100644 index 000000000..ca0ba33d5 Binary files /dev/null and b/public/terrain/19/858537/353922.terrain differ diff --git a/public/terrain/19/858537/353923.terrain b/public/terrain/19/858537/353923.terrain new file mode 100644 index 000000000..38fdcccce Binary files /dev/null and b/public/terrain/19/858537/353923.terrain differ diff --git a/public/terrain/19/858537/353924.terrain b/public/terrain/19/858537/353924.terrain new file mode 100644 index 000000000..298c9db06 Binary files /dev/null and b/public/terrain/19/858537/353924.terrain differ diff --git a/public/terrain/19/858537/353925.terrain b/public/terrain/19/858537/353925.terrain new file mode 100644 index 000000000..193f76fe6 Binary files /dev/null and b/public/terrain/19/858537/353925.terrain differ diff --git a/public/terrain/19/858537/353926.terrain b/public/terrain/19/858537/353926.terrain new file mode 100644 index 000000000..96945e42b Binary files /dev/null and b/public/terrain/19/858537/353926.terrain differ diff --git a/public/terrain/19/858537/353927.terrain b/public/terrain/19/858537/353927.terrain new file mode 100644 index 000000000..d741a291e Binary files /dev/null and b/public/terrain/19/858537/353927.terrain differ diff --git a/public/terrain/19/858537/353928.terrain b/public/terrain/19/858537/353928.terrain new file mode 100644 index 000000000..19e03e241 Binary files /dev/null and b/public/terrain/19/858537/353928.terrain differ diff --git a/public/terrain/19/858537/353929.terrain b/public/terrain/19/858537/353929.terrain new file mode 100644 index 000000000..99db5fdcf Binary files /dev/null and b/public/terrain/19/858537/353929.terrain differ diff --git a/public/terrain/19/858537/353930.terrain b/public/terrain/19/858537/353930.terrain new file mode 100644 index 000000000..baa7ff538 Binary files /dev/null and b/public/terrain/19/858537/353930.terrain differ diff --git a/public/terrain/19/858537/353931.terrain b/public/terrain/19/858537/353931.terrain new file mode 100644 index 000000000..e5af7a05a Binary files /dev/null and b/public/terrain/19/858537/353931.terrain differ diff --git a/public/terrain/19/858537/353932.terrain b/public/terrain/19/858537/353932.terrain new file mode 100644 index 000000000..ae075d48a Binary files /dev/null and b/public/terrain/19/858537/353932.terrain differ diff --git a/public/terrain/19/858537/353933.terrain b/public/terrain/19/858537/353933.terrain new file mode 100644 index 000000000..b1321dd09 Binary files /dev/null and b/public/terrain/19/858537/353933.terrain differ diff --git a/public/terrain/19/858537/353934.terrain b/public/terrain/19/858537/353934.terrain new file mode 100644 index 000000000..1a02fe838 Binary files /dev/null and b/public/terrain/19/858537/353934.terrain differ diff --git a/public/terrain/19/858537/353935.terrain b/public/terrain/19/858537/353935.terrain new file mode 100644 index 000000000..7bd76add1 Binary files /dev/null and b/public/terrain/19/858537/353935.terrain differ diff --git a/public/terrain/19/858537/353936.terrain b/public/terrain/19/858537/353936.terrain new file mode 100644 index 000000000..4192830f7 Binary files /dev/null and b/public/terrain/19/858537/353936.terrain differ diff --git a/public/terrain/19/858537/353937.terrain b/public/terrain/19/858537/353937.terrain new file mode 100644 index 000000000..a0f0094f6 Binary files /dev/null and b/public/terrain/19/858537/353937.terrain differ diff --git a/public/terrain/19/858537/353938.terrain b/public/terrain/19/858537/353938.terrain new file mode 100644 index 000000000..3d8c6aa11 Binary files /dev/null and b/public/terrain/19/858537/353938.terrain differ diff --git a/public/terrain/19/858537/353939.terrain b/public/terrain/19/858537/353939.terrain new file mode 100644 index 000000000..7891bc30f Binary files /dev/null and b/public/terrain/19/858537/353939.terrain differ diff --git a/public/terrain/19/858537/353940.terrain b/public/terrain/19/858537/353940.terrain new file mode 100644 index 000000000..a6a46210f Binary files /dev/null and b/public/terrain/19/858537/353940.terrain differ diff --git a/public/terrain/19/858537/353941.terrain b/public/terrain/19/858537/353941.terrain new file mode 100644 index 000000000..f26899332 Binary files /dev/null and b/public/terrain/19/858537/353941.terrain differ diff --git a/public/terrain/19/858537/353942.terrain b/public/terrain/19/858537/353942.terrain new file mode 100644 index 000000000..aed38c4d2 Binary files /dev/null and b/public/terrain/19/858537/353942.terrain differ diff --git a/public/terrain/19/858537/353943.terrain b/public/terrain/19/858537/353943.terrain new file mode 100644 index 000000000..63b772f47 Binary files /dev/null and b/public/terrain/19/858537/353943.terrain differ diff --git a/public/terrain/19/858537/353944.terrain b/public/terrain/19/858537/353944.terrain new file mode 100644 index 000000000..a20981e06 Binary files /dev/null and b/public/terrain/19/858537/353944.terrain differ diff --git a/public/terrain/19/858537/353945.terrain b/public/terrain/19/858537/353945.terrain new file mode 100644 index 000000000..41902b7d1 Binary files /dev/null and b/public/terrain/19/858537/353945.terrain differ diff --git a/public/terrain/19/858537/353946.terrain b/public/terrain/19/858537/353946.terrain new file mode 100644 index 000000000..65ef28f30 Binary files /dev/null and b/public/terrain/19/858537/353946.terrain differ diff --git a/public/terrain/19/858537/353947.terrain b/public/terrain/19/858537/353947.terrain new file mode 100644 index 000000000..a48fd7842 Binary files /dev/null and b/public/terrain/19/858537/353947.terrain differ diff --git a/public/terrain/19/858537/353948.terrain b/public/terrain/19/858537/353948.terrain new file mode 100644 index 000000000..3ea54bdee Binary files /dev/null and b/public/terrain/19/858537/353948.terrain differ diff --git a/public/terrain/19/858537/353949.terrain b/public/terrain/19/858537/353949.terrain new file mode 100644 index 000000000..64db050ea Binary files /dev/null and b/public/terrain/19/858537/353949.terrain differ diff --git a/public/terrain/19/858537/353950.terrain b/public/terrain/19/858537/353950.terrain new file mode 100644 index 000000000..dc5d80212 Binary files /dev/null and b/public/terrain/19/858537/353950.terrain differ diff --git a/public/terrain/19/858537/353951.terrain b/public/terrain/19/858537/353951.terrain new file mode 100644 index 000000000..3f29f041e Binary files /dev/null and b/public/terrain/19/858537/353951.terrain differ diff --git a/public/terrain/19/858537/353952.terrain b/public/terrain/19/858537/353952.terrain new file mode 100644 index 000000000..63db2f717 Binary files /dev/null and b/public/terrain/19/858537/353952.terrain differ diff --git a/public/terrain/19/858537/353953.terrain b/public/terrain/19/858537/353953.terrain new file mode 100644 index 000000000..dfa088971 Binary files /dev/null and b/public/terrain/19/858537/353953.terrain differ diff --git a/public/terrain/19/858537/353954.terrain b/public/terrain/19/858537/353954.terrain new file mode 100644 index 000000000..611cb7a9b Binary files /dev/null and b/public/terrain/19/858537/353954.terrain differ diff --git a/public/terrain/19/858537/353955.terrain b/public/terrain/19/858537/353955.terrain new file mode 100644 index 000000000..de642a5ab Binary files /dev/null and b/public/terrain/19/858537/353955.terrain differ diff --git a/public/terrain/19/858537/353956.terrain b/public/terrain/19/858537/353956.terrain new file mode 100644 index 000000000..1b85d7130 Binary files /dev/null and b/public/terrain/19/858537/353956.terrain differ diff --git a/public/terrain/19/858537/353957.terrain b/public/terrain/19/858537/353957.terrain new file mode 100644 index 000000000..9da7df76b Binary files /dev/null and b/public/terrain/19/858537/353957.terrain differ diff --git a/public/terrain/19/858537/353958.terrain b/public/terrain/19/858537/353958.terrain new file mode 100644 index 000000000..4fec7c4e4 Binary files /dev/null and b/public/terrain/19/858537/353958.terrain differ diff --git a/public/terrain/19/858537/353959.terrain b/public/terrain/19/858537/353959.terrain new file mode 100644 index 000000000..dcc31b210 Binary files /dev/null and b/public/terrain/19/858537/353959.terrain differ diff --git a/public/terrain/19/858537/353960.terrain b/public/terrain/19/858537/353960.terrain new file mode 100644 index 000000000..1f95ca486 Binary files /dev/null and b/public/terrain/19/858537/353960.terrain differ diff --git a/public/terrain/19/858537/353961.terrain b/public/terrain/19/858537/353961.terrain new file mode 100644 index 000000000..9c7b81179 Binary files /dev/null and b/public/terrain/19/858537/353961.terrain differ diff --git a/public/terrain/19/858537/353962.terrain b/public/terrain/19/858537/353962.terrain new file mode 100644 index 000000000..8b35c07d3 Binary files /dev/null and b/public/terrain/19/858537/353962.terrain differ diff --git a/public/terrain/19/858537/353963.terrain b/public/terrain/19/858537/353963.terrain new file mode 100644 index 000000000..d0db54975 Binary files /dev/null and b/public/terrain/19/858537/353963.terrain differ diff --git a/public/terrain/19/858537/353964.terrain b/public/terrain/19/858537/353964.terrain new file mode 100644 index 000000000..ef9b68267 Binary files /dev/null and b/public/terrain/19/858537/353964.terrain differ diff --git a/public/terrain/19/858537/353965.terrain b/public/terrain/19/858537/353965.terrain new file mode 100644 index 000000000..c7fb43bd7 Binary files /dev/null and b/public/terrain/19/858537/353965.terrain differ diff --git a/public/terrain/19/858537/353966.terrain b/public/terrain/19/858537/353966.terrain new file mode 100644 index 000000000..760df1591 Binary files /dev/null and b/public/terrain/19/858537/353966.terrain differ diff --git a/public/terrain/19/858537/353967.terrain b/public/terrain/19/858537/353967.terrain new file mode 100644 index 000000000..a85dd7527 Binary files /dev/null and b/public/terrain/19/858537/353967.terrain differ diff --git a/public/terrain/19/858537/353968.terrain b/public/terrain/19/858537/353968.terrain new file mode 100644 index 000000000..ce37fcc19 Binary files /dev/null and b/public/terrain/19/858537/353968.terrain differ diff --git a/public/terrain/19/858537/353969.terrain b/public/terrain/19/858537/353969.terrain new file mode 100644 index 000000000..5b92fd8ab Binary files /dev/null and b/public/terrain/19/858537/353969.terrain differ diff --git a/public/terrain/19/858537/353970.terrain b/public/terrain/19/858537/353970.terrain new file mode 100644 index 000000000..52d38ec11 Binary files /dev/null and b/public/terrain/19/858537/353970.terrain differ diff --git a/public/terrain/19/858537/353971.terrain b/public/terrain/19/858537/353971.terrain new file mode 100644 index 000000000..bc8c24fba Binary files /dev/null and b/public/terrain/19/858537/353971.terrain differ diff --git a/public/terrain/19/858537/353972.terrain b/public/terrain/19/858537/353972.terrain new file mode 100644 index 000000000..77dc43634 Binary files /dev/null and b/public/terrain/19/858537/353972.terrain differ diff --git a/public/terrain/19/858537/353973.terrain b/public/terrain/19/858537/353973.terrain new file mode 100644 index 000000000..1846f5b1c Binary files /dev/null and b/public/terrain/19/858537/353973.terrain differ diff --git a/public/terrain/19/858537/353974.terrain b/public/terrain/19/858537/353974.terrain new file mode 100644 index 000000000..3e7463df8 Binary files /dev/null and b/public/terrain/19/858537/353974.terrain differ diff --git a/public/terrain/19/858537/353975.terrain b/public/terrain/19/858537/353975.terrain new file mode 100644 index 000000000..41b6fba6c Binary files /dev/null and b/public/terrain/19/858537/353975.terrain differ diff --git a/public/terrain/19/858537/353976.terrain b/public/terrain/19/858537/353976.terrain new file mode 100644 index 000000000..f5f22831c Binary files /dev/null and b/public/terrain/19/858537/353976.terrain differ diff --git a/public/terrain/19/858537/353977.terrain b/public/terrain/19/858537/353977.terrain new file mode 100644 index 000000000..b9fba368c Binary files /dev/null and b/public/terrain/19/858537/353977.terrain differ diff --git a/public/terrain/19/858537/353978.terrain b/public/terrain/19/858537/353978.terrain new file mode 100644 index 000000000..04c301812 Binary files /dev/null and b/public/terrain/19/858537/353978.terrain differ diff --git a/public/terrain/19/858537/353979.terrain b/public/terrain/19/858537/353979.terrain new file mode 100644 index 000000000..814ab39de Binary files /dev/null and b/public/terrain/19/858537/353979.terrain differ diff --git a/public/terrain/19/858537/353980.terrain b/public/terrain/19/858537/353980.terrain new file mode 100644 index 000000000..692b7412b Binary files /dev/null and b/public/terrain/19/858537/353980.terrain differ diff --git a/public/terrain/19/858537/353981.terrain b/public/terrain/19/858537/353981.terrain new file mode 100644 index 000000000..7c5949fd4 Binary files /dev/null and b/public/terrain/19/858537/353981.terrain differ diff --git a/public/terrain/19/858537/353982.terrain b/public/terrain/19/858537/353982.terrain new file mode 100644 index 000000000..3bc29a890 Binary files /dev/null and b/public/terrain/19/858537/353982.terrain differ diff --git a/public/terrain/19/858537/353983.terrain b/public/terrain/19/858537/353983.terrain new file mode 100644 index 000000000..cc2c00488 Binary files /dev/null and b/public/terrain/19/858537/353983.terrain differ diff --git a/public/terrain/19/858537/353984.terrain b/public/terrain/19/858537/353984.terrain new file mode 100644 index 000000000..bb2918a3b Binary files /dev/null and b/public/terrain/19/858537/353984.terrain differ diff --git a/public/terrain/19/858537/353985.terrain b/public/terrain/19/858537/353985.terrain new file mode 100644 index 000000000..0ad9461e7 Binary files /dev/null and b/public/terrain/19/858537/353985.terrain differ diff --git a/public/terrain/19/858537/353986.terrain b/public/terrain/19/858537/353986.terrain new file mode 100644 index 000000000..b4ce0d780 Binary files /dev/null and b/public/terrain/19/858537/353986.terrain differ diff --git a/public/terrain/19/858537/353987.terrain b/public/terrain/19/858537/353987.terrain new file mode 100644 index 000000000..1d49c2acc Binary files /dev/null and b/public/terrain/19/858537/353987.terrain differ diff --git a/public/terrain/19/858537/353988.terrain b/public/terrain/19/858537/353988.terrain new file mode 100644 index 000000000..78152842f Binary files /dev/null and b/public/terrain/19/858537/353988.terrain differ diff --git a/public/terrain/19/858537/353989.terrain b/public/terrain/19/858537/353989.terrain new file mode 100644 index 000000000..c3df92808 Binary files /dev/null and b/public/terrain/19/858537/353989.terrain differ diff --git a/public/terrain/19/858537/353990.terrain b/public/terrain/19/858537/353990.terrain new file mode 100644 index 000000000..838a4847d Binary files /dev/null and b/public/terrain/19/858537/353990.terrain differ diff --git a/public/terrain/19/858537/353991.terrain b/public/terrain/19/858537/353991.terrain new file mode 100644 index 000000000..cd7ce599d Binary files /dev/null and b/public/terrain/19/858537/353991.terrain differ diff --git a/public/terrain/19/858537/353992.terrain b/public/terrain/19/858537/353992.terrain new file mode 100644 index 000000000..33e5f3de7 Binary files /dev/null and b/public/terrain/19/858537/353992.terrain differ diff --git a/public/terrain/19/858537/353993.terrain b/public/terrain/19/858537/353993.terrain new file mode 100644 index 000000000..add5cce76 Binary files /dev/null and b/public/terrain/19/858537/353993.terrain differ diff --git a/public/terrain/19/858537/353994.terrain b/public/terrain/19/858537/353994.terrain new file mode 100644 index 000000000..42a8be34a Binary files /dev/null and b/public/terrain/19/858537/353994.terrain differ diff --git a/public/terrain/19/858537/353995.terrain b/public/terrain/19/858537/353995.terrain new file mode 100644 index 000000000..6101df37a Binary files /dev/null and b/public/terrain/19/858537/353995.terrain differ diff --git a/public/terrain/19/858537/353996.terrain b/public/terrain/19/858537/353996.terrain new file mode 100644 index 000000000..1cebe05e4 Binary files /dev/null and b/public/terrain/19/858537/353996.terrain differ diff --git a/public/terrain/19/858537/353997.terrain b/public/terrain/19/858537/353997.terrain new file mode 100644 index 000000000..df35a694b Binary files /dev/null and b/public/terrain/19/858537/353997.terrain differ diff --git a/public/terrain/19/858537/353998.terrain b/public/terrain/19/858537/353998.terrain new file mode 100644 index 000000000..77652986f Binary files /dev/null and b/public/terrain/19/858537/353998.terrain differ diff --git a/public/terrain/19/858537/353999.terrain b/public/terrain/19/858537/353999.terrain new file mode 100644 index 000000000..f35583193 Binary files /dev/null and b/public/terrain/19/858537/353999.terrain differ diff --git a/public/terrain/19/858537/354000.terrain b/public/terrain/19/858537/354000.terrain new file mode 100644 index 000000000..d23fc0fe0 Binary files /dev/null and b/public/terrain/19/858537/354000.terrain differ diff --git a/public/terrain/19/858537/354001.terrain b/public/terrain/19/858537/354001.terrain new file mode 100644 index 000000000..038243bb7 Binary files /dev/null and b/public/terrain/19/858537/354001.terrain differ diff --git a/public/terrain/19/858537/354002.terrain b/public/terrain/19/858537/354002.terrain new file mode 100644 index 000000000..731b9c4ac Binary files /dev/null and b/public/terrain/19/858537/354002.terrain differ diff --git a/public/terrain/19/858537/354003.terrain b/public/terrain/19/858537/354003.terrain new file mode 100644 index 000000000..9df12d1ef Binary files /dev/null and b/public/terrain/19/858537/354003.terrain differ diff --git a/public/terrain/19/858537/354004.terrain b/public/terrain/19/858537/354004.terrain new file mode 100644 index 000000000..3075005f2 Binary files /dev/null and b/public/terrain/19/858537/354004.terrain differ diff --git a/public/terrain/19/858537/354005.terrain b/public/terrain/19/858537/354005.terrain new file mode 100644 index 000000000..0c3da73ed Binary files /dev/null and b/public/terrain/19/858537/354005.terrain differ diff --git a/public/terrain/19/858537/354006.terrain b/public/terrain/19/858537/354006.terrain new file mode 100644 index 000000000..dfcf3589e Binary files /dev/null and b/public/terrain/19/858537/354006.terrain differ diff --git a/public/terrain/19/858537/354007.terrain b/public/terrain/19/858537/354007.terrain new file mode 100644 index 000000000..a248cc183 Binary files /dev/null and b/public/terrain/19/858537/354007.terrain differ diff --git a/public/terrain/19/858537/354008.terrain b/public/terrain/19/858537/354008.terrain new file mode 100644 index 000000000..68a93a72f Binary files /dev/null and b/public/terrain/19/858537/354008.terrain differ diff --git a/public/terrain/19/858537/354009.terrain b/public/terrain/19/858537/354009.terrain new file mode 100644 index 000000000..b466cb69d Binary files /dev/null and b/public/terrain/19/858537/354009.terrain differ diff --git a/public/terrain/19/858537/354010.terrain b/public/terrain/19/858537/354010.terrain new file mode 100644 index 000000000..8b47ae8d1 Binary files /dev/null and b/public/terrain/19/858537/354010.terrain differ diff --git a/public/terrain/19/858537/354011.terrain b/public/terrain/19/858537/354011.terrain new file mode 100644 index 000000000..cbf454a8b Binary files /dev/null and b/public/terrain/19/858537/354011.terrain differ diff --git a/public/terrain/19/858537/354012.terrain b/public/terrain/19/858537/354012.terrain new file mode 100644 index 000000000..f68bec5d7 Binary files /dev/null and b/public/terrain/19/858537/354012.terrain differ diff --git a/public/terrain/19/858537/354013.terrain b/public/terrain/19/858537/354013.terrain new file mode 100644 index 000000000..c892599da Binary files /dev/null and b/public/terrain/19/858537/354013.terrain differ diff --git a/public/terrain/19/858537/354014.terrain b/public/terrain/19/858537/354014.terrain new file mode 100644 index 000000000..53a24c3e3 Binary files /dev/null and b/public/terrain/19/858537/354014.terrain differ diff --git a/public/terrain/19/858537/354015.terrain b/public/terrain/19/858537/354015.terrain new file mode 100644 index 000000000..ddf04565b Binary files /dev/null and b/public/terrain/19/858537/354015.terrain differ diff --git a/public/terrain/19/858537/354016.terrain b/public/terrain/19/858537/354016.terrain new file mode 100644 index 000000000..e3ed58044 Binary files /dev/null and b/public/terrain/19/858537/354016.terrain differ diff --git a/public/terrain/19/858537/354017.terrain b/public/terrain/19/858537/354017.terrain new file mode 100644 index 000000000..480caaf94 Binary files /dev/null and b/public/terrain/19/858537/354017.terrain differ diff --git a/public/terrain/19/858537/354018.terrain b/public/terrain/19/858537/354018.terrain new file mode 100644 index 000000000..f354a303c Binary files /dev/null and b/public/terrain/19/858537/354018.terrain differ diff --git a/public/terrain/19/858537/354019.terrain b/public/terrain/19/858537/354019.terrain new file mode 100644 index 000000000..dcced05c4 Binary files /dev/null and b/public/terrain/19/858537/354019.terrain differ diff --git a/public/terrain/19/858537/354020.terrain b/public/terrain/19/858537/354020.terrain new file mode 100644 index 000000000..3b5db0c5b Binary files /dev/null and b/public/terrain/19/858537/354020.terrain differ diff --git a/public/terrain/19/858537/354021.terrain b/public/terrain/19/858537/354021.terrain new file mode 100644 index 000000000..0b07ef748 Binary files /dev/null and b/public/terrain/19/858537/354021.terrain differ diff --git a/public/terrain/19/858537/354022.terrain b/public/terrain/19/858537/354022.terrain new file mode 100644 index 000000000..e184b2c20 Binary files /dev/null and b/public/terrain/19/858537/354022.terrain differ diff --git a/public/terrain/19/858537/354023.terrain b/public/terrain/19/858537/354023.terrain new file mode 100644 index 000000000..7e46a1528 Binary files /dev/null and b/public/terrain/19/858537/354023.terrain differ diff --git a/public/terrain/19/858537/354024.terrain b/public/terrain/19/858537/354024.terrain new file mode 100644 index 000000000..2065480c9 Binary files /dev/null and b/public/terrain/19/858537/354024.terrain differ diff --git a/public/terrain/19/858537/354025.terrain b/public/terrain/19/858537/354025.terrain new file mode 100644 index 000000000..d45fe1f73 Binary files /dev/null and b/public/terrain/19/858537/354025.terrain differ diff --git a/public/terrain/19/858537/354026.terrain b/public/terrain/19/858537/354026.terrain new file mode 100644 index 000000000..22eb1e0b4 Binary files /dev/null and b/public/terrain/19/858537/354026.terrain differ diff --git a/public/terrain/19/858537/354027.terrain b/public/terrain/19/858537/354027.terrain new file mode 100644 index 000000000..f8a59e103 Binary files /dev/null and b/public/terrain/19/858537/354027.terrain differ diff --git a/public/terrain/19/858537/354028.terrain b/public/terrain/19/858537/354028.terrain new file mode 100644 index 000000000..e64f46ffe Binary files /dev/null and b/public/terrain/19/858537/354028.terrain differ diff --git a/public/terrain/19/858537/354029.terrain b/public/terrain/19/858537/354029.terrain new file mode 100644 index 000000000..3b3edd18c Binary files /dev/null and b/public/terrain/19/858537/354029.terrain differ diff --git a/public/terrain/19/858537/354030.terrain b/public/terrain/19/858537/354030.terrain new file mode 100644 index 000000000..5956ae67d Binary files /dev/null and b/public/terrain/19/858537/354030.terrain differ diff --git a/public/terrain/19/858537/354031.terrain b/public/terrain/19/858537/354031.terrain new file mode 100644 index 000000000..3a65b8607 Binary files /dev/null and b/public/terrain/19/858537/354031.terrain differ diff --git a/public/terrain/19/858537/354032.terrain b/public/terrain/19/858537/354032.terrain new file mode 100644 index 000000000..451289324 Binary files /dev/null and b/public/terrain/19/858537/354032.terrain differ diff --git a/public/terrain/19/858537/354033.terrain b/public/terrain/19/858537/354033.terrain new file mode 100644 index 000000000..cbd9b74e2 Binary files /dev/null and b/public/terrain/19/858537/354033.terrain differ diff --git a/public/terrain/19/858537/354034.terrain b/public/terrain/19/858537/354034.terrain new file mode 100644 index 000000000..922fc110b Binary files /dev/null and b/public/terrain/19/858537/354034.terrain differ diff --git a/public/terrain/19/858537/354035.terrain b/public/terrain/19/858537/354035.terrain new file mode 100644 index 000000000..68952fddb Binary files /dev/null and b/public/terrain/19/858537/354035.terrain differ diff --git a/public/terrain/19/858537/354036.terrain b/public/terrain/19/858537/354036.terrain new file mode 100644 index 000000000..f1c6f0325 Binary files /dev/null and b/public/terrain/19/858537/354036.terrain differ diff --git a/public/terrain/19/858537/354037.terrain b/public/terrain/19/858537/354037.terrain new file mode 100644 index 000000000..84a79e898 Binary files /dev/null and b/public/terrain/19/858537/354037.terrain differ diff --git a/public/terrain/19/858537/354038.terrain b/public/terrain/19/858537/354038.terrain new file mode 100644 index 000000000..482820062 Binary files /dev/null and b/public/terrain/19/858537/354038.terrain differ diff --git a/public/terrain/19/858537/354039.terrain b/public/terrain/19/858537/354039.terrain new file mode 100644 index 000000000..89afa7d05 Binary files /dev/null and b/public/terrain/19/858537/354039.terrain differ diff --git a/public/terrain/19/858537/354040.terrain b/public/terrain/19/858537/354040.terrain new file mode 100644 index 000000000..4265b57ac Binary files /dev/null and b/public/terrain/19/858537/354040.terrain differ diff --git a/public/terrain/19/858537/354041.terrain b/public/terrain/19/858537/354041.terrain new file mode 100644 index 000000000..f1b8e50ca Binary files /dev/null and b/public/terrain/19/858537/354041.terrain differ diff --git a/public/terrain/19/858537/354042.terrain b/public/terrain/19/858537/354042.terrain new file mode 100644 index 000000000..d4e427000 Binary files /dev/null and b/public/terrain/19/858537/354042.terrain differ diff --git a/public/terrain/19/858537/354043.terrain b/public/terrain/19/858537/354043.terrain new file mode 100644 index 000000000..db5f0388b Binary files /dev/null and b/public/terrain/19/858537/354043.terrain differ diff --git a/public/terrain/19/858537/354044.terrain b/public/terrain/19/858537/354044.terrain new file mode 100644 index 000000000..a765b9b7d Binary files /dev/null and b/public/terrain/19/858537/354044.terrain differ diff --git a/public/terrain/19/858537/354045.terrain b/public/terrain/19/858537/354045.terrain new file mode 100644 index 000000000..768605561 Binary files /dev/null and b/public/terrain/19/858537/354045.terrain differ diff --git a/public/terrain/19/858537/354046.terrain b/public/terrain/19/858537/354046.terrain new file mode 100644 index 000000000..342e64292 Binary files /dev/null and b/public/terrain/19/858537/354046.terrain differ diff --git a/public/terrain/19/858537/354047.terrain b/public/terrain/19/858537/354047.terrain new file mode 100644 index 000000000..79b6ec758 Binary files /dev/null and b/public/terrain/19/858537/354047.terrain differ diff --git a/public/terrain/19/858537/354048.terrain b/public/terrain/19/858537/354048.terrain new file mode 100644 index 000000000..12d2799ab Binary files /dev/null and b/public/terrain/19/858537/354048.terrain differ diff --git a/public/terrain/19/858537/354049.terrain b/public/terrain/19/858537/354049.terrain new file mode 100644 index 000000000..d3c0c20cf Binary files /dev/null and b/public/terrain/19/858537/354049.terrain differ diff --git a/public/terrain/19/858537/354050.terrain b/public/terrain/19/858537/354050.terrain new file mode 100644 index 000000000..971e36793 Binary files /dev/null and b/public/terrain/19/858537/354050.terrain differ diff --git a/public/terrain/19/858537/354051.terrain b/public/terrain/19/858537/354051.terrain new file mode 100644 index 000000000..a453aac18 Binary files /dev/null and b/public/terrain/19/858537/354051.terrain differ diff --git a/public/terrain/19/858537/354052.terrain b/public/terrain/19/858537/354052.terrain new file mode 100644 index 000000000..201634d5b Binary files /dev/null and b/public/terrain/19/858537/354052.terrain differ diff --git a/public/terrain/19/858537/354053.terrain b/public/terrain/19/858537/354053.terrain new file mode 100644 index 000000000..959b3bfc0 Binary files /dev/null and b/public/terrain/19/858537/354053.terrain differ diff --git a/public/terrain/19/858537/354054.terrain b/public/terrain/19/858537/354054.terrain new file mode 100644 index 000000000..7a9005405 Binary files /dev/null and b/public/terrain/19/858537/354054.terrain differ diff --git a/public/terrain/19/858537/354055.terrain b/public/terrain/19/858537/354055.terrain new file mode 100644 index 000000000..c73d3b240 Binary files /dev/null and b/public/terrain/19/858537/354055.terrain differ diff --git a/public/terrain/19/858537/354056.terrain b/public/terrain/19/858537/354056.terrain new file mode 100644 index 000000000..85fe8120c Binary files /dev/null and b/public/terrain/19/858537/354056.terrain differ diff --git a/public/terrain/19/858537/354057.terrain b/public/terrain/19/858537/354057.terrain new file mode 100644 index 000000000..6ca028dba Binary files /dev/null and b/public/terrain/19/858537/354057.terrain differ diff --git a/public/terrain/19/858537/354058.terrain b/public/terrain/19/858537/354058.terrain new file mode 100644 index 000000000..226575ea1 Binary files /dev/null and b/public/terrain/19/858537/354058.terrain differ diff --git a/public/terrain/19/858537/354059.terrain b/public/terrain/19/858537/354059.terrain new file mode 100644 index 000000000..4f9c73f83 Binary files /dev/null and b/public/terrain/19/858537/354059.terrain differ diff --git a/public/terrain/19/858538/353743.terrain b/public/terrain/19/858538/353743.terrain new file mode 100644 index 000000000..4ed56c69f Binary files /dev/null and b/public/terrain/19/858538/353743.terrain differ diff --git a/public/terrain/19/858538/353744.terrain b/public/terrain/19/858538/353744.terrain new file mode 100644 index 000000000..06bdacef9 Binary files /dev/null and b/public/terrain/19/858538/353744.terrain differ diff --git a/public/terrain/19/858538/353745.terrain b/public/terrain/19/858538/353745.terrain new file mode 100644 index 000000000..ce55d78cf Binary files /dev/null and b/public/terrain/19/858538/353745.terrain differ diff --git a/public/terrain/19/858538/353746.terrain b/public/terrain/19/858538/353746.terrain new file mode 100644 index 000000000..194c89982 Binary files /dev/null and b/public/terrain/19/858538/353746.terrain differ diff --git a/public/terrain/19/858538/353747.terrain b/public/terrain/19/858538/353747.terrain new file mode 100644 index 000000000..694e04858 Binary files /dev/null and b/public/terrain/19/858538/353747.terrain differ diff --git a/public/terrain/19/858538/353748.terrain b/public/terrain/19/858538/353748.terrain new file mode 100644 index 000000000..2c8099e53 Binary files /dev/null and b/public/terrain/19/858538/353748.terrain differ diff --git a/public/terrain/19/858538/353749.terrain b/public/terrain/19/858538/353749.terrain new file mode 100644 index 000000000..d40953fdd Binary files /dev/null and b/public/terrain/19/858538/353749.terrain differ diff --git a/public/terrain/19/858538/353750.terrain b/public/terrain/19/858538/353750.terrain new file mode 100644 index 000000000..cc6aae403 Binary files /dev/null and b/public/terrain/19/858538/353750.terrain differ diff --git a/public/terrain/19/858538/353751.terrain b/public/terrain/19/858538/353751.terrain new file mode 100644 index 000000000..8bea1d918 Binary files /dev/null and b/public/terrain/19/858538/353751.terrain differ diff --git a/public/terrain/19/858538/353752.terrain b/public/terrain/19/858538/353752.terrain new file mode 100644 index 000000000..cedbae186 Binary files /dev/null and b/public/terrain/19/858538/353752.terrain differ diff --git a/public/terrain/19/858538/353753.terrain b/public/terrain/19/858538/353753.terrain new file mode 100644 index 000000000..f49970161 Binary files /dev/null and b/public/terrain/19/858538/353753.terrain differ diff --git a/public/terrain/19/858538/353754.terrain b/public/terrain/19/858538/353754.terrain new file mode 100644 index 000000000..3dac52fa1 Binary files /dev/null and b/public/terrain/19/858538/353754.terrain differ diff --git a/public/terrain/19/858538/353755.terrain b/public/terrain/19/858538/353755.terrain new file mode 100644 index 000000000..15159c700 Binary files /dev/null and b/public/terrain/19/858538/353755.terrain differ diff --git a/public/terrain/19/858538/353756.terrain b/public/terrain/19/858538/353756.terrain new file mode 100644 index 000000000..fd7ce60c9 Binary files /dev/null and b/public/terrain/19/858538/353756.terrain differ diff --git a/public/terrain/19/858538/353757.terrain b/public/terrain/19/858538/353757.terrain new file mode 100644 index 000000000..e3fff370b Binary files /dev/null and b/public/terrain/19/858538/353757.terrain differ diff --git a/public/terrain/19/858538/353758.terrain b/public/terrain/19/858538/353758.terrain new file mode 100644 index 000000000..f0ecb31fe Binary files /dev/null and b/public/terrain/19/858538/353758.terrain differ diff --git a/public/terrain/19/858538/353759.terrain b/public/terrain/19/858538/353759.terrain new file mode 100644 index 000000000..d8be96c4f Binary files /dev/null and b/public/terrain/19/858538/353759.terrain differ diff --git a/public/terrain/19/858538/353760.terrain b/public/terrain/19/858538/353760.terrain new file mode 100644 index 000000000..0e6139be3 Binary files /dev/null and b/public/terrain/19/858538/353760.terrain differ diff --git a/public/terrain/19/858538/353761.terrain b/public/terrain/19/858538/353761.terrain new file mode 100644 index 000000000..8492b441b Binary files /dev/null and b/public/terrain/19/858538/353761.terrain differ diff --git a/public/terrain/19/858538/353762.terrain b/public/terrain/19/858538/353762.terrain new file mode 100644 index 000000000..f29ad6b2f Binary files /dev/null and b/public/terrain/19/858538/353762.terrain differ diff --git a/public/terrain/19/858538/353763.terrain b/public/terrain/19/858538/353763.terrain new file mode 100644 index 000000000..c3c461dcb Binary files /dev/null and b/public/terrain/19/858538/353763.terrain differ diff --git a/public/terrain/19/858538/353764.terrain b/public/terrain/19/858538/353764.terrain new file mode 100644 index 000000000..accb9cf94 Binary files /dev/null and b/public/terrain/19/858538/353764.terrain differ diff --git a/public/terrain/19/858538/353765.terrain b/public/terrain/19/858538/353765.terrain new file mode 100644 index 000000000..cdca59ad4 Binary files /dev/null and b/public/terrain/19/858538/353765.terrain differ diff --git a/public/terrain/19/858538/353766.terrain b/public/terrain/19/858538/353766.terrain new file mode 100644 index 000000000..91e386aa5 Binary files /dev/null and b/public/terrain/19/858538/353766.terrain differ diff --git a/public/terrain/19/858538/353767.terrain b/public/terrain/19/858538/353767.terrain new file mode 100644 index 000000000..4cf249cf0 Binary files /dev/null and b/public/terrain/19/858538/353767.terrain differ diff --git a/public/terrain/19/858538/353768.terrain b/public/terrain/19/858538/353768.terrain new file mode 100644 index 000000000..90cca36f9 Binary files /dev/null and b/public/terrain/19/858538/353768.terrain differ diff --git a/public/terrain/19/858538/353769.terrain b/public/terrain/19/858538/353769.terrain new file mode 100644 index 000000000..5642d826c Binary files /dev/null and b/public/terrain/19/858538/353769.terrain differ diff --git a/public/terrain/19/858538/353770.terrain b/public/terrain/19/858538/353770.terrain new file mode 100644 index 000000000..786bcdf08 Binary files /dev/null and b/public/terrain/19/858538/353770.terrain differ diff --git a/public/terrain/19/858538/353771.terrain b/public/terrain/19/858538/353771.terrain new file mode 100644 index 000000000..b6ea982e1 Binary files /dev/null and b/public/terrain/19/858538/353771.terrain differ diff --git a/public/terrain/19/858538/353772.terrain b/public/terrain/19/858538/353772.terrain new file mode 100644 index 000000000..b414860aa Binary files /dev/null and b/public/terrain/19/858538/353772.terrain differ diff --git a/public/terrain/19/858538/353773.terrain b/public/terrain/19/858538/353773.terrain new file mode 100644 index 000000000..b219ca5af Binary files /dev/null and b/public/terrain/19/858538/353773.terrain differ diff --git a/public/terrain/19/858538/353774.terrain b/public/terrain/19/858538/353774.terrain new file mode 100644 index 000000000..6d6da73d7 Binary files /dev/null and b/public/terrain/19/858538/353774.terrain differ diff --git a/public/terrain/19/858538/353775.terrain b/public/terrain/19/858538/353775.terrain new file mode 100644 index 000000000..fa6c749e4 Binary files /dev/null and b/public/terrain/19/858538/353775.terrain differ diff --git a/public/terrain/19/858538/353776.terrain b/public/terrain/19/858538/353776.terrain new file mode 100644 index 000000000..d72d74f37 Binary files /dev/null and b/public/terrain/19/858538/353776.terrain differ diff --git a/public/terrain/19/858538/353777.terrain b/public/terrain/19/858538/353777.terrain new file mode 100644 index 000000000..50d6f7be1 Binary files /dev/null and b/public/terrain/19/858538/353777.terrain differ diff --git a/public/terrain/19/858538/353778.terrain b/public/terrain/19/858538/353778.terrain new file mode 100644 index 000000000..486a78887 Binary files /dev/null and b/public/terrain/19/858538/353778.terrain differ diff --git a/public/terrain/19/858538/353779.terrain b/public/terrain/19/858538/353779.terrain new file mode 100644 index 000000000..9bc011235 Binary files /dev/null and b/public/terrain/19/858538/353779.terrain differ diff --git a/public/terrain/19/858538/353780.terrain b/public/terrain/19/858538/353780.terrain new file mode 100644 index 000000000..555edfad6 Binary files /dev/null and b/public/terrain/19/858538/353780.terrain differ diff --git a/public/terrain/19/858538/353781.terrain b/public/terrain/19/858538/353781.terrain new file mode 100644 index 000000000..1d870b485 Binary files /dev/null and b/public/terrain/19/858538/353781.terrain differ diff --git a/public/terrain/19/858538/353782.terrain b/public/terrain/19/858538/353782.terrain new file mode 100644 index 000000000..662b035c4 Binary files /dev/null and b/public/terrain/19/858538/353782.terrain differ diff --git a/public/terrain/19/858538/353783.terrain b/public/terrain/19/858538/353783.terrain new file mode 100644 index 000000000..63d86991b Binary files /dev/null and b/public/terrain/19/858538/353783.terrain differ diff --git a/public/terrain/19/858538/353784.terrain b/public/terrain/19/858538/353784.terrain new file mode 100644 index 000000000..322e95bb4 Binary files /dev/null and b/public/terrain/19/858538/353784.terrain differ diff --git a/public/terrain/19/858538/353785.terrain b/public/terrain/19/858538/353785.terrain new file mode 100644 index 000000000..c53f859e5 Binary files /dev/null and b/public/terrain/19/858538/353785.terrain differ diff --git a/public/terrain/19/858538/353786.terrain b/public/terrain/19/858538/353786.terrain new file mode 100644 index 000000000..51e08b84c Binary files /dev/null and b/public/terrain/19/858538/353786.terrain differ diff --git a/public/terrain/19/858538/353787.terrain b/public/terrain/19/858538/353787.terrain new file mode 100644 index 000000000..6248d6148 Binary files /dev/null and b/public/terrain/19/858538/353787.terrain differ diff --git a/public/terrain/19/858538/353788.terrain b/public/terrain/19/858538/353788.terrain new file mode 100644 index 000000000..d3f846b83 Binary files /dev/null and b/public/terrain/19/858538/353788.terrain differ diff --git a/public/terrain/19/858538/353789.terrain b/public/terrain/19/858538/353789.terrain new file mode 100644 index 000000000..09a1c4de2 Binary files /dev/null and b/public/terrain/19/858538/353789.terrain differ diff --git a/public/terrain/19/858538/353790.terrain b/public/terrain/19/858538/353790.terrain new file mode 100644 index 000000000..2077ed6a4 Binary files /dev/null and b/public/terrain/19/858538/353790.terrain differ diff --git a/public/terrain/19/858538/353791.terrain b/public/terrain/19/858538/353791.terrain new file mode 100644 index 000000000..5c6d98922 Binary files /dev/null and b/public/terrain/19/858538/353791.terrain differ diff --git a/public/terrain/19/858538/353792.terrain b/public/terrain/19/858538/353792.terrain new file mode 100644 index 000000000..4c8365b1a Binary files /dev/null and b/public/terrain/19/858538/353792.terrain differ diff --git a/public/terrain/19/858538/353793.terrain b/public/terrain/19/858538/353793.terrain new file mode 100644 index 000000000..5ace2a3d7 Binary files /dev/null and b/public/terrain/19/858538/353793.terrain differ diff --git a/public/terrain/19/858538/353794.terrain b/public/terrain/19/858538/353794.terrain new file mode 100644 index 000000000..33dc61c51 Binary files /dev/null and b/public/terrain/19/858538/353794.terrain differ diff --git a/public/terrain/19/858538/353795.terrain b/public/terrain/19/858538/353795.terrain new file mode 100644 index 000000000..0e416b22c Binary files /dev/null and b/public/terrain/19/858538/353795.terrain differ diff --git a/public/terrain/19/858538/353796.terrain b/public/terrain/19/858538/353796.terrain new file mode 100644 index 000000000..9f7a72ba3 Binary files /dev/null and b/public/terrain/19/858538/353796.terrain differ diff --git a/public/terrain/19/858538/353797.terrain b/public/terrain/19/858538/353797.terrain new file mode 100644 index 000000000..7c7b92adf Binary files /dev/null and b/public/terrain/19/858538/353797.terrain differ diff --git a/public/terrain/19/858538/353798.terrain b/public/terrain/19/858538/353798.terrain new file mode 100644 index 000000000..f52bbd03d Binary files /dev/null and b/public/terrain/19/858538/353798.terrain differ diff --git a/public/terrain/19/858538/353799.terrain b/public/terrain/19/858538/353799.terrain new file mode 100644 index 000000000..92ead8f7f Binary files /dev/null and b/public/terrain/19/858538/353799.terrain differ diff --git a/public/terrain/19/858538/353800.terrain b/public/terrain/19/858538/353800.terrain new file mode 100644 index 000000000..65b478738 Binary files /dev/null and b/public/terrain/19/858538/353800.terrain differ diff --git a/public/terrain/19/858538/353801.terrain b/public/terrain/19/858538/353801.terrain new file mode 100644 index 000000000..f4a517e54 Binary files /dev/null and b/public/terrain/19/858538/353801.terrain differ diff --git a/public/terrain/19/858538/353802.terrain b/public/terrain/19/858538/353802.terrain new file mode 100644 index 000000000..25364630a Binary files /dev/null and b/public/terrain/19/858538/353802.terrain differ diff --git a/public/terrain/19/858538/353803.terrain b/public/terrain/19/858538/353803.terrain new file mode 100644 index 000000000..58aa86fe6 Binary files /dev/null and b/public/terrain/19/858538/353803.terrain differ diff --git a/public/terrain/19/858538/353804.terrain b/public/terrain/19/858538/353804.terrain new file mode 100644 index 000000000..974bb4462 Binary files /dev/null and b/public/terrain/19/858538/353804.terrain differ diff --git a/public/terrain/19/858538/353805.terrain b/public/terrain/19/858538/353805.terrain new file mode 100644 index 000000000..e597ca97c Binary files /dev/null and b/public/terrain/19/858538/353805.terrain differ diff --git a/public/terrain/19/858538/353806.terrain b/public/terrain/19/858538/353806.terrain new file mode 100644 index 000000000..83880daf4 Binary files /dev/null and b/public/terrain/19/858538/353806.terrain differ diff --git a/public/terrain/19/858538/353807.terrain b/public/terrain/19/858538/353807.terrain new file mode 100644 index 000000000..66131bd89 Binary files /dev/null and b/public/terrain/19/858538/353807.terrain differ diff --git a/public/terrain/19/858538/353808.terrain b/public/terrain/19/858538/353808.terrain new file mode 100644 index 000000000..38fb9a7d3 Binary files /dev/null and b/public/terrain/19/858538/353808.terrain differ diff --git a/public/terrain/19/858538/353809.terrain b/public/terrain/19/858538/353809.terrain new file mode 100644 index 000000000..5f752f8e0 Binary files /dev/null and b/public/terrain/19/858538/353809.terrain differ diff --git a/public/terrain/19/858538/353810.terrain b/public/terrain/19/858538/353810.terrain new file mode 100644 index 000000000..2527af672 Binary files /dev/null and b/public/terrain/19/858538/353810.terrain differ diff --git a/public/terrain/19/858538/353811.terrain b/public/terrain/19/858538/353811.terrain new file mode 100644 index 000000000..267ae68e0 Binary files /dev/null and b/public/terrain/19/858538/353811.terrain differ diff --git a/public/terrain/19/858538/353812.terrain b/public/terrain/19/858538/353812.terrain new file mode 100644 index 000000000..89a803eb9 Binary files /dev/null and b/public/terrain/19/858538/353812.terrain differ diff --git a/public/terrain/19/858538/353813.terrain b/public/terrain/19/858538/353813.terrain new file mode 100644 index 000000000..ecf77df49 Binary files /dev/null and b/public/terrain/19/858538/353813.terrain differ diff --git a/public/terrain/19/858538/353814.terrain b/public/terrain/19/858538/353814.terrain new file mode 100644 index 000000000..e072f01d7 Binary files /dev/null and b/public/terrain/19/858538/353814.terrain differ diff --git a/public/terrain/19/858538/353815.terrain b/public/terrain/19/858538/353815.terrain new file mode 100644 index 000000000..48e080891 Binary files /dev/null and b/public/terrain/19/858538/353815.terrain differ diff --git a/public/terrain/19/858538/353816.terrain b/public/terrain/19/858538/353816.terrain new file mode 100644 index 000000000..92e6c5dd4 Binary files /dev/null and b/public/terrain/19/858538/353816.terrain differ diff --git a/public/terrain/19/858538/353817.terrain b/public/terrain/19/858538/353817.terrain new file mode 100644 index 000000000..1a4a4ff80 Binary files /dev/null and b/public/terrain/19/858538/353817.terrain differ diff --git a/public/terrain/19/858538/353818.terrain b/public/terrain/19/858538/353818.terrain new file mode 100644 index 000000000..58d135b81 Binary files /dev/null and b/public/terrain/19/858538/353818.terrain differ diff --git a/public/terrain/19/858538/353819.terrain b/public/terrain/19/858538/353819.terrain new file mode 100644 index 000000000..ebbc1faf7 Binary files /dev/null and b/public/terrain/19/858538/353819.terrain differ diff --git a/public/terrain/19/858538/353820.terrain b/public/terrain/19/858538/353820.terrain new file mode 100644 index 000000000..3758cc466 Binary files /dev/null and b/public/terrain/19/858538/353820.terrain differ diff --git a/public/terrain/19/858538/353821.terrain b/public/terrain/19/858538/353821.terrain new file mode 100644 index 000000000..c3dd72102 Binary files /dev/null and b/public/terrain/19/858538/353821.terrain differ diff --git a/public/terrain/19/858538/353822.terrain b/public/terrain/19/858538/353822.terrain new file mode 100644 index 000000000..d121a9044 Binary files /dev/null and b/public/terrain/19/858538/353822.terrain differ diff --git a/public/terrain/19/858538/353823.terrain b/public/terrain/19/858538/353823.terrain new file mode 100644 index 000000000..3d7a83805 Binary files /dev/null and b/public/terrain/19/858538/353823.terrain differ diff --git a/public/terrain/19/858538/353824.terrain b/public/terrain/19/858538/353824.terrain new file mode 100644 index 000000000..d577e048a Binary files /dev/null and b/public/terrain/19/858538/353824.terrain differ diff --git a/public/terrain/19/858538/353825.terrain b/public/terrain/19/858538/353825.terrain new file mode 100644 index 000000000..b1ffcf741 Binary files /dev/null and b/public/terrain/19/858538/353825.terrain differ diff --git a/public/terrain/19/858538/353826.terrain b/public/terrain/19/858538/353826.terrain new file mode 100644 index 000000000..cc2a77a12 Binary files /dev/null and b/public/terrain/19/858538/353826.terrain differ diff --git a/public/terrain/19/858538/353827.terrain b/public/terrain/19/858538/353827.terrain new file mode 100644 index 000000000..e82e2e958 Binary files /dev/null and b/public/terrain/19/858538/353827.terrain differ diff --git a/public/terrain/19/858538/353828.terrain b/public/terrain/19/858538/353828.terrain new file mode 100644 index 000000000..7c1a70544 Binary files /dev/null and b/public/terrain/19/858538/353828.terrain differ diff --git a/public/terrain/19/858538/353829.terrain b/public/terrain/19/858538/353829.terrain new file mode 100644 index 000000000..6e9a0a45f Binary files /dev/null and b/public/terrain/19/858538/353829.terrain differ diff --git a/public/terrain/19/858538/353830.terrain b/public/terrain/19/858538/353830.terrain new file mode 100644 index 000000000..e8a1f584d Binary files /dev/null and b/public/terrain/19/858538/353830.terrain differ diff --git a/public/terrain/19/858538/353831.terrain b/public/terrain/19/858538/353831.terrain new file mode 100644 index 000000000..6bc3e9470 Binary files /dev/null and b/public/terrain/19/858538/353831.terrain differ diff --git a/public/terrain/19/858538/353832.terrain b/public/terrain/19/858538/353832.terrain new file mode 100644 index 000000000..1af4ade85 Binary files /dev/null and b/public/terrain/19/858538/353832.terrain differ diff --git a/public/terrain/19/858538/353833.terrain b/public/terrain/19/858538/353833.terrain new file mode 100644 index 000000000..2edd82122 Binary files /dev/null and b/public/terrain/19/858538/353833.terrain differ diff --git a/public/terrain/19/858538/353834.terrain b/public/terrain/19/858538/353834.terrain new file mode 100644 index 000000000..e4c672be2 Binary files /dev/null and b/public/terrain/19/858538/353834.terrain differ diff --git a/public/terrain/19/858538/353835.terrain b/public/terrain/19/858538/353835.terrain new file mode 100644 index 000000000..e0574bb9f Binary files /dev/null and b/public/terrain/19/858538/353835.terrain differ diff --git a/public/terrain/19/858538/353836.terrain b/public/terrain/19/858538/353836.terrain new file mode 100644 index 000000000..3af56ec39 Binary files /dev/null and b/public/terrain/19/858538/353836.terrain differ diff --git a/public/terrain/19/858538/353837.terrain b/public/terrain/19/858538/353837.terrain new file mode 100644 index 000000000..6a4c2a952 Binary files /dev/null and b/public/terrain/19/858538/353837.terrain differ diff --git a/public/terrain/19/858538/353838.terrain b/public/terrain/19/858538/353838.terrain new file mode 100644 index 000000000..9573a4952 Binary files /dev/null and b/public/terrain/19/858538/353838.terrain differ diff --git a/public/terrain/19/858538/353839.terrain b/public/terrain/19/858538/353839.terrain new file mode 100644 index 000000000..21d8b77c9 Binary files /dev/null and b/public/terrain/19/858538/353839.terrain differ diff --git a/public/terrain/19/858538/353840.terrain b/public/terrain/19/858538/353840.terrain new file mode 100644 index 000000000..54ef4477b Binary files /dev/null and b/public/terrain/19/858538/353840.terrain differ diff --git a/public/terrain/19/858538/353841.terrain b/public/terrain/19/858538/353841.terrain new file mode 100644 index 000000000..0729a4b30 Binary files /dev/null and b/public/terrain/19/858538/353841.terrain differ diff --git a/public/terrain/19/858538/353842.terrain b/public/terrain/19/858538/353842.terrain new file mode 100644 index 000000000..07125075d Binary files /dev/null and b/public/terrain/19/858538/353842.terrain differ diff --git a/public/terrain/19/858538/353843.terrain b/public/terrain/19/858538/353843.terrain new file mode 100644 index 000000000..2b93aa066 Binary files /dev/null and b/public/terrain/19/858538/353843.terrain differ diff --git a/public/terrain/19/858538/353844.terrain b/public/terrain/19/858538/353844.terrain new file mode 100644 index 000000000..d8038f34f Binary files /dev/null and b/public/terrain/19/858538/353844.terrain differ diff --git a/public/terrain/19/858538/353845.terrain b/public/terrain/19/858538/353845.terrain new file mode 100644 index 000000000..5fb674251 Binary files /dev/null and b/public/terrain/19/858538/353845.terrain differ diff --git a/public/terrain/19/858538/353846.terrain b/public/terrain/19/858538/353846.terrain new file mode 100644 index 000000000..8dc36f356 Binary files /dev/null and b/public/terrain/19/858538/353846.terrain differ diff --git a/public/terrain/19/858538/353847.terrain b/public/terrain/19/858538/353847.terrain new file mode 100644 index 000000000..7a15aea39 Binary files /dev/null and b/public/terrain/19/858538/353847.terrain differ diff --git a/public/terrain/19/858538/353848.terrain b/public/terrain/19/858538/353848.terrain new file mode 100644 index 000000000..9f07e00da Binary files /dev/null and b/public/terrain/19/858538/353848.terrain differ diff --git a/public/terrain/19/858538/353849.terrain b/public/terrain/19/858538/353849.terrain new file mode 100644 index 000000000..cfa3d5d68 Binary files /dev/null and b/public/terrain/19/858538/353849.terrain differ diff --git a/public/terrain/19/858538/353850.terrain b/public/terrain/19/858538/353850.terrain new file mode 100644 index 000000000..0689eda50 Binary files /dev/null and b/public/terrain/19/858538/353850.terrain differ diff --git a/public/terrain/19/858538/353851.terrain b/public/terrain/19/858538/353851.terrain new file mode 100644 index 000000000..8b8ffc1da Binary files /dev/null and b/public/terrain/19/858538/353851.terrain differ diff --git a/public/terrain/19/858538/353852.terrain b/public/terrain/19/858538/353852.terrain new file mode 100644 index 000000000..994a1f0ad Binary files /dev/null and b/public/terrain/19/858538/353852.terrain differ diff --git a/public/terrain/19/858538/353853.terrain b/public/terrain/19/858538/353853.terrain new file mode 100644 index 000000000..6abbe3746 Binary files /dev/null and b/public/terrain/19/858538/353853.terrain differ diff --git a/public/terrain/19/858538/353854.terrain b/public/terrain/19/858538/353854.terrain new file mode 100644 index 000000000..3d5e866a3 Binary files /dev/null and b/public/terrain/19/858538/353854.terrain differ diff --git a/public/terrain/19/858538/353855.terrain b/public/terrain/19/858538/353855.terrain new file mode 100644 index 000000000..3a1259109 Binary files /dev/null and b/public/terrain/19/858538/353855.terrain differ diff --git a/public/terrain/19/858538/353856.terrain b/public/terrain/19/858538/353856.terrain new file mode 100644 index 000000000..67ca699be Binary files /dev/null and b/public/terrain/19/858538/353856.terrain differ diff --git a/public/terrain/19/858538/353857.terrain b/public/terrain/19/858538/353857.terrain new file mode 100644 index 000000000..4e1752831 Binary files /dev/null and b/public/terrain/19/858538/353857.terrain differ diff --git a/public/terrain/19/858538/353858.terrain b/public/terrain/19/858538/353858.terrain new file mode 100644 index 000000000..ba5d20fb0 Binary files /dev/null and b/public/terrain/19/858538/353858.terrain differ diff --git a/public/terrain/19/858538/353859.terrain b/public/terrain/19/858538/353859.terrain new file mode 100644 index 000000000..1ea3c9c3d Binary files /dev/null and b/public/terrain/19/858538/353859.terrain differ diff --git a/public/terrain/19/858538/353860.terrain b/public/terrain/19/858538/353860.terrain new file mode 100644 index 000000000..5aa4a9123 Binary files /dev/null and b/public/terrain/19/858538/353860.terrain differ diff --git a/public/terrain/19/858538/353861.terrain b/public/terrain/19/858538/353861.terrain new file mode 100644 index 000000000..2b638db27 Binary files /dev/null and b/public/terrain/19/858538/353861.terrain differ diff --git a/public/terrain/19/858538/353862.terrain b/public/terrain/19/858538/353862.terrain new file mode 100644 index 000000000..01a9f801d Binary files /dev/null and b/public/terrain/19/858538/353862.terrain differ diff --git a/public/terrain/19/858538/353863.terrain b/public/terrain/19/858538/353863.terrain new file mode 100644 index 000000000..c14aeeb9d Binary files /dev/null and b/public/terrain/19/858538/353863.terrain differ diff --git a/public/terrain/19/858538/353864.terrain b/public/terrain/19/858538/353864.terrain new file mode 100644 index 000000000..65041c229 Binary files /dev/null and b/public/terrain/19/858538/353864.terrain differ diff --git a/public/terrain/19/858538/353865.terrain b/public/terrain/19/858538/353865.terrain new file mode 100644 index 000000000..9e32992c2 Binary files /dev/null and b/public/terrain/19/858538/353865.terrain differ diff --git a/public/terrain/19/858538/353866.terrain b/public/terrain/19/858538/353866.terrain new file mode 100644 index 000000000..5ab133ee3 Binary files /dev/null and b/public/terrain/19/858538/353866.terrain differ diff --git a/public/terrain/19/858538/353867.terrain b/public/terrain/19/858538/353867.terrain new file mode 100644 index 000000000..f5813a419 Binary files /dev/null and b/public/terrain/19/858538/353867.terrain differ diff --git a/public/terrain/19/858538/353868.terrain b/public/terrain/19/858538/353868.terrain new file mode 100644 index 000000000..627167129 Binary files /dev/null and b/public/terrain/19/858538/353868.terrain differ diff --git a/public/terrain/19/858538/353869.terrain b/public/terrain/19/858538/353869.terrain new file mode 100644 index 000000000..a90393518 Binary files /dev/null and b/public/terrain/19/858538/353869.terrain differ diff --git a/public/terrain/19/858538/353870.terrain b/public/terrain/19/858538/353870.terrain new file mode 100644 index 000000000..522d7ab4c Binary files /dev/null and b/public/terrain/19/858538/353870.terrain differ diff --git a/public/terrain/19/858538/353871.terrain b/public/terrain/19/858538/353871.terrain new file mode 100644 index 000000000..0dc86c522 Binary files /dev/null and b/public/terrain/19/858538/353871.terrain differ diff --git a/public/terrain/19/858538/353872.terrain b/public/terrain/19/858538/353872.terrain new file mode 100644 index 000000000..b92800cd0 Binary files /dev/null and b/public/terrain/19/858538/353872.terrain differ diff --git a/public/terrain/19/858538/353873.terrain b/public/terrain/19/858538/353873.terrain new file mode 100644 index 000000000..9a2449ac4 Binary files /dev/null and b/public/terrain/19/858538/353873.terrain differ diff --git a/public/terrain/19/858538/353874.terrain b/public/terrain/19/858538/353874.terrain new file mode 100644 index 000000000..6cd650f82 Binary files /dev/null and b/public/terrain/19/858538/353874.terrain differ diff --git a/public/terrain/19/858538/353875.terrain b/public/terrain/19/858538/353875.terrain new file mode 100644 index 000000000..b9da588a0 Binary files /dev/null and b/public/terrain/19/858538/353875.terrain differ diff --git a/public/terrain/19/858538/353876.terrain b/public/terrain/19/858538/353876.terrain new file mode 100644 index 000000000..af3d7b824 Binary files /dev/null and b/public/terrain/19/858538/353876.terrain differ diff --git a/public/terrain/19/858538/353877.terrain b/public/terrain/19/858538/353877.terrain new file mode 100644 index 000000000..4116ef4c9 Binary files /dev/null and b/public/terrain/19/858538/353877.terrain differ diff --git a/public/terrain/19/858538/353878.terrain b/public/terrain/19/858538/353878.terrain new file mode 100644 index 000000000..628710869 Binary files /dev/null and b/public/terrain/19/858538/353878.terrain differ diff --git a/public/terrain/19/858538/353879.terrain b/public/terrain/19/858538/353879.terrain new file mode 100644 index 000000000..e16977f41 Binary files /dev/null and b/public/terrain/19/858538/353879.terrain differ diff --git a/public/terrain/19/858538/353880.terrain b/public/terrain/19/858538/353880.terrain new file mode 100644 index 000000000..5e2674282 Binary files /dev/null and b/public/terrain/19/858538/353880.terrain differ diff --git a/public/terrain/19/858538/353881.terrain b/public/terrain/19/858538/353881.terrain new file mode 100644 index 000000000..e28be62ea Binary files /dev/null and b/public/terrain/19/858538/353881.terrain differ diff --git a/public/terrain/19/858538/353882.terrain b/public/terrain/19/858538/353882.terrain new file mode 100644 index 000000000..257198de5 Binary files /dev/null and b/public/terrain/19/858538/353882.terrain differ diff --git a/public/terrain/19/858538/353883.terrain b/public/terrain/19/858538/353883.terrain new file mode 100644 index 000000000..d4529a97f Binary files /dev/null and b/public/terrain/19/858538/353883.terrain differ diff --git a/public/terrain/19/858538/353884.terrain b/public/terrain/19/858538/353884.terrain new file mode 100644 index 000000000..e500594af Binary files /dev/null and b/public/terrain/19/858538/353884.terrain differ diff --git a/public/terrain/19/858538/353885.terrain b/public/terrain/19/858538/353885.terrain new file mode 100644 index 000000000..fbb0581b6 Binary files /dev/null and b/public/terrain/19/858538/353885.terrain differ diff --git a/public/terrain/19/858538/353886.terrain b/public/terrain/19/858538/353886.terrain new file mode 100644 index 000000000..bf0623cf6 Binary files /dev/null and b/public/terrain/19/858538/353886.terrain differ diff --git a/public/terrain/19/858538/353887.terrain b/public/terrain/19/858538/353887.terrain new file mode 100644 index 000000000..4fe8919f2 Binary files /dev/null and b/public/terrain/19/858538/353887.terrain differ diff --git a/public/terrain/19/858538/353888.terrain b/public/terrain/19/858538/353888.terrain new file mode 100644 index 000000000..12ef5eed3 Binary files /dev/null and b/public/terrain/19/858538/353888.terrain differ diff --git a/public/terrain/19/858538/353889.terrain b/public/terrain/19/858538/353889.terrain new file mode 100644 index 000000000..e8928e3e2 Binary files /dev/null and b/public/terrain/19/858538/353889.terrain differ diff --git a/public/terrain/19/858538/353890.terrain b/public/terrain/19/858538/353890.terrain new file mode 100644 index 000000000..4e1ed7794 Binary files /dev/null and b/public/terrain/19/858538/353890.terrain differ diff --git a/public/terrain/19/858538/353891.terrain b/public/terrain/19/858538/353891.terrain new file mode 100644 index 000000000..c675cddf9 Binary files /dev/null and b/public/terrain/19/858538/353891.terrain differ diff --git a/public/terrain/19/858538/353892.terrain b/public/terrain/19/858538/353892.terrain new file mode 100644 index 000000000..92f911f73 Binary files /dev/null and b/public/terrain/19/858538/353892.terrain differ diff --git a/public/terrain/19/858538/353893.terrain b/public/terrain/19/858538/353893.terrain new file mode 100644 index 000000000..278676745 Binary files /dev/null and b/public/terrain/19/858538/353893.terrain differ diff --git a/public/terrain/19/858538/353894.terrain b/public/terrain/19/858538/353894.terrain new file mode 100644 index 000000000..54b2a7448 Binary files /dev/null and b/public/terrain/19/858538/353894.terrain differ diff --git a/public/terrain/19/858538/353895.terrain b/public/terrain/19/858538/353895.terrain new file mode 100644 index 000000000..2142006f1 Binary files /dev/null and b/public/terrain/19/858538/353895.terrain differ diff --git a/public/terrain/19/858538/353896.terrain b/public/terrain/19/858538/353896.terrain new file mode 100644 index 000000000..e3d5beef5 Binary files /dev/null and b/public/terrain/19/858538/353896.terrain differ diff --git a/public/terrain/19/858538/353897.terrain b/public/terrain/19/858538/353897.terrain new file mode 100644 index 000000000..0c301365f Binary files /dev/null and b/public/terrain/19/858538/353897.terrain differ diff --git a/public/terrain/19/858538/353898.terrain b/public/terrain/19/858538/353898.terrain new file mode 100644 index 000000000..a191008b8 Binary files /dev/null and b/public/terrain/19/858538/353898.terrain differ diff --git a/public/terrain/19/858538/353899.terrain b/public/terrain/19/858538/353899.terrain new file mode 100644 index 000000000..4e8a58e0f Binary files /dev/null and b/public/terrain/19/858538/353899.terrain differ diff --git a/public/terrain/19/858538/353900.terrain b/public/terrain/19/858538/353900.terrain new file mode 100644 index 000000000..7f2e0b5a3 Binary files /dev/null and b/public/terrain/19/858538/353900.terrain differ diff --git a/public/terrain/19/858538/353901.terrain b/public/terrain/19/858538/353901.terrain new file mode 100644 index 000000000..577864f14 Binary files /dev/null and b/public/terrain/19/858538/353901.terrain differ diff --git a/public/terrain/19/858538/353902.terrain b/public/terrain/19/858538/353902.terrain new file mode 100644 index 000000000..ca49c7ff9 Binary files /dev/null and b/public/terrain/19/858538/353902.terrain differ diff --git a/public/terrain/19/858538/353903.terrain b/public/terrain/19/858538/353903.terrain new file mode 100644 index 000000000..7aa639269 Binary files /dev/null and b/public/terrain/19/858538/353903.terrain differ diff --git a/public/terrain/19/858538/353904.terrain b/public/terrain/19/858538/353904.terrain new file mode 100644 index 000000000..fc94ba367 Binary files /dev/null and b/public/terrain/19/858538/353904.terrain differ diff --git a/public/terrain/19/858538/353905.terrain b/public/terrain/19/858538/353905.terrain new file mode 100644 index 000000000..013aad2bc Binary files /dev/null and b/public/terrain/19/858538/353905.terrain differ diff --git a/public/terrain/19/858538/353906.terrain b/public/terrain/19/858538/353906.terrain new file mode 100644 index 000000000..88fc59eee Binary files /dev/null and b/public/terrain/19/858538/353906.terrain differ diff --git a/public/terrain/19/858538/353907.terrain b/public/terrain/19/858538/353907.terrain new file mode 100644 index 000000000..e37adbdb2 Binary files /dev/null and b/public/terrain/19/858538/353907.terrain differ diff --git a/public/terrain/19/858538/353908.terrain b/public/terrain/19/858538/353908.terrain new file mode 100644 index 000000000..29468dc60 Binary files /dev/null and b/public/terrain/19/858538/353908.terrain differ diff --git a/public/terrain/19/858538/353909.terrain b/public/terrain/19/858538/353909.terrain new file mode 100644 index 000000000..b74544c62 Binary files /dev/null and b/public/terrain/19/858538/353909.terrain differ diff --git a/public/terrain/19/858538/353910.terrain b/public/terrain/19/858538/353910.terrain new file mode 100644 index 000000000..b3a6f7558 Binary files /dev/null and b/public/terrain/19/858538/353910.terrain differ diff --git a/public/terrain/19/858538/353911.terrain b/public/terrain/19/858538/353911.terrain new file mode 100644 index 000000000..6d4340f25 Binary files /dev/null and b/public/terrain/19/858538/353911.terrain differ diff --git a/public/terrain/19/858538/353912.terrain b/public/terrain/19/858538/353912.terrain new file mode 100644 index 000000000..62dd49995 Binary files /dev/null and b/public/terrain/19/858538/353912.terrain differ diff --git a/public/terrain/19/858538/353913.terrain b/public/terrain/19/858538/353913.terrain new file mode 100644 index 000000000..564a805ea Binary files /dev/null and b/public/terrain/19/858538/353913.terrain differ diff --git a/public/terrain/19/858538/353914.terrain b/public/terrain/19/858538/353914.terrain new file mode 100644 index 000000000..da0dd78c7 Binary files /dev/null and b/public/terrain/19/858538/353914.terrain differ diff --git a/public/terrain/19/858538/353915.terrain b/public/terrain/19/858538/353915.terrain new file mode 100644 index 000000000..ed225f9c5 Binary files /dev/null and b/public/terrain/19/858538/353915.terrain differ diff --git a/public/terrain/19/858538/353916.terrain b/public/terrain/19/858538/353916.terrain new file mode 100644 index 000000000..c2db0d0f4 Binary files /dev/null and b/public/terrain/19/858538/353916.terrain differ diff --git a/public/terrain/19/858538/353917.terrain b/public/terrain/19/858538/353917.terrain new file mode 100644 index 000000000..1fa20c361 Binary files /dev/null and b/public/terrain/19/858538/353917.terrain differ diff --git a/public/terrain/19/858538/353918.terrain b/public/terrain/19/858538/353918.terrain new file mode 100644 index 000000000..2e4b35916 Binary files /dev/null and b/public/terrain/19/858538/353918.terrain differ diff --git a/public/terrain/19/858538/353919.terrain b/public/terrain/19/858538/353919.terrain new file mode 100644 index 000000000..9ae68de6d Binary files /dev/null and b/public/terrain/19/858538/353919.terrain differ diff --git a/public/terrain/19/858538/353920.terrain b/public/terrain/19/858538/353920.terrain new file mode 100644 index 000000000..344c465aa Binary files /dev/null and b/public/terrain/19/858538/353920.terrain differ diff --git a/public/terrain/19/858538/353921.terrain b/public/terrain/19/858538/353921.terrain new file mode 100644 index 000000000..d7c029e09 Binary files /dev/null and b/public/terrain/19/858538/353921.terrain differ diff --git a/public/terrain/19/858538/353922.terrain b/public/terrain/19/858538/353922.terrain new file mode 100644 index 000000000..31cd94d0a Binary files /dev/null and b/public/terrain/19/858538/353922.terrain differ diff --git a/public/terrain/19/858538/353923.terrain b/public/terrain/19/858538/353923.terrain new file mode 100644 index 000000000..aeb90426f Binary files /dev/null and b/public/terrain/19/858538/353923.terrain differ diff --git a/public/terrain/19/858538/353924.terrain b/public/terrain/19/858538/353924.terrain new file mode 100644 index 000000000..a26f90efd Binary files /dev/null and b/public/terrain/19/858538/353924.terrain differ diff --git a/public/terrain/19/858538/353925.terrain b/public/terrain/19/858538/353925.terrain new file mode 100644 index 000000000..93a08b18a Binary files /dev/null and b/public/terrain/19/858538/353925.terrain differ diff --git a/public/terrain/19/858538/353926.terrain b/public/terrain/19/858538/353926.terrain new file mode 100644 index 000000000..e2d97ecb2 Binary files /dev/null and b/public/terrain/19/858538/353926.terrain differ diff --git a/public/terrain/19/858538/353927.terrain b/public/terrain/19/858538/353927.terrain new file mode 100644 index 000000000..4075ef181 Binary files /dev/null and b/public/terrain/19/858538/353927.terrain differ diff --git a/public/terrain/19/858538/353928.terrain b/public/terrain/19/858538/353928.terrain new file mode 100644 index 000000000..3fa061e7e Binary files /dev/null and b/public/terrain/19/858538/353928.terrain differ diff --git a/public/terrain/19/858538/353929.terrain b/public/terrain/19/858538/353929.terrain new file mode 100644 index 000000000..1b3627c5b Binary files /dev/null and b/public/terrain/19/858538/353929.terrain differ diff --git a/public/terrain/19/858538/353930.terrain b/public/terrain/19/858538/353930.terrain new file mode 100644 index 000000000..6c269ede7 Binary files /dev/null and b/public/terrain/19/858538/353930.terrain differ diff --git a/public/terrain/19/858538/353931.terrain b/public/terrain/19/858538/353931.terrain new file mode 100644 index 000000000..38b38d95f Binary files /dev/null and b/public/terrain/19/858538/353931.terrain differ diff --git a/public/terrain/19/858538/353932.terrain b/public/terrain/19/858538/353932.terrain new file mode 100644 index 000000000..3a9963ee7 Binary files /dev/null and b/public/terrain/19/858538/353932.terrain differ diff --git a/public/terrain/19/858538/353933.terrain b/public/terrain/19/858538/353933.terrain new file mode 100644 index 000000000..e555ed04b Binary files /dev/null and b/public/terrain/19/858538/353933.terrain differ diff --git a/public/terrain/19/858538/353934.terrain b/public/terrain/19/858538/353934.terrain new file mode 100644 index 000000000..6ec1061d8 Binary files /dev/null and b/public/terrain/19/858538/353934.terrain differ diff --git a/public/terrain/19/858538/353935.terrain b/public/terrain/19/858538/353935.terrain new file mode 100644 index 000000000..1ca7c1110 Binary files /dev/null and b/public/terrain/19/858538/353935.terrain differ diff --git a/public/terrain/19/858538/353936.terrain b/public/terrain/19/858538/353936.terrain new file mode 100644 index 000000000..d2edda143 Binary files /dev/null and b/public/terrain/19/858538/353936.terrain differ diff --git a/public/terrain/19/858538/353937.terrain b/public/terrain/19/858538/353937.terrain new file mode 100644 index 000000000..0068f26fa Binary files /dev/null and b/public/terrain/19/858538/353937.terrain differ diff --git a/public/terrain/19/858538/353938.terrain b/public/terrain/19/858538/353938.terrain new file mode 100644 index 000000000..c83c13753 Binary files /dev/null and b/public/terrain/19/858538/353938.terrain differ diff --git a/public/terrain/19/858538/353939.terrain b/public/terrain/19/858538/353939.terrain new file mode 100644 index 000000000..bb619e42f Binary files /dev/null and b/public/terrain/19/858538/353939.terrain differ diff --git a/public/terrain/19/858538/353940.terrain b/public/terrain/19/858538/353940.terrain new file mode 100644 index 000000000..1d30fb625 Binary files /dev/null and b/public/terrain/19/858538/353940.terrain differ diff --git a/public/terrain/19/858538/353941.terrain b/public/terrain/19/858538/353941.terrain new file mode 100644 index 000000000..4157afea8 Binary files /dev/null and b/public/terrain/19/858538/353941.terrain differ diff --git a/public/terrain/19/858538/353942.terrain b/public/terrain/19/858538/353942.terrain new file mode 100644 index 000000000..95e015fd0 Binary files /dev/null and b/public/terrain/19/858538/353942.terrain differ diff --git a/public/terrain/19/858538/353943.terrain b/public/terrain/19/858538/353943.terrain new file mode 100644 index 000000000..904d1f9e9 Binary files /dev/null and b/public/terrain/19/858538/353943.terrain differ diff --git a/public/terrain/19/858538/353944.terrain b/public/terrain/19/858538/353944.terrain new file mode 100644 index 000000000..f379f92ef Binary files /dev/null and b/public/terrain/19/858538/353944.terrain differ diff --git a/public/terrain/19/858538/353945.terrain b/public/terrain/19/858538/353945.terrain new file mode 100644 index 000000000..b5bae1a60 Binary files /dev/null and b/public/terrain/19/858538/353945.terrain differ diff --git a/public/terrain/19/858538/353946.terrain b/public/terrain/19/858538/353946.terrain new file mode 100644 index 000000000..171f54ea1 Binary files /dev/null and b/public/terrain/19/858538/353946.terrain differ diff --git a/public/terrain/19/858538/353947.terrain b/public/terrain/19/858538/353947.terrain new file mode 100644 index 000000000..76d8c6bc7 Binary files /dev/null and b/public/terrain/19/858538/353947.terrain differ diff --git a/public/terrain/19/858538/353948.terrain b/public/terrain/19/858538/353948.terrain new file mode 100644 index 000000000..0734c8f1c Binary files /dev/null and b/public/terrain/19/858538/353948.terrain differ diff --git a/public/terrain/19/858538/353949.terrain b/public/terrain/19/858538/353949.terrain new file mode 100644 index 000000000..7c3987e16 Binary files /dev/null and b/public/terrain/19/858538/353949.terrain differ diff --git a/public/terrain/19/858538/353950.terrain b/public/terrain/19/858538/353950.terrain new file mode 100644 index 000000000..e14503307 Binary files /dev/null and b/public/terrain/19/858538/353950.terrain differ diff --git a/public/terrain/19/858538/353951.terrain b/public/terrain/19/858538/353951.terrain new file mode 100644 index 000000000..ba2bec15a Binary files /dev/null and b/public/terrain/19/858538/353951.terrain differ diff --git a/public/terrain/19/858538/353952.terrain b/public/terrain/19/858538/353952.terrain new file mode 100644 index 000000000..36519361a Binary files /dev/null and b/public/terrain/19/858538/353952.terrain differ diff --git a/public/terrain/19/858538/353953.terrain b/public/terrain/19/858538/353953.terrain new file mode 100644 index 000000000..94e075b63 Binary files /dev/null and b/public/terrain/19/858538/353953.terrain differ diff --git a/public/terrain/19/858538/353954.terrain b/public/terrain/19/858538/353954.terrain new file mode 100644 index 000000000..84998a25e Binary files /dev/null and b/public/terrain/19/858538/353954.terrain differ diff --git a/public/terrain/19/858538/353955.terrain b/public/terrain/19/858538/353955.terrain new file mode 100644 index 000000000..775889991 Binary files /dev/null and b/public/terrain/19/858538/353955.terrain differ diff --git a/public/terrain/19/858538/353956.terrain b/public/terrain/19/858538/353956.terrain new file mode 100644 index 000000000..d7dab1572 Binary files /dev/null and b/public/terrain/19/858538/353956.terrain differ diff --git a/public/terrain/19/858538/353957.terrain b/public/terrain/19/858538/353957.terrain new file mode 100644 index 000000000..5be628774 Binary files /dev/null and b/public/terrain/19/858538/353957.terrain differ diff --git a/public/terrain/19/858538/353958.terrain b/public/terrain/19/858538/353958.terrain new file mode 100644 index 000000000..c626b2d3c Binary files /dev/null and b/public/terrain/19/858538/353958.terrain differ diff --git a/public/terrain/19/858538/353959.terrain b/public/terrain/19/858538/353959.terrain new file mode 100644 index 000000000..dab51c236 Binary files /dev/null and b/public/terrain/19/858538/353959.terrain differ diff --git a/public/terrain/19/858538/353960.terrain b/public/terrain/19/858538/353960.terrain new file mode 100644 index 000000000..c71998e73 Binary files /dev/null and b/public/terrain/19/858538/353960.terrain differ diff --git a/public/terrain/19/858538/353961.terrain b/public/terrain/19/858538/353961.terrain new file mode 100644 index 000000000..9064a5b0e Binary files /dev/null and b/public/terrain/19/858538/353961.terrain differ diff --git a/public/terrain/19/858538/353962.terrain b/public/terrain/19/858538/353962.terrain new file mode 100644 index 000000000..41b7d31b8 Binary files /dev/null and b/public/terrain/19/858538/353962.terrain differ diff --git a/public/terrain/19/858538/353963.terrain b/public/terrain/19/858538/353963.terrain new file mode 100644 index 000000000..3766a10a2 Binary files /dev/null and b/public/terrain/19/858538/353963.terrain differ diff --git a/public/terrain/19/858538/353964.terrain b/public/terrain/19/858538/353964.terrain new file mode 100644 index 000000000..e5e7f6cbe Binary files /dev/null and b/public/terrain/19/858538/353964.terrain differ diff --git a/public/terrain/19/858538/353965.terrain b/public/terrain/19/858538/353965.terrain new file mode 100644 index 000000000..cdb76370d Binary files /dev/null and b/public/terrain/19/858538/353965.terrain differ diff --git a/public/terrain/19/858538/353966.terrain b/public/terrain/19/858538/353966.terrain new file mode 100644 index 000000000..35e1c19ea Binary files /dev/null and b/public/terrain/19/858538/353966.terrain differ diff --git a/public/terrain/19/858538/353967.terrain b/public/terrain/19/858538/353967.terrain new file mode 100644 index 000000000..ec82141fc Binary files /dev/null and b/public/terrain/19/858538/353967.terrain differ diff --git a/public/terrain/19/858538/353968.terrain b/public/terrain/19/858538/353968.terrain new file mode 100644 index 000000000..659fc2177 Binary files /dev/null and b/public/terrain/19/858538/353968.terrain differ diff --git a/public/terrain/19/858538/353969.terrain b/public/terrain/19/858538/353969.terrain new file mode 100644 index 000000000..46e3571c7 Binary files /dev/null and b/public/terrain/19/858538/353969.terrain differ diff --git a/public/terrain/19/858538/353970.terrain b/public/terrain/19/858538/353970.terrain new file mode 100644 index 000000000..4249a9770 Binary files /dev/null and b/public/terrain/19/858538/353970.terrain differ diff --git a/public/terrain/19/858538/353971.terrain b/public/terrain/19/858538/353971.terrain new file mode 100644 index 000000000..70e092cee Binary files /dev/null and b/public/terrain/19/858538/353971.terrain differ diff --git a/public/terrain/19/858538/353972.terrain b/public/terrain/19/858538/353972.terrain new file mode 100644 index 000000000..b67fbdf61 Binary files /dev/null and b/public/terrain/19/858538/353972.terrain differ diff --git a/public/terrain/19/858538/353973.terrain b/public/terrain/19/858538/353973.terrain new file mode 100644 index 000000000..521c7ab93 Binary files /dev/null and b/public/terrain/19/858538/353973.terrain differ diff --git a/public/terrain/19/858538/353974.terrain b/public/terrain/19/858538/353974.terrain new file mode 100644 index 000000000..0c620817e Binary files /dev/null and b/public/terrain/19/858538/353974.terrain differ diff --git a/public/terrain/19/858538/353975.terrain b/public/terrain/19/858538/353975.terrain new file mode 100644 index 000000000..9a738d84a Binary files /dev/null and b/public/terrain/19/858538/353975.terrain differ diff --git a/public/terrain/19/858538/353976.terrain b/public/terrain/19/858538/353976.terrain new file mode 100644 index 000000000..6b1571b8d Binary files /dev/null and b/public/terrain/19/858538/353976.terrain differ diff --git a/public/terrain/19/858538/353977.terrain b/public/terrain/19/858538/353977.terrain new file mode 100644 index 000000000..5b09dcdbd Binary files /dev/null and b/public/terrain/19/858538/353977.terrain differ diff --git a/public/terrain/19/858538/353978.terrain b/public/terrain/19/858538/353978.terrain new file mode 100644 index 000000000..9d1d471f2 Binary files /dev/null and b/public/terrain/19/858538/353978.terrain differ diff --git a/public/terrain/19/858538/353979.terrain b/public/terrain/19/858538/353979.terrain new file mode 100644 index 000000000..60fed4c16 Binary files /dev/null and b/public/terrain/19/858538/353979.terrain differ diff --git a/public/terrain/19/858538/353980.terrain b/public/terrain/19/858538/353980.terrain new file mode 100644 index 000000000..a8085f37a Binary files /dev/null and b/public/terrain/19/858538/353980.terrain differ diff --git a/public/terrain/19/858538/353981.terrain b/public/terrain/19/858538/353981.terrain new file mode 100644 index 000000000..6c15a21eb Binary files /dev/null and b/public/terrain/19/858538/353981.terrain differ diff --git a/public/terrain/19/858538/353982.terrain b/public/terrain/19/858538/353982.terrain new file mode 100644 index 000000000..236fb81a3 Binary files /dev/null and b/public/terrain/19/858538/353982.terrain differ diff --git a/public/terrain/19/858538/353983.terrain b/public/terrain/19/858538/353983.terrain new file mode 100644 index 000000000..1fb71831c Binary files /dev/null and b/public/terrain/19/858538/353983.terrain differ diff --git a/public/terrain/19/858538/353984.terrain b/public/terrain/19/858538/353984.terrain new file mode 100644 index 000000000..4a7c0cf28 Binary files /dev/null and b/public/terrain/19/858538/353984.terrain differ diff --git a/public/terrain/19/858538/353985.terrain b/public/terrain/19/858538/353985.terrain new file mode 100644 index 000000000..3530d3bb0 Binary files /dev/null and b/public/terrain/19/858538/353985.terrain differ diff --git a/public/terrain/19/858538/353986.terrain b/public/terrain/19/858538/353986.terrain new file mode 100644 index 000000000..e1e284c9d Binary files /dev/null and b/public/terrain/19/858538/353986.terrain differ diff --git a/public/terrain/19/858538/353987.terrain b/public/terrain/19/858538/353987.terrain new file mode 100644 index 000000000..2b30c5069 Binary files /dev/null and b/public/terrain/19/858538/353987.terrain differ diff --git a/public/terrain/19/858538/353988.terrain b/public/terrain/19/858538/353988.terrain new file mode 100644 index 000000000..99d165005 Binary files /dev/null and b/public/terrain/19/858538/353988.terrain differ diff --git a/public/terrain/19/858538/353989.terrain b/public/terrain/19/858538/353989.terrain new file mode 100644 index 000000000..028d00310 Binary files /dev/null and b/public/terrain/19/858538/353989.terrain differ diff --git a/public/terrain/19/858538/353990.terrain b/public/terrain/19/858538/353990.terrain new file mode 100644 index 000000000..68a25496b Binary files /dev/null and b/public/terrain/19/858538/353990.terrain differ diff --git a/public/terrain/19/858538/353991.terrain b/public/terrain/19/858538/353991.terrain new file mode 100644 index 000000000..3f90c2053 Binary files /dev/null and b/public/terrain/19/858538/353991.terrain differ diff --git a/public/terrain/19/858538/353992.terrain b/public/terrain/19/858538/353992.terrain new file mode 100644 index 000000000..6d1fb30d8 Binary files /dev/null and b/public/terrain/19/858538/353992.terrain differ diff --git a/public/terrain/19/858538/353993.terrain b/public/terrain/19/858538/353993.terrain new file mode 100644 index 000000000..6104a000f Binary files /dev/null and b/public/terrain/19/858538/353993.terrain differ diff --git a/public/terrain/19/858538/353994.terrain b/public/terrain/19/858538/353994.terrain new file mode 100644 index 000000000..933294d01 Binary files /dev/null and b/public/terrain/19/858538/353994.terrain differ diff --git a/public/terrain/19/858538/353995.terrain b/public/terrain/19/858538/353995.terrain new file mode 100644 index 000000000..ec281d992 Binary files /dev/null and b/public/terrain/19/858538/353995.terrain differ diff --git a/public/terrain/19/858538/353996.terrain b/public/terrain/19/858538/353996.terrain new file mode 100644 index 000000000..eb3b1b889 Binary files /dev/null and b/public/terrain/19/858538/353996.terrain differ diff --git a/public/terrain/19/858538/353997.terrain b/public/terrain/19/858538/353997.terrain new file mode 100644 index 000000000..ab1177787 Binary files /dev/null and b/public/terrain/19/858538/353997.terrain differ diff --git a/public/terrain/19/858538/353998.terrain b/public/terrain/19/858538/353998.terrain new file mode 100644 index 000000000..9c0474b42 Binary files /dev/null and b/public/terrain/19/858538/353998.terrain differ diff --git a/public/terrain/19/858538/353999.terrain b/public/terrain/19/858538/353999.terrain new file mode 100644 index 000000000..2262386b5 Binary files /dev/null and b/public/terrain/19/858538/353999.terrain differ diff --git a/public/terrain/19/858538/354000.terrain b/public/terrain/19/858538/354000.terrain new file mode 100644 index 000000000..aa217cea4 Binary files /dev/null and b/public/terrain/19/858538/354000.terrain differ diff --git a/public/terrain/19/858538/354001.terrain b/public/terrain/19/858538/354001.terrain new file mode 100644 index 000000000..ac90192dd Binary files /dev/null and b/public/terrain/19/858538/354001.terrain differ diff --git a/public/terrain/19/858538/354002.terrain b/public/terrain/19/858538/354002.terrain new file mode 100644 index 000000000..f940b6266 Binary files /dev/null and b/public/terrain/19/858538/354002.terrain differ diff --git a/public/terrain/19/858538/354003.terrain b/public/terrain/19/858538/354003.terrain new file mode 100644 index 000000000..cc8187bda Binary files /dev/null and b/public/terrain/19/858538/354003.terrain differ diff --git a/public/terrain/19/858538/354004.terrain b/public/terrain/19/858538/354004.terrain new file mode 100644 index 000000000..e7be40b0d Binary files /dev/null and b/public/terrain/19/858538/354004.terrain differ diff --git a/public/terrain/19/858538/354005.terrain b/public/terrain/19/858538/354005.terrain new file mode 100644 index 000000000..b215641dc Binary files /dev/null and b/public/terrain/19/858538/354005.terrain differ diff --git a/public/terrain/19/858538/354006.terrain b/public/terrain/19/858538/354006.terrain new file mode 100644 index 000000000..054db269c Binary files /dev/null and b/public/terrain/19/858538/354006.terrain differ diff --git a/public/terrain/19/858538/354007.terrain b/public/terrain/19/858538/354007.terrain new file mode 100644 index 000000000..208aba109 Binary files /dev/null and b/public/terrain/19/858538/354007.terrain differ diff --git a/public/terrain/19/858538/354008.terrain b/public/terrain/19/858538/354008.terrain new file mode 100644 index 000000000..6f35fe210 Binary files /dev/null and b/public/terrain/19/858538/354008.terrain differ diff --git a/public/terrain/19/858538/354009.terrain b/public/terrain/19/858538/354009.terrain new file mode 100644 index 000000000..546d97f1a Binary files /dev/null and b/public/terrain/19/858538/354009.terrain differ diff --git a/public/terrain/19/858538/354010.terrain b/public/terrain/19/858538/354010.terrain new file mode 100644 index 000000000..42e31a3b5 Binary files /dev/null and b/public/terrain/19/858538/354010.terrain differ diff --git a/public/terrain/19/858538/354011.terrain b/public/terrain/19/858538/354011.terrain new file mode 100644 index 000000000..17f6c6680 Binary files /dev/null and b/public/terrain/19/858538/354011.terrain differ diff --git a/public/terrain/19/858538/354012.terrain b/public/terrain/19/858538/354012.terrain new file mode 100644 index 000000000..963e45160 Binary files /dev/null and b/public/terrain/19/858538/354012.terrain differ diff --git a/public/terrain/19/858538/354013.terrain b/public/terrain/19/858538/354013.terrain new file mode 100644 index 000000000..955c3afcf Binary files /dev/null and b/public/terrain/19/858538/354013.terrain differ diff --git a/public/terrain/19/858538/354014.terrain b/public/terrain/19/858538/354014.terrain new file mode 100644 index 000000000..ed549ed84 Binary files /dev/null and b/public/terrain/19/858538/354014.terrain differ diff --git a/public/terrain/19/858538/354015.terrain b/public/terrain/19/858538/354015.terrain new file mode 100644 index 000000000..53adf1126 Binary files /dev/null and b/public/terrain/19/858538/354015.terrain differ diff --git a/public/terrain/19/858538/354016.terrain b/public/terrain/19/858538/354016.terrain new file mode 100644 index 000000000..e1b07a02b Binary files /dev/null and b/public/terrain/19/858538/354016.terrain differ diff --git a/public/terrain/19/858538/354017.terrain b/public/terrain/19/858538/354017.terrain new file mode 100644 index 000000000..9768952cd Binary files /dev/null and b/public/terrain/19/858538/354017.terrain differ diff --git a/public/terrain/19/858538/354018.terrain b/public/terrain/19/858538/354018.terrain new file mode 100644 index 000000000..6fb22e0c7 Binary files /dev/null and b/public/terrain/19/858538/354018.terrain differ diff --git a/public/terrain/19/858538/354019.terrain b/public/terrain/19/858538/354019.terrain new file mode 100644 index 000000000..aba89013c Binary files /dev/null and b/public/terrain/19/858538/354019.terrain differ diff --git a/public/terrain/19/858538/354020.terrain b/public/terrain/19/858538/354020.terrain new file mode 100644 index 000000000..0a18b86f7 Binary files /dev/null and b/public/terrain/19/858538/354020.terrain differ diff --git a/public/terrain/19/858538/354021.terrain b/public/terrain/19/858538/354021.terrain new file mode 100644 index 000000000..afae930a7 Binary files /dev/null and b/public/terrain/19/858538/354021.terrain differ diff --git a/public/terrain/19/858538/354022.terrain b/public/terrain/19/858538/354022.terrain new file mode 100644 index 000000000..13cc3d610 Binary files /dev/null and b/public/terrain/19/858538/354022.terrain differ diff --git a/public/terrain/19/858538/354023.terrain b/public/terrain/19/858538/354023.terrain new file mode 100644 index 000000000..90a1c4257 Binary files /dev/null and b/public/terrain/19/858538/354023.terrain differ diff --git a/public/terrain/19/858538/354024.terrain b/public/terrain/19/858538/354024.terrain new file mode 100644 index 000000000..33ef1f6a1 Binary files /dev/null and b/public/terrain/19/858538/354024.terrain differ diff --git a/public/terrain/19/858538/354025.terrain b/public/terrain/19/858538/354025.terrain new file mode 100644 index 000000000..7afe5a314 Binary files /dev/null and b/public/terrain/19/858538/354025.terrain differ diff --git a/public/terrain/19/858538/354026.terrain b/public/terrain/19/858538/354026.terrain new file mode 100644 index 000000000..d419eb472 Binary files /dev/null and b/public/terrain/19/858538/354026.terrain differ diff --git a/public/terrain/19/858538/354027.terrain b/public/terrain/19/858538/354027.terrain new file mode 100644 index 000000000..cfd9f2094 Binary files /dev/null and b/public/terrain/19/858538/354027.terrain differ diff --git a/public/terrain/19/858538/354028.terrain b/public/terrain/19/858538/354028.terrain new file mode 100644 index 000000000..5536ca2cc Binary files /dev/null and b/public/terrain/19/858538/354028.terrain differ diff --git a/public/terrain/19/858538/354029.terrain b/public/terrain/19/858538/354029.terrain new file mode 100644 index 000000000..e1a51d579 Binary files /dev/null and b/public/terrain/19/858538/354029.terrain differ diff --git a/public/terrain/19/858538/354030.terrain b/public/terrain/19/858538/354030.terrain new file mode 100644 index 000000000..4a1ddd937 Binary files /dev/null and b/public/terrain/19/858538/354030.terrain differ diff --git a/public/terrain/19/858538/354031.terrain b/public/terrain/19/858538/354031.terrain new file mode 100644 index 000000000..63c2a58c3 Binary files /dev/null and b/public/terrain/19/858538/354031.terrain differ diff --git a/public/terrain/19/858538/354032.terrain b/public/terrain/19/858538/354032.terrain new file mode 100644 index 000000000..6fb459061 Binary files /dev/null and b/public/terrain/19/858538/354032.terrain differ diff --git a/public/terrain/19/858538/354033.terrain b/public/terrain/19/858538/354033.terrain new file mode 100644 index 000000000..86a8839e4 Binary files /dev/null and b/public/terrain/19/858538/354033.terrain differ diff --git a/public/terrain/19/858538/354034.terrain b/public/terrain/19/858538/354034.terrain new file mode 100644 index 000000000..6f9114bde Binary files /dev/null and b/public/terrain/19/858538/354034.terrain differ diff --git a/public/terrain/19/858538/354035.terrain b/public/terrain/19/858538/354035.terrain new file mode 100644 index 000000000..fd09ad396 Binary files /dev/null and b/public/terrain/19/858538/354035.terrain differ diff --git a/public/terrain/19/858538/354036.terrain b/public/terrain/19/858538/354036.terrain new file mode 100644 index 000000000..194a5f445 Binary files /dev/null and b/public/terrain/19/858538/354036.terrain differ diff --git a/public/terrain/19/858538/354037.terrain b/public/terrain/19/858538/354037.terrain new file mode 100644 index 000000000..5cf10ed36 Binary files /dev/null and b/public/terrain/19/858538/354037.terrain differ diff --git a/public/terrain/19/858538/354038.terrain b/public/terrain/19/858538/354038.terrain new file mode 100644 index 000000000..e5cc0c325 Binary files /dev/null and b/public/terrain/19/858538/354038.terrain differ diff --git a/public/terrain/19/858538/354039.terrain b/public/terrain/19/858538/354039.terrain new file mode 100644 index 000000000..6200c38aa Binary files /dev/null and b/public/terrain/19/858538/354039.terrain differ diff --git a/public/terrain/19/858538/354040.terrain b/public/terrain/19/858538/354040.terrain new file mode 100644 index 000000000..e06f7de45 Binary files /dev/null and b/public/terrain/19/858538/354040.terrain differ diff --git a/public/terrain/19/858538/354041.terrain b/public/terrain/19/858538/354041.terrain new file mode 100644 index 000000000..8c2b3bcdd Binary files /dev/null and b/public/terrain/19/858538/354041.terrain differ diff --git a/public/terrain/19/858538/354042.terrain b/public/terrain/19/858538/354042.terrain new file mode 100644 index 000000000..31885dcd9 Binary files /dev/null and b/public/terrain/19/858538/354042.terrain differ diff --git a/public/terrain/19/858538/354043.terrain b/public/terrain/19/858538/354043.terrain new file mode 100644 index 000000000..a6bae977b Binary files /dev/null and b/public/terrain/19/858538/354043.terrain differ diff --git a/public/terrain/19/858538/354044.terrain b/public/terrain/19/858538/354044.terrain new file mode 100644 index 000000000..92a7d731a Binary files /dev/null and b/public/terrain/19/858538/354044.terrain differ diff --git a/public/terrain/19/858538/354045.terrain b/public/terrain/19/858538/354045.terrain new file mode 100644 index 000000000..cab042bd6 Binary files /dev/null and b/public/terrain/19/858538/354045.terrain differ diff --git a/public/terrain/19/858538/354046.terrain b/public/terrain/19/858538/354046.terrain new file mode 100644 index 000000000..a03cb0690 Binary files /dev/null and b/public/terrain/19/858538/354046.terrain differ diff --git a/public/terrain/19/858538/354047.terrain b/public/terrain/19/858538/354047.terrain new file mode 100644 index 000000000..c73b4fcd1 Binary files /dev/null and b/public/terrain/19/858538/354047.terrain differ diff --git a/public/terrain/19/858538/354048.terrain b/public/terrain/19/858538/354048.terrain new file mode 100644 index 000000000..40c839a9e Binary files /dev/null and b/public/terrain/19/858538/354048.terrain differ diff --git a/public/terrain/19/858538/354049.terrain b/public/terrain/19/858538/354049.terrain new file mode 100644 index 000000000..7a1b5f8be Binary files /dev/null and b/public/terrain/19/858538/354049.terrain differ diff --git a/public/terrain/19/858538/354050.terrain b/public/terrain/19/858538/354050.terrain new file mode 100644 index 000000000..10e368eec Binary files /dev/null and b/public/terrain/19/858538/354050.terrain differ diff --git a/public/terrain/19/858538/354051.terrain b/public/terrain/19/858538/354051.terrain new file mode 100644 index 000000000..f8e378163 Binary files /dev/null and b/public/terrain/19/858538/354051.terrain differ diff --git a/public/terrain/19/858538/354052.terrain b/public/terrain/19/858538/354052.terrain new file mode 100644 index 000000000..659fc9781 Binary files /dev/null and b/public/terrain/19/858538/354052.terrain differ diff --git a/public/terrain/19/858538/354053.terrain b/public/terrain/19/858538/354053.terrain new file mode 100644 index 000000000..be0085dc2 Binary files /dev/null and b/public/terrain/19/858538/354053.terrain differ diff --git a/public/terrain/19/858538/354054.terrain b/public/terrain/19/858538/354054.terrain new file mode 100644 index 000000000..f8086ed2a Binary files /dev/null and b/public/terrain/19/858538/354054.terrain differ diff --git a/public/terrain/19/858538/354055.terrain b/public/terrain/19/858538/354055.terrain new file mode 100644 index 000000000..d1b023f7a Binary files /dev/null and b/public/terrain/19/858538/354055.terrain differ diff --git a/public/terrain/19/858538/354056.terrain b/public/terrain/19/858538/354056.terrain new file mode 100644 index 000000000..483cd9e02 Binary files /dev/null and b/public/terrain/19/858538/354056.terrain differ diff --git a/public/terrain/19/858538/354057.terrain b/public/terrain/19/858538/354057.terrain new file mode 100644 index 000000000..6141baa16 Binary files /dev/null and b/public/terrain/19/858538/354057.terrain differ diff --git a/public/terrain/19/858538/354058.terrain b/public/terrain/19/858538/354058.terrain new file mode 100644 index 000000000..83da1bec6 Binary files /dev/null and b/public/terrain/19/858538/354058.terrain differ diff --git a/public/terrain/19/858538/354059.terrain b/public/terrain/19/858538/354059.terrain new file mode 100644 index 000000000..c057d447a Binary files /dev/null and b/public/terrain/19/858538/354059.terrain differ diff --git a/public/terrain/19/858539/353743.terrain b/public/terrain/19/858539/353743.terrain new file mode 100644 index 000000000..eca805918 Binary files /dev/null and b/public/terrain/19/858539/353743.terrain differ diff --git a/public/terrain/19/858539/353744.terrain b/public/terrain/19/858539/353744.terrain new file mode 100644 index 000000000..df4e93d1f Binary files /dev/null and b/public/terrain/19/858539/353744.terrain differ diff --git a/public/terrain/19/858539/353745.terrain b/public/terrain/19/858539/353745.terrain new file mode 100644 index 000000000..e12314636 Binary files /dev/null and b/public/terrain/19/858539/353745.terrain differ diff --git a/public/terrain/19/858539/353746.terrain b/public/terrain/19/858539/353746.terrain new file mode 100644 index 000000000..ac9da6a56 Binary files /dev/null and b/public/terrain/19/858539/353746.terrain differ diff --git a/public/terrain/19/858539/353747.terrain b/public/terrain/19/858539/353747.terrain new file mode 100644 index 000000000..5bc05f06b Binary files /dev/null and b/public/terrain/19/858539/353747.terrain differ diff --git a/public/terrain/19/858539/353748.terrain b/public/terrain/19/858539/353748.terrain new file mode 100644 index 000000000..041dc7942 Binary files /dev/null and b/public/terrain/19/858539/353748.terrain differ diff --git a/public/terrain/19/858539/353749.terrain b/public/terrain/19/858539/353749.terrain new file mode 100644 index 000000000..d7c74b341 Binary files /dev/null and b/public/terrain/19/858539/353749.terrain differ diff --git a/public/terrain/19/858539/353750.terrain b/public/terrain/19/858539/353750.terrain new file mode 100644 index 000000000..92fae2410 Binary files /dev/null and b/public/terrain/19/858539/353750.terrain differ diff --git a/public/terrain/19/858539/353751.terrain b/public/terrain/19/858539/353751.terrain new file mode 100644 index 000000000..826a5b91b Binary files /dev/null and b/public/terrain/19/858539/353751.terrain differ diff --git a/public/terrain/19/858539/353752.terrain b/public/terrain/19/858539/353752.terrain new file mode 100644 index 000000000..fbf4e38db Binary files /dev/null and b/public/terrain/19/858539/353752.terrain differ diff --git a/public/terrain/19/858539/353753.terrain b/public/terrain/19/858539/353753.terrain new file mode 100644 index 000000000..212c05965 Binary files /dev/null and b/public/terrain/19/858539/353753.terrain differ diff --git a/public/terrain/19/858539/353754.terrain b/public/terrain/19/858539/353754.terrain new file mode 100644 index 000000000..d7862ecdc Binary files /dev/null and b/public/terrain/19/858539/353754.terrain differ diff --git a/public/terrain/19/858539/353755.terrain b/public/terrain/19/858539/353755.terrain new file mode 100644 index 000000000..408e0b0e8 Binary files /dev/null and b/public/terrain/19/858539/353755.terrain differ diff --git a/public/terrain/19/858539/353756.terrain b/public/terrain/19/858539/353756.terrain new file mode 100644 index 000000000..0dcb60db4 Binary files /dev/null and b/public/terrain/19/858539/353756.terrain differ diff --git a/public/terrain/19/858539/353757.terrain b/public/terrain/19/858539/353757.terrain new file mode 100644 index 000000000..1e07b7b91 Binary files /dev/null and b/public/terrain/19/858539/353757.terrain differ diff --git a/public/terrain/19/858539/353758.terrain b/public/terrain/19/858539/353758.terrain new file mode 100644 index 000000000..cd2c67e48 Binary files /dev/null and b/public/terrain/19/858539/353758.terrain differ diff --git a/public/terrain/19/858539/353759.terrain b/public/terrain/19/858539/353759.terrain new file mode 100644 index 000000000..a713da15d Binary files /dev/null and b/public/terrain/19/858539/353759.terrain differ diff --git a/public/terrain/19/858539/353760.terrain b/public/terrain/19/858539/353760.terrain new file mode 100644 index 000000000..5b63ce7b3 Binary files /dev/null and b/public/terrain/19/858539/353760.terrain differ diff --git a/public/terrain/19/858539/353761.terrain b/public/terrain/19/858539/353761.terrain new file mode 100644 index 000000000..7b3ddd547 Binary files /dev/null and b/public/terrain/19/858539/353761.terrain differ diff --git a/public/terrain/19/858539/353762.terrain b/public/terrain/19/858539/353762.terrain new file mode 100644 index 000000000..6e05b512e Binary files /dev/null and b/public/terrain/19/858539/353762.terrain differ diff --git a/public/terrain/19/858539/353763.terrain b/public/terrain/19/858539/353763.terrain new file mode 100644 index 000000000..89c3579fb Binary files /dev/null and b/public/terrain/19/858539/353763.terrain differ diff --git a/public/terrain/19/858539/353764.terrain b/public/terrain/19/858539/353764.terrain new file mode 100644 index 000000000..09fb0be7f Binary files /dev/null and b/public/terrain/19/858539/353764.terrain differ diff --git a/public/terrain/19/858539/353765.terrain b/public/terrain/19/858539/353765.terrain new file mode 100644 index 000000000..6ece5fd2a Binary files /dev/null and b/public/terrain/19/858539/353765.terrain differ diff --git a/public/terrain/19/858539/353766.terrain b/public/terrain/19/858539/353766.terrain new file mode 100644 index 000000000..31d4d5456 Binary files /dev/null and b/public/terrain/19/858539/353766.terrain differ diff --git a/public/terrain/19/858539/353767.terrain b/public/terrain/19/858539/353767.terrain new file mode 100644 index 000000000..54d85fb17 Binary files /dev/null and b/public/terrain/19/858539/353767.terrain differ diff --git a/public/terrain/19/858539/353768.terrain b/public/terrain/19/858539/353768.terrain new file mode 100644 index 000000000..f70fb04cb Binary files /dev/null and b/public/terrain/19/858539/353768.terrain differ diff --git a/public/terrain/19/858539/353769.terrain b/public/terrain/19/858539/353769.terrain new file mode 100644 index 000000000..3de0d00b2 Binary files /dev/null and b/public/terrain/19/858539/353769.terrain differ diff --git a/public/terrain/19/858539/353770.terrain b/public/terrain/19/858539/353770.terrain new file mode 100644 index 000000000..c870a9406 Binary files /dev/null and b/public/terrain/19/858539/353770.terrain differ diff --git a/public/terrain/19/858539/353771.terrain b/public/terrain/19/858539/353771.terrain new file mode 100644 index 000000000..9020c3acd Binary files /dev/null and b/public/terrain/19/858539/353771.terrain differ diff --git a/public/terrain/19/858539/353772.terrain b/public/terrain/19/858539/353772.terrain new file mode 100644 index 000000000..c0ca3cb27 Binary files /dev/null and b/public/terrain/19/858539/353772.terrain differ diff --git a/public/terrain/19/858539/353773.terrain b/public/terrain/19/858539/353773.terrain new file mode 100644 index 000000000..879c497d2 Binary files /dev/null and b/public/terrain/19/858539/353773.terrain differ diff --git a/public/terrain/19/858539/353774.terrain b/public/terrain/19/858539/353774.terrain new file mode 100644 index 000000000..0b21a633d Binary files /dev/null and b/public/terrain/19/858539/353774.terrain differ diff --git a/public/terrain/19/858539/353775.terrain b/public/terrain/19/858539/353775.terrain new file mode 100644 index 000000000..25b2cc078 Binary files /dev/null and b/public/terrain/19/858539/353775.terrain differ diff --git a/public/terrain/19/858539/353776.terrain b/public/terrain/19/858539/353776.terrain new file mode 100644 index 000000000..d39defa85 Binary files /dev/null and b/public/terrain/19/858539/353776.terrain differ diff --git a/public/terrain/19/858539/353777.terrain b/public/terrain/19/858539/353777.terrain new file mode 100644 index 000000000..0e8bbd00f Binary files /dev/null and b/public/terrain/19/858539/353777.terrain differ diff --git a/public/terrain/19/858539/353778.terrain b/public/terrain/19/858539/353778.terrain new file mode 100644 index 000000000..ed24387a6 Binary files /dev/null and b/public/terrain/19/858539/353778.terrain differ diff --git a/public/terrain/19/858539/353779.terrain b/public/terrain/19/858539/353779.terrain new file mode 100644 index 000000000..bcc12e8d7 Binary files /dev/null and b/public/terrain/19/858539/353779.terrain differ diff --git a/public/terrain/19/858539/353780.terrain b/public/terrain/19/858539/353780.terrain new file mode 100644 index 000000000..878734441 Binary files /dev/null and b/public/terrain/19/858539/353780.terrain differ diff --git a/public/terrain/19/858539/353781.terrain b/public/terrain/19/858539/353781.terrain new file mode 100644 index 000000000..776c0f507 Binary files /dev/null and b/public/terrain/19/858539/353781.terrain differ diff --git a/public/terrain/19/858539/353782.terrain b/public/terrain/19/858539/353782.terrain new file mode 100644 index 000000000..8b57aa442 Binary files /dev/null and b/public/terrain/19/858539/353782.terrain differ diff --git a/public/terrain/19/858539/353783.terrain b/public/terrain/19/858539/353783.terrain new file mode 100644 index 000000000..4951ea091 Binary files /dev/null and b/public/terrain/19/858539/353783.terrain differ diff --git a/public/terrain/19/858539/353784.terrain b/public/terrain/19/858539/353784.terrain new file mode 100644 index 000000000..3382df98d Binary files /dev/null and b/public/terrain/19/858539/353784.terrain differ diff --git a/public/terrain/19/858539/353785.terrain b/public/terrain/19/858539/353785.terrain new file mode 100644 index 000000000..b1ef9618a Binary files /dev/null and b/public/terrain/19/858539/353785.terrain differ diff --git a/public/terrain/19/858539/353786.terrain b/public/terrain/19/858539/353786.terrain new file mode 100644 index 000000000..51078253e Binary files /dev/null and b/public/terrain/19/858539/353786.terrain differ diff --git a/public/terrain/19/858539/353787.terrain b/public/terrain/19/858539/353787.terrain new file mode 100644 index 000000000..ae64ff223 Binary files /dev/null and b/public/terrain/19/858539/353787.terrain differ diff --git a/public/terrain/19/858539/353788.terrain b/public/terrain/19/858539/353788.terrain new file mode 100644 index 000000000..b2a239579 Binary files /dev/null and b/public/terrain/19/858539/353788.terrain differ diff --git a/public/terrain/19/858539/353789.terrain b/public/terrain/19/858539/353789.terrain new file mode 100644 index 000000000..f96a77b96 Binary files /dev/null and b/public/terrain/19/858539/353789.terrain differ diff --git a/public/terrain/19/858539/353790.terrain b/public/terrain/19/858539/353790.terrain new file mode 100644 index 000000000..2b5cd1f0e Binary files /dev/null and b/public/terrain/19/858539/353790.terrain differ diff --git a/public/terrain/19/858539/353791.terrain b/public/terrain/19/858539/353791.terrain new file mode 100644 index 000000000..0adfa7ece Binary files /dev/null and b/public/terrain/19/858539/353791.terrain differ diff --git a/public/terrain/19/858539/353792.terrain b/public/terrain/19/858539/353792.terrain new file mode 100644 index 000000000..6d8dce5c7 Binary files /dev/null and b/public/terrain/19/858539/353792.terrain differ diff --git a/public/terrain/19/858539/353793.terrain b/public/terrain/19/858539/353793.terrain new file mode 100644 index 000000000..39b5d7fd6 Binary files /dev/null and b/public/terrain/19/858539/353793.terrain differ diff --git a/public/terrain/19/858539/353794.terrain b/public/terrain/19/858539/353794.terrain new file mode 100644 index 000000000..a02f78dab Binary files /dev/null and b/public/terrain/19/858539/353794.terrain differ diff --git a/public/terrain/19/858539/353795.terrain b/public/terrain/19/858539/353795.terrain new file mode 100644 index 000000000..324a6a909 Binary files /dev/null and b/public/terrain/19/858539/353795.terrain differ diff --git a/public/terrain/19/858539/353796.terrain b/public/terrain/19/858539/353796.terrain new file mode 100644 index 000000000..bb35be94f Binary files /dev/null and b/public/terrain/19/858539/353796.terrain differ diff --git a/public/terrain/19/858539/353797.terrain b/public/terrain/19/858539/353797.terrain new file mode 100644 index 000000000..b7d2d048d Binary files /dev/null and b/public/terrain/19/858539/353797.terrain differ diff --git a/public/terrain/19/858539/353798.terrain b/public/terrain/19/858539/353798.terrain new file mode 100644 index 000000000..c1ca87269 Binary files /dev/null and b/public/terrain/19/858539/353798.terrain differ diff --git a/public/terrain/19/858539/353799.terrain b/public/terrain/19/858539/353799.terrain new file mode 100644 index 000000000..d3df1a0ac Binary files /dev/null and b/public/terrain/19/858539/353799.terrain differ diff --git a/public/terrain/19/858539/353800.terrain b/public/terrain/19/858539/353800.terrain new file mode 100644 index 000000000..c308aa768 Binary files /dev/null and b/public/terrain/19/858539/353800.terrain differ diff --git a/public/terrain/19/858539/353801.terrain b/public/terrain/19/858539/353801.terrain new file mode 100644 index 000000000..8fc8c6d1d Binary files /dev/null and b/public/terrain/19/858539/353801.terrain differ diff --git a/public/terrain/19/858539/353802.terrain b/public/terrain/19/858539/353802.terrain new file mode 100644 index 000000000..577ce434a Binary files /dev/null and b/public/terrain/19/858539/353802.terrain differ diff --git a/public/terrain/19/858539/353803.terrain b/public/terrain/19/858539/353803.terrain new file mode 100644 index 000000000..8f8790eb5 Binary files /dev/null and b/public/terrain/19/858539/353803.terrain differ diff --git a/public/terrain/19/858539/353804.terrain b/public/terrain/19/858539/353804.terrain new file mode 100644 index 000000000..2185184f3 Binary files /dev/null and b/public/terrain/19/858539/353804.terrain differ diff --git a/public/terrain/19/858539/353805.terrain b/public/terrain/19/858539/353805.terrain new file mode 100644 index 000000000..bb5df3e8f Binary files /dev/null and b/public/terrain/19/858539/353805.terrain differ diff --git a/public/terrain/19/858539/353806.terrain b/public/terrain/19/858539/353806.terrain new file mode 100644 index 000000000..cc644ebba Binary files /dev/null and b/public/terrain/19/858539/353806.terrain differ diff --git a/public/terrain/19/858539/353807.terrain b/public/terrain/19/858539/353807.terrain new file mode 100644 index 000000000..b1f493c67 Binary files /dev/null and b/public/terrain/19/858539/353807.terrain differ diff --git a/public/terrain/19/858539/353808.terrain b/public/terrain/19/858539/353808.terrain new file mode 100644 index 000000000..583428ca4 Binary files /dev/null and b/public/terrain/19/858539/353808.terrain differ diff --git a/public/terrain/19/858539/353809.terrain b/public/terrain/19/858539/353809.terrain new file mode 100644 index 000000000..3c74e6744 Binary files /dev/null and b/public/terrain/19/858539/353809.terrain differ diff --git a/public/terrain/19/858539/353810.terrain b/public/terrain/19/858539/353810.terrain new file mode 100644 index 000000000..219ca20aa Binary files /dev/null and b/public/terrain/19/858539/353810.terrain differ diff --git a/public/terrain/19/858539/353811.terrain b/public/terrain/19/858539/353811.terrain new file mode 100644 index 000000000..822661d15 Binary files /dev/null and b/public/terrain/19/858539/353811.terrain differ diff --git a/public/terrain/19/858539/353812.terrain b/public/terrain/19/858539/353812.terrain new file mode 100644 index 000000000..3ee9cdfae Binary files /dev/null and b/public/terrain/19/858539/353812.terrain differ diff --git a/public/terrain/19/858539/353813.terrain b/public/terrain/19/858539/353813.terrain new file mode 100644 index 000000000..95e3c79c3 Binary files /dev/null and b/public/terrain/19/858539/353813.terrain differ diff --git a/public/terrain/19/858539/353814.terrain b/public/terrain/19/858539/353814.terrain new file mode 100644 index 000000000..4806dddac Binary files /dev/null and b/public/terrain/19/858539/353814.terrain differ diff --git a/public/terrain/19/858539/353815.terrain b/public/terrain/19/858539/353815.terrain new file mode 100644 index 000000000..878408be8 Binary files /dev/null and b/public/terrain/19/858539/353815.terrain differ diff --git a/public/terrain/19/858539/353816.terrain b/public/terrain/19/858539/353816.terrain new file mode 100644 index 000000000..378f93609 Binary files /dev/null and b/public/terrain/19/858539/353816.terrain differ diff --git a/public/terrain/19/858539/353817.terrain b/public/terrain/19/858539/353817.terrain new file mode 100644 index 000000000..b097881a5 Binary files /dev/null and b/public/terrain/19/858539/353817.terrain differ diff --git a/public/terrain/19/858539/353818.terrain b/public/terrain/19/858539/353818.terrain new file mode 100644 index 000000000..ac8ac1d6d Binary files /dev/null and b/public/terrain/19/858539/353818.terrain differ diff --git a/public/terrain/19/858539/353819.terrain b/public/terrain/19/858539/353819.terrain new file mode 100644 index 000000000..de37e839f Binary files /dev/null and b/public/terrain/19/858539/353819.terrain differ diff --git a/public/terrain/19/858539/353820.terrain b/public/terrain/19/858539/353820.terrain new file mode 100644 index 000000000..2f002c455 Binary files /dev/null and b/public/terrain/19/858539/353820.terrain differ diff --git a/public/terrain/19/858539/353821.terrain b/public/terrain/19/858539/353821.terrain new file mode 100644 index 000000000..a39a62189 Binary files /dev/null and b/public/terrain/19/858539/353821.terrain differ diff --git a/public/terrain/19/858539/353822.terrain b/public/terrain/19/858539/353822.terrain new file mode 100644 index 000000000..a4fa51828 Binary files /dev/null and b/public/terrain/19/858539/353822.terrain differ diff --git a/public/terrain/19/858539/353823.terrain b/public/terrain/19/858539/353823.terrain new file mode 100644 index 000000000..39cea26a8 Binary files /dev/null and b/public/terrain/19/858539/353823.terrain differ diff --git a/public/terrain/19/858539/353824.terrain b/public/terrain/19/858539/353824.terrain new file mode 100644 index 000000000..7a0c208aa Binary files /dev/null and b/public/terrain/19/858539/353824.terrain differ diff --git a/public/terrain/19/858539/353825.terrain b/public/terrain/19/858539/353825.terrain new file mode 100644 index 000000000..fcaef684b Binary files /dev/null and b/public/terrain/19/858539/353825.terrain differ diff --git a/public/terrain/19/858539/353826.terrain b/public/terrain/19/858539/353826.terrain new file mode 100644 index 000000000..010be476d Binary files /dev/null and b/public/terrain/19/858539/353826.terrain differ diff --git a/public/terrain/19/858539/353827.terrain b/public/terrain/19/858539/353827.terrain new file mode 100644 index 000000000..2615aa7f8 Binary files /dev/null and b/public/terrain/19/858539/353827.terrain differ diff --git a/public/terrain/19/858539/353828.terrain b/public/terrain/19/858539/353828.terrain new file mode 100644 index 000000000..82a08e226 Binary files /dev/null and b/public/terrain/19/858539/353828.terrain differ diff --git a/public/terrain/19/858539/353829.terrain b/public/terrain/19/858539/353829.terrain new file mode 100644 index 000000000..e41151cfb Binary files /dev/null and b/public/terrain/19/858539/353829.terrain differ diff --git a/public/terrain/19/858539/353830.terrain b/public/terrain/19/858539/353830.terrain new file mode 100644 index 000000000..4685cdb6f Binary files /dev/null and b/public/terrain/19/858539/353830.terrain differ diff --git a/public/terrain/19/858539/353831.terrain b/public/terrain/19/858539/353831.terrain new file mode 100644 index 000000000..41c1036af Binary files /dev/null and b/public/terrain/19/858539/353831.terrain differ diff --git a/public/terrain/19/858539/353832.terrain b/public/terrain/19/858539/353832.terrain new file mode 100644 index 000000000..164a0dd1a Binary files /dev/null and b/public/terrain/19/858539/353832.terrain differ diff --git a/public/terrain/19/858539/353833.terrain b/public/terrain/19/858539/353833.terrain new file mode 100644 index 000000000..07fd49a65 Binary files /dev/null and b/public/terrain/19/858539/353833.terrain differ diff --git a/public/terrain/19/858539/353834.terrain b/public/terrain/19/858539/353834.terrain new file mode 100644 index 000000000..006af50ff Binary files /dev/null and b/public/terrain/19/858539/353834.terrain differ diff --git a/public/terrain/19/858539/353835.terrain b/public/terrain/19/858539/353835.terrain new file mode 100644 index 000000000..4903d00cd Binary files /dev/null and b/public/terrain/19/858539/353835.terrain differ diff --git a/public/terrain/19/858539/353836.terrain b/public/terrain/19/858539/353836.terrain new file mode 100644 index 000000000..cd3ab27cd Binary files /dev/null and b/public/terrain/19/858539/353836.terrain differ diff --git a/public/terrain/19/858539/353837.terrain b/public/terrain/19/858539/353837.terrain new file mode 100644 index 000000000..66d070f08 Binary files /dev/null and b/public/terrain/19/858539/353837.terrain differ diff --git a/public/terrain/19/858539/353838.terrain b/public/terrain/19/858539/353838.terrain new file mode 100644 index 000000000..a969dffbd Binary files /dev/null and b/public/terrain/19/858539/353838.terrain differ diff --git a/public/terrain/19/858539/353839.terrain b/public/terrain/19/858539/353839.terrain new file mode 100644 index 000000000..1919440d9 Binary files /dev/null and b/public/terrain/19/858539/353839.terrain differ diff --git a/public/terrain/19/858539/353840.terrain b/public/terrain/19/858539/353840.terrain new file mode 100644 index 000000000..81b2ae743 Binary files /dev/null and b/public/terrain/19/858539/353840.terrain differ diff --git a/public/terrain/19/858539/353841.terrain b/public/terrain/19/858539/353841.terrain new file mode 100644 index 000000000..5b37bc66e Binary files /dev/null and b/public/terrain/19/858539/353841.terrain differ diff --git a/public/terrain/19/858539/353842.terrain b/public/terrain/19/858539/353842.terrain new file mode 100644 index 000000000..dc2d33547 Binary files /dev/null and b/public/terrain/19/858539/353842.terrain differ diff --git a/public/terrain/19/858539/353843.terrain b/public/terrain/19/858539/353843.terrain new file mode 100644 index 000000000..96a01943c Binary files /dev/null and b/public/terrain/19/858539/353843.terrain differ diff --git a/public/terrain/19/858539/353844.terrain b/public/terrain/19/858539/353844.terrain new file mode 100644 index 000000000..9923cd7c4 Binary files /dev/null and b/public/terrain/19/858539/353844.terrain differ diff --git a/public/terrain/19/858539/353845.terrain b/public/terrain/19/858539/353845.terrain new file mode 100644 index 000000000..645183cff Binary files /dev/null and b/public/terrain/19/858539/353845.terrain differ diff --git a/public/terrain/19/858539/353846.terrain b/public/terrain/19/858539/353846.terrain new file mode 100644 index 000000000..ca69e49fc Binary files /dev/null and b/public/terrain/19/858539/353846.terrain differ diff --git a/public/terrain/19/858539/353847.terrain b/public/terrain/19/858539/353847.terrain new file mode 100644 index 000000000..3c6da7b80 Binary files /dev/null and b/public/terrain/19/858539/353847.terrain differ diff --git a/public/terrain/19/858539/353848.terrain b/public/terrain/19/858539/353848.terrain new file mode 100644 index 000000000..7afc40caf Binary files /dev/null and b/public/terrain/19/858539/353848.terrain differ diff --git a/public/terrain/19/858539/353849.terrain b/public/terrain/19/858539/353849.terrain new file mode 100644 index 000000000..9cf7a126a Binary files /dev/null and b/public/terrain/19/858539/353849.terrain differ diff --git a/public/terrain/19/858539/353850.terrain b/public/terrain/19/858539/353850.terrain new file mode 100644 index 000000000..7c512c8eb Binary files /dev/null and b/public/terrain/19/858539/353850.terrain differ diff --git a/public/terrain/19/858539/353851.terrain b/public/terrain/19/858539/353851.terrain new file mode 100644 index 000000000..58db24ae2 Binary files /dev/null and b/public/terrain/19/858539/353851.terrain differ diff --git a/public/terrain/19/858539/353852.terrain b/public/terrain/19/858539/353852.terrain new file mode 100644 index 000000000..c6b57876b Binary files /dev/null and b/public/terrain/19/858539/353852.terrain differ diff --git a/public/terrain/19/858539/353853.terrain b/public/terrain/19/858539/353853.terrain new file mode 100644 index 000000000..d07889177 Binary files /dev/null and b/public/terrain/19/858539/353853.terrain differ diff --git a/public/terrain/19/858539/353854.terrain b/public/terrain/19/858539/353854.terrain new file mode 100644 index 000000000..f30be4fb7 Binary files /dev/null and b/public/terrain/19/858539/353854.terrain differ diff --git a/public/terrain/19/858539/353855.terrain b/public/terrain/19/858539/353855.terrain new file mode 100644 index 000000000..434cee85f Binary files /dev/null and b/public/terrain/19/858539/353855.terrain differ diff --git a/public/terrain/19/858539/353856.terrain b/public/terrain/19/858539/353856.terrain new file mode 100644 index 000000000..87695d0dc Binary files /dev/null and b/public/terrain/19/858539/353856.terrain differ diff --git a/public/terrain/19/858539/353857.terrain b/public/terrain/19/858539/353857.terrain new file mode 100644 index 000000000..ce3bebb0c Binary files /dev/null and b/public/terrain/19/858539/353857.terrain differ diff --git a/public/terrain/19/858539/353858.terrain b/public/terrain/19/858539/353858.terrain new file mode 100644 index 000000000..47bf23bae Binary files /dev/null and b/public/terrain/19/858539/353858.terrain differ diff --git a/public/terrain/19/858539/353859.terrain b/public/terrain/19/858539/353859.terrain new file mode 100644 index 000000000..e9bc2210d Binary files /dev/null and b/public/terrain/19/858539/353859.terrain differ diff --git a/public/terrain/19/858539/353860.terrain b/public/terrain/19/858539/353860.terrain new file mode 100644 index 000000000..e88120de4 Binary files /dev/null and b/public/terrain/19/858539/353860.terrain differ diff --git a/public/terrain/19/858539/353861.terrain b/public/terrain/19/858539/353861.terrain new file mode 100644 index 000000000..f4e67334b Binary files /dev/null and b/public/terrain/19/858539/353861.terrain differ diff --git a/public/terrain/19/858539/353862.terrain b/public/terrain/19/858539/353862.terrain new file mode 100644 index 000000000..a126973ef Binary files /dev/null and b/public/terrain/19/858539/353862.terrain differ diff --git a/public/terrain/19/858539/353863.terrain b/public/terrain/19/858539/353863.terrain new file mode 100644 index 000000000..5b1a1eebf Binary files /dev/null and b/public/terrain/19/858539/353863.terrain differ diff --git a/public/terrain/19/858539/353864.terrain b/public/terrain/19/858539/353864.terrain new file mode 100644 index 000000000..54a407ab8 Binary files /dev/null and b/public/terrain/19/858539/353864.terrain differ diff --git a/public/terrain/19/858539/353865.terrain b/public/terrain/19/858539/353865.terrain new file mode 100644 index 000000000..9a3ce6a52 Binary files /dev/null and b/public/terrain/19/858539/353865.terrain differ diff --git a/public/terrain/19/858539/353866.terrain b/public/terrain/19/858539/353866.terrain new file mode 100644 index 000000000..178b68b6b Binary files /dev/null and b/public/terrain/19/858539/353866.terrain differ diff --git a/public/terrain/19/858539/353867.terrain b/public/terrain/19/858539/353867.terrain new file mode 100644 index 000000000..30a50d25c Binary files /dev/null and b/public/terrain/19/858539/353867.terrain differ diff --git a/public/terrain/19/858539/353868.terrain b/public/terrain/19/858539/353868.terrain new file mode 100644 index 000000000..0131c6673 Binary files /dev/null and b/public/terrain/19/858539/353868.terrain differ diff --git a/public/terrain/19/858539/353869.terrain b/public/terrain/19/858539/353869.terrain new file mode 100644 index 000000000..a5a648dfb Binary files /dev/null and b/public/terrain/19/858539/353869.terrain differ diff --git a/public/terrain/19/858539/353870.terrain b/public/terrain/19/858539/353870.terrain new file mode 100644 index 000000000..cbcacc4f8 Binary files /dev/null and b/public/terrain/19/858539/353870.terrain differ diff --git a/public/terrain/19/858539/353871.terrain b/public/terrain/19/858539/353871.terrain new file mode 100644 index 000000000..8096d0845 Binary files /dev/null and b/public/terrain/19/858539/353871.terrain differ diff --git a/public/terrain/19/858539/353872.terrain b/public/terrain/19/858539/353872.terrain new file mode 100644 index 000000000..eb02bec1f Binary files /dev/null and b/public/terrain/19/858539/353872.terrain differ diff --git a/public/terrain/19/858539/353873.terrain b/public/terrain/19/858539/353873.terrain new file mode 100644 index 000000000..93d1cc006 Binary files /dev/null and b/public/terrain/19/858539/353873.terrain differ diff --git a/public/terrain/19/858539/353874.terrain b/public/terrain/19/858539/353874.terrain new file mode 100644 index 000000000..1896e47f0 Binary files /dev/null and b/public/terrain/19/858539/353874.terrain differ diff --git a/public/terrain/19/858539/353875.terrain b/public/terrain/19/858539/353875.terrain new file mode 100644 index 000000000..c737f42b7 Binary files /dev/null and b/public/terrain/19/858539/353875.terrain differ diff --git a/public/terrain/19/858539/353876.terrain b/public/terrain/19/858539/353876.terrain new file mode 100644 index 000000000..a66bf284c Binary files /dev/null and b/public/terrain/19/858539/353876.terrain differ diff --git a/public/terrain/19/858539/353877.terrain b/public/terrain/19/858539/353877.terrain new file mode 100644 index 000000000..29befc6f9 Binary files /dev/null and b/public/terrain/19/858539/353877.terrain differ diff --git a/public/terrain/19/858539/353878.terrain b/public/terrain/19/858539/353878.terrain new file mode 100644 index 000000000..994e9967f Binary files /dev/null and b/public/terrain/19/858539/353878.terrain differ diff --git a/public/terrain/19/858539/353879.terrain b/public/terrain/19/858539/353879.terrain new file mode 100644 index 000000000..386a3a34c Binary files /dev/null and b/public/terrain/19/858539/353879.terrain differ diff --git a/public/terrain/19/858539/353880.terrain b/public/terrain/19/858539/353880.terrain new file mode 100644 index 000000000..d1798ff8d Binary files /dev/null and b/public/terrain/19/858539/353880.terrain differ diff --git a/public/terrain/19/858539/353881.terrain b/public/terrain/19/858539/353881.terrain new file mode 100644 index 000000000..33b1ce3b7 Binary files /dev/null and b/public/terrain/19/858539/353881.terrain differ diff --git a/public/terrain/19/858539/353882.terrain b/public/terrain/19/858539/353882.terrain new file mode 100644 index 000000000..d0c1abd08 Binary files /dev/null and b/public/terrain/19/858539/353882.terrain differ diff --git a/public/terrain/19/858539/353883.terrain b/public/terrain/19/858539/353883.terrain new file mode 100644 index 000000000..37d648b67 Binary files /dev/null and b/public/terrain/19/858539/353883.terrain differ diff --git a/public/terrain/19/858539/353884.terrain b/public/terrain/19/858539/353884.terrain new file mode 100644 index 000000000..7be00133e Binary files /dev/null and b/public/terrain/19/858539/353884.terrain differ diff --git a/public/terrain/19/858539/353885.terrain b/public/terrain/19/858539/353885.terrain new file mode 100644 index 000000000..5c8316bd9 Binary files /dev/null and b/public/terrain/19/858539/353885.terrain differ diff --git a/public/terrain/19/858539/353886.terrain b/public/terrain/19/858539/353886.terrain new file mode 100644 index 000000000..b88e26dd8 Binary files /dev/null and b/public/terrain/19/858539/353886.terrain differ diff --git a/public/terrain/19/858539/353887.terrain b/public/terrain/19/858539/353887.terrain new file mode 100644 index 000000000..1c7c6644d Binary files /dev/null and b/public/terrain/19/858539/353887.terrain differ diff --git a/public/terrain/19/858539/353888.terrain b/public/terrain/19/858539/353888.terrain new file mode 100644 index 000000000..88cac3591 Binary files /dev/null and b/public/terrain/19/858539/353888.terrain differ diff --git a/public/terrain/19/858539/353889.terrain b/public/terrain/19/858539/353889.terrain new file mode 100644 index 000000000..d72631e80 Binary files /dev/null and b/public/terrain/19/858539/353889.terrain differ diff --git a/public/terrain/19/858539/353890.terrain b/public/terrain/19/858539/353890.terrain new file mode 100644 index 000000000..3580904e1 Binary files /dev/null and b/public/terrain/19/858539/353890.terrain differ diff --git a/public/terrain/19/858539/353891.terrain b/public/terrain/19/858539/353891.terrain new file mode 100644 index 000000000..1ea02015e Binary files /dev/null and b/public/terrain/19/858539/353891.terrain differ diff --git a/public/terrain/19/858539/353892.terrain b/public/terrain/19/858539/353892.terrain new file mode 100644 index 000000000..6b1fa0187 Binary files /dev/null and b/public/terrain/19/858539/353892.terrain differ diff --git a/public/terrain/19/858539/353893.terrain b/public/terrain/19/858539/353893.terrain new file mode 100644 index 000000000..488c14e43 Binary files /dev/null and b/public/terrain/19/858539/353893.terrain differ diff --git a/public/terrain/19/858539/353894.terrain b/public/terrain/19/858539/353894.terrain new file mode 100644 index 000000000..500fe8570 Binary files /dev/null and b/public/terrain/19/858539/353894.terrain differ diff --git a/public/terrain/19/858539/353895.terrain b/public/terrain/19/858539/353895.terrain new file mode 100644 index 000000000..1af812693 Binary files /dev/null and b/public/terrain/19/858539/353895.terrain differ diff --git a/public/terrain/19/858539/353896.terrain b/public/terrain/19/858539/353896.terrain new file mode 100644 index 000000000..5630bb2fd Binary files /dev/null and b/public/terrain/19/858539/353896.terrain differ diff --git a/public/terrain/19/858539/353897.terrain b/public/terrain/19/858539/353897.terrain new file mode 100644 index 000000000..2df9695f7 Binary files /dev/null and b/public/terrain/19/858539/353897.terrain differ diff --git a/public/terrain/19/858539/353898.terrain b/public/terrain/19/858539/353898.terrain new file mode 100644 index 000000000..ea4d6467f Binary files /dev/null and b/public/terrain/19/858539/353898.terrain differ diff --git a/public/terrain/19/858539/353899.terrain b/public/terrain/19/858539/353899.terrain new file mode 100644 index 000000000..ea9384089 Binary files /dev/null and b/public/terrain/19/858539/353899.terrain differ diff --git a/public/terrain/19/858539/353900.terrain b/public/terrain/19/858539/353900.terrain new file mode 100644 index 000000000..404e9d7db Binary files /dev/null and b/public/terrain/19/858539/353900.terrain differ diff --git a/public/terrain/19/858539/353901.terrain b/public/terrain/19/858539/353901.terrain new file mode 100644 index 000000000..bbeb55e28 Binary files /dev/null and b/public/terrain/19/858539/353901.terrain differ diff --git a/public/terrain/19/858539/353902.terrain b/public/terrain/19/858539/353902.terrain new file mode 100644 index 000000000..ea49a5090 Binary files /dev/null and b/public/terrain/19/858539/353902.terrain differ diff --git a/public/terrain/19/858539/353903.terrain b/public/terrain/19/858539/353903.terrain new file mode 100644 index 000000000..9e3315bfc Binary files /dev/null and b/public/terrain/19/858539/353903.terrain differ diff --git a/public/terrain/19/858539/353904.terrain b/public/terrain/19/858539/353904.terrain new file mode 100644 index 000000000..2ffab3a49 Binary files /dev/null and b/public/terrain/19/858539/353904.terrain differ diff --git a/public/terrain/19/858539/353905.terrain b/public/terrain/19/858539/353905.terrain new file mode 100644 index 000000000..8ee1f1b50 Binary files /dev/null and b/public/terrain/19/858539/353905.terrain differ diff --git a/public/terrain/19/858539/353906.terrain b/public/terrain/19/858539/353906.terrain new file mode 100644 index 000000000..bf243a63c Binary files /dev/null and b/public/terrain/19/858539/353906.terrain differ diff --git a/public/terrain/19/858539/353907.terrain b/public/terrain/19/858539/353907.terrain new file mode 100644 index 000000000..c70fb6fc3 Binary files /dev/null and b/public/terrain/19/858539/353907.terrain differ diff --git a/public/terrain/19/858539/353908.terrain b/public/terrain/19/858539/353908.terrain new file mode 100644 index 000000000..e86d26d6b Binary files /dev/null and b/public/terrain/19/858539/353908.terrain differ diff --git a/public/terrain/19/858539/353909.terrain b/public/terrain/19/858539/353909.terrain new file mode 100644 index 000000000..b9930f034 Binary files /dev/null and b/public/terrain/19/858539/353909.terrain differ diff --git a/public/terrain/19/858539/353910.terrain b/public/terrain/19/858539/353910.terrain new file mode 100644 index 000000000..70927df0b Binary files /dev/null and b/public/terrain/19/858539/353910.terrain differ diff --git a/public/terrain/19/858539/353911.terrain b/public/terrain/19/858539/353911.terrain new file mode 100644 index 000000000..b7ffa67d8 Binary files /dev/null and b/public/terrain/19/858539/353911.terrain differ diff --git a/public/terrain/19/858539/353912.terrain b/public/terrain/19/858539/353912.terrain new file mode 100644 index 000000000..a6deb897d Binary files /dev/null and b/public/terrain/19/858539/353912.terrain differ diff --git a/public/terrain/19/858539/353913.terrain b/public/terrain/19/858539/353913.terrain new file mode 100644 index 000000000..4d73995d3 Binary files /dev/null and b/public/terrain/19/858539/353913.terrain differ diff --git a/public/terrain/19/858539/353914.terrain b/public/terrain/19/858539/353914.terrain new file mode 100644 index 000000000..28d4ba14d Binary files /dev/null and b/public/terrain/19/858539/353914.terrain differ diff --git a/public/terrain/19/858539/353915.terrain b/public/terrain/19/858539/353915.terrain new file mode 100644 index 000000000..838c62d98 Binary files /dev/null and b/public/terrain/19/858539/353915.terrain differ diff --git a/public/terrain/19/858539/353916.terrain b/public/terrain/19/858539/353916.terrain new file mode 100644 index 000000000..617d6b6cc Binary files /dev/null and b/public/terrain/19/858539/353916.terrain differ diff --git a/public/terrain/19/858539/353917.terrain b/public/terrain/19/858539/353917.terrain new file mode 100644 index 000000000..e71e26fa4 Binary files /dev/null and b/public/terrain/19/858539/353917.terrain differ diff --git a/public/terrain/19/858539/353918.terrain b/public/terrain/19/858539/353918.terrain new file mode 100644 index 000000000..65c704f57 Binary files /dev/null and b/public/terrain/19/858539/353918.terrain differ diff --git a/public/terrain/19/858539/353919.terrain b/public/terrain/19/858539/353919.terrain new file mode 100644 index 000000000..dcce1d7d8 Binary files /dev/null and b/public/terrain/19/858539/353919.terrain differ diff --git a/public/terrain/19/858539/353920.terrain b/public/terrain/19/858539/353920.terrain new file mode 100644 index 000000000..3af648898 Binary files /dev/null and b/public/terrain/19/858539/353920.terrain differ diff --git a/public/terrain/19/858539/353921.terrain b/public/terrain/19/858539/353921.terrain new file mode 100644 index 000000000..7b868ccf7 Binary files /dev/null and b/public/terrain/19/858539/353921.terrain differ diff --git a/public/terrain/19/858539/353922.terrain b/public/terrain/19/858539/353922.terrain new file mode 100644 index 000000000..df5ef09e4 Binary files /dev/null and b/public/terrain/19/858539/353922.terrain differ diff --git a/public/terrain/19/858539/353923.terrain b/public/terrain/19/858539/353923.terrain new file mode 100644 index 000000000..74f95b93b Binary files /dev/null and b/public/terrain/19/858539/353923.terrain differ diff --git a/public/terrain/19/858539/353924.terrain b/public/terrain/19/858539/353924.terrain new file mode 100644 index 000000000..bf0e1256f Binary files /dev/null and b/public/terrain/19/858539/353924.terrain differ diff --git a/public/terrain/19/858539/353925.terrain b/public/terrain/19/858539/353925.terrain new file mode 100644 index 000000000..3a23af337 Binary files /dev/null and b/public/terrain/19/858539/353925.terrain differ diff --git a/public/terrain/19/858539/353926.terrain b/public/terrain/19/858539/353926.terrain new file mode 100644 index 000000000..7bd520997 Binary files /dev/null and b/public/terrain/19/858539/353926.terrain differ diff --git a/public/terrain/19/858539/353927.terrain b/public/terrain/19/858539/353927.terrain new file mode 100644 index 000000000..5a68a681a Binary files /dev/null and b/public/terrain/19/858539/353927.terrain differ diff --git a/public/terrain/19/858539/353928.terrain b/public/terrain/19/858539/353928.terrain new file mode 100644 index 000000000..9b096dfd2 Binary files /dev/null and b/public/terrain/19/858539/353928.terrain differ diff --git a/public/terrain/19/858539/353929.terrain b/public/terrain/19/858539/353929.terrain new file mode 100644 index 000000000..13ade7386 Binary files /dev/null and b/public/terrain/19/858539/353929.terrain differ diff --git a/public/terrain/19/858539/353930.terrain b/public/terrain/19/858539/353930.terrain new file mode 100644 index 000000000..660387cf7 Binary files /dev/null and b/public/terrain/19/858539/353930.terrain differ diff --git a/public/terrain/19/858539/353931.terrain b/public/terrain/19/858539/353931.terrain new file mode 100644 index 000000000..f3d5d794c Binary files /dev/null and b/public/terrain/19/858539/353931.terrain differ diff --git a/public/terrain/19/858539/353932.terrain b/public/terrain/19/858539/353932.terrain new file mode 100644 index 000000000..bfb1526d3 Binary files /dev/null and b/public/terrain/19/858539/353932.terrain differ diff --git a/public/terrain/19/858539/353933.terrain b/public/terrain/19/858539/353933.terrain new file mode 100644 index 000000000..56c7cee1f Binary files /dev/null and b/public/terrain/19/858539/353933.terrain differ diff --git a/public/terrain/19/858539/353934.terrain b/public/terrain/19/858539/353934.terrain new file mode 100644 index 000000000..2a185010a Binary files /dev/null and b/public/terrain/19/858539/353934.terrain differ diff --git a/public/terrain/19/858539/353935.terrain b/public/terrain/19/858539/353935.terrain new file mode 100644 index 000000000..5b7011f8e Binary files /dev/null and b/public/terrain/19/858539/353935.terrain differ diff --git a/public/terrain/19/858539/353936.terrain b/public/terrain/19/858539/353936.terrain new file mode 100644 index 000000000..fa7cf198a Binary files /dev/null and b/public/terrain/19/858539/353936.terrain differ diff --git a/public/terrain/19/858539/353937.terrain b/public/terrain/19/858539/353937.terrain new file mode 100644 index 000000000..2aa740e09 Binary files /dev/null and b/public/terrain/19/858539/353937.terrain differ diff --git a/public/terrain/19/858539/353938.terrain b/public/terrain/19/858539/353938.terrain new file mode 100644 index 000000000..9d58a86b0 Binary files /dev/null and b/public/terrain/19/858539/353938.terrain differ diff --git a/public/terrain/19/858539/353939.terrain b/public/terrain/19/858539/353939.terrain new file mode 100644 index 000000000..fcb062e2b Binary files /dev/null and b/public/terrain/19/858539/353939.terrain differ diff --git a/public/terrain/19/858539/353940.terrain b/public/terrain/19/858539/353940.terrain new file mode 100644 index 000000000..826c4befa Binary files /dev/null and b/public/terrain/19/858539/353940.terrain differ diff --git a/public/terrain/19/858539/353941.terrain b/public/terrain/19/858539/353941.terrain new file mode 100644 index 000000000..3ad8394e8 Binary files /dev/null and b/public/terrain/19/858539/353941.terrain differ diff --git a/public/terrain/19/858539/353942.terrain b/public/terrain/19/858539/353942.terrain new file mode 100644 index 000000000..9f6e6b161 Binary files /dev/null and b/public/terrain/19/858539/353942.terrain differ diff --git a/public/terrain/19/858539/353943.terrain b/public/terrain/19/858539/353943.terrain new file mode 100644 index 000000000..dd0be8df9 Binary files /dev/null and b/public/terrain/19/858539/353943.terrain differ diff --git a/public/terrain/19/858539/353944.terrain b/public/terrain/19/858539/353944.terrain new file mode 100644 index 000000000..f39977f24 Binary files /dev/null and b/public/terrain/19/858539/353944.terrain differ diff --git a/public/terrain/19/858539/353945.terrain b/public/terrain/19/858539/353945.terrain new file mode 100644 index 000000000..08fa09c3a Binary files /dev/null and b/public/terrain/19/858539/353945.terrain differ diff --git a/public/terrain/19/858539/353946.terrain b/public/terrain/19/858539/353946.terrain new file mode 100644 index 000000000..0d7769da1 Binary files /dev/null and b/public/terrain/19/858539/353946.terrain differ diff --git a/public/terrain/19/858539/353947.terrain b/public/terrain/19/858539/353947.terrain new file mode 100644 index 000000000..bf4805316 Binary files /dev/null and b/public/terrain/19/858539/353947.terrain differ diff --git a/public/terrain/19/858539/353948.terrain b/public/terrain/19/858539/353948.terrain new file mode 100644 index 000000000..70b7289eb Binary files /dev/null and b/public/terrain/19/858539/353948.terrain differ diff --git a/public/terrain/19/858539/353949.terrain b/public/terrain/19/858539/353949.terrain new file mode 100644 index 000000000..45b05fb2b Binary files /dev/null and b/public/terrain/19/858539/353949.terrain differ diff --git a/public/terrain/19/858539/353950.terrain b/public/terrain/19/858539/353950.terrain new file mode 100644 index 000000000..9cb97b0f3 Binary files /dev/null and b/public/terrain/19/858539/353950.terrain differ diff --git a/public/terrain/19/858539/353951.terrain b/public/terrain/19/858539/353951.terrain new file mode 100644 index 000000000..755507bdc Binary files /dev/null and b/public/terrain/19/858539/353951.terrain differ diff --git a/public/terrain/19/858539/353952.terrain b/public/terrain/19/858539/353952.terrain new file mode 100644 index 000000000..2c09d7454 Binary files /dev/null and b/public/terrain/19/858539/353952.terrain differ diff --git a/public/terrain/19/858539/353953.terrain b/public/terrain/19/858539/353953.terrain new file mode 100644 index 000000000..e0525d5b3 Binary files /dev/null and b/public/terrain/19/858539/353953.terrain differ diff --git a/public/terrain/19/858539/353954.terrain b/public/terrain/19/858539/353954.terrain new file mode 100644 index 000000000..39fda7f42 Binary files /dev/null and b/public/terrain/19/858539/353954.terrain differ diff --git a/public/terrain/19/858539/353955.terrain b/public/terrain/19/858539/353955.terrain new file mode 100644 index 000000000..8accd73ad Binary files /dev/null and b/public/terrain/19/858539/353955.terrain differ diff --git a/public/terrain/19/858539/353956.terrain b/public/terrain/19/858539/353956.terrain new file mode 100644 index 000000000..e45b94cdc Binary files /dev/null and b/public/terrain/19/858539/353956.terrain differ diff --git a/public/terrain/19/858539/353957.terrain b/public/terrain/19/858539/353957.terrain new file mode 100644 index 000000000..369aca871 Binary files /dev/null and b/public/terrain/19/858539/353957.terrain differ diff --git a/public/terrain/19/858539/353958.terrain b/public/terrain/19/858539/353958.terrain new file mode 100644 index 000000000..7338921c2 Binary files /dev/null and b/public/terrain/19/858539/353958.terrain differ diff --git a/public/terrain/19/858539/353959.terrain b/public/terrain/19/858539/353959.terrain new file mode 100644 index 000000000..501d5d0fd Binary files /dev/null and b/public/terrain/19/858539/353959.terrain differ diff --git a/public/terrain/19/858539/353960.terrain b/public/terrain/19/858539/353960.terrain new file mode 100644 index 000000000..b86c294b4 Binary files /dev/null and b/public/terrain/19/858539/353960.terrain differ diff --git a/public/terrain/19/858539/353961.terrain b/public/terrain/19/858539/353961.terrain new file mode 100644 index 000000000..1bb050c94 Binary files /dev/null and b/public/terrain/19/858539/353961.terrain differ diff --git a/public/terrain/19/858539/353962.terrain b/public/terrain/19/858539/353962.terrain new file mode 100644 index 000000000..22d998206 Binary files /dev/null and b/public/terrain/19/858539/353962.terrain differ diff --git a/public/terrain/19/858539/353963.terrain b/public/terrain/19/858539/353963.terrain new file mode 100644 index 000000000..966de6638 Binary files /dev/null and b/public/terrain/19/858539/353963.terrain differ diff --git a/public/terrain/19/858539/353964.terrain b/public/terrain/19/858539/353964.terrain new file mode 100644 index 000000000..2ba83f070 Binary files /dev/null and b/public/terrain/19/858539/353964.terrain differ diff --git a/public/terrain/19/858539/353965.terrain b/public/terrain/19/858539/353965.terrain new file mode 100644 index 000000000..71113e9f1 Binary files /dev/null and b/public/terrain/19/858539/353965.terrain differ diff --git a/public/terrain/19/858539/353966.terrain b/public/terrain/19/858539/353966.terrain new file mode 100644 index 000000000..93cd54780 Binary files /dev/null and b/public/terrain/19/858539/353966.terrain differ diff --git a/public/terrain/19/858539/353967.terrain b/public/terrain/19/858539/353967.terrain new file mode 100644 index 000000000..c6a7410b8 Binary files /dev/null and b/public/terrain/19/858539/353967.terrain differ diff --git a/public/terrain/19/858539/353968.terrain b/public/terrain/19/858539/353968.terrain new file mode 100644 index 000000000..d51d040ff Binary files /dev/null and b/public/terrain/19/858539/353968.terrain differ diff --git a/public/terrain/19/858539/353969.terrain b/public/terrain/19/858539/353969.terrain new file mode 100644 index 000000000..03452c198 Binary files /dev/null and b/public/terrain/19/858539/353969.terrain differ diff --git a/public/terrain/19/858539/353970.terrain b/public/terrain/19/858539/353970.terrain new file mode 100644 index 000000000..a9af8f565 Binary files /dev/null and b/public/terrain/19/858539/353970.terrain differ diff --git a/public/terrain/19/858539/353971.terrain b/public/terrain/19/858539/353971.terrain new file mode 100644 index 000000000..a2aaa81c5 Binary files /dev/null and b/public/terrain/19/858539/353971.terrain differ diff --git a/public/terrain/19/858539/353972.terrain b/public/terrain/19/858539/353972.terrain new file mode 100644 index 000000000..c5b39fc4d Binary files /dev/null and b/public/terrain/19/858539/353972.terrain differ diff --git a/public/terrain/19/858539/353973.terrain b/public/terrain/19/858539/353973.terrain new file mode 100644 index 000000000..4784fb428 Binary files /dev/null and b/public/terrain/19/858539/353973.terrain differ diff --git a/public/terrain/19/858539/353974.terrain b/public/terrain/19/858539/353974.terrain new file mode 100644 index 000000000..5d0c53e1f Binary files /dev/null and b/public/terrain/19/858539/353974.terrain differ diff --git a/public/terrain/19/858539/353975.terrain b/public/terrain/19/858539/353975.terrain new file mode 100644 index 000000000..429533609 Binary files /dev/null and b/public/terrain/19/858539/353975.terrain differ diff --git a/public/terrain/19/858539/353976.terrain b/public/terrain/19/858539/353976.terrain new file mode 100644 index 000000000..b8909f7f9 Binary files /dev/null and b/public/terrain/19/858539/353976.terrain differ diff --git a/public/terrain/19/858539/353977.terrain b/public/terrain/19/858539/353977.terrain new file mode 100644 index 000000000..9c2020fbe Binary files /dev/null and b/public/terrain/19/858539/353977.terrain differ diff --git a/public/terrain/19/858539/353978.terrain b/public/terrain/19/858539/353978.terrain new file mode 100644 index 000000000..0526b2a8a Binary files /dev/null and b/public/terrain/19/858539/353978.terrain differ diff --git a/public/terrain/19/858539/353979.terrain b/public/terrain/19/858539/353979.terrain new file mode 100644 index 000000000..39fbc86ab Binary files /dev/null and b/public/terrain/19/858539/353979.terrain differ diff --git a/public/terrain/19/858539/353980.terrain b/public/terrain/19/858539/353980.terrain new file mode 100644 index 000000000..f66fd79ed Binary files /dev/null and b/public/terrain/19/858539/353980.terrain differ diff --git a/public/terrain/19/858539/353981.terrain b/public/terrain/19/858539/353981.terrain new file mode 100644 index 000000000..56b1fd996 Binary files /dev/null and b/public/terrain/19/858539/353981.terrain differ diff --git a/public/terrain/19/858539/353982.terrain b/public/terrain/19/858539/353982.terrain new file mode 100644 index 000000000..3494c34d2 Binary files /dev/null and b/public/terrain/19/858539/353982.terrain differ diff --git a/public/terrain/19/858539/353983.terrain b/public/terrain/19/858539/353983.terrain new file mode 100644 index 000000000..6c276c752 Binary files /dev/null and b/public/terrain/19/858539/353983.terrain differ diff --git a/public/terrain/19/858539/353984.terrain b/public/terrain/19/858539/353984.terrain new file mode 100644 index 000000000..f34218543 Binary files /dev/null and b/public/terrain/19/858539/353984.terrain differ diff --git a/public/terrain/19/858539/353985.terrain b/public/terrain/19/858539/353985.terrain new file mode 100644 index 000000000..530e58e07 Binary files /dev/null and b/public/terrain/19/858539/353985.terrain differ diff --git a/public/terrain/19/858539/353986.terrain b/public/terrain/19/858539/353986.terrain new file mode 100644 index 000000000..b347fc43e Binary files /dev/null and b/public/terrain/19/858539/353986.terrain differ diff --git a/public/terrain/19/858539/353987.terrain b/public/terrain/19/858539/353987.terrain new file mode 100644 index 000000000..b31e5ecf2 Binary files /dev/null and b/public/terrain/19/858539/353987.terrain differ diff --git a/public/terrain/19/858539/353988.terrain b/public/terrain/19/858539/353988.terrain new file mode 100644 index 000000000..9ab40a649 Binary files /dev/null and b/public/terrain/19/858539/353988.terrain differ diff --git a/public/terrain/19/858539/353989.terrain b/public/terrain/19/858539/353989.terrain new file mode 100644 index 000000000..8cdbc1764 Binary files /dev/null and b/public/terrain/19/858539/353989.terrain differ diff --git a/public/terrain/19/858539/353990.terrain b/public/terrain/19/858539/353990.terrain new file mode 100644 index 000000000..0e0448fff Binary files /dev/null and b/public/terrain/19/858539/353990.terrain differ diff --git a/public/terrain/19/858539/353991.terrain b/public/terrain/19/858539/353991.terrain new file mode 100644 index 000000000..097292b25 Binary files /dev/null and b/public/terrain/19/858539/353991.terrain differ diff --git a/public/terrain/19/858539/353992.terrain b/public/terrain/19/858539/353992.terrain new file mode 100644 index 000000000..d484671e2 Binary files /dev/null and b/public/terrain/19/858539/353992.terrain differ diff --git a/public/terrain/19/858539/353993.terrain b/public/terrain/19/858539/353993.terrain new file mode 100644 index 000000000..d1df94124 Binary files /dev/null and b/public/terrain/19/858539/353993.terrain differ diff --git a/public/terrain/19/858539/353994.terrain b/public/terrain/19/858539/353994.terrain new file mode 100644 index 000000000..8db610ed8 Binary files /dev/null and b/public/terrain/19/858539/353994.terrain differ diff --git a/public/terrain/19/858539/353995.terrain b/public/terrain/19/858539/353995.terrain new file mode 100644 index 000000000..c03b4bc1c Binary files /dev/null and b/public/terrain/19/858539/353995.terrain differ diff --git a/public/terrain/19/858539/353996.terrain b/public/terrain/19/858539/353996.terrain new file mode 100644 index 000000000..9f0693a26 Binary files /dev/null and b/public/terrain/19/858539/353996.terrain differ diff --git a/public/terrain/19/858539/353997.terrain b/public/terrain/19/858539/353997.terrain new file mode 100644 index 000000000..36080a8d3 Binary files /dev/null and b/public/terrain/19/858539/353997.terrain differ diff --git a/public/terrain/19/858539/353998.terrain b/public/terrain/19/858539/353998.terrain new file mode 100644 index 000000000..51ed2fb39 Binary files /dev/null and b/public/terrain/19/858539/353998.terrain differ diff --git a/public/terrain/19/858539/353999.terrain b/public/terrain/19/858539/353999.terrain new file mode 100644 index 000000000..0d131c4dc Binary files /dev/null and b/public/terrain/19/858539/353999.terrain differ diff --git a/public/terrain/19/858539/354000.terrain b/public/terrain/19/858539/354000.terrain new file mode 100644 index 000000000..651596011 Binary files /dev/null and b/public/terrain/19/858539/354000.terrain differ diff --git a/public/terrain/19/858539/354001.terrain b/public/terrain/19/858539/354001.terrain new file mode 100644 index 000000000..091688e02 Binary files /dev/null and b/public/terrain/19/858539/354001.terrain differ diff --git a/public/terrain/19/858539/354002.terrain b/public/terrain/19/858539/354002.terrain new file mode 100644 index 000000000..6de385cdc Binary files /dev/null and b/public/terrain/19/858539/354002.terrain differ diff --git a/public/terrain/19/858539/354003.terrain b/public/terrain/19/858539/354003.terrain new file mode 100644 index 000000000..50968a621 Binary files /dev/null and b/public/terrain/19/858539/354003.terrain differ diff --git a/public/terrain/19/858539/354004.terrain b/public/terrain/19/858539/354004.terrain new file mode 100644 index 000000000..4a9681aef Binary files /dev/null and b/public/terrain/19/858539/354004.terrain differ diff --git a/public/terrain/19/858539/354005.terrain b/public/terrain/19/858539/354005.terrain new file mode 100644 index 000000000..8808f65d4 Binary files /dev/null and b/public/terrain/19/858539/354005.terrain differ diff --git a/public/terrain/19/858539/354006.terrain b/public/terrain/19/858539/354006.terrain new file mode 100644 index 000000000..60fb111e3 Binary files /dev/null and b/public/terrain/19/858539/354006.terrain differ diff --git a/public/terrain/19/858539/354007.terrain b/public/terrain/19/858539/354007.terrain new file mode 100644 index 000000000..19aff7b7e Binary files /dev/null and b/public/terrain/19/858539/354007.terrain differ diff --git a/public/terrain/19/858539/354008.terrain b/public/terrain/19/858539/354008.terrain new file mode 100644 index 000000000..5547965ea Binary files /dev/null and b/public/terrain/19/858539/354008.terrain differ diff --git a/public/terrain/19/858539/354009.terrain b/public/terrain/19/858539/354009.terrain new file mode 100644 index 000000000..27cef062d Binary files /dev/null and b/public/terrain/19/858539/354009.terrain differ diff --git a/public/terrain/19/858539/354010.terrain b/public/terrain/19/858539/354010.terrain new file mode 100644 index 000000000..6879d5dc0 Binary files /dev/null and b/public/terrain/19/858539/354010.terrain differ diff --git a/public/terrain/19/858539/354011.terrain b/public/terrain/19/858539/354011.terrain new file mode 100644 index 000000000..fa9a38490 Binary files /dev/null and b/public/terrain/19/858539/354011.terrain differ diff --git a/public/terrain/19/858539/354012.terrain b/public/terrain/19/858539/354012.terrain new file mode 100644 index 000000000..8e6b9aa20 Binary files /dev/null and b/public/terrain/19/858539/354012.terrain differ diff --git a/public/terrain/19/858539/354013.terrain b/public/terrain/19/858539/354013.terrain new file mode 100644 index 000000000..409fa7ee9 Binary files /dev/null and b/public/terrain/19/858539/354013.terrain differ diff --git a/public/terrain/19/858539/354014.terrain b/public/terrain/19/858539/354014.terrain new file mode 100644 index 000000000..e926691b3 Binary files /dev/null and b/public/terrain/19/858539/354014.terrain differ diff --git a/public/terrain/19/858539/354015.terrain b/public/terrain/19/858539/354015.terrain new file mode 100644 index 000000000..2b9fdd573 Binary files /dev/null and b/public/terrain/19/858539/354015.terrain differ diff --git a/public/terrain/19/858539/354016.terrain b/public/terrain/19/858539/354016.terrain new file mode 100644 index 000000000..2212cb3f3 Binary files /dev/null and b/public/terrain/19/858539/354016.terrain differ diff --git a/public/terrain/19/858539/354017.terrain b/public/terrain/19/858539/354017.terrain new file mode 100644 index 000000000..7dc7d639a Binary files /dev/null and b/public/terrain/19/858539/354017.terrain differ diff --git a/public/terrain/19/858539/354018.terrain b/public/terrain/19/858539/354018.terrain new file mode 100644 index 000000000..457f18ca3 Binary files /dev/null and b/public/terrain/19/858539/354018.terrain differ diff --git a/public/terrain/19/858539/354019.terrain b/public/terrain/19/858539/354019.terrain new file mode 100644 index 000000000..c6639f73e Binary files /dev/null and b/public/terrain/19/858539/354019.terrain differ diff --git a/public/terrain/19/858539/354020.terrain b/public/terrain/19/858539/354020.terrain new file mode 100644 index 000000000..97f8eeaaa Binary files /dev/null and b/public/terrain/19/858539/354020.terrain differ diff --git a/public/terrain/19/858539/354021.terrain b/public/terrain/19/858539/354021.terrain new file mode 100644 index 000000000..f6134d0fa Binary files /dev/null and b/public/terrain/19/858539/354021.terrain differ diff --git a/public/terrain/19/858539/354022.terrain b/public/terrain/19/858539/354022.terrain new file mode 100644 index 000000000..70a3283b5 Binary files /dev/null and b/public/terrain/19/858539/354022.terrain differ diff --git a/public/terrain/19/858539/354023.terrain b/public/terrain/19/858539/354023.terrain new file mode 100644 index 000000000..d84465c28 Binary files /dev/null and b/public/terrain/19/858539/354023.terrain differ diff --git a/public/terrain/19/858539/354024.terrain b/public/terrain/19/858539/354024.terrain new file mode 100644 index 000000000..afe2091d7 Binary files /dev/null and b/public/terrain/19/858539/354024.terrain differ diff --git a/public/terrain/19/858539/354025.terrain b/public/terrain/19/858539/354025.terrain new file mode 100644 index 000000000..50e96cc44 Binary files /dev/null and b/public/terrain/19/858539/354025.terrain differ diff --git a/public/terrain/19/858539/354026.terrain b/public/terrain/19/858539/354026.terrain new file mode 100644 index 000000000..8d39345b8 Binary files /dev/null and b/public/terrain/19/858539/354026.terrain differ diff --git a/public/terrain/19/858539/354027.terrain b/public/terrain/19/858539/354027.terrain new file mode 100644 index 000000000..08239ad58 Binary files /dev/null and b/public/terrain/19/858539/354027.terrain differ diff --git a/public/terrain/19/858539/354028.terrain b/public/terrain/19/858539/354028.terrain new file mode 100644 index 000000000..46536c470 Binary files /dev/null and b/public/terrain/19/858539/354028.terrain differ diff --git a/public/terrain/19/858539/354029.terrain b/public/terrain/19/858539/354029.terrain new file mode 100644 index 000000000..ff8fab855 Binary files /dev/null and b/public/terrain/19/858539/354029.terrain differ diff --git a/public/terrain/19/858539/354030.terrain b/public/terrain/19/858539/354030.terrain new file mode 100644 index 000000000..b02e30e3d Binary files /dev/null and b/public/terrain/19/858539/354030.terrain differ diff --git a/public/terrain/19/858539/354031.terrain b/public/terrain/19/858539/354031.terrain new file mode 100644 index 000000000..18b70f8ac Binary files /dev/null and b/public/terrain/19/858539/354031.terrain differ diff --git a/public/terrain/19/858539/354032.terrain b/public/terrain/19/858539/354032.terrain new file mode 100644 index 000000000..1deab6123 Binary files /dev/null and b/public/terrain/19/858539/354032.terrain differ diff --git a/public/terrain/19/858539/354033.terrain b/public/terrain/19/858539/354033.terrain new file mode 100644 index 000000000..403d9847a Binary files /dev/null and b/public/terrain/19/858539/354033.terrain differ diff --git a/public/terrain/19/858539/354034.terrain b/public/terrain/19/858539/354034.terrain new file mode 100644 index 000000000..e2fccc51b Binary files /dev/null and b/public/terrain/19/858539/354034.terrain differ diff --git a/public/terrain/19/858539/354035.terrain b/public/terrain/19/858539/354035.terrain new file mode 100644 index 000000000..9856e0f45 Binary files /dev/null and b/public/terrain/19/858539/354035.terrain differ diff --git a/public/terrain/19/858539/354036.terrain b/public/terrain/19/858539/354036.terrain new file mode 100644 index 000000000..377a66b99 Binary files /dev/null and b/public/terrain/19/858539/354036.terrain differ diff --git a/public/terrain/19/858539/354037.terrain b/public/terrain/19/858539/354037.terrain new file mode 100644 index 000000000..ea9f4748c Binary files /dev/null and b/public/terrain/19/858539/354037.terrain differ diff --git a/public/terrain/19/858539/354038.terrain b/public/terrain/19/858539/354038.terrain new file mode 100644 index 000000000..7b3bd9896 Binary files /dev/null and b/public/terrain/19/858539/354038.terrain differ diff --git a/public/terrain/19/858539/354039.terrain b/public/terrain/19/858539/354039.terrain new file mode 100644 index 000000000..24ecddfb1 Binary files /dev/null and b/public/terrain/19/858539/354039.terrain differ diff --git a/public/terrain/19/858539/354040.terrain b/public/terrain/19/858539/354040.terrain new file mode 100644 index 000000000..570138ce6 Binary files /dev/null and b/public/terrain/19/858539/354040.terrain differ diff --git a/public/terrain/19/858539/354041.terrain b/public/terrain/19/858539/354041.terrain new file mode 100644 index 000000000..3c494566c Binary files /dev/null and b/public/terrain/19/858539/354041.terrain differ diff --git a/public/terrain/19/858539/354042.terrain b/public/terrain/19/858539/354042.terrain new file mode 100644 index 000000000..b7d011f5a Binary files /dev/null and b/public/terrain/19/858539/354042.terrain differ diff --git a/public/terrain/19/858539/354043.terrain b/public/terrain/19/858539/354043.terrain new file mode 100644 index 000000000..a72d7d794 Binary files /dev/null and b/public/terrain/19/858539/354043.terrain differ diff --git a/public/terrain/19/858539/354044.terrain b/public/terrain/19/858539/354044.terrain new file mode 100644 index 000000000..6bad9e01a Binary files /dev/null and b/public/terrain/19/858539/354044.terrain differ diff --git a/public/terrain/19/858539/354045.terrain b/public/terrain/19/858539/354045.terrain new file mode 100644 index 000000000..96ddb05dd Binary files /dev/null and b/public/terrain/19/858539/354045.terrain differ diff --git a/public/terrain/19/858539/354046.terrain b/public/terrain/19/858539/354046.terrain new file mode 100644 index 000000000..c1c131e00 Binary files /dev/null and b/public/terrain/19/858539/354046.terrain differ diff --git a/public/terrain/19/858539/354047.terrain b/public/terrain/19/858539/354047.terrain new file mode 100644 index 000000000..7e6203392 Binary files /dev/null and b/public/terrain/19/858539/354047.terrain differ diff --git a/public/terrain/19/858539/354048.terrain b/public/terrain/19/858539/354048.terrain new file mode 100644 index 000000000..6aa1eeb23 Binary files /dev/null and b/public/terrain/19/858539/354048.terrain differ diff --git a/public/terrain/19/858539/354049.terrain b/public/terrain/19/858539/354049.terrain new file mode 100644 index 000000000..87ea3f3bb Binary files /dev/null and b/public/terrain/19/858539/354049.terrain differ diff --git a/public/terrain/19/858539/354050.terrain b/public/terrain/19/858539/354050.terrain new file mode 100644 index 000000000..8de1c1346 Binary files /dev/null and b/public/terrain/19/858539/354050.terrain differ diff --git a/public/terrain/19/858539/354051.terrain b/public/terrain/19/858539/354051.terrain new file mode 100644 index 000000000..0256f13ce Binary files /dev/null and b/public/terrain/19/858539/354051.terrain differ diff --git a/public/terrain/19/858539/354052.terrain b/public/terrain/19/858539/354052.terrain new file mode 100644 index 000000000..bc43f8488 Binary files /dev/null and b/public/terrain/19/858539/354052.terrain differ diff --git a/public/terrain/19/858539/354053.terrain b/public/terrain/19/858539/354053.terrain new file mode 100644 index 000000000..b126a3ed4 Binary files /dev/null and b/public/terrain/19/858539/354053.terrain differ diff --git a/public/terrain/19/858539/354054.terrain b/public/terrain/19/858539/354054.terrain new file mode 100644 index 000000000..373a8028a Binary files /dev/null and b/public/terrain/19/858539/354054.terrain differ diff --git a/public/terrain/19/858539/354055.terrain b/public/terrain/19/858539/354055.terrain new file mode 100644 index 000000000..344134ad7 Binary files /dev/null and b/public/terrain/19/858539/354055.terrain differ diff --git a/public/terrain/19/858539/354056.terrain b/public/terrain/19/858539/354056.terrain new file mode 100644 index 000000000..579869f70 Binary files /dev/null and b/public/terrain/19/858539/354056.terrain differ diff --git a/public/terrain/19/858539/354057.terrain b/public/terrain/19/858539/354057.terrain new file mode 100644 index 000000000..27b98018d Binary files /dev/null and b/public/terrain/19/858539/354057.terrain differ diff --git a/public/terrain/19/858539/354058.terrain b/public/terrain/19/858539/354058.terrain new file mode 100644 index 000000000..e1b943adb Binary files /dev/null and b/public/terrain/19/858539/354058.terrain differ diff --git a/public/terrain/19/858539/354059.terrain b/public/terrain/19/858539/354059.terrain new file mode 100644 index 000000000..db57941fb Binary files /dev/null and b/public/terrain/19/858539/354059.terrain differ diff --git a/public/terrain/19/858540/353743.terrain b/public/terrain/19/858540/353743.terrain new file mode 100644 index 000000000..64857698a Binary files /dev/null and b/public/terrain/19/858540/353743.terrain differ diff --git a/public/terrain/19/858540/353744.terrain b/public/terrain/19/858540/353744.terrain new file mode 100644 index 000000000..e327db7e9 Binary files /dev/null and b/public/terrain/19/858540/353744.terrain differ diff --git a/public/terrain/19/858540/353745.terrain b/public/terrain/19/858540/353745.terrain new file mode 100644 index 000000000..8c080ea6a Binary files /dev/null and b/public/terrain/19/858540/353745.terrain differ diff --git a/public/terrain/19/858540/353746.terrain b/public/terrain/19/858540/353746.terrain new file mode 100644 index 000000000..0c4c8d5a7 Binary files /dev/null and b/public/terrain/19/858540/353746.terrain differ diff --git a/public/terrain/19/858540/353747.terrain b/public/terrain/19/858540/353747.terrain new file mode 100644 index 000000000..5f1801493 Binary files /dev/null and b/public/terrain/19/858540/353747.terrain differ diff --git a/public/terrain/19/858540/353748.terrain b/public/terrain/19/858540/353748.terrain new file mode 100644 index 000000000..98d3281e5 Binary files /dev/null and b/public/terrain/19/858540/353748.terrain differ diff --git a/public/terrain/19/858540/353749.terrain b/public/terrain/19/858540/353749.terrain new file mode 100644 index 000000000..253376f85 Binary files /dev/null and b/public/terrain/19/858540/353749.terrain differ diff --git a/public/terrain/19/858540/353750.terrain b/public/terrain/19/858540/353750.terrain new file mode 100644 index 000000000..445e070fb Binary files /dev/null and b/public/terrain/19/858540/353750.terrain differ diff --git a/public/terrain/19/858540/353751.terrain b/public/terrain/19/858540/353751.terrain new file mode 100644 index 000000000..7fc5ba335 Binary files /dev/null and b/public/terrain/19/858540/353751.terrain differ diff --git a/public/terrain/19/858540/353752.terrain b/public/terrain/19/858540/353752.terrain new file mode 100644 index 000000000..1a9e51c2d Binary files /dev/null and b/public/terrain/19/858540/353752.terrain differ diff --git a/public/terrain/19/858540/353753.terrain b/public/terrain/19/858540/353753.terrain new file mode 100644 index 000000000..00f9b44af Binary files /dev/null and b/public/terrain/19/858540/353753.terrain differ diff --git a/public/terrain/19/858540/353754.terrain b/public/terrain/19/858540/353754.terrain new file mode 100644 index 000000000..f71d78735 Binary files /dev/null and b/public/terrain/19/858540/353754.terrain differ diff --git a/public/terrain/19/858540/353755.terrain b/public/terrain/19/858540/353755.terrain new file mode 100644 index 000000000..14adbe640 Binary files /dev/null and b/public/terrain/19/858540/353755.terrain differ diff --git a/public/terrain/19/858540/353756.terrain b/public/terrain/19/858540/353756.terrain new file mode 100644 index 000000000..5bc84e53b Binary files /dev/null and b/public/terrain/19/858540/353756.terrain differ diff --git a/public/terrain/19/858540/353757.terrain b/public/terrain/19/858540/353757.terrain new file mode 100644 index 000000000..a8b3a7e5e Binary files /dev/null and b/public/terrain/19/858540/353757.terrain differ diff --git a/public/terrain/19/858540/353758.terrain b/public/terrain/19/858540/353758.terrain new file mode 100644 index 000000000..43e229217 Binary files /dev/null and b/public/terrain/19/858540/353758.terrain differ diff --git a/public/terrain/19/858540/353759.terrain b/public/terrain/19/858540/353759.terrain new file mode 100644 index 000000000..546492bbe Binary files /dev/null and b/public/terrain/19/858540/353759.terrain differ diff --git a/public/terrain/19/858540/353760.terrain b/public/terrain/19/858540/353760.terrain new file mode 100644 index 000000000..5f580f7c2 Binary files /dev/null and b/public/terrain/19/858540/353760.terrain differ diff --git a/public/terrain/19/858540/353761.terrain b/public/terrain/19/858540/353761.terrain new file mode 100644 index 000000000..40ccec34f Binary files /dev/null and b/public/terrain/19/858540/353761.terrain differ diff --git a/public/terrain/19/858540/353762.terrain b/public/terrain/19/858540/353762.terrain new file mode 100644 index 000000000..645d75524 Binary files /dev/null and b/public/terrain/19/858540/353762.terrain differ diff --git a/public/terrain/19/858540/353763.terrain b/public/terrain/19/858540/353763.terrain new file mode 100644 index 000000000..1678b01a3 Binary files /dev/null and b/public/terrain/19/858540/353763.terrain differ diff --git a/public/terrain/19/858540/353764.terrain b/public/terrain/19/858540/353764.terrain new file mode 100644 index 000000000..89abafb44 Binary files /dev/null and b/public/terrain/19/858540/353764.terrain differ diff --git a/public/terrain/19/858540/353765.terrain b/public/terrain/19/858540/353765.terrain new file mode 100644 index 000000000..125e0a7fb Binary files /dev/null and b/public/terrain/19/858540/353765.terrain differ diff --git a/public/terrain/19/858540/353766.terrain b/public/terrain/19/858540/353766.terrain new file mode 100644 index 000000000..6f80c1eae Binary files /dev/null and b/public/terrain/19/858540/353766.terrain differ diff --git a/public/terrain/19/858540/353767.terrain b/public/terrain/19/858540/353767.terrain new file mode 100644 index 000000000..2cecefde9 Binary files /dev/null and b/public/terrain/19/858540/353767.terrain differ diff --git a/public/terrain/19/858540/353768.terrain b/public/terrain/19/858540/353768.terrain new file mode 100644 index 000000000..a95a4b62b Binary files /dev/null and b/public/terrain/19/858540/353768.terrain differ diff --git a/public/terrain/19/858540/353769.terrain b/public/terrain/19/858540/353769.terrain new file mode 100644 index 000000000..dc63012ab Binary files /dev/null and b/public/terrain/19/858540/353769.terrain differ diff --git a/public/terrain/19/858540/353770.terrain b/public/terrain/19/858540/353770.terrain new file mode 100644 index 000000000..e1ebe2fcd Binary files /dev/null and b/public/terrain/19/858540/353770.terrain differ diff --git a/public/terrain/19/858540/353771.terrain b/public/terrain/19/858540/353771.terrain new file mode 100644 index 000000000..241e82518 Binary files /dev/null and b/public/terrain/19/858540/353771.terrain differ diff --git a/public/terrain/19/858540/353772.terrain b/public/terrain/19/858540/353772.terrain new file mode 100644 index 000000000..18c9dbaaa Binary files /dev/null and b/public/terrain/19/858540/353772.terrain differ diff --git a/public/terrain/19/858540/353773.terrain b/public/terrain/19/858540/353773.terrain new file mode 100644 index 000000000..387a6d477 Binary files /dev/null and b/public/terrain/19/858540/353773.terrain differ diff --git a/public/terrain/19/858540/353774.terrain b/public/terrain/19/858540/353774.terrain new file mode 100644 index 000000000..1b0eebb92 Binary files /dev/null and b/public/terrain/19/858540/353774.terrain differ diff --git a/public/terrain/19/858540/353775.terrain b/public/terrain/19/858540/353775.terrain new file mode 100644 index 000000000..7aad3e2ca Binary files /dev/null and b/public/terrain/19/858540/353775.terrain differ diff --git a/public/terrain/19/858540/353776.terrain b/public/terrain/19/858540/353776.terrain new file mode 100644 index 000000000..dca3c8b98 Binary files /dev/null and b/public/terrain/19/858540/353776.terrain differ diff --git a/public/terrain/19/858540/353777.terrain b/public/terrain/19/858540/353777.terrain new file mode 100644 index 000000000..f91158b86 Binary files /dev/null and b/public/terrain/19/858540/353777.terrain differ diff --git a/public/terrain/19/858540/353778.terrain b/public/terrain/19/858540/353778.terrain new file mode 100644 index 000000000..551b34b97 Binary files /dev/null and b/public/terrain/19/858540/353778.terrain differ diff --git a/public/terrain/19/858540/353779.terrain b/public/terrain/19/858540/353779.terrain new file mode 100644 index 000000000..45c4b1c26 Binary files /dev/null and b/public/terrain/19/858540/353779.terrain differ diff --git a/public/terrain/19/858540/353780.terrain b/public/terrain/19/858540/353780.terrain new file mode 100644 index 000000000..0e1c8c770 Binary files /dev/null and b/public/terrain/19/858540/353780.terrain differ diff --git a/public/terrain/19/858540/353781.terrain b/public/terrain/19/858540/353781.terrain new file mode 100644 index 000000000..e648a131d Binary files /dev/null and b/public/terrain/19/858540/353781.terrain differ diff --git a/public/terrain/19/858540/353782.terrain b/public/terrain/19/858540/353782.terrain new file mode 100644 index 000000000..c10d88b41 Binary files /dev/null and b/public/terrain/19/858540/353782.terrain differ diff --git a/public/terrain/19/858540/353783.terrain b/public/terrain/19/858540/353783.terrain new file mode 100644 index 000000000..d9bb5cb82 Binary files /dev/null and b/public/terrain/19/858540/353783.terrain differ diff --git a/public/terrain/19/858540/353784.terrain b/public/terrain/19/858540/353784.terrain new file mode 100644 index 000000000..b4b9423c6 Binary files /dev/null and b/public/terrain/19/858540/353784.terrain differ diff --git a/public/terrain/19/858540/353785.terrain b/public/terrain/19/858540/353785.terrain new file mode 100644 index 000000000..09bc1b216 Binary files /dev/null and b/public/terrain/19/858540/353785.terrain differ diff --git a/public/terrain/19/858540/353786.terrain b/public/terrain/19/858540/353786.terrain new file mode 100644 index 000000000..9c1668f51 Binary files /dev/null and b/public/terrain/19/858540/353786.terrain differ diff --git a/public/terrain/19/858540/353787.terrain b/public/terrain/19/858540/353787.terrain new file mode 100644 index 000000000..121b83640 Binary files /dev/null and b/public/terrain/19/858540/353787.terrain differ diff --git a/public/terrain/19/858540/353788.terrain b/public/terrain/19/858540/353788.terrain new file mode 100644 index 000000000..914019db3 Binary files /dev/null and b/public/terrain/19/858540/353788.terrain differ diff --git a/public/terrain/19/858540/353789.terrain b/public/terrain/19/858540/353789.terrain new file mode 100644 index 000000000..385f1360a Binary files /dev/null and b/public/terrain/19/858540/353789.terrain differ diff --git a/public/terrain/19/858540/353790.terrain b/public/terrain/19/858540/353790.terrain new file mode 100644 index 000000000..e75d2fbf9 Binary files /dev/null and b/public/terrain/19/858540/353790.terrain differ diff --git a/public/terrain/19/858540/353791.terrain b/public/terrain/19/858540/353791.terrain new file mode 100644 index 000000000..006194138 Binary files /dev/null and b/public/terrain/19/858540/353791.terrain differ diff --git a/public/terrain/19/858540/353792.terrain b/public/terrain/19/858540/353792.terrain new file mode 100644 index 000000000..c33a88b56 Binary files /dev/null and b/public/terrain/19/858540/353792.terrain differ diff --git a/public/terrain/19/858540/353793.terrain b/public/terrain/19/858540/353793.terrain new file mode 100644 index 000000000..641ef3969 Binary files /dev/null and b/public/terrain/19/858540/353793.terrain differ diff --git a/public/terrain/19/858540/353794.terrain b/public/terrain/19/858540/353794.terrain new file mode 100644 index 000000000..f8824e925 Binary files /dev/null and b/public/terrain/19/858540/353794.terrain differ diff --git a/public/terrain/19/858540/353795.terrain b/public/terrain/19/858540/353795.terrain new file mode 100644 index 000000000..06b3b3c27 Binary files /dev/null and b/public/terrain/19/858540/353795.terrain differ diff --git a/public/terrain/19/858540/353796.terrain b/public/terrain/19/858540/353796.terrain new file mode 100644 index 000000000..afb17bde9 Binary files /dev/null and b/public/terrain/19/858540/353796.terrain differ diff --git a/public/terrain/19/858540/353797.terrain b/public/terrain/19/858540/353797.terrain new file mode 100644 index 000000000..075317b3c Binary files /dev/null and b/public/terrain/19/858540/353797.terrain differ diff --git a/public/terrain/19/858540/353798.terrain b/public/terrain/19/858540/353798.terrain new file mode 100644 index 000000000..55b3c2d3a Binary files /dev/null and b/public/terrain/19/858540/353798.terrain differ diff --git a/public/terrain/19/858540/353799.terrain b/public/terrain/19/858540/353799.terrain new file mode 100644 index 000000000..00a0bfad5 Binary files /dev/null and b/public/terrain/19/858540/353799.terrain differ diff --git a/public/terrain/19/858540/353800.terrain b/public/terrain/19/858540/353800.terrain new file mode 100644 index 000000000..4334ee178 Binary files /dev/null and b/public/terrain/19/858540/353800.terrain differ diff --git a/public/terrain/19/858540/353801.terrain b/public/terrain/19/858540/353801.terrain new file mode 100644 index 000000000..56a2165c7 Binary files /dev/null and b/public/terrain/19/858540/353801.terrain differ diff --git a/public/terrain/19/858540/353802.terrain b/public/terrain/19/858540/353802.terrain new file mode 100644 index 000000000..2971d7475 Binary files /dev/null and b/public/terrain/19/858540/353802.terrain differ diff --git a/public/terrain/19/858540/353803.terrain b/public/terrain/19/858540/353803.terrain new file mode 100644 index 000000000..9c5b1f382 Binary files /dev/null and b/public/terrain/19/858540/353803.terrain differ diff --git a/public/terrain/19/858540/353804.terrain b/public/terrain/19/858540/353804.terrain new file mode 100644 index 000000000..7166aec0f Binary files /dev/null and b/public/terrain/19/858540/353804.terrain differ diff --git a/public/terrain/19/858540/353805.terrain b/public/terrain/19/858540/353805.terrain new file mode 100644 index 000000000..fd0faf6f9 Binary files /dev/null and b/public/terrain/19/858540/353805.terrain differ diff --git a/public/terrain/19/858540/353806.terrain b/public/terrain/19/858540/353806.terrain new file mode 100644 index 000000000..4af3fdb37 Binary files /dev/null and b/public/terrain/19/858540/353806.terrain differ diff --git a/public/terrain/19/858540/353807.terrain b/public/terrain/19/858540/353807.terrain new file mode 100644 index 000000000..918a9445e Binary files /dev/null and b/public/terrain/19/858540/353807.terrain differ diff --git a/public/terrain/19/858540/353808.terrain b/public/terrain/19/858540/353808.terrain new file mode 100644 index 000000000..9b48a8fd4 Binary files /dev/null and b/public/terrain/19/858540/353808.terrain differ diff --git a/public/terrain/19/858540/353809.terrain b/public/terrain/19/858540/353809.terrain new file mode 100644 index 000000000..33760abd4 Binary files /dev/null and b/public/terrain/19/858540/353809.terrain differ diff --git a/public/terrain/19/858540/353810.terrain b/public/terrain/19/858540/353810.terrain new file mode 100644 index 000000000..bf3480c17 Binary files /dev/null and b/public/terrain/19/858540/353810.terrain differ diff --git a/public/terrain/19/858540/353811.terrain b/public/terrain/19/858540/353811.terrain new file mode 100644 index 000000000..2c6e58ded Binary files /dev/null and b/public/terrain/19/858540/353811.terrain differ diff --git a/public/terrain/19/858540/353812.terrain b/public/terrain/19/858540/353812.terrain new file mode 100644 index 000000000..11755e4c5 Binary files /dev/null and b/public/terrain/19/858540/353812.terrain differ diff --git a/public/terrain/19/858540/353813.terrain b/public/terrain/19/858540/353813.terrain new file mode 100644 index 000000000..470b3a700 Binary files /dev/null and b/public/terrain/19/858540/353813.terrain differ diff --git a/public/terrain/19/858540/353814.terrain b/public/terrain/19/858540/353814.terrain new file mode 100644 index 000000000..6a66be801 Binary files /dev/null and b/public/terrain/19/858540/353814.terrain differ diff --git a/public/terrain/19/858540/353815.terrain b/public/terrain/19/858540/353815.terrain new file mode 100644 index 000000000..ec79f8b70 Binary files /dev/null and b/public/terrain/19/858540/353815.terrain differ diff --git a/public/terrain/19/858540/353816.terrain b/public/terrain/19/858540/353816.terrain new file mode 100644 index 000000000..f57a3a08c Binary files /dev/null and b/public/terrain/19/858540/353816.terrain differ diff --git a/public/terrain/19/858540/353817.terrain b/public/terrain/19/858540/353817.terrain new file mode 100644 index 000000000..7f8aeeec8 Binary files /dev/null and b/public/terrain/19/858540/353817.terrain differ diff --git a/public/terrain/19/858540/353818.terrain b/public/terrain/19/858540/353818.terrain new file mode 100644 index 000000000..b45a9b42d Binary files /dev/null and b/public/terrain/19/858540/353818.terrain differ diff --git a/public/terrain/19/858540/353819.terrain b/public/terrain/19/858540/353819.terrain new file mode 100644 index 000000000..736c4938e Binary files /dev/null and b/public/terrain/19/858540/353819.terrain differ diff --git a/public/terrain/19/858540/353820.terrain b/public/terrain/19/858540/353820.terrain new file mode 100644 index 000000000..b317b9194 Binary files /dev/null and b/public/terrain/19/858540/353820.terrain differ diff --git a/public/terrain/19/858540/353821.terrain b/public/terrain/19/858540/353821.terrain new file mode 100644 index 000000000..9e0b5ed56 Binary files /dev/null and b/public/terrain/19/858540/353821.terrain differ diff --git a/public/terrain/19/858540/353822.terrain b/public/terrain/19/858540/353822.terrain new file mode 100644 index 000000000..968285083 Binary files /dev/null and b/public/terrain/19/858540/353822.terrain differ diff --git a/public/terrain/19/858540/353823.terrain b/public/terrain/19/858540/353823.terrain new file mode 100644 index 000000000..c1c8652dc Binary files /dev/null and b/public/terrain/19/858540/353823.terrain differ diff --git a/public/terrain/19/858540/353824.terrain b/public/terrain/19/858540/353824.terrain new file mode 100644 index 000000000..29553cc01 Binary files /dev/null and b/public/terrain/19/858540/353824.terrain differ diff --git a/public/terrain/19/858540/353825.terrain b/public/terrain/19/858540/353825.terrain new file mode 100644 index 000000000..5ea8f4887 Binary files /dev/null and b/public/terrain/19/858540/353825.terrain differ diff --git a/public/terrain/19/858540/353826.terrain b/public/terrain/19/858540/353826.terrain new file mode 100644 index 000000000..efc2dea59 Binary files /dev/null and b/public/terrain/19/858540/353826.terrain differ diff --git a/public/terrain/19/858540/353827.terrain b/public/terrain/19/858540/353827.terrain new file mode 100644 index 000000000..7bcb7e06f Binary files /dev/null and b/public/terrain/19/858540/353827.terrain differ diff --git a/public/terrain/19/858540/353828.terrain b/public/terrain/19/858540/353828.terrain new file mode 100644 index 000000000..f179a2973 Binary files /dev/null and b/public/terrain/19/858540/353828.terrain differ diff --git a/public/terrain/19/858540/353829.terrain b/public/terrain/19/858540/353829.terrain new file mode 100644 index 000000000..3673ed2dd Binary files /dev/null and b/public/terrain/19/858540/353829.terrain differ diff --git a/public/terrain/19/858540/353830.terrain b/public/terrain/19/858540/353830.terrain new file mode 100644 index 000000000..0fd95071f Binary files /dev/null and b/public/terrain/19/858540/353830.terrain differ diff --git a/public/terrain/19/858540/353831.terrain b/public/terrain/19/858540/353831.terrain new file mode 100644 index 000000000..1fb16056d Binary files /dev/null and b/public/terrain/19/858540/353831.terrain differ diff --git a/public/terrain/19/858540/353832.terrain b/public/terrain/19/858540/353832.terrain new file mode 100644 index 000000000..fdadb2e9e Binary files /dev/null and b/public/terrain/19/858540/353832.terrain differ diff --git a/public/terrain/19/858540/353833.terrain b/public/terrain/19/858540/353833.terrain new file mode 100644 index 000000000..f49e7c244 Binary files /dev/null and b/public/terrain/19/858540/353833.terrain differ diff --git a/public/terrain/19/858540/353834.terrain b/public/terrain/19/858540/353834.terrain new file mode 100644 index 000000000..84960f4fb Binary files /dev/null and b/public/terrain/19/858540/353834.terrain differ diff --git a/public/terrain/19/858540/353835.terrain b/public/terrain/19/858540/353835.terrain new file mode 100644 index 000000000..fad3d6ec3 Binary files /dev/null and b/public/terrain/19/858540/353835.terrain differ diff --git a/public/terrain/19/858540/353836.terrain b/public/terrain/19/858540/353836.terrain new file mode 100644 index 000000000..2832d62f0 Binary files /dev/null and b/public/terrain/19/858540/353836.terrain differ diff --git a/public/terrain/19/858540/353837.terrain b/public/terrain/19/858540/353837.terrain new file mode 100644 index 000000000..c3d0de3a6 Binary files /dev/null and b/public/terrain/19/858540/353837.terrain differ diff --git a/public/terrain/19/858540/353838.terrain b/public/terrain/19/858540/353838.terrain new file mode 100644 index 000000000..7bdeffb4f Binary files /dev/null and b/public/terrain/19/858540/353838.terrain differ diff --git a/public/terrain/19/858540/353839.terrain b/public/terrain/19/858540/353839.terrain new file mode 100644 index 000000000..f963595b7 Binary files /dev/null and b/public/terrain/19/858540/353839.terrain differ diff --git a/public/terrain/19/858540/353840.terrain b/public/terrain/19/858540/353840.terrain new file mode 100644 index 000000000..e803650c6 Binary files /dev/null and b/public/terrain/19/858540/353840.terrain differ diff --git a/public/terrain/19/858540/353841.terrain b/public/terrain/19/858540/353841.terrain new file mode 100644 index 000000000..c2a906b60 Binary files /dev/null and b/public/terrain/19/858540/353841.terrain differ diff --git a/public/terrain/19/858540/353842.terrain b/public/terrain/19/858540/353842.terrain new file mode 100644 index 000000000..44ea00d14 Binary files /dev/null and b/public/terrain/19/858540/353842.terrain differ diff --git a/public/terrain/19/858540/353843.terrain b/public/terrain/19/858540/353843.terrain new file mode 100644 index 000000000..91e3f1253 Binary files /dev/null and b/public/terrain/19/858540/353843.terrain differ diff --git a/public/terrain/19/858540/353844.terrain b/public/terrain/19/858540/353844.terrain new file mode 100644 index 000000000..c87b911d4 Binary files /dev/null and b/public/terrain/19/858540/353844.terrain differ diff --git a/public/terrain/19/858540/353845.terrain b/public/terrain/19/858540/353845.terrain new file mode 100644 index 000000000..4c69c0f91 Binary files /dev/null and b/public/terrain/19/858540/353845.terrain differ diff --git a/public/terrain/19/858540/353846.terrain b/public/terrain/19/858540/353846.terrain new file mode 100644 index 000000000..13b57e3c6 Binary files /dev/null and b/public/terrain/19/858540/353846.terrain differ diff --git a/public/terrain/19/858540/353847.terrain b/public/terrain/19/858540/353847.terrain new file mode 100644 index 000000000..1e69acd6f Binary files /dev/null and b/public/terrain/19/858540/353847.terrain differ diff --git a/public/terrain/19/858540/353848.terrain b/public/terrain/19/858540/353848.terrain new file mode 100644 index 000000000..d1591f57d Binary files /dev/null and b/public/terrain/19/858540/353848.terrain differ diff --git a/public/terrain/19/858540/353849.terrain b/public/terrain/19/858540/353849.terrain new file mode 100644 index 000000000..9cebf0127 Binary files /dev/null and b/public/terrain/19/858540/353849.terrain differ diff --git a/public/terrain/19/858540/353850.terrain b/public/terrain/19/858540/353850.terrain new file mode 100644 index 000000000..814c851c5 Binary files /dev/null and b/public/terrain/19/858540/353850.terrain differ diff --git a/public/terrain/19/858540/353851.terrain b/public/terrain/19/858540/353851.terrain new file mode 100644 index 000000000..9965499be Binary files /dev/null and b/public/terrain/19/858540/353851.terrain differ diff --git a/public/terrain/19/858540/353852.terrain b/public/terrain/19/858540/353852.terrain new file mode 100644 index 000000000..95fd0a6e2 Binary files /dev/null and b/public/terrain/19/858540/353852.terrain differ diff --git a/public/terrain/19/858540/353853.terrain b/public/terrain/19/858540/353853.terrain new file mode 100644 index 000000000..e35c27816 Binary files /dev/null and b/public/terrain/19/858540/353853.terrain differ diff --git a/public/terrain/19/858540/353854.terrain b/public/terrain/19/858540/353854.terrain new file mode 100644 index 000000000..128f5fe20 Binary files /dev/null and b/public/terrain/19/858540/353854.terrain differ diff --git a/public/terrain/19/858540/353855.terrain b/public/terrain/19/858540/353855.terrain new file mode 100644 index 000000000..61e1fc66d Binary files /dev/null and b/public/terrain/19/858540/353855.terrain differ diff --git a/public/terrain/19/858540/353856.terrain b/public/terrain/19/858540/353856.terrain new file mode 100644 index 000000000..d4d59be02 Binary files /dev/null and b/public/terrain/19/858540/353856.terrain differ diff --git a/public/terrain/19/858540/353857.terrain b/public/terrain/19/858540/353857.terrain new file mode 100644 index 000000000..daabdfb26 Binary files /dev/null and b/public/terrain/19/858540/353857.terrain differ diff --git a/public/terrain/19/858540/353858.terrain b/public/terrain/19/858540/353858.terrain new file mode 100644 index 000000000..76f532f64 Binary files /dev/null and b/public/terrain/19/858540/353858.terrain differ diff --git a/public/terrain/19/858540/353859.terrain b/public/terrain/19/858540/353859.terrain new file mode 100644 index 000000000..73be622f0 Binary files /dev/null and b/public/terrain/19/858540/353859.terrain differ diff --git a/public/terrain/19/858540/353860.terrain b/public/terrain/19/858540/353860.terrain new file mode 100644 index 000000000..2c493254b Binary files /dev/null and b/public/terrain/19/858540/353860.terrain differ diff --git a/public/terrain/19/858540/353861.terrain b/public/terrain/19/858540/353861.terrain new file mode 100644 index 000000000..e32b058df Binary files /dev/null and b/public/terrain/19/858540/353861.terrain differ diff --git a/public/terrain/19/858540/353862.terrain b/public/terrain/19/858540/353862.terrain new file mode 100644 index 000000000..bb3b3c006 Binary files /dev/null and b/public/terrain/19/858540/353862.terrain differ diff --git a/public/terrain/19/858540/353863.terrain b/public/terrain/19/858540/353863.terrain new file mode 100644 index 000000000..3852f30f3 Binary files /dev/null and b/public/terrain/19/858540/353863.terrain differ diff --git a/public/terrain/19/858540/353864.terrain b/public/terrain/19/858540/353864.terrain new file mode 100644 index 000000000..7b6ecb14b Binary files /dev/null and b/public/terrain/19/858540/353864.terrain differ diff --git a/public/terrain/19/858540/353865.terrain b/public/terrain/19/858540/353865.terrain new file mode 100644 index 000000000..7697a43b7 Binary files /dev/null and b/public/terrain/19/858540/353865.terrain differ diff --git a/public/terrain/19/858540/353866.terrain b/public/terrain/19/858540/353866.terrain new file mode 100644 index 000000000..5526b44d7 Binary files /dev/null and b/public/terrain/19/858540/353866.terrain differ diff --git a/public/terrain/19/858540/353867.terrain b/public/terrain/19/858540/353867.terrain new file mode 100644 index 000000000..a26056dd3 Binary files /dev/null and b/public/terrain/19/858540/353867.terrain differ diff --git a/public/terrain/19/858540/353868.terrain b/public/terrain/19/858540/353868.terrain new file mode 100644 index 000000000..6187f143d Binary files /dev/null and b/public/terrain/19/858540/353868.terrain differ diff --git a/public/terrain/19/858540/353869.terrain b/public/terrain/19/858540/353869.terrain new file mode 100644 index 000000000..f2ac74d37 Binary files /dev/null and b/public/terrain/19/858540/353869.terrain differ diff --git a/public/terrain/19/858540/353870.terrain b/public/terrain/19/858540/353870.terrain new file mode 100644 index 000000000..13fdceb8b Binary files /dev/null and b/public/terrain/19/858540/353870.terrain differ diff --git a/public/terrain/19/858540/353871.terrain b/public/terrain/19/858540/353871.terrain new file mode 100644 index 000000000..a34976782 Binary files /dev/null and b/public/terrain/19/858540/353871.terrain differ diff --git a/public/terrain/19/858540/353872.terrain b/public/terrain/19/858540/353872.terrain new file mode 100644 index 000000000..367392d5d Binary files /dev/null and b/public/terrain/19/858540/353872.terrain differ diff --git a/public/terrain/19/858540/353873.terrain b/public/terrain/19/858540/353873.terrain new file mode 100644 index 000000000..1857b6b9f Binary files /dev/null and b/public/terrain/19/858540/353873.terrain differ diff --git a/public/terrain/19/858540/353874.terrain b/public/terrain/19/858540/353874.terrain new file mode 100644 index 000000000..9159f9715 Binary files /dev/null and b/public/terrain/19/858540/353874.terrain differ diff --git a/public/terrain/19/858540/353875.terrain b/public/terrain/19/858540/353875.terrain new file mode 100644 index 000000000..3dbd5b927 Binary files /dev/null and b/public/terrain/19/858540/353875.terrain differ diff --git a/public/terrain/19/858540/353876.terrain b/public/terrain/19/858540/353876.terrain new file mode 100644 index 000000000..3db02eaf0 Binary files /dev/null and b/public/terrain/19/858540/353876.terrain differ diff --git a/public/terrain/19/858540/353877.terrain b/public/terrain/19/858540/353877.terrain new file mode 100644 index 000000000..272e760c5 Binary files /dev/null and b/public/terrain/19/858540/353877.terrain differ diff --git a/public/terrain/19/858540/353878.terrain b/public/terrain/19/858540/353878.terrain new file mode 100644 index 000000000..647b4a5be Binary files /dev/null and b/public/terrain/19/858540/353878.terrain differ diff --git a/public/terrain/19/858540/353879.terrain b/public/terrain/19/858540/353879.terrain new file mode 100644 index 000000000..1763eeee9 Binary files /dev/null and b/public/terrain/19/858540/353879.terrain differ diff --git a/public/terrain/19/858540/353880.terrain b/public/terrain/19/858540/353880.terrain new file mode 100644 index 000000000..459099d00 Binary files /dev/null and b/public/terrain/19/858540/353880.terrain differ diff --git a/public/terrain/19/858540/353881.terrain b/public/terrain/19/858540/353881.terrain new file mode 100644 index 000000000..422a9a1db Binary files /dev/null and b/public/terrain/19/858540/353881.terrain differ diff --git a/public/terrain/19/858540/353882.terrain b/public/terrain/19/858540/353882.terrain new file mode 100644 index 000000000..56412c16e Binary files /dev/null and b/public/terrain/19/858540/353882.terrain differ diff --git a/public/terrain/19/858540/353883.terrain b/public/terrain/19/858540/353883.terrain new file mode 100644 index 000000000..e67229e71 Binary files /dev/null and b/public/terrain/19/858540/353883.terrain differ diff --git a/public/terrain/19/858540/353884.terrain b/public/terrain/19/858540/353884.terrain new file mode 100644 index 000000000..87185faa8 Binary files /dev/null and b/public/terrain/19/858540/353884.terrain differ diff --git a/public/terrain/19/858540/353885.terrain b/public/terrain/19/858540/353885.terrain new file mode 100644 index 000000000..58ed4cb9a Binary files /dev/null and b/public/terrain/19/858540/353885.terrain differ diff --git a/public/terrain/19/858540/353886.terrain b/public/terrain/19/858540/353886.terrain new file mode 100644 index 000000000..50fdc4554 Binary files /dev/null and b/public/terrain/19/858540/353886.terrain differ diff --git a/public/terrain/19/858540/353887.terrain b/public/terrain/19/858540/353887.terrain new file mode 100644 index 000000000..50c48fd78 Binary files /dev/null and b/public/terrain/19/858540/353887.terrain differ diff --git a/public/terrain/19/858540/353888.terrain b/public/terrain/19/858540/353888.terrain new file mode 100644 index 000000000..e6ff6461f Binary files /dev/null and b/public/terrain/19/858540/353888.terrain differ diff --git a/public/terrain/19/858540/353889.terrain b/public/terrain/19/858540/353889.terrain new file mode 100644 index 000000000..a46709540 Binary files /dev/null and b/public/terrain/19/858540/353889.terrain differ diff --git a/public/terrain/19/858540/353890.terrain b/public/terrain/19/858540/353890.terrain new file mode 100644 index 000000000..c86cdfcef Binary files /dev/null and b/public/terrain/19/858540/353890.terrain differ diff --git a/public/terrain/19/858540/353891.terrain b/public/terrain/19/858540/353891.terrain new file mode 100644 index 000000000..e63283bee Binary files /dev/null and b/public/terrain/19/858540/353891.terrain differ diff --git a/public/terrain/19/858540/353892.terrain b/public/terrain/19/858540/353892.terrain new file mode 100644 index 000000000..179e0f14c Binary files /dev/null and b/public/terrain/19/858540/353892.terrain differ diff --git a/public/terrain/19/858540/353893.terrain b/public/terrain/19/858540/353893.terrain new file mode 100644 index 000000000..234f422cb Binary files /dev/null and b/public/terrain/19/858540/353893.terrain differ diff --git a/public/terrain/19/858540/353894.terrain b/public/terrain/19/858540/353894.terrain new file mode 100644 index 000000000..450879526 Binary files /dev/null and b/public/terrain/19/858540/353894.terrain differ diff --git a/public/terrain/19/858540/353895.terrain b/public/terrain/19/858540/353895.terrain new file mode 100644 index 000000000..322c4479f Binary files /dev/null and b/public/terrain/19/858540/353895.terrain differ diff --git a/public/terrain/19/858540/353896.terrain b/public/terrain/19/858540/353896.terrain new file mode 100644 index 000000000..943858ac2 Binary files /dev/null and b/public/terrain/19/858540/353896.terrain differ diff --git a/public/terrain/19/858540/353897.terrain b/public/terrain/19/858540/353897.terrain new file mode 100644 index 000000000..9ab827c11 Binary files /dev/null and b/public/terrain/19/858540/353897.terrain differ diff --git a/public/terrain/19/858540/353898.terrain b/public/terrain/19/858540/353898.terrain new file mode 100644 index 000000000..466cee6c6 Binary files /dev/null and b/public/terrain/19/858540/353898.terrain differ diff --git a/public/terrain/19/858540/353899.terrain b/public/terrain/19/858540/353899.terrain new file mode 100644 index 000000000..45fb57cda Binary files /dev/null and b/public/terrain/19/858540/353899.terrain differ diff --git a/public/terrain/19/858540/353900.terrain b/public/terrain/19/858540/353900.terrain new file mode 100644 index 000000000..29080df2d Binary files /dev/null and b/public/terrain/19/858540/353900.terrain differ diff --git a/public/terrain/19/858540/353901.terrain b/public/terrain/19/858540/353901.terrain new file mode 100644 index 000000000..6694e5b73 Binary files /dev/null and b/public/terrain/19/858540/353901.terrain differ diff --git a/public/terrain/19/858540/353902.terrain b/public/terrain/19/858540/353902.terrain new file mode 100644 index 000000000..eeafebace Binary files /dev/null and b/public/terrain/19/858540/353902.terrain differ diff --git a/public/terrain/19/858540/353903.terrain b/public/terrain/19/858540/353903.terrain new file mode 100644 index 000000000..a194952f6 Binary files /dev/null and b/public/terrain/19/858540/353903.terrain differ diff --git a/public/terrain/19/858540/353904.terrain b/public/terrain/19/858540/353904.terrain new file mode 100644 index 000000000..242c0110d Binary files /dev/null and b/public/terrain/19/858540/353904.terrain differ diff --git a/public/terrain/19/858540/353905.terrain b/public/terrain/19/858540/353905.terrain new file mode 100644 index 000000000..0c8c01751 Binary files /dev/null and b/public/terrain/19/858540/353905.terrain differ diff --git a/public/terrain/19/858540/353906.terrain b/public/terrain/19/858540/353906.terrain new file mode 100644 index 000000000..abb48d0e7 Binary files /dev/null and b/public/terrain/19/858540/353906.terrain differ diff --git a/public/terrain/19/858540/353907.terrain b/public/terrain/19/858540/353907.terrain new file mode 100644 index 000000000..b99a7055b Binary files /dev/null and b/public/terrain/19/858540/353907.terrain differ diff --git a/public/terrain/19/858540/353908.terrain b/public/terrain/19/858540/353908.terrain new file mode 100644 index 000000000..cdda88b03 Binary files /dev/null and b/public/terrain/19/858540/353908.terrain differ diff --git a/public/terrain/19/858540/353909.terrain b/public/terrain/19/858540/353909.terrain new file mode 100644 index 000000000..2856af7d6 Binary files /dev/null and b/public/terrain/19/858540/353909.terrain differ diff --git a/public/terrain/19/858540/353910.terrain b/public/terrain/19/858540/353910.terrain new file mode 100644 index 000000000..f97a4eaa7 Binary files /dev/null and b/public/terrain/19/858540/353910.terrain differ diff --git a/public/terrain/19/858540/353911.terrain b/public/terrain/19/858540/353911.terrain new file mode 100644 index 000000000..dd3850ed4 Binary files /dev/null and b/public/terrain/19/858540/353911.terrain differ diff --git a/public/terrain/19/858540/353912.terrain b/public/terrain/19/858540/353912.terrain new file mode 100644 index 000000000..f120047f9 Binary files /dev/null and b/public/terrain/19/858540/353912.terrain differ diff --git a/public/terrain/19/858540/353913.terrain b/public/terrain/19/858540/353913.terrain new file mode 100644 index 000000000..2b0b980c2 Binary files /dev/null and b/public/terrain/19/858540/353913.terrain differ diff --git a/public/terrain/19/858540/353914.terrain b/public/terrain/19/858540/353914.terrain new file mode 100644 index 000000000..6f781679a Binary files /dev/null and b/public/terrain/19/858540/353914.terrain differ diff --git a/public/terrain/19/858540/353915.terrain b/public/terrain/19/858540/353915.terrain new file mode 100644 index 000000000..8882efd2d Binary files /dev/null and b/public/terrain/19/858540/353915.terrain differ diff --git a/public/terrain/19/858540/353916.terrain b/public/terrain/19/858540/353916.terrain new file mode 100644 index 000000000..2c55c40c9 Binary files /dev/null and b/public/terrain/19/858540/353916.terrain differ diff --git a/public/terrain/19/858540/353917.terrain b/public/terrain/19/858540/353917.terrain new file mode 100644 index 000000000..dcd14da7f Binary files /dev/null and b/public/terrain/19/858540/353917.terrain differ diff --git a/public/terrain/19/858540/353918.terrain b/public/terrain/19/858540/353918.terrain new file mode 100644 index 000000000..1858011eb Binary files /dev/null and b/public/terrain/19/858540/353918.terrain differ diff --git a/public/terrain/19/858540/353919.terrain b/public/terrain/19/858540/353919.terrain new file mode 100644 index 000000000..f4d798af0 Binary files /dev/null and b/public/terrain/19/858540/353919.terrain differ diff --git a/public/terrain/19/858540/353920.terrain b/public/terrain/19/858540/353920.terrain new file mode 100644 index 000000000..1ae61c2e2 Binary files /dev/null and b/public/terrain/19/858540/353920.terrain differ diff --git a/public/terrain/19/858540/353921.terrain b/public/terrain/19/858540/353921.terrain new file mode 100644 index 000000000..939c0090a Binary files /dev/null and b/public/terrain/19/858540/353921.terrain differ diff --git a/public/terrain/19/858540/353922.terrain b/public/terrain/19/858540/353922.terrain new file mode 100644 index 000000000..b6aedbf12 Binary files /dev/null and b/public/terrain/19/858540/353922.terrain differ diff --git a/public/terrain/19/858540/353923.terrain b/public/terrain/19/858540/353923.terrain new file mode 100644 index 000000000..46af0e5ae Binary files /dev/null and b/public/terrain/19/858540/353923.terrain differ diff --git a/public/terrain/19/858540/353924.terrain b/public/terrain/19/858540/353924.terrain new file mode 100644 index 000000000..99a4af601 Binary files /dev/null and b/public/terrain/19/858540/353924.terrain differ diff --git a/public/terrain/19/858540/353925.terrain b/public/terrain/19/858540/353925.terrain new file mode 100644 index 000000000..b47fe37c0 Binary files /dev/null and b/public/terrain/19/858540/353925.terrain differ diff --git a/public/terrain/19/858540/353926.terrain b/public/terrain/19/858540/353926.terrain new file mode 100644 index 000000000..8d93d42fb Binary files /dev/null and b/public/terrain/19/858540/353926.terrain differ diff --git a/public/terrain/19/858540/353927.terrain b/public/terrain/19/858540/353927.terrain new file mode 100644 index 000000000..8b30dceff Binary files /dev/null and b/public/terrain/19/858540/353927.terrain differ diff --git a/public/terrain/19/858540/353928.terrain b/public/terrain/19/858540/353928.terrain new file mode 100644 index 000000000..e5575a94f Binary files /dev/null and b/public/terrain/19/858540/353928.terrain differ diff --git a/public/terrain/19/858540/353929.terrain b/public/terrain/19/858540/353929.terrain new file mode 100644 index 000000000..f9e148f2b Binary files /dev/null and b/public/terrain/19/858540/353929.terrain differ diff --git a/public/terrain/19/858540/353930.terrain b/public/terrain/19/858540/353930.terrain new file mode 100644 index 000000000..dc5f43b47 Binary files /dev/null and b/public/terrain/19/858540/353930.terrain differ diff --git a/public/terrain/19/858540/353931.terrain b/public/terrain/19/858540/353931.terrain new file mode 100644 index 000000000..d4a1d7cb9 Binary files /dev/null and b/public/terrain/19/858540/353931.terrain differ diff --git a/public/terrain/19/858540/353932.terrain b/public/terrain/19/858540/353932.terrain new file mode 100644 index 000000000..40f4623b1 Binary files /dev/null and b/public/terrain/19/858540/353932.terrain differ diff --git a/public/terrain/19/858540/353933.terrain b/public/terrain/19/858540/353933.terrain new file mode 100644 index 000000000..cef69e6ad Binary files /dev/null and b/public/terrain/19/858540/353933.terrain differ diff --git a/public/terrain/19/858540/353934.terrain b/public/terrain/19/858540/353934.terrain new file mode 100644 index 000000000..787142611 Binary files /dev/null and b/public/terrain/19/858540/353934.terrain differ diff --git a/public/terrain/19/858540/353935.terrain b/public/terrain/19/858540/353935.terrain new file mode 100644 index 000000000..0b66f98d9 Binary files /dev/null and b/public/terrain/19/858540/353935.terrain differ diff --git a/public/terrain/19/858540/353936.terrain b/public/terrain/19/858540/353936.terrain new file mode 100644 index 000000000..8e070b50c Binary files /dev/null and b/public/terrain/19/858540/353936.terrain differ diff --git a/public/terrain/19/858540/353937.terrain b/public/terrain/19/858540/353937.terrain new file mode 100644 index 000000000..b4764fc62 Binary files /dev/null and b/public/terrain/19/858540/353937.terrain differ diff --git a/public/terrain/19/858540/353938.terrain b/public/terrain/19/858540/353938.terrain new file mode 100644 index 000000000..a671391a0 Binary files /dev/null and b/public/terrain/19/858540/353938.terrain differ diff --git a/public/terrain/19/858540/353939.terrain b/public/terrain/19/858540/353939.terrain new file mode 100644 index 000000000..2402666d8 Binary files /dev/null and b/public/terrain/19/858540/353939.terrain differ diff --git a/public/terrain/19/858540/353940.terrain b/public/terrain/19/858540/353940.terrain new file mode 100644 index 000000000..a7cdebe75 Binary files /dev/null and b/public/terrain/19/858540/353940.terrain differ diff --git a/public/terrain/19/858540/353941.terrain b/public/terrain/19/858540/353941.terrain new file mode 100644 index 000000000..c08b5fad7 Binary files /dev/null and b/public/terrain/19/858540/353941.terrain differ diff --git a/public/terrain/19/858540/353942.terrain b/public/terrain/19/858540/353942.terrain new file mode 100644 index 000000000..03be8ea84 Binary files /dev/null and b/public/terrain/19/858540/353942.terrain differ diff --git a/public/terrain/19/858540/353943.terrain b/public/terrain/19/858540/353943.terrain new file mode 100644 index 000000000..025681e72 Binary files /dev/null and b/public/terrain/19/858540/353943.terrain differ diff --git a/public/terrain/19/858540/353944.terrain b/public/terrain/19/858540/353944.terrain new file mode 100644 index 000000000..76e9c5144 Binary files /dev/null and b/public/terrain/19/858540/353944.terrain differ diff --git a/public/terrain/19/858540/353945.terrain b/public/terrain/19/858540/353945.terrain new file mode 100644 index 000000000..fb12dca89 Binary files /dev/null and b/public/terrain/19/858540/353945.terrain differ diff --git a/public/terrain/19/858540/353946.terrain b/public/terrain/19/858540/353946.terrain new file mode 100644 index 000000000..a86cfe8d6 Binary files /dev/null and b/public/terrain/19/858540/353946.terrain differ diff --git a/public/terrain/19/858540/353947.terrain b/public/terrain/19/858540/353947.terrain new file mode 100644 index 000000000..6f21e51f2 Binary files /dev/null and b/public/terrain/19/858540/353947.terrain differ diff --git a/public/terrain/19/858540/353948.terrain b/public/terrain/19/858540/353948.terrain new file mode 100644 index 000000000..d1bec0aa5 Binary files /dev/null and b/public/terrain/19/858540/353948.terrain differ diff --git a/public/terrain/19/858540/353949.terrain b/public/terrain/19/858540/353949.terrain new file mode 100644 index 000000000..9950ea4bb Binary files /dev/null and b/public/terrain/19/858540/353949.terrain differ diff --git a/public/terrain/19/858540/353950.terrain b/public/terrain/19/858540/353950.terrain new file mode 100644 index 000000000..c079a73dc Binary files /dev/null and b/public/terrain/19/858540/353950.terrain differ diff --git a/public/terrain/19/858540/353951.terrain b/public/terrain/19/858540/353951.terrain new file mode 100644 index 000000000..147863450 Binary files /dev/null and b/public/terrain/19/858540/353951.terrain differ diff --git a/public/terrain/19/858540/353952.terrain b/public/terrain/19/858540/353952.terrain new file mode 100644 index 000000000..c73834b05 Binary files /dev/null and b/public/terrain/19/858540/353952.terrain differ diff --git a/public/terrain/19/858540/353953.terrain b/public/terrain/19/858540/353953.terrain new file mode 100644 index 000000000..11f1e1b08 Binary files /dev/null and b/public/terrain/19/858540/353953.terrain differ diff --git a/public/terrain/19/858540/353954.terrain b/public/terrain/19/858540/353954.terrain new file mode 100644 index 000000000..2d125c319 Binary files /dev/null and b/public/terrain/19/858540/353954.terrain differ diff --git a/public/terrain/19/858540/353955.terrain b/public/terrain/19/858540/353955.terrain new file mode 100644 index 000000000..f7e090c3a Binary files /dev/null and b/public/terrain/19/858540/353955.terrain differ diff --git a/public/terrain/19/858540/353956.terrain b/public/terrain/19/858540/353956.terrain new file mode 100644 index 000000000..13c394102 Binary files /dev/null and b/public/terrain/19/858540/353956.terrain differ diff --git a/public/terrain/19/858540/353957.terrain b/public/terrain/19/858540/353957.terrain new file mode 100644 index 000000000..93191a285 Binary files /dev/null and b/public/terrain/19/858540/353957.terrain differ diff --git a/public/terrain/19/858540/353958.terrain b/public/terrain/19/858540/353958.terrain new file mode 100644 index 000000000..b4094de04 Binary files /dev/null and b/public/terrain/19/858540/353958.terrain differ diff --git a/public/terrain/19/858540/353959.terrain b/public/terrain/19/858540/353959.terrain new file mode 100644 index 000000000..89c8d182c Binary files /dev/null and b/public/terrain/19/858540/353959.terrain differ diff --git a/public/terrain/19/858540/353960.terrain b/public/terrain/19/858540/353960.terrain new file mode 100644 index 000000000..70c8313ed Binary files /dev/null and b/public/terrain/19/858540/353960.terrain differ diff --git a/public/terrain/19/858540/353961.terrain b/public/terrain/19/858540/353961.terrain new file mode 100644 index 000000000..8d0866551 Binary files /dev/null and b/public/terrain/19/858540/353961.terrain differ diff --git a/public/terrain/19/858540/353962.terrain b/public/terrain/19/858540/353962.terrain new file mode 100644 index 000000000..f9a55a998 Binary files /dev/null and b/public/terrain/19/858540/353962.terrain differ diff --git a/public/terrain/19/858540/353963.terrain b/public/terrain/19/858540/353963.terrain new file mode 100644 index 000000000..d08c6c341 Binary files /dev/null and b/public/terrain/19/858540/353963.terrain differ diff --git a/public/terrain/19/858540/353964.terrain b/public/terrain/19/858540/353964.terrain new file mode 100644 index 000000000..b84bb81b6 Binary files /dev/null and b/public/terrain/19/858540/353964.terrain differ diff --git a/public/terrain/19/858540/353965.terrain b/public/terrain/19/858540/353965.terrain new file mode 100644 index 000000000..16510253e Binary files /dev/null and b/public/terrain/19/858540/353965.terrain differ diff --git a/public/terrain/19/858540/353966.terrain b/public/terrain/19/858540/353966.terrain new file mode 100644 index 000000000..5652f9c50 Binary files /dev/null and b/public/terrain/19/858540/353966.terrain differ diff --git a/public/terrain/19/858540/353967.terrain b/public/terrain/19/858540/353967.terrain new file mode 100644 index 000000000..64f85b6ad Binary files /dev/null and b/public/terrain/19/858540/353967.terrain differ diff --git a/public/terrain/19/858540/353968.terrain b/public/terrain/19/858540/353968.terrain new file mode 100644 index 000000000..65a1b10c8 Binary files /dev/null and b/public/terrain/19/858540/353968.terrain differ diff --git a/public/terrain/19/858540/353969.terrain b/public/terrain/19/858540/353969.terrain new file mode 100644 index 000000000..d9f55ac1c Binary files /dev/null and b/public/terrain/19/858540/353969.terrain differ diff --git a/public/terrain/19/858540/353970.terrain b/public/terrain/19/858540/353970.terrain new file mode 100644 index 000000000..5a8a43279 Binary files /dev/null and b/public/terrain/19/858540/353970.terrain differ diff --git a/public/terrain/19/858540/353971.terrain b/public/terrain/19/858540/353971.terrain new file mode 100644 index 000000000..6e652b564 Binary files /dev/null and b/public/terrain/19/858540/353971.terrain differ diff --git a/public/terrain/19/858540/353972.terrain b/public/terrain/19/858540/353972.terrain new file mode 100644 index 000000000..210c912db Binary files /dev/null and b/public/terrain/19/858540/353972.terrain differ diff --git a/public/terrain/19/858540/353973.terrain b/public/terrain/19/858540/353973.terrain new file mode 100644 index 000000000..c9822de7b Binary files /dev/null and b/public/terrain/19/858540/353973.terrain differ diff --git a/public/terrain/19/858540/353974.terrain b/public/terrain/19/858540/353974.terrain new file mode 100644 index 000000000..de3c421dd Binary files /dev/null and b/public/terrain/19/858540/353974.terrain differ diff --git a/public/terrain/19/858540/353975.terrain b/public/terrain/19/858540/353975.terrain new file mode 100644 index 000000000..d0b3a85da Binary files /dev/null and b/public/terrain/19/858540/353975.terrain differ diff --git a/public/terrain/19/858540/353976.terrain b/public/terrain/19/858540/353976.terrain new file mode 100644 index 000000000..3788c185c Binary files /dev/null and b/public/terrain/19/858540/353976.terrain differ diff --git a/public/terrain/19/858540/353977.terrain b/public/terrain/19/858540/353977.terrain new file mode 100644 index 000000000..6aee7922a Binary files /dev/null and b/public/terrain/19/858540/353977.terrain differ diff --git a/public/terrain/19/858540/353978.terrain b/public/terrain/19/858540/353978.terrain new file mode 100644 index 000000000..660b411f1 Binary files /dev/null and b/public/terrain/19/858540/353978.terrain differ diff --git a/public/terrain/19/858540/353979.terrain b/public/terrain/19/858540/353979.terrain new file mode 100644 index 000000000..faa0d0722 Binary files /dev/null and b/public/terrain/19/858540/353979.terrain differ diff --git a/public/terrain/19/858540/353980.terrain b/public/terrain/19/858540/353980.terrain new file mode 100644 index 000000000..e4eeb4271 Binary files /dev/null and b/public/terrain/19/858540/353980.terrain differ diff --git a/public/terrain/19/858540/353981.terrain b/public/terrain/19/858540/353981.terrain new file mode 100644 index 000000000..e9f047612 Binary files /dev/null and b/public/terrain/19/858540/353981.terrain differ diff --git a/public/terrain/19/858540/353982.terrain b/public/terrain/19/858540/353982.terrain new file mode 100644 index 000000000..f0ec63342 Binary files /dev/null and b/public/terrain/19/858540/353982.terrain differ diff --git a/public/terrain/19/858540/353983.terrain b/public/terrain/19/858540/353983.terrain new file mode 100644 index 000000000..9cd92ecd7 Binary files /dev/null and b/public/terrain/19/858540/353983.terrain differ diff --git a/public/terrain/19/858540/353984.terrain b/public/terrain/19/858540/353984.terrain new file mode 100644 index 000000000..868214cf3 Binary files /dev/null and b/public/terrain/19/858540/353984.terrain differ diff --git a/public/terrain/19/858540/353985.terrain b/public/terrain/19/858540/353985.terrain new file mode 100644 index 000000000..c7ea1d7d0 Binary files /dev/null and b/public/terrain/19/858540/353985.terrain differ diff --git a/public/terrain/19/858540/353986.terrain b/public/terrain/19/858540/353986.terrain new file mode 100644 index 000000000..bcc644e4f Binary files /dev/null and b/public/terrain/19/858540/353986.terrain differ diff --git a/public/terrain/19/858540/353987.terrain b/public/terrain/19/858540/353987.terrain new file mode 100644 index 000000000..2333bfff6 Binary files /dev/null and b/public/terrain/19/858540/353987.terrain differ diff --git a/public/terrain/19/858540/353988.terrain b/public/terrain/19/858540/353988.terrain new file mode 100644 index 000000000..14ec00d2d Binary files /dev/null and b/public/terrain/19/858540/353988.terrain differ diff --git a/public/terrain/19/858540/353989.terrain b/public/terrain/19/858540/353989.terrain new file mode 100644 index 000000000..a5ec6700f Binary files /dev/null and b/public/terrain/19/858540/353989.terrain differ diff --git a/public/terrain/19/858540/353990.terrain b/public/terrain/19/858540/353990.terrain new file mode 100644 index 000000000..ba0f2a1ef Binary files /dev/null and b/public/terrain/19/858540/353990.terrain differ diff --git a/public/terrain/19/858540/353991.terrain b/public/terrain/19/858540/353991.terrain new file mode 100644 index 000000000..3f2430709 Binary files /dev/null and b/public/terrain/19/858540/353991.terrain differ diff --git a/public/terrain/19/858540/353992.terrain b/public/terrain/19/858540/353992.terrain new file mode 100644 index 000000000..fc70df414 Binary files /dev/null and b/public/terrain/19/858540/353992.terrain differ diff --git a/public/terrain/19/858540/353993.terrain b/public/terrain/19/858540/353993.terrain new file mode 100644 index 000000000..2317911d4 Binary files /dev/null and b/public/terrain/19/858540/353993.terrain differ diff --git a/public/terrain/19/858540/353994.terrain b/public/terrain/19/858540/353994.terrain new file mode 100644 index 000000000..eeb17bc12 Binary files /dev/null and b/public/terrain/19/858540/353994.terrain differ diff --git a/public/terrain/19/858540/353995.terrain b/public/terrain/19/858540/353995.terrain new file mode 100644 index 000000000..8abdc1657 Binary files /dev/null and b/public/terrain/19/858540/353995.terrain differ diff --git a/public/terrain/19/858540/353996.terrain b/public/terrain/19/858540/353996.terrain new file mode 100644 index 000000000..d8a88549c Binary files /dev/null and b/public/terrain/19/858540/353996.terrain differ diff --git a/public/terrain/19/858540/353997.terrain b/public/terrain/19/858540/353997.terrain new file mode 100644 index 000000000..7235292cc Binary files /dev/null and b/public/terrain/19/858540/353997.terrain differ diff --git a/public/terrain/19/858540/353998.terrain b/public/terrain/19/858540/353998.terrain new file mode 100644 index 000000000..c654ebc2b Binary files /dev/null and b/public/terrain/19/858540/353998.terrain differ diff --git a/public/terrain/19/858540/353999.terrain b/public/terrain/19/858540/353999.terrain new file mode 100644 index 000000000..75d582d8a Binary files /dev/null and b/public/terrain/19/858540/353999.terrain differ diff --git a/public/terrain/19/858540/354000.terrain b/public/terrain/19/858540/354000.terrain new file mode 100644 index 000000000..5ccdc02b5 Binary files /dev/null and b/public/terrain/19/858540/354000.terrain differ diff --git a/public/terrain/19/858540/354001.terrain b/public/terrain/19/858540/354001.terrain new file mode 100644 index 000000000..274618c24 Binary files /dev/null and b/public/terrain/19/858540/354001.terrain differ diff --git a/public/terrain/19/858540/354002.terrain b/public/terrain/19/858540/354002.terrain new file mode 100644 index 000000000..685b6d08f Binary files /dev/null and b/public/terrain/19/858540/354002.terrain differ diff --git a/public/terrain/19/858540/354003.terrain b/public/terrain/19/858540/354003.terrain new file mode 100644 index 000000000..02e588013 Binary files /dev/null and b/public/terrain/19/858540/354003.terrain differ diff --git a/public/terrain/19/858540/354004.terrain b/public/terrain/19/858540/354004.terrain new file mode 100644 index 000000000..91288490a Binary files /dev/null and b/public/terrain/19/858540/354004.terrain differ diff --git a/public/terrain/19/858540/354005.terrain b/public/terrain/19/858540/354005.terrain new file mode 100644 index 000000000..a350933a7 Binary files /dev/null and b/public/terrain/19/858540/354005.terrain differ diff --git a/public/terrain/19/858540/354006.terrain b/public/terrain/19/858540/354006.terrain new file mode 100644 index 000000000..05ad1e05f Binary files /dev/null and b/public/terrain/19/858540/354006.terrain differ diff --git a/public/terrain/19/858540/354007.terrain b/public/terrain/19/858540/354007.terrain new file mode 100644 index 000000000..f83afdbe6 Binary files /dev/null and b/public/terrain/19/858540/354007.terrain differ diff --git a/public/terrain/19/858540/354008.terrain b/public/terrain/19/858540/354008.terrain new file mode 100644 index 000000000..f5f8342f6 Binary files /dev/null and b/public/terrain/19/858540/354008.terrain differ diff --git a/public/terrain/19/858540/354009.terrain b/public/terrain/19/858540/354009.terrain new file mode 100644 index 000000000..9d4d40b3d Binary files /dev/null and b/public/terrain/19/858540/354009.terrain differ diff --git a/public/terrain/19/858540/354010.terrain b/public/terrain/19/858540/354010.terrain new file mode 100644 index 000000000..27fadfbcd Binary files /dev/null and b/public/terrain/19/858540/354010.terrain differ diff --git a/public/terrain/19/858540/354011.terrain b/public/terrain/19/858540/354011.terrain new file mode 100644 index 000000000..a132edbb7 Binary files /dev/null and b/public/terrain/19/858540/354011.terrain differ diff --git a/public/terrain/19/858540/354012.terrain b/public/terrain/19/858540/354012.terrain new file mode 100644 index 000000000..e8c76061f Binary files /dev/null and b/public/terrain/19/858540/354012.terrain differ diff --git a/public/terrain/19/858540/354013.terrain b/public/terrain/19/858540/354013.terrain new file mode 100644 index 000000000..d772f3e35 Binary files /dev/null and b/public/terrain/19/858540/354013.terrain differ diff --git a/public/terrain/19/858540/354014.terrain b/public/terrain/19/858540/354014.terrain new file mode 100644 index 000000000..f89d8a092 Binary files /dev/null and b/public/terrain/19/858540/354014.terrain differ diff --git a/public/terrain/19/858540/354015.terrain b/public/terrain/19/858540/354015.terrain new file mode 100644 index 000000000..7e2dff42e Binary files /dev/null and b/public/terrain/19/858540/354015.terrain differ diff --git a/public/terrain/19/858540/354016.terrain b/public/terrain/19/858540/354016.terrain new file mode 100644 index 000000000..67212e6c9 Binary files /dev/null and b/public/terrain/19/858540/354016.terrain differ diff --git a/public/terrain/19/858540/354017.terrain b/public/terrain/19/858540/354017.terrain new file mode 100644 index 000000000..6348198b8 Binary files /dev/null and b/public/terrain/19/858540/354017.terrain differ diff --git a/public/terrain/19/858540/354018.terrain b/public/terrain/19/858540/354018.terrain new file mode 100644 index 000000000..387277fe4 Binary files /dev/null and b/public/terrain/19/858540/354018.terrain differ diff --git a/public/terrain/19/858540/354019.terrain b/public/terrain/19/858540/354019.terrain new file mode 100644 index 000000000..a41e491ac Binary files /dev/null and b/public/terrain/19/858540/354019.terrain differ diff --git a/public/terrain/19/858540/354020.terrain b/public/terrain/19/858540/354020.terrain new file mode 100644 index 000000000..eef839094 Binary files /dev/null and b/public/terrain/19/858540/354020.terrain differ diff --git a/public/terrain/19/858540/354021.terrain b/public/terrain/19/858540/354021.terrain new file mode 100644 index 000000000..1ae27f481 Binary files /dev/null and b/public/terrain/19/858540/354021.terrain differ diff --git a/public/terrain/19/858540/354022.terrain b/public/terrain/19/858540/354022.terrain new file mode 100644 index 000000000..f674e60cd Binary files /dev/null and b/public/terrain/19/858540/354022.terrain differ diff --git a/public/terrain/19/858540/354023.terrain b/public/terrain/19/858540/354023.terrain new file mode 100644 index 000000000..bca89f6a7 Binary files /dev/null and b/public/terrain/19/858540/354023.terrain differ diff --git a/public/terrain/19/858540/354024.terrain b/public/terrain/19/858540/354024.terrain new file mode 100644 index 000000000..72073f65c Binary files /dev/null and b/public/terrain/19/858540/354024.terrain differ diff --git a/public/terrain/19/858540/354025.terrain b/public/terrain/19/858540/354025.terrain new file mode 100644 index 000000000..f570f5aaf Binary files /dev/null and b/public/terrain/19/858540/354025.terrain differ diff --git a/public/terrain/19/858540/354026.terrain b/public/terrain/19/858540/354026.terrain new file mode 100644 index 000000000..fe116f25c Binary files /dev/null and b/public/terrain/19/858540/354026.terrain differ diff --git a/public/terrain/19/858540/354027.terrain b/public/terrain/19/858540/354027.terrain new file mode 100644 index 000000000..74a80f341 Binary files /dev/null and b/public/terrain/19/858540/354027.terrain differ diff --git a/public/terrain/19/858540/354028.terrain b/public/terrain/19/858540/354028.terrain new file mode 100644 index 000000000..89ad03749 Binary files /dev/null and b/public/terrain/19/858540/354028.terrain differ diff --git a/public/terrain/19/858540/354029.terrain b/public/terrain/19/858540/354029.terrain new file mode 100644 index 000000000..26ed633b6 Binary files /dev/null and b/public/terrain/19/858540/354029.terrain differ diff --git a/public/terrain/19/858540/354030.terrain b/public/terrain/19/858540/354030.terrain new file mode 100644 index 000000000..d8a52d865 Binary files /dev/null and b/public/terrain/19/858540/354030.terrain differ diff --git a/public/terrain/19/858540/354031.terrain b/public/terrain/19/858540/354031.terrain new file mode 100644 index 000000000..0f4ae9831 Binary files /dev/null and b/public/terrain/19/858540/354031.terrain differ diff --git a/public/terrain/19/858540/354032.terrain b/public/terrain/19/858540/354032.terrain new file mode 100644 index 000000000..40f7263a5 Binary files /dev/null and b/public/terrain/19/858540/354032.terrain differ diff --git a/public/terrain/19/858540/354033.terrain b/public/terrain/19/858540/354033.terrain new file mode 100644 index 000000000..cf104b144 Binary files /dev/null and b/public/terrain/19/858540/354033.terrain differ diff --git a/public/terrain/19/858540/354034.terrain b/public/terrain/19/858540/354034.terrain new file mode 100644 index 000000000..2037b8b3d Binary files /dev/null and b/public/terrain/19/858540/354034.terrain differ diff --git a/public/terrain/19/858540/354035.terrain b/public/terrain/19/858540/354035.terrain new file mode 100644 index 000000000..014683aa7 Binary files /dev/null and b/public/terrain/19/858540/354035.terrain differ diff --git a/public/terrain/19/858540/354036.terrain b/public/terrain/19/858540/354036.terrain new file mode 100644 index 000000000..21974e0bd Binary files /dev/null and b/public/terrain/19/858540/354036.terrain differ diff --git a/public/terrain/19/858540/354037.terrain b/public/terrain/19/858540/354037.terrain new file mode 100644 index 000000000..a0975f85b Binary files /dev/null and b/public/terrain/19/858540/354037.terrain differ diff --git a/public/terrain/19/858540/354038.terrain b/public/terrain/19/858540/354038.terrain new file mode 100644 index 000000000..90238d48b Binary files /dev/null and b/public/terrain/19/858540/354038.terrain differ diff --git a/public/terrain/19/858540/354039.terrain b/public/terrain/19/858540/354039.terrain new file mode 100644 index 000000000..ae72b8285 Binary files /dev/null and b/public/terrain/19/858540/354039.terrain differ diff --git a/public/terrain/19/858540/354040.terrain b/public/terrain/19/858540/354040.terrain new file mode 100644 index 000000000..4fd2a2980 Binary files /dev/null and b/public/terrain/19/858540/354040.terrain differ diff --git a/public/terrain/19/858540/354041.terrain b/public/terrain/19/858540/354041.terrain new file mode 100644 index 000000000..d5642b788 Binary files /dev/null and b/public/terrain/19/858540/354041.terrain differ diff --git a/public/terrain/19/858540/354042.terrain b/public/terrain/19/858540/354042.terrain new file mode 100644 index 000000000..482ac0d71 Binary files /dev/null and b/public/terrain/19/858540/354042.terrain differ diff --git a/public/terrain/19/858540/354043.terrain b/public/terrain/19/858540/354043.terrain new file mode 100644 index 000000000..2d10115ab Binary files /dev/null and b/public/terrain/19/858540/354043.terrain differ diff --git a/public/terrain/19/858540/354044.terrain b/public/terrain/19/858540/354044.terrain new file mode 100644 index 000000000..be8417de7 Binary files /dev/null and b/public/terrain/19/858540/354044.terrain differ diff --git a/public/terrain/19/858540/354045.terrain b/public/terrain/19/858540/354045.terrain new file mode 100644 index 000000000..962654b76 Binary files /dev/null and b/public/terrain/19/858540/354045.terrain differ diff --git a/public/terrain/19/858540/354046.terrain b/public/terrain/19/858540/354046.terrain new file mode 100644 index 000000000..085558963 Binary files /dev/null and b/public/terrain/19/858540/354046.terrain differ diff --git a/public/terrain/19/858540/354047.terrain b/public/terrain/19/858540/354047.terrain new file mode 100644 index 000000000..bbd8d1b2b Binary files /dev/null and b/public/terrain/19/858540/354047.terrain differ diff --git a/public/terrain/19/858540/354048.terrain b/public/terrain/19/858540/354048.terrain new file mode 100644 index 000000000..02903c3cb Binary files /dev/null and b/public/terrain/19/858540/354048.terrain differ diff --git a/public/terrain/19/858540/354049.terrain b/public/terrain/19/858540/354049.terrain new file mode 100644 index 000000000..70a7ef72c Binary files /dev/null and b/public/terrain/19/858540/354049.terrain differ diff --git a/public/terrain/19/858540/354050.terrain b/public/terrain/19/858540/354050.terrain new file mode 100644 index 000000000..1de058531 Binary files /dev/null and b/public/terrain/19/858540/354050.terrain differ diff --git a/public/terrain/19/858540/354051.terrain b/public/terrain/19/858540/354051.terrain new file mode 100644 index 000000000..b998001a8 Binary files /dev/null and b/public/terrain/19/858540/354051.terrain differ diff --git a/public/terrain/19/858540/354052.terrain b/public/terrain/19/858540/354052.terrain new file mode 100644 index 000000000..d36dcbe6a Binary files /dev/null and b/public/terrain/19/858540/354052.terrain differ diff --git a/public/terrain/19/858540/354053.terrain b/public/terrain/19/858540/354053.terrain new file mode 100644 index 000000000..578f9d699 Binary files /dev/null and b/public/terrain/19/858540/354053.terrain differ diff --git a/public/terrain/19/858540/354054.terrain b/public/terrain/19/858540/354054.terrain new file mode 100644 index 000000000..7daf97433 Binary files /dev/null and b/public/terrain/19/858540/354054.terrain differ diff --git a/public/terrain/19/858540/354055.terrain b/public/terrain/19/858540/354055.terrain new file mode 100644 index 000000000..83dd2e17d Binary files /dev/null and b/public/terrain/19/858540/354055.terrain differ diff --git a/public/terrain/19/858540/354056.terrain b/public/terrain/19/858540/354056.terrain new file mode 100644 index 000000000..e57ce8dba Binary files /dev/null and b/public/terrain/19/858540/354056.terrain differ diff --git a/public/terrain/19/858540/354057.terrain b/public/terrain/19/858540/354057.terrain new file mode 100644 index 000000000..fde61978c Binary files /dev/null and b/public/terrain/19/858540/354057.terrain differ diff --git a/public/terrain/19/858540/354058.terrain b/public/terrain/19/858540/354058.terrain new file mode 100644 index 000000000..03f978e00 Binary files /dev/null and b/public/terrain/19/858540/354058.terrain differ diff --git a/public/terrain/19/858540/354059.terrain b/public/terrain/19/858540/354059.terrain new file mode 100644 index 000000000..6dde59dce Binary files /dev/null and b/public/terrain/19/858540/354059.terrain differ diff --git a/public/terrain/19/858541/353743.terrain b/public/terrain/19/858541/353743.terrain new file mode 100644 index 000000000..825b1aa22 Binary files /dev/null and b/public/terrain/19/858541/353743.terrain differ diff --git a/public/terrain/19/858541/353744.terrain b/public/terrain/19/858541/353744.terrain new file mode 100644 index 000000000..7b6379dc1 Binary files /dev/null and b/public/terrain/19/858541/353744.terrain differ diff --git a/public/terrain/19/858541/353745.terrain b/public/terrain/19/858541/353745.terrain new file mode 100644 index 000000000..47d0b2429 Binary files /dev/null and b/public/terrain/19/858541/353745.terrain differ diff --git a/public/terrain/19/858541/353746.terrain b/public/terrain/19/858541/353746.terrain new file mode 100644 index 000000000..a1e0202cc Binary files /dev/null and b/public/terrain/19/858541/353746.terrain differ diff --git a/public/terrain/19/858541/353747.terrain b/public/terrain/19/858541/353747.terrain new file mode 100644 index 000000000..ec2a262f8 Binary files /dev/null and b/public/terrain/19/858541/353747.terrain differ diff --git a/public/terrain/19/858541/353748.terrain b/public/terrain/19/858541/353748.terrain new file mode 100644 index 000000000..99503a3a9 Binary files /dev/null and b/public/terrain/19/858541/353748.terrain differ diff --git a/public/terrain/19/858541/353749.terrain b/public/terrain/19/858541/353749.terrain new file mode 100644 index 000000000..69741fa41 Binary files /dev/null and b/public/terrain/19/858541/353749.terrain differ diff --git a/public/terrain/19/858541/353750.terrain b/public/terrain/19/858541/353750.terrain new file mode 100644 index 000000000..31008de4f Binary files /dev/null and b/public/terrain/19/858541/353750.terrain differ diff --git a/public/terrain/19/858541/353751.terrain b/public/terrain/19/858541/353751.terrain new file mode 100644 index 000000000..9c09d5fa2 Binary files /dev/null and b/public/terrain/19/858541/353751.terrain differ diff --git a/public/terrain/19/858541/353752.terrain b/public/terrain/19/858541/353752.terrain new file mode 100644 index 000000000..eba2eef24 Binary files /dev/null and b/public/terrain/19/858541/353752.terrain differ diff --git a/public/terrain/19/858541/353753.terrain b/public/terrain/19/858541/353753.terrain new file mode 100644 index 000000000..29d18e468 Binary files /dev/null and b/public/terrain/19/858541/353753.terrain differ diff --git a/public/terrain/19/858541/353754.terrain b/public/terrain/19/858541/353754.terrain new file mode 100644 index 000000000..bc22544bc Binary files /dev/null and b/public/terrain/19/858541/353754.terrain differ diff --git a/public/terrain/19/858541/353755.terrain b/public/terrain/19/858541/353755.terrain new file mode 100644 index 000000000..3acf7ef0a Binary files /dev/null and b/public/terrain/19/858541/353755.terrain differ diff --git a/public/terrain/19/858541/353756.terrain b/public/terrain/19/858541/353756.terrain new file mode 100644 index 000000000..ee424ccf9 Binary files /dev/null and b/public/terrain/19/858541/353756.terrain differ diff --git a/public/terrain/19/858541/353757.terrain b/public/terrain/19/858541/353757.terrain new file mode 100644 index 000000000..730daf381 Binary files /dev/null and b/public/terrain/19/858541/353757.terrain differ diff --git a/public/terrain/19/858541/353758.terrain b/public/terrain/19/858541/353758.terrain new file mode 100644 index 000000000..7e6993194 Binary files /dev/null and b/public/terrain/19/858541/353758.terrain differ diff --git a/public/terrain/19/858541/353759.terrain b/public/terrain/19/858541/353759.terrain new file mode 100644 index 000000000..1891f5837 Binary files /dev/null and b/public/terrain/19/858541/353759.terrain differ diff --git a/public/terrain/19/858541/353760.terrain b/public/terrain/19/858541/353760.terrain new file mode 100644 index 000000000..10317ac4e Binary files /dev/null and b/public/terrain/19/858541/353760.terrain differ diff --git a/public/terrain/19/858541/353761.terrain b/public/terrain/19/858541/353761.terrain new file mode 100644 index 000000000..e10094a23 Binary files /dev/null and b/public/terrain/19/858541/353761.terrain differ diff --git a/public/terrain/19/858541/353762.terrain b/public/terrain/19/858541/353762.terrain new file mode 100644 index 000000000..0fa7b3671 Binary files /dev/null and b/public/terrain/19/858541/353762.terrain differ diff --git a/public/terrain/19/858541/353763.terrain b/public/terrain/19/858541/353763.terrain new file mode 100644 index 000000000..d19c0f8e0 Binary files /dev/null and b/public/terrain/19/858541/353763.terrain differ diff --git a/public/terrain/19/858541/353764.terrain b/public/terrain/19/858541/353764.terrain new file mode 100644 index 000000000..f6e7860d6 Binary files /dev/null and b/public/terrain/19/858541/353764.terrain differ diff --git a/public/terrain/19/858541/353765.terrain b/public/terrain/19/858541/353765.terrain new file mode 100644 index 000000000..ec60cd037 Binary files /dev/null and b/public/terrain/19/858541/353765.terrain differ diff --git a/public/terrain/19/858541/353766.terrain b/public/terrain/19/858541/353766.terrain new file mode 100644 index 000000000..f3cafa1db Binary files /dev/null and b/public/terrain/19/858541/353766.terrain differ diff --git a/public/terrain/19/858541/353767.terrain b/public/terrain/19/858541/353767.terrain new file mode 100644 index 000000000..544034642 Binary files /dev/null and b/public/terrain/19/858541/353767.terrain differ diff --git a/public/terrain/19/858541/353768.terrain b/public/terrain/19/858541/353768.terrain new file mode 100644 index 000000000..111f31249 Binary files /dev/null and b/public/terrain/19/858541/353768.terrain differ diff --git a/public/terrain/19/858541/353769.terrain b/public/terrain/19/858541/353769.terrain new file mode 100644 index 000000000..f8d82e5e0 Binary files /dev/null and b/public/terrain/19/858541/353769.terrain differ diff --git a/public/terrain/19/858541/353770.terrain b/public/terrain/19/858541/353770.terrain new file mode 100644 index 000000000..47fde604e Binary files /dev/null and b/public/terrain/19/858541/353770.terrain differ diff --git a/public/terrain/19/858541/353771.terrain b/public/terrain/19/858541/353771.terrain new file mode 100644 index 000000000..db6289a6f Binary files /dev/null and b/public/terrain/19/858541/353771.terrain differ diff --git a/public/terrain/19/858541/353772.terrain b/public/terrain/19/858541/353772.terrain new file mode 100644 index 000000000..41a512bc6 Binary files /dev/null and b/public/terrain/19/858541/353772.terrain differ diff --git a/public/terrain/19/858541/353773.terrain b/public/terrain/19/858541/353773.terrain new file mode 100644 index 000000000..32faa7fae Binary files /dev/null and b/public/terrain/19/858541/353773.terrain differ diff --git a/public/terrain/19/858541/353774.terrain b/public/terrain/19/858541/353774.terrain new file mode 100644 index 000000000..671251b18 Binary files /dev/null and b/public/terrain/19/858541/353774.terrain differ diff --git a/public/terrain/19/858541/353775.terrain b/public/terrain/19/858541/353775.terrain new file mode 100644 index 000000000..8f60f463d Binary files /dev/null and b/public/terrain/19/858541/353775.terrain differ diff --git a/public/terrain/19/858541/353776.terrain b/public/terrain/19/858541/353776.terrain new file mode 100644 index 000000000..171d91ffe Binary files /dev/null and b/public/terrain/19/858541/353776.terrain differ diff --git a/public/terrain/19/858541/353777.terrain b/public/terrain/19/858541/353777.terrain new file mode 100644 index 000000000..7246db1b9 Binary files /dev/null and b/public/terrain/19/858541/353777.terrain differ diff --git a/public/terrain/19/858541/353778.terrain b/public/terrain/19/858541/353778.terrain new file mode 100644 index 000000000..adfe3fc62 Binary files /dev/null and b/public/terrain/19/858541/353778.terrain differ diff --git a/public/terrain/19/858541/353779.terrain b/public/terrain/19/858541/353779.terrain new file mode 100644 index 000000000..695520efb Binary files /dev/null and b/public/terrain/19/858541/353779.terrain differ diff --git a/public/terrain/19/858541/353780.terrain b/public/terrain/19/858541/353780.terrain new file mode 100644 index 000000000..ac7d6446b Binary files /dev/null and b/public/terrain/19/858541/353780.terrain differ diff --git a/public/terrain/19/858541/353781.terrain b/public/terrain/19/858541/353781.terrain new file mode 100644 index 000000000..38aa5e4c9 Binary files /dev/null and b/public/terrain/19/858541/353781.terrain differ diff --git a/public/terrain/19/858541/353782.terrain b/public/terrain/19/858541/353782.terrain new file mode 100644 index 000000000..1494556a3 Binary files /dev/null and b/public/terrain/19/858541/353782.terrain differ diff --git a/public/terrain/19/858541/353783.terrain b/public/terrain/19/858541/353783.terrain new file mode 100644 index 000000000..d999adb92 Binary files /dev/null and b/public/terrain/19/858541/353783.terrain differ diff --git a/public/terrain/19/858541/353784.terrain b/public/terrain/19/858541/353784.terrain new file mode 100644 index 000000000..3a04474a6 Binary files /dev/null and b/public/terrain/19/858541/353784.terrain differ diff --git a/public/terrain/19/858541/353785.terrain b/public/terrain/19/858541/353785.terrain new file mode 100644 index 000000000..efd7b6cc5 Binary files /dev/null and b/public/terrain/19/858541/353785.terrain differ diff --git a/public/terrain/19/858541/353786.terrain b/public/terrain/19/858541/353786.terrain new file mode 100644 index 000000000..9d8361d30 Binary files /dev/null and b/public/terrain/19/858541/353786.terrain differ diff --git a/public/terrain/19/858541/353787.terrain b/public/terrain/19/858541/353787.terrain new file mode 100644 index 000000000..2b7c99dc8 Binary files /dev/null and b/public/terrain/19/858541/353787.terrain differ diff --git a/public/terrain/19/858541/353788.terrain b/public/terrain/19/858541/353788.terrain new file mode 100644 index 000000000..88a02b3e9 Binary files /dev/null and b/public/terrain/19/858541/353788.terrain differ diff --git a/public/terrain/19/858541/353789.terrain b/public/terrain/19/858541/353789.terrain new file mode 100644 index 000000000..a7e50ff93 Binary files /dev/null and b/public/terrain/19/858541/353789.terrain differ diff --git a/public/terrain/19/858541/353790.terrain b/public/terrain/19/858541/353790.terrain new file mode 100644 index 000000000..48231bacc Binary files /dev/null and b/public/terrain/19/858541/353790.terrain differ diff --git a/public/terrain/19/858541/353791.terrain b/public/terrain/19/858541/353791.terrain new file mode 100644 index 000000000..69138a883 Binary files /dev/null and b/public/terrain/19/858541/353791.terrain differ diff --git a/public/terrain/19/858541/353792.terrain b/public/terrain/19/858541/353792.terrain new file mode 100644 index 000000000..dcf1e60da Binary files /dev/null and b/public/terrain/19/858541/353792.terrain differ diff --git a/public/terrain/19/858541/353793.terrain b/public/terrain/19/858541/353793.terrain new file mode 100644 index 000000000..02504d777 Binary files /dev/null and b/public/terrain/19/858541/353793.terrain differ diff --git a/public/terrain/19/858541/353794.terrain b/public/terrain/19/858541/353794.terrain new file mode 100644 index 000000000..9cf42a436 Binary files /dev/null and b/public/terrain/19/858541/353794.terrain differ diff --git a/public/terrain/19/858541/353795.terrain b/public/terrain/19/858541/353795.terrain new file mode 100644 index 000000000..540499f5e Binary files /dev/null and b/public/terrain/19/858541/353795.terrain differ diff --git a/public/terrain/19/858541/353796.terrain b/public/terrain/19/858541/353796.terrain new file mode 100644 index 000000000..437d548db Binary files /dev/null and b/public/terrain/19/858541/353796.terrain differ diff --git a/public/terrain/19/858541/353797.terrain b/public/terrain/19/858541/353797.terrain new file mode 100644 index 000000000..7d14fc549 Binary files /dev/null and b/public/terrain/19/858541/353797.terrain differ diff --git a/public/terrain/19/858541/353798.terrain b/public/terrain/19/858541/353798.terrain new file mode 100644 index 000000000..87d949746 Binary files /dev/null and b/public/terrain/19/858541/353798.terrain differ diff --git a/public/terrain/19/858541/353799.terrain b/public/terrain/19/858541/353799.terrain new file mode 100644 index 000000000..44aee02ce Binary files /dev/null and b/public/terrain/19/858541/353799.terrain differ diff --git a/public/terrain/19/858541/353800.terrain b/public/terrain/19/858541/353800.terrain new file mode 100644 index 000000000..7023f5fe6 Binary files /dev/null and b/public/terrain/19/858541/353800.terrain differ diff --git a/public/terrain/19/858541/353801.terrain b/public/terrain/19/858541/353801.terrain new file mode 100644 index 000000000..97298e823 Binary files /dev/null and b/public/terrain/19/858541/353801.terrain differ diff --git a/public/terrain/19/858541/353802.terrain b/public/terrain/19/858541/353802.terrain new file mode 100644 index 000000000..179913d97 Binary files /dev/null and b/public/terrain/19/858541/353802.terrain differ diff --git a/public/terrain/19/858541/353803.terrain b/public/terrain/19/858541/353803.terrain new file mode 100644 index 000000000..9d5d6e85c Binary files /dev/null and b/public/terrain/19/858541/353803.terrain differ diff --git a/public/terrain/19/858541/353804.terrain b/public/terrain/19/858541/353804.terrain new file mode 100644 index 000000000..295246a02 Binary files /dev/null and b/public/terrain/19/858541/353804.terrain differ diff --git a/public/terrain/19/858541/353805.terrain b/public/terrain/19/858541/353805.terrain new file mode 100644 index 000000000..848bb855c Binary files /dev/null and b/public/terrain/19/858541/353805.terrain differ diff --git a/public/terrain/19/858541/353806.terrain b/public/terrain/19/858541/353806.terrain new file mode 100644 index 000000000..540934b06 Binary files /dev/null and b/public/terrain/19/858541/353806.terrain differ diff --git a/public/terrain/19/858541/353807.terrain b/public/terrain/19/858541/353807.terrain new file mode 100644 index 000000000..aaa002572 Binary files /dev/null and b/public/terrain/19/858541/353807.terrain differ diff --git a/public/terrain/19/858541/353808.terrain b/public/terrain/19/858541/353808.terrain new file mode 100644 index 000000000..f6d8c31c1 Binary files /dev/null and b/public/terrain/19/858541/353808.terrain differ diff --git a/public/terrain/19/858541/353809.terrain b/public/terrain/19/858541/353809.terrain new file mode 100644 index 000000000..3c23329d4 Binary files /dev/null and b/public/terrain/19/858541/353809.terrain differ diff --git a/public/terrain/19/858541/353810.terrain b/public/terrain/19/858541/353810.terrain new file mode 100644 index 000000000..bb9cb7a62 Binary files /dev/null and b/public/terrain/19/858541/353810.terrain differ diff --git a/public/terrain/19/858541/353811.terrain b/public/terrain/19/858541/353811.terrain new file mode 100644 index 000000000..44122ac4f Binary files /dev/null and b/public/terrain/19/858541/353811.terrain differ diff --git a/public/terrain/19/858541/353812.terrain b/public/terrain/19/858541/353812.terrain new file mode 100644 index 000000000..f9967bfd4 Binary files /dev/null and b/public/terrain/19/858541/353812.terrain differ diff --git a/public/terrain/19/858541/353813.terrain b/public/terrain/19/858541/353813.terrain new file mode 100644 index 000000000..44cdd235d Binary files /dev/null and b/public/terrain/19/858541/353813.terrain differ diff --git a/public/terrain/19/858541/353814.terrain b/public/terrain/19/858541/353814.terrain new file mode 100644 index 000000000..2657e4240 Binary files /dev/null and b/public/terrain/19/858541/353814.terrain differ diff --git a/public/terrain/19/858541/353815.terrain b/public/terrain/19/858541/353815.terrain new file mode 100644 index 000000000..29048c741 Binary files /dev/null and b/public/terrain/19/858541/353815.terrain differ diff --git a/public/terrain/19/858541/353816.terrain b/public/terrain/19/858541/353816.terrain new file mode 100644 index 000000000..e2cb53c88 Binary files /dev/null and b/public/terrain/19/858541/353816.terrain differ diff --git a/public/terrain/19/858541/353817.terrain b/public/terrain/19/858541/353817.terrain new file mode 100644 index 000000000..cf5b49743 Binary files /dev/null and b/public/terrain/19/858541/353817.terrain differ diff --git a/public/terrain/19/858541/353818.terrain b/public/terrain/19/858541/353818.terrain new file mode 100644 index 000000000..3c84c2e94 Binary files /dev/null and b/public/terrain/19/858541/353818.terrain differ diff --git a/public/terrain/19/858541/353819.terrain b/public/terrain/19/858541/353819.terrain new file mode 100644 index 000000000..f75f9736d Binary files /dev/null and b/public/terrain/19/858541/353819.terrain differ diff --git a/public/terrain/19/858541/353820.terrain b/public/terrain/19/858541/353820.terrain new file mode 100644 index 000000000..cd6079f0e Binary files /dev/null and b/public/terrain/19/858541/353820.terrain differ diff --git a/public/terrain/19/858541/353821.terrain b/public/terrain/19/858541/353821.terrain new file mode 100644 index 000000000..c15729ca0 Binary files /dev/null and b/public/terrain/19/858541/353821.terrain differ diff --git a/public/terrain/19/858541/353822.terrain b/public/terrain/19/858541/353822.terrain new file mode 100644 index 000000000..3906310f6 Binary files /dev/null and b/public/terrain/19/858541/353822.terrain differ diff --git a/public/terrain/19/858541/353823.terrain b/public/terrain/19/858541/353823.terrain new file mode 100644 index 000000000..f47d69a59 Binary files /dev/null and b/public/terrain/19/858541/353823.terrain differ diff --git a/public/terrain/19/858541/353824.terrain b/public/terrain/19/858541/353824.terrain new file mode 100644 index 000000000..b0efa2af2 Binary files /dev/null and b/public/terrain/19/858541/353824.terrain differ diff --git a/public/terrain/19/858541/353825.terrain b/public/terrain/19/858541/353825.terrain new file mode 100644 index 000000000..4bfcb9361 Binary files /dev/null and b/public/terrain/19/858541/353825.terrain differ diff --git a/public/terrain/19/858541/353826.terrain b/public/terrain/19/858541/353826.terrain new file mode 100644 index 000000000..65f711b50 Binary files /dev/null and b/public/terrain/19/858541/353826.terrain differ diff --git a/public/terrain/19/858541/353827.terrain b/public/terrain/19/858541/353827.terrain new file mode 100644 index 000000000..5cf6a6e57 Binary files /dev/null and b/public/terrain/19/858541/353827.terrain differ diff --git a/public/terrain/19/858541/353828.terrain b/public/terrain/19/858541/353828.terrain new file mode 100644 index 000000000..fee731931 Binary files /dev/null and b/public/terrain/19/858541/353828.terrain differ diff --git a/public/terrain/19/858541/353829.terrain b/public/terrain/19/858541/353829.terrain new file mode 100644 index 000000000..76a726bd3 Binary files /dev/null and b/public/terrain/19/858541/353829.terrain differ diff --git a/public/terrain/19/858541/353830.terrain b/public/terrain/19/858541/353830.terrain new file mode 100644 index 000000000..ca40341ec Binary files /dev/null and b/public/terrain/19/858541/353830.terrain differ diff --git a/public/terrain/19/858541/353831.terrain b/public/terrain/19/858541/353831.terrain new file mode 100644 index 000000000..85df784f8 Binary files /dev/null and b/public/terrain/19/858541/353831.terrain differ diff --git a/public/terrain/19/858541/353832.terrain b/public/terrain/19/858541/353832.terrain new file mode 100644 index 000000000..e7818d847 Binary files /dev/null and b/public/terrain/19/858541/353832.terrain differ diff --git a/public/terrain/19/858541/353833.terrain b/public/terrain/19/858541/353833.terrain new file mode 100644 index 000000000..4fb777b42 Binary files /dev/null and b/public/terrain/19/858541/353833.terrain differ diff --git a/public/terrain/19/858541/353834.terrain b/public/terrain/19/858541/353834.terrain new file mode 100644 index 000000000..be96663a4 Binary files /dev/null and b/public/terrain/19/858541/353834.terrain differ diff --git a/public/terrain/19/858541/353835.terrain b/public/terrain/19/858541/353835.terrain new file mode 100644 index 000000000..cd77617b0 Binary files /dev/null and b/public/terrain/19/858541/353835.terrain differ diff --git a/public/terrain/19/858541/353836.terrain b/public/terrain/19/858541/353836.terrain new file mode 100644 index 000000000..991c88edc Binary files /dev/null and b/public/terrain/19/858541/353836.terrain differ diff --git a/public/terrain/19/858541/353837.terrain b/public/terrain/19/858541/353837.terrain new file mode 100644 index 000000000..4cebae443 Binary files /dev/null and b/public/terrain/19/858541/353837.terrain differ diff --git a/public/terrain/19/858541/353838.terrain b/public/terrain/19/858541/353838.terrain new file mode 100644 index 000000000..479a5fafc Binary files /dev/null and b/public/terrain/19/858541/353838.terrain differ diff --git a/public/terrain/19/858541/353839.terrain b/public/terrain/19/858541/353839.terrain new file mode 100644 index 000000000..3abb1bd5f Binary files /dev/null and b/public/terrain/19/858541/353839.terrain differ diff --git a/public/terrain/19/858541/353840.terrain b/public/terrain/19/858541/353840.terrain new file mode 100644 index 000000000..e4b4fc1a3 Binary files /dev/null and b/public/terrain/19/858541/353840.terrain differ diff --git a/public/terrain/19/858541/353841.terrain b/public/terrain/19/858541/353841.terrain new file mode 100644 index 000000000..3cf2623a3 Binary files /dev/null and b/public/terrain/19/858541/353841.terrain differ diff --git a/public/terrain/19/858541/353842.terrain b/public/terrain/19/858541/353842.terrain new file mode 100644 index 000000000..48e4ebc42 Binary files /dev/null and b/public/terrain/19/858541/353842.terrain differ diff --git a/public/terrain/19/858541/353843.terrain b/public/terrain/19/858541/353843.terrain new file mode 100644 index 000000000..9584faa22 Binary files /dev/null and b/public/terrain/19/858541/353843.terrain differ diff --git a/public/terrain/19/858541/353844.terrain b/public/terrain/19/858541/353844.terrain new file mode 100644 index 000000000..7df5ca2c3 Binary files /dev/null and b/public/terrain/19/858541/353844.terrain differ diff --git a/public/terrain/19/858541/353845.terrain b/public/terrain/19/858541/353845.terrain new file mode 100644 index 000000000..7aa23d803 Binary files /dev/null and b/public/terrain/19/858541/353845.terrain differ diff --git a/public/terrain/19/858541/353846.terrain b/public/terrain/19/858541/353846.terrain new file mode 100644 index 000000000..61f9d5bb0 Binary files /dev/null and b/public/terrain/19/858541/353846.terrain differ diff --git a/public/terrain/19/858541/353847.terrain b/public/terrain/19/858541/353847.terrain new file mode 100644 index 000000000..3bfea69ef Binary files /dev/null and b/public/terrain/19/858541/353847.terrain differ diff --git a/public/terrain/19/858541/353848.terrain b/public/terrain/19/858541/353848.terrain new file mode 100644 index 000000000..d3ec0c121 Binary files /dev/null and b/public/terrain/19/858541/353848.terrain differ diff --git a/public/terrain/19/858541/353849.terrain b/public/terrain/19/858541/353849.terrain new file mode 100644 index 000000000..8051ae9ba Binary files /dev/null and b/public/terrain/19/858541/353849.terrain differ diff --git a/public/terrain/19/858541/353850.terrain b/public/terrain/19/858541/353850.terrain new file mode 100644 index 000000000..bb0ec27b6 Binary files /dev/null and b/public/terrain/19/858541/353850.terrain differ diff --git a/public/terrain/19/858541/353851.terrain b/public/terrain/19/858541/353851.terrain new file mode 100644 index 000000000..80bc738c8 Binary files /dev/null and b/public/terrain/19/858541/353851.terrain differ diff --git a/public/terrain/19/858541/353852.terrain b/public/terrain/19/858541/353852.terrain new file mode 100644 index 000000000..9eebbbb7a Binary files /dev/null and b/public/terrain/19/858541/353852.terrain differ diff --git a/public/terrain/19/858541/353853.terrain b/public/terrain/19/858541/353853.terrain new file mode 100644 index 000000000..f9bba82cf Binary files /dev/null and b/public/terrain/19/858541/353853.terrain differ diff --git a/public/terrain/19/858541/353854.terrain b/public/terrain/19/858541/353854.terrain new file mode 100644 index 000000000..b03dfcb5d Binary files /dev/null and b/public/terrain/19/858541/353854.terrain differ diff --git a/public/terrain/19/858541/353855.terrain b/public/terrain/19/858541/353855.terrain new file mode 100644 index 000000000..35b86e3d2 Binary files /dev/null and b/public/terrain/19/858541/353855.terrain differ diff --git a/public/terrain/19/858541/353856.terrain b/public/terrain/19/858541/353856.terrain new file mode 100644 index 000000000..8d982e704 Binary files /dev/null and b/public/terrain/19/858541/353856.terrain differ diff --git a/public/terrain/19/858541/353857.terrain b/public/terrain/19/858541/353857.terrain new file mode 100644 index 000000000..0af1676c2 Binary files /dev/null and b/public/terrain/19/858541/353857.terrain differ diff --git a/public/terrain/19/858541/353858.terrain b/public/terrain/19/858541/353858.terrain new file mode 100644 index 000000000..ad21f6bb2 Binary files /dev/null and b/public/terrain/19/858541/353858.terrain differ diff --git a/public/terrain/19/858541/353859.terrain b/public/terrain/19/858541/353859.terrain new file mode 100644 index 000000000..2c4104b81 Binary files /dev/null and b/public/terrain/19/858541/353859.terrain differ diff --git a/public/terrain/19/858541/353860.terrain b/public/terrain/19/858541/353860.terrain new file mode 100644 index 000000000..ce76372d7 Binary files /dev/null and b/public/terrain/19/858541/353860.terrain differ diff --git a/public/terrain/19/858541/353861.terrain b/public/terrain/19/858541/353861.terrain new file mode 100644 index 000000000..be1c5eeaf Binary files /dev/null and b/public/terrain/19/858541/353861.terrain differ diff --git a/public/terrain/19/858541/353862.terrain b/public/terrain/19/858541/353862.terrain new file mode 100644 index 000000000..7089bad24 Binary files /dev/null and b/public/terrain/19/858541/353862.terrain differ diff --git a/public/terrain/19/858541/353863.terrain b/public/terrain/19/858541/353863.terrain new file mode 100644 index 000000000..23142a4dd Binary files /dev/null and b/public/terrain/19/858541/353863.terrain differ diff --git a/public/terrain/19/858541/353864.terrain b/public/terrain/19/858541/353864.terrain new file mode 100644 index 000000000..f306133ce Binary files /dev/null and b/public/terrain/19/858541/353864.terrain differ diff --git a/public/terrain/19/858541/353865.terrain b/public/terrain/19/858541/353865.terrain new file mode 100644 index 000000000..9d8bc13c5 Binary files /dev/null and b/public/terrain/19/858541/353865.terrain differ diff --git a/public/terrain/19/858541/353866.terrain b/public/terrain/19/858541/353866.terrain new file mode 100644 index 000000000..c80e1398f Binary files /dev/null and b/public/terrain/19/858541/353866.terrain differ diff --git a/public/terrain/19/858541/353867.terrain b/public/terrain/19/858541/353867.terrain new file mode 100644 index 000000000..f16980890 Binary files /dev/null and b/public/terrain/19/858541/353867.terrain differ diff --git a/public/terrain/19/858541/353868.terrain b/public/terrain/19/858541/353868.terrain new file mode 100644 index 000000000..7b8cb1a76 Binary files /dev/null and b/public/terrain/19/858541/353868.terrain differ diff --git a/public/terrain/19/858541/353869.terrain b/public/terrain/19/858541/353869.terrain new file mode 100644 index 000000000..10100df51 Binary files /dev/null and b/public/terrain/19/858541/353869.terrain differ diff --git a/public/terrain/19/858541/353870.terrain b/public/terrain/19/858541/353870.terrain new file mode 100644 index 000000000..ef01daa89 Binary files /dev/null and b/public/terrain/19/858541/353870.terrain differ diff --git a/public/terrain/19/858541/353871.terrain b/public/terrain/19/858541/353871.terrain new file mode 100644 index 000000000..ce0559cc4 Binary files /dev/null and b/public/terrain/19/858541/353871.terrain differ diff --git a/public/terrain/19/858541/353872.terrain b/public/terrain/19/858541/353872.terrain new file mode 100644 index 000000000..56f83ce2e Binary files /dev/null and b/public/terrain/19/858541/353872.terrain differ diff --git a/public/terrain/19/858541/353873.terrain b/public/terrain/19/858541/353873.terrain new file mode 100644 index 000000000..4adee8134 Binary files /dev/null and b/public/terrain/19/858541/353873.terrain differ diff --git a/public/terrain/19/858541/353874.terrain b/public/terrain/19/858541/353874.terrain new file mode 100644 index 000000000..fedbc0a9e Binary files /dev/null and b/public/terrain/19/858541/353874.terrain differ diff --git a/public/terrain/19/858541/353875.terrain b/public/terrain/19/858541/353875.terrain new file mode 100644 index 000000000..f49a2286c Binary files /dev/null and b/public/terrain/19/858541/353875.terrain differ diff --git a/public/terrain/19/858541/353876.terrain b/public/terrain/19/858541/353876.terrain new file mode 100644 index 000000000..6e08422e7 Binary files /dev/null and b/public/terrain/19/858541/353876.terrain differ diff --git a/public/terrain/19/858541/353877.terrain b/public/terrain/19/858541/353877.terrain new file mode 100644 index 000000000..495cdb36f Binary files /dev/null and b/public/terrain/19/858541/353877.terrain differ diff --git a/public/terrain/19/858541/353878.terrain b/public/terrain/19/858541/353878.terrain new file mode 100644 index 000000000..9133ac218 Binary files /dev/null and b/public/terrain/19/858541/353878.terrain differ diff --git a/public/terrain/19/858541/353879.terrain b/public/terrain/19/858541/353879.terrain new file mode 100644 index 000000000..a421bbe2b Binary files /dev/null and b/public/terrain/19/858541/353879.terrain differ diff --git a/public/terrain/19/858541/353880.terrain b/public/terrain/19/858541/353880.terrain new file mode 100644 index 000000000..5d4acfa96 Binary files /dev/null and b/public/terrain/19/858541/353880.terrain differ diff --git a/public/terrain/19/858541/353881.terrain b/public/terrain/19/858541/353881.terrain new file mode 100644 index 000000000..3f99e4846 Binary files /dev/null and b/public/terrain/19/858541/353881.terrain differ diff --git a/public/terrain/19/858541/353882.terrain b/public/terrain/19/858541/353882.terrain new file mode 100644 index 000000000..8a36c157e Binary files /dev/null and b/public/terrain/19/858541/353882.terrain differ diff --git a/public/terrain/19/858541/353883.terrain b/public/terrain/19/858541/353883.terrain new file mode 100644 index 000000000..471fa9a5a Binary files /dev/null and b/public/terrain/19/858541/353883.terrain differ diff --git a/public/terrain/19/858541/353884.terrain b/public/terrain/19/858541/353884.terrain new file mode 100644 index 000000000..5d40c984e Binary files /dev/null and b/public/terrain/19/858541/353884.terrain differ diff --git a/public/terrain/19/858541/353885.terrain b/public/terrain/19/858541/353885.terrain new file mode 100644 index 000000000..8b2da29b9 Binary files /dev/null and b/public/terrain/19/858541/353885.terrain differ diff --git a/public/terrain/19/858541/353886.terrain b/public/terrain/19/858541/353886.terrain new file mode 100644 index 000000000..0412a7d12 Binary files /dev/null and b/public/terrain/19/858541/353886.terrain differ diff --git a/public/terrain/19/858541/353887.terrain b/public/terrain/19/858541/353887.terrain new file mode 100644 index 000000000..ccd5419a5 Binary files /dev/null and b/public/terrain/19/858541/353887.terrain differ diff --git a/public/terrain/19/858541/353888.terrain b/public/terrain/19/858541/353888.terrain new file mode 100644 index 000000000..962f80a85 Binary files /dev/null and b/public/terrain/19/858541/353888.terrain differ diff --git a/public/terrain/19/858541/353889.terrain b/public/terrain/19/858541/353889.terrain new file mode 100644 index 000000000..beff30160 Binary files /dev/null and b/public/terrain/19/858541/353889.terrain differ diff --git a/public/terrain/19/858541/353890.terrain b/public/terrain/19/858541/353890.terrain new file mode 100644 index 000000000..35d254513 Binary files /dev/null and b/public/terrain/19/858541/353890.terrain differ diff --git a/public/terrain/19/858541/353891.terrain b/public/terrain/19/858541/353891.terrain new file mode 100644 index 000000000..e0c91c5b1 Binary files /dev/null and b/public/terrain/19/858541/353891.terrain differ diff --git a/public/terrain/19/858541/353892.terrain b/public/terrain/19/858541/353892.terrain new file mode 100644 index 000000000..392619f83 Binary files /dev/null and b/public/terrain/19/858541/353892.terrain differ diff --git a/public/terrain/19/858541/353893.terrain b/public/terrain/19/858541/353893.terrain new file mode 100644 index 000000000..d9dbc37e2 Binary files /dev/null and b/public/terrain/19/858541/353893.terrain differ diff --git a/public/terrain/19/858541/353894.terrain b/public/terrain/19/858541/353894.terrain new file mode 100644 index 000000000..3e3d9d26d Binary files /dev/null and b/public/terrain/19/858541/353894.terrain differ diff --git a/public/terrain/19/858541/353895.terrain b/public/terrain/19/858541/353895.terrain new file mode 100644 index 000000000..65b7ba07d Binary files /dev/null and b/public/terrain/19/858541/353895.terrain differ diff --git a/public/terrain/19/858541/353896.terrain b/public/terrain/19/858541/353896.terrain new file mode 100644 index 000000000..b33f7011d Binary files /dev/null and b/public/terrain/19/858541/353896.terrain differ diff --git a/public/terrain/19/858541/353897.terrain b/public/terrain/19/858541/353897.terrain new file mode 100644 index 000000000..7b81a44e7 Binary files /dev/null and b/public/terrain/19/858541/353897.terrain differ diff --git a/public/terrain/19/858541/353898.terrain b/public/terrain/19/858541/353898.terrain new file mode 100644 index 000000000..3a4939d46 Binary files /dev/null and b/public/terrain/19/858541/353898.terrain differ diff --git a/public/terrain/19/858541/353899.terrain b/public/terrain/19/858541/353899.terrain new file mode 100644 index 000000000..fdf70ccde Binary files /dev/null and b/public/terrain/19/858541/353899.terrain differ diff --git a/public/terrain/19/858541/353900.terrain b/public/terrain/19/858541/353900.terrain new file mode 100644 index 000000000..53afde3d4 Binary files /dev/null and b/public/terrain/19/858541/353900.terrain differ diff --git a/public/terrain/19/858541/353901.terrain b/public/terrain/19/858541/353901.terrain new file mode 100644 index 000000000..bc63a3825 Binary files /dev/null and b/public/terrain/19/858541/353901.terrain differ diff --git a/public/terrain/19/858541/353902.terrain b/public/terrain/19/858541/353902.terrain new file mode 100644 index 000000000..7a06ec993 Binary files /dev/null and b/public/terrain/19/858541/353902.terrain differ diff --git a/public/terrain/19/858541/353903.terrain b/public/terrain/19/858541/353903.terrain new file mode 100644 index 000000000..fbd782485 Binary files /dev/null and b/public/terrain/19/858541/353903.terrain differ diff --git a/public/terrain/19/858541/353904.terrain b/public/terrain/19/858541/353904.terrain new file mode 100644 index 000000000..44dda30e0 Binary files /dev/null and b/public/terrain/19/858541/353904.terrain differ diff --git a/public/terrain/19/858541/353905.terrain b/public/terrain/19/858541/353905.terrain new file mode 100644 index 000000000..8e0111a59 Binary files /dev/null and b/public/terrain/19/858541/353905.terrain differ diff --git a/public/terrain/19/858541/353906.terrain b/public/terrain/19/858541/353906.terrain new file mode 100644 index 000000000..7a1b33d0c Binary files /dev/null and b/public/terrain/19/858541/353906.terrain differ diff --git a/public/terrain/19/858541/353907.terrain b/public/terrain/19/858541/353907.terrain new file mode 100644 index 000000000..44188445c Binary files /dev/null and b/public/terrain/19/858541/353907.terrain differ diff --git a/public/terrain/19/858541/353908.terrain b/public/terrain/19/858541/353908.terrain new file mode 100644 index 000000000..e0858c8f7 Binary files /dev/null and b/public/terrain/19/858541/353908.terrain differ diff --git a/public/terrain/19/858541/353909.terrain b/public/terrain/19/858541/353909.terrain new file mode 100644 index 000000000..bea4ae4a9 Binary files /dev/null and b/public/terrain/19/858541/353909.terrain differ diff --git a/public/terrain/19/858541/353910.terrain b/public/terrain/19/858541/353910.terrain new file mode 100644 index 000000000..8c3e6c239 Binary files /dev/null and b/public/terrain/19/858541/353910.terrain differ diff --git a/public/terrain/19/858541/353911.terrain b/public/terrain/19/858541/353911.terrain new file mode 100644 index 000000000..d10da5c6b Binary files /dev/null and b/public/terrain/19/858541/353911.terrain differ diff --git a/public/terrain/19/858541/353912.terrain b/public/terrain/19/858541/353912.terrain new file mode 100644 index 000000000..c98660654 Binary files /dev/null and b/public/terrain/19/858541/353912.terrain differ diff --git a/public/terrain/19/858541/353913.terrain b/public/terrain/19/858541/353913.terrain new file mode 100644 index 000000000..4abec533c Binary files /dev/null and b/public/terrain/19/858541/353913.terrain differ diff --git a/public/terrain/19/858541/353914.terrain b/public/terrain/19/858541/353914.terrain new file mode 100644 index 000000000..ce20b93fe Binary files /dev/null and b/public/terrain/19/858541/353914.terrain differ diff --git a/public/terrain/19/858541/353915.terrain b/public/terrain/19/858541/353915.terrain new file mode 100644 index 000000000..c12066d1e Binary files /dev/null and b/public/terrain/19/858541/353915.terrain differ diff --git a/public/terrain/19/858541/353916.terrain b/public/terrain/19/858541/353916.terrain new file mode 100644 index 000000000..c8d692587 Binary files /dev/null and b/public/terrain/19/858541/353916.terrain differ diff --git a/public/terrain/19/858541/353917.terrain b/public/terrain/19/858541/353917.terrain new file mode 100644 index 000000000..0345b4765 Binary files /dev/null and b/public/terrain/19/858541/353917.terrain differ diff --git a/public/terrain/19/858541/353918.terrain b/public/terrain/19/858541/353918.terrain new file mode 100644 index 000000000..03dfb2392 Binary files /dev/null and b/public/terrain/19/858541/353918.terrain differ diff --git a/public/terrain/19/858541/353919.terrain b/public/terrain/19/858541/353919.terrain new file mode 100644 index 000000000..c72c87e13 Binary files /dev/null and b/public/terrain/19/858541/353919.terrain differ diff --git a/public/terrain/19/858541/353920.terrain b/public/terrain/19/858541/353920.terrain new file mode 100644 index 000000000..52f748ffa Binary files /dev/null and b/public/terrain/19/858541/353920.terrain differ diff --git a/public/terrain/19/858541/353921.terrain b/public/terrain/19/858541/353921.terrain new file mode 100644 index 000000000..12f41d960 Binary files /dev/null and b/public/terrain/19/858541/353921.terrain differ diff --git a/public/terrain/19/858541/353922.terrain b/public/terrain/19/858541/353922.terrain new file mode 100644 index 000000000..ff543da04 Binary files /dev/null and b/public/terrain/19/858541/353922.terrain differ diff --git a/public/terrain/19/858541/353923.terrain b/public/terrain/19/858541/353923.terrain new file mode 100644 index 000000000..a082b48a5 Binary files /dev/null and b/public/terrain/19/858541/353923.terrain differ diff --git a/public/terrain/19/858541/353924.terrain b/public/terrain/19/858541/353924.terrain new file mode 100644 index 000000000..ac1809ba6 Binary files /dev/null and b/public/terrain/19/858541/353924.terrain differ diff --git a/public/terrain/19/858541/353925.terrain b/public/terrain/19/858541/353925.terrain new file mode 100644 index 000000000..b41cc67a2 Binary files /dev/null and b/public/terrain/19/858541/353925.terrain differ diff --git a/public/terrain/19/858541/353926.terrain b/public/terrain/19/858541/353926.terrain new file mode 100644 index 000000000..1bcdef00e Binary files /dev/null and b/public/terrain/19/858541/353926.terrain differ diff --git a/public/terrain/19/858541/353927.terrain b/public/terrain/19/858541/353927.terrain new file mode 100644 index 000000000..21a63aa90 Binary files /dev/null and b/public/terrain/19/858541/353927.terrain differ diff --git a/public/terrain/19/858541/353928.terrain b/public/terrain/19/858541/353928.terrain new file mode 100644 index 000000000..0a3b8f67b Binary files /dev/null and b/public/terrain/19/858541/353928.terrain differ diff --git a/public/terrain/19/858541/353929.terrain b/public/terrain/19/858541/353929.terrain new file mode 100644 index 000000000..823c51f18 Binary files /dev/null and b/public/terrain/19/858541/353929.terrain differ diff --git a/public/terrain/19/858541/353930.terrain b/public/terrain/19/858541/353930.terrain new file mode 100644 index 000000000..20aeb5a98 Binary files /dev/null and b/public/terrain/19/858541/353930.terrain differ diff --git a/public/terrain/19/858541/353931.terrain b/public/terrain/19/858541/353931.terrain new file mode 100644 index 000000000..79e822423 Binary files /dev/null and b/public/terrain/19/858541/353931.terrain differ diff --git a/public/terrain/19/858541/353932.terrain b/public/terrain/19/858541/353932.terrain new file mode 100644 index 000000000..8f4540f57 Binary files /dev/null and b/public/terrain/19/858541/353932.terrain differ diff --git a/public/terrain/19/858541/353933.terrain b/public/terrain/19/858541/353933.terrain new file mode 100644 index 000000000..ff65b5b1a Binary files /dev/null and b/public/terrain/19/858541/353933.terrain differ diff --git a/public/terrain/19/858541/353934.terrain b/public/terrain/19/858541/353934.terrain new file mode 100644 index 000000000..ab5a1072f Binary files /dev/null and b/public/terrain/19/858541/353934.terrain differ diff --git a/public/terrain/19/858541/353935.terrain b/public/terrain/19/858541/353935.terrain new file mode 100644 index 000000000..dc9a487e8 Binary files /dev/null and b/public/terrain/19/858541/353935.terrain differ diff --git a/public/terrain/19/858541/353936.terrain b/public/terrain/19/858541/353936.terrain new file mode 100644 index 000000000..eba713e62 Binary files /dev/null and b/public/terrain/19/858541/353936.terrain differ diff --git a/public/terrain/19/858541/353937.terrain b/public/terrain/19/858541/353937.terrain new file mode 100644 index 000000000..325d317e5 Binary files /dev/null and b/public/terrain/19/858541/353937.terrain differ diff --git a/public/terrain/19/858541/353938.terrain b/public/terrain/19/858541/353938.terrain new file mode 100644 index 000000000..8131c1e14 Binary files /dev/null and b/public/terrain/19/858541/353938.terrain differ diff --git a/public/terrain/19/858541/353939.terrain b/public/terrain/19/858541/353939.terrain new file mode 100644 index 000000000..2507dadec Binary files /dev/null and b/public/terrain/19/858541/353939.terrain differ diff --git a/public/terrain/19/858541/353940.terrain b/public/terrain/19/858541/353940.terrain new file mode 100644 index 000000000..8db1bdeaa Binary files /dev/null and b/public/terrain/19/858541/353940.terrain differ diff --git a/public/terrain/19/858541/353941.terrain b/public/terrain/19/858541/353941.terrain new file mode 100644 index 000000000..4475a589a Binary files /dev/null and b/public/terrain/19/858541/353941.terrain differ diff --git a/public/terrain/19/858541/353942.terrain b/public/terrain/19/858541/353942.terrain new file mode 100644 index 000000000..196adc4a0 Binary files /dev/null and b/public/terrain/19/858541/353942.terrain differ diff --git a/public/terrain/19/858541/353943.terrain b/public/terrain/19/858541/353943.terrain new file mode 100644 index 000000000..086de7dd1 Binary files /dev/null and b/public/terrain/19/858541/353943.terrain differ diff --git a/public/terrain/19/858541/353944.terrain b/public/terrain/19/858541/353944.terrain new file mode 100644 index 000000000..e9401d03f Binary files /dev/null and b/public/terrain/19/858541/353944.terrain differ diff --git a/public/terrain/19/858541/353945.terrain b/public/terrain/19/858541/353945.terrain new file mode 100644 index 000000000..f878e0d83 Binary files /dev/null and b/public/terrain/19/858541/353945.terrain differ diff --git a/public/terrain/19/858541/353946.terrain b/public/terrain/19/858541/353946.terrain new file mode 100644 index 000000000..7f707e938 Binary files /dev/null and b/public/terrain/19/858541/353946.terrain differ diff --git a/public/terrain/19/858541/353947.terrain b/public/terrain/19/858541/353947.terrain new file mode 100644 index 000000000..5dde34ed2 Binary files /dev/null and b/public/terrain/19/858541/353947.terrain differ diff --git a/public/terrain/19/858541/353948.terrain b/public/terrain/19/858541/353948.terrain new file mode 100644 index 000000000..5b47f91e7 Binary files /dev/null and b/public/terrain/19/858541/353948.terrain differ diff --git a/public/terrain/19/858541/353949.terrain b/public/terrain/19/858541/353949.terrain new file mode 100644 index 000000000..bf538bbbb Binary files /dev/null and b/public/terrain/19/858541/353949.terrain differ diff --git a/public/terrain/19/858541/353950.terrain b/public/terrain/19/858541/353950.terrain new file mode 100644 index 000000000..6dee5b929 Binary files /dev/null and b/public/terrain/19/858541/353950.terrain differ diff --git a/public/terrain/19/858541/353951.terrain b/public/terrain/19/858541/353951.terrain new file mode 100644 index 000000000..d8a1bf78f Binary files /dev/null and b/public/terrain/19/858541/353951.terrain differ diff --git a/public/terrain/19/858541/353952.terrain b/public/terrain/19/858541/353952.terrain new file mode 100644 index 000000000..5ba033cc4 Binary files /dev/null and b/public/terrain/19/858541/353952.terrain differ diff --git a/public/terrain/19/858541/353953.terrain b/public/terrain/19/858541/353953.terrain new file mode 100644 index 000000000..fafbc3a9f Binary files /dev/null and b/public/terrain/19/858541/353953.terrain differ diff --git a/public/terrain/19/858541/353954.terrain b/public/terrain/19/858541/353954.terrain new file mode 100644 index 000000000..96c2d9467 Binary files /dev/null and b/public/terrain/19/858541/353954.terrain differ diff --git a/public/terrain/19/858541/353955.terrain b/public/terrain/19/858541/353955.terrain new file mode 100644 index 000000000..1c9599d69 Binary files /dev/null and b/public/terrain/19/858541/353955.terrain differ diff --git a/public/terrain/19/858541/353956.terrain b/public/terrain/19/858541/353956.terrain new file mode 100644 index 000000000..75f0b5dcd Binary files /dev/null and b/public/terrain/19/858541/353956.terrain differ diff --git a/public/terrain/19/858541/353957.terrain b/public/terrain/19/858541/353957.terrain new file mode 100644 index 000000000..762d707f3 Binary files /dev/null and b/public/terrain/19/858541/353957.terrain differ diff --git a/public/terrain/19/858541/353958.terrain b/public/terrain/19/858541/353958.terrain new file mode 100644 index 000000000..0c27b6837 Binary files /dev/null and b/public/terrain/19/858541/353958.terrain differ diff --git a/public/terrain/19/858541/353959.terrain b/public/terrain/19/858541/353959.terrain new file mode 100644 index 000000000..f6a7c90c2 Binary files /dev/null and b/public/terrain/19/858541/353959.terrain differ diff --git a/public/terrain/19/858541/353960.terrain b/public/terrain/19/858541/353960.terrain new file mode 100644 index 000000000..65acdc7b5 Binary files /dev/null and b/public/terrain/19/858541/353960.terrain differ diff --git a/public/terrain/19/858541/353961.terrain b/public/terrain/19/858541/353961.terrain new file mode 100644 index 000000000..34aa3c69e Binary files /dev/null and b/public/terrain/19/858541/353961.terrain differ diff --git a/public/terrain/19/858541/353962.terrain b/public/terrain/19/858541/353962.terrain new file mode 100644 index 000000000..450b4b356 Binary files /dev/null and b/public/terrain/19/858541/353962.terrain differ diff --git a/public/terrain/19/858541/353963.terrain b/public/terrain/19/858541/353963.terrain new file mode 100644 index 000000000..4fce9d80d Binary files /dev/null and b/public/terrain/19/858541/353963.terrain differ diff --git a/public/terrain/19/858541/353964.terrain b/public/terrain/19/858541/353964.terrain new file mode 100644 index 000000000..3c46ba044 Binary files /dev/null and b/public/terrain/19/858541/353964.terrain differ diff --git a/public/terrain/19/858541/353965.terrain b/public/terrain/19/858541/353965.terrain new file mode 100644 index 000000000..7713d4c79 Binary files /dev/null and b/public/terrain/19/858541/353965.terrain differ diff --git a/public/terrain/19/858541/353966.terrain b/public/terrain/19/858541/353966.terrain new file mode 100644 index 000000000..a8dd2e54a Binary files /dev/null and b/public/terrain/19/858541/353966.terrain differ diff --git a/public/terrain/19/858541/353967.terrain b/public/terrain/19/858541/353967.terrain new file mode 100644 index 000000000..3991d2783 Binary files /dev/null and b/public/terrain/19/858541/353967.terrain differ diff --git a/public/terrain/19/858541/353968.terrain b/public/terrain/19/858541/353968.terrain new file mode 100644 index 000000000..124888bc5 Binary files /dev/null and b/public/terrain/19/858541/353968.terrain differ diff --git a/public/terrain/19/858541/353969.terrain b/public/terrain/19/858541/353969.terrain new file mode 100644 index 000000000..ddf0cfa5e Binary files /dev/null and b/public/terrain/19/858541/353969.terrain differ diff --git a/public/terrain/19/858541/353970.terrain b/public/terrain/19/858541/353970.terrain new file mode 100644 index 000000000..5e91dc9ce Binary files /dev/null and b/public/terrain/19/858541/353970.terrain differ diff --git a/public/terrain/19/858541/353971.terrain b/public/terrain/19/858541/353971.terrain new file mode 100644 index 000000000..ee07e6e9a Binary files /dev/null and b/public/terrain/19/858541/353971.terrain differ diff --git a/public/terrain/19/858541/353972.terrain b/public/terrain/19/858541/353972.terrain new file mode 100644 index 000000000..a430d0021 Binary files /dev/null and b/public/terrain/19/858541/353972.terrain differ diff --git a/public/terrain/19/858541/353973.terrain b/public/terrain/19/858541/353973.terrain new file mode 100644 index 000000000..f5896f986 Binary files /dev/null and b/public/terrain/19/858541/353973.terrain differ diff --git a/public/terrain/19/858541/353974.terrain b/public/terrain/19/858541/353974.terrain new file mode 100644 index 000000000..623a80803 Binary files /dev/null and b/public/terrain/19/858541/353974.terrain differ diff --git a/public/terrain/19/858541/353975.terrain b/public/terrain/19/858541/353975.terrain new file mode 100644 index 000000000..21fd2ab77 Binary files /dev/null and b/public/terrain/19/858541/353975.terrain differ diff --git a/public/terrain/19/858541/353976.terrain b/public/terrain/19/858541/353976.terrain new file mode 100644 index 000000000..ce171171b Binary files /dev/null and b/public/terrain/19/858541/353976.terrain differ diff --git a/public/terrain/19/858541/353977.terrain b/public/terrain/19/858541/353977.terrain new file mode 100644 index 000000000..6e1e2ec5a Binary files /dev/null and b/public/terrain/19/858541/353977.terrain differ diff --git a/public/terrain/19/858541/353978.terrain b/public/terrain/19/858541/353978.terrain new file mode 100644 index 000000000..3963fdfec Binary files /dev/null and b/public/terrain/19/858541/353978.terrain differ diff --git a/public/terrain/19/858541/353979.terrain b/public/terrain/19/858541/353979.terrain new file mode 100644 index 000000000..1e8e052c2 Binary files /dev/null and b/public/terrain/19/858541/353979.terrain differ diff --git a/public/terrain/19/858541/353980.terrain b/public/terrain/19/858541/353980.terrain new file mode 100644 index 000000000..8cddba18f Binary files /dev/null and b/public/terrain/19/858541/353980.terrain differ diff --git a/public/terrain/19/858541/353981.terrain b/public/terrain/19/858541/353981.terrain new file mode 100644 index 000000000..a0ef35853 Binary files /dev/null and b/public/terrain/19/858541/353981.terrain differ diff --git a/public/terrain/19/858541/353982.terrain b/public/terrain/19/858541/353982.terrain new file mode 100644 index 000000000..3a06ce1f5 Binary files /dev/null and b/public/terrain/19/858541/353982.terrain differ diff --git a/public/terrain/19/858541/353983.terrain b/public/terrain/19/858541/353983.terrain new file mode 100644 index 000000000..a13e41733 Binary files /dev/null and b/public/terrain/19/858541/353983.terrain differ diff --git a/public/terrain/19/858541/353984.terrain b/public/terrain/19/858541/353984.terrain new file mode 100644 index 000000000..7b8e1d864 Binary files /dev/null and b/public/terrain/19/858541/353984.terrain differ diff --git a/public/terrain/19/858541/353985.terrain b/public/terrain/19/858541/353985.terrain new file mode 100644 index 000000000..40a446e51 Binary files /dev/null and b/public/terrain/19/858541/353985.terrain differ diff --git a/public/terrain/19/858541/353986.terrain b/public/terrain/19/858541/353986.terrain new file mode 100644 index 000000000..d9ac579f1 Binary files /dev/null and b/public/terrain/19/858541/353986.terrain differ diff --git a/public/terrain/19/858541/353987.terrain b/public/terrain/19/858541/353987.terrain new file mode 100644 index 000000000..6c91189de Binary files /dev/null and b/public/terrain/19/858541/353987.terrain differ diff --git a/public/terrain/19/858541/353988.terrain b/public/terrain/19/858541/353988.terrain new file mode 100644 index 000000000..b78e612a3 Binary files /dev/null and b/public/terrain/19/858541/353988.terrain differ diff --git a/public/terrain/19/858541/353989.terrain b/public/terrain/19/858541/353989.terrain new file mode 100644 index 000000000..ce8cdc4cb Binary files /dev/null and b/public/terrain/19/858541/353989.terrain differ diff --git a/public/terrain/19/858541/353990.terrain b/public/terrain/19/858541/353990.terrain new file mode 100644 index 000000000..b1d45be96 Binary files /dev/null and b/public/terrain/19/858541/353990.terrain differ diff --git a/public/terrain/19/858541/353991.terrain b/public/terrain/19/858541/353991.terrain new file mode 100644 index 000000000..7446d47ae Binary files /dev/null and b/public/terrain/19/858541/353991.terrain differ diff --git a/public/terrain/19/858541/353992.terrain b/public/terrain/19/858541/353992.terrain new file mode 100644 index 000000000..673856238 Binary files /dev/null and b/public/terrain/19/858541/353992.terrain differ diff --git a/public/terrain/19/858541/353993.terrain b/public/terrain/19/858541/353993.terrain new file mode 100644 index 000000000..b8a6b9500 Binary files /dev/null and b/public/terrain/19/858541/353993.terrain differ diff --git a/public/terrain/19/858541/353994.terrain b/public/terrain/19/858541/353994.terrain new file mode 100644 index 000000000..b7ca08a1e Binary files /dev/null and b/public/terrain/19/858541/353994.terrain differ diff --git a/public/terrain/19/858541/353995.terrain b/public/terrain/19/858541/353995.terrain new file mode 100644 index 000000000..d88d3ff00 Binary files /dev/null and b/public/terrain/19/858541/353995.terrain differ diff --git a/public/terrain/19/858541/353996.terrain b/public/terrain/19/858541/353996.terrain new file mode 100644 index 000000000..a1754b94e Binary files /dev/null and b/public/terrain/19/858541/353996.terrain differ diff --git a/public/terrain/19/858541/353997.terrain b/public/terrain/19/858541/353997.terrain new file mode 100644 index 000000000..8e4dc0fb7 Binary files /dev/null and b/public/terrain/19/858541/353997.terrain differ diff --git a/public/terrain/19/858541/353998.terrain b/public/terrain/19/858541/353998.terrain new file mode 100644 index 000000000..74dff318a Binary files /dev/null and b/public/terrain/19/858541/353998.terrain differ diff --git a/public/terrain/19/858541/353999.terrain b/public/terrain/19/858541/353999.terrain new file mode 100644 index 000000000..1b28647bb Binary files /dev/null and b/public/terrain/19/858541/353999.terrain differ diff --git a/public/terrain/19/858541/354000.terrain b/public/terrain/19/858541/354000.terrain new file mode 100644 index 000000000..494061408 Binary files /dev/null and b/public/terrain/19/858541/354000.terrain differ diff --git a/public/terrain/19/858541/354001.terrain b/public/terrain/19/858541/354001.terrain new file mode 100644 index 000000000..3318d9e47 Binary files /dev/null and b/public/terrain/19/858541/354001.terrain differ diff --git a/public/terrain/19/858541/354002.terrain b/public/terrain/19/858541/354002.terrain new file mode 100644 index 000000000..909c3a7cf Binary files /dev/null and b/public/terrain/19/858541/354002.terrain differ diff --git a/public/terrain/19/858541/354003.terrain b/public/terrain/19/858541/354003.terrain new file mode 100644 index 000000000..aa2efc06a Binary files /dev/null and b/public/terrain/19/858541/354003.terrain differ diff --git a/public/terrain/19/858541/354004.terrain b/public/terrain/19/858541/354004.terrain new file mode 100644 index 000000000..f26fbdfcb Binary files /dev/null and b/public/terrain/19/858541/354004.terrain differ diff --git a/public/terrain/19/858541/354005.terrain b/public/terrain/19/858541/354005.terrain new file mode 100644 index 000000000..6c64743bc Binary files /dev/null and b/public/terrain/19/858541/354005.terrain differ diff --git a/public/terrain/19/858541/354006.terrain b/public/terrain/19/858541/354006.terrain new file mode 100644 index 000000000..92a810f8d Binary files /dev/null and b/public/terrain/19/858541/354006.terrain differ diff --git a/public/terrain/19/858541/354007.terrain b/public/terrain/19/858541/354007.terrain new file mode 100644 index 000000000..8363ab17b Binary files /dev/null and b/public/terrain/19/858541/354007.terrain differ diff --git a/public/terrain/19/858541/354008.terrain b/public/terrain/19/858541/354008.terrain new file mode 100644 index 000000000..415eb5470 Binary files /dev/null and b/public/terrain/19/858541/354008.terrain differ diff --git a/public/terrain/19/858541/354009.terrain b/public/terrain/19/858541/354009.terrain new file mode 100644 index 000000000..9b12eba66 Binary files /dev/null and b/public/terrain/19/858541/354009.terrain differ diff --git a/public/terrain/19/858541/354010.terrain b/public/terrain/19/858541/354010.terrain new file mode 100644 index 000000000..7942b61b1 Binary files /dev/null and b/public/terrain/19/858541/354010.terrain differ diff --git a/public/terrain/19/858541/354011.terrain b/public/terrain/19/858541/354011.terrain new file mode 100644 index 000000000..793feec22 Binary files /dev/null and b/public/terrain/19/858541/354011.terrain differ diff --git a/public/terrain/19/858541/354012.terrain b/public/terrain/19/858541/354012.terrain new file mode 100644 index 000000000..d332ea1b0 Binary files /dev/null and b/public/terrain/19/858541/354012.terrain differ diff --git a/public/terrain/19/858541/354013.terrain b/public/terrain/19/858541/354013.terrain new file mode 100644 index 000000000..0c3c0df15 Binary files /dev/null and b/public/terrain/19/858541/354013.terrain differ diff --git a/public/terrain/19/858541/354014.terrain b/public/terrain/19/858541/354014.terrain new file mode 100644 index 000000000..b70ee0557 Binary files /dev/null and b/public/terrain/19/858541/354014.terrain differ diff --git a/public/terrain/19/858541/354015.terrain b/public/terrain/19/858541/354015.terrain new file mode 100644 index 000000000..cc06b2d5a Binary files /dev/null and b/public/terrain/19/858541/354015.terrain differ diff --git a/public/terrain/19/858541/354016.terrain b/public/terrain/19/858541/354016.terrain new file mode 100644 index 000000000..8e90fe424 Binary files /dev/null and b/public/terrain/19/858541/354016.terrain differ diff --git a/public/terrain/19/858541/354017.terrain b/public/terrain/19/858541/354017.terrain new file mode 100644 index 000000000..753d349a1 Binary files /dev/null and b/public/terrain/19/858541/354017.terrain differ diff --git a/public/terrain/19/858541/354018.terrain b/public/terrain/19/858541/354018.terrain new file mode 100644 index 000000000..97126d7f3 Binary files /dev/null and b/public/terrain/19/858541/354018.terrain differ diff --git a/public/terrain/19/858541/354019.terrain b/public/terrain/19/858541/354019.terrain new file mode 100644 index 000000000..37c3b5c1d Binary files /dev/null and b/public/terrain/19/858541/354019.terrain differ diff --git a/public/terrain/19/858541/354020.terrain b/public/terrain/19/858541/354020.terrain new file mode 100644 index 000000000..322a6dfb6 Binary files /dev/null and b/public/terrain/19/858541/354020.terrain differ diff --git a/public/terrain/19/858541/354021.terrain b/public/terrain/19/858541/354021.terrain new file mode 100644 index 000000000..044e5442d Binary files /dev/null and b/public/terrain/19/858541/354021.terrain differ diff --git a/public/terrain/19/858541/354022.terrain b/public/terrain/19/858541/354022.terrain new file mode 100644 index 000000000..8711f2876 Binary files /dev/null and b/public/terrain/19/858541/354022.terrain differ diff --git a/public/terrain/19/858541/354023.terrain b/public/terrain/19/858541/354023.terrain new file mode 100644 index 000000000..2aed4e78b Binary files /dev/null and b/public/terrain/19/858541/354023.terrain differ diff --git a/public/terrain/19/858541/354024.terrain b/public/terrain/19/858541/354024.terrain new file mode 100644 index 000000000..529a3e3a2 Binary files /dev/null and b/public/terrain/19/858541/354024.terrain differ diff --git a/public/terrain/19/858541/354025.terrain b/public/terrain/19/858541/354025.terrain new file mode 100644 index 000000000..0b284137d Binary files /dev/null and b/public/terrain/19/858541/354025.terrain differ diff --git a/public/terrain/19/858541/354026.terrain b/public/terrain/19/858541/354026.terrain new file mode 100644 index 000000000..f398954a1 Binary files /dev/null and b/public/terrain/19/858541/354026.terrain differ diff --git a/public/terrain/19/858541/354027.terrain b/public/terrain/19/858541/354027.terrain new file mode 100644 index 000000000..36c01df7f Binary files /dev/null and b/public/terrain/19/858541/354027.terrain differ diff --git a/public/terrain/19/858541/354028.terrain b/public/terrain/19/858541/354028.terrain new file mode 100644 index 000000000..a5b835976 Binary files /dev/null and b/public/terrain/19/858541/354028.terrain differ diff --git a/public/terrain/19/858541/354029.terrain b/public/terrain/19/858541/354029.terrain new file mode 100644 index 000000000..c44a0ee71 Binary files /dev/null and b/public/terrain/19/858541/354029.terrain differ diff --git a/public/terrain/19/858541/354030.terrain b/public/terrain/19/858541/354030.terrain new file mode 100644 index 000000000..189b580a4 Binary files /dev/null and b/public/terrain/19/858541/354030.terrain differ diff --git a/public/terrain/19/858541/354031.terrain b/public/terrain/19/858541/354031.terrain new file mode 100644 index 000000000..a6f671ef3 Binary files /dev/null and b/public/terrain/19/858541/354031.terrain differ diff --git a/public/terrain/19/858541/354032.terrain b/public/terrain/19/858541/354032.terrain new file mode 100644 index 000000000..fe5caeee8 Binary files /dev/null and b/public/terrain/19/858541/354032.terrain differ diff --git a/public/terrain/19/858541/354033.terrain b/public/terrain/19/858541/354033.terrain new file mode 100644 index 000000000..fd1ff00d8 Binary files /dev/null and b/public/terrain/19/858541/354033.terrain differ diff --git a/public/terrain/19/858541/354034.terrain b/public/terrain/19/858541/354034.terrain new file mode 100644 index 000000000..a96e721d2 Binary files /dev/null and b/public/terrain/19/858541/354034.terrain differ diff --git a/public/terrain/19/858541/354035.terrain b/public/terrain/19/858541/354035.terrain new file mode 100644 index 000000000..0e8fe89ad Binary files /dev/null and b/public/terrain/19/858541/354035.terrain differ diff --git a/public/terrain/19/858541/354036.terrain b/public/terrain/19/858541/354036.terrain new file mode 100644 index 000000000..498892a09 Binary files /dev/null and b/public/terrain/19/858541/354036.terrain differ diff --git a/public/terrain/19/858541/354037.terrain b/public/terrain/19/858541/354037.terrain new file mode 100644 index 000000000..90a74b9a2 Binary files /dev/null and b/public/terrain/19/858541/354037.terrain differ diff --git a/public/terrain/19/858541/354038.terrain b/public/terrain/19/858541/354038.terrain new file mode 100644 index 000000000..293eb5665 Binary files /dev/null and b/public/terrain/19/858541/354038.terrain differ diff --git a/public/terrain/19/858541/354039.terrain b/public/terrain/19/858541/354039.terrain new file mode 100644 index 000000000..818d460c9 Binary files /dev/null and b/public/terrain/19/858541/354039.terrain differ diff --git a/public/terrain/19/858541/354040.terrain b/public/terrain/19/858541/354040.terrain new file mode 100644 index 000000000..b60287ee1 Binary files /dev/null and b/public/terrain/19/858541/354040.terrain differ diff --git a/public/terrain/19/858541/354041.terrain b/public/terrain/19/858541/354041.terrain new file mode 100644 index 000000000..72d762521 Binary files /dev/null and b/public/terrain/19/858541/354041.terrain differ diff --git a/public/terrain/19/858541/354042.terrain b/public/terrain/19/858541/354042.terrain new file mode 100644 index 000000000..1074ee778 Binary files /dev/null and b/public/terrain/19/858541/354042.terrain differ diff --git a/public/terrain/19/858541/354043.terrain b/public/terrain/19/858541/354043.terrain new file mode 100644 index 000000000..4230bcf9a Binary files /dev/null and b/public/terrain/19/858541/354043.terrain differ diff --git a/public/terrain/19/858541/354044.terrain b/public/terrain/19/858541/354044.terrain new file mode 100644 index 000000000..47072255d Binary files /dev/null and b/public/terrain/19/858541/354044.terrain differ diff --git a/public/terrain/19/858541/354045.terrain b/public/terrain/19/858541/354045.terrain new file mode 100644 index 000000000..5888fc1f8 Binary files /dev/null and b/public/terrain/19/858541/354045.terrain differ diff --git a/public/terrain/19/858541/354046.terrain b/public/terrain/19/858541/354046.terrain new file mode 100644 index 000000000..25b34698b Binary files /dev/null and b/public/terrain/19/858541/354046.terrain differ diff --git a/public/terrain/19/858541/354047.terrain b/public/terrain/19/858541/354047.terrain new file mode 100644 index 000000000..ae81422f2 Binary files /dev/null and b/public/terrain/19/858541/354047.terrain differ diff --git a/public/terrain/19/858541/354048.terrain b/public/terrain/19/858541/354048.terrain new file mode 100644 index 000000000..dcfc70cc3 Binary files /dev/null and b/public/terrain/19/858541/354048.terrain differ diff --git a/public/terrain/19/858541/354049.terrain b/public/terrain/19/858541/354049.terrain new file mode 100644 index 000000000..6eab0a39f Binary files /dev/null and b/public/terrain/19/858541/354049.terrain differ diff --git a/public/terrain/19/858541/354050.terrain b/public/terrain/19/858541/354050.terrain new file mode 100644 index 000000000..d13d82dce Binary files /dev/null and b/public/terrain/19/858541/354050.terrain differ diff --git a/public/terrain/19/858541/354051.terrain b/public/terrain/19/858541/354051.terrain new file mode 100644 index 000000000..b42a221c3 Binary files /dev/null and b/public/terrain/19/858541/354051.terrain differ diff --git a/public/terrain/19/858541/354052.terrain b/public/terrain/19/858541/354052.terrain new file mode 100644 index 000000000..45387f120 Binary files /dev/null and b/public/terrain/19/858541/354052.terrain differ diff --git a/public/terrain/19/858541/354053.terrain b/public/terrain/19/858541/354053.terrain new file mode 100644 index 000000000..dc043f212 Binary files /dev/null and b/public/terrain/19/858541/354053.terrain differ diff --git a/public/terrain/19/858541/354054.terrain b/public/terrain/19/858541/354054.terrain new file mode 100644 index 000000000..cac5417af Binary files /dev/null and b/public/terrain/19/858541/354054.terrain differ diff --git a/public/terrain/19/858541/354055.terrain b/public/terrain/19/858541/354055.terrain new file mode 100644 index 000000000..f22a0f513 Binary files /dev/null and b/public/terrain/19/858541/354055.terrain differ diff --git a/public/terrain/19/858541/354056.terrain b/public/terrain/19/858541/354056.terrain new file mode 100644 index 000000000..1b847b235 Binary files /dev/null and b/public/terrain/19/858541/354056.terrain differ diff --git a/public/terrain/19/858541/354057.terrain b/public/terrain/19/858541/354057.terrain new file mode 100644 index 000000000..7691e3b5b Binary files /dev/null and b/public/terrain/19/858541/354057.terrain differ diff --git a/public/terrain/19/858541/354058.terrain b/public/terrain/19/858541/354058.terrain new file mode 100644 index 000000000..dc30f6a77 Binary files /dev/null and b/public/terrain/19/858541/354058.terrain differ diff --git a/public/terrain/19/858541/354059.terrain b/public/terrain/19/858541/354059.terrain new file mode 100644 index 000000000..474e3acf4 Binary files /dev/null and b/public/terrain/19/858541/354059.terrain differ diff --git a/public/terrain/19/858542/353743.terrain b/public/terrain/19/858542/353743.terrain new file mode 100644 index 000000000..d6d66d3d0 Binary files /dev/null and b/public/terrain/19/858542/353743.terrain differ diff --git a/public/terrain/19/858542/353744.terrain b/public/terrain/19/858542/353744.terrain new file mode 100644 index 000000000..8560d1ce9 Binary files /dev/null and b/public/terrain/19/858542/353744.terrain differ diff --git a/public/terrain/19/858542/353745.terrain b/public/terrain/19/858542/353745.terrain new file mode 100644 index 000000000..d9aa7a944 Binary files /dev/null and b/public/terrain/19/858542/353745.terrain differ diff --git a/public/terrain/19/858542/353746.terrain b/public/terrain/19/858542/353746.terrain new file mode 100644 index 000000000..e208bd851 Binary files /dev/null and b/public/terrain/19/858542/353746.terrain differ diff --git a/public/terrain/19/858542/353747.terrain b/public/terrain/19/858542/353747.terrain new file mode 100644 index 000000000..fa8b35c77 Binary files /dev/null and b/public/terrain/19/858542/353747.terrain differ diff --git a/public/terrain/19/858542/353748.terrain b/public/terrain/19/858542/353748.terrain new file mode 100644 index 000000000..02a3b2b38 Binary files /dev/null and b/public/terrain/19/858542/353748.terrain differ diff --git a/public/terrain/19/858542/353749.terrain b/public/terrain/19/858542/353749.terrain new file mode 100644 index 000000000..e77a1e5a2 Binary files /dev/null and b/public/terrain/19/858542/353749.terrain differ diff --git a/public/terrain/19/858542/353750.terrain b/public/terrain/19/858542/353750.terrain new file mode 100644 index 000000000..904340fc2 Binary files /dev/null and b/public/terrain/19/858542/353750.terrain differ diff --git a/public/terrain/19/858542/353751.terrain b/public/terrain/19/858542/353751.terrain new file mode 100644 index 000000000..79f8fb079 Binary files /dev/null and b/public/terrain/19/858542/353751.terrain differ diff --git a/public/terrain/19/858542/353752.terrain b/public/terrain/19/858542/353752.terrain new file mode 100644 index 000000000..78e3f6424 Binary files /dev/null and b/public/terrain/19/858542/353752.terrain differ diff --git a/public/terrain/19/858542/353753.terrain b/public/terrain/19/858542/353753.terrain new file mode 100644 index 000000000..68d0cd864 Binary files /dev/null and b/public/terrain/19/858542/353753.terrain differ diff --git a/public/terrain/19/858542/353754.terrain b/public/terrain/19/858542/353754.terrain new file mode 100644 index 000000000..6a2fcc8fd Binary files /dev/null and b/public/terrain/19/858542/353754.terrain differ diff --git a/public/terrain/19/858542/353755.terrain b/public/terrain/19/858542/353755.terrain new file mode 100644 index 000000000..23d37ebd3 Binary files /dev/null and b/public/terrain/19/858542/353755.terrain differ diff --git a/public/terrain/19/858542/353756.terrain b/public/terrain/19/858542/353756.terrain new file mode 100644 index 000000000..ad51db53b Binary files /dev/null and b/public/terrain/19/858542/353756.terrain differ diff --git a/public/terrain/19/858542/353757.terrain b/public/terrain/19/858542/353757.terrain new file mode 100644 index 000000000..0c77fa887 Binary files /dev/null and b/public/terrain/19/858542/353757.terrain differ diff --git a/public/terrain/19/858542/353758.terrain b/public/terrain/19/858542/353758.terrain new file mode 100644 index 000000000..c1488c9cb Binary files /dev/null and b/public/terrain/19/858542/353758.terrain differ diff --git a/public/terrain/19/858542/353759.terrain b/public/terrain/19/858542/353759.terrain new file mode 100644 index 000000000..e20989597 Binary files /dev/null and b/public/terrain/19/858542/353759.terrain differ diff --git a/public/terrain/19/858542/353760.terrain b/public/terrain/19/858542/353760.terrain new file mode 100644 index 000000000..39224d29a Binary files /dev/null and b/public/terrain/19/858542/353760.terrain differ diff --git a/public/terrain/19/858542/353761.terrain b/public/terrain/19/858542/353761.terrain new file mode 100644 index 000000000..f8b53a5cb Binary files /dev/null and b/public/terrain/19/858542/353761.terrain differ diff --git a/public/terrain/19/858542/353762.terrain b/public/terrain/19/858542/353762.terrain new file mode 100644 index 000000000..f8a28f712 Binary files /dev/null and b/public/terrain/19/858542/353762.terrain differ diff --git a/public/terrain/19/858542/353763.terrain b/public/terrain/19/858542/353763.terrain new file mode 100644 index 000000000..19f8aa79a Binary files /dev/null and b/public/terrain/19/858542/353763.terrain differ diff --git a/public/terrain/19/858542/353764.terrain b/public/terrain/19/858542/353764.terrain new file mode 100644 index 000000000..1324801e0 Binary files /dev/null and b/public/terrain/19/858542/353764.terrain differ diff --git a/public/terrain/19/858542/353765.terrain b/public/terrain/19/858542/353765.terrain new file mode 100644 index 000000000..de713fe15 Binary files /dev/null and b/public/terrain/19/858542/353765.terrain differ diff --git a/public/terrain/19/858542/353766.terrain b/public/terrain/19/858542/353766.terrain new file mode 100644 index 000000000..064e24646 Binary files /dev/null and b/public/terrain/19/858542/353766.terrain differ diff --git a/public/terrain/19/858542/353767.terrain b/public/terrain/19/858542/353767.terrain new file mode 100644 index 000000000..6af86781f Binary files /dev/null and b/public/terrain/19/858542/353767.terrain differ diff --git a/public/terrain/19/858542/353768.terrain b/public/terrain/19/858542/353768.terrain new file mode 100644 index 000000000..1afecff89 Binary files /dev/null and b/public/terrain/19/858542/353768.terrain differ diff --git a/public/terrain/19/858542/353769.terrain b/public/terrain/19/858542/353769.terrain new file mode 100644 index 000000000..279c2fc7e Binary files /dev/null and b/public/terrain/19/858542/353769.terrain differ diff --git a/public/terrain/19/858542/353770.terrain b/public/terrain/19/858542/353770.terrain new file mode 100644 index 000000000..fc0dbda38 Binary files /dev/null and b/public/terrain/19/858542/353770.terrain differ diff --git a/public/terrain/19/858542/353771.terrain b/public/terrain/19/858542/353771.terrain new file mode 100644 index 000000000..b74b96887 Binary files /dev/null and b/public/terrain/19/858542/353771.terrain differ diff --git a/public/terrain/19/858542/353772.terrain b/public/terrain/19/858542/353772.terrain new file mode 100644 index 000000000..17d1f3102 Binary files /dev/null and b/public/terrain/19/858542/353772.terrain differ diff --git a/public/terrain/19/858542/353773.terrain b/public/terrain/19/858542/353773.terrain new file mode 100644 index 000000000..fccf16159 Binary files /dev/null and b/public/terrain/19/858542/353773.terrain differ diff --git a/public/terrain/19/858542/353774.terrain b/public/terrain/19/858542/353774.terrain new file mode 100644 index 000000000..abb5a7ddb Binary files /dev/null and b/public/terrain/19/858542/353774.terrain differ diff --git a/public/terrain/19/858542/353775.terrain b/public/terrain/19/858542/353775.terrain new file mode 100644 index 000000000..ffdca70b9 Binary files /dev/null and b/public/terrain/19/858542/353775.terrain differ diff --git a/public/terrain/19/858542/353776.terrain b/public/terrain/19/858542/353776.terrain new file mode 100644 index 000000000..51cd257e0 Binary files /dev/null and b/public/terrain/19/858542/353776.terrain differ diff --git a/public/terrain/19/858542/353777.terrain b/public/terrain/19/858542/353777.terrain new file mode 100644 index 000000000..02217dc91 Binary files /dev/null and b/public/terrain/19/858542/353777.terrain differ diff --git a/public/terrain/19/858542/353778.terrain b/public/terrain/19/858542/353778.terrain new file mode 100644 index 000000000..ba0c1b4a8 Binary files /dev/null and b/public/terrain/19/858542/353778.terrain differ diff --git a/public/terrain/19/858542/353779.terrain b/public/terrain/19/858542/353779.terrain new file mode 100644 index 000000000..90469c86c Binary files /dev/null and b/public/terrain/19/858542/353779.terrain differ diff --git a/public/terrain/19/858542/353780.terrain b/public/terrain/19/858542/353780.terrain new file mode 100644 index 000000000..45d7e546b Binary files /dev/null and b/public/terrain/19/858542/353780.terrain differ diff --git a/public/terrain/19/858542/353781.terrain b/public/terrain/19/858542/353781.terrain new file mode 100644 index 000000000..9284fe792 Binary files /dev/null and b/public/terrain/19/858542/353781.terrain differ diff --git a/public/terrain/19/858542/353782.terrain b/public/terrain/19/858542/353782.terrain new file mode 100644 index 000000000..a6666204c Binary files /dev/null and b/public/terrain/19/858542/353782.terrain differ diff --git a/public/terrain/19/858542/353783.terrain b/public/terrain/19/858542/353783.terrain new file mode 100644 index 000000000..326dba0da Binary files /dev/null and b/public/terrain/19/858542/353783.terrain differ diff --git a/public/terrain/19/858542/353784.terrain b/public/terrain/19/858542/353784.terrain new file mode 100644 index 000000000..ffc7747da Binary files /dev/null and b/public/terrain/19/858542/353784.terrain differ diff --git a/public/terrain/19/858542/353785.terrain b/public/terrain/19/858542/353785.terrain new file mode 100644 index 000000000..f6852a445 Binary files /dev/null and b/public/terrain/19/858542/353785.terrain differ diff --git a/public/terrain/19/858542/353786.terrain b/public/terrain/19/858542/353786.terrain new file mode 100644 index 000000000..e8dda79b0 Binary files /dev/null and b/public/terrain/19/858542/353786.terrain differ diff --git a/public/terrain/19/858542/353787.terrain b/public/terrain/19/858542/353787.terrain new file mode 100644 index 000000000..2d920026a Binary files /dev/null and b/public/terrain/19/858542/353787.terrain differ diff --git a/public/terrain/19/858542/353788.terrain b/public/terrain/19/858542/353788.terrain new file mode 100644 index 000000000..a7641809f Binary files /dev/null and b/public/terrain/19/858542/353788.terrain differ diff --git a/public/terrain/19/858542/353789.terrain b/public/terrain/19/858542/353789.terrain new file mode 100644 index 000000000..b8d867008 Binary files /dev/null and b/public/terrain/19/858542/353789.terrain differ diff --git a/public/terrain/19/858542/353790.terrain b/public/terrain/19/858542/353790.terrain new file mode 100644 index 000000000..fd891fbcf Binary files /dev/null and b/public/terrain/19/858542/353790.terrain differ diff --git a/public/terrain/19/858542/353791.terrain b/public/terrain/19/858542/353791.terrain new file mode 100644 index 000000000..3dfca872c Binary files /dev/null and b/public/terrain/19/858542/353791.terrain differ diff --git a/public/terrain/19/858542/353792.terrain b/public/terrain/19/858542/353792.terrain new file mode 100644 index 000000000..fd323efb2 Binary files /dev/null and b/public/terrain/19/858542/353792.terrain differ diff --git a/public/terrain/19/858542/353793.terrain b/public/terrain/19/858542/353793.terrain new file mode 100644 index 000000000..a2ca3e844 Binary files /dev/null and b/public/terrain/19/858542/353793.terrain differ diff --git a/public/terrain/19/858542/353794.terrain b/public/terrain/19/858542/353794.terrain new file mode 100644 index 000000000..9dc66e98d Binary files /dev/null and b/public/terrain/19/858542/353794.terrain differ diff --git a/public/terrain/19/858542/353795.terrain b/public/terrain/19/858542/353795.terrain new file mode 100644 index 000000000..3f549ad4b Binary files /dev/null and b/public/terrain/19/858542/353795.terrain differ diff --git a/public/terrain/19/858542/353796.terrain b/public/terrain/19/858542/353796.terrain new file mode 100644 index 000000000..aab521b76 Binary files /dev/null and b/public/terrain/19/858542/353796.terrain differ diff --git a/public/terrain/19/858542/353797.terrain b/public/terrain/19/858542/353797.terrain new file mode 100644 index 000000000..e7285a78e Binary files /dev/null and b/public/terrain/19/858542/353797.terrain differ diff --git a/public/terrain/19/858542/353798.terrain b/public/terrain/19/858542/353798.terrain new file mode 100644 index 000000000..1003ec9ed Binary files /dev/null and b/public/terrain/19/858542/353798.terrain differ diff --git a/public/terrain/19/858542/353799.terrain b/public/terrain/19/858542/353799.terrain new file mode 100644 index 000000000..429f7812a Binary files /dev/null and b/public/terrain/19/858542/353799.terrain differ diff --git a/public/terrain/19/858542/353800.terrain b/public/terrain/19/858542/353800.terrain new file mode 100644 index 000000000..aee52dbca Binary files /dev/null and b/public/terrain/19/858542/353800.terrain differ diff --git a/public/terrain/19/858542/353801.terrain b/public/terrain/19/858542/353801.terrain new file mode 100644 index 000000000..1ad08694b Binary files /dev/null and b/public/terrain/19/858542/353801.terrain differ diff --git a/public/terrain/19/858542/353802.terrain b/public/terrain/19/858542/353802.terrain new file mode 100644 index 000000000..db3d36079 Binary files /dev/null and b/public/terrain/19/858542/353802.terrain differ diff --git a/public/terrain/19/858542/353803.terrain b/public/terrain/19/858542/353803.terrain new file mode 100644 index 000000000..72b8c3d03 Binary files /dev/null and b/public/terrain/19/858542/353803.terrain differ diff --git a/public/terrain/19/858542/353804.terrain b/public/terrain/19/858542/353804.terrain new file mode 100644 index 000000000..1b8dcc584 Binary files /dev/null and b/public/terrain/19/858542/353804.terrain differ diff --git a/public/terrain/19/858542/353805.terrain b/public/terrain/19/858542/353805.terrain new file mode 100644 index 000000000..b6272af49 Binary files /dev/null and b/public/terrain/19/858542/353805.terrain differ diff --git a/public/terrain/19/858542/353806.terrain b/public/terrain/19/858542/353806.terrain new file mode 100644 index 000000000..47e7f69c3 Binary files /dev/null and b/public/terrain/19/858542/353806.terrain differ diff --git a/public/terrain/19/858542/353807.terrain b/public/terrain/19/858542/353807.terrain new file mode 100644 index 000000000..c15798d88 Binary files /dev/null and b/public/terrain/19/858542/353807.terrain differ diff --git a/public/terrain/19/858542/353808.terrain b/public/terrain/19/858542/353808.terrain new file mode 100644 index 000000000..95af8dec5 Binary files /dev/null and b/public/terrain/19/858542/353808.terrain differ diff --git a/public/terrain/19/858542/353809.terrain b/public/terrain/19/858542/353809.terrain new file mode 100644 index 000000000..1833fdbbd Binary files /dev/null and b/public/terrain/19/858542/353809.terrain differ diff --git a/public/terrain/19/858542/353810.terrain b/public/terrain/19/858542/353810.terrain new file mode 100644 index 000000000..0e660b481 Binary files /dev/null and b/public/terrain/19/858542/353810.terrain differ diff --git a/public/terrain/19/858542/353811.terrain b/public/terrain/19/858542/353811.terrain new file mode 100644 index 000000000..906fff040 Binary files /dev/null and b/public/terrain/19/858542/353811.terrain differ diff --git a/public/terrain/19/858542/353812.terrain b/public/terrain/19/858542/353812.terrain new file mode 100644 index 000000000..aee5e90a6 Binary files /dev/null and b/public/terrain/19/858542/353812.terrain differ diff --git a/public/terrain/19/858542/353813.terrain b/public/terrain/19/858542/353813.terrain new file mode 100644 index 000000000..f00f163aa Binary files /dev/null and b/public/terrain/19/858542/353813.terrain differ diff --git a/public/terrain/19/858542/353814.terrain b/public/terrain/19/858542/353814.terrain new file mode 100644 index 000000000..0363818e6 Binary files /dev/null and b/public/terrain/19/858542/353814.terrain differ diff --git a/public/terrain/19/858542/353815.terrain b/public/terrain/19/858542/353815.terrain new file mode 100644 index 000000000..8aa56ade1 Binary files /dev/null and b/public/terrain/19/858542/353815.terrain differ diff --git a/public/terrain/19/858542/353816.terrain b/public/terrain/19/858542/353816.terrain new file mode 100644 index 000000000..cfb4ca739 Binary files /dev/null and b/public/terrain/19/858542/353816.terrain differ diff --git a/public/terrain/19/858542/353817.terrain b/public/terrain/19/858542/353817.terrain new file mode 100644 index 000000000..8439c0999 Binary files /dev/null and b/public/terrain/19/858542/353817.terrain differ diff --git a/public/terrain/19/858542/353818.terrain b/public/terrain/19/858542/353818.terrain new file mode 100644 index 000000000..fe8902d53 Binary files /dev/null and b/public/terrain/19/858542/353818.terrain differ diff --git a/public/terrain/19/858542/353819.terrain b/public/terrain/19/858542/353819.terrain new file mode 100644 index 000000000..54c5c3ab3 Binary files /dev/null and b/public/terrain/19/858542/353819.terrain differ diff --git a/public/terrain/19/858542/353820.terrain b/public/terrain/19/858542/353820.terrain new file mode 100644 index 000000000..04c4d3d7b Binary files /dev/null and b/public/terrain/19/858542/353820.terrain differ diff --git a/public/terrain/19/858542/353821.terrain b/public/terrain/19/858542/353821.terrain new file mode 100644 index 000000000..ef8a979d6 Binary files /dev/null and b/public/terrain/19/858542/353821.terrain differ diff --git a/public/terrain/19/858542/353822.terrain b/public/terrain/19/858542/353822.terrain new file mode 100644 index 000000000..4b3b56bc0 Binary files /dev/null and b/public/terrain/19/858542/353822.terrain differ diff --git a/public/terrain/19/858542/353823.terrain b/public/terrain/19/858542/353823.terrain new file mode 100644 index 000000000..f344e09a4 Binary files /dev/null and b/public/terrain/19/858542/353823.terrain differ diff --git a/public/terrain/19/858542/353824.terrain b/public/terrain/19/858542/353824.terrain new file mode 100644 index 000000000..9edd77db2 Binary files /dev/null and b/public/terrain/19/858542/353824.terrain differ diff --git a/public/terrain/19/858542/353825.terrain b/public/terrain/19/858542/353825.terrain new file mode 100644 index 000000000..28eba346e Binary files /dev/null and b/public/terrain/19/858542/353825.terrain differ diff --git a/public/terrain/19/858542/353826.terrain b/public/terrain/19/858542/353826.terrain new file mode 100644 index 000000000..1cac28cdb Binary files /dev/null and b/public/terrain/19/858542/353826.terrain differ diff --git a/public/terrain/19/858542/353827.terrain b/public/terrain/19/858542/353827.terrain new file mode 100644 index 000000000..997fdda51 Binary files /dev/null and b/public/terrain/19/858542/353827.terrain differ diff --git a/public/terrain/19/858542/353828.terrain b/public/terrain/19/858542/353828.terrain new file mode 100644 index 000000000..c39c87816 Binary files /dev/null and b/public/terrain/19/858542/353828.terrain differ diff --git a/public/terrain/19/858542/353829.terrain b/public/terrain/19/858542/353829.terrain new file mode 100644 index 000000000..9380c3553 Binary files /dev/null and b/public/terrain/19/858542/353829.terrain differ diff --git a/public/terrain/19/858542/353830.terrain b/public/terrain/19/858542/353830.terrain new file mode 100644 index 000000000..2a124873c Binary files /dev/null and b/public/terrain/19/858542/353830.terrain differ diff --git a/public/terrain/19/858542/353831.terrain b/public/terrain/19/858542/353831.terrain new file mode 100644 index 000000000..dd4baee03 Binary files /dev/null and b/public/terrain/19/858542/353831.terrain differ diff --git a/public/terrain/19/858542/353832.terrain b/public/terrain/19/858542/353832.terrain new file mode 100644 index 000000000..f7420aad4 Binary files /dev/null and b/public/terrain/19/858542/353832.terrain differ diff --git a/public/terrain/19/858542/353833.terrain b/public/terrain/19/858542/353833.terrain new file mode 100644 index 000000000..f39264fef Binary files /dev/null and b/public/terrain/19/858542/353833.terrain differ diff --git a/public/terrain/19/858542/353834.terrain b/public/terrain/19/858542/353834.terrain new file mode 100644 index 000000000..8f5d6cb02 Binary files /dev/null and b/public/terrain/19/858542/353834.terrain differ diff --git a/public/terrain/19/858542/353835.terrain b/public/terrain/19/858542/353835.terrain new file mode 100644 index 000000000..c5dcffcf7 Binary files /dev/null and b/public/terrain/19/858542/353835.terrain differ diff --git a/public/terrain/19/858542/353836.terrain b/public/terrain/19/858542/353836.terrain new file mode 100644 index 000000000..672ff5f80 Binary files /dev/null and b/public/terrain/19/858542/353836.terrain differ diff --git a/public/terrain/19/858542/353837.terrain b/public/terrain/19/858542/353837.terrain new file mode 100644 index 000000000..c59a005ee Binary files /dev/null and b/public/terrain/19/858542/353837.terrain differ diff --git a/public/terrain/19/858542/353838.terrain b/public/terrain/19/858542/353838.terrain new file mode 100644 index 000000000..50c81541a Binary files /dev/null and b/public/terrain/19/858542/353838.terrain differ diff --git a/public/terrain/19/858542/353839.terrain b/public/terrain/19/858542/353839.terrain new file mode 100644 index 000000000..7b2021525 Binary files /dev/null and b/public/terrain/19/858542/353839.terrain differ diff --git a/public/terrain/19/858542/353840.terrain b/public/terrain/19/858542/353840.terrain new file mode 100644 index 000000000..6b32fb644 Binary files /dev/null and b/public/terrain/19/858542/353840.terrain differ diff --git a/public/terrain/19/858542/353841.terrain b/public/terrain/19/858542/353841.terrain new file mode 100644 index 000000000..74d08abe4 Binary files /dev/null and b/public/terrain/19/858542/353841.terrain differ diff --git a/public/terrain/19/858542/353842.terrain b/public/terrain/19/858542/353842.terrain new file mode 100644 index 000000000..6d556448f Binary files /dev/null and b/public/terrain/19/858542/353842.terrain differ diff --git a/public/terrain/19/858542/353843.terrain b/public/terrain/19/858542/353843.terrain new file mode 100644 index 000000000..c41930dd0 Binary files /dev/null and b/public/terrain/19/858542/353843.terrain differ diff --git a/public/terrain/19/858542/353844.terrain b/public/terrain/19/858542/353844.terrain new file mode 100644 index 000000000..89dcaf01c Binary files /dev/null and b/public/terrain/19/858542/353844.terrain differ diff --git a/public/terrain/19/858542/353845.terrain b/public/terrain/19/858542/353845.terrain new file mode 100644 index 000000000..523ed45a7 Binary files /dev/null and b/public/terrain/19/858542/353845.terrain differ diff --git a/public/terrain/19/858542/353846.terrain b/public/terrain/19/858542/353846.terrain new file mode 100644 index 000000000..8bdfd65a4 Binary files /dev/null and b/public/terrain/19/858542/353846.terrain differ diff --git a/public/terrain/19/858542/353847.terrain b/public/terrain/19/858542/353847.terrain new file mode 100644 index 000000000..ca2ba36a4 Binary files /dev/null and b/public/terrain/19/858542/353847.terrain differ diff --git a/public/terrain/19/858542/353848.terrain b/public/terrain/19/858542/353848.terrain new file mode 100644 index 000000000..b2c0f9cc9 Binary files /dev/null and b/public/terrain/19/858542/353848.terrain differ diff --git a/public/terrain/19/858542/353849.terrain b/public/terrain/19/858542/353849.terrain new file mode 100644 index 000000000..2a619cbba Binary files /dev/null and b/public/terrain/19/858542/353849.terrain differ diff --git a/public/terrain/19/858542/353850.terrain b/public/terrain/19/858542/353850.terrain new file mode 100644 index 000000000..1c80f45ea Binary files /dev/null and b/public/terrain/19/858542/353850.terrain differ diff --git a/public/terrain/19/858542/353851.terrain b/public/terrain/19/858542/353851.terrain new file mode 100644 index 000000000..519de53ac Binary files /dev/null and b/public/terrain/19/858542/353851.terrain differ diff --git a/public/terrain/19/858542/353852.terrain b/public/terrain/19/858542/353852.terrain new file mode 100644 index 000000000..0f3484f89 Binary files /dev/null and b/public/terrain/19/858542/353852.terrain differ diff --git a/public/terrain/19/858542/353853.terrain b/public/terrain/19/858542/353853.terrain new file mode 100644 index 000000000..74f5e550b Binary files /dev/null and b/public/terrain/19/858542/353853.terrain differ diff --git a/public/terrain/19/858542/353854.terrain b/public/terrain/19/858542/353854.terrain new file mode 100644 index 000000000..c79e58942 Binary files /dev/null and b/public/terrain/19/858542/353854.terrain differ diff --git a/public/terrain/19/858542/353855.terrain b/public/terrain/19/858542/353855.terrain new file mode 100644 index 000000000..36c0867c2 Binary files /dev/null and b/public/terrain/19/858542/353855.terrain differ diff --git a/public/terrain/19/858542/353856.terrain b/public/terrain/19/858542/353856.terrain new file mode 100644 index 000000000..4cb355de2 Binary files /dev/null and b/public/terrain/19/858542/353856.terrain differ diff --git a/public/terrain/19/858542/353857.terrain b/public/terrain/19/858542/353857.terrain new file mode 100644 index 000000000..42a809212 Binary files /dev/null and b/public/terrain/19/858542/353857.terrain differ diff --git a/public/terrain/19/858542/353858.terrain b/public/terrain/19/858542/353858.terrain new file mode 100644 index 000000000..06fca8252 Binary files /dev/null and b/public/terrain/19/858542/353858.terrain differ diff --git a/public/terrain/19/858542/353859.terrain b/public/terrain/19/858542/353859.terrain new file mode 100644 index 000000000..41324f76c Binary files /dev/null and b/public/terrain/19/858542/353859.terrain differ diff --git a/public/terrain/19/858542/353860.terrain b/public/terrain/19/858542/353860.terrain new file mode 100644 index 000000000..0c0a9520a Binary files /dev/null and b/public/terrain/19/858542/353860.terrain differ diff --git a/public/terrain/19/858542/353861.terrain b/public/terrain/19/858542/353861.terrain new file mode 100644 index 000000000..cb3533f40 Binary files /dev/null and b/public/terrain/19/858542/353861.terrain differ diff --git a/public/terrain/19/858542/353862.terrain b/public/terrain/19/858542/353862.terrain new file mode 100644 index 000000000..93ed09978 Binary files /dev/null and b/public/terrain/19/858542/353862.terrain differ diff --git a/public/terrain/19/858542/353863.terrain b/public/terrain/19/858542/353863.terrain new file mode 100644 index 000000000..217dba8fd Binary files /dev/null and b/public/terrain/19/858542/353863.terrain differ diff --git a/public/terrain/19/858542/353864.terrain b/public/terrain/19/858542/353864.terrain new file mode 100644 index 000000000..1357a4c47 Binary files /dev/null and b/public/terrain/19/858542/353864.terrain differ diff --git a/public/terrain/19/858542/353865.terrain b/public/terrain/19/858542/353865.terrain new file mode 100644 index 000000000..9c3be78f4 Binary files /dev/null and b/public/terrain/19/858542/353865.terrain differ diff --git a/public/terrain/19/858542/353866.terrain b/public/terrain/19/858542/353866.terrain new file mode 100644 index 000000000..b990e91fd Binary files /dev/null and b/public/terrain/19/858542/353866.terrain differ diff --git a/public/terrain/19/858542/353867.terrain b/public/terrain/19/858542/353867.terrain new file mode 100644 index 000000000..3ee88ef7e Binary files /dev/null and b/public/terrain/19/858542/353867.terrain differ diff --git a/public/terrain/19/858542/353868.terrain b/public/terrain/19/858542/353868.terrain new file mode 100644 index 000000000..c1df8d42e Binary files /dev/null and b/public/terrain/19/858542/353868.terrain differ diff --git a/public/terrain/19/858542/353869.terrain b/public/terrain/19/858542/353869.terrain new file mode 100644 index 000000000..e89048242 Binary files /dev/null and b/public/terrain/19/858542/353869.terrain differ diff --git a/public/terrain/19/858542/353870.terrain b/public/terrain/19/858542/353870.terrain new file mode 100644 index 000000000..4b048040b Binary files /dev/null and b/public/terrain/19/858542/353870.terrain differ diff --git a/public/terrain/19/858542/353871.terrain b/public/terrain/19/858542/353871.terrain new file mode 100644 index 000000000..f485b5f49 Binary files /dev/null and b/public/terrain/19/858542/353871.terrain differ diff --git a/public/terrain/19/858542/353872.terrain b/public/terrain/19/858542/353872.terrain new file mode 100644 index 000000000..a5498f27f Binary files /dev/null and b/public/terrain/19/858542/353872.terrain differ diff --git a/public/terrain/19/858542/353873.terrain b/public/terrain/19/858542/353873.terrain new file mode 100644 index 000000000..8296f6913 Binary files /dev/null and b/public/terrain/19/858542/353873.terrain differ diff --git a/public/terrain/19/858542/353874.terrain b/public/terrain/19/858542/353874.terrain new file mode 100644 index 000000000..07e16a04e Binary files /dev/null and b/public/terrain/19/858542/353874.terrain differ diff --git a/public/terrain/19/858542/353875.terrain b/public/terrain/19/858542/353875.terrain new file mode 100644 index 000000000..918713924 Binary files /dev/null and b/public/terrain/19/858542/353875.terrain differ diff --git a/public/terrain/19/858542/353876.terrain b/public/terrain/19/858542/353876.terrain new file mode 100644 index 000000000..030f07d1e Binary files /dev/null and b/public/terrain/19/858542/353876.terrain differ diff --git a/public/terrain/19/858542/353877.terrain b/public/terrain/19/858542/353877.terrain new file mode 100644 index 000000000..2af715bc8 Binary files /dev/null and b/public/terrain/19/858542/353877.terrain differ diff --git a/public/terrain/19/858542/353878.terrain b/public/terrain/19/858542/353878.terrain new file mode 100644 index 000000000..d3ad3a491 Binary files /dev/null and b/public/terrain/19/858542/353878.terrain differ diff --git a/public/terrain/19/858542/353879.terrain b/public/terrain/19/858542/353879.terrain new file mode 100644 index 000000000..17a9250af Binary files /dev/null and b/public/terrain/19/858542/353879.terrain differ diff --git a/public/terrain/19/858542/353880.terrain b/public/terrain/19/858542/353880.terrain new file mode 100644 index 000000000..0a11d4dfe Binary files /dev/null and b/public/terrain/19/858542/353880.terrain differ diff --git a/public/terrain/19/858542/353881.terrain b/public/terrain/19/858542/353881.terrain new file mode 100644 index 000000000..c985e8c70 Binary files /dev/null and b/public/terrain/19/858542/353881.terrain differ diff --git a/public/terrain/19/858542/353882.terrain b/public/terrain/19/858542/353882.terrain new file mode 100644 index 000000000..8491fef0a Binary files /dev/null and b/public/terrain/19/858542/353882.terrain differ diff --git a/public/terrain/19/858542/353883.terrain b/public/terrain/19/858542/353883.terrain new file mode 100644 index 000000000..22d3a1980 Binary files /dev/null and b/public/terrain/19/858542/353883.terrain differ diff --git a/public/terrain/19/858542/353884.terrain b/public/terrain/19/858542/353884.terrain new file mode 100644 index 000000000..d869dbfb7 Binary files /dev/null and b/public/terrain/19/858542/353884.terrain differ diff --git a/public/terrain/19/858542/353885.terrain b/public/terrain/19/858542/353885.terrain new file mode 100644 index 000000000..d9d5e3220 Binary files /dev/null and b/public/terrain/19/858542/353885.terrain differ diff --git a/public/terrain/19/858542/353886.terrain b/public/terrain/19/858542/353886.terrain new file mode 100644 index 000000000..3876317a6 Binary files /dev/null and b/public/terrain/19/858542/353886.terrain differ diff --git a/public/terrain/19/858542/353887.terrain b/public/terrain/19/858542/353887.terrain new file mode 100644 index 000000000..0021940a8 Binary files /dev/null and b/public/terrain/19/858542/353887.terrain differ diff --git a/public/terrain/19/858542/353888.terrain b/public/terrain/19/858542/353888.terrain new file mode 100644 index 000000000..f475255c1 Binary files /dev/null and b/public/terrain/19/858542/353888.terrain differ diff --git a/public/terrain/19/858542/353889.terrain b/public/terrain/19/858542/353889.terrain new file mode 100644 index 000000000..64a490f29 Binary files /dev/null and b/public/terrain/19/858542/353889.terrain differ diff --git a/public/terrain/19/858542/353890.terrain b/public/terrain/19/858542/353890.terrain new file mode 100644 index 000000000..fe0f42b40 Binary files /dev/null and b/public/terrain/19/858542/353890.terrain differ diff --git a/public/terrain/19/858542/353891.terrain b/public/terrain/19/858542/353891.terrain new file mode 100644 index 000000000..78f343cdf Binary files /dev/null and b/public/terrain/19/858542/353891.terrain differ diff --git a/public/terrain/19/858542/353892.terrain b/public/terrain/19/858542/353892.terrain new file mode 100644 index 000000000..568bb25f6 Binary files /dev/null and b/public/terrain/19/858542/353892.terrain differ diff --git a/public/terrain/19/858542/353893.terrain b/public/terrain/19/858542/353893.terrain new file mode 100644 index 000000000..fba08f229 Binary files /dev/null and b/public/terrain/19/858542/353893.terrain differ diff --git a/public/terrain/19/858542/353894.terrain b/public/terrain/19/858542/353894.terrain new file mode 100644 index 000000000..b0b966895 Binary files /dev/null and b/public/terrain/19/858542/353894.terrain differ diff --git a/public/terrain/19/858542/353895.terrain b/public/terrain/19/858542/353895.terrain new file mode 100644 index 000000000..00b83f5b0 Binary files /dev/null and b/public/terrain/19/858542/353895.terrain differ diff --git a/public/terrain/19/858542/353896.terrain b/public/terrain/19/858542/353896.terrain new file mode 100644 index 000000000..3135be9b3 Binary files /dev/null and b/public/terrain/19/858542/353896.terrain differ diff --git a/public/terrain/19/858542/353897.terrain b/public/terrain/19/858542/353897.terrain new file mode 100644 index 000000000..0393faefa Binary files /dev/null and b/public/terrain/19/858542/353897.terrain differ diff --git a/public/terrain/19/858542/353898.terrain b/public/terrain/19/858542/353898.terrain new file mode 100644 index 000000000..2b8c035ed Binary files /dev/null and b/public/terrain/19/858542/353898.terrain differ diff --git a/public/terrain/19/858542/353899.terrain b/public/terrain/19/858542/353899.terrain new file mode 100644 index 000000000..66fe95eee Binary files /dev/null and b/public/terrain/19/858542/353899.terrain differ diff --git a/public/terrain/19/858542/353900.terrain b/public/terrain/19/858542/353900.terrain new file mode 100644 index 000000000..8b830d6ae Binary files /dev/null and b/public/terrain/19/858542/353900.terrain differ diff --git a/public/terrain/19/858542/353901.terrain b/public/terrain/19/858542/353901.terrain new file mode 100644 index 000000000..f92511333 Binary files /dev/null and b/public/terrain/19/858542/353901.terrain differ diff --git a/public/terrain/19/858542/353902.terrain b/public/terrain/19/858542/353902.terrain new file mode 100644 index 000000000..a302c9247 Binary files /dev/null and b/public/terrain/19/858542/353902.terrain differ diff --git a/public/terrain/19/858542/353903.terrain b/public/terrain/19/858542/353903.terrain new file mode 100644 index 000000000..c044ad930 Binary files /dev/null and b/public/terrain/19/858542/353903.terrain differ diff --git a/public/terrain/19/858542/353904.terrain b/public/terrain/19/858542/353904.terrain new file mode 100644 index 000000000..9410f6d9c Binary files /dev/null and b/public/terrain/19/858542/353904.terrain differ diff --git a/public/terrain/19/858542/353905.terrain b/public/terrain/19/858542/353905.terrain new file mode 100644 index 000000000..c0c0560c2 Binary files /dev/null and b/public/terrain/19/858542/353905.terrain differ diff --git a/public/terrain/19/858542/353906.terrain b/public/terrain/19/858542/353906.terrain new file mode 100644 index 000000000..043e7a246 Binary files /dev/null and b/public/terrain/19/858542/353906.terrain differ diff --git a/public/terrain/19/858542/353907.terrain b/public/terrain/19/858542/353907.terrain new file mode 100644 index 000000000..087c4983f Binary files /dev/null and b/public/terrain/19/858542/353907.terrain differ diff --git a/public/terrain/19/858542/353908.terrain b/public/terrain/19/858542/353908.terrain new file mode 100644 index 000000000..08d119a9b Binary files /dev/null and b/public/terrain/19/858542/353908.terrain differ diff --git a/public/terrain/19/858542/353909.terrain b/public/terrain/19/858542/353909.terrain new file mode 100644 index 000000000..37aa3c4be Binary files /dev/null and b/public/terrain/19/858542/353909.terrain differ diff --git a/public/terrain/19/858542/353910.terrain b/public/terrain/19/858542/353910.terrain new file mode 100644 index 000000000..b27cffa1e Binary files /dev/null and b/public/terrain/19/858542/353910.terrain differ diff --git a/public/terrain/19/858542/353911.terrain b/public/terrain/19/858542/353911.terrain new file mode 100644 index 000000000..f37af48fd Binary files /dev/null and b/public/terrain/19/858542/353911.terrain differ diff --git a/public/terrain/19/858542/353912.terrain b/public/terrain/19/858542/353912.terrain new file mode 100644 index 000000000..15bb0ed41 Binary files /dev/null and b/public/terrain/19/858542/353912.terrain differ diff --git a/public/terrain/19/858542/353913.terrain b/public/terrain/19/858542/353913.terrain new file mode 100644 index 000000000..70788f9a3 Binary files /dev/null and b/public/terrain/19/858542/353913.terrain differ diff --git a/public/terrain/19/858542/353914.terrain b/public/terrain/19/858542/353914.terrain new file mode 100644 index 000000000..238545017 Binary files /dev/null and b/public/terrain/19/858542/353914.terrain differ diff --git a/public/terrain/19/858542/353915.terrain b/public/terrain/19/858542/353915.terrain new file mode 100644 index 000000000..60cc2e8d1 Binary files /dev/null and b/public/terrain/19/858542/353915.terrain differ diff --git a/public/terrain/19/858542/353916.terrain b/public/terrain/19/858542/353916.terrain new file mode 100644 index 000000000..b4da77436 Binary files /dev/null and b/public/terrain/19/858542/353916.terrain differ diff --git a/public/terrain/19/858542/353917.terrain b/public/terrain/19/858542/353917.terrain new file mode 100644 index 000000000..672b6d1f0 Binary files /dev/null and b/public/terrain/19/858542/353917.terrain differ diff --git a/public/terrain/19/858542/353918.terrain b/public/terrain/19/858542/353918.terrain new file mode 100644 index 000000000..d6679085c Binary files /dev/null and b/public/terrain/19/858542/353918.terrain differ diff --git a/public/terrain/19/858542/353919.terrain b/public/terrain/19/858542/353919.terrain new file mode 100644 index 000000000..21554d33b Binary files /dev/null and b/public/terrain/19/858542/353919.terrain differ diff --git a/public/terrain/19/858542/353920.terrain b/public/terrain/19/858542/353920.terrain new file mode 100644 index 000000000..77233c423 Binary files /dev/null and b/public/terrain/19/858542/353920.terrain differ diff --git a/public/terrain/19/858542/353921.terrain b/public/terrain/19/858542/353921.terrain new file mode 100644 index 000000000..5e3c5bac7 Binary files /dev/null and b/public/terrain/19/858542/353921.terrain differ diff --git a/public/terrain/19/858542/353922.terrain b/public/terrain/19/858542/353922.terrain new file mode 100644 index 000000000..c51159ed8 Binary files /dev/null and b/public/terrain/19/858542/353922.terrain differ diff --git a/public/terrain/19/858542/353923.terrain b/public/terrain/19/858542/353923.terrain new file mode 100644 index 000000000..62dc174d5 Binary files /dev/null and b/public/terrain/19/858542/353923.terrain differ diff --git a/public/terrain/19/858542/353924.terrain b/public/terrain/19/858542/353924.terrain new file mode 100644 index 000000000..e2bb336e1 Binary files /dev/null and b/public/terrain/19/858542/353924.terrain differ diff --git a/public/terrain/19/858542/353925.terrain b/public/terrain/19/858542/353925.terrain new file mode 100644 index 000000000..8ec2563b5 Binary files /dev/null and b/public/terrain/19/858542/353925.terrain differ diff --git a/public/terrain/19/858542/353926.terrain b/public/terrain/19/858542/353926.terrain new file mode 100644 index 000000000..a6abfa5ab Binary files /dev/null and b/public/terrain/19/858542/353926.terrain differ diff --git a/public/terrain/19/858542/353927.terrain b/public/terrain/19/858542/353927.terrain new file mode 100644 index 000000000..df0a0c500 Binary files /dev/null and b/public/terrain/19/858542/353927.terrain differ diff --git a/public/terrain/19/858542/353928.terrain b/public/terrain/19/858542/353928.terrain new file mode 100644 index 000000000..c71a5b0bc Binary files /dev/null and b/public/terrain/19/858542/353928.terrain differ diff --git a/public/terrain/19/858542/353929.terrain b/public/terrain/19/858542/353929.terrain new file mode 100644 index 000000000..e747e87a4 Binary files /dev/null and b/public/terrain/19/858542/353929.terrain differ diff --git a/public/terrain/19/858542/353930.terrain b/public/terrain/19/858542/353930.terrain new file mode 100644 index 000000000..28feb0e2f Binary files /dev/null and b/public/terrain/19/858542/353930.terrain differ diff --git a/public/terrain/19/858542/353931.terrain b/public/terrain/19/858542/353931.terrain new file mode 100644 index 000000000..4f9b4dde1 Binary files /dev/null and b/public/terrain/19/858542/353931.terrain differ diff --git a/public/terrain/19/858542/353932.terrain b/public/terrain/19/858542/353932.terrain new file mode 100644 index 000000000..45e2274b9 Binary files /dev/null and b/public/terrain/19/858542/353932.terrain differ diff --git a/public/terrain/19/858542/353933.terrain b/public/terrain/19/858542/353933.terrain new file mode 100644 index 000000000..f7bf8c2dc Binary files /dev/null and b/public/terrain/19/858542/353933.terrain differ diff --git a/public/terrain/19/858542/353934.terrain b/public/terrain/19/858542/353934.terrain new file mode 100644 index 000000000..dfbc3c79a Binary files /dev/null and b/public/terrain/19/858542/353934.terrain differ diff --git a/public/terrain/19/858542/353935.terrain b/public/terrain/19/858542/353935.terrain new file mode 100644 index 000000000..3c030c35b Binary files /dev/null and b/public/terrain/19/858542/353935.terrain differ diff --git a/public/terrain/19/858542/353936.terrain b/public/terrain/19/858542/353936.terrain new file mode 100644 index 000000000..d5c42eae9 Binary files /dev/null and b/public/terrain/19/858542/353936.terrain differ diff --git a/public/terrain/19/858542/353937.terrain b/public/terrain/19/858542/353937.terrain new file mode 100644 index 000000000..c94fc49e8 Binary files /dev/null and b/public/terrain/19/858542/353937.terrain differ diff --git a/public/terrain/19/858542/353938.terrain b/public/terrain/19/858542/353938.terrain new file mode 100644 index 000000000..c98761fbb Binary files /dev/null and b/public/terrain/19/858542/353938.terrain differ diff --git a/public/terrain/19/858542/353939.terrain b/public/terrain/19/858542/353939.terrain new file mode 100644 index 000000000..722920ab7 Binary files /dev/null and b/public/terrain/19/858542/353939.terrain differ diff --git a/public/terrain/19/858542/353940.terrain b/public/terrain/19/858542/353940.terrain new file mode 100644 index 000000000..8b939a745 Binary files /dev/null and b/public/terrain/19/858542/353940.terrain differ diff --git a/public/terrain/19/858542/353941.terrain b/public/terrain/19/858542/353941.terrain new file mode 100644 index 000000000..964838bdb Binary files /dev/null and b/public/terrain/19/858542/353941.terrain differ diff --git a/public/terrain/19/858542/353942.terrain b/public/terrain/19/858542/353942.terrain new file mode 100644 index 000000000..4117eacbf Binary files /dev/null and b/public/terrain/19/858542/353942.terrain differ diff --git a/public/terrain/19/858542/353943.terrain b/public/terrain/19/858542/353943.terrain new file mode 100644 index 000000000..482c45042 Binary files /dev/null and b/public/terrain/19/858542/353943.terrain differ diff --git a/public/terrain/19/858542/353944.terrain b/public/terrain/19/858542/353944.terrain new file mode 100644 index 000000000..d15e4a8ef Binary files /dev/null and b/public/terrain/19/858542/353944.terrain differ diff --git a/public/terrain/19/858542/353945.terrain b/public/terrain/19/858542/353945.terrain new file mode 100644 index 000000000..b8c9f590c Binary files /dev/null and b/public/terrain/19/858542/353945.terrain differ diff --git a/public/terrain/19/858542/353946.terrain b/public/terrain/19/858542/353946.terrain new file mode 100644 index 000000000..df9b4f7c1 Binary files /dev/null and b/public/terrain/19/858542/353946.terrain differ diff --git a/public/terrain/19/858542/353947.terrain b/public/terrain/19/858542/353947.terrain new file mode 100644 index 000000000..a2b900ec9 Binary files /dev/null and b/public/terrain/19/858542/353947.terrain differ diff --git a/public/terrain/19/858542/353948.terrain b/public/terrain/19/858542/353948.terrain new file mode 100644 index 000000000..0ea56b0c3 Binary files /dev/null and b/public/terrain/19/858542/353948.terrain differ diff --git a/public/terrain/19/858542/353949.terrain b/public/terrain/19/858542/353949.terrain new file mode 100644 index 000000000..2a492b133 Binary files /dev/null and b/public/terrain/19/858542/353949.terrain differ diff --git a/public/terrain/19/858542/353950.terrain b/public/terrain/19/858542/353950.terrain new file mode 100644 index 000000000..64d37cb36 Binary files /dev/null and b/public/terrain/19/858542/353950.terrain differ diff --git a/public/terrain/19/858542/353951.terrain b/public/terrain/19/858542/353951.terrain new file mode 100644 index 000000000..628ced0e0 Binary files /dev/null and b/public/terrain/19/858542/353951.terrain differ diff --git a/public/terrain/19/858542/353952.terrain b/public/terrain/19/858542/353952.terrain new file mode 100644 index 000000000..e9b14675f Binary files /dev/null and b/public/terrain/19/858542/353952.terrain differ diff --git a/public/terrain/19/858542/353953.terrain b/public/terrain/19/858542/353953.terrain new file mode 100644 index 000000000..80b773c0c Binary files /dev/null and b/public/terrain/19/858542/353953.terrain differ diff --git a/public/terrain/19/858542/353954.terrain b/public/terrain/19/858542/353954.terrain new file mode 100644 index 000000000..b6852b9a8 Binary files /dev/null and b/public/terrain/19/858542/353954.terrain differ diff --git a/public/terrain/19/858542/353955.terrain b/public/terrain/19/858542/353955.terrain new file mode 100644 index 000000000..774b1eea0 Binary files /dev/null and b/public/terrain/19/858542/353955.terrain differ diff --git a/public/terrain/19/858542/353956.terrain b/public/terrain/19/858542/353956.terrain new file mode 100644 index 000000000..c39be631a Binary files /dev/null and b/public/terrain/19/858542/353956.terrain differ diff --git a/public/terrain/19/858542/353957.terrain b/public/terrain/19/858542/353957.terrain new file mode 100644 index 000000000..e42bac333 Binary files /dev/null and b/public/terrain/19/858542/353957.terrain differ diff --git a/public/terrain/19/858542/353958.terrain b/public/terrain/19/858542/353958.terrain new file mode 100644 index 000000000..6bc3adf7b Binary files /dev/null and b/public/terrain/19/858542/353958.terrain differ diff --git a/public/terrain/19/858542/353959.terrain b/public/terrain/19/858542/353959.terrain new file mode 100644 index 000000000..96fa0ef78 Binary files /dev/null and b/public/terrain/19/858542/353959.terrain differ diff --git a/public/terrain/19/858542/353960.terrain b/public/terrain/19/858542/353960.terrain new file mode 100644 index 000000000..5db38f7cf Binary files /dev/null and b/public/terrain/19/858542/353960.terrain differ diff --git a/public/terrain/19/858542/353961.terrain b/public/terrain/19/858542/353961.terrain new file mode 100644 index 000000000..545b48081 Binary files /dev/null and b/public/terrain/19/858542/353961.terrain differ diff --git a/public/terrain/19/858542/353962.terrain b/public/terrain/19/858542/353962.terrain new file mode 100644 index 000000000..2ed24ff03 Binary files /dev/null and b/public/terrain/19/858542/353962.terrain differ diff --git a/public/terrain/19/858542/353963.terrain b/public/terrain/19/858542/353963.terrain new file mode 100644 index 000000000..2b8bd3484 Binary files /dev/null and b/public/terrain/19/858542/353963.terrain differ diff --git a/public/terrain/19/858542/353964.terrain b/public/terrain/19/858542/353964.terrain new file mode 100644 index 000000000..68d7c53e3 Binary files /dev/null and b/public/terrain/19/858542/353964.terrain differ diff --git a/public/terrain/19/858542/353965.terrain b/public/terrain/19/858542/353965.terrain new file mode 100644 index 000000000..a8dd7e12a Binary files /dev/null and b/public/terrain/19/858542/353965.terrain differ diff --git a/public/terrain/19/858542/353966.terrain b/public/terrain/19/858542/353966.terrain new file mode 100644 index 000000000..664948909 Binary files /dev/null and b/public/terrain/19/858542/353966.terrain differ diff --git a/public/terrain/19/858542/353967.terrain b/public/terrain/19/858542/353967.terrain new file mode 100644 index 000000000..62a2a41e4 Binary files /dev/null and b/public/terrain/19/858542/353967.terrain differ diff --git a/public/terrain/19/858542/353968.terrain b/public/terrain/19/858542/353968.terrain new file mode 100644 index 000000000..bbafb5bce Binary files /dev/null and b/public/terrain/19/858542/353968.terrain differ diff --git a/public/terrain/19/858542/353969.terrain b/public/terrain/19/858542/353969.terrain new file mode 100644 index 000000000..4de03a584 Binary files /dev/null and b/public/terrain/19/858542/353969.terrain differ diff --git a/public/terrain/19/858542/353970.terrain b/public/terrain/19/858542/353970.terrain new file mode 100644 index 000000000..41642d6ac Binary files /dev/null and b/public/terrain/19/858542/353970.terrain differ diff --git a/public/terrain/19/858542/353971.terrain b/public/terrain/19/858542/353971.terrain new file mode 100644 index 000000000..dc1c0b08e Binary files /dev/null and b/public/terrain/19/858542/353971.terrain differ diff --git a/public/terrain/19/858542/353972.terrain b/public/terrain/19/858542/353972.terrain new file mode 100644 index 000000000..e556d350c Binary files /dev/null and b/public/terrain/19/858542/353972.terrain differ diff --git a/public/terrain/19/858542/353973.terrain b/public/terrain/19/858542/353973.terrain new file mode 100644 index 000000000..84a7b6b4c Binary files /dev/null and b/public/terrain/19/858542/353973.terrain differ diff --git a/public/terrain/19/858542/353974.terrain b/public/terrain/19/858542/353974.terrain new file mode 100644 index 000000000..cb0379e6b Binary files /dev/null and b/public/terrain/19/858542/353974.terrain differ diff --git a/public/terrain/19/858542/353975.terrain b/public/terrain/19/858542/353975.terrain new file mode 100644 index 000000000..a78d31cce Binary files /dev/null and b/public/terrain/19/858542/353975.terrain differ diff --git a/public/terrain/19/858542/353976.terrain b/public/terrain/19/858542/353976.terrain new file mode 100644 index 000000000..88930d00f Binary files /dev/null and b/public/terrain/19/858542/353976.terrain differ diff --git a/public/terrain/19/858542/353977.terrain b/public/terrain/19/858542/353977.terrain new file mode 100644 index 000000000..24e72cd7b Binary files /dev/null and b/public/terrain/19/858542/353977.terrain differ diff --git a/public/terrain/19/858542/353978.terrain b/public/terrain/19/858542/353978.terrain new file mode 100644 index 000000000..6cdee82e8 Binary files /dev/null and b/public/terrain/19/858542/353978.terrain differ diff --git a/public/terrain/19/858542/353979.terrain b/public/terrain/19/858542/353979.terrain new file mode 100644 index 000000000..7d982568d Binary files /dev/null and b/public/terrain/19/858542/353979.terrain differ diff --git a/public/terrain/19/858542/353980.terrain b/public/terrain/19/858542/353980.terrain new file mode 100644 index 000000000..66e5ed815 Binary files /dev/null and b/public/terrain/19/858542/353980.terrain differ diff --git a/public/terrain/19/858542/353981.terrain b/public/terrain/19/858542/353981.terrain new file mode 100644 index 000000000..906722b29 Binary files /dev/null and b/public/terrain/19/858542/353981.terrain differ diff --git a/public/terrain/19/858542/353982.terrain b/public/terrain/19/858542/353982.terrain new file mode 100644 index 000000000..2cd2998e3 Binary files /dev/null and b/public/terrain/19/858542/353982.terrain differ diff --git a/public/terrain/19/858542/353983.terrain b/public/terrain/19/858542/353983.terrain new file mode 100644 index 000000000..2488fe82d Binary files /dev/null and b/public/terrain/19/858542/353983.terrain differ diff --git a/public/terrain/19/858542/353984.terrain b/public/terrain/19/858542/353984.terrain new file mode 100644 index 000000000..78b82f3d9 Binary files /dev/null and b/public/terrain/19/858542/353984.terrain differ diff --git a/public/terrain/19/858542/353985.terrain b/public/terrain/19/858542/353985.terrain new file mode 100644 index 000000000..86ce31ce1 Binary files /dev/null and b/public/terrain/19/858542/353985.terrain differ diff --git a/public/terrain/19/858542/353986.terrain b/public/terrain/19/858542/353986.terrain new file mode 100644 index 000000000..57670df50 Binary files /dev/null and b/public/terrain/19/858542/353986.terrain differ diff --git a/public/terrain/19/858542/353987.terrain b/public/terrain/19/858542/353987.terrain new file mode 100644 index 000000000..2076bbb02 Binary files /dev/null and b/public/terrain/19/858542/353987.terrain differ diff --git a/public/terrain/19/858542/353988.terrain b/public/terrain/19/858542/353988.terrain new file mode 100644 index 000000000..7a5a7cdf8 Binary files /dev/null and b/public/terrain/19/858542/353988.terrain differ diff --git a/public/terrain/19/858542/353989.terrain b/public/terrain/19/858542/353989.terrain new file mode 100644 index 000000000..5475664a5 Binary files /dev/null and b/public/terrain/19/858542/353989.terrain differ diff --git a/public/terrain/19/858542/353990.terrain b/public/terrain/19/858542/353990.terrain new file mode 100644 index 000000000..48d2e39bc Binary files /dev/null and b/public/terrain/19/858542/353990.terrain differ diff --git a/public/terrain/19/858542/353991.terrain b/public/terrain/19/858542/353991.terrain new file mode 100644 index 000000000..b950cba87 Binary files /dev/null and b/public/terrain/19/858542/353991.terrain differ diff --git a/public/terrain/19/858542/353992.terrain b/public/terrain/19/858542/353992.terrain new file mode 100644 index 000000000..02db7031d Binary files /dev/null and b/public/terrain/19/858542/353992.terrain differ diff --git a/public/terrain/19/858542/353993.terrain b/public/terrain/19/858542/353993.terrain new file mode 100644 index 000000000..0c97056c3 Binary files /dev/null and b/public/terrain/19/858542/353993.terrain differ diff --git a/public/terrain/19/858542/353994.terrain b/public/terrain/19/858542/353994.terrain new file mode 100644 index 000000000..900795032 Binary files /dev/null and b/public/terrain/19/858542/353994.terrain differ diff --git a/public/terrain/19/858542/353995.terrain b/public/terrain/19/858542/353995.terrain new file mode 100644 index 000000000..faa1de00c Binary files /dev/null and b/public/terrain/19/858542/353995.terrain differ diff --git a/public/terrain/19/858542/353996.terrain b/public/terrain/19/858542/353996.terrain new file mode 100644 index 000000000..76bb70d26 Binary files /dev/null and b/public/terrain/19/858542/353996.terrain differ diff --git a/public/terrain/19/858542/353997.terrain b/public/terrain/19/858542/353997.terrain new file mode 100644 index 000000000..17909395e Binary files /dev/null and b/public/terrain/19/858542/353997.terrain differ diff --git a/public/terrain/19/858542/353998.terrain b/public/terrain/19/858542/353998.terrain new file mode 100644 index 000000000..a043c9bc2 Binary files /dev/null and b/public/terrain/19/858542/353998.terrain differ diff --git a/public/terrain/19/858542/353999.terrain b/public/terrain/19/858542/353999.terrain new file mode 100644 index 000000000..728bee67a Binary files /dev/null and b/public/terrain/19/858542/353999.terrain differ diff --git a/public/terrain/19/858542/354000.terrain b/public/terrain/19/858542/354000.terrain new file mode 100644 index 000000000..f132a68f6 Binary files /dev/null and b/public/terrain/19/858542/354000.terrain differ diff --git a/public/terrain/19/858542/354001.terrain b/public/terrain/19/858542/354001.terrain new file mode 100644 index 000000000..7da996eda Binary files /dev/null and b/public/terrain/19/858542/354001.terrain differ diff --git a/public/terrain/19/858542/354002.terrain b/public/terrain/19/858542/354002.terrain new file mode 100644 index 000000000..d31660936 Binary files /dev/null and b/public/terrain/19/858542/354002.terrain differ diff --git a/public/terrain/19/858542/354003.terrain b/public/terrain/19/858542/354003.terrain new file mode 100644 index 000000000..c7b739956 Binary files /dev/null and b/public/terrain/19/858542/354003.terrain differ diff --git a/public/terrain/19/858542/354004.terrain b/public/terrain/19/858542/354004.terrain new file mode 100644 index 000000000..fc23121ae Binary files /dev/null and b/public/terrain/19/858542/354004.terrain differ diff --git a/public/terrain/19/858542/354005.terrain b/public/terrain/19/858542/354005.terrain new file mode 100644 index 000000000..274ce7b03 Binary files /dev/null and b/public/terrain/19/858542/354005.terrain differ diff --git a/public/terrain/19/858542/354006.terrain b/public/terrain/19/858542/354006.terrain new file mode 100644 index 000000000..8f476607a Binary files /dev/null and b/public/terrain/19/858542/354006.terrain differ diff --git a/public/terrain/19/858542/354007.terrain b/public/terrain/19/858542/354007.terrain new file mode 100644 index 000000000..f9dc49c58 Binary files /dev/null and b/public/terrain/19/858542/354007.terrain differ diff --git a/public/terrain/19/858542/354008.terrain b/public/terrain/19/858542/354008.terrain new file mode 100644 index 000000000..0e6e97b20 Binary files /dev/null and b/public/terrain/19/858542/354008.terrain differ diff --git a/public/terrain/19/858542/354009.terrain b/public/terrain/19/858542/354009.terrain new file mode 100644 index 000000000..e364a1d76 Binary files /dev/null and b/public/terrain/19/858542/354009.terrain differ diff --git a/public/terrain/19/858542/354010.terrain b/public/terrain/19/858542/354010.terrain new file mode 100644 index 000000000..4d4b5a363 Binary files /dev/null and b/public/terrain/19/858542/354010.terrain differ diff --git a/public/terrain/19/858542/354011.terrain b/public/terrain/19/858542/354011.terrain new file mode 100644 index 000000000..53c064ff3 Binary files /dev/null and b/public/terrain/19/858542/354011.terrain differ diff --git a/public/terrain/19/858542/354012.terrain b/public/terrain/19/858542/354012.terrain new file mode 100644 index 000000000..e3cc4d9fb Binary files /dev/null and b/public/terrain/19/858542/354012.terrain differ diff --git a/public/terrain/19/858542/354013.terrain b/public/terrain/19/858542/354013.terrain new file mode 100644 index 000000000..468f4660d Binary files /dev/null and b/public/terrain/19/858542/354013.terrain differ diff --git a/public/terrain/19/858542/354014.terrain b/public/terrain/19/858542/354014.terrain new file mode 100644 index 000000000..f987e77f0 Binary files /dev/null and b/public/terrain/19/858542/354014.terrain differ diff --git a/public/terrain/19/858542/354015.terrain b/public/terrain/19/858542/354015.terrain new file mode 100644 index 000000000..980d28954 Binary files /dev/null and b/public/terrain/19/858542/354015.terrain differ diff --git a/public/terrain/19/858542/354016.terrain b/public/terrain/19/858542/354016.terrain new file mode 100644 index 000000000..e34f6d56d Binary files /dev/null and b/public/terrain/19/858542/354016.terrain differ diff --git a/public/terrain/19/858542/354017.terrain b/public/terrain/19/858542/354017.terrain new file mode 100644 index 000000000..bdde603bf Binary files /dev/null and b/public/terrain/19/858542/354017.terrain differ diff --git a/public/terrain/19/858542/354018.terrain b/public/terrain/19/858542/354018.terrain new file mode 100644 index 000000000..e1bd33737 Binary files /dev/null and b/public/terrain/19/858542/354018.terrain differ diff --git a/public/terrain/19/858542/354019.terrain b/public/terrain/19/858542/354019.terrain new file mode 100644 index 000000000..4796dd9c1 Binary files /dev/null and b/public/terrain/19/858542/354019.terrain differ diff --git a/public/terrain/19/858542/354020.terrain b/public/terrain/19/858542/354020.terrain new file mode 100644 index 000000000..4e2344891 Binary files /dev/null and b/public/terrain/19/858542/354020.terrain differ diff --git a/public/terrain/19/858542/354021.terrain b/public/terrain/19/858542/354021.terrain new file mode 100644 index 000000000..c59c5831d Binary files /dev/null and b/public/terrain/19/858542/354021.terrain differ diff --git a/public/terrain/19/858542/354022.terrain b/public/terrain/19/858542/354022.terrain new file mode 100644 index 000000000..034ecf322 Binary files /dev/null and b/public/terrain/19/858542/354022.terrain differ diff --git a/public/terrain/19/858542/354023.terrain b/public/terrain/19/858542/354023.terrain new file mode 100644 index 000000000..e373ccf30 Binary files /dev/null and b/public/terrain/19/858542/354023.terrain differ diff --git a/public/terrain/19/858542/354024.terrain b/public/terrain/19/858542/354024.terrain new file mode 100644 index 000000000..782fb4ca6 Binary files /dev/null and b/public/terrain/19/858542/354024.terrain differ diff --git a/public/terrain/19/858542/354025.terrain b/public/terrain/19/858542/354025.terrain new file mode 100644 index 000000000..dd4badf2d Binary files /dev/null and b/public/terrain/19/858542/354025.terrain differ diff --git a/public/terrain/19/858542/354026.terrain b/public/terrain/19/858542/354026.terrain new file mode 100644 index 000000000..9966c2889 Binary files /dev/null and b/public/terrain/19/858542/354026.terrain differ diff --git a/public/terrain/19/858542/354027.terrain b/public/terrain/19/858542/354027.terrain new file mode 100644 index 000000000..f6436555f Binary files /dev/null and b/public/terrain/19/858542/354027.terrain differ diff --git a/public/terrain/19/858542/354028.terrain b/public/terrain/19/858542/354028.terrain new file mode 100644 index 000000000..fc87b2826 Binary files /dev/null and b/public/terrain/19/858542/354028.terrain differ diff --git a/public/terrain/19/858542/354029.terrain b/public/terrain/19/858542/354029.terrain new file mode 100644 index 000000000..ebd7dee28 Binary files /dev/null and b/public/terrain/19/858542/354029.terrain differ diff --git a/public/terrain/19/858542/354030.terrain b/public/terrain/19/858542/354030.terrain new file mode 100644 index 000000000..75281c822 Binary files /dev/null and b/public/terrain/19/858542/354030.terrain differ diff --git a/public/terrain/19/858542/354031.terrain b/public/terrain/19/858542/354031.terrain new file mode 100644 index 000000000..1ac06b82a Binary files /dev/null and b/public/terrain/19/858542/354031.terrain differ diff --git a/public/terrain/19/858542/354032.terrain b/public/terrain/19/858542/354032.terrain new file mode 100644 index 000000000..d7e8d1319 Binary files /dev/null and b/public/terrain/19/858542/354032.terrain differ diff --git a/public/terrain/19/858542/354033.terrain b/public/terrain/19/858542/354033.terrain new file mode 100644 index 000000000..0d7321e45 Binary files /dev/null and b/public/terrain/19/858542/354033.terrain differ diff --git a/public/terrain/19/858542/354034.terrain b/public/terrain/19/858542/354034.terrain new file mode 100644 index 000000000..d795e00ae Binary files /dev/null and b/public/terrain/19/858542/354034.terrain differ diff --git a/public/terrain/19/858542/354035.terrain b/public/terrain/19/858542/354035.terrain new file mode 100644 index 000000000..c5f4d5228 Binary files /dev/null and b/public/terrain/19/858542/354035.terrain differ diff --git a/public/terrain/19/858542/354036.terrain b/public/terrain/19/858542/354036.terrain new file mode 100644 index 000000000..ddd9ab00b Binary files /dev/null and b/public/terrain/19/858542/354036.terrain differ diff --git a/public/terrain/19/858542/354037.terrain b/public/terrain/19/858542/354037.terrain new file mode 100644 index 000000000..8dfad4293 Binary files /dev/null and b/public/terrain/19/858542/354037.terrain differ diff --git a/public/terrain/19/858542/354038.terrain b/public/terrain/19/858542/354038.terrain new file mode 100644 index 000000000..b95da2dbb Binary files /dev/null and b/public/terrain/19/858542/354038.terrain differ diff --git a/public/terrain/19/858542/354039.terrain b/public/terrain/19/858542/354039.terrain new file mode 100644 index 000000000..95b4c98cd Binary files /dev/null and b/public/terrain/19/858542/354039.terrain differ diff --git a/public/terrain/19/858542/354040.terrain b/public/terrain/19/858542/354040.terrain new file mode 100644 index 000000000..2ec529532 Binary files /dev/null and b/public/terrain/19/858542/354040.terrain differ diff --git a/public/terrain/19/858542/354041.terrain b/public/terrain/19/858542/354041.terrain new file mode 100644 index 000000000..e9eee91a6 Binary files /dev/null and b/public/terrain/19/858542/354041.terrain differ diff --git a/public/terrain/19/858542/354042.terrain b/public/terrain/19/858542/354042.terrain new file mode 100644 index 000000000..437d9adbd Binary files /dev/null and b/public/terrain/19/858542/354042.terrain differ diff --git a/public/terrain/19/858542/354043.terrain b/public/terrain/19/858542/354043.terrain new file mode 100644 index 000000000..5350f2028 Binary files /dev/null and b/public/terrain/19/858542/354043.terrain differ diff --git a/public/terrain/19/858542/354044.terrain b/public/terrain/19/858542/354044.terrain new file mode 100644 index 000000000..a8cfc4ea7 Binary files /dev/null and b/public/terrain/19/858542/354044.terrain differ diff --git a/public/terrain/19/858542/354045.terrain b/public/terrain/19/858542/354045.terrain new file mode 100644 index 000000000..1724b3ce4 Binary files /dev/null and b/public/terrain/19/858542/354045.terrain differ diff --git a/public/terrain/19/858542/354046.terrain b/public/terrain/19/858542/354046.terrain new file mode 100644 index 000000000..d1a08bb53 Binary files /dev/null and b/public/terrain/19/858542/354046.terrain differ diff --git a/public/terrain/19/858542/354047.terrain b/public/terrain/19/858542/354047.terrain new file mode 100644 index 000000000..17b60b0a5 Binary files /dev/null and b/public/terrain/19/858542/354047.terrain differ diff --git a/public/terrain/19/858542/354048.terrain b/public/terrain/19/858542/354048.terrain new file mode 100644 index 000000000..ff828d438 Binary files /dev/null and b/public/terrain/19/858542/354048.terrain differ diff --git a/public/terrain/19/858542/354049.terrain b/public/terrain/19/858542/354049.terrain new file mode 100644 index 000000000..1123f6252 Binary files /dev/null and b/public/terrain/19/858542/354049.terrain differ diff --git a/public/terrain/19/858542/354050.terrain b/public/terrain/19/858542/354050.terrain new file mode 100644 index 000000000..fdd7a94fd Binary files /dev/null and b/public/terrain/19/858542/354050.terrain differ diff --git a/public/terrain/19/858542/354051.terrain b/public/terrain/19/858542/354051.terrain new file mode 100644 index 000000000..6c5e4eb3b Binary files /dev/null and b/public/terrain/19/858542/354051.terrain differ diff --git a/public/terrain/19/858542/354052.terrain b/public/terrain/19/858542/354052.terrain new file mode 100644 index 000000000..c7024dc53 Binary files /dev/null and b/public/terrain/19/858542/354052.terrain differ diff --git a/public/terrain/19/858542/354053.terrain b/public/terrain/19/858542/354053.terrain new file mode 100644 index 000000000..0d5985b2d Binary files /dev/null and b/public/terrain/19/858542/354053.terrain differ diff --git a/public/terrain/19/858542/354054.terrain b/public/terrain/19/858542/354054.terrain new file mode 100644 index 000000000..4fa3385e6 Binary files /dev/null and b/public/terrain/19/858542/354054.terrain differ diff --git a/public/terrain/19/858542/354055.terrain b/public/terrain/19/858542/354055.terrain new file mode 100644 index 000000000..9a433fcdf Binary files /dev/null and b/public/terrain/19/858542/354055.terrain differ diff --git a/public/terrain/19/858542/354056.terrain b/public/terrain/19/858542/354056.terrain new file mode 100644 index 000000000..99d8e56b6 Binary files /dev/null and b/public/terrain/19/858542/354056.terrain differ diff --git a/public/terrain/19/858542/354057.terrain b/public/terrain/19/858542/354057.terrain new file mode 100644 index 000000000..59e688500 Binary files /dev/null and b/public/terrain/19/858542/354057.terrain differ diff --git a/public/terrain/19/858542/354058.terrain b/public/terrain/19/858542/354058.terrain new file mode 100644 index 000000000..209472a64 Binary files /dev/null and b/public/terrain/19/858542/354058.terrain differ diff --git a/public/terrain/19/858542/354059.terrain b/public/terrain/19/858542/354059.terrain new file mode 100644 index 000000000..98b098cc0 Binary files /dev/null and b/public/terrain/19/858542/354059.terrain differ diff --git a/public/terrain/19/858543/353743.terrain b/public/terrain/19/858543/353743.terrain new file mode 100644 index 000000000..631cc1e34 Binary files /dev/null and b/public/terrain/19/858543/353743.terrain differ diff --git a/public/terrain/19/858543/353744.terrain b/public/terrain/19/858543/353744.terrain new file mode 100644 index 000000000..ae713a6a3 Binary files /dev/null and b/public/terrain/19/858543/353744.terrain differ diff --git a/public/terrain/19/858543/353745.terrain b/public/terrain/19/858543/353745.terrain new file mode 100644 index 000000000..6af22e603 Binary files /dev/null and b/public/terrain/19/858543/353745.terrain differ diff --git a/public/terrain/19/858543/353746.terrain b/public/terrain/19/858543/353746.terrain new file mode 100644 index 000000000..081ac88c5 Binary files /dev/null and b/public/terrain/19/858543/353746.terrain differ diff --git a/public/terrain/19/858543/353747.terrain b/public/terrain/19/858543/353747.terrain new file mode 100644 index 000000000..85baab0da Binary files /dev/null and b/public/terrain/19/858543/353747.terrain differ diff --git a/public/terrain/19/858543/353748.terrain b/public/terrain/19/858543/353748.terrain new file mode 100644 index 000000000..8a44e2b14 Binary files /dev/null and b/public/terrain/19/858543/353748.terrain differ diff --git a/public/terrain/19/858543/353749.terrain b/public/terrain/19/858543/353749.terrain new file mode 100644 index 000000000..15ca7edc4 Binary files /dev/null and b/public/terrain/19/858543/353749.terrain differ diff --git a/public/terrain/19/858543/353750.terrain b/public/terrain/19/858543/353750.terrain new file mode 100644 index 000000000..79b88c925 Binary files /dev/null and b/public/terrain/19/858543/353750.terrain differ diff --git a/public/terrain/19/858543/353751.terrain b/public/terrain/19/858543/353751.terrain new file mode 100644 index 000000000..5e8e3e9ca Binary files /dev/null and b/public/terrain/19/858543/353751.terrain differ diff --git a/public/terrain/19/858543/353752.terrain b/public/terrain/19/858543/353752.terrain new file mode 100644 index 000000000..075dbb12a Binary files /dev/null and b/public/terrain/19/858543/353752.terrain differ diff --git a/public/terrain/19/858543/353753.terrain b/public/terrain/19/858543/353753.terrain new file mode 100644 index 000000000..cae165a63 Binary files /dev/null and b/public/terrain/19/858543/353753.terrain differ diff --git a/public/terrain/19/858543/353754.terrain b/public/terrain/19/858543/353754.terrain new file mode 100644 index 000000000..deab0e55f Binary files /dev/null and b/public/terrain/19/858543/353754.terrain differ diff --git a/public/terrain/19/858543/353755.terrain b/public/terrain/19/858543/353755.terrain new file mode 100644 index 000000000..17327b852 Binary files /dev/null and b/public/terrain/19/858543/353755.terrain differ diff --git a/public/terrain/19/858543/353756.terrain b/public/terrain/19/858543/353756.terrain new file mode 100644 index 000000000..9e29d59d5 Binary files /dev/null and b/public/terrain/19/858543/353756.terrain differ diff --git a/public/terrain/19/858543/353757.terrain b/public/terrain/19/858543/353757.terrain new file mode 100644 index 000000000..a4ee8e77e Binary files /dev/null and b/public/terrain/19/858543/353757.terrain differ diff --git a/public/terrain/19/858543/353758.terrain b/public/terrain/19/858543/353758.terrain new file mode 100644 index 000000000..d7e493bac Binary files /dev/null and b/public/terrain/19/858543/353758.terrain differ diff --git a/public/terrain/19/858543/353759.terrain b/public/terrain/19/858543/353759.terrain new file mode 100644 index 000000000..bb2353761 Binary files /dev/null and b/public/terrain/19/858543/353759.terrain differ diff --git a/public/terrain/19/858543/353760.terrain b/public/terrain/19/858543/353760.terrain new file mode 100644 index 000000000..a1f46edf0 Binary files /dev/null and b/public/terrain/19/858543/353760.terrain differ diff --git a/public/terrain/19/858543/353761.terrain b/public/terrain/19/858543/353761.terrain new file mode 100644 index 000000000..a9bc92fbd Binary files /dev/null and b/public/terrain/19/858543/353761.terrain differ diff --git a/public/terrain/19/858543/353762.terrain b/public/terrain/19/858543/353762.terrain new file mode 100644 index 000000000..58de57cc7 Binary files /dev/null and b/public/terrain/19/858543/353762.terrain differ diff --git a/public/terrain/19/858543/353763.terrain b/public/terrain/19/858543/353763.terrain new file mode 100644 index 000000000..6d508e6a5 Binary files /dev/null and b/public/terrain/19/858543/353763.terrain differ diff --git a/public/terrain/19/858543/353764.terrain b/public/terrain/19/858543/353764.terrain new file mode 100644 index 000000000..46338ec5f Binary files /dev/null and b/public/terrain/19/858543/353764.terrain differ diff --git a/public/terrain/19/858543/353765.terrain b/public/terrain/19/858543/353765.terrain new file mode 100644 index 000000000..ed05e0649 Binary files /dev/null and b/public/terrain/19/858543/353765.terrain differ diff --git a/public/terrain/19/858543/353766.terrain b/public/terrain/19/858543/353766.terrain new file mode 100644 index 000000000..a7a30e995 Binary files /dev/null and b/public/terrain/19/858543/353766.terrain differ diff --git a/public/terrain/19/858543/353767.terrain b/public/terrain/19/858543/353767.terrain new file mode 100644 index 000000000..e43aaf1cf Binary files /dev/null and b/public/terrain/19/858543/353767.terrain differ diff --git a/public/terrain/19/858543/353768.terrain b/public/terrain/19/858543/353768.terrain new file mode 100644 index 000000000..cc0bb83fd Binary files /dev/null and b/public/terrain/19/858543/353768.terrain differ diff --git a/public/terrain/19/858543/353769.terrain b/public/terrain/19/858543/353769.terrain new file mode 100644 index 000000000..4bfc4f818 Binary files /dev/null and b/public/terrain/19/858543/353769.terrain differ diff --git a/public/terrain/19/858543/353770.terrain b/public/terrain/19/858543/353770.terrain new file mode 100644 index 000000000..49ff1cfa3 Binary files /dev/null and b/public/terrain/19/858543/353770.terrain differ diff --git a/public/terrain/19/858543/353771.terrain b/public/terrain/19/858543/353771.terrain new file mode 100644 index 000000000..c780c7a13 Binary files /dev/null and b/public/terrain/19/858543/353771.terrain differ diff --git a/public/terrain/19/858543/353772.terrain b/public/terrain/19/858543/353772.terrain new file mode 100644 index 000000000..db9687768 Binary files /dev/null and b/public/terrain/19/858543/353772.terrain differ diff --git a/public/terrain/19/858543/353773.terrain b/public/terrain/19/858543/353773.terrain new file mode 100644 index 000000000..4fc0cc24a Binary files /dev/null and b/public/terrain/19/858543/353773.terrain differ diff --git a/public/terrain/19/858543/353774.terrain b/public/terrain/19/858543/353774.terrain new file mode 100644 index 000000000..ef11bb4ab Binary files /dev/null and b/public/terrain/19/858543/353774.terrain differ diff --git a/public/terrain/19/858543/353775.terrain b/public/terrain/19/858543/353775.terrain new file mode 100644 index 000000000..f7be3d4ab Binary files /dev/null and b/public/terrain/19/858543/353775.terrain differ diff --git a/public/terrain/19/858543/353776.terrain b/public/terrain/19/858543/353776.terrain new file mode 100644 index 000000000..4d0d99195 Binary files /dev/null and b/public/terrain/19/858543/353776.terrain differ diff --git a/public/terrain/19/858543/353777.terrain b/public/terrain/19/858543/353777.terrain new file mode 100644 index 000000000..5aa3e4191 Binary files /dev/null and b/public/terrain/19/858543/353777.terrain differ diff --git a/public/terrain/19/858543/353778.terrain b/public/terrain/19/858543/353778.terrain new file mode 100644 index 000000000..774f7abcd Binary files /dev/null and b/public/terrain/19/858543/353778.terrain differ diff --git a/public/terrain/19/858543/353779.terrain b/public/terrain/19/858543/353779.terrain new file mode 100644 index 000000000..ad5a2074b Binary files /dev/null and b/public/terrain/19/858543/353779.terrain differ diff --git a/public/terrain/19/858543/353780.terrain b/public/terrain/19/858543/353780.terrain new file mode 100644 index 000000000..9acbaee11 Binary files /dev/null and b/public/terrain/19/858543/353780.terrain differ diff --git a/public/terrain/19/858543/353781.terrain b/public/terrain/19/858543/353781.terrain new file mode 100644 index 000000000..32f46b992 Binary files /dev/null and b/public/terrain/19/858543/353781.terrain differ diff --git a/public/terrain/19/858543/353782.terrain b/public/terrain/19/858543/353782.terrain new file mode 100644 index 000000000..dba9f92c9 Binary files /dev/null and b/public/terrain/19/858543/353782.terrain differ diff --git a/public/terrain/19/858543/353783.terrain b/public/terrain/19/858543/353783.terrain new file mode 100644 index 000000000..4c4a2882b Binary files /dev/null and b/public/terrain/19/858543/353783.terrain differ diff --git a/public/terrain/19/858543/353784.terrain b/public/terrain/19/858543/353784.terrain new file mode 100644 index 000000000..5835b1c7e Binary files /dev/null and b/public/terrain/19/858543/353784.terrain differ diff --git a/public/terrain/19/858543/353785.terrain b/public/terrain/19/858543/353785.terrain new file mode 100644 index 000000000..78202df61 Binary files /dev/null and b/public/terrain/19/858543/353785.terrain differ diff --git a/public/terrain/19/858543/353786.terrain b/public/terrain/19/858543/353786.terrain new file mode 100644 index 000000000..4167afc88 Binary files /dev/null and b/public/terrain/19/858543/353786.terrain differ diff --git a/public/terrain/19/858543/353787.terrain b/public/terrain/19/858543/353787.terrain new file mode 100644 index 000000000..3a46d725b Binary files /dev/null and b/public/terrain/19/858543/353787.terrain differ diff --git a/public/terrain/19/858543/353788.terrain b/public/terrain/19/858543/353788.terrain new file mode 100644 index 000000000..415b2ef5a Binary files /dev/null and b/public/terrain/19/858543/353788.terrain differ diff --git a/public/terrain/19/858543/353789.terrain b/public/terrain/19/858543/353789.terrain new file mode 100644 index 000000000..539e71675 Binary files /dev/null and b/public/terrain/19/858543/353789.terrain differ diff --git a/public/terrain/19/858543/353790.terrain b/public/terrain/19/858543/353790.terrain new file mode 100644 index 000000000..2d9ec67f8 Binary files /dev/null and b/public/terrain/19/858543/353790.terrain differ diff --git a/public/terrain/19/858543/353791.terrain b/public/terrain/19/858543/353791.terrain new file mode 100644 index 000000000..8b31516b2 Binary files /dev/null and b/public/terrain/19/858543/353791.terrain differ diff --git a/public/terrain/19/858543/353792.terrain b/public/terrain/19/858543/353792.terrain new file mode 100644 index 000000000..9ba03dfac Binary files /dev/null and b/public/terrain/19/858543/353792.terrain differ diff --git a/public/terrain/19/858543/353793.terrain b/public/terrain/19/858543/353793.terrain new file mode 100644 index 000000000..eeb5ad9e9 Binary files /dev/null and b/public/terrain/19/858543/353793.terrain differ diff --git a/public/terrain/19/858543/353794.terrain b/public/terrain/19/858543/353794.terrain new file mode 100644 index 000000000..88f1853bd Binary files /dev/null and b/public/terrain/19/858543/353794.terrain differ diff --git a/public/terrain/19/858543/353795.terrain b/public/terrain/19/858543/353795.terrain new file mode 100644 index 000000000..24d5cb14c Binary files /dev/null and b/public/terrain/19/858543/353795.terrain differ diff --git a/public/terrain/19/858543/353796.terrain b/public/terrain/19/858543/353796.terrain new file mode 100644 index 000000000..232b02463 Binary files /dev/null and b/public/terrain/19/858543/353796.terrain differ diff --git a/public/terrain/19/858543/353797.terrain b/public/terrain/19/858543/353797.terrain new file mode 100644 index 000000000..e3f443e59 Binary files /dev/null and b/public/terrain/19/858543/353797.terrain differ diff --git a/public/terrain/19/858543/353798.terrain b/public/terrain/19/858543/353798.terrain new file mode 100644 index 000000000..2504b5c31 Binary files /dev/null and b/public/terrain/19/858543/353798.terrain differ diff --git a/public/terrain/19/858543/353799.terrain b/public/terrain/19/858543/353799.terrain new file mode 100644 index 000000000..760120ed3 Binary files /dev/null and b/public/terrain/19/858543/353799.terrain differ diff --git a/public/terrain/19/858543/353800.terrain b/public/terrain/19/858543/353800.terrain new file mode 100644 index 000000000..c4e57e0f0 Binary files /dev/null and b/public/terrain/19/858543/353800.terrain differ diff --git a/public/terrain/19/858543/353801.terrain b/public/terrain/19/858543/353801.terrain new file mode 100644 index 000000000..d35a9ca55 Binary files /dev/null and b/public/terrain/19/858543/353801.terrain differ diff --git a/public/terrain/19/858543/353802.terrain b/public/terrain/19/858543/353802.terrain new file mode 100644 index 000000000..01a5df7de Binary files /dev/null and b/public/terrain/19/858543/353802.terrain differ diff --git a/public/terrain/19/858543/353803.terrain b/public/terrain/19/858543/353803.terrain new file mode 100644 index 000000000..03d669a07 Binary files /dev/null and b/public/terrain/19/858543/353803.terrain differ diff --git a/public/terrain/19/858543/353804.terrain b/public/terrain/19/858543/353804.terrain new file mode 100644 index 000000000..3d354ba5e Binary files /dev/null and b/public/terrain/19/858543/353804.terrain differ diff --git a/public/terrain/19/858543/353805.terrain b/public/terrain/19/858543/353805.terrain new file mode 100644 index 000000000..d6b298e8c Binary files /dev/null and b/public/terrain/19/858543/353805.terrain differ diff --git a/public/terrain/19/858543/353806.terrain b/public/terrain/19/858543/353806.terrain new file mode 100644 index 000000000..68f13168d Binary files /dev/null and b/public/terrain/19/858543/353806.terrain differ diff --git a/public/terrain/19/858543/353807.terrain b/public/terrain/19/858543/353807.terrain new file mode 100644 index 000000000..a24ded328 Binary files /dev/null and b/public/terrain/19/858543/353807.terrain differ diff --git a/public/terrain/19/858543/353808.terrain b/public/terrain/19/858543/353808.terrain new file mode 100644 index 000000000..c97bd2b20 Binary files /dev/null and b/public/terrain/19/858543/353808.terrain differ diff --git a/public/terrain/19/858543/353809.terrain b/public/terrain/19/858543/353809.terrain new file mode 100644 index 000000000..9aa56508e Binary files /dev/null and b/public/terrain/19/858543/353809.terrain differ diff --git a/public/terrain/19/858543/353810.terrain b/public/terrain/19/858543/353810.terrain new file mode 100644 index 000000000..01755eccd Binary files /dev/null and b/public/terrain/19/858543/353810.terrain differ diff --git a/public/terrain/19/858543/353811.terrain b/public/terrain/19/858543/353811.terrain new file mode 100644 index 000000000..69b635387 Binary files /dev/null and b/public/terrain/19/858543/353811.terrain differ diff --git a/public/terrain/19/858543/353812.terrain b/public/terrain/19/858543/353812.terrain new file mode 100644 index 000000000..a59ae67eb Binary files /dev/null and b/public/terrain/19/858543/353812.terrain differ diff --git a/public/terrain/19/858543/353813.terrain b/public/terrain/19/858543/353813.terrain new file mode 100644 index 000000000..5bbf0636b Binary files /dev/null and b/public/terrain/19/858543/353813.terrain differ diff --git a/public/terrain/19/858543/353814.terrain b/public/terrain/19/858543/353814.terrain new file mode 100644 index 000000000..0b30086ae Binary files /dev/null and b/public/terrain/19/858543/353814.terrain differ diff --git a/public/terrain/19/858543/353815.terrain b/public/terrain/19/858543/353815.terrain new file mode 100644 index 000000000..0a22b9b15 Binary files /dev/null and b/public/terrain/19/858543/353815.terrain differ diff --git a/public/terrain/19/858543/353816.terrain b/public/terrain/19/858543/353816.terrain new file mode 100644 index 000000000..c85466006 Binary files /dev/null and b/public/terrain/19/858543/353816.terrain differ diff --git a/public/terrain/19/858543/353817.terrain b/public/terrain/19/858543/353817.terrain new file mode 100644 index 000000000..406605523 Binary files /dev/null and b/public/terrain/19/858543/353817.terrain differ diff --git a/public/terrain/19/858543/353818.terrain b/public/terrain/19/858543/353818.terrain new file mode 100644 index 000000000..338674eb7 Binary files /dev/null and b/public/terrain/19/858543/353818.terrain differ diff --git a/public/terrain/19/858543/353819.terrain b/public/terrain/19/858543/353819.terrain new file mode 100644 index 000000000..14e931a99 Binary files /dev/null and b/public/terrain/19/858543/353819.terrain differ diff --git a/public/terrain/19/858543/353820.terrain b/public/terrain/19/858543/353820.terrain new file mode 100644 index 000000000..c5ea105f6 Binary files /dev/null and b/public/terrain/19/858543/353820.terrain differ diff --git a/public/terrain/19/858543/353821.terrain b/public/terrain/19/858543/353821.terrain new file mode 100644 index 000000000..307afcfa5 Binary files /dev/null and b/public/terrain/19/858543/353821.terrain differ diff --git a/public/terrain/19/858543/353822.terrain b/public/terrain/19/858543/353822.terrain new file mode 100644 index 000000000..b5c584def Binary files /dev/null and b/public/terrain/19/858543/353822.terrain differ diff --git a/public/terrain/19/858543/353823.terrain b/public/terrain/19/858543/353823.terrain new file mode 100644 index 000000000..609f7a669 Binary files /dev/null and b/public/terrain/19/858543/353823.terrain differ diff --git a/public/terrain/19/858543/353824.terrain b/public/terrain/19/858543/353824.terrain new file mode 100644 index 000000000..8504415f8 Binary files /dev/null and b/public/terrain/19/858543/353824.terrain differ diff --git a/public/terrain/19/858543/353825.terrain b/public/terrain/19/858543/353825.terrain new file mode 100644 index 000000000..afde169b7 Binary files /dev/null and b/public/terrain/19/858543/353825.terrain differ diff --git a/public/terrain/19/858543/353826.terrain b/public/terrain/19/858543/353826.terrain new file mode 100644 index 000000000..52dfdc752 Binary files /dev/null and b/public/terrain/19/858543/353826.terrain differ diff --git a/public/terrain/19/858543/353827.terrain b/public/terrain/19/858543/353827.terrain new file mode 100644 index 000000000..c91b34e5e Binary files /dev/null and b/public/terrain/19/858543/353827.terrain differ diff --git a/public/terrain/19/858543/353828.terrain b/public/terrain/19/858543/353828.terrain new file mode 100644 index 000000000..652ae6760 Binary files /dev/null and b/public/terrain/19/858543/353828.terrain differ diff --git a/public/terrain/19/858543/353829.terrain b/public/terrain/19/858543/353829.terrain new file mode 100644 index 000000000..ff68b5361 Binary files /dev/null and b/public/terrain/19/858543/353829.terrain differ diff --git a/public/terrain/19/858543/353830.terrain b/public/terrain/19/858543/353830.terrain new file mode 100644 index 000000000..2aac97e68 Binary files /dev/null and b/public/terrain/19/858543/353830.terrain differ diff --git a/public/terrain/19/858543/353831.terrain b/public/terrain/19/858543/353831.terrain new file mode 100644 index 000000000..0a5bf9f51 Binary files /dev/null and b/public/terrain/19/858543/353831.terrain differ diff --git a/public/terrain/19/858543/353832.terrain b/public/terrain/19/858543/353832.terrain new file mode 100644 index 000000000..613dff05a Binary files /dev/null and b/public/terrain/19/858543/353832.terrain differ diff --git a/public/terrain/19/858543/353833.terrain b/public/terrain/19/858543/353833.terrain new file mode 100644 index 000000000..fa23d9e76 Binary files /dev/null and b/public/terrain/19/858543/353833.terrain differ diff --git a/public/terrain/19/858543/353834.terrain b/public/terrain/19/858543/353834.terrain new file mode 100644 index 000000000..9d07f4157 Binary files /dev/null and b/public/terrain/19/858543/353834.terrain differ diff --git a/public/terrain/19/858543/353835.terrain b/public/terrain/19/858543/353835.terrain new file mode 100644 index 000000000..dc5826ff6 Binary files /dev/null and b/public/terrain/19/858543/353835.terrain differ diff --git a/public/terrain/19/858543/353836.terrain b/public/terrain/19/858543/353836.terrain new file mode 100644 index 000000000..dc548518d Binary files /dev/null and b/public/terrain/19/858543/353836.terrain differ diff --git a/public/terrain/19/858543/353837.terrain b/public/terrain/19/858543/353837.terrain new file mode 100644 index 000000000..aaeaea2cf Binary files /dev/null and b/public/terrain/19/858543/353837.terrain differ diff --git a/public/terrain/19/858543/353838.terrain b/public/terrain/19/858543/353838.terrain new file mode 100644 index 000000000..56734db09 Binary files /dev/null and b/public/terrain/19/858543/353838.terrain differ diff --git a/public/terrain/19/858543/353839.terrain b/public/terrain/19/858543/353839.terrain new file mode 100644 index 000000000..631fa6666 Binary files /dev/null and b/public/terrain/19/858543/353839.terrain differ diff --git a/public/terrain/19/858543/353840.terrain b/public/terrain/19/858543/353840.terrain new file mode 100644 index 000000000..d80cf514f Binary files /dev/null and b/public/terrain/19/858543/353840.terrain differ diff --git a/public/terrain/19/858543/353841.terrain b/public/terrain/19/858543/353841.terrain new file mode 100644 index 000000000..95ac31c50 Binary files /dev/null and b/public/terrain/19/858543/353841.terrain differ diff --git a/public/terrain/19/858543/353842.terrain b/public/terrain/19/858543/353842.terrain new file mode 100644 index 000000000..1ced57fc2 Binary files /dev/null and b/public/terrain/19/858543/353842.terrain differ diff --git a/public/terrain/19/858543/353843.terrain b/public/terrain/19/858543/353843.terrain new file mode 100644 index 000000000..a08489cb0 Binary files /dev/null and b/public/terrain/19/858543/353843.terrain differ diff --git a/public/terrain/19/858543/353844.terrain b/public/terrain/19/858543/353844.terrain new file mode 100644 index 000000000..b48749bda Binary files /dev/null and b/public/terrain/19/858543/353844.terrain differ diff --git a/public/terrain/19/858543/353845.terrain b/public/terrain/19/858543/353845.terrain new file mode 100644 index 000000000..44fb804c3 Binary files /dev/null and b/public/terrain/19/858543/353845.terrain differ diff --git a/public/terrain/19/858543/353846.terrain b/public/terrain/19/858543/353846.terrain new file mode 100644 index 000000000..b0553e21a Binary files /dev/null and b/public/terrain/19/858543/353846.terrain differ diff --git a/public/terrain/19/858543/353847.terrain b/public/terrain/19/858543/353847.terrain new file mode 100644 index 000000000..2df88954e Binary files /dev/null and b/public/terrain/19/858543/353847.terrain differ diff --git a/public/terrain/19/858543/353848.terrain b/public/terrain/19/858543/353848.terrain new file mode 100644 index 000000000..826583d0b Binary files /dev/null and b/public/terrain/19/858543/353848.terrain differ diff --git a/public/terrain/19/858543/353849.terrain b/public/terrain/19/858543/353849.terrain new file mode 100644 index 000000000..ccdaa0d51 Binary files /dev/null and b/public/terrain/19/858543/353849.terrain differ diff --git a/public/terrain/19/858543/353850.terrain b/public/terrain/19/858543/353850.terrain new file mode 100644 index 000000000..02099363f Binary files /dev/null and b/public/terrain/19/858543/353850.terrain differ diff --git a/public/terrain/19/858543/353851.terrain b/public/terrain/19/858543/353851.terrain new file mode 100644 index 000000000..c6eed79f5 Binary files /dev/null and b/public/terrain/19/858543/353851.terrain differ diff --git a/public/terrain/19/858543/353852.terrain b/public/terrain/19/858543/353852.terrain new file mode 100644 index 000000000..b6f3c81c3 Binary files /dev/null and b/public/terrain/19/858543/353852.terrain differ diff --git a/public/terrain/19/858543/353853.terrain b/public/terrain/19/858543/353853.terrain new file mode 100644 index 000000000..ac2ca0ef8 Binary files /dev/null and b/public/terrain/19/858543/353853.terrain differ diff --git a/public/terrain/19/858543/353854.terrain b/public/terrain/19/858543/353854.terrain new file mode 100644 index 000000000..35737873e Binary files /dev/null and b/public/terrain/19/858543/353854.terrain differ diff --git a/public/terrain/19/858543/353855.terrain b/public/terrain/19/858543/353855.terrain new file mode 100644 index 000000000..3e4bb57db Binary files /dev/null and b/public/terrain/19/858543/353855.terrain differ diff --git a/public/terrain/19/858543/353856.terrain b/public/terrain/19/858543/353856.terrain new file mode 100644 index 000000000..09ee20b3b Binary files /dev/null and b/public/terrain/19/858543/353856.terrain differ diff --git a/public/terrain/19/858543/353857.terrain b/public/terrain/19/858543/353857.terrain new file mode 100644 index 000000000..c7710394a Binary files /dev/null and b/public/terrain/19/858543/353857.terrain differ diff --git a/public/terrain/19/858543/353858.terrain b/public/terrain/19/858543/353858.terrain new file mode 100644 index 000000000..9de079dee Binary files /dev/null and b/public/terrain/19/858543/353858.terrain differ diff --git a/public/terrain/19/858543/353859.terrain b/public/terrain/19/858543/353859.terrain new file mode 100644 index 000000000..9a0000199 Binary files /dev/null and b/public/terrain/19/858543/353859.terrain differ diff --git a/public/terrain/19/858543/353860.terrain b/public/terrain/19/858543/353860.terrain new file mode 100644 index 000000000..67a1b59b0 Binary files /dev/null and b/public/terrain/19/858543/353860.terrain differ diff --git a/public/terrain/19/858543/353861.terrain b/public/terrain/19/858543/353861.terrain new file mode 100644 index 000000000..df29704e0 Binary files /dev/null and b/public/terrain/19/858543/353861.terrain differ diff --git a/public/terrain/19/858543/353862.terrain b/public/terrain/19/858543/353862.terrain new file mode 100644 index 000000000..4c8cbe3d1 Binary files /dev/null and b/public/terrain/19/858543/353862.terrain differ diff --git a/public/terrain/19/858543/353863.terrain b/public/terrain/19/858543/353863.terrain new file mode 100644 index 000000000..9a56b273d Binary files /dev/null and b/public/terrain/19/858543/353863.terrain differ diff --git a/public/terrain/19/858543/353864.terrain b/public/terrain/19/858543/353864.terrain new file mode 100644 index 000000000..b561564a5 Binary files /dev/null and b/public/terrain/19/858543/353864.terrain differ diff --git a/public/terrain/19/858543/353865.terrain b/public/terrain/19/858543/353865.terrain new file mode 100644 index 000000000..3905514c0 Binary files /dev/null and b/public/terrain/19/858543/353865.terrain differ diff --git a/public/terrain/19/858543/353866.terrain b/public/terrain/19/858543/353866.terrain new file mode 100644 index 000000000..68d505169 Binary files /dev/null and b/public/terrain/19/858543/353866.terrain differ diff --git a/public/terrain/19/858543/353867.terrain b/public/terrain/19/858543/353867.terrain new file mode 100644 index 000000000..67b62db01 Binary files /dev/null and b/public/terrain/19/858543/353867.terrain differ diff --git a/public/terrain/19/858543/353868.terrain b/public/terrain/19/858543/353868.terrain new file mode 100644 index 000000000..0a6148611 Binary files /dev/null and b/public/terrain/19/858543/353868.terrain differ diff --git a/public/terrain/19/858543/353869.terrain b/public/terrain/19/858543/353869.terrain new file mode 100644 index 000000000..eef7b6492 Binary files /dev/null and b/public/terrain/19/858543/353869.terrain differ diff --git a/public/terrain/19/858543/353870.terrain b/public/terrain/19/858543/353870.terrain new file mode 100644 index 000000000..abf2c67d8 Binary files /dev/null and b/public/terrain/19/858543/353870.terrain differ diff --git a/public/terrain/19/858543/353871.terrain b/public/terrain/19/858543/353871.terrain new file mode 100644 index 000000000..da11aa3b7 Binary files /dev/null and b/public/terrain/19/858543/353871.terrain differ diff --git a/public/terrain/19/858543/353872.terrain b/public/terrain/19/858543/353872.terrain new file mode 100644 index 000000000..d1e0aa090 Binary files /dev/null and b/public/terrain/19/858543/353872.terrain differ diff --git a/public/terrain/19/858543/353873.terrain b/public/terrain/19/858543/353873.terrain new file mode 100644 index 000000000..67eee66d5 Binary files /dev/null and b/public/terrain/19/858543/353873.terrain differ diff --git a/public/terrain/19/858543/353874.terrain b/public/terrain/19/858543/353874.terrain new file mode 100644 index 000000000..5b5fa17d9 Binary files /dev/null and b/public/terrain/19/858543/353874.terrain differ diff --git a/public/terrain/19/858543/353875.terrain b/public/terrain/19/858543/353875.terrain new file mode 100644 index 000000000..e23f4679f Binary files /dev/null and b/public/terrain/19/858543/353875.terrain differ diff --git a/public/terrain/19/858543/353876.terrain b/public/terrain/19/858543/353876.terrain new file mode 100644 index 000000000..e8aa9f442 Binary files /dev/null and b/public/terrain/19/858543/353876.terrain differ diff --git a/public/terrain/19/858543/353877.terrain b/public/terrain/19/858543/353877.terrain new file mode 100644 index 000000000..7d7eecaf2 Binary files /dev/null and b/public/terrain/19/858543/353877.terrain differ diff --git a/public/terrain/19/858543/353878.terrain b/public/terrain/19/858543/353878.terrain new file mode 100644 index 000000000..f511e2672 Binary files /dev/null and b/public/terrain/19/858543/353878.terrain differ diff --git a/public/terrain/19/858543/353879.terrain b/public/terrain/19/858543/353879.terrain new file mode 100644 index 000000000..cb026a205 Binary files /dev/null and b/public/terrain/19/858543/353879.terrain differ diff --git a/public/terrain/19/858543/353880.terrain b/public/terrain/19/858543/353880.terrain new file mode 100644 index 000000000..cab37e888 Binary files /dev/null and b/public/terrain/19/858543/353880.terrain differ diff --git a/public/terrain/19/858543/353881.terrain b/public/terrain/19/858543/353881.terrain new file mode 100644 index 000000000..4a0bd773f Binary files /dev/null and b/public/terrain/19/858543/353881.terrain differ diff --git a/public/terrain/19/858543/353882.terrain b/public/terrain/19/858543/353882.terrain new file mode 100644 index 000000000..675cb7535 Binary files /dev/null and b/public/terrain/19/858543/353882.terrain differ diff --git a/public/terrain/19/858543/353883.terrain b/public/terrain/19/858543/353883.terrain new file mode 100644 index 000000000..cbd36b403 Binary files /dev/null and b/public/terrain/19/858543/353883.terrain differ diff --git a/public/terrain/19/858543/353884.terrain b/public/terrain/19/858543/353884.terrain new file mode 100644 index 000000000..b99d693e0 Binary files /dev/null and b/public/terrain/19/858543/353884.terrain differ diff --git a/public/terrain/19/858543/353885.terrain b/public/terrain/19/858543/353885.terrain new file mode 100644 index 000000000..2ca156367 Binary files /dev/null and b/public/terrain/19/858543/353885.terrain differ diff --git a/public/terrain/19/858543/353886.terrain b/public/terrain/19/858543/353886.terrain new file mode 100644 index 000000000..99e2922fe Binary files /dev/null and b/public/terrain/19/858543/353886.terrain differ diff --git a/public/terrain/19/858543/353887.terrain b/public/terrain/19/858543/353887.terrain new file mode 100644 index 000000000..e8579925b Binary files /dev/null and b/public/terrain/19/858543/353887.terrain differ diff --git a/public/terrain/19/858543/353888.terrain b/public/terrain/19/858543/353888.terrain new file mode 100644 index 000000000..318b3a17d Binary files /dev/null and b/public/terrain/19/858543/353888.terrain differ diff --git a/public/terrain/19/858543/353889.terrain b/public/terrain/19/858543/353889.terrain new file mode 100644 index 000000000..5cf33dd6b Binary files /dev/null and b/public/terrain/19/858543/353889.terrain differ diff --git a/public/terrain/19/858543/353890.terrain b/public/terrain/19/858543/353890.terrain new file mode 100644 index 000000000..f8beffc49 Binary files /dev/null and b/public/terrain/19/858543/353890.terrain differ diff --git a/public/terrain/19/858543/353891.terrain b/public/terrain/19/858543/353891.terrain new file mode 100644 index 000000000..ed7cf1066 Binary files /dev/null and b/public/terrain/19/858543/353891.terrain differ diff --git a/public/terrain/19/858543/353892.terrain b/public/terrain/19/858543/353892.terrain new file mode 100644 index 000000000..c12733d43 Binary files /dev/null and b/public/terrain/19/858543/353892.terrain differ diff --git a/public/terrain/19/858543/353893.terrain b/public/terrain/19/858543/353893.terrain new file mode 100644 index 000000000..6899d1393 Binary files /dev/null and b/public/terrain/19/858543/353893.terrain differ diff --git a/public/terrain/19/858543/353894.terrain b/public/terrain/19/858543/353894.terrain new file mode 100644 index 000000000..4dd15d1a9 Binary files /dev/null and b/public/terrain/19/858543/353894.terrain differ diff --git a/public/terrain/19/858543/353895.terrain b/public/terrain/19/858543/353895.terrain new file mode 100644 index 000000000..bfecefa58 Binary files /dev/null and b/public/terrain/19/858543/353895.terrain differ diff --git a/public/terrain/19/858543/353896.terrain b/public/terrain/19/858543/353896.terrain new file mode 100644 index 000000000..75a452792 Binary files /dev/null and b/public/terrain/19/858543/353896.terrain differ diff --git a/public/terrain/19/858543/353897.terrain b/public/terrain/19/858543/353897.terrain new file mode 100644 index 000000000..bd90befc6 Binary files /dev/null and b/public/terrain/19/858543/353897.terrain differ diff --git a/public/terrain/19/858543/353898.terrain b/public/terrain/19/858543/353898.terrain new file mode 100644 index 000000000..e11b78364 Binary files /dev/null and b/public/terrain/19/858543/353898.terrain differ diff --git a/public/terrain/19/858543/353899.terrain b/public/terrain/19/858543/353899.terrain new file mode 100644 index 000000000..409326e4b Binary files /dev/null and b/public/terrain/19/858543/353899.terrain differ diff --git a/public/terrain/19/858543/353900.terrain b/public/terrain/19/858543/353900.terrain new file mode 100644 index 000000000..54233d0fe Binary files /dev/null and b/public/terrain/19/858543/353900.terrain differ diff --git a/public/terrain/19/858543/353901.terrain b/public/terrain/19/858543/353901.terrain new file mode 100644 index 000000000..60332e269 Binary files /dev/null and b/public/terrain/19/858543/353901.terrain differ diff --git a/public/terrain/19/858543/353902.terrain b/public/terrain/19/858543/353902.terrain new file mode 100644 index 000000000..754a03947 Binary files /dev/null and b/public/terrain/19/858543/353902.terrain differ diff --git a/public/terrain/19/858543/353903.terrain b/public/terrain/19/858543/353903.terrain new file mode 100644 index 000000000..3e0d457e7 Binary files /dev/null and b/public/terrain/19/858543/353903.terrain differ diff --git a/public/terrain/19/858543/353904.terrain b/public/terrain/19/858543/353904.terrain new file mode 100644 index 000000000..13ffd4dfb Binary files /dev/null and b/public/terrain/19/858543/353904.terrain differ diff --git a/public/terrain/19/858543/353905.terrain b/public/terrain/19/858543/353905.terrain new file mode 100644 index 000000000..9f5d3bcdc Binary files /dev/null and b/public/terrain/19/858543/353905.terrain differ diff --git a/public/terrain/19/858543/353906.terrain b/public/terrain/19/858543/353906.terrain new file mode 100644 index 000000000..def82c3ea Binary files /dev/null and b/public/terrain/19/858543/353906.terrain differ diff --git a/public/terrain/19/858543/353907.terrain b/public/terrain/19/858543/353907.terrain new file mode 100644 index 000000000..3a82c4e93 Binary files /dev/null and b/public/terrain/19/858543/353907.terrain differ diff --git a/public/terrain/19/858543/353908.terrain b/public/terrain/19/858543/353908.terrain new file mode 100644 index 000000000..d0f2117c7 Binary files /dev/null and b/public/terrain/19/858543/353908.terrain differ diff --git a/public/terrain/19/858543/353909.terrain b/public/terrain/19/858543/353909.terrain new file mode 100644 index 000000000..e7aa930fc Binary files /dev/null and b/public/terrain/19/858543/353909.terrain differ diff --git a/public/terrain/19/858543/353910.terrain b/public/terrain/19/858543/353910.terrain new file mode 100644 index 000000000..040da4e3a Binary files /dev/null and b/public/terrain/19/858543/353910.terrain differ diff --git a/public/terrain/19/858543/353911.terrain b/public/terrain/19/858543/353911.terrain new file mode 100644 index 000000000..aa8218f38 Binary files /dev/null and b/public/terrain/19/858543/353911.terrain differ diff --git a/public/terrain/19/858543/353912.terrain b/public/terrain/19/858543/353912.terrain new file mode 100644 index 000000000..c4f916e96 Binary files /dev/null and b/public/terrain/19/858543/353912.terrain differ diff --git a/public/terrain/19/858543/353913.terrain b/public/terrain/19/858543/353913.terrain new file mode 100644 index 000000000..e0dae432d Binary files /dev/null and b/public/terrain/19/858543/353913.terrain differ diff --git a/public/terrain/19/858543/353914.terrain b/public/terrain/19/858543/353914.terrain new file mode 100644 index 000000000..6eb3307c5 Binary files /dev/null and b/public/terrain/19/858543/353914.terrain differ diff --git a/public/terrain/19/858543/353915.terrain b/public/terrain/19/858543/353915.terrain new file mode 100644 index 000000000..05437dcf8 Binary files /dev/null and b/public/terrain/19/858543/353915.terrain differ diff --git a/public/terrain/19/858543/353916.terrain b/public/terrain/19/858543/353916.terrain new file mode 100644 index 000000000..b0fbf8bbc Binary files /dev/null and b/public/terrain/19/858543/353916.terrain differ diff --git a/public/terrain/19/858543/353917.terrain b/public/terrain/19/858543/353917.terrain new file mode 100644 index 000000000..934fb57a6 Binary files /dev/null and b/public/terrain/19/858543/353917.terrain differ diff --git a/public/terrain/19/858543/353918.terrain b/public/terrain/19/858543/353918.terrain new file mode 100644 index 000000000..45f25d4db Binary files /dev/null and b/public/terrain/19/858543/353918.terrain differ diff --git a/public/terrain/19/858543/353919.terrain b/public/terrain/19/858543/353919.terrain new file mode 100644 index 000000000..f7d5b5e88 Binary files /dev/null and b/public/terrain/19/858543/353919.terrain differ diff --git a/public/terrain/19/858543/353920.terrain b/public/terrain/19/858543/353920.terrain new file mode 100644 index 000000000..f6fba715e Binary files /dev/null and b/public/terrain/19/858543/353920.terrain differ diff --git a/public/terrain/19/858543/353921.terrain b/public/terrain/19/858543/353921.terrain new file mode 100644 index 000000000..0f9622160 Binary files /dev/null and b/public/terrain/19/858543/353921.terrain differ diff --git a/public/terrain/19/858543/353922.terrain b/public/terrain/19/858543/353922.terrain new file mode 100644 index 000000000..1bc0e2163 Binary files /dev/null and b/public/terrain/19/858543/353922.terrain differ diff --git a/public/terrain/19/858543/353923.terrain b/public/terrain/19/858543/353923.terrain new file mode 100644 index 000000000..4774848ab Binary files /dev/null and b/public/terrain/19/858543/353923.terrain differ diff --git a/public/terrain/19/858543/353924.terrain b/public/terrain/19/858543/353924.terrain new file mode 100644 index 000000000..472be1784 Binary files /dev/null and b/public/terrain/19/858543/353924.terrain differ diff --git a/public/terrain/19/858543/353925.terrain b/public/terrain/19/858543/353925.terrain new file mode 100644 index 000000000..b785dc469 Binary files /dev/null and b/public/terrain/19/858543/353925.terrain differ diff --git a/public/terrain/19/858543/353926.terrain b/public/terrain/19/858543/353926.terrain new file mode 100644 index 000000000..4b46bc967 Binary files /dev/null and b/public/terrain/19/858543/353926.terrain differ diff --git a/public/terrain/19/858543/353927.terrain b/public/terrain/19/858543/353927.terrain new file mode 100644 index 000000000..2066fc7a5 Binary files /dev/null and b/public/terrain/19/858543/353927.terrain differ diff --git a/public/terrain/19/858543/353928.terrain b/public/terrain/19/858543/353928.terrain new file mode 100644 index 000000000..54319d1da Binary files /dev/null and b/public/terrain/19/858543/353928.terrain differ diff --git a/public/terrain/19/858543/353929.terrain b/public/terrain/19/858543/353929.terrain new file mode 100644 index 000000000..809c12e52 Binary files /dev/null and b/public/terrain/19/858543/353929.terrain differ diff --git a/public/terrain/19/858543/353930.terrain b/public/terrain/19/858543/353930.terrain new file mode 100644 index 000000000..e90c7e962 Binary files /dev/null and b/public/terrain/19/858543/353930.terrain differ diff --git a/public/terrain/19/858543/353931.terrain b/public/terrain/19/858543/353931.terrain new file mode 100644 index 000000000..6d8ce5dd4 Binary files /dev/null and b/public/terrain/19/858543/353931.terrain differ diff --git a/public/terrain/19/858543/353932.terrain b/public/terrain/19/858543/353932.terrain new file mode 100644 index 000000000..1675ae537 Binary files /dev/null and b/public/terrain/19/858543/353932.terrain differ diff --git a/public/terrain/19/858543/353933.terrain b/public/terrain/19/858543/353933.terrain new file mode 100644 index 000000000..cde239e9f Binary files /dev/null and b/public/terrain/19/858543/353933.terrain differ diff --git a/public/terrain/19/858543/353934.terrain b/public/terrain/19/858543/353934.terrain new file mode 100644 index 000000000..fae94fe30 Binary files /dev/null and b/public/terrain/19/858543/353934.terrain differ diff --git a/public/terrain/19/858543/353935.terrain b/public/terrain/19/858543/353935.terrain new file mode 100644 index 000000000..dda1cca6b Binary files /dev/null and b/public/terrain/19/858543/353935.terrain differ diff --git a/public/terrain/19/858543/353936.terrain b/public/terrain/19/858543/353936.terrain new file mode 100644 index 000000000..705e1292e Binary files /dev/null and b/public/terrain/19/858543/353936.terrain differ diff --git a/public/terrain/19/858543/353937.terrain b/public/terrain/19/858543/353937.terrain new file mode 100644 index 000000000..c784fa77b Binary files /dev/null and b/public/terrain/19/858543/353937.terrain differ diff --git a/public/terrain/19/858543/353938.terrain b/public/terrain/19/858543/353938.terrain new file mode 100644 index 000000000..7c6918f37 Binary files /dev/null and b/public/terrain/19/858543/353938.terrain differ diff --git a/public/terrain/19/858543/353939.terrain b/public/terrain/19/858543/353939.terrain new file mode 100644 index 000000000..b98a42efc Binary files /dev/null and b/public/terrain/19/858543/353939.terrain differ diff --git a/public/terrain/19/858543/353940.terrain b/public/terrain/19/858543/353940.terrain new file mode 100644 index 000000000..79d49a217 Binary files /dev/null and b/public/terrain/19/858543/353940.terrain differ diff --git a/public/terrain/19/858543/353941.terrain b/public/terrain/19/858543/353941.terrain new file mode 100644 index 000000000..914ee3f81 Binary files /dev/null and b/public/terrain/19/858543/353941.terrain differ diff --git a/public/terrain/19/858543/353942.terrain b/public/terrain/19/858543/353942.terrain new file mode 100644 index 000000000..3de15bc0f Binary files /dev/null and b/public/terrain/19/858543/353942.terrain differ diff --git a/public/terrain/19/858543/353943.terrain b/public/terrain/19/858543/353943.terrain new file mode 100644 index 000000000..25016d279 Binary files /dev/null and b/public/terrain/19/858543/353943.terrain differ diff --git a/public/terrain/19/858543/353944.terrain b/public/terrain/19/858543/353944.terrain new file mode 100644 index 000000000..72d921c51 Binary files /dev/null and b/public/terrain/19/858543/353944.terrain differ diff --git a/public/terrain/19/858543/353945.terrain b/public/terrain/19/858543/353945.terrain new file mode 100644 index 000000000..80cfe0070 Binary files /dev/null and b/public/terrain/19/858543/353945.terrain differ diff --git a/public/terrain/19/858543/353946.terrain b/public/terrain/19/858543/353946.terrain new file mode 100644 index 000000000..b9c08d0f1 Binary files /dev/null and b/public/terrain/19/858543/353946.terrain differ diff --git a/public/terrain/19/858543/353947.terrain b/public/terrain/19/858543/353947.terrain new file mode 100644 index 000000000..2df32b28c Binary files /dev/null and b/public/terrain/19/858543/353947.terrain differ diff --git a/public/terrain/19/858543/353948.terrain b/public/terrain/19/858543/353948.terrain new file mode 100644 index 000000000..8530f177d Binary files /dev/null and b/public/terrain/19/858543/353948.terrain differ diff --git a/public/terrain/19/858543/353949.terrain b/public/terrain/19/858543/353949.terrain new file mode 100644 index 000000000..f81988080 Binary files /dev/null and b/public/terrain/19/858543/353949.terrain differ diff --git a/public/terrain/19/858543/353950.terrain b/public/terrain/19/858543/353950.terrain new file mode 100644 index 000000000..89fd944bb Binary files /dev/null and b/public/terrain/19/858543/353950.terrain differ diff --git a/public/terrain/19/858543/353951.terrain b/public/terrain/19/858543/353951.terrain new file mode 100644 index 000000000..a05615fcf Binary files /dev/null and b/public/terrain/19/858543/353951.terrain differ diff --git a/public/terrain/19/858543/353952.terrain b/public/terrain/19/858543/353952.terrain new file mode 100644 index 000000000..058e4d967 Binary files /dev/null and b/public/terrain/19/858543/353952.terrain differ diff --git a/public/terrain/19/858543/353953.terrain b/public/terrain/19/858543/353953.terrain new file mode 100644 index 000000000..12f142cc0 Binary files /dev/null and b/public/terrain/19/858543/353953.terrain differ diff --git a/public/terrain/19/858543/353954.terrain b/public/terrain/19/858543/353954.terrain new file mode 100644 index 000000000..d25da58d2 Binary files /dev/null and b/public/terrain/19/858543/353954.terrain differ diff --git a/public/terrain/19/858543/353955.terrain b/public/terrain/19/858543/353955.terrain new file mode 100644 index 000000000..f07c1976a Binary files /dev/null and b/public/terrain/19/858543/353955.terrain differ diff --git a/public/terrain/19/858543/353956.terrain b/public/terrain/19/858543/353956.terrain new file mode 100644 index 000000000..a6784388a Binary files /dev/null and b/public/terrain/19/858543/353956.terrain differ diff --git a/public/terrain/19/858543/353957.terrain b/public/terrain/19/858543/353957.terrain new file mode 100644 index 000000000..cac175a81 Binary files /dev/null and b/public/terrain/19/858543/353957.terrain differ diff --git a/public/terrain/19/858543/353958.terrain b/public/terrain/19/858543/353958.terrain new file mode 100644 index 000000000..57c9f4f05 Binary files /dev/null and b/public/terrain/19/858543/353958.terrain differ diff --git a/public/terrain/19/858543/353959.terrain b/public/terrain/19/858543/353959.terrain new file mode 100644 index 000000000..3842f7b7c Binary files /dev/null and b/public/terrain/19/858543/353959.terrain differ diff --git a/public/terrain/19/858543/353960.terrain b/public/terrain/19/858543/353960.terrain new file mode 100644 index 000000000..0b3d0fe4b Binary files /dev/null and b/public/terrain/19/858543/353960.terrain differ diff --git a/public/terrain/19/858543/353961.terrain b/public/terrain/19/858543/353961.terrain new file mode 100644 index 000000000..d858dcabd Binary files /dev/null and b/public/terrain/19/858543/353961.terrain differ diff --git a/public/terrain/19/858543/353962.terrain b/public/terrain/19/858543/353962.terrain new file mode 100644 index 000000000..02836975b Binary files /dev/null and b/public/terrain/19/858543/353962.terrain differ diff --git a/public/terrain/19/858543/353963.terrain b/public/terrain/19/858543/353963.terrain new file mode 100644 index 000000000..f452dee99 Binary files /dev/null and b/public/terrain/19/858543/353963.terrain differ diff --git a/public/terrain/19/858543/353964.terrain b/public/terrain/19/858543/353964.terrain new file mode 100644 index 000000000..33b77da6d Binary files /dev/null and b/public/terrain/19/858543/353964.terrain differ diff --git a/public/terrain/19/858543/353965.terrain b/public/terrain/19/858543/353965.terrain new file mode 100644 index 000000000..3753676d4 Binary files /dev/null and b/public/terrain/19/858543/353965.terrain differ diff --git a/public/terrain/19/858543/353966.terrain b/public/terrain/19/858543/353966.terrain new file mode 100644 index 000000000..85b541b86 Binary files /dev/null and b/public/terrain/19/858543/353966.terrain differ diff --git a/public/terrain/19/858543/353967.terrain b/public/terrain/19/858543/353967.terrain new file mode 100644 index 000000000..fc959700a Binary files /dev/null and b/public/terrain/19/858543/353967.terrain differ diff --git a/public/terrain/19/858543/353968.terrain b/public/terrain/19/858543/353968.terrain new file mode 100644 index 000000000..d8ab4139d Binary files /dev/null and b/public/terrain/19/858543/353968.terrain differ diff --git a/public/terrain/19/858543/353969.terrain b/public/terrain/19/858543/353969.terrain new file mode 100644 index 000000000..7534babcb Binary files /dev/null and b/public/terrain/19/858543/353969.terrain differ diff --git a/public/terrain/19/858543/353970.terrain b/public/terrain/19/858543/353970.terrain new file mode 100644 index 000000000..5fab5ffa9 Binary files /dev/null and b/public/terrain/19/858543/353970.terrain differ diff --git a/public/terrain/19/858543/353971.terrain b/public/terrain/19/858543/353971.terrain new file mode 100644 index 000000000..8b29bec07 Binary files /dev/null and b/public/terrain/19/858543/353971.terrain differ diff --git a/public/terrain/19/858543/353972.terrain b/public/terrain/19/858543/353972.terrain new file mode 100644 index 000000000..35da1df2e Binary files /dev/null and b/public/terrain/19/858543/353972.terrain differ diff --git a/public/terrain/19/858543/353973.terrain b/public/terrain/19/858543/353973.terrain new file mode 100644 index 000000000..6fbee19fc Binary files /dev/null and b/public/terrain/19/858543/353973.terrain differ diff --git a/public/terrain/19/858543/353974.terrain b/public/terrain/19/858543/353974.terrain new file mode 100644 index 000000000..5b4f2eb5b Binary files /dev/null and b/public/terrain/19/858543/353974.terrain differ diff --git a/public/terrain/19/858543/353975.terrain b/public/terrain/19/858543/353975.terrain new file mode 100644 index 000000000..3aec50086 Binary files /dev/null and b/public/terrain/19/858543/353975.terrain differ diff --git a/public/terrain/19/858543/353976.terrain b/public/terrain/19/858543/353976.terrain new file mode 100644 index 000000000..4a6a212e5 Binary files /dev/null and b/public/terrain/19/858543/353976.terrain differ diff --git a/public/terrain/19/858543/353977.terrain b/public/terrain/19/858543/353977.terrain new file mode 100644 index 000000000..62cf99f20 Binary files /dev/null and b/public/terrain/19/858543/353977.terrain differ diff --git a/public/terrain/19/858543/353978.terrain b/public/terrain/19/858543/353978.terrain new file mode 100644 index 000000000..0a22147e5 Binary files /dev/null and b/public/terrain/19/858543/353978.terrain differ diff --git a/public/terrain/19/858543/353979.terrain b/public/terrain/19/858543/353979.terrain new file mode 100644 index 000000000..fad44f511 Binary files /dev/null and b/public/terrain/19/858543/353979.terrain differ diff --git a/public/terrain/19/858543/353980.terrain b/public/terrain/19/858543/353980.terrain new file mode 100644 index 000000000..a45dc0d03 Binary files /dev/null and b/public/terrain/19/858543/353980.terrain differ diff --git a/public/terrain/19/858543/353981.terrain b/public/terrain/19/858543/353981.terrain new file mode 100644 index 000000000..525bcdcfc Binary files /dev/null and b/public/terrain/19/858543/353981.terrain differ diff --git a/public/terrain/19/858543/353982.terrain b/public/terrain/19/858543/353982.terrain new file mode 100644 index 000000000..d93391214 Binary files /dev/null and b/public/terrain/19/858543/353982.terrain differ diff --git a/public/terrain/19/858543/353983.terrain b/public/terrain/19/858543/353983.terrain new file mode 100644 index 000000000..836053a54 Binary files /dev/null and b/public/terrain/19/858543/353983.terrain differ diff --git a/public/terrain/19/858543/353984.terrain b/public/terrain/19/858543/353984.terrain new file mode 100644 index 000000000..47f9a1430 Binary files /dev/null and b/public/terrain/19/858543/353984.terrain differ diff --git a/public/terrain/19/858543/353985.terrain b/public/terrain/19/858543/353985.terrain new file mode 100644 index 000000000..17a1e6a90 Binary files /dev/null and b/public/terrain/19/858543/353985.terrain differ diff --git a/public/terrain/19/858543/353986.terrain b/public/terrain/19/858543/353986.terrain new file mode 100644 index 000000000..9bff0c36a Binary files /dev/null and b/public/terrain/19/858543/353986.terrain differ diff --git a/public/terrain/19/858543/353987.terrain b/public/terrain/19/858543/353987.terrain new file mode 100644 index 000000000..a79ee4790 Binary files /dev/null and b/public/terrain/19/858543/353987.terrain differ diff --git a/public/terrain/19/858543/353988.terrain b/public/terrain/19/858543/353988.terrain new file mode 100644 index 000000000..587b81905 Binary files /dev/null and b/public/terrain/19/858543/353988.terrain differ diff --git a/public/terrain/19/858543/353989.terrain b/public/terrain/19/858543/353989.terrain new file mode 100644 index 000000000..3ebce7875 Binary files /dev/null and b/public/terrain/19/858543/353989.terrain differ diff --git a/public/terrain/19/858543/353990.terrain b/public/terrain/19/858543/353990.terrain new file mode 100644 index 000000000..f001a5e84 Binary files /dev/null and b/public/terrain/19/858543/353990.terrain differ diff --git a/public/terrain/19/858543/353991.terrain b/public/terrain/19/858543/353991.terrain new file mode 100644 index 000000000..c9eaff236 Binary files /dev/null and b/public/terrain/19/858543/353991.terrain differ diff --git a/public/terrain/19/858543/353992.terrain b/public/terrain/19/858543/353992.terrain new file mode 100644 index 000000000..9e9a61042 Binary files /dev/null and b/public/terrain/19/858543/353992.terrain differ diff --git a/public/terrain/19/858543/353993.terrain b/public/terrain/19/858543/353993.terrain new file mode 100644 index 000000000..f83543c39 Binary files /dev/null and b/public/terrain/19/858543/353993.terrain differ diff --git a/public/terrain/19/858543/353994.terrain b/public/terrain/19/858543/353994.terrain new file mode 100644 index 000000000..84abce12a Binary files /dev/null and b/public/terrain/19/858543/353994.terrain differ diff --git a/public/terrain/19/858543/353995.terrain b/public/terrain/19/858543/353995.terrain new file mode 100644 index 000000000..fbd3d7191 Binary files /dev/null and b/public/terrain/19/858543/353995.terrain differ diff --git a/public/terrain/19/858543/353996.terrain b/public/terrain/19/858543/353996.terrain new file mode 100644 index 000000000..d12d831c5 Binary files /dev/null and b/public/terrain/19/858543/353996.terrain differ diff --git a/public/terrain/19/858543/353997.terrain b/public/terrain/19/858543/353997.terrain new file mode 100644 index 000000000..2501acfb2 Binary files /dev/null and b/public/terrain/19/858543/353997.terrain differ diff --git a/public/terrain/19/858543/353998.terrain b/public/terrain/19/858543/353998.terrain new file mode 100644 index 000000000..307bf14db Binary files /dev/null and b/public/terrain/19/858543/353998.terrain differ diff --git a/public/terrain/19/858543/353999.terrain b/public/terrain/19/858543/353999.terrain new file mode 100644 index 000000000..de7e2ed7d Binary files /dev/null and b/public/terrain/19/858543/353999.terrain differ diff --git a/public/terrain/19/858543/354000.terrain b/public/terrain/19/858543/354000.terrain new file mode 100644 index 000000000..7c339edfa Binary files /dev/null and b/public/terrain/19/858543/354000.terrain differ diff --git a/public/terrain/19/858543/354001.terrain b/public/terrain/19/858543/354001.terrain new file mode 100644 index 000000000..604320aa8 Binary files /dev/null and b/public/terrain/19/858543/354001.terrain differ diff --git a/public/terrain/19/858543/354002.terrain b/public/terrain/19/858543/354002.terrain new file mode 100644 index 000000000..50b239435 Binary files /dev/null and b/public/terrain/19/858543/354002.terrain differ diff --git a/public/terrain/19/858543/354003.terrain b/public/terrain/19/858543/354003.terrain new file mode 100644 index 000000000..62a57e0f6 Binary files /dev/null and b/public/terrain/19/858543/354003.terrain differ diff --git a/public/terrain/19/858543/354004.terrain b/public/terrain/19/858543/354004.terrain new file mode 100644 index 000000000..b7d5b65a9 Binary files /dev/null and b/public/terrain/19/858543/354004.terrain differ diff --git a/public/terrain/19/858543/354005.terrain b/public/terrain/19/858543/354005.terrain new file mode 100644 index 000000000..d20f16303 Binary files /dev/null and b/public/terrain/19/858543/354005.terrain differ diff --git a/public/terrain/19/858543/354006.terrain b/public/terrain/19/858543/354006.terrain new file mode 100644 index 000000000..557e8df01 Binary files /dev/null and b/public/terrain/19/858543/354006.terrain differ diff --git a/public/terrain/19/858543/354007.terrain b/public/terrain/19/858543/354007.terrain new file mode 100644 index 000000000..ef172afe2 Binary files /dev/null and b/public/terrain/19/858543/354007.terrain differ diff --git a/public/terrain/19/858543/354008.terrain b/public/terrain/19/858543/354008.terrain new file mode 100644 index 000000000..3e8f16d62 Binary files /dev/null and b/public/terrain/19/858543/354008.terrain differ diff --git a/public/terrain/19/858543/354009.terrain b/public/terrain/19/858543/354009.terrain new file mode 100644 index 000000000..2db010606 Binary files /dev/null and b/public/terrain/19/858543/354009.terrain differ diff --git a/public/terrain/19/858543/354010.terrain b/public/terrain/19/858543/354010.terrain new file mode 100644 index 000000000..b7bbdfd8f Binary files /dev/null and b/public/terrain/19/858543/354010.terrain differ diff --git a/public/terrain/19/858543/354011.terrain b/public/terrain/19/858543/354011.terrain new file mode 100644 index 000000000..43c70920e Binary files /dev/null and b/public/terrain/19/858543/354011.terrain differ diff --git a/public/terrain/19/858543/354012.terrain b/public/terrain/19/858543/354012.terrain new file mode 100644 index 000000000..025d680fa Binary files /dev/null and b/public/terrain/19/858543/354012.terrain differ diff --git a/public/terrain/19/858543/354013.terrain b/public/terrain/19/858543/354013.terrain new file mode 100644 index 000000000..4ecf3a4d3 Binary files /dev/null and b/public/terrain/19/858543/354013.terrain differ diff --git a/public/terrain/19/858543/354014.terrain b/public/terrain/19/858543/354014.terrain new file mode 100644 index 000000000..1f12cc093 Binary files /dev/null and b/public/terrain/19/858543/354014.terrain differ diff --git a/public/terrain/19/858543/354015.terrain b/public/terrain/19/858543/354015.terrain new file mode 100644 index 000000000..2dcb8f4b4 Binary files /dev/null and b/public/terrain/19/858543/354015.terrain differ diff --git a/public/terrain/19/858543/354016.terrain b/public/terrain/19/858543/354016.terrain new file mode 100644 index 000000000..c2b26b08c Binary files /dev/null and b/public/terrain/19/858543/354016.terrain differ diff --git a/public/terrain/19/858543/354017.terrain b/public/terrain/19/858543/354017.terrain new file mode 100644 index 000000000..acb4a601e Binary files /dev/null and b/public/terrain/19/858543/354017.terrain differ diff --git a/public/terrain/19/858543/354018.terrain b/public/terrain/19/858543/354018.terrain new file mode 100644 index 000000000..a8ae7edb4 Binary files /dev/null and b/public/terrain/19/858543/354018.terrain differ diff --git a/public/terrain/19/858543/354019.terrain b/public/terrain/19/858543/354019.terrain new file mode 100644 index 000000000..2242ad45d Binary files /dev/null and b/public/terrain/19/858543/354019.terrain differ diff --git a/public/terrain/19/858543/354020.terrain b/public/terrain/19/858543/354020.terrain new file mode 100644 index 000000000..2b3a384af Binary files /dev/null and b/public/terrain/19/858543/354020.terrain differ diff --git a/public/terrain/19/858543/354021.terrain b/public/terrain/19/858543/354021.terrain new file mode 100644 index 000000000..6e5a9e047 Binary files /dev/null and b/public/terrain/19/858543/354021.terrain differ diff --git a/public/terrain/19/858543/354022.terrain b/public/terrain/19/858543/354022.terrain new file mode 100644 index 000000000..45998a1e5 Binary files /dev/null and b/public/terrain/19/858543/354022.terrain differ diff --git a/public/terrain/19/858543/354023.terrain b/public/terrain/19/858543/354023.terrain new file mode 100644 index 000000000..2ff567efe Binary files /dev/null and b/public/terrain/19/858543/354023.terrain differ diff --git a/public/terrain/19/858543/354024.terrain b/public/terrain/19/858543/354024.terrain new file mode 100644 index 000000000..5f68901f3 Binary files /dev/null and b/public/terrain/19/858543/354024.terrain differ diff --git a/public/terrain/19/858543/354025.terrain b/public/terrain/19/858543/354025.terrain new file mode 100644 index 000000000..32a9aaeba Binary files /dev/null and b/public/terrain/19/858543/354025.terrain differ diff --git a/public/terrain/19/858543/354026.terrain b/public/terrain/19/858543/354026.terrain new file mode 100644 index 000000000..385ac3965 Binary files /dev/null and b/public/terrain/19/858543/354026.terrain differ diff --git a/public/terrain/19/858543/354027.terrain b/public/terrain/19/858543/354027.terrain new file mode 100644 index 000000000..d4ceb2181 Binary files /dev/null and b/public/terrain/19/858543/354027.terrain differ diff --git a/public/terrain/19/858543/354028.terrain b/public/terrain/19/858543/354028.terrain new file mode 100644 index 000000000..0660acaed Binary files /dev/null and b/public/terrain/19/858543/354028.terrain differ diff --git a/public/terrain/19/858543/354029.terrain b/public/terrain/19/858543/354029.terrain new file mode 100644 index 000000000..7b240b4c6 Binary files /dev/null and b/public/terrain/19/858543/354029.terrain differ diff --git a/public/terrain/19/858543/354030.terrain b/public/terrain/19/858543/354030.terrain new file mode 100644 index 000000000..9b208102f Binary files /dev/null and b/public/terrain/19/858543/354030.terrain differ diff --git a/public/terrain/19/858543/354031.terrain b/public/terrain/19/858543/354031.terrain new file mode 100644 index 000000000..b48d89417 Binary files /dev/null and b/public/terrain/19/858543/354031.terrain differ diff --git a/public/terrain/19/858543/354032.terrain b/public/terrain/19/858543/354032.terrain new file mode 100644 index 000000000..120751304 Binary files /dev/null and b/public/terrain/19/858543/354032.terrain differ diff --git a/public/terrain/19/858543/354033.terrain b/public/terrain/19/858543/354033.terrain new file mode 100644 index 000000000..bbe9f1fe7 Binary files /dev/null and b/public/terrain/19/858543/354033.terrain differ diff --git a/public/terrain/19/858543/354034.terrain b/public/terrain/19/858543/354034.terrain new file mode 100644 index 000000000..9ace404fe Binary files /dev/null and b/public/terrain/19/858543/354034.terrain differ diff --git a/public/terrain/19/858543/354035.terrain b/public/terrain/19/858543/354035.terrain new file mode 100644 index 000000000..958725153 Binary files /dev/null and b/public/terrain/19/858543/354035.terrain differ diff --git a/public/terrain/19/858543/354036.terrain b/public/terrain/19/858543/354036.terrain new file mode 100644 index 000000000..f878c1790 Binary files /dev/null and b/public/terrain/19/858543/354036.terrain differ diff --git a/public/terrain/19/858543/354037.terrain b/public/terrain/19/858543/354037.terrain new file mode 100644 index 000000000..84872e13f Binary files /dev/null and b/public/terrain/19/858543/354037.terrain differ diff --git a/public/terrain/19/858543/354038.terrain b/public/terrain/19/858543/354038.terrain new file mode 100644 index 000000000..ebc6592c1 Binary files /dev/null and b/public/terrain/19/858543/354038.terrain differ diff --git a/public/terrain/19/858543/354039.terrain b/public/terrain/19/858543/354039.terrain new file mode 100644 index 000000000..e1f03dd1a Binary files /dev/null and b/public/terrain/19/858543/354039.terrain differ diff --git a/public/terrain/19/858543/354040.terrain b/public/terrain/19/858543/354040.terrain new file mode 100644 index 000000000..3ac24cec8 Binary files /dev/null and b/public/terrain/19/858543/354040.terrain differ diff --git a/public/terrain/19/858543/354041.terrain b/public/terrain/19/858543/354041.terrain new file mode 100644 index 000000000..e4748d971 Binary files /dev/null and b/public/terrain/19/858543/354041.terrain differ diff --git a/public/terrain/19/858543/354042.terrain b/public/terrain/19/858543/354042.terrain new file mode 100644 index 000000000..57a615666 Binary files /dev/null and b/public/terrain/19/858543/354042.terrain differ diff --git a/public/terrain/19/858543/354043.terrain b/public/terrain/19/858543/354043.terrain new file mode 100644 index 000000000..b15c632ad Binary files /dev/null and b/public/terrain/19/858543/354043.terrain differ diff --git a/public/terrain/19/858543/354044.terrain b/public/terrain/19/858543/354044.terrain new file mode 100644 index 000000000..5a954a1c7 Binary files /dev/null and b/public/terrain/19/858543/354044.terrain differ diff --git a/public/terrain/19/858543/354045.terrain b/public/terrain/19/858543/354045.terrain new file mode 100644 index 000000000..90a31efb3 Binary files /dev/null and b/public/terrain/19/858543/354045.terrain differ diff --git a/public/terrain/19/858543/354046.terrain b/public/terrain/19/858543/354046.terrain new file mode 100644 index 000000000..80c7d3580 Binary files /dev/null and b/public/terrain/19/858543/354046.terrain differ diff --git a/public/terrain/19/858543/354047.terrain b/public/terrain/19/858543/354047.terrain new file mode 100644 index 000000000..170448172 Binary files /dev/null and b/public/terrain/19/858543/354047.terrain differ diff --git a/public/terrain/19/858543/354048.terrain b/public/terrain/19/858543/354048.terrain new file mode 100644 index 000000000..07eddff1e Binary files /dev/null and b/public/terrain/19/858543/354048.terrain differ diff --git a/public/terrain/19/858543/354049.terrain b/public/terrain/19/858543/354049.terrain new file mode 100644 index 000000000..beec0fbab Binary files /dev/null and b/public/terrain/19/858543/354049.terrain differ diff --git a/public/terrain/19/858543/354050.terrain b/public/terrain/19/858543/354050.terrain new file mode 100644 index 000000000..09ed72398 Binary files /dev/null and b/public/terrain/19/858543/354050.terrain differ diff --git a/public/terrain/19/858543/354051.terrain b/public/terrain/19/858543/354051.terrain new file mode 100644 index 000000000..9206d4bef Binary files /dev/null and b/public/terrain/19/858543/354051.terrain differ diff --git a/public/terrain/19/858543/354052.terrain b/public/terrain/19/858543/354052.terrain new file mode 100644 index 000000000..64520ec15 Binary files /dev/null and b/public/terrain/19/858543/354052.terrain differ diff --git a/public/terrain/19/858543/354053.terrain b/public/terrain/19/858543/354053.terrain new file mode 100644 index 000000000..795c4541d Binary files /dev/null and b/public/terrain/19/858543/354053.terrain differ diff --git a/public/terrain/19/858543/354054.terrain b/public/terrain/19/858543/354054.terrain new file mode 100644 index 000000000..c30210f24 Binary files /dev/null and b/public/terrain/19/858543/354054.terrain differ diff --git a/public/terrain/19/858543/354055.terrain b/public/terrain/19/858543/354055.terrain new file mode 100644 index 000000000..60abce57e Binary files /dev/null and b/public/terrain/19/858543/354055.terrain differ diff --git a/public/terrain/19/858543/354056.terrain b/public/terrain/19/858543/354056.terrain new file mode 100644 index 000000000..abe0eea7c Binary files /dev/null and b/public/terrain/19/858543/354056.terrain differ diff --git a/public/terrain/19/858543/354057.terrain b/public/terrain/19/858543/354057.terrain new file mode 100644 index 000000000..34883e604 Binary files /dev/null and b/public/terrain/19/858543/354057.terrain differ diff --git a/public/terrain/19/858543/354058.terrain b/public/terrain/19/858543/354058.terrain new file mode 100644 index 000000000..4baa5b751 Binary files /dev/null and b/public/terrain/19/858543/354058.terrain differ diff --git a/public/terrain/19/858543/354059.terrain b/public/terrain/19/858543/354059.terrain new file mode 100644 index 000000000..9ed54daf9 Binary files /dev/null and b/public/terrain/19/858543/354059.terrain differ diff --git a/public/terrain/19/858544/353743.terrain b/public/terrain/19/858544/353743.terrain new file mode 100644 index 000000000..d81c7d215 Binary files /dev/null and b/public/terrain/19/858544/353743.terrain differ diff --git a/public/terrain/19/858544/353744.terrain b/public/terrain/19/858544/353744.terrain new file mode 100644 index 000000000..167adf58c Binary files /dev/null and b/public/terrain/19/858544/353744.terrain differ diff --git a/public/terrain/19/858544/353745.terrain b/public/terrain/19/858544/353745.terrain new file mode 100644 index 000000000..30f8d5dbb Binary files /dev/null and b/public/terrain/19/858544/353745.terrain differ diff --git a/public/terrain/19/858544/353746.terrain b/public/terrain/19/858544/353746.terrain new file mode 100644 index 000000000..c9c0ae853 Binary files /dev/null and b/public/terrain/19/858544/353746.terrain differ diff --git a/public/terrain/19/858544/353747.terrain b/public/terrain/19/858544/353747.terrain new file mode 100644 index 000000000..9c6a531e0 Binary files /dev/null and b/public/terrain/19/858544/353747.terrain differ diff --git a/public/terrain/19/858544/353748.terrain b/public/terrain/19/858544/353748.terrain new file mode 100644 index 000000000..0aca9894e Binary files /dev/null and b/public/terrain/19/858544/353748.terrain differ diff --git a/public/terrain/19/858544/353749.terrain b/public/terrain/19/858544/353749.terrain new file mode 100644 index 000000000..d7454e7d7 Binary files /dev/null and b/public/terrain/19/858544/353749.terrain differ diff --git a/public/terrain/19/858544/353750.terrain b/public/terrain/19/858544/353750.terrain new file mode 100644 index 000000000..871bdfce0 Binary files /dev/null and b/public/terrain/19/858544/353750.terrain differ diff --git a/public/terrain/19/858544/353751.terrain b/public/terrain/19/858544/353751.terrain new file mode 100644 index 000000000..8776eb346 Binary files /dev/null and b/public/terrain/19/858544/353751.terrain differ diff --git a/public/terrain/19/858544/353752.terrain b/public/terrain/19/858544/353752.terrain new file mode 100644 index 000000000..78176487b Binary files /dev/null and b/public/terrain/19/858544/353752.terrain differ diff --git a/public/terrain/19/858544/353753.terrain b/public/terrain/19/858544/353753.terrain new file mode 100644 index 000000000..070f19a9d Binary files /dev/null and b/public/terrain/19/858544/353753.terrain differ diff --git a/public/terrain/19/858544/353754.terrain b/public/terrain/19/858544/353754.terrain new file mode 100644 index 000000000..eba69797d Binary files /dev/null and b/public/terrain/19/858544/353754.terrain differ diff --git a/public/terrain/19/858544/353755.terrain b/public/terrain/19/858544/353755.terrain new file mode 100644 index 000000000..1d002f15b Binary files /dev/null and b/public/terrain/19/858544/353755.terrain differ diff --git a/public/terrain/19/858544/353756.terrain b/public/terrain/19/858544/353756.terrain new file mode 100644 index 000000000..8a6f11066 Binary files /dev/null and b/public/terrain/19/858544/353756.terrain differ diff --git a/public/terrain/19/858544/353757.terrain b/public/terrain/19/858544/353757.terrain new file mode 100644 index 000000000..93ec53916 Binary files /dev/null and b/public/terrain/19/858544/353757.terrain differ diff --git a/public/terrain/19/858544/353758.terrain b/public/terrain/19/858544/353758.terrain new file mode 100644 index 000000000..6be2f9d24 Binary files /dev/null and b/public/terrain/19/858544/353758.terrain differ diff --git a/public/terrain/19/858544/353759.terrain b/public/terrain/19/858544/353759.terrain new file mode 100644 index 000000000..943694f64 Binary files /dev/null and b/public/terrain/19/858544/353759.terrain differ diff --git a/public/terrain/19/858544/353760.terrain b/public/terrain/19/858544/353760.terrain new file mode 100644 index 000000000..fc962eb5e Binary files /dev/null and b/public/terrain/19/858544/353760.terrain differ diff --git a/public/terrain/19/858544/353761.terrain b/public/terrain/19/858544/353761.terrain new file mode 100644 index 000000000..b578ffa06 Binary files /dev/null and b/public/terrain/19/858544/353761.terrain differ diff --git a/public/terrain/19/858544/353762.terrain b/public/terrain/19/858544/353762.terrain new file mode 100644 index 000000000..f507707b0 Binary files /dev/null and b/public/terrain/19/858544/353762.terrain differ diff --git a/public/terrain/19/858544/353763.terrain b/public/terrain/19/858544/353763.terrain new file mode 100644 index 000000000..6535635a6 Binary files /dev/null and b/public/terrain/19/858544/353763.terrain differ diff --git a/public/terrain/19/858544/353764.terrain b/public/terrain/19/858544/353764.terrain new file mode 100644 index 000000000..3384c9209 Binary files /dev/null and b/public/terrain/19/858544/353764.terrain differ diff --git a/public/terrain/19/858544/353765.terrain b/public/terrain/19/858544/353765.terrain new file mode 100644 index 000000000..3821a40f4 Binary files /dev/null and b/public/terrain/19/858544/353765.terrain differ diff --git a/public/terrain/19/858544/353766.terrain b/public/terrain/19/858544/353766.terrain new file mode 100644 index 000000000..42bf14e68 Binary files /dev/null and b/public/terrain/19/858544/353766.terrain differ diff --git a/public/terrain/19/858544/353767.terrain b/public/terrain/19/858544/353767.terrain new file mode 100644 index 000000000..a5f8ff07a Binary files /dev/null and b/public/terrain/19/858544/353767.terrain differ diff --git a/public/terrain/19/858544/353768.terrain b/public/terrain/19/858544/353768.terrain new file mode 100644 index 000000000..fcaa3c099 Binary files /dev/null and b/public/terrain/19/858544/353768.terrain differ diff --git a/public/terrain/19/858544/353769.terrain b/public/terrain/19/858544/353769.terrain new file mode 100644 index 000000000..07a526cb4 Binary files /dev/null and b/public/terrain/19/858544/353769.terrain differ diff --git a/public/terrain/19/858544/353770.terrain b/public/terrain/19/858544/353770.terrain new file mode 100644 index 000000000..7ec74714b Binary files /dev/null and b/public/terrain/19/858544/353770.terrain differ diff --git a/public/terrain/19/858544/353771.terrain b/public/terrain/19/858544/353771.terrain new file mode 100644 index 000000000..919a32b97 Binary files /dev/null and b/public/terrain/19/858544/353771.terrain differ diff --git a/public/terrain/19/858544/353772.terrain b/public/terrain/19/858544/353772.terrain new file mode 100644 index 000000000..ee76de08e Binary files /dev/null and b/public/terrain/19/858544/353772.terrain differ diff --git a/public/terrain/19/858544/353773.terrain b/public/terrain/19/858544/353773.terrain new file mode 100644 index 000000000..30c99c3af Binary files /dev/null and b/public/terrain/19/858544/353773.terrain differ diff --git a/public/terrain/19/858544/353774.terrain b/public/terrain/19/858544/353774.terrain new file mode 100644 index 000000000..781e6fca5 Binary files /dev/null and b/public/terrain/19/858544/353774.terrain differ diff --git a/public/terrain/19/858544/353775.terrain b/public/terrain/19/858544/353775.terrain new file mode 100644 index 000000000..387fe3f8f Binary files /dev/null and b/public/terrain/19/858544/353775.terrain differ diff --git a/public/terrain/19/858544/353776.terrain b/public/terrain/19/858544/353776.terrain new file mode 100644 index 000000000..c00c39501 Binary files /dev/null and b/public/terrain/19/858544/353776.terrain differ diff --git a/public/terrain/19/858544/353777.terrain b/public/terrain/19/858544/353777.terrain new file mode 100644 index 000000000..fc77c9406 Binary files /dev/null and b/public/terrain/19/858544/353777.terrain differ diff --git a/public/terrain/19/858544/353778.terrain b/public/terrain/19/858544/353778.terrain new file mode 100644 index 000000000..e16927573 Binary files /dev/null and b/public/terrain/19/858544/353778.terrain differ diff --git a/public/terrain/19/858544/353779.terrain b/public/terrain/19/858544/353779.terrain new file mode 100644 index 000000000..a34b914fa Binary files /dev/null and b/public/terrain/19/858544/353779.terrain differ diff --git a/public/terrain/19/858544/353780.terrain b/public/terrain/19/858544/353780.terrain new file mode 100644 index 000000000..9594a5300 Binary files /dev/null and b/public/terrain/19/858544/353780.terrain differ diff --git a/public/terrain/19/858544/353781.terrain b/public/terrain/19/858544/353781.terrain new file mode 100644 index 000000000..4c60be629 Binary files /dev/null and b/public/terrain/19/858544/353781.terrain differ diff --git a/public/terrain/19/858544/353782.terrain b/public/terrain/19/858544/353782.terrain new file mode 100644 index 000000000..c0ec0b536 Binary files /dev/null and b/public/terrain/19/858544/353782.terrain differ diff --git a/public/terrain/19/858544/353783.terrain b/public/terrain/19/858544/353783.terrain new file mode 100644 index 000000000..d0a1ad68d Binary files /dev/null and b/public/terrain/19/858544/353783.terrain differ diff --git a/public/terrain/19/858544/353784.terrain b/public/terrain/19/858544/353784.terrain new file mode 100644 index 000000000..a11817e2e Binary files /dev/null and b/public/terrain/19/858544/353784.terrain differ diff --git a/public/terrain/19/858544/353785.terrain b/public/terrain/19/858544/353785.terrain new file mode 100644 index 000000000..3a219d8d1 Binary files /dev/null and b/public/terrain/19/858544/353785.terrain differ diff --git a/public/terrain/19/858544/353786.terrain b/public/terrain/19/858544/353786.terrain new file mode 100644 index 000000000..9c5f34720 Binary files /dev/null and b/public/terrain/19/858544/353786.terrain differ diff --git a/public/terrain/19/858544/353787.terrain b/public/terrain/19/858544/353787.terrain new file mode 100644 index 000000000..ea15f1d50 Binary files /dev/null and b/public/terrain/19/858544/353787.terrain differ diff --git a/public/terrain/19/858544/353788.terrain b/public/terrain/19/858544/353788.terrain new file mode 100644 index 000000000..d0611b934 Binary files /dev/null and b/public/terrain/19/858544/353788.terrain differ diff --git a/public/terrain/19/858544/353789.terrain b/public/terrain/19/858544/353789.terrain new file mode 100644 index 000000000..fec8caa22 Binary files /dev/null and b/public/terrain/19/858544/353789.terrain differ diff --git a/public/terrain/19/858544/353790.terrain b/public/terrain/19/858544/353790.terrain new file mode 100644 index 000000000..d4764535c Binary files /dev/null and b/public/terrain/19/858544/353790.terrain differ diff --git a/public/terrain/19/858544/353791.terrain b/public/terrain/19/858544/353791.terrain new file mode 100644 index 000000000..560398a5b Binary files /dev/null and b/public/terrain/19/858544/353791.terrain differ diff --git a/public/terrain/19/858544/353792.terrain b/public/terrain/19/858544/353792.terrain new file mode 100644 index 000000000..d7af09396 Binary files /dev/null and b/public/terrain/19/858544/353792.terrain differ diff --git a/public/terrain/19/858544/353793.terrain b/public/terrain/19/858544/353793.terrain new file mode 100644 index 000000000..9221543f4 Binary files /dev/null and b/public/terrain/19/858544/353793.terrain differ diff --git a/public/terrain/19/858544/353794.terrain b/public/terrain/19/858544/353794.terrain new file mode 100644 index 000000000..2e83bd8f5 Binary files /dev/null and b/public/terrain/19/858544/353794.terrain differ diff --git a/public/terrain/19/858544/353795.terrain b/public/terrain/19/858544/353795.terrain new file mode 100644 index 000000000..7f6089d4c Binary files /dev/null and b/public/terrain/19/858544/353795.terrain differ diff --git a/public/terrain/19/858544/353796.terrain b/public/terrain/19/858544/353796.terrain new file mode 100644 index 000000000..e20c9731e Binary files /dev/null and b/public/terrain/19/858544/353796.terrain differ diff --git a/public/terrain/19/858544/353797.terrain b/public/terrain/19/858544/353797.terrain new file mode 100644 index 000000000..dd4c08b2c Binary files /dev/null and b/public/terrain/19/858544/353797.terrain differ diff --git a/public/terrain/19/858544/353798.terrain b/public/terrain/19/858544/353798.terrain new file mode 100644 index 000000000..a0e7bb884 Binary files /dev/null and b/public/terrain/19/858544/353798.terrain differ diff --git a/public/terrain/19/858544/353799.terrain b/public/terrain/19/858544/353799.terrain new file mode 100644 index 000000000..b7100c7ef Binary files /dev/null and b/public/terrain/19/858544/353799.terrain differ diff --git a/public/terrain/19/858544/353800.terrain b/public/terrain/19/858544/353800.terrain new file mode 100644 index 000000000..bda3cc6c5 Binary files /dev/null and b/public/terrain/19/858544/353800.terrain differ diff --git a/public/terrain/19/858544/353801.terrain b/public/terrain/19/858544/353801.terrain new file mode 100644 index 000000000..75e6638bc Binary files /dev/null and b/public/terrain/19/858544/353801.terrain differ diff --git a/public/terrain/19/858544/353802.terrain b/public/terrain/19/858544/353802.terrain new file mode 100644 index 000000000..2850e1895 Binary files /dev/null and b/public/terrain/19/858544/353802.terrain differ diff --git a/public/terrain/19/858544/353803.terrain b/public/terrain/19/858544/353803.terrain new file mode 100644 index 000000000..a06706203 Binary files /dev/null and b/public/terrain/19/858544/353803.terrain differ diff --git a/public/terrain/19/858544/353804.terrain b/public/terrain/19/858544/353804.terrain new file mode 100644 index 000000000..c6a56dd45 Binary files /dev/null and b/public/terrain/19/858544/353804.terrain differ diff --git a/public/terrain/19/858544/353805.terrain b/public/terrain/19/858544/353805.terrain new file mode 100644 index 000000000..d7ea2334d Binary files /dev/null and b/public/terrain/19/858544/353805.terrain differ diff --git a/public/terrain/19/858544/353806.terrain b/public/terrain/19/858544/353806.terrain new file mode 100644 index 000000000..ec438b487 Binary files /dev/null and b/public/terrain/19/858544/353806.terrain differ diff --git a/public/terrain/19/858544/353807.terrain b/public/terrain/19/858544/353807.terrain new file mode 100644 index 000000000..e818b9028 Binary files /dev/null and b/public/terrain/19/858544/353807.terrain differ diff --git a/public/terrain/19/858544/353808.terrain b/public/terrain/19/858544/353808.terrain new file mode 100644 index 000000000..bff295b4f Binary files /dev/null and b/public/terrain/19/858544/353808.terrain differ diff --git a/public/terrain/19/858544/353809.terrain b/public/terrain/19/858544/353809.terrain new file mode 100644 index 000000000..b6ddf2eb5 Binary files /dev/null and b/public/terrain/19/858544/353809.terrain differ diff --git a/public/terrain/19/858544/353810.terrain b/public/terrain/19/858544/353810.terrain new file mode 100644 index 000000000..6467a7f46 Binary files /dev/null and b/public/terrain/19/858544/353810.terrain differ diff --git a/public/terrain/19/858544/353811.terrain b/public/terrain/19/858544/353811.terrain new file mode 100644 index 000000000..0a28c7623 Binary files /dev/null and b/public/terrain/19/858544/353811.terrain differ diff --git a/public/terrain/19/858544/353812.terrain b/public/terrain/19/858544/353812.terrain new file mode 100644 index 000000000..513ddd22a Binary files /dev/null and b/public/terrain/19/858544/353812.terrain differ diff --git a/public/terrain/19/858544/353813.terrain b/public/terrain/19/858544/353813.terrain new file mode 100644 index 000000000..9e938197b Binary files /dev/null and b/public/terrain/19/858544/353813.terrain differ diff --git a/public/terrain/19/858544/353814.terrain b/public/terrain/19/858544/353814.terrain new file mode 100644 index 000000000..e0ebff72c Binary files /dev/null and b/public/terrain/19/858544/353814.terrain differ diff --git a/public/terrain/19/858544/353815.terrain b/public/terrain/19/858544/353815.terrain new file mode 100644 index 000000000..8ff3cbb39 Binary files /dev/null and b/public/terrain/19/858544/353815.terrain differ diff --git a/public/terrain/19/858544/353816.terrain b/public/terrain/19/858544/353816.terrain new file mode 100644 index 000000000..18c7c6391 Binary files /dev/null and b/public/terrain/19/858544/353816.terrain differ diff --git a/public/terrain/19/858544/353817.terrain b/public/terrain/19/858544/353817.terrain new file mode 100644 index 000000000..a0898c55b Binary files /dev/null and b/public/terrain/19/858544/353817.terrain differ diff --git a/public/terrain/19/858544/353818.terrain b/public/terrain/19/858544/353818.terrain new file mode 100644 index 000000000..c49d63a2a Binary files /dev/null and b/public/terrain/19/858544/353818.terrain differ diff --git a/public/terrain/19/858544/353819.terrain b/public/terrain/19/858544/353819.terrain new file mode 100644 index 000000000..28d079152 Binary files /dev/null and b/public/terrain/19/858544/353819.terrain differ diff --git a/public/terrain/19/858544/353820.terrain b/public/terrain/19/858544/353820.terrain new file mode 100644 index 000000000..c49c0b14f Binary files /dev/null and b/public/terrain/19/858544/353820.terrain differ diff --git a/public/terrain/19/858544/353821.terrain b/public/terrain/19/858544/353821.terrain new file mode 100644 index 000000000..c4caa5541 Binary files /dev/null and b/public/terrain/19/858544/353821.terrain differ diff --git a/public/terrain/19/858544/353822.terrain b/public/terrain/19/858544/353822.terrain new file mode 100644 index 000000000..6b285d672 Binary files /dev/null and b/public/terrain/19/858544/353822.terrain differ diff --git a/public/terrain/19/858544/353823.terrain b/public/terrain/19/858544/353823.terrain new file mode 100644 index 000000000..3499a4bc6 Binary files /dev/null and b/public/terrain/19/858544/353823.terrain differ diff --git a/public/terrain/19/858544/353824.terrain b/public/terrain/19/858544/353824.terrain new file mode 100644 index 000000000..77ad054b8 Binary files /dev/null and b/public/terrain/19/858544/353824.terrain differ diff --git a/public/terrain/19/858544/353825.terrain b/public/terrain/19/858544/353825.terrain new file mode 100644 index 000000000..82d6b24f0 Binary files /dev/null and b/public/terrain/19/858544/353825.terrain differ diff --git a/public/terrain/19/858544/353826.terrain b/public/terrain/19/858544/353826.terrain new file mode 100644 index 000000000..54ec67600 Binary files /dev/null and b/public/terrain/19/858544/353826.terrain differ diff --git a/public/terrain/19/858544/353827.terrain b/public/terrain/19/858544/353827.terrain new file mode 100644 index 000000000..41474509d Binary files /dev/null and b/public/terrain/19/858544/353827.terrain differ diff --git a/public/terrain/19/858544/353828.terrain b/public/terrain/19/858544/353828.terrain new file mode 100644 index 000000000..28b744917 Binary files /dev/null and b/public/terrain/19/858544/353828.terrain differ diff --git a/public/terrain/19/858544/353829.terrain b/public/terrain/19/858544/353829.terrain new file mode 100644 index 000000000..5f1961035 Binary files /dev/null and b/public/terrain/19/858544/353829.terrain differ diff --git a/public/terrain/19/858544/353830.terrain b/public/terrain/19/858544/353830.terrain new file mode 100644 index 000000000..45450c8f4 Binary files /dev/null and b/public/terrain/19/858544/353830.terrain differ diff --git a/public/terrain/19/858544/353831.terrain b/public/terrain/19/858544/353831.terrain new file mode 100644 index 000000000..7a6d85b4b Binary files /dev/null and b/public/terrain/19/858544/353831.terrain differ diff --git a/public/terrain/19/858544/353832.terrain b/public/terrain/19/858544/353832.terrain new file mode 100644 index 000000000..d392ac099 Binary files /dev/null and b/public/terrain/19/858544/353832.terrain differ diff --git a/public/terrain/19/858544/353833.terrain b/public/terrain/19/858544/353833.terrain new file mode 100644 index 000000000..c889dc129 Binary files /dev/null and b/public/terrain/19/858544/353833.terrain differ diff --git a/public/terrain/19/858544/353834.terrain b/public/terrain/19/858544/353834.terrain new file mode 100644 index 000000000..6af2a35c5 Binary files /dev/null and b/public/terrain/19/858544/353834.terrain differ diff --git a/public/terrain/19/858544/353835.terrain b/public/terrain/19/858544/353835.terrain new file mode 100644 index 000000000..08d816d5a Binary files /dev/null and b/public/terrain/19/858544/353835.terrain differ diff --git a/public/terrain/19/858544/353836.terrain b/public/terrain/19/858544/353836.terrain new file mode 100644 index 000000000..16d10393e Binary files /dev/null and b/public/terrain/19/858544/353836.terrain differ diff --git a/public/terrain/19/858544/353837.terrain b/public/terrain/19/858544/353837.terrain new file mode 100644 index 000000000..fcb533d56 Binary files /dev/null and b/public/terrain/19/858544/353837.terrain differ diff --git a/public/terrain/19/858544/353838.terrain b/public/terrain/19/858544/353838.terrain new file mode 100644 index 000000000..085e7dfe4 Binary files /dev/null and b/public/terrain/19/858544/353838.terrain differ diff --git a/public/terrain/19/858544/353839.terrain b/public/terrain/19/858544/353839.terrain new file mode 100644 index 000000000..4d18a03cb Binary files /dev/null and b/public/terrain/19/858544/353839.terrain differ diff --git a/public/terrain/19/858544/353840.terrain b/public/terrain/19/858544/353840.terrain new file mode 100644 index 000000000..c3a816ede Binary files /dev/null and b/public/terrain/19/858544/353840.terrain differ diff --git a/public/terrain/19/858544/353841.terrain b/public/terrain/19/858544/353841.terrain new file mode 100644 index 000000000..d3d800893 Binary files /dev/null and b/public/terrain/19/858544/353841.terrain differ diff --git a/public/terrain/19/858544/353842.terrain b/public/terrain/19/858544/353842.terrain new file mode 100644 index 000000000..b68ef91da Binary files /dev/null and b/public/terrain/19/858544/353842.terrain differ diff --git a/public/terrain/19/858544/353843.terrain b/public/terrain/19/858544/353843.terrain new file mode 100644 index 000000000..c9c313944 Binary files /dev/null and b/public/terrain/19/858544/353843.terrain differ diff --git a/public/terrain/19/858544/353844.terrain b/public/terrain/19/858544/353844.terrain new file mode 100644 index 000000000..96987762a Binary files /dev/null and b/public/terrain/19/858544/353844.terrain differ diff --git a/public/terrain/19/858544/353845.terrain b/public/terrain/19/858544/353845.terrain new file mode 100644 index 000000000..0eb195926 Binary files /dev/null and b/public/terrain/19/858544/353845.terrain differ diff --git a/public/terrain/19/858544/353846.terrain b/public/terrain/19/858544/353846.terrain new file mode 100644 index 000000000..51fba4faa Binary files /dev/null and b/public/terrain/19/858544/353846.terrain differ diff --git a/public/terrain/19/858544/353847.terrain b/public/terrain/19/858544/353847.terrain new file mode 100644 index 000000000..29655abdc Binary files /dev/null and b/public/terrain/19/858544/353847.terrain differ diff --git a/public/terrain/19/858544/353848.terrain b/public/terrain/19/858544/353848.terrain new file mode 100644 index 000000000..24f8de519 Binary files /dev/null and b/public/terrain/19/858544/353848.terrain differ diff --git a/public/terrain/19/858544/353849.terrain b/public/terrain/19/858544/353849.terrain new file mode 100644 index 000000000..3a2e800e1 Binary files /dev/null and b/public/terrain/19/858544/353849.terrain differ diff --git a/public/terrain/19/858544/353850.terrain b/public/terrain/19/858544/353850.terrain new file mode 100644 index 000000000..82ae8142f Binary files /dev/null and b/public/terrain/19/858544/353850.terrain differ diff --git a/public/terrain/19/858544/353851.terrain b/public/terrain/19/858544/353851.terrain new file mode 100644 index 000000000..9bf5461f9 Binary files /dev/null and b/public/terrain/19/858544/353851.terrain differ diff --git a/public/terrain/19/858544/353852.terrain b/public/terrain/19/858544/353852.terrain new file mode 100644 index 000000000..0347187fc Binary files /dev/null and b/public/terrain/19/858544/353852.terrain differ diff --git a/public/terrain/19/858544/353853.terrain b/public/terrain/19/858544/353853.terrain new file mode 100644 index 000000000..874f27f87 Binary files /dev/null and b/public/terrain/19/858544/353853.terrain differ diff --git a/public/terrain/19/858544/353854.terrain b/public/terrain/19/858544/353854.terrain new file mode 100644 index 000000000..4e50bc618 Binary files /dev/null and b/public/terrain/19/858544/353854.terrain differ diff --git a/public/terrain/19/858544/353855.terrain b/public/terrain/19/858544/353855.terrain new file mode 100644 index 000000000..8c712acca Binary files /dev/null and b/public/terrain/19/858544/353855.terrain differ diff --git a/public/terrain/19/858544/353856.terrain b/public/terrain/19/858544/353856.terrain new file mode 100644 index 000000000..c22938a9a Binary files /dev/null and b/public/terrain/19/858544/353856.terrain differ diff --git a/public/terrain/19/858544/353857.terrain b/public/terrain/19/858544/353857.terrain new file mode 100644 index 000000000..851ece32d Binary files /dev/null and b/public/terrain/19/858544/353857.terrain differ diff --git a/public/terrain/19/858544/353858.terrain b/public/terrain/19/858544/353858.terrain new file mode 100644 index 000000000..55b204c51 Binary files /dev/null and b/public/terrain/19/858544/353858.terrain differ diff --git a/public/terrain/19/858544/353859.terrain b/public/terrain/19/858544/353859.terrain new file mode 100644 index 000000000..d7a4dcf70 Binary files /dev/null and b/public/terrain/19/858544/353859.terrain differ diff --git a/public/terrain/19/858544/353860.terrain b/public/terrain/19/858544/353860.terrain new file mode 100644 index 000000000..596840641 Binary files /dev/null and b/public/terrain/19/858544/353860.terrain differ diff --git a/public/terrain/19/858544/353861.terrain b/public/terrain/19/858544/353861.terrain new file mode 100644 index 000000000..185c170b0 Binary files /dev/null and b/public/terrain/19/858544/353861.terrain differ diff --git a/public/terrain/19/858544/353862.terrain b/public/terrain/19/858544/353862.terrain new file mode 100644 index 000000000..0b21faaba Binary files /dev/null and b/public/terrain/19/858544/353862.terrain differ diff --git a/public/terrain/19/858544/353863.terrain b/public/terrain/19/858544/353863.terrain new file mode 100644 index 000000000..4b46fd866 Binary files /dev/null and b/public/terrain/19/858544/353863.terrain differ diff --git a/public/terrain/19/858544/353864.terrain b/public/terrain/19/858544/353864.terrain new file mode 100644 index 000000000..0b4fb1b3f Binary files /dev/null and b/public/terrain/19/858544/353864.terrain differ diff --git a/public/terrain/19/858544/353865.terrain b/public/terrain/19/858544/353865.terrain new file mode 100644 index 000000000..f75c21448 Binary files /dev/null and b/public/terrain/19/858544/353865.terrain differ diff --git a/public/terrain/19/858544/353866.terrain b/public/terrain/19/858544/353866.terrain new file mode 100644 index 000000000..9cd248dbc Binary files /dev/null and b/public/terrain/19/858544/353866.terrain differ diff --git a/public/terrain/19/858544/353867.terrain b/public/terrain/19/858544/353867.terrain new file mode 100644 index 000000000..4e36ea640 Binary files /dev/null and b/public/terrain/19/858544/353867.terrain differ diff --git a/public/terrain/19/858544/353868.terrain b/public/terrain/19/858544/353868.terrain new file mode 100644 index 000000000..bad809d20 Binary files /dev/null and b/public/terrain/19/858544/353868.terrain differ diff --git a/public/terrain/19/858544/353869.terrain b/public/terrain/19/858544/353869.terrain new file mode 100644 index 000000000..bf1c7fa01 Binary files /dev/null and b/public/terrain/19/858544/353869.terrain differ diff --git a/public/terrain/19/858544/353870.terrain b/public/terrain/19/858544/353870.terrain new file mode 100644 index 000000000..97b308d52 Binary files /dev/null and b/public/terrain/19/858544/353870.terrain differ diff --git a/public/terrain/19/858544/353871.terrain b/public/terrain/19/858544/353871.terrain new file mode 100644 index 000000000..63f298218 Binary files /dev/null and b/public/terrain/19/858544/353871.terrain differ diff --git a/public/terrain/19/858544/353872.terrain b/public/terrain/19/858544/353872.terrain new file mode 100644 index 000000000..f7a64925e Binary files /dev/null and b/public/terrain/19/858544/353872.terrain differ diff --git a/public/terrain/19/858544/353873.terrain b/public/terrain/19/858544/353873.terrain new file mode 100644 index 000000000..1829106fb Binary files /dev/null and b/public/terrain/19/858544/353873.terrain differ diff --git a/public/terrain/19/858544/353874.terrain b/public/terrain/19/858544/353874.terrain new file mode 100644 index 000000000..db07f0822 Binary files /dev/null and b/public/terrain/19/858544/353874.terrain differ diff --git a/public/terrain/19/858544/353875.terrain b/public/terrain/19/858544/353875.terrain new file mode 100644 index 000000000..ce8c4eda9 Binary files /dev/null and b/public/terrain/19/858544/353875.terrain differ diff --git a/public/terrain/19/858544/353876.terrain b/public/terrain/19/858544/353876.terrain new file mode 100644 index 000000000..2b9ba6aa5 Binary files /dev/null and b/public/terrain/19/858544/353876.terrain differ diff --git a/public/terrain/19/858544/353877.terrain b/public/terrain/19/858544/353877.terrain new file mode 100644 index 000000000..0cd5f3b64 Binary files /dev/null and b/public/terrain/19/858544/353877.terrain differ diff --git a/public/terrain/19/858544/353878.terrain b/public/terrain/19/858544/353878.terrain new file mode 100644 index 000000000..ab84d693a Binary files /dev/null and b/public/terrain/19/858544/353878.terrain differ diff --git a/public/terrain/19/858544/353879.terrain b/public/terrain/19/858544/353879.terrain new file mode 100644 index 000000000..a2653c616 Binary files /dev/null and b/public/terrain/19/858544/353879.terrain differ diff --git a/public/terrain/19/858544/353880.terrain b/public/terrain/19/858544/353880.terrain new file mode 100644 index 000000000..e0c5d9dae Binary files /dev/null and b/public/terrain/19/858544/353880.terrain differ diff --git a/public/terrain/19/858544/353881.terrain b/public/terrain/19/858544/353881.terrain new file mode 100644 index 000000000..6342dca5b Binary files /dev/null and b/public/terrain/19/858544/353881.terrain differ diff --git a/public/terrain/19/858544/353882.terrain b/public/terrain/19/858544/353882.terrain new file mode 100644 index 000000000..e532fb83a Binary files /dev/null and b/public/terrain/19/858544/353882.terrain differ diff --git a/public/terrain/19/858544/353883.terrain b/public/terrain/19/858544/353883.terrain new file mode 100644 index 000000000..819238e22 Binary files /dev/null and b/public/terrain/19/858544/353883.terrain differ diff --git a/public/terrain/19/858544/353884.terrain b/public/terrain/19/858544/353884.terrain new file mode 100644 index 000000000..974627c5d Binary files /dev/null and b/public/terrain/19/858544/353884.terrain differ diff --git a/public/terrain/19/858544/353885.terrain b/public/terrain/19/858544/353885.terrain new file mode 100644 index 000000000..74b508d63 Binary files /dev/null and b/public/terrain/19/858544/353885.terrain differ diff --git a/public/terrain/19/858544/353886.terrain b/public/terrain/19/858544/353886.terrain new file mode 100644 index 000000000..bb1e5eb50 Binary files /dev/null and b/public/terrain/19/858544/353886.terrain differ diff --git a/public/terrain/19/858544/353887.terrain b/public/terrain/19/858544/353887.terrain new file mode 100644 index 000000000..859533e1a Binary files /dev/null and b/public/terrain/19/858544/353887.terrain differ diff --git a/public/terrain/19/858544/353888.terrain b/public/terrain/19/858544/353888.terrain new file mode 100644 index 000000000..d9bdae149 Binary files /dev/null and b/public/terrain/19/858544/353888.terrain differ diff --git a/public/terrain/19/858544/353889.terrain b/public/terrain/19/858544/353889.terrain new file mode 100644 index 000000000..302bb5782 Binary files /dev/null and b/public/terrain/19/858544/353889.terrain differ diff --git a/public/terrain/19/858544/353890.terrain b/public/terrain/19/858544/353890.terrain new file mode 100644 index 000000000..3031861b1 Binary files /dev/null and b/public/terrain/19/858544/353890.terrain differ diff --git a/public/terrain/19/858544/353891.terrain b/public/terrain/19/858544/353891.terrain new file mode 100644 index 000000000..a49eb8ec4 Binary files /dev/null and b/public/terrain/19/858544/353891.terrain differ diff --git a/public/terrain/19/858544/353892.terrain b/public/terrain/19/858544/353892.terrain new file mode 100644 index 000000000..881602da6 Binary files /dev/null and b/public/terrain/19/858544/353892.terrain differ diff --git a/public/terrain/19/858544/353893.terrain b/public/terrain/19/858544/353893.terrain new file mode 100644 index 000000000..1073def11 Binary files /dev/null and b/public/terrain/19/858544/353893.terrain differ diff --git a/public/terrain/19/858544/353894.terrain b/public/terrain/19/858544/353894.terrain new file mode 100644 index 000000000..869b5928c Binary files /dev/null and b/public/terrain/19/858544/353894.terrain differ diff --git a/public/terrain/19/858544/353895.terrain b/public/terrain/19/858544/353895.terrain new file mode 100644 index 000000000..b4f34e30a Binary files /dev/null and b/public/terrain/19/858544/353895.terrain differ diff --git a/public/terrain/19/858544/353896.terrain b/public/terrain/19/858544/353896.terrain new file mode 100644 index 000000000..4dda69c7d Binary files /dev/null and b/public/terrain/19/858544/353896.terrain differ diff --git a/public/terrain/19/858544/353897.terrain b/public/terrain/19/858544/353897.terrain new file mode 100644 index 000000000..dbb56c41b Binary files /dev/null and b/public/terrain/19/858544/353897.terrain differ diff --git a/public/terrain/19/858544/353898.terrain b/public/terrain/19/858544/353898.terrain new file mode 100644 index 000000000..c994afe02 Binary files /dev/null and b/public/terrain/19/858544/353898.terrain differ diff --git a/public/terrain/19/858544/353899.terrain b/public/terrain/19/858544/353899.terrain new file mode 100644 index 000000000..56edc4699 Binary files /dev/null and b/public/terrain/19/858544/353899.terrain differ diff --git a/public/terrain/19/858544/353900.terrain b/public/terrain/19/858544/353900.terrain new file mode 100644 index 000000000..f37d52fde Binary files /dev/null and b/public/terrain/19/858544/353900.terrain differ diff --git a/public/terrain/19/858544/353901.terrain b/public/terrain/19/858544/353901.terrain new file mode 100644 index 000000000..92ae1029d Binary files /dev/null and b/public/terrain/19/858544/353901.terrain differ diff --git a/public/terrain/19/858544/353902.terrain b/public/terrain/19/858544/353902.terrain new file mode 100644 index 000000000..c551d024e Binary files /dev/null and b/public/terrain/19/858544/353902.terrain differ diff --git a/public/terrain/19/858544/353903.terrain b/public/terrain/19/858544/353903.terrain new file mode 100644 index 000000000..5fbfb9cb7 Binary files /dev/null and b/public/terrain/19/858544/353903.terrain differ diff --git a/public/terrain/19/858544/353904.terrain b/public/terrain/19/858544/353904.terrain new file mode 100644 index 000000000..b5fdbaa75 Binary files /dev/null and b/public/terrain/19/858544/353904.terrain differ diff --git a/public/terrain/19/858544/353905.terrain b/public/terrain/19/858544/353905.terrain new file mode 100644 index 000000000..4af0cbaa5 Binary files /dev/null and b/public/terrain/19/858544/353905.terrain differ diff --git a/public/terrain/19/858544/353906.terrain b/public/terrain/19/858544/353906.terrain new file mode 100644 index 000000000..ab1017fb5 Binary files /dev/null and b/public/terrain/19/858544/353906.terrain differ diff --git a/public/terrain/19/858544/353907.terrain b/public/terrain/19/858544/353907.terrain new file mode 100644 index 000000000..4db0a6515 Binary files /dev/null and b/public/terrain/19/858544/353907.terrain differ diff --git a/public/terrain/19/858544/353908.terrain b/public/terrain/19/858544/353908.terrain new file mode 100644 index 000000000..423f1072e Binary files /dev/null and b/public/terrain/19/858544/353908.terrain differ diff --git a/public/terrain/19/858544/353909.terrain b/public/terrain/19/858544/353909.terrain new file mode 100644 index 000000000..24b2112f1 Binary files /dev/null and b/public/terrain/19/858544/353909.terrain differ diff --git a/public/terrain/19/858544/353910.terrain b/public/terrain/19/858544/353910.terrain new file mode 100644 index 000000000..b70e51b8b Binary files /dev/null and b/public/terrain/19/858544/353910.terrain differ diff --git a/public/terrain/19/858544/353911.terrain b/public/terrain/19/858544/353911.terrain new file mode 100644 index 000000000..7789bc628 Binary files /dev/null and b/public/terrain/19/858544/353911.terrain differ diff --git a/public/terrain/19/858544/353912.terrain b/public/terrain/19/858544/353912.terrain new file mode 100644 index 000000000..52c7936d7 Binary files /dev/null and b/public/terrain/19/858544/353912.terrain differ diff --git a/public/terrain/19/858544/353913.terrain b/public/terrain/19/858544/353913.terrain new file mode 100644 index 000000000..e1a8c2dec Binary files /dev/null and b/public/terrain/19/858544/353913.terrain differ diff --git a/public/terrain/19/858544/353914.terrain b/public/terrain/19/858544/353914.terrain new file mode 100644 index 000000000..ac3216257 Binary files /dev/null and b/public/terrain/19/858544/353914.terrain differ diff --git a/public/terrain/19/858544/353915.terrain b/public/terrain/19/858544/353915.terrain new file mode 100644 index 000000000..080cdf311 Binary files /dev/null and b/public/terrain/19/858544/353915.terrain differ diff --git a/public/terrain/19/858544/353916.terrain b/public/terrain/19/858544/353916.terrain new file mode 100644 index 000000000..cd3788477 Binary files /dev/null and b/public/terrain/19/858544/353916.terrain differ diff --git a/public/terrain/19/858544/353917.terrain b/public/terrain/19/858544/353917.terrain new file mode 100644 index 000000000..eb61ec6c3 Binary files /dev/null and b/public/terrain/19/858544/353917.terrain differ diff --git a/public/terrain/19/858544/353918.terrain b/public/terrain/19/858544/353918.terrain new file mode 100644 index 000000000..2f4b6d1dd Binary files /dev/null and b/public/terrain/19/858544/353918.terrain differ diff --git a/public/terrain/19/858544/353919.terrain b/public/terrain/19/858544/353919.terrain new file mode 100644 index 000000000..ee49d1d33 Binary files /dev/null and b/public/terrain/19/858544/353919.terrain differ diff --git a/public/terrain/19/858544/353920.terrain b/public/terrain/19/858544/353920.terrain new file mode 100644 index 000000000..19d3e46af Binary files /dev/null and b/public/terrain/19/858544/353920.terrain differ diff --git a/public/terrain/19/858544/353921.terrain b/public/terrain/19/858544/353921.terrain new file mode 100644 index 000000000..0bf0b1bc9 Binary files /dev/null and b/public/terrain/19/858544/353921.terrain differ diff --git a/public/terrain/19/858544/353922.terrain b/public/terrain/19/858544/353922.terrain new file mode 100644 index 000000000..23a7f376c Binary files /dev/null and b/public/terrain/19/858544/353922.terrain differ diff --git a/public/terrain/19/858544/353923.terrain b/public/terrain/19/858544/353923.terrain new file mode 100644 index 000000000..aac169ab7 Binary files /dev/null and b/public/terrain/19/858544/353923.terrain differ diff --git a/public/terrain/19/858544/353924.terrain b/public/terrain/19/858544/353924.terrain new file mode 100644 index 000000000..9d66f2d40 Binary files /dev/null and b/public/terrain/19/858544/353924.terrain differ diff --git a/public/terrain/19/858544/353925.terrain b/public/terrain/19/858544/353925.terrain new file mode 100644 index 000000000..91d5b9ab8 Binary files /dev/null and b/public/terrain/19/858544/353925.terrain differ diff --git a/public/terrain/19/858544/353926.terrain b/public/terrain/19/858544/353926.terrain new file mode 100644 index 000000000..2f0ef22d4 Binary files /dev/null and b/public/terrain/19/858544/353926.terrain differ diff --git a/public/terrain/19/858544/353927.terrain b/public/terrain/19/858544/353927.terrain new file mode 100644 index 000000000..58bc92727 Binary files /dev/null and b/public/terrain/19/858544/353927.terrain differ diff --git a/public/terrain/19/858544/353928.terrain b/public/terrain/19/858544/353928.terrain new file mode 100644 index 000000000..c7ce3a63d Binary files /dev/null and b/public/terrain/19/858544/353928.terrain differ diff --git a/public/terrain/19/858544/353929.terrain b/public/terrain/19/858544/353929.terrain new file mode 100644 index 000000000..782952500 Binary files /dev/null and b/public/terrain/19/858544/353929.terrain differ diff --git a/public/terrain/19/858544/353930.terrain b/public/terrain/19/858544/353930.terrain new file mode 100644 index 000000000..b467b9dd5 Binary files /dev/null and b/public/terrain/19/858544/353930.terrain differ diff --git a/public/terrain/19/858544/353931.terrain b/public/terrain/19/858544/353931.terrain new file mode 100644 index 000000000..bb61802ec Binary files /dev/null and b/public/terrain/19/858544/353931.terrain differ diff --git a/public/terrain/19/858544/353932.terrain b/public/terrain/19/858544/353932.terrain new file mode 100644 index 000000000..542042e75 Binary files /dev/null and b/public/terrain/19/858544/353932.terrain differ diff --git a/public/terrain/19/858544/353933.terrain b/public/terrain/19/858544/353933.terrain new file mode 100644 index 000000000..a133d3617 Binary files /dev/null and b/public/terrain/19/858544/353933.terrain differ diff --git a/public/terrain/19/858544/353934.terrain b/public/terrain/19/858544/353934.terrain new file mode 100644 index 000000000..d2797e33e Binary files /dev/null and b/public/terrain/19/858544/353934.terrain differ diff --git a/public/terrain/19/858544/353935.terrain b/public/terrain/19/858544/353935.terrain new file mode 100644 index 000000000..a76a7990b Binary files /dev/null and b/public/terrain/19/858544/353935.terrain differ diff --git a/public/terrain/19/858544/353936.terrain b/public/terrain/19/858544/353936.terrain new file mode 100644 index 000000000..3b1ead054 Binary files /dev/null and b/public/terrain/19/858544/353936.terrain differ diff --git a/public/terrain/19/858544/353937.terrain b/public/terrain/19/858544/353937.terrain new file mode 100644 index 000000000..6aa08cda5 Binary files /dev/null and b/public/terrain/19/858544/353937.terrain differ diff --git a/public/terrain/19/858544/353938.terrain b/public/terrain/19/858544/353938.terrain new file mode 100644 index 000000000..d7904db23 Binary files /dev/null and b/public/terrain/19/858544/353938.terrain differ diff --git a/public/terrain/19/858544/353939.terrain b/public/terrain/19/858544/353939.terrain new file mode 100644 index 000000000..fad929b6b Binary files /dev/null and b/public/terrain/19/858544/353939.terrain differ diff --git a/public/terrain/19/858544/353940.terrain b/public/terrain/19/858544/353940.terrain new file mode 100644 index 000000000..bd4bc6f36 Binary files /dev/null and b/public/terrain/19/858544/353940.terrain differ diff --git a/public/terrain/19/858544/353941.terrain b/public/terrain/19/858544/353941.terrain new file mode 100644 index 000000000..5c49d6d13 Binary files /dev/null and b/public/terrain/19/858544/353941.terrain differ diff --git a/public/terrain/19/858544/353942.terrain b/public/terrain/19/858544/353942.terrain new file mode 100644 index 000000000..368d188c9 Binary files /dev/null and b/public/terrain/19/858544/353942.terrain differ diff --git a/public/terrain/19/858544/353943.terrain b/public/terrain/19/858544/353943.terrain new file mode 100644 index 000000000..76836bc1b Binary files /dev/null and b/public/terrain/19/858544/353943.terrain differ diff --git a/public/terrain/19/858544/353944.terrain b/public/terrain/19/858544/353944.terrain new file mode 100644 index 000000000..7a53c3732 Binary files /dev/null and b/public/terrain/19/858544/353944.terrain differ diff --git a/public/terrain/19/858544/353945.terrain b/public/terrain/19/858544/353945.terrain new file mode 100644 index 000000000..16da31002 Binary files /dev/null and b/public/terrain/19/858544/353945.terrain differ diff --git a/public/terrain/19/858544/353946.terrain b/public/terrain/19/858544/353946.terrain new file mode 100644 index 000000000..f58ee17b0 Binary files /dev/null and b/public/terrain/19/858544/353946.terrain differ diff --git a/public/terrain/19/858544/353947.terrain b/public/terrain/19/858544/353947.terrain new file mode 100644 index 000000000..bc4d89655 Binary files /dev/null and b/public/terrain/19/858544/353947.terrain differ diff --git a/public/terrain/19/858544/353948.terrain b/public/terrain/19/858544/353948.terrain new file mode 100644 index 000000000..85887fdae Binary files /dev/null and b/public/terrain/19/858544/353948.terrain differ diff --git a/public/terrain/19/858544/353949.terrain b/public/terrain/19/858544/353949.terrain new file mode 100644 index 000000000..a42c07f47 Binary files /dev/null and b/public/terrain/19/858544/353949.terrain differ diff --git a/public/terrain/19/858544/353950.terrain b/public/terrain/19/858544/353950.terrain new file mode 100644 index 000000000..221a23f43 Binary files /dev/null and b/public/terrain/19/858544/353950.terrain differ diff --git a/public/terrain/19/858544/353951.terrain b/public/terrain/19/858544/353951.terrain new file mode 100644 index 000000000..484d74558 Binary files /dev/null and b/public/terrain/19/858544/353951.terrain differ diff --git a/public/terrain/19/858544/353952.terrain b/public/terrain/19/858544/353952.terrain new file mode 100644 index 000000000..10f04a06f Binary files /dev/null and b/public/terrain/19/858544/353952.terrain differ diff --git a/public/terrain/19/858544/353953.terrain b/public/terrain/19/858544/353953.terrain new file mode 100644 index 000000000..c0b6beffc Binary files /dev/null and b/public/terrain/19/858544/353953.terrain differ diff --git a/public/terrain/19/858544/353954.terrain b/public/terrain/19/858544/353954.terrain new file mode 100644 index 000000000..211a45119 Binary files /dev/null and b/public/terrain/19/858544/353954.terrain differ diff --git a/public/terrain/19/858544/353955.terrain b/public/terrain/19/858544/353955.terrain new file mode 100644 index 000000000..3fcebe290 Binary files /dev/null and b/public/terrain/19/858544/353955.terrain differ diff --git a/public/terrain/19/858544/353956.terrain b/public/terrain/19/858544/353956.terrain new file mode 100644 index 000000000..f74f32247 Binary files /dev/null and b/public/terrain/19/858544/353956.terrain differ diff --git a/public/terrain/19/858544/353957.terrain b/public/terrain/19/858544/353957.terrain new file mode 100644 index 000000000..51bf20b7b Binary files /dev/null and b/public/terrain/19/858544/353957.terrain differ diff --git a/public/terrain/19/858544/353958.terrain b/public/terrain/19/858544/353958.terrain new file mode 100644 index 000000000..48f1cc252 Binary files /dev/null and b/public/terrain/19/858544/353958.terrain differ diff --git a/public/terrain/19/858544/353959.terrain b/public/terrain/19/858544/353959.terrain new file mode 100644 index 000000000..889a8535b Binary files /dev/null and b/public/terrain/19/858544/353959.terrain differ diff --git a/public/terrain/19/858544/353960.terrain b/public/terrain/19/858544/353960.terrain new file mode 100644 index 000000000..2049bd8d1 Binary files /dev/null and b/public/terrain/19/858544/353960.terrain differ diff --git a/public/terrain/19/858544/353961.terrain b/public/terrain/19/858544/353961.terrain new file mode 100644 index 000000000..ff8968e96 Binary files /dev/null and b/public/terrain/19/858544/353961.terrain differ diff --git a/public/terrain/19/858544/353962.terrain b/public/terrain/19/858544/353962.terrain new file mode 100644 index 000000000..8daa5496e Binary files /dev/null and b/public/terrain/19/858544/353962.terrain differ diff --git a/public/terrain/19/858544/353963.terrain b/public/terrain/19/858544/353963.terrain new file mode 100644 index 000000000..85f2e29d3 Binary files /dev/null and b/public/terrain/19/858544/353963.terrain differ diff --git a/public/terrain/19/858544/353964.terrain b/public/terrain/19/858544/353964.terrain new file mode 100644 index 000000000..ac87f41bc Binary files /dev/null and b/public/terrain/19/858544/353964.terrain differ diff --git a/public/terrain/19/858544/353965.terrain b/public/terrain/19/858544/353965.terrain new file mode 100644 index 000000000..22e15fc36 Binary files /dev/null and b/public/terrain/19/858544/353965.terrain differ diff --git a/public/terrain/19/858544/353966.terrain b/public/terrain/19/858544/353966.terrain new file mode 100644 index 000000000..c71ee0bb4 Binary files /dev/null and b/public/terrain/19/858544/353966.terrain differ diff --git a/public/terrain/19/858544/353967.terrain b/public/terrain/19/858544/353967.terrain new file mode 100644 index 000000000..406956057 Binary files /dev/null and b/public/terrain/19/858544/353967.terrain differ diff --git a/public/terrain/19/858544/353968.terrain b/public/terrain/19/858544/353968.terrain new file mode 100644 index 000000000..7bbaa7ef5 Binary files /dev/null and b/public/terrain/19/858544/353968.terrain differ diff --git a/public/terrain/19/858544/353969.terrain b/public/terrain/19/858544/353969.terrain new file mode 100644 index 000000000..4baf60803 Binary files /dev/null and b/public/terrain/19/858544/353969.terrain differ diff --git a/public/terrain/19/858544/353970.terrain b/public/terrain/19/858544/353970.terrain new file mode 100644 index 000000000..0767356d9 Binary files /dev/null and b/public/terrain/19/858544/353970.terrain differ diff --git a/public/terrain/19/858544/353971.terrain b/public/terrain/19/858544/353971.terrain new file mode 100644 index 000000000..35a64fd4d Binary files /dev/null and b/public/terrain/19/858544/353971.terrain differ diff --git a/public/terrain/19/858544/353972.terrain b/public/terrain/19/858544/353972.terrain new file mode 100644 index 000000000..e80b3d74a Binary files /dev/null and b/public/terrain/19/858544/353972.terrain differ diff --git a/public/terrain/19/858544/353973.terrain b/public/terrain/19/858544/353973.terrain new file mode 100644 index 000000000..6f53662d0 Binary files /dev/null and b/public/terrain/19/858544/353973.terrain differ diff --git a/public/terrain/19/858544/353974.terrain b/public/terrain/19/858544/353974.terrain new file mode 100644 index 000000000..510b9d963 Binary files /dev/null and b/public/terrain/19/858544/353974.terrain differ diff --git a/public/terrain/19/858544/353975.terrain b/public/terrain/19/858544/353975.terrain new file mode 100644 index 000000000..954f5b0fe Binary files /dev/null and b/public/terrain/19/858544/353975.terrain differ diff --git a/public/terrain/19/858544/353976.terrain b/public/terrain/19/858544/353976.terrain new file mode 100644 index 000000000..13111f9f0 Binary files /dev/null and b/public/terrain/19/858544/353976.terrain differ diff --git a/public/terrain/19/858544/353977.terrain b/public/terrain/19/858544/353977.terrain new file mode 100644 index 000000000..1dfd39d75 Binary files /dev/null and b/public/terrain/19/858544/353977.terrain differ diff --git a/public/terrain/19/858544/353978.terrain b/public/terrain/19/858544/353978.terrain new file mode 100644 index 000000000..3ffb2531c Binary files /dev/null and b/public/terrain/19/858544/353978.terrain differ diff --git a/public/terrain/19/858544/353979.terrain b/public/terrain/19/858544/353979.terrain new file mode 100644 index 000000000..907e71881 Binary files /dev/null and b/public/terrain/19/858544/353979.terrain differ diff --git a/public/terrain/19/858544/353980.terrain b/public/terrain/19/858544/353980.terrain new file mode 100644 index 000000000..e36a8a296 Binary files /dev/null and b/public/terrain/19/858544/353980.terrain differ diff --git a/public/terrain/19/858544/353981.terrain b/public/terrain/19/858544/353981.terrain new file mode 100644 index 000000000..e835c81f9 Binary files /dev/null and b/public/terrain/19/858544/353981.terrain differ diff --git a/public/terrain/19/858544/353982.terrain b/public/terrain/19/858544/353982.terrain new file mode 100644 index 000000000..dfa897c9f Binary files /dev/null and b/public/terrain/19/858544/353982.terrain differ diff --git a/public/terrain/19/858544/353983.terrain b/public/terrain/19/858544/353983.terrain new file mode 100644 index 000000000..176659698 Binary files /dev/null and b/public/terrain/19/858544/353983.terrain differ diff --git a/public/terrain/19/858544/353984.terrain b/public/terrain/19/858544/353984.terrain new file mode 100644 index 000000000..6afd42da8 Binary files /dev/null and b/public/terrain/19/858544/353984.terrain differ diff --git a/public/terrain/19/858544/353985.terrain b/public/terrain/19/858544/353985.terrain new file mode 100644 index 000000000..faa993cbe Binary files /dev/null and b/public/terrain/19/858544/353985.terrain differ diff --git a/public/terrain/19/858544/353986.terrain b/public/terrain/19/858544/353986.terrain new file mode 100644 index 000000000..989b463be Binary files /dev/null and b/public/terrain/19/858544/353986.terrain differ diff --git a/public/terrain/19/858544/353987.terrain b/public/terrain/19/858544/353987.terrain new file mode 100644 index 000000000..1ef5b8829 Binary files /dev/null and b/public/terrain/19/858544/353987.terrain differ diff --git a/public/terrain/19/858544/353988.terrain b/public/terrain/19/858544/353988.terrain new file mode 100644 index 000000000..b6e605b41 Binary files /dev/null and b/public/terrain/19/858544/353988.terrain differ diff --git a/public/terrain/19/858544/353989.terrain b/public/terrain/19/858544/353989.terrain new file mode 100644 index 000000000..b86114d3d Binary files /dev/null and b/public/terrain/19/858544/353989.terrain differ diff --git a/public/terrain/19/858544/353990.terrain b/public/terrain/19/858544/353990.terrain new file mode 100644 index 000000000..acec5d44a Binary files /dev/null and b/public/terrain/19/858544/353990.terrain differ diff --git a/public/terrain/19/858544/353991.terrain b/public/terrain/19/858544/353991.terrain new file mode 100644 index 000000000..a0162eae8 Binary files /dev/null and b/public/terrain/19/858544/353991.terrain differ diff --git a/public/terrain/19/858544/353992.terrain b/public/terrain/19/858544/353992.terrain new file mode 100644 index 000000000..47b51eb67 Binary files /dev/null and b/public/terrain/19/858544/353992.terrain differ diff --git a/public/terrain/19/858544/353993.terrain b/public/terrain/19/858544/353993.terrain new file mode 100644 index 000000000..292bf69d5 Binary files /dev/null and b/public/terrain/19/858544/353993.terrain differ diff --git a/public/terrain/19/858544/353994.terrain b/public/terrain/19/858544/353994.terrain new file mode 100644 index 000000000..0843031b1 Binary files /dev/null and b/public/terrain/19/858544/353994.terrain differ diff --git a/public/terrain/19/858544/353995.terrain b/public/terrain/19/858544/353995.terrain new file mode 100644 index 000000000..b042b0f86 Binary files /dev/null and b/public/terrain/19/858544/353995.terrain differ diff --git a/public/terrain/19/858544/353996.terrain b/public/terrain/19/858544/353996.terrain new file mode 100644 index 000000000..f501fe0f7 Binary files /dev/null and b/public/terrain/19/858544/353996.terrain differ diff --git a/public/terrain/19/858544/353997.terrain b/public/terrain/19/858544/353997.terrain new file mode 100644 index 000000000..2dcf89f4e Binary files /dev/null and b/public/terrain/19/858544/353997.terrain differ diff --git a/public/terrain/19/858544/353998.terrain b/public/terrain/19/858544/353998.terrain new file mode 100644 index 000000000..8ba59af47 Binary files /dev/null and b/public/terrain/19/858544/353998.terrain differ diff --git a/public/terrain/19/858544/353999.terrain b/public/terrain/19/858544/353999.terrain new file mode 100644 index 000000000..843f734a2 Binary files /dev/null and b/public/terrain/19/858544/353999.terrain differ diff --git a/public/terrain/19/858544/354000.terrain b/public/terrain/19/858544/354000.terrain new file mode 100644 index 000000000..61b2a833f Binary files /dev/null and b/public/terrain/19/858544/354000.terrain differ diff --git a/public/terrain/19/858544/354001.terrain b/public/terrain/19/858544/354001.terrain new file mode 100644 index 000000000..8b1045744 Binary files /dev/null and b/public/terrain/19/858544/354001.terrain differ diff --git a/public/terrain/19/858544/354002.terrain b/public/terrain/19/858544/354002.terrain new file mode 100644 index 000000000..197a8ee78 Binary files /dev/null and b/public/terrain/19/858544/354002.terrain differ diff --git a/public/terrain/19/858544/354003.terrain b/public/terrain/19/858544/354003.terrain new file mode 100644 index 000000000..a7e0c502d Binary files /dev/null and b/public/terrain/19/858544/354003.terrain differ diff --git a/public/terrain/19/858544/354004.terrain b/public/terrain/19/858544/354004.terrain new file mode 100644 index 000000000..4e58b50c5 Binary files /dev/null and b/public/terrain/19/858544/354004.terrain differ diff --git a/public/terrain/19/858544/354005.terrain b/public/terrain/19/858544/354005.terrain new file mode 100644 index 000000000..e9cc5de2d Binary files /dev/null and b/public/terrain/19/858544/354005.terrain differ diff --git a/public/terrain/19/858544/354006.terrain b/public/terrain/19/858544/354006.terrain new file mode 100644 index 000000000..086c0cd54 Binary files /dev/null and b/public/terrain/19/858544/354006.terrain differ diff --git a/public/terrain/19/858544/354007.terrain b/public/terrain/19/858544/354007.terrain new file mode 100644 index 000000000..326e88dba Binary files /dev/null and b/public/terrain/19/858544/354007.terrain differ diff --git a/public/terrain/19/858544/354008.terrain b/public/terrain/19/858544/354008.terrain new file mode 100644 index 000000000..6a3a784f5 Binary files /dev/null and b/public/terrain/19/858544/354008.terrain differ diff --git a/public/terrain/19/858544/354009.terrain b/public/terrain/19/858544/354009.terrain new file mode 100644 index 000000000..f5313cea7 Binary files /dev/null and b/public/terrain/19/858544/354009.terrain differ diff --git a/public/terrain/19/858544/354010.terrain b/public/terrain/19/858544/354010.terrain new file mode 100644 index 000000000..14a00665d Binary files /dev/null and b/public/terrain/19/858544/354010.terrain differ diff --git a/public/terrain/19/858544/354011.terrain b/public/terrain/19/858544/354011.terrain new file mode 100644 index 000000000..cdae072ac Binary files /dev/null and b/public/terrain/19/858544/354011.terrain differ diff --git a/public/terrain/19/858544/354012.terrain b/public/terrain/19/858544/354012.terrain new file mode 100644 index 000000000..f0b128831 Binary files /dev/null and b/public/terrain/19/858544/354012.terrain differ diff --git a/public/terrain/19/858544/354013.terrain b/public/terrain/19/858544/354013.terrain new file mode 100644 index 000000000..69bfcf893 Binary files /dev/null and b/public/terrain/19/858544/354013.terrain differ diff --git a/public/terrain/19/858544/354014.terrain b/public/terrain/19/858544/354014.terrain new file mode 100644 index 000000000..6b9ac207b Binary files /dev/null and b/public/terrain/19/858544/354014.terrain differ diff --git a/public/terrain/19/858544/354015.terrain b/public/terrain/19/858544/354015.terrain new file mode 100644 index 000000000..cde3b1af5 Binary files /dev/null and b/public/terrain/19/858544/354015.terrain differ diff --git a/public/terrain/19/858544/354016.terrain b/public/terrain/19/858544/354016.terrain new file mode 100644 index 000000000..57bfccf08 Binary files /dev/null and b/public/terrain/19/858544/354016.terrain differ diff --git a/public/terrain/19/858544/354017.terrain b/public/terrain/19/858544/354017.terrain new file mode 100644 index 000000000..6c62fe4dc Binary files /dev/null and b/public/terrain/19/858544/354017.terrain differ diff --git a/public/terrain/19/858544/354018.terrain b/public/terrain/19/858544/354018.terrain new file mode 100644 index 000000000..686901b36 Binary files /dev/null and b/public/terrain/19/858544/354018.terrain differ diff --git a/public/terrain/19/858544/354019.terrain b/public/terrain/19/858544/354019.terrain new file mode 100644 index 000000000..9bd176cb3 Binary files /dev/null and b/public/terrain/19/858544/354019.terrain differ diff --git a/public/terrain/19/858544/354020.terrain b/public/terrain/19/858544/354020.terrain new file mode 100644 index 000000000..0d4f8f112 Binary files /dev/null and b/public/terrain/19/858544/354020.terrain differ diff --git a/public/terrain/19/858544/354021.terrain b/public/terrain/19/858544/354021.terrain new file mode 100644 index 000000000..c216fd1d1 Binary files /dev/null and b/public/terrain/19/858544/354021.terrain differ diff --git a/public/terrain/19/858544/354022.terrain b/public/terrain/19/858544/354022.terrain new file mode 100644 index 000000000..9d11bfd21 Binary files /dev/null and b/public/terrain/19/858544/354022.terrain differ diff --git a/public/terrain/19/858544/354023.terrain b/public/terrain/19/858544/354023.terrain new file mode 100644 index 000000000..bd43906b0 Binary files /dev/null and b/public/terrain/19/858544/354023.terrain differ diff --git a/public/terrain/19/858544/354024.terrain b/public/terrain/19/858544/354024.terrain new file mode 100644 index 000000000..947524194 Binary files /dev/null and b/public/terrain/19/858544/354024.terrain differ diff --git a/public/terrain/19/858544/354025.terrain b/public/terrain/19/858544/354025.terrain new file mode 100644 index 000000000..14f7866ef Binary files /dev/null and b/public/terrain/19/858544/354025.terrain differ diff --git a/public/terrain/19/858544/354026.terrain b/public/terrain/19/858544/354026.terrain new file mode 100644 index 000000000..f424a22b8 Binary files /dev/null and b/public/terrain/19/858544/354026.terrain differ diff --git a/public/terrain/19/858544/354027.terrain b/public/terrain/19/858544/354027.terrain new file mode 100644 index 000000000..9668b80be Binary files /dev/null and b/public/terrain/19/858544/354027.terrain differ diff --git a/public/terrain/19/858544/354028.terrain b/public/terrain/19/858544/354028.terrain new file mode 100644 index 000000000..4fdc2cf71 Binary files /dev/null and b/public/terrain/19/858544/354028.terrain differ diff --git a/public/terrain/19/858544/354029.terrain b/public/terrain/19/858544/354029.terrain new file mode 100644 index 000000000..5f4d7aebc Binary files /dev/null and b/public/terrain/19/858544/354029.terrain differ diff --git a/public/terrain/19/858544/354030.terrain b/public/terrain/19/858544/354030.terrain new file mode 100644 index 000000000..40f751339 Binary files /dev/null and b/public/terrain/19/858544/354030.terrain differ diff --git a/public/terrain/19/858544/354031.terrain b/public/terrain/19/858544/354031.terrain new file mode 100644 index 000000000..1015870ae Binary files /dev/null and b/public/terrain/19/858544/354031.terrain differ diff --git a/public/terrain/19/858544/354032.terrain b/public/terrain/19/858544/354032.terrain new file mode 100644 index 000000000..637c4dd6c Binary files /dev/null and b/public/terrain/19/858544/354032.terrain differ diff --git a/public/terrain/19/858544/354033.terrain b/public/terrain/19/858544/354033.terrain new file mode 100644 index 000000000..9348100c0 Binary files /dev/null and b/public/terrain/19/858544/354033.terrain differ diff --git a/public/terrain/19/858544/354034.terrain b/public/terrain/19/858544/354034.terrain new file mode 100644 index 000000000..0865fef52 Binary files /dev/null and b/public/terrain/19/858544/354034.terrain differ diff --git a/public/terrain/19/858544/354035.terrain b/public/terrain/19/858544/354035.terrain new file mode 100644 index 000000000..46f8b75dd Binary files /dev/null and b/public/terrain/19/858544/354035.terrain differ diff --git a/public/terrain/19/858544/354036.terrain b/public/terrain/19/858544/354036.terrain new file mode 100644 index 000000000..449d10b37 Binary files /dev/null and b/public/terrain/19/858544/354036.terrain differ diff --git a/public/terrain/19/858544/354037.terrain b/public/terrain/19/858544/354037.terrain new file mode 100644 index 000000000..07ceb16ff Binary files /dev/null and b/public/terrain/19/858544/354037.terrain differ diff --git a/public/terrain/19/858544/354038.terrain b/public/terrain/19/858544/354038.terrain new file mode 100644 index 000000000..b94bbcd57 Binary files /dev/null and b/public/terrain/19/858544/354038.terrain differ diff --git a/public/terrain/19/858544/354039.terrain b/public/terrain/19/858544/354039.terrain new file mode 100644 index 000000000..db3d7b6a3 Binary files /dev/null and b/public/terrain/19/858544/354039.terrain differ diff --git a/public/terrain/19/858544/354040.terrain b/public/terrain/19/858544/354040.terrain new file mode 100644 index 000000000..a0f99f683 Binary files /dev/null and b/public/terrain/19/858544/354040.terrain differ diff --git a/public/terrain/19/858544/354041.terrain b/public/terrain/19/858544/354041.terrain new file mode 100644 index 000000000..8d345d5c5 Binary files /dev/null and b/public/terrain/19/858544/354041.terrain differ diff --git a/public/terrain/19/858544/354042.terrain b/public/terrain/19/858544/354042.terrain new file mode 100644 index 000000000..fa94c074a Binary files /dev/null and b/public/terrain/19/858544/354042.terrain differ diff --git a/public/terrain/19/858544/354043.terrain b/public/terrain/19/858544/354043.terrain new file mode 100644 index 000000000..4f09588fc Binary files /dev/null and b/public/terrain/19/858544/354043.terrain differ diff --git a/public/terrain/19/858544/354044.terrain b/public/terrain/19/858544/354044.terrain new file mode 100644 index 000000000..27034c526 Binary files /dev/null and b/public/terrain/19/858544/354044.terrain differ diff --git a/public/terrain/19/858544/354045.terrain b/public/terrain/19/858544/354045.terrain new file mode 100644 index 000000000..260b3cca3 Binary files /dev/null and b/public/terrain/19/858544/354045.terrain differ diff --git a/public/terrain/19/858544/354046.terrain b/public/terrain/19/858544/354046.terrain new file mode 100644 index 000000000..1e146d1b3 Binary files /dev/null and b/public/terrain/19/858544/354046.terrain differ diff --git a/public/terrain/19/858544/354047.terrain b/public/terrain/19/858544/354047.terrain new file mode 100644 index 000000000..4292e8cb5 Binary files /dev/null and b/public/terrain/19/858544/354047.terrain differ diff --git a/public/terrain/19/858544/354048.terrain b/public/terrain/19/858544/354048.terrain new file mode 100644 index 000000000..5fc8ff9c2 Binary files /dev/null and b/public/terrain/19/858544/354048.terrain differ diff --git a/public/terrain/19/858544/354049.terrain b/public/terrain/19/858544/354049.terrain new file mode 100644 index 000000000..7d9e8da21 Binary files /dev/null and b/public/terrain/19/858544/354049.terrain differ diff --git a/public/terrain/19/858544/354050.terrain b/public/terrain/19/858544/354050.terrain new file mode 100644 index 000000000..5b0a3adb2 Binary files /dev/null and b/public/terrain/19/858544/354050.terrain differ diff --git a/public/terrain/19/858544/354051.terrain b/public/terrain/19/858544/354051.terrain new file mode 100644 index 000000000..ea40858fa Binary files /dev/null and b/public/terrain/19/858544/354051.terrain differ diff --git a/public/terrain/19/858544/354052.terrain b/public/terrain/19/858544/354052.terrain new file mode 100644 index 000000000..fbbd71718 Binary files /dev/null and b/public/terrain/19/858544/354052.terrain differ diff --git a/public/terrain/19/858544/354053.terrain b/public/terrain/19/858544/354053.terrain new file mode 100644 index 000000000..66a95d3e1 Binary files /dev/null and b/public/terrain/19/858544/354053.terrain differ diff --git a/public/terrain/19/858544/354054.terrain b/public/terrain/19/858544/354054.terrain new file mode 100644 index 000000000..2da6791a0 Binary files /dev/null and b/public/terrain/19/858544/354054.terrain differ diff --git a/public/terrain/19/858544/354055.terrain b/public/terrain/19/858544/354055.terrain new file mode 100644 index 000000000..372fcd15d Binary files /dev/null and b/public/terrain/19/858544/354055.terrain differ diff --git a/public/terrain/19/858544/354056.terrain b/public/terrain/19/858544/354056.terrain new file mode 100644 index 000000000..c318028f6 Binary files /dev/null and b/public/terrain/19/858544/354056.terrain differ diff --git a/public/terrain/19/858544/354057.terrain b/public/terrain/19/858544/354057.terrain new file mode 100644 index 000000000..e502a00d9 Binary files /dev/null and b/public/terrain/19/858544/354057.terrain differ diff --git a/public/terrain/19/858544/354058.terrain b/public/terrain/19/858544/354058.terrain new file mode 100644 index 000000000..30d33757f Binary files /dev/null and b/public/terrain/19/858544/354058.terrain differ diff --git a/public/terrain/19/858544/354059.terrain b/public/terrain/19/858544/354059.terrain new file mode 100644 index 000000000..080805080 Binary files /dev/null and b/public/terrain/19/858544/354059.terrain differ diff --git a/public/terrain/19/858545/353743.terrain b/public/terrain/19/858545/353743.terrain new file mode 100644 index 000000000..3e57b7fa0 Binary files /dev/null and b/public/terrain/19/858545/353743.terrain differ diff --git a/public/terrain/19/858545/353744.terrain b/public/terrain/19/858545/353744.terrain new file mode 100644 index 000000000..b911188e2 Binary files /dev/null and b/public/terrain/19/858545/353744.terrain differ diff --git a/public/terrain/19/858545/353745.terrain b/public/terrain/19/858545/353745.terrain new file mode 100644 index 000000000..cd422a161 Binary files /dev/null and b/public/terrain/19/858545/353745.terrain differ diff --git a/public/terrain/19/858545/353746.terrain b/public/terrain/19/858545/353746.terrain new file mode 100644 index 000000000..6dcfa83ee Binary files /dev/null and b/public/terrain/19/858545/353746.terrain differ diff --git a/public/terrain/19/858545/353747.terrain b/public/terrain/19/858545/353747.terrain new file mode 100644 index 000000000..fc3640e84 Binary files /dev/null and b/public/terrain/19/858545/353747.terrain differ diff --git a/public/terrain/19/858545/353748.terrain b/public/terrain/19/858545/353748.terrain new file mode 100644 index 000000000..1109ddfc8 Binary files /dev/null and b/public/terrain/19/858545/353748.terrain differ diff --git a/public/terrain/19/858545/353749.terrain b/public/terrain/19/858545/353749.terrain new file mode 100644 index 000000000..1def7fa7f Binary files /dev/null and b/public/terrain/19/858545/353749.terrain differ diff --git a/public/terrain/19/858545/353750.terrain b/public/terrain/19/858545/353750.terrain new file mode 100644 index 000000000..cea33189c Binary files /dev/null and b/public/terrain/19/858545/353750.terrain differ diff --git a/public/terrain/19/858545/353751.terrain b/public/terrain/19/858545/353751.terrain new file mode 100644 index 000000000..29552d871 Binary files /dev/null and b/public/terrain/19/858545/353751.terrain differ diff --git a/public/terrain/19/858545/353752.terrain b/public/terrain/19/858545/353752.terrain new file mode 100644 index 000000000..8e85921fc Binary files /dev/null and b/public/terrain/19/858545/353752.terrain differ diff --git a/public/terrain/19/858545/353753.terrain b/public/terrain/19/858545/353753.terrain new file mode 100644 index 000000000..f2cf33f99 Binary files /dev/null and b/public/terrain/19/858545/353753.terrain differ diff --git a/public/terrain/19/858545/353754.terrain b/public/terrain/19/858545/353754.terrain new file mode 100644 index 000000000..67c013d8e Binary files /dev/null and b/public/terrain/19/858545/353754.terrain differ diff --git a/public/terrain/19/858545/353755.terrain b/public/terrain/19/858545/353755.terrain new file mode 100644 index 000000000..14e27a06e Binary files /dev/null and b/public/terrain/19/858545/353755.terrain differ diff --git a/public/terrain/19/858545/353756.terrain b/public/terrain/19/858545/353756.terrain new file mode 100644 index 000000000..5d8e97f7c Binary files /dev/null and b/public/terrain/19/858545/353756.terrain differ diff --git a/public/terrain/19/858545/353757.terrain b/public/terrain/19/858545/353757.terrain new file mode 100644 index 000000000..eadbf37e6 Binary files /dev/null and b/public/terrain/19/858545/353757.terrain differ diff --git a/public/terrain/19/858545/353758.terrain b/public/terrain/19/858545/353758.terrain new file mode 100644 index 000000000..9ba699e68 Binary files /dev/null and b/public/terrain/19/858545/353758.terrain differ diff --git a/public/terrain/19/858545/353759.terrain b/public/terrain/19/858545/353759.terrain new file mode 100644 index 000000000..d015293e4 Binary files /dev/null and b/public/terrain/19/858545/353759.terrain differ diff --git a/public/terrain/19/858545/353760.terrain b/public/terrain/19/858545/353760.terrain new file mode 100644 index 000000000..bdc39db80 Binary files /dev/null and b/public/terrain/19/858545/353760.terrain differ diff --git a/public/terrain/19/858545/353761.terrain b/public/terrain/19/858545/353761.terrain new file mode 100644 index 000000000..f9809c796 Binary files /dev/null and b/public/terrain/19/858545/353761.terrain differ diff --git a/public/terrain/19/858545/353762.terrain b/public/terrain/19/858545/353762.terrain new file mode 100644 index 000000000..5e852abef Binary files /dev/null and b/public/terrain/19/858545/353762.terrain differ diff --git a/public/terrain/19/858545/353763.terrain b/public/terrain/19/858545/353763.terrain new file mode 100644 index 000000000..c733aab88 Binary files /dev/null and b/public/terrain/19/858545/353763.terrain differ diff --git a/public/terrain/19/858545/353764.terrain b/public/terrain/19/858545/353764.terrain new file mode 100644 index 000000000..4a1d77d51 Binary files /dev/null and b/public/terrain/19/858545/353764.terrain differ diff --git a/public/terrain/19/858545/353765.terrain b/public/terrain/19/858545/353765.terrain new file mode 100644 index 000000000..76dde4aad Binary files /dev/null and b/public/terrain/19/858545/353765.terrain differ diff --git a/public/terrain/19/858545/353766.terrain b/public/terrain/19/858545/353766.terrain new file mode 100644 index 000000000..55a162b09 Binary files /dev/null and b/public/terrain/19/858545/353766.terrain differ diff --git a/public/terrain/19/858545/353767.terrain b/public/terrain/19/858545/353767.terrain new file mode 100644 index 000000000..6dd90984b Binary files /dev/null and b/public/terrain/19/858545/353767.terrain differ diff --git a/public/terrain/19/858545/353768.terrain b/public/terrain/19/858545/353768.terrain new file mode 100644 index 000000000..6e38d32b6 Binary files /dev/null and b/public/terrain/19/858545/353768.terrain differ diff --git a/public/terrain/19/858545/353769.terrain b/public/terrain/19/858545/353769.terrain new file mode 100644 index 000000000..f0d3ad7c0 Binary files /dev/null and b/public/terrain/19/858545/353769.terrain differ diff --git a/public/terrain/19/858545/353770.terrain b/public/terrain/19/858545/353770.terrain new file mode 100644 index 000000000..49beeb6a9 Binary files /dev/null and b/public/terrain/19/858545/353770.terrain differ diff --git a/public/terrain/19/858545/353771.terrain b/public/terrain/19/858545/353771.terrain new file mode 100644 index 000000000..882fc5acc Binary files /dev/null and b/public/terrain/19/858545/353771.terrain differ diff --git a/public/terrain/19/858545/353772.terrain b/public/terrain/19/858545/353772.terrain new file mode 100644 index 000000000..d42fb5e24 Binary files /dev/null and b/public/terrain/19/858545/353772.terrain differ diff --git a/public/terrain/19/858545/353773.terrain b/public/terrain/19/858545/353773.terrain new file mode 100644 index 000000000..637ce71f8 Binary files /dev/null and b/public/terrain/19/858545/353773.terrain differ diff --git a/public/terrain/19/858545/353774.terrain b/public/terrain/19/858545/353774.terrain new file mode 100644 index 000000000..317ced96d Binary files /dev/null and b/public/terrain/19/858545/353774.terrain differ diff --git a/public/terrain/19/858545/353775.terrain b/public/terrain/19/858545/353775.terrain new file mode 100644 index 000000000..847288c06 Binary files /dev/null and b/public/terrain/19/858545/353775.terrain differ diff --git a/public/terrain/19/858545/353776.terrain b/public/terrain/19/858545/353776.terrain new file mode 100644 index 000000000..aaed81e13 Binary files /dev/null and b/public/terrain/19/858545/353776.terrain differ diff --git a/public/terrain/19/858545/353777.terrain b/public/terrain/19/858545/353777.terrain new file mode 100644 index 000000000..00a74fbf2 Binary files /dev/null and b/public/terrain/19/858545/353777.terrain differ diff --git a/public/terrain/19/858545/353778.terrain b/public/terrain/19/858545/353778.terrain new file mode 100644 index 000000000..5e63f0cff Binary files /dev/null and b/public/terrain/19/858545/353778.terrain differ diff --git a/public/terrain/19/858545/353779.terrain b/public/terrain/19/858545/353779.terrain new file mode 100644 index 000000000..69d7e69a2 Binary files /dev/null and b/public/terrain/19/858545/353779.terrain differ diff --git a/public/terrain/19/858545/353780.terrain b/public/terrain/19/858545/353780.terrain new file mode 100644 index 000000000..67dadf5fb Binary files /dev/null and b/public/terrain/19/858545/353780.terrain differ diff --git a/public/terrain/19/858545/353781.terrain b/public/terrain/19/858545/353781.terrain new file mode 100644 index 000000000..334c8af25 Binary files /dev/null and b/public/terrain/19/858545/353781.terrain differ diff --git a/public/terrain/19/858545/353782.terrain b/public/terrain/19/858545/353782.terrain new file mode 100644 index 000000000..eaf5b4d02 Binary files /dev/null and b/public/terrain/19/858545/353782.terrain differ diff --git a/public/terrain/19/858545/353783.terrain b/public/terrain/19/858545/353783.terrain new file mode 100644 index 000000000..d545c4f20 Binary files /dev/null and b/public/terrain/19/858545/353783.terrain differ diff --git a/public/terrain/19/858545/353784.terrain b/public/terrain/19/858545/353784.terrain new file mode 100644 index 000000000..0b977c344 Binary files /dev/null and b/public/terrain/19/858545/353784.terrain differ diff --git a/public/terrain/19/858545/353785.terrain b/public/terrain/19/858545/353785.terrain new file mode 100644 index 000000000..594ad3036 Binary files /dev/null and b/public/terrain/19/858545/353785.terrain differ diff --git a/public/terrain/19/858545/353786.terrain b/public/terrain/19/858545/353786.terrain new file mode 100644 index 000000000..c7b49b5a7 Binary files /dev/null and b/public/terrain/19/858545/353786.terrain differ diff --git a/public/terrain/19/858545/353787.terrain b/public/terrain/19/858545/353787.terrain new file mode 100644 index 000000000..00d3c0d30 Binary files /dev/null and b/public/terrain/19/858545/353787.terrain differ diff --git a/public/terrain/19/858545/353788.terrain b/public/terrain/19/858545/353788.terrain new file mode 100644 index 000000000..c486f90f2 Binary files /dev/null and b/public/terrain/19/858545/353788.terrain differ diff --git a/public/terrain/19/858545/353789.terrain b/public/terrain/19/858545/353789.terrain new file mode 100644 index 000000000..1cf91e126 Binary files /dev/null and b/public/terrain/19/858545/353789.terrain differ diff --git a/public/terrain/19/858545/353790.terrain b/public/terrain/19/858545/353790.terrain new file mode 100644 index 000000000..56bfe016d Binary files /dev/null and b/public/terrain/19/858545/353790.terrain differ diff --git a/public/terrain/19/858545/353791.terrain b/public/terrain/19/858545/353791.terrain new file mode 100644 index 000000000..49567d1e5 Binary files /dev/null and b/public/terrain/19/858545/353791.terrain differ diff --git a/public/terrain/19/858545/353792.terrain b/public/terrain/19/858545/353792.terrain new file mode 100644 index 000000000..48bbb6038 Binary files /dev/null and b/public/terrain/19/858545/353792.terrain differ diff --git a/public/terrain/19/858545/353793.terrain b/public/terrain/19/858545/353793.terrain new file mode 100644 index 000000000..e4d7e1834 Binary files /dev/null and b/public/terrain/19/858545/353793.terrain differ diff --git a/public/terrain/19/858545/353794.terrain b/public/terrain/19/858545/353794.terrain new file mode 100644 index 000000000..f3beb0787 Binary files /dev/null and b/public/terrain/19/858545/353794.terrain differ diff --git a/public/terrain/19/858545/353795.terrain b/public/terrain/19/858545/353795.terrain new file mode 100644 index 000000000..13822f961 Binary files /dev/null and b/public/terrain/19/858545/353795.terrain differ diff --git a/public/terrain/19/858545/353796.terrain b/public/terrain/19/858545/353796.terrain new file mode 100644 index 000000000..29ffcf484 Binary files /dev/null and b/public/terrain/19/858545/353796.terrain differ diff --git a/public/terrain/19/858545/353797.terrain b/public/terrain/19/858545/353797.terrain new file mode 100644 index 000000000..39044e645 Binary files /dev/null and b/public/terrain/19/858545/353797.terrain differ diff --git a/public/terrain/19/858545/353798.terrain b/public/terrain/19/858545/353798.terrain new file mode 100644 index 000000000..6775d9178 Binary files /dev/null and b/public/terrain/19/858545/353798.terrain differ diff --git a/public/terrain/19/858545/353799.terrain b/public/terrain/19/858545/353799.terrain new file mode 100644 index 000000000..8fcca94ca Binary files /dev/null and b/public/terrain/19/858545/353799.terrain differ diff --git a/public/terrain/19/858545/353800.terrain b/public/terrain/19/858545/353800.terrain new file mode 100644 index 000000000..313504e1a Binary files /dev/null and b/public/terrain/19/858545/353800.terrain differ diff --git a/public/terrain/19/858545/353801.terrain b/public/terrain/19/858545/353801.terrain new file mode 100644 index 000000000..c5b27e8cc Binary files /dev/null and b/public/terrain/19/858545/353801.terrain differ diff --git a/public/terrain/19/858545/353802.terrain b/public/terrain/19/858545/353802.terrain new file mode 100644 index 000000000..835622bea Binary files /dev/null and b/public/terrain/19/858545/353802.terrain differ diff --git a/public/terrain/19/858545/353803.terrain b/public/terrain/19/858545/353803.terrain new file mode 100644 index 000000000..3bcac9def Binary files /dev/null and b/public/terrain/19/858545/353803.terrain differ diff --git a/public/terrain/19/858545/353804.terrain b/public/terrain/19/858545/353804.terrain new file mode 100644 index 000000000..5a04d9857 Binary files /dev/null and b/public/terrain/19/858545/353804.terrain differ diff --git a/public/terrain/19/858545/353805.terrain b/public/terrain/19/858545/353805.terrain new file mode 100644 index 000000000..6fae803a7 Binary files /dev/null and b/public/terrain/19/858545/353805.terrain differ diff --git a/public/terrain/19/858545/353806.terrain b/public/terrain/19/858545/353806.terrain new file mode 100644 index 000000000..c7b7d223d Binary files /dev/null and b/public/terrain/19/858545/353806.terrain differ diff --git a/public/terrain/19/858545/353807.terrain b/public/terrain/19/858545/353807.terrain new file mode 100644 index 000000000..87cf0fa0f Binary files /dev/null and b/public/terrain/19/858545/353807.terrain differ diff --git a/public/terrain/19/858545/353808.terrain b/public/terrain/19/858545/353808.terrain new file mode 100644 index 000000000..e350de0cd Binary files /dev/null and b/public/terrain/19/858545/353808.terrain differ diff --git a/public/terrain/19/858545/353809.terrain b/public/terrain/19/858545/353809.terrain new file mode 100644 index 000000000..f6cdd126f Binary files /dev/null and b/public/terrain/19/858545/353809.terrain differ diff --git a/public/terrain/19/858545/353810.terrain b/public/terrain/19/858545/353810.terrain new file mode 100644 index 000000000..af3f3807c Binary files /dev/null and b/public/terrain/19/858545/353810.terrain differ diff --git a/public/terrain/19/858545/353811.terrain b/public/terrain/19/858545/353811.terrain new file mode 100644 index 000000000..1b8f64052 Binary files /dev/null and b/public/terrain/19/858545/353811.terrain differ diff --git a/public/terrain/19/858545/353812.terrain b/public/terrain/19/858545/353812.terrain new file mode 100644 index 000000000..0150e4e82 Binary files /dev/null and b/public/terrain/19/858545/353812.terrain differ diff --git a/public/terrain/19/858545/353813.terrain b/public/terrain/19/858545/353813.terrain new file mode 100644 index 000000000..c740f2279 Binary files /dev/null and b/public/terrain/19/858545/353813.terrain differ diff --git a/public/terrain/19/858545/353814.terrain b/public/terrain/19/858545/353814.terrain new file mode 100644 index 000000000..6fd80c2ff Binary files /dev/null and b/public/terrain/19/858545/353814.terrain differ diff --git a/public/terrain/19/858545/353815.terrain b/public/terrain/19/858545/353815.terrain new file mode 100644 index 000000000..d8834cacd Binary files /dev/null and b/public/terrain/19/858545/353815.terrain differ diff --git a/public/terrain/19/858545/353816.terrain b/public/terrain/19/858545/353816.terrain new file mode 100644 index 000000000..4104711f6 Binary files /dev/null and b/public/terrain/19/858545/353816.terrain differ diff --git a/public/terrain/19/858545/353817.terrain b/public/terrain/19/858545/353817.terrain new file mode 100644 index 000000000..3c01a6f92 Binary files /dev/null and b/public/terrain/19/858545/353817.terrain differ diff --git a/public/terrain/19/858545/353818.terrain b/public/terrain/19/858545/353818.terrain new file mode 100644 index 000000000..f4c923c48 Binary files /dev/null and b/public/terrain/19/858545/353818.terrain differ diff --git a/public/terrain/19/858545/353819.terrain b/public/terrain/19/858545/353819.terrain new file mode 100644 index 000000000..0add09787 Binary files /dev/null and b/public/terrain/19/858545/353819.terrain differ diff --git a/public/terrain/19/858545/353820.terrain b/public/terrain/19/858545/353820.terrain new file mode 100644 index 000000000..020b84482 Binary files /dev/null and b/public/terrain/19/858545/353820.terrain differ diff --git a/public/terrain/19/858545/353821.terrain b/public/terrain/19/858545/353821.terrain new file mode 100644 index 000000000..4469e47b4 Binary files /dev/null and b/public/terrain/19/858545/353821.terrain differ diff --git a/public/terrain/19/858545/353822.terrain b/public/terrain/19/858545/353822.terrain new file mode 100644 index 000000000..5715dc429 Binary files /dev/null and b/public/terrain/19/858545/353822.terrain differ diff --git a/public/terrain/19/858545/353823.terrain b/public/terrain/19/858545/353823.terrain new file mode 100644 index 000000000..5d6af5c8e Binary files /dev/null and b/public/terrain/19/858545/353823.terrain differ diff --git a/public/terrain/19/858545/353824.terrain b/public/terrain/19/858545/353824.terrain new file mode 100644 index 000000000..4be2b326b Binary files /dev/null and b/public/terrain/19/858545/353824.terrain differ diff --git a/public/terrain/19/858545/353825.terrain b/public/terrain/19/858545/353825.terrain new file mode 100644 index 000000000..b43af2d29 Binary files /dev/null and b/public/terrain/19/858545/353825.terrain differ diff --git a/public/terrain/19/858545/353826.terrain b/public/terrain/19/858545/353826.terrain new file mode 100644 index 000000000..85e7191f9 Binary files /dev/null and b/public/terrain/19/858545/353826.terrain differ diff --git a/public/terrain/19/858545/353827.terrain b/public/terrain/19/858545/353827.terrain new file mode 100644 index 000000000..79c5c5037 Binary files /dev/null and b/public/terrain/19/858545/353827.terrain differ diff --git a/public/terrain/19/858545/353828.terrain b/public/terrain/19/858545/353828.terrain new file mode 100644 index 000000000..1189ee0c0 Binary files /dev/null and b/public/terrain/19/858545/353828.terrain differ diff --git a/public/terrain/19/858545/353829.terrain b/public/terrain/19/858545/353829.terrain new file mode 100644 index 000000000..5e45a33e4 Binary files /dev/null and b/public/terrain/19/858545/353829.terrain differ diff --git a/public/terrain/19/858545/353830.terrain b/public/terrain/19/858545/353830.terrain new file mode 100644 index 000000000..f7c685b13 Binary files /dev/null and b/public/terrain/19/858545/353830.terrain differ diff --git a/public/terrain/19/858545/353831.terrain b/public/terrain/19/858545/353831.terrain new file mode 100644 index 000000000..c4191f672 Binary files /dev/null and b/public/terrain/19/858545/353831.terrain differ diff --git a/public/terrain/19/858545/353832.terrain b/public/terrain/19/858545/353832.terrain new file mode 100644 index 000000000..f8d3a1d7c Binary files /dev/null and b/public/terrain/19/858545/353832.terrain differ diff --git a/public/terrain/19/858545/353833.terrain b/public/terrain/19/858545/353833.terrain new file mode 100644 index 000000000..509876beb Binary files /dev/null and b/public/terrain/19/858545/353833.terrain differ diff --git a/public/terrain/19/858545/353834.terrain b/public/terrain/19/858545/353834.terrain new file mode 100644 index 000000000..3b3647409 Binary files /dev/null and b/public/terrain/19/858545/353834.terrain differ diff --git a/public/terrain/19/858545/353835.terrain b/public/terrain/19/858545/353835.terrain new file mode 100644 index 000000000..832a21699 Binary files /dev/null and b/public/terrain/19/858545/353835.terrain differ diff --git a/public/terrain/19/858545/353836.terrain b/public/terrain/19/858545/353836.terrain new file mode 100644 index 000000000..ae6533ec9 Binary files /dev/null and b/public/terrain/19/858545/353836.terrain differ diff --git a/public/terrain/19/858545/353837.terrain b/public/terrain/19/858545/353837.terrain new file mode 100644 index 000000000..349a651bf Binary files /dev/null and b/public/terrain/19/858545/353837.terrain differ diff --git a/public/terrain/19/858545/353838.terrain b/public/terrain/19/858545/353838.terrain new file mode 100644 index 000000000..094b6256d Binary files /dev/null and b/public/terrain/19/858545/353838.terrain differ diff --git a/public/terrain/19/858545/353839.terrain b/public/terrain/19/858545/353839.terrain new file mode 100644 index 000000000..8a9935806 Binary files /dev/null and b/public/terrain/19/858545/353839.terrain differ diff --git a/public/terrain/19/858545/353840.terrain b/public/terrain/19/858545/353840.terrain new file mode 100644 index 000000000..9a60fa0c7 Binary files /dev/null and b/public/terrain/19/858545/353840.terrain differ diff --git a/public/terrain/19/858545/353841.terrain b/public/terrain/19/858545/353841.terrain new file mode 100644 index 000000000..28178af1d Binary files /dev/null and b/public/terrain/19/858545/353841.terrain differ diff --git a/public/terrain/19/858545/353842.terrain b/public/terrain/19/858545/353842.terrain new file mode 100644 index 000000000..1c5b8f642 Binary files /dev/null and b/public/terrain/19/858545/353842.terrain differ diff --git a/public/terrain/19/858545/353843.terrain b/public/terrain/19/858545/353843.terrain new file mode 100644 index 000000000..6e3c8fb7e Binary files /dev/null and b/public/terrain/19/858545/353843.terrain differ diff --git a/public/terrain/19/858545/353844.terrain b/public/terrain/19/858545/353844.terrain new file mode 100644 index 000000000..7a43cbace Binary files /dev/null and b/public/terrain/19/858545/353844.terrain differ diff --git a/public/terrain/19/858545/353845.terrain b/public/terrain/19/858545/353845.terrain new file mode 100644 index 000000000..8d6a19b43 Binary files /dev/null and b/public/terrain/19/858545/353845.terrain differ diff --git a/public/terrain/19/858545/353846.terrain b/public/terrain/19/858545/353846.terrain new file mode 100644 index 000000000..63ad8c017 Binary files /dev/null and b/public/terrain/19/858545/353846.terrain differ diff --git a/public/terrain/19/858545/353847.terrain b/public/terrain/19/858545/353847.terrain new file mode 100644 index 000000000..c79c44101 Binary files /dev/null and b/public/terrain/19/858545/353847.terrain differ diff --git a/public/terrain/19/858545/353848.terrain b/public/terrain/19/858545/353848.terrain new file mode 100644 index 000000000..7acddbdaa Binary files /dev/null and b/public/terrain/19/858545/353848.terrain differ diff --git a/public/terrain/19/858545/353849.terrain b/public/terrain/19/858545/353849.terrain new file mode 100644 index 000000000..615435207 Binary files /dev/null and b/public/terrain/19/858545/353849.terrain differ diff --git a/public/terrain/19/858545/353850.terrain b/public/terrain/19/858545/353850.terrain new file mode 100644 index 000000000..6ca3b3c85 Binary files /dev/null and b/public/terrain/19/858545/353850.terrain differ diff --git a/public/terrain/19/858545/353851.terrain b/public/terrain/19/858545/353851.terrain new file mode 100644 index 000000000..8d1b9c6ef Binary files /dev/null and b/public/terrain/19/858545/353851.terrain differ diff --git a/public/terrain/19/858545/353852.terrain b/public/terrain/19/858545/353852.terrain new file mode 100644 index 000000000..ce427f9df Binary files /dev/null and b/public/terrain/19/858545/353852.terrain differ diff --git a/public/terrain/19/858545/353853.terrain b/public/terrain/19/858545/353853.terrain new file mode 100644 index 000000000..6e89cfe65 Binary files /dev/null and b/public/terrain/19/858545/353853.terrain differ diff --git a/public/terrain/19/858545/353854.terrain b/public/terrain/19/858545/353854.terrain new file mode 100644 index 000000000..fd1dbea75 Binary files /dev/null and b/public/terrain/19/858545/353854.terrain differ diff --git a/public/terrain/19/858545/353855.terrain b/public/terrain/19/858545/353855.terrain new file mode 100644 index 000000000..73208b351 Binary files /dev/null and b/public/terrain/19/858545/353855.terrain differ diff --git a/public/terrain/19/858545/353856.terrain b/public/terrain/19/858545/353856.terrain new file mode 100644 index 000000000..ef605cf11 Binary files /dev/null and b/public/terrain/19/858545/353856.terrain differ diff --git a/public/terrain/19/858545/353857.terrain b/public/terrain/19/858545/353857.terrain new file mode 100644 index 000000000..493375408 Binary files /dev/null and b/public/terrain/19/858545/353857.terrain differ diff --git a/public/terrain/19/858545/353858.terrain b/public/terrain/19/858545/353858.terrain new file mode 100644 index 000000000..189c40a3e Binary files /dev/null and b/public/terrain/19/858545/353858.terrain differ diff --git a/public/terrain/19/858545/353859.terrain b/public/terrain/19/858545/353859.terrain new file mode 100644 index 000000000..ad1f9646b Binary files /dev/null and b/public/terrain/19/858545/353859.terrain differ diff --git a/public/terrain/19/858545/353860.terrain b/public/terrain/19/858545/353860.terrain new file mode 100644 index 000000000..f68b5b445 Binary files /dev/null and b/public/terrain/19/858545/353860.terrain differ diff --git a/public/terrain/19/858545/353861.terrain b/public/terrain/19/858545/353861.terrain new file mode 100644 index 000000000..1f3561e31 Binary files /dev/null and b/public/terrain/19/858545/353861.terrain differ diff --git a/public/terrain/19/858545/353862.terrain b/public/terrain/19/858545/353862.terrain new file mode 100644 index 000000000..f411706da Binary files /dev/null and b/public/terrain/19/858545/353862.terrain differ diff --git a/public/terrain/19/858545/353863.terrain b/public/terrain/19/858545/353863.terrain new file mode 100644 index 000000000..f06975e1d Binary files /dev/null and b/public/terrain/19/858545/353863.terrain differ diff --git a/public/terrain/19/858545/353864.terrain b/public/terrain/19/858545/353864.terrain new file mode 100644 index 000000000..6e2bd5aa1 Binary files /dev/null and b/public/terrain/19/858545/353864.terrain differ diff --git a/public/terrain/19/858545/353865.terrain b/public/terrain/19/858545/353865.terrain new file mode 100644 index 000000000..31263e8bf Binary files /dev/null and b/public/terrain/19/858545/353865.terrain differ diff --git a/public/terrain/19/858545/353866.terrain b/public/terrain/19/858545/353866.terrain new file mode 100644 index 000000000..b1808b6ae Binary files /dev/null and b/public/terrain/19/858545/353866.terrain differ diff --git a/public/terrain/19/858545/353867.terrain b/public/terrain/19/858545/353867.terrain new file mode 100644 index 000000000..81486ef81 Binary files /dev/null and b/public/terrain/19/858545/353867.terrain differ diff --git a/public/terrain/19/858545/353868.terrain b/public/terrain/19/858545/353868.terrain new file mode 100644 index 000000000..9f3b03bc1 Binary files /dev/null and b/public/terrain/19/858545/353868.terrain differ diff --git a/public/terrain/19/858545/353869.terrain b/public/terrain/19/858545/353869.terrain new file mode 100644 index 000000000..f8f737889 Binary files /dev/null and b/public/terrain/19/858545/353869.terrain differ diff --git a/public/terrain/19/858545/353870.terrain b/public/terrain/19/858545/353870.terrain new file mode 100644 index 000000000..7ea78f768 Binary files /dev/null and b/public/terrain/19/858545/353870.terrain differ diff --git a/public/terrain/19/858545/353871.terrain b/public/terrain/19/858545/353871.terrain new file mode 100644 index 000000000..c622b91bf Binary files /dev/null and b/public/terrain/19/858545/353871.terrain differ diff --git a/public/terrain/19/858545/353872.terrain b/public/terrain/19/858545/353872.terrain new file mode 100644 index 000000000..c4f926ffb Binary files /dev/null and b/public/terrain/19/858545/353872.terrain differ diff --git a/public/terrain/19/858545/353873.terrain b/public/terrain/19/858545/353873.terrain new file mode 100644 index 000000000..4a6496272 Binary files /dev/null and b/public/terrain/19/858545/353873.terrain differ diff --git a/public/terrain/19/858545/353874.terrain b/public/terrain/19/858545/353874.terrain new file mode 100644 index 000000000..f43810c6b Binary files /dev/null and b/public/terrain/19/858545/353874.terrain differ diff --git a/public/terrain/19/858545/353875.terrain b/public/terrain/19/858545/353875.terrain new file mode 100644 index 000000000..5436230ed Binary files /dev/null and b/public/terrain/19/858545/353875.terrain differ diff --git a/public/terrain/19/858545/353876.terrain b/public/terrain/19/858545/353876.terrain new file mode 100644 index 000000000..58ac23fdb Binary files /dev/null and b/public/terrain/19/858545/353876.terrain differ diff --git a/public/terrain/19/858545/353877.terrain b/public/terrain/19/858545/353877.terrain new file mode 100644 index 000000000..4d732a5eb Binary files /dev/null and b/public/terrain/19/858545/353877.terrain differ diff --git a/public/terrain/19/858545/353878.terrain b/public/terrain/19/858545/353878.terrain new file mode 100644 index 000000000..858bf4650 Binary files /dev/null and b/public/terrain/19/858545/353878.terrain differ diff --git a/public/terrain/19/858545/353879.terrain b/public/terrain/19/858545/353879.terrain new file mode 100644 index 000000000..731b5ba3c Binary files /dev/null and b/public/terrain/19/858545/353879.terrain differ diff --git a/public/terrain/19/858545/353880.terrain b/public/terrain/19/858545/353880.terrain new file mode 100644 index 000000000..13779bba1 Binary files /dev/null and b/public/terrain/19/858545/353880.terrain differ diff --git a/public/terrain/19/858545/353881.terrain b/public/terrain/19/858545/353881.terrain new file mode 100644 index 000000000..6a9a9ab57 Binary files /dev/null and b/public/terrain/19/858545/353881.terrain differ diff --git a/public/terrain/19/858545/353882.terrain b/public/terrain/19/858545/353882.terrain new file mode 100644 index 000000000..ae98b113c Binary files /dev/null and b/public/terrain/19/858545/353882.terrain differ diff --git a/public/terrain/19/858545/353883.terrain b/public/terrain/19/858545/353883.terrain new file mode 100644 index 000000000..813d14943 Binary files /dev/null and b/public/terrain/19/858545/353883.terrain differ diff --git a/public/terrain/19/858545/353884.terrain b/public/terrain/19/858545/353884.terrain new file mode 100644 index 000000000..bbe4f309e Binary files /dev/null and b/public/terrain/19/858545/353884.terrain differ diff --git a/public/terrain/19/858545/353885.terrain b/public/terrain/19/858545/353885.terrain new file mode 100644 index 000000000..6e81b68e5 Binary files /dev/null and b/public/terrain/19/858545/353885.terrain differ diff --git a/public/terrain/19/858545/353886.terrain b/public/terrain/19/858545/353886.terrain new file mode 100644 index 000000000..fad88810e Binary files /dev/null and b/public/terrain/19/858545/353886.terrain differ diff --git a/public/terrain/19/858545/353887.terrain b/public/terrain/19/858545/353887.terrain new file mode 100644 index 000000000..cbdcfcede Binary files /dev/null and b/public/terrain/19/858545/353887.terrain differ diff --git a/public/terrain/19/858545/353888.terrain b/public/terrain/19/858545/353888.terrain new file mode 100644 index 000000000..4e5668300 Binary files /dev/null and b/public/terrain/19/858545/353888.terrain differ diff --git a/public/terrain/19/858545/353889.terrain b/public/terrain/19/858545/353889.terrain new file mode 100644 index 000000000..e12887a4e Binary files /dev/null and b/public/terrain/19/858545/353889.terrain differ diff --git a/public/terrain/19/858545/353890.terrain b/public/terrain/19/858545/353890.terrain new file mode 100644 index 000000000..f951423ee Binary files /dev/null and b/public/terrain/19/858545/353890.terrain differ diff --git a/public/terrain/19/858545/353891.terrain b/public/terrain/19/858545/353891.terrain new file mode 100644 index 000000000..5ace08a53 Binary files /dev/null and b/public/terrain/19/858545/353891.terrain differ diff --git a/public/terrain/19/858545/353892.terrain b/public/terrain/19/858545/353892.terrain new file mode 100644 index 000000000..c3db7ee79 Binary files /dev/null and b/public/terrain/19/858545/353892.terrain differ diff --git a/public/terrain/19/858545/353893.terrain b/public/terrain/19/858545/353893.terrain new file mode 100644 index 000000000..644d4c201 Binary files /dev/null and b/public/terrain/19/858545/353893.terrain differ diff --git a/public/terrain/19/858545/353894.terrain b/public/terrain/19/858545/353894.terrain new file mode 100644 index 000000000..4f38acfc1 Binary files /dev/null and b/public/terrain/19/858545/353894.terrain differ diff --git a/public/terrain/19/858545/353895.terrain b/public/terrain/19/858545/353895.terrain new file mode 100644 index 000000000..9530fb5fe Binary files /dev/null and b/public/terrain/19/858545/353895.terrain differ diff --git a/public/terrain/19/858545/353896.terrain b/public/terrain/19/858545/353896.terrain new file mode 100644 index 000000000..00d8eb6af Binary files /dev/null and b/public/terrain/19/858545/353896.terrain differ diff --git a/public/terrain/19/858545/353897.terrain b/public/terrain/19/858545/353897.terrain new file mode 100644 index 000000000..4ea7619c0 Binary files /dev/null and b/public/terrain/19/858545/353897.terrain differ diff --git a/public/terrain/19/858545/353898.terrain b/public/terrain/19/858545/353898.terrain new file mode 100644 index 000000000..f9f8898f5 Binary files /dev/null and b/public/terrain/19/858545/353898.terrain differ diff --git a/public/terrain/19/858545/353899.terrain b/public/terrain/19/858545/353899.terrain new file mode 100644 index 000000000..8e20f8f95 Binary files /dev/null and b/public/terrain/19/858545/353899.terrain differ diff --git a/public/terrain/19/858545/353900.terrain b/public/terrain/19/858545/353900.terrain new file mode 100644 index 000000000..553d32c9b Binary files /dev/null and b/public/terrain/19/858545/353900.terrain differ diff --git a/public/terrain/19/858545/353901.terrain b/public/terrain/19/858545/353901.terrain new file mode 100644 index 000000000..63a394a45 Binary files /dev/null and b/public/terrain/19/858545/353901.terrain differ diff --git a/public/terrain/19/858545/353902.terrain b/public/terrain/19/858545/353902.terrain new file mode 100644 index 000000000..f88838fb5 Binary files /dev/null and b/public/terrain/19/858545/353902.terrain differ diff --git a/public/terrain/19/858545/353903.terrain b/public/terrain/19/858545/353903.terrain new file mode 100644 index 000000000..e26986604 Binary files /dev/null and b/public/terrain/19/858545/353903.terrain differ diff --git a/public/terrain/19/858545/353904.terrain b/public/terrain/19/858545/353904.terrain new file mode 100644 index 000000000..d6ad8f359 Binary files /dev/null and b/public/terrain/19/858545/353904.terrain differ diff --git a/public/terrain/19/858545/353905.terrain b/public/terrain/19/858545/353905.terrain new file mode 100644 index 000000000..adc51e822 Binary files /dev/null and b/public/terrain/19/858545/353905.terrain differ diff --git a/public/terrain/19/858545/353906.terrain b/public/terrain/19/858545/353906.terrain new file mode 100644 index 000000000..9bf25afc0 Binary files /dev/null and b/public/terrain/19/858545/353906.terrain differ diff --git a/public/terrain/19/858545/353907.terrain b/public/terrain/19/858545/353907.terrain new file mode 100644 index 000000000..44acec0da Binary files /dev/null and b/public/terrain/19/858545/353907.terrain differ diff --git a/public/terrain/19/858545/353908.terrain b/public/terrain/19/858545/353908.terrain new file mode 100644 index 000000000..d2b54ff4d Binary files /dev/null and b/public/terrain/19/858545/353908.terrain differ diff --git a/public/terrain/19/858545/353909.terrain b/public/terrain/19/858545/353909.terrain new file mode 100644 index 000000000..cb9abd9c3 Binary files /dev/null and b/public/terrain/19/858545/353909.terrain differ diff --git a/public/terrain/19/858545/353910.terrain b/public/terrain/19/858545/353910.terrain new file mode 100644 index 000000000..8c396142e Binary files /dev/null and b/public/terrain/19/858545/353910.terrain differ diff --git a/public/terrain/19/858545/353911.terrain b/public/terrain/19/858545/353911.terrain new file mode 100644 index 000000000..e395919ba Binary files /dev/null and b/public/terrain/19/858545/353911.terrain differ diff --git a/public/terrain/19/858545/353912.terrain b/public/terrain/19/858545/353912.terrain new file mode 100644 index 000000000..b771cfae8 Binary files /dev/null and b/public/terrain/19/858545/353912.terrain differ diff --git a/public/terrain/19/858545/353913.terrain b/public/terrain/19/858545/353913.terrain new file mode 100644 index 000000000..b7b452e6f Binary files /dev/null and b/public/terrain/19/858545/353913.terrain differ diff --git a/public/terrain/19/858545/353914.terrain b/public/terrain/19/858545/353914.terrain new file mode 100644 index 000000000..8efec2131 Binary files /dev/null and b/public/terrain/19/858545/353914.terrain differ diff --git a/public/terrain/19/858545/353915.terrain b/public/terrain/19/858545/353915.terrain new file mode 100644 index 000000000..bbc6355a6 Binary files /dev/null and b/public/terrain/19/858545/353915.terrain differ diff --git a/public/terrain/19/858545/353916.terrain b/public/terrain/19/858545/353916.terrain new file mode 100644 index 000000000..cfc041308 Binary files /dev/null and b/public/terrain/19/858545/353916.terrain differ diff --git a/public/terrain/19/858545/353917.terrain b/public/terrain/19/858545/353917.terrain new file mode 100644 index 000000000..217967e14 Binary files /dev/null and b/public/terrain/19/858545/353917.terrain differ diff --git a/public/terrain/19/858545/353918.terrain b/public/terrain/19/858545/353918.terrain new file mode 100644 index 000000000..dce6b4862 Binary files /dev/null and b/public/terrain/19/858545/353918.terrain differ diff --git a/public/terrain/19/858545/353919.terrain b/public/terrain/19/858545/353919.terrain new file mode 100644 index 000000000..355bbe10b Binary files /dev/null and b/public/terrain/19/858545/353919.terrain differ diff --git a/public/terrain/19/858545/353920.terrain b/public/terrain/19/858545/353920.terrain new file mode 100644 index 000000000..1749af1e7 Binary files /dev/null and b/public/terrain/19/858545/353920.terrain differ diff --git a/public/terrain/19/858545/353921.terrain b/public/terrain/19/858545/353921.terrain new file mode 100644 index 000000000..ac8f1d063 Binary files /dev/null and b/public/terrain/19/858545/353921.terrain differ diff --git a/public/terrain/19/858545/353922.terrain b/public/terrain/19/858545/353922.terrain new file mode 100644 index 000000000..d4494e2b0 Binary files /dev/null and b/public/terrain/19/858545/353922.terrain differ diff --git a/public/terrain/19/858545/353923.terrain b/public/terrain/19/858545/353923.terrain new file mode 100644 index 000000000..9c750dcb8 Binary files /dev/null and b/public/terrain/19/858545/353923.terrain differ diff --git a/public/terrain/19/858545/353924.terrain b/public/terrain/19/858545/353924.terrain new file mode 100644 index 000000000..b26bf2fb5 Binary files /dev/null and b/public/terrain/19/858545/353924.terrain differ diff --git a/public/terrain/19/858545/353925.terrain b/public/terrain/19/858545/353925.terrain new file mode 100644 index 000000000..2dca33c8e Binary files /dev/null and b/public/terrain/19/858545/353925.terrain differ diff --git a/public/terrain/19/858545/353926.terrain b/public/terrain/19/858545/353926.terrain new file mode 100644 index 000000000..d6e2999e7 Binary files /dev/null and b/public/terrain/19/858545/353926.terrain differ diff --git a/public/terrain/19/858545/353927.terrain b/public/terrain/19/858545/353927.terrain new file mode 100644 index 000000000..dc5b56ead Binary files /dev/null and b/public/terrain/19/858545/353927.terrain differ diff --git a/public/terrain/19/858545/353928.terrain b/public/terrain/19/858545/353928.terrain new file mode 100644 index 000000000..c80ebe36c Binary files /dev/null and b/public/terrain/19/858545/353928.terrain differ diff --git a/public/terrain/19/858545/353929.terrain b/public/terrain/19/858545/353929.terrain new file mode 100644 index 000000000..0b87cb7c5 Binary files /dev/null and b/public/terrain/19/858545/353929.terrain differ diff --git a/public/terrain/19/858545/353930.terrain b/public/terrain/19/858545/353930.terrain new file mode 100644 index 000000000..89426cb14 Binary files /dev/null and b/public/terrain/19/858545/353930.terrain differ diff --git a/public/terrain/19/858545/353931.terrain b/public/terrain/19/858545/353931.terrain new file mode 100644 index 000000000..1e418e8cf Binary files /dev/null and b/public/terrain/19/858545/353931.terrain differ diff --git a/public/terrain/19/858545/353932.terrain b/public/terrain/19/858545/353932.terrain new file mode 100644 index 000000000..e467b501a Binary files /dev/null and b/public/terrain/19/858545/353932.terrain differ diff --git a/public/terrain/19/858545/353933.terrain b/public/terrain/19/858545/353933.terrain new file mode 100644 index 000000000..3d125867f Binary files /dev/null and b/public/terrain/19/858545/353933.terrain differ diff --git a/public/terrain/19/858545/353934.terrain b/public/terrain/19/858545/353934.terrain new file mode 100644 index 000000000..8bcd95762 Binary files /dev/null and b/public/terrain/19/858545/353934.terrain differ diff --git a/public/terrain/19/858545/353935.terrain b/public/terrain/19/858545/353935.terrain new file mode 100644 index 000000000..36260d76e Binary files /dev/null and b/public/terrain/19/858545/353935.terrain differ diff --git a/public/terrain/19/858545/353936.terrain b/public/terrain/19/858545/353936.terrain new file mode 100644 index 000000000..88ce53095 Binary files /dev/null and b/public/terrain/19/858545/353936.terrain differ diff --git a/public/terrain/19/858545/353937.terrain b/public/terrain/19/858545/353937.terrain new file mode 100644 index 000000000..6c229fa58 Binary files /dev/null and b/public/terrain/19/858545/353937.terrain differ diff --git a/public/terrain/19/858545/353938.terrain b/public/terrain/19/858545/353938.terrain new file mode 100644 index 000000000..171d9777d Binary files /dev/null and b/public/terrain/19/858545/353938.terrain differ diff --git a/public/terrain/19/858545/353939.terrain b/public/terrain/19/858545/353939.terrain new file mode 100644 index 000000000..371aaa1d1 Binary files /dev/null and b/public/terrain/19/858545/353939.terrain differ diff --git a/public/terrain/19/858545/353940.terrain b/public/terrain/19/858545/353940.terrain new file mode 100644 index 000000000..6a3bf2fb8 Binary files /dev/null and b/public/terrain/19/858545/353940.terrain differ diff --git a/public/terrain/19/858545/353941.terrain b/public/terrain/19/858545/353941.terrain new file mode 100644 index 000000000..24f935a3d Binary files /dev/null and b/public/terrain/19/858545/353941.terrain differ diff --git a/public/terrain/19/858545/353942.terrain b/public/terrain/19/858545/353942.terrain new file mode 100644 index 000000000..01a055494 Binary files /dev/null and b/public/terrain/19/858545/353942.terrain differ diff --git a/public/terrain/19/858545/353943.terrain b/public/terrain/19/858545/353943.terrain new file mode 100644 index 000000000..609b878aa Binary files /dev/null and b/public/terrain/19/858545/353943.terrain differ diff --git a/public/terrain/19/858545/353944.terrain b/public/terrain/19/858545/353944.terrain new file mode 100644 index 000000000..30a25b082 Binary files /dev/null and b/public/terrain/19/858545/353944.terrain differ diff --git a/public/terrain/19/858545/353945.terrain b/public/terrain/19/858545/353945.terrain new file mode 100644 index 000000000..dd21546e1 Binary files /dev/null and b/public/terrain/19/858545/353945.terrain differ diff --git a/public/terrain/19/858545/353946.terrain b/public/terrain/19/858545/353946.terrain new file mode 100644 index 000000000..fdde721bb Binary files /dev/null and b/public/terrain/19/858545/353946.terrain differ diff --git a/public/terrain/19/858545/353947.terrain b/public/terrain/19/858545/353947.terrain new file mode 100644 index 000000000..e9886ae44 Binary files /dev/null and b/public/terrain/19/858545/353947.terrain differ diff --git a/public/terrain/19/858545/353948.terrain b/public/terrain/19/858545/353948.terrain new file mode 100644 index 000000000..fd3b14383 Binary files /dev/null and b/public/terrain/19/858545/353948.terrain differ diff --git a/public/terrain/19/858545/353949.terrain b/public/terrain/19/858545/353949.terrain new file mode 100644 index 000000000..f28fe7506 Binary files /dev/null and b/public/terrain/19/858545/353949.terrain differ diff --git a/public/terrain/19/858545/353950.terrain b/public/terrain/19/858545/353950.terrain new file mode 100644 index 000000000..a5263b372 Binary files /dev/null and b/public/terrain/19/858545/353950.terrain differ diff --git a/public/terrain/19/858545/353951.terrain b/public/terrain/19/858545/353951.terrain new file mode 100644 index 000000000..8f20a2647 Binary files /dev/null and b/public/terrain/19/858545/353951.terrain differ diff --git a/public/terrain/19/858545/353952.terrain b/public/terrain/19/858545/353952.terrain new file mode 100644 index 000000000..73359d9a5 Binary files /dev/null and b/public/terrain/19/858545/353952.terrain differ diff --git a/public/terrain/19/858545/353953.terrain b/public/terrain/19/858545/353953.terrain new file mode 100644 index 000000000..1b36b601f Binary files /dev/null and b/public/terrain/19/858545/353953.terrain differ diff --git a/public/terrain/19/858545/353954.terrain b/public/terrain/19/858545/353954.terrain new file mode 100644 index 000000000..9f9b78a79 Binary files /dev/null and b/public/terrain/19/858545/353954.terrain differ diff --git a/public/terrain/19/858545/353955.terrain b/public/terrain/19/858545/353955.terrain new file mode 100644 index 000000000..aeed2834f Binary files /dev/null and b/public/terrain/19/858545/353955.terrain differ diff --git a/public/terrain/19/858545/353956.terrain b/public/terrain/19/858545/353956.terrain new file mode 100644 index 000000000..78a82ba15 Binary files /dev/null and b/public/terrain/19/858545/353956.terrain differ diff --git a/public/terrain/19/858545/353957.terrain b/public/terrain/19/858545/353957.terrain new file mode 100644 index 000000000..f49791881 Binary files /dev/null and b/public/terrain/19/858545/353957.terrain differ diff --git a/public/terrain/19/858545/353958.terrain b/public/terrain/19/858545/353958.terrain new file mode 100644 index 000000000..2d0e0d5f4 Binary files /dev/null and b/public/terrain/19/858545/353958.terrain differ diff --git a/public/terrain/19/858545/353959.terrain b/public/terrain/19/858545/353959.terrain new file mode 100644 index 000000000..24e66eaa7 Binary files /dev/null and b/public/terrain/19/858545/353959.terrain differ diff --git a/public/terrain/19/858545/353960.terrain b/public/terrain/19/858545/353960.terrain new file mode 100644 index 000000000..e81c0f9d6 Binary files /dev/null and b/public/terrain/19/858545/353960.terrain differ diff --git a/public/terrain/19/858545/353961.terrain b/public/terrain/19/858545/353961.terrain new file mode 100644 index 000000000..bba4e6f5c Binary files /dev/null and b/public/terrain/19/858545/353961.terrain differ diff --git a/public/terrain/19/858545/353962.terrain b/public/terrain/19/858545/353962.terrain new file mode 100644 index 000000000..2a07227d9 Binary files /dev/null and b/public/terrain/19/858545/353962.terrain differ diff --git a/public/terrain/19/858545/353963.terrain b/public/terrain/19/858545/353963.terrain new file mode 100644 index 000000000..b8ad7055b Binary files /dev/null and b/public/terrain/19/858545/353963.terrain differ diff --git a/public/terrain/19/858545/353964.terrain b/public/terrain/19/858545/353964.terrain new file mode 100644 index 000000000..a3e8194f8 Binary files /dev/null and b/public/terrain/19/858545/353964.terrain differ diff --git a/public/terrain/19/858545/353965.terrain b/public/terrain/19/858545/353965.terrain new file mode 100644 index 000000000..c0bdd1ad9 Binary files /dev/null and b/public/terrain/19/858545/353965.terrain differ diff --git a/public/terrain/19/858545/353966.terrain b/public/terrain/19/858545/353966.terrain new file mode 100644 index 000000000..be939279f Binary files /dev/null and b/public/terrain/19/858545/353966.terrain differ diff --git a/public/terrain/19/858545/353967.terrain b/public/terrain/19/858545/353967.terrain new file mode 100644 index 000000000..a9d652b3f Binary files /dev/null and b/public/terrain/19/858545/353967.terrain differ diff --git a/public/terrain/19/858545/353968.terrain b/public/terrain/19/858545/353968.terrain new file mode 100644 index 000000000..b343bbb6e Binary files /dev/null and b/public/terrain/19/858545/353968.terrain differ diff --git a/public/terrain/19/858545/353969.terrain b/public/terrain/19/858545/353969.terrain new file mode 100644 index 000000000..2d11d3d2e Binary files /dev/null and b/public/terrain/19/858545/353969.terrain differ diff --git a/public/terrain/19/858545/353970.terrain b/public/terrain/19/858545/353970.terrain new file mode 100644 index 000000000..30fbc169f Binary files /dev/null and b/public/terrain/19/858545/353970.terrain differ diff --git a/public/terrain/19/858545/353971.terrain b/public/terrain/19/858545/353971.terrain new file mode 100644 index 000000000..949065064 Binary files /dev/null and b/public/terrain/19/858545/353971.terrain differ diff --git a/public/terrain/19/858545/353972.terrain b/public/terrain/19/858545/353972.terrain new file mode 100644 index 000000000..16d71dee2 Binary files /dev/null and b/public/terrain/19/858545/353972.terrain differ diff --git a/public/terrain/19/858545/353973.terrain b/public/terrain/19/858545/353973.terrain new file mode 100644 index 000000000..128078b9d Binary files /dev/null and b/public/terrain/19/858545/353973.terrain differ diff --git a/public/terrain/19/858545/353974.terrain b/public/terrain/19/858545/353974.terrain new file mode 100644 index 000000000..b30a396bd Binary files /dev/null and b/public/terrain/19/858545/353974.terrain differ diff --git a/public/terrain/19/858545/353975.terrain b/public/terrain/19/858545/353975.terrain new file mode 100644 index 000000000..5f866bd1a Binary files /dev/null and b/public/terrain/19/858545/353975.terrain differ diff --git a/public/terrain/19/858545/353976.terrain b/public/terrain/19/858545/353976.terrain new file mode 100644 index 000000000..55e2874cd Binary files /dev/null and b/public/terrain/19/858545/353976.terrain differ diff --git a/public/terrain/19/858545/353977.terrain b/public/terrain/19/858545/353977.terrain new file mode 100644 index 000000000..30f751af0 Binary files /dev/null and b/public/terrain/19/858545/353977.terrain differ diff --git a/public/terrain/19/858545/353978.terrain b/public/terrain/19/858545/353978.terrain new file mode 100644 index 000000000..af5549905 Binary files /dev/null and b/public/terrain/19/858545/353978.terrain differ diff --git a/public/terrain/19/858545/353979.terrain b/public/terrain/19/858545/353979.terrain new file mode 100644 index 000000000..197469722 Binary files /dev/null and b/public/terrain/19/858545/353979.terrain differ diff --git a/public/terrain/19/858545/353980.terrain b/public/terrain/19/858545/353980.terrain new file mode 100644 index 000000000..962a648c5 Binary files /dev/null and b/public/terrain/19/858545/353980.terrain differ diff --git a/public/terrain/19/858545/353981.terrain b/public/terrain/19/858545/353981.terrain new file mode 100644 index 000000000..4e0c5ae03 Binary files /dev/null and b/public/terrain/19/858545/353981.terrain differ diff --git a/public/terrain/19/858545/353982.terrain b/public/terrain/19/858545/353982.terrain new file mode 100644 index 000000000..d6a90d448 Binary files /dev/null and b/public/terrain/19/858545/353982.terrain differ diff --git a/public/terrain/19/858545/353983.terrain b/public/terrain/19/858545/353983.terrain new file mode 100644 index 000000000..cb0dadb00 Binary files /dev/null and b/public/terrain/19/858545/353983.terrain differ diff --git a/public/terrain/19/858545/353984.terrain b/public/terrain/19/858545/353984.terrain new file mode 100644 index 000000000..fd77bd965 Binary files /dev/null and b/public/terrain/19/858545/353984.terrain differ diff --git a/public/terrain/19/858545/353985.terrain b/public/terrain/19/858545/353985.terrain new file mode 100644 index 000000000..40c23e66f Binary files /dev/null and b/public/terrain/19/858545/353985.terrain differ diff --git a/public/terrain/19/858545/353986.terrain b/public/terrain/19/858545/353986.terrain new file mode 100644 index 000000000..706b15678 Binary files /dev/null and b/public/terrain/19/858545/353986.terrain differ diff --git a/public/terrain/19/858545/353987.terrain b/public/terrain/19/858545/353987.terrain new file mode 100644 index 000000000..ca3d91451 Binary files /dev/null and b/public/terrain/19/858545/353987.terrain differ diff --git a/public/terrain/19/858545/353988.terrain b/public/terrain/19/858545/353988.terrain new file mode 100644 index 000000000..e62912160 Binary files /dev/null and b/public/terrain/19/858545/353988.terrain differ diff --git a/public/terrain/19/858545/353989.terrain b/public/terrain/19/858545/353989.terrain new file mode 100644 index 000000000..89687b7d3 Binary files /dev/null and b/public/terrain/19/858545/353989.terrain differ diff --git a/public/terrain/19/858545/353990.terrain b/public/terrain/19/858545/353990.terrain new file mode 100644 index 000000000..0817edaa3 Binary files /dev/null and b/public/terrain/19/858545/353990.terrain differ diff --git a/public/terrain/19/858545/353991.terrain b/public/terrain/19/858545/353991.terrain new file mode 100644 index 000000000..537ec1522 Binary files /dev/null and b/public/terrain/19/858545/353991.terrain differ diff --git a/public/terrain/19/858545/353992.terrain b/public/terrain/19/858545/353992.terrain new file mode 100644 index 000000000..2ed8bfc28 Binary files /dev/null and b/public/terrain/19/858545/353992.terrain differ diff --git a/public/terrain/19/858545/353993.terrain b/public/terrain/19/858545/353993.terrain new file mode 100644 index 000000000..2da244f47 Binary files /dev/null and b/public/terrain/19/858545/353993.terrain differ diff --git a/public/terrain/19/858545/353994.terrain b/public/terrain/19/858545/353994.terrain new file mode 100644 index 000000000..9286accea Binary files /dev/null and b/public/terrain/19/858545/353994.terrain differ diff --git a/public/terrain/19/858545/353995.terrain b/public/terrain/19/858545/353995.terrain new file mode 100644 index 000000000..b65df20a7 Binary files /dev/null and b/public/terrain/19/858545/353995.terrain differ diff --git a/public/terrain/19/858545/353996.terrain b/public/terrain/19/858545/353996.terrain new file mode 100644 index 000000000..3de4db802 Binary files /dev/null and b/public/terrain/19/858545/353996.terrain differ diff --git a/public/terrain/19/858545/353997.terrain b/public/terrain/19/858545/353997.terrain new file mode 100644 index 000000000..836d8ec46 Binary files /dev/null and b/public/terrain/19/858545/353997.terrain differ diff --git a/public/terrain/19/858545/353998.terrain b/public/terrain/19/858545/353998.terrain new file mode 100644 index 000000000..432e7c7a7 Binary files /dev/null and b/public/terrain/19/858545/353998.terrain differ diff --git a/public/terrain/19/858545/353999.terrain b/public/terrain/19/858545/353999.terrain new file mode 100644 index 000000000..a1679d279 Binary files /dev/null and b/public/terrain/19/858545/353999.terrain differ diff --git a/public/terrain/19/858545/354000.terrain b/public/terrain/19/858545/354000.terrain new file mode 100644 index 000000000..f43caffc9 Binary files /dev/null and b/public/terrain/19/858545/354000.terrain differ diff --git a/public/terrain/19/858545/354001.terrain b/public/terrain/19/858545/354001.terrain new file mode 100644 index 000000000..b3979bd49 Binary files /dev/null and b/public/terrain/19/858545/354001.terrain differ diff --git a/public/terrain/19/858545/354002.terrain b/public/terrain/19/858545/354002.terrain new file mode 100644 index 000000000..91fa49dfd Binary files /dev/null and b/public/terrain/19/858545/354002.terrain differ diff --git a/public/terrain/19/858545/354003.terrain b/public/terrain/19/858545/354003.terrain new file mode 100644 index 000000000..444e9c76e Binary files /dev/null and b/public/terrain/19/858545/354003.terrain differ diff --git a/public/terrain/19/858545/354004.terrain b/public/terrain/19/858545/354004.terrain new file mode 100644 index 000000000..f85e72eec Binary files /dev/null and b/public/terrain/19/858545/354004.terrain differ diff --git a/public/terrain/19/858545/354005.terrain b/public/terrain/19/858545/354005.terrain new file mode 100644 index 000000000..2a0b46789 Binary files /dev/null and b/public/terrain/19/858545/354005.terrain differ diff --git a/public/terrain/19/858545/354006.terrain b/public/terrain/19/858545/354006.terrain new file mode 100644 index 000000000..1e353f4f8 Binary files /dev/null and b/public/terrain/19/858545/354006.terrain differ diff --git a/public/terrain/19/858545/354007.terrain b/public/terrain/19/858545/354007.terrain new file mode 100644 index 000000000..b9cfa8803 Binary files /dev/null and b/public/terrain/19/858545/354007.terrain differ diff --git a/public/terrain/19/858545/354008.terrain b/public/terrain/19/858545/354008.terrain new file mode 100644 index 000000000..1a381f245 Binary files /dev/null and b/public/terrain/19/858545/354008.terrain differ diff --git a/public/terrain/19/858545/354009.terrain b/public/terrain/19/858545/354009.terrain new file mode 100644 index 000000000..9ae967936 Binary files /dev/null and b/public/terrain/19/858545/354009.terrain differ diff --git a/public/terrain/19/858545/354010.terrain b/public/terrain/19/858545/354010.terrain new file mode 100644 index 000000000..68147b257 Binary files /dev/null and b/public/terrain/19/858545/354010.terrain differ diff --git a/public/terrain/19/858545/354011.terrain b/public/terrain/19/858545/354011.terrain new file mode 100644 index 000000000..da3de6b68 Binary files /dev/null and b/public/terrain/19/858545/354011.terrain differ diff --git a/public/terrain/19/858545/354012.terrain b/public/terrain/19/858545/354012.terrain new file mode 100644 index 000000000..40400b0a2 Binary files /dev/null and b/public/terrain/19/858545/354012.terrain differ diff --git a/public/terrain/19/858545/354013.terrain b/public/terrain/19/858545/354013.terrain new file mode 100644 index 000000000..4b9f76528 Binary files /dev/null and b/public/terrain/19/858545/354013.terrain differ diff --git a/public/terrain/19/858545/354014.terrain b/public/terrain/19/858545/354014.terrain new file mode 100644 index 000000000..f9fe83896 Binary files /dev/null and b/public/terrain/19/858545/354014.terrain differ diff --git a/public/terrain/19/858545/354015.terrain b/public/terrain/19/858545/354015.terrain new file mode 100644 index 000000000..4e97bb996 Binary files /dev/null and b/public/terrain/19/858545/354015.terrain differ diff --git a/public/terrain/19/858545/354016.terrain b/public/terrain/19/858545/354016.terrain new file mode 100644 index 000000000..16396a180 Binary files /dev/null and b/public/terrain/19/858545/354016.terrain differ diff --git a/public/terrain/19/858545/354017.terrain b/public/terrain/19/858545/354017.terrain new file mode 100644 index 000000000..7d9a10384 Binary files /dev/null and b/public/terrain/19/858545/354017.terrain differ diff --git a/public/terrain/19/858545/354018.terrain b/public/terrain/19/858545/354018.terrain new file mode 100644 index 000000000..57147e534 Binary files /dev/null and b/public/terrain/19/858545/354018.terrain differ diff --git a/public/terrain/19/858545/354019.terrain b/public/terrain/19/858545/354019.terrain new file mode 100644 index 000000000..d9fe44383 Binary files /dev/null and b/public/terrain/19/858545/354019.terrain differ diff --git a/public/terrain/19/858545/354020.terrain b/public/terrain/19/858545/354020.terrain new file mode 100644 index 000000000..ff218e133 Binary files /dev/null and b/public/terrain/19/858545/354020.terrain differ diff --git a/public/terrain/19/858545/354021.terrain b/public/terrain/19/858545/354021.terrain new file mode 100644 index 000000000..52606a9dc Binary files /dev/null and b/public/terrain/19/858545/354021.terrain differ diff --git a/public/terrain/19/858545/354022.terrain b/public/terrain/19/858545/354022.terrain new file mode 100644 index 000000000..002f6e314 Binary files /dev/null and b/public/terrain/19/858545/354022.terrain differ diff --git a/public/terrain/19/858545/354023.terrain b/public/terrain/19/858545/354023.terrain new file mode 100644 index 000000000..2eeb09757 Binary files /dev/null and b/public/terrain/19/858545/354023.terrain differ diff --git a/public/terrain/19/858545/354024.terrain b/public/terrain/19/858545/354024.terrain new file mode 100644 index 000000000..7a89a46ba Binary files /dev/null and b/public/terrain/19/858545/354024.terrain differ diff --git a/public/terrain/19/858545/354025.terrain b/public/terrain/19/858545/354025.terrain new file mode 100644 index 000000000..615babd65 Binary files /dev/null and b/public/terrain/19/858545/354025.terrain differ diff --git a/public/terrain/19/858545/354026.terrain b/public/terrain/19/858545/354026.terrain new file mode 100644 index 000000000..a938abb96 Binary files /dev/null and b/public/terrain/19/858545/354026.terrain differ diff --git a/public/terrain/19/858545/354027.terrain b/public/terrain/19/858545/354027.terrain new file mode 100644 index 000000000..c301f01bb Binary files /dev/null and b/public/terrain/19/858545/354027.terrain differ diff --git a/public/terrain/19/858545/354028.terrain b/public/terrain/19/858545/354028.terrain new file mode 100644 index 000000000..1f238a085 Binary files /dev/null and b/public/terrain/19/858545/354028.terrain differ diff --git a/public/terrain/19/858545/354029.terrain b/public/terrain/19/858545/354029.terrain new file mode 100644 index 000000000..2b0623293 Binary files /dev/null and b/public/terrain/19/858545/354029.terrain differ diff --git a/public/terrain/19/858545/354030.terrain b/public/terrain/19/858545/354030.terrain new file mode 100644 index 000000000..0d03a767d Binary files /dev/null and b/public/terrain/19/858545/354030.terrain differ diff --git a/public/terrain/19/858545/354031.terrain b/public/terrain/19/858545/354031.terrain new file mode 100644 index 000000000..cb7fef2f9 Binary files /dev/null and b/public/terrain/19/858545/354031.terrain differ diff --git a/public/terrain/19/858545/354032.terrain b/public/terrain/19/858545/354032.terrain new file mode 100644 index 000000000..ab1cb1bc2 Binary files /dev/null and b/public/terrain/19/858545/354032.terrain differ diff --git a/public/terrain/19/858545/354033.terrain b/public/terrain/19/858545/354033.terrain new file mode 100644 index 000000000..01ee88219 Binary files /dev/null and b/public/terrain/19/858545/354033.terrain differ diff --git a/public/terrain/19/858545/354034.terrain b/public/terrain/19/858545/354034.terrain new file mode 100644 index 000000000..96650c5a0 Binary files /dev/null and b/public/terrain/19/858545/354034.terrain differ diff --git a/public/terrain/19/858545/354035.terrain b/public/terrain/19/858545/354035.terrain new file mode 100644 index 000000000..4eda28d6f Binary files /dev/null and b/public/terrain/19/858545/354035.terrain differ diff --git a/public/terrain/19/858545/354036.terrain b/public/terrain/19/858545/354036.terrain new file mode 100644 index 000000000..80c2e2cb4 Binary files /dev/null and b/public/terrain/19/858545/354036.terrain differ diff --git a/public/terrain/19/858545/354037.terrain b/public/terrain/19/858545/354037.terrain new file mode 100644 index 000000000..d023f98c5 Binary files /dev/null and b/public/terrain/19/858545/354037.terrain differ diff --git a/public/terrain/19/858545/354038.terrain b/public/terrain/19/858545/354038.terrain new file mode 100644 index 000000000..f625324e2 Binary files /dev/null and b/public/terrain/19/858545/354038.terrain differ diff --git a/public/terrain/19/858545/354039.terrain b/public/terrain/19/858545/354039.terrain new file mode 100644 index 000000000..c51322910 Binary files /dev/null and b/public/terrain/19/858545/354039.terrain differ diff --git a/public/terrain/19/858545/354040.terrain b/public/terrain/19/858545/354040.terrain new file mode 100644 index 000000000..b5e97d7f5 Binary files /dev/null and b/public/terrain/19/858545/354040.terrain differ diff --git a/public/terrain/19/858545/354041.terrain b/public/terrain/19/858545/354041.terrain new file mode 100644 index 000000000..34f44c3a9 Binary files /dev/null and b/public/terrain/19/858545/354041.terrain differ diff --git a/public/terrain/19/858545/354042.terrain b/public/terrain/19/858545/354042.terrain new file mode 100644 index 000000000..90f3aa50a Binary files /dev/null and b/public/terrain/19/858545/354042.terrain differ diff --git a/public/terrain/19/858545/354043.terrain b/public/terrain/19/858545/354043.terrain new file mode 100644 index 000000000..c9df61e06 Binary files /dev/null and b/public/terrain/19/858545/354043.terrain differ diff --git a/public/terrain/19/858545/354044.terrain b/public/terrain/19/858545/354044.terrain new file mode 100644 index 000000000..fae2b3356 Binary files /dev/null and b/public/terrain/19/858545/354044.terrain differ diff --git a/public/terrain/19/858545/354045.terrain b/public/terrain/19/858545/354045.terrain new file mode 100644 index 000000000..07695958d Binary files /dev/null and b/public/terrain/19/858545/354045.terrain differ diff --git a/public/terrain/19/858545/354046.terrain b/public/terrain/19/858545/354046.terrain new file mode 100644 index 000000000..a8c55fb5c Binary files /dev/null and b/public/terrain/19/858545/354046.terrain differ diff --git a/public/terrain/19/858545/354047.terrain b/public/terrain/19/858545/354047.terrain new file mode 100644 index 000000000..a6039754d Binary files /dev/null and b/public/terrain/19/858545/354047.terrain differ diff --git a/public/terrain/19/858545/354048.terrain b/public/terrain/19/858545/354048.terrain new file mode 100644 index 000000000..c52c0d4fc Binary files /dev/null and b/public/terrain/19/858545/354048.terrain differ diff --git a/public/terrain/19/858545/354049.terrain b/public/terrain/19/858545/354049.terrain new file mode 100644 index 000000000..33d633519 Binary files /dev/null and b/public/terrain/19/858545/354049.terrain differ diff --git a/public/terrain/19/858545/354050.terrain b/public/terrain/19/858545/354050.terrain new file mode 100644 index 000000000..da451b026 Binary files /dev/null and b/public/terrain/19/858545/354050.terrain differ diff --git a/public/terrain/19/858545/354051.terrain b/public/terrain/19/858545/354051.terrain new file mode 100644 index 000000000..615dc98cb Binary files /dev/null and b/public/terrain/19/858545/354051.terrain differ diff --git a/public/terrain/19/858545/354052.terrain b/public/terrain/19/858545/354052.terrain new file mode 100644 index 000000000..96945dcae Binary files /dev/null and b/public/terrain/19/858545/354052.terrain differ diff --git a/public/terrain/19/858545/354053.terrain b/public/terrain/19/858545/354053.terrain new file mode 100644 index 000000000..b76d2e151 Binary files /dev/null and b/public/terrain/19/858545/354053.terrain differ diff --git a/public/terrain/19/858545/354054.terrain b/public/terrain/19/858545/354054.terrain new file mode 100644 index 000000000..54304e0d9 Binary files /dev/null and b/public/terrain/19/858545/354054.terrain differ diff --git a/public/terrain/19/858545/354055.terrain b/public/terrain/19/858545/354055.terrain new file mode 100644 index 000000000..de4a927d9 Binary files /dev/null and b/public/terrain/19/858545/354055.terrain differ diff --git a/public/terrain/19/858545/354056.terrain b/public/terrain/19/858545/354056.terrain new file mode 100644 index 000000000..543385d7c Binary files /dev/null and b/public/terrain/19/858545/354056.terrain differ diff --git a/public/terrain/19/858545/354057.terrain b/public/terrain/19/858545/354057.terrain new file mode 100644 index 000000000..1a518b7b4 Binary files /dev/null and b/public/terrain/19/858545/354057.terrain differ diff --git a/public/terrain/19/858545/354058.terrain b/public/terrain/19/858545/354058.terrain new file mode 100644 index 000000000..15e609862 Binary files /dev/null and b/public/terrain/19/858545/354058.terrain differ diff --git a/public/terrain/19/858545/354059.terrain b/public/terrain/19/858545/354059.terrain new file mode 100644 index 000000000..74c597841 Binary files /dev/null and b/public/terrain/19/858545/354059.terrain differ diff --git a/public/terrain/19/858546/353743.terrain b/public/terrain/19/858546/353743.terrain new file mode 100644 index 000000000..00e890c01 Binary files /dev/null and b/public/terrain/19/858546/353743.terrain differ diff --git a/public/terrain/19/858546/353744.terrain b/public/terrain/19/858546/353744.terrain new file mode 100644 index 000000000..4396d4452 Binary files /dev/null and b/public/terrain/19/858546/353744.terrain differ diff --git a/public/terrain/19/858546/353745.terrain b/public/terrain/19/858546/353745.terrain new file mode 100644 index 000000000..989a249b7 Binary files /dev/null and b/public/terrain/19/858546/353745.terrain differ diff --git a/public/terrain/19/858546/353746.terrain b/public/terrain/19/858546/353746.terrain new file mode 100644 index 000000000..9f2546a37 Binary files /dev/null and b/public/terrain/19/858546/353746.terrain differ diff --git a/public/terrain/19/858546/353747.terrain b/public/terrain/19/858546/353747.terrain new file mode 100644 index 000000000..87fd79711 Binary files /dev/null and b/public/terrain/19/858546/353747.terrain differ diff --git a/public/terrain/19/858546/353748.terrain b/public/terrain/19/858546/353748.terrain new file mode 100644 index 000000000..15446cb49 Binary files /dev/null and b/public/terrain/19/858546/353748.terrain differ diff --git a/public/terrain/19/858546/353749.terrain b/public/terrain/19/858546/353749.terrain new file mode 100644 index 000000000..eb405d1c4 Binary files /dev/null and b/public/terrain/19/858546/353749.terrain differ diff --git a/public/terrain/19/858546/353750.terrain b/public/terrain/19/858546/353750.terrain new file mode 100644 index 000000000..d5ff7dcb6 Binary files /dev/null and b/public/terrain/19/858546/353750.terrain differ diff --git a/public/terrain/19/858546/353751.terrain b/public/terrain/19/858546/353751.terrain new file mode 100644 index 000000000..b6457efd0 Binary files /dev/null and b/public/terrain/19/858546/353751.terrain differ diff --git a/public/terrain/19/858546/353752.terrain b/public/terrain/19/858546/353752.terrain new file mode 100644 index 000000000..627763d3c Binary files /dev/null and b/public/terrain/19/858546/353752.terrain differ diff --git a/public/terrain/19/858546/353753.terrain b/public/terrain/19/858546/353753.terrain new file mode 100644 index 000000000..88f3c3fb4 Binary files /dev/null and b/public/terrain/19/858546/353753.terrain differ diff --git a/public/terrain/19/858546/353754.terrain b/public/terrain/19/858546/353754.terrain new file mode 100644 index 000000000..f88000101 Binary files /dev/null and b/public/terrain/19/858546/353754.terrain differ diff --git a/public/terrain/19/858546/353755.terrain b/public/terrain/19/858546/353755.terrain new file mode 100644 index 000000000..2aecc4029 Binary files /dev/null and b/public/terrain/19/858546/353755.terrain differ diff --git a/public/terrain/19/858546/353756.terrain b/public/terrain/19/858546/353756.terrain new file mode 100644 index 000000000..310a30078 Binary files /dev/null and b/public/terrain/19/858546/353756.terrain differ diff --git a/public/terrain/19/858546/353757.terrain b/public/terrain/19/858546/353757.terrain new file mode 100644 index 000000000..9218da522 Binary files /dev/null and b/public/terrain/19/858546/353757.terrain differ diff --git a/public/terrain/19/858546/353758.terrain b/public/terrain/19/858546/353758.terrain new file mode 100644 index 000000000..3e5d0d1c0 Binary files /dev/null and b/public/terrain/19/858546/353758.terrain differ diff --git a/public/terrain/19/858546/353759.terrain b/public/terrain/19/858546/353759.terrain new file mode 100644 index 000000000..b390d0c32 Binary files /dev/null and b/public/terrain/19/858546/353759.terrain differ diff --git a/public/terrain/19/858546/353760.terrain b/public/terrain/19/858546/353760.terrain new file mode 100644 index 000000000..d7807c784 Binary files /dev/null and b/public/terrain/19/858546/353760.terrain differ diff --git a/public/terrain/19/858546/353761.terrain b/public/terrain/19/858546/353761.terrain new file mode 100644 index 000000000..467df2a80 Binary files /dev/null and b/public/terrain/19/858546/353761.terrain differ diff --git a/public/terrain/19/858546/353762.terrain b/public/terrain/19/858546/353762.terrain new file mode 100644 index 000000000..d06f9c390 Binary files /dev/null and b/public/terrain/19/858546/353762.terrain differ diff --git a/public/terrain/19/858546/353763.terrain b/public/terrain/19/858546/353763.terrain new file mode 100644 index 000000000..7f8ab0350 Binary files /dev/null and b/public/terrain/19/858546/353763.terrain differ diff --git a/public/terrain/19/858546/353764.terrain b/public/terrain/19/858546/353764.terrain new file mode 100644 index 000000000..961d1bb14 Binary files /dev/null and b/public/terrain/19/858546/353764.terrain differ diff --git a/public/terrain/19/858546/353765.terrain b/public/terrain/19/858546/353765.terrain new file mode 100644 index 000000000..7a6b48d97 Binary files /dev/null and b/public/terrain/19/858546/353765.terrain differ diff --git a/public/terrain/19/858546/353766.terrain b/public/terrain/19/858546/353766.terrain new file mode 100644 index 000000000..1042017c7 Binary files /dev/null and b/public/terrain/19/858546/353766.terrain differ diff --git a/public/terrain/19/858546/353767.terrain b/public/terrain/19/858546/353767.terrain new file mode 100644 index 000000000..1ae7faa71 Binary files /dev/null and b/public/terrain/19/858546/353767.terrain differ diff --git a/public/terrain/19/858546/353768.terrain b/public/terrain/19/858546/353768.terrain new file mode 100644 index 000000000..1455ebc6f Binary files /dev/null and b/public/terrain/19/858546/353768.terrain differ diff --git a/public/terrain/19/858546/353769.terrain b/public/terrain/19/858546/353769.terrain new file mode 100644 index 000000000..45ad928a2 Binary files /dev/null and b/public/terrain/19/858546/353769.terrain differ diff --git a/public/terrain/19/858546/353770.terrain b/public/terrain/19/858546/353770.terrain new file mode 100644 index 000000000..452d08d97 Binary files /dev/null and b/public/terrain/19/858546/353770.terrain differ diff --git a/public/terrain/19/858546/353771.terrain b/public/terrain/19/858546/353771.terrain new file mode 100644 index 000000000..82ce47f8d Binary files /dev/null and b/public/terrain/19/858546/353771.terrain differ diff --git a/public/terrain/19/858546/353772.terrain b/public/terrain/19/858546/353772.terrain new file mode 100644 index 000000000..0f1e5cd5a Binary files /dev/null and b/public/terrain/19/858546/353772.terrain differ diff --git a/public/terrain/19/858546/353773.terrain b/public/terrain/19/858546/353773.terrain new file mode 100644 index 000000000..85cc3e062 Binary files /dev/null and b/public/terrain/19/858546/353773.terrain differ diff --git a/public/terrain/19/858546/353774.terrain b/public/terrain/19/858546/353774.terrain new file mode 100644 index 000000000..8ac5b621f Binary files /dev/null and b/public/terrain/19/858546/353774.terrain differ diff --git a/public/terrain/19/858546/353775.terrain b/public/terrain/19/858546/353775.terrain new file mode 100644 index 000000000..2a8c7d742 Binary files /dev/null and b/public/terrain/19/858546/353775.terrain differ diff --git a/public/terrain/19/858546/353776.terrain b/public/terrain/19/858546/353776.terrain new file mode 100644 index 000000000..25b9f307f Binary files /dev/null and b/public/terrain/19/858546/353776.terrain differ diff --git a/public/terrain/19/858546/353777.terrain b/public/terrain/19/858546/353777.terrain new file mode 100644 index 000000000..3df3cc76a Binary files /dev/null and b/public/terrain/19/858546/353777.terrain differ diff --git a/public/terrain/19/858546/353778.terrain b/public/terrain/19/858546/353778.terrain new file mode 100644 index 000000000..71e15094b Binary files /dev/null and b/public/terrain/19/858546/353778.terrain differ diff --git a/public/terrain/19/858546/353779.terrain b/public/terrain/19/858546/353779.terrain new file mode 100644 index 000000000..860888f39 Binary files /dev/null and b/public/terrain/19/858546/353779.terrain differ diff --git a/public/terrain/19/858546/353780.terrain b/public/terrain/19/858546/353780.terrain new file mode 100644 index 000000000..8c2de01a3 Binary files /dev/null and b/public/terrain/19/858546/353780.terrain differ diff --git a/public/terrain/19/858546/353781.terrain b/public/terrain/19/858546/353781.terrain new file mode 100644 index 000000000..18e17dd9c Binary files /dev/null and b/public/terrain/19/858546/353781.terrain differ diff --git a/public/terrain/19/858546/353782.terrain b/public/terrain/19/858546/353782.terrain new file mode 100644 index 000000000..03c3f1f2d Binary files /dev/null and b/public/terrain/19/858546/353782.terrain differ diff --git a/public/terrain/19/858546/353783.terrain b/public/terrain/19/858546/353783.terrain new file mode 100644 index 000000000..93e7105ee Binary files /dev/null and b/public/terrain/19/858546/353783.terrain differ diff --git a/public/terrain/19/858546/353784.terrain b/public/terrain/19/858546/353784.terrain new file mode 100644 index 000000000..bfba4205d Binary files /dev/null and b/public/terrain/19/858546/353784.terrain differ diff --git a/public/terrain/19/858546/353785.terrain b/public/terrain/19/858546/353785.terrain new file mode 100644 index 000000000..0c8662005 Binary files /dev/null and b/public/terrain/19/858546/353785.terrain differ diff --git a/public/terrain/19/858546/353786.terrain b/public/terrain/19/858546/353786.terrain new file mode 100644 index 000000000..66244d34a Binary files /dev/null and b/public/terrain/19/858546/353786.terrain differ diff --git a/public/terrain/19/858546/353787.terrain b/public/terrain/19/858546/353787.terrain new file mode 100644 index 000000000..7859241fa Binary files /dev/null and b/public/terrain/19/858546/353787.terrain differ diff --git a/public/terrain/19/858546/353788.terrain b/public/terrain/19/858546/353788.terrain new file mode 100644 index 000000000..7c9983758 Binary files /dev/null and b/public/terrain/19/858546/353788.terrain differ diff --git a/public/terrain/19/858546/353789.terrain b/public/terrain/19/858546/353789.terrain new file mode 100644 index 000000000..5c7e5a2e4 Binary files /dev/null and b/public/terrain/19/858546/353789.terrain differ diff --git a/public/terrain/19/858546/353790.terrain b/public/terrain/19/858546/353790.terrain new file mode 100644 index 000000000..c4ba8959e Binary files /dev/null and b/public/terrain/19/858546/353790.terrain differ diff --git a/public/terrain/19/858546/353791.terrain b/public/terrain/19/858546/353791.terrain new file mode 100644 index 000000000..9567e928b Binary files /dev/null and b/public/terrain/19/858546/353791.terrain differ diff --git a/public/terrain/19/858546/353792.terrain b/public/terrain/19/858546/353792.terrain new file mode 100644 index 000000000..76d488361 Binary files /dev/null and b/public/terrain/19/858546/353792.terrain differ diff --git a/public/terrain/19/858546/353793.terrain b/public/terrain/19/858546/353793.terrain new file mode 100644 index 000000000..f74906efc Binary files /dev/null and b/public/terrain/19/858546/353793.terrain differ diff --git a/public/terrain/19/858546/353794.terrain b/public/terrain/19/858546/353794.terrain new file mode 100644 index 000000000..a7250a952 Binary files /dev/null and b/public/terrain/19/858546/353794.terrain differ diff --git a/public/terrain/19/858546/353795.terrain b/public/terrain/19/858546/353795.terrain new file mode 100644 index 000000000..a65f25039 Binary files /dev/null and b/public/terrain/19/858546/353795.terrain differ diff --git a/public/terrain/19/858546/353796.terrain b/public/terrain/19/858546/353796.terrain new file mode 100644 index 000000000..c875e2161 Binary files /dev/null and b/public/terrain/19/858546/353796.terrain differ diff --git a/public/terrain/19/858546/353797.terrain b/public/terrain/19/858546/353797.terrain new file mode 100644 index 000000000..a303e09bc Binary files /dev/null and b/public/terrain/19/858546/353797.terrain differ diff --git a/public/terrain/19/858546/353798.terrain b/public/terrain/19/858546/353798.terrain new file mode 100644 index 000000000..7c7daba65 Binary files /dev/null and b/public/terrain/19/858546/353798.terrain differ diff --git a/public/terrain/19/858546/353799.terrain b/public/terrain/19/858546/353799.terrain new file mode 100644 index 000000000..f47299bb1 Binary files /dev/null and b/public/terrain/19/858546/353799.terrain differ diff --git a/public/terrain/19/858546/353800.terrain b/public/terrain/19/858546/353800.terrain new file mode 100644 index 000000000..c8f2426e4 Binary files /dev/null and b/public/terrain/19/858546/353800.terrain differ diff --git a/public/terrain/19/858546/353801.terrain b/public/terrain/19/858546/353801.terrain new file mode 100644 index 000000000..28a2a9f1f Binary files /dev/null and b/public/terrain/19/858546/353801.terrain differ diff --git a/public/terrain/19/858546/353802.terrain b/public/terrain/19/858546/353802.terrain new file mode 100644 index 000000000..f2fe655eb Binary files /dev/null and b/public/terrain/19/858546/353802.terrain differ diff --git a/public/terrain/19/858546/353803.terrain b/public/terrain/19/858546/353803.terrain new file mode 100644 index 000000000..92e6c3439 Binary files /dev/null and b/public/terrain/19/858546/353803.terrain differ diff --git a/public/terrain/19/858546/353804.terrain b/public/terrain/19/858546/353804.terrain new file mode 100644 index 000000000..eed4dbd12 Binary files /dev/null and b/public/terrain/19/858546/353804.terrain differ diff --git a/public/terrain/19/858546/353805.terrain b/public/terrain/19/858546/353805.terrain new file mode 100644 index 000000000..b87308aad Binary files /dev/null and b/public/terrain/19/858546/353805.terrain differ diff --git a/public/terrain/19/858546/353806.terrain b/public/terrain/19/858546/353806.terrain new file mode 100644 index 000000000..468681ad0 Binary files /dev/null and b/public/terrain/19/858546/353806.terrain differ diff --git a/public/terrain/19/858546/353807.terrain b/public/terrain/19/858546/353807.terrain new file mode 100644 index 000000000..76b7db199 Binary files /dev/null and b/public/terrain/19/858546/353807.terrain differ diff --git a/public/terrain/19/858546/353808.terrain b/public/terrain/19/858546/353808.terrain new file mode 100644 index 000000000..114697988 Binary files /dev/null and b/public/terrain/19/858546/353808.terrain differ diff --git a/public/terrain/19/858546/353809.terrain b/public/terrain/19/858546/353809.terrain new file mode 100644 index 000000000..d7cbe9a80 Binary files /dev/null and b/public/terrain/19/858546/353809.terrain differ diff --git a/public/terrain/19/858546/353810.terrain b/public/terrain/19/858546/353810.terrain new file mode 100644 index 000000000..4551fc81e Binary files /dev/null and b/public/terrain/19/858546/353810.terrain differ diff --git a/public/terrain/19/858546/353811.terrain b/public/terrain/19/858546/353811.terrain new file mode 100644 index 000000000..79278e3fa Binary files /dev/null and b/public/terrain/19/858546/353811.terrain differ diff --git a/public/terrain/19/858546/353812.terrain b/public/terrain/19/858546/353812.terrain new file mode 100644 index 000000000..b03099d09 Binary files /dev/null and b/public/terrain/19/858546/353812.terrain differ diff --git a/public/terrain/19/858546/353813.terrain b/public/terrain/19/858546/353813.terrain new file mode 100644 index 000000000..69cee74db Binary files /dev/null and b/public/terrain/19/858546/353813.terrain differ diff --git a/public/terrain/19/858546/353814.terrain b/public/terrain/19/858546/353814.terrain new file mode 100644 index 000000000..f8e7375c4 Binary files /dev/null and b/public/terrain/19/858546/353814.terrain differ diff --git a/public/terrain/19/858546/353815.terrain b/public/terrain/19/858546/353815.terrain new file mode 100644 index 000000000..806727041 Binary files /dev/null and b/public/terrain/19/858546/353815.terrain differ diff --git a/public/terrain/19/858546/353816.terrain b/public/terrain/19/858546/353816.terrain new file mode 100644 index 000000000..e10065bf0 Binary files /dev/null and b/public/terrain/19/858546/353816.terrain differ diff --git a/public/terrain/19/858546/353817.terrain b/public/terrain/19/858546/353817.terrain new file mode 100644 index 000000000..019d1161f Binary files /dev/null and b/public/terrain/19/858546/353817.terrain differ diff --git a/public/terrain/19/858546/353818.terrain b/public/terrain/19/858546/353818.terrain new file mode 100644 index 000000000..9c99a864f Binary files /dev/null and b/public/terrain/19/858546/353818.terrain differ diff --git a/public/terrain/19/858546/353819.terrain b/public/terrain/19/858546/353819.terrain new file mode 100644 index 000000000..424ef4100 Binary files /dev/null and b/public/terrain/19/858546/353819.terrain differ diff --git a/public/terrain/19/858546/353820.terrain b/public/terrain/19/858546/353820.terrain new file mode 100644 index 000000000..c170fb45a Binary files /dev/null and b/public/terrain/19/858546/353820.terrain differ diff --git a/public/terrain/19/858546/353821.terrain b/public/terrain/19/858546/353821.terrain new file mode 100644 index 000000000..01d563eea Binary files /dev/null and b/public/terrain/19/858546/353821.terrain differ diff --git a/public/terrain/19/858546/353822.terrain b/public/terrain/19/858546/353822.terrain new file mode 100644 index 000000000..a6518f1da Binary files /dev/null and b/public/terrain/19/858546/353822.terrain differ diff --git a/public/terrain/19/858546/353823.terrain b/public/terrain/19/858546/353823.terrain new file mode 100644 index 000000000..ad9447290 Binary files /dev/null and b/public/terrain/19/858546/353823.terrain differ diff --git a/public/terrain/19/858546/353824.terrain b/public/terrain/19/858546/353824.terrain new file mode 100644 index 000000000..b119ef4f3 Binary files /dev/null and b/public/terrain/19/858546/353824.terrain differ diff --git a/public/terrain/19/858546/353825.terrain b/public/terrain/19/858546/353825.terrain new file mode 100644 index 000000000..fcdbb3d03 Binary files /dev/null and b/public/terrain/19/858546/353825.terrain differ diff --git a/public/terrain/19/858546/353826.terrain b/public/terrain/19/858546/353826.terrain new file mode 100644 index 000000000..c6f862da8 Binary files /dev/null and b/public/terrain/19/858546/353826.terrain differ diff --git a/public/terrain/19/858546/353827.terrain b/public/terrain/19/858546/353827.terrain new file mode 100644 index 000000000..e455bc168 Binary files /dev/null and b/public/terrain/19/858546/353827.terrain differ diff --git a/public/terrain/19/858546/353828.terrain b/public/terrain/19/858546/353828.terrain new file mode 100644 index 000000000..13cb50470 Binary files /dev/null and b/public/terrain/19/858546/353828.terrain differ diff --git a/public/terrain/19/858546/353829.terrain b/public/terrain/19/858546/353829.terrain new file mode 100644 index 000000000..dde83c8e4 Binary files /dev/null and b/public/terrain/19/858546/353829.terrain differ diff --git a/public/terrain/19/858546/353830.terrain b/public/terrain/19/858546/353830.terrain new file mode 100644 index 000000000..d29e065af Binary files /dev/null and b/public/terrain/19/858546/353830.terrain differ diff --git a/public/terrain/19/858546/353831.terrain b/public/terrain/19/858546/353831.terrain new file mode 100644 index 000000000..ea748e002 Binary files /dev/null and b/public/terrain/19/858546/353831.terrain differ diff --git a/public/terrain/19/858546/353832.terrain b/public/terrain/19/858546/353832.terrain new file mode 100644 index 000000000..34502ef0b Binary files /dev/null and b/public/terrain/19/858546/353832.terrain differ diff --git a/public/terrain/19/858546/353833.terrain b/public/terrain/19/858546/353833.terrain new file mode 100644 index 000000000..9a8c5e9ec Binary files /dev/null and b/public/terrain/19/858546/353833.terrain differ diff --git a/public/terrain/19/858546/353834.terrain b/public/terrain/19/858546/353834.terrain new file mode 100644 index 000000000..8255f80ee Binary files /dev/null and b/public/terrain/19/858546/353834.terrain differ diff --git a/public/terrain/19/858546/353835.terrain b/public/terrain/19/858546/353835.terrain new file mode 100644 index 000000000..aab876d04 Binary files /dev/null and b/public/terrain/19/858546/353835.terrain differ diff --git a/public/terrain/19/858546/353836.terrain b/public/terrain/19/858546/353836.terrain new file mode 100644 index 000000000..dfd761c40 Binary files /dev/null and b/public/terrain/19/858546/353836.terrain differ diff --git a/public/terrain/19/858546/353837.terrain b/public/terrain/19/858546/353837.terrain new file mode 100644 index 000000000..65ca51489 Binary files /dev/null and b/public/terrain/19/858546/353837.terrain differ diff --git a/public/terrain/19/858546/353838.terrain b/public/terrain/19/858546/353838.terrain new file mode 100644 index 000000000..cafcd863b Binary files /dev/null and b/public/terrain/19/858546/353838.terrain differ diff --git a/public/terrain/19/858546/353839.terrain b/public/terrain/19/858546/353839.terrain new file mode 100644 index 000000000..29d99c8bc Binary files /dev/null and b/public/terrain/19/858546/353839.terrain differ diff --git a/public/terrain/19/858546/353840.terrain b/public/terrain/19/858546/353840.terrain new file mode 100644 index 000000000..fff088303 Binary files /dev/null and b/public/terrain/19/858546/353840.terrain differ diff --git a/public/terrain/19/858546/353841.terrain b/public/terrain/19/858546/353841.terrain new file mode 100644 index 000000000..91ba52c4f Binary files /dev/null and b/public/terrain/19/858546/353841.terrain differ diff --git a/public/terrain/19/858546/353842.terrain b/public/terrain/19/858546/353842.terrain new file mode 100644 index 000000000..ee71c9a12 Binary files /dev/null and b/public/terrain/19/858546/353842.terrain differ diff --git a/public/terrain/19/858546/353843.terrain b/public/terrain/19/858546/353843.terrain new file mode 100644 index 000000000..3a7c17990 Binary files /dev/null and b/public/terrain/19/858546/353843.terrain differ diff --git a/public/terrain/19/858546/353844.terrain b/public/terrain/19/858546/353844.terrain new file mode 100644 index 000000000..233899821 Binary files /dev/null and b/public/terrain/19/858546/353844.terrain differ diff --git a/public/terrain/19/858546/353845.terrain b/public/terrain/19/858546/353845.terrain new file mode 100644 index 000000000..276bba20d Binary files /dev/null and b/public/terrain/19/858546/353845.terrain differ diff --git a/public/terrain/19/858546/353846.terrain b/public/terrain/19/858546/353846.terrain new file mode 100644 index 000000000..9c2ce65c0 Binary files /dev/null and b/public/terrain/19/858546/353846.terrain differ diff --git a/public/terrain/19/858546/353847.terrain b/public/terrain/19/858546/353847.terrain new file mode 100644 index 000000000..bdc9920de Binary files /dev/null and b/public/terrain/19/858546/353847.terrain differ diff --git a/public/terrain/19/858546/353848.terrain b/public/terrain/19/858546/353848.terrain new file mode 100644 index 000000000..c33b38a48 Binary files /dev/null and b/public/terrain/19/858546/353848.terrain differ diff --git a/public/terrain/19/858546/353849.terrain b/public/terrain/19/858546/353849.terrain new file mode 100644 index 000000000..7ae5ee4f2 Binary files /dev/null and b/public/terrain/19/858546/353849.terrain differ diff --git a/public/terrain/19/858546/353850.terrain b/public/terrain/19/858546/353850.terrain new file mode 100644 index 000000000..09b24bd91 Binary files /dev/null and b/public/terrain/19/858546/353850.terrain differ diff --git a/public/terrain/19/858546/353851.terrain b/public/terrain/19/858546/353851.terrain new file mode 100644 index 000000000..5b063e9e1 Binary files /dev/null and b/public/terrain/19/858546/353851.terrain differ diff --git a/public/terrain/19/858546/353852.terrain b/public/terrain/19/858546/353852.terrain new file mode 100644 index 000000000..b8176465c Binary files /dev/null and b/public/terrain/19/858546/353852.terrain differ diff --git a/public/terrain/19/858546/353853.terrain b/public/terrain/19/858546/353853.terrain new file mode 100644 index 000000000..2c2bd8b03 Binary files /dev/null and b/public/terrain/19/858546/353853.terrain differ diff --git a/public/terrain/19/858546/353854.terrain b/public/terrain/19/858546/353854.terrain new file mode 100644 index 000000000..1452cf3c9 Binary files /dev/null and b/public/terrain/19/858546/353854.terrain differ diff --git a/public/terrain/19/858546/353855.terrain b/public/terrain/19/858546/353855.terrain new file mode 100644 index 000000000..f2eeaee10 Binary files /dev/null and b/public/terrain/19/858546/353855.terrain differ diff --git a/public/terrain/19/858546/353856.terrain b/public/terrain/19/858546/353856.terrain new file mode 100644 index 000000000..f3fb72489 Binary files /dev/null and b/public/terrain/19/858546/353856.terrain differ diff --git a/public/terrain/19/858546/353857.terrain b/public/terrain/19/858546/353857.terrain new file mode 100644 index 000000000..8aafa0e10 Binary files /dev/null and b/public/terrain/19/858546/353857.terrain differ diff --git a/public/terrain/19/858546/353858.terrain b/public/terrain/19/858546/353858.terrain new file mode 100644 index 000000000..21988440e Binary files /dev/null and b/public/terrain/19/858546/353858.terrain differ diff --git a/public/terrain/19/858546/353859.terrain b/public/terrain/19/858546/353859.terrain new file mode 100644 index 000000000..b88bda208 Binary files /dev/null and b/public/terrain/19/858546/353859.terrain differ diff --git a/public/terrain/19/858546/353860.terrain b/public/terrain/19/858546/353860.terrain new file mode 100644 index 000000000..be1f76793 Binary files /dev/null and b/public/terrain/19/858546/353860.terrain differ diff --git a/public/terrain/19/858546/353861.terrain b/public/terrain/19/858546/353861.terrain new file mode 100644 index 000000000..7ca74c793 Binary files /dev/null and b/public/terrain/19/858546/353861.terrain differ diff --git a/public/terrain/19/858546/353862.terrain b/public/terrain/19/858546/353862.terrain new file mode 100644 index 000000000..e908257f7 Binary files /dev/null and b/public/terrain/19/858546/353862.terrain differ diff --git a/public/terrain/19/858546/353863.terrain b/public/terrain/19/858546/353863.terrain new file mode 100644 index 000000000..5350b20c3 Binary files /dev/null and b/public/terrain/19/858546/353863.terrain differ diff --git a/public/terrain/19/858546/353864.terrain b/public/terrain/19/858546/353864.terrain new file mode 100644 index 000000000..c48ed4e71 Binary files /dev/null and b/public/terrain/19/858546/353864.terrain differ diff --git a/public/terrain/19/858546/353865.terrain b/public/terrain/19/858546/353865.terrain new file mode 100644 index 000000000..717d063a9 Binary files /dev/null and b/public/terrain/19/858546/353865.terrain differ diff --git a/public/terrain/19/858546/353866.terrain b/public/terrain/19/858546/353866.terrain new file mode 100644 index 000000000..2c964285c Binary files /dev/null and b/public/terrain/19/858546/353866.terrain differ diff --git a/public/terrain/19/858546/353867.terrain b/public/terrain/19/858546/353867.terrain new file mode 100644 index 000000000..2bb9935e9 Binary files /dev/null and b/public/terrain/19/858546/353867.terrain differ diff --git a/public/terrain/19/858546/353868.terrain b/public/terrain/19/858546/353868.terrain new file mode 100644 index 000000000..6e878e76c Binary files /dev/null and b/public/terrain/19/858546/353868.terrain differ diff --git a/public/terrain/19/858546/353869.terrain b/public/terrain/19/858546/353869.terrain new file mode 100644 index 000000000..8c43e1b54 Binary files /dev/null and b/public/terrain/19/858546/353869.terrain differ diff --git a/public/terrain/19/858546/353870.terrain b/public/terrain/19/858546/353870.terrain new file mode 100644 index 000000000..e9dbe76ee Binary files /dev/null and b/public/terrain/19/858546/353870.terrain differ diff --git a/public/terrain/19/858546/353871.terrain b/public/terrain/19/858546/353871.terrain new file mode 100644 index 000000000..ccae5e96d Binary files /dev/null and b/public/terrain/19/858546/353871.terrain differ diff --git a/public/terrain/19/858546/353872.terrain b/public/terrain/19/858546/353872.terrain new file mode 100644 index 000000000..436985b9a Binary files /dev/null and b/public/terrain/19/858546/353872.terrain differ diff --git a/public/terrain/19/858546/353873.terrain b/public/terrain/19/858546/353873.terrain new file mode 100644 index 000000000..83a18080d Binary files /dev/null and b/public/terrain/19/858546/353873.terrain differ diff --git a/public/terrain/19/858546/353874.terrain b/public/terrain/19/858546/353874.terrain new file mode 100644 index 000000000..5a0a771dc Binary files /dev/null and b/public/terrain/19/858546/353874.terrain differ diff --git a/public/terrain/19/858546/353875.terrain b/public/terrain/19/858546/353875.terrain new file mode 100644 index 000000000..efbea94d1 Binary files /dev/null and b/public/terrain/19/858546/353875.terrain differ diff --git a/public/terrain/19/858546/353876.terrain b/public/terrain/19/858546/353876.terrain new file mode 100644 index 000000000..d7218516d Binary files /dev/null and b/public/terrain/19/858546/353876.terrain differ diff --git a/public/terrain/19/858546/353877.terrain b/public/terrain/19/858546/353877.terrain new file mode 100644 index 000000000..4906db9fb Binary files /dev/null and b/public/terrain/19/858546/353877.terrain differ diff --git a/public/terrain/19/858546/353878.terrain b/public/terrain/19/858546/353878.terrain new file mode 100644 index 000000000..448f2e35a Binary files /dev/null and b/public/terrain/19/858546/353878.terrain differ diff --git a/public/terrain/19/858546/353879.terrain b/public/terrain/19/858546/353879.terrain new file mode 100644 index 000000000..319eaea9f Binary files /dev/null and b/public/terrain/19/858546/353879.terrain differ diff --git a/public/terrain/19/858546/353880.terrain b/public/terrain/19/858546/353880.terrain new file mode 100644 index 000000000..e2e182318 Binary files /dev/null and b/public/terrain/19/858546/353880.terrain differ diff --git a/public/terrain/19/858546/353881.terrain b/public/terrain/19/858546/353881.terrain new file mode 100644 index 000000000..784044aeb Binary files /dev/null and b/public/terrain/19/858546/353881.terrain differ diff --git a/public/terrain/19/858546/353882.terrain b/public/terrain/19/858546/353882.terrain new file mode 100644 index 000000000..5493c4f9b Binary files /dev/null and b/public/terrain/19/858546/353882.terrain differ diff --git a/public/terrain/19/858546/353883.terrain b/public/terrain/19/858546/353883.terrain new file mode 100644 index 000000000..027c889c1 Binary files /dev/null and b/public/terrain/19/858546/353883.terrain differ diff --git a/public/terrain/19/858546/353884.terrain b/public/terrain/19/858546/353884.terrain new file mode 100644 index 000000000..479af2c60 Binary files /dev/null and b/public/terrain/19/858546/353884.terrain differ diff --git a/public/terrain/19/858546/353885.terrain b/public/terrain/19/858546/353885.terrain new file mode 100644 index 000000000..c022bc097 Binary files /dev/null and b/public/terrain/19/858546/353885.terrain differ diff --git a/public/terrain/19/858546/353886.terrain b/public/terrain/19/858546/353886.terrain new file mode 100644 index 000000000..1e24d7cd4 Binary files /dev/null and b/public/terrain/19/858546/353886.terrain differ diff --git a/public/terrain/19/858546/353887.terrain b/public/terrain/19/858546/353887.terrain new file mode 100644 index 000000000..ea7b76b2f Binary files /dev/null and b/public/terrain/19/858546/353887.terrain differ diff --git a/public/terrain/19/858546/353888.terrain b/public/terrain/19/858546/353888.terrain new file mode 100644 index 000000000..b4ecb75af Binary files /dev/null and b/public/terrain/19/858546/353888.terrain differ diff --git a/public/terrain/19/858546/353889.terrain b/public/terrain/19/858546/353889.terrain new file mode 100644 index 000000000..cc51c232d Binary files /dev/null and b/public/terrain/19/858546/353889.terrain differ diff --git a/public/terrain/19/858546/353890.terrain b/public/terrain/19/858546/353890.terrain new file mode 100644 index 000000000..e0cf4bad5 Binary files /dev/null and b/public/terrain/19/858546/353890.terrain differ diff --git a/public/terrain/19/858546/353891.terrain b/public/terrain/19/858546/353891.terrain new file mode 100644 index 000000000..577f0c030 Binary files /dev/null and b/public/terrain/19/858546/353891.terrain differ diff --git a/public/terrain/19/858546/353892.terrain b/public/terrain/19/858546/353892.terrain new file mode 100644 index 000000000..57d6d9809 Binary files /dev/null and b/public/terrain/19/858546/353892.terrain differ diff --git a/public/terrain/19/858546/353893.terrain b/public/terrain/19/858546/353893.terrain new file mode 100644 index 000000000..c4cfc5121 Binary files /dev/null and b/public/terrain/19/858546/353893.terrain differ diff --git a/public/terrain/19/858546/353894.terrain b/public/terrain/19/858546/353894.terrain new file mode 100644 index 000000000..685f7ca7a Binary files /dev/null and b/public/terrain/19/858546/353894.terrain differ diff --git a/public/terrain/19/858546/353895.terrain b/public/terrain/19/858546/353895.terrain new file mode 100644 index 000000000..e0c99bd7f Binary files /dev/null and b/public/terrain/19/858546/353895.terrain differ diff --git a/public/terrain/19/858546/353896.terrain b/public/terrain/19/858546/353896.terrain new file mode 100644 index 000000000..f009f5233 Binary files /dev/null and b/public/terrain/19/858546/353896.terrain differ diff --git a/public/terrain/19/858546/353897.terrain b/public/terrain/19/858546/353897.terrain new file mode 100644 index 000000000..9860c0344 Binary files /dev/null and b/public/terrain/19/858546/353897.terrain differ diff --git a/public/terrain/19/858546/353898.terrain b/public/terrain/19/858546/353898.terrain new file mode 100644 index 000000000..1a57f128e Binary files /dev/null and b/public/terrain/19/858546/353898.terrain differ diff --git a/public/terrain/19/858546/353899.terrain b/public/terrain/19/858546/353899.terrain new file mode 100644 index 000000000..17406016b Binary files /dev/null and b/public/terrain/19/858546/353899.terrain differ diff --git a/public/terrain/19/858546/353900.terrain b/public/terrain/19/858546/353900.terrain new file mode 100644 index 000000000..76913ba11 Binary files /dev/null and b/public/terrain/19/858546/353900.terrain differ diff --git a/public/terrain/19/858546/353901.terrain b/public/terrain/19/858546/353901.terrain new file mode 100644 index 000000000..a6801b6dc Binary files /dev/null and b/public/terrain/19/858546/353901.terrain differ diff --git a/public/terrain/19/858546/353902.terrain b/public/terrain/19/858546/353902.terrain new file mode 100644 index 000000000..deab92352 Binary files /dev/null and b/public/terrain/19/858546/353902.terrain differ diff --git a/public/terrain/19/858546/353903.terrain b/public/terrain/19/858546/353903.terrain new file mode 100644 index 000000000..ffe9d4717 Binary files /dev/null and b/public/terrain/19/858546/353903.terrain differ diff --git a/public/terrain/19/858546/353904.terrain b/public/terrain/19/858546/353904.terrain new file mode 100644 index 000000000..4f2ffa88e Binary files /dev/null and b/public/terrain/19/858546/353904.terrain differ diff --git a/public/terrain/19/858546/353905.terrain b/public/terrain/19/858546/353905.terrain new file mode 100644 index 000000000..b5631ff6c Binary files /dev/null and b/public/terrain/19/858546/353905.terrain differ diff --git a/public/terrain/19/858546/353906.terrain b/public/terrain/19/858546/353906.terrain new file mode 100644 index 000000000..e59fcbb3f Binary files /dev/null and b/public/terrain/19/858546/353906.terrain differ diff --git a/public/terrain/19/858546/353907.terrain b/public/terrain/19/858546/353907.terrain new file mode 100644 index 000000000..5f4027724 Binary files /dev/null and b/public/terrain/19/858546/353907.terrain differ diff --git a/public/terrain/19/858546/353908.terrain b/public/terrain/19/858546/353908.terrain new file mode 100644 index 000000000..8fb6cf184 Binary files /dev/null and b/public/terrain/19/858546/353908.terrain differ diff --git a/public/terrain/19/858546/353909.terrain b/public/terrain/19/858546/353909.terrain new file mode 100644 index 000000000..bc4a7b71d Binary files /dev/null and b/public/terrain/19/858546/353909.terrain differ diff --git a/public/terrain/19/858546/353910.terrain b/public/terrain/19/858546/353910.terrain new file mode 100644 index 000000000..fb04aaa1b Binary files /dev/null and b/public/terrain/19/858546/353910.terrain differ diff --git a/public/terrain/19/858546/353911.terrain b/public/terrain/19/858546/353911.terrain new file mode 100644 index 000000000..c44eb6a5d Binary files /dev/null and b/public/terrain/19/858546/353911.terrain differ diff --git a/public/terrain/19/858546/353912.terrain b/public/terrain/19/858546/353912.terrain new file mode 100644 index 000000000..a21cfbbd8 Binary files /dev/null and b/public/terrain/19/858546/353912.terrain differ diff --git a/public/terrain/19/858546/353913.terrain b/public/terrain/19/858546/353913.terrain new file mode 100644 index 000000000..7aa718cf5 Binary files /dev/null and b/public/terrain/19/858546/353913.terrain differ diff --git a/public/terrain/19/858546/353914.terrain b/public/terrain/19/858546/353914.terrain new file mode 100644 index 000000000..41e4e7d3d Binary files /dev/null and b/public/terrain/19/858546/353914.terrain differ diff --git a/public/terrain/19/858546/353915.terrain b/public/terrain/19/858546/353915.terrain new file mode 100644 index 000000000..61ae31339 Binary files /dev/null and b/public/terrain/19/858546/353915.terrain differ diff --git a/public/terrain/19/858546/353916.terrain b/public/terrain/19/858546/353916.terrain new file mode 100644 index 000000000..98c9dab24 Binary files /dev/null and b/public/terrain/19/858546/353916.terrain differ diff --git a/public/terrain/19/858546/353917.terrain b/public/terrain/19/858546/353917.terrain new file mode 100644 index 000000000..7d90ec4c4 Binary files /dev/null and b/public/terrain/19/858546/353917.terrain differ diff --git a/public/terrain/19/858546/353918.terrain b/public/terrain/19/858546/353918.terrain new file mode 100644 index 000000000..b0c13989d Binary files /dev/null and b/public/terrain/19/858546/353918.terrain differ diff --git a/public/terrain/19/858546/353919.terrain b/public/terrain/19/858546/353919.terrain new file mode 100644 index 000000000..a5c658c4e Binary files /dev/null and b/public/terrain/19/858546/353919.terrain differ diff --git a/public/terrain/19/858546/353920.terrain b/public/terrain/19/858546/353920.terrain new file mode 100644 index 000000000..502ec01da Binary files /dev/null and b/public/terrain/19/858546/353920.terrain differ diff --git a/public/terrain/19/858546/353921.terrain b/public/terrain/19/858546/353921.terrain new file mode 100644 index 000000000..84e3e580a Binary files /dev/null and b/public/terrain/19/858546/353921.terrain differ diff --git a/public/terrain/19/858546/353922.terrain b/public/terrain/19/858546/353922.terrain new file mode 100644 index 000000000..46fb5be67 Binary files /dev/null and b/public/terrain/19/858546/353922.terrain differ diff --git a/public/terrain/19/858546/353923.terrain b/public/terrain/19/858546/353923.terrain new file mode 100644 index 000000000..0ba93cfd7 Binary files /dev/null and b/public/terrain/19/858546/353923.terrain differ diff --git a/public/terrain/19/858546/353924.terrain b/public/terrain/19/858546/353924.terrain new file mode 100644 index 000000000..004405e58 Binary files /dev/null and b/public/terrain/19/858546/353924.terrain differ diff --git a/public/terrain/19/858546/353925.terrain b/public/terrain/19/858546/353925.terrain new file mode 100644 index 000000000..e6a391363 Binary files /dev/null and b/public/terrain/19/858546/353925.terrain differ diff --git a/public/terrain/19/858546/353926.terrain b/public/terrain/19/858546/353926.terrain new file mode 100644 index 000000000..e7f4c9a05 Binary files /dev/null and b/public/terrain/19/858546/353926.terrain differ diff --git a/public/terrain/19/858546/353927.terrain b/public/terrain/19/858546/353927.terrain new file mode 100644 index 000000000..7fd85760e Binary files /dev/null and b/public/terrain/19/858546/353927.terrain differ diff --git a/public/terrain/19/858546/353928.terrain b/public/terrain/19/858546/353928.terrain new file mode 100644 index 000000000..e4c79db07 Binary files /dev/null and b/public/terrain/19/858546/353928.terrain differ diff --git a/public/terrain/19/858546/353929.terrain b/public/terrain/19/858546/353929.terrain new file mode 100644 index 000000000..4798b590e Binary files /dev/null and b/public/terrain/19/858546/353929.terrain differ diff --git a/public/terrain/19/858546/353930.terrain b/public/terrain/19/858546/353930.terrain new file mode 100644 index 000000000..4cb660bce Binary files /dev/null and b/public/terrain/19/858546/353930.terrain differ diff --git a/public/terrain/19/858546/353931.terrain b/public/terrain/19/858546/353931.terrain new file mode 100644 index 000000000..027b74702 Binary files /dev/null and b/public/terrain/19/858546/353931.terrain differ diff --git a/public/terrain/19/858546/353932.terrain b/public/terrain/19/858546/353932.terrain new file mode 100644 index 000000000..e1be76677 Binary files /dev/null and b/public/terrain/19/858546/353932.terrain differ diff --git a/public/terrain/19/858546/353933.terrain b/public/terrain/19/858546/353933.terrain new file mode 100644 index 000000000..5ec8b9cc9 Binary files /dev/null and b/public/terrain/19/858546/353933.terrain differ diff --git a/public/terrain/19/858546/353934.terrain b/public/terrain/19/858546/353934.terrain new file mode 100644 index 000000000..25f889234 Binary files /dev/null and b/public/terrain/19/858546/353934.terrain differ diff --git a/public/terrain/19/858546/353935.terrain b/public/terrain/19/858546/353935.terrain new file mode 100644 index 000000000..5f74cc9cc Binary files /dev/null and b/public/terrain/19/858546/353935.terrain differ diff --git a/public/terrain/19/858546/353936.terrain b/public/terrain/19/858546/353936.terrain new file mode 100644 index 000000000..46e308623 Binary files /dev/null and b/public/terrain/19/858546/353936.terrain differ diff --git a/public/terrain/19/858546/353937.terrain b/public/terrain/19/858546/353937.terrain new file mode 100644 index 000000000..bf0c1cf9e Binary files /dev/null and b/public/terrain/19/858546/353937.terrain differ diff --git a/public/terrain/19/858546/353938.terrain b/public/terrain/19/858546/353938.terrain new file mode 100644 index 000000000..fe3c1961d Binary files /dev/null and b/public/terrain/19/858546/353938.terrain differ diff --git a/public/terrain/19/858546/353939.terrain b/public/terrain/19/858546/353939.terrain new file mode 100644 index 000000000..148dc425b Binary files /dev/null and b/public/terrain/19/858546/353939.terrain differ diff --git a/public/terrain/19/858546/353940.terrain b/public/terrain/19/858546/353940.terrain new file mode 100644 index 000000000..600d27a29 Binary files /dev/null and b/public/terrain/19/858546/353940.terrain differ diff --git a/public/terrain/19/858546/353941.terrain b/public/terrain/19/858546/353941.terrain new file mode 100644 index 000000000..ab6e8d19d Binary files /dev/null and b/public/terrain/19/858546/353941.terrain differ diff --git a/public/terrain/19/858546/353942.terrain b/public/terrain/19/858546/353942.terrain new file mode 100644 index 000000000..492974ae4 Binary files /dev/null and b/public/terrain/19/858546/353942.terrain differ diff --git a/public/terrain/19/858546/353943.terrain b/public/terrain/19/858546/353943.terrain new file mode 100644 index 000000000..1d7374008 Binary files /dev/null and b/public/terrain/19/858546/353943.terrain differ diff --git a/public/terrain/19/858546/353944.terrain b/public/terrain/19/858546/353944.terrain new file mode 100644 index 000000000..e4bbdb453 Binary files /dev/null and b/public/terrain/19/858546/353944.terrain differ diff --git a/public/terrain/19/858546/353945.terrain b/public/terrain/19/858546/353945.terrain new file mode 100644 index 000000000..f50b62c06 Binary files /dev/null and b/public/terrain/19/858546/353945.terrain differ diff --git a/public/terrain/19/858546/353946.terrain b/public/terrain/19/858546/353946.terrain new file mode 100644 index 000000000..77f9b702e Binary files /dev/null and b/public/terrain/19/858546/353946.terrain differ diff --git a/public/terrain/19/858546/353947.terrain b/public/terrain/19/858546/353947.terrain new file mode 100644 index 000000000..81c4c803b Binary files /dev/null and b/public/terrain/19/858546/353947.terrain differ diff --git a/public/terrain/19/858546/353948.terrain b/public/terrain/19/858546/353948.terrain new file mode 100644 index 000000000..34a269823 Binary files /dev/null and b/public/terrain/19/858546/353948.terrain differ diff --git a/public/terrain/19/858546/353949.terrain b/public/terrain/19/858546/353949.terrain new file mode 100644 index 000000000..1bd7c6617 Binary files /dev/null and b/public/terrain/19/858546/353949.terrain differ diff --git a/public/terrain/19/858546/353950.terrain b/public/terrain/19/858546/353950.terrain new file mode 100644 index 000000000..792c90310 Binary files /dev/null and b/public/terrain/19/858546/353950.terrain differ diff --git a/public/terrain/19/858546/353951.terrain b/public/terrain/19/858546/353951.terrain new file mode 100644 index 000000000..2ec995fb1 Binary files /dev/null and b/public/terrain/19/858546/353951.terrain differ diff --git a/public/terrain/19/858546/353952.terrain b/public/terrain/19/858546/353952.terrain new file mode 100644 index 000000000..8e9df49e5 Binary files /dev/null and b/public/terrain/19/858546/353952.terrain differ diff --git a/public/terrain/19/858546/353953.terrain b/public/terrain/19/858546/353953.terrain new file mode 100644 index 000000000..df52ae040 Binary files /dev/null and b/public/terrain/19/858546/353953.terrain differ diff --git a/public/terrain/19/858546/353954.terrain b/public/terrain/19/858546/353954.terrain new file mode 100644 index 000000000..94844023c Binary files /dev/null and b/public/terrain/19/858546/353954.terrain differ diff --git a/public/terrain/19/858546/353955.terrain b/public/terrain/19/858546/353955.terrain new file mode 100644 index 000000000..3e6adbae2 Binary files /dev/null and b/public/terrain/19/858546/353955.terrain differ diff --git a/public/terrain/19/858546/353956.terrain b/public/terrain/19/858546/353956.terrain new file mode 100644 index 000000000..613d95fa1 Binary files /dev/null and b/public/terrain/19/858546/353956.terrain differ diff --git a/public/terrain/19/858546/353957.terrain b/public/terrain/19/858546/353957.terrain new file mode 100644 index 000000000..d70e804dc Binary files /dev/null and b/public/terrain/19/858546/353957.terrain differ diff --git a/public/terrain/19/858546/353958.terrain b/public/terrain/19/858546/353958.terrain new file mode 100644 index 000000000..e4d8c5962 Binary files /dev/null and b/public/terrain/19/858546/353958.terrain differ diff --git a/public/terrain/19/858546/353959.terrain b/public/terrain/19/858546/353959.terrain new file mode 100644 index 000000000..9db72641f Binary files /dev/null and b/public/terrain/19/858546/353959.terrain differ diff --git a/public/terrain/19/858546/353960.terrain b/public/terrain/19/858546/353960.terrain new file mode 100644 index 000000000..fdc5d20ce Binary files /dev/null and b/public/terrain/19/858546/353960.terrain differ diff --git a/public/terrain/19/858546/353961.terrain b/public/terrain/19/858546/353961.terrain new file mode 100644 index 000000000..12550f50f Binary files /dev/null and b/public/terrain/19/858546/353961.terrain differ diff --git a/public/terrain/19/858546/353962.terrain b/public/terrain/19/858546/353962.terrain new file mode 100644 index 000000000..44d7de9d7 Binary files /dev/null and b/public/terrain/19/858546/353962.terrain differ diff --git a/public/terrain/19/858546/353963.terrain b/public/terrain/19/858546/353963.terrain new file mode 100644 index 000000000..b6c717fe0 Binary files /dev/null and b/public/terrain/19/858546/353963.terrain differ diff --git a/public/terrain/19/858546/353964.terrain b/public/terrain/19/858546/353964.terrain new file mode 100644 index 000000000..31c2303c1 Binary files /dev/null and b/public/terrain/19/858546/353964.terrain differ diff --git a/public/terrain/19/858546/353965.terrain b/public/terrain/19/858546/353965.terrain new file mode 100644 index 000000000..2955cc529 Binary files /dev/null and b/public/terrain/19/858546/353965.terrain differ diff --git a/public/terrain/19/858546/353966.terrain b/public/terrain/19/858546/353966.terrain new file mode 100644 index 000000000..88355ed92 Binary files /dev/null and b/public/terrain/19/858546/353966.terrain differ diff --git a/public/terrain/19/858546/353967.terrain b/public/terrain/19/858546/353967.terrain new file mode 100644 index 000000000..f14cfb28d Binary files /dev/null and b/public/terrain/19/858546/353967.terrain differ diff --git a/public/terrain/19/858546/353968.terrain b/public/terrain/19/858546/353968.terrain new file mode 100644 index 000000000..dc291c191 Binary files /dev/null and b/public/terrain/19/858546/353968.terrain differ diff --git a/public/terrain/19/858546/353969.terrain b/public/terrain/19/858546/353969.terrain new file mode 100644 index 000000000..d554d22ca Binary files /dev/null and b/public/terrain/19/858546/353969.terrain differ diff --git a/public/terrain/19/858546/353970.terrain b/public/terrain/19/858546/353970.terrain new file mode 100644 index 000000000..c0a32bc43 Binary files /dev/null and b/public/terrain/19/858546/353970.terrain differ diff --git a/public/terrain/19/858546/353971.terrain b/public/terrain/19/858546/353971.terrain new file mode 100644 index 000000000..cac7cb160 Binary files /dev/null and b/public/terrain/19/858546/353971.terrain differ diff --git a/public/terrain/19/858546/353972.terrain b/public/terrain/19/858546/353972.terrain new file mode 100644 index 000000000..02556800e Binary files /dev/null and b/public/terrain/19/858546/353972.terrain differ diff --git a/public/terrain/19/858546/353973.terrain b/public/terrain/19/858546/353973.terrain new file mode 100644 index 000000000..137e98628 Binary files /dev/null and b/public/terrain/19/858546/353973.terrain differ diff --git a/public/terrain/19/858546/353974.terrain b/public/terrain/19/858546/353974.terrain new file mode 100644 index 000000000..5e78858f7 Binary files /dev/null and b/public/terrain/19/858546/353974.terrain differ diff --git a/public/terrain/19/858546/353975.terrain b/public/terrain/19/858546/353975.terrain new file mode 100644 index 000000000..9dde3572a Binary files /dev/null and b/public/terrain/19/858546/353975.terrain differ diff --git a/public/terrain/19/858546/353976.terrain b/public/terrain/19/858546/353976.terrain new file mode 100644 index 000000000..fdf48970b Binary files /dev/null and b/public/terrain/19/858546/353976.terrain differ diff --git a/public/terrain/19/858546/353977.terrain b/public/terrain/19/858546/353977.terrain new file mode 100644 index 000000000..37f34907a Binary files /dev/null and b/public/terrain/19/858546/353977.terrain differ diff --git a/public/terrain/19/858546/353978.terrain b/public/terrain/19/858546/353978.terrain new file mode 100644 index 000000000..a327da12f Binary files /dev/null and b/public/terrain/19/858546/353978.terrain differ diff --git a/public/terrain/19/858546/353979.terrain b/public/terrain/19/858546/353979.terrain new file mode 100644 index 000000000..8df37fca7 Binary files /dev/null and b/public/terrain/19/858546/353979.terrain differ diff --git a/public/terrain/19/858546/353980.terrain b/public/terrain/19/858546/353980.terrain new file mode 100644 index 000000000..74bc26102 Binary files /dev/null and b/public/terrain/19/858546/353980.terrain differ diff --git a/public/terrain/19/858546/353981.terrain b/public/terrain/19/858546/353981.terrain new file mode 100644 index 000000000..db8139d0a Binary files /dev/null and b/public/terrain/19/858546/353981.terrain differ diff --git a/public/terrain/19/858546/353982.terrain b/public/terrain/19/858546/353982.terrain new file mode 100644 index 000000000..e1f9bd384 Binary files /dev/null and b/public/terrain/19/858546/353982.terrain differ diff --git a/public/terrain/19/858546/353983.terrain b/public/terrain/19/858546/353983.terrain new file mode 100644 index 000000000..4903b4d50 Binary files /dev/null and b/public/terrain/19/858546/353983.terrain differ diff --git a/public/terrain/19/858546/353984.terrain b/public/terrain/19/858546/353984.terrain new file mode 100644 index 000000000..b67b49fb8 Binary files /dev/null and b/public/terrain/19/858546/353984.terrain differ diff --git a/public/terrain/19/858546/353985.terrain b/public/terrain/19/858546/353985.terrain new file mode 100644 index 000000000..0d06900d0 Binary files /dev/null and b/public/terrain/19/858546/353985.terrain differ diff --git a/public/terrain/19/858546/353986.terrain b/public/terrain/19/858546/353986.terrain new file mode 100644 index 000000000..7e982a893 Binary files /dev/null and b/public/terrain/19/858546/353986.terrain differ diff --git a/public/terrain/19/858546/353987.terrain b/public/terrain/19/858546/353987.terrain new file mode 100644 index 000000000..dd41bf7e3 Binary files /dev/null and b/public/terrain/19/858546/353987.terrain differ diff --git a/public/terrain/19/858546/353988.terrain b/public/terrain/19/858546/353988.terrain new file mode 100644 index 000000000..025baa84b Binary files /dev/null and b/public/terrain/19/858546/353988.terrain differ diff --git a/public/terrain/19/858546/353989.terrain b/public/terrain/19/858546/353989.terrain new file mode 100644 index 000000000..fb8ad129c Binary files /dev/null and b/public/terrain/19/858546/353989.terrain differ diff --git a/public/terrain/19/858546/353990.terrain b/public/terrain/19/858546/353990.terrain new file mode 100644 index 000000000..ba25d82d2 Binary files /dev/null and b/public/terrain/19/858546/353990.terrain differ diff --git a/public/terrain/19/858546/353991.terrain b/public/terrain/19/858546/353991.terrain new file mode 100644 index 000000000..7c80b760b Binary files /dev/null and b/public/terrain/19/858546/353991.terrain differ diff --git a/public/terrain/19/858546/353992.terrain b/public/terrain/19/858546/353992.terrain new file mode 100644 index 000000000..30b77c4fe Binary files /dev/null and b/public/terrain/19/858546/353992.terrain differ diff --git a/public/terrain/19/858546/353993.terrain b/public/terrain/19/858546/353993.terrain new file mode 100644 index 000000000..aac0e9fc1 Binary files /dev/null and b/public/terrain/19/858546/353993.terrain differ diff --git a/public/terrain/19/858546/353994.terrain b/public/terrain/19/858546/353994.terrain new file mode 100644 index 000000000..815ba4b0b Binary files /dev/null and b/public/terrain/19/858546/353994.terrain differ diff --git a/public/terrain/19/858546/353995.terrain b/public/terrain/19/858546/353995.terrain new file mode 100644 index 000000000..cce0af5f5 Binary files /dev/null and b/public/terrain/19/858546/353995.terrain differ diff --git a/public/terrain/19/858546/353996.terrain b/public/terrain/19/858546/353996.terrain new file mode 100644 index 000000000..bd4e686ab Binary files /dev/null and b/public/terrain/19/858546/353996.terrain differ diff --git a/public/terrain/19/858546/353997.terrain b/public/terrain/19/858546/353997.terrain new file mode 100644 index 000000000..52860a906 Binary files /dev/null and b/public/terrain/19/858546/353997.terrain differ diff --git a/public/terrain/19/858546/353998.terrain b/public/terrain/19/858546/353998.terrain new file mode 100644 index 000000000..7ac5aa9e6 Binary files /dev/null and b/public/terrain/19/858546/353998.terrain differ diff --git a/public/terrain/19/858546/353999.terrain b/public/terrain/19/858546/353999.terrain new file mode 100644 index 000000000..0eec844b9 Binary files /dev/null and b/public/terrain/19/858546/353999.terrain differ diff --git a/public/terrain/19/858546/354000.terrain b/public/terrain/19/858546/354000.terrain new file mode 100644 index 000000000..fcf025eea Binary files /dev/null and b/public/terrain/19/858546/354000.terrain differ diff --git a/public/terrain/19/858546/354001.terrain b/public/terrain/19/858546/354001.terrain new file mode 100644 index 000000000..08d58a0ac Binary files /dev/null and b/public/terrain/19/858546/354001.terrain differ diff --git a/public/terrain/19/858546/354002.terrain b/public/terrain/19/858546/354002.terrain new file mode 100644 index 000000000..61f177f08 Binary files /dev/null and b/public/terrain/19/858546/354002.terrain differ diff --git a/public/terrain/19/858546/354003.terrain b/public/terrain/19/858546/354003.terrain new file mode 100644 index 000000000..5e0093bd7 Binary files /dev/null and b/public/terrain/19/858546/354003.terrain differ diff --git a/public/terrain/19/858546/354004.terrain b/public/terrain/19/858546/354004.terrain new file mode 100644 index 000000000..9aa17ce9c Binary files /dev/null and b/public/terrain/19/858546/354004.terrain differ diff --git a/public/terrain/19/858546/354005.terrain b/public/terrain/19/858546/354005.terrain new file mode 100644 index 000000000..6247aaf42 Binary files /dev/null and b/public/terrain/19/858546/354005.terrain differ diff --git a/public/terrain/19/858546/354006.terrain b/public/terrain/19/858546/354006.terrain new file mode 100644 index 000000000..6774a6a10 Binary files /dev/null and b/public/terrain/19/858546/354006.terrain differ diff --git a/public/terrain/19/858546/354007.terrain b/public/terrain/19/858546/354007.terrain new file mode 100644 index 000000000..6ae5dd530 Binary files /dev/null and b/public/terrain/19/858546/354007.terrain differ diff --git a/public/terrain/19/858546/354008.terrain b/public/terrain/19/858546/354008.terrain new file mode 100644 index 000000000..5c272c6db Binary files /dev/null and b/public/terrain/19/858546/354008.terrain differ diff --git a/public/terrain/19/858546/354009.terrain b/public/terrain/19/858546/354009.terrain new file mode 100644 index 000000000..fe52bfbb5 Binary files /dev/null and b/public/terrain/19/858546/354009.terrain differ diff --git a/public/terrain/19/858546/354010.terrain b/public/terrain/19/858546/354010.terrain new file mode 100644 index 000000000..4cd779e8c Binary files /dev/null and b/public/terrain/19/858546/354010.terrain differ diff --git a/public/terrain/19/858546/354011.terrain b/public/terrain/19/858546/354011.terrain new file mode 100644 index 000000000..c57b74d89 Binary files /dev/null and b/public/terrain/19/858546/354011.terrain differ diff --git a/public/terrain/19/858546/354012.terrain b/public/terrain/19/858546/354012.terrain new file mode 100644 index 000000000..f9127ab47 Binary files /dev/null and b/public/terrain/19/858546/354012.terrain differ diff --git a/public/terrain/19/858546/354013.terrain b/public/terrain/19/858546/354013.terrain new file mode 100644 index 000000000..e70753241 Binary files /dev/null and b/public/terrain/19/858546/354013.terrain differ diff --git a/public/terrain/19/858546/354014.terrain b/public/terrain/19/858546/354014.terrain new file mode 100644 index 000000000..0337e54da Binary files /dev/null and b/public/terrain/19/858546/354014.terrain differ diff --git a/public/terrain/19/858546/354015.terrain b/public/terrain/19/858546/354015.terrain new file mode 100644 index 000000000..a84d37c87 Binary files /dev/null and b/public/terrain/19/858546/354015.terrain differ diff --git a/public/terrain/19/858546/354016.terrain b/public/terrain/19/858546/354016.terrain new file mode 100644 index 000000000..e440ef169 Binary files /dev/null and b/public/terrain/19/858546/354016.terrain differ diff --git a/public/terrain/19/858546/354017.terrain b/public/terrain/19/858546/354017.terrain new file mode 100644 index 000000000..012c2b77e Binary files /dev/null and b/public/terrain/19/858546/354017.terrain differ diff --git a/public/terrain/19/858546/354018.terrain b/public/terrain/19/858546/354018.terrain new file mode 100644 index 000000000..a75aba629 Binary files /dev/null and b/public/terrain/19/858546/354018.terrain differ diff --git a/public/terrain/19/858546/354019.terrain b/public/terrain/19/858546/354019.terrain new file mode 100644 index 000000000..aa7a0d018 Binary files /dev/null and b/public/terrain/19/858546/354019.terrain differ diff --git a/public/terrain/19/858546/354020.terrain b/public/terrain/19/858546/354020.terrain new file mode 100644 index 000000000..22631e559 Binary files /dev/null and b/public/terrain/19/858546/354020.terrain differ diff --git a/public/terrain/19/858546/354021.terrain b/public/terrain/19/858546/354021.terrain new file mode 100644 index 000000000..a9c73f20b Binary files /dev/null and b/public/terrain/19/858546/354021.terrain differ diff --git a/public/terrain/19/858546/354022.terrain b/public/terrain/19/858546/354022.terrain new file mode 100644 index 000000000..4a3675b37 Binary files /dev/null and b/public/terrain/19/858546/354022.terrain differ diff --git a/public/terrain/19/858546/354023.terrain b/public/terrain/19/858546/354023.terrain new file mode 100644 index 000000000..fcb7ff2e4 Binary files /dev/null and b/public/terrain/19/858546/354023.terrain differ diff --git a/public/terrain/19/858546/354024.terrain b/public/terrain/19/858546/354024.terrain new file mode 100644 index 000000000..7df290fa6 Binary files /dev/null and b/public/terrain/19/858546/354024.terrain differ diff --git a/public/terrain/19/858546/354025.terrain b/public/terrain/19/858546/354025.terrain new file mode 100644 index 000000000..c0b66c391 Binary files /dev/null and b/public/terrain/19/858546/354025.terrain differ diff --git a/public/terrain/19/858546/354026.terrain b/public/terrain/19/858546/354026.terrain new file mode 100644 index 000000000..b9d33e5ab Binary files /dev/null and b/public/terrain/19/858546/354026.terrain differ diff --git a/public/terrain/19/858546/354027.terrain b/public/terrain/19/858546/354027.terrain new file mode 100644 index 000000000..bec6ff7d5 Binary files /dev/null and b/public/terrain/19/858546/354027.terrain differ diff --git a/public/terrain/19/858546/354028.terrain b/public/terrain/19/858546/354028.terrain new file mode 100644 index 000000000..cbbdb6905 Binary files /dev/null and b/public/terrain/19/858546/354028.terrain differ diff --git a/public/terrain/19/858546/354029.terrain b/public/terrain/19/858546/354029.terrain new file mode 100644 index 000000000..32b7362b0 Binary files /dev/null and b/public/terrain/19/858546/354029.terrain differ diff --git a/public/terrain/19/858546/354030.terrain b/public/terrain/19/858546/354030.terrain new file mode 100644 index 000000000..36d229265 Binary files /dev/null and b/public/terrain/19/858546/354030.terrain differ diff --git a/public/terrain/19/858546/354031.terrain b/public/terrain/19/858546/354031.terrain new file mode 100644 index 000000000..133fc0e06 Binary files /dev/null and b/public/terrain/19/858546/354031.terrain differ diff --git a/public/terrain/19/858546/354032.terrain b/public/terrain/19/858546/354032.terrain new file mode 100644 index 000000000..673a206a8 Binary files /dev/null and b/public/terrain/19/858546/354032.terrain differ diff --git a/public/terrain/19/858546/354033.terrain b/public/terrain/19/858546/354033.terrain new file mode 100644 index 000000000..8a01364c1 Binary files /dev/null and b/public/terrain/19/858546/354033.terrain differ diff --git a/public/terrain/19/858546/354034.terrain b/public/terrain/19/858546/354034.terrain new file mode 100644 index 000000000..1bfa835a9 Binary files /dev/null and b/public/terrain/19/858546/354034.terrain differ diff --git a/public/terrain/19/858546/354035.terrain b/public/terrain/19/858546/354035.terrain new file mode 100644 index 000000000..be5f980cb Binary files /dev/null and b/public/terrain/19/858546/354035.terrain differ diff --git a/public/terrain/19/858546/354036.terrain b/public/terrain/19/858546/354036.terrain new file mode 100644 index 000000000..0f2f7379f Binary files /dev/null and b/public/terrain/19/858546/354036.terrain differ diff --git a/public/terrain/19/858546/354037.terrain b/public/terrain/19/858546/354037.terrain new file mode 100644 index 000000000..95a4adb9f Binary files /dev/null and b/public/terrain/19/858546/354037.terrain differ diff --git a/public/terrain/19/858546/354038.terrain b/public/terrain/19/858546/354038.terrain new file mode 100644 index 000000000..a9eb8df00 Binary files /dev/null and b/public/terrain/19/858546/354038.terrain differ diff --git a/public/terrain/19/858546/354039.terrain b/public/terrain/19/858546/354039.terrain new file mode 100644 index 000000000..db252cc7e Binary files /dev/null and b/public/terrain/19/858546/354039.terrain differ diff --git a/public/terrain/19/858546/354040.terrain b/public/terrain/19/858546/354040.terrain new file mode 100644 index 000000000..9329215f7 Binary files /dev/null and b/public/terrain/19/858546/354040.terrain differ diff --git a/public/terrain/19/858546/354041.terrain b/public/terrain/19/858546/354041.terrain new file mode 100644 index 000000000..06af88635 Binary files /dev/null and b/public/terrain/19/858546/354041.terrain differ diff --git a/public/terrain/19/858546/354042.terrain b/public/terrain/19/858546/354042.terrain new file mode 100644 index 000000000..0a9ce3b5c Binary files /dev/null and b/public/terrain/19/858546/354042.terrain differ diff --git a/public/terrain/19/858546/354043.terrain b/public/terrain/19/858546/354043.terrain new file mode 100644 index 000000000..a69137bb9 Binary files /dev/null and b/public/terrain/19/858546/354043.terrain differ diff --git a/public/terrain/19/858546/354044.terrain b/public/terrain/19/858546/354044.terrain new file mode 100644 index 000000000..7e031e4a5 Binary files /dev/null and b/public/terrain/19/858546/354044.terrain differ diff --git a/public/terrain/19/858546/354045.terrain b/public/terrain/19/858546/354045.terrain new file mode 100644 index 000000000..8b8987570 Binary files /dev/null and b/public/terrain/19/858546/354045.terrain differ diff --git a/public/terrain/19/858546/354046.terrain b/public/terrain/19/858546/354046.terrain new file mode 100644 index 000000000..7345fedea Binary files /dev/null and b/public/terrain/19/858546/354046.terrain differ diff --git a/public/terrain/19/858546/354047.terrain b/public/terrain/19/858546/354047.terrain new file mode 100644 index 000000000..314aae7a1 Binary files /dev/null and b/public/terrain/19/858546/354047.terrain differ diff --git a/public/terrain/19/858546/354048.terrain b/public/terrain/19/858546/354048.terrain new file mode 100644 index 000000000..4124840bb Binary files /dev/null and b/public/terrain/19/858546/354048.terrain differ diff --git a/public/terrain/19/858546/354049.terrain b/public/terrain/19/858546/354049.terrain new file mode 100644 index 000000000..8a34ed5f6 Binary files /dev/null and b/public/terrain/19/858546/354049.terrain differ diff --git a/public/terrain/19/858546/354050.terrain b/public/terrain/19/858546/354050.terrain new file mode 100644 index 000000000..51eeb4960 Binary files /dev/null and b/public/terrain/19/858546/354050.terrain differ diff --git a/public/terrain/19/858546/354051.terrain b/public/terrain/19/858546/354051.terrain new file mode 100644 index 000000000..a4a371b8e Binary files /dev/null and b/public/terrain/19/858546/354051.terrain differ diff --git a/public/terrain/19/858546/354052.terrain b/public/terrain/19/858546/354052.terrain new file mode 100644 index 000000000..e9e74d305 Binary files /dev/null and b/public/terrain/19/858546/354052.terrain differ diff --git a/public/terrain/19/858546/354053.terrain b/public/terrain/19/858546/354053.terrain new file mode 100644 index 000000000..58e9d5b5a Binary files /dev/null and b/public/terrain/19/858546/354053.terrain differ diff --git a/public/terrain/19/858546/354054.terrain b/public/terrain/19/858546/354054.terrain new file mode 100644 index 000000000..44c53948f Binary files /dev/null and b/public/terrain/19/858546/354054.terrain differ diff --git a/public/terrain/19/858546/354055.terrain b/public/terrain/19/858546/354055.terrain new file mode 100644 index 000000000..5c834ee1d Binary files /dev/null and b/public/terrain/19/858546/354055.terrain differ diff --git a/public/terrain/19/858546/354056.terrain b/public/terrain/19/858546/354056.terrain new file mode 100644 index 000000000..9fb094612 Binary files /dev/null and b/public/terrain/19/858546/354056.terrain differ diff --git a/public/terrain/19/858546/354057.terrain b/public/terrain/19/858546/354057.terrain new file mode 100644 index 000000000..36dc036ed Binary files /dev/null and b/public/terrain/19/858546/354057.terrain differ diff --git a/public/terrain/19/858546/354058.terrain b/public/terrain/19/858546/354058.terrain new file mode 100644 index 000000000..0e9afc294 Binary files /dev/null and b/public/terrain/19/858546/354058.terrain differ diff --git a/public/terrain/19/858546/354059.terrain b/public/terrain/19/858546/354059.terrain new file mode 100644 index 000000000..58b7c10a1 Binary files /dev/null and b/public/terrain/19/858546/354059.terrain differ diff --git a/public/terrain/19/858547/353743.terrain b/public/terrain/19/858547/353743.terrain new file mode 100644 index 000000000..b5904821b Binary files /dev/null and b/public/terrain/19/858547/353743.terrain differ diff --git a/public/terrain/19/858547/353744.terrain b/public/terrain/19/858547/353744.terrain new file mode 100644 index 000000000..52f6ae0c2 Binary files /dev/null and b/public/terrain/19/858547/353744.terrain differ diff --git a/public/terrain/19/858547/353745.terrain b/public/terrain/19/858547/353745.terrain new file mode 100644 index 000000000..aafb0b8f1 Binary files /dev/null and b/public/terrain/19/858547/353745.terrain differ diff --git a/public/terrain/19/858547/353746.terrain b/public/terrain/19/858547/353746.terrain new file mode 100644 index 000000000..746f1b79d Binary files /dev/null and b/public/terrain/19/858547/353746.terrain differ diff --git a/public/terrain/19/858547/353747.terrain b/public/terrain/19/858547/353747.terrain new file mode 100644 index 000000000..6c1eb0d0c Binary files /dev/null and b/public/terrain/19/858547/353747.terrain differ diff --git a/public/terrain/19/858547/353748.terrain b/public/terrain/19/858547/353748.terrain new file mode 100644 index 000000000..3f0ea62aa Binary files /dev/null and b/public/terrain/19/858547/353748.terrain differ diff --git a/public/terrain/19/858547/353749.terrain b/public/terrain/19/858547/353749.terrain new file mode 100644 index 000000000..fb9a30eea Binary files /dev/null and b/public/terrain/19/858547/353749.terrain differ diff --git a/public/terrain/19/858547/353750.terrain b/public/terrain/19/858547/353750.terrain new file mode 100644 index 000000000..2982089e2 Binary files /dev/null and b/public/terrain/19/858547/353750.terrain differ diff --git a/public/terrain/19/858547/353751.terrain b/public/terrain/19/858547/353751.terrain new file mode 100644 index 000000000..87fdb3e8c Binary files /dev/null and b/public/terrain/19/858547/353751.terrain differ diff --git a/public/terrain/19/858547/353752.terrain b/public/terrain/19/858547/353752.terrain new file mode 100644 index 000000000..a7711e1dd Binary files /dev/null and b/public/terrain/19/858547/353752.terrain differ diff --git a/public/terrain/19/858547/353753.terrain b/public/terrain/19/858547/353753.terrain new file mode 100644 index 000000000..f70f0e8e5 Binary files /dev/null and b/public/terrain/19/858547/353753.terrain differ diff --git a/public/terrain/19/858547/353754.terrain b/public/terrain/19/858547/353754.terrain new file mode 100644 index 000000000..ec0f64466 Binary files /dev/null and b/public/terrain/19/858547/353754.terrain differ diff --git a/public/terrain/19/858547/353755.terrain b/public/terrain/19/858547/353755.terrain new file mode 100644 index 000000000..74af1563f Binary files /dev/null and b/public/terrain/19/858547/353755.terrain differ diff --git a/public/terrain/19/858547/353756.terrain b/public/terrain/19/858547/353756.terrain new file mode 100644 index 000000000..a5fffbcae Binary files /dev/null and b/public/terrain/19/858547/353756.terrain differ diff --git a/public/terrain/19/858547/353757.terrain b/public/terrain/19/858547/353757.terrain new file mode 100644 index 000000000..7473b7ea7 Binary files /dev/null and b/public/terrain/19/858547/353757.terrain differ diff --git a/public/terrain/19/858547/353758.terrain b/public/terrain/19/858547/353758.terrain new file mode 100644 index 000000000..a4e4753d9 Binary files /dev/null and b/public/terrain/19/858547/353758.terrain differ diff --git a/public/terrain/19/858547/353759.terrain b/public/terrain/19/858547/353759.terrain new file mode 100644 index 000000000..015b643c6 Binary files /dev/null and b/public/terrain/19/858547/353759.terrain differ diff --git a/public/terrain/19/858547/353760.terrain b/public/terrain/19/858547/353760.terrain new file mode 100644 index 000000000..dd67d7228 Binary files /dev/null and b/public/terrain/19/858547/353760.terrain differ diff --git a/public/terrain/19/858547/353761.terrain b/public/terrain/19/858547/353761.terrain new file mode 100644 index 000000000..477591540 Binary files /dev/null and b/public/terrain/19/858547/353761.terrain differ diff --git a/public/terrain/19/858547/353762.terrain b/public/terrain/19/858547/353762.terrain new file mode 100644 index 000000000..14c2c0761 Binary files /dev/null and b/public/terrain/19/858547/353762.terrain differ diff --git a/public/terrain/19/858547/353763.terrain b/public/terrain/19/858547/353763.terrain new file mode 100644 index 000000000..79b6f2ff2 Binary files /dev/null and b/public/terrain/19/858547/353763.terrain differ diff --git a/public/terrain/19/858547/353764.terrain b/public/terrain/19/858547/353764.terrain new file mode 100644 index 000000000..88cb6bdb3 Binary files /dev/null and b/public/terrain/19/858547/353764.terrain differ diff --git a/public/terrain/19/858547/353765.terrain b/public/terrain/19/858547/353765.terrain new file mode 100644 index 000000000..edf9f8bf4 Binary files /dev/null and b/public/terrain/19/858547/353765.terrain differ diff --git a/public/terrain/19/858547/353766.terrain b/public/terrain/19/858547/353766.terrain new file mode 100644 index 000000000..85493d0e7 Binary files /dev/null and b/public/terrain/19/858547/353766.terrain differ diff --git a/public/terrain/19/858547/353767.terrain b/public/terrain/19/858547/353767.terrain new file mode 100644 index 000000000..63550aa70 Binary files /dev/null and b/public/terrain/19/858547/353767.terrain differ diff --git a/public/terrain/19/858547/353768.terrain b/public/terrain/19/858547/353768.terrain new file mode 100644 index 000000000..7e277e53b Binary files /dev/null and b/public/terrain/19/858547/353768.terrain differ diff --git a/public/terrain/19/858547/353769.terrain b/public/terrain/19/858547/353769.terrain new file mode 100644 index 000000000..8cd5a85f0 Binary files /dev/null and b/public/terrain/19/858547/353769.terrain differ diff --git a/public/terrain/19/858547/353770.terrain b/public/terrain/19/858547/353770.terrain new file mode 100644 index 000000000..7963d0e66 Binary files /dev/null and b/public/terrain/19/858547/353770.terrain differ diff --git a/public/terrain/19/858547/353771.terrain b/public/terrain/19/858547/353771.terrain new file mode 100644 index 000000000..31fe4190f Binary files /dev/null and b/public/terrain/19/858547/353771.terrain differ diff --git a/public/terrain/19/858547/353772.terrain b/public/terrain/19/858547/353772.terrain new file mode 100644 index 000000000..6590da1dc Binary files /dev/null and b/public/terrain/19/858547/353772.terrain differ diff --git a/public/terrain/19/858547/353773.terrain b/public/terrain/19/858547/353773.terrain new file mode 100644 index 000000000..7dbd2f400 Binary files /dev/null and b/public/terrain/19/858547/353773.terrain differ diff --git a/public/terrain/19/858547/353774.terrain b/public/terrain/19/858547/353774.terrain new file mode 100644 index 000000000..743163756 Binary files /dev/null and b/public/terrain/19/858547/353774.terrain differ diff --git a/public/terrain/19/858547/353775.terrain b/public/terrain/19/858547/353775.terrain new file mode 100644 index 000000000..e26e723eb Binary files /dev/null and b/public/terrain/19/858547/353775.terrain differ diff --git a/public/terrain/19/858547/353776.terrain b/public/terrain/19/858547/353776.terrain new file mode 100644 index 000000000..b854b2970 Binary files /dev/null and b/public/terrain/19/858547/353776.terrain differ diff --git a/public/terrain/19/858547/353777.terrain b/public/terrain/19/858547/353777.terrain new file mode 100644 index 000000000..e98abd485 Binary files /dev/null and b/public/terrain/19/858547/353777.terrain differ diff --git a/public/terrain/19/858547/353778.terrain b/public/terrain/19/858547/353778.terrain new file mode 100644 index 000000000..1715dc912 Binary files /dev/null and b/public/terrain/19/858547/353778.terrain differ diff --git a/public/terrain/19/858547/353779.terrain b/public/terrain/19/858547/353779.terrain new file mode 100644 index 000000000..2bf36317f Binary files /dev/null and b/public/terrain/19/858547/353779.terrain differ diff --git a/public/terrain/19/858547/353780.terrain b/public/terrain/19/858547/353780.terrain new file mode 100644 index 000000000..d60a3c41c Binary files /dev/null and b/public/terrain/19/858547/353780.terrain differ diff --git a/public/terrain/19/858547/353781.terrain b/public/terrain/19/858547/353781.terrain new file mode 100644 index 000000000..aa8e3331c Binary files /dev/null and b/public/terrain/19/858547/353781.terrain differ diff --git a/public/terrain/19/858547/353782.terrain b/public/terrain/19/858547/353782.terrain new file mode 100644 index 000000000..bae044cfc Binary files /dev/null and b/public/terrain/19/858547/353782.terrain differ diff --git a/public/terrain/19/858547/353783.terrain b/public/terrain/19/858547/353783.terrain new file mode 100644 index 000000000..e303a0ec7 Binary files /dev/null and b/public/terrain/19/858547/353783.terrain differ diff --git a/public/terrain/19/858547/353784.terrain b/public/terrain/19/858547/353784.terrain new file mode 100644 index 000000000..f540abc02 Binary files /dev/null and b/public/terrain/19/858547/353784.terrain differ diff --git a/public/terrain/19/858547/353785.terrain b/public/terrain/19/858547/353785.terrain new file mode 100644 index 000000000..f33bbca3a Binary files /dev/null and b/public/terrain/19/858547/353785.terrain differ diff --git a/public/terrain/19/858547/353786.terrain b/public/terrain/19/858547/353786.terrain new file mode 100644 index 000000000..e9efa6a13 Binary files /dev/null and b/public/terrain/19/858547/353786.terrain differ diff --git a/public/terrain/19/858547/353787.terrain b/public/terrain/19/858547/353787.terrain new file mode 100644 index 000000000..c4756beff Binary files /dev/null and b/public/terrain/19/858547/353787.terrain differ diff --git a/public/terrain/19/858547/353788.terrain b/public/terrain/19/858547/353788.terrain new file mode 100644 index 000000000..2579f4c36 Binary files /dev/null and b/public/terrain/19/858547/353788.terrain differ diff --git a/public/terrain/19/858547/353789.terrain b/public/terrain/19/858547/353789.terrain new file mode 100644 index 000000000..41378db5e Binary files /dev/null and b/public/terrain/19/858547/353789.terrain differ diff --git a/public/terrain/19/858547/353790.terrain b/public/terrain/19/858547/353790.terrain new file mode 100644 index 000000000..bc9a5d397 Binary files /dev/null and b/public/terrain/19/858547/353790.terrain differ diff --git a/public/terrain/19/858547/353791.terrain b/public/terrain/19/858547/353791.terrain new file mode 100644 index 000000000..5fd093432 Binary files /dev/null and b/public/terrain/19/858547/353791.terrain differ diff --git a/public/terrain/19/858547/353792.terrain b/public/terrain/19/858547/353792.terrain new file mode 100644 index 000000000..f283aba91 Binary files /dev/null and b/public/terrain/19/858547/353792.terrain differ diff --git a/public/terrain/19/858547/353793.terrain b/public/terrain/19/858547/353793.terrain new file mode 100644 index 000000000..fc874c908 Binary files /dev/null and b/public/terrain/19/858547/353793.terrain differ diff --git a/public/terrain/19/858547/353794.terrain b/public/terrain/19/858547/353794.terrain new file mode 100644 index 000000000..ac0b5737c Binary files /dev/null and b/public/terrain/19/858547/353794.terrain differ diff --git a/public/terrain/19/858547/353795.terrain b/public/terrain/19/858547/353795.terrain new file mode 100644 index 000000000..d55bf13cf Binary files /dev/null and b/public/terrain/19/858547/353795.terrain differ diff --git a/public/terrain/19/858547/353796.terrain b/public/terrain/19/858547/353796.terrain new file mode 100644 index 000000000..cc0219ad2 Binary files /dev/null and b/public/terrain/19/858547/353796.terrain differ diff --git a/public/terrain/19/858547/353797.terrain b/public/terrain/19/858547/353797.terrain new file mode 100644 index 000000000..94d279754 Binary files /dev/null and b/public/terrain/19/858547/353797.terrain differ diff --git a/public/terrain/19/858547/353798.terrain b/public/terrain/19/858547/353798.terrain new file mode 100644 index 000000000..758fa1c6e Binary files /dev/null and b/public/terrain/19/858547/353798.terrain differ diff --git a/public/terrain/19/858547/353799.terrain b/public/terrain/19/858547/353799.terrain new file mode 100644 index 000000000..b15fc833c Binary files /dev/null and b/public/terrain/19/858547/353799.terrain differ diff --git a/public/terrain/19/858547/353800.terrain b/public/terrain/19/858547/353800.terrain new file mode 100644 index 000000000..e5854702a Binary files /dev/null and b/public/terrain/19/858547/353800.terrain differ diff --git a/public/terrain/19/858547/353801.terrain b/public/terrain/19/858547/353801.terrain new file mode 100644 index 000000000..841a02ed2 Binary files /dev/null and b/public/terrain/19/858547/353801.terrain differ diff --git a/public/terrain/19/858547/353802.terrain b/public/terrain/19/858547/353802.terrain new file mode 100644 index 000000000..70344e860 Binary files /dev/null and b/public/terrain/19/858547/353802.terrain differ diff --git a/public/terrain/19/858547/353803.terrain b/public/terrain/19/858547/353803.terrain new file mode 100644 index 000000000..6e2d6734a Binary files /dev/null and b/public/terrain/19/858547/353803.terrain differ diff --git a/public/terrain/19/858547/353804.terrain b/public/terrain/19/858547/353804.terrain new file mode 100644 index 000000000..e4653ad80 Binary files /dev/null and b/public/terrain/19/858547/353804.terrain differ diff --git a/public/terrain/19/858547/353805.terrain b/public/terrain/19/858547/353805.terrain new file mode 100644 index 000000000..5b23fa4dc Binary files /dev/null and b/public/terrain/19/858547/353805.terrain differ diff --git a/public/terrain/19/858547/353806.terrain b/public/terrain/19/858547/353806.terrain new file mode 100644 index 000000000..e8d58ca89 Binary files /dev/null and b/public/terrain/19/858547/353806.terrain differ diff --git a/public/terrain/19/858547/353807.terrain b/public/terrain/19/858547/353807.terrain new file mode 100644 index 000000000..944741782 Binary files /dev/null and b/public/terrain/19/858547/353807.terrain differ diff --git a/public/terrain/19/858547/353808.terrain b/public/terrain/19/858547/353808.terrain new file mode 100644 index 000000000..780f5bc9d Binary files /dev/null and b/public/terrain/19/858547/353808.terrain differ diff --git a/public/terrain/19/858547/353809.terrain b/public/terrain/19/858547/353809.terrain new file mode 100644 index 000000000..40cec7a3b Binary files /dev/null and b/public/terrain/19/858547/353809.terrain differ diff --git a/public/terrain/19/858547/353810.terrain b/public/terrain/19/858547/353810.terrain new file mode 100644 index 000000000..f26e52c48 Binary files /dev/null and b/public/terrain/19/858547/353810.terrain differ diff --git a/public/terrain/19/858547/353811.terrain b/public/terrain/19/858547/353811.terrain new file mode 100644 index 000000000..19f6d783c Binary files /dev/null and b/public/terrain/19/858547/353811.terrain differ diff --git a/public/terrain/19/858547/353812.terrain b/public/terrain/19/858547/353812.terrain new file mode 100644 index 000000000..f9013576a Binary files /dev/null and b/public/terrain/19/858547/353812.terrain differ diff --git a/public/terrain/19/858547/353813.terrain b/public/terrain/19/858547/353813.terrain new file mode 100644 index 000000000..cbb8d7515 Binary files /dev/null and b/public/terrain/19/858547/353813.terrain differ diff --git a/public/terrain/19/858547/353814.terrain b/public/terrain/19/858547/353814.terrain new file mode 100644 index 000000000..76db0f945 Binary files /dev/null and b/public/terrain/19/858547/353814.terrain differ diff --git a/public/terrain/19/858547/353815.terrain b/public/terrain/19/858547/353815.terrain new file mode 100644 index 000000000..4fc574e17 Binary files /dev/null and b/public/terrain/19/858547/353815.terrain differ diff --git a/public/terrain/19/858547/353816.terrain b/public/terrain/19/858547/353816.terrain new file mode 100644 index 000000000..bd2658e26 Binary files /dev/null and b/public/terrain/19/858547/353816.terrain differ diff --git a/public/terrain/19/858547/353817.terrain b/public/terrain/19/858547/353817.terrain new file mode 100644 index 000000000..989bebf8d Binary files /dev/null and b/public/terrain/19/858547/353817.terrain differ diff --git a/public/terrain/19/858547/353818.terrain b/public/terrain/19/858547/353818.terrain new file mode 100644 index 000000000..5c104d6a6 Binary files /dev/null and b/public/terrain/19/858547/353818.terrain differ diff --git a/public/terrain/19/858547/353819.terrain b/public/terrain/19/858547/353819.terrain new file mode 100644 index 000000000..8f27b6a26 Binary files /dev/null and b/public/terrain/19/858547/353819.terrain differ diff --git a/public/terrain/19/858547/353820.terrain b/public/terrain/19/858547/353820.terrain new file mode 100644 index 000000000..57294272c Binary files /dev/null and b/public/terrain/19/858547/353820.terrain differ diff --git a/public/terrain/19/858547/353821.terrain b/public/terrain/19/858547/353821.terrain new file mode 100644 index 000000000..f66e91cf7 Binary files /dev/null and b/public/terrain/19/858547/353821.terrain differ diff --git a/public/terrain/19/858547/353822.terrain b/public/terrain/19/858547/353822.terrain new file mode 100644 index 000000000..84ae679ca Binary files /dev/null and b/public/terrain/19/858547/353822.terrain differ diff --git a/public/terrain/19/858547/353823.terrain b/public/terrain/19/858547/353823.terrain new file mode 100644 index 000000000..2d3f4d842 Binary files /dev/null and b/public/terrain/19/858547/353823.terrain differ diff --git a/public/terrain/19/858547/353824.terrain b/public/terrain/19/858547/353824.terrain new file mode 100644 index 000000000..0f3b33491 Binary files /dev/null and b/public/terrain/19/858547/353824.terrain differ diff --git a/public/terrain/19/858547/353825.terrain b/public/terrain/19/858547/353825.terrain new file mode 100644 index 000000000..5ed217eb4 Binary files /dev/null and b/public/terrain/19/858547/353825.terrain differ diff --git a/public/terrain/19/858547/353826.terrain b/public/terrain/19/858547/353826.terrain new file mode 100644 index 000000000..1c6d94de0 Binary files /dev/null and b/public/terrain/19/858547/353826.terrain differ diff --git a/public/terrain/19/858547/353827.terrain b/public/terrain/19/858547/353827.terrain new file mode 100644 index 000000000..e806ca745 Binary files /dev/null and b/public/terrain/19/858547/353827.terrain differ diff --git a/public/terrain/19/858547/353828.terrain b/public/terrain/19/858547/353828.terrain new file mode 100644 index 000000000..c9605ac83 Binary files /dev/null and b/public/terrain/19/858547/353828.terrain differ diff --git a/public/terrain/19/858547/353829.terrain b/public/terrain/19/858547/353829.terrain new file mode 100644 index 000000000..e06bd1673 Binary files /dev/null and b/public/terrain/19/858547/353829.terrain differ diff --git a/public/terrain/19/858547/353830.terrain b/public/terrain/19/858547/353830.terrain new file mode 100644 index 000000000..0bcfabe2b Binary files /dev/null and b/public/terrain/19/858547/353830.terrain differ diff --git a/public/terrain/19/858547/353831.terrain b/public/terrain/19/858547/353831.terrain new file mode 100644 index 000000000..bffef2751 Binary files /dev/null and b/public/terrain/19/858547/353831.terrain differ diff --git a/public/terrain/19/858547/353832.terrain b/public/terrain/19/858547/353832.terrain new file mode 100644 index 000000000..e303ccc0f Binary files /dev/null and b/public/terrain/19/858547/353832.terrain differ diff --git a/public/terrain/19/858547/353833.terrain b/public/terrain/19/858547/353833.terrain new file mode 100644 index 000000000..bbf8303ac Binary files /dev/null and b/public/terrain/19/858547/353833.terrain differ diff --git a/public/terrain/19/858547/353834.terrain b/public/terrain/19/858547/353834.terrain new file mode 100644 index 000000000..1cbc28e47 Binary files /dev/null and b/public/terrain/19/858547/353834.terrain differ diff --git a/public/terrain/19/858547/353835.terrain b/public/terrain/19/858547/353835.terrain new file mode 100644 index 000000000..3e2a77758 Binary files /dev/null and b/public/terrain/19/858547/353835.terrain differ diff --git a/public/terrain/19/858547/353836.terrain b/public/terrain/19/858547/353836.terrain new file mode 100644 index 000000000..380b6326c Binary files /dev/null and b/public/terrain/19/858547/353836.terrain differ diff --git a/public/terrain/19/858547/353837.terrain b/public/terrain/19/858547/353837.terrain new file mode 100644 index 000000000..3c3f2d9a9 Binary files /dev/null and b/public/terrain/19/858547/353837.terrain differ diff --git a/public/terrain/19/858547/353838.terrain b/public/terrain/19/858547/353838.terrain new file mode 100644 index 000000000..891e46fd9 Binary files /dev/null and b/public/terrain/19/858547/353838.terrain differ diff --git a/public/terrain/19/858547/353839.terrain b/public/terrain/19/858547/353839.terrain new file mode 100644 index 000000000..d835ca794 Binary files /dev/null and b/public/terrain/19/858547/353839.terrain differ diff --git a/public/terrain/19/858547/353840.terrain b/public/terrain/19/858547/353840.terrain new file mode 100644 index 000000000..4024e3f71 Binary files /dev/null and b/public/terrain/19/858547/353840.terrain differ diff --git a/public/terrain/19/858547/353841.terrain b/public/terrain/19/858547/353841.terrain new file mode 100644 index 000000000..0655d34b2 Binary files /dev/null and b/public/terrain/19/858547/353841.terrain differ diff --git a/public/terrain/19/858547/353842.terrain b/public/terrain/19/858547/353842.terrain new file mode 100644 index 000000000..214e11bcb Binary files /dev/null and b/public/terrain/19/858547/353842.terrain differ diff --git a/public/terrain/19/858547/353843.terrain b/public/terrain/19/858547/353843.terrain new file mode 100644 index 000000000..2014a9618 Binary files /dev/null and b/public/terrain/19/858547/353843.terrain differ diff --git a/public/terrain/19/858547/353844.terrain b/public/terrain/19/858547/353844.terrain new file mode 100644 index 000000000..34e91e9ea Binary files /dev/null and b/public/terrain/19/858547/353844.terrain differ diff --git a/public/terrain/19/858547/353845.terrain b/public/terrain/19/858547/353845.terrain new file mode 100644 index 000000000..25e59ab54 Binary files /dev/null and b/public/terrain/19/858547/353845.terrain differ diff --git a/public/terrain/19/858547/353846.terrain b/public/terrain/19/858547/353846.terrain new file mode 100644 index 000000000..5784f0dc2 Binary files /dev/null and b/public/terrain/19/858547/353846.terrain differ diff --git a/public/terrain/19/858547/353847.terrain b/public/terrain/19/858547/353847.terrain new file mode 100644 index 000000000..0ea3e5193 Binary files /dev/null and b/public/terrain/19/858547/353847.terrain differ diff --git a/public/terrain/19/858547/353848.terrain b/public/terrain/19/858547/353848.terrain new file mode 100644 index 000000000..4ebcfa578 Binary files /dev/null and b/public/terrain/19/858547/353848.terrain differ diff --git a/public/terrain/19/858547/353849.terrain b/public/terrain/19/858547/353849.terrain new file mode 100644 index 000000000..cf7d0a0c7 Binary files /dev/null and b/public/terrain/19/858547/353849.terrain differ diff --git a/public/terrain/19/858547/353850.terrain b/public/terrain/19/858547/353850.terrain new file mode 100644 index 000000000..ea55bf4dd Binary files /dev/null and b/public/terrain/19/858547/353850.terrain differ diff --git a/public/terrain/19/858547/353851.terrain b/public/terrain/19/858547/353851.terrain new file mode 100644 index 000000000..f36f68a35 Binary files /dev/null and b/public/terrain/19/858547/353851.terrain differ diff --git a/public/terrain/19/858547/353852.terrain b/public/terrain/19/858547/353852.terrain new file mode 100644 index 000000000..3a5d7a9a4 Binary files /dev/null and b/public/terrain/19/858547/353852.terrain differ diff --git a/public/terrain/19/858547/353853.terrain b/public/terrain/19/858547/353853.terrain new file mode 100644 index 000000000..82276d98c Binary files /dev/null and b/public/terrain/19/858547/353853.terrain differ diff --git a/public/terrain/19/858547/353854.terrain b/public/terrain/19/858547/353854.terrain new file mode 100644 index 000000000..c3901d5d8 Binary files /dev/null and b/public/terrain/19/858547/353854.terrain differ diff --git a/public/terrain/19/858547/353855.terrain b/public/terrain/19/858547/353855.terrain new file mode 100644 index 000000000..a1cab5774 Binary files /dev/null and b/public/terrain/19/858547/353855.terrain differ diff --git a/public/terrain/19/858547/353856.terrain b/public/terrain/19/858547/353856.terrain new file mode 100644 index 000000000..6562e5d45 Binary files /dev/null and b/public/terrain/19/858547/353856.terrain differ diff --git a/public/terrain/19/858547/353857.terrain b/public/terrain/19/858547/353857.terrain new file mode 100644 index 000000000..087609172 Binary files /dev/null and b/public/terrain/19/858547/353857.terrain differ diff --git a/public/terrain/19/858547/353858.terrain b/public/terrain/19/858547/353858.terrain new file mode 100644 index 000000000..82578ce35 Binary files /dev/null and b/public/terrain/19/858547/353858.terrain differ diff --git a/public/terrain/19/858547/353859.terrain b/public/terrain/19/858547/353859.terrain new file mode 100644 index 000000000..e9cf07c31 Binary files /dev/null and b/public/terrain/19/858547/353859.terrain differ diff --git a/public/terrain/19/858547/353860.terrain b/public/terrain/19/858547/353860.terrain new file mode 100644 index 000000000..5ff38c072 Binary files /dev/null and b/public/terrain/19/858547/353860.terrain differ diff --git a/public/terrain/19/858547/353861.terrain b/public/terrain/19/858547/353861.terrain new file mode 100644 index 000000000..cb27fd336 Binary files /dev/null and b/public/terrain/19/858547/353861.terrain differ diff --git a/public/terrain/19/858547/353862.terrain b/public/terrain/19/858547/353862.terrain new file mode 100644 index 000000000..228250efb Binary files /dev/null and b/public/terrain/19/858547/353862.terrain differ diff --git a/public/terrain/19/858547/353863.terrain b/public/terrain/19/858547/353863.terrain new file mode 100644 index 000000000..5ab9ec603 Binary files /dev/null and b/public/terrain/19/858547/353863.terrain differ diff --git a/public/terrain/19/858547/353864.terrain b/public/terrain/19/858547/353864.terrain new file mode 100644 index 000000000..6c68e7bf4 Binary files /dev/null and b/public/terrain/19/858547/353864.terrain differ diff --git a/public/terrain/19/858547/353865.terrain b/public/terrain/19/858547/353865.terrain new file mode 100644 index 000000000..7edce2b8d Binary files /dev/null and b/public/terrain/19/858547/353865.terrain differ diff --git a/public/terrain/19/858547/353866.terrain b/public/terrain/19/858547/353866.terrain new file mode 100644 index 000000000..a9c0c7ad5 Binary files /dev/null and b/public/terrain/19/858547/353866.terrain differ diff --git a/public/terrain/19/858547/353867.terrain b/public/terrain/19/858547/353867.terrain new file mode 100644 index 000000000..d422ffe9e Binary files /dev/null and b/public/terrain/19/858547/353867.terrain differ diff --git a/public/terrain/19/858547/353868.terrain b/public/terrain/19/858547/353868.terrain new file mode 100644 index 000000000..a501eef09 Binary files /dev/null and b/public/terrain/19/858547/353868.terrain differ diff --git a/public/terrain/19/858547/353869.terrain b/public/terrain/19/858547/353869.terrain new file mode 100644 index 000000000..8489226d6 Binary files /dev/null and b/public/terrain/19/858547/353869.terrain differ diff --git a/public/terrain/19/858547/353870.terrain b/public/terrain/19/858547/353870.terrain new file mode 100644 index 000000000..91eab9eb6 Binary files /dev/null and b/public/terrain/19/858547/353870.terrain differ diff --git a/public/terrain/19/858547/353871.terrain b/public/terrain/19/858547/353871.terrain new file mode 100644 index 000000000..d282a379c Binary files /dev/null and b/public/terrain/19/858547/353871.terrain differ diff --git a/public/terrain/19/858547/353872.terrain b/public/terrain/19/858547/353872.terrain new file mode 100644 index 000000000..b16293407 Binary files /dev/null and b/public/terrain/19/858547/353872.terrain differ diff --git a/public/terrain/19/858547/353873.terrain b/public/terrain/19/858547/353873.terrain new file mode 100644 index 000000000..81bddc6a6 Binary files /dev/null and b/public/terrain/19/858547/353873.terrain differ diff --git a/public/terrain/19/858547/353874.terrain b/public/terrain/19/858547/353874.terrain new file mode 100644 index 000000000..4d32bc491 Binary files /dev/null and b/public/terrain/19/858547/353874.terrain differ diff --git a/public/terrain/19/858547/353875.terrain b/public/terrain/19/858547/353875.terrain new file mode 100644 index 000000000..7e2fb2df5 Binary files /dev/null and b/public/terrain/19/858547/353875.terrain differ diff --git a/public/terrain/19/858547/353876.terrain b/public/terrain/19/858547/353876.terrain new file mode 100644 index 000000000..85610af34 Binary files /dev/null and b/public/terrain/19/858547/353876.terrain differ diff --git a/public/terrain/19/858547/353877.terrain b/public/terrain/19/858547/353877.terrain new file mode 100644 index 000000000..0b294eb64 Binary files /dev/null and b/public/terrain/19/858547/353877.terrain differ diff --git a/public/terrain/19/858547/353878.terrain b/public/terrain/19/858547/353878.terrain new file mode 100644 index 000000000..2cd088c83 Binary files /dev/null and b/public/terrain/19/858547/353878.terrain differ diff --git a/public/terrain/19/858547/353879.terrain b/public/terrain/19/858547/353879.terrain new file mode 100644 index 000000000..a949bd33a Binary files /dev/null and b/public/terrain/19/858547/353879.terrain differ diff --git a/public/terrain/19/858547/353880.terrain b/public/terrain/19/858547/353880.terrain new file mode 100644 index 000000000..8207a3873 Binary files /dev/null and b/public/terrain/19/858547/353880.terrain differ diff --git a/public/terrain/19/858547/353881.terrain b/public/terrain/19/858547/353881.terrain new file mode 100644 index 000000000..ca53a27e3 Binary files /dev/null and b/public/terrain/19/858547/353881.terrain differ diff --git a/public/terrain/19/858547/353882.terrain b/public/terrain/19/858547/353882.terrain new file mode 100644 index 000000000..88a9c9f32 Binary files /dev/null and b/public/terrain/19/858547/353882.terrain differ diff --git a/public/terrain/19/858547/353883.terrain b/public/terrain/19/858547/353883.terrain new file mode 100644 index 000000000..9799f3e2c Binary files /dev/null and b/public/terrain/19/858547/353883.terrain differ diff --git a/public/terrain/19/858547/353884.terrain b/public/terrain/19/858547/353884.terrain new file mode 100644 index 000000000..5674b8516 Binary files /dev/null and b/public/terrain/19/858547/353884.terrain differ diff --git a/public/terrain/19/858547/353885.terrain b/public/terrain/19/858547/353885.terrain new file mode 100644 index 000000000..e06ef2609 Binary files /dev/null and b/public/terrain/19/858547/353885.terrain differ diff --git a/public/terrain/19/858547/353886.terrain b/public/terrain/19/858547/353886.terrain new file mode 100644 index 000000000..7ef7f3cfb Binary files /dev/null and b/public/terrain/19/858547/353886.terrain differ diff --git a/public/terrain/19/858547/353887.terrain b/public/terrain/19/858547/353887.terrain new file mode 100644 index 000000000..ba4d40822 Binary files /dev/null and b/public/terrain/19/858547/353887.terrain differ diff --git a/public/terrain/19/858547/353888.terrain b/public/terrain/19/858547/353888.terrain new file mode 100644 index 000000000..a92cebe03 Binary files /dev/null and b/public/terrain/19/858547/353888.terrain differ diff --git a/public/terrain/19/858547/353889.terrain b/public/terrain/19/858547/353889.terrain new file mode 100644 index 000000000..b6fdd58d8 Binary files /dev/null and b/public/terrain/19/858547/353889.terrain differ diff --git a/public/terrain/19/858547/353890.terrain b/public/terrain/19/858547/353890.terrain new file mode 100644 index 000000000..4d05dd420 Binary files /dev/null and b/public/terrain/19/858547/353890.terrain differ diff --git a/public/terrain/19/858547/353891.terrain b/public/terrain/19/858547/353891.terrain new file mode 100644 index 000000000..bc314e1df Binary files /dev/null and b/public/terrain/19/858547/353891.terrain differ diff --git a/public/terrain/19/858547/353892.terrain b/public/terrain/19/858547/353892.terrain new file mode 100644 index 000000000..67010f4c5 Binary files /dev/null and b/public/terrain/19/858547/353892.terrain differ diff --git a/public/terrain/19/858547/353893.terrain b/public/terrain/19/858547/353893.terrain new file mode 100644 index 000000000..619c8d209 Binary files /dev/null and b/public/terrain/19/858547/353893.terrain differ diff --git a/public/terrain/19/858547/353894.terrain b/public/terrain/19/858547/353894.terrain new file mode 100644 index 000000000..f67e2127a Binary files /dev/null and b/public/terrain/19/858547/353894.terrain differ diff --git a/public/terrain/19/858547/353895.terrain b/public/terrain/19/858547/353895.terrain new file mode 100644 index 000000000..54d5f012f Binary files /dev/null and b/public/terrain/19/858547/353895.terrain differ diff --git a/public/terrain/19/858547/353896.terrain b/public/terrain/19/858547/353896.terrain new file mode 100644 index 000000000..20ee5f674 Binary files /dev/null and b/public/terrain/19/858547/353896.terrain differ diff --git a/public/terrain/19/858547/353897.terrain b/public/terrain/19/858547/353897.terrain new file mode 100644 index 000000000..31a78a53d Binary files /dev/null and b/public/terrain/19/858547/353897.terrain differ diff --git a/public/terrain/19/858547/353898.terrain b/public/terrain/19/858547/353898.terrain new file mode 100644 index 000000000..c1b756cbf Binary files /dev/null and b/public/terrain/19/858547/353898.terrain differ diff --git a/public/terrain/19/858547/353899.terrain b/public/terrain/19/858547/353899.terrain new file mode 100644 index 000000000..d53980ec9 Binary files /dev/null and b/public/terrain/19/858547/353899.terrain differ diff --git a/public/terrain/19/858547/353900.terrain b/public/terrain/19/858547/353900.terrain new file mode 100644 index 000000000..eece7a024 Binary files /dev/null and b/public/terrain/19/858547/353900.terrain differ diff --git a/public/terrain/19/858547/353901.terrain b/public/terrain/19/858547/353901.terrain new file mode 100644 index 000000000..9231c0a02 Binary files /dev/null and b/public/terrain/19/858547/353901.terrain differ diff --git a/public/terrain/19/858547/353902.terrain b/public/terrain/19/858547/353902.terrain new file mode 100644 index 000000000..39edada88 Binary files /dev/null and b/public/terrain/19/858547/353902.terrain differ diff --git a/public/terrain/19/858547/353903.terrain b/public/terrain/19/858547/353903.terrain new file mode 100644 index 000000000..8f9ae069a Binary files /dev/null and b/public/terrain/19/858547/353903.terrain differ diff --git a/public/terrain/19/858547/353904.terrain b/public/terrain/19/858547/353904.terrain new file mode 100644 index 000000000..aa4241c13 Binary files /dev/null and b/public/terrain/19/858547/353904.terrain differ diff --git a/public/terrain/19/858547/353905.terrain b/public/terrain/19/858547/353905.terrain new file mode 100644 index 000000000..25401e342 Binary files /dev/null and b/public/terrain/19/858547/353905.terrain differ diff --git a/public/terrain/19/858547/353906.terrain b/public/terrain/19/858547/353906.terrain new file mode 100644 index 000000000..339609ef6 Binary files /dev/null and b/public/terrain/19/858547/353906.terrain differ diff --git a/public/terrain/19/858547/353907.terrain b/public/terrain/19/858547/353907.terrain new file mode 100644 index 000000000..0a8febc30 Binary files /dev/null and b/public/terrain/19/858547/353907.terrain differ diff --git a/public/terrain/19/858547/353908.terrain b/public/terrain/19/858547/353908.terrain new file mode 100644 index 000000000..b1526bd3f Binary files /dev/null and b/public/terrain/19/858547/353908.terrain differ diff --git a/public/terrain/19/858547/353909.terrain b/public/terrain/19/858547/353909.terrain new file mode 100644 index 000000000..4d7d9eb66 Binary files /dev/null and b/public/terrain/19/858547/353909.terrain differ diff --git a/public/terrain/19/858547/353910.terrain b/public/terrain/19/858547/353910.terrain new file mode 100644 index 000000000..0541fb970 Binary files /dev/null and b/public/terrain/19/858547/353910.terrain differ diff --git a/public/terrain/19/858547/353911.terrain b/public/terrain/19/858547/353911.terrain new file mode 100644 index 000000000..94911a1f4 Binary files /dev/null and b/public/terrain/19/858547/353911.terrain differ diff --git a/public/terrain/19/858547/353912.terrain b/public/terrain/19/858547/353912.terrain new file mode 100644 index 000000000..b6ba8bdde Binary files /dev/null and b/public/terrain/19/858547/353912.terrain differ diff --git a/public/terrain/19/858547/353913.terrain b/public/terrain/19/858547/353913.terrain new file mode 100644 index 000000000..588eb140c Binary files /dev/null and b/public/terrain/19/858547/353913.terrain differ diff --git a/public/terrain/19/858547/353914.terrain b/public/terrain/19/858547/353914.terrain new file mode 100644 index 000000000..53d2a2812 Binary files /dev/null and b/public/terrain/19/858547/353914.terrain differ diff --git a/public/terrain/19/858547/353915.terrain b/public/terrain/19/858547/353915.terrain new file mode 100644 index 000000000..c93b9d201 Binary files /dev/null and b/public/terrain/19/858547/353915.terrain differ diff --git a/public/terrain/19/858547/353916.terrain b/public/terrain/19/858547/353916.terrain new file mode 100644 index 000000000..428245615 Binary files /dev/null and b/public/terrain/19/858547/353916.terrain differ diff --git a/public/terrain/19/858547/353917.terrain b/public/terrain/19/858547/353917.terrain new file mode 100644 index 000000000..23d7bbde8 Binary files /dev/null and b/public/terrain/19/858547/353917.terrain differ diff --git a/public/terrain/19/858547/353918.terrain b/public/terrain/19/858547/353918.terrain new file mode 100644 index 000000000..51570622c Binary files /dev/null and b/public/terrain/19/858547/353918.terrain differ diff --git a/public/terrain/19/858547/353919.terrain b/public/terrain/19/858547/353919.terrain new file mode 100644 index 000000000..6622bf637 Binary files /dev/null and b/public/terrain/19/858547/353919.terrain differ diff --git a/public/terrain/19/858547/353920.terrain b/public/terrain/19/858547/353920.terrain new file mode 100644 index 000000000..eafa08dd1 Binary files /dev/null and b/public/terrain/19/858547/353920.terrain differ diff --git a/public/terrain/19/858547/353921.terrain b/public/terrain/19/858547/353921.terrain new file mode 100644 index 000000000..766fce9cc Binary files /dev/null and b/public/terrain/19/858547/353921.terrain differ diff --git a/public/terrain/19/858547/353922.terrain b/public/terrain/19/858547/353922.terrain new file mode 100644 index 000000000..8a70eb2d8 Binary files /dev/null and b/public/terrain/19/858547/353922.terrain differ diff --git a/public/terrain/19/858547/353923.terrain b/public/terrain/19/858547/353923.terrain new file mode 100644 index 000000000..2189614a1 Binary files /dev/null and b/public/terrain/19/858547/353923.terrain differ diff --git a/public/terrain/19/858547/353924.terrain b/public/terrain/19/858547/353924.terrain new file mode 100644 index 000000000..6aef9a153 Binary files /dev/null and b/public/terrain/19/858547/353924.terrain differ diff --git a/public/terrain/19/858547/353925.terrain b/public/terrain/19/858547/353925.terrain new file mode 100644 index 000000000..0e1c7c879 Binary files /dev/null and b/public/terrain/19/858547/353925.terrain differ diff --git a/public/terrain/19/858547/353926.terrain b/public/terrain/19/858547/353926.terrain new file mode 100644 index 000000000..23a299d05 Binary files /dev/null and b/public/terrain/19/858547/353926.terrain differ diff --git a/public/terrain/19/858547/353927.terrain b/public/terrain/19/858547/353927.terrain new file mode 100644 index 000000000..324865d2a Binary files /dev/null and b/public/terrain/19/858547/353927.terrain differ diff --git a/public/terrain/19/858547/353928.terrain b/public/terrain/19/858547/353928.terrain new file mode 100644 index 000000000..5fdd8a102 Binary files /dev/null and b/public/terrain/19/858547/353928.terrain differ diff --git a/public/terrain/19/858547/353929.terrain b/public/terrain/19/858547/353929.terrain new file mode 100644 index 000000000..a94f16547 Binary files /dev/null and b/public/terrain/19/858547/353929.terrain differ diff --git a/public/terrain/19/858547/353930.terrain b/public/terrain/19/858547/353930.terrain new file mode 100644 index 000000000..22918505d Binary files /dev/null and b/public/terrain/19/858547/353930.terrain differ diff --git a/public/terrain/19/858547/353931.terrain b/public/terrain/19/858547/353931.terrain new file mode 100644 index 000000000..b9326615e Binary files /dev/null and b/public/terrain/19/858547/353931.terrain differ diff --git a/public/terrain/19/858547/353932.terrain b/public/terrain/19/858547/353932.terrain new file mode 100644 index 000000000..14a8619aa Binary files /dev/null and b/public/terrain/19/858547/353932.terrain differ diff --git a/public/terrain/19/858547/353933.terrain b/public/terrain/19/858547/353933.terrain new file mode 100644 index 000000000..2bbe30d21 Binary files /dev/null and b/public/terrain/19/858547/353933.terrain differ diff --git a/public/terrain/19/858547/353934.terrain b/public/terrain/19/858547/353934.terrain new file mode 100644 index 000000000..b7ee1cce8 Binary files /dev/null and b/public/terrain/19/858547/353934.terrain differ diff --git a/public/terrain/19/858547/353935.terrain b/public/terrain/19/858547/353935.terrain new file mode 100644 index 000000000..be8738b8b Binary files /dev/null and b/public/terrain/19/858547/353935.terrain differ diff --git a/public/terrain/19/858547/353936.terrain b/public/terrain/19/858547/353936.terrain new file mode 100644 index 000000000..63b27861d Binary files /dev/null and b/public/terrain/19/858547/353936.terrain differ diff --git a/public/terrain/19/858547/353937.terrain b/public/terrain/19/858547/353937.terrain new file mode 100644 index 000000000..268ca7efd Binary files /dev/null and b/public/terrain/19/858547/353937.terrain differ diff --git a/public/terrain/19/858547/353938.terrain b/public/terrain/19/858547/353938.terrain new file mode 100644 index 000000000..920e266cc Binary files /dev/null and b/public/terrain/19/858547/353938.terrain differ diff --git a/public/terrain/19/858547/353939.terrain b/public/terrain/19/858547/353939.terrain new file mode 100644 index 000000000..27e5213e3 Binary files /dev/null and b/public/terrain/19/858547/353939.terrain differ diff --git a/public/terrain/19/858547/353940.terrain b/public/terrain/19/858547/353940.terrain new file mode 100644 index 000000000..e9c1997d7 Binary files /dev/null and b/public/terrain/19/858547/353940.terrain differ diff --git a/public/terrain/19/858547/353941.terrain b/public/terrain/19/858547/353941.terrain new file mode 100644 index 000000000..d37357f0e Binary files /dev/null and b/public/terrain/19/858547/353941.terrain differ diff --git a/public/terrain/19/858547/353942.terrain b/public/terrain/19/858547/353942.terrain new file mode 100644 index 000000000..e4c02b352 Binary files /dev/null and b/public/terrain/19/858547/353942.terrain differ diff --git a/public/terrain/19/858547/353943.terrain b/public/terrain/19/858547/353943.terrain new file mode 100644 index 000000000..0dd86f64d Binary files /dev/null and b/public/terrain/19/858547/353943.terrain differ diff --git a/public/terrain/19/858547/353944.terrain b/public/terrain/19/858547/353944.terrain new file mode 100644 index 000000000..7de1f6a74 Binary files /dev/null and b/public/terrain/19/858547/353944.terrain differ diff --git a/public/terrain/19/858547/353945.terrain b/public/terrain/19/858547/353945.terrain new file mode 100644 index 000000000..03abe0ecc Binary files /dev/null and b/public/terrain/19/858547/353945.terrain differ diff --git a/public/terrain/19/858547/353946.terrain b/public/terrain/19/858547/353946.terrain new file mode 100644 index 000000000..ce969536a Binary files /dev/null and b/public/terrain/19/858547/353946.terrain differ diff --git a/public/terrain/19/858547/353947.terrain b/public/terrain/19/858547/353947.terrain new file mode 100644 index 000000000..60babe845 Binary files /dev/null and b/public/terrain/19/858547/353947.terrain differ diff --git a/public/terrain/19/858547/353948.terrain b/public/terrain/19/858547/353948.terrain new file mode 100644 index 000000000..5049a1f58 Binary files /dev/null and b/public/terrain/19/858547/353948.terrain differ diff --git a/public/terrain/19/858547/353949.terrain b/public/terrain/19/858547/353949.terrain new file mode 100644 index 000000000..efb6f052c Binary files /dev/null and b/public/terrain/19/858547/353949.terrain differ diff --git a/public/terrain/19/858547/353950.terrain b/public/terrain/19/858547/353950.terrain new file mode 100644 index 000000000..bdad41954 Binary files /dev/null and b/public/terrain/19/858547/353950.terrain differ diff --git a/public/terrain/19/858547/353951.terrain b/public/terrain/19/858547/353951.terrain new file mode 100644 index 000000000..e59b0a338 Binary files /dev/null and b/public/terrain/19/858547/353951.terrain differ diff --git a/public/terrain/19/858547/353952.terrain b/public/terrain/19/858547/353952.terrain new file mode 100644 index 000000000..3455fe373 Binary files /dev/null and b/public/terrain/19/858547/353952.terrain differ diff --git a/public/terrain/19/858547/353953.terrain b/public/terrain/19/858547/353953.terrain new file mode 100644 index 000000000..dddbabba2 Binary files /dev/null and b/public/terrain/19/858547/353953.terrain differ diff --git a/public/terrain/19/858547/353954.terrain b/public/terrain/19/858547/353954.terrain new file mode 100644 index 000000000..7fad1fb3b Binary files /dev/null and b/public/terrain/19/858547/353954.terrain differ diff --git a/public/terrain/19/858547/353955.terrain b/public/terrain/19/858547/353955.terrain new file mode 100644 index 000000000..05151d46a Binary files /dev/null and b/public/terrain/19/858547/353955.terrain differ diff --git a/public/terrain/19/858547/353956.terrain b/public/terrain/19/858547/353956.terrain new file mode 100644 index 000000000..e2a0955ac Binary files /dev/null and b/public/terrain/19/858547/353956.terrain differ diff --git a/public/terrain/19/858547/353957.terrain b/public/terrain/19/858547/353957.terrain new file mode 100644 index 000000000..12ed3eada Binary files /dev/null and b/public/terrain/19/858547/353957.terrain differ diff --git a/public/terrain/19/858547/353958.terrain b/public/terrain/19/858547/353958.terrain new file mode 100644 index 000000000..61a91286f Binary files /dev/null and b/public/terrain/19/858547/353958.terrain differ diff --git a/public/terrain/19/858547/353959.terrain b/public/terrain/19/858547/353959.terrain new file mode 100644 index 000000000..7f83c2001 Binary files /dev/null and b/public/terrain/19/858547/353959.terrain differ diff --git a/public/terrain/19/858547/353960.terrain b/public/terrain/19/858547/353960.terrain new file mode 100644 index 000000000..089c3c771 Binary files /dev/null and b/public/terrain/19/858547/353960.terrain differ diff --git a/public/terrain/19/858547/353961.terrain b/public/terrain/19/858547/353961.terrain new file mode 100644 index 000000000..6686f1ea1 Binary files /dev/null and b/public/terrain/19/858547/353961.terrain differ diff --git a/public/terrain/19/858547/353962.terrain b/public/terrain/19/858547/353962.terrain new file mode 100644 index 000000000..d2211d741 Binary files /dev/null and b/public/terrain/19/858547/353962.terrain differ diff --git a/public/terrain/19/858547/353963.terrain b/public/terrain/19/858547/353963.terrain new file mode 100644 index 000000000..8ee7b9af1 Binary files /dev/null and b/public/terrain/19/858547/353963.terrain differ diff --git a/public/terrain/19/858547/353964.terrain b/public/terrain/19/858547/353964.terrain new file mode 100644 index 000000000..d4365c2dd Binary files /dev/null and b/public/terrain/19/858547/353964.terrain differ diff --git a/public/terrain/19/858547/353965.terrain b/public/terrain/19/858547/353965.terrain new file mode 100644 index 000000000..ae490226e Binary files /dev/null and b/public/terrain/19/858547/353965.terrain differ diff --git a/public/terrain/19/858547/353966.terrain b/public/terrain/19/858547/353966.terrain new file mode 100644 index 000000000..d270989ed Binary files /dev/null and b/public/terrain/19/858547/353966.terrain differ diff --git a/public/terrain/19/858547/353967.terrain b/public/terrain/19/858547/353967.terrain new file mode 100644 index 000000000..9b0611289 Binary files /dev/null and b/public/terrain/19/858547/353967.terrain differ diff --git a/public/terrain/19/858547/353968.terrain b/public/terrain/19/858547/353968.terrain new file mode 100644 index 000000000..89281dd04 Binary files /dev/null and b/public/terrain/19/858547/353968.terrain differ diff --git a/public/terrain/19/858547/353969.terrain b/public/terrain/19/858547/353969.terrain new file mode 100644 index 000000000..df44e2b36 Binary files /dev/null and b/public/terrain/19/858547/353969.terrain differ diff --git a/public/terrain/19/858547/353970.terrain b/public/terrain/19/858547/353970.terrain new file mode 100644 index 000000000..479562601 Binary files /dev/null and b/public/terrain/19/858547/353970.terrain differ diff --git a/public/terrain/19/858547/353971.terrain b/public/terrain/19/858547/353971.terrain new file mode 100644 index 000000000..02414a269 Binary files /dev/null and b/public/terrain/19/858547/353971.terrain differ diff --git a/public/terrain/19/858547/353972.terrain b/public/terrain/19/858547/353972.terrain new file mode 100644 index 000000000..554c1dac4 Binary files /dev/null and b/public/terrain/19/858547/353972.terrain differ diff --git a/public/terrain/19/858547/353973.terrain b/public/terrain/19/858547/353973.terrain new file mode 100644 index 000000000..95015f547 Binary files /dev/null and b/public/terrain/19/858547/353973.terrain differ diff --git a/public/terrain/19/858547/353974.terrain b/public/terrain/19/858547/353974.terrain new file mode 100644 index 000000000..71187b4dd Binary files /dev/null and b/public/terrain/19/858547/353974.terrain differ diff --git a/public/terrain/19/858547/353975.terrain b/public/terrain/19/858547/353975.terrain new file mode 100644 index 000000000..114edecf7 Binary files /dev/null and b/public/terrain/19/858547/353975.terrain differ diff --git a/public/terrain/19/858547/353976.terrain b/public/terrain/19/858547/353976.terrain new file mode 100644 index 000000000..df53f138f Binary files /dev/null and b/public/terrain/19/858547/353976.terrain differ diff --git a/public/terrain/19/858547/353977.terrain b/public/terrain/19/858547/353977.terrain new file mode 100644 index 000000000..0267d44ff Binary files /dev/null and b/public/terrain/19/858547/353977.terrain differ diff --git a/public/terrain/19/858547/353978.terrain b/public/terrain/19/858547/353978.terrain new file mode 100644 index 000000000..1addc01ce Binary files /dev/null and b/public/terrain/19/858547/353978.terrain differ diff --git a/public/terrain/19/858547/353979.terrain b/public/terrain/19/858547/353979.terrain new file mode 100644 index 000000000..beeee78e7 Binary files /dev/null and b/public/terrain/19/858547/353979.terrain differ diff --git a/public/terrain/19/858547/353980.terrain b/public/terrain/19/858547/353980.terrain new file mode 100644 index 000000000..91f677321 Binary files /dev/null and b/public/terrain/19/858547/353980.terrain differ diff --git a/public/terrain/19/858547/353981.terrain b/public/terrain/19/858547/353981.terrain new file mode 100644 index 000000000..979e69577 Binary files /dev/null and b/public/terrain/19/858547/353981.terrain differ diff --git a/public/terrain/19/858547/353982.terrain b/public/terrain/19/858547/353982.terrain new file mode 100644 index 000000000..e6b3a0163 Binary files /dev/null and b/public/terrain/19/858547/353982.terrain differ diff --git a/public/terrain/19/858547/353983.terrain b/public/terrain/19/858547/353983.terrain new file mode 100644 index 000000000..3e8f4e2b4 Binary files /dev/null and b/public/terrain/19/858547/353983.terrain differ diff --git a/public/terrain/19/858547/353984.terrain b/public/terrain/19/858547/353984.terrain new file mode 100644 index 000000000..bad71ea1a Binary files /dev/null and b/public/terrain/19/858547/353984.terrain differ diff --git a/public/terrain/19/858547/353985.terrain b/public/terrain/19/858547/353985.terrain new file mode 100644 index 000000000..597c03683 Binary files /dev/null and b/public/terrain/19/858547/353985.terrain differ diff --git a/public/terrain/19/858547/353986.terrain b/public/terrain/19/858547/353986.terrain new file mode 100644 index 000000000..a67f207fa Binary files /dev/null and b/public/terrain/19/858547/353986.terrain differ diff --git a/public/terrain/19/858547/353987.terrain b/public/terrain/19/858547/353987.terrain new file mode 100644 index 000000000..4d504eccf Binary files /dev/null and b/public/terrain/19/858547/353987.terrain differ diff --git a/public/terrain/19/858547/353988.terrain b/public/terrain/19/858547/353988.terrain new file mode 100644 index 000000000..87ab88a2d Binary files /dev/null and b/public/terrain/19/858547/353988.terrain differ diff --git a/public/terrain/19/858547/353989.terrain b/public/terrain/19/858547/353989.terrain new file mode 100644 index 000000000..862991d6c Binary files /dev/null and b/public/terrain/19/858547/353989.terrain differ diff --git a/public/terrain/19/858547/353990.terrain b/public/terrain/19/858547/353990.terrain new file mode 100644 index 000000000..9ca65237b Binary files /dev/null and b/public/terrain/19/858547/353990.terrain differ diff --git a/public/terrain/19/858547/353991.terrain b/public/terrain/19/858547/353991.terrain new file mode 100644 index 000000000..434b52b49 Binary files /dev/null and b/public/terrain/19/858547/353991.terrain differ diff --git a/public/terrain/19/858547/353992.terrain b/public/terrain/19/858547/353992.terrain new file mode 100644 index 000000000..c9b4d358f Binary files /dev/null and b/public/terrain/19/858547/353992.terrain differ diff --git a/public/terrain/19/858547/353993.terrain b/public/terrain/19/858547/353993.terrain new file mode 100644 index 000000000..ea6bab90c Binary files /dev/null and b/public/terrain/19/858547/353993.terrain differ diff --git a/public/terrain/19/858547/353994.terrain b/public/terrain/19/858547/353994.terrain new file mode 100644 index 000000000..67a41a8e0 Binary files /dev/null and b/public/terrain/19/858547/353994.terrain differ diff --git a/public/terrain/19/858547/353995.terrain b/public/terrain/19/858547/353995.terrain new file mode 100644 index 000000000..96f15b827 Binary files /dev/null and b/public/terrain/19/858547/353995.terrain differ diff --git a/public/terrain/19/858547/353996.terrain b/public/terrain/19/858547/353996.terrain new file mode 100644 index 000000000..6e0b2da40 Binary files /dev/null and b/public/terrain/19/858547/353996.terrain differ diff --git a/public/terrain/19/858547/353997.terrain b/public/terrain/19/858547/353997.terrain new file mode 100644 index 000000000..731334e9d Binary files /dev/null and b/public/terrain/19/858547/353997.terrain differ diff --git a/public/terrain/19/858547/353998.terrain b/public/terrain/19/858547/353998.terrain new file mode 100644 index 000000000..8d94a9371 Binary files /dev/null and b/public/terrain/19/858547/353998.terrain differ diff --git a/public/terrain/19/858547/353999.terrain b/public/terrain/19/858547/353999.terrain new file mode 100644 index 000000000..a32a779ad Binary files /dev/null and b/public/terrain/19/858547/353999.terrain differ diff --git a/public/terrain/19/858547/354000.terrain b/public/terrain/19/858547/354000.terrain new file mode 100644 index 000000000..0c4f46311 Binary files /dev/null and b/public/terrain/19/858547/354000.terrain differ diff --git a/public/terrain/19/858547/354001.terrain b/public/terrain/19/858547/354001.terrain new file mode 100644 index 000000000..22e10cdb9 Binary files /dev/null and b/public/terrain/19/858547/354001.terrain differ diff --git a/public/terrain/19/858547/354002.terrain b/public/terrain/19/858547/354002.terrain new file mode 100644 index 000000000..c3159d2cd Binary files /dev/null and b/public/terrain/19/858547/354002.terrain differ diff --git a/public/terrain/19/858547/354003.terrain b/public/terrain/19/858547/354003.terrain new file mode 100644 index 000000000..fe9b9f48e Binary files /dev/null and b/public/terrain/19/858547/354003.terrain differ diff --git a/public/terrain/19/858547/354004.terrain b/public/terrain/19/858547/354004.terrain new file mode 100644 index 000000000..1aebc76fe Binary files /dev/null and b/public/terrain/19/858547/354004.terrain differ diff --git a/public/terrain/19/858547/354005.terrain b/public/terrain/19/858547/354005.terrain new file mode 100644 index 000000000..4e195cc57 Binary files /dev/null and b/public/terrain/19/858547/354005.terrain differ diff --git a/public/terrain/19/858547/354006.terrain b/public/terrain/19/858547/354006.terrain new file mode 100644 index 000000000..498523c5a Binary files /dev/null and b/public/terrain/19/858547/354006.terrain differ diff --git a/public/terrain/19/858547/354007.terrain b/public/terrain/19/858547/354007.terrain new file mode 100644 index 000000000..4b5353574 Binary files /dev/null and b/public/terrain/19/858547/354007.terrain differ diff --git a/public/terrain/19/858547/354008.terrain b/public/terrain/19/858547/354008.terrain new file mode 100644 index 000000000..daf5cea32 Binary files /dev/null and b/public/terrain/19/858547/354008.terrain differ diff --git a/public/terrain/19/858547/354009.terrain b/public/terrain/19/858547/354009.terrain new file mode 100644 index 000000000..2cca26748 Binary files /dev/null and b/public/terrain/19/858547/354009.terrain differ diff --git a/public/terrain/19/858547/354010.terrain b/public/terrain/19/858547/354010.terrain new file mode 100644 index 000000000..fec2bdc2d Binary files /dev/null and b/public/terrain/19/858547/354010.terrain differ diff --git a/public/terrain/19/858547/354011.terrain b/public/terrain/19/858547/354011.terrain new file mode 100644 index 000000000..6b5878ad4 Binary files /dev/null and b/public/terrain/19/858547/354011.terrain differ diff --git a/public/terrain/19/858547/354012.terrain b/public/terrain/19/858547/354012.terrain new file mode 100644 index 000000000..36e49d005 Binary files /dev/null and b/public/terrain/19/858547/354012.terrain differ diff --git a/public/terrain/19/858547/354013.terrain b/public/terrain/19/858547/354013.terrain new file mode 100644 index 000000000..c5a9b5720 Binary files /dev/null and b/public/terrain/19/858547/354013.terrain differ diff --git a/public/terrain/19/858547/354014.terrain b/public/terrain/19/858547/354014.terrain new file mode 100644 index 000000000..74fe1e3f2 Binary files /dev/null and b/public/terrain/19/858547/354014.terrain differ diff --git a/public/terrain/19/858547/354015.terrain b/public/terrain/19/858547/354015.terrain new file mode 100644 index 000000000..f71d1626f Binary files /dev/null and b/public/terrain/19/858547/354015.terrain differ diff --git a/public/terrain/19/858547/354016.terrain b/public/terrain/19/858547/354016.terrain new file mode 100644 index 000000000..a9346f626 Binary files /dev/null and b/public/terrain/19/858547/354016.terrain differ diff --git a/public/terrain/19/858547/354017.terrain b/public/terrain/19/858547/354017.terrain new file mode 100644 index 000000000..c1cf8e0d4 Binary files /dev/null and b/public/terrain/19/858547/354017.terrain differ diff --git a/public/terrain/19/858547/354018.terrain b/public/terrain/19/858547/354018.terrain new file mode 100644 index 000000000..64afe34be Binary files /dev/null and b/public/terrain/19/858547/354018.terrain differ diff --git a/public/terrain/19/858547/354019.terrain b/public/terrain/19/858547/354019.terrain new file mode 100644 index 000000000..88c52d3b2 Binary files /dev/null and b/public/terrain/19/858547/354019.terrain differ diff --git a/public/terrain/19/858547/354020.terrain b/public/terrain/19/858547/354020.terrain new file mode 100644 index 000000000..c86a3d591 Binary files /dev/null and b/public/terrain/19/858547/354020.terrain differ diff --git a/public/terrain/19/858547/354021.terrain b/public/terrain/19/858547/354021.terrain new file mode 100644 index 000000000..dce8830c7 Binary files /dev/null and b/public/terrain/19/858547/354021.terrain differ diff --git a/public/terrain/19/858547/354022.terrain b/public/terrain/19/858547/354022.terrain new file mode 100644 index 000000000..74f58ae54 Binary files /dev/null and b/public/terrain/19/858547/354022.terrain differ diff --git a/public/terrain/19/858547/354023.terrain b/public/terrain/19/858547/354023.terrain new file mode 100644 index 000000000..ae783a5c1 Binary files /dev/null and b/public/terrain/19/858547/354023.terrain differ diff --git a/public/terrain/19/858547/354024.terrain b/public/terrain/19/858547/354024.terrain new file mode 100644 index 000000000..ba5316b26 Binary files /dev/null and b/public/terrain/19/858547/354024.terrain differ diff --git a/public/terrain/19/858547/354025.terrain b/public/terrain/19/858547/354025.terrain new file mode 100644 index 000000000..13e133550 Binary files /dev/null and b/public/terrain/19/858547/354025.terrain differ diff --git a/public/terrain/19/858547/354026.terrain b/public/terrain/19/858547/354026.terrain new file mode 100644 index 000000000..f62ec3f00 Binary files /dev/null and b/public/terrain/19/858547/354026.terrain differ diff --git a/public/terrain/19/858547/354027.terrain b/public/terrain/19/858547/354027.terrain new file mode 100644 index 000000000..046458b06 Binary files /dev/null and b/public/terrain/19/858547/354027.terrain differ diff --git a/public/terrain/19/858547/354028.terrain b/public/terrain/19/858547/354028.terrain new file mode 100644 index 000000000..f9735915c Binary files /dev/null and b/public/terrain/19/858547/354028.terrain differ diff --git a/public/terrain/19/858547/354029.terrain b/public/terrain/19/858547/354029.terrain new file mode 100644 index 000000000..97f7b9a35 Binary files /dev/null and b/public/terrain/19/858547/354029.terrain differ diff --git a/public/terrain/19/858547/354030.terrain b/public/terrain/19/858547/354030.terrain new file mode 100644 index 000000000..57538097d Binary files /dev/null and b/public/terrain/19/858547/354030.terrain differ diff --git a/public/terrain/19/858547/354031.terrain b/public/terrain/19/858547/354031.terrain new file mode 100644 index 000000000..37efc1be4 Binary files /dev/null and b/public/terrain/19/858547/354031.terrain differ diff --git a/public/terrain/19/858547/354032.terrain b/public/terrain/19/858547/354032.terrain new file mode 100644 index 000000000..5991c92e3 Binary files /dev/null and b/public/terrain/19/858547/354032.terrain differ diff --git a/public/terrain/19/858547/354033.terrain b/public/terrain/19/858547/354033.terrain new file mode 100644 index 000000000..e60d93203 Binary files /dev/null and b/public/terrain/19/858547/354033.terrain differ diff --git a/public/terrain/19/858547/354034.terrain b/public/terrain/19/858547/354034.terrain new file mode 100644 index 000000000..ef6e76f9f Binary files /dev/null and b/public/terrain/19/858547/354034.terrain differ diff --git a/public/terrain/19/858547/354035.terrain b/public/terrain/19/858547/354035.terrain new file mode 100644 index 000000000..ca0ec4f8a Binary files /dev/null and b/public/terrain/19/858547/354035.terrain differ diff --git a/public/terrain/19/858547/354036.terrain b/public/terrain/19/858547/354036.terrain new file mode 100644 index 000000000..b446ba013 Binary files /dev/null and b/public/terrain/19/858547/354036.terrain differ diff --git a/public/terrain/19/858547/354037.terrain b/public/terrain/19/858547/354037.terrain new file mode 100644 index 000000000..5c115a38a Binary files /dev/null and b/public/terrain/19/858547/354037.terrain differ diff --git a/public/terrain/19/858547/354038.terrain b/public/terrain/19/858547/354038.terrain new file mode 100644 index 000000000..f91dc617e Binary files /dev/null and b/public/terrain/19/858547/354038.terrain differ diff --git a/public/terrain/19/858547/354039.terrain b/public/terrain/19/858547/354039.terrain new file mode 100644 index 000000000..53e371d9d Binary files /dev/null and b/public/terrain/19/858547/354039.terrain differ diff --git a/public/terrain/19/858547/354040.terrain b/public/terrain/19/858547/354040.terrain new file mode 100644 index 000000000..32d6f0de5 Binary files /dev/null and b/public/terrain/19/858547/354040.terrain differ diff --git a/public/terrain/19/858547/354041.terrain b/public/terrain/19/858547/354041.terrain new file mode 100644 index 000000000..6e4f7c58d Binary files /dev/null and b/public/terrain/19/858547/354041.terrain differ diff --git a/public/terrain/19/858547/354042.terrain b/public/terrain/19/858547/354042.terrain new file mode 100644 index 000000000..c4b2f84ef Binary files /dev/null and b/public/terrain/19/858547/354042.terrain differ diff --git a/public/terrain/19/858547/354043.terrain b/public/terrain/19/858547/354043.terrain new file mode 100644 index 000000000..75424d576 Binary files /dev/null and b/public/terrain/19/858547/354043.terrain differ diff --git a/public/terrain/19/858547/354044.terrain b/public/terrain/19/858547/354044.terrain new file mode 100644 index 000000000..07a577c0e Binary files /dev/null and b/public/terrain/19/858547/354044.terrain differ diff --git a/public/terrain/19/858547/354045.terrain b/public/terrain/19/858547/354045.terrain new file mode 100644 index 000000000..5f741c673 Binary files /dev/null and b/public/terrain/19/858547/354045.terrain differ diff --git a/public/terrain/19/858547/354046.terrain b/public/terrain/19/858547/354046.terrain new file mode 100644 index 000000000..66c2c1b6d Binary files /dev/null and b/public/terrain/19/858547/354046.terrain differ diff --git a/public/terrain/19/858547/354047.terrain b/public/terrain/19/858547/354047.terrain new file mode 100644 index 000000000..7d09f77cc Binary files /dev/null and b/public/terrain/19/858547/354047.terrain differ diff --git a/public/terrain/19/858547/354048.terrain b/public/terrain/19/858547/354048.terrain new file mode 100644 index 000000000..4cf3402ce Binary files /dev/null and b/public/terrain/19/858547/354048.terrain differ diff --git a/public/terrain/19/858547/354049.terrain b/public/terrain/19/858547/354049.terrain new file mode 100644 index 000000000..e26c5035e Binary files /dev/null and b/public/terrain/19/858547/354049.terrain differ diff --git a/public/terrain/19/858547/354050.terrain b/public/terrain/19/858547/354050.terrain new file mode 100644 index 000000000..b25a4eaa1 Binary files /dev/null and b/public/terrain/19/858547/354050.terrain differ diff --git a/public/terrain/19/858547/354051.terrain b/public/terrain/19/858547/354051.terrain new file mode 100644 index 000000000..2e6f5677b Binary files /dev/null and b/public/terrain/19/858547/354051.terrain differ diff --git a/public/terrain/19/858547/354052.terrain b/public/terrain/19/858547/354052.terrain new file mode 100644 index 000000000..22d1e3b97 Binary files /dev/null and b/public/terrain/19/858547/354052.terrain differ diff --git a/public/terrain/19/858547/354053.terrain b/public/terrain/19/858547/354053.terrain new file mode 100644 index 000000000..d95ea70d9 Binary files /dev/null and b/public/terrain/19/858547/354053.terrain differ diff --git a/public/terrain/19/858547/354054.terrain b/public/terrain/19/858547/354054.terrain new file mode 100644 index 000000000..0c1ccbeb9 Binary files /dev/null and b/public/terrain/19/858547/354054.terrain differ diff --git a/public/terrain/19/858547/354055.terrain b/public/terrain/19/858547/354055.terrain new file mode 100644 index 000000000..621db131b Binary files /dev/null and b/public/terrain/19/858547/354055.terrain differ diff --git a/public/terrain/19/858547/354056.terrain b/public/terrain/19/858547/354056.terrain new file mode 100644 index 000000000..a6b2e585b Binary files /dev/null and b/public/terrain/19/858547/354056.terrain differ diff --git a/public/terrain/19/858547/354057.terrain b/public/terrain/19/858547/354057.terrain new file mode 100644 index 000000000..3a15f3668 Binary files /dev/null and b/public/terrain/19/858547/354057.terrain differ diff --git a/public/terrain/19/858547/354058.terrain b/public/terrain/19/858547/354058.terrain new file mode 100644 index 000000000..081202755 Binary files /dev/null and b/public/terrain/19/858547/354058.terrain differ diff --git a/public/terrain/19/858547/354059.terrain b/public/terrain/19/858547/354059.terrain new file mode 100644 index 000000000..2454c99e2 Binary files /dev/null and b/public/terrain/19/858547/354059.terrain differ diff --git a/public/terrain/19/858548/353743.terrain b/public/terrain/19/858548/353743.terrain new file mode 100644 index 000000000..907ca096b Binary files /dev/null and b/public/terrain/19/858548/353743.terrain differ diff --git a/public/terrain/19/858548/353744.terrain b/public/terrain/19/858548/353744.terrain new file mode 100644 index 000000000..103f18a3e Binary files /dev/null and b/public/terrain/19/858548/353744.terrain differ diff --git a/public/terrain/19/858548/353745.terrain b/public/terrain/19/858548/353745.terrain new file mode 100644 index 000000000..d5f2971d6 Binary files /dev/null and b/public/terrain/19/858548/353745.terrain differ diff --git a/public/terrain/19/858548/353746.terrain b/public/terrain/19/858548/353746.terrain new file mode 100644 index 000000000..76a9d0d3e Binary files /dev/null and b/public/terrain/19/858548/353746.terrain differ diff --git a/public/terrain/19/858548/353747.terrain b/public/terrain/19/858548/353747.terrain new file mode 100644 index 000000000..1e372feb2 Binary files /dev/null and b/public/terrain/19/858548/353747.terrain differ diff --git a/public/terrain/19/858548/353748.terrain b/public/terrain/19/858548/353748.terrain new file mode 100644 index 000000000..704562ce3 Binary files /dev/null and b/public/terrain/19/858548/353748.terrain differ diff --git a/public/terrain/19/858548/353749.terrain b/public/terrain/19/858548/353749.terrain new file mode 100644 index 000000000..3c38e8b04 Binary files /dev/null and b/public/terrain/19/858548/353749.terrain differ diff --git a/public/terrain/19/858548/353750.terrain b/public/terrain/19/858548/353750.terrain new file mode 100644 index 000000000..0037aea08 Binary files /dev/null and b/public/terrain/19/858548/353750.terrain differ diff --git a/public/terrain/19/858548/353751.terrain b/public/terrain/19/858548/353751.terrain new file mode 100644 index 000000000..b7da7c966 Binary files /dev/null and b/public/terrain/19/858548/353751.terrain differ diff --git a/public/terrain/19/858548/353752.terrain b/public/terrain/19/858548/353752.terrain new file mode 100644 index 000000000..45c79c499 Binary files /dev/null and b/public/terrain/19/858548/353752.terrain differ diff --git a/public/terrain/19/858548/353753.terrain b/public/terrain/19/858548/353753.terrain new file mode 100644 index 000000000..e99801c85 Binary files /dev/null and b/public/terrain/19/858548/353753.terrain differ diff --git a/public/terrain/19/858548/353754.terrain b/public/terrain/19/858548/353754.terrain new file mode 100644 index 000000000..8a7d10bb8 Binary files /dev/null and b/public/terrain/19/858548/353754.terrain differ diff --git a/public/terrain/19/858548/353755.terrain b/public/terrain/19/858548/353755.terrain new file mode 100644 index 000000000..87aecdaa6 Binary files /dev/null and b/public/terrain/19/858548/353755.terrain differ diff --git a/public/terrain/19/858548/353756.terrain b/public/terrain/19/858548/353756.terrain new file mode 100644 index 000000000..19b180df3 Binary files /dev/null and b/public/terrain/19/858548/353756.terrain differ diff --git a/public/terrain/19/858548/353757.terrain b/public/terrain/19/858548/353757.terrain new file mode 100644 index 000000000..1afda4ffc Binary files /dev/null and b/public/terrain/19/858548/353757.terrain differ diff --git a/public/terrain/19/858548/353758.terrain b/public/terrain/19/858548/353758.terrain new file mode 100644 index 000000000..7ec02423b Binary files /dev/null and b/public/terrain/19/858548/353758.terrain differ diff --git a/public/terrain/19/858548/353759.terrain b/public/terrain/19/858548/353759.terrain new file mode 100644 index 000000000..e6eb12da8 Binary files /dev/null and b/public/terrain/19/858548/353759.terrain differ diff --git a/public/terrain/19/858548/353760.terrain b/public/terrain/19/858548/353760.terrain new file mode 100644 index 000000000..c29677997 Binary files /dev/null and b/public/terrain/19/858548/353760.terrain differ diff --git a/public/terrain/19/858548/353761.terrain b/public/terrain/19/858548/353761.terrain new file mode 100644 index 000000000..fa9f87f71 Binary files /dev/null and b/public/terrain/19/858548/353761.terrain differ diff --git a/public/terrain/19/858548/353762.terrain b/public/terrain/19/858548/353762.terrain new file mode 100644 index 000000000..3f40343ee Binary files /dev/null and b/public/terrain/19/858548/353762.terrain differ diff --git a/public/terrain/19/858548/353763.terrain b/public/terrain/19/858548/353763.terrain new file mode 100644 index 000000000..64eb3404e Binary files /dev/null and b/public/terrain/19/858548/353763.terrain differ diff --git a/public/terrain/19/858548/353764.terrain b/public/terrain/19/858548/353764.terrain new file mode 100644 index 000000000..4e4907ea2 Binary files /dev/null and b/public/terrain/19/858548/353764.terrain differ diff --git a/public/terrain/19/858548/353765.terrain b/public/terrain/19/858548/353765.terrain new file mode 100644 index 000000000..59ea0f70f Binary files /dev/null and b/public/terrain/19/858548/353765.terrain differ diff --git a/public/terrain/19/858548/353766.terrain b/public/terrain/19/858548/353766.terrain new file mode 100644 index 000000000..9ba2ebcda Binary files /dev/null and b/public/terrain/19/858548/353766.terrain differ diff --git a/public/terrain/19/858548/353767.terrain b/public/terrain/19/858548/353767.terrain new file mode 100644 index 000000000..ba8721e36 Binary files /dev/null and b/public/terrain/19/858548/353767.terrain differ diff --git a/public/terrain/19/858548/353768.terrain b/public/terrain/19/858548/353768.terrain new file mode 100644 index 000000000..17fb98db8 Binary files /dev/null and b/public/terrain/19/858548/353768.terrain differ diff --git a/public/terrain/19/858548/353769.terrain b/public/terrain/19/858548/353769.terrain new file mode 100644 index 000000000..b8a933fd9 Binary files /dev/null and b/public/terrain/19/858548/353769.terrain differ diff --git a/public/terrain/19/858548/353770.terrain b/public/terrain/19/858548/353770.terrain new file mode 100644 index 000000000..000ceae71 Binary files /dev/null and b/public/terrain/19/858548/353770.terrain differ diff --git a/public/terrain/19/858548/353771.terrain b/public/terrain/19/858548/353771.terrain new file mode 100644 index 000000000..24c3bd43f Binary files /dev/null and b/public/terrain/19/858548/353771.terrain differ diff --git a/public/terrain/19/858548/353772.terrain b/public/terrain/19/858548/353772.terrain new file mode 100644 index 000000000..6a802c740 Binary files /dev/null and b/public/terrain/19/858548/353772.terrain differ diff --git a/public/terrain/19/858548/353773.terrain b/public/terrain/19/858548/353773.terrain new file mode 100644 index 000000000..9620a87cc Binary files /dev/null and b/public/terrain/19/858548/353773.terrain differ diff --git a/public/terrain/19/858548/353774.terrain b/public/terrain/19/858548/353774.terrain new file mode 100644 index 000000000..f33a11ec4 Binary files /dev/null and b/public/terrain/19/858548/353774.terrain differ diff --git a/public/terrain/19/858548/353775.terrain b/public/terrain/19/858548/353775.terrain new file mode 100644 index 000000000..4a6951700 Binary files /dev/null and b/public/terrain/19/858548/353775.terrain differ diff --git a/public/terrain/19/858548/353776.terrain b/public/terrain/19/858548/353776.terrain new file mode 100644 index 000000000..cbc68d40e Binary files /dev/null and b/public/terrain/19/858548/353776.terrain differ diff --git a/public/terrain/19/858548/353777.terrain b/public/terrain/19/858548/353777.terrain new file mode 100644 index 000000000..80e755065 Binary files /dev/null and b/public/terrain/19/858548/353777.terrain differ diff --git a/public/terrain/19/858548/353778.terrain b/public/terrain/19/858548/353778.terrain new file mode 100644 index 000000000..6aff92d7a Binary files /dev/null and b/public/terrain/19/858548/353778.terrain differ diff --git a/public/terrain/19/858548/353779.terrain b/public/terrain/19/858548/353779.terrain new file mode 100644 index 000000000..90b679936 Binary files /dev/null and b/public/terrain/19/858548/353779.terrain differ diff --git a/public/terrain/19/858548/353780.terrain b/public/terrain/19/858548/353780.terrain new file mode 100644 index 000000000..550195af0 Binary files /dev/null and b/public/terrain/19/858548/353780.terrain differ diff --git a/public/terrain/19/858548/353781.terrain b/public/terrain/19/858548/353781.terrain new file mode 100644 index 000000000..13e290ebd Binary files /dev/null and b/public/terrain/19/858548/353781.terrain differ diff --git a/public/terrain/19/858548/353782.terrain b/public/terrain/19/858548/353782.terrain new file mode 100644 index 000000000..51f4472e7 Binary files /dev/null and b/public/terrain/19/858548/353782.terrain differ diff --git a/public/terrain/19/858548/353783.terrain b/public/terrain/19/858548/353783.terrain new file mode 100644 index 000000000..c876eafe5 Binary files /dev/null and b/public/terrain/19/858548/353783.terrain differ diff --git a/public/terrain/19/858548/353784.terrain b/public/terrain/19/858548/353784.terrain new file mode 100644 index 000000000..9cef6576e Binary files /dev/null and b/public/terrain/19/858548/353784.terrain differ diff --git a/public/terrain/19/858548/353785.terrain b/public/terrain/19/858548/353785.terrain new file mode 100644 index 000000000..b65d711d9 Binary files /dev/null and b/public/terrain/19/858548/353785.terrain differ diff --git a/public/terrain/19/858548/353786.terrain b/public/terrain/19/858548/353786.terrain new file mode 100644 index 000000000..d43759b3d Binary files /dev/null and b/public/terrain/19/858548/353786.terrain differ diff --git a/public/terrain/19/858548/353787.terrain b/public/terrain/19/858548/353787.terrain new file mode 100644 index 000000000..bd9d36979 Binary files /dev/null and b/public/terrain/19/858548/353787.terrain differ diff --git a/public/terrain/19/858548/353788.terrain b/public/terrain/19/858548/353788.terrain new file mode 100644 index 000000000..8f7ed1adb Binary files /dev/null and b/public/terrain/19/858548/353788.terrain differ diff --git a/public/terrain/19/858548/353789.terrain b/public/terrain/19/858548/353789.terrain new file mode 100644 index 000000000..6671943b7 Binary files /dev/null and b/public/terrain/19/858548/353789.terrain differ diff --git a/public/terrain/19/858548/353790.terrain b/public/terrain/19/858548/353790.terrain new file mode 100644 index 000000000..04fef366f Binary files /dev/null and b/public/terrain/19/858548/353790.terrain differ diff --git a/public/terrain/19/858548/353791.terrain b/public/terrain/19/858548/353791.terrain new file mode 100644 index 000000000..85f9b78b4 Binary files /dev/null and b/public/terrain/19/858548/353791.terrain differ diff --git a/public/terrain/19/858548/353792.terrain b/public/terrain/19/858548/353792.terrain new file mode 100644 index 000000000..abce47ae8 Binary files /dev/null and b/public/terrain/19/858548/353792.terrain differ diff --git a/public/terrain/19/858548/353793.terrain b/public/terrain/19/858548/353793.terrain new file mode 100644 index 000000000..e7aa914f0 Binary files /dev/null and b/public/terrain/19/858548/353793.terrain differ diff --git a/public/terrain/19/858548/353794.terrain b/public/terrain/19/858548/353794.terrain new file mode 100644 index 000000000..7a3b5d2b9 Binary files /dev/null and b/public/terrain/19/858548/353794.terrain differ diff --git a/public/terrain/19/858548/353795.terrain b/public/terrain/19/858548/353795.terrain new file mode 100644 index 000000000..9bf0ce7b0 Binary files /dev/null and b/public/terrain/19/858548/353795.terrain differ diff --git a/public/terrain/19/858548/353796.terrain b/public/terrain/19/858548/353796.terrain new file mode 100644 index 000000000..0f625c2a9 Binary files /dev/null and b/public/terrain/19/858548/353796.terrain differ diff --git a/public/terrain/19/858548/353797.terrain b/public/terrain/19/858548/353797.terrain new file mode 100644 index 000000000..8f15e9d81 Binary files /dev/null and b/public/terrain/19/858548/353797.terrain differ diff --git a/public/terrain/19/858548/353798.terrain b/public/terrain/19/858548/353798.terrain new file mode 100644 index 000000000..4b5feec19 Binary files /dev/null and b/public/terrain/19/858548/353798.terrain differ diff --git a/public/terrain/19/858548/353799.terrain b/public/terrain/19/858548/353799.terrain new file mode 100644 index 000000000..ccb32fbaf Binary files /dev/null and b/public/terrain/19/858548/353799.terrain differ diff --git a/public/terrain/19/858548/353800.terrain b/public/terrain/19/858548/353800.terrain new file mode 100644 index 000000000..1b91a8542 Binary files /dev/null and b/public/terrain/19/858548/353800.terrain differ diff --git a/public/terrain/19/858548/353801.terrain b/public/terrain/19/858548/353801.terrain new file mode 100644 index 000000000..067936243 Binary files /dev/null and b/public/terrain/19/858548/353801.terrain differ diff --git a/public/terrain/19/858548/353802.terrain b/public/terrain/19/858548/353802.terrain new file mode 100644 index 000000000..742d5457f Binary files /dev/null and b/public/terrain/19/858548/353802.terrain differ diff --git a/public/terrain/19/858548/353803.terrain b/public/terrain/19/858548/353803.terrain new file mode 100644 index 000000000..4863873dc Binary files /dev/null and b/public/terrain/19/858548/353803.terrain differ diff --git a/public/terrain/19/858548/353804.terrain b/public/terrain/19/858548/353804.terrain new file mode 100644 index 000000000..c11e07328 Binary files /dev/null and b/public/terrain/19/858548/353804.terrain differ diff --git a/public/terrain/19/858548/353805.terrain b/public/terrain/19/858548/353805.terrain new file mode 100644 index 000000000..c6b9c3e38 Binary files /dev/null and b/public/terrain/19/858548/353805.terrain differ diff --git a/public/terrain/19/858548/353806.terrain b/public/terrain/19/858548/353806.terrain new file mode 100644 index 000000000..061180305 Binary files /dev/null and b/public/terrain/19/858548/353806.terrain differ diff --git a/public/terrain/19/858548/353807.terrain b/public/terrain/19/858548/353807.terrain new file mode 100644 index 000000000..d3c1cac59 Binary files /dev/null and b/public/terrain/19/858548/353807.terrain differ diff --git a/public/terrain/19/858548/353808.terrain b/public/terrain/19/858548/353808.terrain new file mode 100644 index 000000000..5e4d8c1a0 Binary files /dev/null and b/public/terrain/19/858548/353808.terrain differ diff --git a/public/terrain/19/858548/353809.terrain b/public/terrain/19/858548/353809.terrain new file mode 100644 index 000000000..a7a52248d Binary files /dev/null and b/public/terrain/19/858548/353809.terrain differ diff --git a/public/terrain/19/858548/353810.terrain b/public/terrain/19/858548/353810.terrain new file mode 100644 index 000000000..1a52cea8f Binary files /dev/null and b/public/terrain/19/858548/353810.terrain differ diff --git a/public/terrain/19/858548/353811.terrain b/public/terrain/19/858548/353811.terrain new file mode 100644 index 000000000..13c40f8e0 Binary files /dev/null and b/public/terrain/19/858548/353811.terrain differ diff --git a/public/terrain/19/858548/353812.terrain b/public/terrain/19/858548/353812.terrain new file mode 100644 index 000000000..81dcd860f Binary files /dev/null and b/public/terrain/19/858548/353812.terrain differ diff --git a/public/terrain/19/858548/353813.terrain b/public/terrain/19/858548/353813.terrain new file mode 100644 index 000000000..1914a95a9 Binary files /dev/null and b/public/terrain/19/858548/353813.terrain differ diff --git a/public/terrain/19/858548/353814.terrain b/public/terrain/19/858548/353814.terrain new file mode 100644 index 000000000..560f28080 Binary files /dev/null and b/public/terrain/19/858548/353814.terrain differ diff --git a/public/terrain/19/858548/353815.terrain b/public/terrain/19/858548/353815.terrain new file mode 100644 index 000000000..1f450b194 Binary files /dev/null and b/public/terrain/19/858548/353815.terrain differ diff --git a/public/terrain/19/858548/353816.terrain b/public/terrain/19/858548/353816.terrain new file mode 100644 index 000000000..c1bd58ba9 Binary files /dev/null and b/public/terrain/19/858548/353816.terrain differ diff --git a/public/terrain/19/858548/353817.terrain b/public/terrain/19/858548/353817.terrain new file mode 100644 index 000000000..889d01fdb Binary files /dev/null and b/public/terrain/19/858548/353817.terrain differ diff --git a/public/terrain/19/858548/353818.terrain b/public/terrain/19/858548/353818.terrain new file mode 100644 index 000000000..15f505ccb Binary files /dev/null and b/public/terrain/19/858548/353818.terrain differ diff --git a/public/terrain/19/858548/353819.terrain b/public/terrain/19/858548/353819.terrain new file mode 100644 index 000000000..2a5b7b2d0 Binary files /dev/null and b/public/terrain/19/858548/353819.terrain differ diff --git a/public/terrain/19/858548/353820.terrain b/public/terrain/19/858548/353820.terrain new file mode 100644 index 000000000..a7945ef7b Binary files /dev/null and b/public/terrain/19/858548/353820.terrain differ diff --git a/public/terrain/19/858548/353821.terrain b/public/terrain/19/858548/353821.terrain new file mode 100644 index 000000000..70f3a06a2 Binary files /dev/null and b/public/terrain/19/858548/353821.terrain differ diff --git a/public/terrain/19/858548/353822.terrain b/public/terrain/19/858548/353822.terrain new file mode 100644 index 000000000..258ea59d2 Binary files /dev/null and b/public/terrain/19/858548/353822.terrain differ diff --git a/public/terrain/19/858548/353823.terrain b/public/terrain/19/858548/353823.terrain new file mode 100644 index 000000000..c7593d790 Binary files /dev/null and b/public/terrain/19/858548/353823.terrain differ diff --git a/public/terrain/19/858548/353824.terrain b/public/terrain/19/858548/353824.terrain new file mode 100644 index 000000000..3612462b3 Binary files /dev/null and b/public/terrain/19/858548/353824.terrain differ diff --git a/public/terrain/19/858548/353825.terrain b/public/terrain/19/858548/353825.terrain new file mode 100644 index 000000000..fc89e2022 Binary files /dev/null and b/public/terrain/19/858548/353825.terrain differ diff --git a/public/terrain/19/858548/353826.terrain b/public/terrain/19/858548/353826.terrain new file mode 100644 index 000000000..0d6319618 Binary files /dev/null and b/public/terrain/19/858548/353826.terrain differ diff --git a/public/terrain/19/858548/353827.terrain b/public/terrain/19/858548/353827.terrain new file mode 100644 index 000000000..a52cb50fa Binary files /dev/null and b/public/terrain/19/858548/353827.terrain differ diff --git a/public/terrain/19/858548/353828.terrain b/public/terrain/19/858548/353828.terrain new file mode 100644 index 000000000..d152b0bbf Binary files /dev/null and b/public/terrain/19/858548/353828.terrain differ diff --git a/public/terrain/19/858548/353829.terrain b/public/terrain/19/858548/353829.terrain new file mode 100644 index 000000000..2c6fc6504 Binary files /dev/null and b/public/terrain/19/858548/353829.terrain differ diff --git a/public/terrain/19/858548/353830.terrain b/public/terrain/19/858548/353830.terrain new file mode 100644 index 000000000..2723e94ae Binary files /dev/null and b/public/terrain/19/858548/353830.terrain differ diff --git a/public/terrain/19/858548/353831.terrain b/public/terrain/19/858548/353831.terrain new file mode 100644 index 000000000..ff73a10ab Binary files /dev/null and b/public/terrain/19/858548/353831.terrain differ diff --git a/public/terrain/19/858548/353832.terrain b/public/terrain/19/858548/353832.terrain new file mode 100644 index 000000000..4fff7ad2c Binary files /dev/null and b/public/terrain/19/858548/353832.terrain differ diff --git a/public/terrain/19/858548/353833.terrain b/public/terrain/19/858548/353833.terrain new file mode 100644 index 000000000..7b10946e0 Binary files /dev/null and b/public/terrain/19/858548/353833.terrain differ diff --git a/public/terrain/19/858548/353834.terrain b/public/terrain/19/858548/353834.terrain new file mode 100644 index 000000000..9a2d1b631 Binary files /dev/null and b/public/terrain/19/858548/353834.terrain differ diff --git a/public/terrain/19/858548/353835.terrain b/public/terrain/19/858548/353835.terrain new file mode 100644 index 000000000..0662cde32 Binary files /dev/null and b/public/terrain/19/858548/353835.terrain differ diff --git a/public/terrain/19/858548/353836.terrain b/public/terrain/19/858548/353836.terrain new file mode 100644 index 000000000..3c4965733 Binary files /dev/null and b/public/terrain/19/858548/353836.terrain differ diff --git a/public/terrain/19/858548/353837.terrain b/public/terrain/19/858548/353837.terrain new file mode 100644 index 000000000..f9ae1b797 Binary files /dev/null and b/public/terrain/19/858548/353837.terrain differ diff --git a/public/terrain/19/858548/353838.terrain b/public/terrain/19/858548/353838.terrain new file mode 100644 index 000000000..eefc68363 Binary files /dev/null and b/public/terrain/19/858548/353838.terrain differ diff --git a/public/terrain/19/858548/353839.terrain b/public/terrain/19/858548/353839.terrain new file mode 100644 index 000000000..7b9e26592 Binary files /dev/null and b/public/terrain/19/858548/353839.terrain differ diff --git a/public/terrain/19/858548/353840.terrain b/public/terrain/19/858548/353840.terrain new file mode 100644 index 000000000..0e3c07ae4 Binary files /dev/null and b/public/terrain/19/858548/353840.terrain differ diff --git a/public/terrain/19/858548/353841.terrain b/public/terrain/19/858548/353841.terrain new file mode 100644 index 000000000..49142290d Binary files /dev/null and b/public/terrain/19/858548/353841.terrain differ diff --git a/public/terrain/19/858548/353842.terrain b/public/terrain/19/858548/353842.terrain new file mode 100644 index 000000000..237153737 Binary files /dev/null and b/public/terrain/19/858548/353842.terrain differ diff --git a/public/terrain/19/858548/353843.terrain b/public/terrain/19/858548/353843.terrain new file mode 100644 index 000000000..af237e463 Binary files /dev/null and b/public/terrain/19/858548/353843.terrain differ diff --git a/public/terrain/19/858548/353844.terrain b/public/terrain/19/858548/353844.terrain new file mode 100644 index 000000000..5e12e58ce Binary files /dev/null and b/public/terrain/19/858548/353844.terrain differ diff --git a/public/terrain/19/858548/353845.terrain b/public/terrain/19/858548/353845.terrain new file mode 100644 index 000000000..986513a61 Binary files /dev/null and b/public/terrain/19/858548/353845.terrain differ diff --git a/public/terrain/19/858548/353846.terrain b/public/terrain/19/858548/353846.terrain new file mode 100644 index 000000000..da0f46208 Binary files /dev/null and b/public/terrain/19/858548/353846.terrain differ diff --git a/public/terrain/19/858548/353847.terrain b/public/terrain/19/858548/353847.terrain new file mode 100644 index 000000000..7c687de24 Binary files /dev/null and b/public/terrain/19/858548/353847.terrain differ diff --git a/public/terrain/19/858548/353848.terrain b/public/terrain/19/858548/353848.terrain new file mode 100644 index 000000000..b704655a1 Binary files /dev/null and b/public/terrain/19/858548/353848.terrain differ diff --git a/public/terrain/19/858548/353849.terrain b/public/terrain/19/858548/353849.terrain new file mode 100644 index 000000000..a20cb479a Binary files /dev/null and b/public/terrain/19/858548/353849.terrain differ diff --git a/public/terrain/19/858548/353850.terrain b/public/terrain/19/858548/353850.terrain new file mode 100644 index 000000000..0d5b12e65 Binary files /dev/null and b/public/terrain/19/858548/353850.terrain differ diff --git a/public/terrain/19/858548/353851.terrain b/public/terrain/19/858548/353851.terrain new file mode 100644 index 000000000..86455a152 Binary files /dev/null and b/public/terrain/19/858548/353851.terrain differ diff --git a/public/terrain/19/858548/353852.terrain b/public/terrain/19/858548/353852.terrain new file mode 100644 index 000000000..b564354e5 Binary files /dev/null and b/public/terrain/19/858548/353852.terrain differ diff --git a/public/terrain/19/858548/353853.terrain b/public/terrain/19/858548/353853.terrain new file mode 100644 index 000000000..f502636b7 Binary files /dev/null and b/public/terrain/19/858548/353853.terrain differ diff --git a/public/terrain/19/858548/353854.terrain b/public/terrain/19/858548/353854.terrain new file mode 100644 index 000000000..cbd0a3dcf Binary files /dev/null and b/public/terrain/19/858548/353854.terrain differ diff --git a/public/terrain/19/858548/353855.terrain b/public/terrain/19/858548/353855.terrain new file mode 100644 index 000000000..cc5a82d83 Binary files /dev/null and b/public/terrain/19/858548/353855.terrain differ diff --git a/public/terrain/19/858548/353856.terrain b/public/terrain/19/858548/353856.terrain new file mode 100644 index 000000000..2729321c3 Binary files /dev/null and b/public/terrain/19/858548/353856.terrain differ diff --git a/public/terrain/19/858548/353857.terrain b/public/terrain/19/858548/353857.terrain new file mode 100644 index 000000000..d4c1391d7 Binary files /dev/null and b/public/terrain/19/858548/353857.terrain differ diff --git a/public/terrain/19/858548/353858.terrain b/public/terrain/19/858548/353858.terrain new file mode 100644 index 000000000..96d4a8e04 Binary files /dev/null and b/public/terrain/19/858548/353858.terrain differ diff --git a/public/terrain/19/858548/353859.terrain b/public/terrain/19/858548/353859.terrain new file mode 100644 index 000000000..807fd6bd5 Binary files /dev/null and b/public/terrain/19/858548/353859.terrain differ diff --git a/public/terrain/19/858548/353860.terrain b/public/terrain/19/858548/353860.terrain new file mode 100644 index 000000000..c396a4e31 Binary files /dev/null and b/public/terrain/19/858548/353860.terrain differ diff --git a/public/terrain/19/858548/353861.terrain b/public/terrain/19/858548/353861.terrain new file mode 100644 index 000000000..a62183665 Binary files /dev/null and b/public/terrain/19/858548/353861.terrain differ diff --git a/public/terrain/19/858548/353862.terrain b/public/terrain/19/858548/353862.terrain new file mode 100644 index 000000000..054632626 Binary files /dev/null and b/public/terrain/19/858548/353862.terrain differ diff --git a/public/terrain/19/858548/353863.terrain b/public/terrain/19/858548/353863.terrain new file mode 100644 index 000000000..3abfb8ec7 Binary files /dev/null and b/public/terrain/19/858548/353863.terrain differ diff --git a/public/terrain/19/858548/353864.terrain b/public/terrain/19/858548/353864.terrain new file mode 100644 index 000000000..bb8ffae36 Binary files /dev/null and b/public/terrain/19/858548/353864.terrain differ diff --git a/public/terrain/19/858548/353865.terrain b/public/terrain/19/858548/353865.terrain new file mode 100644 index 000000000..a4517c254 Binary files /dev/null and b/public/terrain/19/858548/353865.terrain differ diff --git a/public/terrain/19/858548/353866.terrain b/public/terrain/19/858548/353866.terrain new file mode 100644 index 000000000..5ccb1ecb8 Binary files /dev/null and b/public/terrain/19/858548/353866.terrain differ diff --git a/public/terrain/19/858548/353867.terrain b/public/terrain/19/858548/353867.terrain new file mode 100644 index 000000000..5011cf5a4 Binary files /dev/null and b/public/terrain/19/858548/353867.terrain differ diff --git a/public/terrain/19/858548/353868.terrain b/public/terrain/19/858548/353868.terrain new file mode 100644 index 000000000..0f02199fa Binary files /dev/null and b/public/terrain/19/858548/353868.terrain differ diff --git a/public/terrain/19/858548/353869.terrain b/public/terrain/19/858548/353869.terrain new file mode 100644 index 000000000..cbc9d4442 Binary files /dev/null and b/public/terrain/19/858548/353869.terrain differ diff --git a/public/terrain/19/858548/353870.terrain b/public/terrain/19/858548/353870.terrain new file mode 100644 index 000000000..a27978b33 Binary files /dev/null and b/public/terrain/19/858548/353870.terrain differ diff --git a/public/terrain/19/858548/353871.terrain b/public/terrain/19/858548/353871.terrain new file mode 100644 index 000000000..ece9bfbe6 Binary files /dev/null and b/public/terrain/19/858548/353871.terrain differ diff --git a/public/terrain/19/858548/353872.terrain b/public/terrain/19/858548/353872.terrain new file mode 100644 index 000000000..ae08ffc47 Binary files /dev/null and b/public/terrain/19/858548/353872.terrain differ diff --git a/public/terrain/19/858548/353873.terrain b/public/terrain/19/858548/353873.terrain new file mode 100644 index 000000000..631957913 Binary files /dev/null and b/public/terrain/19/858548/353873.terrain differ diff --git a/public/terrain/19/858548/353874.terrain b/public/terrain/19/858548/353874.terrain new file mode 100644 index 000000000..9e70a2603 Binary files /dev/null and b/public/terrain/19/858548/353874.terrain differ diff --git a/public/terrain/19/858548/353875.terrain b/public/terrain/19/858548/353875.terrain new file mode 100644 index 000000000..f8b9794db Binary files /dev/null and b/public/terrain/19/858548/353875.terrain differ diff --git a/public/terrain/19/858548/353876.terrain b/public/terrain/19/858548/353876.terrain new file mode 100644 index 000000000..00d77e1c1 Binary files /dev/null and b/public/terrain/19/858548/353876.terrain differ diff --git a/public/terrain/19/858548/353877.terrain b/public/terrain/19/858548/353877.terrain new file mode 100644 index 000000000..3c6ad9ebf Binary files /dev/null and b/public/terrain/19/858548/353877.terrain differ diff --git a/public/terrain/19/858548/353878.terrain b/public/terrain/19/858548/353878.terrain new file mode 100644 index 000000000..36d912ee7 Binary files /dev/null and b/public/terrain/19/858548/353878.terrain differ diff --git a/public/terrain/19/858548/353879.terrain b/public/terrain/19/858548/353879.terrain new file mode 100644 index 000000000..09095189d Binary files /dev/null and b/public/terrain/19/858548/353879.terrain differ diff --git a/public/terrain/19/858548/353880.terrain b/public/terrain/19/858548/353880.terrain new file mode 100644 index 000000000..5220807ba Binary files /dev/null and b/public/terrain/19/858548/353880.terrain differ diff --git a/public/terrain/19/858548/353881.terrain b/public/terrain/19/858548/353881.terrain new file mode 100644 index 000000000..e0e3fd9f5 Binary files /dev/null and b/public/terrain/19/858548/353881.terrain differ diff --git a/public/terrain/19/858548/353882.terrain b/public/terrain/19/858548/353882.terrain new file mode 100644 index 000000000..e656ad654 Binary files /dev/null and b/public/terrain/19/858548/353882.terrain differ diff --git a/public/terrain/19/858548/353883.terrain b/public/terrain/19/858548/353883.terrain new file mode 100644 index 000000000..e4b45522e Binary files /dev/null and b/public/terrain/19/858548/353883.terrain differ diff --git a/public/terrain/19/858548/353884.terrain b/public/terrain/19/858548/353884.terrain new file mode 100644 index 000000000..173c8a523 Binary files /dev/null and b/public/terrain/19/858548/353884.terrain differ diff --git a/public/terrain/19/858548/353885.terrain b/public/terrain/19/858548/353885.terrain new file mode 100644 index 000000000..be06b4281 Binary files /dev/null and b/public/terrain/19/858548/353885.terrain differ diff --git a/public/terrain/19/858548/353886.terrain b/public/terrain/19/858548/353886.terrain new file mode 100644 index 000000000..ec4abe0fb Binary files /dev/null and b/public/terrain/19/858548/353886.terrain differ diff --git a/public/terrain/19/858548/353887.terrain b/public/terrain/19/858548/353887.terrain new file mode 100644 index 000000000..c50cc2c85 Binary files /dev/null and b/public/terrain/19/858548/353887.terrain differ diff --git a/public/terrain/19/858548/353888.terrain b/public/terrain/19/858548/353888.terrain new file mode 100644 index 000000000..85b79087d Binary files /dev/null and b/public/terrain/19/858548/353888.terrain differ diff --git a/public/terrain/19/858548/353889.terrain b/public/terrain/19/858548/353889.terrain new file mode 100644 index 000000000..e05de8770 Binary files /dev/null and b/public/terrain/19/858548/353889.terrain differ diff --git a/public/terrain/19/858548/353890.terrain b/public/terrain/19/858548/353890.terrain new file mode 100644 index 000000000..bb1abd27c Binary files /dev/null and b/public/terrain/19/858548/353890.terrain differ diff --git a/public/terrain/19/858548/353891.terrain b/public/terrain/19/858548/353891.terrain new file mode 100644 index 000000000..59a6f35f6 Binary files /dev/null and b/public/terrain/19/858548/353891.terrain differ diff --git a/public/terrain/19/858548/353892.terrain b/public/terrain/19/858548/353892.terrain new file mode 100644 index 000000000..4c8631e17 Binary files /dev/null and b/public/terrain/19/858548/353892.terrain differ diff --git a/public/terrain/19/858548/353893.terrain b/public/terrain/19/858548/353893.terrain new file mode 100644 index 000000000..68a853224 Binary files /dev/null and b/public/terrain/19/858548/353893.terrain differ diff --git a/public/terrain/19/858548/353894.terrain b/public/terrain/19/858548/353894.terrain new file mode 100644 index 000000000..5cf1c75fa Binary files /dev/null and b/public/terrain/19/858548/353894.terrain differ diff --git a/public/terrain/19/858548/353895.terrain b/public/terrain/19/858548/353895.terrain new file mode 100644 index 000000000..fb8cc7488 Binary files /dev/null and b/public/terrain/19/858548/353895.terrain differ diff --git a/public/terrain/19/858548/353896.terrain b/public/terrain/19/858548/353896.terrain new file mode 100644 index 000000000..b3ecaed48 Binary files /dev/null and b/public/terrain/19/858548/353896.terrain differ diff --git a/public/terrain/19/858548/353897.terrain b/public/terrain/19/858548/353897.terrain new file mode 100644 index 000000000..b405dee6e Binary files /dev/null and b/public/terrain/19/858548/353897.terrain differ diff --git a/public/terrain/19/858548/353898.terrain b/public/terrain/19/858548/353898.terrain new file mode 100644 index 000000000..4dd0684b3 Binary files /dev/null and b/public/terrain/19/858548/353898.terrain differ diff --git a/public/terrain/19/858548/353899.terrain b/public/terrain/19/858548/353899.terrain new file mode 100644 index 000000000..4dfe15050 Binary files /dev/null and b/public/terrain/19/858548/353899.terrain differ diff --git a/public/terrain/19/858548/353900.terrain b/public/terrain/19/858548/353900.terrain new file mode 100644 index 000000000..8e1ba382c Binary files /dev/null and b/public/terrain/19/858548/353900.terrain differ diff --git a/public/terrain/19/858548/353901.terrain b/public/terrain/19/858548/353901.terrain new file mode 100644 index 000000000..d5704dbdf Binary files /dev/null and b/public/terrain/19/858548/353901.terrain differ diff --git a/public/terrain/19/858548/353902.terrain b/public/terrain/19/858548/353902.terrain new file mode 100644 index 000000000..766438a2b Binary files /dev/null and b/public/terrain/19/858548/353902.terrain differ diff --git a/public/terrain/19/858548/353903.terrain b/public/terrain/19/858548/353903.terrain new file mode 100644 index 000000000..e382fbb29 Binary files /dev/null and b/public/terrain/19/858548/353903.terrain differ diff --git a/public/terrain/19/858548/353904.terrain b/public/terrain/19/858548/353904.terrain new file mode 100644 index 000000000..22d392dd6 Binary files /dev/null and b/public/terrain/19/858548/353904.terrain differ diff --git a/public/terrain/19/858548/353905.terrain b/public/terrain/19/858548/353905.terrain new file mode 100644 index 000000000..737054206 Binary files /dev/null and b/public/terrain/19/858548/353905.terrain differ diff --git a/public/terrain/19/858548/353906.terrain b/public/terrain/19/858548/353906.terrain new file mode 100644 index 000000000..04d3538ef Binary files /dev/null and b/public/terrain/19/858548/353906.terrain differ diff --git a/public/terrain/19/858548/353907.terrain b/public/terrain/19/858548/353907.terrain new file mode 100644 index 000000000..9fc7d42a7 Binary files /dev/null and b/public/terrain/19/858548/353907.terrain differ diff --git a/public/terrain/19/858548/353908.terrain b/public/terrain/19/858548/353908.terrain new file mode 100644 index 000000000..40e23cbc8 Binary files /dev/null and b/public/terrain/19/858548/353908.terrain differ diff --git a/public/terrain/19/858548/353909.terrain b/public/terrain/19/858548/353909.terrain new file mode 100644 index 000000000..e47c04043 Binary files /dev/null and b/public/terrain/19/858548/353909.terrain differ diff --git a/public/terrain/19/858548/353910.terrain b/public/terrain/19/858548/353910.terrain new file mode 100644 index 000000000..d04aab487 Binary files /dev/null and b/public/terrain/19/858548/353910.terrain differ diff --git a/public/terrain/19/858548/353911.terrain b/public/terrain/19/858548/353911.terrain new file mode 100644 index 000000000..72ed2344f Binary files /dev/null and b/public/terrain/19/858548/353911.terrain differ diff --git a/public/terrain/19/858548/353912.terrain b/public/terrain/19/858548/353912.terrain new file mode 100644 index 000000000..cb777f360 Binary files /dev/null and b/public/terrain/19/858548/353912.terrain differ diff --git a/public/terrain/19/858548/353913.terrain b/public/terrain/19/858548/353913.terrain new file mode 100644 index 000000000..2cb3bdb7d Binary files /dev/null and b/public/terrain/19/858548/353913.terrain differ diff --git a/public/terrain/19/858548/353914.terrain b/public/terrain/19/858548/353914.terrain new file mode 100644 index 000000000..061d5f766 Binary files /dev/null and b/public/terrain/19/858548/353914.terrain differ diff --git a/public/terrain/19/858548/353915.terrain b/public/terrain/19/858548/353915.terrain new file mode 100644 index 000000000..6aafd6436 Binary files /dev/null and b/public/terrain/19/858548/353915.terrain differ diff --git a/public/terrain/19/858548/353916.terrain b/public/terrain/19/858548/353916.terrain new file mode 100644 index 000000000..ca7042722 Binary files /dev/null and b/public/terrain/19/858548/353916.terrain differ diff --git a/public/terrain/19/858548/353917.terrain b/public/terrain/19/858548/353917.terrain new file mode 100644 index 000000000..a5d97636e Binary files /dev/null and b/public/terrain/19/858548/353917.terrain differ diff --git a/public/terrain/19/858548/353918.terrain b/public/terrain/19/858548/353918.terrain new file mode 100644 index 000000000..a520ad2c8 Binary files /dev/null and b/public/terrain/19/858548/353918.terrain differ diff --git a/public/terrain/19/858548/353919.terrain b/public/terrain/19/858548/353919.terrain new file mode 100644 index 000000000..ae26682e9 Binary files /dev/null and b/public/terrain/19/858548/353919.terrain differ diff --git a/public/terrain/19/858548/353920.terrain b/public/terrain/19/858548/353920.terrain new file mode 100644 index 000000000..8dd0ff2d7 Binary files /dev/null and b/public/terrain/19/858548/353920.terrain differ diff --git a/public/terrain/19/858548/353921.terrain b/public/terrain/19/858548/353921.terrain new file mode 100644 index 000000000..085b2deb1 Binary files /dev/null and b/public/terrain/19/858548/353921.terrain differ diff --git a/public/terrain/19/858548/353922.terrain b/public/terrain/19/858548/353922.terrain new file mode 100644 index 000000000..f22400ba3 Binary files /dev/null and b/public/terrain/19/858548/353922.terrain differ diff --git a/public/terrain/19/858548/353923.terrain b/public/terrain/19/858548/353923.terrain new file mode 100644 index 000000000..07ce44791 Binary files /dev/null and b/public/terrain/19/858548/353923.terrain differ diff --git a/public/terrain/19/858548/353924.terrain b/public/terrain/19/858548/353924.terrain new file mode 100644 index 000000000..8c99ba2dc Binary files /dev/null and b/public/terrain/19/858548/353924.terrain differ diff --git a/public/terrain/19/858548/353925.terrain b/public/terrain/19/858548/353925.terrain new file mode 100644 index 000000000..d71b1be93 Binary files /dev/null and b/public/terrain/19/858548/353925.terrain differ diff --git a/public/terrain/19/858548/353926.terrain b/public/terrain/19/858548/353926.terrain new file mode 100644 index 000000000..c8756d3b4 Binary files /dev/null and b/public/terrain/19/858548/353926.terrain differ diff --git a/public/terrain/19/858548/353927.terrain b/public/terrain/19/858548/353927.terrain new file mode 100644 index 000000000..3872c6fa1 Binary files /dev/null and b/public/terrain/19/858548/353927.terrain differ diff --git a/public/terrain/19/858548/353928.terrain b/public/terrain/19/858548/353928.terrain new file mode 100644 index 000000000..305fd8778 Binary files /dev/null and b/public/terrain/19/858548/353928.terrain differ diff --git a/public/terrain/19/858548/353929.terrain b/public/terrain/19/858548/353929.terrain new file mode 100644 index 000000000..9638919bb Binary files /dev/null and b/public/terrain/19/858548/353929.terrain differ diff --git a/public/terrain/19/858548/353930.terrain b/public/terrain/19/858548/353930.terrain new file mode 100644 index 000000000..b42aef153 Binary files /dev/null and b/public/terrain/19/858548/353930.terrain differ diff --git a/public/terrain/19/858548/353931.terrain b/public/terrain/19/858548/353931.terrain new file mode 100644 index 000000000..73c237207 Binary files /dev/null and b/public/terrain/19/858548/353931.terrain differ diff --git a/public/terrain/19/858548/353932.terrain b/public/terrain/19/858548/353932.terrain new file mode 100644 index 000000000..1da5a969a Binary files /dev/null and b/public/terrain/19/858548/353932.terrain differ diff --git a/public/terrain/19/858548/353933.terrain b/public/terrain/19/858548/353933.terrain new file mode 100644 index 000000000..1bcc597e8 Binary files /dev/null and b/public/terrain/19/858548/353933.terrain differ diff --git a/public/terrain/19/858548/353934.terrain b/public/terrain/19/858548/353934.terrain new file mode 100644 index 000000000..4a1b6f6ea Binary files /dev/null and b/public/terrain/19/858548/353934.terrain differ diff --git a/public/terrain/19/858548/353935.terrain b/public/terrain/19/858548/353935.terrain new file mode 100644 index 000000000..7310c1642 Binary files /dev/null and b/public/terrain/19/858548/353935.terrain differ diff --git a/public/terrain/19/858548/353936.terrain b/public/terrain/19/858548/353936.terrain new file mode 100644 index 000000000..c7661760c Binary files /dev/null and b/public/terrain/19/858548/353936.terrain differ diff --git a/public/terrain/19/858548/353937.terrain b/public/terrain/19/858548/353937.terrain new file mode 100644 index 000000000..eb4a184f7 Binary files /dev/null and b/public/terrain/19/858548/353937.terrain differ diff --git a/public/terrain/19/858548/353938.terrain b/public/terrain/19/858548/353938.terrain new file mode 100644 index 000000000..e1652b333 Binary files /dev/null and b/public/terrain/19/858548/353938.terrain differ diff --git a/public/terrain/19/858548/353939.terrain b/public/terrain/19/858548/353939.terrain new file mode 100644 index 000000000..0d8dc76bc Binary files /dev/null and b/public/terrain/19/858548/353939.terrain differ diff --git a/public/terrain/19/858548/353940.terrain b/public/terrain/19/858548/353940.terrain new file mode 100644 index 000000000..141d15cf2 Binary files /dev/null and b/public/terrain/19/858548/353940.terrain differ diff --git a/public/terrain/19/858548/353941.terrain b/public/terrain/19/858548/353941.terrain new file mode 100644 index 000000000..2ce517eea Binary files /dev/null and b/public/terrain/19/858548/353941.terrain differ diff --git a/public/terrain/19/858548/353942.terrain b/public/terrain/19/858548/353942.terrain new file mode 100644 index 000000000..536f7ee55 Binary files /dev/null and b/public/terrain/19/858548/353942.terrain differ diff --git a/public/terrain/19/858548/353943.terrain b/public/terrain/19/858548/353943.terrain new file mode 100644 index 000000000..118a54a7d Binary files /dev/null and b/public/terrain/19/858548/353943.terrain differ diff --git a/public/terrain/19/858548/353944.terrain b/public/terrain/19/858548/353944.terrain new file mode 100644 index 000000000..3f58fef6c Binary files /dev/null and b/public/terrain/19/858548/353944.terrain differ diff --git a/public/terrain/19/858548/353945.terrain b/public/terrain/19/858548/353945.terrain new file mode 100644 index 000000000..e397bbbba Binary files /dev/null and b/public/terrain/19/858548/353945.terrain differ diff --git a/public/terrain/19/858548/353946.terrain b/public/terrain/19/858548/353946.terrain new file mode 100644 index 000000000..ff1f1200d Binary files /dev/null and b/public/terrain/19/858548/353946.terrain differ diff --git a/public/terrain/19/858548/353947.terrain b/public/terrain/19/858548/353947.terrain new file mode 100644 index 000000000..c9e6b9bdc Binary files /dev/null and b/public/terrain/19/858548/353947.terrain differ diff --git a/public/terrain/19/858548/353948.terrain b/public/terrain/19/858548/353948.terrain new file mode 100644 index 000000000..1bf501aa2 Binary files /dev/null and b/public/terrain/19/858548/353948.terrain differ diff --git a/public/terrain/19/858548/353949.terrain b/public/terrain/19/858548/353949.terrain new file mode 100644 index 000000000..ba8e98f46 Binary files /dev/null and b/public/terrain/19/858548/353949.terrain differ diff --git a/public/terrain/19/858548/353950.terrain b/public/terrain/19/858548/353950.terrain new file mode 100644 index 000000000..e96671c00 Binary files /dev/null and b/public/terrain/19/858548/353950.terrain differ diff --git a/public/terrain/19/858548/353951.terrain b/public/terrain/19/858548/353951.terrain new file mode 100644 index 000000000..58dec0e47 Binary files /dev/null and b/public/terrain/19/858548/353951.terrain differ diff --git a/public/terrain/19/858548/353952.terrain b/public/terrain/19/858548/353952.terrain new file mode 100644 index 000000000..8a910d929 Binary files /dev/null and b/public/terrain/19/858548/353952.terrain differ diff --git a/public/terrain/19/858548/353953.terrain b/public/terrain/19/858548/353953.terrain new file mode 100644 index 000000000..7f5c1d5e4 Binary files /dev/null and b/public/terrain/19/858548/353953.terrain differ diff --git a/public/terrain/19/858548/353954.terrain b/public/terrain/19/858548/353954.terrain new file mode 100644 index 000000000..8671a8c0c Binary files /dev/null and b/public/terrain/19/858548/353954.terrain differ diff --git a/public/terrain/19/858548/353955.terrain b/public/terrain/19/858548/353955.terrain new file mode 100644 index 000000000..3369c1920 Binary files /dev/null and b/public/terrain/19/858548/353955.terrain differ diff --git a/public/terrain/19/858548/353956.terrain b/public/terrain/19/858548/353956.terrain new file mode 100644 index 000000000..4d4a32f0c Binary files /dev/null and b/public/terrain/19/858548/353956.terrain differ diff --git a/public/terrain/19/858548/353957.terrain b/public/terrain/19/858548/353957.terrain new file mode 100644 index 000000000..f354a1d8e Binary files /dev/null and b/public/terrain/19/858548/353957.terrain differ diff --git a/public/terrain/19/858548/353958.terrain b/public/terrain/19/858548/353958.terrain new file mode 100644 index 000000000..a290d4f69 Binary files /dev/null and b/public/terrain/19/858548/353958.terrain differ diff --git a/public/terrain/19/858548/353959.terrain b/public/terrain/19/858548/353959.terrain new file mode 100644 index 000000000..cdf1fad05 Binary files /dev/null and b/public/terrain/19/858548/353959.terrain differ diff --git a/public/terrain/19/858548/353960.terrain b/public/terrain/19/858548/353960.terrain new file mode 100644 index 000000000..441f5a201 Binary files /dev/null and b/public/terrain/19/858548/353960.terrain differ diff --git a/public/terrain/19/858548/353961.terrain b/public/terrain/19/858548/353961.terrain new file mode 100644 index 000000000..088780047 Binary files /dev/null and b/public/terrain/19/858548/353961.terrain differ diff --git a/public/terrain/19/858548/353962.terrain b/public/terrain/19/858548/353962.terrain new file mode 100644 index 000000000..5f8f1c977 Binary files /dev/null and b/public/terrain/19/858548/353962.terrain differ diff --git a/public/terrain/19/858548/353963.terrain b/public/terrain/19/858548/353963.terrain new file mode 100644 index 000000000..b9f7100a7 Binary files /dev/null and b/public/terrain/19/858548/353963.terrain differ diff --git a/public/terrain/19/858548/353964.terrain b/public/terrain/19/858548/353964.terrain new file mode 100644 index 000000000..aca5872a3 Binary files /dev/null and b/public/terrain/19/858548/353964.terrain differ diff --git a/public/terrain/19/858548/353965.terrain b/public/terrain/19/858548/353965.terrain new file mode 100644 index 000000000..b13882d30 Binary files /dev/null and b/public/terrain/19/858548/353965.terrain differ diff --git a/public/terrain/19/858548/353966.terrain b/public/terrain/19/858548/353966.terrain new file mode 100644 index 000000000..720ca62c2 Binary files /dev/null and b/public/terrain/19/858548/353966.terrain differ diff --git a/public/terrain/19/858548/353967.terrain b/public/terrain/19/858548/353967.terrain new file mode 100644 index 000000000..26b9ab71f Binary files /dev/null and b/public/terrain/19/858548/353967.terrain differ diff --git a/public/terrain/19/858548/353968.terrain b/public/terrain/19/858548/353968.terrain new file mode 100644 index 000000000..623c7c1c5 Binary files /dev/null and b/public/terrain/19/858548/353968.terrain differ diff --git a/public/terrain/19/858548/353969.terrain b/public/terrain/19/858548/353969.terrain new file mode 100644 index 000000000..3ae79f746 Binary files /dev/null and b/public/terrain/19/858548/353969.terrain differ diff --git a/public/terrain/19/858548/353970.terrain b/public/terrain/19/858548/353970.terrain new file mode 100644 index 000000000..1d41579e7 Binary files /dev/null and b/public/terrain/19/858548/353970.terrain differ diff --git a/public/terrain/19/858548/353971.terrain b/public/terrain/19/858548/353971.terrain new file mode 100644 index 000000000..1b9e24a0c Binary files /dev/null and b/public/terrain/19/858548/353971.terrain differ diff --git a/public/terrain/19/858548/353972.terrain b/public/terrain/19/858548/353972.terrain new file mode 100644 index 000000000..e9b62982a Binary files /dev/null and b/public/terrain/19/858548/353972.terrain differ diff --git a/public/terrain/19/858548/353973.terrain b/public/terrain/19/858548/353973.terrain new file mode 100644 index 000000000..97c96ec58 Binary files /dev/null and b/public/terrain/19/858548/353973.terrain differ diff --git a/public/terrain/19/858548/353974.terrain b/public/terrain/19/858548/353974.terrain new file mode 100644 index 000000000..eccc4f0c1 Binary files /dev/null and b/public/terrain/19/858548/353974.terrain differ diff --git a/public/terrain/19/858548/353975.terrain b/public/terrain/19/858548/353975.terrain new file mode 100644 index 000000000..df5388d7e Binary files /dev/null and b/public/terrain/19/858548/353975.terrain differ diff --git a/public/terrain/19/858548/353976.terrain b/public/terrain/19/858548/353976.terrain new file mode 100644 index 000000000..30aaaf226 Binary files /dev/null and b/public/terrain/19/858548/353976.terrain differ diff --git a/public/terrain/19/858548/353977.terrain b/public/terrain/19/858548/353977.terrain new file mode 100644 index 000000000..72e57cb80 Binary files /dev/null and b/public/terrain/19/858548/353977.terrain differ diff --git a/public/terrain/19/858548/353978.terrain b/public/terrain/19/858548/353978.terrain new file mode 100644 index 000000000..e4243d02d Binary files /dev/null and b/public/terrain/19/858548/353978.terrain differ diff --git a/public/terrain/19/858548/353979.terrain b/public/terrain/19/858548/353979.terrain new file mode 100644 index 000000000..18100f4d3 Binary files /dev/null and b/public/terrain/19/858548/353979.terrain differ diff --git a/public/terrain/19/858548/353980.terrain b/public/terrain/19/858548/353980.terrain new file mode 100644 index 000000000..4c2bd0f4e Binary files /dev/null and b/public/terrain/19/858548/353980.terrain differ diff --git a/public/terrain/19/858548/353981.terrain b/public/terrain/19/858548/353981.terrain new file mode 100644 index 000000000..dbc23c640 Binary files /dev/null and b/public/terrain/19/858548/353981.terrain differ diff --git a/public/terrain/19/858548/353982.terrain b/public/terrain/19/858548/353982.terrain new file mode 100644 index 000000000..36ca334ad Binary files /dev/null and b/public/terrain/19/858548/353982.terrain differ diff --git a/public/terrain/19/858548/353983.terrain b/public/terrain/19/858548/353983.terrain new file mode 100644 index 000000000..86df8700b Binary files /dev/null and b/public/terrain/19/858548/353983.terrain differ diff --git a/public/terrain/19/858548/353984.terrain b/public/terrain/19/858548/353984.terrain new file mode 100644 index 000000000..705dbf269 Binary files /dev/null and b/public/terrain/19/858548/353984.terrain differ diff --git a/public/terrain/19/858548/353985.terrain b/public/terrain/19/858548/353985.terrain new file mode 100644 index 000000000..e86dd1ba2 Binary files /dev/null and b/public/terrain/19/858548/353985.terrain differ diff --git a/public/terrain/19/858548/353986.terrain b/public/terrain/19/858548/353986.terrain new file mode 100644 index 000000000..18ee95d07 Binary files /dev/null and b/public/terrain/19/858548/353986.terrain differ diff --git a/public/terrain/19/858548/353987.terrain b/public/terrain/19/858548/353987.terrain new file mode 100644 index 000000000..22039a1b8 Binary files /dev/null and b/public/terrain/19/858548/353987.terrain differ diff --git a/public/terrain/19/858548/353988.terrain b/public/terrain/19/858548/353988.terrain new file mode 100644 index 000000000..c9bc1a943 Binary files /dev/null and b/public/terrain/19/858548/353988.terrain differ diff --git a/public/terrain/19/858548/353989.terrain b/public/terrain/19/858548/353989.terrain new file mode 100644 index 000000000..247a86f53 Binary files /dev/null and b/public/terrain/19/858548/353989.terrain differ diff --git a/public/terrain/19/858548/353990.terrain b/public/terrain/19/858548/353990.terrain new file mode 100644 index 000000000..a33f3abf9 Binary files /dev/null and b/public/terrain/19/858548/353990.terrain differ diff --git a/public/terrain/19/858548/353991.terrain b/public/terrain/19/858548/353991.terrain new file mode 100644 index 000000000..ce775ddfe Binary files /dev/null and b/public/terrain/19/858548/353991.terrain differ diff --git a/public/terrain/19/858548/353992.terrain b/public/terrain/19/858548/353992.terrain new file mode 100644 index 000000000..cd94aad0c Binary files /dev/null and b/public/terrain/19/858548/353992.terrain differ diff --git a/public/terrain/19/858548/353993.terrain b/public/terrain/19/858548/353993.terrain new file mode 100644 index 000000000..15630c687 Binary files /dev/null and b/public/terrain/19/858548/353993.terrain differ diff --git a/public/terrain/19/858548/353994.terrain b/public/terrain/19/858548/353994.terrain new file mode 100644 index 000000000..2fbc01ba5 Binary files /dev/null and b/public/terrain/19/858548/353994.terrain differ diff --git a/public/terrain/19/858548/353995.terrain b/public/terrain/19/858548/353995.terrain new file mode 100644 index 000000000..9d97789c5 Binary files /dev/null and b/public/terrain/19/858548/353995.terrain differ diff --git a/public/terrain/19/858548/353996.terrain b/public/terrain/19/858548/353996.terrain new file mode 100644 index 000000000..000314e91 Binary files /dev/null and b/public/terrain/19/858548/353996.terrain differ diff --git a/public/terrain/19/858548/353997.terrain b/public/terrain/19/858548/353997.terrain new file mode 100644 index 000000000..9ac672d45 Binary files /dev/null and b/public/terrain/19/858548/353997.terrain differ diff --git a/public/terrain/19/858548/353998.terrain b/public/terrain/19/858548/353998.terrain new file mode 100644 index 000000000..0fad52196 Binary files /dev/null and b/public/terrain/19/858548/353998.terrain differ diff --git a/public/terrain/19/858548/353999.terrain b/public/terrain/19/858548/353999.terrain new file mode 100644 index 000000000..cddceb0fd Binary files /dev/null and b/public/terrain/19/858548/353999.terrain differ diff --git a/public/terrain/19/858548/354000.terrain b/public/terrain/19/858548/354000.terrain new file mode 100644 index 000000000..413cc18b3 Binary files /dev/null and b/public/terrain/19/858548/354000.terrain differ diff --git a/public/terrain/19/858548/354001.terrain b/public/terrain/19/858548/354001.terrain new file mode 100644 index 000000000..81f3cf6fc Binary files /dev/null and b/public/terrain/19/858548/354001.terrain differ diff --git a/public/terrain/19/858548/354002.terrain b/public/terrain/19/858548/354002.terrain new file mode 100644 index 000000000..86d23b8ce Binary files /dev/null and b/public/terrain/19/858548/354002.terrain differ diff --git a/public/terrain/19/858548/354003.terrain b/public/terrain/19/858548/354003.terrain new file mode 100644 index 000000000..94194a80e Binary files /dev/null and b/public/terrain/19/858548/354003.terrain differ diff --git a/public/terrain/19/858548/354004.terrain b/public/terrain/19/858548/354004.terrain new file mode 100644 index 000000000..5d0da9db2 Binary files /dev/null and b/public/terrain/19/858548/354004.terrain differ diff --git a/public/terrain/19/858548/354005.terrain b/public/terrain/19/858548/354005.terrain new file mode 100644 index 000000000..a2d856ac1 Binary files /dev/null and b/public/terrain/19/858548/354005.terrain differ diff --git a/public/terrain/19/858548/354006.terrain b/public/terrain/19/858548/354006.terrain new file mode 100644 index 000000000..0776a73b9 Binary files /dev/null and b/public/terrain/19/858548/354006.terrain differ diff --git a/public/terrain/19/858548/354007.terrain b/public/terrain/19/858548/354007.terrain new file mode 100644 index 000000000..00f864735 Binary files /dev/null and b/public/terrain/19/858548/354007.terrain differ diff --git a/public/terrain/19/858548/354008.terrain b/public/terrain/19/858548/354008.terrain new file mode 100644 index 000000000..bb8d39302 Binary files /dev/null and b/public/terrain/19/858548/354008.terrain differ diff --git a/public/terrain/19/858548/354009.terrain b/public/terrain/19/858548/354009.terrain new file mode 100644 index 000000000..5d80abc40 Binary files /dev/null and b/public/terrain/19/858548/354009.terrain differ diff --git a/public/terrain/19/858548/354010.terrain b/public/terrain/19/858548/354010.terrain new file mode 100644 index 000000000..7863d841d Binary files /dev/null and b/public/terrain/19/858548/354010.terrain differ diff --git a/public/terrain/19/858548/354011.terrain b/public/terrain/19/858548/354011.terrain new file mode 100644 index 000000000..1083ba1cc Binary files /dev/null and b/public/terrain/19/858548/354011.terrain differ diff --git a/public/terrain/19/858548/354012.terrain b/public/terrain/19/858548/354012.terrain new file mode 100644 index 000000000..4240b396e Binary files /dev/null and b/public/terrain/19/858548/354012.terrain differ diff --git a/public/terrain/19/858548/354013.terrain b/public/terrain/19/858548/354013.terrain new file mode 100644 index 000000000..1303bb39a Binary files /dev/null and b/public/terrain/19/858548/354013.terrain differ diff --git a/public/terrain/19/858548/354014.terrain b/public/terrain/19/858548/354014.terrain new file mode 100644 index 000000000..25d69d542 Binary files /dev/null and b/public/terrain/19/858548/354014.terrain differ diff --git a/public/terrain/19/858548/354015.terrain b/public/terrain/19/858548/354015.terrain new file mode 100644 index 000000000..25f747761 Binary files /dev/null and b/public/terrain/19/858548/354015.terrain differ diff --git a/public/terrain/19/858548/354016.terrain b/public/terrain/19/858548/354016.terrain new file mode 100644 index 000000000..10b4c03af Binary files /dev/null and b/public/terrain/19/858548/354016.terrain differ diff --git a/public/terrain/19/858548/354017.terrain b/public/terrain/19/858548/354017.terrain new file mode 100644 index 000000000..44ebd66d3 Binary files /dev/null and b/public/terrain/19/858548/354017.terrain differ diff --git a/public/terrain/19/858548/354018.terrain b/public/terrain/19/858548/354018.terrain new file mode 100644 index 000000000..0dc1a28f5 Binary files /dev/null and b/public/terrain/19/858548/354018.terrain differ diff --git a/public/terrain/19/858548/354019.terrain b/public/terrain/19/858548/354019.terrain new file mode 100644 index 000000000..892b8416d Binary files /dev/null and b/public/terrain/19/858548/354019.terrain differ diff --git a/public/terrain/19/858548/354020.terrain b/public/terrain/19/858548/354020.terrain new file mode 100644 index 000000000..4e80a1dc5 Binary files /dev/null and b/public/terrain/19/858548/354020.terrain differ diff --git a/public/terrain/19/858548/354021.terrain b/public/terrain/19/858548/354021.terrain new file mode 100644 index 000000000..9aeef5efe Binary files /dev/null and b/public/terrain/19/858548/354021.terrain differ diff --git a/public/terrain/19/858548/354022.terrain b/public/terrain/19/858548/354022.terrain new file mode 100644 index 000000000..ca36fab74 Binary files /dev/null and b/public/terrain/19/858548/354022.terrain differ diff --git a/public/terrain/19/858548/354023.terrain b/public/terrain/19/858548/354023.terrain new file mode 100644 index 000000000..ffb486097 Binary files /dev/null and b/public/terrain/19/858548/354023.terrain differ diff --git a/public/terrain/19/858548/354024.terrain b/public/terrain/19/858548/354024.terrain new file mode 100644 index 000000000..11ffc588b Binary files /dev/null and b/public/terrain/19/858548/354024.terrain differ diff --git a/public/terrain/19/858548/354025.terrain b/public/terrain/19/858548/354025.terrain new file mode 100644 index 000000000..fe839a694 Binary files /dev/null and b/public/terrain/19/858548/354025.terrain differ diff --git a/public/terrain/19/858548/354026.terrain b/public/terrain/19/858548/354026.terrain new file mode 100644 index 000000000..46bc03611 Binary files /dev/null and b/public/terrain/19/858548/354026.terrain differ diff --git a/public/terrain/19/858548/354027.terrain b/public/terrain/19/858548/354027.terrain new file mode 100644 index 000000000..92b1966aa Binary files /dev/null and b/public/terrain/19/858548/354027.terrain differ diff --git a/public/terrain/19/858548/354028.terrain b/public/terrain/19/858548/354028.terrain new file mode 100644 index 000000000..1185625d9 Binary files /dev/null and b/public/terrain/19/858548/354028.terrain differ diff --git a/public/terrain/19/858548/354029.terrain b/public/terrain/19/858548/354029.terrain new file mode 100644 index 000000000..b6c167133 Binary files /dev/null and b/public/terrain/19/858548/354029.terrain differ diff --git a/public/terrain/19/858548/354030.terrain b/public/terrain/19/858548/354030.terrain new file mode 100644 index 000000000..a6cf5fd5d Binary files /dev/null and b/public/terrain/19/858548/354030.terrain differ diff --git a/public/terrain/19/858548/354031.terrain b/public/terrain/19/858548/354031.terrain new file mode 100644 index 000000000..6de61dc76 Binary files /dev/null and b/public/terrain/19/858548/354031.terrain differ diff --git a/public/terrain/19/858548/354032.terrain b/public/terrain/19/858548/354032.terrain new file mode 100644 index 000000000..f6f2f33ee Binary files /dev/null and b/public/terrain/19/858548/354032.terrain differ diff --git a/public/terrain/19/858548/354033.terrain b/public/terrain/19/858548/354033.terrain new file mode 100644 index 000000000..4585cb7ca Binary files /dev/null and b/public/terrain/19/858548/354033.terrain differ diff --git a/public/terrain/19/858548/354034.terrain b/public/terrain/19/858548/354034.terrain new file mode 100644 index 000000000..6c9bad058 Binary files /dev/null and b/public/terrain/19/858548/354034.terrain differ diff --git a/public/terrain/19/858548/354035.terrain b/public/terrain/19/858548/354035.terrain new file mode 100644 index 000000000..85923eccf Binary files /dev/null and b/public/terrain/19/858548/354035.terrain differ diff --git a/public/terrain/19/858548/354036.terrain b/public/terrain/19/858548/354036.terrain new file mode 100644 index 000000000..02d494c84 Binary files /dev/null and b/public/terrain/19/858548/354036.terrain differ diff --git a/public/terrain/19/858548/354037.terrain b/public/terrain/19/858548/354037.terrain new file mode 100644 index 000000000..ad536c87e Binary files /dev/null and b/public/terrain/19/858548/354037.terrain differ diff --git a/public/terrain/19/858548/354038.terrain b/public/terrain/19/858548/354038.terrain new file mode 100644 index 000000000..5e0853b9c Binary files /dev/null and b/public/terrain/19/858548/354038.terrain differ diff --git a/public/terrain/19/858548/354039.terrain b/public/terrain/19/858548/354039.terrain new file mode 100644 index 000000000..0cd84074f Binary files /dev/null and b/public/terrain/19/858548/354039.terrain differ diff --git a/public/terrain/19/858548/354040.terrain b/public/terrain/19/858548/354040.terrain new file mode 100644 index 000000000..70ee28a11 Binary files /dev/null and b/public/terrain/19/858548/354040.terrain differ diff --git a/public/terrain/19/858548/354041.terrain b/public/terrain/19/858548/354041.terrain new file mode 100644 index 000000000..47d660cb3 Binary files /dev/null and b/public/terrain/19/858548/354041.terrain differ diff --git a/public/terrain/19/858548/354042.terrain b/public/terrain/19/858548/354042.terrain new file mode 100644 index 000000000..039e2a6dc Binary files /dev/null and b/public/terrain/19/858548/354042.terrain differ diff --git a/public/terrain/19/858548/354043.terrain b/public/terrain/19/858548/354043.terrain new file mode 100644 index 000000000..45e6c1641 Binary files /dev/null and b/public/terrain/19/858548/354043.terrain differ diff --git a/public/terrain/19/858548/354044.terrain b/public/terrain/19/858548/354044.terrain new file mode 100644 index 000000000..88d141159 Binary files /dev/null and b/public/terrain/19/858548/354044.terrain differ diff --git a/public/terrain/19/858548/354045.terrain b/public/terrain/19/858548/354045.terrain new file mode 100644 index 000000000..a429d0915 Binary files /dev/null and b/public/terrain/19/858548/354045.terrain differ diff --git a/public/terrain/19/858548/354046.terrain b/public/terrain/19/858548/354046.terrain new file mode 100644 index 000000000..11f4fe74e Binary files /dev/null and b/public/terrain/19/858548/354046.terrain differ diff --git a/public/terrain/19/858548/354047.terrain b/public/terrain/19/858548/354047.terrain new file mode 100644 index 000000000..965aac3c4 Binary files /dev/null and b/public/terrain/19/858548/354047.terrain differ diff --git a/public/terrain/19/858548/354048.terrain b/public/terrain/19/858548/354048.terrain new file mode 100644 index 000000000..eedf5761a Binary files /dev/null and b/public/terrain/19/858548/354048.terrain differ diff --git a/public/terrain/19/858548/354049.terrain b/public/terrain/19/858548/354049.terrain new file mode 100644 index 000000000..9ca1d93b4 Binary files /dev/null and b/public/terrain/19/858548/354049.terrain differ diff --git a/public/terrain/19/858548/354050.terrain b/public/terrain/19/858548/354050.terrain new file mode 100644 index 000000000..c9e1e3718 Binary files /dev/null and b/public/terrain/19/858548/354050.terrain differ diff --git a/public/terrain/19/858548/354051.terrain b/public/terrain/19/858548/354051.terrain new file mode 100644 index 000000000..fa05a918a Binary files /dev/null and b/public/terrain/19/858548/354051.terrain differ diff --git a/public/terrain/19/858548/354052.terrain b/public/terrain/19/858548/354052.terrain new file mode 100644 index 000000000..5a7bf4b4b Binary files /dev/null and b/public/terrain/19/858548/354052.terrain differ diff --git a/public/terrain/19/858548/354053.terrain b/public/terrain/19/858548/354053.terrain new file mode 100644 index 000000000..852cac097 Binary files /dev/null and b/public/terrain/19/858548/354053.terrain differ diff --git a/public/terrain/19/858548/354054.terrain b/public/terrain/19/858548/354054.terrain new file mode 100644 index 000000000..1752c9634 Binary files /dev/null and b/public/terrain/19/858548/354054.terrain differ diff --git a/public/terrain/19/858548/354055.terrain b/public/terrain/19/858548/354055.terrain new file mode 100644 index 000000000..3120f697a Binary files /dev/null and b/public/terrain/19/858548/354055.terrain differ diff --git a/public/terrain/19/858548/354056.terrain b/public/terrain/19/858548/354056.terrain new file mode 100644 index 000000000..dea62febc Binary files /dev/null and b/public/terrain/19/858548/354056.terrain differ diff --git a/public/terrain/19/858548/354057.terrain b/public/terrain/19/858548/354057.terrain new file mode 100644 index 000000000..9af624d72 Binary files /dev/null and b/public/terrain/19/858548/354057.terrain differ diff --git a/public/terrain/19/858548/354058.terrain b/public/terrain/19/858548/354058.terrain new file mode 100644 index 000000000..5bd783205 Binary files /dev/null and b/public/terrain/19/858548/354058.terrain differ diff --git a/public/terrain/19/858548/354059.terrain b/public/terrain/19/858548/354059.terrain new file mode 100644 index 000000000..4ec60f04a Binary files /dev/null and b/public/terrain/19/858548/354059.terrain differ diff --git a/public/terrain/19/858549/353743.terrain b/public/terrain/19/858549/353743.terrain new file mode 100644 index 000000000..e6cb54460 Binary files /dev/null and b/public/terrain/19/858549/353743.terrain differ diff --git a/public/terrain/19/858549/353744.terrain b/public/terrain/19/858549/353744.terrain new file mode 100644 index 000000000..80e97da93 Binary files /dev/null and b/public/terrain/19/858549/353744.terrain differ diff --git a/public/terrain/19/858549/353745.terrain b/public/terrain/19/858549/353745.terrain new file mode 100644 index 000000000..31a73ab20 Binary files /dev/null and b/public/terrain/19/858549/353745.terrain differ diff --git a/public/terrain/19/858549/353746.terrain b/public/terrain/19/858549/353746.terrain new file mode 100644 index 000000000..68c8da078 Binary files /dev/null and b/public/terrain/19/858549/353746.terrain differ diff --git a/public/terrain/19/858549/353747.terrain b/public/terrain/19/858549/353747.terrain new file mode 100644 index 000000000..cfd1f1898 Binary files /dev/null and b/public/terrain/19/858549/353747.terrain differ diff --git a/public/terrain/19/858549/353748.terrain b/public/terrain/19/858549/353748.terrain new file mode 100644 index 000000000..49dbf0522 Binary files /dev/null and b/public/terrain/19/858549/353748.terrain differ diff --git a/public/terrain/19/858549/353749.terrain b/public/terrain/19/858549/353749.terrain new file mode 100644 index 000000000..62aac346d Binary files /dev/null and b/public/terrain/19/858549/353749.terrain differ diff --git a/public/terrain/19/858549/353750.terrain b/public/terrain/19/858549/353750.terrain new file mode 100644 index 000000000..c754b440b Binary files /dev/null and b/public/terrain/19/858549/353750.terrain differ diff --git a/public/terrain/19/858549/353751.terrain b/public/terrain/19/858549/353751.terrain new file mode 100644 index 000000000..d9e325003 Binary files /dev/null and b/public/terrain/19/858549/353751.terrain differ diff --git a/public/terrain/19/858549/353752.terrain b/public/terrain/19/858549/353752.terrain new file mode 100644 index 000000000..71cccf5d5 Binary files /dev/null and b/public/terrain/19/858549/353752.terrain differ diff --git a/public/terrain/19/858549/353753.terrain b/public/terrain/19/858549/353753.terrain new file mode 100644 index 000000000..5007bf701 Binary files /dev/null and b/public/terrain/19/858549/353753.terrain differ diff --git a/public/terrain/19/858549/353754.terrain b/public/terrain/19/858549/353754.terrain new file mode 100644 index 000000000..1ab3c2a09 Binary files /dev/null and b/public/terrain/19/858549/353754.terrain differ diff --git a/public/terrain/19/858549/353755.terrain b/public/terrain/19/858549/353755.terrain new file mode 100644 index 000000000..2c1e4ecb1 Binary files /dev/null and b/public/terrain/19/858549/353755.terrain differ diff --git a/public/terrain/19/858549/353756.terrain b/public/terrain/19/858549/353756.terrain new file mode 100644 index 000000000..c387271d6 Binary files /dev/null and b/public/terrain/19/858549/353756.terrain differ diff --git a/public/terrain/19/858549/353757.terrain b/public/terrain/19/858549/353757.terrain new file mode 100644 index 000000000..8bafb3aea Binary files /dev/null and b/public/terrain/19/858549/353757.terrain differ diff --git a/public/terrain/19/858549/353758.terrain b/public/terrain/19/858549/353758.terrain new file mode 100644 index 000000000..f201929f4 Binary files /dev/null and b/public/terrain/19/858549/353758.terrain differ diff --git a/public/terrain/19/858549/353759.terrain b/public/terrain/19/858549/353759.terrain new file mode 100644 index 000000000..8239ccca5 Binary files /dev/null and b/public/terrain/19/858549/353759.terrain differ diff --git a/public/terrain/19/858549/353760.terrain b/public/terrain/19/858549/353760.terrain new file mode 100644 index 000000000..621de264a Binary files /dev/null and b/public/terrain/19/858549/353760.terrain differ diff --git a/public/terrain/19/858549/353761.terrain b/public/terrain/19/858549/353761.terrain new file mode 100644 index 000000000..37ccd335d Binary files /dev/null and b/public/terrain/19/858549/353761.terrain differ diff --git a/public/terrain/19/858549/353762.terrain b/public/terrain/19/858549/353762.terrain new file mode 100644 index 000000000..c53162f64 Binary files /dev/null and b/public/terrain/19/858549/353762.terrain differ diff --git a/public/terrain/19/858549/353763.terrain b/public/terrain/19/858549/353763.terrain new file mode 100644 index 000000000..59eefe027 Binary files /dev/null and b/public/terrain/19/858549/353763.terrain differ diff --git a/public/terrain/19/858549/353764.terrain b/public/terrain/19/858549/353764.terrain new file mode 100644 index 000000000..5071c0f03 Binary files /dev/null and b/public/terrain/19/858549/353764.terrain differ diff --git a/public/terrain/19/858549/353765.terrain b/public/terrain/19/858549/353765.terrain new file mode 100644 index 000000000..57931b279 Binary files /dev/null and b/public/terrain/19/858549/353765.terrain differ diff --git a/public/terrain/19/858549/353766.terrain b/public/terrain/19/858549/353766.terrain new file mode 100644 index 000000000..94a0b8da0 Binary files /dev/null and b/public/terrain/19/858549/353766.terrain differ diff --git a/public/terrain/19/858549/353767.terrain b/public/terrain/19/858549/353767.terrain new file mode 100644 index 000000000..33e3625f7 Binary files /dev/null and b/public/terrain/19/858549/353767.terrain differ diff --git a/public/terrain/19/858549/353768.terrain b/public/terrain/19/858549/353768.terrain new file mode 100644 index 000000000..70c43875c Binary files /dev/null and b/public/terrain/19/858549/353768.terrain differ diff --git a/public/terrain/19/858549/353769.terrain b/public/terrain/19/858549/353769.terrain new file mode 100644 index 000000000..8bee950b3 Binary files /dev/null and b/public/terrain/19/858549/353769.terrain differ diff --git a/public/terrain/19/858549/353770.terrain b/public/terrain/19/858549/353770.terrain new file mode 100644 index 000000000..12d68f4e4 Binary files /dev/null and b/public/terrain/19/858549/353770.terrain differ diff --git a/public/terrain/19/858549/353771.terrain b/public/terrain/19/858549/353771.terrain new file mode 100644 index 000000000..cd4839109 Binary files /dev/null and b/public/terrain/19/858549/353771.terrain differ diff --git a/public/terrain/19/858549/353772.terrain b/public/terrain/19/858549/353772.terrain new file mode 100644 index 000000000..cbcafc869 Binary files /dev/null and b/public/terrain/19/858549/353772.terrain differ diff --git a/public/terrain/19/858549/353773.terrain b/public/terrain/19/858549/353773.terrain new file mode 100644 index 000000000..023dee9dc Binary files /dev/null and b/public/terrain/19/858549/353773.terrain differ diff --git a/public/terrain/19/858549/353774.terrain b/public/terrain/19/858549/353774.terrain new file mode 100644 index 000000000..932a32351 Binary files /dev/null and b/public/terrain/19/858549/353774.terrain differ diff --git a/public/terrain/19/858549/353775.terrain b/public/terrain/19/858549/353775.terrain new file mode 100644 index 000000000..9fee1247f Binary files /dev/null and b/public/terrain/19/858549/353775.terrain differ diff --git a/public/terrain/19/858549/353776.terrain b/public/terrain/19/858549/353776.terrain new file mode 100644 index 000000000..4e10d6dd6 Binary files /dev/null and b/public/terrain/19/858549/353776.terrain differ diff --git a/public/terrain/19/858549/353777.terrain b/public/terrain/19/858549/353777.terrain new file mode 100644 index 000000000..9075ba5d4 Binary files /dev/null and b/public/terrain/19/858549/353777.terrain differ diff --git a/public/terrain/19/858549/353778.terrain b/public/terrain/19/858549/353778.terrain new file mode 100644 index 000000000..60bf2abe4 Binary files /dev/null and b/public/terrain/19/858549/353778.terrain differ diff --git a/public/terrain/19/858549/353779.terrain b/public/terrain/19/858549/353779.terrain new file mode 100644 index 000000000..5e4f8a12f Binary files /dev/null and b/public/terrain/19/858549/353779.terrain differ diff --git a/public/terrain/19/858549/353780.terrain b/public/terrain/19/858549/353780.terrain new file mode 100644 index 000000000..4cb81c6b4 Binary files /dev/null and b/public/terrain/19/858549/353780.terrain differ diff --git a/public/terrain/19/858549/353781.terrain b/public/terrain/19/858549/353781.terrain new file mode 100644 index 000000000..0d2cfd9c5 Binary files /dev/null and b/public/terrain/19/858549/353781.terrain differ diff --git a/public/terrain/19/858549/353782.terrain b/public/terrain/19/858549/353782.terrain new file mode 100644 index 000000000..7672e972c Binary files /dev/null and b/public/terrain/19/858549/353782.terrain differ diff --git a/public/terrain/19/858549/353783.terrain b/public/terrain/19/858549/353783.terrain new file mode 100644 index 000000000..b6826dcd9 Binary files /dev/null and b/public/terrain/19/858549/353783.terrain differ diff --git a/public/terrain/19/858549/353784.terrain b/public/terrain/19/858549/353784.terrain new file mode 100644 index 000000000..66625d9f7 Binary files /dev/null and b/public/terrain/19/858549/353784.terrain differ diff --git a/public/terrain/19/858549/353785.terrain b/public/terrain/19/858549/353785.terrain new file mode 100644 index 000000000..a45a8eb15 Binary files /dev/null and b/public/terrain/19/858549/353785.terrain differ diff --git a/public/terrain/19/858549/353786.terrain b/public/terrain/19/858549/353786.terrain new file mode 100644 index 000000000..19add0e72 Binary files /dev/null and b/public/terrain/19/858549/353786.terrain differ diff --git a/public/terrain/19/858549/353787.terrain b/public/terrain/19/858549/353787.terrain new file mode 100644 index 000000000..d3d74d80a Binary files /dev/null and b/public/terrain/19/858549/353787.terrain differ diff --git a/public/terrain/19/858549/353788.terrain b/public/terrain/19/858549/353788.terrain new file mode 100644 index 000000000..528c76f82 Binary files /dev/null and b/public/terrain/19/858549/353788.terrain differ diff --git a/public/terrain/19/858549/353789.terrain b/public/terrain/19/858549/353789.terrain new file mode 100644 index 000000000..60b898ac7 Binary files /dev/null and b/public/terrain/19/858549/353789.terrain differ diff --git a/public/terrain/19/858549/353790.terrain b/public/terrain/19/858549/353790.terrain new file mode 100644 index 000000000..e7358045a Binary files /dev/null and b/public/terrain/19/858549/353790.terrain differ diff --git a/public/terrain/19/858549/353791.terrain b/public/terrain/19/858549/353791.terrain new file mode 100644 index 000000000..e2cf9c162 Binary files /dev/null and b/public/terrain/19/858549/353791.terrain differ diff --git a/public/terrain/19/858549/353792.terrain b/public/terrain/19/858549/353792.terrain new file mode 100644 index 000000000..ec96cfb6e Binary files /dev/null and b/public/terrain/19/858549/353792.terrain differ diff --git a/public/terrain/19/858549/353793.terrain b/public/terrain/19/858549/353793.terrain new file mode 100644 index 000000000..97ccd43aa Binary files /dev/null and b/public/terrain/19/858549/353793.terrain differ diff --git a/public/terrain/19/858549/353794.terrain b/public/terrain/19/858549/353794.terrain new file mode 100644 index 000000000..7ce079408 Binary files /dev/null and b/public/terrain/19/858549/353794.terrain differ diff --git a/public/terrain/19/858549/353795.terrain b/public/terrain/19/858549/353795.terrain new file mode 100644 index 000000000..1cc1b6f37 Binary files /dev/null and b/public/terrain/19/858549/353795.terrain differ diff --git a/public/terrain/19/858549/353796.terrain b/public/terrain/19/858549/353796.terrain new file mode 100644 index 000000000..84dfcd2d6 Binary files /dev/null and b/public/terrain/19/858549/353796.terrain differ diff --git a/public/terrain/19/858549/353797.terrain b/public/terrain/19/858549/353797.terrain new file mode 100644 index 000000000..682fd9c86 Binary files /dev/null and b/public/terrain/19/858549/353797.terrain differ diff --git a/public/terrain/19/858549/353798.terrain b/public/terrain/19/858549/353798.terrain new file mode 100644 index 000000000..a5f3810a5 Binary files /dev/null and b/public/terrain/19/858549/353798.terrain differ diff --git a/public/terrain/19/858549/353799.terrain b/public/terrain/19/858549/353799.terrain new file mode 100644 index 000000000..cc48bc056 Binary files /dev/null and b/public/terrain/19/858549/353799.terrain differ diff --git a/public/terrain/19/858549/353800.terrain b/public/terrain/19/858549/353800.terrain new file mode 100644 index 000000000..469694e4c Binary files /dev/null and b/public/terrain/19/858549/353800.terrain differ diff --git a/public/terrain/19/858549/353801.terrain b/public/terrain/19/858549/353801.terrain new file mode 100644 index 000000000..7bb5f4689 Binary files /dev/null and b/public/terrain/19/858549/353801.terrain differ diff --git a/public/terrain/19/858549/353802.terrain b/public/terrain/19/858549/353802.terrain new file mode 100644 index 000000000..a14923d67 Binary files /dev/null and b/public/terrain/19/858549/353802.terrain differ diff --git a/public/terrain/19/858549/353803.terrain b/public/terrain/19/858549/353803.terrain new file mode 100644 index 000000000..35824a771 Binary files /dev/null and b/public/terrain/19/858549/353803.terrain differ diff --git a/public/terrain/19/858549/353804.terrain b/public/terrain/19/858549/353804.terrain new file mode 100644 index 000000000..4ad3c324e Binary files /dev/null and b/public/terrain/19/858549/353804.terrain differ diff --git a/public/terrain/19/858549/353805.terrain b/public/terrain/19/858549/353805.terrain new file mode 100644 index 000000000..6210f4b92 Binary files /dev/null and b/public/terrain/19/858549/353805.terrain differ diff --git a/public/terrain/19/858549/353806.terrain b/public/terrain/19/858549/353806.terrain new file mode 100644 index 000000000..091b02a4d Binary files /dev/null and b/public/terrain/19/858549/353806.terrain differ diff --git a/public/terrain/19/858549/353807.terrain b/public/terrain/19/858549/353807.terrain new file mode 100644 index 000000000..a1d6f8d5a Binary files /dev/null and b/public/terrain/19/858549/353807.terrain differ diff --git a/public/terrain/19/858549/353808.terrain b/public/terrain/19/858549/353808.terrain new file mode 100644 index 000000000..fb08bcf28 Binary files /dev/null and b/public/terrain/19/858549/353808.terrain differ diff --git a/public/terrain/19/858549/353809.terrain b/public/terrain/19/858549/353809.terrain new file mode 100644 index 000000000..1f52d27f9 Binary files /dev/null and b/public/terrain/19/858549/353809.terrain differ diff --git a/public/terrain/19/858549/353810.terrain b/public/terrain/19/858549/353810.terrain new file mode 100644 index 000000000..9ff731d76 Binary files /dev/null and b/public/terrain/19/858549/353810.terrain differ diff --git a/public/terrain/19/858549/353811.terrain b/public/terrain/19/858549/353811.terrain new file mode 100644 index 000000000..d8f5e93af Binary files /dev/null and b/public/terrain/19/858549/353811.terrain differ diff --git a/public/terrain/19/858549/353812.terrain b/public/terrain/19/858549/353812.terrain new file mode 100644 index 000000000..27a407c89 Binary files /dev/null and b/public/terrain/19/858549/353812.terrain differ diff --git a/public/terrain/19/858549/353813.terrain b/public/terrain/19/858549/353813.terrain new file mode 100644 index 000000000..15a428e53 Binary files /dev/null and b/public/terrain/19/858549/353813.terrain differ diff --git a/public/terrain/19/858549/353814.terrain b/public/terrain/19/858549/353814.terrain new file mode 100644 index 000000000..afb9c3ddf Binary files /dev/null and b/public/terrain/19/858549/353814.terrain differ diff --git a/public/terrain/19/858549/353815.terrain b/public/terrain/19/858549/353815.terrain new file mode 100644 index 000000000..a84ce4587 Binary files /dev/null and b/public/terrain/19/858549/353815.terrain differ diff --git a/public/terrain/19/858549/353816.terrain b/public/terrain/19/858549/353816.terrain new file mode 100644 index 000000000..c21f31b97 Binary files /dev/null and b/public/terrain/19/858549/353816.terrain differ diff --git a/public/terrain/19/858549/353817.terrain b/public/terrain/19/858549/353817.terrain new file mode 100644 index 000000000..44e7a2979 Binary files /dev/null and b/public/terrain/19/858549/353817.terrain differ diff --git a/public/terrain/19/858549/353818.terrain b/public/terrain/19/858549/353818.terrain new file mode 100644 index 000000000..3389fd6bc Binary files /dev/null and b/public/terrain/19/858549/353818.terrain differ diff --git a/public/terrain/19/858549/353819.terrain b/public/terrain/19/858549/353819.terrain new file mode 100644 index 000000000..b13970e35 Binary files /dev/null and b/public/terrain/19/858549/353819.terrain differ diff --git a/public/terrain/19/858549/353820.terrain b/public/terrain/19/858549/353820.terrain new file mode 100644 index 000000000..e2662f2eb Binary files /dev/null and b/public/terrain/19/858549/353820.terrain differ diff --git a/public/terrain/19/858549/353821.terrain b/public/terrain/19/858549/353821.terrain new file mode 100644 index 000000000..4d96e65c3 Binary files /dev/null and b/public/terrain/19/858549/353821.terrain differ diff --git a/public/terrain/19/858549/353822.terrain b/public/terrain/19/858549/353822.terrain new file mode 100644 index 000000000..27175ec92 Binary files /dev/null and b/public/terrain/19/858549/353822.terrain differ diff --git a/public/terrain/19/858549/353823.terrain b/public/terrain/19/858549/353823.terrain new file mode 100644 index 000000000..fb4d0ca80 Binary files /dev/null and b/public/terrain/19/858549/353823.terrain differ diff --git a/public/terrain/19/858549/353824.terrain b/public/terrain/19/858549/353824.terrain new file mode 100644 index 000000000..577f4c671 Binary files /dev/null and b/public/terrain/19/858549/353824.terrain differ diff --git a/public/terrain/19/858549/353825.terrain b/public/terrain/19/858549/353825.terrain new file mode 100644 index 000000000..d86a88e89 Binary files /dev/null and b/public/terrain/19/858549/353825.terrain differ diff --git a/public/terrain/19/858549/353826.terrain b/public/terrain/19/858549/353826.terrain new file mode 100644 index 000000000..a4f7e1ef9 Binary files /dev/null and b/public/terrain/19/858549/353826.terrain differ diff --git a/public/terrain/19/858549/353827.terrain b/public/terrain/19/858549/353827.terrain new file mode 100644 index 000000000..d41049b6a Binary files /dev/null and b/public/terrain/19/858549/353827.terrain differ diff --git a/public/terrain/19/858549/353828.terrain b/public/terrain/19/858549/353828.terrain new file mode 100644 index 000000000..49bde539f Binary files /dev/null and b/public/terrain/19/858549/353828.terrain differ diff --git a/public/terrain/19/858549/353829.terrain b/public/terrain/19/858549/353829.terrain new file mode 100644 index 000000000..80b2d637f Binary files /dev/null and b/public/terrain/19/858549/353829.terrain differ diff --git a/public/terrain/19/858549/353830.terrain b/public/terrain/19/858549/353830.terrain new file mode 100644 index 000000000..537fe637d Binary files /dev/null and b/public/terrain/19/858549/353830.terrain differ diff --git a/public/terrain/19/858549/353831.terrain b/public/terrain/19/858549/353831.terrain new file mode 100644 index 000000000..87faa1e40 Binary files /dev/null and b/public/terrain/19/858549/353831.terrain differ diff --git a/public/terrain/19/858549/353832.terrain b/public/terrain/19/858549/353832.terrain new file mode 100644 index 000000000..37341056a Binary files /dev/null and b/public/terrain/19/858549/353832.terrain differ diff --git a/public/terrain/19/858549/353833.terrain b/public/terrain/19/858549/353833.terrain new file mode 100644 index 000000000..9ac637e1f Binary files /dev/null and b/public/terrain/19/858549/353833.terrain differ diff --git a/public/terrain/19/858549/353834.terrain b/public/terrain/19/858549/353834.terrain new file mode 100644 index 000000000..7e7645550 Binary files /dev/null and b/public/terrain/19/858549/353834.terrain differ diff --git a/public/terrain/19/858549/353835.terrain b/public/terrain/19/858549/353835.terrain new file mode 100644 index 000000000..a22249cba Binary files /dev/null and b/public/terrain/19/858549/353835.terrain differ diff --git a/public/terrain/19/858549/353836.terrain b/public/terrain/19/858549/353836.terrain new file mode 100644 index 000000000..8e3889530 Binary files /dev/null and b/public/terrain/19/858549/353836.terrain differ diff --git a/public/terrain/19/858549/353837.terrain b/public/terrain/19/858549/353837.terrain new file mode 100644 index 000000000..4bf7a584e Binary files /dev/null and b/public/terrain/19/858549/353837.terrain differ diff --git a/public/terrain/19/858549/353838.terrain b/public/terrain/19/858549/353838.terrain new file mode 100644 index 000000000..71f76516c Binary files /dev/null and b/public/terrain/19/858549/353838.terrain differ diff --git a/public/terrain/19/858549/353839.terrain b/public/terrain/19/858549/353839.terrain new file mode 100644 index 000000000..fd510e39b Binary files /dev/null and b/public/terrain/19/858549/353839.terrain differ diff --git a/public/terrain/19/858549/353840.terrain b/public/terrain/19/858549/353840.terrain new file mode 100644 index 000000000..88f2b6867 Binary files /dev/null and b/public/terrain/19/858549/353840.terrain differ diff --git a/public/terrain/19/858549/353841.terrain b/public/terrain/19/858549/353841.terrain new file mode 100644 index 000000000..98a13208e Binary files /dev/null and b/public/terrain/19/858549/353841.terrain differ diff --git a/public/terrain/19/858549/353842.terrain b/public/terrain/19/858549/353842.terrain new file mode 100644 index 000000000..2984c87e9 Binary files /dev/null and b/public/terrain/19/858549/353842.terrain differ diff --git a/public/terrain/19/858549/353843.terrain b/public/terrain/19/858549/353843.terrain new file mode 100644 index 000000000..ca6a59167 Binary files /dev/null and b/public/terrain/19/858549/353843.terrain differ diff --git a/public/terrain/19/858549/353844.terrain b/public/terrain/19/858549/353844.terrain new file mode 100644 index 000000000..447886297 Binary files /dev/null and b/public/terrain/19/858549/353844.terrain differ diff --git a/public/terrain/19/858549/353845.terrain b/public/terrain/19/858549/353845.terrain new file mode 100644 index 000000000..61bc9af46 Binary files /dev/null and b/public/terrain/19/858549/353845.terrain differ diff --git a/public/terrain/19/858549/353846.terrain b/public/terrain/19/858549/353846.terrain new file mode 100644 index 000000000..ab16b4383 Binary files /dev/null and b/public/terrain/19/858549/353846.terrain differ diff --git a/public/terrain/19/858549/353847.terrain b/public/terrain/19/858549/353847.terrain new file mode 100644 index 000000000..f68bed3a9 Binary files /dev/null and b/public/terrain/19/858549/353847.terrain differ diff --git a/public/terrain/19/858549/353848.terrain b/public/terrain/19/858549/353848.terrain new file mode 100644 index 000000000..3c3ffbb02 Binary files /dev/null and b/public/terrain/19/858549/353848.terrain differ diff --git a/public/terrain/19/858549/353849.terrain b/public/terrain/19/858549/353849.terrain new file mode 100644 index 000000000..ea3303057 Binary files /dev/null and b/public/terrain/19/858549/353849.terrain differ diff --git a/public/terrain/19/858549/353850.terrain b/public/terrain/19/858549/353850.terrain new file mode 100644 index 000000000..d4db47480 Binary files /dev/null and b/public/terrain/19/858549/353850.terrain differ diff --git a/public/terrain/19/858549/353851.terrain b/public/terrain/19/858549/353851.terrain new file mode 100644 index 000000000..3574a64b1 Binary files /dev/null and b/public/terrain/19/858549/353851.terrain differ diff --git a/public/terrain/19/858549/353852.terrain b/public/terrain/19/858549/353852.terrain new file mode 100644 index 000000000..b50021fe6 Binary files /dev/null and b/public/terrain/19/858549/353852.terrain differ diff --git a/public/terrain/19/858549/353853.terrain b/public/terrain/19/858549/353853.terrain new file mode 100644 index 000000000..f301c68ac Binary files /dev/null and b/public/terrain/19/858549/353853.terrain differ diff --git a/public/terrain/19/858549/353854.terrain b/public/terrain/19/858549/353854.terrain new file mode 100644 index 000000000..439f425b3 Binary files /dev/null and b/public/terrain/19/858549/353854.terrain differ diff --git a/public/terrain/19/858549/353855.terrain b/public/terrain/19/858549/353855.terrain new file mode 100644 index 000000000..ec4d43afa Binary files /dev/null and b/public/terrain/19/858549/353855.terrain differ diff --git a/public/terrain/19/858549/353856.terrain b/public/terrain/19/858549/353856.terrain new file mode 100644 index 000000000..8360543fe Binary files /dev/null and b/public/terrain/19/858549/353856.terrain differ diff --git a/public/terrain/19/858549/353857.terrain b/public/terrain/19/858549/353857.terrain new file mode 100644 index 000000000..d609ab9d0 Binary files /dev/null and b/public/terrain/19/858549/353857.terrain differ diff --git a/public/terrain/19/858549/353858.terrain b/public/terrain/19/858549/353858.terrain new file mode 100644 index 000000000..b50403c42 Binary files /dev/null and b/public/terrain/19/858549/353858.terrain differ diff --git a/public/terrain/19/858549/353859.terrain b/public/terrain/19/858549/353859.terrain new file mode 100644 index 000000000..2008ef74d Binary files /dev/null and b/public/terrain/19/858549/353859.terrain differ diff --git a/public/terrain/19/858549/353860.terrain b/public/terrain/19/858549/353860.terrain new file mode 100644 index 000000000..276280dcc Binary files /dev/null and b/public/terrain/19/858549/353860.terrain differ diff --git a/public/terrain/19/858549/353861.terrain b/public/terrain/19/858549/353861.terrain new file mode 100644 index 000000000..fddb3c772 Binary files /dev/null and b/public/terrain/19/858549/353861.terrain differ diff --git a/public/terrain/19/858549/353862.terrain b/public/terrain/19/858549/353862.terrain new file mode 100644 index 000000000..73c6a9880 Binary files /dev/null and b/public/terrain/19/858549/353862.terrain differ diff --git a/public/terrain/19/858549/353863.terrain b/public/terrain/19/858549/353863.terrain new file mode 100644 index 000000000..c842ea712 Binary files /dev/null and b/public/terrain/19/858549/353863.terrain differ diff --git a/public/terrain/19/858549/353864.terrain b/public/terrain/19/858549/353864.terrain new file mode 100644 index 000000000..7c64ecf0e Binary files /dev/null and b/public/terrain/19/858549/353864.terrain differ diff --git a/public/terrain/19/858549/353865.terrain b/public/terrain/19/858549/353865.terrain new file mode 100644 index 000000000..5d79f022a Binary files /dev/null and b/public/terrain/19/858549/353865.terrain differ diff --git a/public/terrain/19/858549/353866.terrain b/public/terrain/19/858549/353866.terrain new file mode 100644 index 000000000..a2c9d89b8 Binary files /dev/null and b/public/terrain/19/858549/353866.terrain differ diff --git a/public/terrain/19/858549/353867.terrain b/public/terrain/19/858549/353867.terrain new file mode 100644 index 000000000..b5c3c251b Binary files /dev/null and b/public/terrain/19/858549/353867.terrain differ diff --git a/public/terrain/19/858549/353868.terrain b/public/terrain/19/858549/353868.terrain new file mode 100644 index 000000000..e37c14877 Binary files /dev/null and b/public/terrain/19/858549/353868.terrain differ diff --git a/public/terrain/19/858549/353869.terrain b/public/terrain/19/858549/353869.terrain new file mode 100644 index 000000000..dc8c903c6 Binary files /dev/null and b/public/terrain/19/858549/353869.terrain differ diff --git a/public/terrain/19/858549/353870.terrain b/public/terrain/19/858549/353870.terrain new file mode 100644 index 000000000..ef04d48dc Binary files /dev/null and b/public/terrain/19/858549/353870.terrain differ diff --git a/public/terrain/19/858549/353871.terrain b/public/terrain/19/858549/353871.terrain new file mode 100644 index 000000000..459297c23 Binary files /dev/null and b/public/terrain/19/858549/353871.terrain differ diff --git a/public/terrain/19/858549/353872.terrain b/public/terrain/19/858549/353872.terrain new file mode 100644 index 000000000..4c1e81b9b Binary files /dev/null and b/public/terrain/19/858549/353872.terrain differ diff --git a/public/terrain/19/858549/353873.terrain b/public/terrain/19/858549/353873.terrain new file mode 100644 index 000000000..94b913a73 Binary files /dev/null and b/public/terrain/19/858549/353873.terrain differ diff --git a/public/terrain/19/858549/353874.terrain b/public/terrain/19/858549/353874.terrain new file mode 100644 index 000000000..ae847c3a8 Binary files /dev/null and b/public/terrain/19/858549/353874.terrain differ diff --git a/public/terrain/19/858549/353875.terrain b/public/terrain/19/858549/353875.terrain new file mode 100644 index 000000000..93e9ebfe2 Binary files /dev/null and b/public/terrain/19/858549/353875.terrain differ diff --git a/public/terrain/19/858549/353876.terrain b/public/terrain/19/858549/353876.terrain new file mode 100644 index 000000000..d9c78fa70 Binary files /dev/null and b/public/terrain/19/858549/353876.terrain differ diff --git a/public/terrain/19/858549/353877.terrain b/public/terrain/19/858549/353877.terrain new file mode 100644 index 000000000..feeeeec7f Binary files /dev/null and b/public/terrain/19/858549/353877.terrain differ diff --git a/public/terrain/19/858549/353878.terrain b/public/terrain/19/858549/353878.terrain new file mode 100644 index 000000000..f733b18da Binary files /dev/null and b/public/terrain/19/858549/353878.terrain differ diff --git a/public/terrain/19/858549/353879.terrain b/public/terrain/19/858549/353879.terrain new file mode 100644 index 000000000..6a01166ed Binary files /dev/null and b/public/terrain/19/858549/353879.terrain differ diff --git a/public/terrain/19/858549/353880.terrain b/public/terrain/19/858549/353880.terrain new file mode 100644 index 000000000..fcba23584 Binary files /dev/null and b/public/terrain/19/858549/353880.terrain differ diff --git a/public/terrain/19/858549/353881.terrain b/public/terrain/19/858549/353881.terrain new file mode 100644 index 000000000..9582135d2 Binary files /dev/null and b/public/terrain/19/858549/353881.terrain differ diff --git a/public/terrain/19/858549/353882.terrain b/public/terrain/19/858549/353882.terrain new file mode 100644 index 000000000..48607715f Binary files /dev/null and b/public/terrain/19/858549/353882.terrain differ diff --git a/public/terrain/19/858549/353883.terrain b/public/terrain/19/858549/353883.terrain new file mode 100644 index 000000000..8c07b06b8 Binary files /dev/null and b/public/terrain/19/858549/353883.terrain differ diff --git a/public/terrain/19/858549/353884.terrain b/public/terrain/19/858549/353884.terrain new file mode 100644 index 000000000..f7a8245cc Binary files /dev/null and b/public/terrain/19/858549/353884.terrain differ diff --git a/public/terrain/19/858549/353885.terrain b/public/terrain/19/858549/353885.terrain new file mode 100644 index 000000000..ae7975500 Binary files /dev/null and b/public/terrain/19/858549/353885.terrain differ diff --git a/public/terrain/19/858549/353886.terrain b/public/terrain/19/858549/353886.terrain new file mode 100644 index 000000000..582077321 Binary files /dev/null and b/public/terrain/19/858549/353886.terrain differ diff --git a/public/terrain/19/858549/353887.terrain b/public/terrain/19/858549/353887.terrain new file mode 100644 index 000000000..f14fd0a14 Binary files /dev/null and b/public/terrain/19/858549/353887.terrain differ diff --git a/public/terrain/19/858549/353888.terrain b/public/terrain/19/858549/353888.terrain new file mode 100644 index 000000000..4c44162f5 Binary files /dev/null and b/public/terrain/19/858549/353888.terrain differ diff --git a/public/terrain/19/858549/353889.terrain b/public/terrain/19/858549/353889.terrain new file mode 100644 index 000000000..7afe2ea4b Binary files /dev/null and b/public/terrain/19/858549/353889.terrain differ diff --git a/public/terrain/19/858549/353890.terrain b/public/terrain/19/858549/353890.terrain new file mode 100644 index 000000000..b2abc40a6 Binary files /dev/null and b/public/terrain/19/858549/353890.terrain differ diff --git a/public/terrain/19/858549/353891.terrain b/public/terrain/19/858549/353891.terrain new file mode 100644 index 000000000..3a63d23f6 Binary files /dev/null and b/public/terrain/19/858549/353891.terrain differ diff --git a/public/terrain/19/858549/353892.terrain b/public/terrain/19/858549/353892.terrain new file mode 100644 index 000000000..82791a2a6 Binary files /dev/null and b/public/terrain/19/858549/353892.terrain differ diff --git a/public/terrain/19/858549/353893.terrain b/public/terrain/19/858549/353893.terrain new file mode 100644 index 000000000..0ea9cd757 Binary files /dev/null and b/public/terrain/19/858549/353893.terrain differ diff --git a/public/terrain/19/858549/353894.terrain b/public/terrain/19/858549/353894.terrain new file mode 100644 index 000000000..5206307bd Binary files /dev/null and b/public/terrain/19/858549/353894.terrain differ diff --git a/public/terrain/19/858549/353895.terrain b/public/terrain/19/858549/353895.terrain new file mode 100644 index 000000000..8b77ebfdc Binary files /dev/null and b/public/terrain/19/858549/353895.terrain differ diff --git a/public/terrain/19/858549/353896.terrain b/public/terrain/19/858549/353896.terrain new file mode 100644 index 000000000..8f0f70df7 Binary files /dev/null and b/public/terrain/19/858549/353896.terrain differ diff --git a/public/terrain/19/858549/353897.terrain b/public/terrain/19/858549/353897.terrain new file mode 100644 index 000000000..89ef6a31b Binary files /dev/null and b/public/terrain/19/858549/353897.terrain differ diff --git a/public/terrain/19/858549/353898.terrain b/public/terrain/19/858549/353898.terrain new file mode 100644 index 000000000..66eb9ecd6 Binary files /dev/null and b/public/terrain/19/858549/353898.terrain differ diff --git a/public/terrain/19/858549/353899.terrain b/public/terrain/19/858549/353899.terrain new file mode 100644 index 000000000..5da1a4b39 Binary files /dev/null and b/public/terrain/19/858549/353899.terrain differ diff --git a/public/terrain/19/858549/353900.terrain b/public/terrain/19/858549/353900.terrain new file mode 100644 index 000000000..ca61dee7b Binary files /dev/null and b/public/terrain/19/858549/353900.terrain differ diff --git a/public/terrain/19/858549/353901.terrain b/public/terrain/19/858549/353901.terrain new file mode 100644 index 000000000..7408f65ee Binary files /dev/null and b/public/terrain/19/858549/353901.terrain differ diff --git a/public/terrain/19/858549/353902.terrain b/public/terrain/19/858549/353902.terrain new file mode 100644 index 000000000..a166fbf8b Binary files /dev/null and b/public/terrain/19/858549/353902.terrain differ diff --git a/public/terrain/19/858549/353903.terrain b/public/terrain/19/858549/353903.terrain new file mode 100644 index 000000000..0a1e55499 Binary files /dev/null and b/public/terrain/19/858549/353903.terrain differ diff --git a/public/terrain/19/858549/353904.terrain b/public/terrain/19/858549/353904.terrain new file mode 100644 index 000000000..92a9951f7 Binary files /dev/null and b/public/terrain/19/858549/353904.terrain differ diff --git a/public/terrain/19/858549/353905.terrain b/public/terrain/19/858549/353905.terrain new file mode 100644 index 000000000..6dac55f4d Binary files /dev/null and b/public/terrain/19/858549/353905.terrain differ diff --git a/public/terrain/19/858549/353906.terrain b/public/terrain/19/858549/353906.terrain new file mode 100644 index 000000000..c04ff6e45 Binary files /dev/null and b/public/terrain/19/858549/353906.terrain differ diff --git a/public/terrain/19/858549/353907.terrain b/public/terrain/19/858549/353907.terrain new file mode 100644 index 000000000..6ffda6184 Binary files /dev/null and b/public/terrain/19/858549/353907.terrain differ diff --git a/public/terrain/19/858549/353908.terrain b/public/terrain/19/858549/353908.terrain new file mode 100644 index 000000000..112b0927a Binary files /dev/null and b/public/terrain/19/858549/353908.terrain differ diff --git a/public/terrain/19/858549/353909.terrain b/public/terrain/19/858549/353909.terrain new file mode 100644 index 000000000..d27a42945 Binary files /dev/null and b/public/terrain/19/858549/353909.terrain differ diff --git a/public/terrain/19/858549/353910.terrain b/public/terrain/19/858549/353910.terrain new file mode 100644 index 000000000..ab83ee66c Binary files /dev/null and b/public/terrain/19/858549/353910.terrain differ diff --git a/public/terrain/19/858549/353911.terrain b/public/terrain/19/858549/353911.terrain new file mode 100644 index 000000000..cdf1fa69c Binary files /dev/null and b/public/terrain/19/858549/353911.terrain differ diff --git a/public/terrain/19/858549/353912.terrain b/public/terrain/19/858549/353912.terrain new file mode 100644 index 000000000..3da545721 Binary files /dev/null and b/public/terrain/19/858549/353912.terrain differ diff --git a/public/terrain/19/858549/353913.terrain b/public/terrain/19/858549/353913.terrain new file mode 100644 index 000000000..c92b243de Binary files /dev/null and b/public/terrain/19/858549/353913.terrain differ diff --git a/public/terrain/19/858549/353914.terrain b/public/terrain/19/858549/353914.terrain new file mode 100644 index 000000000..3f59a12b2 Binary files /dev/null and b/public/terrain/19/858549/353914.terrain differ diff --git a/public/terrain/19/858549/353915.terrain b/public/terrain/19/858549/353915.terrain new file mode 100644 index 000000000..07e21a91a Binary files /dev/null and b/public/terrain/19/858549/353915.terrain differ diff --git a/public/terrain/19/858549/353916.terrain b/public/terrain/19/858549/353916.terrain new file mode 100644 index 000000000..1af9a47fc Binary files /dev/null and b/public/terrain/19/858549/353916.terrain differ diff --git a/public/terrain/19/858549/353917.terrain b/public/terrain/19/858549/353917.terrain new file mode 100644 index 000000000..0ddefedcc Binary files /dev/null and b/public/terrain/19/858549/353917.terrain differ diff --git a/public/terrain/19/858549/353918.terrain b/public/terrain/19/858549/353918.terrain new file mode 100644 index 000000000..f1debf948 Binary files /dev/null and b/public/terrain/19/858549/353918.terrain differ diff --git a/public/terrain/19/858549/353919.terrain b/public/terrain/19/858549/353919.terrain new file mode 100644 index 000000000..e3adb52e8 Binary files /dev/null and b/public/terrain/19/858549/353919.terrain differ diff --git a/public/terrain/19/858549/353920.terrain b/public/terrain/19/858549/353920.terrain new file mode 100644 index 000000000..eabaf8097 Binary files /dev/null and b/public/terrain/19/858549/353920.terrain differ diff --git a/public/terrain/19/858549/353921.terrain b/public/terrain/19/858549/353921.terrain new file mode 100644 index 000000000..46a9249fb Binary files /dev/null and b/public/terrain/19/858549/353921.terrain differ diff --git a/public/terrain/19/858549/353922.terrain b/public/terrain/19/858549/353922.terrain new file mode 100644 index 000000000..45bed7d71 Binary files /dev/null and b/public/terrain/19/858549/353922.terrain differ diff --git a/public/terrain/19/858549/353923.terrain b/public/terrain/19/858549/353923.terrain new file mode 100644 index 000000000..bf5b9b07f Binary files /dev/null and b/public/terrain/19/858549/353923.terrain differ diff --git a/public/terrain/19/858549/353924.terrain b/public/terrain/19/858549/353924.terrain new file mode 100644 index 000000000..cc2f9cdfc Binary files /dev/null and b/public/terrain/19/858549/353924.terrain differ diff --git a/public/terrain/19/858549/353925.terrain b/public/terrain/19/858549/353925.terrain new file mode 100644 index 000000000..34d234e81 Binary files /dev/null and b/public/terrain/19/858549/353925.terrain differ diff --git a/public/terrain/19/858549/353926.terrain b/public/terrain/19/858549/353926.terrain new file mode 100644 index 000000000..ddd29e16a Binary files /dev/null and b/public/terrain/19/858549/353926.terrain differ diff --git a/public/terrain/19/858549/353927.terrain b/public/terrain/19/858549/353927.terrain new file mode 100644 index 000000000..61387ba0c Binary files /dev/null and b/public/terrain/19/858549/353927.terrain differ diff --git a/public/terrain/19/858549/353928.terrain b/public/terrain/19/858549/353928.terrain new file mode 100644 index 000000000..078271b88 Binary files /dev/null and b/public/terrain/19/858549/353928.terrain differ diff --git a/public/terrain/19/858549/353929.terrain b/public/terrain/19/858549/353929.terrain new file mode 100644 index 000000000..74308675b Binary files /dev/null and b/public/terrain/19/858549/353929.terrain differ diff --git a/public/terrain/19/858549/353930.terrain b/public/terrain/19/858549/353930.terrain new file mode 100644 index 000000000..ae9881edf Binary files /dev/null and b/public/terrain/19/858549/353930.terrain differ diff --git a/public/terrain/19/858549/353931.terrain b/public/terrain/19/858549/353931.terrain new file mode 100644 index 000000000..5ae677bc5 Binary files /dev/null and b/public/terrain/19/858549/353931.terrain differ diff --git a/public/terrain/19/858549/353932.terrain b/public/terrain/19/858549/353932.terrain new file mode 100644 index 000000000..d1c83888f Binary files /dev/null and b/public/terrain/19/858549/353932.terrain differ diff --git a/public/terrain/19/858549/353933.terrain b/public/terrain/19/858549/353933.terrain new file mode 100644 index 000000000..90c026df9 Binary files /dev/null and b/public/terrain/19/858549/353933.terrain differ diff --git a/public/terrain/19/858549/353934.terrain b/public/terrain/19/858549/353934.terrain new file mode 100644 index 000000000..7c6eee5a8 Binary files /dev/null and b/public/terrain/19/858549/353934.terrain differ diff --git a/public/terrain/19/858549/353935.terrain b/public/terrain/19/858549/353935.terrain new file mode 100644 index 000000000..b951d4133 Binary files /dev/null and b/public/terrain/19/858549/353935.terrain differ diff --git a/public/terrain/19/858549/353936.terrain b/public/terrain/19/858549/353936.terrain new file mode 100644 index 000000000..11332755d Binary files /dev/null and b/public/terrain/19/858549/353936.terrain differ diff --git a/public/terrain/19/858549/353937.terrain b/public/terrain/19/858549/353937.terrain new file mode 100644 index 000000000..6ba2caf9c Binary files /dev/null and b/public/terrain/19/858549/353937.terrain differ diff --git a/public/terrain/19/858549/353938.terrain b/public/terrain/19/858549/353938.terrain new file mode 100644 index 000000000..44856e88e Binary files /dev/null and b/public/terrain/19/858549/353938.terrain differ diff --git a/public/terrain/19/858549/353939.terrain b/public/terrain/19/858549/353939.terrain new file mode 100644 index 000000000..969dbf426 Binary files /dev/null and b/public/terrain/19/858549/353939.terrain differ diff --git a/public/terrain/19/858549/353940.terrain b/public/terrain/19/858549/353940.terrain new file mode 100644 index 000000000..0a4e60b93 Binary files /dev/null and b/public/terrain/19/858549/353940.terrain differ diff --git a/public/terrain/19/858549/353941.terrain b/public/terrain/19/858549/353941.terrain new file mode 100644 index 000000000..fae2f4fc0 Binary files /dev/null and b/public/terrain/19/858549/353941.terrain differ diff --git a/public/terrain/19/858549/353942.terrain b/public/terrain/19/858549/353942.terrain new file mode 100644 index 000000000..28af05030 Binary files /dev/null and b/public/terrain/19/858549/353942.terrain differ diff --git a/public/terrain/19/858549/353943.terrain b/public/terrain/19/858549/353943.terrain new file mode 100644 index 000000000..5f9640b0c Binary files /dev/null and b/public/terrain/19/858549/353943.terrain differ diff --git a/public/terrain/19/858549/353944.terrain b/public/terrain/19/858549/353944.terrain new file mode 100644 index 000000000..f030bac89 Binary files /dev/null and b/public/terrain/19/858549/353944.terrain differ diff --git a/public/terrain/19/858549/353945.terrain b/public/terrain/19/858549/353945.terrain new file mode 100644 index 000000000..db7fe0259 Binary files /dev/null and b/public/terrain/19/858549/353945.terrain differ diff --git a/public/terrain/19/858549/353946.terrain b/public/terrain/19/858549/353946.terrain new file mode 100644 index 000000000..36c6dc08c Binary files /dev/null and b/public/terrain/19/858549/353946.terrain differ diff --git a/public/terrain/19/858549/353947.terrain b/public/terrain/19/858549/353947.terrain new file mode 100644 index 000000000..ba25a14bd Binary files /dev/null and b/public/terrain/19/858549/353947.terrain differ diff --git a/public/terrain/19/858549/353948.terrain b/public/terrain/19/858549/353948.terrain new file mode 100644 index 000000000..f3b12dbc3 Binary files /dev/null and b/public/terrain/19/858549/353948.terrain differ diff --git a/public/terrain/19/858549/353949.terrain b/public/terrain/19/858549/353949.terrain new file mode 100644 index 000000000..18a4663ee Binary files /dev/null and b/public/terrain/19/858549/353949.terrain differ diff --git a/public/terrain/19/858549/353950.terrain b/public/terrain/19/858549/353950.terrain new file mode 100644 index 000000000..d89622d7a Binary files /dev/null and b/public/terrain/19/858549/353950.terrain differ diff --git a/public/terrain/19/858549/353951.terrain b/public/terrain/19/858549/353951.terrain new file mode 100644 index 000000000..efc9ef67e Binary files /dev/null and b/public/terrain/19/858549/353951.terrain differ diff --git a/public/terrain/19/858549/353952.terrain b/public/terrain/19/858549/353952.terrain new file mode 100644 index 000000000..d78afa030 Binary files /dev/null and b/public/terrain/19/858549/353952.terrain differ diff --git a/public/terrain/19/858549/353953.terrain b/public/terrain/19/858549/353953.terrain new file mode 100644 index 000000000..81c50884b Binary files /dev/null and b/public/terrain/19/858549/353953.terrain differ diff --git a/public/terrain/19/858549/353954.terrain b/public/terrain/19/858549/353954.terrain new file mode 100644 index 000000000..81eb73b63 Binary files /dev/null and b/public/terrain/19/858549/353954.terrain differ diff --git a/public/terrain/19/858549/353955.terrain b/public/terrain/19/858549/353955.terrain new file mode 100644 index 000000000..0ae0e4384 Binary files /dev/null and b/public/terrain/19/858549/353955.terrain differ diff --git a/public/terrain/19/858549/353956.terrain b/public/terrain/19/858549/353956.terrain new file mode 100644 index 000000000..d3a8d70c6 Binary files /dev/null and b/public/terrain/19/858549/353956.terrain differ diff --git a/public/terrain/19/858549/353957.terrain b/public/terrain/19/858549/353957.terrain new file mode 100644 index 000000000..eb3e37685 Binary files /dev/null and b/public/terrain/19/858549/353957.terrain differ diff --git a/public/terrain/19/858549/353958.terrain b/public/terrain/19/858549/353958.terrain new file mode 100644 index 000000000..74e203f74 Binary files /dev/null and b/public/terrain/19/858549/353958.terrain differ diff --git a/public/terrain/19/858549/353959.terrain b/public/terrain/19/858549/353959.terrain new file mode 100644 index 000000000..f651e1696 Binary files /dev/null and b/public/terrain/19/858549/353959.terrain differ diff --git a/public/terrain/19/858549/353960.terrain b/public/terrain/19/858549/353960.terrain new file mode 100644 index 000000000..ef11e7302 Binary files /dev/null and b/public/terrain/19/858549/353960.terrain differ diff --git a/public/terrain/19/858549/353961.terrain b/public/terrain/19/858549/353961.terrain new file mode 100644 index 000000000..0dd4e8487 Binary files /dev/null and b/public/terrain/19/858549/353961.terrain differ diff --git a/public/terrain/19/858549/353962.terrain b/public/terrain/19/858549/353962.terrain new file mode 100644 index 000000000..c4834d469 Binary files /dev/null and b/public/terrain/19/858549/353962.terrain differ diff --git a/public/terrain/19/858549/353963.terrain b/public/terrain/19/858549/353963.terrain new file mode 100644 index 000000000..38cd19dc3 Binary files /dev/null and b/public/terrain/19/858549/353963.terrain differ diff --git a/public/terrain/19/858549/353964.terrain b/public/terrain/19/858549/353964.terrain new file mode 100644 index 000000000..5b565dc6f Binary files /dev/null and b/public/terrain/19/858549/353964.terrain differ diff --git a/public/terrain/19/858549/353965.terrain b/public/terrain/19/858549/353965.terrain new file mode 100644 index 000000000..9b242c4ba Binary files /dev/null and b/public/terrain/19/858549/353965.terrain differ diff --git a/public/terrain/19/858549/353966.terrain b/public/terrain/19/858549/353966.terrain new file mode 100644 index 000000000..6377c39bb Binary files /dev/null and b/public/terrain/19/858549/353966.terrain differ diff --git a/public/terrain/19/858549/353967.terrain b/public/terrain/19/858549/353967.terrain new file mode 100644 index 000000000..380578029 Binary files /dev/null and b/public/terrain/19/858549/353967.terrain differ diff --git a/public/terrain/19/858549/353968.terrain b/public/terrain/19/858549/353968.terrain new file mode 100644 index 000000000..93d66c6e7 Binary files /dev/null and b/public/terrain/19/858549/353968.terrain differ diff --git a/public/terrain/19/858549/353969.terrain b/public/terrain/19/858549/353969.terrain new file mode 100644 index 000000000..eb4c1ee68 Binary files /dev/null and b/public/terrain/19/858549/353969.terrain differ diff --git a/public/terrain/19/858549/353970.terrain b/public/terrain/19/858549/353970.terrain new file mode 100644 index 000000000..6e4b357ef Binary files /dev/null and b/public/terrain/19/858549/353970.terrain differ diff --git a/public/terrain/19/858549/353971.terrain b/public/terrain/19/858549/353971.terrain new file mode 100644 index 000000000..eac9b63ce Binary files /dev/null and b/public/terrain/19/858549/353971.terrain differ diff --git a/public/terrain/19/858549/353972.terrain b/public/terrain/19/858549/353972.terrain new file mode 100644 index 000000000..cfdcb4907 Binary files /dev/null and b/public/terrain/19/858549/353972.terrain differ diff --git a/public/terrain/19/858549/353973.terrain b/public/terrain/19/858549/353973.terrain new file mode 100644 index 000000000..ca46def09 Binary files /dev/null and b/public/terrain/19/858549/353973.terrain differ diff --git a/public/terrain/19/858549/353974.terrain b/public/terrain/19/858549/353974.terrain new file mode 100644 index 000000000..ac06116f4 Binary files /dev/null and b/public/terrain/19/858549/353974.terrain differ diff --git a/public/terrain/19/858549/353975.terrain b/public/terrain/19/858549/353975.terrain new file mode 100644 index 000000000..3c94d334d Binary files /dev/null and b/public/terrain/19/858549/353975.terrain differ diff --git a/public/terrain/19/858549/353976.terrain b/public/terrain/19/858549/353976.terrain new file mode 100644 index 000000000..02ed9c3d6 Binary files /dev/null and b/public/terrain/19/858549/353976.terrain differ diff --git a/public/terrain/19/858549/353977.terrain b/public/terrain/19/858549/353977.terrain new file mode 100644 index 000000000..517a2980e Binary files /dev/null and b/public/terrain/19/858549/353977.terrain differ diff --git a/public/terrain/19/858549/353978.terrain b/public/terrain/19/858549/353978.terrain new file mode 100644 index 000000000..547eba2e7 Binary files /dev/null and b/public/terrain/19/858549/353978.terrain differ diff --git a/public/terrain/19/858549/353979.terrain b/public/terrain/19/858549/353979.terrain new file mode 100644 index 000000000..6cdffca49 Binary files /dev/null and b/public/terrain/19/858549/353979.terrain differ diff --git a/public/terrain/19/858549/353980.terrain b/public/terrain/19/858549/353980.terrain new file mode 100644 index 000000000..f852e4aca Binary files /dev/null and b/public/terrain/19/858549/353980.terrain differ diff --git a/public/terrain/19/858549/353981.terrain b/public/terrain/19/858549/353981.terrain new file mode 100644 index 000000000..e3146ca88 Binary files /dev/null and b/public/terrain/19/858549/353981.terrain differ diff --git a/public/terrain/19/858549/353982.terrain b/public/terrain/19/858549/353982.terrain new file mode 100644 index 000000000..d913d17ac Binary files /dev/null and b/public/terrain/19/858549/353982.terrain differ diff --git a/public/terrain/19/858549/353983.terrain b/public/terrain/19/858549/353983.terrain new file mode 100644 index 000000000..de3c34983 Binary files /dev/null and b/public/terrain/19/858549/353983.terrain differ diff --git a/public/terrain/19/858549/353984.terrain b/public/terrain/19/858549/353984.terrain new file mode 100644 index 000000000..8f466432a Binary files /dev/null and b/public/terrain/19/858549/353984.terrain differ diff --git a/public/terrain/19/858549/353985.terrain b/public/terrain/19/858549/353985.terrain new file mode 100644 index 000000000..224eb0bd4 Binary files /dev/null and b/public/terrain/19/858549/353985.terrain differ diff --git a/public/terrain/19/858549/353986.terrain b/public/terrain/19/858549/353986.terrain new file mode 100644 index 000000000..bb761e728 Binary files /dev/null and b/public/terrain/19/858549/353986.terrain differ diff --git a/public/terrain/19/858549/353987.terrain b/public/terrain/19/858549/353987.terrain new file mode 100644 index 000000000..9837e1b8d Binary files /dev/null and b/public/terrain/19/858549/353987.terrain differ diff --git a/public/terrain/19/858549/353988.terrain b/public/terrain/19/858549/353988.terrain new file mode 100644 index 000000000..062676fd1 Binary files /dev/null and b/public/terrain/19/858549/353988.terrain differ diff --git a/public/terrain/19/858549/353989.terrain b/public/terrain/19/858549/353989.terrain new file mode 100644 index 000000000..a894d99d2 Binary files /dev/null and b/public/terrain/19/858549/353989.terrain differ diff --git a/public/terrain/19/858549/353990.terrain b/public/terrain/19/858549/353990.terrain new file mode 100644 index 000000000..4e675f36e Binary files /dev/null and b/public/terrain/19/858549/353990.terrain differ diff --git a/public/terrain/19/858549/353991.terrain b/public/terrain/19/858549/353991.terrain new file mode 100644 index 000000000..9b45e2642 Binary files /dev/null and b/public/terrain/19/858549/353991.terrain differ diff --git a/public/terrain/19/858549/353992.terrain b/public/terrain/19/858549/353992.terrain new file mode 100644 index 000000000..bd02f39a4 Binary files /dev/null and b/public/terrain/19/858549/353992.terrain differ diff --git a/public/terrain/19/858549/353993.terrain b/public/terrain/19/858549/353993.terrain new file mode 100644 index 000000000..23e9748a6 Binary files /dev/null and b/public/terrain/19/858549/353993.terrain differ diff --git a/public/terrain/19/858549/353994.terrain b/public/terrain/19/858549/353994.terrain new file mode 100644 index 000000000..b5478b3e8 Binary files /dev/null and b/public/terrain/19/858549/353994.terrain differ diff --git a/public/terrain/19/858549/353995.terrain b/public/terrain/19/858549/353995.terrain new file mode 100644 index 000000000..d1da11cb6 Binary files /dev/null and b/public/terrain/19/858549/353995.terrain differ diff --git a/public/terrain/19/858549/353996.terrain b/public/terrain/19/858549/353996.terrain new file mode 100644 index 000000000..7bbe99231 Binary files /dev/null and b/public/terrain/19/858549/353996.terrain differ diff --git a/public/terrain/19/858549/353997.terrain b/public/terrain/19/858549/353997.terrain new file mode 100644 index 000000000..57dc3c6a3 Binary files /dev/null and b/public/terrain/19/858549/353997.terrain differ diff --git a/public/terrain/19/858549/353998.terrain b/public/terrain/19/858549/353998.terrain new file mode 100644 index 000000000..d053ee5f8 Binary files /dev/null and b/public/terrain/19/858549/353998.terrain differ diff --git a/public/terrain/19/858549/353999.terrain b/public/terrain/19/858549/353999.terrain new file mode 100644 index 000000000..421155d61 Binary files /dev/null and b/public/terrain/19/858549/353999.terrain differ diff --git a/public/terrain/19/858549/354000.terrain b/public/terrain/19/858549/354000.terrain new file mode 100644 index 000000000..25056b57a Binary files /dev/null and b/public/terrain/19/858549/354000.terrain differ diff --git a/public/terrain/19/858549/354001.terrain b/public/terrain/19/858549/354001.terrain new file mode 100644 index 000000000..8d8a4622b Binary files /dev/null and b/public/terrain/19/858549/354001.terrain differ diff --git a/public/terrain/19/858549/354002.terrain b/public/terrain/19/858549/354002.terrain new file mode 100644 index 000000000..b8c4ef7aa Binary files /dev/null and b/public/terrain/19/858549/354002.terrain differ diff --git a/public/terrain/19/858549/354003.terrain b/public/terrain/19/858549/354003.terrain new file mode 100644 index 000000000..791f72bd6 Binary files /dev/null and b/public/terrain/19/858549/354003.terrain differ diff --git a/public/terrain/19/858549/354004.terrain b/public/terrain/19/858549/354004.terrain new file mode 100644 index 000000000..dd7116cfc Binary files /dev/null and b/public/terrain/19/858549/354004.terrain differ diff --git a/public/terrain/19/858549/354005.terrain b/public/terrain/19/858549/354005.terrain new file mode 100644 index 000000000..527003004 Binary files /dev/null and b/public/terrain/19/858549/354005.terrain differ diff --git a/public/terrain/19/858549/354006.terrain b/public/terrain/19/858549/354006.terrain new file mode 100644 index 000000000..0d294de96 Binary files /dev/null and b/public/terrain/19/858549/354006.terrain differ diff --git a/public/terrain/19/858549/354007.terrain b/public/terrain/19/858549/354007.terrain new file mode 100644 index 000000000..4d8a402c2 Binary files /dev/null and b/public/terrain/19/858549/354007.terrain differ diff --git a/public/terrain/19/858549/354008.terrain b/public/terrain/19/858549/354008.terrain new file mode 100644 index 000000000..5e4f614ac Binary files /dev/null and b/public/terrain/19/858549/354008.terrain differ diff --git a/public/terrain/19/858549/354009.terrain b/public/terrain/19/858549/354009.terrain new file mode 100644 index 000000000..a38993fa6 Binary files /dev/null and b/public/terrain/19/858549/354009.terrain differ diff --git a/public/terrain/19/858549/354010.terrain b/public/terrain/19/858549/354010.terrain new file mode 100644 index 000000000..62836aa07 Binary files /dev/null and b/public/terrain/19/858549/354010.terrain differ diff --git a/public/terrain/19/858549/354011.terrain b/public/terrain/19/858549/354011.terrain new file mode 100644 index 000000000..c79d9c1ab Binary files /dev/null and b/public/terrain/19/858549/354011.terrain differ diff --git a/public/terrain/19/858549/354012.terrain b/public/terrain/19/858549/354012.terrain new file mode 100644 index 000000000..df42abb2c Binary files /dev/null and b/public/terrain/19/858549/354012.terrain differ diff --git a/public/terrain/19/858549/354013.terrain b/public/terrain/19/858549/354013.terrain new file mode 100644 index 000000000..14ab14d68 Binary files /dev/null and b/public/terrain/19/858549/354013.terrain differ diff --git a/public/terrain/19/858549/354014.terrain b/public/terrain/19/858549/354014.terrain new file mode 100644 index 000000000..5b16211fa Binary files /dev/null and b/public/terrain/19/858549/354014.terrain differ diff --git a/public/terrain/19/858549/354015.terrain b/public/terrain/19/858549/354015.terrain new file mode 100644 index 000000000..9b03075ac Binary files /dev/null and b/public/terrain/19/858549/354015.terrain differ diff --git a/public/terrain/19/858549/354016.terrain b/public/terrain/19/858549/354016.terrain new file mode 100644 index 000000000..24cb11661 Binary files /dev/null and b/public/terrain/19/858549/354016.terrain differ diff --git a/public/terrain/19/858549/354017.terrain b/public/terrain/19/858549/354017.terrain new file mode 100644 index 000000000..a24e88232 Binary files /dev/null and b/public/terrain/19/858549/354017.terrain differ diff --git a/public/terrain/19/858549/354018.terrain b/public/terrain/19/858549/354018.terrain new file mode 100644 index 000000000..334afaec3 Binary files /dev/null and b/public/terrain/19/858549/354018.terrain differ diff --git a/public/terrain/19/858549/354019.terrain b/public/terrain/19/858549/354019.terrain new file mode 100644 index 000000000..3f11609c2 Binary files /dev/null and b/public/terrain/19/858549/354019.terrain differ diff --git a/public/terrain/19/858549/354020.terrain b/public/terrain/19/858549/354020.terrain new file mode 100644 index 000000000..8a0919159 Binary files /dev/null and b/public/terrain/19/858549/354020.terrain differ diff --git a/public/terrain/19/858549/354021.terrain b/public/terrain/19/858549/354021.terrain new file mode 100644 index 000000000..6f74f9674 Binary files /dev/null and b/public/terrain/19/858549/354021.terrain differ diff --git a/public/terrain/19/858549/354022.terrain b/public/terrain/19/858549/354022.terrain new file mode 100644 index 000000000..396c4edf3 Binary files /dev/null and b/public/terrain/19/858549/354022.terrain differ diff --git a/public/terrain/19/858549/354023.terrain b/public/terrain/19/858549/354023.terrain new file mode 100644 index 000000000..de9e32253 Binary files /dev/null and b/public/terrain/19/858549/354023.terrain differ diff --git a/public/terrain/19/858549/354024.terrain b/public/terrain/19/858549/354024.terrain new file mode 100644 index 000000000..93377ea3d Binary files /dev/null and b/public/terrain/19/858549/354024.terrain differ diff --git a/public/terrain/19/858549/354025.terrain b/public/terrain/19/858549/354025.terrain new file mode 100644 index 000000000..ffab11f6e Binary files /dev/null and b/public/terrain/19/858549/354025.terrain differ diff --git a/public/terrain/19/858549/354026.terrain b/public/terrain/19/858549/354026.terrain new file mode 100644 index 000000000..295fc7e04 Binary files /dev/null and b/public/terrain/19/858549/354026.terrain differ diff --git a/public/terrain/19/858549/354027.terrain b/public/terrain/19/858549/354027.terrain new file mode 100644 index 000000000..e911dcc88 Binary files /dev/null and b/public/terrain/19/858549/354027.terrain differ diff --git a/public/terrain/19/858549/354028.terrain b/public/terrain/19/858549/354028.terrain new file mode 100644 index 000000000..d61f4d757 Binary files /dev/null and b/public/terrain/19/858549/354028.terrain differ diff --git a/public/terrain/19/858549/354029.terrain b/public/terrain/19/858549/354029.terrain new file mode 100644 index 000000000..470683598 Binary files /dev/null and b/public/terrain/19/858549/354029.terrain differ diff --git a/public/terrain/19/858549/354030.terrain b/public/terrain/19/858549/354030.terrain new file mode 100644 index 000000000..c5a5c41fb Binary files /dev/null and b/public/terrain/19/858549/354030.terrain differ diff --git a/public/terrain/19/858549/354031.terrain b/public/terrain/19/858549/354031.terrain new file mode 100644 index 000000000..59519a1d4 Binary files /dev/null and b/public/terrain/19/858549/354031.terrain differ diff --git a/public/terrain/19/858549/354032.terrain b/public/terrain/19/858549/354032.terrain new file mode 100644 index 000000000..a12626bbe Binary files /dev/null and b/public/terrain/19/858549/354032.terrain differ diff --git a/public/terrain/19/858549/354033.terrain b/public/terrain/19/858549/354033.terrain new file mode 100644 index 000000000..5b39ac51e Binary files /dev/null and b/public/terrain/19/858549/354033.terrain differ diff --git a/public/terrain/19/858549/354034.terrain b/public/terrain/19/858549/354034.terrain new file mode 100644 index 000000000..a22393d9b Binary files /dev/null and b/public/terrain/19/858549/354034.terrain differ diff --git a/public/terrain/19/858549/354035.terrain b/public/terrain/19/858549/354035.terrain new file mode 100644 index 000000000..c93905ee7 Binary files /dev/null and b/public/terrain/19/858549/354035.terrain differ diff --git a/public/terrain/19/858549/354036.terrain b/public/terrain/19/858549/354036.terrain new file mode 100644 index 000000000..78e01ca74 Binary files /dev/null and b/public/terrain/19/858549/354036.terrain differ diff --git a/public/terrain/19/858549/354037.terrain b/public/terrain/19/858549/354037.terrain new file mode 100644 index 000000000..4db122c3a Binary files /dev/null and b/public/terrain/19/858549/354037.terrain differ diff --git a/public/terrain/19/858549/354038.terrain b/public/terrain/19/858549/354038.terrain new file mode 100644 index 000000000..a9ed78129 Binary files /dev/null and b/public/terrain/19/858549/354038.terrain differ diff --git a/public/terrain/19/858549/354039.terrain b/public/terrain/19/858549/354039.terrain new file mode 100644 index 000000000..8a5ab057b Binary files /dev/null and b/public/terrain/19/858549/354039.terrain differ diff --git a/public/terrain/19/858549/354040.terrain b/public/terrain/19/858549/354040.terrain new file mode 100644 index 000000000..22cc6cc29 Binary files /dev/null and b/public/terrain/19/858549/354040.terrain differ diff --git a/public/terrain/19/858549/354041.terrain b/public/terrain/19/858549/354041.terrain new file mode 100644 index 000000000..8694bdac4 Binary files /dev/null and b/public/terrain/19/858549/354041.terrain differ diff --git a/public/terrain/19/858549/354042.terrain b/public/terrain/19/858549/354042.terrain new file mode 100644 index 000000000..1fa7c8f10 Binary files /dev/null and b/public/terrain/19/858549/354042.terrain differ diff --git a/public/terrain/19/858549/354043.terrain b/public/terrain/19/858549/354043.terrain new file mode 100644 index 000000000..c72333b42 Binary files /dev/null and b/public/terrain/19/858549/354043.terrain differ diff --git a/public/terrain/19/858549/354044.terrain b/public/terrain/19/858549/354044.terrain new file mode 100644 index 000000000..f76605159 Binary files /dev/null and b/public/terrain/19/858549/354044.terrain differ diff --git a/public/terrain/19/858549/354045.terrain b/public/terrain/19/858549/354045.terrain new file mode 100644 index 000000000..86d2fac64 Binary files /dev/null and b/public/terrain/19/858549/354045.terrain differ diff --git a/public/terrain/19/858549/354046.terrain b/public/terrain/19/858549/354046.terrain new file mode 100644 index 000000000..7acef96da Binary files /dev/null and b/public/terrain/19/858549/354046.terrain differ diff --git a/public/terrain/19/858549/354047.terrain b/public/terrain/19/858549/354047.terrain new file mode 100644 index 000000000..9b4799d31 Binary files /dev/null and b/public/terrain/19/858549/354047.terrain differ diff --git a/public/terrain/19/858549/354048.terrain b/public/terrain/19/858549/354048.terrain new file mode 100644 index 000000000..dfc4b9441 Binary files /dev/null and b/public/terrain/19/858549/354048.terrain differ diff --git a/public/terrain/19/858549/354049.terrain b/public/terrain/19/858549/354049.terrain new file mode 100644 index 000000000..2aca11d1a Binary files /dev/null and b/public/terrain/19/858549/354049.terrain differ diff --git a/public/terrain/19/858549/354050.terrain b/public/terrain/19/858549/354050.terrain new file mode 100644 index 000000000..2fe355912 Binary files /dev/null and b/public/terrain/19/858549/354050.terrain differ diff --git a/public/terrain/19/858549/354051.terrain b/public/terrain/19/858549/354051.terrain new file mode 100644 index 000000000..9c921701a Binary files /dev/null and b/public/terrain/19/858549/354051.terrain differ diff --git a/public/terrain/19/858549/354052.terrain b/public/terrain/19/858549/354052.terrain new file mode 100644 index 000000000..79ff9869a Binary files /dev/null and b/public/terrain/19/858549/354052.terrain differ diff --git a/public/terrain/19/858549/354053.terrain b/public/terrain/19/858549/354053.terrain new file mode 100644 index 000000000..4286fe66a Binary files /dev/null and b/public/terrain/19/858549/354053.terrain differ diff --git a/public/terrain/19/858549/354054.terrain b/public/terrain/19/858549/354054.terrain new file mode 100644 index 000000000..55d627e91 Binary files /dev/null and b/public/terrain/19/858549/354054.terrain differ diff --git a/public/terrain/19/858549/354055.terrain b/public/terrain/19/858549/354055.terrain new file mode 100644 index 000000000..85f0501a5 Binary files /dev/null and b/public/terrain/19/858549/354055.terrain differ diff --git a/public/terrain/19/858549/354056.terrain b/public/terrain/19/858549/354056.terrain new file mode 100644 index 000000000..a0b01f1a0 Binary files /dev/null and b/public/terrain/19/858549/354056.terrain differ diff --git a/public/terrain/19/858549/354057.terrain b/public/terrain/19/858549/354057.terrain new file mode 100644 index 000000000..9c4c141f1 Binary files /dev/null and b/public/terrain/19/858549/354057.terrain differ diff --git a/public/terrain/19/858549/354058.terrain b/public/terrain/19/858549/354058.terrain new file mode 100644 index 000000000..04c170f66 Binary files /dev/null and b/public/terrain/19/858549/354058.terrain differ diff --git a/public/terrain/19/858549/354059.terrain b/public/terrain/19/858549/354059.terrain new file mode 100644 index 000000000..9dcb8fdfe Binary files /dev/null and b/public/terrain/19/858549/354059.terrain differ diff --git a/public/terrain/19/858550/353743.terrain b/public/terrain/19/858550/353743.terrain new file mode 100644 index 000000000..e6c52e39b Binary files /dev/null and b/public/terrain/19/858550/353743.terrain differ diff --git a/public/terrain/19/858550/353744.terrain b/public/terrain/19/858550/353744.terrain new file mode 100644 index 000000000..3729ce36d Binary files /dev/null and b/public/terrain/19/858550/353744.terrain differ diff --git a/public/terrain/19/858550/353745.terrain b/public/terrain/19/858550/353745.terrain new file mode 100644 index 000000000..8fb80777a Binary files /dev/null and b/public/terrain/19/858550/353745.terrain differ diff --git a/public/terrain/19/858550/353746.terrain b/public/terrain/19/858550/353746.terrain new file mode 100644 index 000000000..db1f0b0cb Binary files /dev/null and b/public/terrain/19/858550/353746.terrain differ diff --git a/public/terrain/19/858550/353747.terrain b/public/terrain/19/858550/353747.terrain new file mode 100644 index 000000000..a6bdab549 Binary files /dev/null and b/public/terrain/19/858550/353747.terrain differ diff --git a/public/terrain/19/858550/353748.terrain b/public/terrain/19/858550/353748.terrain new file mode 100644 index 000000000..24467b861 Binary files /dev/null and b/public/terrain/19/858550/353748.terrain differ diff --git a/public/terrain/19/858550/353749.terrain b/public/terrain/19/858550/353749.terrain new file mode 100644 index 000000000..fe73d2fed Binary files /dev/null and b/public/terrain/19/858550/353749.terrain differ diff --git a/public/terrain/19/858550/353750.terrain b/public/terrain/19/858550/353750.terrain new file mode 100644 index 000000000..535ef9f00 Binary files /dev/null and b/public/terrain/19/858550/353750.terrain differ diff --git a/public/terrain/19/858550/353751.terrain b/public/terrain/19/858550/353751.terrain new file mode 100644 index 000000000..af6880020 Binary files /dev/null and b/public/terrain/19/858550/353751.terrain differ diff --git a/public/terrain/19/858550/353752.terrain b/public/terrain/19/858550/353752.terrain new file mode 100644 index 000000000..d3422930c Binary files /dev/null and b/public/terrain/19/858550/353752.terrain differ diff --git a/public/terrain/19/858550/353753.terrain b/public/terrain/19/858550/353753.terrain new file mode 100644 index 000000000..4067dba3e Binary files /dev/null and b/public/terrain/19/858550/353753.terrain differ diff --git a/public/terrain/19/858550/353754.terrain b/public/terrain/19/858550/353754.terrain new file mode 100644 index 000000000..9d0af86cc Binary files /dev/null and b/public/terrain/19/858550/353754.terrain differ diff --git a/public/terrain/19/858550/353755.terrain b/public/terrain/19/858550/353755.terrain new file mode 100644 index 000000000..927f2f2d6 Binary files /dev/null and b/public/terrain/19/858550/353755.terrain differ diff --git a/public/terrain/19/858550/353756.terrain b/public/terrain/19/858550/353756.terrain new file mode 100644 index 000000000..45ff80e95 Binary files /dev/null and b/public/terrain/19/858550/353756.terrain differ diff --git a/public/terrain/19/858550/353757.terrain b/public/terrain/19/858550/353757.terrain new file mode 100644 index 000000000..b2f42c3bd Binary files /dev/null and b/public/terrain/19/858550/353757.terrain differ diff --git a/public/terrain/19/858550/353758.terrain b/public/terrain/19/858550/353758.terrain new file mode 100644 index 000000000..44fdca25d Binary files /dev/null and b/public/terrain/19/858550/353758.terrain differ diff --git a/public/terrain/19/858550/353759.terrain b/public/terrain/19/858550/353759.terrain new file mode 100644 index 000000000..7050aaf12 Binary files /dev/null and b/public/terrain/19/858550/353759.terrain differ diff --git a/public/terrain/19/858550/353760.terrain b/public/terrain/19/858550/353760.terrain new file mode 100644 index 000000000..787592c07 Binary files /dev/null and b/public/terrain/19/858550/353760.terrain differ diff --git a/public/terrain/19/858550/353761.terrain b/public/terrain/19/858550/353761.terrain new file mode 100644 index 000000000..0e5c3ecaa Binary files /dev/null and b/public/terrain/19/858550/353761.terrain differ diff --git a/public/terrain/19/858550/353762.terrain b/public/terrain/19/858550/353762.terrain new file mode 100644 index 000000000..152944645 Binary files /dev/null and b/public/terrain/19/858550/353762.terrain differ diff --git a/public/terrain/19/858550/353763.terrain b/public/terrain/19/858550/353763.terrain new file mode 100644 index 000000000..9c90a8230 Binary files /dev/null and b/public/terrain/19/858550/353763.terrain differ diff --git a/public/terrain/19/858550/353764.terrain b/public/terrain/19/858550/353764.terrain new file mode 100644 index 000000000..1e08677cd Binary files /dev/null and b/public/terrain/19/858550/353764.terrain differ diff --git a/public/terrain/19/858550/353765.terrain b/public/terrain/19/858550/353765.terrain new file mode 100644 index 000000000..37a5ed8ec Binary files /dev/null and b/public/terrain/19/858550/353765.terrain differ diff --git a/public/terrain/19/858550/353766.terrain b/public/terrain/19/858550/353766.terrain new file mode 100644 index 000000000..385141465 Binary files /dev/null and b/public/terrain/19/858550/353766.terrain differ diff --git a/public/terrain/19/858550/353767.terrain b/public/terrain/19/858550/353767.terrain new file mode 100644 index 000000000..aa2222f55 Binary files /dev/null and b/public/terrain/19/858550/353767.terrain differ diff --git a/public/terrain/19/858550/353768.terrain b/public/terrain/19/858550/353768.terrain new file mode 100644 index 000000000..88ad238b7 Binary files /dev/null and b/public/terrain/19/858550/353768.terrain differ diff --git a/public/terrain/19/858550/353769.terrain b/public/terrain/19/858550/353769.terrain new file mode 100644 index 000000000..5afadcd54 Binary files /dev/null and b/public/terrain/19/858550/353769.terrain differ diff --git a/public/terrain/19/858550/353770.terrain b/public/terrain/19/858550/353770.terrain new file mode 100644 index 000000000..984a3a495 Binary files /dev/null and b/public/terrain/19/858550/353770.terrain differ diff --git a/public/terrain/19/858550/353771.terrain b/public/terrain/19/858550/353771.terrain new file mode 100644 index 000000000..421c707ea Binary files /dev/null and b/public/terrain/19/858550/353771.terrain differ diff --git a/public/terrain/19/858550/353772.terrain b/public/terrain/19/858550/353772.terrain new file mode 100644 index 000000000..e2408475c Binary files /dev/null and b/public/terrain/19/858550/353772.terrain differ diff --git a/public/terrain/19/858550/353773.terrain b/public/terrain/19/858550/353773.terrain new file mode 100644 index 000000000..88a8ab70b Binary files /dev/null and b/public/terrain/19/858550/353773.terrain differ diff --git a/public/terrain/19/858550/353774.terrain b/public/terrain/19/858550/353774.terrain new file mode 100644 index 000000000..6603f2cbd Binary files /dev/null and b/public/terrain/19/858550/353774.terrain differ diff --git a/public/terrain/19/858550/353775.terrain b/public/terrain/19/858550/353775.terrain new file mode 100644 index 000000000..2be6a127c Binary files /dev/null and b/public/terrain/19/858550/353775.terrain differ diff --git a/public/terrain/19/858550/353776.terrain b/public/terrain/19/858550/353776.terrain new file mode 100644 index 000000000..af6c73040 Binary files /dev/null and b/public/terrain/19/858550/353776.terrain differ diff --git a/public/terrain/19/858550/353777.terrain b/public/terrain/19/858550/353777.terrain new file mode 100644 index 000000000..ca6c6af2e Binary files /dev/null and b/public/terrain/19/858550/353777.terrain differ diff --git a/public/terrain/19/858550/353778.terrain b/public/terrain/19/858550/353778.terrain new file mode 100644 index 000000000..dd5b9c011 Binary files /dev/null and b/public/terrain/19/858550/353778.terrain differ diff --git a/public/terrain/19/858550/353779.terrain b/public/terrain/19/858550/353779.terrain new file mode 100644 index 000000000..a35ab8c30 Binary files /dev/null and b/public/terrain/19/858550/353779.terrain differ diff --git a/public/terrain/19/858550/353780.terrain b/public/terrain/19/858550/353780.terrain new file mode 100644 index 000000000..9a424a0a2 Binary files /dev/null and b/public/terrain/19/858550/353780.terrain differ diff --git a/public/terrain/19/858550/353781.terrain b/public/terrain/19/858550/353781.terrain new file mode 100644 index 000000000..bac81c216 Binary files /dev/null and b/public/terrain/19/858550/353781.terrain differ diff --git a/public/terrain/19/858550/353782.terrain b/public/terrain/19/858550/353782.terrain new file mode 100644 index 000000000..0a62fbe51 Binary files /dev/null and b/public/terrain/19/858550/353782.terrain differ diff --git a/public/terrain/19/858550/353783.terrain b/public/terrain/19/858550/353783.terrain new file mode 100644 index 000000000..837de5205 Binary files /dev/null and b/public/terrain/19/858550/353783.terrain differ diff --git a/public/terrain/19/858550/353784.terrain b/public/terrain/19/858550/353784.terrain new file mode 100644 index 000000000..024a7e5b2 Binary files /dev/null and b/public/terrain/19/858550/353784.terrain differ diff --git a/public/terrain/19/858550/353785.terrain b/public/terrain/19/858550/353785.terrain new file mode 100644 index 000000000..1667ecc10 Binary files /dev/null and b/public/terrain/19/858550/353785.terrain differ diff --git a/public/terrain/19/858550/353786.terrain b/public/terrain/19/858550/353786.terrain new file mode 100644 index 000000000..e018820c9 Binary files /dev/null and b/public/terrain/19/858550/353786.terrain differ diff --git a/public/terrain/19/858550/353787.terrain b/public/terrain/19/858550/353787.terrain new file mode 100644 index 000000000..30990e835 Binary files /dev/null and b/public/terrain/19/858550/353787.terrain differ diff --git a/public/terrain/19/858550/353788.terrain b/public/terrain/19/858550/353788.terrain new file mode 100644 index 000000000..eb92d975b Binary files /dev/null and b/public/terrain/19/858550/353788.terrain differ diff --git a/public/terrain/19/858550/353789.terrain b/public/terrain/19/858550/353789.terrain new file mode 100644 index 000000000..230a444fa Binary files /dev/null and b/public/terrain/19/858550/353789.terrain differ diff --git a/public/terrain/19/858550/353790.terrain b/public/terrain/19/858550/353790.terrain new file mode 100644 index 000000000..b20af54d6 Binary files /dev/null and b/public/terrain/19/858550/353790.terrain differ diff --git a/public/terrain/19/858550/353791.terrain b/public/terrain/19/858550/353791.terrain new file mode 100644 index 000000000..87c0dce21 Binary files /dev/null and b/public/terrain/19/858550/353791.terrain differ diff --git a/public/terrain/19/858550/353792.terrain b/public/terrain/19/858550/353792.terrain new file mode 100644 index 000000000..d03730af8 Binary files /dev/null and b/public/terrain/19/858550/353792.terrain differ diff --git a/public/terrain/19/858550/353793.terrain b/public/terrain/19/858550/353793.terrain new file mode 100644 index 000000000..c24fbaa3e Binary files /dev/null and b/public/terrain/19/858550/353793.terrain differ diff --git a/public/terrain/19/858550/353794.terrain b/public/terrain/19/858550/353794.terrain new file mode 100644 index 000000000..8ebc59cfd Binary files /dev/null and b/public/terrain/19/858550/353794.terrain differ diff --git a/public/terrain/19/858550/353795.terrain b/public/terrain/19/858550/353795.terrain new file mode 100644 index 000000000..00abcc900 Binary files /dev/null and b/public/terrain/19/858550/353795.terrain differ diff --git a/public/terrain/19/858550/353796.terrain b/public/terrain/19/858550/353796.terrain new file mode 100644 index 000000000..6e0eacdaa Binary files /dev/null and b/public/terrain/19/858550/353796.terrain differ diff --git a/public/terrain/19/858550/353797.terrain b/public/terrain/19/858550/353797.terrain new file mode 100644 index 000000000..0fb2d45e0 Binary files /dev/null and b/public/terrain/19/858550/353797.terrain differ diff --git a/public/terrain/19/858550/353798.terrain b/public/terrain/19/858550/353798.terrain new file mode 100644 index 000000000..665cda2cd Binary files /dev/null and b/public/terrain/19/858550/353798.terrain differ diff --git a/public/terrain/19/858550/353799.terrain b/public/terrain/19/858550/353799.terrain new file mode 100644 index 000000000..3e4d40150 Binary files /dev/null and b/public/terrain/19/858550/353799.terrain differ diff --git a/public/terrain/19/858550/353800.terrain b/public/terrain/19/858550/353800.terrain new file mode 100644 index 000000000..5ed2eeeb6 Binary files /dev/null and b/public/terrain/19/858550/353800.terrain differ diff --git a/public/terrain/19/858550/353801.terrain b/public/terrain/19/858550/353801.terrain new file mode 100644 index 000000000..aa790e715 Binary files /dev/null and b/public/terrain/19/858550/353801.terrain differ diff --git a/public/terrain/19/858550/353802.terrain b/public/terrain/19/858550/353802.terrain new file mode 100644 index 000000000..f65e1a274 Binary files /dev/null and b/public/terrain/19/858550/353802.terrain differ diff --git a/public/terrain/19/858550/353803.terrain b/public/terrain/19/858550/353803.terrain new file mode 100644 index 000000000..3933f60f6 Binary files /dev/null and b/public/terrain/19/858550/353803.terrain differ diff --git a/public/terrain/19/858550/353804.terrain b/public/terrain/19/858550/353804.terrain new file mode 100644 index 000000000..2865bec6f Binary files /dev/null and b/public/terrain/19/858550/353804.terrain differ diff --git a/public/terrain/19/858550/353805.terrain b/public/terrain/19/858550/353805.terrain new file mode 100644 index 000000000..acd7bb4d9 Binary files /dev/null and b/public/terrain/19/858550/353805.terrain differ diff --git a/public/terrain/19/858550/353806.terrain b/public/terrain/19/858550/353806.terrain new file mode 100644 index 000000000..18d04968f Binary files /dev/null and b/public/terrain/19/858550/353806.terrain differ diff --git a/public/terrain/19/858550/353807.terrain b/public/terrain/19/858550/353807.terrain new file mode 100644 index 000000000..ac50f73d7 Binary files /dev/null and b/public/terrain/19/858550/353807.terrain differ diff --git a/public/terrain/19/858550/353808.terrain b/public/terrain/19/858550/353808.terrain new file mode 100644 index 000000000..096e84c32 Binary files /dev/null and b/public/terrain/19/858550/353808.terrain differ diff --git a/public/terrain/19/858550/353809.terrain b/public/terrain/19/858550/353809.terrain new file mode 100644 index 000000000..4f737626e Binary files /dev/null and b/public/terrain/19/858550/353809.terrain differ diff --git a/public/terrain/19/858550/353810.terrain b/public/terrain/19/858550/353810.terrain new file mode 100644 index 000000000..e5cd60820 Binary files /dev/null and b/public/terrain/19/858550/353810.terrain differ diff --git a/public/terrain/19/858550/353811.terrain b/public/terrain/19/858550/353811.terrain new file mode 100644 index 000000000..be76c96ca Binary files /dev/null and b/public/terrain/19/858550/353811.terrain differ diff --git a/public/terrain/19/858550/353812.terrain b/public/terrain/19/858550/353812.terrain new file mode 100644 index 000000000..0ff7d0a50 Binary files /dev/null and b/public/terrain/19/858550/353812.terrain differ diff --git a/public/terrain/19/858550/353813.terrain b/public/terrain/19/858550/353813.terrain new file mode 100644 index 000000000..64e7138ed Binary files /dev/null and b/public/terrain/19/858550/353813.terrain differ diff --git a/public/terrain/19/858550/353814.terrain b/public/terrain/19/858550/353814.terrain new file mode 100644 index 000000000..ae49170f6 Binary files /dev/null and b/public/terrain/19/858550/353814.terrain differ diff --git a/public/terrain/19/858550/353815.terrain b/public/terrain/19/858550/353815.terrain new file mode 100644 index 000000000..a737ffc91 Binary files /dev/null and b/public/terrain/19/858550/353815.terrain differ diff --git a/public/terrain/19/858550/353816.terrain b/public/terrain/19/858550/353816.terrain new file mode 100644 index 000000000..d5dc2b23e Binary files /dev/null and b/public/terrain/19/858550/353816.terrain differ diff --git a/public/terrain/19/858550/353817.terrain b/public/terrain/19/858550/353817.terrain new file mode 100644 index 000000000..917cfa77f Binary files /dev/null and b/public/terrain/19/858550/353817.terrain differ diff --git a/public/terrain/19/858550/353818.terrain b/public/terrain/19/858550/353818.terrain new file mode 100644 index 000000000..afc4d2742 Binary files /dev/null and b/public/terrain/19/858550/353818.terrain differ diff --git a/public/terrain/19/858550/353819.terrain b/public/terrain/19/858550/353819.terrain new file mode 100644 index 000000000..6957d7406 Binary files /dev/null and b/public/terrain/19/858550/353819.terrain differ diff --git a/public/terrain/19/858550/353820.terrain b/public/terrain/19/858550/353820.terrain new file mode 100644 index 000000000..9fd4a258a Binary files /dev/null and b/public/terrain/19/858550/353820.terrain differ diff --git a/public/terrain/19/858550/353821.terrain b/public/terrain/19/858550/353821.terrain new file mode 100644 index 000000000..5f0842509 Binary files /dev/null and b/public/terrain/19/858550/353821.terrain differ diff --git a/public/terrain/19/858550/353822.terrain b/public/terrain/19/858550/353822.terrain new file mode 100644 index 000000000..10573a840 Binary files /dev/null and b/public/terrain/19/858550/353822.terrain differ diff --git a/public/terrain/19/858550/353823.terrain b/public/terrain/19/858550/353823.terrain new file mode 100644 index 000000000..0655b1966 Binary files /dev/null and b/public/terrain/19/858550/353823.terrain differ diff --git a/public/terrain/19/858550/353824.terrain b/public/terrain/19/858550/353824.terrain new file mode 100644 index 000000000..9a0f9cf6f Binary files /dev/null and b/public/terrain/19/858550/353824.terrain differ diff --git a/public/terrain/19/858550/353825.terrain b/public/terrain/19/858550/353825.terrain new file mode 100644 index 000000000..a12125be5 Binary files /dev/null and b/public/terrain/19/858550/353825.terrain differ diff --git a/public/terrain/19/858550/353826.terrain b/public/terrain/19/858550/353826.terrain new file mode 100644 index 000000000..45ac9399d Binary files /dev/null and b/public/terrain/19/858550/353826.terrain differ diff --git a/public/terrain/19/858550/353827.terrain b/public/terrain/19/858550/353827.terrain new file mode 100644 index 000000000..0b2f62b2d Binary files /dev/null and b/public/terrain/19/858550/353827.terrain differ diff --git a/public/terrain/19/858550/353828.terrain b/public/terrain/19/858550/353828.terrain new file mode 100644 index 000000000..cb40f3a5e Binary files /dev/null and b/public/terrain/19/858550/353828.terrain differ diff --git a/public/terrain/19/858550/353829.terrain b/public/terrain/19/858550/353829.terrain new file mode 100644 index 000000000..5a6018f0d Binary files /dev/null and b/public/terrain/19/858550/353829.terrain differ diff --git a/public/terrain/19/858550/353830.terrain b/public/terrain/19/858550/353830.terrain new file mode 100644 index 000000000..f7b8a40e7 Binary files /dev/null and b/public/terrain/19/858550/353830.terrain differ diff --git a/public/terrain/19/858550/353831.terrain b/public/terrain/19/858550/353831.terrain new file mode 100644 index 000000000..de6dea243 Binary files /dev/null and b/public/terrain/19/858550/353831.terrain differ diff --git a/public/terrain/19/858550/353832.terrain b/public/terrain/19/858550/353832.terrain new file mode 100644 index 000000000..8a1795abd Binary files /dev/null and b/public/terrain/19/858550/353832.terrain differ diff --git a/public/terrain/19/858550/353833.terrain b/public/terrain/19/858550/353833.terrain new file mode 100644 index 000000000..d6a15822f Binary files /dev/null and b/public/terrain/19/858550/353833.terrain differ diff --git a/public/terrain/19/858550/353834.terrain b/public/terrain/19/858550/353834.terrain new file mode 100644 index 000000000..aeaed4590 Binary files /dev/null and b/public/terrain/19/858550/353834.terrain differ diff --git a/public/terrain/19/858550/353835.terrain b/public/terrain/19/858550/353835.terrain new file mode 100644 index 000000000..b222189c4 Binary files /dev/null and b/public/terrain/19/858550/353835.terrain differ diff --git a/public/terrain/19/858550/353836.terrain b/public/terrain/19/858550/353836.terrain new file mode 100644 index 000000000..92f84b8af Binary files /dev/null and b/public/terrain/19/858550/353836.terrain differ diff --git a/public/terrain/19/858550/353837.terrain b/public/terrain/19/858550/353837.terrain new file mode 100644 index 000000000..921e54a60 Binary files /dev/null and b/public/terrain/19/858550/353837.terrain differ diff --git a/public/terrain/19/858550/353838.terrain b/public/terrain/19/858550/353838.terrain new file mode 100644 index 000000000..14ccaa74b Binary files /dev/null and b/public/terrain/19/858550/353838.terrain differ diff --git a/public/terrain/19/858550/353839.terrain b/public/terrain/19/858550/353839.terrain new file mode 100644 index 000000000..901d27aea Binary files /dev/null and b/public/terrain/19/858550/353839.terrain differ diff --git a/public/terrain/19/858550/353840.terrain b/public/terrain/19/858550/353840.terrain new file mode 100644 index 000000000..32ffd0cbd Binary files /dev/null and b/public/terrain/19/858550/353840.terrain differ diff --git a/public/terrain/19/858550/353841.terrain b/public/terrain/19/858550/353841.terrain new file mode 100644 index 000000000..f115d4ac5 Binary files /dev/null and b/public/terrain/19/858550/353841.terrain differ diff --git a/public/terrain/19/858550/353842.terrain b/public/terrain/19/858550/353842.terrain new file mode 100644 index 000000000..cc4369a5b Binary files /dev/null and b/public/terrain/19/858550/353842.terrain differ diff --git a/public/terrain/19/858550/353843.terrain b/public/terrain/19/858550/353843.terrain new file mode 100644 index 000000000..35cf3edd0 Binary files /dev/null and b/public/terrain/19/858550/353843.terrain differ diff --git a/public/terrain/19/858550/353844.terrain b/public/terrain/19/858550/353844.terrain new file mode 100644 index 000000000..f6193c5ab Binary files /dev/null and b/public/terrain/19/858550/353844.terrain differ diff --git a/public/terrain/19/858550/353845.terrain b/public/terrain/19/858550/353845.terrain new file mode 100644 index 000000000..f4d217434 Binary files /dev/null and b/public/terrain/19/858550/353845.terrain differ diff --git a/public/terrain/19/858550/353846.terrain b/public/terrain/19/858550/353846.terrain new file mode 100644 index 000000000..aa95a8d12 Binary files /dev/null and b/public/terrain/19/858550/353846.terrain differ diff --git a/public/terrain/19/858550/353847.terrain b/public/terrain/19/858550/353847.terrain new file mode 100644 index 000000000..cfb24eee1 Binary files /dev/null and b/public/terrain/19/858550/353847.terrain differ diff --git a/public/terrain/19/858550/353848.terrain b/public/terrain/19/858550/353848.terrain new file mode 100644 index 000000000..56e1a34e8 Binary files /dev/null and b/public/terrain/19/858550/353848.terrain differ diff --git a/public/terrain/19/858550/353849.terrain b/public/terrain/19/858550/353849.terrain new file mode 100644 index 000000000..a4a4f2232 Binary files /dev/null and b/public/terrain/19/858550/353849.terrain differ diff --git a/public/terrain/19/858550/353850.terrain b/public/terrain/19/858550/353850.terrain new file mode 100644 index 000000000..c6acd8e9f Binary files /dev/null and b/public/terrain/19/858550/353850.terrain differ diff --git a/public/terrain/19/858550/353851.terrain b/public/terrain/19/858550/353851.terrain new file mode 100644 index 000000000..dabb2e706 Binary files /dev/null and b/public/terrain/19/858550/353851.terrain differ diff --git a/public/terrain/19/858550/353852.terrain b/public/terrain/19/858550/353852.terrain new file mode 100644 index 000000000..2db028593 Binary files /dev/null and b/public/terrain/19/858550/353852.terrain differ diff --git a/public/terrain/19/858550/353853.terrain b/public/terrain/19/858550/353853.terrain new file mode 100644 index 000000000..8ba68455f Binary files /dev/null and b/public/terrain/19/858550/353853.terrain differ diff --git a/public/terrain/19/858550/353854.terrain b/public/terrain/19/858550/353854.terrain new file mode 100644 index 000000000..acadafd97 Binary files /dev/null and b/public/terrain/19/858550/353854.terrain differ diff --git a/public/terrain/19/858550/353855.terrain b/public/terrain/19/858550/353855.terrain new file mode 100644 index 000000000..faa6fcb5c Binary files /dev/null and b/public/terrain/19/858550/353855.terrain differ diff --git a/public/terrain/19/858550/353856.terrain b/public/terrain/19/858550/353856.terrain new file mode 100644 index 000000000..f2b89de93 Binary files /dev/null and b/public/terrain/19/858550/353856.terrain differ diff --git a/public/terrain/19/858550/353857.terrain b/public/terrain/19/858550/353857.terrain new file mode 100644 index 000000000..edf5b2bbe Binary files /dev/null and b/public/terrain/19/858550/353857.terrain differ diff --git a/public/terrain/19/858550/353858.terrain b/public/terrain/19/858550/353858.terrain new file mode 100644 index 000000000..0b2d84b6c Binary files /dev/null and b/public/terrain/19/858550/353858.terrain differ diff --git a/public/terrain/19/858550/353859.terrain b/public/terrain/19/858550/353859.terrain new file mode 100644 index 000000000..fcde59ee2 Binary files /dev/null and b/public/terrain/19/858550/353859.terrain differ diff --git a/public/terrain/19/858550/353860.terrain b/public/terrain/19/858550/353860.terrain new file mode 100644 index 000000000..754165949 Binary files /dev/null and b/public/terrain/19/858550/353860.terrain differ diff --git a/public/terrain/19/858550/353861.terrain b/public/terrain/19/858550/353861.terrain new file mode 100644 index 000000000..9294abd0d Binary files /dev/null and b/public/terrain/19/858550/353861.terrain differ diff --git a/public/terrain/19/858550/353862.terrain b/public/terrain/19/858550/353862.terrain new file mode 100644 index 000000000..8c3390953 Binary files /dev/null and b/public/terrain/19/858550/353862.terrain differ diff --git a/public/terrain/19/858550/353863.terrain b/public/terrain/19/858550/353863.terrain new file mode 100644 index 000000000..b447c5e67 Binary files /dev/null and b/public/terrain/19/858550/353863.terrain differ diff --git a/public/terrain/19/858550/353864.terrain b/public/terrain/19/858550/353864.terrain new file mode 100644 index 000000000..45d6b87d4 Binary files /dev/null and b/public/terrain/19/858550/353864.terrain differ diff --git a/public/terrain/19/858550/353865.terrain b/public/terrain/19/858550/353865.terrain new file mode 100644 index 000000000..b664d011a Binary files /dev/null and b/public/terrain/19/858550/353865.terrain differ diff --git a/public/terrain/19/858550/353866.terrain b/public/terrain/19/858550/353866.terrain new file mode 100644 index 000000000..6e494fdaf Binary files /dev/null and b/public/terrain/19/858550/353866.terrain differ diff --git a/public/terrain/19/858550/353867.terrain b/public/terrain/19/858550/353867.terrain new file mode 100644 index 000000000..8d7824835 Binary files /dev/null and b/public/terrain/19/858550/353867.terrain differ diff --git a/public/terrain/19/858550/353868.terrain b/public/terrain/19/858550/353868.terrain new file mode 100644 index 000000000..5eabfc68f Binary files /dev/null and b/public/terrain/19/858550/353868.terrain differ diff --git a/public/terrain/19/858550/353869.terrain b/public/terrain/19/858550/353869.terrain new file mode 100644 index 000000000..5d79a86e8 Binary files /dev/null and b/public/terrain/19/858550/353869.terrain differ diff --git a/public/terrain/19/858550/353870.terrain b/public/terrain/19/858550/353870.terrain new file mode 100644 index 000000000..19368ad0d Binary files /dev/null and b/public/terrain/19/858550/353870.terrain differ diff --git a/public/terrain/19/858550/353871.terrain b/public/terrain/19/858550/353871.terrain new file mode 100644 index 000000000..f0b0f6998 Binary files /dev/null and b/public/terrain/19/858550/353871.terrain differ diff --git a/public/terrain/19/858550/353872.terrain b/public/terrain/19/858550/353872.terrain new file mode 100644 index 000000000..591e182ca Binary files /dev/null and b/public/terrain/19/858550/353872.terrain differ diff --git a/public/terrain/19/858550/353873.terrain b/public/terrain/19/858550/353873.terrain new file mode 100644 index 000000000..6e5849c6b Binary files /dev/null and b/public/terrain/19/858550/353873.terrain differ diff --git a/public/terrain/19/858550/353874.terrain b/public/terrain/19/858550/353874.terrain new file mode 100644 index 000000000..8a4ef0bb0 Binary files /dev/null and b/public/terrain/19/858550/353874.terrain differ diff --git a/public/terrain/19/858550/353875.terrain b/public/terrain/19/858550/353875.terrain new file mode 100644 index 000000000..124a6e9d6 Binary files /dev/null and b/public/terrain/19/858550/353875.terrain differ diff --git a/public/terrain/19/858550/353876.terrain b/public/terrain/19/858550/353876.terrain new file mode 100644 index 000000000..05b0a6f0e Binary files /dev/null and b/public/terrain/19/858550/353876.terrain differ diff --git a/public/terrain/19/858550/353877.terrain b/public/terrain/19/858550/353877.terrain new file mode 100644 index 000000000..b21f3cd28 Binary files /dev/null and b/public/terrain/19/858550/353877.terrain differ diff --git a/public/terrain/19/858550/353878.terrain b/public/terrain/19/858550/353878.terrain new file mode 100644 index 000000000..b532a1481 Binary files /dev/null and b/public/terrain/19/858550/353878.terrain differ diff --git a/public/terrain/19/858550/353879.terrain b/public/terrain/19/858550/353879.terrain new file mode 100644 index 000000000..fe6a311d3 Binary files /dev/null and b/public/terrain/19/858550/353879.terrain differ diff --git a/public/terrain/19/858550/353880.terrain b/public/terrain/19/858550/353880.terrain new file mode 100644 index 000000000..7d3c6b42c Binary files /dev/null and b/public/terrain/19/858550/353880.terrain differ diff --git a/public/terrain/19/858550/353881.terrain b/public/terrain/19/858550/353881.terrain new file mode 100644 index 000000000..2e7cffe08 Binary files /dev/null and b/public/terrain/19/858550/353881.terrain differ diff --git a/public/terrain/19/858550/353882.terrain b/public/terrain/19/858550/353882.terrain new file mode 100644 index 000000000..bf82def19 Binary files /dev/null and b/public/terrain/19/858550/353882.terrain differ diff --git a/public/terrain/19/858550/353883.terrain b/public/terrain/19/858550/353883.terrain new file mode 100644 index 000000000..2b963834a Binary files /dev/null and b/public/terrain/19/858550/353883.terrain differ diff --git a/public/terrain/19/858550/353884.terrain b/public/terrain/19/858550/353884.terrain new file mode 100644 index 000000000..1134021e6 Binary files /dev/null and b/public/terrain/19/858550/353884.terrain differ diff --git a/public/terrain/19/858550/353885.terrain b/public/terrain/19/858550/353885.terrain new file mode 100644 index 000000000..23e7b741e Binary files /dev/null and b/public/terrain/19/858550/353885.terrain differ diff --git a/public/terrain/19/858550/353886.terrain b/public/terrain/19/858550/353886.terrain new file mode 100644 index 000000000..af0de511b Binary files /dev/null and b/public/terrain/19/858550/353886.terrain differ diff --git a/public/terrain/19/858550/353887.terrain b/public/terrain/19/858550/353887.terrain new file mode 100644 index 000000000..4e51b9863 Binary files /dev/null and b/public/terrain/19/858550/353887.terrain differ diff --git a/public/terrain/19/858550/353888.terrain b/public/terrain/19/858550/353888.terrain new file mode 100644 index 000000000..d4e777b58 Binary files /dev/null and b/public/terrain/19/858550/353888.terrain differ diff --git a/public/terrain/19/858550/353889.terrain b/public/terrain/19/858550/353889.terrain new file mode 100644 index 000000000..dd061eb1a Binary files /dev/null and b/public/terrain/19/858550/353889.terrain differ diff --git a/public/terrain/19/858550/353890.terrain b/public/terrain/19/858550/353890.terrain new file mode 100644 index 000000000..761e3b281 Binary files /dev/null and b/public/terrain/19/858550/353890.terrain differ diff --git a/public/terrain/19/858550/353891.terrain b/public/terrain/19/858550/353891.terrain new file mode 100644 index 000000000..abd141831 Binary files /dev/null and b/public/terrain/19/858550/353891.terrain differ diff --git a/public/terrain/19/858550/353892.terrain b/public/terrain/19/858550/353892.terrain new file mode 100644 index 000000000..a418b94fa Binary files /dev/null and b/public/terrain/19/858550/353892.terrain differ diff --git a/public/terrain/19/858550/353893.terrain b/public/terrain/19/858550/353893.terrain new file mode 100644 index 000000000..9b714fac0 Binary files /dev/null and b/public/terrain/19/858550/353893.terrain differ diff --git a/public/terrain/19/858550/353894.terrain b/public/terrain/19/858550/353894.terrain new file mode 100644 index 000000000..036af187e Binary files /dev/null and b/public/terrain/19/858550/353894.terrain differ diff --git a/public/terrain/19/858550/353895.terrain b/public/terrain/19/858550/353895.terrain new file mode 100644 index 000000000..cd644e521 Binary files /dev/null and b/public/terrain/19/858550/353895.terrain differ diff --git a/public/terrain/19/858550/353896.terrain b/public/terrain/19/858550/353896.terrain new file mode 100644 index 000000000..2bd5001c9 Binary files /dev/null and b/public/terrain/19/858550/353896.terrain differ diff --git a/public/terrain/19/858550/353897.terrain b/public/terrain/19/858550/353897.terrain new file mode 100644 index 000000000..e2b35e27f Binary files /dev/null and b/public/terrain/19/858550/353897.terrain differ diff --git a/public/terrain/19/858550/353898.terrain b/public/terrain/19/858550/353898.terrain new file mode 100644 index 000000000..be782c74d Binary files /dev/null and b/public/terrain/19/858550/353898.terrain differ diff --git a/public/terrain/19/858550/353899.terrain b/public/terrain/19/858550/353899.terrain new file mode 100644 index 000000000..59c11b430 Binary files /dev/null and b/public/terrain/19/858550/353899.terrain differ diff --git a/public/terrain/19/858550/353900.terrain b/public/terrain/19/858550/353900.terrain new file mode 100644 index 000000000..979767f5c Binary files /dev/null and b/public/terrain/19/858550/353900.terrain differ diff --git a/public/terrain/19/858550/353901.terrain b/public/terrain/19/858550/353901.terrain new file mode 100644 index 000000000..e5502461b Binary files /dev/null and b/public/terrain/19/858550/353901.terrain differ diff --git a/public/terrain/19/858550/353902.terrain b/public/terrain/19/858550/353902.terrain new file mode 100644 index 000000000..0c5033585 Binary files /dev/null and b/public/terrain/19/858550/353902.terrain differ diff --git a/public/terrain/19/858550/353903.terrain b/public/terrain/19/858550/353903.terrain new file mode 100644 index 000000000..e8e701fd4 Binary files /dev/null and b/public/terrain/19/858550/353903.terrain differ diff --git a/public/terrain/19/858550/353904.terrain b/public/terrain/19/858550/353904.terrain new file mode 100644 index 000000000..ae284517c Binary files /dev/null and b/public/terrain/19/858550/353904.terrain differ diff --git a/public/terrain/19/858550/353905.terrain b/public/terrain/19/858550/353905.terrain new file mode 100644 index 000000000..1f91217de Binary files /dev/null and b/public/terrain/19/858550/353905.terrain differ diff --git a/public/terrain/19/858550/353906.terrain b/public/terrain/19/858550/353906.terrain new file mode 100644 index 000000000..c53e9b176 Binary files /dev/null and b/public/terrain/19/858550/353906.terrain differ diff --git a/public/terrain/19/858550/353907.terrain b/public/terrain/19/858550/353907.terrain new file mode 100644 index 000000000..6cf8cd24e Binary files /dev/null and b/public/terrain/19/858550/353907.terrain differ diff --git a/public/terrain/19/858550/353908.terrain b/public/terrain/19/858550/353908.terrain new file mode 100644 index 000000000..efe5fbb08 Binary files /dev/null and b/public/terrain/19/858550/353908.terrain differ diff --git a/public/terrain/19/858550/353909.terrain b/public/terrain/19/858550/353909.terrain new file mode 100644 index 000000000..101e90423 Binary files /dev/null and b/public/terrain/19/858550/353909.terrain differ diff --git a/public/terrain/19/858550/353910.terrain b/public/terrain/19/858550/353910.terrain new file mode 100644 index 000000000..35ad88435 Binary files /dev/null and b/public/terrain/19/858550/353910.terrain differ diff --git a/public/terrain/19/858550/353911.terrain b/public/terrain/19/858550/353911.terrain new file mode 100644 index 000000000..b886e66eb Binary files /dev/null and b/public/terrain/19/858550/353911.terrain differ diff --git a/public/terrain/19/858550/353912.terrain b/public/terrain/19/858550/353912.terrain new file mode 100644 index 000000000..8b5614fa2 Binary files /dev/null and b/public/terrain/19/858550/353912.terrain differ diff --git a/public/terrain/19/858550/353913.terrain b/public/terrain/19/858550/353913.terrain new file mode 100644 index 000000000..25c8f5a08 Binary files /dev/null and b/public/terrain/19/858550/353913.terrain differ diff --git a/public/terrain/19/858550/353914.terrain b/public/terrain/19/858550/353914.terrain new file mode 100644 index 000000000..afc3239ff Binary files /dev/null and b/public/terrain/19/858550/353914.terrain differ diff --git a/public/terrain/19/858550/353915.terrain b/public/terrain/19/858550/353915.terrain new file mode 100644 index 000000000..8659d0f83 Binary files /dev/null and b/public/terrain/19/858550/353915.terrain differ diff --git a/public/terrain/19/858550/353916.terrain b/public/terrain/19/858550/353916.terrain new file mode 100644 index 000000000..7778171ad Binary files /dev/null and b/public/terrain/19/858550/353916.terrain differ diff --git a/public/terrain/19/858550/353917.terrain b/public/terrain/19/858550/353917.terrain new file mode 100644 index 000000000..cbd4d04ed Binary files /dev/null and b/public/terrain/19/858550/353917.terrain differ diff --git a/public/terrain/19/858550/353918.terrain b/public/terrain/19/858550/353918.terrain new file mode 100644 index 000000000..704e0c9ff Binary files /dev/null and b/public/terrain/19/858550/353918.terrain differ diff --git a/public/terrain/19/858550/353919.terrain b/public/terrain/19/858550/353919.terrain new file mode 100644 index 000000000..c376fc8a5 Binary files /dev/null and b/public/terrain/19/858550/353919.terrain differ diff --git a/public/terrain/19/858550/353920.terrain b/public/terrain/19/858550/353920.terrain new file mode 100644 index 000000000..1b3508a03 Binary files /dev/null and b/public/terrain/19/858550/353920.terrain differ diff --git a/public/terrain/19/858550/353921.terrain b/public/terrain/19/858550/353921.terrain new file mode 100644 index 000000000..1ec9b6194 Binary files /dev/null and b/public/terrain/19/858550/353921.terrain differ diff --git a/public/terrain/19/858550/353922.terrain b/public/terrain/19/858550/353922.terrain new file mode 100644 index 000000000..b52817183 Binary files /dev/null and b/public/terrain/19/858550/353922.terrain differ diff --git a/public/terrain/19/858550/353923.terrain b/public/terrain/19/858550/353923.terrain new file mode 100644 index 000000000..5e9a132ca Binary files /dev/null and b/public/terrain/19/858550/353923.terrain differ diff --git a/public/terrain/19/858550/353924.terrain b/public/terrain/19/858550/353924.terrain new file mode 100644 index 000000000..f97389cba Binary files /dev/null and b/public/terrain/19/858550/353924.terrain differ diff --git a/public/terrain/19/858550/353925.terrain b/public/terrain/19/858550/353925.terrain new file mode 100644 index 000000000..a4688be01 Binary files /dev/null and b/public/terrain/19/858550/353925.terrain differ diff --git a/public/terrain/19/858550/353926.terrain b/public/terrain/19/858550/353926.terrain new file mode 100644 index 000000000..8089a3011 Binary files /dev/null and b/public/terrain/19/858550/353926.terrain differ diff --git a/public/terrain/19/858550/353927.terrain b/public/terrain/19/858550/353927.terrain new file mode 100644 index 000000000..8a0abea95 Binary files /dev/null and b/public/terrain/19/858550/353927.terrain differ diff --git a/public/terrain/19/858550/353928.terrain b/public/terrain/19/858550/353928.terrain new file mode 100644 index 000000000..7ee907c60 Binary files /dev/null and b/public/terrain/19/858550/353928.terrain differ diff --git a/public/terrain/19/858550/353929.terrain b/public/terrain/19/858550/353929.terrain new file mode 100644 index 000000000..e5703e1bf Binary files /dev/null and b/public/terrain/19/858550/353929.terrain differ diff --git a/public/terrain/19/858550/353930.terrain b/public/terrain/19/858550/353930.terrain new file mode 100644 index 000000000..90c8803cd Binary files /dev/null and b/public/terrain/19/858550/353930.terrain differ diff --git a/public/terrain/19/858550/353931.terrain b/public/terrain/19/858550/353931.terrain new file mode 100644 index 000000000..cc638e18d Binary files /dev/null and b/public/terrain/19/858550/353931.terrain differ diff --git a/public/terrain/19/858550/353932.terrain b/public/terrain/19/858550/353932.terrain new file mode 100644 index 000000000..617a7f5ce Binary files /dev/null and b/public/terrain/19/858550/353932.terrain differ diff --git a/public/terrain/19/858550/353933.terrain b/public/terrain/19/858550/353933.terrain new file mode 100644 index 000000000..d387b5e9f Binary files /dev/null and b/public/terrain/19/858550/353933.terrain differ diff --git a/public/terrain/19/858550/353934.terrain b/public/terrain/19/858550/353934.terrain new file mode 100644 index 000000000..73e8ee438 Binary files /dev/null and b/public/terrain/19/858550/353934.terrain differ diff --git a/public/terrain/19/858550/353935.terrain b/public/terrain/19/858550/353935.terrain new file mode 100644 index 000000000..ec03d7835 Binary files /dev/null and b/public/terrain/19/858550/353935.terrain differ diff --git a/public/terrain/19/858550/353936.terrain b/public/terrain/19/858550/353936.terrain new file mode 100644 index 000000000..e12a82164 Binary files /dev/null and b/public/terrain/19/858550/353936.terrain differ diff --git a/public/terrain/19/858550/353937.terrain b/public/terrain/19/858550/353937.terrain new file mode 100644 index 000000000..83fd9ca8f Binary files /dev/null and b/public/terrain/19/858550/353937.terrain differ diff --git a/public/terrain/19/858550/353938.terrain b/public/terrain/19/858550/353938.terrain new file mode 100644 index 000000000..7478e64ba Binary files /dev/null and b/public/terrain/19/858550/353938.terrain differ diff --git a/public/terrain/19/858550/353939.terrain b/public/terrain/19/858550/353939.terrain new file mode 100644 index 000000000..52aebc360 Binary files /dev/null and b/public/terrain/19/858550/353939.terrain differ diff --git a/public/terrain/19/858550/353940.terrain b/public/terrain/19/858550/353940.terrain new file mode 100644 index 000000000..25ebb3b40 Binary files /dev/null and b/public/terrain/19/858550/353940.terrain differ diff --git a/public/terrain/19/858550/353941.terrain b/public/terrain/19/858550/353941.terrain new file mode 100644 index 000000000..cdf71a2f1 Binary files /dev/null and b/public/terrain/19/858550/353941.terrain differ diff --git a/public/terrain/19/858550/353942.terrain b/public/terrain/19/858550/353942.terrain new file mode 100644 index 000000000..cbc99e300 Binary files /dev/null and b/public/terrain/19/858550/353942.terrain differ diff --git a/public/terrain/19/858550/353943.terrain b/public/terrain/19/858550/353943.terrain new file mode 100644 index 000000000..a6cb66db8 Binary files /dev/null and b/public/terrain/19/858550/353943.terrain differ diff --git a/public/terrain/19/858550/353944.terrain b/public/terrain/19/858550/353944.terrain new file mode 100644 index 000000000..2649598e6 Binary files /dev/null and b/public/terrain/19/858550/353944.terrain differ diff --git a/public/terrain/19/858550/353945.terrain b/public/terrain/19/858550/353945.terrain new file mode 100644 index 000000000..cf2f4e689 Binary files /dev/null and b/public/terrain/19/858550/353945.terrain differ diff --git a/public/terrain/19/858550/353946.terrain b/public/terrain/19/858550/353946.terrain new file mode 100644 index 000000000..553557ff2 Binary files /dev/null and b/public/terrain/19/858550/353946.terrain differ diff --git a/public/terrain/19/858550/353947.terrain b/public/terrain/19/858550/353947.terrain new file mode 100644 index 000000000..4b1281c88 Binary files /dev/null and b/public/terrain/19/858550/353947.terrain differ diff --git a/public/terrain/19/858550/353948.terrain b/public/terrain/19/858550/353948.terrain new file mode 100644 index 000000000..11b991930 Binary files /dev/null and b/public/terrain/19/858550/353948.terrain differ diff --git a/public/terrain/19/858550/353949.terrain b/public/terrain/19/858550/353949.terrain new file mode 100644 index 000000000..fa3dd571f Binary files /dev/null and b/public/terrain/19/858550/353949.terrain differ diff --git a/public/terrain/19/858550/353950.terrain b/public/terrain/19/858550/353950.terrain new file mode 100644 index 000000000..fd752f9e0 Binary files /dev/null and b/public/terrain/19/858550/353950.terrain differ diff --git a/public/terrain/19/858550/353951.terrain b/public/terrain/19/858550/353951.terrain new file mode 100644 index 000000000..ed2c2ebbd Binary files /dev/null and b/public/terrain/19/858550/353951.terrain differ diff --git a/public/terrain/19/858550/353952.terrain b/public/terrain/19/858550/353952.terrain new file mode 100644 index 000000000..9172c0766 Binary files /dev/null and b/public/terrain/19/858550/353952.terrain differ diff --git a/public/terrain/19/858550/353953.terrain b/public/terrain/19/858550/353953.terrain new file mode 100644 index 000000000..c7859f734 Binary files /dev/null and b/public/terrain/19/858550/353953.terrain differ diff --git a/public/terrain/19/858550/353954.terrain b/public/terrain/19/858550/353954.terrain new file mode 100644 index 000000000..6d29264e9 Binary files /dev/null and b/public/terrain/19/858550/353954.terrain differ diff --git a/public/terrain/19/858550/353955.terrain b/public/terrain/19/858550/353955.terrain new file mode 100644 index 000000000..5b30affad Binary files /dev/null and b/public/terrain/19/858550/353955.terrain differ diff --git a/public/terrain/19/858550/353956.terrain b/public/terrain/19/858550/353956.terrain new file mode 100644 index 000000000..6afeaec06 Binary files /dev/null and b/public/terrain/19/858550/353956.terrain differ diff --git a/public/terrain/19/858550/353957.terrain b/public/terrain/19/858550/353957.terrain new file mode 100644 index 000000000..f418c7bf7 Binary files /dev/null and b/public/terrain/19/858550/353957.terrain differ diff --git a/public/terrain/19/858550/353958.terrain b/public/terrain/19/858550/353958.terrain new file mode 100644 index 000000000..200d8721e Binary files /dev/null and b/public/terrain/19/858550/353958.terrain differ diff --git a/public/terrain/19/858550/353959.terrain b/public/terrain/19/858550/353959.terrain new file mode 100644 index 000000000..eeaf3681b Binary files /dev/null and b/public/terrain/19/858550/353959.terrain differ diff --git a/public/terrain/19/858550/353960.terrain b/public/terrain/19/858550/353960.terrain new file mode 100644 index 000000000..8a817ab63 Binary files /dev/null and b/public/terrain/19/858550/353960.terrain differ diff --git a/public/terrain/19/858550/353961.terrain b/public/terrain/19/858550/353961.terrain new file mode 100644 index 000000000..2f8db33b7 Binary files /dev/null and b/public/terrain/19/858550/353961.terrain differ diff --git a/public/terrain/19/858550/353962.terrain b/public/terrain/19/858550/353962.terrain new file mode 100644 index 000000000..ecc64a1b5 Binary files /dev/null and b/public/terrain/19/858550/353962.terrain differ diff --git a/public/terrain/19/858550/353963.terrain b/public/terrain/19/858550/353963.terrain new file mode 100644 index 000000000..73f192391 Binary files /dev/null and b/public/terrain/19/858550/353963.terrain differ diff --git a/public/terrain/19/858550/353964.terrain b/public/terrain/19/858550/353964.terrain new file mode 100644 index 000000000..19eda25d3 Binary files /dev/null and b/public/terrain/19/858550/353964.terrain differ diff --git a/public/terrain/19/858550/353965.terrain b/public/terrain/19/858550/353965.terrain new file mode 100644 index 000000000..47f2add61 Binary files /dev/null and b/public/terrain/19/858550/353965.terrain differ diff --git a/public/terrain/19/858550/353966.terrain b/public/terrain/19/858550/353966.terrain new file mode 100644 index 000000000..9d93ebc18 Binary files /dev/null and b/public/terrain/19/858550/353966.terrain differ diff --git a/public/terrain/19/858550/353967.terrain b/public/terrain/19/858550/353967.terrain new file mode 100644 index 000000000..994d017ae Binary files /dev/null and b/public/terrain/19/858550/353967.terrain differ diff --git a/public/terrain/19/858550/353968.terrain b/public/terrain/19/858550/353968.terrain new file mode 100644 index 000000000..f1ba1c841 Binary files /dev/null and b/public/terrain/19/858550/353968.terrain differ diff --git a/public/terrain/19/858550/353969.terrain b/public/terrain/19/858550/353969.terrain new file mode 100644 index 000000000..d255d66b2 Binary files /dev/null and b/public/terrain/19/858550/353969.terrain differ diff --git a/public/terrain/19/858550/353970.terrain b/public/terrain/19/858550/353970.terrain new file mode 100644 index 000000000..f1b939fa6 Binary files /dev/null and b/public/terrain/19/858550/353970.terrain differ diff --git a/public/terrain/19/858550/353971.terrain b/public/terrain/19/858550/353971.terrain new file mode 100644 index 000000000..93674e64c Binary files /dev/null and b/public/terrain/19/858550/353971.terrain differ diff --git a/public/terrain/19/858550/353972.terrain b/public/terrain/19/858550/353972.terrain new file mode 100644 index 000000000..f81f84a27 Binary files /dev/null and b/public/terrain/19/858550/353972.terrain differ diff --git a/public/terrain/19/858550/353973.terrain b/public/terrain/19/858550/353973.terrain new file mode 100644 index 000000000..2b70881da Binary files /dev/null and b/public/terrain/19/858550/353973.terrain differ diff --git a/public/terrain/19/858550/353974.terrain b/public/terrain/19/858550/353974.terrain new file mode 100644 index 000000000..9a9edc1fb Binary files /dev/null and b/public/terrain/19/858550/353974.terrain differ diff --git a/public/terrain/19/858550/353975.terrain b/public/terrain/19/858550/353975.terrain new file mode 100644 index 000000000..c0358a706 Binary files /dev/null and b/public/terrain/19/858550/353975.terrain differ diff --git a/public/terrain/19/858550/353976.terrain b/public/terrain/19/858550/353976.terrain new file mode 100644 index 000000000..946019cf3 Binary files /dev/null and b/public/terrain/19/858550/353976.terrain differ diff --git a/public/terrain/19/858550/353977.terrain b/public/terrain/19/858550/353977.terrain new file mode 100644 index 000000000..73009b89f Binary files /dev/null and b/public/terrain/19/858550/353977.terrain differ diff --git a/public/terrain/19/858550/353978.terrain b/public/terrain/19/858550/353978.terrain new file mode 100644 index 000000000..d7d6a87cf Binary files /dev/null and b/public/terrain/19/858550/353978.terrain differ diff --git a/public/terrain/19/858550/353979.terrain b/public/terrain/19/858550/353979.terrain new file mode 100644 index 000000000..1dbc4f095 Binary files /dev/null and b/public/terrain/19/858550/353979.terrain differ diff --git a/public/terrain/19/858550/353980.terrain b/public/terrain/19/858550/353980.terrain new file mode 100644 index 000000000..183f54d75 Binary files /dev/null and b/public/terrain/19/858550/353980.terrain differ diff --git a/public/terrain/19/858550/353981.terrain b/public/terrain/19/858550/353981.terrain new file mode 100644 index 000000000..de1ee0c0d Binary files /dev/null and b/public/terrain/19/858550/353981.terrain differ diff --git a/public/terrain/19/858550/353982.terrain b/public/terrain/19/858550/353982.terrain new file mode 100644 index 000000000..249696e88 Binary files /dev/null and b/public/terrain/19/858550/353982.terrain differ diff --git a/public/terrain/19/858550/353983.terrain b/public/terrain/19/858550/353983.terrain new file mode 100644 index 000000000..2cf2cbdb1 Binary files /dev/null and b/public/terrain/19/858550/353983.terrain differ diff --git a/public/terrain/19/858550/353984.terrain b/public/terrain/19/858550/353984.terrain new file mode 100644 index 000000000..cc22c457e Binary files /dev/null and b/public/terrain/19/858550/353984.terrain differ diff --git a/public/terrain/19/858550/353985.terrain b/public/terrain/19/858550/353985.terrain new file mode 100644 index 000000000..404273d4d Binary files /dev/null and b/public/terrain/19/858550/353985.terrain differ diff --git a/public/terrain/19/858550/353986.terrain b/public/terrain/19/858550/353986.terrain new file mode 100644 index 000000000..d06a30fb5 Binary files /dev/null and b/public/terrain/19/858550/353986.terrain differ diff --git a/public/terrain/19/858550/353987.terrain b/public/terrain/19/858550/353987.terrain new file mode 100644 index 000000000..5639955ec Binary files /dev/null and b/public/terrain/19/858550/353987.terrain differ diff --git a/public/terrain/19/858550/353988.terrain b/public/terrain/19/858550/353988.terrain new file mode 100644 index 000000000..9c5358a43 Binary files /dev/null and b/public/terrain/19/858550/353988.terrain differ diff --git a/public/terrain/19/858550/353989.terrain b/public/terrain/19/858550/353989.terrain new file mode 100644 index 000000000..d316e074e Binary files /dev/null and b/public/terrain/19/858550/353989.terrain differ diff --git a/public/terrain/19/858550/353990.terrain b/public/terrain/19/858550/353990.terrain new file mode 100644 index 000000000..fcb2825ae Binary files /dev/null and b/public/terrain/19/858550/353990.terrain differ diff --git a/public/terrain/19/858550/353991.terrain b/public/terrain/19/858550/353991.terrain new file mode 100644 index 000000000..9d2feb956 Binary files /dev/null and b/public/terrain/19/858550/353991.terrain differ diff --git a/public/terrain/19/858550/353992.terrain b/public/terrain/19/858550/353992.terrain new file mode 100644 index 000000000..3b1e831db Binary files /dev/null and b/public/terrain/19/858550/353992.terrain differ diff --git a/public/terrain/19/858550/353993.terrain b/public/terrain/19/858550/353993.terrain new file mode 100644 index 000000000..cb412eb1f Binary files /dev/null and b/public/terrain/19/858550/353993.terrain differ diff --git a/public/terrain/19/858550/353994.terrain b/public/terrain/19/858550/353994.terrain new file mode 100644 index 000000000..0142a8e15 Binary files /dev/null and b/public/terrain/19/858550/353994.terrain differ diff --git a/public/terrain/19/858550/353995.terrain b/public/terrain/19/858550/353995.terrain new file mode 100644 index 000000000..de33718a8 Binary files /dev/null and b/public/terrain/19/858550/353995.terrain differ diff --git a/public/terrain/19/858550/353996.terrain b/public/terrain/19/858550/353996.terrain new file mode 100644 index 000000000..f141fd5b5 Binary files /dev/null and b/public/terrain/19/858550/353996.terrain differ diff --git a/public/terrain/19/858550/353997.terrain b/public/terrain/19/858550/353997.terrain new file mode 100644 index 000000000..198dffb6c Binary files /dev/null and b/public/terrain/19/858550/353997.terrain differ diff --git a/public/terrain/19/858550/353998.terrain b/public/terrain/19/858550/353998.terrain new file mode 100644 index 000000000..e8715d59d Binary files /dev/null and b/public/terrain/19/858550/353998.terrain differ diff --git a/public/terrain/19/858550/353999.terrain b/public/terrain/19/858550/353999.terrain new file mode 100644 index 000000000..753ec7beb Binary files /dev/null and b/public/terrain/19/858550/353999.terrain differ diff --git a/public/terrain/19/858550/354000.terrain b/public/terrain/19/858550/354000.terrain new file mode 100644 index 000000000..75f8a54d7 Binary files /dev/null and b/public/terrain/19/858550/354000.terrain differ diff --git a/public/terrain/19/858550/354001.terrain b/public/terrain/19/858550/354001.terrain new file mode 100644 index 000000000..a55d9002a Binary files /dev/null and b/public/terrain/19/858550/354001.terrain differ diff --git a/public/terrain/19/858550/354002.terrain b/public/terrain/19/858550/354002.terrain new file mode 100644 index 000000000..5198f0e8c Binary files /dev/null and b/public/terrain/19/858550/354002.terrain differ diff --git a/public/terrain/19/858550/354003.terrain b/public/terrain/19/858550/354003.terrain new file mode 100644 index 000000000..013651cf3 Binary files /dev/null and b/public/terrain/19/858550/354003.terrain differ diff --git a/public/terrain/19/858550/354004.terrain b/public/terrain/19/858550/354004.terrain new file mode 100644 index 000000000..fc18a8cd1 Binary files /dev/null and b/public/terrain/19/858550/354004.terrain differ diff --git a/public/terrain/19/858550/354005.terrain b/public/terrain/19/858550/354005.terrain new file mode 100644 index 000000000..d846b1202 Binary files /dev/null and b/public/terrain/19/858550/354005.terrain differ diff --git a/public/terrain/19/858550/354006.terrain b/public/terrain/19/858550/354006.terrain new file mode 100644 index 000000000..a4310da41 Binary files /dev/null and b/public/terrain/19/858550/354006.terrain differ diff --git a/public/terrain/19/858550/354007.terrain b/public/terrain/19/858550/354007.terrain new file mode 100644 index 000000000..5684c9020 Binary files /dev/null and b/public/terrain/19/858550/354007.terrain differ diff --git a/public/terrain/19/858550/354008.terrain b/public/terrain/19/858550/354008.terrain new file mode 100644 index 000000000..f4cb8be47 Binary files /dev/null and b/public/terrain/19/858550/354008.terrain differ diff --git a/public/terrain/19/858550/354009.terrain b/public/terrain/19/858550/354009.terrain new file mode 100644 index 000000000..92ff760e4 Binary files /dev/null and b/public/terrain/19/858550/354009.terrain differ diff --git a/public/terrain/19/858550/354010.terrain b/public/terrain/19/858550/354010.terrain new file mode 100644 index 000000000..8d125ccb4 Binary files /dev/null and b/public/terrain/19/858550/354010.terrain differ diff --git a/public/terrain/19/858550/354011.terrain b/public/terrain/19/858550/354011.terrain new file mode 100644 index 000000000..8695c12d4 Binary files /dev/null and b/public/terrain/19/858550/354011.terrain differ diff --git a/public/terrain/19/858550/354012.terrain b/public/terrain/19/858550/354012.terrain new file mode 100644 index 000000000..ad8473dcf Binary files /dev/null and b/public/terrain/19/858550/354012.terrain differ diff --git a/public/terrain/19/858550/354013.terrain b/public/terrain/19/858550/354013.terrain new file mode 100644 index 000000000..bf3dba5ea Binary files /dev/null and b/public/terrain/19/858550/354013.terrain differ diff --git a/public/terrain/19/858550/354014.terrain b/public/terrain/19/858550/354014.terrain new file mode 100644 index 000000000..79bda6145 Binary files /dev/null and b/public/terrain/19/858550/354014.terrain differ diff --git a/public/terrain/19/858550/354015.terrain b/public/terrain/19/858550/354015.terrain new file mode 100644 index 000000000..16e4d586f Binary files /dev/null and b/public/terrain/19/858550/354015.terrain differ diff --git a/public/terrain/19/858550/354016.terrain b/public/terrain/19/858550/354016.terrain new file mode 100644 index 000000000..a296c318d Binary files /dev/null and b/public/terrain/19/858550/354016.terrain differ diff --git a/public/terrain/19/858550/354017.terrain b/public/terrain/19/858550/354017.terrain new file mode 100644 index 000000000..48ef30c25 Binary files /dev/null and b/public/terrain/19/858550/354017.terrain differ diff --git a/public/terrain/19/858550/354018.terrain b/public/terrain/19/858550/354018.terrain new file mode 100644 index 000000000..8e4ba5a2a Binary files /dev/null and b/public/terrain/19/858550/354018.terrain differ diff --git a/public/terrain/19/858550/354019.terrain b/public/terrain/19/858550/354019.terrain new file mode 100644 index 000000000..8b467d0f8 Binary files /dev/null and b/public/terrain/19/858550/354019.terrain differ diff --git a/public/terrain/19/858550/354020.terrain b/public/terrain/19/858550/354020.terrain new file mode 100644 index 000000000..ac04867ad Binary files /dev/null and b/public/terrain/19/858550/354020.terrain differ diff --git a/public/terrain/19/858550/354021.terrain b/public/terrain/19/858550/354021.terrain new file mode 100644 index 000000000..0856625f8 Binary files /dev/null and b/public/terrain/19/858550/354021.terrain differ diff --git a/public/terrain/19/858550/354022.terrain b/public/terrain/19/858550/354022.terrain new file mode 100644 index 000000000..afd9d806b Binary files /dev/null and b/public/terrain/19/858550/354022.terrain differ diff --git a/public/terrain/19/858550/354023.terrain b/public/terrain/19/858550/354023.terrain new file mode 100644 index 000000000..72a17a1dd Binary files /dev/null and b/public/terrain/19/858550/354023.terrain differ diff --git a/public/terrain/19/858550/354024.terrain b/public/terrain/19/858550/354024.terrain new file mode 100644 index 000000000..a2c3b9f63 Binary files /dev/null and b/public/terrain/19/858550/354024.terrain differ diff --git a/public/terrain/19/858550/354025.terrain b/public/terrain/19/858550/354025.terrain new file mode 100644 index 000000000..20f68b915 Binary files /dev/null and b/public/terrain/19/858550/354025.terrain differ diff --git a/public/terrain/19/858550/354026.terrain b/public/terrain/19/858550/354026.terrain new file mode 100644 index 000000000..c59dcecca Binary files /dev/null and b/public/terrain/19/858550/354026.terrain differ diff --git a/public/terrain/19/858550/354027.terrain b/public/terrain/19/858550/354027.terrain new file mode 100644 index 000000000..e941feb50 Binary files /dev/null and b/public/terrain/19/858550/354027.terrain differ diff --git a/public/terrain/19/858550/354028.terrain b/public/terrain/19/858550/354028.terrain new file mode 100644 index 000000000..2435ebbd2 Binary files /dev/null and b/public/terrain/19/858550/354028.terrain differ diff --git a/public/terrain/19/858550/354029.terrain b/public/terrain/19/858550/354029.terrain new file mode 100644 index 000000000..35c65ba3e Binary files /dev/null and b/public/terrain/19/858550/354029.terrain differ diff --git a/public/terrain/19/858550/354030.terrain b/public/terrain/19/858550/354030.terrain new file mode 100644 index 000000000..a51e89650 Binary files /dev/null and b/public/terrain/19/858550/354030.terrain differ diff --git a/public/terrain/19/858550/354031.terrain b/public/terrain/19/858550/354031.terrain new file mode 100644 index 000000000..09f3e2353 Binary files /dev/null and b/public/terrain/19/858550/354031.terrain differ diff --git a/public/terrain/19/858550/354032.terrain b/public/terrain/19/858550/354032.terrain new file mode 100644 index 000000000..ee6210af0 Binary files /dev/null and b/public/terrain/19/858550/354032.terrain differ diff --git a/public/terrain/19/858550/354033.terrain b/public/terrain/19/858550/354033.terrain new file mode 100644 index 000000000..3398ce93f Binary files /dev/null and b/public/terrain/19/858550/354033.terrain differ diff --git a/public/terrain/19/858550/354034.terrain b/public/terrain/19/858550/354034.terrain new file mode 100644 index 000000000..dcc64c8f8 Binary files /dev/null and b/public/terrain/19/858550/354034.terrain differ diff --git a/public/terrain/19/858550/354035.terrain b/public/terrain/19/858550/354035.terrain new file mode 100644 index 000000000..b06142138 Binary files /dev/null and b/public/terrain/19/858550/354035.terrain differ diff --git a/public/terrain/19/858550/354036.terrain b/public/terrain/19/858550/354036.terrain new file mode 100644 index 000000000..d224fcb7f Binary files /dev/null and b/public/terrain/19/858550/354036.terrain differ diff --git a/public/terrain/19/858550/354037.terrain b/public/terrain/19/858550/354037.terrain new file mode 100644 index 000000000..306dbdf86 Binary files /dev/null and b/public/terrain/19/858550/354037.terrain differ diff --git a/public/terrain/19/858550/354038.terrain b/public/terrain/19/858550/354038.terrain new file mode 100644 index 000000000..4bef7e77d Binary files /dev/null and b/public/terrain/19/858550/354038.terrain differ diff --git a/public/terrain/19/858550/354039.terrain b/public/terrain/19/858550/354039.terrain new file mode 100644 index 000000000..2484826dd Binary files /dev/null and b/public/terrain/19/858550/354039.terrain differ diff --git a/public/terrain/19/858550/354040.terrain b/public/terrain/19/858550/354040.terrain new file mode 100644 index 000000000..5208acee9 Binary files /dev/null and b/public/terrain/19/858550/354040.terrain differ diff --git a/public/terrain/19/858550/354041.terrain b/public/terrain/19/858550/354041.terrain new file mode 100644 index 000000000..c65a95d23 Binary files /dev/null and b/public/terrain/19/858550/354041.terrain differ diff --git a/public/terrain/19/858550/354042.terrain b/public/terrain/19/858550/354042.terrain new file mode 100644 index 000000000..947018c18 Binary files /dev/null and b/public/terrain/19/858550/354042.terrain differ diff --git a/public/terrain/19/858550/354043.terrain b/public/terrain/19/858550/354043.terrain new file mode 100644 index 000000000..05a645747 Binary files /dev/null and b/public/terrain/19/858550/354043.terrain differ diff --git a/public/terrain/19/858550/354044.terrain b/public/terrain/19/858550/354044.terrain new file mode 100644 index 000000000..b07dd6073 Binary files /dev/null and b/public/terrain/19/858550/354044.terrain differ diff --git a/public/terrain/19/858550/354045.terrain b/public/terrain/19/858550/354045.terrain new file mode 100644 index 000000000..bbfec7b7c Binary files /dev/null and b/public/terrain/19/858550/354045.terrain differ diff --git a/public/terrain/19/858550/354046.terrain b/public/terrain/19/858550/354046.terrain new file mode 100644 index 000000000..940b5854c Binary files /dev/null and b/public/terrain/19/858550/354046.terrain differ diff --git a/public/terrain/19/858550/354047.terrain b/public/terrain/19/858550/354047.terrain new file mode 100644 index 000000000..2e3544d1b Binary files /dev/null and b/public/terrain/19/858550/354047.terrain differ diff --git a/public/terrain/19/858550/354048.terrain b/public/terrain/19/858550/354048.terrain new file mode 100644 index 000000000..bc24e9498 Binary files /dev/null and b/public/terrain/19/858550/354048.terrain differ diff --git a/public/terrain/19/858550/354049.terrain b/public/terrain/19/858550/354049.terrain new file mode 100644 index 000000000..b9df90a3f Binary files /dev/null and b/public/terrain/19/858550/354049.terrain differ diff --git a/public/terrain/19/858550/354050.terrain b/public/terrain/19/858550/354050.terrain new file mode 100644 index 000000000..045298850 Binary files /dev/null and b/public/terrain/19/858550/354050.terrain differ diff --git a/public/terrain/19/858550/354051.terrain b/public/terrain/19/858550/354051.terrain new file mode 100644 index 000000000..272b1e0f6 Binary files /dev/null and b/public/terrain/19/858550/354051.terrain differ diff --git a/public/terrain/19/858550/354052.terrain b/public/terrain/19/858550/354052.terrain new file mode 100644 index 000000000..abbf7c131 Binary files /dev/null and b/public/terrain/19/858550/354052.terrain differ diff --git a/public/terrain/19/858550/354053.terrain b/public/terrain/19/858550/354053.terrain new file mode 100644 index 000000000..21d51dea6 Binary files /dev/null and b/public/terrain/19/858550/354053.terrain differ diff --git a/public/terrain/19/858550/354054.terrain b/public/terrain/19/858550/354054.terrain new file mode 100644 index 000000000..e33e0ec28 Binary files /dev/null and b/public/terrain/19/858550/354054.terrain differ diff --git a/public/terrain/19/858550/354055.terrain b/public/terrain/19/858550/354055.terrain new file mode 100644 index 000000000..eba85378d Binary files /dev/null and b/public/terrain/19/858550/354055.terrain differ diff --git a/public/terrain/19/858550/354056.terrain b/public/terrain/19/858550/354056.terrain new file mode 100644 index 000000000..6c8accf45 Binary files /dev/null and b/public/terrain/19/858550/354056.terrain differ diff --git a/public/terrain/19/858550/354057.terrain b/public/terrain/19/858550/354057.terrain new file mode 100644 index 000000000..2c4cdd105 Binary files /dev/null and b/public/terrain/19/858550/354057.terrain differ diff --git a/public/terrain/19/858550/354058.terrain b/public/terrain/19/858550/354058.terrain new file mode 100644 index 000000000..971f4aacb Binary files /dev/null and b/public/terrain/19/858550/354058.terrain differ diff --git a/public/terrain/19/858550/354059.terrain b/public/terrain/19/858550/354059.terrain new file mode 100644 index 000000000..f9a4f3973 Binary files /dev/null and b/public/terrain/19/858550/354059.terrain differ diff --git a/public/terrain/19/858551/353743.terrain b/public/terrain/19/858551/353743.terrain new file mode 100644 index 000000000..986d90fde Binary files /dev/null and b/public/terrain/19/858551/353743.terrain differ diff --git a/public/terrain/19/858551/353744.terrain b/public/terrain/19/858551/353744.terrain new file mode 100644 index 000000000..7c2a18916 Binary files /dev/null and b/public/terrain/19/858551/353744.terrain differ diff --git a/public/terrain/19/858551/353745.terrain b/public/terrain/19/858551/353745.terrain new file mode 100644 index 000000000..b32a8ce61 Binary files /dev/null and b/public/terrain/19/858551/353745.terrain differ diff --git a/public/terrain/19/858551/353746.terrain b/public/terrain/19/858551/353746.terrain new file mode 100644 index 000000000..b569d8672 Binary files /dev/null and b/public/terrain/19/858551/353746.terrain differ diff --git a/public/terrain/19/858551/353747.terrain b/public/terrain/19/858551/353747.terrain new file mode 100644 index 000000000..7850b219d Binary files /dev/null and b/public/terrain/19/858551/353747.terrain differ diff --git a/public/terrain/19/858551/353748.terrain b/public/terrain/19/858551/353748.terrain new file mode 100644 index 000000000..0fd57f2b5 Binary files /dev/null and b/public/terrain/19/858551/353748.terrain differ diff --git a/public/terrain/19/858551/353749.terrain b/public/terrain/19/858551/353749.terrain new file mode 100644 index 000000000..2222be511 Binary files /dev/null and b/public/terrain/19/858551/353749.terrain differ diff --git a/public/terrain/19/858551/353750.terrain b/public/terrain/19/858551/353750.terrain new file mode 100644 index 000000000..adf7dafe8 Binary files /dev/null and b/public/terrain/19/858551/353750.terrain differ diff --git a/public/terrain/19/858551/353751.terrain b/public/terrain/19/858551/353751.terrain new file mode 100644 index 000000000..806337404 Binary files /dev/null and b/public/terrain/19/858551/353751.terrain differ diff --git a/public/terrain/19/858551/353752.terrain b/public/terrain/19/858551/353752.terrain new file mode 100644 index 000000000..1318a4abb Binary files /dev/null and b/public/terrain/19/858551/353752.terrain differ diff --git a/public/terrain/19/858551/353753.terrain b/public/terrain/19/858551/353753.terrain new file mode 100644 index 000000000..254f032d4 Binary files /dev/null and b/public/terrain/19/858551/353753.terrain differ diff --git a/public/terrain/19/858551/353754.terrain b/public/terrain/19/858551/353754.terrain new file mode 100644 index 000000000..55280e957 Binary files /dev/null and b/public/terrain/19/858551/353754.terrain differ diff --git a/public/terrain/19/858551/353755.terrain b/public/terrain/19/858551/353755.terrain new file mode 100644 index 000000000..6c24a6f7f Binary files /dev/null and b/public/terrain/19/858551/353755.terrain differ diff --git a/public/terrain/19/858551/353756.terrain b/public/terrain/19/858551/353756.terrain new file mode 100644 index 000000000..752f487dc Binary files /dev/null and b/public/terrain/19/858551/353756.terrain differ diff --git a/public/terrain/19/858551/353757.terrain b/public/terrain/19/858551/353757.terrain new file mode 100644 index 000000000..65f81629b Binary files /dev/null and b/public/terrain/19/858551/353757.terrain differ diff --git a/public/terrain/19/858551/353758.terrain b/public/terrain/19/858551/353758.terrain new file mode 100644 index 000000000..25f686a45 Binary files /dev/null and b/public/terrain/19/858551/353758.terrain differ diff --git a/public/terrain/19/858551/353759.terrain b/public/terrain/19/858551/353759.terrain new file mode 100644 index 000000000..4995533fa Binary files /dev/null and b/public/terrain/19/858551/353759.terrain differ diff --git a/public/terrain/19/858551/353760.terrain b/public/terrain/19/858551/353760.terrain new file mode 100644 index 000000000..d53d0a029 Binary files /dev/null and b/public/terrain/19/858551/353760.terrain differ diff --git a/public/terrain/19/858551/353761.terrain b/public/terrain/19/858551/353761.terrain new file mode 100644 index 000000000..8ed9985a2 Binary files /dev/null and b/public/terrain/19/858551/353761.terrain differ diff --git a/public/terrain/19/858551/353762.terrain b/public/terrain/19/858551/353762.terrain new file mode 100644 index 000000000..5462a8900 Binary files /dev/null and b/public/terrain/19/858551/353762.terrain differ diff --git a/public/terrain/19/858551/353763.terrain b/public/terrain/19/858551/353763.terrain new file mode 100644 index 000000000..5d0236ed6 Binary files /dev/null and b/public/terrain/19/858551/353763.terrain differ diff --git a/public/terrain/19/858551/353764.terrain b/public/terrain/19/858551/353764.terrain new file mode 100644 index 000000000..53028a865 Binary files /dev/null and b/public/terrain/19/858551/353764.terrain differ diff --git a/public/terrain/19/858551/353765.terrain b/public/terrain/19/858551/353765.terrain new file mode 100644 index 000000000..f7c70f40e Binary files /dev/null and b/public/terrain/19/858551/353765.terrain differ diff --git a/public/terrain/19/858551/353766.terrain b/public/terrain/19/858551/353766.terrain new file mode 100644 index 000000000..15254cbe3 Binary files /dev/null and b/public/terrain/19/858551/353766.terrain differ diff --git a/public/terrain/19/858551/353767.terrain b/public/terrain/19/858551/353767.terrain new file mode 100644 index 000000000..09ac66ab5 Binary files /dev/null and b/public/terrain/19/858551/353767.terrain differ diff --git a/public/terrain/19/858551/353768.terrain b/public/terrain/19/858551/353768.terrain new file mode 100644 index 000000000..b5d5a2c96 Binary files /dev/null and b/public/terrain/19/858551/353768.terrain differ diff --git a/public/terrain/19/858551/353769.terrain b/public/terrain/19/858551/353769.terrain new file mode 100644 index 000000000..bda0c3651 Binary files /dev/null and b/public/terrain/19/858551/353769.terrain differ diff --git a/public/terrain/19/858551/353770.terrain b/public/terrain/19/858551/353770.terrain new file mode 100644 index 000000000..9b54d34f5 Binary files /dev/null and b/public/terrain/19/858551/353770.terrain differ diff --git a/public/terrain/19/858551/353771.terrain b/public/terrain/19/858551/353771.terrain new file mode 100644 index 000000000..72962a81b Binary files /dev/null and b/public/terrain/19/858551/353771.terrain differ diff --git a/public/terrain/19/858551/353772.terrain b/public/terrain/19/858551/353772.terrain new file mode 100644 index 000000000..d4bd7f444 Binary files /dev/null and b/public/terrain/19/858551/353772.terrain differ diff --git a/public/terrain/19/858551/353773.terrain b/public/terrain/19/858551/353773.terrain new file mode 100644 index 000000000..4971b4a57 Binary files /dev/null and b/public/terrain/19/858551/353773.terrain differ diff --git a/public/terrain/19/858551/353774.terrain b/public/terrain/19/858551/353774.terrain new file mode 100644 index 000000000..612db4d11 Binary files /dev/null and b/public/terrain/19/858551/353774.terrain differ diff --git a/public/terrain/19/858551/353775.terrain b/public/terrain/19/858551/353775.terrain new file mode 100644 index 000000000..a0456de25 Binary files /dev/null and b/public/terrain/19/858551/353775.terrain differ diff --git a/public/terrain/19/858551/353776.terrain b/public/terrain/19/858551/353776.terrain new file mode 100644 index 000000000..783e78adb Binary files /dev/null and b/public/terrain/19/858551/353776.terrain differ diff --git a/public/terrain/19/858551/353777.terrain b/public/terrain/19/858551/353777.terrain new file mode 100644 index 000000000..8fd29691f Binary files /dev/null and b/public/terrain/19/858551/353777.terrain differ diff --git a/public/terrain/19/858551/353778.terrain b/public/terrain/19/858551/353778.terrain new file mode 100644 index 000000000..70b66cacc Binary files /dev/null and b/public/terrain/19/858551/353778.terrain differ diff --git a/public/terrain/19/858551/353779.terrain b/public/terrain/19/858551/353779.terrain new file mode 100644 index 000000000..b4a141de9 Binary files /dev/null and b/public/terrain/19/858551/353779.terrain differ diff --git a/public/terrain/19/858551/353780.terrain b/public/terrain/19/858551/353780.terrain new file mode 100644 index 000000000..a3bc44ccb Binary files /dev/null and b/public/terrain/19/858551/353780.terrain differ diff --git a/public/terrain/19/858551/353781.terrain b/public/terrain/19/858551/353781.terrain new file mode 100644 index 000000000..e8ba2b3a5 Binary files /dev/null and b/public/terrain/19/858551/353781.terrain differ diff --git a/public/terrain/19/858551/353782.terrain b/public/terrain/19/858551/353782.terrain new file mode 100644 index 000000000..2025b4f1d Binary files /dev/null and b/public/terrain/19/858551/353782.terrain differ diff --git a/public/terrain/19/858551/353783.terrain b/public/terrain/19/858551/353783.terrain new file mode 100644 index 000000000..3bcdc55cc Binary files /dev/null and b/public/terrain/19/858551/353783.terrain differ diff --git a/public/terrain/19/858551/353784.terrain b/public/terrain/19/858551/353784.terrain new file mode 100644 index 000000000..c05970035 Binary files /dev/null and b/public/terrain/19/858551/353784.terrain differ diff --git a/public/terrain/19/858551/353785.terrain b/public/terrain/19/858551/353785.terrain new file mode 100644 index 000000000..9e12ba7cc Binary files /dev/null and b/public/terrain/19/858551/353785.terrain differ diff --git a/public/terrain/19/858551/353786.terrain b/public/terrain/19/858551/353786.terrain new file mode 100644 index 000000000..d54ce2d11 Binary files /dev/null and b/public/terrain/19/858551/353786.terrain differ diff --git a/public/terrain/19/858551/353787.terrain b/public/terrain/19/858551/353787.terrain new file mode 100644 index 000000000..3e8ea0429 Binary files /dev/null and b/public/terrain/19/858551/353787.terrain differ diff --git a/public/terrain/19/858551/353788.terrain b/public/terrain/19/858551/353788.terrain new file mode 100644 index 000000000..47132628d Binary files /dev/null and b/public/terrain/19/858551/353788.terrain differ diff --git a/public/terrain/19/858551/353789.terrain b/public/terrain/19/858551/353789.terrain new file mode 100644 index 000000000..15cb6f0ed Binary files /dev/null and b/public/terrain/19/858551/353789.terrain differ diff --git a/public/terrain/19/858551/353790.terrain b/public/terrain/19/858551/353790.terrain new file mode 100644 index 000000000..962829d0a Binary files /dev/null and b/public/terrain/19/858551/353790.terrain differ diff --git a/public/terrain/19/858551/353791.terrain b/public/terrain/19/858551/353791.terrain new file mode 100644 index 000000000..df00fc824 Binary files /dev/null and b/public/terrain/19/858551/353791.terrain differ diff --git a/public/terrain/19/858551/353792.terrain b/public/terrain/19/858551/353792.terrain new file mode 100644 index 000000000..ae1a5a5c6 Binary files /dev/null and b/public/terrain/19/858551/353792.terrain differ diff --git a/public/terrain/19/858551/353793.terrain b/public/terrain/19/858551/353793.terrain new file mode 100644 index 000000000..b8d56f6ed Binary files /dev/null and b/public/terrain/19/858551/353793.terrain differ diff --git a/public/terrain/19/858551/353794.terrain b/public/terrain/19/858551/353794.terrain new file mode 100644 index 000000000..93a406738 Binary files /dev/null and b/public/terrain/19/858551/353794.terrain differ diff --git a/public/terrain/19/858551/353795.terrain b/public/terrain/19/858551/353795.terrain new file mode 100644 index 000000000..a6b4e1abe Binary files /dev/null and b/public/terrain/19/858551/353795.terrain differ diff --git a/public/terrain/19/858551/353796.terrain b/public/terrain/19/858551/353796.terrain new file mode 100644 index 000000000..e17467997 Binary files /dev/null and b/public/terrain/19/858551/353796.terrain differ diff --git a/public/terrain/19/858551/353797.terrain b/public/terrain/19/858551/353797.terrain new file mode 100644 index 000000000..b0be17ee7 Binary files /dev/null and b/public/terrain/19/858551/353797.terrain differ diff --git a/public/terrain/19/858551/353798.terrain b/public/terrain/19/858551/353798.terrain new file mode 100644 index 000000000..f87629a37 Binary files /dev/null and b/public/terrain/19/858551/353798.terrain differ diff --git a/public/terrain/19/858551/353799.terrain b/public/terrain/19/858551/353799.terrain new file mode 100644 index 000000000..cfbbd486c Binary files /dev/null and b/public/terrain/19/858551/353799.terrain differ diff --git a/public/terrain/19/858551/353800.terrain b/public/terrain/19/858551/353800.terrain new file mode 100644 index 000000000..580bd30eb Binary files /dev/null and b/public/terrain/19/858551/353800.terrain differ diff --git a/public/terrain/19/858551/353801.terrain b/public/terrain/19/858551/353801.terrain new file mode 100644 index 000000000..d5be53449 Binary files /dev/null and b/public/terrain/19/858551/353801.terrain differ diff --git a/public/terrain/19/858551/353802.terrain b/public/terrain/19/858551/353802.terrain new file mode 100644 index 000000000..1d5fcb301 Binary files /dev/null and b/public/terrain/19/858551/353802.terrain differ diff --git a/public/terrain/19/858551/353803.terrain b/public/terrain/19/858551/353803.terrain new file mode 100644 index 000000000..2dd4b13ef Binary files /dev/null and b/public/terrain/19/858551/353803.terrain differ diff --git a/public/terrain/19/858551/353804.terrain b/public/terrain/19/858551/353804.terrain new file mode 100644 index 000000000..9b3e58c16 Binary files /dev/null and b/public/terrain/19/858551/353804.terrain differ diff --git a/public/terrain/19/858551/353805.terrain b/public/terrain/19/858551/353805.terrain new file mode 100644 index 000000000..9cf1c8e03 Binary files /dev/null and b/public/terrain/19/858551/353805.terrain differ diff --git a/public/terrain/19/858551/353806.terrain b/public/terrain/19/858551/353806.terrain new file mode 100644 index 000000000..529110d36 Binary files /dev/null and b/public/terrain/19/858551/353806.terrain differ diff --git a/public/terrain/19/858551/353807.terrain b/public/terrain/19/858551/353807.terrain new file mode 100644 index 000000000..eb57f650e Binary files /dev/null and b/public/terrain/19/858551/353807.terrain differ diff --git a/public/terrain/19/858551/353808.terrain b/public/terrain/19/858551/353808.terrain new file mode 100644 index 000000000..fc0e4fe91 Binary files /dev/null and b/public/terrain/19/858551/353808.terrain differ diff --git a/public/terrain/19/858551/353809.terrain b/public/terrain/19/858551/353809.terrain new file mode 100644 index 000000000..c4e660a29 Binary files /dev/null and b/public/terrain/19/858551/353809.terrain differ diff --git a/public/terrain/19/858551/353810.terrain b/public/terrain/19/858551/353810.terrain new file mode 100644 index 000000000..8f2c7142c Binary files /dev/null and b/public/terrain/19/858551/353810.terrain differ diff --git a/public/terrain/19/858551/353811.terrain b/public/terrain/19/858551/353811.terrain new file mode 100644 index 000000000..c092458a3 Binary files /dev/null and b/public/terrain/19/858551/353811.terrain differ diff --git a/public/terrain/19/858551/353812.terrain b/public/terrain/19/858551/353812.terrain new file mode 100644 index 000000000..c33b08f08 Binary files /dev/null and b/public/terrain/19/858551/353812.terrain differ diff --git a/public/terrain/19/858551/353813.terrain b/public/terrain/19/858551/353813.terrain new file mode 100644 index 000000000..fee92efd8 Binary files /dev/null and b/public/terrain/19/858551/353813.terrain differ diff --git a/public/terrain/19/858551/353814.terrain b/public/terrain/19/858551/353814.terrain new file mode 100644 index 000000000..6473d936a Binary files /dev/null and b/public/terrain/19/858551/353814.terrain differ diff --git a/public/terrain/19/858551/353815.terrain b/public/terrain/19/858551/353815.terrain new file mode 100644 index 000000000..f55452a80 Binary files /dev/null and b/public/terrain/19/858551/353815.terrain differ diff --git a/public/terrain/19/858551/353816.terrain b/public/terrain/19/858551/353816.terrain new file mode 100644 index 000000000..58d566515 Binary files /dev/null and b/public/terrain/19/858551/353816.terrain differ diff --git a/public/terrain/19/858551/353817.terrain b/public/terrain/19/858551/353817.terrain new file mode 100644 index 000000000..e314fd4df Binary files /dev/null and b/public/terrain/19/858551/353817.terrain differ diff --git a/public/terrain/19/858551/353818.terrain b/public/terrain/19/858551/353818.terrain new file mode 100644 index 000000000..d119fad50 Binary files /dev/null and b/public/terrain/19/858551/353818.terrain differ diff --git a/public/terrain/19/858551/353819.terrain b/public/terrain/19/858551/353819.terrain new file mode 100644 index 000000000..3c507722e Binary files /dev/null and b/public/terrain/19/858551/353819.terrain differ diff --git a/public/terrain/19/858551/353820.terrain b/public/terrain/19/858551/353820.terrain new file mode 100644 index 000000000..ac8ce1eec Binary files /dev/null and b/public/terrain/19/858551/353820.terrain differ diff --git a/public/terrain/19/858551/353821.terrain b/public/terrain/19/858551/353821.terrain new file mode 100644 index 000000000..9c6ac3fc2 Binary files /dev/null and b/public/terrain/19/858551/353821.terrain differ diff --git a/public/terrain/19/858551/353822.terrain b/public/terrain/19/858551/353822.terrain new file mode 100644 index 000000000..ae70d5126 Binary files /dev/null and b/public/terrain/19/858551/353822.terrain differ diff --git a/public/terrain/19/858551/353823.terrain b/public/terrain/19/858551/353823.terrain new file mode 100644 index 000000000..6a8f0b8ed Binary files /dev/null and b/public/terrain/19/858551/353823.terrain differ diff --git a/public/terrain/19/858551/353824.terrain b/public/terrain/19/858551/353824.terrain new file mode 100644 index 000000000..270422542 Binary files /dev/null and b/public/terrain/19/858551/353824.terrain differ diff --git a/public/terrain/19/858551/353825.terrain b/public/terrain/19/858551/353825.terrain new file mode 100644 index 000000000..490192ca7 Binary files /dev/null and b/public/terrain/19/858551/353825.terrain differ diff --git a/public/terrain/19/858551/353826.terrain b/public/terrain/19/858551/353826.terrain new file mode 100644 index 000000000..dedc825c0 Binary files /dev/null and b/public/terrain/19/858551/353826.terrain differ diff --git a/public/terrain/19/858551/353827.terrain b/public/terrain/19/858551/353827.terrain new file mode 100644 index 000000000..7b36bcbea Binary files /dev/null and b/public/terrain/19/858551/353827.terrain differ diff --git a/public/terrain/19/858551/353828.terrain b/public/terrain/19/858551/353828.terrain new file mode 100644 index 000000000..2b8f8b539 Binary files /dev/null and b/public/terrain/19/858551/353828.terrain differ diff --git a/public/terrain/19/858551/353829.terrain b/public/terrain/19/858551/353829.terrain new file mode 100644 index 000000000..364df4a27 Binary files /dev/null and b/public/terrain/19/858551/353829.terrain differ diff --git a/public/terrain/19/858551/353830.terrain b/public/terrain/19/858551/353830.terrain new file mode 100644 index 000000000..989b5bc22 Binary files /dev/null and b/public/terrain/19/858551/353830.terrain differ diff --git a/public/terrain/19/858551/353831.terrain b/public/terrain/19/858551/353831.terrain new file mode 100644 index 000000000..d4c2a68b3 Binary files /dev/null and b/public/terrain/19/858551/353831.terrain differ diff --git a/public/terrain/19/858551/353832.terrain b/public/terrain/19/858551/353832.terrain new file mode 100644 index 000000000..5b938f1e3 Binary files /dev/null and b/public/terrain/19/858551/353832.terrain differ diff --git a/public/terrain/19/858551/353833.terrain b/public/terrain/19/858551/353833.terrain new file mode 100644 index 000000000..0da200cfa Binary files /dev/null and b/public/terrain/19/858551/353833.terrain differ diff --git a/public/terrain/19/858551/353834.terrain b/public/terrain/19/858551/353834.terrain new file mode 100644 index 000000000..7844eb260 Binary files /dev/null and b/public/terrain/19/858551/353834.terrain differ diff --git a/public/terrain/19/858551/353835.terrain b/public/terrain/19/858551/353835.terrain new file mode 100644 index 000000000..60dc70caa Binary files /dev/null and b/public/terrain/19/858551/353835.terrain differ diff --git a/public/terrain/19/858551/353836.terrain b/public/terrain/19/858551/353836.terrain new file mode 100644 index 000000000..fb94ddfc5 Binary files /dev/null and b/public/terrain/19/858551/353836.terrain differ diff --git a/public/terrain/19/858551/353837.terrain b/public/terrain/19/858551/353837.terrain new file mode 100644 index 000000000..a7db7626e Binary files /dev/null and b/public/terrain/19/858551/353837.terrain differ diff --git a/public/terrain/19/858551/353838.terrain b/public/terrain/19/858551/353838.terrain new file mode 100644 index 000000000..31f9cd16a Binary files /dev/null and b/public/terrain/19/858551/353838.terrain differ diff --git a/public/terrain/19/858551/353839.terrain b/public/terrain/19/858551/353839.terrain new file mode 100644 index 000000000..a11e25fc4 Binary files /dev/null and b/public/terrain/19/858551/353839.terrain differ diff --git a/public/terrain/19/858551/353840.terrain b/public/terrain/19/858551/353840.terrain new file mode 100644 index 000000000..5ffc14641 Binary files /dev/null and b/public/terrain/19/858551/353840.terrain differ diff --git a/public/terrain/19/858551/353841.terrain b/public/terrain/19/858551/353841.terrain new file mode 100644 index 000000000..ca140540f Binary files /dev/null and b/public/terrain/19/858551/353841.terrain differ diff --git a/public/terrain/19/858551/353842.terrain b/public/terrain/19/858551/353842.terrain new file mode 100644 index 000000000..1d5dca97d Binary files /dev/null and b/public/terrain/19/858551/353842.terrain differ diff --git a/public/terrain/19/858551/353843.terrain b/public/terrain/19/858551/353843.terrain new file mode 100644 index 000000000..be856b3e0 Binary files /dev/null and b/public/terrain/19/858551/353843.terrain differ diff --git a/public/terrain/19/858551/353844.terrain b/public/terrain/19/858551/353844.terrain new file mode 100644 index 000000000..91e54ded4 Binary files /dev/null and b/public/terrain/19/858551/353844.terrain differ diff --git a/public/terrain/19/858551/353845.terrain b/public/terrain/19/858551/353845.terrain new file mode 100644 index 000000000..f1f5debce Binary files /dev/null and b/public/terrain/19/858551/353845.terrain differ diff --git a/public/terrain/19/858551/353846.terrain b/public/terrain/19/858551/353846.terrain new file mode 100644 index 000000000..79b113881 Binary files /dev/null and b/public/terrain/19/858551/353846.terrain differ diff --git a/public/terrain/19/858551/353847.terrain b/public/terrain/19/858551/353847.terrain new file mode 100644 index 000000000..9bdeefae3 Binary files /dev/null and b/public/terrain/19/858551/353847.terrain differ diff --git a/public/terrain/19/858551/353848.terrain b/public/terrain/19/858551/353848.terrain new file mode 100644 index 000000000..f668fbe12 Binary files /dev/null and b/public/terrain/19/858551/353848.terrain differ diff --git a/public/terrain/19/858551/353849.terrain b/public/terrain/19/858551/353849.terrain new file mode 100644 index 000000000..b70c2d3af Binary files /dev/null and b/public/terrain/19/858551/353849.terrain differ diff --git a/public/terrain/19/858551/353850.terrain b/public/terrain/19/858551/353850.terrain new file mode 100644 index 000000000..18de1d925 Binary files /dev/null and b/public/terrain/19/858551/353850.terrain differ diff --git a/public/terrain/19/858551/353851.terrain b/public/terrain/19/858551/353851.terrain new file mode 100644 index 000000000..5cadb3c62 Binary files /dev/null and b/public/terrain/19/858551/353851.terrain differ diff --git a/public/terrain/19/858551/353852.terrain b/public/terrain/19/858551/353852.terrain new file mode 100644 index 000000000..d43861f5a Binary files /dev/null and b/public/terrain/19/858551/353852.terrain differ diff --git a/public/terrain/19/858551/353853.terrain b/public/terrain/19/858551/353853.terrain new file mode 100644 index 000000000..d073f545e Binary files /dev/null and b/public/terrain/19/858551/353853.terrain differ diff --git a/public/terrain/19/858551/353854.terrain b/public/terrain/19/858551/353854.terrain new file mode 100644 index 000000000..5366ba2d9 Binary files /dev/null and b/public/terrain/19/858551/353854.terrain differ diff --git a/public/terrain/19/858551/353855.terrain b/public/terrain/19/858551/353855.terrain new file mode 100644 index 000000000..b367ecb97 Binary files /dev/null and b/public/terrain/19/858551/353855.terrain differ diff --git a/public/terrain/19/858551/353856.terrain b/public/terrain/19/858551/353856.terrain new file mode 100644 index 000000000..970254f20 Binary files /dev/null and b/public/terrain/19/858551/353856.terrain differ diff --git a/public/terrain/19/858551/353857.terrain b/public/terrain/19/858551/353857.terrain new file mode 100644 index 000000000..92798a6f8 Binary files /dev/null and b/public/terrain/19/858551/353857.terrain differ diff --git a/public/terrain/19/858551/353858.terrain b/public/terrain/19/858551/353858.terrain new file mode 100644 index 000000000..23211f7d2 Binary files /dev/null and b/public/terrain/19/858551/353858.terrain differ diff --git a/public/terrain/19/858551/353859.terrain b/public/terrain/19/858551/353859.terrain new file mode 100644 index 000000000..ac612b8e8 Binary files /dev/null and b/public/terrain/19/858551/353859.terrain differ diff --git a/public/terrain/19/858551/353860.terrain b/public/terrain/19/858551/353860.terrain new file mode 100644 index 000000000..06342d5de Binary files /dev/null and b/public/terrain/19/858551/353860.terrain differ diff --git a/public/terrain/19/858551/353861.terrain b/public/terrain/19/858551/353861.terrain new file mode 100644 index 000000000..f2f86f739 Binary files /dev/null and b/public/terrain/19/858551/353861.terrain differ diff --git a/public/terrain/19/858551/353862.terrain b/public/terrain/19/858551/353862.terrain new file mode 100644 index 000000000..99341a3aa Binary files /dev/null and b/public/terrain/19/858551/353862.terrain differ diff --git a/public/terrain/19/858551/353863.terrain b/public/terrain/19/858551/353863.terrain new file mode 100644 index 000000000..6a95f01cc Binary files /dev/null and b/public/terrain/19/858551/353863.terrain differ diff --git a/public/terrain/19/858551/353864.terrain b/public/terrain/19/858551/353864.terrain new file mode 100644 index 000000000..646ddf464 Binary files /dev/null and b/public/terrain/19/858551/353864.terrain differ diff --git a/public/terrain/19/858551/353865.terrain b/public/terrain/19/858551/353865.terrain new file mode 100644 index 000000000..68d348d14 Binary files /dev/null and b/public/terrain/19/858551/353865.terrain differ diff --git a/public/terrain/19/858551/353866.terrain b/public/terrain/19/858551/353866.terrain new file mode 100644 index 000000000..2103ed6eb Binary files /dev/null and b/public/terrain/19/858551/353866.terrain differ diff --git a/public/terrain/19/858551/353867.terrain b/public/terrain/19/858551/353867.terrain new file mode 100644 index 000000000..d284123f8 Binary files /dev/null and b/public/terrain/19/858551/353867.terrain differ diff --git a/public/terrain/19/858551/353868.terrain b/public/terrain/19/858551/353868.terrain new file mode 100644 index 000000000..3c168a672 Binary files /dev/null and b/public/terrain/19/858551/353868.terrain differ diff --git a/public/terrain/19/858551/353869.terrain b/public/terrain/19/858551/353869.terrain new file mode 100644 index 000000000..d0dd32556 Binary files /dev/null and b/public/terrain/19/858551/353869.terrain differ diff --git a/public/terrain/19/858551/353870.terrain b/public/terrain/19/858551/353870.terrain new file mode 100644 index 000000000..befc81672 Binary files /dev/null and b/public/terrain/19/858551/353870.terrain differ diff --git a/public/terrain/19/858551/353871.terrain b/public/terrain/19/858551/353871.terrain new file mode 100644 index 000000000..dd2111da0 Binary files /dev/null and b/public/terrain/19/858551/353871.terrain differ diff --git a/public/terrain/19/858551/353872.terrain b/public/terrain/19/858551/353872.terrain new file mode 100644 index 000000000..86f6fecb7 Binary files /dev/null and b/public/terrain/19/858551/353872.terrain differ diff --git a/public/terrain/19/858551/353873.terrain b/public/terrain/19/858551/353873.terrain new file mode 100644 index 000000000..bca5e0bbe Binary files /dev/null and b/public/terrain/19/858551/353873.terrain differ diff --git a/public/terrain/19/858551/353874.terrain b/public/terrain/19/858551/353874.terrain new file mode 100644 index 000000000..60bffb38e Binary files /dev/null and b/public/terrain/19/858551/353874.terrain differ diff --git a/public/terrain/19/858551/353875.terrain b/public/terrain/19/858551/353875.terrain new file mode 100644 index 000000000..08a9fe202 Binary files /dev/null and b/public/terrain/19/858551/353875.terrain differ diff --git a/public/terrain/19/858551/353876.terrain b/public/terrain/19/858551/353876.terrain new file mode 100644 index 000000000..ae59fc29f Binary files /dev/null and b/public/terrain/19/858551/353876.terrain differ diff --git a/public/terrain/19/858551/353877.terrain b/public/terrain/19/858551/353877.terrain new file mode 100644 index 000000000..d2e431276 Binary files /dev/null and b/public/terrain/19/858551/353877.terrain differ diff --git a/public/terrain/19/858551/353878.terrain b/public/terrain/19/858551/353878.terrain new file mode 100644 index 000000000..d053172c8 Binary files /dev/null and b/public/terrain/19/858551/353878.terrain differ diff --git a/public/terrain/19/858551/353879.terrain b/public/terrain/19/858551/353879.terrain new file mode 100644 index 000000000..7c88b359e Binary files /dev/null and b/public/terrain/19/858551/353879.terrain differ diff --git a/public/terrain/19/858551/353880.terrain b/public/terrain/19/858551/353880.terrain new file mode 100644 index 000000000..08292b0f8 Binary files /dev/null and b/public/terrain/19/858551/353880.terrain differ diff --git a/public/terrain/19/858551/353881.terrain b/public/terrain/19/858551/353881.terrain new file mode 100644 index 000000000..5e5836724 Binary files /dev/null and b/public/terrain/19/858551/353881.terrain differ diff --git a/public/terrain/19/858551/353882.terrain b/public/terrain/19/858551/353882.terrain new file mode 100644 index 000000000..e8ad5d597 Binary files /dev/null and b/public/terrain/19/858551/353882.terrain differ diff --git a/public/terrain/19/858551/353883.terrain b/public/terrain/19/858551/353883.terrain new file mode 100644 index 000000000..c59a18d47 Binary files /dev/null and b/public/terrain/19/858551/353883.terrain differ diff --git a/public/terrain/19/858551/353884.terrain b/public/terrain/19/858551/353884.terrain new file mode 100644 index 000000000..07101c888 Binary files /dev/null and b/public/terrain/19/858551/353884.terrain differ diff --git a/public/terrain/19/858551/353885.terrain b/public/terrain/19/858551/353885.terrain new file mode 100644 index 000000000..e973fbbef Binary files /dev/null and b/public/terrain/19/858551/353885.terrain differ diff --git a/public/terrain/19/858551/353886.terrain b/public/terrain/19/858551/353886.terrain new file mode 100644 index 000000000..156d77003 Binary files /dev/null and b/public/terrain/19/858551/353886.terrain differ diff --git a/public/terrain/19/858551/353887.terrain b/public/terrain/19/858551/353887.terrain new file mode 100644 index 000000000..a6d1f4802 Binary files /dev/null and b/public/terrain/19/858551/353887.terrain differ diff --git a/public/terrain/19/858551/353888.terrain b/public/terrain/19/858551/353888.terrain new file mode 100644 index 000000000..bd393a87c Binary files /dev/null and b/public/terrain/19/858551/353888.terrain differ diff --git a/public/terrain/19/858551/353889.terrain b/public/terrain/19/858551/353889.terrain new file mode 100644 index 000000000..e5c1222c6 Binary files /dev/null and b/public/terrain/19/858551/353889.terrain differ diff --git a/public/terrain/19/858551/353890.terrain b/public/terrain/19/858551/353890.terrain new file mode 100644 index 000000000..d2f2515fa Binary files /dev/null and b/public/terrain/19/858551/353890.terrain differ diff --git a/public/terrain/19/858551/353891.terrain b/public/terrain/19/858551/353891.terrain new file mode 100644 index 000000000..a8a67b3b4 Binary files /dev/null and b/public/terrain/19/858551/353891.terrain differ diff --git a/public/terrain/19/858551/353892.terrain b/public/terrain/19/858551/353892.terrain new file mode 100644 index 000000000..904a13b8b Binary files /dev/null and b/public/terrain/19/858551/353892.terrain differ diff --git a/public/terrain/19/858551/353893.terrain b/public/terrain/19/858551/353893.terrain new file mode 100644 index 000000000..4e21575de Binary files /dev/null and b/public/terrain/19/858551/353893.terrain differ diff --git a/public/terrain/19/858551/353894.terrain b/public/terrain/19/858551/353894.terrain new file mode 100644 index 000000000..52259d7de Binary files /dev/null and b/public/terrain/19/858551/353894.terrain differ diff --git a/public/terrain/19/858551/353895.terrain b/public/terrain/19/858551/353895.terrain new file mode 100644 index 000000000..6414e6cc3 Binary files /dev/null and b/public/terrain/19/858551/353895.terrain differ diff --git a/public/terrain/19/858551/353896.terrain b/public/terrain/19/858551/353896.terrain new file mode 100644 index 000000000..28db745b4 Binary files /dev/null and b/public/terrain/19/858551/353896.terrain differ diff --git a/public/terrain/19/858551/353897.terrain b/public/terrain/19/858551/353897.terrain new file mode 100644 index 000000000..1fd9da07b Binary files /dev/null and b/public/terrain/19/858551/353897.terrain differ diff --git a/public/terrain/19/858551/353898.terrain b/public/terrain/19/858551/353898.terrain new file mode 100644 index 000000000..326e7ca91 Binary files /dev/null and b/public/terrain/19/858551/353898.terrain differ diff --git a/public/terrain/19/858551/353899.terrain b/public/terrain/19/858551/353899.terrain new file mode 100644 index 000000000..822365d37 Binary files /dev/null and b/public/terrain/19/858551/353899.terrain differ diff --git a/public/terrain/19/858551/353900.terrain b/public/terrain/19/858551/353900.terrain new file mode 100644 index 000000000..6b53f8dea Binary files /dev/null and b/public/terrain/19/858551/353900.terrain differ diff --git a/public/terrain/19/858551/353901.terrain b/public/terrain/19/858551/353901.terrain new file mode 100644 index 000000000..acadc0bce Binary files /dev/null and b/public/terrain/19/858551/353901.terrain differ diff --git a/public/terrain/19/858551/353902.terrain b/public/terrain/19/858551/353902.terrain new file mode 100644 index 000000000..2213576be Binary files /dev/null and b/public/terrain/19/858551/353902.terrain differ diff --git a/public/terrain/19/858551/353903.terrain b/public/terrain/19/858551/353903.terrain new file mode 100644 index 000000000..c37ebc0bb Binary files /dev/null and b/public/terrain/19/858551/353903.terrain differ diff --git a/public/terrain/19/858551/353904.terrain b/public/terrain/19/858551/353904.terrain new file mode 100644 index 000000000..087acb5cf Binary files /dev/null and b/public/terrain/19/858551/353904.terrain differ diff --git a/public/terrain/19/858551/353905.terrain b/public/terrain/19/858551/353905.terrain new file mode 100644 index 000000000..9b0523f35 Binary files /dev/null and b/public/terrain/19/858551/353905.terrain differ diff --git a/public/terrain/19/858551/353906.terrain b/public/terrain/19/858551/353906.terrain new file mode 100644 index 000000000..c3c1e124e Binary files /dev/null and b/public/terrain/19/858551/353906.terrain differ diff --git a/public/terrain/19/858551/353907.terrain b/public/terrain/19/858551/353907.terrain new file mode 100644 index 000000000..70b859b6a Binary files /dev/null and b/public/terrain/19/858551/353907.terrain differ diff --git a/public/terrain/19/858551/353908.terrain b/public/terrain/19/858551/353908.terrain new file mode 100644 index 000000000..450f5aed4 Binary files /dev/null and b/public/terrain/19/858551/353908.terrain differ diff --git a/public/terrain/19/858551/353909.terrain b/public/terrain/19/858551/353909.terrain new file mode 100644 index 000000000..daea506e6 Binary files /dev/null and b/public/terrain/19/858551/353909.terrain differ diff --git a/public/terrain/19/858551/353910.terrain b/public/terrain/19/858551/353910.terrain new file mode 100644 index 000000000..d73aa9d2e Binary files /dev/null and b/public/terrain/19/858551/353910.terrain differ diff --git a/public/terrain/19/858551/353911.terrain b/public/terrain/19/858551/353911.terrain new file mode 100644 index 000000000..ceca506d4 Binary files /dev/null and b/public/terrain/19/858551/353911.terrain differ diff --git a/public/terrain/19/858551/353912.terrain b/public/terrain/19/858551/353912.terrain new file mode 100644 index 000000000..74275fc5a Binary files /dev/null and b/public/terrain/19/858551/353912.terrain differ diff --git a/public/terrain/19/858551/353913.terrain b/public/terrain/19/858551/353913.terrain new file mode 100644 index 000000000..ba5363f6b Binary files /dev/null and b/public/terrain/19/858551/353913.terrain differ diff --git a/public/terrain/19/858551/353914.terrain b/public/terrain/19/858551/353914.terrain new file mode 100644 index 000000000..157fa2899 Binary files /dev/null and b/public/terrain/19/858551/353914.terrain differ diff --git a/public/terrain/19/858551/353915.terrain b/public/terrain/19/858551/353915.terrain new file mode 100644 index 000000000..d8c304244 Binary files /dev/null and b/public/terrain/19/858551/353915.terrain differ diff --git a/public/terrain/19/858551/353916.terrain b/public/terrain/19/858551/353916.terrain new file mode 100644 index 000000000..d36b82939 Binary files /dev/null and b/public/terrain/19/858551/353916.terrain differ diff --git a/public/terrain/19/858551/353917.terrain b/public/terrain/19/858551/353917.terrain new file mode 100644 index 000000000..3097b0ac4 Binary files /dev/null and b/public/terrain/19/858551/353917.terrain differ diff --git a/public/terrain/19/858551/353918.terrain b/public/terrain/19/858551/353918.terrain new file mode 100644 index 000000000..1ab1d6b3c Binary files /dev/null and b/public/terrain/19/858551/353918.terrain differ diff --git a/public/terrain/19/858551/353919.terrain b/public/terrain/19/858551/353919.terrain new file mode 100644 index 000000000..5e5949635 Binary files /dev/null and b/public/terrain/19/858551/353919.terrain differ diff --git a/public/terrain/19/858551/353920.terrain b/public/terrain/19/858551/353920.terrain new file mode 100644 index 000000000..66f403552 Binary files /dev/null and b/public/terrain/19/858551/353920.terrain differ diff --git a/public/terrain/19/858551/353921.terrain b/public/terrain/19/858551/353921.terrain new file mode 100644 index 000000000..41daecd63 Binary files /dev/null and b/public/terrain/19/858551/353921.terrain differ diff --git a/public/terrain/19/858551/353922.terrain b/public/terrain/19/858551/353922.terrain new file mode 100644 index 000000000..3af5ccb0c Binary files /dev/null and b/public/terrain/19/858551/353922.terrain differ diff --git a/public/terrain/19/858551/353923.terrain b/public/terrain/19/858551/353923.terrain new file mode 100644 index 000000000..af8673220 Binary files /dev/null and b/public/terrain/19/858551/353923.terrain differ diff --git a/public/terrain/19/858551/353924.terrain b/public/terrain/19/858551/353924.terrain new file mode 100644 index 000000000..37044a2d2 Binary files /dev/null and b/public/terrain/19/858551/353924.terrain differ diff --git a/public/terrain/19/858551/353925.terrain b/public/terrain/19/858551/353925.terrain new file mode 100644 index 000000000..1781bb8b5 Binary files /dev/null and b/public/terrain/19/858551/353925.terrain differ diff --git a/public/terrain/19/858551/353926.terrain b/public/terrain/19/858551/353926.terrain new file mode 100644 index 000000000..ab8d57c0c Binary files /dev/null and b/public/terrain/19/858551/353926.terrain differ diff --git a/public/terrain/19/858551/353927.terrain b/public/terrain/19/858551/353927.terrain new file mode 100644 index 000000000..01bd5ffd5 Binary files /dev/null and b/public/terrain/19/858551/353927.terrain differ diff --git a/public/terrain/19/858551/353928.terrain b/public/terrain/19/858551/353928.terrain new file mode 100644 index 000000000..3f1b09418 Binary files /dev/null and b/public/terrain/19/858551/353928.terrain differ diff --git a/public/terrain/19/858551/353929.terrain b/public/terrain/19/858551/353929.terrain new file mode 100644 index 000000000..6082a804c Binary files /dev/null and b/public/terrain/19/858551/353929.terrain differ diff --git a/public/terrain/19/858551/353930.terrain b/public/terrain/19/858551/353930.terrain new file mode 100644 index 000000000..19da2423f Binary files /dev/null and b/public/terrain/19/858551/353930.terrain differ diff --git a/public/terrain/19/858551/353931.terrain b/public/terrain/19/858551/353931.terrain new file mode 100644 index 000000000..7ace176a5 Binary files /dev/null and b/public/terrain/19/858551/353931.terrain differ diff --git a/public/terrain/19/858551/353932.terrain b/public/terrain/19/858551/353932.terrain new file mode 100644 index 000000000..a174b396e Binary files /dev/null and b/public/terrain/19/858551/353932.terrain differ diff --git a/public/terrain/19/858551/353933.terrain b/public/terrain/19/858551/353933.terrain new file mode 100644 index 000000000..540c04c66 Binary files /dev/null and b/public/terrain/19/858551/353933.terrain differ diff --git a/public/terrain/19/858551/353934.terrain b/public/terrain/19/858551/353934.terrain new file mode 100644 index 000000000..a2c42084b Binary files /dev/null and b/public/terrain/19/858551/353934.terrain differ diff --git a/public/terrain/19/858551/353935.terrain b/public/terrain/19/858551/353935.terrain new file mode 100644 index 000000000..5f1c72ed7 Binary files /dev/null and b/public/terrain/19/858551/353935.terrain differ diff --git a/public/terrain/19/858551/353936.terrain b/public/terrain/19/858551/353936.terrain new file mode 100644 index 000000000..2756d4ab6 Binary files /dev/null and b/public/terrain/19/858551/353936.terrain differ diff --git a/public/terrain/19/858551/353937.terrain b/public/terrain/19/858551/353937.terrain new file mode 100644 index 000000000..71f5074f5 Binary files /dev/null and b/public/terrain/19/858551/353937.terrain differ diff --git a/public/terrain/19/858551/353938.terrain b/public/terrain/19/858551/353938.terrain new file mode 100644 index 000000000..2fb7ad127 Binary files /dev/null and b/public/terrain/19/858551/353938.terrain differ diff --git a/public/terrain/19/858551/353939.terrain b/public/terrain/19/858551/353939.terrain new file mode 100644 index 000000000..732e451ed Binary files /dev/null and b/public/terrain/19/858551/353939.terrain differ diff --git a/public/terrain/19/858551/353940.terrain b/public/terrain/19/858551/353940.terrain new file mode 100644 index 000000000..4b6903f8e Binary files /dev/null and b/public/terrain/19/858551/353940.terrain differ diff --git a/public/terrain/19/858551/353941.terrain b/public/terrain/19/858551/353941.terrain new file mode 100644 index 000000000..da9363d3e Binary files /dev/null and b/public/terrain/19/858551/353941.terrain differ diff --git a/public/terrain/19/858551/353942.terrain b/public/terrain/19/858551/353942.terrain new file mode 100644 index 000000000..2d7f93a7b Binary files /dev/null and b/public/terrain/19/858551/353942.terrain differ diff --git a/public/terrain/19/858551/353943.terrain b/public/terrain/19/858551/353943.terrain new file mode 100644 index 000000000..458034a2d Binary files /dev/null and b/public/terrain/19/858551/353943.terrain differ diff --git a/public/terrain/19/858551/353944.terrain b/public/terrain/19/858551/353944.terrain new file mode 100644 index 000000000..e9001745b Binary files /dev/null and b/public/terrain/19/858551/353944.terrain differ diff --git a/public/terrain/19/858551/353945.terrain b/public/terrain/19/858551/353945.terrain new file mode 100644 index 000000000..543e2e948 Binary files /dev/null and b/public/terrain/19/858551/353945.terrain differ diff --git a/public/terrain/19/858551/353946.terrain b/public/terrain/19/858551/353946.terrain new file mode 100644 index 000000000..290e7aca4 Binary files /dev/null and b/public/terrain/19/858551/353946.terrain differ diff --git a/public/terrain/19/858551/353947.terrain b/public/terrain/19/858551/353947.terrain new file mode 100644 index 000000000..078d18502 Binary files /dev/null and b/public/terrain/19/858551/353947.terrain differ diff --git a/public/terrain/19/858551/353948.terrain b/public/terrain/19/858551/353948.terrain new file mode 100644 index 000000000..1aa010160 Binary files /dev/null and b/public/terrain/19/858551/353948.terrain differ diff --git a/public/terrain/19/858551/353949.terrain b/public/terrain/19/858551/353949.terrain new file mode 100644 index 000000000..88c387399 Binary files /dev/null and b/public/terrain/19/858551/353949.terrain differ diff --git a/public/terrain/19/858551/353950.terrain b/public/terrain/19/858551/353950.terrain new file mode 100644 index 000000000..93671e255 Binary files /dev/null and b/public/terrain/19/858551/353950.terrain differ diff --git a/public/terrain/19/858551/353951.terrain b/public/terrain/19/858551/353951.terrain new file mode 100644 index 000000000..815d01dab Binary files /dev/null and b/public/terrain/19/858551/353951.terrain differ diff --git a/public/terrain/19/858551/353952.terrain b/public/terrain/19/858551/353952.terrain new file mode 100644 index 000000000..ea9a44895 Binary files /dev/null and b/public/terrain/19/858551/353952.terrain differ diff --git a/public/terrain/19/858551/353953.terrain b/public/terrain/19/858551/353953.terrain new file mode 100644 index 000000000..52a466187 Binary files /dev/null and b/public/terrain/19/858551/353953.terrain differ diff --git a/public/terrain/19/858551/353954.terrain b/public/terrain/19/858551/353954.terrain new file mode 100644 index 000000000..43fe8bf7e Binary files /dev/null and b/public/terrain/19/858551/353954.terrain differ diff --git a/public/terrain/19/858551/353955.terrain b/public/terrain/19/858551/353955.terrain new file mode 100644 index 000000000..47dbb7e9a Binary files /dev/null and b/public/terrain/19/858551/353955.terrain differ diff --git a/public/terrain/19/858551/353956.terrain b/public/terrain/19/858551/353956.terrain new file mode 100644 index 000000000..15c4fb8de Binary files /dev/null and b/public/terrain/19/858551/353956.terrain differ diff --git a/public/terrain/19/858551/353957.terrain b/public/terrain/19/858551/353957.terrain new file mode 100644 index 000000000..cee04a335 Binary files /dev/null and b/public/terrain/19/858551/353957.terrain differ diff --git a/public/terrain/19/858551/353958.terrain b/public/terrain/19/858551/353958.terrain new file mode 100644 index 000000000..2a3b6c9af Binary files /dev/null and b/public/terrain/19/858551/353958.terrain differ diff --git a/public/terrain/19/858551/353959.terrain b/public/terrain/19/858551/353959.terrain new file mode 100644 index 000000000..b3f42a8c8 Binary files /dev/null and b/public/terrain/19/858551/353959.terrain differ diff --git a/public/terrain/19/858551/353960.terrain b/public/terrain/19/858551/353960.terrain new file mode 100644 index 000000000..86d5e2bae Binary files /dev/null and b/public/terrain/19/858551/353960.terrain differ diff --git a/public/terrain/19/858551/353961.terrain b/public/terrain/19/858551/353961.terrain new file mode 100644 index 000000000..b0ca5d71c Binary files /dev/null and b/public/terrain/19/858551/353961.terrain differ diff --git a/public/terrain/19/858551/353962.terrain b/public/terrain/19/858551/353962.terrain new file mode 100644 index 000000000..962e765f8 Binary files /dev/null and b/public/terrain/19/858551/353962.terrain differ diff --git a/public/terrain/19/858551/353963.terrain b/public/terrain/19/858551/353963.terrain new file mode 100644 index 000000000..b486eda62 Binary files /dev/null and b/public/terrain/19/858551/353963.terrain differ diff --git a/public/terrain/19/858551/353964.terrain b/public/terrain/19/858551/353964.terrain new file mode 100644 index 000000000..7844c24b7 Binary files /dev/null and b/public/terrain/19/858551/353964.terrain differ diff --git a/public/terrain/19/858551/353965.terrain b/public/terrain/19/858551/353965.terrain new file mode 100644 index 000000000..7edae2772 Binary files /dev/null and b/public/terrain/19/858551/353965.terrain differ diff --git a/public/terrain/19/858551/353966.terrain b/public/terrain/19/858551/353966.terrain new file mode 100644 index 000000000..8ad470bb4 Binary files /dev/null and b/public/terrain/19/858551/353966.terrain differ diff --git a/public/terrain/19/858551/353967.terrain b/public/terrain/19/858551/353967.terrain new file mode 100644 index 000000000..1facaa977 Binary files /dev/null and b/public/terrain/19/858551/353967.terrain differ diff --git a/public/terrain/19/858551/353968.terrain b/public/terrain/19/858551/353968.terrain new file mode 100644 index 000000000..4f1cbc258 Binary files /dev/null and b/public/terrain/19/858551/353968.terrain differ diff --git a/public/terrain/19/858551/353969.terrain b/public/terrain/19/858551/353969.terrain new file mode 100644 index 000000000..fb71f9d52 Binary files /dev/null and b/public/terrain/19/858551/353969.terrain differ diff --git a/public/terrain/19/858551/353970.terrain b/public/terrain/19/858551/353970.terrain new file mode 100644 index 000000000..ed96875bf Binary files /dev/null and b/public/terrain/19/858551/353970.terrain differ diff --git a/public/terrain/19/858551/353971.terrain b/public/terrain/19/858551/353971.terrain new file mode 100644 index 000000000..da9ff6ee9 Binary files /dev/null and b/public/terrain/19/858551/353971.terrain differ diff --git a/public/terrain/19/858551/353972.terrain b/public/terrain/19/858551/353972.terrain new file mode 100644 index 000000000..e067bec87 Binary files /dev/null and b/public/terrain/19/858551/353972.terrain differ diff --git a/public/terrain/19/858551/353973.terrain b/public/terrain/19/858551/353973.terrain new file mode 100644 index 000000000..5db57b477 Binary files /dev/null and b/public/terrain/19/858551/353973.terrain differ diff --git a/public/terrain/19/858551/353974.terrain b/public/terrain/19/858551/353974.terrain new file mode 100644 index 000000000..f36aad344 Binary files /dev/null and b/public/terrain/19/858551/353974.terrain differ diff --git a/public/terrain/19/858551/353975.terrain b/public/terrain/19/858551/353975.terrain new file mode 100644 index 000000000..7c3fae734 Binary files /dev/null and b/public/terrain/19/858551/353975.terrain differ diff --git a/public/terrain/19/858551/353976.terrain b/public/terrain/19/858551/353976.terrain new file mode 100644 index 000000000..90d9a0d83 Binary files /dev/null and b/public/terrain/19/858551/353976.terrain differ diff --git a/public/terrain/19/858551/353977.terrain b/public/terrain/19/858551/353977.terrain new file mode 100644 index 000000000..0477df502 Binary files /dev/null and b/public/terrain/19/858551/353977.terrain differ diff --git a/public/terrain/19/858551/353978.terrain b/public/terrain/19/858551/353978.terrain new file mode 100644 index 000000000..8bef68d94 Binary files /dev/null and b/public/terrain/19/858551/353978.terrain differ diff --git a/public/terrain/19/858551/353979.terrain b/public/terrain/19/858551/353979.terrain new file mode 100644 index 000000000..da0371d80 Binary files /dev/null and b/public/terrain/19/858551/353979.terrain differ diff --git a/public/terrain/19/858551/353980.terrain b/public/terrain/19/858551/353980.terrain new file mode 100644 index 000000000..2dcaf3915 Binary files /dev/null and b/public/terrain/19/858551/353980.terrain differ diff --git a/public/terrain/19/858551/353981.terrain b/public/terrain/19/858551/353981.terrain new file mode 100644 index 000000000..7c250c233 Binary files /dev/null and b/public/terrain/19/858551/353981.terrain differ diff --git a/public/terrain/19/858551/353982.terrain b/public/terrain/19/858551/353982.terrain new file mode 100644 index 000000000..000ed1615 Binary files /dev/null and b/public/terrain/19/858551/353982.terrain differ diff --git a/public/terrain/19/858551/353983.terrain b/public/terrain/19/858551/353983.terrain new file mode 100644 index 000000000..7f2108b3e Binary files /dev/null and b/public/terrain/19/858551/353983.terrain differ diff --git a/public/terrain/19/858551/353984.terrain b/public/terrain/19/858551/353984.terrain new file mode 100644 index 000000000..00d3ffaae Binary files /dev/null and b/public/terrain/19/858551/353984.terrain differ diff --git a/public/terrain/19/858551/353985.terrain b/public/terrain/19/858551/353985.terrain new file mode 100644 index 000000000..6202c4afc Binary files /dev/null and b/public/terrain/19/858551/353985.terrain differ diff --git a/public/terrain/19/858551/353986.terrain b/public/terrain/19/858551/353986.terrain new file mode 100644 index 000000000..fac577bfa Binary files /dev/null and b/public/terrain/19/858551/353986.terrain differ diff --git a/public/terrain/19/858551/353987.terrain b/public/terrain/19/858551/353987.terrain new file mode 100644 index 000000000..4b9d093cc Binary files /dev/null and b/public/terrain/19/858551/353987.terrain differ diff --git a/public/terrain/19/858551/353988.terrain b/public/terrain/19/858551/353988.terrain new file mode 100644 index 000000000..8e84a6b20 Binary files /dev/null and b/public/terrain/19/858551/353988.terrain differ diff --git a/public/terrain/19/858551/353989.terrain b/public/terrain/19/858551/353989.terrain new file mode 100644 index 000000000..f877f9fcd Binary files /dev/null and b/public/terrain/19/858551/353989.terrain differ diff --git a/public/terrain/19/858551/353990.terrain b/public/terrain/19/858551/353990.terrain new file mode 100644 index 000000000..c1952d9fc Binary files /dev/null and b/public/terrain/19/858551/353990.terrain differ diff --git a/public/terrain/19/858551/353991.terrain b/public/terrain/19/858551/353991.terrain new file mode 100644 index 000000000..9556a8be8 Binary files /dev/null and b/public/terrain/19/858551/353991.terrain differ diff --git a/public/terrain/19/858551/353992.terrain b/public/terrain/19/858551/353992.terrain new file mode 100644 index 000000000..715d296fc Binary files /dev/null and b/public/terrain/19/858551/353992.terrain differ diff --git a/public/terrain/19/858551/353993.terrain b/public/terrain/19/858551/353993.terrain new file mode 100644 index 000000000..ca91e6a05 Binary files /dev/null and b/public/terrain/19/858551/353993.terrain differ diff --git a/public/terrain/19/858551/353994.terrain b/public/terrain/19/858551/353994.terrain new file mode 100644 index 000000000..f386e7e2f Binary files /dev/null and b/public/terrain/19/858551/353994.terrain differ diff --git a/public/terrain/19/858551/353995.terrain b/public/terrain/19/858551/353995.terrain new file mode 100644 index 000000000..fea2977ca Binary files /dev/null and b/public/terrain/19/858551/353995.terrain differ diff --git a/public/terrain/19/858551/353996.terrain b/public/terrain/19/858551/353996.terrain new file mode 100644 index 000000000..930ac6b3a Binary files /dev/null and b/public/terrain/19/858551/353996.terrain differ diff --git a/public/terrain/19/858551/353997.terrain b/public/terrain/19/858551/353997.terrain new file mode 100644 index 000000000..d8c6d7e00 Binary files /dev/null and b/public/terrain/19/858551/353997.terrain differ diff --git a/public/terrain/19/858551/353998.terrain b/public/terrain/19/858551/353998.terrain new file mode 100644 index 000000000..ce84abb92 Binary files /dev/null and b/public/terrain/19/858551/353998.terrain differ diff --git a/public/terrain/19/858551/353999.terrain b/public/terrain/19/858551/353999.terrain new file mode 100644 index 000000000..0e12be820 Binary files /dev/null and b/public/terrain/19/858551/353999.terrain differ diff --git a/public/terrain/19/858551/354000.terrain b/public/terrain/19/858551/354000.terrain new file mode 100644 index 000000000..e2a29a0c5 Binary files /dev/null and b/public/terrain/19/858551/354000.terrain differ diff --git a/public/terrain/19/858551/354001.terrain b/public/terrain/19/858551/354001.terrain new file mode 100644 index 000000000..fedd3d074 Binary files /dev/null and b/public/terrain/19/858551/354001.terrain differ diff --git a/public/terrain/19/858551/354002.terrain b/public/terrain/19/858551/354002.terrain new file mode 100644 index 000000000..182722ee7 Binary files /dev/null and b/public/terrain/19/858551/354002.terrain differ diff --git a/public/terrain/19/858551/354003.terrain b/public/terrain/19/858551/354003.terrain new file mode 100644 index 000000000..f241c9a93 Binary files /dev/null and b/public/terrain/19/858551/354003.terrain differ diff --git a/public/terrain/19/858551/354004.terrain b/public/terrain/19/858551/354004.terrain new file mode 100644 index 000000000..5b8f7316a Binary files /dev/null and b/public/terrain/19/858551/354004.terrain differ diff --git a/public/terrain/19/858551/354005.terrain b/public/terrain/19/858551/354005.terrain new file mode 100644 index 000000000..ab3a4e8ac Binary files /dev/null and b/public/terrain/19/858551/354005.terrain differ diff --git a/public/terrain/19/858551/354006.terrain b/public/terrain/19/858551/354006.terrain new file mode 100644 index 000000000..12d5c31ee Binary files /dev/null and b/public/terrain/19/858551/354006.terrain differ diff --git a/public/terrain/19/858551/354007.terrain b/public/terrain/19/858551/354007.terrain new file mode 100644 index 000000000..859559c5e Binary files /dev/null and b/public/terrain/19/858551/354007.terrain differ diff --git a/public/terrain/19/858551/354008.terrain b/public/terrain/19/858551/354008.terrain new file mode 100644 index 000000000..fd875c714 Binary files /dev/null and b/public/terrain/19/858551/354008.terrain differ diff --git a/public/terrain/19/858551/354009.terrain b/public/terrain/19/858551/354009.terrain new file mode 100644 index 000000000..efc7e2fc6 Binary files /dev/null and b/public/terrain/19/858551/354009.terrain differ diff --git a/public/terrain/19/858551/354010.terrain b/public/terrain/19/858551/354010.terrain new file mode 100644 index 000000000..90e8728c6 Binary files /dev/null and b/public/terrain/19/858551/354010.terrain differ diff --git a/public/terrain/19/858551/354011.terrain b/public/terrain/19/858551/354011.terrain new file mode 100644 index 000000000..ed5b84092 Binary files /dev/null and b/public/terrain/19/858551/354011.terrain differ diff --git a/public/terrain/19/858551/354012.terrain b/public/terrain/19/858551/354012.terrain new file mode 100644 index 000000000..182e1826a Binary files /dev/null and b/public/terrain/19/858551/354012.terrain differ diff --git a/public/terrain/19/858551/354013.terrain b/public/terrain/19/858551/354013.terrain new file mode 100644 index 000000000..822482136 Binary files /dev/null and b/public/terrain/19/858551/354013.terrain differ diff --git a/public/terrain/19/858551/354014.terrain b/public/terrain/19/858551/354014.terrain new file mode 100644 index 000000000..57c265a49 Binary files /dev/null and b/public/terrain/19/858551/354014.terrain differ diff --git a/public/terrain/19/858551/354015.terrain b/public/terrain/19/858551/354015.terrain new file mode 100644 index 000000000..e66fb3677 Binary files /dev/null and b/public/terrain/19/858551/354015.terrain differ diff --git a/public/terrain/19/858551/354016.terrain b/public/terrain/19/858551/354016.terrain new file mode 100644 index 000000000..3543e76bd Binary files /dev/null and b/public/terrain/19/858551/354016.terrain differ diff --git a/public/terrain/19/858551/354017.terrain b/public/terrain/19/858551/354017.terrain new file mode 100644 index 000000000..4b2187c6d Binary files /dev/null and b/public/terrain/19/858551/354017.terrain differ diff --git a/public/terrain/19/858551/354018.terrain b/public/terrain/19/858551/354018.terrain new file mode 100644 index 000000000..dff990247 Binary files /dev/null and b/public/terrain/19/858551/354018.terrain differ diff --git a/public/terrain/19/858551/354019.terrain b/public/terrain/19/858551/354019.terrain new file mode 100644 index 000000000..b956019a5 Binary files /dev/null and b/public/terrain/19/858551/354019.terrain differ diff --git a/public/terrain/19/858551/354020.terrain b/public/terrain/19/858551/354020.terrain new file mode 100644 index 000000000..3d8fa3b35 Binary files /dev/null and b/public/terrain/19/858551/354020.terrain differ diff --git a/public/terrain/19/858551/354021.terrain b/public/terrain/19/858551/354021.terrain new file mode 100644 index 000000000..52d20f8a5 Binary files /dev/null and b/public/terrain/19/858551/354021.terrain differ diff --git a/public/terrain/19/858551/354022.terrain b/public/terrain/19/858551/354022.terrain new file mode 100644 index 000000000..e8e9e744d Binary files /dev/null and b/public/terrain/19/858551/354022.terrain differ diff --git a/public/terrain/19/858551/354023.terrain b/public/terrain/19/858551/354023.terrain new file mode 100644 index 000000000..b29ffc9f9 Binary files /dev/null and b/public/terrain/19/858551/354023.terrain differ diff --git a/public/terrain/19/858551/354024.terrain b/public/terrain/19/858551/354024.terrain new file mode 100644 index 000000000..cf8213e3e Binary files /dev/null and b/public/terrain/19/858551/354024.terrain differ diff --git a/public/terrain/19/858551/354025.terrain b/public/terrain/19/858551/354025.terrain new file mode 100644 index 000000000..94ed1cca0 Binary files /dev/null and b/public/terrain/19/858551/354025.terrain differ diff --git a/public/terrain/19/858551/354026.terrain b/public/terrain/19/858551/354026.terrain new file mode 100644 index 000000000..089952250 Binary files /dev/null and b/public/terrain/19/858551/354026.terrain differ diff --git a/public/terrain/19/858551/354027.terrain b/public/terrain/19/858551/354027.terrain new file mode 100644 index 000000000..1969d7294 Binary files /dev/null and b/public/terrain/19/858551/354027.terrain differ diff --git a/public/terrain/19/858551/354028.terrain b/public/terrain/19/858551/354028.terrain new file mode 100644 index 000000000..dd5489b8d Binary files /dev/null and b/public/terrain/19/858551/354028.terrain differ diff --git a/public/terrain/19/858551/354029.terrain b/public/terrain/19/858551/354029.terrain new file mode 100644 index 000000000..91a05dbd8 Binary files /dev/null and b/public/terrain/19/858551/354029.terrain differ diff --git a/public/terrain/19/858551/354030.terrain b/public/terrain/19/858551/354030.terrain new file mode 100644 index 000000000..3e8b76d40 Binary files /dev/null and b/public/terrain/19/858551/354030.terrain differ diff --git a/public/terrain/19/858551/354031.terrain b/public/terrain/19/858551/354031.terrain new file mode 100644 index 000000000..1b568640f Binary files /dev/null and b/public/terrain/19/858551/354031.terrain differ diff --git a/public/terrain/19/858551/354032.terrain b/public/terrain/19/858551/354032.terrain new file mode 100644 index 000000000..1d8d16532 Binary files /dev/null and b/public/terrain/19/858551/354032.terrain differ diff --git a/public/terrain/19/858551/354033.terrain b/public/terrain/19/858551/354033.terrain new file mode 100644 index 000000000..4dc80af13 Binary files /dev/null and b/public/terrain/19/858551/354033.terrain differ diff --git a/public/terrain/19/858551/354034.terrain b/public/terrain/19/858551/354034.terrain new file mode 100644 index 000000000..d94b4233c Binary files /dev/null and b/public/terrain/19/858551/354034.terrain differ diff --git a/public/terrain/19/858551/354035.terrain b/public/terrain/19/858551/354035.terrain new file mode 100644 index 000000000..ba9ad73ce Binary files /dev/null and b/public/terrain/19/858551/354035.terrain differ diff --git a/public/terrain/19/858551/354036.terrain b/public/terrain/19/858551/354036.terrain new file mode 100644 index 000000000..a4dd112a5 Binary files /dev/null and b/public/terrain/19/858551/354036.terrain differ diff --git a/public/terrain/19/858551/354037.terrain b/public/terrain/19/858551/354037.terrain new file mode 100644 index 000000000..533a430ec Binary files /dev/null and b/public/terrain/19/858551/354037.terrain differ diff --git a/public/terrain/19/858551/354038.terrain b/public/terrain/19/858551/354038.terrain new file mode 100644 index 000000000..18e4ba6a2 Binary files /dev/null and b/public/terrain/19/858551/354038.terrain differ diff --git a/public/terrain/19/858551/354039.terrain b/public/terrain/19/858551/354039.terrain new file mode 100644 index 000000000..8fa18f3e6 Binary files /dev/null and b/public/terrain/19/858551/354039.terrain differ diff --git a/public/terrain/19/858551/354040.terrain b/public/terrain/19/858551/354040.terrain new file mode 100644 index 000000000..698f1f0e9 Binary files /dev/null and b/public/terrain/19/858551/354040.terrain differ diff --git a/public/terrain/19/858551/354041.terrain b/public/terrain/19/858551/354041.terrain new file mode 100644 index 000000000..8eccec47e Binary files /dev/null and b/public/terrain/19/858551/354041.terrain differ diff --git a/public/terrain/19/858551/354042.terrain b/public/terrain/19/858551/354042.terrain new file mode 100644 index 000000000..e78028b5b Binary files /dev/null and b/public/terrain/19/858551/354042.terrain differ diff --git a/public/terrain/19/858551/354043.terrain b/public/terrain/19/858551/354043.terrain new file mode 100644 index 000000000..14d89bb15 Binary files /dev/null and b/public/terrain/19/858551/354043.terrain differ diff --git a/public/terrain/19/858551/354044.terrain b/public/terrain/19/858551/354044.terrain new file mode 100644 index 000000000..a97daa65f Binary files /dev/null and b/public/terrain/19/858551/354044.terrain differ diff --git a/public/terrain/19/858551/354045.terrain b/public/terrain/19/858551/354045.terrain new file mode 100644 index 000000000..2600ea2d1 Binary files /dev/null and b/public/terrain/19/858551/354045.terrain differ diff --git a/public/terrain/19/858551/354046.terrain b/public/terrain/19/858551/354046.terrain new file mode 100644 index 000000000..dbd7cf485 Binary files /dev/null and b/public/terrain/19/858551/354046.terrain differ diff --git a/public/terrain/19/858551/354047.terrain b/public/terrain/19/858551/354047.terrain new file mode 100644 index 000000000..0e6d91c12 Binary files /dev/null and b/public/terrain/19/858551/354047.terrain differ diff --git a/public/terrain/19/858551/354048.terrain b/public/terrain/19/858551/354048.terrain new file mode 100644 index 000000000..4fddf39f7 Binary files /dev/null and b/public/terrain/19/858551/354048.terrain differ diff --git a/public/terrain/19/858551/354049.terrain b/public/terrain/19/858551/354049.terrain new file mode 100644 index 000000000..32ab0cdcd Binary files /dev/null and b/public/terrain/19/858551/354049.terrain differ diff --git a/public/terrain/19/858551/354050.terrain b/public/terrain/19/858551/354050.terrain new file mode 100644 index 000000000..0c07b8581 Binary files /dev/null and b/public/terrain/19/858551/354050.terrain differ diff --git a/public/terrain/19/858551/354051.terrain b/public/terrain/19/858551/354051.terrain new file mode 100644 index 000000000..af19a77d5 Binary files /dev/null and b/public/terrain/19/858551/354051.terrain differ diff --git a/public/terrain/19/858551/354052.terrain b/public/terrain/19/858551/354052.terrain new file mode 100644 index 000000000..bbdae5dde Binary files /dev/null and b/public/terrain/19/858551/354052.terrain differ diff --git a/public/terrain/19/858551/354053.terrain b/public/terrain/19/858551/354053.terrain new file mode 100644 index 000000000..00459a66e Binary files /dev/null and b/public/terrain/19/858551/354053.terrain differ diff --git a/public/terrain/19/858551/354054.terrain b/public/terrain/19/858551/354054.terrain new file mode 100644 index 000000000..b6a971aad Binary files /dev/null and b/public/terrain/19/858551/354054.terrain differ diff --git a/public/terrain/19/858551/354055.terrain b/public/terrain/19/858551/354055.terrain new file mode 100644 index 000000000..84c29e177 Binary files /dev/null and b/public/terrain/19/858551/354055.terrain differ diff --git a/public/terrain/19/858551/354056.terrain b/public/terrain/19/858551/354056.terrain new file mode 100644 index 000000000..ce341c3e5 Binary files /dev/null and b/public/terrain/19/858551/354056.terrain differ diff --git a/public/terrain/19/858551/354057.terrain b/public/terrain/19/858551/354057.terrain new file mode 100644 index 000000000..39312288e Binary files /dev/null and b/public/terrain/19/858551/354057.terrain differ diff --git a/public/terrain/19/858551/354058.terrain b/public/terrain/19/858551/354058.terrain new file mode 100644 index 000000000..cfe4379d2 Binary files /dev/null and b/public/terrain/19/858551/354058.terrain differ diff --git a/public/terrain/19/858551/354059.terrain b/public/terrain/19/858551/354059.terrain new file mode 100644 index 000000000..f6f44a816 Binary files /dev/null and b/public/terrain/19/858551/354059.terrain differ diff --git a/public/terrain/19/858552/353743.terrain b/public/terrain/19/858552/353743.terrain new file mode 100644 index 000000000..4eb437d5d Binary files /dev/null and b/public/terrain/19/858552/353743.terrain differ diff --git a/public/terrain/19/858552/353744.terrain b/public/terrain/19/858552/353744.terrain new file mode 100644 index 000000000..b71e25afd Binary files /dev/null and b/public/terrain/19/858552/353744.terrain differ diff --git a/public/terrain/19/858552/353745.terrain b/public/terrain/19/858552/353745.terrain new file mode 100644 index 000000000..b41ff4834 Binary files /dev/null and b/public/terrain/19/858552/353745.terrain differ diff --git a/public/terrain/19/858552/353746.terrain b/public/terrain/19/858552/353746.terrain new file mode 100644 index 000000000..be682396a Binary files /dev/null and b/public/terrain/19/858552/353746.terrain differ diff --git a/public/terrain/19/858552/353747.terrain b/public/terrain/19/858552/353747.terrain new file mode 100644 index 000000000..53d026b97 Binary files /dev/null and b/public/terrain/19/858552/353747.terrain differ diff --git a/public/terrain/19/858552/353748.terrain b/public/terrain/19/858552/353748.terrain new file mode 100644 index 000000000..c5d2adc19 Binary files /dev/null and b/public/terrain/19/858552/353748.terrain differ diff --git a/public/terrain/19/858552/353749.terrain b/public/terrain/19/858552/353749.terrain new file mode 100644 index 000000000..d1fef18f7 Binary files /dev/null and b/public/terrain/19/858552/353749.terrain differ diff --git a/public/terrain/19/858552/353750.terrain b/public/terrain/19/858552/353750.terrain new file mode 100644 index 000000000..4b476db9d Binary files /dev/null and b/public/terrain/19/858552/353750.terrain differ diff --git a/public/terrain/19/858552/353751.terrain b/public/terrain/19/858552/353751.terrain new file mode 100644 index 000000000..27236af67 Binary files /dev/null and b/public/terrain/19/858552/353751.terrain differ diff --git a/public/terrain/19/858552/353752.terrain b/public/terrain/19/858552/353752.terrain new file mode 100644 index 000000000..75628ebe8 Binary files /dev/null and b/public/terrain/19/858552/353752.terrain differ diff --git a/public/terrain/19/858552/353753.terrain b/public/terrain/19/858552/353753.terrain new file mode 100644 index 000000000..7f65f3efb Binary files /dev/null and b/public/terrain/19/858552/353753.terrain differ diff --git a/public/terrain/19/858552/353754.terrain b/public/terrain/19/858552/353754.terrain new file mode 100644 index 000000000..df3ecaf84 Binary files /dev/null and b/public/terrain/19/858552/353754.terrain differ diff --git a/public/terrain/19/858552/353755.terrain b/public/terrain/19/858552/353755.terrain new file mode 100644 index 000000000..235a88dd4 Binary files /dev/null and b/public/terrain/19/858552/353755.terrain differ diff --git a/public/terrain/19/858552/353756.terrain b/public/terrain/19/858552/353756.terrain new file mode 100644 index 000000000..dd709cf3e Binary files /dev/null and b/public/terrain/19/858552/353756.terrain differ diff --git a/public/terrain/19/858552/353757.terrain b/public/terrain/19/858552/353757.terrain new file mode 100644 index 000000000..287703808 Binary files /dev/null and b/public/terrain/19/858552/353757.terrain differ diff --git a/public/terrain/19/858552/353758.terrain b/public/terrain/19/858552/353758.terrain new file mode 100644 index 000000000..269b17be0 Binary files /dev/null and b/public/terrain/19/858552/353758.terrain differ diff --git a/public/terrain/19/858552/353759.terrain b/public/terrain/19/858552/353759.terrain new file mode 100644 index 000000000..245679419 Binary files /dev/null and b/public/terrain/19/858552/353759.terrain differ diff --git a/public/terrain/19/858552/353760.terrain b/public/terrain/19/858552/353760.terrain new file mode 100644 index 000000000..a74410a0f Binary files /dev/null and b/public/terrain/19/858552/353760.terrain differ diff --git a/public/terrain/19/858552/353761.terrain b/public/terrain/19/858552/353761.terrain new file mode 100644 index 000000000..f375d57fc Binary files /dev/null and b/public/terrain/19/858552/353761.terrain differ diff --git a/public/terrain/19/858552/353762.terrain b/public/terrain/19/858552/353762.terrain new file mode 100644 index 000000000..a03050b25 Binary files /dev/null and b/public/terrain/19/858552/353762.terrain differ diff --git a/public/terrain/19/858552/353763.terrain b/public/terrain/19/858552/353763.terrain new file mode 100644 index 000000000..b40ea790f Binary files /dev/null and b/public/terrain/19/858552/353763.terrain differ diff --git a/public/terrain/19/858552/353764.terrain b/public/terrain/19/858552/353764.terrain new file mode 100644 index 000000000..32142df4b Binary files /dev/null and b/public/terrain/19/858552/353764.terrain differ diff --git a/public/terrain/19/858552/353765.terrain b/public/terrain/19/858552/353765.terrain new file mode 100644 index 000000000..8b641d060 Binary files /dev/null and b/public/terrain/19/858552/353765.terrain differ diff --git a/public/terrain/19/858552/353766.terrain b/public/terrain/19/858552/353766.terrain new file mode 100644 index 000000000..e4a4c0600 Binary files /dev/null and b/public/terrain/19/858552/353766.terrain differ diff --git a/public/terrain/19/858552/353767.terrain b/public/terrain/19/858552/353767.terrain new file mode 100644 index 000000000..b13fe9cda Binary files /dev/null and b/public/terrain/19/858552/353767.terrain differ diff --git a/public/terrain/19/858552/353768.terrain b/public/terrain/19/858552/353768.terrain new file mode 100644 index 000000000..21a454409 Binary files /dev/null and b/public/terrain/19/858552/353768.terrain differ diff --git a/public/terrain/19/858552/353769.terrain b/public/terrain/19/858552/353769.terrain new file mode 100644 index 000000000..1ba2b297b Binary files /dev/null and b/public/terrain/19/858552/353769.terrain differ diff --git a/public/terrain/19/858552/353770.terrain b/public/terrain/19/858552/353770.terrain new file mode 100644 index 000000000..a0a1e64cf Binary files /dev/null and b/public/terrain/19/858552/353770.terrain differ diff --git a/public/terrain/19/858552/353771.terrain b/public/terrain/19/858552/353771.terrain new file mode 100644 index 000000000..672944190 Binary files /dev/null and b/public/terrain/19/858552/353771.terrain differ diff --git a/public/terrain/19/858552/353772.terrain b/public/terrain/19/858552/353772.terrain new file mode 100644 index 000000000..a0c60b7a0 Binary files /dev/null and b/public/terrain/19/858552/353772.terrain differ diff --git a/public/terrain/19/858552/353773.terrain b/public/terrain/19/858552/353773.terrain new file mode 100644 index 000000000..f5a1fe9fb Binary files /dev/null and b/public/terrain/19/858552/353773.terrain differ diff --git a/public/terrain/19/858552/353774.terrain b/public/terrain/19/858552/353774.terrain new file mode 100644 index 000000000..80a8064a4 Binary files /dev/null and b/public/terrain/19/858552/353774.terrain differ diff --git a/public/terrain/19/858552/353775.terrain b/public/terrain/19/858552/353775.terrain new file mode 100644 index 000000000..70d57ec4e Binary files /dev/null and b/public/terrain/19/858552/353775.terrain differ diff --git a/public/terrain/19/858552/353776.terrain b/public/terrain/19/858552/353776.terrain new file mode 100644 index 000000000..c176f61de Binary files /dev/null and b/public/terrain/19/858552/353776.terrain differ diff --git a/public/terrain/19/858552/353777.terrain b/public/terrain/19/858552/353777.terrain new file mode 100644 index 000000000..218312086 Binary files /dev/null and b/public/terrain/19/858552/353777.terrain differ diff --git a/public/terrain/19/858552/353778.terrain b/public/terrain/19/858552/353778.terrain new file mode 100644 index 000000000..6ae28e3bf Binary files /dev/null and b/public/terrain/19/858552/353778.terrain differ diff --git a/public/terrain/19/858552/353779.terrain b/public/terrain/19/858552/353779.terrain new file mode 100644 index 000000000..04c9ec077 Binary files /dev/null and b/public/terrain/19/858552/353779.terrain differ diff --git a/public/terrain/19/858552/353780.terrain b/public/terrain/19/858552/353780.terrain new file mode 100644 index 000000000..791126796 Binary files /dev/null and b/public/terrain/19/858552/353780.terrain differ diff --git a/public/terrain/19/858552/353781.terrain b/public/terrain/19/858552/353781.terrain new file mode 100644 index 000000000..271c60d6d Binary files /dev/null and b/public/terrain/19/858552/353781.terrain differ diff --git a/public/terrain/19/858552/353782.terrain b/public/terrain/19/858552/353782.terrain new file mode 100644 index 000000000..f1f6ffaea Binary files /dev/null and b/public/terrain/19/858552/353782.terrain differ diff --git a/public/terrain/19/858552/353783.terrain b/public/terrain/19/858552/353783.terrain new file mode 100644 index 000000000..42dbb9038 Binary files /dev/null and b/public/terrain/19/858552/353783.terrain differ diff --git a/public/terrain/19/858552/353784.terrain b/public/terrain/19/858552/353784.terrain new file mode 100644 index 000000000..d6ad3f686 Binary files /dev/null and b/public/terrain/19/858552/353784.terrain differ diff --git a/public/terrain/19/858552/353785.terrain b/public/terrain/19/858552/353785.terrain new file mode 100644 index 000000000..9300bbc1c Binary files /dev/null and b/public/terrain/19/858552/353785.terrain differ diff --git a/public/terrain/19/858552/353786.terrain b/public/terrain/19/858552/353786.terrain new file mode 100644 index 000000000..e14c4dcc8 Binary files /dev/null and b/public/terrain/19/858552/353786.terrain differ diff --git a/public/terrain/19/858552/353787.terrain b/public/terrain/19/858552/353787.terrain new file mode 100644 index 000000000..d22aab599 Binary files /dev/null and b/public/terrain/19/858552/353787.terrain differ diff --git a/public/terrain/19/858552/353788.terrain b/public/terrain/19/858552/353788.terrain new file mode 100644 index 000000000..1f1ff1cdd Binary files /dev/null and b/public/terrain/19/858552/353788.terrain differ diff --git a/public/terrain/19/858552/353789.terrain b/public/terrain/19/858552/353789.terrain new file mode 100644 index 000000000..ffbdcc2e6 Binary files /dev/null and b/public/terrain/19/858552/353789.terrain differ diff --git a/public/terrain/19/858552/353790.terrain b/public/terrain/19/858552/353790.terrain new file mode 100644 index 000000000..35759ea36 Binary files /dev/null and b/public/terrain/19/858552/353790.terrain differ diff --git a/public/terrain/19/858552/353791.terrain b/public/terrain/19/858552/353791.terrain new file mode 100644 index 000000000..80673c6f9 Binary files /dev/null and b/public/terrain/19/858552/353791.terrain differ diff --git a/public/terrain/19/858552/353792.terrain b/public/terrain/19/858552/353792.terrain new file mode 100644 index 000000000..873befbd6 Binary files /dev/null and b/public/terrain/19/858552/353792.terrain differ diff --git a/public/terrain/19/858552/353793.terrain b/public/terrain/19/858552/353793.terrain new file mode 100644 index 000000000..e96a5b3f0 Binary files /dev/null and b/public/terrain/19/858552/353793.terrain differ diff --git a/public/terrain/19/858552/353794.terrain b/public/terrain/19/858552/353794.terrain new file mode 100644 index 000000000..2b34842f7 Binary files /dev/null and b/public/terrain/19/858552/353794.terrain differ diff --git a/public/terrain/19/858552/353795.terrain b/public/terrain/19/858552/353795.terrain new file mode 100644 index 000000000..2219ba2f1 Binary files /dev/null and b/public/terrain/19/858552/353795.terrain differ diff --git a/public/terrain/19/858552/353796.terrain b/public/terrain/19/858552/353796.terrain new file mode 100644 index 000000000..137563298 Binary files /dev/null and b/public/terrain/19/858552/353796.terrain differ diff --git a/public/terrain/19/858552/353797.terrain b/public/terrain/19/858552/353797.terrain new file mode 100644 index 000000000..710642792 Binary files /dev/null and b/public/terrain/19/858552/353797.terrain differ diff --git a/public/terrain/19/858552/353798.terrain b/public/terrain/19/858552/353798.terrain new file mode 100644 index 000000000..d76403d43 Binary files /dev/null and b/public/terrain/19/858552/353798.terrain differ diff --git a/public/terrain/19/858552/353799.terrain b/public/terrain/19/858552/353799.terrain new file mode 100644 index 000000000..f50928b89 Binary files /dev/null and b/public/terrain/19/858552/353799.terrain differ diff --git a/public/terrain/19/858552/353800.terrain b/public/terrain/19/858552/353800.terrain new file mode 100644 index 000000000..8af0fef30 Binary files /dev/null and b/public/terrain/19/858552/353800.terrain differ diff --git a/public/terrain/19/858552/353801.terrain b/public/terrain/19/858552/353801.terrain new file mode 100644 index 000000000..689f8c98d Binary files /dev/null and b/public/terrain/19/858552/353801.terrain differ diff --git a/public/terrain/19/858552/353802.terrain b/public/terrain/19/858552/353802.terrain new file mode 100644 index 000000000..b1e935d95 Binary files /dev/null and b/public/terrain/19/858552/353802.terrain differ diff --git a/public/terrain/19/858552/353803.terrain b/public/terrain/19/858552/353803.terrain new file mode 100644 index 000000000..665b9b3bb Binary files /dev/null and b/public/terrain/19/858552/353803.terrain differ diff --git a/public/terrain/19/858552/353804.terrain b/public/terrain/19/858552/353804.terrain new file mode 100644 index 000000000..33726eaf7 Binary files /dev/null and b/public/terrain/19/858552/353804.terrain differ diff --git a/public/terrain/19/858552/353805.terrain b/public/terrain/19/858552/353805.terrain new file mode 100644 index 000000000..7bf7ead1e Binary files /dev/null and b/public/terrain/19/858552/353805.terrain differ diff --git a/public/terrain/19/858552/353806.terrain b/public/terrain/19/858552/353806.terrain new file mode 100644 index 000000000..5790b1677 Binary files /dev/null and b/public/terrain/19/858552/353806.terrain differ diff --git a/public/terrain/19/858552/353807.terrain b/public/terrain/19/858552/353807.terrain new file mode 100644 index 000000000..efe5195ec Binary files /dev/null and b/public/terrain/19/858552/353807.terrain differ diff --git a/public/terrain/19/858552/353808.terrain b/public/terrain/19/858552/353808.terrain new file mode 100644 index 000000000..4065d44b0 Binary files /dev/null and b/public/terrain/19/858552/353808.terrain differ diff --git a/public/terrain/19/858552/353809.terrain b/public/terrain/19/858552/353809.terrain new file mode 100644 index 000000000..57ff430b8 Binary files /dev/null and b/public/terrain/19/858552/353809.terrain differ diff --git a/public/terrain/19/858552/353810.terrain b/public/terrain/19/858552/353810.terrain new file mode 100644 index 000000000..a7ae305a1 Binary files /dev/null and b/public/terrain/19/858552/353810.terrain differ diff --git a/public/terrain/19/858552/353811.terrain b/public/terrain/19/858552/353811.terrain new file mode 100644 index 000000000..19e1c0266 Binary files /dev/null and b/public/terrain/19/858552/353811.terrain differ diff --git a/public/terrain/19/858552/353812.terrain b/public/terrain/19/858552/353812.terrain new file mode 100644 index 000000000..e72788c87 Binary files /dev/null and b/public/terrain/19/858552/353812.terrain differ diff --git a/public/terrain/19/858552/353813.terrain b/public/terrain/19/858552/353813.terrain new file mode 100644 index 000000000..1f69b8cae Binary files /dev/null and b/public/terrain/19/858552/353813.terrain differ diff --git a/public/terrain/19/858552/353814.terrain b/public/terrain/19/858552/353814.terrain new file mode 100644 index 000000000..8938f8ab3 Binary files /dev/null and b/public/terrain/19/858552/353814.terrain differ diff --git a/public/terrain/19/858552/353815.terrain b/public/terrain/19/858552/353815.terrain new file mode 100644 index 000000000..787141e43 Binary files /dev/null and b/public/terrain/19/858552/353815.terrain differ diff --git a/public/terrain/19/858552/353816.terrain b/public/terrain/19/858552/353816.terrain new file mode 100644 index 000000000..5ee667b7e Binary files /dev/null and b/public/terrain/19/858552/353816.terrain differ diff --git a/public/terrain/19/858552/353817.terrain b/public/terrain/19/858552/353817.terrain new file mode 100644 index 000000000..36c12ae58 Binary files /dev/null and b/public/terrain/19/858552/353817.terrain differ diff --git a/public/terrain/19/858552/353818.terrain b/public/terrain/19/858552/353818.terrain new file mode 100644 index 000000000..014eab680 Binary files /dev/null and b/public/terrain/19/858552/353818.terrain differ diff --git a/public/terrain/19/858552/353819.terrain b/public/terrain/19/858552/353819.terrain new file mode 100644 index 000000000..775377471 Binary files /dev/null and b/public/terrain/19/858552/353819.terrain differ diff --git a/public/terrain/19/858552/353820.terrain b/public/terrain/19/858552/353820.terrain new file mode 100644 index 000000000..84acacdd9 Binary files /dev/null and b/public/terrain/19/858552/353820.terrain differ diff --git a/public/terrain/19/858552/353821.terrain b/public/terrain/19/858552/353821.terrain new file mode 100644 index 000000000..6334bb0a1 Binary files /dev/null and b/public/terrain/19/858552/353821.terrain differ diff --git a/public/terrain/19/858552/353822.terrain b/public/terrain/19/858552/353822.terrain new file mode 100644 index 000000000..ba168d786 Binary files /dev/null and b/public/terrain/19/858552/353822.terrain differ diff --git a/public/terrain/19/858552/353823.terrain b/public/terrain/19/858552/353823.terrain new file mode 100644 index 000000000..5e954e093 Binary files /dev/null and b/public/terrain/19/858552/353823.terrain differ diff --git a/public/terrain/19/858552/353824.terrain b/public/terrain/19/858552/353824.terrain new file mode 100644 index 000000000..9b0de2feb Binary files /dev/null and b/public/terrain/19/858552/353824.terrain differ diff --git a/public/terrain/19/858552/353825.terrain b/public/terrain/19/858552/353825.terrain new file mode 100644 index 000000000..5ce5f50e2 Binary files /dev/null and b/public/terrain/19/858552/353825.terrain differ diff --git a/public/terrain/19/858552/353826.terrain b/public/terrain/19/858552/353826.terrain new file mode 100644 index 000000000..d018f116c Binary files /dev/null and b/public/terrain/19/858552/353826.terrain differ diff --git a/public/terrain/19/858552/353827.terrain b/public/terrain/19/858552/353827.terrain new file mode 100644 index 000000000..e4461d4e0 Binary files /dev/null and b/public/terrain/19/858552/353827.terrain differ diff --git a/public/terrain/19/858552/353828.terrain b/public/terrain/19/858552/353828.terrain new file mode 100644 index 000000000..25d1b9630 Binary files /dev/null and b/public/terrain/19/858552/353828.terrain differ diff --git a/public/terrain/19/858552/353829.terrain b/public/terrain/19/858552/353829.terrain new file mode 100644 index 000000000..e228dc86c Binary files /dev/null and b/public/terrain/19/858552/353829.terrain differ diff --git a/public/terrain/19/858552/353830.terrain b/public/terrain/19/858552/353830.terrain new file mode 100644 index 000000000..c31ced678 Binary files /dev/null and b/public/terrain/19/858552/353830.terrain differ diff --git a/public/terrain/19/858552/353831.terrain b/public/terrain/19/858552/353831.terrain new file mode 100644 index 000000000..dd65f6e7e Binary files /dev/null and b/public/terrain/19/858552/353831.terrain differ diff --git a/public/terrain/19/858552/353832.terrain b/public/terrain/19/858552/353832.terrain new file mode 100644 index 000000000..6375dc5d5 Binary files /dev/null and b/public/terrain/19/858552/353832.terrain differ diff --git a/public/terrain/19/858552/353833.terrain b/public/terrain/19/858552/353833.terrain new file mode 100644 index 000000000..934f05713 Binary files /dev/null and b/public/terrain/19/858552/353833.terrain differ diff --git a/public/terrain/19/858552/353834.terrain b/public/terrain/19/858552/353834.terrain new file mode 100644 index 000000000..31147656d Binary files /dev/null and b/public/terrain/19/858552/353834.terrain differ diff --git a/public/terrain/19/858552/353835.terrain b/public/terrain/19/858552/353835.terrain new file mode 100644 index 000000000..3fb3b99da Binary files /dev/null and b/public/terrain/19/858552/353835.terrain differ diff --git a/public/terrain/19/858552/353836.terrain b/public/terrain/19/858552/353836.terrain new file mode 100644 index 000000000..cf36b383d Binary files /dev/null and b/public/terrain/19/858552/353836.terrain differ diff --git a/public/terrain/19/858552/353837.terrain b/public/terrain/19/858552/353837.terrain new file mode 100644 index 000000000..1cb7bd31c Binary files /dev/null and b/public/terrain/19/858552/353837.terrain differ diff --git a/public/terrain/19/858552/353838.terrain b/public/terrain/19/858552/353838.terrain new file mode 100644 index 000000000..ade47d8fd Binary files /dev/null and b/public/terrain/19/858552/353838.terrain differ diff --git a/public/terrain/19/858552/353839.terrain b/public/terrain/19/858552/353839.terrain new file mode 100644 index 000000000..cbfeb8543 Binary files /dev/null and b/public/terrain/19/858552/353839.terrain differ diff --git a/public/terrain/19/858552/353840.terrain b/public/terrain/19/858552/353840.terrain new file mode 100644 index 000000000..8d5c2ad1d Binary files /dev/null and b/public/terrain/19/858552/353840.terrain differ diff --git a/public/terrain/19/858552/353841.terrain b/public/terrain/19/858552/353841.terrain new file mode 100644 index 000000000..e6289a8c1 Binary files /dev/null and b/public/terrain/19/858552/353841.terrain differ diff --git a/public/terrain/19/858552/353842.terrain b/public/terrain/19/858552/353842.terrain new file mode 100644 index 000000000..988fccd43 Binary files /dev/null and b/public/terrain/19/858552/353842.terrain differ diff --git a/public/terrain/19/858552/353843.terrain b/public/terrain/19/858552/353843.terrain new file mode 100644 index 000000000..8fdcbcbd3 Binary files /dev/null and b/public/terrain/19/858552/353843.terrain differ diff --git a/public/terrain/19/858552/353844.terrain b/public/terrain/19/858552/353844.terrain new file mode 100644 index 000000000..276ec12d3 Binary files /dev/null and b/public/terrain/19/858552/353844.terrain differ diff --git a/public/terrain/19/858552/353845.terrain b/public/terrain/19/858552/353845.terrain new file mode 100644 index 000000000..3035cba25 Binary files /dev/null and b/public/terrain/19/858552/353845.terrain differ diff --git a/public/terrain/19/858552/353846.terrain b/public/terrain/19/858552/353846.terrain new file mode 100644 index 000000000..a94839dac Binary files /dev/null and b/public/terrain/19/858552/353846.terrain differ diff --git a/public/terrain/19/858552/353847.terrain b/public/terrain/19/858552/353847.terrain new file mode 100644 index 000000000..f1431b7b7 Binary files /dev/null and b/public/terrain/19/858552/353847.terrain differ diff --git a/public/terrain/19/858552/353848.terrain b/public/terrain/19/858552/353848.terrain new file mode 100644 index 000000000..6c26df790 Binary files /dev/null and b/public/terrain/19/858552/353848.terrain differ diff --git a/public/terrain/19/858552/353849.terrain b/public/terrain/19/858552/353849.terrain new file mode 100644 index 000000000..880745e29 Binary files /dev/null and b/public/terrain/19/858552/353849.terrain differ diff --git a/public/terrain/19/858552/353850.terrain b/public/terrain/19/858552/353850.terrain new file mode 100644 index 000000000..525422795 Binary files /dev/null and b/public/terrain/19/858552/353850.terrain differ diff --git a/public/terrain/19/858552/353851.terrain b/public/terrain/19/858552/353851.terrain new file mode 100644 index 000000000..d8443f2e7 Binary files /dev/null and b/public/terrain/19/858552/353851.terrain differ diff --git a/public/terrain/19/858552/353852.terrain b/public/terrain/19/858552/353852.terrain new file mode 100644 index 000000000..a56fc8bf4 Binary files /dev/null and b/public/terrain/19/858552/353852.terrain differ diff --git a/public/terrain/19/858552/353853.terrain b/public/terrain/19/858552/353853.terrain new file mode 100644 index 000000000..0fa03ce47 Binary files /dev/null and b/public/terrain/19/858552/353853.terrain differ diff --git a/public/terrain/19/858552/353854.terrain b/public/terrain/19/858552/353854.terrain new file mode 100644 index 000000000..10f953131 Binary files /dev/null and b/public/terrain/19/858552/353854.terrain differ diff --git a/public/terrain/19/858552/353855.terrain b/public/terrain/19/858552/353855.terrain new file mode 100644 index 000000000..321d0178c Binary files /dev/null and b/public/terrain/19/858552/353855.terrain differ diff --git a/public/terrain/19/858552/353856.terrain b/public/terrain/19/858552/353856.terrain new file mode 100644 index 000000000..ab12b274b Binary files /dev/null and b/public/terrain/19/858552/353856.terrain differ diff --git a/public/terrain/19/858552/353857.terrain b/public/terrain/19/858552/353857.terrain new file mode 100644 index 000000000..f845aa3ff Binary files /dev/null and b/public/terrain/19/858552/353857.terrain differ diff --git a/public/terrain/19/858552/353858.terrain b/public/terrain/19/858552/353858.terrain new file mode 100644 index 000000000..c3d300e1c Binary files /dev/null and b/public/terrain/19/858552/353858.terrain differ diff --git a/public/terrain/19/858552/353859.terrain b/public/terrain/19/858552/353859.terrain new file mode 100644 index 000000000..83849d16a Binary files /dev/null and b/public/terrain/19/858552/353859.terrain differ diff --git a/public/terrain/19/858552/353860.terrain b/public/terrain/19/858552/353860.terrain new file mode 100644 index 000000000..7797f1b9e Binary files /dev/null and b/public/terrain/19/858552/353860.terrain differ diff --git a/public/terrain/19/858552/353861.terrain b/public/terrain/19/858552/353861.terrain new file mode 100644 index 000000000..7eea7e767 Binary files /dev/null and b/public/terrain/19/858552/353861.terrain differ diff --git a/public/terrain/19/858552/353862.terrain b/public/terrain/19/858552/353862.terrain new file mode 100644 index 000000000..fada16849 Binary files /dev/null and b/public/terrain/19/858552/353862.terrain differ diff --git a/public/terrain/19/858552/353863.terrain b/public/terrain/19/858552/353863.terrain new file mode 100644 index 000000000..b1ec14473 Binary files /dev/null and b/public/terrain/19/858552/353863.terrain differ diff --git a/public/terrain/19/858552/353864.terrain b/public/terrain/19/858552/353864.terrain new file mode 100644 index 000000000..e3eb0f2e4 Binary files /dev/null and b/public/terrain/19/858552/353864.terrain differ diff --git a/public/terrain/19/858552/353865.terrain b/public/terrain/19/858552/353865.terrain new file mode 100644 index 000000000..b351b1efe Binary files /dev/null and b/public/terrain/19/858552/353865.terrain differ diff --git a/public/terrain/19/858552/353866.terrain b/public/terrain/19/858552/353866.terrain new file mode 100644 index 000000000..0fa13ac47 Binary files /dev/null and b/public/terrain/19/858552/353866.terrain differ diff --git a/public/terrain/19/858552/353867.terrain b/public/terrain/19/858552/353867.terrain new file mode 100644 index 000000000..816452ef5 Binary files /dev/null and b/public/terrain/19/858552/353867.terrain differ diff --git a/public/terrain/19/858552/353868.terrain b/public/terrain/19/858552/353868.terrain new file mode 100644 index 000000000..7bbb0e9b1 Binary files /dev/null and b/public/terrain/19/858552/353868.terrain differ diff --git a/public/terrain/19/858552/353869.terrain b/public/terrain/19/858552/353869.terrain new file mode 100644 index 000000000..6a69896b4 Binary files /dev/null and b/public/terrain/19/858552/353869.terrain differ diff --git a/public/terrain/19/858552/353870.terrain b/public/terrain/19/858552/353870.terrain new file mode 100644 index 000000000..12ea265f6 Binary files /dev/null and b/public/terrain/19/858552/353870.terrain differ diff --git a/public/terrain/19/858552/353871.terrain b/public/terrain/19/858552/353871.terrain new file mode 100644 index 000000000..9c76f0f1f Binary files /dev/null and b/public/terrain/19/858552/353871.terrain differ diff --git a/public/terrain/19/858552/353872.terrain b/public/terrain/19/858552/353872.terrain new file mode 100644 index 000000000..9c30150bc Binary files /dev/null and b/public/terrain/19/858552/353872.terrain differ diff --git a/public/terrain/19/858552/353873.terrain b/public/terrain/19/858552/353873.terrain new file mode 100644 index 000000000..0596050d0 Binary files /dev/null and b/public/terrain/19/858552/353873.terrain differ diff --git a/public/terrain/19/858552/353874.terrain b/public/terrain/19/858552/353874.terrain new file mode 100644 index 000000000..ac051a34f Binary files /dev/null and b/public/terrain/19/858552/353874.terrain differ diff --git a/public/terrain/19/858552/353875.terrain b/public/terrain/19/858552/353875.terrain new file mode 100644 index 000000000..2a3a3815c Binary files /dev/null and b/public/terrain/19/858552/353875.terrain differ diff --git a/public/terrain/19/858552/353876.terrain b/public/terrain/19/858552/353876.terrain new file mode 100644 index 000000000..52a3f9240 Binary files /dev/null and b/public/terrain/19/858552/353876.terrain differ diff --git a/public/terrain/19/858552/353877.terrain b/public/terrain/19/858552/353877.terrain new file mode 100644 index 000000000..137ee09e9 Binary files /dev/null and b/public/terrain/19/858552/353877.terrain differ diff --git a/public/terrain/19/858552/353878.terrain b/public/terrain/19/858552/353878.terrain new file mode 100644 index 000000000..93c80f4b3 Binary files /dev/null and b/public/terrain/19/858552/353878.terrain differ diff --git a/public/terrain/19/858552/353879.terrain b/public/terrain/19/858552/353879.terrain new file mode 100644 index 000000000..e16f11b92 Binary files /dev/null and b/public/terrain/19/858552/353879.terrain differ diff --git a/public/terrain/19/858552/353880.terrain b/public/terrain/19/858552/353880.terrain new file mode 100644 index 000000000..bdebdfd1d Binary files /dev/null and b/public/terrain/19/858552/353880.terrain differ diff --git a/public/terrain/19/858552/353881.terrain b/public/terrain/19/858552/353881.terrain new file mode 100644 index 000000000..82f9ab72d Binary files /dev/null and b/public/terrain/19/858552/353881.terrain differ diff --git a/public/terrain/19/858552/353882.terrain b/public/terrain/19/858552/353882.terrain new file mode 100644 index 000000000..860b14c02 Binary files /dev/null and b/public/terrain/19/858552/353882.terrain differ diff --git a/public/terrain/19/858552/353883.terrain b/public/terrain/19/858552/353883.terrain new file mode 100644 index 000000000..b5f06f593 Binary files /dev/null and b/public/terrain/19/858552/353883.terrain differ diff --git a/public/terrain/19/858552/353884.terrain b/public/terrain/19/858552/353884.terrain new file mode 100644 index 000000000..230b0de05 Binary files /dev/null and b/public/terrain/19/858552/353884.terrain differ diff --git a/public/terrain/19/858552/353885.terrain b/public/terrain/19/858552/353885.terrain new file mode 100644 index 000000000..a35afc2e7 Binary files /dev/null and b/public/terrain/19/858552/353885.terrain differ diff --git a/public/terrain/19/858552/353886.terrain b/public/terrain/19/858552/353886.terrain new file mode 100644 index 000000000..97936fc6d Binary files /dev/null and b/public/terrain/19/858552/353886.terrain differ diff --git a/public/terrain/19/858552/353887.terrain b/public/terrain/19/858552/353887.terrain new file mode 100644 index 000000000..c1a6d3d66 Binary files /dev/null and b/public/terrain/19/858552/353887.terrain differ diff --git a/public/terrain/19/858552/353888.terrain b/public/terrain/19/858552/353888.terrain new file mode 100644 index 000000000..62edd3a09 Binary files /dev/null and b/public/terrain/19/858552/353888.terrain differ diff --git a/public/terrain/19/858552/353889.terrain b/public/terrain/19/858552/353889.terrain new file mode 100644 index 000000000..e612e7874 Binary files /dev/null and b/public/terrain/19/858552/353889.terrain differ diff --git a/public/terrain/19/858552/353890.terrain b/public/terrain/19/858552/353890.terrain new file mode 100644 index 000000000..a330540d1 Binary files /dev/null and b/public/terrain/19/858552/353890.terrain differ diff --git a/public/terrain/19/858552/353891.terrain b/public/terrain/19/858552/353891.terrain new file mode 100644 index 000000000..c2c6b1a3a Binary files /dev/null and b/public/terrain/19/858552/353891.terrain differ diff --git a/public/terrain/19/858552/353892.terrain b/public/terrain/19/858552/353892.terrain new file mode 100644 index 000000000..5129c9092 Binary files /dev/null and b/public/terrain/19/858552/353892.terrain differ diff --git a/public/terrain/19/858552/353893.terrain b/public/terrain/19/858552/353893.terrain new file mode 100644 index 000000000..8d34e1db2 Binary files /dev/null and b/public/terrain/19/858552/353893.terrain differ diff --git a/public/terrain/19/858552/353894.terrain b/public/terrain/19/858552/353894.terrain new file mode 100644 index 000000000..4dff3d743 Binary files /dev/null and b/public/terrain/19/858552/353894.terrain differ diff --git a/public/terrain/19/858552/353895.terrain b/public/terrain/19/858552/353895.terrain new file mode 100644 index 000000000..cbaa65850 Binary files /dev/null and b/public/terrain/19/858552/353895.terrain differ diff --git a/public/terrain/19/858552/353896.terrain b/public/terrain/19/858552/353896.terrain new file mode 100644 index 000000000..5493e1646 Binary files /dev/null and b/public/terrain/19/858552/353896.terrain differ diff --git a/public/terrain/19/858552/353897.terrain b/public/terrain/19/858552/353897.terrain new file mode 100644 index 000000000..b3f855f68 Binary files /dev/null and b/public/terrain/19/858552/353897.terrain differ diff --git a/public/terrain/19/858552/353898.terrain b/public/terrain/19/858552/353898.terrain new file mode 100644 index 000000000..0cee53b44 Binary files /dev/null and b/public/terrain/19/858552/353898.terrain differ diff --git a/public/terrain/19/858552/353899.terrain b/public/terrain/19/858552/353899.terrain new file mode 100644 index 000000000..502b6e216 Binary files /dev/null and b/public/terrain/19/858552/353899.terrain differ diff --git a/public/terrain/19/858552/353900.terrain b/public/terrain/19/858552/353900.terrain new file mode 100644 index 000000000..7cb858090 Binary files /dev/null and b/public/terrain/19/858552/353900.terrain differ diff --git a/public/terrain/19/858552/353901.terrain b/public/terrain/19/858552/353901.terrain new file mode 100644 index 000000000..390d92e94 Binary files /dev/null and b/public/terrain/19/858552/353901.terrain differ diff --git a/public/terrain/19/858552/353902.terrain b/public/terrain/19/858552/353902.terrain new file mode 100644 index 000000000..9ed8ab58d Binary files /dev/null and b/public/terrain/19/858552/353902.terrain differ diff --git a/public/terrain/19/858552/353903.terrain b/public/terrain/19/858552/353903.terrain new file mode 100644 index 000000000..98b052119 Binary files /dev/null and b/public/terrain/19/858552/353903.terrain differ diff --git a/public/terrain/19/858552/353904.terrain b/public/terrain/19/858552/353904.terrain new file mode 100644 index 000000000..fbb845fe1 Binary files /dev/null and b/public/terrain/19/858552/353904.terrain differ diff --git a/public/terrain/19/858552/353905.terrain b/public/terrain/19/858552/353905.terrain new file mode 100644 index 000000000..875e6d5ca Binary files /dev/null and b/public/terrain/19/858552/353905.terrain differ diff --git a/public/terrain/19/858552/353906.terrain b/public/terrain/19/858552/353906.terrain new file mode 100644 index 000000000..9deda7df7 Binary files /dev/null and b/public/terrain/19/858552/353906.terrain differ diff --git a/public/terrain/19/858552/353907.terrain b/public/terrain/19/858552/353907.terrain new file mode 100644 index 000000000..5d1b14e5c Binary files /dev/null and b/public/terrain/19/858552/353907.terrain differ diff --git a/public/terrain/19/858552/353908.terrain b/public/terrain/19/858552/353908.terrain new file mode 100644 index 000000000..9d1b54f2f Binary files /dev/null and b/public/terrain/19/858552/353908.terrain differ diff --git a/public/terrain/19/858552/353909.terrain b/public/terrain/19/858552/353909.terrain new file mode 100644 index 000000000..b6905a9ab Binary files /dev/null and b/public/terrain/19/858552/353909.terrain differ diff --git a/public/terrain/19/858552/353910.terrain b/public/terrain/19/858552/353910.terrain new file mode 100644 index 000000000..44e444e74 Binary files /dev/null and b/public/terrain/19/858552/353910.terrain differ diff --git a/public/terrain/19/858552/353911.terrain b/public/terrain/19/858552/353911.terrain new file mode 100644 index 000000000..099395c70 Binary files /dev/null and b/public/terrain/19/858552/353911.terrain differ diff --git a/public/terrain/19/858552/353912.terrain b/public/terrain/19/858552/353912.terrain new file mode 100644 index 000000000..d9ff34a32 Binary files /dev/null and b/public/terrain/19/858552/353912.terrain differ diff --git a/public/terrain/19/858552/353913.terrain b/public/terrain/19/858552/353913.terrain new file mode 100644 index 000000000..2a9df999c Binary files /dev/null and b/public/terrain/19/858552/353913.terrain differ diff --git a/public/terrain/19/858552/353914.terrain b/public/terrain/19/858552/353914.terrain new file mode 100644 index 000000000..ca7c088b7 Binary files /dev/null and b/public/terrain/19/858552/353914.terrain differ diff --git a/public/terrain/19/858552/353915.terrain b/public/terrain/19/858552/353915.terrain new file mode 100644 index 000000000..8a794e925 Binary files /dev/null and b/public/terrain/19/858552/353915.terrain differ diff --git a/public/terrain/19/858552/353916.terrain b/public/terrain/19/858552/353916.terrain new file mode 100644 index 000000000..fd765c911 Binary files /dev/null and b/public/terrain/19/858552/353916.terrain differ diff --git a/public/terrain/19/858552/353917.terrain b/public/terrain/19/858552/353917.terrain new file mode 100644 index 000000000..44c94a621 Binary files /dev/null and b/public/terrain/19/858552/353917.terrain differ diff --git a/public/terrain/19/858552/353918.terrain b/public/terrain/19/858552/353918.terrain new file mode 100644 index 000000000..cbd7202eb Binary files /dev/null and b/public/terrain/19/858552/353918.terrain differ diff --git a/public/terrain/19/858552/353919.terrain b/public/terrain/19/858552/353919.terrain new file mode 100644 index 000000000..31e3571b2 Binary files /dev/null and b/public/terrain/19/858552/353919.terrain differ diff --git a/public/terrain/19/858552/353920.terrain b/public/terrain/19/858552/353920.terrain new file mode 100644 index 000000000..3333b9f72 Binary files /dev/null and b/public/terrain/19/858552/353920.terrain differ diff --git a/public/terrain/19/858552/353921.terrain b/public/terrain/19/858552/353921.terrain new file mode 100644 index 000000000..4f7278c8c Binary files /dev/null and b/public/terrain/19/858552/353921.terrain differ diff --git a/public/terrain/19/858552/353922.terrain b/public/terrain/19/858552/353922.terrain new file mode 100644 index 000000000..64ada40fc Binary files /dev/null and b/public/terrain/19/858552/353922.terrain differ diff --git a/public/terrain/19/858552/353923.terrain b/public/terrain/19/858552/353923.terrain new file mode 100644 index 000000000..321dc94d1 Binary files /dev/null and b/public/terrain/19/858552/353923.terrain differ diff --git a/public/terrain/19/858552/353924.terrain b/public/terrain/19/858552/353924.terrain new file mode 100644 index 000000000..1a24ba196 Binary files /dev/null and b/public/terrain/19/858552/353924.terrain differ diff --git a/public/terrain/19/858552/353925.terrain b/public/terrain/19/858552/353925.terrain new file mode 100644 index 000000000..d3df8a68f Binary files /dev/null and b/public/terrain/19/858552/353925.terrain differ diff --git a/public/terrain/19/858552/353926.terrain b/public/terrain/19/858552/353926.terrain new file mode 100644 index 000000000..a54018e68 Binary files /dev/null and b/public/terrain/19/858552/353926.terrain differ diff --git a/public/terrain/19/858552/353927.terrain b/public/terrain/19/858552/353927.terrain new file mode 100644 index 000000000..f6753b348 Binary files /dev/null and b/public/terrain/19/858552/353927.terrain differ diff --git a/public/terrain/19/858552/353928.terrain b/public/terrain/19/858552/353928.terrain new file mode 100644 index 000000000..7ed6d4d10 Binary files /dev/null and b/public/terrain/19/858552/353928.terrain differ diff --git a/public/terrain/19/858552/353929.terrain b/public/terrain/19/858552/353929.terrain new file mode 100644 index 000000000..3ba090461 Binary files /dev/null and b/public/terrain/19/858552/353929.terrain differ diff --git a/public/terrain/19/858552/353930.terrain b/public/terrain/19/858552/353930.terrain new file mode 100644 index 000000000..5c359bb4f Binary files /dev/null and b/public/terrain/19/858552/353930.terrain differ diff --git a/public/terrain/19/858552/353931.terrain b/public/terrain/19/858552/353931.terrain new file mode 100644 index 000000000..7f6168ada Binary files /dev/null and b/public/terrain/19/858552/353931.terrain differ diff --git a/public/terrain/19/858552/353932.terrain b/public/terrain/19/858552/353932.terrain new file mode 100644 index 000000000..9a28452cd Binary files /dev/null and b/public/terrain/19/858552/353932.terrain differ diff --git a/public/terrain/19/858552/353933.terrain b/public/terrain/19/858552/353933.terrain new file mode 100644 index 000000000..7905c9ed2 Binary files /dev/null and b/public/terrain/19/858552/353933.terrain differ diff --git a/public/terrain/19/858552/353934.terrain b/public/terrain/19/858552/353934.terrain new file mode 100644 index 000000000..7aa5de987 Binary files /dev/null and b/public/terrain/19/858552/353934.terrain differ diff --git a/public/terrain/19/858552/353935.terrain b/public/terrain/19/858552/353935.terrain new file mode 100644 index 000000000..4680ecafc Binary files /dev/null and b/public/terrain/19/858552/353935.terrain differ diff --git a/public/terrain/19/858552/353936.terrain b/public/terrain/19/858552/353936.terrain new file mode 100644 index 000000000..58e2e1e38 Binary files /dev/null and b/public/terrain/19/858552/353936.terrain differ diff --git a/public/terrain/19/858552/353937.terrain b/public/terrain/19/858552/353937.terrain new file mode 100644 index 000000000..91505638b Binary files /dev/null and b/public/terrain/19/858552/353937.terrain differ diff --git a/public/terrain/19/858552/353938.terrain b/public/terrain/19/858552/353938.terrain new file mode 100644 index 000000000..9da697e8e Binary files /dev/null and b/public/terrain/19/858552/353938.terrain differ diff --git a/public/terrain/19/858552/353939.terrain b/public/terrain/19/858552/353939.terrain new file mode 100644 index 000000000..a59e28f35 Binary files /dev/null and b/public/terrain/19/858552/353939.terrain differ diff --git a/public/terrain/19/858552/353940.terrain b/public/terrain/19/858552/353940.terrain new file mode 100644 index 000000000..938adede4 Binary files /dev/null and b/public/terrain/19/858552/353940.terrain differ diff --git a/public/terrain/19/858552/353941.terrain b/public/terrain/19/858552/353941.terrain new file mode 100644 index 000000000..05b8b7e77 Binary files /dev/null and b/public/terrain/19/858552/353941.terrain differ diff --git a/public/terrain/19/858552/353942.terrain b/public/terrain/19/858552/353942.terrain new file mode 100644 index 000000000..f07d7e5a9 Binary files /dev/null and b/public/terrain/19/858552/353942.terrain differ diff --git a/public/terrain/19/858552/353943.terrain b/public/terrain/19/858552/353943.terrain new file mode 100644 index 000000000..13879bfb6 Binary files /dev/null and b/public/terrain/19/858552/353943.terrain differ diff --git a/public/terrain/19/858552/353944.terrain b/public/terrain/19/858552/353944.terrain new file mode 100644 index 000000000..649c868e0 Binary files /dev/null and b/public/terrain/19/858552/353944.terrain differ diff --git a/public/terrain/19/858552/353945.terrain b/public/terrain/19/858552/353945.terrain new file mode 100644 index 000000000..8c0c010b4 Binary files /dev/null and b/public/terrain/19/858552/353945.terrain differ diff --git a/public/terrain/19/858552/353946.terrain b/public/terrain/19/858552/353946.terrain new file mode 100644 index 000000000..ec94ab722 Binary files /dev/null and b/public/terrain/19/858552/353946.terrain differ diff --git a/public/terrain/19/858552/353947.terrain b/public/terrain/19/858552/353947.terrain new file mode 100644 index 000000000..a70ba5b5b Binary files /dev/null and b/public/terrain/19/858552/353947.terrain differ diff --git a/public/terrain/19/858552/353948.terrain b/public/terrain/19/858552/353948.terrain new file mode 100644 index 000000000..f6b1ac7c9 Binary files /dev/null and b/public/terrain/19/858552/353948.terrain differ diff --git a/public/terrain/19/858552/353949.terrain b/public/terrain/19/858552/353949.terrain new file mode 100644 index 000000000..6efef59a7 Binary files /dev/null and b/public/terrain/19/858552/353949.terrain differ diff --git a/public/terrain/19/858552/353950.terrain b/public/terrain/19/858552/353950.terrain new file mode 100644 index 000000000..38254f0fb Binary files /dev/null and b/public/terrain/19/858552/353950.terrain differ diff --git a/public/terrain/19/858552/353951.terrain b/public/terrain/19/858552/353951.terrain new file mode 100644 index 000000000..3122f21d4 Binary files /dev/null and b/public/terrain/19/858552/353951.terrain differ diff --git a/public/terrain/19/858552/353952.terrain b/public/terrain/19/858552/353952.terrain new file mode 100644 index 000000000..34d8320a2 Binary files /dev/null and b/public/terrain/19/858552/353952.terrain differ diff --git a/public/terrain/19/858552/353953.terrain b/public/terrain/19/858552/353953.terrain new file mode 100644 index 000000000..db5bf34a1 Binary files /dev/null and b/public/terrain/19/858552/353953.terrain differ diff --git a/public/terrain/19/858552/353954.terrain b/public/terrain/19/858552/353954.terrain new file mode 100644 index 000000000..0689186ed Binary files /dev/null and b/public/terrain/19/858552/353954.terrain differ diff --git a/public/terrain/19/858552/353955.terrain b/public/terrain/19/858552/353955.terrain new file mode 100644 index 000000000..869a3228c Binary files /dev/null and b/public/terrain/19/858552/353955.terrain differ diff --git a/public/terrain/19/858552/353956.terrain b/public/terrain/19/858552/353956.terrain new file mode 100644 index 000000000..a2ab7c028 Binary files /dev/null and b/public/terrain/19/858552/353956.terrain differ diff --git a/public/terrain/19/858552/353957.terrain b/public/terrain/19/858552/353957.terrain new file mode 100644 index 000000000..32141e7fc Binary files /dev/null and b/public/terrain/19/858552/353957.terrain differ diff --git a/public/terrain/19/858552/353958.terrain b/public/terrain/19/858552/353958.terrain new file mode 100644 index 000000000..4866e5a59 Binary files /dev/null and b/public/terrain/19/858552/353958.terrain differ diff --git a/public/terrain/19/858552/353959.terrain b/public/terrain/19/858552/353959.terrain new file mode 100644 index 000000000..84df2aa57 Binary files /dev/null and b/public/terrain/19/858552/353959.terrain differ diff --git a/public/terrain/19/858552/353960.terrain b/public/terrain/19/858552/353960.terrain new file mode 100644 index 000000000..c69de83f7 Binary files /dev/null and b/public/terrain/19/858552/353960.terrain differ diff --git a/public/terrain/19/858552/353961.terrain b/public/terrain/19/858552/353961.terrain new file mode 100644 index 000000000..25e85ffc8 Binary files /dev/null and b/public/terrain/19/858552/353961.terrain differ diff --git a/public/terrain/19/858552/353962.terrain b/public/terrain/19/858552/353962.terrain new file mode 100644 index 000000000..d7639a2cd Binary files /dev/null and b/public/terrain/19/858552/353962.terrain differ diff --git a/public/terrain/19/858552/353963.terrain b/public/terrain/19/858552/353963.terrain new file mode 100644 index 000000000..588b122df Binary files /dev/null and b/public/terrain/19/858552/353963.terrain differ diff --git a/public/terrain/19/858552/353964.terrain b/public/terrain/19/858552/353964.terrain new file mode 100644 index 000000000..6ed254ed9 Binary files /dev/null and b/public/terrain/19/858552/353964.terrain differ diff --git a/public/terrain/19/858552/353965.terrain b/public/terrain/19/858552/353965.terrain new file mode 100644 index 000000000..fc4e6a2d3 Binary files /dev/null and b/public/terrain/19/858552/353965.terrain differ diff --git a/public/terrain/19/858552/353966.terrain b/public/terrain/19/858552/353966.terrain new file mode 100644 index 000000000..fd9d81e65 Binary files /dev/null and b/public/terrain/19/858552/353966.terrain differ diff --git a/public/terrain/19/858552/353967.terrain b/public/terrain/19/858552/353967.terrain new file mode 100644 index 000000000..df324e046 Binary files /dev/null and b/public/terrain/19/858552/353967.terrain differ diff --git a/public/terrain/19/858552/353968.terrain b/public/terrain/19/858552/353968.terrain new file mode 100644 index 000000000..39ef3bfad Binary files /dev/null and b/public/terrain/19/858552/353968.terrain differ diff --git a/public/terrain/19/858552/353969.terrain b/public/terrain/19/858552/353969.terrain new file mode 100644 index 000000000..b5fe750c9 Binary files /dev/null and b/public/terrain/19/858552/353969.terrain differ diff --git a/public/terrain/19/858552/353970.terrain b/public/terrain/19/858552/353970.terrain new file mode 100644 index 000000000..103f41823 Binary files /dev/null and b/public/terrain/19/858552/353970.terrain differ diff --git a/public/terrain/19/858552/353971.terrain b/public/terrain/19/858552/353971.terrain new file mode 100644 index 000000000..1abd85e50 Binary files /dev/null and b/public/terrain/19/858552/353971.terrain differ diff --git a/public/terrain/19/858552/353972.terrain b/public/terrain/19/858552/353972.terrain new file mode 100644 index 000000000..9facb086a Binary files /dev/null and b/public/terrain/19/858552/353972.terrain differ diff --git a/public/terrain/19/858552/353973.terrain b/public/terrain/19/858552/353973.terrain new file mode 100644 index 000000000..0ffe3badd Binary files /dev/null and b/public/terrain/19/858552/353973.terrain differ diff --git a/public/terrain/19/858552/353974.terrain b/public/terrain/19/858552/353974.terrain new file mode 100644 index 000000000..0f03af12b Binary files /dev/null and b/public/terrain/19/858552/353974.terrain differ diff --git a/public/terrain/19/858552/353975.terrain b/public/terrain/19/858552/353975.terrain new file mode 100644 index 000000000..c60d0b427 Binary files /dev/null and b/public/terrain/19/858552/353975.terrain differ diff --git a/public/terrain/19/858552/353976.terrain b/public/terrain/19/858552/353976.terrain new file mode 100644 index 000000000..aeb124150 Binary files /dev/null and b/public/terrain/19/858552/353976.terrain differ diff --git a/public/terrain/19/858552/353977.terrain b/public/terrain/19/858552/353977.terrain new file mode 100644 index 000000000..55e8fb47b Binary files /dev/null and b/public/terrain/19/858552/353977.terrain differ diff --git a/public/terrain/19/858552/353978.terrain b/public/terrain/19/858552/353978.terrain new file mode 100644 index 000000000..4f412b990 Binary files /dev/null and b/public/terrain/19/858552/353978.terrain differ diff --git a/public/terrain/19/858552/353979.terrain b/public/terrain/19/858552/353979.terrain new file mode 100644 index 000000000..603a65cac Binary files /dev/null and b/public/terrain/19/858552/353979.terrain differ diff --git a/public/terrain/19/858552/353980.terrain b/public/terrain/19/858552/353980.terrain new file mode 100644 index 000000000..dfb280f58 Binary files /dev/null and b/public/terrain/19/858552/353980.terrain differ diff --git a/public/terrain/19/858552/353981.terrain b/public/terrain/19/858552/353981.terrain new file mode 100644 index 000000000..31aa29d87 Binary files /dev/null and b/public/terrain/19/858552/353981.terrain differ diff --git a/public/terrain/19/858552/353982.terrain b/public/terrain/19/858552/353982.terrain new file mode 100644 index 000000000..a2ed82c34 Binary files /dev/null and b/public/terrain/19/858552/353982.terrain differ diff --git a/public/terrain/19/858552/353983.terrain b/public/terrain/19/858552/353983.terrain new file mode 100644 index 000000000..3fc7aa91b Binary files /dev/null and b/public/terrain/19/858552/353983.terrain differ diff --git a/public/terrain/19/858552/353984.terrain b/public/terrain/19/858552/353984.terrain new file mode 100644 index 000000000..73ca238d3 Binary files /dev/null and b/public/terrain/19/858552/353984.terrain differ diff --git a/public/terrain/19/858552/353985.terrain b/public/terrain/19/858552/353985.terrain new file mode 100644 index 000000000..198ec608d Binary files /dev/null and b/public/terrain/19/858552/353985.terrain differ diff --git a/public/terrain/19/858552/353986.terrain b/public/terrain/19/858552/353986.terrain new file mode 100644 index 000000000..e38f0a892 Binary files /dev/null and b/public/terrain/19/858552/353986.terrain differ diff --git a/public/terrain/19/858552/353987.terrain b/public/terrain/19/858552/353987.terrain new file mode 100644 index 000000000..28d397b6c Binary files /dev/null and b/public/terrain/19/858552/353987.terrain differ diff --git a/public/terrain/19/858552/353988.terrain b/public/terrain/19/858552/353988.terrain new file mode 100644 index 000000000..a10adc442 Binary files /dev/null and b/public/terrain/19/858552/353988.terrain differ diff --git a/public/terrain/19/858552/353989.terrain b/public/terrain/19/858552/353989.terrain new file mode 100644 index 000000000..03017b57b Binary files /dev/null and b/public/terrain/19/858552/353989.terrain differ diff --git a/public/terrain/19/858552/353990.terrain b/public/terrain/19/858552/353990.terrain new file mode 100644 index 000000000..ce5e68e71 Binary files /dev/null and b/public/terrain/19/858552/353990.terrain differ diff --git a/public/terrain/19/858552/353991.terrain b/public/terrain/19/858552/353991.terrain new file mode 100644 index 000000000..9eab6c36c Binary files /dev/null and b/public/terrain/19/858552/353991.terrain differ diff --git a/public/terrain/19/858552/353992.terrain b/public/terrain/19/858552/353992.terrain new file mode 100644 index 000000000..eb120159f Binary files /dev/null and b/public/terrain/19/858552/353992.terrain differ diff --git a/public/terrain/19/858552/353993.terrain b/public/terrain/19/858552/353993.terrain new file mode 100644 index 000000000..1052f0dc6 Binary files /dev/null and b/public/terrain/19/858552/353993.terrain differ diff --git a/public/terrain/19/858552/353994.terrain b/public/terrain/19/858552/353994.terrain new file mode 100644 index 000000000..30b33e73a Binary files /dev/null and b/public/terrain/19/858552/353994.terrain differ diff --git a/public/terrain/19/858552/353995.terrain b/public/terrain/19/858552/353995.terrain new file mode 100644 index 000000000..7a2b53d0d Binary files /dev/null and b/public/terrain/19/858552/353995.terrain differ diff --git a/public/terrain/19/858552/353996.terrain b/public/terrain/19/858552/353996.terrain new file mode 100644 index 000000000..e9c51d17f Binary files /dev/null and b/public/terrain/19/858552/353996.terrain differ diff --git a/public/terrain/19/858552/353997.terrain b/public/terrain/19/858552/353997.terrain new file mode 100644 index 000000000..f8992bb7f Binary files /dev/null and b/public/terrain/19/858552/353997.terrain differ diff --git a/public/terrain/19/858552/353998.terrain b/public/terrain/19/858552/353998.terrain new file mode 100644 index 000000000..263efc282 Binary files /dev/null and b/public/terrain/19/858552/353998.terrain differ diff --git a/public/terrain/19/858552/353999.terrain b/public/terrain/19/858552/353999.terrain new file mode 100644 index 000000000..003765db5 Binary files /dev/null and b/public/terrain/19/858552/353999.terrain differ diff --git a/public/terrain/19/858552/354000.terrain b/public/terrain/19/858552/354000.terrain new file mode 100644 index 000000000..c3f8f3163 Binary files /dev/null and b/public/terrain/19/858552/354000.terrain differ diff --git a/public/terrain/19/858552/354001.terrain b/public/terrain/19/858552/354001.terrain new file mode 100644 index 000000000..955558e65 Binary files /dev/null and b/public/terrain/19/858552/354001.terrain differ diff --git a/public/terrain/19/858552/354002.terrain b/public/terrain/19/858552/354002.terrain new file mode 100644 index 000000000..fd764d7fc Binary files /dev/null and b/public/terrain/19/858552/354002.terrain differ diff --git a/public/terrain/19/858552/354003.terrain b/public/terrain/19/858552/354003.terrain new file mode 100644 index 000000000..518071a72 Binary files /dev/null and b/public/terrain/19/858552/354003.terrain differ diff --git a/public/terrain/19/858552/354004.terrain b/public/terrain/19/858552/354004.terrain new file mode 100644 index 000000000..a52280d00 Binary files /dev/null and b/public/terrain/19/858552/354004.terrain differ diff --git a/public/terrain/19/858552/354005.terrain b/public/terrain/19/858552/354005.terrain new file mode 100644 index 000000000..41b3428a2 Binary files /dev/null and b/public/terrain/19/858552/354005.terrain differ diff --git a/public/terrain/19/858552/354006.terrain b/public/terrain/19/858552/354006.terrain new file mode 100644 index 000000000..9000916a9 Binary files /dev/null and b/public/terrain/19/858552/354006.terrain differ diff --git a/public/terrain/19/858552/354007.terrain b/public/terrain/19/858552/354007.terrain new file mode 100644 index 000000000..549d04bc4 Binary files /dev/null and b/public/terrain/19/858552/354007.terrain differ diff --git a/public/terrain/19/858552/354008.terrain b/public/terrain/19/858552/354008.terrain new file mode 100644 index 000000000..f77549ecd Binary files /dev/null and b/public/terrain/19/858552/354008.terrain differ diff --git a/public/terrain/19/858552/354009.terrain b/public/terrain/19/858552/354009.terrain new file mode 100644 index 000000000..c3f91fdc4 Binary files /dev/null and b/public/terrain/19/858552/354009.terrain differ diff --git a/public/terrain/19/858552/354010.terrain b/public/terrain/19/858552/354010.terrain new file mode 100644 index 000000000..8406c7e60 Binary files /dev/null and b/public/terrain/19/858552/354010.terrain differ diff --git a/public/terrain/19/858552/354011.terrain b/public/terrain/19/858552/354011.terrain new file mode 100644 index 000000000..7871f8667 Binary files /dev/null and b/public/terrain/19/858552/354011.terrain differ diff --git a/public/terrain/19/858552/354012.terrain b/public/terrain/19/858552/354012.terrain new file mode 100644 index 000000000..3d3585c3f Binary files /dev/null and b/public/terrain/19/858552/354012.terrain differ diff --git a/public/terrain/19/858552/354013.terrain b/public/terrain/19/858552/354013.terrain new file mode 100644 index 000000000..906b5f3fb Binary files /dev/null and b/public/terrain/19/858552/354013.terrain differ diff --git a/public/terrain/19/858552/354014.terrain b/public/terrain/19/858552/354014.terrain new file mode 100644 index 000000000..f04e6fd19 Binary files /dev/null and b/public/terrain/19/858552/354014.terrain differ diff --git a/public/terrain/19/858552/354015.terrain b/public/terrain/19/858552/354015.terrain new file mode 100644 index 000000000..c2f74c369 Binary files /dev/null and b/public/terrain/19/858552/354015.terrain differ diff --git a/public/terrain/19/858552/354016.terrain b/public/terrain/19/858552/354016.terrain new file mode 100644 index 000000000..d066cb33c Binary files /dev/null and b/public/terrain/19/858552/354016.terrain differ diff --git a/public/terrain/19/858552/354017.terrain b/public/terrain/19/858552/354017.terrain new file mode 100644 index 000000000..eea8193cd Binary files /dev/null and b/public/terrain/19/858552/354017.terrain differ diff --git a/public/terrain/19/858552/354018.terrain b/public/terrain/19/858552/354018.terrain new file mode 100644 index 000000000..7f47b6306 Binary files /dev/null and b/public/terrain/19/858552/354018.terrain differ diff --git a/public/terrain/19/858552/354019.terrain b/public/terrain/19/858552/354019.terrain new file mode 100644 index 000000000..0e3a413c7 Binary files /dev/null and b/public/terrain/19/858552/354019.terrain differ diff --git a/public/terrain/19/858552/354020.terrain b/public/terrain/19/858552/354020.terrain new file mode 100644 index 000000000..64320c168 Binary files /dev/null and b/public/terrain/19/858552/354020.terrain differ diff --git a/public/terrain/19/858552/354021.terrain b/public/terrain/19/858552/354021.terrain new file mode 100644 index 000000000..9fb5561fa Binary files /dev/null and b/public/terrain/19/858552/354021.terrain differ diff --git a/public/terrain/19/858552/354022.terrain b/public/terrain/19/858552/354022.terrain new file mode 100644 index 000000000..2c0fb8e36 Binary files /dev/null and b/public/terrain/19/858552/354022.terrain differ diff --git a/public/terrain/19/858552/354023.terrain b/public/terrain/19/858552/354023.terrain new file mode 100644 index 000000000..b8158d416 Binary files /dev/null and b/public/terrain/19/858552/354023.terrain differ diff --git a/public/terrain/19/858552/354024.terrain b/public/terrain/19/858552/354024.terrain new file mode 100644 index 000000000..db5f9212c Binary files /dev/null and b/public/terrain/19/858552/354024.terrain differ diff --git a/public/terrain/19/858552/354025.terrain b/public/terrain/19/858552/354025.terrain new file mode 100644 index 000000000..ad2f04e7b Binary files /dev/null and b/public/terrain/19/858552/354025.terrain differ diff --git a/public/terrain/19/858552/354026.terrain b/public/terrain/19/858552/354026.terrain new file mode 100644 index 000000000..b3c594fa8 Binary files /dev/null and b/public/terrain/19/858552/354026.terrain differ diff --git a/public/terrain/19/858552/354027.terrain b/public/terrain/19/858552/354027.terrain new file mode 100644 index 000000000..0936bda7a Binary files /dev/null and b/public/terrain/19/858552/354027.terrain differ diff --git a/public/terrain/19/858552/354028.terrain b/public/terrain/19/858552/354028.terrain new file mode 100644 index 000000000..075576a48 Binary files /dev/null and b/public/terrain/19/858552/354028.terrain differ diff --git a/public/terrain/19/858552/354029.terrain b/public/terrain/19/858552/354029.terrain new file mode 100644 index 000000000..973802214 Binary files /dev/null and b/public/terrain/19/858552/354029.terrain differ diff --git a/public/terrain/19/858552/354030.terrain b/public/terrain/19/858552/354030.terrain new file mode 100644 index 000000000..a636f782c Binary files /dev/null and b/public/terrain/19/858552/354030.terrain differ diff --git a/public/terrain/19/858552/354031.terrain b/public/terrain/19/858552/354031.terrain new file mode 100644 index 000000000..3a0d25062 Binary files /dev/null and b/public/terrain/19/858552/354031.terrain differ diff --git a/public/terrain/19/858552/354032.terrain b/public/terrain/19/858552/354032.terrain new file mode 100644 index 000000000..de8694391 Binary files /dev/null and b/public/terrain/19/858552/354032.terrain differ diff --git a/public/terrain/19/858552/354033.terrain b/public/terrain/19/858552/354033.terrain new file mode 100644 index 000000000..13c0c3166 Binary files /dev/null and b/public/terrain/19/858552/354033.terrain differ diff --git a/public/terrain/19/858552/354034.terrain b/public/terrain/19/858552/354034.terrain new file mode 100644 index 000000000..a8b2b88ae Binary files /dev/null and b/public/terrain/19/858552/354034.terrain differ diff --git a/public/terrain/19/858552/354035.terrain b/public/terrain/19/858552/354035.terrain new file mode 100644 index 000000000..9a6f5b054 Binary files /dev/null and b/public/terrain/19/858552/354035.terrain differ diff --git a/public/terrain/19/858552/354036.terrain b/public/terrain/19/858552/354036.terrain new file mode 100644 index 000000000..894850da6 Binary files /dev/null and b/public/terrain/19/858552/354036.terrain differ diff --git a/public/terrain/19/858552/354037.terrain b/public/terrain/19/858552/354037.terrain new file mode 100644 index 000000000..623e57c57 Binary files /dev/null and b/public/terrain/19/858552/354037.terrain differ diff --git a/public/terrain/19/858552/354038.terrain b/public/terrain/19/858552/354038.terrain new file mode 100644 index 000000000..34ca18167 Binary files /dev/null and b/public/terrain/19/858552/354038.terrain differ diff --git a/public/terrain/19/858552/354039.terrain b/public/terrain/19/858552/354039.terrain new file mode 100644 index 000000000..0003475b9 Binary files /dev/null and b/public/terrain/19/858552/354039.terrain differ diff --git a/public/terrain/19/858552/354040.terrain b/public/terrain/19/858552/354040.terrain new file mode 100644 index 000000000..3646d217d Binary files /dev/null and b/public/terrain/19/858552/354040.terrain differ diff --git a/public/terrain/19/858552/354041.terrain b/public/terrain/19/858552/354041.terrain new file mode 100644 index 000000000..2eeda86b1 Binary files /dev/null and b/public/terrain/19/858552/354041.terrain differ diff --git a/public/terrain/19/858552/354042.terrain b/public/terrain/19/858552/354042.terrain new file mode 100644 index 000000000..df078d8b6 Binary files /dev/null and b/public/terrain/19/858552/354042.terrain differ diff --git a/public/terrain/19/858552/354043.terrain b/public/terrain/19/858552/354043.terrain new file mode 100644 index 000000000..bc29280fb Binary files /dev/null and b/public/terrain/19/858552/354043.terrain differ diff --git a/public/terrain/19/858552/354044.terrain b/public/terrain/19/858552/354044.terrain new file mode 100644 index 000000000..56ae71f6a Binary files /dev/null and b/public/terrain/19/858552/354044.terrain differ diff --git a/public/terrain/19/858552/354045.terrain b/public/terrain/19/858552/354045.terrain new file mode 100644 index 000000000..43e044c3e Binary files /dev/null and b/public/terrain/19/858552/354045.terrain differ diff --git a/public/terrain/19/858552/354046.terrain b/public/terrain/19/858552/354046.terrain new file mode 100644 index 000000000..ed202e79e Binary files /dev/null and b/public/terrain/19/858552/354046.terrain differ diff --git a/public/terrain/19/858552/354047.terrain b/public/terrain/19/858552/354047.terrain new file mode 100644 index 000000000..c805fbb62 Binary files /dev/null and b/public/terrain/19/858552/354047.terrain differ diff --git a/public/terrain/19/858552/354048.terrain b/public/terrain/19/858552/354048.terrain new file mode 100644 index 000000000..b0d7a7382 Binary files /dev/null and b/public/terrain/19/858552/354048.terrain differ diff --git a/public/terrain/19/858552/354049.terrain b/public/terrain/19/858552/354049.terrain new file mode 100644 index 000000000..f29f1fd04 Binary files /dev/null and b/public/terrain/19/858552/354049.terrain differ diff --git a/public/terrain/19/858552/354050.terrain b/public/terrain/19/858552/354050.terrain new file mode 100644 index 000000000..19b13eaf1 Binary files /dev/null and b/public/terrain/19/858552/354050.terrain differ diff --git a/public/terrain/19/858552/354051.terrain b/public/terrain/19/858552/354051.terrain new file mode 100644 index 000000000..17d44c2ac Binary files /dev/null and b/public/terrain/19/858552/354051.terrain differ diff --git a/public/terrain/19/858552/354052.terrain b/public/terrain/19/858552/354052.terrain new file mode 100644 index 000000000..984aa5ed5 Binary files /dev/null and b/public/terrain/19/858552/354052.terrain differ diff --git a/public/terrain/19/858552/354053.terrain b/public/terrain/19/858552/354053.terrain new file mode 100644 index 000000000..26bcdf54d Binary files /dev/null and b/public/terrain/19/858552/354053.terrain differ diff --git a/public/terrain/19/858552/354054.terrain b/public/terrain/19/858552/354054.terrain new file mode 100644 index 000000000..4ef439564 Binary files /dev/null and b/public/terrain/19/858552/354054.terrain differ diff --git a/public/terrain/19/858552/354055.terrain b/public/terrain/19/858552/354055.terrain new file mode 100644 index 000000000..fa4675648 Binary files /dev/null and b/public/terrain/19/858552/354055.terrain differ diff --git a/public/terrain/19/858552/354056.terrain b/public/terrain/19/858552/354056.terrain new file mode 100644 index 000000000..6863d1f10 Binary files /dev/null and b/public/terrain/19/858552/354056.terrain differ diff --git a/public/terrain/19/858552/354057.terrain b/public/terrain/19/858552/354057.terrain new file mode 100644 index 000000000..d5328323c Binary files /dev/null and b/public/terrain/19/858552/354057.terrain differ diff --git a/public/terrain/19/858552/354058.terrain b/public/terrain/19/858552/354058.terrain new file mode 100644 index 000000000..7ec4ff1a4 Binary files /dev/null and b/public/terrain/19/858552/354058.terrain differ diff --git a/public/terrain/19/858552/354059.terrain b/public/terrain/19/858552/354059.terrain new file mode 100644 index 000000000..14d10990b Binary files /dev/null and b/public/terrain/19/858552/354059.terrain differ diff --git a/public/terrain/19/858553/353743.terrain b/public/terrain/19/858553/353743.terrain new file mode 100644 index 000000000..570e5f4cc Binary files /dev/null and b/public/terrain/19/858553/353743.terrain differ diff --git a/public/terrain/19/858553/353744.terrain b/public/terrain/19/858553/353744.terrain new file mode 100644 index 000000000..83b3844f2 Binary files /dev/null and b/public/terrain/19/858553/353744.terrain differ diff --git a/public/terrain/19/858553/353745.terrain b/public/terrain/19/858553/353745.terrain new file mode 100644 index 000000000..404327ce9 Binary files /dev/null and b/public/terrain/19/858553/353745.terrain differ diff --git a/public/terrain/19/858553/353746.terrain b/public/terrain/19/858553/353746.terrain new file mode 100644 index 000000000..17bc7fbc6 Binary files /dev/null and b/public/terrain/19/858553/353746.terrain differ diff --git a/public/terrain/19/858553/353747.terrain b/public/terrain/19/858553/353747.terrain new file mode 100644 index 000000000..c98b563fc Binary files /dev/null and b/public/terrain/19/858553/353747.terrain differ diff --git a/public/terrain/19/858553/353748.terrain b/public/terrain/19/858553/353748.terrain new file mode 100644 index 000000000..cf74be7f8 Binary files /dev/null and b/public/terrain/19/858553/353748.terrain differ diff --git a/public/terrain/19/858553/353749.terrain b/public/terrain/19/858553/353749.terrain new file mode 100644 index 000000000..23e23bce8 Binary files /dev/null and b/public/terrain/19/858553/353749.terrain differ diff --git a/public/terrain/19/858553/353750.terrain b/public/terrain/19/858553/353750.terrain new file mode 100644 index 000000000..01b8e3e50 Binary files /dev/null and b/public/terrain/19/858553/353750.terrain differ diff --git a/public/terrain/19/858553/353751.terrain b/public/terrain/19/858553/353751.terrain new file mode 100644 index 000000000..51a4201fe Binary files /dev/null and b/public/terrain/19/858553/353751.terrain differ diff --git a/public/terrain/19/858553/353752.terrain b/public/terrain/19/858553/353752.terrain new file mode 100644 index 000000000..4f5b7de2c Binary files /dev/null and b/public/terrain/19/858553/353752.terrain differ diff --git a/public/terrain/19/858553/353753.terrain b/public/terrain/19/858553/353753.terrain new file mode 100644 index 000000000..4c606f055 Binary files /dev/null and b/public/terrain/19/858553/353753.terrain differ diff --git a/public/terrain/19/858553/353754.terrain b/public/terrain/19/858553/353754.terrain new file mode 100644 index 000000000..234bd60e3 Binary files /dev/null and b/public/terrain/19/858553/353754.terrain differ diff --git a/public/terrain/19/858553/353755.terrain b/public/terrain/19/858553/353755.terrain new file mode 100644 index 000000000..4b441915d Binary files /dev/null and b/public/terrain/19/858553/353755.terrain differ diff --git a/public/terrain/19/858553/353756.terrain b/public/terrain/19/858553/353756.terrain new file mode 100644 index 000000000..4e8da6231 Binary files /dev/null and b/public/terrain/19/858553/353756.terrain differ diff --git a/public/terrain/19/858553/353757.terrain b/public/terrain/19/858553/353757.terrain new file mode 100644 index 000000000..ddfbfb454 Binary files /dev/null and b/public/terrain/19/858553/353757.terrain differ diff --git a/public/terrain/19/858553/353758.terrain b/public/terrain/19/858553/353758.terrain new file mode 100644 index 000000000..2a9910e62 Binary files /dev/null and b/public/terrain/19/858553/353758.terrain differ diff --git a/public/terrain/19/858553/353759.terrain b/public/terrain/19/858553/353759.terrain new file mode 100644 index 000000000..2e78ec91f Binary files /dev/null and b/public/terrain/19/858553/353759.terrain differ diff --git a/public/terrain/19/858553/353760.terrain b/public/terrain/19/858553/353760.terrain new file mode 100644 index 000000000..b59d469bc Binary files /dev/null and b/public/terrain/19/858553/353760.terrain differ diff --git a/public/terrain/19/858553/353761.terrain b/public/terrain/19/858553/353761.terrain new file mode 100644 index 000000000..44c2caf47 Binary files /dev/null and b/public/terrain/19/858553/353761.terrain differ diff --git a/public/terrain/19/858553/353762.terrain b/public/terrain/19/858553/353762.terrain new file mode 100644 index 000000000..3ce5ee6eb Binary files /dev/null and b/public/terrain/19/858553/353762.terrain differ diff --git a/public/terrain/19/858553/353763.terrain b/public/terrain/19/858553/353763.terrain new file mode 100644 index 000000000..17727045e Binary files /dev/null and b/public/terrain/19/858553/353763.terrain differ diff --git a/public/terrain/19/858553/353764.terrain b/public/terrain/19/858553/353764.terrain new file mode 100644 index 000000000..77f64deab Binary files /dev/null and b/public/terrain/19/858553/353764.terrain differ diff --git a/public/terrain/19/858553/353765.terrain b/public/terrain/19/858553/353765.terrain new file mode 100644 index 000000000..6556df0e5 Binary files /dev/null and b/public/terrain/19/858553/353765.terrain differ diff --git a/public/terrain/19/858553/353766.terrain b/public/terrain/19/858553/353766.terrain new file mode 100644 index 000000000..4c353b7f3 Binary files /dev/null and b/public/terrain/19/858553/353766.terrain differ diff --git a/public/terrain/19/858553/353767.terrain b/public/terrain/19/858553/353767.terrain new file mode 100644 index 000000000..1645a813b Binary files /dev/null and b/public/terrain/19/858553/353767.terrain differ diff --git a/public/terrain/19/858553/353768.terrain b/public/terrain/19/858553/353768.terrain new file mode 100644 index 000000000..9279832a2 Binary files /dev/null and b/public/terrain/19/858553/353768.terrain differ diff --git a/public/terrain/19/858553/353769.terrain b/public/terrain/19/858553/353769.terrain new file mode 100644 index 000000000..8e232013d Binary files /dev/null and b/public/terrain/19/858553/353769.terrain differ diff --git a/public/terrain/19/858553/353770.terrain b/public/terrain/19/858553/353770.terrain new file mode 100644 index 000000000..467ff9943 Binary files /dev/null and b/public/terrain/19/858553/353770.terrain differ diff --git a/public/terrain/19/858553/353771.terrain b/public/terrain/19/858553/353771.terrain new file mode 100644 index 000000000..9e09eacc4 Binary files /dev/null and b/public/terrain/19/858553/353771.terrain differ diff --git a/public/terrain/19/858553/353772.terrain b/public/terrain/19/858553/353772.terrain new file mode 100644 index 000000000..c9854e896 Binary files /dev/null and b/public/terrain/19/858553/353772.terrain differ diff --git a/public/terrain/19/858553/353773.terrain b/public/terrain/19/858553/353773.terrain new file mode 100644 index 000000000..222b7e0ca Binary files /dev/null and b/public/terrain/19/858553/353773.terrain differ diff --git a/public/terrain/19/858553/353774.terrain b/public/terrain/19/858553/353774.terrain new file mode 100644 index 000000000..3d794ca13 Binary files /dev/null and b/public/terrain/19/858553/353774.terrain differ diff --git a/public/terrain/19/858553/353775.terrain b/public/terrain/19/858553/353775.terrain new file mode 100644 index 000000000..86b6bfb44 Binary files /dev/null and b/public/terrain/19/858553/353775.terrain differ diff --git a/public/terrain/19/858553/353776.terrain b/public/terrain/19/858553/353776.terrain new file mode 100644 index 000000000..e64972149 Binary files /dev/null and b/public/terrain/19/858553/353776.terrain differ diff --git a/public/terrain/19/858553/353777.terrain b/public/terrain/19/858553/353777.terrain new file mode 100644 index 000000000..26f6a5966 Binary files /dev/null and b/public/terrain/19/858553/353777.terrain differ diff --git a/public/terrain/19/858553/353778.terrain b/public/terrain/19/858553/353778.terrain new file mode 100644 index 000000000..ac7e185ee Binary files /dev/null and b/public/terrain/19/858553/353778.terrain differ diff --git a/public/terrain/19/858553/353779.terrain b/public/terrain/19/858553/353779.terrain new file mode 100644 index 000000000..ca34aa084 Binary files /dev/null and b/public/terrain/19/858553/353779.terrain differ diff --git a/public/terrain/19/858553/353780.terrain b/public/terrain/19/858553/353780.terrain new file mode 100644 index 000000000..633640e8a Binary files /dev/null and b/public/terrain/19/858553/353780.terrain differ diff --git a/public/terrain/19/858553/353781.terrain b/public/terrain/19/858553/353781.terrain new file mode 100644 index 000000000..9f6cc85e8 Binary files /dev/null and b/public/terrain/19/858553/353781.terrain differ diff --git a/public/terrain/19/858553/353782.terrain b/public/terrain/19/858553/353782.terrain new file mode 100644 index 000000000..3064fce04 Binary files /dev/null and b/public/terrain/19/858553/353782.terrain differ diff --git a/public/terrain/19/858553/353783.terrain b/public/terrain/19/858553/353783.terrain new file mode 100644 index 000000000..74ecaf978 Binary files /dev/null and b/public/terrain/19/858553/353783.terrain differ diff --git a/public/terrain/19/858553/353784.terrain b/public/terrain/19/858553/353784.terrain new file mode 100644 index 000000000..0f84db971 Binary files /dev/null and b/public/terrain/19/858553/353784.terrain differ diff --git a/public/terrain/19/858553/353785.terrain b/public/terrain/19/858553/353785.terrain new file mode 100644 index 000000000..f26bd0c4c Binary files /dev/null and b/public/terrain/19/858553/353785.terrain differ diff --git a/public/terrain/19/858553/353786.terrain b/public/terrain/19/858553/353786.terrain new file mode 100644 index 000000000..89602e0b8 Binary files /dev/null and b/public/terrain/19/858553/353786.terrain differ diff --git a/public/terrain/19/858553/353787.terrain b/public/terrain/19/858553/353787.terrain new file mode 100644 index 000000000..c66f23099 Binary files /dev/null and b/public/terrain/19/858553/353787.terrain differ diff --git a/public/terrain/19/858553/353788.terrain b/public/terrain/19/858553/353788.terrain new file mode 100644 index 000000000..b33160ebc Binary files /dev/null and b/public/terrain/19/858553/353788.terrain differ diff --git a/public/terrain/19/858553/353789.terrain b/public/terrain/19/858553/353789.terrain new file mode 100644 index 000000000..36f7487de Binary files /dev/null and b/public/terrain/19/858553/353789.terrain differ diff --git a/public/terrain/19/858553/353790.terrain b/public/terrain/19/858553/353790.terrain new file mode 100644 index 000000000..ac2dfca90 Binary files /dev/null and b/public/terrain/19/858553/353790.terrain differ diff --git a/public/terrain/19/858553/353791.terrain b/public/terrain/19/858553/353791.terrain new file mode 100644 index 000000000..9a1655ccf Binary files /dev/null and b/public/terrain/19/858553/353791.terrain differ diff --git a/public/terrain/19/858553/353792.terrain b/public/terrain/19/858553/353792.terrain new file mode 100644 index 000000000..e19b7de29 Binary files /dev/null and b/public/terrain/19/858553/353792.terrain differ diff --git a/public/terrain/19/858553/353793.terrain b/public/terrain/19/858553/353793.terrain new file mode 100644 index 000000000..a3644fbaf Binary files /dev/null and b/public/terrain/19/858553/353793.terrain differ diff --git a/public/terrain/19/858553/353794.terrain b/public/terrain/19/858553/353794.terrain new file mode 100644 index 000000000..7f23c3ee2 Binary files /dev/null and b/public/terrain/19/858553/353794.terrain differ diff --git a/public/terrain/19/858553/353795.terrain b/public/terrain/19/858553/353795.terrain new file mode 100644 index 000000000..8cfef35aa Binary files /dev/null and b/public/terrain/19/858553/353795.terrain differ diff --git a/public/terrain/19/858553/353796.terrain b/public/terrain/19/858553/353796.terrain new file mode 100644 index 000000000..201a16661 Binary files /dev/null and b/public/terrain/19/858553/353796.terrain differ diff --git a/public/terrain/19/858553/353797.terrain b/public/terrain/19/858553/353797.terrain new file mode 100644 index 000000000..bc01d0e05 Binary files /dev/null and b/public/terrain/19/858553/353797.terrain differ diff --git a/public/terrain/19/858553/353798.terrain b/public/terrain/19/858553/353798.terrain new file mode 100644 index 000000000..56370cdd8 Binary files /dev/null and b/public/terrain/19/858553/353798.terrain differ diff --git a/public/terrain/19/858553/353799.terrain b/public/terrain/19/858553/353799.terrain new file mode 100644 index 000000000..86e4526b8 Binary files /dev/null and b/public/terrain/19/858553/353799.terrain differ diff --git a/public/terrain/19/858553/353800.terrain b/public/terrain/19/858553/353800.terrain new file mode 100644 index 000000000..feb21a68e Binary files /dev/null and b/public/terrain/19/858553/353800.terrain differ diff --git a/public/terrain/19/858553/353801.terrain b/public/terrain/19/858553/353801.terrain new file mode 100644 index 000000000..3929fc5e8 Binary files /dev/null and b/public/terrain/19/858553/353801.terrain differ diff --git a/public/terrain/19/858553/353802.terrain b/public/terrain/19/858553/353802.terrain new file mode 100644 index 000000000..3b6240430 Binary files /dev/null and b/public/terrain/19/858553/353802.terrain differ diff --git a/public/terrain/19/858553/353803.terrain b/public/terrain/19/858553/353803.terrain new file mode 100644 index 000000000..57799e747 Binary files /dev/null and b/public/terrain/19/858553/353803.terrain differ diff --git a/public/terrain/19/858553/353804.terrain b/public/terrain/19/858553/353804.terrain new file mode 100644 index 000000000..0ffe7f799 Binary files /dev/null and b/public/terrain/19/858553/353804.terrain differ diff --git a/public/terrain/19/858553/353805.terrain b/public/terrain/19/858553/353805.terrain new file mode 100644 index 000000000..76e488bde Binary files /dev/null and b/public/terrain/19/858553/353805.terrain differ diff --git a/public/terrain/19/858553/353806.terrain b/public/terrain/19/858553/353806.terrain new file mode 100644 index 000000000..56990930d Binary files /dev/null and b/public/terrain/19/858553/353806.terrain differ diff --git a/public/terrain/19/858553/353807.terrain b/public/terrain/19/858553/353807.terrain new file mode 100644 index 000000000..f19318f3a Binary files /dev/null and b/public/terrain/19/858553/353807.terrain differ diff --git a/public/terrain/19/858553/353808.terrain b/public/terrain/19/858553/353808.terrain new file mode 100644 index 000000000..75a8e8fc9 Binary files /dev/null and b/public/terrain/19/858553/353808.terrain differ diff --git a/public/terrain/19/858553/353809.terrain b/public/terrain/19/858553/353809.terrain new file mode 100644 index 000000000..8d9cb8ba1 Binary files /dev/null and b/public/terrain/19/858553/353809.terrain differ diff --git a/public/terrain/19/858553/353810.terrain b/public/terrain/19/858553/353810.terrain new file mode 100644 index 000000000..c8745fa1b Binary files /dev/null and b/public/terrain/19/858553/353810.terrain differ diff --git a/public/terrain/19/858553/353811.terrain b/public/terrain/19/858553/353811.terrain new file mode 100644 index 000000000..14c6bf88e Binary files /dev/null and b/public/terrain/19/858553/353811.terrain differ diff --git a/public/terrain/19/858553/353812.terrain b/public/terrain/19/858553/353812.terrain new file mode 100644 index 000000000..409f92916 Binary files /dev/null and b/public/terrain/19/858553/353812.terrain differ diff --git a/public/terrain/19/858553/353813.terrain b/public/terrain/19/858553/353813.terrain new file mode 100644 index 000000000..374f749da Binary files /dev/null and b/public/terrain/19/858553/353813.terrain differ diff --git a/public/terrain/19/858553/353814.terrain b/public/terrain/19/858553/353814.terrain new file mode 100644 index 000000000..7eb633f53 Binary files /dev/null and b/public/terrain/19/858553/353814.terrain differ diff --git a/public/terrain/19/858553/353815.terrain b/public/terrain/19/858553/353815.terrain new file mode 100644 index 000000000..cf3bc6e38 Binary files /dev/null and b/public/terrain/19/858553/353815.terrain differ diff --git a/public/terrain/19/858553/353816.terrain b/public/terrain/19/858553/353816.terrain new file mode 100644 index 000000000..c52d42c24 Binary files /dev/null and b/public/terrain/19/858553/353816.terrain differ diff --git a/public/terrain/19/858553/353817.terrain b/public/terrain/19/858553/353817.terrain new file mode 100644 index 000000000..c7bafa702 Binary files /dev/null and b/public/terrain/19/858553/353817.terrain differ diff --git a/public/terrain/19/858553/353818.terrain b/public/terrain/19/858553/353818.terrain new file mode 100644 index 000000000..d3536ca55 Binary files /dev/null and b/public/terrain/19/858553/353818.terrain differ diff --git a/public/terrain/19/858553/353819.terrain b/public/terrain/19/858553/353819.terrain new file mode 100644 index 000000000..ed8c5edce Binary files /dev/null and b/public/terrain/19/858553/353819.terrain differ diff --git a/public/terrain/19/858553/353820.terrain b/public/terrain/19/858553/353820.terrain new file mode 100644 index 000000000..db76ed2c6 Binary files /dev/null and b/public/terrain/19/858553/353820.terrain differ diff --git a/public/terrain/19/858553/353821.terrain b/public/terrain/19/858553/353821.terrain new file mode 100644 index 000000000..11b2abde4 Binary files /dev/null and b/public/terrain/19/858553/353821.terrain differ diff --git a/public/terrain/19/858553/353822.terrain b/public/terrain/19/858553/353822.terrain new file mode 100644 index 000000000..b240bc19d Binary files /dev/null and b/public/terrain/19/858553/353822.terrain differ diff --git a/public/terrain/19/858553/353823.terrain b/public/terrain/19/858553/353823.terrain new file mode 100644 index 000000000..776212965 Binary files /dev/null and b/public/terrain/19/858553/353823.terrain differ diff --git a/public/terrain/19/858553/353824.terrain b/public/terrain/19/858553/353824.terrain new file mode 100644 index 000000000..d9b9c52f3 Binary files /dev/null and b/public/terrain/19/858553/353824.terrain differ diff --git a/public/terrain/19/858553/353825.terrain b/public/terrain/19/858553/353825.terrain new file mode 100644 index 000000000..74ba0e285 Binary files /dev/null and b/public/terrain/19/858553/353825.terrain differ diff --git a/public/terrain/19/858553/353826.terrain b/public/terrain/19/858553/353826.terrain new file mode 100644 index 000000000..bcba8edc4 Binary files /dev/null and b/public/terrain/19/858553/353826.terrain differ diff --git a/public/terrain/19/858553/353827.terrain b/public/terrain/19/858553/353827.terrain new file mode 100644 index 000000000..647aaf4fe Binary files /dev/null and b/public/terrain/19/858553/353827.terrain differ diff --git a/public/terrain/19/858553/353828.terrain b/public/terrain/19/858553/353828.terrain new file mode 100644 index 000000000..8cef440b9 Binary files /dev/null and b/public/terrain/19/858553/353828.terrain differ diff --git a/public/terrain/19/858553/353829.terrain b/public/terrain/19/858553/353829.terrain new file mode 100644 index 000000000..e27439cc3 Binary files /dev/null and b/public/terrain/19/858553/353829.terrain differ diff --git a/public/terrain/19/858553/353830.terrain b/public/terrain/19/858553/353830.terrain new file mode 100644 index 000000000..2a45d13f8 Binary files /dev/null and b/public/terrain/19/858553/353830.terrain differ diff --git a/public/terrain/19/858553/353831.terrain b/public/terrain/19/858553/353831.terrain new file mode 100644 index 000000000..820f1db09 Binary files /dev/null and b/public/terrain/19/858553/353831.terrain differ diff --git a/public/terrain/19/858553/353832.terrain b/public/terrain/19/858553/353832.terrain new file mode 100644 index 000000000..22a6a2f6e Binary files /dev/null and b/public/terrain/19/858553/353832.terrain differ diff --git a/public/terrain/19/858553/353833.terrain b/public/terrain/19/858553/353833.terrain new file mode 100644 index 000000000..bd2ca9a29 Binary files /dev/null and b/public/terrain/19/858553/353833.terrain differ diff --git a/public/terrain/19/858553/353834.terrain b/public/terrain/19/858553/353834.terrain new file mode 100644 index 000000000..a3a65661b Binary files /dev/null and b/public/terrain/19/858553/353834.terrain differ diff --git a/public/terrain/19/858553/353835.terrain b/public/terrain/19/858553/353835.terrain new file mode 100644 index 000000000..9ecd2e11b Binary files /dev/null and b/public/terrain/19/858553/353835.terrain differ diff --git a/public/terrain/19/858553/353836.terrain b/public/terrain/19/858553/353836.terrain new file mode 100644 index 000000000..365fb5da3 Binary files /dev/null and b/public/terrain/19/858553/353836.terrain differ diff --git a/public/terrain/19/858553/353837.terrain b/public/terrain/19/858553/353837.terrain new file mode 100644 index 000000000..bd04ea31c Binary files /dev/null and b/public/terrain/19/858553/353837.terrain differ diff --git a/public/terrain/19/858553/353838.terrain b/public/terrain/19/858553/353838.terrain new file mode 100644 index 000000000..9a97e84dd Binary files /dev/null and b/public/terrain/19/858553/353838.terrain differ diff --git a/public/terrain/19/858553/353839.terrain b/public/terrain/19/858553/353839.terrain new file mode 100644 index 000000000..3923980b3 Binary files /dev/null and b/public/terrain/19/858553/353839.terrain differ diff --git a/public/terrain/19/858553/353840.terrain b/public/terrain/19/858553/353840.terrain new file mode 100644 index 000000000..4d097086e Binary files /dev/null and b/public/terrain/19/858553/353840.terrain differ diff --git a/public/terrain/19/858553/353841.terrain b/public/terrain/19/858553/353841.terrain new file mode 100644 index 000000000..594216cb3 Binary files /dev/null and b/public/terrain/19/858553/353841.terrain differ diff --git a/public/terrain/19/858553/353842.terrain b/public/terrain/19/858553/353842.terrain new file mode 100644 index 000000000..c9a43be7f Binary files /dev/null and b/public/terrain/19/858553/353842.terrain differ diff --git a/public/terrain/19/858553/353843.terrain b/public/terrain/19/858553/353843.terrain new file mode 100644 index 000000000..afafada2c Binary files /dev/null and b/public/terrain/19/858553/353843.terrain differ diff --git a/public/terrain/19/858553/353844.terrain b/public/terrain/19/858553/353844.terrain new file mode 100644 index 000000000..66c940a83 Binary files /dev/null and b/public/terrain/19/858553/353844.terrain differ diff --git a/public/terrain/19/858553/353845.terrain b/public/terrain/19/858553/353845.terrain new file mode 100644 index 000000000..1462718ba Binary files /dev/null and b/public/terrain/19/858553/353845.terrain differ diff --git a/public/terrain/19/858553/353846.terrain b/public/terrain/19/858553/353846.terrain new file mode 100644 index 000000000..ee5315d2f Binary files /dev/null and b/public/terrain/19/858553/353846.terrain differ diff --git a/public/terrain/19/858553/353847.terrain b/public/terrain/19/858553/353847.terrain new file mode 100644 index 000000000..891eff385 Binary files /dev/null and b/public/terrain/19/858553/353847.terrain differ diff --git a/public/terrain/19/858553/353848.terrain b/public/terrain/19/858553/353848.terrain new file mode 100644 index 000000000..66d9f4d84 Binary files /dev/null and b/public/terrain/19/858553/353848.terrain differ diff --git a/public/terrain/19/858553/353849.terrain b/public/terrain/19/858553/353849.terrain new file mode 100644 index 000000000..44af81787 Binary files /dev/null and b/public/terrain/19/858553/353849.terrain differ diff --git a/public/terrain/19/858553/353850.terrain b/public/terrain/19/858553/353850.terrain new file mode 100644 index 000000000..74be6a00f Binary files /dev/null and b/public/terrain/19/858553/353850.terrain differ diff --git a/public/terrain/19/858553/353851.terrain b/public/terrain/19/858553/353851.terrain new file mode 100644 index 000000000..3ad99a491 Binary files /dev/null and b/public/terrain/19/858553/353851.terrain differ diff --git a/public/terrain/19/858553/353852.terrain b/public/terrain/19/858553/353852.terrain new file mode 100644 index 000000000..a65856c90 Binary files /dev/null and b/public/terrain/19/858553/353852.terrain differ diff --git a/public/terrain/19/858553/353853.terrain b/public/terrain/19/858553/353853.terrain new file mode 100644 index 000000000..7aa112b93 Binary files /dev/null and b/public/terrain/19/858553/353853.terrain differ diff --git a/public/terrain/19/858553/353854.terrain b/public/terrain/19/858553/353854.terrain new file mode 100644 index 000000000..ca3e60d23 Binary files /dev/null and b/public/terrain/19/858553/353854.terrain differ diff --git a/public/terrain/19/858553/353855.terrain b/public/terrain/19/858553/353855.terrain new file mode 100644 index 000000000..6c6f18ec6 Binary files /dev/null and b/public/terrain/19/858553/353855.terrain differ diff --git a/public/terrain/19/858553/353856.terrain b/public/terrain/19/858553/353856.terrain new file mode 100644 index 000000000..a77ed6662 Binary files /dev/null and b/public/terrain/19/858553/353856.terrain differ diff --git a/public/terrain/19/858553/353857.terrain b/public/terrain/19/858553/353857.terrain new file mode 100644 index 000000000..ce0a10d40 Binary files /dev/null and b/public/terrain/19/858553/353857.terrain differ diff --git a/public/terrain/19/858553/353858.terrain b/public/terrain/19/858553/353858.terrain new file mode 100644 index 000000000..842a7ac82 Binary files /dev/null and b/public/terrain/19/858553/353858.terrain differ diff --git a/public/terrain/19/858553/353859.terrain b/public/terrain/19/858553/353859.terrain new file mode 100644 index 000000000..1eb6797b6 Binary files /dev/null and b/public/terrain/19/858553/353859.terrain differ diff --git a/public/terrain/19/858553/353860.terrain b/public/terrain/19/858553/353860.terrain new file mode 100644 index 000000000..513340b32 Binary files /dev/null and b/public/terrain/19/858553/353860.terrain differ diff --git a/public/terrain/19/858553/353861.terrain b/public/terrain/19/858553/353861.terrain new file mode 100644 index 000000000..080740915 Binary files /dev/null and b/public/terrain/19/858553/353861.terrain differ diff --git a/public/terrain/19/858553/353862.terrain b/public/terrain/19/858553/353862.terrain new file mode 100644 index 000000000..d32ea3ce9 Binary files /dev/null and b/public/terrain/19/858553/353862.terrain differ diff --git a/public/terrain/19/858553/353863.terrain b/public/terrain/19/858553/353863.terrain new file mode 100644 index 000000000..4091456d1 Binary files /dev/null and b/public/terrain/19/858553/353863.terrain differ diff --git a/public/terrain/19/858553/353864.terrain b/public/terrain/19/858553/353864.terrain new file mode 100644 index 000000000..db2bfa9d7 Binary files /dev/null and b/public/terrain/19/858553/353864.terrain differ diff --git a/public/terrain/19/858553/353865.terrain b/public/terrain/19/858553/353865.terrain new file mode 100644 index 000000000..944cdd05b Binary files /dev/null and b/public/terrain/19/858553/353865.terrain differ diff --git a/public/terrain/19/858553/353866.terrain b/public/terrain/19/858553/353866.terrain new file mode 100644 index 000000000..4a13db6e8 Binary files /dev/null and b/public/terrain/19/858553/353866.terrain differ diff --git a/public/terrain/19/858553/353867.terrain b/public/terrain/19/858553/353867.terrain new file mode 100644 index 000000000..e2f9ac929 Binary files /dev/null and b/public/terrain/19/858553/353867.terrain differ diff --git a/public/terrain/19/858553/353868.terrain b/public/terrain/19/858553/353868.terrain new file mode 100644 index 000000000..084c8e894 Binary files /dev/null and b/public/terrain/19/858553/353868.terrain differ diff --git a/public/terrain/19/858553/353869.terrain b/public/terrain/19/858553/353869.terrain new file mode 100644 index 000000000..e176bc553 Binary files /dev/null and b/public/terrain/19/858553/353869.terrain differ diff --git a/public/terrain/19/858553/353870.terrain b/public/terrain/19/858553/353870.terrain new file mode 100644 index 000000000..012d2bd8b Binary files /dev/null and b/public/terrain/19/858553/353870.terrain differ diff --git a/public/terrain/19/858553/353871.terrain b/public/terrain/19/858553/353871.terrain new file mode 100644 index 000000000..33451d32e Binary files /dev/null and b/public/terrain/19/858553/353871.terrain differ diff --git a/public/terrain/19/858553/353872.terrain b/public/terrain/19/858553/353872.terrain new file mode 100644 index 000000000..37d409cb2 Binary files /dev/null and b/public/terrain/19/858553/353872.terrain differ diff --git a/public/terrain/19/858553/353873.terrain b/public/terrain/19/858553/353873.terrain new file mode 100644 index 000000000..03e82fc13 Binary files /dev/null and b/public/terrain/19/858553/353873.terrain differ diff --git a/public/terrain/19/858553/353874.terrain b/public/terrain/19/858553/353874.terrain new file mode 100644 index 000000000..e6e6c2077 Binary files /dev/null and b/public/terrain/19/858553/353874.terrain differ diff --git a/public/terrain/19/858553/353875.terrain b/public/terrain/19/858553/353875.terrain new file mode 100644 index 000000000..f4f035d8f Binary files /dev/null and b/public/terrain/19/858553/353875.terrain differ diff --git a/public/terrain/19/858553/353876.terrain b/public/terrain/19/858553/353876.terrain new file mode 100644 index 000000000..318476d7c Binary files /dev/null and b/public/terrain/19/858553/353876.terrain differ diff --git a/public/terrain/19/858553/353877.terrain b/public/terrain/19/858553/353877.terrain new file mode 100644 index 000000000..da2c52ccc Binary files /dev/null and b/public/terrain/19/858553/353877.terrain differ diff --git a/public/terrain/19/858553/353878.terrain b/public/terrain/19/858553/353878.terrain new file mode 100644 index 000000000..51278fb2f Binary files /dev/null and b/public/terrain/19/858553/353878.terrain differ diff --git a/public/terrain/19/858553/353879.terrain b/public/terrain/19/858553/353879.terrain new file mode 100644 index 000000000..5ae821a75 Binary files /dev/null and b/public/terrain/19/858553/353879.terrain differ diff --git a/public/terrain/19/858553/353880.terrain b/public/terrain/19/858553/353880.terrain new file mode 100644 index 000000000..9e57dccd5 Binary files /dev/null and b/public/terrain/19/858553/353880.terrain differ diff --git a/public/terrain/19/858553/353881.terrain b/public/terrain/19/858553/353881.terrain new file mode 100644 index 000000000..1b4c6fc50 Binary files /dev/null and b/public/terrain/19/858553/353881.terrain differ diff --git a/public/terrain/19/858553/353882.terrain b/public/terrain/19/858553/353882.terrain new file mode 100644 index 000000000..d5b729102 Binary files /dev/null and b/public/terrain/19/858553/353882.terrain differ diff --git a/public/terrain/19/858553/353883.terrain b/public/terrain/19/858553/353883.terrain new file mode 100644 index 000000000..4151306db Binary files /dev/null and b/public/terrain/19/858553/353883.terrain differ diff --git a/public/terrain/19/858553/353884.terrain b/public/terrain/19/858553/353884.terrain new file mode 100644 index 000000000..1fb257f80 Binary files /dev/null and b/public/terrain/19/858553/353884.terrain differ diff --git a/public/terrain/19/858553/353885.terrain b/public/terrain/19/858553/353885.terrain new file mode 100644 index 000000000..95d80d68b Binary files /dev/null and b/public/terrain/19/858553/353885.terrain differ diff --git a/public/terrain/19/858553/353886.terrain b/public/terrain/19/858553/353886.terrain new file mode 100644 index 000000000..9063df142 Binary files /dev/null and b/public/terrain/19/858553/353886.terrain differ diff --git a/public/terrain/19/858553/353887.terrain b/public/terrain/19/858553/353887.terrain new file mode 100644 index 000000000..767c8b1fe Binary files /dev/null and b/public/terrain/19/858553/353887.terrain differ diff --git a/public/terrain/19/858553/353888.terrain b/public/terrain/19/858553/353888.terrain new file mode 100644 index 000000000..b602e135f Binary files /dev/null and b/public/terrain/19/858553/353888.terrain differ diff --git a/public/terrain/19/858553/353889.terrain b/public/terrain/19/858553/353889.terrain new file mode 100644 index 000000000..234d2a10e Binary files /dev/null and b/public/terrain/19/858553/353889.terrain differ diff --git a/public/terrain/19/858553/353890.terrain b/public/terrain/19/858553/353890.terrain new file mode 100644 index 000000000..84073f57d Binary files /dev/null and b/public/terrain/19/858553/353890.terrain differ diff --git a/public/terrain/19/858553/353891.terrain b/public/terrain/19/858553/353891.terrain new file mode 100644 index 000000000..18e3050d5 Binary files /dev/null and b/public/terrain/19/858553/353891.terrain differ diff --git a/public/terrain/19/858553/353892.terrain b/public/terrain/19/858553/353892.terrain new file mode 100644 index 000000000..0b03cb184 Binary files /dev/null and b/public/terrain/19/858553/353892.terrain differ diff --git a/public/terrain/19/858553/353893.terrain b/public/terrain/19/858553/353893.terrain new file mode 100644 index 000000000..5138701d6 Binary files /dev/null and b/public/terrain/19/858553/353893.terrain differ diff --git a/public/terrain/19/858553/353894.terrain b/public/terrain/19/858553/353894.terrain new file mode 100644 index 000000000..ad32540de Binary files /dev/null and b/public/terrain/19/858553/353894.terrain differ diff --git a/public/terrain/19/858553/353895.terrain b/public/terrain/19/858553/353895.terrain new file mode 100644 index 000000000..fbb4be674 Binary files /dev/null and b/public/terrain/19/858553/353895.terrain differ diff --git a/public/terrain/19/858553/353896.terrain b/public/terrain/19/858553/353896.terrain new file mode 100644 index 000000000..59e6ea39e Binary files /dev/null and b/public/terrain/19/858553/353896.terrain differ diff --git a/public/terrain/19/858553/353897.terrain b/public/terrain/19/858553/353897.terrain new file mode 100644 index 000000000..0de3ac809 Binary files /dev/null and b/public/terrain/19/858553/353897.terrain differ diff --git a/public/terrain/19/858553/353898.terrain b/public/terrain/19/858553/353898.terrain new file mode 100644 index 000000000..746f94ba6 Binary files /dev/null and b/public/terrain/19/858553/353898.terrain differ diff --git a/public/terrain/19/858553/353899.terrain b/public/terrain/19/858553/353899.terrain new file mode 100644 index 000000000..07857d33c Binary files /dev/null and b/public/terrain/19/858553/353899.terrain differ diff --git a/public/terrain/19/858553/353900.terrain b/public/terrain/19/858553/353900.terrain new file mode 100644 index 000000000..21baa234f Binary files /dev/null and b/public/terrain/19/858553/353900.terrain differ diff --git a/public/terrain/19/858553/353901.terrain b/public/terrain/19/858553/353901.terrain new file mode 100644 index 000000000..f2bb10795 Binary files /dev/null and b/public/terrain/19/858553/353901.terrain differ diff --git a/public/terrain/19/858553/353902.terrain b/public/terrain/19/858553/353902.terrain new file mode 100644 index 000000000..411478c94 Binary files /dev/null and b/public/terrain/19/858553/353902.terrain differ diff --git a/public/terrain/19/858553/353903.terrain b/public/terrain/19/858553/353903.terrain new file mode 100644 index 000000000..03d3cc520 Binary files /dev/null and b/public/terrain/19/858553/353903.terrain differ diff --git a/public/terrain/19/858553/353904.terrain b/public/terrain/19/858553/353904.terrain new file mode 100644 index 000000000..7223fd48a Binary files /dev/null and b/public/terrain/19/858553/353904.terrain differ diff --git a/public/terrain/19/858553/353905.terrain b/public/terrain/19/858553/353905.terrain new file mode 100644 index 000000000..788e59067 Binary files /dev/null and b/public/terrain/19/858553/353905.terrain differ diff --git a/public/terrain/19/858553/353906.terrain b/public/terrain/19/858553/353906.terrain new file mode 100644 index 000000000..03abf8d4b Binary files /dev/null and b/public/terrain/19/858553/353906.terrain differ diff --git a/public/terrain/19/858553/353907.terrain b/public/terrain/19/858553/353907.terrain new file mode 100644 index 000000000..ee9ef5fca Binary files /dev/null and b/public/terrain/19/858553/353907.terrain differ diff --git a/public/terrain/19/858553/353908.terrain b/public/terrain/19/858553/353908.terrain new file mode 100644 index 000000000..42b872a72 Binary files /dev/null and b/public/terrain/19/858553/353908.terrain differ diff --git a/public/terrain/19/858553/353909.terrain b/public/terrain/19/858553/353909.terrain new file mode 100644 index 000000000..a9e166599 Binary files /dev/null and b/public/terrain/19/858553/353909.terrain differ diff --git a/public/terrain/19/858553/353910.terrain b/public/terrain/19/858553/353910.terrain new file mode 100644 index 000000000..9bc08f2cb Binary files /dev/null and b/public/terrain/19/858553/353910.terrain differ diff --git a/public/terrain/19/858553/353911.terrain b/public/terrain/19/858553/353911.terrain new file mode 100644 index 000000000..61cfa32fb Binary files /dev/null and b/public/terrain/19/858553/353911.terrain differ diff --git a/public/terrain/19/858553/353912.terrain b/public/terrain/19/858553/353912.terrain new file mode 100644 index 000000000..eae23728f Binary files /dev/null and b/public/terrain/19/858553/353912.terrain differ diff --git a/public/terrain/19/858553/353913.terrain b/public/terrain/19/858553/353913.terrain new file mode 100644 index 000000000..ae9e36d73 Binary files /dev/null and b/public/terrain/19/858553/353913.terrain differ diff --git a/public/terrain/19/858553/353914.terrain b/public/terrain/19/858553/353914.terrain new file mode 100644 index 000000000..3e48a91d9 Binary files /dev/null and b/public/terrain/19/858553/353914.terrain differ diff --git a/public/terrain/19/858553/353915.terrain b/public/terrain/19/858553/353915.terrain new file mode 100644 index 000000000..5550182eb Binary files /dev/null and b/public/terrain/19/858553/353915.terrain differ diff --git a/public/terrain/19/858553/353916.terrain b/public/terrain/19/858553/353916.terrain new file mode 100644 index 000000000..b782f8ed0 Binary files /dev/null and b/public/terrain/19/858553/353916.terrain differ diff --git a/public/terrain/19/858553/353917.terrain b/public/terrain/19/858553/353917.terrain new file mode 100644 index 000000000..0c6e4c02f Binary files /dev/null and b/public/terrain/19/858553/353917.terrain differ diff --git a/public/terrain/19/858553/353918.terrain b/public/terrain/19/858553/353918.terrain new file mode 100644 index 000000000..f42e94ae1 Binary files /dev/null and b/public/terrain/19/858553/353918.terrain differ diff --git a/public/terrain/19/858553/353919.terrain b/public/terrain/19/858553/353919.terrain new file mode 100644 index 000000000..e4b6741bf Binary files /dev/null and b/public/terrain/19/858553/353919.terrain differ diff --git a/public/terrain/19/858553/353920.terrain b/public/terrain/19/858553/353920.terrain new file mode 100644 index 000000000..f4f8549e1 Binary files /dev/null and b/public/terrain/19/858553/353920.terrain differ diff --git a/public/terrain/19/858553/353921.terrain b/public/terrain/19/858553/353921.terrain new file mode 100644 index 000000000..719de713b Binary files /dev/null and b/public/terrain/19/858553/353921.terrain differ diff --git a/public/terrain/19/858553/353922.terrain b/public/terrain/19/858553/353922.terrain new file mode 100644 index 000000000..4aa282e7d Binary files /dev/null and b/public/terrain/19/858553/353922.terrain differ diff --git a/public/terrain/19/858553/353923.terrain b/public/terrain/19/858553/353923.terrain new file mode 100644 index 000000000..83a5f59aa Binary files /dev/null and b/public/terrain/19/858553/353923.terrain differ diff --git a/public/terrain/19/858553/353924.terrain b/public/terrain/19/858553/353924.terrain new file mode 100644 index 000000000..8f13fd2c1 Binary files /dev/null and b/public/terrain/19/858553/353924.terrain differ diff --git a/public/terrain/19/858553/353925.terrain b/public/terrain/19/858553/353925.terrain new file mode 100644 index 000000000..ebccf816c Binary files /dev/null and b/public/terrain/19/858553/353925.terrain differ diff --git a/public/terrain/19/858553/353926.terrain b/public/terrain/19/858553/353926.terrain new file mode 100644 index 000000000..9b5989794 Binary files /dev/null and b/public/terrain/19/858553/353926.terrain differ diff --git a/public/terrain/19/858553/353927.terrain b/public/terrain/19/858553/353927.terrain new file mode 100644 index 000000000..ff5401851 Binary files /dev/null and b/public/terrain/19/858553/353927.terrain differ diff --git a/public/terrain/19/858553/353928.terrain b/public/terrain/19/858553/353928.terrain new file mode 100644 index 000000000..e6e54a3e3 Binary files /dev/null and b/public/terrain/19/858553/353928.terrain differ diff --git a/public/terrain/19/858553/353929.terrain b/public/terrain/19/858553/353929.terrain new file mode 100644 index 000000000..e7a25317b Binary files /dev/null and b/public/terrain/19/858553/353929.terrain differ diff --git a/public/terrain/19/858553/353930.terrain b/public/terrain/19/858553/353930.terrain new file mode 100644 index 000000000..eff5c1bc9 Binary files /dev/null and b/public/terrain/19/858553/353930.terrain differ diff --git a/public/terrain/19/858553/353931.terrain b/public/terrain/19/858553/353931.terrain new file mode 100644 index 000000000..c65a8fb13 Binary files /dev/null and b/public/terrain/19/858553/353931.terrain differ diff --git a/public/terrain/19/858553/353932.terrain b/public/terrain/19/858553/353932.terrain new file mode 100644 index 000000000..66786fd64 Binary files /dev/null and b/public/terrain/19/858553/353932.terrain differ diff --git a/public/terrain/19/858553/353933.terrain b/public/terrain/19/858553/353933.terrain new file mode 100644 index 000000000..7187ac307 Binary files /dev/null and b/public/terrain/19/858553/353933.terrain differ diff --git a/public/terrain/19/858553/353934.terrain b/public/terrain/19/858553/353934.terrain new file mode 100644 index 000000000..b5239fadb Binary files /dev/null and b/public/terrain/19/858553/353934.terrain differ diff --git a/public/terrain/19/858553/353935.terrain b/public/terrain/19/858553/353935.terrain new file mode 100644 index 000000000..ab34a815a Binary files /dev/null and b/public/terrain/19/858553/353935.terrain differ diff --git a/public/terrain/19/858553/353936.terrain b/public/terrain/19/858553/353936.terrain new file mode 100644 index 000000000..caa479381 Binary files /dev/null and b/public/terrain/19/858553/353936.terrain differ diff --git a/public/terrain/19/858553/353937.terrain b/public/terrain/19/858553/353937.terrain new file mode 100644 index 000000000..f7db5e41b Binary files /dev/null and b/public/terrain/19/858553/353937.terrain differ diff --git a/public/terrain/19/858553/353938.terrain b/public/terrain/19/858553/353938.terrain new file mode 100644 index 000000000..b8bc668c7 Binary files /dev/null and b/public/terrain/19/858553/353938.terrain differ diff --git a/public/terrain/19/858553/353939.terrain b/public/terrain/19/858553/353939.terrain new file mode 100644 index 000000000..cc84c9fac Binary files /dev/null and b/public/terrain/19/858553/353939.terrain differ diff --git a/public/terrain/19/858553/353940.terrain b/public/terrain/19/858553/353940.terrain new file mode 100644 index 000000000..6f9af594b Binary files /dev/null and b/public/terrain/19/858553/353940.terrain differ diff --git a/public/terrain/19/858553/353941.terrain b/public/terrain/19/858553/353941.terrain new file mode 100644 index 000000000..ef45b6ee0 Binary files /dev/null and b/public/terrain/19/858553/353941.terrain differ diff --git a/public/terrain/19/858553/353942.terrain b/public/terrain/19/858553/353942.terrain new file mode 100644 index 000000000..a3e990ca7 Binary files /dev/null and b/public/terrain/19/858553/353942.terrain differ diff --git a/public/terrain/19/858553/353943.terrain b/public/terrain/19/858553/353943.terrain new file mode 100644 index 000000000..215c1347d Binary files /dev/null and b/public/terrain/19/858553/353943.terrain differ diff --git a/public/terrain/19/858553/353944.terrain b/public/terrain/19/858553/353944.terrain new file mode 100644 index 000000000..ed5ff39cb Binary files /dev/null and b/public/terrain/19/858553/353944.terrain differ diff --git a/public/terrain/19/858553/353945.terrain b/public/terrain/19/858553/353945.terrain new file mode 100644 index 000000000..63af38523 Binary files /dev/null and b/public/terrain/19/858553/353945.terrain differ diff --git a/public/terrain/19/858553/353946.terrain b/public/terrain/19/858553/353946.terrain new file mode 100644 index 000000000..669cc74c2 Binary files /dev/null and b/public/terrain/19/858553/353946.terrain differ diff --git a/public/terrain/19/858553/353947.terrain b/public/terrain/19/858553/353947.terrain new file mode 100644 index 000000000..492dc8f94 Binary files /dev/null and b/public/terrain/19/858553/353947.terrain differ diff --git a/public/terrain/19/858553/353948.terrain b/public/terrain/19/858553/353948.terrain new file mode 100644 index 000000000..8e3c944c0 Binary files /dev/null and b/public/terrain/19/858553/353948.terrain differ diff --git a/public/terrain/19/858553/353949.terrain b/public/terrain/19/858553/353949.terrain new file mode 100644 index 000000000..c8e4eff1f Binary files /dev/null and b/public/terrain/19/858553/353949.terrain differ diff --git a/public/terrain/19/858553/353950.terrain b/public/terrain/19/858553/353950.terrain new file mode 100644 index 000000000..50644a52c Binary files /dev/null and b/public/terrain/19/858553/353950.terrain differ diff --git a/public/terrain/19/858553/353951.terrain b/public/terrain/19/858553/353951.terrain new file mode 100644 index 000000000..95b352bc9 Binary files /dev/null and b/public/terrain/19/858553/353951.terrain differ diff --git a/public/terrain/19/858553/353952.terrain b/public/terrain/19/858553/353952.terrain new file mode 100644 index 000000000..18b89a516 Binary files /dev/null and b/public/terrain/19/858553/353952.terrain differ diff --git a/public/terrain/19/858553/353953.terrain b/public/terrain/19/858553/353953.terrain new file mode 100644 index 000000000..c5c210c23 Binary files /dev/null and b/public/terrain/19/858553/353953.terrain differ diff --git a/public/terrain/19/858553/353954.terrain b/public/terrain/19/858553/353954.terrain new file mode 100644 index 000000000..e8cd07796 Binary files /dev/null and b/public/terrain/19/858553/353954.terrain differ diff --git a/public/terrain/19/858553/353955.terrain b/public/terrain/19/858553/353955.terrain new file mode 100644 index 000000000..9b1310682 Binary files /dev/null and b/public/terrain/19/858553/353955.terrain differ diff --git a/public/terrain/19/858553/353956.terrain b/public/terrain/19/858553/353956.terrain new file mode 100644 index 000000000..cedb2ba02 Binary files /dev/null and b/public/terrain/19/858553/353956.terrain differ diff --git a/public/terrain/19/858553/353957.terrain b/public/terrain/19/858553/353957.terrain new file mode 100644 index 000000000..7a13852f8 Binary files /dev/null and b/public/terrain/19/858553/353957.terrain differ diff --git a/public/terrain/19/858553/353958.terrain b/public/terrain/19/858553/353958.terrain new file mode 100644 index 000000000..31d3b0af6 Binary files /dev/null and b/public/terrain/19/858553/353958.terrain differ diff --git a/public/terrain/19/858553/353959.terrain b/public/terrain/19/858553/353959.terrain new file mode 100644 index 000000000..a818bf494 Binary files /dev/null and b/public/terrain/19/858553/353959.terrain differ diff --git a/public/terrain/19/858553/353960.terrain b/public/terrain/19/858553/353960.terrain new file mode 100644 index 000000000..e2fcd3701 Binary files /dev/null and b/public/terrain/19/858553/353960.terrain differ diff --git a/public/terrain/19/858553/353961.terrain b/public/terrain/19/858553/353961.terrain new file mode 100644 index 000000000..2559effdd Binary files /dev/null and b/public/terrain/19/858553/353961.terrain differ diff --git a/public/terrain/19/858553/353962.terrain b/public/terrain/19/858553/353962.terrain new file mode 100644 index 000000000..e6ce2ab0e Binary files /dev/null and b/public/terrain/19/858553/353962.terrain differ diff --git a/public/terrain/19/858553/353963.terrain b/public/terrain/19/858553/353963.terrain new file mode 100644 index 000000000..0e5ff5753 Binary files /dev/null and b/public/terrain/19/858553/353963.terrain differ diff --git a/public/terrain/19/858553/353964.terrain b/public/terrain/19/858553/353964.terrain new file mode 100644 index 000000000..d602a9c06 Binary files /dev/null and b/public/terrain/19/858553/353964.terrain differ diff --git a/public/terrain/19/858553/353965.terrain b/public/terrain/19/858553/353965.terrain new file mode 100644 index 000000000..dc488bf28 Binary files /dev/null and b/public/terrain/19/858553/353965.terrain differ diff --git a/public/terrain/19/858553/353966.terrain b/public/terrain/19/858553/353966.terrain new file mode 100644 index 000000000..7278ff2aa Binary files /dev/null and b/public/terrain/19/858553/353966.terrain differ diff --git a/public/terrain/19/858553/353967.terrain b/public/terrain/19/858553/353967.terrain new file mode 100644 index 000000000..bd8083a08 Binary files /dev/null and b/public/terrain/19/858553/353967.terrain differ diff --git a/public/terrain/19/858553/353968.terrain b/public/terrain/19/858553/353968.terrain new file mode 100644 index 000000000..6cb3544e0 Binary files /dev/null and b/public/terrain/19/858553/353968.terrain differ diff --git a/public/terrain/19/858553/353969.terrain b/public/terrain/19/858553/353969.terrain new file mode 100644 index 000000000..9344caa7e Binary files /dev/null and b/public/terrain/19/858553/353969.terrain differ diff --git a/public/terrain/19/858553/353970.terrain b/public/terrain/19/858553/353970.terrain new file mode 100644 index 000000000..aa2856bc5 Binary files /dev/null and b/public/terrain/19/858553/353970.terrain differ diff --git a/public/terrain/19/858553/353971.terrain b/public/terrain/19/858553/353971.terrain new file mode 100644 index 000000000..b7c561912 Binary files /dev/null and b/public/terrain/19/858553/353971.terrain differ diff --git a/public/terrain/19/858553/353972.terrain b/public/terrain/19/858553/353972.terrain new file mode 100644 index 000000000..54046910c Binary files /dev/null and b/public/terrain/19/858553/353972.terrain differ diff --git a/public/terrain/19/858553/353973.terrain b/public/terrain/19/858553/353973.terrain new file mode 100644 index 000000000..dddad2fb5 Binary files /dev/null and b/public/terrain/19/858553/353973.terrain differ diff --git a/public/terrain/19/858553/353974.terrain b/public/terrain/19/858553/353974.terrain new file mode 100644 index 000000000..fff7e8182 Binary files /dev/null and b/public/terrain/19/858553/353974.terrain differ diff --git a/public/terrain/19/858553/353975.terrain b/public/terrain/19/858553/353975.terrain new file mode 100644 index 000000000..ba0ff8244 Binary files /dev/null and b/public/terrain/19/858553/353975.terrain differ diff --git a/public/terrain/19/858553/353976.terrain b/public/terrain/19/858553/353976.terrain new file mode 100644 index 000000000..b3ed9cb3d Binary files /dev/null and b/public/terrain/19/858553/353976.terrain differ diff --git a/public/terrain/19/858553/353977.terrain b/public/terrain/19/858553/353977.terrain new file mode 100644 index 000000000..abf2fcdd6 Binary files /dev/null and b/public/terrain/19/858553/353977.terrain differ diff --git a/public/terrain/19/858553/353978.terrain b/public/terrain/19/858553/353978.terrain new file mode 100644 index 000000000..94f5f41c1 Binary files /dev/null and b/public/terrain/19/858553/353978.terrain differ diff --git a/public/terrain/19/858553/353979.terrain b/public/terrain/19/858553/353979.terrain new file mode 100644 index 000000000..607467b18 Binary files /dev/null and b/public/terrain/19/858553/353979.terrain differ diff --git a/public/terrain/19/858553/353980.terrain b/public/terrain/19/858553/353980.terrain new file mode 100644 index 000000000..828485f48 Binary files /dev/null and b/public/terrain/19/858553/353980.terrain differ diff --git a/public/terrain/19/858553/353981.terrain b/public/terrain/19/858553/353981.terrain new file mode 100644 index 000000000..eaa55c43b Binary files /dev/null and b/public/terrain/19/858553/353981.terrain differ diff --git a/public/terrain/19/858553/353982.terrain b/public/terrain/19/858553/353982.terrain new file mode 100644 index 000000000..3b6c09ed0 Binary files /dev/null and b/public/terrain/19/858553/353982.terrain differ diff --git a/public/terrain/19/858553/353983.terrain b/public/terrain/19/858553/353983.terrain new file mode 100644 index 000000000..cfffddb0c Binary files /dev/null and b/public/terrain/19/858553/353983.terrain differ diff --git a/public/terrain/19/858553/353984.terrain b/public/terrain/19/858553/353984.terrain new file mode 100644 index 000000000..d3caad1cd Binary files /dev/null and b/public/terrain/19/858553/353984.terrain differ diff --git a/public/terrain/19/858553/353985.terrain b/public/terrain/19/858553/353985.terrain new file mode 100644 index 000000000..fa9155444 Binary files /dev/null and b/public/terrain/19/858553/353985.terrain differ diff --git a/public/terrain/19/858553/353986.terrain b/public/terrain/19/858553/353986.terrain new file mode 100644 index 000000000..3ded40488 Binary files /dev/null and b/public/terrain/19/858553/353986.terrain differ diff --git a/public/terrain/19/858553/353987.terrain b/public/terrain/19/858553/353987.terrain new file mode 100644 index 000000000..dfbc46329 Binary files /dev/null and b/public/terrain/19/858553/353987.terrain differ diff --git a/public/terrain/19/858553/353988.terrain b/public/terrain/19/858553/353988.terrain new file mode 100644 index 000000000..bf9d7e13d Binary files /dev/null and b/public/terrain/19/858553/353988.terrain differ diff --git a/public/terrain/19/858553/353989.terrain b/public/terrain/19/858553/353989.terrain new file mode 100644 index 000000000..3a039394e Binary files /dev/null and b/public/terrain/19/858553/353989.terrain differ diff --git a/public/terrain/19/858553/353990.terrain b/public/terrain/19/858553/353990.terrain new file mode 100644 index 000000000..b3011abb3 Binary files /dev/null and b/public/terrain/19/858553/353990.terrain differ diff --git a/public/terrain/19/858553/353991.terrain b/public/terrain/19/858553/353991.terrain new file mode 100644 index 000000000..db2aca32f Binary files /dev/null and b/public/terrain/19/858553/353991.terrain differ diff --git a/public/terrain/19/858553/353992.terrain b/public/terrain/19/858553/353992.terrain new file mode 100644 index 000000000..67736412a Binary files /dev/null and b/public/terrain/19/858553/353992.terrain differ diff --git a/public/terrain/19/858553/353993.terrain b/public/terrain/19/858553/353993.terrain new file mode 100644 index 000000000..fdf434ebd Binary files /dev/null and b/public/terrain/19/858553/353993.terrain differ diff --git a/public/terrain/19/858553/353994.terrain b/public/terrain/19/858553/353994.terrain new file mode 100644 index 000000000..65b5e5034 Binary files /dev/null and b/public/terrain/19/858553/353994.terrain differ diff --git a/public/terrain/19/858553/353995.terrain b/public/terrain/19/858553/353995.terrain new file mode 100644 index 000000000..667d415d2 Binary files /dev/null and b/public/terrain/19/858553/353995.terrain differ diff --git a/public/terrain/19/858553/353996.terrain b/public/terrain/19/858553/353996.terrain new file mode 100644 index 000000000..60534e663 Binary files /dev/null and b/public/terrain/19/858553/353996.terrain differ diff --git a/public/terrain/19/858553/353997.terrain b/public/terrain/19/858553/353997.terrain new file mode 100644 index 000000000..63d370f47 Binary files /dev/null and b/public/terrain/19/858553/353997.terrain differ diff --git a/public/terrain/19/858553/353998.terrain b/public/terrain/19/858553/353998.terrain new file mode 100644 index 000000000..1ff953916 Binary files /dev/null and b/public/terrain/19/858553/353998.terrain differ diff --git a/public/terrain/19/858553/353999.terrain b/public/terrain/19/858553/353999.terrain new file mode 100644 index 000000000..9cf30443e Binary files /dev/null and b/public/terrain/19/858553/353999.terrain differ diff --git a/public/terrain/19/858553/354000.terrain b/public/terrain/19/858553/354000.terrain new file mode 100644 index 000000000..6b42b83e4 Binary files /dev/null and b/public/terrain/19/858553/354000.terrain differ diff --git a/public/terrain/19/858553/354001.terrain b/public/terrain/19/858553/354001.terrain new file mode 100644 index 000000000..32bb68714 Binary files /dev/null and b/public/terrain/19/858553/354001.terrain differ diff --git a/public/terrain/19/858553/354002.terrain b/public/terrain/19/858553/354002.terrain new file mode 100644 index 000000000..7250ba683 Binary files /dev/null and b/public/terrain/19/858553/354002.terrain differ diff --git a/public/terrain/19/858553/354003.terrain b/public/terrain/19/858553/354003.terrain new file mode 100644 index 000000000..81924374e Binary files /dev/null and b/public/terrain/19/858553/354003.terrain differ diff --git a/public/terrain/19/858553/354004.terrain b/public/terrain/19/858553/354004.terrain new file mode 100644 index 000000000..d207e0bce Binary files /dev/null and b/public/terrain/19/858553/354004.terrain differ diff --git a/public/terrain/19/858553/354005.terrain b/public/terrain/19/858553/354005.terrain new file mode 100644 index 000000000..ae6d57b6e Binary files /dev/null and b/public/terrain/19/858553/354005.terrain differ diff --git a/public/terrain/19/858553/354006.terrain b/public/terrain/19/858553/354006.terrain new file mode 100644 index 000000000..18aad35f8 Binary files /dev/null and b/public/terrain/19/858553/354006.terrain differ diff --git a/public/terrain/19/858553/354007.terrain b/public/terrain/19/858553/354007.terrain new file mode 100644 index 000000000..0252a8a90 Binary files /dev/null and b/public/terrain/19/858553/354007.terrain differ diff --git a/public/terrain/19/858553/354008.terrain b/public/terrain/19/858553/354008.terrain new file mode 100644 index 000000000..46bb5b39b Binary files /dev/null and b/public/terrain/19/858553/354008.terrain differ diff --git a/public/terrain/19/858553/354009.terrain b/public/terrain/19/858553/354009.terrain new file mode 100644 index 000000000..cefe2ac02 Binary files /dev/null and b/public/terrain/19/858553/354009.terrain differ diff --git a/public/terrain/19/858553/354010.terrain b/public/terrain/19/858553/354010.terrain new file mode 100644 index 000000000..176d8959c Binary files /dev/null and b/public/terrain/19/858553/354010.terrain differ diff --git a/public/terrain/19/858553/354011.terrain b/public/terrain/19/858553/354011.terrain new file mode 100644 index 000000000..a6977552d Binary files /dev/null and b/public/terrain/19/858553/354011.terrain differ diff --git a/public/terrain/19/858553/354012.terrain b/public/terrain/19/858553/354012.terrain new file mode 100644 index 000000000..7a37f3ec2 Binary files /dev/null and b/public/terrain/19/858553/354012.terrain differ diff --git a/public/terrain/19/858553/354013.terrain b/public/terrain/19/858553/354013.terrain new file mode 100644 index 000000000..ae585117b Binary files /dev/null and b/public/terrain/19/858553/354013.terrain differ diff --git a/public/terrain/19/858553/354014.terrain b/public/terrain/19/858553/354014.terrain new file mode 100644 index 000000000..99c422a34 Binary files /dev/null and b/public/terrain/19/858553/354014.terrain differ diff --git a/public/terrain/19/858553/354015.terrain b/public/terrain/19/858553/354015.terrain new file mode 100644 index 000000000..d2eab8b14 Binary files /dev/null and b/public/terrain/19/858553/354015.terrain differ diff --git a/public/terrain/19/858553/354016.terrain b/public/terrain/19/858553/354016.terrain new file mode 100644 index 000000000..ee5f52926 Binary files /dev/null and b/public/terrain/19/858553/354016.terrain differ diff --git a/public/terrain/19/858553/354017.terrain b/public/terrain/19/858553/354017.terrain new file mode 100644 index 000000000..e60d9f391 Binary files /dev/null and b/public/terrain/19/858553/354017.terrain differ diff --git a/public/terrain/19/858553/354018.terrain b/public/terrain/19/858553/354018.terrain new file mode 100644 index 000000000..d912754cc Binary files /dev/null and b/public/terrain/19/858553/354018.terrain differ diff --git a/public/terrain/19/858553/354019.terrain b/public/terrain/19/858553/354019.terrain new file mode 100644 index 000000000..75a13bbe1 Binary files /dev/null and b/public/terrain/19/858553/354019.terrain differ diff --git a/public/terrain/19/858553/354020.terrain b/public/terrain/19/858553/354020.terrain new file mode 100644 index 000000000..e0adc7c46 Binary files /dev/null and b/public/terrain/19/858553/354020.terrain differ diff --git a/public/terrain/19/858553/354021.terrain b/public/terrain/19/858553/354021.terrain new file mode 100644 index 000000000..f9491cff3 Binary files /dev/null and b/public/terrain/19/858553/354021.terrain differ diff --git a/public/terrain/19/858553/354022.terrain b/public/terrain/19/858553/354022.terrain new file mode 100644 index 000000000..e05d0f279 Binary files /dev/null and b/public/terrain/19/858553/354022.terrain differ diff --git a/public/terrain/19/858553/354023.terrain b/public/terrain/19/858553/354023.terrain new file mode 100644 index 000000000..67ad236d7 Binary files /dev/null and b/public/terrain/19/858553/354023.terrain differ diff --git a/public/terrain/19/858553/354024.terrain b/public/terrain/19/858553/354024.terrain new file mode 100644 index 000000000..b5a8ccd02 Binary files /dev/null and b/public/terrain/19/858553/354024.terrain differ diff --git a/public/terrain/19/858553/354025.terrain b/public/terrain/19/858553/354025.terrain new file mode 100644 index 000000000..d833be3a1 Binary files /dev/null and b/public/terrain/19/858553/354025.terrain differ diff --git a/public/terrain/19/858553/354026.terrain b/public/terrain/19/858553/354026.terrain new file mode 100644 index 000000000..ad9d39833 Binary files /dev/null and b/public/terrain/19/858553/354026.terrain differ diff --git a/public/terrain/19/858553/354027.terrain b/public/terrain/19/858553/354027.terrain new file mode 100644 index 000000000..7c1463f7d Binary files /dev/null and b/public/terrain/19/858553/354027.terrain differ diff --git a/public/terrain/19/858553/354028.terrain b/public/terrain/19/858553/354028.terrain new file mode 100644 index 000000000..db619c7ba Binary files /dev/null and b/public/terrain/19/858553/354028.terrain differ diff --git a/public/terrain/19/858553/354029.terrain b/public/terrain/19/858553/354029.terrain new file mode 100644 index 000000000..cbe4cc9d6 Binary files /dev/null and b/public/terrain/19/858553/354029.terrain differ diff --git a/public/terrain/19/858553/354030.terrain b/public/terrain/19/858553/354030.terrain new file mode 100644 index 000000000..af420ef2b Binary files /dev/null and b/public/terrain/19/858553/354030.terrain differ diff --git a/public/terrain/19/858553/354031.terrain b/public/terrain/19/858553/354031.terrain new file mode 100644 index 000000000..6d323282c Binary files /dev/null and b/public/terrain/19/858553/354031.terrain differ diff --git a/public/terrain/19/858553/354032.terrain b/public/terrain/19/858553/354032.terrain new file mode 100644 index 000000000..91f2daa85 Binary files /dev/null and b/public/terrain/19/858553/354032.terrain differ diff --git a/public/terrain/19/858553/354033.terrain b/public/terrain/19/858553/354033.terrain new file mode 100644 index 000000000..6688f5227 Binary files /dev/null and b/public/terrain/19/858553/354033.terrain differ diff --git a/public/terrain/19/858553/354034.terrain b/public/terrain/19/858553/354034.terrain new file mode 100644 index 000000000..1ffdc85ff Binary files /dev/null and b/public/terrain/19/858553/354034.terrain differ diff --git a/public/terrain/19/858553/354035.terrain b/public/terrain/19/858553/354035.terrain new file mode 100644 index 000000000..b49cbb4d2 Binary files /dev/null and b/public/terrain/19/858553/354035.terrain differ diff --git a/public/terrain/19/858553/354036.terrain b/public/terrain/19/858553/354036.terrain new file mode 100644 index 000000000..441b990c0 Binary files /dev/null and b/public/terrain/19/858553/354036.terrain differ diff --git a/public/terrain/19/858553/354037.terrain b/public/terrain/19/858553/354037.terrain new file mode 100644 index 000000000..0f23ff336 Binary files /dev/null and b/public/terrain/19/858553/354037.terrain differ diff --git a/public/terrain/19/858553/354038.terrain b/public/terrain/19/858553/354038.terrain new file mode 100644 index 000000000..959fe7cb4 Binary files /dev/null and b/public/terrain/19/858553/354038.terrain differ diff --git a/public/terrain/19/858553/354039.terrain b/public/terrain/19/858553/354039.terrain new file mode 100644 index 000000000..7eefce7a3 Binary files /dev/null and b/public/terrain/19/858553/354039.terrain differ diff --git a/public/terrain/19/858553/354040.terrain b/public/terrain/19/858553/354040.terrain new file mode 100644 index 000000000..42cc77463 Binary files /dev/null and b/public/terrain/19/858553/354040.terrain differ diff --git a/public/terrain/19/858553/354041.terrain b/public/terrain/19/858553/354041.terrain new file mode 100644 index 000000000..7526690f9 Binary files /dev/null and b/public/terrain/19/858553/354041.terrain differ diff --git a/public/terrain/19/858553/354042.terrain b/public/terrain/19/858553/354042.terrain new file mode 100644 index 000000000..90da0158a Binary files /dev/null and b/public/terrain/19/858553/354042.terrain differ diff --git a/public/terrain/19/858553/354043.terrain b/public/terrain/19/858553/354043.terrain new file mode 100644 index 000000000..2183b6563 Binary files /dev/null and b/public/terrain/19/858553/354043.terrain differ diff --git a/public/terrain/19/858553/354044.terrain b/public/terrain/19/858553/354044.terrain new file mode 100644 index 000000000..eb202e120 Binary files /dev/null and b/public/terrain/19/858553/354044.terrain differ diff --git a/public/terrain/19/858553/354045.terrain b/public/terrain/19/858553/354045.terrain new file mode 100644 index 000000000..4f370de09 Binary files /dev/null and b/public/terrain/19/858553/354045.terrain differ diff --git a/public/terrain/19/858553/354046.terrain b/public/terrain/19/858553/354046.terrain new file mode 100644 index 000000000..43b25dfbc Binary files /dev/null and b/public/terrain/19/858553/354046.terrain differ diff --git a/public/terrain/19/858553/354047.terrain b/public/terrain/19/858553/354047.terrain new file mode 100644 index 000000000..dde2397ed Binary files /dev/null and b/public/terrain/19/858553/354047.terrain differ diff --git a/public/terrain/19/858553/354048.terrain b/public/terrain/19/858553/354048.terrain new file mode 100644 index 000000000..ebdda6ec3 Binary files /dev/null and b/public/terrain/19/858553/354048.terrain differ diff --git a/public/terrain/19/858553/354049.terrain b/public/terrain/19/858553/354049.terrain new file mode 100644 index 000000000..c26e43014 Binary files /dev/null and b/public/terrain/19/858553/354049.terrain differ diff --git a/public/terrain/19/858553/354050.terrain b/public/terrain/19/858553/354050.terrain new file mode 100644 index 000000000..5110dc9e5 Binary files /dev/null and b/public/terrain/19/858553/354050.terrain differ diff --git a/public/terrain/19/858553/354051.terrain b/public/terrain/19/858553/354051.terrain new file mode 100644 index 000000000..297f4d194 Binary files /dev/null and b/public/terrain/19/858553/354051.terrain differ diff --git a/public/terrain/19/858553/354052.terrain b/public/terrain/19/858553/354052.terrain new file mode 100644 index 000000000..b86ef53e5 Binary files /dev/null and b/public/terrain/19/858553/354052.terrain differ diff --git a/public/terrain/19/858553/354053.terrain b/public/terrain/19/858553/354053.terrain new file mode 100644 index 000000000..f86caf395 Binary files /dev/null and b/public/terrain/19/858553/354053.terrain differ diff --git a/public/terrain/19/858553/354054.terrain b/public/terrain/19/858553/354054.terrain new file mode 100644 index 000000000..1e61071e2 Binary files /dev/null and b/public/terrain/19/858553/354054.terrain differ diff --git a/public/terrain/19/858553/354055.terrain b/public/terrain/19/858553/354055.terrain new file mode 100644 index 000000000..b2ee992ff Binary files /dev/null and b/public/terrain/19/858553/354055.terrain differ diff --git a/public/terrain/19/858553/354056.terrain b/public/terrain/19/858553/354056.terrain new file mode 100644 index 000000000..0cd6472d2 Binary files /dev/null and b/public/terrain/19/858553/354056.terrain differ diff --git a/public/terrain/19/858553/354057.terrain b/public/terrain/19/858553/354057.terrain new file mode 100644 index 000000000..30184bef6 Binary files /dev/null and b/public/terrain/19/858553/354057.terrain differ diff --git a/public/terrain/19/858553/354058.terrain b/public/terrain/19/858553/354058.terrain new file mode 100644 index 000000000..efac5e959 Binary files /dev/null and b/public/terrain/19/858553/354058.terrain differ diff --git a/public/terrain/19/858553/354059.terrain b/public/terrain/19/858553/354059.terrain new file mode 100644 index 000000000..b3d095b2b Binary files /dev/null and b/public/terrain/19/858553/354059.terrain differ diff --git a/public/terrain/19/858554/353743.terrain b/public/terrain/19/858554/353743.terrain new file mode 100644 index 000000000..27ca93b12 Binary files /dev/null and b/public/terrain/19/858554/353743.terrain differ diff --git a/public/terrain/19/858554/353744.terrain b/public/terrain/19/858554/353744.terrain new file mode 100644 index 000000000..6b8e27a02 Binary files /dev/null and b/public/terrain/19/858554/353744.terrain differ diff --git a/public/terrain/19/858554/353745.terrain b/public/terrain/19/858554/353745.terrain new file mode 100644 index 000000000..e3f904cbb Binary files /dev/null and b/public/terrain/19/858554/353745.terrain differ diff --git a/public/terrain/19/858554/353746.terrain b/public/terrain/19/858554/353746.terrain new file mode 100644 index 000000000..fd30d8c1e Binary files /dev/null and b/public/terrain/19/858554/353746.terrain differ diff --git a/public/terrain/19/858554/353747.terrain b/public/terrain/19/858554/353747.terrain new file mode 100644 index 000000000..a80f5bdf4 Binary files /dev/null and b/public/terrain/19/858554/353747.terrain differ diff --git a/public/terrain/19/858554/353748.terrain b/public/terrain/19/858554/353748.terrain new file mode 100644 index 000000000..f6f4f25c5 Binary files /dev/null and b/public/terrain/19/858554/353748.terrain differ diff --git a/public/terrain/19/858554/353749.terrain b/public/terrain/19/858554/353749.terrain new file mode 100644 index 000000000..e719baa7e Binary files /dev/null and b/public/terrain/19/858554/353749.terrain differ diff --git a/public/terrain/19/858554/353750.terrain b/public/terrain/19/858554/353750.terrain new file mode 100644 index 000000000..8b23aea8f Binary files /dev/null and b/public/terrain/19/858554/353750.terrain differ diff --git a/public/terrain/19/858554/353751.terrain b/public/terrain/19/858554/353751.terrain new file mode 100644 index 000000000..8343a30ee Binary files /dev/null and b/public/terrain/19/858554/353751.terrain differ diff --git a/public/terrain/19/858554/353752.terrain b/public/terrain/19/858554/353752.terrain new file mode 100644 index 000000000..baa086ccb Binary files /dev/null and b/public/terrain/19/858554/353752.terrain differ diff --git a/public/terrain/19/858554/353753.terrain b/public/terrain/19/858554/353753.terrain new file mode 100644 index 000000000..24a52dfa4 Binary files /dev/null and b/public/terrain/19/858554/353753.terrain differ diff --git a/public/terrain/19/858554/353754.terrain b/public/terrain/19/858554/353754.terrain new file mode 100644 index 000000000..9a49e5d59 Binary files /dev/null and b/public/terrain/19/858554/353754.terrain differ diff --git a/public/terrain/19/858554/353755.terrain b/public/terrain/19/858554/353755.terrain new file mode 100644 index 000000000..af085e127 Binary files /dev/null and b/public/terrain/19/858554/353755.terrain differ diff --git a/public/terrain/19/858554/353756.terrain b/public/terrain/19/858554/353756.terrain new file mode 100644 index 000000000..0e2696311 Binary files /dev/null and b/public/terrain/19/858554/353756.terrain differ diff --git a/public/terrain/19/858554/353757.terrain b/public/terrain/19/858554/353757.terrain new file mode 100644 index 000000000..accad323f Binary files /dev/null and b/public/terrain/19/858554/353757.terrain differ diff --git a/public/terrain/19/858554/353758.terrain b/public/terrain/19/858554/353758.terrain new file mode 100644 index 000000000..f533e1203 Binary files /dev/null and b/public/terrain/19/858554/353758.terrain differ diff --git a/public/terrain/19/858554/353759.terrain b/public/terrain/19/858554/353759.terrain new file mode 100644 index 000000000..5966f682b Binary files /dev/null and b/public/terrain/19/858554/353759.terrain differ diff --git a/public/terrain/19/858554/353760.terrain b/public/terrain/19/858554/353760.terrain new file mode 100644 index 000000000..02a38f775 Binary files /dev/null and b/public/terrain/19/858554/353760.terrain differ diff --git a/public/terrain/19/858554/353761.terrain b/public/terrain/19/858554/353761.terrain new file mode 100644 index 000000000..222844c23 Binary files /dev/null and b/public/terrain/19/858554/353761.terrain differ diff --git a/public/terrain/19/858554/353762.terrain b/public/terrain/19/858554/353762.terrain new file mode 100644 index 000000000..db1ee7385 Binary files /dev/null and b/public/terrain/19/858554/353762.terrain differ diff --git a/public/terrain/19/858554/353763.terrain b/public/terrain/19/858554/353763.terrain new file mode 100644 index 000000000..0a3823837 Binary files /dev/null and b/public/terrain/19/858554/353763.terrain differ diff --git a/public/terrain/19/858554/353764.terrain b/public/terrain/19/858554/353764.terrain new file mode 100644 index 000000000..56649af95 Binary files /dev/null and b/public/terrain/19/858554/353764.terrain differ diff --git a/public/terrain/19/858554/353765.terrain b/public/terrain/19/858554/353765.terrain new file mode 100644 index 000000000..ee2f96098 Binary files /dev/null and b/public/terrain/19/858554/353765.terrain differ diff --git a/public/terrain/19/858554/353766.terrain b/public/terrain/19/858554/353766.terrain new file mode 100644 index 000000000..6e488bd84 Binary files /dev/null and b/public/terrain/19/858554/353766.terrain differ diff --git a/public/terrain/19/858554/353767.terrain b/public/terrain/19/858554/353767.terrain new file mode 100644 index 000000000..caa5b27ce Binary files /dev/null and b/public/terrain/19/858554/353767.terrain differ diff --git a/public/terrain/19/858554/353768.terrain b/public/terrain/19/858554/353768.terrain new file mode 100644 index 000000000..65d049ed7 Binary files /dev/null and b/public/terrain/19/858554/353768.terrain differ diff --git a/public/terrain/19/858554/353769.terrain b/public/terrain/19/858554/353769.terrain new file mode 100644 index 000000000..adbdfdfb7 Binary files /dev/null and b/public/terrain/19/858554/353769.terrain differ diff --git a/public/terrain/19/858554/353770.terrain b/public/terrain/19/858554/353770.terrain new file mode 100644 index 000000000..8b740962f Binary files /dev/null and b/public/terrain/19/858554/353770.terrain differ diff --git a/public/terrain/19/858554/353771.terrain b/public/terrain/19/858554/353771.terrain new file mode 100644 index 000000000..546f64ca8 Binary files /dev/null and b/public/terrain/19/858554/353771.terrain differ diff --git a/public/terrain/19/858554/353772.terrain b/public/terrain/19/858554/353772.terrain new file mode 100644 index 000000000..f837fdb26 Binary files /dev/null and b/public/terrain/19/858554/353772.terrain differ diff --git a/public/terrain/19/858554/353773.terrain b/public/terrain/19/858554/353773.terrain new file mode 100644 index 000000000..e4cf03681 Binary files /dev/null and b/public/terrain/19/858554/353773.terrain differ diff --git a/public/terrain/19/858554/353774.terrain b/public/terrain/19/858554/353774.terrain new file mode 100644 index 000000000..a27c090fa Binary files /dev/null and b/public/terrain/19/858554/353774.terrain differ diff --git a/public/terrain/19/858554/353775.terrain b/public/terrain/19/858554/353775.terrain new file mode 100644 index 000000000..780e47fef Binary files /dev/null and b/public/terrain/19/858554/353775.terrain differ diff --git a/public/terrain/19/858554/353776.terrain b/public/terrain/19/858554/353776.terrain new file mode 100644 index 000000000..0742b4f7a Binary files /dev/null and b/public/terrain/19/858554/353776.terrain differ diff --git a/public/terrain/19/858554/353777.terrain b/public/terrain/19/858554/353777.terrain new file mode 100644 index 000000000..cf5a7ab84 Binary files /dev/null and b/public/terrain/19/858554/353777.terrain differ diff --git a/public/terrain/19/858554/353778.terrain b/public/terrain/19/858554/353778.terrain new file mode 100644 index 000000000..dfcfcb965 Binary files /dev/null and b/public/terrain/19/858554/353778.terrain differ diff --git a/public/terrain/19/858554/353779.terrain b/public/terrain/19/858554/353779.terrain new file mode 100644 index 000000000..cc9480048 Binary files /dev/null and b/public/terrain/19/858554/353779.terrain differ diff --git a/public/terrain/19/858554/353780.terrain b/public/terrain/19/858554/353780.terrain new file mode 100644 index 000000000..50d9b1732 Binary files /dev/null and b/public/terrain/19/858554/353780.terrain differ diff --git a/public/terrain/19/858554/353781.terrain b/public/terrain/19/858554/353781.terrain new file mode 100644 index 000000000..66200d154 Binary files /dev/null and b/public/terrain/19/858554/353781.terrain differ diff --git a/public/terrain/19/858554/353782.terrain b/public/terrain/19/858554/353782.terrain new file mode 100644 index 000000000..0981f15fd Binary files /dev/null and b/public/terrain/19/858554/353782.terrain differ diff --git a/public/terrain/19/858554/353783.terrain b/public/terrain/19/858554/353783.terrain new file mode 100644 index 000000000..639caed3f Binary files /dev/null and b/public/terrain/19/858554/353783.terrain differ diff --git a/public/terrain/19/858554/353784.terrain b/public/terrain/19/858554/353784.terrain new file mode 100644 index 000000000..4bd1ae159 Binary files /dev/null and b/public/terrain/19/858554/353784.terrain differ diff --git a/public/terrain/19/858554/353785.terrain b/public/terrain/19/858554/353785.terrain new file mode 100644 index 000000000..61d2fb268 Binary files /dev/null and b/public/terrain/19/858554/353785.terrain differ diff --git a/public/terrain/19/858554/353786.terrain b/public/terrain/19/858554/353786.terrain new file mode 100644 index 000000000..c6f96c3e5 Binary files /dev/null and b/public/terrain/19/858554/353786.terrain differ diff --git a/public/terrain/19/858554/353787.terrain b/public/terrain/19/858554/353787.terrain new file mode 100644 index 000000000..ed3a60ce2 Binary files /dev/null and b/public/terrain/19/858554/353787.terrain differ diff --git a/public/terrain/19/858554/353788.terrain b/public/terrain/19/858554/353788.terrain new file mode 100644 index 000000000..ba8ddf654 Binary files /dev/null and b/public/terrain/19/858554/353788.terrain differ diff --git a/public/terrain/19/858554/353789.terrain b/public/terrain/19/858554/353789.terrain new file mode 100644 index 000000000..9e20fd1cc Binary files /dev/null and b/public/terrain/19/858554/353789.terrain differ diff --git a/public/terrain/19/858554/353790.terrain b/public/terrain/19/858554/353790.terrain new file mode 100644 index 000000000..8bb04b7b3 Binary files /dev/null and b/public/terrain/19/858554/353790.terrain differ diff --git a/public/terrain/19/858554/353791.terrain b/public/terrain/19/858554/353791.terrain new file mode 100644 index 000000000..3fa929e64 Binary files /dev/null and b/public/terrain/19/858554/353791.terrain differ diff --git a/public/terrain/19/858554/353792.terrain b/public/terrain/19/858554/353792.terrain new file mode 100644 index 000000000..c2452edaa Binary files /dev/null and b/public/terrain/19/858554/353792.terrain differ diff --git a/public/terrain/19/858554/353793.terrain b/public/terrain/19/858554/353793.terrain new file mode 100644 index 000000000..6158534b5 Binary files /dev/null and b/public/terrain/19/858554/353793.terrain differ diff --git a/public/terrain/19/858554/353794.terrain b/public/terrain/19/858554/353794.terrain new file mode 100644 index 000000000..e44fba730 Binary files /dev/null and b/public/terrain/19/858554/353794.terrain differ diff --git a/public/terrain/19/858554/353795.terrain b/public/terrain/19/858554/353795.terrain new file mode 100644 index 000000000..035659ec6 Binary files /dev/null and b/public/terrain/19/858554/353795.terrain differ diff --git a/public/terrain/19/858554/353796.terrain b/public/terrain/19/858554/353796.terrain new file mode 100644 index 000000000..c3c4f1109 Binary files /dev/null and b/public/terrain/19/858554/353796.terrain differ diff --git a/public/terrain/19/858554/353797.terrain b/public/terrain/19/858554/353797.terrain new file mode 100644 index 000000000..f745e80bf Binary files /dev/null and b/public/terrain/19/858554/353797.terrain differ diff --git a/public/terrain/19/858554/353798.terrain b/public/terrain/19/858554/353798.terrain new file mode 100644 index 000000000..f3af064ee Binary files /dev/null and b/public/terrain/19/858554/353798.terrain differ diff --git a/public/terrain/19/858554/353799.terrain b/public/terrain/19/858554/353799.terrain new file mode 100644 index 000000000..518050d6b Binary files /dev/null and b/public/terrain/19/858554/353799.terrain differ diff --git a/public/terrain/19/858554/353800.terrain b/public/terrain/19/858554/353800.terrain new file mode 100644 index 000000000..90923aa08 Binary files /dev/null and b/public/terrain/19/858554/353800.terrain differ diff --git a/public/terrain/19/858554/353801.terrain b/public/terrain/19/858554/353801.terrain new file mode 100644 index 000000000..ab085d9a0 Binary files /dev/null and b/public/terrain/19/858554/353801.terrain differ diff --git a/public/terrain/19/858554/353802.terrain b/public/terrain/19/858554/353802.terrain new file mode 100644 index 000000000..6b4ef2a8c Binary files /dev/null and b/public/terrain/19/858554/353802.terrain differ diff --git a/public/terrain/19/858554/353803.terrain b/public/terrain/19/858554/353803.terrain new file mode 100644 index 000000000..044b87874 Binary files /dev/null and b/public/terrain/19/858554/353803.terrain differ diff --git a/public/terrain/19/858554/353804.terrain b/public/terrain/19/858554/353804.terrain new file mode 100644 index 000000000..084c53613 Binary files /dev/null and b/public/terrain/19/858554/353804.terrain differ diff --git a/public/terrain/19/858554/353805.terrain b/public/terrain/19/858554/353805.terrain new file mode 100644 index 000000000..3e6c7fb19 Binary files /dev/null and b/public/terrain/19/858554/353805.terrain differ diff --git a/public/terrain/19/858554/353806.terrain b/public/terrain/19/858554/353806.terrain new file mode 100644 index 000000000..66134557b Binary files /dev/null and b/public/terrain/19/858554/353806.terrain differ diff --git a/public/terrain/19/858554/353807.terrain b/public/terrain/19/858554/353807.terrain new file mode 100644 index 000000000..549f60dd7 Binary files /dev/null and b/public/terrain/19/858554/353807.terrain differ diff --git a/public/terrain/19/858554/353808.terrain b/public/terrain/19/858554/353808.terrain new file mode 100644 index 000000000..566050032 Binary files /dev/null and b/public/terrain/19/858554/353808.terrain differ diff --git a/public/terrain/19/858554/353809.terrain b/public/terrain/19/858554/353809.terrain new file mode 100644 index 000000000..a54e5d628 Binary files /dev/null and b/public/terrain/19/858554/353809.terrain differ diff --git a/public/terrain/19/858554/353810.terrain b/public/terrain/19/858554/353810.terrain new file mode 100644 index 000000000..d4a41d790 Binary files /dev/null and b/public/terrain/19/858554/353810.terrain differ diff --git a/public/terrain/19/858554/353811.terrain b/public/terrain/19/858554/353811.terrain new file mode 100644 index 000000000..6be07a4e1 Binary files /dev/null and b/public/terrain/19/858554/353811.terrain differ diff --git a/public/terrain/19/858554/353812.terrain b/public/terrain/19/858554/353812.terrain new file mode 100644 index 000000000..f08e9b168 Binary files /dev/null and b/public/terrain/19/858554/353812.terrain differ diff --git a/public/terrain/19/858554/353813.terrain b/public/terrain/19/858554/353813.terrain new file mode 100644 index 000000000..4cd8f9683 Binary files /dev/null and b/public/terrain/19/858554/353813.terrain differ diff --git a/public/terrain/19/858554/353814.terrain b/public/terrain/19/858554/353814.terrain new file mode 100644 index 000000000..b0bf3f971 Binary files /dev/null and b/public/terrain/19/858554/353814.terrain differ diff --git a/public/terrain/19/858554/353815.terrain b/public/terrain/19/858554/353815.terrain new file mode 100644 index 000000000..99644129a Binary files /dev/null and b/public/terrain/19/858554/353815.terrain differ diff --git a/public/terrain/19/858554/353816.terrain b/public/terrain/19/858554/353816.terrain new file mode 100644 index 000000000..269f02a3b Binary files /dev/null and b/public/terrain/19/858554/353816.terrain differ diff --git a/public/terrain/19/858554/353817.terrain b/public/terrain/19/858554/353817.terrain new file mode 100644 index 000000000..3f75a88e2 Binary files /dev/null and b/public/terrain/19/858554/353817.terrain differ diff --git a/public/terrain/19/858554/353818.terrain b/public/terrain/19/858554/353818.terrain new file mode 100644 index 000000000..6ed518c65 Binary files /dev/null and b/public/terrain/19/858554/353818.terrain differ diff --git a/public/terrain/19/858554/353819.terrain b/public/terrain/19/858554/353819.terrain new file mode 100644 index 000000000..3f720af15 Binary files /dev/null and b/public/terrain/19/858554/353819.terrain differ diff --git a/public/terrain/19/858554/353820.terrain b/public/terrain/19/858554/353820.terrain new file mode 100644 index 000000000..0133adfa3 Binary files /dev/null and b/public/terrain/19/858554/353820.terrain differ diff --git a/public/terrain/19/858554/353821.terrain b/public/terrain/19/858554/353821.terrain new file mode 100644 index 000000000..a70ababfb Binary files /dev/null and b/public/terrain/19/858554/353821.terrain differ diff --git a/public/terrain/19/858554/353822.terrain b/public/terrain/19/858554/353822.terrain new file mode 100644 index 000000000..fe840af37 Binary files /dev/null and b/public/terrain/19/858554/353822.terrain differ diff --git a/public/terrain/19/858554/353823.terrain b/public/terrain/19/858554/353823.terrain new file mode 100644 index 000000000..b2f97ac5e Binary files /dev/null and b/public/terrain/19/858554/353823.terrain differ diff --git a/public/terrain/19/858554/353824.terrain b/public/terrain/19/858554/353824.terrain new file mode 100644 index 000000000..cac29e82d Binary files /dev/null and b/public/terrain/19/858554/353824.terrain differ diff --git a/public/terrain/19/858554/353825.terrain b/public/terrain/19/858554/353825.terrain new file mode 100644 index 000000000..208d0154c Binary files /dev/null and b/public/terrain/19/858554/353825.terrain differ diff --git a/public/terrain/19/858554/353826.terrain b/public/terrain/19/858554/353826.terrain new file mode 100644 index 000000000..cede379ed Binary files /dev/null and b/public/terrain/19/858554/353826.terrain differ diff --git a/public/terrain/19/858554/353827.terrain b/public/terrain/19/858554/353827.terrain new file mode 100644 index 000000000..e34d1f807 Binary files /dev/null and b/public/terrain/19/858554/353827.terrain differ diff --git a/public/terrain/19/858554/353828.terrain b/public/terrain/19/858554/353828.terrain new file mode 100644 index 000000000..ff487a3e5 Binary files /dev/null and b/public/terrain/19/858554/353828.terrain differ diff --git a/public/terrain/19/858554/353829.terrain b/public/terrain/19/858554/353829.terrain new file mode 100644 index 000000000..2673dcded Binary files /dev/null and b/public/terrain/19/858554/353829.terrain differ diff --git a/public/terrain/19/858554/353830.terrain b/public/terrain/19/858554/353830.terrain new file mode 100644 index 000000000..1f0292f41 Binary files /dev/null and b/public/terrain/19/858554/353830.terrain differ diff --git a/public/terrain/19/858554/353831.terrain b/public/terrain/19/858554/353831.terrain new file mode 100644 index 000000000..35b062008 Binary files /dev/null and b/public/terrain/19/858554/353831.terrain differ diff --git a/public/terrain/19/858554/353832.terrain b/public/terrain/19/858554/353832.terrain new file mode 100644 index 000000000..7f1a021fb Binary files /dev/null and b/public/terrain/19/858554/353832.terrain differ diff --git a/public/terrain/19/858554/353833.terrain b/public/terrain/19/858554/353833.terrain new file mode 100644 index 000000000..879c60c43 Binary files /dev/null and b/public/terrain/19/858554/353833.terrain differ diff --git a/public/terrain/19/858554/353834.terrain b/public/terrain/19/858554/353834.terrain new file mode 100644 index 000000000..35d86781d Binary files /dev/null and b/public/terrain/19/858554/353834.terrain differ diff --git a/public/terrain/19/858554/353835.terrain b/public/terrain/19/858554/353835.terrain new file mode 100644 index 000000000..6bd3e0325 Binary files /dev/null and b/public/terrain/19/858554/353835.terrain differ diff --git a/public/terrain/19/858554/353836.terrain b/public/terrain/19/858554/353836.terrain new file mode 100644 index 000000000..0a2c652b0 Binary files /dev/null and b/public/terrain/19/858554/353836.terrain differ diff --git a/public/terrain/19/858554/353837.terrain b/public/terrain/19/858554/353837.terrain new file mode 100644 index 000000000..e02a074ca Binary files /dev/null and b/public/terrain/19/858554/353837.terrain differ diff --git a/public/terrain/19/858554/353838.terrain b/public/terrain/19/858554/353838.terrain new file mode 100644 index 000000000..c89159a99 Binary files /dev/null and b/public/terrain/19/858554/353838.terrain differ diff --git a/public/terrain/19/858554/353839.terrain b/public/terrain/19/858554/353839.terrain new file mode 100644 index 000000000..e73414cf5 Binary files /dev/null and b/public/terrain/19/858554/353839.terrain differ diff --git a/public/terrain/19/858554/353840.terrain b/public/terrain/19/858554/353840.terrain new file mode 100644 index 000000000..78e2a4b95 Binary files /dev/null and b/public/terrain/19/858554/353840.terrain differ diff --git a/public/terrain/19/858554/353841.terrain b/public/terrain/19/858554/353841.terrain new file mode 100644 index 000000000..eceddb4c8 Binary files /dev/null and b/public/terrain/19/858554/353841.terrain differ diff --git a/public/terrain/19/858554/353842.terrain b/public/terrain/19/858554/353842.terrain new file mode 100644 index 000000000..99d6eebf0 Binary files /dev/null and b/public/terrain/19/858554/353842.terrain differ diff --git a/public/terrain/19/858554/353843.terrain b/public/terrain/19/858554/353843.terrain new file mode 100644 index 000000000..ed1eda646 Binary files /dev/null and b/public/terrain/19/858554/353843.terrain differ diff --git a/public/terrain/19/858554/353844.terrain b/public/terrain/19/858554/353844.terrain new file mode 100644 index 000000000..fdc894435 Binary files /dev/null and b/public/terrain/19/858554/353844.terrain differ diff --git a/public/terrain/19/858554/353845.terrain b/public/terrain/19/858554/353845.terrain new file mode 100644 index 000000000..7761308f0 Binary files /dev/null and b/public/terrain/19/858554/353845.terrain differ diff --git a/public/terrain/19/858554/353846.terrain b/public/terrain/19/858554/353846.terrain new file mode 100644 index 000000000..27ec4dcda Binary files /dev/null and b/public/terrain/19/858554/353846.terrain differ diff --git a/public/terrain/19/858554/353847.terrain b/public/terrain/19/858554/353847.terrain new file mode 100644 index 000000000..39c384285 Binary files /dev/null and b/public/terrain/19/858554/353847.terrain differ diff --git a/public/terrain/19/858554/353848.terrain b/public/terrain/19/858554/353848.terrain new file mode 100644 index 000000000..96e03b549 Binary files /dev/null and b/public/terrain/19/858554/353848.terrain differ diff --git a/public/terrain/19/858554/353849.terrain b/public/terrain/19/858554/353849.terrain new file mode 100644 index 000000000..e09059a9b Binary files /dev/null and b/public/terrain/19/858554/353849.terrain differ diff --git a/public/terrain/19/858554/353850.terrain b/public/terrain/19/858554/353850.terrain new file mode 100644 index 000000000..724fdabbc Binary files /dev/null and b/public/terrain/19/858554/353850.terrain differ diff --git a/public/terrain/19/858554/353851.terrain b/public/terrain/19/858554/353851.terrain new file mode 100644 index 000000000..f24769612 Binary files /dev/null and b/public/terrain/19/858554/353851.terrain differ diff --git a/public/terrain/19/858554/353852.terrain b/public/terrain/19/858554/353852.terrain new file mode 100644 index 000000000..da33f61b8 Binary files /dev/null and b/public/terrain/19/858554/353852.terrain differ diff --git a/public/terrain/19/858554/353853.terrain b/public/terrain/19/858554/353853.terrain new file mode 100644 index 000000000..512d96fd4 Binary files /dev/null and b/public/terrain/19/858554/353853.terrain differ diff --git a/public/terrain/19/858554/353854.terrain b/public/terrain/19/858554/353854.terrain new file mode 100644 index 000000000..6f706c2b7 Binary files /dev/null and b/public/terrain/19/858554/353854.terrain differ diff --git a/public/terrain/19/858554/353855.terrain b/public/terrain/19/858554/353855.terrain new file mode 100644 index 000000000..aa2c10ebd Binary files /dev/null and b/public/terrain/19/858554/353855.terrain differ diff --git a/public/terrain/19/858554/353856.terrain b/public/terrain/19/858554/353856.terrain new file mode 100644 index 000000000..f479e5335 Binary files /dev/null and b/public/terrain/19/858554/353856.terrain differ diff --git a/public/terrain/19/858554/353857.terrain b/public/terrain/19/858554/353857.terrain new file mode 100644 index 000000000..36b78c1f8 Binary files /dev/null and b/public/terrain/19/858554/353857.terrain differ diff --git a/public/terrain/19/858554/353858.terrain b/public/terrain/19/858554/353858.terrain new file mode 100644 index 000000000..811587d3f Binary files /dev/null and b/public/terrain/19/858554/353858.terrain differ diff --git a/public/terrain/19/858554/353859.terrain b/public/terrain/19/858554/353859.terrain new file mode 100644 index 000000000..84c4264a2 Binary files /dev/null and b/public/terrain/19/858554/353859.terrain differ diff --git a/public/terrain/19/858554/353860.terrain b/public/terrain/19/858554/353860.terrain new file mode 100644 index 000000000..7d6c444d9 Binary files /dev/null and b/public/terrain/19/858554/353860.terrain differ diff --git a/public/terrain/19/858554/353861.terrain b/public/terrain/19/858554/353861.terrain new file mode 100644 index 000000000..0ad805d37 Binary files /dev/null and b/public/terrain/19/858554/353861.terrain differ diff --git a/public/terrain/19/858554/353862.terrain b/public/terrain/19/858554/353862.terrain new file mode 100644 index 000000000..f7e741ea3 Binary files /dev/null and b/public/terrain/19/858554/353862.terrain differ diff --git a/public/terrain/19/858554/353863.terrain b/public/terrain/19/858554/353863.terrain new file mode 100644 index 000000000..65b1514d0 Binary files /dev/null and b/public/terrain/19/858554/353863.terrain differ diff --git a/public/terrain/19/858554/353864.terrain b/public/terrain/19/858554/353864.terrain new file mode 100644 index 000000000..adafa6c68 Binary files /dev/null and b/public/terrain/19/858554/353864.terrain differ diff --git a/public/terrain/19/858554/353865.terrain b/public/terrain/19/858554/353865.terrain new file mode 100644 index 000000000..60600651e Binary files /dev/null and b/public/terrain/19/858554/353865.terrain differ diff --git a/public/terrain/19/858554/353866.terrain b/public/terrain/19/858554/353866.terrain new file mode 100644 index 000000000..eb2d9d8bb Binary files /dev/null and b/public/terrain/19/858554/353866.terrain differ diff --git a/public/terrain/19/858554/353867.terrain b/public/terrain/19/858554/353867.terrain new file mode 100644 index 000000000..b8e0aa0a3 Binary files /dev/null and b/public/terrain/19/858554/353867.terrain differ diff --git a/public/terrain/19/858554/353868.terrain b/public/terrain/19/858554/353868.terrain new file mode 100644 index 000000000..5d3825787 Binary files /dev/null and b/public/terrain/19/858554/353868.terrain differ diff --git a/public/terrain/19/858554/353869.terrain b/public/terrain/19/858554/353869.terrain new file mode 100644 index 000000000..ac9f2cc04 Binary files /dev/null and b/public/terrain/19/858554/353869.terrain differ diff --git a/public/terrain/19/858554/353870.terrain b/public/terrain/19/858554/353870.terrain new file mode 100644 index 000000000..c7f01dead Binary files /dev/null and b/public/terrain/19/858554/353870.terrain differ diff --git a/public/terrain/19/858554/353871.terrain b/public/terrain/19/858554/353871.terrain new file mode 100644 index 000000000..30c7c6161 Binary files /dev/null and b/public/terrain/19/858554/353871.terrain differ diff --git a/public/terrain/19/858554/353872.terrain b/public/terrain/19/858554/353872.terrain new file mode 100644 index 000000000..1025db3f3 Binary files /dev/null and b/public/terrain/19/858554/353872.terrain differ diff --git a/public/terrain/19/858554/353873.terrain b/public/terrain/19/858554/353873.terrain new file mode 100644 index 000000000..7c64a036b Binary files /dev/null and b/public/terrain/19/858554/353873.terrain differ diff --git a/public/terrain/19/858554/353874.terrain b/public/terrain/19/858554/353874.terrain new file mode 100644 index 000000000..7a8656af8 Binary files /dev/null and b/public/terrain/19/858554/353874.terrain differ diff --git a/public/terrain/19/858554/353875.terrain b/public/terrain/19/858554/353875.terrain new file mode 100644 index 000000000..04b7782e9 Binary files /dev/null and b/public/terrain/19/858554/353875.terrain differ diff --git a/public/terrain/19/858554/353876.terrain b/public/terrain/19/858554/353876.terrain new file mode 100644 index 000000000..f1833a024 Binary files /dev/null and b/public/terrain/19/858554/353876.terrain differ diff --git a/public/terrain/19/858554/353877.terrain b/public/terrain/19/858554/353877.terrain new file mode 100644 index 000000000..a704999de Binary files /dev/null and b/public/terrain/19/858554/353877.terrain differ diff --git a/public/terrain/19/858554/353878.terrain b/public/terrain/19/858554/353878.terrain new file mode 100644 index 000000000..15abd130e Binary files /dev/null and b/public/terrain/19/858554/353878.terrain differ diff --git a/public/terrain/19/858554/353879.terrain b/public/terrain/19/858554/353879.terrain new file mode 100644 index 000000000..93a57d6a6 Binary files /dev/null and b/public/terrain/19/858554/353879.terrain differ diff --git a/public/terrain/19/858554/353880.terrain b/public/terrain/19/858554/353880.terrain new file mode 100644 index 000000000..a4f0f378f Binary files /dev/null and b/public/terrain/19/858554/353880.terrain differ diff --git a/public/terrain/19/858554/353881.terrain b/public/terrain/19/858554/353881.terrain new file mode 100644 index 000000000..f1467359f Binary files /dev/null and b/public/terrain/19/858554/353881.terrain differ diff --git a/public/terrain/19/858554/353882.terrain b/public/terrain/19/858554/353882.terrain new file mode 100644 index 000000000..d0200a1c6 Binary files /dev/null and b/public/terrain/19/858554/353882.terrain differ diff --git a/public/terrain/19/858554/353883.terrain b/public/terrain/19/858554/353883.terrain new file mode 100644 index 000000000..dc1e5ab8d Binary files /dev/null and b/public/terrain/19/858554/353883.terrain differ diff --git a/public/terrain/19/858554/353884.terrain b/public/terrain/19/858554/353884.terrain new file mode 100644 index 000000000..10d649774 Binary files /dev/null and b/public/terrain/19/858554/353884.terrain differ diff --git a/public/terrain/19/858554/353885.terrain b/public/terrain/19/858554/353885.terrain new file mode 100644 index 000000000..9f3259ea3 Binary files /dev/null and b/public/terrain/19/858554/353885.terrain differ diff --git a/public/terrain/19/858554/353886.terrain b/public/terrain/19/858554/353886.terrain new file mode 100644 index 000000000..4081a6c56 Binary files /dev/null and b/public/terrain/19/858554/353886.terrain differ diff --git a/public/terrain/19/858554/353887.terrain b/public/terrain/19/858554/353887.terrain new file mode 100644 index 000000000..704d360f2 Binary files /dev/null and b/public/terrain/19/858554/353887.terrain differ diff --git a/public/terrain/19/858554/353888.terrain b/public/terrain/19/858554/353888.terrain new file mode 100644 index 000000000..6ce2b271b Binary files /dev/null and b/public/terrain/19/858554/353888.terrain differ diff --git a/public/terrain/19/858554/353889.terrain b/public/terrain/19/858554/353889.terrain new file mode 100644 index 000000000..6c39d3ead Binary files /dev/null and b/public/terrain/19/858554/353889.terrain differ diff --git a/public/terrain/19/858554/353890.terrain b/public/terrain/19/858554/353890.terrain new file mode 100644 index 000000000..e77d799c1 Binary files /dev/null and b/public/terrain/19/858554/353890.terrain differ diff --git a/public/terrain/19/858554/353891.terrain b/public/terrain/19/858554/353891.terrain new file mode 100644 index 000000000..f1237953d Binary files /dev/null and b/public/terrain/19/858554/353891.terrain differ diff --git a/public/terrain/19/858554/353892.terrain b/public/terrain/19/858554/353892.terrain new file mode 100644 index 000000000..f76313957 Binary files /dev/null and b/public/terrain/19/858554/353892.terrain differ diff --git a/public/terrain/19/858554/353893.terrain b/public/terrain/19/858554/353893.terrain new file mode 100644 index 000000000..3db7fac66 Binary files /dev/null and b/public/terrain/19/858554/353893.terrain differ diff --git a/public/terrain/19/858554/353894.terrain b/public/terrain/19/858554/353894.terrain new file mode 100644 index 000000000..45ae6ca6f Binary files /dev/null and b/public/terrain/19/858554/353894.terrain differ diff --git a/public/terrain/19/858554/353895.terrain b/public/terrain/19/858554/353895.terrain new file mode 100644 index 000000000..ed57938cd Binary files /dev/null and b/public/terrain/19/858554/353895.terrain differ diff --git a/public/terrain/19/858554/353896.terrain b/public/terrain/19/858554/353896.terrain new file mode 100644 index 000000000..e40796c29 Binary files /dev/null and b/public/terrain/19/858554/353896.terrain differ diff --git a/public/terrain/19/858554/353897.terrain b/public/terrain/19/858554/353897.terrain new file mode 100644 index 000000000..8284252ed Binary files /dev/null and b/public/terrain/19/858554/353897.terrain differ diff --git a/public/terrain/19/858554/353898.terrain b/public/terrain/19/858554/353898.terrain new file mode 100644 index 000000000..26ac1a9d6 Binary files /dev/null and b/public/terrain/19/858554/353898.terrain differ diff --git a/public/terrain/19/858554/353899.terrain b/public/terrain/19/858554/353899.terrain new file mode 100644 index 000000000..4009b5c30 Binary files /dev/null and b/public/terrain/19/858554/353899.terrain differ diff --git a/public/terrain/19/858554/353900.terrain b/public/terrain/19/858554/353900.terrain new file mode 100644 index 000000000..ef8b047a0 Binary files /dev/null and b/public/terrain/19/858554/353900.terrain differ diff --git a/public/terrain/19/858554/353901.terrain b/public/terrain/19/858554/353901.terrain new file mode 100644 index 000000000..5920dba8d Binary files /dev/null and b/public/terrain/19/858554/353901.terrain differ diff --git a/public/terrain/19/858554/353902.terrain b/public/terrain/19/858554/353902.terrain new file mode 100644 index 000000000..efaa4c723 Binary files /dev/null and b/public/terrain/19/858554/353902.terrain differ diff --git a/public/terrain/19/858554/353903.terrain b/public/terrain/19/858554/353903.terrain new file mode 100644 index 000000000..79ccdbfb4 Binary files /dev/null and b/public/terrain/19/858554/353903.terrain differ diff --git a/public/terrain/19/858554/353904.terrain b/public/terrain/19/858554/353904.terrain new file mode 100644 index 000000000..d4dec2510 Binary files /dev/null and b/public/terrain/19/858554/353904.terrain differ diff --git a/public/terrain/19/858554/353905.terrain b/public/terrain/19/858554/353905.terrain new file mode 100644 index 000000000..7a8cff41c Binary files /dev/null and b/public/terrain/19/858554/353905.terrain differ diff --git a/public/terrain/19/858554/353906.terrain b/public/terrain/19/858554/353906.terrain new file mode 100644 index 000000000..d4756ef99 Binary files /dev/null and b/public/terrain/19/858554/353906.terrain differ diff --git a/public/terrain/19/858554/353907.terrain b/public/terrain/19/858554/353907.terrain new file mode 100644 index 000000000..df0107137 Binary files /dev/null and b/public/terrain/19/858554/353907.terrain differ diff --git a/public/terrain/19/858554/353908.terrain b/public/terrain/19/858554/353908.terrain new file mode 100644 index 000000000..73f21161d Binary files /dev/null and b/public/terrain/19/858554/353908.terrain differ diff --git a/public/terrain/19/858554/353909.terrain b/public/terrain/19/858554/353909.terrain new file mode 100644 index 000000000..88d14b7ac Binary files /dev/null and b/public/terrain/19/858554/353909.terrain differ diff --git a/public/terrain/19/858554/353910.terrain b/public/terrain/19/858554/353910.terrain new file mode 100644 index 000000000..80aa1f346 Binary files /dev/null and b/public/terrain/19/858554/353910.terrain differ diff --git a/public/terrain/19/858554/353911.terrain b/public/terrain/19/858554/353911.terrain new file mode 100644 index 000000000..4f37ddfb2 Binary files /dev/null and b/public/terrain/19/858554/353911.terrain differ diff --git a/public/terrain/19/858554/353912.terrain b/public/terrain/19/858554/353912.terrain new file mode 100644 index 000000000..b51559a00 Binary files /dev/null and b/public/terrain/19/858554/353912.terrain differ diff --git a/public/terrain/19/858554/353913.terrain b/public/terrain/19/858554/353913.terrain new file mode 100644 index 000000000..d06b728c7 Binary files /dev/null and b/public/terrain/19/858554/353913.terrain differ diff --git a/public/terrain/19/858554/353914.terrain b/public/terrain/19/858554/353914.terrain new file mode 100644 index 000000000..5f24d568d Binary files /dev/null and b/public/terrain/19/858554/353914.terrain differ diff --git a/public/terrain/19/858554/353915.terrain b/public/terrain/19/858554/353915.terrain new file mode 100644 index 000000000..2df5410be Binary files /dev/null and b/public/terrain/19/858554/353915.terrain differ diff --git a/public/terrain/19/858554/353916.terrain b/public/terrain/19/858554/353916.terrain new file mode 100644 index 000000000..94e32e90e Binary files /dev/null and b/public/terrain/19/858554/353916.terrain differ diff --git a/public/terrain/19/858554/353917.terrain b/public/terrain/19/858554/353917.terrain new file mode 100644 index 000000000..32f000f67 Binary files /dev/null and b/public/terrain/19/858554/353917.terrain differ diff --git a/public/terrain/19/858554/353918.terrain b/public/terrain/19/858554/353918.terrain new file mode 100644 index 000000000..41d8bec16 Binary files /dev/null and b/public/terrain/19/858554/353918.terrain differ diff --git a/public/terrain/19/858554/353919.terrain b/public/terrain/19/858554/353919.terrain new file mode 100644 index 000000000..348d19d2a Binary files /dev/null and b/public/terrain/19/858554/353919.terrain differ diff --git a/public/terrain/19/858554/353920.terrain b/public/terrain/19/858554/353920.terrain new file mode 100644 index 000000000..0a84446d4 Binary files /dev/null and b/public/terrain/19/858554/353920.terrain differ diff --git a/public/terrain/19/858554/353921.terrain b/public/terrain/19/858554/353921.terrain new file mode 100644 index 000000000..a93dde8db Binary files /dev/null and b/public/terrain/19/858554/353921.terrain differ diff --git a/public/terrain/19/858554/353922.terrain b/public/terrain/19/858554/353922.terrain new file mode 100644 index 000000000..30f63cae7 Binary files /dev/null and b/public/terrain/19/858554/353922.terrain differ diff --git a/public/terrain/19/858554/353923.terrain b/public/terrain/19/858554/353923.terrain new file mode 100644 index 000000000..ccd885843 Binary files /dev/null and b/public/terrain/19/858554/353923.terrain differ diff --git a/public/terrain/19/858554/353924.terrain b/public/terrain/19/858554/353924.terrain new file mode 100644 index 000000000..cea55ba93 Binary files /dev/null and b/public/terrain/19/858554/353924.terrain differ diff --git a/public/terrain/19/858554/353925.terrain b/public/terrain/19/858554/353925.terrain new file mode 100644 index 000000000..51b5ad470 Binary files /dev/null and b/public/terrain/19/858554/353925.terrain differ diff --git a/public/terrain/19/858554/353926.terrain b/public/terrain/19/858554/353926.terrain new file mode 100644 index 000000000..9efb3f653 Binary files /dev/null and b/public/terrain/19/858554/353926.terrain differ diff --git a/public/terrain/19/858554/353927.terrain b/public/terrain/19/858554/353927.terrain new file mode 100644 index 000000000..9a3cf68a1 Binary files /dev/null and b/public/terrain/19/858554/353927.terrain differ diff --git a/public/terrain/19/858554/353928.terrain b/public/terrain/19/858554/353928.terrain new file mode 100644 index 000000000..382f49fcd Binary files /dev/null and b/public/terrain/19/858554/353928.terrain differ diff --git a/public/terrain/19/858554/353929.terrain b/public/terrain/19/858554/353929.terrain new file mode 100644 index 000000000..0ea071b85 Binary files /dev/null and b/public/terrain/19/858554/353929.terrain differ diff --git a/public/terrain/19/858554/353930.terrain b/public/terrain/19/858554/353930.terrain new file mode 100644 index 000000000..eb9727ea5 Binary files /dev/null and b/public/terrain/19/858554/353930.terrain differ diff --git a/public/terrain/19/858554/353931.terrain b/public/terrain/19/858554/353931.terrain new file mode 100644 index 000000000..21b3fb98e Binary files /dev/null and b/public/terrain/19/858554/353931.terrain differ diff --git a/public/terrain/19/858554/353932.terrain b/public/terrain/19/858554/353932.terrain new file mode 100644 index 000000000..ae7dfa15f Binary files /dev/null and b/public/terrain/19/858554/353932.terrain differ diff --git a/public/terrain/19/858554/353933.terrain b/public/terrain/19/858554/353933.terrain new file mode 100644 index 000000000..ddc153e10 Binary files /dev/null and b/public/terrain/19/858554/353933.terrain differ diff --git a/public/terrain/19/858554/353934.terrain b/public/terrain/19/858554/353934.terrain new file mode 100644 index 000000000..e7bd7bf57 Binary files /dev/null and b/public/terrain/19/858554/353934.terrain differ diff --git a/public/terrain/19/858554/353935.terrain b/public/terrain/19/858554/353935.terrain new file mode 100644 index 000000000..705a483fb Binary files /dev/null and b/public/terrain/19/858554/353935.terrain differ diff --git a/public/terrain/19/858554/353936.terrain b/public/terrain/19/858554/353936.terrain new file mode 100644 index 000000000..71fbc6e51 Binary files /dev/null and b/public/terrain/19/858554/353936.terrain differ diff --git a/public/terrain/19/858554/353937.terrain b/public/terrain/19/858554/353937.terrain new file mode 100644 index 000000000..523f332f0 Binary files /dev/null and b/public/terrain/19/858554/353937.terrain differ diff --git a/public/terrain/19/858554/353938.terrain b/public/terrain/19/858554/353938.terrain new file mode 100644 index 000000000..fc012bd9c Binary files /dev/null and b/public/terrain/19/858554/353938.terrain differ diff --git a/public/terrain/19/858554/353939.terrain b/public/terrain/19/858554/353939.terrain new file mode 100644 index 000000000..df4e0c5a3 Binary files /dev/null and b/public/terrain/19/858554/353939.terrain differ diff --git a/public/terrain/19/858554/353940.terrain b/public/terrain/19/858554/353940.terrain new file mode 100644 index 000000000..024e68929 Binary files /dev/null and b/public/terrain/19/858554/353940.terrain differ diff --git a/public/terrain/19/858554/353941.terrain b/public/terrain/19/858554/353941.terrain new file mode 100644 index 000000000..e6b08dc04 Binary files /dev/null and b/public/terrain/19/858554/353941.terrain differ diff --git a/public/terrain/19/858554/353942.terrain b/public/terrain/19/858554/353942.terrain new file mode 100644 index 000000000..7b5743a75 Binary files /dev/null and b/public/terrain/19/858554/353942.terrain differ diff --git a/public/terrain/19/858554/353943.terrain b/public/terrain/19/858554/353943.terrain new file mode 100644 index 000000000..f03e372f6 Binary files /dev/null and b/public/terrain/19/858554/353943.terrain differ diff --git a/public/terrain/19/858554/353944.terrain b/public/terrain/19/858554/353944.terrain new file mode 100644 index 000000000..d72bb1ca9 Binary files /dev/null and b/public/terrain/19/858554/353944.terrain differ diff --git a/public/terrain/19/858554/353945.terrain b/public/terrain/19/858554/353945.terrain new file mode 100644 index 000000000..94e9516b1 Binary files /dev/null and b/public/terrain/19/858554/353945.terrain differ diff --git a/public/terrain/19/858554/353946.terrain b/public/terrain/19/858554/353946.terrain new file mode 100644 index 000000000..090add13e Binary files /dev/null and b/public/terrain/19/858554/353946.terrain differ diff --git a/public/terrain/19/858554/353947.terrain b/public/terrain/19/858554/353947.terrain new file mode 100644 index 000000000..1124c7021 Binary files /dev/null and b/public/terrain/19/858554/353947.terrain differ diff --git a/public/terrain/19/858554/353948.terrain b/public/terrain/19/858554/353948.terrain new file mode 100644 index 000000000..6179000a3 Binary files /dev/null and b/public/terrain/19/858554/353948.terrain differ diff --git a/public/terrain/19/858554/353949.terrain b/public/terrain/19/858554/353949.terrain new file mode 100644 index 000000000..302bbed45 Binary files /dev/null and b/public/terrain/19/858554/353949.terrain differ diff --git a/public/terrain/19/858554/353950.terrain b/public/terrain/19/858554/353950.terrain new file mode 100644 index 000000000..51c31c8b8 Binary files /dev/null and b/public/terrain/19/858554/353950.terrain differ diff --git a/public/terrain/19/858554/353951.terrain b/public/terrain/19/858554/353951.terrain new file mode 100644 index 000000000..e70a5c611 Binary files /dev/null and b/public/terrain/19/858554/353951.terrain differ diff --git a/public/terrain/19/858554/353952.terrain b/public/terrain/19/858554/353952.terrain new file mode 100644 index 000000000..8c7aef9fd Binary files /dev/null and b/public/terrain/19/858554/353952.terrain differ diff --git a/public/terrain/19/858554/353953.terrain b/public/terrain/19/858554/353953.terrain new file mode 100644 index 000000000..af3f5765b Binary files /dev/null and b/public/terrain/19/858554/353953.terrain differ diff --git a/public/terrain/19/858554/353954.terrain b/public/terrain/19/858554/353954.terrain new file mode 100644 index 000000000..b13f22e08 Binary files /dev/null and b/public/terrain/19/858554/353954.terrain differ diff --git a/public/terrain/19/858554/353955.terrain b/public/terrain/19/858554/353955.terrain new file mode 100644 index 000000000..630bddc15 Binary files /dev/null and b/public/terrain/19/858554/353955.terrain differ diff --git a/public/terrain/19/858554/353956.terrain b/public/terrain/19/858554/353956.terrain new file mode 100644 index 000000000..82738bac2 Binary files /dev/null and b/public/terrain/19/858554/353956.terrain differ diff --git a/public/terrain/19/858554/353957.terrain b/public/terrain/19/858554/353957.terrain new file mode 100644 index 000000000..7858f4467 Binary files /dev/null and b/public/terrain/19/858554/353957.terrain differ diff --git a/public/terrain/19/858554/353958.terrain b/public/terrain/19/858554/353958.terrain new file mode 100644 index 000000000..81b1eead2 Binary files /dev/null and b/public/terrain/19/858554/353958.terrain differ diff --git a/public/terrain/19/858554/353959.terrain b/public/terrain/19/858554/353959.terrain new file mode 100644 index 000000000..abdc66135 Binary files /dev/null and b/public/terrain/19/858554/353959.terrain differ diff --git a/public/terrain/19/858554/353960.terrain b/public/terrain/19/858554/353960.terrain new file mode 100644 index 000000000..1aba3aa08 Binary files /dev/null and b/public/terrain/19/858554/353960.terrain differ diff --git a/public/terrain/19/858554/353961.terrain b/public/terrain/19/858554/353961.terrain new file mode 100644 index 000000000..7b327e250 Binary files /dev/null and b/public/terrain/19/858554/353961.terrain differ diff --git a/public/terrain/19/858554/353962.terrain b/public/terrain/19/858554/353962.terrain new file mode 100644 index 000000000..1666b53cd Binary files /dev/null and b/public/terrain/19/858554/353962.terrain differ diff --git a/public/terrain/19/858554/353963.terrain b/public/terrain/19/858554/353963.terrain new file mode 100644 index 000000000..d5ce58d54 Binary files /dev/null and b/public/terrain/19/858554/353963.terrain differ diff --git a/public/terrain/19/858554/353964.terrain b/public/terrain/19/858554/353964.terrain new file mode 100644 index 000000000..72210ea51 Binary files /dev/null and b/public/terrain/19/858554/353964.terrain differ diff --git a/public/terrain/19/858554/353965.terrain b/public/terrain/19/858554/353965.terrain new file mode 100644 index 000000000..7df03ff3a Binary files /dev/null and b/public/terrain/19/858554/353965.terrain differ diff --git a/public/terrain/19/858554/353966.terrain b/public/terrain/19/858554/353966.terrain new file mode 100644 index 000000000..82c561446 Binary files /dev/null and b/public/terrain/19/858554/353966.terrain differ diff --git a/public/terrain/19/858554/353967.terrain b/public/terrain/19/858554/353967.terrain new file mode 100644 index 000000000..cda72f66d Binary files /dev/null and b/public/terrain/19/858554/353967.terrain differ diff --git a/public/terrain/19/858554/353968.terrain b/public/terrain/19/858554/353968.terrain new file mode 100644 index 000000000..cdeb83405 Binary files /dev/null and b/public/terrain/19/858554/353968.terrain differ diff --git a/public/terrain/19/858554/353969.terrain b/public/terrain/19/858554/353969.terrain new file mode 100644 index 000000000..913d04262 Binary files /dev/null and b/public/terrain/19/858554/353969.terrain differ diff --git a/public/terrain/19/858554/353970.terrain b/public/terrain/19/858554/353970.terrain new file mode 100644 index 000000000..080f00e31 Binary files /dev/null and b/public/terrain/19/858554/353970.terrain differ diff --git a/public/terrain/19/858554/353971.terrain b/public/terrain/19/858554/353971.terrain new file mode 100644 index 000000000..39e2d2fc9 Binary files /dev/null and b/public/terrain/19/858554/353971.terrain differ diff --git a/public/terrain/19/858554/353972.terrain b/public/terrain/19/858554/353972.terrain new file mode 100644 index 000000000..092818107 Binary files /dev/null and b/public/terrain/19/858554/353972.terrain differ diff --git a/public/terrain/19/858554/353973.terrain b/public/terrain/19/858554/353973.terrain new file mode 100644 index 000000000..769791e5f Binary files /dev/null and b/public/terrain/19/858554/353973.terrain differ diff --git a/public/terrain/19/858554/353974.terrain b/public/terrain/19/858554/353974.terrain new file mode 100644 index 000000000..25b4071ef Binary files /dev/null and b/public/terrain/19/858554/353974.terrain differ diff --git a/public/terrain/19/858554/353975.terrain b/public/terrain/19/858554/353975.terrain new file mode 100644 index 000000000..071bc053d Binary files /dev/null and b/public/terrain/19/858554/353975.terrain differ diff --git a/public/terrain/19/858554/353976.terrain b/public/terrain/19/858554/353976.terrain new file mode 100644 index 000000000..c9968c3e6 Binary files /dev/null and b/public/terrain/19/858554/353976.terrain differ diff --git a/public/terrain/19/858554/353977.terrain b/public/terrain/19/858554/353977.terrain new file mode 100644 index 000000000..f12c65ac1 Binary files /dev/null and b/public/terrain/19/858554/353977.terrain differ diff --git a/public/terrain/19/858554/353978.terrain b/public/terrain/19/858554/353978.terrain new file mode 100644 index 000000000..4bd835d83 Binary files /dev/null and b/public/terrain/19/858554/353978.terrain differ diff --git a/public/terrain/19/858554/353979.terrain b/public/terrain/19/858554/353979.terrain new file mode 100644 index 000000000..d96e57344 Binary files /dev/null and b/public/terrain/19/858554/353979.terrain differ diff --git a/public/terrain/19/858554/353980.terrain b/public/terrain/19/858554/353980.terrain new file mode 100644 index 000000000..f34828148 Binary files /dev/null and b/public/terrain/19/858554/353980.terrain differ diff --git a/public/terrain/19/858554/353981.terrain b/public/terrain/19/858554/353981.terrain new file mode 100644 index 000000000..144365016 Binary files /dev/null and b/public/terrain/19/858554/353981.terrain differ diff --git a/public/terrain/19/858554/353982.terrain b/public/terrain/19/858554/353982.terrain new file mode 100644 index 000000000..57c60a8fb Binary files /dev/null and b/public/terrain/19/858554/353982.terrain differ diff --git a/public/terrain/19/858554/353983.terrain b/public/terrain/19/858554/353983.terrain new file mode 100644 index 000000000..72d201088 Binary files /dev/null and b/public/terrain/19/858554/353983.terrain differ diff --git a/public/terrain/19/858554/353984.terrain b/public/terrain/19/858554/353984.terrain new file mode 100644 index 000000000..64569e67c Binary files /dev/null and b/public/terrain/19/858554/353984.terrain differ diff --git a/public/terrain/19/858554/353985.terrain b/public/terrain/19/858554/353985.terrain new file mode 100644 index 000000000..b2e52f9ef Binary files /dev/null and b/public/terrain/19/858554/353985.terrain differ diff --git a/public/terrain/19/858554/353986.terrain b/public/terrain/19/858554/353986.terrain new file mode 100644 index 000000000..8c78fd44a Binary files /dev/null and b/public/terrain/19/858554/353986.terrain differ diff --git a/public/terrain/19/858554/353987.terrain b/public/terrain/19/858554/353987.terrain new file mode 100644 index 000000000..691054647 Binary files /dev/null and b/public/terrain/19/858554/353987.terrain differ diff --git a/public/terrain/19/858554/353988.terrain b/public/terrain/19/858554/353988.terrain new file mode 100644 index 000000000..12892b8fe Binary files /dev/null and b/public/terrain/19/858554/353988.terrain differ diff --git a/public/terrain/19/858554/353989.terrain b/public/terrain/19/858554/353989.terrain new file mode 100644 index 000000000..970763217 Binary files /dev/null and b/public/terrain/19/858554/353989.terrain differ diff --git a/public/terrain/19/858554/353990.terrain b/public/terrain/19/858554/353990.terrain new file mode 100644 index 000000000..b125a2385 Binary files /dev/null and b/public/terrain/19/858554/353990.terrain differ diff --git a/public/terrain/19/858554/353991.terrain b/public/terrain/19/858554/353991.terrain new file mode 100644 index 000000000..37544a932 Binary files /dev/null and b/public/terrain/19/858554/353991.terrain differ diff --git a/public/terrain/19/858554/353992.terrain b/public/terrain/19/858554/353992.terrain new file mode 100644 index 000000000..300f1bfe0 Binary files /dev/null and b/public/terrain/19/858554/353992.terrain differ diff --git a/public/terrain/19/858554/353993.terrain b/public/terrain/19/858554/353993.terrain new file mode 100644 index 000000000..55818f3aa Binary files /dev/null and b/public/terrain/19/858554/353993.terrain differ diff --git a/public/terrain/19/858554/353994.terrain b/public/terrain/19/858554/353994.terrain new file mode 100644 index 000000000..ed99a10d7 Binary files /dev/null and b/public/terrain/19/858554/353994.terrain differ diff --git a/public/terrain/19/858554/353995.terrain b/public/terrain/19/858554/353995.terrain new file mode 100644 index 000000000..00b3c7f18 Binary files /dev/null and b/public/terrain/19/858554/353995.terrain differ diff --git a/public/terrain/19/858554/353996.terrain b/public/terrain/19/858554/353996.terrain new file mode 100644 index 000000000..a6f4bd6eb Binary files /dev/null and b/public/terrain/19/858554/353996.terrain differ diff --git a/public/terrain/19/858554/353997.terrain b/public/terrain/19/858554/353997.terrain new file mode 100644 index 000000000..43ee26e93 Binary files /dev/null and b/public/terrain/19/858554/353997.terrain differ diff --git a/public/terrain/19/858554/353998.terrain b/public/terrain/19/858554/353998.terrain new file mode 100644 index 000000000..2a1e865e8 Binary files /dev/null and b/public/terrain/19/858554/353998.terrain differ diff --git a/public/terrain/19/858554/353999.terrain b/public/terrain/19/858554/353999.terrain new file mode 100644 index 000000000..404ba93da Binary files /dev/null and b/public/terrain/19/858554/353999.terrain differ diff --git a/public/terrain/19/858554/354000.terrain b/public/terrain/19/858554/354000.terrain new file mode 100644 index 000000000..4b4241e7b Binary files /dev/null and b/public/terrain/19/858554/354000.terrain differ diff --git a/public/terrain/19/858554/354001.terrain b/public/terrain/19/858554/354001.terrain new file mode 100644 index 000000000..b8e7bdd09 Binary files /dev/null and b/public/terrain/19/858554/354001.terrain differ diff --git a/public/terrain/19/858554/354002.terrain b/public/terrain/19/858554/354002.terrain new file mode 100644 index 000000000..31fce57e3 Binary files /dev/null and b/public/terrain/19/858554/354002.terrain differ diff --git a/public/terrain/19/858554/354003.terrain b/public/terrain/19/858554/354003.terrain new file mode 100644 index 000000000..c4ad6df71 Binary files /dev/null and b/public/terrain/19/858554/354003.terrain differ diff --git a/public/terrain/19/858554/354004.terrain b/public/terrain/19/858554/354004.terrain new file mode 100644 index 000000000..43938ad63 Binary files /dev/null and b/public/terrain/19/858554/354004.terrain differ diff --git a/public/terrain/19/858554/354005.terrain b/public/terrain/19/858554/354005.terrain new file mode 100644 index 000000000..ff9846e93 Binary files /dev/null and b/public/terrain/19/858554/354005.terrain differ diff --git a/public/terrain/19/858554/354006.terrain b/public/terrain/19/858554/354006.terrain new file mode 100644 index 000000000..ad7450cde Binary files /dev/null and b/public/terrain/19/858554/354006.terrain differ diff --git a/public/terrain/19/858554/354007.terrain b/public/terrain/19/858554/354007.terrain new file mode 100644 index 000000000..6bf039308 Binary files /dev/null and b/public/terrain/19/858554/354007.terrain differ diff --git a/public/terrain/19/858554/354008.terrain b/public/terrain/19/858554/354008.terrain new file mode 100644 index 000000000..c3b2744eb Binary files /dev/null and b/public/terrain/19/858554/354008.terrain differ diff --git a/public/terrain/19/858554/354009.terrain b/public/terrain/19/858554/354009.terrain new file mode 100644 index 000000000..c7633837a Binary files /dev/null and b/public/terrain/19/858554/354009.terrain differ diff --git a/public/terrain/19/858554/354010.terrain b/public/terrain/19/858554/354010.terrain new file mode 100644 index 000000000..580896a02 Binary files /dev/null and b/public/terrain/19/858554/354010.terrain differ diff --git a/public/terrain/19/858554/354011.terrain b/public/terrain/19/858554/354011.terrain new file mode 100644 index 000000000..f64c10b6e Binary files /dev/null and b/public/terrain/19/858554/354011.terrain differ diff --git a/public/terrain/19/858554/354012.terrain b/public/terrain/19/858554/354012.terrain new file mode 100644 index 000000000..2693e1456 Binary files /dev/null and b/public/terrain/19/858554/354012.terrain differ diff --git a/public/terrain/19/858554/354013.terrain b/public/terrain/19/858554/354013.terrain new file mode 100644 index 000000000..27f89e467 Binary files /dev/null and b/public/terrain/19/858554/354013.terrain differ diff --git a/public/terrain/19/858554/354014.terrain b/public/terrain/19/858554/354014.terrain new file mode 100644 index 000000000..ec5dcfa06 Binary files /dev/null and b/public/terrain/19/858554/354014.terrain differ diff --git a/public/terrain/19/858554/354015.terrain b/public/terrain/19/858554/354015.terrain new file mode 100644 index 000000000..2241daf32 Binary files /dev/null and b/public/terrain/19/858554/354015.terrain differ diff --git a/public/terrain/19/858554/354016.terrain b/public/terrain/19/858554/354016.terrain new file mode 100644 index 000000000..97d74bbb5 Binary files /dev/null and b/public/terrain/19/858554/354016.terrain differ diff --git a/public/terrain/19/858554/354017.terrain b/public/terrain/19/858554/354017.terrain new file mode 100644 index 000000000..10431bc21 Binary files /dev/null and b/public/terrain/19/858554/354017.terrain differ diff --git a/public/terrain/19/858554/354018.terrain b/public/terrain/19/858554/354018.terrain new file mode 100644 index 000000000..052b60635 Binary files /dev/null and b/public/terrain/19/858554/354018.terrain differ diff --git a/public/terrain/19/858554/354019.terrain b/public/terrain/19/858554/354019.terrain new file mode 100644 index 000000000..3e81093be Binary files /dev/null and b/public/terrain/19/858554/354019.terrain differ diff --git a/public/terrain/19/858554/354020.terrain b/public/terrain/19/858554/354020.terrain new file mode 100644 index 000000000..b74b30993 Binary files /dev/null and b/public/terrain/19/858554/354020.terrain differ diff --git a/public/terrain/19/858554/354021.terrain b/public/terrain/19/858554/354021.terrain new file mode 100644 index 000000000..dddff5e3a Binary files /dev/null and b/public/terrain/19/858554/354021.terrain differ diff --git a/public/terrain/19/858554/354022.terrain b/public/terrain/19/858554/354022.terrain new file mode 100644 index 000000000..518c00b8d Binary files /dev/null and b/public/terrain/19/858554/354022.terrain differ diff --git a/public/terrain/19/858554/354023.terrain b/public/terrain/19/858554/354023.terrain new file mode 100644 index 000000000..2ee1e25c0 Binary files /dev/null and b/public/terrain/19/858554/354023.terrain differ diff --git a/public/terrain/19/858554/354024.terrain b/public/terrain/19/858554/354024.terrain new file mode 100644 index 000000000..9b031488f Binary files /dev/null and b/public/terrain/19/858554/354024.terrain differ diff --git a/public/terrain/19/858554/354025.terrain b/public/terrain/19/858554/354025.terrain new file mode 100644 index 000000000..60ef8254d Binary files /dev/null and b/public/terrain/19/858554/354025.terrain differ diff --git a/public/terrain/19/858554/354026.terrain b/public/terrain/19/858554/354026.terrain new file mode 100644 index 000000000..8642aef1a Binary files /dev/null and b/public/terrain/19/858554/354026.terrain differ diff --git a/public/terrain/19/858554/354027.terrain b/public/terrain/19/858554/354027.terrain new file mode 100644 index 000000000..e3dfb7bb9 Binary files /dev/null and b/public/terrain/19/858554/354027.terrain differ diff --git a/public/terrain/19/858554/354028.terrain b/public/terrain/19/858554/354028.terrain new file mode 100644 index 000000000..9fe332213 Binary files /dev/null and b/public/terrain/19/858554/354028.terrain differ diff --git a/public/terrain/19/858554/354029.terrain b/public/terrain/19/858554/354029.terrain new file mode 100644 index 000000000..ea455feab Binary files /dev/null and b/public/terrain/19/858554/354029.terrain differ diff --git a/public/terrain/19/858554/354030.terrain b/public/terrain/19/858554/354030.terrain new file mode 100644 index 000000000..96662cf31 Binary files /dev/null and b/public/terrain/19/858554/354030.terrain differ diff --git a/public/terrain/19/858554/354031.terrain b/public/terrain/19/858554/354031.terrain new file mode 100644 index 000000000..fb7438ad5 Binary files /dev/null and b/public/terrain/19/858554/354031.terrain differ diff --git a/public/terrain/19/858554/354032.terrain b/public/terrain/19/858554/354032.terrain new file mode 100644 index 000000000..535dc84a0 Binary files /dev/null and b/public/terrain/19/858554/354032.terrain differ diff --git a/public/terrain/19/858554/354033.terrain b/public/terrain/19/858554/354033.terrain new file mode 100644 index 000000000..55d44afc2 Binary files /dev/null and b/public/terrain/19/858554/354033.terrain differ diff --git a/public/terrain/19/858554/354034.terrain b/public/terrain/19/858554/354034.terrain new file mode 100644 index 000000000..d042f9775 Binary files /dev/null and b/public/terrain/19/858554/354034.terrain differ diff --git a/public/terrain/19/858554/354035.terrain b/public/terrain/19/858554/354035.terrain new file mode 100644 index 000000000..0d545ec4e Binary files /dev/null and b/public/terrain/19/858554/354035.terrain differ diff --git a/public/terrain/19/858554/354036.terrain b/public/terrain/19/858554/354036.terrain new file mode 100644 index 000000000..6d03ab882 Binary files /dev/null and b/public/terrain/19/858554/354036.terrain differ diff --git a/public/terrain/19/858554/354037.terrain b/public/terrain/19/858554/354037.terrain new file mode 100644 index 000000000..615aa0487 Binary files /dev/null and b/public/terrain/19/858554/354037.terrain differ diff --git a/public/terrain/19/858554/354038.terrain b/public/terrain/19/858554/354038.terrain new file mode 100644 index 000000000..4de40b409 Binary files /dev/null and b/public/terrain/19/858554/354038.terrain differ diff --git a/public/terrain/19/858554/354039.terrain b/public/terrain/19/858554/354039.terrain new file mode 100644 index 000000000..a71da9289 Binary files /dev/null and b/public/terrain/19/858554/354039.terrain differ diff --git a/public/terrain/19/858554/354040.terrain b/public/terrain/19/858554/354040.terrain new file mode 100644 index 000000000..3c8b17533 Binary files /dev/null and b/public/terrain/19/858554/354040.terrain differ diff --git a/public/terrain/19/858554/354041.terrain b/public/terrain/19/858554/354041.terrain new file mode 100644 index 000000000..cd01b0e49 Binary files /dev/null and b/public/terrain/19/858554/354041.terrain differ diff --git a/public/terrain/19/858554/354042.terrain b/public/terrain/19/858554/354042.terrain new file mode 100644 index 000000000..6c7f53719 Binary files /dev/null and b/public/terrain/19/858554/354042.terrain differ diff --git a/public/terrain/19/858554/354043.terrain b/public/terrain/19/858554/354043.terrain new file mode 100644 index 000000000..4a3b34240 Binary files /dev/null and b/public/terrain/19/858554/354043.terrain differ diff --git a/public/terrain/19/858554/354044.terrain b/public/terrain/19/858554/354044.terrain new file mode 100644 index 000000000..e2e50255d Binary files /dev/null and b/public/terrain/19/858554/354044.terrain differ diff --git a/public/terrain/19/858554/354045.terrain b/public/terrain/19/858554/354045.terrain new file mode 100644 index 000000000..a45c8de9e Binary files /dev/null and b/public/terrain/19/858554/354045.terrain differ diff --git a/public/terrain/19/858554/354046.terrain b/public/terrain/19/858554/354046.terrain new file mode 100644 index 000000000..bd30e2fb4 Binary files /dev/null and b/public/terrain/19/858554/354046.terrain differ diff --git a/public/terrain/19/858554/354047.terrain b/public/terrain/19/858554/354047.terrain new file mode 100644 index 000000000..a67cdb3a5 Binary files /dev/null and b/public/terrain/19/858554/354047.terrain differ diff --git a/public/terrain/19/858554/354048.terrain b/public/terrain/19/858554/354048.terrain new file mode 100644 index 000000000..a773c9af8 Binary files /dev/null and b/public/terrain/19/858554/354048.terrain differ diff --git a/public/terrain/19/858554/354049.terrain b/public/terrain/19/858554/354049.terrain new file mode 100644 index 000000000..c2a7100a3 Binary files /dev/null and b/public/terrain/19/858554/354049.terrain differ diff --git a/public/terrain/19/858554/354050.terrain b/public/terrain/19/858554/354050.terrain new file mode 100644 index 000000000..94800b3ca Binary files /dev/null and b/public/terrain/19/858554/354050.terrain differ diff --git a/public/terrain/19/858554/354051.terrain b/public/terrain/19/858554/354051.terrain new file mode 100644 index 000000000..abdbebcb7 Binary files /dev/null and b/public/terrain/19/858554/354051.terrain differ diff --git a/public/terrain/19/858554/354052.terrain b/public/terrain/19/858554/354052.terrain new file mode 100644 index 000000000..8984ea107 Binary files /dev/null and b/public/terrain/19/858554/354052.terrain differ diff --git a/public/terrain/19/858554/354053.terrain b/public/terrain/19/858554/354053.terrain new file mode 100644 index 000000000..6e6fdf243 Binary files /dev/null and b/public/terrain/19/858554/354053.terrain differ diff --git a/public/terrain/19/858554/354054.terrain b/public/terrain/19/858554/354054.terrain new file mode 100644 index 000000000..619c32061 Binary files /dev/null and b/public/terrain/19/858554/354054.terrain differ diff --git a/public/terrain/19/858554/354055.terrain b/public/terrain/19/858554/354055.terrain new file mode 100644 index 000000000..886d6318e Binary files /dev/null and b/public/terrain/19/858554/354055.terrain differ diff --git a/public/terrain/19/858554/354056.terrain b/public/terrain/19/858554/354056.terrain new file mode 100644 index 000000000..d822c317c Binary files /dev/null and b/public/terrain/19/858554/354056.terrain differ diff --git a/public/terrain/19/858554/354057.terrain b/public/terrain/19/858554/354057.terrain new file mode 100644 index 000000000..16a61a03b Binary files /dev/null and b/public/terrain/19/858554/354057.terrain differ diff --git a/public/terrain/19/858554/354058.terrain b/public/terrain/19/858554/354058.terrain new file mode 100644 index 000000000..9152c876b Binary files /dev/null and b/public/terrain/19/858554/354058.terrain differ diff --git a/public/terrain/19/858554/354059.terrain b/public/terrain/19/858554/354059.terrain new file mode 100644 index 000000000..f6d424154 Binary files /dev/null and b/public/terrain/19/858554/354059.terrain differ diff --git a/public/terrain/19/858555/353743.terrain b/public/terrain/19/858555/353743.terrain new file mode 100644 index 000000000..6e60f0aa4 Binary files /dev/null and b/public/terrain/19/858555/353743.terrain differ diff --git a/public/terrain/19/858555/353744.terrain b/public/terrain/19/858555/353744.terrain new file mode 100644 index 000000000..9861414f1 Binary files /dev/null and b/public/terrain/19/858555/353744.terrain differ diff --git a/public/terrain/19/858555/353745.terrain b/public/terrain/19/858555/353745.terrain new file mode 100644 index 000000000..9383d5236 Binary files /dev/null and b/public/terrain/19/858555/353745.terrain differ diff --git a/public/terrain/19/858555/353746.terrain b/public/terrain/19/858555/353746.terrain new file mode 100644 index 000000000..a0e860dee Binary files /dev/null and b/public/terrain/19/858555/353746.terrain differ diff --git a/public/terrain/19/858555/353747.terrain b/public/terrain/19/858555/353747.terrain new file mode 100644 index 000000000..30a5b42cc Binary files /dev/null and b/public/terrain/19/858555/353747.terrain differ diff --git a/public/terrain/19/858555/353748.terrain b/public/terrain/19/858555/353748.terrain new file mode 100644 index 000000000..afb7d809d Binary files /dev/null and b/public/terrain/19/858555/353748.terrain differ diff --git a/public/terrain/19/858555/353749.terrain b/public/terrain/19/858555/353749.terrain new file mode 100644 index 000000000..34aec7b9c Binary files /dev/null and b/public/terrain/19/858555/353749.terrain differ diff --git a/public/terrain/19/858555/353750.terrain b/public/terrain/19/858555/353750.terrain new file mode 100644 index 000000000..13c9f7280 Binary files /dev/null and b/public/terrain/19/858555/353750.terrain differ diff --git a/public/terrain/19/858555/353751.terrain b/public/terrain/19/858555/353751.terrain new file mode 100644 index 000000000..d514d5738 Binary files /dev/null and b/public/terrain/19/858555/353751.terrain differ diff --git a/public/terrain/19/858555/353752.terrain b/public/terrain/19/858555/353752.terrain new file mode 100644 index 000000000..2d5c27718 Binary files /dev/null and b/public/terrain/19/858555/353752.terrain differ diff --git a/public/terrain/19/858555/353753.terrain b/public/terrain/19/858555/353753.terrain new file mode 100644 index 000000000..a043601aa Binary files /dev/null and b/public/terrain/19/858555/353753.terrain differ diff --git a/public/terrain/19/858555/353754.terrain b/public/terrain/19/858555/353754.terrain new file mode 100644 index 000000000..ccdd419c1 Binary files /dev/null and b/public/terrain/19/858555/353754.terrain differ diff --git a/public/terrain/19/858555/353755.terrain b/public/terrain/19/858555/353755.terrain new file mode 100644 index 000000000..12c2e4026 Binary files /dev/null and b/public/terrain/19/858555/353755.terrain differ diff --git a/public/terrain/19/858555/353756.terrain b/public/terrain/19/858555/353756.terrain new file mode 100644 index 000000000..e87f161d4 Binary files /dev/null and b/public/terrain/19/858555/353756.terrain differ diff --git a/public/terrain/19/858555/353757.terrain b/public/terrain/19/858555/353757.terrain new file mode 100644 index 000000000..f03008bff Binary files /dev/null and b/public/terrain/19/858555/353757.terrain differ diff --git a/public/terrain/19/858555/353758.terrain b/public/terrain/19/858555/353758.terrain new file mode 100644 index 000000000..d767e34a3 Binary files /dev/null and b/public/terrain/19/858555/353758.terrain differ diff --git a/public/terrain/19/858555/353759.terrain b/public/terrain/19/858555/353759.terrain new file mode 100644 index 000000000..5c1fe3f02 Binary files /dev/null and b/public/terrain/19/858555/353759.terrain differ diff --git a/public/terrain/19/858555/353760.terrain b/public/terrain/19/858555/353760.terrain new file mode 100644 index 000000000..176286390 Binary files /dev/null and b/public/terrain/19/858555/353760.terrain differ diff --git a/public/terrain/19/858555/353761.terrain b/public/terrain/19/858555/353761.terrain new file mode 100644 index 000000000..12246909b Binary files /dev/null and b/public/terrain/19/858555/353761.terrain differ diff --git a/public/terrain/19/858555/353762.terrain b/public/terrain/19/858555/353762.terrain new file mode 100644 index 000000000..bfcc8f99a Binary files /dev/null and b/public/terrain/19/858555/353762.terrain differ diff --git a/public/terrain/19/858555/353763.terrain b/public/terrain/19/858555/353763.terrain new file mode 100644 index 000000000..9c66513f0 Binary files /dev/null and b/public/terrain/19/858555/353763.terrain differ diff --git a/public/terrain/19/858555/353764.terrain b/public/terrain/19/858555/353764.terrain new file mode 100644 index 000000000..37d881333 Binary files /dev/null and b/public/terrain/19/858555/353764.terrain differ diff --git a/public/terrain/19/858555/353765.terrain b/public/terrain/19/858555/353765.terrain new file mode 100644 index 000000000..9907ca64f Binary files /dev/null and b/public/terrain/19/858555/353765.terrain differ diff --git a/public/terrain/19/858555/353766.terrain b/public/terrain/19/858555/353766.terrain new file mode 100644 index 000000000..a78ca3e45 Binary files /dev/null and b/public/terrain/19/858555/353766.terrain differ diff --git a/public/terrain/19/858555/353767.terrain b/public/terrain/19/858555/353767.terrain new file mode 100644 index 000000000..4e01bf6fa Binary files /dev/null and b/public/terrain/19/858555/353767.terrain differ diff --git a/public/terrain/19/858555/353768.terrain b/public/terrain/19/858555/353768.terrain new file mode 100644 index 000000000..4680a0171 Binary files /dev/null and b/public/terrain/19/858555/353768.terrain differ diff --git a/public/terrain/19/858555/353769.terrain b/public/terrain/19/858555/353769.terrain new file mode 100644 index 000000000..fc0b02bc5 Binary files /dev/null and b/public/terrain/19/858555/353769.terrain differ diff --git a/public/terrain/19/858555/353770.terrain b/public/terrain/19/858555/353770.terrain new file mode 100644 index 000000000..6ba17eed8 Binary files /dev/null and b/public/terrain/19/858555/353770.terrain differ diff --git a/public/terrain/19/858555/353771.terrain b/public/terrain/19/858555/353771.terrain new file mode 100644 index 000000000..74f18c9fa Binary files /dev/null and b/public/terrain/19/858555/353771.terrain differ diff --git a/public/terrain/19/858555/353772.terrain b/public/terrain/19/858555/353772.terrain new file mode 100644 index 000000000..9c8e86b23 Binary files /dev/null and b/public/terrain/19/858555/353772.terrain differ diff --git a/public/terrain/19/858555/353773.terrain b/public/terrain/19/858555/353773.terrain new file mode 100644 index 000000000..f45ce7086 Binary files /dev/null and b/public/terrain/19/858555/353773.terrain differ diff --git a/public/terrain/19/858555/353774.terrain b/public/terrain/19/858555/353774.terrain new file mode 100644 index 000000000..eaa26a2b0 Binary files /dev/null and b/public/terrain/19/858555/353774.terrain differ diff --git a/public/terrain/19/858555/353775.terrain b/public/terrain/19/858555/353775.terrain new file mode 100644 index 000000000..c7a155861 Binary files /dev/null and b/public/terrain/19/858555/353775.terrain differ diff --git a/public/terrain/19/858555/353776.terrain b/public/terrain/19/858555/353776.terrain new file mode 100644 index 000000000..2e95c3e36 Binary files /dev/null and b/public/terrain/19/858555/353776.terrain differ diff --git a/public/terrain/19/858555/353777.terrain b/public/terrain/19/858555/353777.terrain new file mode 100644 index 000000000..53c7f3c07 Binary files /dev/null and b/public/terrain/19/858555/353777.terrain differ diff --git a/public/terrain/19/858555/353778.terrain b/public/terrain/19/858555/353778.terrain new file mode 100644 index 000000000..439b40114 Binary files /dev/null and b/public/terrain/19/858555/353778.terrain differ diff --git a/public/terrain/19/858555/353779.terrain b/public/terrain/19/858555/353779.terrain new file mode 100644 index 000000000..384e07567 Binary files /dev/null and b/public/terrain/19/858555/353779.terrain differ diff --git a/public/terrain/19/858555/353780.terrain b/public/terrain/19/858555/353780.terrain new file mode 100644 index 000000000..a8a42b222 Binary files /dev/null and b/public/terrain/19/858555/353780.terrain differ diff --git a/public/terrain/19/858555/353781.terrain b/public/terrain/19/858555/353781.terrain new file mode 100644 index 000000000..5967905f8 Binary files /dev/null and b/public/terrain/19/858555/353781.terrain differ diff --git a/public/terrain/19/858555/353782.terrain b/public/terrain/19/858555/353782.terrain new file mode 100644 index 000000000..d7fc66060 Binary files /dev/null and b/public/terrain/19/858555/353782.terrain differ diff --git a/public/terrain/19/858555/353783.terrain b/public/terrain/19/858555/353783.terrain new file mode 100644 index 000000000..aa3bbc7f7 Binary files /dev/null and b/public/terrain/19/858555/353783.terrain differ diff --git a/public/terrain/19/858555/353784.terrain b/public/terrain/19/858555/353784.terrain new file mode 100644 index 000000000..08e594b95 Binary files /dev/null and b/public/terrain/19/858555/353784.terrain differ diff --git a/public/terrain/19/858555/353785.terrain b/public/terrain/19/858555/353785.terrain new file mode 100644 index 000000000..05256600b Binary files /dev/null and b/public/terrain/19/858555/353785.terrain differ diff --git a/public/terrain/19/858555/353786.terrain b/public/terrain/19/858555/353786.terrain new file mode 100644 index 000000000..21520db9b Binary files /dev/null and b/public/terrain/19/858555/353786.terrain differ diff --git a/public/terrain/19/858555/353787.terrain b/public/terrain/19/858555/353787.terrain new file mode 100644 index 000000000..fd69bf310 Binary files /dev/null and b/public/terrain/19/858555/353787.terrain differ diff --git a/public/terrain/19/858555/353788.terrain b/public/terrain/19/858555/353788.terrain new file mode 100644 index 000000000..d2484c171 Binary files /dev/null and b/public/terrain/19/858555/353788.terrain differ diff --git a/public/terrain/19/858555/353789.terrain b/public/terrain/19/858555/353789.terrain new file mode 100644 index 000000000..096444558 Binary files /dev/null and b/public/terrain/19/858555/353789.terrain differ diff --git a/public/terrain/19/858555/353790.terrain b/public/terrain/19/858555/353790.terrain new file mode 100644 index 000000000..3e5a685ea Binary files /dev/null and b/public/terrain/19/858555/353790.terrain differ diff --git a/public/terrain/19/858555/353791.terrain b/public/terrain/19/858555/353791.terrain new file mode 100644 index 000000000..341c1e99c Binary files /dev/null and b/public/terrain/19/858555/353791.terrain differ diff --git a/public/terrain/19/858555/353792.terrain b/public/terrain/19/858555/353792.terrain new file mode 100644 index 000000000..e887484cb Binary files /dev/null and b/public/terrain/19/858555/353792.terrain differ diff --git a/public/terrain/19/858555/353793.terrain b/public/terrain/19/858555/353793.terrain new file mode 100644 index 000000000..41836ea56 Binary files /dev/null and b/public/terrain/19/858555/353793.terrain differ diff --git a/public/terrain/19/858555/353794.terrain b/public/terrain/19/858555/353794.terrain new file mode 100644 index 000000000..b8611c71d Binary files /dev/null and b/public/terrain/19/858555/353794.terrain differ diff --git a/public/terrain/19/858555/353795.terrain b/public/terrain/19/858555/353795.terrain new file mode 100644 index 000000000..d8ef5a789 Binary files /dev/null and b/public/terrain/19/858555/353795.terrain differ diff --git a/public/terrain/19/858555/353796.terrain b/public/terrain/19/858555/353796.terrain new file mode 100644 index 000000000..a568b55cc Binary files /dev/null and b/public/terrain/19/858555/353796.terrain differ diff --git a/public/terrain/19/858555/353797.terrain b/public/terrain/19/858555/353797.terrain new file mode 100644 index 000000000..c0d0ad005 Binary files /dev/null and b/public/terrain/19/858555/353797.terrain differ diff --git a/public/terrain/19/858555/353798.terrain b/public/terrain/19/858555/353798.terrain new file mode 100644 index 000000000..2cfb1daeb Binary files /dev/null and b/public/terrain/19/858555/353798.terrain differ diff --git a/public/terrain/19/858555/353799.terrain b/public/terrain/19/858555/353799.terrain new file mode 100644 index 000000000..ae45deb15 Binary files /dev/null and b/public/terrain/19/858555/353799.terrain differ diff --git a/public/terrain/19/858555/353800.terrain b/public/terrain/19/858555/353800.terrain new file mode 100644 index 000000000..f92ec7b63 Binary files /dev/null and b/public/terrain/19/858555/353800.terrain differ diff --git a/public/terrain/19/858555/353801.terrain b/public/terrain/19/858555/353801.terrain new file mode 100644 index 000000000..10c659931 Binary files /dev/null and b/public/terrain/19/858555/353801.terrain differ diff --git a/public/terrain/19/858555/353802.terrain b/public/terrain/19/858555/353802.terrain new file mode 100644 index 000000000..d6ad7e2bb Binary files /dev/null and b/public/terrain/19/858555/353802.terrain differ diff --git a/public/terrain/19/858555/353803.terrain b/public/terrain/19/858555/353803.terrain new file mode 100644 index 000000000..ab9859c24 Binary files /dev/null and b/public/terrain/19/858555/353803.terrain differ diff --git a/public/terrain/19/858555/353804.terrain b/public/terrain/19/858555/353804.terrain new file mode 100644 index 000000000..7efcaa826 Binary files /dev/null and b/public/terrain/19/858555/353804.terrain differ diff --git a/public/terrain/19/858555/353805.terrain b/public/terrain/19/858555/353805.terrain new file mode 100644 index 000000000..95bfb5e6a Binary files /dev/null and b/public/terrain/19/858555/353805.terrain differ diff --git a/public/terrain/19/858555/353806.terrain b/public/terrain/19/858555/353806.terrain new file mode 100644 index 000000000..d970e927b Binary files /dev/null and b/public/terrain/19/858555/353806.terrain differ diff --git a/public/terrain/19/858555/353807.terrain b/public/terrain/19/858555/353807.terrain new file mode 100644 index 000000000..6e881035e Binary files /dev/null and b/public/terrain/19/858555/353807.terrain differ diff --git a/public/terrain/19/858555/353808.terrain b/public/terrain/19/858555/353808.terrain new file mode 100644 index 000000000..f62ce2faa Binary files /dev/null and b/public/terrain/19/858555/353808.terrain differ diff --git a/public/terrain/19/858555/353809.terrain b/public/terrain/19/858555/353809.terrain new file mode 100644 index 000000000..e22540571 Binary files /dev/null and b/public/terrain/19/858555/353809.terrain differ diff --git a/public/terrain/19/858555/353810.terrain b/public/terrain/19/858555/353810.terrain new file mode 100644 index 000000000..11c55762b Binary files /dev/null and b/public/terrain/19/858555/353810.terrain differ diff --git a/public/terrain/19/858555/353811.terrain b/public/terrain/19/858555/353811.terrain new file mode 100644 index 000000000..c45074814 Binary files /dev/null and b/public/terrain/19/858555/353811.terrain differ diff --git a/public/terrain/19/858555/353812.terrain b/public/terrain/19/858555/353812.terrain new file mode 100644 index 000000000..5688da5b2 Binary files /dev/null and b/public/terrain/19/858555/353812.terrain differ diff --git a/public/terrain/19/858555/353813.terrain b/public/terrain/19/858555/353813.terrain new file mode 100644 index 000000000..5fe788b2b Binary files /dev/null and b/public/terrain/19/858555/353813.terrain differ diff --git a/public/terrain/19/858555/353814.terrain b/public/terrain/19/858555/353814.terrain new file mode 100644 index 000000000..eb1332eb8 Binary files /dev/null and b/public/terrain/19/858555/353814.terrain differ diff --git a/public/terrain/19/858555/353815.terrain b/public/terrain/19/858555/353815.terrain new file mode 100644 index 000000000..c56c4bd16 Binary files /dev/null and b/public/terrain/19/858555/353815.terrain differ diff --git a/public/terrain/19/858555/353816.terrain b/public/terrain/19/858555/353816.terrain new file mode 100644 index 000000000..38053a90c Binary files /dev/null and b/public/terrain/19/858555/353816.terrain differ diff --git a/public/terrain/19/858555/353817.terrain b/public/terrain/19/858555/353817.terrain new file mode 100644 index 000000000..4c215ff3c Binary files /dev/null and b/public/terrain/19/858555/353817.terrain differ diff --git a/public/terrain/19/858555/353818.terrain b/public/terrain/19/858555/353818.terrain new file mode 100644 index 000000000..de8f7a3f6 Binary files /dev/null and b/public/terrain/19/858555/353818.terrain differ diff --git a/public/terrain/19/858555/353819.terrain b/public/terrain/19/858555/353819.terrain new file mode 100644 index 000000000..66836837a Binary files /dev/null and b/public/terrain/19/858555/353819.terrain differ diff --git a/public/terrain/19/858555/353820.terrain b/public/terrain/19/858555/353820.terrain new file mode 100644 index 000000000..1ecf9daee Binary files /dev/null and b/public/terrain/19/858555/353820.terrain differ diff --git a/public/terrain/19/858555/353821.terrain b/public/terrain/19/858555/353821.terrain new file mode 100644 index 000000000..3de49c58e Binary files /dev/null and b/public/terrain/19/858555/353821.terrain differ diff --git a/public/terrain/19/858555/353822.terrain b/public/terrain/19/858555/353822.terrain new file mode 100644 index 000000000..b15293f3b Binary files /dev/null and b/public/terrain/19/858555/353822.terrain differ diff --git a/public/terrain/19/858555/353823.terrain b/public/terrain/19/858555/353823.terrain new file mode 100644 index 000000000..fb52819b0 Binary files /dev/null and b/public/terrain/19/858555/353823.terrain differ diff --git a/public/terrain/19/858555/353824.terrain b/public/terrain/19/858555/353824.terrain new file mode 100644 index 000000000..af9fd1f56 Binary files /dev/null and b/public/terrain/19/858555/353824.terrain differ diff --git a/public/terrain/19/858555/353825.terrain b/public/terrain/19/858555/353825.terrain new file mode 100644 index 000000000..0171d2e49 Binary files /dev/null and b/public/terrain/19/858555/353825.terrain differ diff --git a/public/terrain/19/858555/353826.terrain b/public/terrain/19/858555/353826.terrain new file mode 100644 index 000000000..e9ff93346 Binary files /dev/null and b/public/terrain/19/858555/353826.terrain differ diff --git a/public/terrain/19/858555/353827.terrain b/public/terrain/19/858555/353827.terrain new file mode 100644 index 000000000..0ad9955d1 Binary files /dev/null and b/public/terrain/19/858555/353827.terrain differ diff --git a/public/terrain/19/858555/353828.terrain b/public/terrain/19/858555/353828.terrain new file mode 100644 index 000000000..23b5c6037 Binary files /dev/null and b/public/terrain/19/858555/353828.terrain differ diff --git a/public/terrain/19/858555/353829.terrain b/public/terrain/19/858555/353829.terrain new file mode 100644 index 000000000..c8f40bcfd Binary files /dev/null and b/public/terrain/19/858555/353829.terrain differ diff --git a/public/terrain/19/858555/353830.terrain b/public/terrain/19/858555/353830.terrain new file mode 100644 index 000000000..c7d601112 Binary files /dev/null and b/public/terrain/19/858555/353830.terrain differ diff --git a/public/terrain/19/858555/353831.terrain b/public/terrain/19/858555/353831.terrain new file mode 100644 index 000000000..ef63b9ef0 Binary files /dev/null and b/public/terrain/19/858555/353831.terrain differ diff --git a/public/terrain/19/858555/353832.terrain b/public/terrain/19/858555/353832.terrain new file mode 100644 index 000000000..4cb782bd7 Binary files /dev/null and b/public/terrain/19/858555/353832.terrain differ diff --git a/public/terrain/19/858555/353833.terrain b/public/terrain/19/858555/353833.terrain new file mode 100644 index 000000000..8353cd830 Binary files /dev/null and b/public/terrain/19/858555/353833.terrain differ diff --git a/public/terrain/19/858555/353834.terrain b/public/terrain/19/858555/353834.terrain new file mode 100644 index 000000000..365a5f663 Binary files /dev/null and b/public/terrain/19/858555/353834.terrain differ diff --git a/public/terrain/19/858555/353835.terrain b/public/terrain/19/858555/353835.terrain new file mode 100644 index 000000000..9805c2a37 Binary files /dev/null and b/public/terrain/19/858555/353835.terrain differ diff --git a/public/terrain/19/858555/353836.terrain b/public/terrain/19/858555/353836.terrain new file mode 100644 index 000000000..d12a35bea Binary files /dev/null and b/public/terrain/19/858555/353836.terrain differ diff --git a/public/terrain/19/858555/353837.terrain b/public/terrain/19/858555/353837.terrain new file mode 100644 index 000000000..0bdb8d408 Binary files /dev/null and b/public/terrain/19/858555/353837.terrain differ diff --git a/public/terrain/19/858555/353838.terrain b/public/terrain/19/858555/353838.terrain new file mode 100644 index 000000000..cc4786ac0 Binary files /dev/null and b/public/terrain/19/858555/353838.terrain differ diff --git a/public/terrain/19/858555/353839.terrain b/public/terrain/19/858555/353839.terrain new file mode 100644 index 000000000..c63cf5a16 Binary files /dev/null and b/public/terrain/19/858555/353839.terrain differ diff --git a/public/terrain/19/858555/353840.terrain b/public/terrain/19/858555/353840.terrain new file mode 100644 index 000000000..906061650 Binary files /dev/null and b/public/terrain/19/858555/353840.terrain differ diff --git a/public/terrain/19/858555/353841.terrain b/public/terrain/19/858555/353841.terrain new file mode 100644 index 000000000..878f3c88f Binary files /dev/null and b/public/terrain/19/858555/353841.terrain differ diff --git a/public/terrain/19/858555/353842.terrain b/public/terrain/19/858555/353842.terrain new file mode 100644 index 000000000..ac2598853 Binary files /dev/null and b/public/terrain/19/858555/353842.terrain differ diff --git a/public/terrain/19/858555/353843.terrain b/public/terrain/19/858555/353843.terrain new file mode 100644 index 000000000..f458383d5 Binary files /dev/null and b/public/terrain/19/858555/353843.terrain differ diff --git a/public/terrain/19/858555/353844.terrain b/public/terrain/19/858555/353844.terrain new file mode 100644 index 000000000..1292af3e5 Binary files /dev/null and b/public/terrain/19/858555/353844.terrain differ diff --git a/public/terrain/19/858555/353845.terrain b/public/terrain/19/858555/353845.terrain new file mode 100644 index 000000000..7ed083531 Binary files /dev/null and b/public/terrain/19/858555/353845.terrain differ diff --git a/public/terrain/19/858555/353846.terrain b/public/terrain/19/858555/353846.terrain new file mode 100644 index 000000000..1deee3d9a Binary files /dev/null and b/public/terrain/19/858555/353846.terrain differ diff --git a/public/terrain/19/858555/353847.terrain b/public/terrain/19/858555/353847.terrain new file mode 100644 index 000000000..02ea4b41c Binary files /dev/null and b/public/terrain/19/858555/353847.terrain differ diff --git a/public/terrain/19/858555/353848.terrain b/public/terrain/19/858555/353848.terrain new file mode 100644 index 000000000..e436300f3 Binary files /dev/null and b/public/terrain/19/858555/353848.terrain differ diff --git a/public/terrain/19/858555/353849.terrain b/public/terrain/19/858555/353849.terrain new file mode 100644 index 000000000..c5e6b56cd Binary files /dev/null and b/public/terrain/19/858555/353849.terrain differ diff --git a/public/terrain/19/858555/353850.terrain b/public/terrain/19/858555/353850.terrain new file mode 100644 index 000000000..d06d50f2f Binary files /dev/null and b/public/terrain/19/858555/353850.terrain differ diff --git a/public/terrain/19/858555/353851.terrain b/public/terrain/19/858555/353851.terrain new file mode 100644 index 000000000..b8f913ea9 Binary files /dev/null and b/public/terrain/19/858555/353851.terrain differ diff --git a/public/terrain/19/858555/353852.terrain b/public/terrain/19/858555/353852.terrain new file mode 100644 index 000000000..07a543e6f Binary files /dev/null and b/public/terrain/19/858555/353852.terrain differ diff --git a/public/terrain/19/858555/353853.terrain b/public/terrain/19/858555/353853.terrain new file mode 100644 index 000000000..0856abf8c Binary files /dev/null and b/public/terrain/19/858555/353853.terrain differ diff --git a/public/terrain/19/858555/353854.terrain b/public/terrain/19/858555/353854.terrain new file mode 100644 index 000000000..678ff584e Binary files /dev/null and b/public/terrain/19/858555/353854.terrain differ diff --git a/public/terrain/19/858555/353855.terrain b/public/terrain/19/858555/353855.terrain new file mode 100644 index 000000000..d6f2d1d75 Binary files /dev/null and b/public/terrain/19/858555/353855.terrain differ diff --git a/public/terrain/19/858555/353856.terrain b/public/terrain/19/858555/353856.terrain new file mode 100644 index 000000000..cc3d00ba9 Binary files /dev/null and b/public/terrain/19/858555/353856.terrain differ diff --git a/public/terrain/19/858555/353857.terrain b/public/terrain/19/858555/353857.terrain new file mode 100644 index 000000000..daf045f14 Binary files /dev/null and b/public/terrain/19/858555/353857.terrain differ diff --git a/public/terrain/19/858555/353858.terrain b/public/terrain/19/858555/353858.terrain new file mode 100644 index 000000000..6e77a4549 Binary files /dev/null and b/public/terrain/19/858555/353858.terrain differ diff --git a/public/terrain/19/858555/353859.terrain b/public/terrain/19/858555/353859.terrain new file mode 100644 index 000000000..9d76fe824 Binary files /dev/null and b/public/terrain/19/858555/353859.terrain differ diff --git a/public/terrain/19/858555/353860.terrain b/public/terrain/19/858555/353860.terrain new file mode 100644 index 000000000..b7908b4c8 Binary files /dev/null and b/public/terrain/19/858555/353860.terrain differ diff --git a/public/terrain/19/858555/353861.terrain b/public/terrain/19/858555/353861.terrain new file mode 100644 index 000000000..5969a2130 Binary files /dev/null and b/public/terrain/19/858555/353861.terrain differ diff --git a/public/terrain/19/858555/353862.terrain b/public/terrain/19/858555/353862.terrain new file mode 100644 index 000000000..eb77a41e8 Binary files /dev/null and b/public/terrain/19/858555/353862.terrain differ diff --git a/public/terrain/19/858555/353863.terrain b/public/terrain/19/858555/353863.terrain new file mode 100644 index 000000000..a053ee81b Binary files /dev/null and b/public/terrain/19/858555/353863.terrain differ diff --git a/public/terrain/19/858555/353864.terrain b/public/terrain/19/858555/353864.terrain new file mode 100644 index 000000000..63194bae2 Binary files /dev/null and b/public/terrain/19/858555/353864.terrain differ diff --git a/public/terrain/19/858555/353865.terrain b/public/terrain/19/858555/353865.terrain new file mode 100644 index 000000000..814753d76 Binary files /dev/null and b/public/terrain/19/858555/353865.terrain differ diff --git a/public/terrain/19/858555/353866.terrain b/public/terrain/19/858555/353866.terrain new file mode 100644 index 000000000..27fd64a5c Binary files /dev/null and b/public/terrain/19/858555/353866.terrain differ diff --git a/public/terrain/19/858555/353867.terrain b/public/terrain/19/858555/353867.terrain new file mode 100644 index 000000000..5745977a0 Binary files /dev/null and b/public/terrain/19/858555/353867.terrain differ diff --git a/public/terrain/19/858555/353868.terrain b/public/terrain/19/858555/353868.terrain new file mode 100644 index 000000000..fe1cfe095 Binary files /dev/null and b/public/terrain/19/858555/353868.terrain differ diff --git a/public/terrain/19/858555/353869.terrain b/public/terrain/19/858555/353869.terrain new file mode 100644 index 000000000..b0b533d3c Binary files /dev/null and b/public/terrain/19/858555/353869.terrain differ diff --git a/public/terrain/19/858555/353870.terrain b/public/terrain/19/858555/353870.terrain new file mode 100644 index 000000000..f851bcf5f Binary files /dev/null and b/public/terrain/19/858555/353870.terrain differ diff --git a/public/terrain/19/858555/353871.terrain b/public/terrain/19/858555/353871.terrain new file mode 100644 index 000000000..bba63113a Binary files /dev/null and b/public/terrain/19/858555/353871.terrain differ diff --git a/public/terrain/19/858555/353872.terrain b/public/terrain/19/858555/353872.terrain new file mode 100644 index 000000000..5951c3b3d Binary files /dev/null and b/public/terrain/19/858555/353872.terrain differ diff --git a/public/terrain/19/858555/353873.terrain b/public/terrain/19/858555/353873.terrain new file mode 100644 index 000000000..b56b85083 Binary files /dev/null and b/public/terrain/19/858555/353873.terrain differ diff --git a/public/terrain/19/858555/353874.terrain b/public/terrain/19/858555/353874.terrain new file mode 100644 index 000000000..9d01dbb5d Binary files /dev/null and b/public/terrain/19/858555/353874.terrain differ diff --git a/public/terrain/19/858555/353875.terrain b/public/terrain/19/858555/353875.terrain new file mode 100644 index 000000000..00d1dd6f4 Binary files /dev/null and b/public/terrain/19/858555/353875.terrain differ diff --git a/public/terrain/19/858555/353876.terrain b/public/terrain/19/858555/353876.terrain new file mode 100644 index 000000000..ab0601b2e Binary files /dev/null and b/public/terrain/19/858555/353876.terrain differ diff --git a/public/terrain/19/858555/353877.terrain b/public/terrain/19/858555/353877.terrain new file mode 100644 index 000000000..566c9351a Binary files /dev/null and b/public/terrain/19/858555/353877.terrain differ diff --git a/public/terrain/19/858555/353878.terrain b/public/terrain/19/858555/353878.terrain new file mode 100644 index 000000000..5b3d65e25 Binary files /dev/null and b/public/terrain/19/858555/353878.terrain differ diff --git a/public/terrain/19/858555/353879.terrain b/public/terrain/19/858555/353879.terrain new file mode 100644 index 000000000..272610aaf Binary files /dev/null and b/public/terrain/19/858555/353879.terrain differ diff --git a/public/terrain/19/858555/353880.terrain b/public/terrain/19/858555/353880.terrain new file mode 100644 index 000000000..008287752 Binary files /dev/null and b/public/terrain/19/858555/353880.terrain differ diff --git a/public/terrain/19/858555/353881.terrain b/public/terrain/19/858555/353881.terrain new file mode 100644 index 000000000..0d3ab2151 Binary files /dev/null and b/public/terrain/19/858555/353881.terrain differ diff --git a/public/terrain/19/858555/353882.terrain b/public/terrain/19/858555/353882.terrain new file mode 100644 index 000000000..48ccfae47 Binary files /dev/null and b/public/terrain/19/858555/353882.terrain differ diff --git a/public/terrain/19/858555/353883.terrain b/public/terrain/19/858555/353883.terrain new file mode 100644 index 000000000..abc79a295 Binary files /dev/null and b/public/terrain/19/858555/353883.terrain differ diff --git a/public/terrain/19/858555/353884.terrain b/public/terrain/19/858555/353884.terrain new file mode 100644 index 000000000..88d1a9b6c Binary files /dev/null and b/public/terrain/19/858555/353884.terrain differ diff --git a/public/terrain/19/858555/353885.terrain b/public/terrain/19/858555/353885.terrain new file mode 100644 index 000000000..d1c19304a Binary files /dev/null and b/public/terrain/19/858555/353885.terrain differ diff --git a/public/terrain/19/858555/353886.terrain b/public/terrain/19/858555/353886.terrain new file mode 100644 index 000000000..73a73ff5e Binary files /dev/null and b/public/terrain/19/858555/353886.terrain differ diff --git a/public/terrain/19/858555/353887.terrain b/public/terrain/19/858555/353887.terrain new file mode 100644 index 000000000..8c907ce5d Binary files /dev/null and b/public/terrain/19/858555/353887.terrain differ diff --git a/public/terrain/19/858555/353888.terrain b/public/terrain/19/858555/353888.terrain new file mode 100644 index 000000000..bc0054974 Binary files /dev/null and b/public/terrain/19/858555/353888.terrain differ diff --git a/public/terrain/19/858555/353889.terrain b/public/terrain/19/858555/353889.terrain new file mode 100644 index 000000000..56372c54d Binary files /dev/null and b/public/terrain/19/858555/353889.terrain differ diff --git a/public/terrain/19/858555/353890.terrain b/public/terrain/19/858555/353890.terrain new file mode 100644 index 000000000..ed6210bf4 Binary files /dev/null and b/public/terrain/19/858555/353890.terrain differ diff --git a/public/terrain/19/858555/353891.terrain b/public/terrain/19/858555/353891.terrain new file mode 100644 index 000000000..cfd8624b8 Binary files /dev/null and b/public/terrain/19/858555/353891.terrain differ diff --git a/public/terrain/19/858555/353892.terrain b/public/terrain/19/858555/353892.terrain new file mode 100644 index 000000000..66c17c781 Binary files /dev/null and b/public/terrain/19/858555/353892.terrain differ diff --git a/public/terrain/19/858555/353893.terrain b/public/terrain/19/858555/353893.terrain new file mode 100644 index 000000000..f63c342bf Binary files /dev/null and b/public/terrain/19/858555/353893.terrain differ diff --git a/public/terrain/19/858555/353894.terrain b/public/terrain/19/858555/353894.terrain new file mode 100644 index 000000000..e2f747e77 Binary files /dev/null and b/public/terrain/19/858555/353894.terrain differ diff --git a/public/terrain/19/858555/353895.terrain b/public/terrain/19/858555/353895.terrain new file mode 100644 index 000000000..13c4ef6b8 Binary files /dev/null and b/public/terrain/19/858555/353895.terrain differ diff --git a/public/terrain/19/858555/353896.terrain b/public/terrain/19/858555/353896.terrain new file mode 100644 index 000000000..c5e16967f Binary files /dev/null and b/public/terrain/19/858555/353896.terrain differ diff --git a/public/terrain/19/858555/353897.terrain b/public/terrain/19/858555/353897.terrain new file mode 100644 index 000000000..c683b22c2 Binary files /dev/null and b/public/terrain/19/858555/353897.terrain differ diff --git a/public/terrain/19/858555/353898.terrain b/public/terrain/19/858555/353898.terrain new file mode 100644 index 000000000..8e459f5c9 Binary files /dev/null and b/public/terrain/19/858555/353898.terrain differ diff --git a/public/terrain/19/858555/353899.terrain b/public/terrain/19/858555/353899.terrain new file mode 100644 index 000000000..e6a1e6152 Binary files /dev/null and b/public/terrain/19/858555/353899.terrain differ diff --git a/public/terrain/19/858555/353900.terrain b/public/terrain/19/858555/353900.terrain new file mode 100644 index 000000000..ab2684c29 Binary files /dev/null and b/public/terrain/19/858555/353900.terrain differ diff --git a/public/terrain/19/858555/353901.terrain b/public/terrain/19/858555/353901.terrain new file mode 100644 index 000000000..e9290509e Binary files /dev/null and b/public/terrain/19/858555/353901.terrain differ diff --git a/public/terrain/19/858555/353902.terrain b/public/terrain/19/858555/353902.terrain new file mode 100644 index 000000000..1d0fdde0e Binary files /dev/null and b/public/terrain/19/858555/353902.terrain differ diff --git a/public/terrain/19/858555/353903.terrain b/public/terrain/19/858555/353903.terrain new file mode 100644 index 000000000..d4879b7ab Binary files /dev/null and b/public/terrain/19/858555/353903.terrain differ diff --git a/public/terrain/19/858555/353904.terrain b/public/terrain/19/858555/353904.terrain new file mode 100644 index 000000000..4a5c72e54 Binary files /dev/null and b/public/terrain/19/858555/353904.terrain differ diff --git a/public/terrain/19/858555/353905.terrain b/public/terrain/19/858555/353905.terrain new file mode 100644 index 000000000..076d6cf68 Binary files /dev/null and b/public/terrain/19/858555/353905.terrain differ diff --git a/public/terrain/19/858555/353906.terrain b/public/terrain/19/858555/353906.terrain new file mode 100644 index 000000000..08b2091c6 Binary files /dev/null and b/public/terrain/19/858555/353906.terrain differ diff --git a/public/terrain/19/858555/353907.terrain b/public/terrain/19/858555/353907.terrain new file mode 100644 index 000000000..43fa25fa3 Binary files /dev/null and b/public/terrain/19/858555/353907.terrain differ diff --git a/public/terrain/19/858555/353908.terrain b/public/terrain/19/858555/353908.terrain new file mode 100644 index 000000000..366b42b35 Binary files /dev/null and b/public/terrain/19/858555/353908.terrain differ diff --git a/public/terrain/19/858555/353909.terrain b/public/terrain/19/858555/353909.terrain new file mode 100644 index 000000000..284804876 Binary files /dev/null and b/public/terrain/19/858555/353909.terrain differ diff --git a/public/terrain/19/858555/353910.terrain b/public/terrain/19/858555/353910.terrain new file mode 100644 index 000000000..869349cd1 Binary files /dev/null and b/public/terrain/19/858555/353910.terrain differ diff --git a/public/terrain/19/858555/353911.terrain b/public/terrain/19/858555/353911.terrain new file mode 100644 index 000000000..8c077e8d9 Binary files /dev/null and b/public/terrain/19/858555/353911.terrain differ diff --git a/public/terrain/19/858555/353912.terrain b/public/terrain/19/858555/353912.terrain new file mode 100644 index 000000000..fe90fd2b5 Binary files /dev/null and b/public/terrain/19/858555/353912.terrain differ diff --git a/public/terrain/19/858555/353913.terrain b/public/terrain/19/858555/353913.terrain new file mode 100644 index 000000000..e678fa796 Binary files /dev/null and b/public/terrain/19/858555/353913.terrain differ diff --git a/public/terrain/19/858555/353914.terrain b/public/terrain/19/858555/353914.terrain new file mode 100644 index 000000000..d69cc3dbc Binary files /dev/null and b/public/terrain/19/858555/353914.terrain differ diff --git a/public/terrain/19/858555/353915.terrain b/public/terrain/19/858555/353915.terrain new file mode 100644 index 000000000..ecb48c024 Binary files /dev/null and b/public/terrain/19/858555/353915.terrain differ diff --git a/public/terrain/19/858555/353916.terrain b/public/terrain/19/858555/353916.terrain new file mode 100644 index 000000000..53ee0d6cc Binary files /dev/null and b/public/terrain/19/858555/353916.terrain differ diff --git a/public/terrain/19/858555/353917.terrain b/public/terrain/19/858555/353917.terrain new file mode 100644 index 000000000..f57568a47 Binary files /dev/null and b/public/terrain/19/858555/353917.terrain differ diff --git a/public/terrain/19/858555/353918.terrain b/public/terrain/19/858555/353918.terrain new file mode 100644 index 000000000..0b454f14b Binary files /dev/null and b/public/terrain/19/858555/353918.terrain differ diff --git a/public/terrain/19/858555/353919.terrain b/public/terrain/19/858555/353919.terrain new file mode 100644 index 000000000..8752d1051 Binary files /dev/null and b/public/terrain/19/858555/353919.terrain differ diff --git a/public/terrain/19/858555/353920.terrain b/public/terrain/19/858555/353920.terrain new file mode 100644 index 000000000..2f6a64536 Binary files /dev/null and b/public/terrain/19/858555/353920.terrain differ diff --git a/public/terrain/19/858555/353921.terrain b/public/terrain/19/858555/353921.terrain new file mode 100644 index 000000000..1b708a60c Binary files /dev/null and b/public/terrain/19/858555/353921.terrain differ diff --git a/public/terrain/19/858555/353922.terrain b/public/terrain/19/858555/353922.terrain new file mode 100644 index 000000000..19f108766 Binary files /dev/null and b/public/terrain/19/858555/353922.terrain differ diff --git a/public/terrain/19/858555/353923.terrain b/public/terrain/19/858555/353923.terrain new file mode 100644 index 000000000..f7c56bcbb Binary files /dev/null and b/public/terrain/19/858555/353923.terrain differ diff --git a/public/terrain/19/858555/353924.terrain b/public/terrain/19/858555/353924.terrain new file mode 100644 index 000000000..9b681498c Binary files /dev/null and b/public/terrain/19/858555/353924.terrain differ diff --git a/public/terrain/19/858555/353925.terrain b/public/terrain/19/858555/353925.terrain new file mode 100644 index 000000000..5bee618f7 Binary files /dev/null and b/public/terrain/19/858555/353925.terrain differ diff --git a/public/terrain/19/858555/353926.terrain b/public/terrain/19/858555/353926.terrain new file mode 100644 index 000000000..12ee5bc59 Binary files /dev/null and b/public/terrain/19/858555/353926.terrain differ diff --git a/public/terrain/19/858555/353927.terrain b/public/terrain/19/858555/353927.terrain new file mode 100644 index 000000000..62426fccd Binary files /dev/null and b/public/terrain/19/858555/353927.terrain differ diff --git a/public/terrain/19/858555/353928.terrain b/public/terrain/19/858555/353928.terrain new file mode 100644 index 000000000..348c5a9cb Binary files /dev/null and b/public/terrain/19/858555/353928.terrain differ diff --git a/public/terrain/19/858555/353929.terrain b/public/terrain/19/858555/353929.terrain new file mode 100644 index 000000000..75bec98c8 Binary files /dev/null and b/public/terrain/19/858555/353929.terrain differ diff --git a/public/terrain/19/858555/353930.terrain b/public/terrain/19/858555/353930.terrain new file mode 100644 index 000000000..492985235 Binary files /dev/null and b/public/terrain/19/858555/353930.terrain differ diff --git a/public/terrain/19/858555/353931.terrain b/public/terrain/19/858555/353931.terrain new file mode 100644 index 000000000..2cba1827f Binary files /dev/null and b/public/terrain/19/858555/353931.terrain differ diff --git a/public/terrain/19/858555/353932.terrain b/public/terrain/19/858555/353932.terrain new file mode 100644 index 000000000..18db82b73 Binary files /dev/null and b/public/terrain/19/858555/353932.terrain differ diff --git a/public/terrain/19/858555/353933.terrain b/public/terrain/19/858555/353933.terrain new file mode 100644 index 000000000..4d9d9d535 Binary files /dev/null and b/public/terrain/19/858555/353933.terrain differ diff --git a/public/terrain/19/858555/353934.terrain b/public/terrain/19/858555/353934.terrain new file mode 100644 index 000000000..edb29be7c Binary files /dev/null and b/public/terrain/19/858555/353934.terrain differ diff --git a/public/terrain/19/858555/353935.terrain b/public/terrain/19/858555/353935.terrain new file mode 100644 index 000000000..84503ad6c Binary files /dev/null and b/public/terrain/19/858555/353935.terrain differ diff --git a/public/terrain/19/858555/353936.terrain b/public/terrain/19/858555/353936.terrain new file mode 100644 index 000000000..8bdfcae39 Binary files /dev/null and b/public/terrain/19/858555/353936.terrain differ diff --git a/public/terrain/19/858555/353937.terrain b/public/terrain/19/858555/353937.terrain new file mode 100644 index 000000000..82d55979e Binary files /dev/null and b/public/terrain/19/858555/353937.terrain differ diff --git a/public/terrain/19/858555/353938.terrain b/public/terrain/19/858555/353938.terrain new file mode 100644 index 000000000..7ae2fd467 Binary files /dev/null and b/public/terrain/19/858555/353938.terrain differ diff --git a/public/terrain/19/858555/353939.terrain b/public/terrain/19/858555/353939.terrain new file mode 100644 index 000000000..5a325e1cc Binary files /dev/null and b/public/terrain/19/858555/353939.terrain differ diff --git a/public/terrain/19/858555/353940.terrain b/public/terrain/19/858555/353940.terrain new file mode 100644 index 000000000..29d745fe8 Binary files /dev/null and b/public/terrain/19/858555/353940.terrain differ diff --git a/public/terrain/19/858555/353941.terrain b/public/terrain/19/858555/353941.terrain new file mode 100644 index 000000000..27889364f Binary files /dev/null and b/public/terrain/19/858555/353941.terrain differ diff --git a/public/terrain/19/858555/353942.terrain b/public/terrain/19/858555/353942.terrain new file mode 100644 index 000000000..ccc9f8a6e Binary files /dev/null and b/public/terrain/19/858555/353942.terrain differ diff --git a/public/terrain/19/858555/353943.terrain b/public/terrain/19/858555/353943.terrain new file mode 100644 index 000000000..a905d852f Binary files /dev/null and b/public/terrain/19/858555/353943.terrain differ diff --git a/public/terrain/19/858555/353944.terrain b/public/terrain/19/858555/353944.terrain new file mode 100644 index 000000000..5e0a7e806 Binary files /dev/null and b/public/terrain/19/858555/353944.terrain differ diff --git a/public/terrain/19/858555/353945.terrain b/public/terrain/19/858555/353945.terrain new file mode 100644 index 000000000..d537d02c1 Binary files /dev/null and b/public/terrain/19/858555/353945.terrain differ diff --git a/public/terrain/19/858555/353946.terrain b/public/terrain/19/858555/353946.terrain new file mode 100644 index 000000000..f78219042 Binary files /dev/null and b/public/terrain/19/858555/353946.terrain differ diff --git a/public/terrain/19/858555/353947.terrain b/public/terrain/19/858555/353947.terrain new file mode 100644 index 000000000..824ab01fe Binary files /dev/null and b/public/terrain/19/858555/353947.terrain differ diff --git a/public/terrain/19/858555/353948.terrain b/public/terrain/19/858555/353948.terrain new file mode 100644 index 000000000..a6a033e13 Binary files /dev/null and b/public/terrain/19/858555/353948.terrain differ diff --git a/public/terrain/19/858555/353949.terrain b/public/terrain/19/858555/353949.terrain new file mode 100644 index 000000000..525c4689c Binary files /dev/null and b/public/terrain/19/858555/353949.terrain differ diff --git a/public/terrain/19/858555/353950.terrain b/public/terrain/19/858555/353950.terrain new file mode 100644 index 000000000..531a740f2 Binary files /dev/null and b/public/terrain/19/858555/353950.terrain differ diff --git a/public/terrain/19/858555/353951.terrain b/public/terrain/19/858555/353951.terrain new file mode 100644 index 000000000..109ad9fc1 Binary files /dev/null and b/public/terrain/19/858555/353951.terrain differ diff --git a/public/terrain/19/858555/353952.terrain b/public/terrain/19/858555/353952.terrain new file mode 100644 index 000000000..4f67ea23d Binary files /dev/null and b/public/terrain/19/858555/353952.terrain differ diff --git a/public/terrain/19/858555/353953.terrain b/public/terrain/19/858555/353953.terrain new file mode 100644 index 000000000..34e8aeaf2 Binary files /dev/null and b/public/terrain/19/858555/353953.terrain differ diff --git a/public/terrain/19/858555/353954.terrain b/public/terrain/19/858555/353954.terrain new file mode 100644 index 000000000..22947b1b1 Binary files /dev/null and b/public/terrain/19/858555/353954.terrain differ diff --git a/public/terrain/19/858555/353955.terrain b/public/terrain/19/858555/353955.terrain new file mode 100644 index 000000000..be0800a86 Binary files /dev/null and b/public/terrain/19/858555/353955.terrain differ diff --git a/public/terrain/19/858555/353956.terrain b/public/terrain/19/858555/353956.terrain new file mode 100644 index 000000000..e388a2a17 Binary files /dev/null and b/public/terrain/19/858555/353956.terrain differ diff --git a/public/terrain/19/858555/353957.terrain b/public/terrain/19/858555/353957.terrain new file mode 100644 index 000000000..95b09f0b7 Binary files /dev/null and b/public/terrain/19/858555/353957.terrain differ diff --git a/public/terrain/19/858555/353958.terrain b/public/terrain/19/858555/353958.terrain new file mode 100644 index 000000000..4de676bd1 Binary files /dev/null and b/public/terrain/19/858555/353958.terrain differ diff --git a/public/terrain/19/858555/353959.terrain b/public/terrain/19/858555/353959.terrain new file mode 100644 index 000000000..352a1c30a Binary files /dev/null and b/public/terrain/19/858555/353959.terrain differ diff --git a/public/terrain/19/858555/353960.terrain b/public/terrain/19/858555/353960.terrain new file mode 100644 index 000000000..96441c7ba Binary files /dev/null and b/public/terrain/19/858555/353960.terrain differ diff --git a/public/terrain/19/858555/353961.terrain b/public/terrain/19/858555/353961.terrain new file mode 100644 index 000000000..de035d380 Binary files /dev/null and b/public/terrain/19/858555/353961.terrain differ diff --git a/public/terrain/19/858555/353962.terrain b/public/terrain/19/858555/353962.terrain new file mode 100644 index 000000000..2147445d3 Binary files /dev/null and b/public/terrain/19/858555/353962.terrain differ diff --git a/public/terrain/19/858555/353963.terrain b/public/terrain/19/858555/353963.terrain new file mode 100644 index 000000000..0cdbe31eb Binary files /dev/null and b/public/terrain/19/858555/353963.terrain differ diff --git a/public/terrain/19/858555/353964.terrain b/public/terrain/19/858555/353964.terrain new file mode 100644 index 000000000..874512459 Binary files /dev/null and b/public/terrain/19/858555/353964.terrain differ diff --git a/public/terrain/19/858555/353965.terrain b/public/terrain/19/858555/353965.terrain new file mode 100644 index 000000000..e104b2dbc Binary files /dev/null and b/public/terrain/19/858555/353965.terrain differ diff --git a/public/terrain/19/858555/353966.terrain b/public/terrain/19/858555/353966.terrain new file mode 100644 index 000000000..65cdc3de5 Binary files /dev/null and b/public/terrain/19/858555/353966.terrain differ diff --git a/public/terrain/19/858555/353967.terrain b/public/terrain/19/858555/353967.terrain new file mode 100644 index 000000000..9e95908b3 Binary files /dev/null and b/public/terrain/19/858555/353967.terrain differ diff --git a/public/terrain/19/858555/353968.terrain b/public/terrain/19/858555/353968.terrain new file mode 100644 index 000000000..cb4540fef Binary files /dev/null and b/public/terrain/19/858555/353968.terrain differ diff --git a/public/terrain/19/858555/353969.terrain b/public/terrain/19/858555/353969.terrain new file mode 100644 index 000000000..d2d5e47a5 Binary files /dev/null and b/public/terrain/19/858555/353969.terrain differ diff --git a/public/terrain/19/858555/353970.terrain b/public/terrain/19/858555/353970.terrain new file mode 100644 index 000000000..2001408e6 Binary files /dev/null and b/public/terrain/19/858555/353970.terrain differ diff --git a/public/terrain/19/858555/353971.terrain b/public/terrain/19/858555/353971.terrain new file mode 100644 index 000000000..8b181cc65 Binary files /dev/null and b/public/terrain/19/858555/353971.terrain differ diff --git a/public/terrain/19/858555/353972.terrain b/public/terrain/19/858555/353972.terrain new file mode 100644 index 000000000..b09dda205 Binary files /dev/null and b/public/terrain/19/858555/353972.terrain differ diff --git a/public/terrain/19/858555/353973.terrain b/public/terrain/19/858555/353973.terrain new file mode 100644 index 000000000..927cd3a37 Binary files /dev/null and b/public/terrain/19/858555/353973.terrain differ diff --git a/public/terrain/19/858555/353974.terrain b/public/terrain/19/858555/353974.terrain new file mode 100644 index 000000000..7f9c7d7ff Binary files /dev/null and b/public/terrain/19/858555/353974.terrain differ diff --git a/public/terrain/19/858555/353975.terrain b/public/terrain/19/858555/353975.terrain new file mode 100644 index 000000000..a16a93ac0 Binary files /dev/null and b/public/terrain/19/858555/353975.terrain differ diff --git a/public/terrain/19/858555/353976.terrain b/public/terrain/19/858555/353976.terrain new file mode 100644 index 000000000..20e2888ca Binary files /dev/null and b/public/terrain/19/858555/353976.terrain differ diff --git a/public/terrain/19/858555/353977.terrain b/public/terrain/19/858555/353977.terrain new file mode 100644 index 000000000..e8e44a695 Binary files /dev/null and b/public/terrain/19/858555/353977.terrain differ diff --git a/public/terrain/19/858555/353978.terrain b/public/terrain/19/858555/353978.terrain new file mode 100644 index 000000000..d8c1ca584 Binary files /dev/null and b/public/terrain/19/858555/353978.terrain differ diff --git a/public/terrain/19/858555/353979.terrain b/public/terrain/19/858555/353979.terrain new file mode 100644 index 000000000..0153c2aaa Binary files /dev/null and b/public/terrain/19/858555/353979.terrain differ diff --git a/public/terrain/19/858555/353980.terrain b/public/terrain/19/858555/353980.terrain new file mode 100644 index 000000000..eba9974d2 Binary files /dev/null and b/public/terrain/19/858555/353980.terrain differ diff --git a/public/terrain/19/858555/353981.terrain b/public/terrain/19/858555/353981.terrain new file mode 100644 index 000000000..37de3939d Binary files /dev/null and b/public/terrain/19/858555/353981.terrain differ diff --git a/public/terrain/19/858555/353982.terrain b/public/terrain/19/858555/353982.terrain new file mode 100644 index 000000000..c329da70e Binary files /dev/null and b/public/terrain/19/858555/353982.terrain differ diff --git a/public/terrain/19/858555/353983.terrain b/public/terrain/19/858555/353983.terrain new file mode 100644 index 000000000..6adf2d10a Binary files /dev/null and b/public/terrain/19/858555/353983.terrain differ diff --git a/public/terrain/19/858555/353984.terrain b/public/terrain/19/858555/353984.terrain new file mode 100644 index 000000000..a092b3ede Binary files /dev/null and b/public/terrain/19/858555/353984.terrain differ diff --git a/public/terrain/19/858555/353985.terrain b/public/terrain/19/858555/353985.terrain new file mode 100644 index 000000000..8ecb54c1a Binary files /dev/null and b/public/terrain/19/858555/353985.terrain differ diff --git a/public/terrain/19/858555/353986.terrain b/public/terrain/19/858555/353986.terrain new file mode 100644 index 000000000..26e83f883 Binary files /dev/null and b/public/terrain/19/858555/353986.terrain differ diff --git a/public/terrain/19/858555/353987.terrain b/public/terrain/19/858555/353987.terrain new file mode 100644 index 000000000..4409f4993 Binary files /dev/null and b/public/terrain/19/858555/353987.terrain differ diff --git a/public/terrain/19/858555/353988.terrain b/public/terrain/19/858555/353988.terrain new file mode 100644 index 000000000..5edf0b82a Binary files /dev/null and b/public/terrain/19/858555/353988.terrain differ diff --git a/public/terrain/19/858555/353989.terrain b/public/terrain/19/858555/353989.terrain new file mode 100644 index 000000000..6fdabf643 Binary files /dev/null and b/public/terrain/19/858555/353989.terrain differ diff --git a/public/terrain/19/858555/353990.terrain b/public/terrain/19/858555/353990.terrain new file mode 100644 index 000000000..7e521989e Binary files /dev/null and b/public/terrain/19/858555/353990.terrain differ diff --git a/public/terrain/19/858555/353991.terrain b/public/terrain/19/858555/353991.terrain new file mode 100644 index 000000000..d7ad8a33c Binary files /dev/null and b/public/terrain/19/858555/353991.terrain differ diff --git a/public/terrain/19/858555/353992.terrain b/public/terrain/19/858555/353992.terrain new file mode 100644 index 000000000..0def9d072 Binary files /dev/null and b/public/terrain/19/858555/353992.terrain differ diff --git a/public/terrain/19/858555/353993.terrain b/public/terrain/19/858555/353993.terrain new file mode 100644 index 000000000..a000c51a4 Binary files /dev/null and b/public/terrain/19/858555/353993.terrain differ diff --git a/public/terrain/19/858555/353994.terrain b/public/terrain/19/858555/353994.terrain new file mode 100644 index 000000000..f826b8868 Binary files /dev/null and b/public/terrain/19/858555/353994.terrain differ diff --git a/public/terrain/19/858555/353995.terrain b/public/terrain/19/858555/353995.terrain new file mode 100644 index 000000000..97530bcb2 Binary files /dev/null and b/public/terrain/19/858555/353995.terrain differ diff --git a/public/terrain/19/858555/353996.terrain b/public/terrain/19/858555/353996.terrain new file mode 100644 index 000000000..f5dd25646 Binary files /dev/null and b/public/terrain/19/858555/353996.terrain differ diff --git a/public/terrain/19/858555/353997.terrain b/public/terrain/19/858555/353997.terrain new file mode 100644 index 000000000..f83f5a9a0 Binary files /dev/null and b/public/terrain/19/858555/353997.terrain differ diff --git a/public/terrain/19/858555/353998.terrain b/public/terrain/19/858555/353998.terrain new file mode 100644 index 000000000..915a1b422 Binary files /dev/null and b/public/terrain/19/858555/353998.terrain differ diff --git a/public/terrain/19/858555/353999.terrain b/public/terrain/19/858555/353999.terrain new file mode 100644 index 000000000..a855fd5b9 Binary files /dev/null and b/public/terrain/19/858555/353999.terrain differ diff --git a/public/terrain/19/858555/354000.terrain b/public/terrain/19/858555/354000.terrain new file mode 100644 index 000000000..5336233e2 Binary files /dev/null and b/public/terrain/19/858555/354000.terrain differ diff --git a/public/terrain/19/858555/354001.terrain b/public/terrain/19/858555/354001.terrain new file mode 100644 index 000000000..25f9efc81 Binary files /dev/null and b/public/terrain/19/858555/354001.terrain differ diff --git a/public/terrain/19/858555/354002.terrain b/public/terrain/19/858555/354002.terrain new file mode 100644 index 000000000..7ca11efc8 Binary files /dev/null and b/public/terrain/19/858555/354002.terrain differ diff --git a/public/terrain/19/858555/354003.terrain b/public/terrain/19/858555/354003.terrain new file mode 100644 index 000000000..b02df162f Binary files /dev/null and b/public/terrain/19/858555/354003.terrain differ diff --git a/public/terrain/19/858555/354004.terrain b/public/terrain/19/858555/354004.terrain new file mode 100644 index 000000000..976345e00 Binary files /dev/null and b/public/terrain/19/858555/354004.terrain differ diff --git a/public/terrain/19/858555/354005.terrain b/public/terrain/19/858555/354005.terrain new file mode 100644 index 000000000..b816fd61e Binary files /dev/null and b/public/terrain/19/858555/354005.terrain differ diff --git a/public/terrain/19/858555/354006.terrain b/public/terrain/19/858555/354006.terrain new file mode 100644 index 000000000..f5a0adce8 Binary files /dev/null and b/public/terrain/19/858555/354006.terrain differ diff --git a/public/terrain/19/858555/354007.terrain b/public/terrain/19/858555/354007.terrain new file mode 100644 index 000000000..d0c478e7c Binary files /dev/null and b/public/terrain/19/858555/354007.terrain differ diff --git a/public/terrain/19/858555/354008.terrain b/public/terrain/19/858555/354008.terrain new file mode 100644 index 000000000..68370a444 Binary files /dev/null and b/public/terrain/19/858555/354008.terrain differ diff --git a/public/terrain/19/858555/354009.terrain b/public/terrain/19/858555/354009.terrain new file mode 100644 index 000000000..62e1eefbe Binary files /dev/null and b/public/terrain/19/858555/354009.terrain differ diff --git a/public/terrain/19/858555/354010.terrain b/public/terrain/19/858555/354010.terrain new file mode 100644 index 000000000..5f4f4d8e6 Binary files /dev/null and b/public/terrain/19/858555/354010.terrain differ diff --git a/public/terrain/19/858555/354011.terrain b/public/terrain/19/858555/354011.terrain new file mode 100644 index 000000000..c20ae5ac9 Binary files /dev/null and b/public/terrain/19/858555/354011.terrain differ diff --git a/public/terrain/19/858555/354012.terrain b/public/terrain/19/858555/354012.terrain new file mode 100644 index 000000000..38311c9c0 Binary files /dev/null and b/public/terrain/19/858555/354012.terrain differ diff --git a/public/terrain/19/858555/354013.terrain b/public/terrain/19/858555/354013.terrain new file mode 100644 index 000000000..a955610b1 Binary files /dev/null and b/public/terrain/19/858555/354013.terrain differ diff --git a/public/terrain/19/858555/354014.terrain b/public/terrain/19/858555/354014.terrain new file mode 100644 index 000000000..7f4ac8638 Binary files /dev/null and b/public/terrain/19/858555/354014.terrain differ diff --git a/public/terrain/19/858555/354015.terrain b/public/terrain/19/858555/354015.terrain new file mode 100644 index 000000000..49d2e961a Binary files /dev/null and b/public/terrain/19/858555/354015.terrain differ diff --git a/public/terrain/19/858555/354016.terrain b/public/terrain/19/858555/354016.terrain new file mode 100644 index 000000000..429c96841 Binary files /dev/null and b/public/terrain/19/858555/354016.terrain differ diff --git a/public/terrain/19/858555/354017.terrain b/public/terrain/19/858555/354017.terrain new file mode 100644 index 000000000..89d44c678 Binary files /dev/null and b/public/terrain/19/858555/354017.terrain differ diff --git a/public/terrain/19/858555/354018.terrain b/public/terrain/19/858555/354018.terrain new file mode 100644 index 000000000..4a53f05a1 Binary files /dev/null and b/public/terrain/19/858555/354018.terrain differ diff --git a/public/terrain/19/858555/354019.terrain b/public/terrain/19/858555/354019.terrain new file mode 100644 index 000000000..a55f23cf4 Binary files /dev/null and b/public/terrain/19/858555/354019.terrain differ diff --git a/public/terrain/19/858555/354020.terrain b/public/terrain/19/858555/354020.terrain new file mode 100644 index 000000000..bc190a80e Binary files /dev/null and b/public/terrain/19/858555/354020.terrain differ diff --git a/public/terrain/19/858555/354021.terrain b/public/terrain/19/858555/354021.terrain new file mode 100644 index 000000000..f0709576e Binary files /dev/null and b/public/terrain/19/858555/354021.terrain differ diff --git a/public/terrain/19/858555/354022.terrain b/public/terrain/19/858555/354022.terrain new file mode 100644 index 000000000..959440b82 Binary files /dev/null and b/public/terrain/19/858555/354022.terrain differ diff --git a/public/terrain/19/858555/354023.terrain b/public/terrain/19/858555/354023.terrain new file mode 100644 index 000000000..1466f19bc Binary files /dev/null and b/public/terrain/19/858555/354023.terrain differ diff --git a/public/terrain/19/858555/354024.terrain b/public/terrain/19/858555/354024.terrain new file mode 100644 index 000000000..742b39320 Binary files /dev/null and b/public/terrain/19/858555/354024.terrain differ diff --git a/public/terrain/19/858555/354025.terrain b/public/terrain/19/858555/354025.terrain new file mode 100644 index 000000000..9c3b1257f Binary files /dev/null and b/public/terrain/19/858555/354025.terrain differ diff --git a/public/terrain/19/858555/354026.terrain b/public/terrain/19/858555/354026.terrain new file mode 100644 index 000000000..121c09d56 Binary files /dev/null and b/public/terrain/19/858555/354026.terrain differ diff --git a/public/terrain/19/858555/354027.terrain b/public/terrain/19/858555/354027.terrain new file mode 100644 index 000000000..27b284630 Binary files /dev/null and b/public/terrain/19/858555/354027.terrain differ diff --git a/public/terrain/19/858555/354028.terrain b/public/terrain/19/858555/354028.terrain new file mode 100644 index 000000000..98d9f5861 Binary files /dev/null and b/public/terrain/19/858555/354028.terrain differ diff --git a/public/terrain/19/858555/354029.terrain b/public/terrain/19/858555/354029.terrain new file mode 100644 index 000000000..3d9b537ff Binary files /dev/null and b/public/terrain/19/858555/354029.terrain differ diff --git a/public/terrain/19/858555/354030.terrain b/public/terrain/19/858555/354030.terrain new file mode 100644 index 000000000..3e71c3ad8 Binary files /dev/null and b/public/terrain/19/858555/354030.terrain differ diff --git a/public/terrain/19/858555/354031.terrain b/public/terrain/19/858555/354031.terrain new file mode 100644 index 000000000..6089dd335 Binary files /dev/null and b/public/terrain/19/858555/354031.terrain differ diff --git a/public/terrain/19/858555/354032.terrain b/public/terrain/19/858555/354032.terrain new file mode 100644 index 000000000..4581a3833 Binary files /dev/null and b/public/terrain/19/858555/354032.terrain differ diff --git a/public/terrain/19/858555/354033.terrain b/public/terrain/19/858555/354033.terrain new file mode 100644 index 000000000..36354e484 Binary files /dev/null and b/public/terrain/19/858555/354033.terrain differ diff --git a/public/terrain/19/858555/354034.terrain b/public/terrain/19/858555/354034.terrain new file mode 100644 index 000000000..9861a2905 Binary files /dev/null and b/public/terrain/19/858555/354034.terrain differ diff --git a/public/terrain/19/858555/354035.terrain b/public/terrain/19/858555/354035.terrain new file mode 100644 index 000000000..9f2394094 Binary files /dev/null and b/public/terrain/19/858555/354035.terrain differ diff --git a/public/terrain/19/858555/354036.terrain b/public/terrain/19/858555/354036.terrain new file mode 100644 index 000000000..f4bda7611 Binary files /dev/null and b/public/terrain/19/858555/354036.terrain differ diff --git a/public/terrain/19/858555/354037.terrain b/public/terrain/19/858555/354037.terrain new file mode 100644 index 000000000..b62cab960 Binary files /dev/null and b/public/terrain/19/858555/354037.terrain differ diff --git a/public/terrain/19/858555/354038.terrain b/public/terrain/19/858555/354038.terrain new file mode 100644 index 000000000..4bd4b16f7 Binary files /dev/null and b/public/terrain/19/858555/354038.terrain differ diff --git a/public/terrain/19/858555/354039.terrain b/public/terrain/19/858555/354039.terrain new file mode 100644 index 000000000..a0aed3604 Binary files /dev/null and b/public/terrain/19/858555/354039.terrain differ diff --git a/public/terrain/19/858555/354040.terrain b/public/terrain/19/858555/354040.terrain new file mode 100644 index 000000000..48d5b3800 Binary files /dev/null and b/public/terrain/19/858555/354040.terrain differ diff --git a/public/terrain/19/858555/354041.terrain b/public/terrain/19/858555/354041.terrain new file mode 100644 index 000000000..08b06a4e8 Binary files /dev/null and b/public/terrain/19/858555/354041.terrain differ diff --git a/public/terrain/19/858555/354042.terrain b/public/terrain/19/858555/354042.terrain new file mode 100644 index 000000000..d15112f30 Binary files /dev/null and b/public/terrain/19/858555/354042.terrain differ diff --git a/public/terrain/19/858555/354043.terrain b/public/terrain/19/858555/354043.terrain new file mode 100644 index 000000000..ea32111e4 Binary files /dev/null and b/public/terrain/19/858555/354043.terrain differ diff --git a/public/terrain/19/858555/354044.terrain b/public/terrain/19/858555/354044.terrain new file mode 100644 index 000000000..323fdd4b9 Binary files /dev/null and b/public/terrain/19/858555/354044.terrain differ diff --git a/public/terrain/19/858555/354045.terrain b/public/terrain/19/858555/354045.terrain new file mode 100644 index 000000000..e6e92626a Binary files /dev/null and b/public/terrain/19/858555/354045.terrain differ diff --git a/public/terrain/19/858555/354046.terrain b/public/terrain/19/858555/354046.terrain new file mode 100644 index 000000000..eb218b12a Binary files /dev/null and b/public/terrain/19/858555/354046.terrain differ diff --git a/public/terrain/19/858555/354047.terrain b/public/terrain/19/858555/354047.terrain new file mode 100644 index 000000000..ac0db71ac Binary files /dev/null and b/public/terrain/19/858555/354047.terrain differ diff --git a/public/terrain/19/858555/354048.terrain b/public/terrain/19/858555/354048.terrain new file mode 100644 index 000000000..cada726d2 Binary files /dev/null and b/public/terrain/19/858555/354048.terrain differ diff --git a/public/terrain/19/858555/354049.terrain b/public/terrain/19/858555/354049.terrain new file mode 100644 index 000000000..6685ca9ac Binary files /dev/null and b/public/terrain/19/858555/354049.terrain differ diff --git a/public/terrain/19/858555/354050.terrain b/public/terrain/19/858555/354050.terrain new file mode 100644 index 000000000..7c866ec4c Binary files /dev/null and b/public/terrain/19/858555/354050.terrain differ diff --git a/public/terrain/19/858555/354051.terrain b/public/terrain/19/858555/354051.terrain new file mode 100644 index 000000000..f96e9eb5a Binary files /dev/null and b/public/terrain/19/858555/354051.terrain differ diff --git a/public/terrain/19/858555/354052.terrain b/public/terrain/19/858555/354052.terrain new file mode 100644 index 000000000..bc54980f4 Binary files /dev/null and b/public/terrain/19/858555/354052.terrain differ diff --git a/public/terrain/19/858555/354053.terrain b/public/terrain/19/858555/354053.terrain new file mode 100644 index 000000000..519f3f829 Binary files /dev/null and b/public/terrain/19/858555/354053.terrain differ diff --git a/public/terrain/19/858555/354054.terrain b/public/terrain/19/858555/354054.terrain new file mode 100644 index 000000000..069295c63 Binary files /dev/null and b/public/terrain/19/858555/354054.terrain differ diff --git a/public/terrain/19/858555/354055.terrain b/public/terrain/19/858555/354055.terrain new file mode 100644 index 000000000..aea94e3ea Binary files /dev/null and b/public/terrain/19/858555/354055.terrain differ diff --git a/public/terrain/19/858555/354056.terrain b/public/terrain/19/858555/354056.terrain new file mode 100644 index 000000000..ee390d209 Binary files /dev/null and b/public/terrain/19/858555/354056.terrain differ diff --git a/public/terrain/19/858555/354057.terrain b/public/terrain/19/858555/354057.terrain new file mode 100644 index 000000000..2ee22ef59 Binary files /dev/null and b/public/terrain/19/858555/354057.terrain differ diff --git a/public/terrain/19/858555/354058.terrain b/public/terrain/19/858555/354058.terrain new file mode 100644 index 000000000..363fbb78d Binary files /dev/null and b/public/terrain/19/858555/354058.terrain differ diff --git a/public/terrain/19/858555/354059.terrain b/public/terrain/19/858555/354059.terrain new file mode 100644 index 000000000..0b8b0f8fc Binary files /dev/null and b/public/terrain/19/858555/354059.terrain differ diff --git a/public/terrain/19/858556/353743.terrain b/public/terrain/19/858556/353743.terrain new file mode 100644 index 000000000..38ffc7f21 Binary files /dev/null and b/public/terrain/19/858556/353743.terrain differ diff --git a/public/terrain/19/858556/353744.terrain b/public/terrain/19/858556/353744.terrain new file mode 100644 index 000000000..9ad36af84 Binary files /dev/null and b/public/terrain/19/858556/353744.terrain differ diff --git a/public/terrain/19/858556/353745.terrain b/public/terrain/19/858556/353745.terrain new file mode 100644 index 000000000..1a8d29b93 Binary files /dev/null and b/public/terrain/19/858556/353745.terrain differ diff --git a/public/terrain/19/858556/353746.terrain b/public/terrain/19/858556/353746.terrain new file mode 100644 index 000000000..f5756553a Binary files /dev/null and b/public/terrain/19/858556/353746.terrain differ diff --git a/public/terrain/19/858556/353747.terrain b/public/terrain/19/858556/353747.terrain new file mode 100644 index 000000000..6938d9e37 Binary files /dev/null and b/public/terrain/19/858556/353747.terrain differ diff --git a/public/terrain/19/858556/353748.terrain b/public/terrain/19/858556/353748.terrain new file mode 100644 index 000000000..b6cd06e0d Binary files /dev/null and b/public/terrain/19/858556/353748.terrain differ diff --git a/public/terrain/19/858556/353749.terrain b/public/terrain/19/858556/353749.terrain new file mode 100644 index 000000000..eea709ca2 Binary files /dev/null and b/public/terrain/19/858556/353749.terrain differ diff --git a/public/terrain/19/858556/353750.terrain b/public/terrain/19/858556/353750.terrain new file mode 100644 index 000000000..6c8610c8c Binary files /dev/null and b/public/terrain/19/858556/353750.terrain differ diff --git a/public/terrain/19/858556/353751.terrain b/public/terrain/19/858556/353751.terrain new file mode 100644 index 000000000..7b34ce756 Binary files /dev/null and b/public/terrain/19/858556/353751.terrain differ diff --git a/public/terrain/19/858556/353752.terrain b/public/terrain/19/858556/353752.terrain new file mode 100644 index 000000000..adb0c9fb1 Binary files /dev/null and b/public/terrain/19/858556/353752.terrain differ diff --git a/public/terrain/19/858556/353753.terrain b/public/terrain/19/858556/353753.terrain new file mode 100644 index 000000000..fdde3123d Binary files /dev/null and b/public/terrain/19/858556/353753.terrain differ diff --git a/public/terrain/19/858556/353754.terrain b/public/terrain/19/858556/353754.terrain new file mode 100644 index 000000000..be83ec5a6 Binary files /dev/null and b/public/terrain/19/858556/353754.terrain differ diff --git a/public/terrain/19/858556/353755.terrain b/public/terrain/19/858556/353755.terrain new file mode 100644 index 000000000..aec5a1cc3 Binary files /dev/null and b/public/terrain/19/858556/353755.terrain differ diff --git a/public/terrain/19/858556/353756.terrain b/public/terrain/19/858556/353756.terrain new file mode 100644 index 000000000..93e95e12c Binary files /dev/null and b/public/terrain/19/858556/353756.terrain differ diff --git a/public/terrain/19/858556/353757.terrain b/public/terrain/19/858556/353757.terrain new file mode 100644 index 000000000..f5058cd1c Binary files /dev/null and b/public/terrain/19/858556/353757.terrain differ diff --git a/public/terrain/19/858556/353758.terrain b/public/terrain/19/858556/353758.terrain new file mode 100644 index 000000000..a866b18fd Binary files /dev/null and b/public/terrain/19/858556/353758.terrain differ diff --git a/public/terrain/19/858556/353759.terrain b/public/terrain/19/858556/353759.terrain new file mode 100644 index 000000000..e73ece56a Binary files /dev/null and b/public/terrain/19/858556/353759.terrain differ diff --git a/public/terrain/19/858556/353760.terrain b/public/terrain/19/858556/353760.terrain new file mode 100644 index 000000000..95e2fc123 Binary files /dev/null and b/public/terrain/19/858556/353760.terrain differ diff --git a/public/terrain/19/858556/353761.terrain b/public/terrain/19/858556/353761.terrain new file mode 100644 index 000000000..429212298 Binary files /dev/null and b/public/terrain/19/858556/353761.terrain differ diff --git a/public/terrain/19/858556/353762.terrain b/public/terrain/19/858556/353762.terrain new file mode 100644 index 000000000..ff4b3a5bc Binary files /dev/null and b/public/terrain/19/858556/353762.terrain differ diff --git a/public/terrain/19/858556/353763.terrain b/public/terrain/19/858556/353763.terrain new file mode 100644 index 000000000..1594b92e6 Binary files /dev/null and b/public/terrain/19/858556/353763.terrain differ diff --git a/public/terrain/19/858556/353764.terrain b/public/terrain/19/858556/353764.terrain new file mode 100644 index 000000000..0bac2d906 Binary files /dev/null and b/public/terrain/19/858556/353764.terrain differ diff --git a/public/terrain/19/858556/353765.terrain b/public/terrain/19/858556/353765.terrain new file mode 100644 index 000000000..d3b8dffd3 Binary files /dev/null and b/public/terrain/19/858556/353765.terrain differ diff --git a/public/terrain/19/858556/353766.terrain b/public/terrain/19/858556/353766.terrain new file mode 100644 index 000000000..3f9cdebe8 Binary files /dev/null and b/public/terrain/19/858556/353766.terrain differ diff --git a/public/terrain/19/858556/353767.terrain b/public/terrain/19/858556/353767.terrain new file mode 100644 index 000000000..9c529a706 Binary files /dev/null and b/public/terrain/19/858556/353767.terrain differ diff --git a/public/terrain/19/858556/353768.terrain b/public/terrain/19/858556/353768.terrain new file mode 100644 index 000000000..49552cc79 Binary files /dev/null and b/public/terrain/19/858556/353768.terrain differ diff --git a/public/terrain/19/858556/353769.terrain b/public/terrain/19/858556/353769.terrain new file mode 100644 index 000000000..15d4927f9 Binary files /dev/null and b/public/terrain/19/858556/353769.terrain differ diff --git a/public/terrain/19/858556/353770.terrain b/public/terrain/19/858556/353770.terrain new file mode 100644 index 000000000..d8000e7a7 Binary files /dev/null and b/public/terrain/19/858556/353770.terrain differ diff --git a/public/terrain/19/858556/353771.terrain b/public/terrain/19/858556/353771.terrain new file mode 100644 index 000000000..2bef49e23 Binary files /dev/null and b/public/terrain/19/858556/353771.terrain differ diff --git a/public/terrain/19/858556/353772.terrain b/public/terrain/19/858556/353772.terrain new file mode 100644 index 000000000..c06e42a9a Binary files /dev/null and b/public/terrain/19/858556/353772.terrain differ diff --git a/public/terrain/19/858556/353773.terrain b/public/terrain/19/858556/353773.terrain new file mode 100644 index 000000000..a41dc3fc6 Binary files /dev/null and b/public/terrain/19/858556/353773.terrain differ diff --git a/public/terrain/19/858556/353774.terrain b/public/terrain/19/858556/353774.terrain new file mode 100644 index 000000000..0a2df8e62 Binary files /dev/null and b/public/terrain/19/858556/353774.terrain differ diff --git a/public/terrain/19/858556/353775.terrain b/public/terrain/19/858556/353775.terrain new file mode 100644 index 000000000..5b4cab599 Binary files /dev/null and b/public/terrain/19/858556/353775.terrain differ diff --git a/public/terrain/19/858556/353776.terrain b/public/terrain/19/858556/353776.terrain new file mode 100644 index 000000000..eadb74402 Binary files /dev/null and b/public/terrain/19/858556/353776.terrain differ diff --git a/public/terrain/19/858556/353777.terrain b/public/terrain/19/858556/353777.terrain new file mode 100644 index 000000000..9396efd86 Binary files /dev/null and b/public/terrain/19/858556/353777.terrain differ diff --git a/public/terrain/19/858556/353778.terrain b/public/terrain/19/858556/353778.terrain new file mode 100644 index 000000000..0e3d69f6b Binary files /dev/null and b/public/terrain/19/858556/353778.terrain differ diff --git a/public/terrain/19/858556/353779.terrain b/public/terrain/19/858556/353779.terrain new file mode 100644 index 000000000..5b1e3c026 Binary files /dev/null and b/public/terrain/19/858556/353779.terrain differ diff --git a/public/terrain/19/858556/353780.terrain b/public/terrain/19/858556/353780.terrain new file mode 100644 index 000000000..68bfee8da Binary files /dev/null and b/public/terrain/19/858556/353780.terrain differ diff --git a/public/terrain/19/858556/353781.terrain b/public/terrain/19/858556/353781.terrain new file mode 100644 index 000000000..da4db12a2 Binary files /dev/null and b/public/terrain/19/858556/353781.terrain differ diff --git a/public/terrain/19/858556/353782.terrain b/public/terrain/19/858556/353782.terrain new file mode 100644 index 000000000..4d6a336a1 Binary files /dev/null and b/public/terrain/19/858556/353782.terrain differ diff --git a/public/terrain/19/858556/353783.terrain b/public/terrain/19/858556/353783.terrain new file mode 100644 index 000000000..a7e5bf30c Binary files /dev/null and b/public/terrain/19/858556/353783.terrain differ diff --git a/public/terrain/19/858556/353784.terrain b/public/terrain/19/858556/353784.terrain new file mode 100644 index 000000000..a6b431b25 Binary files /dev/null and b/public/terrain/19/858556/353784.terrain differ diff --git a/public/terrain/19/858556/353785.terrain b/public/terrain/19/858556/353785.terrain new file mode 100644 index 000000000..c59898d2e Binary files /dev/null and b/public/terrain/19/858556/353785.terrain differ diff --git a/public/terrain/19/858556/353786.terrain b/public/terrain/19/858556/353786.terrain new file mode 100644 index 000000000..ab00afe5a Binary files /dev/null and b/public/terrain/19/858556/353786.terrain differ diff --git a/public/terrain/19/858556/353787.terrain b/public/terrain/19/858556/353787.terrain new file mode 100644 index 000000000..06468eeac Binary files /dev/null and b/public/terrain/19/858556/353787.terrain differ diff --git a/public/terrain/19/858556/353788.terrain b/public/terrain/19/858556/353788.terrain new file mode 100644 index 000000000..9dccb227c Binary files /dev/null and b/public/terrain/19/858556/353788.terrain differ diff --git a/public/terrain/19/858556/353789.terrain b/public/terrain/19/858556/353789.terrain new file mode 100644 index 000000000..79b2ecc0b Binary files /dev/null and b/public/terrain/19/858556/353789.terrain differ diff --git a/public/terrain/19/858556/353790.terrain b/public/terrain/19/858556/353790.terrain new file mode 100644 index 000000000..f91cd4ce9 Binary files /dev/null and b/public/terrain/19/858556/353790.terrain differ diff --git a/public/terrain/19/858556/353791.terrain b/public/terrain/19/858556/353791.terrain new file mode 100644 index 000000000..1a3f50a84 Binary files /dev/null and b/public/terrain/19/858556/353791.terrain differ diff --git a/public/terrain/19/858556/353792.terrain b/public/terrain/19/858556/353792.terrain new file mode 100644 index 000000000..46172138d Binary files /dev/null and b/public/terrain/19/858556/353792.terrain differ diff --git a/public/terrain/19/858556/353793.terrain b/public/terrain/19/858556/353793.terrain new file mode 100644 index 000000000..c82c32b56 Binary files /dev/null and b/public/terrain/19/858556/353793.terrain differ diff --git a/public/terrain/19/858556/353794.terrain b/public/terrain/19/858556/353794.terrain new file mode 100644 index 000000000..aca696bc7 Binary files /dev/null and b/public/terrain/19/858556/353794.terrain differ diff --git a/public/terrain/19/858556/353795.terrain b/public/terrain/19/858556/353795.terrain new file mode 100644 index 000000000..c42e65676 Binary files /dev/null and b/public/terrain/19/858556/353795.terrain differ diff --git a/public/terrain/19/858556/353796.terrain b/public/terrain/19/858556/353796.terrain new file mode 100644 index 000000000..9548e094a Binary files /dev/null and b/public/terrain/19/858556/353796.terrain differ diff --git a/public/terrain/19/858556/353797.terrain b/public/terrain/19/858556/353797.terrain new file mode 100644 index 000000000..48fc67d35 Binary files /dev/null and b/public/terrain/19/858556/353797.terrain differ diff --git a/public/terrain/19/858556/353798.terrain b/public/terrain/19/858556/353798.terrain new file mode 100644 index 000000000..615cf97ed Binary files /dev/null and b/public/terrain/19/858556/353798.terrain differ diff --git a/public/terrain/19/858556/353799.terrain b/public/terrain/19/858556/353799.terrain new file mode 100644 index 000000000..0056ca210 Binary files /dev/null and b/public/terrain/19/858556/353799.terrain differ diff --git a/public/terrain/19/858556/353800.terrain b/public/terrain/19/858556/353800.terrain new file mode 100644 index 000000000..d9dda0e2f Binary files /dev/null and b/public/terrain/19/858556/353800.terrain differ diff --git a/public/terrain/19/858556/353801.terrain b/public/terrain/19/858556/353801.terrain new file mode 100644 index 000000000..b3979b521 Binary files /dev/null and b/public/terrain/19/858556/353801.terrain differ diff --git a/public/terrain/19/858556/353802.terrain b/public/terrain/19/858556/353802.terrain new file mode 100644 index 000000000..192c858e4 Binary files /dev/null and b/public/terrain/19/858556/353802.terrain differ diff --git a/public/terrain/19/858556/353803.terrain b/public/terrain/19/858556/353803.terrain new file mode 100644 index 000000000..8711b0070 Binary files /dev/null and b/public/terrain/19/858556/353803.terrain differ diff --git a/public/terrain/19/858556/353804.terrain b/public/terrain/19/858556/353804.terrain new file mode 100644 index 000000000..95ee7704f Binary files /dev/null and b/public/terrain/19/858556/353804.terrain differ diff --git a/public/terrain/19/858556/353805.terrain b/public/terrain/19/858556/353805.terrain new file mode 100644 index 000000000..a07601a17 Binary files /dev/null and b/public/terrain/19/858556/353805.terrain differ diff --git a/public/terrain/19/858556/353806.terrain b/public/terrain/19/858556/353806.terrain new file mode 100644 index 000000000..f4bffd3b1 Binary files /dev/null and b/public/terrain/19/858556/353806.terrain differ diff --git a/public/terrain/19/858556/353807.terrain b/public/terrain/19/858556/353807.terrain new file mode 100644 index 000000000..de1aa8961 Binary files /dev/null and b/public/terrain/19/858556/353807.terrain differ diff --git a/public/terrain/19/858556/353808.terrain b/public/terrain/19/858556/353808.terrain new file mode 100644 index 000000000..15784ebeb Binary files /dev/null and b/public/terrain/19/858556/353808.terrain differ diff --git a/public/terrain/19/858556/353809.terrain b/public/terrain/19/858556/353809.terrain new file mode 100644 index 000000000..9983a2744 Binary files /dev/null and b/public/terrain/19/858556/353809.terrain differ diff --git a/public/terrain/19/858556/353810.terrain b/public/terrain/19/858556/353810.terrain new file mode 100644 index 000000000..435f46ba7 Binary files /dev/null and b/public/terrain/19/858556/353810.terrain differ diff --git a/public/terrain/19/858556/353811.terrain b/public/terrain/19/858556/353811.terrain new file mode 100644 index 000000000..7b65457d5 Binary files /dev/null and b/public/terrain/19/858556/353811.terrain differ diff --git a/public/terrain/19/858556/353812.terrain b/public/terrain/19/858556/353812.terrain new file mode 100644 index 000000000..a669985c1 Binary files /dev/null and b/public/terrain/19/858556/353812.terrain differ diff --git a/public/terrain/19/858556/353813.terrain b/public/terrain/19/858556/353813.terrain new file mode 100644 index 000000000..a6bbb7b1a Binary files /dev/null and b/public/terrain/19/858556/353813.terrain differ diff --git a/public/terrain/19/858556/353814.terrain b/public/terrain/19/858556/353814.terrain new file mode 100644 index 000000000..99e394bc5 Binary files /dev/null and b/public/terrain/19/858556/353814.terrain differ diff --git a/public/terrain/19/858556/353815.terrain b/public/terrain/19/858556/353815.terrain new file mode 100644 index 000000000..edaa8095f Binary files /dev/null and b/public/terrain/19/858556/353815.terrain differ diff --git a/public/terrain/19/858556/353816.terrain b/public/terrain/19/858556/353816.terrain new file mode 100644 index 000000000..e0ced1d84 Binary files /dev/null and b/public/terrain/19/858556/353816.terrain differ diff --git a/public/terrain/19/858556/353817.terrain b/public/terrain/19/858556/353817.terrain new file mode 100644 index 000000000..7a2072356 Binary files /dev/null and b/public/terrain/19/858556/353817.terrain differ diff --git a/public/terrain/19/858556/353818.terrain b/public/terrain/19/858556/353818.terrain new file mode 100644 index 000000000..8153e61ed Binary files /dev/null and b/public/terrain/19/858556/353818.terrain differ diff --git a/public/terrain/19/858556/353819.terrain b/public/terrain/19/858556/353819.terrain new file mode 100644 index 000000000..f6498c259 Binary files /dev/null and b/public/terrain/19/858556/353819.terrain differ diff --git a/public/terrain/19/858556/353820.terrain b/public/terrain/19/858556/353820.terrain new file mode 100644 index 000000000..e600d2f34 Binary files /dev/null and b/public/terrain/19/858556/353820.terrain differ diff --git a/public/terrain/19/858556/353821.terrain b/public/terrain/19/858556/353821.terrain new file mode 100644 index 000000000..d02ee04c5 Binary files /dev/null and b/public/terrain/19/858556/353821.terrain differ diff --git a/public/terrain/19/858556/353822.terrain b/public/terrain/19/858556/353822.terrain new file mode 100644 index 000000000..1a79ec1ea Binary files /dev/null and b/public/terrain/19/858556/353822.terrain differ diff --git a/public/terrain/19/858556/353823.terrain b/public/terrain/19/858556/353823.terrain new file mode 100644 index 000000000..2f5551fcc Binary files /dev/null and b/public/terrain/19/858556/353823.terrain differ diff --git a/public/terrain/19/858556/353824.terrain b/public/terrain/19/858556/353824.terrain new file mode 100644 index 000000000..fad41047b Binary files /dev/null and b/public/terrain/19/858556/353824.terrain differ diff --git a/public/terrain/19/858556/353825.terrain b/public/terrain/19/858556/353825.terrain new file mode 100644 index 000000000..5cb4d1a55 Binary files /dev/null and b/public/terrain/19/858556/353825.terrain differ diff --git a/public/terrain/19/858556/353826.terrain b/public/terrain/19/858556/353826.terrain new file mode 100644 index 000000000..47ee3a30d Binary files /dev/null and b/public/terrain/19/858556/353826.terrain differ diff --git a/public/terrain/19/858556/353827.terrain b/public/terrain/19/858556/353827.terrain new file mode 100644 index 000000000..bfb18df1c Binary files /dev/null and b/public/terrain/19/858556/353827.terrain differ diff --git a/public/terrain/19/858556/353828.terrain b/public/terrain/19/858556/353828.terrain new file mode 100644 index 000000000..91ab5439d Binary files /dev/null and b/public/terrain/19/858556/353828.terrain differ diff --git a/public/terrain/19/858556/353829.terrain b/public/terrain/19/858556/353829.terrain new file mode 100644 index 000000000..2d527094c Binary files /dev/null and b/public/terrain/19/858556/353829.terrain differ diff --git a/public/terrain/19/858556/353830.terrain b/public/terrain/19/858556/353830.terrain new file mode 100644 index 000000000..9211e8327 Binary files /dev/null and b/public/terrain/19/858556/353830.terrain differ diff --git a/public/terrain/19/858556/353831.terrain b/public/terrain/19/858556/353831.terrain new file mode 100644 index 000000000..1b097499a Binary files /dev/null and b/public/terrain/19/858556/353831.terrain differ diff --git a/public/terrain/19/858556/353832.terrain b/public/terrain/19/858556/353832.terrain new file mode 100644 index 000000000..e1f628f31 Binary files /dev/null and b/public/terrain/19/858556/353832.terrain differ diff --git a/public/terrain/19/858556/353833.terrain b/public/terrain/19/858556/353833.terrain new file mode 100644 index 000000000..d1b3246bd Binary files /dev/null and b/public/terrain/19/858556/353833.terrain differ diff --git a/public/terrain/19/858556/353834.terrain b/public/terrain/19/858556/353834.terrain new file mode 100644 index 000000000..38d6f843e Binary files /dev/null and b/public/terrain/19/858556/353834.terrain differ diff --git a/public/terrain/19/858556/353835.terrain b/public/terrain/19/858556/353835.terrain new file mode 100644 index 000000000..9e6c25cd5 Binary files /dev/null and b/public/terrain/19/858556/353835.terrain differ diff --git a/public/terrain/19/858556/353836.terrain b/public/terrain/19/858556/353836.terrain new file mode 100644 index 000000000..083bbb8ec Binary files /dev/null and b/public/terrain/19/858556/353836.terrain differ diff --git a/public/terrain/19/858556/353837.terrain b/public/terrain/19/858556/353837.terrain new file mode 100644 index 000000000..eb3faf659 Binary files /dev/null and b/public/terrain/19/858556/353837.terrain differ diff --git a/public/terrain/19/858556/353838.terrain b/public/terrain/19/858556/353838.terrain new file mode 100644 index 000000000..586a2e0db Binary files /dev/null and b/public/terrain/19/858556/353838.terrain differ diff --git a/public/terrain/19/858556/353839.terrain b/public/terrain/19/858556/353839.terrain new file mode 100644 index 000000000..e208714a9 Binary files /dev/null and b/public/terrain/19/858556/353839.terrain differ diff --git a/public/terrain/19/858556/353840.terrain b/public/terrain/19/858556/353840.terrain new file mode 100644 index 000000000..48b8c687b Binary files /dev/null and b/public/terrain/19/858556/353840.terrain differ diff --git a/public/terrain/19/858556/353841.terrain b/public/terrain/19/858556/353841.terrain new file mode 100644 index 000000000..b10b71fb5 Binary files /dev/null and b/public/terrain/19/858556/353841.terrain differ diff --git a/public/terrain/19/858556/353842.terrain b/public/terrain/19/858556/353842.terrain new file mode 100644 index 000000000..17f993c61 Binary files /dev/null and b/public/terrain/19/858556/353842.terrain differ diff --git a/public/terrain/19/858556/353843.terrain b/public/terrain/19/858556/353843.terrain new file mode 100644 index 000000000..d710ce124 Binary files /dev/null and b/public/terrain/19/858556/353843.terrain differ diff --git a/public/terrain/19/858556/353844.terrain b/public/terrain/19/858556/353844.terrain new file mode 100644 index 000000000..9dd4ae3ee Binary files /dev/null and b/public/terrain/19/858556/353844.terrain differ diff --git a/public/terrain/19/858556/353845.terrain b/public/terrain/19/858556/353845.terrain new file mode 100644 index 000000000..681eb6d1b Binary files /dev/null and b/public/terrain/19/858556/353845.terrain differ diff --git a/public/terrain/19/858556/353846.terrain b/public/terrain/19/858556/353846.terrain new file mode 100644 index 000000000..3725cf439 Binary files /dev/null and b/public/terrain/19/858556/353846.terrain differ diff --git a/public/terrain/19/858556/353847.terrain b/public/terrain/19/858556/353847.terrain new file mode 100644 index 000000000..584de1e71 Binary files /dev/null and b/public/terrain/19/858556/353847.terrain differ diff --git a/public/terrain/19/858556/353848.terrain b/public/terrain/19/858556/353848.terrain new file mode 100644 index 000000000..733f67c92 Binary files /dev/null and b/public/terrain/19/858556/353848.terrain differ diff --git a/public/terrain/19/858556/353849.terrain b/public/terrain/19/858556/353849.terrain new file mode 100644 index 000000000..cc0ae82f9 Binary files /dev/null and b/public/terrain/19/858556/353849.terrain differ diff --git a/public/terrain/19/858556/353850.terrain b/public/terrain/19/858556/353850.terrain new file mode 100644 index 000000000..92c5fa4af Binary files /dev/null and b/public/terrain/19/858556/353850.terrain differ diff --git a/public/terrain/19/858556/353851.terrain b/public/terrain/19/858556/353851.terrain new file mode 100644 index 000000000..12bbf1a1b Binary files /dev/null and b/public/terrain/19/858556/353851.terrain differ diff --git a/public/terrain/19/858556/353852.terrain b/public/terrain/19/858556/353852.terrain new file mode 100644 index 000000000..9774661ef Binary files /dev/null and b/public/terrain/19/858556/353852.terrain differ diff --git a/public/terrain/19/858556/353853.terrain b/public/terrain/19/858556/353853.terrain new file mode 100644 index 000000000..725d5ed33 Binary files /dev/null and b/public/terrain/19/858556/353853.terrain differ diff --git a/public/terrain/19/858556/353854.terrain b/public/terrain/19/858556/353854.terrain new file mode 100644 index 000000000..ee1fdd46b Binary files /dev/null and b/public/terrain/19/858556/353854.terrain differ diff --git a/public/terrain/19/858556/353855.terrain b/public/terrain/19/858556/353855.terrain new file mode 100644 index 000000000..3ea517449 Binary files /dev/null and b/public/terrain/19/858556/353855.terrain differ diff --git a/public/terrain/19/858556/353856.terrain b/public/terrain/19/858556/353856.terrain new file mode 100644 index 000000000..bcb4990d8 Binary files /dev/null and b/public/terrain/19/858556/353856.terrain differ diff --git a/public/terrain/19/858556/353857.terrain b/public/terrain/19/858556/353857.terrain new file mode 100644 index 000000000..21e7af5e5 Binary files /dev/null and b/public/terrain/19/858556/353857.terrain differ diff --git a/public/terrain/19/858556/353858.terrain b/public/terrain/19/858556/353858.terrain new file mode 100644 index 000000000..492e0b797 Binary files /dev/null and b/public/terrain/19/858556/353858.terrain differ diff --git a/public/terrain/19/858556/353859.terrain b/public/terrain/19/858556/353859.terrain new file mode 100644 index 000000000..5e867a6a8 Binary files /dev/null and b/public/terrain/19/858556/353859.terrain differ diff --git a/public/terrain/19/858556/353860.terrain b/public/terrain/19/858556/353860.terrain new file mode 100644 index 000000000..fcd48fad0 Binary files /dev/null and b/public/terrain/19/858556/353860.terrain differ diff --git a/public/terrain/19/858556/353861.terrain b/public/terrain/19/858556/353861.terrain new file mode 100644 index 000000000..78dac7f90 Binary files /dev/null and b/public/terrain/19/858556/353861.terrain differ diff --git a/public/terrain/19/858556/353862.terrain b/public/terrain/19/858556/353862.terrain new file mode 100644 index 000000000..8d949e7bb Binary files /dev/null and b/public/terrain/19/858556/353862.terrain differ diff --git a/public/terrain/19/858556/353863.terrain b/public/terrain/19/858556/353863.terrain new file mode 100644 index 000000000..671389a54 Binary files /dev/null and b/public/terrain/19/858556/353863.terrain differ diff --git a/public/terrain/19/858556/353864.terrain b/public/terrain/19/858556/353864.terrain new file mode 100644 index 000000000..8de0c72f7 Binary files /dev/null and b/public/terrain/19/858556/353864.terrain differ diff --git a/public/terrain/19/858556/353865.terrain b/public/terrain/19/858556/353865.terrain new file mode 100644 index 000000000..bd885dd1a Binary files /dev/null and b/public/terrain/19/858556/353865.terrain differ diff --git a/public/terrain/19/858556/353866.terrain b/public/terrain/19/858556/353866.terrain new file mode 100644 index 000000000..91626eb55 Binary files /dev/null and b/public/terrain/19/858556/353866.terrain differ diff --git a/public/terrain/19/858556/353867.terrain b/public/terrain/19/858556/353867.terrain new file mode 100644 index 000000000..cf98a00a6 Binary files /dev/null and b/public/terrain/19/858556/353867.terrain differ diff --git a/public/terrain/19/858556/353868.terrain b/public/terrain/19/858556/353868.terrain new file mode 100644 index 000000000..87227a6ed Binary files /dev/null and b/public/terrain/19/858556/353868.terrain differ diff --git a/public/terrain/19/858556/353869.terrain b/public/terrain/19/858556/353869.terrain new file mode 100644 index 000000000..9eef4fc9e Binary files /dev/null and b/public/terrain/19/858556/353869.terrain differ diff --git a/public/terrain/19/858556/353870.terrain b/public/terrain/19/858556/353870.terrain new file mode 100644 index 000000000..bff155b0e Binary files /dev/null and b/public/terrain/19/858556/353870.terrain differ diff --git a/public/terrain/19/858556/353871.terrain b/public/terrain/19/858556/353871.terrain new file mode 100644 index 000000000..7329a9685 Binary files /dev/null and b/public/terrain/19/858556/353871.terrain differ diff --git a/public/terrain/19/858556/353872.terrain b/public/terrain/19/858556/353872.terrain new file mode 100644 index 000000000..b37b17b9f Binary files /dev/null and b/public/terrain/19/858556/353872.terrain differ diff --git a/public/terrain/19/858556/353873.terrain b/public/terrain/19/858556/353873.terrain new file mode 100644 index 000000000..5cc1ba612 Binary files /dev/null and b/public/terrain/19/858556/353873.terrain differ diff --git a/public/terrain/19/858556/353874.terrain b/public/terrain/19/858556/353874.terrain new file mode 100644 index 000000000..6a9be65e1 Binary files /dev/null and b/public/terrain/19/858556/353874.terrain differ diff --git a/public/terrain/19/858556/353875.terrain b/public/terrain/19/858556/353875.terrain new file mode 100644 index 000000000..b16d0145c Binary files /dev/null and b/public/terrain/19/858556/353875.terrain differ diff --git a/public/terrain/19/858556/353876.terrain b/public/terrain/19/858556/353876.terrain new file mode 100644 index 000000000..ade90c7d0 Binary files /dev/null and b/public/terrain/19/858556/353876.terrain differ diff --git a/public/terrain/19/858556/353877.terrain b/public/terrain/19/858556/353877.terrain new file mode 100644 index 000000000..26c67e9b5 Binary files /dev/null and b/public/terrain/19/858556/353877.terrain differ diff --git a/public/terrain/19/858556/353878.terrain b/public/terrain/19/858556/353878.terrain new file mode 100644 index 000000000..e04184b8e Binary files /dev/null and b/public/terrain/19/858556/353878.terrain differ diff --git a/public/terrain/19/858556/353879.terrain b/public/terrain/19/858556/353879.terrain new file mode 100644 index 000000000..8d0082ec6 Binary files /dev/null and b/public/terrain/19/858556/353879.terrain differ diff --git a/public/terrain/19/858556/353880.terrain b/public/terrain/19/858556/353880.terrain new file mode 100644 index 000000000..277b84b1d Binary files /dev/null and b/public/terrain/19/858556/353880.terrain differ diff --git a/public/terrain/19/858556/353881.terrain b/public/terrain/19/858556/353881.terrain new file mode 100644 index 000000000..6bb32b5e1 Binary files /dev/null and b/public/terrain/19/858556/353881.terrain differ diff --git a/public/terrain/19/858556/353882.terrain b/public/terrain/19/858556/353882.terrain new file mode 100644 index 000000000..1e3d75d02 Binary files /dev/null and b/public/terrain/19/858556/353882.terrain differ diff --git a/public/terrain/19/858556/353883.terrain b/public/terrain/19/858556/353883.terrain new file mode 100644 index 000000000..16f8e62af Binary files /dev/null and b/public/terrain/19/858556/353883.terrain differ diff --git a/public/terrain/19/858556/353884.terrain b/public/terrain/19/858556/353884.terrain new file mode 100644 index 000000000..48f0b98de Binary files /dev/null and b/public/terrain/19/858556/353884.terrain differ diff --git a/public/terrain/19/858556/353885.terrain b/public/terrain/19/858556/353885.terrain new file mode 100644 index 000000000..1a6651f6d Binary files /dev/null and b/public/terrain/19/858556/353885.terrain differ diff --git a/public/terrain/19/858556/353886.terrain b/public/terrain/19/858556/353886.terrain new file mode 100644 index 000000000..65ce198e4 Binary files /dev/null and b/public/terrain/19/858556/353886.terrain differ diff --git a/public/terrain/19/858556/353887.terrain b/public/terrain/19/858556/353887.terrain new file mode 100644 index 000000000..1997c16c1 Binary files /dev/null and b/public/terrain/19/858556/353887.terrain differ diff --git a/public/terrain/19/858556/353888.terrain b/public/terrain/19/858556/353888.terrain new file mode 100644 index 000000000..f5f6fceec Binary files /dev/null and b/public/terrain/19/858556/353888.terrain differ diff --git a/public/terrain/19/858556/353889.terrain b/public/terrain/19/858556/353889.terrain new file mode 100644 index 000000000..129530afe Binary files /dev/null and b/public/terrain/19/858556/353889.terrain differ diff --git a/public/terrain/19/858556/353890.terrain b/public/terrain/19/858556/353890.terrain new file mode 100644 index 000000000..2db1305d8 Binary files /dev/null and b/public/terrain/19/858556/353890.terrain differ diff --git a/public/terrain/19/858556/353891.terrain b/public/terrain/19/858556/353891.terrain new file mode 100644 index 000000000..cb4a49151 Binary files /dev/null and b/public/terrain/19/858556/353891.terrain differ diff --git a/public/terrain/19/858556/353892.terrain b/public/terrain/19/858556/353892.terrain new file mode 100644 index 000000000..81a463c07 Binary files /dev/null and b/public/terrain/19/858556/353892.terrain differ diff --git a/public/terrain/19/858556/353893.terrain b/public/terrain/19/858556/353893.terrain new file mode 100644 index 000000000..8aa616a3e Binary files /dev/null and b/public/terrain/19/858556/353893.terrain differ diff --git a/public/terrain/19/858556/353894.terrain b/public/terrain/19/858556/353894.terrain new file mode 100644 index 000000000..b76c85fe4 Binary files /dev/null and b/public/terrain/19/858556/353894.terrain differ diff --git a/public/terrain/19/858556/353895.terrain b/public/terrain/19/858556/353895.terrain new file mode 100644 index 000000000..03489e6b3 Binary files /dev/null and b/public/terrain/19/858556/353895.terrain differ diff --git a/public/terrain/19/858556/353896.terrain b/public/terrain/19/858556/353896.terrain new file mode 100644 index 000000000..82f5980de Binary files /dev/null and b/public/terrain/19/858556/353896.terrain differ diff --git a/public/terrain/19/858556/353897.terrain b/public/terrain/19/858556/353897.terrain new file mode 100644 index 000000000..79a05c192 Binary files /dev/null and b/public/terrain/19/858556/353897.terrain differ diff --git a/public/terrain/19/858556/353898.terrain b/public/terrain/19/858556/353898.terrain new file mode 100644 index 000000000..87a57d8ee Binary files /dev/null and b/public/terrain/19/858556/353898.terrain differ diff --git a/public/terrain/19/858556/353899.terrain b/public/terrain/19/858556/353899.terrain new file mode 100644 index 000000000..fbf50c8c1 Binary files /dev/null and b/public/terrain/19/858556/353899.terrain differ diff --git a/public/terrain/19/858556/353900.terrain b/public/terrain/19/858556/353900.terrain new file mode 100644 index 000000000..a7a496f3f Binary files /dev/null and b/public/terrain/19/858556/353900.terrain differ diff --git a/public/terrain/19/858556/353901.terrain b/public/terrain/19/858556/353901.terrain new file mode 100644 index 000000000..226af5041 Binary files /dev/null and b/public/terrain/19/858556/353901.terrain differ diff --git a/public/terrain/19/858556/353902.terrain b/public/terrain/19/858556/353902.terrain new file mode 100644 index 000000000..075973e78 Binary files /dev/null and b/public/terrain/19/858556/353902.terrain differ diff --git a/public/terrain/19/858556/353903.terrain b/public/terrain/19/858556/353903.terrain new file mode 100644 index 000000000..78cb48007 Binary files /dev/null and b/public/terrain/19/858556/353903.terrain differ diff --git a/public/terrain/19/858556/353904.terrain b/public/terrain/19/858556/353904.terrain new file mode 100644 index 000000000..d8244fc4c Binary files /dev/null and b/public/terrain/19/858556/353904.terrain differ diff --git a/public/terrain/19/858556/353905.terrain b/public/terrain/19/858556/353905.terrain new file mode 100644 index 000000000..7f8f5fb3c Binary files /dev/null and b/public/terrain/19/858556/353905.terrain differ diff --git a/public/terrain/19/858556/353906.terrain b/public/terrain/19/858556/353906.terrain new file mode 100644 index 000000000..ccb117434 Binary files /dev/null and b/public/terrain/19/858556/353906.terrain differ diff --git a/public/terrain/19/858556/353907.terrain b/public/terrain/19/858556/353907.terrain new file mode 100644 index 000000000..333ddd12c Binary files /dev/null and b/public/terrain/19/858556/353907.terrain differ diff --git a/public/terrain/19/858556/353908.terrain b/public/terrain/19/858556/353908.terrain new file mode 100644 index 000000000..fc0271f3f Binary files /dev/null and b/public/terrain/19/858556/353908.terrain differ diff --git a/public/terrain/19/858556/353909.terrain b/public/terrain/19/858556/353909.terrain new file mode 100644 index 000000000..426caa31e Binary files /dev/null and b/public/terrain/19/858556/353909.terrain differ diff --git a/public/terrain/19/858556/353910.terrain b/public/terrain/19/858556/353910.terrain new file mode 100644 index 000000000..dc9cc1769 Binary files /dev/null and b/public/terrain/19/858556/353910.terrain differ diff --git a/public/terrain/19/858556/353911.terrain b/public/terrain/19/858556/353911.terrain new file mode 100644 index 000000000..c16b42807 Binary files /dev/null and b/public/terrain/19/858556/353911.terrain differ diff --git a/public/terrain/19/858556/353912.terrain b/public/terrain/19/858556/353912.terrain new file mode 100644 index 000000000..950e52b54 Binary files /dev/null and b/public/terrain/19/858556/353912.terrain differ diff --git a/public/terrain/19/858556/353913.terrain b/public/terrain/19/858556/353913.terrain new file mode 100644 index 000000000..cc2e53a34 Binary files /dev/null and b/public/terrain/19/858556/353913.terrain differ diff --git a/public/terrain/19/858556/353914.terrain b/public/terrain/19/858556/353914.terrain new file mode 100644 index 000000000..31da6aa2a Binary files /dev/null and b/public/terrain/19/858556/353914.terrain differ diff --git a/public/terrain/19/858556/353915.terrain b/public/terrain/19/858556/353915.terrain new file mode 100644 index 000000000..207d69a1d Binary files /dev/null and b/public/terrain/19/858556/353915.terrain differ diff --git a/public/terrain/19/858556/353916.terrain b/public/terrain/19/858556/353916.terrain new file mode 100644 index 000000000..a8d7659b4 Binary files /dev/null and b/public/terrain/19/858556/353916.terrain differ diff --git a/public/terrain/19/858556/353917.terrain b/public/terrain/19/858556/353917.terrain new file mode 100644 index 000000000..e30bf4615 Binary files /dev/null and b/public/terrain/19/858556/353917.terrain differ diff --git a/public/terrain/19/858556/353918.terrain b/public/terrain/19/858556/353918.terrain new file mode 100644 index 000000000..081b9fe70 Binary files /dev/null and b/public/terrain/19/858556/353918.terrain differ diff --git a/public/terrain/19/858556/353919.terrain b/public/terrain/19/858556/353919.terrain new file mode 100644 index 000000000..445736445 Binary files /dev/null and b/public/terrain/19/858556/353919.terrain differ diff --git a/public/terrain/19/858556/353920.terrain b/public/terrain/19/858556/353920.terrain new file mode 100644 index 000000000..c831d12e0 Binary files /dev/null and b/public/terrain/19/858556/353920.terrain differ diff --git a/public/terrain/19/858556/353921.terrain b/public/terrain/19/858556/353921.terrain new file mode 100644 index 000000000..a2182fbdd Binary files /dev/null and b/public/terrain/19/858556/353921.terrain differ diff --git a/public/terrain/19/858556/353922.terrain b/public/terrain/19/858556/353922.terrain new file mode 100644 index 000000000..7c1436b06 Binary files /dev/null and b/public/terrain/19/858556/353922.terrain differ diff --git a/public/terrain/19/858556/353923.terrain b/public/terrain/19/858556/353923.terrain new file mode 100644 index 000000000..f79aa9178 Binary files /dev/null and b/public/terrain/19/858556/353923.terrain differ diff --git a/public/terrain/19/858556/353924.terrain b/public/terrain/19/858556/353924.terrain new file mode 100644 index 000000000..eb2da012e Binary files /dev/null and b/public/terrain/19/858556/353924.terrain differ diff --git a/public/terrain/19/858556/353925.terrain b/public/terrain/19/858556/353925.terrain new file mode 100644 index 000000000..65d4a27cd Binary files /dev/null and b/public/terrain/19/858556/353925.terrain differ diff --git a/public/terrain/19/858556/353926.terrain b/public/terrain/19/858556/353926.terrain new file mode 100644 index 000000000..a5bb1de85 Binary files /dev/null and b/public/terrain/19/858556/353926.terrain differ diff --git a/public/terrain/19/858556/353927.terrain b/public/terrain/19/858556/353927.terrain new file mode 100644 index 000000000..f5a3c0862 Binary files /dev/null and b/public/terrain/19/858556/353927.terrain differ diff --git a/public/terrain/19/858556/353928.terrain b/public/terrain/19/858556/353928.terrain new file mode 100644 index 000000000..1b6db8f68 Binary files /dev/null and b/public/terrain/19/858556/353928.terrain differ diff --git a/public/terrain/19/858556/353929.terrain b/public/terrain/19/858556/353929.terrain new file mode 100644 index 000000000..fa66d3f05 Binary files /dev/null and b/public/terrain/19/858556/353929.terrain differ diff --git a/public/terrain/19/858556/353930.terrain b/public/terrain/19/858556/353930.terrain new file mode 100644 index 000000000..8879307c4 Binary files /dev/null and b/public/terrain/19/858556/353930.terrain differ diff --git a/public/terrain/19/858556/353931.terrain b/public/terrain/19/858556/353931.terrain new file mode 100644 index 000000000..523de86b2 Binary files /dev/null and b/public/terrain/19/858556/353931.terrain differ diff --git a/public/terrain/19/858556/353932.terrain b/public/terrain/19/858556/353932.terrain new file mode 100644 index 000000000..2adb0988f Binary files /dev/null and b/public/terrain/19/858556/353932.terrain differ diff --git a/public/terrain/19/858556/353933.terrain b/public/terrain/19/858556/353933.terrain new file mode 100644 index 000000000..1e3e5e242 Binary files /dev/null and b/public/terrain/19/858556/353933.terrain differ diff --git a/public/terrain/19/858556/353934.terrain b/public/terrain/19/858556/353934.terrain new file mode 100644 index 000000000..8a6d8d369 Binary files /dev/null and b/public/terrain/19/858556/353934.terrain differ diff --git a/public/terrain/19/858556/353935.terrain b/public/terrain/19/858556/353935.terrain new file mode 100644 index 000000000..6e5f44dfa Binary files /dev/null and b/public/terrain/19/858556/353935.terrain differ diff --git a/public/terrain/19/858556/353936.terrain b/public/terrain/19/858556/353936.terrain new file mode 100644 index 000000000..a76299ecf Binary files /dev/null and b/public/terrain/19/858556/353936.terrain differ diff --git a/public/terrain/19/858556/353937.terrain b/public/terrain/19/858556/353937.terrain new file mode 100644 index 000000000..4a438ca61 Binary files /dev/null and b/public/terrain/19/858556/353937.terrain differ diff --git a/public/terrain/19/858556/353938.terrain b/public/terrain/19/858556/353938.terrain new file mode 100644 index 000000000..ad34b671c Binary files /dev/null and b/public/terrain/19/858556/353938.terrain differ diff --git a/public/terrain/19/858556/353939.terrain b/public/terrain/19/858556/353939.terrain new file mode 100644 index 000000000..502a7d69c Binary files /dev/null and b/public/terrain/19/858556/353939.terrain differ diff --git a/public/terrain/19/858556/353940.terrain b/public/terrain/19/858556/353940.terrain new file mode 100644 index 000000000..507fd50b5 Binary files /dev/null and b/public/terrain/19/858556/353940.terrain differ diff --git a/public/terrain/19/858556/353941.terrain b/public/terrain/19/858556/353941.terrain new file mode 100644 index 000000000..25098ca7e Binary files /dev/null and b/public/terrain/19/858556/353941.terrain differ diff --git a/public/terrain/19/858556/353942.terrain b/public/terrain/19/858556/353942.terrain new file mode 100644 index 000000000..1aff24669 Binary files /dev/null and b/public/terrain/19/858556/353942.terrain differ diff --git a/public/terrain/19/858556/353943.terrain b/public/terrain/19/858556/353943.terrain new file mode 100644 index 000000000..36a0c77fa Binary files /dev/null and b/public/terrain/19/858556/353943.terrain differ diff --git a/public/terrain/19/858556/353944.terrain b/public/terrain/19/858556/353944.terrain new file mode 100644 index 000000000..cf633f8c7 Binary files /dev/null and b/public/terrain/19/858556/353944.terrain differ diff --git a/public/terrain/19/858556/353945.terrain b/public/terrain/19/858556/353945.terrain new file mode 100644 index 000000000..72c6ce425 Binary files /dev/null and b/public/terrain/19/858556/353945.terrain differ diff --git a/public/terrain/19/858556/353946.terrain b/public/terrain/19/858556/353946.terrain new file mode 100644 index 000000000..60ee78151 Binary files /dev/null and b/public/terrain/19/858556/353946.terrain differ diff --git a/public/terrain/19/858556/353947.terrain b/public/terrain/19/858556/353947.terrain new file mode 100644 index 000000000..6742d4533 Binary files /dev/null and b/public/terrain/19/858556/353947.terrain differ diff --git a/public/terrain/19/858556/353948.terrain b/public/terrain/19/858556/353948.terrain new file mode 100644 index 000000000..b9f1725c4 Binary files /dev/null and b/public/terrain/19/858556/353948.terrain differ diff --git a/public/terrain/19/858556/353949.terrain b/public/terrain/19/858556/353949.terrain new file mode 100644 index 000000000..b611f3fda Binary files /dev/null and b/public/terrain/19/858556/353949.terrain differ diff --git a/public/terrain/19/858556/353950.terrain b/public/terrain/19/858556/353950.terrain new file mode 100644 index 000000000..e1e6b14c5 Binary files /dev/null and b/public/terrain/19/858556/353950.terrain differ diff --git a/public/terrain/19/858556/353951.terrain b/public/terrain/19/858556/353951.terrain new file mode 100644 index 000000000..941013306 Binary files /dev/null and b/public/terrain/19/858556/353951.terrain differ diff --git a/public/terrain/19/858556/353952.terrain b/public/terrain/19/858556/353952.terrain new file mode 100644 index 000000000..e07e47e18 Binary files /dev/null and b/public/terrain/19/858556/353952.terrain differ diff --git a/public/terrain/19/858556/353953.terrain b/public/terrain/19/858556/353953.terrain new file mode 100644 index 000000000..0abc79745 Binary files /dev/null and b/public/terrain/19/858556/353953.terrain differ diff --git a/public/terrain/19/858556/353954.terrain b/public/terrain/19/858556/353954.terrain new file mode 100644 index 000000000..dd59c0c81 Binary files /dev/null and b/public/terrain/19/858556/353954.terrain differ diff --git a/public/terrain/19/858556/353955.terrain b/public/terrain/19/858556/353955.terrain new file mode 100644 index 000000000..f14b245e1 Binary files /dev/null and b/public/terrain/19/858556/353955.terrain differ diff --git a/public/terrain/19/858556/353956.terrain b/public/terrain/19/858556/353956.terrain new file mode 100644 index 000000000..a543f287e Binary files /dev/null and b/public/terrain/19/858556/353956.terrain differ diff --git a/public/terrain/19/858556/353957.terrain b/public/terrain/19/858556/353957.terrain new file mode 100644 index 000000000..835a7a25f Binary files /dev/null and b/public/terrain/19/858556/353957.terrain differ diff --git a/public/terrain/19/858556/353958.terrain b/public/terrain/19/858556/353958.terrain new file mode 100644 index 000000000..96e1395ff Binary files /dev/null and b/public/terrain/19/858556/353958.terrain differ diff --git a/public/terrain/19/858556/353959.terrain b/public/terrain/19/858556/353959.terrain new file mode 100644 index 000000000..3e03ad371 Binary files /dev/null and b/public/terrain/19/858556/353959.terrain differ diff --git a/public/terrain/19/858556/353960.terrain b/public/terrain/19/858556/353960.terrain new file mode 100644 index 000000000..a29179617 Binary files /dev/null and b/public/terrain/19/858556/353960.terrain differ diff --git a/public/terrain/19/858556/353961.terrain b/public/terrain/19/858556/353961.terrain new file mode 100644 index 000000000..05e3f7b2c Binary files /dev/null and b/public/terrain/19/858556/353961.terrain differ diff --git a/public/terrain/19/858556/353962.terrain b/public/terrain/19/858556/353962.terrain new file mode 100644 index 000000000..40785eb8e Binary files /dev/null and b/public/terrain/19/858556/353962.terrain differ diff --git a/public/terrain/19/858556/353963.terrain b/public/terrain/19/858556/353963.terrain new file mode 100644 index 000000000..c5154f4b1 Binary files /dev/null and b/public/terrain/19/858556/353963.terrain differ diff --git a/public/terrain/19/858556/353964.terrain b/public/terrain/19/858556/353964.terrain new file mode 100644 index 000000000..1f01086da Binary files /dev/null and b/public/terrain/19/858556/353964.terrain differ diff --git a/public/terrain/19/858556/353965.terrain b/public/terrain/19/858556/353965.terrain new file mode 100644 index 000000000..3a7082dbc Binary files /dev/null and b/public/terrain/19/858556/353965.terrain differ diff --git a/public/terrain/19/858556/353966.terrain b/public/terrain/19/858556/353966.terrain new file mode 100644 index 000000000..1ee5b9f43 Binary files /dev/null and b/public/terrain/19/858556/353966.terrain differ diff --git a/public/terrain/19/858556/353967.terrain b/public/terrain/19/858556/353967.terrain new file mode 100644 index 000000000..048e78814 Binary files /dev/null and b/public/terrain/19/858556/353967.terrain differ diff --git a/public/terrain/19/858556/353968.terrain b/public/terrain/19/858556/353968.terrain new file mode 100644 index 000000000..67169c527 Binary files /dev/null and b/public/terrain/19/858556/353968.terrain differ diff --git a/public/terrain/19/858556/353969.terrain b/public/terrain/19/858556/353969.terrain new file mode 100644 index 000000000..fef8ae0a3 Binary files /dev/null and b/public/terrain/19/858556/353969.terrain differ diff --git a/public/terrain/19/858556/353970.terrain b/public/terrain/19/858556/353970.terrain new file mode 100644 index 000000000..2109ee65c Binary files /dev/null and b/public/terrain/19/858556/353970.terrain differ diff --git a/public/terrain/19/858556/353971.terrain b/public/terrain/19/858556/353971.terrain new file mode 100644 index 000000000..5005eaa76 Binary files /dev/null and b/public/terrain/19/858556/353971.terrain differ diff --git a/public/terrain/19/858556/353972.terrain b/public/terrain/19/858556/353972.terrain new file mode 100644 index 000000000..ae654d931 Binary files /dev/null and b/public/terrain/19/858556/353972.terrain differ diff --git a/public/terrain/19/858556/353973.terrain b/public/terrain/19/858556/353973.terrain new file mode 100644 index 000000000..5851b2853 Binary files /dev/null and b/public/terrain/19/858556/353973.terrain differ diff --git a/public/terrain/19/858556/353974.terrain b/public/terrain/19/858556/353974.terrain new file mode 100644 index 000000000..6791549d2 Binary files /dev/null and b/public/terrain/19/858556/353974.terrain differ diff --git a/public/terrain/19/858556/353975.terrain b/public/terrain/19/858556/353975.terrain new file mode 100644 index 000000000..4b38da2da Binary files /dev/null and b/public/terrain/19/858556/353975.terrain differ diff --git a/public/terrain/19/858556/353976.terrain b/public/terrain/19/858556/353976.terrain new file mode 100644 index 000000000..9582dd4ac Binary files /dev/null and b/public/terrain/19/858556/353976.terrain differ diff --git a/public/terrain/19/858556/353977.terrain b/public/terrain/19/858556/353977.terrain new file mode 100644 index 000000000..ca0d9f24e Binary files /dev/null and b/public/terrain/19/858556/353977.terrain differ diff --git a/public/terrain/19/858556/353978.terrain b/public/terrain/19/858556/353978.terrain new file mode 100644 index 000000000..014288802 Binary files /dev/null and b/public/terrain/19/858556/353978.terrain differ diff --git a/public/terrain/19/858556/353979.terrain b/public/terrain/19/858556/353979.terrain new file mode 100644 index 000000000..e13e67825 Binary files /dev/null and b/public/terrain/19/858556/353979.terrain differ diff --git a/public/terrain/19/858556/353980.terrain b/public/terrain/19/858556/353980.terrain new file mode 100644 index 000000000..90d3836d4 Binary files /dev/null and b/public/terrain/19/858556/353980.terrain differ diff --git a/public/terrain/19/858556/353981.terrain b/public/terrain/19/858556/353981.terrain new file mode 100644 index 000000000..a8c574c45 Binary files /dev/null and b/public/terrain/19/858556/353981.terrain differ diff --git a/public/terrain/19/858556/353982.terrain b/public/terrain/19/858556/353982.terrain new file mode 100644 index 000000000..281c2e792 Binary files /dev/null and b/public/terrain/19/858556/353982.terrain differ diff --git a/public/terrain/19/858556/353983.terrain b/public/terrain/19/858556/353983.terrain new file mode 100644 index 000000000..683d28457 Binary files /dev/null and b/public/terrain/19/858556/353983.terrain differ diff --git a/public/terrain/19/858556/353984.terrain b/public/terrain/19/858556/353984.terrain new file mode 100644 index 000000000..89e086ee9 Binary files /dev/null and b/public/terrain/19/858556/353984.terrain differ diff --git a/public/terrain/19/858556/353985.terrain b/public/terrain/19/858556/353985.terrain new file mode 100644 index 000000000..b2188f4e0 Binary files /dev/null and b/public/terrain/19/858556/353985.terrain differ diff --git a/public/terrain/19/858556/353986.terrain b/public/terrain/19/858556/353986.terrain new file mode 100644 index 000000000..b10226cb4 Binary files /dev/null and b/public/terrain/19/858556/353986.terrain differ diff --git a/public/terrain/19/858556/353987.terrain b/public/terrain/19/858556/353987.terrain new file mode 100644 index 000000000..d19a061ce Binary files /dev/null and b/public/terrain/19/858556/353987.terrain differ diff --git a/public/terrain/19/858556/353988.terrain b/public/terrain/19/858556/353988.terrain new file mode 100644 index 000000000..f607e7c9b Binary files /dev/null and b/public/terrain/19/858556/353988.terrain differ diff --git a/public/terrain/19/858556/353989.terrain b/public/terrain/19/858556/353989.terrain new file mode 100644 index 000000000..e0b934234 Binary files /dev/null and b/public/terrain/19/858556/353989.terrain differ diff --git a/public/terrain/19/858556/353990.terrain b/public/terrain/19/858556/353990.terrain new file mode 100644 index 000000000..96578d832 Binary files /dev/null and b/public/terrain/19/858556/353990.terrain differ diff --git a/public/terrain/19/858556/353991.terrain b/public/terrain/19/858556/353991.terrain new file mode 100644 index 000000000..f356a8bcb Binary files /dev/null and b/public/terrain/19/858556/353991.terrain differ diff --git a/public/terrain/19/858556/353992.terrain b/public/terrain/19/858556/353992.terrain new file mode 100644 index 000000000..1cf9b8c4b Binary files /dev/null and b/public/terrain/19/858556/353992.terrain differ diff --git a/public/terrain/19/858556/353993.terrain b/public/terrain/19/858556/353993.terrain new file mode 100644 index 000000000..b3579528a Binary files /dev/null and b/public/terrain/19/858556/353993.terrain differ diff --git a/public/terrain/19/858556/353994.terrain b/public/terrain/19/858556/353994.terrain new file mode 100644 index 000000000..830a9f9a4 Binary files /dev/null and b/public/terrain/19/858556/353994.terrain differ diff --git a/public/terrain/19/858556/353995.terrain b/public/terrain/19/858556/353995.terrain new file mode 100644 index 000000000..4a1937e13 Binary files /dev/null and b/public/terrain/19/858556/353995.terrain differ diff --git a/public/terrain/19/858556/353996.terrain b/public/terrain/19/858556/353996.terrain new file mode 100644 index 000000000..8bd9cbba2 Binary files /dev/null and b/public/terrain/19/858556/353996.terrain differ diff --git a/public/terrain/19/858556/353997.terrain b/public/terrain/19/858556/353997.terrain new file mode 100644 index 000000000..936c44cf2 Binary files /dev/null and b/public/terrain/19/858556/353997.terrain differ diff --git a/public/terrain/19/858556/353998.terrain b/public/terrain/19/858556/353998.terrain new file mode 100644 index 000000000..ca7fd7e5b Binary files /dev/null and b/public/terrain/19/858556/353998.terrain differ diff --git a/public/terrain/19/858556/353999.terrain b/public/terrain/19/858556/353999.terrain new file mode 100644 index 000000000..07b0e6fc6 Binary files /dev/null and b/public/terrain/19/858556/353999.terrain differ diff --git a/public/terrain/19/858556/354000.terrain b/public/terrain/19/858556/354000.terrain new file mode 100644 index 000000000..b27ddac0e Binary files /dev/null and b/public/terrain/19/858556/354000.terrain differ diff --git a/public/terrain/19/858556/354001.terrain b/public/terrain/19/858556/354001.terrain new file mode 100644 index 000000000..556dab390 Binary files /dev/null and b/public/terrain/19/858556/354001.terrain differ diff --git a/public/terrain/19/858556/354002.terrain b/public/terrain/19/858556/354002.terrain new file mode 100644 index 000000000..eec5cf58d Binary files /dev/null and b/public/terrain/19/858556/354002.terrain differ diff --git a/public/terrain/19/858556/354003.terrain b/public/terrain/19/858556/354003.terrain new file mode 100644 index 000000000..25973f673 Binary files /dev/null and b/public/terrain/19/858556/354003.terrain differ diff --git a/public/terrain/19/858556/354004.terrain b/public/terrain/19/858556/354004.terrain new file mode 100644 index 000000000..7b1614b83 Binary files /dev/null and b/public/terrain/19/858556/354004.terrain differ diff --git a/public/terrain/19/858556/354005.terrain b/public/terrain/19/858556/354005.terrain new file mode 100644 index 000000000..e4489c47f Binary files /dev/null and b/public/terrain/19/858556/354005.terrain differ diff --git a/public/terrain/19/858556/354006.terrain b/public/terrain/19/858556/354006.terrain new file mode 100644 index 000000000..f5e6bd1f7 Binary files /dev/null and b/public/terrain/19/858556/354006.terrain differ diff --git a/public/terrain/19/858556/354007.terrain b/public/terrain/19/858556/354007.terrain new file mode 100644 index 000000000..64645202b Binary files /dev/null and b/public/terrain/19/858556/354007.terrain differ diff --git a/public/terrain/19/858556/354008.terrain b/public/terrain/19/858556/354008.terrain new file mode 100644 index 000000000..b6ce1d541 Binary files /dev/null and b/public/terrain/19/858556/354008.terrain differ diff --git a/public/terrain/19/858556/354009.terrain b/public/terrain/19/858556/354009.terrain new file mode 100644 index 000000000..637fc6fbf Binary files /dev/null and b/public/terrain/19/858556/354009.terrain differ diff --git a/public/terrain/19/858556/354010.terrain b/public/terrain/19/858556/354010.terrain new file mode 100644 index 000000000..b4a99967f Binary files /dev/null and b/public/terrain/19/858556/354010.terrain differ diff --git a/public/terrain/19/858556/354011.terrain b/public/terrain/19/858556/354011.terrain new file mode 100644 index 000000000..eb09ad6e7 Binary files /dev/null and b/public/terrain/19/858556/354011.terrain differ diff --git a/public/terrain/19/858556/354012.terrain b/public/terrain/19/858556/354012.terrain new file mode 100644 index 000000000..118e86fd4 Binary files /dev/null and b/public/terrain/19/858556/354012.terrain differ diff --git a/public/terrain/19/858556/354013.terrain b/public/terrain/19/858556/354013.terrain new file mode 100644 index 000000000..41953b580 Binary files /dev/null and b/public/terrain/19/858556/354013.terrain differ diff --git a/public/terrain/19/858556/354014.terrain b/public/terrain/19/858556/354014.terrain new file mode 100644 index 000000000..5b435cb6d Binary files /dev/null and b/public/terrain/19/858556/354014.terrain differ diff --git a/public/terrain/19/858556/354015.terrain b/public/terrain/19/858556/354015.terrain new file mode 100644 index 000000000..012cd5386 Binary files /dev/null and b/public/terrain/19/858556/354015.terrain differ diff --git a/public/terrain/19/858556/354016.terrain b/public/terrain/19/858556/354016.terrain new file mode 100644 index 000000000..a982b0016 Binary files /dev/null and b/public/terrain/19/858556/354016.terrain differ diff --git a/public/terrain/19/858556/354017.terrain b/public/terrain/19/858556/354017.terrain new file mode 100644 index 000000000..f7c5c8c10 Binary files /dev/null and b/public/terrain/19/858556/354017.terrain differ diff --git a/public/terrain/19/858556/354018.terrain b/public/terrain/19/858556/354018.terrain new file mode 100644 index 000000000..cd1a5fbce Binary files /dev/null and b/public/terrain/19/858556/354018.terrain differ diff --git a/public/terrain/19/858556/354019.terrain b/public/terrain/19/858556/354019.terrain new file mode 100644 index 000000000..aca8912ca Binary files /dev/null and b/public/terrain/19/858556/354019.terrain differ diff --git a/public/terrain/19/858556/354020.terrain b/public/terrain/19/858556/354020.terrain new file mode 100644 index 000000000..41b691a50 Binary files /dev/null and b/public/terrain/19/858556/354020.terrain differ diff --git a/public/terrain/19/858556/354021.terrain b/public/terrain/19/858556/354021.terrain new file mode 100644 index 000000000..7eb55ee0b Binary files /dev/null and b/public/terrain/19/858556/354021.terrain differ diff --git a/public/terrain/19/858556/354022.terrain b/public/terrain/19/858556/354022.terrain new file mode 100644 index 000000000..65e912337 Binary files /dev/null and b/public/terrain/19/858556/354022.terrain differ diff --git a/public/terrain/19/858556/354023.terrain b/public/terrain/19/858556/354023.terrain new file mode 100644 index 000000000..833c3ebbb Binary files /dev/null and b/public/terrain/19/858556/354023.terrain differ diff --git a/public/terrain/19/858556/354024.terrain b/public/terrain/19/858556/354024.terrain new file mode 100644 index 000000000..8a9734f33 Binary files /dev/null and b/public/terrain/19/858556/354024.terrain differ diff --git a/public/terrain/19/858556/354025.terrain b/public/terrain/19/858556/354025.terrain new file mode 100644 index 000000000..214830dca Binary files /dev/null and b/public/terrain/19/858556/354025.terrain differ diff --git a/public/terrain/19/858556/354026.terrain b/public/terrain/19/858556/354026.terrain new file mode 100644 index 000000000..e17f245cd Binary files /dev/null and b/public/terrain/19/858556/354026.terrain differ diff --git a/public/terrain/19/858556/354027.terrain b/public/terrain/19/858556/354027.terrain new file mode 100644 index 000000000..463b125d3 Binary files /dev/null and b/public/terrain/19/858556/354027.terrain differ diff --git a/public/terrain/19/858556/354028.terrain b/public/terrain/19/858556/354028.terrain new file mode 100644 index 000000000..df719e61f Binary files /dev/null and b/public/terrain/19/858556/354028.terrain differ diff --git a/public/terrain/19/858556/354029.terrain b/public/terrain/19/858556/354029.terrain new file mode 100644 index 000000000..11cea7ba9 Binary files /dev/null and b/public/terrain/19/858556/354029.terrain differ diff --git a/public/terrain/19/858556/354030.terrain b/public/terrain/19/858556/354030.terrain new file mode 100644 index 000000000..395b646fe Binary files /dev/null and b/public/terrain/19/858556/354030.terrain differ diff --git a/public/terrain/19/858556/354031.terrain b/public/terrain/19/858556/354031.terrain new file mode 100644 index 000000000..f6e552eaf Binary files /dev/null and b/public/terrain/19/858556/354031.terrain differ diff --git a/public/terrain/19/858556/354032.terrain b/public/terrain/19/858556/354032.terrain new file mode 100644 index 000000000..9e92f1af9 Binary files /dev/null and b/public/terrain/19/858556/354032.terrain differ diff --git a/public/terrain/19/858556/354033.terrain b/public/terrain/19/858556/354033.terrain new file mode 100644 index 000000000..962ac8b42 Binary files /dev/null and b/public/terrain/19/858556/354033.terrain differ diff --git a/public/terrain/19/858556/354034.terrain b/public/terrain/19/858556/354034.terrain new file mode 100644 index 000000000..618dc2e16 Binary files /dev/null and b/public/terrain/19/858556/354034.terrain differ diff --git a/public/terrain/19/858556/354035.terrain b/public/terrain/19/858556/354035.terrain new file mode 100644 index 000000000..41ee3af3a Binary files /dev/null and b/public/terrain/19/858556/354035.terrain differ diff --git a/public/terrain/19/858556/354036.terrain b/public/terrain/19/858556/354036.terrain new file mode 100644 index 000000000..0bb65acbf Binary files /dev/null and b/public/terrain/19/858556/354036.terrain differ diff --git a/public/terrain/19/858556/354037.terrain b/public/terrain/19/858556/354037.terrain new file mode 100644 index 000000000..b82669cb1 Binary files /dev/null and b/public/terrain/19/858556/354037.terrain differ diff --git a/public/terrain/19/858556/354038.terrain b/public/terrain/19/858556/354038.terrain new file mode 100644 index 000000000..e13cea87e Binary files /dev/null and b/public/terrain/19/858556/354038.terrain differ diff --git a/public/terrain/19/858556/354039.terrain b/public/terrain/19/858556/354039.terrain new file mode 100644 index 000000000..38149c917 Binary files /dev/null and b/public/terrain/19/858556/354039.terrain differ diff --git a/public/terrain/19/858556/354040.terrain b/public/terrain/19/858556/354040.terrain new file mode 100644 index 000000000..b0cd850e4 Binary files /dev/null and b/public/terrain/19/858556/354040.terrain differ diff --git a/public/terrain/19/858556/354041.terrain b/public/terrain/19/858556/354041.terrain new file mode 100644 index 000000000..4274b2e8a Binary files /dev/null and b/public/terrain/19/858556/354041.terrain differ diff --git a/public/terrain/19/858556/354042.terrain b/public/terrain/19/858556/354042.terrain new file mode 100644 index 000000000..1a51cc119 Binary files /dev/null and b/public/terrain/19/858556/354042.terrain differ diff --git a/public/terrain/19/858556/354043.terrain b/public/terrain/19/858556/354043.terrain new file mode 100644 index 000000000..3511095da Binary files /dev/null and b/public/terrain/19/858556/354043.terrain differ diff --git a/public/terrain/19/858556/354044.terrain b/public/terrain/19/858556/354044.terrain new file mode 100644 index 000000000..e56236785 Binary files /dev/null and b/public/terrain/19/858556/354044.terrain differ diff --git a/public/terrain/19/858556/354045.terrain b/public/terrain/19/858556/354045.terrain new file mode 100644 index 000000000..d2b8c7b0b Binary files /dev/null and b/public/terrain/19/858556/354045.terrain differ diff --git a/public/terrain/19/858556/354046.terrain b/public/terrain/19/858556/354046.terrain new file mode 100644 index 000000000..aba7756af Binary files /dev/null and b/public/terrain/19/858556/354046.terrain differ diff --git a/public/terrain/19/858556/354047.terrain b/public/terrain/19/858556/354047.terrain new file mode 100644 index 000000000..6073ba461 Binary files /dev/null and b/public/terrain/19/858556/354047.terrain differ diff --git a/public/terrain/19/858556/354048.terrain b/public/terrain/19/858556/354048.terrain new file mode 100644 index 000000000..9f5119655 Binary files /dev/null and b/public/terrain/19/858556/354048.terrain differ diff --git a/public/terrain/19/858556/354049.terrain b/public/terrain/19/858556/354049.terrain new file mode 100644 index 000000000..d664652b2 Binary files /dev/null and b/public/terrain/19/858556/354049.terrain differ diff --git a/public/terrain/19/858556/354050.terrain b/public/terrain/19/858556/354050.terrain new file mode 100644 index 000000000..3664991ed Binary files /dev/null and b/public/terrain/19/858556/354050.terrain differ diff --git a/public/terrain/19/858556/354051.terrain b/public/terrain/19/858556/354051.terrain new file mode 100644 index 000000000..6af998340 Binary files /dev/null and b/public/terrain/19/858556/354051.terrain differ diff --git a/public/terrain/19/858556/354052.terrain b/public/terrain/19/858556/354052.terrain new file mode 100644 index 000000000..a1a984409 Binary files /dev/null and b/public/terrain/19/858556/354052.terrain differ diff --git a/public/terrain/19/858556/354053.terrain b/public/terrain/19/858556/354053.terrain new file mode 100644 index 000000000..b740f7cc5 Binary files /dev/null and b/public/terrain/19/858556/354053.terrain differ diff --git a/public/terrain/19/858556/354054.terrain b/public/terrain/19/858556/354054.terrain new file mode 100644 index 000000000..7429ea54e Binary files /dev/null and b/public/terrain/19/858556/354054.terrain differ diff --git a/public/terrain/19/858556/354055.terrain b/public/terrain/19/858556/354055.terrain new file mode 100644 index 000000000..4bd60261e Binary files /dev/null and b/public/terrain/19/858556/354055.terrain differ diff --git a/public/terrain/19/858556/354056.terrain b/public/terrain/19/858556/354056.terrain new file mode 100644 index 000000000..e3c5ccecc Binary files /dev/null and b/public/terrain/19/858556/354056.terrain differ diff --git a/public/terrain/19/858556/354057.terrain b/public/terrain/19/858556/354057.terrain new file mode 100644 index 000000000..49f9b295b Binary files /dev/null and b/public/terrain/19/858556/354057.terrain differ diff --git a/public/terrain/19/858556/354058.terrain b/public/terrain/19/858556/354058.terrain new file mode 100644 index 000000000..2e408067f Binary files /dev/null and b/public/terrain/19/858556/354058.terrain differ diff --git a/public/terrain/19/858556/354059.terrain b/public/terrain/19/858556/354059.terrain new file mode 100644 index 000000000..904328635 Binary files /dev/null and b/public/terrain/19/858556/354059.terrain differ diff --git a/public/terrain/19/858557/353743.terrain b/public/terrain/19/858557/353743.terrain new file mode 100644 index 000000000..a04f2de58 Binary files /dev/null and b/public/terrain/19/858557/353743.terrain differ diff --git a/public/terrain/19/858557/353744.terrain b/public/terrain/19/858557/353744.terrain new file mode 100644 index 000000000..d32ed8acc Binary files /dev/null and b/public/terrain/19/858557/353744.terrain differ diff --git a/public/terrain/19/858557/353745.terrain b/public/terrain/19/858557/353745.terrain new file mode 100644 index 000000000..7326f3f48 Binary files /dev/null and b/public/terrain/19/858557/353745.terrain differ diff --git a/public/terrain/19/858557/353746.terrain b/public/terrain/19/858557/353746.terrain new file mode 100644 index 000000000..cf96dfb04 Binary files /dev/null and b/public/terrain/19/858557/353746.terrain differ diff --git a/public/terrain/19/858557/353747.terrain b/public/terrain/19/858557/353747.terrain new file mode 100644 index 000000000..851c654b5 Binary files /dev/null and b/public/terrain/19/858557/353747.terrain differ diff --git a/public/terrain/19/858557/353748.terrain b/public/terrain/19/858557/353748.terrain new file mode 100644 index 000000000..99110476c Binary files /dev/null and b/public/terrain/19/858557/353748.terrain differ diff --git a/public/terrain/19/858557/353749.terrain b/public/terrain/19/858557/353749.terrain new file mode 100644 index 000000000..07a2ee42c Binary files /dev/null and b/public/terrain/19/858557/353749.terrain differ diff --git a/public/terrain/19/858557/353750.terrain b/public/terrain/19/858557/353750.terrain new file mode 100644 index 000000000..1e8d20e1b Binary files /dev/null and b/public/terrain/19/858557/353750.terrain differ diff --git a/public/terrain/19/858557/353751.terrain b/public/terrain/19/858557/353751.terrain new file mode 100644 index 000000000..19896736a Binary files /dev/null and b/public/terrain/19/858557/353751.terrain differ diff --git a/public/terrain/19/858557/353752.terrain b/public/terrain/19/858557/353752.terrain new file mode 100644 index 000000000..d832c6cd5 Binary files /dev/null and b/public/terrain/19/858557/353752.terrain differ diff --git a/public/terrain/19/858557/353753.terrain b/public/terrain/19/858557/353753.terrain new file mode 100644 index 000000000..624e46ed3 Binary files /dev/null and b/public/terrain/19/858557/353753.terrain differ diff --git a/public/terrain/19/858557/353754.terrain b/public/terrain/19/858557/353754.terrain new file mode 100644 index 000000000..406766f6b Binary files /dev/null and b/public/terrain/19/858557/353754.terrain differ diff --git a/public/terrain/19/858557/353755.terrain b/public/terrain/19/858557/353755.terrain new file mode 100644 index 000000000..94a1f6e4e Binary files /dev/null and b/public/terrain/19/858557/353755.terrain differ diff --git a/public/terrain/19/858557/353756.terrain b/public/terrain/19/858557/353756.terrain new file mode 100644 index 000000000..7d9c23806 Binary files /dev/null and b/public/terrain/19/858557/353756.terrain differ diff --git a/public/terrain/19/858557/353757.terrain b/public/terrain/19/858557/353757.terrain new file mode 100644 index 000000000..6204783f6 Binary files /dev/null and b/public/terrain/19/858557/353757.terrain differ diff --git a/public/terrain/19/858557/353758.terrain b/public/terrain/19/858557/353758.terrain new file mode 100644 index 000000000..16ffbaa62 Binary files /dev/null and b/public/terrain/19/858557/353758.terrain differ diff --git a/public/terrain/19/858557/353759.terrain b/public/terrain/19/858557/353759.terrain new file mode 100644 index 000000000..541c844e0 Binary files /dev/null and b/public/terrain/19/858557/353759.terrain differ diff --git a/public/terrain/19/858557/353760.terrain b/public/terrain/19/858557/353760.terrain new file mode 100644 index 000000000..f3e09bdd5 Binary files /dev/null and b/public/terrain/19/858557/353760.terrain differ diff --git a/public/terrain/19/858557/353761.terrain b/public/terrain/19/858557/353761.terrain new file mode 100644 index 000000000..5d59b28da Binary files /dev/null and b/public/terrain/19/858557/353761.terrain differ diff --git a/public/terrain/19/858557/353762.terrain b/public/terrain/19/858557/353762.terrain new file mode 100644 index 000000000..c5fc84a03 Binary files /dev/null and b/public/terrain/19/858557/353762.terrain differ diff --git a/public/terrain/19/858557/353763.terrain b/public/terrain/19/858557/353763.terrain new file mode 100644 index 000000000..eae1c7fa1 Binary files /dev/null and b/public/terrain/19/858557/353763.terrain differ diff --git a/public/terrain/19/858557/353764.terrain b/public/terrain/19/858557/353764.terrain new file mode 100644 index 000000000..d20fd40d3 Binary files /dev/null and b/public/terrain/19/858557/353764.terrain differ diff --git a/public/terrain/19/858557/353765.terrain b/public/terrain/19/858557/353765.terrain new file mode 100644 index 000000000..5f4d5e127 Binary files /dev/null and b/public/terrain/19/858557/353765.terrain differ diff --git a/public/terrain/19/858557/353766.terrain b/public/terrain/19/858557/353766.terrain new file mode 100644 index 000000000..7e2bcd7c8 Binary files /dev/null and b/public/terrain/19/858557/353766.terrain differ diff --git a/public/terrain/19/858557/353767.terrain b/public/terrain/19/858557/353767.terrain new file mode 100644 index 000000000..bfa293dd2 Binary files /dev/null and b/public/terrain/19/858557/353767.terrain differ diff --git a/public/terrain/19/858557/353768.terrain b/public/terrain/19/858557/353768.terrain new file mode 100644 index 000000000..485faca20 Binary files /dev/null and b/public/terrain/19/858557/353768.terrain differ diff --git a/public/terrain/19/858557/353769.terrain b/public/terrain/19/858557/353769.terrain new file mode 100644 index 000000000..120553df8 Binary files /dev/null and b/public/terrain/19/858557/353769.terrain differ diff --git a/public/terrain/19/858557/353770.terrain b/public/terrain/19/858557/353770.terrain new file mode 100644 index 000000000..9162d5675 Binary files /dev/null and b/public/terrain/19/858557/353770.terrain differ diff --git a/public/terrain/19/858557/353771.terrain b/public/terrain/19/858557/353771.terrain new file mode 100644 index 000000000..94f9c8052 Binary files /dev/null and b/public/terrain/19/858557/353771.terrain differ diff --git a/public/terrain/19/858557/353772.terrain b/public/terrain/19/858557/353772.terrain new file mode 100644 index 000000000..96b3ac36b Binary files /dev/null and b/public/terrain/19/858557/353772.terrain differ diff --git a/public/terrain/19/858557/353773.terrain b/public/terrain/19/858557/353773.terrain new file mode 100644 index 000000000..c739bfd08 Binary files /dev/null and b/public/terrain/19/858557/353773.terrain differ diff --git a/public/terrain/19/858557/353774.terrain b/public/terrain/19/858557/353774.terrain new file mode 100644 index 000000000..c0e482b4d Binary files /dev/null and b/public/terrain/19/858557/353774.terrain differ diff --git a/public/terrain/19/858557/353775.terrain b/public/terrain/19/858557/353775.terrain new file mode 100644 index 000000000..b09560264 Binary files /dev/null and b/public/terrain/19/858557/353775.terrain differ diff --git a/public/terrain/19/858557/353776.terrain b/public/terrain/19/858557/353776.terrain new file mode 100644 index 000000000..9164f20ea Binary files /dev/null and b/public/terrain/19/858557/353776.terrain differ diff --git a/public/terrain/19/858557/353777.terrain b/public/terrain/19/858557/353777.terrain new file mode 100644 index 000000000..4b8ec48f9 Binary files /dev/null and b/public/terrain/19/858557/353777.terrain differ diff --git a/public/terrain/19/858557/353778.terrain b/public/terrain/19/858557/353778.terrain new file mode 100644 index 000000000..bfc6d7916 Binary files /dev/null and b/public/terrain/19/858557/353778.terrain differ diff --git a/public/terrain/19/858557/353779.terrain b/public/terrain/19/858557/353779.terrain new file mode 100644 index 000000000..5ed79e156 Binary files /dev/null and b/public/terrain/19/858557/353779.terrain differ diff --git a/public/terrain/19/858557/353780.terrain b/public/terrain/19/858557/353780.terrain new file mode 100644 index 000000000..491883e2f Binary files /dev/null and b/public/terrain/19/858557/353780.terrain differ diff --git a/public/terrain/19/858557/353781.terrain b/public/terrain/19/858557/353781.terrain new file mode 100644 index 000000000..507267fcb Binary files /dev/null and b/public/terrain/19/858557/353781.terrain differ diff --git a/public/terrain/19/858557/353782.terrain b/public/terrain/19/858557/353782.terrain new file mode 100644 index 000000000..3f2d864ab Binary files /dev/null and b/public/terrain/19/858557/353782.terrain differ diff --git a/public/terrain/19/858557/353783.terrain b/public/terrain/19/858557/353783.terrain new file mode 100644 index 000000000..1df61cad3 Binary files /dev/null and b/public/terrain/19/858557/353783.terrain differ diff --git a/public/terrain/19/858557/353784.terrain b/public/terrain/19/858557/353784.terrain new file mode 100644 index 000000000..8c37af4dd Binary files /dev/null and b/public/terrain/19/858557/353784.terrain differ diff --git a/public/terrain/19/858557/353785.terrain b/public/terrain/19/858557/353785.terrain new file mode 100644 index 000000000..60200c2e7 Binary files /dev/null and b/public/terrain/19/858557/353785.terrain differ diff --git a/public/terrain/19/858557/353786.terrain b/public/terrain/19/858557/353786.terrain new file mode 100644 index 000000000..1aaec6a29 Binary files /dev/null and b/public/terrain/19/858557/353786.terrain differ diff --git a/public/terrain/19/858557/353787.terrain b/public/terrain/19/858557/353787.terrain new file mode 100644 index 000000000..bc39790e3 Binary files /dev/null and b/public/terrain/19/858557/353787.terrain differ diff --git a/public/terrain/19/858557/353788.terrain b/public/terrain/19/858557/353788.terrain new file mode 100644 index 000000000..421e4a340 Binary files /dev/null and b/public/terrain/19/858557/353788.terrain differ diff --git a/public/terrain/19/858557/353789.terrain b/public/terrain/19/858557/353789.terrain new file mode 100644 index 000000000..b05c3d907 Binary files /dev/null and b/public/terrain/19/858557/353789.terrain differ diff --git a/public/terrain/19/858557/353790.terrain b/public/terrain/19/858557/353790.terrain new file mode 100644 index 000000000..b1eb87707 Binary files /dev/null and b/public/terrain/19/858557/353790.terrain differ diff --git a/public/terrain/19/858557/353791.terrain b/public/terrain/19/858557/353791.terrain new file mode 100644 index 000000000..83f86b3e6 Binary files /dev/null and b/public/terrain/19/858557/353791.terrain differ diff --git a/public/terrain/19/858557/353792.terrain b/public/terrain/19/858557/353792.terrain new file mode 100644 index 000000000..ecbd1def9 Binary files /dev/null and b/public/terrain/19/858557/353792.terrain differ diff --git a/public/terrain/19/858557/353793.terrain b/public/terrain/19/858557/353793.terrain new file mode 100644 index 000000000..92e5fa3a3 Binary files /dev/null and b/public/terrain/19/858557/353793.terrain differ diff --git a/public/terrain/19/858557/353794.terrain b/public/terrain/19/858557/353794.terrain new file mode 100644 index 000000000..e25e10bd3 Binary files /dev/null and b/public/terrain/19/858557/353794.terrain differ diff --git a/public/terrain/19/858557/353795.terrain b/public/terrain/19/858557/353795.terrain new file mode 100644 index 000000000..7501ac1e2 Binary files /dev/null and b/public/terrain/19/858557/353795.terrain differ diff --git a/public/terrain/19/858557/353796.terrain b/public/terrain/19/858557/353796.terrain new file mode 100644 index 000000000..91f58408b Binary files /dev/null and b/public/terrain/19/858557/353796.terrain differ diff --git a/public/terrain/19/858557/353797.terrain b/public/terrain/19/858557/353797.terrain new file mode 100644 index 000000000..861b7929a Binary files /dev/null and b/public/terrain/19/858557/353797.terrain differ diff --git a/public/terrain/19/858557/353798.terrain b/public/terrain/19/858557/353798.terrain new file mode 100644 index 000000000..c1bdbf457 Binary files /dev/null and b/public/terrain/19/858557/353798.terrain differ diff --git a/public/terrain/19/858557/353799.terrain b/public/terrain/19/858557/353799.terrain new file mode 100644 index 000000000..986d2a8cb Binary files /dev/null and b/public/terrain/19/858557/353799.terrain differ diff --git a/public/terrain/19/858557/353800.terrain b/public/terrain/19/858557/353800.terrain new file mode 100644 index 000000000..d3ec28c2d Binary files /dev/null and b/public/terrain/19/858557/353800.terrain differ diff --git a/public/terrain/19/858557/353801.terrain b/public/terrain/19/858557/353801.terrain new file mode 100644 index 000000000..9660a101d Binary files /dev/null and b/public/terrain/19/858557/353801.terrain differ diff --git a/public/terrain/19/858557/353802.terrain b/public/terrain/19/858557/353802.terrain new file mode 100644 index 000000000..d133a309e Binary files /dev/null and b/public/terrain/19/858557/353802.terrain differ diff --git a/public/terrain/19/858557/353803.terrain b/public/terrain/19/858557/353803.terrain new file mode 100644 index 000000000..a561e91f1 Binary files /dev/null and b/public/terrain/19/858557/353803.terrain differ diff --git a/public/terrain/19/858557/353804.terrain b/public/terrain/19/858557/353804.terrain new file mode 100644 index 000000000..47d44ae8b Binary files /dev/null and b/public/terrain/19/858557/353804.terrain differ diff --git a/public/terrain/19/858557/353805.terrain b/public/terrain/19/858557/353805.terrain new file mode 100644 index 000000000..12e8955eb Binary files /dev/null and b/public/terrain/19/858557/353805.terrain differ diff --git a/public/terrain/19/858557/353806.terrain b/public/terrain/19/858557/353806.terrain new file mode 100644 index 000000000..169e31c46 Binary files /dev/null and b/public/terrain/19/858557/353806.terrain differ diff --git a/public/terrain/19/858557/353807.terrain b/public/terrain/19/858557/353807.terrain new file mode 100644 index 000000000..003cf6d13 Binary files /dev/null and b/public/terrain/19/858557/353807.terrain differ diff --git a/public/terrain/19/858557/353808.terrain b/public/terrain/19/858557/353808.terrain new file mode 100644 index 000000000..f828e3e3d Binary files /dev/null and b/public/terrain/19/858557/353808.terrain differ diff --git a/public/terrain/19/858557/353809.terrain b/public/terrain/19/858557/353809.terrain new file mode 100644 index 000000000..2de9f1999 Binary files /dev/null and b/public/terrain/19/858557/353809.terrain differ diff --git a/public/terrain/19/858557/353810.terrain b/public/terrain/19/858557/353810.terrain new file mode 100644 index 000000000..72210bca5 Binary files /dev/null and b/public/terrain/19/858557/353810.terrain differ diff --git a/public/terrain/19/858557/353811.terrain b/public/terrain/19/858557/353811.terrain new file mode 100644 index 000000000..bf560115a Binary files /dev/null and b/public/terrain/19/858557/353811.terrain differ diff --git a/public/terrain/19/858557/353812.terrain b/public/terrain/19/858557/353812.terrain new file mode 100644 index 000000000..25bd709fa Binary files /dev/null and b/public/terrain/19/858557/353812.terrain differ diff --git a/public/terrain/19/858557/353813.terrain b/public/terrain/19/858557/353813.terrain new file mode 100644 index 000000000..5afd9bf1c Binary files /dev/null and b/public/terrain/19/858557/353813.terrain differ diff --git a/public/terrain/19/858557/353814.terrain b/public/terrain/19/858557/353814.terrain new file mode 100644 index 000000000..45b0941fa Binary files /dev/null and b/public/terrain/19/858557/353814.terrain differ diff --git a/public/terrain/19/858557/353815.terrain b/public/terrain/19/858557/353815.terrain new file mode 100644 index 000000000..098cf2270 Binary files /dev/null and b/public/terrain/19/858557/353815.terrain differ diff --git a/public/terrain/19/858557/353816.terrain b/public/terrain/19/858557/353816.terrain new file mode 100644 index 000000000..34e68c4cb Binary files /dev/null and b/public/terrain/19/858557/353816.terrain differ diff --git a/public/terrain/19/858557/353817.terrain b/public/terrain/19/858557/353817.terrain new file mode 100644 index 000000000..da6c403a6 Binary files /dev/null and b/public/terrain/19/858557/353817.terrain differ diff --git a/public/terrain/19/858557/353818.terrain b/public/terrain/19/858557/353818.terrain new file mode 100644 index 000000000..f8791f471 Binary files /dev/null and b/public/terrain/19/858557/353818.terrain differ diff --git a/public/terrain/19/858557/353819.terrain b/public/terrain/19/858557/353819.terrain new file mode 100644 index 000000000..c23c07823 Binary files /dev/null and b/public/terrain/19/858557/353819.terrain differ diff --git a/public/terrain/19/858557/353820.terrain b/public/terrain/19/858557/353820.terrain new file mode 100644 index 000000000..a3fe7297e Binary files /dev/null and b/public/terrain/19/858557/353820.terrain differ diff --git a/public/terrain/19/858557/353821.terrain b/public/terrain/19/858557/353821.terrain new file mode 100644 index 000000000..bbf098e05 Binary files /dev/null and b/public/terrain/19/858557/353821.terrain differ diff --git a/public/terrain/19/858557/353822.terrain b/public/terrain/19/858557/353822.terrain new file mode 100644 index 000000000..e4ce2f7a1 Binary files /dev/null and b/public/terrain/19/858557/353822.terrain differ diff --git a/public/terrain/19/858557/353823.terrain b/public/terrain/19/858557/353823.terrain new file mode 100644 index 000000000..3e9274a96 Binary files /dev/null and b/public/terrain/19/858557/353823.terrain differ diff --git a/public/terrain/19/858557/353824.terrain b/public/terrain/19/858557/353824.terrain new file mode 100644 index 000000000..b930d2cb3 Binary files /dev/null and b/public/terrain/19/858557/353824.terrain differ diff --git a/public/terrain/19/858557/353825.terrain b/public/terrain/19/858557/353825.terrain new file mode 100644 index 000000000..382bae75e Binary files /dev/null and b/public/terrain/19/858557/353825.terrain differ diff --git a/public/terrain/19/858557/353826.terrain b/public/terrain/19/858557/353826.terrain new file mode 100644 index 000000000..2b5d0033c Binary files /dev/null and b/public/terrain/19/858557/353826.terrain differ diff --git a/public/terrain/19/858557/353827.terrain b/public/terrain/19/858557/353827.terrain new file mode 100644 index 000000000..f6edca0bd Binary files /dev/null and b/public/terrain/19/858557/353827.terrain differ diff --git a/public/terrain/19/858557/353828.terrain b/public/terrain/19/858557/353828.terrain new file mode 100644 index 000000000..97aa32a45 Binary files /dev/null and b/public/terrain/19/858557/353828.terrain differ diff --git a/public/terrain/19/858557/353829.terrain b/public/terrain/19/858557/353829.terrain new file mode 100644 index 000000000..2a080bb12 Binary files /dev/null and b/public/terrain/19/858557/353829.terrain differ diff --git a/public/terrain/19/858557/353830.terrain b/public/terrain/19/858557/353830.terrain new file mode 100644 index 000000000..ad9c87bed Binary files /dev/null and b/public/terrain/19/858557/353830.terrain differ diff --git a/public/terrain/19/858557/353831.terrain b/public/terrain/19/858557/353831.terrain new file mode 100644 index 000000000..b0faa3e06 Binary files /dev/null and b/public/terrain/19/858557/353831.terrain differ diff --git a/public/terrain/19/858557/353832.terrain b/public/terrain/19/858557/353832.terrain new file mode 100644 index 000000000..7896fb53c Binary files /dev/null and b/public/terrain/19/858557/353832.terrain differ diff --git a/public/terrain/19/858557/353833.terrain b/public/terrain/19/858557/353833.terrain new file mode 100644 index 000000000..f59bac5aa Binary files /dev/null and b/public/terrain/19/858557/353833.terrain differ diff --git a/public/terrain/19/858557/353834.terrain b/public/terrain/19/858557/353834.terrain new file mode 100644 index 000000000..8f22b3727 Binary files /dev/null and b/public/terrain/19/858557/353834.terrain differ diff --git a/public/terrain/19/858557/353835.terrain b/public/terrain/19/858557/353835.terrain new file mode 100644 index 000000000..f8dd0d7fc Binary files /dev/null and b/public/terrain/19/858557/353835.terrain differ diff --git a/public/terrain/19/858557/353836.terrain b/public/terrain/19/858557/353836.terrain new file mode 100644 index 000000000..6a7c3f6e6 Binary files /dev/null and b/public/terrain/19/858557/353836.terrain differ diff --git a/public/terrain/19/858557/353837.terrain b/public/terrain/19/858557/353837.terrain new file mode 100644 index 000000000..69bad3cea Binary files /dev/null and b/public/terrain/19/858557/353837.terrain differ diff --git a/public/terrain/19/858557/353838.terrain b/public/terrain/19/858557/353838.terrain new file mode 100644 index 000000000..613353c0a Binary files /dev/null and b/public/terrain/19/858557/353838.terrain differ diff --git a/public/terrain/19/858557/353839.terrain b/public/terrain/19/858557/353839.terrain new file mode 100644 index 000000000..290660b06 Binary files /dev/null and b/public/terrain/19/858557/353839.terrain differ diff --git a/public/terrain/19/858557/353840.terrain b/public/terrain/19/858557/353840.terrain new file mode 100644 index 000000000..de856ee01 Binary files /dev/null and b/public/terrain/19/858557/353840.terrain differ diff --git a/public/terrain/19/858557/353841.terrain b/public/terrain/19/858557/353841.terrain new file mode 100644 index 000000000..3594800a7 Binary files /dev/null and b/public/terrain/19/858557/353841.terrain differ diff --git a/public/terrain/19/858557/353842.terrain b/public/terrain/19/858557/353842.terrain new file mode 100644 index 000000000..77c61653d Binary files /dev/null and b/public/terrain/19/858557/353842.terrain differ diff --git a/public/terrain/19/858557/353843.terrain b/public/terrain/19/858557/353843.terrain new file mode 100644 index 000000000..6a68a3d59 Binary files /dev/null and b/public/terrain/19/858557/353843.terrain differ diff --git a/public/terrain/19/858557/353844.terrain b/public/terrain/19/858557/353844.terrain new file mode 100644 index 000000000..61483983d Binary files /dev/null and b/public/terrain/19/858557/353844.terrain differ diff --git a/public/terrain/19/858557/353845.terrain b/public/terrain/19/858557/353845.terrain new file mode 100644 index 000000000..f76cabf6c Binary files /dev/null and b/public/terrain/19/858557/353845.terrain differ diff --git a/public/terrain/19/858557/353846.terrain b/public/terrain/19/858557/353846.terrain new file mode 100644 index 000000000..643bee4d2 Binary files /dev/null and b/public/terrain/19/858557/353846.terrain differ diff --git a/public/terrain/19/858557/353847.terrain b/public/terrain/19/858557/353847.terrain new file mode 100644 index 000000000..16eae83ac Binary files /dev/null and b/public/terrain/19/858557/353847.terrain differ diff --git a/public/terrain/19/858557/353848.terrain b/public/terrain/19/858557/353848.terrain new file mode 100644 index 000000000..46dbfa2d4 Binary files /dev/null and b/public/terrain/19/858557/353848.terrain differ diff --git a/public/terrain/19/858557/353849.terrain b/public/terrain/19/858557/353849.terrain new file mode 100644 index 000000000..383e8c6bb Binary files /dev/null and b/public/terrain/19/858557/353849.terrain differ diff --git a/public/terrain/19/858557/353850.terrain b/public/terrain/19/858557/353850.terrain new file mode 100644 index 000000000..09e9e3dc9 Binary files /dev/null and b/public/terrain/19/858557/353850.terrain differ diff --git a/public/terrain/19/858557/353851.terrain b/public/terrain/19/858557/353851.terrain new file mode 100644 index 000000000..a22197db4 Binary files /dev/null and b/public/terrain/19/858557/353851.terrain differ diff --git a/public/terrain/19/858557/353852.terrain b/public/terrain/19/858557/353852.terrain new file mode 100644 index 000000000..4d9c8fd80 Binary files /dev/null and b/public/terrain/19/858557/353852.terrain differ diff --git a/public/terrain/19/858557/353853.terrain b/public/terrain/19/858557/353853.terrain new file mode 100644 index 000000000..f116c4c4e Binary files /dev/null and b/public/terrain/19/858557/353853.terrain differ diff --git a/public/terrain/19/858557/353854.terrain b/public/terrain/19/858557/353854.terrain new file mode 100644 index 000000000..fabd7edea Binary files /dev/null and b/public/terrain/19/858557/353854.terrain differ diff --git a/public/terrain/19/858557/353855.terrain b/public/terrain/19/858557/353855.terrain new file mode 100644 index 000000000..6988848a6 Binary files /dev/null and b/public/terrain/19/858557/353855.terrain differ diff --git a/public/terrain/19/858557/353856.terrain b/public/terrain/19/858557/353856.terrain new file mode 100644 index 000000000..1c7158bab Binary files /dev/null and b/public/terrain/19/858557/353856.terrain differ diff --git a/public/terrain/19/858557/353857.terrain b/public/terrain/19/858557/353857.terrain new file mode 100644 index 000000000..afbb67015 Binary files /dev/null and b/public/terrain/19/858557/353857.terrain differ diff --git a/public/terrain/19/858557/353858.terrain b/public/terrain/19/858557/353858.terrain new file mode 100644 index 000000000..ac0672bfc Binary files /dev/null and b/public/terrain/19/858557/353858.terrain differ diff --git a/public/terrain/19/858557/353859.terrain b/public/terrain/19/858557/353859.terrain new file mode 100644 index 000000000..9636b4829 Binary files /dev/null and b/public/terrain/19/858557/353859.terrain differ diff --git a/public/terrain/19/858557/353860.terrain b/public/terrain/19/858557/353860.terrain new file mode 100644 index 000000000..7aca023da Binary files /dev/null and b/public/terrain/19/858557/353860.terrain differ diff --git a/public/terrain/19/858557/353861.terrain b/public/terrain/19/858557/353861.terrain new file mode 100644 index 000000000..34fe712df Binary files /dev/null and b/public/terrain/19/858557/353861.terrain differ diff --git a/public/terrain/19/858557/353862.terrain b/public/terrain/19/858557/353862.terrain new file mode 100644 index 000000000..891b81250 Binary files /dev/null and b/public/terrain/19/858557/353862.terrain differ diff --git a/public/terrain/19/858557/353863.terrain b/public/terrain/19/858557/353863.terrain new file mode 100644 index 000000000..e971fb5d8 Binary files /dev/null and b/public/terrain/19/858557/353863.terrain differ diff --git a/public/terrain/19/858557/353864.terrain b/public/terrain/19/858557/353864.terrain new file mode 100644 index 000000000..fdfff0308 Binary files /dev/null and b/public/terrain/19/858557/353864.terrain differ diff --git a/public/terrain/19/858557/353865.terrain b/public/terrain/19/858557/353865.terrain new file mode 100644 index 000000000..b53b2780e Binary files /dev/null and b/public/terrain/19/858557/353865.terrain differ diff --git a/public/terrain/19/858557/353866.terrain b/public/terrain/19/858557/353866.terrain new file mode 100644 index 000000000..cfe4f07be Binary files /dev/null and b/public/terrain/19/858557/353866.terrain differ diff --git a/public/terrain/19/858557/353867.terrain b/public/terrain/19/858557/353867.terrain new file mode 100644 index 000000000..bda4ad3db Binary files /dev/null and b/public/terrain/19/858557/353867.terrain differ diff --git a/public/terrain/19/858557/353868.terrain b/public/terrain/19/858557/353868.terrain new file mode 100644 index 000000000..f87bfe247 Binary files /dev/null and b/public/terrain/19/858557/353868.terrain differ diff --git a/public/terrain/19/858557/353869.terrain b/public/terrain/19/858557/353869.terrain new file mode 100644 index 000000000..56b3b3b85 Binary files /dev/null and b/public/terrain/19/858557/353869.terrain differ diff --git a/public/terrain/19/858557/353870.terrain b/public/terrain/19/858557/353870.terrain new file mode 100644 index 000000000..efa535977 Binary files /dev/null and b/public/terrain/19/858557/353870.terrain differ diff --git a/public/terrain/19/858557/353871.terrain b/public/terrain/19/858557/353871.terrain new file mode 100644 index 000000000..781bb0018 Binary files /dev/null and b/public/terrain/19/858557/353871.terrain differ diff --git a/public/terrain/19/858557/353872.terrain b/public/terrain/19/858557/353872.terrain new file mode 100644 index 000000000..e72fef747 Binary files /dev/null and b/public/terrain/19/858557/353872.terrain differ diff --git a/public/terrain/19/858557/353873.terrain b/public/terrain/19/858557/353873.terrain new file mode 100644 index 000000000..6998972cc Binary files /dev/null and b/public/terrain/19/858557/353873.terrain differ diff --git a/public/terrain/19/858557/353874.terrain b/public/terrain/19/858557/353874.terrain new file mode 100644 index 000000000..ee96df104 Binary files /dev/null and b/public/terrain/19/858557/353874.terrain differ diff --git a/public/terrain/19/858557/353875.terrain b/public/terrain/19/858557/353875.terrain new file mode 100644 index 000000000..d91e171be Binary files /dev/null and b/public/terrain/19/858557/353875.terrain differ diff --git a/public/terrain/19/858557/353876.terrain b/public/terrain/19/858557/353876.terrain new file mode 100644 index 000000000..b123df576 Binary files /dev/null and b/public/terrain/19/858557/353876.terrain differ diff --git a/public/terrain/19/858557/353877.terrain b/public/terrain/19/858557/353877.terrain new file mode 100644 index 000000000..070c1f34f Binary files /dev/null and b/public/terrain/19/858557/353877.terrain differ diff --git a/public/terrain/19/858557/353878.terrain b/public/terrain/19/858557/353878.terrain new file mode 100644 index 000000000..ef1be471d Binary files /dev/null and b/public/terrain/19/858557/353878.terrain differ diff --git a/public/terrain/19/858557/353879.terrain b/public/terrain/19/858557/353879.terrain new file mode 100644 index 000000000..7a4158ae9 Binary files /dev/null and b/public/terrain/19/858557/353879.terrain differ diff --git a/public/terrain/19/858557/353880.terrain b/public/terrain/19/858557/353880.terrain new file mode 100644 index 000000000..77e9f3530 Binary files /dev/null and b/public/terrain/19/858557/353880.terrain differ diff --git a/public/terrain/19/858557/353881.terrain b/public/terrain/19/858557/353881.terrain new file mode 100644 index 000000000..bca4b6e8f Binary files /dev/null and b/public/terrain/19/858557/353881.terrain differ diff --git a/public/terrain/19/858557/353882.terrain b/public/terrain/19/858557/353882.terrain new file mode 100644 index 000000000..c796f5eb2 Binary files /dev/null and b/public/terrain/19/858557/353882.terrain differ diff --git a/public/terrain/19/858557/353883.terrain b/public/terrain/19/858557/353883.terrain new file mode 100644 index 000000000..b145337fb Binary files /dev/null and b/public/terrain/19/858557/353883.terrain differ diff --git a/public/terrain/19/858557/353884.terrain b/public/terrain/19/858557/353884.terrain new file mode 100644 index 000000000..9305bd847 Binary files /dev/null and b/public/terrain/19/858557/353884.terrain differ diff --git a/public/terrain/19/858557/353885.terrain b/public/terrain/19/858557/353885.terrain new file mode 100644 index 000000000..b4ca368eb Binary files /dev/null and b/public/terrain/19/858557/353885.terrain differ diff --git a/public/terrain/19/858557/353886.terrain b/public/terrain/19/858557/353886.terrain new file mode 100644 index 000000000..80497dcaa Binary files /dev/null and b/public/terrain/19/858557/353886.terrain differ diff --git a/public/terrain/19/858557/353887.terrain b/public/terrain/19/858557/353887.terrain new file mode 100644 index 000000000..3990b8ed9 Binary files /dev/null and b/public/terrain/19/858557/353887.terrain differ diff --git a/public/terrain/19/858557/353888.terrain b/public/terrain/19/858557/353888.terrain new file mode 100644 index 000000000..3355db082 Binary files /dev/null and b/public/terrain/19/858557/353888.terrain differ diff --git a/public/terrain/19/858557/353889.terrain b/public/terrain/19/858557/353889.terrain new file mode 100644 index 000000000..9af132652 Binary files /dev/null and b/public/terrain/19/858557/353889.terrain differ diff --git a/public/terrain/19/858557/353890.terrain b/public/terrain/19/858557/353890.terrain new file mode 100644 index 000000000..e61913b60 Binary files /dev/null and b/public/terrain/19/858557/353890.terrain differ diff --git a/public/terrain/19/858557/353891.terrain b/public/terrain/19/858557/353891.terrain new file mode 100644 index 000000000..e339506ee Binary files /dev/null and b/public/terrain/19/858557/353891.terrain differ diff --git a/public/terrain/19/858557/353892.terrain b/public/terrain/19/858557/353892.terrain new file mode 100644 index 000000000..69e5bae1b Binary files /dev/null and b/public/terrain/19/858557/353892.terrain differ diff --git a/public/terrain/19/858557/353893.terrain b/public/terrain/19/858557/353893.terrain new file mode 100644 index 000000000..ec098ad53 Binary files /dev/null and b/public/terrain/19/858557/353893.terrain differ diff --git a/public/terrain/19/858557/353894.terrain b/public/terrain/19/858557/353894.terrain new file mode 100644 index 000000000..9493b2ef6 Binary files /dev/null and b/public/terrain/19/858557/353894.terrain differ diff --git a/public/terrain/19/858557/353895.terrain b/public/terrain/19/858557/353895.terrain new file mode 100644 index 000000000..e4fc73561 Binary files /dev/null and b/public/terrain/19/858557/353895.terrain differ diff --git a/public/terrain/19/858557/353896.terrain b/public/terrain/19/858557/353896.terrain new file mode 100644 index 000000000..73ab963dd Binary files /dev/null and b/public/terrain/19/858557/353896.terrain differ diff --git a/public/terrain/19/858557/353897.terrain b/public/terrain/19/858557/353897.terrain new file mode 100644 index 000000000..c7cb04f16 Binary files /dev/null and b/public/terrain/19/858557/353897.terrain differ diff --git a/public/terrain/19/858557/353898.terrain b/public/terrain/19/858557/353898.terrain new file mode 100644 index 000000000..bbfe3dd07 Binary files /dev/null and b/public/terrain/19/858557/353898.terrain differ diff --git a/public/terrain/19/858557/353899.terrain b/public/terrain/19/858557/353899.terrain new file mode 100644 index 000000000..2ee26a7d8 Binary files /dev/null and b/public/terrain/19/858557/353899.terrain differ diff --git a/public/terrain/19/858557/353900.terrain b/public/terrain/19/858557/353900.terrain new file mode 100644 index 000000000..fda62e062 Binary files /dev/null and b/public/terrain/19/858557/353900.terrain differ diff --git a/public/terrain/19/858557/353901.terrain b/public/terrain/19/858557/353901.terrain new file mode 100644 index 000000000..8948a2a64 Binary files /dev/null and b/public/terrain/19/858557/353901.terrain differ diff --git a/public/terrain/19/858557/353902.terrain b/public/terrain/19/858557/353902.terrain new file mode 100644 index 000000000..b835433d0 Binary files /dev/null and b/public/terrain/19/858557/353902.terrain differ diff --git a/public/terrain/19/858557/353903.terrain b/public/terrain/19/858557/353903.terrain new file mode 100644 index 000000000..e0c01e5ab Binary files /dev/null and b/public/terrain/19/858557/353903.terrain differ diff --git a/public/terrain/19/858557/353904.terrain b/public/terrain/19/858557/353904.terrain new file mode 100644 index 000000000..d823747f8 Binary files /dev/null and b/public/terrain/19/858557/353904.terrain differ diff --git a/public/terrain/19/858557/353905.terrain b/public/terrain/19/858557/353905.terrain new file mode 100644 index 000000000..e019e7183 Binary files /dev/null and b/public/terrain/19/858557/353905.terrain differ diff --git a/public/terrain/19/858557/353906.terrain b/public/terrain/19/858557/353906.terrain new file mode 100644 index 000000000..1975d0860 Binary files /dev/null and b/public/terrain/19/858557/353906.terrain differ diff --git a/public/terrain/19/858557/353907.terrain b/public/terrain/19/858557/353907.terrain new file mode 100644 index 000000000..ebdd31422 Binary files /dev/null and b/public/terrain/19/858557/353907.terrain differ diff --git a/public/terrain/19/858557/353908.terrain b/public/terrain/19/858557/353908.terrain new file mode 100644 index 000000000..cbb475d3a Binary files /dev/null and b/public/terrain/19/858557/353908.terrain differ diff --git a/public/terrain/19/858557/353909.terrain b/public/terrain/19/858557/353909.terrain new file mode 100644 index 000000000..3bc04bb1a Binary files /dev/null and b/public/terrain/19/858557/353909.terrain differ diff --git a/public/terrain/19/858557/353910.terrain b/public/terrain/19/858557/353910.terrain new file mode 100644 index 000000000..71968ffab Binary files /dev/null and b/public/terrain/19/858557/353910.terrain differ diff --git a/public/terrain/19/858557/353911.terrain b/public/terrain/19/858557/353911.terrain new file mode 100644 index 000000000..fc8acc977 Binary files /dev/null and b/public/terrain/19/858557/353911.terrain differ diff --git a/public/terrain/19/858557/353912.terrain b/public/terrain/19/858557/353912.terrain new file mode 100644 index 000000000..fdc277bf2 Binary files /dev/null and b/public/terrain/19/858557/353912.terrain differ diff --git a/public/terrain/19/858557/353913.terrain b/public/terrain/19/858557/353913.terrain new file mode 100644 index 000000000..6b6df5e53 Binary files /dev/null and b/public/terrain/19/858557/353913.terrain differ diff --git a/public/terrain/19/858557/353914.terrain b/public/terrain/19/858557/353914.terrain new file mode 100644 index 000000000..39fe1a2ec Binary files /dev/null and b/public/terrain/19/858557/353914.terrain differ diff --git a/public/terrain/19/858557/353915.terrain b/public/terrain/19/858557/353915.terrain new file mode 100644 index 000000000..44faac816 Binary files /dev/null and b/public/terrain/19/858557/353915.terrain differ diff --git a/public/terrain/19/858557/353916.terrain b/public/terrain/19/858557/353916.terrain new file mode 100644 index 000000000..d9af1f15d Binary files /dev/null and b/public/terrain/19/858557/353916.terrain differ diff --git a/public/terrain/19/858557/353917.terrain b/public/terrain/19/858557/353917.terrain new file mode 100644 index 000000000..26e691647 Binary files /dev/null and b/public/terrain/19/858557/353917.terrain differ diff --git a/public/terrain/19/858557/353918.terrain b/public/terrain/19/858557/353918.terrain new file mode 100644 index 000000000..11c28920a Binary files /dev/null and b/public/terrain/19/858557/353918.terrain differ diff --git a/public/terrain/19/858557/353919.terrain b/public/terrain/19/858557/353919.terrain new file mode 100644 index 000000000..9afa1a9c8 Binary files /dev/null and b/public/terrain/19/858557/353919.terrain differ diff --git a/public/terrain/19/858557/353920.terrain b/public/terrain/19/858557/353920.terrain new file mode 100644 index 000000000..f71d901e4 Binary files /dev/null and b/public/terrain/19/858557/353920.terrain differ diff --git a/public/terrain/19/858557/353921.terrain b/public/terrain/19/858557/353921.terrain new file mode 100644 index 000000000..d374b723e Binary files /dev/null and b/public/terrain/19/858557/353921.terrain differ diff --git a/public/terrain/19/858557/353922.terrain b/public/terrain/19/858557/353922.terrain new file mode 100644 index 000000000..23c51c406 Binary files /dev/null and b/public/terrain/19/858557/353922.terrain differ diff --git a/public/terrain/19/858557/353923.terrain b/public/terrain/19/858557/353923.terrain new file mode 100644 index 000000000..77bb76987 Binary files /dev/null and b/public/terrain/19/858557/353923.terrain differ diff --git a/public/terrain/19/858557/353924.terrain b/public/terrain/19/858557/353924.terrain new file mode 100644 index 000000000..44a38969e Binary files /dev/null and b/public/terrain/19/858557/353924.terrain differ diff --git a/public/terrain/19/858557/353925.terrain b/public/terrain/19/858557/353925.terrain new file mode 100644 index 000000000..596e991f9 Binary files /dev/null and b/public/terrain/19/858557/353925.terrain differ diff --git a/public/terrain/19/858557/353926.terrain b/public/terrain/19/858557/353926.terrain new file mode 100644 index 000000000..931cc6594 Binary files /dev/null and b/public/terrain/19/858557/353926.terrain differ diff --git a/public/terrain/19/858557/353927.terrain b/public/terrain/19/858557/353927.terrain new file mode 100644 index 000000000..031478bad Binary files /dev/null and b/public/terrain/19/858557/353927.terrain differ diff --git a/public/terrain/19/858557/353928.terrain b/public/terrain/19/858557/353928.terrain new file mode 100644 index 000000000..43f99f417 Binary files /dev/null and b/public/terrain/19/858557/353928.terrain differ diff --git a/public/terrain/19/858557/353929.terrain b/public/terrain/19/858557/353929.terrain new file mode 100644 index 000000000..df9975194 Binary files /dev/null and b/public/terrain/19/858557/353929.terrain differ diff --git a/public/terrain/19/858557/353930.terrain b/public/terrain/19/858557/353930.terrain new file mode 100644 index 000000000..70aad1512 Binary files /dev/null and b/public/terrain/19/858557/353930.terrain differ diff --git a/public/terrain/19/858557/353931.terrain b/public/terrain/19/858557/353931.terrain new file mode 100644 index 000000000..70d28ff4a Binary files /dev/null and b/public/terrain/19/858557/353931.terrain differ diff --git a/public/terrain/19/858557/353932.terrain b/public/terrain/19/858557/353932.terrain new file mode 100644 index 000000000..3a5aec5d6 Binary files /dev/null and b/public/terrain/19/858557/353932.terrain differ diff --git a/public/terrain/19/858557/353933.terrain b/public/terrain/19/858557/353933.terrain new file mode 100644 index 000000000..0e0d3c771 Binary files /dev/null and b/public/terrain/19/858557/353933.terrain differ diff --git a/public/terrain/19/858557/353934.terrain b/public/terrain/19/858557/353934.terrain new file mode 100644 index 000000000..8564aa78b Binary files /dev/null and b/public/terrain/19/858557/353934.terrain differ diff --git a/public/terrain/19/858557/353935.terrain b/public/terrain/19/858557/353935.terrain new file mode 100644 index 000000000..ead4e1b32 Binary files /dev/null and b/public/terrain/19/858557/353935.terrain differ diff --git a/public/terrain/19/858557/353936.terrain b/public/terrain/19/858557/353936.terrain new file mode 100644 index 000000000..ac245798d Binary files /dev/null and b/public/terrain/19/858557/353936.terrain differ diff --git a/public/terrain/19/858557/353937.terrain b/public/terrain/19/858557/353937.terrain new file mode 100644 index 000000000..b7169654f Binary files /dev/null and b/public/terrain/19/858557/353937.terrain differ diff --git a/public/terrain/19/858557/353938.terrain b/public/terrain/19/858557/353938.terrain new file mode 100644 index 000000000..478af1d17 Binary files /dev/null and b/public/terrain/19/858557/353938.terrain differ diff --git a/public/terrain/19/858557/353939.terrain b/public/terrain/19/858557/353939.terrain new file mode 100644 index 000000000..9575926d4 Binary files /dev/null and b/public/terrain/19/858557/353939.terrain differ diff --git a/public/terrain/19/858557/353940.terrain b/public/terrain/19/858557/353940.terrain new file mode 100644 index 000000000..c9faa828e Binary files /dev/null and b/public/terrain/19/858557/353940.terrain differ diff --git a/public/terrain/19/858557/353941.terrain b/public/terrain/19/858557/353941.terrain new file mode 100644 index 000000000..a2656f429 Binary files /dev/null and b/public/terrain/19/858557/353941.terrain differ diff --git a/public/terrain/19/858557/353942.terrain b/public/terrain/19/858557/353942.terrain new file mode 100644 index 000000000..9cbadaa26 Binary files /dev/null and b/public/terrain/19/858557/353942.terrain differ diff --git a/public/terrain/19/858557/353943.terrain b/public/terrain/19/858557/353943.terrain new file mode 100644 index 000000000..96e10fdd7 Binary files /dev/null and b/public/terrain/19/858557/353943.terrain differ diff --git a/public/terrain/19/858557/353944.terrain b/public/terrain/19/858557/353944.terrain new file mode 100644 index 000000000..4ec5a5b3e Binary files /dev/null and b/public/terrain/19/858557/353944.terrain differ diff --git a/public/terrain/19/858557/353945.terrain b/public/terrain/19/858557/353945.terrain new file mode 100644 index 000000000..de1640df9 Binary files /dev/null and b/public/terrain/19/858557/353945.terrain differ diff --git a/public/terrain/19/858557/353946.terrain b/public/terrain/19/858557/353946.terrain new file mode 100644 index 000000000..3835adcdd Binary files /dev/null and b/public/terrain/19/858557/353946.terrain differ diff --git a/public/terrain/19/858557/353947.terrain b/public/terrain/19/858557/353947.terrain new file mode 100644 index 000000000..257b8ea70 Binary files /dev/null and b/public/terrain/19/858557/353947.terrain differ diff --git a/public/terrain/19/858557/353948.terrain b/public/terrain/19/858557/353948.terrain new file mode 100644 index 000000000..67754ea13 Binary files /dev/null and b/public/terrain/19/858557/353948.terrain differ diff --git a/public/terrain/19/858557/353949.terrain b/public/terrain/19/858557/353949.terrain new file mode 100644 index 000000000..2a3d2d1dd Binary files /dev/null and b/public/terrain/19/858557/353949.terrain differ diff --git a/public/terrain/19/858557/353950.terrain b/public/terrain/19/858557/353950.terrain new file mode 100644 index 000000000..e8de4cde2 Binary files /dev/null and b/public/terrain/19/858557/353950.terrain differ diff --git a/public/terrain/19/858557/353951.terrain b/public/terrain/19/858557/353951.terrain new file mode 100644 index 000000000..56c6f2c15 Binary files /dev/null and b/public/terrain/19/858557/353951.terrain differ diff --git a/public/terrain/19/858557/353952.terrain b/public/terrain/19/858557/353952.terrain new file mode 100644 index 000000000..be7ec3135 Binary files /dev/null and b/public/terrain/19/858557/353952.terrain differ diff --git a/public/terrain/19/858557/353953.terrain b/public/terrain/19/858557/353953.terrain new file mode 100644 index 000000000..96b826ebb Binary files /dev/null and b/public/terrain/19/858557/353953.terrain differ diff --git a/public/terrain/19/858557/353954.terrain b/public/terrain/19/858557/353954.terrain new file mode 100644 index 000000000..e2c0af876 Binary files /dev/null and b/public/terrain/19/858557/353954.terrain differ diff --git a/public/terrain/19/858557/353955.terrain b/public/terrain/19/858557/353955.terrain new file mode 100644 index 000000000..d6e757709 Binary files /dev/null and b/public/terrain/19/858557/353955.terrain differ diff --git a/public/terrain/19/858557/353956.terrain b/public/terrain/19/858557/353956.terrain new file mode 100644 index 000000000..b30856153 Binary files /dev/null and b/public/terrain/19/858557/353956.terrain differ diff --git a/public/terrain/19/858557/353957.terrain b/public/terrain/19/858557/353957.terrain new file mode 100644 index 000000000..f6e17cb19 Binary files /dev/null and b/public/terrain/19/858557/353957.terrain differ diff --git a/public/terrain/19/858557/353958.terrain b/public/terrain/19/858557/353958.terrain new file mode 100644 index 000000000..bc99de95d Binary files /dev/null and b/public/terrain/19/858557/353958.terrain differ diff --git a/public/terrain/19/858557/353959.terrain b/public/terrain/19/858557/353959.terrain new file mode 100644 index 000000000..201cca9ed Binary files /dev/null and b/public/terrain/19/858557/353959.terrain differ diff --git a/public/terrain/19/858557/353960.terrain b/public/terrain/19/858557/353960.terrain new file mode 100644 index 000000000..36c7eb796 Binary files /dev/null and b/public/terrain/19/858557/353960.terrain differ diff --git a/public/terrain/19/858557/353961.terrain b/public/terrain/19/858557/353961.terrain new file mode 100644 index 000000000..306208644 Binary files /dev/null and b/public/terrain/19/858557/353961.terrain differ diff --git a/public/terrain/19/858557/353962.terrain b/public/terrain/19/858557/353962.terrain new file mode 100644 index 000000000..0f1c09bd5 Binary files /dev/null and b/public/terrain/19/858557/353962.terrain differ diff --git a/public/terrain/19/858557/353963.terrain b/public/terrain/19/858557/353963.terrain new file mode 100644 index 000000000..83beac13a Binary files /dev/null and b/public/terrain/19/858557/353963.terrain differ diff --git a/public/terrain/19/858557/353964.terrain b/public/terrain/19/858557/353964.terrain new file mode 100644 index 000000000..d23cd60ad Binary files /dev/null and b/public/terrain/19/858557/353964.terrain differ diff --git a/public/terrain/19/858557/353965.terrain b/public/terrain/19/858557/353965.terrain new file mode 100644 index 000000000..f93591bb0 Binary files /dev/null and b/public/terrain/19/858557/353965.terrain differ diff --git a/public/terrain/19/858557/353966.terrain b/public/terrain/19/858557/353966.terrain new file mode 100644 index 000000000..0040ec510 Binary files /dev/null and b/public/terrain/19/858557/353966.terrain differ diff --git a/public/terrain/19/858557/353967.terrain b/public/terrain/19/858557/353967.terrain new file mode 100644 index 000000000..d5cc41a68 Binary files /dev/null and b/public/terrain/19/858557/353967.terrain differ diff --git a/public/terrain/19/858557/353968.terrain b/public/terrain/19/858557/353968.terrain new file mode 100644 index 000000000..6b53f4775 Binary files /dev/null and b/public/terrain/19/858557/353968.terrain differ diff --git a/public/terrain/19/858557/353969.terrain b/public/terrain/19/858557/353969.terrain new file mode 100644 index 000000000..c3d52d181 Binary files /dev/null and b/public/terrain/19/858557/353969.terrain differ diff --git a/public/terrain/19/858557/353970.terrain b/public/terrain/19/858557/353970.terrain new file mode 100644 index 000000000..fb554efc0 Binary files /dev/null and b/public/terrain/19/858557/353970.terrain differ diff --git a/public/terrain/19/858557/353971.terrain b/public/terrain/19/858557/353971.terrain new file mode 100644 index 000000000..52a194504 Binary files /dev/null and b/public/terrain/19/858557/353971.terrain differ diff --git a/public/terrain/19/858557/353972.terrain b/public/terrain/19/858557/353972.terrain new file mode 100644 index 000000000..a570821c8 Binary files /dev/null and b/public/terrain/19/858557/353972.terrain differ diff --git a/public/terrain/19/858557/353973.terrain b/public/terrain/19/858557/353973.terrain new file mode 100644 index 000000000..af97e7c5c Binary files /dev/null and b/public/terrain/19/858557/353973.terrain differ diff --git a/public/terrain/19/858557/353974.terrain b/public/terrain/19/858557/353974.terrain new file mode 100644 index 000000000..999cd5dce Binary files /dev/null and b/public/terrain/19/858557/353974.terrain differ diff --git a/public/terrain/19/858557/353975.terrain b/public/terrain/19/858557/353975.terrain new file mode 100644 index 000000000..41b101eea Binary files /dev/null and b/public/terrain/19/858557/353975.terrain differ diff --git a/public/terrain/19/858557/353976.terrain b/public/terrain/19/858557/353976.terrain new file mode 100644 index 000000000..20e14ca4d Binary files /dev/null and b/public/terrain/19/858557/353976.terrain differ diff --git a/public/terrain/19/858557/353977.terrain b/public/terrain/19/858557/353977.terrain new file mode 100644 index 000000000..ee3db70c4 Binary files /dev/null and b/public/terrain/19/858557/353977.terrain differ diff --git a/public/terrain/19/858557/353978.terrain b/public/terrain/19/858557/353978.terrain new file mode 100644 index 000000000..f705980d9 Binary files /dev/null and b/public/terrain/19/858557/353978.terrain differ diff --git a/public/terrain/19/858557/353979.terrain b/public/terrain/19/858557/353979.terrain new file mode 100644 index 000000000..c20478d50 Binary files /dev/null and b/public/terrain/19/858557/353979.terrain differ diff --git a/public/terrain/19/858557/353980.terrain b/public/terrain/19/858557/353980.terrain new file mode 100644 index 000000000..01f4d612b Binary files /dev/null and b/public/terrain/19/858557/353980.terrain differ diff --git a/public/terrain/19/858557/353981.terrain b/public/terrain/19/858557/353981.terrain new file mode 100644 index 000000000..da1e9dd1f Binary files /dev/null and b/public/terrain/19/858557/353981.terrain differ diff --git a/public/terrain/19/858557/353982.terrain b/public/terrain/19/858557/353982.terrain new file mode 100644 index 000000000..e07afbac7 Binary files /dev/null and b/public/terrain/19/858557/353982.terrain differ diff --git a/public/terrain/19/858557/353983.terrain b/public/terrain/19/858557/353983.terrain new file mode 100644 index 000000000..7a05f0c92 Binary files /dev/null and b/public/terrain/19/858557/353983.terrain differ diff --git a/public/terrain/19/858557/353984.terrain b/public/terrain/19/858557/353984.terrain new file mode 100644 index 000000000..8f4071701 Binary files /dev/null and b/public/terrain/19/858557/353984.terrain differ diff --git a/public/terrain/19/858557/353985.terrain b/public/terrain/19/858557/353985.terrain new file mode 100644 index 000000000..afb7a13b0 Binary files /dev/null and b/public/terrain/19/858557/353985.terrain differ diff --git a/public/terrain/19/858557/353986.terrain b/public/terrain/19/858557/353986.terrain new file mode 100644 index 000000000..5723c022e Binary files /dev/null and b/public/terrain/19/858557/353986.terrain differ diff --git a/public/terrain/19/858557/353987.terrain b/public/terrain/19/858557/353987.terrain new file mode 100644 index 000000000..34fbe2711 Binary files /dev/null and b/public/terrain/19/858557/353987.terrain differ diff --git a/public/terrain/19/858557/353988.terrain b/public/terrain/19/858557/353988.terrain new file mode 100644 index 000000000..45a62f4a3 Binary files /dev/null and b/public/terrain/19/858557/353988.terrain differ diff --git a/public/terrain/19/858557/353989.terrain b/public/terrain/19/858557/353989.terrain new file mode 100644 index 000000000..dee402634 Binary files /dev/null and b/public/terrain/19/858557/353989.terrain differ diff --git a/public/terrain/19/858557/353990.terrain b/public/terrain/19/858557/353990.terrain new file mode 100644 index 000000000..f0f1a8170 Binary files /dev/null and b/public/terrain/19/858557/353990.terrain differ diff --git a/public/terrain/19/858557/353991.terrain b/public/terrain/19/858557/353991.terrain new file mode 100644 index 000000000..64f1c78e2 Binary files /dev/null and b/public/terrain/19/858557/353991.terrain differ diff --git a/public/terrain/19/858557/353992.terrain b/public/terrain/19/858557/353992.terrain new file mode 100644 index 000000000..cc2285787 Binary files /dev/null and b/public/terrain/19/858557/353992.terrain differ diff --git a/public/terrain/19/858557/353993.terrain b/public/terrain/19/858557/353993.terrain new file mode 100644 index 000000000..dbaccc0f3 Binary files /dev/null and b/public/terrain/19/858557/353993.terrain differ diff --git a/public/terrain/19/858557/353994.terrain b/public/terrain/19/858557/353994.terrain new file mode 100644 index 000000000..a693bf91a Binary files /dev/null and b/public/terrain/19/858557/353994.terrain differ diff --git a/public/terrain/19/858557/353995.terrain b/public/terrain/19/858557/353995.terrain new file mode 100644 index 000000000..a140d63f4 Binary files /dev/null and b/public/terrain/19/858557/353995.terrain differ diff --git a/public/terrain/19/858557/353996.terrain b/public/terrain/19/858557/353996.terrain new file mode 100644 index 000000000..c4d511939 Binary files /dev/null and b/public/terrain/19/858557/353996.terrain differ diff --git a/public/terrain/19/858557/353997.terrain b/public/terrain/19/858557/353997.terrain new file mode 100644 index 000000000..6a89085a3 Binary files /dev/null and b/public/terrain/19/858557/353997.terrain differ diff --git a/public/terrain/19/858557/353998.terrain b/public/terrain/19/858557/353998.terrain new file mode 100644 index 000000000..3c32c55c1 Binary files /dev/null and b/public/terrain/19/858557/353998.terrain differ diff --git a/public/terrain/19/858557/353999.terrain b/public/terrain/19/858557/353999.terrain new file mode 100644 index 000000000..15e29bd36 Binary files /dev/null and b/public/terrain/19/858557/353999.terrain differ diff --git a/public/terrain/19/858557/354000.terrain b/public/terrain/19/858557/354000.terrain new file mode 100644 index 000000000..9757daef3 Binary files /dev/null and b/public/terrain/19/858557/354000.terrain differ diff --git a/public/terrain/19/858557/354001.terrain b/public/terrain/19/858557/354001.terrain new file mode 100644 index 000000000..381305b99 Binary files /dev/null and b/public/terrain/19/858557/354001.terrain differ diff --git a/public/terrain/19/858557/354002.terrain b/public/terrain/19/858557/354002.terrain new file mode 100644 index 000000000..2bfe6ba59 Binary files /dev/null and b/public/terrain/19/858557/354002.terrain differ diff --git a/public/terrain/19/858557/354003.terrain b/public/terrain/19/858557/354003.terrain new file mode 100644 index 000000000..0a2b64a2d Binary files /dev/null and b/public/terrain/19/858557/354003.terrain differ diff --git a/public/terrain/19/858557/354004.terrain b/public/terrain/19/858557/354004.terrain new file mode 100644 index 000000000..7391ad355 Binary files /dev/null and b/public/terrain/19/858557/354004.terrain differ diff --git a/public/terrain/19/858557/354005.terrain b/public/terrain/19/858557/354005.terrain new file mode 100644 index 000000000..3cb27b95c Binary files /dev/null and b/public/terrain/19/858557/354005.terrain differ diff --git a/public/terrain/19/858557/354006.terrain b/public/terrain/19/858557/354006.terrain new file mode 100644 index 000000000..e38f92293 Binary files /dev/null and b/public/terrain/19/858557/354006.terrain differ diff --git a/public/terrain/19/858557/354007.terrain b/public/terrain/19/858557/354007.terrain new file mode 100644 index 000000000..8e6cfcf9e Binary files /dev/null and b/public/terrain/19/858557/354007.terrain differ diff --git a/public/terrain/19/858557/354008.terrain b/public/terrain/19/858557/354008.terrain new file mode 100644 index 000000000..7c71e1a37 Binary files /dev/null and b/public/terrain/19/858557/354008.terrain differ diff --git a/public/terrain/19/858557/354009.terrain b/public/terrain/19/858557/354009.terrain new file mode 100644 index 000000000..4986654b7 Binary files /dev/null and b/public/terrain/19/858557/354009.terrain differ diff --git a/public/terrain/19/858557/354010.terrain b/public/terrain/19/858557/354010.terrain new file mode 100644 index 000000000..f543c8329 Binary files /dev/null and b/public/terrain/19/858557/354010.terrain differ diff --git a/public/terrain/19/858557/354011.terrain b/public/terrain/19/858557/354011.terrain new file mode 100644 index 000000000..2435eb63e Binary files /dev/null and b/public/terrain/19/858557/354011.terrain differ diff --git a/public/terrain/19/858557/354012.terrain b/public/terrain/19/858557/354012.terrain new file mode 100644 index 000000000..c587fad0c Binary files /dev/null and b/public/terrain/19/858557/354012.terrain differ diff --git a/public/terrain/19/858557/354013.terrain b/public/terrain/19/858557/354013.terrain new file mode 100644 index 000000000..bbb09aab4 Binary files /dev/null and b/public/terrain/19/858557/354013.terrain differ diff --git a/public/terrain/19/858557/354014.terrain b/public/terrain/19/858557/354014.terrain new file mode 100644 index 000000000..74fd5ce99 Binary files /dev/null and b/public/terrain/19/858557/354014.terrain differ diff --git a/public/terrain/19/858557/354015.terrain b/public/terrain/19/858557/354015.terrain new file mode 100644 index 000000000..1cdbb2861 Binary files /dev/null and b/public/terrain/19/858557/354015.terrain differ diff --git a/public/terrain/19/858557/354016.terrain b/public/terrain/19/858557/354016.terrain new file mode 100644 index 000000000..cbacd5ebb Binary files /dev/null and b/public/terrain/19/858557/354016.terrain differ diff --git a/public/terrain/19/858557/354017.terrain b/public/terrain/19/858557/354017.terrain new file mode 100644 index 000000000..c1a1b4f4b Binary files /dev/null and b/public/terrain/19/858557/354017.terrain differ diff --git a/public/terrain/19/858557/354018.terrain b/public/terrain/19/858557/354018.terrain new file mode 100644 index 000000000..fd77119f3 Binary files /dev/null and b/public/terrain/19/858557/354018.terrain differ diff --git a/public/terrain/19/858557/354019.terrain b/public/terrain/19/858557/354019.terrain new file mode 100644 index 000000000..b8e729f16 Binary files /dev/null and b/public/terrain/19/858557/354019.terrain differ diff --git a/public/terrain/19/858557/354020.terrain b/public/terrain/19/858557/354020.terrain new file mode 100644 index 000000000..51aa7fd32 Binary files /dev/null and b/public/terrain/19/858557/354020.terrain differ diff --git a/public/terrain/19/858557/354021.terrain b/public/terrain/19/858557/354021.terrain new file mode 100644 index 000000000..4d4df8143 Binary files /dev/null and b/public/terrain/19/858557/354021.terrain differ diff --git a/public/terrain/19/858557/354022.terrain b/public/terrain/19/858557/354022.terrain new file mode 100644 index 000000000..a6fc524aa Binary files /dev/null and b/public/terrain/19/858557/354022.terrain differ diff --git a/public/terrain/19/858557/354023.terrain b/public/terrain/19/858557/354023.terrain new file mode 100644 index 000000000..806a93a76 Binary files /dev/null and b/public/terrain/19/858557/354023.terrain differ diff --git a/public/terrain/19/858557/354024.terrain b/public/terrain/19/858557/354024.terrain new file mode 100644 index 000000000..3f1ed28df Binary files /dev/null and b/public/terrain/19/858557/354024.terrain differ diff --git a/public/terrain/19/858557/354025.terrain b/public/terrain/19/858557/354025.terrain new file mode 100644 index 000000000..83ab4d995 Binary files /dev/null and b/public/terrain/19/858557/354025.terrain differ diff --git a/public/terrain/19/858557/354026.terrain b/public/terrain/19/858557/354026.terrain new file mode 100644 index 000000000..d75a1e29d Binary files /dev/null and b/public/terrain/19/858557/354026.terrain differ diff --git a/public/terrain/19/858557/354027.terrain b/public/terrain/19/858557/354027.terrain new file mode 100644 index 000000000..6e3012a47 Binary files /dev/null and b/public/terrain/19/858557/354027.terrain differ diff --git a/public/terrain/19/858557/354028.terrain b/public/terrain/19/858557/354028.terrain new file mode 100644 index 000000000..51a0080b0 Binary files /dev/null and b/public/terrain/19/858557/354028.terrain differ diff --git a/public/terrain/19/858557/354029.terrain b/public/terrain/19/858557/354029.terrain new file mode 100644 index 000000000..d2acf9684 Binary files /dev/null and b/public/terrain/19/858557/354029.terrain differ diff --git a/public/terrain/19/858557/354030.terrain b/public/terrain/19/858557/354030.terrain new file mode 100644 index 000000000..3a8310d3b Binary files /dev/null and b/public/terrain/19/858557/354030.terrain differ diff --git a/public/terrain/19/858557/354031.terrain b/public/terrain/19/858557/354031.terrain new file mode 100644 index 000000000..47c4ed441 Binary files /dev/null and b/public/terrain/19/858557/354031.terrain differ diff --git a/public/terrain/19/858557/354032.terrain b/public/terrain/19/858557/354032.terrain new file mode 100644 index 000000000..a9e5e1b5f Binary files /dev/null and b/public/terrain/19/858557/354032.terrain differ diff --git a/public/terrain/19/858557/354033.terrain b/public/terrain/19/858557/354033.terrain new file mode 100644 index 000000000..b731fc5e5 Binary files /dev/null and b/public/terrain/19/858557/354033.terrain differ diff --git a/public/terrain/19/858557/354034.terrain b/public/terrain/19/858557/354034.terrain new file mode 100644 index 000000000..6f067ea2e Binary files /dev/null and b/public/terrain/19/858557/354034.terrain differ diff --git a/public/terrain/19/858557/354035.terrain b/public/terrain/19/858557/354035.terrain new file mode 100644 index 000000000..396dc87ac Binary files /dev/null and b/public/terrain/19/858557/354035.terrain differ diff --git a/public/terrain/19/858557/354036.terrain b/public/terrain/19/858557/354036.terrain new file mode 100644 index 000000000..46a1a8d80 Binary files /dev/null and b/public/terrain/19/858557/354036.terrain differ diff --git a/public/terrain/19/858557/354037.terrain b/public/terrain/19/858557/354037.terrain new file mode 100644 index 000000000..72acebb24 Binary files /dev/null and b/public/terrain/19/858557/354037.terrain differ diff --git a/public/terrain/19/858557/354038.terrain b/public/terrain/19/858557/354038.terrain new file mode 100644 index 000000000..c70a809c4 Binary files /dev/null and b/public/terrain/19/858557/354038.terrain differ diff --git a/public/terrain/19/858557/354039.terrain b/public/terrain/19/858557/354039.terrain new file mode 100644 index 000000000..601ba7328 Binary files /dev/null and b/public/terrain/19/858557/354039.terrain differ diff --git a/public/terrain/19/858557/354040.terrain b/public/terrain/19/858557/354040.terrain new file mode 100644 index 000000000..20ead526b Binary files /dev/null and b/public/terrain/19/858557/354040.terrain differ diff --git a/public/terrain/19/858557/354041.terrain b/public/terrain/19/858557/354041.terrain new file mode 100644 index 000000000..fb7a86347 Binary files /dev/null and b/public/terrain/19/858557/354041.terrain differ diff --git a/public/terrain/19/858557/354042.terrain b/public/terrain/19/858557/354042.terrain new file mode 100644 index 000000000..1b96ef138 Binary files /dev/null and b/public/terrain/19/858557/354042.terrain differ diff --git a/public/terrain/19/858557/354043.terrain b/public/terrain/19/858557/354043.terrain new file mode 100644 index 000000000..d4da72afb Binary files /dev/null and b/public/terrain/19/858557/354043.terrain differ diff --git a/public/terrain/19/858557/354044.terrain b/public/terrain/19/858557/354044.terrain new file mode 100644 index 000000000..71d7265b1 Binary files /dev/null and b/public/terrain/19/858557/354044.terrain differ diff --git a/public/terrain/19/858557/354045.terrain b/public/terrain/19/858557/354045.terrain new file mode 100644 index 000000000..46e548185 Binary files /dev/null and b/public/terrain/19/858557/354045.terrain differ diff --git a/public/terrain/19/858557/354046.terrain b/public/terrain/19/858557/354046.terrain new file mode 100644 index 000000000..b79edebf6 Binary files /dev/null and b/public/terrain/19/858557/354046.terrain differ diff --git a/public/terrain/19/858557/354047.terrain b/public/terrain/19/858557/354047.terrain new file mode 100644 index 000000000..8fe1ff35f Binary files /dev/null and b/public/terrain/19/858557/354047.terrain differ diff --git a/public/terrain/19/858557/354048.terrain b/public/terrain/19/858557/354048.terrain new file mode 100644 index 000000000..40a5d97a0 Binary files /dev/null and b/public/terrain/19/858557/354048.terrain differ diff --git a/public/terrain/19/858557/354049.terrain b/public/terrain/19/858557/354049.terrain new file mode 100644 index 000000000..3569b0c7d Binary files /dev/null and b/public/terrain/19/858557/354049.terrain differ diff --git a/public/terrain/19/858557/354050.terrain b/public/terrain/19/858557/354050.terrain new file mode 100644 index 000000000..cce4ffc10 Binary files /dev/null and b/public/terrain/19/858557/354050.terrain differ diff --git a/public/terrain/19/858557/354051.terrain b/public/terrain/19/858557/354051.terrain new file mode 100644 index 000000000..1e4ae8c3c Binary files /dev/null and b/public/terrain/19/858557/354051.terrain differ diff --git a/public/terrain/19/858557/354052.terrain b/public/terrain/19/858557/354052.terrain new file mode 100644 index 000000000..5301241fc Binary files /dev/null and b/public/terrain/19/858557/354052.terrain differ diff --git a/public/terrain/19/858557/354053.terrain b/public/terrain/19/858557/354053.terrain new file mode 100644 index 000000000..275b48727 Binary files /dev/null and b/public/terrain/19/858557/354053.terrain differ diff --git a/public/terrain/19/858557/354054.terrain b/public/terrain/19/858557/354054.terrain new file mode 100644 index 000000000..4cb39e5d9 Binary files /dev/null and b/public/terrain/19/858557/354054.terrain differ diff --git a/public/terrain/19/858557/354055.terrain b/public/terrain/19/858557/354055.terrain new file mode 100644 index 000000000..819b7519b Binary files /dev/null and b/public/terrain/19/858557/354055.terrain differ diff --git a/public/terrain/19/858557/354056.terrain b/public/terrain/19/858557/354056.terrain new file mode 100644 index 000000000..0533a87b7 Binary files /dev/null and b/public/terrain/19/858557/354056.terrain differ diff --git a/public/terrain/19/858557/354057.terrain b/public/terrain/19/858557/354057.terrain new file mode 100644 index 000000000..c009eeb7f Binary files /dev/null and b/public/terrain/19/858557/354057.terrain differ diff --git a/public/terrain/19/858557/354058.terrain b/public/terrain/19/858557/354058.terrain new file mode 100644 index 000000000..a4f1d80c0 Binary files /dev/null and b/public/terrain/19/858557/354058.terrain differ diff --git a/public/terrain/19/858557/354059.terrain b/public/terrain/19/858557/354059.terrain new file mode 100644 index 000000000..8e45acf50 Binary files /dev/null and b/public/terrain/19/858557/354059.terrain differ diff --git a/public/terrain/19/858558/353743.terrain b/public/terrain/19/858558/353743.terrain new file mode 100644 index 000000000..9a5a92d30 Binary files /dev/null and b/public/terrain/19/858558/353743.terrain differ diff --git a/public/terrain/19/858558/353744.terrain b/public/terrain/19/858558/353744.terrain new file mode 100644 index 000000000..041bdf609 Binary files /dev/null and b/public/terrain/19/858558/353744.terrain differ diff --git a/public/terrain/19/858558/353745.terrain b/public/terrain/19/858558/353745.terrain new file mode 100644 index 000000000..732f6f378 Binary files /dev/null and b/public/terrain/19/858558/353745.terrain differ diff --git a/public/terrain/19/858558/353746.terrain b/public/terrain/19/858558/353746.terrain new file mode 100644 index 000000000..bf243ea64 Binary files /dev/null and b/public/terrain/19/858558/353746.terrain differ diff --git a/public/terrain/19/858558/353747.terrain b/public/terrain/19/858558/353747.terrain new file mode 100644 index 000000000..6a06a6045 Binary files /dev/null and b/public/terrain/19/858558/353747.terrain differ diff --git a/public/terrain/19/858558/353748.terrain b/public/terrain/19/858558/353748.terrain new file mode 100644 index 000000000..3dd5e9d11 Binary files /dev/null and b/public/terrain/19/858558/353748.terrain differ diff --git a/public/terrain/19/858558/353749.terrain b/public/terrain/19/858558/353749.terrain new file mode 100644 index 000000000..a40d0704e Binary files /dev/null and b/public/terrain/19/858558/353749.terrain differ diff --git a/public/terrain/19/858558/353750.terrain b/public/terrain/19/858558/353750.terrain new file mode 100644 index 000000000..ced8c9b4f Binary files /dev/null and b/public/terrain/19/858558/353750.terrain differ diff --git a/public/terrain/19/858558/353751.terrain b/public/terrain/19/858558/353751.terrain new file mode 100644 index 000000000..ac892e286 Binary files /dev/null and b/public/terrain/19/858558/353751.terrain differ diff --git a/public/terrain/19/858558/353752.terrain b/public/terrain/19/858558/353752.terrain new file mode 100644 index 000000000..8686385e9 Binary files /dev/null and b/public/terrain/19/858558/353752.terrain differ diff --git a/public/terrain/19/858558/353753.terrain b/public/terrain/19/858558/353753.terrain new file mode 100644 index 000000000..62f6b48ca Binary files /dev/null and b/public/terrain/19/858558/353753.terrain differ diff --git a/public/terrain/19/858558/353754.terrain b/public/terrain/19/858558/353754.terrain new file mode 100644 index 000000000..add4797b6 Binary files /dev/null and b/public/terrain/19/858558/353754.terrain differ diff --git a/public/terrain/19/858558/353755.terrain b/public/terrain/19/858558/353755.terrain new file mode 100644 index 000000000..0334362d0 Binary files /dev/null and b/public/terrain/19/858558/353755.terrain differ diff --git a/public/terrain/19/858558/353756.terrain b/public/terrain/19/858558/353756.terrain new file mode 100644 index 000000000..ee4e4ccb9 Binary files /dev/null and b/public/terrain/19/858558/353756.terrain differ diff --git a/public/terrain/19/858558/353757.terrain b/public/terrain/19/858558/353757.terrain new file mode 100644 index 000000000..2a54db8c9 Binary files /dev/null and b/public/terrain/19/858558/353757.terrain differ diff --git a/public/terrain/19/858558/353758.terrain b/public/terrain/19/858558/353758.terrain new file mode 100644 index 000000000..930019fd5 Binary files /dev/null and b/public/terrain/19/858558/353758.terrain differ diff --git a/public/terrain/19/858558/353759.terrain b/public/terrain/19/858558/353759.terrain new file mode 100644 index 000000000..ef967ed94 Binary files /dev/null and b/public/terrain/19/858558/353759.terrain differ diff --git a/public/terrain/19/858558/353760.terrain b/public/terrain/19/858558/353760.terrain new file mode 100644 index 000000000..f0a52ac85 Binary files /dev/null and b/public/terrain/19/858558/353760.terrain differ diff --git a/public/terrain/19/858558/353761.terrain b/public/terrain/19/858558/353761.terrain new file mode 100644 index 000000000..cea813f30 Binary files /dev/null and b/public/terrain/19/858558/353761.terrain differ diff --git a/public/terrain/19/858558/353762.terrain b/public/terrain/19/858558/353762.terrain new file mode 100644 index 000000000..042d224a6 Binary files /dev/null and b/public/terrain/19/858558/353762.terrain differ diff --git a/public/terrain/19/858558/353763.terrain b/public/terrain/19/858558/353763.terrain new file mode 100644 index 000000000..9f9a65f26 Binary files /dev/null and b/public/terrain/19/858558/353763.terrain differ diff --git a/public/terrain/19/858558/353764.terrain b/public/terrain/19/858558/353764.terrain new file mode 100644 index 000000000..318908707 Binary files /dev/null and b/public/terrain/19/858558/353764.terrain differ diff --git a/public/terrain/19/858558/353765.terrain b/public/terrain/19/858558/353765.terrain new file mode 100644 index 000000000..87d3cecbb Binary files /dev/null and b/public/terrain/19/858558/353765.terrain differ diff --git a/public/terrain/19/858558/353766.terrain b/public/terrain/19/858558/353766.terrain new file mode 100644 index 000000000..fb033607a Binary files /dev/null and b/public/terrain/19/858558/353766.terrain differ diff --git a/public/terrain/19/858558/353767.terrain b/public/terrain/19/858558/353767.terrain new file mode 100644 index 000000000..c81739a35 Binary files /dev/null and b/public/terrain/19/858558/353767.terrain differ diff --git a/public/terrain/19/858558/353768.terrain b/public/terrain/19/858558/353768.terrain new file mode 100644 index 000000000..fcb113f6c Binary files /dev/null and b/public/terrain/19/858558/353768.terrain differ diff --git a/public/terrain/19/858558/353769.terrain b/public/terrain/19/858558/353769.terrain new file mode 100644 index 000000000..2ad6733d9 Binary files /dev/null and b/public/terrain/19/858558/353769.terrain differ diff --git a/public/terrain/19/858558/353770.terrain b/public/terrain/19/858558/353770.terrain new file mode 100644 index 000000000..fc5daee5c Binary files /dev/null and b/public/terrain/19/858558/353770.terrain differ diff --git a/public/terrain/19/858558/353771.terrain b/public/terrain/19/858558/353771.terrain new file mode 100644 index 000000000..8643e1579 Binary files /dev/null and b/public/terrain/19/858558/353771.terrain differ diff --git a/public/terrain/19/858558/353772.terrain b/public/terrain/19/858558/353772.terrain new file mode 100644 index 000000000..2b16e027e Binary files /dev/null and b/public/terrain/19/858558/353772.terrain differ diff --git a/public/terrain/19/858558/353773.terrain b/public/terrain/19/858558/353773.terrain new file mode 100644 index 000000000..c62b94f22 Binary files /dev/null and b/public/terrain/19/858558/353773.terrain differ diff --git a/public/terrain/19/858558/353774.terrain b/public/terrain/19/858558/353774.terrain new file mode 100644 index 000000000..7c47044c3 Binary files /dev/null and b/public/terrain/19/858558/353774.terrain differ diff --git a/public/terrain/19/858558/353775.terrain b/public/terrain/19/858558/353775.terrain new file mode 100644 index 000000000..3670f7694 Binary files /dev/null and b/public/terrain/19/858558/353775.terrain differ diff --git a/public/terrain/19/858558/353776.terrain b/public/terrain/19/858558/353776.terrain new file mode 100644 index 000000000..ec3be61f7 Binary files /dev/null and b/public/terrain/19/858558/353776.terrain differ diff --git a/public/terrain/19/858558/353777.terrain b/public/terrain/19/858558/353777.terrain new file mode 100644 index 000000000..47c6dac6e Binary files /dev/null and b/public/terrain/19/858558/353777.terrain differ diff --git a/public/terrain/19/858558/353778.terrain b/public/terrain/19/858558/353778.terrain new file mode 100644 index 000000000..c8f506be1 Binary files /dev/null and b/public/terrain/19/858558/353778.terrain differ diff --git a/public/terrain/19/858558/353779.terrain b/public/terrain/19/858558/353779.terrain new file mode 100644 index 000000000..967d0a0b3 Binary files /dev/null and b/public/terrain/19/858558/353779.terrain differ diff --git a/public/terrain/19/858558/353780.terrain b/public/terrain/19/858558/353780.terrain new file mode 100644 index 000000000..0245af01b Binary files /dev/null and b/public/terrain/19/858558/353780.terrain differ diff --git a/public/terrain/19/858558/353781.terrain b/public/terrain/19/858558/353781.terrain new file mode 100644 index 000000000..a432dab78 Binary files /dev/null and b/public/terrain/19/858558/353781.terrain differ diff --git a/public/terrain/19/858558/353782.terrain b/public/terrain/19/858558/353782.terrain new file mode 100644 index 000000000..c9d6f544f Binary files /dev/null and b/public/terrain/19/858558/353782.terrain differ diff --git a/public/terrain/19/858558/353783.terrain b/public/terrain/19/858558/353783.terrain new file mode 100644 index 000000000..5a017a3b9 Binary files /dev/null and b/public/terrain/19/858558/353783.terrain differ diff --git a/public/terrain/19/858558/353784.terrain b/public/terrain/19/858558/353784.terrain new file mode 100644 index 000000000..1cdc7d51c Binary files /dev/null and b/public/terrain/19/858558/353784.terrain differ diff --git a/public/terrain/19/858558/353785.terrain b/public/terrain/19/858558/353785.terrain new file mode 100644 index 000000000..f46922a58 Binary files /dev/null and b/public/terrain/19/858558/353785.terrain differ diff --git a/public/terrain/19/858558/353786.terrain b/public/terrain/19/858558/353786.terrain new file mode 100644 index 000000000..85d03bfc9 Binary files /dev/null and b/public/terrain/19/858558/353786.terrain differ diff --git a/public/terrain/19/858558/353787.terrain b/public/terrain/19/858558/353787.terrain new file mode 100644 index 000000000..a0549dec6 Binary files /dev/null and b/public/terrain/19/858558/353787.terrain differ diff --git a/public/terrain/19/858558/353788.terrain b/public/terrain/19/858558/353788.terrain new file mode 100644 index 000000000..43ccbf8bc Binary files /dev/null and b/public/terrain/19/858558/353788.terrain differ diff --git a/public/terrain/19/858558/353789.terrain b/public/terrain/19/858558/353789.terrain new file mode 100644 index 000000000..c3b3ed5e8 Binary files /dev/null and b/public/terrain/19/858558/353789.terrain differ diff --git a/public/terrain/19/858558/353790.terrain b/public/terrain/19/858558/353790.terrain new file mode 100644 index 000000000..9b75178ee Binary files /dev/null and b/public/terrain/19/858558/353790.terrain differ diff --git a/public/terrain/19/858558/353791.terrain b/public/terrain/19/858558/353791.terrain new file mode 100644 index 000000000..686c28c63 Binary files /dev/null and b/public/terrain/19/858558/353791.terrain differ diff --git a/public/terrain/19/858558/353792.terrain b/public/terrain/19/858558/353792.terrain new file mode 100644 index 000000000..00b77c4f1 Binary files /dev/null and b/public/terrain/19/858558/353792.terrain differ diff --git a/public/terrain/19/858558/353793.terrain b/public/terrain/19/858558/353793.terrain new file mode 100644 index 000000000..f7367796c Binary files /dev/null and b/public/terrain/19/858558/353793.terrain differ diff --git a/public/terrain/19/858558/353794.terrain b/public/terrain/19/858558/353794.terrain new file mode 100644 index 000000000..a4f5bbaf2 Binary files /dev/null and b/public/terrain/19/858558/353794.terrain differ diff --git a/public/terrain/19/858558/353795.terrain b/public/terrain/19/858558/353795.terrain new file mode 100644 index 000000000..884251013 Binary files /dev/null and b/public/terrain/19/858558/353795.terrain differ diff --git a/public/terrain/19/858558/353796.terrain b/public/terrain/19/858558/353796.terrain new file mode 100644 index 000000000..eaac204b6 Binary files /dev/null and b/public/terrain/19/858558/353796.terrain differ diff --git a/public/terrain/19/858558/353797.terrain b/public/terrain/19/858558/353797.terrain new file mode 100644 index 000000000..3c297d136 Binary files /dev/null and b/public/terrain/19/858558/353797.terrain differ diff --git a/public/terrain/19/858558/353798.terrain b/public/terrain/19/858558/353798.terrain new file mode 100644 index 000000000..8f33fa540 Binary files /dev/null and b/public/terrain/19/858558/353798.terrain differ diff --git a/public/terrain/19/858558/353799.terrain b/public/terrain/19/858558/353799.terrain new file mode 100644 index 000000000..b481ff220 Binary files /dev/null and b/public/terrain/19/858558/353799.terrain differ diff --git a/public/terrain/19/858558/353800.terrain b/public/terrain/19/858558/353800.terrain new file mode 100644 index 000000000..3b71700b1 Binary files /dev/null and b/public/terrain/19/858558/353800.terrain differ diff --git a/public/terrain/19/858558/353801.terrain b/public/terrain/19/858558/353801.terrain new file mode 100644 index 000000000..227ede4ca Binary files /dev/null and b/public/terrain/19/858558/353801.terrain differ diff --git a/public/terrain/19/858558/353802.terrain b/public/terrain/19/858558/353802.terrain new file mode 100644 index 000000000..2c1a5353f Binary files /dev/null and b/public/terrain/19/858558/353802.terrain differ diff --git a/public/terrain/19/858558/353803.terrain b/public/terrain/19/858558/353803.terrain new file mode 100644 index 000000000..3b2ffa901 Binary files /dev/null and b/public/terrain/19/858558/353803.terrain differ diff --git a/public/terrain/19/858558/353804.terrain b/public/terrain/19/858558/353804.terrain new file mode 100644 index 000000000..7a91a31db Binary files /dev/null and b/public/terrain/19/858558/353804.terrain differ diff --git a/public/terrain/19/858558/353805.terrain b/public/terrain/19/858558/353805.terrain new file mode 100644 index 000000000..176b2f904 Binary files /dev/null and b/public/terrain/19/858558/353805.terrain differ diff --git a/public/terrain/19/858558/353806.terrain b/public/terrain/19/858558/353806.terrain new file mode 100644 index 000000000..eddaf772d Binary files /dev/null and b/public/terrain/19/858558/353806.terrain differ diff --git a/public/terrain/19/858558/353807.terrain b/public/terrain/19/858558/353807.terrain new file mode 100644 index 000000000..9e652e19e Binary files /dev/null and b/public/terrain/19/858558/353807.terrain differ diff --git a/public/terrain/19/858558/353808.terrain b/public/terrain/19/858558/353808.terrain new file mode 100644 index 000000000..8a2bec51c Binary files /dev/null and b/public/terrain/19/858558/353808.terrain differ diff --git a/public/terrain/19/858558/353809.terrain b/public/terrain/19/858558/353809.terrain new file mode 100644 index 000000000..e16e1689d Binary files /dev/null and b/public/terrain/19/858558/353809.terrain differ diff --git a/public/terrain/19/858558/353810.terrain b/public/terrain/19/858558/353810.terrain new file mode 100644 index 000000000..b179bce93 Binary files /dev/null and b/public/terrain/19/858558/353810.terrain differ diff --git a/public/terrain/19/858558/353811.terrain b/public/terrain/19/858558/353811.terrain new file mode 100644 index 000000000..dd153458e Binary files /dev/null and b/public/terrain/19/858558/353811.terrain differ diff --git a/public/terrain/19/858558/353812.terrain b/public/terrain/19/858558/353812.terrain new file mode 100644 index 000000000..e3c4a53ef Binary files /dev/null and b/public/terrain/19/858558/353812.terrain differ diff --git a/public/terrain/19/858558/353813.terrain b/public/terrain/19/858558/353813.terrain new file mode 100644 index 000000000..bfdfe7966 Binary files /dev/null and b/public/terrain/19/858558/353813.terrain differ diff --git a/public/terrain/19/858558/353814.terrain b/public/terrain/19/858558/353814.terrain new file mode 100644 index 000000000..8c2d81312 Binary files /dev/null and b/public/terrain/19/858558/353814.terrain differ diff --git a/public/terrain/19/858558/353815.terrain b/public/terrain/19/858558/353815.terrain new file mode 100644 index 000000000..9119f5216 Binary files /dev/null and b/public/terrain/19/858558/353815.terrain differ diff --git a/public/terrain/19/858558/353816.terrain b/public/terrain/19/858558/353816.terrain new file mode 100644 index 000000000..1fd7964ab Binary files /dev/null and b/public/terrain/19/858558/353816.terrain differ diff --git a/public/terrain/19/858558/353817.terrain b/public/terrain/19/858558/353817.terrain new file mode 100644 index 000000000..5228cde51 Binary files /dev/null and b/public/terrain/19/858558/353817.terrain differ diff --git a/public/terrain/19/858558/353818.terrain b/public/terrain/19/858558/353818.terrain new file mode 100644 index 000000000..28e76d328 Binary files /dev/null and b/public/terrain/19/858558/353818.terrain differ diff --git a/public/terrain/19/858558/353819.terrain b/public/terrain/19/858558/353819.terrain new file mode 100644 index 000000000..a051787c2 Binary files /dev/null and b/public/terrain/19/858558/353819.terrain differ diff --git a/public/terrain/19/858558/353820.terrain b/public/terrain/19/858558/353820.terrain new file mode 100644 index 000000000..7f4a584db Binary files /dev/null and b/public/terrain/19/858558/353820.terrain differ diff --git a/public/terrain/19/858558/353821.terrain b/public/terrain/19/858558/353821.terrain new file mode 100644 index 000000000..c3f7205b1 Binary files /dev/null and b/public/terrain/19/858558/353821.terrain differ diff --git a/public/terrain/19/858558/353822.terrain b/public/terrain/19/858558/353822.terrain new file mode 100644 index 000000000..b5996d3f8 Binary files /dev/null and b/public/terrain/19/858558/353822.terrain differ diff --git a/public/terrain/19/858558/353823.terrain b/public/terrain/19/858558/353823.terrain new file mode 100644 index 000000000..f856ba65d Binary files /dev/null and b/public/terrain/19/858558/353823.terrain differ diff --git a/public/terrain/19/858558/353824.terrain b/public/terrain/19/858558/353824.terrain new file mode 100644 index 000000000..6ed28b12e Binary files /dev/null and b/public/terrain/19/858558/353824.terrain differ diff --git a/public/terrain/19/858558/353825.terrain b/public/terrain/19/858558/353825.terrain new file mode 100644 index 000000000..9f0e7c50b Binary files /dev/null and b/public/terrain/19/858558/353825.terrain differ diff --git a/public/terrain/19/858558/353826.terrain b/public/terrain/19/858558/353826.terrain new file mode 100644 index 000000000..64d4f83dd Binary files /dev/null and b/public/terrain/19/858558/353826.terrain differ diff --git a/public/terrain/19/858558/353827.terrain b/public/terrain/19/858558/353827.terrain new file mode 100644 index 000000000..5d50230a4 Binary files /dev/null and b/public/terrain/19/858558/353827.terrain differ diff --git a/public/terrain/19/858558/353828.terrain b/public/terrain/19/858558/353828.terrain new file mode 100644 index 000000000..419951ce8 Binary files /dev/null and b/public/terrain/19/858558/353828.terrain differ diff --git a/public/terrain/19/858558/353829.terrain b/public/terrain/19/858558/353829.terrain new file mode 100644 index 000000000..f62bc6f53 Binary files /dev/null and b/public/terrain/19/858558/353829.terrain differ diff --git a/public/terrain/19/858558/353830.terrain b/public/terrain/19/858558/353830.terrain new file mode 100644 index 000000000..18af57f71 Binary files /dev/null and b/public/terrain/19/858558/353830.terrain differ diff --git a/public/terrain/19/858558/353831.terrain b/public/terrain/19/858558/353831.terrain new file mode 100644 index 000000000..a6ceb52a5 Binary files /dev/null and b/public/terrain/19/858558/353831.terrain differ diff --git a/public/terrain/19/858558/353832.terrain b/public/terrain/19/858558/353832.terrain new file mode 100644 index 000000000..1b9d68d6e Binary files /dev/null and b/public/terrain/19/858558/353832.terrain differ diff --git a/public/terrain/19/858558/353833.terrain b/public/terrain/19/858558/353833.terrain new file mode 100644 index 000000000..ac0009b96 Binary files /dev/null and b/public/terrain/19/858558/353833.terrain differ diff --git a/public/terrain/19/858558/353834.terrain b/public/terrain/19/858558/353834.terrain new file mode 100644 index 000000000..b97547b11 Binary files /dev/null and b/public/terrain/19/858558/353834.terrain differ diff --git a/public/terrain/19/858558/353835.terrain b/public/terrain/19/858558/353835.terrain new file mode 100644 index 000000000..3073d9cdf Binary files /dev/null and b/public/terrain/19/858558/353835.terrain differ diff --git a/public/terrain/19/858558/353836.terrain b/public/terrain/19/858558/353836.terrain new file mode 100644 index 000000000..8675dda62 Binary files /dev/null and b/public/terrain/19/858558/353836.terrain differ diff --git a/public/terrain/19/858558/353837.terrain b/public/terrain/19/858558/353837.terrain new file mode 100644 index 000000000..1b2c6aff6 Binary files /dev/null and b/public/terrain/19/858558/353837.terrain differ diff --git a/public/terrain/19/858558/353838.terrain b/public/terrain/19/858558/353838.terrain new file mode 100644 index 000000000..c080d8e3a Binary files /dev/null and b/public/terrain/19/858558/353838.terrain differ diff --git a/public/terrain/19/858558/353839.terrain b/public/terrain/19/858558/353839.terrain new file mode 100644 index 000000000..1f0565fb3 Binary files /dev/null and b/public/terrain/19/858558/353839.terrain differ diff --git a/public/terrain/19/858558/353840.terrain b/public/terrain/19/858558/353840.terrain new file mode 100644 index 000000000..87d8cd9ef Binary files /dev/null and b/public/terrain/19/858558/353840.terrain differ diff --git a/public/terrain/19/858558/353841.terrain b/public/terrain/19/858558/353841.terrain new file mode 100644 index 000000000..10fd025fb Binary files /dev/null and b/public/terrain/19/858558/353841.terrain differ diff --git a/public/terrain/19/858558/353842.terrain b/public/terrain/19/858558/353842.terrain new file mode 100644 index 000000000..71f649a40 Binary files /dev/null and b/public/terrain/19/858558/353842.terrain differ diff --git a/public/terrain/19/858558/353843.terrain b/public/terrain/19/858558/353843.terrain new file mode 100644 index 000000000..8fa668fd4 Binary files /dev/null and b/public/terrain/19/858558/353843.terrain differ diff --git a/public/terrain/19/858558/353844.terrain b/public/terrain/19/858558/353844.terrain new file mode 100644 index 000000000..96fd6e25b Binary files /dev/null and b/public/terrain/19/858558/353844.terrain differ diff --git a/public/terrain/19/858558/353845.terrain b/public/terrain/19/858558/353845.terrain new file mode 100644 index 000000000..055691d57 Binary files /dev/null and b/public/terrain/19/858558/353845.terrain differ diff --git a/public/terrain/19/858558/353846.terrain b/public/terrain/19/858558/353846.terrain new file mode 100644 index 000000000..af9c721a4 Binary files /dev/null and b/public/terrain/19/858558/353846.terrain differ diff --git a/public/terrain/19/858558/353847.terrain b/public/terrain/19/858558/353847.terrain new file mode 100644 index 000000000..98482c54b Binary files /dev/null and b/public/terrain/19/858558/353847.terrain differ diff --git a/public/terrain/19/858558/353848.terrain b/public/terrain/19/858558/353848.terrain new file mode 100644 index 000000000..7a504489f Binary files /dev/null and b/public/terrain/19/858558/353848.terrain differ diff --git a/public/terrain/19/858558/353849.terrain b/public/terrain/19/858558/353849.terrain new file mode 100644 index 000000000..dd19d977e Binary files /dev/null and b/public/terrain/19/858558/353849.terrain differ diff --git a/public/terrain/19/858558/353850.terrain b/public/terrain/19/858558/353850.terrain new file mode 100644 index 000000000..f9b8a9246 Binary files /dev/null and b/public/terrain/19/858558/353850.terrain differ diff --git a/public/terrain/19/858558/353851.terrain b/public/terrain/19/858558/353851.terrain new file mode 100644 index 000000000..934283746 Binary files /dev/null and b/public/terrain/19/858558/353851.terrain differ diff --git a/public/terrain/19/858558/353852.terrain b/public/terrain/19/858558/353852.terrain new file mode 100644 index 000000000..022c5e7c6 Binary files /dev/null and b/public/terrain/19/858558/353852.terrain differ diff --git a/public/terrain/19/858558/353853.terrain b/public/terrain/19/858558/353853.terrain new file mode 100644 index 000000000..74a5fb7a1 Binary files /dev/null and b/public/terrain/19/858558/353853.terrain differ diff --git a/public/terrain/19/858558/353854.terrain b/public/terrain/19/858558/353854.terrain new file mode 100644 index 000000000..da6887bfc Binary files /dev/null and b/public/terrain/19/858558/353854.terrain differ diff --git a/public/terrain/19/858558/353855.terrain b/public/terrain/19/858558/353855.terrain new file mode 100644 index 000000000..0ecf09210 Binary files /dev/null and b/public/terrain/19/858558/353855.terrain differ diff --git a/public/terrain/19/858558/353856.terrain b/public/terrain/19/858558/353856.terrain new file mode 100644 index 000000000..d65a79532 Binary files /dev/null and b/public/terrain/19/858558/353856.terrain differ diff --git a/public/terrain/19/858558/353857.terrain b/public/terrain/19/858558/353857.terrain new file mode 100644 index 000000000..5114edd35 Binary files /dev/null and b/public/terrain/19/858558/353857.terrain differ diff --git a/public/terrain/19/858558/353858.terrain b/public/terrain/19/858558/353858.terrain new file mode 100644 index 000000000..756fd5b55 Binary files /dev/null and b/public/terrain/19/858558/353858.terrain differ diff --git a/public/terrain/19/858558/353859.terrain b/public/terrain/19/858558/353859.terrain new file mode 100644 index 000000000..2d3323e5c Binary files /dev/null and b/public/terrain/19/858558/353859.terrain differ diff --git a/public/terrain/19/858558/353860.terrain b/public/terrain/19/858558/353860.terrain new file mode 100644 index 000000000..23afe8d3a Binary files /dev/null and b/public/terrain/19/858558/353860.terrain differ diff --git a/public/terrain/19/858558/353861.terrain b/public/terrain/19/858558/353861.terrain new file mode 100644 index 000000000..9b9fa288b Binary files /dev/null and b/public/terrain/19/858558/353861.terrain differ diff --git a/public/terrain/19/858558/353862.terrain b/public/terrain/19/858558/353862.terrain new file mode 100644 index 000000000..af9862cd2 Binary files /dev/null and b/public/terrain/19/858558/353862.terrain differ diff --git a/public/terrain/19/858558/353863.terrain b/public/terrain/19/858558/353863.terrain new file mode 100644 index 000000000..4a5e67f22 Binary files /dev/null and b/public/terrain/19/858558/353863.terrain differ diff --git a/public/terrain/19/858558/353864.terrain b/public/terrain/19/858558/353864.terrain new file mode 100644 index 000000000..c5e65a69d Binary files /dev/null and b/public/terrain/19/858558/353864.terrain differ diff --git a/public/terrain/19/858558/353865.terrain b/public/terrain/19/858558/353865.terrain new file mode 100644 index 000000000..a69ee053b Binary files /dev/null and b/public/terrain/19/858558/353865.terrain differ diff --git a/public/terrain/19/858558/353866.terrain b/public/terrain/19/858558/353866.terrain new file mode 100644 index 000000000..32324b4de Binary files /dev/null and b/public/terrain/19/858558/353866.terrain differ diff --git a/public/terrain/19/858558/353867.terrain b/public/terrain/19/858558/353867.terrain new file mode 100644 index 000000000..f14f935f3 Binary files /dev/null and b/public/terrain/19/858558/353867.terrain differ diff --git a/public/terrain/19/858558/353868.terrain b/public/terrain/19/858558/353868.terrain new file mode 100644 index 000000000..473e5a07a Binary files /dev/null and b/public/terrain/19/858558/353868.terrain differ diff --git a/public/terrain/19/858558/353869.terrain b/public/terrain/19/858558/353869.terrain new file mode 100644 index 000000000..db62aa5e8 Binary files /dev/null and b/public/terrain/19/858558/353869.terrain differ diff --git a/public/terrain/19/858558/353870.terrain b/public/terrain/19/858558/353870.terrain new file mode 100644 index 000000000..651e13b6b Binary files /dev/null and b/public/terrain/19/858558/353870.terrain differ diff --git a/public/terrain/19/858558/353871.terrain b/public/terrain/19/858558/353871.terrain new file mode 100644 index 000000000..0232093e0 Binary files /dev/null and b/public/terrain/19/858558/353871.terrain differ diff --git a/public/terrain/19/858558/353872.terrain b/public/terrain/19/858558/353872.terrain new file mode 100644 index 000000000..e296002c3 Binary files /dev/null and b/public/terrain/19/858558/353872.terrain differ diff --git a/public/terrain/19/858558/353873.terrain b/public/terrain/19/858558/353873.terrain new file mode 100644 index 000000000..6ade5c324 Binary files /dev/null and b/public/terrain/19/858558/353873.terrain differ diff --git a/public/terrain/19/858558/353874.terrain b/public/terrain/19/858558/353874.terrain new file mode 100644 index 000000000..adccad3fa Binary files /dev/null and b/public/terrain/19/858558/353874.terrain differ diff --git a/public/terrain/19/858558/353875.terrain b/public/terrain/19/858558/353875.terrain new file mode 100644 index 000000000..dfec0e045 Binary files /dev/null and b/public/terrain/19/858558/353875.terrain differ diff --git a/public/terrain/19/858558/353876.terrain b/public/terrain/19/858558/353876.terrain new file mode 100644 index 000000000..70fdef49e Binary files /dev/null and b/public/terrain/19/858558/353876.terrain differ diff --git a/public/terrain/19/858558/353877.terrain b/public/terrain/19/858558/353877.terrain new file mode 100644 index 000000000..286a8c314 Binary files /dev/null and b/public/terrain/19/858558/353877.terrain differ diff --git a/public/terrain/19/858558/353878.terrain b/public/terrain/19/858558/353878.terrain new file mode 100644 index 000000000..38105aa11 Binary files /dev/null and b/public/terrain/19/858558/353878.terrain differ diff --git a/public/terrain/19/858558/353879.terrain b/public/terrain/19/858558/353879.terrain new file mode 100644 index 000000000..8805b40e7 Binary files /dev/null and b/public/terrain/19/858558/353879.terrain differ diff --git a/public/terrain/19/858558/353880.terrain b/public/terrain/19/858558/353880.terrain new file mode 100644 index 000000000..dd9a8c784 Binary files /dev/null and b/public/terrain/19/858558/353880.terrain differ diff --git a/public/terrain/19/858558/353881.terrain b/public/terrain/19/858558/353881.terrain new file mode 100644 index 000000000..66bbce90b Binary files /dev/null and b/public/terrain/19/858558/353881.terrain differ diff --git a/public/terrain/19/858558/353882.terrain b/public/terrain/19/858558/353882.terrain new file mode 100644 index 000000000..42db9bdb5 Binary files /dev/null and b/public/terrain/19/858558/353882.terrain differ diff --git a/public/terrain/19/858558/353883.terrain b/public/terrain/19/858558/353883.terrain new file mode 100644 index 000000000..1bbb63933 Binary files /dev/null and b/public/terrain/19/858558/353883.terrain differ diff --git a/public/terrain/19/858558/353884.terrain b/public/terrain/19/858558/353884.terrain new file mode 100644 index 000000000..b41a402a8 Binary files /dev/null and b/public/terrain/19/858558/353884.terrain differ diff --git a/public/terrain/19/858558/353885.terrain b/public/terrain/19/858558/353885.terrain new file mode 100644 index 000000000..526bc7c04 Binary files /dev/null and b/public/terrain/19/858558/353885.terrain differ diff --git a/public/terrain/19/858558/353886.terrain b/public/terrain/19/858558/353886.terrain new file mode 100644 index 000000000..3fdf4ba1e Binary files /dev/null and b/public/terrain/19/858558/353886.terrain differ diff --git a/public/terrain/19/858558/353887.terrain b/public/terrain/19/858558/353887.terrain new file mode 100644 index 000000000..1badce281 Binary files /dev/null and b/public/terrain/19/858558/353887.terrain differ diff --git a/public/terrain/19/858558/353888.terrain b/public/terrain/19/858558/353888.terrain new file mode 100644 index 000000000..74a92ea36 Binary files /dev/null and b/public/terrain/19/858558/353888.terrain differ diff --git a/public/terrain/19/858558/353889.terrain b/public/terrain/19/858558/353889.terrain new file mode 100644 index 000000000..8151f1de6 Binary files /dev/null and b/public/terrain/19/858558/353889.terrain differ diff --git a/public/terrain/19/858558/353890.terrain b/public/terrain/19/858558/353890.terrain new file mode 100644 index 000000000..e345d69f4 Binary files /dev/null and b/public/terrain/19/858558/353890.terrain differ diff --git a/public/terrain/19/858558/353891.terrain b/public/terrain/19/858558/353891.terrain new file mode 100644 index 000000000..96623e863 Binary files /dev/null and b/public/terrain/19/858558/353891.terrain differ diff --git a/public/terrain/19/858558/353892.terrain b/public/terrain/19/858558/353892.terrain new file mode 100644 index 000000000..76191ed29 Binary files /dev/null and b/public/terrain/19/858558/353892.terrain differ diff --git a/public/terrain/19/858558/353893.terrain b/public/terrain/19/858558/353893.terrain new file mode 100644 index 000000000..ae394e543 Binary files /dev/null and b/public/terrain/19/858558/353893.terrain differ diff --git a/public/terrain/19/858558/353894.terrain b/public/terrain/19/858558/353894.terrain new file mode 100644 index 000000000..9c142d24f Binary files /dev/null and b/public/terrain/19/858558/353894.terrain differ diff --git a/public/terrain/19/858558/353895.terrain b/public/terrain/19/858558/353895.terrain new file mode 100644 index 000000000..74c0f9dd6 Binary files /dev/null and b/public/terrain/19/858558/353895.terrain differ diff --git a/public/terrain/19/858558/353896.terrain b/public/terrain/19/858558/353896.terrain new file mode 100644 index 000000000..5011089e3 Binary files /dev/null and b/public/terrain/19/858558/353896.terrain differ diff --git a/public/terrain/19/858558/353897.terrain b/public/terrain/19/858558/353897.terrain new file mode 100644 index 000000000..cb8bb9563 Binary files /dev/null and b/public/terrain/19/858558/353897.terrain differ diff --git a/public/terrain/19/858558/353898.terrain b/public/terrain/19/858558/353898.terrain new file mode 100644 index 000000000..73c1ddbd4 Binary files /dev/null and b/public/terrain/19/858558/353898.terrain differ diff --git a/public/terrain/19/858558/353899.terrain b/public/terrain/19/858558/353899.terrain new file mode 100644 index 000000000..1b7b51ad6 Binary files /dev/null and b/public/terrain/19/858558/353899.terrain differ diff --git a/public/terrain/19/858558/353900.terrain b/public/terrain/19/858558/353900.terrain new file mode 100644 index 000000000..f86927bff Binary files /dev/null and b/public/terrain/19/858558/353900.terrain differ diff --git a/public/terrain/19/858558/353901.terrain b/public/terrain/19/858558/353901.terrain new file mode 100644 index 000000000..49aec9e47 Binary files /dev/null and b/public/terrain/19/858558/353901.terrain differ diff --git a/public/terrain/19/858558/353902.terrain b/public/terrain/19/858558/353902.terrain new file mode 100644 index 000000000..56fbaaab8 Binary files /dev/null and b/public/terrain/19/858558/353902.terrain differ diff --git a/public/terrain/19/858558/353903.terrain b/public/terrain/19/858558/353903.terrain new file mode 100644 index 000000000..269c2541b Binary files /dev/null and b/public/terrain/19/858558/353903.terrain differ diff --git a/public/terrain/19/858558/353904.terrain b/public/terrain/19/858558/353904.terrain new file mode 100644 index 000000000..30580c004 Binary files /dev/null and b/public/terrain/19/858558/353904.terrain differ diff --git a/public/terrain/19/858558/353905.terrain b/public/terrain/19/858558/353905.terrain new file mode 100644 index 000000000..4adb414fb Binary files /dev/null and b/public/terrain/19/858558/353905.terrain differ diff --git a/public/terrain/19/858558/353906.terrain b/public/terrain/19/858558/353906.terrain new file mode 100644 index 000000000..d5252f87e Binary files /dev/null and b/public/terrain/19/858558/353906.terrain differ diff --git a/public/terrain/19/858558/353907.terrain b/public/terrain/19/858558/353907.terrain new file mode 100644 index 000000000..2cd0cecf8 Binary files /dev/null and b/public/terrain/19/858558/353907.terrain differ diff --git a/public/terrain/19/858558/353908.terrain b/public/terrain/19/858558/353908.terrain new file mode 100644 index 000000000..13de54f3e Binary files /dev/null and b/public/terrain/19/858558/353908.terrain differ diff --git a/public/terrain/19/858558/353909.terrain b/public/terrain/19/858558/353909.terrain new file mode 100644 index 000000000..3154f4a5b Binary files /dev/null and b/public/terrain/19/858558/353909.terrain differ diff --git a/public/terrain/19/858558/353910.terrain b/public/terrain/19/858558/353910.terrain new file mode 100644 index 000000000..4fc28a05c Binary files /dev/null and b/public/terrain/19/858558/353910.terrain differ diff --git a/public/terrain/19/858558/353911.terrain b/public/terrain/19/858558/353911.terrain new file mode 100644 index 000000000..7b41d66c3 Binary files /dev/null and b/public/terrain/19/858558/353911.terrain differ diff --git a/public/terrain/19/858558/353912.terrain b/public/terrain/19/858558/353912.terrain new file mode 100644 index 000000000..9fd55a51e Binary files /dev/null and b/public/terrain/19/858558/353912.terrain differ diff --git a/public/terrain/19/858558/353913.terrain b/public/terrain/19/858558/353913.terrain new file mode 100644 index 000000000..5fc1dac9c Binary files /dev/null and b/public/terrain/19/858558/353913.terrain differ diff --git a/public/terrain/19/858558/353914.terrain b/public/terrain/19/858558/353914.terrain new file mode 100644 index 000000000..d064b2296 Binary files /dev/null and b/public/terrain/19/858558/353914.terrain differ diff --git a/public/terrain/19/858558/353915.terrain b/public/terrain/19/858558/353915.terrain new file mode 100644 index 000000000..027601a6e Binary files /dev/null and b/public/terrain/19/858558/353915.terrain differ diff --git a/public/terrain/19/858558/353916.terrain b/public/terrain/19/858558/353916.terrain new file mode 100644 index 000000000..eb44bbdf5 Binary files /dev/null and b/public/terrain/19/858558/353916.terrain differ diff --git a/public/terrain/19/858558/353917.terrain b/public/terrain/19/858558/353917.terrain new file mode 100644 index 000000000..f8a3d1f3d Binary files /dev/null and b/public/terrain/19/858558/353917.terrain differ diff --git a/public/terrain/19/858558/353918.terrain b/public/terrain/19/858558/353918.terrain new file mode 100644 index 000000000..fb6c81ccf Binary files /dev/null and b/public/terrain/19/858558/353918.terrain differ diff --git a/public/terrain/19/858558/353919.terrain b/public/terrain/19/858558/353919.terrain new file mode 100644 index 000000000..d68bb085f Binary files /dev/null and b/public/terrain/19/858558/353919.terrain differ diff --git a/public/terrain/19/858558/353920.terrain b/public/terrain/19/858558/353920.terrain new file mode 100644 index 000000000..e4c336040 Binary files /dev/null and b/public/terrain/19/858558/353920.terrain differ diff --git a/public/terrain/19/858558/353921.terrain b/public/terrain/19/858558/353921.terrain new file mode 100644 index 000000000..8590acc31 Binary files /dev/null and b/public/terrain/19/858558/353921.terrain differ diff --git a/public/terrain/19/858558/353922.terrain b/public/terrain/19/858558/353922.terrain new file mode 100644 index 000000000..8c3cd8648 Binary files /dev/null and b/public/terrain/19/858558/353922.terrain differ diff --git a/public/terrain/19/858558/353923.terrain b/public/terrain/19/858558/353923.terrain new file mode 100644 index 000000000..422fbd289 Binary files /dev/null and b/public/terrain/19/858558/353923.terrain differ diff --git a/public/terrain/19/858558/353924.terrain b/public/terrain/19/858558/353924.terrain new file mode 100644 index 000000000..831ac9a42 Binary files /dev/null and b/public/terrain/19/858558/353924.terrain differ diff --git a/public/terrain/19/858558/353925.terrain b/public/terrain/19/858558/353925.terrain new file mode 100644 index 000000000..504035554 Binary files /dev/null and b/public/terrain/19/858558/353925.terrain differ diff --git a/public/terrain/19/858558/353926.terrain b/public/terrain/19/858558/353926.terrain new file mode 100644 index 000000000..1419bc952 Binary files /dev/null and b/public/terrain/19/858558/353926.terrain differ diff --git a/public/terrain/19/858558/353927.terrain b/public/terrain/19/858558/353927.terrain new file mode 100644 index 000000000..20e038023 Binary files /dev/null and b/public/terrain/19/858558/353927.terrain differ diff --git a/public/terrain/19/858558/353928.terrain b/public/terrain/19/858558/353928.terrain new file mode 100644 index 000000000..a4275ba1a Binary files /dev/null and b/public/terrain/19/858558/353928.terrain differ diff --git a/public/terrain/19/858558/353929.terrain b/public/terrain/19/858558/353929.terrain new file mode 100644 index 000000000..cfaf12ddf Binary files /dev/null and b/public/terrain/19/858558/353929.terrain differ diff --git a/public/terrain/19/858558/353930.terrain b/public/terrain/19/858558/353930.terrain new file mode 100644 index 000000000..31675d450 Binary files /dev/null and b/public/terrain/19/858558/353930.terrain differ diff --git a/public/terrain/19/858558/353931.terrain b/public/terrain/19/858558/353931.terrain new file mode 100644 index 000000000..62a50aee7 Binary files /dev/null and b/public/terrain/19/858558/353931.terrain differ diff --git a/public/terrain/19/858558/353932.terrain b/public/terrain/19/858558/353932.terrain new file mode 100644 index 000000000..6309f9b3f Binary files /dev/null and b/public/terrain/19/858558/353932.terrain differ diff --git a/public/terrain/19/858558/353933.terrain b/public/terrain/19/858558/353933.terrain new file mode 100644 index 000000000..6c04f0e0e Binary files /dev/null and b/public/terrain/19/858558/353933.terrain differ diff --git a/public/terrain/19/858558/353934.terrain b/public/terrain/19/858558/353934.terrain new file mode 100644 index 000000000..9a94f3c64 Binary files /dev/null and b/public/terrain/19/858558/353934.terrain differ diff --git a/public/terrain/19/858558/353935.terrain b/public/terrain/19/858558/353935.terrain new file mode 100644 index 000000000..9cd3f5175 Binary files /dev/null and b/public/terrain/19/858558/353935.terrain differ diff --git a/public/terrain/19/858558/353936.terrain b/public/terrain/19/858558/353936.terrain new file mode 100644 index 000000000..1ec68f79c Binary files /dev/null and b/public/terrain/19/858558/353936.terrain differ diff --git a/public/terrain/19/858558/353937.terrain b/public/terrain/19/858558/353937.terrain new file mode 100644 index 000000000..9a8852dce Binary files /dev/null and b/public/terrain/19/858558/353937.terrain differ diff --git a/public/terrain/19/858558/353938.terrain b/public/terrain/19/858558/353938.terrain new file mode 100644 index 000000000..17e3993a8 Binary files /dev/null and b/public/terrain/19/858558/353938.terrain differ diff --git a/public/terrain/19/858558/353939.terrain b/public/terrain/19/858558/353939.terrain new file mode 100644 index 000000000..4e6467e01 Binary files /dev/null and b/public/terrain/19/858558/353939.terrain differ diff --git a/public/terrain/19/858558/353940.terrain b/public/terrain/19/858558/353940.terrain new file mode 100644 index 000000000..ff57041c4 Binary files /dev/null and b/public/terrain/19/858558/353940.terrain differ diff --git a/public/terrain/19/858558/353941.terrain b/public/terrain/19/858558/353941.terrain new file mode 100644 index 000000000..d12072158 Binary files /dev/null and b/public/terrain/19/858558/353941.terrain differ diff --git a/public/terrain/19/858558/353942.terrain b/public/terrain/19/858558/353942.terrain new file mode 100644 index 000000000..5f00c7e20 Binary files /dev/null and b/public/terrain/19/858558/353942.terrain differ diff --git a/public/terrain/19/858558/353943.terrain b/public/terrain/19/858558/353943.terrain new file mode 100644 index 000000000..d0a31e916 Binary files /dev/null and b/public/terrain/19/858558/353943.terrain differ diff --git a/public/terrain/19/858558/353944.terrain b/public/terrain/19/858558/353944.terrain new file mode 100644 index 000000000..b8671ab18 Binary files /dev/null and b/public/terrain/19/858558/353944.terrain differ diff --git a/public/terrain/19/858558/353945.terrain b/public/terrain/19/858558/353945.terrain new file mode 100644 index 000000000..d086860ed Binary files /dev/null and b/public/terrain/19/858558/353945.terrain differ diff --git a/public/terrain/19/858558/353946.terrain b/public/terrain/19/858558/353946.terrain new file mode 100644 index 000000000..67d5fd68b Binary files /dev/null and b/public/terrain/19/858558/353946.terrain differ diff --git a/public/terrain/19/858558/353947.terrain b/public/terrain/19/858558/353947.terrain new file mode 100644 index 000000000..e42df1b69 Binary files /dev/null and b/public/terrain/19/858558/353947.terrain differ diff --git a/public/terrain/19/858558/353948.terrain b/public/terrain/19/858558/353948.terrain new file mode 100644 index 000000000..37c584443 Binary files /dev/null and b/public/terrain/19/858558/353948.terrain differ diff --git a/public/terrain/19/858558/353949.terrain b/public/terrain/19/858558/353949.terrain new file mode 100644 index 000000000..788491836 Binary files /dev/null and b/public/terrain/19/858558/353949.terrain differ diff --git a/public/terrain/19/858558/353950.terrain b/public/terrain/19/858558/353950.terrain new file mode 100644 index 000000000..ceaa5535f Binary files /dev/null and b/public/terrain/19/858558/353950.terrain differ diff --git a/public/terrain/19/858558/353951.terrain b/public/terrain/19/858558/353951.terrain new file mode 100644 index 000000000..62b070ef0 Binary files /dev/null and b/public/terrain/19/858558/353951.terrain differ diff --git a/public/terrain/19/858558/353952.terrain b/public/terrain/19/858558/353952.terrain new file mode 100644 index 000000000..f7ec2ab66 Binary files /dev/null and b/public/terrain/19/858558/353952.terrain differ diff --git a/public/terrain/19/858558/353953.terrain b/public/terrain/19/858558/353953.terrain new file mode 100644 index 000000000..7d491bc99 Binary files /dev/null and b/public/terrain/19/858558/353953.terrain differ diff --git a/public/terrain/19/858558/353954.terrain b/public/terrain/19/858558/353954.terrain new file mode 100644 index 000000000..d35abea9a Binary files /dev/null and b/public/terrain/19/858558/353954.terrain differ diff --git a/public/terrain/19/858558/353955.terrain b/public/terrain/19/858558/353955.terrain new file mode 100644 index 000000000..a2c816723 Binary files /dev/null and b/public/terrain/19/858558/353955.terrain differ diff --git a/public/terrain/19/858558/353956.terrain b/public/terrain/19/858558/353956.terrain new file mode 100644 index 000000000..fc3161f25 Binary files /dev/null and b/public/terrain/19/858558/353956.terrain differ diff --git a/public/terrain/19/858558/353957.terrain b/public/terrain/19/858558/353957.terrain new file mode 100644 index 000000000..2f281367d Binary files /dev/null and b/public/terrain/19/858558/353957.terrain differ diff --git a/public/terrain/19/858558/353958.terrain b/public/terrain/19/858558/353958.terrain new file mode 100644 index 000000000..52a0d1e81 Binary files /dev/null and b/public/terrain/19/858558/353958.terrain differ diff --git a/public/terrain/19/858558/353959.terrain b/public/terrain/19/858558/353959.terrain new file mode 100644 index 000000000..a362ce0a3 Binary files /dev/null and b/public/terrain/19/858558/353959.terrain differ diff --git a/public/terrain/19/858558/353960.terrain b/public/terrain/19/858558/353960.terrain new file mode 100644 index 000000000..0a0f53436 Binary files /dev/null and b/public/terrain/19/858558/353960.terrain differ diff --git a/public/terrain/19/858558/353961.terrain b/public/terrain/19/858558/353961.terrain new file mode 100644 index 000000000..9bc77037e Binary files /dev/null and b/public/terrain/19/858558/353961.terrain differ diff --git a/public/terrain/19/858558/353962.terrain b/public/terrain/19/858558/353962.terrain new file mode 100644 index 000000000..68fbd05e6 Binary files /dev/null and b/public/terrain/19/858558/353962.terrain differ diff --git a/public/terrain/19/858558/353963.terrain b/public/terrain/19/858558/353963.terrain new file mode 100644 index 000000000..67e465852 Binary files /dev/null and b/public/terrain/19/858558/353963.terrain differ diff --git a/public/terrain/19/858558/353964.terrain b/public/terrain/19/858558/353964.terrain new file mode 100644 index 000000000..22ba8f950 Binary files /dev/null and b/public/terrain/19/858558/353964.terrain differ diff --git a/public/terrain/19/858558/353965.terrain b/public/terrain/19/858558/353965.terrain new file mode 100644 index 000000000..78eb6ca90 Binary files /dev/null and b/public/terrain/19/858558/353965.terrain differ diff --git a/public/terrain/19/858558/353966.terrain b/public/terrain/19/858558/353966.terrain new file mode 100644 index 000000000..f57ab5f24 Binary files /dev/null and b/public/terrain/19/858558/353966.terrain differ diff --git a/public/terrain/19/858558/353967.terrain b/public/terrain/19/858558/353967.terrain new file mode 100644 index 000000000..4fc7693f1 Binary files /dev/null and b/public/terrain/19/858558/353967.terrain differ diff --git a/public/terrain/19/858558/353968.terrain b/public/terrain/19/858558/353968.terrain new file mode 100644 index 000000000..b2d70f895 Binary files /dev/null and b/public/terrain/19/858558/353968.terrain differ diff --git a/public/terrain/19/858558/353969.terrain b/public/terrain/19/858558/353969.terrain new file mode 100644 index 000000000..63f76aead Binary files /dev/null and b/public/terrain/19/858558/353969.terrain differ diff --git a/public/terrain/19/858558/353970.terrain b/public/terrain/19/858558/353970.terrain new file mode 100644 index 000000000..5d4de4ce2 Binary files /dev/null and b/public/terrain/19/858558/353970.terrain differ diff --git a/public/terrain/19/858558/353971.terrain b/public/terrain/19/858558/353971.terrain new file mode 100644 index 000000000..eadb93785 Binary files /dev/null and b/public/terrain/19/858558/353971.terrain differ diff --git a/public/terrain/19/858558/353972.terrain b/public/terrain/19/858558/353972.terrain new file mode 100644 index 000000000..f691881f8 Binary files /dev/null and b/public/terrain/19/858558/353972.terrain differ diff --git a/public/terrain/19/858558/353973.terrain b/public/terrain/19/858558/353973.terrain new file mode 100644 index 000000000..7f1d57af6 Binary files /dev/null and b/public/terrain/19/858558/353973.terrain differ diff --git a/public/terrain/19/858558/353974.terrain b/public/terrain/19/858558/353974.terrain new file mode 100644 index 000000000..1d3363d33 Binary files /dev/null and b/public/terrain/19/858558/353974.terrain differ diff --git a/public/terrain/19/858558/353975.terrain b/public/terrain/19/858558/353975.terrain new file mode 100644 index 000000000..0becf66c5 Binary files /dev/null and b/public/terrain/19/858558/353975.terrain differ diff --git a/public/terrain/19/858558/353976.terrain b/public/terrain/19/858558/353976.terrain new file mode 100644 index 000000000..89a66e601 Binary files /dev/null and b/public/terrain/19/858558/353976.terrain differ diff --git a/public/terrain/19/858558/353977.terrain b/public/terrain/19/858558/353977.terrain new file mode 100644 index 000000000..d6ba734a1 Binary files /dev/null and b/public/terrain/19/858558/353977.terrain differ diff --git a/public/terrain/19/858558/353978.terrain b/public/terrain/19/858558/353978.terrain new file mode 100644 index 000000000..b57d53800 Binary files /dev/null and b/public/terrain/19/858558/353978.terrain differ diff --git a/public/terrain/19/858558/353979.terrain b/public/terrain/19/858558/353979.terrain new file mode 100644 index 000000000..f4823bf91 Binary files /dev/null and b/public/terrain/19/858558/353979.terrain differ diff --git a/public/terrain/19/858558/353980.terrain b/public/terrain/19/858558/353980.terrain new file mode 100644 index 000000000..9952f8fe2 Binary files /dev/null and b/public/terrain/19/858558/353980.terrain differ diff --git a/public/terrain/19/858558/353981.terrain b/public/terrain/19/858558/353981.terrain new file mode 100644 index 000000000..ce4b7498b Binary files /dev/null and b/public/terrain/19/858558/353981.terrain differ diff --git a/public/terrain/19/858558/353982.terrain b/public/terrain/19/858558/353982.terrain new file mode 100644 index 000000000..ef81a386a Binary files /dev/null and b/public/terrain/19/858558/353982.terrain differ diff --git a/public/terrain/19/858558/353983.terrain b/public/terrain/19/858558/353983.terrain new file mode 100644 index 000000000..913f0c607 Binary files /dev/null and b/public/terrain/19/858558/353983.terrain differ diff --git a/public/terrain/19/858558/353984.terrain b/public/terrain/19/858558/353984.terrain new file mode 100644 index 000000000..ac7d3fb1e Binary files /dev/null and b/public/terrain/19/858558/353984.terrain differ diff --git a/public/terrain/19/858558/353985.terrain b/public/terrain/19/858558/353985.terrain new file mode 100644 index 000000000..0297edb1a Binary files /dev/null and b/public/terrain/19/858558/353985.terrain differ diff --git a/public/terrain/19/858558/353986.terrain b/public/terrain/19/858558/353986.terrain new file mode 100644 index 000000000..16e58eac3 Binary files /dev/null and b/public/terrain/19/858558/353986.terrain differ diff --git a/public/terrain/19/858558/353987.terrain b/public/terrain/19/858558/353987.terrain new file mode 100644 index 000000000..216a362ed Binary files /dev/null and b/public/terrain/19/858558/353987.terrain differ diff --git a/public/terrain/19/858558/353988.terrain b/public/terrain/19/858558/353988.terrain new file mode 100644 index 000000000..8f3a2dd8a Binary files /dev/null and b/public/terrain/19/858558/353988.terrain differ diff --git a/public/terrain/19/858558/353989.terrain b/public/terrain/19/858558/353989.terrain new file mode 100644 index 000000000..e2668910e Binary files /dev/null and b/public/terrain/19/858558/353989.terrain differ diff --git a/public/terrain/19/858558/353990.terrain b/public/terrain/19/858558/353990.terrain new file mode 100644 index 000000000..0d4036a72 Binary files /dev/null and b/public/terrain/19/858558/353990.terrain differ diff --git a/public/terrain/19/858558/353991.terrain b/public/terrain/19/858558/353991.terrain new file mode 100644 index 000000000..1b34d7134 Binary files /dev/null and b/public/terrain/19/858558/353991.terrain differ diff --git a/public/terrain/19/858558/353992.terrain b/public/terrain/19/858558/353992.terrain new file mode 100644 index 000000000..7e86fab9b Binary files /dev/null and b/public/terrain/19/858558/353992.terrain differ diff --git a/public/terrain/19/858558/353993.terrain b/public/terrain/19/858558/353993.terrain new file mode 100644 index 000000000..950e92e05 Binary files /dev/null and b/public/terrain/19/858558/353993.terrain differ diff --git a/public/terrain/19/858558/353994.terrain b/public/terrain/19/858558/353994.terrain new file mode 100644 index 000000000..1bbcc711d Binary files /dev/null and b/public/terrain/19/858558/353994.terrain differ diff --git a/public/terrain/19/858558/353995.terrain b/public/terrain/19/858558/353995.terrain new file mode 100644 index 000000000..354b1b2fa Binary files /dev/null and b/public/terrain/19/858558/353995.terrain differ diff --git a/public/terrain/19/858558/353996.terrain b/public/terrain/19/858558/353996.terrain new file mode 100644 index 000000000..fba9f0dfe Binary files /dev/null and b/public/terrain/19/858558/353996.terrain differ diff --git a/public/terrain/19/858558/353997.terrain b/public/terrain/19/858558/353997.terrain new file mode 100644 index 000000000..1aebe50ca Binary files /dev/null and b/public/terrain/19/858558/353997.terrain differ diff --git a/public/terrain/19/858558/353998.terrain b/public/terrain/19/858558/353998.terrain new file mode 100644 index 000000000..c9f1d14e6 Binary files /dev/null and b/public/terrain/19/858558/353998.terrain differ diff --git a/public/terrain/19/858558/353999.terrain b/public/terrain/19/858558/353999.terrain new file mode 100644 index 000000000..22b81ba6a Binary files /dev/null and b/public/terrain/19/858558/353999.terrain differ diff --git a/public/terrain/19/858558/354000.terrain b/public/terrain/19/858558/354000.terrain new file mode 100644 index 000000000..f5d8755a2 Binary files /dev/null and b/public/terrain/19/858558/354000.terrain differ diff --git a/public/terrain/19/858558/354001.terrain b/public/terrain/19/858558/354001.terrain new file mode 100644 index 000000000..0c4fa8cf4 Binary files /dev/null and b/public/terrain/19/858558/354001.terrain differ diff --git a/public/terrain/19/858558/354002.terrain b/public/terrain/19/858558/354002.terrain new file mode 100644 index 000000000..5dd6e078a Binary files /dev/null and b/public/terrain/19/858558/354002.terrain differ diff --git a/public/terrain/19/858558/354003.terrain b/public/terrain/19/858558/354003.terrain new file mode 100644 index 000000000..e835fe3b7 Binary files /dev/null and b/public/terrain/19/858558/354003.terrain differ diff --git a/public/terrain/19/858558/354004.terrain b/public/terrain/19/858558/354004.terrain new file mode 100644 index 000000000..4797cfd61 Binary files /dev/null and b/public/terrain/19/858558/354004.terrain differ diff --git a/public/terrain/19/858558/354005.terrain b/public/terrain/19/858558/354005.terrain new file mode 100644 index 000000000..54162c3d0 Binary files /dev/null and b/public/terrain/19/858558/354005.terrain differ diff --git a/public/terrain/19/858558/354006.terrain b/public/terrain/19/858558/354006.terrain new file mode 100644 index 000000000..1215776d8 Binary files /dev/null and b/public/terrain/19/858558/354006.terrain differ diff --git a/public/terrain/19/858558/354007.terrain b/public/terrain/19/858558/354007.terrain new file mode 100644 index 000000000..050ab9843 Binary files /dev/null and b/public/terrain/19/858558/354007.terrain differ diff --git a/public/terrain/19/858558/354008.terrain b/public/terrain/19/858558/354008.terrain new file mode 100644 index 000000000..580205da5 Binary files /dev/null and b/public/terrain/19/858558/354008.terrain differ diff --git a/public/terrain/19/858558/354009.terrain b/public/terrain/19/858558/354009.terrain new file mode 100644 index 000000000..c3aa75da1 Binary files /dev/null and b/public/terrain/19/858558/354009.terrain differ diff --git a/public/terrain/19/858558/354010.terrain b/public/terrain/19/858558/354010.terrain new file mode 100644 index 000000000..ff8d3ecbc Binary files /dev/null and b/public/terrain/19/858558/354010.terrain differ diff --git a/public/terrain/19/858558/354011.terrain b/public/terrain/19/858558/354011.terrain new file mode 100644 index 000000000..13d36e053 Binary files /dev/null and b/public/terrain/19/858558/354011.terrain differ diff --git a/public/terrain/19/858558/354012.terrain b/public/terrain/19/858558/354012.terrain new file mode 100644 index 000000000..81e590251 Binary files /dev/null and b/public/terrain/19/858558/354012.terrain differ diff --git a/public/terrain/19/858558/354013.terrain b/public/terrain/19/858558/354013.terrain new file mode 100644 index 000000000..e75a35148 Binary files /dev/null and b/public/terrain/19/858558/354013.terrain differ diff --git a/public/terrain/19/858558/354014.terrain b/public/terrain/19/858558/354014.terrain new file mode 100644 index 000000000..50447fb8f Binary files /dev/null and b/public/terrain/19/858558/354014.terrain differ diff --git a/public/terrain/19/858558/354015.terrain b/public/terrain/19/858558/354015.terrain new file mode 100644 index 000000000..c64c8d050 Binary files /dev/null and b/public/terrain/19/858558/354015.terrain differ diff --git a/public/terrain/19/858558/354016.terrain b/public/terrain/19/858558/354016.terrain new file mode 100644 index 000000000..dbcf057d9 Binary files /dev/null and b/public/terrain/19/858558/354016.terrain differ diff --git a/public/terrain/19/858558/354017.terrain b/public/terrain/19/858558/354017.terrain new file mode 100644 index 000000000..f1a3b3a66 Binary files /dev/null and b/public/terrain/19/858558/354017.terrain differ diff --git a/public/terrain/19/858558/354018.terrain b/public/terrain/19/858558/354018.terrain new file mode 100644 index 000000000..858cee1b8 Binary files /dev/null and b/public/terrain/19/858558/354018.terrain differ diff --git a/public/terrain/19/858558/354019.terrain b/public/terrain/19/858558/354019.terrain new file mode 100644 index 000000000..cc43792ef Binary files /dev/null and b/public/terrain/19/858558/354019.terrain differ diff --git a/public/terrain/19/858558/354020.terrain b/public/terrain/19/858558/354020.terrain new file mode 100644 index 000000000..a7d3f174e Binary files /dev/null and b/public/terrain/19/858558/354020.terrain differ diff --git a/public/terrain/19/858558/354021.terrain b/public/terrain/19/858558/354021.terrain new file mode 100644 index 000000000..e91286547 Binary files /dev/null and b/public/terrain/19/858558/354021.terrain differ diff --git a/public/terrain/19/858558/354022.terrain b/public/terrain/19/858558/354022.terrain new file mode 100644 index 000000000..2d8c43c93 Binary files /dev/null and b/public/terrain/19/858558/354022.terrain differ diff --git a/public/terrain/19/858558/354023.terrain b/public/terrain/19/858558/354023.terrain new file mode 100644 index 000000000..cf57e4461 Binary files /dev/null and b/public/terrain/19/858558/354023.terrain differ diff --git a/public/terrain/19/858558/354024.terrain b/public/terrain/19/858558/354024.terrain new file mode 100644 index 000000000..4ef5d9953 Binary files /dev/null and b/public/terrain/19/858558/354024.terrain differ diff --git a/public/terrain/19/858558/354025.terrain b/public/terrain/19/858558/354025.terrain new file mode 100644 index 000000000..8a503d6d0 Binary files /dev/null and b/public/terrain/19/858558/354025.terrain differ diff --git a/public/terrain/19/858558/354026.terrain b/public/terrain/19/858558/354026.terrain new file mode 100644 index 000000000..bc23abe49 Binary files /dev/null and b/public/terrain/19/858558/354026.terrain differ diff --git a/public/terrain/19/858558/354027.terrain b/public/terrain/19/858558/354027.terrain new file mode 100644 index 000000000..5a1428ef8 Binary files /dev/null and b/public/terrain/19/858558/354027.terrain differ diff --git a/public/terrain/19/858558/354028.terrain b/public/terrain/19/858558/354028.terrain new file mode 100644 index 000000000..a8547b799 Binary files /dev/null and b/public/terrain/19/858558/354028.terrain differ diff --git a/public/terrain/19/858558/354029.terrain b/public/terrain/19/858558/354029.terrain new file mode 100644 index 000000000..1879d5afc Binary files /dev/null and b/public/terrain/19/858558/354029.terrain differ diff --git a/public/terrain/19/858558/354030.terrain b/public/terrain/19/858558/354030.terrain new file mode 100644 index 000000000..37944492b Binary files /dev/null and b/public/terrain/19/858558/354030.terrain differ diff --git a/public/terrain/19/858558/354031.terrain b/public/terrain/19/858558/354031.terrain new file mode 100644 index 000000000..d8dcf85fd Binary files /dev/null and b/public/terrain/19/858558/354031.terrain differ diff --git a/public/terrain/19/858558/354032.terrain b/public/terrain/19/858558/354032.terrain new file mode 100644 index 000000000..3831bba40 Binary files /dev/null and b/public/terrain/19/858558/354032.terrain differ diff --git a/public/terrain/19/858558/354033.terrain b/public/terrain/19/858558/354033.terrain new file mode 100644 index 000000000..afb1677b6 Binary files /dev/null and b/public/terrain/19/858558/354033.terrain differ diff --git a/public/terrain/19/858558/354034.terrain b/public/terrain/19/858558/354034.terrain new file mode 100644 index 000000000..0acfc7438 Binary files /dev/null and b/public/terrain/19/858558/354034.terrain differ diff --git a/public/terrain/19/858558/354035.terrain b/public/terrain/19/858558/354035.terrain new file mode 100644 index 000000000..db3ad7285 Binary files /dev/null and b/public/terrain/19/858558/354035.terrain differ diff --git a/public/terrain/19/858558/354036.terrain b/public/terrain/19/858558/354036.terrain new file mode 100644 index 000000000..6ceabaece Binary files /dev/null and b/public/terrain/19/858558/354036.terrain differ diff --git a/public/terrain/19/858558/354037.terrain b/public/terrain/19/858558/354037.terrain new file mode 100644 index 000000000..52a5842a0 Binary files /dev/null and b/public/terrain/19/858558/354037.terrain differ diff --git a/public/terrain/19/858558/354038.terrain b/public/terrain/19/858558/354038.terrain new file mode 100644 index 000000000..75a402297 Binary files /dev/null and b/public/terrain/19/858558/354038.terrain differ diff --git a/public/terrain/19/858558/354039.terrain b/public/terrain/19/858558/354039.terrain new file mode 100644 index 000000000..769087bb1 Binary files /dev/null and b/public/terrain/19/858558/354039.terrain differ diff --git a/public/terrain/19/858558/354040.terrain b/public/terrain/19/858558/354040.terrain new file mode 100644 index 000000000..5c7cefb8f Binary files /dev/null and b/public/terrain/19/858558/354040.terrain differ diff --git a/public/terrain/19/858558/354041.terrain b/public/terrain/19/858558/354041.terrain new file mode 100644 index 000000000..6f417f900 Binary files /dev/null and b/public/terrain/19/858558/354041.terrain differ diff --git a/public/terrain/19/858558/354042.terrain b/public/terrain/19/858558/354042.terrain new file mode 100644 index 000000000..5585a0f73 Binary files /dev/null and b/public/terrain/19/858558/354042.terrain differ diff --git a/public/terrain/19/858558/354043.terrain b/public/terrain/19/858558/354043.terrain new file mode 100644 index 000000000..2028106bd Binary files /dev/null and b/public/terrain/19/858558/354043.terrain differ diff --git a/public/terrain/19/858558/354044.terrain b/public/terrain/19/858558/354044.terrain new file mode 100644 index 000000000..b47b17503 Binary files /dev/null and b/public/terrain/19/858558/354044.terrain differ diff --git a/public/terrain/19/858558/354045.terrain b/public/terrain/19/858558/354045.terrain new file mode 100644 index 000000000..6a8a355fd Binary files /dev/null and b/public/terrain/19/858558/354045.terrain differ diff --git a/public/terrain/19/858558/354046.terrain b/public/terrain/19/858558/354046.terrain new file mode 100644 index 000000000..7774e1998 Binary files /dev/null and b/public/terrain/19/858558/354046.terrain differ diff --git a/public/terrain/19/858558/354047.terrain b/public/terrain/19/858558/354047.terrain new file mode 100644 index 000000000..15a130134 Binary files /dev/null and b/public/terrain/19/858558/354047.terrain differ diff --git a/public/terrain/19/858558/354048.terrain b/public/terrain/19/858558/354048.terrain new file mode 100644 index 000000000..2f5310ff6 Binary files /dev/null and b/public/terrain/19/858558/354048.terrain differ diff --git a/public/terrain/19/858558/354049.terrain b/public/terrain/19/858558/354049.terrain new file mode 100644 index 000000000..450201e81 Binary files /dev/null and b/public/terrain/19/858558/354049.terrain differ diff --git a/public/terrain/19/858558/354050.terrain b/public/terrain/19/858558/354050.terrain new file mode 100644 index 000000000..25e083b43 Binary files /dev/null and b/public/terrain/19/858558/354050.terrain differ diff --git a/public/terrain/19/858558/354051.terrain b/public/terrain/19/858558/354051.terrain new file mode 100644 index 000000000..21cb90443 Binary files /dev/null and b/public/terrain/19/858558/354051.terrain differ diff --git a/public/terrain/19/858558/354052.terrain b/public/terrain/19/858558/354052.terrain new file mode 100644 index 000000000..596ccd118 Binary files /dev/null and b/public/terrain/19/858558/354052.terrain differ diff --git a/public/terrain/19/858558/354053.terrain b/public/terrain/19/858558/354053.terrain new file mode 100644 index 000000000..102a1dff8 Binary files /dev/null and b/public/terrain/19/858558/354053.terrain differ diff --git a/public/terrain/19/858558/354054.terrain b/public/terrain/19/858558/354054.terrain new file mode 100644 index 000000000..131668a1e Binary files /dev/null and b/public/terrain/19/858558/354054.terrain differ diff --git a/public/terrain/19/858558/354055.terrain b/public/terrain/19/858558/354055.terrain new file mode 100644 index 000000000..67bfc7935 Binary files /dev/null and b/public/terrain/19/858558/354055.terrain differ diff --git a/public/terrain/19/858558/354056.terrain b/public/terrain/19/858558/354056.terrain new file mode 100644 index 000000000..21630e110 Binary files /dev/null and b/public/terrain/19/858558/354056.terrain differ diff --git a/public/terrain/19/858558/354057.terrain b/public/terrain/19/858558/354057.terrain new file mode 100644 index 000000000..bf24100cc Binary files /dev/null and b/public/terrain/19/858558/354057.terrain differ diff --git a/public/terrain/19/858558/354058.terrain b/public/terrain/19/858558/354058.terrain new file mode 100644 index 000000000..72df16e46 Binary files /dev/null and b/public/terrain/19/858558/354058.terrain differ diff --git a/public/terrain/19/858558/354059.terrain b/public/terrain/19/858558/354059.terrain new file mode 100644 index 000000000..dae2e13a5 Binary files /dev/null and b/public/terrain/19/858558/354059.terrain differ diff --git a/public/terrain/19/858559/353743.terrain b/public/terrain/19/858559/353743.terrain new file mode 100644 index 000000000..1e7899441 Binary files /dev/null and b/public/terrain/19/858559/353743.terrain differ diff --git a/public/terrain/19/858559/353744.terrain b/public/terrain/19/858559/353744.terrain new file mode 100644 index 000000000..960b46bad Binary files /dev/null and b/public/terrain/19/858559/353744.terrain differ diff --git a/public/terrain/19/858559/353745.terrain b/public/terrain/19/858559/353745.terrain new file mode 100644 index 000000000..34e015d4d Binary files /dev/null and b/public/terrain/19/858559/353745.terrain differ diff --git a/public/terrain/19/858559/353746.terrain b/public/terrain/19/858559/353746.terrain new file mode 100644 index 000000000..5a206f020 Binary files /dev/null and b/public/terrain/19/858559/353746.terrain differ diff --git a/public/terrain/19/858559/353747.terrain b/public/terrain/19/858559/353747.terrain new file mode 100644 index 000000000..87e2ab269 Binary files /dev/null and b/public/terrain/19/858559/353747.terrain differ diff --git a/public/terrain/19/858559/353748.terrain b/public/terrain/19/858559/353748.terrain new file mode 100644 index 000000000..d21619f35 Binary files /dev/null and b/public/terrain/19/858559/353748.terrain differ diff --git a/public/terrain/19/858559/353749.terrain b/public/terrain/19/858559/353749.terrain new file mode 100644 index 000000000..1a61e3c70 Binary files /dev/null and b/public/terrain/19/858559/353749.terrain differ diff --git a/public/terrain/19/858559/353750.terrain b/public/terrain/19/858559/353750.terrain new file mode 100644 index 000000000..e78cfac4a Binary files /dev/null and b/public/terrain/19/858559/353750.terrain differ diff --git a/public/terrain/19/858559/353751.terrain b/public/terrain/19/858559/353751.terrain new file mode 100644 index 000000000..ce88d13e3 Binary files /dev/null and b/public/terrain/19/858559/353751.terrain differ diff --git a/public/terrain/19/858559/353752.terrain b/public/terrain/19/858559/353752.terrain new file mode 100644 index 000000000..d17289171 Binary files /dev/null and b/public/terrain/19/858559/353752.terrain differ diff --git a/public/terrain/19/858559/353753.terrain b/public/terrain/19/858559/353753.terrain new file mode 100644 index 000000000..fa0678158 Binary files /dev/null and b/public/terrain/19/858559/353753.terrain differ diff --git a/public/terrain/19/858559/353754.terrain b/public/terrain/19/858559/353754.terrain new file mode 100644 index 000000000..f7c2fc5bb Binary files /dev/null and b/public/terrain/19/858559/353754.terrain differ diff --git a/public/terrain/19/858559/353755.terrain b/public/terrain/19/858559/353755.terrain new file mode 100644 index 000000000..d300ab21f Binary files /dev/null and b/public/terrain/19/858559/353755.terrain differ diff --git a/public/terrain/19/858559/353756.terrain b/public/terrain/19/858559/353756.terrain new file mode 100644 index 000000000..6ab5763e7 Binary files /dev/null and b/public/terrain/19/858559/353756.terrain differ diff --git a/public/terrain/19/858559/353757.terrain b/public/terrain/19/858559/353757.terrain new file mode 100644 index 000000000..a774199e3 Binary files /dev/null and b/public/terrain/19/858559/353757.terrain differ diff --git a/public/terrain/19/858559/353758.terrain b/public/terrain/19/858559/353758.terrain new file mode 100644 index 000000000..628f5d2b5 Binary files /dev/null and b/public/terrain/19/858559/353758.terrain differ diff --git a/public/terrain/19/858559/353759.terrain b/public/terrain/19/858559/353759.terrain new file mode 100644 index 000000000..60553e6fa Binary files /dev/null and b/public/terrain/19/858559/353759.terrain differ diff --git a/public/terrain/19/858559/353760.terrain b/public/terrain/19/858559/353760.terrain new file mode 100644 index 000000000..43a8bb21e Binary files /dev/null and b/public/terrain/19/858559/353760.terrain differ diff --git a/public/terrain/19/858559/353761.terrain b/public/terrain/19/858559/353761.terrain new file mode 100644 index 000000000..27a9ac1bd Binary files /dev/null and b/public/terrain/19/858559/353761.terrain differ diff --git a/public/terrain/19/858559/353762.terrain b/public/terrain/19/858559/353762.terrain new file mode 100644 index 000000000..2b8c16019 Binary files /dev/null and b/public/terrain/19/858559/353762.terrain differ diff --git a/public/terrain/19/858559/353763.terrain b/public/terrain/19/858559/353763.terrain new file mode 100644 index 000000000..3e1fd6566 Binary files /dev/null and b/public/terrain/19/858559/353763.terrain differ diff --git a/public/terrain/19/858559/353764.terrain b/public/terrain/19/858559/353764.terrain new file mode 100644 index 000000000..86019e675 Binary files /dev/null and b/public/terrain/19/858559/353764.terrain differ diff --git a/public/terrain/19/858559/353765.terrain b/public/terrain/19/858559/353765.terrain new file mode 100644 index 000000000..e44326a84 Binary files /dev/null and b/public/terrain/19/858559/353765.terrain differ diff --git a/public/terrain/19/858559/353766.terrain b/public/terrain/19/858559/353766.terrain new file mode 100644 index 000000000..1bdb05332 Binary files /dev/null and b/public/terrain/19/858559/353766.terrain differ diff --git a/public/terrain/19/858559/353767.terrain b/public/terrain/19/858559/353767.terrain new file mode 100644 index 000000000..feaf0068b Binary files /dev/null and b/public/terrain/19/858559/353767.terrain differ diff --git a/public/terrain/19/858559/353768.terrain b/public/terrain/19/858559/353768.terrain new file mode 100644 index 000000000..c21b13f78 Binary files /dev/null and b/public/terrain/19/858559/353768.terrain differ diff --git a/public/terrain/19/858559/353769.terrain b/public/terrain/19/858559/353769.terrain new file mode 100644 index 000000000..a70fbfe6f Binary files /dev/null and b/public/terrain/19/858559/353769.terrain differ diff --git a/public/terrain/19/858559/353770.terrain b/public/terrain/19/858559/353770.terrain new file mode 100644 index 000000000..f35dea348 Binary files /dev/null and b/public/terrain/19/858559/353770.terrain differ diff --git a/public/terrain/19/858559/353771.terrain b/public/terrain/19/858559/353771.terrain new file mode 100644 index 000000000..38aa60fdf Binary files /dev/null and b/public/terrain/19/858559/353771.terrain differ diff --git a/public/terrain/19/858559/353772.terrain b/public/terrain/19/858559/353772.terrain new file mode 100644 index 000000000..39e8307bc Binary files /dev/null and b/public/terrain/19/858559/353772.terrain differ diff --git a/public/terrain/19/858559/353773.terrain b/public/terrain/19/858559/353773.terrain new file mode 100644 index 000000000..a9356a716 Binary files /dev/null and b/public/terrain/19/858559/353773.terrain differ diff --git a/public/terrain/19/858559/353774.terrain b/public/terrain/19/858559/353774.terrain new file mode 100644 index 000000000..1a6596cc5 Binary files /dev/null and b/public/terrain/19/858559/353774.terrain differ diff --git a/public/terrain/19/858559/353775.terrain b/public/terrain/19/858559/353775.terrain new file mode 100644 index 000000000..1d23b3d9c Binary files /dev/null and b/public/terrain/19/858559/353775.terrain differ diff --git a/public/terrain/19/858559/353776.terrain b/public/terrain/19/858559/353776.terrain new file mode 100644 index 000000000..7d4c6bb02 Binary files /dev/null and b/public/terrain/19/858559/353776.terrain differ diff --git a/public/terrain/19/858559/353777.terrain b/public/terrain/19/858559/353777.terrain new file mode 100644 index 000000000..0bd25ae14 Binary files /dev/null and b/public/terrain/19/858559/353777.terrain differ diff --git a/public/terrain/19/858559/353778.terrain b/public/terrain/19/858559/353778.terrain new file mode 100644 index 000000000..f04661aec Binary files /dev/null and b/public/terrain/19/858559/353778.terrain differ diff --git a/public/terrain/19/858559/353779.terrain b/public/terrain/19/858559/353779.terrain new file mode 100644 index 000000000..544307053 Binary files /dev/null and b/public/terrain/19/858559/353779.terrain differ diff --git a/public/terrain/19/858559/353780.terrain b/public/terrain/19/858559/353780.terrain new file mode 100644 index 000000000..406d2e444 Binary files /dev/null and b/public/terrain/19/858559/353780.terrain differ diff --git a/public/terrain/19/858559/353781.terrain b/public/terrain/19/858559/353781.terrain new file mode 100644 index 000000000..7ffb09c26 Binary files /dev/null and b/public/terrain/19/858559/353781.terrain differ diff --git a/public/terrain/19/858559/353782.terrain b/public/terrain/19/858559/353782.terrain new file mode 100644 index 000000000..c2598bd1f Binary files /dev/null and b/public/terrain/19/858559/353782.terrain differ diff --git a/public/terrain/19/858559/353783.terrain b/public/terrain/19/858559/353783.terrain new file mode 100644 index 000000000..3ff4825c4 Binary files /dev/null and b/public/terrain/19/858559/353783.terrain differ diff --git a/public/terrain/19/858559/353784.terrain b/public/terrain/19/858559/353784.terrain new file mode 100644 index 000000000..07a41ffb0 Binary files /dev/null and b/public/terrain/19/858559/353784.terrain differ diff --git a/public/terrain/19/858559/353785.terrain b/public/terrain/19/858559/353785.terrain new file mode 100644 index 000000000..ec08ebc30 Binary files /dev/null and b/public/terrain/19/858559/353785.terrain differ diff --git a/public/terrain/19/858559/353786.terrain b/public/terrain/19/858559/353786.terrain new file mode 100644 index 000000000..19e067847 Binary files /dev/null and b/public/terrain/19/858559/353786.terrain differ diff --git a/public/terrain/19/858559/353787.terrain b/public/terrain/19/858559/353787.terrain new file mode 100644 index 000000000..91a3495d4 Binary files /dev/null and b/public/terrain/19/858559/353787.terrain differ diff --git a/public/terrain/19/858559/353788.terrain b/public/terrain/19/858559/353788.terrain new file mode 100644 index 000000000..8308c8f65 Binary files /dev/null and b/public/terrain/19/858559/353788.terrain differ diff --git a/public/terrain/19/858559/353789.terrain b/public/terrain/19/858559/353789.terrain new file mode 100644 index 000000000..b11c7c8a3 Binary files /dev/null and b/public/terrain/19/858559/353789.terrain differ diff --git a/public/terrain/19/858559/353790.terrain b/public/terrain/19/858559/353790.terrain new file mode 100644 index 000000000..71a13e094 Binary files /dev/null and b/public/terrain/19/858559/353790.terrain differ diff --git a/public/terrain/19/858559/353791.terrain b/public/terrain/19/858559/353791.terrain new file mode 100644 index 000000000..7c5af7372 Binary files /dev/null and b/public/terrain/19/858559/353791.terrain differ diff --git a/public/terrain/19/858559/353792.terrain b/public/terrain/19/858559/353792.terrain new file mode 100644 index 000000000..8a0cb5dd3 Binary files /dev/null and b/public/terrain/19/858559/353792.terrain differ diff --git a/public/terrain/19/858559/353793.terrain b/public/terrain/19/858559/353793.terrain new file mode 100644 index 000000000..092219b4b Binary files /dev/null and b/public/terrain/19/858559/353793.terrain differ diff --git a/public/terrain/19/858559/353794.terrain b/public/terrain/19/858559/353794.terrain new file mode 100644 index 000000000..41a54771e Binary files /dev/null and b/public/terrain/19/858559/353794.terrain differ diff --git a/public/terrain/19/858559/353795.terrain b/public/terrain/19/858559/353795.terrain new file mode 100644 index 000000000..b1607039c Binary files /dev/null and b/public/terrain/19/858559/353795.terrain differ diff --git a/public/terrain/19/858559/353796.terrain b/public/terrain/19/858559/353796.terrain new file mode 100644 index 000000000..3bbab698f Binary files /dev/null and b/public/terrain/19/858559/353796.terrain differ diff --git a/public/terrain/19/858559/353797.terrain b/public/terrain/19/858559/353797.terrain new file mode 100644 index 000000000..ffb082c49 Binary files /dev/null and b/public/terrain/19/858559/353797.terrain differ diff --git a/public/terrain/19/858559/353798.terrain b/public/terrain/19/858559/353798.terrain new file mode 100644 index 000000000..3b0f3a808 Binary files /dev/null and b/public/terrain/19/858559/353798.terrain differ diff --git a/public/terrain/19/858559/353799.terrain b/public/terrain/19/858559/353799.terrain new file mode 100644 index 000000000..743fb21de Binary files /dev/null and b/public/terrain/19/858559/353799.terrain differ diff --git a/public/terrain/19/858559/353800.terrain b/public/terrain/19/858559/353800.terrain new file mode 100644 index 000000000..4998fbb4e Binary files /dev/null and b/public/terrain/19/858559/353800.terrain differ diff --git a/public/terrain/19/858559/353801.terrain b/public/terrain/19/858559/353801.terrain new file mode 100644 index 000000000..955345b56 Binary files /dev/null and b/public/terrain/19/858559/353801.terrain differ diff --git a/public/terrain/19/858559/353802.terrain b/public/terrain/19/858559/353802.terrain new file mode 100644 index 000000000..8347328e6 Binary files /dev/null and b/public/terrain/19/858559/353802.terrain differ diff --git a/public/terrain/19/858559/353803.terrain b/public/terrain/19/858559/353803.terrain new file mode 100644 index 000000000..03012bebd Binary files /dev/null and b/public/terrain/19/858559/353803.terrain differ diff --git a/public/terrain/19/858559/353804.terrain b/public/terrain/19/858559/353804.terrain new file mode 100644 index 000000000..5b4d352fa Binary files /dev/null and b/public/terrain/19/858559/353804.terrain differ diff --git a/public/terrain/19/858559/353805.terrain b/public/terrain/19/858559/353805.terrain new file mode 100644 index 000000000..a30d5b0c4 Binary files /dev/null and b/public/terrain/19/858559/353805.terrain differ diff --git a/public/terrain/19/858559/353806.terrain b/public/terrain/19/858559/353806.terrain new file mode 100644 index 000000000..dbce9281b Binary files /dev/null and b/public/terrain/19/858559/353806.terrain differ diff --git a/public/terrain/19/858559/353807.terrain b/public/terrain/19/858559/353807.terrain new file mode 100644 index 000000000..d6cf32ab8 Binary files /dev/null and b/public/terrain/19/858559/353807.terrain differ diff --git a/public/terrain/19/858559/353808.terrain b/public/terrain/19/858559/353808.terrain new file mode 100644 index 000000000..377d486a9 Binary files /dev/null and b/public/terrain/19/858559/353808.terrain differ diff --git a/public/terrain/19/858559/353809.terrain b/public/terrain/19/858559/353809.terrain new file mode 100644 index 000000000..7b2fcb76a Binary files /dev/null and b/public/terrain/19/858559/353809.terrain differ diff --git a/public/terrain/19/858559/353810.terrain b/public/terrain/19/858559/353810.terrain new file mode 100644 index 000000000..3219f8b00 Binary files /dev/null and b/public/terrain/19/858559/353810.terrain differ diff --git a/public/terrain/19/858559/353811.terrain b/public/terrain/19/858559/353811.terrain new file mode 100644 index 000000000..0ffa27295 Binary files /dev/null and b/public/terrain/19/858559/353811.terrain differ diff --git a/public/terrain/19/858559/353812.terrain b/public/terrain/19/858559/353812.terrain new file mode 100644 index 000000000..82221b4ae Binary files /dev/null and b/public/terrain/19/858559/353812.terrain differ diff --git a/public/terrain/19/858559/353813.terrain b/public/terrain/19/858559/353813.terrain new file mode 100644 index 000000000..760d03d4b Binary files /dev/null and b/public/terrain/19/858559/353813.terrain differ diff --git a/public/terrain/19/858559/353814.terrain b/public/terrain/19/858559/353814.terrain new file mode 100644 index 000000000..0c134be6b Binary files /dev/null and b/public/terrain/19/858559/353814.terrain differ diff --git a/public/terrain/19/858559/353815.terrain b/public/terrain/19/858559/353815.terrain new file mode 100644 index 000000000..5e061e0d6 Binary files /dev/null and b/public/terrain/19/858559/353815.terrain differ diff --git a/public/terrain/19/858559/353816.terrain b/public/terrain/19/858559/353816.terrain new file mode 100644 index 000000000..d87b7c1b6 Binary files /dev/null and b/public/terrain/19/858559/353816.terrain differ diff --git a/public/terrain/19/858559/353817.terrain b/public/terrain/19/858559/353817.terrain new file mode 100644 index 000000000..dba6c1296 Binary files /dev/null and b/public/terrain/19/858559/353817.terrain differ diff --git a/public/terrain/19/858559/353818.terrain b/public/terrain/19/858559/353818.terrain new file mode 100644 index 000000000..dbc5ade69 Binary files /dev/null and b/public/terrain/19/858559/353818.terrain differ diff --git a/public/terrain/19/858559/353819.terrain b/public/terrain/19/858559/353819.terrain new file mode 100644 index 000000000..1fc1779fc Binary files /dev/null and b/public/terrain/19/858559/353819.terrain differ diff --git a/public/terrain/19/858559/353820.terrain b/public/terrain/19/858559/353820.terrain new file mode 100644 index 000000000..a1d55b364 Binary files /dev/null and b/public/terrain/19/858559/353820.terrain differ diff --git a/public/terrain/19/858559/353821.terrain b/public/terrain/19/858559/353821.terrain new file mode 100644 index 000000000..a437b05e8 Binary files /dev/null and b/public/terrain/19/858559/353821.terrain differ diff --git a/public/terrain/19/858559/353822.terrain b/public/terrain/19/858559/353822.terrain new file mode 100644 index 000000000..54192af0d Binary files /dev/null and b/public/terrain/19/858559/353822.terrain differ diff --git a/public/terrain/19/858559/353823.terrain b/public/terrain/19/858559/353823.terrain new file mode 100644 index 000000000..03d53d16b Binary files /dev/null and b/public/terrain/19/858559/353823.terrain differ diff --git a/public/terrain/19/858559/353824.terrain b/public/terrain/19/858559/353824.terrain new file mode 100644 index 000000000..fddf2dddc Binary files /dev/null and b/public/terrain/19/858559/353824.terrain differ diff --git a/public/terrain/19/858559/353825.terrain b/public/terrain/19/858559/353825.terrain new file mode 100644 index 000000000..8b1431d30 Binary files /dev/null and b/public/terrain/19/858559/353825.terrain differ diff --git a/public/terrain/19/858559/353826.terrain b/public/terrain/19/858559/353826.terrain new file mode 100644 index 000000000..27d86bb81 Binary files /dev/null and b/public/terrain/19/858559/353826.terrain differ diff --git a/public/terrain/19/858559/353827.terrain b/public/terrain/19/858559/353827.terrain new file mode 100644 index 000000000..0328f46ad Binary files /dev/null and b/public/terrain/19/858559/353827.terrain differ diff --git a/public/terrain/19/858559/353828.terrain b/public/terrain/19/858559/353828.terrain new file mode 100644 index 000000000..9ff1cfcd6 Binary files /dev/null and b/public/terrain/19/858559/353828.terrain differ diff --git a/public/terrain/19/858559/353829.terrain b/public/terrain/19/858559/353829.terrain new file mode 100644 index 000000000..3d4198718 Binary files /dev/null and b/public/terrain/19/858559/353829.terrain differ diff --git a/public/terrain/19/858559/353830.terrain b/public/terrain/19/858559/353830.terrain new file mode 100644 index 000000000..bed21d753 Binary files /dev/null and b/public/terrain/19/858559/353830.terrain differ diff --git a/public/terrain/19/858559/353831.terrain b/public/terrain/19/858559/353831.terrain new file mode 100644 index 000000000..29cc04357 Binary files /dev/null and b/public/terrain/19/858559/353831.terrain differ diff --git a/public/terrain/19/858559/353832.terrain b/public/terrain/19/858559/353832.terrain new file mode 100644 index 000000000..4a323783f Binary files /dev/null and b/public/terrain/19/858559/353832.terrain differ diff --git a/public/terrain/19/858559/353833.terrain b/public/terrain/19/858559/353833.terrain new file mode 100644 index 000000000..d8f1e0030 Binary files /dev/null and b/public/terrain/19/858559/353833.terrain differ diff --git a/public/terrain/19/858559/353834.terrain b/public/terrain/19/858559/353834.terrain new file mode 100644 index 000000000..dca05d204 Binary files /dev/null and b/public/terrain/19/858559/353834.terrain differ diff --git a/public/terrain/19/858559/353835.terrain b/public/terrain/19/858559/353835.terrain new file mode 100644 index 000000000..f3a81890a Binary files /dev/null and b/public/terrain/19/858559/353835.terrain differ diff --git a/public/terrain/19/858559/353836.terrain b/public/terrain/19/858559/353836.terrain new file mode 100644 index 000000000..324ca23ab Binary files /dev/null and b/public/terrain/19/858559/353836.terrain differ diff --git a/public/terrain/19/858559/353837.terrain b/public/terrain/19/858559/353837.terrain new file mode 100644 index 000000000..3f6b83c6c Binary files /dev/null and b/public/terrain/19/858559/353837.terrain differ diff --git a/public/terrain/19/858559/353838.terrain b/public/terrain/19/858559/353838.terrain new file mode 100644 index 000000000..a6245c6c0 Binary files /dev/null and b/public/terrain/19/858559/353838.terrain differ diff --git a/public/terrain/19/858559/353839.terrain b/public/terrain/19/858559/353839.terrain new file mode 100644 index 000000000..b608cef51 Binary files /dev/null and b/public/terrain/19/858559/353839.terrain differ diff --git a/public/terrain/19/858559/353840.terrain b/public/terrain/19/858559/353840.terrain new file mode 100644 index 000000000..ac504624c Binary files /dev/null and b/public/terrain/19/858559/353840.terrain differ diff --git a/public/terrain/19/858559/353841.terrain b/public/terrain/19/858559/353841.terrain new file mode 100644 index 000000000..0f8097325 Binary files /dev/null and b/public/terrain/19/858559/353841.terrain differ diff --git a/public/terrain/19/858559/353842.terrain b/public/terrain/19/858559/353842.terrain new file mode 100644 index 000000000..3171dbcfc Binary files /dev/null and b/public/terrain/19/858559/353842.terrain differ diff --git a/public/terrain/19/858559/353843.terrain b/public/terrain/19/858559/353843.terrain new file mode 100644 index 000000000..54402a142 Binary files /dev/null and b/public/terrain/19/858559/353843.terrain differ diff --git a/public/terrain/19/858559/353844.terrain b/public/terrain/19/858559/353844.terrain new file mode 100644 index 000000000..ac72dd78d Binary files /dev/null and b/public/terrain/19/858559/353844.terrain differ diff --git a/public/terrain/19/858559/353845.terrain b/public/terrain/19/858559/353845.terrain new file mode 100644 index 000000000..ca1055e38 Binary files /dev/null and b/public/terrain/19/858559/353845.terrain differ diff --git a/public/terrain/19/858559/353846.terrain b/public/terrain/19/858559/353846.terrain new file mode 100644 index 000000000..c726680f9 Binary files /dev/null and b/public/terrain/19/858559/353846.terrain differ diff --git a/public/terrain/19/858559/353847.terrain b/public/terrain/19/858559/353847.terrain new file mode 100644 index 000000000..63a84fdad Binary files /dev/null and b/public/terrain/19/858559/353847.terrain differ diff --git a/public/terrain/19/858559/353848.terrain b/public/terrain/19/858559/353848.terrain new file mode 100644 index 000000000..d56caf698 Binary files /dev/null and b/public/terrain/19/858559/353848.terrain differ diff --git a/public/terrain/19/858559/353849.terrain b/public/terrain/19/858559/353849.terrain new file mode 100644 index 000000000..44e650dcf Binary files /dev/null and b/public/terrain/19/858559/353849.terrain differ diff --git a/public/terrain/19/858559/353850.terrain b/public/terrain/19/858559/353850.terrain new file mode 100644 index 000000000..750558350 Binary files /dev/null and b/public/terrain/19/858559/353850.terrain differ diff --git a/public/terrain/19/858559/353851.terrain b/public/terrain/19/858559/353851.terrain new file mode 100644 index 000000000..425f6a3f4 Binary files /dev/null and b/public/terrain/19/858559/353851.terrain differ diff --git a/public/terrain/19/858559/353852.terrain b/public/terrain/19/858559/353852.terrain new file mode 100644 index 000000000..f168ff819 Binary files /dev/null and b/public/terrain/19/858559/353852.terrain differ diff --git a/public/terrain/19/858559/353853.terrain b/public/terrain/19/858559/353853.terrain new file mode 100644 index 000000000..24dc4167b Binary files /dev/null and b/public/terrain/19/858559/353853.terrain differ diff --git a/public/terrain/19/858559/353854.terrain b/public/terrain/19/858559/353854.terrain new file mode 100644 index 000000000..292415733 Binary files /dev/null and b/public/terrain/19/858559/353854.terrain differ diff --git a/public/terrain/19/858559/353855.terrain b/public/terrain/19/858559/353855.terrain new file mode 100644 index 000000000..c1bdcf0f8 Binary files /dev/null and b/public/terrain/19/858559/353855.terrain differ diff --git a/public/terrain/19/858559/353856.terrain b/public/terrain/19/858559/353856.terrain new file mode 100644 index 000000000..f4bf6215f Binary files /dev/null and b/public/terrain/19/858559/353856.terrain differ diff --git a/public/terrain/19/858559/353857.terrain b/public/terrain/19/858559/353857.terrain new file mode 100644 index 000000000..37d21f8d8 Binary files /dev/null and b/public/terrain/19/858559/353857.terrain differ diff --git a/public/terrain/19/858559/353858.terrain b/public/terrain/19/858559/353858.terrain new file mode 100644 index 000000000..4be964247 Binary files /dev/null and b/public/terrain/19/858559/353858.terrain differ diff --git a/public/terrain/19/858559/353859.terrain b/public/terrain/19/858559/353859.terrain new file mode 100644 index 000000000..9d3546244 Binary files /dev/null and b/public/terrain/19/858559/353859.terrain differ diff --git a/public/terrain/19/858559/353860.terrain b/public/terrain/19/858559/353860.terrain new file mode 100644 index 000000000..6f056e275 Binary files /dev/null and b/public/terrain/19/858559/353860.terrain differ diff --git a/public/terrain/19/858559/353861.terrain b/public/terrain/19/858559/353861.terrain new file mode 100644 index 000000000..a02dbfa68 Binary files /dev/null and b/public/terrain/19/858559/353861.terrain differ diff --git a/public/terrain/19/858559/353862.terrain b/public/terrain/19/858559/353862.terrain new file mode 100644 index 000000000..0d2951999 Binary files /dev/null and b/public/terrain/19/858559/353862.terrain differ diff --git a/public/terrain/19/858559/353863.terrain b/public/terrain/19/858559/353863.terrain new file mode 100644 index 000000000..49e3852fc Binary files /dev/null and b/public/terrain/19/858559/353863.terrain differ diff --git a/public/terrain/19/858559/353864.terrain b/public/terrain/19/858559/353864.terrain new file mode 100644 index 000000000..d79d4d537 Binary files /dev/null and b/public/terrain/19/858559/353864.terrain differ diff --git a/public/terrain/19/858559/353865.terrain b/public/terrain/19/858559/353865.terrain new file mode 100644 index 000000000..f3f17b46a Binary files /dev/null and b/public/terrain/19/858559/353865.terrain differ diff --git a/public/terrain/19/858559/353866.terrain b/public/terrain/19/858559/353866.terrain new file mode 100644 index 000000000..14309d753 Binary files /dev/null and b/public/terrain/19/858559/353866.terrain differ diff --git a/public/terrain/19/858559/353867.terrain b/public/terrain/19/858559/353867.terrain new file mode 100644 index 000000000..d8e2ef070 Binary files /dev/null and b/public/terrain/19/858559/353867.terrain differ diff --git a/public/terrain/19/858559/353868.terrain b/public/terrain/19/858559/353868.terrain new file mode 100644 index 000000000..4eb1425a5 Binary files /dev/null and b/public/terrain/19/858559/353868.terrain differ diff --git a/public/terrain/19/858559/353869.terrain b/public/terrain/19/858559/353869.terrain new file mode 100644 index 000000000..16030e17c Binary files /dev/null and b/public/terrain/19/858559/353869.terrain differ diff --git a/public/terrain/19/858559/353870.terrain b/public/terrain/19/858559/353870.terrain new file mode 100644 index 000000000..4cb63b9a1 Binary files /dev/null and b/public/terrain/19/858559/353870.terrain differ diff --git a/public/terrain/19/858559/353871.terrain b/public/terrain/19/858559/353871.terrain new file mode 100644 index 000000000..4731938bd Binary files /dev/null and b/public/terrain/19/858559/353871.terrain differ diff --git a/public/terrain/19/858559/353872.terrain b/public/terrain/19/858559/353872.terrain new file mode 100644 index 000000000..4aaedc71f Binary files /dev/null and b/public/terrain/19/858559/353872.terrain differ diff --git a/public/terrain/19/858559/353873.terrain b/public/terrain/19/858559/353873.terrain new file mode 100644 index 000000000..3c50da0c4 Binary files /dev/null and b/public/terrain/19/858559/353873.terrain differ diff --git a/public/terrain/19/858559/353874.terrain b/public/terrain/19/858559/353874.terrain new file mode 100644 index 000000000..f3dd4bd26 Binary files /dev/null and b/public/terrain/19/858559/353874.terrain differ diff --git a/public/terrain/19/858559/353875.terrain b/public/terrain/19/858559/353875.terrain new file mode 100644 index 000000000..15a6c4b21 Binary files /dev/null and b/public/terrain/19/858559/353875.terrain differ diff --git a/public/terrain/19/858559/353876.terrain b/public/terrain/19/858559/353876.terrain new file mode 100644 index 000000000..1ad6adc49 Binary files /dev/null and b/public/terrain/19/858559/353876.terrain differ diff --git a/public/terrain/19/858559/353877.terrain b/public/terrain/19/858559/353877.terrain new file mode 100644 index 000000000..db6c1c7b3 Binary files /dev/null and b/public/terrain/19/858559/353877.terrain differ diff --git a/public/terrain/19/858559/353878.terrain b/public/terrain/19/858559/353878.terrain new file mode 100644 index 000000000..f8604ab15 Binary files /dev/null and b/public/terrain/19/858559/353878.terrain differ diff --git a/public/terrain/19/858559/353879.terrain b/public/terrain/19/858559/353879.terrain new file mode 100644 index 000000000..98fc24d98 Binary files /dev/null and b/public/terrain/19/858559/353879.terrain differ diff --git a/public/terrain/19/858559/353880.terrain b/public/terrain/19/858559/353880.terrain new file mode 100644 index 000000000..f7d8f37cf Binary files /dev/null and b/public/terrain/19/858559/353880.terrain differ diff --git a/public/terrain/19/858559/353881.terrain b/public/terrain/19/858559/353881.terrain new file mode 100644 index 000000000..c618b62db Binary files /dev/null and b/public/terrain/19/858559/353881.terrain differ diff --git a/public/terrain/19/858559/353882.terrain b/public/terrain/19/858559/353882.terrain new file mode 100644 index 000000000..53a6b75c4 Binary files /dev/null and b/public/terrain/19/858559/353882.terrain differ diff --git a/public/terrain/19/858559/353883.terrain b/public/terrain/19/858559/353883.terrain new file mode 100644 index 000000000..110fe1e2c Binary files /dev/null and b/public/terrain/19/858559/353883.terrain differ diff --git a/public/terrain/19/858559/353884.terrain b/public/terrain/19/858559/353884.terrain new file mode 100644 index 000000000..c4c1379d7 Binary files /dev/null and b/public/terrain/19/858559/353884.terrain differ diff --git a/public/terrain/19/858559/353885.terrain b/public/terrain/19/858559/353885.terrain new file mode 100644 index 000000000..76a035a85 Binary files /dev/null and b/public/terrain/19/858559/353885.terrain differ diff --git a/public/terrain/19/858559/353886.terrain b/public/terrain/19/858559/353886.terrain new file mode 100644 index 000000000..20679f9e4 Binary files /dev/null and b/public/terrain/19/858559/353886.terrain differ diff --git a/public/terrain/19/858559/353887.terrain b/public/terrain/19/858559/353887.terrain new file mode 100644 index 000000000..6ba393176 Binary files /dev/null and b/public/terrain/19/858559/353887.terrain differ diff --git a/public/terrain/19/858559/353888.terrain b/public/terrain/19/858559/353888.terrain new file mode 100644 index 000000000..8dcf9417d Binary files /dev/null and b/public/terrain/19/858559/353888.terrain differ diff --git a/public/terrain/19/858559/353889.terrain b/public/terrain/19/858559/353889.terrain new file mode 100644 index 000000000..1ceda1540 Binary files /dev/null and b/public/terrain/19/858559/353889.terrain differ diff --git a/public/terrain/19/858559/353890.terrain b/public/terrain/19/858559/353890.terrain new file mode 100644 index 000000000..3d5246c89 Binary files /dev/null and b/public/terrain/19/858559/353890.terrain differ diff --git a/public/terrain/19/858559/353891.terrain b/public/terrain/19/858559/353891.terrain new file mode 100644 index 000000000..01bf4cfea Binary files /dev/null and b/public/terrain/19/858559/353891.terrain differ diff --git a/public/terrain/19/858559/353892.terrain b/public/terrain/19/858559/353892.terrain new file mode 100644 index 000000000..2facd909e Binary files /dev/null and b/public/terrain/19/858559/353892.terrain differ diff --git a/public/terrain/19/858559/353893.terrain b/public/terrain/19/858559/353893.terrain new file mode 100644 index 000000000..95c4444cc Binary files /dev/null and b/public/terrain/19/858559/353893.terrain differ diff --git a/public/terrain/19/858559/353894.terrain b/public/terrain/19/858559/353894.terrain new file mode 100644 index 000000000..ccce26b0b Binary files /dev/null and b/public/terrain/19/858559/353894.terrain differ diff --git a/public/terrain/19/858559/353895.terrain b/public/terrain/19/858559/353895.terrain new file mode 100644 index 000000000..db0429537 Binary files /dev/null and b/public/terrain/19/858559/353895.terrain differ diff --git a/public/terrain/19/858559/353896.terrain b/public/terrain/19/858559/353896.terrain new file mode 100644 index 000000000..51feeefe6 Binary files /dev/null and b/public/terrain/19/858559/353896.terrain differ diff --git a/public/terrain/19/858559/353897.terrain b/public/terrain/19/858559/353897.terrain new file mode 100644 index 000000000..12382e51d Binary files /dev/null and b/public/terrain/19/858559/353897.terrain differ diff --git a/public/terrain/19/858559/353898.terrain b/public/terrain/19/858559/353898.terrain new file mode 100644 index 000000000..d7e883197 Binary files /dev/null and b/public/terrain/19/858559/353898.terrain differ diff --git a/public/terrain/19/858559/353899.terrain b/public/terrain/19/858559/353899.terrain new file mode 100644 index 000000000..545dbc01c Binary files /dev/null and b/public/terrain/19/858559/353899.terrain differ diff --git a/public/terrain/19/858559/353900.terrain b/public/terrain/19/858559/353900.terrain new file mode 100644 index 000000000..24c4a0278 Binary files /dev/null and b/public/terrain/19/858559/353900.terrain differ diff --git a/public/terrain/19/858559/353901.terrain b/public/terrain/19/858559/353901.terrain new file mode 100644 index 000000000..cd6383a2e Binary files /dev/null and b/public/terrain/19/858559/353901.terrain differ diff --git a/public/terrain/19/858559/353902.terrain b/public/terrain/19/858559/353902.terrain new file mode 100644 index 000000000..5208b1258 Binary files /dev/null and b/public/terrain/19/858559/353902.terrain differ diff --git a/public/terrain/19/858559/353903.terrain b/public/terrain/19/858559/353903.terrain new file mode 100644 index 000000000..9bf7930ef Binary files /dev/null and b/public/terrain/19/858559/353903.terrain differ diff --git a/public/terrain/19/858559/353904.terrain b/public/terrain/19/858559/353904.terrain new file mode 100644 index 000000000..0219dd819 Binary files /dev/null and b/public/terrain/19/858559/353904.terrain differ diff --git a/public/terrain/19/858559/353905.terrain b/public/terrain/19/858559/353905.terrain new file mode 100644 index 000000000..a8f2acb66 Binary files /dev/null and b/public/terrain/19/858559/353905.terrain differ diff --git a/public/terrain/19/858559/353906.terrain b/public/terrain/19/858559/353906.terrain new file mode 100644 index 000000000..ec07252d1 Binary files /dev/null and b/public/terrain/19/858559/353906.terrain differ diff --git a/public/terrain/19/858559/353907.terrain b/public/terrain/19/858559/353907.terrain new file mode 100644 index 000000000..2887e1f47 Binary files /dev/null and b/public/terrain/19/858559/353907.terrain differ diff --git a/public/terrain/19/858559/353908.terrain b/public/terrain/19/858559/353908.terrain new file mode 100644 index 000000000..e5cdbafe6 Binary files /dev/null and b/public/terrain/19/858559/353908.terrain differ diff --git a/public/terrain/19/858559/353909.terrain b/public/terrain/19/858559/353909.terrain new file mode 100644 index 000000000..9318e0145 Binary files /dev/null and b/public/terrain/19/858559/353909.terrain differ diff --git a/public/terrain/19/858559/353910.terrain b/public/terrain/19/858559/353910.terrain new file mode 100644 index 000000000..511aa072c Binary files /dev/null and b/public/terrain/19/858559/353910.terrain differ diff --git a/public/terrain/19/858559/353911.terrain b/public/terrain/19/858559/353911.terrain new file mode 100644 index 000000000..567f44998 Binary files /dev/null and b/public/terrain/19/858559/353911.terrain differ diff --git a/public/terrain/19/858559/353912.terrain b/public/terrain/19/858559/353912.terrain new file mode 100644 index 000000000..73d724f01 Binary files /dev/null and b/public/terrain/19/858559/353912.terrain differ diff --git a/public/terrain/19/858559/353913.terrain b/public/terrain/19/858559/353913.terrain new file mode 100644 index 000000000..7a52f19bf Binary files /dev/null and b/public/terrain/19/858559/353913.terrain differ diff --git a/public/terrain/19/858559/353914.terrain b/public/terrain/19/858559/353914.terrain new file mode 100644 index 000000000..04ae0e36a Binary files /dev/null and b/public/terrain/19/858559/353914.terrain differ diff --git a/public/terrain/19/858559/353915.terrain b/public/terrain/19/858559/353915.terrain new file mode 100644 index 000000000..9a943d470 Binary files /dev/null and b/public/terrain/19/858559/353915.terrain differ diff --git a/public/terrain/19/858559/353916.terrain b/public/terrain/19/858559/353916.terrain new file mode 100644 index 000000000..7c1d9c0f7 Binary files /dev/null and b/public/terrain/19/858559/353916.terrain differ diff --git a/public/terrain/19/858559/353917.terrain b/public/terrain/19/858559/353917.terrain new file mode 100644 index 000000000..fc26774c1 Binary files /dev/null and b/public/terrain/19/858559/353917.terrain differ diff --git a/public/terrain/19/858559/353918.terrain b/public/terrain/19/858559/353918.terrain new file mode 100644 index 000000000..f2b073f6b Binary files /dev/null and b/public/terrain/19/858559/353918.terrain differ diff --git a/public/terrain/19/858559/353919.terrain b/public/terrain/19/858559/353919.terrain new file mode 100644 index 000000000..8f5eeb2c3 Binary files /dev/null and b/public/terrain/19/858559/353919.terrain differ diff --git a/public/terrain/19/858559/353920.terrain b/public/terrain/19/858559/353920.terrain new file mode 100644 index 000000000..82898de7e Binary files /dev/null and b/public/terrain/19/858559/353920.terrain differ diff --git a/public/terrain/19/858559/353921.terrain b/public/terrain/19/858559/353921.terrain new file mode 100644 index 000000000..1c66a5ab9 Binary files /dev/null and b/public/terrain/19/858559/353921.terrain differ diff --git a/public/terrain/19/858559/353922.terrain b/public/terrain/19/858559/353922.terrain new file mode 100644 index 000000000..e7e7b8671 Binary files /dev/null and b/public/terrain/19/858559/353922.terrain differ diff --git a/public/terrain/19/858559/353923.terrain b/public/terrain/19/858559/353923.terrain new file mode 100644 index 000000000..1c257e2bf Binary files /dev/null and b/public/terrain/19/858559/353923.terrain differ diff --git a/public/terrain/19/858559/353924.terrain b/public/terrain/19/858559/353924.terrain new file mode 100644 index 000000000..f8a44a283 Binary files /dev/null and b/public/terrain/19/858559/353924.terrain differ diff --git a/public/terrain/19/858559/353925.terrain b/public/terrain/19/858559/353925.terrain new file mode 100644 index 000000000..162eb4c50 Binary files /dev/null and b/public/terrain/19/858559/353925.terrain differ diff --git a/public/terrain/19/858559/353926.terrain b/public/terrain/19/858559/353926.terrain new file mode 100644 index 000000000..e2e171a83 Binary files /dev/null and b/public/terrain/19/858559/353926.terrain differ diff --git a/public/terrain/19/858559/353927.terrain b/public/terrain/19/858559/353927.terrain new file mode 100644 index 000000000..01d5818f7 Binary files /dev/null and b/public/terrain/19/858559/353927.terrain differ diff --git a/public/terrain/19/858559/353928.terrain b/public/terrain/19/858559/353928.terrain new file mode 100644 index 000000000..8347631f8 Binary files /dev/null and b/public/terrain/19/858559/353928.terrain differ diff --git a/public/terrain/19/858559/353929.terrain b/public/terrain/19/858559/353929.terrain new file mode 100644 index 000000000..12eb69a52 Binary files /dev/null and b/public/terrain/19/858559/353929.terrain differ diff --git a/public/terrain/19/858559/353930.terrain b/public/terrain/19/858559/353930.terrain new file mode 100644 index 000000000..9d031e942 Binary files /dev/null and b/public/terrain/19/858559/353930.terrain differ diff --git a/public/terrain/19/858559/353931.terrain b/public/terrain/19/858559/353931.terrain new file mode 100644 index 000000000..e5b615273 Binary files /dev/null and b/public/terrain/19/858559/353931.terrain differ diff --git a/public/terrain/19/858559/353932.terrain b/public/terrain/19/858559/353932.terrain new file mode 100644 index 000000000..bb2b3e645 Binary files /dev/null and b/public/terrain/19/858559/353932.terrain differ diff --git a/public/terrain/19/858559/353933.terrain b/public/terrain/19/858559/353933.terrain new file mode 100644 index 000000000..61634a505 Binary files /dev/null and b/public/terrain/19/858559/353933.terrain differ diff --git a/public/terrain/19/858559/353934.terrain b/public/terrain/19/858559/353934.terrain new file mode 100644 index 000000000..29fb2b9ac Binary files /dev/null and b/public/terrain/19/858559/353934.terrain differ diff --git a/public/terrain/19/858559/353935.terrain b/public/terrain/19/858559/353935.terrain new file mode 100644 index 000000000..42a8e87e1 Binary files /dev/null and b/public/terrain/19/858559/353935.terrain differ diff --git a/public/terrain/19/858559/353936.terrain b/public/terrain/19/858559/353936.terrain new file mode 100644 index 000000000..3a0250b38 Binary files /dev/null and b/public/terrain/19/858559/353936.terrain differ diff --git a/public/terrain/19/858559/353937.terrain b/public/terrain/19/858559/353937.terrain new file mode 100644 index 000000000..9ca09de4e Binary files /dev/null and b/public/terrain/19/858559/353937.terrain differ diff --git a/public/terrain/19/858559/353938.terrain b/public/terrain/19/858559/353938.terrain new file mode 100644 index 000000000..adae2a57f Binary files /dev/null and b/public/terrain/19/858559/353938.terrain differ diff --git a/public/terrain/19/858559/353939.terrain b/public/terrain/19/858559/353939.terrain new file mode 100644 index 000000000..884a8a6e4 Binary files /dev/null and b/public/terrain/19/858559/353939.terrain differ diff --git a/public/terrain/19/858559/353940.terrain b/public/terrain/19/858559/353940.terrain new file mode 100644 index 000000000..e0ca2016d Binary files /dev/null and b/public/terrain/19/858559/353940.terrain differ diff --git a/public/terrain/19/858559/353941.terrain b/public/terrain/19/858559/353941.terrain new file mode 100644 index 000000000..2766022b8 Binary files /dev/null and b/public/terrain/19/858559/353941.terrain differ diff --git a/public/terrain/19/858559/353942.terrain b/public/terrain/19/858559/353942.terrain new file mode 100644 index 000000000..4c633f1ab Binary files /dev/null and b/public/terrain/19/858559/353942.terrain differ diff --git a/public/terrain/19/858559/353943.terrain b/public/terrain/19/858559/353943.terrain new file mode 100644 index 000000000..4b657d3f2 Binary files /dev/null and b/public/terrain/19/858559/353943.terrain differ diff --git a/public/terrain/19/858559/353944.terrain b/public/terrain/19/858559/353944.terrain new file mode 100644 index 000000000..855283a13 Binary files /dev/null and b/public/terrain/19/858559/353944.terrain differ diff --git a/public/terrain/19/858559/353945.terrain b/public/terrain/19/858559/353945.terrain new file mode 100644 index 000000000..52bff0ce0 Binary files /dev/null and b/public/terrain/19/858559/353945.terrain differ diff --git a/public/terrain/19/858559/353946.terrain b/public/terrain/19/858559/353946.terrain new file mode 100644 index 000000000..743b4e442 Binary files /dev/null and b/public/terrain/19/858559/353946.terrain differ diff --git a/public/terrain/19/858559/353947.terrain b/public/terrain/19/858559/353947.terrain new file mode 100644 index 000000000..0393dba62 Binary files /dev/null and b/public/terrain/19/858559/353947.terrain differ diff --git a/public/terrain/19/858559/353948.terrain b/public/terrain/19/858559/353948.terrain new file mode 100644 index 000000000..b36210a01 Binary files /dev/null and b/public/terrain/19/858559/353948.terrain differ diff --git a/public/terrain/19/858559/353949.terrain b/public/terrain/19/858559/353949.terrain new file mode 100644 index 000000000..5cc7f5ac8 Binary files /dev/null and b/public/terrain/19/858559/353949.terrain differ diff --git a/public/terrain/19/858559/353950.terrain b/public/terrain/19/858559/353950.terrain new file mode 100644 index 000000000..d5e84c14d Binary files /dev/null and b/public/terrain/19/858559/353950.terrain differ diff --git a/public/terrain/19/858559/353951.terrain b/public/terrain/19/858559/353951.terrain new file mode 100644 index 000000000..c54a01478 Binary files /dev/null and b/public/terrain/19/858559/353951.terrain differ diff --git a/public/terrain/19/858559/353952.terrain b/public/terrain/19/858559/353952.terrain new file mode 100644 index 000000000..44844e8b4 Binary files /dev/null and b/public/terrain/19/858559/353952.terrain differ diff --git a/public/terrain/19/858559/353953.terrain b/public/terrain/19/858559/353953.terrain new file mode 100644 index 000000000..51ef87a72 Binary files /dev/null and b/public/terrain/19/858559/353953.terrain differ diff --git a/public/terrain/19/858559/353954.terrain b/public/terrain/19/858559/353954.terrain new file mode 100644 index 000000000..60a2b2e7e Binary files /dev/null and b/public/terrain/19/858559/353954.terrain differ diff --git a/public/terrain/19/858559/353955.terrain b/public/terrain/19/858559/353955.terrain new file mode 100644 index 000000000..149fb5f2b Binary files /dev/null and b/public/terrain/19/858559/353955.terrain differ diff --git a/public/terrain/19/858559/353956.terrain b/public/terrain/19/858559/353956.terrain new file mode 100644 index 000000000..86c8dea8c Binary files /dev/null and b/public/terrain/19/858559/353956.terrain differ diff --git a/public/terrain/19/858559/353957.terrain b/public/terrain/19/858559/353957.terrain new file mode 100644 index 000000000..7bff3d50c Binary files /dev/null and b/public/terrain/19/858559/353957.terrain differ diff --git a/public/terrain/19/858559/353958.terrain b/public/terrain/19/858559/353958.terrain new file mode 100644 index 000000000..039eadc45 Binary files /dev/null and b/public/terrain/19/858559/353958.terrain differ diff --git a/public/terrain/19/858559/353959.terrain b/public/terrain/19/858559/353959.terrain new file mode 100644 index 000000000..3b19f0520 Binary files /dev/null and b/public/terrain/19/858559/353959.terrain differ diff --git a/public/terrain/19/858559/353960.terrain b/public/terrain/19/858559/353960.terrain new file mode 100644 index 000000000..31b4c3d35 Binary files /dev/null and b/public/terrain/19/858559/353960.terrain differ diff --git a/public/terrain/19/858559/353961.terrain b/public/terrain/19/858559/353961.terrain new file mode 100644 index 000000000..4bd6e1cb0 Binary files /dev/null and b/public/terrain/19/858559/353961.terrain differ diff --git a/public/terrain/19/858559/353962.terrain b/public/terrain/19/858559/353962.terrain new file mode 100644 index 000000000..b78fb66e9 Binary files /dev/null and b/public/terrain/19/858559/353962.terrain differ diff --git a/public/terrain/19/858559/353963.terrain b/public/terrain/19/858559/353963.terrain new file mode 100644 index 000000000..0cda8c4e1 Binary files /dev/null and b/public/terrain/19/858559/353963.terrain differ diff --git a/public/terrain/19/858559/353964.terrain b/public/terrain/19/858559/353964.terrain new file mode 100644 index 000000000..cce9a0a38 Binary files /dev/null and b/public/terrain/19/858559/353964.terrain differ diff --git a/public/terrain/19/858559/353965.terrain b/public/terrain/19/858559/353965.terrain new file mode 100644 index 000000000..34041f222 Binary files /dev/null and b/public/terrain/19/858559/353965.terrain differ diff --git a/public/terrain/19/858559/353966.terrain b/public/terrain/19/858559/353966.terrain new file mode 100644 index 000000000..c22943ea0 Binary files /dev/null and b/public/terrain/19/858559/353966.terrain differ diff --git a/public/terrain/19/858559/353967.terrain b/public/terrain/19/858559/353967.terrain new file mode 100644 index 000000000..0dee4a600 Binary files /dev/null and b/public/terrain/19/858559/353967.terrain differ diff --git a/public/terrain/19/858559/353968.terrain b/public/terrain/19/858559/353968.terrain new file mode 100644 index 000000000..84478c05e Binary files /dev/null and b/public/terrain/19/858559/353968.terrain differ diff --git a/public/terrain/19/858559/353969.terrain b/public/terrain/19/858559/353969.terrain new file mode 100644 index 000000000..b75441364 Binary files /dev/null and b/public/terrain/19/858559/353969.terrain differ diff --git a/public/terrain/19/858559/353970.terrain b/public/terrain/19/858559/353970.terrain new file mode 100644 index 000000000..e8f8ef768 Binary files /dev/null and b/public/terrain/19/858559/353970.terrain differ diff --git a/public/terrain/19/858559/353971.terrain b/public/terrain/19/858559/353971.terrain new file mode 100644 index 000000000..7ccb2900d Binary files /dev/null and b/public/terrain/19/858559/353971.terrain differ diff --git a/public/terrain/19/858559/353972.terrain b/public/terrain/19/858559/353972.terrain new file mode 100644 index 000000000..3e5a8383b Binary files /dev/null and b/public/terrain/19/858559/353972.terrain differ diff --git a/public/terrain/19/858559/353973.terrain b/public/terrain/19/858559/353973.terrain new file mode 100644 index 000000000..2b66ba02b Binary files /dev/null and b/public/terrain/19/858559/353973.terrain differ diff --git a/public/terrain/19/858559/353974.terrain b/public/terrain/19/858559/353974.terrain new file mode 100644 index 000000000..cf289a07e Binary files /dev/null and b/public/terrain/19/858559/353974.terrain differ diff --git a/public/terrain/19/858559/353975.terrain b/public/terrain/19/858559/353975.terrain new file mode 100644 index 000000000..b43455c2f Binary files /dev/null and b/public/terrain/19/858559/353975.terrain differ diff --git a/public/terrain/19/858559/353976.terrain b/public/terrain/19/858559/353976.terrain new file mode 100644 index 000000000..8e30542e4 Binary files /dev/null and b/public/terrain/19/858559/353976.terrain differ diff --git a/public/terrain/19/858559/353977.terrain b/public/terrain/19/858559/353977.terrain new file mode 100644 index 000000000..d8224fbb3 Binary files /dev/null and b/public/terrain/19/858559/353977.terrain differ diff --git a/public/terrain/19/858559/353978.terrain b/public/terrain/19/858559/353978.terrain new file mode 100644 index 000000000..e15d7be1d Binary files /dev/null and b/public/terrain/19/858559/353978.terrain differ diff --git a/public/terrain/19/858559/353979.terrain b/public/terrain/19/858559/353979.terrain new file mode 100644 index 000000000..4c3be29d7 Binary files /dev/null and b/public/terrain/19/858559/353979.terrain differ diff --git a/public/terrain/19/858559/353980.terrain b/public/terrain/19/858559/353980.terrain new file mode 100644 index 000000000..a3e17c2d1 Binary files /dev/null and b/public/terrain/19/858559/353980.terrain differ diff --git a/public/terrain/19/858559/353981.terrain b/public/terrain/19/858559/353981.terrain new file mode 100644 index 000000000..f06687314 Binary files /dev/null and b/public/terrain/19/858559/353981.terrain differ diff --git a/public/terrain/19/858559/353982.terrain b/public/terrain/19/858559/353982.terrain new file mode 100644 index 000000000..a03d3f2d8 Binary files /dev/null and b/public/terrain/19/858559/353982.terrain differ diff --git a/public/terrain/19/858559/353983.terrain b/public/terrain/19/858559/353983.terrain new file mode 100644 index 000000000..181670f3e Binary files /dev/null and b/public/terrain/19/858559/353983.terrain differ diff --git a/public/terrain/19/858559/353984.terrain b/public/terrain/19/858559/353984.terrain new file mode 100644 index 000000000..dcf04c8fb Binary files /dev/null and b/public/terrain/19/858559/353984.terrain differ diff --git a/public/terrain/19/858559/353985.terrain b/public/terrain/19/858559/353985.terrain new file mode 100644 index 000000000..b4e729e7d Binary files /dev/null and b/public/terrain/19/858559/353985.terrain differ diff --git a/public/terrain/19/858559/353986.terrain b/public/terrain/19/858559/353986.terrain new file mode 100644 index 000000000..89a0cfc38 Binary files /dev/null and b/public/terrain/19/858559/353986.terrain differ diff --git a/public/terrain/19/858559/353987.terrain b/public/terrain/19/858559/353987.terrain new file mode 100644 index 000000000..7a85c28f4 Binary files /dev/null and b/public/terrain/19/858559/353987.terrain differ diff --git a/public/terrain/19/858559/353988.terrain b/public/terrain/19/858559/353988.terrain new file mode 100644 index 000000000..e9d7275bf Binary files /dev/null and b/public/terrain/19/858559/353988.terrain differ diff --git a/public/terrain/19/858559/353989.terrain b/public/terrain/19/858559/353989.terrain new file mode 100644 index 000000000..4919148c2 Binary files /dev/null and b/public/terrain/19/858559/353989.terrain differ diff --git a/public/terrain/19/858559/353990.terrain b/public/terrain/19/858559/353990.terrain new file mode 100644 index 000000000..2b1dd917f Binary files /dev/null and b/public/terrain/19/858559/353990.terrain differ diff --git a/public/terrain/19/858559/353991.terrain b/public/terrain/19/858559/353991.terrain new file mode 100644 index 000000000..6859287f7 Binary files /dev/null and b/public/terrain/19/858559/353991.terrain differ diff --git a/public/terrain/19/858559/353992.terrain b/public/terrain/19/858559/353992.terrain new file mode 100644 index 000000000..8b8fb38d2 Binary files /dev/null and b/public/terrain/19/858559/353992.terrain differ diff --git a/public/terrain/19/858559/353993.terrain b/public/terrain/19/858559/353993.terrain new file mode 100644 index 000000000..778bcdb3a Binary files /dev/null and b/public/terrain/19/858559/353993.terrain differ diff --git a/public/terrain/19/858559/353994.terrain b/public/terrain/19/858559/353994.terrain new file mode 100644 index 000000000..83d859c20 Binary files /dev/null and b/public/terrain/19/858559/353994.terrain differ diff --git a/public/terrain/19/858559/353995.terrain b/public/terrain/19/858559/353995.terrain new file mode 100644 index 000000000..8f17dac83 Binary files /dev/null and b/public/terrain/19/858559/353995.terrain differ diff --git a/public/terrain/19/858559/353996.terrain b/public/terrain/19/858559/353996.terrain new file mode 100644 index 000000000..5bb2f21aa Binary files /dev/null and b/public/terrain/19/858559/353996.terrain differ diff --git a/public/terrain/19/858559/353997.terrain b/public/terrain/19/858559/353997.terrain new file mode 100644 index 000000000..fd13c1746 Binary files /dev/null and b/public/terrain/19/858559/353997.terrain differ diff --git a/public/terrain/19/858559/353998.terrain b/public/terrain/19/858559/353998.terrain new file mode 100644 index 000000000..dff05f3fd Binary files /dev/null and b/public/terrain/19/858559/353998.terrain differ diff --git a/public/terrain/19/858559/353999.terrain b/public/terrain/19/858559/353999.terrain new file mode 100644 index 000000000..092babdd3 Binary files /dev/null and b/public/terrain/19/858559/353999.terrain differ diff --git a/public/terrain/19/858559/354000.terrain b/public/terrain/19/858559/354000.terrain new file mode 100644 index 000000000..e935fd25d Binary files /dev/null and b/public/terrain/19/858559/354000.terrain differ diff --git a/public/terrain/19/858559/354001.terrain b/public/terrain/19/858559/354001.terrain new file mode 100644 index 000000000..cef5c2e4a Binary files /dev/null and b/public/terrain/19/858559/354001.terrain differ diff --git a/public/terrain/19/858559/354002.terrain b/public/terrain/19/858559/354002.terrain new file mode 100644 index 000000000..85c265e3d Binary files /dev/null and b/public/terrain/19/858559/354002.terrain differ diff --git a/public/terrain/19/858559/354003.terrain b/public/terrain/19/858559/354003.terrain new file mode 100644 index 000000000..169a6dc4e Binary files /dev/null and b/public/terrain/19/858559/354003.terrain differ diff --git a/public/terrain/19/858559/354004.terrain b/public/terrain/19/858559/354004.terrain new file mode 100644 index 000000000..02b8a1a53 Binary files /dev/null and b/public/terrain/19/858559/354004.terrain differ diff --git a/public/terrain/19/858559/354005.terrain b/public/terrain/19/858559/354005.terrain new file mode 100644 index 000000000..c1adbf675 Binary files /dev/null and b/public/terrain/19/858559/354005.terrain differ diff --git a/public/terrain/19/858559/354006.terrain b/public/terrain/19/858559/354006.terrain new file mode 100644 index 000000000..ce2b5c861 Binary files /dev/null and b/public/terrain/19/858559/354006.terrain differ diff --git a/public/terrain/19/858559/354007.terrain b/public/terrain/19/858559/354007.terrain new file mode 100644 index 000000000..c0600add5 Binary files /dev/null and b/public/terrain/19/858559/354007.terrain differ diff --git a/public/terrain/19/858559/354008.terrain b/public/terrain/19/858559/354008.terrain new file mode 100644 index 000000000..283862c4d Binary files /dev/null and b/public/terrain/19/858559/354008.terrain differ diff --git a/public/terrain/19/858559/354009.terrain b/public/terrain/19/858559/354009.terrain new file mode 100644 index 000000000..2387fc400 Binary files /dev/null and b/public/terrain/19/858559/354009.terrain differ diff --git a/public/terrain/19/858559/354010.terrain b/public/terrain/19/858559/354010.terrain new file mode 100644 index 000000000..8d3d147fb Binary files /dev/null and b/public/terrain/19/858559/354010.terrain differ diff --git a/public/terrain/19/858559/354011.terrain b/public/terrain/19/858559/354011.terrain new file mode 100644 index 000000000..81ea24e09 Binary files /dev/null and b/public/terrain/19/858559/354011.terrain differ diff --git a/public/terrain/19/858559/354012.terrain b/public/terrain/19/858559/354012.terrain new file mode 100644 index 000000000..558084668 Binary files /dev/null and b/public/terrain/19/858559/354012.terrain differ diff --git a/public/terrain/19/858559/354013.terrain b/public/terrain/19/858559/354013.terrain new file mode 100644 index 000000000..7d121b39c Binary files /dev/null and b/public/terrain/19/858559/354013.terrain differ diff --git a/public/terrain/19/858559/354014.terrain b/public/terrain/19/858559/354014.terrain new file mode 100644 index 000000000..30e1c01c9 Binary files /dev/null and b/public/terrain/19/858559/354014.terrain differ diff --git a/public/terrain/19/858559/354015.terrain b/public/terrain/19/858559/354015.terrain new file mode 100644 index 000000000..a757dbde6 Binary files /dev/null and b/public/terrain/19/858559/354015.terrain differ diff --git a/public/terrain/19/858559/354016.terrain b/public/terrain/19/858559/354016.terrain new file mode 100644 index 000000000..c9434d21c Binary files /dev/null and b/public/terrain/19/858559/354016.terrain differ diff --git a/public/terrain/19/858559/354017.terrain b/public/terrain/19/858559/354017.terrain new file mode 100644 index 000000000..df4dad2c0 Binary files /dev/null and b/public/terrain/19/858559/354017.terrain differ diff --git a/public/terrain/19/858559/354018.terrain b/public/terrain/19/858559/354018.terrain new file mode 100644 index 000000000..511f111d2 Binary files /dev/null and b/public/terrain/19/858559/354018.terrain differ diff --git a/public/terrain/19/858559/354019.terrain b/public/terrain/19/858559/354019.terrain new file mode 100644 index 000000000..9b4a71786 Binary files /dev/null and b/public/terrain/19/858559/354019.terrain differ diff --git a/public/terrain/19/858559/354020.terrain b/public/terrain/19/858559/354020.terrain new file mode 100644 index 000000000..341befa39 Binary files /dev/null and b/public/terrain/19/858559/354020.terrain differ diff --git a/public/terrain/19/858559/354021.terrain b/public/terrain/19/858559/354021.terrain new file mode 100644 index 000000000..9369fb60d Binary files /dev/null and b/public/terrain/19/858559/354021.terrain differ diff --git a/public/terrain/19/858559/354022.terrain b/public/terrain/19/858559/354022.terrain new file mode 100644 index 000000000..ad8c4f3ae Binary files /dev/null and b/public/terrain/19/858559/354022.terrain differ diff --git a/public/terrain/19/858559/354023.terrain b/public/terrain/19/858559/354023.terrain new file mode 100644 index 000000000..16cbda222 Binary files /dev/null and b/public/terrain/19/858559/354023.terrain differ diff --git a/public/terrain/19/858559/354024.terrain b/public/terrain/19/858559/354024.terrain new file mode 100644 index 000000000..4161a2bd4 Binary files /dev/null and b/public/terrain/19/858559/354024.terrain differ diff --git a/public/terrain/19/858559/354025.terrain b/public/terrain/19/858559/354025.terrain new file mode 100644 index 000000000..8f6879682 Binary files /dev/null and b/public/terrain/19/858559/354025.terrain differ diff --git a/public/terrain/19/858559/354026.terrain b/public/terrain/19/858559/354026.terrain new file mode 100644 index 000000000..ea2ab0639 Binary files /dev/null and b/public/terrain/19/858559/354026.terrain differ diff --git a/public/terrain/19/858559/354027.terrain b/public/terrain/19/858559/354027.terrain new file mode 100644 index 000000000..e0fb79b65 Binary files /dev/null and b/public/terrain/19/858559/354027.terrain differ diff --git a/public/terrain/19/858559/354028.terrain b/public/terrain/19/858559/354028.terrain new file mode 100644 index 000000000..94d415e98 Binary files /dev/null and b/public/terrain/19/858559/354028.terrain differ diff --git a/public/terrain/19/858559/354029.terrain b/public/terrain/19/858559/354029.terrain new file mode 100644 index 000000000..1e4bf2f9e Binary files /dev/null and b/public/terrain/19/858559/354029.terrain differ diff --git a/public/terrain/19/858559/354030.terrain b/public/terrain/19/858559/354030.terrain new file mode 100644 index 000000000..e1bae63d8 Binary files /dev/null and b/public/terrain/19/858559/354030.terrain differ diff --git a/public/terrain/19/858559/354031.terrain b/public/terrain/19/858559/354031.terrain new file mode 100644 index 000000000..029593832 Binary files /dev/null and b/public/terrain/19/858559/354031.terrain differ diff --git a/public/terrain/19/858559/354032.terrain b/public/terrain/19/858559/354032.terrain new file mode 100644 index 000000000..c8f36f70e Binary files /dev/null and b/public/terrain/19/858559/354032.terrain differ diff --git a/public/terrain/19/858559/354033.terrain b/public/terrain/19/858559/354033.terrain new file mode 100644 index 000000000..3ea267ad8 Binary files /dev/null and b/public/terrain/19/858559/354033.terrain differ diff --git a/public/terrain/19/858559/354034.terrain b/public/terrain/19/858559/354034.terrain new file mode 100644 index 000000000..47d396a83 Binary files /dev/null and b/public/terrain/19/858559/354034.terrain differ diff --git a/public/terrain/19/858559/354035.terrain b/public/terrain/19/858559/354035.terrain new file mode 100644 index 000000000..4223c2d60 Binary files /dev/null and b/public/terrain/19/858559/354035.terrain differ diff --git a/public/terrain/19/858559/354036.terrain b/public/terrain/19/858559/354036.terrain new file mode 100644 index 000000000..01f21e751 Binary files /dev/null and b/public/terrain/19/858559/354036.terrain differ diff --git a/public/terrain/19/858559/354037.terrain b/public/terrain/19/858559/354037.terrain new file mode 100644 index 000000000..42e84f77e Binary files /dev/null and b/public/terrain/19/858559/354037.terrain differ diff --git a/public/terrain/19/858559/354038.terrain b/public/terrain/19/858559/354038.terrain new file mode 100644 index 000000000..3a0443d0f Binary files /dev/null and b/public/terrain/19/858559/354038.terrain differ diff --git a/public/terrain/19/858559/354039.terrain b/public/terrain/19/858559/354039.terrain new file mode 100644 index 000000000..14c7ae501 Binary files /dev/null and b/public/terrain/19/858559/354039.terrain differ diff --git a/public/terrain/19/858559/354040.terrain b/public/terrain/19/858559/354040.terrain new file mode 100644 index 000000000..b7a7e9a60 Binary files /dev/null and b/public/terrain/19/858559/354040.terrain differ diff --git a/public/terrain/19/858559/354041.terrain b/public/terrain/19/858559/354041.terrain new file mode 100644 index 000000000..c3ea150c0 Binary files /dev/null and b/public/terrain/19/858559/354041.terrain differ diff --git a/public/terrain/19/858559/354042.terrain b/public/terrain/19/858559/354042.terrain new file mode 100644 index 000000000..b08f8e1dc Binary files /dev/null and b/public/terrain/19/858559/354042.terrain differ diff --git a/public/terrain/19/858559/354043.terrain b/public/terrain/19/858559/354043.terrain new file mode 100644 index 000000000..103871b16 Binary files /dev/null and b/public/terrain/19/858559/354043.terrain differ diff --git a/public/terrain/19/858559/354044.terrain b/public/terrain/19/858559/354044.terrain new file mode 100644 index 000000000..77945ef10 Binary files /dev/null and b/public/terrain/19/858559/354044.terrain differ diff --git a/public/terrain/19/858559/354045.terrain b/public/terrain/19/858559/354045.terrain new file mode 100644 index 000000000..2ac025526 Binary files /dev/null and b/public/terrain/19/858559/354045.terrain differ diff --git a/public/terrain/19/858559/354046.terrain b/public/terrain/19/858559/354046.terrain new file mode 100644 index 000000000..13274f803 Binary files /dev/null and b/public/terrain/19/858559/354046.terrain differ diff --git a/public/terrain/19/858559/354047.terrain b/public/terrain/19/858559/354047.terrain new file mode 100644 index 000000000..3ff41488d Binary files /dev/null and b/public/terrain/19/858559/354047.terrain differ diff --git a/public/terrain/19/858559/354048.terrain b/public/terrain/19/858559/354048.terrain new file mode 100644 index 000000000..3da18431b Binary files /dev/null and b/public/terrain/19/858559/354048.terrain differ diff --git a/public/terrain/19/858559/354049.terrain b/public/terrain/19/858559/354049.terrain new file mode 100644 index 000000000..3fad0536e Binary files /dev/null and b/public/terrain/19/858559/354049.terrain differ diff --git a/public/terrain/19/858559/354050.terrain b/public/terrain/19/858559/354050.terrain new file mode 100644 index 000000000..41e02beb3 Binary files /dev/null and b/public/terrain/19/858559/354050.terrain differ diff --git a/public/terrain/19/858559/354051.terrain b/public/terrain/19/858559/354051.terrain new file mode 100644 index 000000000..e3c8ebbbd Binary files /dev/null and b/public/terrain/19/858559/354051.terrain differ diff --git a/public/terrain/19/858559/354052.terrain b/public/terrain/19/858559/354052.terrain new file mode 100644 index 000000000..401932df2 Binary files /dev/null and b/public/terrain/19/858559/354052.terrain differ diff --git a/public/terrain/19/858559/354053.terrain b/public/terrain/19/858559/354053.terrain new file mode 100644 index 000000000..be6c2828d Binary files /dev/null and b/public/terrain/19/858559/354053.terrain differ diff --git a/public/terrain/19/858559/354054.terrain b/public/terrain/19/858559/354054.terrain new file mode 100644 index 000000000..ac42ba704 Binary files /dev/null and b/public/terrain/19/858559/354054.terrain differ diff --git a/public/terrain/19/858559/354055.terrain b/public/terrain/19/858559/354055.terrain new file mode 100644 index 000000000..a8e5da023 Binary files /dev/null and b/public/terrain/19/858559/354055.terrain differ diff --git a/public/terrain/19/858559/354056.terrain b/public/terrain/19/858559/354056.terrain new file mode 100644 index 000000000..7e75beeaf Binary files /dev/null and b/public/terrain/19/858559/354056.terrain differ diff --git a/public/terrain/19/858559/354057.terrain b/public/terrain/19/858559/354057.terrain new file mode 100644 index 000000000..987281456 Binary files /dev/null and b/public/terrain/19/858559/354057.terrain differ diff --git a/public/terrain/19/858559/354058.terrain b/public/terrain/19/858559/354058.terrain new file mode 100644 index 000000000..6beaf71de Binary files /dev/null and b/public/terrain/19/858559/354058.terrain differ diff --git a/public/terrain/19/858559/354059.terrain b/public/terrain/19/858559/354059.terrain new file mode 100644 index 000000000..2b0883cb1 Binary files /dev/null and b/public/terrain/19/858559/354059.terrain differ diff --git a/public/terrain/19/858560/353743.terrain b/public/terrain/19/858560/353743.terrain new file mode 100644 index 000000000..a4825190f Binary files /dev/null and b/public/terrain/19/858560/353743.terrain differ diff --git a/public/terrain/19/858560/353744.terrain b/public/terrain/19/858560/353744.terrain new file mode 100644 index 000000000..5b3b0bef7 Binary files /dev/null and b/public/terrain/19/858560/353744.terrain differ diff --git a/public/terrain/19/858560/353745.terrain b/public/terrain/19/858560/353745.terrain new file mode 100644 index 000000000..a39a9394a Binary files /dev/null and b/public/terrain/19/858560/353745.terrain differ diff --git a/public/terrain/19/858560/353746.terrain b/public/terrain/19/858560/353746.terrain new file mode 100644 index 000000000..e4d82a7f2 Binary files /dev/null and b/public/terrain/19/858560/353746.terrain differ diff --git a/public/terrain/19/858560/353747.terrain b/public/terrain/19/858560/353747.terrain new file mode 100644 index 000000000..ebdc1b637 Binary files /dev/null and b/public/terrain/19/858560/353747.terrain differ diff --git a/public/terrain/19/858560/353748.terrain b/public/terrain/19/858560/353748.terrain new file mode 100644 index 000000000..3c7dc8b17 Binary files /dev/null and b/public/terrain/19/858560/353748.terrain differ diff --git a/public/terrain/19/858560/353749.terrain b/public/terrain/19/858560/353749.terrain new file mode 100644 index 000000000..64d931780 Binary files /dev/null and b/public/terrain/19/858560/353749.terrain differ diff --git a/public/terrain/19/858560/353750.terrain b/public/terrain/19/858560/353750.terrain new file mode 100644 index 000000000..87d28a441 Binary files /dev/null and b/public/terrain/19/858560/353750.terrain differ diff --git a/public/terrain/19/858560/353751.terrain b/public/terrain/19/858560/353751.terrain new file mode 100644 index 000000000..fa3a7d070 Binary files /dev/null and b/public/terrain/19/858560/353751.terrain differ diff --git a/public/terrain/19/858560/353752.terrain b/public/terrain/19/858560/353752.terrain new file mode 100644 index 000000000..2e1596b68 Binary files /dev/null and b/public/terrain/19/858560/353752.terrain differ diff --git a/public/terrain/19/858560/353753.terrain b/public/terrain/19/858560/353753.terrain new file mode 100644 index 000000000..d724441c6 Binary files /dev/null and b/public/terrain/19/858560/353753.terrain differ diff --git a/public/terrain/19/858560/353754.terrain b/public/terrain/19/858560/353754.terrain new file mode 100644 index 000000000..92ad2474e Binary files /dev/null and b/public/terrain/19/858560/353754.terrain differ diff --git a/public/terrain/19/858560/353755.terrain b/public/terrain/19/858560/353755.terrain new file mode 100644 index 000000000..3f12bb7f8 Binary files /dev/null and b/public/terrain/19/858560/353755.terrain differ diff --git a/public/terrain/19/858560/353756.terrain b/public/terrain/19/858560/353756.terrain new file mode 100644 index 000000000..182a0f7db Binary files /dev/null and b/public/terrain/19/858560/353756.terrain differ diff --git a/public/terrain/19/858560/353757.terrain b/public/terrain/19/858560/353757.terrain new file mode 100644 index 000000000..522390bf0 Binary files /dev/null and b/public/terrain/19/858560/353757.terrain differ diff --git a/public/terrain/19/858560/353758.terrain b/public/terrain/19/858560/353758.terrain new file mode 100644 index 000000000..9fcdbac4c Binary files /dev/null and b/public/terrain/19/858560/353758.terrain differ diff --git a/public/terrain/19/858560/353759.terrain b/public/terrain/19/858560/353759.terrain new file mode 100644 index 000000000..9a43242a5 Binary files /dev/null and b/public/terrain/19/858560/353759.terrain differ diff --git a/public/terrain/19/858560/353760.terrain b/public/terrain/19/858560/353760.terrain new file mode 100644 index 000000000..794742177 Binary files /dev/null and b/public/terrain/19/858560/353760.terrain differ diff --git a/public/terrain/19/858560/353761.terrain b/public/terrain/19/858560/353761.terrain new file mode 100644 index 000000000..7bd611c0f Binary files /dev/null and b/public/terrain/19/858560/353761.terrain differ diff --git a/public/terrain/19/858560/353762.terrain b/public/terrain/19/858560/353762.terrain new file mode 100644 index 000000000..e775d1c2c Binary files /dev/null and b/public/terrain/19/858560/353762.terrain differ diff --git a/public/terrain/19/858560/353763.terrain b/public/terrain/19/858560/353763.terrain new file mode 100644 index 000000000..4f2898a4c Binary files /dev/null and b/public/terrain/19/858560/353763.terrain differ diff --git a/public/terrain/19/858560/353764.terrain b/public/terrain/19/858560/353764.terrain new file mode 100644 index 000000000..6b6c6c25c Binary files /dev/null and b/public/terrain/19/858560/353764.terrain differ diff --git a/public/terrain/19/858560/353765.terrain b/public/terrain/19/858560/353765.terrain new file mode 100644 index 000000000..9db64e48a Binary files /dev/null and b/public/terrain/19/858560/353765.terrain differ diff --git a/public/terrain/19/858560/353766.terrain b/public/terrain/19/858560/353766.terrain new file mode 100644 index 000000000..6e85a360b Binary files /dev/null and b/public/terrain/19/858560/353766.terrain differ diff --git a/public/terrain/19/858560/353767.terrain b/public/terrain/19/858560/353767.terrain new file mode 100644 index 000000000..341769769 Binary files /dev/null and b/public/terrain/19/858560/353767.terrain differ diff --git a/public/terrain/19/858560/353768.terrain b/public/terrain/19/858560/353768.terrain new file mode 100644 index 000000000..110e95109 Binary files /dev/null and b/public/terrain/19/858560/353768.terrain differ diff --git a/public/terrain/19/858560/353769.terrain b/public/terrain/19/858560/353769.terrain new file mode 100644 index 000000000..c83551b27 Binary files /dev/null and b/public/terrain/19/858560/353769.terrain differ diff --git a/public/terrain/19/858560/353770.terrain b/public/terrain/19/858560/353770.terrain new file mode 100644 index 000000000..ecd2f8d75 Binary files /dev/null and b/public/terrain/19/858560/353770.terrain differ diff --git a/public/terrain/19/858560/353771.terrain b/public/terrain/19/858560/353771.terrain new file mode 100644 index 000000000..08491bcb3 Binary files /dev/null and b/public/terrain/19/858560/353771.terrain differ diff --git a/public/terrain/19/858560/353772.terrain b/public/terrain/19/858560/353772.terrain new file mode 100644 index 000000000..18a11fb60 Binary files /dev/null and b/public/terrain/19/858560/353772.terrain differ diff --git a/public/terrain/19/858560/353773.terrain b/public/terrain/19/858560/353773.terrain new file mode 100644 index 000000000..c115c0a8f Binary files /dev/null and b/public/terrain/19/858560/353773.terrain differ diff --git a/public/terrain/19/858560/353774.terrain b/public/terrain/19/858560/353774.terrain new file mode 100644 index 000000000..ea6e0a354 Binary files /dev/null and b/public/terrain/19/858560/353774.terrain differ diff --git a/public/terrain/19/858560/353775.terrain b/public/terrain/19/858560/353775.terrain new file mode 100644 index 000000000..b60b5362b Binary files /dev/null and b/public/terrain/19/858560/353775.terrain differ diff --git a/public/terrain/19/858560/353776.terrain b/public/terrain/19/858560/353776.terrain new file mode 100644 index 000000000..add78a949 Binary files /dev/null and b/public/terrain/19/858560/353776.terrain differ diff --git a/public/terrain/19/858560/353777.terrain b/public/terrain/19/858560/353777.terrain new file mode 100644 index 000000000..8071f6279 Binary files /dev/null and b/public/terrain/19/858560/353777.terrain differ diff --git a/public/terrain/19/858560/353778.terrain b/public/terrain/19/858560/353778.terrain new file mode 100644 index 000000000..a74cf3836 Binary files /dev/null and b/public/terrain/19/858560/353778.terrain differ diff --git a/public/terrain/19/858560/353779.terrain b/public/terrain/19/858560/353779.terrain new file mode 100644 index 000000000..e467ac0ac Binary files /dev/null and b/public/terrain/19/858560/353779.terrain differ diff --git a/public/terrain/19/858560/353780.terrain b/public/terrain/19/858560/353780.terrain new file mode 100644 index 000000000..74742510e Binary files /dev/null and b/public/terrain/19/858560/353780.terrain differ diff --git a/public/terrain/19/858560/353781.terrain b/public/terrain/19/858560/353781.terrain new file mode 100644 index 000000000..579e73be1 Binary files /dev/null and b/public/terrain/19/858560/353781.terrain differ diff --git a/public/terrain/19/858560/353782.terrain b/public/terrain/19/858560/353782.terrain new file mode 100644 index 000000000..f5872e204 Binary files /dev/null and b/public/terrain/19/858560/353782.terrain differ diff --git a/public/terrain/19/858560/353783.terrain b/public/terrain/19/858560/353783.terrain new file mode 100644 index 000000000..ec0f93bff Binary files /dev/null and b/public/terrain/19/858560/353783.terrain differ diff --git a/public/terrain/19/858560/353784.terrain b/public/terrain/19/858560/353784.terrain new file mode 100644 index 000000000..3f8030b23 Binary files /dev/null and b/public/terrain/19/858560/353784.terrain differ diff --git a/public/terrain/19/858560/353785.terrain b/public/terrain/19/858560/353785.terrain new file mode 100644 index 000000000..b2cadde9e Binary files /dev/null and b/public/terrain/19/858560/353785.terrain differ diff --git a/public/terrain/19/858560/353786.terrain b/public/terrain/19/858560/353786.terrain new file mode 100644 index 000000000..0f521711a Binary files /dev/null and b/public/terrain/19/858560/353786.terrain differ diff --git a/public/terrain/19/858560/353787.terrain b/public/terrain/19/858560/353787.terrain new file mode 100644 index 000000000..d8951bf0e Binary files /dev/null and b/public/terrain/19/858560/353787.terrain differ diff --git a/public/terrain/19/858560/353788.terrain b/public/terrain/19/858560/353788.terrain new file mode 100644 index 000000000..7095d0aab Binary files /dev/null and b/public/terrain/19/858560/353788.terrain differ diff --git a/public/terrain/19/858560/353789.terrain b/public/terrain/19/858560/353789.terrain new file mode 100644 index 000000000..4966f6c95 Binary files /dev/null and b/public/terrain/19/858560/353789.terrain differ diff --git a/public/terrain/19/858560/353790.terrain b/public/terrain/19/858560/353790.terrain new file mode 100644 index 000000000..0541fc789 Binary files /dev/null and b/public/terrain/19/858560/353790.terrain differ diff --git a/public/terrain/19/858560/353791.terrain b/public/terrain/19/858560/353791.terrain new file mode 100644 index 000000000..066a7d57d Binary files /dev/null and b/public/terrain/19/858560/353791.terrain differ diff --git a/public/terrain/19/858560/353792.terrain b/public/terrain/19/858560/353792.terrain new file mode 100644 index 000000000..ba405cd64 Binary files /dev/null and b/public/terrain/19/858560/353792.terrain differ diff --git a/public/terrain/19/858560/353793.terrain b/public/terrain/19/858560/353793.terrain new file mode 100644 index 000000000..6f1b06029 Binary files /dev/null and b/public/terrain/19/858560/353793.terrain differ diff --git a/public/terrain/19/858560/353794.terrain b/public/terrain/19/858560/353794.terrain new file mode 100644 index 000000000..7ca01d53f Binary files /dev/null and b/public/terrain/19/858560/353794.terrain differ diff --git a/public/terrain/19/858560/353795.terrain b/public/terrain/19/858560/353795.terrain new file mode 100644 index 000000000..9329fe0c9 Binary files /dev/null and b/public/terrain/19/858560/353795.terrain differ diff --git a/public/terrain/19/858560/353796.terrain b/public/terrain/19/858560/353796.terrain new file mode 100644 index 000000000..652366848 Binary files /dev/null and b/public/terrain/19/858560/353796.terrain differ diff --git a/public/terrain/19/858560/353797.terrain b/public/terrain/19/858560/353797.terrain new file mode 100644 index 000000000..63c7600be Binary files /dev/null and b/public/terrain/19/858560/353797.terrain differ diff --git a/public/terrain/19/858560/353798.terrain b/public/terrain/19/858560/353798.terrain new file mode 100644 index 000000000..bc23f241c Binary files /dev/null and b/public/terrain/19/858560/353798.terrain differ diff --git a/public/terrain/19/858560/353799.terrain b/public/terrain/19/858560/353799.terrain new file mode 100644 index 000000000..8a9c2cdcd Binary files /dev/null and b/public/terrain/19/858560/353799.terrain differ diff --git a/public/terrain/19/858560/353800.terrain b/public/terrain/19/858560/353800.terrain new file mode 100644 index 000000000..a44c7df22 Binary files /dev/null and b/public/terrain/19/858560/353800.terrain differ diff --git a/public/terrain/19/858560/353801.terrain b/public/terrain/19/858560/353801.terrain new file mode 100644 index 000000000..6505e7f93 Binary files /dev/null and b/public/terrain/19/858560/353801.terrain differ diff --git a/public/terrain/19/858560/353802.terrain b/public/terrain/19/858560/353802.terrain new file mode 100644 index 000000000..512c9f810 Binary files /dev/null and b/public/terrain/19/858560/353802.terrain differ diff --git a/public/terrain/19/858560/353803.terrain b/public/terrain/19/858560/353803.terrain new file mode 100644 index 000000000..d504ec577 Binary files /dev/null and b/public/terrain/19/858560/353803.terrain differ diff --git a/public/terrain/19/858560/353804.terrain b/public/terrain/19/858560/353804.terrain new file mode 100644 index 000000000..285b06948 Binary files /dev/null and b/public/terrain/19/858560/353804.terrain differ diff --git a/public/terrain/19/858560/353805.terrain b/public/terrain/19/858560/353805.terrain new file mode 100644 index 000000000..8bda230ff Binary files /dev/null and b/public/terrain/19/858560/353805.terrain differ diff --git a/public/terrain/19/858560/353806.terrain b/public/terrain/19/858560/353806.terrain new file mode 100644 index 000000000..ae9aedccb Binary files /dev/null and b/public/terrain/19/858560/353806.terrain differ diff --git a/public/terrain/19/858560/353807.terrain b/public/terrain/19/858560/353807.terrain new file mode 100644 index 000000000..de3fe100a Binary files /dev/null and b/public/terrain/19/858560/353807.terrain differ diff --git a/public/terrain/19/858560/353808.terrain b/public/terrain/19/858560/353808.terrain new file mode 100644 index 000000000..b59b3ebb7 Binary files /dev/null and b/public/terrain/19/858560/353808.terrain differ diff --git a/public/terrain/19/858560/353809.terrain b/public/terrain/19/858560/353809.terrain new file mode 100644 index 000000000..6efccf831 Binary files /dev/null and b/public/terrain/19/858560/353809.terrain differ diff --git a/public/terrain/19/858560/353810.terrain b/public/terrain/19/858560/353810.terrain new file mode 100644 index 000000000..ccc56f192 Binary files /dev/null and b/public/terrain/19/858560/353810.terrain differ diff --git a/public/terrain/19/858560/353811.terrain b/public/terrain/19/858560/353811.terrain new file mode 100644 index 000000000..ee7d8fe2d Binary files /dev/null and b/public/terrain/19/858560/353811.terrain differ diff --git a/public/terrain/19/858560/353812.terrain b/public/terrain/19/858560/353812.terrain new file mode 100644 index 000000000..40b1955eb Binary files /dev/null and b/public/terrain/19/858560/353812.terrain differ diff --git a/public/terrain/19/858560/353813.terrain b/public/terrain/19/858560/353813.terrain new file mode 100644 index 000000000..3b017c985 Binary files /dev/null and b/public/terrain/19/858560/353813.terrain differ diff --git a/public/terrain/19/858560/353814.terrain b/public/terrain/19/858560/353814.terrain new file mode 100644 index 000000000..bd04c6f3a Binary files /dev/null and b/public/terrain/19/858560/353814.terrain differ diff --git a/public/terrain/19/858560/353815.terrain b/public/terrain/19/858560/353815.terrain new file mode 100644 index 000000000..2d6186a47 Binary files /dev/null and b/public/terrain/19/858560/353815.terrain differ diff --git a/public/terrain/19/858560/353816.terrain b/public/terrain/19/858560/353816.terrain new file mode 100644 index 000000000..fe36ca3e4 Binary files /dev/null and b/public/terrain/19/858560/353816.terrain differ diff --git a/public/terrain/19/858560/353817.terrain b/public/terrain/19/858560/353817.terrain new file mode 100644 index 000000000..76f1bae6a Binary files /dev/null and b/public/terrain/19/858560/353817.terrain differ diff --git a/public/terrain/19/858560/353818.terrain b/public/terrain/19/858560/353818.terrain new file mode 100644 index 000000000..70ff6b1eb Binary files /dev/null and b/public/terrain/19/858560/353818.terrain differ diff --git a/public/terrain/19/858560/353819.terrain b/public/terrain/19/858560/353819.terrain new file mode 100644 index 000000000..701242bf5 Binary files /dev/null and b/public/terrain/19/858560/353819.terrain differ diff --git a/public/terrain/19/858560/353820.terrain b/public/terrain/19/858560/353820.terrain new file mode 100644 index 000000000..bded9fdd3 Binary files /dev/null and b/public/terrain/19/858560/353820.terrain differ diff --git a/public/terrain/19/858560/353821.terrain b/public/terrain/19/858560/353821.terrain new file mode 100644 index 000000000..f32cf06aa Binary files /dev/null and b/public/terrain/19/858560/353821.terrain differ diff --git a/public/terrain/19/858560/353822.terrain b/public/terrain/19/858560/353822.terrain new file mode 100644 index 000000000..6080fcfc8 Binary files /dev/null and b/public/terrain/19/858560/353822.terrain differ diff --git a/public/terrain/19/858560/353823.terrain b/public/terrain/19/858560/353823.terrain new file mode 100644 index 000000000..b72a2f649 Binary files /dev/null and b/public/terrain/19/858560/353823.terrain differ diff --git a/public/terrain/19/858560/353824.terrain b/public/terrain/19/858560/353824.terrain new file mode 100644 index 000000000..f52bbb975 Binary files /dev/null and b/public/terrain/19/858560/353824.terrain differ diff --git a/public/terrain/19/858560/353825.terrain b/public/terrain/19/858560/353825.terrain new file mode 100644 index 000000000..8d76aaa68 Binary files /dev/null and b/public/terrain/19/858560/353825.terrain differ diff --git a/public/terrain/19/858560/353826.terrain b/public/terrain/19/858560/353826.terrain new file mode 100644 index 000000000..72a8814a5 Binary files /dev/null and b/public/terrain/19/858560/353826.terrain differ diff --git a/public/terrain/19/858560/353827.terrain b/public/terrain/19/858560/353827.terrain new file mode 100644 index 000000000..3436e5f8e Binary files /dev/null and b/public/terrain/19/858560/353827.terrain differ diff --git a/public/terrain/19/858560/353828.terrain b/public/terrain/19/858560/353828.terrain new file mode 100644 index 000000000..213a54c41 Binary files /dev/null and b/public/terrain/19/858560/353828.terrain differ diff --git a/public/terrain/19/858560/353829.terrain b/public/terrain/19/858560/353829.terrain new file mode 100644 index 000000000..7d664e2b0 Binary files /dev/null and b/public/terrain/19/858560/353829.terrain differ diff --git a/public/terrain/19/858560/353830.terrain b/public/terrain/19/858560/353830.terrain new file mode 100644 index 000000000..44fbf7bb2 Binary files /dev/null and b/public/terrain/19/858560/353830.terrain differ diff --git a/public/terrain/19/858560/353831.terrain b/public/terrain/19/858560/353831.terrain new file mode 100644 index 000000000..2f4692e11 Binary files /dev/null and b/public/terrain/19/858560/353831.terrain differ diff --git a/public/terrain/19/858560/353832.terrain b/public/terrain/19/858560/353832.terrain new file mode 100644 index 000000000..f7dbc75c9 Binary files /dev/null and b/public/terrain/19/858560/353832.terrain differ diff --git a/public/terrain/19/858560/353833.terrain b/public/terrain/19/858560/353833.terrain new file mode 100644 index 000000000..83de50f84 Binary files /dev/null and b/public/terrain/19/858560/353833.terrain differ diff --git a/public/terrain/19/858560/353834.terrain b/public/terrain/19/858560/353834.terrain new file mode 100644 index 000000000..e57da0355 Binary files /dev/null and b/public/terrain/19/858560/353834.terrain differ diff --git a/public/terrain/19/858560/353835.terrain b/public/terrain/19/858560/353835.terrain new file mode 100644 index 000000000..139509e96 Binary files /dev/null and b/public/terrain/19/858560/353835.terrain differ diff --git a/public/terrain/19/858560/353836.terrain b/public/terrain/19/858560/353836.terrain new file mode 100644 index 000000000..c127a342d Binary files /dev/null and b/public/terrain/19/858560/353836.terrain differ diff --git a/public/terrain/19/858560/353837.terrain b/public/terrain/19/858560/353837.terrain new file mode 100644 index 000000000..38fad63ae Binary files /dev/null and b/public/terrain/19/858560/353837.terrain differ diff --git a/public/terrain/19/858560/353838.terrain b/public/terrain/19/858560/353838.terrain new file mode 100644 index 000000000..51a0d2892 Binary files /dev/null and b/public/terrain/19/858560/353838.terrain differ diff --git a/public/terrain/19/858560/353839.terrain b/public/terrain/19/858560/353839.terrain new file mode 100644 index 000000000..eb5552bdf Binary files /dev/null and b/public/terrain/19/858560/353839.terrain differ diff --git a/public/terrain/19/858560/353840.terrain b/public/terrain/19/858560/353840.terrain new file mode 100644 index 000000000..62c7e7444 Binary files /dev/null and b/public/terrain/19/858560/353840.terrain differ diff --git a/public/terrain/19/858560/353841.terrain b/public/terrain/19/858560/353841.terrain new file mode 100644 index 000000000..03d242efb Binary files /dev/null and b/public/terrain/19/858560/353841.terrain differ diff --git a/public/terrain/19/858560/353842.terrain b/public/terrain/19/858560/353842.terrain new file mode 100644 index 000000000..59df25fde Binary files /dev/null and b/public/terrain/19/858560/353842.terrain differ diff --git a/public/terrain/19/858560/353843.terrain b/public/terrain/19/858560/353843.terrain new file mode 100644 index 000000000..649b3d2a7 Binary files /dev/null and b/public/terrain/19/858560/353843.terrain differ diff --git a/public/terrain/19/858560/353844.terrain b/public/terrain/19/858560/353844.terrain new file mode 100644 index 000000000..b88bbe6f8 Binary files /dev/null and b/public/terrain/19/858560/353844.terrain differ diff --git a/public/terrain/19/858560/353845.terrain b/public/terrain/19/858560/353845.terrain new file mode 100644 index 000000000..d9af0ff34 Binary files /dev/null and b/public/terrain/19/858560/353845.terrain differ diff --git a/public/terrain/19/858560/353846.terrain b/public/terrain/19/858560/353846.terrain new file mode 100644 index 000000000..d26ab4914 Binary files /dev/null and b/public/terrain/19/858560/353846.terrain differ diff --git a/public/terrain/19/858560/353847.terrain b/public/terrain/19/858560/353847.terrain new file mode 100644 index 000000000..6f31b6f10 Binary files /dev/null and b/public/terrain/19/858560/353847.terrain differ diff --git a/public/terrain/19/858560/353848.terrain b/public/terrain/19/858560/353848.terrain new file mode 100644 index 000000000..87a6b7a78 Binary files /dev/null and b/public/terrain/19/858560/353848.terrain differ diff --git a/public/terrain/19/858560/353849.terrain b/public/terrain/19/858560/353849.terrain new file mode 100644 index 000000000..62e664c62 Binary files /dev/null and b/public/terrain/19/858560/353849.terrain differ diff --git a/public/terrain/19/858560/353850.terrain b/public/terrain/19/858560/353850.terrain new file mode 100644 index 000000000..5cac4e591 Binary files /dev/null and b/public/terrain/19/858560/353850.terrain differ diff --git a/public/terrain/19/858560/353851.terrain b/public/terrain/19/858560/353851.terrain new file mode 100644 index 000000000..e63de8ff8 Binary files /dev/null and b/public/terrain/19/858560/353851.terrain differ diff --git a/public/terrain/19/858560/353852.terrain b/public/terrain/19/858560/353852.terrain new file mode 100644 index 000000000..6e3f7dc4f Binary files /dev/null and b/public/terrain/19/858560/353852.terrain differ diff --git a/public/terrain/19/858560/353853.terrain b/public/terrain/19/858560/353853.terrain new file mode 100644 index 000000000..57e651e7d Binary files /dev/null and b/public/terrain/19/858560/353853.terrain differ diff --git a/public/terrain/19/858560/353854.terrain b/public/terrain/19/858560/353854.terrain new file mode 100644 index 000000000..d306c7431 Binary files /dev/null and b/public/terrain/19/858560/353854.terrain differ diff --git a/public/terrain/19/858560/353855.terrain b/public/terrain/19/858560/353855.terrain new file mode 100644 index 000000000..0f41d27ca Binary files /dev/null and b/public/terrain/19/858560/353855.terrain differ diff --git a/public/terrain/19/858560/353856.terrain b/public/terrain/19/858560/353856.terrain new file mode 100644 index 000000000..9d84ee413 Binary files /dev/null and b/public/terrain/19/858560/353856.terrain differ diff --git a/public/terrain/19/858560/353857.terrain b/public/terrain/19/858560/353857.terrain new file mode 100644 index 000000000..6554180b8 Binary files /dev/null and b/public/terrain/19/858560/353857.terrain differ diff --git a/public/terrain/19/858560/353858.terrain b/public/terrain/19/858560/353858.terrain new file mode 100644 index 000000000..3d050b5d6 Binary files /dev/null and b/public/terrain/19/858560/353858.terrain differ diff --git a/public/terrain/19/858560/353859.terrain b/public/terrain/19/858560/353859.terrain new file mode 100644 index 000000000..450e385e1 Binary files /dev/null and b/public/terrain/19/858560/353859.terrain differ diff --git a/public/terrain/19/858560/353860.terrain b/public/terrain/19/858560/353860.terrain new file mode 100644 index 000000000..8adac1479 Binary files /dev/null and b/public/terrain/19/858560/353860.terrain differ diff --git a/public/terrain/19/858560/353861.terrain b/public/terrain/19/858560/353861.terrain new file mode 100644 index 000000000..e02be588d Binary files /dev/null and b/public/terrain/19/858560/353861.terrain differ diff --git a/public/terrain/19/858560/353862.terrain b/public/terrain/19/858560/353862.terrain new file mode 100644 index 000000000..c1ab17c6d Binary files /dev/null and b/public/terrain/19/858560/353862.terrain differ diff --git a/public/terrain/19/858560/353863.terrain b/public/terrain/19/858560/353863.terrain new file mode 100644 index 000000000..2929045e8 Binary files /dev/null and b/public/terrain/19/858560/353863.terrain differ diff --git a/public/terrain/19/858560/353864.terrain b/public/terrain/19/858560/353864.terrain new file mode 100644 index 000000000..deee69204 Binary files /dev/null and b/public/terrain/19/858560/353864.terrain differ diff --git a/public/terrain/19/858560/353865.terrain b/public/terrain/19/858560/353865.terrain new file mode 100644 index 000000000..891e6ea1d Binary files /dev/null and b/public/terrain/19/858560/353865.terrain differ diff --git a/public/terrain/19/858560/353866.terrain b/public/terrain/19/858560/353866.terrain new file mode 100644 index 000000000..b2a000f80 Binary files /dev/null and b/public/terrain/19/858560/353866.terrain differ diff --git a/public/terrain/19/858560/353867.terrain b/public/terrain/19/858560/353867.terrain new file mode 100644 index 000000000..f47ffae1a Binary files /dev/null and b/public/terrain/19/858560/353867.terrain differ diff --git a/public/terrain/19/858560/353868.terrain b/public/terrain/19/858560/353868.terrain new file mode 100644 index 000000000..43e995b40 Binary files /dev/null and b/public/terrain/19/858560/353868.terrain differ diff --git a/public/terrain/19/858560/353869.terrain b/public/terrain/19/858560/353869.terrain new file mode 100644 index 000000000..8cd515c63 Binary files /dev/null and b/public/terrain/19/858560/353869.terrain differ diff --git a/public/terrain/19/858560/353870.terrain b/public/terrain/19/858560/353870.terrain new file mode 100644 index 000000000..1f2afde37 Binary files /dev/null and b/public/terrain/19/858560/353870.terrain differ diff --git a/public/terrain/19/858560/353871.terrain b/public/terrain/19/858560/353871.terrain new file mode 100644 index 000000000..96dddea39 Binary files /dev/null and b/public/terrain/19/858560/353871.terrain differ diff --git a/public/terrain/19/858560/353872.terrain b/public/terrain/19/858560/353872.terrain new file mode 100644 index 000000000..75bc71028 Binary files /dev/null and b/public/terrain/19/858560/353872.terrain differ diff --git a/public/terrain/19/858560/353873.terrain b/public/terrain/19/858560/353873.terrain new file mode 100644 index 000000000..f2ef31b33 Binary files /dev/null and b/public/terrain/19/858560/353873.terrain differ diff --git a/public/terrain/19/858560/353874.terrain b/public/terrain/19/858560/353874.terrain new file mode 100644 index 000000000..3e54987ab Binary files /dev/null and b/public/terrain/19/858560/353874.terrain differ diff --git a/public/terrain/19/858560/353875.terrain b/public/terrain/19/858560/353875.terrain new file mode 100644 index 000000000..99c97513e Binary files /dev/null and b/public/terrain/19/858560/353875.terrain differ diff --git a/public/terrain/19/858560/353876.terrain b/public/terrain/19/858560/353876.terrain new file mode 100644 index 000000000..97fad0c1e Binary files /dev/null and b/public/terrain/19/858560/353876.terrain differ diff --git a/public/terrain/19/858560/353877.terrain b/public/terrain/19/858560/353877.terrain new file mode 100644 index 000000000..7add8a35d Binary files /dev/null and b/public/terrain/19/858560/353877.terrain differ diff --git a/public/terrain/19/858560/353878.terrain b/public/terrain/19/858560/353878.terrain new file mode 100644 index 000000000..81f93fc49 Binary files /dev/null and b/public/terrain/19/858560/353878.terrain differ diff --git a/public/terrain/19/858560/353879.terrain b/public/terrain/19/858560/353879.terrain new file mode 100644 index 000000000..8b0b5fcb2 Binary files /dev/null and b/public/terrain/19/858560/353879.terrain differ diff --git a/public/terrain/19/858560/353880.terrain b/public/terrain/19/858560/353880.terrain new file mode 100644 index 000000000..7ecd9a56e Binary files /dev/null and b/public/terrain/19/858560/353880.terrain differ diff --git a/public/terrain/19/858560/353881.terrain b/public/terrain/19/858560/353881.terrain new file mode 100644 index 000000000..c189f45ea Binary files /dev/null and b/public/terrain/19/858560/353881.terrain differ diff --git a/public/terrain/19/858560/353882.terrain b/public/terrain/19/858560/353882.terrain new file mode 100644 index 000000000..51fb77086 Binary files /dev/null and b/public/terrain/19/858560/353882.terrain differ diff --git a/public/terrain/19/858560/353883.terrain b/public/terrain/19/858560/353883.terrain new file mode 100644 index 000000000..ad387a90e Binary files /dev/null and b/public/terrain/19/858560/353883.terrain differ diff --git a/public/terrain/19/858560/353884.terrain b/public/terrain/19/858560/353884.terrain new file mode 100644 index 000000000..533e71655 Binary files /dev/null and b/public/terrain/19/858560/353884.terrain differ diff --git a/public/terrain/19/858560/353885.terrain b/public/terrain/19/858560/353885.terrain new file mode 100644 index 000000000..8e2f03f74 Binary files /dev/null and b/public/terrain/19/858560/353885.terrain differ diff --git a/public/terrain/19/858560/353886.terrain b/public/terrain/19/858560/353886.terrain new file mode 100644 index 000000000..63b3c75f4 Binary files /dev/null and b/public/terrain/19/858560/353886.terrain differ diff --git a/public/terrain/19/858560/353887.terrain b/public/terrain/19/858560/353887.terrain new file mode 100644 index 000000000..e9789ef87 Binary files /dev/null and b/public/terrain/19/858560/353887.terrain differ diff --git a/public/terrain/19/858560/353888.terrain b/public/terrain/19/858560/353888.terrain new file mode 100644 index 000000000..527c5ea06 Binary files /dev/null and b/public/terrain/19/858560/353888.terrain differ diff --git a/public/terrain/19/858560/353889.terrain b/public/terrain/19/858560/353889.terrain new file mode 100644 index 000000000..4bfd76837 Binary files /dev/null and b/public/terrain/19/858560/353889.terrain differ diff --git a/public/terrain/19/858560/353890.terrain b/public/terrain/19/858560/353890.terrain new file mode 100644 index 000000000..8f613e21f Binary files /dev/null and b/public/terrain/19/858560/353890.terrain differ diff --git a/public/terrain/19/858560/353891.terrain b/public/terrain/19/858560/353891.terrain new file mode 100644 index 000000000..040c01f32 Binary files /dev/null and b/public/terrain/19/858560/353891.terrain differ diff --git a/public/terrain/19/858560/353892.terrain b/public/terrain/19/858560/353892.terrain new file mode 100644 index 000000000..4a2a46b5f Binary files /dev/null and b/public/terrain/19/858560/353892.terrain differ diff --git a/public/terrain/19/858560/353893.terrain b/public/terrain/19/858560/353893.terrain new file mode 100644 index 000000000..c2740de02 Binary files /dev/null and b/public/terrain/19/858560/353893.terrain differ diff --git a/public/terrain/19/858560/353894.terrain b/public/terrain/19/858560/353894.terrain new file mode 100644 index 000000000..4080a9ba8 Binary files /dev/null and b/public/terrain/19/858560/353894.terrain differ diff --git a/public/terrain/19/858560/353895.terrain b/public/terrain/19/858560/353895.terrain new file mode 100644 index 000000000..4a1322b14 Binary files /dev/null and b/public/terrain/19/858560/353895.terrain differ diff --git a/public/terrain/19/858560/353896.terrain b/public/terrain/19/858560/353896.terrain new file mode 100644 index 000000000..89e271bbb Binary files /dev/null and b/public/terrain/19/858560/353896.terrain differ diff --git a/public/terrain/19/858560/353897.terrain b/public/terrain/19/858560/353897.terrain new file mode 100644 index 000000000..28397d871 Binary files /dev/null and b/public/terrain/19/858560/353897.terrain differ diff --git a/public/terrain/19/858560/353898.terrain b/public/terrain/19/858560/353898.terrain new file mode 100644 index 000000000..361f64930 Binary files /dev/null and b/public/terrain/19/858560/353898.terrain differ diff --git a/public/terrain/19/858560/353899.terrain b/public/terrain/19/858560/353899.terrain new file mode 100644 index 000000000..410223d77 Binary files /dev/null and b/public/terrain/19/858560/353899.terrain differ diff --git a/public/terrain/19/858560/353900.terrain b/public/terrain/19/858560/353900.terrain new file mode 100644 index 000000000..c10a4efea Binary files /dev/null and b/public/terrain/19/858560/353900.terrain differ diff --git a/public/terrain/19/858560/353901.terrain b/public/terrain/19/858560/353901.terrain new file mode 100644 index 000000000..b0cb924a5 Binary files /dev/null and b/public/terrain/19/858560/353901.terrain differ diff --git a/public/terrain/19/858560/353902.terrain b/public/terrain/19/858560/353902.terrain new file mode 100644 index 000000000..0a07f5c1c Binary files /dev/null and b/public/terrain/19/858560/353902.terrain differ diff --git a/public/terrain/19/858560/353903.terrain b/public/terrain/19/858560/353903.terrain new file mode 100644 index 000000000..62db78970 Binary files /dev/null and b/public/terrain/19/858560/353903.terrain differ diff --git a/public/terrain/19/858560/353904.terrain b/public/terrain/19/858560/353904.terrain new file mode 100644 index 000000000..b19f03cd3 Binary files /dev/null and b/public/terrain/19/858560/353904.terrain differ diff --git a/public/terrain/19/858560/353905.terrain b/public/terrain/19/858560/353905.terrain new file mode 100644 index 000000000..bc54de738 Binary files /dev/null and b/public/terrain/19/858560/353905.terrain differ diff --git a/public/terrain/19/858560/353906.terrain b/public/terrain/19/858560/353906.terrain new file mode 100644 index 000000000..e03ae1043 Binary files /dev/null and b/public/terrain/19/858560/353906.terrain differ diff --git a/public/terrain/19/858560/353907.terrain b/public/terrain/19/858560/353907.terrain new file mode 100644 index 000000000..1b12d0d72 Binary files /dev/null and b/public/terrain/19/858560/353907.terrain differ diff --git a/public/terrain/19/858560/353908.terrain b/public/terrain/19/858560/353908.terrain new file mode 100644 index 000000000..d267c39d3 Binary files /dev/null and b/public/terrain/19/858560/353908.terrain differ diff --git a/public/terrain/19/858560/353909.terrain b/public/terrain/19/858560/353909.terrain new file mode 100644 index 000000000..e9ab13846 Binary files /dev/null and b/public/terrain/19/858560/353909.terrain differ diff --git a/public/terrain/19/858560/353910.terrain b/public/terrain/19/858560/353910.terrain new file mode 100644 index 000000000..591bdc371 Binary files /dev/null and b/public/terrain/19/858560/353910.terrain differ diff --git a/public/terrain/19/858560/353911.terrain b/public/terrain/19/858560/353911.terrain new file mode 100644 index 000000000..14a08a830 Binary files /dev/null and b/public/terrain/19/858560/353911.terrain differ diff --git a/public/terrain/19/858560/353912.terrain b/public/terrain/19/858560/353912.terrain new file mode 100644 index 000000000..09d01fd81 Binary files /dev/null and b/public/terrain/19/858560/353912.terrain differ diff --git a/public/terrain/19/858560/353913.terrain b/public/terrain/19/858560/353913.terrain new file mode 100644 index 000000000..928b6c6cc Binary files /dev/null and b/public/terrain/19/858560/353913.terrain differ diff --git a/public/terrain/19/858560/353914.terrain b/public/terrain/19/858560/353914.terrain new file mode 100644 index 000000000..e5470448a Binary files /dev/null and b/public/terrain/19/858560/353914.terrain differ diff --git a/public/terrain/19/858560/353915.terrain b/public/terrain/19/858560/353915.terrain new file mode 100644 index 000000000..f52288571 Binary files /dev/null and b/public/terrain/19/858560/353915.terrain differ diff --git a/public/terrain/19/858560/353916.terrain b/public/terrain/19/858560/353916.terrain new file mode 100644 index 000000000..76ef91384 Binary files /dev/null and b/public/terrain/19/858560/353916.terrain differ diff --git a/public/terrain/19/858560/353917.terrain b/public/terrain/19/858560/353917.terrain new file mode 100644 index 000000000..57742e7be Binary files /dev/null and b/public/terrain/19/858560/353917.terrain differ diff --git a/public/terrain/19/858560/353918.terrain b/public/terrain/19/858560/353918.terrain new file mode 100644 index 000000000..04c39ede9 Binary files /dev/null and b/public/terrain/19/858560/353918.terrain differ diff --git a/public/terrain/19/858560/353919.terrain b/public/terrain/19/858560/353919.terrain new file mode 100644 index 000000000..082c501db Binary files /dev/null and b/public/terrain/19/858560/353919.terrain differ diff --git a/public/terrain/19/858560/353920.terrain b/public/terrain/19/858560/353920.terrain new file mode 100644 index 000000000..d4f01423c Binary files /dev/null and b/public/terrain/19/858560/353920.terrain differ diff --git a/public/terrain/19/858560/353921.terrain b/public/terrain/19/858560/353921.terrain new file mode 100644 index 000000000..32cd5a5a6 Binary files /dev/null and b/public/terrain/19/858560/353921.terrain differ diff --git a/public/terrain/19/858560/353922.terrain b/public/terrain/19/858560/353922.terrain new file mode 100644 index 000000000..efda06acf Binary files /dev/null and b/public/terrain/19/858560/353922.terrain differ diff --git a/public/terrain/19/858560/353923.terrain b/public/terrain/19/858560/353923.terrain new file mode 100644 index 000000000..1f555fab6 Binary files /dev/null and b/public/terrain/19/858560/353923.terrain differ diff --git a/public/terrain/19/858560/353924.terrain b/public/terrain/19/858560/353924.terrain new file mode 100644 index 000000000..b7602e9c1 Binary files /dev/null and b/public/terrain/19/858560/353924.terrain differ diff --git a/public/terrain/19/858560/353925.terrain b/public/terrain/19/858560/353925.terrain new file mode 100644 index 000000000..c84bf2017 Binary files /dev/null and b/public/terrain/19/858560/353925.terrain differ diff --git a/public/terrain/19/858560/353926.terrain b/public/terrain/19/858560/353926.terrain new file mode 100644 index 000000000..09c2dc83d Binary files /dev/null and b/public/terrain/19/858560/353926.terrain differ diff --git a/public/terrain/19/858560/353927.terrain b/public/terrain/19/858560/353927.terrain new file mode 100644 index 000000000..339011424 Binary files /dev/null and b/public/terrain/19/858560/353927.terrain differ diff --git a/public/terrain/19/858560/353928.terrain b/public/terrain/19/858560/353928.terrain new file mode 100644 index 000000000..d44c1ee52 Binary files /dev/null and b/public/terrain/19/858560/353928.terrain differ diff --git a/public/terrain/19/858560/353929.terrain b/public/terrain/19/858560/353929.terrain new file mode 100644 index 000000000..fd7fba5d8 Binary files /dev/null and b/public/terrain/19/858560/353929.terrain differ diff --git a/public/terrain/19/858560/353930.terrain b/public/terrain/19/858560/353930.terrain new file mode 100644 index 000000000..e8062e752 Binary files /dev/null and b/public/terrain/19/858560/353930.terrain differ diff --git a/public/terrain/19/858560/353931.terrain b/public/terrain/19/858560/353931.terrain new file mode 100644 index 000000000..15d446613 Binary files /dev/null and b/public/terrain/19/858560/353931.terrain differ diff --git a/public/terrain/19/858560/353932.terrain b/public/terrain/19/858560/353932.terrain new file mode 100644 index 000000000..47da8d2b3 Binary files /dev/null and b/public/terrain/19/858560/353932.terrain differ diff --git a/public/terrain/19/858560/353933.terrain b/public/terrain/19/858560/353933.terrain new file mode 100644 index 000000000..1b2b17f17 Binary files /dev/null and b/public/terrain/19/858560/353933.terrain differ diff --git a/public/terrain/19/858560/353934.terrain b/public/terrain/19/858560/353934.terrain new file mode 100644 index 000000000..d2af283f5 Binary files /dev/null and b/public/terrain/19/858560/353934.terrain differ diff --git a/public/terrain/19/858560/353935.terrain b/public/terrain/19/858560/353935.terrain new file mode 100644 index 000000000..78d182d9a Binary files /dev/null and b/public/terrain/19/858560/353935.terrain differ diff --git a/public/terrain/19/858560/353936.terrain b/public/terrain/19/858560/353936.terrain new file mode 100644 index 000000000..3c5829bf7 Binary files /dev/null and b/public/terrain/19/858560/353936.terrain differ diff --git a/public/terrain/19/858560/353937.terrain b/public/terrain/19/858560/353937.terrain new file mode 100644 index 000000000..9f3007ee4 Binary files /dev/null and b/public/terrain/19/858560/353937.terrain differ diff --git a/public/terrain/19/858560/353938.terrain b/public/terrain/19/858560/353938.terrain new file mode 100644 index 000000000..7ff5a8da1 Binary files /dev/null and b/public/terrain/19/858560/353938.terrain differ diff --git a/public/terrain/19/858560/353939.terrain b/public/terrain/19/858560/353939.terrain new file mode 100644 index 000000000..d1ccb382c Binary files /dev/null and b/public/terrain/19/858560/353939.terrain differ diff --git a/public/terrain/19/858560/353940.terrain b/public/terrain/19/858560/353940.terrain new file mode 100644 index 000000000..467c44b7c Binary files /dev/null and b/public/terrain/19/858560/353940.terrain differ diff --git a/public/terrain/19/858560/353941.terrain b/public/terrain/19/858560/353941.terrain new file mode 100644 index 000000000..6e833d07a Binary files /dev/null and b/public/terrain/19/858560/353941.terrain differ diff --git a/public/terrain/19/858560/353942.terrain b/public/terrain/19/858560/353942.terrain new file mode 100644 index 000000000..3e2a207ba Binary files /dev/null and b/public/terrain/19/858560/353942.terrain differ diff --git a/public/terrain/19/858560/353943.terrain b/public/terrain/19/858560/353943.terrain new file mode 100644 index 000000000..a55d25146 Binary files /dev/null and b/public/terrain/19/858560/353943.terrain differ diff --git a/public/terrain/19/858560/353944.terrain b/public/terrain/19/858560/353944.terrain new file mode 100644 index 000000000..65367f56d Binary files /dev/null and b/public/terrain/19/858560/353944.terrain differ diff --git a/public/terrain/19/858560/353945.terrain b/public/terrain/19/858560/353945.terrain new file mode 100644 index 000000000..6157d3c2a Binary files /dev/null and b/public/terrain/19/858560/353945.terrain differ diff --git a/public/terrain/19/858560/353946.terrain b/public/terrain/19/858560/353946.terrain new file mode 100644 index 000000000..7cfb71e00 Binary files /dev/null and b/public/terrain/19/858560/353946.terrain differ diff --git a/public/terrain/19/858560/353947.terrain b/public/terrain/19/858560/353947.terrain new file mode 100644 index 000000000..7e6c4def6 Binary files /dev/null and b/public/terrain/19/858560/353947.terrain differ diff --git a/public/terrain/19/858560/353948.terrain b/public/terrain/19/858560/353948.terrain new file mode 100644 index 000000000..97a9e1653 Binary files /dev/null and b/public/terrain/19/858560/353948.terrain differ diff --git a/public/terrain/19/858560/353949.terrain b/public/terrain/19/858560/353949.terrain new file mode 100644 index 000000000..e0c1f5c14 Binary files /dev/null and b/public/terrain/19/858560/353949.terrain differ diff --git a/public/terrain/19/858560/353950.terrain b/public/terrain/19/858560/353950.terrain new file mode 100644 index 000000000..367055d10 Binary files /dev/null and b/public/terrain/19/858560/353950.terrain differ diff --git a/public/terrain/19/858560/353951.terrain b/public/terrain/19/858560/353951.terrain new file mode 100644 index 000000000..5194a2ba5 Binary files /dev/null and b/public/terrain/19/858560/353951.terrain differ diff --git a/public/terrain/19/858560/353952.terrain b/public/terrain/19/858560/353952.terrain new file mode 100644 index 000000000..69e7b3fbe Binary files /dev/null and b/public/terrain/19/858560/353952.terrain differ diff --git a/public/terrain/19/858560/353953.terrain b/public/terrain/19/858560/353953.terrain new file mode 100644 index 000000000..201f27ede Binary files /dev/null and b/public/terrain/19/858560/353953.terrain differ diff --git a/public/terrain/19/858560/353954.terrain b/public/terrain/19/858560/353954.terrain new file mode 100644 index 000000000..cd2146236 Binary files /dev/null and b/public/terrain/19/858560/353954.terrain differ diff --git a/public/terrain/19/858560/353955.terrain b/public/terrain/19/858560/353955.terrain new file mode 100644 index 000000000..2752c99bf Binary files /dev/null and b/public/terrain/19/858560/353955.terrain differ diff --git a/public/terrain/19/858560/353956.terrain b/public/terrain/19/858560/353956.terrain new file mode 100644 index 000000000..136603de6 Binary files /dev/null and b/public/terrain/19/858560/353956.terrain differ diff --git a/public/terrain/19/858560/353957.terrain b/public/terrain/19/858560/353957.terrain new file mode 100644 index 000000000..1c1066ebe Binary files /dev/null and b/public/terrain/19/858560/353957.terrain differ diff --git a/public/terrain/19/858560/353958.terrain b/public/terrain/19/858560/353958.terrain new file mode 100644 index 000000000..89ff2b3b6 Binary files /dev/null and b/public/terrain/19/858560/353958.terrain differ diff --git a/public/terrain/19/858560/353959.terrain b/public/terrain/19/858560/353959.terrain new file mode 100644 index 000000000..ede4240b7 Binary files /dev/null and b/public/terrain/19/858560/353959.terrain differ diff --git a/public/terrain/19/858560/353960.terrain b/public/terrain/19/858560/353960.terrain new file mode 100644 index 000000000..e2c21659c Binary files /dev/null and b/public/terrain/19/858560/353960.terrain differ diff --git a/public/terrain/19/858560/353961.terrain b/public/terrain/19/858560/353961.terrain new file mode 100644 index 000000000..a7c513461 Binary files /dev/null and b/public/terrain/19/858560/353961.terrain differ diff --git a/public/terrain/19/858560/353962.terrain b/public/terrain/19/858560/353962.terrain new file mode 100644 index 000000000..b1494a1f7 Binary files /dev/null and b/public/terrain/19/858560/353962.terrain differ diff --git a/public/terrain/19/858560/353963.terrain b/public/terrain/19/858560/353963.terrain new file mode 100644 index 000000000..46c172ad7 Binary files /dev/null and b/public/terrain/19/858560/353963.terrain differ diff --git a/public/terrain/19/858560/353964.terrain b/public/terrain/19/858560/353964.terrain new file mode 100644 index 000000000..6c9a281ec Binary files /dev/null and b/public/terrain/19/858560/353964.terrain differ diff --git a/public/terrain/19/858560/353965.terrain b/public/terrain/19/858560/353965.terrain new file mode 100644 index 000000000..06848d8c1 Binary files /dev/null and b/public/terrain/19/858560/353965.terrain differ diff --git a/public/terrain/19/858560/353966.terrain b/public/terrain/19/858560/353966.terrain new file mode 100644 index 000000000..ace778c4d Binary files /dev/null and b/public/terrain/19/858560/353966.terrain differ diff --git a/public/terrain/19/858560/353967.terrain b/public/terrain/19/858560/353967.terrain new file mode 100644 index 000000000..f9b19a499 Binary files /dev/null and b/public/terrain/19/858560/353967.terrain differ diff --git a/public/terrain/19/858560/353968.terrain b/public/terrain/19/858560/353968.terrain new file mode 100644 index 000000000..3710478a2 Binary files /dev/null and b/public/terrain/19/858560/353968.terrain differ diff --git a/public/terrain/19/858560/353969.terrain b/public/terrain/19/858560/353969.terrain new file mode 100644 index 000000000..9ae61f6b6 Binary files /dev/null and b/public/terrain/19/858560/353969.terrain differ diff --git a/public/terrain/19/858560/353970.terrain b/public/terrain/19/858560/353970.terrain new file mode 100644 index 000000000..2d7be3780 Binary files /dev/null and b/public/terrain/19/858560/353970.terrain differ diff --git a/public/terrain/19/858560/353971.terrain b/public/terrain/19/858560/353971.terrain new file mode 100644 index 000000000..ea6d87eb8 Binary files /dev/null and b/public/terrain/19/858560/353971.terrain differ diff --git a/public/terrain/19/858560/353972.terrain b/public/terrain/19/858560/353972.terrain new file mode 100644 index 000000000..94121294b Binary files /dev/null and b/public/terrain/19/858560/353972.terrain differ diff --git a/public/terrain/19/858560/353973.terrain b/public/terrain/19/858560/353973.terrain new file mode 100644 index 000000000..0e0130072 Binary files /dev/null and b/public/terrain/19/858560/353973.terrain differ diff --git a/public/terrain/19/858560/353974.terrain b/public/terrain/19/858560/353974.terrain new file mode 100644 index 000000000..5f5424c02 Binary files /dev/null and b/public/terrain/19/858560/353974.terrain differ diff --git a/public/terrain/19/858560/353975.terrain b/public/terrain/19/858560/353975.terrain new file mode 100644 index 000000000..2dc685303 Binary files /dev/null and b/public/terrain/19/858560/353975.terrain differ diff --git a/public/terrain/19/858560/353976.terrain b/public/terrain/19/858560/353976.terrain new file mode 100644 index 000000000..2f063b740 Binary files /dev/null and b/public/terrain/19/858560/353976.terrain differ diff --git a/public/terrain/19/858560/353977.terrain b/public/terrain/19/858560/353977.terrain new file mode 100644 index 000000000..176072c93 Binary files /dev/null and b/public/terrain/19/858560/353977.terrain differ diff --git a/public/terrain/19/858560/353978.terrain b/public/terrain/19/858560/353978.terrain new file mode 100644 index 000000000..c3e4ec356 Binary files /dev/null and b/public/terrain/19/858560/353978.terrain differ diff --git a/public/terrain/19/858560/353979.terrain b/public/terrain/19/858560/353979.terrain new file mode 100644 index 000000000..847e74829 Binary files /dev/null and b/public/terrain/19/858560/353979.terrain differ diff --git a/public/terrain/19/858560/353980.terrain b/public/terrain/19/858560/353980.terrain new file mode 100644 index 000000000..d631e5ab5 Binary files /dev/null and b/public/terrain/19/858560/353980.terrain differ diff --git a/public/terrain/19/858560/353981.terrain b/public/terrain/19/858560/353981.terrain new file mode 100644 index 000000000..b771bc516 Binary files /dev/null and b/public/terrain/19/858560/353981.terrain differ diff --git a/public/terrain/19/858560/353982.terrain b/public/terrain/19/858560/353982.terrain new file mode 100644 index 000000000..32379bd63 Binary files /dev/null and b/public/terrain/19/858560/353982.terrain differ diff --git a/public/terrain/19/858560/353983.terrain b/public/terrain/19/858560/353983.terrain new file mode 100644 index 000000000..42a821df4 Binary files /dev/null and b/public/terrain/19/858560/353983.terrain differ diff --git a/public/terrain/19/858560/353984.terrain b/public/terrain/19/858560/353984.terrain new file mode 100644 index 000000000..0ce7a6031 Binary files /dev/null and b/public/terrain/19/858560/353984.terrain differ diff --git a/public/terrain/19/858560/353985.terrain b/public/terrain/19/858560/353985.terrain new file mode 100644 index 000000000..32bbf5d5b Binary files /dev/null and b/public/terrain/19/858560/353985.terrain differ diff --git a/public/terrain/19/858560/353986.terrain b/public/terrain/19/858560/353986.terrain new file mode 100644 index 000000000..82b2b42c1 Binary files /dev/null and b/public/terrain/19/858560/353986.terrain differ diff --git a/public/terrain/19/858560/353987.terrain b/public/terrain/19/858560/353987.terrain new file mode 100644 index 000000000..3e9c12a30 Binary files /dev/null and b/public/terrain/19/858560/353987.terrain differ diff --git a/public/terrain/19/858560/353988.terrain b/public/terrain/19/858560/353988.terrain new file mode 100644 index 000000000..f28928937 Binary files /dev/null and b/public/terrain/19/858560/353988.terrain differ diff --git a/public/terrain/19/858560/353989.terrain b/public/terrain/19/858560/353989.terrain new file mode 100644 index 000000000..4242d88b6 Binary files /dev/null and b/public/terrain/19/858560/353989.terrain differ diff --git a/public/terrain/19/858560/353990.terrain b/public/terrain/19/858560/353990.terrain new file mode 100644 index 000000000..eb35d99c5 Binary files /dev/null and b/public/terrain/19/858560/353990.terrain differ diff --git a/public/terrain/19/858560/353991.terrain b/public/terrain/19/858560/353991.terrain new file mode 100644 index 000000000..4df941735 Binary files /dev/null and b/public/terrain/19/858560/353991.terrain differ diff --git a/public/terrain/19/858560/353992.terrain b/public/terrain/19/858560/353992.terrain new file mode 100644 index 000000000..3adaba8a8 Binary files /dev/null and b/public/terrain/19/858560/353992.terrain differ diff --git a/public/terrain/19/858560/353993.terrain b/public/terrain/19/858560/353993.terrain new file mode 100644 index 000000000..027cb4647 Binary files /dev/null and b/public/terrain/19/858560/353993.terrain differ diff --git a/public/terrain/19/858560/353994.terrain b/public/terrain/19/858560/353994.terrain new file mode 100644 index 000000000..f26f264df Binary files /dev/null and b/public/terrain/19/858560/353994.terrain differ diff --git a/public/terrain/19/858560/353995.terrain b/public/terrain/19/858560/353995.terrain new file mode 100644 index 000000000..e83c36b9f Binary files /dev/null and b/public/terrain/19/858560/353995.terrain differ diff --git a/public/terrain/19/858560/353996.terrain b/public/terrain/19/858560/353996.terrain new file mode 100644 index 000000000..16babd11d Binary files /dev/null and b/public/terrain/19/858560/353996.terrain differ diff --git a/public/terrain/19/858560/353997.terrain b/public/terrain/19/858560/353997.terrain new file mode 100644 index 000000000..a52c78820 Binary files /dev/null and b/public/terrain/19/858560/353997.terrain differ diff --git a/public/terrain/19/858560/353998.terrain b/public/terrain/19/858560/353998.terrain new file mode 100644 index 000000000..a039d100f Binary files /dev/null and b/public/terrain/19/858560/353998.terrain differ diff --git a/public/terrain/19/858560/353999.terrain b/public/terrain/19/858560/353999.terrain new file mode 100644 index 000000000..4cacabfd6 Binary files /dev/null and b/public/terrain/19/858560/353999.terrain differ diff --git a/public/terrain/19/858560/354000.terrain b/public/terrain/19/858560/354000.terrain new file mode 100644 index 000000000..e896d0416 Binary files /dev/null and b/public/terrain/19/858560/354000.terrain differ diff --git a/public/terrain/19/858560/354001.terrain b/public/terrain/19/858560/354001.terrain new file mode 100644 index 000000000..ee881ba99 Binary files /dev/null and b/public/terrain/19/858560/354001.terrain differ diff --git a/public/terrain/19/858560/354002.terrain b/public/terrain/19/858560/354002.terrain new file mode 100644 index 000000000..b7d56d486 Binary files /dev/null and b/public/terrain/19/858560/354002.terrain differ diff --git a/public/terrain/19/858560/354003.terrain b/public/terrain/19/858560/354003.terrain new file mode 100644 index 000000000..d60cf9966 Binary files /dev/null and b/public/terrain/19/858560/354003.terrain differ diff --git a/public/terrain/19/858560/354004.terrain b/public/terrain/19/858560/354004.terrain new file mode 100644 index 000000000..a84962c3d Binary files /dev/null and b/public/terrain/19/858560/354004.terrain differ diff --git a/public/terrain/19/858560/354005.terrain b/public/terrain/19/858560/354005.terrain new file mode 100644 index 000000000..93cfb2bd9 Binary files /dev/null and b/public/terrain/19/858560/354005.terrain differ diff --git a/public/terrain/19/858560/354006.terrain b/public/terrain/19/858560/354006.terrain new file mode 100644 index 000000000..d6f5cba3d Binary files /dev/null and b/public/terrain/19/858560/354006.terrain differ diff --git a/public/terrain/19/858560/354007.terrain b/public/terrain/19/858560/354007.terrain new file mode 100644 index 000000000..2cbcc1e13 Binary files /dev/null and b/public/terrain/19/858560/354007.terrain differ diff --git a/public/terrain/19/858560/354008.terrain b/public/terrain/19/858560/354008.terrain new file mode 100644 index 000000000..133eef801 Binary files /dev/null and b/public/terrain/19/858560/354008.terrain differ diff --git a/public/terrain/19/858560/354009.terrain b/public/terrain/19/858560/354009.terrain new file mode 100644 index 000000000..5da926807 Binary files /dev/null and b/public/terrain/19/858560/354009.terrain differ diff --git a/public/terrain/19/858560/354010.terrain b/public/terrain/19/858560/354010.terrain new file mode 100644 index 000000000..432e920b9 Binary files /dev/null and b/public/terrain/19/858560/354010.terrain differ diff --git a/public/terrain/19/858560/354011.terrain b/public/terrain/19/858560/354011.terrain new file mode 100644 index 000000000..e9e71f709 Binary files /dev/null and b/public/terrain/19/858560/354011.terrain differ diff --git a/public/terrain/19/858560/354012.terrain b/public/terrain/19/858560/354012.terrain new file mode 100644 index 000000000..5d1ec420b Binary files /dev/null and b/public/terrain/19/858560/354012.terrain differ diff --git a/public/terrain/19/858560/354013.terrain b/public/terrain/19/858560/354013.terrain new file mode 100644 index 000000000..d9acdc1f8 Binary files /dev/null and b/public/terrain/19/858560/354013.terrain differ diff --git a/public/terrain/19/858560/354014.terrain b/public/terrain/19/858560/354014.terrain new file mode 100644 index 000000000..b2abe2713 Binary files /dev/null and b/public/terrain/19/858560/354014.terrain differ diff --git a/public/terrain/19/858560/354015.terrain b/public/terrain/19/858560/354015.terrain new file mode 100644 index 000000000..e2e16d754 Binary files /dev/null and b/public/terrain/19/858560/354015.terrain differ diff --git a/public/terrain/19/858560/354016.terrain b/public/terrain/19/858560/354016.terrain new file mode 100644 index 000000000..287b7bc04 Binary files /dev/null and b/public/terrain/19/858560/354016.terrain differ diff --git a/public/terrain/19/858560/354017.terrain b/public/terrain/19/858560/354017.terrain new file mode 100644 index 000000000..054dd8561 Binary files /dev/null and b/public/terrain/19/858560/354017.terrain differ diff --git a/public/terrain/19/858560/354018.terrain b/public/terrain/19/858560/354018.terrain new file mode 100644 index 000000000..227c3c602 Binary files /dev/null and b/public/terrain/19/858560/354018.terrain differ diff --git a/public/terrain/19/858560/354019.terrain b/public/terrain/19/858560/354019.terrain new file mode 100644 index 000000000..5fc8c1ae4 Binary files /dev/null and b/public/terrain/19/858560/354019.terrain differ diff --git a/public/terrain/19/858560/354020.terrain b/public/terrain/19/858560/354020.terrain new file mode 100644 index 000000000..bcc257f20 Binary files /dev/null and b/public/terrain/19/858560/354020.terrain differ diff --git a/public/terrain/19/858560/354021.terrain b/public/terrain/19/858560/354021.terrain new file mode 100644 index 000000000..13338a1de Binary files /dev/null and b/public/terrain/19/858560/354021.terrain differ diff --git a/public/terrain/19/858560/354022.terrain b/public/terrain/19/858560/354022.terrain new file mode 100644 index 000000000..b9cb962ea Binary files /dev/null and b/public/terrain/19/858560/354022.terrain differ diff --git a/public/terrain/19/858560/354023.terrain b/public/terrain/19/858560/354023.terrain new file mode 100644 index 000000000..107f25e68 Binary files /dev/null and b/public/terrain/19/858560/354023.terrain differ diff --git a/public/terrain/19/858560/354024.terrain b/public/terrain/19/858560/354024.terrain new file mode 100644 index 000000000..5d76125b6 Binary files /dev/null and b/public/terrain/19/858560/354024.terrain differ diff --git a/public/terrain/19/858560/354025.terrain b/public/terrain/19/858560/354025.terrain new file mode 100644 index 000000000..b43954c92 Binary files /dev/null and b/public/terrain/19/858560/354025.terrain differ diff --git a/public/terrain/19/858560/354026.terrain b/public/terrain/19/858560/354026.terrain new file mode 100644 index 000000000..55bde8d4b Binary files /dev/null and b/public/terrain/19/858560/354026.terrain differ diff --git a/public/terrain/19/858560/354027.terrain b/public/terrain/19/858560/354027.terrain new file mode 100644 index 000000000..31d579c62 Binary files /dev/null and b/public/terrain/19/858560/354027.terrain differ diff --git a/public/terrain/19/858560/354028.terrain b/public/terrain/19/858560/354028.terrain new file mode 100644 index 000000000..9ae8b924e Binary files /dev/null and b/public/terrain/19/858560/354028.terrain differ diff --git a/public/terrain/19/858560/354029.terrain b/public/terrain/19/858560/354029.terrain new file mode 100644 index 000000000..1e0c810d1 Binary files /dev/null and b/public/terrain/19/858560/354029.terrain differ diff --git a/public/terrain/19/858560/354030.terrain b/public/terrain/19/858560/354030.terrain new file mode 100644 index 000000000..18e3696d5 Binary files /dev/null and b/public/terrain/19/858560/354030.terrain differ diff --git a/public/terrain/19/858560/354031.terrain b/public/terrain/19/858560/354031.terrain new file mode 100644 index 000000000..3403dad3b Binary files /dev/null and b/public/terrain/19/858560/354031.terrain differ diff --git a/public/terrain/19/858560/354032.terrain b/public/terrain/19/858560/354032.terrain new file mode 100644 index 000000000..af83cc97c Binary files /dev/null and b/public/terrain/19/858560/354032.terrain differ diff --git a/public/terrain/19/858560/354033.terrain b/public/terrain/19/858560/354033.terrain new file mode 100644 index 000000000..f5043ec13 Binary files /dev/null and b/public/terrain/19/858560/354033.terrain differ diff --git a/public/terrain/19/858560/354034.terrain b/public/terrain/19/858560/354034.terrain new file mode 100644 index 000000000..715b1d073 Binary files /dev/null and b/public/terrain/19/858560/354034.terrain differ diff --git a/public/terrain/19/858560/354035.terrain b/public/terrain/19/858560/354035.terrain new file mode 100644 index 000000000..fac2ebef3 Binary files /dev/null and b/public/terrain/19/858560/354035.terrain differ diff --git a/public/terrain/19/858560/354036.terrain b/public/terrain/19/858560/354036.terrain new file mode 100644 index 000000000..63c3cc84f Binary files /dev/null and b/public/terrain/19/858560/354036.terrain differ diff --git a/public/terrain/19/858560/354037.terrain b/public/terrain/19/858560/354037.terrain new file mode 100644 index 000000000..a40f8044a Binary files /dev/null and b/public/terrain/19/858560/354037.terrain differ diff --git a/public/terrain/19/858560/354038.terrain b/public/terrain/19/858560/354038.terrain new file mode 100644 index 000000000..57449c602 Binary files /dev/null and b/public/terrain/19/858560/354038.terrain differ diff --git a/public/terrain/19/858560/354039.terrain b/public/terrain/19/858560/354039.terrain new file mode 100644 index 000000000..090f1881c Binary files /dev/null and b/public/terrain/19/858560/354039.terrain differ diff --git a/public/terrain/19/858560/354040.terrain b/public/terrain/19/858560/354040.terrain new file mode 100644 index 000000000..b13e7ed10 Binary files /dev/null and b/public/terrain/19/858560/354040.terrain differ diff --git a/public/terrain/19/858560/354041.terrain b/public/terrain/19/858560/354041.terrain new file mode 100644 index 000000000..6e9f494dc Binary files /dev/null and b/public/terrain/19/858560/354041.terrain differ diff --git a/public/terrain/19/858560/354042.terrain b/public/terrain/19/858560/354042.terrain new file mode 100644 index 000000000..d673fffb5 Binary files /dev/null and b/public/terrain/19/858560/354042.terrain differ diff --git a/public/terrain/19/858560/354043.terrain b/public/terrain/19/858560/354043.terrain new file mode 100644 index 000000000..48b068a42 Binary files /dev/null and b/public/terrain/19/858560/354043.terrain differ diff --git a/public/terrain/19/858560/354044.terrain b/public/terrain/19/858560/354044.terrain new file mode 100644 index 000000000..dd8f8fd55 Binary files /dev/null and b/public/terrain/19/858560/354044.terrain differ diff --git a/public/terrain/19/858560/354045.terrain b/public/terrain/19/858560/354045.terrain new file mode 100644 index 000000000..8f1fffdac Binary files /dev/null and b/public/terrain/19/858560/354045.terrain differ diff --git a/public/terrain/19/858560/354046.terrain b/public/terrain/19/858560/354046.terrain new file mode 100644 index 000000000..1b5df5c4f Binary files /dev/null and b/public/terrain/19/858560/354046.terrain differ diff --git a/public/terrain/19/858560/354047.terrain b/public/terrain/19/858560/354047.terrain new file mode 100644 index 000000000..d780c17a6 Binary files /dev/null and b/public/terrain/19/858560/354047.terrain differ diff --git a/public/terrain/19/858560/354048.terrain b/public/terrain/19/858560/354048.terrain new file mode 100644 index 000000000..c15af0f3b Binary files /dev/null and b/public/terrain/19/858560/354048.terrain differ diff --git a/public/terrain/19/858560/354049.terrain b/public/terrain/19/858560/354049.terrain new file mode 100644 index 000000000..ab9689bde Binary files /dev/null and b/public/terrain/19/858560/354049.terrain differ diff --git a/public/terrain/19/858560/354050.terrain b/public/terrain/19/858560/354050.terrain new file mode 100644 index 000000000..ed8de7df1 Binary files /dev/null and b/public/terrain/19/858560/354050.terrain differ diff --git a/public/terrain/19/858560/354051.terrain b/public/terrain/19/858560/354051.terrain new file mode 100644 index 000000000..bb84ac08c Binary files /dev/null and b/public/terrain/19/858560/354051.terrain differ diff --git a/public/terrain/19/858560/354052.terrain b/public/terrain/19/858560/354052.terrain new file mode 100644 index 000000000..58fa05a2f Binary files /dev/null and b/public/terrain/19/858560/354052.terrain differ diff --git a/public/terrain/19/858560/354053.terrain b/public/terrain/19/858560/354053.terrain new file mode 100644 index 000000000..741237b2c Binary files /dev/null and b/public/terrain/19/858560/354053.terrain differ diff --git a/public/terrain/19/858560/354054.terrain b/public/terrain/19/858560/354054.terrain new file mode 100644 index 000000000..811185fb3 Binary files /dev/null and b/public/terrain/19/858560/354054.terrain differ diff --git a/public/terrain/19/858560/354055.terrain b/public/terrain/19/858560/354055.terrain new file mode 100644 index 000000000..a39cb03d1 Binary files /dev/null and b/public/terrain/19/858560/354055.terrain differ diff --git a/public/terrain/19/858560/354056.terrain b/public/terrain/19/858560/354056.terrain new file mode 100644 index 000000000..e08f1ff07 Binary files /dev/null and b/public/terrain/19/858560/354056.terrain differ diff --git a/public/terrain/19/858560/354057.terrain b/public/terrain/19/858560/354057.terrain new file mode 100644 index 000000000..3c46fd317 Binary files /dev/null and b/public/terrain/19/858560/354057.terrain differ diff --git a/public/terrain/19/858560/354058.terrain b/public/terrain/19/858560/354058.terrain new file mode 100644 index 000000000..31fcada1e Binary files /dev/null and b/public/terrain/19/858560/354058.terrain differ diff --git a/public/terrain/19/858560/354059.terrain b/public/terrain/19/858560/354059.terrain new file mode 100644 index 000000000..6e21a7190 Binary files /dev/null and b/public/terrain/19/858560/354059.terrain differ diff --git a/public/terrain/19/858561/353743.terrain b/public/terrain/19/858561/353743.terrain new file mode 100644 index 000000000..14efefef3 Binary files /dev/null and b/public/terrain/19/858561/353743.terrain differ diff --git a/public/terrain/19/858561/353744.terrain b/public/terrain/19/858561/353744.terrain new file mode 100644 index 000000000..5a10a736d Binary files /dev/null and b/public/terrain/19/858561/353744.terrain differ diff --git a/public/terrain/19/858561/353745.terrain b/public/terrain/19/858561/353745.terrain new file mode 100644 index 000000000..de741b268 Binary files /dev/null and b/public/terrain/19/858561/353745.terrain differ diff --git a/public/terrain/19/858561/353746.terrain b/public/terrain/19/858561/353746.terrain new file mode 100644 index 000000000..9af7589d6 Binary files /dev/null and b/public/terrain/19/858561/353746.terrain differ diff --git a/public/terrain/19/858561/353747.terrain b/public/terrain/19/858561/353747.terrain new file mode 100644 index 000000000..981a9af12 Binary files /dev/null and b/public/terrain/19/858561/353747.terrain differ diff --git a/public/terrain/19/858561/353748.terrain b/public/terrain/19/858561/353748.terrain new file mode 100644 index 000000000..7800fe4bd Binary files /dev/null and b/public/terrain/19/858561/353748.terrain differ diff --git a/public/terrain/19/858561/353749.terrain b/public/terrain/19/858561/353749.terrain new file mode 100644 index 000000000..b72246afd Binary files /dev/null and b/public/terrain/19/858561/353749.terrain differ diff --git a/public/terrain/19/858561/353750.terrain b/public/terrain/19/858561/353750.terrain new file mode 100644 index 000000000..62fc78f58 Binary files /dev/null and b/public/terrain/19/858561/353750.terrain differ diff --git a/public/terrain/19/858561/353751.terrain b/public/terrain/19/858561/353751.terrain new file mode 100644 index 000000000..764fb765f Binary files /dev/null and b/public/terrain/19/858561/353751.terrain differ diff --git a/public/terrain/19/858561/353752.terrain b/public/terrain/19/858561/353752.terrain new file mode 100644 index 000000000..35d486353 Binary files /dev/null and b/public/terrain/19/858561/353752.terrain differ diff --git a/public/terrain/19/858561/353753.terrain b/public/terrain/19/858561/353753.terrain new file mode 100644 index 000000000..9500d03d4 Binary files /dev/null and b/public/terrain/19/858561/353753.terrain differ diff --git a/public/terrain/19/858561/353754.terrain b/public/terrain/19/858561/353754.terrain new file mode 100644 index 000000000..16329fc56 Binary files /dev/null and b/public/terrain/19/858561/353754.terrain differ diff --git a/public/terrain/19/858561/353755.terrain b/public/terrain/19/858561/353755.terrain new file mode 100644 index 000000000..cc7f13e93 Binary files /dev/null and b/public/terrain/19/858561/353755.terrain differ diff --git a/public/terrain/19/858561/353756.terrain b/public/terrain/19/858561/353756.terrain new file mode 100644 index 000000000..ec43da8e5 Binary files /dev/null and b/public/terrain/19/858561/353756.terrain differ diff --git a/public/terrain/19/858561/353757.terrain b/public/terrain/19/858561/353757.terrain new file mode 100644 index 000000000..f0714bf6a Binary files /dev/null and b/public/terrain/19/858561/353757.terrain differ diff --git a/public/terrain/19/858561/353758.terrain b/public/terrain/19/858561/353758.terrain new file mode 100644 index 000000000..57df8fc8d Binary files /dev/null and b/public/terrain/19/858561/353758.terrain differ diff --git a/public/terrain/19/858561/353759.terrain b/public/terrain/19/858561/353759.terrain new file mode 100644 index 000000000..92e84aeb3 Binary files /dev/null and b/public/terrain/19/858561/353759.terrain differ diff --git a/public/terrain/19/858561/353760.terrain b/public/terrain/19/858561/353760.terrain new file mode 100644 index 000000000..0e5579b1d Binary files /dev/null and b/public/terrain/19/858561/353760.terrain differ diff --git a/public/terrain/19/858561/353761.terrain b/public/terrain/19/858561/353761.terrain new file mode 100644 index 000000000..79965d558 Binary files /dev/null and b/public/terrain/19/858561/353761.terrain differ diff --git a/public/terrain/19/858561/353762.terrain b/public/terrain/19/858561/353762.terrain new file mode 100644 index 000000000..6634f2c0a Binary files /dev/null and b/public/terrain/19/858561/353762.terrain differ diff --git a/public/terrain/19/858561/353763.terrain b/public/terrain/19/858561/353763.terrain new file mode 100644 index 000000000..277efbe5b Binary files /dev/null and b/public/terrain/19/858561/353763.terrain differ diff --git a/public/terrain/19/858561/353764.terrain b/public/terrain/19/858561/353764.terrain new file mode 100644 index 000000000..5b2c7b7f9 Binary files /dev/null and b/public/terrain/19/858561/353764.terrain differ diff --git a/public/terrain/19/858561/353765.terrain b/public/terrain/19/858561/353765.terrain new file mode 100644 index 000000000..be090a5a5 Binary files /dev/null and b/public/terrain/19/858561/353765.terrain differ diff --git a/public/terrain/19/858561/353766.terrain b/public/terrain/19/858561/353766.terrain new file mode 100644 index 000000000..c004e64ca Binary files /dev/null and b/public/terrain/19/858561/353766.terrain differ diff --git a/public/terrain/19/858561/353767.terrain b/public/terrain/19/858561/353767.terrain new file mode 100644 index 000000000..3dc1d33c8 Binary files /dev/null and b/public/terrain/19/858561/353767.terrain differ diff --git a/public/terrain/19/858561/353768.terrain b/public/terrain/19/858561/353768.terrain new file mode 100644 index 000000000..84aa1564b Binary files /dev/null and b/public/terrain/19/858561/353768.terrain differ diff --git a/public/terrain/19/858561/353769.terrain b/public/terrain/19/858561/353769.terrain new file mode 100644 index 000000000..ccdc1e956 Binary files /dev/null and b/public/terrain/19/858561/353769.terrain differ diff --git a/public/terrain/19/858561/353770.terrain b/public/terrain/19/858561/353770.terrain new file mode 100644 index 000000000..37f302c38 Binary files /dev/null and b/public/terrain/19/858561/353770.terrain differ diff --git a/public/terrain/19/858561/353771.terrain b/public/terrain/19/858561/353771.terrain new file mode 100644 index 000000000..ccbb3025f Binary files /dev/null and b/public/terrain/19/858561/353771.terrain differ diff --git a/public/terrain/19/858561/353772.terrain b/public/terrain/19/858561/353772.terrain new file mode 100644 index 000000000..2867581a2 Binary files /dev/null and b/public/terrain/19/858561/353772.terrain differ diff --git a/public/terrain/19/858561/353773.terrain b/public/terrain/19/858561/353773.terrain new file mode 100644 index 000000000..c28c0d79f Binary files /dev/null and b/public/terrain/19/858561/353773.terrain differ diff --git a/public/terrain/19/858561/353774.terrain b/public/terrain/19/858561/353774.terrain new file mode 100644 index 000000000..a61c93939 Binary files /dev/null and b/public/terrain/19/858561/353774.terrain differ diff --git a/public/terrain/19/858561/353775.terrain b/public/terrain/19/858561/353775.terrain new file mode 100644 index 000000000..e0e1fb411 Binary files /dev/null and b/public/terrain/19/858561/353775.terrain differ diff --git a/public/terrain/19/858561/353776.terrain b/public/terrain/19/858561/353776.terrain new file mode 100644 index 000000000..5c8e25a92 Binary files /dev/null and b/public/terrain/19/858561/353776.terrain differ diff --git a/public/terrain/19/858561/353777.terrain b/public/terrain/19/858561/353777.terrain new file mode 100644 index 000000000..5cfbd24b3 Binary files /dev/null and b/public/terrain/19/858561/353777.terrain differ diff --git a/public/terrain/19/858561/353778.terrain b/public/terrain/19/858561/353778.terrain new file mode 100644 index 000000000..058e9bd2d Binary files /dev/null and b/public/terrain/19/858561/353778.terrain differ diff --git a/public/terrain/19/858561/353779.terrain b/public/terrain/19/858561/353779.terrain new file mode 100644 index 000000000..a21b3bebc Binary files /dev/null and b/public/terrain/19/858561/353779.terrain differ diff --git a/public/terrain/19/858561/353780.terrain b/public/terrain/19/858561/353780.terrain new file mode 100644 index 000000000..904b34d99 Binary files /dev/null and b/public/terrain/19/858561/353780.terrain differ diff --git a/public/terrain/19/858561/353781.terrain b/public/terrain/19/858561/353781.terrain new file mode 100644 index 000000000..2d70c8f01 Binary files /dev/null and b/public/terrain/19/858561/353781.terrain differ diff --git a/public/terrain/19/858561/353782.terrain b/public/terrain/19/858561/353782.terrain new file mode 100644 index 000000000..7e221b4fe Binary files /dev/null and b/public/terrain/19/858561/353782.terrain differ diff --git a/public/terrain/19/858561/353783.terrain b/public/terrain/19/858561/353783.terrain new file mode 100644 index 000000000..0f71d4101 Binary files /dev/null and b/public/terrain/19/858561/353783.terrain differ diff --git a/public/terrain/19/858561/353784.terrain b/public/terrain/19/858561/353784.terrain new file mode 100644 index 000000000..cb54f1b23 Binary files /dev/null and b/public/terrain/19/858561/353784.terrain differ diff --git a/public/terrain/19/858561/353785.terrain b/public/terrain/19/858561/353785.terrain new file mode 100644 index 000000000..dcfb1bae5 Binary files /dev/null and b/public/terrain/19/858561/353785.terrain differ diff --git a/public/terrain/19/858561/353786.terrain b/public/terrain/19/858561/353786.terrain new file mode 100644 index 000000000..14e31bd44 Binary files /dev/null and b/public/terrain/19/858561/353786.terrain differ diff --git a/public/terrain/19/858561/353787.terrain b/public/terrain/19/858561/353787.terrain new file mode 100644 index 000000000..c9c0214bc Binary files /dev/null and b/public/terrain/19/858561/353787.terrain differ diff --git a/public/terrain/19/858561/353788.terrain b/public/terrain/19/858561/353788.terrain new file mode 100644 index 000000000..8a9f56a37 Binary files /dev/null and b/public/terrain/19/858561/353788.terrain differ diff --git a/public/terrain/19/858561/353789.terrain b/public/terrain/19/858561/353789.terrain new file mode 100644 index 000000000..784d04988 Binary files /dev/null and b/public/terrain/19/858561/353789.terrain differ diff --git a/public/terrain/19/858561/353790.terrain b/public/terrain/19/858561/353790.terrain new file mode 100644 index 000000000..ccd5977b2 Binary files /dev/null and b/public/terrain/19/858561/353790.terrain differ diff --git a/public/terrain/19/858561/353791.terrain b/public/terrain/19/858561/353791.terrain new file mode 100644 index 000000000..76a4711a9 Binary files /dev/null and b/public/terrain/19/858561/353791.terrain differ diff --git a/public/terrain/19/858561/353792.terrain b/public/terrain/19/858561/353792.terrain new file mode 100644 index 000000000..b57571702 Binary files /dev/null and b/public/terrain/19/858561/353792.terrain differ diff --git a/public/terrain/19/858561/353793.terrain b/public/terrain/19/858561/353793.terrain new file mode 100644 index 000000000..ec9bcd985 Binary files /dev/null and b/public/terrain/19/858561/353793.terrain differ diff --git a/public/terrain/19/858561/353794.terrain b/public/terrain/19/858561/353794.terrain new file mode 100644 index 000000000..b73db53c2 Binary files /dev/null and b/public/terrain/19/858561/353794.terrain differ diff --git a/public/terrain/19/858561/353795.terrain b/public/terrain/19/858561/353795.terrain new file mode 100644 index 000000000..2c0ecf57f Binary files /dev/null and b/public/terrain/19/858561/353795.terrain differ diff --git a/public/terrain/19/858561/353796.terrain b/public/terrain/19/858561/353796.terrain new file mode 100644 index 000000000..e21abf1a5 Binary files /dev/null and b/public/terrain/19/858561/353796.terrain differ diff --git a/public/terrain/19/858561/353797.terrain b/public/terrain/19/858561/353797.terrain new file mode 100644 index 000000000..1e9bea7ad Binary files /dev/null and b/public/terrain/19/858561/353797.terrain differ diff --git a/public/terrain/19/858561/353798.terrain b/public/terrain/19/858561/353798.terrain new file mode 100644 index 000000000..61853835c Binary files /dev/null and b/public/terrain/19/858561/353798.terrain differ diff --git a/public/terrain/19/858561/353799.terrain b/public/terrain/19/858561/353799.terrain new file mode 100644 index 000000000..8cf9855a1 Binary files /dev/null and b/public/terrain/19/858561/353799.terrain differ diff --git a/public/terrain/19/858561/353800.terrain b/public/terrain/19/858561/353800.terrain new file mode 100644 index 000000000..f360e6391 Binary files /dev/null and b/public/terrain/19/858561/353800.terrain differ diff --git a/public/terrain/19/858561/353801.terrain b/public/terrain/19/858561/353801.terrain new file mode 100644 index 000000000..914d2dad0 Binary files /dev/null and b/public/terrain/19/858561/353801.terrain differ diff --git a/public/terrain/19/858561/353802.terrain b/public/terrain/19/858561/353802.terrain new file mode 100644 index 000000000..6d15f6745 Binary files /dev/null and b/public/terrain/19/858561/353802.terrain differ diff --git a/public/terrain/19/858561/353803.terrain b/public/terrain/19/858561/353803.terrain new file mode 100644 index 000000000..95b1ba2cd Binary files /dev/null and b/public/terrain/19/858561/353803.terrain differ diff --git a/public/terrain/19/858561/353804.terrain b/public/terrain/19/858561/353804.terrain new file mode 100644 index 000000000..bce20a4e8 Binary files /dev/null and b/public/terrain/19/858561/353804.terrain differ diff --git a/public/terrain/19/858561/353805.terrain b/public/terrain/19/858561/353805.terrain new file mode 100644 index 000000000..a12b027ad Binary files /dev/null and b/public/terrain/19/858561/353805.terrain differ diff --git a/public/terrain/19/858561/353806.terrain b/public/terrain/19/858561/353806.terrain new file mode 100644 index 000000000..a8c50e76b Binary files /dev/null and b/public/terrain/19/858561/353806.terrain differ diff --git a/public/terrain/19/858561/353807.terrain b/public/terrain/19/858561/353807.terrain new file mode 100644 index 000000000..437e6141b Binary files /dev/null and b/public/terrain/19/858561/353807.terrain differ diff --git a/public/terrain/19/858561/353808.terrain b/public/terrain/19/858561/353808.terrain new file mode 100644 index 000000000..edbd87b76 Binary files /dev/null and b/public/terrain/19/858561/353808.terrain differ diff --git a/public/terrain/19/858561/353809.terrain b/public/terrain/19/858561/353809.terrain new file mode 100644 index 000000000..7e59e456f Binary files /dev/null and b/public/terrain/19/858561/353809.terrain differ diff --git a/public/terrain/19/858561/353810.terrain b/public/terrain/19/858561/353810.terrain new file mode 100644 index 000000000..f8eda91c7 Binary files /dev/null and b/public/terrain/19/858561/353810.terrain differ diff --git a/public/terrain/19/858561/353811.terrain b/public/terrain/19/858561/353811.terrain new file mode 100644 index 000000000..e84afbd52 Binary files /dev/null and b/public/terrain/19/858561/353811.terrain differ diff --git a/public/terrain/19/858561/353812.terrain b/public/terrain/19/858561/353812.terrain new file mode 100644 index 000000000..74b0afb0b Binary files /dev/null and b/public/terrain/19/858561/353812.terrain differ diff --git a/public/terrain/19/858561/353813.terrain b/public/terrain/19/858561/353813.terrain new file mode 100644 index 000000000..c65e9d752 Binary files /dev/null and b/public/terrain/19/858561/353813.terrain differ diff --git a/public/terrain/19/858561/353814.terrain b/public/terrain/19/858561/353814.terrain new file mode 100644 index 000000000..6721fa7bc Binary files /dev/null and b/public/terrain/19/858561/353814.terrain differ diff --git a/public/terrain/19/858561/353815.terrain b/public/terrain/19/858561/353815.terrain new file mode 100644 index 000000000..f311d9f85 Binary files /dev/null and b/public/terrain/19/858561/353815.terrain differ diff --git a/public/terrain/19/858561/353816.terrain b/public/terrain/19/858561/353816.terrain new file mode 100644 index 000000000..413bb0893 Binary files /dev/null and b/public/terrain/19/858561/353816.terrain differ diff --git a/public/terrain/19/858561/353817.terrain b/public/terrain/19/858561/353817.terrain new file mode 100644 index 000000000..c4284dabc Binary files /dev/null and b/public/terrain/19/858561/353817.terrain differ diff --git a/public/terrain/19/858561/353818.terrain b/public/terrain/19/858561/353818.terrain new file mode 100644 index 000000000..3096150dc Binary files /dev/null and b/public/terrain/19/858561/353818.terrain differ diff --git a/public/terrain/19/858561/353819.terrain b/public/terrain/19/858561/353819.terrain new file mode 100644 index 000000000..60ecd75ae Binary files /dev/null and b/public/terrain/19/858561/353819.terrain differ diff --git a/public/terrain/19/858561/353820.terrain b/public/terrain/19/858561/353820.terrain new file mode 100644 index 000000000..64d418910 Binary files /dev/null and b/public/terrain/19/858561/353820.terrain differ diff --git a/public/terrain/19/858561/353821.terrain b/public/terrain/19/858561/353821.terrain new file mode 100644 index 000000000..54b391419 Binary files /dev/null and b/public/terrain/19/858561/353821.terrain differ diff --git a/public/terrain/19/858561/353822.terrain b/public/terrain/19/858561/353822.terrain new file mode 100644 index 000000000..b3e8b8542 Binary files /dev/null and b/public/terrain/19/858561/353822.terrain differ diff --git a/public/terrain/19/858561/353823.terrain b/public/terrain/19/858561/353823.terrain new file mode 100644 index 000000000..6ed0c1d87 Binary files /dev/null and b/public/terrain/19/858561/353823.terrain differ diff --git a/public/terrain/19/858561/353824.terrain b/public/terrain/19/858561/353824.terrain new file mode 100644 index 000000000..8da9d37ca Binary files /dev/null and b/public/terrain/19/858561/353824.terrain differ diff --git a/public/terrain/19/858561/353825.terrain b/public/terrain/19/858561/353825.terrain new file mode 100644 index 000000000..3d7ff6f32 Binary files /dev/null and b/public/terrain/19/858561/353825.terrain differ diff --git a/public/terrain/19/858561/353826.terrain b/public/terrain/19/858561/353826.terrain new file mode 100644 index 000000000..b68abe4bc Binary files /dev/null and b/public/terrain/19/858561/353826.terrain differ diff --git a/public/terrain/19/858561/353827.terrain b/public/terrain/19/858561/353827.terrain new file mode 100644 index 000000000..0cb5d5460 Binary files /dev/null and b/public/terrain/19/858561/353827.terrain differ diff --git a/public/terrain/19/858561/353828.terrain b/public/terrain/19/858561/353828.terrain new file mode 100644 index 000000000..f5a665232 Binary files /dev/null and b/public/terrain/19/858561/353828.terrain differ diff --git a/public/terrain/19/858561/353829.terrain b/public/terrain/19/858561/353829.terrain new file mode 100644 index 000000000..c252873e6 Binary files /dev/null and b/public/terrain/19/858561/353829.terrain differ diff --git a/public/terrain/19/858561/353830.terrain b/public/terrain/19/858561/353830.terrain new file mode 100644 index 000000000..d77834180 Binary files /dev/null and b/public/terrain/19/858561/353830.terrain differ diff --git a/public/terrain/19/858561/353831.terrain b/public/terrain/19/858561/353831.terrain new file mode 100644 index 000000000..d13cb7390 Binary files /dev/null and b/public/terrain/19/858561/353831.terrain differ diff --git a/public/terrain/19/858561/353832.terrain b/public/terrain/19/858561/353832.terrain new file mode 100644 index 000000000..25654c507 Binary files /dev/null and b/public/terrain/19/858561/353832.terrain differ diff --git a/public/terrain/19/858561/353833.terrain b/public/terrain/19/858561/353833.terrain new file mode 100644 index 000000000..2cf4d04b8 Binary files /dev/null and b/public/terrain/19/858561/353833.terrain differ diff --git a/public/terrain/19/858561/353834.terrain b/public/terrain/19/858561/353834.terrain new file mode 100644 index 000000000..f4d7710b5 Binary files /dev/null and b/public/terrain/19/858561/353834.terrain differ diff --git a/public/terrain/19/858561/353835.terrain b/public/terrain/19/858561/353835.terrain new file mode 100644 index 000000000..f0ee6a31d Binary files /dev/null and b/public/terrain/19/858561/353835.terrain differ diff --git a/public/terrain/19/858561/353836.terrain b/public/terrain/19/858561/353836.terrain new file mode 100644 index 000000000..3a99d7792 Binary files /dev/null and b/public/terrain/19/858561/353836.terrain differ diff --git a/public/terrain/19/858561/353837.terrain b/public/terrain/19/858561/353837.terrain new file mode 100644 index 000000000..0abfa6494 Binary files /dev/null and b/public/terrain/19/858561/353837.terrain differ diff --git a/public/terrain/19/858561/353838.terrain b/public/terrain/19/858561/353838.terrain new file mode 100644 index 000000000..aa25f2e22 Binary files /dev/null and b/public/terrain/19/858561/353838.terrain differ diff --git a/public/terrain/19/858561/353839.terrain b/public/terrain/19/858561/353839.terrain new file mode 100644 index 000000000..db22d65a1 Binary files /dev/null and b/public/terrain/19/858561/353839.terrain differ diff --git a/public/terrain/19/858561/353840.terrain b/public/terrain/19/858561/353840.terrain new file mode 100644 index 000000000..993c155a7 Binary files /dev/null and b/public/terrain/19/858561/353840.terrain differ diff --git a/public/terrain/19/858561/353841.terrain b/public/terrain/19/858561/353841.terrain new file mode 100644 index 000000000..87f96845f Binary files /dev/null and b/public/terrain/19/858561/353841.terrain differ diff --git a/public/terrain/19/858561/353842.terrain b/public/terrain/19/858561/353842.terrain new file mode 100644 index 000000000..499092692 Binary files /dev/null and b/public/terrain/19/858561/353842.terrain differ diff --git a/public/terrain/19/858561/353843.terrain b/public/terrain/19/858561/353843.terrain new file mode 100644 index 000000000..aedcddfbd Binary files /dev/null and b/public/terrain/19/858561/353843.terrain differ diff --git a/public/terrain/19/858561/353844.terrain b/public/terrain/19/858561/353844.terrain new file mode 100644 index 000000000..e0266b498 Binary files /dev/null and b/public/terrain/19/858561/353844.terrain differ diff --git a/public/terrain/19/858561/353845.terrain b/public/terrain/19/858561/353845.terrain new file mode 100644 index 000000000..0994459a3 Binary files /dev/null and b/public/terrain/19/858561/353845.terrain differ diff --git a/public/terrain/19/858561/353846.terrain b/public/terrain/19/858561/353846.terrain new file mode 100644 index 000000000..32d63d3f6 Binary files /dev/null and b/public/terrain/19/858561/353846.terrain differ diff --git a/public/terrain/19/858561/353847.terrain b/public/terrain/19/858561/353847.terrain new file mode 100644 index 000000000..e0ef39d57 Binary files /dev/null and b/public/terrain/19/858561/353847.terrain differ diff --git a/public/terrain/19/858561/353848.terrain b/public/terrain/19/858561/353848.terrain new file mode 100644 index 000000000..1d69de2d9 Binary files /dev/null and b/public/terrain/19/858561/353848.terrain differ diff --git a/public/terrain/19/858561/353849.terrain b/public/terrain/19/858561/353849.terrain new file mode 100644 index 000000000..2c5f72997 Binary files /dev/null and b/public/terrain/19/858561/353849.terrain differ diff --git a/public/terrain/19/858561/353850.terrain b/public/terrain/19/858561/353850.terrain new file mode 100644 index 000000000..ca1e6a1a4 Binary files /dev/null and b/public/terrain/19/858561/353850.terrain differ diff --git a/public/terrain/19/858561/353851.terrain b/public/terrain/19/858561/353851.terrain new file mode 100644 index 000000000..e2bbc94b5 Binary files /dev/null and b/public/terrain/19/858561/353851.terrain differ diff --git a/public/terrain/19/858561/353852.terrain b/public/terrain/19/858561/353852.terrain new file mode 100644 index 000000000..2deab56c5 Binary files /dev/null and b/public/terrain/19/858561/353852.terrain differ diff --git a/public/terrain/19/858561/353853.terrain b/public/terrain/19/858561/353853.terrain new file mode 100644 index 000000000..5515ae595 Binary files /dev/null and b/public/terrain/19/858561/353853.terrain differ diff --git a/public/terrain/19/858561/353854.terrain b/public/terrain/19/858561/353854.terrain new file mode 100644 index 000000000..41814370b Binary files /dev/null and b/public/terrain/19/858561/353854.terrain differ diff --git a/public/terrain/19/858561/353855.terrain b/public/terrain/19/858561/353855.terrain new file mode 100644 index 000000000..2fc2659c5 Binary files /dev/null and b/public/terrain/19/858561/353855.terrain differ diff --git a/public/terrain/19/858561/353856.terrain b/public/terrain/19/858561/353856.terrain new file mode 100644 index 000000000..f7e6d4721 Binary files /dev/null and b/public/terrain/19/858561/353856.terrain differ diff --git a/public/terrain/19/858561/353857.terrain b/public/terrain/19/858561/353857.terrain new file mode 100644 index 000000000..80102bb4e Binary files /dev/null and b/public/terrain/19/858561/353857.terrain differ diff --git a/public/terrain/19/858561/353858.terrain b/public/terrain/19/858561/353858.terrain new file mode 100644 index 000000000..2e224f1af Binary files /dev/null and b/public/terrain/19/858561/353858.terrain differ diff --git a/public/terrain/19/858561/353859.terrain b/public/terrain/19/858561/353859.terrain new file mode 100644 index 000000000..ba371206e Binary files /dev/null and b/public/terrain/19/858561/353859.terrain differ diff --git a/public/terrain/19/858561/353860.terrain b/public/terrain/19/858561/353860.terrain new file mode 100644 index 000000000..c0c04fd21 Binary files /dev/null and b/public/terrain/19/858561/353860.terrain differ diff --git a/public/terrain/19/858561/353861.terrain b/public/terrain/19/858561/353861.terrain new file mode 100644 index 000000000..4a70536d7 Binary files /dev/null and b/public/terrain/19/858561/353861.terrain differ diff --git a/public/terrain/19/858561/353862.terrain b/public/terrain/19/858561/353862.terrain new file mode 100644 index 000000000..c84126f04 Binary files /dev/null and b/public/terrain/19/858561/353862.terrain differ diff --git a/public/terrain/19/858561/353863.terrain b/public/terrain/19/858561/353863.terrain new file mode 100644 index 000000000..56693704b Binary files /dev/null and b/public/terrain/19/858561/353863.terrain differ diff --git a/public/terrain/19/858561/353864.terrain b/public/terrain/19/858561/353864.terrain new file mode 100644 index 000000000..580813274 Binary files /dev/null and b/public/terrain/19/858561/353864.terrain differ diff --git a/public/terrain/19/858561/353865.terrain b/public/terrain/19/858561/353865.terrain new file mode 100644 index 000000000..8a874971a Binary files /dev/null and b/public/terrain/19/858561/353865.terrain differ diff --git a/public/terrain/19/858561/353866.terrain b/public/terrain/19/858561/353866.terrain new file mode 100644 index 000000000..333dac985 Binary files /dev/null and b/public/terrain/19/858561/353866.terrain differ diff --git a/public/terrain/19/858561/353867.terrain b/public/terrain/19/858561/353867.terrain new file mode 100644 index 000000000..e1246c46c Binary files /dev/null and b/public/terrain/19/858561/353867.terrain differ diff --git a/public/terrain/19/858561/353868.terrain b/public/terrain/19/858561/353868.terrain new file mode 100644 index 000000000..be9874964 Binary files /dev/null and b/public/terrain/19/858561/353868.terrain differ diff --git a/public/terrain/19/858561/353869.terrain b/public/terrain/19/858561/353869.terrain new file mode 100644 index 000000000..1c790f0f4 Binary files /dev/null and b/public/terrain/19/858561/353869.terrain differ diff --git a/public/terrain/19/858561/353870.terrain b/public/terrain/19/858561/353870.terrain new file mode 100644 index 000000000..3da870d2f Binary files /dev/null and b/public/terrain/19/858561/353870.terrain differ diff --git a/public/terrain/19/858561/353871.terrain b/public/terrain/19/858561/353871.terrain new file mode 100644 index 000000000..6d2f003f6 Binary files /dev/null and b/public/terrain/19/858561/353871.terrain differ diff --git a/public/terrain/19/858561/353872.terrain b/public/terrain/19/858561/353872.terrain new file mode 100644 index 000000000..43891ab6e Binary files /dev/null and b/public/terrain/19/858561/353872.terrain differ diff --git a/public/terrain/19/858561/353873.terrain b/public/terrain/19/858561/353873.terrain new file mode 100644 index 000000000..48c475af2 Binary files /dev/null and b/public/terrain/19/858561/353873.terrain differ diff --git a/public/terrain/19/858561/353874.terrain b/public/terrain/19/858561/353874.terrain new file mode 100644 index 000000000..355f876fd Binary files /dev/null and b/public/terrain/19/858561/353874.terrain differ diff --git a/public/terrain/19/858561/353875.terrain b/public/terrain/19/858561/353875.terrain new file mode 100644 index 000000000..e75449474 Binary files /dev/null and b/public/terrain/19/858561/353875.terrain differ diff --git a/public/terrain/19/858561/353876.terrain b/public/terrain/19/858561/353876.terrain new file mode 100644 index 000000000..509e99e6d Binary files /dev/null and b/public/terrain/19/858561/353876.terrain differ diff --git a/public/terrain/19/858561/353877.terrain b/public/terrain/19/858561/353877.terrain new file mode 100644 index 000000000..1d053dbb6 Binary files /dev/null and b/public/terrain/19/858561/353877.terrain differ diff --git a/public/terrain/19/858561/353878.terrain b/public/terrain/19/858561/353878.terrain new file mode 100644 index 000000000..281915c24 Binary files /dev/null and b/public/terrain/19/858561/353878.terrain differ diff --git a/public/terrain/19/858561/353879.terrain b/public/terrain/19/858561/353879.terrain new file mode 100644 index 000000000..f741e8ea9 Binary files /dev/null and b/public/terrain/19/858561/353879.terrain differ diff --git a/public/terrain/19/858561/353880.terrain b/public/terrain/19/858561/353880.terrain new file mode 100644 index 000000000..e244a3b3f Binary files /dev/null and b/public/terrain/19/858561/353880.terrain differ diff --git a/public/terrain/19/858561/353881.terrain b/public/terrain/19/858561/353881.terrain new file mode 100644 index 000000000..41e3908b2 Binary files /dev/null and b/public/terrain/19/858561/353881.terrain differ diff --git a/public/terrain/19/858561/353882.terrain b/public/terrain/19/858561/353882.terrain new file mode 100644 index 000000000..fb4b42a0b Binary files /dev/null and b/public/terrain/19/858561/353882.terrain differ diff --git a/public/terrain/19/858561/353883.terrain b/public/terrain/19/858561/353883.terrain new file mode 100644 index 000000000..c78b7d053 Binary files /dev/null and b/public/terrain/19/858561/353883.terrain differ diff --git a/public/terrain/19/858561/353884.terrain b/public/terrain/19/858561/353884.terrain new file mode 100644 index 000000000..3fe42209f Binary files /dev/null and b/public/terrain/19/858561/353884.terrain differ diff --git a/public/terrain/19/858561/353885.terrain b/public/terrain/19/858561/353885.terrain new file mode 100644 index 000000000..ff37236ba Binary files /dev/null and b/public/terrain/19/858561/353885.terrain differ diff --git a/public/terrain/19/858561/353886.terrain b/public/terrain/19/858561/353886.terrain new file mode 100644 index 000000000..d7506895d Binary files /dev/null and b/public/terrain/19/858561/353886.terrain differ diff --git a/public/terrain/19/858561/353887.terrain b/public/terrain/19/858561/353887.terrain new file mode 100644 index 000000000..a5d5a3050 Binary files /dev/null and b/public/terrain/19/858561/353887.terrain differ diff --git a/public/terrain/19/858561/353888.terrain b/public/terrain/19/858561/353888.terrain new file mode 100644 index 000000000..17b98035f Binary files /dev/null and b/public/terrain/19/858561/353888.terrain differ diff --git a/public/terrain/19/858561/353889.terrain b/public/terrain/19/858561/353889.terrain new file mode 100644 index 000000000..0175d49b3 Binary files /dev/null and b/public/terrain/19/858561/353889.terrain differ diff --git a/public/terrain/19/858561/353890.terrain b/public/terrain/19/858561/353890.terrain new file mode 100644 index 000000000..f639eefeb Binary files /dev/null and b/public/terrain/19/858561/353890.terrain differ diff --git a/public/terrain/19/858561/353891.terrain b/public/terrain/19/858561/353891.terrain new file mode 100644 index 000000000..821051c69 Binary files /dev/null and b/public/terrain/19/858561/353891.terrain differ diff --git a/public/terrain/19/858561/353892.terrain b/public/terrain/19/858561/353892.terrain new file mode 100644 index 000000000..e889fe6c0 Binary files /dev/null and b/public/terrain/19/858561/353892.terrain differ diff --git a/public/terrain/19/858561/353893.terrain b/public/terrain/19/858561/353893.terrain new file mode 100644 index 000000000..71bcbe3a3 Binary files /dev/null and b/public/terrain/19/858561/353893.terrain differ diff --git a/public/terrain/19/858561/353894.terrain b/public/terrain/19/858561/353894.terrain new file mode 100644 index 000000000..309b8f7df Binary files /dev/null and b/public/terrain/19/858561/353894.terrain differ diff --git a/public/terrain/19/858561/353895.terrain b/public/terrain/19/858561/353895.terrain new file mode 100644 index 000000000..91ed33998 Binary files /dev/null and b/public/terrain/19/858561/353895.terrain differ diff --git a/public/terrain/19/858561/353896.terrain b/public/terrain/19/858561/353896.terrain new file mode 100644 index 000000000..58d717d6e Binary files /dev/null and b/public/terrain/19/858561/353896.terrain differ diff --git a/public/terrain/19/858561/353897.terrain b/public/terrain/19/858561/353897.terrain new file mode 100644 index 000000000..11bacd2fe Binary files /dev/null and b/public/terrain/19/858561/353897.terrain differ diff --git a/public/terrain/19/858561/353898.terrain b/public/terrain/19/858561/353898.terrain new file mode 100644 index 000000000..cc78cc84a Binary files /dev/null and b/public/terrain/19/858561/353898.terrain differ diff --git a/public/terrain/19/858561/353899.terrain b/public/terrain/19/858561/353899.terrain new file mode 100644 index 000000000..5ca0a015b Binary files /dev/null and b/public/terrain/19/858561/353899.terrain differ diff --git a/public/terrain/19/858561/353900.terrain b/public/terrain/19/858561/353900.terrain new file mode 100644 index 000000000..17524abd9 Binary files /dev/null and b/public/terrain/19/858561/353900.terrain differ diff --git a/public/terrain/19/858561/353901.terrain b/public/terrain/19/858561/353901.terrain new file mode 100644 index 000000000..475f32e91 Binary files /dev/null and b/public/terrain/19/858561/353901.terrain differ diff --git a/public/terrain/19/858561/353902.terrain b/public/terrain/19/858561/353902.terrain new file mode 100644 index 000000000..91010d7e4 Binary files /dev/null and b/public/terrain/19/858561/353902.terrain differ diff --git a/public/terrain/19/858561/353903.terrain b/public/terrain/19/858561/353903.terrain new file mode 100644 index 000000000..488f37e4f Binary files /dev/null and b/public/terrain/19/858561/353903.terrain differ diff --git a/public/terrain/19/858561/353904.terrain b/public/terrain/19/858561/353904.terrain new file mode 100644 index 000000000..208d8b640 Binary files /dev/null and b/public/terrain/19/858561/353904.terrain differ diff --git a/public/terrain/19/858561/353905.terrain b/public/terrain/19/858561/353905.terrain new file mode 100644 index 000000000..5b7f957c5 Binary files /dev/null and b/public/terrain/19/858561/353905.terrain differ diff --git a/public/terrain/19/858561/353906.terrain b/public/terrain/19/858561/353906.terrain new file mode 100644 index 000000000..3c83ac77a Binary files /dev/null and b/public/terrain/19/858561/353906.terrain differ diff --git a/public/terrain/19/858561/353907.terrain b/public/terrain/19/858561/353907.terrain new file mode 100644 index 000000000..31c3ae211 Binary files /dev/null and b/public/terrain/19/858561/353907.terrain differ diff --git a/public/terrain/19/858561/353908.terrain b/public/terrain/19/858561/353908.terrain new file mode 100644 index 000000000..00365a783 Binary files /dev/null and b/public/terrain/19/858561/353908.terrain differ diff --git a/public/terrain/19/858561/353909.terrain b/public/terrain/19/858561/353909.terrain new file mode 100644 index 000000000..760e6f6d6 Binary files /dev/null and b/public/terrain/19/858561/353909.terrain differ diff --git a/public/terrain/19/858561/353910.terrain b/public/terrain/19/858561/353910.terrain new file mode 100644 index 000000000..b9d866662 Binary files /dev/null and b/public/terrain/19/858561/353910.terrain differ diff --git a/public/terrain/19/858561/353911.terrain b/public/terrain/19/858561/353911.terrain new file mode 100644 index 000000000..ea57e19da Binary files /dev/null and b/public/terrain/19/858561/353911.terrain differ diff --git a/public/terrain/19/858561/353912.terrain b/public/terrain/19/858561/353912.terrain new file mode 100644 index 000000000..768cd6e70 Binary files /dev/null and b/public/terrain/19/858561/353912.terrain differ diff --git a/public/terrain/19/858561/353913.terrain b/public/terrain/19/858561/353913.terrain new file mode 100644 index 000000000..38e28b753 Binary files /dev/null and b/public/terrain/19/858561/353913.terrain differ diff --git a/public/terrain/19/858561/353914.terrain b/public/terrain/19/858561/353914.terrain new file mode 100644 index 000000000..ca7a34152 Binary files /dev/null and b/public/terrain/19/858561/353914.terrain differ diff --git a/public/terrain/19/858561/353915.terrain b/public/terrain/19/858561/353915.terrain new file mode 100644 index 000000000..3bd2060ec Binary files /dev/null and b/public/terrain/19/858561/353915.terrain differ diff --git a/public/terrain/19/858561/353916.terrain b/public/terrain/19/858561/353916.terrain new file mode 100644 index 000000000..c67155c7c Binary files /dev/null and b/public/terrain/19/858561/353916.terrain differ diff --git a/public/terrain/19/858561/353917.terrain b/public/terrain/19/858561/353917.terrain new file mode 100644 index 000000000..718ab039d Binary files /dev/null and b/public/terrain/19/858561/353917.terrain differ diff --git a/public/terrain/19/858561/353918.terrain b/public/terrain/19/858561/353918.terrain new file mode 100644 index 000000000..2a59dba3e Binary files /dev/null and b/public/terrain/19/858561/353918.terrain differ diff --git a/public/terrain/19/858561/353919.terrain b/public/terrain/19/858561/353919.terrain new file mode 100644 index 000000000..a5536fd17 Binary files /dev/null and b/public/terrain/19/858561/353919.terrain differ diff --git a/public/terrain/19/858561/353920.terrain b/public/terrain/19/858561/353920.terrain new file mode 100644 index 000000000..582ede9e6 Binary files /dev/null and b/public/terrain/19/858561/353920.terrain differ diff --git a/public/terrain/19/858561/353921.terrain b/public/terrain/19/858561/353921.terrain new file mode 100644 index 000000000..35a77207d Binary files /dev/null and b/public/terrain/19/858561/353921.terrain differ diff --git a/public/terrain/19/858561/353922.terrain b/public/terrain/19/858561/353922.terrain new file mode 100644 index 000000000..3c8664f33 Binary files /dev/null and b/public/terrain/19/858561/353922.terrain differ diff --git a/public/terrain/19/858561/353923.terrain b/public/terrain/19/858561/353923.terrain new file mode 100644 index 000000000..798457e2c Binary files /dev/null and b/public/terrain/19/858561/353923.terrain differ diff --git a/public/terrain/19/858561/353924.terrain b/public/terrain/19/858561/353924.terrain new file mode 100644 index 000000000..eb64e4c19 Binary files /dev/null and b/public/terrain/19/858561/353924.terrain differ diff --git a/public/terrain/19/858561/353925.terrain b/public/terrain/19/858561/353925.terrain new file mode 100644 index 000000000..e3ea607aa Binary files /dev/null and b/public/terrain/19/858561/353925.terrain differ diff --git a/public/terrain/19/858561/353926.terrain b/public/terrain/19/858561/353926.terrain new file mode 100644 index 000000000..b307a2929 Binary files /dev/null and b/public/terrain/19/858561/353926.terrain differ diff --git a/public/terrain/19/858561/353927.terrain b/public/terrain/19/858561/353927.terrain new file mode 100644 index 000000000..8c280f7ca Binary files /dev/null and b/public/terrain/19/858561/353927.terrain differ diff --git a/public/terrain/19/858561/353928.terrain b/public/terrain/19/858561/353928.terrain new file mode 100644 index 000000000..3e03cb1f3 Binary files /dev/null and b/public/terrain/19/858561/353928.terrain differ diff --git a/public/terrain/19/858561/353929.terrain b/public/terrain/19/858561/353929.terrain new file mode 100644 index 000000000..67b932e72 Binary files /dev/null and b/public/terrain/19/858561/353929.terrain differ diff --git a/public/terrain/19/858561/353930.terrain b/public/terrain/19/858561/353930.terrain new file mode 100644 index 000000000..ebe2db63b Binary files /dev/null and b/public/terrain/19/858561/353930.terrain differ diff --git a/public/terrain/19/858561/353931.terrain b/public/terrain/19/858561/353931.terrain new file mode 100644 index 000000000..8997e56d9 Binary files /dev/null and b/public/terrain/19/858561/353931.terrain differ diff --git a/public/terrain/19/858561/353932.terrain b/public/terrain/19/858561/353932.terrain new file mode 100644 index 000000000..db48e4cb9 Binary files /dev/null and b/public/terrain/19/858561/353932.terrain differ diff --git a/public/terrain/19/858561/353933.terrain b/public/terrain/19/858561/353933.terrain new file mode 100644 index 000000000..00013764c Binary files /dev/null and b/public/terrain/19/858561/353933.terrain differ diff --git a/public/terrain/19/858561/353934.terrain b/public/terrain/19/858561/353934.terrain new file mode 100644 index 000000000..ce7636229 Binary files /dev/null and b/public/terrain/19/858561/353934.terrain differ diff --git a/public/terrain/19/858561/353935.terrain b/public/terrain/19/858561/353935.terrain new file mode 100644 index 000000000..ab959551b Binary files /dev/null and b/public/terrain/19/858561/353935.terrain differ diff --git a/public/terrain/19/858561/353936.terrain b/public/terrain/19/858561/353936.terrain new file mode 100644 index 000000000..e938b25db Binary files /dev/null and b/public/terrain/19/858561/353936.terrain differ diff --git a/public/terrain/19/858561/353937.terrain b/public/terrain/19/858561/353937.terrain new file mode 100644 index 000000000..a561594e7 Binary files /dev/null and b/public/terrain/19/858561/353937.terrain differ diff --git a/public/terrain/19/858561/353938.terrain b/public/terrain/19/858561/353938.terrain new file mode 100644 index 000000000..88403922c Binary files /dev/null and b/public/terrain/19/858561/353938.terrain differ diff --git a/public/terrain/19/858561/353939.terrain b/public/terrain/19/858561/353939.terrain new file mode 100644 index 000000000..452bf5d2a Binary files /dev/null and b/public/terrain/19/858561/353939.terrain differ diff --git a/public/terrain/19/858561/353940.terrain b/public/terrain/19/858561/353940.terrain new file mode 100644 index 000000000..b0eee35bf Binary files /dev/null and b/public/terrain/19/858561/353940.terrain differ diff --git a/public/terrain/19/858561/353941.terrain b/public/terrain/19/858561/353941.terrain new file mode 100644 index 000000000..e40a717d6 Binary files /dev/null and b/public/terrain/19/858561/353941.terrain differ diff --git a/public/terrain/19/858561/353942.terrain b/public/terrain/19/858561/353942.terrain new file mode 100644 index 000000000..e6c84650a Binary files /dev/null and b/public/terrain/19/858561/353942.terrain differ diff --git a/public/terrain/19/858561/353943.terrain b/public/terrain/19/858561/353943.terrain new file mode 100644 index 000000000..71c813147 Binary files /dev/null and b/public/terrain/19/858561/353943.terrain differ diff --git a/public/terrain/19/858561/353944.terrain b/public/terrain/19/858561/353944.terrain new file mode 100644 index 000000000..d40768006 Binary files /dev/null and b/public/terrain/19/858561/353944.terrain differ diff --git a/public/terrain/19/858561/353945.terrain b/public/terrain/19/858561/353945.terrain new file mode 100644 index 000000000..48efdd92d Binary files /dev/null and b/public/terrain/19/858561/353945.terrain differ diff --git a/public/terrain/19/858561/353946.terrain b/public/terrain/19/858561/353946.terrain new file mode 100644 index 000000000..c869ab2fd Binary files /dev/null and b/public/terrain/19/858561/353946.terrain differ diff --git a/public/terrain/19/858561/353947.terrain b/public/terrain/19/858561/353947.terrain new file mode 100644 index 000000000..c48760d6d Binary files /dev/null and b/public/terrain/19/858561/353947.terrain differ diff --git a/public/terrain/19/858561/353948.terrain b/public/terrain/19/858561/353948.terrain new file mode 100644 index 000000000..fb85b7b55 Binary files /dev/null and b/public/terrain/19/858561/353948.terrain differ diff --git a/public/terrain/19/858561/353949.terrain b/public/terrain/19/858561/353949.terrain new file mode 100644 index 000000000..cbb7c3e3c Binary files /dev/null and b/public/terrain/19/858561/353949.terrain differ diff --git a/public/terrain/19/858561/353950.terrain b/public/terrain/19/858561/353950.terrain new file mode 100644 index 000000000..9d90dbbb4 Binary files /dev/null and b/public/terrain/19/858561/353950.terrain differ diff --git a/public/terrain/19/858561/353951.terrain b/public/terrain/19/858561/353951.terrain new file mode 100644 index 000000000..1190b329f Binary files /dev/null and b/public/terrain/19/858561/353951.terrain differ diff --git a/public/terrain/19/858561/353952.terrain b/public/terrain/19/858561/353952.terrain new file mode 100644 index 000000000..becb23b3f Binary files /dev/null and b/public/terrain/19/858561/353952.terrain differ diff --git a/public/terrain/19/858561/353953.terrain b/public/terrain/19/858561/353953.terrain new file mode 100644 index 000000000..d1836e6c4 Binary files /dev/null and b/public/terrain/19/858561/353953.terrain differ diff --git a/public/terrain/19/858561/353954.terrain b/public/terrain/19/858561/353954.terrain new file mode 100644 index 000000000..8b62e01fe Binary files /dev/null and b/public/terrain/19/858561/353954.terrain differ diff --git a/public/terrain/19/858561/353955.terrain b/public/terrain/19/858561/353955.terrain new file mode 100644 index 000000000..f09e76e53 Binary files /dev/null and b/public/terrain/19/858561/353955.terrain differ diff --git a/public/terrain/19/858561/353956.terrain b/public/terrain/19/858561/353956.terrain new file mode 100644 index 000000000..88bd96dbf Binary files /dev/null and b/public/terrain/19/858561/353956.terrain differ diff --git a/public/terrain/19/858561/353957.terrain b/public/terrain/19/858561/353957.terrain new file mode 100644 index 000000000..a0f659e85 Binary files /dev/null and b/public/terrain/19/858561/353957.terrain differ diff --git a/public/terrain/19/858561/353958.terrain b/public/terrain/19/858561/353958.terrain new file mode 100644 index 000000000..a0eac66bb Binary files /dev/null and b/public/terrain/19/858561/353958.terrain differ diff --git a/public/terrain/19/858561/353959.terrain b/public/terrain/19/858561/353959.terrain new file mode 100644 index 000000000..a73349407 Binary files /dev/null and b/public/terrain/19/858561/353959.terrain differ diff --git a/public/terrain/19/858561/353960.terrain b/public/terrain/19/858561/353960.terrain new file mode 100644 index 000000000..a61bc3600 Binary files /dev/null and b/public/terrain/19/858561/353960.terrain differ diff --git a/public/terrain/19/858561/353961.terrain b/public/terrain/19/858561/353961.terrain new file mode 100644 index 000000000..1b66d495f Binary files /dev/null and b/public/terrain/19/858561/353961.terrain differ diff --git a/public/terrain/19/858561/353962.terrain b/public/terrain/19/858561/353962.terrain new file mode 100644 index 000000000..4cb139eab Binary files /dev/null and b/public/terrain/19/858561/353962.terrain differ diff --git a/public/terrain/19/858561/353963.terrain b/public/terrain/19/858561/353963.terrain new file mode 100644 index 000000000..3597b4c90 Binary files /dev/null and b/public/terrain/19/858561/353963.terrain differ diff --git a/public/terrain/19/858561/353964.terrain b/public/terrain/19/858561/353964.terrain new file mode 100644 index 000000000..56d8cae2c Binary files /dev/null and b/public/terrain/19/858561/353964.terrain differ diff --git a/public/terrain/19/858561/353965.terrain b/public/terrain/19/858561/353965.terrain new file mode 100644 index 000000000..e9de4b243 Binary files /dev/null and b/public/terrain/19/858561/353965.terrain differ diff --git a/public/terrain/19/858561/353966.terrain b/public/terrain/19/858561/353966.terrain new file mode 100644 index 000000000..5e3971acb Binary files /dev/null and b/public/terrain/19/858561/353966.terrain differ diff --git a/public/terrain/19/858561/353967.terrain b/public/terrain/19/858561/353967.terrain new file mode 100644 index 000000000..09e03e560 Binary files /dev/null and b/public/terrain/19/858561/353967.terrain differ diff --git a/public/terrain/19/858561/353968.terrain b/public/terrain/19/858561/353968.terrain new file mode 100644 index 000000000..d01911ffd Binary files /dev/null and b/public/terrain/19/858561/353968.terrain differ diff --git a/public/terrain/19/858561/353969.terrain b/public/terrain/19/858561/353969.terrain new file mode 100644 index 000000000..bd1c39e20 Binary files /dev/null and b/public/terrain/19/858561/353969.terrain differ diff --git a/public/terrain/19/858561/353970.terrain b/public/terrain/19/858561/353970.terrain new file mode 100644 index 000000000..3ee7b4001 Binary files /dev/null and b/public/terrain/19/858561/353970.terrain differ diff --git a/public/terrain/19/858561/353971.terrain b/public/terrain/19/858561/353971.terrain new file mode 100644 index 000000000..21523f908 Binary files /dev/null and b/public/terrain/19/858561/353971.terrain differ diff --git a/public/terrain/19/858561/353972.terrain b/public/terrain/19/858561/353972.terrain new file mode 100644 index 000000000..e73035a25 Binary files /dev/null and b/public/terrain/19/858561/353972.terrain differ diff --git a/public/terrain/19/858561/353973.terrain b/public/terrain/19/858561/353973.terrain new file mode 100644 index 000000000..b5037fdfa Binary files /dev/null and b/public/terrain/19/858561/353973.terrain differ diff --git a/public/terrain/19/858561/353974.terrain b/public/terrain/19/858561/353974.terrain new file mode 100644 index 000000000..b2944860c Binary files /dev/null and b/public/terrain/19/858561/353974.terrain differ diff --git a/public/terrain/19/858561/353975.terrain b/public/terrain/19/858561/353975.terrain new file mode 100644 index 000000000..de96255b3 Binary files /dev/null and b/public/terrain/19/858561/353975.terrain differ diff --git a/public/terrain/19/858561/353976.terrain b/public/terrain/19/858561/353976.terrain new file mode 100644 index 000000000..a63cca0ba Binary files /dev/null and b/public/terrain/19/858561/353976.terrain differ diff --git a/public/terrain/19/858561/353977.terrain b/public/terrain/19/858561/353977.terrain new file mode 100644 index 000000000..ce8b70a37 Binary files /dev/null and b/public/terrain/19/858561/353977.terrain differ diff --git a/public/terrain/19/858561/353978.terrain b/public/terrain/19/858561/353978.terrain new file mode 100644 index 000000000..6ba4c09bc Binary files /dev/null and b/public/terrain/19/858561/353978.terrain differ diff --git a/public/terrain/19/858561/353979.terrain b/public/terrain/19/858561/353979.terrain new file mode 100644 index 000000000..adf45d3ba Binary files /dev/null and b/public/terrain/19/858561/353979.terrain differ diff --git a/public/terrain/19/858561/353980.terrain b/public/terrain/19/858561/353980.terrain new file mode 100644 index 000000000..37c675ec3 Binary files /dev/null and b/public/terrain/19/858561/353980.terrain differ diff --git a/public/terrain/19/858561/353981.terrain b/public/terrain/19/858561/353981.terrain new file mode 100644 index 000000000..fe4896e52 Binary files /dev/null and b/public/terrain/19/858561/353981.terrain differ diff --git a/public/terrain/19/858561/353982.terrain b/public/terrain/19/858561/353982.terrain new file mode 100644 index 000000000..dfee6d0d4 Binary files /dev/null and b/public/terrain/19/858561/353982.terrain differ diff --git a/public/terrain/19/858561/353983.terrain b/public/terrain/19/858561/353983.terrain new file mode 100644 index 000000000..ec81395a5 Binary files /dev/null and b/public/terrain/19/858561/353983.terrain differ diff --git a/public/terrain/19/858561/353984.terrain b/public/terrain/19/858561/353984.terrain new file mode 100644 index 000000000..7d4689ec7 Binary files /dev/null and b/public/terrain/19/858561/353984.terrain differ diff --git a/public/terrain/19/858561/353985.terrain b/public/terrain/19/858561/353985.terrain new file mode 100644 index 000000000..cf9819d10 Binary files /dev/null and b/public/terrain/19/858561/353985.terrain differ diff --git a/public/terrain/19/858561/353986.terrain b/public/terrain/19/858561/353986.terrain new file mode 100644 index 000000000..81f1b2062 Binary files /dev/null and b/public/terrain/19/858561/353986.terrain differ diff --git a/public/terrain/19/858561/353987.terrain b/public/terrain/19/858561/353987.terrain new file mode 100644 index 000000000..9d9b29201 Binary files /dev/null and b/public/terrain/19/858561/353987.terrain differ diff --git a/public/terrain/19/858561/353988.terrain b/public/terrain/19/858561/353988.terrain new file mode 100644 index 000000000..56f25d89b Binary files /dev/null and b/public/terrain/19/858561/353988.terrain differ diff --git a/public/terrain/19/858561/353989.terrain b/public/terrain/19/858561/353989.terrain new file mode 100644 index 000000000..655837336 Binary files /dev/null and b/public/terrain/19/858561/353989.terrain differ diff --git a/public/terrain/19/858561/353990.terrain b/public/terrain/19/858561/353990.terrain new file mode 100644 index 000000000..71f99702e Binary files /dev/null and b/public/terrain/19/858561/353990.terrain differ diff --git a/public/terrain/19/858561/353991.terrain b/public/terrain/19/858561/353991.terrain new file mode 100644 index 000000000..2f1525cf9 Binary files /dev/null and b/public/terrain/19/858561/353991.terrain differ diff --git a/public/terrain/19/858561/353992.terrain b/public/terrain/19/858561/353992.terrain new file mode 100644 index 000000000..25502eef7 Binary files /dev/null and b/public/terrain/19/858561/353992.terrain differ diff --git a/public/terrain/19/858561/353993.terrain b/public/terrain/19/858561/353993.terrain new file mode 100644 index 000000000..c2c595fc7 Binary files /dev/null and b/public/terrain/19/858561/353993.terrain differ diff --git a/public/terrain/19/858561/353994.terrain b/public/terrain/19/858561/353994.terrain new file mode 100644 index 000000000..a59d06e6f Binary files /dev/null and b/public/terrain/19/858561/353994.terrain differ diff --git a/public/terrain/19/858561/353995.terrain b/public/terrain/19/858561/353995.terrain new file mode 100644 index 000000000..d27cc7cb0 Binary files /dev/null and b/public/terrain/19/858561/353995.terrain differ diff --git a/public/terrain/19/858561/353996.terrain b/public/terrain/19/858561/353996.terrain new file mode 100644 index 000000000..34f409493 Binary files /dev/null and b/public/terrain/19/858561/353996.terrain differ diff --git a/public/terrain/19/858561/353997.terrain b/public/terrain/19/858561/353997.terrain new file mode 100644 index 000000000..b6ca1f023 Binary files /dev/null and b/public/terrain/19/858561/353997.terrain differ diff --git a/public/terrain/19/858561/353998.terrain b/public/terrain/19/858561/353998.terrain new file mode 100644 index 000000000..e0456c2f4 Binary files /dev/null and b/public/terrain/19/858561/353998.terrain differ diff --git a/public/terrain/19/858561/353999.terrain b/public/terrain/19/858561/353999.terrain new file mode 100644 index 000000000..b9d64ab7f Binary files /dev/null and b/public/terrain/19/858561/353999.terrain differ diff --git a/public/terrain/19/858561/354000.terrain b/public/terrain/19/858561/354000.terrain new file mode 100644 index 000000000..c7e9427d4 Binary files /dev/null and b/public/terrain/19/858561/354000.terrain differ diff --git a/public/terrain/19/858561/354001.terrain b/public/terrain/19/858561/354001.terrain new file mode 100644 index 000000000..59df59273 Binary files /dev/null and b/public/terrain/19/858561/354001.terrain differ diff --git a/public/terrain/19/858561/354002.terrain b/public/terrain/19/858561/354002.terrain new file mode 100644 index 000000000..2db715fbd Binary files /dev/null and b/public/terrain/19/858561/354002.terrain differ diff --git a/public/terrain/19/858561/354003.terrain b/public/terrain/19/858561/354003.terrain new file mode 100644 index 000000000..f53c5c052 Binary files /dev/null and b/public/terrain/19/858561/354003.terrain differ diff --git a/public/terrain/19/858561/354004.terrain b/public/terrain/19/858561/354004.terrain new file mode 100644 index 000000000..85efcb52f Binary files /dev/null and b/public/terrain/19/858561/354004.terrain differ diff --git a/public/terrain/19/858561/354005.terrain b/public/terrain/19/858561/354005.terrain new file mode 100644 index 000000000..22e4496f8 Binary files /dev/null and b/public/terrain/19/858561/354005.terrain differ diff --git a/public/terrain/19/858561/354006.terrain b/public/terrain/19/858561/354006.terrain new file mode 100644 index 000000000..6b8676b1d Binary files /dev/null and b/public/terrain/19/858561/354006.terrain differ diff --git a/public/terrain/19/858561/354007.terrain b/public/terrain/19/858561/354007.terrain new file mode 100644 index 000000000..1efc70d1a Binary files /dev/null and b/public/terrain/19/858561/354007.terrain differ diff --git a/public/terrain/19/858561/354008.terrain b/public/terrain/19/858561/354008.terrain new file mode 100644 index 000000000..cc53a7adc Binary files /dev/null and b/public/terrain/19/858561/354008.terrain differ diff --git a/public/terrain/19/858561/354009.terrain b/public/terrain/19/858561/354009.terrain new file mode 100644 index 000000000..66b04902e Binary files /dev/null and b/public/terrain/19/858561/354009.terrain differ diff --git a/public/terrain/19/858561/354010.terrain b/public/terrain/19/858561/354010.terrain new file mode 100644 index 000000000..a783c83ce Binary files /dev/null and b/public/terrain/19/858561/354010.terrain differ diff --git a/public/terrain/19/858561/354011.terrain b/public/terrain/19/858561/354011.terrain new file mode 100644 index 000000000..3fcc76d8a Binary files /dev/null and b/public/terrain/19/858561/354011.terrain differ diff --git a/public/terrain/19/858561/354012.terrain b/public/terrain/19/858561/354012.terrain new file mode 100644 index 000000000..832adfc69 Binary files /dev/null and b/public/terrain/19/858561/354012.terrain differ diff --git a/public/terrain/19/858561/354013.terrain b/public/terrain/19/858561/354013.terrain new file mode 100644 index 000000000..b34e35b68 Binary files /dev/null and b/public/terrain/19/858561/354013.terrain differ diff --git a/public/terrain/19/858561/354014.terrain b/public/terrain/19/858561/354014.terrain new file mode 100644 index 000000000..98f58cbcf Binary files /dev/null and b/public/terrain/19/858561/354014.terrain differ diff --git a/public/terrain/19/858561/354015.terrain b/public/terrain/19/858561/354015.terrain new file mode 100644 index 000000000..196ef77bd Binary files /dev/null and b/public/terrain/19/858561/354015.terrain differ diff --git a/public/terrain/19/858561/354016.terrain b/public/terrain/19/858561/354016.terrain new file mode 100644 index 000000000..5f957f091 Binary files /dev/null and b/public/terrain/19/858561/354016.terrain differ diff --git a/public/terrain/19/858561/354017.terrain b/public/terrain/19/858561/354017.terrain new file mode 100644 index 000000000..d2bcf8794 Binary files /dev/null and b/public/terrain/19/858561/354017.terrain differ diff --git a/public/terrain/19/858561/354018.terrain b/public/terrain/19/858561/354018.terrain new file mode 100644 index 000000000..086628e4d Binary files /dev/null and b/public/terrain/19/858561/354018.terrain differ diff --git a/public/terrain/19/858561/354019.terrain b/public/terrain/19/858561/354019.terrain new file mode 100644 index 000000000..655d8cd0f Binary files /dev/null and b/public/terrain/19/858561/354019.terrain differ diff --git a/public/terrain/19/858561/354020.terrain b/public/terrain/19/858561/354020.terrain new file mode 100644 index 000000000..93701b07b Binary files /dev/null and b/public/terrain/19/858561/354020.terrain differ diff --git a/public/terrain/19/858561/354021.terrain b/public/terrain/19/858561/354021.terrain new file mode 100644 index 000000000..2f38e64da Binary files /dev/null and b/public/terrain/19/858561/354021.terrain differ diff --git a/public/terrain/19/858561/354022.terrain b/public/terrain/19/858561/354022.terrain new file mode 100644 index 000000000..5528da1e1 Binary files /dev/null and b/public/terrain/19/858561/354022.terrain differ diff --git a/public/terrain/19/858561/354023.terrain b/public/terrain/19/858561/354023.terrain new file mode 100644 index 000000000..f6cd73cb0 Binary files /dev/null and b/public/terrain/19/858561/354023.terrain differ diff --git a/public/terrain/19/858561/354024.terrain b/public/terrain/19/858561/354024.terrain new file mode 100644 index 000000000..48c40e7ad Binary files /dev/null and b/public/terrain/19/858561/354024.terrain differ diff --git a/public/terrain/19/858561/354025.terrain b/public/terrain/19/858561/354025.terrain new file mode 100644 index 000000000..31aca1d73 Binary files /dev/null and b/public/terrain/19/858561/354025.terrain differ diff --git a/public/terrain/19/858561/354026.terrain b/public/terrain/19/858561/354026.terrain new file mode 100644 index 000000000..4687c74c8 Binary files /dev/null and b/public/terrain/19/858561/354026.terrain differ diff --git a/public/terrain/19/858561/354027.terrain b/public/terrain/19/858561/354027.terrain new file mode 100644 index 000000000..120886812 Binary files /dev/null and b/public/terrain/19/858561/354027.terrain differ diff --git a/public/terrain/19/858561/354028.terrain b/public/terrain/19/858561/354028.terrain new file mode 100644 index 000000000..016384533 Binary files /dev/null and b/public/terrain/19/858561/354028.terrain differ diff --git a/public/terrain/19/858561/354029.terrain b/public/terrain/19/858561/354029.terrain new file mode 100644 index 000000000..2f5815bd4 Binary files /dev/null and b/public/terrain/19/858561/354029.terrain differ diff --git a/public/terrain/19/858561/354030.terrain b/public/terrain/19/858561/354030.terrain new file mode 100644 index 000000000..dd3e987e7 Binary files /dev/null and b/public/terrain/19/858561/354030.terrain differ diff --git a/public/terrain/19/858561/354031.terrain b/public/terrain/19/858561/354031.terrain new file mode 100644 index 000000000..b40828ef4 Binary files /dev/null and b/public/terrain/19/858561/354031.terrain differ diff --git a/public/terrain/19/858561/354032.terrain b/public/terrain/19/858561/354032.terrain new file mode 100644 index 000000000..37b81735d Binary files /dev/null and b/public/terrain/19/858561/354032.terrain differ diff --git a/public/terrain/19/858561/354033.terrain b/public/terrain/19/858561/354033.terrain new file mode 100644 index 000000000..b1739b1fa Binary files /dev/null and b/public/terrain/19/858561/354033.terrain differ diff --git a/public/terrain/19/858561/354034.terrain b/public/terrain/19/858561/354034.terrain new file mode 100644 index 000000000..f6b2d663a Binary files /dev/null and b/public/terrain/19/858561/354034.terrain differ diff --git a/public/terrain/19/858561/354035.terrain b/public/terrain/19/858561/354035.terrain new file mode 100644 index 000000000..31f56fb27 Binary files /dev/null and b/public/terrain/19/858561/354035.terrain differ diff --git a/public/terrain/19/858561/354036.terrain b/public/terrain/19/858561/354036.terrain new file mode 100644 index 000000000..e1f182fea Binary files /dev/null and b/public/terrain/19/858561/354036.terrain differ diff --git a/public/terrain/19/858561/354037.terrain b/public/terrain/19/858561/354037.terrain new file mode 100644 index 000000000..238583d9a Binary files /dev/null and b/public/terrain/19/858561/354037.terrain differ diff --git a/public/terrain/19/858561/354038.terrain b/public/terrain/19/858561/354038.terrain new file mode 100644 index 000000000..27e51cf66 Binary files /dev/null and b/public/terrain/19/858561/354038.terrain differ diff --git a/public/terrain/19/858561/354039.terrain b/public/terrain/19/858561/354039.terrain new file mode 100644 index 000000000..00a7aac75 Binary files /dev/null and b/public/terrain/19/858561/354039.terrain differ diff --git a/public/terrain/19/858561/354040.terrain b/public/terrain/19/858561/354040.terrain new file mode 100644 index 000000000..870091599 Binary files /dev/null and b/public/terrain/19/858561/354040.terrain differ diff --git a/public/terrain/19/858561/354041.terrain b/public/terrain/19/858561/354041.terrain new file mode 100644 index 000000000..4337f4f8f Binary files /dev/null and b/public/terrain/19/858561/354041.terrain differ diff --git a/public/terrain/19/858561/354042.terrain b/public/terrain/19/858561/354042.terrain new file mode 100644 index 000000000..5a28e9d65 Binary files /dev/null and b/public/terrain/19/858561/354042.terrain differ diff --git a/public/terrain/19/858561/354043.terrain b/public/terrain/19/858561/354043.terrain new file mode 100644 index 000000000..c7e56b8bd Binary files /dev/null and b/public/terrain/19/858561/354043.terrain differ diff --git a/public/terrain/19/858561/354044.terrain b/public/terrain/19/858561/354044.terrain new file mode 100644 index 000000000..1a1dd15ab Binary files /dev/null and b/public/terrain/19/858561/354044.terrain differ diff --git a/public/terrain/19/858561/354045.terrain b/public/terrain/19/858561/354045.terrain new file mode 100644 index 000000000..e1b4bdc86 Binary files /dev/null and b/public/terrain/19/858561/354045.terrain differ diff --git a/public/terrain/19/858561/354046.terrain b/public/terrain/19/858561/354046.terrain new file mode 100644 index 000000000..f953d361a Binary files /dev/null and b/public/terrain/19/858561/354046.terrain differ diff --git a/public/terrain/19/858561/354047.terrain b/public/terrain/19/858561/354047.terrain new file mode 100644 index 000000000..0ed5bdf63 Binary files /dev/null and b/public/terrain/19/858561/354047.terrain differ diff --git a/public/terrain/19/858561/354048.terrain b/public/terrain/19/858561/354048.terrain new file mode 100644 index 000000000..16c5ea430 Binary files /dev/null and b/public/terrain/19/858561/354048.terrain differ diff --git a/public/terrain/19/858561/354049.terrain b/public/terrain/19/858561/354049.terrain new file mode 100644 index 000000000..54bc1cebb Binary files /dev/null and b/public/terrain/19/858561/354049.terrain differ diff --git a/public/terrain/19/858561/354050.terrain b/public/terrain/19/858561/354050.terrain new file mode 100644 index 000000000..53d47159b Binary files /dev/null and b/public/terrain/19/858561/354050.terrain differ diff --git a/public/terrain/19/858561/354051.terrain b/public/terrain/19/858561/354051.terrain new file mode 100644 index 000000000..002a40019 Binary files /dev/null and b/public/terrain/19/858561/354051.terrain differ diff --git a/public/terrain/19/858561/354052.terrain b/public/terrain/19/858561/354052.terrain new file mode 100644 index 000000000..7be72c2df Binary files /dev/null and b/public/terrain/19/858561/354052.terrain differ diff --git a/public/terrain/19/858561/354053.terrain b/public/terrain/19/858561/354053.terrain new file mode 100644 index 000000000..dd8eae4d8 Binary files /dev/null and b/public/terrain/19/858561/354053.terrain differ diff --git a/public/terrain/19/858561/354054.terrain b/public/terrain/19/858561/354054.terrain new file mode 100644 index 000000000..797d91ea7 Binary files /dev/null and b/public/terrain/19/858561/354054.terrain differ diff --git a/public/terrain/19/858561/354055.terrain b/public/terrain/19/858561/354055.terrain new file mode 100644 index 000000000..ebc12343d Binary files /dev/null and b/public/terrain/19/858561/354055.terrain differ diff --git a/public/terrain/19/858561/354056.terrain b/public/terrain/19/858561/354056.terrain new file mode 100644 index 000000000..94a6209b5 Binary files /dev/null and b/public/terrain/19/858561/354056.terrain differ diff --git a/public/terrain/19/858561/354057.terrain b/public/terrain/19/858561/354057.terrain new file mode 100644 index 000000000..43aaecf27 Binary files /dev/null and b/public/terrain/19/858561/354057.terrain differ diff --git a/public/terrain/19/858561/354058.terrain b/public/terrain/19/858561/354058.terrain new file mode 100644 index 000000000..a1fffde7a Binary files /dev/null and b/public/terrain/19/858561/354058.terrain differ diff --git a/public/terrain/19/858561/354059.terrain b/public/terrain/19/858561/354059.terrain new file mode 100644 index 000000000..59eab1959 Binary files /dev/null and b/public/terrain/19/858561/354059.terrain differ diff --git a/public/terrain/19/858562/353743.terrain b/public/terrain/19/858562/353743.terrain new file mode 100644 index 000000000..6b855cf5d Binary files /dev/null and b/public/terrain/19/858562/353743.terrain differ diff --git a/public/terrain/19/858562/353744.terrain b/public/terrain/19/858562/353744.terrain new file mode 100644 index 000000000..f916094d8 Binary files /dev/null and b/public/terrain/19/858562/353744.terrain differ diff --git a/public/terrain/19/858562/353745.terrain b/public/terrain/19/858562/353745.terrain new file mode 100644 index 000000000..e208fef8c Binary files /dev/null and b/public/terrain/19/858562/353745.terrain differ diff --git a/public/terrain/19/858562/353746.terrain b/public/terrain/19/858562/353746.terrain new file mode 100644 index 000000000..69d8a8241 Binary files /dev/null and b/public/terrain/19/858562/353746.terrain differ diff --git a/public/terrain/19/858562/353747.terrain b/public/terrain/19/858562/353747.terrain new file mode 100644 index 000000000..029b0712f Binary files /dev/null and b/public/terrain/19/858562/353747.terrain differ diff --git a/public/terrain/19/858562/353748.terrain b/public/terrain/19/858562/353748.terrain new file mode 100644 index 000000000..b8c5a7197 Binary files /dev/null and b/public/terrain/19/858562/353748.terrain differ diff --git a/public/terrain/19/858562/353749.terrain b/public/terrain/19/858562/353749.terrain new file mode 100644 index 000000000..96faa3585 Binary files /dev/null and b/public/terrain/19/858562/353749.terrain differ diff --git a/public/terrain/19/858562/353750.terrain b/public/terrain/19/858562/353750.terrain new file mode 100644 index 000000000..6d9c81f4d Binary files /dev/null and b/public/terrain/19/858562/353750.terrain differ diff --git a/public/terrain/19/858562/353751.terrain b/public/terrain/19/858562/353751.terrain new file mode 100644 index 000000000..9b156a381 Binary files /dev/null and b/public/terrain/19/858562/353751.terrain differ diff --git a/public/terrain/19/858562/353752.terrain b/public/terrain/19/858562/353752.terrain new file mode 100644 index 000000000..6a7a13faa Binary files /dev/null and b/public/terrain/19/858562/353752.terrain differ diff --git a/public/terrain/19/858562/353753.terrain b/public/terrain/19/858562/353753.terrain new file mode 100644 index 000000000..5403327c0 Binary files /dev/null and b/public/terrain/19/858562/353753.terrain differ diff --git a/public/terrain/19/858562/353754.terrain b/public/terrain/19/858562/353754.terrain new file mode 100644 index 000000000..eb23b6b75 Binary files /dev/null and b/public/terrain/19/858562/353754.terrain differ diff --git a/public/terrain/19/858562/353755.terrain b/public/terrain/19/858562/353755.terrain new file mode 100644 index 000000000..1cb94b168 Binary files /dev/null and b/public/terrain/19/858562/353755.terrain differ diff --git a/public/terrain/19/858562/353756.terrain b/public/terrain/19/858562/353756.terrain new file mode 100644 index 000000000..73e26612c Binary files /dev/null and b/public/terrain/19/858562/353756.terrain differ diff --git a/public/terrain/19/858562/353757.terrain b/public/terrain/19/858562/353757.terrain new file mode 100644 index 000000000..bc8ea945b Binary files /dev/null and b/public/terrain/19/858562/353757.terrain differ diff --git a/public/terrain/19/858562/353758.terrain b/public/terrain/19/858562/353758.terrain new file mode 100644 index 000000000..42958fc7d Binary files /dev/null and b/public/terrain/19/858562/353758.terrain differ diff --git a/public/terrain/19/858562/353759.terrain b/public/terrain/19/858562/353759.terrain new file mode 100644 index 000000000..28ebf6df0 Binary files /dev/null and b/public/terrain/19/858562/353759.terrain differ diff --git a/public/terrain/19/858562/353760.terrain b/public/terrain/19/858562/353760.terrain new file mode 100644 index 000000000..68237ccb1 Binary files /dev/null and b/public/terrain/19/858562/353760.terrain differ diff --git a/public/terrain/19/858562/353761.terrain b/public/terrain/19/858562/353761.terrain new file mode 100644 index 000000000..1d06a943f Binary files /dev/null and b/public/terrain/19/858562/353761.terrain differ diff --git a/public/terrain/19/858562/353762.terrain b/public/terrain/19/858562/353762.terrain new file mode 100644 index 000000000..d4d3b09cf Binary files /dev/null and b/public/terrain/19/858562/353762.terrain differ diff --git a/public/terrain/19/858562/353763.terrain b/public/terrain/19/858562/353763.terrain new file mode 100644 index 000000000..3f1ed133f Binary files /dev/null and b/public/terrain/19/858562/353763.terrain differ diff --git a/public/terrain/19/858562/353764.terrain b/public/terrain/19/858562/353764.terrain new file mode 100644 index 000000000..2cd426188 Binary files /dev/null and b/public/terrain/19/858562/353764.terrain differ diff --git a/public/terrain/19/858562/353765.terrain b/public/terrain/19/858562/353765.terrain new file mode 100644 index 000000000..d84304324 Binary files /dev/null and b/public/terrain/19/858562/353765.terrain differ diff --git a/public/terrain/19/858562/353766.terrain b/public/terrain/19/858562/353766.terrain new file mode 100644 index 000000000..e9b4035d3 Binary files /dev/null and b/public/terrain/19/858562/353766.terrain differ diff --git a/public/terrain/19/858562/353767.terrain b/public/terrain/19/858562/353767.terrain new file mode 100644 index 000000000..44fbcada9 Binary files /dev/null and b/public/terrain/19/858562/353767.terrain differ diff --git a/public/terrain/19/858562/353768.terrain b/public/terrain/19/858562/353768.terrain new file mode 100644 index 000000000..315b38e27 Binary files /dev/null and b/public/terrain/19/858562/353768.terrain differ diff --git a/public/terrain/19/858562/353769.terrain b/public/terrain/19/858562/353769.terrain new file mode 100644 index 000000000..a0cba3b75 Binary files /dev/null and b/public/terrain/19/858562/353769.terrain differ diff --git a/public/terrain/19/858562/353770.terrain b/public/terrain/19/858562/353770.terrain new file mode 100644 index 000000000..a5a0f472a Binary files /dev/null and b/public/terrain/19/858562/353770.terrain differ diff --git a/public/terrain/19/858562/353771.terrain b/public/terrain/19/858562/353771.terrain new file mode 100644 index 000000000..656c5f8cd Binary files /dev/null and b/public/terrain/19/858562/353771.terrain differ diff --git a/public/terrain/19/858562/353772.terrain b/public/terrain/19/858562/353772.terrain new file mode 100644 index 000000000..8e5486752 Binary files /dev/null and b/public/terrain/19/858562/353772.terrain differ diff --git a/public/terrain/19/858562/353773.terrain b/public/terrain/19/858562/353773.terrain new file mode 100644 index 000000000..9ef4cbf84 Binary files /dev/null and b/public/terrain/19/858562/353773.terrain differ diff --git a/public/terrain/19/858562/353774.terrain b/public/terrain/19/858562/353774.terrain new file mode 100644 index 000000000..c9a4fb35c Binary files /dev/null and b/public/terrain/19/858562/353774.terrain differ diff --git a/public/terrain/19/858562/353775.terrain b/public/terrain/19/858562/353775.terrain new file mode 100644 index 000000000..07547f69d Binary files /dev/null and b/public/terrain/19/858562/353775.terrain differ diff --git a/public/terrain/19/858562/353776.terrain b/public/terrain/19/858562/353776.terrain new file mode 100644 index 000000000..5f20aac17 Binary files /dev/null and b/public/terrain/19/858562/353776.terrain differ diff --git a/public/terrain/19/858562/353777.terrain b/public/terrain/19/858562/353777.terrain new file mode 100644 index 000000000..ade72f9be Binary files /dev/null and b/public/terrain/19/858562/353777.terrain differ diff --git a/public/terrain/19/858562/353778.terrain b/public/terrain/19/858562/353778.terrain new file mode 100644 index 000000000..3482c58a2 Binary files /dev/null and b/public/terrain/19/858562/353778.terrain differ diff --git a/public/terrain/19/858562/353779.terrain b/public/terrain/19/858562/353779.terrain new file mode 100644 index 000000000..650cf62da Binary files /dev/null and b/public/terrain/19/858562/353779.terrain differ diff --git a/public/terrain/19/858562/353780.terrain b/public/terrain/19/858562/353780.terrain new file mode 100644 index 000000000..fbf6b1274 Binary files /dev/null and b/public/terrain/19/858562/353780.terrain differ diff --git a/public/terrain/19/858562/353781.terrain b/public/terrain/19/858562/353781.terrain new file mode 100644 index 000000000..3a41af863 Binary files /dev/null and b/public/terrain/19/858562/353781.terrain differ diff --git a/public/terrain/19/858562/353782.terrain b/public/terrain/19/858562/353782.terrain new file mode 100644 index 000000000..811d8c737 Binary files /dev/null and b/public/terrain/19/858562/353782.terrain differ diff --git a/public/terrain/19/858562/353783.terrain b/public/terrain/19/858562/353783.terrain new file mode 100644 index 000000000..84e5aee68 Binary files /dev/null and b/public/terrain/19/858562/353783.terrain differ diff --git a/public/terrain/19/858562/353784.terrain b/public/terrain/19/858562/353784.terrain new file mode 100644 index 000000000..5b452d2be Binary files /dev/null and b/public/terrain/19/858562/353784.terrain differ diff --git a/public/terrain/19/858562/353785.terrain b/public/terrain/19/858562/353785.terrain new file mode 100644 index 000000000..fc6fe728b Binary files /dev/null and b/public/terrain/19/858562/353785.terrain differ diff --git a/public/terrain/19/858562/353786.terrain b/public/terrain/19/858562/353786.terrain new file mode 100644 index 000000000..918f2c3d9 Binary files /dev/null and b/public/terrain/19/858562/353786.terrain differ diff --git a/public/terrain/19/858562/353787.terrain b/public/terrain/19/858562/353787.terrain new file mode 100644 index 000000000..1cdcfa94e Binary files /dev/null and b/public/terrain/19/858562/353787.terrain differ diff --git a/public/terrain/19/858562/353788.terrain b/public/terrain/19/858562/353788.terrain new file mode 100644 index 000000000..e22ba5680 Binary files /dev/null and b/public/terrain/19/858562/353788.terrain differ diff --git a/public/terrain/19/858562/353789.terrain b/public/terrain/19/858562/353789.terrain new file mode 100644 index 000000000..d4c999260 Binary files /dev/null and b/public/terrain/19/858562/353789.terrain differ diff --git a/public/terrain/19/858562/353790.terrain b/public/terrain/19/858562/353790.terrain new file mode 100644 index 000000000..5c720ea47 Binary files /dev/null and b/public/terrain/19/858562/353790.terrain differ diff --git a/public/terrain/19/858562/353791.terrain b/public/terrain/19/858562/353791.terrain new file mode 100644 index 000000000..20bf991d8 Binary files /dev/null and b/public/terrain/19/858562/353791.terrain differ diff --git a/public/terrain/19/858562/353792.terrain b/public/terrain/19/858562/353792.terrain new file mode 100644 index 000000000..d12b33df8 Binary files /dev/null and b/public/terrain/19/858562/353792.terrain differ diff --git a/public/terrain/19/858562/353793.terrain b/public/terrain/19/858562/353793.terrain new file mode 100644 index 000000000..20e5b5db5 Binary files /dev/null and b/public/terrain/19/858562/353793.terrain differ diff --git a/public/terrain/19/858562/353794.terrain b/public/terrain/19/858562/353794.terrain new file mode 100644 index 000000000..8ff79011a Binary files /dev/null and b/public/terrain/19/858562/353794.terrain differ diff --git a/public/terrain/19/858562/353795.terrain b/public/terrain/19/858562/353795.terrain new file mode 100644 index 000000000..9d2a24d9f Binary files /dev/null and b/public/terrain/19/858562/353795.terrain differ diff --git a/public/terrain/19/858562/353796.terrain b/public/terrain/19/858562/353796.terrain new file mode 100644 index 000000000..884b04a45 Binary files /dev/null and b/public/terrain/19/858562/353796.terrain differ diff --git a/public/terrain/19/858562/353797.terrain b/public/terrain/19/858562/353797.terrain new file mode 100644 index 000000000..17dc8d9af Binary files /dev/null and b/public/terrain/19/858562/353797.terrain differ diff --git a/public/terrain/19/858562/353798.terrain b/public/terrain/19/858562/353798.terrain new file mode 100644 index 000000000..92b3118db Binary files /dev/null and b/public/terrain/19/858562/353798.terrain differ diff --git a/public/terrain/19/858562/353799.terrain b/public/terrain/19/858562/353799.terrain new file mode 100644 index 000000000..7103ffdb9 Binary files /dev/null and b/public/terrain/19/858562/353799.terrain differ diff --git a/public/terrain/19/858562/353800.terrain b/public/terrain/19/858562/353800.terrain new file mode 100644 index 000000000..dbe164994 Binary files /dev/null and b/public/terrain/19/858562/353800.terrain differ diff --git a/public/terrain/19/858562/353801.terrain b/public/terrain/19/858562/353801.terrain new file mode 100644 index 000000000..896f0257f Binary files /dev/null and b/public/terrain/19/858562/353801.terrain differ diff --git a/public/terrain/19/858562/353802.terrain b/public/terrain/19/858562/353802.terrain new file mode 100644 index 000000000..c18b5167f Binary files /dev/null and b/public/terrain/19/858562/353802.terrain differ diff --git a/public/terrain/19/858562/353803.terrain b/public/terrain/19/858562/353803.terrain new file mode 100644 index 000000000..2a0003285 Binary files /dev/null and b/public/terrain/19/858562/353803.terrain differ diff --git a/public/terrain/19/858562/353804.terrain b/public/terrain/19/858562/353804.terrain new file mode 100644 index 000000000..905ca881f Binary files /dev/null and b/public/terrain/19/858562/353804.terrain differ diff --git a/public/terrain/19/858562/353805.terrain b/public/terrain/19/858562/353805.terrain new file mode 100644 index 000000000..332de7afd Binary files /dev/null and b/public/terrain/19/858562/353805.terrain differ diff --git a/public/terrain/19/858562/353806.terrain b/public/terrain/19/858562/353806.terrain new file mode 100644 index 000000000..10e9fd110 Binary files /dev/null and b/public/terrain/19/858562/353806.terrain differ diff --git a/public/terrain/19/858562/353807.terrain b/public/terrain/19/858562/353807.terrain new file mode 100644 index 000000000..2e29bfab6 Binary files /dev/null and b/public/terrain/19/858562/353807.terrain differ diff --git a/public/terrain/19/858562/353808.terrain b/public/terrain/19/858562/353808.terrain new file mode 100644 index 000000000..583cb1703 Binary files /dev/null and b/public/terrain/19/858562/353808.terrain differ diff --git a/public/terrain/19/858562/353809.terrain b/public/terrain/19/858562/353809.terrain new file mode 100644 index 000000000..eda60377a Binary files /dev/null and b/public/terrain/19/858562/353809.terrain differ diff --git a/public/terrain/19/858562/353810.terrain b/public/terrain/19/858562/353810.terrain new file mode 100644 index 000000000..249ae8286 Binary files /dev/null and b/public/terrain/19/858562/353810.terrain differ diff --git a/public/terrain/19/858562/353811.terrain b/public/terrain/19/858562/353811.terrain new file mode 100644 index 000000000..364825db5 Binary files /dev/null and b/public/terrain/19/858562/353811.terrain differ diff --git a/public/terrain/19/858562/353812.terrain b/public/terrain/19/858562/353812.terrain new file mode 100644 index 000000000..3e6526c01 Binary files /dev/null and b/public/terrain/19/858562/353812.terrain differ diff --git a/public/terrain/19/858562/353813.terrain b/public/terrain/19/858562/353813.terrain new file mode 100644 index 000000000..f078f8fd9 Binary files /dev/null and b/public/terrain/19/858562/353813.terrain differ diff --git a/public/terrain/19/858562/353814.terrain b/public/terrain/19/858562/353814.terrain new file mode 100644 index 000000000..527d8a926 Binary files /dev/null and b/public/terrain/19/858562/353814.terrain differ diff --git a/public/terrain/19/858562/353815.terrain b/public/terrain/19/858562/353815.terrain new file mode 100644 index 000000000..c4cf44035 Binary files /dev/null and b/public/terrain/19/858562/353815.terrain differ diff --git a/public/terrain/19/858562/353816.terrain b/public/terrain/19/858562/353816.terrain new file mode 100644 index 000000000..c6ac1cc9f Binary files /dev/null and b/public/terrain/19/858562/353816.terrain differ diff --git a/public/terrain/19/858562/353817.terrain b/public/terrain/19/858562/353817.terrain new file mode 100644 index 000000000..e00d7468b Binary files /dev/null and b/public/terrain/19/858562/353817.terrain differ diff --git a/public/terrain/19/858562/353818.terrain b/public/terrain/19/858562/353818.terrain new file mode 100644 index 000000000..987770ab2 Binary files /dev/null and b/public/terrain/19/858562/353818.terrain differ diff --git a/public/terrain/19/858562/353819.terrain b/public/terrain/19/858562/353819.terrain new file mode 100644 index 000000000..568d48298 Binary files /dev/null and b/public/terrain/19/858562/353819.terrain differ diff --git a/public/terrain/19/858562/353820.terrain b/public/terrain/19/858562/353820.terrain new file mode 100644 index 000000000..bd87bdfaf Binary files /dev/null and b/public/terrain/19/858562/353820.terrain differ diff --git a/public/terrain/19/858562/353821.terrain b/public/terrain/19/858562/353821.terrain new file mode 100644 index 000000000..4e8b6cf6d Binary files /dev/null and b/public/terrain/19/858562/353821.terrain differ diff --git a/public/terrain/19/858562/353822.terrain b/public/terrain/19/858562/353822.terrain new file mode 100644 index 000000000..3b1934e74 Binary files /dev/null and b/public/terrain/19/858562/353822.terrain differ diff --git a/public/terrain/19/858562/353823.terrain b/public/terrain/19/858562/353823.terrain new file mode 100644 index 000000000..9276e7c5f Binary files /dev/null and b/public/terrain/19/858562/353823.terrain differ diff --git a/public/terrain/19/858562/353824.terrain b/public/terrain/19/858562/353824.terrain new file mode 100644 index 000000000..669ba089c Binary files /dev/null and b/public/terrain/19/858562/353824.terrain differ diff --git a/public/terrain/19/858562/353825.terrain b/public/terrain/19/858562/353825.terrain new file mode 100644 index 000000000..a609e9b11 Binary files /dev/null and b/public/terrain/19/858562/353825.terrain differ diff --git a/public/terrain/19/858562/353826.terrain b/public/terrain/19/858562/353826.terrain new file mode 100644 index 000000000..1b04988bf Binary files /dev/null and b/public/terrain/19/858562/353826.terrain differ diff --git a/public/terrain/19/858562/353827.terrain b/public/terrain/19/858562/353827.terrain new file mode 100644 index 000000000..c9bceb796 Binary files /dev/null and b/public/terrain/19/858562/353827.terrain differ diff --git a/public/terrain/19/858562/353828.terrain b/public/terrain/19/858562/353828.terrain new file mode 100644 index 000000000..e412a6dd1 Binary files /dev/null and b/public/terrain/19/858562/353828.terrain differ diff --git a/public/terrain/19/858562/353829.terrain b/public/terrain/19/858562/353829.terrain new file mode 100644 index 000000000..68418cc99 Binary files /dev/null and b/public/terrain/19/858562/353829.terrain differ diff --git a/public/terrain/19/858562/353830.terrain b/public/terrain/19/858562/353830.terrain new file mode 100644 index 000000000..252e094ff Binary files /dev/null and b/public/terrain/19/858562/353830.terrain differ diff --git a/public/terrain/19/858562/353831.terrain b/public/terrain/19/858562/353831.terrain new file mode 100644 index 000000000..ab3ef9591 Binary files /dev/null and b/public/terrain/19/858562/353831.terrain differ diff --git a/public/terrain/19/858562/353832.terrain b/public/terrain/19/858562/353832.terrain new file mode 100644 index 000000000..f53f5aba1 Binary files /dev/null and b/public/terrain/19/858562/353832.terrain differ diff --git a/public/terrain/19/858562/353833.terrain b/public/terrain/19/858562/353833.terrain new file mode 100644 index 000000000..118350b75 Binary files /dev/null and b/public/terrain/19/858562/353833.terrain differ diff --git a/public/terrain/19/858562/353834.terrain b/public/terrain/19/858562/353834.terrain new file mode 100644 index 000000000..f9c4ada0e Binary files /dev/null and b/public/terrain/19/858562/353834.terrain differ diff --git a/public/terrain/19/858562/353835.terrain b/public/terrain/19/858562/353835.terrain new file mode 100644 index 000000000..1345e71bf Binary files /dev/null and b/public/terrain/19/858562/353835.terrain differ diff --git a/public/terrain/19/858562/353836.terrain b/public/terrain/19/858562/353836.terrain new file mode 100644 index 000000000..4124dc928 Binary files /dev/null and b/public/terrain/19/858562/353836.terrain differ diff --git a/public/terrain/19/858562/353837.terrain b/public/terrain/19/858562/353837.terrain new file mode 100644 index 000000000..942d00650 Binary files /dev/null and b/public/terrain/19/858562/353837.terrain differ diff --git a/public/terrain/19/858562/353838.terrain b/public/terrain/19/858562/353838.terrain new file mode 100644 index 000000000..f49ead13f Binary files /dev/null and b/public/terrain/19/858562/353838.terrain differ diff --git a/public/terrain/19/858562/353839.terrain b/public/terrain/19/858562/353839.terrain new file mode 100644 index 000000000..0ab75db9b Binary files /dev/null and b/public/terrain/19/858562/353839.terrain differ diff --git a/public/terrain/19/858562/353840.terrain b/public/terrain/19/858562/353840.terrain new file mode 100644 index 000000000..4fbdaf5bb Binary files /dev/null and b/public/terrain/19/858562/353840.terrain differ diff --git a/public/terrain/19/858562/353841.terrain b/public/terrain/19/858562/353841.terrain new file mode 100644 index 000000000..77b955d34 Binary files /dev/null and b/public/terrain/19/858562/353841.terrain differ diff --git a/public/terrain/19/858562/353842.terrain b/public/terrain/19/858562/353842.terrain new file mode 100644 index 000000000..2eb26695f Binary files /dev/null and b/public/terrain/19/858562/353842.terrain differ diff --git a/public/terrain/19/858562/353843.terrain b/public/terrain/19/858562/353843.terrain new file mode 100644 index 000000000..d2a8f855f Binary files /dev/null and b/public/terrain/19/858562/353843.terrain differ diff --git a/public/terrain/19/858562/353844.terrain b/public/terrain/19/858562/353844.terrain new file mode 100644 index 000000000..865e84b71 Binary files /dev/null and b/public/terrain/19/858562/353844.terrain differ diff --git a/public/terrain/19/858562/353845.terrain b/public/terrain/19/858562/353845.terrain new file mode 100644 index 000000000..3ede3fb73 Binary files /dev/null and b/public/terrain/19/858562/353845.terrain differ diff --git a/public/terrain/19/858562/353846.terrain b/public/terrain/19/858562/353846.terrain new file mode 100644 index 000000000..50a0213a2 Binary files /dev/null and b/public/terrain/19/858562/353846.terrain differ diff --git a/public/terrain/19/858562/353847.terrain b/public/terrain/19/858562/353847.terrain new file mode 100644 index 000000000..f61d8dd57 Binary files /dev/null and b/public/terrain/19/858562/353847.terrain differ diff --git a/public/terrain/19/858562/353848.terrain b/public/terrain/19/858562/353848.terrain new file mode 100644 index 000000000..3de9da322 Binary files /dev/null and b/public/terrain/19/858562/353848.terrain differ diff --git a/public/terrain/19/858562/353849.terrain b/public/terrain/19/858562/353849.terrain new file mode 100644 index 000000000..a8bc61a8b Binary files /dev/null and b/public/terrain/19/858562/353849.terrain differ diff --git a/public/terrain/19/858562/353850.terrain b/public/terrain/19/858562/353850.terrain new file mode 100644 index 000000000..5d6d0a9e6 Binary files /dev/null and b/public/terrain/19/858562/353850.terrain differ diff --git a/public/terrain/19/858562/353851.terrain b/public/terrain/19/858562/353851.terrain new file mode 100644 index 000000000..a9b4584a9 Binary files /dev/null and b/public/terrain/19/858562/353851.terrain differ diff --git a/public/terrain/19/858562/353852.terrain b/public/terrain/19/858562/353852.terrain new file mode 100644 index 000000000..bb4318f0a Binary files /dev/null and b/public/terrain/19/858562/353852.terrain differ diff --git a/public/terrain/19/858562/353853.terrain b/public/terrain/19/858562/353853.terrain new file mode 100644 index 000000000..6489ccfaa Binary files /dev/null and b/public/terrain/19/858562/353853.terrain differ diff --git a/public/terrain/19/858562/353854.terrain b/public/terrain/19/858562/353854.terrain new file mode 100644 index 000000000..6389fcb25 Binary files /dev/null and b/public/terrain/19/858562/353854.terrain differ diff --git a/public/terrain/19/858562/353855.terrain b/public/terrain/19/858562/353855.terrain new file mode 100644 index 000000000..46d5d64c1 Binary files /dev/null and b/public/terrain/19/858562/353855.terrain differ diff --git a/public/terrain/19/858562/353856.terrain b/public/terrain/19/858562/353856.terrain new file mode 100644 index 000000000..ce434889f Binary files /dev/null and b/public/terrain/19/858562/353856.terrain differ diff --git a/public/terrain/19/858562/353857.terrain b/public/terrain/19/858562/353857.terrain new file mode 100644 index 000000000..c6fc617d0 Binary files /dev/null and b/public/terrain/19/858562/353857.terrain differ diff --git a/public/terrain/19/858562/353858.terrain b/public/terrain/19/858562/353858.terrain new file mode 100644 index 000000000..b66e8a28c Binary files /dev/null and b/public/terrain/19/858562/353858.terrain differ diff --git a/public/terrain/19/858562/353859.terrain b/public/terrain/19/858562/353859.terrain new file mode 100644 index 000000000..ef51ff43c Binary files /dev/null and b/public/terrain/19/858562/353859.terrain differ diff --git a/public/terrain/19/858562/353860.terrain b/public/terrain/19/858562/353860.terrain new file mode 100644 index 000000000..3f76d103a Binary files /dev/null and b/public/terrain/19/858562/353860.terrain differ diff --git a/public/terrain/19/858562/353861.terrain b/public/terrain/19/858562/353861.terrain new file mode 100644 index 000000000..7860b092b Binary files /dev/null and b/public/terrain/19/858562/353861.terrain differ diff --git a/public/terrain/19/858562/353862.terrain b/public/terrain/19/858562/353862.terrain new file mode 100644 index 000000000..0ce731009 Binary files /dev/null and b/public/terrain/19/858562/353862.terrain differ diff --git a/public/terrain/19/858562/353863.terrain b/public/terrain/19/858562/353863.terrain new file mode 100644 index 000000000..4544ce470 Binary files /dev/null and b/public/terrain/19/858562/353863.terrain differ diff --git a/public/terrain/19/858562/353864.terrain b/public/terrain/19/858562/353864.terrain new file mode 100644 index 000000000..d7dd3abdb Binary files /dev/null and b/public/terrain/19/858562/353864.terrain differ diff --git a/public/terrain/19/858562/353865.terrain b/public/terrain/19/858562/353865.terrain new file mode 100644 index 000000000..96f154246 Binary files /dev/null and b/public/terrain/19/858562/353865.terrain differ diff --git a/public/terrain/19/858562/353866.terrain b/public/terrain/19/858562/353866.terrain new file mode 100644 index 000000000..f3a7ecb81 Binary files /dev/null and b/public/terrain/19/858562/353866.terrain differ diff --git a/public/terrain/19/858562/353867.terrain b/public/terrain/19/858562/353867.terrain new file mode 100644 index 000000000..b32f1810d Binary files /dev/null and b/public/terrain/19/858562/353867.terrain differ diff --git a/public/terrain/19/858562/353868.terrain b/public/terrain/19/858562/353868.terrain new file mode 100644 index 000000000..acc83dfe7 Binary files /dev/null and b/public/terrain/19/858562/353868.terrain differ diff --git a/public/terrain/19/858562/353869.terrain b/public/terrain/19/858562/353869.terrain new file mode 100644 index 000000000..8019a334b Binary files /dev/null and b/public/terrain/19/858562/353869.terrain differ diff --git a/public/terrain/19/858562/353870.terrain b/public/terrain/19/858562/353870.terrain new file mode 100644 index 000000000..115e263ac Binary files /dev/null and b/public/terrain/19/858562/353870.terrain differ diff --git a/public/terrain/19/858562/353871.terrain b/public/terrain/19/858562/353871.terrain new file mode 100644 index 000000000..b28ae87cb Binary files /dev/null and b/public/terrain/19/858562/353871.terrain differ diff --git a/public/terrain/19/858562/353872.terrain b/public/terrain/19/858562/353872.terrain new file mode 100644 index 000000000..535e7d4ae Binary files /dev/null and b/public/terrain/19/858562/353872.terrain differ diff --git a/public/terrain/19/858562/353873.terrain b/public/terrain/19/858562/353873.terrain new file mode 100644 index 000000000..2641d0c15 Binary files /dev/null and b/public/terrain/19/858562/353873.terrain differ diff --git a/public/terrain/19/858562/353874.terrain b/public/terrain/19/858562/353874.terrain new file mode 100644 index 000000000..4990f4063 Binary files /dev/null and b/public/terrain/19/858562/353874.terrain differ diff --git a/public/terrain/19/858562/353875.terrain b/public/terrain/19/858562/353875.terrain new file mode 100644 index 000000000..70ed7539a Binary files /dev/null and b/public/terrain/19/858562/353875.terrain differ diff --git a/public/terrain/19/858562/353876.terrain b/public/terrain/19/858562/353876.terrain new file mode 100644 index 000000000..ca54268b2 Binary files /dev/null and b/public/terrain/19/858562/353876.terrain differ diff --git a/public/terrain/19/858562/353877.terrain b/public/terrain/19/858562/353877.terrain new file mode 100644 index 000000000..6b4880985 Binary files /dev/null and b/public/terrain/19/858562/353877.terrain differ diff --git a/public/terrain/19/858562/353878.terrain b/public/terrain/19/858562/353878.terrain new file mode 100644 index 000000000..f5ad6e841 Binary files /dev/null and b/public/terrain/19/858562/353878.terrain differ diff --git a/public/terrain/19/858562/353879.terrain b/public/terrain/19/858562/353879.terrain new file mode 100644 index 000000000..8433ad83b Binary files /dev/null and b/public/terrain/19/858562/353879.terrain differ diff --git a/public/terrain/19/858562/353880.terrain b/public/terrain/19/858562/353880.terrain new file mode 100644 index 000000000..1af6b09ed Binary files /dev/null and b/public/terrain/19/858562/353880.terrain differ diff --git a/public/terrain/19/858562/353881.terrain b/public/terrain/19/858562/353881.terrain new file mode 100644 index 000000000..8d84896c6 Binary files /dev/null and b/public/terrain/19/858562/353881.terrain differ diff --git a/public/terrain/19/858562/353882.terrain b/public/terrain/19/858562/353882.terrain new file mode 100644 index 000000000..481c5f077 Binary files /dev/null and b/public/terrain/19/858562/353882.terrain differ diff --git a/public/terrain/19/858562/353883.terrain b/public/terrain/19/858562/353883.terrain new file mode 100644 index 000000000..4b783dc96 Binary files /dev/null and b/public/terrain/19/858562/353883.terrain differ diff --git a/public/terrain/19/858562/353884.terrain b/public/terrain/19/858562/353884.terrain new file mode 100644 index 000000000..10c39e211 Binary files /dev/null and b/public/terrain/19/858562/353884.terrain differ diff --git a/public/terrain/19/858562/353885.terrain b/public/terrain/19/858562/353885.terrain new file mode 100644 index 000000000..2fd5ebc81 Binary files /dev/null and b/public/terrain/19/858562/353885.terrain differ diff --git a/public/terrain/19/858562/353886.terrain b/public/terrain/19/858562/353886.terrain new file mode 100644 index 000000000..da13926ba Binary files /dev/null and b/public/terrain/19/858562/353886.terrain differ diff --git a/public/terrain/19/858562/353887.terrain b/public/terrain/19/858562/353887.terrain new file mode 100644 index 000000000..3d79671b5 Binary files /dev/null and b/public/terrain/19/858562/353887.terrain differ diff --git a/public/terrain/19/858562/353888.terrain b/public/terrain/19/858562/353888.terrain new file mode 100644 index 000000000..81351fc33 Binary files /dev/null and b/public/terrain/19/858562/353888.terrain differ diff --git a/public/terrain/19/858562/353889.terrain b/public/terrain/19/858562/353889.terrain new file mode 100644 index 000000000..cd951afe4 Binary files /dev/null and b/public/terrain/19/858562/353889.terrain differ diff --git a/public/terrain/19/858562/353890.terrain b/public/terrain/19/858562/353890.terrain new file mode 100644 index 000000000..835274bae Binary files /dev/null and b/public/terrain/19/858562/353890.terrain differ diff --git a/public/terrain/19/858562/353891.terrain b/public/terrain/19/858562/353891.terrain new file mode 100644 index 000000000..621f23658 Binary files /dev/null and b/public/terrain/19/858562/353891.terrain differ diff --git a/public/terrain/19/858562/353892.terrain b/public/terrain/19/858562/353892.terrain new file mode 100644 index 000000000..e293bcd30 Binary files /dev/null and b/public/terrain/19/858562/353892.terrain differ diff --git a/public/terrain/19/858562/353893.terrain b/public/terrain/19/858562/353893.terrain new file mode 100644 index 000000000..6d082bc2e Binary files /dev/null and b/public/terrain/19/858562/353893.terrain differ diff --git a/public/terrain/19/858562/353894.terrain b/public/terrain/19/858562/353894.terrain new file mode 100644 index 000000000..533bf7cc4 Binary files /dev/null and b/public/terrain/19/858562/353894.terrain differ diff --git a/public/terrain/19/858562/353895.terrain b/public/terrain/19/858562/353895.terrain new file mode 100644 index 000000000..58cf67585 Binary files /dev/null and b/public/terrain/19/858562/353895.terrain differ diff --git a/public/terrain/19/858562/353896.terrain b/public/terrain/19/858562/353896.terrain new file mode 100644 index 000000000..8086edf60 Binary files /dev/null and b/public/terrain/19/858562/353896.terrain differ diff --git a/public/terrain/19/858562/353897.terrain b/public/terrain/19/858562/353897.terrain new file mode 100644 index 000000000..b2b907f8d Binary files /dev/null and b/public/terrain/19/858562/353897.terrain differ diff --git a/public/terrain/19/858562/353898.terrain b/public/terrain/19/858562/353898.terrain new file mode 100644 index 000000000..a32359672 Binary files /dev/null and b/public/terrain/19/858562/353898.terrain differ diff --git a/public/terrain/19/858562/353899.terrain b/public/terrain/19/858562/353899.terrain new file mode 100644 index 000000000..da37ec331 Binary files /dev/null and b/public/terrain/19/858562/353899.terrain differ diff --git a/public/terrain/19/858562/353900.terrain b/public/terrain/19/858562/353900.terrain new file mode 100644 index 000000000..f01cc3f1a Binary files /dev/null and b/public/terrain/19/858562/353900.terrain differ diff --git a/public/terrain/19/858562/353901.terrain b/public/terrain/19/858562/353901.terrain new file mode 100644 index 000000000..9e9d23b54 Binary files /dev/null and b/public/terrain/19/858562/353901.terrain differ diff --git a/public/terrain/19/858562/353902.terrain b/public/terrain/19/858562/353902.terrain new file mode 100644 index 000000000..d59545b8d Binary files /dev/null and b/public/terrain/19/858562/353902.terrain differ diff --git a/public/terrain/19/858562/353903.terrain b/public/terrain/19/858562/353903.terrain new file mode 100644 index 000000000..442ff24af Binary files /dev/null and b/public/terrain/19/858562/353903.terrain differ diff --git a/public/terrain/19/858562/353904.terrain b/public/terrain/19/858562/353904.terrain new file mode 100644 index 000000000..c4ecd2231 Binary files /dev/null and b/public/terrain/19/858562/353904.terrain differ diff --git a/public/terrain/19/858562/353905.terrain b/public/terrain/19/858562/353905.terrain new file mode 100644 index 000000000..00d35bd07 Binary files /dev/null and b/public/terrain/19/858562/353905.terrain differ diff --git a/public/terrain/19/858562/353906.terrain b/public/terrain/19/858562/353906.terrain new file mode 100644 index 000000000..1786219d1 Binary files /dev/null and b/public/terrain/19/858562/353906.terrain differ diff --git a/public/terrain/19/858562/353907.terrain b/public/terrain/19/858562/353907.terrain new file mode 100644 index 000000000..643bc8cf0 Binary files /dev/null and b/public/terrain/19/858562/353907.terrain differ diff --git a/public/terrain/19/858562/353908.terrain b/public/terrain/19/858562/353908.terrain new file mode 100644 index 000000000..ee6e2cf7c Binary files /dev/null and b/public/terrain/19/858562/353908.terrain differ diff --git a/public/terrain/19/858562/353909.terrain b/public/terrain/19/858562/353909.terrain new file mode 100644 index 000000000..b243f9dc7 Binary files /dev/null and b/public/terrain/19/858562/353909.terrain differ diff --git a/public/terrain/19/858562/353910.terrain b/public/terrain/19/858562/353910.terrain new file mode 100644 index 000000000..b2a283098 Binary files /dev/null and b/public/terrain/19/858562/353910.terrain differ diff --git a/public/terrain/19/858562/353911.terrain b/public/terrain/19/858562/353911.terrain new file mode 100644 index 000000000..e9d82a6f9 Binary files /dev/null and b/public/terrain/19/858562/353911.terrain differ diff --git a/public/terrain/19/858562/353912.terrain b/public/terrain/19/858562/353912.terrain new file mode 100644 index 000000000..143e7d8a6 Binary files /dev/null and b/public/terrain/19/858562/353912.terrain differ diff --git a/public/terrain/19/858562/353913.terrain b/public/terrain/19/858562/353913.terrain new file mode 100644 index 000000000..7554576cb Binary files /dev/null and b/public/terrain/19/858562/353913.terrain differ diff --git a/public/terrain/19/858562/353914.terrain b/public/terrain/19/858562/353914.terrain new file mode 100644 index 000000000..77274c93f Binary files /dev/null and b/public/terrain/19/858562/353914.terrain differ diff --git a/public/terrain/19/858562/353915.terrain b/public/terrain/19/858562/353915.terrain new file mode 100644 index 000000000..8a6120fbb Binary files /dev/null and b/public/terrain/19/858562/353915.terrain differ diff --git a/public/terrain/19/858562/353916.terrain b/public/terrain/19/858562/353916.terrain new file mode 100644 index 000000000..092f45b50 Binary files /dev/null and b/public/terrain/19/858562/353916.terrain differ diff --git a/public/terrain/19/858562/353917.terrain b/public/terrain/19/858562/353917.terrain new file mode 100644 index 000000000..67acc8d75 Binary files /dev/null and b/public/terrain/19/858562/353917.terrain differ diff --git a/public/terrain/19/858562/353918.terrain b/public/terrain/19/858562/353918.terrain new file mode 100644 index 000000000..29460715b Binary files /dev/null and b/public/terrain/19/858562/353918.terrain differ diff --git a/public/terrain/19/858562/353919.terrain b/public/terrain/19/858562/353919.terrain new file mode 100644 index 000000000..a3fd43726 Binary files /dev/null and b/public/terrain/19/858562/353919.terrain differ diff --git a/public/terrain/19/858562/353920.terrain b/public/terrain/19/858562/353920.terrain new file mode 100644 index 000000000..a48a630ac Binary files /dev/null and b/public/terrain/19/858562/353920.terrain differ diff --git a/public/terrain/19/858562/353921.terrain b/public/terrain/19/858562/353921.terrain new file mode 100644 index 000000000..884d1b18d Binary files /dev/null and b/public/terrain/19/858562/353921.terrain differ diff --git a/public/terrain/19/858562/353922.terrain b/public/terrain/19/858562/353922.terrain new file mode 100644 index 000000000..2fa2819ce Binary files /dev/null and b/public/terrain/19/858562/353922.terrain differ diff --git a/public/terrain/19/858562/353923.terrain b/public/terrain/19/858562/353923.terrain new file mode 100644 index 000000000..13965d3f7 Binary files /dev/null and b/public/terrain/19/858562/353923.terrain differ diff --git a/public/terrain/19/858562/353924.terrain b/public/terrain/19/858562/353924.terrain new file mode 100644 index 000000000..0a765ac7f Binary files /dev/null and b/public/terrain/19/858562/353924.terrain differ diff --git a/public/terrain/19/858562/353925.terrain b/public/terrain/19/858562/353925.terrain new file mode 100644 index 000000000..fca50c456 Binary files /dev/null and b/public/terrain/19/858562/353925.terrain differ diff --git a/public/terrain/19/858562/353926.terrain b/public/terrain/19/858562/353926.terrain new file mode 100644 index 000000000..bdd05dc94 Binary files /dev/null and b/public/terrain/19/858562/353926.terrain differ diff --git a/public/terrain/19/858562/353927.terrain b/public/terrain/19/858562/353927.terrain new file mode 100644 index 000000000..edd1f86ca Binary files /dev/null and b/public/terrain/19/858562/353927.terrain differ diff --git a/public/terrain/19/858562/353928.terrain b/public/terrain/19/858562/353928.terrain new file mode 100644 index 000000000..8ad7edf80 Binary files /dev/null and b/public/terrain/19/858562/353928.terrain differ diff --git a/public/terrain/19/858562/353929.terrain b/public/terrain/19/858562/353929.terrain new file mode 100644 index 000000000..922e82ea3 Binary files /dev/null and b/public/terrain/19/858562/353929.terrain differ diff --git a/public/terrain/19/858562/353930.terrain b/public/terrain/19/858562/353930.terrain new file mode 100644 index 000000000..a699c4796 Binary files /dev/null and b/public/terrain/19/858562/353930.terrain differ diff --git a/public/terrain/19/858562/353931.terrain b/public/terrain/19/858562/353931.terrain new file mode 100644 index 000000000..bd48f1c87 Binary files /dev/null and b/public/terrain/19/858562/353931.terrain differ diff --git a/public/terrain/19/858562/353932.terrain b/public/terrain/19/858562/353932.terrain new file mode 100644 index 000000000..fd34faaf2 Binary files /dev/null and b/public/terrain/19/858562/353932.terrain differ diff --git a/public/terrain/19/858562/353933.terrain b/public/terrain/19/858562/353933.terrain new file mode 100644 index 000000000..808ea25b1 Binary files /dev/null and b/public/terrain/19/858562/353933.terrain differ diff --git a/public/terrain/19/858562/353934.terrain b/public/terrain/19/858562/353934.terrain new file mode 100644 index 000000000..df275b074 Binary files /dev/null and b/public/terrain/19/858562/353934.terrain differ diff --git a/public/terrain/19/858562/353935.terrain b/public/terrain/19/858562/353935.terrain new file mode 100644 index 000000000..8b209ec53 Binary files /dev/null and b/public/terrain/19/858562/353935.terrain differ diff --git a/public/terrain/19/858562/353936.terrain b/public/terrain/19/858562/353936.terrain new file mode 100644 index 000000000..895d251bd Binary files /dev/null and b/public/terrain/19/858562/353936.terrain differ diff --git a/public/terrain/19/858562/353937.terrain b/public/terrain/19/858562/353937.terrain new file mode 100644 index 000000000..4a15b8343 Binary files /dev/null and b/public/terrain/19/858562/353937.terrain differ diff --git a/public/terrain/19/858562/353938.terrain b/public/terrain/19/858562/353938.terrain new file mode 100644 index 000000000..252a5667b Binary files /dev/null and b/public/terrain/19/858562/353938.terrain differ diff --git a/public/terrain/19/858562/353939.terrain b/public/terrain/19/858562/353939.terrain new file mode 100644 index 000000000..23d58e27a Binary files /dev/null and b/public/terrain/19/858562/353939.terrain differ diff --git a/public/terrain/19/858562/353940.terrain b/public/terrain/19/858562/353940.terrain new file mode 100644 index 000000000..1bca5c51c Binary files /dev/null and b/public/terrain/19/858562/353940.terrain differ diff --git a/public/terrain/19/858562/353941.terrain b/public/terrain/19/858562/353941.terrain new file mode 100644 index 000000000..bd9cdb209 Binary files /dev/null and b/public/terrain/19/858562/353941.terrain differ diff --git a/public/terrain/19/858562/353942.terrain b/public/terrain/19/858562/353942.terrain new file mode 100644 index 000000000..f82371e8a Binary files /dev/null and b/public/terrain/19/858562/353942.terrain differ diff --git a/public/terrain/19/858562/353943.terrain b/public/terrain/19/858562/353943.terrain new file mode 100644 index 000000000..bd3d0f542 Binary files /dev/null and b/public/terrain/19/858562/353943.terrain differ diff --git a/public/terrain/19/858562/353944.terrain b/public/terrain/19/858562/353944.terrain new file mode 100644 index 000000000..b375546fd Binary files /dev/null and b/public/terrain/19/858562/353944.terrain differ diff --git a/public/terrain/19/858562/353945.terrain b/public/terrain/19/858562/353945.terrain new file mode 100644 index 000000000..ac0edaa45 Binary files /dev/null and b/public/terrain/19/858562/353945.terrain differ diff --git a/public/terrain/19/858562/353946.terrain b/public/terrain/19/858562/353946.terrain new file mode 100644 index 000000000..448fa2142 Binary files /dev/null and b/public/terrain/19/858562/353946.terrain differ diff --git a/public/terrain/19/858562/353947.terrain b/public/terrain/19/858562/353947.terrain new file mode 100644 index 000000000..a17c60c9f Binary files /dev/null and b/public/terrain/19/858562/353947.terrain differ diff --git a/public/terrain/19/858562/353948.terrain b/public/terrain/19/858562/353948.terrain new file mode 100644 index 000000000..a061e6630 Binary files /dev/null and b/public/terrain/19/858562/353948.terrain differ diff --git a/public/terrain/19/858562/353949.terrain b/public/terrain/19/858562/353949.terrain new file mode 100644 index 000000000..3bffb70eb Binary files /dev/null and b/public/terrain/19/858562/353949.terrain differ diff --git a/public/terrain/19/858562/353950.terrain b/public/terrain/19/858562/353950.terrain new file mode 100644 index 000000000..17818d73a Binary files /dev/null and b/public/terrain/19/858562/353950.terrain differ diff --git a/public/terrain/19/858562/353951.terrain b/public/terrain/19/858562/353951.terrain new file mode 100644 index 000000000..8fb7b5bfe Binary files /dev/null and b/public/terrain/19/858562/353951.terrain differ diff --git a/public/terrain/19/858562/353952.terrain b/public/terrain/19/858562/353952.terrain new file mode 100644 index 000000000..182f84fa0 Binary files /dev/null and b/public/terrain/19/858562/353952.terrain differ diff --git a/public/terrain/19/858562/353953.terrain b/public/terrain/19/858562/353953.terrain new file mode 100644 index 000000000..39136cfc7 Binary files /dev/null and b/public/terrain/19/858562/353953.terrain differ diff --git a/public/terrain/19/858562/353954.terrain b/public/terrain/19/858562/353954.terrain new file mode 100644 index 000000000..d7a1035d7 Binary files /dev/null and b/public/terrain/19/858562/353954.terrain differ diff --git a/public/terrain/19/858562/353955.terrain b/public/terrain/19/858562/353955.terrain new file mode 100644 index 000000000..84db42f49 Binary files /dev/null and b/public/terrain/19/858562/353955.terrain differ diff --git a/public/terrain/19/858562/353956.terrain b/public/terrain/19/858562/353956.terrain new file mode 100644 index 000000000..cbb210046 Binary files /dev/null and b/public/terrain/19/858562/353956.terrain differ diff --git a/public/terrain/19/858562/353957.terrain b/public/terrain/19/858562/353957.terrain new file mode 100644 index 000000000..233f70bd3 Binary files /dev/null and b/public/terrain/19/858562/353957.terrain differ diff --git a/public/terrain/19/858562/353958.terrain b/public/terrain/19/858562/353958.terrain new file mode 100644 index 000000000..285e04afb Binary files /dev/null and b/public/terrain/19/858562/353958.terrain differ diff --git a/public/terrain/19/858562/353959.terrain b/public/terrain/19/858562/353959.terrain new file mode 100644 index 000000000..e566f3cfa Binary files /dev/null and b/public/terrain/19/858562/353959.terrain differ diff --git a/public/terrain/19/858562/353960.terrain b/public/terrain/19/858562/353960.terrain new file mode 100644 index 000000000..fb6e761d9 Binary files /dev/null and b/public/terrain/19/858562/353960.terrain differ diff --git a/public/terrain/19/858562/353961.terrain b/public/terrain/19/858562/353961.terrain new file mode 100644 index 000000000..79ed38a7c Binary files /dev/null and b/public/terrain/19/858562/353961.terrain differ diff --git a/public/terrain/19/858562/353962.terrain b/public/terrain/19/858562/353962.terrain new file mode 100644 index 000000000..f4298ba70 Binary files /dev/null and b/public/terrain/19/858562/353962.terrain differ diff --git a/public/terrain/19/858562/353963.terrain b/public/terrain/19/858562/353963.terrain new file mode 100644 index 000000000..3ed79d82e Binary files /dev/null and b/public/terrain/19/858562/353963.terrain differ diff --git a/public/terrain/19/858562/353964.terrain b/public/terrain/19/858562/353964.terrain new file mode 100644 index 000000000..7a53dadd6 Binary files /dev/null and b/public/terrain/19/858562/353964.terrain differ diff --git a/public/terrain/19/858562/353965.terrain b/public/terrain/19/858562/353965.terrain new file mode 100644 index 000000000..e36cc91ce Binary files /dev/null and b/public/terrain/19/858562/353965.terrain differ diff --git a/public/terrain/19/858562/353966.terrain b/public/terrain/19/858562/353966.terrain new file mode 100644 index 000000000..81683ae33 Binary files /dev/null and b/public/terrain/19/858562/353966.terrain differ diff --git a/public/terrain/19/858562/353967.terrain b/public/terrain/19/858562/353967.terrain new file mode 100644 index 000000000..16cc6114e Binary files /dev/null and b/public/terrain/19/858562/353967.terrain differ diff --git a/public/terrain/19/858562/353968.terrain b/public/terrain/19/858562/353968.terrain new file mode 100644 index 000000000..150e9cf57 Binary files /dev/null and b/public/terrain/19/858562/353968.terrain differ diff --git a/public/terrain/19/858562/353969.terrain b/public/terrain/19/858562/353969.terrain new file mode 100644 index 000000000..6311d999c Binary files /dev/null and b/public/terrain/19/858562/353969.terrain differ diff --git a/public/terrain/19/858562/353970.terrain b/public/terrain/19/858562/353970.terrain new file mode 100644 index 000000000..7ce16eb13 Binary files /dev/null and b/public/terrain/19/858562/353970.terrain differ diff --git a/public/terrain/19/858562/353971.terrain b/public/terrain/19/858562/353971.terrain new file mode 100644 index 000000000..bf2d86738 Binary files /dev/null and b/public/terrain/19/858562/353971.terrain differ diff --git a/public/terrain/19/858562/353972.terrain b/public/terrain/19/858562/353972.terrain new file mode 100644 index 000000000..e17fc3c1f Binary files /dev/null and b/public/terrain/19/858562/353972.terrain differ diff --git a/public/terrain/19/858562/353973.terrain b/public/terrain/19/858562/353973.terrain new file mode 100644 index 000000000..05c954cda Binary files /dev/null and b/public/terrain/19/858562/353973.terrain differ diff --git a/public/terrain/19/858562/353974.terrain b/public/terrain/19/858562/353974.terrain new file mode 100644 index 000000000..b3a174b74 Binary files /dev/null and b/public/terrain/19/858562/353974.terrain differ diff --git a/public/terrain/19/858562/353975.terrain b/public/terrain/19/858562/353975.terrain new file mode 100644 index 000000000..e6ff19bd3 Binary files /dev/null and b/public/terrain/19/858562/353975.terrain differ diff --git a/public/terrain/19/858562/353976.terrain b/public/terrain/19/858562/353976.terrain new file mode 100644 index 000000000..98aabd4c2 Binary files /dev/null and b/public/terrain/19/858562/353976.terrain differ diff --git a/public/terrain/19/858562/353977.terrain b/public/terrain/19/858562/353977.terrain new file mode 100644 index 000000000..47cece6b4 Binary files /dev/null and b/public/terrain/19/858562/353977.terrain differ diff --git a/public/terrain/19/858562/353978.terrain b/public/terrain/19/858562/353978.terrain new file mode 100644 index 000000000..32c98437e Binary files /dev/null and b/public/terrain/19/858562/353978.terrain differ diff --git a/public/terrain/19/858562/353979.terrain b/public/terrain/19/858562/353979.terrain new file mode 100644 index 000000000..88a2f5063 Binary files /dev/null and b/public/terrain/19/858562/353979.terrain differ diff --git a/public/terrain/19/858562/353980.terrain b/public/terrain/19/858562/353980.terrain new file mode 100644 index 000000000..0471c47e0 Binary files /dev/null and b/public/terrain/19/858562/353980.terrain differ diff --git a/public/terrain/19/858562/353981.terrain b/public/terrain/19/858562/353981.terrain new file mode 100644 index 000000000..2efbc1de9 Binary files /dev/null and b/public/terrain/19/858562/353981.terrain differ diff --git a/public/terrain/19/858562/353982.terrain b/public/terrain/19/858562/353982.terrain new file mode 100644 index 000000000..80d06d158 Binary files /dev/null and b/public/terrain/19/858562/353982.terrain differ diff --git a/public/terrain/19/858562/353983.terrain b/public/terrain/19/858562/353983.terrain new file mode 100644 index 000000000..35afcb9e3 Binary files /dev/null and b/public/terrain/19/858562/353983.terrain differ diff --git a/public/terrain/19/858562/353984.terrain b/public/terrain/19/858562/353984.terrain new file mode 100644 index 000000000..71b439c74 Binary files /dev/null and b/public/terrain/19/858562/353984.terrain differ diff --git a/public/terrain/19/858562/353985.terrain b/public/terrain/19/858562/353985.terrain new file mode 100644 index 000000000..b980c12da Binary files /dev/null and b/public/terrain/19/858562/353985.terrain differ diff --git a/public/terrain/19/858562/353986.terrain b/public/terrain/19/858562/353986.terrain new file mode 100644 index 000000000..cf097d69d Binary files /dev/null and b/public/terrain/19/858562/353986.terrain differ diff --git a/public/terrain/19/858562/353987.terrain b/public/terrain/19/858562/353987.terrain new file mode 100644 index 000000000..8c69bc8b8 Binary files /dev/null and b/public/terrain/19/858562/353987.terrain differ diff --git a/public/terrain/19/858562/353988.terrain b/public/terrain/19/858562/353988.terrain new file mode 100644 index 000000000..a0129e868 Binary files /dev/null and b/public/terrain/19/858562/353988.terrain differ diff --git a/public/terrain/19/858562/353989.terrain b/public/terrain/19/858562/353989.terrain new file mode 100644 index 000000000..8f51c932b Binary files /dev/null and b/public/terrain/19/858562/353989.terrain differ diff --git a/public/terrain/19/858562/353990.terrain b/public/terrain/19/858562/353990.terrain new file mode 100644 index 000000000..08a9064fa Binary files /dev/null and b/public/terrain/19/858562/353990.terrain differ diff --git a/public/terrain/19/858562/353991.terrain b/public/terrain/19/858562/353991.terrain new file mode 100644 index 000000000..7737dbe0a Binary files /dev/null and b/public/terrain/19/858562/353991.terrain differ diff --git a/public/terrain/19/858562/353992.terrain b/public/terrain/19/858562/353992.terrain new file mode 100644 index 000000000..5401f8b43 Binary files /dev/null and b/public/terrain/19/858562/353992.terrain differ diff --git a/public/terrain/19/858562/353993.terrain b/public/terrain/19/858562/353993.terrain new file mode 100644 index 000000000..a39fa7e9b Binary files /dev/null and b/public/terrain/19/858562/353993.terrain differ diff --git a/public/terrain/19/858562/353994.terrain b/public/terrain/19/858562/353994.terrain new file mode 100644 index 000000000..db8c795b0 Binary files /dev/null and b/public/terrain/19/858562/353994.terrain differ diff --git a/public/terrain/19/858562/353995.terrain b/public/terrain/19/858562/353995.terrain new file mode 100644 index 000000000..29c4eb443 Binary files /dev/null and b/public/terrain/19/858562/353995.terrain differ diff --git a/public/terrain/19/858562/353996.terrain b/public/terrain/19/858562/353996.terrain new file mode 100644 index 000000000..45858747c Binary files /dev/null and b/public/terrain/19/858562/353996.terrain differ diff --git a/public/terrain/19/858562/353997.terrain b/public/terrain/19/858562/353997.terrain new file mode 100644 index 000000000..1570f0ee5 Binary files /dev/null and b/public/terrain/19/858562/353997.terrain differ diff --git a/public/terrain/19/858562/353998.terrain b/public/terrain/19/858562/353998.terrain new file mode 100644 index 000000000..7943825e4 Binary files /dev/null and b/public/terrain/19/858562/353998.terrain differ diff --git a/public/terrain/19/858562/353999.terrain b/public/terrain/19/858562/353999.terrain new file mode 100644 index 000000000..39a775453 Binary files /dev/null and b/public/terrain/19/858562/353999.terrain differ diff --git a/public/terrain/19/858562/354000.terrain b/public/terrain/19/858562/354000.terrain new file mode 100644 index 000000000..8065cf514 Binary files /dev/null and b/public/terrain/19/858562/354000.terrain differ diff --git a/public/terrain/19/858562/354001.terrain b/public/terrain/19/858562/354001.terrain new file mode 100644 index 000000000..b8595ea4c Binary files /dev/null and b/public/terrain/19/858562/354001.terrain differ diff --git a/public/terrain/19/858562/354002.terrain b/public/terrain/19/858562/354002.terrain new file mode 100644 index 000000000..d9e1279b5 Binary files /dev/null and b/public/terrain/19/858562/354002.terrain differ diff --git a/public/terrain/19/858562/354003.terrain b/public/terrain/19/858562/354003.terrain new file mode 100644 index 000000000..72bb8a898 Binary files /dev/null and b/public/terrain/19/858562/354003.terrain differ diff --git a/public/terrain/19/858562/354004.terrain b/public/terrain/19/858562/354004.terrain new file mode 100644 index 000000000..5e92a9af3 Binary files /dev/null and b/public/terrain/19/858562/354004.terrain differ diff --git a/public/terrain/19/858562/354005.terrain b/public/terrain/19/858562/354005.terrain new file mode 100644 index 000000000..7f6d796dd Binary files /dev/null and b/public/terrain/19/858562/354005.terrain differ diff --git a/public/terrain/19/858562/354006.terrain b/public/terrain/19/858562/354006.terrain new file mode 100644 index 000000000..2fd011f43 Binary files /dev/null and b/public/terrain/19/858562/354006.terrain differ diff --git a/public/terrain/19/858562/354007.terrain b/public/terrain/19/858562/354007.terrain new file mode 100644 index 000000000..d52aeb5db Binary files /dev/null and b/public/terrain/19/858562/354007.terrain differ diff --git a/public/terrain/19/858562/354008.terrain b/public/terrain/19/858562/354008.terrain new file mode 100644 index 000000000..067b3d648 Binary files /dev/null and b/public/terrain/19/858562/354008.terrain differ diff --git a/public/terrain/19/858562/354009.terrain b/public/terrain/19/858562/354009.terrain new file mode 100644 index 000000000..99fe56e01 Binary files /dev/null and b/public/terrain/19/858562/354009.terrain differ diff --git a/public/terrain/19/858562/354010.terrain b/public/terrain/19/858562/354010.terrain new file mode 100644 index 000000000..e9c97f1e2 Binary files /dev/null and b/public/terrain/19/858562/354010.terrain differ diff --git a/public/terrain/19/858562/354011.terrain b/public/terrain/19/858562/354011.terrain new file mode 100644 index 000000000..69f94fde5 Binary files /dev/null and b/public/terrain/19/858562/354011.terrain differ diff --git a/public/terrain/19/858562/354012.terrain b/public/terrain/19/858562/354012.terrain new file mode 100644 index 000000000..35d7c3764 Binary files /dev/null and b/public/terrain/19/858562/354012.terrain differ diff --git a/public/terrain/19/858562/354013.terrain b/public/terrain/19/858562/354013.terrain new file mode 100644 index 000000000..e67e1332c Binary files /dev/null and b/public/terrain/19/858562/354013.terrain differ diff --git a/public/terrain/19/858562/354014.terrain b/public/terrain/19/858562/354014.terrain new file mode 100644 index 000000000..a12dd6230 Binary files /dev/null and b/public/terrain/19/858562/354014.terrain differ diff --git a/public/terrain/19/858562/354015.terrain b/public/terrain/19/858562/354015.terrain new file mode 100644 index 000000000..0a615c3d0 Binary files /dev/null and b/public/terrain/19/858562/354015.terrain differ diff --git a/public/terrain/19/858562/354016.terrain b/public/terrain/19/858562/354016.terrain new file mode 100644 index 000000000..d5f0c5c0d Binary files /dev/null and b/public/terrain/19/858562/354016.terrain differ diff --git a/public/terrain/19/858562/354017.terrain b/public/terrain/19/858562/354017.terrain new file mode 100644 index 000000000..a79403592 Binary files /dev/null and b/public/terrain/19/858562/354017.terrain differ diff --git a/public/terrain/19/858562/354018.terrain b/public/terrain/19/858562/354018.terrain new file mode 100644 index 000000000..9e963427a Binary files /dev/null and b/public/terrain/19/858562/354018.terrain differ diff --git a/public/terrain/19/858562/354019.terrain b/public/terrain/19/858562/354019.terrain new file mode 100644 index 000000000..8ccb5a028 Binary files /dev/null and b/public/terrain/19/858562/354019.terrain differ diff --git a/public/terrain/19/858562/354020.terrain b/public/terrain/19/858562/354020.terrain new file mode 100644 index 000000000..ef9f9c695 Binary files /dev/null and b/public/terrain/19/858562/354020.terrain differ diff --git a/public/terrain/19/858562/354021.terrain b/public/terrain/19/858562/354021.terrain new file mode 100644 index 000000000..193468601 Binary files /dev/null and b/public/terrain/19/858562/354021.terrain differ diff --git a/public/terrain/19/858562/354022.terrain b/public/terrain/19/858562/354022.terrain new file mode 100644 index 000000000..48f0a436c Binary files /dev/null and b/public/terrain/19/858562/354022.terrain differ diff --git a/public/terrain/19/858562/354023.terrain b/public/terrain/19/858562/354023.terrain new file mode 100644 index 000000000..e61614d1b Binary files /dev/null and b/public/terrain/19/858562/354023.terrain differ diff --git a/public/terrain/19/858562/354024.terrain b/public/terrain/19/858562/354024.terrain new file mode 100644 index 000000000..6abfcdef5 Binary files /dev/null and b/public/terrain/19/858562/354024.terrain differ diff --git a/public/terrain/19/858562/354025.terrain b/public/terrain/19/858562/354025.terrain new file mode 100644 index 000000000..46322324c Binary files /dev/null and b/public/terrain/19/858562/354025.terrain differ diff --git a/public/terrain/19/858562/354026.terrain b/public/terrain/19/858562/354026.terrain new file mode 100644 index 000000000..df8ffd112 Binary files /dev/null and b/public/terrain/19/858562/354026.terrain differ diff --git a/public/terrain/19/858562/354027.terrain b/public/terrain/19/858562/354027.terrain new file mode 100644 index 000000000..31b6df277 Binary files /dev/null and b/public/terrain/19/858562/354027.terrain differ diff --git a/public/terrain/19/858562/354028.terrain b/public/terrain/19/858562/354028.terrain new file mode 100644 index 000000000..71ff813a9 Binary files /dev/null and b/public/terrain/19/858562/354028.terrain differ diff --git a/public/terrain/19/858562/354029.terrain b/public/terrain/19/858562/354029.terrain new file mode 100644 index 000000000..483a08c76 Binary files /dev/null and b/public/terrain/19/858562/354029.terrain differ diff --git a/public/terrain/19/858562/354030.terrain b/public/terrain/19/858562/354030.terrain new file mode 100644 index 000000000..033513459 Binary files /dev/null and b/public/terrain/19/858562/354030.terrain differ diff --git a/public/terrain/19/858562/354031.terrain b/public/terrain/19/858562/354031.terrain new file mode 100644 index 000000000..ef688639c Binary files /dev/null and b/public/terrain/19/858562/354031.terrain differ diff --git a/public/terrain/19/858562/354032.terrain b/public/terrain/19/858562/354032.terrain new file mode 100644 index 000000000..ec62bd468 Binary files /dev/null and b/public/terrain/19/858562/354032.terrain differ diff --git a/public/terrain/19/858562/354033.terrain b/public/terrain/19/858562/354033.terrain new file mode 100644 index 000000000..c987f8603 Binary files /dev/null and b/public/terrain/19/858562/354033.terrain differ diff --git a/public/terrain/19/858562/354034.terrain b/public/terrain/19/858562/354034.terrain new file mode 100644 index 000000000..7a27e9082 Binary files /dev/null and b/public/terrain/19/858562/354034.terrain differ diff --git a/public/terrain/19/858562/354035.terrain b/public/terrain/19/858562/354035.terrain new file mode 100644 index 000000000..9c67ba6c2 Binary files /dev/null and b/public/terrain/19/858562/354035.terrain differ diff --git a/public/terrain/19/858562/354036.terrain b/public/terrain/19/858562/354036.terrain new file mode 100644 index 000000000..b20d6e53a Binary files /dev/null and b/public/terrain/19/858562/354036.terrain differ diff --git a/public/terrain/19/858562/354037.terrain b/public/terrain/19/858562/354037.terrain new file mode 100644 index 000000000..fcdf651f5 Binary files /dev/null and b/public/terrain/19/858562/354037.terrain differ diff --git a/public/terrain/19/858562/354038.terrain b/public/terrain/19/858562/354038.terrain new file mode 100644 index 000000000..bdc38bf83 Binary files /dev/null and b/public/terrain/19/858562/354038.terrain differ diff --git a/public/terrain/19/858562/354039.terrain b/public/terrain/19/858562/354039.terrain new file mode 100644 index 000000000..c13e8e352 Binary files /dev/null and b/public/terrain/19/858562/354039.terrain differ diff --git a/public/terrain/19/858562/354040.terrain b/public/terrain/19/858562/354040.terrain new file mode 100644 index 000000000..732c0af81 Binary files /dev/null and b/public/terrain/19/858562/354040.terrain differ diff --git a/public/terrain/19/858562/354041.terrain b/public/terrain/19/858562/354041.terrain new file mode 100644 index 000000000..114009786 Binary files /dev/null and b/public/terrain/19/858562/354041.terrain differ diff --git a/public/terrain/19/858562/354042.terrain b/public/terrain/19/858562/354042.terrain new file mode 100644 index 000000000..2b078f6e7 Binary files /dev/null and b/public/terrain/19/858562/354042.terrain differ diff --git a/public/terrain/19/858562/354043.terrain b/public/terrain/19/858562/354043.terrain new file mode 100644 index 000000000..4862bf390 Binary files /dev/null and b/public/terrain/19/858562/354043.terrain differ diff --git a/public/terrain/19/858562/354044.terrain b/public/terrain/19/858562/354044.terrain new file mode 100644 index 000000000..20cd10340 Binary files /dev/null and b/public/terrain/19/858562/354044.terrain differ diff --git a/public/terrain/19/858562/354045.terrain b/public/terrain/19/858562/354045.terrain new file mode 100644 index 000000000..410dfec27 Binary files /dev/null and b/public/terrain/19/858562/354045.terrain differ diff --git a/public/terrain/19/858562/354046.terrain b/public/terrain/19/858562/354046.terrain new file mode 100644 index 000000000..1fd321f3d Binary files /dev/null and b/public/terrain/19/858562/354046.terrain differ diff --git a/public/terrain/19/858562/354047.terrain b/public/terrain/19/858562/354047.terrain new file mode 100644 index 000000000..082adad6f Binary files /dev/null and b/public/terrain/19/858562/354047.terrain differ diff --git a/public/terrain/19/858562/354048.terrain b/public/terrain/19/858562/354048.terrain new file mode 100644 index 000000000..4d51c44fd Binary files /dev/null and b/public/terrain/19/858562/354048.terrain differ diff --git a/public/terrain/19/858562/354049.terrain b/public/terrain/19/858562/354049.terrain new file mode 100644 index 000000000..efc2df69a Binary files /dev/null and b/public/terrain/19/858562/354049.terrain differ diff --git a/public/terrain/19/858562/354050.terrain b/public/terrain/19/858562/354050.terrain new file mode 100644 index 000000000..8a25d6556 Binary files /dev/null and b/public/terrain/19/858562/354050.terrain differ diff --git a/public/terrain/19/858562/354051.terrain b/public/terrain/19/858562/354051.terrain new file mode 100644 index 000000000..53b21072e Binary files /dev/null and b/public/terrain/19/858562/354051.terrain differ diff --git a/public/terrain/19/858562/354052.terrain b/public/terrain/19/858562/354052.terrain new file mode 100644 index 000000000..93f841399 Binary files /dev/null and b/public/terrain/19/858562/354052.terrain differ diff --git a/public/terrain/19/858562/354053.terrain b/public/terrain/19/858562/354053.terrain new file mode 100644 index 000000000..ac1e414f8 Binary files /dev/null and b/public/terrain/19/858562/354053.terrain differ diff --git a/public/terrain/19/858562/354054.terrain b/public/terrain/19/858562/354054.terrain new file mode 100644 index 000000000..9f3af4f46 Binary files /dev/null and b/public/terrain/19/858562/354054.terrain differ diff --git a/public/terrain/19/858562/354055.terrain b/public/terrain/19/858562/354055.terrain new file mode 100644 index 000000000..4e433d1dc Binary files /dev/null and b/public/terrain/19/858562/354055.terrain differ diff --git a/public/terrain/19/858562/354056.terrain b/public/terrain/19/858562/354056.terrain new file mode 100644 index 000000000..b0bdac364 Binary files /dev/null and b/public/terrain/19/858562/354056.terrain differ diff --git a/public/terrain/19/858562/354057.terrain b/public/terrain/19/858562/354057.terrain new file mode 100644 index 000000000..94c48a2d0 Binary files /dev/null and b/public/terrain/19/858562/354057.terrain differ diff --git a/public/terrain/19/858562/354058.terrain b/public/terrain/19/858562/354058.terrain new file mode 100644 index 000000000..9052b8349 Binary files /dev/null and b/public/terrain/19/858562/354058.terrain differ diff --git a/public/terrain/19/858562/354059.terrain b/public/terrain/19/858562/354059.terrain new file mode 100644 index 000000000..27685f2ef Binary files /dev/null and b/public/terrain/19/858562/354059.terrain differ diff --git a/public/terrain/19/858563/353743.terrain b/public/terrain/19/858563/353743.terrain new file mode 100644 index 000000000..99fa591bb Binary files /dev/null and b/public/terrain/19/858563/353743.terrain differ diff --git a/public/terrain/19/858563/353744.terrain b/public/terrain/19/858563/353744.terrain new file mode 100644 index 000000000..7c6e7af9c Binary files /dev/null and b/public/terrain/19/858563/353744.terrain differ diff --git a/public/terrain/19/858563/353745.terrain b/public/terrain/19/858563/353745.terrain new file mode 100644 index 000000000..2da059496 Binary files /dev/null and b/public/terrain/19/858563/353745.terrain differ diff --git a/public/terrain/19/858563/353746.terrain b/public/terrain/19/858563/353746.terrain new file mode 100644 index 000000000..3b01b33ab Binary files /dev/null and b/public/terrain/19/858563/353746.terrain differ diff --git a/public/terrain/19/858563/353747.terrain b/public/terrain/19/858563/353747.terrain new file mode 100644 index 000000000..e84c489d4 Binary files /dev/null and b/public/terrain/19/858563/353747.terrain differ diff --git a/public/terrain/19/858563/353748.terrain b/public/terrain/19/858563/353748.terrain new file mode 100644 index 000000000..6f4fb3d0a Binary files /dev/null and b/public/terrain/19/858563/353748.terrain differ diff --git a/public/terrain/19/858563/353749.terrain b/public/terrain/19/858563/353749.terrain new file mode 100644 index 000000000..cdab5f215 Binary files /dev/null and b/public/terrain/19/858563/353749.terrain differ diff --git a/public/terrain/19/858563/353750.terrain b/public/terrain/19/858563/353750.terrain new file mode 100644 index 000000000..86d9ade53 Binary files /dev/null and b/public/terrain/19/858563/353750.terrain differ diff --git a/public/terrain/19/858563/353751.terrain b/public/terrain/19/858563/353751.terrain new file mode 100644 index 000000000..8c4119a0c Binary files /dev/null and b/public/terrain/19/858563/353751.terrain differ diff --git a/public/terrain/19/858563/353752.terrain b/public/terrain/19/858563/353752.terrain new file mode 100644 index 000000000..7e64ca442 Binary files /dev/null and b/public/terrain/19/858563/353752.terrain differ diff --git a/public/terrain/19/858563/353753.terrain b/public/terrain/19/858563/353753.terrain new file mode 100644 index 000000000..fb83f532b Binary files /dev/null and b/public/terrain/19/858563/353753.terrain differ diff --git a/public/terrain/19/858563/353754.terrain b/public/terrain/19/858563/353754.terrain new file mode 100644 index 000000000..04e9d658f Binary files /dev/null and b/public/terrain/19/858563/353754.terrain differ diff --git a/public/terrain/19/858563/353755.terrain b/public/terrain/19/858563/353755.terrain new file mode 100644 index 000000000..28e89790d Binary files /dev/null and b/public/terrain/19/858563/353755.terrain differ diff --git a/public/terrain/19/858563/353756.terrain b/public/terrain/19/858563/353756.terrain new file mode 100644 index 000000000..a95465897 Binary files /dev/null and b/public/terrain/19/858563/353756.terrain differ diff --git a/public/terrain/19/858563/353757.terrain b/public/terrain/19/858563/353757.terrain new file mode 100644 index 000000000..3f3ac655e Binary files /dev/null and b/public/terrain/19/858563/353757.terrain differ diff --git a/public/terrain/19/858563/353758.terrain b/public/terrain/19/858563/353758.terrain new file mode 100644 index 000000000..495f2a014 Binary files /dev/null and b/public/terrain/19/858563/353758.terrain differ diff --git a/public/terrain/19/858563/353759.terrain b/public/terrain/19/858563/353759.terrain new file mode 100644 index 000000000..32ac4f6de Binary files /dev/null and b/public/terrain/19/858563/353759.terrain differ diff --git a/public/terrain/19/858563/353760.terrain b/public/terrain/19/858563/353760.terrain new file mode 100644 index 000000000..2b01a608a Binary files /dev/null and b/public/terrain/19/858563/353760.terrain differ diff --git a/public/terrain/19/858563/353761.terrain b/public/terrain/19/858563/353761.terrain new file mode 100644 index 000000000..5591f6367 Binary files /dev/null and b/public/terrain/19/858563/353761.terrain differ diff --git a/public/terrain/19/858563/353762.terrain b/public/terrain/19/858563/353762.terrain new file mode 100644 index 000000000..391097560 Binary files /dev/null and b/public/terrain/19/858563/353762.terrain differ diff --git a/public/terrain/19/858563/353763.terrain b/public/terrain/19/858563/353763.terrain new file mode 100644 index 000000000..0c85f6338 Binary files /dev/null and b/public/terrain/19/858563/353763.terrain differ diff --git a/public/terrain/19/858563/353764.terrain b/public/terrain/19/858563/353764.terrain new file mode 100644 index 000000000..494436311 Binary files /dev/null and b/public/terrain/19/858563/353764.terrain differ diff --git a/public/terrain/19/858563/353765.terrain b/public/terrain/19/858563/353765.terrain new file mode 100644 index 000000000..9f57fcb99 Binary files /dev/null and b/public/terrain/19/858563/353765.terrain differ diff --git a/public/terrain/19/858563/353766.terrain b/public/terrain/19/858563/353766.terrain new file mode 100644 index 000000000..8444bef28 Binary files /dev/null and b/public/terrain/19/858563/353766.terrain differ diff --git a/public/terrain/19/858563/353767.terrain b/public/terrain/19/858563/353767.terrain new file mode 100644 index 000000000..f42adeb67 Binary files /dev/null and b/public/terrain/19/858563/353767.terrain differ diff --git a/public/terrain/19/858563/353768.terrain b/public/terrain/19/858563/353768.terrain new file mode 100644 index 000000000..1d3368583 Binary files /dev/null and b/public/terrain/19/858563/353768.terrain differ diff --git a/public/terrain/19/858563/353769.terrain b/public/terrain/19/858563/353769.terrain new file mode 100644 index 000000000..6a34e2b1f Binary files /dev/null and b/public/terrain/19/858563/353769.terrain differ diff --git a/public/terrain/19/858563/353770.terrain b/public/terrain/19/858563/353770.terrain new file mode 100644 index 000000000..df749def1 Binary files /dev/null and b/public/terrain/19/858563/353770.terrain differ diff --git a/public/terrain/19/858563/353771.terrain b/public/terrain/19/858563/353771.terrain new file mode 100644 index 000000000..cee2a9379 Binary files /dev/null and b/public/terrain/19/858563/353771.terrain differ diff --git a/public/terrain/19/858563/353772.terrain b/public/terrain/19/858563/353772.terrain new file mode 100644 index 000000000..37f7c662b Binary files /dev/null and b/public/terrain/19/858563/353772.terrain differ diff --git a/public/terrain/19/858563/353773.terrain b/public/terrain/19/858563/353773.terrain new file mode 100644 index 000000000..9c1556958 Binary files /dev/null and b/public/terrain/19/858563/353773.terrain differ diff --git a/public/terrain/19/858563/353774.terrain b/public/terrain/19/858563/353774.terrain new file mode 100644 index 000000000..2c0531f1f Binary files /dev/null and b/public/terrain/19/858563/353774.terrain differ diff --git a/public/terrain/19/858563/353775.terrain b/public/terrain/19/858563/353775.terrain new file mode 100644 index 000000000..8e711bd37 Binary files /dev/null and b/public/terrain/19/858563/353775.terrain differ diff --git a/public/terrain/19/858563/353776.terrain b/public/terrain/19/858563/353776.terrain new file mode 100644 index 000000000..015b67fe7 Binary files /dev/null and b/public/terrain/19/858563/353776.terrain differ diff --git a/public/terrain/19/858563/353777.terrain b/public/terrain/19/858563/353777.terrain new file mode 100644 index 000000000..02b34d5fa Binary files /dev/null and b/public/terrain/19/858563/353777.terrain differ diff --git a/public/terrain/19/858563/353778.terrain b/public/terrain/19/858563/353778.terrain new file mode 100644 index 000000000..58d33cd45 Binary files /dev/null and b/public/terrain/19/858563/353778.terrain differ diff --git a/public/terrain/19/858563/353779.terrain b/public/terrain/19/858563/353779.terrain new file mode 100644 index 000000000..4d3931f44 Binary files /dev/null and b/public/terrain/19/858563/353779.terrain differ diff --git a/public/terrain/19/858563/353780.terrain b/public/terrain/19/858563/353780.terrain new file mode 100644 index 000000000..6c3191931 Binary files /dev/null and b/public/terrain/19/858563/353780.terrain differ diff --git a/public/terrain/19/858563/353781.terrain b/public/terrain/19/858563/353781.terrain new file mode 100644 index 000000000..42887b7fc Binary files /dev/null and b/public/terrain/19/858563/353781.terrain differ diff --git a/public/terrain/19/858563/353782.terrain b/public/terrain/19/858563/353782.terrain new file mode 100644 index 000000000..e522e493a Binary files /dev/null and b/public/terrain/19/858563/353782.terrain differ diff --git a/public/terrain/19/858563/353783.terrain b/public/terrain/19/858563/353783.terrain new file mode 100644 index 000000000..96e63fd5d Binary files /dev/null and b/public/terrain/19/858563/353783.terrain differ diff --git a/public/terrain/19/858563/353784.terrain b/public/terrain/19/858563/353784.terrain new file mode 100644 index 000000000..0db1f3a78 Binary files /dev/null and b/public/terrain/19/858563/353784.terrain differ diff --git a/public/terrain/19/858563/353785.terrain b/public/terrain/19/858563/353785.terrain new file mode 100644 index 000000000..1538c098e Binary files /dev/null and b/public/terrain/19/858563/353785.terrain differ diff --git a/public/terrain/19/858563/353786.terrain b/public/terrain/19/858563/353786.terrain new file mode 100644 index 000000000..926fcf6ab Binary files /dev/null and b/public/terrain/19/858563/353786.terrain differ diff --git a/public/terrain/19/858563/353787.terrain b/public/terrain/19/858563/353787.terrain new file mode 100644 index 000000000..aea74b299 Binary files /dev/null and b/public/terrain/19/858563/353787.terrain differ diff --git a/public/terrain/19/858563/353788.terrain b/public/terrain/19/858563/353788.terrain new file mode 100644 index 000000000..d8d764b73 Binary files /dev/null and b/public/terrain/19/858563/353788.terrain differ diff --git a/public/terrain/19/858563/353789.terrain b/public/terrain/19/858563/353789.terrain new file mode 100644 index 000000000..79bc395b7 Binary files /dev/null and b/public/terrain/19/858563/353789.terrain differ diff --git a/public/terrain/19/858563/353790.terrain b/public/terrain/19/858563/353790.terrain new file mode 100644 index 000000000..ad4ea70fc Binary files /dev/null and b/public/terrain/19/858563/353790.terrain differ diff --git a/public/terrain/19/858563/353791.terrain b/public/terrain/19/858563/353791.terrain new file mode 100644 index 000000000..6ed8a455e Binary files /dev/null and b/public/terrain/19/858563/353791.terrain differ diff --git a/public/terrain/19/858563/353792.terrain b/public/terrain/19/858563/353792.terrain new file mode 100644 index 000000000..459396f37 Binary files /dev/null and b/public/terrain/19/858563/353792.terrain differ diff --git a/public/terrain/19/858563/353793.terrain b/public/terrain/19/858563/353793.terrain new file mode 100644 index 000000000..c7cf1505a Binary files /dev/null and b/public/terrain/19/858563/353793.terrain differ diff --git a/public/terrain/19/858563/353794.terrain b/public/terrain/19/858563/353794.terrain new file mode 100644 index 000000000..4b7e69008 Binary files /dev/null and b/public/terrain/19/858563/353794.terrain differ diff --git a/public/terrain/19/858563/353795.terrain b/public/terrain/19/858563/353795.terrain new file mode 100644 index 000000000..c9e44b857 Binary files /dev/null and b/public/terrain/19/858563/353795.terrain differ diff --git a/public/terrain/19/858563/353796.terrain b/public/terrain/19/858563/353796.terrain new file mode 100644 index 000000000..1462ceea3 Binary files /dev/null and b/public/terrain/19/858563/353796.terrain differ diff --git a/public/terrain/19/858563/353797.terrain b/public/terrain/19/858563/353797.terrain new file mode 100644 index 000000000..55fbbc2c0 Binary files /dev/null and b/public/terrain/19/858563/353797.terrain differ diff --git a/public/terrain/19/858563/353798.terrain b/public/terrain/19/858563/353798.terrain new file mode 100644 index 000000000..491f2f544 Binary files /dev/null and b/public/terrain/19/858563/353798.terrain differ diff --git a/public/terrain/19/858563/353799.terrain b/public/terrain/19/858563/353799.terrain new file mode 100644 index 000000000..15f524b11 Binary files /dev/null and b/public/terrain/19/858563/353799.terrain differ diff --git a/public/terrain/19/858563/353800.terrain b/public/terrain/19/858563/353800.terrain new file mode 100644 index 000000000..f0056b6ba Binary files /dev/null and b/public/terrain/19/858563/353800.terrain differ diff --git a/public/terrain/19/858563/353801.terrain b/public/terrain/19/858563/353801.terrain new file mode 100644 index 000000000..5446f426d Binary files /dev/null and b/public/terrain/19/858563/353801.terrain differ diff --git a/public/terrain/19/858563/353802.terrain b/public/terrain/19/858563/353802.terrain new file mode 100644 index 000000000..a701d9647 Binary files /dev/null and b/public/terrain/19/858563/353802.terrain differ diff --git a/public/terrain/19/858563/353803.terrain b/public/terrain/19/858563/353803.terrain new file mode 100644 index 000000000..2301b1072 Binary files /dev/null and b/public/terrain/19/858563/353803.terrain differ diff --git a/public/terrain/19/858563/353804.terrain b/public/terrain/19/858563/353804.terrain new file mode 100644 index 000000000..8cd1ef7dc Binary files /dev/null and b/public/terrain/19/858563/353804.terrain differ diff --git a/public/terrain/19/858563/353805.terrain b/public/terrain/19/858563/353805.terrain new file mode 100644 index 000000000..91e3f7638 Binary files /dev/null and b/public/terrain/19/858563/353805.terrain differ diff --git a/public/terrain/19/858563/353806.terrain b/public/terrain/19/858563/353806.terrain new file mode 100644 index 000000000..83aa8834c Binary files /dev/null and b/public/terrain/19/858563/353806.terrain differ diff --git a/public/terrain/19/858563/353807.terrain b/public/terrain/19/858563/353807.terrain new file mode 100644 index 000000000..6944403df Binary files /dev/null and b/public/terrain/19/858563/353807.terrain differ diff --git a/public/terrain/19/858563/353808.terrain b/public/terrain/19/858563/353808.terrain new file mode 100644 index 000000000..bf34b7809 Binary files /dev/null and b/public/terrain/19/858563/353808.terrain differ diff --git a/public/terrain/19/858563/353809.terrain b/public/terrain/19/858563/353809.terrain new file mode 100644 index 000000000..bf6d882e5 Binary files /dev/null and b/public/terrain/19/858563/353809.terrain differ diff --git a/public/terrain/19/858563/353810.terrain b/public/terrain/19/858563/353810.terrain new file mode 100644 index 000000000..702c38249 Binary files /dev/null and b/public/terrain/19/858563/353810.terrain differ diff --git a/public/terrain/19/858563/353811.terrain b/public/terrain/19/858563/353811.terrain new file mode 100644 index 000000000..475d027ac Binary files /dev/null and b/public/terrain/19/858563/353811.terrain differ diff --git a/public/terrain/19/858563/353812.terrain b/public/terrain/19/858563/353812.terrain new file mode 100644 index 000000000..65b979e28 Binary files /dev/null and b/public/terrain/19/858563/353812.terrain differ diff --git a/public/terrain/19/858563/353813.terrain b/public/terrain/19/858563/353813.terrain new file mode 100644 index 000000000..cf5903549 Binary files /dev/null and b/public/terrain/19/858563/353813.terrain differ diff --git a/public/terrain/19/858563/353814.terrain b/public/terrain/19/858563/353814.terrain new file mode 100644 index 000000000..7b6d15bd3 Binary files /dev/null and b/public/terrain/19/858563/353814.terrain differ diff --git a/public/terrain/19/858563/353815.terrain b/public/terrain/19/858563/353815.terrain new file mode 100644 index 000000000..37f57e5b6 Binary files /dev/null and b/public/terrain/19/858563/353815.terrain differ diff --git a/public/terrain/19/858563/353816.terrain b/public/terrain/19/858563/353816.terrain new file mode 100644 index 000000000..a388bb5dd Binary files /dev/null and b/public/terrain/19/858563/353816.terrain differ diff --git a/public/terrain/19/858563/353817.terrain b/public/terrain/19/858563/353817.terrain new file mode 100644 index 000000000..6c18fb843 Binary files /dev/null and b/public/terrain/19/858563/353817.terrain differ diff --git a/public/terrain/19/858563/353818.terrain b/public/terrain/19/858563/353818.terrain new file mode 100644 index 000000000..acecadff9 Binary files /dev/null and b/public/terrain/19/858563/353818.terrain differ diff --git a/public/terrain/19/858563/353819.terrain b/public/terrain/19/858563/353819.terrain new file mode 100644 index 000000000..88b9624c4 Binary files /dev/null and b/public/terrain/19/858563/353819.terrain differ diff --git a/public/terrain/19/858563/353820.terrain b/public/terrain/19/858563/353820.terrain new file mode 100644 index 000000000..1fa8a3921 Binary files /dev/null and b/public/terrain/19/858563/353820.terrain differ diff --git a/public/terrain/19/858563/353821.terrain b/public/terrain/19/858563/353821.terrain new file mode 100644 index 000000000..a0cebbece Binary files /dev/null and b/public/terrain/19/858563/353821.terrain differ diff --git a/public/terrain/19/858563/353822.terrain b/public/terrain/19/858563/353822.terrain new file mode 100644 index 000000000..9c35ec73e Binary files /dev/null and b/public/terrain/19/858563/353822.terrain differ diff --git a/public/terrain/19/858563/353823.terrain b/public/terrain/19/858563/353823.terrain new file mode 100644 index 000000000..3cfa47ff3 Binary files /dev/null and b/public/terrain/19/858563/353823.terrain differ diff --git a/public/terrain/19/858563/353824.terrain b/public/terrain/19/858563/353824.terrain new file mode 100644 index 000000000..2ba5baa47 Binary files /dev/null and b/public/terrain/19/858563/353824.terrain differ diff --git a/public/terrain/19/858563/353825.terrain b/public/terrain/19/858563/353825.terrain new file mode 100644 index 000000000..d86a877f6 Binary files /dev/null and b/public/terrain/19/858563/353825.terrain differ diff --git a/public/terrain/19/858563/353826.terrain b/public/terrain/19/858563/353826.terrain new file mode 100644 index 000000000..0af323875 Binary files /dev/null and b/public/terrain/19/858563/353826.terrain differ diff --git a/public/terrain/19/858563/353827.terrain b/public/terrain/19/858563/353827.terrain new file mode 100644 index 000000000..f30cffe6d Binary files /dev/null and b/public/terrain/19/858563/353827.terrain differ diff --git a/public/terrain/19/858563/353828.terrain b/public/terrain/19/858563/353828.terrain new file mode 100644 index 000000000..196e54dfa Binary files /dev/null and b/public/terrain/19/858563/353828.terrain differ diff --git a/public/terrain/19/858563/353829.terrain b/public/terrain/19/858563/353829.terrain new file mode 100644 index 000000000..0baefc77f Binary files /dev/null and b/public/terrain/19/858563/353829.terrain differ diff --git a/public/terrain/19/858563/353830.terrain b/public/terrain/19/858563/353830.terrain new file mode 100644 index 000000000..5e2706baa Binary files /dev/null and b/public/terrain/19/858563/353830.terrain differ diff --git a/public/terrain/19/858563/353831.terrain b/public/terrain/19/858563/353831.terrain new file mode 100644 index 000000000..6cf6b21b6 Binary files /dev/null and b/public/terrain/19/858563/353831.terrain differ diff --git a/public/terrain/19/858563/353832.terrain b/public/terrain/19/858563/353832.terrain new file mode 100644 index 000000000..6c10d5850 Binary files /dev/null and b/public/terrain/19/858563/353832.terrain differ diff --git a/public/terrain/19/858563/353833.terrain b/public/terrain/19/858563/353833.terrain new file mode 100644 index 000000000..47eda53d7 Binary files /dev/null and b/public/terrain/19/858563/353833.terrain differ diff --git a/public/terrain/19/858563/353834.terrain b/public/terrain/19/858563/353834.terrain new file mode 100644 index 000000000..0b74df6f5 Binary files /dev/null and b/public/terrain/19/858563/353834.terrain differ diff --git a/public/terrain/19/858563/353835.terrain b/public/terrain/19/858563/353835.terrain new file mode 100644 index 000000000..5a6a6e02a Binary files /dev/null and b/public/terrain/19/858563/353835.terrain differ diff --git a/public/terrain/19/858563/353836.terrain b/public/terrain/19/858563/353836.terrain new file mode 100644 index 000000000..472c93886 Binary files /dev/null and b/public/terrain/19/858563/353836.terrain differ diff --git a/public/terrain/19/858563/353837.terrain b/public/terrain/19/858563/353837.terrain new file mode 100644 index 000000000..c5fa7998c Binary files /dev/null and b/public/terrain/19/858563/353837.terrain differ diff --git a/public/terrain/19/858563/353838.terrain b/public/terrain/19/858563/353838.terrain new file mode 100644 index 000000000..8c41ea3ca Binary files /dev/null and b/public/terrain/19/858563/353838.terrain differ diff --git a/public/terrain/19/858563/353839.terrain b/public/terrain/19/858563/353839.terrain new file mode 100644 index 000000000..cf09f435d Binary files /dev/null and b/public/terrain/19/858563/353839.terrain differ diff --git a/public/terrain/19/858563/353840.terrain b/public/terrain/19/858563/353840.terrain new file mode 100644 index 000000000..238615666 Binary files /dev/null and b/public/terrain/19/858563/353840.terrain differ diff --git a/public/terrain/19/858563/353841.terrain b/public/terrain/19/858563/353841.terrain new file mode 100644 index 000000000..1df9ae218 Binary files /dev/null and b/public/terrain/19/858563/353841.terrain differ diff --git a/public/terrain/19/858563/353842.terrain b/public/terrain/19/858563/353842.terrain new file mode 100644 index 000000000..4a8bf29bb Binary files /dev/null and b/public/terrain/19/858563/353842.terrain differ diff --git a/public/terrain/19/858563/353843.terrain b/public/terrain/19/858563/353843.terrain new file mode 100644 index 000000000..327e28fce Binary files /dev/null and b/public/terrain/19/858563/353843.terrain differ diff --git a/public/terrain/19/858563/353844.terrain b/public/terrain/19/858563/353844.terrain new file mode 100644 index 000000000..dd956a090 Binary files /dev/null and b/public/terrain/19/858563/353844.terrain differ diff --git a/public/terrain/19/858563/353845.terrain b/public/terrain/19/858563/353845.terrain new file mode 100644 index 000000000..ab0ab3ed1 Binary files /dev/null and b/public/terrain/19/858563/353845.terrain differ diff --git a/public/terrain/19/858563/353846.terrain b/public/terrain/19/858563/353846.terrain new file mode 100644 index 000000000..994184975 Binary files /dev/null and b/public/terrain/19/858563/353846.terrain differ diff --git a/public/terrain/19/858563/353847.terrain b/public/terrain/19/858563/353847.terrain new file mode 100644 index 000000000..1854af619 Binary files /dev/null and b/public/terrain/19/858563/353847.terrain differ diff --git a/public/terrain/19/858563/353848.terrain b/public/terrain/19/858563/353848.terrain new file mode 100644 index 000000000..2ec1c85cf Binary files /dev/null and b/public/terrain/19/858563/353848.terrain differ diff --git a/public/terrain/19/858563/353849.terrain b/public/terrain/19/858563/353849.terrain new file mode 100644 index 000000000..5f7504c15 Binary files /dev/null and b/public/terrain/19/858563/353849.terrain differ diff --git a/public/terrain/19/858563/353850.terrain b/public/terrain/19/858563/353850.terrain new file mode 100644 index 000000000..059c9f193 Binary files /dev/null and b/public/terrain/19/858563/353850.terrain differ diff --git a/public/terrain/19/858563/353851.terrain b/public/terrain/19/858563/353851.terrain new file mode 100644 index 000000000..dc6aa2dbf Binary files /dev/null and b/public/terrain/19/858563/353851.terrain differ diff --git a/public/terrain/19/858563/353852.terrain b/public/terrain/19/858563/353852.terrain new file mode 100644 index 000000000..16a830668 Binary files /dev/null and b/public/terrain/19/858563/353852.terrain differ diff --git a/public/terrain/19/858563/353853.terrain b/public/terrain/19/858563/353853.terrain new file mode 100644 index 000000000..228f810f3 Binary files /dev/null and b/public/terrain/19/858563/353853.terrain differ diff --git a/public/terrain/19/858563/353854.terrain b/public/terrain/19/858563/353854.terrain new file mode 100644 index 000000000..1f5109408 Binary files /dev/null and b/public/terrain/19/858563/353854.terrain differ diff --git a/public/terrain/19/858563/353855.terrain b/public/terrain/19/858563/353855.terrain new file mode 100644 index 000000000..d135b6774 Binary files /dev/null and b/public/terrain/19/858563/353855.terrain differ diff --git a/public/terrain/19/858563/353856.terrain b/public/terrain/19/858563/353856.terrain new file mode 100644 index 000000000..9570aeea2 Binary files /dev/null and b/public/terrain/19/858563/353856.terrain differ diff --git a/public/terrain/19/858563/353857.terrain b/public/terrain/19/858563/353857.terrain new file mode 100644 index 000000000..84dc184a1 Binary files /dev/null and b/public/terrain/19/858563/353857.terrain differ diff --git a/public/terrain/19/858563/353858.terrain b/public/terrain/19/858563/353858.terrain new file mode 100644 index 000000000..35ecf8087 Binary files /dev/null and b/public/terrain/19/858563/353858.terrain differ diff --git a/public/terrain/19/858563/353859.terrain b/public/terrain/19/858563/353859.terrain new file mode 100644 index 000000000..24dbcc52d Binary files /dev/null and b/public/terrain/19/858563/353859.terrain differ diff --git a/public/terrain/19/858563/353860.terrain b/public/terrain/19/858563/353860.terrain new file mode 100644 index 000000000..f53fb7b65 Binary files /dev/null and b/public/terrain/19/858563/353860.terrain differ diff --git a/public/terrain/19/858563/353861.terrain b/public/terrain/19/858563/353861.terrain new file mode 100644 index 000000000..431d01722 Binary files /dev/null and b/public/terrain/19/858563/353861.terrain differ diff --git a/public/terrain/19/858563/353862.terrain b/public/terrain/19/858563/353862.terrain new file mode 100644 index 000000000..c31aac53d Binary files /dev/null and b/public/terrain/19/858563/353862.terrain differ diff --git a/public/terrain/19/858563/353863.terrain b/public/terrain/19/858563/353863.terrain new file mode 100644 index 000000000..0a9749327 Binary files /dev/null and b/public/terrain/19/858563/353863.terrain differ diff --git a/public/terrain/19/858563/353864.terrain b/public/terrain/19/858563/353864.terrain new file mode 100644 index 000000000..c9adb3c0f Binary files /dev/null and b/public/terrain/19/858563/353864.terrain differ diff --git a/public/terrain/19/858563/353865.terrain b/public/terrain/19/858563/353865.terrain new file mode 100644 index 000000000..e95d0c1e4 Binary files /dev/null and b/public/terrain/19/858563/353865.terrain differ diff --git a/public/terrain/19/858563/353866.terrain b/public/terrain/19/858563/353866.terrain new file mode 100644 index 000000000..f6ef025ec Binary files /dev/null and b/public/terrain/19/858563/353866.terrain differ diff --git a/public/terrain/19/858563/353867.terrain b/public/terrain/19/858563/353867.terrain new file mode 100644 index 000000000..d39f12174 Binary files /dev/null and b/public/terrain/19/858563/353867.terrain differ diff --git a/public/terrain/19/858563/353868.terrain b/public/terrain/19/858563/353868.terrain new file mode 100644 index 000000000..3daca0ccd Binary files /dev/null and b/public/terrain/19/858563/353868.terrain differ diff --git a/public/terrain/19/858563/353869.terrain b/public/terrain/19/858563/353869.terrain new file mode 100644 index 000000000..34f548cbb Binary files /dev/null and b/public/terrain/19/858563/353869.terrain differ diff --git a/public/terrain/19/858563/353870.terrain b/public/terrain/19/858563/353870.terrain new file mode 100644 index 000000000..f7c5b3f52 Binary files /dev/null and b/public/terrain/19/858563/353870.terrain differ diff --git a/public/terrain/19/858563/353871.terrain b/public/terrain/19/858563/353871.terrain new file mode 100644 index 000000000..c36e29b1e Binary files /dev/null and b/public/terrain/19/858563/353871.terrain differ diff --git a/public/terrain/19/858563/353872.terrain b/public/terrain/19/858563/353872.terrain new file mode 100644 index 000000000..cd7f1235a Binary files /dev/null and b/public/terrain/19/858563/353872.terrain differ diff --git a/public/terrain/19/858563/353873.terrain b/public/terrain/19/858563/353873.terrain new file mode 100644 index 000000000..b4f986652 Binary files /dev/null and b/public/terrain/19/858563/353873.terrain differ diff --git a/public/terrain/19/858563/353874.terrain b/public/terrain/19/858563/353874.terrain new file mode 100644 index 000000000..916153ee5 Binary files /dev/null and b/public/terrain/19/858563/353874.terrain differ diff --git a/public/terrain/19/858563/353875.terrain b/public/terrain/19/858563/353875.terrain new file mode 100644 index 000000000..a241c16f3 Binary files /dev/null and b/public/terrain/19/858563/353875.terrain differ diff --git a/public/terrain/19/858563/353876.terrain b/public/terrain/19/858563/353876.terrain new file mode 100644 index 000000000..50470feef Binary files /dev/null and b/public/terrain/19/858563/353876.terrain differ diff --git a/public/terrain/19/858563/353877.terrain b/public/terrain/19/858563/353877.terrain new file mode 100644 index 000000000..28b01cead Binary files /dev/null and b/public/terrain/19/858563/353877.terrain differ diff --git a/public/terrain/19/858563/353878.terrain b/public/terrain/19/858563/353878.terrain new file mode 100644 index 000000000..ac06c918b Binary files /dev/null and b/public/terrain/19/858563/353878.terrain differ diff --git a/public/terrain/19/858563/353879.terrain b/public/terrain/19/858563/353879.terrain new file mode 100644 index 000000000..8285a4b66 Binary files /dev/null and b/public/terrain/19/858563/353879.terrain differ diff --git a/public/terrain/19/858563/353880.terrain b/public/terrain/19/858563/353880.terrain new file mode 100644 index 000000000..f1c087278 Binary files /dev/null and b/public/terrain/19/858563/353880.terrain differ diff --git a/public/terrain/19/858563/353881.terrain b/public/terrain/19/858563/353881.terrain new file mode 100644 index 000000000..908f99229 Binary files /dev/null and b/public/terrain/19/858563/353881.terrain differ diff --git a/public/terrain/19/858563/353882.terrain b/public/terrain/19/858563/353882.terrain new file mode 100644 index 000000000..9cde63aa7 Binary files /dev/null and b/public/terrain/19/858563/353882.terrain differ diff --git a/public/terrain/19/858563/353883.terrain b/public/terrain/19/858563/353883.terrain new file mode 100644 index 000000000..c4965400b Binary files /dev/null and b/public/terrain/19/858563/353883.terrain differ diff --git a/public/terrain/19/858563/353884.terrain b/public/terrain/19/858563/353884.terrain new file mode 100644 index 000000000..eeeef2ee1 Binary files /dev/null and b/public/terrain/19/858563/353884.terrain differ diff --git a/public/terrain/19/858563/353885.terrain b/public/terrain/19/858563/353885.terrain new file mode 100644 index 000000000..3b60a8753 Binary files /dev/null and b/public/terrain/19/858563/353885.terrain differ diff --git a/public/terrain/19/858563/353886.terrain b/public/terrain/19/858563/353886.terrain new file mode 100644 index 000000000..eb946cf6f Binary files /dev/null and b/public/terrain/19/858563/353886.terrain differ diff --git a/public/terrain/19/858563/353887.terrain b/public/terrain/19/858563/353887.terrain new file mode 100644 index 000000000..35299abd3 Binary files /dev/null and b/public/terrain/19/858563/353887.terrain differ diff --git a/public/terrain/19/858563/353888.terrain b/public/terrain/19/858563/353888.terrain new file mode 100644 index 000000000..e817c7152 Binary files /dev/null and b/public/terrain/19/858563/353888.terrain differ diff --git a/public/terrain/19/858563/353889.terrain b/public/terrain/19/858563/353889.terrain new file mode 100644 index 000000000..275e08a52 Binary files /dev/null and b/public/terrain/19/858563/353889.terrain differ diff --git a/public/terrain/19/858563/353890.terrain b/public/terrain/19/858563/353890.terrain new file mode 100644 index 000000000..96b043657 Binary files /dev/null and b/public/terrain/19/858563/353890.terrain differ diff --git a/public/terrain/19/858563/353891.terrain b/public/terrain/19/858563/353891.terrain new file mode 100644 index 000000000..78cc8bfd2 Binary files /dev/null and b/public/terrain/19/858563/353891.terrain differ diff --git a/public/terrain/19/858563/353892.terrain b/public/terrain/19/858563/353892.terrain new file mode 100644 index 000000000..8800686ad Binary files /dev/null and b/public/terrain/19/858563/353892.terrain differ diff --git a/public/terrain/19/858563/353893.terrain b/public/terrain/19/858563/353893.terrain new file mode 100644 index 000000000..bff61011f Binary files /dev/null and b/public/terrain/19/858563/353893.terrain differ diff --git a/public/terrain/19/858563/353894.terrain b/public/terrain/19/858563/353894.terrain new file mode 100644 index 000000000..86405c691 Binary files /dev/null and b/public/terrain/19/858563/353894.terrain differ diff --git a/public/terrain/19/858563/353895.terrain b/public/terrain/19/858563/353895.terrain new file mode 100644 index 000000000..3dd8c9b7e Binary files /dev/null and b/public/terrain/19/858563/353895.terrain differ diff --git a/public/terrain/19/858563/353896.terrain b/public/terrain/19/858563/353896.terrain new file mode 100644 index 000000000..81fa0475e Binary files /dev/null and b/public/terrain/19/858563/353896.terrain differ diff --git a/public/terrain/19/858563/353897.terrain b/public/terrain/19/858563/353897.terrain new file mode 100644 index 000000000..1fca88579 Binary files /dev/null and b/public/terrain/19/858563/353897.terrain differ diff --git a/public/terrain/19/858563/353898.terrain b/public/terrain/19/858563/353898.terrain new file mode 100644 index 000000000..c003437f4 Binary files /dev/null and b/public/terrain/19/858563/353898.terrain differ diff --git a/public/terrain/19/858563/353899.terrain b/public/terrain/19/858563/353899.terrain new file mode 100644 index 000000000..8421a2f2f Binary files /dev/null and b/public/terrain/19/858563/353899.terrain differ diff --git a/public/terrain/19/858563/353900.terrain b/public/terrain/19/858563/353900.terrain new file mode 100644 index 000000000..acbac8390 Binary files /dev/null and b/public/terrain/19/858563/353900.terrain differ diff --git a/public/terrain/19/858563/353901.terrain b/public/terrain/19/858563/353901.terrain new file mode 100644 index 000000000..7c18b0bc0 Binary files /dev/null and b/public/terrain/19/858563/353901.terrain differ diff --git a/public/terrain/19/858563/353902.terrain b/public/terrain/19/858563/353902.terrain new file mode 100644 index 000000000..06e2ba887 Binary files /dev/null and b/public/terrain/19/858563/353902.terrain differ diff --git a/public/terrain/19/858563/353903.terrain b/public/terrain/19/858563/353903.terrain new file mode 100644 index 000000000..a48743026 Binary files /dev/null and b/public/terrain/19/858563/353903.terrain differ diff --git a/public/terrain/19/858563/353904.terrain b/public/terrain/19/858563/353904.terrain new file mode 100644 index 000000000..16c32480a Binary files /dev/null and b/public/terrain/19/858563/353904.terrain differ diff --git a/public/terrain/19/858563/353905.terrain b/public/terrain/19/858563/353905.terrain new file mode 100644 index 000000000..299477a68 Binary files /dev/null and b/public/terrain/19/858563/353905.terrain differ diff --git a/public/terrain/19/858563/353906.terrain b/public/terrain/19/858563/353906.terrain new file mode 100644 index 000000000..b8272f70c Binary files /dev/null and b/public/terrain/19/858563/353906.terrain differ diff --git a/public/terrain/19/858563/353907.terrain b/public/terrain/19/858563/353907.terrain new file mode 100644 index 000000000..2ea319824 Binary files /dev/null and b/public/terrain/19/858563/353907.terrain differ diff --git a/public/terrain/19/858563/353908.terrain b/public/terrain/19/858563/353908.terrain new file mode 100644 index 000000000..0957f10c9 Binary files /dev/null and b/public/terrain/19/858563/353908.terrain differ diff --git a/public/terrain/19/858563/353909.terrain b/public/terrain/19/858563/353909.terrain new file mode 100644 index 000000000..6a7ab245d Binary files /dev/null and b/public/terrain/19/858563/353909.terrain differ diff --git a/public/terrain/19/858563/353910.terrain b/public/terrain/19/858563/353910.terrain new file mode 100644 index 000000000..1e32b4cb1 Binary files /dev/null and b/public/terrain/19/858563/353910.terrain differ diff --git a/public/terrain/19/858563/353911.terrain b/public/terrain/19/858563/353911.terrain new file mode 100644 index 000000000..1819c4943 Binary files /dev/null and b/public/terrain/19/858563/353911.terrain differ diff --git a/public/terrain/19/858563/353912.terrain b/public/terrain/19/858563/353912.terrain new file mode 100644 index 000000000..e6aafad80 Binary files /dev/null and b/public/terrain/19/858563/353912.terrain differ diff --git a/public/terrain/19/858563/353913.terrain b/public/terrain/19/858563/353913.terrain new file mode 100644 index 000000000..56a80f8d5 Binary files /dev/null and b/public/terrain/19/858563/353913.terrain differ diff --git a/public/terrain/19/858563/353914.terrain b/public/terrain/19/858563/353914.terrain new file mode 100644 index 000000000..98cc9b257 Binary files /dev/null and b/public/terrain/19/858563/353914.terrain differ diff --git a/public/terrain/19/858563/353915.terrain b/public/terrain/19/858563/353915.terrain new file mode 100644 index 000000000..e57f9be65 Binary files /dev/null and b/public/terrain/19/858563/353915.terrain differ diff --git a/public/terrain/19/858563/353916.terrain b/public/terrain/19/858563/353916.terrain new file mode 100644 index 000000000..e9004cda6 Binary files /dev/null and b/public/terrain/19/858563/353916.terrain differ diff --git a/public/terrain/19/858563/353917.terrain b/public/terrain/19/858563/353917.terrain new file mode 100644 index 000000000..71d89c15a Binary files /dev/null and b/public/terrain/19/858563/353917.terrain differ diff --git a/public/terrain/19/858563/353918.terrain b/public/terrain/19/858563/353918.terrain new file mode 100644 index 000000000..a1c2ee678 Binary files /dev/null and b/public/terrain/19/858563/353918.terrain differ diff --git a/public/terrain/19/858563/353919.terrain b/public/terrain/19/858563/353919.terrain new file mode 100644 index 000000000..19a8925d9 Binary files /dev/null and b/public/terrain/19/858563/353919.terrain differ diff --git a/public/terrain/19/858563/353920.terrain b/public/terrain/19/858563/353920.terrain new file mode 100644 index 000000000..9dc3195f8 Binary files /dev/null and b/public/terrain/19/858563/353920.terrain differ diff --git a/public/terrain/19/858563/353921.terrain b/public/terrain/19/858563/353921.terrain new file mode 100644 index 000000000..67f554518 Binary files /dev/null and b/public/terrain/19/858563/353921.terrain differ diff --git a/public/terrain/19/858563/353922.terrain b/public/terrain/19/858563/353922.terrain new file mode 100644 index 000000000..302516465 Binary files /dev/null and b/public/terrain/19/858563/353922.terrain differ diff --git a/public/terrain/19/858563/353923.terrain b/public/terrain/19/858563/353923.terrain new file mode 100644 index 000000000..bf0f21c8e Binary files /dev/null and b/public/terrain/19/858563/353923.terrain differ diff --git a/public/terrain/19/858563/353924.terrain b/public/terrain/19/858563/353924.terrain new file mode 100644 index 000000000..1ca74e8ff Binary files /dev/null and b/public/terrain/19/858563/353924.terrain differ diff --git a/public/terrain/19/858563/353925.terrain b/public/terrain/19/858563/353925.terrain new file mode 100644 index 000000000..120d90fd4 Binary files /dev/null and b/public/terrain/19/858563/353925.terrain differ diff --git a/public/terrain/19/858563/353926.terrain b/public/terrain/19/858563/353926.terrain new file mode 100644 index 000000000..42c37d107 Binary files /dev/null and b/public/terrain/19/858563/353926.terrain differ diff --git a/public/terrain/19/858563/353927.terrain b/public/terrain/19/858563/353927.terrain new file mode 100644 index 000000000..fddd720c0 Binary files /dev/null and b/public/terrain/19/858563/353927.terrain differ diff --git a/public/terrain/19/858563/353928.terrain b/public/terrain/19/858563/353928.terrain new file mode 100644 index 000000000..f3026b14d Binary files /dev/null and b/public/terrain/19/858563/353928.terrain differ diff --git a/public/terrain/19/858563/353929.terrain b/public/terrain/19/858563/353929.terrain new file mode 100644 index 000000000..67ee058de Binary files /dev/null and b/public/terrain/19/858563/353929.terrain differ diff --git a/public/terrain/19/858563/353930.terrain b/public/terrain/19/858563/353930.terrain new file mode 100644 index 000000000..0968d224c Binary files /dev/null and b/public/terrain/19/858563/353930.terrain differ diff --git a/public/terrain/19/858563/353931.terrain b/public/terrain/19/858563/353931.terrain new file mode 100644 index 000000000..d38f91d93 Binary files /dev/null and b/public/terrain/19/858563/353931.terrain differ diff --git a/public/terrain/19/858563/353932.terrain b/public/terrain/19/858563/353932.terrain new file mode 100644 index 000000000..7c2bfdf57 Binary files /dev/null and b/public/terrain/19/858563/353932.terrain differ diff --git a/public/terrain/19/858563/353933.terrain b/public/terrain/19/858563/353933.terrain new file mode 100644 index 000000000..18cb4e3d3 Binary files /dev/null and b/public/terrain/19/858563/353933.terrain differ diff --git a/public/terrain/19/858563/353934.terrain b/public/terrain/19/858563/353934.terrain new file mode 100644 index 000000000..02097972d Binary files /dev/null and b/public/terrain/19/858563/353934.terrain differ diff --git a/public/terrain/19/858563/353935.terrain b/public/terrain/19/858563/353935.terrain new file mode 100644 index 000000000..4c0d9ea84 Binary files /dev/null and b/public/terrain/19/858563/353935.terrain differ diff --git a/public/terrain/19/858563/353936.terrain b/public/terrain/19/858563/353936.terrain new file mode 100644 index 000000000..bcab3078c Binary files /dev/null and b/public/terrain/19/858563/353936.terrain differ diff --git a/public/terrain/19/858563/353937.terrain b/public/terrain/19/858563/353937.terrain new file mode 100644 index 000000000..946295887 Binary files /dev/null and b/public/terrain/19/858563/353937.terrain differ diff --git a/public/terrain/19/858563/353938.terrain b/public/terrain/19/858563/353938.terrain new file mode 100644 index 000000000..012355438 Binary files /dev/null and b/public/terrain/19/858563/353938.terrain differ diff --git a/public/terrain/19/858563/353939.terrain b/public/terrain/19/858563/353939.terrain new file mode 100644 index 000000000..6e7c3aa88 Binary files /dev/null and b/public/terrain/19/858563/353939.terrain differ diff --git a/public/terrain/19/858563/353940.terrain b/public/terrain/19/858563/353940.terrain new file mode 100644 index 000000000..0fd32972c Binary files /dev/null and b/public/terrain/19/858563/353940.terrain differ diff --git a/public/terrain/19/858563/353941.terrain b/public/terrain/19/858563/353941.terrain new file mode 100644 index 000000000..7db181e92 Binary files /dev/null and b/public/terrain/19/858563/353941.terrain differ diff --git a/public/terrain/19/858563/353942.terrain b/public/terrain/19/858563/353942.terrain new file mode 100644 index 000000000..24ce0aa95 Binary files /dev/null and b/public/terrain/19/858563/353942.terrain differ diff --git a/public/terrain/19/858563/353943.terrain b/public/terrain/19/858563/353943.terrain new file mode 100644 index 000000000..1fb7204eb Binary files /dev/null and b/public/terrain/19/858563/353943.terrain differ diff --git a/public/terrain/19/858563/353944.terrain b/public/terrain/19/858563/353944.terrain new file mode 100644 index 000000000..c00df95b8 Binary files /dev/null and b/public/terrain/19/858563/353944.terrain differ diff --git a/public/terrain/19/858563/353945.terrain b/public/terrain/19/858563/353945.terrain new file mode 100644 index 000000000..ec496c5ea Binary files /dev/null and b/public/terrain/19/858563/353945.terrain differ diff --git a/public/terrain/19/858563/353946.terrain b/public/terrain/19/858563/353946.terrain new file mode 100644 index 000000000..60beb37ff Binary files /dev/null and b/public/terrain/19/858563/353946.terrain differ diff --git a/public/terrain/19/858563/353947.terrain b/public/terrain/19/858563/353947.terrain new file mode 100644 index 000000000..4b1ccecbb Binary files /dev/null and b/public/terrain/19/858563/353947.terrain differ diff --git a/public/terrain/19/858563/353948.terrain b/public/terrain/19/858563/353948.terrain new file mode 100644 index 000000000..0437aa871 Binary files /dev/null and b/public/terrain/19/858563/353948.terrain differ diff --git a/public/terrain/19/858563/353949.terrain b/public/terrain/19/858563/353949.terrain new file mode 100644 index 000000000..75c0ad9b1 Binary files /dev/null and b/public/terrain/19/858563/353949.terrain differ diff --git a/public/terrain/19/858563/353950.terrain b/public/terrain/19/858563/353950.terrain new file mode 100644 index 000000000..d4b0ca769 Binary files /dev/null and b/public/terrain/19/858563/353950.terrain differ diff --git a/public/terrain/19/858563/353951.terrain b/public/terrain/19/858563/353951.terrain new file mode 100644 index 000000000..b2ce6ab0a Binary files /dev/null and b/public/terrain/19/858563/353951.terrain differ diff --git a/public/terrain/19/858563/353952.terrain b/public/terrain/19/858563/353952.terrain new file mode 100644 index 000000000..25241fab8 Binary files /dev/null and b/public/terrain/19/858563/353952.terrain differ diff --git a/public/terrain/19/858563/353953.terrain b/public/terrain/19/858563/353953.terrain new file mode 100644 index 000000000..a3e700d36 Binary files /dev/null and b/public/terrain/19/858563/353953.terrain differ diff --git a/public/terrain/19/858563/353954.terrain b/public/terrain/19/858563/353954.terrain new file mode 100644 index 000000000..60e4d81c4 Binary files /dev/null and b/public/terrain/19/858563/353954.terrain differ diff --git a/public/terrain/19/858563/353955.terrain b/public/terrain/19/858563/353955.terrain new file mode 100644 index 000000000..218d24c23 Binary files /dev/null and b/public/terrain/19/858563/353955.terrain differ diff --git a/public/terrain/19/858563/353956.terrain b/public/terrain/19/858563/353956.terrain new file mode 100644 index 000000000..e177af1da Binary files /dev/null and b/public/terrain/19/858563/353956.terrain differ diff --git a/public/terrain/19/858563/353957.terrain b/public/terrain/19/858563/353957.terrain new file mode 100644 index 000000000..384aafcf7 Binary files /dev/null and b/public/terrain/19/858563/353957.terrain differ diff --git a/public/terrain/19/858563/353958.terrain b/public/terrain/19/858563/353958.terrain new file mode 100644 index 000000000..40f7711e1 Binary files /dev/null and b/public/terrain/19/858563/353958.terrain differ diff --git a/public/terrain/19/858563/353959.terrain b/public/terrain/19/858563/353959.terrain new file mode 100644 index 000000000..d1f21079b Binary files /dev/null and b/public/terrain/19/858563/353959.terrain differ diff --git a/public/terrain/19/858563/353960.terrain b/public/terrain/19/858563/353960.terrain new file mode 100644 index 000000000..2a7c1b785 Binary files /dev/null and b/public/terrain/19/858563/353960.terrain differ diff --git a/public/terrain/19/858563/353961.terrain b/public/terrain/19/858563/353961.terrain new file mode 100644 index 000000000..0e7dbc101 Binary files /dev/null and b/public/terrain/19/858563/353961.terrain differ diff --git a/public/terrain/19/858563/353962.terrain b/public/terrain/19/858563/353962.terrain new file mode 100644 index 000000000..7d94b612f Binary files /dev/null and b/public/terrain/19/858563/353962.terrain differ diff --git a/public/terrain/19/858563/353963.terrain b/public/terrain/19/858563/353963.terrain new file mode 100644 index 000000000..45c9eb0ce Binary files /dev/null and b/public/terrain/19/858563/353963.terrain differ diff --git a/public/terrain/19/858563/353964.terrain b/public/terrain/19/858563/353964.terrain new file mode 100644 index 000000000..68b61697a Binary files /dev/null and b/public/terrain/19/858563/353964.terrain differ diff --git a/public/terrain/19/858563/353965.terrain b/public/terrain/19/858563/353965.terrain new file mode 100644 index 000000000..8335a914b Binary files /dev/null and b/public/terrain/19/858563/353965.terrain differ diff --git a/public/terrain/19/858563/353966.terrain b/public/terrain/19/858563/353966.terrain new file mode 100644 index 000000000..24f0652e7 Binary files /dev/null and b/public/terrain/19/858563/353966.terrain differ diff --git a/public/terrain/19/858563/353967.terrain b/public/terrain/19/858563/353967.terrain new file mode 100644 index 000000000..71dc193cf Binary files /dev/null and b/public/terrain/19/858563/353967.terrain differ diff --git a/public/terrain/19/858563/353968.terrain b/public/terrain/19/858563/353968.terrain new file mode 100644 index 000000000..8fe3e3dba Binary files /dev/null and b/public/terrain/19/858563/353968.terrain differ diff --git a/public/terrain/19/858563/353969.terrain b/public/terrain/19/858563/353969.terrain new file mode 100644 index 000000000..3cf970f98 Binary files /dev/null and b/public/terrain/19/858563/353969.terrain differ diff --git a/public/terrain/19/858563/353970.terrain b/public/terrain/19/858563/353970.terrain new file mode 100644 index 000000000..5198fbcf6 Binary files /dev/null and b/public/terrain/19/858563/353970.terrain differ diff --git a/public/terrain/19/858563/353971.terrain b/public/terrain/19/858563/353971.terrain new file mode 100644 index 000000000..95f613f08 Binary files /dev/null and b/public/terrain/19/858563/353971.terrain differ diff --git a/public/terrain/19/858563/353972.terrain b/public/terrain/19/858563/353972.terrain new file mode 100644 index 000000000..979813b88 Binary files /dev/null and b/public/terrain/19/858563/353972.terrain differ diff --git a/public/terrain/19/858563/353973.terrain b/public/terrain/19/858563/353973.terrain new file mode 100644 index 000000000..24e0483cb Binary files /dev/null and b/public/terrain/19/858563/353973.terrain differ diff --git a/public/terrain/19/858563/353974.terrain b/public/terrain/19/858563/353974.terrain new file mode 100644 index 000000000..f4668062b Binary files /dev/null and b/public/terrain/19/858563/353974.terrain differ diff --git a/public/terrain/19/858563/353975.terrain b/public/terrain/19/858563/353975.terrain new file mode 100644 index 000000000..1db4acfb8 Binary files /dev/null and b/public/terrain/19/858563/353975.terrain differ diff --git a/public/terrain/19/858563/353976.terrain b/public/terrain/19/858563/353976.terrain new file mode 100644 index 000000000..545c5e6be Binary files /dev/null and b/public/terrain/19/858563/353976.terrain differ diff --git a/public/terrain/19/858563/353977.terrain b/public/terrain/19/858563/353977.terrain new file mode 100644 index 000000000..13f0d3191 Binary files /dev/null and b/public/terrain/19/858563/353977.terrain differ diff --git a/public/terrain/19/858563/353978.terrain b/public/terrain/19/858563/353978.terrain new file mode 100644 index 000000000..a4f2b6d84 Binary files /dev/null and b/public/terrain/19/858563/353978.terrain differ diff --git a/public/terrain/19/858563/353979.terrain b/public/terrain/19/858563/353979.terrain new file mode 100644 index 000000000..b8cd334d4 Binary files /dev/null and b/public/terrain/19/858563/353979.terrain differ diff --git a/public/terrain/19/858563/353980.terrain b/public/terrain/19/858563/353980.terrain new file mode 100644 index 000000000..04a2df842 Binary files /dev/null and b/public/terrain/19/858563/353980.terrain differ diff --git a/public/terrain/19/858563/353981.terrain b/public/terrain/19/858563/353981.terrain new file mode 100644 index 000000000..b3d0a1bf9 Binary files /dev/null and b/public/terrain/19/858563/353981.terrain differ diff --git a/public/terrain/19/858563/353982.terrain b/public/terrain/19/858563/353982.terrain new file mode 100644 index 000000000..39683f354 Binary files /dev/null and b/public/terrain/19/858563/353982.terrain differ diff --git a/public/terrain/19/858563/353983.terrain b/public/terrain/19/858563/353983.terrain new file mode 100644 index 000000000..fb539cc65 Binary files /dev/null and b/public/terrain/19/858563/353983.terrain differ diff --git a/public/terrain/19/858563/353984.terrain b/public/terrain/19/858563/353984.terrain new file mode 100644 index 000000000..56715e778 Binary files /dev/null and b/public/terrain/19/858563/353984.terrain differ diff --git a/public/terrain/19/858563/353985.terrain b/public/terrain/19/858563/353985.terrain new file mode 100644 index 000000000..b5d8c00a7 Binary files /dev/null and b/public/terrain/19/858563/353985.terrain differ diff --git a/public/terrain/19/858563/353986.terrain b/public/terrain/19/858563/353986.terrain new file mode 100644 index 000000000..aa01a6143 Binary files /dev/null and b/public/terrain/19/858563/353986.terrain differ diff --git a/public/terrain/19/858563/353987.terrain b/public/terrain/19/858563/353987.terrain new file mode 100644 index 000000000..f691ec2e9 Binary files /dev/null and b/public/terrain/19/858563/353987.terrain differ diff --git a/public/terrain/19/858563/353988.terrain b/public/terrain/19/858563/353988.terrain new file mode 100644 index 000000000..e33d5d313 Binary files /dev/null and b/public/terrain/19/858563/353988.terrain differ diff --git a/public/terrain/19/858563/353989.terrain b/public/terrain/19/858563/353989.terrain new file mode 100644 index 000000000..6e3d0eeb2 Binary files /dev/null and b/public/terrain/19/858563/353989.terrain differ diff --git a/public/terrain/19/858563/353990.terrain b/public/terrain/19/858563/353990.terrain new file mode 100644 index 000000000..0811bdbe6 Binary files /dev/null and b/public/terrain/19/858563/353990.terrain differ diff --git a/public/terrain/19/858563/353991.terrain b/public/terrain/19/858563/353991.terrain new file mode 100644 index 000000000..36cb7b76d Binary files /dev/null and b/public/terrain/19/858563/353991.terrain differ diff --git a/public/terrain/19/858563/353992.terrain b/public/terrain/19/858563/353992.terrain new file mode 100644 index 000000000..8a326f9ac Binary files /dev/null and b/public/terrain/19/858563/353992.terrain differ diff --git a/public/terrain/19/858563/353993.terrain b/public/terrain/19/858563/353993.terrain new file mode 100644 index 000000000..0ed9f157d Binary files /dev/null and b/public/terrain/19/858563/353993.terrain differ diff --git a/public/terrain/19/858563/353994.terrain b/public/terrain/19/858563/353994.terrain new file mode 100644 index 000000000..42f5beccc Binary files /dev/null and b/public/terrain/19/858563/353994.terrain differ diff --git a/public/terrain/19/858563/353995.terrain b/public/terrain/19/858563/353995.terrain new file mode 100644 index 000000000..b431d6273 Binary files /dev/null and b/public/terrain/19/858563/353995.terrain differ diff --git a/public/terrain/19/858563/353996.terrain b/public/terrain/19/858563/353996.terrain new file mode 100644 index 000000000..aba87082a Binary files /dev/null and b/public/terrain/19/858563/353996.terrain differ diff --git a/public/terrain/19/858563/353997.terrain b/public/terrain/19/858563/353997.terrain new file mode 100644 index 000000000..e7bbab63f Binary files /dev/null and b/public/terrain/19/858563/353997.terrain differ diff --git a/public/terrain/19/858563/353998.terrain b/public/terrain/19/858563/353998.terrain new file mode 100644 index 000000000..aa31eca6e Binary files /dev/null and b/public/terrain/19/858563/353998.terrain differ diff --git a/public/terrain/19/858563/353999.terrain b/public/terrain/19/858563/353999.terrain new file mode 100644 index 000000000..9a9cbcf42 Binary files /dev/null and b/public/terrain/19/858563/353999.terrain differ diff --git a/public/terrain/19/858563/354000.terrain b/public/terrain/19/858563/354000.terrain new file mode 100644 index 000000000..3f16e1c95 Binary files /dev/null and b/public/terrain/19/858563/354000.terrain differ diff --git a/public/terrain/19/858563/354001.terrain b/public/terrain/19/858563/354001.terrain new file mode 100644 index 000000000..7e492f729 Binary files /dev/null and b/public/terrain/19/858563/354001.terrain differ diff --git a/public/terrain/19/858563/354002.terrain b/public/terrain/19/858563/354002.terrain new file mode 100644 index 000000000..d3bf1a702 Binary files /dev/null and b/public/terrain/19/858563/354002.terrain differ diff --git a/public/terrain/19/858563/354003.terrain b/public/terrain/19/858563/354003.terrain new file mode 100644 index 000000000..6e06d0b3e Binary files /dev/null and b/public/terrain/19/858563/354003.terrain differ diff --git a/public/terrain/19/858563/354004.terrain b/public/terrain/19/858563/354004.terrain new file mode 100644 index 000000000..7b763d11f Binary files /dev/null and b/public/terrain/19/858563/354004.terrain differ diff --git a/public/terrain/19/858563/354005.terrain b/public/terrain/19/858563/354005.terrain new file mode 100644 index 000000000..f788262c8 Binary files /dev/null and b/public/terrain/19/858563/354005.terrain differ diff --git a/public/terrain/19/858563/354006.terrain b/public/terrain/19/858563/354006.terrain new file mode 100644 index 000000000..0352df132 Binary files /dev/null and b/public/terrain/19/858563/354006.terrain differ diff --git a/public/terrain/19/858563/354007.terrain b/public/terrain/19/858563/354007.terrain new file mode 100644 index 000000000..6e86eb31d Binary files /dev/null and b/public/terrain/19/858563/354007.terrain differ diff --git a/public/terrain/19/858563/354008.terrain b/public/terrain/19/858563/354008.terrain new file mode 100644 index 000000000..152e3da76 Binary files /dev/null and b/public/terrain/19/858563/354008.terrain differ diff --git a/public/terrain/19/858563/354009.terrain b/public/terrain/19/858563/354009.terrain new file mode 100644 index 000000000..961b0157c Binary files /dev/null and b/public/terrain/19/858563/354009.terrain differ diff --git a/public/terrain/19/858563/354010.terrain b/public/terrain/19/858563/354010.terrain new file mode 100644 index 000000000..0f6be2e64 Binary files /dev/null and b/public/terrain/19/858563/354010.terrain differ diff --git a/public/terrain/19/858563/354011.terrain b/public/terrain/19/858563/354011.terrain new file mode 100644 index 000000000..e9e172aac Binary files /dev/null and b/public/terrain/19/858563/354011.terrain differ diff --git a/public/terrain/19/858563/354012.terrain b/public/terrain/19/858563/354012.terrain new file mode 100644 index 000000000..b6ea8d517 Binary files /dev/null and b/public/terrain/19/858563/354012.terrain differ diff --git a/public/terrain/19/858563/354013.terrain b/public/terrain/19/858563/354013.terrain new file mode 100644 index 000000000..49f4d9aa6 Binary files /dev/null and b/public/terrain/19/858563/354013.terrain differ diff --git a/public/terrain/19/858563/354014.terrain b/public/terrain/19/858563/354014.terrain new file mode 100644 index 000000000..989e82263 Binary files /dev/null and b/public/terrain/19/858563/354014.terrain differ diff --git a/public/terrain/19/858563/354015.terrain b/public/terrain/19/858563/354015.terrain new file mode 100644 index 000000000..b43cff569 Binary files /dev/null and b/public/terrain/19/858563/354015.terrain differ diff --git a/public/terrain/19/858563/354016.terrain b/public/terrain/19/858563/354016.terrain new file mode 100644 index 000000000..2496ea6e9 Binary files /dev/null and b/public/terrain/19/858563/354016.terrain differ diff --git a/public/terrain/19/858563/354017.terrain b/public/terrain/19/858563/354017.terrain new file mode 100644 index 000000000..76f56d2a6 Binary files /dev/null and b/public/terrain/19/858563/354017.terrain differ diff --git a/public/terrain/19/858563/354018.terrain b/public/terrain/19/858563/354018.terrain new file mode 100644 index 000000000..4d635f3c4 Binary files /dev/null and b/public/terrain/19/858563/354018.terrain differ diff --git a/public/terrain/19/858563/354019.terrain b/public/terrain/19/858563/354019.terrain new file mode 100644 index 000000000..8b87c328b Binary files /dev/null and b/public/terrain/19/858563/354019.terrain differ diff --git a/public/terrain/19/858563/354020.terrain b/public/terrain/19/858563/354020.terrain new file mode 100644 index 000000000..1041354cd Binary files /dev/null and b/public/terrain/19/858563/354020.terrain differ diff --git a/public/terrain/19/858563/354021.terrain b/public/terrain/19/858563/354021.terrain new file mode 100644 index 000000000..8dcbfade3 Binary files /dev/null and b/public/terrain/19/858563/354021.terrain differ diff --git a/public/terrain/19/858563/354022.terrain b/public/terrain/19/858563/354022.terrain new file mode 100644 index 000000000..1048def9d Binary files /dev/null and b/public/terrain/19/858563/354022.terrain differ diff --git a/public/terrain/19/858563/354023.terrain b/public/terrain/19/858563/354023.terrain new file mode 100644 index 000000000..b5497edee Binary files /dev/null and b/public/terrain/19/858563/354023.terrain differ diff --git a/public/terrain/19/858563/354024.terrain b/public/terrain/19/858563/354024.terrain new file mode 100644 index 000000000..86f02ddd1 Binary files /dev/null and b/public/terrain/19/858563/354024.terrain differ diff --git a/public/terrain/19/858563/354025.terrain b/public/terrain/19/858563/354025.terrain new file mode 100644 index 000000000..ae306f87b Binary files /dev/null and b/public/terrain/19/858563/354025.terrain differ diff --git a/public/terrain/19/858563/354026.terrain b/public/terrain/19/858563/354026.terrain new file mode 100644 index 000000000..002fd6032 Binary files /dev/null and b/public/terrain/19/858563/354026.terrain differ diff --git a/public/terrain/19/858563/354027.terrain b/public/terrain/19/858563/354027.terrain new file mode 100644 index 000000000..108c7b616 Binary files /dev/null and b/public/terrain/19/858563/354027.terrain differ diff --git a/public/terrain/19/858563/354028.terrain b/public/terrain/19/858563/354028.terrain new file mode 100644 index 000000000..36979c559 Binary files /dev/null and b/public/terrain/19/858563/354028.terrain differ diff --git a/public/terrain/19/858563/354029.terrain b/public/terrain/19/858563/354029.terrain new file mode 100644 index 000000000..ce0effe1a Binary files /dev/null and b/public/terrain/19/858563/354029.terrain differ diff --git a/public/terrain/19/858563/354030.terrain b/public/terrain/19/858563/354030.terrain new file mode 100644 index 000000000..8ca8a3100 Binary files /dev/null and b/public/terrain/19/858563/354030.terrain differ diff --git a/public/terrain/19/858563/354031.terrain b/public/terrain/19/858563/354031.terrain new file mode 100644 index 000000000..e1a91d073 Binary files /dev/null and b/public/terrain/19/858563/354031.terrain differ diff --git a/public/terrain/19/858563/354032.terrain b/public/terrain/19/858563/354032.terrain new file mode 100644 index 000000000..c58d6358e Binary files /dev/null and b/public/terrain/19/858563/354032.terrain differ diff --git a/public/terrain/19/858563/354033.terrain b/public/terrain/19/858563/354033.terrain new file mode 100644 index 000000000..0dbad0505 Binary files /dev/null and b/public/terrain/19/858563/354033.terrain differ diff --git a/public/terrain/19/858563/354034.terrain b/public/terrain/19/858563/354034.terrain new file mode 100644 index 000000000..c66e8e548 Binary files /dev/null and b/public/terrain/19/858563/354034.terrain differ diff --git a/public/terrain/19/858563/354035.terrain b/public/terrain/19/858563/354035.terrain new file mode 100644 index 000000000..de40f8f95 Binary files /dev/null and b/public/terrain/19/858563/354035.terrain differ diff --git a/public/terrain/19/858563/354036.terrain b/public/terrain/19/858563/354036.terrain new file mode 100644 index 000000000..4acfb4fbe Binary files /dev/null and b/public/terrain/19/858563/354036.terrain differ diff --git a/public/terrain/19/858563/354037.terrain b/public/terrain/19/858563/354037.terrain new file mode 100644 index 000000000..1d623f98d Binary files /dev/null and b/public/terrain/19/858563/354037.terrain differ diff --git a/public/terrain/19/858563/354038.terrain b/public/terrain/19/858563/354038.terrain new file mode 100644 index 000000000..7e6c147fe Binary files /dev/null and b/public/terrain/19/858563/354038.terrain differ diff --git a/public/terrain/19/858563/354039.terrain b/public/terrain/19/858563/354039.terrain new file mode 100644 index 000000000..81f1d3506 Binary files /dev/null and b/public/terrain/19/858563/354039.terrain differ diff --git a/public/terrain/19/858563/354040.terrain b/public/terrain/19/858563/354040.terrain new file mode 100644 index 000000000..9dea22ee5 Binary files /dev/null and b/public/terrain/19/858563/354040.terrain differ diff --git a/public/terrain/19/858563/354041.terrain b/public/terrain/19/858563/354041.terrain new file mode 100644 index 000000000..cedc7c68e Binary files /dev/null and b/public/terrain/19/858563/354041.terrain differ diff --git a/public/terrain/19/858563/354042.terrain b/public/terrain/19/858563/354042.terrain new file mode 100644 index 000000000..64b1759df Binary files /dev/null and b/public/terrain/19/858563/354042.terrain differ diff --git a/public/terrain/19/858563/354043.terrain b/public/terrain/19/858563/354043.terrain new file mode 100644 index 000000000..1bf173151 Binary files /dev/null and b/public/terrain/19/858563/354043.terrain differ diff --git a/public/terrain/19/858563/354044.terrain b/public/terrain/19/858563/354044.terrain new file mode 100644 index 000000000..0b69e66f9 Binary files /dev/null and b/public/terrain/19/858563/354044.terrain differ diff --git a/public/terrain/19/858563/354045.terrain b/public/terrain/19/858563/354045.terrain new file mode 100644 index 000000000..3ad500c0c Binary files /dev/null and b/public/terrain/19/858563/354045.terrain differ diff --git a/public/terrain/19/858563/354046.terrain b/public/terrain/19/858563/354046.terrain new file mode 100644 index 000000000..c00457203 Binary files /dev/null and b/public/terrain/19/858563/354046.terrain differ diff --git a/public/terrain/19/858563/354047.terrain b/public/terrain/19/858563/354047.terrain new file mode 100644 index 000000000..bdb3e2df1 Binary files /dev/null and b/public/terrain/19/858563/354047.terrain differ diff --git a/public/terrain/19/858563/354048.terrain b/public/terrain/19/858563/354048.terrain new file mode 100644 index 000000000..1883961ef Binary files /dev/null and b/public/terrain/19/858563/354048.terrain differ diff --git a/public/terrain/19/858563/354049.terrain b/public/terrain/19/858563/354049.terrain new file mode 100644 index 000000000..48d930e27 Binary files /dev/null and b/public/terrain/19/858563/354049.terrain differ diff --git a/public/terrain/19/858563/354050.terrain b/public/terrain/19/858563/354050.terrain new file mode 100644 index 000000000..7207b41d2 Binary files /dev/null and b/public/terrain/19/858563/354050.terrain differ diff --git a/public/terrain/19/858563/354051.terrain b/public/terrain/19/858563/354051.terrain new file mode 100644 index 000000000..a707e82a6 Binary files /dev/null and b/public/terrain/19/858563/354051.terrain differ diff --git a/public/terrain/19/858563/354052.terrain b/public/terrain/19/858563/354052.terrain new file mode 100644 index 000000000..bf97b29e9 Binary files /dev/null and b/public/terrain/19/858563/354052.terrain differ diff --git a/public/terrain/19/858563/354053.terrain b/public/terrain/19/858563/354053.terrain new file mode 100644 index 000000000..4c5ce909b Binary files /dev/null and b/public/terrain/19/858563/354053.terrain differ diff --git a/public/terrain/19/858563/354054.terrain b/public/terrain/19/858563/354054.terrain new file mode 100644 index 000000000..188478520 Binary files /dev/null and b/public/terrain/19/858563/354054.terrain differ diff --git a/public/terrain/19/858563/354055.terrain b/public/terrain/19/858563/354055.terrain new file mode 100644 index 000000000..df82ee3c2 Binary files /dev/null and b/public/terrain/19/858563/354055.terrain differ diff --git a/public/terrain/19/858563/354056.terrain b/public/terrain/19/858563/354056.terrain new file mode 100644 index 000000000..55f096e78 Binary files /dev/null and b/public/terrain/19/858563/354056.terrain differ diff --git a/public/terrain/19/858563/354057.terrain b/public/terrain/19/858563/354057.terrain new file mode 100644 index 000000000..0f495daf6 Binary files /dev/null and b/public/terrain/19/858563/354057.terrain differ diff --git a/public/terrain/19/858563/354058.terrain b/public/terrain/19/858563/354058.terrain new file mode 100644 index 000000000..d6a75d243 Binary files /dev/null and b/public/terrain/19/858563/354058.terrain differ diff --git a/public/terrain/19/858563/354059.terrain b/public/terrain/19/858563/354059.terrain new file mode 100644 index 000000000..2d5230c7e Binary files /dev/null and b/public/terrain/19/858563/354059.terrain differ diff --git a/public/terrain/19/858564/353743.terrain b/public/terrain/19/858564/353743.terrain new file mode 100644 index 000000000..ac7194b82 Binary files /dev/null and b/public/terrain/19/858564/353743.terrain differ diff --git a/public/terrain/19/858564/353744.terrain b/public/terrain/19/858564/353744.terrain new file mode 100644 index 000000000..4fecb079d Binary files /dev/null and b/public/terrain/19/858564/353744.terrain differ diff --git a/public/terrain/19/858564/353745.terrain b/public/terrain/19/858564/353745.terrain new file mode 100644 index 000000000..ab9625d3a Binary files /dev/null and b/public/terrain/19/858564/353745.terrain differ diff --git a/public/terrain/19/858564/353746.terrain b/public/terrain/19/858564/353746.terrain new file mode 100644 index 000000000..6a01c85ff Binary files /dev/null and b/public/terrain/19/858564/353746.terrain differ diff --git a/public/terrain/19/858564/353747.terrain b/public/terrain/19/858564/353747.terrain new file mode 100644 index 000000000..6bccae69a Binary files /dev/null and b/public/terrain/19/858564/353747.terrain differ diff --git a/public/terrain/19/858564/353748.terrain b/public/terrain/19/858564/353748.terrain new file mode 100644 index 000000000..ef9d9f6ba Binary files /dev/null and b/public/terrain/19/858564/353748.terrain differ diff --git a/public/terrain/19/858564/353749.terrain b/public/terrain/19/858564/353749.terrain new file mode 100644 index 000000000..ef16f9f72 Binary files /dev/null and b/public/terrain/19/858564/353749.terrain differ diff --git a/public/terrain/19/858564/353750.terrain b/public/terrain/19/858564/353750.terrain new file mode 100644 index 000000000..e290c017d Binary files /dev/null and b/public/terrain/19/858564/353750.terrain differ diff --git a/public/terrain/19/858564/353751.terrain b/public/terrain/19/858564/353751.terrain new file mode 100644 index 000000000..d9c0d4ef9 Binary files /dev/null and b/public/terrain/19/858564/353751.terrain differ diff --git a/public/terrain/19/858564/353752.terrain b/public/terrain/19/858564/353752.terrain new file mode 100644 index 000000000..7c3f711ab Binary files /dev/null and b/public/terrain/19/858564/353752.terrain differ diff --git a/public/terrain/19/858564/353753.terrain b/public/terrain/19/858564/353753.terrain new file mode 100644 index 000000000..44775cab1 Binary files /dev/null and b/public/terrain/19/858564/353753.terrain differ diff --git a/public/terrain/19/858564/353754.terrain b/public/terrain/19/858564/353754.terrain new file mode 100644 index 000000000..40638792e Binary files /dev/null and b/public/terrain/19/858564/353754.terrain differ diff --git a/public/terrain/19/858564/353755.terrain b/public/terrain/19/858564/353755.terrain new file mode 100644 index 000000000..693595c62 Binary files /dev/null and b/public/terrain/19/858564/353755.terrain differ diff --git a/public/terrain/19/858564/353756.terrain b/public/terrain/19/858564/353756.terrain new file mode 100644 index 000000000..f9d1e05c5 Binary files /dev/null and b/public/terrain/19/858564/353756.terrain differ diff --git a/public/terrain/19/858564/353757.terrain b/public/terrain/19/858564/353757.terrain new file mode 100644 index 000000000..41f7aeea7 Binary files /dev/null and b/public/terrain/19/858564/353757.terrain differ diff --git a/public/terrain/19/858564/353758.terrain b/public/terrain/19/858564/353758.terrain new file mode 100644 index 000000000..88f650f7f Binary files /dev/null and b/public/terrain/19/858564/353758.terrain differ diff --git a/public/terrain/19/858564/353759.terrain b/public/terrain/19/858564/353759.terrain new file mode 100644 index 000000000..3aaeb2daf Binary files /dev/null and b/public/terrain/19/858564/353759.terrain differ diff --git a/public/terrain/19/858564/353760.terrain b/public/terrain/19/858564/353760.terrain new file mode 100644 index 000000000..502849a0d Binary files /dev/null and b/public/terrain/19/858564/353760.terrain differ diff --git a/public/terrain/19/858564/353761.terrain b/public/terrain/19/858564/353761.terrain new file mode 100644 index 000000000..328f7057f Binary files /dev/null and b/public/terrain/19/858564/353761.terrain differ diff --git a/public/terrain/19/858564/353762.terrain b/public/terrain/19/858564/353762.terrain new file mode 100644 index 000000000..8b5a4d228 Binary files /dev/null and b/public/terrain/19/858564/353762.terrain differ diff --git a/public/terrain/19/858564/353763.terrain b/public/terrain/19/858564/353763.terrain new file mode 100644 index 000000000..14d3e2e2f Binary files /dev/null and b/public/terrain/19/858564/353763.terrain differ diff --git a/public/terrain/19/858564/353764.terrain b/public/terrain/19/858564/353764.terrain new file mode 100644 index 000000000..52d1b727c Binary files /dev/null and b/public/terrain/19/858564/353764.terrain differ diff --git a/public/terrain/19/858564/353765.terrain b/public/terrain/19/858564/353765.terrain new file mode 100644 index 000000000..3e2ee3765 Binary files /dev/null and b/public/terrain/19/858564/353765.terrain differ diff --git a/public/terrain/19/858564/353766.terrain b/public/terrain/19/858564/353766.terrain new file mode 100644 index 000000000..1dfcb1b51 Binary files /dev/null and b/public/terrain/19/858564/353766.terrain differ diff --git a/public/terrain/19/858564/353767.terrain b/public/terrain/19/858564/353767.terrain new file mode 100644 index 000000000..f2bb66a3f Binary files /dev/null and b/public/terrain/19/858564/353767.terrain differ diff --git a/public/terrain/19/858564/353768.terrain b/public/terrain/19/858564/353768.terrain new file mode 100644 index 000000000..fb6905a38 Binary files /dev/null and b/public/terrain/19/858564/353768.terrain differ diff --git a/public/terrain/19/858564/353769.terrain b/public/terrain/19/858564/353769.terrain new file mode 100644 index 000000000..3806c4001 Binary files /dev/null and b/public/terrain/19/858564/353769.terrain differ diff --git a/public/terrain/19/858564/353770.terrain b/public/terrain/19/858564/353770.terrain new file mode 100644 index 000000000..beb73dffd Binary files /dev/null and b/public/terrain/19/858564/353770.terrain differ diff --git a/public/terrain/19/858564/353771.terrain b/public/terrain/19/858564/353771.terrain new file mode 100644 index 000000000..2c24b58b1 Binary files /dev/null and b/public/terrain/19/858564/353771.terrain differ diff --git a/public/terrain/19/858564/353772.terrain b/public/terrain/19/858564/353772.terrain new file mode 100644 index 000000000..d7a1b3508 Binary files /dev/null and b/public/terrain/19/858564/353772.terrain differ diff --git a/public/terrain/19/858564/353773.terrain b/public/terrain/19/858564/353773.terrain new file mode 100644 index 000000000..0adb1bfeb Binary files /dev/null and b/public/terrain/19/858564/353773.terrain differ diff --git a/public/terrain/19/858564/353774.terrain b/public/terrain/19/858564/353774.terrain new file mode 100644 index 000000000..665273bdd Binary files /dev/null and b/public/terrain/19/858564/353774.terrain differ diff --git a/public/terrain/19/858564/353775.terrain b/public/terrain/19/858564/353775.terrain new file mode 100644 index 000000000..5ad3ff7af Binary files /dev/null and b/public/terrain/19/858564/353775.terrain differ diff --git a/public/terrain/19/858564/353776.terrain b/public/terrain/19/858564/353776.terrain new file mode 100644 index 000000000..92c9b2bd8 Binary files /dev/null and b/public/terrain/19/858564/353776.terrain differ diff --git a/public/terrain/19/858564/353777.terrain b/public/terrain/19/858564/353777.terrain new file mode 100644 index 000000000..22c97b07a Binary files /dev/null and b/public/terrain/19/858564/353777.terrain differ diff --git a/public/terrain/19/858564/353778.terrain b/public/terrain/19/858564/353778.terrain new file mode 100644 index 000000000..2e4a35935 Binary files /dev/null and b/public/terrain/19/858564/353778.terrain differ diff --git a/public/terrain/19/858564/353779.terrain b/public/terrain/19/858564/353779.terrain new file mode 100644 index 000000000..6c5cd2143 Binary files /dev/null and b/public/terrain/19/858564/353779.terrain differ diff --git a/public/terrain/19/858564/353780.terrain b/public/terrain/19/858564/353780.terrain new file mode 100644 index 000000000..b64f4dcc1 Binary files /dev/null and b/public/terrain/19/858564/353780.terrain differ diff --git a/public/terrain/19/858564/353781.terrain b/public/terrain/19/858564/353781.terrain new file mode 100644 index 000000000..1e18ce908 Binary files /dev/null and b/public/terrain/19/858564/353781.terrain differ diff --git a/public/terrain/19/858564/353782.terrain b/public/terrain/19/858564/353782.terrain new file mode 100644 index 000000000..dede7090d Binary files /dev/null and b/public/terrain/19/858564/353782.terrain differ diff --git a/public/terrain/19/858564/353783.terrain b/public/terrain/19/858564/353783.terrain new file mode 100644 index 000000000..1da2732e1 Binary files /dev/null and b/public/terrain/19/858564/353783.terrain differ diff --git a/public/terrain/19/858564/353784.terrain b/public/terrain/19/858564/353784.terrain new file mode 100644 index 000000000..5d6a6897c Binary files /dev/null and b/public/terrain/19/858564/353784.terrain differ diff --git a/public/terrain/19/858564/353785.terrain b/public/terrain/19/858564/353785.terrain new file mode 100644 index 000000000..93f6f2926 Binary files /dev/null and b/public/terrain/19/858564/353785.terrain differ diff --git a/public/terrain/19/858564/353786.terrain b/public/terrain/19/858564/353786.terrain new file mode 100644 index 000000000..b9bd5ed61 Binary files /dev/null and b/public/terrain/19/858564/353786.terrain differ diff --git a/public/terrain/19/858564/353787.terrain b/public/terrain/19/858564/353787.terrain new file mode 100644 index 000000000..ddf25c60d Binary files /dev/null and b/public/terrain/19/858564/353787.terrain differ diff --git a/public/terrain/19/858564/353788.terrain b/public/terrain/19/858564/353788.terrain new file mode 100644 index 000000000..631ef82c5 Binary files /dev/null and b/public/terrain/19/858564/353788.terrain differ diff --git a/public/terrain/19/858564/353789.terrain b/public/terrain/19/858564/353789.terrain new file mode 100644 index 000000000..b16f477c3 Binary files /dev/null and b/public/terrain/19/858564/353789.terrain differ diff --git a/public/terrain/19/858564/353790.terrain b/public/terrain/19/858564/353790.terrain new file mode 100644 index 000000000..75e75c91c Binary files /dev/null and b/public/terrain/19/858564/353790.terrain differ diff --git a/public/terrain/19/858564/353791.terrain b/public/terrain/19/858564/353791.terrain new file mode 100644 index 000000000..5073b725e Binary files /dev/null and b/public/terrain/19/858564/353791.terrain differ diff --git a/public/terrain/19/858564/353792.terrain b/public/terrain/19/858564/353792.terrain new file mode 100644 index 000000000..67b61b43d Binary files /dev/null and b/public/terrain/19/858564/353792.terrain differ diff --git a/public/terrain/19/858564/353793.terrain b/public/terrain/19/858564/353793.terrain new file mode 100644 index 000000000..3c19ca650 Binary files /dev/null and b/public/terrain/19/858564/353793.terrain differ diff --git a/public/terrain/19/858564/353794.terrain b/public/terrain/19/858564/353794.terrain new file mode 100644 index 000000000..8a5163de3 Binary files /dev/null and b/public/terrain/19/858564/353794.terrain differ diff --git a/public/terrain/19/858564/353795.terrain b/public/terrain/19/858564/353795.terrain new file mode 100644 index 000000000..713157d17 Binary files /dev/null and b/public/terrain/19/858564/353795.terrain differ diff --git a/public/terrain/19/858564/353796.terrain b/public/terrain/19/858564/353796.terrain new file mode 100644 index 000000000..c2f32da28 Binary files /dev/null and b/public/terrain/19/858564/353796.terrain differ diff --git a/public/terrain/19/858564/353797.terrain b/public/terrain/19/858564/353797.terrain new file mode 100644 index 000000000..c17bbeb71 Binary files /dev/null and b/public/terrain/19/858564/353797.terrain differ diff --git a/public/terrain/19/858564/353798.terrain b/public/terrain/19/858564/353798.terrain new file mode 100644 index 000000000..f4b5a7b9a Binary files /dev/null and b/public/terrain/19/858564/353798.terrain differ diff --git a/public/terrain/19/858564/353799.terrain b/public/terrain/19/858564/353799.terrain new file mode 100644 index 000000000..e37ec823f Binary files /dev/null and b/public/terrain/19/858564/353799.terrain differ diff --git a/public/terrain/19/858564/353800.terrain b/public/terrain/19/858564/353800.terrain new file mode 100644 index 000000000..03a41c8e9 Binary files /dev/null and b/public/terrain/19/858564/353800.terrain differ diff --git a/public/terrain/19/858564/353801.terrain b/public/terrain/19/858564/353801.terrain new file mode 100644 index 000000000..59babaf85 Binary files /dev/null and b/public/terrain/19/858564/353801.terrain differ diff --git a/public/terrain/19/858564/353802.terrain b/public/terrain/19/858564/353802.terrain new file mode 100644 index 000000000..e2db53431 Binary files /dev/null and b/public/terrain/19/858564/353802.terrain differ diff --git a/public/terrain/19/858564/353803.terrain b/public/terrain/19/858564/353803.terrain new file mode 100644 index 000000000..fd4aff161 Binary files /dev/null and b/public/terrain/19/858564/353803.terrain differ diff --git a/public/terrain/19/858564/353804.terrain b/public/terrain/19/858564/353804.terrain new file mode 100644 index 000000000..2ea90315d Binary files /dev/null and b/public/terrain/19/858564/353804.terrain differ diff --git a/public/terrain/19/858564/353805.terrain b/public/terrain/19/858564/353805.terrain new file mode 100644 index 000000000..d5c3af5b2 Binary files /dev/null and b/public/terrain/19/858564/353805.terrain differ diff --git a/public/terrain/19/858564/353806.terrain b/public/terrain/19/858564/353806.terrain new file mode 100644 index 000000000..471337b95 Binary files /dev/null and b/public/terrain/19/858564/353806.terrain differ diff --git a/public/terrain/19/858564/353807.terrain b/public/terrain/19/858564/353807.terrain new file mode 100644 index 000000000..97c8353f8 Binary files /dev/null and b/public/terrain/19/858564/353807.terrain differ diff --git a/public/terrain/19/858564/353808.terrain b/public/terrain/19/858564/353808.terrain new file mode 100644 index 000000000..884301a4d Binary files /dev/null and b/public/terrain/19/858564/353808.terrain differ diff --git a/public/terrain/19/858564/353809.terrain b/public/terrain/19/858564/353809.terrain new file mode 100644 index 000000000..adf9de9f5 Binary files /dev/null and b/public/terrain/19/858564/353809.terrain differ diff --git a/public/terrain/19/858564/353810.terrain b/public/terrain/19/858564/353810.terrain new file mode 100644 index 000000000..772f0058b Binary files /dev/null and b/public/terrain/19/858564/353810.terrain differ diff --git a/public/terrain/19/858564/353811.terrain b/public/terrain/19/858564/353811.terrain new file mode 100644 index 000000000..71a47294c Binary files /dev/null and b/public/terrain/19/858564/353811.terrain differ diff --git a/public/terrain/19/858564/353812.terrain b/public/terrain/19/858564/353812.terrain new file mode 100644 index 000000000..85e276d74 Binary files /dev/null and b/public/terrain/19/858564/353812.terrain differ diff --git a/public/terrain/19/858564/353813.terrain b/public/terrain/19/858564/353813.terrain new file mode 100644 index 000000000..bb493164a Binary files /dev/null and b/public/terrain/19/858564/353813.terrain differ diff --git a/public/terrain/19/858564/353814.terrain b/public/terrain/19/858564/353814.terrain new file mode 100644 index 000000000..ae815961f Binary files /dev/null and b/public/terrain/19/858564/353814.terrain differ diff --git a/public/terrain/19/858564/353815.terrain b/public/terrain/19/858564/353815.terrain new file mode 100644 index 000000000..b934da559 Binary files /dev/null and b/public/terrain/19/858564/353815.terrain differ diff --git a/public/terrain/19/858564/353816.terrain b/public/terrain/19/858564/353816.terrain new file mode 100644 index 000000000..7b8450edf Binary files /dev/null and b/public/terrain/19/858564/353816.terrain differ diff --git a/public/terrain/19/858564/353817.terrain b/public/terrain/19/858564/353817.terrain new file mode 100644 index 000000000..2fb601ab0 Binary files /dev/null and b/public/terrain/19/858564/353817.terrain differ diff --git a/public/terrain/19/858564/353818.terrain b/public/terrain/19/858564/353818.terrain new file mode 100644 index 000000000..e6b64cecf Binary files /dev/null and b/public/terrain/19/858564/353818.terrain differ diff --git a/public/terrain/19/858564/353819.terrain b/public/terrain/19/858564/353819.terrain new file mode 100644 index 000000000..e68d604c5 Binary files /dev/null and b/public/terrain/19/858564/353819.terrain differ diff --git a/public/terrain/19/858564/353820.terrain b/public/terrain/19/858564/353820.terrain new file mode 100644 index 000000000..90ef610ea Binary files /dev/null and b/public/terrain/19/858564/353820.terrain differ diff --git a/public/terrain/19/858564/353821.terrain b/public/terrain/19/858564/353821.terrain new file mode 100644 index 000000000..719e43d76 Binary files /dev/null and b/public/terrain/19/858564/353821.terrain differ diff --git a/public/terrain/19/858564/353822.terrain b/public/terrain/19/858564/353822.terrain new file mode 100644 index 000000000..7dc68aeb9 Binary files /dev/null and b/public/terrain/19/858564/353822.terrain differ diff --git a/public/terrain/19/858564/353823.terrain b/public/terrain/19/858564/353823.terrain new file mode 100644 index 000000000..63ff02e24 Binary files /dev/null and b/public/terrain/19/858564/353823.terrain differ diff --git a/public/terrain/19/858564/353824.terrain b/public/terrain/19/858564/353824.terrain new file mode 100644 index 000000000..6e51dc732 Binary files /dev/null and b/public/terrain/19/858564/353824.terrain differ diff --git a/public/terrain/19/858564/353825.terrain b/public/terrain/19/858564/353825.terrain new file mode 100644 index 000000000..ee5d9bac5 Binary files /dev/null and b/public/terrain/19/858564/353825.terrain differ diff --git a/public/terrain/19/858564/353826.terrain b/public/terrain/19/858564/353826.terrain new file mode 100644 index 000000000..da33fd786 Binary files /dev/null and b/public/terrain/19/858564/353826.terrain differ diff --git a/public/terrain/19/858564/353827.terrain b/public/terrain/19/858564/353827.terrain new file mode 100644 index 000000000..c7e2e07ae Binary files /dev/null and b/public/terrain/19/858564/353827.terrain differ diff --git a/public/terrain/19/858564/353828.terrain b/public/terrain/19/858564/353828.terrain new file mode 100644 index 000000000..aa4fbb2b2 Binary files /dev/null and b/public/terrain/19/858564/353828.terrain differ diff --git a/public/terrain/19/858564/353829.terrain b/public/terrain/19/858564/353829.terrain new file mode 100644 index 000000000..83c86abda Binary files /dev/null and b/public/terrain/19/858564/353829.terrain differ diff --git a/public/terrain/19/858564/353830.terrain b/public/terrain/19/858564/353830.terrain new file mode 100644 index 000000000..ca4819b73 Binary files /dev/null and b/public/terrain/19/858564/353830.terrain differ diff --git a/public/terrain/19/858564/353831.terrain b/public/terrain/19/858564/353831.terrain new file mode 100644 index 000000000..841b208e6 Binary files /dev/null and b/public/terrain/19/858564/353831.terrain differ diff --git a/public/terrain/19/858564/353832.terrain b/public/terrain/19/858564/353832.terrain new file mode 100644 index 000000000..cf269a3ed Binary files /dev/null and b/public/terrain/19/858564/353832.terrain differ diff --git a/public/terrain/19/858564/353833.terrain b/public/terrain/19/858564/353833.terrain new file mode 100644 index 000000000..512ba2f39 Binary files /dev/null and b/public/terrain/19/858564/353833.terrain differ diff --git a/public/terrain/19/858564/353834.terrain b/public/terrain/19/858564/353834.terrain new file mode 100644 index 000000000..5d4c4e3da Binary files /dev/null and b/public/terrain/19/858564/353834.terrain differ diff --git a/public/terrain/19/858564/353835.terrain b/public/terrain/19/858564/353835.terrain new file mode 100644 index 000000000..3cc2b6de9 Binary files /dev/null and b/public/terrain/19/858564/353835.terrain differ diff --git a/public/terrain/19/858564/353836.terrain b/public/terrain/19/858564/353836.terrain new file mode 100644 index 000000000..95b8b84ab Binary files /dev/null and b/public/terrain/19/858564/353836.terrain differ diff --git a/public/terrain/19/858564/353837.terrain b/public/terrain/19/858564/353837.terrain new file mode 100644 index 000000000..b2aed98e4 Binary files /dev/null and b/public/terrain/19/858564/353837.terrain differ diff --git a/public/terrain/19/858564/353838.terrain b/public/terrain/19/858564/353838.terrain new file mode 100644 index 000000000..9cc322de9 Binary files /dev/null and b/public/terrain/19/858564/353838.terrain differ diff --git a/public/terrain/19/858564/353839.terrain b/public/terrain/19/858564/353839.terrain new file mode 100644 index 000000000..2ce663a28 Binary files /dev/null and b/public/terrain/19/858564/353839.terrain differ diff --git a/public/terrain/19/858564/353840.terrain b/public/terrain/19/858564/353840.terrain new file mode 100644 index 000000000..72c26c5f3 Binary files /dev/null and b/public/terrain/19/858564/353840.terrain differ diff --git a/public/terrain/19/858564/353841.terrain b/public/terrain/19/858564/353841.terrain new file mode 100644 index 000000000..61dd31708 Binary files /dev/null and b/public/terrain/19/858564/353841.terrain differ diff --git a/public/terrain/19/858564/353842.terrain b/public/terrain/19/858564/353842.terrain new file mode 100644 index 000000000..3e0345140 Binary files /dev/null and b/public/terrain/19/858564/353842.terrain differ diff --git a/public/terrain/19/858564/353843.terrain b/public/terrain/19/858564/353843.terrain new file mode 100644 index 000000000..2255c3788 Binary files /dev/null and b/public/terrain/19/858564/353843.terrain differ diff --git a/public/terrain/19/858564/353844.terrain b/public/terrain/19/858564/353844.terrain new file mode 100644 index 000000000..c816f2470 Binary files /dev/null and b/public/terrain/19/858564/353844.terrain differ diff --git a/public/terrain/19/858564/353845.terrain b/public/terrain/19/858564/353845.terrain new file mode 100644 index 000000000..4e103c1dd Binary files /dev/null and b/public/terrain/19/858564/353845.terrain differ diff --git a/public/terrain/19/858564/353846.terrain b/public/terrain/19/858564/353846.terrain new file mode 100644 index 000000000..ec5d44330 Binary files /dev/null and b/public/terrain/19/858564/353846.terrain differ diff --git a/public/terrain/19/858564/353847.terrain b/public/terrain/19/858564/353847.terrain new file mode 100644 index 000000000..913ea9c4c Binary files /dev/null and b/public/terrain/19/858564/353847.terrain differ diff --git a/public/terrain/19/858564/353848.terrain b/public/terrain/19/858564/353848.terrain new file mode 100644 index 000000000..bca14c4f6 Binary files /dev/null and b/public/terrain/19/858564/353848.terrain differ diff --git a/public/terrain/19/858564/353849.terrain b/public/terrain/19/858564/353849.terrain new file mode 100644 index 000000000..e3d95c81f Binary files /dev/null and b/public/terrain/19/858564/353849.terrain differ diff --git a/public/terrain/19/858564/353850.terrain b/public/terrain/19/858564/353850.terrain new file mode 100644 index 000000000..9c25a77d1 Binary files /dev/null and b/public/terrain/19/858564/353850.terrain differ diff --git a/public/terrain/19/858564/353851.terrain b/public/terrain/19/858564/353851.terrain new file mode 100644 index 000000000..308ceb2ef Binary files /dev/null and b/public/terrain/19/858564/353851.terrain differ diff --git a/public/terrain/19/858564/353852.terrain b/public/terrain/19/858564/353852.terrain new file mode 100644 index 000000000..a98bb9713 Binary files /dev/null and b/public/terrain/19/858564/353852.terrain differ diff --git a/public/terrain/19/858564/353853.terrain b/public/terrain/19/858564/353853.terrain new file mode 100644 index 000000000..5f6059df7 Binary files /dev/null and b/public/terrain/19/858564/353853.terrain differ diff --git a/public/terrain/19/858564/353854.terrain b/public/terrain/19/858564/353854.terrain new file mode 100644 index 000000000..14d3635f2 Binary files /dev/null and b/public/terrain/19/858564/353854.terrain differ diff --git a/public/terrain/19/858564/353855.terrain b/public/terrain/19/858564/353855.terrain new file mode 100644 index 000000000..5523cd11f Binary files /dev/null and b/public/terrain/19/858564/353855.terrain differ diff --git a/public/terrain/19/858564/353856.terrain b/public/terrain/19/858564/353856.terrain new file mode 100644 index 000000000..a45ef2f4d Binary files /dev/null and b/public/terrain/19/858564/353856.terrain differ diff --git a/public/terrain/19/858564/353857.terrain b/public/terrain/19/858564/353857.terrain new file mode 100644 index 000000000..b8e9ae1cb Binary files /dev/null and b/public/terrain/19/858564/353857.terrain differ diff --git a/public/terrain/19/858564/353858.terrain b/public/terrain/19/858564/353858.terrain new file mode 100644 index 000000000..7a1c81bb9 Binary files /dev/null and b/public/terrain/19/858564/353858.terrain differ diff --git a/public/terrain/19/858564/353859.terrain b/public/terrain/19/858564/353859.terrain new file mode 100644 index 000000000..6f4fc1280 Binary files /dev/null and b/public/terrain/19/858564/353859.terrain differ diff --git a/public/terrain/19/858564/353860.terrain b/public/terrain/19/858564/353860.terrain new file mode 100644 index 000000000..f34e27e5f Binary files /dev/null and b/public/terrain/19/858564/353860.terrain differ diff --git a/public/terrain/19/858564/353861.terrain b/public/terrain/19/858564/353861.terrain new file mode 100644 index 000000000..eb2d48814 Binary files /dev/null and b/public/terrain/19/858564/353861.terrain differ diff --git a/public/terrain/19/858564/353862.terrain b/public/terrain/19/858564/353862.terrain new file mode 100644 index 000000000..a8768982e Binary files /dev/null and b/public/terrain/19/858564/353862.terrain differ diff --git a/public/terrain/19/858564/353863.terrain b/public/terrain/19/858564/353863.terrain new file mode 100644 index 000000000..28d84addf Binary files /dev/null and b/public/terrain/19/858564/353863.terrain differ diff --git a/public/terrain/19/858564/353864.terrain b/public/terrain/19/858564/353864.terrain new file mode 100644 index 000000000..84bf4b2a8 Binary files /dev/null and b/public/terrain/19/858564/353864.terrain differ diff --git a/public/terrain/19/858564/353865.terrain b/public/terrain/19/858564/353865.terrain new file mode 100644 index 000000000..136989155 Binary files /dev/null and b/public/terrain/19/858564/353865.terrain differ diff --git a/public/terrain/19/858564/353866.terrain b/public/terrain/19/858564/353866.terrain new file mode 100644 index 000000000..c273234eb Binary files /dev/null and b/public/terrain/19/858564/353866.terrain differ diff --git a/public/terrain/19/858564/353867.terrain b/public/terrain/19/858564/353867.terrain new file mode 100644 index 000000000..aa36b9813 Binary files /dev/null and b/public/terrain/19/858564/353867.terrain differ diff --git a/public/terrain/19/858564/353868.terrain b/public/terrain/19/858564/353868.terrain new file mode 100644 index 000000000..b195a7ceb Binary files /dev/null and b/public/terrain/19/858564/353868.terrain differ diff --git a/public/terrain/19/858564/353869.terrain b/public/terrain/19/858564/353869.terrain new file mode 100644 index 000000000..af524bcc7 Binary files /dev/null and b/public/terrain/19/858564/353869.terrain differ diff --git a/public/terrain/19/858564/353870.terrain b/public/terrain/19/858564/353870.terrain new file mode 100644 index 000000000..7c499803c Binary files /dev/null and b/public/terrain/19/858564/353870.terrain differ diff --git a/public/terrain/19/858564/353871.terrain b/public/terrain/19/858564/353871.terrain new file mode 100644 index 000000000..3cce3af09 Binary files /dev/null and b/public/terrain/19/858564/353871.terrain differ diff --git a/public/terrain/19/858564/353872.terrain b/public/terrain/19/858564/353872.terrain new file mode 100644 index 000000000..2a210a651 Binary files /dev/null and b/public/terrain/19/858564/353872.terrain differ diff --git a/public/terrain/19/858564/353873.terrain b/public/terrain/19/858564/353873.terrain new file mode 100644 index 000000000..1af740ff6 Binary files /dev/null and b/public/terrain/19/858564/353873.terrain differ diff --git a/public/terrain/19/858564/353874.terrain b/public/terrain/19/858564/353874.terrain new file mode 100644 index 000000000..6573a45e4 Binary files /dev/null and b/public/terrain/19/858564/353874.terrain differ diff --git a/public/terrain/19/858564/353875.terrain b/public/terrain/19/858564/353875.terrain new file mode 100644 index 000000000..cdba6f6d6 Binary files /dev/null and b/public/terrain/19/858564/353875.terrain differ diff --git a/public/terrain/19/858564/353876.terrain b/public/terrain/19/858564/353876.terrain new file mode 100644 index 000000000..195f1fab5 Binary files /dev/null and b/public/terrain/19/858564/353876.terrain differ diff --git a/public/terrain/19/858564/353877.terrain b/public/terrain/19/858564/353877.terrain new file mode 100644 index 000000000..c0d9afde9 Binary files /dev/null and b/public/terrain/19/858564/353877.terrain differ diff --git a/public/terrain/19/858564/353878.terrain b/public/terrain/19/858564/353878.terrain new file mode 100644 index 000000000..1a001ac79 Binary files /dev/null and b/public/terrain/19/858564/353878.terrain differ diff --git a/public/terrain/19/858564/353879.terrain b/public/terrain/19/858564/353879.terrain new file mode 100644 index 000000000..82cb895b9 Binary files /dev/null and b/public/terrain/19/858564/353879.terrain differ diff --git a/public/terrain/19/858564/353880.terrain b/public/terrain/19/858564/353880.terrain new file mode 100644 index 000000000..ba828983d Binary files /dev/null and b/public/terrain/19/858564/353880.terrain differ diff --git a/public/terrain/19/858564/353881.terrain b/public/terrain/19/858564/353881.terrain new file mode 100644 index 000000000..a4b9945d4 Binary files /dev/null and b/public/terrain/19/858564/353881.terrain differ diff --git a/public/terrain/19/858564/353882.terrain b/public/terrain/19/858564/353882.terrain new file mode 100644 index 000000000..72fe9565b Binary files /dev/null and b/public/terrain/19/858564/353882.terrain differ diff --git a/public/terrain/19/858564/353883.terrain b/public/terrain/19/858564/353883.terrain new file mode 100644 index 000000000..df057779d Binary files /dev/null and b/public/terrain/19/858564/353883.terrain differ diff --git a/public/terrain/19/858564/353884.terrain b/public/terrain/19/858564/353884.terrain new file mode 100644 index 000000000..d4e76f37b Binary files /dev/null and b/public/terrain/19/858564/353884.terrain differ diff --git a/public/terrain/19/858564/353885.terrain b/public/terrain/19/858564/353885.terrain new file mode 100644 index 000000000..e90962527 Binary files /dev/null and b/public/terrain/19/858564/353885.terrain differ diff --git a/public/terrain/19/858564/353886.terrain b/public/terrain/19/858564/353886.terrain new file mode 100644 index 000000000..3e7e7b850 Binary files /dev/null and b/public/terrain/19/858564/353886.terrain differ diff --git a/public/terrain/19/858564/353887.terrain b/public/terrain/19/858564/353887.terrain new file mode 100644 index 000000000..793fe84c3 Binary files /dev/null and b/public/terrain/19/858564/353887.terrain differ diff --git a/public/terrain/19/858564/353888.terrain b/public/terrain/19/858564/353888.terrain new file mode 100644 index 000000000..fb05764e0 Binary files /dev/null and b/public/terrain/19/858564/353888.terrain differ diff --git a/public/terrain/19/858564/353889.terrain b/public/terrain/19/858564/353889.terrain new file mode 100644 index 000000000..dfdfabd41 Binary files /dev/null and b/public/terrain/19/858564/353889.terrain differ diff --git a/public/terrain/19/858564/353890.terrain b/public/terrain/19/858564/353890.terrain new file mode 100644 index 000000000..f1d5c9281 Binary files /dev/null and b/public/terrain/19/858564/353890.terrain differ diff --git a/public/terrain/19/858564/353891.terrain b/public/terrain/19/858564/353891.terrain new file mode 100644 index 000000000..0c71664ff Binary files /dev/null and b/public/terrain/19/858564/353891.terrain differ diff --git a/public/terrain/19/858564/353892.terrain b/public/terrain/19/858564/353892.terrain new file mode 100644 index 000000000..08df66bb9 Binary files /dev/null and b/public/terrain/19/858564/353892.terrain differ diff --git a/public/terrain/19/858564/353893.terrain b/public/terrain/19/858564/353893.terrain new file mode 100644 index 000000000..5ac2d8fbc Binary files /dev/null and b/public/terrain/19/858564/353893.terrain differ diff --git a/public/terrain/19/858564/353894.terrain b/public/terrain/19/858564/353894.terrain new file mode 100644 index 000000000..aad33d221 Binary files /dev/null and b/public/terrain/19/858564/353894.terrain differ diff --git a/public/terrain/19/858564/353895.terrain b/public/terrain/19/858564/353895.terrain new file mode 100644 index 000000000..037269910 Binary files /dev/null and b/public/terrain/19/858564/353895.terrain differ diff --git a/public/terrain/19/858564/353896.terrain b/public/terrain/19/858564/353896.terrain new file mode 100644 index 000000000..c5da34f06 Binary files /dev/null and b/public/terrain/19/858564/353896.terrain differ diff --git a/public/terrain/19/858564/353897.terrain b/public/terrain/19/858564/353897.terrain new file mode 100644 index 000000000..f31a79821 Binary files /dev/null and b/public/terrain/19/858564/353897.terrain differ diff --git a/public/terrain/19/858564/353898.terrain b/public/terrain/19/858564/353898.terrain new file mode 100644 index 000000000..dbb893436 Binary files /dev/null and b/public/terrain/19/858564/353898.terrain differ diff --git a/public/terrain/19/858564/353899.terrain b/public/terrain/19/858564/353899.terrain new file mode 100644 index 000000000..a4cf68cf3 Binary files /dev/null and b/public/terrain/19/858564/353899.terrain differ diff --git a/public/terrain/19/858564/353900.terrain b/public/terrain/19/858564/353900.terrain new file mode 100644 index 000000000..3104e11f5 Binary files /dev/null and b/public/terrain/19/858564/353900.terrain differ diff --git a/public/terrain/19/858564/353901.terrain b/public/terrain/19/858564/353901.terrain new file mode 100644 index 000000000..9b4d0cc2e Binary files /dev/null and b/public/terrain/19/858564/353901.terrain differ diff --git a/public/terrain/19/858564/353902.terrain b/public/terrain/19/858564/353902.terrain new file mode 100644 index 000000000..993370f70 Binary files /dev/null and b/public/terrain/19/858564/353902.terrain differ diff --git a/public/terrain/19/858564/353903.terrain b/public/terrain/19/858564/353903.terrain new file mode 100644 index 000000000..1b62ca014 Binary files /dev/null and b/public/terrain/19/858564/353903.terrain differ diff --git a/public/terrain/19/858564/353904.terrain b/public/terrain/19/858564/353904.terrain new file mode 100644 index 000000000..e4ecb1360 Binary files /dev/null and b/public/terrain/19/858564/353904.terrain differ diff --git a/public/terrain/19/858564/353905.terrain b/public/terrain/19/858564/353905.terrain new file mode 100644 index 000000000..5ea3aed94 Binary files /dev/null and b/public/terrain/19/858564/353905.terrain differ diff --git a/public/terrain/19/858564/353906.terrain b/public/terrain/19/858564/353906.terrain new file mode 100644 index 000000000..6ca297c8f Binary files /dev/null and b/public/terrain/19/858564/353906.terrain differ diff --git a/public/terrain/19/858564/353907.terrain b/public/terrain/19/858564/353907.terrain new file mode 100644 index 000000000..1e74da1dc Binary files /dev/null and b/public/terrain/19/858564/353907.terrain differ diff --git a/public/terrain/19/858564/353908.terrain b/public/terrain/19/858564/353908.terrain new file mode 100644 index 000000000..503104a09 Binary files /dev/null and b/public/terrain/19/858564/353908.terrain differ diff --git a/public/terrain/19/858564/353909.terrain b/public/terrain/19/858564/353909.terrain new file mode 100644 index 000000000..18a71e7d9 Binary files /dev/null and b/public/terrain/19/858564/353909.terrain differ diff --git a/public/terrain/19/858564/353910.terrain b/public/terrain/19/858564/353910.terrain new file mode 100644 index 000000000..d35bfa77d Binary files /dev/null and b/public/terrain/19/858564/353910.terrain differ diff --git a/public/terrain/19/858564/353911.terrain b/public/terrain/19/858564/353911.terrain new file mode 100644 index 000000000..adfb30b66 Binary files /dev/null and b/public/terrain/19/858564/353911.terrain differ diff --git a/public/terrain/19/858564/353912.terrain b/public/terrain/19/858564/353912.terrain new file mode 100644 index 000000000..9e533aa27 Binary files /dev/null and b/public/terrain/19/858564/353912.terrain differ diff --git a/public/terrain/19/858564/353913.terrain b/public/terrain/19/858564/353913.terrain new file mode 100644 index 000000000..75efba09e Binary files /dev/null and b/public/terrain/19/858564/353913.terrain differ diff --git a/public/terrain/19/858564/353914.terrain b/public/terrain/19/858564/353914.terrain new file mode 100644 index 000000000..941cf1c97 Binary files /dev/null and b/public/terrain/19/858564/353914.terrain differ diff --git a/public/terrain/19/858564/353915.terrain b/public/terrain/19/858564/353915.terrain new file mode 100644 index 000000000..bcee47ef8 Binary files /dev/null and b/public/terrain/19/858564/353915.terrain differ diff --git a/public/terrain/19/858564/353916.terrain b/public/terrain/19/858564/353916.terrain new file mode 100644 index 000000000..faa52e917 Binary files /dev/null and b/public/terrain/19/858564/353916.terrain differ diff --git a/public/terrain/19/858564/353917.terrain b/public/terrain/19/858564/353917.terrain new file mode 100644 index 000000000..9096c8ce3 Binary files /dev/null and b/public/terrain/19/858564/353917.terrain differ diff --git a/public/terrain/19/858564/353918.terrain b/public/terrain/19/858564/353918.terrain new file mode 100644 index 000000000..e1c9eeb54 Binary files /dev/null and b/public/terrain/19/858564/353918.terrain differ diff --git a/public/terrain/19/858564/353919.terrain b/public/terrain/19/858564/353919.terrain new file mode 100644 index 000000000..aa3a67b9e Binary files /dev/null and b/public/terrain/19/858564/353919.terrain differ diff --git a/public/terrain/19/858564/353920.terrain b/public/terrain/19/858564/353920.terrain new file mode 100644 index 000000000..2c5db97d4 Binary files /dev/null and b/public/terrain/19/858564/353920.terrain differ diff --git a/public/terrain/19/858564/353921.terrain b/public/terrain/19/858564/353921.terrain new file mode 100644 index 000000000..bca5f95b9 Binary files /dev/null and b/public/terrain/19/858564/353921.terrain differ diff --git a/public/terrain/19/858564/353922.terrain b/public/terrain/19/858564/353922.terrain new file mode 100644 index 000000000..5f09f3ee5 Binary files /dev/null and b/public/terrain/19/858564/353922.terrain differ diff --git a/public/terrain/19/858564/353923.terrain b/public/terrain/19/858564/353923.terrain new file mode 100644 index 000000000..320d86c9b Binary files /dev/null and b/public/terrain/19/858564/353923.terrain differ diff --git a/public/terrain/19/858564/353924.terrain b/public/terrain/19/858564/353924.terrain new file mode 100644 index 000000000..87bc9eeb2 Binary files /dev/null and b/public/terrain/19/858564/353924.terrain differ diff --git a/public/terrain/19/858564/353925.terrain b/public/terrain/19/858564/353925.terrain new file mode 100644 index 000000000..a51e27fa8 Binary files /dev/null and b/public/terrain/19/858564/353925.terrain differ diff --git a/public/terrain/19/858564/353926.terrain b/public/terrain/19/858564/353926.terrain new file mode 100644 index 000000000..9412e7dd2 Binary files /dev/null and b/public/terrain/19/858564/353926.terrain differ diff --git a/public/terrain/19/858564/353927.terrain b/public/terrain/19/858564/353927.terrain new file mode 100644 index 000000000..839ea2e9c Binary files /dev/null and b/public/terrain/19/858564/353927.terrain differ diff --git a/public/terrain/19/858564/353928.terrain b/public/terrain/19/858564/353928.terrain new file mode 100644 index 000000000..02d09a89b Binary files /dev/null and b/public/terrain/19/858564/353928.terrain differ diff --git a/public/terrain/19/858564/353929.terrain b/public/terrain/19/858564/353929.terrain new file mode 100644 index 000000000..b6ebbf1ee Binary files /dev/null and b/public/terrain/19/858564/353929.terrain differ diff --git a/public/terrain/19/858564/353930.terrain b/public/terrain/19/858564/353930.terrain new file mode 100644 index 000000000..b747c7c4e Binary files /dev/null and b/public/terrain/19/858564/353930.terrain differ diff --git a/public/terrain/19/858564/353931.terrain b/public/terrain/19/858564/353931.terrain new file mode 100644 index 000000000..aa86d7cda Binary files /dev/null and b/public/terrain/19/858564/353931.terrain differ diff --git a/public/terrain/19/858564/353932.terrain b/public/terrain/19/858564/353932.terrain new file mode 100644 index 000000000..d3842c729 Binary files /dev/null and b/public/terrain/19/858564/353932.terrain differ diff --git a/public/terrain/19/858564/353933.terrain b/public/terrain/19/858564/353933.terrain new file mode 100644 index 000000000..6aac61538 Binary files /dev/null and b/public/terrain/19/858564/353933.terrain differ diff --git a/public/terrain/19/858564/353934.terrain b/public/terrain/19/858564/353934.terrain new file mode 100644 index 000000000..8de841318 Binary files /dev/null and b/public/terrain/19/858564/353934.terrain differ diff --git a/public/terrain/19/858564/353935.terrain b/public/terrain/19/858564/353935.terrain new file mode 100644 index 000000000..62268ae7d Binary files /dev/null and b/public/terrain/19/858564/353935.terrain differ diff --git a/public/terrain/19/858564/353936.terrain b/public/terrain/19/858564/353936.terrain new file mode 100644 index 000000000..3d63d5981 Binary files /dev/null and b/public/terrain/19/858564/353936.terrain differ diff --git a/public/terrain/19/858564/353937.terrain b/public/terrain/19/858564/353937.terrain new file mode 100644 index 000000000..48a81a68b Binary files /dev/null and b/public/terrain/19/858564/353937.terrain differ diff --git a/public/terrain/19/858564/353938.terrain b/public/terrain/19/858564/353938.terrain new file mode 100644 index 000000000..21d4d8dea Binary files /dev/null and b/public/terrain/19/858564/353938.terrain differ diff --git a/public/terrain/19/858564/353939.terrain b/public/terrain/19/858564/353939.terrain new file mode 100644 index 000000000..ae3ea960f Binary files /dev/null and b/public/terrain/19/858564/353939.terrain differ diff --git a/public/terrain/19/858564/353940.terrain b/public/terrain/19/858564/353940.terrain new file mode 100644 index 000000000..7f779bef8 Binary files /dev/null and b/public/terrain/19/858564/353940.terrain differ diff --git a/public/terrain/19/858564/353941.terrain b/public/terrain/19/858564/353941.terrain new file mode 100644 index 000000000..4eafeff77 Binary files /dev/null and b/public/terrain/19/858564/353941.terrain differ diff --git a/public/terrain/19/858564/353942.terrain b/public/terrain/19/858564/353942.terrain new file mode 100644 index 000000000..d1ddf05b9 Binary files /dev/null and b/public/terrain/19/858564/353942.terrain differ diff --git a/public/terrain/19/858564/353943.terrain b/public/terrain/19/858564/353943.terrain new file mode 100644 index 000000000..d653ea0f5 Binary files /dev/null and b/public/terrain/19/858564/353943.terrain differ diff --git a/public/terrain/19/858564/353944.terrain b/public/terrain/19/858564/353944.terrain new file mode 100644 index 000000000..db5e0a697 Binary files /dev/null and b/public/terrain/19/858564/353944.terrain differ diff --git a/public/terrain/19/858564/353945.terrain b/public/terrain/19/858564/353945.terrain new file mode 100644 index 000000000..7f31008bd Binary files /dev/null and b/public/terrain/19/858564/353945.terrain differ diff --git a/public/terrain/19/858564/353946.terrain b/public/terrain/19/858564/353946.terrain new file mode 100644 index 000000000..8790d2204 Binary files /dev/null and b/public/terrain/19/858564/353946.terrain differ diff --git a/public/terrain/19/858564/353947.terrain b/public/terrain/19/858564/353947.terrain new file mode 100644 index 000000000..a1b9a0636 Binary files /dev/null and b/public/terrain/19/858564/353947.terrain differ diff --git a/public/terrain/19/858564/353948.terrain b/public/terrain/19/858564/353948.terrain new file mode 100644 index 000000000..f9edbfde0 Binary files /dev/null and b/public/terrain/19/858564/353948.terrain differ diff --git a/public/terrain/19/858564/353949.terrain b/public/terrain/19/858564/353949.terrain new file mode 100644 index 000000000..b16f84bb6 Binary files /dev/null and b/public/terrain/19/858564/353949.terrain differ diff --git a/public/terrain/19/858564/353950.terrain b/public/terrain/19/858564/353950.terrain new file mode 100644 index 000000000..202db36a0 Binary files /dev/null and b/public/terrain/19/858564/353950.terrain differ diff --git a/public/terrain/19/858564/353951.terrain b/public/terrain/19/858564/353951.terrain new file mode 100644 index 000000000..1a53cdf18 Binary files /dev/null and b/public/terrain/19/858564/353951.terrain differ diff --git a/public/terrain/19/858564/353952.terrain b/public/terrain/19/858564/353952.terrain new file mode 100644 index 000000000..4238f9b0b Binary files /dev/null and b/public/terrain/19/858564/353952.terrain differ diff --git a/public/terrain/19/858564/353953.terrain b/public/terrain/19/858564/353953.terrain new file mode 100644 index 000000000..71e2f77c6 Binary files /dev/null and b/public/terrain/19/858564/353953.terrain differ diff --git a/public/terrain/19/858564/353954.terrain b/public/terrain/19/858564/353954.terrain new file mode 100644 index 000000000..618f73c8b Binary files /dev/null and b/public/terrain/19/858564/353954.terrain differ diff --git a/public/terrain/19/858564/353955.terrain b/public/terrain/19/858564/353955.terrain new file mode 100644 index 000000000..69bd16817 Binary files /dev/null and b/public/terrain/19/858564/353955.terrain differ diff --git a/public/terrain/19/858564/353956.terrain b/public/terrain/19/858564/353956.terrain new file mode 100644 index 000000000..413539b75 Binary files /dev/null and b/public/terrain/19/858564/353956.terrain differ diff --git a/public/terrain/19/858564/353957.terrain b/public/terrain/19/858564/353957.terrain new file mode 100644 index 000000000..51f8e4731 Binary files /dev/null and b/public/terrain/19/858564/353957.terrain differ diff --git a/public/terrain/19/858564/353958.terrain b/public/terrain/19/858564/353958.terrain new file mode 100644 index 000000000..27a94ad8a Binary files /dev/null and b/public/terrain/19/858564/353958.terrain differ diff --git a/public/terrain/19/858564/353959.terrain b/public/terrain/19/858564/353959.terrain new file mode 100644 index 000000000..6a422efed Binary files /dev/null and b/public/terrain/19/858564/353959.terrain differ diff --git a/public/terrain/19/858564/353960.terrain b/public/terrain/19/858564/353960.terrain new file mode 100644 index 000000000..609e08a77 Binary files /dev/null and b/public/terrain/19/858564/353960.terrain differ diff --git a/public/terrain/19/858564/353961.terrain b/public/terrain/19/858564/353961.terrain new file mode 100644 index 000000000..c84b98de0 Binary files /dev/null and b/public/terrain/19/858564/353961.terrain differ diff --git a/public/terrain/19/858564/353962.terrain b/public/terrain/19/858564/353962.terrain new file mode 100644 index 000000000..188da3014 Binary files /dev/null and b/public/terrain/19/858564/353962.terrain differ diff --git a/public/terrain/19/858564/353963.terrain b/public/terrain/19/858564/353963.terrain new file mode 100644 index 000000000..a9e14d968 Binary files /dev/null and b/public/terrain/19/858564/353963.terrain differ diff --git a/public/terrain/19/858564/353964.terrain b/public/terrain/19/858564/353964.terrain new file mode 100644 index 000000000..98d4f60af Binary files /dev/null and b/public/terrain/19/858564/353964.terrain differ diff --git a/public/terrain/19/858564/353965.terrain b/public/terrain/19/858564/353965.terrain new file mode 100644 index 000000000..8ce109f71 Binary files /dev/null and b/public/terrain/19/858564/353965.terrain differ diff --git a/public/terrain/19/858564/353966.terrain b/public/terrain/19/858564/353966.terrain new file mode 100644 index 000000000..90ba0c018 Binary files /dev/null and b/public/terrain/19/858564/353966.terrain differ diff --git a/public/terrain/19/858564/353967.terrain b/public/terrain/19/858564/353967.terrain new file mode 100644 index 000000000..c661ce6b9 Binary files /dev/null and b/public/terrain/19/858564/353967.terrain differ diff --git a/public/terrain/19/858564/353968.terrain b/public/terrain/19/858564/353968.terrain new file mode 100644 index 000000000..b369005a8 Binary files /dev/null and b/public/terrain/19/858564/353968.terrain differ diff --git a/public/terrain/19/858564/353969.terrain b/public/terrain/19/858564/353969.terrain new file mode 100644 index 000000000..4ad17af0a Binary files /dev/null and b/public/terrain/19/858564/353969.terrain differ diff --git a/public/terrain/19/858564/353970.terrain b/public/terrain/19/858564/353970.terrain new file mode 100644 index 000000000..d4a202217 Binary files /dev/null and b/public/terrain/19/858564/353970.terrain differ diff --git a/public/terrain/19/858564/353971.terrain b/public/terrain/19/858564/353971.terrain new file mode 100644 index 000000000..9b1b8023e Binary files /dev/null and b/public/terrain/19/858564/353971.terrain differ diff --git a/public/terrain/19/858564/353972.terrain b/public/terrain/19/858564/353972.terrain new file mode 100644 index 000000000..4d7b2fb59 Binary files /dev/null and b/public/terrain/19/858564/353972.terrain differ diff --git a/public/terrain/19/858564/353973.terrain b/public/terrain/19/858564/353973.terrain new file mode 100644 index 000000000..c493a1085 Binary files /dev/null and b/public/terrain/19/858564/353973.terrain differ diff --git a/public/terrain/19/858564/353974.terrain b/public/terrain/19/858564/353974.terrain new file mode 100644 index 000000000..91d7ea80a Binary files /dev/null and b/public/terrain/19/858564/353974.terrain differ diff --git a/public/terrain/19/858564/353975.terrain b/public/terrain/19/858564/353975.terrain new file mode 100644 index 000000000..12a2be23d Binary files /dev/null and b/public/terrain/19/858564/353975.terrain differ diff --git a/public/terrain/19/858564/353976.terrain b/public/terrain/19/858564/353976.terrain new file mode 100644 index 000000000..d5b312516 Binary files /dev/null and b/public/terrain/19/858564/353976.terrain differ diff --git a/public/terrain/19/858564/353977.terrain b/public/terrain/19/858564/353977.terrain new file mode 100644 index 000000000..140a21869 Binary files /dev/null and b/public/terrain/19/858564/353977.terrain differ diff --git a/public/terrain/19/858564/353978.terrain b/public/terrain/19/858564/353978.terrain new file mode 100644 index 000000000..b15fb013f Binary files /dev/null and b/public/terrain/19/858564/353978.terrain differ diff --git a/public/terrain/19/858564/353979.terrain b/public/terrain/19/858564/353979.terrain new file mode 100644 index 000000000..9da1577a9 Binary files /dev/null and b/public/terrain/19/858564/353979.terrain differ diff --git a/public/terrain/19/858564/353980.terrain b/public/terrain/19/858564/353980.terrain new file mode 100644 index 000000000..90b5c00bb Binary files /dev/null and b/public/terrain/19/858564/353980.terrain differ diff --git a/public/terrain/19/858564/353981.terrain b/public/terrain/19/858564/353981.terrain new file mode 100644 index 000000000..081e326ed Binary files /dev/null and b/public/terrain/19/858564/353981.terrain differ diff --git a/public/terrain/19/858564/353982.terrain b/public/terrain/19/858564/353982.terrain new file mode 100644 index 000000000..9cdff6bd5 Binary files /dev/null and b/public/terrain/19/858564/353982.terrain differ diff --git a/public/terrain/19/858564/353983.terrain b/public/terrain/19/858564/353983.terrain new file mode 100644 index 000000000..37aa85398 Binary files /dev/null and b/public/terrain/19/858564/353983.terrain differ diff --git a/public/terrain/19/858564/353984.terrain b/public/terrain/19/858564/353984.terrain new file mode 100644 index 000000000..092a78c8a Binary files /dev/null and b/public/terrain/19/858564/353984.terrain differ diff --git a/public/terrain/19/858564/353985.terrain b/public/terrain/19/858564/353985.terrain new file mode 100644 index 000000000..464cfad1a Binary files /dev/null and b/public/terrain/19/858564/353985.terrain differ diff --git a/public/terrain/19/858564/353986.terrain b/public/terrain/19/858564/353986.terrain new file mode 100644 index 000000000..d705010b8 Binary files /dev/null and b/public/terrain/19/858564/353986.terrain differ diff --git a/public/terrain/19/858564/353987.terrain b/public/terrain/19/858564/353987.terrain new file mode 100644 index 000000000..574dc1c0c Binary files /dev/null and b/public/terrain/19/858564/353987.terrain differ diff --git a/public/terrain/19/858564/353988.terrain b/public/terrain/19/858564/353988.terrain new file mode 100644 index 000000000..ede10fd3f Binary files /dev/null and b/public/terrain/19/858564/353988.terrain differ diff --git a/public/terrain/19/858564/353989.terrain b/public/terrain/19/858564/353989.terrain new file mode 100644 index 000000000..7c413c2f1 Binary files /dev/null and b/public/terrain/19/858564/353989.terrain differ diff --git a/public/terrain/19/858564/353990.terrain b/public/terrain/19/858564/353990.terrain new file mode 100644 index 000000000..57377ffa2 Binary files /dev/null and b/public/terrain/19/858564/353990.terrain differ diff --git a/public/terrain/19/858564/353991.terrain b/public/terrain/19/858564/353991.terrain new file mode 100644 index 000000000..a4b2dd772 Binary files /dev/null and b/public/terrain/19/858564/353991.terrain differ diff --git a/public/terrain/19/858564/353992.terrain b/public/terrain/19/858564/353992.terrain new file mode 100644 index 000000000..166b5c623 Binary files /dev/null and b/public/terrain/19/858564/353992.terrain differ diff --git a/public/terrain/19/858564/353993.terrain b/public/terrain/19/858564/353993.terrain new file mode 100644 index 000000000..880d2bc51 Binary files /dev/null and b/public/terrain/19/858564/353993.terrain differ diff --git a/public/terrain/19/858564/353994.terrain b/public/terrain/19/858564/353994.terrain new file mode 100644 index 000000000..a02d46f1a Binary files /dev/null and b/public/terrain/19/858564/353994.terrain differ diff --git a/public/terrain/19/858564/353995.terrain b/public/terrain/19/858564/353995.terrain new file mode 100644 index 000000000..e173cfc58 Binary files /dev/null and b/public/terrain/19/858564/353995.terrain differ diff --git a/public/terrain/19/858564/353996.terrain b/public/terrain/19/858564/353996.terrain new file mode 100644 index 000000000..cef386ce9 Binary files /dev/null and b/public/terrain/19/858564/353996.terrain differ diff --git a/public/terrain/19/858564/353997.terrain b/public/terrain/19/858564/353997.terrain new file mode 100644 index 000000000..e12c19343 Binary files /dev/null and b/public/terrain/19/858564/353997.terrain differ diff --git a/public/terrain/19/858564/353998.terrain b/public/terrain/19/858564/353998.terrain new file mode 100644 index 000000000..7ea42d9e0 Binary files /dev/null and b/public/terrain/19/858564/353998.terrain differ diff --git a/public/terrain/19/858564/353999.terrain b/public/terrain/19/858564/353999.terrain new file mode 100644 index 000000000..7a91ba589 Binary files /dev/null and b/public/terrain/19/858564/353999.terrain differ diff --git a/public/terrain/19/858564/354000.terrain b/public/terrain/19/858564/354000.terrain new file mode 100644 index 000000000..5740e82dd Binary files /dev/null and b/public/terrain/19/858564/354000.terrain differ diff --git a/public/terrain/19/858564/354001.terrain b/public/terrain/19/858564/354001.terrain new file mode 100644 index 000000000..ddeadefd0 Binary files /dev/null and b/public/terrain/19/858564/354001.terrain differ diff --git a/public/terrain/19/858564/354002.terrain b/public/terrain/19/858564/354002.terrain new file mode 100644 index 000000000..ce521a823 Binary files /dev/null and b/public/terrain/19/858564/354002.terrain differ diff --git a/public/terrain/19/858564/354003.terrain b/public/terrain/19/858564/354003.terrain new file mode 100644 index 000000000..1dc15ae54 Binary files /dev/null and b/public/terrain/19/858564/354003.terrain differ diff --git a/public/terrain/19/858564/354004.terrain b/public/terrain/19/858564/354004.terrain new file mode 100644 index 000000000..4349d3f50 Binary files /dev/null and b/public/terrain/19/858564/354004.terrain differ diff --git a/public/terrain/19/858564/354005.terrain b/public/terrain/19/858564/354005.terrain new file mode 100644 index 000000000..e919ad0d4 Binary files /dev/null and b/public/terrain/19/858564/354005.terrain differ diff --git a/public/terrain/19/858564/354006.terrain b/public/terrain/19/858564/354006.terrain new file mode 100644 index 000000000..63d798603 Binary files /dev/null and b/public/terrain/19/858564/354006.terrain differ diff --git a/public/terrain/19/858564/354007.terrain b/public/terrain/19/858564/354007.terrain new file mode 100644 index 000000000..0725587a9 Binary files /dev/null and b/public/terrain/19/858564/354007.terrain differ diff --git a/public/terrain/19/858564/354008.terrain b/public/terrain/19/858564/354008.terrain new file mode 100644 index 000000000..546d90f93 Binary files /dev/null and b/public/terrain/19/858564/354008.terrain differ diff --git a/public/terrain/19/858564/354009.terrain b/public/terrain/19/858564/354009.terrain new file mode 100644 index 000000000..a71441d63 Binary files /dev/null and b/public/terrain/19/858564/354009.terrain differ diff --git a/public/terrain/19/858564/354010.terrain b/public/terrain/19/858564/354010.terrain new file mode 100644 index 000000000..645697f58 Binary files /dev/null and b/public/terrain/19/858564/354010.terrain differ diff --git a/public/terrain/19/858564/354011.terrain b/public/terrain/19/858564/354011.terrain new file mode 100644 index 000000000..617aadcd1 Binary files /dev/null and b/public/terrain/19/858564/354011.terrain differ diff --git a/public/terrain/19/858564/354012.terrain b/public/terrain/19/858564/354012.terrain new file mode 100644 index 000000000..ea53db51f Binary files /dev/null and b/public/terrain/19/858564/354012.terrain differ diff --git a/public/terrain/19/858564/354013.terrain b/public/terrain/19/858564/354013.terrain new file mode 100644 index 000000000..879e8b030 Binary files /dev/null and b/public/terrain/19/858564/354013.terrain differ diff --git a/public/terrain/19/858564/354014.terrain b/public/terrain/19/858564/354014.terrain new file mode 100644 index 000000000..fcf5ab606 Binary files /dev/null and b/public/terrain/19/858564/354014.terrain differ diff --git a/public/terrain/19/858564/354015.terrain b/public/terrain/19/858564/354015.terrain new file mode 100644 index 000000000..bc63d5d24 Binary files /dev/null and b/public/terrain/19/858564/354015.terrain differ diff --git a/public/terrain/19/858564/354016.terrain b/public/terrain/19/858564/354016.terrain new file mode 100644 index 000000000..899cec3fc Binary files /dev/null and b/public/terrain/19/858564/354016.terrain differ diff --git a/public/terrain/19/858564/354017.terrain b/public/terrain/19/858564/354017.terrain new file mode 100644 index 000000000..08f0bceb2 Binary files /dev/null and b/public/terrain/19/858564/354017.terrain differ diff --git a/public/terrain/19/858564/354018.terrain b/public/terrain/19/858564/354018.terrain new file mode 100644 index 000000000..20cb2f37b Binary files /dev/null and b/public/terrain/19/858564/354018.terrain differ diff --git a/public/terrain/19/858564/354019.terrain b/public/terrain/19/858564/354019.terrain new file mode 100644 index 000000000..679012ae3 Binary files /dev/null and b/public/terrain/19/858564/354019.terrain differ diff --git a/public/terrain/19/858564/354020.terrain b/public/terrain/19/858564/354020.terrain new file mode 100644 index 000000000..817e7bdf8 Binary files /dev/null and b/public/terrain/19/858564/354020.terrain differ diff --git a/public/terrain/19/858564/354021.terrain b/public/terrain/19/858564/354021.terrain new file mode 100644 index 000000000..2a4b64b71 Binary files /dev/null and b/public/terrain/19/858564/354021.terrain differ diff --git a/public/terrain/19/858564/354022.terrain b/public/terrain/19/858564/354022.terrain new file mode 100644 index 000000000..681798928 Binary files /dev/null and b/public/terrain/19/858564/354022.terrain differ diff --git a/public/terrain/19/858564/354023.terrain b/public/terrain/19/858564/354023.terrain new file mode 100644 index 000000000..8b66eb790 Binary files /dev/null and b/public/terrain/19/858564/354023.terrain differ diff --git a/public/terrain/19/858564/354024.terrain b/public/terrain/19/858564/354024.terrain new file mode 100644 index 000000000..9e60d2c48 Binary files /dev/null and b/public/terrain/19/858564/354024.terrain differ diff --git a/public/terrain/19/858564/354025.terrain b/public/terrain/19/858564/354025.terrain new file mode 100644 index 000000000..caf21f5fb Binary files /dev/null and b/public/terrain/19/858564/354025.terrain differ diff --git a/public/terrain/19/858564/354026.terrain b/public/terrain/19/858564/354026.terrain new file mode 100644 index 000000000..a30540445 Binary files /dev/null and b/public/terrain/19/858564/354026.terrain differ diff --git a/public/terrain/19/858564/354027.terrain b/public/terrain/19/858564/354027.terrain new file mode 100644 index 000000000..66e070e83 Binary files /dev/null and b/public/terrain/19/858564/354027.terrain differ diff --git a/public/terrain/19/858564/354028.terrain b/public/terrain/19/858564/354028.terrain new file mode 100644 index 000000000..c73df3549 Binary files /dev/null and b/public/terrain/19/858564/354028.terrain differ diff --git a/public/terrain/19/858564/354029.terrain b/public/terrain/19/858564/354029.terrain new file mode 100644 index 000000000..17b3ba983 Binary files /dev/null and b/public/terrain/19/858564/354029.terrain differ diff --git a/public/terrain/19/858564/354030.terrain b/public/terrain/19/858564/354030.terrain new file mode 100644 index 000000000..4a751c126 Binary files /dev/null and b/public/terrain/19/858564/354030.terrain differ diff --git a/public/terrain/19/858564/354031.terrain b/public/terrain/19/858564/354031.terrain new file mode 100644 index 000000000..8977d901e Binary files /dev/null and b/public/terrain/19/858564/354031.terrain differ diff --git a/public/terrain/19/858564/354032.terrain b/public/terrain/19/858564/354032.terrain new file mode 100644 index 000000000..ccc6ad4a7 Binary files /dev/null and b/public/terrain/19/858564/354032.terrain differ diff --git a/public/terrain/19/858564/354033.terrain b/public/terrain/19/858564/354033.terrain new file mode 100644 index 000000000..2733ad0ce Binary files /dev/null and b/public/terrain/19/858564/354033.terrain differ diff --git a/public/terrain/19/858564/354034.terrain b/public/terrain/19/858564/354034.terrain new file mode 100644 index 000000000..62cd05b9e Binary files /dev/null and b/public/terrain/19/858564/354034.terrain differ diff --git a/public/terrain/19/858564/354035.terrain b/public/terrain/19/858564/354035.terrain new file mode 100644 index 000000000..051bfe537 Binary files /dev/null and b/public/terrain/19/858564/354035.terrain differ diff --git a/public/terrain/19/858564/354036.terrain b/public/terrain/19/858564/354036.terrain new file mode 100644 index 000000000..cfd9e6948 Binary files /dev/null and b/public/terrain/19/858564/354036.terrain differ diff --git a/public/terrain/19/858564/354037.terrain b/public/terrain/19/858564/354037.terrain new file mode 100644 index 000000000..ca71bb93a Binary files /dev/null and b/public/terrain/19/858564/354037.terrain differ diff --git a/public/terrain/19/858564/354038.terrain b/public/terrain/19/858564/354038.terrain new file mode 100644 index 000000000..6a4fbf4e9 Binary files /dev/null and b/public/terrain/19/858564/354038.terrain differ diff --git a/public/terrain/19/858564/354039.terrain b/public/terrain/19/858564/354039.terrain new file mode 100644 index 000000000..5905ccb24 Binary files /dev/null and b/public/terrain/19/858564/354039.terrain differ diff --git a/public/terrain/19/858564/354040.terrain b/public/terrain/19/858564/354040.terrain new file mode 100644 index 000000000..05800f3d1 Binary files /dev/null and b/public/terrain/19/858564/354040.terrain differ diff --git a/public/terrain/19/858564/354041.terrain b/public/terrain/19/858564/354041.terrain new file mode 100644 index 000000000..c21176f27 Binary files /dev/null and b/public/terrain/19/858564/354041.terrain differ diff --git a/public/terrain/19/858564/354042.terrain b/public/terrain/19/858564/354042.terrain new file mode 100644 index 000000000..867dd82ad Binary files /dev/null and b/public/terrain/19/858564/354042.terrain differ diff --git a/public/terrain/19/858564/354043.terrain b/public/terrain/19/858564/354043.terrain new file mode 100644 index 000000000..287ec314d Binary files /dev/null and b/public/terrain/19/858564/354043.terrain differ diff --git a/public/terrain/19/858564/354044.terrain b/public/terrain/19/858564/354044.terrain new file mode 100644 index 000000000..b675a1b03 Binary files /dev/null and b/public/terrain/19/858564/354044.terrain differ diff --git a/public/terrain/19/858564/354045.terrain b/public/terrain/19/858564/354045.terrain new file mode 100644 index 000000000..92eb41190 Binary files /dev/null and b/public/terrain/19/858564/354045.terrain differ diff --git a/public/terrain/19/858564/354046.terrain b/public/terrain/19/858564/354046.terrain new file mode 100644 index 000000000..90bc63e09 Binary files /dev/null and b/public/terrain/19/858564/354046.terrain differ diff --git a/public/terrain/19/858564/354047.terrain b/public/terrain/19/858564/354047.terrain new file mode 100644 index 000000000..1cf7bbdbe Binary files /dev/null and b/public/terrain/19/858564/354047.terrain differ diff --git a/public/terrain/19/858564/354048.terrain b/public/terrain/19/858564/354048.terrain new file mode 100644 index 000000000..a6917e2ef Binary files /dev/null and b/public/terrain/19/858564/354048.terrain differ diff --git a/public/terrain/19/858564/354049.terrain b/public/terrain/19/858564/354049.terrain new file mode 100644 index 000000000..77c35185c Binary files /dev/null and b/public/terrain/19/858564/354049.terrain differ diff --git a/public/terrain/19/858564/354050.terrain b/public/terrain/19/858564/354050.terrain new file mode 100644 index 000000000..624b3b05b Binary files /dev/null and b/public/terrain/19/858564/354050.terrain differ diff --git a/public/terrain/19/858564/354051.terrain b/public/terrain/19/858564/354051.terrain new file mode 100644 index 000000000..21bd867a3 Binary files /dev/null and b/public/terrain/19/858564/354051.terrain differ diff --git a/public/terrain/19/858564/354052.terrain b/public/terrain/19/858564/354052.terrain new file mode 100644 index 000000000..f973cb731 Binary files /dev/null and b/public/terrain/19/858564/354052.terrain differ diff --git a/public/terrain/19/858564/354053.terrain b/public/terrain/19/858564/354053.terrain new file mode 100644 index 000000000..8ab907593 Binary files /dev/null and b/public/terrain/19/858564/354053.terrain differ diff --git a/public/terrain/19/858564/354054.terrain b/public/terrain/19/858564/354054.terrain new file mode 100644 index 000000000..fc7c6743b Binary files /dev/null and b/public/terrain/19/858564/354054.terrain differ diff --git a/public/terrain/19/858564/354055.terrain b/public/terrain/19/858564/354055.terrain new file mode 100644 index 000000000..811035871 Binary files /dev/null and b/public/terrain/19/858564/354055.terrain differ diff --git a/public/terrain/19/858564/354056.terrain b/public/terrain/19/858564/354056.terrain new file mode 100644 index 000000000..550fb977b Binary files /dev/null and b/public/terrain/19/858564/354056.terrain differ diff --git a/public/terrain/19/858564/354057.terrain b/public/terrain/19/858564/354057.terrain new file mode 100644 index 000000000..34a80fd1a Binary files /dev/null and b/public/terrain/19/858564/354057.terrain differ diff --git a/public/terrain/19/858564/354058.terrain b/public/terrain/19/858564/354058.terrain new file mode 100644 index 000000000..dea0ec7c6 Binary files /dev/null and b/public/terrain/19/858564/354058.terrain differ diff --git a/public/terrain/19/858564/354059.terrain b/public/terrain/19/858564/354059.terrain new file mode 100644 index 000000000..7641aca68 Binary files /dev/null and b/public/terrain/19/858564/354059.terrain differ diff --git a/public/terrain/19/858565/353743.terrain b/public/terrain/19/858565/353743.terrain new file mode 100644 index 000000000..f90ef92ef Binary files /dev/null and b/public/terrain/19/858565/353743.terrain differ diff --git a/public/terrain/19/858565/353744.terrain b/public/terrain/19/858565/353744.terrain new file mode 100644 index 000000000..6f8ab83f0 Binary files /dev/null and b/public/terrain/19/858565/353744.terrain differ diff --git a/public/terrain/19/858565/353745.terrain b/public/terrain/19/858565/353745.terrain new file mode 100644 index 000000000..37863104a Binary files /dev/null and b/public/terrain/19/858565/353745.terrain differ diff --git a/public/terrain/19/858565/353746.terrain b/public/terrain/19/858565/353746.terrain new file mode 100644 index 000000000..0d85e8ef3 Binary files /dev/null and b/public/terrain/19/858565/353746.terrain differ diff --git a/public/terrain/19/858565/353747.terrain b/public/terrain/19/858565/353747.terrain new file mode 100644 index 000000000..9303898b3 Binary files /dev/null and b/public/terrain/19/858565/353747.terrain differ diff --git a/public/terrain/19/858565/353748.terrain b/public/terrain/19/858565/353748.terrain new file mode 100644 index 000000000..8a7dda528 Binary files /dev/null and b/public/terrain/19/858565/353748.terrain differ diff --git a/public/terrain/19/858565/353749.terrain b/public/terrain/19/858565/353749.terrain new file mode 100644 index 000000000..f2bb23673 Binary files /dev/null and b/public/terrain/19/858565/353749.terrain differ diff --git a/public/terrain/19/858565/353750.terrain b/public/terrain/19/858565/353750.terrain new file mode 100644 index 000000000..162540965 Binary files /dev/null and b/public/terrain/19/858565/353750.terrain differ diff --git a/public/terrain/19/858565/353751.terrain b/public/terrain/19/858565/353751.terrain new file mode 100644 index 000000000..7bd5ec306 Binary files /dev/null and b/public/terrain/19/858565/353751.terrain differ diff --git a/public/terrain/19/858565/353752.terrain b/public/terrain/19/858565/353752.terrain new file mode 100644 index 000000000..bfe498589 Binary files /dev/null and b/public/terrain/19/858565/353752.terrain differ diff --git a/public/terrain/19/858565/353753.terrain b/public/terrain/19/858565/353753.terrain new file mode 100644 index 000000000..ca705de1b Binary files /dev/null and b/public/terrain/19/858565/353753.terrain differ diff --git a/public/terrain/19/858565/353754.terrain b/public/terrain/19/858565/353754.terrain new file mode 100644 index 000000000..b8c0a0452 Binary files /dev/null and b/public/terrain/19/858565/353754.terrain differ diff --git a/public/terrain/19/858565/353755.terrain b/public/terrain/19/858565/353755.terrain new file mode 100644 index 000000000..39bf243d2 Binary files /dev/null and b/public/terrain/19/858565/353755.terrain differ diff --git a/public/terrain/19/858565/353756.terrain b/public/terrain/19/858565/353756.terrain new file mode 100644 index 000000000..d24db483b Binary files /dev/null and b/public/terrain/19/858565/353756.terrain differ diff --git a/public/terrain/19/858565/353757.terrain b/public/terrain/19/858565/353757.terrain new file mode 100644 index 000000000..bc0b56162 Binary files /dev/null and b/public/terrain/19/858565/353757.terrain differ diff --git a/public/terrain/19/858565/353758.terrain b/public/terrain/19/858565/353758.terrain new file mode 100644 index 000000000..10f75854c Binary files /dev/null and b/public/terrain/19/858565/353758.terrain differ diff --git a/public/terrain/19/858565/353759.terrain b/public/terrain/19/858565/353759.terrain new file mode 100644 index 000000000..5011fc782 Binary files /dev/null and b/public/terrain/19/858565/353759.terrain differ diff --git a/public/terrain/19/858565/353760.terrain b/public/terrain/19/858565/353760.terrain new file mode 100644 index 000000000..68437f215 Binary files /dev/null and b/public/terrain/19/858565/353760.terrain differ diff --git a/public/terrain/19/858565/353761.terrain b/public/terrain/19/858565/353761.terrain new file mode 100644 index 000000000..964c08c0a Binary files /dev/null and b/public/terrain/19/858565/353761.terrain differ diff --git a/public/terrain/19/858565/353762.terrain b/public/terrain/19/858565/353762.terrain new file mode 100644 index 000000000..c5588b7a9 Binary files /dev/null and b/public/terrain/19/858565/353762.terrain differ diff --git a/public/terrain/19/858565/353763.terrain b/public/terrain/19/858565/353763.terrain new file mode 100644 index 000000000..f7451b4ea Binary files /dev/null and b/public/terrain/19/858565/353763.terrain differ diff --git a/public/terrain/19/858565/353764.terrain b/public/terrain/19/858565/353764.terrain new file mode 100644 index 000000000..5cc0c9c24 Binary files /dev/null and b/public/terrain/19/858565/353764.terrain differ diff --git a/public/terrain/19/858565/353765.terrain b/public/terrain/19/858565/353765.terrain new file mode 100644 index 000000000..1da00798b Binary files /dev/null and b/public/terrain/19/858565/353765.terrain differ diff --git a/public/terrain/19/858565/353766.terrain b/public/terrain/19/858565/353766.terrain new file mode 100644 index 000000000..06b3f8699 Binary files /dev/null and b/public/terrain/19/858565/353766.terrain differ diff --git a/public/terrain/19/858565/353767.terrain b/public/terrain/19/858565/353767.terrain new file mode 100644 index 000000000..3086bfc6a Binary files /dev/null and b/public/terrain/19/858565/353767.terrain differ diff --git a/public/terrain/19/858565/353768.terrain b/public/terrain/19/858565/353768.terrain new file mode 100644 index 000000000..d1f64dc0a Binary files /dev/null and b/public/terrain/19/858565/353768.terrain differ diff --git a/public/terrain/19/858565/353769.terrain b/public/terrain/19/858565/353769.terrain new file mode 100644 index 000000000..55a039be7 Binary files /dev/null and b/public/terrain/19/858565/353769.terrain differ diff --git a/public/terrain/19/858565/353770.terrain b/public/terrain/19/858565/353770.terrain new file mode 100644 index 000000000..162fa9611 Binary files /dev/null and b/public/terrain/19/858565/353770.terrain differ diff --git a/public/terrain/19/858565/353771.terrain b/public/terrain/19/858565/353771.terrain new file mode 100644 index 000000000..799500b26 Binary files /dev/null and b/public/terrain/19/858565/353771.terrain differ diff --git a/public/terrain/19/858565/353772.terrain b/public/terrain/19/858565/353772.terrain new file mode 100644 index 000000000..ccaf1dce5 Binary files /dev/null and b/public/terrain/19/858565/353772.terrain differ diff --git a/public/terrain/19/858565/353773.terrain b/public/terrain/19/858565/353773.terrain new file mode 100644 index 000000000..3c40b5abb Binary files /dev/null and b/public/terrain/19/858565/353773.terrain differ diff --git a/public/terrain/19/858565/353774.terrain b/public/terrain/19/858565/353774.terrain new file mode 100644 index 000000000..83cb8dfcd Binary files /dev/null and b/public/terrain/19/858565/353774.terrain differ diff --git a/public/terrain/19/858565/353775.terrain b/public/terrain/19/858565/353775.terrain new file mode 100644 index 000000000..91fc563cf Binary files /dev/null and b/public/terrain/19/858565/353775.terrain differ diff --git a/public/terrain/19/858565/353776.terrain b/public/terrain/19/858565/353776.terrain new file mode 100644 index 000000000..f08e2a142 Binary files /dev/null and b/public/terrain/19/858565/353776.terrain differ diff --git a/public/terrain/19/858565/353777.terrain b/public/terrain/19/858565/353777.terrain new file mode 100644 index 000000000..1bedb3938 Binary files /dev/null and b/public/terrain/19/858565/353777.terrain differ diff --git a/public/terrain/19/858565/353778.terrain b/public/terrain/19/858565/353778.terrain new file mode 100644 index 000000000..5ea14d15d Binary files /dev/null and b/public/terrain/19/858565/353778.terrain differ diff --git a/public/terrain/19/858565/353779.terrain b/public/terrain/19/858565/353779.terrain new file mode 100644 index 000000000..b18dc78ab Binary files /dev/null and b/public/terrain/19/858565/353779.terrain differ diff --git a/public/terrain/19/858565/353780.terrain b/public/terrain/19/858565/353780.terrain new file mode 100644 index 000000000..fb8cb825b Binary files /dev/null and b/public/terrain/19/858565/353780.terrain differ diff --git a/public/terrain/19/858565/353781.terrain b/public/terrain/19/858565/353781.terrain new file mode 100644 index 000000000..6316e809e Binary files /dev/null and b/public/terrain/19/858565/353781.terrain differ diff --git a/public/terrain/19/858565/353782.terrain b/public/terrain/19/858565/353782.terrain new file mode 100644 index 000000000..38398d893 Binary files /dev/null and b/public/terrain/19/858565/353782.terrain differ diff --git a/public/terrain/19/858565/353783.terrain b/public/terrain/19/858565/353783.terrain new file mode 100644 index 000000000..ddf87013d Binary files /dev/null and b/public/terrain/19/858565/353783.terrain differ diff --git a/public/terrain/19/858565/353784.terrain b/public/terrain/19/858565/353784.terrain new file mode 100644 index 000000000..d47f20323 Binary files /dev/null and b/public/terrain/19/858565/353784.terrain differ diff --git a/public/terrain/19/858565/353785.terrain b/public/terrain/19/858565/353785.terrain new file mode 100644 index 000000000..071941e75 Binary files /dev/null and b/public/terrain/19/858565/353785.terrain differ diff --git a/public/terrain/19/858565/353786.terrain b/public/terrain/19/858565/353786.terrain new file mode 100644 index 000000000..62e53dfe6 Binary files /dev/null and b/public/terrain/19/858565/353786.terrain differ diff --git a/public/terrain/19/858565/353787.terrain b/public/terrain/19/858565/353787.terrain new file mode 100644 index 000000000..f43034dce Binary files /dev/null and b/public/terrain/19/858565/353787.terrain differ diff --git a/public/terrain/19/858565/353788.terrain b/public/terrain/19/858565/353788.terrain new file mode 100644 index 000000000..632736ee9 Binary files /dev/null and b/public/terrain/19/858565/353788.terrain differ diff --git a/public/terrain/19/858565/353789.terrain b/public/terrain/19/858565/353789.terrain new file mode 100644 index 000000000..123212f1f Binary files /dev/null and b/public/terrain/19/858565/353789.terrain differ diff --git a/public/terrain/19/858565/353790.terrain b/public/terrain/19/858565/353790.terrain new file mode 100644 index 000000000..c1ee92386 Binary files /dev/null and b/public/terrain/19/858565/353790.terrain differ diff --git a/public/terrain/19/858565/353791.terrain b/public/terrain/19/858565/353791.terrain new file mode 100644 index 000000000..2e429d6b1 Binary files /dev/null and b/public/terrain/19/858565/353791.terrain differ diff --git a/public/terrain/19/858565/353792.terrain b/public/terrain/19/858565/353792.terrain new file mode 100644 index 000000000..a83e9fb33 Binary files /dev/null and b/public/terrain/19/858565/353792.terrain differ diff --git a/public/terrain/19/858565/353793.terrain b/public/terrain/19/858565/353793.terrain new file mode 100644 index 000000000..f5f6d64ba Binary files /dev/null and b/public/terrain/19/858565/353793.terrain differ diff --git a/public/terrain/19/858565/353794.terrain b/public/terrain/19/858565/353794.terrain new file mode 100644 index 000000000..04e254cb9 Binary files /dev/null and b/public/terrain/19/858565/353794.terrain differ diff --git a/public/terrain/19/858565/353795.terrain b/public/terrain/19/858565/353795.terrain new file mode 100644 index 000000000..9fed4c2e2 Binary files /dev/null and b/public/terrain/19/858565/353795.terrain differ diff --git a/public/terrain/19/858565/353796.terrain b/public/terrain/19/858565/353796.terrain new file mode 100644 index 000000000..85947b284 Binary files /dev/null and b/public/terrain/19/858565/353796.terrain differ diff --git a/public/terrain/19/858565/353797.terrain b/public/terrain/19/858565/353797.terrain new file mode 100644 index 000000000..5bd5396d0 Binary files /dev/null and b/public/terrain/19/858565/353797.terrain differ diff --git a/public/terrain/19/858565/353798.terrain b/public/terrain/19/858565/353798.terrain new file mode 100644 index 000000000..486d2b9bc Binary files /dev/null and b/public/terrain/19/858565/353798.terrain differ diff --git a/public/terrain/19/858565/353799.terrain b/public/terrain/19/858565/353799.terrain new file mode 100644 index 000000000..492626704 Binary files /dev/null and b/public/terrain/19/858565/353799.terrain differ diff --git a/public/terrain/19/858565/353800.terrain b/public/terrain/19/858565/353800.terrain new file mode 100644 index 000000000..c36eae5a1 Binary files /dev/null and b/public/terrain/19/858565/353800.terrain differ diff --git a/public/terrain/19/858565/353801.terrain b/public/terrain/19/858565/353801.terrain new file mode 100644 index 000000000..59c1cba81 Binary files /dev/null and b/public/terrain/19/858565/353801.terrain differ diff --git a/public/terrain/19/858565/353802.terrain b/public/terrain/19/858565/353802.terrain new file mode 100644 index 000000000..d3a323350 Binary files /dev/null and b/public/terrain/19/858565/353802.terrain differ diff --git a/public/terrain/19/858565/353803.terrain b/public/terrain/19/858565/353803.terrain new file mode 100644 index 000000000..13136fe02 Binary files /dev/null and b/public/terrain/19/858565/353803.terrain differ diff --git a/public/terrain/19/858565/353804.terrain b/public/terrain/19/858565/353804.terrain new file mode 100644 index 000000000..f23d34922 Binary files /dev/null and b/public/terrain/19/858565/353804.terrain differ diff --git a/public/terrain/19/858565/353805.terrain b/public/terrain/19/858565/353805.terrain new file mode 100644 index 000000000..abb50fd4d Binary files /dev/null and b/public/terrain/19/858565/353805.terrain differ diff --git a/public/terrain/19/858565/353806.terrain b/public/terrain/19/858565/353806.terrain new file mode 100644 index 000000000..66157e469 Binary files /dev/null and b/public/terrain/19/858565/353806.terrain differ diff --git a/public/terrain/19/858565/353807.terrain b/public/terrain/19/858565/353807.terrain new file mode 100644 index 000000000..0fa714c0f Binary files /dev/null and b/public/terrain/19/858565/353807.terrain differ diff --git a/public/terrain/19/858565/353808.terrain b/public/terrain/19/858565/353808.terrain new file mode 100644 index 000000000..847d6a57f Binary files /dev/null and b/public/terrain/19/858565/353808.terrain differ diff --git a/public/terrain/19/858565/353809.terrain b/public/terrain/19/858565/353809.terrain new file mode 100644 index 000000000..0b7ee2257 Binary files /dev/null and b/public/terrain/19/858565/353809.terrain differ diff --git a/public/terrain/19/858565/353810.terrain b/public/terrain/19/858565/353810.terrain new file mode 100644 index 000000000..8814fafa2 Binary files /dev/null and b/public/terrain/19/858565/353810.terrain differ diff --git a/public/terrain/19/858565/353811.terrain b/public/terrain/19/858565/353811.terrain new file mode 100644 index 000000000..824bd79cc Binary files /dev/null and b/public/terrain/19/858565/353811.terrain differ diff --git a/public/terrain/19/858565/353812.terrain b/public/terrain/19/858565/353812.terrain new file mode 100644 index 000000000..308575121 Binary files /dev/null and b/public/terrain/19/858565/353812.terrain differ diff --git a/public/terrain/19/858565/353813.terrain b/public/terrain/19/858565/353813.terrain new file mode 100644 index 000000000..2a9b99004 Binary files /dev/null and b/public/terrain/19/858565/353813.terrain differ diff --git a/public/terrain/19/858565/353814.terrain b/public/terrain/19/858565/353814.terrain new file mode 100644 index 000000000..2ca81472c Binary files /dev/null and b/public/terrain/19/858565/353814.terrain differ diff --git a/public/terrain/19/858565/353815.terrain b/public/terrain/19/858565/353815.terrain new file mode 100644 index 000000000..0416dca51 Binary files /dev/null and b/public/terrain/19/858565/353815.terrain differ diff --git a/public/terrain/19/858565/353816.terrain b/public/terrain/19/858565/353816.terrain new file mode 100644 index 000000000..a756b93b7 Binary files /dev/null and b/public/terrain/19/858565/353816.terrain differ diff --git a/public/terrain/19/858565/353817.terrain b/public/terrain/19/858565/353817.terrain new file mode 100644 index 000000000..997c2ce3b Binary files /dev/null and b/public/terrain/19/858565/353817.terrain differ diff --git a/public/terrain/19/858565/353818.terrain b/public/terrain/19/858565/353818.terrain new file mode 100644 index 000000000..612ce6131 Binary files /dev/null and b/public/terrain/19/858565/353818.terrain differ diff --git a/public/terrain/19/858565/353819.terrain b/public/terrain/19/858565/353819.terrain new file mode 100644 index 000000000..2138ba27b Binary files /dev/null and b/public/terrain/19/858565/353819.terrain differ diff --git a/public/terrain/19/858565/353820.terrain b/public/terrain/19/858565/353820.terrain new file mode 100644 index 000000000..3641991ee Binary files /dev/null and b/public/terrain/19/858565/353820.terrain differ diff --git a/public/terrain/19/858565/353821.terrain b/public/terrain/19/858565/353821.terrain new file mode 100644 index 000000000..0b4fe07d2 Binary files /dev/null and b/public/terrain/19/858565/353821.terrain differ diff --git a/public/terrain/19/858565/353822.terrain b/public/terrain/19/858565/353822.terrain new file mode 100644 index 000000000..60e7037e9 Binary files /dev/null and b/public/terrain/19/858565/353822.terrain differ diff --git a/public/terrain/19/858565/353823.terrain b/public/terrain/19/858565/353823.terrain new file mode 100644 index 000000000..fa3c28868 Binary files /dev/null and b/public/terrain/19/858565/353823.terrain differ diff --git a/public/terrain/19/858565/353824.terrain b/public/terrain/19/858565/353824.terrain new file mode 100644 index 000000000..443318edf Binary files /dev/null and b/public/terrain/19/858565/353824.terrain differ diff --git a/public/terrain/19/858565/353825.terrain b/public/terrain/19/858565/353825.terrain new file mode 100644 index 000000000..11e699024 Binary files /dev/null and b/public/terrain/19/858565/353825.terrain differ diff --git a/public/terrain/19/858565/353826.terrain b/public/terrain/19/858565/353826.terrain new file mode 100644 index 000000000..366ad43a4 Binary files /dev/null and b/public/terrain/19/858565/353826.terrain differ diff --git a/public/terrain/19/858565/353827.terrain b/public/terrain/19/858565/353827.terrain new file mode 100644 index 000000000..415628668 Binary files /dev/null and b/public/terrain/19/858565/353827.terrain differ diff --git a/public/terrain/19/858565/353828.terrain b/public/terrain/19/858565/353828.terrain new file mode 100644 index 000000000..3b1596af8 Binary files /dev/null and b/public/terrain/19/858565/353828.terrain differ diff --git a/public/terrain/19/858565/353829.terrain b/public/terrain/19/858565/353829.terrain new file mode 100644 index 000000000..dbcc36fa6 Binary files /dev/null and b/public/terrain/19/858565/353829.terrain differ diff --git a/public/terrain/19/858565/353830.terrain b/public/terrain/19/858565/353830.terrain new file mode 100644 index 000000000..e0c517921 Binary files /dev/null and b/public/terrain/19/858565/353830.terrain differ diff --git a/public/terrain/19/858565/353831.terrain b/public/terrain/19/858565/353831.terrain new file mode 100644 index 000000000..81c56b83d Binary files /dev/null and b/public/terrain/19/858565/353831.terrain differ diff --git a/public/terrain/19/858565/353832.terrain b/public/terrain/19/858565/353832.terrain new file mode 100644 index 000000000..817b558af Binary files /dev/null and b/public/terrain/19/858565/353832.terrain differ diff --git a/public/terrain/19/858565/353833.terrain b/public/terrain/19/858565/353833.terrain new file mode 100644 index 000000000..5307d0b12 Binary files /dev/null and b/public/terrain/19/858565/353833.terrain differ diff --git a/public/terrain/19/858565/353834.terrain b/public/terrain/19/858565/353834.terrain new file mode 100644 index 000000000..ef3b0f65c Binary files /dev/null and b/public/terrain/19/858565/353834.terrain differ diff --git a/public/terrain/19/858565/353835.terrain b/public/terrain/19/858565/353835.terrain new file mode 100644 index 000000000..0597f89cf Binary files /dev/null and b/public/terrain/19/858565/353835.terrain differ diff --git a/public/terrain/19/858565/353836.terrain b/public/terrain/19/858565/353836.terrain new file mode 100644 index 000000000..dd2785b41 Binary files /dev/null and b/public/terrain/19/858565/353836.terrain differ diff --git a/public/terrain/19/858565/353837.terrain b/public/terrain/19/858565/353837.terrain new file mode 100644 index 000000000..c21d940c7 Binary files /dev/null and b/public/terrain/19/858565/353837.terrain differ diff --git a/public/terrain/19/858565/353838.terrain b/public/terrain/19/858565/353838.terrain new file mode 100644 index 000000000..c8abbbdc5 Binary files /dev/null and b/public/terrain/19/858565/353838.terrain differ diff --git a/public/terrain/19/858565/353839.terrain b/public/terrain/19/858565/353839.terrain new file mode 100644 index 000000000..06d520565 Binary files /dev/null and b/public/terrain/19/858565/353839.terrain differ diff --git a/public/terrain/19/858565/353840.terrain b/public/terrain/19/858565/353840.terrain new file mode 100644 index 000000000..da104fcc1 Binary files /dev/null and b/public/terrain/19/858565/353840.terrain differ diff --git a/public/terrain/19/858565/353841.terrain b/public/terrain/19/858565/353841.terrain new file mode 100644 index 000000000..84b9d788e Binary files /dev/null and b/public/terrain/19/858565/353841.terrain differ diff --git a/public/terrain/19/858565/353842.terrain b/public/terrain/19/858565/353842.terrain new file mode 100644 index 000000000..b305d9250 Binary files /dev/null and b/public/terrain/19/858565/353842.terrain differ diff --git a/public/terrain/19/858565/353843.terrain b/public/terrain/19/858565/353843.terrain new file mode 100644 index 000000000..cd9f39b9d Binary files /dev/null and b/public/terrain/19/858565/353843.terrain differ diff --git a/public/terrain/19/858565/353844.terrain b/public/terrain/19/858565/353844.terrain new file mode 100644 index 000000000..d9a1c347c Binary files /dev/null and b/public/terrain/19/858565/353844.terrain differ diff --git a/public/terrain/19/858565/353845.terrain b/public/terrain/19/858565/353845.terrain new file mode 100644 index 000000000..824694185 Binary files /dev/null and b/public/terrain/19/858565/353845.terrain differ diff --git a/public/terrain/19/858565/353846.terrain b/public/terrain/19/858565/353846.terrain new file mode 100644 index 000000000..da914b7ff Binary files /dev/null and b/public/terrain/19/858565/353846.terrain differ diff --git a/public/terrain/19/858565/353847.terrain b/public/terrain/19/858565/353847.terrain new file mode 100644 index 000000000..dd266c8da Binary files /dev/null and b/public/terrain/19/858565/353847.terrain differ diff --git a/public/terrain/19/858565/353848.terrain b/public/terrain/19/858565/353848.terrain new file mode 100644 index 000000000..a1b4efb11 Binary files /dev/null and b/public/terrain/19/858565/353848.terrain differ diff --git a/public/terrain/19/858565/353849.terrain b/public/terrain/19/858565/353849.terrain new file mode 100644 index 000000000..6cc9fddb2 Binary files /dev/null and b/public/terrain/19/858565/353849.terrain differ diff --git a/public/terrain/19/858565/353850.terrain b/public/terrain/19/858565/353850.terrain new file mode 100644 index 000000000..6be79fea6 Binary files /dev/null and b/public/terrain/19/858565/353850.terrain differ diff --git a/public/terrain/19/858565/353851.terrain b/public/terrain/19/858565/353851.terrain new file mode 100644 index 000000000..833e829f4 Binary files /dev/null and b/public/terrain/19/858565/353851.terrain differ diff --git a/public/terrain/19/858565/353852.terrain b/public/terrain/19/858565/353852.terrain new file mode 100644 index 000000000..bd96c1a9d Binary files /dev/null and b/public/terrain/19/858565/353852.terrain differ diff --git a/public/terrain/19/858565/353853.terrain b/public/terrain/19/858565/353853.terrain new file mode 100644 index 000000000..4a7215a61 Binary files /dev/null and b/public/terrain/19/858565/353853.terrain differ diff --git a/public/terrain/19/858565/353854.terrain b/public/terrain/19/858565/353854.terrain new file mode 100644 index 000000000..0ec102d85 Binary files /dev/null and b/public/terrain/19/858565/353854.terrain differ diff --git a/public/terrain/19/858565/353855.terrain b/public/terrain/19/858565/353855.terrain new file mode 100644 index 000000000..bde1923da Binary files /dev/null and b/public/terrain/19/858565/353855.terrain differ diff --git a/public/terrain/19/858565/353856.terrain b/public/terrain/19/858565/353856.terrain new file mode 100644 index 000000000..2747eb8b4 Binary files /dev/null and b/public/terrain/19/858565/353856.terrain differ diff --git a/public/terrain/19/858565/353857.terrain b/public/terrain/19/858565/353857.terrain new file mode 100644 index 000000000..2ff78cbfe Binary files /dev/null and b/public/terrain/19/858565/353857.terrain differ diff --git a/public/terrain/19/858565/353858.terrain b/public/terrain/19/858565/353858.terrain new file mode 100644 index 000000000..2a54752ac Binary files /dev/null and b/public/terrain/19/858565/353858.terrain differ diff --git a/public/terrain/19/858565/353859.terrain b/public/terrain/19/858565/353859.terrain new file mode 100644 index 000000000..c3f4306a7 Binary files /dev/null and b/public/terrain/19/858565/353859.terrain differ diff --git a/public/terrain/19/858565/353860.terrain b/public/terrain/19/858565/353860.terrain new file mode 100644 index 000000000..5593d067a Binary files /dev/null and b/public/terrain/19/858565/353860.terrain differ diff --git a/public/terrain/19/858565/353861.terrain b/public/terrain/19/858565/353861.terrain new file mode 100644 index 000000000..c23fb5fbd Binary files /dev/null and b/public/terrain/19/858565/353861.terrain differ diff --git a/public/terrain/19/858565/353862.terrain b/public/terrain/19/858565/353862.terrain new file mode 100644 index 000000000..a97b5f8ed Binary files /dev/null and b/public/terrain/19/858565/353862.terrain differ diff --git a/public/terrain/19/858565/353863.terrain b/public/terrain/19/858565/353863.terrain new file mode 100644 index 000000000..b13f987cf Binary files /dev/null and b/public/terrain/19/858565/353863.terrain differ diff --git a/public/terrain/19/858565/353864.terrain b/public/terrain/19/858565/353864.terrain new file mode 100644 index 000000000..2cf5c1f34 Binary files /dev/null and b/public/terrain/19/858565/353864.terrain differ diff --git a/public/terrain/19/858565/353865.terrain b/public/terrain/19/858565/353865.terrain new file mode 100644 index 000000000..bb7e82b95 Binary files /dev/null and b/public/terrain/19/858565/353865.terrain differ diff --git a/public/terrain/19/858565/353866.terrain b/public/terrain/19/858565/353866.terrain new file mode 100644 index 000000000..82caa3240 Binary files /dev/null and b/public/terrain/19/858565/353866.terrain differ diff --git a/public/terrain/19/858565/353867.terrain b/public/terrain/19/858565/353867.terrain new file mode 100644 index 000000000..fb91e5512 Binary files /dev/null and b/public/terrain/19/858565/353867.terrain differ diff --git a/public/terrain/19/858565/353868.terrain b/public/terrain/19/858565/353868.terrain new file mode 100644 index 000000000..d5f6a4cd9 Binary files /dev/null and b/public/terrain/19/858565/353868.terrain differ diff --git a/public/terrain/19/858565/353869.terrain b/public/terrain/19/858565/353869.terrain new file mode 100644 index 000000000..0440be9af Binary files /dev/null and b/public/terrain/19/858565/353869.terrain differ diff --git a/public/terrain/19/858565/353870.terrain b/public/terrain/19/858565/353870.terrain new file mode 100644 index 000000000..58b71d543 Binary files /dev/null and b/public/terrain/19/858565/353870.terrain differ diff --git a/public/terrain/19/858565/353871.terrain b/public/terrain/19/858565/353871.terrain new file mode 100644 index 000000000..9ea761270 Binary files /dev/null and b/public/terrain/19/858565/353871.terrain differ diff --git a/public/terrain/19/858565/353872.terrain b/public/terrain/19/858565/353872.terrain new file mode 100644 index 000000000..29ecb9f05 Binary files /dev/null and b/public/terrain/19/858565/353872.terrain differ diff --git a/public/terrain/19/858565/353873.terrain b/public/terrain/19/858565/353873.terrain new file mode 100644 index 000000000..b2fe0f724 Binary files /dev/null and b/public/terrain/19/858565/353873.terrain differ diff --git a/public/terrain/19/858565/353874.terrain b/public/terrain/19/858565/353874.terrain new file mode 100644 index 000000000..8b1b89d69 Binary files /dev/null and b/public/terrain/19/858565/353874.terrain differ diff --git a/public/terrain/19/858565/353875.terrain b/public/terrain/19/858565/353875.terrain new file mode 100644 index 000000000..e52d90036 Binary files /dev/null and b/public/terrain/19/858565/353875.terrain differ diff --git a/public/terrain/19/858565/353876.terrain b/public/terrain/19/858565/353876.terrain new file mode 100644 index 000000000..7ee536ab5 Binary files /dev/null and b/public/terrain/19/858565/353876.terrain differ diff --git a/public/terrain/19/858565/353877.terrain b/public/terrain/19/858565/353877.terrain new file mode 100644 index 000000000..c28c834de Binary files /dev/null and b/public/terrain/19/858565/353877.terrain differ diff --git a/public/terrain/19/858565/353878.terrain b/public/terrain/19/858565/353878.terrain new file mode 100644 index 000000000..45a4ac9aa Binary files /dev/null and b/public/terrain/19/858565/353878.terrain differ diff --git a/public/terrain/19/858565/353879.terrain b/public/terrain/19/858565/353879.terrain new file mode 100644 index 000000000..80ac821f0 Binary files /dev/null and b/public/terrain/19/858565/353879.terrain differ diff --git a/public/terrain/19/858565/353880.terrain b/public/terrain/19/858565/353880.terrain new file mode 100644 index 000000000..9cacd6f22 Binary files /dev/null and b/public/terrain/19/858565/353880.terrain differ diff --git a/public/terrain/19/858565/353881.terrain b/public/terrain/19/858565/353881.terrain new file mode 100644 index 000000000..2b71fe809 Binary files /dev/null and b/public/terrain/19/858565/353881.terrain differ diff --git a/public/terrain/19/858565/353882.terrain b/public/terrain/19/858565/353882.terrain new file mode 100644 index 000000000..6647cb411 Binary files /dev/null and b/public/terrain/19/858565/353882.terrain differ diff --git a/public/terrain/19/858565/353883.terrain b/public/terrain/19/858565/353883.terrain new file mode 100644 index 000000000..6126b9d84 Binary files /dev/null and b/public/terrain/19/858565/353883.terrain differ diff --git a/public/terrain/19/858565/353884.terrain b/public/terrain/19/858565/353884.terrain new file mode 100644 index 000000000..4a1f26480 Binary files /dev/null and b/public/terrain/19/858565/353884.terrain differ diff --git a/public/terrain/19/858565/353885.terrain b/public/terrain/19/858565/353885.terrain new file mode 100644 index 000000000..cc7eb05ed Binary files /dev/null and b/public/terrain/19/858565/353885.terrain differ diff --git a/public/terrain/19/858565/353886.terrain b/public/terrain/19/858565/353886.terrain new file mode 100644 index 000000000..5dcc97978 Binary files /dev/null and b/public/terrain/19/858565/353886.terrain differ diff --git a/public/terrain/19/858565/353887.terrain b/public/terrain/19/858565/353887.terrain new file mode 100644 index 000000000..ddbefddf9 Binary files /dev/null and b/public/terrain/19/858565/353887.terrain differ diff --git a/public/terrain/19/858565/353888.terrain b/public/terrain/19/858565/353888.terrain new file mode 100644 index 000000000..c49c58553 Binary files /dev/null and b/public/terrain/19/858565/353888.terrain differ diff --git a/public/terrain/19/858565/353889.terrain b/public/terrain/19/858565/353889.terrain new file mode 100644 index 000000000..d3d4ce5d4 Binary files /dev/null and b/public/terrain/19/858565/353889.terrain differ diff --git a/public/terrain/19/858565/353890.terrain b/public/terrain/19/858565/353890.terrain new file mode 100644 index 000000000..34c9cb546 Binary files /dev/null and b/public/terrain/19/858565/353890.terrain differ diff --git a/public/terrain/19/858565/353891.terrain b/public/terrain/19/858565/353891.terrain new file mode 100644 index 000000000..a957069f7 Binary files /dev/null and b/public/terrain/19/858565/353891.terrain differ diff --git a/public/terrain/19/858565/353892.terrain b/public/terrain/19/858565/353892.terrain new file mode 100644 index 000000000..41cfccc00 Binary files /dev/null and b/public/terrain/19/858565/353892.terrain differ diff --git a/public/terrain/19/858565/353893.terrain b/public/terrain/19/858565/353893.terrain new file mode 100644 index 000000000..1c371ecac Binary files /dev/null and b/public/terrain/19/858565/353893.terrain differ diff --git a/public/terrain/19/858565/353894.terrain b/public/terrain/19/858565/353894.terrain new file mode 100644 index 000000000..ed2699d2f Binary files /dev/null and b/public/terrain/19/858565/353894.terrain differ diff --git a/public/terrain/19/858565/353895.terrain b/public/terrain/19/858565/353895.terrain new file mode 100644 index 000000000..780da0ca0 Binary files /dev/null and b/public/terrain/19/858565/353895.terrain differ diff --git a/public/terrain/19/858565/353896.terrain b/public/terrain/19/858565/353896.terrain new file mode 100644 index 000000000..105478f12 Binary files /dev/null and b/public/terrain/19/858565/353896.terrain differ diff --git a/public/terrain/19/858565/353897.terrain b/public/terrain/19/858565/353897.terrain new file mode 100644 index 000000000..01a638c13 Binary files /dev/null and b/public/terrain/19/858565/353897.terrain differ diff --git a/public/terrain/19/858565/353898.terrain b/public/terrain/19/858565/353898.terrain new file mode 100644 index 000000000..b7f84371b Binary files /dev/null and b/public/terrain/19/858565/353898.terrain differ diff --git a/public/terrain/19/858565/353899.terrain b/public/terrain/19/858565/353899.terrain new file mode 100644 index 000000000..8b7f5ad3f Binary files /dev/null and b/public/terrain/19/858565/353899.terrain differ diff --git a/public/terrain/19/858565/353900.terrain b/public/terrain/19/858565/353900.terrain new file mode 100644 index 000000000..73e988e5a Binary files /dev/null and b/public/terrain/19/858565/353900.terrain differ diff --git a/public/terrain/19/858565/353901.terrain b/public/terrain/19/858565/353901.terrain new file mode 100644 index 000000000..9366e61b8 Binary files /dev/null and b/public/terrain/19/858565/353901.terrain differ diff --git a/public/terrain/19/858565/353902.terrain b/public/terrain/19/858565/353902.terrain new file mode 100644 index 000000000..db1241278 Binary files /dev/null and b/public/terrain/19/858565/353902.terrain differ diff --git a/public/terrain/19/858565/353903.terrain b/public/terrain/19/858565/353903.terrain new file mode 100644 index 000000000..80bb10edd Binary files /dev/null and b/public/terrain/19/858565/353903.terrain differ diff --git a/public/terrain/19/858565/353904.terrain b/public/terrain/19/858565/353904.terrain new file mode 100644 index 000000000..3ca65e40c Binary files /dev/null and b/public/terrain/19/858565/353904.terrain differ diff --git a/public/terrain/19/858565/353905.terrain b/public/terrain/19/858565/353905.terrain new file mode 100644 index 000000000..4355d5122 Binary files /dev/null and b/public/terrain/19/858565/353905.terrain differ diff --git a/public/terrain/19/858565/353906.terrain b/public/terrain/19/858565/353906.terrain new file mode 100644 index 000000000..4873e0ca5 Binary files /dev/null and b/public/terrain/19/858565/353906.terrain differ diff --git a/public/terrain/19/858565/353907.terrain b/public/terrain/19/858565/353907.terrain new file mode 100644 index 000000000..a98b6ee72 Binary files /dev/null and b/public/terrain/19/858565/353907.terrain differ diff --git a/public/terrain/19/858565/353908.terrain b/public/terrain/19/858565/353908.terrain new file mode 100644 index 000000000..2713fbbd3 Binary files /dev/null and b/public/terrain/19/858565/353908.terrain differ diff --git a/public/terrain/19/858565/353909.terrain b/public/terrain/19/858565/353909.terrain new file mode 100644 index 000000000..b1e686bce Binary files /dev/null and b/public/terrain/19/858565/353909.terrain differ diff --git a/public/terrain/19/858565/353910.terrain b/public/terrain/19/858565/353910.terrain new file mode 100644 index 000000000..694c6533f Binary files /dev/null and b/public/terrain/19/858565/353910.terrain differ diff --git a/public/terrain/19/858565/353911.terrain b/public/terrain/19/858565/353911.terrain new file mode 100644 index 000000000..35c1420d3 Binary files /dev/null and b/public/terrain/19/858565/353911.terrain differ diff --git a/public/terrain/19/858565/353912.terrain b/public/terrain/19/858565/353912.terrain new file mode 100644 index 000000000..253cadf68 Binary files /dev/null and b/public/terrain/19/858565/353912.terrain differ diff --git a/public/terrain/19/858565/353913.terrain b/public/terrain/19/858565/353913.terrain new file mode 100644 index 000000000..fc2cd9903 Binary files /dev/null and b/public/terrain/19/858565/353913.terrain differ diff --git a/public/terrain/19/858565/353914.terrain b/public/terrain/19/858565/353914.terrain new file mode 100644 index 000000000..b94c41263 Binary files /dev/null and b/public/terrain/19/858565/353914.terrain differ diff --git a/public/terrain/19/858565/353915.terrain b/public/terrain/19/858565/353915.terrain new file mode 100644 index 000000000..1cd5289c4 Binary files /dev/null and b/public/terrain/19/858565/353915.terrain differ diff --git a/public/terrain/19/858565/353916.terrain b/public/terrain/19/858565/353916.terrain new file mode 100644 index 000000000..be575e7eb Binary files /dev/null and b/public/terrain/19/858565/353916.terrain differ diff --git a/public/terrain/19/858565/353917.terrain b/public/terrain/19/858565/353917.terrain new file mode 100644 index 000000000..1657c0b1c Binary files /dev/null and b/public/terrain/19/858565/353917.terrain differ diff --git a/public/terrain/19/858565/353918.terrain b/public/terrain/19/858565/353918.terrain new file mode 100644 index 000000000..09c3f0040 Binary files /dev/null and b/public/terrain/19/858565/353918.terrain differ diff --git a/public/terrain/19/858565/353919.terrain b/public/terrain/19/858565/353919.terrain new file mode 100644 index 000000000..d01ae09ca Binary files /dev/null and b/public/terrain/19/858565/353919.terrain differ diff --git a/public/terrain/19/858565/353920.terrain b/public/terrain/19/858565/353920.terrain new file mode 100644 index 000000000..6100cf3b9 Binary files /dev/null and b/public/terrain/19/858565/353920.terrain differ diff --git a/public/terrain/19/858565/353921.terrain b/public/terrain/19/858565/353921.terrain new file mode 100644 index 000000000..e2c8ef332 Binary files /dev/null and b/public/terrain/19/858565/353921.terrain differ diff --git a/public/terrain/19/858565/353922.terrain b/public/terrain/19/858565/353922.terrain new file mode 100644 index 000000000..6fc3a5e0b Binary files /dev/null and b/public/terrain/19/858565/353922.terrain differ diff --git a/public/terrain/19/858565/353923.terrain b/public/terrain/19/858565/353923.terrain new file mode 100644 index 000000000..facbc9e45 Binary files /dev/null and b/public/terrain/19/858565/353923.terrain differ diff --git a/public/terrain/19/858565/353924.terrain b/public/terrain/19/858565/353924.terrain new file mode 100644 index 000000000..86cb0e80d Binary files /dev/null and b/public/terrain/19/858565/353924.terrain differ diff --git a/public/terrain/19/858565/353925.terrain b/public/terrain/19/858565/353925.terrain new file mode 100644 index 000000000..a8fdc4bd2 Binary files /dev/null and b/public/terrain/19/858565/353925.terrain differ diff --git a/public/terrain/19/858565/353926.terrain b/public/terrain/19/858565/353926.terrain new file mode 100644 index 000000000..08ee624bb Binary files /dev/null and b/public/terrain/19/858565/353926.terrain differ diff --git a/public/terrain/19/858565/353927.terrain b/public/terrain/19/858565/353927.terrain new file mode 100644 index 000000000..c24bdd369 Binary files /dev/null and b/public/terrain/19/858565/353927.terrain differ diff --git a/public/terrain/19/858565/353928.terrain b/public/terrain/19/858565/353928.terrain new file mode 100644 index 000000000..1f144a606 Binary files /dev/null and b/public/terrain/19/858565/353928.terrain differ diff --git a/public/terrain/19/858565/353929.terrain b/public/terrain/19/858565/353929.terrain new file mode 100644 index 000000000..2ce71b2b4 Binary files /dev/null and b/public/terrain/19/858565/353929.terrain differ diff --git a/public/terrain/19/858565/353930.terrain b/public/terrain/19/858565/353930.terrain new file mode 100644 index 000000000..f311d22d8 Binary files /dev/null and b/public/terrain/19/858565/353930.terrain differ diff --git a/public/terrain/19/858565/353931.terrain b/public/terrain/19/858565/353931.terrain new file mode 100644 index 000000000..426c12eec Binary files /dev/null and b/public/terrain/19/858565/353931.terrain differ diff --git a/public/terrain/19/858565/353932.terrain b/public/terrain/19/858565/353932.terrain new file mode 100644 index 000000000..8ce0b9e63 Binary files /dev/null and b/public/terrain/19/858565/353932.terrain differ diff --git a/public/terrain/19/858565/353933.terrain b/public/terrain/19/858565/353933.terrain new file mode 100644 index 000000000..20153ce74 Binary files /dev/null and b/public/terrain/19/858565/353933.terrain differ diff --git a/public/terrain/19/858565/353934.terrain b/public/terrain/19/858565/353934.terrain new file mode 100644 index 000000000..ef4214c90 Binary files /dev/null and b/public/terrain/19/858565/353934.terrain differ diff --git a/public/terrain/19/858565/353935.terrain b/public/terrain/19/858565/353935.terrain new file mode 100644 index 000000000..d233ddd43 Binary files /dev/null and b/public/terrain/19/858565/353935.terrain differ diff --git a/public/terrain/19/858565/353936.terrain b/public/terrain/19/858565/353936.terrain new file mode 100644 index 000000000..5181de52b Binary files /dev/null and b/public/terrain/19/858565/353936.terrain differ diff --git a/public/terrain/19/858565/353937.terrain b/public/terrain/19/858565/353937.terrain new file mode 100644 index 000000000..07aad8890 Binary files /dev/null and b/public/terrain/19/858565/353937.terrain differ diff --git a/public/terrain/19/858565/353938.terrain b/public/terrain/19/858565/353938.terrain new file mode 100644 index 000000000..2bff82c08 Binary files /dev/null and b/public/terrain/19/858565/353938.terrain differ diff --git a/public/terrain/19/858565/353939.terrain b/public/terrain/19/858565/353939.terrain new file mode 100644 index 000000000..cc858adef Binary files /dev/null and b/public/terrain/19/858565/353939.terrain differ diff --git a/public/terrain/19/858565/353940.terrain b/public/terrain/19/858565/353940.terrain new file mode 100644 index 000000000..5a052df04 Binary files /dev/null and b/public/terrain/19/858565/353940.terrain differ diff --git a/public/terrain/19/858565/353941.terrain b/public/terrain/19/858565/353941.terrain new file mode 100644 index 000000000..150a25d15 Binary files /dev/null and b/public/terrain/19/858565/353941.terrain differ diff --git a/public/terrain/19/858565/353942.terrain b/public/terrain/19/858565/353942.terrain new file mode 100644 index 000000000..30bfc5c5b Binary files /dev/null and b/public/terrain/19/858565/353942.terrain differ diff --git a/public/terrain/19/858565/353943.terrain b/public/terrain/19/858565/353943.terrain new file mode 100644 index 000000000..111c9119d Binary files /dev/null and b/public/terrain/19/858565/353943.terrain differ diff --git a/public/terrain/19/858565/353944.terrain b/public/terrain/19/858565/353944.terrain new file mode 100644 index 000000000..f659f74c4 Binary files /dev/null and b/public/terrain/19/858565/353944.terrain differ diff --git a/public/terrain/19/858565/353945.terrain b/public/terrain/19/858565/353945.terrain new file mode 100644 index 000000000..d080b13f4 Binary files /dev/null and b/public/terrain/19/858565/353945.terrain differ diff --git a/public/terrain/19/858565/353946.terrain b/public/terrain/19/858565/353946.terrain new file mode 100644 index 000000000..beff79d5b Binary files /dev/null and b/public/terrain/19/858565/353946.terrain differ diff --git a/public/terrain/19/858565/353947.terrain b/public/terrain/19/858565/353947.terrain new file mode 100644 index 000000000..200f58ab5 Binary files /dev/null and b/public/terrain/19/858565/353947.terrain differ diff --git a/public/terrain/19/858565/353948.terrain b/public/terrain/19/858565/353948.terrain new file mode 100644 index 000000000..1b4837325 Binary files /dev/null and b/public/terrain/19/858565/353948.terrain differ diff --git a/public/terrain/19/858565/353949.terrain b/public/terrain/19/858565/353949.terrain new file mode 100644 index 000000000..ae06743e3 Binary files /dev/null and b/public/terrain/19/858565/353949.terrain differ diff --git a/public/terrain/19/858565/353950.terrain b/public/terrain/19/858565/353950.terrain new file mode 100644 index 000000000..5a59bd5b3 Binary files /dev/null and b/public/terrain/19/858565/353950.terrain differ diff --git a/public/terrain/19/858565/353951.terrain b/public/terrain/19/858565/353951.terrain new file mode 100644 index 000000000..db49c2b8a Binary files /dev/null and b/public/terrain/19/858565/353951.terrain differ diff --git a/public/terrain/19/858565/353952.terrain b/public/terrain/19/858565/353952.terrain new file mode 100644 index 000000000..59287e457 Binary files /dev/null and b/public/terrain/19/858565/353952.terrain differ diff --git a/public/terrain/19/858565/353953.terrain b/public/terrain/19/858565/353953.terrain new file mode 100644 index 000000000..f873b9bcf Binary files /dev/null and b/public/terrain/19/858565/353953.terrain differ diff --git a/public/terrain/19/858565/353954.terrain b/public/terrain/19/858565/353954.terrain new file mode 100644 index 000000000..3376279ee Binary files /dev/null and b/public/terrain/19/858565/353954.terrain differ diff --git a/public/terrain/19/858565/353955.terrain b/public/terrain/19/858565/353955.terrain new file mode 100644 index 000000000..e7072afc5 Binary files /dev/null and b/public/terrain/19/858565/353955.terrain differ diff --git a/public/terrain/19/858565/353956.terrain b/public/terrain/19/858565/353956.terrain new file mode 100644 index 000000000..4d437a5c2 Binary files /dev/null and b/public/terrain/19/858565/353956.terrain differ diff --git a/public/terrain/19/858565/353957.terrain b/public/terrain/19/858565/353957.terrain new file mode 100644 index 000000000..18c0ad4e4 Binary files /dev/null and b/public/terrain/19/858565/353957.terrain differ diff --git a/public/terrain/19/858565/353958.terrain b/public/terrain/19/858565/353958.terrain new file mode 100644 index 000000000..40fc5062b Binary files /dev/null and b/public/terrain/19/858565/353958.terrain differ diff --git a/public/terrain/19/858565/353959.terrain b/public/terrain/19/858565/353959.terrain new file mode 100644 index 000000000..33f2c3db6 Binary files /dev/null and b/public/terrain/19/858565/353959.terrain differ diff --git a/public/terrain/19/858565/353960.terrain b/public/terrain/19/858565/353960.terrain new file mode 100644 index 000000000..25025c830 Binary files /dev/null and b/public/terrain/19/858565/353960.terrain differ diff --git a/public/terrain/19/858565/353961.terrain b/public/terrain/19/858565/353961.terrain new file mode 100644 index 000000000..717079a8f Binary files /dev/null and b/public/terrain/19/858565/353961.terrain differ diff --git a/public/terrain/19/858565/353962.terrain b/public/terrain/19/858565/353962.terrain new file mode 100644 index 000000000..82c331a4f Binary files /dev/null and b/public/terrain/19/858565/353962.terrain differ diff --git a/public/terrain/19/858565/353963.terrain b/public/terrain/19/858565/353963.terrain new file mode 100644 index 000000000..211aa2507 Binary files /dev/null and b/public/terrain/19/858565/353963.terrain differ diff --git a/public/terrain/19/858565/353964.terrain b/public/terrain/19/858565/353964.terrain new file mode 100644 index 000000000..22ef50b0a Binary files /dev/null and b/public/terrain/19/858565/353964.terrain differ diff --git a/public/terrain/19/858565/353965.terrain b/public/terrain/19/858565/353965.terrain new file mode 100644 index 000000000..8a35e2df7 Binary files /dev/null and b/public/terrain/19/858565/353965.terrain differ diff --git a/public/terrain/19/858565/353966.terrain b/public/terrain/19/858565/353966.terrain new file mode 100644 index 000000000..eb38953d8 Binary files /dev/null and b/public/terrain/19/858565/353966.terrain differ diff --git a/public/terrain/19/858565/353967.terrain b/public/terrain/19/858565/353967.terrain new file mode 100644 index 000000000..a785cde13 Binary files /dev/null and b/public/terrain/19/858565/353967.terrain differ diff --git a/public/terrain/19/858565/353968.terrain b/public/terrain/19/858565/353968.terrain new file mode 100644 index 000000000..e0f4340c3 Binary files /dev/null and b/public/terrain/19/858565/353968.terrain differ diff --git a/public/terrain/19/858565/353969.terrain b/public/terrain/19/858565/353969.terrain new file mode 100644 index 000000000..3e2eea9d6 Binary files /dev/null and b/public/terrain/19/858565/353969.terrain differ diff --git a/public/terrain/19/858565/353970.terrain b/public/terrain/19/858565/353970.terrain new file mode 100644 index 000000000..018dbd3cf Binary files /dev/null and b/public/terrain/19/858565/353970.terrain differ diff --git a/public/terrain/19/858565/353971.terrain b/public/terrain/19/858565/353971.terrain new file mode 100644 index 000000000..3c515bc5f Binary files /dev/null and b/public/terrain/19/858565/353971.terrain differ diff --git a/public/terrain/19/858565/353972.terrain b/public/terrain/19/858565/353972.terrain new file mode 100644 index 000000000..97c5a9aca Binary files /dev/null and b/public/terrain/19/858565/353972.terrain differ diff --git a/public/terrain/19/858565/353973.terrain b/public/terrain/19/858565/353973.terrain new file mode 100644 index 000000000..d78ccb03c Binary files /dev/null and b/public/terrain/19/858565/353973.terrain differ diff --git a/public/terrain/19/858565/353974.terrain b/public/terrain/19/858565/353974.terrain new file mode 100644 index 000000000..14f6fd9d1 Binary files /dev/null and b/public/terrain/19/858565/353974.terrain differ diff --git a/public/terrain/19/858565/353975.terrain b/public/terrain/19/858565/353975.terrain new file mode 100644 index 000000000..5cfa29f99 Binary files /dev/null and b/public/terrain/19/858565/353975.terrain differ diff --git a/public/terrain/19/858565/353976.terrain b/public/terrain/19/858565/353976.terrain new file mode 100644 index 000000000..ec5d8619d Binary files /dev/null and b/public/terrain/19/858565/353976.terrain differ diff --git a/public/terrain/19/858565/353977.terrain b/public/terrain/19/858565/353977.terrain new file mode 100644 index 000000000..8f64b209c Binary files /dev/null and b/public/terrain/19/858565/353977.terrain differ diff --git a/public/terrain/19/858565/353978.terrain b/public/terrain/19/858565/353978.terrain new file mode 100644 index 000000000..ec3456951 Binary files /dev/null and b/public/terrain/19/858565/353978.terrain differ diff --git a/public/terrain/19/858565/353979.terrain b/public/terrain/19/858565/353979.terrain new file mode 100644 index 000000000..cdc7e2794 Binary files /dev/null and b/public/terrain/19/858565/353979.terrain differ diff --git a/public/terrain/19/858565/353980.terrain b/public/terrain/19/858565/353980.terrain new file mode 100644 index 000000000..226c655ef Binary files /dev/null and b/public/terrain/19/858565/353980.terrain differ diff --git a/public/terrain/19/858565/353981.terrain b/public/terrain/19/858565/353981.terrain new file mode 100644 index 000000000..63e56202e Binary files /dev/null and b/public/terrain/19/858565/353981.terrain differ diff --git a/public/terrain/19/858565/353982.terrain b/public/terrain/19/858565/353982.terrain new file mode 100644 index 000000000..02bf79a0b Binary files /dev/null and b/public/terrain/19/858565/353982.terrain differ diff --git a/public/terrain/19/858565/353983.terrain b/public/terrain/19/858565/353983.terrain new file mode 100644 index 000000000..a6b243445 Binary files /dev/null and b/public/terrain/19/858565/353983.terrain differ diff --git a/public/terrain/19/858565/353984.terrain b/public/terrain/19/858565/353984.terrain new file mode 100644 index 000000000..600c30024 Binary files /dev/null and b/public/terrain/19/858565/353984.terrain differ diff --git a/public/terrain/19/858565/353985.terrain b/public/terrain/19/858565/353985.terrain new file mode 100644 index 000000000..b9d8eb791 Binary files /dev/null and b/public/terrain/19/858565/353985.terrain differ diff --git a/public/terrain/19/858565/353986.terrain b/public/terrain/19/858565/353986.terrain new file mode 100644 index 000000000..a7eeb19b4 Binary files /dev/null and b/public/terrain/19/858565/353986.terrain differ diff --git a/public/terrain/19/858565/353987.terrain b/public/terrain/19/858565/353987.terrain new file mode 100644 index 000000000..a34e9f4e8 Binary files /dev/null and b/public/terrain/19/858565/353987.terrain differ diff --git a/public/terrain/19/858565/353988.terrain b/public/terrain/19/858565/353988.terrain new file mode 100644 index 000000000..96314f406 Binary files /dev/null and b/public/terrain/19/858565/353988.terrain differ diff --git a/public/terrain/19/858565/353989.terrain b/public/terrain/19/858565/353989.terrain new file mode 100644 index 000000000..866e3907b Binary files /dev/null and b/public/terrain/19/858565/353989.terrain differ diff --git a/public/terrain/19/858565/353990.terrain b/public/terrain/19/858565/353990.terrain new file mode 100644 index 000000000..b82973995 Binary files /dev/null and b/public/terrain/19/858565/353990.terrain differ diff --git a/public/terrain/19/858565/353991.terrain b/public/terrain/19/858565/353991.terrain new file mode 100644 index 000000000..3766a5e3c Binary files /dev/null and b/public/terrain/19/858565/353991.terrain differ diff --git a/public/terrain/19/858565/353992.terrain b/public/terrain/19/858565/353992.terrain new file mode 100644 index 000000000..69df1ec93 Binary files /dev/null and b/public/terrain/19/858565/353992.terrain differ diff --git a/public/terrain/19/858565/353993.terrain b/public/terrain/19/858565/353993.terrain new file mode 100644 index 000000000..cb3bbded7 Binary files /dev/null and b/public/terrain/19/858565/353993.terrain differ diff --git a/public/terrain/19/858565/353994.terrain b/public/terrain/19/858565/353994.terrain new file mode 100644 index 000000000..e327a6483 Binary files /dev/null and b/public/terrain/19/858565/353994.terrain differ diff --git a/public/terrain/19/858565/353995.terrain b/public/terrain/19/858565/353995.terrain new file mode 100644 index 000000000..af71243d7 Binary files /dev/null and b/public/terrain/19/858565/353995.terrain differ diff --git a/public/terrain/19/858565/353996.terrain b/public/terrain/19/858565/353996.terrain new file mode 100644 index 000000000..d136f180b Binary files /dev/null and b/public/terrain/19/858565/353996.terrain differ diff --git a/public/terrain/19/858565/353997.terrain b/public/terrain/19/858565/353997.terrain new file mode 100644 index 000000000..16477d459 Binary files /dev/null and b/public/terrain/19/858565/353997.terrain differ diff --git a/public/terrain/19/858565/353998.terrain b/public/terrain/19/858565/353998.terrain new file mode 100644 index 000000000..6f2d53e04 Binary files /dev/null and b/public/terrain/19/858565/353998.terrain differ diff --git a/public/terrain/19/858565/353999.terrain b/public/terrain/19/858565/353999.terrain new file mode 100644 index 000000000..36340b131 Binary files /dev/null and b/public/terrain/19/858565/353999.terrain differ diff --git a/public/terrain/19/858565/354000.terrain b/public/terrain/19/858565/354000.terrain new file mode 100644 index 000000000..6518e2d93 Binary files /dev/null and b/public/terrain/19/858565/354000.terrain differ diff --git a/public/terrain/19/858565/354001.terrain b/public/terrain/19/858565/354001.terrain new file mode 100644 index 000000000..45334b106 Binary files /dev/null and b/public/terrain/19/858565/354001.terrain differ diff --git a/public/terrain/19/858565/354002.terrain b/public/terrain/19/858565/354002.terrain new file mode 100644 index 000000000..9ac7f74a7 Binary files /dev/null and b/public/terrain/19/858565/354002.terrain differ diff --git a/public/terrain/19/858565/354003.terrain b/public/terrain/19/858565/354003.terrain new file mode 100644 index 000000000..4ac88ae15 Binary files /dev/null and b/public/terrain/19/858565/354003.terrain differ diff --git a/public/terrain/19/858565/354004.terrain b/public/terrain/19/858565/354004.terrain new file mode 100644 index 000000000..aa85725aa Binary files /dev/null and b/public/terrain/19/858565/354004.terrain differ diff --git a/public/terrain/19/858565/354005.terrain b/public/terrain/19/858565/354005.terrain new file mode 100644 index 000000000..b892aac10 Binary files /dev/null and b/public/terrain/19/858565/354005.terrain differ diff --git a/public/terrain/19/858565/354006.terrain b/public/terrain/19/858565/354006.terrain new file mode 100644 index 000000000..78e2704bd Binary files /dev/null and b/public/terrain/19/858565/354006.terrain differ diff --git a/public/terrain/19/858565/354007.terrain b/public/terrain/19/858565/354007.terrain new file mode 100644 index 000000000..6ae85404b Binary files /dev/null and b/public/terrain/19/858565/354007.terrain differ diff --git a/public/terrain/19/858565/354008.terrain b/public/terrain/19/858565/354008.terrain new file mode 100644 index 000000000..2cc441759 Binary files /dev/null and b/public/terrain/19/858565/354008.terrain differ diff --git a/public/terrain/19/858565/354009.terrain b/public/terrain/19/858565/354009.terrain new file mode 100644 index 000000000..27528bad5 Binary files /dev/null and b/public/terrain/19/858565/354009.terrain differ diff --git a/public/terrain/19/858565/354010.terrain b/public/terrain/19/858565/354010.terrain new file mode 100644 index 000000000..834ef6ec0 Binary files /dev/null and b/public/terrain/19/858565/354010.terrain differ diff --git a/public/terrain/19/858565/354011.terrain b/public/terrain/19/858565/354011.terrain new file mode 100644 index 000000000..bdddb351b Binary files /dev/null and b/public/terrain/19/858565/354011.terrain differ diff --git a/public/terrain/19/858565/354012.terrain b/public/terrain/19/858565/354012.terrain new file mode 100644 index 000000000..cb6ea44db Binary files /dev/null and b/public/terrain/19/858565/354012.terrain differ diff --git a/public/terrain/19/858565/354013.terrain b/public/terrain/19/858565/354013.terrain new file mode 100644 index 000000000..a920f660f Binary files /dev/null and b/public/terrain/19/858565/354013.terrain differ diff --git a/public/terrain/19/858565/354014.terrain b/public/terrain/19/858565/354014.terrain new file mode 100644 index 000000000..9ba2c4dd6 Binary files /dev/null and b/public/terrain/19/858565/354014.terrain differ diff --git a/public/terrain/19/858565/354015.terrain b/public/terrain/19/858565/354015.terrain new file mode 100644 index 000000000..a57b45ae0 Binary files /dev/null and b/public/terrain/19/858565/354015.terrain differ diff --git a/public/terrain/19/858565/354016.terrain b/public/terrain/19/858565/354016.terrain new file mode 100644 index 000000000..5feb4f7fe Binary files /dev/null and b/public/terrain/19/858565/354016.terrain differ diff --git a/public/terrain/19/858565/354017.terrain b/public/terrain/19/858565/354017.terrain new file mode 100644 index 000000000..5017c06ca Binary files /dev/null and b/public/terrain/19/858565/354017.terrain differ diff --git a/public/terrain/19/858565/354018.terrain b/public/terrain/19/858565/354018.terrain new file mode 100644 index 000000000..8fca8d1d5 Binary files /dev/null and b/public/terrain/19/858565/354018.terrain differ diff --git a/public/terrain/19/858565/354019.terrain b/public/terrain/19/858565/354019.terrain new file mode 100644 index 000000000..11a58c97b Binary files /dev/null and b/public/terrain/19/858565/354019.terrain differ diff --git a/public/terrain/19/858565/354020.terrain b/public/terrain/19/858565/354020.terrain new file mode 100644 index 000000000..68502a5a1 Binary files /dev/null and b/public/terrain/19/858565/354020.terrain differ diff --git a/public/terrain/19/858565/354021.terrain b/public/terrain/19/858565/354021.terrain new file mode 100644 index 000000000..44847c52b Binary files /dev/null and b/public/terrain/19/858565/354021.terrain differ diff --git a/public/terrain/19/858565/354022.terrain b/public/terrain/19/858565/354022.terrain new file mode 100644 index 000000000..89e9b579a Binary files /dev/null and b/public/terrain/19/858565/354022.terrain differ diff --git a/public/terrain/19/858565/354023.terrain b/public/terrain/19/858565/354023.terrain new file mode 100644 index 000000000..5358b3a35 Binary files /dev/null and b/public/terrain/19/858565/354023.terrain differ diff --git a/public/terrain/19/858565/354024.terrain b/public/terrain/19/858565/354024.terrain new file mode 100644 index 000000000..fe7bc7053 Binary files /dev/null and b/public/terrain/19/858565/354024.terrain differ diff --git a/public/terrain/19/858565/354025.terrain b/public/terrain/19/858565/354025.terrain new file mode 100644 index 000000000..db5772b9d Binary files /dev/null and b/public/terrain/19/858565/354025.terrain differ diff --git a/public/terrain/19/858565/354026.terrain b/public/terrain/19/858565/354026.terrain new file mode 100644 index 000000000..d4c7c1b14 Binary files /dev/null and b/public/terrain/19/858565/354026.terrain differ diff --git a/public/terrain/19/858565/354027.terrain b/public/terrain/19/858565/354027.terrain new file mode 100644 index 000000000..b0ec0a6ab Binary files /dev/null and b/public/terrain/19/858565/354027.terrain differ diff --git a/public/terrain/19/858565/354028.terrain b/public/terrain/19/858565/354028.terrain new file mode 100644 index 000000000..0f9085353 Binary files /dev/null and b/public/terrain/19/858565/354028.terrain differ diff --git a/public/terrain/19/858565/354029.terrain b/public/terrain/19/858565/354029.terrain new file mode 100644 index 000000000..09a310041 Binary files /dev/null and b/public/terrain/19/858565/354029.terrain differ diff --git a/public/terrain/19/858565/354030.terrain b/public/terrain/19/858565/354030.terrain new file mode 100644 index 000000000..5f63c1dec Binary files /dev/null and b/public/terrain/19/858565/354030.terrain differ diff --git a/public/terrain/19/858565/354031.terrain b/public/terrain/19/858565/354031.terrain new file mode 100644 index 000000000..99e01f20a Binary files /dev/null and b/public/terrain/19/858565/354031.terrain differ diff --git a/public/terrain/19/858565/354032.terrain b/public/terrain/19/858565/354032.terrain new file mode 100644 index 000000000..cd386c2ac Binary files /dev/null and b/public/terrain/19/858565/354032.terrain differ diff --git a/public/terrain/19/858565/354033.terrain b/public/terrain/19/858565/354033.terrain new file mode 100644 index 000000000..41a15386c Binary files /dev/null and b/public/terrain/19/858565/354033.terrain differ diff --git a/public/terrain/19/858565/354034.terrain b/public/terrain/19/858565/354034.terrain new file mode 100644 index 000000000..f684092b2 Binary files /dev/null and b/public/terrain/19/858565/354034.terrain differ diff --git a/public/terrain/19/858565/354035.terrain b/public/terrain/19/858565/354035.terrain new file mode 100644 index 000000000..032e9aff1 Binary files /dev/null and b/public/terrain/19/858565/354035.terrain differ diff --git a/public/terrain/19/858565/354036.terrain b/public/terrain/19/858565/354036.terrain new file mode 100644 index 000000000..e3f8e0e9a Binary files /dev/null and b/public/terrain/19/858565/354036.terrain differ diff --git a/public/terrain/19/858565/354037.terrain b/public/terrain/19/858565/354037.terrain new file mode 100644 index 000000000..6a1d44025 Binary files /dev/null and b/public/terrain/19/858565/354037.terrain differ diff --git a/public/terrain/19/858565/354038.terrain b/public/terrain/19/858565/354038.terrain new file mode 100644 index 000000000..82d11a654 Binary files /dev/null and b/public/terrain/19/858565/354038.terrain differ diff --git a/public/terrain/19/858565/354039.terrain b/public/terrain/19/858565/354039.terrain new file mode 100644 index 000000000..3cdcd02f5 Binary files /dev/null and b/public/terrain/19/858565/354039.terrain differ diff --git a/public/terrain/19/858565/354040.terrain b/public/terrain/19/858565/354040.terrain new file mode 100644 index 000000000..d9f85e147 Binary files /dev/null and b/public/terrain/19/858565/354040.terrain differ diff --git a/public/terrain/19/858565/354041.terrain b/public/terrain/19/858565/354041.terrain new file mode 100644 index 000000000..0b71e6241 Binary files /dev/null and b/public/terrain/19/858565/354041.terrain differ diff --git a/public/terrain/19/858565/354042.terrain b/public/terrain/19/858565/354042.terrain new file mode 100644 index 000000000..96c664742 Binary files /dev/null and b/public/terrain/19/858565/354042.terrain differ diff --git a/public/terrain/19/858565/354043.terrain b/public/terrain/19/858565/354043.terrain new file mode 100644 index 000000000..eb8de912c Binary files /dev/null and b/public/terrain/19/858565/354043.terrain differ diff --git a/public/terrain/19/858565/354044.terrain b/public/terrain/19/858565/354044.terrain new file mode 100644 index 000000000..f5d67e966 Binary files /dev/null and b/public/terrain/19/858565/354044.terrain differ diff --git a/public/terrain/19/858565/354045.terrain b/public/terrain/19/858565/354045.terrain new file mode 100644 index 000000000..ab0cb0ea8 Binary files /dev/null and b/public/terrain/19/858565/354045.terrain differ diff --git a/public/terrain/19/858565/354046.terrain b/public/terrain/19/858565/354046.terrain new file mode 100644 index 000000000..2d654f27a Binary files /dev/null and b/public/terrain/19/858565/354046.terrain differ diff --git a/public/terrain/19/858565/354047.terrain b/public/terrain/19/858565/354047.terrain new file mode 100644 index 000000000..96f715093 Binary files /dev/null and b/public/terrain/19/858565/354047.terrain differ diff --git a/public/terrain/19/858565/354048.terrain b/public/terrain/19/858565/354048.terrain new file mode 100644 index 000000000..dc98a0526 Binary files /dev/null and b/public/terrain/19/858565/354048.terrain differ diff --git a/public/terrain/19/858565/354049.terrain b/public/terrain/19/858565/354049.terrain new file mode 100644 index 000000000..387075b4c Binary files /dev/null and b/public/terrain/19/858565/354049.terrain differ diff --git a/public/terrain/19/858565/354050.terrain b/public/terrain/19/858565/354050.terrain new file mode 100644 index 000000000..a5fd800ca Binary files /dev/null and b/public/terrain/19/858565/354050.terrain differ diff --git a/public/terrain/19/858565/354051.terrain b/public/terrain/19/858565/354051.terrain new file mode 100644 index 000000000..7bda0a6d8 Binary files /dev/null and b/public/terrain/19/858565/354051.terrain differ diff --git a/public/terrain/19/858565/354052.terrain b/public/terrain/19/858565/354052.terrain new file mode 100644 index 000000000..8b30b5856 Binary files /dev/null and b/public/terrain/19/858565/354052.terrain differ diff --git a/public/terrain/19/858565/354053.terrain b/public/terrain/19/858565/354053.terrain new file mode 100644 index 000000000..e7e087bcb Binary files /dev/null and b/public/terrain/19/858565/354053.terrain differ diff --git a/public/terrain/19/858565/354054.terrain b/public/terrain/19/858565/354054.terrain new file mode 100644 index 000000000..a58990ebb Binary files /dev/null and b/public/terrain/19/858565/354054.terrain differ diff --git a/public/terrain/19/858565/354055.terrain b/public/terrain/19/858565/354055.terrain new file mode 100644 index 000000000..cee2550cb Binary files /dev/null and b/public/terrain/19/858565/354055.terrain differ diff --git a/public/terrain/19/858565/354056.terrain b/public/terrain/19/858565/354056.terrain new file mode 100644 index 000000000..7750c704e Binary files /dev/null and b/public/terrain/19/858565/354056.terrain differ diff --git a/public/terrain/19/858565/354057.terrain b/public/terrain/19/858565/354057.terrain new file mode 100644 index 000000000..0c2bcab14 Binary files /dev/null and b/public/terrain/19/858565/354057.terrain differ diff --git a/public/terrain/19/858565/354058.terrain b/public/terrain/19/858565/354058.terrain new file mode 100644 index 000000000..6bb6d31bc Binary files /dev/null and b/public/terrain/19/858565/354058.terrain differ diff --git a/public/terrain/19/858565/354059.terrain b/public/terrain/19/858565/354059.terrain new file mode 100644 index 000000000..8f9d057e7 Binary files /dev/null and b/public/terrain/19/858565/354059.terrain differ diff --git a/public/terrain/19/858566/353743.terrain b/public/terrain/19/858566/353743.terrain new file mode 100644 index 000000000..3b41b074b Binary files /dev/null and b/public/terrain/19/858566/353743.terrain differ diff --git a/public/terrain/19/858566/353744.terrain b/public/terrain/19/858566/353744.terrain new file mode 100644 index 000000000..60976e8de Binary files /dev/null and b/public/terrain/19/858566/353744.terrain differ diff --git a/public/terrain/19/858566/353745.terrain b/public/terrain/19/858566/353745.terrain new file mode 100644 index 000000000..d22058e94 Binary files /dev/null and b/public/terrain/19/858566/353745.terrain differ diff --git a/public/terrain/19/858566/353746.terrain b/public/terrain/19/858566/353746.terrain new file mode 100644 index 000000000..c7e0f7ddb Binary files /dev/null and b/public/terrain/19/858566/353746.terrain differ diff --git a/public/terrain/19/858566/353747.terrain b/public/terrain/19/858566/353747.terrain new file mode 100644 index 000000000..fb25b88fa Binary files /dev/null and b/public/terrain/19/858566/353747.terrain differ diff --git a/public/terrain/19/858566/353748.terrain b/public/terrain/19/858566/353748.terrain new file mode 100644 index 000000000..14b6595a4 Binary files /dev/null and b/public/terrain/19/858566/353748.terrain differ diff --git a/public/terrain/19/858566/353749.terrain b/public/terrain/19/858566/353749.terrain new file mode 100644 index 000000000..2f153efa3 Binary files /dev/null and b/public/terrain/19/858566/353749.terrain differ diff --git a/public/terrain/19/858566/353750.terrain b/public/terrain/19/858566/353750.terrain new file mode 100644 index 000000000..1eb1569ef Binary files /dev/null and b/public/terrain/19/858566/353750.terrain differ diff --git a/public/terrain/19/858566/353751.terrain b/public/terrain/19/858566/353751.terrain new file mode 100644 index 000000000..987aa287d Binary files /dev/null and b/public/terrain/19/858566/353751.terrain differ diff --git a/public/terrain/19/858566/353752.terrain b/public/terrain/19/858566/353752.terrain new file mode 100644 index 000000000..999e127cf Binary files /dev/null and b/public/terrain/19/858566/353752.terrain differ diff --git a/public/terrain/19/858566/353753.terrain b/public/terrain/19/858566/353753.terrain new file mode 100644 index 000000000..310d402f2 Binary files /dev/null and b/public/terrain/19/858566/353753.terrain differ diff --git a/public/terrain/19/858566/353754.terrain b/public/terrain/19/858566/353754.terrain new file mode 100644 index 000000000..efc77f53b Binary files /dev/null and b/public/terrain/19/858566/353754.terrain differ diff --git a/public/terrain/19/858566/353755.terrain b/public/terrain/19/858566/353755.terrain new file mode 100644 index 000000000..a439d3052 Binary files /dev/null and b/public/terrain/19/858566/353755.terrain differ diff --git a/public/terrain/19/858566/353756.terrain b/public/terrain/19/858566/353756.terrain new file mode 100644 index 000000000..83a3afa1f Binary files /dev/null and b/public/terrain/19/858566/353756.terrain differ diff --git a/public/terrain/19/858566/353757.terrain b/public/terrain/19/858566/353757.terrain new file mode 100644 index 000000000..dda601854 Binary files /dev/null and b/public/terrain/19/858566/353757.terrain differ diff --git a/public/terrain/19/858566/353758.terrain b/public/terrain/19/858566/353758.terrain new file mode 100644 index 000000000..3457a3ba3 Binary files /dev/null and b/public/terrain/19/858566/353758.terrain differ diff --git a/public/terrain/19/858566/353759.terrain b/public/terrain/19/858566/353759.terrain new file mode 100644 index 000000000..15bbc7644 Binary files /dev/null and b/public/terrain/19/858566/353759.terrain differ diff --git a/public/terrain/19/858566/353760.terrain b/public/terrain/19/858566/353760.terrain new file mode 100644 index 000000000..932179eff Binary files /dev/null and b/public/terrain/19/858566/353760.terrain differ diff --git a/public/terrain/19/858566/353761.terrain b/public/terrain/19/858566/353761.terrain new file mode 100644 index 000000000..3f6dd2c2a Binary files /dev/null and b/public/terrain/19/858566/353761.terrain differ diff --git a/public/terrain/19/858566/353762.terrain b/public/terrain/19/858566/353762.terrain new file mode 100644 index 000000000..9341dc154 Binary files /dev/null and b/public/terrain/19/858566/353762.terrain differ diff --git a/public/terrain/19/858566/353763.terrain b/public/terrain/19/858566/353763.terrain new file mode 100644 index 000000000..9fbeee4a8 Binary files /dev/null and b/public/terrain/19/858566/353763.terrain differ diff --git a/public/terrain/19/858566/353764.terrain b/public/terrain/19/858566/353764.terrain new file mode 100644 index 000000000..75e307974 Binary files /dev/null and b/public/terrain/19/858566/353764.terrain differ diff --git a/public/terrain/19/858566/353765.terrain b/public/terrain/19/858566/353765.terrain new file mode 100644 index 000000000..3490cbab6 Binary files /dev/null and b/public/terrain/19/858566/353765.terrain differ diff --git a/public/terrain/19/858566/353766.terrain b/public/terrain/19/858566/353766.terrain new file mode 100644 index 000000000..dc75891b9 Binary files /dev/null and b/public/terrain/19/858566/353766.terrain differ diff --git a/public/terrain/19/858566/353767.terrain b/public/terrain/19/858566/353767.terrain new file mode 100644 index 000000000..a036f7c54 Binary files /dev/null and b/public/terrain/19/858566/353767.terrain differ diff --git a/public/terrain/19/858566/353768.terrain b/public/terrain/19/858566/353768.terrain new file mode 100644 index 000000000..52c381308 Binary files /dev/null and b/public/terrain/19/858566/353768.terrain differ diff --git a/public/terrain/19/858566/353769.terrain b/public/terrain/19/858566/353769.terrain new file mode 100644 index 000000000..e65a208f0 Binary files /dev/null and b/public/terrain/19/858566/353769.terrain differ diff --git a/public/terrain/19/858566/353770.terrain b/public/terrain/19/858566/353770.terrain new file mode 100644 index 000000000..ef69ff99b Binary files /dev/null and b/public/terrain/19/858566/353770.terrain differ diff --git a/public/terrain/19/858566/353771.terrain b/public/terrain/19/858566/353771.terrain new file mode 100644 index 000000000..46053efb4 Binary files /dev/null and b/public/terrain/19/858566/353771.terrain differ diff --git a/public/terrain/19/858566/353772.terrain b/public/terrain/19/858566/353772.terrain new file mode 100644 index 000000000..00b45b949 Binary files /dev/null and b/public/terrain/19/858566/353772.terrain differ diff --git a/public/terrain/19/858566/353773.terrain b/public/terrain/19/858566/353773.terrain new file mode 100644 index 000000000..9006d1772 Binary files /dev/null and b/public/terrain/19/858566/353773.terrain differ diff --git a/public/terrain/19/858566/353774.terrain b/public/terrain/19/858566/353774.terrain new file mode 100644 index 000000000..552ee8dbc Binary files /dev/null and b/public/terrain/19/858566/353774.terrain differ diff --git a/public/terrain/19/858566/353775.terrain b/public/terrain/19/858566/353775.terrain new file mode 100644 index 000000000..b47ed361b Binary files /dev/null and b/public/terrain/19/858566/353775.terrain differ diff --git a/public/terrain/19/858566/353776.terrain b/public/terrain/19/858566/353776.terrain new file mode 100644 index 000000000..244c60cef Binary files /dev/null and b/public/terrain/19/858566/353776.terrain differ diff --git a/public/terrain/19/858566/353777.terrain b/public/terrain/19/858566/353777.terrain new file mode 100644 index 000000000..c19ddf5c8 Binary files /dev/null and b/public/terrain/19/858566/353777.terrain differ diff --git a/public/terrain/19/858566/353778.terrain b/public/terrain/19/858566/353778.terrain new file mode 100644 index 000000000..7dc454515 Binary files /dev/null and b/public/terrain/19/858566/353778.terrain differ diff --git a/public/terrain/19/858566/353779.terrain b/public/terrain/19/858566/353779.terrain new file mode 100644 index 000000000..50cb339dd Binary files /dev/null and b/public/terrain/19/858566/353779.terrain differ diff --git a/public/terrain/19/858566/353780.terrain b/public/terrain/19/858566/353780.terrain new file mode 100644 index 000000000..fe7a8971b Binary files /dev/null and b/public/terrain/19/858566/353780.terrain differ diff --git a/public/terrain/19/858566/353781.terrain b/public/terrain/19/858566/353781.terrain new file mode 100644 index 000000000..4f4221d03 Binary files /dev/null and b/public/terrain/19/858566/353781.terrain differ diff --git a/public/terrain/19/858566/353782.terrain b/public/terrain/19/858566/353782.terrain new file mode 100644 index 000000000..e2a06762b Binary files /dev/null and b/public/terrain/19/858566/353782.terrain differ diff --git a/public/terrain/19/858566/353783.terrain b/public/terrain/19/858566/353783.terrain new file mode 100644 index 000000000..0a9acded0 Binary files /dev/null and b/public/terrain/19/858566/353783.terrain differ diff --git a/public/terrain/19/858566/353784.terrain b/public/terrain/19/858566/353784.terrain new file mode 100644 index 000000000..b536d5481 Binary files /dev/null and b/public/terrain/19/858566/353784.terrain differ diff --git a/public/terrain/19/858566/353785.terrain b/public/terrain/19/858566/353785.terrain new file mode 100644 index 000000000..121da18d0 Binary files /dev/null and b/public/terrain/19/858566/353785.terrain differ diff --git a/public/terrain/19/858566/353786.terrain b/public/terrain/19/858566/353786.terrain new file mode 100644 index 000000000..dd30b356c Binary files /dev/null and b/public/terrain/19/858566/353786.terrain differ diff --git a/public/terrain/19/858566/353787.terrain b/public/terrain/19/858566/353787.terrain new file mode 100644 index 000000000..7cec6d6d1 Binary files /dev/null and b/public/terrain/19/858566/353787.terrain differ diff --git a/public/terrain/19/858566/353788.terrain b/public/terrain/19/858566/353788.terrain new file mode 100644 index 000000000..2ae944376 Binary files /dev/null and b/public/terrain/19/858566/353788.terrain differ diff --git a/public/terrain/19/858566/353789.terrain b/public/terrain/19/858566/353789.terrain new file mode 100644 index 000000000..746c126c0 Binary files /dev/null and b/public/terrain/19/858566/353789.terrain differ diff --git a/public/terrain/19/858566/353790.terrain b/public/terrain/19/858566/353790.terrain new file mode 100644 index 000000000..3860b90f2 Binary files /dev/null and b/public/terrain/19/858566/353790.terrain differ diff --git a/public/terrain/19/858566/353791.terrain b/public/terrain/19/858566/353791.terrain new file mode 100644 index 000000000..13abc5de3 Binary files /dev/null and b/public/terrain/19/858566/353791.terrain differ diff --git a/public/terrain/19/858566/353792.terrain b/public/terrain/19/858566/353792.terrain new file mode 100644 index 000000000..ecc260f54 Binary files /dev/null and b/public/terrain/19/858566/353792.terrain differ diff --git a/public/terrain/19/858566/353793.terrain b/public/terrain/19/858566/353793.terrain new file mode 100644 index 000000000..808f29ac9 Binary files /dev/null and b/public/terrain/19/858566/353793.terrain differ diff --git a/public/terrain/19/858566/353794.terrain b/public/terrain/19/858566/353794.terrain new file mode 100644 index 000000000..e472cbdd2 Binary files /dev/null and b/public/terrain/19/858566/353794.terrain differ diff --git a/public/terrain/19/858566/353795.terrain b/public/terrain/19/858566/353795.terrain new file mode 100644 index 000000000..b903e764d Binary files /dev/null and b/public/terrain/19/858566/353795.terrain differ diff --git a/public/terrain/19/858566/353796.terrain b/public/terrain/19/858566/353796.terrain new file mode 100644 index 000000000..e66216ed4 Binary files /dev/null and b/public/terrain/19/858566/353796.terrain differ diff --git a/public/terrain/19/858566/353797.terrain b/public/terrain/19/858566/353797.terrain new file mode 100644 index 000000000..6b23c0593 Binary files /dev/null and b/public/terrain/19/858566/353797.terrain differ diff --git a/public/terrain/19/858566/353798.terrain b/public/terrain/19/858566/353798.terrain new file mode 100644 index 000000000..c84a79b76 Binary files /dev/null and b/public/terrain/19/858566/353798.terrain differ diff --git a/public/terrain/19/858566/353799.terrain b/public/terrain/19/858566/353799.terrain new file mode 100644 index 000000000..c5066f6de Binary files /dev/null and b/public/terrain/19/858566/353799.terrain differ diff --git a/public/terrain/19/858566/353800.terrain b/public/terrain/19/858566/353800.terrain new file mode 100644 index 000000000..ba6b8185f Binary files /dev/null and b/public/terrain/19/858566/353800.terrain differ diff --git a/public/terrain/19/858566/353801.terrain b/public/terrain/19/858566/353801.terrain new file mode 100644 index 000000000..9a66dc53f Binary files /dev/null and b/public/terrain/19/858566/353801.terrain differ diff --git a/public/terrain/19/858566/353802.terrain b/public/terrain/19/858566/353802.terrain new file mode 100644 index 000000000..64b86cf46 Binary files /dev/null and b/public/terrain/19/858566/353802.terrain differ diff --git a/public/terrain/19/858566/353803.terrain b/public/terrain/19/858566/353803.terrain new file mode 100644 index 000000000..91d13bc20 Binary files /dev/null and b/public/terrain/19/858566/353803.terrain differ diff --git a/public/terrain/19/858566/353804.terrain b/public/terrain/19/858566/353804.terrain new file mode 100644 index 000000000..b6d7fa776 Binary files /dev/null and b/public/terrain/19/858566/353804.terrain differ diff --git a/public/terrain/19/858566/353805.terrain b/public/terrain/19/858566/353805.terrain new file mode 100644 index 000000000..42af9ee26 Binary files /dev/null and b/public/terrain/19/858566/353805.terrain differ diff --git a/public/terrain/19/858566/353806.terrain b/public/terrain/19/858566/353806.terrain new file mode 100644 index 000000000..0839109b1 Binary files /dev/null and b/public/terrain/19/858566/353806.terrain differ diff --git a/public/terrain/19/858566/353807.terrain b/public/terrain/19/858566/353807.terrain new file mode 100644 index 000000000..07a10d3cd Binary files /dev/null and b/public/terrain/19/858566/353807.terrain differ diff --git a/public/terrain/19/858566/353808.terrain b/public/terrain/19/858566/353808.terrain new file mode 100644 index 000000000..bed2ad89f Binary files /dev/null and b/public/terrain/19/858566/353808.terrain differ diff --git a/public/terrain/19/858566/353809.terrain b/public/terrain/19/858566/353809.terrain new file mode 100644 index 000000000..4c2bd72fd Binary files /dev/null and b/public/terrain/19/858566/353809.terrain differ diff --git a/public/terrain/19/858566/353810.terrain b/public/terrain/19/858566/353810.terrain new file mode 100644 index 000000000..a398c48b6 Binary files /dev/null and b/public/terrain/19/858566/353810.terrain differ diff --git a/public/terrain/19/858566/353811.terrain b/public/terrain/19/858566/353811.terrain new file mode 100644 index 000000000..8dd8bf934 Binary files /dev/null and b/public/terrain/19/858566/353811.terrain differ diff --git a/public/terrain/19/858566/353812.terrain b/public/terrain/19/858566/353812.terrain new file mode 100644 index 000000000..9e20e0697 Binary files /dev/null and b/public/terrain/19/858566/353812.terrain differ diff --git a/public/terrain/19/858566/353813.terrain b/public/terrain/19/858566/353813.terrain new file mode 100644 index 000000000..72d695636 Binary files /dev/null and b/public/terrain/19/858566/353813.terrain differ diff --git a/public/terrain/19/858566/353814.terrain b/public/terrain/19/858566/353814.terrain new file mode 100644 index 000000000..4fec441b3 Binary files /dev/null and b/public/terrain/19/858566/353814.terrain differ diff --git a/public/terrain/19/858566/353815.terrain b/public/terrain/19/858566/353815.terrain new file mode 100644 index 000000000..5a9af3537 Binary files /dev/null and b/public/terrain/19/858566/353815.terrain differ diff --git a/public/terrain/19/858566/353816.terrain b/public/terrain/19/858566/353816.terrain new file mode 100644 index 000000000..8ad786d49 Binary files /dev/null and b/public/terrain/19/858566/353816.terrain differ diff --git a/public/terrain/19/858566/353817.terrain b/public/terrain/19/858566/353817.terrain new file mode 100644 index 000000000..721c6652b Binary files /dev/null and b/public/terrain/19/858566/353817.terrain differ diff --git a/public/terrain/19/858566/353818.terrain b/public/terrain/19/858566/353818.terrain new file mode 100644 index 000000000..d7f0b24ac Binary files /dev/null and b/public/terrain/19/858566/353818.terrain differ diff --git a/public/terrain/19/858566/353819.terrain b/public/terrain/19/858566/353819.terrain new file mode 100644 index 000000000..883e8c13e Binary files /dev/null and b/public/terrain/19/858566/353819.terrain differ diff --git a/public/terrain/19/858566/353820.terrain b/public/terrain/19/858566/353820.terrain new file mode 100644 index 000000000..9ec7472ce Binary files /dev/null and b/public/terrain/19/858566/353820.terrain differ diff --git a/public/terrain/19/858566/353821.terrain b/public/terrain/19/858566/353821.terrain new file mode 100644 index 000000000..7241079d7 Binary files /dev/null and b/public/terrain/19/858566/353821.terrain differ diff --git a/public/terrain/19/858566/353822.terrain b/public/terrain/19/858566/353822.terrain new file mode 100644 index 000000000..1b41ad9e4 Binary files /dev/null and b/public/terrain/19/858566/353822.terrain differ diff --git a/public/terrain/19/858566/353823.terrain b/public/terrain/19/858566/353823.terrain new file mode 100644 index 000000000..31cb6fa5c Binary files /dev/null and b/public/terrain/19/858566/353823.terrain differ diff --git a/public/terrain/19/858566/353824.terrain b/public/terrain/19/858566/353824.terrain new file mode 100644 index 000000000..3c217c5fe Binary files /dev/null and b/public/terrain/19/858566/353824.terrain differ diff --git a/public/terrain/19/858566/353825.terrain b/public/terrain/19/858566/353825.terrain new file mode 100644 index 000000000..88b9e1560 Binary files /dev/null and b/public/terrain/19/858566/353825.terrain differ diff --git a/public/terrain/19/858566/353826.terrain b/public/terrain/19/858566/353826.terrain new file mode 100644 index 000000000..765f42061 Binary files /dev/null and b/public/terrain/19/858566/353826.terrain differ diff --git a/public/terrain/19/858566/353827.terrain b/public/terrain/19/858566/353827.terrain new file mode 100644 index 000000000..cc04c7a18 Binary files /dev/null and b/public/terrain/19/858566/353827.terrain differ diff --git a/public/terrain/19/858566/353828.terrain b/public/terrain/19/858566/353828.terrain new file mode 100644 index 000000000..32c74c5a0 Binary files /dev/null and b/public/terrain/19/858566/353828.terrain differ diff --git a/public/terrain/19/858566/353829.terrain b/public/terrain/19/858566/353829.terrain new file mode 100644 index 000000000..071baa488 Binary files /dev/null and b/public/terrain/19/858566/353829.terrain differ diff --git a/public/terrain/19/858566/353830.terrain b/public/terrain/19/858566/353830.terrain new file mode 100644 index 000000000..8d95d98a5 Binary files /dev/null and b/public/terrain/19/858566/353830.terrain differ diff --git a/public/terrain/19/858566/353831.terrain b/public/terrain/19/858566/353831.terrain new file mode 100644 index 000000000..7b26b0150 Binary files /dev/null and b/public/terrain/19/858566/353831.terrain differ diff --git a/public/terrain/19/858566/353832.terrain b/public/terrain/19/858566/353832.terrain new file mode 100644 index 000000000..003a288c8 Binary files /dev/null and b/public/terrain/19/858566/353832.terrain differ diff --git a/public/terrain/19/858566/353833.terrain b/public/terrain/19/858566/353833.terrain new file mode 100644 index 000000000..234bc0459 Binary files /dev/null and b/public/terrain/19/858566/353833.terrain differ diff --git a/public/terrain/19/858566/353834.terrain b/public/terrain/19/858566/353834.terrain new file mode 100644 index 000000000..493d59461 Binary files /dev/null and b/public/terrain/19/858566/353834.terrain differ diff --git a/public/terrain/19/858566/353835.terrain b/public/terrain/19/858566/353835.terrain new file mode 100644 index 000000000..74d915a06 Binary files /dev/null and b/public/terrain/19/858566/353835.terrain differ diff --git a/public/terrain/19/858566/353836.terrain b/public/terrain/19/858566/353836.terrain new file mode 100644 index 000000000..bdf37e72a Binary files /dev/null and b/public/terrain/19/858566/353836.terrain differ diff --git a/public/terrain/19/858566/353837.terrain b/public/terrain/19/858566/353837.terrain new file mode 100644 index 000000000..65107da7f Binary files /dev/null and b/public/terrain/19/858566/353837.terrain differ diff --git a/public/terrain/19/858566/353838.terrain b/public/terrain/19/858566/353838.terrain new file mode 100644 index 000000000..7439abd14 Binary files /dev/null and b/public/terrain/19/858566/353838.terrain differ diff --git a/public/terrain/19/858566/353839.terrain b/public/terrain/19/858566/353839.terrain new file mode 100644 index 000000000..9e889ef2e Binary files /dev/null and b/public/terrain/19/858566/353839.terrain differ diff --git a/public/terrain/19/858566/353840.terrain b/public/terrain/19/858566/353840.terrain new file mode 100644 index 000000000..51398968d Binary files /dev/null and b/public/terrain/19/858566/353840.terrain differ diff --git a/public/terrain/19/858566/353841.terrain b/public/terrain/19/858566/353841.terrain new file mode 100644 index 000000000..248df895d Binary files /dev/null and b/public/terrain/19/858566/353841.terrain differ diff --git a/public/terrain/19/858566/353842.terrain b/public/terrain/19/858566/353842.terrain new file mode 100644 index 000000000..016b0600c Binary files /dev/null and b/public/terrain/19/858566/353842.terrain differ diff --git a/public/terrain/19/858566/353843.terrain b/public/terrain/19/858566/353843.terrain new file mode 100644 index 000000000..a6214d80e Binary files /dev/null and b/public/terrain/19/858566/353843.terrain differ diff --git a/public/terrain/19/858566/353844.terrain b/public/terrain/19/858566/353844.terrain new file mode 100644 index 000000000..f72adb050 Binary files /dev/null and b/public/terrain/19/858566/353844.terrain differ diff --git a/public/terrain/19/858566/353845.terrain b/public/terrain/19/858566/353845.terrain new file mode 100644 index 000000000..afed0a5a7 Binary files /dev/null and b/public/terrain/19/858566/353845.terrain differ diff --git a/public/terrain/19/858566/353846.terrain b/public/terrain/19/858566/353846.terrain new file mode 100644 index 000000000..2ae739fe6 Binary files /dev/null and b/public/terrain/19/858566/353846.terrain differ diff --git a/public/terrain/19/858566/353847.terrain b/public/terrain/19/858566/353847.terrain new file mode 100644 index 000000000..d7909bf5f Binary files /dev/null and b/public/terrain/19/858566/353847.terrain differ diff --git a/public/terrain/19/858566/353848.terrain b/public/terrain/19/858566/353848.terrain new file mode 100644 index 000000000..a075dcaec Binary files /dev/null and b/public/terrain/19/858566/353848.terrain differ diff --git a/public/terrain/19/858566/353849.terrain b/public/terrain/19/858566/353849.terrain new file mode 100644 index 000000000..1ace0996e Binary files /dev/null and b/public/terrain/19/858566/353849.terrain differ diff --git a/public/terrain/19/858566/353850.terrain b/public/terrain/19/858566/353850.terrain new file mode 100644 index 000000000..ac18250f7 Binary files /dev/null and b/public/terrain/19/858566/353850.terrain differ diff --git a/public/terrain/19/858566/353851.terrain b/public/terrain/19/858566/353851.terrain new file mode 100644 index 000000000..e4d4dd9cd Binary files /dev/null and b/public/terrain/19/858566/353851.terrain differ diff --git a/public/terrain/19/858566/353852.terrain b/public/terrain/19/858566/353852.terrain new file mode 100644 index 000000000..a18d75026 Binary files /dev/null and b/public/terrain/19/858566/353852.terrain differ diff --git a/public/terrain/19/858566/353853.terrain b/public/terrain/19/858566/353853.terrain new file mode 100644 index 000000000..dca0239ff Binary files /dev/null and b/public/terrain/19/858566/353853.terrain differ diff --git a/public/terrain/19/858566/353854.terrain b/public/terrain/19/858566/353854.terrain new file mode 100644 index 000000000..0394d448f Binary files /dev/null and b/public/terrain/19/858566/353854.terrain differ diff --git a/public/terrain/19/858566/353855.terrain b/public/terrain/19/858566/353855.terrain new file mode 100644 index 000000000..b7293edcb Binary files /dev/null and b/public/terrain/19/858566/353855.terrain differ diff --git a/public/terrain/19/858566/353856.terrain b/public/terrain/19/858566/353856.terrain new file mode 100644 index 000000000..cc46b3473 Binary files /dev/null and b/public/terrain/19/858566/353856.terrain differ diff --git a/public/terrain/19/858566/353857.terrain b/public/terrain/19/858566/353857.terrain new file mode 100644 index 000000000..bb36a5f3c Binary files /dev/null and b/public/terrain/19/858566/353857.terrain differ diff --git a/public/terrain/19/858566/353858.terrain b/public/terrain/19/858566/353858.terrain new file mode 100644 index 000000000..4473474bf Binary files /dev/null and b/public/terrain/19/858566/353858.terrain differ diff --git a/public/terrain/19/858566/353859.terrain b/public/terrain/19/858566/353859.terrain new file mode 100644 index 000000000..68db20d33 Binary files /dev/null and b/public/terrain/19/858566/353859.terrain differ diff --git a/public/terrain/19/858566/353860.terrain b/public/terrain/19/858566/353860.terrain new file mode 100644 index 000000000..341324101 Binary files /dev/null and b/public/terrain/19/858566/353860.terrain differ diff --git a/public/terrain/19/858566/353861.terrain b/public/terrain/19/858566/353861.terrain new file mode 100644 index 000000000..a31eae9f9 Binary files /dev/null and b/public/terrain/19/858566/353861.terrain differ diff --git a/public/terrain/19/858566/353862.terrain b/public/terrain/19/858566/353862.terrain new file mode 100644 index 000000000..ccb999179 Binary files /dev/null and b/public/terrain/19/858566/353862.terrain differ diff --git a/public/terrain/19/858566/353863.terrain b/public/terrain/19/858566/353863.terrain new file mode 100644 index 000000000..f8eb0f2e0 Binary files /dev/null and b/public/terrain/19/858566/353863.terrain differ diff --git a/public/terrain/19/858566/353864.terrain b/public/terrain/19/858566/353864.terrain new file mode 100644 index 000000000..d13bc1fe2 Binary files /dev/null and b/public/terrain/19/858566/353864.terrain differ diff --git a/public/terrain/19/858566/353865.terrain b/public/terrain/19/858566/353865.terrain new file mode 100644 index 000000000..91a5d94a4 Binary files /dev/null and b/public/terrain/19/858566/353865.terrain differ diff --git a/public/terrain/19/858566/353866.terrain b/public/terrain/19/858566/353866.terrain new file mode 100644 index 000000000..d6aff5df6 Binary files /dev/null and b/public/terrain/19/858566/353866.terrain differ diff --git a/public/terrain/19/858566/353867.terrain b/public/terrain/19/858566/353867.terrain new file mode 100644 index 000000000..dd01df5e7 Binary files /dev/null and b/public/terrain/19/858566/353867.terrain differ diff --git a/public/terrain/19/858566/353868.terrain b/public/terrain/19/858566/353868.terrain new file mode 100644 index 000000000..1a19c6092 Binary files /dev/null and b/public/terrain/19/858566/353868.terrain differ diff --git a/public/terrain/19/858566/353869.terrain b/public/terrain/19/858566/353869.terrain new file mode 100644 index 000000000..d11cdf8b2 Binary files /dev/null and b/public/terrain/19/858566/353869.terrain differ diff --git a/public/terrain/19/858566/353870.terrain b/public/terrain/19/858566/353870.terrain new file mode 100644 index 000000000..78b0b07dc Binary files /dev/null and b/public/terrain/19/858566/353870.terrain differ diff --git a/public/terrain/19/858566/353871.terrain b/public/terrain/19/858566/353871.terrain new file mode 100644 index 000000000..d9723d9ad Binary files /dev/null and b/public/terrain/19/858566/353871.terrain differ diff --git a/public/terrain/19/858566/353872.terrain b/public/terrain/19/858566/353872.terrain new file mode 100644 index 000000000..395b6ca08 Binary files /dev/null and b/public/terrain/19/858566/353872.terrain differ diff --git a/public/terrain/19/858566/353873.terrain b/public/terrain/19/858566/353873.terrain new file mode 100644 index 000000000..0bf60f16c Binary files /dev/null and b/public/terrain/19/858566/353873.terrain differ diff --git a/public/terrain/19/858566/353874.terrain b/public/terrain/19/858566/353874.terrain new file mode 100644 index 000000000..e040f78ec Binary files /dev/null and b/public/terrain/19/858566/353874.terrain differ diff --git a/public/terrain/19/858566/353875.terrain b/public/terrain/19/858566/353875.terrain new file mode 100644 index 000000000..bfb8e4e3b Binary files /dev/null and b/public/terrain/19/858566/353875.terrain differ diff --git a/public/terrain/19/858566/353876.terrain b/public/terrain/19/858566/353876.terrain new file mode 100644 index 000000000..19ec12182 Binary files /dev/null and b/public/terrain/19/858566/353876.terrain differ diff --git a/public/terrain/19/858566/353877.terrain b/public/terrain/19/858566/353877.terrain new file mode 100644 index 000000000..460b02a54 Binary files /dev/null and b/public/terrain/19/858566/353877.terrain differ diff --git a/public/terrain/19/858566/353878.terrain b/public/terrain/19/858566/353878.terrain new file mode 100644 index 000000000..167a09f62 Binary files /dev/null and b/public/terrain/19/858566/353878.terrain differ diff --git a/public/terrain/19/858566/353879.terrain b/public/terrain/19/858566/353879.terrain new file mode 100644 index 000000000..af6a400fa Binary files /dev/null and b/public/terrain/19/858566/353879.terrain differ diff --git a/public/terrain/19/858566/353880.terrain b/public/terrain/19/858566/353880.terrain new file mode 100644 index 000000000..6beda9d1c Binary files /dev/null and b/public/terrain/19/858566/353880.terrain differ diff --git a/public/terrain/19/858566/353881.terrain b/public/terrain/19/858566/353881.terrain new file mode 100644 index 000000000..8ad7579fb Binary files /dev/null and b/public/terrain/19/858566/353881.terrain differ diff --git a/public/terrain/19/858566/353882.terrain b/public/terrain/19/858566/353882.terrain new file mode 100644 index 000000000..41eb4ade9 Binary files /dev/null and b/public/terrain/19/858566/353882.terrain differ diff --git a/public/terrain/19/858566/353883.terrain b/public/terrain/19/858566/353883.terrain new file mode 100644 index 000000000..815fa87a1 Binary files /dev/null and b/public/terrain/19/858566/353883.terrain differ diff --git a/public/terrain/19/858566/353884.terrain b/public/terrain/19/858566/353884.terrain new file mode 100644 index 000000000..d9d0d1eb1 Binary files /dev/null and b/public/terrain/19/858566/353884.terrain differ diff --git a/public/terrain/19/858566/353885.terrain b/public/terrain/19/858566/353885.terrain new file mode 100644 index 000000000..c51f3559b Binary files /dev/null and b/public/terrain/19/858566/353885.terrain differ diff --git a/public/terrain/19/858566/353886.terrain b/public/terrain/19/858566/353886.terrain new file mode 100644 index 000000000..6ce930e39 Binary files /dev/null and b/public/terrain/19/858566/353886.terrain differ diff --git a/public/terrain/19/858566/353887.terrain b/public/terrain/19/858566/353887.terrain new file mode 100644 index 000000000..cb9a2e58c Binary files /dev/null and b/public/terrain/19/858566/353887.terrain differ diff --git a/public/terrain/19/858566/353888.terrain b/public/terrain/19/858566/353888.terrain new file mode 100644 index 000000000..237636f75 Binary files /dev/null and b/public/terrain/19/858566/353888.terrain differ diff --git a/public/terrain/19/858566/353889.terrain b/public/terrain/19/858566/353889.terrain new file mode 100644 index 000000000..cb4d1c070 Binary files /dev/null and b/public/terrain/19/858566/353889.terrain differ diff --git a/public/terrain/19/858566/353890.terrain b/public/terrain/19/858566/353890.terrain new file mode 100644 index 000000000..027582994 Binary files /dev/null and b/public/terrain/19/858566/353890.terrain differ diff --git a/public/terrain/19/858566/353891.terrain b/public/terrain/19/858566/353891.terrain new file mode 100644 index 000000000..49275df64 Binary files /dev/null and b/public/terrain/19/858566/353891.terrain differ diff --git a/public/terrain/19/858566/353892.terrain b/public/terrain/19/858566/353892.terrain new file mode 100644 index 000000000..3a7ae1283 Binary files /dev/null and b/public/terrain/19/858566/353892.terrain differ diff --git a/public/terrain/19/858566/353893.terrain b/public/terrain/19/858566/353893.terrain new file mode 100644 index 000000000..cb373865a Binary files /dev/null and b/public/terrain/19/858566/353893.terrain differ diff --git a/public/terrain/19/858566/353894.terrain b/public/terrain/19/858566/353894.terrain new file mode 100644 index 000000000..4d4375b9b Binary files /dev/null and b/public/terrain/19/858566/353894.terrain differ diff --git a/public/terrain/19/858566/353895.terrain b/public/terrain/19/858566/353895.terrain new file mode 100644 index 000000000..489ac35aa Binary files /dev/null and b/public/terrain/19/858566/353895.terrain differ diff --git a/public/terrain/19/858566/353896.terrain b/public/terrain/19/858566/353896.terrain new file mode 100644 index 000000000..2cefa4e39 Binary files /dev/null and b/public/terrain/19/858566/353896.terrain differ diff --git a/public/terrain/19/858566/353897.terrain b/public/terrain/19/858566/353897.terrain new file mode 100644 index 000000000..75e29092d Binary files /dev/null and b/public/terrain/19/858566/353897.terrain differ diff --git a/public/terrain/19/858566/353898.terrain b/public/terrain/19/858566/353898.terrain new file mode 100644 index 000000000..62adcb382 Binary files /dev/null and b/public/terrain/19/858566/353898.terrain differ diff --git a/public/terrain/19/858566/353899.terrain b/public/terrain/19/858566/353899.terrain new file mode 100644 index 000000000..0b74f1814 Binary files /dev/null and b/public/terrain/19/858566/353899.terrain differ diff --git a/public/terrain/19/858566/353900.terrain b/public/terrain/19/858566/353900.terrain new file mode 100644 index 000000000..9e1f599f9 Binary files /dev/null and b/public/terrain/19/858566/353900.terrain differ diff --git a/public/terrain/19/858566/353901.terrain b/public/terrain/19/858566/353901.terrain new file mode 100644 index 000000000..465d07f9e Binary files /dev/null and b/public/terrain/19/858566/353901.terrain differ diff --git a/public/terrain/19/858566/353902.terrain b/public/terrain/19/858566/353902.terrain new file mode 100644 index 000000000..d54ac615b Binary files /dev/null and b/public/terrain/19/858566/353902.terrain differ diff --git a/public/terrain/19/858566/353903.terrain b/public/terrain/19/858566/353903.terrain new file mode 100644 index 000000000..9864a36b8 Binary files /dev/null and b/public/terrain/19/858566/353903.terrain differ diff --git a/public/terrain/19/858566/353904.terrain b/public/terrain/19/858566/353904.terrain new file mode 100644 index 000000000..7aba3c94c Binary files /dev/null and b/public/terrain/19/858566/353904.terrain differ diff --git a/public/terrain/19/858566/353905.terrain b/public/terrain/19/858566/353905.terrain new file mode 100644 index 000000000..ae8f237af Binary files /dev/null and b/public/terrain/19/858566/353905.terrain differ diff --git a/public/terrain/19/858566/353906.terrain b/public/terrain/19/858566/353906.terrain new file mode 100644 index 000000000..6bfc5571a Binary files /dev/null and b/public/terrain/19/858566/353906.terrain differ diff --git a/public/terrain/19/858566/353907.terrain b/public/terrain/19/858566/353907.terrain new file mode 100644 index 000000000..df8b93c3e Binary files /dev/null and b/public/terrain/19/858566/353907.terrain differ diff --git a/public/terrain/19/858566/353908.terrain b/public/terrain/19/858566/353908.terrain new file mode 100644 index 000000000..53dbfe035 Binary files /dev/null and b/public/terrain/19/858566/353908.terrain differ diff --git a/public/terrain/19/858566/353909.terrain b/public/terrain/19/858566/353909.terrain new file mode 100644 index 000000000..986dfcaba Binary files /dev/null and b/public/terrain/19/858566/353909.terrain differ diff --git a/public/terrain/19/858566/353910.terrain b/public/terrain/19/858566/353910.terrain new file mode 100644 index 000000000..4f9298093 Binary files /dev/null and b/public/terrain/19/858566/353910.terrain differ diff --git a/public/terrain/19/858566/353911.terrain b/public/terrain/19/858566/353911.terrain new file mode 100644 index 000000000..5e0938017 Binary files /dev/null and b/public/terrain/19/858566/353911.terrain differ diff --git a/public/terrain/19/858566/353912.terrain b/public/terrain/19/858566/353912.terrain new file mode 100644 index 000000000..4a3983629 Binary files /dev/null and b/public/terrain/19/858566/353912.terrain differ diff --git a/public/terrain/19/858566/353913.terrain b/public/terrain/19/858566/353913.terrain new file mode 100644 index 000000000..328abaf66 Binary files /dev/null and b/public/terrain/19/858566/353913.terrain differ diff --git a/public/terrain/19/858566/353914.terrain b/public/terrain/19/858566/353914.terrain new file mode 100644 index 000000000..449430a2c Binary files /dev/null and b/public/terrain/19/858566/353914.terrain differ diff --git a/public/terrain/19/858566/353915.terrain b/public/terrain/19/858566/353915.terrain new file mode 100644 index 000000000..58e82e131 Binary files /dev/null and b/public/terrain/19/858566/353915.terrain differ diff --git a/public/terrain/19/858566/353916.terrain b/public/terrain/19/858566/353916.terrain new file mode 100644 index 000000000..be671daac Binary files /dev/null and b/public/terrain/19/858566/353916.terrain differ diff --git a/public/terrain/19/858566/353917.terrain b/public/terrain/19/858566/353917.terrain new file mode 100644 index 000000000..8a9aea921 Binary files /dev/null and b/public/terrain/19/858566/353917.terrain differ diff --git a/public/terrain/19/858566/353918.terrain b/public/terrain/19/858566/353918.terrain new file mode 100644 index 000000000..718f7047f Binary files /dev/null and b/public/terrain/19/858566/353918.terrain differ diff --git a/public/terrain/19/858566/353919.terrain b/public/terrain/19/858566/353919.terrain new file mode 100644 index 000000000..86ab168b9 Binary files /dev/null and b/public/terrain/19/858566/353919.terrain differ diff --git a/public/terrain/19/858566/353920.terrain b/public/terrain/19/858566/353920.terrain new file mode 100644 index 000000000..d22d57ff1 Binary files /dev/null and b/public/terrain/19/858566/353920.terrain differ diff --git a/public/terrain/19/858566/353921.terrain b/public/terrain/19/858566/353921.terrain new file mode 100644 index 000000000..7eac181b5 Binary files /dev/null and b/public/terrain/19/858566/353921.terrain differ diff --git a/public/terrain/19/858566/353922.terrain b/public/terrain/19/858566/353922.terrain new file mode 100644 index 000000000..70e6bdc61 Binary files /dev/null and b/public/terrain/19/858566/353922.terrain differ diff --git a/public/terrain/19/858566/353923.terrain b/public/terrain/19/858566/353923.terrain new file mode 100644 index 000000000..b3072356e Binary files /dev/null and b/public/terrain/19/858566/353923.terrain differ diff --git a/public/terrain/19/858566/353924.terrain b/public/terrain/19/858566/353924.terrain new file mode 100644 index 000000000..588bab634 Binary files /dev/null and b/public/terrain/19/858566/353924.terrain differ diff --git a/public/terrain/19/858566/353925.terrain b/public/terrain/19/858566/353925.terrain new file mode 100644 index 000000000..cdf8053f6 Binary files /dev/null and b/public/terrain/19/858566/353925.terrain differ diff --git a/public/terrain/19/858566/353926.terrain b/public/terrain/19/858566/353926.terrain new file mode 100644 index 000000000..1f1b5c7e4 Binary files /dev/null and b/public/terrain/19/858566/353926.terrain differ diff --git a/public/terrain/19/858566/353927.terrain b/public/terrain/19/858566/353927.terrain new file mode 100644 index 000000000..812c08d3c Binary files /dev/null and b/public/terrain/19/858566/353927.terrain differ diff --git a/public/terrain/19/858566/353928.terrain b/public/terrain/19/858566/353928.terrain new file mode 100644 index 000000000..017cff8eb Binary files /dev/null and b/public/terrain/19/858566/353928.terrain differ diff --git a/public/terrain/19/858566/353929.terrain b/public/terrain/19/858566/353929.terrain new file mode 100644 index 000000000..1792a3b0e Binary files /dev/null and b/public/terrain/19/858566/353929.terrain differ diff --git a/public/terrain/19/858566/353930.terrain b/public/terrain/19/858566/353930.terrain new file mode 100644 index 000000000..473efc7b5 Binary files /dev/null and b/public/terrain/19/858566/353930.terrain differ diff --git a/public/terrain/19/858566/353931.terrain b/public/terrain/19/858566/353931.terrain new file mode 100644 index 000000000..1d7fb36e0 Binary files /dev/null and b/public/terrain/19/858566/353931.terrain differ diff --git a/public/terrain/19/858566/353932.terrain b/public/terrain/19/858566/353932.terrain new file mode 100644 index 000000000..46e223a6f Binary files /dev/null and b/public/terrain/19/858566/353932.terrain differ diff --git a/public/terrain/19/858566/353933.terrain b/public/terrain/19/858566/353933.terrain new file mode 100644 index 000000000..e95b889d8 Binary files /dev/null and b/public/terrain/19/858566/353933.terrain differ diff --git a/public/terrain/19/858566/353934.terrain b/public/terrain/19/858566/353934.terrain new file mode 100644 index 000000000..b2203e719 Binary files /dev/null and b/public/terrain/19/858566/353934.terrain differ diff --git a/public/terrain/19/858566/353935.terrain b/public/terrain/19/858566/353935.terrain new file mode 100644 index 000000000..2d86c24a3 Binary files /dev/null and b/public/terrain/19/858566/353935.terrain differ diff --git a/public/terrain/19/858566/353936.terrain b/public/terrain/19/858566/353936.terrain new file mode 100644 index 000000000..c9bb88945 Binary files /dev/null and b/public/terrain/19/858566/353936.terrain differ diff --git a/public/terrain/19/858566/353937.terrain b/public/terrain/19/858566/353937.terrain new file mode 100644 index 000000000..3db763aeb Binary files /dev/null and b/public/terrain/19/858566/353937.terrain differ diff --git a/public/terrain/19/858566/353938.terrain b/public/terrain/19/858566/353938.terrain new file mode 100644 index 000000000..3d1920d88 Binary files /dev/null and b/public/terrain/19/858566/353938.terrain differ diff --git a/public/terrain/19/858566/353939.terrain b/public/terrain/19/858566/353939.terrain new file mode 100644 index 000000000..87cdc0f4d Binary files /dev/null and b/public/terrain/19/858566/353939.terrain differ diff --git a/public/terrain/19/858566/353940.terrain b/public/terrain/19/858566/353940.terrain new file mode 100644 index 000000000..389225d22 Binary files /dev/null and b/public/terrain/19/858566/353940.terrain differ diff --git a/public/terrain/19/858566/353941.terrain b/public/terrain/19/858566/353941.terrain new file mode 100644 index 000000000..9a341bd78 Binary files /dev/null and b/public/terrain/19/858566/353941.terrain differ diff --git a/public/terrain/19/858566/353942.terrain b/public/terrain/19/858566/353942.terrain new file mode 100644 index 000000000..d62d5c9e8 Binary files /dev/null and b/public/terrain/19/858566/353942.terrain differ diff --git a/public/terrain/19/858566/353943.terrain b/public/terrain/19/858566/353943.terrain new file mode 100644 index 000000000..57f73b5e6 Binary files /dev/null and b/public/terrain/19/858566/353943.terrain differ diff --git a/public/terrain/19/858566/353944.terrain b/public/terrain/19/858566/353944.terrain new file mode 100644 index 000000000..9eced0055 Binary files /dev/null and b/public/terrain/19/858566/353944.terrain differ diff --git a/public/terrain/19/858566/353945.terrain b/public/terrain/19/858566/353945.terrain new file mode 100644 index 000000000..49a3d269c Binary files /dev/null and b/public/terrain/19/858566/353945.terrain differ diff --git a/public/terrain/19/858566/353946.terrain b/public/terrain/19/858566/353946.terrain new file mode 100644 index 000000000..374258555 Binary files /dev/null and b/public/terrain/19/858566/353946.terrain differ diff --git a/public/terrain/19/858566/353947.terrain b/public/terrain/19/858566/353947.terrain new file mode 100644 index 000000000..7ed5fdaeb Binary files /dev/null and b/public/terrain/19/858566/353947.terrain differ diff --git a/public/terrain/19/858566/353948.terrain b/public/terrain/19/858566/353948.terrain new file mode 100644 index 000000000..124a6d034 Binary files /dev/null and b/public/terrain/19/858566/353948.terrain differ diff --git a/public/terrain/19/858566/353949.terrain b/public/terrain/19/858566/353949.terrain new file mode 100644 index 000000000..5d4632111 Binary files /dev/null and b/public/terrain/19/858566/353949.terrain differ diff --git a/public/terrain/19/858566/353950.terrain b/public/terrain/19/858566/353950.terrain new file mode 100644 index 000000000..1c4c429fc Binary files /dev/null and b/public/terrain/19/858566/353950.terrain differ diff --git a/public/terrain/19/858566/353951.terrain b/public/terrain/19/858566/353951.terrain new file mode 100644 index 000000000..a42186fe1 Binary files /dev/null and b/public/terrain/19/858566/353951.terrain differ diff --git a/public/terrain/19/858566/353952.terrain b/public/terrain/19/858566/353952.terrain new file mode 100644 index 000000000..6b251b49e Binary files /dev/null and b/public/terrain/19/858566/353952.terrain differ diff --git a/public/terrain/19/858566/353953.terrain b/public/terrain/19/858566/353953.terrain new file mode 100644 index 000000000..747dae090 Binary files /dev/null and b/public/terrain/19/858566/353953.terrain differ diff --git a/public/terrain/19/858566/353954.terrain b/public/terrain/19/858566/353954.terrain new file mode 100644 index 000000000..157f14275 Binary files /dev/null and b/public/terrain/19/858566/353954.terrain differ diff --git a/public/terrain/19/858566/353955.terrain b/public/terrain/19/858566/353955.terrain new file mode 100644 index 000000000..8e8951655 Binary files /dev/null and b/public/terrain/19/858566/353955.terrain differ diff --git a/public/terrain/19/858566/353956.terrain b/public/terrain/19/858566/353956.terrain new file mode 100644 index 000000000..08b6d42df Binary files /dev/null and b/public/terrain/19/858566/353956.terrain differ diff --git a/public/terrain/19/858566/353957.terrain b/public/terrain/19/858566/353957.terrain new file mode 100644 index 000000000..fa5391b13 Binary files /dev/null and b/public/terrain/19/858566/353957.terrain differ diff --git a/public/terrain/19/858566/353958.terrain b/public/terrain/19/858566/353958.terrain new file mode 100644 index 000000000..2436b3a0e Binary files /dev/null and b/public/terrain/19/858566/353958.terrain differ diff --git a/public/terrain/19/858566/353959.terrain b/public/terrain/19/858566/353959.terrain new file mode 100644 index 000000000..70bbb46f5 Binary files /dev/null and b/public/terrain/19/858566/353959.terrain differ diff --git a/public/terrain/19/858566/353960.terrain b/public/terrain/19/858566/353960.terrain new file mode 100644 index 000000000..25afc6f22 Binary files /dev/null and b/public/terrain/19/858566/353960.terrain differ diff --git a/public/terrain/19/858566/353961.terrain b/public/terrain/19/858566/353961.terrain new file mode 100644 index 000000000..d54e9b981 Binary files /dev/null and b/public/terrain/19/858566/353961.terrain differ diff --git a/public/terrain/19/858566/353962.terrain b/public/terrain/19/858566/353962.terrain new file mode 100644 index 000000000..a87ebba1f Binary files /dev/null and b/public/terrain/19/858566/353962.terrain differ diff --git a/public/terrain/19/858566/353963.terrain b/public/terrain/19/858566/353963.terrain new file mode 100644 index 000000000..baa7df227 Binary files /dev/null and b/public/terrain/19/858566/353963.terrain differ diff --git a/public/terrain/19/858566/353964.terrain b/public/terrain/19/858566/353964.terrain new file mode 100644 index 000000000..9d4f126a9 Binary files /dev/null and b/public/terrain/19/858566/353964.terrain differ diff --git a/public/terrain/19/858566/353965.terrain b/public/terrain/19/858566/353965.terrain new file mode 100644 index 000000000..fe1812c3d Binary files /dev/null and b/public/terrain/19/858566/353965.terrain differ diff --git a/public/terrain/19/858566/353966.terrain b/public/terrain/19/858566/353966.terrain new file mode 100644 index 000000000..dea473716 Binary files /dev/null and b/public/terrain/19/858566/353966.terrain differ diff --git a/public/terrain/19/858566/353967.terrain b/public/terrain/19/858566/353967.terrain new file mode 100644 index 000000000..98f4c3b32 Binary files /dev/null and b/public/terrain/19/858566/353967.terrain differ diff --git a/public/terrain/19/858566/353968.terrain b/public/terrain/19/858566/353968.terrain new file mode 100644 index 000000000..2d2992b01 Binary files /dev/null and b/public/terrain/19/858566/353968.terrain differ diff --git a/public/terrain/19/858566/353969.terrain b/public/terrain/19/858566/353969.terrain new file mode 100644 index 000000000..71d33c793 Binary files /dev/null and b/public/terrain/19/858566/353969.terrain differ diff --git a/public/terrain/19/858566/353970.terrain b/public/terrain/19/858566/353970.terrain new file mode 100644 index 000000000..38433927d Binary files /dev/null and b/public/terrain/19/858566/353970.terrain differ diff --git a/public/terrain/19/858566/353971.terrain b/public/terrain/19/858566/353971.terrain new file mode 100644 index 000000000..2dc7c57fb Binary files /dev/null and b/public/terrain/19/858566/353971.terrain differ diff --git a/public/terrain/19/858566/353972.terrain b/public/terrain/19/858566/353972.terrain new file mode 100644 index 000000000..3cc98016f Binary files /dev/null and b/public/terrain/19/858566/353972.terrain differ diff --git a/public/terrain/19/858566/353973.terrain b/public/terrain/19/858566/353973.terrain new file mode 100644 index 000000000..ea692a7d2 Binary files /dev/null and b/public/terrain/19/858566/353973.terrain differ diff --git a/public/terrain/19/858566/353974.terrain b/public/terrain/19/858566/353974.terrain new file mode 100644 index 000000000..585a7d3c9 Binary files /dev/null and b/public/terrain/19/858566/353974.terrain differ diff --git a/public/terrain/19/858566/353975.terrain b/public/terrain/19/858566/353975.terrain new file mode 100644 index 000000000..8193f4967 Binary files /dev/null and b/public/terrain/19/858566/353975.terrain differ diff --git a/public/terrain/19/858566/353976.terrain b/public/terrain/19/858566/353976.terrain new file mode 100644 index 000000000..60c8453e9 Binary files /dev/null and b/public/terrain/19/858566/353976.terrain differ diff --git a/public/terrain/19/858566/353977.terrain b/public/terrain/19/858566/353977.terrain new file mode 100644 index 000000000..7afcbe38b Binary files /dev/null and b/public/terrain/19/858566/353977.terrain differ diff --git a/public/terrain/19/858566/353978.terrain b/public/terrain/19/858566/353978.terrain new file mode 100644 index 000000000..01831a0c8 Binary files /dev/null and b/public/terrain/19/858566/353978.terrain differ diff --git a/public/terrain/19/858566/353979.terrain b/public/terrain/19/858566/353979.terrain new file mode 100644 index 000000000..929dc1ce9 Binary files /dev/null and b/public/terrain/19/858566/353979.terrain differ diff --git a/public/terrain/19/858566/353980.terrain b/public/terrain/19/858566/353980.terrain new file mode 100644 index 000000000..131f4133c Binary files /dev/null and b/public/terrain/19/858566/353980.terrain differ diff --git a/public/terrain/19/858566/353981.terrain b/public/terrain/19/858566/353981.terrain new file mode 100644 index 000000000..d8eb4d1a0 Binary files /dev/null and b/public/terrain/19/858566/353981.terrain differ diff --git a/public/terrain/19/858566/353982.terrain b/public/terrain/19/858566/353982.terrain new file mode 100644 index 000000000..d5d08c23b Binary files /dev/null and b/public/terrain/19/858566/353982.terrain differ diff --git a/public/terrain/19/858566/353983.terrain b/public/terrain/19/858566/353983.terrain new file mode 100644 index 000000000..574f1edba Binary files /dev/null and b/public/terrain/19/858566/353983.terrain differ diff --git a/public/terrain/19/858566/353984.terrain b/public/terrain/19/858566/353984.terrain new file mode 100644 index 000000000..7a52af918 Binary files /dev/null and b/public/terrain/19/858566/353984.terrain differ diff --git a/public/terrain/19/858566/353985.terrain b/public/terrain/19/858566/353985.terrain new file mode 100644 index 000000000..ef3c21b44 Binary files /dev/null and b/public/terrain/19/858566/353985.terrain differ diff --git a/public/terrain/19/858566/353986.terrain b/public/terrain/19/858566/353986.terrain new file mode 100644 index 000000000..f1e4ec2eb Binary files /dev/null and b/public/terrain/19/858566/353986.terrain differ diff --git a/public/terrain/19/858566/353987.terrain b/public/terrain/19/858566/353987.terrain new file mode 100644 index 000000000..a5694ae7f Binary files /dev/null and b/public/terrain/19/858566/353987.terrain differ diff --git a/public/terrain/19/858566/353988.terrain b/public/terrain/19/858566/353988.terrain new file mode 100644 index 000000000..d49b11417 Binary files /dev/null and b/public/terrain/19/858566/353988.terrain differ diff --git a/public/terrain/19/858566/353989.terrain b/public/terrain/19/858566/353989.terrain new file mode 100644 index 000000000..cfe6145f8 Binary files /dev/null and b/public/terrain/19/858566/353989.terrain differ diff --git a/public/terrain/19/858566/353990.terrain b/public/terrain/19/858566/353990.terrain new file mode 100644 index 000000000..80cbc638c Binary files /dev/null and b/public/terrain/19/858566/353990.terrain differ diff --git a/public/terrain/19/858566/353991.terrain b/public/terrain/19/858566/353991.terrain new file mode 100644 index 000000000..bdf25ad2e Binary files /dev/null and b/public/terrain/19/858566/353991.terrain differ diff --git a/public/terrain/19/858566/353992.terrain b/public/terrain/19/858566/353992.terrain new file mode 100644 index 000000000..e457bbd25 Binary files /dev/null and b/public/terrain/19/858566/353992.terrain differ diff --git a/public/terrain/19/858566/353993.terrain b/public/terrain/19/858566/353993.terrain new file mode 100644 index 000000000..ac1154137 Binary files /dev/null and b/public/terrain/19/858566/353993.terrain differ diff --git a/public/terrain/19/858566/353994.terrain b/public/terrain/19/858566/353994.terrain new file mode 100644 index 000000000..cbb500f20 Binary files /dev/null and b/public/terrain/19/858566/353994.terrain differ diff --git a/public/terrain/19/858566/353995.terrain b/public/terrain/19/858566/353995.terrain new file mode 100644 index 000000000..4a99e9d99 Binary files /dev/null and b/public/terrain/19/858566/353995.terrain differ diff --git a/public/terrain/19/858566/353996.terrain b/public/terrain/19/858566/353996.terrain new file mode 100644 index 000000000..a05520904 Binary files /dev/null and b/public/terrain/19/858566/353996.terrain differ diff --git a/public/terrain/19/858566/353997.terrain b/public/terrain/19/858566/353997.terrain new file mode 100644 index 000000000..f8a75da42 Binary files /dev/null and b/public/terrain/19/858566/353997.terrain differ diff --git a/public/terrain/19/858566/353998.terrain b/public/terrain/19/858566/353998.terrain new file mode 100644 index 000000000..9cc417b30 Binary files /dev/null and b/public/terrain/19/858566/353998.terrain differ diff --git a/public/terrain/19/858566/353999.terrain b/public/terrain/19/858566/353999.terrain new file mode 100644 index 000000000..d6a4ad91d Binary files /dev/null and b/public/terrain/19/858566/353999.terrain differ diff --git a/public/terrain/19/858566/354000.terrain b/public/terrain/19/858566/354000.terrain new file mode 100644 index 000000000..821650ee2 Binary files /dev/null and b/public/terrain/19/858566/354000.terrain differ diff --git a/public/terrain/19/858566/354001.terrain b/public/terrain/19/858566/354001.terrain new file mode 100644 index 000000000..3f6fae38d Binary files /dev/null and b/public/terrain/19/858566/354001.terrain differ diff --git a/public/terrain/19/858566/354002.terrain b/public/terrain/19/858566/354002.terrain new file mode 100644 index 000000000..a3f762937 Binary files /dev/null and b/public/terrain/19/858566/354002.terrain differ diff --git a/public/terrain/19/858566/354003.terrain b/public/terrain/19/858566/354003.terrain new file mode 100644 index 000000000..1b85de356 Binary files /dev/null and b/public/terrain/19/858566/354003.terrain differ diff --git a/public/terrain/19/858566/354004.terrain b/public/terrain/19/858566/354004.terrain new file mode 100644 index 000000000..1dbac8f5b Binary files /dev/null and b/public/terrain/19/858566/354004.terrain differ diff --git a/public/terrain/19/858566/354005.terrain b/public/terrain/19/858566/354005.terrain new file mode 100644 index 000000000..d4c4caf6d Binary files /dev/null and b/public/terrain/19/858566/354005.terrain differ diff --git a/public/terrain/19/858566/354006.terrain b/public/terrain/19/858566/354006.terrain new file mode 100644 index 000000000..3da8d45d5 Binary files /dev/null and b/public/terrain/19/858566/354006.terrain differ diff --git a/public/terrain/19/858566/354007.terrain b/public/terrain/19/858566/354007.terrain new file mode 100644 index 000000000..36edd7e2b Binary files /dev/null and b/public/terrain/19/858566/354007.terrain differ diff --git a/public/terrain/19/858566/354008.terrain b/public/terrain/19/858566/354008.terrain new file mode 100644 index 000000000..f1c4fb396 Binary files /dev/null and b/public/terrain/19/858566/354008.terrain differ diff --git a/public/terrain/19/858566/354009.terrain b/public/terrain/19/858566/354009.terrain new file mode 100644 index 000000000..0c9b3a0cb Binary files /dev/null and b/public/terrain/19/858566/354009.terrain differ diff --git a/public/terrain/19/858566/354010.terrain b/public/terrain/19/858566/354010.terrain new file mode 100644 index 000000000..5e3bf9e2f Binary files /dev/null and b/public/terrain/19/858566/354010.terrain differ diff --git a/public/terrain/19/858566/354011.terrain b/public/terrain/19/858566/354011.terrain new file mode 100644 index 000000000..4395e7351 Binary files /dev/null and b/public/terrain/19/858566/354011.terrain differ diff --git a/public/terrain/19/858566/354012.terrain b/public/terrain/19/858566/354012.terrain new file mode 100644 index 000000000..9f7ff3838 Binary files /dev/null and b/public/terrain/19/858566/354012.terrain differ diff --git a/public/terrain/19/858566/354013.terrain b/public/terrain/19/858566/354013.terrain new file mode 100644 index 000000000..38e4433a9 Binary files /dev/null and b/public/terrain/19/858566/354013.terrain differ diff --git a/public/terrain/19/858566/354014.terrain b/public/terrain/19/858566/354014.terrain new file mode 100644 index 000000000..eac35c8d6 Binary files /dev/null and b/public/terrain/19/858566/354014.terrain differ diff --git a/public/terrain/19/858566/354015.terrain b/public/terrain/19/858566/354015.terrain new file mode 100644 index 000000000..b11569c43 Binary files /dev/null and b/public/terrain/19/858566/354015.terrain differ diff --git a/public/terrain/19/858566/354016.terrain b/public/terrain/19/858566/354016.terrain new file mode 100644 index 000000000..3db9e999a Binary files /dev/null and b/public/terrain/19/858566/354016.terrain differ diff --git a/public/terrain/19/858566/354017.terrain b/public/terrain/19/858566/354017.terrain new file mode 100644 index 000000000..a920c905e Binary files /dev/null and b/public/terrain/19/858566/354017.terrain differ diff --git a/public/terrain/19/858566/354018.terrain b/public/terrain/19/858566/354018.terrain new file mode 100644 index 000000000..e4e1920dd Binary files /dev/null and b/public/terrain/19/858566/354018.terrain differ diff --git a/public/terrain/19/858566/354019.terrain b/public/terrain/19/858566/354019.terrain new file mode 100644 index 000000000..c2715eab3 Binary files /dev/null and b/public/terrain/19/858566/354019.terrain differ diff --git a/public/terrain/19/858566/354020.terrain b/public/terrain/19/858566/354020.terrain new file mode 100644 index 000000000..202317ca8 Binary files /dev/null and b/public/terrain/19/858566/354020.terrain differ diff --git a/public/terrain/19/858566/354021.terrain b/public/terrain/19/858566/354021.terrain new file mode 100644 index 000000000..b6abe50f8 Binary files /dev/null and b/public/terrain/19/858566/354021.terrain differ diff --git a/public/terrain/19/858566/354022.terrain b/public/terrain/19/858566/354022.terrain new file mode 100644 index 000000000..0bc3a1c40 Binary files /dev/null and b/public/terrain/19/858566/354022.terrain differ diff --git a/public/terrain/19/858566/354023.terrain b/public/terrain/19/858566/354023.terrain new file mode 100644 index 000000000..53c4bd1c9 Binary files /dev/null and b/public/terrain/19/858566/354023.terrain differ diff --git a/public/terrain/19/858566/354024.terrain b/public/terrain/19/858566/354024.terrain new file mode 100644 index 000000000..9ae65c90d Binary files /dev/null and b/public/terrain/19/858566/354024.terrain differ diff --git a/public/terrain/19/858566/354025.terrain b/public/terrain/19/858566/354025.terrain new file mode 100644 index 000000000..eafc6ad79 Binary files /dev/null and b/public/terrain/19/858566/354025.terrain differ diff --git a/public/terrain/19/858566/354026.terrain b/public/terrain/19/858566/354026.terrain new file mode 100644 index 000000000..926b45de2 Binary files /dev/null and b/public/terrain/19/858566/354026.terrain differ diff --git a/public/terrain/19/858566/354027.terrain b/public/terrain/19/858566/354027.terrain new file mode 100644 index 000000000..91f9e52cf Binary files /dev/null and b/public/terrain/19/858566/354027.terrain differ diff --git a/public/terrain/19/858566/354028.terrain b/public/terrain/19/858566/354028.terrain new file mode 100644 index 000000000..a7fb40c6e Binary files /dev/null and b/public/terrain/19/858566/354028.terrain differ diff --git a/public/terrain/19/858566/354029.terrain b/public/terrain/19/858566/354029.terrain new file mode 100644 index 000000000..69171445d Binary files /dev/null and b/public/terrain/19/858566/354029.terrain differ diff --git a/public/terrain/19/858566/354030.terrain b/public/terrain/19/858566/354030.terrain new file mode 100644 index 000000000..43f839563 Binary files /dev/null and b/public/terrain/19/858566/354030.terrain differ diff --git a/public/terrain/19/858566/354031.terrain b/public/terrain/19/858566/354031.terrain new file mode 100644 index 000000000..6bc4b3988 Binary files /dev/null and b/public/terrain/19/858566/354031.terrain differ diff --git a/public/terrain/19/858566/354032.terrain b/public/terrain/19/858566/354032.terrain new file mode 100644 index 000000000..d676d4b1d Binary files /dev/null and b/public/terrain/19/858566/354032.terrain differ diff --git a/public/terrain/19/858566/354033.terrain b/public/terrain/19/858566/354033.terrain new file mode 100644 index 000000000..bcef3bf77 Binary files /dev/null and b/public/terrain/19/858566/354033.terrain differ diff --git a/public/terrain/19/858566/354034.terrain b/public/terrain/19/858566/354034.terrain new file mode 100644 index 000000000..28de60c63 Binary files /dev/null and b/public/terrain/19/858566/354034.terrain differ diff --git a/public/terrain/19/858566/354035.terrain b/public/terrain/19/858566/354035.terrain new file mode 100644 index 000000000..a26ddaef3 Binary files /dev/null and b/public/terrain/19/858566/354035.terrain differ diff --git a/public/terrain/19/858566/354036.terrain b/public/terrain/19/858566/354036.terrain new file mode 100644 index 000000000..8ebbb76f9 Binary files /dev/null and b/public/terrain/19/858566/354036.terrain differ diff --git a/public/terrain/19/858566/354037.terrain b/public/terrain/19/858566/354037.terrain new file mode 100644 index 000000000..ac0c6df64 Binary files /dev/null and b/public/terrain/19/858566/354037.terrain differ diff --git a/public/terrain/19/858566/354038.terrain b/public/terrain/19/858566/354038.terrain new file mode 100644 index 000000000..5915f175b Binary files /dev/null and b/public/terrain/19/858566/354038.terrain differ diff --git a/public/terrain/19/858566/354039.terrain b/public/terrain/19/858566/354039.terrain new file mode 100644 index 000000000..fbd540f79 Binary files /dev/null and b/public/terrain/19/858566/354039.terrain differ diff --git a/public/terrain/19/858566/354040.terrain b/public/terrain/19/858566/354040.terrain new file mode 100644 index 000000000..1d1a9dbee Binary files /dev/null and b/public/terrain/19/858566/354040.terrain differ diff --git a/public/terrain/19/858566/354041.terrain b/public/terrain/19/858566/354041.terrain new file mode 100644 index 000000000..1a6025779 Binary files /dev/null and b/public/terrain/19/858566/354041.terrain differ diff --git a/public/terrain/19/858566/354042.terrain b/public/terrain/19/858566/354042.terrain new file mode 100644 index 000000000..b26326424 Binary files /dev/null and b/public/terrain/19/858566/354042.terrain differ diff --git a/public/terrain/19/858566/354043.terrain b/public/terrain/19/858566/354043.terrain new file mode 100644 index 000000000..36bfd2ce8 Binary files /dev/null and b/public/terrain/19/858566/354043.terrain differ diff --git a/public/terrain/19/858566/354044.terrain b/public/terrain/19/858566/354044.terrain new file mode 100644 index 000000000..9189a9022 Binary files /dev/null and b/public/terrain/19/858566/354044.terrain differ diff --git a/public/terrain/19/858566/354045.terrain b/public/terrain/19/858566/354045.terrain new file mode 100644 index 000000000..6d92a230e Binary files /dev/null and b/public/terrain/19/858566/354045.terrain differ diff --git a/public/terrain/19/858566/354046.terrain b/public/terrain/19/858566/354046.terrain new file mode 100644 index 000000000..f98093754 Binary files /dev/null and b/public/terrain/19/858566/354046.terrain differ diff --git a/public/terrain/19/858566/354047.terrain b/public/terrain/19/858566/354047.terrain new file mode 100644 index 000000000..b0c15164b Binary files /dev/null and b/public/terrain/19/858566/354047.terrain differ diff --git a/public/terrain/19/858566/354048.terrain b/public/terrain/19/858566/354048.terrain new file mode 100644 index 000000000..65a42133a Binary files /dev/null and b/public/terrain/19/858566/354048.terrain differ diff --git a/public/terrain/19/858566/354049.terrain b/public/terrain/19/858566/354049.terrain new file mode 100644 index 000000000..fc05e199b Binary files /dev/null and b/public/terrain/19/858566/354049.terrain differ diff --git a/public/terrain/19/858566/354050.terrain b/public/terrain/19/858566/354050.terrain new file mode 100644 index 000000000..b267a5076 Binary files /dev/null and b/public/terrain/19/858566/354050.terrain differ diff --git a/public/terrain/19/858566/354051.terrain b/public/terrain/19/858566/354051.terrain new file mode 100644 index 000000000..838077274 Binary files /dev/null and b/public/terrain/19/858566/354051.terrain differ diff --git a/public/terrain/19/858566/354052.terrain b/public/terrain/19/858566/354052.terrain new file mode 100644 index 000000000..bae6e8a9d Binary files /dev/null and b/public/terrain/19/858566/354052.terrain differ diff --git a/public/terrain/19/858566/354053.terrain b/public/terrain/19/858566/354053.terrain new file mode 100644 index 000000000..977fdb32f Binary files /dev/null and b/public/terrain/19/858566/354053.terrain differ diff --git a/public/terrain/19/858566/354054.terrain b/public/terrain/19/858566/354054.terrain new file mode 100644 index 000000000..294913198 Binary files /dev/null and b/public/terrain/19/858566/354054.terrain differ diff --git a/public/terrain/19/858566/354055.terrain b/public/terrain/19/858566/354055.terrain new file mode 100644 index 000000000..0b7f86a84 Binary files /dev/null and b/public/terrain/19/858566/354055.terrain differ diff --git a/public/terrain/19/858566/354056.terrain b/public/terrain/19/858566/354056.terrain new file mode 100644 index 000000000..dc957374a Binary files /dev/null and b/public/terrain/19/858566/354056.terrain differ diff --git a/public/terrain/19/858566/354057.terrain b/public/terrain/19/858566/354057.terrain new file mode 100644 index 000000000..3e6737098 Binary files /dev/null and b/public/terrain/19/858566/354057.terrain differ diff --git a/public/terrain/19/858566/354058.terrain b/public/terrain/19/858566/354058.terrain new file mode 100644 index 000000000..53b4741cc Binary files /dev/null and b/public/terrain/19/858566/354058.terrain differ diff --git a/public/terrain/19/858566/354059.terrain b/public/terrain/19/858566/354059.terrain new file mode 100644 index 000000000..fc0e7b0a1 Binary files /dev/null and b/public/terrain/19/858566/354059.terrain differ diff --git a/public/terrain/19/858567/353743.terrain b/public/terrain/19/858567/353743.terrain new file mode 100644 index 000000000..95252f3f8 Binary files /dev/null and b/public/terrain/19/858567/353743.terrain differ diff --git a/public/terrain/19/858567/353744.terrain b/public/terrain/19/858567/353744.terrain new file mode 100644 index 000000000..57a75316e Binary files /dev/null and b/public/terrain/19/858567/353744.terrain differ diff --git a/public/terrain/19/858567/353745.terrain b/public/terrain/19/858567/353745.terrain new file mode 100644 index 000000000..5886a058d Binary files /dev/null and b/public/terrain/19/858567/353745.terrain differ diff --git a/public/terrain/19/858567/353746.terrain b/public/terrain/19/858567/353746.terrain new file mode 100644 index 000000000..ac9bdd0c1 Binary files /dev/null and b/public/terrain/19/858567/353746.terrain differ diff --git a/public/terrain/19/858567/353747.terrain b/public/terrain/19/858567/353747.terrain new file mode 100644 index 000000000..737975d6d Binary files /dev/null and b/public/terrain/19/858567/353747.terrain differ diff --git a/public/terrain/19/858567/353748.terrain b/public/terrain/19/858567/353748.terrain new file mode 100644 index 000000000..fd1cf9946 Binary files /dev/null and b/public/terrain/19/858567/353748.terrain differ diff --git a/public/terrain/19/858567/353749.terrain b/public/terrain/19/858567/353749.terrain new file mode 100644 index 000000000..393e4d0f0 Binary files /dev/null and b/public/terrain/19/858567/353749.terrain differ diff --git a/public/terrain/19/858567/353750.terrain b/public/terrain/19/858567/353750.terrain new file mode 100644 index 000000000..05cb2c4ec Binary files /dev/null and b/public/terrain/19/858567/353750.terrain differ diff --git a/public/terrain/19/858567/353751.terrain b/public/terrain/19/858567/353751.terrain new file mode 100644 index 000000000..54baa10af Binary files /dev/null and b/public/terrain/19/858567/353751.terrain differ diff --git a/public/terrain/19/858567/353752.terrain b/public/terrain/19/858567/353752.terrain new file mode 100644 index 000000000..9576ffaac Binary files /dev/null and b/public/terrain/19/858567/353752.terrain differ diff --git a/public/terrain/19/858567/353753.terrain b/public/terrain/19/858567/353753.terrain new file mode 100644 index 000000000..a4b83488f Binary files /dev/null and b/public/terrain/19/858567/353753.terrain differ diff --git a/public/terrain/19/858567/353754.terrain b/public/terrain/19/858567/353754.terrain new file mode 100644 index 000000000..c8df06de7 Binary files /dev/null and b/public/terrain/19/858567/353754.terrain differ diff --git a/public/terrain/19/858567/353755.terrain b/public/terrain/19/858567/353755.terrain new file mode 100644 index 000000000..4ce3b7059 Binary files /dev/null and b/public/terrain/19/858567/353755.terrain differ diff --git a/public/terrain/19/858567/353756.terrain b/public/terrain/19/858567/353756.terrain new file mode 100644 index 000000000..e324b6c9b Binary files /dev/null and b/public/terrain/19/858567/353756.terrain differ diff --git a/public/terrain/19/858567/353757.terrain b/public/terrain/19/858567/353757.terrain new file mode 100644 index 000000000..3dd7b9ecc Binary files /dev/null and b/public/terrain/19/858567/353757.terrain differ diff --git a/public/terrain/19/858567/353758.terrain b/public/terrain/19/858567/353758.terrain new file mode 100644 index 000000000..c7039c57e Binary files /dev/null and b/public/terrain/19/858567/353758.terrain differ diff --git a/public/terrain/19/858567/353759.terrain b/public/terrain/19/858567/353759.terrain new file mode 100644 index 000000000..7ce39ecad Binary files /dev/null and b/public/terrain/19/858567/353759.terrain differ diff --git a/public/terrain/19/858567/353760.terrain b/public/terrain/19/858567/353760.terrain new file mode 100644 index 000000000..270f82ea3 Binary files /dev/null and b/public/terrain/19/858567/353760.terrain differ diff --git a/public/terrain/19/858567/353761.terrain b/public/terrain/19/858567/353761.terrain new file mode 100644 index 000000000..9b6ea6a82 Binary files /dev/null and b/public/terrain/19/858567/353761.terrain differ diff --git a/public/terrain/19/858567/353762.terrain b/public/terrain/19/858567/353762.terrain new file mode 100644 index 000000000..b7143e5a6 Binary files /dev/null and b/public/terrain/19/858567/353762.terrain differ diff --git a/public/terrain/19/858567/353763.terrain b/public/terrain/19/858567/353763.terrain new file mode 100644 index 000000000..d2f7a5744 Binary files /dev/null and b/public/terrain/19/858567/353763.terrain differ diff --git a/public/terrain/19/858567/353764.terrain b/public/terrain/19/858567/353764.terrain new file mode 100644 index 000000000..b31b7d26e Binary files /dev/null and b/public/terrain/19/858567/353764.terrain differ diff --git a/public/terrain/19/858567/353765.terrain b/public/terrain/19/858567/353765.terrain new file mode 100644 index 000000000..8adb00dcc Binary files /dev/null and b/public/terrain/19/858567/353765.terrain differ diff --git a/public/terrain/19/858567/353766.terrain b/public/terrain/19/858567/353766.terrain new file mode 100644 index 000000000..ce49a0880 Binary files /dev/null and b/public/terrain/19/858567/353766.terrain differ diff --git a/public/terrain/19/858567/353767.terrain b/public/terrain/19/858567/353767.terrain new file mode 100644 index 000000000..3ae6c0ce8 Binary files /dev/null and b/public/terrain/19/858567/353767.terrain differ diff --git a/public/terrain/19/858567/353768.terrain b/public/terrain/19/858567/353768.terrain new file mode 100644 index 000000000..7f63654be Binary files /dev/null and b/public/terrain/19/858567/353768.terrain differ diff --git a/public/terrain/19/858567/353769.terrain b/public/terrain/19/858567/353769.terrain new file mode 100644 index 000000000..73963adef Binary files /dev/null and b/public/terrain/19/858567/353769.terrain differ diff --git a/public/terrain/19/858567/353770.terrain b/public/terrain/19/858567/353770.terrain new file mode 100644 index 000000000..28e66ad4c Binary files /dev/null and b/public/terrain/19/858567/353770.terrain differ diff --git a/public/terrain/19/858567/353771.terrain b/public/terrain/19/858567/353771.terrain new file mode 100644 index 000000000..9dbb072e1 Binary files /dev/null and b/public/terrain/19/858567/353771.terrain differ diff --git a/public/terrain/19/858567/353772.terrain b/public/terrain/19/858567/353772.terrain new file mode 100644 index 000000000..8498c3cd9 Binary files /dev/null and b/public/terrain/19/858567/353772.terrain differ diff --git a/public/terrain/19/858567/353773.terrain b/public/terrain/19/858567/353773.terrain new file mode 100644 index 000000000..7e8de57ab Binary files /dev/null and b/public/terrain/19/858567/353773.terrain differ diff --git a/public/terrain/19/858567/353774.terrain b/public/terrain/19/858567/353774.terrain new file mode 100644 index 000000000..010325131 Binary files /dev/null and b/public/terrain/19/858567/353774.terrain differ diff --git a/public/terrain/19/858567/353775.terrain b/public/terrain/19/858567/353775.terrain new file mode 100644 index 000000000..a4118d13a Binary files /dev/null and b/public/terrain/19/858567/353775.terrain differ diff --git a/public/terrain/19/858567/353776.terrain b/public/terrain/19/858567/353776.terrain new file mode 100644 index 000000000..1a1c7fbc1 Binary files /dev/null and b/public/terrain/19/858567/353776.terrain differ diff --git a/public/terrain/19/858567/353777.terrain b/public/terrain/19/858567/353777.terrain new file mode 100644 index 000000000..10b4b48da Binary files /dev/null and b/public/terrain/19/858567/353777.terrain differ diff --git a/public/terrain/19/858567/353778.terrain b/public/terrain/19/858567/353778.terrain new file mode 100644 index 000000000..511dd12ca Binary files /dev/null and b/public/terrain/19/858567/353778.terrain differ diff --git a/public/terrain/19/858567/353779.terrain b/public/terrain/19/858567/353779.terrain new file mode 100644 index 000000000..2eb546617 Binary files /dev/null and b/public/terrain/19/858567/353779.terrain differ diff --git a/public/terrain/19/858567/353780.terrain b/public/terrain/19/858567/353780.terrain new file mode 100644 index 000000000..3a28d4472 Binary files /dev/null and b/public/terrain/19/858567/353780.terrain differ diff --git a/public/terrain/19/858567/353781.terrain b/public/terrain/19/858567/353781.terrain new file mode 100644 index 000000000..c67c1533d Binary files /dev/null and b/public/terrain/19/858567/353781.terrain differ diff --git a/public/terrain/19/858567/353782.terrain b/public/terrain/19/858567/353782.terrain new file mode 100644 index 000000000..47d185248 Binary files /dev/null and b/public/terrain/19/858567/353782.terrain differ diff --git a/public/terrain/19/858567/353783.terrain b/public/terrain/19/858567/353783.terrain new file mode 100644 index 000000000..efe1d4df3 Binary files /dev/null and b/public/terrain/19/858567/353783.terrain differ diff --git a/public/terrain/19/858567/353784.terrain b/public/terrain/19/858567/353784.terrain new file mode 100644 index 000000000..0c48b6383 Binary files /dev/null and b/public/terrain/19/858567/353784.terrain differ diff --git a/public/terrain/19/858567/353785.terrain b/public/terrain/19/858567/353785.terrain new file mode 100644 index 000000000..36f4aa1dc Binary files /dev/null and b/public/terrain/19/858567/353785.terrain differ diff --git a/public/terrain/19/858567/353786.terrain b/public/terrain/19/858567/353786.terrain new file mode 100644 index 000000000..6fc7c03ee Binary files /dev/null and b/public/terrain/19/858567/353786.terrain differ diff --git a/public/terrain/19/858567/353787.terrain b/public/terrain/19/858567/353787.terrain new file mode 100644 index 000000000..409776c10 Binary files /dev/null and b/public/terrain/19/858567/353787.terrain differ diff --git a/public/terrain/19/858567/353788.terrain b/public/terrain/19/858567/353788.terrain new file mode 100644 index 000000000..bf6523b2f Binary files /dev/null and b/public/terrain/19/858567/353788.terrain differ diff --git a/public/terrain/19/858567/353789.terrain b/public/terrain/19/858567/353789.terrain new file mode 100644 index 000000000..5d042b56a Binary files /dev/null and b/public/terrain/19/858567/353789.terrain differ diff --git a/public/terrain/19/858567/353790.terrain b/public/terrain/19/858567/353790.terrain new file mode 100644 index 000000000..90af6cb50 Binary files /dev/null and b/public/terrain/19/858567/353790.terrain differ diff --git a/public/terrain/19/858567/353791.terrain b/public/terrain/19/858567/353791.terrain new file mode 100644 index 000000000..0617880a9 Binary files /dev/null and b/public/terrain/19/858567/353791.terrain differ diff --git a/public/terrain/19/858567/353792.terrain b/public/terrain/19/858567/353792.terrain new file mode 100644 index 000000000..c4970e2cb Binary files /dev/null and b/public/terrain/19/858567/353792.terrain differ diff --git a/public/terrain/19/858567/353793.terrain b/public/terrain/19/858567/353793.terrain new file mode 100644 index 000000000..00089bd15 Binary files /dev/null and b/public/terrain/19/858567/353793.terrain differ diff --git a/public/terrain/19/858567/353794.terrain b/public/terrain/19/858567/353794.terrain new file mode 100644 index 000000000..e443cfeee Binary files /dev/null and b/public/terrain/19/858567/353794.terrain differ diff --git a/public/terrain/19/858567/353795.terrain b/public/terrain/19/858567/353795.terrain new file mode 100644 index 000000000..755032b3d Binary files /dev/null and b/public/terrain/19/858567/353795.terrain differ diff --git a/public/terrain/19/858567/353796.terrain b/public/terrain/19/858567/353796.terrain new file mode 100644 index 000000000..0efa54282 Binary files /dev/null and b/public/terrain/19/858567/353796.terrain differ diff --git a/public/terrain/19/858567/353797.terrain b/public/terrain/19/858567/353797.terrain new file mode 100644 index 000000000..0047be64e Binary files /dev/null and b/public/terrain/19/858567/353797.terrain differ diff --git a/public/terrain/19/858567/353798.terrain b/public/terrain/19/858567/353798.terrain new file mode 100644 index 000000000..62df72083 Binary files /dev/null and b/public/terrain/19/858567/353798.terrain differ diff --git a/public/terrain/19/858567/353799.terrain b/public/terrain/19/858567/353799.terrain new file mode 100644 index 000000000..607211d6f Binary files /dev/null and b/public/terrain/19/858567/353799.terrain differ diff --git a/public/terrain/19/858567/353800.terrain b/public/terrain/19/858567/353800.terrain new file mode 100644 index 000000000..1c468a3db Binary files /dev/null and b/public/terrain/19/858567/353800.terrain differ diff --git a/public/terrain/19/858567/353801.terrain b/public/terrain/19/858567/353801.terrain new file mode 100644 index 000000000..c9513fed6 Binary files /dev/null and b/public/terrain/19/858567/353801.terrain differ diff --git a/public/terrain/19/858567/353802.terrain b/public/terrain/19/858567/353802.terrain new file mode 100644 index 000000000..8523d19d1 Binary files /dev/null and b/public/terrain/19/858567/353802.terrain differ diff --git a/public/terrain/19/858567/353803.terrain b/public/terrain/19/858567/353803.terrain new file mode 100644 index 000000000..cbf0cbd48 Binary files /dev/null and b/public/terrain/19/858567/353803.terrain differ diff --git a/public/terrain/19/858567/353804.terrain b/public/terrain/19/858567/353804.terrain new file mode 100644 index 000000000..83dd54c33 Binary files /dev/null and b/public/terrain/19/858567/353804.terrain differ diff --git a/public/terrain/19/858567/353805.terrain b/public/terrain/19/858567/353805.terrain new file mode 100644 index 000000000..0e6835ff8 Binary files /dev/null and b/public/terrain/19/858567/353805.terrain differ diff --git a/public/terrain/19/858567/353806.terrain b/public/terrain/19/858567/353806.terrain new file mode 100644 index 000000000..42192f90d Binary files /dev/null and b/public/terrain/19/858567/353806.terrain differ diff --git a/public/terrain/19/858567/353807.terrain b/public/terrain/19/858567/353807.terrain new file mode 100644 index 000000000..595e30f4d Binary files /dev/null and b/public/terrain/19/858567/353807.terrain differ diff --git a/public/terrain/19/858567/353808.terrain b/public/terrain/19/858567/353808.terrain new file mode 100644 index 000000000..b832eb298 Binary files /dev/null and b/public/terrain/19/858567/353808.terrain differ diff --git a/public/terrain/19/858567/353809.terrain b/public/terrain/19/858567/353809.terrain new file mode 100644 index 000000000..3dd56f787 Binary files /dev/null and b/public/terrain/19/858567/353809.terrain differ diff --git a/public/terrain/19/858567/353810.terrain b/public/terrain/19/858567/353810.terrain new file mode 100644 index 000000000..a0c7727f0 Binary files /dev/null and b/public/terrain/19/858567/353810.terrain differ diff --git a/public/terrain/19/858567/353811.terrain b/public/terrain/19/858567/353811.terrain new file mode 100644 index 000000000..9cf63cf43 Binary files /dev/null and b/public/terrain/19/858567/353811.terrain differ diff --git a/public/terrain/19/858567/353812.terrain b/public/terrain/19/858567/353812.terrain new file mode 100644 index 000000000..2adc7dfd5 Binary files /dev/null and b/public/terrain/19/858567/353812.terrain differ diff --git a/public/terrain/19/858567/353813.terrain b/public/terrain/19/858567/353813.terrain new file mode 100644 index 000000000..dc0b942de Binary files /dev/null and b/public/terrain/19/858567/353813.terrain differ diff --git a/public/terrain/19/858567/353814.terrain b/public/terrain/19/858567/353814.terrain new file mode 100644 index 000000000..32e18251b Binary files /dev/null and b/public/terrain/19/858567/353814.terrain differ diff --git a/public/terrain/19/858567/353815.terrain b/public/terrain/19/858567/353815.terrain new file mode 100644 index 000000000..3dbe85a74 Binary files /dev/null and b/public/terrain/19/858567/353815.terrain differ diff --git a/public/terrain/19/858567/353816.terrain b/public/terrain/19/858567/353816.terrain new file mode 100644 index 000000000..78d15c836 Binary files /dev/null and b/public/terrain/19/858567/353816.terrain differ diff --git a/public/terrain/19/858567/353817.terrain b/public/terrain/19/858567/353817.terrain new file mode 100644 index 000000000..6fc57d160 Binary files /dev/null and b/public/terrain/19/858567/353817.terrain differ diff --git a/public/terrain/19/858567/353818.terrain b/public/terrain/19/858567/353818.terrain new file mode 100644 index 000000000..c31204493 Binary files /dev/null and b/public/terrain/19/858567/353818.terrain differ diff --git a/public/terrain/19/858567/353819.terrain b/public/terrain/19/858567/353819.terrain new file mode 100644 index 000000000..b222773dd Binary files /dev/null and b/public/terrain/19/858567/353819.terrain differ diff --git a/public/terrain/19/858567/353820.terrain b/public/terrain/19/858567/353820.terrain new file mode 100644 index 000000000..486b6cff4 Binary files /dev/null and b/public/terrain/19/858567/353820.terrain differ diff --git a/public/terrain/19/858567/353821.terrain b/public/terrain/19/858567/353821.terrain new file mode 100644 index 000000000..d30c13237 Binary files /dev/null and b/public/terrain/19/858567/353821.terrain differ diff --git a/public/terrain/19/858567/353822.terrain b/public/terrain/19/858567/353822.terrain new file mode 100644 index 000000000..5d757ba59 Binary files /dev/null and b/public/terrain/19/858567/353822.terrain differ diff --git a/public/terrain/19/858567/353823.terrain b/public/terrain/19/858567/353823.terrain new file mode 100644 index 000000000..a024209b1 Binary files /dev/null and b/public/terrain/19/858567/353823.terrain differ diff --git a/public/terrain/19/858567/353824.terrain b/public/terrain/19/858567/353824.terrain new file mode 100644 index 000000000..b1310a486 Binary files /dev/null and b/public/terrain/19/858567/353824.terrain differ diff --git a/public/terrain/19/858567/353825.terrain b/public/terrain/19/858567/353825.terrain new file mode 100644 index 000000000..39416eec0 Binary files /dev/null and b/public/terrain/19/858567/353825.terrain differ diff --git a/public/terrain/19/858567/353826.terrain b/public/terrain/19/858567/353826.terrain new file mode 100644 index 000000000..77d8e73ac Binary files /dev/null and b/public/terrain/19/858567/353826.terrain differ diff --git a/public/terrain/19/858567/353827.terrain b/public/terrain/19/858567/353827.terrain new file mode 100644 index 000000000..360fbf4f2 Binary files /dev/null and b/public/terrain/19/858567/353827.terrain differ diff --git a/public/terrain/19/858567/353828.terrain b/public/terrain/19/858567/353828.terrain new file mode 100644 index 000000000..6e1653dd5 Binary files /dev/null and b/public/terrain/19/858567/353828.terrain differ diff --git a/public/terrain/19/858567/353829.terrain b/public/terrain/19/858567/353829.terrain new file mode 100644 index 000000000..bc7dc2ca3 Binary files /dev/null and b/public/terrain/19/858567/353829.terrain differ diff --git a/public/terrain/19/858567/353830.terrain b/public/terrain/19/858567/353830.terrain new file mode 100644 index 000000000..ec2d6da74 Binary files /dev/null and b/public/terrain/19/858567/353830.terrain differ diff --git a/public/terrain/19/858567/353831.terrain b/public/terrain/19/858567/353831.terrain new file mode 100644 index 000000000..608cfbb0b Binary files /dev/null and b/public/terrain/19/858567/353831.terrain differ diff --git a/public/terrain/19/858567/353832.terrain b/public/terrain/19/858567/353832.terrain new file mode 100644 index 000000000..8ad42176c Binary files /dev/null and b/public/terrain/19/858567/353832.terrain differ diff --git a/public/terrain/19/858567/353833.terrain b/public/terrain/19/858567/353833.terrain new file mode 100644 index 000000000..9896c6a23 Binary files /dev/null and b/public/terrain/19/858567/353833.terrain differ diff --git a/public/terrain/19/858567/353834.terrain b/public/terrain/19/858567/353834.terrain new file mode 100644 index 000000000..e29764d37 Binary files /dev/null and b/public/terrain/19/858567/353834.terrain differ diff --git a/public/terrain/19/858567/353835.terrain b/public/terrain/19/858567/353835.terrain new file mode 100644 index 000000000..90e470a47 Binary files /dev/null and b/public/terrain/19/858567/353835.terrain differ diff --git a/public/terrain/19/858567/353836.terrain b/public/terrain/19/858567/353836.terrain new file mode 100644 index 000000000..95d6c4c96 Binary files /dev/null and b/public/terrain/19/858567/353836.terrain differ diff --git a/public/terrain/19/858567/353837.terrain b/public/terrain/19/858567/353837.terrain new file mode 100644 index 000000000..156f3939e Binary files /dev/null and b/public/terrain/19/858567/353837.terrain differ diff --git a/public/terrain/19/858567/353838.terrain b/public/terrain/19/858567/353838.terrain new file mode 100644 index 000000000..0d65c87cd Binary files /dev/null and b/public/terrain/19/858567/353838.terrain differ diff --git a/public/terrain/19/858567/353839.terrain b/public/terrain/19/858567/353839.terrain new file mode 100644 index 000000000..008861d9c Binary files /dev/null and b/public/terrain/19/858567/353839.terrain differ diff --git a/public/terrain/19/858567/353840.terrain b/public/terrain/19/858567/353840.terrain new file mode 100644 index 000000000..e357f9e5f Binary files /dev/null and b/public/terrain/19/858567/353840.terrain differ diff --git a/public/terrain/19/858567/353841.terrain b/public/terrain/19/858567/353841.terrain new file mode 100644 index 000000000..2266fc49e Binary files /dev/null and b/public/terrain/19/858567/353841.terrain differ diff --git a/public/terrain/19/858567/353842.terrain b/public/terrain/19/858567/353842.terrain new file mode 100644 index 000000000..672398338 Binary files /dev/null and b/public/terrain/19/858567/353842.terrain differ diff --git a/public/terrain/19/858567/353843.terrain b/public/terrain/19/858567/353843.terrain new file mode 100644 index 000000000..3e1b93691 Binary files /dev/null and b/public/terrain/19/858567/353843.terrain differ diff --git a/public/terrain/19/858567/353844.terrain b/public/terrain/19/858567/353844.terrain new file mode 100644 index 000000000..1c313ffaa Binary files /dev/null and b/public/terrain/19/858567/353844.terrain differ diff --git a/public/terrain/19/858567/353845.terrain b/public/terrain/19/858567/353845.terrain new file mode 100644 index 000000000..8ff1c7728 Binary files /dev/null and b/public/terrain/19/858567/353845.terrain differ diff --git a/public/terrain/19/858567/353846.terrain b/public/terrain/19/858567/353846.terrain new file mode 100644 index 000000000..c7710c841 Binary files /dev/null and b/public/terrain/19/858567/353846.terrain differ diff --git a/public/terrain/19/858567/353847.terrain b/public/terrain/19/858567/353847.terrain new file mode 100644 index 000000000..49abb29d1 Binary files /dev/null and b/public/terrain/19/858567/353847.terrain differ diff --git a/public/terrain/19/858567/353848.terrain b/public/terrain/19/858567/353848.terrain new file mode 100644 index 000000000..18e1d0e24 Binary files /dev/null and b/public/terrain/19/858567/353848.terrain differ diff --git a/public/terrain/19/858567/353849.terrain b/public/terrain/19/858567/353849.terrain new file mode 100644 index 000000000..d7a37150d Binary files /dev/null and b/public/terrain/19/858567/353849.terrain differ diff --git a/public/terrain/19/858567/353850.terrain b/public/terrain/19/858567/353850.terrain new file mode 100644 index 000000000..2c32b1aed Binary files /dev/null and b/public/terrain/19/858567/353850.terrain differ diff --git a/public/terrain/19/858567/353851.terrain b/public/terrain/19/858567/353851.terrain new file mode 100644 index 000000000..aa3b52202 Binary files /dev/null and b/public/terrain/19/858567/353851.terrain differ diff --git a/public/terrain/19/858567/353852.terrain b/public/terrain/19/858567/353852.terrain new file mode 100644 index 000000000..af592d875 Binary files /dev/null and b/public/terrain/19/858567/353852.terrain differ diff --git a/public/terrain/19/858567/353853.terrain b/public/terrain/19/858567/353853.terrain new file mode 100644 index 000000000..326e977e6 Binary files /dev/null and b/public/terrain/19/858567/353853.terrain differ diff --git a/public/terrain/19/858567/353854.terrain b/public/terrain/19/858567/353854.terrain new file mode 100644 index 000000000..ee4b4512e Binary files /dev/null and b/public/terrain/19/858567/353854.terrain differ diff --git a/public/terrain/19/858567/353855.terrain b/public/terrain/19/858567/353855.terrain new file mode 100644 index 000000000..2b9cf77a5 Binary files /dev/null and b/public/terrain/19/858567/353855.terrain differ diff --git a/public/terrain/19/858567/353856.terrain b/public/terrain/19/858567/353856.terrain new file mode 100644 index 000000000..76d926874 Binary files /dev/null and b/public/terrain/19/858567/353856.terrain differ diff --git a/public/terrain/19/858567/353857.terrain b/public/terrain/19/858567/353857.terrain new file mode 100644 index 000000000..c84dd7efc Binary files /dev/null and b/public/terrain/19/858567/353857.terrain differ diff --git a/public/terrain/19/858567/353858.terrain b/public/terrain/19/858567/353858.terrain new file mode 100644 index 000000000..8422c5b49 Binary files /dev/null and b/public/terrain/19/858567/353858.terrain differ diff --git a/public/terrain/19/858567/353859.terrain b/public/terrain/19/858567/353859.terrain new file mode 100644 index 000000000..23643edc8 Binary files /dev/null and b/public/terrain/19/858567/353859.terrain differ diff --git a/public/terrain/19/858567/353860.terrain b/public/terrain/19/858567/353860.terrain new file mode 100644 index 000000000..2e370fa67 Binary files /dev/null and b/public/terrain/19/858567/353860.terrain differ diff --git a/public/terrain/19/858567/353861.terrain b/public/terrain/19/858567/353861.terrain new file mode 100644 index 000000000..b673e9a93 Binary files /dev/null and b/public/terrain/19/858567/353861.terrain differ diff --git a/public/terrain/19/858567/353862.terrain b/public/terrain/19/858567/353862.terrain new file mode 100644 index 000000000..04a45601a Binary files /dev/null and b/public/terrain/19/858567/353862.terrain differ diff --git a/public/terrain/19/858567/353863.terrain b/public/terrain/19/858567/353863.terrain new file mode 100644 index 000000000..6492c4fc1 Binary files /dev/null and b/public/terrain/19/858567/353863.terrain differ diff --git a/public/terrain/19/858567/353864.terrain b/public/terrain/19/858567/353864.terrain new file mode 100644 index 000000000..be5fb1299 Binary files /dev/null and b/public/terrain/19/858567/353864.terrain differ diff --git a/public/terrain/19/858567/353865.terrain b/public/terrain/19/858567/353865.terrain new file mode 100644 index 000000000..e84a1babf Binary files /dev/null and b/public/terrain/19/858567/353865.terrain differ diff --git a/public/terrain/19/858567/353866.terrain b/public/terrain/19/858567/353866.terrain new file mode 100644 index 000000000..d7ac0b36a Binary files /dev/null and b/public/terrain/19/858567/353866.terrain differ diff --git a/public/terrain/19/858567/353867.terrain b/public/terrain/19/858567/353867.terrain new file mode 100644 index 000000000..b0f315f99 Binary files /dev/null and b/public/terrain/19/858567/353867.terrain differ diff --git a/public/terrain/19/858567/353868.terrain b/public/terrain/19/858567/353868.terrain new file mode 100644 index 000000000..7fcf195b4 Binary files /dev/null and b/public/terrain/19/858567/353868.terrain differ diff --git a/public/terrain/19/858567/353869.terrain b/public/terrain/19/858567/353869.terrain new file mode 100644 index 000000000..a5dbab80d Binary files /dev/null and b/public/terrain/19/858567/353869.terrain differ diff --git a/public/terrain/19/858567/353870.terrain b/public/terrain/19/858567/353870.terrain new file mode 100644 index 000000000..e5218f0c7 Binary files /dev/null and b/public/terrain/19/858567/353870.terrain differ diff --git a/public/terrain/19/858567/353871.terrain b/public/terrain/19/858567/353871.terrain new file mode 100644 index 000000000..6e32e53bd Binary files /dev/null and b/public/terrain/19/858567/353871.terrain differ diff --git a/public/terrain/19/858567/353872.terrain b/public/terrain/19/858567/353872.terrain new file mode 100644 index 000000000..bc0d8274b Binary files /dev/null and b/public/terrain/19/858567/353872.terrain differ diff --git a/public/terrain/19/858567/353873.terrain b/public/terrain/19/858567/353873.terrain new file mode 100644 index 000000000..abab09df3 Binary files /dev/null and b/public/terrain/19/858567/353873.terrain differ diff --git a/public/terrain/19/858567/353874.terrain b/public/terrain/19/858567/353874.terrain new file mode 100644 index 000000000..0152432cd Binary files /dev/null and b/public/terrain/19/858567/353874.terrain differ diff --git a/public/terrain/19/858567/353875.terrain b/public/terrain/19/858567/353875.terrain new file mode 100644 index 000000000..6508f040c Binary files /dev/null and b/public/terrain/19/858567/353875.terrain differ diff --git a/public/terrain/19/858567/353876.terrain b/public/terrain/19/858567/353876.terrain new file mode 100644 index 000000000..e177c4a86 Binary files /dev/null and b/public/terrain/19/858567/353876.terrain differ diff --git a/public/terrain/19/858567/353877.terrain b/public/terrain/19/858567/353877.terrain new file mode 100644 index 000000000..c3d153b96 Binary files /dev/null and b/public/terrain/19/858567/353877.terrain differ diff --git a/public/terrain/19/858567/353878.terrain b/public/terrain/19/858567/353878.terrain new file mode 100644 index 000000000..3aaca9ac9 Binary files /dev/null and b/public/terrain/19/858567/353878.terrain differ diff --git a/public/terrain/19/858567/353879.terrain b/public/terrain/19/858567/353879.terrain new file mode 100644 index 000000000..999cff071 Binary files /dev/null and b/public/terrain/19/858567/353879.terrain differ diff --git a/public/terrain/19/858567/353880.terrain b/public/terrain/19/858567/353880.terrain new file mode 100644 index 000000000..67d2785cd Binary files /dev/null and b/public/terrain/19/858567/353880.terrain differ diff --git a/public/terrain/19/858567/353881.terrain b/public/terrain/19/858567/353881.terrain new file mode 100644 index 000000000..2d9b48c40 Binary files /dev/null and b/public/terrain/19/858567/353881.terrain differ diff --git a/public/terrain/19/858567/353882.terrain b/public/terrain/19/858567/353882.terrain new file mode 100644 index 000000000..d14579aaa Binary files /dev/null and b/public/terrain/19/858567/353882.terrain differ diff --git a/public/terrain/19/858567/353883.terrain b/public/terrain/19/858567/353883.terrain new file mode 100644 index 000000000..8afac4045 Binary files /dev/null and b/public/terrain/19/858567/353883.terrain differ diff --git a/public/terrain/19/858567/353884.terrain b/public/terrain/19/858567/353884.terrain new file mode 100644 index 000000000..9dd79e881 Binary files /dev/null and b/public/terrain/19/858567/353884.terrain differ diff --git a/public/terrain/19/858567/353885.terrain b/public/terrain/19/858567/353885.terrain new file mode 100644 index 000000000..f59f4f890 Binary files /dev/null and b/public/terrain/19/858567/353885.terrain differ diff --git a/public/terrain/19/858567/353886.terrain b/public/terrain/19/858567/353886.terrain new file mode 100644 index 000000000..1236bceb0 Binary files /dev/null and b/public/terrain/19/858567/353886.terrain differ diff --git a/public/terrain/19/858567/353887.terrain b/public/terrain/19/858567/353887.terrain new file mode 100644 index 000000000..afb0d271d Binary files /dev/null and b/public/terrain/19/858567/353887.terrain differ diff --git a/public/terrain/19/858567/353888.terrain b/public/terrain/19/858567/353888.terrain new file mode 100644 index 000000000..184849f24 Binary files /dev/null and b/public/terrain/19/858567/353888.terrain differ diff --git a/public/terrain/19/858567/353889.terrain b/public/terrain/19/858567/353889.terrain new file mode 100644 index 000000000..541b184d2 Binary files /dev/null and b/public/terrain/19/858567/353889.terrain differ diff --git a/public/terrain/19/858567/353890.terrain b/public/terrain/19/858567/353890.terrain new file mode 100644 index 000000000..dc48bb3ba Binary files /dev/null and b/public/terrain/19/858567/353890.terrain differ diff --git a/public/terrain/19/858567/353891.terrain b/public/terrain/19/858567/353891.terrain new file mode 100644 index 000000000..43d588780 Binary files /dev/null and b/public/terrain/19/858567/353891.terrain differ diff --git a/public/terrain/19/858567/353892.terrain b/public/terrain/19/858567/353892.terrain new file mode 100644 index 000000000..9c92b8409 Binary files /dev/null and b/public/terrain/19/858567/353892.terrain differ diff --git a/public/terrain/19/858567/353893.terrain b/public/terrain/19/858567/353893.terrain new file mode 100644 index 000000000..4314405f6 Binary files /dev/null and b/public/terrain/19/858567/353893.terrain differ diff --git a/public/terrain/19/858567/353894.terrain b/public/terrain/19/858567/353894.terrain new file mode 100644 index 000000000..a3b7ae155 Binary files /dev/null and b/public/terrain/19/858567/353894.terrain differ diff --git a/public/terrain/19/858567/353895.terrain b/public/terrain/19/858567/353895.terrain new file mode 100644 index 000000000..f22d6df85 Binary files /dev/null and b/public/terrain/19/858567/353895.terrain differ diff --git a/public/terrain/19/858567/353896.terrain b/public/terrain/19/858567/353896.terrain new file mode 100644 index 000000000..603d1feaa Binary files /dev/null and b/public/terrain/19/858567/353896.terrain differ diff --git a/public/terrain/19/858567/353897.terrain b/public/terrain/19/858567/353897.terrain new file mode 100644 index 000000000..b5866db5b Binary files /dev/null and b/public/terrain/19/858567/353897.terrain differ diff --git a/public/terrain/19/858567/353898.terrain b/public/terrain/19/858567/353898.terrain new file mode 100644 index 000000000..b82bec72b Binary files /dev/null and b/public/terrain/19/858567/353898.terrain differ diff --git a/public/terrain/19/858567/353899.terrain b/public/terrain/19/858567/353899.terrain new file mode 100644 index 000000000..cd6707810 Binary files /dev/null and b/public/terrain/19/858567/353899.terrain differ diff --git a/public/terrain/19/858567/353900.terrain b/public/terrain/19/858567/353900.terrain new file mode 100644 index 000000000..7c121513b Binary files /dev/null and b/public/terrain/19/858567/353900.terrain differ diff --git a/public/terrain/19/858567/353901.terrain b/public/terrain/19/858567/353901.terrain new file mode 100644 index 000000000..74bed2a3f Binary files /dev/null and b/public/terrain/19/858567/353901.terrain differ diff --git a/public/terrain/19/858567/353902.terrain b/public/terrain/19/858567/353902.terrain new file mode 100644 index 000000000..dca1ffad1 Binary files /dev/null and b/public/terrain/19/858567/353902.terrain differ diff --git a/public/terrain/19/858567/353903.terrain b/public/terrain/19/858567/353903.terrain new file mode 100644 index 000000000..b948ea041 Binary files /dev/null and b/public/terrain/19/858567/353903.terrain differ diff --git a/public/terrain/19/858567/353904.terrain b/public/terrain/19/858567/353904.terrain new file mode 100644 index 000000000..277f65ce8 Binary files /dev/null and b/public/terrain/19/858567/353904.terrain differ diff --git a/public/terrain/19/858567/353905.terrain b/public/terrain/19/858567/353905.terrain new file mode 100644 index 000000000..3383459c6 Binary files /dev/null and b/public/terrain/19/858567/353905.terrain differ diff --git a/public/terrain/19/858567/353906.terrain b/public/terrain/19/858567/353906.terrain new file mode 100644 index 000000000..074626f50 Binary files /dev/null and b/public/terrain/19/858567/353906.terrain differ diff --git a/public/terrain/19/858567/353907.terrain b/public/terrain/19/858567/353907.terrain new file mode 100644 index 000000000..a9cac31ad Binary files /dev/null and b/public/terrain/19/858567/353907.terrain differ diff --git a/public/terrain/19/858567/353908.terrain b/public/terrain/19/858567/353908.terrain new file mode 100644 index 000000000..23ba50959 Binary files /dev/null and b/public/terrain/19/858567/353908.terrain differ diff --git a/public/terrain/19/858567/353909.terrain b/public/terrain/19/858567/353909.terrain new file mode 100644 index 000000000..ee8467671 Binary files /dev/null and b/public/terrain/19/858567/353909.terrain differ diff --git a/public/terrain/19/858567/353910.terrain b/public/terrain/19/858567/353910.terrain new file mode 100644 index 000000000..21b6ef44e Binary files /dev/null and b/public/terrain/19/858567/353910.terrain differ diff --git a/public/terrain/19/858567/353911.terrain b/public/terrain/19/858567/353911.terrain new file mode 100644 index 000000000..443a9f497 Binary files /dev/null and b/public/terrain/19/858567/353911.terrain differ diff --git a/public/terrain/19/858567/353912.terrain b/public/terrain/19/858567/353912.terrain new file mode 100644 index 000000000..b6dae85ee Binary files /dev/null and b/public/terrain/19/858567/353912.terrain differ diff --git a/public/terrain/19/858567/353913.terrain b/public/terrain/19/858567/353913.terrain new file mode 100644 index 000000000..652232d66 Binary files /dev/null and b/public/terrain/19/858567/353913.terrain differ diff --git a/public/terrain/19/858567/353914.terrain b/public/terrain/19/858567/353914.terrain new file mode 100644 index 000000000..41299c2db Binary files /dev/null and b/public/terrain/19/858567/353914.terrain differ diff --git a/public/terrain/19/858567/353915.terrain b/public/terrain/19/858567/353915.terrain new file mode 100644 index 000000000..004a5daa1 Binary files /dev/null and b/public/terrain/19/858567/353915.terrain differ diff --git a/public/terrain/19/858567/353916.terrain b/public/terrain/19/858567/353916.terrain new file mode 100644 index 000000000..1db95f0f7 Binary files /dev/null and b/public/terrain/19/858567/353916.terrain differ diff --git a/public/terrain/19/858567/353917.terrain b/public/terrain/19/858567/353917.terrain new file mode 100644 index 000000000..a097750a2 Binary files /dev/null and b/public/terrain/19/858567/353917.terrain differ diff --git a/public/terrain/19/858567/353918.terrain b/public/terrain/19/858567/353918.terrain new file mode 100644 index 000000000..c9d11c366 Binary files /dev/null and b/public/terrain/19/858567/353918.terrain differ diff --git a/public/terrain/19/858567/353919.terrain b/public/terrain/19/858567/353919.terrain new file mode 100644 index 000000000..b51dd3f04 Binary files /dev/null and b/public/terrain/19/858567/353919.terrain differ diff --git a/public/terrain/19/858567/353920.terrain b/public/terrain/19/858567/353920.terrain new file mode 100644 index 000000000..93b2ecbd4 Binary files /dev/null and b/public/terrain/19/858567/353920.terrain differ diff --git a/public/terrain/19/858567/353921.terrain b/public/terrain/19/858567/353921.terrain new file mode 100644 index 000000000..e8723e9fe Binary files /dev/null and b/public/terrain/19/858567/353921.terrain differ diff --git a/public/terrain/19/858567/353922.terrain b/public/terrain/19/858567/353922.terrain new file mode 100644 index 000000000..404c1034d Binary files /dev/null and b/public/terrain/19/858567/353922.terrain differ diff --git a/public/terrain/19/858567/353923.terrain b/public/terrain/19/858567/353923.terrain new file mode 100644 index 000000000..9e6ace19b Binary files /dev/null and b/public/terrain/19/858567/353923.terrain differ diff --git a/public/terrain/19/858567/353924.terrain b/public/terrain/19/858567/353924.terrain new file mode 100644 index 000000000..eb9303207 Binary files /dev/null and b/public/terrain/19/858567/353924.terrain differ diff --git a/public/terrain/19/858567/353925.terrain b/public/terrain/19/858567/353925.terrain new file mode 100644 index 000000000..b65f58ed3 Binary files /dev/null and b/public/terrain/19/858567/353925.terrain differ diff --git a/public/terrain/19/858567/353926.terrain b/public/terrain/19/858567/353926.terrain new file mode 100644 index 000000000..e7c35f2cc Binary files /dev/null and b/public/terrain/19/858567/353926.terrain differ diff --git a/public/terrain/19/858567/353927.terrain b/public/terrain/19/858567/353927.terrain new file mode 100644 index 000000000..561b83e19 Binary files /dev/null and b/public/terrain/19/858567/353927.terrain differ diff --git a/public/terrain/19/858567/353928.terrain b/public/terrain/19/858567/353928.terrain new file mode 100644 index 000000000..33927b607 Binary files /dev/null and b/public/terrain/19/858567/353928.terrain differ diff --git a/public/terrain/19/858567/353929.terrain b/public/terrain/19/858567/353929.terrain new file mode 100644 index 000000000..31268001f Binary files /dev/null and b/public/terrain/19/858567/353929.terrain differ diff --git a/public/terrain/19/858567/353930.terrain b/public/terrain/19/858567/353930.terrain new file mode 100644 index 000000000..c75e991b7 Binary files /dev/null and b/public/terrain/19/858567/353930.terrain differ diff --git a/public/terrain/19/858567/353931.terrain b/public/terrain/19/858567/353931.terrain new file mode 100644 index 000000000..2988208dc Binary files /dev/null and b/public/terrain/19/858567/353931.terrain differ diff --git a/public/terrain/19/858567/353932.terrain b/public/terrain/19/858567/353932.terrain new file mode 100644 index 000000000..b525ca4b8 Binary files /dev/null and b/public/terrain/19/858567/353932.terrain differ diff --git a/public/terrain/19/858567/353933.terrain b/public/terrain/19/858567/353933.terrain new file mode 100644 index 000000000..e2e2aa5d1 Binary files /dev/null and b/public/terrain/19/858567/353933.terrain differ diff --git a/public/terrain/19/858567/353934.terrain b/public/terrain/19/858567/353934.terrain new file mode 100644 index 000000000..25dd069fb Binary files /dev/null and b/public/terrain/19/858567/353934.terrain differ diff --git a/public/terrain/19/858567/353935.terrain b/public/terrain/19/858567/353935.terrain new file mode 100644 index 000000000..c287a53d5 Binary files /dev/null and b/public/terrain/19/858567/353935.terrain differ diff --git a/public/terrain/19/858567/353936.terrain b/public/terrain/19/858567/353936.terrain new file mode 100644 index 000000000..498dbcd33 Binary files /dev/null and b/public/terrain/19/858567/353936.terrain differ diff --git a/public/terrain/19/858567/353937.terrain b/public/terrain/19/858567/353937.terrain new file mode 100644 index 000000000..2eb6ab8a0 Binary files /dev/null and b/public/terrain/19/858567/353937.terrain differ diff --git a/public/terrain/19/858567/353938.terrain b/public/terrain/19/858567/353938.terrain new file mode 100644 index 000000000..de82c6344 Binary files /dev/null and b/public/terrain/19/858567/353938.terrain differ diff --git a/public/terrain/19/858567/353939.terrain b/public/terrain/19/858567/353939.terrain new file mode 100644 index 000000000..78c6e3bcd Binary files /dev/null and b/public/terrain/19/858567/353939.terrain differ diff --git a/public/terrain/19/858567/353940.terrain b/public/terrain/19/858567/353940.terrain new file mode 100644 index 000000000..63470c100 Binary files /dev/null and b/public/terrain/19/858567/353940.terrain differ diff --git a/public/terrain/19/858567/353941.terrain b/public/terrain/19/858567/353941.terrain new file mode 100644 index 000000000..8996b739a Binary files /dev/null and b/public/terrain/19/858567/353941.terrain differ diff --git a/public/terrain/19/858567/353942.terrain b/public/terrain/19/858567/353942.terrain new file mode 100644 index 000000000..1933ad849 Binary files /dev/null and b/public/terrain/19/858567/353942.terrain differ diff --git a/public/terrain/19/858567/353943.terrain b/public/terrain/19/858567/353943.terrain new file mode 100644 index 000000000..9980df829 Binary files /dev/null and b/public/terrain/19/858567/353943.terrain differ diff --git a/public/terrain/19/858567/353944.terrain b/public/terrain/19/858567/353944.terrain new file mode 100644 index 000000000..a980f6abb Binary files /dev/null and b/public/terrain/19/858567/353944.terrain differ diff --git a/public/terrain/19/858567/353945.terrain b/public/terrain/19/858567/353945.terrain new file mode 100644 index 000000000..975aedb90 Binary files /dev/null and b/public/terrain/19/858567/353945.terrain differ diff --git a/public/terrain/19/858567/353946.terrain b/public/terrain/19/858567/353946.terrain new file mode 100644 index 000000000..90eb9cce2 Binary files /dev/null and b/public/terrain/19/858567/353946.terrain differ diff --git a/public/terrain/19/858567/353947.terrain b/public/terrain/19/858567/353947.terrain new file mode 100644 index 000000000..4b687a4d1 Binary files /dev/null and b/public/terrain/19/858567/353947.terrain differ diff --git a/public/terrain/19/858567/353948.terrain b/public/terrain/19/858567/353948.terrain new file mode 100644 index 000000000..eae0eacb4 Binary files /dev/null and b/public/terrain/19/858567/353948.terrain differ diff --git a/public/terrain/19/858567/353949.terrain b/public/terrain/19/858567/353949.terrain new file mode 100644 index 000000000..4fda1b573 Binary files /dev/null and b/public/terrain/19/858567/353949.terrain differ diff --git a/public/terrain/19/858567/353950.terrain b/public/terrain/19/858567/353950.terrain new file mode 100644 index 000000000..8fc5c94ea Binary files /dev/null and b/public/terrain/19/858567/353950.terrain differ diff --git a/public/terrain/19/858567/353951.terrain b/public/terrain/19/858567/353951.terrain new file mode 100644 index 000000000..b31cf68e7 Binary files /dev/null and b/public/terrain/19/858567/353951.terrain differ diff --git a/public/terrain/19/858567/353952.terrain b/public/terrain/19/858567/353952.terrain new file mode 100644 index 000000000..c9ee8c14b Binary files /dev/null and b/public/terrain/19/858567/353952.terrain differ diff --git a/public/terrain/19/858567/353953.terrain b/public/terrain/19/858567/353953.terrain new file mode 100644 index 000000000..085e8568d Binary files /dev/null and b/public/terrain/19/858567/353953.terrain differ diff --git a/public/terrain/19/858567/353954.terrain b/public/terrain/19/858567/353954.terrain new file mode 100644 index 000000000..227ec584b Binary files /dev/null and b/public/terrain/19/858567/353954.terrain differ diff --git a/public/terrain/19/858567/353955.terrain b/public/terrain/19/858567/353955.terrain new file mode 100644 index 000000000..1e21e6470 Binary files /dev/null and b/public/terrain/19/858567/353955.terrain differ diff --git a/public/terrain/19/858567/353956.terrain b/public/terrain/19/858567/353956.terrain new file mode 100644 index 000000000..e76f951a9 Binary files /dev/null and b/public/terrain/19/858567/353956.terrain differ diff --git a/public/terrain/19/858567/353957.terrain b/public/terrain/19/858567/353957.terrain new file mode 100644 index 000000000..155242a20 Binary files /dev/null and b/public/terrain/19/858567/353957.terrain differ diff --git a/public/terrain/19/858567/353958.terrain b/public/terrain/19/858567/353958.terrain new file mode 100644 index 000000000..e0637e38e Binary files /dev/null and b/public/terrain/19/858567/353958.terrain differ diff --git a/public/terrain/19/858567/353959.terrain b/public/terrain/19/858567/353959.terrain new file mode 100644 index 000000000..0552b6f4f Binary files /dev/null and b/public/terrain/19/858567/353959.terrain differ diff --git a/public/terrain/19/858567/353960.terrain b/public/terrain/19/858567/353960.terrain new file mode 100644 index 000000000..0d73b15d8 Binary files /dev/null and b/public/terrain/19/858567/353960.terrain differ diff --git a/public/terrain/19/858567/353961.terrain b/public/terrain/19/858567/353961.terrain new file mode 100644 index 000000000..5c01206b1 Binary files /dev/null and b/public/terrain/19/858567/353961.terrain differ diff --git a/public/terrain/19/858567/353962.terrain b/public/terrain/19/858567/353962.terrain new file mode 100644 index 000000000..3482c65ed Binary files /dev/null and b/public/terrain/19/858567/353962.terrain differ diff --git a/public/terrain/19/858567/353963.terrain b/public/terrain/19/858567/353963.terrain new file mode 100644 index 000000000..8db8ceae5 Binary files /dev/null and b/public/terrain/19/858567/353963.terrain differ diff --git a/public/terrain/19/858567/353964.terrain b/public/terrain/19/858567/353964.terrain new file mode 100644 index 000000000..c2df5fe73 Binary files /dev/null and b/public/terrain/19/858567/353964.terrain differ diff --git a/public/terrain/19/858567/353965.terrain b/public/terrain/19/858567/353965.terrain new file mode 100644 index 000000000..84a3da744 Binary files /dev/null and b/public/terrain/19/858567/353965.terrain differ diff --git a/public/terrain/19/858567/353966.terrain b/public/terrain/19/858567/353966.terrain new file mode 100644 index 000000000..bcf26f595 Binary files /dev/null and b/public/terrain/19/858567/353966.terrain differ diff --git a/public/terrain/19/858567/353967.terrain b/public/terrain/19/858567/353967.terrain new file mode 100644 index 000000000..9d4c7d272 Binary files /dev/null and b/public/terrain/19/858567/353967.terrain differ diff --git a/public/terrain/19/858567/353968.terrain b/public/terrain/19/858567/353968.terrain new file mode 100644 index 000000000..09cac28ab Binary files /dev/null and b/public/terrain/19/858567/353968.terrain differ diff --git a/public/terrain/19/858567/353969.terrain b/public/terrain/19/858567/353969.terrain new file mode 100644 index 000000000..7892dfdf5 Binary files /dev/null and b/public/terrain/19/858567/353969.terrain differ diff --git a/public/terrain/19/858567/353970.terrain b/public/terrain/19/858567/353970.terrain new file mode 100644 index 000000000..c6b2dd097 Binary files /dev/null and b/public/terrain/19/858567/353970.terrain differ diff --git a/public/terrain/19/858567/353971.terrain b/public/terrain/19/858567/353971.terrain new file mode 100644 index 000000000..c1ccf96e9 Binary files /dev/null and b/public/terrain/19/858567/353971.terrain differ diff --git a/public/terrain/19/858567/353972.terrain b/public/terrain/19/858567/353972.terrain new file mode 100644 index 000000000..785daeb90 Binary files /dev/null and b/public/terrain/19/858567/353972.terrain differ diff --git a/public/terrain/19/858567/353973.terrain b/public/terrain/19/858567/353973.terrain new file mode 100644 index 000000000..9d9b4b945 Binary files /dev/null and b/public/terrain/19/858567/353973.terrain differ diff --git a/public/terrain/19/858567/353974.terrain b/public/terrain/19/858567/353974.terrain new file mode 100644 index 000000000..d0036be6e Binary files /dev/null and b/public/terrain/19/858567/353974.terrain differ diff --git a/public/terrain/19/858567/353975.terrain b/public/terrain/19/858567/353975.terrain new file mode 100644 index 000000000..b0d7cc7ff Binary files /dev/null and b/public/terrain/19/858567/353975.terrain differ diff --git a/public/terrain/19/858567/353976.terrain b/public/terrain/19/858567/353976.terrain new file mode 100644 index 000000000..4be4c2a04 Binary files /dev/null and b/public/terrain/19/858567/353976.terrain differ diff --git a/public/terrain/19/858567/353977.terrain b/public/terrain/19/858567/353977.terrain new file mode 100644 index 000000000..799b86a28 Binary files /dev/null and b/public/terrain/19/858567/353977.terrain differ diff --git a/public/terrain/19/858567/353978.terrain b/public/terrain/19/858567/353978.terrain new file mode 100644 index 000000000..13d3277ee Binary files /dev/null and b/public/terrain/19/858567/353978.terrain differ diff --git a/public/terrain/19/858567/353979.terrain b/public/terrain/19/858567/353979.terrain new file mode 100644 index 000000000..c95d95fbb Binary files /dev/null and b/public/terrain/19/858567/353979.terrain differ diff --git a/public/terrain/19/858567/353980.terrain b/public/terrain/19/858567/353980.terrain new file mode 100644 index 000000000..63660f7c8 Binary files /dev/null and b/public/terrain/19/858567/353980.terrain differ diff --git a/public/terrain/19/858567/353981.terrain b/public/terrain/19/858567/353981.terrain new file mode 100644 index 000000000..06a976e3f Binary files /dev/null and b/public/terrain/19/858567/353981.terrain differ diff --git a/public/terrain/19/858567/353982.terrain b/public/terrain/19/858567/353982.terrain new file mode 100644 index 000000000..115d5a508 Binary files /dev/null and b/public/terrain/19/858567/353982.terrain differ diff --git a/public/terrain/19/858567/353983.terrain b/public/terrain/19/858567/353983.terrain new file mode 100644 index 000000000..46f08f61a Binary files /dev/null and b/public/terrain/19/858567/353983.terrain differ diff --git a/public/terrain/19/858567/353984.terrain b/public/terrain/19/858567/353984.terrain new file mode 100644 index 000000000..42ee98dfa Binary files /dev/null and b/public/terrain/19/858567/353984.terrain differ diff --git a/public/terrain/19/858567/353985.terrain b/public/terrain/19/858567/353985.terrain new file mode 100644 index 000000000..5b56d9ffa Binary files /dev/null and b/public/terrain/19/858567/353985.terrain differ diff --git a/public/terrain/19/858567/353986.terrain b/public/terrain/19/858567/353986.terrain new file mode 100644 index 000000000..121fbfce3 Binary files /dev/null and b/public/terrain/19/858567/353986.terrain differ diff --git a/public/terrain/19/858567/353987.terrain b/public/terrain/19/858567/353987.terrain new file mode 100644 index 000000000..05af15f21 Binary files /dev/null and b/public/terrain/19/858567/353987.terrain differ diff --git a/public/terrain/19/858567/353988.terrain b/public/terrain/19/858567/353988.terrain new file mode 100644 index 000000000..44e886d03 Binary files /dev/null and b/public/terrain/19/858567/353988.terrain differ diff --git a/public/terrain/19/858567/353989.terrain b/public/terrain/19/858567/353989.terrain new file mode 100644 index 000000000..62d01b0c4 Binary files /dev/null and b/public/terrain/19/858567/353989.terrain differ diff --git a/public/terrain/19/858567/353990.terrain b/public/terrain/19/858567/353990.terrain new file mode 100644 index 000000000..b43cac0d6 Binary files /dev/null and b/public/terrain/19/858567/353990.terrain differ diff --git a/public/terrain/19/858567/353991.terrain b/public/terrain/19/858567/353991.terrain new file mode 100644 index 000000000..99d366c6f Binary files /dev/null and b/public/terrain/19/858567/353991.terrain differ diff --git a/public/terrain/19/858567/353992.terrain b/public/terrain/19/858567/353992.terrain new file mode 100644 index 000000000..26974c621 Binary files /dev/null and b/public/terrain/19/858567/353992.terrain differ diff --git a/public/terrain/19/858567/353993.terrain b/public/terrain/19/858567/353993.terrain new file mode 100644 index 000000000..9b60bb294 Binary files /dev/null and b/public/terrain/19/858567/353993.terrain differ diff --git a/public/terrain/19/858567/353994.terrain b/public/terrain/19/858567/353994.terrain new file mode 100644 index 000000000..64ecde745 Binary files /dev/null and b/public/terrain/19/858567/353994.terrain differ diff --git a/public/terrain/19/858567/353995.terrain b/public/terrain/19/858567/353995.terrain new file mode 100644 index 000000000..5b3635f4a Binary files /dev/null and b/public/terrain/19/858567/353995.terrain differ diff --git a/public/terrain/19/858567/353996.terrain b/public/terrain/19/858567/353996.terrain new file mode 100644 index 000000000..8610971a9 Binary files /dev/null and b/public/terrain/19/858567/353996.terrain differ diff --git a/public/terrain/19/858567/353997.terrain b/public/terrain/19/858567/353997.terrain new file mode 100644 index 000000000..f39c2498a Binary files /dev/null and b/public/terrain/19/858567/353997.terrain differ diff --git a/public/terrain/19/858567/353998.terrain b/public/terrain/19/858567/353998.terrain new file mode 100644 index 000000000..1eee6c32a Binary files /dev/null and b/public/terrain/19/858567/353998.terrain differ diff --git a/public/terrain/19/858567/353999.terrain b/public/terrain/19/858567/353999.terrain new file mode 100644 index 000000000..6228d2db8 Binary files /dev/null and b/public/terrain/19/858567/353999.terrain differ diff --git a/public/terrain/19/858567/354000.terrain b/public/terrain/19/858567/354000.terrain new file mode 100644 index 000000000..1857da932 Binary files /dev/null and b/public/terrain/19/858567/354000.terrain differ diff --git a/public/terrain/19/858567/354001.terrain b/public/terrain/19/858567/354001.terrain new file mode 100644 index 000000000..cd2c62257 Binary files /dev/null and b/public/terrain/19/858567/354001.terrain differ diff --git a/public/terrain/19/858567/354002.terrain b/public/terrain/19/858567/354002.terrain new file mode 100644 index 000000000..a78585d58 Binary files /dev/null and b/public/terrain/19/858567/354002.terrain differ diff --git a/public/terrain/19/858567/354003.terrain b/public/terrain/19/858567/354003.terrain new file mode 100644 index 000000000..48ebd2bc8 Binary files /dev/null and b/public/terrain/19/858567/354003.terrain differ diff --git a/public/terrain/19/858567/354004.terrain b/public/terrain/19/858567/354004.terrain new file mode 100644 index 000000000..e2c70f245 Binary files /dev/null and b/public/terrain/19/858567/354004.terrain differ diff --git a/public/terrain/19/858567/354005.terrain b/public/terrain/19/858567/354005.terrain new file mode 100644 index 000000000..ad1ae273e Binary files /dev/null and b/public/terrain/19/858567/354005.terrain differ diff --git a/public/terrain/19/858567/354006.terrain b/public/terrain/19/858567/354006.terrain new file mode 100644 index 000000000..c4e1e2f24 Binary files /dev/null and b/public/terrain/19/858567/354006.terrain differ diff --git a/public/terrain/19/858567/354007.terrain b/public/terrain/19/858567/354007.terrain new file mode 100644 index 000000000..3ca85604d Binary files /dev/null and b/public/terrain/19/858567/354007.terrain differ diff --git a/public/terrain/19/858567/354008.terrain b/public/terrain/19/858567/354008.terrain new file mode 100644 index 000000000..8b19a8721 Binary files /dev/null and b/public/terrain/19/858567/354008.terrain differ diff --git a/public/terrain/19/858567/354009.terrain b/public/terrain/19/858567/354009.terrain new file mode 100644 index 000000000..d15229ccd Binary files /dev/null and b/public/terrain/19/858567/354009.terrain differ diff --git a/public/terrain/19/858567/354010.terrain b/public/terrain/19/858567/354010.terrain new file mode 100644 index 000000000..8d87aa082 Binary files /dev/null and b/public/terrain/19/858567/354010.terrain differ diff --git a/public/terrain/19/858567/354011.terrain b/public/terrain/19/858567/354011.terrain new file mode 100644 index 000000000..776105f3c Binary files /dev/null and b/public/terrain/19/858567/354011.terrain differ diff --git a/public/terrain/19/858567/354012.terrain b/public/terrain/19/858567/354012.terrain new file mode 100644 index 000000000..c5a8ed628 Binary files /dev/null and b/public/terrain/19/858567/354012.terrain differ diff --git a/public/terrain/19/858567/354013.terrain b/public/terrain/19/858567/354013.terrain new file mode 100644 index 000000000..4a56b1c07 Binary files /dev/null and b/public/terrain/19/858567/354013.terrain differ diff --git a/public/terrain/19/858567/354014.terrain b/public/terrain/19/858567/354014.terrain new file mode 100644 index 000000000..51a516edf Binary files /dev/null and b/public/terrain/19/858567/354014.terrain differ diff --git a/public/terrain/19/858567/354015.terrain b/public/terrain/19/858567/354015.terrain new file mode 100644 index 000000000..3e35b62dd Binary files /dev/null and b/public/terrain/19/858567/354015.terrain differ diff --git a/public/terrain/19/858567/354016.terrain b/public/terrain/19/858567/354016.terrain new file mode 100644 index 000000000..7c231278f Binary files /dev/null and b/public/terrain/19/858567/354016.terrain differ diff --git a/public/terrain/19/858567/354017.terrain b/public/terrain/19/858567/354017.terrain new file mode 100644 index 000000000..33c5e5120 Binary files /dev/null and b/public/terrain/19/858567/354017.terrain differ diff --git a/public/terrain/19/858567/354018.terrain b/public/terrain/19/858567/354018.terrain new file mode 100644 index 000000000..244a55450 Binary files /dev/null and b/public/terrain/19/858567/354018.terrain differ diff --git a/public/terrain/19/858567/354019.terrain b/public/terrain/19/858567/354019.terrain new file mode 100644 index 000000000..5b34ccaca Binary files /dev/null and b/public/terrain/19/858567/354019.terrain differ diff --git a/public/terrain/19/858567/354020.terrain b/public/terrain/19/858567/354020.terrain new file mode 100644 index 000000000..01c5f4df5 Binary files /dev/null and b/public/terrain/19/858567/354020.terrain differ diff --git a/public/terrain/19/858567/354021.terrain b/public/terrain/19/858567/354021.terrain new file mode 100644 index 000000000..5258739a2 Binary files /dev/null and b/public/terrain/19/858567/354021.terrain differ diff --git a/public/terrain/19/858567/354022.terrain b/public/terrain/19/858567/354022.terrain new file mode 100644 index 000000000..f1eea8d22 Binary files /dev/null and b/public/terrain/19/858567/354022.terrain differ diff --git a/public/terrain/19/858567/354023.terrain b/public/terrain/19/858567/354023.terrain new file mode 100644 index 000000000..803f81fad Binary files /dev/null and b/public/terrain/19/858567/354023.terrain differ diff --git a/public/terrain/19/858567/354024.terrain b/public/terrain/19/858567/354024.terrain new file mode 100644 index 000000000..ad65ac62f Binary files /dev/null and b/public/terrain/19/858567/354024.terrain differ diff --git a/public/terrain/19/858567/354025.terrain b/public/terrain/19/858567/354025.terrain new file mode 100644 index 000000000..28635f662 Binary files /dev/null and b/public/terrain/19/858567/354025.terrain differ diff --git a/public/terrain/19/858567/354026.terrain b/public/terrain/19/858567/354026.terrain new file mode 100644 index 000000000..868d6243e Binary files /dev/null and b/public/terrain/19/858567/354026.terrain differ diff --git a/public/terrain/19/858567/354027.terrain b/public/terrain/19/858567/354027.terrain new file mode 100644 index 000000000..608a5584d Binary files /dev/null and b/public/terrain/19/858567/354027.terrain differ diff --git a/public/terrain/19/858567/354028.terrain b/public/terrain/19/858567/354028.terrain new file mode 100644 index 000000000..6ce4acdfb Binary files /dev/null and b/public/terrain/19/858567/354028.terrain differ diff --git a/public/terrain/19/858567/354029.terrain b/public/terrain/19/858567/354029.terrain new file mode 100644 index 000000000..7308dcb56 Binary files /dev/null and b/public/terrain/19/858567/354029.terrain differ diff --git a/public/terrain/19/858567/354030.terrain b/public/terrain/19/858567/354030.terrain new file mode 100644 index 000000000..708a61a4c Binary files /dev/null and b/public/terrain/19/858567/354030.terrain differ diff --git a/public/terrain/19/858567/354031.terrain b/public/terrain/19/858567/354031.terrain new file mode 100644 index 000000000..1167ae28c Binary files /dev/null and b/public/terrain/19/858567/354031.terrain differ diff --git a/public/terrain/19/858567/354032.terrain b/public/terrain/19/858567/354032.terrain new file mode 100644 index 000000000..43e8330e3 Binary files /dev/null and b/public/terrain/19/858567/354032.terrain differ diff --git a/public/terrain/19/858567/354033.terrain b/public/terrain/19/858567/354033.terrain new file mode 100644 index 000000000..dc9ac8627 Binary files /dev/null and b/public/terrain/19/858567/354033.terrain differ diff --git a/public/terrain/19/858567/354034.terrain b/public/terrain/19/858567/354034.terrain new file mode 100644 index 000000000..0c4a1f1ec Binary files /dev/null and b/public/terrain/19/858567/354034.terrain differ diff --git a/public/terrain/19/858567/354035.terrain b/public/terrain/19/858567/354035.terrain new file mode 100644 index 000000000..f40c87405 Binary files /dev/null and b/public/terrain/19/858567/354035.terrain differ diff --git a/public/terrain/19/858567/354036.terrain b/public/terrain/19/858567/354036.terrain new file mode 100644 index 000000000..64b850d30 Binary files /dev/null and b/public/terrain/19/858567/354036.terrain differ diff --git a/public/terrain/19/858567/354037.terrain b/public/terrain/19/858567/354037.terrain new file mode 100644 index 000000000..251180ba2 Binary files /dev/null and b/public/terrain/19/858567/354037.terrain differ diff --git a/public/terrain/19/858567/354038.terrain b/public/terrain/19/858567/354038.terrain new file mode 100644 index 000000000..c2f58128e Binary files /dev/null and b/public/terrain/19/858567/354038.terrain differ diff --git a/public/terrain/19/858567/354039.terrain b/public/terrain/19/858567/354039.terrain new file mode 100644 index 000000000..6a272f9f3 Binary files /dev/null and b/public/terrain/19/858567/354039.terrain differ diff --git a/public/terrain/19/858567/354040.terrain b/public/terrain/19/858567/354040.terrain new file mode 100644 index 000000000..8073f0a9f Binary files /dev/null and b/public/terrain/19/858567/354040.terrain differ diff --git a/public/terrain/19/858567/354041.terrain b/public/terrain/19/858567/354041.terrain new file mode 100644 index 000000000..12814fa6a Binary files /dev/null and b/public/terrain/19/858567/354041.terrain differ diff --git a/public/terrain/19/858567/354042.terrain b/public/terrain/19/858567/354042.terrain new file mode 100644 index 000000000..6fbba050d Binary files /dev/null and b/public/terrain/19/858567/354042.terrain differ diff --git a/public/terrain/19/858567/354043.terrain b/public/terrain/19/858567/354043.terrain new file mode 100644 index 000000000..d07b7733a Binary files /dev/null and b/public/terrain/19/858567/354043.terrain differ diff --git a/public/terrain/19/858567/354044.terrain b/public/terrain/19/858567/354044.terrain new file mode 100644 index 000000000..6d91f8998 Binary files /dev/null and b/public/terrain/19/858567/354044.terrain differ diff --git a/public/terrain/19/858567/354045.terrain b/public/terrain/19/858567/354045.terrain new file mode 100644 index 000000000..a256123cf Binary files /dev/null and b/public/terrain/19/858567/354045.terrain differ diff --git a/public/terrain/19/858567/354046.terrain b/public/terrain/19/858567/354046.terrain new file mode 100644 index 000000000..e1a154bad Binary files /dev/null and b/public/terrain/19/858567/354046.terrain differ diff --git a/public/terrain/19/858567/354047.terrain b/public/terrain/19/858567/354047.terrain new file mode 100644 index 000000000..300b408f0 Binary files /dev/null and b/public/terrain/19/858567/354047.terrain differ diff --git a/public/terrain/19/858567/354048.terrain b/public/terrain/19/858567/354048.terrain new file mode 100644 index 000000000..61438601c Binary files /dev/null and b/public/terrain/19/858567/354048.terrain differ diff --git a/public/terrain/19/858567/354049.terrain b/public/terrain/19/858567/354049.terrain new file mode 100644 index 000000000..285a42b88 Binary files /dev/null and b/public/terrain/19/858567/354049.terrain differ diff --git a/public/terrain/19/858567/354050.terrain b/public/terrain/19/858567/354050.terrain new file mode 100644 index 000000000..1445f789c Binary files /dev/null and b/public/terrain/19/858567/354050.terrain differ diff --git a/public/terrain/19/858567/354051.terrain b/public/terrain/19/858567/354051.terrain new file mode 100644 index 000000000..022173ae5 Binary files /dev/null and b/public/terrain/19/858567/354051.terrain differ diff --git a/public/terrain/19/858567/354052.terrain b/public/terrain/19/858567/354052.terrain new file mode 100644 index 000000000..b9785f400 Binary files /dev/null and b/public/terrain/19/858567/354052.terrain differ diff --git a/public/terrain/19/858567/354053.terrain b/public/terrain/19/858567/354053.terrain new file mode 100644 index 000000000..192c57eab Binary files /dev/null and b/public/terrain/19/858567/354053.terrain differ diff --git a/public/terrain/19/858567/354054.terrain b/public/terrain/19/858567/354054.terrain new file mode 100644 index 000000000..873123aae Binary files /dev/null and b/public/terrain/19/858567/354054.terrain differ diff --git a/public/terrain/19/858567/354055.terrain b/public/terrain/19/858567/354055.terrain new file mode 100644 index 000000000..2e14e9a3e Binary files /dev/null and b/public/terrain/19/858567/354055.terrain differ diff --git a/public/terrain/19/858567/354056.terrain b/public/terrain/19/858567/354056.terrain new file mode 100644 index 000000000..99b1e5d12 Binary files /dev/null and b/public/terrain/19/858567/354056.terrain differ diff --git a/public/terrain/19/858567/354057.terrain b/public/terrain/19/858567/354057.terrain new file mode 100644 index 000000000..c91827639 Binary files /dev/null and b/public/terrain/19/858567/354057.terrain differ diff --git a/public/terrain/19/858567/354058.terrain b/public/terrain/19/858567/354058.terrain new file mode 100644 index 000000000..33c3c8bca Binary files /dev/null and b/public/terrain/19/858567/354058.terrain differ diff --git a/public/terrain/19/858567/354059.terrain b/public/terrain/19/858567/354059.terrain new file mode 100644 index 000000000..ae1a5e789 Binary files /dev/null and b/public/terrain/19/858567/354059.terrain differ diff --git a/public/terrain/19/858568/353743.terrain b/public/terrain/19/858568/353743.terrain new file mode 100644 index 000000000..0da9b80e6 Binary files /dev/null and b/public/terrain/19/858568/353743.terrain differ diff --git a/public/terrain/19/858568/353744.terrain b/public/terrain/19/858568/353744.terrain new file mode 100644 index 000000000..c2803680a Binary files /dev/null and b/public/terrain/19/858568/353744.terrain differ diff --git a/public/terrain/19/858568/353745.terrain b/public/terrain/19/858568/353745.terrain new file mode 100644 index 000000000..63cedf222 Binary files /dev/null and b/public/terrain/19/858568/353745.terrain differ diff --git a/public/terrain/19/858568/353746.terrain b/public/terrain/19/858568/353746.terrain new file mode 100644 index 000000000..75254795f Binary files /dev/null and b/public/terrain/19/858568/353746.terrain differ diff --git a/public/terrain/19/858568/353747.terrain b/public/terrain/19/858568/353747.terrain new file mode 100644 index 000000000..b257f1edd Binary files /dev/null and b/public/terrain/19/858568/353747.terrain differ diff --git a/public/terrain/19/858568/353748.terrain b/public/terrain/19/858568/353748.terrain new file mode 100644 index 000000000..4ec36aeb4 Binary files /dev/null and b/public/terrain/19/858568/353748.terrain differ diff --git a/public/terrain/19/858568/353749.terrain b/public/terrain/19/858568/353749.terrain new file mode 100644 index 000000000..32a2ddb67 Binary files /dev/null and b/public/terrain/19/858568/353749.terrain differ diff --git a/public/terrain/19/858568/353750.terrain b/public/terrain/19/858568/353750.terrain new file mode 100644 index 000000000..047b888b5 Binary files /dev/null and b/public/terrain/19/858568/353750.terrain differ diff --git a/public/terrain/19/858568/353751.terrain b/public/terrain/19/858568/353751.terrain new file mode 100644 index 000000000..6bc97af95 Binary files /dev/null and b/public/terrain/19/858568/353751.terrain differ diff --git a/public/terrain/19/858568/353752.terrain b/public/terrain/19/858568/353752.terrain new file mode 100644 index 000000000..61e50fc8d Binary files /dev/null and b/public/terrain/19/858568/353752.terrain differ diff --git a/public/terrain/19/858568/353753.terrain b/public/terrain/19/858568/353753.terrain new file mode 100644 index 000000000..5a462aaae Binary files /dev/null and b/public/terrain/19/858568/353753.terrain differ diff --git a/public/terrain/19/858568/353754.terrain b/public/terrain/19/858568/353754.terrain new file mode 100644 index 000000000..66a58d439 Binary files /dev/null and b/public/terrain/19/858568/353754.terrain differ diff --git a/public/terrain/19/858568/353755.terrain b/public/terrain/19/858568/353755.terrain new file mode 100644 index 000000000..e9c1da370 Binary files /dev/null and b/public/terrain/19/858568/353755.terrain differ diff --git a/public/terrain/19/858568/353756.terrain b/public/terrain/19/858568/353756.terrain new file mode 100644 index 000000000..02ded19eb Binary files /dev/null and b/public/terrain/19/858568/353756.terrain differ diff --git a/public/terrain/19/858568/353757.terrain b/public/terrain/19/858568/353757.terrain new file mode 100644 index 000000000..6428b03d4 Binary files /dev/null and b/public/terrain/19/858568/353757.terrain differ diff --git a/public/terrain/19/858568/353758.terrain b/public/terrain/19/858568/353758.terrain new file mode 100644 index 000000000..2b4030d7e Binary files /dev/null and b/public/terrain/19/858568/353758.terrain differ diff --git a/public/terrain/19/858568/353759.terrain b/public/terrain/19/858568/353759.terrain new file mode 100644 index 000000000..021fee6fd Binary files /dev/null and b/public/terrain/19/858568/353759.terrain differ diff --git a/public/terrain/19/858568/353760.terrain b/public/terrain/19/858568/353760.terrain new file mode 100644 index 000000000..d0be1b078 Binary files /dev/null and b/public/terrain/19/858568/353760.terrain differ diff --git a/public/terrain/19/858568/353761.terrain b/public/terrain/19/858568/353761.terrain new file mode 100644 index 000000000..1e7d6b3a5 Binary files /dev/null and b/public/terrain/19/858568/353761.terrain differ diff --git a/public/terrain/19/858568/353762.terrain b/public/terrain/19/858568/353762.terrain new file mode 100644 index 000000000..a1f74b5c4 Binary files /dev/null and b/public/terrain/19/858568/353762.terrain differ diff --git a/public/terrain/19/858568/353763.terrain b/public/terrain/19/858568/353763.terrain new file mode 100644 index 000000000..0cde09504 Binary files /dev/null and b/public/terrain/19/858568/353763.terrain differ diff --git a/public/terrain/19/858568/353764.terrain b/public/terrain/19/858568/353764.terrain new file mode 100644 index 000000000..5539f7fcc Binary files /dev/null and b/public/terrain/19/858568/353764.terrain differ diff --git a/public/terrain/19/858568/353765.terrain b/public/terrain/19/858568/353765.terrain new file mode 100644 index 000000000..3d6567814 Binary files /dev/null and b/public/terrain/19/858568/353765.terrain differ diff --git a/public/terrain/19/858568/353766.terrain b/public/terrain/19/858568/353766.terrain new file mode 100644 index 000000000..479f11ece Binary files /dev/null and b/public/terrain/19/858568/353766.terrain differ diff --git a/public/terrain/19/858568/353767.terrain b/public/terrain/19/858568/353767.terrain new file mode 100644 index 000000000..01964dee3 Binary files /dev/null and b/public/terrain/19/858568/353767.terrain differ diff --git a/public/terrain/19/858568/353768.terrain b/public/terrain/19/858568/353768.terrain new file mode 100644 index 000000000..9ade4e869 Binary files /dev/null and b/public/terrain/19/858568/353768.terrain differ diff --git a/public/terrain/19/858568/353769.terrain b/public/terrain/19/858568/353769.terrain new file mode 100644 index 000000000..5dc5d313b Binary files /dev/null and b/public/terrain/19/858568/353769.terrain differ diff --git a/public/terrain/19/858568/353770.terrain b/public/terrain/19/858568/353770.terrain new file mode 100644 index 000000000..df50a4ad4 Binary files /dev/null and b/public/terrain/19/858568/353770.terrain differ diff --git a/public/terrain/19/858568/353771.terrain b/public/terrain/19/858568/353771.terrain new file mode 100644 index 000000000..98fca397d Binary files /dev/null and b/public/terrain/19/858568/353771.terrain differ diff --git a/public/terrain/19/858568/353772.terrain b/public/terrain/19/858568/353772.terrain new file mode 100644 index 000000000..d62391e3e Binary files /dev/null and b/public/terrain/19/858568/353772.terrain differ diff --git a/public/terrain/19/858568/353773.terrain b/public/terrain/19/858568/353773.terrain new file mode 100644 index 000000000..2e5322b57 Binary files /dev/null and b/public/terrain/19/858568/353773.terrain differ diff --git a/public/terrain/19/858568/353774.terrain b/public/terrain/19/858568/353774.terrain new file mode 100644 index 000000000..e17995899 Binary files /dev/null and b/public/terrain/19/858568/353774.terrain differ diff --git a/public/terrain/19/858568/353775.terrain b/public/terrain/19/858568/353775.terrain new file mode 100644 index 000000000..6b5ceb1d9 Binary files /dev/null and b/public/terrain/19/858568/353775.terrain differ diff --git a/public/terrain/19/858568/353776.terrain b/public/terrain/19/858568/353776.terrain new file mode 100644 index 000000000..143193ab0 Binary files /dev/null and b/public/terrain/19/858568/353776.terrain differ diff --git a/public/terrain/19/858568/353777.terrain b/public/terrain/19/858568/353777.terrain new file mode 100644 index 000000000..4c050a83b Binary files /dev/null and b/public/terrain/19/858568/353777.terrain differ diff --git a/public/terrain/19/858568/353778.terrain b/public/terrain/19/858568/353778.terrain new file mode 100644 index 000000000..ca90cb511 Binary files /dev/null and b/public/terrain/19/858568/353778.terrain differ diff --git a/public/terrain/19/858568/353779.terrain b/public/terrain/19/858568/353779.terrain new file mode 100644 index 000000000..d1529d403 Binary files /dev/null and b/public/terrain/19/858568/353779.terrain differ diff --git a/public/terrain/19/858568/353780.terrain b/public/terrain/19/858568/353780.terrain new file mode 100644 index 000000000..ce1b1832b Binary files /dev/null and b/public/terrain/19/858568/353780.terrain differ diff --git a/public/terrain/19/858568/353781.terrain b/public/terrain/19/858568/353781.terrain new file mode 100644 index 000000000..8017e648a Binary files /dev/null and b/public/terrain/19/858568/353781.terrain differ diff --git a/public/terrain/19/858568/353782.terrain b/public/terrain/19/858568/353782.terrain new file mode 100644 index 000000000..ce7248669 Binary files /dev/null and b/public/terrain/19/858568/353782.terrain differ diff --git a/public/terrain/19/858568/353783.terrain b/public/terrain/19/858568/353783.terrain new file mode 100644 index 000000000..85032195a Binary files /dev/null and b/public/terrain/19/858568/353783.terrain differ diff --git a/public/terrain/19/858568/353784.terrain b/public/terrain/19/858568/353784.terrain new file mode 100644 index 000000000..b610ed8ec Binary files /dev/null and b/public/terrain/19/858568/353784.terrain differ diff --git a/public/terrain/19/858568/353785.terrain b/public/terrain/19/858568/353785.terrain new file mode 100644 index 000000000..b365db8c3 Binary files /dev/null and b/public/terrain/19/858568/353785.terrain differ diff --git a/public/terrain/19/858568/353786.terrain b/public/terrain/19/858568/353786.terrain new file mode 100644 index 000000000..254711249 Binary files /dev/null and b/public/terrain/19/858568/353786.terrain differ diff --git a/public/terrain/19/858568/353787.terrain b/public/terrain/19/858568/353787.terrain new file mode 100644 index 000000000..f10df9011 Binary files /dev/null and b/public/terrain/19/858568/353787.terrain differ diff --git a/public/terrain/19/858568/353788.terrain b/public/terrain/19/858568/353788.terrain new file mode 100644 index 000000000..11b919fe3 Binary files /dev/null and b/public/terrain/19/858568/353788.terrain differ diff --git a/public/terrain/19/858568/353789.terrain b/public/terrain/19/858568/353789.terrain new file mode 100644 index 000000000..ab8bfcbd1 Binary files /dev/null and b/public/terrain/19/858568/353789.terrain differ diff --git a/public/terrain/19/858568/353790.terrain b/public/terrain/19/858568/353790.terrain new file mode 100644 index 000000000..c90bda4ff Binary files /dev/null and b/public/terrain/19/858568/353790.terrain differ diff --git a/public/terrain/19/858568/353791.terrain b/public/terrain/19/858568/353791.terrain new file mode 100644 index 000000000..78fe5f5a5 Binary files /dev/null and b/public/terrain/19/858568/353791.terrain differ diff --git a/public/terrain/19/858568/353792.terrain b/public/terrain/19/858568/353792.terrain new file mode 100644 index 000000000..16be4d152 Binary files /dev/null and b/public/terrain/19/858568/353792.terrain differ diff --git a/public/terrain/19/858568/353793.terrain b/public/terrain/19/858568/353793.terrain new file mode 100644 index 000000000..0e433330f Binary files /dev/null and b/public/terrain/19/858568/353793.terrain differ diff --git a/public/terrain/19/858568/353794.terrain b/public/terrain/19/858568/353794.terrain new file mode 100644 index 000000000..7fa01a2cc Binary files /dev/null and b/public/terrain/19/858568/353794.terrain differ diff --git a/public/terrain/19/858568/353795.terrain b/public/terrain/19/858568/353795.terrain new file mode 100644 index 000000000..b8ea74f77 Binary files /dev/null and b/public/terrain/19/858568/353795.terrain differ diff --git a/public/terrain/19/858568/353796.terrain b/public/terrain/19/858568/353796.terrain new file mode 100644 index 000000000..79052eba5 Binary files /dev/null and b/public/terrain/19/858568/353796.terrain differ diff --git a/public/terrain/19/858568/353797.terrain b/public/terrain/19/858568/353797.terrain new file mode 100644 index 000000000..96366db01 Binary files /dev/null and b/public/terrain/19/858568/353797.terrain differ diff --git a/public/terrain/19/858568/353798.terrain b/public/terrain/19/858568/353798.terrain new file mode 100644 index 000000000..518667a93 Binary files /dev/null and b/public/terrain/19/858568/353798.terrain differ diff --git a/public/terrain/19/858568/353799.terrain b/public/terrain/19/858568/353799.terrain new file mode 100644 index 000000000..3e42d225e Binary files /dev/null and b/public/terrain/19/858568/353799.terrain differ diff --git a/public/terrain/19/858568/353800.terrain b/public/terrain/19/858568/353800.terrain new file mode 100644 index 000000000..0def85983 Binary files /dev/null and b/public/terrain/19/858568/353800.terrain differ diff --git a/public/terrain/19/858568/353801.terrain b/public/terrain/19/858568/353801.terrain new file mode 100644 index 000000000..bb4984af6 Binary files /dev/null and b/public/terrain/19/858568/353801.terrain differ diff --git a/public/terrain/19/858568/353802.terrain b/public/terrain/19/858568/353802.terrain new file mode 100644 index 000000000..4aa3899c3 Binary files /dev/null and b/public/terrain/19/858568/353802.terrain differ diff --git a/public/terrain/19/858568/353803.terrain b/public/terrain/19/858568/353803.terrain new file mode 100644 index 000000000..8aa5d6320 Binary files /dev/null and b/public/terrain/19/858568/353803.terrain differ diff --git a/public/terrain/19/858568/353804.terrain b/public/terrain/19/858568/353804.terrain new file mode 100644 index 000000000..5ce763915 Binary files /dev/null and b/public/terrain/19/858568/353804.terrain differ diff --git a/public/terrain/19/858568/353805.terrain b/public/terrain/19/858568/353805.terrain new file mode 100644 index 000000000..ea295302c Binary files /dev/null and b/public/terrain/19/858568/353805.terrain differ diff --git a/public/terrain/19/858568/353806.terrain b/public/terrain/19/858568/353806.terrain new file mode 100644 index 000000000..776b322c3 Binary files /dev/null and b/public/terrain/19/858568/353806.terrain differ diff --git a/public/terrain/19/858568/353807.terrain b/public/terrain/19/858568/353807.terrain new file mode 100644 index 000000000..645764fed Binary files /dev/null and b/public/terrain/19/858568/353807.terrain differ diff --git a/public/terrain/19/858568/353808.terrain b/public/terrain/19/858568/353808.terrain new file mode 100644 index 000000000..84ea60621 Binary files /dev/null and b/public/terrain/19/858568/353808.terrain differ diff --git a/public/terrain/19/858568/353809.terrain b/public/terrain/19/858568/353809.terrain new file mode 100644 index 000000000..a2fc104d9 Binary files /dev/null and b/public/terrain/19/858568/353809.terrain differ diff --git a/public/terrain/19/858568/353810.terrain b/public/terrain/19/858568/353810.terrain new file mode 100644 index 000000000..ed4216d9f Binary files /dev/null and b/public/terrain/19/858568/353810.terrain differ diff --git a/public/terrain/19/858568/353811.terrain b/public/terrain/19/858568/353811.terrain new file mode 100644 index 000000000..443b6beaf Binary files /dev/null and b/public/terrain/19/858568/353811.terrain differ diff --git a/public/terrain/19/858568/353812.terrain b/public/terrain/19/858568/353812.terrain new file mode 100644 index 000000000..5bd0ef6c3 Binary files /dev/null and b/public/terrain/19/858568/353812.terrain differ diff --git a/public/terrain/19/858568/353813.terrain b/public/terrain/19/858568/353813.terrain new file mode 100644 index 000000000..9c495aa8a Binary files /dev/null and b/public/terrain/19/858568/353813.terrain differ diff --git a/public/terrain/19/858568/353814.terrain b/public/terrain/19/858568/353814.terrain new file mode 100644 index 000000000..c3ad198c1 Binary files /dev/null and b/public/terrain/19/858568/353814.terrain differ diff --git a/public/terrain/19/858568/353815.terrain b/public/terrain/19/858568/353815.terrain new file mode 100644 index 000000000..eff6bb165 Binary files /dev/null and b/public/terrain/19/858568/353815.terrain differ diff --git a/public/terrain/19/858568/353816.terrain b/public/terrain/19/858568/353816.terrain new file mode 100644 index 000000000..2db7b7ea0 Binary files /dev/null and b/public/terrain/19/858568/353816.terrain differ diff --git a/public/terrain/19/858568/353817.terrain b/public/terrain/19/858568/353817.terrain new file mode 100644 index 000000000..befc10e2c Binary files /dev/null and b/public/terrain/19/858568/353817.terrain differ diff --git a/public/terrain/19/858568/353818.terrain b/public/terrain/19/858568/353818.terrain new file mode 100644 index 000000000..b0817df0c Binary files /dev/null and b/public/terrain/19/858568/353818.terrain differ diff --git a/public/terrain/19/858568/353819.terrain b/public/terrain/19/858568/353819.terrain new file mode 100644 index 000000000..79a41a265 Binary files /dev/null and b/public/terrain/19/858568/353819.terrain differ diff --git a/public/terrain/19/858568/353820.terrain b/public/terrain/19/858568/353820.terrain new file mode 100644 index 000000000..5f7daed93 Binary files /dev/null and b/public/terrain/19/858568/353820.terrain differ diff --git a/public/terrain/19/858568/353821.terrain b/public/terrain/19/858568/353821.terrain new file mode 100644 index 000000000..52caf49ad Binary files /dev/null and b/public/terrain/19/858568/353821.terrain differ diff --git a/public/terrain/19/858568/353822.terrain b/public/terrain/19/858568/353822.terrain new file mode 100644 index 000000000..898268b23 Binary files /dev/null and b/public/terrain/19/858568/353822.terrain differ diff --git a/public/terrain/19/858568/353823.terrain b/public/terrain/19/858568/353823.terrain new file mode 100644 index 000000000..ffd37992a Binary files /dev/null and b/public/terrain/19/858568/353823.terrain differ diff --git a/public/terrain/19/858568/353824.terrain b/public/terrain/19/858568/353824.terrain new file mode 100644 index 000000000..a32467166 Binary files /dev/null and b/public/terrain/19/858568/353824.terrain differ diff --git a/public/terrain/19/858568/353825.terrain b/public/terrain/19/858568/353825.terrain new file mode 100644 index 000000000..7035d635c Binary files /dev/null and b/public/terrain/19/858568/353825.terrain differ diff --git a/public/terrain/19/858568/353826.terrain b/public/terrain/19/858568/353826.terrain new file mode 100644 index 000000000..2fe9b2855 Binary files /dev/null and b/public/terrain/19/858568/353826.terrain differ diff --git a/public/terrain/19/858568/353827.terrain b/public/terrain/19/858568/353827.terrain new file mode 100644 index 000000000..085847201 Binary files /dev/null and b/public/terrain/19/858568/353827.terrain differ diff --git a/public/terrain/19/858568/353828.terrain b/public/terrain/19/858568/353828.terrain new file mode 100644 index 000000000..744c2a539 Binary files /dev/null and b/public/terrain/19/858568/353828.terrain differ diff --git a/public/terrain/19/858568/353829.terrain b/public/terrain/19/858568/353829.terrain new file mode 100644 index 000000000..7a7fc9192 Binary files /dev/null and b/public/terrain/19/858568/353829.terrain differ diff --git a/public/terrain/19/858568/353830.terrain b/public/terrain/19/858568/353830.terrain new file mode 100644 index 000000000..adaa85323 Binary files /dev/null and b/public/terrain/19/858568/353830.terrain differ diff --git a/public/terrain/19/858568/353831.terrain b/public/terrain/19/858568/353831.terrain new file mode 100644 index 000000000..147811645 Binary files /dev/null and b/public/terrain/19/858568/353831.terrain differ diff --git a/public/terrain/19/858568/353832.terrain b/public/terrain/19/858568/353832.terrain new file mode 100644 index 000000000..f2bbaf8f0 Binary files /dev/null and b/public/terrain/19/858568/353832.terrain differ diff --git a/public/terrain/19/858568/353833.terrain b/public/terrain/19/858568/353833.terrain new file mode 100644 index 000000000..a53affef3 Binary files /dev/null and b/public/terrain/19/858568/353833.terrain differ diff --git a/public/terrain/19/858568/353834.terrain b/public/terrain/19/858568/353834.terrain new file mode 100644 index 000000000..e0ad029e6 Binary files /dev/null and b/public/terrain/19/858568/353834.terrain differ diff --git a/public/terrain/19/858568/353835.terrain b/public/terrain/19/858568/353835.terrain new file mode 100644 index 000000000..72b4e7cdb Binary files /dev/null and b/public/terrain/19/858568/353835.terrain differ diff --git a/public/terrain/19/858568/353836.terrain b/public/terrain/19/858568/353836.terrain new file mode 100644 index 000000000..6f94d7007 Binary files /dev/null and b/public/terrain/19/858568/353836.terrain differ diff --git a/public/terrain/19/858568/353837.terrain b/public/terrain/19/858568/353837.terrain new file mode 100644 index 000000000..322f488c9 Binary files /dev/null and b/public/terrain/19/858568/353837.terrain differ diff --git a/public/terrain/19/858568/353838.terrain b/public/terrain/19/858568/353838.terrain new file mode 100644 index 000000000..eb5f0512d Binary files /dev/null and b/public/terrain/19/858568/353838.terrain differ diff --git a/public/terrain/19/858568/353839.terrain b/public/terrain/19/858568/353839.terrain new file mode 100644 index 000000000..b811488c3 Binary files /dev/null and b/public/terrain/19/858568/353839.terrain differ diff --git a/public/terrain/19/858568/353840.terrain b/public/terrain/19/858568/353840.terrain new file mode 100644 index 000000000..71ccfe2b2 Binary files /dev/null and b/public/terrain/19/858568/353840.terrain differ diff --git a/public/terrain/19/858568/353841.terrain b/public/terrain/19/858568/353841.terrain new file mode 100644 index 000000000..9b870953d Binary files /dev/null and b/public/terrain/19/858568/353841.terrain differ diff --git a/public/terrain/19/858568/353842.terrain b/public/terrain/19/858568/353842.terrain new file mode 100644 index 000000000..7ef858956 Binary files /dev/null and b/public/terrain/19/858568/353842.terrain differ diff --git a/public/terrain/19/858568/353843.terrain b/public/terrain/19/858568/353843.terrain new file mode 100644 index 000000000..8b3c65dfe Binary files /dev/null and b/public/terrain/19/858568/353843.terrain differ diff --git a/public/terrain/19/858568/353844.terrain b/public/terrain/19/858568/353844.terrain new file mode 100644 index 000000000..36426f7ac Binary files /dev/null and b/public/terrain/19/858568/353844.terrain differ diff --git a/public/terrain/19/858568/353845.terrain b/public/terrain/19/858568/353845.terrain new file mode 100644 index 000000000..310eca97d Binary files /dev/null and b/public/terrain/19/858568/353845.terrain differ diff --git a/public/terrain/19/858568/353846.terrain b/public/terrain/19/858568/353846.terrain new file mode 100644 index 000000000..6b50d9e35 Binary files /dev/null and b/public/terrain/19/858568/353846.terrain differ diff --git a/public/terrain/19/858568/353847.terrain b/public/terrain/19/858568/353847.terrain new file mode 100644 index 000000000..9bb7beb72 Binary files /dev/null and b/public/terrain/19/858568/353847.terrain differ diff --git a/public/terrain/19/858568/353848.terrain b/public/terrain/19/858568/353848.terrain new file mode 100644 index 000000000..f885e6dfe Binary files /dev/null and b/public/terrain/19/858568/353848.terrain differ diff --git a/public/terrain/19/858568/353849.terrain b/public/terrain/19/858568/353849.terrain new file mode 100644 index 000000000..29f38e736 Binary files /dev/null and b/public/terrain/19/858568/353849.terrain differ diff --git a/public/terrain/19/858568/353850.terrain b/public/terrain/19/858568/353850.terrain new file mode 100644 index 000000000..ac9dd5717 Binary files /dev/null and b/public/terrain/19/858568/353850.terrain differ diff --git a/public/terrain/19/858568/353851.terrain b/public/terrain/19/858568/353851.terrain new file mode 100644 index 000000000..1b11980a2 Binary files /dev/null and b/public/terrain/19/858568/353851.terrain differ diff --git a/public/terrain/19/858568/353852.terrain b/public/terrain/19/858568/353852.terrain new file mode 100644 index 000000000..8f5bbf393 Binary files /dev/null and b/public/terrain/19/858568/353852.terrain differ diff --git a/public/terrain/19/858568/353853.terrain b/public/terrain/19/858568/353853.terrain new file mode 100644 index 000000000..44821369d Binary files /dev/null and b/public/terrain/19/858568/353853.terrain differ diff --git a/public/terrain/19/858568/353854.terrain b/public/terrain/19/858568/353854.terrain new file mode 100644 index 000000000..0d01b547a Binary files /dev/null and b/public/terrain/19/858568/353854.terrain differ diff --git a/public/terrain/19/858568/353855.terrain b/public/terrain/19/858568/353855.terrain new file mode 100644 index 000000000..5abcb35a2 Binary files /dev/null and b/public/terrain/19/858568/353855.terrain differ diff --git a/public/terrain/19/858568/353856.terrain b/public/terrain/19/858568/353856.terrain new file mode 100644 index 000000000..9c9fb2666 Binary files /dev/null and b/public/terrain/19/858568/353856.terrain differ diff --git a/public/terrain/19/858568/353857.terrain b/public/terrain/19/858568/353857.terrain new file mode 100644 index 000000000..ce9b345f2 Binary files /dev/null and b/public/terrain/19/858568/353857.terrain differ diff --git a/public/terrain/19/858568/353858.terrain b/public/terrain/19/858568/353858.terrain new file mode 100644 index 000000000..a437fc0df Binary files /dev/null and b/public/terrain/19/858568/353858.terrain differ diff --git a/public/terrain/19/858568/353859.terrain b/public/terrain/19/858568/353859.terrain new file mode 100644 index 000000000..d8b22c6d2 Binary files /dev/null and b/public/terrain/19/858568/353859.terrain differ diff --git a/public/terrain/19/858568/353860.terrain b/public/terrain/19/858568/353860.terrain new file mode 100644 index 000000000..592f34fef Binary files /dev/null and b/public/terrain/19/858568/353860.terrain differ diff --git a/public/terrain/19/858568/353861.terrain b/public/terrain/19/858568/353861.terrain new file mode 100644 index 000000000..38cfab92b Binary files /dev/null and b/public/terrain/19/858568/353861.terrain differ diff --git a/public/terrain/19/858568/353862.terrain b/public/terrain/19/858568/353862.terrain new file mode 100644 index 000000000..500923dfe Binary files /dev/null and b/public/terrain/19/858568/353862.terrain differ diff --git a/public/terrain/19/858568/353863.terrain b/public/terrain/19/858568/353863.terrain new file mode 100644 index 000000000..2c70bd084 Binary files /dev/null and b/public/terrain/19/858568/353863.terrain differ diff --git a/public/terrain/19/858568/353864.terrain b/public/terrain/19/858568/353864.terrain new file mode 100644 index 000000000..74b48fb47 Binary files /dev/null and b/public/terrain/19/858568/353864.terrain differ diff --git a/public/terrain/19/858568/353865.terrain b/public/terrain/19/858568/353865.terrain new file mode 100644 index 000000000..2da055cc8 Binary files /dev/null and b/public/terrain/19/858568/353865.terrain differ diff --git a/public/terrain/19/858568/353866.terrain b/public/terrain/19/858568/353866.terrain new file mode 100644 index 000000000..d0ffd094d Binary files /dev/null and b/public/terrain/19/858568/353866.terrain differ diff --git a/public/terrain/19/858568/353867.terrain b/public/terrain/19/858568/353867.terrain new file mode 100644 index 000000000..4b3b6d3e3 Binary files /dev/null and b/public/terrain/19/858568/353867.terrain differ diff --git a/public/terrain/19/858568/353868.terrain b/public/terrain/19/858568/353868.terrain new file mode 100644 index 000000000..c98569518 Binary files /dev/null and b/public/terrain/19/858568/353868.terrain differ diff --git a/public/terrain/19/858568/353869.terrain b/public/terrain/19/858568/353869.terrain new file mode 100644 index 000000000..8f73565bb Binary files /dev/null and b/public/terrain/19/858568/353869.terrain differ diff --git a/public/terrain/19/858568/353870.terrain b/public/terrain/19/858568/353870.terrain new file mode 100644 index 000000000..1aec72ca1 Binary files /dev/null and b/public/terrain/19/858568/353870.terrain differ diff --git a/public/terrain/19/858568/353871.terrain b/public/terrain/19/858568/353871.terrain new file mode 100644 index 000000000..5f550f85b Binary files /dev/null and b/public/terrain/19/858568/353871.terrain differ diff --git a/public/terrain/19/858568/353872.terrain b/public/terrain/19/858568/353872.terrain new file mode 100644 index 000000000..d00f75f25 Binary files /dev/null and b/public/terrain/19/858568/353872.terrain differ diff --git a/public/terrain/19/858568/353873.terrain b/public/terrain/19/858568/353873.terrain new file mode 100644 index 000000000..4d6368490 Binary files /dev/null and b/public/terrain/19/858568/353873.terrain differ diff --git a/public/terrain/19/858568/353874.terrain b/public/terrain/19/858568/353874.terrain new file mode 100644 index 000000000..a4a4a6c1b Binary files /dev/null and b/public/terrain/19/858568/353874.terrain differ diff --git a/public/terrain/19/858568/353875.terrain b/public/terrain/19/858568/353875.terrain new file mode 100644 index 000000000..63787fe5b Binary files /dev/null and b/public/terrain/19/858568/353875.terrain differ diff --git a/public/terrain/19/858568/353876.terrain b/public/terrain/19/858568/353876.terrain new file mode 100644 index 000000000..145ddd4de Binary files /dev/null and b/public/terrain/19/858568/353876.terrain differ diff --git a/public/terrain/19/858568/353877.terrain b/public/terrain/19/858568/353877.terrain new file mode 100644 index 000000000..f3bd53469 Binary files /dev/null and b/public/terrain/19/858568/353877.terrain differ diff --git a/public/terrain/19/858568/353878.terrain b/public/terrain/19/858568/353878.terrain new file mode 100644 index 000000000..b2e14cb8d Binary files /dev/null and b/public/terrain/19/858568/353878.terrain differ diff --git a/public/terrain/19/858568/353879.terrain b/public/terrain/19/858568/353879.terrain new file mode 100644 index 000000000..2caf2abdc Binary files /dev/null and b/public/terrain/19/858568/353879.terrain differ diff --git a/public/terrain/19/858568/353880.terrain b/public/terrain/19/858568/353880.terrain new file mode 100644 index 000000000..4f0c49be3 Binary files /dev/null and b/public/terrain/19/858568/353880.terrain differ diff --git a/public/terrain/19/858568/353881.terrain b/public/terrain/19/858568/353881.terrain new file mode 100644 index 000000000..1d7be2459 Binary files /dev/null and b/public/terrain/19/858568/353881.terrain differ diff --git a/public/terrain/19/858568/353882.terrain b/public/terrain/19/858568/353882.terrain new file mode 100644 index 000000000..ee8600291 Binary files /dev/null and b/public/terrain/19/858568/353882.terrain differ diff --git a/public/terrain/19/858568/353883.terrain b/public/terrain/19/858568/353883.terrain new file mode 100644 index 000000000..b7d504f02 Binary files /dev/null and b/public/terrain/19/858568/353883.terrain differ diff --git a/public/terrain/19/858568/353884.terrain b/public/terrain/19/858568/353884.terrain new file mode 100644 index 000000000..47784e121 Binary files /dev/null and b/public/terrain/19/858568/353884.terrain differ diff --git a/public/terrain/19/858568/353885.terrain b/public/terrain/19/858568/353885.terrain new file mode 100644 index 000000000..e1d566cc4 Binary files /dev/null and b/public/terrain/19/858568/353885.terrain differ diff --git a/public/terrain/19/858568/353886.terrain b/public/terrain/19/858568/353886.terrain new file mode 100644 index 000000000..fbab6b905 Binary files /dev/null and b/public/terrain/19/858568/353886.terrain differ diff --git a/public/terrain/19/858568/353887.terrain b/public/terrain/19/858568/353887.terrain new file mode 100644 index 000000000..528a573da Binary files /dev/null and b/public/terrain/19/858568/353887.terrain differ diff --git a/public/terrain/19/858568/353888.terrain b/public/terrain/19/858568/353888.terrain new file mode 100644 index 000000000..93422238c Binary files /dev/null and b/public/terrain/19/858568/353888.terrain differ diff --git a/public/terrain/19/858568/353889.terrain b/public/terrain/19/858568/353889.terrain new file mode 100644 index 000000000..9ce4b74e5 Binary files /dev/null and b/public/terrain/19/858568/353889.terrain differ diff --git a/public/terrain/19/858568/353890.terrain b/public/terrain/19/858568/353890.terrain new file mode 100644 index 000000000..867ab6fa5 Binary files /dev/null and b/public/terrain/19/858568/353890.terrain differ diff --git a/public/terrain/19/858568/353891.terrain b/public/terrain/19/858568/353891.terrain new file mode 100644 index 000000000..a8fa02270 Binary files /dev/null and b/public/terrain/19/858568/353891.terrain differ diff --git a/public/terrain/19/858568/353892.terrain b/public/terrain/19/858568/353892.terrain new file mode 100644 index 000000000..c0cf27546 Binary files /dev/null and b/public/terrain/19/858568/353892.terrain differ diff --git a/public/terrain/19/858568/353893.terrain b/public/terrain/19/858568/353893.terrain new file mode 100644 index 000000000..1939665ff Binary files /dev/null and b/public/terrain/19/858568/353893.terrain differ diff --git a/public/terrain/19/858568/353894.terrain b/public/terrain/19/858568/353894.terrain new file mode 100644 index 000000000..19be51181 Binary files /dev/null and b/public/terrain/19/858568/353894.terrain differ diff --git a/public/terrain/19/858568/353895.terrain b/public/terrain/19/858568/353895.terrain new file mode 100644 index 000000000..d49e27667 Binary files /dev/null and b/public/terrain/19/858568/353895.terrain differ diff --git a/public/terrain/19/858568/353896.terrain b/public/terrain/19/858568/353896.terrain new file mode 100644 index 000000000..fca1f9133 Binary files /dev/null and b/public/terrain/19/858568/353896.terrain differ diff --git a/public/terrain/19/858568/353897.terrain b/public/terrain/19/858568/353897.terrain new file mode 100644 index 000000000..486be2282 Binary files /dev/null and b/public/terrain/19/858568/353897.terrain differ diff --git a/public/terrain/19/858568/353898.terrain b/public/terrain/19/858568/353898.terrain new file mode 100644 index 000000000..98187e5f6 Binary files /dev/null and b/public/terrain/19/858568/353898.terrain differ diff --git a/public/terrain/19/858568/353899.terrain b/public/terrain/19/858568/353899.terrain new file mode 100644 index 000000000..71cb1e4f0 Binary files /dev/null and b/public/terrain/19/858568/353899.terrain differ diff --git a/public/terrain/19/858568/353900.terrain b/public/terrain/19/858568/353900.terrain new file mode 100644 index 000000000..90a9989a6 Binary files /dev/null and b/public/terrain/19/858568/353900.terrain differ diff --git a/public/terrain/19/858568/353901.terrain b/public/terrain/19/858568/353901.terrain new file mode 100644 index 000000000..d1167306b Binary files /dev/null and b/public/terrain/19/858568/353901.terrain differ diff --git a/public/terrain/19/858568/353902.terrain b/public/terrain/19/858568/353902.terrain new file mode 100644 index 000000000..0e71d59ac Binary files /dev/null and b/public/terrain/19/858568/353902.terrain differ diff --git a/public/terrain/19/858568/353903.terrain b/public/terrain/19/858568/353903.terrain new file mode 100644 index 000000000..7a830d461 Binary files /dev/null and b/public/terrain/19/858568/353903.terrain differ diff --git a/public/terrain/19/858568/353904.terrain b/public/terrain/19/858568/353904.terrain new file mode 100644 index 000000000..4b236542d Binary files /dev/null and b/public/terrain/19/858568/353904.terrain differ diff --git a/public/terrain/19/858568/353905.terrain b/public/terrain/19/858568/353905.terrain new file mode 100644 index 000000000..ce1d5e23d Binary files /dev/null and b/public/terrain/19/858568/353905.terrain differ diff --git a/public/terrain/19/858568/353906.terrain b/public/terrain/19/858568/353906.terrain new file mode 100644 index 000000000..4c1bad29c Binary files /dev/null and b/public/terrain/19/858568/353906.terrain differ diff --git a/public/terrain/19/858568/353907.terrain b/public/terrain/19/858568/353907.terrain new file mode 100644 index 000000000..4ca7f5459 Binary files /dev/null and b/public/terrain/19/858568/353907.terrain differ diff --git a/public/terrain/19/858568/353908.terrain b/public/terrain/19/858568/353908.terrain new file mode 100644 index 000000000..0bd15cb8b Binary files /dev/null and b/public/terrain/19/858568/353908.terrain differ diff --git a/public/terrain/19/858568/353909.terrain b/public/terrain/19/858568/353909.terrain new file mode 100644 index 000000000..9e180b1f0 Binary files /dev/null and b/public/terrain/19/858568/353909.terrain differ diff --git a/public/terrain/19/858568/353910.terrain b/public/terrain/19/858568/353910.terrain new file mode 100644 index 000000000..ce16533a9 Binary files /dev/null and b/public/terrain/19/858568/353910.terrain differ diff --git a/public/terrain/19/858568/353911.terrain b/public/terrain/19/858568/353911.terrain new file mode 100644 index 000000000..620f681f3 Binary files /dev/null and b/public/terrain/19/858568/353911.terrain differ diff --git a/public/terrain/19/858568/353912.terrain b/public/terrain/19/858568/353912.terrain new file mode 100644 index 000000000..1eb9a20b9 Binary files /dev/null and b/public/terrain/19/858568/353912.terrain differ diff --git a/public/terrain/19/858568/353913.terrain b/public/terrain/19/858568/353913.terrain new file mode 100644 index 000000000..df18c1d0e Binary files /dev/null and b/public/terrain/19/858568/353913.terrain differ diff --git a/public/terrain/19/858568/353914.terrain b/public/terrain/19/858568/353914.terrain new file mode 100644 index 000000000..7d66a3af6 Binary files /dev/null and b/public/terrain/19/858568/353914.terrain differ diff --git a/public/terrain/19/858568/353915.terrain b/public/terrain/19/858568/353915.terrain new file mode 100644 index 000000000..01bb7b54f Binary files /dev/null and b/public/terrain/19/858568/353915.terrain differ diff --git a/public/terrain/19/858568/353916.terrain b/public/terrain/19/858568/353916.terrain new file mode 100644 index 000000000..327be436e Binary files /dev/null and b/public/terrain/19/858568/353916.terrain differ diff --git a/public/terrain/19/858568/353917.terrain b/public/terrain/19/858568/353917.terrain new file mode 100644 index 000000000..31cdea0b5 Binary files /dev/null and b/public/terrain/19/858568/353917.terrain differ diff --git a/public/terrain/19/858568/353918.terrain b/public/terrain/19/858568/353918.terrain new file mode 100644 index 000000000..d5c3310f4 Binary files /dev/null and b/public/terrain/19/858568/353918.terrain differ diff --git a/public/terrain/19/858568/353919.terrain b/public/terrain/19/858568/353919.terrain new file mode 100644 index 000000000..2c8e7fc48 Binary files /dev/null and b/public/terrain/19/858568/353919.terrain differ diff --git a/public/terrain/19/858568/353920.terrain b/public/terrain/19/858568/353920.terrain new file mode 100644 index 000000000..cb8f1410c Binary files /dev/null and b/public/terrain/19/858568/353920.terrain differ diff --git a/public/terrain/19/858568/353921.terrain b/public/terrain/19/858568/353921.terrain new file mode 100644 index 000000000..94da6aeb3 Binary files /dev/null and b/public/terrain/19/858568/353921.terrain differ diff --git a/public/terrain/19/858568/353922.terrain b/public/terrain/19/858568/353922.terrain new file mode 100644 index 000000000..6cabba3a0 Binary files /dev/null and b/public/terrain/19/858568/353922.terrain differ diff --git a/public/terrain/19/858568/353923.terrain b/public/terrain/19/858568/353923.terrain new file mode 100644 index 000000000..6329029e1 Binary files /dev/null and b/public/terrain/19/858568/353923.terrain differ diff --git a/public/terrain/19/858568/353924.terrain b/public/terrain/19/858568/353924.terrain new file mode 100644 index 000000000..fe042d9ec Binary files /dev/null and b/public/terrain/19/858568/353924.terrain differ diff --git a/public/terrain/19/858568/353925.terrain b/public/terrain/19/858568/353925.terrain new file mode 100644 index 000000000..36f5a3c46 Binary files /dev/null and b/public/terrain/19/858568/353925.terrain differ diff --git a/public/terrain/19/858568/353926.terrain b/public/terrain/19/858568/353926.terrain new file mode 100644 index 000000000..7a17cb675 Binary files /dev/null and b/public/terrain/19/858568/353926.terrain differ diff --git a/public/terrain/19/858568/353927.terrain b/public/terrain/19/858568/353927.terrain new file mode 100644 index 000000000..1f1b3bb0b Binary files /dev/null and b/public/terrain/19/858568/353927.terrain differ diff --git a/public/terrain/19/858568/353928.terrain b/public/terrain/19/858568/353928.terrain new file mode 100644 index 000000000..8fdf85c56 Binary files /dev/null and b/public/terrain/19/858568/353928.terrain differ diff --git a/public/terrain/19/858568/353929.terrain b/public/terrain/19/858568/353929.terrain new file mode 100644 index 000000000..0dff86220 Binary files /dev/null and b/public/terrain/19/858568/353929.terrain differ diff --git a/public/terrain/19/858568/353930.terrain b/public/terrain/19/858568/353930.terrain new file mode 100644 index 000000000..0b2c61e6f Binary files /dev/null and b/public/terrain/19/858568/353930.terrain differ diff --git a/public/terrain/19/858568/353931.terrain b/public/terrain/19/858568/353931.terrain new file mode 100644 index 000000000..fc08f26fa Binary files /dev/null and b/public/terrain/19/858568/353931.terrain differ diff --git a/public/terrain/19/858568/353932.terrain b/public/terrain/19/858568/353932.terrain new file mode 100644 index 000000000..987f4a02b Binary files /dev/null and b/public/terrain/19/858568/353932.terrain differ diff --git a/public/terrain/19/858568/353933.terrain b/public/terrain/19/858568/353933.terrain new file mode 100644 index 000000000..6031b9940 Binary files /dev/null and b/public/terrain/19/858568/353933.terrain differ diff --git a/public/terrain/19/858568/353934.terrain b/public/terrain/19/858568/353934.terrain new file mode 100644 index 000000000..2d075f355 Binary files /dev/null and b/public/terrain/19/858568/353934.terrain differ diff --git a/public/terrain/19/858568/353935.terrain b/public/terrain/19/858568/353935.terrain new file mode 100644 index 000000000..881b4b7b9 Binary files /dev/null and b/public/terrain/19/858568/353935.terrain differ diff --git a/public/terrain/19/858568/353936.terrain b/public/terrain/19/858568/353936.terrain new file mode 100644 index 000000000..cfe201893 Binary files /dev/null and b/public/terrain/19/858568/353936.terrain differ diff --git a/public/terrain/19/858568/353937.terrain b/public/terrain/19/858568/353937.terrain new file mode 100644 index 000000000..3eba0007b Binary files /dev/null and b/public/terrain/19/858568/353937.terrain differ diff --git a/public/terrain/19/858568/353938.terrain b/public/terrain/19/858568/353938.terrain new file mode 100644 index 000000000..ae3763bd6 Binary files /dev/null and b/public/terrain/19/858568/353938.terrain differ diff --git a/public/terrain/19/858568/353939.terrain b/public/terrain/19/858568/353939.terrain new file mode 100644 index 000000000..e30b73684 Binary files /dev/null and b/public/terrain/19/858568/353939.terrain differ diff --git a/public/terrain/19/858568/353940.terrain b/public/terrain/19/858568/353940.terrain new file mode 100644 index 000000000..8b0069a5e Binary files /dev/null and b/public/terrain/19/858568/353940.terrain differ diff --git a/public/terrain/19/858568/353941.terrain b/public/terrain/19/858568/353941.terrain new file mode 100644 index 000000000..6b9203fea Binary files /dev/null and b/public/terrain/19/858568/353941.terrain differ diff --git a/public/terrain/19/858568/353942.terrain b/public/terrain/19/858568/353942.terrain new file mode 100644 index 000000000..93ae151e6 Binary files /dev/null and b/public/terrain/19/858568/353942.terrain differ diff --git a/public/terrain/19/858568/353943.terrain b/public/terrain/19/858568/353943.terrain new file mode 100644 index 000000000..8541066ce Binary files /dev/null and b/public/terrain/19/858568/353943.terrain differ diff --git a/public/terrain/19/858568/353944.terrain b/public/terrain/19/858568/353944.terrain new file mode 100644 index 000000000..b6db26f7d Binary files /dev/null and b/public/terrain/19/858568/353944.terrain differ diff --git a/public/terrain/19/858568/353945.terrain b/public/terrain/19/858568/353945.terrain new file mode 100644 index 000000000..ef92158d6 Binary files /dev/null and b/public/terrain/19/858568/353945.terrain differ diff --git a/public/terrain/19/858568/353946.terrain b/public/terrain/19/858568/353946.terrain new file mode 100644 index 000000000..1ce29b00e Binary files /dev/null and b/public/terrain/19/858568/353946.terrain differ diff --git a/public/terrain/19/858568/353947.terrain b/public/terrain/19/858568/353947.terrain new file mode 100644 index 000000000..3c1b12e7b Binary files /dev/null and b/public/terrain/19/858568/353947.terrain differ diff --git a/public/terrain/19/858568/353948.terrain b/public/terrain/19/858568/353948.terrain new file mode 100644 index 000000000..ddd96ed1b Binary files /dev/null and b/public/terrain/19/858568/353948.terrain differ diff --git a/public/terrain/19/858568/353949.terrain b/public/terrain/19/858568/353949.terrain new file mode 100644 index 000000000..36e421dbb Binary files /dev/null and b/public/terrain/19/858568/353949.terrain differ diff --git a/public/terrain/19/858568/353950.terrain b/public/terrain/19/858568/353950.terrain new file mode 100644 index 000000000..a7f13435b Binary files /dev/null and b/public/terrain/19/858568/353950.terrain differ diff --git a/public/terrain/19/858568/353951.terrain b/public/terrain/19/858568/353951.terrain new file mode 100644 index 000000000..2e09f9c78 Binary files /dev/null and b/public/terrain/19/858568/353951.terrain differ diff --git a/public/terrain/19/858568/353952.terrain b/public/terrain/19/858568/353952.terrain new file mode 100644 index 000000000..3b538a4c9 Binary files /dev/null and b/public/terrain/19/858568/353952.terrain differ diff --git a/public/terrain/19/858568/353953.terrain b/public/terrain/19/858568/353953.terrain new file mode 100644 index 000000000..a0038ba5d Binary files /dev/null and b/public/terrain/19/858568/353953.terrain differ diff --git a/public/terrain/19/858568/353954.terrain b/public/terrain/19/858568/353954.terrain new file mode 100644 index 000000000..ba2f9a2c6 Binary files /dev/null and b/public/terrain/19/858568/353954.terrain differ diff --git a/public/terrain/19/858568/353955.terrain b/public/terrain/19/858568/353955.terrain new file mode 100644 index 000000000..e172a135c Binary files /dev/null and b/public/terrain/19/858568/353955.terrain differ diff --git a/public/terrain/19/858568/353956.terrain b/public/terrain/19/858568/353956.terrain new file mode 100644 index 000000000..e8023cf06 Binary files /dev/null and b/public/terrain/19/858568/353956.terrain differ diff --git a/public/terrain/19/858568/353957.terrain b/public/terrain/19/858568/353957.terrain new file mode 100644 index 000000000..e2b206070 Binary files /dev/null and b/public/terrain/19/858568/353957.terrain differ diff --git a/public/terrain/19/858568/353958.terrain b/public/terrain/19/858568/353958.terrain new file mode 100644 index 000000000..247683e79 Binary files /dev/null and b/public/terrain/19/858568/353958.terrain differ diff --git a/public/terrain/19/858568/353959.terrain b/public/terrain/19/858568/353959.terrain new file mode 100644 index 000000000..a47b7d74e Binary files /dev/null and b/public/terrain/19/858568/353959.terrain differ diff --git a/public/terrain/19/858568/353960.terrain b/public/terrain/19/858568/353960.terrain new file mode 100644 index 000000000..42108f6b3 Binary files /dev/null and b/public/terrain/19/858568/353960.terrain differ diff --git a/public/terrain/19/858568/353961.terrain b/public/terrain/19/858568/353961.terrain new file mode 100644 index 000000000..1640ec1a7 Binary files /dev/null and b/public/terrain/19/858568/353961.terrain differ diff --git a/public/terrain/19/858568/353962.terrain b/public/terrain/19/858568/353962.terrain new file mode 100644 index 000000000..c3f95baf1 Binary files /dev/null and b/public/terrain/19/858568/353962.terrain differ diff --git a/public/terrain/19/858568/353963.terrain b/public/terrain/19/858568/353963.terrain new file mode 100644 index 000000000..512cd1d96 Binary files /dev/null and b/public/terrain/19/858568/353963.terrain differ diff --git a/public/terrain/19/858568/353964.terrain b/public/terrain/19/858568/353964.terrain new file mode 100644 index 000000000..d0df21e65 Binary files /dev/null and b/public/terrain/19/858568/353964.terrain differ diff --git a/public/terrain/19/858568/353965.terrain b/public/terrain/19/858568/353965.terrain new file mode 100644 index 000000000..a1f80f80e Binary files /dev/null and b/public/terrain/19/858568/353965.terrain differ diff --git a/public/terrain/19/858568/353966.terrain b/public/terrain/19/858568/353966.terrain new file mode 100644 index 000000000..026b3f31e Binary files /dev/null and b/public/terrain/19/858568/353966.terrain differ diff --git a/public/terrain/19/858568/353967.terrain b/public/terrain/19/858568/353967.terrain new file mode 100644 index 000000000..10f740fb0 Binary files /dev/null and b/public/terrain/19/858568/353967.terrain differ diff --git a/public/terrain/19/858568/353968.terrain b/public/terrain/19/858568/353968.terrain new file mode 100644 index 000000000..ea452fb4c Binary files /dev/null and b/public/terrain/19/858568/353968.terrain differ diff --git a/public/terrain/19/858568/353969.terrain b/public/terrain/19/858568/353969.terrain new file mode 100644 index 000000000..f671760ee Binary files /dev/null and b/public/terrain/19/858568/353969.terrain differ diff --git a/public/terrain/19/858568/353970.terrain b/public/terrain/19/858568/353970.terrain new file mode 100644 index 000000000..753359e4a Binary files /dev/null and b/public/terrain/19/858568/353970.terrain differ diff --git a/public/terrain/19/858568/353971.terrain b/public/terrain/19/858568/353971.terrain new file mode 100644 index 000000000..3fa8b2580 Binary files /dev/null and b/public/terrain/19/858568/353971.terrain differ diff --git a/public/terrain/19/858568/353972.terrain b/public/terrain/19/858568/353972.terrain new file mode 100644 index 000000000..09315e690 Binary files /dev/null and b/public/terrain/19/858568/353972.terrain differ diff --git a/public/terrain/19/858568/353973.terrain b/public/terrain/19/858568/353973.terrain new file mode 100644 index 000000000..2f3f878a9 Binary files /dev/null and b/public/terrain/19/858568/353973.terrain differ diff --git a/public/terrain/19/858568/353974.terrain b/public/terrain/19/858568/353974.terrain new file mode 100644 index 000000000..f46c27b4f Binary files /dev/null and b/public/terrain/19/858568/353974.terrain differ diff --git a/public/terrain/19/858568/353975.terrain b/public/terrain/19/858568/353975.terrain new file mode 100644 index 000000000..3e4f4683c Binary files /dev/null and b/public/terrain/19/858568/353975.terrain differ diff --git a/public/terrain/19/858568/353976.terrain b/public/terrain/19/858568/353976.terrain new file mode 100644 index 000000000..8969cbf78 Binary files /dev/null and b/public/terrain/19/858568/353976.terrain differ diff --git a/public/terrain/19/858568/353977.terrain b/public/terrain/19/858568/353977.terrain new file mode 100644 index 000000000..01208b9f2 Binary files /dev/null and b/public/terrain/19/858568/353977.terrain differ diff --git a/public/terrain/19/858568/353978.terrain b/public/terrain/19/858568/353978.terrain new file mode 100644 index 000000000..07f33e21f Binary files /dev/null and b/public/terrain/19/858568/353978.terrain differ diff --git a/public/terrain/19/858568/353979.terrain b/public/terrain/19/858568/353979.terrain new file mode 100644 index 000000000..4f203be19 Binary files /dev/null and b/public/terrain/19/858568/353979.terrain differ diff --git a/public/terrain/19/858568/353980.terrain b/public/terrain/19/858568/353980.terrain new file mode 100644 index 000000000..a681b3791 Binary files /dev/null and b/public/terrain/19/858568/353980.terrain differ diff --git a/public/terrain/19/858568/353981.terrain b/public/terrain/19/858568/353981.terrain new file mode 100644 index 000000000..cb473ebfb Binary files /dev/null and b/public/terrain/19/858568/353981.terrain differ diff --git a/public/terrain/19/858568/353982.terrain b/public/terrain/19/858568/353982.terrain new file mode 100644 index 000000000..adaa875b9 Binary files /dev/null and b/public/terrain/19/858568/353982.terrain differ diff --git a/public/terrain/19/858568/353983.terrain b/public/terrain/19/858568/353983.terrain new file mode 100644 index 000000000..08a1e218d Binary files /dev/null and b/public/terrain/19/858568/353983.terrain differ diff --git a/public/terrain/19/858568/353984.terrain b/public/terrain/19/858568/353984.terrain new file mode 100644 index 000000000..2e45f8e40 Binary files /dev/null and b/public/terrain/19/858568/353984.terrain differ diff --git a/public/terrain/19/858568/353985.terrain b/public/terrain/19/858568/353985.terrain new file mode 100644 index 000000000..400fabf54 Binary files /dev/null and b/public/terrain/19/858568/353985.terrain differ diff --git a/public/terrain/19/858568/353986.terrain b/public/terrain/19/858568/353986.terrain new file mode 100644 index 000000000..94afed805 Binary files /dev/null and b/public/terrain/19/858568/353986.terrain differ diff --git a/public/terrain/19/858568/353987.terrain b/public/terrain/19/858568/353987.terrain new file mode 100644 index 000000000..cf8ceab11 Binary files /dev/null and b/public/terrain/19/858568/353987.terrain differ diff --git a/public/terrain/19/858568/353988.terrain b/public/terrain/19/858568/353988.terrain new file mode 100644 index 000000000..402daff88 Binary files /dev/null and b/public/terrain/19/858568/353988.terrain differ diff --git a/public/terrain/19/858568/353989.terrain b/public/terrain/19/858568/353989.terrain new file mode 100644 index 000000000..c5a48d575 Binary files /dev/null and b/public/terrain/19/858568/353989.terrain differ diff --git a/public/terrain/19/858568/353990.terrain b/public/terrain/19/858568/353990.terrain new file mode 100644 index 000000000..75ae3998f Binary files /dev/null and b/public/terrain/19/858568/353990.terrain differ diff --git a/public/terrain/19/858568/353991.terrain b/public/terrain/19/858568/353991.terrain new file mode 100644 index 000000000..18547af46 Binary files /dev/null and b/public/terrain/19/858568/353991.terrain differ diff --git a/public/terrain/19/858568/353992.terrain b/public/terrain/19/858568/353992.terrain new file mode 100644 index 000000000..ea20be6dd Binary files /dev/null and b/public/terrain/19/858568/353992.terrain differ diff --git a/public/terrain/19/858568/353993.terrain b/public/terrain/19/858568/353993.terrain new file mode 100644 index 000000000..b2b90669a Binary files /dev/null and b/public/terrain/19/858568/353993.terrain differ diff --git a/public/terrain/19/858568/353994.terrain b/public/terrain/19/858568/353994.terrain new file mode 100644 index 000000000..d3ff00968 Binary files /dev/null and b/public/terrain/19/858568/353994.terrain differ diff --git a/public/terrain/19/858568/353995.terrain b/public/terrain/19/858568/353995.terrain new file mode 100644 index 000000000..84e1ab545 Binary files /dev/null and b/public/terrain/19/858568/353995.terrain differ diff --git a/public/terrain/19/858568/353996.terrain b/public/terrain/19/858568/353996.terrain new file mode 100644 index 000000000..edf4c8ff8 Binary files /dev/null and b/public/terrain/19/858568/353996.terrain differ diff --git a/public/terrain/19/858568/353997.terrain b/public/terrain/19/858568/353997.terrain new file mode 100644 index 000000000..6d5b50f8b Binary files /dev/null and b/public/terrain/19/858568/353997.terrain differ diff --git a/public/terrain/19/858568/353998.terrain b/public/terrain/19/858568/353998.terrain new file mode 100644 index 000000000..2a6f256be Binary files /dev/null and b/public/terrain/19/858568/353998.terrain differ diff --git a/public/terrain/19/858568/353999.terrain b/public/terrain/19/858568/353999.terrain new file mode 100644 index 000000000..fe33b49d8 Binary files /dev/null and b/public/terrain/19/858568/353999.terrain differ diff --git a/public/terrain/19/858568/354000.terrain b/public/terrain/19/858568/354000.terrain new file mode 100644 index 000000000..ec0b315a1 Binary files /dev/null and b/public/terrain/19/858568/354000.terrain differ diff --git a/public/terrain/19/858568/354001.terrain b/public/terrain/19/858568/354001.terrain new file mode 100644 index 000000000..4e3a1388c Binary files /dev/null and b/public/terrain/19/858568/354001.terrain differ diff --git a/public/terrain/19/858568/354002.terrain b/public/terrain/19/858568/354002.terrain new file mode 100644 index 000000000..beb82344b Binary files /dev/null and b/public/terrain/19/858568/354002.terrain differ diff --git a/public/terrain/19/858568/354003.terrain b/public/terrain/19/858568/354003.terrain new file mode 100644 index 000000000..10aa5908a Binary files /dev/null and b/public/terrain/19/858568/354003.terrain differ diff --git a/public/terrain/19/858568/354004.terrain b/public/terrain/19/858568/354004.terrain new file mode 100644 index 000000000..b11323a2d Binary files /dev/null and b/public/terrain/19/858568/354004.terrain differ diff --git a/public/terrain/19/858568/354005.terrain b/public/terrain/19/858568/354005.terrain new file mode 100644 index 000000000..34a453f51 Binary files /dev/null and b/public/terrain/19/858568/354005.terrain differ diff --git a/public/terrain/19/858568/354006.terrain b/public/terrain/19/858568/354006.terrain new file mode 100644 index 000000000..ba39d2cb2 Binary files /dev/null and b/public/terrain/19/858568/354006.terrain differ diff --git a/public/terrain/19/858568/354007.terrain b/public/terrain/19/858568/354007.terrain new file mode 100644 index 000000000..fbf0f8230 Binary files /dev/null and b/public/terrain/19/858568/354007.terrain differ diff --git a/public/terrain/19/858568/354008.terrain b/public/terrain/19/858568/354008.terrain new file mode 100644 index 000000000..4768d3d8b Binary files /dev/null and b/public/terrain/19/858568/354008.terrain differ diff --git a/public/terrain/19/858568/354009.terrain b/public/terrain/19/858568/354009.terrain new file mode 100644 index 000000000..41d43b732 Binary files /dev/null and b/public/terrain/19/858568/354009.terrain differ diff --git a/public/terrain/19/858568/354010.terrain b/public/terrain/19/858568/354010.terrain new file mode 100644 index 000000000..a3c9120f2 Binary files /dev/null and b/public/terrain/19/858568/354010.terrain differ diff --git a/public/terrain/19/858568/354011.terrain b/public/terrain/19/858568/354011.terrain new file mode 100644 index 000000000..4462b8b93 Binary files /dev/null and b/public/terrain/19/858568/354011.terrain differ diff --git a/public/terrain/19/858568/354012.terrain b/public/terrain/19/858568/354012.terrain new file mode 100644 index 000000000..0c75236d9 Binary files /dev/null and b/public/terrain/19/858568/354012.terrain differ diff --git a/public/terrain/19/858568/354013.terrain b/public/terrain/19/858568/354013.terrain new file mode 100644 index 000000000..29e53084d Binary files /dev/null and b/public/terrain/19/858568/354013.terrain differ diff --git a/public/terrain/19/858568/354014.terrain b/public/terrain/19/858568/354014.terrain new file mode 100644 index 000000000..7bd1574fe Binary files /dev/null and b/public/terrain/19/858568/354014.terrain differ diff --git a/public/terrain/19/858568/354015.terrain b/public/terrain/19/858568/354015.terrain new file mode 100644 index 000000000..50294ac09 Binary files /dev/null and b/public/terrain/19/858568/354015.terrain differ diff --git a/public/terrain/19/858568/354016.terrain b/public/terrain/19/858568/354016.terrain new file mode 100644 index 000000000..acd97489a Binary files /dev/null and b/public/terrain/19/858568/354016.terrain differ diff --git a/public/terrain/19/858568/354017.terrain b/public/terrain/19/858568/354017.terrain new file mode 100644 index 000000000..d9f586b82 Binary files /dev/null and b/public/terrain/19/858568/354017.terrain differ diff --git a/public/terrain/19/858568/354018.terrain b/public/terrain/19/858568/354018.terrain new file mode 100644 index 000000000..8f177f05e Binary files /dev/null and b/public/terrain/19/858568/354018.terrain differ diff --git a/public/terrain/19/858568/354019.terrain b/public/terrain/19/858568/354019.terrain new file mode 100644 index 000000000..c8c0e8124 Binary files /dev/null and b/public/terrain/19/858568/354019.terrain differ diff --git a/public/terrain/19/858568/354020.terrain b/public/terrain/19/858568/354020.terrain new file mode 100644 index 000000000..7d4cdc859 Binary files /dev/null and b/public/terrain/19/858568/354020.terrain differ diff --git a/public/terrain/19/858568/354021.terrain b/public/terrain/19/858568/354021.terrain new file mode 100644 index 000000000..d7c6b93e6 Binary files /dev/null and b/public/terrain/19/858568/354021.terrain differ diff --git a/public/terrain/19/858568/354022.terrain b/public/terrain/19/858568/354022.terrain new file mode 100644 index 000000000..6d7ae0c6a Binary files /dev/null and b/public/terrain/19/858568/354022.terrain differ diff --git a/public/terrain/19/858568/354023.terrain b/public/terrain/19/858568/354023.terrain new file mode 100644 index 000000000..fa227362c Binary files /dev/null and b/public/terrain/19/858568/354023.terrain differ diff --git a/public/terrain/19/858568/354024.terrain b/public/terrain/19/858568/354024.terrain new file mode 100644 index 000000000..af12c5710 Binary files /dev/null and b/public/terrain/19/858568/354024.terrain differ diff --git a/public/terrain/19/858568/354025.terrain b/public/terrain/19/858568/354025.terrain new file mode 100644 index 000000000..b6879da0a Binary files /dev/null and b/public/terrain/19/858568/354025.terrain differ diff --git a/public/terrain/19/858568/354026.terrain b/public/terrain/19/858568/354026.terrain new file mode 100644 index 000000000..3e0c7ff0c Binary files /dev/null and b/public/terrain/19/858568/354026.terrain differ diff --git a/public/terrain/19/858568/354027.terrain b/public/terrain/19/858568/354027.terrain new file mode 100644 index 000000000..9e01a47c5 Binary files /dev/null and b/public/terrain/19/858568/354027.terrain differ diff --git a/public/terrain/19/858568/354028.terrain b/public/terrain/19/858568/354028.terrain new file mode 100644 index 000000000..5d9a0947c Binary files /dev/null and b/public/terrain/19/858568/354028.terrain differ diff --git a/public/terrain/19/858568/354029.terrain b/public/terrain/19/858568/354029.terrain new file mode 100644 index 000000000..bf1d08083 Binary files /dev/null and b/public/terrain/19/858568/354029.terrain differ diff --git a/public/terrain/19/858568/354030.terrain b/public/terrain/19/858568/354030.terrain new file mode 100644 index 000000000..50b966dee Binary files /dev/null and b/public/terrain/19/858568/354030.terrain differ diff --git a/public/terrain/19/858568/354031.terrain b/public/terrain/19/858568/354031.terrain new file mode 100644 index 000000000..5e7d4a579 Binary files /dev/null and b/public/terrain/19/858568/354031.terrain differ diff --git a/public/terrain/19/858568/354032.terrain b/public/terrain/19/858568/354032.terrain new file mode 100644 index 000000000..579a70907 Binary files /dev/null and b/public/terrain/19/858568/354032.terrain differ diff --git a/public/terrain/19/858568/354033.terrain b/public/terrain/19/858568/354033.terrain new file mode 100644 index 000000000..1ae2f170b Binary files /dev/null and b/public/terrain/19/858568/354033.terrain differ diff --git a/public/terrain/19/858568/354034.terrain b/public/terrain/19/858568/354034.terrain new file mode 100644 index 000000000..8301bc25b Binary files /dev/null and b/public/terrain/19/858568/354034.terrain differ diff --git a/public/terrain/19/858568/354035.terrain b/public/terrain/19/858568/354035.terrain new file mode 100644 index 000000000..b9bb4ce84 Binary files /dev/null and b/public/terrain/19/858568/354035.terrain differ diff --git a/public/terrain/19/858568/354036.terrain b/public/terrain/19/858568/354036.terrain new file mode 100644 index 000000000..c41f6e118 Binary files /dev/null and b/public/terrain/19/858568/354036.terrain differ diff --git a/public/terrain/19/858568/354037.terrain b/public/terrain/19/858568/354037.terrain new file mode 100644 index 000000000..840863e82 Binary files /dev/null and b/public/terrain/19/858568/354037.terrain differ diff --git a/public/terrain/19/858568/354038.terrain b/public/terrain/19/858568/354038.terrain new file mode 100644 index 000000000..11e2be9b7 Binary files /dev/null and b/public/terrain/19/858568/354038.terrain differ diff --git a/public/terrain/19/858568/354039.terrain b/public/terrain/19/858568/354039.terrain new file mode 100644 index 000000000..6080c67d7 Binary files /dev/null and b/public/terrain/19/858568/354039.terrain differ diff --git a/public/terrain/19/858568/354040.terrain b/public/terrain/19/858568/354040.terrain new file mode 100644 index 000000000..efba946d3 Binary files /dev/null and b/public/terrain/19/858568/354040.terrain differ diff --git a/public/terrain/19/858568/354041.terrain b/public/terrain/19/858568/354041.terrain new file mode 100644 index 000000000..9375387d7 Binary files /dev/null and b/public/terrain/19/858568/354041.terrain differ diff --git a/public/terrain/19/858568/354042.terrain b/public/terrain/19/858568/354042.terrain new file mode 100644 index 000000000..ecc2727ce Binary files /dev/null and b/public/terrain/19/858568/354042.terrain differ diff --git a/public/terrain/19/858568/354043.terrain b/public/terrain/19/858568/354043.terrain new file mode 100644 index 000000000..0be7d684f Binary files /dev/null and b/public/terrain/19/858568/354043.terrain differ diff --git a/public/terrain/19/858568/354044.terrain b/public/terrain/19/858568/354044.terrain new file mode 100644 index 000000000..564e675fe Binary files /dev/null and b/public/terrain/19/858568/354044.terrain differ diff --git a/public/terrain/19/858568/354045.terrain b/public/terrain/19/858568/354045.terrain new file mode 100644 index 000000000..b2dd55b4b Binary files /dev/null and b/public/terrain/19/858568/354045.terrain differ diff --git a/public/terrain/19/858568/354046.terrain b/public/terrain/19/858568/354046.terrain new file mode 100644 index 000000000..4e94cd7f0 Binary files /dev/null and b/public/terrain/19/858568/354046.terrain differ diff --git a/public/terrain/19/858568/354047.terrain b/public/terrain/19/858568/354047.terrain new file mode 100644 index 000000000..fb2dd65c6 Binary files /dev/null and b/public/terrain/19/858568/354047.terrain differ diff --git a/public/terrain/19/858568/354048.terrain b/public/terrain/19/858568/354048.terrain new file mode 100644 index 000000000..2c9cbbb28 Binary files /dev/null and b/public/terrain/19/858568/354048.terrain differ diff --git a/public/terrain/19/858568/354049.terrain b/public/terrain/19/858568/354049.terrain new file mode 100644 index 000000000..9c4f2d360 Binary files /dev/null and b/public/terrain/19/858568/354049.terrain differ diff --git a/public/terrain/19/858568/354050.terrain b/public/terrain/19/858568/354050.terrain new file mode 100644 index 000000000..c4dee615b Binary files /dev/null and b/public/terrain/19/858568/354050.terrain differ diff --git a/public/terrain/19/858568/354051.terrain b/public/terrain/19/858568/354051.terrain new file mode 100644 index 000000000..cf089bd8e Binary files /dev/null and b/public/terrain/19/858568/354051.terrain differ diff --git a/public/terrain/19/858568/354052.terrain b/public/terrain/19/858568/354052.terrain new file mode 100644 index 000000000..dc646522c Binary files /dev/null and b/public/terrain/19/858568/354052.terrain differ diff --git a/public/terrain/19/858568/354053.terrain b/public/terrain/19/858568/354053.terrain new file mode 100644 index 000000000..aa2cdd89d Binary files /dev/null and b/public/terrain/19/858568/354053.terrain differ diff --git a/public/terrain/19/858568/354054.terrain b/public/terrain/19/858568/354054.terrain new file mode 100644 index 000000000..bee2921f3 Binary files /dev/null and b/public/terrain/19/858568/354054.terrain differ diff --git a/public/terrain/19/858568/354055.terrain b/public/terrain/19/858568/354055.terrain new file mode 100644 index 000000000..c9597f218 Binary files /dev/null and b/public/terrain/19/858568/354055.terrain differ diff --git a/public/terrain/19/858568/354056.terrain b/public/terrain/19/858568/354056.terrain new file mode 100644 index 000000000..06d97d9fc Binary files /dev/null and b/public/terrain/19/858568/354056.terrain differ diff --git a/public/terrain/19/858568/354057.terrain b/public/terrain/19/858568/354057.terrain new file mode 100644 index 000000000..9c1414867 Binary files /dev/null and b/public/terrain/19/858568/354057.terrain differ diff --git a/public/terrain/19/858568/354058.terrain b/public/terrain/19/858568/354058.terrain new file mode 100644 index 000000000..ae87c9cdb Binary files /dev/null and b/public/terrain/19/858568/354058.terrain differ diff --git a/public/terrain/19/858568/354059.terrain b/public/terrain/19/858568/354059.terrain new file mode 100644 index 000000000..55dcfc91b Binary files /dev/null and b/public/terrain/19/858568/354059.terrain differ diff --git a/public/terrain/19/858569/353743.terrain b/public/terrain/19/858569/353743.terrain new file mode 100644 index 000000000..6b9551a4a Binary files /dev/null and b/public/terrain/19/858569/353743.terrain differ diff --git a/public/terrain/19/858569/353744.terrain b/public/terrain/19/858569/353744.terrain new file mode 100644 index 000000000..827889d03 Binary files /dev/null and b/public/terrain/19/858569/353744.terrain differ diff --git a/public/terrain/19/858569/353745.terrain b/public/terrain/19/858569/353745.terrain new file mode 100644 index 000000000..4ffc6ee35 Binary files /dev/null and b/public/terrain/19/858569/353745.terrain differ diff --git a/public/terrain/19/858569/353746.terrain b/public/terrain/19/858569/353746.terrain new file mode 100644 index 000000000..1ba851f49 Binary files /dev/null and b/public/terrain/19/858569/353746.terrain differ diff --git a/public/terrain/19/858569/353747.terrain b/public/terrain/19/858569/353747.terrain new file mode 100644 index 000000000..9454c101b Binary files /dev/null and b/public/terrain/19/858569/353747.terrain differ diff --git a/public/terrain/19/858569/353748.terrain b/public/terrain/19/858569/353748.terrain new file mode 100644 index 000000000..20416df04 Binary files /dev/null and b/public/terrain/19/858569/353748.terrain differ diff --git a/public/terrain/19/858569/353749.terrain b/public/terrain/19/858569/353749.terrain new file mode 100644 index 000000000..0fc59468e Binary files /dev/null and b/public/terrain/19/858569/353749.terrain differ diff --git a/public/terrain/19/858569/353750.terrain b/public/terrain/19/858569/353750.terrain new file mode 100644 index 000000000..dfbaef6f1 Binary files /dev/null and b/public/terrain/19/858569/353750.terrain differ diff --git a/public/terrain/19/858569/353751.terrain b/public/terrain/19/858569/353751.terrain new file mode 100644 index 000000000..e3eb292c7 Binary files /dev/null and b/public/terrain/19/858569/353751.terrain differ diff --git a/public/terrain/19/858569/353752.terrain b/public/terrain/19/858569/353752.terrain new file mode 100644 index 000000000..21b1b3132 Binary files /dev/null and b/public/terrain/19/858569/353752.terrain differ diff --git a/public/terrain/19/858569/353753.terrain b/public/terrain/19/858569/353753.terrain new file mode 100644 index 000000000..8bdc43155 Binary files /dev/null and b/public/terrain/19/858569/353753.terrain differ diff --git a/public/terrain/19/858569/353754.terrain b/public/terrain/19/858569/353754.terrain new file mode 100644 index 000000000..ba4a85ec6 Binary files /dev/null and b/public/terrain/19/858569/353754.terrain differ diff --git a/public/terrain/19/858569/353755.terrain b/public/terrain/19/858569/353755.terrain new file mode 100644 index 000000000..7a4c0c7f0 Binary files /dev/null and b/public/terrain/19/858569/353755.terrain differ diff --git a/public/terrain/19/858569/353756.terrain b/public/terrain/19/858569/353756.terrain new file mode 100644 index 000000000..5d2a9364d Binary files /dev/null and b/public/terrain/19/858569/353756.terrain differ diff --git a/public/terrain/19/858569/353757.terrain b/public/terrain/19/858569/353757.terrain new file mode 100644 index 000000000..09a3cc0d5 Binary files /dev/null and b/public/terrain/19/858569/353757.terrain differ diff --git a/public/terrain/19/858569/353758.terrain b/public/terrain/19/858569/353758.terrain new file mode 100644 index 000000000..c79744940 Binary files /dev/null and b/public/terrain/19/858569/353758.terrain differ diff --git a/public/terrain/19/858569/353759.terrain b/public/terrain/19/858569/353759.terrain new file mode 100644 index 000000000..4b0e022f5 Binary files /dev/null and b/public/terrain/19/858569/353759.terrain differ diff --git a/public/terrain/19/858569/353760.terrain b/public/terrain/19/858569/353760.terrain new file mode 100644 index 000000000..0247925a0 Binary files /dev/null and b/public/terrain/19/858569/353760.terrain differ diff --git a/public/terrain/19/858569/353761.terrain b/public/terrain/19/858569/353761.terrain new file mode 100644 index 000000000..be1f2a31d Binary files /dev/null and b/public/terrain/19/858569/353761.terrain differ diff --git a/public/terrain/19/858569/353762.terrain b/public/terrain/19/858569/353762.terrain new file mode 100644 index 000000000..8aaa2f119 Binary files /dev/null and b/public/terrain/19/858569/353762.terrain differ diff --git a/public/terrain/19/858569/353763.terrain b/public/terrain/19/858569/353763.terrain new file mode 100644 index 000000000..82b5c8a1a Binary files /dev/null and b/public/terrain/19/858569/353763.terrain differ diff --git a/public/terrain/19/858569/353764.terrain b/public/terrain/19/858569/353764.terrain new file mode 100644 index 000000000..5192cf934 Binary files /dev/null and b/public/terrain/19/858569/353764.terrain differ diff --git a/public/terrain/19/858569/353765.terrain b/public/terrain/19/858569/353765.terrain new file mode 100644 index 000000000..fc757d720 Binary files /dev/null and b/public/terrain/19/858569/353765.terrain differ diff --git a/public/terrain/19/858569/353766.terrain b/public/terrain/19/858569/353766.terrain new file mode 100644 index 000000000..36b85775c Binary files /dev/null and b/public/terrain/19/858569/353766.terrain differ diff --git a/public/terrain/19/858569/353767.terrain b/public/terrain/19/858569/353767.terrain new file mode 100644 index 000000000..23fc2d18f Binary files /dev/null and b/public/terrain/19/858569/353767.terrain differ diff --git a/public/terrain/19/858569/353768.terrain b/public/terrain/19/858569/353768.terrain new file mode 100644 index 000000000..d1a182393 Binary files /dev/null and b/public/terrain/19/858569/353768.terrain differ diff --git a/public/terrain/19/858569/353769.terrain b/public/terrain/19/858569/353769.terrain new file mode 100644 index 000000000..1231cd9b5 Binary files /dev/null and b/public/terrain/19/858569/353769.terrain differ diff --git a/public/terrain/19/858569/353770.terrain b/public/terrain/19/858569/353770.terrain new file mode 100644 index 000000000..bc1b84e4f Binary files /dev/null and b/public/terrain/19/858569/353770.terrain differ diff --git a/public/terrain/19/858569/353771.terrain b/public/terrain/19/858569/353771.terrain new file mode 100644 index 000000000..b3cc136be Binary files /dev/null and b/public/terrain/19/858569/353771.terrain differ diff --git a/public/terrain/19/858569/353772.terrain b/public/terrain/19/858569/353772.terrain new file mode 100644 index 000000000..8c5587aaf Binary files /dev/null and b/public/terrain/19/858569/353772.terrain differ diff --git a/public/terrain/19/858569/353773.terrain b/public/terrain/19/858569/353773.terrain new file mode 100644 index 000000000..ddd9f79da Binary files /dev/null and b/public/terrain/19/858569/353773.terrain differ diff --git a/public/terrain/19/858569/353774.terrain b/public/terrain/19/858569/353774.terrain new file mode 100644 index 000000000..76fc42532 Binary files /dev/null and b/public/terrain/19/858569/353774.terrain differ diff --git a/public/terrain/19/858569/353775.terrain b/public/terrain/19/858569/353775.terrain new file mode 100644 index 000000000..aa78d66a7 Binary files /dev/null and b/public/terrain/19/858569/353775.terrain differ diff --git a/public/terrain/19/858569/353776.terrain b/public/terrain/19/858569/353776.terrain new file mode 100644 index 000000000..6bc91ce91 Binary files /dev/null and b/public/terrain/19/858569/353776.terrain differ diff --git a/public/terrain/19/858569/353777.terrain b/public/terrain/19/858569/353777.terrain new file mode 100644 index 000000000..086da5ac7 Binary files /dev/null and b/public/terrain/19/858569/353777.terrain differ diff --git a/public/terrain/19/858569/353778.terrain b/public/terrain/19/858569/353778.terrain new file mode 100644 index 000000000..8b7044e58 Binary files /dev/null and b/public/terrain/19/858569/353778.terrain differ diff --git a/public/terrain/19/858569/353779.terrain b/public/terrain/19/858569/353779.terrain new file mode 100644 index 000000000..a26dab750 Binary files /dev/null and b/public/terrain/19/858569/353779.terrain differ diff --git a/public/terrain/19/858569/353780.terrain b/public/terrain/19/858569/353780.terrain new file mode 100644 index 000000000..d71998e66 Binary files /dev/null and b/public/terrain/19/858569/353780.terrain differ diff --git a/public/terrain/19/858569/353781.terrain b/public/terrain/19/858569/353781.terrain new file mode 100644 index 000000000..4152eaa4b Binary files /dev/null and b/public/terrain/19/858569/353781.terrain differ diff --git a/public/terrain/19/858569/353782.terrain b/public/terrain/19/858569/353782.terrain new file mode 100644 index 000000000..0afadac9f Binary files /dev/null and b/public/terrain/19/858569/353782.terrain differ diff --git a/public/terrain/19/858569/353783.terrain b/public/terrain/19/858569/353783.terrain new file mode 100644 index 000000000..7e6aedac5 Binary files /dev/null and b/public/terrain/19/858569/353783.terrain differ diff --git a/public/terrain/19/858569/353784.terrain b/public/terrain/19/858569/353784.terrain new file mode 100644 index 000000000..7b1876ffe Binary files /dev/null and b/public/terrain/19/858569/353784.terrain differ diff --git a/public/terrain/19/858569/353785.terrain b/public/terrain/19/858569/353785.terrain new file mode 100644 index 000000000..32cc8a31d Binary files /dev/null and b/public/terrain/19/858569/353785.terrain differ diff --git a/public/terrain/19/858569/353786.terrain b/public/terrain/19/858569/353786.terrain new file mode 100644 index 000000000..76a972259 Binary files /dev/null and b/public/terrain/19/858569/353786.terrain differ diff --git a/public/terrain/19/858569/353787.terrain b/public/terrain/19/858569/353787.terrain new file mode 100644 index 000000000..9879b9d18 Binary files /dev/null and b/public/terrain/19/858569/353787.terrain differ diff --git a/public/terrain/19/858569/353788.terrain b/public/terrain/19/858569/353788.terrain new file mode 100644 index 000000000..17b02101f Binary files /dev/null and b/public/terrain/19/858569/353788.terrain differ diff --git a/public/terrain/19/858569/353789.terrain b/public/terrain/19/858569/353789.terrain new file mode 100644 index 000000000..614bc69f0 Binary files /dev/null and b/public/terrain/19/858569/353789.terrain differ diff --git a/public/terrain/19/858569/353790.terrain b/public/terrain/19/858569/353790.terrain new file mode 100644 index 000000000..9651522c6 Binary files /dev/null and b/public/terrain/19/858569/353790.terrain differ diff --git a/public/terrain/19/858569/353791.terrain b/public/terrain/19/858569/353791.terrain new file mode 100644 index 000000000..b3c2aa2f2 Binary files /dev/null and b/public/terrain/19/858569/353791.terrain differ diff --git a/public/terrain/19/858569/353792.terrain b/public/terrain/19/858569/353792.terrain new file mode 100644 index 000000000..a5350c974 Binary files /dev/null and b/public/terrain/19/858569/353792.terrain differ diff --git a/public/terrain/19/858569/353793.terrain b/public/terrain/19/858569/353793.terrain new file mode 100644 index 000000000..4707dabf1 Binary files /dev/null and b/public/terrain/19/858569/353793.terrain differ diff --git a/public/terrain/19/858569/353794.terrain b/public/terrain/19/858569/353794.terrain new file mode 100644 index 000000000..818dbd54d Binary files /dev/null and b/public/terrain/19/858569/353794.terrain differ diff --git a/public/terrain/19/858569/353795.terrain b/public/terrain/19/858569/353795.terrain new file mode 100644 index 000000000..82cd29852 Binary files /dev/null and b/public/terrain/19/858569/353795.terrain differ diff --git a/public/terrain/19/858569/353796.terrain b/public/terrain/19/858569/353796.terrain new file mode 100644 index 000000000..210dbc489 Binary files /dev/null and b/public/terrain/19/858569/353796.terrain differ diff --git a/public/terrain/19/858569/353797.terrain b/public/terrain/19/858569/353797.terrain new file mode 100644 index 000000000..f57ae3885 Binary files /dev/null and b/public/terrain/19/858569/353797.terrain differ diff --git a/public/terrain/19/858569/353798.terrain b/public/terrain/19/858569/353798.terrain new file mode 100644 index 000000000..69542049e Binary files /dev/null and b/public/terrain/19/858569/353798.terrain differ diff --git a/public/terrain/19/858569/353799.terrain b/public/terrain/19/858569/353799.terrain new file mode 100644 index 000000000..aef43d10d Binary files /dev/null and b/public/terrain/19/858569/353799.terrain differ diff --git a/public/terrain/19/858569/353800.terrain b/public/terrain/19/858569/353800.terrain new file mode 100644 index 000000000..b6f498dda Binary files /dev/null and b/public/terrain/19/858569/353800.terrain differ diff --git a/public/terrain/19/858569/353801.terrain b/public/terrain/19/858569/353801.terrain new file mode 100644 index 000000000..15365ec3e Binary files /dev/null and b/public/terrain/19/858569/353801.terrain differ diff --git a/public/terrain/19/858569/353802.terrain b/public/terrain/19/858569/353802.terrain new file mode 100644 index 000000000..18069c952 Binary files /dev/null and b/public/terrain/19/858569/353802.terrain differ diff --git a/public/terrain/19/858569/353803.terrain b/public/terrain/19/858569/353803.terrain new file mode 100644 index 000000000..d84dc137e Binary files /dev/null and b/public/terrain/19/858569/353803.terrain differ diff --git a/public/terrain/19/858569/353804.terrain b/public/terrain/19/858569/353804.terrain new file mode 100644 index 000000000..e1f725ce5 Binary files /dev/null and b/public/terrain/19/858569/353804.terrain differ diff --git a/public/terrain/19/858569/353805.terrain b/public/terrain/19/858569/353805.terrain new file mode 100644 index 000000000..7d30f19cd Binary files /dev/null and b/public/terrain/19/858569/353805.terrain differ diff --git a/public/terrain/19/858569/353806.terrain b/public/terrain/19/858569/353806.terrain new file mode 100644 index 000000000..8ed945f8e Binary files /dev/null and b/public/terrain/19/858569/353806.terrain differ diff --git a/public/terrain/19/858569/353807.terrain b/public/terrain/19/858569/353807.terrain new file mode 100644 index 000000000..4fdb6d99a Binary files /dev/null and b/public/terrain/19/858569/353807.terrain differ diff --git a/public/terrain/19/858569/353808.terrain b/public/terrain/19/858569/353808.terrain new file mode 100644 index 000000000..5e0dc61f5 Binary files /dev/null and b/public/terrain/19/858569/353808.terrain differ diff --git a/public/terrain/19/858569/353809.terrain b/public/terrain/19/858569/353809.terrain new file mode 100644 index 000000000..7b3a35ace Binary files /dev/null and b/public/terrain/19/858569/353809.terrain differ diff --git a/public/terrain/19/858569/353810.terrain b/public/terrain/19/858569/353810.terrain new file mode 100644 index 000000000..11bb60831 Binary files /dev/null and b/public/terrain/19/858569/353810.terrain differ diff --git a/public/terrain/19/858569/353811.terrain b/public/terrain/19/858569/353811.terrain new file mode 100644 index 000000000..4fd56b3a8 Binary files /dev/null and b/public/terrain/19/858569/353811.terrain differ diff --git a/public/terrain/19/858569/353812.terrain b/public/terrain/19/858569/353812.terrain new file mode 100644 index 000000000..601290c54 Binary files /dev/null and b/public/terrain/19/858569/353812.terrain differ diff --git a/public/terrain/19/858569/353813.terrain b/public/terrain/19/858569/353813.terrain new file mode 100644 index 000000000..2f4c87ba9 Binary files /dev/null and b/public/terrain/19/858569/353813.terrain differ diff --git a/public/terrain/19/858569/353814.terrain b/public/terrain/19/858569/353814.terrain new file mode 100644 index 000000000..89b4583b4 Binary files /dev/null and b/public/terrain/19/858569/353814.terrain differ diff --git a/public/terrain/19/858569/353815.terrain b/public/terrain/19/858569/353815.terrain new file mode 100644 index 000000000..096b266f6 Binary files /dev/null and b/public/terrain/19/858569/353815.terrain differ diff --git a/public/terrain/19/858569/353816.terrain b/public/terrain/19/858569/353816.terrain new file mode 100644 index 000000000..e60eee874 Binary files /dev/null and b/public/terrain/19/858569/353816.terrain differ diff --git a/public/terrain/19/858569/353817.terrain b/public/terrain/19/858569/353817.terrain new file mode 100644 index 000000000..4464a310a Binary files /dev/null and b/public/terrain/19/858569/353817.terrain differ diff --git a/public/terrain/19/858569/353818.terrain b/public/terrain/19/858569/353818.terrain new file mode 100644 index 000000000..af0071601 Binary files /dev/null and b/public/terrain/19/858569/353818.terrain differ diff --git a/public/terrain/19/858569/353819.terrain b/public/terrain/19/858569/353819.terrain new file mode 100644 index 000000000..3a399353d Binary files /dev/null and b/public/terrain/19/858569/353819.terrain differ diff --git a/public/terrain/19/858569/353820.terrain b/public/terrain/19/858569/353820.terrain new file mode 100644 index 000000000..9fa36a7da Binary files /dev/null and b/public/terrain/19/858569/353820.terrain differ diff --git a/public/terrain/19/858569/353821.terrain b/public/terrain/19/858569/353821.terrain new file mode 100644 index 000000000..dd30d5769 Binary files /dev/null and b/public/terrain/19/858569/353821.terrain differ diff --git a/public/terrain/19/858569/353822.terrain b/public/terrain/19/858569/353822.terrain new file mode 100644 index 000000000..618f3ec42 Binary files /dev/null and b/public/terrain/19/858569/353822.terrain differ diff --git a/public/terrain/19/858569/353823.terrain b/public/terrain/19/858569/353823.terrain new file mode 100644 index 000000000..d8910d9e2 Binary files /dev/null and b/public/terrain/19/858569/353823.terrain differ diff --git a/public/terrain/19/858569/353824.terrain b/public/terrain/19/858569/353824.terrain new file mode 100644 index 000000000..19352ce9f Binary files /dev/null and b/public/terrain/19/858569/353824.terrain differ diff --git a/public/terrain/19/858569/353825.terrain b/public/terrain/19/858569/353825.terrain new file mode 100644 index 000000000..14c03e399 Binary files /dev/null and b/public/terrain/19/858569/353825.terrain differ diff --git a/public/terrain/19/858569/353826.terrain b/public/terrain/19/858569/353826.terrain new file mode 100644 index 000000000..892fd218d Binary files /dev/null and b/public/terrain/19/858569/353826.terrain differ diff --git a/public/terrain/19/858569/353827.terrain b/public/terrain/19/858569/353827.terrain new file mode 100644 index 000000000..437f970b5 Binary files /dev/null and b/public/terrain/19/858569/353827.terrain differ diff --git a/public/terrain/19/858569/353828.terrain b/public/terrain/19/858569/353828.terrain new file mode 100644 index 000000000..d8b1e57f0 Binary files /dev/null and b/public/terrain/19/858569/353828.terrain differ diff --git a/public/terrain/19/858569/353829.terrain b/public/terrain/19/858569/353829.terrain new file mode 100644 index 000000000..7b3992fd9 Binary files /dev/null and b/public/terrain/19/858569/353829.terrain differ diff --git a/public/terrain/19/858569/353830.terrain b/public/terrain/19/858569/353830.terrain new file mode 100644 index 000000000..617650c50 Binary files /dev/null and b/public/terrain/19/858569/353830.terrain differ diff --git a/public/terrain/19/858569/353831.terrain b/public/terrain/19/858569/353831.terrain new file mode 100644 index 000000000..372617f22 Binary files /dev/null and b/public/terrain/19/858569/353831.terrain differ diff --git a/public/terrain/19/858569/353832.terrain b/public/terrain/19/858569/353832.terrain new file mode 100644 index 000000000..6b1e18810 Binary files /dev/null and b/public/terrain/19/858569/353832.terrain differ diff --git a/public/terrain/19/858569/353833.terrain b/public/terrain/19/858569/353833.terrain new file mode 100644 index 000000000..c093c1d3e Binary files /dev/null and b/public/terrain/19/858569/353833.terrain differ diff --git a/public/terrain/19/858569/353834.terrain b/public/terrain/19/858569/353834.terrain new file mode 100644 index 000000000..e1187bb53 Binary files /dev/null and b/public/terrain/19/858569/353834.terrain differ diff --git a/public/terrain/19/858569/353835.terrain b/public/terrain/19/858569/353835.terrain new file mode 100644 index 000000000..53892e73c Binary files /dev/null and b/public/terrain/19/858569/353835.terrain differ diff --git a/public/terrain/19/858569/353836.terrain b/public/terrain/19/858569/353836.terrain new file mode 100644 index 000000000..cbfd42bd0 Binary files /dev/null and b/public/terrain/19/858569/353836.terrain differ diff --git a/public/terrain/19/858569/353837.terrain b/public/terrain/19/858569/353837.terrain new file mode 100644 index 000000000..44da92e18 Binary files /dev/null and b/public/terrain/19/858569/353837.terrain differ diff --git a/public/terrain/19/858569/353838.terrain b/public/terrain/19/858569/353838.terrain new file mode 100644 index 000000000..372718c8f Binary files /dev/null and b/public/terrain/19/858569/353838.terrain differ diff --git a/public/terrain/19/858569/353839.terrain b/public/terrain/19/858569/353839.terrain new file mode 100644 index 000000000..782dceb1c Binary files /dev/null and b/public/terrain/19/858569/353839.terrain differ diff --git a/public/terrain/19/858569/353840.terrain b/public/terrain/19/858569/353840.terrain new file mode 100644 index 000000000..2cae792db Binary files /dev/null and b/public/terrain/19/858569/353840.terrain differ diff --git a/public/terrain/19/858569/353841.terrain b/public/terrain/19/858569/353841.terrain new file mode 100644 index 000000000..e97f8b1d6 Binary files /dev/null and b/public/terrain/19/858569/353841.terrain differ diff --git a/public/terrain/19/858569/353842.terrain b/public/terrain/19/858569/353842.terrain new file mode 100644 index 000000000..aa6c80a09 Binary files /dev/null and b/public/terrain/19/858569/353842.terrain differ diff --git a/public/terrain/19/858569/353843.terrain b/public/terrain/19/858569/353843.terrain new file mode 100644 index 000000000..09ef3e49c Binary files /dev/null and b/public/terrain/19/858569/353843.terrain differ diff --git a/public/terrain/19/858569/353844.terrain b/public/terrain/19/858569/353844.terrain new file mode 100644 index 000000000..1d7835e8f Binary files /dev/null and b/public/terrain/19/858569/353844.terrain differ diff --git a/public/terrain/19/858569/353845.terrain b/public/terrain/19/858569/353845.terrain new file mode 100644 index 000000000..7cc5946bd Binary files /dev/null and b/public/terrain/19/858569/353845.terrain differ diff --git a/public/terrain/19/858569/353846.terrain b/public/terrain/19/858569/353846.terrain new file mode 100644 index 000000000..3d6c98062 Binary files /dev/null and b/public/terrain/19/858569/353846.terrain differ diff --git a/public/terrain/19/858569/353847.terrain b/public/terrain/19/858569/353847.terrain new file mode 100644 index 000000000..2fce9ede5 Binary files /dev/null and b/public/terrain/19/858569/353847.terrain differ diff --git a/public/terrain/19/858569/353848.terrain b/public/terrain/19/858569/353848.terrain new file mode 100644 index 000000000..f7f2c7f13 Binary files /dev/null and b/public/terrain/19/858569/353848.terrain differ diff --git a/public/terrain/19/858569/353849.terrain b/public/terrain/19/858569/353849.terrain new file mode 100644 index 000000000..00b3a4a27 Binary files /dev/null and b/public/terrain/19/858569/353849.terrain differ diff --git a/public/terrain/19/858569/353850.terrain b/public/terrain/19/858569/353850.terrain new file mode 100644 index 000000000..559734d71 Binary files /dev/null and b/public/terrain/19/858569/353850.terrain differ diff --git a/public/terrain/19/858569/353851.terrain b/public/terrain/19/858569/353851.terrain new file mode 100644 index 000000000..2f55f2890 Binary files /dev/null and b/public/terrain/19/858569/353851.terrain differ diff --git a/public/terrain/19/858569/353852.terrain b/public/terrain/19/858569/353852.terrain new file mode 100644 index 000000000..c205e438d Binary files /dev/null and b/public/terrain/19/858569/353852.terrain differ diff --git a/public/terrain/19/858569/353853.terrain b/public/terrain/19/858569/353853.terrain new file mode 100644 index 000000000..305b1fe69 Binary files /dev/null and b/public/terrain/19/858569/353853.terrain differ diff --git a/public/terrain/19/858569/353854.terrain b/public/terrain/19/858569/353854.terrain new file mode 100644 index 000000000..d81c98154 Binary files /dev/null and b/public/terrain/19/858569/353854.terrain differ diff --git a/public/terrain/19/858569/353855.terrain b/public/terrain/19/858569/353855.terrain new file mode 100644 index 000000000..d72465ca7 Binary files /dev/null and b/public/terrain/19/858569/353855.terrain differ diff --git a/public/terrain/19/858569/353856.terrain b/public/terrain/19/858569/353856.terrain new file mode 100644 index 000000000..6194396b4 Binary files /dev/null and b/public/terrain/19/858569/353856.terrain differ diff --git a/public/terrain/19/858569/353857.terrain b/public/terrain/19/858569/353857.terrain new file mode 100644 index 000000000..5392c2b0f Binary files /dev/null and b/public/terrain/19/858569/353857.terrain differ diff --git a/public/terrain/19/858569/353858.terrain b/public/terrain/19/858569/353858.terrain new file mode 100644 index 000000000..4c3f06ca0 Binary files /dev/null and b/public/terrain/19/858569/353858.terrain differ diff --git a/public/terrain/19/858569/353859.terrain b/public/terrain/19/858569/353859.terrain new file mode 100644 index 000000000..80d9925da Binary files /dev/null and b/public/terrain/19/858569/353859.terrain differ diff --git a/public/terrain/19/858569/353860.terrain b/public/terrain/19/858569/353860.terrain new file mode 100644 index 000000000..fb3037a5c Binary files /dev/null and b/public/terrain/19/858569/353860.terrain differ diff --git a/public/terrain/19/858569/353861.terrain b/public/terrain/19/858569/353861.terrain new file mode 100644 index 000000000..e47485d04 Binary files /dev/null and b/public/terrain/19/858569/353861.terrain differ diff --git a/public/terrain/19/858569/353862.terrain b/public/terrain/19/858569/353862.terrain new file mode 100644 index 000000000..96cf8940e Binary files /dev/null and b/public/terrain/19/858569/353862.terrain differ diff --git a/public/terrain/19/858569/353863.terrain b/public/terrain/19/858569/353863.terrain new file mode 100644 index 000000000..b3751867f Binary files /dev/null and b/public/terrain/19/858569/353863.terrain differ diff --git a/public/terrain/19/858569/353864.terrain b/public/terrain/19/858569/353864.terrain new file mode 100644 index 000000000..23b15eda9 Binary files /dev/null and b/public/terrain/19/858569/353864.terrain differ diff --git a/public/terrain/19/858569/353865.terrain b/public/terrain/19/858569/353865.terrain new file mode 100644 index 000000000..17bcd542f Binary files /dev/null and b/public/terrain/19/858569/353865.terrain differ diff --git a/public/terrain/19/858569/353866.terrain b/public/terrain/19/858569/353866.terrain new file mode 100644 index 000000000..b387552da Binary files /dev/null and b/public/terrain/19/858569/353866.terrain differ diff --git a/public/terrain/19/858569/353867.terrain b/public/terrain/19/858569/353867.terrain new file mode 100644 index 000000000..6cb2dfb80 Binary files /dev/null and b/public/terrain/19/858569/353867.terrain differ diff --git a/public/terrain/19/858569/353868.terrain b/public/terrain/19/858569/353868.terrain new file mode 100644 index 000000000..ce7786fe4 Binary files /dev/null and b/public/terrain/19/858569/353868.terrain differ diff --git a/public/terrain/19/858569/353869.terrain b/public/terrain/19/858569/353869.terrain new file mode 100644 index 000000000..f55f78eb3 Binary files /dev/null and b/public/terrain/19/858569/353869.terrain differ diff --git a/public/terrain/19/858569/353870.terrain b/public/terrain/19/858569/353870.terrain new file mode 100644 index 000000000..7f0ac5f13 Binary files /dev/null and b/public/terrain/19/858569/353870.terrain differ diff --git a/public/terrain/19/858569/353871.terrain b/public/terrain/19/858569/353871.terrain new file mode 100644 index 000000000..17837dd17 Binary files /dev/null and b/public/terrain/19/858569/353871.terrain differ diff --git a/public/terrain/19/858569/353872.terrain b/public/terrain/19/858569/353872.terrain new file mode 100644 index 000000000..f876f58b6 Binary files /dev/null and b/public/terrain/19/858569/353872.terrain differ diff --git a/public/terrain/19/858569/353873.terrain b/public/terrain/19/858569/353873.terrain new file mode 100644 index 000000000..c1025a45c Binary files /dev/null and b/public/terrain/19/858569/353873.terrain differ diff --git a/public/terrain/19/858569/353874.terrain b/public/terrain/19/858569/353874.terrain new file mode 100644 index 000000000..eedaf8139 Binary files /dev/null and b/public/terrain/19/858569/353874.terrain differ diff --git a/public/terrain/19/858569/353875.terrain b/public/terrain/19/858569/353875.terrain new file mode 100644 index 000000000..425febc8b Binary files /dev/null and b/public/terrain/19/858569/353875.terrain differ diff --git a/public/terrain/19/858569/353876.terrain b/public/terrain/19/858569/353876.terrain new file mode 100644 index 000000000..c118db4e5 Binary files /dev/null and b/public/terrain/19/858569/353876.terrain differ diff --git a/public/terrain/19/858569/353877.terrain b/public/terrain/19/858569/353877.terrain new file mode 100644 index 000000000..c87f1033d Binary files /dev/null and b/public/terrain/19/858569/353877.terrain differ diff --git a/public/terrain/19/858569/353878.terrain b/public/terrain/19/858569/353878.terrain new file mode 100644 index 000000000..fa8252004 Binary files /dev/null and b/public/terrain/19/858569/353878.terrain differ diff --git a/public/terrain/19/858569/353879.terrain b/public/terrain/19/858569/353879.terrain new file mode 100644 index 000000000..d89e2dbc0 Binary files /dev/null and b/public/terrain/19/858569/353879.terrain differ diff --git a/public/terrain/19/858569/353880.terrain b/public/terrain/19/858569/353880.terrain new file mode 100644 index 000000000..4e69358dd Binary files /dev/null and b/public/terrain/19/858569/353880.terrain differ diff --git a/public/terrain/19/858569/353881.terrain b/public/terrain/19/858569/353881.terrain new file mode 100644 index 000000000..e5e26082a Binary files /dev/null and b/public/terrain/19/858569/353881.terrain differ diff --git a/public/terrain/19/858569/353882.terrain b/public/terrain/19/858569/353882.terrain new file mode 100644 index 000000000..a94ab2cbf Binary files /dev/null and b/public/terrain/19/858569/353882.terrain differ diff --git a/public/terrain/19/858569/353883.terrain b/public/terrain/19/858569/353883.terrain new file mode 100644 index 000000000..fcfd0036d Binary files /dev/null and b/public/terrain/19/858569/353883.terrain differ diff --git a/public/terrain/19/858569/353884.terrain b/public/terrain/19/858569/353884.terrain new file mode 100644 index 000000000..8a1e8ae1c Binary files /dev/null and b/public/terrain/19/858569/353884.terrain differ diff --git a/public/terrain/19/858569/353885.terrain b/public/terrain/19/858569/353885.terrain new file mode 100644 index 000000000..ec3b36fda Binary files /dev/null and b/public/terrain/19/858569/353885.terrain differ diff --git a/public/terrain/19/858569/353886.terrain b/public/terrain/19/858569/353886.terrain new file mode 100644 index 000000000..1096c9a42 Binary files /dev/null and b/public/terrain/19/858569/353886.terrain differ diff --git a/public/terrain/19/858569/353887.terrain b/public/terrain/19/858569/353887.terrain new file mode 100644 index 000000000..e00aae07f Binary files /dev/null and b/public/terrain/19/858569/353887.terrain differ diff --git a/public/terrain/19/858569/353888.terrain b/public/terrain/19/858569/353888.terrain new file mode 100644 index 000000000..c9276174a Binary files /dev/null and b/public/terrain/19/858569/353888.terrain differ diff --git a/public/terrain/19/858569/353889.terrain b/public/terrain/19/858569/353889.terrain new file mode 100644 index 000000000..fcceddd6b Binary files /dev/null and b/public/terrain/19/858569/353889.terrain differ diff --git a/public/terrain/19/858569/353890.terrain b/public/terrain/19/858569/353890.terrain new file mode 100644 index 000000000..9188ab34a Binary files /dev/null and b/public/terrain/19/858569/353890.terrain differ diff --git a/public/terrain/19/858569/353891.terrain b/public/terrain/19/858569/353891.terrain new file mode 100644 index 000000000..79aa395ed Binary files /dev/null and b/public/terrain/19/858569/353891.terrain differ diff --git a/public/terrain/19/858569/353892.terrain b/public/terrain/19/858569/353892.terrain new file mode 100644 index 000000000..61e6614dd Binary files /dev/null and b/public/terrain/19/858569/353892.terrain differ diff --git a/public/terrain/19/858569/353893.terrain b/public/terrain/19/858569/353893.terrain new file mode 100644 index 000000000..9835da81e Binary files /dev/null and b/public/terrain/19/858569/353893.terrain differ diff --git a/public/terrain/19/858569/353894.terrain b/public/terrain/19/858569/353894.terrain new file mode 100644 index 000000000..ef9e04fe1 Binary files /dev/null and b/public/terrain/19/858569/353894.terrain differ diff --git a/public/terrain/19/858569/353895.terrain b/public/terrain/19/858569/353895.terrain new file mode 100644 index 000000000..3bfa87252 Binary files /dev/null and b/public/terrain/19/858569/353895.terrain differ diff --git a/public/terrain/19/858569/353896.terrain b/public/terrain/19/858569/353896.terrain new file mode 100644 index 000000000..08305234f Binary files /dev/null and b/public/terrain/19/858569/353896.terrain differ diff --git a/public/terrain/19/858569/353897.terrain b/public/terrain/19/858569/353897.terrain new file mode 100644 index 000000000..3877b6803 Binary files /dev/null and b/public/terrain/19/858569/353897.terrain differ diff --git a/public/terrain/19/858569/353898.terrain b/public/terrain/19/858569/353898.terrain new file mode 100644 index 000000000..cd78ee367 Binary files /dev/null and b/public/terrain/19/858569/353898.terrain differ diff --git a/public/terrain/19/858569/353899.terrain b/public/terrain/19/858569/353899.terrain new file mode 100644 index 000000000..26c593684 Binary files /dev/null and b/public/terrain/19/858569/353899.terrain differ diff --git a/public/terrain/19/858569/353900.terrain b/public/terrain/19/858569/353900.terrain new file mode 100644 index 000000000..4c735442e Binary files /dev/null and b/public/terrain/19/858569/353900.terrain differ diff --git a/public/terrain/19/858569/353901.terrain b/public/terrain/19/858569/353901.terrain new file mode 100644 index 000000000..ae3ea01a3 Binary files /dev/null and b/public/terrain/19/858569/353901.terrain differ diff --git a/public/terrain/19/858569/353902.terrain b/public/terrain/19/858569/353902.terrain new file mode 100644 index 000000000..dfd0b0937 Binary files /dev/null and b/public/terrain/19/858569/353902.terrain differ diff --git a/public/terrain/19/858569/353903.terrain b/public/terrain/19/858569/353903.terrain new file mode 100644 index 000000000..5f8b77a14 Binary files /dev/null and b/public/terrain/19/858569/353903.terrain differ diff --git a/public/terrain/19/858569/353904.terrain b/public/terrain/19/858569/353904.terrain new file mode 100644 index 000000000..8eaa954d8 Binary files /dev/null and b/public/terrain/19/858569/353904.terrain differ diff --git a/public/terrain/19/858569/353905.terrain b/public/terrain/19/858569/353905.terrain new file mode 100644 index 000000000..7999e94b7 Binary files /dev/null and b/public/terrain/19/858569/353905.terrain differ diff --git a/public/terrain/19/858569/353906.terrain b/public/terrain/19/858569/353906.terrain new file mode 100644 index 000000000..16eafc98e Binary files /dev/null and b/public/terrain/19/858569/353906.terrain differ diff --git a/public/terrain/19/858569/353907.terrain b/public/terrain/19/858569/353907.terrain new file mode 100644 index 000000000..b90945770 Binary files /dev/null and b/public/terrain/19/858569/353907.terrain differ diff --git a/public/terrain/19/858569/353908.terrain b/public/terrain/19/858569/353908.terrain new file mode 100644 index 000000000..7bf9967d8 Binary files /dev/null and b/public/terrain/19/858569/353908.terrain differ diff --git a/public/terrain/19/858569/353909.terrain b/public/terrain/19/858569/353909.terrain new file mode 100644 index 000000000..19138b4d5 Binary files /dev/null and b/public/terrain/19/858569/353909.terrain differ diff --git a/public/terrain/19/858569/353910.terrain b/public/terrain/19/858569/353910.terrain new file mode 100644 index 000000000..d907e4ba8 Binary files /dev/null and b/public/terrain/19/858569/353910.terrain differ diff --git a/public/terrain/19/858569/353911.terrain b/public/terrain/19/858569/353911.terrain new file mode 100644 index 000000000..bfcbdcb0f Binary files /dev/null and b/public/terrain/19/858569/353911.terrain differ diff --git a/public/terrain/19/858569/353912.terrain b/public/terrain/19/858569/353912.terrain new file mode 100644 index 000000000..39129f3aa Binary files /dev/null and b/public/terrain/19/858569/353912.terrain differ diff --git a/public/terrain/19/858569/353913.terrain b/public/terrain/19/858569/353913.terrain new file mode 100644 index 000000000..78ba3226e Binary files /dev/null and b/public/terrain/19/858569/353913.terrain differ diff --git a/public/terrain/19/858569/353914.terrain b/public/terrain/19/858569/353914.terrain new file mode 100644 index 000000000..d871e6f85 Binary files /dev/null and b/public/terrain/19/858569/353914.terrain differ diff --git a/public/terrain/19/858569/353915.terrain b/public/terrain/19/858569/353915.terrain new file mode 100644 index 000000000..ef9062175 Binary files /dev/null and b/public/terrain/19/858569/353915.terrain differ diff --git a/public/terrain/19/858569/353916.terrain b/public/terrain/19/858569/353916.terrain new file mode 100644 index 000000000..4bdd53c57 Binary files /dev/null and b/public/terrain/19/858569/353916.terrain differ diff --git a/public/terrain/19/858569/353917.terrain b/public/terrain/19/858569/353917.terrain new file mode 100644 index 000000000..cc54532d5 Binary files /dev/null and b/public/terrain/19/858569/353917.terrain differ diff --git a/public/terrain/19/858569/353918.terrain b/public/terrain/19/858569/353918.terrain new file mode 100644 index 000000000..2a0be880d Binary files /dev/null and b/public/terrain/19/858569/353918.terrain differ diff --git a/public/terrain/19/858569/353919.terrain b/public/terrain/19/858569/353919.terrain new file mode 100644 index 000000000..804fadf6d Binary files /dev/null and b/public/terrain/19/858569/353919.terrain differ diff --git a/public/terrain/19/858569/353920.terrain b/public/terrain/19/858569/353920.terrain new file mode 100644 index 000000000..b55d1a769 Binary files /dev/null and b/public/terrain/19/858569/353920.terrain differ diff --git a/public/terrain/19/858569/353921.terrain b/public/terrain/19/858569/353921.terrain new file mode 100644 index 000000000..d522cb939 Binary files /dev/null and b/public/terrain/19/858569/353921.terrain differ diff --git a/public/terrain/19/858569/353922.terrain b/public/terrain/19/858569/353922.terrain new file mode 100644 index 000000000..e9c4eebcb Binary files /dev/null and b/public/terrain/19/858569/353922.terrain differ diff --git a/public/terrain/19/858569/353923.terrain b/public/terrain/19/858569/353923.terrain new file mode 100644 index 000000000..62f531fa2 Binary files /dev/null and b/public/terrain/19/858569/353923.terrain differ diff --git a/public/terrain/19/858569/353924.terrain b/public/terrain/19/858569/353924.terrain new file mode 100644 index 000000000..9ccb66091 Binary files /dev/null and b/public/terrain/19/858569/353924.terrain differ diff --git a/public/terrain/19/858569/353925.terrain b/public/terrain/19/858569/353925.terrain new file mode 100644 index 000000000..400fdcaf5 Binary files /dev/null and b/public/terrain/19/858569/353925.terrain differ diff --git a/public/terrain/19/858569/353926.terrain b/public/terrain/19/858569/353926.terrain new file mode 100644 index 000000000..bdc65c921 Binary files /dev/null and b/public/terrain/19/858569/353926.terrain differ diff --git a/public/terrain/19/858569/353927.terrain b/public/terrain/19/858569/353927.terrain new file mode 100644 index 000000000..e56a18d75 Binary files /dev/null and b/public/terrain/19/858569/353927.terrain differ diff --git a/public/terrain/19/858569/353928.terrain b/public/terrain/19/858569/353928.terrain new file mode 100644 index 000000000..dbc783cc5 Binary files /dev/null and b/public/terrain/19/858569/353928.terrain differ diff --git a/public/terrain/19/858569/353929.terrain b/public/terrain/19/858569/353929.terrain new file mode 100644 index 000000000..8d06827eb Binary files /dev/null and b/public/terrain/19/858569/353929.terrain differ diff --git a/public/terrain/19/858569/353930.terrain b/public/terrain/19/858569/353930.terrain new file mode 100644 index 000000000..8965d0ac3 Binary files /dev/null and b/public/terrain/19/858569/353930.terrain differ diff --git a/public/terrain/19/858569/353931.terrain b/public/terrain/19/858569/353931.terrain new file mode 100644 index 000000000..66e2b2037 Binary files /dev/null and b/public/terrain/19/858569/353931.terrain differ diff --git a/public/terrain/19/858569/353932.terrain b/public/terrain/19/858569/353932.terrain new file mode 100644 index 000000000..eb9ad9dcc Binary files /dev/null and b/public/terrain/19/858569/353932.terrain differ diff --git a/public/terrain/19/858569/353933.terrain b/public/terrain/19/858569/353933.terrain new file mode 100644 index 000000000..31e4f72dd Binary files /dev/null and b/public/terrain/19/858569/353933.terrain differ diff --git a/public/terrain/19/858569/353934.terrain b/public/terrain/19/858569/353934.terrain new file mode 100644 index 000000000..1ae3e7bdf Binary files /dev/null and b/public/terrain/19/858569/353934.terrain differ diff --git a/public/terrain/19/858569/353935.terrain b/public/terrain/19/858569/353935.terrain new file mode 100644 index 000000000..7fe0bf09a Binary files /dev/null and b/public/terrain/19/858569/353935.terrain differ diff --git a/public/terrain/19/858569/353936.terrain b/public/terrain/19/858569/353936.terrain new file mode 100644 index 000000000..41aeb263d Binary files /dev/null and b/public/terrain/19/858569/353936.terrain differ diff --git a/public/terrain/19/858569/353937.terrain b/public/terrain/19/858569/353937.terrain new file mode 100644 index 000000000..7876bda35 Binary files /dev/null and b/public/terrain/19/858569/353937.terrain differ diff --git a/public/terrain/19/858569/353938.terrain b/public/terrain/19/858569/353938.terrain new file mode 100644 index 000000000..9e07a0cd1 Binary files /dev/null and b/public/terrain/19/858569/353938.terrain differ diff --git a/public/terrain/19/858569/353939.terrain b/public/terrain/19/858569/353939.terrain new file mode 100644 index 000000000..46e18c7ac Binary files /dev/null and b/public/terrain/19/858569/353939.terrain differ diff --git a/public/terrain/19/858569/353940.terrain b/public/terrain/19/858569/353940.terrain new file mode 100644 index 000000000..b625c80cd Binary files /dev/null and b/public/terrain/19/858569/353940.terrain differ diff --git a/public/terrain/19/858569/353941.terrain b/public/terrain/19/858569/353941.terrain new file mode 100644 index 000000000..de9905101 Binary files /dev/null and b/public/terrain/19/858569/353941.terrain differ diff --git a/public/terrain/19/858569/353942.terrain b/public/terrain/19/858569/353942.terrain new file mode 100644 index 000000000..9e08576d4 Binary files /dev/null and b/public/terrain/19/858569/353942.terrain differ diff --git a/public/terrain/19/858569/353943.terrain b/public/terrain/19/858569/353943.terrain new file mode 100644 index 000000000..f93232f3f Binary files /dev/null and b/public/terrain/19/858569/353943.terrain differ diff --git a/public/terrain/19/858569/353944.terrain b/public/terrain/19/858569/353944.terrain new file mode 100644 index 000000000..828b6841c Binary files /dev/null and b/public/terrain/19/858569/353944.terrain differ diff --git a/public/terrain/19/858569/353945.terrain b/public/terrain/19/858569/353945.terrain new file mode 100644 index 000000000..70ea0799c Binary files /dev/null and b/public/terrain/19/858569/353945.terrain differ diff --git a/public/terrain/19/858569/353946.terrain b/public/terrain/19/858569/353946.terrain new file mode 100644 index 000000000..8eb124229 Binary files /dev/null and b/public/terrain/19/858569/353946.terrain differ diff --git a/public/terrain/19/858569/353947.terrain b/public/terrain/19/858569/353947.terrain new file mode 100644 index 000000000..38d0d5861 Binary files /dev/null and b/public/terrain/19/858569/353947.terrain differ diff --git a/public/terrain/19/858569/353948.terrain b/public/terrain/19/858569/353948.terrain new file mode 100644 index 000000000..65f6df492 Binary files /dev/null and b/public/terrain/19/858569/353948.terrain differ diff --git a/public/terrain/19/858569/353949.terrain b/public/terrain/19/858569/353949.terrain new file mode 100644 index 000000000..ffa309f15 Binary files /dev/null and b/public/terrain/19/858569/353949.terrain differ diff --git a/public/terrain/19/858569/353950.terrain b/public/terrain/19/858569/353950.terrain new file mode 100644 index 000000000..61906604f Binary files /dev/null and b/public/terrain/19/858569/353950.terrain differ diff --git a/public/terrain/19/858569/353951.terrain b/public/terrain/19/858569/353951.terrain new file mode 100644 index 000000000..b705ddf05 Binary files /dev/null and b/public/terrain/19/858569/353951.terrain differ diff --git a/public/terrain/19/858569/353952.terrain b/public/terrain/19/858569/353952.terrain new file mode 100644 index 000000000..a813601a5 Binary files /dev/null and b/public/terrain/19/858569/353952.terrain differ diff --git a/public/terrain/19/858569/353953.terrain b/public/terrain/19/858569/353953.terrain new file mode 100644 index 000000000..5ae11ab64 Binary files /dev/null and b/public/terrain/19/858569/353953.terrain differ diff --git a/public/terrain/19/858569/353954.terrain b/public/terrain/19/858569/353954.terrain new file mode 100644 index 000000000..da78b291e Binary files /dev/null and b/public/terrain/19/858569/353954.terrain differ diff --git a/public/terrain/19/858569/353955.terrain b/public/terrain/19/858569/353955.terrain new file mode 100644 index 000000000..a481f628c Binary files /dev/null and b/public/terrain/19/858569/353955.terrain differ diff --git a/public/terrain/19/858569/353956.terrain b/public/terrain/19/858569/353956.terrain new file mode 100644 index 000000000..7183e8c87 Binary files /dev/null and b/public/terrain/19/858569/353956.terrain differ diff --git a/public/terrain/19/858569/353957.terrain b/public/terrain/19/858569/353957.terrain new file mode 100644 index 000000000..4be3ae5b9 Binary files /dev/null and b/public/terrain/19/858569/353957.terrain differ diff --git a/public/terrain/19/858569/353958.terrain b/public/terrain/19/858569/353958.terrain new file mode 100644 index 000000000..1e4e3b50d Binary files /dev/null and b/public/terrain/19/858569/353958.terrain differ diff --git a/public/terrain/19/858569/353959.terrain b/public/terrain/19/858569/353959.terrain new file mode 100644 index 000000000..147ff4919 Binary files /dev/null and b/public/terrain/19/858569/353959.terrain differ diff --git a/public/terrain/19/858569/353960.terrain b/public/terrain/19/858569/353960.terrain new file mode 100644 index 000000000..9274c224a Binary files /dev/null and b/public/terrain/19/858569/353960.terrain differ diff --git a/public/terrain/19/858569/353961.terrain b/public/terrain/19/858569/353961.terrain new file mode 100644 index 000000000..db5a98c99 Binary files /dev/null and b/public/terrain/19/858569/353961.terrain differ diff --git a/public/terrain/19/858569/353962.terrain b/public/terrain/19/858569/353962.terrain new file mode 100644 index 000000000..fcb5e2312 Binary files /dev/null and b/public/terrain/19/858569/353962.terrain differ diff --git a/public/terrain/19/858569/353963.terrain b/public/terrain/19/858569/353963.terrain new file mode 100644 index 000000000..b1249e0e2 Binary files /dev/null and b/public/terrain/19/858569/353963.terrain differ diff --git a/public/terrain/19/858569/353964.terrain b/public/terrain/19/858569/353964.terrain new file mode 100644 index 000000000..02c3258fe Binary files /dev/null and b/public/terrain/19/858569/353964.terrain differ diff --git a/public/terrain/19/858569/353965.terrain b/public/terrain/19/858569/353965.terrain new file mode 100644 index 000000000..2e3d79385 Binary files /dev/null and b/public/terrain/19/858569/353965.terrain differ diff --git a/public/terrain/19/858569/353966.terrain b/public/terrain/19/858569/353966.terrain new file mode 100644 index 000000000..fa67b97ef Binary files /dev/null and b/public/terrain/19/858569/353966.terrain differ diff --git a/public/terrain/19/858569/353967.terrain b/public/terrain/19/858569/353967.terrain new file mode 100644 index 000000000..44d189b63 Binary files /dev/null and b/public/terrain/19/858569/353967.terrain differ diff --git a/public/terrain/19/858569/353968.terrain b/public/terrain/19/858569/353968.terrain new file mode 100644 index 000000000..2cf884d24 Binary files /dev/null and b/public/terrain/19/858569/353968.terrain differ diff --git a/public/terrain/19/858569/353969.terrain b/public/terrain/19/858569/353969.terrain new file mode 100644 index 000000000..8194ba4a1 Binary files /dev/null and b/public/terrain/19/858569/353969.terrain differ diff --git a/public/terrain/19/858569/353970.terrain b/public/terrain/19/858569/353970.terrain new file mode 100644 index 000000000..e391dc7ef Binary files /dev/null and b/public/terrain/19/858569/353970.terrain differ diff --git a/public/terrain/19/858569/353971.terrain b/public/terrain/19/858569/353971.terrain new file mode 100644 index 000000000..ad7f30090 Binary files /dev/null and b/public/terrain/19/858569/353971.terrain differ diff --git a/public/terrain/19/858569/353972.terrain b/public/terrain/19/858569/353972.terrain new file mode 100644 index 000000000..e33ed0c62 Binary files /dev/null and b/public/terrain/19/858569/353972.terrain differ diff --git a/public/terrain/19/858569/353973.terrain b/public/terrain/19/858569/353973.terrain new file mode 100644 index 000000000..b2bb09065 Binary files /dev/null and b/public/terrain/19/858569/353973.terrain differ diff --git a/public/terrain/19/858569/353974.terrain b/public/terrain/19/858569/353974.terrain new file mode 100644 index 000000000..eb13960aa Binary files /dev/null and b/public/terrain/19/858569/353974.terrain differ diff --git a/public/terrain/19/858569/353975.terrain b/public/terrain/19/858569/353975.terrain new file mode 100644 index 000000000..196aaabfe Binary files /dev/null and b/public/terrain/19/858569/353975.terrain differ diff --git a/public/terrain/19/858569/353976.terrain b/public/terrain/19/858569/353976.terrain new file mode 100644 index 000000000..de902e4d7 Binary files /dev/null and b/public/terrain/19/858569/353976.terrain differ diff --git a/public/terrain/19/858569/353977.terrain b/public/terrain/19/858569/353977.terrain new file mode 100644 index 000000000..a4f220b18 Binary files /dev/null and b/public/terrain/19/858569/353977.terrain differ diff --git a/public/terrain/19/858569/353978.terrain b/public/terrain/19/858569/353978.terrain new file mode 100644 index 000000000..e73e53657 Binary files /dev/null and b/public/terrain/19/858569/353978.terrain differ diff --git a/public/terrain/19/858569/353979.terrain b/public/terrain/19/858569/353979.terrain new file mode 100644 index 000000000..32189a602 Binary files /dev/null and b/public/terrain/19/858569/353979.terrain differ diff --git a/public/terrain/19/858569/353980.terrain b/public/terrain/19/858569/353980.terrain new file mode 100644 index 000000000..d58661bc0 Binary files /dev/null and b/public/terrain/19/858569/353980.terrain differ diff --git a/public/terrain/19/858569/353981.terrain b/public/terrain/19/858569/353981.terrain new file mode 100644 index 000000000..91fd22c43 Binary files /dev/null and b/public/terrain/19/858569/353981.terrain differ diff --git a/public/terrain/19/858569/353982.terrain b/public/terrain/19/858569/353982.terrain new file mode 100644 index 000000000..8087870ee Binary files /dev/null and b/public/terrain/19/858569/353982.terrain differ diff --git a/public/terrain/19/858569/353983.terrain b/public/terrain/19/858569/353983.terrain new file mode 100644 index 000000000..fbfdc14d3 Binary files /dev/null and b/public/terrain/19/858569/353983.terrain differ diff --git a/public/terrain/19/858569/353984.terrain b/public/terrain/19/858569/353984.terrain new file mode 100644 index 000000000..12accfbcd Binary files /dev/null and b/public/terrain/19/858569/353984.terrain differ diff --git a/public/terrain/19/858569/353985.terrain b/public/terrain/19/858569/353985.terrain new file mode 100644 index 000000000..63f13cc40 Binary files /dev/null and b/public/terrain/19/858569/353985.terrain differ diff --git a/public/terrain/19/858569/353986.terrain b/public/terrain/19/858569/353986.terrain new file mode 100644 index 000000000..dc572ef06 Binary files /dev/null and b/public/terrain/19/858569/353986.terrain differ diff --git a/public/terrain/19/858569/353987.terrain b/public/terrain/19/858569/353987.terrain new file mode 100644 index 000000000..ca16f7b68 Binary files /dev/null and b/public/terrain/19/858569/353987.terrain differ diff --git a/public/terrain/19/858569/353988.terrain b/public/terrain/19/858569/353988.terrain new file mode 100644 index 000000000..b6cc444f5 Binary files /dev/null and b/public/terrain/19/858569/353988.terrain differ diff --git a/public/terrain/19/858569/353989.terrain b/public/terrain/19/858569/353989.terrain new file mode 100644 index 000000000..e9ceb192a Binary files /dev/null and b/public/terrain/19/858569/353989.terrain differ diff --git a/public/terrain/19/858569/353990.terrain b/public/terrain/19/858569/353990.terrain new file mode 100644 index 000000000..985d9af7f Binary files /dev/null and b/public/terrain/19/858569/353990.terrain differ diff --git a/public/terrain/19/858569/353991.terrain b/public/terrain/19/858569/353991.terrain new file mode 100644 index 000000000..b5a32bfde Binary files /dev/null and b/public/terrain/19/858569/353991.terrain differ diff --git a/public/terrain/19/858569/353992.terrain b/public/terrain/19/858569/353992.terrain new file mode 100644 index 000000000..371a46250 Binary files /dev/null and b/public/terrain/19/858569/353992.terrain differ diff --git a/public/terrain/19/858569/353993.terrain b/public/terrain/19/858569/353993.terrain new file mode 100644 index 000000000..2555ded12 Binary files /dev/null and b/public/terrain/19/858569/353993.terrain differ diff --git a/public/terrain/19/858569/353994.terrain b/public/terrain/19/858569/353994.terrain new file mode 100644 index 000000000..30032bb82 Binary files /dev/null and b/public/terrain/19/858569/353994.terrain differ diff --git a/public/terrain/19/858569/353995.terrain b/public/terrain/19/858569/353995.terrain new file mode 100644 index 000000000..53cf4d707 Binary files /dev/null and b/public/terrain/19/858569/353995.terrain differ diff --git a/public/terrain/19/858569/353996.terrain b/public/terrain/19/858569/353996.terrain new file mode 100644 index 000000000..c2d974921 Binary files /dev/null and b/public/terrain/19/858569/353996.terrain differ diff --git a/public/terrain/19/858569/353997.terrain b/public/terrain/19/858569/353997.terrain new file mode 100644 index 000000000..01faabcbb Binary files /dev/null and b/public/terrain/19/858569/353997.terrain differ diff --git a/public/terrain/19/858569/353998.terrain b/public/terrain/19/858569/353998.terrain new file mode 100644 index 000000000..0b49d3b7b Binary files /dev/null and b/public/terrain/19/858569/353998.terrain differ diff --git a/public/terrain/19/858569/353999.terrain b/public/terrain/19/858569/353999.terrain new file mode 100644 index 000000000..56613319c Binary files /dev/null and b/public/terrain/19/858569/353999.terrain differ diff --git a/public/terrain/19/858569/354000.terrain b/public/terrain/19/858569/354000.terrain new file mode 100644 index 000000000..cc18d316b Binary files /dev/null and b/public/terrain/19/858569/354000.terrain differ diff --git a/public/terrain/19/858569/354001.terrain b/public/terrain/19/858569/354001.terrain new file mode 100644 index 000000000..9d8908d09 Binary files /dev/null and b/public/terrain/19/858569/354001.terrain differ diff --git a/public/terrain/19/858569/354002.terrain b/public/terrain/19/858569/354002.terrain new file mode 100644 index 000000000..02753d133 Binary files /dev/null and b/public/terrain/19/858569/354002.terrain differ diff --git a/public/terrain/19/858569/354003.terrain b/public/terrain/19/858569/354003.terrain new file mode 100644 index 000000000..8397002f4 Binary files /dev/null and b/public/terrain/19/858569/354003.terrain differ diff --git a/public/terrain/19/858569/354004.terrain b/public/terrain/19/858569/354004.terrain new file mode 100644 index 000000000..4bff151ab Binary files /dev/null and b/public/terrain/19/858569/354004.terrain differ diff --git a/public/terrain/19/858569/354005.terrain b/public/terrain/19/858569/354005.terrain new file mode 100644 index 000000000..746635c0b Binary files /dev/null and b/public/terrain/19/858569/354005.terrain differ diff --git a/public/terrain/19/858569/354006.terrain b/public/terrain/19/858569/354006.terrain new file mode 100644 index 000000000..3a447137f Binary files /dev/null and b/public/terrain/19/858569/354006.terrain differ diff --git a/public/terrain/19/858569/354007.terrain b/public/terrain/19/858569/354007.terrain new file mode 100644 index 000000000..2cf657a46 Binary files /dev/null and b/public/terrain/19/858569/354007.terrain differ diff --git a/public/terrain/19/858569/354008.terrain b/public/terrain/19/858569/354008.terrain new file mode 100644 index 000000000..894fcbe13 Binary files /dev/null and b/public/terrain/19/858569/354008.terrain differ diff --git a/public/terrain/19/858569/354009.terrain b/public/terrain/19/858569/354009.terrain new file mode 100644 index 000000000..585b128b8 Binary files /dev/null and b/public/terrain/19/858569/354009.terrain differ diff --git a/public/terrain/19/858569/354010.terrain b/public/terrain/19/858569/354010.terrain new file mode 100644 index 000000000..97a068052 Binary files /dev/null and b/public/terrain/19/858569/354010.terrain differ diff --git a/public/terrain/19/858569/354011.terrain b/public/terrain/19/858569/354011.terrain new file mode 100644 index 000000000..19a61e2ba Binary files /dev/null and b/public/terrain/19/858569/354011.terrain differ diff --git a/public/terrain/19/858569/354012.terrain b/public/terrain/19/858569/354012.terrain new file mode 100644 index 000000000..013d3717f Binary files /dev/null and b/public/terrain/19/858569/354012.terrain differ diff --git a/public/terrain/19/858569/354013.terrain b/public/terrain/19/858569/354013.terrain new file mode 100644 index 000000000..aac76dba5 Binary files /dev/null and b/public/terrain/19/858569/354013.terrain differ diff --git a/public/terrain/19/858569/354014.terrain b/public/terrain/19/858569/354014.terrain new file mode 100644 index 000000000..d5f17d865 Binary files /dev/null and b/public/terrain/19/858569/354014.terrain differ diff --git a/public/terrain/19/858569/354015.terrain b/public/terrain/19/858569/354015.terrain new file mode 100644 index 000000000..c6c7f0c79 Binary files /dev/null and b/public/terrain/19/858569/354015.terrain differ diff --git a/public/terrain/19/858569/354016.terrain b/public/terrain/19/858569/354016.terrain new file mode 100644 index 000000000..5cac317fc Binary files /dev/null and b/public/terrain/19/858569/354016.terrain differ diff --git a/public/terrain/19/858569/354017.terrain b/public/terrain/19/858569/354017.terrain new file mode 100644 index 000000000..8f3b26bb3 Binary files /dev/null and b/public/terrain/19/858569/354017.terrain differ diff --git a/public/terrain/19/858569/354018.terrain b/public/terrain/19/858569/354018.terrain new file mode 100644 index 000000000..4f37a9024 Binary files /dev/null and b/public/terrain/19/858569/354018.terrain differ diff --git a/public/terrain/19/858569/354019.terrain b/public/terrain/19/858569/354019.terrain new file mode 100644 index 000000000..7050cdbf9 Binary files /dev/null and b/public/terrain/19/858569/354019.terrain differ diff --git a/public/terrain/19/858569/354020.terrain b/public/terrain/19/858569/354020.terrain new file mode 100644 index 000000000..6ad8e1660 Binary files /dev/null and b/public/terrain/19/858569/354020.terrain differ diff --git a/public/terrain/19/858569/354021.terrain b/public/terrain/19/858569/354021.terrain new file mode 100644 index 000000000..0b83c672a Binary files /dev/null and b/public/terrain/19/858569/354021.terrain differ diff --git a/public/terrain/19/858569/354022.terrain b/public/terrain/19/858569/354022.terrain new file mode 100644 index 000000000..f5a481c4a Binary files /dev/null and b/public/terrain/19/858569/354022.terrain differ diff --git a/public/terrain/19/858569/354023.terrain b/public/terrain/19/858569/354023.terrain new file mode 100644 index 000000000..a3c78dddc Binary files /dev/null and b/public/terrain/19/858569/354023.terrain differ diff --git a/public/terrain/19/858569/354024.terrain b/public/terrain/19/858569/354024.terrain new file mode 100644 index 000000000..be6a8aefe Binary files /dev/null and b/public/terrain/19/858569/354024.terrain differ diff --git a/public/terrain/19/858569/354025.terrain b/public/terrain/19/858569/354025.terrain new file mode 100644 index 000000000..42c6b8a2d Binary files /dev/null and b/public/terrain/19/858569/354025.terrain differ diff --git a/public/terrain/19/858569/354026.terrain b/public/terrain/19/858569/354026.terrain new file mode 100644 index 000000000..02ce05158 Binary files /dev/null and b/public/terrain/19/858569/354026.terrain differ diff --git a/public/terrain/19/858569/354027.terrain b/public/terrain/19/858569/354027.terrain new file mode 100644 index 000000000..33b93f42f Binary files /dev/null and b/public/terrain/19/858569/354027.terrain differ diff --git a/public/terrain/19/858569/354028.terrain b/public/terrain/19/858569/354028.terrain new file mode 100644 index 000000000..e5fe7dad1 Binary files /dev/null and b/public/terrain/19/858569/354028.terrain differ diff --git a/public/terrain/19/858569/354029.terrain b/public/terrain/19/858569/354029.terrain new file mode 100644 index 000000000..f70c9cd4b Binary files /dev/null and b/public/terrain/19/858569/354029.terrain differ diff --git a/public/terrain/19/858569/354030.terrain b/public/terrain/19/858569/354030.terrain new file mode 100644 index 000000000..515afff30 Binary files /dev/null and b/public/terrain/19/858569/354030.terrain differ diff --git a/public/terrain/19/858569/354031.terrain b/public/terrain/19/858569/354031.terrain new file mode 100644 index 000000000..3dee77803 Binary files /dev/null and b/public/terrain/19/858569/354031.terrain differ diff --git a/public/terrain/19/858569/354032.terrain b/public/terrain/19/858569/354032.terrain new file mode 100644 index 000000000..d94df1213 Binary files /dev/null and b/public/terrain/19/858569/354032.terrain differ diff --git a/public/terrain/19/858569/354033.terrain b/public/terrain/19/858569/354033.terrain new file mode 100644 index 000000000..69babfe2f Binary files /dev/null and b/public/terrain/19/858569/354033.terrain differ diff --git a/public/terrain/19/858569/354034.terrain b/public/terrain/19/858569/354034.terrain new file mode 100644 index 000000000..078827c24 Binary files /dev/null and b/public/terrain/19/858569/354034.terrain differ diff --git a/public/terrain/19/858569/354035.terrain b/public/terrain/19/858569/354035.terrain new file mode 100644 index 000000000..fc2004726 Binary files /dev/null and b/public/terrain/19/858569/354035.terrain differ diff --git a/public/terrain/19/858569/354036.terrain b/public/terrain/19/858569/354036.terrain new file mode 100644 index 000000000..705b06f5d Binary files /dev/null and b/public/terrain/19/858569/354036.terrain differ diff --git a/public/terrain/19/858569/354037.terrain b/public/terrain/19/858569/354037.terrain new file mode 100644 index 000000000..2ff3ee1c9 Binary files /dev/null and b/public/terrain/19/858569/354037.terrain differ diff --git a/public/terrain/19/858569/354038.terrain b/public/terrain/19/858569/354038.terrain new file mode 100644 index 000000000..6254683ce Binary files /dev/null and b/public/terrain/19/858569/354038.terrain differ diff --git a/public/terrain/19/858569/354039.terrain b/public/terrain/19/858569/354039.terrain new file mode 100644 index 000000000..17f259ae6 Binary files /dev/null and b/public/terrain/19/858569/354039.terrain differ diff --git a/public/terrain/19/858569/354040.terrain b/public/terrain/19/858569/354040.terrain new file mode 100644 index 000000000..7001b7094 Binary files /dev/null and b/public/terrain/19/858569/354040.terrain differ diff --git a/public/terrain/19/858569/354041.terrain b/public/terrain/19/858569/354041.terrain new file mode 100644 index 000000000..4b9c23d4d Binary files /dev/null and b/public/terrain/19/858569/354041.terrain differ diff --git a/public/terrain/19/858569/354042.terrain b/public/terrain/19/858569/354042.terrain new file mode 100644 index 000000000..cd0dde4d1 Binary files /dev/null and b/public/terrain/19/858569/354042.terrain differ diff --git a/public/terrain/19/858569/354043.terrain b/public/terrain/19/858569/354043.terrain new file mode 100644 index 000000000..33a1f4a0e Binary files /dev/null and b/public/terrain/19/858569/354043.terrain differ diff --git a/public/terrain/19/858569/354044.terrain b/public/terrain/19/858569/354044.terrain new file mode 100644 index 000000000..e86859bec Binary files /dev/null and b/public/terrain/19/858569/354044.terrain differ diff --git a/public/terrain/19/858569/354045.terrain b/public/terrain/19/858569/354045.terrain new file mode 100644 index 000000000..162718b5a Binary files /dev/null and b/public/terrain/19/858569/354045.terrain differ diff --git a/public/terrain/19/858569/354046.terrain b/public/terrain/19/858569/354046.terrain new file mode 100644 index 000000000..e7aa98814 Binary files /dev/null and b/public/terrain/19/858569/354046.terrain differ diff --git a/public/terrain/19/858569/354047.terrain b/public/terrain/19/858569/354047.terrain new file mode 100644 index 000000000..ae6ef2ae9 Binary files /dev/null and b/public/terrain/19/858569/354047.terrain differ diff --git a/public/terrain/19/858569/354048.terrain b/public/terrain/19/858569/354048.terrain new file mode 100644 index 000000000..dd1095d64 Binary files /dev/null and b/public/terrain/19/858569/354048.terrain differ diff --git a/public/terrain/19/858569/354049.terrain b/public/terrain/19/858569/354049.terrain new file mode 100644 index 000000000..9dbf09d54 Binary files /dev/null and b/public/terrain/19/858569/354049.terrain differ diff --git a/public/terrain/19/858569/354050.terrain b/public/terrain/19/858569/354050.terrain new file mode 100644 index 000000000..11039e442 Binary files /dev/null and b/public/terrain/19/858569/354050.terrain differ diff --git a/public/terrain/19/858569/354051.terrain b/public/terrain/19/858569/354051.terrain new file mode 100644 index 000000000..a8927fb75 Binary files /dev/null and b/public/terrain/19/858569/354051.terrain differ diff --git a/public/terrain/19/858569/354052.terrain b/public/terrain/19/858569/354052.terrain new file mode 100644 index 000000000..ffe6aba7f Binary files /dev/null and b/public/terrain/19/858569/354052.terrain differ diff --git a/public/terrain/19/858569/354053.terrain b/public/terrain/19/858569/354053.terrain new file mode 100644 index 000000000..0829e8b44 Binary files /dev/null and b/public/terrain/19/858569/354053.terrain differ diff --git a/public/terrain/19/858569/354054.terrain b/public/terrain/19/858569/354054.terrain new file mode 100644 index 000000000..aebc015a2 Binary files /dev/null and b/public/terrain/19/858569/354054.terrain differ diff --git a/public/terrain/19/858569/354055.terrain b/public/terrain/19/858569/354055.terrain new file mode 100644 index 000000000..cf53ac79e Binary files /dev/null and b/public/terrain/19/858569/354055.terrain differ diff --git a/public/terrain/19/858569/354056.terrain b/public/terrain/19/858569/354056.terrain new file mode 100644 index 000000000..6210098c8 Binary files /dev/null and b/public/terrain/19/858569/354056.terrain differ diff --git a/public/terrain/19/858569/354057.terrain b/public/terrain/19/858569/354057.terrain new file mode 100644 index 000000000..f55d7e79f Binary files /dev/null and b/public/terrain/19/858569/354057.terrain differ diff --git a/public/terrain/19/858569/354058.terrain b/public/terrain/19/858569/354058.terrain new file mode 100644 index 000000000..997f42219 Binary files /dev/null and b/public/terrain/19/858569/354058.terrain differ diff --git a/public/terrain/19/858569/354059.terrain b/public/terrain/19/858569/354059.terrain new file mode 100644 index 000000000..35acd0b74 Binary files /dev/null and b/public/terrain/19/858569/354059.terrain differ diff --git a/public/terrain/19/858570/353743.terrain b/public/terrain/19/858570/353743.terrain new file mode 100644 index 000000000..39f6b5306 Binary files /dev/null and b/public/terrain/19/858570/353743.terrain differ diff --git a/public/terrain/19/858570/353744.terrain b/public/terrain/19/858570/353744.terrain new file mode 100644 index 000000000..b276e0679 Binary files /dev/null and b/public/terrain/19/858570/353744.terrain differ diff --git a/public/terrain/19/858570/353745.terrain b/public/terrain/19/858570/353745.terrain new file mode 100644 index 000000000..a2ecbd901 Binary files /dev/null and b/public/terrain/19/858570/353745.terrain differ diff --git a/public/terrain/19/858570/353746.terrain b/public/terrain/19/858570/353746.terrain new file mode 100644 index 000000000..cada4691b Binary files /dev/null and b/public/terrain/19/858570/353746.terrain differ diff --git a/public/terrain/19/858570/353747.terrain b/public/terrain/19/858570/353747.terrain new file mode 100644 index 000000000..6793feecf Binary files /dev/null and b/public/terrain/19/858570/353747.terrain differ diff --git a/public/terrain/19/858570/353748.terrain b/public/terrain/19/858570/353748.terrain new file mode 100644 index 000000000..5b518340c Binary files /dev/null and b/public/terrain/19/858570/353748.terrain differ diff --git a/public/terrain/19/858570/353749.terrain b/public/terrain/19/858570/353749.terrain new file mode 100644 index 000000000..42b38bc52 Binary files /dev/null and b/public/terrain/19/858570/353749.terrain differ diff --git a/public/terrain/19/858570/353750.terrain b/public/terrain/19/858570/353750.terrain new file mode 100644 index 000000000..7abc0e669 Binary files /dev/null and b/public/terrain/19/858570/353750.terrain differ diff --git a/public/terrain/19/858570/353751.terrain b/public/terrain/19/858570/353751.terrain new file mode 100644 index 000000000..9396da8be Binary files /dev/null and b/public/terrain/19/858570/353751.terrain differ diff --git a/public/terrain/19/858570/353752.terrain b/public/terrain/19/858570/353752.terrain new file mode 100644 index 000000000..fdefc00cc Binary files /dev/null and b/public/terrain/19/858570/353752.terrain differ diff --git a/public/terrain/19/858570/353753.terrain b/public/terrain/19/858570/353753.terrain new file mode 100644 index 000000000..58267585f Binary files /dev/null and b/public/terrain/19/858570/353753.terrain differ diff --git a/public/terrain/19/858570/353754.terrain b/public/terrain/19/858570/353754.terrain new file mode 100644 index 000000000..7c4d5d3b8 Binary files /dev/null and b/public/terrain/19/858570/353754.terrain differ diff --git a/public/terrain/19/858570/353755.terrain b/public/terrain/19/858570/353755.terrain new file mode 100644 index 000000000..58eb4ec2c Binary files /dev/null and b/public/terrain/19/858570/353755.terrain differ diff --git a/public/terrain/19/858570/353756.terrain b/public/terrain/19/858570/353756.terrain new file mode 100644 index 000000000..a42379037 Binary files /dev/null and b/public/terrain/19/858570/353756.terrain differ diff --git a/public/terrain/19/858570/353757.terrain b/public/terrain/19/858570/353757.terrain new file mode 100644 index 000000000..2ca876331 Binary files /dev/null and b/public/terrain/19/858570/353757.terrain differ diff --git a/public/terrain/19/858570/353758.terrain b/public/terrain/19/858570/353758.terrain new file mode 100644 index 000000000..5187a1910 Binary files /dev/null and b/public/terrain/19/858570/353758.terrain differ diff --git a/public/terrain/19/858570/353759.terrain b/public/terrain/19/858570/353759.terrain new file mode 100644 index 000000000..a4a0df3c6 Binary files /dev/null and b/public/terrain/19/858570/353759.terrain differ diff --git a/public/terrain/19/858570/353760.terrain b/public/terrain/19/858570/353760.terrain new file mode 100644 index 000000000..500868e96 Binary files /dev/null and b/public/terrain/19/858570/353760.terrain differ diff --git a/public/terrain/19/858570/353761.terrain b/public/terrain/19/858570/353761.terrain new file mode 100644 index 000000000..c60adc4fe Binary files /dev/null and b/public/terrain/19/858570/353761.terrain differ diff --git a/public/terrain/19/858570/353762.terrain b/public/terrain/19/858570/353762.terrain new file mode 100644 index 000000000..48907ccbd Binary files /dev/null and b/public/terrain/19/858570/353762.terrain differ diff --git a/public/terrain/19/858570/353763.terrain b/public/terrain/19/858570/353763.terrain new file mode 100644 index 000000000..49339a844 Binary files /dev/null and b/public/terrain/19/858570/353763.terrain differ diff --git a/public/terrain/19/858570/353764.terrain b/public/terrain/19/858570/353764.terrain new file mode 100644 index 000000000..b6672f36c Binary files /dev/null and b/public/terrain/19/858570/353764.terrain differ diff --git a/public/terrain/19/858570/353765.terrain b/public/terrain/19/858570/353765.terrain new file mode 100644 index 000000000..42b0f1e6d Binary files /dev/null and b/public/terrain/19/858570/353765.terrain differ diff --git a/public/terrain/19/858570/353766.terrain b/public/terrain/19/858570/353766.terrain new file mode 100644 index 000000000..17c212e7b Binary files /dev/null and b/public/terrain/19/858570/353766.terrain differ diff --git a/public/terrain/19/858570/353767.terrain b/public/terrain/19/858570/353767.terrain new file mode 100644 index 000000000..56bcfa83a Binary files /dev/null and b/public/terrain/19/858570/353767.terrain differ diff --git a/public/terrain/19/858570/353768.terrain b/public/terrain/19/858570/353768.terrain new file mode 100644 index 000000000..f148ef998 Binary files /dev/null and b/public/terrain/19/858570/353768.terrain differ diff --git a/public/terrain/19/858570/353769.terrain b/public/terrain/19/858570/353769.terrain new file mode 100644 index 000000000..ee66f806a Binary files /dev/null and b/public/terrain/19/858570/353769.terrain differ diff --git a/public/terrain/19/858570/353770.terrain b/public/terrain/19/858570/353770.terrain new file mode 100644 index 000000000..d8e62db2c Binary files /dev/null and b/public/terrain/19/858570/353770.terrain differ diff --git a/public/terrain/19/858570/353771.terrain b/public/terrain/19/858570/353771.terrain new file mode 100644 index 000000000..d63e06449 Binary files /dev/null and b/public/terrain/19/858570/353771.terrain differ diff --git a/public/terrain/19/858570/353772.terrain b/public/terrain/19/858570/353772.terrain new file mode 100644 index 000000000..d3053ebc4 Binary files /dev/null and b/public/terrain/19/858570/353772.terrain differ diff --git a/public/terrain/19/858570/353773.terrain b/public/terrain/19/858570/353773.terrain new file mode 100644 index 000000000..b64cd3137 Binary files /dev/null and b/public/terrain/19/858570/353773.terrain differ diff --git a/public/terrain/19/858570/353774.terrain b/public/terrain/19/858570/353774.terrain new file mode 100644 index 000000000..8a514811e Binary files /dev/null and b/public/terrain/19/858570/353774.terrain differ diff --git a/public/terrain/19/858570/353775.terrain b/public/terrain/19/858570/353775.terrain new file mode 100644 index 000000000..b2877c2ed Binary files /dev/null and b/public/terrain/19/858570/353775.terrain differ diff --git a/public/terrain/19/858570/353776.terrain b/public/terrain/19/858570/353776.terrain new file mode 100644 index 000000000..92a23a3a9 Binary files /dev/null and b/public/terrain/19/858570/353776.terrain differ diff --git a/public/terrain/19/858570/353777.terrain b/public/terrain/19/858570/353777.terrain new file mode 100644 index 000000000..424067e12 Binary files /dev/null and b/public/terrain/19/858570/353777.terrain differ diff --git a/public/terrain/19/858570/353778.terrain b/public/terrain/19/858570/353778.terrain new file mode 100644 index 000000000..10c5c5d2e Binary files /dev/null and b/public/terrain/19/858570/353778.terrain differ diff --git a/public/terrain/19/858570/353779.terrain b/public/terrain/19/858570/353779.terrain new file mode 100644 index 000000000..6756ef5f8 Binary files /dev/null and b/public/terrain/19/858570/353779.terrain differ diff --git a/public/terrain/19/858570/353780.terrain b/public/terrain/19/858570/353780.terrain new file mode 100644 index 000000000..f731f58a3 Binary files /dev/null and b/public/terrain/19/858570/353780.terrain differ diff --git a/public/terrain/19/858570/353781.terrain b/public/terrain/19/858570/353781.terrain new file mode 100644 index 000000000..4012447d6 Binary files /dev/null and b/public/terrain/19/858570/353781.terrain differ diff --git a/public/terrain/19/858570/353782.terrain b/public/terrain/19/858570/353782.terrain new file mode 100644 index 000000000..89e51b63c Binary files /dev/null and b/public/terrain/19/858570/353782.terrain differ diff --git a/public/terrain/19/858570/353783.terrain b/public/terrain/19/858570/353783.terrain new file mode 100644 index 000000000..ffeed9f27 Binary files /dev/null and b/public/terrain/19/858570/353783.terrain differ diff --git a/public/terrain/19/858570/353784.terrain b/public/terrain/19/858570/353784.terrain new file mode 100644 index 000000000..4d270bc81 Binary files /dev/null and b/public/terrain/19/858570/353784.terrain differ diff --git a/public/terrain/19/858570/353785.terrain b/public/terrain/19/858570/353785.terrain new file mode 100644 index 000000000..d6d92b781 Binary files /dev/null and b/public/terrain/19/858570/353785.terrain differ diff --git a/public/terrain/19/858570/353786.terrain b/public/terrain/19/858570/353786.terrain new file mode 100644 index 000000000..b6159a86d Binary files /dev/null and b/public/terrain/19/858570/353786.terrain differ diff --git a/public/terrain/19/858570/353787.terrain b/public/terrain/19/858570/353787.terrain new file mode 100644 index 000000000..a98225f96 Binary files /dev/null and b/public/terrain/19/858570/353787.terrain differ diff --git a/public/terrain/19/858570/353788.terrain b/public/terrain/19/858570/353788.terrain new file mode 100644 index 000000000..2431ae092 Binary files /dev/null and b/public/terrain/19/858570/353788.terrain differ diff --git a/public/terrain/19/858570/353789.terrain b/public/terrain/19/858570/353789.terrain new file mode 100644 index 000000000..e3b69a715 Binary files /dev/null and b/public/terrain/19/858570/353789.terrain differ diff --git a/public/terrain/19/858570/353790.terrain b/public/terrain/19/858570/353790.terrain new file mode 100644 index 000000000..4b5e84c02 Binary files /dev/null and b/public/terrain/19/858570/353790.terrain differ diff --git a/public/terrain/19/858570/353791.terrain b/public/terrain/19/858570/353791.terrain new file mode 100644 index 000000000..69054f970 Binary files /dev/null and b/public/terrain/19/858570/353791.terrain differ diff --git a/public/terrain/19/858570/353792.terrain b/public/terrain/19/858570/353792.terrain new file mode 100644 index 000000000..54df6c5e4 Binary files /dev/null and b/public/terrain/19/858570/353792.terrain differ diff --git a/public/terrain/19/858570/353793.terrain b/public/terrain/19/858570/353793.terrain new file mode 100644 index 000000000..1f088865f Binary files /dev/null and b/public/terrain/19/858570/353793.terrain differ diff --git a/public/terrain/19/858570/353794.terrain b/public/terrain/19/858570/353794.terrain new file mode 100644 index 000000000..87bd8fcef Binary files /dev/null and b/public/terrain/19/858570/353794.terrain differ diff --git a/public/terrain/19/858570/353795.terrain b/public/terrain/19/858570/353795.terrain new file mode 100644 index 000000000..1dc7646b8 Binary files /dev/null and b/public/terrain/19/858570/353795.terrain differ diff --git a/public/terrain/19/858570/353796.terrain b/public/terrain/19/858570/353796.terrain new file mode 100644 index 000000000..25997b93d Binary files /dev/null and b/public/terrain/19/858570/353796.terrain differ diff --git a/public/terrain/19/858570/353797.terrain b/public/terrain/19/858570/353797.terrain new file mode 100644 index 000000000..e6f1b4693 Binary files /dev/null and b/public/terrain/19/858570/353797.terrain differ diff --git a/public/terrain/19/858570/353798.terrain b/public/terrain/19/858570/353798.terrain new file mode 100644 index 000000000..8296d50ca Binary files /dev/null and b/public/terrain/19/858570/353798.terrain differ diff --git a/public/terrain/19/858570/353799.terrain b/public/terrain/19/858570/353799.terrain new file mode 100644 index 000000000..f77b9b804 Binary files /dev/null and b/public/terrain/19/858570/353799.terrain differ diff --git a/public/terrain/19/858570/353800.terrain b/public/terrain/19/858570/353800.terrain new file mode 100644 index 000000000..f0859e70c Binary files /dev/null and b/public/terrain/19/858570/353800.terrain differ diff --git a/public/terrain/19/858570/353801.terrain b/public/terrain/19/858570/353801.terrain new file mode 100644 index 000000000..259a1ad24 Binary files /dev/null and b/public/terrain/19/858570/353801.terrain differ diff --git a/public/terrain/19/858570/353802.terrain b/public/terrain/19/858570/353802.terrain new file mode 100644 index 000000000..64eb972f8 Binary files /dev/null and b/public/terrain/19/858570/353802.terrain differ diff --git a/public/terrain/19/858570/353803.terrain b/public/terrain/19/858570/353803.terrain new file mode 100644 index 000000000..780229be9 Binary files /dev/null and b/public/terrain/19/858570/353803.terrain differ diff --git a/public/terrain/19/858570/353804.terrain b/public/terrain/19/858570/353804.terrain new file mode 100644 index 000000000..7c64bf5c4 Binary files /dev/null and b/public/terrain/19/858570/353804.terrain differ diff --git a/public/terrain/19/858570/353805.terrain b/public/terrain/19/858570/353805.terrain new file mode 100644 index 000000000..e5b810027 Binary files /dev/null and b/public/terrain/19/858570/353805.terrain differ diff --git a/public/terrain/19/858570/353806.terrain b/public/terrain/19/858570/353806.terrain new file mode 100644 index 000000000..f42bcb08c Binary files /dev/null and b/public/terrain/19/858570/353806.terrain differ diff --git a/public/terrain/19/858570/353807.terrain b/public/terrain/19/858570/353807.terrain new file mode 100644 index 000000000..4db28fe78 Binary files /dev/null and b/public/terrain/19/858570/353807.terrain differ diff --git a/public/terrain/19/858570/353808.terrain b/public/terrain/19/858570/353808.terrain new file mode 100644 index 000000000..a8c2067ef Binary files /dev/null and b/public/terrain/19/858570/353808.terrain differ diff --git a/public/terrain/19/858570/353809.terrain b/public/terrain/19/858570/353809.terrain new file mode 100644 index 000000000..29bf21632 Binary files /dev/null and b/public/terrain/19/858570/353809.terrain differ diff --git a/public/terrain/19/858570/353810.terrain b/public/terrain/19/858570/353810.terrain new file mode 100644 index 000000000..9003a9a67 Binary files /dev/null and b/public/terrain/19/858570/353810.terrain differ diff --git a/public/terrain/19/858570/353811.terrain b/public/terrain/19/858570/353811.terrain new file mode 100644 index 000000000..eb4814440 Binary files /dev/null and b/public/terrain/19/858570/353811.terrain differ diff --git a/public/terrain/19/858570/353812.terrain b/public/terrain/19/858570/353812.terrain new file mode 100644 index 000000000..078b7d4ac Binary files /dev/null and b/public/terrain/19/858570/353812.terrain differ diff --git a/public/terrain/19/858570/353813.terrain b/public/terrain/19/858570/353813.terrain new file mode 100644 index 000000000..36b945ef3 Binary files /dev/null and b/public/terrain/19/858570/353813.terrain differ diff --git a/public/terrain/19/858570/353814.terrain b/public/terrain/19/858570/353814.terrain new file mode 100644 index 000000000..f192d5942 Binary files /dev/null and b/public/terrain/19/858570/353814.terrain differ diff --git a/public/terrain/19/858570/353815.terrain b/public/terrain/19/858570/353815.terrain new file mode 100644 index 000000000..b5e03cc46 Binary files /dev/null and b/public/terrain/19/858570/353815.terrain differ diff --git a/public/terrain/19/858570/353816.terrain b/public/terrain/19/858570/353816.terrain new file mode 100644 index 000000000..080bd5037 Binary files /dev/null and b/public/terrain/19/858570/353816.terrain differ diff --git a/public/terrain/19/858570/353817.terrain b/public/terrain/19/858570/353817.terrain new file mode 100644 index 000000000..daa0a9aff Binary files /dev/null and b/public/terrain/19/858570/353817.terrain differ diff --git a/public/terrain/19/858570/353818.terrain b/public/terrain/19/858570/353818.terrain new file mode 100644 index 000000000..e7c33ad54 Binary files /dev/null and b/public/terrain/19/858570/353818.terrain differ diff --git a/public/terrain/19/858570/353819.terrain b/public/terrain/19/858570/353819.terrain new file mode 100644 index 000000000..e282e60e4 Binary files /dev/null and b/public/terrain/19/858570/353819.terrain differ diff --git a/public/terrain/19/858570/353820.terrain b/public/terrain/19/858570/353820.terrain new file mode 100644 index 000000000..b214d7c5f Binary files /dev/null and b/public/terrain/19/858570/353820.terrain differ diff --git a/public/terrain/19/858570/353821.terrain b/public/terrain/19/858570/353821.terrain new file mode 100644 index 000000000..b73ff7c24 Binary files /dev/null and b/public/terrain/19/858570/353821.terrain differ diff --git a/public/terrain/19/858570/353822.terrain b/public/terrain/19/858570/353822.terrain new file mode 100644 index 000000000..4f1b62d17 Binary files /dev/null and b/public/terrain/19/858570/353822.terrain differ diff --git a/public/terrain/19/858570/353823.terrain b/public/terrain/19/858570/353823.terrain new file mode 100644 index 000000000..6abe23493 Binary files /dev/null and b/public/terrain/19/858570/353823.terrain differ diff --git a/public/terrain/19/858570/353824.terrain b/public/terrain/19/858570/353824.terrain new file mode 100644 index 000000000..d616a7fc8 Binary files /dev/null and b/public/terrain/19/858570/353824.terrain differ diff --git a/public/terrain/19/858570/353825.terrain b/public/terrain/19/858570/353825.terrain new file mode 100644 index 000000000..0e2fd199f Binary files /dev/null and b/public/terrain/19/858570/353825.terrain differ diff --git a/public/terrain/19/858570/353826.terrain b/public/terrain/19/858570/353826.terrain new file mode 100644 index 000000000..fb1ea9dde Binary files /dev/null and b/public/terrain/19/858570/353826.terrain differ diff --git a/public/terrain/19/858570/353827.terrain b/public/terrain/19/858570/353827.terrain new file mode 100644 index 000000000..9f62559ad Binary files /dev/null and b/public/terrain/19/858570/353827.terrain differ diff --git a/public/terrain/19/858570/353828.terrain b/public/terrain/19/858570/353828.terrain new file mode 100644 index 000000000..806149f7c Binary files /dev/null and b/public/terrain/19/858570/353828.terrain differ diff --git a/public/terrain/19/858570/353829.terrain b/public/terrain/19/858570/353829.terrain new file mode 100644 index 000000000..39e82c91f Binary files /dev/null and b/public/terrain/19/858570/353829.terrain differ diff --git a/public/terrain/19/858570/353830.terrain b/public/terrain/19/858570/353830.terrain new file mode 100644 index 000000000..63ff98e35 Binary files /dev/null and b/public/terrain/19/858570/353830.terrain differ diff --git a/public/terrain/19/858570/353831.terrain b/public/terrain/19/858570/353831.terrain new file mode 100644 index 000000000..78d8ba84d Binary files /dev/null and b/public/terrain/19/858570/353831.terrain differ diff --git a/public/terrain/19/858570/353832.terrain b/public/terrain/19/858570/353832.terrain new file mode 100644 index 000000000..92223b8ee Binary files /dev/null and b/public/terrain/19/858570/353832.terrain differ diff --git a/public/terrain/19/858570/353833.terrain b/public/terrain/19/858570/353833.terrain new file mode 100644 index 000000000..0ad683544 Binary files /dev/null and b/public/terrain/19/858570/353833.terrain differ diff --git a/public/terrain/19/858570/353834.terrain b/public/terrain/19/858570/353834.terrain new file mode 100644 index 000000000..8b1b2b9f6 Binary files /dev/null and b/public/terrain/19/858570/353834.terrain differ diff --git a/public/terrain/19/858570/353835.terrain b/public/terrain/19/858570/353835.terrain new file mode 100644 index 000000000..510ef7c78 Binary files /dev/null and b/public/terrain/19/858570/353835.terrain differ diff --git a/public/terrain/19/858570/353836.terrain b/public/terrain/19/858570/353836.terrain new file mode 100644 index 000000000..3fda2d926 Binary files /dev/null and b/public/terrain/19/858570/353836.terrain differ diff --git a/public/terrain/19/858570/353837.terrain b/public/terrain/19/858570/353837.terrain new file mode 100644 index 000000000..b973ca179 Binary files /dev/null and b/public/terrain/19/858570/353837.terrain differ diff --git a/public/terrain/19/858570/353838.terrain b/public/terrain/19/858570/353838.terrain new file mode 100644 index 000000000..b26570149 Binary files /dev/null and b/public/terrain/19/858570/353838.terrain differ diff --git a/public/terrain/19/858570/353839.terrain b/public/terrain/19/858570/353839.terrain new file mode 100644 index 000000000..e4e483a61 Binary files /dev/null and b/public/terrain/19/858570/353839.terrain differ diff --git a/public/terrain/19/858570/353840.terrain b/public/terrain/19/858570/353840.terrain new file mode 100644 index 000000000..e8505a3bb Binary files /dev/null and b/public/terrain/19/858570/353840.terrain differ diff --git a/public/terrain/19/858570/353841.terrain b/public/terrain/19/858570/353841.terrain new file mode 100644 index 000000000..bc8653b55 Binary files /dev/null and b/public/terrain/19/858570/353841.terrain differ diff --git a/public/terrain/19/858570/353842.terrain b/public/terrain/19/858570/353842.terrain new file mode 100644 index 000000000..0c6405c0d Binary files /dev/null and b/public/terrain/19/858570/353842.terrain differ diff --git a/public/terrain/19/858570/353843.terrain b/public/terrain/19/858570/353843.terrain new file mode 100644 index 000000000..7e8c52f48 Binary files /dev/null and b/public/terrain/19/858570/353843.terrain differ diff --git a/public/terrain/19/858570/353844.terrain b/public/terrain/19/858570/353844.terrain new file mode 100644 index 000000000..a29fb99b2 Binary files /dev/null and b/public/terrain/19/858570/353844.terrain differ diff --git a/public/terrain/19/858570/353845.terrain b/public/terrain/19/858570/353845.terrain new file mode 100644 index 000000000..d42b85374 Binary files /dev/null and b/public/terrain/19/858570/353845.terrain differ diff --git a/public/terrain/19/858570/353846.terrain b/public/terrain/19/858570/353846.terrain new file mode 100644 index 000000000..818d0af99 Binary files /dev/null and b/public/terrain/19/858570/353846.terrain differ diff --git a/public/terrain/19/858570/353847.terrain b/public/terrain/19/858570/353847.terrain new file mode 100644 index 000000000..0aa2da4e7 Binary files /dev/null and b/public/terrain/19/858570/353847.terrain differ diff --git a/public/terrain/19/858570/353848.terrain b/public/terrain/19/858570/353848.terrain new file mode 100644 index 000000000..cdaf425f8 Binary files /dev/null and b/public/terrain/19/858570/353848.terrain differ diff --git a/public/terrain/19/858570/353849.terrain b/public/terrain/19/858570/353849.terrain new file mode 100644 index 000000000..ed31f3720 Binary files /dev/null and b/public/terrain/19/858570/353849.terrain differ diff --git a/public/terrain/19/858570/353850.terrain b/public/terrain/19/858570/353850.terrain new file mode 100644 index 000000000..6aac57039 Binary files /dev/null and b/public/terrain/19/858570/353850.terrain differ diff --git a/public/terrain/19/858570/353851.terrain b/public/terrain/19/858570/353851.terrain new file mode 100644 index 000000000..21d30153f Binary files /dev/null and b/public/terrain/19/858570/353851.terrain differ diff --git a/public/terrain/19/858570/353852.terrain b/public/terrain/19/858570/353852.terrain new file mode 100644 index 000000000..760fb0d23 Binary files /dev/null and b/public/terrain/19/858570/353852.terrain differ diff --git a/public/terrain/19/858570/353853.terrain b/public/terrain/19/858570/353853.terrain new file mode 100644 index 000000000..1837cd3f1 Binary files /dev/null and b/public/terrain/19/858570/353853.terrain differ diff --git a/public/terrain/19/858570/353854.terrain b/public/terrain/19/858570/353854.terrain new file mode 100644 index 000000000..9c2dcf068 Binary files /dev/null and b/public/terrain/19/858570/353854.terrain differ diff --git a/public/terrain/19/858570/353855.terrain b/public/terrain/19/858570/353855.terrain new file mode 100644 index 000000000..9c7368efa Binary files /dev/null and b/public/terrain/19/858570/353855.terrain differ diff --git a/public/terrain/19/858570/353856.terrain b/public/terrain/19/858570/353856.terrain new file mode 100644 index 000000000..20203ddd0 Binary files /dev/null and b/public/terrain/19/858570/353856.terrain differ diff --git a/public/terrain/19/858570/353857.terrain b/public/terrain/19/858570/353857.terrain new file mode 100644 index 000000000..f32e7ecf5 Binary files /dev/null and b/public/terrain/19/858570/353857.terrain differ diff --git a/public/terrain/19/858570/353858.terrain b/public/terrain/19/858570/353858.terrain new file mode 100644 index 000000000..2664ac271 Binary files /dev/null and b/public/terrain/19/858570/353858.terrain differ diff --git a/public/terrain/19/858570/353859.terrain b/public/terrain/19/858570/353859.terrain new file mode 100644 index 000000000..2f11de6f6 Binary files /dev/null and b/public/terrain/19/858570/353859.terrain differ diff --git a/public/terrain/19/858570/353860.terrain b/public/terrain/19/858570/353860.terrain new file mode 100644 index 000000000..dedcef931 Binary files /dev/null and b/public/terrain/19/858570/353860.terrain differ diff --git a/public/terrain/19/858570/353861.terrain b/public/terrain/19/858570/353861.terrain new file mode 100644 index 000000000..2a90b6838 Binary files /dev/null and b/public/terrain/19/858570/353861.terrain differ diff --git a/public/terrain/19/858570/353862.terrain b/public/terrain/19/858570/353862.terrain new file mode 100644 index 000000000..18f2dddc7 Binary files /dev/null and b/public/terrain/19/858570/353862.terrain differ diff --git a/public/terrain/19/858570/353863.terrain b/public/terrain/19/858570/353863.terrain new file mode 100644 index 000000000..a87d9c566 Binary files /dev/null and b/public/terrain/19/858570/353863.terrain differ diff --git a/public/terrain/19/858570/353864.terrain b/public/terrain/19/858570/353864.terrain new file mode 100644 index 000000000..2a55f2cfc Binary files /dev/null and b/public/terrain/19/858570/353864.terrain differ diff --git a/public/terrain/19/858570/353865.terrain b/public/terrain/19/858570/353865.terrain new file mode 100644 index 000000000..6d0e571eb Binary files /dev/null and b/public/terrain/19/858570/353865.terrain differ diff --git a/public/terrain/19/858570/353866.terrain b/public/terrain/19/858570/353866.terrain new file mode 100644 index 000000000..ab919e476 Binary files /dev/null and b/public/terrain/19/858570/353866.terrain differ diff --git a/public/terrain/19/858570/353867.terrain b/public/terrain/19/858570/353867.terrain new file mode 100644 index 000000000..68c69cda5 Binary files /dev/null and b/public/terrain/19/858570/353867.terrain differ diff --git a/public/terrain/19/858570/353868.terrain b/public/terrain/19/858570/353868.terrain new file mode 100644 index 000000000..9abffc16d Binary files /dev/null and b/public/terrain/19/858570/353868.terrain differ diff --git a/public/terrain/19/858570/353869.terrain b/public/terrain/19/858570/353869.terrain new file mode 100644 index 000000000..da9b08e9a Binary files /dev/null and b/public/terrain/19/858570/353869.terrain differ diff --git a/public/terrain/19/858570/353870.terrain b/public/terrain/19/858570/353870.terrain new file mode 100644 index 000000000..42e7ad8d1 Binary files /dev/null and b/public/terrain/19/858570/353870.terrain differ diff --git a/public/terrain/19/858570/353871.terrain b/public/terrain/19/858570/353871.terrain new file mode 100644 index 000000000..c412b441a Binary files /dev/null and b/public/terrain/19/858570/353871.terrain differ diff --git a/public/terrain/19/858570/353872.terrain b/public/terrain/19/858570/353872.terrain new file mode 100644 index 000000000..4c395d035 Binary files /dev/null and b/public/terrain/19/858570/353872.terrain differ diff --git a/public/terrain/19/858570/353873.terrain b/public/terrain/19/858570/353873.terrain new file mode 100644 index 000000000..7463b0e83 Binary files /dev/null and b/public/terrain/19/858570/353873.terrain differ diff --git a/public/terrain/19/858570/353874.terrain b/public/terrain/19/858570/353874.terrain new file mode 100644 index 000000000..50cb9862d Binary files /dev/null and b/public/terrain/19/858570/353874.terrain differ diff --git a/public/terrain/19/858570/353875.terrain b/public/terrain/19/858570/353875.terrain new file mode 100644 index 000000000..887e9ef9f Binary files /dev/null and b/public/terrain/19/858570/353875.terrain differ diff --git a/public/terrain/19/858570/353876.terrain b/public/terrain/19/858570/353876.terrain new file mode 100644 index 000000000..cd2d6ee55 Binary files /dev/null and b/public/terrain/19/858570/353876.terrain differ diff --git a/public/terrain/19/858570/353877.terrain b/public/terrain/19/858570/353877.terrain new file mode 100644 index 000000000..6baa35c82 Binary files /dev/null and b/public/terrain/19/858570/353877.terrain differ diff --git a/public/terrain/19/858570/353878.terrain b/public/terrain/19/858570/353878.terrain new file mode 100644 index 000000000..cfb8f7b69 Binary files /dev/null and b/public/terrain/19/858570/353878.terrain differ diff --git a/public/terrain/19/858570/353879.terrain b/public/terrain/19/858570/353879.terrain new file mode 100644 index 000000000..c3f4483a3 Binary files /dev/null and b/public/terrain/19/858570/353879.terrain differ diff --git a/public/terrain/19/858570/353880.terrain b/public/terrain/19/858570/353880.terrain new file mode 100644 index 000000000..4f68ec59e Binary files /dev/null and b/public/terrain/19/858570/353880.terrain differ diff --git a/public/terrain/19/858570/353881.terrain b/public/terrain/19/858570/353881.terrain new file mode 100644 index 000000000..0c8eeba60 Binary files /dev/null and b/public/terrain/19/858570/353881.terrain differ diff --git a/public/terrain/19/858570/353882.terrain b/public/terrain/19/858570/353882.terrain new file mode 100644 index 000000000..78a3e156c Binary files /dev/null and b/public/terrain/19/858570/353882.terrain differ diff --git a/public/terrain/19/858570/353883.terrain b/public/terrain/19/858570/353883.terrain new file mode 100644 index 000000000..b64092efe Binary files /dev/null and b/public/terrain/19/858570/353883.terrain differ diff --git a/public/terrain/19/858570/353884.terrain b/public/terrain/19/858570/353884.terrain new file mode 100644 index 000000000..7ce5a9173 Binary files /dev/null and b/public/terrain/19/858570/353884.terrain differ diff --git a/public/terrain/19/858570/353885.terrain b/public/terrain/19/858570/353885.terrain new file mode 100644 index 000000000..86555a4c1 Binary files /dev/null and b/public/terrain/19/858570/353885.terrain differ diff --git a/public/terrain/19/858570/353886.terrain b/public/terrain/19/858570/353886.terrain new file mode 100644 index 000000000..0de056a89 Binary files /dev/null and b/public/terrain/19/858570/353886.terrain differ diff --git a/public/terrain/19/858570/353887.terrain b/public/terrain/19/858570/353887.terrain new file mode 100644 index 000000000..fd0882c52 Binary files /dev/null and b/public/terrain/19/858570/353887.terrain differ diff --git a/public/terrain/19/858570/353888.terrain b/public/terrain/19/858570/353888.terrain new file mode 100644 index 000000000..0d9a266a5 Binary files /dev/null and b/public/terrain/19/858570/353888.terrain differ diff --git a/public/terrain/19/858570/353889.terrain b/public/terrain/19/858570/353889.terrain new file mode 100644 index 000000000..3714dc956 Binary files /dev/null and b/public/terrain/19/858570/353889.terrain differ diff --git a/public/terrain/19/858570/353890.terrain b/public/terrain/19/858570/353890.terrain new file mode 100644 index 000000000..084660e64 Binary files /dev/null and b/public/terrain/19/858570/353890.terrain differ diff --git a/public/terrain/19/858570/353891.terrain b/public/terrain/19/858570/353891.terrain new file mode 100644 index 000000000..ea0d2a22c Binary files /dev/null and b/public/terrain/19/858570/353891.terrain differ diff --git a/public/terrain/19/858570/353892.terrain b/public/terrain/19/858570/353892.terrain new file mode 100644 index 000000000..7018d12d8 Binary files /dev/null and b/public/terrain/19/858570/353892.terrain differ diff --git a/public/terrain/19/858570/353893.terrain b/public/terrain/19/858570/353893.terrain new file mode 100644 index 000000000..13f654b75 Binary files /dev/null and b/public/terrain/19/858570/353893.terrain differ diff --git a/public/terrain/19/858570/353894.terrain b/public/terrain/19/858570/353894.terrain new file mode 100644 index 000000000..4d8d207e6 Binary files /dev/null and b/public/terrain/19/858570/353894.terrain differ diff --git a/public/terrain/19/858570/353895.terrain b/public/terrain/19/858570/353895.terrain new file mode 100644 index 000000000..92117727d Binary files /dev/null and b/public/terrain/19/858570/353895.terrain differ diff --git a/public/terrain/19/858570/353896.terrain b/public/terrain/19/858570/353896.terrain new file mode 100644 index 000000000..7e1a4ae47 Binary files /dev/null and b/public/terrain/19/858570/353896.terrain differ diff --git a/public/terrain/19/858570/353897.terrain b/public/terrain/19/858570/353897.terrain new file mode 100644 index 000000000..34ab07282 Binary files /dev/null and b/public/terrain/19/858570/353897.terrain differ diff --git a/public/terrain/19/858570/353898.terrain b/public/terrain/19/858570/353898.terrain new file mode 100644 index 000000000..751ad24fa Binary files /dev/null and b/public/terrain/19/858570/353898.terrain differ diff --git a/public/terrain/19/858570/353899.terrain b/public/terrain/19/858570/353899.terrain new file mode 100644 index 000000000..d3ceabbe6 Binary files /dev/null and b/public/terrain/19/858570/353899.terrain differ diff --git a/public/terrain/19/858570/353900.terrain b/public/terrain/19/858570/353900.terrain new file mode 100644 index 000000000..d6b623e75 Binary files /dev/null and b/public/terrain/19/858570/353900.terrain differ diff --git a/public/terrain/19/858570/353901.terrain b/public/terrain/19/858570/353901.terrain new file mode 100644 index 000000000..9368de73f Binary files /dev/null and b/public/terrain/19/858570/353901.terrain differ diff --git a/public/terrain/19/858570/353902.terrain b/public/terrain/19/858570/353902.terrain new file mode 100644 index 000000000..d6264e5d1 Binary files /dev/null and b/public/terrain/19/858570/353902.terrain differ diff --git a/public/terrain/19/858570/353903.terrain b/public/terrain/19/858570/353903.terrain new file mode 100644 index 000000000..00036fe73 Binary files /dev/null and b/public/terrain/19/858570/353903.terrain differ diff --git a/public/terrain/19/858570/353904.terrain b/public/terrain/19/858570/353904.terrain new file mode 100644 index 000000000..d36c24dee Binary files /dev/null and b/public/terrain/19/858570/353904.terrain differ diff --git a/public/terrain/19/858570/353905.terrain b/public/terrain/19/858570/353905.terrain new file mode 100644 index 000000000..a2219b04d Binary files /dev/null and b/public/terrain/19/858570/353905.terrain differ diff --git a/public/terrain/19/858570/353906.terrain b/public/terrain/19/858570/353906.terrain new file mode 100644 index 000000000..1708a0125 Binary files /dev/null and b/public/terrain/19/858570/353906.terrain differ diff --git a/public/terrain/19/858570/353907.terrain b/public/terrain/19/858570/353907.terrain new file mode 100644 index 000000000..0fb8e0b0e Binary files /dev/null and b/public/terrain/19/858570/353907.terrain differ diff --git a/public/terrain/19/858570/353908.terrain b/public/terrain/19/858570/353908.terrain new file mode 100644 index 000000000..888b1151b Binary files /dev/null and b/public/terrain/19/858570/353908.terrain differ diff --git a/public/terrain/19/858570/353909.terrain b/public/terrain/19/858570/353909.terrain new file mode 100644 index 000000000..941a3ad0a Binary files /dev/null and b/public/terrain/19/858570/353909.terrain differ diff --git a/public/terrain/19/858570/353910.terrain b/public/terrain/19/858570/353910.terrain new file mode 100644 index 000000000..4d318b15e Binary files /dev/null and b/public/terrain/19/858570/353910.terrain differ diff --git a/public/terrain/19/858570/353911.terrain b/public/terrain/19/858570/353911.terrain new file mode 100644 index 000000000..bfffe2507 Binary files /dev/null and b/public/terrain/19/858570/353911.terrain differ diff --git a/public/terrain/19/858570/353912.terrain b/public/terrain/19/858570/353912.terrain new file mode 100644 index 000000000..5f92b4fb6 Binary files /dev/null and b/public/terrain/19/858570/353912.terrain differ diff --git a/public/terrain/19/858570/353913.terrain b/public/terrain/19/858570/353913.terrain new file mode 100644 index 000000000..8c49dd6f9 Binary files /dev/null and b/public/terrain/19/858570/353913.terrain differ diff --git a/public/terrain/19/858570/353914.terrain b/public/terrain/19/858570/353914.terrain new file mode 100644 index 000000000..9f1fdcde3 Binary files /dev/null and b/public/terrain/19/858570/353914.terrain differ diff --git a/public/terrain/19/858570/353915.terrain b/public/terrain/19/858570/353915.terrain new file mode 100644 index 000000000..7b89f13a3 Binary files /dev/null and b/public/terrain/19/858570/353915.terrain differ diff --git a/public/terrain/19/858570/353916.terrain b/public/terrain/19/858570/353916.terrain new file mode 100644 index 000000000..8891998a6 Binary files /dev/null and b/public/terrain/19/858570/353916.terrain differ diff --git a/public/terrain/19/858570/353917.terrain b/public/terrain/19/858570/353917.terrain new file mode 100644 index 000000000..9a522a216 Binary files /dev/null and b/public/terrain/19/858570/353917.terrain differ diff --git a/public/terrain/19/858570/353918.terrain b/public/terrain/19/858570/353918.terrain new file mode 100644 index 000000000..45d61a8b7 Binary files /dev/null and b/public/terrain/19/858570/353918.terrain differ diff --git a/public/terrain/19/858570/353919.terrain b/public/terrain/19/858570/353919.terrain new file mode 100644 index 000000000..9dafc47b3 Binary files /dev/null and b/public/terrain/19/858570/353919.terrain differ diff --git a/public/terrain/19/858570/353920.terrain b/public/terrain/19/858570/353920.terrain new file mode 100644 index 000000000..6fbd17831 Binary files /dev/null and b/public/terrain/19/858570/353920.terrain differ diff --git a/public/terrain/19/858570/353921.terrain b/public/terrain/19/858570/353921.terrain new file mode 100644 index 000000000..1d4c9884b Binary files /dev/null and b/public/terrain/19/858570/353921.terrain differ diff --git a/public/terrain/19/858570/353922.terrain b/public/terrain/19/858570/353922.terrain new file mode 100644 index 000000000..735b4e576 Binary files /dev/null and b/public/terrain/19/858570/353922.terrain differ diff --git a/public/terrain/19/858570/353923.terrain b/public/terrain/19/858570/353923.terrain new file mode 100644 index 000000000..264faf0d0 Binary files /dev/null and b/public/terrain/19/858570/353923.terrain differ diff --git a/public/terrain/19/858570/353924.terrain b/public/terrain/19/858570/353924.terrain new file mode 100644 index 000000000..20d7d6a57 Binary files /dev/null and b/public/terrain/19/858570/353924.terrain differ diff --git a/public/terrain/19/858570/353925.terrain b/public/terrain/19/858570/353925.terrain new file mode 100644 index 000000000..deda5848a Binary files /dev/null and b/public/terrain/19/858570/353925.terrain differ diff --git a/public/terrain/19/858570/353926.terrain b/public/terrain/19/858570/353926.terrain new file mode 100644 index 000000000..9a12f50ac Binary files /dev/null and b/public/terrain/19/858570/353926.terrain differ diff --git a/public/terrain/19/858570/353927.terrain b/public/terrain/19/858570/353927.terrain new file mode 100644 index 000000000..d9766f115 Binary files /dev/null and b/public/terrain/19/858570/353927.terrain differ diff --git a/public/terrain/19/858570/353928.terrain b/public/terrain/19/858570/353928.terrain new file mode 100644 index 000000000..ffcd7166c Binary files /dev/null and b/public/terrain/19/858570/353928.terrain differ diff --git a/public/terrain/19/858570/353929.terrain b/public/terrain/19/858570/353929.terrain new file mode 100644 index 000000000..a33943e86 Binary files /dev/null and b/public/terrain/19/858570/353929.terrain differ diff --git a/public/terrain/19/858570/353930.terrain b/public/terrain/19/858570/353930.terrain new file mode 100644 index 000000000..4e96751f9 Binary files /dev/null and b/public/terrain/19/858570/353930.terrain differ diff --git a/public/terrain/19/858570/353931.terrain b/public/terrain/19/858570/353931.terrain new file mode 100644 index 000000000..bb2722d76 Binary files /dev/null and b/public/terrain/19/858570/353931.terrain differ diff --git a/public/terrain/19/858570/353932.terrain b/public/terrain/19/858570/353932.terrain new file mode 100644 index 000000000..202bab283 Binary files /dev/null and b/public/terrain/19/858570/353932.terrain differ diff --git a/public/terrain/19/858570/353933.terrain b/public/terrain/19/858570/353933.terrain new file mode 100644 index 000000000..eaac8b28f Binary files /dev/null and b/public/terrain/19/858570/353933.terrain differ diff --git a/public/terrain/19/858570/353934.terrain b/public/terrain/19/858570/353934.terrain new file mode 100644 index 000000000..9eaea8b01 Binary files /dev/null and b/public/terrain/19/858570/353934.terrain differ diff --git a/public/terrain/19/858570/353935.terrain b/public/terrain/19/858570/353935.terrain new file mode 100644 index 000000000..c75306502 Binary files /dev/null and b/public/terrain/19/858570/353935.terrain differ diff --git a/public/terrain/19/858570/353936.terrain b/public/terrain/19/858570/353936.terrain new file mode 100644 index 000000000..124f51539 Binary files /dev/null and b/public/terrain/19/858570/353936.terrain differ diff --git a/public/terrain/19/858570/353937.terrain b/public/terrain/19/858570/353937.terrain new file mode 100644 index 000000000..1a77c48bd Binary files /dev/null and b/public/terrain/19/858570/353937.terrain differ diff --git a/public/terrain/19/858570/353938.terrain b/public/terrain/19/858570/353938.terrain new file mode 100644 index 000000000..005bdfb34 Binary files /dev/null and b/public/terrain/19/858570/353938.terrain differ diff --git a/public/terrain/19/858570/353939.terrain b/public/terrain/19/858570/353939.terrain new file mode 100644 index 000000000..82ca38fcb Binary files /dev/null and b/public/terrain/19/858570/353939.terrain differ diff --git a/public/terrain/19/858570/353940.terrain b/public/terrain/19/858570/353940.terrain new file mode 100644 index 000000000..80b4b9fc0 Binary files /dev/null and b/public/terrain/19/858570/353940.terrain differ diff --git a/public/terrain/19/858570/353941.terrain b/public/terrain/19/858570/353941.terrain new file mode 100644 index 000000000..e03101042 Binary files /dev/null and b/public/terrain/19/858570/353941.terrain differ diff --git a/public/terrain/19/858570/353942.terrain b/public/terrain/19/858570/353942.terrain new file mode 100644 index 000000000..6ae877a23 Binary files /dev/null and b/public/terrain/19/858570/353942.terrain differ diff --git a/public/terrain/19/858570/353943.terrain b/public/terrain/19/858570/353943.terrain new file mode 100644 index 000000000..05ba53b87 Binary files /dev/null and b/public/terrain/19/858570/353943.terrain differ diff --git a/public/terrain/19/858570/353944.terrain b/public/terrain/19/858570/353944.terrain new file mode 100644 index 000000000..10e0904b0 Binary files /dev/null and b/public/terrain/19/858570/353944.terrain differ diff --git a/public/terrain/19/858570/353945.terrain b/public/terrain/19/858570/353945.terrain new file mode 100644 index 000000000..138399355 Binary files /dev/null and b/public/terrain/19/858570/353945.terrain differ diff --git a/public/terrain/19/858570/353946.terrain b/public/terrain/19/858570/353946.terrain new file mode 100644 index 000000000..f7f80a858 Binary files /dev/null and b/public/terrain/19/858570/353946.terrain differ diff --git a/public/terrain/19/858570/353947.terrain b/public/terrain/19/858570/353947.terrain new file mode 100644 index 000000000..5b24e182b Binary files /dev/null and b/public/terrain/19/858570/353947.terrain differ diff --git a/public/terrain/19/858570/353948.terrain b/public/terrain/19/858570/353948.terrain new file mode 100644 index 000000000..6125b947b Binary files /dev/null and b/public/terrain/19/858570/353948.terrain differ diff --git a/public/terrain/19/858570/353949.terrain b/public/terrain/19/858570/353949.terrain new file mode 100644 index 000000000..bcd583484 Binary files /dev/null and b/public/terrain/19/858570/353949.terrain differ diff --git a/public/terrain/19/858570/353950.terrain b/public/terrain/19/858570/353950.terrain new file mode 100644 index 000000000..d97ca5c35 Binary files /dev/null and b/public/terrain/19/858570/353950.terrain differ diff --git a/public/terrain/19/858570/353951.terrain b/public/terrain/19/858570/353951.terrain new file mode 100644 index 000000000..6dd10aa44 Binary files /dev/null and b/public/terrain/19/858570/353951.terrain differ diff --git a/public/terrain/19/858570/353952.terrain b/public/terrain/19/858570/353952.terrain new file mode 100644 index 000000000..c14760b59 Binary files /dev/null and b/public/terrain/19/858570/353952.terrain differ diff --git a/public/terrain/19/858570/353953.terrain b/public/terrain/19/858570/353953.terrain new file mode 100644 index 000000000..ca3e68858 Binary files /dev/null and b/public/terrain/19/858570/353953.terrain differ diff --git a/public/terrain/19/858570/353954.terrain b/public/terrain/19/858570/353954.terrain new file mode 100644 index 000000000..9471bf9f0 Binary files /dev/null and b/public/terrain/19/858570/353954.terrain differ diff --git a/public/terrain/19/858570/353955.terrain b/public/terrain/19/858570/353955.terrain new file mode 100644 index 000000000..f745f4f7d Binary files /dev/null and b/public/terrain/19/858570/353955.terrain differ diff --git a/public/terrain/19/858570/353956.terrain b/public/terrain/19/858570/353956.terrain new file mode 100644 index 000000000..ee6f926dc Binary files /dev/null and b/public/terrain/19/858570/353956.terrain differ diff --git a/public/terrain/19/858570/353957.terrain b/public/terrain/19/858570/353957.terrain new file mode 100644 index 000000000..4e98aba48 Binary files /dev/null and b/public/terrain/19/858570/353957.terrain differ diff --git a/public/terrain/19/858570/353958.terrain b/public/terrain/19/858570/353958.terrain new file mode 100644 index 000000000..f1259d392 Binary files /dev/null and b/public/terrain/19/858570/353958.terrain differ diff --git a/public/terrain/19/858570/353959.terrain b/public/terrain/19/858570/353959.terrain new file mode 100644 index 000000000..d2690c927 Binary files /dev/null and b/public/terrain/19/858570/353959.terrain differ diff --git a/public/terrain/19/858570/353960.terrain b/public/terrain/19/858570/353960.terrain new file mode 100644 index 000000000..39532ee1c Binary files /dev/null and b/public/terrain/19/858570/353960.terrain differ diff --git a/public/terrain/19/858570/353961.terrain b/public/terrain/19/858570/353961.terrain new file mode 100644 index 000000000..56ced58a1 Binary files /dev/null and b/public/terrain/19/858570/353961.terrain differ diff --git a/public/terrain/19/858570/353962.terrain b/public/terrain/19/858570/353962.terrain new file mode 100644 index 000000000..772f07a85 Binary files /dev/null and b/public/terrain/19/858570/353962.terrain differ diff --git a/public/terrain/19/858570/353963.terrain b/public/terrain/19/858570/353963.terrain new file mode 100644 index 000000000..ab3d4a174 Binary files /dev/null and b/public/terrain/19/858570/353963.terrain differ diff --git a/public/terrain/19/858570/353964.terrain b/public/terrain/19/858570/353964.terrain new file mode 100644 index 000000000..4aaec19c4 Binary files /dev/null and b/public/terrain/19/858570/353964.terrain differ diff --git a/public/terrain/19/858570/353965.terrain b/public/terrain/19/858570/353965.terrain new file mode 100644 index 000000000..d2fac229f Binary files /dev/null and b/public/terrain/19/858570/353965.terrain differ diff --git a/public/terrain/19/858570/353966.terrain b/public/terrain/19/858570/353966.terrain new file mode 100644 index 000000000..2138ab16f Binary files /dev/null and b/public/terrain/19/858570/353966.terrain differ diff --git a/public/terrain/19/858570/353967.terrain b/public/terrain/19/858570/353967.terrain new file mode 100644 index 000000000..2026ebf1b Binary files /dev/null and b/public/terrain/19/858570/353967.terrain differ diff --git a/public/terrain/19/858570/353968.terrain b/public/terrain/19/858570/353968.terrain new file mode 100644 index 000000000..b99798d25 Binary files /dev/null and b/public/terrain/19/858570/353968.terrain differ diff --git a/public/terrain/19/858570/353969.terrain b/public/terrain/19/858570/353969.terrain new file mode 100644 index 000000000..9d68c45cf Binary files /dev/null and b/public/terrain/19/858570/353969.terrain differ diff --git a/public/terrain/19/858570/353970.terrain b/public/terrain/19/858570/353970.terrain new file mode 100644 index 000000000..3875db833 Binary files /dev/null and b/public/terrain/19/858570/353970.terrain differ diff --git a/public/terrain/19/858570/353971.terrain b/public/terrain/19/858570/353971.terrain new file mode 100644 index 000000000..2cb4433b2 Binary files /dev/null and b/public/terrain/19/858570/353971.terrain differ diff --git a/public/terrain/19/858570/353972.terrain b/public/terrain/19/858570/353972.terrain new file mode 100644 index 000000000..e0d59af03 Binary files /dev/null and b/public/terrain/19/858570/353972.terrain differ diff --git a/public/terrain/19/858570/353973.terrain b/public/terrain/19/858570/353973.terrain new file mode 100644 index 000000000..ab5cdf836 Binary files /dev/null and b/public/terrain/19/858570/353973.terrain differ diff --git a/public/terrain/19/858570/353974.terrain b/public/terrain/19/858570/353974.terrain new file mode 100644 index 000000000..32cd98159 Binary files /dev/null and b/public/terrain/19/858570/353974.terrain differ diff --git a/public/terrain/19/858570/353975.terrain b/public/terrain/19/858570/353975.terrain new file mode 100644 index 000000000..6d4c94c84 Binary files /dev/null and b/public/terrain/19/858570/353975.terrain differ diff --git a/public/terrain/19/858570/353976.terrain b/public/terrain/19/858570/353976.terrain new file mode 100644 index 000000000..24bf87097 Binary files /dev/null and b/public/terrain/19/858570/353976.terrain differ diff --git a/public/terrain/19/858570/353977.terrain b/public/terrain/19/858570/353977.terrain new file mode 100644 index 000000000..4fc1b0095 Binary files /dev/null and b/public/terrain/19/858570/353977.terrain differ diff --git a/public/terrain/19/858570/353978.terrain b/public/terrain/19/858570/353978.terrain new file mode 100644 index 000000000..b0c9f62a9 Binary files /dev/null and b/public/terrain/19/858570/353978.terrain differ diff --git a/public/terrain/19/858570/353979.terrain b/public/terrain/19/858570/353979.terrain new file mode 100644 index 000000000..f866ec600 Binary files /dev/null and b/public/terrain/19/858570/353979.terrain differ diff --git a/public/terrain/19/858570/353980.terrain b/public/terrain/19/858570/353980.terrain new file mode 100644 index 000000000..ff7050d3d Binary files /dev/null and b/public/terrain/19/858570/353980.terrain differ diff --git a/public/terrain/19/858570/353981.terrain b/public/terrain/19/858570/353981.terrain new file mode 100644 index 000000000..b274d9ea1 Binary files /dev/null and b/public/terrain/19/858570/353981.terrain differ diff --git a/public/terrain/19/858570/353982.terrain b/public/terrain/19/858570/353982.terrain new file mode 100644 index 000000000..4bac2eac3 Binary files /dev/null and b/public/terrain/19/858570/353982.terrain differ diff --git a/public/terrain/19/858570/353983.terrain b/public/terrain/19/858570/353983.terrain new file mode 100644 index 000000000..c27f1dd67 Binary files /dev/null and b/public/terrain/19/858570/353983.terrain differ diff --git a/public/terrain/19/858570/353984.terrain b/public/terrain/19/858570/353984.terrain new file mode 100644 index 000000000..c0cd4de18 Binary files /dev/null and b/public/terrain/19/858570/353984.terrain differ diff --git a/public/terrain/19/858570/353985.terrain b/public/terrain/19/858570/353985.terrain new file mode 100644 index 000000000..cd14472da Binary files /dev/null and b/public/terrain/19/858570/353985.terrain differ diff --git a/public/terrain/19/858570/353986.terrain b/public/terrain/19/858570/353986.terrain new file mode 100644 index 000000000..0dc2bc4fc Binary files /dev/null and b/public/terrain/19/858570/353986.terrain differ diff --git a/public/terrain/19/858570/353987.terrain b/public/terrain/19/858570/353987.terrain new file mode 100644 index 000000000..e49c0634f Binary files /dev/null and b/public/terrain/19/858570/353987.terrain differ diff --git a/public/terrain/19/858570/353988.terrain b/public/terrain/19/858570/353988.terrain new file mode 100644 index 000000000..86fe851d5 Binary files /dev/null and b/public/terrain/19/858570/353988.terrain differ diff --git a/public/terrain/19/858570/353989.terrain b/public/terrain/19/858570/353989.terrain new file mode 100644 index 000000000..6621ec128 Binary files /dev/null and b/public/terrain/19/858570/353989.terrain differ diff --git a/public/terrain/19/858570/353990.terrain b/public/terrain/19/858570/353990.terrain new file mode 100644 index 000000000..ce656d476 Binary files /dev/null and b/public/terrain/19/858570/353990.terrain differ diff --git a/public/terrain/19/858570/353991.terrain b/public/terrain/19/858570/353991.terrain new file mode 100644 index 000000000..c80946a60 Binary files /dev/null and b/public/terrain/19/858570/353991.terrain differ diff --git a/public/terrain/19/858570/353992.terrain b/public/terrain/19/858570/353992.terrain new file mode 100644 index 000000000..147ac8e5c Binary files /dev/null and b/public/terrain/19/858570/353992.terrain differ diff --git a/public/terrain/19/858570/353993.terrain b/public/terrain/19/858570/353993.terrain new file mode 100644 index 000000000..0a030232c Binary files /dev/null and b/public/terrain/19/858570/353993.terrain differ diff --git a/public/terrain/19/858570/353994.terrain b/public/terrain/19/858570/353994.terrain new file mode 100644 index 000000000..ca3f1f0ae Binary files /dev/null and b/public/terrain/19/858570/353994.terrain differ diff --git a/public/terrain/19/858570/353995.terrain b/public/terrain/19/858570/353995.terrain new file mode 100644 index 000000000..c3fba8f85 Binary files /dev/null and b/public/terrain/19/858570/353995.terrain differ diff --git a/public/terrain/19/858570/353996.terrain b/public/terrain/19/858570/353996.terrain new file mode 100644 index 000000000..e0505791e Binary files /dev/null and b/public/terrain/19/858570/353996.terrain differ diff --git a/public/terrain/19/858570/353997.terrain b/public/terrain/19/858570/353997.terrain new file mode 100644 index 000000000..a9b073de9 Binary files /dev/null and b/public/terrain/19/858570/353997.terrain differ diff --git a/public/terrain/19/858570/353998.terrain b/public/terrain/19/858570/353998.terrain new file mode 100644 index 000000000..676fe1d08 Binary files /dev/null and b/public/terrain/19/858570/353998.terrain differ diff --git a/public/terrain/19/858570/353999.terrain b/public/terrain/19/858570/353999.terrain new file mode 100644 index 000000000..e27aeb015 Binary files /dev/null and b/public/terrain/19/858570/353999.terrain differ diff --git a/public/terrain/19/858570/354000.terrain b/public/terrain/19/858570/354000.terrain new file mode 100644 index 000000000..ed4139ca8 Binary files /dev/null and b/public/terrain/19/858570/354000.terrain differ diff --git a/public/terrain/19/858570/354001.terrain b/public/terrain/19/858570/354001.terrain new file mode 100644 index 000000000..e448a9f98 Binary files /dev/null and b/public/terrain/19/858570/354001.terrain differ diff --git a/public/terrain/19/858570/354002.terrain b/public/terrain/19/858570/354002.terrain new file mode 100644 index 000000000..fcfbb0645 Binary files /dev/null and b/public/terrain/19/858570/354002.terrain differ diff --git a/public/terrain/19/858570/354003.terrain b/public/terrain/19/858570/354003.terrain new file mode 100644 index 000000000..256024215 Binary files /dev/null and b/public/terrain/19/858570/354003.terrain differ diff --git a/public/terrain/19/858570/354004.terrain b/public/terrain/19/858570/354004.terrain new file mode 100644 index 000000000..002cf4599 Binary files /dev/null and b/public/terrain/19/858570/354004.terrain differ diff --git a/public/terrain/19/858570/354005.terrain b/public/terrain/19/858570/354005.terrain new file mode 100644 index 000000000..dd2db0336 Binary files /dev/null and b/public/terrain/19/858570/354005.terrain differ diff --git a/public/terrain/19/858570/354006.terrain b/public/terrain/19/858570/354006.terrain new file mode 100644 index 000000000..4139c075b Binary files /dev/null and b/public/terrain/19/858570/354006.terrain differ diff --git a/public/terrain/19/858570/354007.terrain b/public/terrain/19/858570/354007.terrain new file mode 100644 index 000000000..76f94aa8b Binary files /dev/null and b/public/terrain/19/858570/354007.terrain differ diff --git a/public/terrain/19/858570/354008.terrain b/public/terrain/19/858570/354008.terrain new file mode 100644 index 000000000..ba732b4b1 Binary files /dev/null and b/public/terrain/19/858570/354008.terrain differ diff --git a/public/terrain/19/858570/354009.terrain b/public/terrain/19/858570/354009.terrain new file mode 100644 index 000000000..2c2a95974 Binary files /dev/null and b/public/terrain/19/858570/354009.terrain differ diff --git a/public/terrain/19/858570/354010.terrain b/public/terrain/19/858570/354010.terrain new file mode 100644 index 000000000..470d0475d Binary files /dev/null and b/public/terrain/19/858570/354010.terrain differ diff --git a/public/terrain/19/858570/354011.terrain b/public/terrain/19/858570/354011.terrain new file mode 100644 index 000000000..5c7d124d8 Binary files /dev/null and b/public/terrain/19/858570/354011.terrain differ diff --git a/public/terrain/19/858570/354012.terrain b/public/terrain/19/858570/354012.terrain new file mode 100644 index 000000000..908ac6028 Binary files /dev/null and b/public/terrain/19/858570/354012.terrain differ diff --git a/public/terrain/19/858570/354013.terrain b/public/terrain/19/858570/354013.terrain new file mode 100644 index 000000000..afc6904cb Binary files /dev/null and b/public/terrain/19/858570/354013.terrain differ diff --git a/public/terrain/19/858570/354014.terrain b/public/terrain/19/858570/354014.terrain new file mode 100644 index 000000000..a58d0cc1c Binary files /dev/null and b/public/terrain/19/858570/354014.terrain differ diff --git a/public/terrain/19/858570/354015.terrain b/public/terrain/19/858570/354015.terrain new file mode 100644 index 000000000..ab829fa5e Binary files /dev/null and b/public/terrain/19/858570/354015.terrain differ diff --git a/public/terrain/19/858570/354016.terrain b/public/terrain/19/858570/354016.terrain new file mode 100644 index 000000000..93042477d Binary files /dev/null and b/public/terrain/19/858570/354016.terrain differ diff --git a/public/terrain/19/858570/354017.terrain b/public/terrain/19/858570/354017.terrain new file mode 100644 index 000000000..344925f36 Binary files /dev/null and b/public/terrain/19/858570/354017.terrain differ diff --git a/public/terrain/19/858570/354018.terrain b/public/terrain/19/858570/354018.terrain new file mode 100644 index 000000000..779bde389 Binary files /dev/null and b/public/terrain/19/858570/354018.terrain differ diff --git a/public/terrain/19/858570/354019.terrain b/public/terrain/19/858570/354019.terrain new file mode 100644 index 000000000..9c4353498 Binary files /dev/null and b/public/terrain/19/858570/354019.terrain differ diff --git a/public/terrain/19/858570/354020.terrain b/public/terrain/19/858570/354020.terrain new file mode 100644 index 000000000..97ef7a6d3 Binary files /dev/null and b/public/terrain/19/858570/354020.terrain differ diff --git a/public/terrain/19/858570/354021.terrain b/public/terrain/19/858570/354021.terrain new file mode 100644 index 000000000..7d47d4190 Binary files /dev/null and b/public/terrain/19/858570/354021.terrain differ diff --git a/public/terrain/19/858570/354022.terrain b/public/terrain/19/858570/354022.terrain new file mode 100644 index 000000000..fc93d20ec Binary files /dev/null and b/public/terrain/19/858570/354022.terrain differ diff --git a/public/terrain/19/858570/354023.terrain b/public/terrain/19/858570/354023.terrain new file mode 100644 index 000000000..9e34ce1f7 Binary files /dev/null and b/public/terrain/19/858570/354023.terrain differ diff --git a/public/terrain/19/858570/354024.terrain b/public/terrain/19/858570/354024.terrain new file mode 100644 index 000000000..efb3ef682 Binary files /dev/null and b/public/terrain/19/858570/354024.terrain differ diff --git a/public/terrain/19/858570/354025.terrain b/public/terrain/19/858570/354025.terrain new file mode 100644 index 000000000..ef93851a8 Binary files /dev/null and b/public/terrain/19/858570/354025.terrain differ diff --git a/public/terrain/19/858570/354026.terrain b/public/terrain/19/858570/354026.terrain new file mode 100644 index 000000000..64dea6365 Binary files /dev/null and b/public/terrain/19/858570/354026.terrain differ diff --git a/public/terrain/19/858570/354027.terrain b/public/terrain/19/858570/354027.terrain new file mode 100644 index 000000000..52a2d1b6b Binary files /dev/null and b/public/terrain/19/858570/354027.terrain differ diff --git a/public/terrain/19/858570/354028.terrain b/public/terrain/19/858570/354028.terrain new file mode 100644 index 000000000..9f23e9e24 Binary files /dev/null and b/public/terrain/19/858570/354028.terrain differ diff --git a/public/terrain/19/858570/354029.terrain b/public/terrain/19/858570/354029.terrain new file mode 100644 index 000000000..e52e63e4c Binary files /dev/null and b/public/terrain/19/858570/354029.terrain differ diff --git a/public/terrain/19/858570/354030.terrain b/public/terrain/19/858570/354030.terrain new file mode 100644 index 000000000..d7f37612b Binary files /dev/null and b/public/terrain/19/858570/354030.terrain differ diff --git a/public/terrain/19/858570/354031.terrain b/public/terrain/19/858570/354031.terrain new file mode 100644 index 000000000..cfa2aa993 Binary files /dev/null and b/public/terrain/19/858570/354031.terrain differ diff --git a/public/terrain/19/858570/354032.terrain b/public/terrain/19/858570/354032.terrain new file mode 100644 index 000000000..8120e35ba Binary files /dev/null and b/public/terrain/19/858570/354032.terrain differ diff --git a/public/terrain/19/858570/354033.terrain b/public/terrain/19/858570/354033.terrain new file mode 100644 index 000000000..61c8f3ad7 Binary files /dev/null and b/public/terrain/19/858570/354033.terrain differ diff --git a/public/terrain/19/858570/354034.terrain b/public/terrain/19/858570/354034.terrain new file mode 100644 index 000000000..187b880c3 Binary files /dev/null and b/public/terrain/19/858570/354034.terrain differ diff --git a/public/terrain/19/858570/354035.terrain b/public/terrain/19/858570/354035.terrain new file mode 100644 index 000000000..a3f07245b Binary files /dev/null and b/public/terrain/19/858570/354035.terrain differ diff --git a/public/terrain/19/858570/354036.terrain b/public/terrain/19/858570/354036.terrain new file mode 100644 index 000000000..764dd5ebc Binary files /dev/null and b/public/terrain/19/858570/354036.terrain differ diff --git a/public/terrain/19/858570/354037.terrain b/public/terrain/19/858570/354037.terrain new file mode 100644 index 000000000..5e915b2bc Binary files /dev/null and b/public/terrain/19/858570/354037.terrain differ diff --git a/public/terrain/19/858570/354038.terrain b/public/terrain/19/858570/354038.terrain new file mode 100644 index 000000000..980012491 Binary files /dev/null and b/public/terrain/19/858570/354038.terrain differ diff --git a/public/terrain/19/858570/354039.terrain b/public/terrain/19/858570/354039.terrain new file mode 100644 index 000000000..fb02d14d1 Binary files /dev/null and b/public/terrain/19/858570/354039.terrain differ diff --git a/public/terrain/19/858570/354040.terrain b/public/terrain/19/858570/354040.terrain new file mode 100644 index 000000000..3dc6475bf Binary files /dev/null and b/public/terrain/19/858570/354040.terrain differ diff --git a/public/terrain/19/858570/354041.terrain b/public/terrain/19/858570/354041.terrain new file mode 100644 index 000000000..2dc6138af Binary files /dev/null and b/public/terrain/19/858570/354041.terrain differ diff --git a/public/terrain/19/858570/354042.terrain b/public/terrain/19/858570/354042.terrain new file mode 100644 index 000000000..b68ea26b2 Binary files /dev/null and b/public/terrain/19/858570/354042.terrain differ diff --git a/public/terrain/19/858570/354043.terrain b/public/terrain/19/858570/354043.terrain new file mode 100644 index 000000000..41064594f Binary files /dev/null and b/public/terrain/19/858570/354043.terrain differ diff --git a/public/terrain/19/858570/354044.terrain b/public/terrain/19/858570/354044.terrain new file mode 100644 index 000000000..4c98dd24c Binary files /dev/null and b/public/terrain/19/858570/354044.terrain differ diff --git a/public/terrain/19/858570/354045.terrain b/public/terrain/19/858570/354045.terrain new file mode 100644 index 000000000..9ec5ee72f Binary files /dev/null and b/public/terrain/19/858570/354045.terrain differ diff --git a/public/terrain/19/858570/354046.terrain b/public/terrain/19/858570/354046.terrain new file mode 100644 index 000000000..0443ba743 Binary files /dev/null and b/public/terrain/19/858570/354046.terrain differ diff --git a/public/terrain/19/858570/354047.terrain b/public/terrain/19/858570/354047.terrain new file mode 100644 index 000000000..a1b90e61e Binary files /dev/null and b/public/terrain/19/858570/354047.terrain differ diff --git a/public/terrain/19/858570/354048.terrain b/public/terrain/19/858570/354048.terrain new file mode 100644 index 000000000..0e5a780b0 Binary files /dev/null and b/public/terrain/19/858570/354048.terrain differ diff --git a/public/terrain/19/858570/354049.terrain b/public/terrain/19/858570/354049.terrain new file mode 100644 index 000000000..4d1ccfd3f Binary files /dev/null and b/public/terrain/19/858570/354049.terrain differ diff --git a/public/terrain/19/858570/354050.terrain b/public/terrain/19/858570/354050.terrain new file mode 100644 index 000000000..6fc0eaeb3 Binary files /dev/null and b/public/terrain/19/858570/354050.terrain differ diff --git a/public/terrain/19/858570/354051.terrain b/public/terrain/19/858570/354051.terrain new file mode 100644 index 000000000..e059bc763 Binary files /dev/null and b/public/terrain/19/858570/354051.terrain differ diff --git a/public/terrain/19/858570/354052.terrain b/public/terrain/19/858570/354052.terrain new file mode 100644 index 000000000..5a22a25a8 Binary files /dev/null and b/public/terrain/19/858570/354052.terrain differ diff --git a/public/terrain/19/858570/354053.terrain b/public/terrain/19/858570/354053.terrain new file mode 100644 index 000000000..89bb03262 Binary files /dev/null and b/public/terrain/19/858570/354053.terrain differ diff --git a/public/terrain/19/858570/354054.terrain b/public/terrain/19/858570/354054.terrain new file mode 100644 index 000000000..21d1f8093 Binary files /dev/null and b/public/terrain/19/858570/354054.terrain differ diff --git a/public/terrain/19/858570/354055.terrain b/public/terrain/19/858570/354055.terrain new file mode 100644 index 000000000..52c40285a Binary files /dev/null and b/public/terrain/19/858570/354055.terrain differ diff --git a/public/terrain/19/858570/354056.terrain b/public/terrain/19/858570/354056.terrain new file mode 100644 index 000000000..046a1e4ea Binary files /dev/null and b/public/terrain/19/858570/354056.terrain differ diff --git a/public/terrain/19/858570/354057.terrain b/public/terrain/19/858570/354057.terrain new file mode 100644 index 000000000..59fd89f9b Binary files /dev/null and b/public/terrain/19/858570/354057.terrain differ diff --git a/public/terrain/19/858570/354058.terrain b/public/terrain/19/858570/354058.terrain new file mode 100644 index 000000000..f560044be Binary files /dev/null and b/public/terrain/19/858570/354058.terrain differ diff --git a/public/terrain/19/858570/354059.terrain b/public/terrain/19/858570/354059.terrain new file mode 100644 index 000000000..437735cb2 Binary files /dev/null and b/public/terrain/19/858570/354059.terrain differ diff --git a/public/terrain/19/858571/353743.terrain b/public/terrain/19/858571/353743.terrain new file mode 100644 index 000000000..70de5129c Binary files /dev/null and b/public/terrain/19/858571/353743.terrain differ diff --git a/public/terrain/19/858571/353744.terrain b/public/terrain/19/858571/353744.terrain new file mode 100644 index 000000000..c126b0c1c Binary files /dev/null and b/public/terrain/19/858571/353744.terrain differ diff --git a/public/terrain/19/858571/353745.terrain b/public/terrain/19/858571/353745.terrain new file mode 100644 index 000000000..dfa8ee917 Binary files /dev/null and b/public/terrain/19/858571/353745.terrain differ diff --git a/public/terrain/19/858571/353746.terrain b/public/terrain/19/858571/353746.terrain new file mode 100644 index 000000000..3f261339d Binary files /dev/null and b/public/terrain/19/858571/353746.terrain differ diff --git a/public/terrain/19/858571/353747.terrain b/public/terrain/19/858571/353747.terrain new file mode 100644 index 000000000..5f7ea2b2f Binary files /dev/null and b/public/terrain/19/858571/353747.terrain differ diff --git a/public/terrain/19/858571/353748.terrain b/public/terrain/19/858571/353748.terrain new file mode 100644 index 000000000..0c76696fe Binary files /dev/null and b/public/terrain/19/858571/353748.terrain differ diff --git a/public/terrain/19/858571/353749.terrain b/public/terrain/19/858571/353749.terrain new file mode 100644 index 000000000..6236ad561 Binary files /dev/null and b/public/terrain/19/858571/353749.terrain differ diff --git a/public/terrain/19/858571/353750.terrain b/public/terrain/19/858571/353750.terrain new file mode 100644 index 000000000..ab3274cf7 Binary files /dev/null and b/public/terrain/19/858571/353750.terrain differ diff --git a/public/terrain/19/858571/353751.terrain b/public/terrain/19/858571/353751.terrain new file mode 100644 index 000000000..58ce6fb90 Binary files /dev/null and b/public/terrain/19/858571/353751.terrain differ diff --git a/public/terrain/19/858571/353752.terrain b/public/terrain/19/858571/353752.terrain new file mode 100644 index 000000000..6d7737eca Binary files /dev/null and b/public/terrain/19/858571/353752.terrain differ diff --git a/public/terrain/19/858571/353753.terrain b/public/terrain/19/858571/353753.terrain new file mode 100644 index 000000000..cc50bd1d0 Binary files /dev/null and b/public/terrain/19/858571/353753.terrain differ diff --git a/public/terrain/19/858571/353754.terrain b/public/terrain/19/858571/353754.terrain new file mode 100644 index 000000000..2458a932b Binary files /dev/null and b/public/terrain/19/858571/353754.terrain differ diff --git a/public/terrain/19/858571/353755.terrain b/public/terrain/19/858571/353755.terrain new file mode 100644 index 000000000..a4142816b Binary files /dev/null and b/public/terrain/19/858571/353755.terrain differ diff --git a/public/terrain/19/858571/353756.terrain b/public/terrain/19/858571/353756.terrain new file mode 100644 index 000000000..724512ca4 Binary files /dev/null and b/public/terrain/19/858571/353756.terrain differ diff --git a/public/terrain/19/858571/353757.terrain b/public/terrain/19/858571/353757.terrain new file mode 100644 index 000000000..3a77ebb85 Binary files /dev/null and b/public/terrain/19/858571/353757.terrain differ diff --git a/public/terrain/19/858571/353758.terrain b/public/terrain/19/858571/353758.terrain new file mode 100644 index 000000000..8fcc601f6 Binary files /dev/null and b/public/terrain/19/858571/353758.terrain differ diff --git a/public/terrain/19/858571/353759.terrain b/public/terrain/19/858571/353759.terrain new file mode 100644 index 000000000..a9b568a4c Binary files /dev/null and b/public/terrain/19/858571/353759.terrain differ diff --git a/public/terrain/19/858571/353760.terrain b/public/terrain/19/858571/353760.terrain new file mode 100644 index 000000000..7f82820bb Binary files /dev/null and b/public/terrain/19/858571/353760.terrain differ diff --git a/public/terrain/19/858571/353761.terrain b/public/terrain/19/858571/353761.terrain new file mode 100644 index 000000000..7c17ee8ec Binary files /dev/null and b/public/terrain/19/858571/353761.terrain differ diff --git a/public/terrain/19/858571/353762.terrain b/public/terrain/19/858571/353762.terrain new file mode 100644 index 000000000..5fb6504fa Binary files /dev/null and b/public/terrain/19/858571/353762.terrain differ diff --git a/public/terrain/19/858571/353763.terrain b/public/terrain/19/858571/353763.terrain new file mode 100644 index 000000000..c05800f8b Binary files /dev/null and b/public/terrain/19/858571/353763.terrain differ diff --git a/public/terrain/19/858571/353764.terrain b/public/terrain/19/858571/353764.terrain new file mode 100644 index 000000000..366465858 Binary files /dev/null and b/public/terrain/19/858571/353764.terrain differ diff --git a/public/terrain/19/858571/353765.terrain b/public/terrain/19/858571/353765.terrain new file mode 100644 index 000000000..7c2a5b599 Binary files /dev/null and b/public/terrain/19/858571/353765.terrain differ diff --git a/public/terrain/19/858571/353766.terrain b/public/terrain/19/858571/353766.terrain new file mode 100644 index 000000000..4a197efed Binary files /dev/null and b/public/terrain/19/858571/353766.terrain differ diff --git a/public/terrain/19/858571/353767.terrain b/public/terrain/19/858571/353767.terrain new file mode 100644 index 000000000..8dd4aedb6 Binary files /dev/null and b/public/terrain/19/858571/353767.terrain differ diff --git a/public/terrain/19/858571/353768.terrain b/public/terrain/19/858571/353768.terrain new file mode 100644 index 000000000..88ce90f38 Binary files /dev/null and b/public/terrain/19/858571/353768.terrain differ diff --git a/public/terrain/19/858571/353769.terrain b/public/terrain/19/858571/353769.terrain new file mode 100644 index 000000000..e28dfea74 Binary files /dev/null and b/public/terrain/19/858571/353769.terrain differ diff --git a/public/terrain/19/858571/353770.terrain b/public/terrain/19/858571/353770.terrain new file mode 100644 index 000000000..c02739226 Binary files /dev/null and b/public/terrain/19/858571/353770.terrain differ diff --git a/public/terrain/19/858571/353771.terrain b/public/terrain/19/858571/353771.terrain new file mode 100644 index 000000000..40edf80de Binary files /dev/null and b/public/terrain/19/858571/353771.terrain differ diff --git a/public/terrain/19/858571/353772.terrain b/public/terrain/19/858571/353772.terrain new file mode 100644 index 000000000..8a3a774ec Binary files /dev/null and b/public/terrain/19/858571/353772.terrain differ diff --git a/public/terrain/19/858571/353773.terrain b/public/terrain/19/858571/353773.terrain new file mode 100644 index 000000000..9660bcaf0 Binary files /dev/null and b/public/terrain/19/858571/353773.terrain differ diff --git a/public/terrain/19/858571/353774.terrain b/public/terrain/19/858571/353774.terrain new file mode 100644 index 000000000..70f4a3bfb Binary files /dev/null and b/public/terrain/19/858571/353774.terrain differ diff --git a/public/terrain/19/858571/353775.terrain b/public/terrain/19/858571/353775.terrain new file mode 100644 index 000000000..ca39663d2 Binary files /dev/null and b/public/terrain/19/858571/353775.terrain differ diff --git a/public/terrain/19/858571/353776.terrain b/public/terrain/19/858571/353776.terrain new file mode 100644 index 000000000..e4c5ab6d3 Binary files /dev/null and b/public/terrain/19/858571/353776.terrain differ diff --git a/public/terrain/19/858571/353777.terrain b/public/terrain/19/858571/353777.terrain new file mode 100644 index 000000000..e9d30bb12 Binary files /dev/null and b/public/terrain/19/858571/353777.terrain differ diff --git a/public/terrain/19/858571/353778.terrain b/public/terrain/19/858571/353778.terrain new file mode 100644 index 000000000..40235597f Binary files /dev/null and b/public/terrain/19/858571/353778.terrain differ diff --git a/public/terrain/19/858571/353779.terrain b/public/terrain/19/858571/353779.terrain new file mode 100644 index 000000000..d6f9fc9e8 Binary files /dev/null and b/public/terrain/19/858571/353779.terrain differ diff --git a/public/terrain/19/858571/353780.terrain b/public/terrain/19/858571/353780.terrain new file mode 100644 index 000000000..941e7d47a Binary files /dev/null and b/public/terrain/19/858571/353780.terrain differ diff --git a/public/terrain/19/858571/353781.terrain b/public/terrain/19/858571/353781.terrain new file mode 100644 index 000000000..fdd4ba1d6 Binary files /dev/null and b/public/terrain/19/858571/353781.terrain differ diff --git a/public/terrain/19/858571/353782.terrain b/public/terrain/19/858571/353782.terrain new file mode 100644 index 000000000..1afbe661f Binary files /dev/null and b/public/terrain/19/858571/353782.terrain differ diff --git a/public/terrain/19/858571/353783.terrain b/public/terrain/19/858571/353783.terrain new file mode 100644 index 000000000..803894787 Binary files /dev/null and b/public/terrain/19/858571/353783.terrain differ diff --git a/public/terrain/19/858571/353784.terrain b/public/terrain/19/858571/353784.terrain new file mode 100644 index 000000000..ff4ff212b Binary files /dev/null and b/public/terrain/19/858571/353784.terrain differ diff --git a/public/terrain/19/858571/353785.terrain b/public/terrain/19/858571/353785.terrain new file mode 100644 index 000000000..995ef6c37 Binary files /dev/null and b/public/terrain/19/858571/353785.terrain differ diff --git a/public/terrain/19/858571/353786.terrain b/public/terrain/19/858571/353786.terrain new file mode 100644 index 000000000..5e268c55c Binary files /dev/null and b/public/terrain/19/858571/353786.terrain differ diff --git a/public/terrain/19/858571/353787.terrain b/public/terrain/19/858571/353787.terrain new file mode 100644 index 000000000..20d7cdbc6 Binary files /dev/null and b/public/terrain/19/858571/353787.terrain differ diff --git a/public/terrain/19/858571/353788.terrain b/public/terrain/19/858571/353788.terrain new file mode 100644 index 000000000..e16483630 Binary files /dev/null and b/public/terrain/19/858571/353788.terrain differ diff --git a/public/terrain/19/858571/353789.terrain b/public/terrain/19/858571/353789.terrain new file mode 100644 index 000000000..cdd275420 Binary files /dev/null and b/public/terrain/19/858571/353789.terrain differ diff --git a/public/terrain/19/858571/353790.terrain b/public/terrain/19/858571/353790.terrain new file mode 100644 index 000000000..408f398d5 Binary files /dev/null and b/public/terrain/19/858571/353790.terrain differ diff --git a/public/terrain/19/858571/353791.terrain b/public/terrain/19/858571/353791.terrain new file mode 100644 index 000000000..4a92f370d Binary files /dev/null and b/public/terrain/19/858571/353791.terrain differ diff --git a/public/terrain/19/858571/353792.terrain b/public/terrain/19/858571/353792.terrain new file mode 100644 index 000000000..3fa4d3627 Binary files /dev/null and b/public/terrain/19/858571/353792.terrain differ diff --git a/public/terrain/19/858571/353793.terrain b/public/terrain/19/858571/353793.terrain new file mode 100644 index 000000000..17e7866e6 Binary files /dev/null and b/public/terrain/19/858571/353793.terrain differ diff --git a/public/terrain/19/858571/353794.terrain b/public/terrain/19/858571/353794.terrain new file mode 100644 index 000000000..eb38da8e7 Binary files /dev/null and b/public/terrain/19/858571/353794.terrain differ diff --git a/public/terrain/19/858571/353795.terrain b/public/terrain/19/858571/353795.terrain new file mode 100644 index 000000000..cb98c5753 Binary files /dev/null and b/public/terrain/19/858571/353795.terrain differ diff --git a/public/terrain/19/858571/353796.terrain b/public/terrain/19/858571/353796.terrain new file mode 100644 index 000000000..3412b91dc Binary files /dev/null and b/public/terrain/19/858571/353796.terrain differ diff --git a/public/terrain/19/858571/353797.terrain b/public/terrain/19/858571/353797.terrain new file mode 100644 index 000000000..b8dbe58eb Binary files /dev/null and b/public/terrain/19/858571/353797.terrain differ diff --git a/public/terrain/19/858571/353798.terrain b/public/terrain/19/858571/353798.terrain new file mode 100644 index 000000000..d7df3b705 Binary files /dev/null and b/public/terrain/19/858571/353798.terrain differ diff --git a/public/terrain/19/858571/353799.terrain b/public/terrain/19/858571/353799.terrain new file mode 100644 index 000000000..b750e6595 Binary files /dev/null and b/public/terrain/19/858571/353799.terrain differ diff --git a/public/terrain/19/858571/353800.terrain b/public/terrain/19/858571/353800.terrain new file mode 100644 index 000000000..0e8063b3c Binary files /dev/null and b/public/terrain/19/858571/353800.terrain differ diff --git a/public/terrain/19/858571/353801.terrain b/public/terrain/19/858571/353801.terrain new file mode 100644 index 000000000..1a50a8fbb Binary files /dev/null and b/public/terrain/19/858571/353801.terrain differ diff --git a/public/terrain/19/858571/353802.terrain b/public/terrain/19/858571/353802.terrain new file mode 100644 index 000000000..2d3a68f69 Binary files /dev/null and b/public/terrain/19/858571/353802.terrain differ diff --git a/public/terrain/19/858571/353803.terrain b/public/terrain/19/858571/353803.terrain new file mode 100644 index 000000000..a65df4716 Binary files /dev/null and b/public/terrain/19/858571/353803.terrain differ diff --git a/public/terrain/19/858571/353804.terrain b/public/terrain/19/858571/353804.terrain new file mode 100644 index 000000000..fb1cf4cad Binary files /dev/null and b/public/terrain/19/858571/353804.terrain differ diff --git a/public/terrain/19/858571/353805.terrain b/public/terrain/19/858571/353805.terrain new file mode 100644 index 000000000..6b9a3541b Binary files /dev/null and b/public/terrain/19/858571/353805.terrain differ diff --git a/public/terrain/19/858571/353806.terrain b/public/terrain/19/858571/353806.terrain new file mode 100644 index 000000000..14953f995 Binary files /dev/null and b/public/terrain/19/858571/353806.terrain differ diff --git a/public/terrain/19/858571/353807.terrain b/public/terrain/19/858571/353807.terrain new file mode 100644 index 000000000..a215b9b8a Binary files /dev/null and b/public/terrain/19/858571/353807.terrain differ diff --git a/public/terrain/19/858571/353808.terrain b/public/terrain/19/858571/353808.terrain new file mode 100644 index 000000000..ec5ebbcb4 Binary files /dev/null and b/public/terrain/19/858571/353808.terrain differ diff --git a/public/terrain/19/858571/353809.terrain b/public/terrain/19/858571/353809.terrain new file mode 100644 index 000000000..0bc5be40c Binary files /dev/null and b/public/terrain/19/858571/353809.terrain differ diff --git a/public/terrain/19/858571/353810.terrain b/public/terrain/19/858571/353810.terrain new file mode 100644 index 000000000..9aafaacaf Binary files /dev/null and b/public/terrain/19/858571/353810.terrain differ diff --git a/public/terrain/19/858571/353811.terrain b/public/terrain/19/858571/353811.terrain new file mode 100644 index 000000000..79b1bdc93 Binary files /dev/null and b/public/terrain/19/858571/353811.terrain differ diff --git a/public/terrain/19/858571/353812.terrain b/public/terrain/19/858571/353812.terrain new file mode 100644 index 000000000..31778341f Binary files /dev/null and b/public/terrain/19/858571/353812.terrain differ diff --git a/public/terrain/19/858571/353813.terrain b/public/terrain/19/858571/353813.terrain new file mode 100644 index 000000000..1e5ae481a Binary files /dev/null and b/public/terrain/19/858571/353813.terrain differ diff --git a/public/terrain/19/858571/353814.terrain b/public/terrain/19/858571/353814.terrain new file mode 100644 index 000000000..cb3854f1d Binary files /dev/null and b/public/terrain/19/858571/353814.terrain differ diff --git a/public/terrain/19/858571/353815.terrain b/public/terrain/19/858571/353815.terrain new file mode 100644 index 000000000..8d129f8c2 Binary files /dev/null and b/public/terrain/19/858571/353815.terrain differ diff --git a/public/terrain/19/858571/353816.terrain b/public/terrain/19/858571/353816.terrain new file mode 100644 index 000000000..9561a14f6 Binary files /dev/null and b/public/terrain/19/858571/353816.terrain differ diff --git a/public/terrain/19/858571/353817.terrain b/public/terrain/19/858571/353817.terrain new file mode 100644 index 000000000..0669a6fe7 Binary files /dev/null and b/public/terrain/19/858571/353817.terrain differ diff --git a/public/terrain/19/858571/353818.terrain b/public/terrain/19/858571/353818.terrain new file mode 100644 index 000000000..a94264e22 Binary files /dev/null and b/public/terrain/19/858571/353818.terrain differ diff --git a/public/terrain/19/858571/353819.terrain b/public/terrain/19/858571/353819.terrain new file mode 100644 index 000000000..1882ad8e6 Binary files /dev/null and b/public/terrain/19/858571/353819.terrain differ diff --git a/public/terrain/19/858571/353820.terrain b/public/terrain/19/858571/353820.terrain new file mode 100644 index 000000000..c5ea444a5 Binary files /dev/null and b/public/terrain/19/858571/353820.terrain differ diff --git a/public/terrain/19/858571/353821.terrain b/public/terrain/19/858571/353821.terrain new file mode 100644 index 000000000..3eeed4dec Binary files /dev/null and b/public/terrain/19/858571/353821.terrain differ diff --git a/public/terrain/19/858571/353822.terrain b/public/terrain/19/858571/353822.terrain new file mode 100644 index 000000000..a70bb2938 Binary files /dev/null and b/public/terrain/19/858571/353822.terrain differ diff --git a/public/terrain/19/858571/353823.terrain b/public/terrain/19/858571/353823.terrain new file mode 100644 index 000000000..3bb69aefc Binary files /dev/null and b/public/terrain/19/858571/353823.terrain differ diff --git a/public/terrain/19/858571/353824.terrain b/public/terrain/19/858571/353824.terrain new file mode 100644 index 000000000..33c49ba53 Binary files /dev/null and b/public/terrain/19/858571/353824.terrain differ diff --git a/public/terrain/19/858571/353825.terrain b/public/terrain/19/858571/353825.terrain new file mode 100644 index 000000000..19209903e Binary files /dev/null and b/public/terrain/19/858571/353825.terrain differ diff --git a/public/terrain/19/858571/353826.terrain b/public/terrain/19/858571/353826.terrain new file mode 100644 index 000000000..9493d7ff0 Binary files /dev/null and b/public/terrain/19/858571/353826.terrain differ diff --git a/public/terrain/19/858571/353827.terrain b/public/terrain/19/858571/353827.terrain new file mode 100644 index 000000000..1ba23156e Binary files /dev/null and b/public/terrain/19/858571/353827.terrain differ diff --git a/public/terrain/19/858571/353828.terrain b/public/terrain/19/858571/353828.terrain new file mode 100644 index 000000000..9b19fc8fa Binary files /dev/null and b/public/terrain/19/858571/353828.terrain differ diff --git a/public/terrain/19/858571/353829.terrain b/public/terrain/19/858571/353829.terrain new file mode 100644 index 000000000..6d3336368 Binary files /dev/null and b/public/terrain/19/858571/353829.terrain differ diff --git a/public/terrain/19/858571/353830.terrain b/public/terrain/19/858571/353830.terrain new file mode 100644 index 000000000..e46b02699 Binary files /dev/null and b/public/terrain/19/858571/353830.terrain differ diff --git a/public/terrain/19/858571/353831.terrain b/public/terrain/19/858571/353831.terrain new file mode 100644 index 000000000..2130b6281 Binary files /dev/null and b/public/terrain/19/858571/353831.terrain differ diff --git a/public/terrain/19/858571/353832.terrain b/public/terrain/19/858571/353832.terrain new file mode 100644 index 000000000..a800f76e6 Binary files /dev/null and b/public/terrain/19/858571/353832.terrain differ diff --git a/public/terrain/19/858571/353833.terrain b/public/terrain/19/858571/353833.terrain new file mode 100644 index 000000000..3a0bb7c0b Binary files /dev/null and b/public/terrain/19/858571/353833.terrain differ diff --git a/public/terrain/19/858571/353834.terrain b/public/terrain/19/858571/353834.terrain new file mode 100644 index 000000000..23aeaead3 Binary files /dev/null and b/public/terrain/19/858571/353834.terrain differ diff --git a/public/terrain/19/858571/353835.terrain b/public/terrain/19/858571/353835.terrain new file mode 100644 index 000000000..78edc36a8 Binary files /dev/null and b/public/terrain/19/858571/353835.terrain differ diff --git a/public/terrain/19/858571/353836.terrain b/public/terrain/19/858571/353836.terrain new file mode 100644 index 000000000..067591cfb Binary files /dev/null and b/public/terrain/19/858571/353836.terrain differ diff --git a/public/terrain/19/858571/353837.terrain b/public/terrain/19/858571/353837.terrain new file mode 100644 index 000000000..7d873b301 Binary files /dev/null and b/public/terrain/19/858571/353837.terrain differ diff --git a/public/terrain/19/858571/353838.terrain b/public/terrain/19/858571/353838.terrain new file mode 100644 index 000000000..224b7d2a6 Binary files /dev/null and b/public/terrain/19/858571/353838.terrain differ diff --git a/public/terrain/19/858571/353839.terrain b/public/terrain/19/858571/353839.terrain new file mode 100644 index 000000000..11cebe1c7 Binary files /dev/null and b/public/terrain/19/858571/353839.terrain differ diff --git a/public/terrain/19/858571/353840.terrain b/public/terrain/19/858571/353840.terrain new file mode 100644 index 000000000..01ff2528b Binary files /dev/null and b/public/terrain/19/858571/353840.terrain differ diff --git a/public/terrain/19/858571/353841.terrain b/public/terrain/19/858571/353841.terrain new file mode 100644 index 000000000..a2fb3984e Binary files /dev/null and b/public/terrain/19/858571/353841.terrain differ diff --git a/public/terrain/19/858571/353842.terrain b/public/terrain/19/858571/353842.terrain new file mode 100644 index 000000000..197b5d00f Binary files /dev/null and b/public/terrain/19/858571/353842.terrain differ diff --git a/public/terrain/19/858571/353843.terrain b/public/terrain/19/858571/353843.terrain new file mode 100644 index 000000000..3aaa82534 Binary files /dev/null and b/public/terrain/19/858571/353843.terrain differ diff --git a/public/terrain/19/858571/353844.terrain b/public/terrain/19/858571/353844.terrain new file mode 100644 index 000000000..eb0978b3c Binary files /dev/null and b/public/terrain/19/858571/353844.terrain differ diff --git a/public/terrain/19/858571/353845.terrain b/public/terrain/19/858571/353845.terrain new file mode 100644 index 000000000..b039ffbab Binary files /dev/null and b/public/terrain/19/858571/353845.terrain differ diff --git a/public/terrain/19/858571/353846.terrain b/public/terrain/19/858571/353846.terrain new file mode 100644 index 000000000..53ec1139d Binary files /dev/null and b/public/terrain/19/858571/353846.terrain differ diff --git a/public/terrain/19/858571/353847.terrain b/public/terrain/19/858571/353847.terrain new file mode 100644 index 000000000..f23a067f4 Binary files /dev/null and b/public/terrain/19/858571/353847.terrain differ diff --git a/public/terrain/19/858571/353848.terrain b/public/terrain/19/858571/353848.terrain new file mode 100644 index 000000000..0e09a0181 Binary files /dev/null and b/public/terrain/19/858571/353848.terrain differ diff --git a/public/terrain/19/858571/353849.terrain b/public/terrain/19/858571/353849.terrain new file mode 100644 index 000000000..3b97cf31f Binary files /dev/null and b/public/terrain/19/858571/353849.terrain differ diff --git a/public/terrain/19/858571/353850.terrain b/public/terrain/19/858571/353850.terrain new file mode 100644 index 000000000..e5fd84e4a Binary files /dev/null and b/public/terrain/19/858571/353850.terrain differ diff --git a/public/terrain/19/858571/353851.terrain b/public/terrain/19/858571/353851.terrain new file mode 100644 index 000000000..7238d63a9 Binary files /dev/null and b/public/terrain/19/858571/353851.terrain differ diff --git a/public/terrain/19/858571/353852.terrain b/public/terrain/19/858571/353852.terrain new file mode 100644 index 000000000..3d91c67e0 Binary files /dev/null and b/public/terrain/19/858571/353852.terrain differ diff --git a/public/terrain/19/858571/353853.terrain b/public/terrain/19/858571/353853.terrain new file mode 100644 index 000000000..ce2154299 Binary files /dev/null and b/public/terrain/19/858571/353853.terrain differ diff --git a/public/terrain/19/858571/353854.terrain b/public/terrain/19/858571/353854.terrain new file mode 100644 index 000000000..eedf443b5 Binary files /dev/null and b/public/terrain/19/858571/353854.terrain differ diff --git a/public/terrain/19/858571/353855.terrain b/public/terrain/19/858571/353855.terrain new file mode 100644 index 000000000..6dae324bb Binary files /dev/null and b/public/terrain/19/858571/353855.terrain differ diff --git a/public/terrain/19/858571/353856.terrain b/public/terrain/19/858571/353856.terrain new file mode 100644 index 000000000..dae9d7268 Binary files /dev/null and b/public/terrain/19/858571/353856.terrain differ diff --git a/public/terrain/19/858571/353857.terrain b/public/terrain/19/858571/353857.terrain new file mode 100644 index 000000000..4e291bdb8 Binary files /dev/null and b/public/terrain/19/858571/353857.terrain differ diff --git a/public/terrain/19/858571/353858.terrain b/public/terrain/19/858571/353858.terrain new file mode 100644 index 000000000..10d93fa7e Binary files /dev/null and b/public/terrain/19/858571/353858.terrain differ diff --git a/public/terrain/19/858571/353859.terrain b/public/terrain/19/858571/353859.terrain new file mode 100644 index 000000000..2e2e594c5 Binary files /dev/null and b/public/terrain/19/858571/353859.terrain differ diff --git a/public/terrain/19/858571/353860.terrain b/public/terrain/19/858571/353860.terrain new file mode 100644 index 000000000..00e52a8fd Binary files /dev/null and b/public/terrain/19/858571/353860.terrain differ diff --git a/public/terrain/19/858571/353861.terrain b/public/terrain/19/858571/353861.terrain new file mode 100644 index 000000000..a9ba15673 Binary files /dev/null and b/public/terrain/19/858571/353861.terrain differ diff --git a/public/terrain/19/858571/353862.terrain b/public/terrain/19/858571/353862.terrain new file mode 100644 index 000000000..c10d74ab5 Binary files /dev/null and b/public/terrain/19/858571/353862.terrain differ diff --git a/public/terrain/19/858571/353863.terrain b/public/terrain/19/858571/353863.terrain new file mode 100644 index 000000000..324ac785a Binary files /dev/null and b/public/terrain/19/858571/353863.terrain differ diff --git a/public/terrain/19/858571/353864.terrain b/public/terrain/19/858571/353864.terrain new file mode 100644 index 000000000..9ee76627c Binary files /dev/null and b/public/terrain/19/858571/353864.terrain differ diff --git a/public/terrain/19/858571/353865.terrain b/public/terrain/19/858571/353865.terrain new file mode 100644 index 000000000..fc611e07b Binary files /dev/null and b/public/terrain/19/858571/353865.terrain differ diff --git a/public/terrain/19/858571/353866.terrain b/public/terrain/19/858571/353866.terrain new file mode 100644 index 000000000..8d8abbfbe Binary files /dev/null and b/public/terrain/19/858571/353866.terrain differ diff --git a/public/terrain/19/858571/353867.terrain b/public/terrain/19/858571/353867.terrain new file mode 100644 index 000000000..14a5f11c1 Binary files /dev/null and b/public/terrain/19/858571/353867.terrain differ diff --git a/public/terrain/19/858571/353868.terrain b/public/terrain/19/858571/353868.terrain new file mode 100644 index 000000000..4c99189b3 Binary files /dev/null and b/public/terrain/19/858571/353868.terrain differ diff --git a/public/terrain/19/858571/353869.terrain b/public/terrain/19/858571/353869.terrain new file mode 100644 index 000000000..ddcc601bc Binary files /dev/null and b/public/terrain/19/858571/353869.terrain differ diff --git a/public/terrain/19/858571/353870.terrain b/public/terrain/19/858571/353870.terrain new file mode 100644 index 000000000..f95160e71 Binary files /dev/null and b/public/terrain/19/858571/353870.terrain differ diff --git a/public/terrain/19/858571/353871.terrain b/public/terrain/19/858571/353871.terrain new file mode 100644 index 000000000..1430453f8 Binary files /dev/null and b/public/terrain/19/858571/353871.terrain differ diff --git a/public/terrain/19/858571/353872.terrain b/public/terrain/19/858571/353872.terrain new file mode 100644 index 000000000..8eb9ff692 Binary files /dev/null and b/public/terrain/19/858571/353872.terrain differ diff --git a/public/terrain/19/858571/353873.terrain b/public/terrain/19/858571/353873.terrain new file mode 100644 index 000000000..69c0877fd Binary files /dev/null and b/public/terrain/19/858571/353873.terrain differ diff --git a/public/terrain/19/858571/353874.terrain b/public/terrain/19/858571/353874.terrain new file mode 100644 index 000000000..2938501ab Binary files /dev/null and b/public/terrain/19/858571/353874.terrain differ diff --git a/public/terrain/19/858571/353875.terrain b/public/terrain/19/858571/353875.terrain new file mode 100644 index 000000000..dcdca5f0e Binary files /dev/null and b/public/terrain/19/858571/353875.terrain differ diff --git a/public/terrain/19/858571/353876.terrain b/public/terrain/19/858571/353876.terrain new file mode 100644 index 000000000..56cc700f4 Binary files /dev/null and b/public/terrain/19/858571/353876.terrain differ diff --git a/public/terrain/19/858571/353877.terrain b/public/terrain/19/858571/353877.terrain new file mode 100644 index 000000000..d506fb046 Binary files /dev/null and b/public/terrain/19/858571/353877.terrain differ diff --git a/public/terrain/19/858571/353878.terrain b/public/terrain/19/858571/353878.terrain new file mode 100644 index 000000000..571703638 Binary files /dev/null and b/public/terrain/19/858571/353878.terrain differ diff --git a/public/terrain/19/858571/353879.terrain b/public/terrain/19/858571/353879.terrain new file mode 100644 index 000000000..b519fe1ac Binary files /dev/null and b/public/terrain/19/858571/353879.terrain differ diff --git a/public/terrain/19/858571/353880.terrain b/public/terrain/19/858571/353880.terrain new file mode 100644 index 000000000..cbb15d3ae Binary files /dev/null and b/public/terrain/19/858571/353880.terrain differ diff --git a/public/terrain/19/858571/353881.terrain b/public/terrain/19/858571/353881.terrain new file mode 100644 index 000000000..662d96e31 Binary files /dev/null and b/public/terrain/19/858571/353881.terrain differ diff --git a/public/terrain/19/858571/353882.terrain b/public/terrain/19/858571/353882.terrain new file mode 100644 index 000000000..e8698fe9f Binary files /dev/null and b/public/terrain/19/858571/353882.terrain differ diff --git a/public/terrain/19/858571/353883.terrain b/public/terrain/19/858571/353883.terrain new file mode 100644 index 000000000..b19155c30 Binary files /dev/null and b/public/terrain/19/858571/353883.terrain differ diff --git a/public/terrain/19/858571/353884.terrain b/public/terrain/19/858571/353884.terrain new file mode 100644 index 000000000..75cb7d1e1 Binary files /dev/null and b/public/terrain/19/858571/353884.terrain differ diff --git a/public/terrain/19/858571/353885.terrain b/public/terrain/19/858571/353885.terrain new file mode 100644 index 000000000..52e423d58 Binary files /dev/null and b/public/terrain/19/858571/353885.terrain differ diff --git a/public/terrain/19/858571/353886.terrain b/public/terrain/19/858571/353886.terrain new file mode 100644 index 000000000..ba6da46ff Binary files /dev/null and b/public/terrain/19/858571/353886.terrain differ diff --git a/public/terrain/19/858571/353887.terrain b/public/terrain/19/858571/353887.terrain new file mode 100644 index 000000000..887619c8d Binary files /dev/null and b/public/terrain/19/858571/353887.terrain differ diff --git a/public/terrain/19/858571/353888.terrain b/public/terrain/19/858571/353888.terrain new file mode 100644 index 000000000..ee97945c8 Binary files /dev/null and b/public/terrain/19/858571/353888.terrain differ diff --git a/public/terrain/19/858571/353889.terrain b/public/terrain/19/858571/353889.terrain new file mode 100644 index 000000000..bc4abee88 Binary files /dev/null and b/public/terrain/19/858571/353889.terrain differ diff --git a/public/terrain/19/858571/353890.terrain b/public/terrain/19/858571/353890.terrain new file mode 100644 index 000000000..19e608375 Binary files /dev/null and b/public/terrain/19/858571/353890.terrain differ diff --git a/public/terrain/19/858571/353891.terrain b/public/terrain/19/858571/353891.terrain new file mode 100644 index 000000000..e9d5872d8 Binary files /dev/null and b/public/terrain/19/858571/353891.terrain differ diff --git a/public/terrain/19/858571/353892.terrain b/public/terrain/19/858571/353892.terrain new file mode 100644 index 000000000..b6512b48c Binary files /dev/null and b/public/terrain/19/858571/353892.terrain differ diff --git a/public/terrain/19/858571/353893.terrain b/public/terrain/19/858571/353893.terrain new file mode 100644 index 000000000..c5b83bade Binary files /dev/null and b/public/terrain/19/858571/353893.terrain differ diff --git a/public/terrain/19/858571/353894.terrain b/public/terrain/19/858571/353894.terrain new file mode 100644 index 000000000..81f8d4e49 Binary files /dev/null and b/public/terrain/19/858571/353894.terrain differ diff --git a/public/terrain/19/858571/353895.terrain b/public/terrain/19/858571/353895.terrain new file mode 100644 index 000000000..48398ab2d Binary files /dev/null and b/public/terrain/19/858571/353895.terrain differ diff --git a/public/terrain/19/858571/353896.terrain b/public/terrain/19/858571/353896.terrain new file mode 100644 index 000000000..48189da4e Binary files /dev/null and b/public/terrain/19/858571/353896.terrain differ diff --git a/public/terrain/19/858571/353897.terrain b/public/terrain/19/858571/353897.terrain new file mode 100644 index 000000000..82b13eeaf Binary files /dev/null and b/public/terrain/19/858571/353897.terrain differ diff --git a/public/terrain/19/858571/353898.terrain b/public/terrain/19/858571/353898.terrain new file mode 100644 index 000000000..76aefd4ac Binary files /dev/null and b/public/terrain/19/858571/353898.terrain differ diff --git a/public/terrain/19/858571/353899.terrain b/public/terrain/19/858571/353899.terrain new file mode 100644 index 000000000..d5ed08afd Binary files /dev/null and b/public/terrain/19/858571/353899.terrain differ diff --git a/public/terrain/19/858571/353900.terrain b/public/terrain/19/858571/353900.terrain new file mode 100644 index 000000000..f41397916 Binary files /dev/null and b/public/terrain/19/858571/353900.terrain differ diff --git a/public/terrain/19/858571/353901.terrain b/public/terrain/19/858571/353901.terrain new file mode 100644 index 000000000..a42ffec86 Binary files /dev/null and b/public/terrain/19/858571/353901.terrain differ diff --git a/public/terrain/19/858571/353902.terrain b/public/terrain/19/858571/353902.terrain new file mode 100644 index 000000000..203e99f90 Binary files /dev/null and b/public/terrain/19/858571/353902.terrain differ diff --git a/public/terrain/19/858571/353903.terrain b/public/terrain/19/858571/353903.terrain new file mode 100644 index 000000000..2f7f1aa21 Binary files /dev/null and b/public/terrain/19/858571/353903.terrain differ diff --git a/public/terrain/19/858571/353904.terrain b/public/terrain/19/858571/353904.terrain new file mode 100644 index 000000000..94525ac7d Binary files /dev/null and b/public/terrain/19/858571/353904.terrain differ diff --git a/public/terrain/19/858571/353905.terrain b/public/terrain/19/858571/353905.terrain new file mode 100644 index 000000000..63ee2e159 Binary files /dev/null and b/public/terrain/19/858571/353905.terrain differ diff --git a/public/terrain/19/858571/353906.terrain b/public/terrain/19/858571/353906.terrain new file mode 100644 index 000000000..4f71e3159 Binary files /dev/null and b/public/terrain/19/858571/353906.terrain differ diff --git a/public/terrain/19/858571/353907.terrain b/public/terrain/19/858571/353907.terrain new file mode 100644 index 000000000..234be156c Binary files /dev/null and b/public/terrain/19/858571/353907.terrain differ diff --git a/public/terrain/19/858571/353908.terrain b/public/terrain/19/858571/353908.terrain new file mode 100644 index 000000000..b78f4f219 Binary files /dev/null and b/public/terrain/19/858571/353908.terrain differ diff --git a/public/terrain/19/858571/353909.terrain b/public/terrain/19/858571/353909.terrain new file mode 100644 index 000000000..18f3098ee Binary files /dev/null and b/public/terrain/19/858571/353909.terrain differ diff --git a/public/terrain/19/858571/353910.terrain b/public/terrain/19/858571/353910.terrain new file mode 100644 index 000000000..3a7a48e33 Binary files /dev/null and b/public/terrain/19/858571/353910.terrain differ diff --git a/public/terrain/19/858571/353911.terrain b/public/terrain/19/858571/353911.terrain new file mode 100644 index 000000000..44bc390ea Binary files /dev/null and b/public/terrain/19/858571/353911.terrain differ diff --git a/public/terrain/19/858571/353912.terrain b/public/terrain/19/858571/353912.terrain new file mode 100644 index 000000000..269ccc905 Binary files /dev/null and b/public/terrain/19/858571/353912.terrain differ diff --git a/public/terrain/19/858571/353913.terrain b/public/terrain/19/858571/353913.terrain new file mode 100644 index 000000000..c946ea59c Binary files /dev/null and b/public/terrain/19/858571/353913.terrain differ diff --git a/public/terrain/19/858571/353914.terrain b/public/terrain/19/858571/353914.terrain new file mode 100644 index 000000000..6c9d1f959 Binary files /dev/null and b/public/terrain/19/858571/353914.terrain differ diff --git a/public/terrain/19/858571/353915.terrain b/public/terrain/19/858571/353915.terrain new file mode 100644 index 000000000..96d865d4d Binary files /dev/null and b/public/terrain/19/858571/353915.terrain differ diff --git a/public/terrain/19/858571/353916.terrain b/public/terrain/19/858571/353916.terrain new file mode 100644 index 000000000..f1b2d18db Binary files /dev/null and b/public/terrain/19/858571/353916.terrain differ diff --git a/public/terrain/19/858571/353917.terrain b/public/terrain/19/858571/353917.terrain new file mode 100644 index 000000000..2eac5fc9a Binary files /dev/null and b/public/terrain/19/858571/353917.terrain differ diff --git a/public/terrain/19/858571/353918.terrain b/public/terrain/19/858571/353918.terrain new file mode 100644 index 000000000..70aa19e1f Binary files /dev/null and b/public/terrain/19/858571/353918.terrain differ diff --git a/public/terrain/19/858571/353919.terrain b/public/terrain/19/858571/353919.terrain new file mode 100644 index 000000000..e24dadb16 Binary files /dev/null and b/public/terrain/19/858571/353919.terrain differ diff --git a/public/terrain/19/858571/353920.terrain b/public/terrain/19/858571/353920.terrain new file mode 100644 index 000000000..23589baf4 Binary files /dev/null and b/public/terrain/19/858571/353920.terrain differ diff --git a/public/terrain/19/858571/353921.terrain b/public/terrain/19/858571/353921.terrain new file mode 100644 index 000000000..a271aaf78 Binary files /dev/null and b/public/terrain/19/858571/353921.terrain differ diff --git a/public/terrain/19/858571/353922.terrain b/public/terrain/19/858571/353922.terrain new file mode 100644 index 000000000..cba5c5d27 Binary files /dev/null and b/public/terrain/19/858571/353922.terrain differ diff --git a/public/terrain/19/858571/353923.terrain b/public/terrain/19/858571/353923.terrain new file mode 100644 index 000000000..352292e8a Binary files /dev/null and b/public/terrain/19/858571/353923.terrain differ diff --git a/public/terrain/19/858571/353924.terrain b/public/terrain/19/858571/353924.terrain new file mode 100644 index 000000000..6d199275b Binary files /dev/null and b/public/terrain/19/858571/353924.terrain differ diff --git a/public/terrain/19/858571/353925.terrain b/public/terrain/19/858571/353925.terrain new file mode 100644 index 000000000..f8ba147dc Binary files /dev/null and b/public/terrain/19/858571/353925.terrain differ diff --git a/public/terrain/19/858571/353926.terrain b/public/terrain/19/858571/353926.terrain new file mode 100644 index 000000000..57493783a Binary files /dev/null and b/public/terrain/19/858571/353926.terrain differ diff --git a/public/terrain/19/858571/353927.terrain b/public/terrain/19/858571/353927.terrain new file mode 100644 index 000000000..dc588e215 Binary files /dev/null and b/public/terrain/19/858571/353927.terrain differ diff --git a/public/terrain/19/858571/353928.terrain b/public/terrain/19/858571/353928.terrain new file mode 100644 index 000000000..c4be3bf64 Binary files /dev/null and b/public/terrain/19/858571/353928.terrain differ diff --git a/public/terrain/19/858571/353929.terrain b/public/terrain/19/858571/353929.terrain new file mode 100644 index 000000000..f2aff8b2e Binary files /dev/null and b/public/terrain/19/858571/353929.terrain differ diff --git a/public/terrain/19/858571/353930.terrain b/public/terrain/19/858571/353930.terrain new file mode 100644 index 000000000..566d030a5 Binary files /dev/null and b/public/terrain/19/858571/353930.terrain differ diff --git a/public/terrain/19/858571/353931.terrain b/public/terrain/19/858571/353931.terrain new file mode 100644 index 000000000..d24c200e9 Binary files /dev/null and b/public/terrain/19/858571/353931.terrain differ diff --git a/public/terrain/19/858571/353932.terrain b/public/terrain/19/858571/353932.terrain new file mode 100644 index 000000000..abb95be22 Binary files /dev/null and b/public/terrain/19/858571/353932.terrain differ diff --git a/public/terrain/19/858571/353933.terrain b/public/terrain/19/858571/353933.terrain new file mode 100644 index 000000000..5c3403be8 Binary files /dev/null and b/public/terrain/19/858571/353933.terrain differ diff --git a/public/terrain/19/858571/353934.terrain b/public/terrain/19/858571/353934.terrain new file mode 100644 index 000000000..f80eac5c2 Binary files /dev/null and b/public/terrain/19/858571/353934.terrain differ diff --git a/public/terrain/19/858571/353935.terrain b/public/terrain/19/858571/353935.terrain new file mode 100644 index 000000000..15755e61a Binary files /dev/null and b/public/terrain/19/858571/353935.terrain differ diff --git a/public/terrain/19/858571/353936.terrain b/public/terrain/19/858571/353936.terrain new file mode 100644 index 000000000..966cd6c91 Binary files /dev/null and b/public/terrain/19/858571/353936.terrain differ diff --git a/public/terrain/19/858571/353937.terrain b/public/terrain/19/858571/353937.terrain new file mode 100644 index 000000000..f89ccf0b5 Binary files /dev/null and b/public/terrain/19/858571/353937.terrain differ diff --git a/public/terrain/19/858571/353938.terrain b/public/terrain/19/858571/353938.terrain new file mode 100644 index 000000000..703d34d43 Binary files /dev/null and b/public/terrain/19/858571/353938.terrain differ diff --git a/public/terrain/19/858571/353939.terrain b/public/terrain/19/858571/353939.terrain new file mode 100644 index 000000000..f07330140 Binary files /dev/null and b/public/terrain/19/858571/353939.terrain differ diff --git a/public/terrain/19/858571/353940.terrain b/public/terrain/19/858571/353940.terrain new file mode 100644 index 000000000..e988ad359 Binary files /dev/null and b/public/terrain/19/858571/353940.terrain differ diff --git a/public/terrain/19/858571/353941.terrain b/public/terrain/19/858571/353941.terrain new file mode 100644 index 000000000..10eeefcd5 Binary files /dev/null and b/public/terrain/19/858571/353941.terrain differ diff --git a/public/terrain/19/858571/353942.terrain b/public/terrain/19/858571/353942.terrain new file mode 100644 index 000000000..e05cfed6b Binary files /dev/null and b/public/terrain/19/858571/353942.terrain differ diff --git a/public/terrain/19/858571/353943.terrain b/public/terrain/19/858571/353943.terrain new file mode 100644 index 000000000..dc8faccb5 Binary files /dev/null and b/public/terrain/19/858571/353943.terrain differ diff --git a/public/terrain/19/858571/353944.terrain b/public/terrain/19/858571/353944.terrain new file mode 100644 index 000000000..8084a234d Binary files /dev/null and b/public/terrain/19/858571/353944.terrain differ diff --git a/public/terrain/19/858571/353945.terrain b/public/terrain/19/858571/353945.terrain new file mode 100644 index 000000000..9e0f910d8 Binary files /dev/null and b/public/terrain/19/858571/353945.terrain differ diff --git a/public/terrain/19/858571/353946.terrain b/public/terrain/19/858571/353946.terrain new file mode 100644 index 000000000..e6e5544a4 Binary files /dev/null and b/public/terrain/19/858571/353946.terrain differ diff --git a/public/terrain/19/858571/353947.terrain b/public/terrain/19/858571/353947.terrain new file mode 100644 index 000000000..5d944dfb8 Binary files /dev/null and b/public/terrain/19/858571/353947.terrain differ diff --git a/public/terrain/19/858571/353948.terrain b/public/terrain/19/858571/353948.terrain new file mode 100644 index 000000000..dd1aa63c3 Binary files /dev/null and b/public/terrain/19/858571/353948.terrain differ diff --git a/public/terrain/19/858571/353949.terrain b/public/terrain/19/858571/353949.terrain new file mode 100644 index 000000000..bb3958f04 Binary files /dev/null and b/public/terrain/19/858571/353949.terrain differ diff --git a/public/terrain/19/858571/353950.terrain b/public/terrain/19/858571/353950.terrain new file mode 100644 index 000000000..c9465ac81 Binary files /dev/null and b/public/terrain/19/858571/353950.terrain differ diff --git a/public/terrain/19/858571/353951.terrain b/public/terrain/19/858571/353951.terrain new file mode 100644 index 000000000..f1f96776d Binary files /dev/null and b/public/terrain/19/858571/353951.terrain differ diff --git a/public/terrain/19/858571/353952.terrain b/public/terrain/19/858571/353952.terrain new file mode 100644 index 000000000..ec85c5f71 Binary files /dev/null and b/public/terrain/19/858571/353952.terrain differ diff --git a/public/terrain/19/858571/353953.terrain b/public/terrain/19/858571/353953.terrain new file mode 100644 index 000000000..12d2fb1d3 Binary files /dev/null and b/public/terrain/19/858571/353953.terrain differ diff --git a/public/terrain/19/858571/353954.terrain b/public/terrain/19/858571/353954.terrain new file mode 100644 index 000000000..4a7a263ff Binary files /dev/null and b/public/terrain/19/858571/353954.terrain differ diff --git a/public/terrain/19/858571/353955.terrain b/public/terrain/19/858571/353955.terrain new file mode 100644 index 000000000..cb3683391 Binary files /dev/null and b/public/terrain/19/858571/353955.terrain differ diff --git a/public/terrain/19/858571/353956.terrain b/public/terrain/19/858571/353956.terrain new file mode 100644 index 000000000..61329f216 Binary files /dev/null and b/public/terrain/19/858571/353956.terrain differ diff --git a/public/terrain/19/858571/353957.terrain b/public/terrain/19/858571/353957.terrain new file mode 100644 index 000000000..07099df53 Binary files /dev/null and b/public/terrain/19/858571/353957.terrain differ diff --git a/public/terrain/19/858571/353958.terrain b/public/terrain/19/858571/353958.terrain new file mode 100644 index 000000000..3c0d4c97c Binary files /dev/null and b/public/terrain/19/858571/353958.terrain differ diff --git a/public/terrain/19/858571/353959.terrain b/public/terrain/19/858571/353959.terrain new file mode 100644 index 000000000..34c8d4458 Binary files /dev/null and b/public/terrain/19/858571/353959.terrain differ diff --git a/public/terrain/19/858571/353960.terrain b/public/terrain/19/858571/353960.terrain new file mode 100644 index 000000000..2fd2babcc Binary files /dev/null and b/public/terrain/19/858571/353960.terrain differ diff --git a/public/terrain/19/858571/353961.terrain b/public/terrain/19/858571/353961.terrain new file mode 100644 index 000000000..de6f2a79e Binary files /dev/null and b/public/terrain/19/858571/353961.terrain differ diff --git a/public/terrain/19/858571/353962.terrain b/public/terrain/19/858571/353962.terrain new file mode 100644 index 000000000..c86e55735 Binary files /dev/null and b/public/terrain/19/858571/353962.terrain differ diff --git a/public/terrain/19/858571/353963.terrain b/public/terrain/19/858571/353963.terrain new file mode 100644 index 000000000..d875dc1ed Binary files /dev/null and b/public/terrain/19/858571/353963.terrain differ diff --git a/public/terrain/19/858571/353964.terrain b/public/terrain/19/858571/353964.terrain new file mode 100644 index 000000000..cb02ecfc2 Binary files /dev/null and b/public/terrain/19/858571/353964.terrain differ diff --git a/public/terrain/19/858571/353965.terrain b/public/terrain/19/858571/353965.terrain new file mode 100644 index 000000000..7dbc9b534 Binary files /dev/null and b/public/terrain/19/858571/353965.terrain differ diff --git a/public/terrain/19/858571/353966.terrain b/public/terrain/19/858571/353966.terrain new file mode 100644 index 000000000..79673dff5 Binary files /dev/null and b/public/terrain/19/858571/353966.terrain differ diff --git a/public/terrain/19/858571/353967.terrain b/public/terrain/19/858571/353967.terrain new file mode 100644 index 000000000..34e2a0274 Binary files /dev/null and b/public/terrain/19/858571/353967.terrain differ diff --git a/public/terrain/19/858571/353968.terrain b/public/terrain/19/858571/353968.terrain new file mode 100644 index 000000000..33366971f Binary files /dev/null and b/public/terrain/19/858571/353968.terrain differ diff --git a/public/terrain/19/858571/353969.terrain b/public/terrain/19/858571/353969.terrain new file mode 100644 index 000000000..cc93e7557 Binary files /dev/null and b/public/terrain/19/858571/353969.terrain differ diff --git a/public/terrain/19/858571/353970.terrain b/public/terrain/19/858571/353970.terrain new file mode 100644 index 000000000..d39c8df26 Binary files /dev/null and b/public/terrain/19/858571/353970.terrain differ diff --git a/public/terrain/19/858571/353971.terrain b/public/terrain/19/858571/353971.terrain new file mode 100644 index 000000000..65cc29916 Binary files /dev/null and b/public/terrain/19/858571/353971.terrain differ diff --git a/public/terrain/19/858571/353972.terrain b/public/terrain/19/858571/353972.terrain new file mode 100644 index 000000000..b89263b88 Binary files /dev/null and b/public/terrain/19/858571/353972.terrain differ diff --git a/public/terrain/19/858571/353973.terrain b/public/terrain/19/858571/353973.terrain new file mode 100644 index 000000000..fe9911659 Binary files /dev/null and b/public/terrain/19/858571/353973.terrain differ diff --git a/public/terrain/19/858571/353974.terrain b/public/terrain/19/858571/353974.terrain new file mode 100644 index 000000000..76c8665c5 Binary files /dev/null and b/public/terrain/19/858571/353974.terrain differ diff --git a/public/terrain/19/858571/353975.terrain b/public/terrain/19/858571/353975.terrain new file mode 100644 index 000000000..cd548b021 Binary files /dev/null and b/public/terrain/19/858571/353975.terrain differ diff --git a/public/terrain/19/858571/353976.terrain b/public/terrain/19/858571/353976.terrain new file mode 100644 index 000000000..ddf053d23 Binary files /dev/null and b/public/terrain/19/858571/353976.terrain differ diff --git a/public/terrain/19/858571/353977.terrain b/public/terrain/19/858571/353977.terrain new file mode 100644 index 000000000..0819f5be8 Binary files /dev/null and b/public/terrain/19/858571/353977.terrain differ diff --git a/public/terrain/19/858571/353978.terrain b/public/terrain/19/858571/353978.terrain new file mode 100644 index 000000000..f5a36c58d Binary files /dev/null and b/public/terrain/19/858571/353978.terrain differ diff --git a/public/terrain/19/858571/353979.terrain b/public/terrain/19/858571/353979.terrain new file mode 100644 index 000000000..65f8f3810 Binary files /dev/null and b/public/terrain/19/858571/353979.terrain differ diff --git a/public/terrain/19/858571/353980.terrain b/public/terrain/19/858571/353980.terrain new file mode 100644 index 000000000..8287146f1 Binary files /dev/null and b/public/terrain/19/858571/353980.terrain differ diff --git a/public/terrain/19/858571/353981.terrain b/public/terrain/19/858571/353981.terrain new file mode 100644 index 000000000..1e5f53797 Binary files /dev/null and b/public/terrain/19/858571/353981.terrain differ diff --git a/public/terrain/19/858571/353982.terrain b/public/terrain/19/858571/353982.terrain new file mode 100644 index 000000000..9ae681749 Binary files /dev/null and b/public/terrain/19/858571/353982.terrain differ diff --git a/public/terrain/19/858571/353983.terrain b/public/terrain/19/858571/353983.terrain new file mode 100644 index 000000000..10b4526e9 Binary files /dev/null and b/public/terrain/19/858571/353983.terrain differ diff --git a/public/terrain/19/858571/353984.terrain b/public/terrain/19/858571/353984.terrain new file mode 100644 index 000000000..866853ffb Binary files /dev/null and b/public/terrain/19/858571/353984.terrain differ diff --git a/public/terrain/19/858571/353985.terrain b/public/terrain/19/858571/353985.terrain new file mode 100644 index 000000000..95dd0fc10 Binary files /dev/null and b/public/terrain/19/858571/353985.terrain differ diff --git a/public/terrain/19/858571/353986.terrain b/public/terrain/19/858571/353986.terrain new file mode 100644 index 000000000..b47dc8cd3 Binary files /dev/null and b/public/terrain/19/858571/353986.terrain differ diff --git a/public/terrain/19/858571/353987.terrain b/public/terrain/19/858571/353987.terrain new file mode 100644 index 000000000..f9c94f0fd Binary files /dev/null and b/public/terrain/19/858571/353987.terrain differ diff --git a/public/terrain/19/858571/353988.terrain b/public/terrain/19/858571/353988.terrain new file mode 100644 index 000000000..fdc9ffd38 Binary files /dev/null and b/public/terrain/19/858571/353988.terrain differ diff --git a/public/terrain/19/858571/353989.terrain b/public/terrain/19/858571/353989.terrain new file mode 100644 index 000000000..bad26f195 Binary files /dev/null and b/public/terrain/19/858571/353989.terrain differ diff --git a/public/terrain/19/858571/353990.terrain b/public/terrain/19/858571/353990.terrain new file mode 100644 index 000000000..202438c90 Binary files /dev/null and b/public/terrain/19/858571/353990.terrain differ diff --git a/public/terrain/19/858571/353991.terrain b/public/terrain/19/858571/353991.terrain new file mode 100644 index 000000000..abb01ecee Binary files /dev/null and b/public/terrain/19/858571/353991.terrain differ diff --git a/public/terrain/19/858571/353992.terrain b/public/terrain/19/858571/353992.terrain new file mode 100644 index 000000000..0cc298fc3 Binary files /dev/null and b/public/terrain/19/858571/353992.terrain differ diff --git a/public/terrain/19/858571/353993.terrain b/public/terrain/19/858571/353993.terrain new file mode 100644 index 000000000..4c8c7ef39 Binary files /dev/null and b/public/terrain/19/858571/353993.terrain differ diff --git a/public/terrain/19/858571/353994.terrain b/public/terrain/19/858571/353994.terrain new file mode 100644 index 000000000..772a9b740 Binary files /dev/null and b/public/terrain/19/858571/353994.terrain differ diff --git a/public/terrain/19/858571/353995.terrain b/public/terrain/19/858571/353995.terrain new file mode 100644 index 000000000..2ad2aa457 Binary files /dev/null and b/public/terrain/19/858571/353995.terrain differ diff --git a/public/terrain/19/858571/353996.terrain b/public/terrain/19/858571/353996.terrain new file mode 100644 index 000000000..7e56fcdef Binary files /dev/null and b/public/terrain/19/858571/353996.terrain differ diff --git a/public/terrain/19/858571/353997.terrain b/public/terrain/19/858571/353997.terrain new file mode 100644 index 000000000..9df834c15 Binary files /dev/null and b/public/terrain/19/858571/353997.terrain differ diff --git a/public/terrain/19/858571/353998.terrain b/public/terrain/19/858571/353998.terrain new file mode 100644 index 000000000..34228a87b Binary files /dev/null and b/public/terrain/19/858571/353998.terrain differ diff --git a/public/terrain/19/858571/353999.terrain b/public/terrain/19/858571/353999.terrain new file mode 100644 index 000000000..94261ee40 Binary files /dev/null and b/public/terrain/19/858571/353999.terrain differ diff --git a/public/terrain/19/858571/354000.terrain b/public/terrain/19/858571/354000.terrain new file mode 100644 index 000000000..cd4ecdebe Binary files /dev/null and b/public/terrain/19/858571/354000.terrain differ diff --git a/public/terrain/19/858571/354001.terrain b/public/terrain/19/858571/354001.terrain new file mode 100644 index 000000000..618815f11 Binary files /dev/null and b/public/terrain/19/858571/354001.terrain differ diff --git a/public/terrain/19/858571/354002.terrain b/public/terrain/19/858571/354002.terrain new file mode 100644 index 000000000..1e5fca70b Binary files /dev/null and b/public/terrain/19/858571/354002.terrain differ diff --git a/public/terrain/19/858571/354003.terrain b/public/terrain/19/858571/354003.terrain new file mode 100644 index 000000000..82e49a211 Binary files /dev/null and b/public/terrain/19/858571/354003.terrain differ diff --git a/public/terrain/19/858571/354004.terrain b/public/terrain/19/858571/354004.terrain new file mode 100644 index 000000000..cf2c0a163 Binary files /dev/null and b/public/terrain/19/858571/354004.terrain differ diff --git a/public/terrain/19/858571/354005.terrain b/public/terrain/19/858571/354005.terrain new file mode 100644 index 000000000..ec41db7f2 Binary files /dev/null and b/public/terrain/19/858571/354005.terrain differ diff --git a/public/terrain/19/858571/354006.terrain b/public/terrain/19/858571/354006.terrain new file mode 100644 index 000000000..1d7c65b81 Binary files /dev/null and b/public/terrain/19/858571/354006.terrain differ diff --git a/public/terrain/19/858571/354007.terrain b/public/terrain/19/858571/354007.terrain new file mode 100644 index 000000000..e8e37b0e3 Binary files /dev/null and b/public/terrain/19/858571/354007.terrain differ diff --git a/public/terrain/19/858571/354008.terrain b/public/terrain/19/858571/354008.terrain new file mode 100644 index 000000000..e32fcaa7d Binary files /dev/null and b/public/terrain/19/858571/354008.terrain differ diff --git a/public/terrain/19/858571/354009.terrain b/public/terrain/19/858571/354009.terrain new file mode 100644 index 000000000..731582154 Binary files /dev/null and b/public/terrain/19/858571/354009.terrain differ diff --git a/public/terrain/19/858571/354010.terrain b/public/terrain/19/858571/354010.terrain new file mode 100644 index 000000000..fba98fccb Binary files /dev/null and b/public/terrain/19/858571/354010.terrain differ diff --git a/public/terrain/19/858571/354011.terrain b/public/terrain/19/858571/354011.terrain new file mode 100644 index 000000000..ce4d7c460 Binary files /dev/null and b/public/terrain/19/858571/354011.terrain differ diff --git a/public/terrain/19/858571/354012.terrain b/public/terrain/19/858571/354012.terrain new file mode 100644 index 000000000..95f7f14da Binary files /dev/null and b/public/terrain/19/858571/354012.terrain differ diff --git a/public/terrain/19/858571/354013.terrain b/public/terrain/19/858571/354013.terrain new file mode 100644 index 000000000..dc3349ebe Binary files /dev/null and b/public/terrain/19/858571/354013.terrain differ diff --git a/public/terrain/19/858571/354014.terrain b/public/terrain/19/858571/354014.terrain new file mode 100644 index 000000000..75263279b Binary files /dev/null and b/public/terrain/19/858571/354014.terrain differ diff --git a/public/terrain/19/858571/354015.terrain b/public/terrain/19/858571/354015.terrain new file mode 100644 index 000000000..cb0721af1 Binary files /dev/null and b/public/terrain/19/858571/354015.terrain differ diff --git a/public/terrain/19/858571/354016.terrain b/public/terrain/19/858571/354016.terrain new file mode 100644 index 000000000..e463be53f Binary files /dev/null and b/public/terrain/19/858571/354016.terrain differ diff --git a/public/terrain/19/858571/354017.terrain b/public/terrain/19/858571/354017.terrain new file mode 100644 index 000000000..900d27669 Binary files /dev/null and b/public/terrain/19/858571/354017.terrain differ diff --git a/public/terrain/19/858571/354018.terrain b/public/terrain/19/858571/354018.terrain new file mode 100644 index 000000000..5b48c15a8 Binary files /dev/null and b/public/terrain/19/858571/354018.terrain differ diff --git a/public/terrain/19/858571/354019.terrain b/public/terrain/19/858571/354019.terrain new file mode 100644 index 000000000..5c3014e00 Binary files /dev/null and b/public/terrain/19/858571/354019.terrain differ diff --git a/public/terrain/19/858571/354020.terrain b/public/terrain/19/858571/354020.terrain new file mode 100644 index 000000000..8368bb129 Binary files /dev/null and b/public/terrain/19/858571/354020.terrain differ diff --git a/public/terrain/19/858571/354021.terrain b/public/terrain/19/858571/354021.terrain new file mode 100644 index 000000000..adf4e12e4 Binary files /dev/null and b/public/terrain/19/858571/354021.terrain differ diff --git a/public/terrain/19/858571/354022.terrain b/public/terrain/19/858571/354022.terrain new file mode 100644 index 000000000..682f8890d Binary files /dev/null and b/public/terrain/19/858571/354022.terrain differ diff --git a/public/terrain/19/858571/354023.terrain b/public/terrain/19/858571/354023.terrain new file mode 100644 index 000000000..9e2748d11 Binary files /dev/null and b/public/terrain/19/858571/354023.terrain differ diff --git a/public/terrain/19/858571/354024.terrain b/public/terrain/19/858571/354024.terrain new file mode 100644 index 000000000..2b848cd57 Binary files /dev/null and b/public/terrain/19/858571/354024.terrain differ diff --git a/public/terrain/19/858571/354025.terrain b/public/terrain/19/858571/354025.terrain new file mode 100644 index 000000000..a9f1cf85e Binary files /dev/null and b/public/terrain/19/858571/354025.terrain differ diff --git a/public/terrain/19/858571/354026.terrain b/public/terrain/19/858571/354026.terrain new file mode 100644 index 000000000..29fb8a159 Binary files /dev/null and b/public/terrain/19/858571/354026.terrain differ diff --git a/public/terrain/19/858571/354027.terrain b/public/terrain/19/858571/354027.terrain new file mode 100644 index 000000000..bae4ec08f Binary files /dev/null and b/public/terrain/19/858571/354027.terrain differ diff --git a/public/terrain/19/858571/354028.terrain b/public/terrain/19/858571/354028.terrain new file mode 100644 index 000000000..8b6abcaf1 Binary files /dev/null and b/public/terrain/19/858571/354028.terrain differ diff --git a/public/terrain/19/858571/354029.terrain b/public/terrain/19/858571/354029.terrain new file mode 100644 index 000000000..63a56ef03 Binary files /dev/null and b/public/terrain/19/858571/354029.terrain differ diff --git a/public/terrain/19/858571/354030.terrain b/public/terrain/19/858571/354030.terrain new file mode 100644 index 000000000..c25f00900 Binary files /dev/null and b/public/terrain/19/858571/354030.terrain differ diff --git a/public/terrain/19/858571/354031.terrain b/public/terrain/19/858571/354031.terrain new file mode 100644 index 000000000..5c704317d Binary files /dev/null and b/public/terrain/19/858571/354031.terrain differ diff --git a/public/terrain/19/858571/354032.terrain b/public/terrain/19/858571/354032.terrain new file mode 100644 index 000000000..488453ba7 Binary files /dev/null and b/public/terrain/19/858571/354032.terrain differ diff --git a/public/terrain/19/858571/354033.terrain b/public/terrain/19/858571/354033.terrain new file mode 100644 index 000000000..ac9e78b99 Binary files /dev/null and b/public/terrain/19/858571/354033.terrain differ diff --git a/public/terrain/19/858571/354034.terrain b/public/terrain/19/858571/354034.terrain new file mode 100644 index 000000000..ec0893acc Binary files /dev/null and b/public/terrain/19/858571/354034.terrain differ diff --git a/public/terrain/19/858571/354035.terrain b/public/terrain/19/858571/354035.terrain new file mode 100644 index 000000000..e60ff3ebf Binary files /dev/null and b/public/terrain/19/858571/354035.terrain differ diff --git a/public/terrain/19/858571/354036.terrain b/public/terrain/19/858571/354036.terrain new file mode 100644 index 000000000..4035eef8c Binary files /dev/null and b/public/terrain/19/858571/354036.terrain differ diff --git a/public/terrain/19/858571/354037.terrain b/public/terrain/19/858571/354037.terrain new file mode 100644 index 000000000..653ae7d9e Binary files /dev/null and b/public/terrain/19/858571/354037.terrain differ diff --git a/public/terrain/19/858571/354038.terrain b/public/terrain/19/858571/354038.terrain new file mode 100644 index 000000000..4258e7fda Binary files /dev/null and b/public/terrain/19/858571/354038.terrain differ diff --git a/public/terrain/19/858571/354039.terrain b/public/terrain/19/858571/354039.terrain new file mode 100644 index 000000000..b206e36b8 Binary files /dev/null and b/public/terrain/19/858571/354039.terrain differ diff --git a/public/terrain/19/858571/354040.terrain b/public/terrain/19/858571/354040.terrain new file mode 100644 index 000000000..a99dcef97 Binary files /dev/null and b/public/terrain/19/858571/354040.terrain differ diff --git a/public/terrain/19/858571/354041.terrain b/public/terrain/19/858571/354041.terrain new file mode 100644 index 000000000..a38136b00 Binary files /dev/null and b/public/terrain/19/858571/354041.terrain differ diff --git a/public/terrain/19/858571/354042.terrain b/public/terrain/19/858571/354042.terrain new file mode 100644 index 000000000..1e16ada18 Binary files /dev/null and b/public/terrain/19/858571/354042.terrain differ diff --git a/public/terrain/19/858571/354043.terrain b/public/terrain/19/858571/354043.terrain new file mode 100644 index 000000000..985b7b4b6 Binary files /dev/null and b/public/terrain/19/858571/354043.terrain differ diff --git a/public/terrain/19/858571/354044.terrain b/public/terrain/19/858571/354044.terrain new file mode 100644 index 000000000..ed49bd855 Binary files /dev/null and b/public/terrain/19/858571/354044.terrain differ diff --git a/public/terrain/19/858571/354045.terrain b/public/terrain/19/858571/354045.terrain new file mode 100644 index 000000000..8a7a79e4e Binary files /dev/null and b/public/terrain/19/858571/354045.terrain differ diff --git a/public/terrain/19/858571/354046.terrain b/public/terrain/19/858571/354046.terrain new file mode 100644 index 000000000..6052b2331 Binary files /dev/null and b/public/terrain/19/858571/354046.terrain differ diff --git a/public/terrain/19/858571/354047.terrain b/public/terrain/19/858571/354047.terrain new file mode 100644 index 000000000..cae7574f4 Binary files /dev/null and b/public/terrain/19/858571/354047.terrain differ diff --git a/public/terrain/19/858571/354048.terrain b/public/terrain/19/858571/354048.terrain new file mode 100644 index 000000000..27e9eda24 Binary files /dev/null and b/public/terrain/19/858571/354048.terrain differ diff --git a/public/terrain/19/858571/354049.terrain b/public/terrain/19/858571/354049.terrain new file mode 100644 index 000000000..db704c3b0 Binary files /dev/null and b/public/terrain/19/858571/354049.terrain differ diff --git a/public/terrain/19/858571/354050.terrain b/public/terrain/19/858571/354050.terrain new file mode 100644 index 000000000..692dd82c2 Binary files /dev/null and b/public/terrain/19/858571/354050.terrain differ diff --git a/public/terrain/19/858571/354051.terrain b/public/terrain/19/858571/354051.terrain new file mode 100644 index 000000000..85406af8e Binary files /dev/null and b/public/terrain/19/858571/354051.terrain differ diff --git a/public/terrain/19/858571/354052.terrain b/public/terrain/19/858571/354052.terrain new file mode 100644 index 000000000..9182a402c Binary files /dev/null and b/public/terrain/19/858571/354052.terrain differ diff --git a/public/terrain/19/858571/354053.terrain b/public/terrain/19/858571/354053.terrain new file mode 100644 index 000000000..12d62dd70 Binary files /dev/null and b/public/terrain/19/858571/354053.terrain differ diff --git a/public/terrain/19/858571/354054.terrain b/public/terrain/19/858571/354054.terrain new file mode 100644 index 000000000..a90a7176e Binary files /dev/null and b/public/terrain/19/858571/354054.terrain differ diff --git a/public/terrain/19/858571/354055.terrain b/public/terrain/19/858571/354055.terrain new file mode 100644 index 000000000..10f2aec74 Binary files /dev/null and b/public/terrain/19/858571/354055.terrain differ diff --git a/public/terrain/19/858571/354056.terrain b/public/terrain/19/858571/354056.terrain new file mode 100644 index 000000000..2967f9529 Binary files /dev/null and b/public/terrain/19/858571/354056.terrain differ diff --git a/public/terrain/19/858571/354057.terrain b/public/terrain/19/858571/354057.terrain new file mode 100644 index 000000000..a6e3ddcb6 Binary files /dev/null and b/public/terrain/19/858571/354057.terrain differ diff --git a/public/terrain/19/858571/354058.terrain b/public/terrain/19/858571/354058.terrain new file mode 100644 index 000000000..4ef7a7814 Binary files /dev/null and b/public/terrain/19/858571/354058.terrain differ diff --git a/public/terrain/19/858571/354059.terrain b/public/terrain/19/858571/354059.terrain new file mode 100644 index 000000000..b2849604b Binary files /dev/null and b/public/terrain/19/858571/354059.terrain differ diff --git a/public/terrain/19/858572/353743.terrain b/public/terrain/19/858572/353743.terrain new file mode 100644 index 000000000..866cfc4ec Binary files /dev/null and b/public/terrain/19/858572/353743.terrain differ diff --git a/public/terrain/19/858572/353744.terrain b/public/terrain/19/858572/353744.terrain new file mode 100644 index 000000000..f1c055ffc Binary files /dev/null and b/public/terrain/19/858572/353744.terrain differ diff --git a/public/terrain/19/858572/353745.terrain b/public/terrain/19/858572/353745.terrain new file mode 100644 index 000000000..6528f7c3b Binary files /dev/null and b/public/terrain/19/858572/353745.terrain differ diff --git a/public/terrain/19/858572/353746.terrain b/public/terrain/19/858572/353746.terrain new file mode 100644 index 000000000..5a09a2bcb Binary files /dev/null and b/public/terrain/19/858572/353746.terrain differ diff --git a/public/terrain/19/858572/353747.terrain b/public/terrain/19/858572/353747.terrain new file mode 100644 index 000000000..c23de7dce Binary files /dev/null and b/public/terrain/19/858572/353747.terrain differ diff --git a/public/terrain/19/858572/353748.terrain b/public/terrain/19/858572/353748.terrain new file mode 100644 index 000000000..00faca79d Binary files /dev/null and b/public/terrain/19/858572/353748.terrain differ diff --git a/public/terrain/19/858572/353749.terrain b/public/terrain/19/858572/353749.terrain new file mode 100644 index 000000000..b4a9f101c Binary files /dev/null and b/public/terrain/19/858572/353749.terrain differ diff --git a/public/terrain/19/858572/353750.terrain b/public/terrain/19/858572/353750.terrain new file mode 100644 index 000000000..8a18e7d51 Binary files /dev/null and b/public/terrain/19/858572/353750.terrain differ diff --git a/public/terrain/19/858572/353751.terrain b/public/terrain/19/858572/353751.terrain new file mode 100644 index 000000000..3d51f67eb Binary files /dev/null and b/public/terrain/19/858572/353751.terrain differ diff --git a/public/terrain/19/858572/353752.terrain b/public/terrain/19/858572/353752.terrain new file mode 100644 index 000000000..c1916fb22 Binary files /dev/null and b/public/terrain/19/858572/353752.terrain differ diff --git a/public/terrain/19/858572/353753.terrain b/public/terrain/19/858572/353753.terrain new file mode 100644 index 000000000..2fffedf50 Binary files /dev/null and b/public/terrain/19/858572/353753.terrain differ diff --git a/public/terrain/19/858572/353754.terrain b/public/terrain/19/858572/353754.terrain new file mode 100644 index 000000000..01bf2e481 Binary files /dev/null and b/public/terrain/19/858572/353754.terrain differ diff --git a/public/terrain/19/858572/353755.terrain b/public/terrain/19/858572/353755.terrain new file mode 100644 index 000000000..cae149dc6 Binary files /dev/null and b/public/terrain/19/858572/353755.terrain differ diff --git a/public/terrain/19/858572/353756.terrain b/public/terrain/19/858572/353756.terrain new file mode 100644 index 000000000..1ab64b9f9 Binary files /dev/null and b/public/terrain/19/858572/353756.terrain differ diff --git a/public/terrain/19/858572/353757.terrain b/public/terrain/19/858572/353757.terrain new file mode 100644 index 000000000..e3f873f99 Binary files /dev/null and b/public/terrain/19/858572/353757.terrain differ diff --git a/public/terrain/19/858572/353758.terrain b/public/terrain/19/858572/353758.terrain new file mode 100644 index 000000000..5d99c6d19 Binary files /dev/null and b/public/terrain/19/858572/353758.terrain differ diff --git a/public/terrain/19/858572/353759.terrain b/public/terrain/19/858572/353759.terrain new file mode 100644 index 000000000..e51eeb62d Binary files /dev/null and b/public/terrain/19/858572/353759.terrain differ diff --git a/public/terrain/19/858572/353760.terrain b/public/terrain/19/858572/353760.terrain new file mode 100644 index 000000000..87defe7ce Binary files /dev/null and b/public/terrain/19/858572/353760.terrain differ diff --git a/public/terrain/19/858572/353761.terrain b/public/terrain/19/858572/353761.terrain new file mode 100644 index 000000000..413cf76a9 Binary files /dev/null and b/public/terrain/19/858572/353761.terrain differ diff --git a/public/terrain/19/858572/353762.terrain b/public/terrain/19/858572/353762.terrain new file mode 100644 index 000000000..5d348c468 Binary files /dev/null and b/public/terrain/19/858572/353762.terrain differ diff --git a/public/terrain/19/858572/353763.terrain b/public/terrain/19/858572/353763.terrain new file mode 100644 index 000000000..db0bd2ad9 Binary files /dev/null and b/public/terrain/19/858572/353763.terrain differ diff --git a/public/terrain/19/858572/353764.terrain b/public/terrain/19/858572/353764.terrain new file mode 100644 index 000000000..64fdbe478 Binary files /dev/null and b/public/terrain/19/858572/353764.terrain differ diff --git a/public/terrain/19/858572/353765.terrain b/public/terrain/19/858572/353765.terrain new file mode 100644 index 000000000..1829eba3a Binary files /dev/null and b/public/terrain/19/858572/353765.terrain differ diff --git a/public/terrain/19/858572/353766.terrain b/public/terrain/19/858572/353766.terrain new file mode 100644 index 000000000..4a25af17a Binary files /dev/null and b/public/terrain/19/858572/353766.terrain differ diff --git a/public/terrain/19/858572/353767.terrain b/public/terrain/19/858572/353767.terrain new file mode 100644 index 000000000..42c93c4d2 Binary files /dev/null and b/public/terrain/19/858572/353767.terrain differ diff --git a/public/terrain/19/858572/353768.terrain b/public/terrain/19/858572/353768.terrain new file mode 100644 index 000000000..edaa85ad5 Binary files /dev/null and b/public/terrain/19/858572/353768.terrain differ diff --git a/public/terrain/19/858572/353769.terrain b/public/terrain/19/858572/353769.terrain new file mode 100644 index 000000000..5243042bd Binary files /dev/null and b/public/terrain/19/858572/353769.terrain differ diff --git a/public/terrain/19/858572/353770.terrain b/public/terrain/19/858572/353770.terrain new file mode 100644 index 000000000..0b23dcdd3 Binary files /dev/null and b/public/terrain/19/858572/353770.terrain differ diff --git a/public/terrain/19/858572/353771.terrain b/public/terrain/19/858572/353771.terrain new file mode 100644 index 000000000..d47e387f6 Binary files /dev/null and b/public/terrain/19/858572/353771.terrain differ diff --git a/public/terrain/19/858572/353772.terrain b/public/terrain/19/858572/353772.terrain new file mode 100644 index 000000000..92c1c37ff Binary files /dev/null and b/public/terrain/19/858572/353772.terrain differ diff --git a/public/terrain/19/858572/353773.terrain b/public/terrain/19/858572/353773.terrain new file mode 100644 index 000000000..9950addb1 Binary files /dev/null and b/public/terrain/19/858572/353773.terrain differ diff --git a/public/terrain/19/858572/353774.terrain b/public/terrain/19/858572/353774.terrain new file mode 100644 index 000000000..2d445fd8c Binary files /dev/null and b/public/terrain/19/858572/353774.terrain differ diff --git a/public/terrain/19/858572/353775.terrain b/public/terrain/19/858572/353775.terrain new file mode 100644 index 000000000..200797161 Binary files /dev/null and b/public/terrain/19/858572/353775.terrain differ diff --git a/public/terrain/19/858572/353776.terrain b/public/terrain/19/858572/353776.terrain new file mode 100644 index 000000000..fa7f9f13c Binary files /dev/null and b/public/terrain/19/858572/353776.terrain differ diff --git a/public/terrain/19/858572/353777.terrain b/public/terrain/19/858572/353777.terrain new file mode 100644 index 000000000..7a14e9746 Binary files /dev/null and b/public/terrain/19/858572/353777.terrain differ diff --git a/public/terrain/19/858572/353778.terrain b/public/terrain/19/858572/353778.terrain new file mode 100644 index 000000000..b86261e9d Binary files /dev/null and b/public/terrain/19/858572/353778.terrain differ diff --git a/public/terrain/19/858572/353779.terrain b/public/terrain/19/858572/353779.terrain new file mode 100644 index 000000000..43e51c375 Binary files /dev/null and b/public/terrain/19/858572/353779.terrain differ diff --git a/public/terrain/19/858572/353780.terrain b/public/terrain/19/858572/353780.terrain new file mode 100644 index 000000000..1b4ec0f6d Binary files /dev/null and b/public/terrain/19/858572/353780.terrain differ diff --git a/public/terrain/19/858572/353781.terrain b/public/terrain/19/858572/353781.terrain new file mode 100644 index 000000000..790a87706 Binary files /dev/null and b/public/terrain/19/858572/353781.terrain differ diff --git a/public/terrain/19/858572/353782.terrain b/public/terrain/19/858572/353782.terrain new file mode 100644 index 000000000..5b94f0147 Binary files /dev/null and b/public/terrain/19/858572/353782.terrain differ diff --git a/public/terrain/19/858572/353783.terrain b/public/terrain/19/858572/353783.terrain new file mode 100644 index 000000000..4d484e0d9 Binary files /dev/null and b/public/terrain/19/858572/353783.terrain differ diff --git a/public/terrain/19/858572/353784.terrain b/public/terrain/19/858572/353784.terrain new file mode 100644 index 000000000..4de48ac51 Binary files /dev/null and b/public/terrain/19/858572/353784.terrain differ diff --git a/public/terrain/19/858572/353785.terrain b/public/terrain/19/858572/353785.terrain new file mode 100644 index 000000000..8f0dd608d Binary files /dev/null and b/public/terrain/19/858572/353785.terrain differ diff --git a/public/terrain/19/858572/353786.terrain b/public/terrain/19/858572/353786.terrain new file mode 100644 index 000000000..f7ed72661 Binary files /dev/null and b/public/terrain/19/858572/353786.terrain differ diff --git a/public/terrain/19/858572/353787.terrain b/public/terrain/19/858572/353787.terrain new file mode 100644 index 000000000..903257f8c Binary files /dev/null and b/public/terrain/19/858572/353787.terrain differ diff --git a/public/terrain/19/858572/353788.terrain b/public/terrain/19/858572/353788.terrain new file mode 100644 index 000000000..603713603 Binary files /dev/null and b/public/terrain/19/858572/353788.terrain differ diff --git a/public/terrain/19/858572/353789.terrain b/public/terrain/19/858572/353789.terrain new file mode 100644 index 000000000..30445681a Binary files /dev/null and b/public/terrain/19/858572/353789.terrain differ diff --git a/public/terrain/19/858572/353790.terrain b/public/terrain/19/858572/353790.terrain new file mode 100644 index 000000000..fb0e08da7 Binary files /dev/null and b/public/terrain/19/858572/353790.terrain differ diff --git a/public/terrain/19/858572/353791.terrain b/public/terrain/19/858572/353791.terrain new file mode 100644 index 000000000..29c4f9252 Binary files /dev/null and b/public/terrain/19/858572/353791.terrain differ diff --git a/public/terrain/19/858572/353792.terrain b/public/terrain/19/858572/353792.terrain new file mode 100644 index 000000000..f62af89fa Binary files /dev/null and b/public/terrain/19/858572/353792.terrain differ diff --git a/public/terrain/19/858572/353793.terrain b/public/terrain/19/858572/353793.terrain new file mode 100644 index 000000000..758a2dde9 Binary files /dev/null and b/public/terrain/19/858572/353793.terrain differ diff --git a/public/terrain/19/858572/353794.terrain b/public/terrain/19/858572/353794.terrain new file mode 100644 index 000000000..01e6f28a8 Binary files /dev/null and b/public/terrain/19/858572/353794.terrain differ diff --git a/public/terrain/19/858572/353795.terrain b/public/terrain/19/858572/353795.terrain new file mode 100644 index 000000000..bdf6b5e16 Binary files /dev/null and b/public/terrain/19/858572/353795.terrain differ diff --git a/public/terrain/19/858572/353796.terrain b/public/terrain/19/858572/353796.terrain new file mode 100644 index 000000000..3f1560628 Binary files /dev/null and b/public/terrain/19/858572/353796.terrain differ diff --git a/public/terrain/19/858572/353797.terrain b/public/terrain/19/858572/353797.terrain new file mode 100644 index 000000000..e8ab1fe5e Binary files /dev/null and b/public/terrain/19/858572/353797.terrain differ diff --git a/public/terrain/19/858572/353798.terrain b/public/terrain/19/858572/353798.terrain new file mode 100644 index 000000000..5d0733ace Binary files /dev/null and b/public/terrain/19/858572/353798.terrain differ diff --git a/public/terrain/19/858572/353799.terrain b/public/terrain/19/858572/353799.terrain new file mode 100644 index 000000000..03fa009c2 Binary files /dev/null and b/public/terrain/19/858572/353799.terrain differ diff --git a/public/terrain/19/858572/353800.terrain b/public/terrain/19/858572/353800.terrain new file mode 100644 index 000000000..8863ed967 Binary files /dev/null and b/public/terrain/19/858572/353800.terrain differ diff --git a/public/terrain/19/858572/353801.terrain b/public/terrain/19/858572/353801.terrain new file mode 100644 index 000000000..1bbafa6e3 Binary files /dev/null and b/public/terrain/19/858572/353801.terrain differ diff --git a/public/terrain/19/858572/353802.terrain b/public/terrain/19/858572/353802.terrain new file mode 100644 index 000000000..f5966ab5a Binary files /dev/null and b/public/terrain/19/858572/353802.terrain differ diff --git a/public/terrain/19/858572/353803.terrain b/public/terrain/19/858572/353803.terrain new file mode 100644 index 000000000..f54818ebd Binary files /dev/null and b/public/terrain/19/858572/353803.terrain differ diff --git a/public/terrain/19/858572/353804.terrain b/public/terrain/19/858572/353804.terrain new file mode 100644 index 000000000..e49da788a Binary files /dev/null and b/public/terrain/19/858572/353804.terrain differ diff --git a/public/terrain/19/858572/353805.terrain b/public/terrain/19/858572/353805.terrain new file mode 100644 index 000000000..7fad83a63 Binary files /dev/null and b/public/terrain/19/858572/353805.terrain differ diff --git a/public/terrain/19/858572/353806.terrain b/public/terrain/19/858572/353806.terrain new file mode 100644 index 000000000..3a3f4d3c3 Binary files /dev/null and b/public/terrain/19/858572/353806.terrain differ diff --git a/public/terrain/19/858572/353807.terrain b/public/terrain/19/858572/353807.terrain new file mode 100644 index 000000000..11aed89d0 Binary files /dev/null and b/public/terrain/19/858572/353807.terrain differ diff --git a/public/terrain/19/858572/353808.terrain b/public/terrain/19/858572/353808.terrain new file mode 100644 index 000000000..20554b0a2 Binary files /dev/null and b/public/terrain/19/858572/353808.terrain differ diff --git a/public/terrain/19/858572/353809.terrain b/public/terrain/19/858572/353809.terrain new file mode 100644 index 000000000..102804d69 Binary files /dev/null and b/public/terrain/19/858572/353809.terrain differ diff --git a/public/terrain/19/858572/353810.terrain b/public/terrain/19/858572/353810.terrain new file mode 100644 index 000000000..23944740f Binary files /dev/null and b/public/terrain/19/858572/353810.terrain differ diff --git a/public/terrain/19/858572/353811.terrain b/public/terrain/19/858572/353811.terrain new file mode 100644 index 000000000..eda0ae17d Binary files /dev/null and b/public/terrain/19/858572/353811.terrain differ diff --git a/public/terrain/19/858572/353812.terrain b/public/terrain/19/858572/353812.terrain new file mode 100644 index 000000000..8a727d6b3 Binary files /dev/null and b/public/terrain/19/858572/353812.terrain differ diff --git a/public/terrain/19/858572/353813.terrain b/public/terrain/19/858572/353813.terrain new file mode 100644 index 000000000..d89f32a78 Binary files /dev/null and b/public/terrain/19/858572/353813.terrain differ diff --git a/public/terrain/19/858572/353814.terrain b/public/terrain/19/858572/353814.terrain new file mode 100644 index 000000000..a1d46b569 Binary files /dev/null and b/public/terrain/19/858572/353814.terrain differ diff --git a/public/terrain/19/858572/353815.terrain b/public/terrain/19/858572/353815.terrain new file mode 100644 index 000000000..48474e807 Binary files /dev/null and b/public/terrain/19/858572/353815.terrain differ diff --git a/public/terrain/19/858572/353816.terrain b/public/terrain/19/858572/353816.terrain new file mode 100644 index 000000000..527c45275 Binary files /dev/null and b/public/terrain/19/858572/353816.terrain differ diff --git a/public/terrain/19/858572/353817.terrain b/public/terrain/19/858572/353817.terrain new file mode 100644 index 000000000..ea5f7d0e7 Binary files /dev/null and b/public/terrain/19/858572/353817.terrain differ diff --git a/public/terrain/19/858572/353818.terrain b/public/terrain/19/858572/353818.terrain new file mode 100644 index 000000000..0a6fe3078 Binary files /dev/null and b/public/terrain/19/858572/353818.terrain differ diff --git a/public/terrain/19/858572/353819.terrain b/public/terrain/19/858572/353819.terrain new file mode 100644 index 000000000..99a32375c Binary files /dev/null and b/public/terrain/19/858572/353819.terrain differ diff --git a/public/terrain/19/858572/353820.terrain b/public/terrain/19/858572/353820.terrain new file mode 100644 index 000000000..217913e58 Binary files /dev/null and b/public/terrain/19/858572/353820.terrain differ diff --git a/public/terrain/19/858572/353821.terrain b/public/terrain/19/858572/353821.terrain new file mode 100644 index 000000000..2cc4708d2 Binary files /dev/null and b/public/terrain/19/858572/353821.terrain differ diff --git a/public/terrain/19/858572/353822.terrain b/public/terrain/19/858572/353822.terrain new file mode 100644 index 000000000..46510bdeb Binary files /dev/null and b/public/terrain/19/858572/353822.terrain differ diff --git a/public/terrain/19/858572/353823.terrain b/public/terrain/19/858572/353823.terrain new file mode 100644 index 000000000..668da18d9 Binary files /dev/null and b/public/terrain/19/858572/353823.terrain differ diff --git a/public/terrain/19/858572/353824.terrain b/public/terrain/19/858572/353824.terrain new file mode 100644 index 000000000..f706d0af5 Binary files /dev/null and b/public/terrain/19/858572/353824.terrain differ diff --git a/public/terrain/19/858572/353825.terrain b/public/terrain/19/858572/353825.terrain new file mode 100644 index 000000000..722c98dec Binary files /dev/null and b/public/terrain/19/858572/353825.terrain differ diff --git a/public/terrain/19/858572/353826.terrain b/public/terrain/19/858572/353826.terrain new file mode 100644 index 000000000..b99ec6abf Binary files /dev/null and b/public/terrain/19/858572/353826.terrain differ diff --git a/public/terrain/19/858572/353827.terrain b/public/terrain/19/858572/353827.terrain new file mode 100644 index 000000000..215a66a1e Binary files /dev/null and b/public/terrain/19/858572/353827.terrain differ diff --git a/public/terrain/19/858572/353828.terrain b/public/terrain/19/858572/353828.terrain new file mode 100644 index 000000000..c0c404570 Binary files /dev/null and b/public/terrain/19/858572/353828.terrain differ diff --git a/public/terrain/19/858572/353829.terrain b/public/terrain/19/858572/353829.terrain new file mode 100644 index 000000000..72bd145b9 Binary files /dev/null and b/public/terrain/19/858572/353829.terrain differ diff --git a/public/terrain/19/858572/353830.terrain b/public/terrain/19/858572/353830.terrain new file mode 100644 index 000000000..6ef4733a8 Binary files /dev/null and b/public/terrain/19/858572/353830.terrain differ diff --git a/public/terrain/19/858572/353831.terrain b/public/terrain/19/858572/353831.terrain new file mode 100644 index 000000000..85fb6aac2 Binary files /dev/null and b/public/terrain/19/858572/353831.terrain differ diff --git a/public/terrain/19/858572/353832.terrain b/public/terrain/19/858572/353832.terrain new file mode 100644 index 000000000..a57b466da Binary files /dev/null and b/public/terrain/19/858572/353832.terrain differ diff --git a/public/terrain/19/858572/353833.terrain b/public/terrain/19/858572/353833.terrain new file mode 100644 index 000000000..42a01388a Binary files /dev/null and b/public/terrain/19/858572/353833.terrain differ diff --git a/public/terrain/19/858572/353834.terrain b/public/terrain/19/858572/353834.terrain new file mode 100644 index 000000000..4b4667384 Binary files /dev/null and b/public/terrain/19/858572/353834.terrain differ diff --git a/public/terrain/19/858572/353835.terrain b/public/terrain/19/858572/353835.terrain new file mode 100644 index 000000000..b5abe078b Binary files /dev/null and b/public/terrain/19/858572/353835.terrain differ diff --git a/public/terrain/19/858572/353836.terrain b/public/terrain/19/858572/353836.terrain new file mode 100644 index 000000000..b8551566b Binary files /dev/null and b/public/terrain/19/858572/353836.terrain differ diff --git a/public/terrain/19/858572/353837.terrain b/public/terrain/19/858572/353837.terrain new file mode 100644 index 000000000..b00e5343b Binary files /dev/null and b/public/terrain/19/858572/353837.terrain differ diff --git a/public/terrain/19/858572/353838.terrain b/public/terrain/19/858572/353838.terrain new file mode 100644 index 000000000..7d2330113 Binary files /dev/null and b/public/terrain/19/858572/353838.terrain differ diff --git a/public/terrain/19/858572/353839.terrain b/public/terrain/19/858572/353839.terrain new file mode 100644 index 000000000..74de4e9c3 Binary files /dev/null and b/public/terrain/19/858572/353839.terrain differ diff --git a/public/terrain/19/858572/353840.terrain b/public/terrain/19/858572/353840.terrain new file mode 100644 index 000000000..485aedd29 Binary files /dev/null and b/public/terrain/19/858572/353840.terrain differ diff --git a/public/terrain/19/858572/353841.terrain b/public/terrain/19/858572/353841.terrain new file mode 100644 index 000000000..79b210794 Binary files /dev/null and b/public/terrain/19/858572/353841.terrain differ diff --git a/public/terrain/19/858572/353842.terrain b/public/terrain/19/858572/353842.terrain new file mode 100644 index 000000000..29d45198e Binary files /dev/null and b/public/terrain/19/858572/353842.terrain differ diff --git a/public/terrain/19/858572/353843.terrain b/public/terrain/19/858572/353843.terrain new file mode 100644 index 000000000..29fdfd1b5 Binary files /dev/null and b/public/terrain/19/858572/353843.terrain differ diff --git a/public/terrain/19/858572/353844.terrain b/public/terrain/19/858572/353844.terrain new file mode 100644 index 000000000..d30a6b3fe Binary files /dev/null and b/public/terrain/19/858572/353844.terrain differ diff --git a/public/terrain/19/858572/353845.terrain b/public/terrain/19/858572/353845.terrain new file mode 100644 index 000000000..71503e41f Binary files /dev/null and b/public/terrain/19/858572/353845.terrain differ diff --git a/public/terrain/19/858572/353846.terrain b/public/terrain/19/858572/353846.terrain new file mode 100644 index 000000000..bfd96fcb8 Binary files /dev/null and b/public/terrain/19/858572/353846.terrain differ diff --git a/public/terrain/19/858572/353847.terrain b/public/terrain/19/858572/353847.terrain new file mode 100644 index 000000000..379c0144b Binary files /dev/null and b/public/terrain/19/858572/353847.terrain differ diff --git a/public/terrain/19/858572/353848.terrain b/public/terrain/19/858572/353848.terrain new file mode 100644 index 000000000..403573151 Binary files /dev/null and b/public/terrain/19/858572/353848.terrain differ diff --git a/public/terrain/19/858572/353849.terrain b/public/terrain/19/858572/353849.terrain new file mode 100644 index 000000000..21fa1640a Binary files /dev/null and b/public/terrain/19/858572/353849.terrain differ diff --git a/public/terrain/19/858572/353850.terrain b/public/terrain/19/858572/353850.terrain new file mode 100644 index 000000000..068a68a3d Binary files /dev/null and b/public/terrain/19/858572/353850.terrain differ diff --git a/public/terrain/19/858572/353851.terrain b/public/terrain/19/858572/353851.terrain new file mode 100644 index 000000000..cc99eaa12 Binary files /dev/null and b/public/terrain/19/858572/353851.terrain differ diff --git a/public/terrain/19/858572/353852.terrain b/public/terrain/19/858572/353852.terrain new file mode 100644 index 000000000..980671dda Binary files /dev/null and b/public/terrain/19/858572/353852.terrain differ diff --git a/public/terrain/19/858572/353853.terrain b/public/terrain/19/858572/353853.terrain new file mode 100644 index 000000000..187275083 Binary files /dev/null and b/public/terrain/19/858572/353853.terrain differ diff --git a/public/terrain/19/858572/353854.terrain b/public/terrain/19/858572/353854.terrain new file mode 100644 index 000000000..eb6967d9f Binary files /dev/null and b/public/terrain/19/858572/353854.terrain differ diff --git a/public/terrain/19/858572/353855.terrain b/public/terrain/19/858572/353855.terrain new file mode 100644 index 000000000..0d24c182e Binary files /dev/null and b/public/terrain/19/858572/353855.terrain differ diff --git a/public/terrain/19/858572/353856.terrain b/public/terrain/19/858572/353856.terrain new file mode 100644 index 000000000..0a6852901 Binary files /dev/null and b/public/terrain/19/858572/353856.terrain differ diff --git a/public/terrain/19/858572/353857.terrain b/public/terrain/19/858572/353857.terrain new file mode 100644 index 000000000..e4c4a720e Binary files /dev/null and b/public/terrain/19/858572/353857.terrain differ diff --git a/public/terrain/19/858572/353858.terrain b/public/terrain/19/858572/353858.terrain new file mode 100644 index 000000000..2d8d650a4 Binary files /dev/null and b/public/terrain/19/858572/353858.terrain differ diff --git a/public/terrain/19/858572/353859.terrain b/public/terrain/19/858572/353859.terrain new file mode 100644 index 000000000..9f14112f7 Binary files /dev/null and b/public/terrain/19/858572/353859.terrain differ diff --git a/public/terrain/19/858572/353860.terrain b/public/terrain/19/858572/353860.terrain new file mode 100644 index 000000000..5a5f5f05a Binary files /dev/null and b/public/terrain/19/858572/353860.terrain differ diff --git a/public/terrain/19/858572/353861.terrain b/public/terrain/19/858572/353861.terrain new file mode 100644 index 000000000..1b8e758ba Binary files /dev/null and b/public/terrain/19/858572/353861.terrain differ diff --git a/public/terrain/19/858572/353862.terrain b/public/terrain/19/858572/353862.terrain new file mode 100644 index 000000000..079c81290 Binary files /dev/null and b/public/terrain/19/858572/353862.terrain differ diff --git a/public/terrain/19/858572/353863.terrain b/public/terrain/19/858572/353863.terrain new file mode 100644 index 000000000..e20f2c99f Binary files /dev/null and b/public/terrain/19/858572/353863.terrain differ diff --git a/public/terrain/19/858572/353864.terrain b/public/terrain/19/858572/353864.terrain new file mode 100644 index 000000000..92442cabd Binary files /dev/null and b/public/terrain/19/858572/353864.terrain differ diff --git a/public/terrain/19/858572/353865.terrain b/public/terrain/19/858572/353865.terrain new file mode 100644 index 000000000..f48eb1de0 Binary files /dev/null and b/public/terrain/19/858572/353865.terrain differ diff --git a/public/terrain/19/858572/353866.terrain b/public/terrain/19/858572/353866.terrain new file mode 100644 index 000000000..9c8739b5e Binary files /dev/null and b/public/terrain/19/858572/353866.terrain differ diff --git a/public/terrain/19/858572/353867.terrain b/public/terrain/19/858572/353867.terrain new file mode 100644 index 000000000..245578ced Binary files /dev/null and b/public/terrain/19/858572/353867.terrain differ diff --git a/public/terrain/19/858572/353868.terrain b/public/terrain/19/858572/353868.terrain new file mode 100644 index 000000000..af48896e6 Binary files /dev/null and b/public/terrain/19/858572/353868.terrain differ diff --git a/public/terrain/19/858572/353869.terrain b/public/terrain/19/858572/353869.terrain new file mode 100644 index 000000000..5030620e0 Binary files /dev/null and b/public/terrain/19/858572/353869.terrain differ diff --git a/public/terrain/19/858572/353870.terrain b/public/terrain/19/858572/353870.terrain new file mode 100644 index 000000000..9b0a80bcb Binary files /dev/null and b/public/terrain/19/858572/353870.terrain differ diff --git a/public/terrain/19/858572/353871.terrain b/public/terrain/19/858572/353871.terrain new file mode 100644 index 000000000..a450f58f2 Binary files /dev/null and b/public/terrain/19/858572/353871.terrain differ diff --git a/public/terrain/19/858572/353872.terrain b/public/terrain/19/858572/353872.terrain new file mode 100644 index 000000000..869d0598c Binary files /dev/null and b/public/terrain/19/858572/353872.terrain differ diff --git a/public/terrain/19/858572/353873.terrain b/public/terrain/19/858572/353873.terrain new file mode 100644 index 000000000..92b80deb3 Binary files /dev/null and b/public/terrain/19/858572/353873.terrain differ diff --git a/public/terrain/19/858572/353874.terrain b/public/terrain/19/858572/353874.terrain new file mode 100644 index 000000000..8c7187acf Binary files /dev/null and b/public/terrain/19/858572/353874.terrain differ diff --git a/public/terrain/19/858572/353875.terrain b/public/terrain/19/858572/353875.terrain new file mode 100644 index 000000000..e3d5f88f2 Binary files /dev/null and b/public/terrain/19/858572/353875.terrain differ diff --git a/public/terrain/19/858572/353876.terrain b/public/terrain/19/858572/353876.terrain new file mode 100644 index 000000000..0618b4912 Binary files /dev/null and b/public/terrain/19/858572/353876.terrain differ diff --git a/public/terrain/19/858572/353877.terrain b/public/terrain/19/858572/353877.terrain new file mode 100644 index 000000000..da48bf7e2 Binary files /dev/null and b/public/terrain/19/858572/353877.terrain differ diff --git a/public/terrain/19/858572/353878.terrain b/public/terrain/19/858572/353878.terrain new file mode 100644 index 000000000..df597b772 Binary files /dev/null and b/public/terrain/19/858572/353878.terrain differ diff --git a/public/terrain/19/858572/353879.terrain b/public/terrain/19/858572/353879.terrain new file mode 100644 index 000000000..e5fa45ad2 Binary files /dev/null and b/public/terrain/19/858572/353879.terrain differ diff --git a/public/terrain/19/858572/353880.terrain b/public/terrain/19/858572/353880.terrain new file mode 100644 index 000000000..3f68df89c Binary files /dev/null and b/public/terrain/19/858572/353880.terrain differ diff --git a/public/terrain/19/858572/353881.terrain b/public/terrain/19/858572/353881.terrain new file mode 100644 index 000000000..17286eca6 Binary files /dev/null and b/public/terrain/19/858572/353881.terrain differ diff --git a/public/terrain/19/858572/353882.terrain b/public/terrain/19/858572/353882.terrain new file mode 100644 index 000000000..177c1b6ac Binary files /dev/null and b/public/terrain/19/858572/353882.terrain differ diff --git a/public/terrain/19/858572/353883.terrain b/public/terrain/19/858572/353883.terrain new file mode 100644 index 000000000..ba17bad0d Binary files /dev/null and b/public/terrain/19/858572/353883.terrain differ diff --git a/public/terrain/19/858572/353884.terrain b/public/terrain/19/858572/353884.terrain new file mode 100644 index 000000000..2f7f6b38d Binary files /dev/null and b/public/terrain/19/858572/353884.terrain differ diff --git a/public/terrain/19/858572/353885.terrain b/public/terrain/19/858572/353885.terrain new file mode 100644 index 000000000..f09129362 Binary files /dev/null and b/public/terrain/19/858572/353885.terrain differ diff --git a/public/terrain/19/858572/353886.terrain b/public/terrain/19/858572/353886.terrain new file mode 100644 index 000000000..612dd31b4 Binary files /dev/null and b/public/terrain/19/858572/353886.terrain differ diff --git a/public/terrain/19/858572/353887.terrain b/public/terrain/19/858572/353887.terrain new file mode 100644 index 000000000..3b0e01236 Binary files /dev/null and b/public/terrain/19/858572/353887.terrain differ diff --git a/public/terrain/19/858572/353888.terrain b/public/terrain/19/858572/353888.terrain new file mode 100644 index 000000000..177a06e28 Binary files /dev/null and b/public/terrain/19/858572/353888.terrain differ diff --git a/public/terrain/19/858572/353889.terrain b/public/terrain/19/858572/353889.terrain new file mode 100644 index 000000000..b4a0d34f4 Binary files /dev/null and b/public/terrain/19/858572/353889.terrain differ diff --git a/public/terrain/19/858572/353890.terrain b/public/terrain/19/858572/353890.terrain new file mode 100644 index 000000000..26887ccb5 Binary files /dev/null and b/public/terrain/19/858572/353890.terrain differ diff --git a/public/terrain/19/858572/353891.terrain b/public/terrain/19/858572/353891.terrain new file mode 100644 index 000000000..c9a5ff598 Binary files /dev/null and b/public/terrain/19/858572/353891.terrain differ diff --git a/public/terrain/19/858572/353892.terrain b/public/terrain/19/858572/353892.terrain new file mode 100644 index 000000000..7dae0cb77 Binary files /dev/null and b/public/terrain/19/858572/353892.terrain differ diff --git a/public/terrain/19/858572/353893.terrain b/public/terrain/19/858572/353893.terrain new file mode 100644 index 000000000..13ae321fb Binary files /dev/null and b/public/terrain/19/858572/353893.terrain differ diff --git a/public/terrain/19/858572/353894.terrain b/public/terrain/19/858572/353894.terrain new file mode 100644 index 000000000..e6d281128 Binary files /dev/null and b/public/terrain/19/858572/353894.terrain differ diff --git a/public/terrain/19/858572/353895.terrain b/public/terrain/19/858572/353895.terrain new file mode 100644 index 000000000..026aaa674 Binary files /dev/null and b/public/terrain/19/858572/353895.terrain differ diff --git a/public/terrain/19/858572/353896.terrain b/public/terrain/19/858572/353896.terrain new file mode 100644 index 000000000..bdf7e439b Binary files /dev/null and b/public/terrain/19/858572/353896.terrain differ diff --git a/public/terrain/19/858572/353897.terrain b/public/terrain/19/858572/353897.terrain new file mode 100644 index 000000000..79cdce11c Binary files /dev/null and b/public/terrain/19/858572/353897.terrain differ diff --git a/public/terrain/19/858572/353898.terrain b/public/terrain/19/858572/353898.terrain new file mode 100644 index 000000000..76c4e438e Binary files /dev/null and b/public/terrain/19/858572/353898.terrain differ diff --git a/public/terrain/19/858572/353899.terrain b/public/terrain/19/858572/353899.terrain new file mode 100644 index 000000000..d98f0c123 Binary files /dev/null and b/public/terrain/19/858572/353899.terrain differ diff --git a/public/terrain/19/858572/353900.terrain b/public/terrain/19/858572/353900.terrain new file mode 100644 index 000000000..8123c7289 Binary files /dev/null and b/public/terrain/19/858572/353900.terrain differ diff --git a/public/terrain/19/858572/353901.terrain b/public/terrain/19/858572/353901.terrain new file mode 100644 index 000000000..0f7304f19 Binary files /dev/null and b/public/terrain/19/858572/353901.terrain differ diff --git a/public/terrain/19/858572/353902.terrain b/public/terrain/19/858572/353902.terrain new file mode 100644 index 000000000..0b25cc3e1 Binary files /dev/null and b/public/terrain/19/858572/353902.terrain differ diff --git a/public/terrain/19/858572/353903.terrain b/public/terrain/19/858572/353903.terrain new file mode 100644 index 000000000..bad74f397 Binary files /dev/null and b/public/terrain/19/858572/353903.terrain differ diff --git a/public/terrain/19/858572/353904.terrain b/public/terrain/19/858572/353904.terrain new file mode 100644 index 000000000..33cc6be86 Binary files /dev/null and b/public/terrain/19/858572/353904.terrain differ diff --git a/public/terrain/19/858572/353905.terrain b/public/terrain/19/858572/353905.terrain new file mode 100644 index 000000000..aa589013c Binary files /dev/null and b/public/terrain/19/858572/353905.terrain differ diff --git a/public/terrain/19/858572/353906.terrain b/public/terrain/19/858572/353906.terrain new file mode 100644 index 000000000..c845583b7 Binary files /dev/null and b/public/terrain/19/858572/353906.terrain differ diff --git a/public/terrain/19/858572/353907.terrain b/public/terrain/19/858572/353907.terrain new file mode 100644 index 000000000..36b9710de Binary files /dev/null and b/public/terrain/19/858572/353907.terrain differ diff --git a/public/terrain/19/858572/353908.terrain b/public/terrain/19/858572/353908.terrain new file mode 100644 index 000000000..8e577698a Binary files /dev/null and b/public/terrain/19/858572/353908.terrain differ diff --git a/public/terrain/19/858572/353909.terrain b/public/terrain/19/858572/353909.terrain new file mode 100644 index 000000000..a7894a73f Binary files /dev/null and b/public/terrain/19/858572/353909.terrain differ diff --git a/public/terrain/19/858572/353910.terrain b/public/terrain/19/858572/353910.terrain new file mode 100644 index 000000000..c6430c1c1 Binary files /dev/null and b/public/terrain/19/858572/353910.terrain differ diff --git a/public/terrain/19/858572/353911.terrain b/public/terrain/19/858572/353911.terrain new file mode 100644 index 000000000..15f16d958 Binary files /dev/null and b/public/terrain/19/858572/353911.terrain differ diff --git a/public/terrain/19/858572/353912.terrain b/public/terrain/19/858572/353912.terrain new file mode 100644 index 000000000..19c8f7fb6 Binary files /dev/null and b/public/terrain/19/858572/353912.terrain differ diff --git a/public/terrain/19/858572/353913.terrain b/public/terrain/19/858572/353913.terrain new file mode 100644 index 000000000..fdaed1de4 Binary files /dev/null and b/public/terrain/19/858572/353913.terrain differ diff --git a/public/terrain/19/858572/353914.terrain b/public/terrain/19/858572/353914.terrain new file mode 100644 index 000000000..6e4994d56 Binary files /dev/null and b/public/terrain/19/858572/353914.terrain differ diff --git a/public/terrain/19/858572/353915.terrain b/public/terrain/19/858572/353915.terrain new file mode 100644 index 000000000..daf8b87c9 Binary files /dev/null and b/public/terrain/19/858572/353915.terrain differ diff --git a/public/terrain/19/858572/353916.terrain b/public/terrain/19/858572/353916.terrain new file mode 100644 index 000000000..9a326bc01 Binary files /dev/null and b/public/terrain/19/858572/353916.terrain differ diff --git a/public/terrain/19/858572/353917.terrain b/public/terrain/19/858572/353917.terrain new file mode 100644 index 000000000..ca0957021 Binary files /dev/null and b/public/terrain/19/858572/353917.terrain differ diff --git a/public/terrain/19/858572/353918.terrain b/public/terrain/19/858572/353918.terrain new file mode 100644 index 000000000..4a2aa7448 Binary files /dev/null and b/public/terrain/19/858572/353918.terrain differ diff --git a/public/terrain/19/858572/353919.terrain b/public/terrain/19/858572/353919.terrain new file mode 100644 index 000000000..d7fa7f7f6 Binary files /dev/null and b/public/terrain/19/858572/353919.terrain differ diff --git a/public/terrain/19/858572/353920.terrain b/public/terrain/19/858572/353920.terrain new file mode 100644 index 000000000..c9b5d7226 Binary files /dev/null and b/public/terrain/19/858572/353920.terrain differ diff --git a/public/terrain/19/858572/353921.terrain b/public/terrain/19/858572/353921.terrain new file mode 100644 index 000000000..22929c2ba Binary files /dev/null and b/public/terrain/19/858572/353921.terrain differ diff --git a/public/terrain/19/858572/353922.terrain b/public/terrain/19/858572/353922.terrain new file mode 100644 index 000000000..81d510567 Binary files /dev/null and b/public/terrain/19/858572/353922.terrain differ diff --git a/public/terrain/19/858572/353923.terrain b/public/terrain/19/858572/353923.terrain new file mode 100644 index 000000000..c3ced6fc4 Binary files /dev/null and b/public/terrain/19/858572/353923.terrain differ diff --git a/public/terrain/19/858572/353924.terrain b/public/terrain/19/858572/353924.terrain new file mode 100644 index 000000000..c59399678 Binary files /dev/null and b/public/terrain/19/858572/353924.terrain differ diff --git a/public/terrain/19/858572/353925.terrain b/public/terrain/19/858572/353925.terrain new file mode 100644 index 000000000..d1dfc1d24 Binary files /dev/null and b/public/terrain/19/858572/353925.terrain differ diff --git a/public/terrain/19/858572/353926.terrain b/public/terrain/19/858572/353926.terrain new file mode 100644 index 000000000..7fca22768 Binary files /dev/null and b/public/terrain/19/858572/353926.terrain differ diff --git a/public/terrain/19/858572/353927.terrain b/public/terrain/19/858572/353927.terrain new file mode 100644 index 000000000..83f95b6f3 Binary files /dev/null and b/public/terrain/19/858572/353927.terrain differ diff --git a/public/terrain/19/858572/353928.terrain b/public/terrain/19/858572/353928.terrain new file mode 100644 index 000000000..80d268c49 Binary files /dev/null and b/public/terrain/19/858572/353928.terrain differ diff --git a/public/terrain/19/858572/353929.terrain b/public/terrain/19/858572/353929.terrain new file mode 100644 index 000000000..8cfaf9e2b Binary files /dev/null and b/public/terrain/19/858572/353929.terrain differ diff --git a/public/terrain/19/858572/353930.terrain b/public/terrain/19/858572/353930.terrain new file mode 100644 index 000000000..0e4296b92 Binary files /dev/null and b/public/terrain/19/858572/353930.terrain differ diff --git a/public/terrain/19/858572/353931.terrain b/public/terrain/19/858572/353931.terrain new file mode 100644 index 000000000..a65195da0 Binary files /dev/null and b/public/terrain/19/858572/353931.terrain differ diff --git a/public/terrain/19/858572/353932.terrain b/public/terrain/19/858572/353932.terrain new file mode 100644 index 000000000..df67cb6a3 Binary files /dev/null and b/public/terrain/19/858572/353932.terrain differ diff --git a/public/terrain/19/858572/353933.terrain b/public/terrain/19/858572/353933.terrain new file mode 100644 index 000000000..7e0c6bfb1 Binary files /dev/null and b/public/terrain/19/858572/353933.terrain differ diff --git a/public/terrain/19/858572/353934.terrain b/public/terrain/19/858572/353934.terrain new file mode 100644 index 000000000..562311f33 Binary files /dev/null and b/public/terrain/19/858572/353934.terrain differ diff --git a/public/terrain/19/858572/353935.terrain b/public/terrain/19/858572/353935.terrain new file mode 100644 index 000000000..779a0bfbb Binary files /dev/null and b/public/terrain/19/858572/353935.terrain differ diff --git a/public/terrain/19/858572/353936.terrain b/public/terrain/19/858572/353936.terrain new file mode 100644 index 000000000..15465e1d1 Binary files /dev/null and b/public/terrain/19/858572/353936.terrain differ diff --git a/public/terrain/19/858572/353937.terrain b/public/terrain/19/858572/353937.terrain new file mode 100644 index 000000000..dc1bfa3ca Binary files /dev/null and b/public/terrain/19/858572/353937.terrain differ diff --git a/public/terrain/19/858572/353938.terrain b/public/terrain/19/858572/353938.terrain new file mode 100644 index 000000000..11ce865a3 Binary files /dev/null and b/public/terrain/19/858572/353938.terrain differ diff --git a/public/terrain/19/858572/353939.terrain b/public/terrain/19/858572/353939.terrain new file mode 100644 index 000000000..99dd4ef06 Binary files /dev/null and b/public/terrain/19/858572/353939.terrain differ diff --git a/public/terrain/19/858572/353940.terrain b/public/terrain/19/858572/353940.terrain new file mode 100644 index 000000000..035843620 Binary files /dev/null and b/public/terrain/19/858572/353940.terrain differ diff --git a/public/terrain/19/858572/353941.terrain b/public/terrain/19/858572/353941.terrain new file mode 100644 index 000000000..c83164c06 Binary files /dev/null and b/public/terrain/19/858572/353941.terrain differ diff --git a/public/terrain/19/858572/353942.terrain b/public/terrain/19/858572/353942.terrain new file mode 100644 index 000000000..39c343249 Binary files /dev/null and b/public/terrain/19/858572/353942.terrain differ diff --git a/public/terrain/19/858572/353943.terrain b/public/terrain/19/858572/353943.terrain new file mode 100644 index 000000000..79384fa84 Binary files /dev/null and b/public/terrain/19/858572/353943.terrain differ diff --git a/public/terrain/19/858572/353944.terrain b/public/terrain/19/858572/353944.terrain new file mode 100644 index 000000000..ea501195e Binary files /dev/null and b/public/terrain/19/858572/353944.terrain differ diff --git a/public/terrain/19/858572/353945.terrain b/public/terrain/19/858572/353945.terrain new file mode 100644 index 000000000..615f748e4 Binary files /dev/null and b/public/terrain/19/858572/353945.terrain differ diff --git a/public/terrain/19/858572/353946.terrain b/public/terrain/19/858572/353946.terrain new file mode 100644 index 000000000..f55cc40f4 Binary files /dev/null and b/public/terrain/19/858572/353946.terrain differ diff --git a/public/terrain/19/858572/353947.terrain b/public/terrain/19/858572/353947.terrain new file mode 100644 index 000000000..20ee218a3 Binary files /dev/null and b/public/terrain/19/858572/353947.terrain differ diff --git a/public/terrain/19/858572/353948.terrain b/public/terrain/19/858572/353948.terrain new file mode 100644 index 000000000..f2f4b0e32 Binary files /dev/null and b/public/terrain/19/858572/353948.terrain differ diff --git a/public/terrain/19/858572/353949.terrain b/public/terrain/19/858572/353949.terrain new file mode 100644 index 000000000..cef6c5827 Binary files /dev/null and b/public/terrain/19/858572/353949.terrain differ diff --git a/public/terrain/19/858572/353950.terrain b/public/terrain/19/858572/353950.terrain new file mode 100644 index 000000000..4993d3210 Binary files /dev/null and b/public/terrain/19/858572/353950.terrain differ diff --git a/public/terrain/19/858572/353951.terrain b/public/terrain/19/858572/353951.terrain new file mode 100644 index 000000000..1fd790503 Binary files /dev/null and b/public/terrain/19/858572/353951.terrain differ diff --git a/public/terrain/19/858572/353952.terrain b/public/terrain/19/858572/353952.terrain new file mode 100644 index 000000000..93a80f39e Binary files /dev/null and b/public/terrain/19/858572/353952.terrain differ diff --git a/public/terrain/19/858572/353953.terrain b/public/terrain/19/858572/353953.terrain new file mode 100644 index 000000000..9dd702fac Binary files /dev/null and b/public/terrain/19/858572/353953.terrain differ diff --git a/public/terrain/19/858572/353954.terrain b/public/terrain/19/858572/353954.terrain new file mode 100644 index 000000000..916388efc Binary files /dev/null and b/public/terrain/19/858572/353954.terrain differ diff --git a/public/terrain/19/858572/353955.terrain b/public/terrain/19/858572/353955.terrain new file mode 100644 index 000000000..8869a5864 Binary files /dev/null and b/public/terrain/19/858572/353955.terrain differ diff --git a/public/terrain/19/858572/353956.terrain b/public/terrain/19/858572/353956.terrain new file mode 100644 index 000000000..7b7e72543 Binary files /dev/null and b/public/terrain/19/858572/353956.terrain differ diff --git a/public/terrain/19/858572/353957.terrain b/public/terrain/19/858572/353957.terrain new file mode 100644 index 000000000..4528147a9 Binary files /dev/null and b/public/terrain/19/858572/353957.terrain differ diff --git a/public/terrain/19/858572/353958.terrain b/public/terrain/19/858572/353958.terrain new file mode 100644 index 000000000..a475b6f7c Binary files /dev/null and b/public/terrain/19/858572/353958.terrain differ diff --git a/public/terrain/19/858572/353959.terrain b/public/terrain/19/858572/353959.terrain new file mode 100644 index 000000000..3e2086644 Binary files /dev/null and b/public/terrain/19/858572/353959.terrain differ diff --git a/public/terrain/19/858572/353960.terrain b/public/terrain/19/858572/353960.terrain new file mode 100644 index 000000000..9ad62c02c Binary files /dev/null and b/public/terrain/19/858572/353960.terrain differ diff --git a/public/terrain/19/858572/353961.terrain b/public/terrain/19/858572/353961.terrain new file mode 100644 index 000000000..348403577 Binary files /dev/null and b/public/terrain/19/858572/353961.terrain differ diff --git a/public/terrain/19/858572/353962.terrain b/public/terrain/19/858572/353962.terrain new file mode 100644 index 000000000..43b362e19 Binary files /dev/null and b/public/terrain/19/858572/353962.terrain differ diff --git a/public/terrain/19/858572/353963.terrain b/public/terrain/19/858572/353963.terrain new file mode 100644 index 000000000..a01845adc Binary files /dev/null and b/public/terrain/19/858572/353963.terrain differ diff --git a/public/terrain/19/858572/353964.terrain b/public/terrain/19/858572/353964.terrain new file mode 100644 index 000000000..580a94ac1 Binary files /dev/null and b/public/terrain/19/858572/353964.terrain differ diff --git a/public/terrain/19/858572/353965.terrain b/public/terrain/19/858572/353965.terrain new file mode 100644 index 000000000..5fad262db Binary files /dev/null and b/public/terrain/19/858572/353965.terrain differ diff --git a/public/terrain/19/858572/353966.terrain b/public/terrain/19/858572/353966.terrain new file mode 100644 index 000000000..e66aa9f39 Binary files /dev/null and b/public/terrain/19/858572/353966.terrain differ diff --git a/public/terrain/19/858572/353967.terrain b/public/terrain/19/858572/353967.terrain new file mode 100644 index 000000000..0abe282e4 Binary files /dev/null and b/public/terrain/19/858572/353967.terrain differ diff --git a/public/terrain/19/858572/353968.terrain b/public/terrain/19/858572/353968.terrain new file mode 100644 index 000000000..a88419316 Binary files /dev/null and b/public/terrain/19/858572/353968.terrain differ diff --git a/public/terrain/19/858572/353969.terrain b/public/terrain/19/858572/353969.terrain new file mode 100644 index 000000000..d8de58c99 Binary files /dev/null and b/public/terrain/19/858572/353969.terrain differ diff --git a/public/terrain/19/858572/353970.terrain b/public/terrain/19/858572/353970.terrain new file mode 100644 index 000000000..145c85b64 Binary files /dev/null and b/public/terrain/19/858572/353970.terrain differ diff --git a/public/terrain/19/858572/353971.terrain b/public/terrain/19/858572/353971.terrain new file mode 100644 index 000000000..b3c4255b6 Binary files /dev/null and b/public/terrain/19/858572/353971.terrain differ diff --git a/public/terrain/19/858572/353972.terrain b/public/terrain/19/858572/353972.terrain new file mode 100644 index 000000000..b3ffe2945 Binary files /dev/null and b/public/terrain/19/858572/353972.terrain differ diff --git a/public/terrain/19/858572/353973.terrain b/public/terrain/19/858572/353973.terrain new file mode 100644 index 000000000..cc4a94892 Binary files /dev/null and b/public/terrain/19/858572/353973.terrain differ diff --git a/public/terrain/19/858572/353974.terrain b/public/terrain/19/858572/353974.terrain new file mode 100644 index 000000000..b04afca90 Binary files /dev/null and b/public/terrain/19/858572/353974.terrain differ diff --git a/public/terrain/19/858572/353975.terrain b/public/terrain/19/858572/353975.terrain new file mode 100644 index 000000000..5886074f6 Binary files /dev/null and b/public/terrain/19/858572/353975.terrain differ diff --git a/public/terrain/19/858572/353976.terrain b/public/terrain/19/858572/353976.terrain new file mode 100644 index 000000000..489b3ec34 Binary files /dev/null and b/public/terrain/19/858572/353976.terrain differ diff --git a/public/terrain/19/858572/353977.terrain b/public/terrain/19/858572/353977.terrain new file mode 100644 index 000000000..939535c10 Binary files /dev/null and b/public/terrain/19/858572/353977.terrain differ diff --git a/public/terrain/19/858572/353978.terrain b/public/terrain/19/858572/353978.terrain new file mode 100644 index 000000000..c8ee8fab9 Binary files /dev/null and b/public/terrain/19/858572/353978.terrain differ diff --git a/public/terrain/19/858572/353979.terrain b/public/terrain/19/858572/353979.terrain new file mode 100644 index 000000000..b96bfe78c Binary files /dev/null and b/public/terrain/19/858572/353979.terrain differ diff --git a/public/terrain/19/858572/353980.terrain b/public/terrain/19/858572/353980.terrain new file mode 100644 index 000000000..24e64294c Binary files /dev/null and b/public/terrain/19/858572/353980.terrain differ diff --git a/public/terrain/19/858572/353981.terrain b/public/terrain/19/858572/353981.terrain new file mode 100644 index 000000000..3dc4103a7 Binary files /dev/null and b/public/terrain/19/858572/353981.terrain differ diff --git a/public/terrain/19/858572/353982.terrain b/public/terrain/19/858572/353982.terrain new file mode 100644 index 000000000..98d47ad01 Binary files /dev/null and b/public/terrain/19/858572/353982.terrain differ diff --git a/public/terrain/19/858572/353983.terrain b/public/terrain/19/858572/353983.terrain new file mode 100644 index 000000000..5b393fcaa Binary files /dev/null and b/public/terrain/19/858572/353983.terrain differ diff --git a/public/terrain/19/858572/353984.terrain b/public/terrain/19/858572/353984.terrain new file mode 100644 index 000000000..9a95a3e80 Binary files /dev/null and b/public/terrain/19/858572/353984.terrain differ diff --git a/public/terrain/19/858572/353985.terrain b/public/terrain/19/858572/353985.terrain new file mode 100644 index 000000000..b8e460128 Binary files /dev/null and b/public/terrain/19/858572/353985.terrain differ diff --git a/public/terrain/19/858572/353986.terrain b/public/terrain/19/858572/353986.terrain new file mode 100644 index 000000000..9ac874b7c Binary files /dev/null and b/public/terrain/19/858572/353986.terrain differ diff --git a/public/terrain/19/858572/353987.terrain b/public/terrain/19/858572/353987.terrain new file mode 100644 index 000000000..41d473e4f Binary files /dev/null and b/public/terrain/19/858572/353987.terrain differ diff --git a/public/terrain/19/858572/353988.terrain b/public/terrain/19/858572/353988.terrain new file mode 100644 index 000000000..4043151e9 Binary files /dev/null and b/public/terrain/19/858572/353988.terrain differ diff --git a/public/terrain/19/858572/353989.terrain b/public/terrain/19/858572/353989.terrain new file mode 100644 index 000000000..b4b258cd3 Binary files /dev/null and b/public/terrain/19/858572/353989.terrain differ diff --git a/public/terrain/19/858572/353990.terrain b/public/terrain/19/858572/353990.terrain new file mode 100644 index 000000000..0737238b9 Binary files /dev/null and b/public/terrain/19/858572/353990.terrain differ diff --git a/public/terrain/19/858572/353991.terrain b/public/terrain/19/858572/353991.terrain new file mode 100644 index 000000000..3758dd6c9 Binary files /dev/null and b/public/terrain/19/858572/353991.terrain differ diff --git a/public/terrain/19/858572/353992.terrain b/public/terrain/19/858572/353992.terrain new file mode 100644 index 000000000..3177e750d Binary files /dev/null and b/public/terrain/19/858572/353992.terrain differ diff --git a/public/terrain/19/858572/353993.terrain b/public/terrain/19/858572/353993.terrain new file mode 100644 index 000000000..bc57305ad Binary files /dev/null and b/public/terrain/19/858572/353993.terrain differ diff --git a/public/terrain/19/858572/353994.terrain b/public/terrain/19/858572/353994.terrain new file mode 100644 index 000000000..fc46083e8 Binary files /dev/null and b/public/terrain/19/858572/353994.terrain differ diff --git a/public/terrain/19/858572/353995.terrain b/public/terrain/19/858572/353995.terrain new file mode 100644 index 000000000..624efc671 Binary files /dev/null and b/public/terrain/19/858572/353995.terrain differ diff --git a/public/terrain/19/858572/353996.terrain b/public/terrain/19/858572/353996.terrain new file mode 100644 index 000000000..0552b7946 Binary files /dev/null and b/public/terrain/19/858572/353996.terrain differ diff --git a/public/terrain/19/858572/353997.terrain b/public/terrain/19/858572/353997.terrain new file mode 100644 index 000000000..ce37b23ad Binary files /dev/null and b/public/terrain/19/858572/353997.terrain differ diff --git a/public/terrain/19/858572/353998.terrain b/public/terrain/19/858572/353998.terrain new file mode 100644 index 000000000..1500ed766 Binary files /dev/null and b/public/terrain/19/858572/353998.terrain differ diff --git a/public/terrain/19/858572/353999.terrain b/public/terrain/19/858572/353999.terrain new file mode 100644 index 000000000..e72ca5eab Binary files /dev/null and b/public/terrain/19/858572/353999.terrain differ diff --git a/public/terrain/19/858572/354000.terrain b/public/terrain/19/858572/354000.terrain new file mode 100644 index 000000000..660fcbd8a Binary files /dev/null and b/public/terrain/19/858572/354000.terrain differ diff --git a/public/terrain/19/858572/354001.terrain b/public/terrain/19/858572/354001.terrain new file mode 100644 index 000000000..0e732ae6e Binary files /dev/null and b/public/terrain/19/858572/354001.terrain differ diff --git a/public/terrain/19/858572/354002.terrain b/public/terrain/19/858572/354002.terrain new file mode 100644 index 000000000..38cc2b776 Binary files /dev/null and b/public/terrain/19/858572/354002.terrain differ diff --git a/public/terrain/19/858572/354003.terrain b/public/terrain/19/858572/354003.terrain new file mode 100644 index 000000000..ab4f42b4f Binary files /dev/null and b/public/terrain/19/858572/354003.terrain differ diff --git a/public/terrain/19/858572/354004.terrain b/public/terrain/19/858572/354004.terrain new file mode 100644 index 000000000..9b90e24c3 Binary files /dev/null and b/public/terrain/19/858572/354004.terrain differ diff --git a/public/terrain/19/858572/354005.terrain b/public/terrain/19/858572/354005.terrain new file mode 100644 index 000000000..b60870b0e Binary files /dev/null and b/public/terrain/19/858572/354005.terrain differ diff --git a/public/terrain/19/858572/354006.terrain b/public/terrain/19/858572/354006.terrain new file mode 100644 index 000000000..c9ae630d5 Binary files /dev/null and b/public/terrain/19/858572/354006.terrain differ diff --git a/public/terrain/19/858572/354007.terrain b/public/terrain/19/858572/354007.terrain new file mode 100644 index 000000000..ebd611a51 Binary files /dev/null and b/public/terrain/19/858572/354007.terrain differ diff --git a/public/terrain/19/858572/354008.terrain b/public/terrain/19/858572/354008.terrain new file mode 100644 index 000000000..1d687174d Binary files /dev/null and b/public/terrain/19/858572/354008.terrain differ diff --git a/public/terrain/19/858572/354009.terrain b/public/terrain/19/858572/354009.terrain new file mode 100644 index 000000000..f275308d9 Binary files /dev/null and b/public/terrain/19/858572/354009.terrain differ diff --git a/public/terrain/19/858572/354010.terrain b/public/terrain/19/858572/354010.terrain new file mode 100644 index 000000000..25c298559 Binary files /dev/null and b/public/terrain/19/858572/354010.terrain differ diff --git a/public/terrain/19/858572/354011.terrain b/public/terrain/19/858572/354011.terrain new file mode 100644 index 000000000..ca1937a22 Binary files /dev/null and b/public/terrain/19/858572/354011.terrain differ diff --git a/public/terrain/19/858572/354012.terrain b/public/terrain/19/858572/354012.terrain new file mode 100644 index 000000000..7777ddc8b Binary files /dev/null and b/public/terrain/19/858572/354012.terrain differ diff --git a/public/terrain/19/858572/354013.terrain b/public/terrain/19/858572/354013.terrain new file mode 100644 index 000000000..265814a6f Binary files /dev/null and b/public/terrain/19/858572/354013.terrain differ diff --git a/public/terrain/19/858572/354014.terrain b/public/terrain/19/858572/354014.terrain new file mode 100644 index 000000000..ff030331e Binary files /dev/null and b/public/terrain/19/858572/354014.terrain differ diff --git a/public/terrain/19/858572/354015.terrain b/public/terrain/19/858572/354015.terrain new file mode 100644 index 000000000..4a543d2e5 Binary files /dev/null and b/public/terrain/19/858572/354015.terrain differ diff --git a/public/terrain/19/858572/354016.terrain b/public/terrain/19/858572/354016.terrain new file mode 100644 index 000000000..ac2e28799 Binary files /dev/null and b/public/terrain/19/858572/354016.terrain differ diff --git a/public/terrain/19/858572/354017.terrain b/public/terrain/19/858572/354017.terrain new file mode 100644 index 000000000..c2db6fa53 Binary files /dev/null and b/public/terrain/19/858572/354017.terrain differ diff --git a/public/terrain/19/858572/354018.terrain b/public/terrain/19/858572/354018.terrain new file mode 100644 index 000000000..5484dc62e Binary files /dev/null and b/public/terrain/19/858572/354018.terrain differ diff --git a/public/terrain/19/858572/354019.terrain b/public/terrain/19/858572/354019.terrain new file mode 100644 index 000000000..cf68bf41f Binary files /dev/null and b/public/terrain/19/858572/354019.terrain differ diff --git a/public/terrain/19/858572/354020.terrain b/public/terrain/19/858572/354020.terrain new file mode 100644 index 000000000..694ed6d0f Binary files /dev/null and b/public/terrain/19/858572/354020.terrain differ diff --git a/public/terrain/19/858572/354021.terrain b/public/terrain/19/858572/354021.terrain new file mode 100644 index 000000000..e9fa60690 Binary files /dev/null and b/public/terrain/19/858572/354021.terrain differ diff --git a/public/terrain/19/858572/354022.terrain b/public/terrain/19/858572/354022.terrain new file mode 100644 index 000000000..9ef33bb7c Binary files /dev/null and b/public/terrain/19/858572/354022.terrain differ diff --git a/public/terrain/19/858572/354023.terrain b/public/terrain/19/858572/354023.terrain new file mode 100644 index 000000000..1eb1698af Binary files /dev/null and b/public/terrain/19/858572/354023.terrain differ diff --git a/public/terrain/19/858572/354024.terrain b/public/terrain/19/858572/354024.terrain new file mode 100644 index 000000000..3fc09c508 Binary files /dev/null and b/public/terrain/19/858572/354024.terrain differ diff --git a/public/terrain/19/858572/354025.terrain b/public/terrain/19/858572/354025.terrain new file mode 100644 index 000000000..630d6dede Binary files /dev/null and b/public/terrain/19/858572/354025.terrain differ diff --git a/public/terrain/19/858572/354026.terrain b/public/terrain/19/858572/354026.terrain new file mode 100644 index 000000000..d7e8bc288 Binary files /dev/null and b/public/terrain/19/858572/354026.terrain differ diff --git a/public/terrain/19/858572/354027.terrain b/public/terrain/19/858572/354027.terrain new file mode 100644 index 000000000..0d9d9cff9 Binary files /dev/null and b/public/terrain/19/858572/354027.terrain differ diff --git a/public/terrain/19/858572/354028.terrain b/public/terrain/19/858572/354028.terrain new file mode 100644 index 000000000..db908f442 Binary files /dev/null and b/public/terrain/19/858572/354028.terrain differ diff --git a/public/terrain/19/858572/354029.terrain b/public/terrain/19/858572/354029.terrain new file mode 100644 index 000000000..d8cbc3a96 Binary files /dev/null and b/public/terrain/19/858572/354029.terrain differ diff --git a/public/terrain/19/858572/354030.terrain b/public/terrain/19/858572/354030.terrain new file mode 100644 index 000000000..111c0cd45 Binary files /dev/null and b/public/terrain/19/858572/354030.terrain differ diff --git a/public/terrain/19/858572/354031.terrain b/public/terrain/19/858572/354031.terrain new file mode 100644 index 000000000..f2a2238f6 Binary files /dev/null and b/public/terrain/19/858572/354031.terrain differ diff --git a/public/terrain/19/858572/354032.terrain b/public/terrain/19/858572/354032.terrain new file mode 100644 index 000000000..120a852d9 Binary files /dev/null and b/public/terrain/19/858572/354032.terrain differ diff --git a/public/terrain/19/858572/354033.terrain b/public/terrain/19/858572/354033.terrain new file mode 100644 index 000000000..9ae0ce75a Binary files /dev/null and b/public/terrain/19/858572/354033.terrain differ diff --git a/public/terrain/19/858572/354034.terrain b/public/terrain/19/858572/354034.terrain new file mode 100644 index 000000000..ab8519a8f Binary files /dev/null and b/public/terrain/19/858572/354034.terrain differ diff --git a/public/terrain/19/858572/354035.terrain b/public/terrain/19/858572/354035.terrain new file mode 100644 index 000000000..1b2b6a92a Binary files /dev/null and b/public/terrain/19/858572/354035.terrain differ diff --git a/public/terrain/19/858572/354036.terrain b/public/terrain/19/858572/354036.terrain new file mode 100644 index 000000000..11d63adbe Binary files /dev/null and b/public/terrain/19/858572/354036.terrain differ diff --git a/public/terrain/19/858572/354037.terrain b/public/terrain/19/858572/354037.terrain new file mode 100644 index 000000000..5e04fc35e Binary files /dev/null and b/public/terrain/19/858572/354037.terrain differ diff --git a/public/terrain/19/858572/354038.terrain b/public/terrain/19/858572/354038.terrain new file mode 100644 index 000000000..16e05e7a6 Binary files /dev/null and b/public/terrain/19/858572/354038.terrain differ diff --git a/public/terrain/19/858572/354039.terrain b/public/terrain/19/858572/354039.terrain new file mode 100644 index 000000000..f608bab77 Binary files /dev/null and b/public/terrain/19/858572/354039.terrain differ diff --git a/public/terrain/19/858572/354040.terrain b/public/terrain/19/858572/354040.terrain new file mode 100644 index 000000000..4a4ae1c98 Binary files /dev/null and b/public/terrain/19/858572/354040.terrain differ diff --git a/public/terrain/19/858572/354041.terrain b/public/terrain/19/858572/354041.terrain new file mode 100644 index 000000000..8aa13a260 Binary files /dev/null and b/public/terrain/19/858572/354041.terrain differ diff --git a/public/terrain/19/858572/354042.terrain b/public/terrain/19/858572/354042.terrain new file mode 100644 index 000000000..9774e3122 Binary files /dev/null and b/public/terrain/19/858572/354042.terrain differ diff --git a/public/terrain/19/858572/354043.terrain b/public/terrain/19/858572/354043.terrain new file mode 100644 index 000000000..7b6c603fe Binary files /dev/null and b/public/terrain/19/858572/354043.terrain differ diff --git a/public/terrain/19/858572/354044.terrain b/public/terrain/19/858572/354044.terrain new file mode 100644 index 000000000..0f55ffd64 Binary files /dev/null and b/public/terrain/19/858572/354044.terrain differ diff --git a/public/terrain/19/858572/354045.terrain b/public/terrain/19/858572/354045.terrain new file mode 100644 index 000000000..32e683d24 Binary files /dev/null and b/public/terrain/19/858572/354045.terrain differ diff --git a/public/terrain/19/858572/354046.terrain b/public/terrain/19/858572/354046.terrain new file mode 100644 index 000000000..1737f15a0 Binary files /dev/null and b/public/terrain/19/858572/354046.terrain differ diff --git a/public/terrain/19/858572/354047.terrain b/public/terrain/19/858572/354047.terrain new file mode 100644 index 000000000..c9b8d29f5 Binary files /dev/null and b/public/terrain/19/858572/354047.terrain differ diff --git a/public/terrain/19/858572/354048.terrain b/public/terrain/19/858572/354048.terrain new file mode 100644 index 000000000..43f2eabd0 Binary files /dev/null and b/public/terrain/19/858572/354048.terrain differ diff --git a/public/terrain/19/858572/354049.terrain b/public/terrain/19/858572/354049.terrain new file mode 100644 index 000000000..d883ecdc1 Binary files /dev/null and b/public/terrain/19/858572/354049.terrain differ diff --git a/public/terrain/19/858572/354050.terrain b/public/terrain/19/858572/354050.terrain new file mode 100644 index 000000000..4eb407f4f Binary files /dev/null and b/public/terrain/19/858572/354050.terrain differ diff --git a/public/terrain/19/858572/354051.terrain b/public/terrain/19/858572/354051.terrain new file mode 100644 index 000000000..93908b65d Binary files /dev/null and b/public/terrain/19/858572/354051.terrain differ diff --git a/public/terrain/19/858572/354052.terrain b/public/terrain/19/858572/354052.terrain new file mode 100644 index 000000000..265788096 Binary files /dev/null and b/public/terrain/19/858572/354052.terrain differ diff --git a/public/terrain/19/858572/354053.terrain b/public/terrain/19/858572/354053.terrain new file mode 100644 index 000000000..8bcb17da4 Binary files /dev/null and b/public/terrain/19/858572/354053.terrain differ diff --git a/public/terrain/19/858572/354054.terrain b/public/terrain/19/858572/354054.terrain new file mode 100644 index 000000000..ec5033e71 Binary files /dev/null and b/public/terrain/19/858572/354054.terrain differ diff --git a/public/terrain/19/858572/354055.terrain b/public/terrain/19/858572/354055.terrain new file mode 100644 index 000000000..14ea4b965 Binary files /dev/null and b/public/terrain/19/858572/354055.terrain differ diff --git a/public/terrain/19/858572/354056.terrain b/public/terrain/19/858572/354056.terrain new file mode 100644 index 000000000..7a695ac2b Binary files /dev/null and b/public/terrain/19/858572/354056.terrain differ diff --git a/public/terrain/19/858572/354057.terrain b/public/terrain/19/858572/354057.terrain new file mode 100644 index 000000000..895cb12fd Binary files /dev/null and b/public/terrain/19/858572/354057.terrain differ diff --git a/public/terrain/19/858572/354058.terrain b/public/terrain/19/858572/354058.terrain new file mode 100644 index 000000000..3bbb59502 Binary files /dev/null and b/public/terrain/19/858572/354058.terrain differ diff --git a/public/terrain/19/858572/354059.terrain b/public/terrain/19/858572/354059.terrain new file mode 100644 index 000000000..d8a1dfe09 Binary files /dev/null and b/public/terrain/19/858572/354059.terrain differ diff --git a/public/terrain/19/858573/353743.terrain b/public/terrain/19/858573/353743.terrain new file mode 100644 index 000000000..87691d0ab Binary files /dev/null and b/public/terrain/19/858573/353743.terrain differ diff --git a/public/terrain/19/858573/353744.terrain b/public/terrain/19/858573/353744.terrain new file mode 100644 index 000000000..f7c5c09b2 Binary files /dev/null and b/public/terrain/19/858573/353744.terrain differ diff --git a/public/terrain/19/858573/353745.terrain b/public/terrain/19/858573/353745.terrain new file mode 100644 index 000000000..7e0b4d8c6 Binary files /dev/null and b/public/terrain/19/858573/353745.terrain differ diff --git a/public/terrain/19/858573/353746.terrain b/public/terrain/19/858573/353746.terrain new file mode 100644 index 000000000..d5bd38d7e Binary files /dev/null and b/public/terrain/19/858573/353746.terrain differ diff --git a/public/terrain/19/858573/353747.terrain b/public/terrain/19/858573/353747.terrain new file mode 100644 index 000000000..5d2248c5b Binary files /dev/null and b/public/terrain/19/858573/353747.terrain differ diff --git a/public/terrain/19/858573/353748.terrain b/public/terrain/19/858573/353748.terrain new file mode 100644 index 000000000..4c445c86b Binary files /dev/null and b/public/terrain/19/858573/353748.terrain differ diff --git a/public/terrain/19/858573/353749.terrain b/public/terrain/19/858573/353749.terrain new file mode 100644 index 000000000..3853e4edd Binary files /dev/null and b/public/terrain/19/858573/353749.terrain differ diff --git a/public/terrain/19/858573/353750.terrain b/public/terrain/19/858573/353750.terrain new file mode 100644 index 000000000..eaeb4fb62 Binary files /dev/null and b/public/terrain/19/858573/353750.terrain differ diff --git a/public/terrain/19/858573/353751.terrain b/public/terrain/19/858573/353751.terrain new file mode 100644 index 000000000..acfa7b1f1 Binary files /dev/null and b/public/terrain/19/858573/353751.terrain differ diff --git a/public/terrain/19/858573/353752.terrain b/public/terrain/19/858573/353752.terrain new file mode 100644 index 000000000..aa7d6d012 Binary files /dev/null and b/public/terrain/19/858573/353752.terrain differ diff --git a/public/terrain/19/858573/353753.terrain b/public/terrain/19/858573/353753.terrain new file mode 100644 index 000000000..4522250d9 Binary files /dev/null and b/public/terrain/19/858573/353753.terrain differ diff --git a/public/terrain/19/858573/353754.terrain b/public/terrain/19/858573/353754.terrain new file mode 100644 index 000000000..f385a724a Binary files /dev/null and b/public/terrain/19/858573/353754.terrain differ diff --git a/public/terrain/19/858573/353755.terrain b/public/terrain/19/858573/353755.terrain new file mode 100644 index 000000000..6d237453e Binary files /dev/null and b/public/terrain/19/858573/353755.terrain differ diff --git a/public/terrain/19/858573/353756.terrain b/public/terrain/19/858573/353756.terrain new file mode 100644 index 000000000..2a0ef83cb Binary files /dev/null and b/public/terrain/19/858573/353756.terrain differ diff --git a/public/terrain/19/858573/353757.terrain b/public/terrain/19/858573/353757.terrain new file mode 100644 index 000000000..be980a6c9 Binary files /dev/null and b/public/terrain/19/858573/353757.terrain differ diff --git a/public/terrain/19/858573/353758.terrain b/public/terrain/19/858573/353758.terrain new file mode 100644 index 000000000..2f91ea46f Binary files /dev/null and b/public/terrain/19/858573/353758.terrain differ diff --git a/public/terrain/19/858573/353759.terrain b/public/terrain/19/858573/353759.terrain new file mode 100644 index 000000000..d7f9f9101 Binary files /dev/null and b/public/terrain/19/858573/353759.terrain differ diff --git a/public/terrain/19/858573/353760.terrain b/public/terrain/19/858573/353760.terrain new file mode 100644 index 000000000..534dcbc90 Binary files /dev/null and b/public/terrain/19/858573/353760.terrain differ diff --git a/public/terrain/19/858573/353761.terrain b/public/terrain/19/858573/353761.terrain new file mode 100644 index 000000000..f470f6e6b Binary files /dev/null and b/public/terrain/19/858573/353761.terrain differ diff --git a/public/terrain/19/858573/353762.terrain b/public/terrain/19/858573/353762.terrain new file mode 100644 index 000000000..77f787544 Binary files /dev/null and b/public/terrain/19/858573/353762.terrain differ diff --git a/public/terrain/19/858573/353763.terrain b/public/terrain/19/858573/353763.terrain new file mode 100644 index 000000000..dfbb5ed93 Binary files /dev/null and b/public/terrain/19/858573/353763.terrain differ diff --git a/public/terrain/19/858573/353764.terrain b/public/terrain/19/858573/353764.terrain new file mode 100644 index 000000000..e91697f79 Binary files /dev/null and b/public/terrain/19/858573/353764.terrain differ diff --git a/public/terrain/19/858573/353765.terrain b/public/terrain/19/858573/353765.terrain new file mode 100644 index 000000000..41fd69ebf Binary files /dev/null and b/public/terrain/19/858573/353765.terrain differ diff --git a/public/terrain/19/858573/353766.terrain b/public/terrain/19/858573/353766.terrain new file mode 100644 index 000000000..a678d0659 Binary files /dev/null and b/public/terrain/19/858573/353766.terrain differ diff --git a/public/terrain/19/858573/353767.terrain b/public/terrain/19/858573/353767.terrain new file mode 100644 index 000000000..2f90de42a Binary files /dev/null and b/public/terrain/19/858573/353767.terrain differ diff --git a/public/terrain/19/858573/353768.terrain b/public/terrain/19/858573/353768.terrain new file mode 100644 index 000000000..015ac47be Binary files /dev/null and b/public/terrain/19/858573/353768.terrain differ diff --git a/public/terrain/19/858573/353769.terrain b/public/terrain/19/858573/353769.terrain new file mode 100644 index 000000000..a79867359 Binary files /dev/null and b/public/terrain/19/858573/353769.terrain differ diff --git a/public/terrain/19/858573/353770.terrain b/public/terrain/19/858573/353770.terrain new file mode 100644 index 000000000..9f77cdad5 Binary files /dev/null and b/public/terrain/19/858573/353770.terrain differ diff --git a/public/terrain/19/858573/353771.terrain b/public/terrain/19/858573/353771.terrain new file mode 100644 index 000000000..f829c7340 Binary files /dev/null and b/public/terrain/19/858573/353771.terrain differ diff --git a/public/terrain/19/858573/353772.terrain b/public/terrain/19/858573/353772.terrain new file mode 100644 index 000000000..ca3592567 Binary files /dev/null and b/public/terrain/19/858573/353772.terrain differ diff --git a/public/terrain/19/858573/353773.terrain b/public/terrain/19/858573/353773.terrain new file mode 100644 index 000000000..e791f46d7 Binary files /dev/null and b/public/terrain/19/858573/353773.terrain differ diff --git a/public/terrain/19/858573/353774.terrain b/public/terrain/19/858573/353774.terrain new file mode 100644 index 000000000..d6b3336df Binary files /dev/null and b/public/terrain/19/858573/353774.terrain differ diff --git a/public/terrain/19/858573/353775.terrain b/public/terrain/19/858573/353775.terrain new file mode 100644 index 000000000..9645ee657 Binary files /dev/null and b/public/terrain/19/858573/353775.terrain differ diff --git a/public/terrain/19/858573/353776.terrain b/public/terrain/19/858573/353776.terrain new file mode 100644 index 000000000..6c6f217f8 Binary files /dev/null and b/public/terrain/19/858573/353776.terrain differ diff --git a/public/terrain/19/858573/353777.terrain b/public/terrain/19/858573/353777.terrain new file mode 100644 index 000000000..cdac885f7 Binary files /dev/null and b/public/terrain/19/858573/353777.terrain differ diff --git a/public/terrain/19/858573/353778.terrain b/public/terrain/19/858573/353778.terrain new file mode 100644 index 000000000..9be8aebba Binary files /dev/null and b/public/terrain/19/858573/353778.terrain differ diff --git a/public/terrain/19/858573/353779.terrain b/public/terrain/19/858573/353779.terrain new file mode 100644 index 000000000..0baa9e3c5 Binary files /dev/null and b/public/terrain/19/858573/353779.terrain differ diff --git a/public/terrain/19/858573/353780.terrain b/public/terrain/19/858573/353780.terrain new file mode 100644 index 000000000..e506b5615 Binary files /dev/null and b/public/terrain/19/858573/353780.terrain differ diff --git a/public/terrain/19/858573/353781.terrain b/public/terrain/19/858573/353781.terrain new file mode 100644 index 000000000..4654532b9 Binary files /dev/null and b/public/terrain/19/858573/353781.terrain differ diff --git a/public/terrain/19/858573/353782.terrain b/public/terrain/19/858573/353782.terrain new file mode 100644 index 000000000..dc90de8de Binary files /dev/null and b/public/terrain/19/858573/353782.terrain differ diff --git a/public/terrain/19/858573/353783.terrain b/public/terrain/19/858573/353783.terrain new file mode 100644 index 000000000..15c388574 Binary files /dev/null and b/public/terrain/19/858573/353783.terrain differ diff --git a/public/terrain/19/858573/353784.terrain b/public/terrain/19/858573/353784.terrain new file mode 100644 index 000000000..509eeec27 Binary files /dev/null and b/public/terrain/19/858573/353784.terrain differ diff --git a/public/terrain/19/858573/353785.terrain b/public/terrain/19/858573/353785.terrain new file mode 100644 index 000000000..cc5303135 Binary files /dev/null and b/public/terrain/19/858573/353785.terrain differ diff --git a/public/terrain/19/858573/353786.terrain b/public/terrain/19/858573/353786.terrain new file mode 100644 index 000000000..4fe51deaf Binary files /dev/null and b/public/terrain/19/858573/353786.terrain differ diff --git a/public/terrain/19/858573/353787.terrain b/public/terrain/19/858573/353787.terrain new file mode 100644 index 000000000..9dabd99f0 Binary files /dev/null and b/public/terrain/19/858573/353787.terrain differ diff --git a/public/terrain/19/858573/353788.terrain b/public/terrain/19/858573/353788.terrain new file mode 100644 index 000000000..5158afb50 Binary files /dev/null and b/public/terrain/19/858573/353788.terrain differ diff --git a/public/terrain/19/858573/353789.terrain b/public/terrain/19/858573/353789.terrain new file mode 100644 index 000000000..d2a86a961 Binary files /dev/null and b/public/terrain/19/858573/353789.terrain differ diff --git a/public/terrain/19/858573/353790.terrain b/public/terrain/19/858573/353790.terrain new file mode 100644 index 000000000..f7bc57164 Binary files /dev/null and b/public/terrain/19/858573/353790.terrain differ diff --git a/public/terrain/19/858573/353791.terrain b/public/terrain/19/858573/353791.terrain new file mode 100644 index 000000000..f42227532 Binary files /dev/null and b/public/terrain/19/858573/353791.terrain differ diff --git a/public/terrain/19/858573/353792.terrain b/public/terrain/19/858573/353792.terrain new file mode 100644 index 000000000..8b7b8cb18 Binary files /dev/null and b/public/terrain/19/858573/353792.terrain differ diff --git a/public/terrain/19/858573/353793.terrain b/public/terrain/19/858573/353793.terrain new file mode 100644 index 000000000..9ab4ef925 Binary files /dev/null and b/public/terrain/19/858573/353793.terrain differ diff --git a/public/terrain/19/858573/353794.terrain b/public/terrain/19/858573/353794.terrain new file mode 100644 index 000000000..f0870bf86 Binary files /dev/null and b/public/terrain/19/858573/353794.terrain differ diff --git a/public/terrain/19/858573/353795.terrain b/public/terrain/19/858573/353795.terrain new file mode 100644 index 000000000..96a739968 Binary files /dev/null and b/public/terrain/19/858573/353795.terrain differ diff --git a/public/terrain/19/858573/353796.terrain b/public/terrain/19/858573/353796.terrain new file mode 100644 index 000000000..b747032f2 Binary files /dev/null and b/public/terrain/19/858573/353796.terrain differ diff --git a/public/terrain/19/858573/353797.terrain b/public/terrain/19/858573/353797.terrain new file mode 100644 index 000000000..91f199ad1 Binary files /dev/null and b/public/terrain/19/858573/353797.terrain differ diff --git a/public/terrain/19/858573/353798.terrain b/public/terrain/19/858573/353798.terrain new file mode 100644 index 000000000..ea06b904b Binary files /dev/null and b/public/terrain/19/858573/353798.terrain differ diff --git a/public/terrain/19/858573/353799.terrain b/public/terrain/19/858573/353799.terrain new file mode 100644 index 000000000..fbe328e5b Binary files /dev/null and b/public/terrain/19/858573/353799.terrain differ diff --git a/public/terrain/19/858573/353800.terrain b/public/terrain/19/858573/353800.terrain new file mode 100644 index 000000000..bab5cd633 Binary files /dev/null and b/public/terrain/19/858573/353800.terrain differ diff --git a/public/terrain/19/858573/353801.terrain b/public/terrain/19/858573/353801.terrain new file mode 100644 index 000000000..d581c84c9 Binary files /dev/null and b/public/terrain/19/858573/353801.terrain differ diff --git a/public/terrain/19/858573/353802.terrain b/public/terrain/19/858573/353802.terrain new file mode 100644 index 000000000..29088df84 Binary files /dev/null and b/public/terrain/19/858573/353802.terrain differ diff --git a/public/terrain/19/858573/353803.terrain b/public/terrain/19/858573/353803.terrain new file mode 100644 index 000000000..334896dec Binary files /dev/null and b/public/terrain/19/858573/353803.terrain differ diff --git a/public/terrain/19/858573/353804.terrain b/public/terrain/19/858573/353804.terrain new file mode 100644 index 000000000..9038f98b2 Binary files /dev/null and b/public/terrain/19/858573/353804.terrain differ diff --git a/public/terrain/19/858573/353805.terrain b/public/terrain/19/858573/353805.terrain new file mode 100644 index 000000000..a05bee8a9 Binary files /dev/null and b/public/terrain/19/858573/353805.terrain differ diff --git a/public/terrain/19/858573/353806.terrain b/public/terrain/19/858573/353806.terrain new file mode 100644 index 000000000..1e8d6a56f Binary files /dev/null and b/public/terrain/19/858573/353806.terrain differ diff --git a/public/terrain/19/858573/353807.terrain b/public/terrain/19/858573/353807.terrain new file mode 100644 index 000000000..52e72997f Binary files /dev/null and b/public/terrain/19/858573/353807.terrain differ diff --git a/public/terrain/19/858573/353808.terrain b/public/terrain/19/858573/353808.terrain new file mode 100644 index 000000000..e371365ed Binary files /dev/null and b/public/terrain/19/858573/353808.terrain differ diff --git a/public/terrain/19/858573/353809.terrain b/public/terrain/19/858573/353809.terrain new file mode 100644 index 000000000..45009e87e Binary files /dev/null and b/public/terrain/19/858573/353809.terrain differ diff --git a/public/terrain/19/858573/353810.terrain b/public/terrain/19/858573/353810.terrain new file mode 100644 index 000000000..5ee101887 Binary files /dev/null and b/public/terrain/19/858573/353810.terrain differ diff --git a/public/terrain/19/858573/353811.terrain b/public/terrain/19/858573/353811.terrain new file mode 100644 index 000000000..50f9f8ebc Binary files /dev/null and b/public/terrain/19/858573/353811.terrain differ diff --git a/public/terrain/19/858573/353812.terrain b/public/terrain/19/858573/353812.terrain new file mode 100644 index 000000000..704de8455 Binary files /dev/null and b/public/terrain/19/858573/353812.terrain differ diff --git a/public/terrain/19/858573/353813.terrain b/public/terrain/19/858573/353813.terrain new file mode 100644 index 000000000..5d5ea962a Binary files /dev/null and b/public/terrain/19/858573/353813.terrain differ diff --git a/public/terrain/19/858573/353814.terrain b/public/terrain/19/858573/353814.terrain new file mode 100644 index 000000000..388446abb Binary files /dev/null and b/public/terrain/19/858573/353814.terrain differ diff --git a/public/terrain/19/858573/353815.terrain b/public/terrain/19/858573/353815.terrain new file mode 100644 index 000000000..52e13db0b Binary files /dev/null and b/public/terrain/19/858573/353815.terrain differ diff --git a/public/terrain/19/858573/353816.terrain b/public/terrain/19/858573/353816.terrain new file mode 100644 index 000000000..c004808f8 Binary files /dev/null and b/public/terrain/19/858573/353816.terrain differ diff --git a/public/terrain/19/858573/353817.terrain b/public/terrain/19/858573/353817.terrain new file mode 100644 index 000000000..60bb5b132 Binary files /dev/null and b/public/terrain/19/858573/353817.terrain differ diff --git a/public/terrain/19/858573/353818.terrain b/public/terrain/19/858573/353818.terrain new file mode 100644 index 000000000..a0caad0d4 Binary files /dev/null and b/public/terrain/19/858573/353818.terrain differ diff --git a/public/terrain/19/858573/353819.terrain b/public/terrain/19/858573/353819.terrain new file mode 100644 index 000000000..16267aa1a Binary files /dev/null and b/public/terrain/19/858573/353819.terrain differ diff --git a/public/terrain/19/858573/353820.terrain b/public/terrain/19/858573/353820.terrain new file mode 100644 index 000000000..2c701300f Binary files /dev/null and b/public/terrain/19/858573/353820.terrain differ diff --git a/public/terrain/19/858573/353821.terrain b/public/terrain/19/858573/353821.terrain new file mode 100644 index 000000000..ae8c1c5bd Binary files /dev/null and b/public/terrain/19/858573/353821.terrain differ diff --git a/public/terrain/19/858573/353822.terrain b/public/terrain/19/858573/353822.terrain new file mode 100644 index 000000000..42428d03b Binary files /dev/null and b/public/terrain/19/858573/353822.terrain differ diff --git a/public/terrain/19/858573/353823.terrain b/public/terrain/19/858573/353823.terrain new file mode 100644 index 000000000..9b8c3a370 Binary files /dev/null and b/public/terrain/19/858573/353823.terrain differ diff --git a/public/terrain/19/858573/353824.terrain b/public/terrain/19/858573/353824.terrain new file mode 100644 index 000000000..31a64881c Binary files /dev/null and b/public/terrain/19/858573/353824.terrain differ diff --git a/public/terrain/19/858573/353825.terrain b/public/terrain/19/858573/353825.terrain new file mode 100644 index 000000000..9c108b33a Binary files /dev/null and b/public/terrain/19/858573/353825.terrain differ diff --git a/public/terrain/19/858573/353826.terrain b/public/terrain/19/858573/353826.terrain new file mode 100644 index 000000000..6e88d9b25 Binary files /dev/null and b/public/terrain/19/858573/353826.terrain differ diff --git a/public/terrain/19/858573/353827.terrain b/public/terrain/19/858573/353827.terrain new file mode 100644 index 000000000..eaabaeb0c Binary files /dev/null and b/public/terrain/19/858573/353827.terrain differ diff --git a/public/terrain/19/858573/353828.terrain b/public/terrain/19/858573/353828.terrain new file mode 100644 index 000000000..dcc200cca Binary files /dev/null and b/public/terrain/19/858573/353828.terrain differ diff --git a/public/terrain/19/858573/353829.terrain b/public/terrain/19/858573/353829.terrain new file mode 100644 index 000000000..e54db3ec0 Binary files /dev/null and b/public/terrain/19/858573/353829.terrain differ diff --git a/public/terrain/19/858573/353830.terrain b/public/terrain/19/858573/353830.terrain new file mode 100644 index 000000000..5aac445a1 Binary files /dev/null and b/public/terrain/19/858573/353830.terrain differ diff --git a/public/terrain/19/858573/353831.terrain b/public/terrain/19/858573/353831.terrain new file mode 100644 index 000000000..1e8459af6 Binary files /dev/null and b/public/terrain/19/858573/353831.terrain differ diff --git a/public/terrain/19/858573/353832.terrain b/public/terrain/19/858573/353832.terrain new file mode 100644 index 000000000..4f42132b8 Binary files /dev/null and b/public/terrain/19/858573/353832.terrain differ diff --git a/public/terrain/19/858573/353833.terrain b/public/terrain/19/858573/353833.terrain new file mode 100644 index 000000000..5ccccc14d Binary files /dev/null and b/public/terrain/19/858573/353833.terrain differ diff --git a/public/terrain/19/858573/353834.terrain b/public/terrain/19/858573/353834.terrain new file mode 100644 index 000000000..a3285561c Binary files /dev/null and b/public/terrain/19/858573/353834.terrain differ diff --git a/public/terrain/19/858573/353835.terrain b/public/terrain/19/858573/353835.terrain new file mode 100644 index 000000000..55c562d80 Binary files /dev/null and b/public/terrain/19/858573/353835.terrain differ diff --git a/public/terrain/19/858573/353836.terrain b/public/terrain/19/858573/353836.terrain new file mode 100644 index 000000000..62983166e Binary files /dev/null and b/public/terrain/19/858573/353836.terrain differ diff --git a/public/terrain/19/858573/353837.terrain b/public/terrain/19/858573/353837.terrain new file mode 100644 index 000000000..c55f8e5a1 Binary files /dev/null and b/public/terrain/19/858573/353837.terrain differ diff --git a/public/terrain/19/858573/353838.terrain b/public/terrain/19/858573/353838.terrain new file mode 100644 index 000000000..ffb513e5e Binary files /dev/null and b/public/terrain/19/858573/353838.terrain differ diff --git a/public/terrain/19/858573/353839.terrain b/public/terrain/19/858573/353839.terrain new file mode 100644 index 000000000..6e2a1e3e1 Binary files /dev/null and b/public/terrain/19/858573/353839.terrain differ diff --git a/public/terrain/19/858573/353840.terrain b/public/terrain/19/858573/353840.terrain new file mode 100644 index 000000000..da42fda43 Binary files /dev/null and b/public/terrain/19/858573/353840.terrain differ diff --git a/public/terrain/19/858573/353841.terrain b/public/terrain/19/858573/353841.terrain new file mode 100644 index 000000000..1ffc544ff Binary files /dev/null and b/public/terrain/19/858573/353841.terrain differ diff --git a/public/terrain/19/858573/353842.terrain b/public/terrain/19/858573/353842.terrain new file mode 100644 index 000000000..99e6f6cc0 Binary files /dev/null and b/public/terrain/19/858573/353842.terrain differ diff --git a/public/terrain/19/858573/353843.terrain b/public/terrain/19/858573/353843.terrain new file mode 100644 index 000000000..0b068f032 Binary files /dev/null and b/public/terrain/19/858573/353843.terrain differ diff --git a/public/terrain/19/858573/353844.terrain b/public/terrain/19/858573/353844.terrain new file mode 100644 index 000000000..ae41676d6 Binary files /dev/null and b/public/terrain/19/858573/353844.terrain differ diff --git a/public/terrain/19/858573/353845.terrain b/public/terrain/19/858573/353845.terrain new file mode 100644 index 000000000..8b05eb6f4 Binary files /dev/null and b/public/terrain/19/858573/353845.terrain differ diff --git a/public/terrain/19/858573/353846.terrain b/public/terrain/19/858573/353846.terrain new file mode 100644 index 000000000..f64d42e79 Binary files /dev/null and b/public/terrain/19/858573/353846.terrain differ diff --git a/public/terrain/19/858573/353847.terrain b/public/terrain/19/858573/353847.terrain new file mode 100644 index 000000000..334740e7b Binary files /dev/null and b/public/terrain/19/858573/353847.terrain differ diff --git a/public/terrain/19/858573/353848.terrain b/public/terrain/19/858573/353848.terrain new file mode 100644 index 000000000..72039f77a Binary files /dev/null and b/public/terrain/19/858573/353848.terrain differ diff --git a/public/terrain/19/858573/353849.terrain b/public/terrain/19/858573/353849.terrain new file mode 100644 index 000000000..36898f0c9 Binary files /dev/null and b/public/terrain/19/858573/353849.terrain differ diff --git a/public/terrain/19/858573/353850.terrain b/public/terrain/19/858573/353850.terrain new file mode 100644 index 000000000..0ee1e89e9 Binary files /dev/null and b/public/terrain/19/858573/353850.terrain differ diff --git a/public/terrain/19/858573/353851.terrain b/public/terrain/19/858573/353851.terrain new file mode 100644 index 000000000..ec975fbca Binary files /dev/null and b/public/terrain/19/858573/353851.terrain differ diff --git a/public/terrain/19/858573/353852.terrain b/public/terrain/19/858573/353852.terrain new file mode 100644 index 000000000..43ac81c62 Binary files /dev/null and b/public/terrain/19/858573/353852.terrain differ diff --git a/public/terrain/19/858573/353853.terrain b/public/terrain/19/858573/353853.terrain new file mode 100644 index 000000000..f81bf11d8 Binary files /dev/null and b/public/terrain/19/858573/353853.terrain differ diff --git a/public/terrain/19/858573/353854.terrain b/public/terrain/19/858573/353854.terrain new file mode 100644 index 000000000..ce6e8c02d Binary files /dev/null and b/public/terrain/19/858573/353854.terrain differ diff --git a/public/terrain/19/858573/353855.terrain b/public/terrain/19/858573/353855.terrain new file mode 100644 index 000000000..cbea9fa5a Binary files /dev/null and b/public/terrain/19/858573/353855.terrain differ diff --git a/public/terrain/19/858573/353856.terrain b/public/terrain/19/858573/353856.terrain new file mode 100644 index 000000000..4501c0fb4 Binary files /dev/null and b/public/terrain/19/858573/353856.terrain differ diff --git a/public/terrain/19/858573/353857.terrain b/public/terrain/19/858573/353857.terrain new file mode 100644 index 000000000..ff87a32f9 Binary files /dev/null and b/public/terrain/19/858573/353857.terrain differ diff --git a/public/terrain/19/858573/353858.terrain b/public/terrain/19/858573/353858.terrain new file mode 100644 index 000000000..3fa570755 Binary files /dev/null and b/public/terrain/19/858573/353858.terrain differ diff --git a/public/terrain/19/858573/353859.terrain b/public/terrain/19/858573/353859.terrain new file mode 100644 index 000000000..2c14b6312 Binary files /dev/null and b/public/terrain/19/858573/353859.terrain differ diff --git a/public/terrain/19/858573/353860.terrain b/public/terrain/19/858573/353860.terrain new file mode 100644 index 000000000..34d84b6f5 Binary files /dev/null and b/public/terrain/19/858573/353860.terrain differ diff --git a/public/terrain/19/858573/353861.terrain b/public/terrain/19/858573/353861.terrain new file mode 100644 index 000000000..ace853f86 Binary files /dev/null and b/public/terrain/19/858573/353861.terrain differ diff --git a/public/terrain/19/858573/353862.terrain b/public/terrain/19/858573/353862.terrain new file mode 100644 index 000000000..f28106892 Binary files /dev/null and b/public/terrain/19/858573/353862.terrain differ diff --git a/public/terrain/19/858573/353863.terrain b/public/terrain/19/858573/353863.terrain new file mode 100644 index 000000000..8abe75b7d Binary files /dev/null and b/public/terrain/19/858573/353863.terrain differ diff --git a/public/terrain/19/858573/353864.terrain b/public/terrain/19/858573/353864.terrain new file mode 100644 index 000000000..c03fb255b Binary files /dev/null and b/public/terrain/19/858573/353864.terrain differ diff --git a/public/terrain/19/858573/353865.terrain b/public/terrain/19/858573/353865.terrain new file mode 100644 index 000000000..1d6061732 Binary files /dev/null and b/public/terrain/19/858573/353865.terrain differ diff --git a/public/terrain/19/858573/353866.terrain b/public/terrain/19/858573/353866.terrain new file mode 100644 index 000000000..7f1e7a91f Binary files /dev/null and b/public/terrain/19/858573/353866.terrain differ diff --git a/public/terrain/19/858573/353867.terrain b/public/terrain/19/858573/353867.terrain new file mode 100644 index 000000000..b0bd92e4d Binary files /dev/null and b/public/terrain/19/858573/353867.terrain differ diff --git a/public/terrain/19/858573/353868.terrain b/public/terrain/19/858573/353868.terrain new file mode 100644 index 000000000..d3af57bc8 Binary files /dev/null and b/public/terrain/19/858573/353868.terrain differ diff --git a/public/terrain/19/858573/353869.terrain b/public/terrain/19/858573/353869.terrain new file mode 100644 index 000000000..3f2ecd7bc Binary files /dev/null and b/public/terrain/19/858573/353869.terrain differ diff --git a/public/terrain/19/858573/353870.terrain b/public/terrain/19/858573/353870.terrain new file mode 100644 index 000000000..b5517e8cd Binary files /dev/null and b/public/terrain/19/858573/353870.terrain differ diff --git a/public/terrain/19/858573/353871.terrain b/public/terrain/19/858573/353871.terrain new file mode 100644 index 000000000..012e20171 Binary files /dev/null and b/public/terrain/19/858573/353871.terrain differ diff --git a/public/terrain/19/858573/353872.terrain b/public/terrain/19/858573/353872.terrain new file mode 100644 index 000000000..3855f9cb7 Binary files /dev/null and b/public/terrain/19/858573/353872.terrain differ diff --git a/public/terrain/19/858573/353873.terrain b/public/terrain/19/858573/353873.terrain new file mode 100644 index 000000000..cd9f66cdd Binary files /dev/null and b/public/terrain/19/858573/353873.terrain differ diff --git a/public/terrain/19/858573/353874.terrain b/public/terrain/19/858573/353874.terrain new file mode 100644 index 000000000..24230a8cc Binary files /dev/null and b/public/terrain/19/858573/353874.terrain differ diff --git a/public/terrain/19/858573/353875.terrain b/public/terrain/19/858573/353875.terrain new file mode 100644 index 000000000..13dfc3217 Binary files /dev/null and b/public/terrain/19/858573/353875.terrain differ diff --git a/public/terrain/19/858573/353876.terrain b/public/terrain/19/858573/353876.terrain new file mode 100644 index 000000000..330ab9fbe Binary files /dev/null and b/public/terrain/19/858573/353876.terrain differ diff --git a/public/terrain/19/858573/353877.terrain b/public/terrain/19/858573/353877.terrain new file mode 100644 index 000000000..0f41912df Binary files /dev/null and b/public/terrain/19/858573/353877.terrain differ diff --git a/public/terrain/19/858573/353878.terrain b/public/terrain/19/858573/353878.terrain new file mode 100644 index 000000000..7dbd4da78 Binary files /dev/null and b/public/terrain/19/858573/353878.terrain differ diff --git a/public/terrain/19/858573/353879.terrain b/public/terrain/19/858573/353879.terrain new file mode 100644 index 000000000..bb9654cf8 Binary files /dev/null and b/public/terrain/19/858573/353879.terrain differ diff --git a/public/terrain/19/858573/353880.terrain b/public/terrain/19/858573/353880.terrain new file mode 100644 index 000000000..1b189d832 Binary files /dev/null and b/public/terrain/19/858573/353880.terrain differ diff --git a/public/terrain/19/858573/353881.terrain b/public/terrain/19/858573/353881.terrain new file mode 100644 index 000000000..620de13ed Binary files /dev/null and b/public/terrain/19/858573/353881.terrain differ diff --git a/public/terrain/19/858573/353882.terrain b/public/terrain/19/858573/353882.terrain new file mode 100644 index 000000000..94255ae56 Binary files /dev/null and b/public/terrain/19/858573/353882.terrain differ diff --git a/public/terrain/19/858573/353883.terrain b/public/terrain/19/858573/353883.terrain new file mode 100644 index 000000000..ef35bd66f Binary files /dev/null and b/public/terrain/19/858573/353883.terrain differ diff --git a/public/terrain/19/858573/353884.terrain b/public/terrain/19/858573/353884.terrain new file mode 100644 index 000000000..33f7d93c5 Binary files /dev/null and b/public/terrain/19/858573/353884.terrain differ diff --git a/public/terrain/19/858573/353885.terrain b/public/terrain/19/858573/353885.terrain new file mode 100644 index 000000000..060367ea9 Binary files /dev/null and b/public/terrain/19/858573/353885.terrain differ diff --git a/public/terrain/19/858573/353886.terrain b/public/terrain/19/858573/353886.terrain new file mode 100644 index 000000000..063e953fa Binary files /dev/null and b/public/terrain/19/858573/353886.terrain differ diff --git a/public/terrain/19/858573/353887.terrain b/public/terrain/19/858573/353887.terrain new file mode 100644 index 000000000..bf8d50fd9 Binary files /dev/null and b/public/terrain/19/858573/353887.terrain differ diff --git a/public/terrain/19/858573/353888.terrain b/public/terrain/19/858573/353888.terrain new file mode 100644 index 000000000..6f0aa1dd9 Binary files /dev/null and b/public/terrain/19/858573/353888.terrain differ diff --git a/public/terrain/19/858573/353889.terrain b/public/terrain/19/858573/353889.terrain new file mode 100644 index 000000000..31bb7c8dc Binary files /dev/null and b/public/terrain/19/858573/353889.terrain differ diff --git a/public/terrain/19/858573/353890.terrain b/public/terrain/19/858573/353890.terrain new file mode 100644 index 000000000..01100bc03 Binary files /dev/null and b/public/terrain/19/858573/353890.terrain differ diff --git a/public/terrain/19/858573/353891.terrain b/public/terrain/19/858573/353891.terrain new file mode 100644 index 000000000..07eacdc5a Binary files /dev/null and b/public/terrain/19/858573/353891.terrain differ diff --git a/public/terrain/19/858573/353892.terrain b/public/terrain/19/858573/353892.terrain new file mode 100644 index 000000000..6d0cd5699 Binary files /dev/null and b/public/terrain/19/858573/353892.terrain differ diff --git a/public/terrain/19/858573/353893.terrain b/public/terrain/19/858573/353893.terrain new file mode 100644 index 000000000..6eedb3b59 Binary files /dev/null and b/public/terrain/19/858573/353893.terrain differ diff --git a/public/terrain/19/858573/353894.terrain b/public/terrain/19/858573/353894.terrain new file mode 100644 index 000000000..fd2e17c48 Binary files /dev/null and b/public/terrain/19/858573/353894.terrain differ diff --git a/public/terrain/19/858573/353895.terrain b/public/terrain/19/858573/353895.terrain new file mode 100644 index 000000000..0e2987d03 Binary files /dev/null and b/public/terrain/19/858573/353895.terrain differ diff --git a/public/terrain/19/858573/353896.terrain b/public/terrain/19/858573/353896.terrain new file mode 100644 index 000000000..6c201632e Binary files /dev/null and b/public/terrain/19/858573/353896.terrain differ diff --git a/public/terrain/19/858573/353897.terrain b/public/terrain/19/858573/353897.terrain new file mode 100644 index 000000000..d51b8972b Binary files /dev/null and b/public/terrain/19/858573/353897.terrain differ diff --git a/public/terrain/19/858573/353898.terrain b/public/terrain/19/858573/353898.terrain new file mode 100644 index 000000000..26328db5e Binary files /dev/null and b/public/terrain/19/858573/353898.terrain differ diff --git a/public/terrain/19/858573/353899.terrain b/public/terrain/19/858573/353899.terrain new file mode 100644 index 000000000..374d1f4e1 Binary files /dev/null and b/public/terrain/19/858573/353899.terrain differ diff --git a/public/terrain/19/858573/353900.terrain b/public/terrain/19/858573/353900.terrain new file mode 100644 index 000000000..d10390bec Binary files /dev/null and b/public/terrain/19/858573/353900.terrain differ diff --git a/public/terrain/19/858573/353901.terrain b/public/terrain/19/858573/353901.terrain new file mode 100644 index 000000000..2745f5a2a Binary files /dev/null and b/public/terrain/19/858573/353901.terrain differ diff --git a/public/terrain/19/858573/353902.terrain b/public/terrain/19/858573/353902.terrain new file mode 100644 index 000000000..48528b226 Binary files /dev/null and b/public/terrain/19/858573/353902.terrain differ diff --git a/public/terrain/19/858573/353903.terrain b/public/terrain/19/858573/353903.terrain new file mode 100644 index 000000000..1a23bd2fa Binary files /dev/null and b/public/terrain/19/858573/353903.terrain differ diff --git a/public/terrain/19/858573/353904.terrain b/public/terrain/19/858573/353904.terrain new file mode 100644 index 000000000..4ba61591d Binary files /dev/null and b/public/terrain/19/858573/353904.terrain differ diff --git a/public/terrain/19/858573/353905.terrain b/public/terrain/19/858573/353905.terrain new file mode 100644 index 000000000..b5b113303 Binary files /dev/null and b/public/terrain/19/858573/353905.terrain differ diff --git a/public/terrain/19/858573/353906.terrain b/public/terrain/19/858573/353906.terrain new file mode 100644 index 000000000..aa31745fb Binary files /dev/null and b/public/terrain/19/858573/353906.terrain differ diff --git a/public/terrain/19/858573/353907.terrain b/public/terrain/19/858573/353907.terrain new file mode 100644 index 000000000..8b83a8da3 Binary files /dev/null and b/public/terrain/19/858573/353907.terrain differ diff --git a/public/terrain/19/858573/353908.terrain b/public/terrain/19/858573/353908.terrain new file mode 100644 index 000000000..0cbf45ceb Binary files /dev/null and b/public/terrain/19/858573/353908.terrain differ diff --git a/public/terrain/19/858573/353909.terrain b/public/terrain/19/858573/353909.terrain new file mode 100644 index 000000000..91db21b6a Binary files /dev/null and b/public/terrain/19/858573/353909.terrain differ diff --git a/public/terrain/19/858573/353910.terrain b/public/terrain/19/858573/353910.terrain new file mode 100644 index 000000000..7af55e8c1 Binary files /dev/null and b/public/terrain/19/858573/353910.terrain differ diff --git a/public/terrain/19/858573/353911.terrain b/public/terrain/19/858573/353911.terrain new file mode 100644 index 000000000..7c77c1ec1 Binary files /dev/null and b/public/terrain/19/858573/353911.terrain differ diff --git a/public/terrain/19/858573/353912.terrain b/public/terrain/19/858573/353912.terrain new file mode 100644 index 000000000..56ab19c8c Binary files /dev/null and b/public/terrain/19/858573/353912.terrain differ diff --git a/public/terrain/19/858573/353913.terrain b/public/terrain/19/858573/353913.terrain new file mode 100644 index 000000000..3941ad6c4 Binary files /dev/null and b/public/terrain/19/858573/353913.terrain differ diff --git a/public/terrain/19/858573/353914.terrain b/public/terrain/19/858573/353914.terrain new file mode 100644 index 000000000..7df0a1e49 Binary files /dev/null and b/public/terrain/19/858573/353914.terrain differ diff --git a/public/terrain/19/858573/353915.terrain b/public/terrain/19/858573/353915.terrain new file mode 100644 index 000000000..2bf740535 Binary files /dev/null and b/public/terrain/19/858573/353915.terrain differ diff --git a/public/terrain/19/858573/353916.terrain b/public/terrain/19/858573/353916.terrain new file mode 100644 index 000000000..667049dce Binary files /dev/null and b/public/terrain/19/858573/353916.terrain differ diff --git a/public/terrain/19/858573/353917.terrain b/public/terrain/19/858573/353917.terrain new file mode 100644 index 000000000..da55999c8 Binary files /dev/null and b/public/terrain/19/858573/353917.terrain differ diff --git a/public/terrain/19/858573/353918.terrain b/public/terrain/19/858573/353918.terrain new file mode 100644 index 000000000..4f2049f49 Binary files /dev/null and b/public/terrain/19/858573/353918.terrain differ diff --git a/public/terrain/19/858573/353919.terrain b/public/terrain/19/858573/353919.terrain new file mode 100644 index 000000000..5899488e4 Binary files /dev/null and b/public/terrain/19/858573/353919.terrain differ diff --git a/public/terrain/19/858573/353920.terrain b/public/terrain/19/858573/353920.terrain new file mode 100644 index 000000000..e08e0f3ec Binary files /dev/null and b/public/terrain/19/858573/353920.terrain differ diff --git a/public/terrain/19/858573/353921.terrain b/public/terrain/19/858573/353921.terrain new file mode 100644 index 000000000..0589a9408 Binary files /dev/null and b/public/terrain/19/858573/353921.terrain differ diff --git a/public/terrain/19/858573/353922.terrain b/public/terrain/19/858573/353922.terrain new file mode 100644 index 000000000..3f2e01f63 Binary files /dev/null and b/public/terrain/19/858573/353922.terrain differ diff --git a/public/terrain/19/858573/353923.terrain b/public/terrain/19/858573/353923.terrain new file mode 100644 index 000000000..3077fb644 Binary files /dev/null and b/public/terrain/19/858573/353923.terrain differ diff --git a/public/terrain/19/858573/353924.terrain b/public/terrain/19/858573/353924.terrain new file mode 100644 index 000000000..a43032392 Binary files /dev/null and b/public/terrain/19/858573/353924.terrain differ diff --git a/public/terrain/19/858573/353925.terrain b/public/terrain/19/858573/353925.terrain new file mode 100644 index 000000000..31b3ba774 Binary files /dev/null and b/public/terrain/19/858573/353925.terrain differ diff --git a/public/terrain/19/858573/353926.terrain b/public/terrain/19/858573/353926.terrain new file mode 100644 index 000000000..927288a04 Binary files /dev/null and b/public/terrain/19/858573/353926.terrain differ diff --git a/public/terrain/19/858573/353927.terrain b/public/terrain/19/858573/353927.terrain new file mode 100644 index 000000000..6713c1838 Binary files /dev/null and b/public/terrain/19/858573/353927.terrain differ diff --git a/public/terrain/19/858573/353928.terrain b/public/terrain/19/858573/353928.terrain new file mode 100644 index 000000000..ebf3af145 Binary files /dev/null and b/public/terrain/19/858573/353928.terrain differ diff --git a/public/terrain/19/858573/353929.terrain b/public/terrain/19/858573/353929.terrain new file mode 100644 index 000000000..624b3794f Binary files /dev/null and b/public/terrain/19/858573/353929.terrain differ diff --git a/public/terrain/19/858573/353930.terrain b/public/terrain/19/858573/353930.terrain new file mode 100644 index 000000000..209541ebb Binary files /dev/null and b/public/terrain/19/858573/353930.terrain differ diff --git a/public/terrain/19/858573/353931.terrain b/public/terrain/19/858573/353931.terrain new file mode 100644 index 000000000..2cb0be9af Binary files /dev/null and b/public/terrain/19/858573/353931.terrain differ diff --git a/public/terrain/19/858573/353932.terrain b/public/terrain/19/858573/353932.terrain new file mode 100644 index 000000000..b7165e247 Binary files /dev/null and b/public/terrain/19/858573/353932.terrain differ diff --git a/public/terrain/19/858573/353933.terrain b/public/terrain/19/858573/353933.terrain new file mode 100644 index 000000000..7bad7dba5 Binary files /dev/null and b/public/terrain/19/858573/353933.terrain differ diff --git a/public/terrain/19/858573/353934.terrain b/public/terrain/19/858573/353934.terrain new file mode 100644 index 000000000..6e7219945 Binary files /dev/null and b/public/terrain/19/858573/353934.terrain differ diff --git a/public/terrain/19/858573/353935.terrain b/public/terrain/19/858573/353935.terrain new file mode 100644 index 000000000..b3dc5b430 Binary files /dev/null and b/public/terrain/19/858573/353935.terrain differ diff --git a/public/terrain/19/858573/353936.terrain b/public/terrain/19/858573/353936.terrain new file mode 100644 index 000000000..b52d24ac7 Binary files /dev/null and b/public/terrain/19/858573/353936.terrain differ diff --git a/public/terrain/19/858573/353937.terrain b/public/terrain/19/858573/353937.terrain new file mode 100644 index 000000000..d9b1dd7a7 Binary files /dev/null and b/public/terrain/19/858573/353937.terrain differ diff --git a/public/terrain/19/858573/353938.terrain b/public/terrain/19/858573/353938.terrain new file mode 100644 index 000000000..68404bcdd Binary files /dev/null and b/public/terrain/19/858573/353938.terrain differ diff --git a/public/terrain/19/858573/353939.terrain b/public/terrain/19/858573/353939.terrain new file mode 100644 index 000000000..89efebf48 Binary files /dev/null and b/public/terrain/19/858573/353939.terrain differ diff --git a/public/terrain/19/858573/353940.terrain b/public/terrain/19/858573/353940.terrain new file mode 100644 index 000000000..2bb72acc3 Binary files /dev/null and b/public/terrain/19/858573/353940.terrain differ diff --git a/public/terrain/19/858573/353941.terrain b/public/terrain/19/858573/353941.terrain new file mode 100644 index 000000000..070786ade Binary files /dev/null and b/public/terrain/19/858573/353941.terrain differ diff --git a/public/terrain/19/858573/353942.terrain b/public/terrain/19/858573/353942.terrain new file mode 100644 index 000000000..1fc8dc982 Binary files /dev/null and b/public/terrain/19/858573/353942.terrain differ diff --git a/public/terrain/19/858573/353943.terrain b/public/terrain/19/858573/353943.terrain new file mode 100644 index 000000000..f39984e10 Binary files /dev/null and b/public/terrain/19/858573/353943.terrain differ diff --git a/public/terrain/19/858573/353944.terrain b/public/terrain/19/858573/353944.terrain new file mode 100644 index 000000000..9c71435f4 Binary files /dev/null and b/public/terrain/19/858573/353944.terrain differ diff --git a/public/terrain/19/858573/353945.terrain b/public/terrain/19/858573/353945.terrain new file mode 100644 index 000000000..f8670d736 Binary files /dev/null and b/public/terrain/19/858573/353945.terrain differ diff --git a/public/terrain/19/858573/353946.terrain b/public/terrain/19/858573/353946.terrain new file mode 100644 index 000000000..be0968be9 Binary files /dev/null and b/public/terrain/19/858573/353946.terrain differ diff --git a/public/terrain/19/858573/353947.terrain b/public/terrain/19/858573/353947.terrain new file mode 100644 index 000000000..c2a2262ed Binary files /dev/null and b/public/terrain/19/858573/353947.terrain differ diff --git a/public/terrain/19/858573/353948.terrain b/public/terrain/19/858573/353948.terrain new file mode 100644 index 000000000..d1b43f797 Binary files /dev/null and b/public/terrain/19/858573/353948.terrain differ diff --git a/public/terrain/19/858573/353949.terrain b/public/terrain/19/858573/353949.terrain new file mode 100644 index 000000000..5ca74ce52 Binary files /dev/null and b/public/terrain/19/858573/353949.terrain differ diff --git a/public/terrain/19/858573/353950.terrain b/public/terrain/19/858573/353950.terrain new file mode 100644 index 000000000..ec28b1e60 Binary files /dev/null and b/public/terrain/19/858573/353950.terrain differ diff --git a/public/terrain/19/858573/353951.terrain b/public/terrain/19/858573/353951.terrain new file mode 100644 index 000000000..4d24cf996 Binary files /dev/null and b/public/terrain/19/858573/353951.terrain differ diff --git a/public/terrain/19/858573/353952.terrain b/public/terrain/19/858573/353952.terrain new file mode 100644 index 000000000..71d2316e1 Binary files /dev/null and b/public/terrain/19/858573/353952.terrain differ diff --git a/public/terrain/19/858573/353953.terrain b/public/terrain/19/858573/353953.terrain new file mode 100644 index 000000000..7b9c9cbad Binary files /dev/null and b/public/terrain/19/858573/353953.terrain differ diff --git a/public/terrain/19/858573/353954.terrain b/public/terrain/19/858573/353954.terrain new file mode 100644 index 000000000..6f80d7939 Binary files /dev/null and b/public/terrain/19/858573/353954.terrain differ diff --git a/public/terrain/19/858573/353955.terrain b/public/terrain/19/858573/353955.terrain new file mode 100644 index 000000000..167fe2afc Binary files /dev/null and b/public/terrain/19/858573/353955.terrain differ diff --git a/public/terrain/19/858573/353956.terrain b/public/terrain/19/858573/353956.terrain new file mode 100644 index 000000000..435f2a75d Binary files /dev/null and b/public/terrain/19/858573/353956.terrain differ diff --git a/public/terrain/19/858573/353957.terrain b/public/terrain/19/858573/353957.terrain new file mode 100644 index 000000000..12115218b Binary files /dev/null and b/public/terrain/19/858573/353957.terrain differ diff --git a/public/terrain/19/858573/353958.terrain b/public/terrain/19/858573/353958.terrain new file mode 100644 index 000000000..77840a7e8 Binary files /dev/null and b/public/terrain/19/858573/353958.terrain differ diff --git a/public/terrain/19/858573/353959.terrain b/public/terrain/19/858573/353959.terrain new file mode 100644 index 000000000..4f0cdb80e Binary files /dev/null and b/public/terrain/19/858573/353959.terrain differ diff --git a/public/terrain/19/858573/353960.terrain b/public/terrain/19/858573/353960.terrain new file mode 100644 index 000000000..51de710b1 Binary files /dev/null and b/public/terrain/19/858573/353960.terrain differ diff --git a/public/terrain/19/858573/353961.terrain b/public/terrain/19/858573/353961.terrain new file mode 100644 index 000000000..8a1212499 Binary files /dev/null and b/public/terrain/19/858573/353961.terrain differ diff --git a/public/terrain/19/858573/353962.terrain b/public/terrain/19/858573/353962.terrain new file mode 100644 index 000000000..3b8768c81 Binary files /dev/null and b/public/terrain/19/858573/353962.terrain differ diff --git a/public/terrain/19/858573/353963.terrain b/public/terrain/19/858573/353963.terrain new file mode 100644 index 000000000..a178545a8 Binary files /dev/null and b/public/terrain/19/858573/353963.terrain differ diff --git a/public/terrain/19/858573/353964.terrain b/public/terrain/19/858573/353964.terrain new file mode 100644 index 000000000..0c179fccb Binary files /dev/null and b/public/terrain/19/858573/353964.terrain differ diff --git a/public/terrain/19/858573/353965.terrain b/public/terrain/19/858573/353965.terrain new file mode 100644 index 000000000..cef834d87 Binary files /dev/null and b/public/terrain/19/858573/353965.terrain differ diff --git a/public/terrain/19/858573/353966.terrain b/public/terrain/19/858573/353966.terrain new file mode 100644 index 000000000..a5a4fb27c Binary files /dev/null and b/public/terrain/19/858573/353966.terrain differ diff --git a/public/terrain/19/858573/353967.terrain b/public/terrain/19/858573/353967.terrain new file mode 100644 index 000000000..fd647aa48 Binary files /dev/null and b/public/terrain/19/858573/353967.terrain differ diff --git a/public/terrain/19/858573/353968.terrain b/public/terrain/19/858573/353968.terrain new file mode 100644 index 000000000..6c9f7f25a Binary files /dev/null and b/public/terrain/19/858573/353968.terrain differ diff --git a/public/terrain/19/858573/353969.terrain b/public/terrain/19/858573/353969.terrain new file mode 100644 index 000000000..3ba858964 Binary files /dev/null and b/public/terrain/19/858573/353969.terrain differ diff --git a/public/terrain/19/858573/353970.terrain b/public/terrain/19/858573/353970.terrain new file mode 100644 index 000000000..1d0bdccad Binary files /dev/null and b/public/terrain/19/858573/353970.terrain differ diff --git a/public/terrain/19/858573/353971.terrain b/public/terrain/19/858573/353971.terrain new file mode 100644 index 000000000..cf7a124fc Binary files /dev/null and b/public/terrain/19/858573/353971.terrain differ diff --git a/public/terrain/19/858573/353972.terrain b/public/terrain/19/858573/353972.terrain new file mode 100644 index 000000000..8eb1f7b11 Binary files /dev/null and b/public/terrain/19/858573/353972.terrain differ diff --git a/public/terrain/19/858573/353973.terrain b/public/terrain/19/858573/353973.terrain new file mode 100644 index 000000000..14e84cdfe Binary files /dev/null and b/public/terrain/19/858573/353973.terrain differ diff --git a/public/terrain/19/858573/353974.terrain b/public/terrain/19/858573/353974.terrain new file mode 100644 index 000000000..58d95a7b8 Binary files /dev/null and b/public/terrain/19/858573/353974.terrain differ diff --git a/public/terrain/19/858573/353975.terrain b/public/terrain/19/858573/353975.terrain new file mode 100644 index 000000000..b8af5af5a Binary files /dev/null and b/public/terrain/19/858573/353975.terrain differ diff --git a/public/terrain/19/858573/353976.terrain b/public/terrain/19/858573/353976.terrain new file mode 100644 index 000000000..4d340d5ca Binary files /dev/null and b/public/terrain/19/858573/353976.terrain differ diff --git a/public/terrain/19/858573/353977.terrain b/public/terrain/19/858573/353977.terrain new file mode 100644 index 000000000..e92bfbd71 Binary files /dev/null and b/public/terrain/19/858573/353977.terrain differ diff --git a/public/terrain/19/858573/353978.terrain b/public/terrain/19/858573/353978.terrain new file mode 100644 index 000000000..72788517d Binary files /dev/null and b/public/terrain/19/858573/353978.terrain differ diff --git a/public/terrain/19/858573/353979.terrain b/public/terrain/19/858573/353979.terrain new file mode 100644 index 000000000..32941fa9d Binary files /dev/null and b/public/terrain/19/858573/353979.terrain differ diff --git a/public/terrain/19/858573/353980.terrain b/public/terrain/19/858573/353980.terrain new file mode 100644 index 000000000..b3b433666 Binary files /dev/null and b/public/terrain/19/858573/353980.terrain differ diff --git a/public/terrain/19/858573/353981.terrain b/public/terrain/19/858573/353981.terrain new file mode 100644 index 000000000..699a8d53d Binary files /dev/null and b/public/terrain/19/858573/353981.terrain differ diff --git a/public/terrain/19/858573/353982.terrain b/public/terrain/19/858573/353982.terrain new file mode 100644 index 000000000..c1b56442b Binary files /dev/null and b/public/terrain/19/858573/353982.terrain differ diff --git a/public/terrain/19/858573/353983.terrain b/public/terrain/19/858573/353983.terrain new file mode 100644 index 000000000..f90501d73 Binary files /dev/null and b/public/terrain/19/858573/353983.terrain differ diff --git a/public/terrain/19/858573/353984.terrain b/public/terrain/19/858573/353984.terrain new file mode 100644 index 000000000..1444fbeb7 Binary files /dev/null and b/public/terrain/19/858573/353984.terrain differ diff --git a/public/terrain/19/858573/353985.terrain b/public/terrain/19/858573/353985.terrain new file mode 100644 index 000000000..e8ac857ae Binary files /dev/null and b/public/terrain/19/858573/353985.terrain differ diff --git a/public/terrain/19/858573/353986.terrain b/public/terrain/19/858573/353986.terrain new file mode 100644 index 000000000..71fcfbbe5 Binary files /dev/null and b/public/terrain/19/858573/353986.terrain differ diff --git a/public/terrain/19/858573/353987.terrain b/public/terrain/19/858573/353987.terrain new file mode 100644 index 000000000..3764b7a90 Binary files /dev/null and b/public/terrain/19/858573/353987.terrain differ diff --git a/public/terrain/19/858573/353988.terrain b/public/terrain/19/858573/353988.terrain new file mode 100644 index 000000000..ae3f64222 Binary files /dev/null and b/public/terrain/19/858573/353988.terrain differ diff --git a/public/terrain/19/858573/353989.terrain b/public/terrain/19/858573/353989.terrain new file mode 100644 index 000000000..bcdf01bb0 Binary files /dev/null and b/public/terrain/19/858573/353989.terrain differ diff --git a/public/terrain/19/858573/353990.terrain b/public/terrain/19/858573/353990.terrain new file mode 100644 index 000000000..56f813ba1 Binary files /dev/null and b/public/terrain/19/858573/353990.terrain differ diff --git a/public/terrain/19/858573/353991.terrain b/public/terrain/19/858573/353991.terrain new file mode 100644 index 000000000..4d6ea89fa Binary files /dev/null and b/public/terrain/19/858573/353991.terrain differ diff --git a/public/terrain/19/858573/353992.terrain b/public/terrain/19/858573/353992.terrain new file mode 100644 index 000000000..74f606541 Binary files /dev/null and b/public/terrain/19/858573/353992.terrain differ diff --git a/public/terrain/19/858573/353993.terrain b/public/terrain/19/858573/353993.terrain new file mode 100644 index 000000000..cf795375f Binary files /dev/null and b/public/terrain/19/858573/353993.terrain differ diff --git a/public/terrain/19/858573/353994.terrain b/public/terrain/19/858573/353994.terrain new file mode 100644 index 000000000..9660a26f9 Binary files /dev/null and b/public/terrain/19/858573/353994.terrain differ diff --git a/public/terrain/19/858573/353995.terrain b/public/terrain/19/858573/353995.terrain new file mode 100644 index 000000000..629a0375c Binary files /dev/null and b/public/terrain/19/858573/353995.terrain differ diff --git a/public/terrain/19/858573/353996.terrain b/public/terrain/19/858573/353996.terrain new file mode 100644 index 000000000..51d5c39a0 Binary files /dev/null and b/public/terrain/19/858573/353996.terrain differ diff --git a/public/terrain/19/858573/353997.terrain b/public/terrain/19/858573/353997.terrain new file mode 100644 index 000000000..f4528b2a0 Binary files /dev/null and b/public/terrain/19/858573/353997.terrain differ diff --git a/public/terrain/19/858573/353998.terrain b/public/terrain/19/858573/353998.terrain new file mode 100644 index 000000000..b15d45b9b Binary files /dev/null and b/public/terrain/19/858573/353998.terrain differ diff --git a/public/terrain/19/858573/353999.terrain b/public/terrain/19/858573/353999.terrain new file mode 100644 index 000000000..73f9c4050 Binary files /dev/null and b/public/terrain/19/858573/353999.terrain differ diff --git a/public/terrain/19/858573/354000.terrain b/public/terrain/19/858573/354000.terrain new file mode 100644 index 000000000..d16a5117d Binary files /dev/null and b/public/terrain/19/858573/354000.terrain differ diff --git a/public/terrain/19/858573/354001.terrain b/public/terrain/19/858573/354001.terrain new file mode 100644 index 000000000..52b00bd2c Binary files /dev/null and b/public/terrain/19/858573/354001.terrain differ diff --git a/public/terrain/19/858573/354002.terrain b/public/terrain/19/858573/354002.terrain new file mode 100644 index 000000000..eddfe43e9 Binary files /dev/null and b/public/terrain/19/858573/354002.terrain differ diff --git a/public/terrain/19/858573/354003.terrain b/public/terrain/19/858573/354003.terrain new file mode 100644 index 000000000..f15947b8f Binary files /dev/null and b/public/terrain/19/858573/354003.terrain differ diff --git a/public/terrain/19/858573/354004.terrain b/public/terrain/19/858573/354004.terrain new file mode 100644 index 000000000..c80099833 Binary files /dev/null and b/public/terrain/19/858573/354004.terrain differ diff --git a/public/terrain/19/858573/354005.terrain b/public/terrain/19/858573/354005.terrain new file mode 100644 index 000000000..b6d2a9e7d Binary files /dev/null and b/public/terrain/19/858573/354005.terrain differ diff --git a/public/terrain/19/858573/354006.terrain b/public/terrain/19/858573/354006.terrain new file mode 100644 index 000000000..f74e447c0 Binary files /dev/null and b/public/terrain/19/858573/354006.terrain differ diff --git a/public/terrain/19/858573/354007.terrain b/public/terrain/19/858573/354007.terrain new file mode 100644 index 000000000..7c0d06d2e Binary files /dev/null and b/public/terrain/19/858573/354007.terrain differ diff --git a/public/terrain/19/858573/354008.terrain b/public/terrain/19/858573/354008.terrain new file mode 100644 index 000000000..471dd7a27 Binary files /dev/null and b/public/terrain/19/858573/354008.terrain differ diff --git a/public/terrain/19/858573/354009.terrain b/public/terrain/19/858573/354009.terrain new file mode 100644 index 000000000..c711348c0 Binary files /dev/null and b/public/terrain/19/858573/354009.terrain differ diff --git a/public/terrain/19/858573/354010.terrain b/public/terrain/19/858573/354010.terrain new file mode 100644 index 000000000..123aa423a Binary files /dev/null and b/public/terrain/19/858573/354010.terrain differ diff --git a/public/terrain/19/858573/354011.terrain b/public/terrain/19/858573/354011.terrain new file mode 100644 index 000000000..a31cc6500 Binary files /dev/null and b/public/terrain/19/858573/354011.terrain differ diff --git a/public/terrain/19/858573/354012.terrain b/public/terrain/19/858573/354012.terrain new file mode 100644 index 000000000..52fa7c0f3 Binary files /dev/null and b/public/terrain/19/858573/354012.terrain differ diff --git a/public/terrain/19/858573/354013.terrain b/public/terrain/19/858573/354013.terrain new file mode 100644 index 000000000..e6b886570 Binary files /dev/null and b/public/terrain/19/858573/354013.terrain differ diff --git a/public/terrain/19/858573/354014.terrain b/public/terrain/19/858573/354014.terrain new file mode 100644 index 000000000..a0da8d7b2 Binary files /dev/null and b/public/terrain/19/858573/354014.terrain differ diff --git a/public/terrain/19/858573/354015.terrain b/public/terrain/19/858573/354015.terrain new file mode 100644 index 000000000..1933dc491 Binary files /dev/null and b/public/terrain/19/858573/354015.terrain differ diff --git a/public/terrain/19/858573/354016.terrain b/public/terrain/19/858573/354016.terrain new file mode 100644 index 000000000..f005bf60b Binary files /dev/null and b/public/terrain/19/858573/354016.terrain differ diff --git a/public/terrain/19/858573/354017.terrain b/public/terrain/19/858573/354017.terrain new file mode 100644 index 000000000..872574bd2 Binary files /dev/null and b/public/terrain/19/858573/354017.terrain differ diff --git a/public/terrain/19/858573/354018.terrain b/public/terrain/19/858573/354018.terrain new file mode 100644 index 000000000..f5f3c6177 Binary files /dev/null and b/public/terrain/19/858573/354018.terrain differ diff --git a/public/terrain/19/858573/354019.terrain b/public/terrain/19/858573/354019.terrain new file mode 100644 index 000000000..11358f1f1 Binary files /dev/null and b/public/terrain/19/858573/354019.terrain differ diff --git a/public/terrain/19/858573/354020.terrain b/public/terrain/19/858573/354020.terrain new file mode 100644 index 000000000..0c48925a8 Binary files /dev/null and b/public/terrain/19/858573/354020.terrain differ diff --git a/public/terrain/19/858573/354021.terrain b/public/terrain/19/858573/354021.terrain new file mode 100644 index 000000000..5d3daf3b4 Binary files /dev/null and b/public/terrain/19/858573/354021.terrain differ diff --git a/public/terrain/19/858573/354022.terrain b/public/terrain/19/858573/354022.terrain new file mode 100644 index 000000000..dac1cc47f Binary files /dev/null and b/public/terrain/19/858573/354022.terrain differ diff --git a/public/terrain/19/858573/354023.terrain b/public/terrain/19/858573/354023.terrain new file mode 100644 index 000000000..b176e142a Binary files /dev/null and b/public/terrain/19/858573/354023.terrain differ diff --git a/public/terrain/19/858573/354024.terrain b/public/terrain/19/858573/354024.terrain new file mode 100644 index 000000000..f7c2b8e5d Binary files /dev/null and b/public/terrain/19/858573/354024.terrain differ diff --git a/public/terrain/19/858573/354025.terrain b/public/terrain/19/858573/354025.terrain new file mode 100644 index 000000000..1fe0893d2 Binary files /dev/null and b/public/terrain/19/858573/354025.terrain differ diff --git a/public/terrain/19/858573/354026.terrain b/public/terrain/19/858573/354026.terrain new file mode 100644 index 000000000..cdcf8d5e1 Binary files /dev/null and b/public/terrain/19/858573/354026.terrain differ diff --git a/public/terrain/19/858573/354027.terrain b/public/terrain/19/858573/354027.terrain new file mode 100644 index 000000000..9de72b230 Binary files /dev/null and b/public/terrain/19/858573/354027.terrain differ diff --git a/public/terrain/19/858573/354028.terrain b/public/terrain/19/858573/354028.terrain new file mode 100644 index 000000000..8a10a9a77 Binary files /dev/null and b/public/terrain/19/858573/354028.terrain differ diff --git a/public/terrain/19/858573/354029.terrain b/public/terrain/19/858573/354029.terrain new file mode 100644 index 000000000..73b800933 Binary files /dev/null and b/public/terrain/19/858573/354029.terrain differ diff --git a/public/terrain/19/858573/354030.terrain b/public/terrain/19/858573/354030.terrain new file mode 100644 index 000000000..ee7ae9fbc Binary files /dev/null and b/public/terrain/19/858573/354030.terrain differ diff --git a/public/terrain/19/858573/354031.terrain b/public/terrain/19/858573/354031.terrain new file mode 100644 index 000000000..6a6f6f3af Binary files /dev/null and b/public/terrain/19/858573/354031.terrain differ diff --git a/public/terrain/19/858573/354032.terrain b/public/terrain/19/858573/354032.terrain new file mode 100644 index 000000000..578ea857b Binary files /dev/null and b/public/terrain/19/858573/354032.terrain differ diff --git a/public/terrain/19/858573/354033.terrain b/public/terrain/19/858573/354033.terrain new file mode 100644 index 000000000..243048ff0 Binary files /dev/null and b/public/terrain/19/858573/354033.terrain differ diff --git a/public/terrain/19/858573/354034.terrain b/public/terrain/19/858573/354034.terrain new file mode 100644 index 000000000..a1f52c189 Binary files /dev/null and b/public/terrain/19/858573/354034.terrain differ diff --git a/public/terrain/19/858573/354035.terrain b/public/terrain/19/858573/354035.terrain new file mode 100644 index 000000000..1b8ba9abe Binary files /dev/null and b/public/terrain/19/858573/354035.terrain differ diff --git a/public/terrain/19/858573/354036.terrain b/public/terrain/19/858573/354036.terrain new file mode 100644 index 000000000..a421580ae Binary files /dev/null and b/public/terrain/19/858573/354036.terrain differ diff --git a/public/terrain/19/858573/354037.terrain b/public/terrain/19/858573/354037.terrain new file mode 100644 index 000000000..6ea0c4e1c Binary files /dev/null and b/public/terrain/19/858573/354037.terrain differ diff --git a/public/terrain/19/858573/354038.terrain b/public/terrain/19/858573/354038.terrain new file mode 100644 index 000000000..bb3d84748 Binary files /dev/null and b/public/terrain/19/858573/354038.terrain differ diff --git a/public/terrain/19/858573/354039.terrain b/public/terrain/19/858573/354039.terrain new file mode 100644 index 000000000..70ef4f6cf Binary files /dev/null and b/public/terrain/19/858573/354039.terrain differ diff --git a/public/terrain/19/858573/354040.terrain b/public/terrain/19/858573/354040.terrain new file mode 100644 index 000000000..484f40808 Binary files /dev/null and b/public/terrain/19/858573/354040.terrain differ diff --git a/public/terrain/19/858573/354041.terrain b/public/terrain/19/858573/354041.terrain new file mode 100644 index 000000000..62cc6cb11 Binary files /dev/null and b/public/terrain/19/858573/354041.terrain differ diff --git a/public/terrain/19/858573/354042.terrain b/public/terrain/19/858573/354042.terrain new file mode 100644 index 000000000..316ff60e3 Binary files /dev/null and b/public/terrain/19/858573/354042.terrain differ diff --git a/public/terrain/19/858573/354043.terrain b/public/terrain/19/858573/354043.terrain new file mode 100644 index 000000000..9064fe3fe Binary files /dev/null and b/public/terrain/19/858573/354043.terrain differ diff --git a/public/terrain/19/858573/354044.terrain b/public/terrain/19/858573/354044.terrain new file mode 100644 index 000000000..d29ae3679 Binary files /dev/null and b/public/terrain/19/858573/354044.terrain differ diff --git a/public/terrain/19/858573/354045.terrain b/public/terrain/19/858573/354045.terrain new file mode 100644 index 000000000..7b676640d Binary files /dev/null and b/public/terrain/19/858573/354045.terrain differ diff --git a/public/terrain/19/858573/354046.terrain b/public/terrain/19/858573/354046.terrain new file mode 100644 index 000000000..0eb3af14b Binary files /dev/null and b/public/terrain/19/858573/354046.terrain differ diff --git a/public/terrain/19/858573/354047.terrain b/public/terrain/19/858573/354047.terrain new file mode 100644 index 000000000..14c65b084 Binary files /dev/null and b/public/terrain/19/858573/354047.terrain differ diff --git a/public/terrain/19/858573/354048.terrain b/public/terrain/19/858573/354048.terrain new file mode 100644 index 000000000..b542dfa2a Binary files /dev/null and b/public/terrain/19/858573/354048.terrain differ diff --git a/public/terrain/19/858573/354049.terrain b/public/terrain/19/858573/354049.terrain new file mode 100644 index 000000000..04c6b87e7 Binary files /dev/null and b/public/terrain/19/858573/354049.terrain differ diff --git a/public/terrain/19/858573/354050.terrain b/public/terrain/19/858573/354050.terrain new file mode 100644 index 000000000..25a231352 Binary files /dev/null and b/public/terrain/19/858573/354050.terrain differ diff --git a/public/terrain/19/858573/354051.terrain b/public/terrain/19/858573/354051.terrain new file mode 100644 index 000000000..54d9a8206 Binary files /dev/null and b/public/terrain/19/858573/354051.terrain differ diff --git a/public/terrain/19/858573/354052.terrain b/public/terrain/19/858573/354052.terrain new file mode 100644 index 000000000..4fc1501ed Binary files /dev/null and b/public/terrain/19/858573/354052.terrain differ diff --git a/public/terrain/19/858573/354053.terrain b/public/terrain/19/858573/354053.terrain new file mode 100644 index 000000000..cc2bcf759 Binary files /dev/null and b/public/terrain/19/858573/354053.terrain differ diff --git a/public/terrain/19/858573/354054.terrain b/public/terrain/19/858573/354054.terrain new file mode 100644 index 000000000..110ef2cbc Binary files /dev/null and b/public/terrain/19/858573/354054.terrain differ diff --git a/public/terrain/19/858573/354055.terrain b/public/terrain/19/858573/354055.terrain new file mode 100644 index 000000000..7c611351e Binary files /dev/null and b/public/terrain/19/858573/354055.terrain differ diff --git a/public/terrain/19/858573/354056.terrain b/public/terrain/19/858573/354056.terrain new file mode 100644 index 000000000..4fefd343c Binary files /dev/null and b/public/terrain/19/858573/354056.terrain differ diff --git a/public/terrain/19/858573/354057.terrain b/public/terrain/19/858573/354057.terrain new file mode 100644 index 000000000..c6ff93c91 Binary files /dev/null and b/public/terrain/19/858573/354057.terrain differ diff --git a/public/terrain/19/858573/354058.terrain b/public/terrain/19/858573/354058.terrain new file mode 100644 index 000000000..6cb0d10aa Binary files /dev/null and b/public/terrain/19/858573/354058.terrain differ diff --git a/public/terrain/19/858573/354059.terrain b/public/terrain/19/858573/354059.terrain new file mode 100644 index 000000000..c8e009ac5 Binary files /dev/null and b/public/terrain/19/858573/354059.terrain differ diff --git a/public/terrain/19/858574/353743.terrain b/public/terrain/19/858574/353743.terrain new file mode 100644 index 000000000..4f233414c Binary files /dev/null and b/public/terrain/19/858574/353743.terrain differ diff --git a/public/terrain/19/858574/353744.terrain b/public/terrain/19/858574/353744.terrain new file mode 100644 index 000000000..f961c1c86 Binary files /dev/null and b/public/terrain/19/858574/353744.terrain differ diff --git a/public/terrain/19/858574/353745.terrain b/public/terrain/19/858574/353745.terrain new file mode 100644 index 000000000..2fef9b5c8 Binary files /dev/null and b/public/terrain/19/858574/353745.terrain differ diff --git a/public/terrain/19/858574/353746.terrain b/public/terrain/19/858574/353746.terrain new file mode 100644 index 000000000..534d111ea Binary files /dev/null and b/public/terrain/19/858574/353746.terrain differ diff --git a/public/terrain/19/858574/353747.terrain b/public/terrain/19/858574/353747.terrain new file mode 100644 index 000000000..cad141a3f Binary files /dev/null and b/public/terrain/19/858574/353747.terrain differ diff --git a/public/terrain/19/858574/353748.terrain b/public/terrain/19/858574/353748.terrain new file mode 100644 index 000000000..73125016d Binary files /dev/null and b/public/terrain/19/858574/353748.terrain differ diff --git a/public/terrain/19/858574/353749.terrain b/public/terrain/19/858574/353749.terrain new file mode 100644 index 000000000..e25722378 Binary files /dev/null and b/public/terrain/19/858574/353749.terrain differ diff --git a/public/terrain/19/858574/353750.terrain b/public/terrain/19/858574/353750.terrain new file mode 100644 index 000000000..f0b1bf7ed Binary files /dev/null and b/public/terrain/19/858574/353750.terrain differ diff --git a/public/terrain/19/858574/353751.terrain b/public/terrain/19/858574/353751.terrain new file mode 100644 index 000000000..649d9c7bb Binary files /dev/null and b/public/terrain/19/858574/353751.terrain differ diff --git a/public/terrain/19/858574/353752.terrain b/public/terrain/19/858574/353752.terrain new file mode 100644 index 000000000..ac84cfc7a Binary files /dev/null and b/public/terrain/19/858574/353752.terrain differ diff --git a/public/terrain/19/858574/353753.terrain b/public/terrain/19/858574/353753.terrain new file mode 100644 index 000000000..703f896e0 Binary files /dev/null and b/public/terrain/19/858574/353753.terrain differ diff --git a/public/terrain/19/858574/353754.terrain b/public/terrain/19/858574/353754.terrain new file mode 100644 index 000000000..163655a5f Binary files /dev/null and b/public/terrain/19/858574/353754.terrain differ diff --git a/public/terrain/19/858574/353755.terrain b/public/terrain/19/858574/353755.terrain new file mode 100644 index 000000000..8f6ce6d7a Binary files /dev/null and b/public/terrain/19/858574/353755.terrain differ diff --git a/public/terrain/19/858574/353756.terrain b/public/terrain/19/858574/353756.terrain new file mode 100644 index 000000000..37585ca35 Binary files /dev/null and b/public/terrain/19/858574/353756.terrain differ diff --git a/public/terrain/19/858574/353757.terrain b/public/terrain/19/858574/353757.terrain new file mode 100644 index 000000000..f53d42ce8 Binary files /dev/null and b/public/terrain/19/858574/353757.terrain differ diff --git a/public/terrain/19/858574/353758.terrain b/public/terrain/19/858574/353758.terrain new file mode 100644 index 000000000..79f9f3644 Binary files /dev/null and b/public/terrain/19/858574/353758.terrain differ diff --git a/public/terrain/19/858574/353759.terrain b/public/terrain/19/858574/353759.terrain new file mode 100644 index 000000000..cc8e6d4cb Binary files /dev/null and b/public/terrain/19/858574/353759.terrain differ diff --git a/public/terrain/19/858574/353760.terrain b/public/terrain/19/858574/353760.terrain new file mode 100644 index 000000000..47695eb33 Binary files /dev/null and b/public/terrain/19/858574/353760.terrain differ diff --git a/public/terrain/19/858574/353761.terrain b/public/terrain/19/858574/353761.terrain new file mode 100644 index 000000000..f7313691e Binary files /dev/null and b/public/terrain/19/858574/353761.terrain differ diff --git a/public/terrain/19/858574/353762.terrain b/public/terrain/19/858574/353762.terrain new file mode 100644 index 000000000..e8c83cf8c Binary files /dev/null and b/public/terrain/19/858574/353762.terrain differ diff --git a/public/terrain/19/858574/353763.terrain b/public/terrain/19/858574/353763.terrain new file mode 100644 index 000000000..13778ba49 Binary files /dev/null and b/public/terrain/19/858574/353763.terrain differ diff --git a/public/terrain/19/858574/353764.terrain b/public/terrain/19/858574/353764.terrain new file mode 100644 index 000000000..ed350cfdd Binary files /dev/null and b/public/terrain/19/858574/353764.terrain differ diff --git a/public/terrain/19/858574/353765.terrain b/public/terrain/19/858574/353765.terrain new file mode 100644 index 000000000..4a6336e50 Binary files /dev/null and b/public/terrain/19/858574/353765.terrain differ diff --git a/public/terrain/19/858574/353766.terrain b/public/terrain/19/858574/353766.terrain new file mode 100644 index 000000000..553fbe0f8 Binary files /dev/null and b/public/terrain/19/858574/353766.terrain differ diff --git a/public/terrain/19/858574/353767.terrain b/public/terrain/19/858574/353767.terrain new file mode 100644 index 000000000..6a85bd1b6 Binary files /dev/null and b/public/terrain/19/858574/353767.terrain differ diff --git a/public/terrain/19/858574/353768.terrain b/public/terrain/19/858574/353768.terrain new file mode 100644 index 000000000..c6b5f21cd Binary files /dev/null and b/public/terrain/19/858574/353768.terrain differ diff --git a/public/terrain/19/858574/353769.terrain b/public/terrain/19/858574/353769.terrain new file mode 100644 index 000000000..8270cca45 Binary files /dev/null and b/public/terrain/19/858574/353769.terrain differ diff --git a/public/terrain/19/858574/353770.terrain b/public/terrain/19/858574/353770.terrain new file mode 100644 index 000000000..79ef80601 Binary files /dev/null and b/public/terrain/19/858574/353770.terrain differ diff --git a/public/terrain/19/858574/353771.terrain b/public/terrain/19/858574/353771.terrain new file mode 100644 index 000000000..7e52f3c11 Binary files /dev/null and b/public/terrain/19/858574/353771.terrain differ diff --git a/public/terrain/19/858574/353772.terrain b/public/terrain/19/858574/353772.terrain new file mode 100644 index 000000000..db578a8c4 Binary files /dev/null and b/public/terrain/19/858574/353772.terrain differ diff --git a/public/terrain/19/858574/353773.terrain b/public/terrain/19/858574/353773.terrain new file mode 100644 index 000000000..5261b6136 Binary files /dev/null and b/public/terrain/19/858574/353773.terrain differ diff --git a/public/terrain/19/858574/353774.terrain b/public/terrain/19/858574/353774.terrain new file mode 100644 index 000000000..08b4efbfe Binary files /dev/null and b/public/terrain/19/858574/353774.terrain differ diff --git a/public/terrain/19/858574/353775.terrain b/public/terrain/19/858574/353775.terrain new file mode 100644 index 000000000..93f7d5c1c Binary files /dev/null and b/public/terrain/19/858574/353775.terrain differ diff --git a/public/terrain/19/858574/353776.terrain b/public/terrain/19/858574/353776.terrain new file mode 100644 index 000000000..1b9e0091d Binary files /dev/null and b/public/terrain/19/858574/353776.terrain differ diff --git a/public/terrain/19/858574/353777.terrain b/public/terrain/19/858574/353777.terrain new file mode 100644 index 000000000..2b6c58e5b Binary files /dev/null and b/public/terrain/19/858574/353777.terrain differ diff --git a/public/terrain/19/858574/353778.terrain b/public/terrain/19/858574/353778.terrain new file mode 100644 index 000000000..e0daf4bfc Binary files /dev/null and b/public/terrain/19/858574/353778.terrain differ diff --git a/public/terrain/19/858574/353779.terrain b/public/terrain/19/858574/353779.terrain new file mode 100644 index 000000000..dbf4c7001 Binary files /dev/null and b/public/terrain/19/858574/353779.terrain differ diff --git a/public/terrain/19/858574/353780.terrain b/public/terrain/19/858574/353780.terrain new file mode 100644 index 000000000..efd3fc0a7 Binary files /dev/null and b/public/terrain/19/858574/353780.terrain differ diff --git a/public/terrain/19/858574/353781.terrain b/public/terrain/19/858574/353781.terrain new file mode 100644 index 000000000..5b118079d Binary files /dev/null and b/public/terrain/19/858574/353781.terrain differ diff --git a/public/terrain/19/858574/353782.terrain b/public/terrain/19/858574/353782.terrain new file mode 100644 index 000000000..3c835f1d1 Binary files /dev/null and b/public/terrain/19/858574/353782.terrain differ diff --git a/public/terrain/19/858574/353783.terrain b/public/terrain/19/858574/353783.terrain new file mode 100644 index 000000000..97bfddb45 Binary files /dev/null and b/public/terrain/19/858574/353783.terrain differ diff --git a/public/terrain/19/858574/353784.terrain b/public/terrain/19/858574/353784.terrain new file mode 100644 index 000000000..95eebc46e Binary files /dev/null and b/public/terrain/19/858574/353784.terrain differ diff --git a/public/terrain/19/858574/353785.terrain b/public/terrain/19/858574/353785.terrain new file mode 100644 index 000000000..5092a505a Binary files /dev/null and b/public/terrain/19/858574/353785.terrain differ diff --git a/public/terrain/19/858574/353786.terrain b/public/terrain/19/858574/353786.terrain new file mode 100644 index 000000000..25602a85e Binary files /dev/null and b/public/terrain/19/858574/353786.terrain differ diff --git a/public/terrain/19/858574/353787.terrain b/public/terrain/19/858574/353787.terrain new file mode 100644 index 000000000..27df039fb Binary files /dev/null and b/public/terrain/19/858574/353787.terrain differ diff --git a/public/terrain/19/858574/353788.terrain b/public/terrain/19/858574/353788.terrain new file mode 100644 index 000000000..2fea94249 Binary files /dev/null and b/public/terrain/19/858574/353788.terrain differ diff --git a/public/terrain/19/858574/353789.terrain b/public/terrain/19/858574/353789.terrain new file mode 100644 index 000000000..0b7602a9b Binary files /dev/null and b/public/terrain/19/858574/353789.terrain differ diff --git a/public/terrain/19/858574/353790.terrain b/public/terrain/19/858574/353790.terrain new file mode 100644 index 000000000..31fb8bce2 Binary files /dev/null and b/public/terrain/19/858574/353790.terrain differ diff --git a/public/terrain/19/858574/353791.terrain b/public/terrain/19/858574/353791.terrain new file mode 100644 index 000000000..b8d180b5e Binary files /dev/null and b/public/terrain/19/858574/353791.terrain differ diff --git a/public/terrain/19/858574/353792.terrain b/public/terrain/19/858574/353792.terrain new file mode 100644 index 000000000..ea986feb7 Binary files /dev/null and b/public/terrain/19/858574/353792.terrain differ diff --git a/public/terrain/19/858574/353793.terrain b/public/terrain/19/858574/353793.terrain new file mode 100644 index 000000000..0ffc5c365 Binary files /dev/null and b/public/terrain/19/858574/353793.terrain differ diff --git a/public/terrain/19/858574/353794.terrain b/public/terrain/19/858574/353794.terrain new file mode 100644 index 000000000..89a7a46fe Binary files /dev/null and b/public/terrain/19/858574/353794.terrain differ diff --git a/public/terrain/19/858574/353795.terrain b/public/terrain/19/858574/353795.terrain new file mode 100644 index 000000000..1cf3744a0 Binary files /dev/null and b/public/terrain/19/858574/353795.terrain differ diff --git a/public/terrain/19/858574/353796.terrain b/public/terrain/19/858574/353796.terrain new file mode 100644 index 000000000..8525294f0 Binary files /dev/null and b/public/terrain/19/858574/353796.terrain differ diff --git a/public/terrain/19/858574/353797.terrain b/public/terrain/19/858574/353797.terrain new file mode 100644 index 000000000..045f0e488 Binary files /dev/null and b/public/terrain/19/858574/353797.terrain differ diff --git a/public/terrain/19/858574/353798.terrain b/public/terrain/19/858574/353798.terrain new file mode 100644 index 000000000..f08139234 Binary files /dev/null and b/public/terrain/19/858574/353798.terrain differ diff --git a/public/terrain/19/858574/353799.terrain b/public/terrain/19/858574/353799.terrain new file mode 100644 index 000000000..ffbefa6cb Binary files /dev/null and b/public/terrain/19/858574/353799.terrain differ diff --git a/public/terrain/19/858574/353800.terrain b/public/terrain/19/858574/353800.terrain new file mode 100644 index 000000000..be0d63d70 Binary files /dev/null and b/public/terrain/19/858574/353800.terrain differ diff --git a/public/terrain/19/858574/353801.terrain b/public/terrain/19/858574/353801.terrain new file mode 100644 index 000000000..1f5e0b9bc Binary files /dev/null and b/public/terrain/19/858574/353801.terrain differ diff --git a/public/terrain/19/858574/353802.terrain b/public/terrain/19/858574/353802.terrain new file mode 100644 index 000000000..4eb4eb000 Binary files /dev/null and b/public/terrain/19/858574/353802.terrain differ diff --git a/public/terrain/19/858574/353803.terrain b/public/terrain/19/858574/353803.terrain new file mode 100644 index 000000000..0435e26a4 Binary files /dev/null and b/public/terrain/19/858574/353803.terrain differ diff --git a/public/terrain/19/858574/353804.terrain b/public/terrain/19/858574/353804.terrain new file mode 100644 index 000000000..946b026a8 Binary files /dev/null and b/public/terrain/19/858574/353804.terrain differ diff --git a/public/terrain/19/858574/353805.terrain b/public/terrain/19/858574/353805.terrain new file mode 100644 index 000000000..c66651913 Binary files /dev/null and b/public/terrain/19/858574/353805.terrain differ diff --git a/public/terrain/19/858574/353806.terrain b/public/terrain/19/858574/353806.terrain new file mode 100644 index 000000000..149063dcc Binary files /dev/null and b/public/terrain/19/858574/353806.terrain differ diff --git a/public/terrain/19/858574/353807.terrain b/public/terrain/19/858574/353807.terrain new file mode 100644 index 000000000..48de79531 Binary files /dev/null and b/public/terrain/19/858574/353807.terrain differ diff --git a/public/terrain/19/858574/353808.terrain b/public/terrain/19/858574/353808.terrain new file mode 100644 index 000000000..e188e884e Binary files /dev/null and b/public/terrain/19/858574/353808.terrain differ diff --git a/public/terrain/19/858574/353809.terrain b/public/terrain/19/858574/353809.terrain new file mode 100644 index 000000000..087f2f606 Binary files /dev/null and b/public/terrain/19/858574/353809.terrain differ diff --git a/public/terrain/19/858574/353810.terrain b/public/terrain/19/858574/353810.terrain new file mode 100644 index 000000000..44fd9771a Binary files /dev/null and b/public/terrain/19/858574/353810.terrain differ diff --git a/public/terrain/19/858574/353811.terrain b/public/terrain/19/858574/353811.terrain new file mode 100644 index 000000000..1a733b4d5 Binary files /dev/null and b/public/terrain/19/858574/353811.terrain differ diff --git a/public/terrain/19/858574/353812.terrain b/public/terrain/19/858574/353812.terrain new file mode 100644 index 000000000..dc6bcd12e Binary files /dev/null and b/public/terrain/19/858574/353812.terrain differ diff --git a/public/terrain/19/858574/353813.terrain b/public/terrain/19/858574/353813.terrain new file mode 100644 index 000000000..70f0b7ef6 Binary files /dev/null and b/public/terrain/19/858574/353813.terrain differ diff --git a/public/terrain/19/858574/353814.terrain b/public/terrain/19/858574/353814.terrain new file mode 100644 index 000000000..dbb251c5a Binary files /dev/null and b/public/terrain/19/858574/353814.terrain differ diff --git a/public/terrain/19/858574/353815.terrain b/public/terrain/19/858574/353815.terrain new file mode 100644 index 000000000..44833aaec Binary files /dev/null and b/public/terrain/19/858574/353815.terrain differ diff --git a/public/terrain/19/858574/353816.terrain b/public/terrain/19/858574/353816.terrain new file mode 100644 index 000000000..3fe1426d6 Binary files /dev/null and b/public/terrain/19/858574/353816.terrain differ diff --git a/public/terrain/19/858574/353817.terrain b/public/terrain/19/858574/353817.terrain new file mode 100644 index 000000000..e79d2e8c2 Binary files /dev/null and b/public/terrain/19/858574/353817.terrain differ diff --git a/public/terrain/19/858574/353818.terrain b/public/terrain/19/858574/353818.terrain new file mode 100644 index 000000000..92eac85a9 Binary files /dev/null and b/public/terrain/19/858574/353818.terrain differ diff --git a/public/terrain/19/858574/353819.terrain b/public/terrain/19/858574/353819.terrain new file mode 100644 index 000000000..a5aa3befc Binary files /dev/null and b/public/terrain/19/858574/353819.terrain differ diff --git a/public/terrain/19/858574/353820.terrain b/public/terrain/19/858574/353820.terrain new file mode 100644 index 000000000..092a797d0 Binary files /dev/null and b/public/terrain/19/858574/353820.terrain differ diff --git a/public/terrain/19/858574/353821.terrain b/public/terrain/19/858574/353821.terrain new file mode 100644 index 000000000..a4ce4ea0c Binary files /dev/null and b/public/terrain/19/858574/353821.terrain differ diff --git a/public/terrain/19/858574/353822.terrain b/public/terrain/19/858574/353822.terrain new file mode 100644 index 000000000..5977896e1 Binary files /dev/null and b/public/terrain/19/858574/353822.terrain differ diff --git a/public/terrain/19/858574/353823.terrain b/public/terrain/19/858574/353823.terrain new file mode 100644 index 000000000..479c62918 Binary files /dev/null and b/public/terrain/19/858574/353823.terrain differ diff --git a/public/terrain/19/858574/353824.terrain b/public/terrain/19/858574/353824.terrain new file mode 100644 index 000000000..de6c7fdc8 Binary files /dev/null and b/public/terrain/19/858574/353824.terrain differ diff --git a/public/terrain/19/858574/353825.terrain b/public/terrain/19/858574/353825.terrain new file mode 100644 index 000000000..12846806f Binary files /dev/null and b/public/terrain/19/858574/353825.terrain differ diff --git a/public/terrain/19/858574/353826.terrain b/public/terrain/19/858574/353826.terrain new file mode 100644 index 000000000..b346ab15f Binary files /dev/null and b/public/terrain/19/858574/353826.terrain differ diff --git a/public/terrain/19/858574/353827.terrain b/public/terrain/19/858574/353827.terrain new file mode 100644 index 000000000..bb7f760b9 Binary files /dev/null and b/public/terrain/19/858574/353827.terrain differ diff --git a/public/terrain/19/858574/353828.terrain b/public/terrain/19/858574/353828.terrain new file mode 100644 index 000000000..e30a6a4e8 Binary files /dev/null and b/public/terrain/19/858574/353828.terrain differ diff --git a/public/terrain/19/858574/353829.terrain b/public/terrain/19/858574/353829.terrain new file mode 100644 index 000000000..d4377fdc7 Binary files /dev/null and b/public/terrain/19/858574/353829.terrain differ diff --git a/public/terrain/19/858574/353830.terrain b/public/terrain/19/858574/353830.terrain new file mode 100644 index 000000000..63200872c Binary files /dev/null and b/public/terrain/19/858574/353830.terrain differ diff --git a/public/terrain/19/858574/353831.terrain b/public/terrain/19/858574/353831.terrain new file mode 100644 index 000000000..b1bf356d1 Binary files /dev/null and b/public/terrain/19/858574/353831.terrain differ diff --git a/public/terrain/19/858574/353832.terrain b/public/terrain/19/858574/353832.terrain new file mode 100644 index 000000000..23a1291fe Binary files /dev/null and b/public/terrain/19/858574/353832.terrain differ diff --git a/public/terrain/19/858574/353833.terrain b/public/terrain/19/858574/353833.terrain new file mode 100644 index 000000000..43ff7ceb7 Binary files /dev/null and b/public/terrain/19/858574/353833.terrain differ diff --git a/public/terrain/19/858574/353834.terrain b/public/terrain/19/858574/353834.terrain new file mode 100644 index 000000000..3c6437c23 Binary files /dev/null and b/public/terrain/19/858574/353834.terrain differ diff --git a/public/terrain/19/858574/353835.terrain b/public/terrain/19/858574/353835.terrain new file mode 100644 index 000000000..d4382bcec Binary files /dev/null and b/public/terrain/19/858574/353835.terrain differ diff --git a/public/terrain/19/858574/353836.terrain b/public/terrain/19/858574/353836.terrain new file mode 100644 index 000000000..610bbb9f9 Binary files /dev/null and b/public/terrain/19/858574/353836.terrain differ diff --git a/public/terrain/19/858574/353837.terrain b/public/terrain/19/858574/353837.terrain new file mode 100644 index 000000000..0e3e1fc0a Binary files /dev/null and b/public/terrain/19/858574/353837.terrain differ diff --git a/public/terrain/19/858574/353838.terrain b/public/terrain/19/858574/353838.terrain new file mode 100644 index 000000000..e2c57dcbc Binary files /dev/null and b/public/terrain/19/858574/353838.terrain differ diff --git a/public/terrain/19/858574/353839.terrain b/public/terrain/19/858574/353839.terrain new file mode 100644 index 000000000..00d969012 Binary files /dev/null and b/public/terrain/19/858574/353839.terrain differ diff --git a/public/terrain/19/858574/353840.terrain b/public/terrain/19/858574/353840.terrain new file mode 100644 index 000000000..f9212e594 Binary files /dev/null and b/public/terrain/19/858574/353840.terrain differ diff --git a/public/terrain/19/858574/353841.terrain b/public/terrain/19/858574/353841.terrain new file mode 100644 index 000000000..cb711ab96 Binary files /dev/null and b/public/terrain/19/858574/353841.terrain differ diff --git a/public/terrain/19/858574/353842.terrain b/public/terrain/19/858574/353842.terrain new file mode 100644 index 000000000..12a99c10c Binary files /dev/null and b/public/terrain/19/858574/353842.terrain differ diff --git a/public/terrain/19/858574/353843.terrain b/public/terrain/19/858574/353843.terrain new file mode 100644 index 000000000..c4a6d5f38 Binary files /dev/null and b/public/terrain/19/858574/353843.terrain differ diff --git a/public/terrain/19/858574/353844.terrain b/public/terrain/19/858574/353844.terrain new file mode 100644 index 000000000..3323fa2ab Binary files /dev/null and b/public/terrain/19/858574/353844.terrain differ diff --git a/public/terrain/19/858574/353845.terrain b/public/terrain/19/858574/353845.terrain new file mode 100644 index 000000000..4d1bffb9c Binary files /dev/null and b/public/terrain/19/858574/353845.terrain differ diff --git a/public/terrain/19/858574/353846.terrain b/public/terrain/19/858574/353846.terrain new file mode 100644 index 000000000..3eab711e4 Binary files /dev/null and b/public/terrain/19/858574/353846.terrain differ diff --git a/public/terrain/19/858574/353847.terrain b/public/terrain/19/858574/353847.terrain new file mode 100644 index 000000000..632804592 Binary files /dev/null and b/public/terrain/19/858574/353847.terrain differ diff --git a/public/terrain/19/858574/353848.terrain b/public/terrain/19/858574/353848.terrain new file mode 100644 index 000000000..e84661d20 Binary files /dev/null and b/public/terrain/19/858574/353848.terrain differ diff --git a/public/terrain/19/858574/353849.terrain b/public/terrain/19/858574/353849.terrain new file mode 100644 index 000000000..2e1bdbfd7 Binary files /dev/null and b/public/terrain/19/858574/353849.terrain differ diff --git a/public/terrain/19/858574/353850.terrain b/public/terrain/19/858574/353850.terrain new file mode 100644 index 000000000..0271d4d1c Binary files /dev/null and b/public/terrain/19/858574/353850.terrain differ diff --git a/public/terrain/19/858574/353851.terrain b/public/terrain/19/858574/353851.terrain new file mode 100644 index 000000000..1d907be04 Binary files /dev/null and b/public/terrain/19/858574/353851.terrain differ diff --git a/public/terrain/19/858574/353852.terrain b/public/terrain/19/858574/353852.terrain new file mode 100644 index 000000000..a1e52febe Binary files /dev/null and b/public/terrain/19/858574/353852.terrain differ diff --git a/public/terrain/19/858574/353853.terrain b/public/terrain/19/858574/353853.terrain new file mode 100644 index 000000000..43e975cfb Binary files /dev/null and b/public/terrain/19/858574/353853.terrain differ diff --git a/public/terrain/19/858574/353854.terrain b/public/terrain/19/858574/353854.terrain new file mode 100644 index 000000000..ed91dc460 Binary files /dev/null and b/public/terrain/19/858574/353854.terrain differ diff --git a/public/terrain/19/858574/353855.terrain b/public/terrain/19/858574/353855.terrain new file mode 100644 index 000000000..8c43dd14a Binary files /dev/null and b/public/terrain/19/858574/353855.terrain differ diff --git a/public/terrain/19/858574/353856.terrain b/public/terrain/19/858574/353856.terrain new file mode 100644 index 000000000..48008a13f Binary files /dev/null and b/public/terrain/19/858574/353856.terrain differ diff --git a/public/terrain/19/858574/353857.terrain b/public/terrain/19/858574/353857.terrain new file mode 100644 index 000000000..551e3e4b7 Binary files /dev/null and b/public/terrain/19/858574/353857.terrain differ diff --git a/public/terrain/19/858574/353858.terrain b/public/terrain/19/858574/353858.terrain new file mode 100644 index 000000000..1963405d8 Binary files /dev/null and b/public/terrain/19/858574/353858.terrain differ diff --git a/public/terrain/19/858574/353859.terrain b/public/terrain/19/858574/353859.terrain new file mode 100644 index 000000000..1a3e7bbb0 Binary files /dev/null and b/public/terrain/19/858574/353859.terrain differ diff --git a/public/terrain/19/858574/353860.terrain b/public/terrain/19/858574/353860.terrain new file mode 100644 index 000000000..8068e417e Binary files /dev/null and b/public/terrain/19/858574/353860.terrain differ diff --git a/public/terrain/19/858574/353861.terrain b/public/terrain/19/858574/353861.terrain new file mode 100644 index 000000000..356fd29c7 Binary files /dev/null and b/public/terrain/19/858574/353861.terrain differ diff --git a/public/terrain/19/858574/353862.terrain b/public/terrain/19/858574/353862.terrain new file mode 100644 index 000000000..2d2f4751e Binary files /dev/null and b/public/terrain/19/858574/353862.terrain differ diff --git a/public/terrain/19/858574/353863.terrain b/public/terrain/19/858574/353863.terrain new file mode 100644 index 000000000..c340673bb Binary files /dev/null and b/public/terrain/19/858574/353863.terrain differ diff --git a/public/terrain/19/858574/353864.terrain b/public/terrain/19/858574/353864.terrain new file mode 100644 index 000000000..6f2b59c3c Binary files /dev/null and b/public/terrain/19/858574/353864.terrain differ diff --git a/public/terrain/19/858574/353865.terrain b/public/terrain/19/858574/353865.terrain new file mode 100644 index 000000000..79d6a087f Binary files /dev/null and b/public/terrain/19/858574/353865.terrain differ diff --git a/public/terrain/19/858574/353866.terrain b/public/terrain/19/858574/353866.terrain new file mode 100644 index 000000000..c94e22d1e Binary files /dev/null and b/public/terrain/19/858574/353866.terrain differ diff --git a/public/terrain/19/858574/353867.terrain b/public/terrain/19/858574/353867.terrain new file mode 100644 index 000000000..db63baaac Binary files /dev/null and b/public/terrain/19/858574/353867.terrain differ diff --git a/public/terrain/19/858574/353868.terrain b/public/terrain/19/858574/353868.terrain new file mode 100644 index 000000000..8c878dd69 Binary files /dev/null and b/public/terrain/19/858574/353868.terrain differ diff --git a/public/terrain/19/858574/353869.terrain b/public/terrain/19/858574/353869.terrain new file mode 100644 index 000000000..9c6db8f0d Binary files /dev/null and b/public/terrain/19/858574/353869.terrain differ diff --git a/public/terrain/19/858574/353870.terrain b/public/terrain/19/858574/353870.terrain new file mode 100644 index 000000000..97ba67e13 Binary files /dev/null and b/public/terrain/19/858574/353870.terrain differ diff --git a/public/terrain/19/858574/353871.terrain b/public/terrain/19/858574/353871.terrain new file mode 100644 index 000000000..d8d335269 Binary files /dev/null and b/public/terrain/19/858574/353871.terrain differ diff --git a/public/terrain/19/858574/353872.terrain b/public/terrain/19/858574/353872.terrain new file mode 100644 index 000000000..521d69272 Binary files /dev/null and b/public/terrain/19/858574/353872.terrain differ diff --git a/public/terrain/19/858574/353873.terrain b/public/terrain/19/858574/353873.terrain new file mode 100644 index 000000000..827768508 Binary files /dev/null and b/public/terrain/19/858574/353873.terrain differ diff --git a/public/terrain/19/858574/353874.terrain b/public/terrain/19/858574/353874.terrain new file mode 100644 index 000000000..0077f59bc Binary files /dev/null and b/public/terrain/19/858574/353874.terrain differ diff --git a/public/terrain/19/858574/353875.terrain b/public/terrain/19/858574/353875.terrain new file mode 100644 index 000000000..428f139f4 Binary files /dev/null and b/public/terrain/19/858574/353875.terrain differ diff --git a/public/terrain/19/858574/353876.terrain b/public/terrain/19/858574/353876.terrain new file mode 100644 index 000000000..811714904 Binary files /dev/null and b/public/terrain/19/858574/353876.terrain differ diff --git a/public/terrain/19/858574/353877.terrain b/public/terrain/19/858574/353877.terrain new file mode 100644 index 000000000..e05bdc585 Binary files /dev/null and b/public/terrain/19/858574/353877.terrain differ diff --git a/public/terrain/19/858574/353878.terrain b/public/terrain/19/858574/353878.terrain new file mode 100644 index 000000000..0af4fa4a1 Binary files /dev/null and b/public/terrain/19/858574/353878.terrain differ diff --git a/public/terrain/19/858574/353879.terrain b/public/terrain/19/858574/353879.terrain new file mode 100644 index 000000000..9327d1feb Binary files /dev/null and b/public/terrain/19/858574/353879.terrain differ diff --git a/public/terrain/19/858574/353880.terrain b/public/terrain/19/858574/353880.terrain new file mode 100644 index 000000000..3ca609764 Binary files /dev/null and b/public/terrain/19/858574/353880.terrain differ diff --git a/public/terrain/19/858574/353881.terrain b/public/terrain/19/858574/353881.terrain new file mode 100644 index 000000000..05d480268 Binary files /dev/null and b/public/terrain/19/858574/353881.terrain differ diff --git a/public/terrain/19/858574/353882.terrain b/public/terrain/19/858574/353882.terrain new file mode 100644 index 000000000..427b0d7a1 Binary files /dev/null and b/public/terrain/19/858574/353882.terrain differ diff --git a/public/terrain/19/858574/353883.terrain b/public/terrain/19/858574/353883.terrain new file mode 100644 index 000000000..b371e8afc Binary files /dev/null and b/public/terrain/19/858574/353883.terrain differ diff --git a/public/terrain/19/858574/353884.terrain b/public/terrain/19/858574/353884.terrain new file mode 100644 index 000000000..a28ea2925 Binary files /dev/null and b/public/terrain/19/858574/353884.terrain differ diff --git a/public/terrain/19/858574/353885.terrain b/public/terrain/19/858574/353885.terrain new file mode 100644 index 000000000..6f7b9fd27 Binary files /dev/null and b/public/terrain/19/858574/353885.terrain differ diff --git a/public/terrain/19/858574/353886.terrain b/public/terrain/19/858574/353886.terrain new file mode 100644 index 000000000..90a09d440 Binary files /dev/null and b/public/terrain/19/858574/353886.terrain differ diff --git a/public/terrain/19/858574/353887.terrain b/public/terrain/19/858574/353887.terrain new file mode 100644 index 000000000..64b4e8713 Binary files /dev/null and b/public/terrain/19/858574/353887.terrain differ diff --git a/public/terrain/19/858574/353888.terrain b/public/terrain/19/858574/353888.terrain new file mode 100644 index 000000000..1015efac4 Binary files /dev/null and b/public/terrain/19/858574/353888.terrain differ diff --git a/public/terrain/19/858574/353889.terrain b/public/terrain/19/858574/353889.terrain new file mode 100644 index 000000000..89458eacd Binary files /dev/null and b/public/terrain/19/858574/353889.terrain differ diff --git a/public/terrain/19/858574/353890.terrain b/public/terrain/19/858574/353890.terrain new file mode 100644 index 000000000..297422d92 Binary files /dev/null and b/public/terrain/19/858574/353890.terrain differ diff --git a/public/terrain/19/858574/353891.terrain b/public/terrain/19/858574/353891.terrain new file mode 100644 index 000000000..47964cd22 Binary files /dev/null and b/public/terrain/19/858574/353891.terrain differ diff --git a/public/terrain/19/858574/353892.terrain b/public/terrain/19/858574/353892.terrain new file mode 100644 index 000000000..dfe222d02 Binary files /dev/null and b/public/terrain/19/858574/353892.terrain differ diff --git a/public/terrain/19/858574/353893.terrain b/public/terrain/19/858574/353893.terrain new file mode 100644 index 000000000..f6d013808 Binary files /dev/null and b/public/terrain/19/858574/353893.terrain differ diff --git a/public/terrain/19/858574/353894.terrain b/public/terrain/19/858574/353894.terrain new file mode 100644 index 000000000..69754b579 Binary files /dev/null and b/public/terrain/19/858574/353894.terrain differ diff --git a/public/terrain/19/858574/353895.terrain b/public/terrain/19/858574/353895.terrain new file mode 100644 index 000000000..b0d26dd1c Binary files /dev/null and b/public/terrain/19/858574/353895.terrain differ diff --git a/public/terrain/19/858574/353896.terrain b/public/terrain/19/858574/353896.terrain new file mode 100644 index 000000000..ea368d710 Binary files /dev/null and b/public/terrain/19/858574/353896.terrain differ diff --git a/public/terrain/19/858574/353897.terrain b/public/terrain/19/858574/353897.terrain new file mode 100644 index 000000000..3cfdbee18 Binary files /dev/null and b/public/terrain/19/858574/353897.terrain differ diff --git a/public/terrain/19/858574/353898.terrain b/public/terrain/19/858574/353898.terrain new file mode 100644 index 000000000..124454e9b Binary files /dev/null and b/public/terrain/19/858574/353898.terrain differ diff --git a/public/terrain/19/858574/353899.terrain b/public/terrain/19/858574/353899.terrain new file mode 100644 index 000000000..d1575aff8 Binary files /dev/null and b/public/terrain/19/858574/353899.terrain differ diff --git a/public/terrain/19/858574/353900.terrain b/public/terrain/19/858574/353900.terrain new file mode 100644 index 000000000..f7641362a Binary files /dev/null and b/public/terrain/19/858574/353900.terrain differ diff --git a/public/terrain/19/858574/353901.terrain b/public/terrain/19/858574/353901.terrain new file mode 100644 index 000000000..a6fb84f66 Binary files /dev/null and b/public/terrain/19/858574/353901.terrain differ diff --git a/public/terrain/19/858574/353902.terrain b/public/terrain/19/858574/353902.terrain new file mode 100644 index 000000000..0617e38fd Binary files /dev/null and b/public/terrain/19/858574/353902.terrain differ diff --git a/public/terrain/19/858574/353903.terrain b/public/terrain/19/858574/353903.terrain new file mode 100644 index 000000000..a963328ca Binary files /dev/null and b/public/terrain/19/858574/353903.terrain differ diff --git a/public/terrain/19/858574/353904.terrain b/public/terrain/19/858574/353904.terrain new file mode 100644 index 000000000..ecc78288e Binary files /dev/null and b/public/terrain/19/858574/353904.terrain differ diff --git a/public/terrain/19/858574/353905.terrain b/public/terrain/19/858574/353905.terrain new file mode 100644 index 000000000..732039c5a Binary files /dev/null and b/public/terrain/19/858574/353905.terrain differ diff --git a/public/terrain/19/858574/353906.terrain b/public/terrain/19/858574/353906.terrain new file mode 100644 index 000000000..f8656b8ca Binary files /dev/null and b/public/terrain/19/858574/353906.terrain differ diff --git a/public/terrain/19/858574/353907.terrain b/public/terrain/19/858574/353907.terrain new file mode 100644 index 000000000..da62b636e Binary files /dev/null and b/public/terrain/19/858574/353907.terrain differ diff --git a/public/terrain/19/858574/353908.terrain b/public/terrain/19/858574/353908.terrain new file mode 100644 index 000000000..b545a4599 Binary files /dev/null and b/public/terrain/19/858574/353908.terrain differ diff --git a/public/terrain/19/858574/353909.terrain b/public/terrain/19/858574/353909.terrain new file mode 100644 index 000000000..0affecefd Binary files /dev/null and b/public/terrain/19/858574/353909.terrain differ diff --git a/public/terrain/19/858574/353910.terrain b/public/terrain/19/858574/353910.terrain new file mode 100644 index 000000000..1edd2a9e5 Binary files /dev/null and b/public/terrain/19/858574/353910.terrain differ diff --git a/public/terrain/19/858574/353911.terrain b/public/terrain/19/858574/353911.terrain new file mode 100644 index 000000000..abaf892b1 Binary files /dev/null and b/public/terrain/19/858574/353911.terrain differ diff --git a/public/terrain/19/858574/353912.terrain b/public/terrain/19/858574/353912.terrain new file mode 100644 index 000000000..01b66ca18 Binary files /dev/null and b/public/terrain/19/858574/353912.terrain differ diff --git a/public/terrain/19/858574/353913.terrain b/public/terrain/19/858574/353913.terrain new file mode 100644 index 000000000..f0c5e0bcb Binary files /dev/null and b/public/terrain/19/858574/353913.terrain differ diff --git a/public/terrain/19/858574/353914.terrain b/public/terrain/19/858574/353914.terrain new file mode 100644 index 000000000..9eacf303a Binary files /dev/null and b/public/terrain/19/858574/353914.terrain differ diff --git a/public/terrain/19/858574/353915.terrain b/public/terrain/19/858574/353915.terrain new file mode 100644 index 000000000..ebee99e91 Binary files /dev/null and b/public/terrain/19/858574/353915.terrain differ diff --git a/public/terrain/19/858574/353916.terrain b/public/terrain/19/858574/353916.terrain new file mode 100644 index 000000000..ff90f7ea6 Binary files /dev/null and b/public/terrain/19/858574/353916.terrain differ diff --git a/public/terrain/19/858574/353917.terrain b/public/terrain/19/858574/353917.terrain new file mode 100644 index 000000000..5933a416d Binary files /dev/null and b/public/terrain/19/858574/353917.terrain differ diff --git a/public/terrain/19/858574/353918.terrain b/public/terrain/19/858574/353918.terrain new file mode 100644 index 000000000..bb0e868ed Binary files /dev/null and b/public/terrain/19/858574/353918.terrain differ diff --git a/public/terrain/19/858574/353919.terrain b/public/terrain/19/858574/353919.terrain new file mode 100644 index 000000000..f20897beb Binary files /dev/null and b/public/terrain/19/858574/353919.terrain differ diff --git a/public/terrain/19/858574/353920.terrain b/public/terrain/19/858574/353920.terrain new file mode 100644 index 000000000..92ee3a373 Binary files /dev/null and b/public/terrain/19/858574/353920.terrain differ diff --git a/public/terrain/19/858574/353921.terrain b/public/terrain/19/858574/353921.terrain new file mode 100644 index 000000000..7714d4fb6 Binary files /dev/null and b/public/terrain/19/858574/353921.terrain differ diff --git a/public/terrain/19/858574/353922.terrain b/public/terrain/19/858574/353922.terrain new file mode 100644 index 000000000..7d48db41a Binary files /dev/null and b/public/terrain/19/858574/353922.terrain differ diff --git a/public/terrain/19/858574/353923.terrain b/public/terrain/19/858574/353923.terrain new file mode 100644 index 000000000..2edd2ece4 Binary files /dev/null and b/public/terrain/19/858574/353923.terrain differ diff --git a/public/terrain/19/858574/353924.terrain b/public/terrain/19/858574/353924.terrain new file mode 100644 index 000000000..e1b80c86e Binary files /dev/null and b/public/terrain/19/858574/353924.terrain differ diff --git a/public/terrain/19/858574/353925.terrain b/public/terrain/19/858574/353925.terrain new file mode 100644 index 000000000..53ce248e5 Binary files /dev/null and b/public/terrain/19/858574/353925.terrain differ diff --git a/public/terrain/19/858574/353926.terrain b/public/terrain/19/858574/353926.terrain new file mode 100644 index 000000000..646486147 Binary files /dev/null and b/public/terrain/19/858574/353926.terrain differ diff --git a/public/terrain/19/858574/353927.terrain b/public/terrain/19/858574/353927.terrain new file mode 100644 index 000000000..07f76fed0 Binary files /dev/null and b/public/terrain/19/858574/353927.terrain differ diff --git a/public/terrain/19/858574/353928.terrain b/public/terrain/19/858574/353928.terrain new file mode 100644 index 000000000..448d06f0b Binary files /dev/null and b/public/terrain/19/858574/353928.terrain differ diff --git a/public/terrain/19/858574/353929.terrain b/public/terrain/19/858574/353929.terrain new file mode 100644 index 000000000..a2459c117 Binary files /dev/null and b/public/terrain/19/858574/353929.terrain differ diff --git a/public/terrain/19/858574/353930.terrain b/public/terrain/19/858574/353930.terrain new file mode 100644 index 000000000..cef31331d Binary files /dev/null and b/public/terrain/19/858574/353930.terrain differ diff --git a/public/terrain/19/858574/353931.terrain b/public/terrain/19/858574/353931.terrain new file mode 100644 index 000000000..7527ad2cf Binary files /dev/null and b/public/terrain/19/858574/353931.terrain differ diff --git a/public/terrain/19/858574/353932.terrain b/public/terrain/19/858574/353932.terrain new file mode 100644 index 000000000..29f573101 Binary files /dev/null and b/public/terrain/19/858574/353932.terrain differ diff --git a/public/terrain/19/858574/353933.terrain b/public/terrain/19/858574/353933.terrain new file mode 100644 index 000000000..90bb34dde Binary files /dev/null and b/public/terrain/19/858574/353933.terrain differ diff --git a/public/terrain/19/858574/353934.terrain b/public/terrain/19/858574/353934.terrain new file mode 100644 index 000000000..8fd2722e3 Binary files /dev/null and b/public/terrain/19/858574/353934.terrain differ diff --git a/public/terrain/19/858574/353935.terrain b/public/terrain/19/858574/353935.terrain new file mode 100644 index 000000000..5cdb9caeb Binary files /dev/null and b/public/terrain/19/858574/353935.terrain differ diff --git a/public/terrain/19/858574/353936.terrain b/public/terrain/19/858574/353936.terrain new file mode 100644 index 000000000..30caf7424 Binary files /dev/null and b/public/terrain/19/858574/353936.terrain differ diff --git a/public/terrain/19/858574/353937.terrain b/public/terrain/19/858574/353937.terrain new file mode 100644 index 000000000..fa116555e Binary files /dev/null and b/public/terrain/19/858574/353937.terrain differ diff --git a/public/terrain/19/858574/353938.terrain b/public/terrain/19/858574/353938.terrain new file mode 100644 index 000000000..9506ad835 Binary files /dev/null and b/public/terrain/19/858574/353938.terrain differ diff --git a/public/terrain/19/858574/353939.terrain b/public/terrain/19/858574/353939.terrain new file mode 100644 index 000000000..1cf209435 Binary files /dev/null and b/public/terrain/19/858574/353939.terrain differ diff --git a/public/terrain/19/858574/353940.terrain b/public/terrain/19/858574/353940.terrain new file mode 100644 index 000000000..00f205528 Binary files /dev/null and b/public/terrain/19/858574/353940.terrain differ diff --git a/public/terrain/19/858574/353941.terrain b/public/terrain/19/858574/353941.terrain new file mode 100644 index 000000000..8670e7b6d Binary files /dev/null and b/public/terrain/19/858574/353941.terrain differ diff --git a/public/terrain/19/858574/353942.terrain b/public/terrain/19/858574/353942.terrain new file mode 100644 index 000000000..af5078cd4 Binary files /dev/null and b/public/terrain/19/858574/353942.terrain differ diff --git a/public/terrain/19/858574/353943.terrain b/public/terrain/19/858574/353943.terrain new file mode 100644 index 000000000..d4730afad Binary files /dev/null and b/public/terrain/19/858574/353943.terrain differ diff --git a/public/terrain/19/858574/353944.terrain b/public/terrain/19/858574/353944.terrain new file mode 100644 index 000000000..36865bc0f Binary files /dev/null and b/public/terrain/19/858574/353944.terrain differ diff --git a/public/terrain/19/858574/353945.terrain b/public/terrain/19/858574/353945.terrain new file mode 100644 index 000000000..aaeb47d8f Binary files /dev/null and b/public/terrain/19/858574/353945.terrain differ diff --git a/public/terrain/19/858574/353946.terrain b/public/terrain/19/858574/353946.terrain new file mode 100644 index 000000000..b6ab6075c Binary files /dev/null and b/public/terrain/19/858574/353946.terrain differ diff --git a/public/terrain/19/858574/353947.terrain b/public/terrain/19/858574/353947.terrain new file mode 100644 index 000000000..76ea638a7 Binary files /dev/null and b/public/terrain/19/858574/353947.terrain differ diff --git a/public/terrain/19/858574/353948.terrain b/public/terrain/19/858574/353948.terrain new file mode 100644 index 000000000..506e41b64 Binary files /dev/null and b/public/terrain/19/858574/353948.terrain differ diff --git a/public/terrain/19/858574/353949.terrain b/public/terrain/19/858574/353949.terrain new file mode 100644 index 000000000..b33495533 Binary files /dev/null and b/public/terrain/19/858574/353949.terrain differ diff --git a/public/terrain/19/858574/353950.terrain b/public/terrain/19/858574/353950.terrain new file mode 100644 index 000000000..99f28b923 Binary files /dev/null and b/public/terrain/19/858574/353950.terrain differ diff --git a/public/terrain/19/858574/353951.terrain b/public/terrain/19/858574/353951.terrain new file mode 100644 index 000000000..487da6127 Binary files /dev/null and b/public/terrain/19/858574/353951.terrain differ diff --git a/public/terrain/19/858574/353952.terrain b/public/terrain/19/858574/353952.terrain new file mode 100644 index 000000000..7ff414941 Binary files /dev/null and b/public/terrain/19/858574/353952.terrain differ diff --git a/public/terrain/19/858574/353953.terrain b/public/terrain/19/858574/353953.terrain new file mode 100644 index 000000000..1b23259d8 Binary files /dev/null and b/public/terrain/19/858574/353953.terrain differ diff --git a/public/terrain/19/858574/353954.terrain b/public/terrain/19/858574/353954.terrain new file mode 100644 index 000000000..d43d70021 Binary files /dev/null and b/public/terrain/19/858574/353954.terrain differ diff --git a/public/terrain/19/858574/353955.terrain b/public/terrain/19/858574/353955.terrain new file mode 100644 index 000000000..cbe7a47c2 Binary files /dev/null and b/public/terrain/19/858574/353955.terrain differ diff --git a/public/terrain/19/858574/353956.terrain b/public/terrain/19/858574/353956.terrain new file mode 100644 index 000000000..595d86f8c Binary files /dev/null and b/public/terrain/19/858574/353956.terrain differ diff --git a/public/terrain/19/858574/353957.terrain b/public/terrain/19/858574/353957.terrain new file mode 100644 index 000000000..f08728f23 Binary files /dev/null and b/public/terrain/19/858574/353957.terrain differ diff --git a/public/terrain/19/858574/353958.terrain b/public/terrain/19/858574/353958.terrain new file mode 100644 index 000000000..7bdde01e6 Binary files /dev/null and b/public/terrain/19/858574/353958.terrain differ diff --git a/public/terrain/19/858574/353959.terrain b/public/terrain/19/858574/353959.terrain new file mode 100644 index 000000000..a8cf9b02e Binary files /dev/null and b/public/terrain/19/858574/353959.terrain differ diff --git a/public/terrain/19/858574/353960.terrain b/public/terrain/19/858574/353960.terrain new file mode 100644 index 000000000..82b8711d8 Binary files /dev/null and b/public/terrain/19/858574/353960.terrain differ diff --git a/public/terrain/19/858574/353961.terrain b/public/terrain/19/858574/353961.terrain new file mode 100644 index 000000000..90cf3ed31 Binary files /dev/null and b/public/terrain/19/858574/353961.terrain differ diff --git a/public/terrain/19/858574/353962.terrain b/public/terrain/19/858574/353962.terrain new file mode 100644 index 000000000..207b77f52 Binary files /dev/null and b/public/terrain/19/858574/353962.terrain differ diff --git a/public/terrain/19/858574/353963.terrain b/public/terrain/19/858574/353963.terrain new file mode 100644 index 000000000..e07fa9c54 Binary files /dev/null and b/public/terrain/19/858574/353963.terrain differ diff --git a/public/terrain/19/858574/353964.terrain b/public/terrain/19/858574/353964.terrain new file mode 100644 index 000000000..49857e208 Binary files /dev/null and b/public/terrain/19/858574/353964.terrain differ diff --git a/public/terrain/19/858574/353965.terrain b/public/terrain/19/858574/353965.terrain new file mode 100644 index 000000000..d410cd250 Binary files /dev/null and b/public/terrain/19/858574/353965.terrain differ diff --git a/public/terrain/19/858574/353966.terrain b/public/terrain/19/858574/353966.terrain new file mode 100644 index 000000000..a61bbb794 Binary files /dev/null and b/public/terrain/19/858574/353966.terrain differ diff --git a/public/terrain/19/858574/353967.terrain b/public/terrain/19/858574/353967.terrain new file mode 100644 index 000000000..80544ba1f Binary files /dev/null and b/public/terrain/19/858574/353967.terrain differ diff --git a/public/terrain/19/858574/353968.terrain b/public/terrain/19/858574/353968.terrain new file mode 100644 index 000000000..3448de5b0 Binary files /dev/null and b/public/terrain/19/858574/353968.terrain differ diff --git a/public/terrain/19/858574/353969.terrain b/public/terrain/19/858574/353969.terrain new file mode 100644 index 000000000..664e496de Binary files /dev/null and b/public/terrain/19/858574/353969.terrain differ diff --git a/public/terrain/19/858574/353970.terrain b/public/terrain/19/858574/353970.terrain new file mode 100644 index 000000000..d450388ed Binary files /dev/null and b/public/terrain/19/858574/353970.terrain differ diff --git a/public/terrain/19/858574/353971.terrain b/public/terrain/19/858574/353971.terrain new file mode 100644 index 000000000..6d0a88aa9 Binary files /dev/null and b/public/terrain/19/858574/353971.terrain differ diff --git a/public/terrain/19/858574/353972.terrain b/public/terrain/19/858574/353972.terrain new file mode 100644 index 000000000..8c56dfc54 Binary files /dev/null and b/public/terrain/19/858574/353972.terrain differ diff --git a/public/terrain/19/858574/353973.terrain b/public/terrain/19/858574/353973.terrain new file mode 100644 index 000000000..923d82a31 Binary files /dev/null and b/public/terrain/19/858574/353973.terrain differ diff --git a/public/terrain/19/858574/353974.terrain b/public/terrain/19/858574/353974.terrain new file mode 100644 index 000000000..f8dc7c94e Binary files /dev/null and b/public/terrain/19/858574/353974.terrain differ diff --git a/public/terrain/19/858574/353975.terrain b/public/terrain/19/858574/353975.terrain new file mode 100644 index 000000000..2acdde310 Binary files /dev/null and b/public/terrain/19/858574/353975.terrain differ diff --git a/public/terrain/19/858574/353976.terrain b/public/terrain/19/858574/353976.terrain new file mode 100644 index 000000000..abd85f4cb Binary files /dev/null and b/public/terrain/19/858574/353976.terrain differ diff --git a/public/terrain/19/858574/353977.terrain b/public/terrain/19/858574/353977.terrain new file mode 100644 index 000000000..fcbe3d445 Binary files /dev/null and b/public/terrain/19/858574/353977.terrain differ diff --git a/public/terrain/19/858574/353978.terrain b/public/terrain/19/858574/353978.terrain new file mode 100644 index 000000000..5672597fd Binary files /dev/null and b/public/terrain/19/858574/353978.terrain differ diff --git a/public/terrain/19/858574/353979.terrain b/public/terrain/19/858574/353979.terrain new file mode 100644 index 000000000..5320ec0ad Binary files /dev/null and b/public/terrain/19/858574/353979.terrain differ diff --git a/public/terrain/19/858574/353980.terrain b/public/terrain/19/858574/353980.terrain new file mode 100644 index 000000000..77dbe2ea9 Binary files /dev/null and b/public/terrain/19/858574/353980.terrain differ diff --git a/public/terrain/19/858574/353981.terrain b/public/terrain/19/858574/353981.terrain new file mode 100644 index 000000000..db28db288 Binary files /dev/null and b/public/terrain/19/858574/353981.terrain differ diff --git a/public/terrain/19/858574/353982.terrain b/public/terrain/19/858574/353982.terrain new file mode 100644 index 000000000..66b2ce2d8 Binary files /dev/null and b/public/terrain/19/858574/353982.terrain differ diff --git a/public/terrain/19/858574/353983.terrain b/public/terrain/19/858574/353983.terrain new file mode 100644 index 000000000..6361ce985 Binary files /dev/null and b/public/terrain/19/858574/353983.terrain differ diff --git a/public/terrain/19/858574/353984.terrain b/public/terrain/19/858574/353984.terrain new file mode 100644 index 000000000..580e31508 Binary files /dev/null and b/public/terrain/19/858574/353984.terrain differ diff --git a/public/terrain/19/858574/353985.terrain b/public/terrain/19/858574/353985.terrain new file mode 100644 index 000000000..b9480e02d Binary files /dev/null and b/public/terrain/19/858574/353985.terrain differ diff --git a/public/terrain/19/858574/353986.terrain b/public/terrain/19/858574/353986.terrain new file mode 100644 index 000000000..95da9e9f8 Binary files /dev/null and b/public/terrain/19/858574/353986.terrain differ diff --git a/public/terrain/19/858574/353987.terrain b/public/terrain/19/858574/353987.terrain new file mode 100644 index 000000000..4cb6ac81e Binary files /dev/null and b/public/terrain/19/858574/353987.terrain differ diff --git a/public/terrain/19/858574/353988.terrain b/public/terrain/19/858574/353988.terrain new file mode 100644 index 000000000..7a38a3cef Binary files /dev/null and b/public/terrain/19/858574/353988.terrain differ diff --git a/public/terrain/19/858574/353989.terrain b/public/terrain/19/858574/353989.terrain new file mode 100644 index 000000000..d65b846ba Binary files /dev/null and b/public/terrain/19/858574/353989.terrain differ diff --git a/public/terrain/19/858574/353990.terrain b/public/terrain/19/858574/353990.terrain new file mode 100644 index 000000000..1b35eb24b Binary files /dev/null and b/public/terrain/19/858574/353990.terrain differ diff --git a/public/terrain/19/858574/353991.terrain b/public/terrain/19/858574/353991.terrain new file mode 100644 index 000000000..878979073 Binary files /dev/null and b/public/terrain/19/858574/353991.terrain differ diff --git a/public/terrain/19/858574/353992.terrain b/public/terrain/19/858574/353992.terrain new file mode 100644 index 000000000..02f323c24 Binary files /dev/null and b/public/terrain/19/858574/353992.terrain differ diff --git a/public/terrain/19/858574/353993.terrain b/public/terrain/19/858574/353993.terrain new file mode 100644 index 000000000..72775e652 Binary files /dev/null and b/public/terrain/19/858574/353993.terrain differ diff --git a/public/terrain/19/858574/353994.terrain b/public/terrain/19/858574/353994.terrain new file mode 100644 index 000000000..ab20d793d Binary files /dev/null and b/public/terrain/19/858574/353994.terrain differ diff --git a/public/terrain/19/858574/353995.terrain b/public/terrain/19/858574/353995.terrain new file mode 100644 index 000000000..d1acc471d Binary files /dev/null and b/public/terrain/19/858574/353995.terrain differ diff --git a/public/terrain/19/858574/353996.terrain b/public/terrain/19/858574/353996.terrain new file mode 100644 index 000000000..0821c837a Binary files /dev/null and b/public/terrain/19/858574/353996.terrain differ diff --git a/public/terrain/19/858574/353997.terrain b/public/terrain/19/858574/353997.terrain new file mode 100644 index 000000000..6d2965653 Binary files /dev/null and b/public/terrain/19/858574/353997.terrain differ diff --git a/public/terrain/19/858574/353998.terrain b/public/terrain/19/858574/353998.terrain new file mode 100644 index 000000000..eabd4d49c Binary files /dev/null and b/public/terrain/19/858574/353998.terrain differ diff --git a/public/terrain/19/858574/353999.terrain b/public/terrain/19/858574/353999.terrain new file mode 100644 index 000000000..1498b68c5 Binary files /dev/null and b/public/terrain/19/858574/353999.terrain differ diff --git a/public/terrain/19/858574/354000.terrain b/public/terrain/19/858574/354000.terrain new file mode 100644 index 000000000..666ba86ab Binary files /dev/null and b/public/terrain/19/858574/354000.terrain differ diff --git a/public/terrain/19/858574/354001.terrain b/public/terrain/19/858574/354001.terrain new file mode 100644 index 000000000..bf8087208 Binary files /dev/null and b/public/terrain/19/858574/354001.terrain differ diff --git a/public/terrain/19/858574/354002.terrain b/public/terrain/19/858574/354002.terrain new file mode 100644 index 000000000..6f875c18f Binary files /dev/null and b/public/terrain/19/858574/354002.terrain differ diff --git a/public/terrain/19/858574/354003.terrain b/public/terrain/19/858574/354003.terrain new file mode 100644 index 000000000..91c3490e6 Binary files /dev/null and b/public/terrain/19/858574/354003.terrain differ diff --git a/public/terrain/19/858574/354004.terrain b/public/terrain/19/858574/354004.terrain new file mode 100644 index 000000000..273fc7ebe Binary files /dev/null and b/public/terrain/19/858574/354004.terrain differ diff --git a/public/terrain/19/858574/354005.terrain b/public/terrain/19/858574/354005.terrain new file mode 100644 index 000000000..72ea770c1 Binary files /dev/null and b/public/terrain/19/858574/354005.terrain differ diff --git a/public/terrain/19/858574/354006.terrain b/public/terrain/19/858574/354006.terrain new file mode 100644 index 000000000..77770f4b9 Binary files /dev/null and b/public/terrain/19/858574/354006.terrain differ diff --git a/public/terrain/19/858574/354007.terrain b/public/terrain/19/858574/354007.terrain new file mode 100644 index 000000000..9fa0afc11 Binary files /dev/null and b/public/terrain/19/858574/354007.terrain differ diff --git a/public/terrain/19/858574/354008.terrain b/public/terrain/19/858574/354008.terrain new file mode 100644 index 000000000..7b0fe9b89 Binary files /dev/null and b/public/terrain/19/858574/354008.terrain differ diff --git a/public/terrain/19/858574/354009.terrain b/public/terrain/19/858574/354009.terrain new file mode 100644 index 000000000..8835f1f4e Binary files /dev/null and b/public/terrain/19/858574/354009.terrain differ diff --git a/public/terrain/19/858574/354010.terrain b/public/terrain/19/858574/354010.terrain new file mode 100644 index 000000000..175674dd7 Binary files /dev/null and b/public/terrain/19/858574/354010.terrain differ diff --git a/public/terrain/19/858574/354011.terrain b/public/terrain/19/858574/354011.terrain new file mode 100644 index 000000000..ff9135ca3 Binary files /dev/null and b/public/terrain/19/858574/354011.terrain differ diff --git a/public/terrain/19/858574/354012.terrain b/public/terrain/19/858574/354012.terrain new file mode 100644 index 000000000..dc876c5fe Binary files /dev/null and b/public/terrain/19/858574/354012.terrain differ diff --git a/public/terrain/19/858574/354013.terrain b/public/terrain/19/858574/354013.terrain new file mode 100644 index 000000000..b36ca9c2f Binary files /dev/null and b/public/terrain/19/858574/354013.terrain differ diff --git a/public/terrain/19/858574/354014.terrain b/public/terrain/19/858574/354014.terrain new file mode 100644 index 000000000..ffc7594c3 Binary files /dev/null and b/public/terrain/19/858574/354014.terrain differ diff --git a/public/terrain/19/858574/354015.terrain b/public/terrain/19/858574/354015.terrain new file mode 100644 index 000000000..afe2c8429 Binary files /dev/null and b/public/terrain/19/858574/354015.terrain differ diff --git a/public/terrain/19/858574/354016.terrain b/public/terrain/19/858574/354016.terrain new file mode 100644 index 000000000..6737e11c3 Binary files /dev/null and b/public/terrain/19/858574/354016.terrain differ diff --git a/public/terrain/19/858574/354017.terrain b/public/terrain/19/858574/354017.terrain new file mode 100644 index 000000000..aab1dca78 Binary files /dev/null and b/public/terrain/19/858574/354017.terrain differ diff --git a/public/terrain/19/858574/354018.terrain b/public/terrain/19/858574/354018.terrain new file mode 100644 index 000000000..b3dc2fe01 Binary files /dev/null and b/public/terrain/19/858574/354018.terrain differ diff --git a/public/terrain/19/858574/354019.terrain b/public/terrain/19/858574/354019.terrain new file mode 100644 index 000000000..f3a24b71e Binary files /dev/null and b/public/terrain/19/858574/354019.terrain differ diff --git a/public/terrain/19/858574/354020.terrain b/public/terrain/19/858574/354020.terrain new file mode 100644 index 000000000..35f1bfa16 Binary files /dev/null and b/public/terrain/19/858574/354020.terrain differ diff --git a/public/terrain/19/858574/354021.terrain b/public/terrain/19/858574/354021.terrain new file mode 100644 index 000000000..86336d897 Binary files /dev/null and b/public/terrain/19/858574/354021.terrain differ diff --git a/public/terrain/19/858574/354022.terrain b/public/terrain/19/858574/354022.terrain new file mode 100644 index 000000000..0c9ab94b5 Binary files /dev/null and b/public/terrain/19/858574/354022.terrain differ diff --git a/public/terrain/19/858574/354023.terrain b/public/terrain/19/858574/354023.terrain new file mode 100644 index 000000000..d4ffab85a Binary files /dev/null and b/public/terrain/19/858574/354023.terrain differ diff --git a/public/terrain/19/858574/354024.terrain b/public/terrain/19/858574/354024.terrain new file mode 100644 index 000000000..a4f368797 Binary files /dev/null and b/public/terrain/19/858574/354024.terrain differ diff --git a/public/terrain/19/858574/354025.terrain b/public/terrain/19/858574/354025.terrain new file mode 100644 index 000000000..38ffdd24c Binary files /dev/null and b/public/terrain/19/858574/354025.terrain differ diff --git a/public/terrain/19/858574/354026.terrain b/public/terrain/19/858574/354026.terrain new file mode 100644 index 000000000..e4aabca57 Binary files /dev/null and b/public/terrain/19/858574/354026.terrain differ diff --git a/public/terrain/19/858574/354027.terrain b/public/terrain/19/858574/354027.terrain new file mode 100644 index 000000000..52028ca8b Binary files /dev/null and b/public/terrain/19/858574/354027.terrain differ diff --git a/public/terrain/19/858574/354028.terrain b/public/terrain/19/858574/354028.terrain new file mode 100644 index 000000000..a46b03229 Binary files /dev/null and b/public/terrain/19/858574/354028.terrain differ diff --git a/public/terrain/19/858574/354029.terrain b/public/terrain/19/858574/354029.terrain new file mode 100644 index 000000000..b36e76560 Binary files /dev/null and b/public/terrain/19/858574/354029.terrain differ diff --git a/public/terrain/19/858574/354030.terrain b/public/terrain/19/858574/354030.terrain new file mode 100644 index 000000000..ff42730e5 Binary files /dev/null and b/public/terrain/19/858574/354030.terrain differ diff --git a/public/terrain/19/858574/354031.terrain b/public/terrain/19/858574/354031.terrain new file mode 100644 index 000000000..1be7463a9 Binary files /dev/null and b/public/terrain/19/858574/354031.terrain differ diff --git a/public/terrain/19/858574/354032.terrain b/public/terrain/19/858574/354032.terrain new file mode 100644 index 000000000..83727f625 Binary files /dev/null and b/public/terrain/19/858574/354032.terrain differ diff --git a/public/terrain/19/858574/354033.terrain b/public/terrain/19/858574/354033.terrain new file mode 100644 index 000000000..c933cc83e Binary files /dev/null and b/public/terrain/19/858574/354033.terrain differ diff --git a/public/terrain/19/858574/354034.terrain b/public/terrain/19/858574/354034.terrain new file mode 100644 index 000000000..f043ea2cf Binary files /dev/null and b/public/terrain/19/858574/354034.terrain differ diff --git a/public/terrain/19/858574/354035.terrain b/public/terrain/19/858574/354035.terrain new file mode 100644 index 000000000..e05890a32 Binary files /dev/null and b/public/terrain/19/858574/354035.terrain differ diff --git a/public/terrain/19/858574/354036.terrain b/public/terrain/19/858574/354036.terrain new file mode 100644 index 000000000..5a1c63602 Binary files /dev/null and b/public/terrain/19/858574/354036.terrain differ diff --git a/public/terrain/19/858574/354037.terrain b/public/terrain/19/858574/354037.terrain new file mode 100644 index 000000000..046d3d2a0 Binary files /dev/null and b/public/terrain/19/858574/354037.terrain differ diff --git a/public/terrain/19/858574/354038.terrain b/public/terrain/19/858574/354038.terrain new file mode 100644 index 000000000..b141d92e9 Binary files /dev/null and b/public/terrain/19/858574/354038.terrain differ diff --git a/public/terrain/19/858574/354039.terrain b/public/terrain/19/858574/354039.terrain new file mode 100644 index 000000000..fcb72d1d9 Binary files /dev/null and b/public/terrain/19/858574/354039.terrain differ diff --git a/public/terrain/19/858574/354040.terrain b/public/terrain/19/858574/354040.terrain new file mode 100644 index 000000000..3e79dd366 Binary files /dev/null and b/public/terrain/19/858574/354040.terrain differ diff --git a/public/terrain/19/858574/354041.terrain b/public/terrain/19/858574/354041.terrain new file mode 100644 index 000000000..e8796daae Binary files /dev/null and b/public/terrain/19/858574/354041.terrain differ diff --git a/public/terrain/19/858574/354042.terrain b/public/terrain/19/858574/354042.terrain new file mode 100644 index 000000000..02f30c6a5 Binary files /dev/null and b/public/terrain/19/858574/354042.terrain differ diff --git a/public/terrain/19/858574/354043.terrain b/public/terrain/19/858574/354043.terrain new file mode 100644 index 000000000..137400a29 Binary files /dev/null and b/public/terrain/19/858574/354043.terrain differ diff --git a/public/terrain/19/858574/354044.terrain b/public/terrain/19/858574/354044.terrain new file mode 100644 index 000000000..1d6e2a103 Binary files /dev/null and b/public/terrain/19/858574/354044.terrain differ diff --git a/public/terrain/19/858574/354045.terrain b/public/terrain/19/858574/354045.terrain new file mode 100644 index 000000000..bfb8c0a39 Binary files /dev/null and b/public/terrain/19/858574/354045.terrain differ diff --git a/public/terrain/19/858574/354046.terrain b/public/terrain/19/858574/354046.terrain new file mode 100644 index 000000000..776d175db Binary files /dev/null and b/public/terrain/19/858574/354046.terrain differ diff --git a/public/terrain/19/858574/354047.terrain b/public/terrain/19/858574/354047.terrain new file mode 100644 index 000000000..bba2a5f65 Binary files /dev/null and b/public/terrain/19/858574/354047.terrain differ diff --git a/public/terrain/19/858574/354048.terrain b/public/terrain/19/858574/354048.terrain new file mode 100644 index 000000000..a972a3678 Binary files /dev/null and b/public/terrain/19/858574/354048.terrain differ diff --git a/public/terrain/19/858574/354049.terrain b/public/terrain/19/858574/354049.terrain new file mode 100644 index 000000000..ea0a992ca Binary files /dev/null and b/public/terrain/19/858574/354049.terrain differ diff --git a/public/terrain/19/858574/354050.terrain b/public/terrain/19/858574/354050.terrain new file mode 100644 index 000000000..a588e3f7a Binary files /dev/null and b/public/terrain/19/858574/354050.terrain differ diff --git a/public/terrain/19/858574/354051.terrain b/public/terrain/19/858574/354051.terrain new file mode 100644 index 000000000..0b47ad400 Binary files /dev/null and b/public/terrain/19/858574/354051.terrain differ diff --git a/public/terrain/19/858574/354052.terrain b/public/terrain/19/858574/354052.terrain new file mode 100644 index 000000000..076b5f92e Binary files /dev/null and b/public/terrain/19/858574/354052.terrain differ diff --git a/public/terrain/19/858574/354053.terrain b/public/terrain/19/858574/354053.terrain new file mode 100644 index 000000000..1ad43d00e Binary files /dev/null and b/public/terrain/19/858574/354053.terrain differ diff --git a/public/terrain/19/858574/354054.terrain b/public/terrain/19/858574/354054.terrain new file mode 100644 index 000000000..d4474e5e3 Binary files /dev/null and b/public/terrain/19/858574/354054.terrain differ diff --git a/public/terrain/19/858574/354055.terrain b/public/terrain/19/858574/354055.terrain new file mode 100644 index 000000000..9cb0bea8e Binary files /dev/null and b/public/terrain/19/858574/354055.terrain differ diff --git a/public/terrain/19/858574/354056.terrain b/public/terrain/19/858574/354056.terrain new file mode 100644 index 000000000..0af06e8dd Binary files /dev/null and b/public/terrain/19/858574/354056.terrain differ diff --git a/public/terrain/19/858574/354057.terrain b/public/terrain/19/858574/354057.terrain new file mode 100644 index 000000000..5f1893116 Binary files /dev/null and b/public/terrain/19/858574/354057.terrain differ diff --git a/public/terrain/19/858574/354058.terrain b/public/terrain/19/858574/354058.terrain new file mode 100644 index 000000000..459c3814a Binary files /dev/null and b/public/terrain/19/858574/354058.terrain differ diff --git a/public/terrain/19/858574/354059.terrain b/public/terrain/19/858574/354059.terrain new file mode 100644 index 000000000..8a8828eb6 Binary files /dev/null and b/public/terrain/19/858574/354059.terrain differ diff --git a/public/terrain/19/858575/353743.terrain b/public/terrain/19/858575/353743.terrain new file mode 100644 index 000000000..aa8680ffe Binary files /dev/null and b/public/terrain/19/858575/353743.terrain differ diff --git a/public/terrain/19/858575/353744.terrain b/public/terrain/19/858575/353744.terrain new file mode 100644 index 000000000..a71b7038a Binary files /dev/null and b/public/terrain/19/858575/353744.terrain differ diff --git a/public/terrain/19/858575/353745.terrain b/public/terrain/19/858575/353745.terrain new file mode 100644 index 000000000..7996a9131 Binary files /dev/null and b/public/terrain/19/858575/353745.terrain differ diff --git a/public/terrain/19/858575/353746.terrain b/public/terrain/19/858575/353746.terrain new file mode 100644 index 000000000..8fac2f706 Binary files /dev/null and b/public/terrain/19/858575/353746.terrain differ diff --git a/public/terrain/19/858575/353747.terrain b/public/terrain/19/858575/353747.terrain new file mode 100644 index 000000000..85e1fdc0a Binary files /dev/null and b/public/terrain/19/858575/353747.terrain differ diff --git a/public/terrain/19/858575/353748.terrain b/public/terrain/19/858575/353748.terrain new file mode 100644 index 000000000..4233b7ed0 Binary files /dev/null and b/public/terrain/19/858575/353748.terrain differ diff --git a/public/terrain/19/858575/353749.terrain b/public/terrain/19/858575/353749.terrain new file mode 100644 index 000000000..f640c1577 Binary files /dev/null and b/public/terrain/19/858575/353749.terrain differ diff --git a/public/terrain/19/858575/353750.terrain b/public/terrain/19/858575/353750.terrain new file mode 100644 index 000000000..e5b6f6a7a Binary files /dev/null and b/public/terrain/19/858575/353750.terrain differ diff --git a/public/terrain/19/858575/353751.terrain b/public/terrain/19/858575/353751.terrain new file mode 100644 index 000000000..b4512db7c Binary files /dev/null and b/public/terrain/19/858575/353751.terrain differ diff --git a/public/terrain/19/858575/353752.terrain b/public/terrain/19/858575/353752.terrain new file mode 100644 index 000000000..c11f84017 Binary files /dev/null and b/public/terrain/19/858575/353752.terrain differ diff --git a/public/terrain/19/858575/353753.terrain b/public/terrain/19/858575/353753.terrain new file mode 100644 index 000000000..0fb996c75 Binary files /dev/null and b/public/terrain/19/858575/353753.terrain differ diff --git a/public/terrain/19/858575/353754.terrain b/public/terrain/19/858575/353754.terrain new file mode 100644 index 000000000..2e5f778cf Binary files /dev/null and b/public/terrain/19/858575/353754.terrain differ diff --git a/public/terrain/19/858575/353755.terrain b/public/terrain/19/858575/353755.terrain new file mode 100644 index 000000000..68c376fc6 Binary files /dev/null and b/public/terrain/19/858575/353755.terrain differ diff --git a/public/terrain/19/858575/353756.terrain b/public/terrain/19/858575/353756.terrain new file mode 100644 index 000000000..a8bab9a24 Binary files /dev/null and b/public/terrain/19/858575/353756.terrain differ diff --git a/public/terrain/19/858575/353757.terrain b/public/terrain/19/858575/353757.terrain new file mode 100644 index 000000000..64f724eb7 Binary files /dev/null and b/public/terrain/19/858575/353757.terrain differ diff --git a/public/terrain/19/858575/353758.terrain b/public/terrain/19/858575/353758.terrain new file mode 100644 index 000000000..cfd651c42 Binary files /dev/null and b/public/terrain/19/858575/353758.terrain differ diff --git a/public/terrain/19/858575/353759.terrain b/public/terrain/19/858575/353759.terrain new file mode 100644 index 000000000..2b97c5879 Binary files /dev/null and b/public/terrain/19/858575/353759.terrain differ diff --git a/public/terrain/19/858575/353760.terrain b/public/terrain/19/858575/353760.terrain new file mode 100644 index 000000000..a2e644be7 Binary files /dev/null and b/public/terrain/19/858575/353760.terrain differ diff --git a/public/terrain/19/858575/353761.terrain b/public/terrain/19/858575/353761.terrain new file mode 100644 index 000000000..f4b98e592 Binary files /dev/null and b/public/terrain/19/858575/353761.terrain differ diff --git a/public/terrain/19/858575/353762.terrain b/public/terrain/19/858575/353762.terrain new file mode 100644 index 000000000..a0613de67 Binary files /dev/null and b/public/terrain/19/858575/353762.terrain differ diff --git a/public/terrain/19/858575/353763.terrain b/public/terrain/19/858575/353763.terrain new file mode 100644 index 000000000..ab0ebf2d7 Binary files /dev/null and b/public/terrain/19/858575/353763.terrain differ diff --git a/public/terrain/19/858575/353764.terrain b/public/terrain/19/858575/353764.terrain new file mode 100644 index 000000000..01690a6fa Binary files /dev/null and b/public/terrain/19/858575/353764.terrain differ diff --git a/public/terrain/19/858575/353765.terrain b/public/terrain/19/858575/353765.terrain new file mode 100644 index 000000000..f34a27f40 Binary files /dev/null and b/public/terrain/19/858575/353765.terrain differ diff --git a/public/terrain/19/858575/353766.terrain b/public/terrain/19/858575/353766.terrain new file mode 100644 index 000000000..33055fc8a Binary files /dev/null and b/public/terrain/19/858575/353766.terrain differ diff --git a/public/terrain/19/858575/353767.terrain b/public/terrain/19/858575/353767.terrain new file mode 100644 index 000000000..b85e8f94e Binary files /dev/null and b/public/terrain/19/858575/353767.terrain differ diff --git a/public/terrain/19/858575/353768.terrain b/public/terrain/19/858575/353768.terrain new file mode 100644 index 000000000..655ee6abb Binary files /dev/null and b/public/terrain/19/858575/353768.terrain differ diff --git a/public/terrain/19/858575/353769.terrain b/public/terrain/19/858575/353769.terrain new file mode 100644 index 000000000..c504ed732 Binary files /dev/null and b/public/terrain/19/858575/353769.terrain differ diff --git a/public/terrain/19/858575/353770.terrain b/public/terrain/19/858575/353770.terrain new file mode 100644 index 000000000..953d5fac1 Binary files /dev/null and b/public/terrain/19/858575/353770.terrain differ diff --git a/public/terrain/19/858575/353771.terrain b/public/terrain/19/858575/353771.terrain new file mode 100644 index 000000000..8470e5eb9 Binary files /dev/null and b/public/terrain/19/858575/353771.terrain differ diff --git a/public/terrain/19/858575/353772.terrain b/public/terrain/19/858575/353772.terrain new file mode 100644 index 000000000..3e9725df2 Binary files /dev/null and b/public/terrain/19/858575/353772.terrain differ diff --git a/public/terrain/19/858575/353773.terrain b/public/terrain/19/858575/353773.terrain new file mode 100644 index 000000000..f5e4d91dc Binary files /dev/null and b/public/terrain/19/858575/353773.terrain differ diff --git a/public/terrain/19/858575/353774.terrain b/public/terrain/19/858575/353774.terrain new file mode 100644 index 000000000..a92296800 Binary files /dev/null and b/public/terrain/19/858575/353774.terrain differ diff --git a/public/terrain/19/858575/353775.terrain b/public/terrain/19/858575/353775.terrain new file mode 100644 index 000000000..5e9911b3d Binary files /dev/null and b/public/terrain/19/858575/353775.terrain differ diff --git a/public/terrain/19/858575/353776.terrain b/public/terrain/19/858575/353776.terrain new file mode 100644 index 000000000..e757f4a54 Binary files /dev/null and b/public/terrain/19/858575/353776.terrain differ diff --git a/public/terrain/19/858575/353777.terrain b/public/terrain/19/858575/353777.terrain new file mode 100644 index 000000000..b7334c14c Binary files /dev/null and b/public/terrain/19/858575/353777.terrain differ diff --git a/public/terrain/19/858575/353778.terrain b/public/terrain/19/858575/353778.terrain new file mode 100644 index 000000000..4b164fb47 Binary files /dev/null and b/public/terrain/19/858575/353778.terrain differ diff --git a/public/terrain/19/858575/353779.terrain b/public/terrain/19/858575/353779.terrain new file mode 100644 index 000000000..f3a6ef01e Binary files /dev/null and b/public/terrain/19/858575/353779.terrain differ diff --git a/public/terrain/19/858575/353780.terrain b/public/terrain/19/858575/353780.terrain new file mode 100644 index 000000000..7d122eaff Binary files /dev/null and b/public/terrain/19/858575/353780.terrain differ diff --git a/public/terrain/19/858575/353781.terrain b/public/terrain/19/858575/353781.terrain new file mode 100644 index 000000000..1966c6c8e Binary files /dev/null and b/public/terrain/19/858575/353781.terrain differ diff --git a/public/terrain/19/858575/353782.terrain b/public/terrain/19/858575/353782.terrain new file mode 100644 index 000000000..9fc8a8ca7 Binary files /dev/null and b/public/terrain/19/858575/353782.terrain differ diff --git a/public/terrain/19/858575/353783.terrain b/public/terrain/19/858575/353783.terrain new file mode 100644 index 000000000..ca9fd92fb Binary files /dev/null and b/public/terrain/19/858575/353783.terrain differ diff --git a/public/terrain/19/858575/353784.terrain b/public/terrain/19/858575/353784.terrain new file mode 100644 index 000000000..fde8ecb83 Binary files /dev/null and b/public/terrain/19/858575/353784.terrain differ diff --git a/public/terrain/19/858575/353785.terrain b/public/terrain/19/858575/353785.terrain new file mode 100644 index 000000000..b2b64dde4 Binary files /dev/null and b/public/terrain/19/858575/353785.terrain differ diff --git a/public/terrain/19/858575/353786.terrain b/public/terrain/19/858575/353786.terrain new file mode 100644 index 000000000..031faa796 Binary files /dev/null and b/public/terrain/19/858575/353786.terrain differ diff --git a/public/terrain/19/858575/353787.terrain b/public/terrain/19/858575/353787.terrain new file mode 100644 index 000000000..2dc4882e6 Binary files /dev/null and b/public/terrain/19/858575/353787.terrain differ diff --git a/public/terrain/19/858575/353788.terrain b/public/terrain/19/858575/353788.terrain new file mode 100644 index 000000000..8a988c39d Binary files /dev/null and b/public/terrain/19/858575/353788.terrain differ diff --git a/public/terrain/19/858575/353789.terrain b/public/terrain/19/858575/353789.terrain new file mode 100644 index 000000000..43b754d35 Binary files /dev/null and b/public/terrain/19/858575/353789.terrain differ diff --git a/public/terrain/19/858575/353790.terrain b/public/terrain/19/858575/353790.terrain new file mode 100644 index 000000000..5e107e5ee Binary files /dev/null and b/public/terrain/19/858575/353790.terrain differ diff --git a/public/terrain/19/858575/353791.terrain b/public/terrain/19/858575/353791.terrain new file mode 100644 index 000000000..9cccf4026 Binary files /dev/null and b/public/terrain/19/858575/353791.terrain differ diff --git a/public/terrain/19/858575/353792.terrain b/public/terrain/19/858575/353792.terrain new file mode 100644 index 000000000..fc12c7a82 Binary files /dev/null and b/public/terrain/19/858575/353792.terrain differ diff --git a/public/terrain/19/858575/353793.terrain b/public/terrain/19/858575/353793.terrain new file mode 100644 index 000000000..b1f8d9c7b Binary files /dev/null and b/public/terrain/19/858575/353793.terrain differ diff --git a/public/terrain/19/858575/353794.terrain b/public/terrain/19/858575/353794.terrain new file mode 100644 index 000000000..ae71e8bb2 Binary files /dev/null and b/public/terrain/19/858575/353794.terrain differ diff --git a/public/terrain/19/858575/353795.terrain b/public/terrain/19/858575/353795.terrain new file mode 100644 index 000000000..282bfe7e9 Binary files /dev/null and b/public/terrain/19/858575/353795.terrain differ diff --git a/public/terrain/19/858575/353796.terrain b/public/terrain/19/858575/353796.terrain new file mode 100644 index 000000000..0e36d076f Binary files /dev/null and b/public/terrain/19/858575/353796.terrain differ diff --git a/public/terrain/19/858575/353797.terrain b/public/terrain/19/858575/353797.terrain new file mode 100644 index 000000000..62515d6a4 Binary files /dev/null and b/public/terrain/19/858575/353797.terrain differ diff --git a/public/terrain/19/858575/353798.terrain b/public/terrain/19/858575/353798.terrain new file mode 100644 index 000000000..2fd205df5 Binary files /dev/null and b/public/terrain/19/858575/353798.terrain differ diff --git a/public/terrain/19/858575/353799.terrain b/public/terrain/19/858575/353799.terrain new file mode 100644 index 000000000..1dfd5ba50 Binary files /dev/null and b/public/terrain/19/858575/353799.terrain differ diff --git a/public/terrain/19/858575/353800.terrain b/public/terrain/19/858575/353800.terrain new file mode 100644 index 000000000..8c9b2260e Binary files /dev/null and b/public/terrain/19/858575/353800.terrain differ diff --git a/public/terrain/19/858575/353801.terrain b/public/terrain/19/858575/353801.terrain new file mode 100644 index 000000000..d172a8dad Binary files /dev/null and b/public/terrain/19/858575/353801.terrain differ diff --git a/public/terrain/19/858575/353802.terrain b/public/terrain/19/858575/353802.terrain new file mode 100644 index 000000000..f4a513f9b Binary files /dev/null and b/public/terrain/19/858575/353802.terrain differ diff --git a/public/terrain/19/858575/353803.terrain b/public/terrain/19/858575/353803.terrain new file mode 100644 index 000000000..8b19ef924 Binary files /dev/null and b/public/terrain/19/858575/353803.terrain differ diff --git a/public/terrain/19/858575/353804.terrain b/public/terrain/19/858575/353804.terrain new file mode 100644 index 000000000..da1c89526 Binary files /dev/null and b/public/terrain/19/858575/353804.terrain differ diff --git a/public/terrain/19/858575/353805.terrain b/public/terrain/19/858575/353805.terrain new file mode 100644 index 000000000..c3f49306f Binary files /dev/null and b/public/terrain/19/858575/353805.terrain differ diff --git a/public/terrain/19/858575/353806.terrain b/public/terrain/19/858575/353806.terrain new file mode 100644 index 000000000..f251c5025 Binary files /dev/null and b/public/terrain/19/858575/353806.terrain differ diff --git a/public/terrain/19/858575/353807.terrain b/public/terrain/19/858575/353807.terrain new file mode 100644 index 000000000..de0120631 Binary files /dev/null and b/public/terrain/19/858575/353807.terrain differ diff --git a/public/terrain/19/858575/353808.terrain b/public/terrain/19/858575/353808.terrain new file mode 100644 index 000000000..a34574bab Binary files /dev/null and b/public/terrain/19/858575/353808.terrain differ diff --git a/public/terrain/19/858575/353809.terrain b/public/terrain/19/858575/353809.terrain new file mode 100644 index 000000000..778ab8d1f Binary files /dev/null and b/public/terrain/19/858575/353809.terrain differ diff --git a/public/terrain/19/858575/353810.terrain b/public/terrain/19/858575/353810.terrain new file mode 100644 index 000000000..0ab320436 Binary files /dev/null and b/public/terrain/19/858575/353810.terrain differ diff --git a/public/terrain/19/858575/353811.terrain b/public/terrain/19/858575/353811.terrain new file mode 100644 index 000000000..b8a544bde Binary files /dev/null and b/public/terrain/19/858575/353811.terrain differ diff --git a/public/terrain/19/858575/353812.terrain b/public/terrain/19/858575/353812.terrain new file mode 100644 index 000000000..75ca10688 Binary files /dev/null and b/public/terrain/19/858575/353812.terrain differ diff --git a/public/terrain/19/858575/353813.terrain b/public/terrain/19/858575/353813.terrain new file mode 100644 index 000000000..fe3b34527 Binary files /dev/null and b/public/terrain/19/858575/353813.terrain differ diff --git a/public/terrain/19/858575/353814.terrain b/public/terrain/19/858575/353814.terrain new file mode 100644 index 000000000..ea0d87965 Binary files /dev/null and b/public/terrain/19/858575/353814.terrain differ diff --git a/public/terrain/19/858575/353815.terrain b/public/terrain/19/858575/353815.terrain new file mode 100644 index 000000000..7813e1c89 Binary files /dev/null and b/public/terrain/19/858575/353815.terrain differ diff --git a/public/terrain/19/858575/353816.terrain b/public/terrain/19/858575/353816.terrain new file mode 100644 index 000000000..d7477ed66 Binary files /dev/null and b/public/terrain/19/858575/353816.terrain differ diff --git a/public/terrain/19/858575/353817.terrain b/public/terrain/19/858575/353817.terrain new file mode 100644 index 000000000..43c2e379b Binary files /dev/null and b/public/terrain/19/858575/353817.terrain differ diff --git a/public/terrain/19/858575/353818.terrain b/public/terrain/19/858575/353818.terrain new file mode 100644 index 000000000..2fb8579ce Binary files /dev/null and b/public/terrain/19/858575/353818.terrain differ diff --git a/public/terrain/19/858575/353819.terrain b/public/terrain/19/858575/353819.terrain new file mode 100644 index 000000000..23e9da646 Binary files /dev/null and b/public/terrain/19/858575/353819.terrain differ diff --git a/public/terrain/19/858575/353820.terrain b/public/terrain/19/858575/353820.terrain new file mode 100644 index 000000000..ea06888a6 Binary files /dev/null and b/public/terrain/19/858575/353820.terrain differ diff --git a/public/terrain/19/858575/353821.terrain b/public/terrain/19/858575/353821.terrain new file mode 100644 index 000000000..d99e31973 Binary files /dev/null and b/public/terrain/19/858575/353821.terrain differ diff --git a/public/terrain/19/858575/353822.terrain b/public/terrain/19/858575/353822.terrain new file mode 100644 index 000000000..a6ec73842 Binary files /dev/null and b/public/terrain/19/858575/353822.terrain differ diff --git a/public/terrain/19/858575/353823.terrain b/public/terrain/19/858575/353823.terrain new file mode 100644 index 000000000..ac9847a6d Binary files /dev/null and b/public/terrain/19/858575/353823.terrain differ diff --git a/public/terrain/19/858575/353824.terrain b/public/terrain/19/858575/353824.terrain new file mode 100644 index 000000000..c7b1a3d47 Binary files /dev/null and b/public/terrain/19/858575/353824.terrain differ diff --git a/public/terrain/19/858575/353825.terrain b/public/terrain/19/858575/353825.terrain new file mode 100644 index 000000000..ac1bf986c Binary files /dev/null and b/public/terrain/19/858575/353825.terrain differ diff --git a/public/terrain/19/858575/353826.terrain b/public/terrain/19/858575/353826.terrain new file mode 100644 index 000000000..a99a66b45 Binary files /dev/null and b/public/terrain/19/858575/353826.terrain differ diff --git a/public/terrain/19/858575/353827.terrain b/public/terrain/19/858575/353827.terrain new file mode 100644 index 000000000..2a91dfec3 Binary files /dev/null and b/public/terrain/19/858575/353827.terrain differ diff --git a/public/terrain/19/858575/353828.terrain b/public/terrain/19/858575/353828.terrain new file mode 100644 index 000000000..e70bc8601 Binary files /dev/null and b/public/terrain/19/858575/353828.terrain differ diff --git a/public/terrain/19/858575/353829.terrain b/public/terrain/19/858575/353829.terrain new file mode 100644 index 000000000..d40e436f0 Binary files /dev/null and b/public/terrain/19/858575/353829.terrain differ diff --git a/public/terrain/19/858575/353830.terrain b/public/terrain/19/858575/353830.terrain new file mode 100644 index 000000000..ddd73d3f2 Binary files /dev/null and b/public/terrain/19/858575/353830.terrain differ diff --git a/public/terrain/19/858575/353831.terrain b/public/terrain/19/858575/353831.terrain new file mode 100644 index 000000000..dcc6c3b21 Binary files /dev/null and b/public/terrain/19/858575/353831.terrain differ diff --git a/public/terrain/19/858575/353832.terrain b/public/terrain/19/858575/353832.terrain new file mode 100644 index 000000000..f4c90a8e6 Binary files /dev/null and b/public/terrain/19/858575/353832.terrain differ diff --git a/public/terrain/19/858575/353833.terrain b/public/terrain/19/858575/353833.terrain new file mode 100644 index 000000000..260e04855 Binary files /dev/null and b/public/terrain/19/858575/353833.terrain differ diff --git a/public/terrain/19/858575/353834.terrain b/public/terrain/19/858575/353834.terrain new file mode 100644 index 000000000..eb3b211e7 Binary files /dev/null and b/public/terrain/19/858575/353834.terrain differ diff --git a/public/terrain/19/858575/353835.terrain b/public/terrain/19/858575/353835.terrain new file mode 100644 index 000000000..8670a3aed Binary files /dev/null and b/public/terrain/19/858575/353835.terrain differ diff --git a/public/terrain/19/858575/353836.terrain b/public/terrain/19/858575/353836.terrain new file mode 100644 index 000000000..91fd0672f Binary files /dev/null and b/public/terrain/19/858575/353836.terrain differ diff --git a/public/terrain/19/858575/353837.terrain b/public/terrain/19/858575/353837.terrain new file mode 100644 index 000000000..dff52c741 Binary files /dev/null and b/public/terrain/19/858575/353837.terrain differ diff --git a/public/terrain/19/858575/353838.terrain b/public/terrain/19/858575/353838.terrain new file mode 100644 index 000000000..6389bcf71 Binary files /dev/null and b/public/terrain/19/858575/353838.terrain differ diff --git a/public/terrain/19/858575/353839.terrain b/public/terrain/19/858575/353839.terrain new file mode 100644 index 000000000..251cb01d7 Binary files /dev/null and b/public/terrain/19/858575/353839.terrain differ diff --git a/public/terrain/19/858575/353840.terrain b/public/terrain/19/858575/353840.terrain new file mode 100644 index 000000000..95318f489 Binary files /dev/null and b/public/terrain/19/858575/353840.terrain differ diff --git a/public/terrain/19/858575/353841.terrain b/public/terrain/19/858575/353841.terrain new file mode 100644 index 000000000..83a97710a Binary files /dev/null and b/public/terrain/19/858575/353841.terrain differ diff --git a/public/terrain/19/858575/353842.terrain b/public/terrain/19/858575/353842.terrain new file mode 100644 index 000000000..0ce2eb2b8 Binary files /dev/null and b/public/terrain/19/858575/353842.terrain differ diff --git a/public/terrain/19/858575/353843.terrain b/public/terrain/19/858575/353843.terrain new file mode 100644 index 000000000..f34823c98 Binary files /dev/null and b/public/terrain/19/858575/353843.terrain differ diff --git a/public/terrain/19/858575/353844.terrain b/public/terrain/19/858575/353844.terrain new file mode 100644 index 000000000..d0d582ad7 Binary files /dev/null and b/public/terrain/19/858575/353844.terrain differ diff --git a/public/terrain/19/858575/353845.terrain b/public/terrain/19/858575/353845.terrain new file mode 100644 index 000000000..cbff41597 Binary files /dev/null and b/public/terrain/19/858575/353845.terrain differ diff --git a/public/terrain/19/858575/353846.terrain b/public/terrain/19/858575/353846.terrain new file mode 100644 index 000000000..e662003c5 Binary files /dev/null and b/public/terrain/19/858575/353846.terrain differ diff --git a/public/terrain/19/858575/353847.terrain b/public/terrain/19/858575/353847.terrain new file mode 100644 index 000000000..4fb0fa071 Binary files /dev/null and b/public/terrain/19/858575/353847.terrain differ diff --git a/public/terrain/19/858575/353848.terrain b/public/terrain/19/858575/353848.terrain new file mode 100644 index 000000000..6e11a78ea Binary files /dev/null and b/public/terrain/19/858575/353848.terrain differ diff --git a/public/terrain/19/858575/353849.terrain b/public/terrain/19/858575/353849.terrain new file mode 100644 index 000000000..1e801efbb Binary files /dev/null and b/public/terrain/19/858575/353849.terrain differ diff --git a/public/terrain/19/858575/353850.terrain b/public/terrain/19/858575/353850.terrain new file mode 100644 index 000000000..0548e7d44 Binary files /dev/null and b/public/terrain/19/858575/353850.terrain differ diff --git a/public/terrain/19/858575/353851.terrain b/public/terrain/19/858575/353851.terrain new file mode 100644 index 000000000..fe378aff0 Binary files /dev/null and b/public/terrain/19/858575/353851.terrain differ diff --git a/public/terrain/19/858575/353852.terrain b/public/terrain/19/858575/353852.terrain new file mode 100644 index 000000000..2ece699ef Binary files /dev/null and b/public/terrain/19/858575/353852.terrain differ diff --git a/public/terrain/19/858575/353853.terrain b/public/terrain/19/858575/353853.terrain new file mode 100644 index 000000000..55c7d8305 Binary files /dev/null and b/public/terrain/19/858575/353853.terrain differ diff --git a/public/terrain/19/858575/353854.terrain b/public/terrain/19/858575/353854.terrain new file mode 100644 index 000000000..2b7c1877d Binary files /dev/null and b/public/terrain/19/858575/353854.terrain differ diff --git a/public/terrain/19/858575/353855.terrain b/public/terrain/19/858575/353855.terrain new file mode 100644 index 000000000..208a98bde Binary files /dev/null and b/public/terrain/19/858575/353855.terrain differ diff --git a/public/terrain/19/858575/353856.terrain b/public/terrain/19/858575/353856.terrain new file mode 100644 index 000000000..432c651ea Binary files /dev/null and b/public/terrain/19/858575/353856.terrain differ diff --git a/public/terrain/19/858575/353857.terrain b/public/terrain/19/858575/353857.terrain new file mode 100644 index 000000000..3816dcb11 Binary files /dev/null and b/public/terrain/19/858575/353857.terrain differ diff --git a/public/terrain/19/858575/353858.terrain b/public/terrain/19/858575/353858.terrain new file mode 100644 index 000000000..429385cc1 Binary files /dev/null and b/public/terrain/19/858575/353858.terrain differ diff --git a/public/terrain/19/858575/353859.terrain b/public/terrain/19/858575/353859.terrain new file mode 100644 index 000000000..62ab66831 Binary files /dev/null and b/public/terrain/19/858575/353859.terrain differ diff --git a/public/terrain/19/858575/353860.terrain b/public/terrain/19/858575/353860.terrain new file mode 100644 index 000000000..8b0d6e620 Binary files /dev/null and b/public/terrain/19/858575/353860.terrain differ diff --git a/public/terrain/19/858575/353861.terrain b/public/terrain/19/858575/353861.terrain new file mode 100644 index 000000000..d2a098b4b Binary files /dev/null and b/public/terrain/19/858575/353861.terrain differ diff --git a/public/terrain/19/858575/353862.terrain b/public/terrain/19/858575/353862.terrain new file mode 100644 index 000000000..7a82b7de9 Binary files /dev/null and b/public/terrain/19/858575/353862.terrain differ diff --git a/public/terrain/19/858575/353863.terrain b/public/terrain/19/858575/353863.terrain new file mode 100644 index 000000000..b21a8a9c6 Binary files /dev/null and b/public/terrain/19/858575/353863.terrain differ diff --git a/public/terrain/19/858575/353864.terrain b/public/terrain/19/858575/353864.terrain new file mode 100644 index 000000000..52fc8cdbe Binary files /dev/null and b/public/terrain/19/858575/353864.terrain differ diff --git a/public/terrain/19/858575/353865.terrain b/public/terrain/19/858575/353865.terrain new file mode 100644 index 000000000..b50a3800f Binary files /dev/null and b/public/terrain/19/858575/353865.terrain differ diff --git a/public/terrain/19/858575/353866.terrain b/public/terrain/19/858575/353866.terrain new file mode 100644 index 000000000..0f9e34b3c Binary files /dev/null and b/public/terrain/19/858575/353866.terrain differ diff --git a/public/terrain/19/858575/353867.terrain b/public/terrain/19/858575/353867.terrain new file mode 100644 index 000000000..ec2f2ead0 Binary files /dev/null and b/public/terrain/19/858575/353867.terrain differ diff --git a/public/terrain/19/858575/353868.terrain b/public/terrain/19/858575/353868.terrain new file mode 100644 index 000000000..16ef22d62 Binary files /dev/null and b/public/terrain/19/858575/353868.terrain differ diff --git a/public/terrain/19/858575/353869.terrain b/public/terrain/19/858575/353869.terrain new file mode 100644 index 000000000..13d7c44b6 Binary files /dev/null and b/public/terrain/19/858575/353869.terrain differ diff --git a/public/terrain/19/858575/353870.terrain b/public/terrain/19/858575/353870.terrain new file mode 100644 index 000000000..9cfd220e3 Binary files /dev/null and b/public/terrain/19/858575/353870.terrain differ diff --git a/public/terrain/19/858575/353871.terrain b/public/terrain/19/858575/353871.terrain new file mode 100644 index 000000000..d61595d2f Binary files /dev/null and b/public/terrain/19/858575/353871.terrain differ diff --git a/public/terrain/19/858575/353872.terrain b/public/terrain/19/858575/353872.terrain new file mode 100644 index 000000000..8d102dc4b Binary files /dev/null and b/public/terrain/19/858575/353872.terrain differ diff --git a/public/terrain/19/858575/353873.terrain b/public/terrain/19/858575/353873.terrain new file mode 100644 index 000000000..a8786714d Binary files /dev/null and b/public/terrain/19/858575/353873.terrain differ diff --git a/public/terrain/19/858575/353874.terrain b/public/terrain/19/858575/353874.terrain new file mode 100644 index 000000000..af0b5eefe Binary files /dev/null and b/public/terrain/19/858575/353874.terrain differ diff --git a/public/terrain/19/858575/353875.terrain b/public/terrain/19/858575/353875.terrain new file mode 100644 index 000000000..7bf1184ed Binary files /dev/null and b/public/terrain/19/858575/353875.terrain differ diff --git a/public/terrain/19/858575/353876.terrain b/public/terrain/19/858575/353876.terrain new file mode 100644 index 000000000..5e8e0a133 Binary files /dev/null and b/public/terrain/19/858575/353876.terrain differ diff --git a/public/terrain/19/858575/353877.terrain b/public/terrain/19/858575/353877.terrain new file mode 100644 index 000000000..78835fbb5 Binary files /dev/null and b/public/terrain/19/858575/353877.terrain differ diff --git a/public/terrain/19/858575/353878.terrain b/public/terrain/19/858575/353878.terrain new file mode 100644 index 000000000..2bebcfd6a Binary files /dev/null and b/public/terrain/19/858575/353878.terrain differ diff --git a/public/terrain/19/858575/353879.terrain b/public/terrain/19/858575/353879.terrain new file mode 100644 index 000000000..864f367a9 Binary files /dev/null and b/public/terrain/19/858575/353879.terrain differ diff --git a/public/terrain/19/858575/353880.terrain b/public/terrain/19/858575/353880.terrain new file mode 100644 index 000000000..6d3b4e7f8 Binary files /dev/null and b/public/terrain/19/858575/353880.terrain differ diff --git a/public/terrain/19/858575/353881.terrain b/public/terrain/19/858575/353881.terrain new file mode 100644 index 000000000..f39e78e73 Binary files /dev/null and b/public/terrain/19/858575/353881.terrain differ diff --git a/public/terrain/19/858575/353882.terrain b/public/terrain/19/858575/353882.terrain new file mode 100644 index 000000000..1893335f5 Binary files /dev/null and b/public/terrain/19/858575/353882.terrain differ diff --git a/public/terrain/19/858575/353883.terrain b/public/terrain/19/858575/353883.terrain new file mode 100644 index 000000000..0974ff2b9 Binary files /dev/null and b/public/terrain/19/858575/353883.terrain differ diff --git a/public/terrain/19/858575/353884.terrain b/public/terrain/19/858575/353884.terrain new file mode 100644 index 000000000..b020db2c4 Binary files /dev/null and b/public/terrain/19/858575/353884.terrain differ diff --git a/public/terrain/19/858575/353885.terrain b/public/terrain/19/858575/353885.terrain new file mode 100644 index 000000000..1aa212448 Binary files /dev/null and b/public/terrain/19/858575/353885.terrain differ diff --git a/public/terrain/19/858575/353886.terrain b/public/terrain/19/858575/353886.terrain new file mode 100644 index 000000000..173ff8ec4 Binary files /dev/null and b/public/terrain/19/858575/353886.terrain differ diff --git a/public/terrain/19/858575/353887.terrain b/public/terrain/19/858575/353887.terrain new file mode 100644 index 000000000..d0c06e90f Binary files /dev/null and b/public/terrain/19/858575/353887.terrain differ diff --git a/public/terrain/19/858575/353888.terrain b/public/terrain/19/858575/353888.terrain new file mode 100644 index 000000000..531a2cab5 Binary files /dev/null and b/public/terrain/19/858575/353888.terrain differ diff --git a/public/terrain/19/858575/353889.terrain b/public/terrain/19/858575/353889.terrain new file mode 100644 index 000000000..2adb53b72 Binary files /dev/null and b/public/terrain/19/858575/353889.terrain differ diff --git a/public/terrain/19/858575/353890.terrain b/public/terrain/19/858575/353890.terrain new file mode 100644 index 000000000..3cde48062 Binary files /dev/null and b/public/terrain/19/858575/353890.terrain differ diff --git a/public/terrain/19/858575/353891.terrain b/public/terrain/19/858575/353891.terrain new file mode 100644 index 000000000..0e11b32e5 Binary files /dev/null and b/public/terrain/19/858575/353891.terrain differ diff --git a/public/terrain/19/858575/353892.terrain b/public/terrain/19/858575/353892.terrain new file mode 100644 index 000000000..5674d93c7 Binary files /dev/null and b/public/terrain/19/858575/353892.terrain differ diff --git a/public/terrain/19/858575/353893.terrain b/public/terrain/19/858575/353893.terrain new file mode 100644 index 000000000..d2a10d87c Binary files /dev/null and b/public/terrain/19/858575/353893.terrain differ diff --git a/public/terrain/19/858575/353894.terrain b/public/terrain/19/858575/353894.terrain new file mode 100644 index 000000000..0d1c99e4f Binary files /dev/null and b/public/terrain/19/858575/353894.terrain differ diff --git a/public/terrain/19/858575/353895.terrain b/public/terrain/19/858575/353895.terrain new file mode 100644 index 000000000..b30a40e00 Binary files /dev/null and b/public/terrain/19/858575/353895.terrain differ diff --git a/public/terrain/19/858575/353896.terrain b/public/terrain/19/858575/353896.terrain new file mode 100644 index 000000000..7faf116d3 Binary files /dev/null and b/public/terrain/19/858575/353896.terrain differ diff --git a/public/terrain/19/858575/353897.terrain b/public/terrain/19/858575/353897.terrain new file mode 100644 index 000000000..c4ee941f4 Binary files /dev/null and b/public/terrain/19/858575/353897.terrain differ diff --git a/public/terrain/19/858575/353898.terrain b/public/terrain/19/858575/353898.terrain new file mode 100644 index 000000000..7ea13824b Binary files /dev/null and b/public/terrain/19/858575/353898.terrain differ diff --git a/public/terrain/19/858575/353899.terrain b/public/terrain/19/858575/353899.terrain new file mode 100644 index 000000000..9e690b372 Binary files /dev/null and b/public/terrain/19/858575/353899.terrain differ diff --git a/public/terrain/19/858575/353900.terrain b/public/terrain/19/858575/353900.terrain new file mode 100644 index 000000000..b3306fb8c Binary files /dev/null and b/public/terrain/19/858575/353900.terrain differ diff --git a/public/terrain/19/858575/353901.terrain b/public/terrain/19/858575/353901.terrain new file mode 100644 index 000000000..5311070da Binary files /dev/null and b/public/terrain/19/858575/353901.terrain differ diff --git a/public/terrain/19/858575/353902.terrain b/public/terrain/19/858575/353902.terrain new file mode 100644 index 000000000..f947140e5 Binary files /dev/null and b/public/terrain/19/858575/353902.terrain differ diff --git a/public/terrain/19/858575/353903.terrain b/public/terrain/19/858575/353903.terrain new file mode 100644 index 000000000..dcbc59bb1 Binary files /dev/null and b/public/terrain/19/858575/353903.terrain differ diff --git a/public/terrain/19/858575/353904.terrain b/public/terrain/19/858575/353904.terrain new file mode 100644 index 000000000..48d00ddc9 Binary files /dev/null and b/public/terrain/19/858575/353904.terrain differ diff --git a/public/terrain/19/858575/353905.terrain b/public/terrain/19/858575/353905.terrain new file mode 100644 index 000000000..b4e26cb61 Binary files /dev/null and b/public/terrain/19/858575/353905.terrain differ diff --git a/public/terrain/19/858575/353906.terrain b/public/terrain/19/858575/353906.terrain new file mode 100644 index 000000000..661eebb73 Binary files /dev/null and b/public/terrain/19/858575/353906.terrain differ diff --git a/public/terrain/19/858575/353907.terrain b/public/terrain/19/858575/353907.terrain new file mode 100644 index 000000000..6a8ab63e4 Binary files /dev/null and b/public/terrain/19/858575/353907.terrain differ diff --git a/public/terrain/19/858575/353908.terrain b/public/terrain/19/858575/353908.terrain new file mode 100644 index 000000000..2330bcb59 Binary files /dev/null and b/public/terrain/19/858575/353908.terrain differ diff --git a/public/terrain/19/858575/353909.terrain b/public/terrain/19/858575/353909.terrain new file mode 100644 index 000000000..bc0093a36 Binary files /dev/null and b/public/terrain/19/858575/353909.terrain differ diff --git a/public/terrain/19/858575/353910.terrain b/public/terrain/19/858575/353910.terrain new file mode 100644 index 000000000..d28c3daa3 Binary files /dev/null and b/public/terrain/19/858575/353910.terrain differ diff --git a/public/terrain/19/858575/353911.terrain b/public/terrain/19/858575/353911.terrain new file mode 100644 index 000000000..202910dd4 Binary files /dev/null and b/public/terrain/19/858575/353911.terrain differ diff --git a/public/terrain/19/858575/353912.terrain b/public/terrain/19/858575/353912.terrain new file mode 100644 index 000000000..4383c69be Binary files /dev/null and b/public/terrain/19/858575/353912.terrain differ diff --git a/public/terrain/19/858575/353913.terrain b/public/terrain/19/858575/353913.terrain new file mode 100644 index 000000000..fae7f6985 Binary files /dev/null and b/public/terrain/19/858575/353913.terrain differ diff --git a/public/terrain/19/858575/353914.terrain b/public/terrain/19/858575/353914.terrain new file mode 100644 index 000000000..7cea6a21c Binary files /dev/null and b/public/terrain/19/858575/353914.terrain differ diff --git a/public/terrain/19/858575/353915.terrain b/public/terrain/19/858575/353915.terrain new file mode 100644 index 000000000..a7a02cd50 Binary files /dev/null and b/public/terrain/19/858575/353915.terrain differ diff --git a/public/terrain/19/858575/353916.terrain b/public/terrain/19/858575/353916.terrain new file mode 100644 index 000000000..067a70887 Binary files /dev/null and b/public/terrain/19/858575/353916.terrain differ diff --git a/public/terrain/19/858575/353917.terrain b/public/terrain/19/858575/353917.terrain new file mode 100644 index 000000000..efbd2bf80 Binary files /dev/null and b/public/terrain/19/858575/353917.terrain differ diff --git a/public/terrain/19/858575/353918.terrain b/public/terrain/19/858575/353918.terrain new file mode 100644 index 000000000..274802f7c Binary files /dev/null and b/public/terrain/19/858575/353918.terrain differ diff --git a/public/terrain/19/858575/353919.terrain b/public/terrain/19/858575/353919.terrain new file mode 100644 index 000000000..896e40e06 Binary files /dev/null and b/public/terrain/19/858575/353919.terrain differ diff --git a/public/terrain/19/858575/353920.terrain b/public/terrain/19/858575/353920.terrain new file mode 100644 index 000000000..90d8ec6bc Binary files /dev/null and b/public/terrain/19/858575/353920.terrain differ diff --git a/public/terrain/19/858575/353921.terrain b/public/terrain/19/858575/353921.terrain new file mode 100644 index 000000000..344facd24 Binary files /dev/null and b/public/terrain/19/858575/353921.terrain differ diff --git a/public/terrain/19/858575/353922.terrain b/public/terrain/19/858575/353922.terrain new file mode 100644 index 000000000..d7b157487 Binary files /dev/null and b/public/terrain/19/858575/353922.terrain differ diff --git a/public/terrain/19/858575/353923.terrain b/public/terrain/19/858575/353923.terrain new file mode 100644 index 000000000..d16d0ffed Binary files /dev/null and b/public/terrain/19/858575/353923.terrain differ diff --git a/public/terrain/19/858575/353924.terrain b/public/terrain/19/858575/353924.terrain new file mode 100644 index 000000000..16338624f Binary files /dev/null and b/public/terrain/19/858575/353924.terrain differ diff --git a/public/terrain/19/858575/353925.terrain b/public/terrain/19/858575/353925.terrain new file mode 100644 index 000000000..6267cf9c8 Binary files /dev/null and b/public/terrain/19/858575/353925.terrain differ diff --git a/public/terrain/19/858575/353926.terrain b/public/terrain/19/858575/353926.terrain new file mode 100644 index 000000000..a6cd95005 Binary files /dev/null and b/public/terrain/19/858575/353926.terrain differ diff --git a/public/terrain/19/858575/353927.terrain b/public/terrain/19/858575/353927.terrain new file mode 100644 index 000000000..8176a4d88 Binary files /dev/null and b/public/terrain/19/858575/353927.terrain differ diff --git a/public/terrain/19/858575/353928.terrain b/public/terrain/19/858575/353928.terrain new file mode 100644 index 000000000..b80f99585 Binary files /dev/null and b/public/terrain/19/858575/353928.terrain differ diff --git a/public/terrain/19/858575/353929.terrain b/public/terrain/19/858575/353929.terrain new file mode 100644 index 000000000..64ddc8cac Binary files /dev/null and b/public/terrain/19/858575/353929.terrain differ diff --git a/public/terrain/19/858575/353930.terrain b/public/terrain/19/858575/353930.terrain new file mode 100644 index 000000000..dfbef6afc Binary files /dev/null and b/public/terrain/19/858575/353930.terrain differ diff --git a/public/terrain/19/858575/353931.terrain b/public/terrain/19/858575/353931.terrain new file mode 100644 index 000000000..aa91158e9 Binary files /dev/null and b/public/terrain/19/858575/353931.terrain differ diff --git a/public/terrain/19/858575/353932.terrain b/public/terrain/19/858575/353932.terrain new file mode 100644 index 000000000..27f46c338 Binary files /dev/null and b/public/terrain/19/858575/353932.terrain differ diff --git a/public/terrain/19/858575/353933.terrain b/public/terrain/19/858575/353933.terrain new file mode 100644 index 000000000..b2af37860 Binary files /dev/null and b/public/terrain/19/858575/353933.terrain differ diff --git a/public/terrain/19/858575/353934.terrain b/public/terrain/19/858575/353934.terrain new file mode 100644 index 000000000..7ec7f27f1 Binary files /dev/null and b/public/terrain/19/858575/353934.terrain differ diff --git a/public/terrain/19/858575/353935.terrain b/public/terrain/19/858575/353935.terrain new file mode 100644 index 000000000..1a54588da Binary files /dev/null and b/public/terrain/19/858575/353935.terrain differ diff --git a/public/terrain/19/858575/353936.terrain b/public/terrain/19/858575/353936.terrain new file mode 100644 index 000000000..6e220aba9 Binary files /dev/null and b/public/terrain/19/858575/353936.terrain differ diff --git a/public/terrain/19/858575/353937.terrain b/public/terrain/19/858575/353937.terrain new file mode 100644 index 000000000..5d1914a51 Binary files /dev/null and b/public/terrain/19/858575/353937.terrain differ diff --git a/public/terrain/19/858575/353938.terrain b/public/terrain/19/858575/353938.terrain new file mode 100644 index 000000000..7f636dea1 Binary files /dev/null and b/public/terrain/19/858575/353938.terrain differ diff --git a/public/terrain/19/858575/353939.terrain b/public/terrain/19/858575/353939.terrain new file mode 100644 index 000000000..ef9d37845 Binary files /dev/null and b/public/terrain/19/858575/353939.terrain differ diff --git a/public/terrain/19/858575/353940.terrain b/public/terrain/19/858575/353940.terrain new file mode 100644 index 000000000..28c8baecf Binary files /dev/null and b/public/terrain/19/858575/353940.terrain differ diff --git a/public/terrain/19/858575/353941.terrain b/public/terrain/19/858575/353941.terrain new file mode 100644 index 000000000..1d2f52565 Binary files /dev/null and b/public/terrain/19/858575/353941.terrain differ diff --git a/public/terrain/19/858575/353942.terrain b/public/terrain/19/858575/353942.terrain new file mode 100644 index 000000000..3fa475072 Binary files /dev/null and b/public/terrain/19/858575/353942.terrain differ diff --git a/public/terrain/19/858575/353943.terrain b/public/terrain/19/858575/353943.terrain new file mode 100644 index 000000000..f51740833 Binary files /dev/null and b/public/terrain/19/858575/353943.terrain differ diff --git a/public/terrain/19/858575/353944.terrain b/public/terrain/19/858575/353944.terrain new file mode 100644 index 000000000..10c12eb3c Binary files /dev/null and b/public/terrain/19/858575/353944.terrain differ diff --git a/public/terrain/19/858575/353945.terrain b/public/terrain/19/858575/353945.terrain new file mode 100644 index 000000000..8fdc7cf17 Binary files /dev/null and b/public/terrain/19/858575/353945.terrain differ diff --git a/public/terrain/19/858575/353946.terrain b/public/terrain/19/858575/353946.terrain new file mode 100644 index 000000000..1ddad061d Binary files /dev/null and b/public/terrain/19/858575/353946.terrain differ diff --git a/public/terrain/19/858575/353947.terrain b/public/terrain/19/858575/353947.terrain new file mode 100644 index 000000000..3214bc3b0 Binary files /dev/null and b/public/terrain/19/858575/353947.terrain differ diff --git a/public/terrain/19/858575/353948.terrain b/public/terrain/19/858575/353948.terrain new file mode 100644 index 000000000..cb3e0bb53 Binary files /dev/null and b/public/terrain/19/858575/353948.terrain differ diff --git a/public/terrain/19/858575/353949.terrain b/public/terrain/19/858575/353949.terrain new file mode 100644 index 000000000..7f6ec9cfe Binary files /dev/null and b/public/terrain/19/858575/353949.terrain differ diff --git a/public/terrain/19/858575/353950.terrain b/public/terrain/19/858575/353950.terrain new file mode 100644 index 000000000..1d63b336f Binary files /dev/null and b/public/terrain/19/858575/353950.terrain differ diff --git a/public/terrain/19/858575/353951.terrain b/public/terrain/19/858575/353951.terrain new file mode 100644 index 000000000..79a78bd51 Binary files /dev/null and b/public/terrain/19/858575/353951.terrain differ diff --git a/public/terrain/19/858575/353952.terrain b/public/terrain/19/858575/353952.terrain new file mode 100644 index 000000000..06756c143 Binary files /dev/null and b/public/terrain/19/858575/353952.terrain differ diff --git a/public/terrain/19/858575/353953.terrain b/public/terrain/19/858575/353953.terrain new file mode 100644 index 000000000..8313f9092 Binary files /dev/null and b/public/terrain/19/858575/353953.terrain differ diff --git a/public/terrain/19/858575/353954.terrain b/public/terrain/19/858575/353954.terrain new file mode 100644 index 000000000..86a64f279 Binary files /dev/null and b/public/terrain/19/858575/353954.terrain differ diff --git a/public/terrain/19/858575/353955.terrain b/public/terrain/19/858575/353955.terrain new file mode 100644 index 000000000..8f8a99a09 Binary files /dev/null and b/public/terrain/19/858575/353955.terrain differ diff --git a/public/terrain/19/858575/353956.terrain b/public/terrain/19/858575/353956.terrain new file mode 100644 index 000000000..d4060fde9 Binary files /dev/null and b/public/terrain/19/858575/353956.terrain differ diff --git a/public/terrain/19/858575/353957.terrain b/public/terrain/19/858575/353957.terrain new file mode 100644 index 000000000..d66c86c0e Binary files /dev/null and b/public/terrain/19/858575/353957.terrain differ diff --git a/public/terrain/19/858575/353958.terrain b/public/terrain/19/858575/353958.terrain new file mode 100644 index 000000000..dc4de0779 Binary files /dev/null and b/public/terrain/19/858575/353958.terrain differ diff --git a/public/terrain/19/858575/353959.terrain b/public/terrain/19/858575/353959.terrain new file mode 100644 index 000000000..e8a49c932 Binary files /dev/null and b/public/terrain/19/858575/353959.terrain differ diff --git a/public/terrain/19/858575/353960.terrain b/public/terrain/19/858575/353960.terrain new file mode 100644 index 000000000..202846b14 Binary files /dev/null and b/public/terrain/19/858575/353960.terrain differ diff --git a/public/terrain/19/858575/353961.terrain b/public/terrain/19/858575/353961.terrain new file mode 100644 index 000000000..2a9794d92 Binary files /dev/null and b/public/terrain/19/858575/353961.terrain differ diff --git a/public/terrain/19/858575/353962.terrain b/public/terrain/19/858575/353962.terrain new file mode 100644 index 000000000..4dd35170b Binary files /dev/null and b/public/terrain/19/858575/353962.terrain differ diff --git a/public/terrain/19/858575/353963.terrain b/public/terrain/19/858575/353963.terrain new file mode 100644 index 000000000..73b1ce58e Binary files /dev/null and b/public/terrain/19/858575/353963.terrain differ diff --git a/public/terrain/19/858575/353964.terrain b/public/terrain/19/858575/353964.terrain new file mode 100644 index 000000000..89300779b Binary files /dev/null and b/public/terrain/19/858575/353964.terrain differ diff --git a/public/terrain/19/858575/353965.terrain b/public/terrain/19/858575/353965.terrain new file mode 100644 index 000000000..eb51e7e0e Binary files /dev/null and b/public/terrain/19/858575/353965.terrain differ diff --git a/public/terrain/19/858575/353966.terrain b/public/terrain/19/858575/353966.terrain new file mode 100644 index 000000000..6e8a542be Binary files /dev/null and b/public/terrain/19/858575/353966.terrain differ diff --git a/public/terrain/19/858575/353967.terrain b/public/terrain/19/858575/353967.terrain new file mode 100644 index 000000000..a8e515fe2 Binary files /dev/null and b/public/terrain/19/858575/353967.terrain differ diff --git a/public/terrain/19/858575/353968.terrain b/public/terrain/19/858575/353968.terrain new file mode 100644 index 000000000..439327f33 Binary files /dev/null and b/public/terrain/19/858575/353968.terrain differ diff --git a/public/terrain/19/858575/353969.terrain b/public/terrain/19/858575/353969.terrain new file mode 100644 index 000000000..c9d7a5099 Binary files /dev/null and b/public/terrain/19/858575/353969.terrain differ diff --git a/public/terrain/19/858575/353970.terrain b/public/terrain/19/858575/353970.terrain new file mode 100644 index 000000000..91a0e63f8 Binary files /dev/null and b/public/terrain/19/858575/353970.terrain differ diff --git a/public/terrain/19/858575/353971.terrain b/public/terrain/19/858575/353971.terrain new file mode 100644 index 000000000..9d0f10e8d Binary files /dev/null and b/public/terrain/19/858575/353971.terrain differ diff --git a/public/terrain/19/858575/353972.terrain b/public/terrain/19/858575/353972.terrain new file mode 100644 index 000000000..291498d8b Binary files /dev/null and b/public/terrain/19/858575/353972.terrain differ diff --git a/public/terrain/19/858575/353973.terrain b/public/terrain/19/858575/353973.terrain new file mode 100644 index 000000000..18761a709 Binary files /dev/null and b/public/terrain/19/858575/353973.terrain differ diff --git a/public/terrain/19/858575/353974.terrain b/public/terrain/19/858575/353974.terrain new file mode 100644 index 000000000..ea7574895 Binary files /dev/null and b/public/terrain/19/858575/353974.terrain differ diff --git a/public/terrain/19/858575/353975.terrain b/public/terrain/19/858575/353975.terrain new file mode 100644 index 000000000..fedba68c6 Binary files /dev/null and b/public/terrain/19/858575/353975.terrain differ diff --git a/public/terrain/19/858575/353976.terrain b/public/terrain/19/858575/353976.terrain new file mode 100644 index 000000000..5c0d6a846 Binary files /dev/null and b/public/terrain/19/858575/353976.terrain differ diff --git a/public/terrain/19/858575/353977.terrain b/public/terrain/19/858575/353977.terrain new file mode 100644 index 000000000..a38db7cbf Binary files /dev/null and b/public/terrain/19/858575/353977.terrain differ diff --git a/public/terrain/19/858575/353978.terrain b/public/terrain/19/858575/353978.terrain new file mode 100644 index 000000000..54ef674df Binary files /dev/null and b/public/terrain/19/858575/353978.terrain differ diff --git a/public/terrain/19/858575/353979.terrain b/public/terrain/19/858575/353979.terrain new file mode 100644 index 000000000..83f82f424 Binary files /dev/null and b/public/terrain/19/858575/353979.terrain differ diff --git a/public/terrain/19/858575/353980.terrain b/public/terrain/19/858575/353980.terrain new file mode 100644 index 000000000..838d33ab3 Binary files /dev/null and b/public/terrain/19/858575/353980.terrain differ diff --git a/public/terrain/19/858575/353981.terrain b/public/terrain/19/858575/353981.terrain new file mode 100644 index 000000000..b2c91da6e Binary files /dev/null and b/public/terrain/19/858575/353981.terrain differ diff --git a/public/terrain/19/858575/353982.terrain b/public/terrain/19/858575/353982.terrain new file mode 100644 index 000000000..004f83994 Binary files /dev/null and b/public/terrain/19/858575/353982.terrain differ diff --git a/public/terrain/19/858575/353983.terrain b/public/terrain/19/858575/353983.terrain new file mode 100644 index 000000000..4b8f2e6aa Binary files /dev/null and b/public/terrain/19/858575/353983.terrain differ diff --git a/public/terrain/19/858575/353984.terrain b/public/terrain/19/858575/353984.terrain new file mode 100644 index 000000000..4d81b67a4 Binary files /dev/null and b/public/terrain/19/858575/353984.terrain differ diff --git a/public/terrain/19/858575/353985.terrain b/public/terrain/19/858575/353985.terrain new file mode 100644 index 000000000..c7156a7d5 Binary files /dev/null and b/public/terrain/19/858575/353985.terrain differ diff --git a/public/terrain/19/858575/353986.terrain b/public/terrain/19/858575/353986.terrain new file mode 100644 index 000000000..fff6f5bd2 Binary files /dev/null and b/public/terrain/19/858575/353986.terrain differ diff --git a/public/terrain/19/858575/353987.terrain b/public/terrain/19/858575/353987.terrain new file mode 100644 index 000000000..828ed002d Binary files /dev/null and b/public/terrain/19/858575/353987.terrain differ diff --git a/public/terrain/19/858575/353988.terrain b/public/terrain/19/858575/353988.terrain new file mode 100644 index 000000000..e3852fc90 Binary files /dev/null and b/public/terrain/19/858575/353988.terrain differ diff --git a/public/terrain/19/858575/353989.terrain b/public/terrain/19/858575/353989.terrain new file mode 100644 index 000000000..df64bacbc Binary files /dev/null and b/public/terrain/19/858575/353989.terrain differ diff --git a/public/terrain/19/858575/353990.terrain b/public/terrain/19/858575/353990.terrain new file mode 100644 index 000000000..38a878a40 Binary files /dev/null and b/public/terrain/19/858575/353990.terrain differ diff --git a/public/terrain/19/858575/353991.terrain b/public/terrain/19/858575/353991.terrain new file mode 100644 index 000000000..f6bdc1199 Binary files /dev/null and b/public/terrain/19/858575/353991.terrain differ diff --git a/public/terrain/19/858575/353992.terrain b/public/terrain/19/858575/353992.terrain new file mode 100644 index 000000000..669a05847 Binary files /dev/null and b/public/terrain/19/858575/353992.terrain differ diff --git a/public/terrain/19/858575/353993.terrain b/public/terrain/19/858575/353993.terrain new file mode 100644 index 000000000..f04414a87 Binary files /dev/null and b/public/terrain/19/858575/353993.terrain differ diff --git a/public/terrain/19/858575/353994.terrain b/public/terrain/19/858575/353994.terrain new file mode 100644 index 000000000..620e28e15 Binary files /dev/null and b/public/terrain/19/858575/353994.terrain differ diff --git a/public/terrain/19/858575/353995.terrain b/public/terrain/19/858575/353995.terrain new file mode 100644 index 000000000..118b7f680 Binary files /dev/null and b/public/terrain/19/858575/353995.terrain differ diff --git a/public/terrain/19/858575/353996.terrain b/public/terrain/19/858575/353996.terrain new file mode 100644 index 000000000..4b1644e24 Binary files /dev/null and b/public/terrain/19/858575/353996.terrain differ diff --git a/public/terrain/19/858575/353997.terrain b/public/terrain/19/858575/353997.terrain new file mode 100644 index 000000000..c3caf8cf9 Binary files /dev/null and b/public/terrain/19/858575/353997.terrain differ diff --git a/public/terrain/19/858575/353998.terrain b/public/terrain/19/858575/353998.terrain new file mode 100644 index 000000000..25c86615a Binary files /dev/null and b/public/terrain/19/858575/353998.terrain differ diff --git a/public/terrain/19/858575/353999.terrain b/public/terrain/19/858575/353999.terrain new file mode 100644 index 000000000..8b0473261 Binary files /dev/null and b/public/terrain/19/858575/353999.terrain differ diff --git a/public/terrain/19/858575/354000.terrain b/public/terrain/19/858575/354000.terrain new file mode 100644 index 000000000..202508f16 Binary files /dev/null and b/public/terrain/19/858575/354000.terrain differ diff --git a/public/terrain/19/858575/354001.terrain b/public/terrain/19/858575/354001.terrain new file mode 100644 index 000000000..d67b13cc5 Binary files /dev/null and b/public/terrain/19/858575/354001.terrain differ diff --git a/public/terrain/19/858575/354002.terrain b/public/terrain/19/858575/354002.terrain new file mode 100644 index 000000000..6ed5f0fd4 Binary files /dev/null and b/public/terrain/19/858575/354002.terrain differ diff --git a/public/terrain/19/858575/354003.terrain b/public/terrain/19/858575/354003.terrain new file mode 100644 index 000000000..a8f3aaca6 Binary files /dev/null and b/public/terrain/19/858575/354003.terrain differ diff --git a/public/terrain/19/858575/354004.terrain b/public/terrain/19/858575/354004.terrain new file mode 100644 index 000000000..ca2f747fd Binary files /dev/null and b/public/terrain/19/858575/354004.terrain differ diff --git a/public/terrain/19/858575/354005.terrain b/public/terrain/19/858575/354005.terrain new file mode 100644 index 000000000..e53597094 Binary files /dev/null and b/public/terrain/19/858575/354005.terrain differ diff --git a/public/terrain/19/858575/354006.terrain b/public/terrain/19/858575/354006.terrain new file mode 100644 index 000000000..accd3c762 Binary files /dev/null and b/public/terrain/19/858575/354006.terrain differ diff --git a/public/terrain/19/858575/354007.terrain b/public/terrain/19/858575/354007.terrain new file mode 100644 index 000000000..aa94eec28 Binary files /dev/null and b/public/terrain/19/858575/354007.terrain differ diff --git a/public/terrain/19/858575/354008.terrain b/public/terrain/19/858575/354008.terrain new file mode 100644 index 000000000..f42885a68 Binary files /dev/null and b/public/terrain/19/858575/354008.terrain differ diff --git a/public/terrain/19/858575/354009.terrain b/public/terrain/19/858575/354009.terrain new file mode 100644 index 000000000..994d7b750 Binary files /dev/null and b/public/terrain/19/858575/354009.terrain differ diff --git a/public/terrain/19/858575/354010.terrain b/public/terrain/19/858575/354010.terrain new file mode 100644 index 000000000..2e1931616 Binary files /dev/null and b/public/terrain/19/858575/354010.terrain differ diff --git a/public/terrain/19/858575/354011.terrain b/public/terrain/19/858575/354011.terrain new file mode 100644 index 000000000..f06220c89 Binary files /dev/null and b/public/terrain/19/858575/354011.terrain differ diff --git a/public/terrain/19/858575/354012.terrain b/public/terrain/19/858575/354012.terrain new file mode 100644 index 000000000..191588aa3 Binary files /dev/null and b/public/terrain/19/858575/354012.terrain differ diff --git a/public/terrain/19/858575/354013.terrain b/public/terrain/19/858575/354013.terrain new file mode 100644 index 000000000..3ab2a5577 Binary files /dev/null and b/public/terrain/19/858575/354013.terrain differ diff --git a/public/terrain/19/858575/354014.terrain b/public/terrain/19/858575/354014.terrain new file mode 100644 index 000000000..16a70719e Binary files /dev/null and b/public/terrain/19/858575/354014.terrain differ diff --git a/public/terrain/19/858575/354015.terrain b/public/terrain/19/858575/354015.terrain new file mode 100644 index 000000000..e47e87c9d Binary files /dev/null and b/public/terrain/19/858575/354015.terrain differ diff --git a/public/terrain/19/858575/354016.terrain b/public/terrain/19/858575/354016.terrain new file mode 100644 index 000000000..568bc3759 Binary files /dev/null and b/public/terrain/19/858575/354016.terrain differ diff --git a/public/terrain/19/858575/354017.terrain b/public/terrain/19/858575/354017.terrain new file mode 100644 index 000000000..b561c3915 Binary files /dev/null and b/public/terrain/19/858575/354017.terrain differ diff --git a/public/terrain/19/858575/354018.terrain b/public/terrain/19/858575/354018.terrain new file mode 100644 index 000000000..60bcdd41e Binary files /dev/null and b/public/terrain/19/858575/354018.terrain differ diff --git a/public/terrain/19/858575/354019.terrain b/public/terrain/19/858575/354019.terrain new file mode 100644 index 000000000..9d2e4b945 Binary files /dev/null and b/public/terrain/19/858575/354019.terrain differ diff --git a/public/terrain/19/858575/354020.terrain b/public/terrain/19/858575/354020.terrain new file mode 100644 index 000000000..dfc569027 Binary files /dev/null and b/public/terrain/19/858575/354020.terrain differ diff --git a/public/terrain/19/858575/354021.terrain b/public/terrain/19/858575/354021.terrain new file mode 100644 index 000000000..2c8bdf5b4 Binary files /dev/null and b/public/terrain/19/858575/354021.terrain differ diff --git a/public/terrain/19/858575/354022.terrain b/public/terrain/19/858575/354022.terrain new file mode 100644 index 000000000..23008ffd9 Binary files /dev/null and b/public/terrain/19/858575/354022.terrain differ diff --git a/public/terrain/19/858575/354023.terrain b/public/terrain/19/858575/354023.terrain new file mode 100644 index 000000000..9dcbe5260 Binary files /dev/null and b/public/terrain/19/858575/354023.terrain differ diff --git a/public/terrain/19/858575/354024.terrain b/public/terrain/19/858575/354024.terrain new file mode 100644 index 000000000..5773703c6 Binary files /dev/null and b/public/terrain/19/858575/354024.terrain differ diff --git a/public/terrain/19/858575/354025.terrain b/public/terrain/19/858575/354025.terrain new file mode 100644 index 000000000..788399daa Binary files /dev/null and b/public/terrain/19/858575/354025.terrain differ diff --git a/public/terrain/19/858575/354026.terrain b/public/terrain/19/858575/354026.terrain new file mode 100644 index 000000000..2ccd9e788 Binary files /dev/null and b/public/terrain/19/858575/354026.terrain differ diff --git a/public/terrain/19/858575/354027.terrain b/public/terrain/19/858575/354027.terrain new file mode 100644 index 000000000..6271bf30e Binary files /dev/null and b/public/terrain/19/858575/354027.terrain differ diff --git a/public/terrain/19/858575/354028.terrain b/public/terrain/19/858575/354028.terrain new file mode 100644 index 000000000..1b07a9c54 Binary files /dev/null and b/public/terrain/19/858575/354028.terrain differ diff --git a/public/terrain/19/858575/354029.terrain b/public/terrain/19/858575/354029.terrain new file mode 100644 index 000000000..f9f6a37af Binary files /dev/null and b/public/terrain/19/858575/354029.terrain differ diff --git a/public/terrain/19/858575/354030.terrain b/public/terrain/19/858575/354030.terrain new file mode 100644 index 000000000..97ffb6fa2 Binary files /dev/null and b/public/terrain/19/858575/354030.terrain differ diff --git a/public/terrain/19/858575/354031.terrain b/public/terrain/19/858575/354031.terrain new file mode 100644 index 000000000..f6620d4cd Binary files /dev/null and b/public/terrain/19/858575/354031.terrain differ diff --git a/public/terrain/19/858575/354032.terrain b/public/terrain/19/858575/354032.terrain new file mode 100644 index 000000000..aa9d04187 Binary files /dev/null and b/public/terrain/19/858575/354032.terrain differ diff --git a/public/terrain/19/858575/354033.terrain b/public/terrain/19/858575/354033.terrain new file mode 100644 index 000000000..c57410ba5 Binary files /dev/null and b/public/terrain/19/858575/354033.terrain differ diff --git a/public/terrain/19/858575/354034.terrain b/public/terrain/19/858575/354034.terrain new file mode 100644 index 000000000..609fd5ee2 Binary files /dev/null and b/public/terrain/19/858575/354034.terrain differ diff --git a/public/terrain/19/858575/354035.terrain b/public/terrain/19/858575/354035.terrain new file mode 100644 index 000000000..b99228e0d Binary files /dev/null and b/public/terrain/19/858575/354035.terrain differ diff --git a/public/terrain/19/858575/354036.terrain b/public/terrain/19/858575/354036.terrain new file mode 100644 index 000000000..5a221036b Binary files /dev/null and b/public/terrain/19/858575/354036.terrain differ diff --git a/public/terrain/19/858575/354037.terrain b/public/terrain/19/858575/354037.terrain new file mode 100644 index 000000000..b1d6e5f17 Binary files /dev/null and b/public/terrain/19/858575/354037.terrain differ diff --git a/public/terrain/19/858575/354038.terrain b/public/terrain/19/858575/354038.terrain new file mode 100644 index 000000000..139a0e1c5 Binary files /dev/null and b/public/terrain/19/858575/354038.terrain differ diff --git a/public/terrain/19/858575/354039.terrain b/public/terrain/19/858575/354039.terrain new file mode 100644 index 000000000..8ff55e61d Binary files /dev/null and b/public/terrain/19/858575/354039.terrain differ diff --git a/public/terrain/19/858575/354040.terrain b/public/terrain/19/858575/354040.terrain new file mode 100644 index 000000000..8c78262d4 Binary files /dev/null and b/public/terrain/19/858575/354040.terrain differ diff --git a/public/terrain/19/858575/354041.terrain b/public/terrain/19/858575/354041.terrain new file mode 100644 index 000000000..506117187 Binary files /dev/null and b/public/terrain/19/858575/354041.terrain differ diff --git a/public/terrain/19/858575/354042.terrain b/public/terrain/19/858575/354042.terrain new file mode 100644 index 000000000..e3781ca0a Binary files /dev/null and b/public/terrain/19/858575/354042.terrain differ diff --git a/public/terrain/19/858575/354043.terrain b/public/terrain/19/858575/354043.terrain new file mode 100644 index 000000000..28c9b6e30 Binary files /dev/null and b/public/terrain/19/858575/354043.terrain differ diff --git a/public/terrain/19/858575/354044.terrain b/public/terrain/19/858575/354044.terrain new file mode 100644 index 000000000..5faf44643 Binary files /dev/null and b/public/terrain/19/858575/354044.terrain differ diff --git a/public/terrain/19/858575/354045.terrain b/public/terrain/19/858575/354045.terrain new file mode 100644 index 000000000..c45ae4931 Binary files /dev/null and b/public/terrain/19/858575/354045.terrain differ diff --git a/public/terrain/19/858575/354046.terrain b/public/terrain/19/858575/354046.terrain new file mode 100644 index 000000000..930e1a6d5 Binary files /dev/null and b/public/terrain/19/858575/354046.terrain differ diff --git a/public/terrain/19/858575/354047.terrain b/public/terrain/19/858575/354047.terrain new file mode 100644 index 000000000..73d8b398e Binary files /dev/null and b/public/terrain/19/858575/354047.terrain differ diff --git a/public/terrain/19/858575/354048.terrain b/public/terrain/19/858575/354048.terrain new file mode 100644 index 000000000..7dddc240a Binary files /dev/null and b/public/terrain/19/858575/354048.terrain differ diff --git a/public/terrain/19/858575/354049.terrain b/public/terrain/19/858575/354049.terrain new file mode 100644 index 000000000..d6efc4baf Binary files /dev/null and b/public/terrain/19/858575/354049.terrain differ diff --git a/public/terrain/19/858575/354050.terrain b/public/terrain/19/858575/354050.terrain new file mode 100644 index 000000000..34633ef58 Binary files /dev/null and b/public/terrain/19/858575/354050.terrain differ diff --git a/public/terrain/19/858575/354051.terrain b/public/terrain/19/858575/354051.terrain new file mode 100644 index 000000000..9ecd3957c Binary files /dev/null and b/public/terrain/19/858575/354051.terrain differ diff --git a/public/terrain/19/858575/354052.terrain b/public/terrain/19/858575/354052.terrain new file mode 100644 index 000000000..04755ede3 Binary files /dev/null and b/public/terrain/19/858575/354052.terrain differ diff --git a/public/terrain/19/858575/354053.terrain b/public/terrain/19/858575/354053.terrain new file mode 100644 index 000000000..751f7e329 Binary files /dev/null and b/public/terrain/19/858575/354053.terrain differ diff --git a/public/terrain/19/858575/354054.terrain b/public/terrain/19/858575/354054.terrain new file mode 100644 index 000000000..6364cc278 Binary files /dev/null and b/public/terrain/19/858575/354054.terrain differ diff --git a/public/terrain/19/858575/354055.terrain b/public/terrain/19/858575/354055.terrain new file mode 100644 index 000000000..2a4ae5e2b Binary files /dev/null and b/public/terrain/19/858575/354055.terrain differ diff --git a/public/terrain/19/858575/354056.terrain b/public/terrain/19/858575/354056.terrain new file mode 100644 index 000000000..bb8630e0a Binary files /dev/null and b/public/terrain/19/858575/354056.terrain differ diff --git a/public/terrain/19/858575/354057.terrain b/public/terrain/19/858575/354057.terrain new file mode 100644 index 000000000..edd3d1f63 Binary files /dev/null and b/public/terrain/19/858575/354057.terrain differ diff --git a/public/terrain/19/858575/354058.terrain b/public/terrain/19/858575/354058.terrain new file mode 100644 index 000000000..3739fd6d9 Binary files /dev/null and b/public/terrain/19/858575/354058.terrain differ diff --git a/public/terrain/19/858575/354059.terrain b/public/terrain/19/858575/354059.terrain new file mode 100644 index 000000000..3bf6ba8f5 Binary files /dev/null and b/public/terrain/19/858575/354059.terrain differ diff --git a/public/terrain/19/858576/353743.terrain b/public/terrain/19/858576/353743.terrain new file mode 100644 index 000000000..fa9ff4871 Binary files /dev/null and b/public/terrain/19/858576/353743.terrain differ diff --git a/public/terrain/19/858576/353744.terrain b/public/terrain/19/858576/353744.terrain new file mode 100644 index 000000000..a2c315cb1 Binary files /dev/null and b/public/terrain/19/858576/353744.terrain differ diff --git a/public/terrain/19/858576/353745.terrain b/public/terrain/19/858576/353745.terrain new file mode 100644 index 000000000..7faf3051a Binary files /dev/null and b/public/terrain/19/858576/353745.terrain differ diff --git a/public/terrain/19/858576/353746.terrain b/public/terrain/19/858576/353746.terrain new file mode 100644 index 000000000..b9aa257ac Binary files /dev/null and b/public/terrain/19/858576/353746.terrain differ diff --git a/public/terrain/19/858576/353747.terrain b/public/terrain/19/858576/353747.terrain new file mode 100644 index 000000000..2df4f318d Binary files /dev/null and b/public/terrain/19/858576/353747.terrain differ diff --git a/public/terrain/19/858576/353748.terrain b/public/terrain/19/858576/353748.terrain new file mode 100644 index 000000000..2b7b134a1 Binary files /dev/null and b/public/terrain/19/858576/353748.terrain differ diff --git a/public/terrain/19/858576/353749.terrain b/public/terrain/19/858576/353749.terrain new file mode 100644 index 000000000..841a36b84 Binary files /dev/null and b/public/terrain/19/858576/353749.terrain differ diff --git a/public/terrain/19/858576/353750.terrain b/public/terrain/19/858576/353750.terrain new file mode 100644 index 000000000..60dbee8fd Binary files /dev/null and b/public/terrain/19/858576/353750.terrain differ diff --git a/public/terrain/19/858576/353751.terrain b/public/terrain/19/858576/353751.terrain new file mode 100644 index 000000000..f71529642 Binary files /dev/null and b/public/terrain/19/858576/353751.terrain differ diff --git a/public/terrain/19/858576/353752.terrain b/public/terrain/19/858576/353752.terrain new file mode 100644 index 000000000..e7fb425ed Binary files /dev/null and b/public/terrain/19/858576/353752.terrain differ diff --git a/public/terrain/19/858576/353753.terrain b/public/terrain/19/858576/353753.terrain new file mode 100644 index 000000000..1220d73f2 Binary files /dev/null and b/public/terrain/19/858576/353753.terrain differ diff --git a/public/terrain/19/858576/353754.terrain b/public/terrain/19/858576/353754.terrain new file mode 100644 index 000000000..d179afa8d Binary files /dev/null and b/public/terrain/19/858576/353754.terrain differ diff --git a/public/terrain/19/858576/353755.terrain b/public/terrain/19/858576/353755.terrain new file mode 100644 index 000000000..56640b440 Binary files /dev/null and b/public/terrain/19/858576/353755.terrain differ diff --git a/public/terrain/19/858576/353756.terrain b/public/terrain/19/858576/353756.terrain new file mode 100644 index 000000000..961399232 Binary files /dev/null and b/public/terrain/19/858576/353756.terrain differ diff --git a/public/terrain/19/858576/353757.terrain b/public/terrain/19/858576/353757.terrain new file mode 100644 index 000000000..cb09c6791 Binary files /dev/null and b/public/terrain/19/858576/353757.terrain differ diff --git a/public/terrain/19/858576/353758.terrain b/public/terrain/19/858576/353758.terrain new file mode 100644 index 000000000..1464d4473 Binary files /dev/null and b/public/terrain/19/858576/353758.terrain differ diff --git a/public/terrain/19/858576/353759.terrain b/public/terrain/19/858576/353759.terrain new file mode 100644 index 000000000..815112ef7 Binary files /dev/null and b/public/terrain/19/858576/353759.terrain differ diff --git a/public/terrain/19/858576/353760.terrain b/public/terrain/19/858576/353760.terrain new file mode 100644 index 000000000..186f41255 Binary files /dev/null and b/public/terrain/19/858576/353760.terrain differ diff --git a/public/terrain/19/858576/353761.terrain b/public/terrain/19/858576/353761.terrain new file mode 100644 index 000000000..55ece6dd9 Binary files /dev/null and b/public/terrain/19/858576/353761.terrain differ diff --git a/public/terrain/19/858576/353762.terrain b/public/terrain/19/858576/353762.terrain new file mode 100644 index 000000000..d52918940 Binary files /dev/null and b/public/terrain/19/858576/353762.terrain differ diff --git a/public/terrain/19/858576/353763.terrain b/public/terrain/19/858576/353763.terrain new file mode 100644 index 000000000..7d4247dbb Binary files /dev/null and b/public/terrain/19/858576/353763.terrain differ diff --git a/public/terrain/19/858576/353764.terrain b/public/terrain/19/858576/353764.terrain new file mode 100644 index 000000000..0de2b66cf Binary files /dev/null and b/public/terrain/19/858576/353764.terrain differ diff --git a/public/terrain/19/858576/353765.terrain b/public/terrain/19/858576/353765.terrain new file mode 100644 index 000000000..cc5e69d78 Binary files /dev/null and b/public/terrain/19/858576/353765.terrain differ diff --git a/public/terrain/19/858576/353766.terrain b/public/terrain/19/858576/353766.terrain new file mode 100644 index 000000000..cb23107a0 Binary files /dev/null and b/public/terrain/19/858576/353766.terrain differ diff --git a/public/terrain/19/858576/353767.terrain b/public/terrain/19/858576/353767.terrain new file mode 100644 index 000000000..dacd341ef Binary files /dev/null and b/public/terrain/19/858576/353767.terrain differ diff --git a/public/terrain/19/858576/353768.terrain b/public/terrain/19/858576/353768.terrain new file mode 100644 index 000000000..b3ec854f3 Binary files /dev/null and b/public/terrain/19/858576/353768.terrain differ diff --git a/public/terrain/19/858576/353769.terrain b/public/terrain/19/858576/353769.terrain new file mode 100644 index 000000000..b86a32910 Binary files /dev/null and b/public/terrain/19/858576/353769.terrain differ diff --git a/public/terrain/19/858576/353770.terrain b/public/terrain/19/858576/353770.terrain new file mode 100644 index 000000000..7a7934d77 Binary files /dev/null and b/public/terrain/19/858576/353770.terrain differ diff --git a/public/terrain/19/858576/353771.terrain b/public/terrain/19/858576/353771.terrain new file mode 100644 index 000000000..1648d3c5e Binary files /dev/null and b/public/terrain/19/858576/353771.terrain differ diff --git a/public/terrain/19/858576/353772.terrain b/public/terrain/19/858576/353772.terrain new file mode 100644 index 000000000..eb9a82066 Binary files /dev/null and b/public/terrain/19/858576/353772.terrain differ diff --git a/public/terrain/19/858576/353773.terrain b/public/terrain/19/858576/353773.terrain new file mode 100644 index 000000000..8e5356a6f Binary files /dev/null and b/public/terrain/19/858576/353773.terrain differ diff --git a/public/terrain/19/858576/353774.terrain b/public/terrain/19/858576/353774.terrain new file mode 100644 index 000000000..6ce341322 Binary files /dev/null and b/public/terrain/19/858576/353774.terrain differ diff --git a/public/terrain/19/858576/353775.terrain b/public/terrain/19/858576/353775.terrain new file mode 100644 index 000000000..addb2c277 Binary files /dev/null and b/public/terrain/19/858576/353775.terrain differ diff --git a/public/terrain/19/858576/353776.terrain b/public/terrain/19/858576/353776.terrain new file mode 100644 index 000000000..f873cc15c Binary files /dev/null and b/public/terrain/19/858576/353776.terrain differ diff --git a/public/terrain/19/858576/353777.terrain b/public/terrain/19/858576/353777.terrain new file mode 100644 index 000000000..a423b07e5 Binary files /dev/null and b/public/terrain/19/858576/353777.terrain differ diff --git a/public/terrain/19/858576/353778.terrain b/public/terrain/19/858576/353778.terrain new file mode 100644 index 000000000..ed173e40b Binary files /dev/null and b/public/terrain/19/858576/353778.terrain differ diff --git a/public/terrain/19/858576/353779.terrain b/public/terrain/19/858576/353779.terrain new file mode 100644 index 000000000..f01f813a2 Binary files /dev/null and b/public/terrain/19/858576/353779.terrain differ diff --git a/public/terrain/19/858576/353780.terrain b/public/terrain/19/858576/353780.terrain new file mode 100644 index 000000000..86fe37296 Binary files /dev/null and b/public/terrain/19/858576/353780.terrain differ diff --git a/public/terrain/19/858576/353781.terrain b/public/terrain/19/858576/353781.terrain new file mode 100644 index 000000000..276a8dd99 Binary files /dev/null and b/public/terrain/19/858576/353781.terrain differ diff --git a/public/terrain/19/858576/353782.terrain b/public/terrain/19/858576/353782.terrain new file mode 100644 index 000000000..01861d0e1 Binary files /dev/null and b/public/terrain/19/858576/353782.terrain differ diff --git a/public/terrain/19/858576/353783.terrain b/public/terrain/19/858576/353783.terrain new file mode 100644 index 000000000..59b63a6c1 Binary files /dev/null and b/public/terrain/19/858576/353783.terrain differ diff --git a/public/terrain/19/858576/353784.terrain b/public/terrain/19/858576/353784.terrain new file mode 100644 index 000000000..1bf69b361 Binary files /dev/null and b/public/terrain/19/858576/353784.terrain differ diff --git a/public/terrain/19/858576/353785.terrain b/public/terrain/19/858576/353785.terrain new file mode 100644 index 000000000..43af67181 Binary files /dev/null and b/public/terrain/19/858576/353785.terrain differ diff --git a/public/terrain/19/858576/353786.terrain b/public/terrain/19/858576/353786.terrain new file mode 100644 index 000000000..c7a67698d Binary files /dev/null and b/public/terrain/19/858576/353786.terrain differ diff --git a/public/terrain/19/858576/353787.terrain b/public/terrain/19/858576/353787.terrain new file mode 100644 index 000000000..5fd55f158 Binary files /dev/null and b/public/terrain/19/858576/353787.terrain differ diff --git a/public/terrain/19/858576/353788.terrain b/public/terrain/19/858576/353788.terrain new file mode 100644 index 000000000..940cb1101 Binary files /dev/null and b/public/terrain/19/858576/353788.terrain differ diff --git a/public/terrain/19/858576/353789.terrain b/public/terrain/19/858576/353789.terrain new file mode 100644 index 000000000..c870dbfee Binary files /dev/null and b/public/terrain/19/858576/353789.terrain differ diff --git a/public/terrain/19/858576/353790.terrain b/public/terrain/19/858576/353790.terrain new file mode 100644 index 000000000..3790b2631 Binary files /dev/null and b/public/terrain/19/858576/353790.terrain differ diff --git a/public/terrain/19/858576/353791.terrain b/public/terrain/19/858576/353791.terrain new file mode 100644 index 000000000..130340409 Binary files /dev/null and b/public/terrain/19/858576/353791.terrain differ diff --git a/public/terrain/19/858576/353792.terrain b/public/terrain/19/858576/353792.terrain new file mode 100644 index 000000000..9958b2e3a Binary files /dev/null and b/public/terrain/19/858576/353792.terrain differ diff --git a/public/terrain/19/858576/353793.terrain b/public/terrain/19/858576/353793.terrain new file mode 100644 index 000000000..714c8d572 Binary files /dev/null and b/public/terrain/19/858576/353793.terrain differ diff --git a/public/terrain/19/858576/353794.terrain b/public/terrain/19/858576/353794.terrain new file mode 100644 index 000000000..aaf3a46e7 Binary files /dev/null and b/public/terrain/19/858576/353794.terrain differ diff --git a/public/terrain/19/858576/353795.terrain b/public/terrain/19/858576/353795.terrain new file mode 100644 index 000000000..9ba6a24da Binary files /dev/null and b/public/terrain/19/858576/353795.terrain differ diff --git a/public/terrain/19/858576/353796.terrain b/public/terrain/19/858576/353796.terrain new file mode 100644 index 000000000..e5a35649d Binary files /dev/null and b/public/terrain/19/858576/353796.terrain differ diff --git a/public/terrain/19/858576/353797.terrain b/public/terrain/19/858576/353797.terrain new file mode 100644 index 000000000..8fa86b1df Binary files /dev/null and b/public/terrain/19/858576/353797.terrain differ diff --git a/public/terrain/19/858576/353798.terrain b/public/terrain/19/858576/353798.terrain new file mode 100644 index 000000000..6573fc33c Binary files /dev/null and b/public/terrain/19/858576/353798.terrain differ diff --git a/public/terrain/19/858576/353799.terrain b/public/terrain/19/858576/353799.terrain new file mode 100644 index 000000000..23d8d962f Binary files /dev/null and b/public/terrain/19/858576/353799.terrain differ diff --git a/public/terrain/19/858576/353800.terrain b/public/terrain/19/858576/353800.terrain new file mode 100644 index 000000000..b0fcfbcf3 Binary files /dev/null and b/public/terrain/19/858576/353800.terrain differ diff --git a/public/terrain/19/858576/353801.terrain b/public/terrain/19/858576/353801.terrain new file mode 100644 index 000000000..dc9f4bdd8 Binary files /dev/null and b/public/terrain/19/858576/353801.terrain differ diff --git a/public/terrain/19/858576/353802.terrain b/public/terrain/19/858576/353802.terrain new file mode 100644 index 000000000..324c11dc4 Binary files /dev/null and b/public/terrain/19/858576/353802.terrain differ diff --git a/public/terrain/19/858576/353803.terrain b/public/terrain/19/858576/353803.terrain new file mode 100644 index 000000000..48aca5e8a Binary files /dev/null and b/public/terrain/19/858576/353803.terrain differ diff --git a/public/terrain/19/858576/353804.terrain b/public/terrain/19/858576/353804.terrain new file mode 100644 index 000000000..72f095de0 Binary files /dev/null and b/public/terrain/19/858576/353804.terrain differ diff --git a/public/terrain/19/858576/353805.terrain b/public/terrain/19/858576/353805.terrain new file mode 100644 index 000000000..6c073460d Binary files /dev/null and b/public/terrain/19/858576/353805.terrain differ diff --git a/public/terrain/19/858576/353806.terrain b/public/terrain/19/858576/353806.terrain new file mode 100644 index 000000000..9f675fd47 Binary files /dev/null and b/public/terrain/19/858576/353806.terrain differ diff --git a/public/terrain/19/858576/353807.terrain b/public/terrain/19/858576/353807.terrain new file mode 100644 index 000000000..7c329d261 Binary files /dev/null and b/public/terrain/19/858576/353807.terrain differ diff --git a/public/terrain/19/858576/353808.terrain b/public/terrain/19/858576/353808.terrain new file mode 100644 index 000000000..c2c34584a Binary files /dev/null and b/public/terrain/19/858576/353808.terrain differ diff --git a/public/terrain/19/858576/353809.terrain b/public/terrain/19/858576/353809.terrain new file mode 100644 index 000000000..86119eee5 Binary files /dev/null and b/public/terrain/19/858576/353809.terrain differ diff --git a/public/terrain/19/858576/353810.terrain b/public/terrain/19/858576/353810.terrain new file mode 100644 index 000000000..acd23dc9b Binary files /dev/null and b/public/terrain/19/858576/353810.terrain differ diff --git a/public/terrain/19/858576/353811.terrain b/public/terrain/19/858576/353811.terrain new file mode 100644 index 000000000..25dea472f Binary files /dev/null and b/public/terrain/19/858576/353811.terrain differ diff --git a/public/terrain/19/858576/353812.terrain b/public/terrain/19/858576/353812.terrain new file mode 100644 index 000000000..e41a95a62 Binary files /dev/null and b/public/terrain/19/858576/353812.terrain differ diff --git a/public/terrain/19/858576/353813.terrain b/public/terrain/19/858576/353813.terrain new file mode 100644 index 000000000..a94d4992e Binary files /dev/null and b/public/terrain/19/858576/353813.terrain differ diff --git a/public/terrain/19/858576/353814.terrain b/public/terrain/19/858576/353814.terrain new file mode 100644 index 000000000..1c56e49d6 Binary files /dev/null and b/public/terrain/19/858576/353814.terrain differ diff --git a/public/terrain/19/858576/353815.terrain b/public/terrain/19/858576/353815.terrain new file mode 100644 index 000000000..27eedb748 Binary files /dev/null and b/public/terrain/19/858576/353815.terrain differ diff --git a/public/terrain/19/858576/353816.terrain b/public/terrain/19/858576/353816.terrain new file mode 100644 index 000000000..269f7e509 Binary files /dev/null and b/public/terrain/19/858576/353816.terrain differ diff --git a/public/terrain/19/858576/353817.terrain b/public/terrain/19/858576/353817.terrain new file mode 100644 index 000000000..4e403698a Binary files /dev/null and b/public/terrain/19/858576/353817.terrain differ diff --git a/public/terrain/19/858576/353818.terrain b/public/terrain/19/858576/353818.terrain new file mode 100644 index 000000000..a1e61237b Binary files /dev/null and b/public/terrain/19/858576/353818.terrain differ diff --git a/public/terrain/19/858576/353819.terrain b/public/terrain/19/858576/353819.terrain new file mode 100644 index 000000000..96362786f Binary files /dev/null and b/public/terrain/19/858576/353819.terrain differ diff --git a/public/terrain/19/858576/353820.terrain b/public/terrain/19/858576/353820.terrain new file mode 100644 index 000000000..97b35178f Binary files /dev/null and b/public/terrain/19/858576/353820.terrain differ diff --git a/public/terrain/19/858576/353821.terrain b/public/terrain/19/858576/353821.terrain new file mode 100644 index 000000000..60ca33d3d Binary files /dev/null and b/public/terrain/19/858576/353821.terrain differ diff --git a/public/terrain/19/858576/353822.terrain b/public/terrain/19/858576/353822.terrain new file mode 100644 index 000000000..3aaa810c6 Binary files /dev/null and b/public/terrain/19/858576/353822.terrain differ diff --git a/public/terrain/19/858576/353823.terrain b/public/terrain/19/858576/353823.terrain new file mode 100644 index 000000000..5a45de1bf Binary files /dev/null and b/public/terrain/19/858576/353823.terrain differ diff --git a/public/terrain/19/858576/353824.terrain b/public/terrain/19/858576/353824.terrain new file mode 100644 index 000000000..b9fcf9c24 Binary files /dev/null and b/public/terrain/19/858576/353824.terrain differ diff --git a/public/terrain/19/858576/353825.terrain b/public/terrain/19/858576/353825.terrain new file mode 100644 index 000000000..4b6048444 Binary files /dev/null and b/public/terrain/19/858576/353825.terrain differ diff --git a/public/terrain/19/858576/353826.terrain b/public/terrain/19/858576/353826.terrain new file mode 100644 index 000000000..3cdc7fb2e Binary files /dev/null and b/public/terrain/19/858576/353826.terrain differ diff --git a/public/terrain/19/858576/353827.terrain b/public/terrain/19/858576/353827.terrain new file mode 100644 index 000000000..5e8e11026 Binary files /dev/null and b/public/terrain/19/858576/353827.terrain differ diff --git a/public/terrain/19/858576/353828.terrain b/public/terrain/19/858576/353828.terrain new file mode 100644 index 000000000..d96779a64 Binary files /dev/null and b/public/terrain/19/858576/353828.terrain differ diff --git a/public/terrain/19/858576/353829.terrain b/public/terrain/19/858576/353829.terrain new file mode 100644 index 000000000..227e8e50e Binary files /dev/null and b/public/terrain/19/858576/353829.terrain differ diff --git a/public/terrain/19/858576/353830.terrain b/public/terrain/19/858576/353830.terrain new file mode 100644 index 000000000..4d385287c Binary files /dev/null and b/public/terrain/19/858576/353830.terrain differ diff --git a/public/terrain/19/858576/353831.terrain b/public/terrain/19/858576/353831.terrain new file mode 100644 index 000000000..03b99ab4e Binary files /dev/null and b/public/terrain/19/858576/353831.terrain differ diff --git a/public/terrain/19/858576/353832.terrain b/public/terrain/19/858576/353832.terrain new file mode 100644 index 000000000..1c7fb6de3 Binary files /dev/null and b/public/terrain/19/858576/353832.terrain differ diff --git a/public/terrain/19/858576/353833.terrain b/public/terrain/19/858576/353833.terrain new file mode 100644 index 000000000..fc11eabde Binary files /dev/null and b/public/terrain/19/858576/353833.terrain differ diff --git a/public/terrain/19/858576/353834.terrain b/public/terrain/19/858576/353834.terrain new file mode 100644 index 000000000..5b90298e6 Binary files /dev/null and b/public/terrain/19/858576/353834.terrain differ diff --git a/public/terrain/19/858576/353835.terrain b/public/terrain/19/858576/353835.terrain new file mode 100644 index 000000000..c9b14c1ba Binary files /dev/null and b/public/terrain/19/858576/353835.terrain differ diff --git a/public/terrain/19/858576/353836.terrain b/public/terrain/19/858576/353836.terrain new file mode 100644 index 000000000..4a25602cc Binary files /dev/null and b/public/terrain/19/858576/353836.terrain differ diff --git a/public/terrain/19/858576/353837.terrain b/public/terrain/19/858576/353837.terrain new file mode 100644 index 000000000..8b94ed3c4 Binary files /dev/null and b/public/terrain/19/858576/353837.terrain differ diff --git a/public/terrain/19/858576/353838.terrain b/public/terrain/19/858576/353838.terrain new file mode 100644 index 000000000..79db14940 Binary files /dev/null and b/public/terrain/19/858576/353838.terrain differ diff --git a/public/terrain/19/858576/353839.terrain b/public/terrain/19/858576/353839.terrain new file mode 100644 index 000000000..ca0ab8331 Binary files /dev/null and b/public/terrain/19/858576/353839.terrain differ diff --git a/public/terrain/19/858576/353840.terrain b/public/terrain/19/858576/353840.terrain new file mode 100644 index 000000000..ef3392482 Binary files /dev/null and b/public/terrain/19/858576/353840.terrain differ diff --git a/public/terrain/19/858576/353841.terrain b/public/terrain/19/858576/353841.terrain new file mode 100644 index 000000000..750fc8615 Binary files /dev/null and b/public/terrain/19/858576/353841.terrain differ diff --git a/public/terrain/19/858576/353842.terrain b/public/terrain/19/858576/353842.terrain new file mode 100644 index 000000000..159c85476 Binary files /dev/null and b/public/terrain/19/858576/353842.terrain differ diff --git a/public/terrain/19/858576/353843.terrain b/public/terrain/19/858576/353843.terrain new file mode 100644 index 000000000..f514e681c Binary files /dev/null and b/public/terrain/19/858576/353843.terrain differ diff --git a/public/terrain/19/858576/353844.terrain b/public/terrain/19/858576/353844.terrain new file mode 100644 index 000000000..314105730 Binary files /dev/null and b/public/terrain/19/858576/353844.terrain differ diff --git a/public/terrain/19/858576/353845.terrain b/public/terrain/19/858576/353845.terrain new file mode 100644 index 000000000..e097a4d33 Binary files /dev/null and b/public/terrain/19/858576/353845.terrain differ diff --git a/public/terrain/19/858576/353846.terrain b/public/terrain/19/858576/353846.terrain new file mode 100644 index 000000000..99d1df891 Binary files /dev/null and b/public/terrain/19/858576/353846.terrain differ diff --git a/public/terrain/19/858576/353847.terrain b/public/terrain/19/858576/353847.terrain new file mode 100644 index 000000000..49221a499 Binary files /dev/null and b/public/terrain/19/858576/353847.terrain differ diff --git a/public/terrain/19/858576/353848.terrain b/public/terrain/19/858576/353848.terrain new file mode 100644 index 000000000..abec6aed8 Binary files /dev/null and b/public/terrain/19/858576/353848.terrain differ diff --git a/public/terrain/19/858576/353849.terrain b/public/terrain/19/858576/353849.terrain new file mode 100644 index 000000000..005cc8cdb Binary files /dev/null and b/public/terrain/19/858576/353849.terrain differ diff --git a/public/terrain/19/858576/353850.terrain b/public/terrain/19/858576/353850.terrain new file mode 100644 index 000000000..442df54d1 Binary files /dev/null and b/public/terrain/19/858576/353850.terrain differ diff --git a/public/terrain/19/858576/353851.terrain b/public/terrain/19/858576/353851.terrain new file mode 100644 index 000000000..553e8eaf6 Binary files /dev/null and b/public/terrain/19/858576/353851.terrain differ diff --git a/public/terrain/19/858576/353852.terrain b/public/terrain/19/858576/353852.terrain new file mode 100644 index 000000000..776b0effc Binary files /dev/null and b/public/terrain/19/858576/353852.terrain differ diff --git a/public/terrain/19/858576/353853.terrain b/public/terrain/19/858576/353853.terrain new file mode 100644 index 000000000..a72a5864b Binary files /dev/null and b/public/terrain/19/858576/353853.terrain differ diff --git a/public/terrain/19/858576/353854.terrain b/public/terrain/19/858576/353854.terrain new file mode 100644 index 000000000..dfaf83720 Binary files /dev/null and b/public/terrain/19/858576/353854.terrain differ diff --git a/public/terrain/19/858576/353855.terrain b/public/terrain/19/858576/353855.terrain new file mode 100644 index 000000000..1381a06e4 Binary files /dev/null and b/public/terrain/19/858576/353855.terrain differ diff --git a/public/terrain/19/858576/353856.terrain b/public/terrain/19/858576/353856.terrain new file mode 100644 index 000000000..ac8928973 Binary files /dev/null and b/public/terrain/19/858576/353856.terrain differ diff --git a/public/terrain/19/858576/353857.terrain b/public/terrain/19/858576/353857.terrain new file mode 100644 index 000000000..7411e984b Binary files /dev/null and b/public/terrain/19/858576/353857.terrain differ diff --git a/public/terrain/19/858576/353858.terrain b/public/terrain/19/858576/353858.terrain new file mode 100644 index 000000000..d3438d55a Binary files /dev/null and b/public/terrain/19/858576/353858.terrain differ diff --git a/public/terrain/19/858576/353859.terrain b/public/terrain/19/858576/353859.terrain new file mode 100644 index 000000000..b775d4d3c Binary files /dev/null and b/public/terrain/19/858576/353859.terrain differ diff --git a/public/terrain/19/858576/353860.terrain b/public/terrain/19/858576/353860.terrain new file mode 100644 index 000000000..c0c62d131 Binary files /dev/null and b/public/terrain/19/858576/353860.terrain differ diff --git a/public/terrain/19/858576/353861.terrain b/public/terrain/19/858576/353861.terrain new file mode 100644 index 000000000..0b6ebc406 Binary files /dev/null and b/public/terrain/19/858576/353861.terrain differ diff --git a/public/terrain/19/858576/353862.terrain b/public/terrain/19/858576/353862.terrain new file mode 100644 index 000000000..df404d41b Binary files /dev/null and b/public/terrain/19/858576/353862.terrain differ diff --git a/public/terrain/19/858576/353863.terrain b/public/terrain/19/858576/353863.terrain new file mode 100644 index 000000000..dbf318073 Binary files /dev/null and b/public/terrain/19/858576/353863.terrain differ diff --git a/public/terrain/19/858576/353864.terrain b/public/terrain/19/858576/353864.terrain new file mode 100644 index 000000000..8f95b769c Binary files /dev/null and b/public/terrain/19/858576/353864.terrain differ diff --git a/public/terrain/19/858576/353865.terrain b/public/terrain/19/858576/353865.terrain new file mode 100644 index 000000000..933be96ae Binary files /dev/null and b/public/terrain/19/858576/353865.terrain differ diff --git a/public/terrain/19/858576/353866.terrain b/public/terrain/19/858576/353866.terrain new file mode 100644 index 000000000..9057ed682 Binary files /dev/null and b/public/terrain/19/858576/353866.terrain differ diff --git a/public/terrain/19/858576/353867.terrain b/public/terrain/19/858576/353867.terrain new file mode 100644 index 000000000..f441f5d68 Binary files /dev/null and b/public/terrain/19/858576/353867.terrain differ diff --git a/public/terrain/19/858576/353868.terrain b/public/terrain/19/858576/353868.terrain new file mode 100644 index 000000000..0b919f06c Binary files /dev/null and b/public/terrain/19/858576/353868.terrain differ diff --git a/public/terrain/19/858576/353869.terrain b/public/terrain/19/858576/353869.terrain new file mode 100644 index 000000000..c1fe0fad7 Binary files /dev/null and b/public/terrain/19/858576/353869.terrain differ diff --git a/public/terrain/19/858576/353870.terrain b/public/terrain/19/858576/353870.terrain new file mode 100644 index 000000000..c71f3f351 Binary files /dev/null and b/public/terrain/19/858576/353870.terrain differ diff --git a/public/terrain/19/858576/353871.terrain b/public/terrain/19/858576/353871.terrain new file mode 100644 index 000000000..5dad10a00 Binary files /dev/null and b/public/terrain/19/858576/353871.terrain differ diff --git a/public/terrain/19/858576/353872.terrain b/public/terrain/19/858576/353872.terrain new file mode 100644 index 000000000..d6b331aac Binary files /dev/null and b/public/terrain/19/858576/353872.terrain differ diff --git a/public/terrain/19/858576/353873.terrain b/public/terrain/19/858576/353873.terrain new file mode 100644 index 000000000..6824fd1f4 Binary files /dev/null and b/public/terrain/19/858576/353873.terrain differ diff --git a/public/terrain/19/858576/353874.terrain b/public/terrain/19/858576/353874.terrain new file mode 100644 index 000000000..29d205201 Binary files /dev/null and b/public/terrain/19/858576/353874.terrain differ diff --git a/public/terrain/19/858576/353875.terrain b/public/terrain/19/858576/353875.terrain new file mode 100644 index 000000000..1462515ca Binary files /dev/null and b/public/terrain/19/858576/353875.terrain differ diff --git a/public/terrain/19/858576/353876.terrain b/public/terrain/19/858576/353876.terrain new file mode 100644 index 000000000..aae1d04c8 Binary files /dev/null and b/public/terrain/19/858576/353876.terrain differ diff --git a/public/terrain/19/858576/353877.terrain b/public/terrain/19/858576/353877.terrain new file mode 100644 index 000000000..6d69062ce Binary files /dev/null and b/public/terrain/19/858576/353877.terrain differ diff --git a/public/terrain/19/858576/353878.terrain b/public/terrain/19/858576/353878.terrain new file mode 100644 index 000000000..991b04d93 Binary files /dev/null and b/public/terrain/19/858576/353878.terrain differ diff --git a/public/terrain/19/858576/353879.terrain b/public/terrain/19/858576/353879.terrain new file mode 100644 index 000000000..17c0cfe57 Binary files /dev/null and b/public/terrain/19/858576/353879.terrain differ diff --git a/public/terrain/19/858576/353880.terrain b/public/terrain/19/858576/353880.terrain new file mode 100644 index 000000000..d2f6d1f0f Binary files /dev/null and b/public/terrain/19/858576/353880.terrain differ diff --git a/public/terrain/19/858576/353881.terrain b/public/terrain/19/858576/353881.terrain new file mode 100644 index 000000000..dee7095fe Binary files /dev/null and b/public/terrain/19/858576/353881.terrain differ diff --git a/public/terrain/19/858576/353882.terrain b/public/terrain/19/858576/353882.terrain new file mode 100644 index 000000000..51a7287c4 Binary files /dev/null and b/public/terrain/19/858576/353882.terrain differ diff --git a/public/terrain/19/858576/353883.terrain b/public/terrain/19/858576/353883.terrain new file mode 100644 index 000000000..851a75065 Binary files /dev/null and b/public/terrain/19/858576/353883.terrain differ diff --git a/public/terrain/19/858576/353884.terrain b/public/terrain/19/858576/353884.terrain new file mode 100644 index 000000000..686ef24f2 Binary files /dev/null and b/public/terrain/19/858576/353884.terrain differ diff --git a/public/terrain/19/858576/353885.terrain b/public/terrain/19/858576/353885.terrain new file mode 100644 index 000000000..ea8d990e5 Binary files /dev/null and b/public/terrain/19/858576/353885.terrain differ diff --git a/public/terrain/19/858576/353886.terrain b/public/terrain/19/858576/353886.terrain new file mode 100644 index 000000000..e05dfdcab Binary files /dev/null and b/public/terrain/19/858576/353886.terrain differ diff --git a/public/terrain/19/858576/353887.terrain b/public/terrain/19/858576/353887.terrain new file mode 100644 index 000000000..f3ae2776c Binary files /dev/null and b/public/terrain/19/858576/353887.terrain differ diff --git a/public/terrain/19/858576/353888.terrain b/public/terrain/19/858576/353888.terrain new file mode 100644 index 000000000..1813ff700 Binary files /dev/null and b/public/terrain/19/858576/353888.terrain differ diff --git a/public/terrain/19/858576/353889.terrain b/public/terrain/19/858576/353889.terrain new file mode 100644 index 000000000..f55b537b9 Binary files /dev/null and b/public/terrain/19/858576/353889.terrain differ diff --git a/public/terrain/19/858576/353890.terrain b/public/terrain/19/858576/353890.terrain new file mode 100644 index 000000000..98e160d94 Binary files /dev/null and b/public/terrain/19/858576/353890.terrain differ diff --git a/public/terrain/19/858576/353891.terrain b/public/terrain/19/858576/353891.terrain new file mode 100644 index 000000000..d6f40e1c4 Binary files /dev/null and b/public/terrain/19/858576/353891.terrain differ diff --git a/public/terrain/19/858576/353892.terrain b/public/terrain/19/858576/353892.terrain new file mode 100644 index 000000000..b475e311a Binary files /dev/null and b/public/terrain/19/858576/353892.terrain differ diff --git a/public/terrain/19/858576/353893.terrain b/public/terrain/19/858576/353893.terrain new file mode 100644 index 000000000..faf5ad724 Binary files /dev/null and b/public/terrain/19/858576/353893.terrain differ diff --git a/public/terrain/19/858576/353894.terrain b/public/terrain/19/858576/353894.terrain new file mode 100644 index 000000000..9dd66b2b7 Binary files /dev/null and b/public/terrain/19/858576/353894.terrain differ diff --git a/public/terrain/19/858576/353895.terrain b/public/terrain/19/858576/353895.terrain new file mode 100644 index 000000000..a5458585c Binary files /dev/null and b/public/terrain/19/858576/353895.terrain differ diff --git a/public/terrain/19/858576/353896.terrain b/public/terrain/19/858576/353896.terrain new file mode 100644 index 000000000..a8c4bda9b Binary files /dev/null and b/public/terrain/19/858576/353896.terrain differ diff --git a/public/terrain/19/858576/353897.terrain b/public/terrain/19/858576/353897.terrain new file mode 100644 index 000000000..9b66d6dfb Binary files /dev/null and b/public/terrain/19/858576/353897.terrain differ diff --git a/public/terrain/19/858576/353898.terrain b/public/terrain/19/858576/353898.terrain new file mode 100644 index 000000000..e46a884bf Binary files /dev/null and b/public/terrain/19/858576/353898.terrain differ diff --git a/public/terrain/19/858576/353899.terrain b/public/terrain/19/858576/353899.terrain new file mode 100644 index 000000000..6ad3ee55a Binary files /dev/null and b/public/terrain/19/858576/353899.terrain differ diff --git a/public/terrain/19/858576/353900.terrain b/public/terrain/19/858576/353900.terrain new file mode 100644 index 000000000..b78255b03 Binary files /dev/null and b/public/terrain/19/858576/353900.terrain differ diff --git a/public/terrain/19/858576/353901.terrain b/public/terrain/19/858576/353901.terrain new file mode 100644 index 000000000..51ae3c44f Binary files /dev/null and b/public/terrain/19/858576/353901.terrain differ diff --git a/public/terrain/19/858576/353902.terrain b/public/terrain/19/858576/353902.terrain new file mode 100644 index 000000000..79b53ed6a Binary files /dev/null and b/public/terrain/19/858576/353902.terrain differ diff --git a/public/terrain/19/858576/353903.terrain b/public/terrain/19/858576/353903.terrain new file mode 100644 index 000000000..019f6b131 Binary files /dev/null and b/public/terrain/19/858576/353903.terrain differ diff --git a/public/terrain/19/858576/353904.terrain b/public/terrain/19/858576/353904.terrain new file mode 100644 index 000000000..00d89d532 Binary files /dev/null and b/public/terrain/19/858576/353904.terrain differ diff --git a/public/terrain/19/858576/353905.terrain b/public/terrain/19/858576/353905.terrain new file mode 100644 index 000000000..d41b9342f Binary files /dev/null and b/public/terrain/19/858576/353905.terrain differ diff --git a/public/terrain/19/858576/353906.terrain b/public/terrain/19/858576/353906.terrain new file mode 100644 index 000000000..3b92a3c00 Binary files /dev/null and b/public/terrain/19/858576/353906.terrain differ diff --git a/public/terrain/19/858576/353907.terrain b/public/terrain/19/858576/353907.terrain new file mode 100644 index 000000000..36703dd23 Binary files /dev/null and b/public/terrain/19/858576/353907.terrain differ diff --git a/public/terrain/19/858576/353908.terrain b/public/terrain/19/858576/353908.terrain new file mode 100644 index 000000000..c222278ef Binary files /dev/null and b/public/terrain/19/858576/353908.terrain differ diff --git a/public/terrain/19/858576/353909.terrain b/public/terrain/19/858576/353909.terrain new file mode 100644 index 000000000..0dcb660ab Binary files /dev/null and b/public/terrain/19/858576/353909.terrain differ diff --git a/public/terrain/19/858576/353910.terrain b/public/terrain/19/858576/353910.terrain new file mode 100644 index 000000000..93f57bddf Binary files /dev/null and b/public/terrain/19/858576/353910.terrain differ diff --git a/public/terrain/19/858576/353911.terrain b/public/terrain/19/858576/353911.terrain new file mode 100644 index 000000000..dfbaee883 Binary files /dev/null and b/public/terrain/19/858576/353911.terrain differ diff --git a/public/terrain/19/858576/353912.terrain b/public/terrain/19/858576/353912.terrain new file mode 100644 index 000000000..c1ab69225 Binary files /dev/null and b/public/terrain/19/858576/353912.terrain differ diff --git a/public/terrain/19/858576/353913.terrain b/public/terrain/19/858576/353913.terrain new file mode 100644 index 000000000..bc8460024 Binary files /dev/null and b/public/terrain/19/858576/353913.terrain differ diff --git a/public/terrain/19/858576/353914.terrain b/public/terrain/19/858576/353914.terrain new file mode 100644 index 000000000..c9b11e1a7 Binary files /dev/null and b/public/terrain/19/858576/353914.terrain differ diff --git a/public/terrain/19/858576/353915.terrain b/public/terrain/19/858576/353915.terrain new file mode 100644 index 000000000..8ff66481b Binary files /dev/null and b/public/terrain/19/858576/353915.terrain differ diff --git a/public/terrain/19/858576/353916.terrain b/public/terrain/19/858576/353916.terrain new file mode 100644 index 000000000..1baa3c8df Binary files /dev/null and b/public/terrain/19/858576/353916.terrain differ diff --git a/public/terrain/19/858576/353917.terrain b/public/terrain/19/858576/353917.terrain new file mode 100644 index 000000000..a752ec05a Binary files /dev/null and b/public/terrain/19/858576/353917.terrain differ diff --git a/public/terrain/19/858576/353918.terrain b/public/terrain/19/858576/353918.terrain new file mode 100644 index 000000000..aa455cd59 Binary files /dev/null and b/public/terrain/19/858576/353918.terrain differ diff --git a/public/terrain/19/858576/353919.terrain b/public/terrain/19/858576/353919.terrain new file mode 100644 index 000000000..2751039e8 Binary files /dev/null and b/public/terrain/19/858576/353919.terrain differ diff --git a/public/terrain/19/858576/353920.terrain b/public/terrain/19/858576/353920.terrain new file mode 100644 index 000000000..9388cc405 Binary files /dev/null and b/public/terrain/19/858576/353920.terrain differ diff --git a/public/terrain/19/858576/353921.terrain b/public/terrain/19/858576/353921.terrain new file mode 100644 index 000000000..87c9249e4 Binary files /dev/null and b/public/terrain/19/858576/353921.terrain differ diff --git a/public/terrain/19/858576/353922.terrain b/public/terrain/19/858576/353922.terrain new file mode 100644 index 000000000..b3e388dbf Binary files /dev/null and b/public/terrain/19/858576/353922.terrain differ diff --git a/public/terrain/19/858576/353923.terrain b/public/terrain/19/858576/353923.terrain new file mode 100644 index 000000000..1f55a8075 Binary files /dev/null and b/public/terrain/19/858576/353923.terrain differ diff --git a/public/terrain/19/858576/353924.terrain b/public/terrain/19/858576/353924.terrain new file mode 100644 index 000000000..c92918458 Binary files /dev/null and b/public/terrain/19/858576/353924.terrain differ diff --git a/public/terrain/19/858576/353925.terrain b/public/terrain/19/858576/353925.terrain new file mode 100644 index 000000000..a689b3cff Binary files /dev/null and b/public/terrain/19/858576/353925.terrain differ diff --git a/public/terrain/19/858576/353926.terrain b/public/terrain/19/858576/353926.terrain new file mode 100644 index 000000000..d39f3c2bd Binary files /dev/null and b/public/terrain/19/858576/353926.terrain differ diff --git a/public/terrain/19/858576/353927.terrain b/public/terrain/19/858576/353927.terrain new file mode 100644 index 000000000..50f8385b5 Binary files /dev/null and b/public/terrain/19/858576/353927.terrain differ diff --git a/public/terrain/19/858576/353928.terrain b/public/terrain/19/858576/353928.terrain new file mode 100644 index 000000000..4d41098a3 Binary files /dev/null and b/public/terrain/19/858576/353928.terrain differ diff --git a/public/terrain/19/858576/353929.terrain b/public/terrain/19/858576/353929.terrain new file mode 100644 index 000000000..8d175c136 Binary files /dev/null and b/public/terrain/19/858576/353929.terrain differ diff --git a/public/terrain/19/858576/353930.terrain b/public/terrain/19/858576/353930.terrain new file mode 100644 index 000000000..73af5df97 Binary files /dev/null and b/public/terrain/19/858576/353930.terrain differ diff --git a/public/terrain/19/858576/353931.terrain b/public/terrain/19/858576/353931.terrain new file mode 100644 index 000000000..c707ff5b3 Binary files /dev/null and b/public/terrain/19/858576/353931.terrain differ diff --git a/public/terrain/19/858576/353932.terrain b/public/terrain/19/858576/353932.terrain new file mode 100644 index 000000000..ee64997e6 Binary files /dev/null and b/public/terrain/19/858576/353932.terrain differ diff --git a/public/terrain/19/858576/353933.terrain b/public/terrain/19/858576/353933.terrain new file mode 100644 index 000000000..cac31dec4 Binary files /dev/null and b/public/terrain/19/858576/353933.terrain differ diff --git a/public/terrain/19/858576/353934.terrain b/public/terrain/19/858576/353934.terrain new file mode 100644 index 000000000..10b375826 Binary files /dev/null and b/public/terrain/19/858576/353934.terrain differ diff --git a/public/terrain/19/858576/353935.terrain b/public/terrain/19/858576/353935.terrain new file mode 100644 index 000000000..6b302bf2d Binary files /dev/null and b/public/terrain/19/858576/353935.terrain differ diff --git a/public/terrain/19/858576/353936.terrain b/public/terrain/19/858576/353936.terrain new file mode 100644 index 000000000..d2983d3be Binary files /dev/null and b/public/terrain/19/858576/353936.terrain differ diff --git a/public/terrain/19/858576/353937.terrain b/public/terrain/19/858576/353937.terrain new file mode 100644 index 000000000..973bdb6b6 Binary files /dev/null and b/public/terrain/19/858576/353937.terrain differ diff --git a/public/terrain/19/858576/353938.terrain b/public/terrain/19/858576/353938.terrain new file mode 100644 index 000000000..0432110a5 Binary files /dev/null and b/public/terrain/19/858576/353938.terrain differ diff --git a/public/terrain/19/858576/353939.terrain b/public/terrain/19/858576/353939.terrain new file mode 100644 index 000000000..0121249d9 Binary files /dev/null and b/public/terrain/19/858576/353939.terrain differ diff --git a/public/terrain/19/858576/353940.terrain b/public/terrain/19/858576/353940.terrain new file mode 100644 index 000000000..277320e89 Binary files /dev/null and b/public/terrain/19/858576/353940.terrain differ diff --git a/public/terrain/19/858576/353941.terrain b/public/terrain/19/858576/353941.terrain new file mode 100644 index 000000000..55f794f86 Binary files /dev/null and b/public/terrain/19/858576/353941.terrain differ diff --git a/public/terrain/19/858576/353942.terrain b/public/terrain/19/858576/353942.terrain new file mode 100644 index 000000000..422b92fd0 Binary files /dev/null and b/public/terrain/19/858576/353942.terrain differ diff --git a/public/terrain/19/858576/353943.terrain b/public/terrain/19/858576/353943.terrain new file mode 100644 index 000000000..7811a4eeb Binary files /dev/null and b/public/terrain/19/858576/353943.terrain differ diff --git a/public/terrain/19/858576/353944.terrain b/public/terrain/19/858576/353944.terrain new file mode 100644 index 000000000..6146b40c4 Binary files /dev/null and b/public/terrain/19/858576/353944.terrain differ diff --git a/public/terrain/19/858576/353945.terrain b/public/terrain/19/858576/353945.terrain new file mode 100644 index 000000000..1e7779337 Binary files /dev/null and b/public/terrain/19/858576/353945.terrain differ diff --git a/public/terrain/19/858576/353946.terrain b/public/terrain/19/858576/353946.terrain new file mode 100644 index 000000000..da421eb31 Binary files /dev/null and b/public/terrain/19/858576/353946.terrain differ diff --git a/public/terrain/19/858576/353947.terrain b/public/terrain/19/858576/353947.terrain new file mode 100644 index 000000000..0ad2c2163 Binary files /dev/null and b/public/terrain/19/858576/353947.terrain differ diff --git a/public/terrain/19/858576/353948.terrain b/public/terrain/19/858576/353948.terrain new file mode 100644 index 000000000..914b39d33 Binary files /dev/null and b/public/terrain/19/858576/353948.terrain differ diff --git a/public/terrain/19/858576/353949.terrain b/public/terrain/19/858576/353949.terrain new file mode 100644 index 000000000..19675c219 Binary files /dev/null and b/public/terrain/19/858576/353949.terrain differ diff --git a/public/terrain/19/858576/353950.terrain b/public/terrain/19/858576/353950.terrain new file mode 100644 index 000000000..9459dae79 Binary files /dev/null and b/public/terrain/19/858576/353950.terrain differ diff --git a/public/terrain/19/858576/353951.terrain b/public/terrain/19/858576/353951.terrain new file mode 100644 index 000000000..4f71ee868 Binary files /dev/null and b/public/terrain/19/858576/353951.terrain differ diff --git a/public/terrain/19/858576/353952.terrain b/public/terrain/19/858576/353952.terrain new file mode 100644 index 000000000..2b5be7d08 Binary files /dev/null and b/public/terrain/19/858576/353952.terrain differ diff --git a/public/terrain/19/858576/353953.terrain b/public/terrain/19/858576/353953.terrain new file mode 100644 index 000000000..329220cfc Binary files /dev/null and b/public/terrain/19/858576/353953.terrain differ diff --git a/public/terrain/19/858576/353954.terrain b/public/terrain/19/858576/353954.terrain new file mode 100644 index 000000000..f1b312ce0 Binary files /dev/null and b/public/terrain/19/858576/353954.terrain differ diff --git a/public/terrain/19/858576/353955.terrain b/public/terrain/19/858576/353955.terrain new file mode 100644 index 000000000..49057a478 Binary files /dev/null and b/public/terrain/19/858576/353955.terrain differ diff --git a/public/terrain/19/858576/353956.terrain b/public/terrain/19/858576/353956.terrain new file mode 100644 index 000000000..3bf1f028b Binary files /dev/null and b/public/terrain/19/858576/353956.terrain differ diff --git a/public/terrain/19/858576/353957.terrain b/public/terrain/19/858576/353957.terrain new file mode 100644 index 000000000..7b870ab7e Binary files /dev/null and b/public/terrain/19/858576/353957.terrain differ diff --git a/public/terrain/19/858576/353958.terrain b/public/terrain/19/858576/353958.terrain new file mode 100644 index 000000000..5dc9c78ba Binary files /dev/null and b/public/terrain/19/858576/353958.terrain differ diff --git a/public/terrain/19/858576/353959.terrain b/public/terrain/19/858576/353959.terrain new file mode 100644 index 000000000..19749329f Binary files /dev/null and b/public/terrain/19/858576/353959.terrain differ diff --git a/public/terrain/19/858576/353960.terrain b/public/terrain/19/858576/353960.terrain new file mode 100644 index 000000000..8b5774901 Binary files /dev/null and b/public/terrain/19/858576/353960.terrain differ diff --git a/public/terrain/19/858576/353961.terrain b/public/terrain/19/858576/353961.terrain new file mode 100644 index 000000000..c7352aefd Binary files /dev/null and b/public/terrain/19/858576/353961.terrain differ diff --git a/public/terrain/19/858576/353962.terrain b/public/terrain/19/858576/353962.terrain new file mode 100644 index 000000000..96dc04ecb Binary files /dev/null and b/public/terrain/19/858576/353962.terrain differ diff --git a/public/terrain/19/858576/353963.terrain b/public/terrain/19/858576/353963.terrain new file mode 100644 index 000000000..2b727e0c6 Binary files /dev/null and b/public/terrain/19/858576/353963.terrain differ diff --git a/public/terrain/19/858576/353964.terrain b/public/terrain/19/858576/353964.terrain new file mode 100644 index 000000000..65c64235d Binary files /dev/null and b/public/terrain/19/858576/353964.terrain differ diff --git a/public/terrain/19/858576/353965.terrain b/public/terrain/19/858576/353965.terrain new file mode 100644 index 000000000..2a3bce388 Binary files /dev/null and b/public/terrain/19/858576/353965.terrain differ diff --git a/public/terrain/19/858576/353966.terrain b/public/terrain/19/858576/353966.terrain new file mode 100644 index 000000000..74d74ce77 Binary files /dev/null and b/public/terrain/19/858576/353966.terrain differ diff --git a/public/terrain/19/858576/353967.terrain b/public/terrain/19/858576/353967.terrain new file mode 100644 index 000000000..8d8cee110 Binary files /dev/null and b/public/terrain/19/858576/353967.terrain differ diff --git a/public/terrain/19/858576/353968.terrain b/public/terrain/19/858576/353968.terrain new file mode 100644 index 000000000..62611a2f0 Binary files /dev/null and b/public/terrain/19/858576/353968.terrain differ diff --git a/public/terrain/19/858576/353969.terrain b/public/terrain/19/858576/353969.terrain new file mode 100644 index 000000000..8ac6018ba Binary files /dev/null and b/public/terrain/19/858576/353969.terrain differ diff --git a/public/terrain/19/858576/353970.terrain b/public/terrain/19/858576/353970.terrain new file mode 100644 index 000000000..f3986d0db Binary files /dev/null and b/public/terrain/19/858576/353970.terrain differ diff --git a/public/terrain/19/858576/353971.terrain b/public/terrain/19/858576/353971.terrain new file mode 100644 index 000000000..dbf202821 Binary files /dev/null and b/public/terrain/19/858576/353971.terrain differ diff --git a/public/terrain/19/858576/353972.terrain b/public/terrain/19/858576/353972.terrain new file mode 100644 index 000000000..5955512b9 Binary files /dev/null and b/public/terrain/19/858576/353972.terrain differ diff --git a/public/terrain/19/858576/353973.terrain b/public/terrain/19/858576/353973.terrain new file mode 100644 index 000000000..17c0caf8d Binary files /dev/null and b/public/terrain/19/858576/353973.terrain differ diff --git a/public/terrain/19/858576/353974.terrain b/public/terrain/19/858576/353974.terrain new file mode 100644 index 000000000..8ccf19bcf Binary files /dev/null and b/public/terrain/19/858576/353974.terrain differ diff --git a/public/terrain/19/858576/353975.terrain b/public/terrain/19/858576/353975.terrain new file mode 100644 index 000000000..e97da8202 Binary files /dev/null and b/public/terrain/19/858576/353975.terrain differ diff --git a/public/terrain/19/858576/353976.terrain b/public/terrain/19/858576/353976.terrain new file mode 100644 index 000000000..eef6ac5ba Binary files /dev/null and b/public/terrain/19/858576/353976.terrain differ diff --git a/public/terrain/19/858576/353977.terrain b/public/terrain/19/858576/353977.terrain new file mode 100644 index 000000000..605f32b3f Binary files /dev/null and b/public/terrain/19/858576/353977.terrain differ diff --git a/public/terrain/19/858576/353978.terrain b/public/terrain/19/858576/353978.terrain new file mode 100644 index 000000000..b609f3e70 Binary files /dev/null and b/public/terrain/19/858576/353978.terrain differ diff --git a/public/terrain/19/858576/353979.terrain b/public/terrain/19/858576/353979.terrain new file mode 100644 index 000000000..c8aa91aae Binary files /dev/null and b/public/terrain/19/858576/353979.terrain differ diff --git a/public/terrain/19/858576/353980.terrain b/public/terrain/19/858576/353980.terrain new file mode 100644 index 000000000..6dfe07ab8 Binary files /dev/null and b/public/terrain/19/858576/353980.terrain differ diff --git a/public/terrain/19/858576/353981.terrain b/public/terrain/19/858576/353981.terrain new file mode 100644 index 000000000..b0c124eb5 Binary files /dev/null and b/public/terrain/19/858576/353981.terrain differ diff --git a/public/terrain/19/858576/353982.terrain b/public/terrain/19/858576/353982.terrain new file mode 100644 index 000000000..7dd31d0d8 Binary files /dev/null and b/public/terrain/19/858576/353982.terrain differ diff --git a/public/terrain/19/858576/353983.terrain b/public/terrain/19/858576/353983.terrain new file mode 100644 index 000000000..6841dddd8 Binary files /dev/null and b/public/terrain/19/858576/353983.terrain differ diff --git a/public/terrain/19/858576/353984.terrain b/public/terrain/19/858576/353984.terrain new file mode 100644 index 000000000..8dd7b59df Binary files /dev/null and b/public/terrain/19/858576/353984.terrain differ diff --git a/public/terrain/19/858576/353985.terrain b/public/terrain/19/858576/353985.terrain new file mode 100644 index 000000000..ea904a45a Binary files /dev/null and b/public/terrain/19/858576/353985.terrain differ diff --git a/public/terrain/19/858576/353986.terrain b/public/terrain/19/858576/353986.terrain new file mode 100644 index 000000000..64d65e640 Binary files /dev/null and b/public/terrain/19/858576/353986.terrain differ diff --git a/public/terrain/19/858576/353987.terrain b/public/terrain/19/858576/353987.terrain new file mode 100644 index 000000000..39103a06b Binary files /dev/null and b/public/terrain/19/858576/353987.terrain differ diff --git a/public/terrain/19/858576/353988.terrain b/public/terrain/19/858576/353988.terrain new file mode 100644 index 000000000..891c91a9b Binary files /dev/null and b/public/terrain/19/858576/353988.terrain differ diff --git a/public/terrain/19/858576/353989.terrain b/public/terrain/19/858576/353989.terrain new file mode 100644 index 000000000..77d753d58 Binary files /dev/null and b/public/terrain/19/858576/353989.terrain differ diff --git a/public/terrain/19/858576/353990.terrain b/public/terrain/19/858576/353990.terrain new file mode 100644 index 000000000..ea693d0f6 Binary files /dev/null and b/public/terrain/19/858576/353990.terrain differ diff --git a/public/terrain/19/858576/353991.terrain b/public/terrain/19/858576/353991.terrain new file mode 100644 index 000000000..89ed14789 Binary files /dev/null and b/public/terrain/19/858576/353991.terrain differ diff --git a/public/terrain/19/858576/353992.terrain b/public/terrain/19/858576/353992.terrain new file mode 100644 index 000000000..5bd3cb810 Binary files /dev/null and b/public/terrain/19/858576/353992.terrain differ diff --git a/public/terrain/19/858576/353993.terrain b/public/terrain/19/858576/353993.terrain new file mode 100644 index 000000000..207f548c7 Binary files /dev/null and b/public/terrain/19/858576/353993.terrain differ diff --git a/public/terrain/19/858576/353994.terrain b/public/terrain/19/858576/353994.terrain new file mode 100644 index 000000000..10e742f29 Binary files /dev/null and b/public/terrain/19/858576/353994.terrain differ diff --git a/public/terrain/19/858576/353995.terrain b/public/terrain/19/858576/353995.terrain new file mode 100644 index 000000000..6f4cf5e3a Binary files /dev/null and b/public/terrain/19/858576/353995.terrain differ diff --git a/public/terrain/19/858576/353996.terrain b/public/terrain/19/858576/353996.terrain new file mode 100644 index 000000000..9584431ee Binary files /dev/null and b/public/terrain/19/858576/353996.terrain differ diff --git a/public/terrain/19/858576/353997.terrain b/public/terrain/19/858576/353997.terrain new file mode 100644 index 000000000..40ee5c7b1 Binary files /dev/null and b/public/terrain/19/858576/353997.terrain differ diff --git a/public/terrain/19/858576/353998.terrain b/public/terrain/19/858576/353998.terrain new file mode 100644 index 000000000..2d6e74b87 Binary files /dev/null and b/public/terrain/19/858576/353998.terrain differ diff --git a/public/terrain/19/858576/353999.terrain b/public/terrain/19/858576/353999.terrain new file mode 100644 index 000000000..ee1732ccb Binary files /dev/null and b/public/terrain/19/858576/353999.terrain differ diff --git a/public/terrain/19/858576/354000.terrain b/public/terrain/19/858576/354000.terrain new file mode 100644 index 000000000..4cb1d3643 Binary files /dev/null and b/public/terrain/19/858576/354000.terrain differ diff --git a/public/terrain/19/858576/354001.terrain b/public/terrain/19/858576/354001.terrain new file mode 100644 index 000000000..67fc1bea8 Binary files /dev/null and b/public/terrain/19/858576/354001.terrain differ diff --git a/public/terrain/19/858576/354002.terrain b/public/terrain/19/858576/354002.terrain new file mode 100644 index 000000000..5fb126d91 Binary files /dev/null and b/public/terrain/19/858576/354002.terrain differ diff --git a/public/terrain/19/858576/354003.terrain b/public/terrain/19/858576/354003.terrain new file mode 100644 index 000000000..0d0f394f3 Binary files /dev/null and b/public/terrain/19/858576/354003.terrain differ diff --git a/public/terrain/19/858576/354004.terrain b/public/terrain/19/858576/354004.terrain new file mode 100644 index 000000000..3a98b036d Binary files /dev/null and b/public/terrain/19/858576/354004.terrain differ diff --git a/public/terrain/19/858576/354005.terrain b/public/terrain/19/858576/354005.terrain new file mode 100644 index 000000000..1ff358cfe Binary files /dev/null and b/public/terrain/19/858576/354005.terrain differ diff --git a/public/terrain/19/858576/354006.terrain b/public/terrain/19/858576/354006.terrain new file mode 100644 index 000000000..85b631ff0 Binary files /dev/null and b/public/terrain/19/858576/354006.terrain differ diff --git a/public/terrain/19/858576/354007.terrain b/public/terrain/19/858576/354007.terrain new file mode 100644 index 000000000..de0719891 Binary files /dev/null and b/public/terrain/19/858576/354007.terrain differ diff --git a/public/terrain/19/858576/354008.terrain b/public/terrain/19/858576/354008.terrain new file mode 100644 index 000000000..7995bf7a4 Binary files /dev/null and b/public/terrain/19/858576/354008.terrain differ diff --git a/public/terrain/19/858576/354009.terrain b/public/terrain/19/858576/354009.terrain new file mode 100644 index 000000000..54ca071d7 Binary files /dev/null and b/public/terrain/19/858576/354009.terrain differ diff --git a/public/terrain/19/858576/354010.terrain b/public/terrain/19/858576/354010.terrain new file mode 100644 index 000000000..c947fd9e1 Binary files /dev/null and b/public/terrain/19/858576/354010.terrain differ diff --git a/public/terrain/19/858576/354011.terrain b/public/terrain/19/858576/354011.terrain new file mode 100644 index 000000000..ba9324ee2 Binary files /dev/null and b/public/terrain/19/858576/354011.terrain differ diff --git a/public/terrain/19/858576/354012.terrain b/public/terrain/19/858576/354012.terrain new file mode 100644 index 000000000..64251cb56 Binary files /dev/null and b/public/terrain/19/858576/354012.terrain differ diff --git a/public/terrain/19/858576/354013.terrain b/public/terrain/19/858576/354013.terrain new file mode 100644 index 000000000..5e3195b35 Binary files /dev/null and b/public/terrain/19/858576/354013.terrain differ diff --git a/public/terrain/19/858576/354014.terrain b/public/terrain/19/858576/354014.terrain new file mode 100644 index 000000000..461917315 Binary files /dev/null and b/public/terrain/19/858576/354014.terrain differ diff --git a/public/terrain/19/858576/354015.terrain b/public/terrain/19/858576/354015.terrain new file mode 100644 index 000000000..798c3fa9d Binary files /dev/null and b/public/terrain/19/858576/354015.terrain differ diff --git a/public/terrain/19/858576/354016.terrain b/public/terrain/19/858576/354016.terrain new file mode 100644 index 000000000..a06f2dbf0 Binary files /dev/null and b/public/terrain/19/858576/354016.terrain differ diff --git a/public/terrain/19/858576/354017.terrain b/public/terrain/19/858576/354017.terrain new file mode 100644 index 000000000..a8a7ec423 Binary files /dev/null and b/public/terrain/19/858576/354017.terrain differ diff --git a/public/terrain/19/858576/354018.terrain b/public/terrain/19/858576/354018.terrain new file mode 100644 index 000000000..1a7c7403b Binary files /dev/null and b/public/terrain/19/858576/354018.terrain differ diff --git a/public/terrain/19/858576/354019.terrain b/public/terrain/19/858576/354019.terrain new file mode 100644 index 000000000..4b59ac7f9 Binary files /dev/null and b/public/terrain/19/858576/354019.terrain differ diff --git a/public/terrain/19/858576/354020.terrain b/public/terrain/19/858576/354020.terrain new file mode 100644 index 000000000..eea972630 Binary files /dev/null and b/public/terrain/19/858576/354020.terrain differ diff --git a/public/terrain/19/858576/354021.terrain b/public/terrain/19/858576/354021.terrain new file mode 100644 index 000000000..2fe76481c Binary files /dev/null and b/public/terrain/19/858576/354021.terrain differ diff --git a/public/terrain/19/858576/354022.terrain b/public/terrain/19/858576/354022.terrain new file mode 100644 index 000000000..1c8b275c1 Binary files /dev/null and b/public/terrain/19/858576/354022.terrain differ diff --git a/public/terrain/19/858576/354023.terrain b/public/terrain/19/858576/354023.terrain new file mode 100644 index 000000000..b3b8a8209 Binary files /dev/null and b/public/terrain/19/858576/354023.terrain differ diff --git a/public/terrain/19/858576/354024.terrain b/public/terrain/19/858576/354024.terrain new file mode 100644 index 000000000..ab817b7e1 Binary files /dev/null and b/public/terrain/19/858576/354024.terrain differ diff --git a/public/terrain/19/858576/354025.terrain b/public/terrain/19/858576/354025.terrain new file mode 100644 index 000000000..2729cb882 Binary files /dev/null and b/public/terrain/19/858576/354025.terrain differ diff --git a/public/terrain/19/858576/354026.terrain b/public/terrain/19/858576/354026.terrain new file mode 100644 index 000000000..36eea9b5f Binary files /dev/null and b/public/terrain/19/858576/354026.terrain differ diff --git a/public/terrain/19/858576/354027.terrain b/public/terrain/19/858576/354027.terrain new file mode 100644 index 000000000..1458649f7 Binary files /dev/null and b/public/terrain/19/858576/354027.terrain differ diff --git a/public/terrain/19/858576/354028.terrain b/public/terrain/19/858576/354028.terrain new file mode 100644 index 000000000..b5fd2534e Binary files /dev/null and b/public/terrain/19/858576/354028.terrain differ diff --git a/public/terrain/19/858576/354029.terrain b/public/terrain/19/858576/354029.terrain new file mode 100644 index 000000000..f124cb22b Binary files /dev/null and b/public/terrain/19/858576/354029.terrain differ diff --git a/public/terrain/19/858576/354030.terrain b/public/terrain/19/858576/354030.terrain new file mode 100644 index 000000000..0cf68dbce Binary files /dev/null and b/public/terrain/19/858576/354030.terrain differ diff --git a/public/terrain/19/858576/354031.terrain b/public/terrain/19/858576/354031.terrain new file mode 100644 index 000000000..0c93c5d4e Binary files /dev/null and b/public/terrain/19/858576/354031.terrain differ diff --git a/public/terrain/19/858576/354032.terrain b/public/terrain/19/858576/354032.terrain new file mode 100644 index 000000000..091c89e3f Binary files /dev/null and b/public/terrain/19/858576/354032.terrain differ diff --git a/public/terrain/19/858576/354033.terrain b/public/terrain/19/858576/354033.terrain new file mode 100644 index 000000000..daa317e04 Binary files /dev/null and b/public/terrain/19/858576/354033.terrain differ diff --git a/public/terrain/19/858576/354034.terrain b/public/terrain/19/858576/354034.terrain new file mode 100644 index 000000000..12557f144 Binary files /dev/null and b/public/terrain/19/858576/354034.terrain differ diff --git a/public/terrain/19/858576/354035.terrain b/public/terrain/19/858576/354035.terrain new file mode 100644 index 000000000..99ce99559 Binary files /dev/null and b/public/terrain/19/858576/354035.terrain differ diff --git a/public/terrain/19/858576/354036.terrain b/public/terrain/19/858576/354036.terrain new file mode 100644 index 000000000..a461afec2 Binary files /dev/null and b/public/terrain/19/858576/354036.terrain differ diff --git a/public/terrain/19/858576/354037.terrain b/public/terrain/19/858576/354037.terrain new file mode 100644 index 000000000..964857bb9 Binary files /dev/null and b/public/terrain/19/858576/354037.terrain differ diff --git a/public/terrain/19/858576/354038.terrain b/public/terrain/19/858576/354038.terrain new file mode 100644 index 000000000..47b8a0a73 Binary files /dev/null and b/public/terrain/19/858576/354038.terrain differ diff --git a/public/terrain/19/858576/354039.terrain b/public/terrain/19/858576/354039.terrain new file mode 100644 index 000000000..b5ae27035 Binary files /dev/null and b/public/terrain/19/858576/354039.terrain differ diff --git a/public/terrain/19/858576/354040.terrain b/public/terrain/19/858576/354040.terrain new file mode 100644 index 000000000..52873b4d8 Binary files /dev/null and b/public/terrain/19/858576/354040.terrain differ diff --git a/public/terrain/19/858576/354041.terrain b/public/terrain/19/858576/354041.terrain new file mode 100644 index 000000000..63e8d6151 Binary files /dev/null and b/public/terrain/19/858576/354041.terrain differ diff --git a/public/terrain/19/858576/354042.terrain b/public/terrain/19/858576/354042.terrain new file mode 100644 index 000000000..a44c755e6 Binary files /dev/null and b/public/terrain/19/858576/354042.terrain differ diff --git a/public/terrain/19/858576/354043.terrain b/public/terrain/19/858576/354043.terrain new file mode 100644 index 000000000..744153ab1 Binary files /dev/null and b/public/terrain/19/858576/354043.terrain differ diff --git a/public/terrain/19/858576/354044.terrain b/public/terrain/19/858576/354044.terrain new file mode 100644 index 000000000..c58c915ed Binary files /dev/null and b/public/terrain/19/858576/354044.terrain differ diff --git a/public/terrain/19/858576/354045.terrain b/public/terrain/19/858576/354045.terrain new file mode 100644 index 000000000..1d3559dd8 Binary files /dev/null and b/public/terrain/19/858576/354045.terrain differ diff --git a/public/terrain/19/858576/354046.terrain b/public/terrain/19/858576/354046.terrain new file mode 100644 index 000000000..aa9583ae9 Binary files /dev/null and b/public/terrain/19/858576/354046.terrain differ diff --git a/public/terrain/19/858576/354047.terrain b/public/terrain/19/858576/354047.terrain new file mode 100644 index 000000000..11c232621 Binary files /dev/null and b/public/terrain/19/858576/354047.terrain differ diff --git a/public/terrain/19/858576/354048.terrain b/public/terrain/19/858576/354048.terrain new file mode 100644 index 000000000..928f82d9a Binary files /dev/null and b/public/terrain/19/858576/354048.terrain differ diff --git a/public/terrain/19/858576/354049.terrain b/public/terrain/19/858576/354049.terrain new file mode 100644 index 000000000..ed75a43cb Binary files /dev/null and b/public/terrain/19/858576/354049.terrain differ diff --git a/public/terrain/19/858576/354050.terrain b/public/terrain/19/858576/354050.terrain new file mode 100644 index 000000000..48fa10760 Binary files /dev/null and b/public/terrain/19/858576/354050.terrain differ diff --git a/public/terrain/19/858576/354051.terrain b/public/terrain/19/858576/354051.terrain new file mode 100644 index 000000000..aa9539357 Binary files /dev/null and b/public/terrain/19/858576/354051.terrain differ diff --git a/public/terrain/19/858576/354052.terrain b/public/terrain/19/858576/354052.terrain new file mode 100644 index 000000000..0e8764803 Binary files /dev/null and b/public/terrain/19/858576/354052.terrain differ diff --git a/public/terrain/19/858576/354053.terrain b/public/terrain/19/858576/354053.terrain new file mode 100644 index 000000000..103f9e244 Binary files /dev/null and b/public/terrain/19/858576/354053.terrain differ diff --git a/public/terrain/19/858576/354054.terrain b/public/terrain/19/858576/354054.terrain new file mode 100644 index 000000000..821661fbd Binary files /dev/null and b/public/terrain/19/858576/354054.terrain differ diff --git a/public/terrain/19/858576/354055.terrain b/public/terrain/19/858576/354055.terrain new file mode 100644 index 000000000..4b87462d1 Binary files /dev/null and b/public/terrain/19/858576/354055.terrain differ diff --git a/public/terrain/19/858576/354056.terrain b/public/terrain/19/858576/354056.terrain new file mode 100644 index 000000000..43c77a51e Binary files /dev/null and b/public/terrain/19/858576/354056.terrain differ diff --git a/public/terrain/19/858576/354057.terrain b/public/terrain/19/858576/354057.terrain new file mode 100644 index 000000000..eb9b57943 Binary files /dev/null and b/public/terrain/19/858576/354057.terrain differ diff --git a/public/terrain/19/858576/354058.terrain b/public/terrain/19/858576/354058.terrain new file mode 100644 index 000000000..f8bdd9445 Binary files /dev/null and b/public/terrain/19/858576/354058.terrain differ diff --git a/public/terrain/19/858576/354059.terrain b/public/terrain/19/858576/354059.terrain new file mode 100644 index 000000000..51016a915 Binary files /dev/null and b/public/terrain/19/858576/354059.terrain differ diff --git a/public/terrain/19/858577/353743.terrain b/public/terrain/19/858577/353743.terrain new file mode 100644 index 000000000..b92c3ee8d Binary files /dev/null and b/public/terrain/19/858577/353743.terrain differ diff --git a/public/terrain/19/858577/353744.terrain b/public/terrain/19/858577/353744.terrain new file mode 100644 index 000000000..d39546b1a Binary files /dev/null and b/public/terrain/19/858577/353744.terrain differ diff --git a/public/terrain/19/858577/353745.terrain b/public/terrain/19/858577/353745.terrain new file mode 100644 index 000000000..450aee9e8 Binary files /dev/null and b/public/terrain/19/858577/353745.terrain differ diff --git a/public/terrain/19/858577/353746.terrain b/public/terrain/19/858577/353746.terrain new file mode 100644 index 000000000..fdd545b96 Binary files /dev/null and b/public/terrain/19/858577/353746.terrain differ diff --git a/public/terrain/19/858577/353747.terrain b/public/terrain/19/858577/353747.terrain new file mode 100644 index 000000000..a4e50b738 Binary files /dev/null and b/public/terrain/19/858577/353747.terrain differ diff --git a/public/terrain/19/858577/353748.terrain b/public/terrain/19/858577/353748.terrain new file mode 100644 index 000000000..b14bc061e Binary files /dev/null and b/public/terrain/19/858577/353748.terrain differ diff --git a/public/terrain/19/858577/353749.terrain b/public/terrain/19/858577/353749.terrain new file mode 100644 index 000000000..393b57cd3 Binary files /dev/null and b/public/terrain/19/858577/353749.terrain differ diff --git a/public/terrain/19/858577/353750.terrain b/public/terrain/19/858577/353750.terrain new file mode 100644 index 000000000..d0f7324aa Binary files /dev/null and b/public/terrain/19/858577/353750.terrain differ diff --git a/public/terrain/19/858577/353751.terrain b/public/terrain/19/858577/353751.terrain new file mode 100644 index 000000000..057f71752 Binary files /dev/null and b/public/terrain/19/858577/353751.terrain differ diff --git a/public/terrain/19/858577/353752.terrain b/public/terrain/19/858577/353752.terrain new file mode 100644 index 000000000..b40df604f Binary files /dev/null and b/public/terrain/19/858577/353752.terrain differ diff --git a/public/terrain/19/858577/353753.terrain b/public/terrain/19/858577/353753.terrain new file mode 100644 index 000000000..ef48bdaa9 Binary files /dev/null and b/public/terrain/19/858577/353753.terrain differ diff --git a/public/terrain/19/858577/353754.terrain b/public/terrain/19/858577/353754.terrain new file mode 100644 index 000000000..5657b0630 Binary files /dev/null and b/public/terrain/19/858577/353754.terrain differ diff --git a/public/terrain/19/858577/353755.terrain b/public/terrain/19/858577/353755.terrain new file mode 100644 index 000000000..8c747e2fe Binary files /dev/null and b/public/terrain/19/858577/353755.terrain differ diff --git a/public/terrain/19/858577/353756.terrain b/public/terrain/19/858577/353756.terrain new file mode 100644 index 000000000..49695b6ee Binary files /dev/null and b/public/terrain/19/858577/353756.terrain differ diff --git a/public/terrain/19/858577/353757.terrain b/public/terrain/19/858577/353757.terrain new file mode 100644 index 000000000..a11aa72bf Binary files /dev/null and b/public/terrain/19/858577/353757.terrain differ diff --git a/public/terrain/19/858577/353758.terrain b/public/terrain/19/858577/353758.terrain new file mode 100644 index 000000000..3edbb60f2 Binary files /dev/null and b/public/terrain/19/858577/353758.terrain differ diff --git a/public/terrain/19/858577/353759.terrain b/public/terrain/19/858577/353759.terrain new file mode 100644 index 000000000..f77bb6e6a Binary files /dev/null and b/public/terrain/19/858577/353759.terrain differ diff --git a/public/terrain/19/858577/353760.terrain b/public/terrain/19/858577/353760.terrain new file mode 100644 index 000000000..0380ab2cd Binary files /dev/null and b/public/terrain/19/858577/353760.terrain differ diff --git a/public/terrain/19/858577/353761.terrain b/public/terrain/19/858577/353761.terrain new file mode 100644 index 000000000..463afa165 Binary files /dev/null and b/public/terrain/19/858577/353761.terrain differ diff --git a/public/terrain/19/858577/353762.terrain b/public/terrain/19/858577/353762.terrain new file mode 100644 index 000000000..491d15b3d Binary files /dev/null and b/public/terrain/19/858577/353762.terrain differ diff --git a/public/terrain/19/858577/353763.terrain b/public/terrain/19/858577/353763.terrain new file mode 100644 index 000000000..b466ab75d Binary files /dev/null and b/public/terrain/19/858577/353763.terrain differ diff --git a/public/terrain/19/858577/353764.terrain b/public/terrain/19/858577/353764.terrain new file mode 100644 index 000000000..027a53067 Binary files /dev/null and b/public/terrain/19/858577/353764.terrain differ diff --git a/public/terrain/19/858577/353765.terrain b/public/terrain/19/858577/353765.terrain new file mode 100644 index 000000000..1b98ce7cf Binary files /dev/null and b/public/terrain/19/858577/353765.terrain differ diff --git a/public/terrain/19/858577/353766.terrain b/public/terrain/19/858577/353766.terrain new file mode 100644 index 000000000..fbf468d49 Binary files /dev/null and b/public/terrain/19/858577/353766.terrain differ diff --git a/public/terrain/19/858577/353767.terrain b/public/terrain/19/858577/353767.terrain new file mode 100644 index 000000000..2fb5e167b Binary files /dev/null and b/public/terrain/19/858577/353767.terrain differ diff --git a/public/terrain/19/858577/353768.terrain b/public/terrain/19/858577/353768.terrain new file mode 100644 index 000000000..4a9c5bbff Binary files /dev/null and b/public/terrain/19/858577/353768.terrain differ diff --git a/public/terrain/19/858577/353769.terrain b/public/terrain/19/858577/353769.terrain new file mode 100644 index 000000000..87a25bf27 Binary files /dev/null and b/public/terrain/19/858577/353769.terrain differ diff --git a/public/terrain/19/858577/353770.terrain b/public/terrain/19/858577/353770.terrain new file mode 100644 index 000000000..2b3f6dab1 Binary files /dev/null and b/public/terrain/19/858577/353770.terrain differ diff --git a/public/terrain/19/858577/353771.terrain b/public/terrain/19/858577/353771.terrain new file mode 100644 index 000000000..4ca867243 Binary files /dev/null and b/public/terrain/19/858577/353771.terrain differ diff --git a/public/terrain/19/858577/353772.terrain b/public/terrain/19/858577/353772.terrain new file mode 100644 index 000000000..b87c7e65b Binary files /dev/null and b/public/terrain/19/858577/353772.terrain differ diff --git a/public/terrain/19/858577/353773.terrain b/public/terrain/19/858577/353773.terrain new file mode 100644 index 000000000..3be3429ab Binary files /dev/null and b/public/terrain/19/858577/353773.terrain differ diff --git a/public/terrain/19/858577/353774.terrain b/public/terrain/19/858577/353774.terrain new file mode 100644 index 000000000..fbbaea804 Binary files /dev/null and b/public/terrain/19/858577/353774.terrain differ diff --git a/public/terrain/19/858577/353775.terrain b/public/terrain/19/858577/353775.terrain new file mode 100644 index 000000000..adec99a92 Binary files /dev/null and b/public/terrain/19/858577/353775.terrain differ diff --git a/public/terrain/19/858577/353776.terrain b/public/terrain/19/858577/353776.terrain new file mode 100644 index 000000000..d87f0ffff Binary files /dev/null and b/public/terrain/19/858577/353776.terrain differ diff --git a/public/terrain/19/858577/353777.terrain b/public/terrain/19/858577/353777.terrain new file mode 100644 index 000000000..23fb01caa Binary files /dev/null and b/public/terrain/19/858577/353777.terrain differ diff --git a/public/terrain/19/858577/353778.terrain b/public/terrain/19/858577/353778.terrain new file mode 100644 index 000000000..3a1d94642 Binary files /dev/null and b/public/terrain/19/858577/353778.terrain differ diff --git a/public/terrain/19/858577/353779.terrain b/public/terrain/19/858577/353779.terrain new file mode 100644 index 000000000..35b402ce1 Binary files /dev/null and b/public/terrain/19/858577/353779.terrain differ diff --git a/public/terrain/19/858577/353780.terrain b/public/terrain/19/858577/353780.terrain new file mode 100644 index 000000000..8bd9385e9 Binary files /dev/null and b/public/terrain/19/858577/353780.terrain differ diff --git a/public/terrain/19/858577/353781.terrain b/public/terrain/19/858577/353781.terrain new file mode 100644 index 000000000..321aa152c Binary files /dev/null and b/public/terrain/19/858577/353781.terrain differ diff --git a/public/terrain/19/858577/353782.terrain b/public/terrain/19/858577/353782.terrain new file mode 100644 index 000000000..47836fea3 Binary files /dev/null and b/public/terrain/19/858577/353782.terrain differ diff --git a/public/terrain/19/858577/353783.terrain b/public/terrain/19/858577/353783.terrain new file mode 100644 index 000000000..e5142f123 Binary files /dev/null and b/public/terrain/19/858577/353783.terrain differ diff --git a/public/terrain/19/858577/353784.terrain b/public/terrain/19/858577/353784.terrain new file mode 100644 index 000000000..563f33b6c Binary files /dev/null and b/public/terrain/19/858577/353784.terrain differ diff --git a/public/terrain/19/858577/353785.terrain b/public/terrain/19/858577/353785.terrain new file mode 100644 index 000000000..cce961180 Binary files /dev/null and b/public/terrain/19/858577/353785.terrain differ diff --git a/public/terrain/19/858577/353786.terrain b/public/terrain/19/858577/353786.terrain new file mode 100644 index 000000000..cf1244161 Binary files /dev/null and b/public/terrain/19/858577/353786.terrain differ diff --git a/public/terrain/19/858577/353787.terrain b/public/terrain/19/858577/353787.terrain new file mode 100644 index 000000000..7cbcd9670 Binary files /dev/null and b/public/terrain/19/858577/353787.terrain differ diff --git a/public/terrain/19/858577/353788.terrain b/public/terrain/19/858577/353788.terrain new file mode 100644 index 000000000..90de1e3cf Binary files /dev/null and b/public/terrain/19/858577/353788.terrain differ diff --git a/public/terrain/19/858577/353789.terrain b/public/terrain/19/858577/353789.terrain new file mode 100644 index 000000000..e30762ede Binary files /dev/null and b/public/terrain/19/858577/353789.terrain differ diff --git a/public/terrain/19/858577/353790.terrain b/public/terrain/19/858577/353790.terrain new file mode 100644 index 000000000..77fc9098a Binary files /dev/null and b/public/terrain/19/858577/353790.terrain differ diff --git a/public/terrain/19/858577/353791.terrain b/public/terrain/19/858577/353791.terrain new file mode 100644 index 000000000..25085959e Binary files /dev/null and b/public/terrain/19/858577/353791.terrain differ diff --git a/public/terrain/19/858577/353792.terrain b/public/terrain/19/858577/353792.terrain new file mode 100644 index 000000000..102ae79be Binary files /dev/null and b/public/terrain/19/858577/353792.terrain differ diff --git a/public/terrain/19/858577/353793.terrain b/public/terrain/19/858577/353793.terrain new file mode 100644 index 000000000..8d7ba11f7 Binary files /dev/null and b/public/terrain/19/858577/353793.terrain differ diff --git a/public/terrain/19/858577/353794.terrain b/public/terrain/19/858577/353794.terrain new file mode 100644 index 000000000..1c38d6c29 Binary files /dev/null and b/public/terrain/19/858577/353794.terrain differ diff --git a/public/terrain/19/858577/353795.terrain b/public/terrain/19/858577/353795.terrain new file mode 100644 index 000000000..3a419af21 Binary files /dev/null and b/public/terrain/19/858577/353795.terrain differ diff --git a/public/terrain/19/858577/353796.terrain b/public/terrain/19/858577/353796.terrain new file mode 100644 index 000000000..0539bd37e Binary files /dev/null and b/public/terrain/19/858577/353796.terrain differ diff --git a/public/terrain/19/858577/353797.terrain b/public/terrain/19/858577/353797.terrain new file mode 100644 index 000000000..80a70a62a Binary files /dev/null and b/public/terrain/19/858577/353797.terrain differ diff --git a/public/terrain/19/858577/353798.terrain b/public/terrain/19/858577/353798.terrain new file mode 100644 index 000000000..5852aba38 Binary files /dev/null and b/public/terrain/19/858577/353798.terrain differ diff --git a/public/terrain/19/858577/353799.terrain b/public/terrain/19/858577/353799.terrain new file mode 100644 index 000000000..459a2a41e Binary files /dev/null and b/public/terrain/19/858577/353799.terrain differ diff --git a/public/terrain/19/858577/353800.terrain b/public/terrain/19/858577/353800.terrain new file mode 100644 index 000000000..977b140e0 Binary files /dev/null and b/public/terrain/19/858577/353800.terrain differ diff --git a/public/terrain/19/858577/353801.terrain b/public/terrain/19/858577/353801.terrain new file mode 100644 index 000000000..cfbbe2a24 Binary files /dev/null and b/public/terrain/19/858577/353801.terrain differ diff --git a/public/terrain/19/858577/353802.terrain b/public/terrain/19/858577/353802.terrain new file mode 100644 index 000000000..86999ea49 Binary files /dev/null and b/public/terrain/19/858577/353802.terrain differ diff --git a/public/terrain/19/858577/353803.terrain b/public/terrain/19/858577/353803.terrain new file mode 100644 index 000000000..9fdb74196 Binary files /dev/null and b/public/terrain/19/858577/353803.terrain differ diff --git a/public/terrain/19/858577/353804.terrain b/public/terrain/19/858577/353804.terrain new file mode 100644 index 000000000..ac90f1514 Binary files /dev/null and b/public/terrain/19/858577/353804.terrain differ diff --git a/public/terrain/19/858577/353805.terrain b/public/terrain/19/858577/353805.terrain new file mode 100644 index 000000000..122353bf6 Binary files /dev/null and b/public/terrain/19/858577/353805.terrain differ diff --git a/public/terrain/19/858577/353806.terrain b/public/terrain/19/858577/353806.terrain new file mode 100644 index 000000000..91c8a15c2 Binary files /dev/null and b/public/terrain/19/858577/353806.terrain differ diff --git a/public/terrain/19/858577/353807.terrain b/public/terrain/19/858577/353807.terrain new file mode 100644 index 000000000..b4f6387ff Binary files /dev/null and b/public/terrain/19/858577/353807.terrain differ diff --git a/public/terrain/19/858577/353808.terrain b/public/terrain/19/858577/353808.terrain new file mode 100644 index 000000000..d2079d296 Binary files /dev/null and b/public/terrain/19/858577/353808.terrain differ diff --git a/public/terrain/19/858577/353809.terrain b/public/terrain/19/858577/353809.terrain new file mode 100644 index 000000000..39fb038d1 Binary files /dev/null and b/public/terrain/19/858577/353809.terrain differ diff --git a/public/terrain/19/858577/353810.terrain b/public/terrain/19/858577/353810.terrain new file mode 100644 index 000000000..1a74e3157 Binary files /dev/null and b/public/terrain/19/858577/353810.terrain differ diff --git a/public/terrain/19/858577/353811.terrain b/public/terrain/19/858577/353811.terrain new file mode 100644 index 000000000..2fb129323 Binary files /dev/null and b/public/terrain/19/858577/353811.terrain differ diff --git a/public/terrain/19/858577/353812.terrain b/public/terrain/19/858577/353812.terrain new file mode 100644 index 000000000..e25ad46e1 Binary files /dev/null and b/public/terrain/19/858577/353812.terrain differ diff --git a/public/terrain/19/858577/353813.terrain b/public/terrain/19/858577/353813.terrain new file mode 100644 index 000000000..debdd9a38 Binary files /dev/null and b/public/terrain/19/858577/353813.terrain differ diff --git a/public/terrain/19/858577/353814.terrain b/public/terrain/19/858577/353814.terrain new file mode 100644 index 000000000..be9c786ad Binary files /dev/null and b/public/terrain/19/858577/353814.terrain differ diff --git a/public/terrain/19/858577/353815.terrain b/public/terrain/19/858577/353815.terrain new file mode 100644 index 000000000..9fdd5584e Binary files /dev/null and b/public/terrain/19/858577/353815.terrain differ diff --git a/public/terrain/19/858577/353816.terrain b/public/terrain/19/858577/353816.terrain new file mode 100644 index 000000000..253f9a829 Binary files /dev/null and b/public/terrain/19/858577/353816.terrain differ diff --git a/public/terrain/19/858577/353817.terrain b/public/terrain/19/858577/353817.terrain new file mode 100644 index 000000000..b79908d50 Binary files /dev/null and b/public/terrain/19/858577/353817.terrain differ diff --git a/public/terrain/19/858577/353818.terrain b/public/terrain/19/858577/353818.terrain new file mode 100644 index 000000000..eb541ef87 Binary files /dev/null and b/public/terrain/19/858577/353818.terrain differ diff --git a/public/terrain/19/858577/353819.terrain b/public/terrain/19/858577/353819.terrain new file mode 100644 index 000000000..7c6e67bb2 Binary files /dev/null and b/public/terrain/19/858577/353819.terrain differ diff --git a/public/terrain/19/858577/353820.terrain b/public/terrain/19/858577/353820.terrain new file mode 100644 index 000000000..67b6b96ce Binary files /dev/null and b/public/terrain/19/858577/353820.terrain differ diff --git a/public/terrain/19/858577/353821.terrain b/public/terrain/19/858577/353821.terrain new file mode 100644 index 000000000..6be23b55f Binary files /dev/null and b/public/terrain/19/858577/353821.terrain differ diff --git a/public/terrain/19/858577/353822.terrain b/public/terrain/19/858577/353822.terrain new file mode 100644 index 000000000..91babf007 Binary files /dev/null and b/public/terrain/19/858577/353822.terrain differ diff --git a/public/terrain/19/858577/353823.terrain b/public/terrain/19/858577/353823.terrain new file mode 100644 index 000000000..6b63a7888 Binary files /dev/null and b/public/terrain/19/858577/353823.terrain differ diff --git a/public/terrain/19/858577/353824.terrain b/public/terrain/19/858577/353824.terrain new file mode 100644 index 000000000..b55ec65f7 Binary files /dev/null and b/public/terrain/19/858577/353824.terrain differ diff --git a/public/terrain/19/858577/353825.terrain b/public/terrain/19/858577/353825.terrain new file mode 100644 index 000000000..298b9642e Binary files /dev/null and b/public/terrain/19/858577/353825.terrain differ diff --git a/public/terrain/19/858577/353826.terrain b/public/terrain/19/858577/353826.terrain new file mode 100644 index 000000000..679172cf8 Binary files /dev/null and b/public/terrain/19/858577/353826.terrain differ diff --git a/public/terrain/19/858577/353827.terrain b/public/terrain/19/858577/353827.terrain new file mode 100644 index 000000000..e322f2eff Binary files /dev/null and b/public/terrain/19/858577/353827.terrain differ diff --git a/public/terrain/19/858577/353828.terrain b/public/terrain/19/858577/353828.terrain new file mode 100644 index 000000000..cf0598538 Binary files /dev/null and b/public/terrain/19/858577/353828.terrain differ diff --git a/public/terrain/19/858577/353829.terrain b/public/terrain/19/858577/353829.terrain new file mode 100644 index 000000000..3c7d10936 Binary files /dev/null and b/public/terrain/19/858577/353829.terrain differ diff --git a/public/terrain/19/858577/353830.terrain b/public/terrain/19/858577/353830.terrain new file mode 100644 index 000000000..1b7fe4f2b Binary files /dev/null and b/public/terrain/19/858577/353830.terrain differ diff --git a/public/terrain/19/858577/353831.terrain b/public/terrain/19/858577/353831.terrain new file mode 100644 index 000000000..5e7d60226 Binary files /dev/null and b/public/terrain/19/858577/353831.terrain differ diff --git a/public/terrain/19/858577/353832.terrain b/public/terrain/19/858577/353832.terrain new file mode 100644 index 000000000..a7459fdc1 Binary files /dev/null and b/public/terrain/19/858577/353832.terrain differ diff --git a/public/terrain/19/858577/353833.terrain b/public/terrain/19/858577/353833.terrain new file mode 100644 index 000000000..b29f558ef Binary files /dev/null and b/public/terrain/19/858577/353833.terrain differ diff --git a/public/terrain/19/858577/353834.terrain b/public/terrain/19/858577/353834.terrain new file mode 100644 index 000000000..0ad751465 Binary files /dev/null and b/public/terrain/19/858577/353834.terrain differ diff --git a/public/terrain/19/858577/353835.terrain b/public/terrain/19/858577/353835.terrain new file mode 100644 index 000000000..794c84345 Binary files /dev/null and b/public/terrain/19/858577/353835.terrain differ diff --git a/public/terrain/19/858577/353836.terrain b/public/terrain/19/858577/353836.terrain new file mode 100644 index 000000000..385eeeda1 Binary files /dev/null and b/public/terrain/19/858577/353836.terrain differ diff --git a/public/terrain/19/858577/353837.terrain b/public/terrain/19/858577/353837.terrain new file mode 100644 index 000000000..482630f73 Binary files /dev/null and b/public/terrain/19/858577/353837.terrain differ diff --git a/public/terrain/19/858577/353838.terrain b/public/terrain/19/858577/353838.terrain new file mode 100644 index 000000000..8477f8148 Binary files /dev/null and b/public/terrain/19/858577/353838.terrain differ diff --git a/public/terrain/19/858577/353839.terrain b/public/terrain/19/858577/353839.terrain new file mode 100644 index 000000000..c5b980092 Binary files /dev/null and b/public/terrain/19/858577/353839.terrain differ diff --git a/public/terrain/19/858577/353840.terrain b/public/terrain/19/858577/353840.terrain new file mode 100644 index 000000000..366a1d265 Binary files /dev/null and b/public/terrain/19/858577/353840.terrain differ diff --git a/public/terrain/19/858577/353841.terrain b/public/terrain/19/858577/353841.terrain new file mode 100644 index 000000000..853cb3d4e Binary files /dev/null and b/public/terrain/19/858577/353841.terrain differ diff --git a/public/terrain/19/858577/353842.terrain b/public/terrain/19/858577/353842.terrain new file mode 100644 index 000000000..6269673c4 Binary files /dev/null and b/public/terrain/19/858577/353842.terrain differ diff --git a/public/terrain/19/858577/353843.terrain b/public/terrain/19/858577/353843.terrain new file mode 100644 index 000000000..2f5335865 Binary files /dev/null and b/public/terrain/19/858577/353843.terrain differ diff --git a/public/terrain/19/858577/353844.terrain b/public/terrain/19/858577/353844.terrain new file mode 100644 index 000000000..38195da9e Binary files /dev/null and b/public/terrain/19/858577/353844.terrain differ diff --git a/public/terrain/19/858577/353845.terrain b/public/terrain/19/858577/353845.terrain new file mode 100644 index 000000000..58f7c5b32 Binary files /dev/null and b/public/terrain/19/858577/353845.terrain differ diff --git a/public/terrain/19/858577/353846.terrain b/public/terrain/19/858577/353846.terrain new file mode 100644 index 000000000..ed2eb7fab Binary files /dev/null and b/public/terrain/19/858577/353846.terrain differ diff --git a/public/terrain/19/858577/353847.terrain b/public/terrain/19/858577/353847.terrain new file mode 100644 index 000000000..ae16e31a1 Binary files /dev/null and b/public/terrain/19/858577/353847.terrain differ diff --git a/public/terrain/19/858577/353848.terrain b/public/terrain/19/858577/353848.terrain new file mode 100644 index 000000000..ca2c6a876 Binary files /dev/null and b/public/terrain/19/858577/353848.terrain differ diff --git a/public/terrain/19/858577/353849.terrain b/public/terrain/19/858577/353849.terrain new file mode 100644 index 000000000..c315ac87a Binary files /dev/null and b/public/terrain/19/858577/353849.terrain differ diff --git a/public/terrain/19/858577/353850.terrain b/public/terrain/19/858577/353850.terrain new file mode 100644 index 000000000..0a01919ef Binary files /dev/null and b/public/terrain/19/858577/353850.terrain differ diff --git a/public/terrain/19/858577/353851.terrain b/public/terrain/19/858577/353851.terrain new file mode 100644 index 000000000..bf9b806b9 Binary files /dev/null and b/public/terrain/19/858577/353851.terrain differ diff --git a/public/terrain/19/858577/353852.terrain b/public/terrain/19/858577/353852.terrain new file mode 100644 index 000000000..2b0ea6674 Binary files /dev/null and b/public/terrain/19/858577/353852.terrain differ diff --git a/public/terrain/19/858577/353853.terrain b/public/terrain/19/858577/353853.terrain new file mode 100644 index 000000000..30b6f88d6 Binary files /dev/null and b/public/terrain/19/858577/353853.terrain differ diff --git a/public/terrain/19/858577/353854.terrain b/public/terrain/19/858577/353854.terrain new file mode 100644 index 000000000..0ad21f803 Binary files /dev/null and b/public/terrain/19/858577/353854.terrain differ diff --git a/public/terrain/19/858577/353855.terrain b/public/terrain/19/858577/353855.terrain new file mode 100644 index 000000000..8365494a1 Binary files /dev/null and b/public/terrain/19/858577/353855.terrain differ diff --git a/public/terrain/19/858577/353856.terrain b/public/terrain/19/858577/353856.terrain new file mode 100644 index 000000000..363ac234a Binary files /dev/null and b/public/terrain/19/858577/353856.terrain differ diff --git a/public/terrain/19/858577/353857.terrain b/public/terrain/19/858577/353857.terrain new file mode 100644 index 000000000..5410d7847 Binary files /dev/null and b/public/terrain/19/858577/353857.terrain differ diff --git a/public/terrain/19/858577/353858.terrain b/public/terrain/19/858577/353858.terrain new file mode 100644 index 000000000..3ba95e00f Binary files /dev/null and b/public/terrain/19/858577/353858.terrain differ diff --git a/public/terrain/19/858577/353859.terrain b/public/terrain/19/858577/353859.terrain new file mode 100644 index 000000000..0e4bd63c7 Binary files /dev/null and b/public/terrain/19/858577/353859.terrain differ diff --git a/public/terrain/19/858577/353860.terrain b/public/terrain/19/858577/353860.terrain new file mode 100644 index 000000000..6f6e6a45a Binary files /dev/null and b/public/terrain/19/858577/353860.terrain differ diff --git a/public/terrain/19/858577/353861.terrain b/public/terrain/19/858577/353861.terrain new file mode 100644 index 000000000..95205de50 Binary files /dev/null and b/public/terrain/19/858577/353861.terrain differ diff --git a/public/terrain/19/858577/353862.terrain b/public/terrain/19/858577/353862.terrain new file mode 100644 index 000000000..68fd5137a Binary files /dev/null and b/public/terrain/19/858577/353862.terrain differ diff --git a/public/terrain/19/858577/353863.terrain b/public/terrain/19/858577/353863.terrain new file mode 100644 index 000000000..84afaca9a Binary files /dev/null and b/public/terrain/19/858577/353863.terrain differ diff --git a/public/terrain/19/858577/353864.terrain b/public/terrain/19/858577/353864.terrain new file mode 100644 index 000000000..3cbc0a14d Binary files /dev/null and b/public/terrain/19/858577/353864.terrain differ diff --git a/public/terrain/19/858577/353865.terrain b/public/terrain/19/858577/353865.terrain new file mode 100644 index 000000000..e92b0c52e Binary files /dev/null and b/public/terrain/19/858577/353865.terrain differ diff --git a/public/terrain/19/858577/353866.terrain b/public/terrain/19/858577/353866.terrain new file mode 100644 index 000000000..dd98c798a Binary files /dev/null and b/public/terrain/19/858577/353866.terrain differ diff --git a/public/terrain/19/858577/353867.terrain b/public/terrain/19/858577/353867.terrain new file mode 100644 index 000000000..229db1a55 Binary files /dev/null and b/public/terrain/19/858577/353867.terrain differ diff --git a/public/terrain/19/858577/353868.terrain b/public/terrain/19/858577/353868.terrain new file mode 100644 index 000000000..dd6776e5a Binary files /dev/null and b/public/terrain/19/858577/353868.terrain differ diff --git a/public/terrain/19/858577/353869.terrain b/public/terrain/19/858577/353869.terrain new file mode 100644 index 000000000..8c6aa2c86 Binary files /dev/null and b/public/terrain/19/858577/353869.terrain differ diff --git a/public/terrain/19/858577/353870.terrain b/public/terrain/19/858577/353870.terrain new file mode 100644 index 000000000..3805f7abc Binary files /dev/null and b/public/terrain/19/858577/353870.terrain differ diff --git a/public/terrain/19/858577/353871.terrain b/public/terrain/19/858577/353871.terrain new file mode 100644 index 000000000..f927e3e44 Binary files /dev/null and b/public/terrain/19/858577/353871.terrain differ diff --git a/public/terrain/19/858577/353872.terrain b/public/terrain/19/858577/353872.terrain new file mode 100644 index 000000000..1cf0bf580 Binary files /dev/null and b/public/terrain/19/858577/353872.terrain differ diff --git a/public/terrain/19/858577/353873.terrain b/public/terrain/19/858577/353873.terrain new file mode 100644 index 000000000..c3d7b965f Binary files /dev/null and b/public/terrain/19/858577/353873.terrain differ diff --git a/public/terrain/19/858577/353874.terrain b/public/terrain/19/858577/353874.terrain new file mode 100644 index 000000000..409d2519e Binary files /dev/null and b/public/terrain/19/858577/353874.terrain differ diff --git a/public/terrain/19/858577/353875.terrain b/public/terrain/19/858577/353875.terrain new file mode 100644 index 000000000..cfb0ecf44 Binary files /dev/null and b/public/terrain/19/858577/353875.terrain differ diff --git a/public/terrain/19/858577/353876.terrain b/public/terrain/19/858577/353876.terrain new file mode 100644 index 000000000..e593cf636 Binary files /dev/null and b/public/terrain/19/858577/353876.terrain differ diff --git a/public/terrain/19/858577/353877.terrain b/public/terrain/19/858577/353877.terrain new file mode 100644 index 000000000..370aedcc8 Binary files /dev/null and b/public/terrain/19/858577/353877.terrain differ diff --git a/public/terrain/19/858577/353878.terrain b/public/terrain/19/858577/353878.terrain new file mode 100644 index 000000000..0f6d9e9ca Binary files /dev/null and b/public/terrain/19/858577/353878.terrain differ diff --git a/public/terrain/19/858577/353879.terrain b/public/terrain/19/858577/353879.terrain new file mode 100644 index 000000000..c5acbb6ed Binary files /dev/null and b/public/terrain/19/858577/353879.terrain differ diff --git a/public/terrain/19/858577/353880.terrain b/public/terrain/19/858577/353880.terrain new file mode 100644 index 000000000..00bde2156 Binary files /dev/null and b/public/terrain/19/858577/353880.terrain differ diff --git a/public/terrain/19/858577/353881.terrain b/public/terrain/19/858577/353881.terrain new file mode 100644 index 000000000..2a88fc856 Binary files /dev/null and b/public/terrain/19/858577/353881.terrain differ diff --git a/public/terrain/19/858577/353882.terrain b/public/terrain/19/858577/353882.terrain new file mode 100644 index 000000000..1421aa501 Binary files /dev/null and b/public/terrain/19/858577/353882.terrain differ diff --git a/public/terrain/19/858577/353883.terrain b/public/terrain/19/858577/353883.terrain new file mode 100644 index 000000000..829243d17 Binary files /dev/null and b/public/terrain/19/858577/353883.terrain differ diff --git a/public/terrain/19/858577/353884.terrain b/public/terrain/19/858577/353884.terrain new file mode 100644 index 000000000..bd43a9000 Binary files /dev/null and b/public/terrain/19/858577/353884.terrain differ diff --git a/public/terrain/19/858577/353885.terrain b/public/terrain/19/858577/353885.terrain new file mode 100644 index 000000000..602a85d92 Binary files /dev/null and b/public/terrain/19/858577/353885.terrain differ diff --git a/public/terrain/19/858577/353886.terrain b/public/terrain/19/858577/353886.terrain new file mode 100644 index 000000000..97af83d24 Binary files /dev/null and b/public/terrain/19/858577/353886.terrain differ diff --git a/public/terrain/19/858577/353887.terrain b/public/terrain/19/858577/353887.terrain new file mode 100644 index 000000000..0d81f35b4 Binary files /dev/null and b/public/terrain/19/858577/353887.terrain differ diff --git a/public/terrain/19/858577/353888.terrain b/public/terrain/19/858577/353888.terrain new file mode 100644 index 000000000..89eddb454 Binary files /dev/null and b/public/terrain/19/858577/353888.terrain differ diff --git a/public/terrain/19/858577/353889.terrain b/public/terrain/19/858577/353889.terrain new file mode 100644 index 000000000..a4fda70cc Binary files /dev/null and b/public/terrain/19/858577/353889.terrain differ diff --git a/public/terrain/19/858577/353890.terrain b/public/terrain/19/858577/353890.terrain new file mode 100644 index 000000000..a1c2fee5f Binary files /dev/null and b/public/terrain/19/858577/353890.terrain differ diff --git a/public/terrain/19/858577/353891.terrain b/public/terrain/19/858577/353891.terrain new file mode 100644 index 000000000..774018b19 Binary files /dev/null and b/public/terrain/19/858577/353891.terrain differ diff --git a/public/terrain/19/858577/353892.terrain b/public/terrain/19/858577/353892.terrain new file mode 100644 index 000000000..401bbbae0 Binary files /dev/null and b/public/terrain/19/858577/353892.terrain differ diff --git a/public/terrain/19/858577/353893.terrain b/public/terrain/19/858577/353893.terrain new file mode 100644 index 000000000..c7929ab55 Binary files /dev/null and b/public/terrain/19/858577/353893.terrain differ diff --git a/public/terrain/19/858577/353894.terrain b/public/terrain/19/858577/353894.terrain new file mode 100644 index 000000000..8ae7d49cd Binary files /dev/null and b/public/terrain/19/858577/353894.terrain differ diff --git a/public/terrain/19/858577/353895.terrain b/public/terrain/19/858577/353895.terrain new file mode 100644 index 000000000..22367a7cc Binary files /dev/null and b/public/terrain/19/858577/353895.terrain differ diff --git a/public/terrain/19/858577/353896.terrain b/public/terrain/19/858577/353896.terrain new file mode 100644 index 000000000..78a7ebb47 Binary files /dev/null and b/public/terrain/19/858577/353896.terrain differ diff --git a/public/terrain/19/858577/353897.terrain b/public/terrain/19/858577/353897.terrain new file mode 100644 index 000000000..a617d58c7 Binary files /dev/null and b/public/terrain/19/858577/353897.terrain differ diff --git a/public/terrain/19/858577/353898.terrain b/public/terrain/19/858577/353898.terrain new file mode 100644 index 000000000..567c68f08 Binary files /dev/null and b/public/terrain/19/858577/353898.terrain differ diff --git a/public/terrain/19/858577/353899.terrain b/public/terrain/19/858577/353899.terrain new file mode 100644 index 000000000..98ce75cde Binary files /dev/null and b/public/terrain/19/858577/353899.terrain differ diff --git a/public/terrain/19/858577/353900.terrain b/public/terrain/19/858577/353900.terrain new file mode 100644 index 000000000..55f7cad69 Binary files /dev/null and b/public/terrain/19/858577/353900.terrain differ diff --git a/public/terrain/19/858577/353901.terrain b/public/terrain/19/858577/353901.terrain new file mode 100644 index 000000000..c0e9ccc62 Binary files /dev/null and b/public/terrain/19/858577/353901.terrain differ diff --git a/public/terrain/19/858577/353902.terrain b/public/terrain/19/858577/353902.terrain new file mode 100644 index 000000000..16e0d2be0 Binary files /dev/null and b/public/terrain/19/858577/353902.terrain differ diff --git a/public/terrain/19/858577/353903.terrain b/public/terrain/19/858577/353903.terrain new file mode 100644 index 000000000..49ef4064c Binary files /dev/null and b/public/terrain/19/858577/353903.terrain differ diff --git a/public/terrain/19/858577/353904.terrain b/public/terrain/19/858577/353904.terrain new file mode 100644 index 000000000..b920587fb Binary files /dev/null and b/public/terrain/19/858577/353904.terrain differ diff --git a/public/terrain/19/858577/353905.terrain b/public/terrain/19/858577/353905.terrain new file mode 100644 index 000000000..82162a681 Binary files /dev/null and b/public/terrain/19/858577/353905.terrain differ diff --git a/public/terrain/19/858577/353906.terrain b/public/terrain/19/858577/353906.terrain new file mode 100644 index 000000000..202209577 Binary files /dev/null and b/public/terrain/19/858577/353906.terrain differ diff --git a/public/terrain/19/858577/353907.terrain b/public/terrain/19/858577/353907.terrain new file mode 100644 index 000000000..15cf936f5 Binary files /dev/null and b/public/terrain/19/858577/353907.terrain differ diff --git a/public/terrain/19/858577/353908.terrain b/public/terrain/19/858577/353908.terrain new file mode 100644 index 000000000..b4b52b255 Binary files /dev/null and b/public/terrain/19/858577/353908.terrain differ diff --git a/public/terrain/19/858577/353909.terrain b/public/terrain/19/858577/353909.terrain new file mode 100644 index 000000000..49d82e3d6 Binary files /dev/null and b/public/terrain/19/858577/353909.terrain differ diff --git a/public/terrain/19/858577/353910.terrain b/public/terrain/19/858577/353910.terrain new file mode 100644 index 000000000..20f0603cd Binary files /dev/null and b/public/terrain/19/858577/353910.terrain differ diff --git a/public/terrain/19/858577/353911.terrain b/public/terrain/19/858577/353911.terrain new file mode 100644 index 000000000..5c502bd3d Binary files /dev/null and b/public/terrain/19/858577/353911.terrain differ diff --git a/public/terrain/19/858577/353912.terrain b/public/terrain/19/858577/353912.terrain new file mode 100644 index 000000000..615a190f1 Binary files /dev/null and b/public/terrain/19/858577/353912.terrain differ diff --git a/public/terrain/19/858577/353913.terrain b/public/terrain/19/858577/353913.terrain new file mode 100644 index 000000000..f1c658da9 Binary files /dev/null and b/public/terrain/19/858577/353913.terrain differ diff --git a/public/terrain/19/858577/353914.terrain b/public/terrain/19/858577/353914.terrain new file mode 100644 index 000000000..ca706abe0 Binary files /dev/null and b/public/terrain/19/858577/353914.terrain differ diff --git a/public/terrain/19/858577/353915.terrain b/public/terrain/19/858577/353915.terrain new file mode 100644 index 000000000..36c4053b5 Binary files /dev/null and b/public/terrain/19/858577/353915.terrain differ diff --git a/public/terrain/19/858577/353916.terrain b/public/terrain/19/858577/353916.terrain new file mode 100644 index 000000000..4f4331df5 Binary files /dev/null and b/public/terrain/19/858577/353916.terrain differ diff --git a/public/terrain/19/858577/353917.terrain b/public/terrain/19/858577/353917.terrain new file mode 100644 index 000000000..6c7208a00 Binary files /dev/null and b/public/terrain/19/858577/353917.terrain differ diff --git a/public/terrain/19/858577/353918.terrain b/public/terrain/19/858577/353918.terrain new file mode 100644 index 000000000..8244b7c30 Binary files /dev/null and b/public/terrain/19/858577/353918.terrain differ diff --git a/public/terrain/19/858577/353919.terrain b/public/terrain/19/858577/353919.terrain new file mode 100644 index 000000000..06e4489fa Binary files /dev/null and b/public/terrain/19/858577/353919.terrain differ diff --git a/public/terrain/19/858577/353920.terrain b/public/terrain/19/858577/353920.terrain new file mode 100644 index 000000000..a62f7d2a6 Binary files /dev/null and b/public/terrain/19/858577/353920.terrain differ diff --git a/public/terrain/19/858577/353921.terrain b/public/terrain/19/858577/353921.terrain new file mode 100644 index 000000000..ba0d503f2 Binary files /dev/null and b/public/terrain/19/858577/353921.terrain differ diff --git a/public/terrain/19/858577/353922.terrain b/public/terrain/19/858577/353922.terrain new file mode 100644 index 000000000..509bc6f35 Binary files /dev/null and b/public/terrain/19/858577/353922.terrain differ diff --git a/public/terrain/19/858577/353923.terrain b/public/terrain/19/858577/353923.terrain new file mode 100644 index 000000000..274c67584 Binary files /dev/null and b/public/terrain/19/858577/353923.terrain differ diff --git a/public/terrain/19/858577/353924.terrain b/public/terrain/19/858577/353924.terrain new file mode 100644 index 000000000..4901e4cb2 Binary files /dev/null and b/public/terrain/19/858577/353924.terrain differ diff --git a/public/terrain/19/858577/353925.terrain b/public/terrain/19/858577/353925.terrain new file mode 100644 index 000000000..d89a31043 Binary files /dev/null and b/public/terrain/19/858577/353925.terrain differ diff --git a/public/terrain/19/858577/353926.terrain b/public/terrain/19/858577/353926.terrain new file mode 100644 index 000000000..8797151b6 Binary files /dev/null and b/public/terrain/19/858577/353926.terrain differ diff --git a/public/terrain/19/858577/353927.terrain b/public/terrain/19/858577/353927.terrain new file mode 100644 index 000000000..8c7b0b09c Binary files /dev/null and b/public/terrain/19/858577/353927.terrain differ diff --git a/public/terrain/19/858577/353928.terrain b/public/terrain/19/858577/353928.terrain new file mode 100644 index 000000000..9955ae436 Binary files /dev/null and b/public/terrain/19/858577/353928.terrain differ diff --git a/public/terrain/19/858577/353929.terrain b/public/terrain/19/858577/353929.terrain new file mode 100644 index 000000000..8add41d71 Binary files /dev/null and b/public/terrain/19/858577/353929.terrain differ diff --git a/public/terrain/19/858577/353930.terrain b/public/terrain/19/858577/353930.terrain new file mode 100644 index 000000000..3ff786eaa Binary files /dev/null and b/public/terrain/19/858577/353930.terrain differ diff --git a/public/terrain/19/858577/353931.terrain b/public/terrain/19/858577/353931.terrain new file mode 100644 index 000000000..4c2b5db31 Binary files /dev/null and b/public/terrain/19/858577/353931.terrain differ diff --git a/public/terrain/19/858577/353932.terrain b/public/terrain/19/858577/353932.terrain new file mode 100644 index 000000000..21adc9ccf Binary files /dev/null and b/public/terrain/19/858577/353932.terrain differ diff --git a/public/terrain/19/858577/353933.terrain b/public/terrain/19/858577/353933.terrain new file mode 100644 index 000000000..f669e4089 Binary files /dev/null and b/public/terrain/19/858577/353933.terrain differ diff --git a/public/terrain/19/858577/353934.terrain b/public/terrain/19/858577/353934.terrain new file mode 100644 index 000000000..206eb0696 Binary files /dev/null and b/public/terrain/19/858577/353934.terrain differ diff --git a/public/terrain/19/858577/353935.terrain b/public/terrain/19/858577/353935.terrain new file mode 100644 index 000000000..ddd458371 Binary files /dev/null and b/public/terrain/19/858577/353935.terrain differ diff --git a/public/terrain/19/858577/353936.terrain b/public/terrain/19/858577/353936.terrain new file mode 100644 index 000000000..82cc3010e Binary files /dev/null and b/public/terrain/19/858577/353936.terrain differ diff --git a/public/terrain/19/858577/353937.terrain b/public/terrain/19/858577/353937.terrain new file mode 100644 index 000000000..a4f9a977d Binary files /dev/null and b/public/terrain/19/858577/353937.terrain differ diff --git a/public/terrain/19/858577/353938.terrain b/public/terrain/19/858577/353938.terrain new file mode 100644 index 000000000..d50b14e98 Binary files /dev/null and b/public/terrain/19/858577/353938.terrain differ diff --git a/public/terrain/19/858577/353939.terrain b/public/terrain/19/858577/353939.terrain new file mode 100644 index 000000000..3be7ace20 Binary files /dev/null and b/public/terrain/19/858577/353939.terrain differ diff --git a/public/terrain/19/858577/353940.terrain b/public/terrain/19/858577/353940.terrain new file mode 100644 index 000000000..a713fb197 Binary files /dev/null and b/public/terrain/19/858577/353940.terrain differ diff --git a/public/terrain/19/858577/353941.terrain b/public/terrain/19/858577/353941.terrain new file mode 100644 index 000000000..cd081beb9 Binary files /dev/null and b/public/terrain/19/858577/353941.terrain differ diff --git a/public/terrain/19/858577/353942.terrain b/public/terrain/19/858577/353942.terrain new file mode 100644 index 000000000..b45c2cdc6 Binary files /dev/null and b/public/terrain/19/858577/353942.terrain differ diff --git a/public/terrain/19/858577/353943.terrain b/public/terrain/19/858577/353943.terrain new file mode 100644 index 000000000..5d7e5456e Binary files /dev/null and b/public/terrain/19/858577/353943.terrain differ diff --git a/public/terrain/19/858577/353944.terrain b/public/terrain/19/858577/353944.terrain new file mode 100644 index 000000000..902e98c95 Binary files /dev/null and b/public/terrain/19/858577/353944.terrain differ diff --git a/public/terrain/19/858577/353945.terrain b/public/terrain/19/858577/353945.terrain new file mode 100644 index 000000000..9e523d78c Binary files /dev/null and b/public/terrain/19/858577/353945.terrain differ diff --git a/public/terrain/19/858577/353946.terrain b/public/terrain/19/858577/353946.terrain new file mode 100644 index 000000000..faba93e91 Binary files /dev/null and b/public/terrain/19/858577/353946.terrain differ diff --git a/public/terrain/19/858577/353947.terrain b/public/terrain/19/858577/353947.terrain new file mode 100644 index 000000000..b3bd6e927 Binary files /dev/null and b/public/terrain/19/858577/353947.terrain differ diff --git a/public/terrain/19/858577/353948.terrain b/public/terrain/19/858577/353948.terrain new file mode 100644 index 000000000..f7b9c44b7 Binary files /dev/null and b/public/terrain/19/858577/353948.terrain differ diff --git a/public/terrain/19/858577/353949.terrain b/public/terrain/19/858577/353949.terrain new file mode 100644 index 000000000..0103bd2e8 Binary files /dev/null and b/public/terrain/19/858577/353949.terrain differ diff --git a/public/terrain/19/858577/353950.terrain b/public/terrain/19/858577/353950.terrain new file mode 100644 index 000000000..43119fd92 Binary files /dev/null and b/public/terrain/19/858577/353950.terrain differ diff --git a/public/terrain/19/858577/353951.terrain b/public/terrain/19/858577/353951.terrain new file mode 100644 index 000000000..e4d3c307e Binary files /dev/null and b/public/terrain/19/858577/353951.terrain differ diff --git a/public/terrain/19/858577/353952.terrain b/public/terrain/19/858577/353952.terrain new file mode 100644 index 000000000..ce9e2bae7 Binary files /dev/null and b/public/terrain/19/858577/353952.terrain differ diff --git a/public/terrain/19/858577/353953.terrain b/public/terrain/19/858577/353953.terrain new file mode 100644 index 000000000..f1c7bf38f Binary files /dev/null and b/public/terrain/19/858577/353953.terrain differ diff --git a/public/terrain/19/858577/353954.terrain b/public/terrain/19/858577/353954.terrain new file mode 100644 index 000000000..e1c29f092 Binary files /dev/null and b/public/terrain/19/858577/353954.terrain differ diff --git a/public/terrain/19/858577/353955.terrain b/public/terrain/19/858577/353955.terrain new file mode 100644 index 000000000..21e9d2630 Binary files /dev/null and b/public/terrain/19/858577/353955.terrain differ diff --git a/public/terrain/19/858577/353956.terrain b/public/terrain/19/858577/353956.terrain new file mode 100644 index 000000000..facde25ae Binary files /dev/null and b/public/terrain/19/858577/353956.terrain differ diff --git a/public/terrain/19/858577/353957.terrain b/public/terrain/19/858577/353957.terrain new file mode 100644 index 000000000..b1f7a4ab5 Binary files /dev/null and b/public/terrain/19/858577/353957.terrain differ diff --git a/public/terrain/19/858577/353958.terrain b/public/terrain/19/858577/353958.terrain new file mode 100644 index 000000000..9798e53d0 Binary files /dev/null and b/public/terrain/19/858577/353958.terrain differ diff --git a/public/terrain/19/858577/353959.terrain b/public/terrain/19/858577/353959.terrain new file mode 100644 index 000000000..3a29e504e Binary files /dev/null and b/public/terrain/19/858577/353959.terrain differ diff --git a/public/terrain/19/858577/353960.terrain b/public/terrain/19/858577/353960.terrain new file mode 100644 index 000000000..ba52f4ff0 Binary files /dev/null and b/public/terrain/19/858577/353960.terrain differ diff --git a/public/terrain/19/858577/353961.terrain b/public/terrain/19/858577/353961.terrain new file mode 100644 index 000000000..8c53acddd Binary files /dev/null and b/public/terrain/19/858577/353961.terrain differ diff --git a/public/terrain/19/858577/353962.terrain b/public/terrain/19/858577/353962.terrain new file mode 100644 index 000000000..8d2aea193 Binary files /dev/null and b/public/terrain/19/858577/353962.terrain differ diff --git a/public/terrain/19/858577/353963.terrain b/public/terrain/19/858577/353963.terrain new file mode 100644 index 000000000..8d06acf4a Binary files /dev/null and b/public/terrain/19/858577/353963.terrain differ diff --git a/public/terrain/19/858577/353964.terrain b/public/terrain/19/858577/353964.terrain new file mode 100644 index 000000000..868f2a99d Binary files /dev/null and b/public/terrain/19/858577/353964.terrain differ diff --git a/public/terrain/19/858577/353965.terrain b/public/terrain/19/858577/353965.terrain new file mode 100644 index 000000000..880832d35 Binary files /dev/null and b/public/terrain/19/858577/353965.terrain differ diff --git a/public/terrain/19/858577/353966.terrain b/public/terrain/19/858577/353966.terrain new file mode 100644 index 000000000..8093fcb87 Binary files /dev/null and b/public/terrain/19/858577/353966.terrain differ diff --git a/public/terrain/19/858577/353967.terrain b/public/terrain/19/858577/353967.terrain new file mode 100644 index 000000000..1c1c18fb6 Binary files /dev/null and b/public/terrain/19/858577/353967.terrain differ diff --git a/public/terrain/19/858577/353968.terrain b/public/terrain/19/858577/353968.terrain new file mode 100644 index 000000000..3b0330216 Binary files /dev/null and b/public/terrain/19/858577/353968.terrain differ diff --git a/public/terrain/19/858577/353969.terrain b/public/terrain/19/858577/353969.terrain new file mode 100644 index 000000000..4792e62de Binary files /dev/null and b/public/terrain/19/858577/353969.terrain differ diff --git a/public/terrain/19/858577/353970.terrain b/public/terrain/19/858577/353970.terrain new file mode 100644 index 000000000..361f703cd Binary files /dev/null and b/public/terrain/19/858577/353970.terrain differ diff --git a/public/terrain/19/858577/353971.terrain b/public/terrain/19/858577/353971.terrain new file mode 100644 index 000000000..f74dcc9ec Binary files /dev/null and b/public/terrain/19/858577/353971.terrain differ diff --git a/public/terrain/19/858577/353972.terrain b/public/terrain/19/858577/353972.terrain new file mode 100644 index 000000000..bd1a5011b Binary files /dev/null and b/public/terrain/19/858577/353972.terrain differ diff --git a/public/terrain/19/858577/353973.terrain b/public/terrain/19/858577/353973.terrain new file mode 100644 index 000000000..2a0c58b20 Binary files /dev/null and b/public/terrain/19/858577/353973.terrain differ diff --git a/public/terrain/19/858577/353974.terrain b/public/terrain/19/858577/353974.terrain new file mode 100644 index 000000000..e19756add Binary files /dev/null and b/public/terrain/19/858577/353974.terrain differ diff --git a/public/terrain/19/858577/353975.terrain b/public/terrain/19/858577/353975.terrain new file mode 100644 index 000000000..231c79648 Binary files /dev/null and b/public/terrain/19/858577/353975.terrain differ diff --git a/public/terrain/19/858577/353976.terrain b/public/terrain/19/858577/353976.terrain new file mode 100644 index 000000000..3a3dcff95 Binary files /dev/null and b/public/terrain/19/858577/353976.terrain differ diff --git a/public/terrain/19/858577/353977.terrain b/public/terrain/19/858577/353977.terrain new file mode 100644 index 000000000..dd40d5d10 Binary files /dev/null and b/public/terrain/19/858577/353977.terrain differ diff --git a/public/terrain/19/858577/353978.terrain b/public/terrain/19/858577/353978.terrain new file mode 100644 index 000000000..1688423c0 Binary files /dev/null and b/public/terrain/19/858577/353978.terrain differ diff --git a/public/terrain/19/858577/353979.terrain b/public/terrain/19/858577/353979.terrain new file mode 100644 index 000000000..cf6b5c5fa Binary files /dev/null and b/public/terrain/19/858577/353979.terrain differ diff --git a/public/terrain/19/858577/353980.terrain b/public/terrain/19/858577/353980.terrain new file mode 100644 index 000000000..70319c4cd Binary files /dev/null and b/public/terrain/19/858577/353980.terrain differ diff --git a/public/terrain/19/858577/353981.terrain b/public/terrain/19/858577/353981.terrain new file mode 100644 index 000000000..f376a043a Binary files /dev/null and b/public/terrain/19/858577/353981.terrain differ diff --git a/public/terrain/19/858577/353982.terrain b/public/terrain/19/858577/353982.terrain new file mode 100644 index 000000000..ce88e3f24 Binary files /dev/null and b/public/terrain/19/858577/353982.terrain differ diff --git a/public/terrain/19/858577/353983.terrain b/public/terrain/19/858577/353983.terrain new file mode 100644 index 000000000..75d0c0cfe Binary files /dev/null and b/public/terrain/19/858577/353983.terrain differ diff --git a/public/terrain/19/858577/353984.terrain b/public/terrain/19/858577/353984.terrain new file mode 100644 index 000000000..90bf59d5b Binary files /dev/null and b/public/terrain/19/858577/353984.terrain differ diff --git a/public/terrain/19/858577/353985.terrain b/public/terrain/19/858577/353985.terrain new file mode 100644 index 000000000..791731a5d Binary files /dev/null and b/public/terrain/19/858577/353985.terrain differ diff --git a/public/terrain/19/858577/353986.terrain b/public/terrain/19/858577/353986.terrain new file mode 100644 index 000000000..bfee7bbcd Binary files /dev/null and b/public/terrain/19/858577/353986.terrain differ diff --git a/public/terrain/19/858577/353987.terrain b/public/terrain/19/858577/353987.terrain new file mode 100644 index 000000000..e96dabe62 Binary files /dev/null and b/public/terrain/19/858577/353987.terrain differ diff --git a/public/terrain/19/858577/353988.terrain b/public/terrain/19/858577/353988.terrain new file mode 100644 index 000000000..3e0a98fb3 Binary files /dev/null and b/public/terrain/19/858577/353988.terrain differ diff --git a/public/terrain/19/858577/353989.terrain b/public/terrain/19/858577/353989.terrain new file mode 100644 index 000000000..543740e88 Binary files /dev/null and b/public/terrain/19/858577/353989.terrain differ diff --git a/public/terrain/19/858577/353990.terrain b/public/terrain/19/858577/353990.terrain new file mode 100644 index 000000000..389d7a0f6 Binary files /dev/null and b/public/terrain/19/858577/353990.terrain differ diff --git a/public/terrain/19/858577/353991.terrain b/public/terrain/19/858577/353991.terrain new file mode 100644 index 000000000..7b9d49d3c Binary files /dev/null and b/public/terrain/19/858577/353991.terrain differ diff --git a/public/terrain/19/858577/353992.terrain b/public/terrain/19/858577/353992.terrain new file mode 100644 index 000000000..92fd47ec5 Binary files /dev/null and b/public/terrain/19/858577/353992.terrain differ diff --git a/public/terrain/19/858577/353993.terrain b/public/terrain/19/858577/353993.terrain new file mode 100644 index 000000000..1f25c2983 Binary files /dev/null and b/public/terrain/19/858577/353993.terrain differ diff --git a/public/terrain/19/858577/353994.terrain b/public/terrain/19/858577/353994.terrain new file mode 100644 index 000000000..4e475ff8a Binary files /dev/null and b/public/terrain/19/858577/353994.terrain differ diff --git a/public/terrain/19/858577/353995.terrain b/public/terrain/19/858577/353995.terrain new file mode 100644 index 000000000..d8646f2ca Binary files /dev/null and b/public/terrain/19/858577/353995.terrain differ diff --git a/public/terrain/19/858577/353996.terrain b/public/terrain/19/858577/353996.terrain new file mode 100644 index 000000000..4b0a09021 Binary files /dev/null and b/public/terrain/19/858577/353996.terrain differ diff --git a/public/terrain/19/858577/353997.terrain b/public/terrain/19/858577/353997.terrain new file mode 100644 index 000000000..3086432fe Binary files /dev/null and b/public/terrain/19/858577/353997.terrain differ diff --git a/public/terrain/19/858577/353998.terrain b/public/terrain/19/858577/353998.terrain new file mode 100644 index 000000000..5a4c52740 Binary files /dev/null and b/public/terrain/19/858577/353998.terrain differ diff --git a/public/terrain/19/858577/353999.terrain b/public/terrain/19/858577/353999.terrain new file mode 100644 index 000000000..ac61ab4f8 Binary files /dev/null and b/public/terrain/19/858577/353999.terrain differ diff --git a/public/terrain/19/858577/354000.terrain b/public/terrain/19/858577/354000.terrain new file mode 100644 index 000000000..8fd631a16 Binary files /dev/null and b/public/terrain/19/858577/354000.terrain differ diff --git a/public/terrain/19/858577/354001.terrain b/public/terrain/19/858577/354001.terrain new file mode 100644 index 000000000..690de88e6 Binary files /dev/null and b/public/terrain/19/858577/354001.terrain differ diff --git a/public/terrain/19/858577/354002.terrain b/public/terrain/19/858577/354002.terrain new file mode 100644 index 000000000..463ef61d6 Binary files /dev/null and b/public/terrain/19/858577/354002.terrain differ diff --git a/public/terrain/19/858577/354003.terrain b/public/terrain/19/858577/354003.terrain new file mode 100644 index 000000000..81ffbdc98 Binary files /dev/null and b/public/terrain/19/858577/354003.terrain differ diff --git a/public/terrain/19/858577/354004.terrain b/public/terrain/19/858577/354004.terrain new file mode 100644 index 000000000..fb3972ea0 Binary files /dev/null and b/public/terrain/19/858577/354004.terrain differ diff --git a/public/terrain/19/858577/354005.terrain b/public/terrain/19/858577/354005.terrain new file mode 100644 index 000000000..8684f63a4 Binary files /dev/null and b/public/terrain/19/858577/354005.terrain differ diff --git a/public/terrain/19/858577/354006.terrain b/public/terrain/19/858577/354006.terrain new file mode 100644 index 000000000..1e172e759 Binary files /dev/null and b/public/terrain/19/858577/354006.terrain differ diff --git a/public/terrain/19/858577/354007.terrain b/public/terrain/19/858577/354007.terrain new file mode 100644 index 000000000..158ed7d23 Binary files /dev/null and b/public/terrain/19/858577/354007.terrain differ diff --git a/public/terrain/19/858577/354008.terrain b/public/terrain/19/858577/354008.terrain new file mode 100644 index 000000000..cd5abec92 Binary files /dev/null and b/public/terrain/19/858577/354008.terrain differ diff --git a/public/terrain/19/858577/354009.terrain b/public/terrain/19/858577/354009.terrain new file mode 100644 index 000000000..c3c949560 Binary files /dev/null and b/public/terrain/19/858577/354009.terrain differ diff --git a/public/terrain/19/858577/354010.terrain b/public/terrain/19/858577/354010.terrain new file mode 100644 index 000000000..548fb38fb Binary files /dev/null and b/public/terrain/19/858577/354010.terrain differ diff --git a/public/terrain/19/858577/354011.terrain b/public/terrain/19/858577/354011.terrain new file mode 100644 index 000000000..c0635a2fe Binary files /dev/null and b/public/terrain/19/858577/354011.terrain differ diff --git a/public/terrain/19/858577/354012.terrain b/public/terrain/19/858577/354012.terrain new file mode 100644 index 000000000..780cdf7e0 Binary files /dev/null and b/public/terrain/19/858577/354012.terrain differ diff --git a/public/terrain/19/858577/354013.terrain b/public/terrain/19/858577/354013.terrain new file mode 100644 index 000000000..9733a1f19 Binary files /dev/null and b/public/terrain/19/858577/354013.terrain differ diff --git a/public/terrain/19/858577/354014.terrain b/public/terrain/19/858577/354014.terrain new file mode 100644 index 000000000..1c811287f Binary files /dev/null and b/public/terrain/19/858577/354014.terrain differ diff --git a/public/terrain/19/858577/354015.terrain b/public/terrain/19/858577/354015.terrain new file mode 100644 index 000000000..6f175fb8e Binary files /dev/null and b/public/terrain/19/858577/354015.terrain differ diff --git a/public/terrain/19/858577/354016.terrain b/public/terrain/19/858577/354016.terrain new file mode 100644 index 000000000..b198fb49e Binary files /dev/null and b/public/terrain/19/858577/354016.terrain differ diff --git a/public/terrain/19/858577/354017.terrain b/public/terrain/19/858577/354017.terrain new file mode 100644 index 000000000..a220d6ab7 Binary files /dev/null and b/public/terrain/19/858577/354017.terrain differ diff --git a/public/terrain/19/858577/354018.terrain b/public/terrain/19/858577/354018.terrain new file mode 100644 index 000000000..17db69301 Binary files /dev/null and b/public/terrain/19/858577/354018.terrain differ diff --git a/public/terrain/19/858577/354019.terrain b/public/terrain/19/858577/354019.terrain new file mode 100644 index 000000000..efd0483c7 Binary files /dev/null and b/public/terrain/19/858577/354019.terrain differ diff --git a/public/terrain/19/858577/354020.terrain b/public/terrain/19/858577/354020.terrain new file mode 100644 index 000000000..6b5b47164 Binary files /dev/null and b/public/terrain/19/858577/354020.terrain differ diff --git a/public/terrain/19/858577/354021.terrain b/public/terrain/19/858577/354021.terrain new file mode 100644 index 000000000..8cc9153a9 Binary files /dev/null and b/public/terrain/19/858577/354021.terrain differ diff --git a/public/terrain/19/858577/354022.terrain b/public/terrain/19/858577/354022.terrain new file mode 100644 index 000000000..34f4d45ef Binary files /dev/null and b/public/terrain/19/858577/354022.terrain differ diff --git a/public/terrain/19/858577/354023.terrain b/public/terrain/19/858577/354023.terrain new file mode 100644 index 000000000..9db1383d3 Binary files /dev/null and b/public/terrain/19/858577/354023.terrain differ diff --git a/public/terrain/19/858577/354024.terrain b/public/terrain/19/858577/354024.terrain new file mode 100644 index 000000000..eb229763b Binary files /dev/null and b/public/terrain/19/858577/354024.terrain differ diff --git a/public/terrain/19/858577/354025.terrain b/public/terrain/19/858577/354025.terrain new file mode 100644 index 000000000..beb66414c Binary files /dev/null and b/public/terrain/19/858577/354025.terrain differ diff --git a/public/terrain/19/858577/354026.terrain b/public/terrain/19/858577/354026.terrain new file mode 100644 index 000000000..022456164 Binary files /dev/null and b/public/terrain/19/858577/354026.terrain differ diff --git a/public/terrain/19/858577/354027.terrain b/public/terrain/19/858577/354027.terrain new file mode 100644 index 000000000..6f8286db0 Binary files /dev/null and b/public/terrain/19/858577/354027.terrain differ diff --git a/public/terrain/19/858577/354028.terrain b/public/terrain/19/858577/354028.terrain new file mode 100644 index 000000000..683044fcb Binary files /dev/null and b/public/terrain/19/858577/354028.terrain differ diff --git a/public/terrain/19/858577/354029.terrain b/public/terrain/19/858577/354029.terrain new file mode 100644 index 000000000..1bb2a5df2 Binary files /dev/null and b/public/terrain/19/858577/354029.terrain differ diff --git a/public/terrain/19/858577/354030.terrain b/public/terrain/19/858577/354030.terrain new file mode 100644 index 000000000..20e4f8244 Binary files /dev/null and b/public/terrain/19/858577/354030.terrain differ diff --git a/public/terrain/19/858577/354031.terrain b/public/terrain/19/858577/354031.terrain new file mode 100644 index 000000000..a4600e037 Binary files /dev/null and b/public/terrain/19/858577/354031.terrain differ diff --git a/public/terrain/19/858577/354032.terrain b/public/terrain/19/858577/354032.terrain new file mode 100644 index 000000000..9dbad8b61 Binary files /dev/null and b/public/terrain/19/858577/354032.terrain differ diff --git a/public/terrain/19/858577/354033.terrain b/public/terrain/19/858577/354033.terrain new file mode 100644 index 000000000..4d7566058 Binary files /dev/null and b/public/terrain/19/858577/354033.terrain differ diff --git a/public/terrain/19/858577/354034.terrain b/public/terrain/19/858577/354034.terrain new file mode 100644 index 000000000..6e77f6e53 Binary files /dev/null and b/public/terrain/19/858577/354034.terrain differ diff --git a/public/terrain/19/858577/354035.terrain b/public/terrain/19/858577/354035.terrain new file mode 100644 index 000000000..6f308525f Binary files /dev/null and b/public/terrain/19/858577/354035.terrain differ diff --git a/public/terrain/19/858577/354036.terrain b/public/terrain/19/858577/354036.terrain new file mode 100644 index 000000000..452a6c7cb Binary files /dev/null and b/public/terrain/19/858577/354036.terrain differ diff --git a/public/terrain/19/858577/354037.terrain b/public/terrain/19/858577/354037.terrain new file mode 100644 index 000000000..d00320735 Binary files /dev/null and b/public/terrain/19/858577/354037.terrain differ diff --git a/public/terrain/19/858577/354038.terrain b/public/terrain/19/858577/354038.terrain new file mode 100644 index 000000000..b89f2e7e1 Binary files /dev/null and b/public/terrain/19/858577/354038.terrain differ diff --git a/public/terrain/19/858577/354039.terrain b/public/terrain/19/858577/354039.terrain new file mode 100644 index 000000000..949cef228 Binary files /dev/null and b/public/terrain/19/858577/354039.terrain differ diff --git a/public/terrain/19/858577/354040.terrain b/public/terrain/19/858577/354040.terrain new file mode 100644 index 000000000..8cd05c1d9 Binary files /dev/null and b/public/terrain/19/858577/354040.terrain differ diff --git a/public/terrain/19/858577/354041.terrain b/public/terrain/19/858577/354041.terrain new file mode 100644 index 000000000..5aad98df9 Binary files /dev/null and b/public/terrain/19/858577/354041.terrain differ diff --git a/public/terrain/19/858577/354042.terrain b/public/terrain/19/858577/354042.terrain new file mode 100644 index 000000000..d1d765ff9 Binary files /dev/null and b/public/terrain/19/858577/354042.terrain differ diff --git a/public/terrain/19/858577/354043.terrain b/public/terrain/19/858577/354043.terrain new file mode 100644 index 000000000..882ed55b7 Binary files /dev/null and b/public/terrain/19/858577/354043.terrain differ diff --git a/public/terrain/19/858577/354044.terrain b/public/terrain/19/858577/354044.terrain new file mode 100644 index 000000000..91ef6f61e Binary files /dev/null and b/public/terrain/19/858577/354044.terrain differ diff --git a/public/terrain/19/858577/354045.terrain b/public/terrain/19/858577/354045.terrain new file mode 100644 index 000000000..7411fb496 Binary files /dev/null and b/public/terrain/19/858577/354045.terrain differ diff --git a/public/terrain/19/858577/354046.terrain b/public/terrain/19/858577/354046.terrain new file mode 100644 index 000000000..90b1038ef Binary files /dev/null and b/public/terrain/19/858577/354046.terrain differ diff --git a/public/terrain/19/858577/354047.terrain b/public/terrain/19/858577/354047.terrain new file mode 100644 index 000000000..0807cacee Binary files /dev/null and b/public/terrain/19/858577/354047.terrain differ diff --git a/public/terrain/19/858577/354048.terrain b/public/terrain/19/858577/354048.terrain new file mode 100644 index 000000000..0a49288f8 Binary files /dev/null and b/public/terrain/19/858577/354048.terrain differ diff --git a/public/terrain/19/858577/354049.terrain b/public/terrain/19/858577/354049.terrain new file mode 100644 index 000000000..3667e3547 Binary files /dev/null and b/public/terrain/19/858577/354049.terrain differ diff --git a/public/terrain/19/858577/354050.terrain b/public/terrain/19/858577/354050.terrain new file mode 100644 index 000000000..a9c706939 Binary files /dev/null and b/public/terrain/19/858577/354050.terrain differ diff --git a/public/terrain/19/858577/354051.terrain b/public/terrain/19/858577/354051.terrain new file mode 100644 index 000000000..76d599204 Binary files /dev/null and b/public/terrain/19/858577/354051.terrain differ diff --git a/public/terrain/19/858577/354052.terrain b/public/terrain/19/858577/354052.terrain new file mode 100644 index 000000000..3bfd32dcc Binary files /dev/null and b/public/terrain/19/858577/354052.terrain differ diff --git a/public/terrain/19/858577/354053.terrain b/public/terrain/19/858577/354053.terrain new file mode 100644 index 000000000..8e929702b Binary files /dev/null and b/public/terrain/19/858577/354053.terrain differ diff --git a/public/terrain/19/858577/354054.terrain b/public/terrain/19/858577/354054.terrain new file mode 100644 index 000000000..725a7723b Binary files /dev/null and b/public/terrain/19/858577/354054.terrain differ diff --git a/public/terrain/19/858577/354055.terrain b/public/terrain/19/858577/354055.terrain new file mode 100644 index 000000000..4488224f1 Binary files /dev/null and b/public/terrain/19/858577/354055.terrain differ diff --git a/public/terrain/19/858577/354056.terrain b/public/terrain/19/858577/354056.terrain new file mode 100644 index 000000000..0eff2f73d Binary files /dev/null and b/public/terrain/19/858577/354056.terrain differ diff --git a/public/terrain/19/858577/354057.terrain b/public/terrain/19/858577/354057.terrain new file mode 100644 index 000000000..070facb94 Binary files /dev/null and b/public/terrain/19/858577/354057.terrain differ diff --git a/public/terrain/19/858577/354058.terrain b/public/terrain/19/858577/354058.terrain new file mode 100644 index 000000000..62b8807c7 Binary files /dev/null and b/public/terrain/19/858577/354058.terrain differ diff --git a/public/terrain/19/858577/354059.terrain b/public/terrain/19/858577/354059.terrain new file mode 100644 index 000000000..3ecae9ac2 Binary files /dev/null and b/public/terrain/19/858577/354059.terrain differ diff --git a/public/terrain/19/858578/353743.terrain b/public/terrain/19/858578/353743.terrain new file mode 100644 index 000000000..4e58b0f30 Binary files /dev/null and b/public/terrain/19/858578/353743.terrain differ diff --git a/public/terrain/19/858578/353744.terrain b/public/terrain/19/858578/353744.terrain new file mode 100644 index 000000000..2991553fc Binary files /dev/null and b/public/terrain/19/858578/353744.terrain differ diff --git a/public/terrain/19/858578/353745.terrain b/public/terrain/19/858578/353745.terrain new file mode 100644 index 000000000..d25982977 Binary files /dev/null and b/public/terrain/19/858578/353745.terrain differ diff --git a/public/terrain/19/858578/353746.terrain b/public/terrain/19/858578/353746.terrain new file mode 100644 index 000000000..acb2f53c1 Binary files /dev/null and b/public/terrain/19/858578/353746.terrain differ diff --git a/public/terrain/19/858578/353747.terrain b/public/terrain/19/858578/353747.terrain new file mode 100644 index 000000000..20c01ffce Binary files /dev/null and b/public/terrain/19/858578/353747.terrain differ diff --git a/public/terrain/19/858578/353748.terrain b/public/terrain/19/858578/353748.terrain new file mode 100644 index 000000000..cdd20b693 Binary files /dev/null and b/public/terrain/19/858578/353748.terrain differ diff --git a/public/terrain/19/858578/353749.terrain b/public/terrain/19/858578/353749.terrain new file mode 100644 index 000000000..daf2e6a8a Binary files /dev/null and b/public/terrain/19/858578/353749.terrain differ diff --git a/public/terrain/19/858578/353750.terrain b/public/terrain/19/858578/353750.terrain new file mode 100644 index 000000000..23d22fa61 Binary files /dev/null and b/public/terrain/19/858578/353750.terrain differ diff --git a/public/terrain/19/858578/353751.terrain b/public/terrain/19/858578/353751.terrain new file mode 100644 index 000000000..d29704dd3 Binary files /dev/null and b/public/terrain/19/858578/353751.terrain differ diff --git a/public/terrain/19/858578/353752.terrain b/public/terrain/19/858578/353752.terrain new file mode 100644 index 000000000..cf22ce546 Binary files /dev/null and b/public/terrain/19/858578/353752.terrain differ diff --git a/public/terrain/19/858578/353753.terrain b/public/terrain/19/858578/353753.terrain new file mode 100644 index 000000000..060c4d618 Binary files /dev/null and b/public/terrain/19/858578/353753.terrain differ diff --git a/public/terrain/19/858578/353754.terrain b/public/terrain/19/858578/353754.terrain new file mode 100644 index 000000000..901e53409 Binary files /dev/null and b/public/terrain/19/858578/353754.terrain differ diff --git a/public/terrain/19/858578/353755.terrain b/public/terrain/19/858578/353755.terrain new file mode 100644 index 000000000..ddbed6a8a Binary files /dev/null and b/public/terrain/19/858578/353755.terrain differ diff --git a/public/terrain/19/858578/353756.terrain b/public/terrain/19/858578/353756.terrain new file mode 100644 index 000000000..486e96917 Binary files /dev/null and b/public/terrain/19/858578/353756.terrain differ diff --git a/public/terrain/19/858578/353757.terrain b/public/terrain/19/858578/353757.terrain new file mode 100644 index 000000000..ece70c0db Binary files /dev/null and b/public/terrain/19/858578/353757.terrain differ diff --git a/public/terrain/19/858578/353758.terrain b/public/terrain/19/858578/353758.terrain new file mode 100644 index 000000000..8b2da4273 Binary files /dev/null and b/public/terrain/19/858578/353758.terrain differ diff --git a/public/terrain/19/858578/353759.terrain b/public/terrain/19/858578/353759.terrain new file mode 100644 index 000000000..0b786d40d Binary files /dev/null and b/public/terrain/19/858578/353759.terrain differ diff --git a/public/terrain/19/858578/353760.terrain b/public/terrain/19/858578/353760.terrain new file mode 100644 index 000000000..f14ec8f07 Binary files /dev/null and b/public/terrain/19/858578/353760.terrain differ diff --git a/public/terrain/19/858578/353761.terrain b/public/terrain/19/858578/353761.terrain new file mode 100644 index 000000000..af684c125 Binary files /dev/null and b/public/terrain/19/858578/353761.terrain differ diff --git a/public/terrain/19/858578/353762.terrain b/public/terrain/19/858578/353762.terrain new file mode 100644 index 000000000..2114c541e Binary files /dev/null and b/public/terrain/19/858578/353762.terrain differ diff --git a/public/terrain/19/858578/353763.terrain b/public/terrain/19/858578/353763.terrain new file mode 100644 index 000000000..5023e10ef Binary files /dev/null and b/public/terrain/19/858578/353763.terrain differ diff --git a/public/terrain/19/858578/353764.terrain b/public/terrain/19/858578/353764.terrain new file mode 100644 index 000000000..33182a430 Binary files /dev/null and b/public/terrain/19/858578/353764.terrain differ diff --git a/public/terrain/19/858578/353765.terrain b/public/terrain/19/858578/353765.terrain new file mode 100644 index 000000000..f83d0b33c Binary files /dev/null and b/public/terrain/19/858578/353765.terrain differ diff --git a/public/terrain/19/858578/353766.terrain b/public/terrain/19/858578/353766.terrain new file mode 100644 index 000000000..7f2f4e6d1 Binary files /dev/null and b/public/terrain/19/858578/353766.terrain differ diff --git a/public/terrain/19/858578/353767.terrain b/public/terrain/19/858578/353767.terrain new file mode 100644 index 000000000..52088f5a0 Binary files /dev/null and b/public/terrain/19/858578/353767.terrain differ diff --git a/public/terrain/19/858578/353768.terrain b/public/terrain/19/858578/353768.terrain new file mode 100644 index 000000000..3c0794367 Binary files /dev/null and b/public/terrain/19/858578/353768.terrain differ diff --git a/public/terrain/19/858578/353769.terrain b/public/terrain/19/858578/353769.terrain new file mode 100644 index 000000000..70c308f84 Binary files /dev/null and b/public/terrain/19/858578/353769.terrain differ diff --git a/public/terrain/19/858578/353770.terrain b/public/terrain/19/858578/353770.terrain new file mode 100644 index 000000000..434ddc9c1 Binary files /dev/null and b/public/terrain/19/858578/353770.terrain differ diff --git a/public/terrain/19/858578/353771.terrain b/public/terrain/19/858578/353771.terrain new file mode 100644 index 000000000..17a6f9104 Binary files /dev/null and b/public/terrain/19/858578/353771.terrain differ diff --git a/public/terrain/19/858578/353772.terrain b/public/terrain/19/858578/353772.terrain new file mode 100644 index 000000000..2e95a01d4 Binary files /dev/null and b/public/terrain/19/858578/353772.terrain differ diff --git a/public/terrain/19/858578/353773.terrain b/public/terrain/19/858578/353773.terrain new file mode 100644 index 000000000..7f8fd4831 Binary files /dev/null and b/public/terrain/19/858578/353773.terrain differ diff --git a/public/terrain/19/858578/353774.terrain b/public/terrain/19/858578/353774.terrain new file mode 100644 index 000000000..de07a2ba4 Binary files /dev/null and b/public/terrain/19/858578/353774.terrain differ diff --git a/public/terrain/19/858578/353775.terrain b/public/terrain/19/858578/353775.terrain new file mode 100644 index 000000000..b016133ff Binary files /dev/null and b/public/terrain/19/858578/353775.terrain differ diff --git a/public/terrain/19/858578/353776.terrain b/public/terrain/19/858578/353776.terrain new file mode 100644 index 000000000..d6f5530fa Binary files /dev/null and b/public/terrain/19/858578/353776.terrain differ diff --git a/public/terrain/19/858578/353777.terrain b/public/terrain/19/858578/353777.terrain new file mode 100644 index 000000000..9c4a966ad Binary files /dev/null and b/public/terrain/19/858578/353777.terrain differ diff --git a/public/terrain/19/858578/353778.terrain b/public/terrain/19/858578/353778.terrain new file mode 100644 index 000000000..0bf84c01a Binary files /dev/null and b/public/terrain/19/858578/353778.terrain differ diff --git a/public/terrain/19/858578/353779.terrain b/public/terrain/19/858578/353779.terrain new file mode 100644 index 000000000..63c547607 Binary files /dev/null and b/public/terrain/19/858578/353779.terrain differ diff --git a/public/terrain/19/858578/353780.terrain b/public/terrain/19/858578/353780.terrain new file mode 100644 index 000000000..3ab59c3f3 Binary files /dev/null and b/public/terrain/19/858578/353780.terrain differ diff --git a/public/terrain/19/858578/353781.terrain b/public/terrain/19/858578/353781.terrain new file mode 100644 index 000000000..addd4799c Binary files /dev/null and b/public/terrain/19/858578/353781.terrain differ diff --git a/public/terrain/19/858578/353782.terrain b/public/terrain/19/858578/353782.terrain new file mode 100644 index 000000000..c111f3fd6 Binary files /dev/null and b/public/terrain/19/858578/353782.terrain differ diff --git a/public/terrain/19/858578/353783.terrain b/public/terrain/19/858578/353783.terrain new file mode 100644 index 000000000..f751546d3 Binary files /dev/null and b/public/terrain/19/858578/353783.terrain differ diff --git a/public/terrain/19/858578/353784.terrain b/public/terrain/19/858578/353784.terrain new file mode 100644 index 000000000..41a6b6c9b Binary files /dev/null and b/public/terrain/19/858578/353784.terrain differ diff --git a/public/terrain/19/858578/353785.terrain b/public/terrain/19/858578/353785.terrain new file mode 100644 index 000000000..22a17385b Binary files /dev/null and b/public/terrain/19/858578/353785.terrain differ diff --git a/public/terrain/19/858578/353786.terrain b/public/terrain/19/858578/353786.terrain new file mode 100644 index 000000000..e949f7274 Binary files /dev/null and b/public/terrain/19/858578/353786.terrain differ diff --git a/public/terrain/19/858578/353787.terrain b/public/terrain/19/858578/353787.terrain new file mode 100644 index 000000000..cc55adb3b Binary files /dev/null and b/public/terrain/19/858578/353787.terrain differ diff --git a/public/terrain/19/858578/353788.terrain b/public/terrain/19/858578/353788.terrain new file mode 100644 index 000000000..53441d1d7 Binary files /dev/null and b/public/terrain/19/858578/353788.terrain differ diff --git a/public/terrain/19/858578/353789.terrain b/public/terrain/19/858578/353789.terrain new file mode 100644 index 000000000..005802fbe Binary files /dev/null and b/public/terrain/19/858578/353789.terrain differ diff --git a/public/terrain/19/858578/353790.terrain b/public/terrain/19/858578/353790.terrain new file mode 100644 index 000000000..fccadc60b Binary files /dev/null and b/public/terrain/19/858578/353790.terrain differ diff --git a/public/terrain/19/858578/353791.terrain b/public/terrain/19/858578/353791.terrain new file mode 100644 index 000000000..12fcd5521 Binary files /dev/null and b/public/terrain/19/858578/353791.terrain differ diff --git a/public/terrain/19/858578/353792.terrain b/public/terrain/19/858578/353792.terrain new file mode 100644 index 000000000..6b7d099e3 Binary files /dev/null and b/public/terrain/19/858578/353792.terrain differ diff --git a/public/terrain/19/858578/353793.terrain b/public/terrain/19/858578/353793.terrain new file mode 100644 index 000000000..6e63c5c66 Binary files /dev/null and b/public/terrain/19/858578/353793.terrain differ diff --git a/public/terrain/19/858578/353794.terrain b/public/terrain/19/858578/353794.terrain new file mode 100644 index 000000000..b96d77216 Binary files /dev/null and b/public/terrain/19/858578/353794.terrain differ diff --git a/public/terrain/19/858578/353795.terrain b/public/terrain/19/858578/353795.terrain new file mode 100644 index 000000000..03748bd48 Binary files /dev/null and b/public/terrain/19/858578/353795.terrain differ diff --git a/public/terrain/19/858578/353796.terrain b/public/terrain/19/858578/353796.terrain new file mode 100644 index 000000000..29390a265 Binary files /dev/null and b/public/terrain/19/858578/353796.terrain differ diff --git a/public/terrain/19/858578/353797.terrain b/public/terrain/19/858578/353797.terrain new file mode 100644 index 000000000..78f83cca3 Binary files /dev/null and b/public/terrain/19/858578/353797.terrain differ diff --git a/public/terrain/19/858578/353798.terrain b/public/terrain/19/858578/353798.terrain new file mode 100644 index 000000000..c9e12ac8c Binary files /dev/null and b/public/terrain/19/858578/353798.terrain differ diff --git a/public/terrain/19/858578/353799.terrain b/public/terrain/19/858578/353799.terrain new file mode 100644 index 000000000..f0576ef09 Binary files /dev/null and b/public/terrain/19/858578/353799.terrain differ diff --git a/public/terrain/19/858578/353800.terrain b/public/terrain/19/858578/353800.terrain new file mode 100644 index 000000000..70865c3be Binary files /dev/null and b/public/terrain/19/858578/353800.terrain differ diff --git a/public/terrain/19/858578/353801.terrain b/public/terrain/19/858578/353801.terrain new file mode 100644 index 000000000..d1a0e45eb Binary files /dev/null and b/public/terrain/19/858578/353801.terrain differ diff --git a/public/terrain/19/858578/353802.terrain b/public/terrain/19/858578/353802.terrain new file mode 100644 index 000000000..521de55a8 Binary files /dev/null and b/public/terrain/19/858578/353802.terrain differ diff --git a/public/terrain/19/858578/353803.terrain b/public/terrain/19/858578/353803.terrain new file mode 100644 index 000000000..d1dcfc2d2 Binary files /dev/null and b/public/terrain/19/858578/353803.terrain differ diff --git a/public/terrain/19/858578/353804.terrain b/public/terrain/19/858578/353804.terrain new file mode 100644 index 000000000..685243e16 Binary files /dev/null and b/public/terrain/19/858578/353804.terrain differ diff --git a/public/terrain/19/858578/353805.terrain b/public/terrain/19/858578/353805.terrain new file mode 100644 index 000000000..20afa6bb4 Binary files /dev/null and b/public/terrain/19/858578/353805.terrain differ diff --git a/public/terrain/19/858578/353806.terrain b/public/terrain/19/858578/353806.terrain new file mode 100644 index 000000000..7a438dd1e Binary files /dev/null and b/public/terrain/19/858578/353806.terrain differ diff --git a/public/terrain/19/858578/353807.terrain b/public/terrain/19/858578/353807.terrain new file mode 100644 index 000000000..51cd0d61e Binary files /dev/null and b/public/terrain/19/858578/353807.terrain differ diff --git a/public/terrain/19/858578/353808.terrain b/public/terrain/19/858578/353808.terrain new file mode 100644 index 000000000..02a2ca425 Binary files /dev/null and b/public/terrain/19/858578/353808.terrain differ diff --git a/public/terrain/19/858578/353809.terrain b/public/terrain/19/858578/353809.terrain new file mode 100644 index 000000000..126c4ff98 Binary files /dev/null and b/public/terrain/19/858578/353809.terrain differ diff --git a/public/terrain/19/858578/353810.terrain b/public/terrain/19/858578/353810.terrain new file mode 100644 index 000000000..b4a79e5b4 Binary files /dev/null and b/public/terrain/19/858578/353810.terrain differ diff --git a/public/terrain/19/858578/353811.terrain b/public/terrain/19/858578/353811.terrain new file mode 100644 index 000000000..7898b4a5e Binary files /dev/null and b/public/terrain/19/858578/353811.terrain differ diff --git a/public/terrain/19/858578/353812.terrain b/public/terrain/19/858578/353812.terrain new file mode 100644 index 000000000..4bcb6599a Binary files /dev/null and b/public/terrain/19/858578/353812.terrain differ diff --git a/public/terrain/19/858578/353813.terrain b/public/terrain/19/858578/353813.terrain new file mode 100644 index 000000000..5ed547949 Binary files /dev/null and b/public/terrain/19/858578/353813.terrain differ diff --git a/public/terrain/19/858578/353814.terrain b/public/terrain/19/858578/353814.terrain new file mode 100644 index 000000000..7581864bc Binary files /dev/null and b/public/terrain/19/858578/353814.terrain differ diff --git a/public/terrain/19/858578/353815.terrain b/public/terrain/19/858578/353815.terrain new file mode 100644 index 000000000..db7c597fb Binary files /dev/null and b/public/terrain/19/858578/353815.terrain differ diff --git a/public/terrain/19/858578/353816.terrain b/public/terrain/19/858578/353816.terrain new file mode 100644 index 000000000..3ccba0461 Binary files /dev/null and b/public/terrain/19/858578/353816.terrain differ diff --git a/public/terrain/19/858578/353817.terrain b/public/terrain/19/858578/353817.terrain new file mode 100644 index 000000000..a8d394403 Binary files /dev/null and b/public/terrain/19/858578/353817.terrain differ diff --git a/public/terrain/19/858578/353818.terrain b/public/terrain/19/858578/353818.terrain new file mode 100644 index 000000000..3ae7028a6 Binary files /dev/null and b/public/terrain/19/858578/353818.terrain differ diff --git a/public/terrain/19/858578/353819.terrain b/public/terrain/19/858578/353819.terrain new file mode 100644 index 000000000..4ae6f729b Binary files /dev/null and b/public/terrain/19/858578/353819.terrain differ diff --git a/public/terrain/19/858578/353820.terrain b/public/terrain/19/858578/353820.terrain new file mode 100644 index 000000000..ded001daf Binary files /dev/null and b/public/terrain/19/858578/353820.terrain differ diff --git a/public/terrain/19/858578/353821.terrain b/public/terrain/19/858578/353821.terrain new file mode 100644 index 000000000..6333e3f9c Binary files /dev/null and b/public/terrain/19/858578/353821.terrain differ diff --git a/public/terrain/19/858578/353822.terrain b/public/terrain/19/858578/353822.terrain new file mode 100644 index 000000000..7071b215a Binary files /dev/null and b/public/terrain/19/858578/353822.terrain differ diff --git a/public/terrain/19/858578/353823.terrain b/public/terrain/19/858578/353823.terrain new file mode 100644 index 000000000..f04165897 Binary files /dev/null and b/public/terrain/19/858578/353823.terrain differ diff --git a/public/terrain/19/858578/353824.terrain b/public/terrain/19/858578/353824.terrain new file mode 100644 index 000000000..98856ee59 Binary files /dev/null and b/public/terrain/19/858578/353824.terrain differ diff --git a/public/terrain/19/858578/353825.terrain b/public/terrain/19/858578/353825.terrain new file mode 100644 index 000000000..31f030794 Binary files /dev/null and b/public/terrain/19/858578/353825.terrain differ diff --git a/public/terrain/19/858578/353826.terrain b/public/terrain/19/858578/353826.terrain new file mode 100644 index 000000000..82fae08c3 Binary files /dev/null and b/public/terrain/19/858578/353826.terrain differ diff --git a/public/terrain/19/858578/353827.terrain b/public/terrain/19/858578/353827.terrain new file mode 100644 index 000000000..64801c649 Binary files /dev/null and b/public/terrain/19/858578/353827.terrain differ diff --git a/public/terrain/19/858578/353828.terrain b/public/terrain/19/858578/353828.terrain new file mode 100644 index 000000000..518fbfbbb Binary files /dev/null and b/public/terrain/19/858578/353828.terrain differ diff --git a/public/terrain/19/858578/353829.terrain b/public/terrain/19/858578/353829.terrain new file mode 100644 index 000000000..b5c9b4dfd Binary files /dev/null and b/public/terrain/19/858578/353829.terrain differ diff --git a/public/terrain/19/858578/353830.terrain b/public/terrain/19/858578/353830.terrain new file mode 100644 index 000000000..67a29e25b Binary files /dev/null and b/public/terrain/19/858578/353830.terrain differ diff --git a/public/terrain/19/858578/353831.terrain b/public/terrain/19/858578/353831.terrain new file mode 100644 index 000000000..7eba15b4a Binary files /dev/null and b/public/terrain/19/858578/353831.terrain differ diff --git a/public/terrain/19/858578/353832.terrain b/public/terrain/19/858578/353832.terrain new file mode 100644 index 000000000..a3ecbc03c Binary files /dev/null and b/public/terrain/19/858578/353832.terrain differ diff --git a/public/terrain/19/858578/353833.terrain b/public/terrain/19/858578/353833.terrain new file mode 100644 index 000000000..dc253df0f Binary files /dev/null and b/public/terrain/19/858578/353833.terrain differ diff --git a/public/terrain/19/858578/353834.terrain b/public/terrain/19/858578/353834.terrain new file mode 100644 index 000000000..281f984c1 Binary files /dev/null and b/public/terrain/19/858578/353834.terrain differ diff --git a/public/terrain/19/858578/353835.terrain b/public/terrain/19/858578/353835.terrain new file mode 100644 index 000000000..cca4dc015 Binary files /dev/null and b/public/terrain/19/858578/353835.terrain differ diff --git a/public/terrain/19/858578/353836.terrain b/public/terrain/19/858578/353836.terrain new file mode 100644 index 000000000..b214dd933 Binary files /dev/null and b/public/terrain/19/858578/353836.terrain differ diff --git a/public/terrain/19/858578/353837.terrain b/public/terrain/19/858578/353837.terrain new file mode 100644 index 000000000..11d66fc8f Binary files /dev/null and b/public/terrain/19/858578/353837.terrain differ diff --git a/public/terrain/19/858578/353838.terrain b/public/terrain/19/858578/353838.terrain new file mode 100644 index 000000000..2d7a5ff77 Binary files /dev/null and b/public/terrain/19/858578/353838.terrain differ diff --git a/public/terrain/19/858578/353839.terrain b/public/terrain/19/858578/353839.terrain new file mode 100644 index 000000000..89923bdc4 Binary files /dev/null and b/public/terrain/19/858578/353839.terrain differ diff --git a/public/terrain/19/858578/353840.terrain b/public/terrain/19/858578/353840.terrain new file mode 100644 index 000000000..269651fc0 Binary files /dev/null and b/public/terrain/19/858578/353840.terrain differ diff --git a/public/terrain/19/858578/353841.terrain b/public/terrain/19/858578/353841.terrain new file mode 100644 index 000000000..5ca9ee907 Binary files /dev/null and b/public/terrain/19/858578/353841.terrain differ diff --git a/public/terrain/19/858578/353842.terrain b/public/terrain/19/858578/353842.terrain new file mode 100644 index 000000000..d2a88f1fd Binary files /dev/null and b/public/terrain/19/858578/353842.terrain differ diff --git a/public/terrain/19/858578/353843.terrain b/public/terrain/19/858578/353843.terrain new file mode 100644 index 000000000..f69409d59 Binary files /dev/null and b/public/terrain/19/858578/353843.terrain differ diff --git a/public/terrain/19/858578/353844.terrain b/public/terrain/19/858578/353844.terrain new file mode 100644 index 000000000..d0fa599d2 Binary files /dev/null and b/public/terrain/19/858578/353844.terrain differ diff --git a/public/terrain/19/858578/353845.terrain b/public/terrain/19/858578/353845.terrain new file mode 100644 index 000000000..f565cb554 Binary files /dev/null and b/public/terrain/19/858578/353845.terrain differ diff --git a/public/terrain/19/858578/353846.terrain b/public/terrain/19/858578/353846.terrain new file mode 100644 index 000000000..40af6da33 Binary files /dev/null and b/public/terrain/19/858578/353846.terrain differ diff --git a/public/terrain/19/858578/353847.terrain b/public/terrain/19/858578/353847.terrain new file mode 100644 index 000000000..31949b515 Binary files /dev/null and b/public/terrain/19/858578/353847.terrain differ diff --git a/public/terrain/19/858578/353848.terrain b/public/terrain/19/858578/353848.terrain new file mode 100644 index 000000000..22de1cbcb Binary files /dev/null and b/public/terrain/19/858578/353848.terrain differ diff --git a/public/terrain/19/858578/353849.terrain b/public/terrain/19/858578/353849.terrain new file mode 100644 index 000000000..c42815437 Binary files /dev/null and b/public/terrain/19/858578/353849.terrain differ diff --git a/public/terrain/19/858578/353850.terrain b/public/terrain/19/858578/353850.terrain new file mode 100644 index 000000000..4342c0993 Binary files /dev/null and b/public/terrain/19/858578/353850.terrain differ diff --git a/public/terrain/19/858578/353851.terrain b/public/terrain/19/858578/353851.terrain new file mode 100644 index 000000000..f98b04ebf Binary files /dev/null and b/public/terrain/19/858578/353851.terrain differ diff --git a/public/terrain/19/858578/353852.terrain b/public/terrain/19/858578/353852.terrain new file mode 100644 index 000000000..1a3854637 Binary files /dev/null and b/public/terrain/19/858578/353852.terrain differ diff --git a/public/terrain/19/858578/353853.terrain b/public/terrain/19/858578/353853.terrain new file mode 100644 index 000000000..8f19db81f Binary files /dev/null and b/public/terrain/19/858578/353853.terrain differ diff --git a/public/terrain/19/858578/353854.terrain b/public/terrain/19/858578/353854.terrain new file mode 100644 index 000000000..59c7541b4 Binary files /dev/null and b/public/terrain/19/858578/353854.terrain differ diff --git a/public/terrain/19/858578/353855.terrain b/public/terrain/19/858578/353855.terrain new file mode 100644 index 000000000..dc7284b24 Binary files /dev/null and b/public/terrain/19/858578/353855.terrain differ diff --git a/public/terrain/19/858578/353856.terrain b/public/terrain/19/858578/353856.terrain new file mode 100644 index 000000000..9ab18841c Binary files /dev/null and b/public/terrain/19/858578/353856.terrain differ diff --git a/public/terrain/19/858578/353857.terrain b/public/terrain/19/858578/353857.terrain new file mode 100644 index 000000000..115f68b46 Binary files /dev/null and b/public/terrain/19/858578/353857.terrain differ diff --git a/public/terrain/19/858578/353858.terrain b/public/terrain/19/858578/353858.terrain new file mode 100644 index 000000000..e69e1cd81 Binary files /dev/null and b/public/terrain/19/858578/353858.terrain differ diff --git a/public/terrain/19/858578/353859.terrain b/public/terrain/19/858578/353859.terrain new file mode 100644 index 000000000..9a8a4befe Binary files /dev/null and b/public/terrain/19/858578/353859.terrain differ diff --git a/public/terrain/19/858578/353860.terrain b/public/terrain/19/858578/353860.terrain new file mode 100644 index 000000000..b82980c32 Binary files /dev/null and b/public/terrain/19/858578/353860.terrain differ diff --git a/public/terrain/19/858578/353861.terrain b/public/terrain/19/858578/353861.terrain new file mode 100644 index 000000000..2a0c593e9 Binary files /dev/null and b/public/terrain/19/858578/353861.terrain differ diff --git a/public/terrain/19/858578/353862.terrain b/public/terrain/19/858578/353862.terrain new file mode 100644 index 000000000..c5fe0b2ce Binary files /dev/null and b/public/terrain/19/858578/353862.terrain differ diff --git a/public/terrain/19/858578/353863.terrain b/public/terrain/19/858578/353863.terrain new file mode 100644 index 000000000..081ccd4b1 Binary files /dev/null and b/public/terrain/19/858578/353863.terrain differ diff --git a/public/terrain/19/858578/353864.terrain b/public/terrain/19/858578/353864.terrain new file mode 100644 index 000000000..8eae750b0 Binary files /dev/null and b/public/terrain/19/858578/353864.terrain differ diff --git a/public/terrain/19/858578/353865.terrain b/public/terrain/19/858578/353865.terrain new file mode 100644 index 000000000..af6a6ddef Binary files /dev/null and b/public/terrain/19/858578/353865.terrain differ diff --git a/public/terrain/19/858578/353866.terrain b/public/terrain/19/858578/353866.terrain new file mode 100644 index 000000000..cc1d19d6f Binary files /dev/null and b/public/terrain/19/858578/353866.terrain differ diff --git a/public/terrain/19/858578/353867.terrain b/public/terrain/19/858578/353867.terrain new file mode 100644 index 000000000..727ecde4f Binary files /dev/null and b/public/terrain/19/858578/353867.terrain differ diff --git a/public/terrain/19/858578/353868.terrain b/public/terrain/19/858578/353868.terrain new file mode 100644 index 000000000..3b5a63302 Binary files /dev/null and b/public/terrain/19/858578/353868.terrain differ diff --git a/public/terrain/19/858578/353869.terrain b/public/terrain/19/858578/353869.terrain new file mode 100644 index 000000000..87710e5df Binary files /dev/null and b/public/terrain/19/858578/353869.terrain differ diff --git a/public/terrain/19/858578/353870.terrain b/public/terrain/19/858578/353870.terrain new file mode 100644 index 000000000..9d54fb4e2 Binary files /dev/null and b/public/terrain/19/858578/353870.terrain differ diff --git a/public/terrain/19/858578/353871.terrain b/public/terrain/19/858578/353871.terrain new file mode 100644 index 000000000..1111d46e5 Binary files /dev/null and b/public/terrain/19/858578/353871.terrain differ diff --git a/public/terrain/19/858578/353872.terrain b/public/terrain/19/858578/353872.terrain new file mode 100644 index 000000000..75b76532b Binary files /dev/null and b/public/terrain/19/858578/353872.terrain differ diff --git a/public/terrain/19/858578/353873.terrain b/public/terrain/19/858578/353873.terrain new file mode 100644 index 000000000..48bfa949d Binary files /dev/null and b/public/terrain/19/858578/353873.terrain differ diff --git a/public/terrain/19/858578/353874.terrain b/public/terrain/19/858578/353874.terrain new file mode 100644 index 000000000..bc4e0208f Binary files /dev/null and b/public/terrain/19/858578/353874.terrain differ diff --git a/public/terrain/19/858578/353875.terrain b/public/terrain/19/858578/353875.terrain new file mode 100644 index 000000000..e7047066a Binary files /dev/null and b/public/terrain/19/858578/353875.terrain differ diff --git a/public/terrain/19/858578/353876.terrain b/public/terrain/19/858578/353876.terrain new file mode 100644 index 000000000..3a23a838b Binary files /dev/null and b/public/terrain/19/858578/353876.terrain differ diff --git a/public/terrain/19/858578/353877.terrain b/public/terrain/19/858578/353877.terrain new file mode 100644 index 000000000..6d2dcb2e4 Binary files /dev/null and b/public/terrain/19/858578/353877.terrain differ diff --git a/public/terrain/19/858578/353878.terrain b/public/terrain/19/858578/353878.terrain new file mode 100644 index 000000000..5cfa620dc Binary files /dev/null and b/public/terrain/19/858578/353878.terrain differ diff --git a/public/terrain/19/858578/353879.terrain b/public/terrain/19/858578/353879.terrain new file mode 100644 index 000000000..f9e2d4868 Binary files /dev/null and b/public/terrain/19/858578/353879.terrain differ diff --git a/public/terrain/19/858578/353880.terrain b/public/terrain/19/858578/353880.terrain new file mode 100644 index 000000000..d7c3f2bdc Binary files /dev/null and b/public/terrain/19/858578/353880.terrain differ diff --git a/public/terrain/19/858578/353881.terrain b/public/terrain/19/858578/353881.terrain new file mode 100644 index 000000000..e299008e9 Binary files /dev/null and b/public/terrain/19/858578/353881.terrain differ diff --git a/public/terrain/19/858578/353882.terrain b/public/terrain/19/858578/353882.terrain new file mode 100644 index 000000000..102b6d6b6 Binary files /dev/null and b/public/terrain/19/858578/353882.terrain differ diff --git a/public/terrain/19/858578/353883.terrain b/public/terrain/19/858578/353883.terrain new file mode 100644 index 000000000..7bc1bc8ef Binary files /dev/null and b/public/terrain/19/858578/353883.terrain differ diff --git a/public/terrain/19/858578/353884.terrain b/public/terrain/19/858578/353884.terrain new file mode 100644 index 000000000..ec0741a2c Binary files /dev/null and b/public/terrain/19/858578/353884.terrain differ diff --git a/public/terrain/19/858578/353885.terrain b/public/terrain/19/858578/353885.terrain new file mode 100644 index 000000000..dfa3baa39 Binary files /dev/null and b/public/terrain/19/858578/353885.terrain differ diff --git a/public/terrain/19/858578/353886.terrain b/public/terrain/19/858578/353886.terrain new file mode 100644 index 000000000..896023542 Binary files /dev/null and b/public/terrain/19/858578/353886.terrain differ diff --git a/public/terrain/19/858578/353887.terrain b/public/terrain/19/858578/353887.terrain new file mode 100644 index 000000000..7063832e3 Binary files /dev/null and b/public/terrain/19/858578/353887.terrain differ diff --git a/public/terrain/19/858578/353888.terrain b/public/terrain/19/858578/353888.terrain new file mode 100644 index 000000000..f1f77366d Binary files /dev/null and b/public/terrain/19/858578/353888.terrain differ diff --git a/public/terrain/19/858578/353889.terrain b/public/terrain/19/858578/353889.terrain new file mode 100644 index 000000000..73c17a8f2 Binary files /dev/null and b/public/terrain/19/858578/353889.terrain differ diff --git a/public/terrain/19/858578/353890.terrain b/public/terrain/19/858578/353890.terrain new file mode 100644 index 000000000..cc45666ce Binary files /dev/null and b/public/terrain/19/858578/353890.terrain differ diff --git a/public/terrain/19/858578/353891.terrain b/public/terrain/19/858578/353891.terrain new file mode 100644 index 000000000..04085d79c Binary files /dev/null and b/public/terrain/19/858578/353891.terrain differ diff --git a/public/terrain/19/858578/353892.terrain b/public/terrain/19/858578/353892.terrain new file mode 100644 index 000000000..b4f058e1b Binary files /dev/null and b/public/terrain/19/858578/353892.terrain differ diff --git a/public/terrain/19/858578/353893.terrain b/public/terrain/19/858578/353893.terrain new file mode 100644 index 000000000..70cd52b54 Binary files /dev/null and b/public/terrain/19/858578/353893.terrain differ diff --git a/public/terrain/19/858578/353894.terrain b/public/terrain/19/858578/353894.terrain new file mode 100644 index 000000000..a391f9ca1 Binary files /dev/null and b/public/terrain/19/858578/353894.terrain differ diff --git a/public/terrain/19/858578/353895.terrain b/public/terrain/19/858578/353895.terrain new file mode 100644 index 000000000..0564155ce Binary files /dev/null and b/public/terrain/19/858578/353895.terrain differ diff --git a/public/terrain/19/858578/353896.terrain b/public/terrain/19/858578/353896.terrain new file mode 100644 index 000000000..968194f3c Binary files /dev/null and b/public/terrain/19/858578/353896.terrain differ diff --git a/public/terrain/19/858578/353897.terrain b/public/terrain/19/858578/353897.terrain new file mode 100644 index 000000000..1fbcea687 Binary files /dev/null and b/public/terrain/19/858578/353897.terrain differ diff --git a/public/terrain/19/858578/353898.terrain b/public/terrain/19/858578/353898.terrain new file mode 100644 index 000000000..cc09e6059 Binary files /dev/null and b/public/terrain/19/858578/353898.terrain differ diff --git a/public/terrain/19/858578/353899.terrain b/public/terrain/19/858578/353899.terrain new file mode 100644 index 000000000..f381594d0 Binary files /dev/null and b/public/terrain/19/858578/353899.terrain differ diff --git a/public/terrain/19/858578/353900.terrain b/public/terrain/19/858578/353900.terrain new file mode 100644 index 000000000..7a6074ba7 Binary files /dev/null and b/public/terrain/19/858578/353900.terrain differ diff --git a/public/terrain/19/858578/353901.terrain b/public/terrain/19/858578/353901.terrain new file mode 100644 index 000000000..b83bee874 Binary files /dev/null and b/public/terrain/19/858578/353901.terrain differ diff --git a/public/terrain/19/858578/353902.terrain b/public/terrain/19/858578/353902.terrain new file mode 100644 index 000000000..c5b764281 Binary files /dev/null and b/public/terrain/19/858578/353902.terrain differ diff --git a/public/terrain/19/858578/353903.terrain b/public/terrain/19/858578/353903.terrain new file mode 100644 index 000000000..03c8ff004 Binary files /dev/null and b/public/terrain/19/858578/353903.terrain differ diff --git a/public/terrain/19/858578/353904.terrain b/public/terrain/19/858578/353904.terrain new file mode 100644 index 000000000..94fcfe355 Binary files /dev/null and b/public/terrain/19/858578/353904.terrain differ diff --git a/public/terrain/19/858578/353905.terrain b/public/terrain/19/858578/353905.terrain new file mode 100644 index 000000000..b0a634fa9 Binary files /dev/null and b/public/terrain/19/858578/353905.terrain differ diff --git a/public/terrain/19/858578/353906.terrain b/public/terrain/19/858578/353906.terrain new file mode 100644 index 000000000..0f6c343c1 Binary files /dev/null and b/public/terrain/19/858578/353906.terrain differ diff --git a/public/terrain/19/858578/353907.terrain b/public/terrain/19/858578/353907.terrain new file mode 100644 index 000000000..860aa5160 Binary files /dev/null and b/public/terrain/19/858578/353907.terrain differ diff --git a/public/terrain/19/858578/353908.terrain b/public/terrain/19/858578/353908.terrain new file mode 100644 index 000000000..4c996e452 Binary files /dev/null and b/public/terrain/19/858578/353908.terrain differ diff --git a/public/terrain/19/858578/353909.terrain b/public/terrain/19/858578/353909.terrain new file mode 100644 index 000000000..8b51ce814 Binary files /dev/null and b/public/terrain/19/858578/353909.terrain differ diff --git a/public/terrain/19/858578/353910.terrain b/public/terrain/19/858578/353910.terrain new file mode 100644 index 000000000..0baa6369a Binary files /dev/null and b/public/terrain/19/858578/353910.terrain differ diff --git a/public/terrain/19/858578/353911.terrain b/public/terrain/19/858578/353911.terrain new file mode 100644 index 000000000..bc290aba2 Binary files /dev/null and b/public/terrain/19/858578/353911.terrain differ diff --git a/public/terrain/19/858578/353912.terrain b/public/terrain/19/858578/353912.terrain new file mode 100644 index 000000000..bcb1afa94 Binary files /dev/null and b/public/terrain/19/858578/353912.terrain differ diff --git a/public/terrain/19/858578/353913.terrain b/public/terrain/19/858578/353913.terrain new file mode 100644 index 000000000..1f4f603d6 Binary files /dev/null and b/public/terrain/19/858578/353913.terrain differ diff --git a/public/terrain/19/858578/353914.terrain b/public/terrain/19/858578/353914.terrain new file mode 100644 index 000000000..d9f0624fa Binary files /dev/null and b/public/terrain/19/858578/353914.terrain differ diff --git a/public/terrain/19/858578/353915.terrain b/public/terrain/19/858578/353915.terrain new file mode 100644 index 000000000..d2c743d5e Binary files /dev/null and b/public/terrain/19/858578/353915.terrain differ diff --git a/public/terrain/19/858578/353916.terrain b/public/terrain/19/858578/353916.terrain new file mode 100644 index 000000000..508f70939 Binary files /dev/null and b/public/terrain/19/858578/353916.terrain differ diff --git a/public/terrain/19/858578/353917.terrain b/public/terrain/19/858578/353917.terrain new file mode 100644 index 000000000..bc945eeda Binary files /dev/null and b/public/terrain/19/858578/353917.terrain differ diff --git a/public/terrain/19/858578/353918.terrain b/public/terrain/19/858578/353918.terrain new file mode 100644 index 000000000..c35405a26 Binary files /dev/null and b/public/terrain/19/858578/353918.terrain differ diff --git a/public/terrain/19/858578/353919.terrain b/public/terrain/19/858578/353919.terrain new file mode 100644 index 000000000..e2c42f3f0 Binary files /dev/null and b/public/terrain/19/858578/353919.terrain differ diff --git a/public/terrain/19/858578/353920.terrain b/public/terrain/19/858578/353920.terrain new file mode 100644 index 000000000..8dcc83e08 Binary files /dev/null and b/public/terrain/19/858578/353920.terrain differ diff --git a/public/terrain/19/858578/353921.terrain b/public/terrain/19/858578/353921.terrain new file mode 100644 index 000000000..21e87b7e6 Binary files /dev/null and b/public/terrain/19/858578/353921.terrain differ diff --git a/public/terrain/19/858578/353922.terrain b/public/terrain/19/858578/353922.terrain new file mode 100644 index 000000000..797bd8baa Binary files /dev/null and b/public/terrain/19/858578/353922.terrain differ diff --git a/public/terrain/19/858578/353923.terrain b/public/terrain/19/858578/353923.terrain new file mode 100644 index 000000000..c1471747c Binary files /dev/null and b/public/terrain/19/858578/353923.terrain differ diff --git a/public/terrain/19/858578/353924.terrain b/public/terrain/19/858578/353924.terrain new file mode 100644 index 000000000..ca239310b Binary files /dev/null and b/public/terrain/19/858578/353924.terrain differ diff --git a/public/terrain/19/858578/353925.terrain b/public/terrain/19/858578/353925.terrain new file mode 100644 index 000000000..f4e3acf32 Binary files /dev/null and b/public/terrain/19/858578/353925.terrain differ diff --git a/public/terrain/19/858578/353926.terrain b/public/terrain/19/858578/353926.terrain new file mode 100644 index 000000000..cafec9815 Binary files /dev/null and b/public/terrain/19/858578/353926.terrain differ diff --git a/public/terrain/19/858578/353927.terrain b/public/terrain/19/858578/353927.terrain new file mode 100644 index 000000000..4357cdb1e Binary files /dev/null and b/public/terrain/19/858578/353927.terrain differ diff --git a/public/terrain/19/858578/353928.terrain b/public/terrain/19/858578/353928.terrain new file mode 100644 index 000000000..0c453ff6f Binary files /dev/null and b/public/terrain/19/858578/353928.terrain differ diff --git a/public/terrain/19/858578/353929.terrain b/public/terrain/19/858578/353929.terrain new file mode 100644 index 000000000..02e76a208 Binary files /dev/null and b/public/terrain/19/858578/353929.terrain differ diff --git a/public/terrain/19/858578/353930.terrain b/public/terrain/19/858578/353930.terrain new file mode 100644 index 000000000..cd9793d9a Binary files /dev/null and b/public/terrain/19/858578/353930.terrain differ diff --git a/public/terrain/19/858578/353931.terrain b/public/terrain/19/858578/353931.terrain new file mode 100644 index 000000000..eefcce351 Binary files /dev/null and b/public/terrain/19/858578/353931.terrain differ diff --git a/public/terrain/19/858578/353932.terrain b/public/terrain/19/858578/353932.terrain new file mode 100644 index 000000000..5b2e11609 Binary files /dev/null and b/public/terrain/19/858578/353932.terrain differ diff --git a/public/terrain/19/858578/353933.terrain b/public/terrain/19/858578/353933.terrain new file mode 100644 index 000000000..2ab1732ff Binary files /dev/null and b/public/terrain/19/858578/353933.terrain differ diff --git a/public/terrain/19/858578/353934.terrain b/public/terrain/19/858578/353934.terrain new file mode 100644 index 000000000..229a854a1 Binary files /dev/null and b/public/terrain/19/858578/353934.terrain differ diff --git a/public/terrain/19/858578/353935.terrain b/public/terrain/19/858578/353935.terrain new file mode 100644 index 000000000..ae7897fe3 Binary files /dev/null and b/public/terrain/19/858578/353935.terrain differ diff --git a/public/terrain/19/858578/353936.terrain b/public/terrain/19/858578/353936.terrain new file mode 100644 index 000000000..450673bf6 Binary files /dev/null and b/public/terrain/19/858578/353936.terrain differ diff --git a/public/terrain/19/858578/353937.terrain b/public/terrain/19/858578/353937.terrain new file mode 100644 index 000000000..c76a11b5e Binary files /dev/null and b/public/terrain/19/858578/353937.terrain differ diff --git a/public/terrain/19/858578/353938.terrain b/public/terrain/19/858578/353938.terrain new file mode 100644 index 000000000..49a3935d9 Binary files /dev/null and b/public/terrain/19/858578/353938.terrain differ diff --git a/public/terrain/19/858578/353939.terrain b/public/terrain/19/858578/353939.terrain new file mode 100644 index 000000000..8f80fb7a3 Binary files /dev/null and b/public/terrain/19/858578/353939.terrain differ diff --git a/public/terrain/19/858578/353940.terrain b/public/terrain/19/858578/353940.terrain new file mode 100644 index 000000000..5cd7a1c34 Binary files /dev/null and b/public/terrain/19/858578/353940.terrain differ diff --git a/public/terrain/19/858578/353941.terrain b/public/terrain/19/858578/353941.terrain new file mode 100644 index 000000000..5451ba8f4 Binary files /dev/null and b/public/terrain/19/858578/353941.terrain differ diff --git a/public/terrain/19/858578/353942.terrain b/public/terrain/19/858578/353942.terrain new file mode 100644 index 000000000..a9876ab54 Binary files /dev/null and b/public/terrain/19/858578/353942.terrain differ diff --git a/public/terrain/19/858578/353943.terrain b/public/terrain/19/858578/353943.terrain new file mode 100644 index 000000000..c828e3e8d Binary files /dev/null and b/public/terrain/19/858578/353943.terrain differ diff --git a/public/terrain/19/858578/353944.terrain b/public/terrain/19/858578/353944.terrain new file mode 100644 index 000000000..28f0ecf2f Binary files /dev/null and b/public/terrain/19/858578/353944.terrain differ diff --git a/public/terrain/19/858578/353945.terrain b/public/terrain/19/858578/353945.terrain new file mode 100644 index 000000000..c7a50e898 Binary files /dev/null and b/public/terrain/19/858578/353945.terrain differ diff --git a/public/terrain/19/858578/353946.terrain b/public/terrain/19/858578/353946.terrain new file mode 100644 index 000000000..51ac46797 Binary files /dev/null and b/public/terrain/19/858578/353946.terrain differ diff --git a/public/terrain/19/858578/353947.terrain b/public/terrain/19/858578/353947.terrain new file mode 100644 index 000000000..68a35ffca Binary files /dev/null and b/public/terrain/19/858578/353947.terrain differ diff --git a/public/terrain/19/858578/353948.terrain b/public/terrain/19/858578/353948.terrain new file mode 100644 index 000000000..a44804d4d Binary files /dev/null and b/public/terrain/19/858578/353948.terrain differ diff --git a/public/terrain/19/858578/353949.terrain b/public/terrain/19/858578/353949.terrain new file mode 100644 index 000000000..292775321 Binary files /dev/null and b/public/terrain/19/858578/353949.terrain differ diff --git a/public/terrain/19/858578/353950.terrain b/public/terrain/19/858578/353950.terrain new file mode 100644 index 000000000..80814d18c Binary files /dev/null and b/public/terrain/19/858578/353950.terrain differ diff --git a/public/terrain/19/858578/353951.terrain b/public/terrain/19/858578/353951.terrain new file mode 100644 index 000000000..573e4d1d5 Binary files /dev/null and b/public/terrain/19/858578/353951.terrain differ diff --git a/public/terrain/19/858578/353952.terrain b/public/terrain/19/858578/353952.terrain new file mode 100644 index 000000000..ece8099d1 Binary files /dev/null and b/public/terrain/19/858578/353952.terrain differ diff --git a/public/terrain/19/858578/353953.terrain b/public/terrain/19/858578/353953.terrain new file mode 100644 index 000000000..7b81fc762 Binary files /dev/null and b/public/terrain/19/858578/353953.terrain differ diff --git a/public/terrain/19/858578/353954.terrain b/public/terrain/19/858578/353954.terrain new file mode 100644 index 000000000..3aba4aec9 Binary files /dev/null and b/public/terrain/19/858578/353954.terrain differ diff --git a/public/terrain/19/858578/353955.terrain b/public/terrain/19/858578/353955.terrain new file mode 100644 index 000000000..9fbbeb281 Binary files /dev/null and b/public/terrain/19/858578/353955.terrain differ diff --git a/public/terrain/19/858578/353956.terrain b/public/terrain/19/858578/353956.terrain new file mode 100644 index 000000000..787c0fc10 Binary files /dev/null and b/public/terrain/19/858578/353956.terrain differ diff --git a/public/terrain/19/858578/353957.terrain b/public/terrain/19/858578/353957.terrain new file mode 100644 index 000000000..deccf3177 Binary files /dev/null and b/public/terrain/19/858578/353957.terrain differ diff --git a/public/terrain/19/858578/353958.terrain b/public/terrain/19/858578/353958.terrain new file mode 100644 index 000000000..5df2f9960 Binary files /dev/null and b/public/terrain/19/858578/353958.terrain differ diff --git a/public/terrain/19/858578/353959.terrain b/public/terrain/19/858578/353959.terrain new file mode 100644 index 000000000..8aa6b2770 Binary files /dev/null and b/public/terrain/19/858578/353959.terrain differ diff --git a/public/terrain/19/858578/353960.terrain b/public/terrain/19/858578/353960.terrain new file mode 100644 index 000000000..11a00e61b Binary files /dev/null and b/public/terrain/19/858578/353960.terrain differ diff --git a/public/terrain/19/858578/353961.terrain b/public/terrain/19/858578/353961.terrain new file mode 100644 index 000000000..8138b4a7c Binary files /dev/null and b/public/terrain/19/858578/353961.terrain differ diff --git a/public/terrain/19/858578/353962.terrain b/public/terrain/19/858578/353962.terrain new file mode 100644 index 000000000..100692d1b Binary files /dev/null and b/public/terrain/19/858578/353962.terrain differ diff --git a/public/terrain/19/858578/353963.terrain b/public/terrain/19/858578/353963.terrain new file mode 100644 index 000000000..4d49e6420 Binary files /dev/null and b/public/terrain/19/858578/353963.terrain differ diff --git a/public/terrain/19/858578/353964.terrain b/public/terrain/19/858578/353964.terrain new file mode 100644 index 000000000..6f963c480 Binary files /dev/null and b/public/terrain/19/858578/353964.terrain differ diff --git a/public/terrain/19/858578/353965.terrain b/public/terrain/19/858578/353965.terrain new file mode 100644 index 000000000..91bcfbaa3 Binary files /dev/null and b/public/terrain/19/858578/353965.terrain differ diff --git a/public/terrain/19/858578/353966.terrain b/public/terrain/19/858578/353966.terrain new file mode 100644 index 000000000..42aa15aaf Binary files /dev/null and b/public/terrain/19/858578/353966.terrain differ diff --git a/public/terrain/19/858578/353967.terrain b/public/terrain/19/858578/353967.terrain new file mode 100644 index 000000000..4cb8037ab Binary files /dev/null and b/public/terrain/19/858578/353967.terrain differ diff --git a/public/terrain/19/858578/353968.terrain b/public/terrain/19/858578/353968.terrain new file mode 100644 index 000000000..18dc011ee Binary files /dev/null and b/public/terrain/19/858578/353968.terrain differ diff --git a/public/terrain/19/858578/353969.terrain b/public/terrain/19/858578/353969.terrain new file mode 100644 index 000000000..bcac7fe51 Binary files /dev/null and b/public/terrain/19/858578/353969.terrain differ diff --git a/public/terrain/19/858578/353970.terrain b/public/terrain/19/858578/353970.terrain new file mode 100644 index 000000000..17efa32d4 Binary files /dev/null and b/public/terrain/19/858578/353970.terrain differ diff --git a/public/terrain/19/858578/353971.terrain b/public/terrain/19/858578/353971.terrain new file mode 100644 index 000000000..87ed03264 Binary files /dev/null and b/public/terrain/19/858578/353971.terrain differ diff --git a/public/terrain/19/858578/353972.terrain b/public/terrain/19/858578/353972.terrain new file mode 100644 index 000000000..4e1ea5f0d Binary files /dev/null and b/public/terrain/19/858578/353972.terrain differ diff --git a/public/terrain/19/858578/353973.terrain b/public/terrain/19/858578/353973.terrain new file mode 100644 index 000000000..ee50d613d Binary files /dev/null and b/public/terrain/19/858578/353973.terrain differ diff --git a/public/terrain/19/858578/353974.terrain b/public/terrain/19/858578/353974.terrain new file mode 100644 index 000000000..62dfd7509 Binary files /dev/null and b/public/terrain/19/858578/353974.terrain differ diff --git a/public/terrain/19/858578/353975.terrain b/public/terrain/19/858578/353975.terrain new file mode 100644 index 000000000..6cd729403 Binary files /dev/null and b/public/terrain/19/858578/353975.terrain differ diff --git a/public/terrain/19/858578/353976.terrain b/public/terrain/19/858578/353976.terrain new file mode 100644 index 000000000..7e83db1d2 Binary files /dev/null and b/public/terrain/19/858578/353976.terrain differ diff --git a/public/terrain/19/858578/353977.terrain b/public/terrain/19/858578/353977.terrain new file mode 100644 index 000000000..86b31f119 Binary files /dev/null and b/public/terrain/19/858578/353977.terrain differ diff --git a/public/terrain/19/858578/353978.terrain b/public/terrain/19/858578/353978.terrain new file mode 100644 index 000000000..75a798f2a Binary files /dev/null and b/public/terrain/19/858578/353978.terrain differ diff --git a/public/terrain/19/858578/353979.terrain b/public/terrain/19/858578/353979.terrain new file mode 100644 index 000000000..c7822cbaa Binary files /dev/null and b/public/terrain/19/858578/353979.terrain differ diff --git a/public/terrain/19/858578/353980.terrain b/public/terrain/19/858578/353980.terrain new file mode 100644 index 000000000..12a800015 Binary files /dev/null and b/public/terrain/19/858578/353980.terrain differ diff --git a/public/terrain/19/858578/353981.terrain b/public/terrain/19/858578/353981.terrain new file mode 100644 index 000000000..48bfb1d58 Binary files /dev/null and b/public/terrain/19/858578/353981.terrain differ diff --git a/public/terrain/19/858578/353982.terrain b/public/terrain/19/858578/353982.terrain new file mode 100644 index 000000000..f6c85325e Binary files /dev/null and b/public/terrain/19/858578/353982.terrain differ diff --git a/public/terrain/19/858578/353983.terrain b/public/terrain/19/858578/353983.terrain new file mode 100644 index 000000000..1a1e9d182 Binary files /dev/null and b/public/terrain/19/858578/353983.terrain differ diff --git a/public/terrain/19/858578/353984.terrain b/public/terrain/19/858578/353984.terrain new file mode 100644 index 000000000..54236879d Binary files /dev/null and b/public/terrain/19/858578/353984.terrain differ diff --git a/public/terrain/19/858578/353985.terrain b/public/terrain/19/858578/353985.terrain new file mode 100644 index 000000000..5b9b56322 Binary files /dev/null and b/public/terrain/19/858578/353985.terrain differ diff --git a/public/terrain/19/858578/353986.terrain b/public/terrain/19/858578/353986.terrain new file mode 100644 index 000000000..44ce9f368 Binary files /dev/null and b/public/terrain/19/858578/353986.terrain differ diff --git a/public/terrain/19/858578/353987.terrain b/public/terrain/19/858578/353987.terrain new file mode 100644 index 000000000..3591e1c6f Binary files /dev/null and b/public/terrain/19/858578/353987.terrain differ diff --git a/public/terrain/19/858578/353988.terrain b/public/terrain/19/858578/353988.terrain new file mode 100644 index 000000000..652b0a7b2 Binary files /dev/null and b/public/terrain/19/858578/353988.terrain differ diff --git a/public/terrain/19/858578/353989.terrain b/public/terrain/19/858578/353989.terrain new file mode 100644 index 000000000..82a37fcd6 Binary files /dev/null and b/public/terrain/19/858578/353989.terrain differ diff --git a/public/terrain/19/858578/353990.terrain b/public/terrain/19/858578/353990.terrain new file mode 100644 index 000000000..92a7fa5ab Binary files /dev/null and b/public/terrain/19/858578/353990.terrain differ diff --git a/public/terrain/19/858578/353991.terrain b/public/terrain/19/858578/353991.terrain new file mode 100644 index 000000000..7fadacd91 Binary files /dev/null and b/public/terrain/19/858578/353991.terrain differ diff --git a/public/terrain/19/858578/353992.terrain b/public/terrain/19/858578/353992.terrain new file mode 100644 index 000000000..4be48565f Binary files /dev/null and b/public/terrain/19/858578/353992.terrain differ diff --git a/public/terrain/19/858578/353993.terrain b/public/terrain/19/858578/353993.terrain new file mode 100644 index 000000000..a9d825c25 Binary files /dev/null and b/public/terrain/19/858578/353993.terrain differ diff --git a/public/terrain/19/858578/353994.terrain b/public/terrain/19/858578/353994.terrain new file mode 100644 index 000000000..39dacacc2 Binary files /dev/null and b/public/terrain/19/858578/353994.terrain differ diff --git a/public/terrain/19/858578/353995.terrain b/public/terrain/19/858578/353995.terrain new file mode 100644 index 000000000..1c1e3463e Binary files /dev/null and b/public/terrain/19/858578/353995.terrain differ diff --git a/public/terrain/19/858578/353996.terrain b/public/terrain/19/858578/353996.terrain new file mode 100644 index 000000000..a4c6847c7 Binary files /dev/null and b/public/terrain/19/858578/353996.terrain differ diff --git a/public/terrain/19/858578/353997.terrain b/public/terrain/19/858578/353997.terrain new file mode 100644 index 000000000..d88817e74 Binary files /dev/null and b/public/terrain/19/858578/353997.terrain differ diff --git a/public/terrain/19/858578/353998.terrain b/public/terrain/19/858578/353998.terrain new file mode 100644 index 000000000..815c0cd99 Binary files /dev/null and b/public/terrain/19/858578/353998.terrain differ diff --git a/public/terrain/19/858578/353999.terrain b/public/terrain/19/858578/353999.terrain new file mode 100644 index 000000000..3a1364759 Binary files /dev/null and b/public/terrain/19/858578/353999.terrain differ diff --git a/public/terrain/19/858578/354000.terrain b/public/terrain/19/858578/354000.terrain new file mode 100644 index 000000000..8daa28559 Binary files /dev/null and b/public/terrain/19/858578/354000.terrain differ diff --git a/public/terrain/19/858578/354001.terrain b/public/terrain/19/858578/354001.terrain new file mode 100644 index 000000000..f1497bca6 Binary files /dev/null and b/public/terrain/19/858578/354001.terrain differ diff --git a/public/terrain/19/858578/354002.terrain b/public/terrain/19/858578/354002.terrain new file mode 100644 index 000000000..5bb18ee0d Binary files /dev/null and b/public/terrain/19/858578/354002.terrain differ diff --git a/public/terrain/19/858578/354003.terrain b/public/terrain/19/858578/354003.terrain new file mode 100644 index 000000000..8983e472d Binary files /dev/null and b/public/terrain/19/858578/354003.terrain differ diff --git a/public/terrain/19/858578/354004.terrain b/public/terrain/19/858578/354004.terrain new file mode 100644 index 000000000..de64e66bf Binary files /dev/null and b/public/terrain/19/858578/354004.terrain differ diff --git a/public/terrain/19/858578/354005.terrain b/public/terrain/19/858578/354005.terrain new file mode 100644 index 000000000..45c6d0d39 Binary files /dev/null and b/public/terrain/19/858578/354005.terrain differ diff --git a/public/terrain/19/858578/354006.terrain b/public/terrain/19/858578/354006.terrain new file mode 100644 index 000000000..4d0538fa2 Binary files /dev/null and b/public/terrain/19/858578/354006.terrain differ diff --git a/public/terrain/19/858578/354007.terrain b/public/terrain/19/858578/354007.terrain new file mode 100644 index 000000000..3ab94b7ab Binary files /dev/null and b/public/terrain/19/858578/354007.terrain differ diff --git a/public/terrain/19/858578/354008.terrain b/public/terrain/19/858578/354008.terrain new file mode 100644 index 000000000..e548f3df2 Binary files /dev/null and b/public/terrain/19/858578/354008.terrain differ diff --git a/public/terrain/19/858578/354009.terrain b/public/terrain/19/858578/354009.terrain new file mode 100644 index 000000000..8753534a7 Binary files /dev/null and b/public/terrain/19/858578/354009.terrain differ diff --git a/public/terrain/19/858578/354010.terrain b/public/terrain/19/858578/354010.terrain new file mode 100644 index 000000000..d4b699e50 Binary files /dev/null and b/public/terrain/19/858578/354010.terrain differ diff --git a/public/terrain/19/858578/354011.terrain b/public/terrain/19/858578/354011.terrain new file mode 100644 index 000000000..33dbd1d84 Binary files /dev/null and b/public/terrain/19/858578/354011.terrain differ diff --git a/public/terrain/19/858578/354012.terrain b/public/terrain/19/858578/354012.terrain new file mode 100644 index 000000000..f4445b926 Binary files /dev/null and b/public/terrain/19/858578/354012.terrain differ diff --git a/public/terrain/19/858578/354013.terrain b/public/terrain/19/858578/354013.terrain new file mode 100644 index 000000000..e133af637 Binary files /dev/null and b/public/terrain/19/858578/354013.terrain differ diff --git a/public/terrain/19/858578/354014.terrain b/public/terrain/19/858578/354014.terrain new file mode 100644 index 000000000..f128ebba4 Binary files /dev/null and b/public/terrain/19/858578/354014.terrain differ diff --git a/public/terrain/19/858578/354015.terrain b/public/terrain/19/858578/354015.terrain new file mode 100644 index 000000000..a4af27b94 Binary files /dev/null and b/public/terrain/19/858578/354015.terrain differ diff --git a/public/terrain/19/858578/354016.terrain b/public/terrain/19/858578/354016.terrain new file mode 100644 index 000000000..e27c2d008 Binary files /dev/null and b/public/terrain/19/858578/354016.terrain differ diff --git a/public/terrain/19/858578/354017.terrain b/public/terrain/19/858578/354017.terrain new file mode 100644 index 000000000..c6b016116 Binary files /dev/null and b/public/terrain/19/858578/354017.terrain differ diff --git a/public/terrain/19/858578/354018.terrain b/public/terrain/19/858578/354018.terrain new file mode 100644 index 000000000..583d118df Binary files /dev/null and b/public/terrain/19/858578/354018.terrain differ diff --git a/public/terrain/19/858578/354019.terrain b/public/terrain/19/858578/354019.terrain new file mode 100644 index 000000000..3aa423c0d Binary files /dev/null and b/public/terrain/19/858578/354019.terrain differ diff --git a/public/terrain/19/858578/354020.terrain b/public/terrain/19/858578/354020.terrain new file mode 100644 index 000000000..bef2ed9fe Binary files /dev/null and b/public/terrain/19/858578/354020.terrain differ diff --git a/public/terrain/19/858578/354021.terrain b/public/terrain/19/858578/354021.terrain new file mode 100644 index 000000000..5edd747b8 Binary files /dev/null and b/public/terrain/19/858578/354021.terrain differ diff --git a/public/terrain/19/858578/354022.terrain b/public/terrain/19/858578/354022.terrain new file mode 100644 index 000000000..4733ce48b Binary files /dev/null and b/public/terrain/19/858578/354022.terrain differ diff --git a/public/terrain/19/858578/354023.terrain b/public/terrain/19/858578/354023.terrain new file mode 100644 index 000000000..b869c7cac Binary files /dev/null and b/public/terrain/19/858578/354023.terrain differ diff --git a/public/terrain/19/858578/354024.terrain b/public/terrain/19/858578/354024.terrain new file mode 100644 index 000000000..64fef50ef Binary files /dev/null and b/public/terrain/19/858578/354024.terrain differ diff --git a/public/terrain/19/858578/354025.terrain b/public/terrain/19/858578/354025.terrain new file mode 100644 index 000000000..4ca735792 Binary files /dev/null and b/public/terrain/19/858578/354025.terrain differ diff --git a/public/terrain/19/858578/354026.terrain b/public/terrain/19/858578/354026.terrain new file mode 100644 index 000000000..2a1ccfaad Binary files /dev/null and b/public/terrain/19/858578/354026.terrain differ diff --git a/public/terrain/19/858578/354027.terrain b/public/terrain/19/858578/354027.terrain new file mode 100644 index 000000000..3e400cf8b Binary files /dev/null and b/public/terrain/19/858578/354027.terrain differ diff --git a/public/terrain/19/858578/354028.terrain b/public/terrain/19/858578/354028.terrain new file mode 100644 index 000000000..c2fe50599 Binary files /dev/null and b/public/terrain/19/858578/354028.terrain differ diff --git a/public/terrain/19/858578/354029.terrain b/public/terrain/19/858578/354029.terrain new file mode 100644 index 000000000..dab091ecd Binary files /dev/null and b/public/terrain/19/858578/354029.terrain differ diff --git a/public/terrain/19/858578/354030.terrain b/public/terrain/19/858578/354030.terrain new file mode 100644 index 000000000..b83c2a5ac Binary files /dev/null and b/public/terrain/19/858578/354030.terrain differ diff --git a/public/terrain/19/858578/354031.terrain b/public/terrain/19/858578/354031.terrain new file mode 100644 index 000000000..e85ac0ed8 Binary files /dev/null and b/public/terrain/19/858578/354031.terrain differ diff --git a/public/terrain/19/858578/354032.terrain b/public/terrain/19/858578/354032.terrain new file mode 100644 index 000000000..e40f71b01 Binary files /dev/null and b/public/terrain/19/858578/354032.terrain differ diff --git a/public/terrain/19/858578/354033.terrain b/public/terrain/19/858578/354033.terrain new file mode 100644 index 000000000..ec8b89fff Binary files /dev/null and b/public/terrain/19/858578/354033.terrain differ diff --git a/public/terrain/19/858578/354034.terrain b/public/terrain/19/858578/354034.terrain new file mode 100644 index 000000000..1acf3d438 Binary files /dev/null and b/public/terrain/19/858578/354034.terrain differ diff --git a/public/terrain/19/858578/354035.terrain b/public/terrain/19/858578/354035.terrain new file mode 100644 index 000000000..5143b86fd Binary files /dev/null and b/public/terrain/19/858578/354035.terrain differ diff --git a/public/terrain/19/858578/354036.terrain b/public/terrain/19/858578/354036.terrain new file mode 100644 index 000000000..fa39260a5 Binary files /dev/null and b/public/terrain/19/858578/354036.terrain differ diff --git a/public/terrain/19/858578/354037.terrain b/public/terrain/19/858578/354037.terrain new file mode 100644 index 000000000..58cd172f6 Binary files /dev/null and b/public/terrain/19/858578/354037.terrain differ diff --git a/public/terrain/19/858578/354038.terrain b/public/terrain/19/858578/354038.terrain new file mode 100644 index 000000000..b842304e9 Binary files /dev/null and b/public/terrain/19/858578/354038.terrain differ diff --git a/public/terrain/19/858578/354039.terrain b/public/terrain/19/858578/354039.terrain new file mode 100644 index 000000000..e1c428048 Binary files /dev/null and b/public/terrain/19/858578/354039.terrain differ diff --git a/public/terrain/19/858578/354040.terrain b/public/terrain/19/858578/354040.terrain new file mode 100644 index 000000000..9b1a5de80 Binary files /dev/null and b/public/terrain/19/858578/354040.terrain differ diff --git a/public/terrain/19/858578/354041.terrain b/public/terrain/19/858578/354041.terrain new file mode 100644 index 000000000..37a208b8d Binary files /dev/null and b/public/terrain/19/858578/354041.terrain differ diff --git a/public/terrain/19/858578/354042.terrain b/public/terrain/19/858578/354042.terrain new file mode 100644 index 000000000..6ea43c1a5 Binary files /dev/null and b/public/terrain/19/858578/354042.terrain differ diff --git a/public/terrain/19/858578/354043.terrain b/public/terrain/19/858578/354043.terrain new file mode 100644 index 000000000..eab0a02c2 Binary files /dev/null and b/public/terrain/19/858578/354043.terrain differ diff --git a/public/terrain/19/858578/354044.terrain b/public/terrain/19/858578/354044.terrain new file mode 100644 index 000000000..cc508a8dd Binary files /dev/null and b/public/terrain/19/858578/354044.terrain differ diff --git a/public/terrain/19/858578/354045.terrain b/public/terrain/19/858578/354045.terrain new file mode 100644 index 000000000..05007b353 Binary files /dev/null and b/public/terrain/19/858578/354045.terrain differ diff --git a/public/terrain/19/858578/354046.terrain b/public/terrain/19/858578/354046.terrain new file mode 100644 index 000000000..5416e5467 Binary files /dev/null and b/public/terrain/19/858578/354046.terrain differ diff --git a/public/terrain/19/858578/354047.terrain b/public/terrain/19/858578/354047.terrain new file mode 100644 index 000000000..0d0b59760 Binary files /dev/null and b/public/terrain/19/858578/354047.terrain differ diff --git a/public/terrain/19/858578/354048.terrain b/public/terrain/19/858578/354048.terrain new file mode 100644 index 000000000..5aa267f04 Binary files /dev/null and b/public/terrain/19/858578/354048.terrain differ diff --git a/public/terrain/19/858578/354049.terrain b/public/terrain/19/858578/354049.terrain new file mode 100644 index 000000000..a3c5da9b0 Binary files /dev/null and b/public/terrain/19/858578/354049.terrain differ diff --git a/public/terrain/19/858578/354050.terrain b/public/terrain/19/858578/354050.terrain new file mode 100644 index 000000000..31c394682 Binary files /dev/null and b/public/terrain/19/858578/354050.terrain differ diff --git a/public/terrain/19/858578/354051.terrain b/public/terrain/19/858578/354051.terrain new file mode 100644 index 000000000..c89de8a89 Binary files /dev/null and b/public/terrain/19/858578/354051.terrain differ diff --git a/public/terrain/19/858578/354052.terrain b/public/terrain/19/858578/354052.terrain new file mode 100644 index 000000000..8e1e611c4 Binary files /dev/null and b/public/terrain/19/858578/354052.terrain differ diff --git a/public/terrain/19/858578/354053.terrain b/public/terrain/19/858578/354053.terrain new file mode 100644 index 000000000..611e666cd Binary files /dev/null and b/public/terrain/19/858578/354053.terrain differ diff --git a/public/terrain/19/858578/354054.terrain b/public/terrain/19/858578/354054.terrain new file mode 100644 index 000000000..58f8c2e3e Binary files /dev/null and b/public/terrain/19/858578/354054.terrain differ diff --git a/public/terrain/19/858578/354055.terrain b/public/terrain/19/858578/354055.terrain new file mode 100644 index 000000000..4f12649df Binary files /dev/null and b/public/terrain/19/858578/354055.terrain differ diff --git a/public/terrain/19/858578/354056.terrain b/public/terrain/19/858578/354056.terrain new file mode 100644 index 000000000..563f3c8f1 Binary files /dev/null and b/public/terrain/19/858578/354056.terrain differ diff --git a/public/terrain/19/858578/354057.terrain b/public/terrain/19/858578/354057.terrain new file mode 100644 index 000000000..72b3a246a Binary files /dev/null and b/public/terrain/19/858578/354057.terrain differ diff --git a/public/terrain/19/858578/354058.terrain b/public/terrain/19/858578/354058.terrain new file mode 100644 index 000000000..c8dfc68ea Binary files /dev/null and b/public/terrain/19/858578/354058.terrain differ diff --git a/public/terrain/19/858578/354059.terrain b/public/terrain/19/858578/354059.terrain new file mode 100644 index 000000000..76711c187 Binary files /dev/null and b/public/terrain/19/858578/354059.terrain differ diff --git a/public/terrain/19/858579/353743.terrain b/public/terrain/19/858579/353743.terrain new file mode 100644 index 000000000..77b0629e3 Binary files /dev/null and b/public/terrain/19/858579/353743.terrain differ diff --git a/public/terrain/19/858579/353744.terrain b/public/terrain/19/858579/353744.terrain new file mode 100644 index 000000000..73c36a1f5 Binary files /dev/null and b/public/terrain/19/858579/353744.terrain differ diff --git a/public/terrain/19/858579/353745.terrain b/public/terrain/19/858579/353745.terrain new file mode 100644 index 000000000..a32e476c6 Binary files /dev/null and b/public/terrain/19/858579/353745.terrain differ diff --git a/public/terrain/19/858579/353746.terrain b/public/terrain/19/858579/353746.terrain new file mode 100644 index 000000000..6eeda15c0 Binary files /dev/null and b/public/terrain/19/858579/353746.terrain differ diff --git a/public/terrain/19/858579/353747.terrain b/public/terrain/19/858579/353747.terrain new file mode 100644 index 000000000..c0ae4c561 Binary files /dev/null and b/public/terrain/19/858579/353747.terrain differ diff --git a/public/terrain/19/858579/353748.terrain b/public/terrain/19/858579/353748.terrain new file mode 100644 index 000000000..a71f3266b Binary files /dev/null and b/public/terrain/19/858579/353748.terrain differ diff --git a/public/terrain/19/858579/353749.terrain b/public/terrain/19/858579/353749.terrain new file mode 100644 index 000000000..a1b658859 Binary files /dev/null and b/public/terrain/19/858579/353749.terrain differ diff --git a/public/terrain/19/858579/353750.terrain b/public/terrain/19/858579/353750.terrain new file mode 100644 index 000000000..517d30de4 Binary files /dev/null and b/public/terrain/19/858579/353750.terrain differ diff --git a/public/terrain/19/858579/353751.terrain b/public/terrain/19/858579/353751.terrain new file mode 100644 index 000000000..f07c9d70e Binary files /dev/null and b/public/terrain/19/858579/353751.terrain differ diff --git a/public/terrain/19/858579/353752.terrain b/public/terrain/19/858579/353752.terrain new file mode 100644 index 000000000..f41cbee07 Binary files /dev/null and b/public/terrain/19/858579/353752.terrain differ diff --git a/public/terrain/19/858579/353753.terrain b/public/terrain/19/858579/353753.terrain new file mode 100644 index 000000000..c42ca3616 Binary files /dev/null and b/public/terrain/19/858579/353753.terrain differ diff --git a/public/terrain/19/858579/353754.terrain b/public/terrain/19/858579/353754.terrain new file mode 100644 index 000000000..ff4bee748 Binary files /dev/null and b/public/terrain/19/858579/353754.terrain differ diff --git a/public/terrain/19/858579/353755.terrain b/public/terrain/19/858579/353755.terrain new file mode 100644 index 000000000..780838130 Binary files /dev/null and b/public/terrain/19/858579/353755.terrain differ diff --git a/public/terrain/19/858579/353756.terrain b/public/terrain/19/858579/353756.terrain new file mode 100644 index 000000000..d6ce2f122 Binary files /dev/null and b/public/terrain/19/858579/353756.terrain differ diff --git a/public/terrain/19/858579/353757.terrain b/public/terrain/19/858579/353757.terrain new file mode 100644 index 000000000..164a958a9 Binary files /dev/null and b/public/terrain/19/858579/353757.terrain differ diff --git a/public/terrain/19/858579/353758.terrain b/public/terrain/19/858579/353758.terrain new file mode 100644 index 000000000..90943ac35 Binary files /dev/null and b/public/terrain/19/858579/353758.terrain differ diff --git a/public/terrain/19/858579/353759.terrain b/public/terrain/19/858579/353759.terrain new file mode 100644 index 000000000..94dc6d26f Binary files /dev/null and b/public/terrain/19/858579/353759.terrain differ diff --git a/public/terrain/19/858579/353760.terrain b/public/terrain/19/858579/353760.terrain new file mode 100644 index 000000000..a1219026e Binary files /dev/null and b/public/terrain/19/858579/353760.terrain differ diff --git a/public/terrain/19/858579/353761.terrain b/public/terrain/19/858579/353761.terrain new file mode 100644 index 000000000..01b35332b Binary files /dev/null and b/public/terrain/19/858579/353761.terrain differ diff --git a/public/terrain/19/858579/353762.terrain b/public/terrain/19/858579/353762.terrain new file mode 100644 index 000000000..a24b657e0 Binary files /dev/null and b/public/terrain/19/858579/353762.terrain differ diff --git a/public/terrain/19/858579/353763.terrain b/public/terrain/19/858579/353763.terrain new file mode 100644 index 000000000..430f4e47a Binary files /dev/null and b/public/terrain/19/858579/353763.terrain differ diff --git a/public/terrain/19/858579/353764.terrain b/public/terrain/19/858579/353764.terrain new file mode 100644 index 000000000..2ab606094 Binary files /dev/null and b/public/terrain/19/858579/353764.terrain differ diff --git a/public/terrain/19/858579/353765.terrain b/public/terrain/19/858579/353765.terrain new file mode 100644 index 000000000..ceda09b71 Binary files /dev/null and b/public/terrain/19/858579/353765.terrain differ diff --git a/public/terrain/19/858579/353766.terrain b/public/terrain/19/858579/353766.terrain new file mode 100644 index 000000000..4ad05a97b Binary files /dev/null and b/public/terrain/19/858579/353766.terrain differ diff --git a/public/terrain/19/858579/353767.terrain b/public/terrain/19/858579/353767.terrain new file mode 100644 index 000000000..9be6af527 Binary files /dev/null and b/public/terrain/19/858579/353767.terrain differ diff --git a/public/terrain/19/858579/353768.terrain b/public/terrain/19/858579/353768.terrain new file mode 100644 index 000000000..a7af193e7 Binary files /dev/null and b/public/terrain/19/858579/353768.terrain differ diff --git a/public/terrain/19/858579/353769.terrain b/public/terrain/19/858579/353769.terrain new file mode 100644 index 000000000..166754d7f Binary files /dev/null and b/public/terrain/19/858579/353769.terrain differ diff --git a/public/terrain/19/858579/353770.terrain b/public/terrain/19/858579/353770.terrain new file mode 100644 index 000000000..0ec432aed Binary files /dev/null and b/public/terrain/19/858579/353770.terrain differ diff --git a/public/terrain/19/858579/353771.terrain b/public/terrain/19/858579/353771.terrain new file mode 100644 index 000000000..d9586c056 Binary files /dev/null and b/public/terrain/19/858579/353771.terrain differ diff --git a/public/terrain/19/858579/353772.terrain b/public/terrain/19/858579/353772.terrain new file mode 100644 index 000000000..2da956e0f Binary files /dev/null and b/public/terrain/19/858579/353772.terrain differ diff --git a/public/terrain/19/858579/353773.terrain b/public/terrain/19/858579/353773.terrain new file mode 100644 index 000000000..9a96c28de Binary files /dev/null and b/public/terrain/19/858579/353773.terrain differ diff --git a/public/terrain/19/858579/353774.terrain b/public/terrain/19/858579/353774.terrain new file mode 100644 index 000000000..602ba2c35 Binary files /dev/null and b/public/terrain/19/858579/353774.terrain differ diff --git a/public/terrain/19/858579/353775.terrain b/public/terrain/19/858579/353775.terrain new file mode 100644 index 000000000..28ef68175 Binary files /dev/null and b/public/terrain/19/858579/353775.terrain differ diff --git a/public/terrain/19/858579/353776.terrain b/public/terrain/19/858579/353776.terrain new file mode 100644 index 000000000..6fc2fe95d Binary files /dev/null and b/public/terrain/19/858579/353776.terrain differ diff --git a/public/terrain/19/858579/353777.terrain b/public/terrain/19/858579/353777.terrain new file mode 100644 index 000000000..b07e14362 Binary files /dev/null and b/public/terrain/19/858579/353777.terrain differ diff --git a/public/terrain/19/858579/353778.terrain b/public/terrain/19/858579/353778.terrain new file mode 100644 index 000000000..f84a5bd5f Binary files /dev/null and b/public/terrain/19/858579/353778.terrain differ diff --git a/public/terrain/19/858579/353779.terrain b/public/terrain/19/858579/353779.terrain new file mode 100644 index 000000000..fba527aa6 Binary files /dev/null and b/public/terrain/19/858579/353779.terrain differ diff --git a/public/terrain/19/858579/353780.terrain b/public/terrain/19/858579/353780.terrain new file mode 100644 index 000000000..da81f8bc8 Binary files /dev/null and b/public/terrain/19/858579/353780.terrain differ diff --git a/public/terrain/19/858579/353781.terrain b/public/terrain/19/858579/353781.terrain new file mode 100644 index 000000000..6fbabdc61 Binary files /dev/null and b/public/terrain/19/858579/353781.terrain differ diff --git a/public/terrain/19/858579/353782.terrain b/public/terrain/19/858579/353782.terrain new file mode 100644 index 000000000..3beb22b95 Binary files /dev/null and b/public/terrain/19/858579/353782.terrain differ diff --git a/public/terrain/19/858579/353783.terrain b/public/terrain/19/858579/353783.terrain new file mode 100644 index 000000000..2d1a312e2 Binary files /dev/null and b/public/terrain/19/858579/353783.terrain differ diff --git a/public/terrain/19/858579/353784.terrain b/public/terrain/19/858579/353784.terrain new file mode 100644 index 000000000..f912cf447 Binary files /dev/null and b/public/terrain/19/858579/353784.terrain differ diff --git a/public/terrain/19/858579/353785.terrain b/public/terrain/19/858579/353785.terrain new file mode 100644 index 000000000..0fd09aeeb Binary files /dev/null and b/public/terrain/19/858579/353785.terrain differ diff --git a/public/terrain/19/858579/353786.terrain b/public/terrain/19/858579/353786.terrain new file mode 100644 index 000000000..5a3f89369 Binary files /dev/null and b/public/terrain/19/858579/353786.terrain differ diff --git a/public/terrain/19/858579/353787.terrain b/public/terrain/19/858579/353787.terrain new file mode 100644 index 000000000..af1ce3f2f Binary files /dev/null and b/public/terrain/19/858579/353787.terrain differ diff --git a/public/terrain/19/858579/353788.terrain b/public/terrain/19/858579/353788.terrain new file mode 100644 index 000000000..82357fff8 Binary files /dev/null and b/public/terrain/19/858579/353788.terrain differ diff --git a/public/terrain/19/858579/353789.terrain b/public/terrain/19/858579/353789.terrain new file mode 100644 index 000000000..9ff6645d6 Binary files /dev/null and b/public/terrain/19/858579/353789.terrain differ diff --git a/public/terrain/19/858579/353790.terrain b/public/terrain/19/858579/353790.terrain new file mode 100644 index 000000000..53e216f03 Binary files /dev/null and b/public/terrain/19/858579/353790.terrain differ diff --git a/public/terrain/19/858579/353791.terrain b/public/terrain/19/858579/353791.terrain new file mode 100644 index 000000000..63f655df9 Binary files /dev/null and b/public/terrain/19/858579/353791.terrain differ diff --git a/public/terrain/19/858579/353792.terrain b/public/terrain/19/858579/353792.terrain new file mode 100644 index 000000000..00def666c Binary files /dev/null and b/public/terrain/19/858579/353792.terrain differ diff --git a/public/terrain/19/858579/353793.terrain b/public/terrain/19/858579/353793.terrain new file mode 100644 index 000000000..8d071d0e3 Binary files /dev/null and b/public/terrain/19/858579/353793.terrain differ diff --git a/public/terrain/19/858579/353794.terrain b/public/terrain/19/858579/353794.terrain new file mode 100644 index 000000000..67e964cd3 Binary files /dev/null and b/public/terrain/19/858579/353794.terrain differ diff --git a/public/terrain/19/858579/353795.terrain b/public/terrain/19/858579/353795.terrain new file mode 100644 index 000000000..05eec180a Binary files /dev/null and b/public/terrain/19/858579/353795.terrain differ diff --git a/public/terrain/19/858579/353796.terrain b/public/terrain/19/858579/353796.terrain new file mode 100644 index 000000000..8bd74b754 Binary files /dev/null and b/public/terrain/19/858579/353796.terrain differ diff --git a/public/terrain/19/858579/353797.terrain b/public/terrain/19/858579/353797.terrain new file mode 100644 index 000000000..4d0c90fde Binary files /dev/null and b/public/terrain/19/858579/353797.terrain differ diff --git a/public/terrain/19/858579/353798.terrain b/public/terrain/19/858579/353798.terrain new file mode 100644 index 000000000..b82262210 Binary files /dev/null and b/public/terrain/19/858579/353798.terrain differ diff --git a/public/terrain/19/858579/353799.terrain b/public/terrain/19/858579/353799.terrain new file mode 100644 index 000000000..0e84fc242 Binary files /dev/null and b/public/terrain/19/858579/353799.terrain differ diff --git a/public/terrain/19/858579/353800.terrain b/public/terrain/19/858579/353800.terrain new file mode 100644 index 000000000..43ae2a2ba Binary files /dev/null and b/public/terrain/19/858579/353800.terrain differ diff --git a/public/terrain/19/858579/353801.terrain b/public/terrain/19/858579/353801.terrain new file mode 100644 index 000000000..7a24f73c5 Binary files /dev/null and b/public/terrain/19/858579/353801.terrain differ diff --git a/public/terrain/19/858579/353802.terrain b/public/terrain/19/858579/353802.terrain new file mode 100644 index 000000000..67518ef87 Binary files /dev/null and b/public/terrain/19/858579/353802.terrain differ diff --git a/public/terrain/19/858579/353803.terrain b/public/terrain/19/858579/353803.terrain new file mode 100644 index 000000000..350e020a5 Binary files /dev/null and b/public/terrain/19/858579/353803.terrain differ diff --git a/public/terrain/19/858579/353804.terrain b/public/terrain/19/858579/353804.terrain new file mode 100644 index 000000000..fa72b0965 Binary files /dev/null and b/public/terrain/19/858579/353804.terrain differ diff --git a/public/terrain/19/858579/353805.terrain b/public/terrain/19/858579/353805.terrain new file mode 100644 index 000000000..8e959d0e4 Binary files /dev/null and b/public/terrain/19/858579/353805.terrain differ diff --git a/public/terrain/19/858579/353806.terrain b/public/terrain/19/858579/353806.terrain new file mode 100644 index 000000000..1abd93491 Binary files /dev/null and b/public/terrain/19/858579/353806.terrain differ diff --git a/public/terrain/19/858579/353807.terrain b/public/terrain/19/858579/353807.terrain new file mode 100644 index 000000000..7c2536601 Binary files /dev/null and b/public/terrain/19/858579/353807.terrain differ diff --git a/public/terrain/19/858579/353808.terrain b/public/terrain/19/858579/353808.terrain new file mode 100644 index 000000000..ea2debf8c Binary files /dev/null and b/public/terrain/19/858579/353808.terrain differ diff --git a/public/terrain/19/858579/353809.terrain b/public/terrain/19/858579/353809.terrain new file mode 100644 index 000000000..ea49a6301 Binary files /dev/null and b/public/terrain/19/858579/353809.terrain differ diff --git a/public/terrain/19/858579/353810.terrain b/public/terrain/19/858579/353810.terrain new file mode 100644 index 000000000..06aa6f4aa Binary files /dev/null and b/public/terrain/19/858579/353810.terrain differ diff --git a/public/terrain/19/858579/353811.terrain b/public/terrain/19/858579/353811.terrain new file mode 100644 index 000000000..95bd50c23 Binary files /dev/null and b/public/terrain/19/858579/353811.terrain differ diff --git a/public/terrain/19/858579/353812.terrain b/public/terrain/19/858579/353812.terrain new file mode 100644 index 000000000..6a3c00a1f Binary files /dev/null and b/public/terrain/19/858579/353812.terrain differ diff --git a/public/terrain/19/858579/353813.terrain b/public/terrain/19/858579/353813.terrain new file mode 100644 index 000000000..7ae77c1b8 Binary files /dev/null and b/public/terrain/19/858579/353813.terrain differ diff --git a/public/terrain/19/858579/353814.terrain b/public/terrain/19/858579/353814.terrain new file mode 100644 index 000000000..e3477e1bb Binary files /dev/null and b/public/terrain/19/858579/353814.terrain differ diff --git a/public/terrain/19/858579/353815.terrain b/public/terrain/19/858579/353815.terrain new file mode 100644 index 000000000..09325e4b4 Binary files /dev/null and b/public/terrain/19/858579/353815.terrain differ diff --git a/public/terrain/19/858579/353816.terrain b/public/terrain/19/858579/353816.terrain new file mode 100644 index 000000000..254b3ea32 Binary files /dev/null and b/public/terrain/19/858579/353816.terrain differ diff --git a/public/terrain/19/858579/353817.terrain b/public/terrain/19/858579/353817.terrain new file mode 100644 index 000000000..8f1321554 Binary files /dev/null and b/public/terrain/19/858579/353817.terrain differ diff --git a/public/terrain/19/858579/353818.terrain b/public/terrain/19/858579/353818.terrain new file mode 100644 index 000000000..8f05ac19e Binary files /dev/null and b/public/terrain/19/858579/353818.terrain differ diff --git a/public/terrain/19/858579/353819.terrain b/public/terrain/19/858579/353819.terrain new file mode 100644 index 000000000..9ca3370b7 Binary files /dev/null and b/public/terrain/19/858579/353819.terrain differ diff --git a/public/terrain/19/858579/353820.terrain b/public/terrain/19/858579/353820.terrain new file mode 100644 index 000000000..659ec60c1 Binary files /dev/null and b/public/terrain/19/858579/353820.terrain differ diff --git a/public/terrain/19/858579/353821.terrain b/public/terrain/19/858579/353821.terrain new file mode 100644 index 000000000..5b402044c Binary files /dev/null and b/public/terrain/19/858579/353821.terrain differ diff --git a/public/terrain/19/858579/353822.terrain b/public/terrain/19/858579/353822.terrain new file mode 100644 index 000000000..2ee875da7 Binary files /dev/null and b/public/terrain/19/858579/353822.terrain differ diff --git a/public/terrain/19/858579/353823.terrain b/public/terrain/19/858579/353823.terrain new file mode 100644 index 000000000..0173eb742 Binary files /dev/null and b/public/terrain/19/858579/353823.terrain differ diff --git a/public/terrain/19/858579/353824.terrain b/public/terrain/19/858579/353824.terrain new file mode 100644 index 000000000..f51158669 Binary files /dev/null and b/public/terrain/19/858579/353824.terrain differ diff --git a/public/terrain/19/858579/353825.terrain b/public/terrain/19/858579/353825.terrain new file mode 100644 index 000000000..670f53180 Binary files /dev/null and b/public/terrain/19/858579/353825.terrain differ diff --git a/public/terrain/19/858579/353826.terrain b/public/terrain/19/858579/353826.terrain new file mode 100644 index 000000000..d278a1164 Binary files /dev/null and b/public/terrain/19/858579/353826.terrain differ diff --git a/public/terrain/19/858579/353827.terrain b/public/terrain/19/858579/353827.terrain new file mode 100644 index 000000000..baaf0060f Binary files /dev/null and b/public/terrain/19/858579/353827.terrain differ diff --git a/public/terrain/19/858579/353828.terrain b/public/terrain/19/858579/353828.terrain new file mode 100644 index 000000000..60637afac Binary files /dev/null and b/public/terrain/19/858579/353828.terrain differ diff --git a/public/terrain/19/858579/353829.terrain b/public/terrain/19/858579/353829.terrain new file mode 100644 index 000000000..f8b27c7f4 Binary files /dev/null and b/public/terrain/19/858579/353829.terrain differ diff --git a/public/terrain/19/858579/353830.terrain b/public/terrain/19/858579/353830.terrain new file mode 100644 index 000000000..2136156dd Binary files /dev/null and b/public/terrain/19/858579/353830.terrain differ diff --git a/public/terrain/19/858579/353831.terrain b/public/terrain/19/858579/353831.terrain new file mode 100644 index 000000000..28005e95c Binary files /dev/null and b/public/terrain/19/858579/353831.terrain differ diff --git a/public/terrain/19/858579/353832.terrain b/public/terrain/19/858579/353832.terrain new file mode 100644 index 000000000..33b288409 Binary files /dev/null and b/public/terrain/19/858579/353832.terrain differ diff --git a/public/terrain/19/858579/353833.terrain b/public/terrain/19/858579/353833.terrain new file mode 100644 index 000000000..94b4e6388 Binary files /dev/null and b/public/terrain/19/858579/353833.terrain differ diff --git a/public/terrain/19/858579/353834.terrain b/public/terrain/19/858579/353834.terrain new file mode 100644 index 000000000..24b741d7b Binary files /dev/null and b/public/terrain/19/858579/353834.terrain differ diff --git a/public/terrain/19/858579/353835.terrain b/public/terrain/19/858579/353835.terrain new file mode 100644 index 000000000..53f9cdbe1 Binary files /dev/null and b/public/terrain/19/858579/353835.terrain differ diff --git a/public/terrain/19/858579/353836.terrain b/public/terrain/19/858579/353836.terrain new file mode 100644 index 000000000..c395a0436 Binary files /dev/null and b/public/terrain/19/858579/353836.terrain differ diff --git a/public/terrain/19/858579/353837.terrain b/public/terrain/19/858579/353837.terrain new file mode 100644 index 000000000..f061a997a Binary files /dev/null and b/public/terrain/19/858579/353837.terrain differ diff --git a/public/terrain/19/858579/353838.terrain b/public/terrain/19/858579/353838.terrain new file mode 100644 index 000000000..f07c4f17d Binary files /dev/null and b/public/terrain/19/858579/353838.terrain differ diff --git a/public/terrain/19/858579/353839.terrain b/public/terrain/19/858579/353839.terrain new file mode 100644 index 000000000..7ebbf1d14 Binary files /dev/null and b/public/terrain/19/858579/353839.terrain differ diff --git a/public/terrain/19/858579/353840.terrain b/public/terrain/19/858579/353840.terrain new file mode 100644 index 000000000..c862a27ff Binary files /dev/null and b/public/terrain/19/858579/353840.terrain differ diff --git a/public/terrain/19/858579/353841.terrain b/public/terrain/19/858579/353841.terrain new file mode 100644 index 000000000..6c15189a4 Binary files /dev/null and b/public/terrain/19/858579/353841.terrain differ diff --git a/public/terrain/19/858579/353842.terrain b/public/terrain/19/858579/353842.terrain new file mode 100644 index 000000000..9c107392c Binary files /dev/null and b/public/terrain/19/858579/353842.terrain differ diff --git a/public/terrain/19/858579/353843.terrain b/public/terrain/19/858579/353843.terrain new file mode 100644 index 000000000..16ec6f1b9 Binary files /dev/null and b/public/terrain/19/858579/353843.terrain differ diff --git a/public/terrain/19/858579/353844.terrain b/public/terrain/19/858579/353844.terrain new file mode 100644 index 000000000..b6212d2cf Binary files /dev/null and b/public/terrain/19/858579/353844.terrain differ diff --git a/public/terrain/19/858579/353845.terrain b/public/terrain/19/858579/353845.terrain new file mode 100644 index 000000000..bacde0d03 Binary files /dev/null and b/public/terrain/19/858579/353845.terrain differ diff --git a/public/terrain/19/858579/353846.terrain b/public/terrain/19/858579/353846.terrain new file mode 100644 index 000000000..4fb51d201 Binary files /dev/null and b/public/terrain/19/858579/353846.terrain differ diff --git a/public/terrain/19/858579/353847.terrain b/public/terrain/19/858579/353847.terrain new file mode 100644 index 000000000..97a646f19 Binary files /dev/null and b/public/terrain/19/858579/353847.terrain differ diff --git a/public/terrain/19/858579/353848.terrain b/public/terrain/19/858579/353848.terrain new file mode 100644 index 000000000..eccc2d121 Binary files /dev/null and b/public/terrain/19/858579/353848.terrain differ diff --git a/public/terrain/19/858579/353849.terrain b/public/terrain/19/858579/353849.terrain new file mode 100644 index 000000000..51b336b5c Binary files /dev/null and b/public/terrain/19/858579/353849.terrain differ diff --git a/public/terrain/19/858579/353850.terrain b/public/terrain/19/858579/353850.terrain new file mode 100644 index 000000000..aa67a854c Binary files /dev/null and b/public/terrain/19/858579/353850.terrain differ diff --git a/public/terrain/19/858579/353851.terrain b/public/terrain/19/858579/353851.terrain new file mode 100644 index 000000000..b1198e7df Binary files /dev/null and b/public/terrain/19/858579/353851.terrain differ diff --git a/public/terrain/19/858579/353852.terrain b/public/terrain/19/858579/353852.terrain new file mode 100644 index 000000000..27af85322 Binary files /dev/null and b/public/terrain/19/858579/353852.terrain differ diff --git a/public/terrain/19/858579/353853.terrain b/public/terrain/19/858579/353853.terrain new file mode 100644 index 000000000..9569613dd Binary files /dev/null and b/public/terrain/19/858579/353853.terrain differ diff --git a/public/terrain/19/858579/353854.terrain b/public/terrain/19/858579/353854.terrain new file mode 100644 index 000000000..57090f43b Binary files /dev/null and b/public/terrain/19/858579/353854.terrain differ diff --git a/public/terrain/19/858579/353855.terrain b/public/terrain/19/858579/353855.terrain new file mode 100644 index 000000000..81da770c8 Binary files /dev/null and b/public/terrain/19/858579/353855.terrain differ diff --git a/public/terrain/19/858579/353856.terrain b/public/terrain/19/858579/353856.terrain new file mode 100644 index 000000000..3420478fc Binary files /dev/null and b/public/terrain/19/858579/353856.terrain differ diff --git a/public/terrain/19/858579/353857.terrain b/public/terrain/19/858579/353857.terrain new file mode 100644 index 000000000..5d18b1c26 Binary files /dev/null and b/public/terrain/19/858579/353857.terrain differ diff --git a/public/terrain/19/858579/353858.terrain b/public/terrain/19/858579/353858.terrain new file mode 100644 index 000000000..72e8553f5 Binary files /dev/null and b/public/terrain/19/858579/353858.terrain differ diff --git a/public/terrain/19/858579/353859.terrain b/public/terrain/19/858579/353859.terrain new file mode 100644 index 000000000..8db525906 Binary files /dev/null and b/public/terrain/19/858579/353859.terrain differ diff --git a/public/terrain/19/858579/353860.terrain b/public/terrain/19/858579/353860.terrain new file mode 100644 index 000000000..1fa8aa209 Binary files /dev/null and b/public/terrain/19/858579/353860.terrain differ diff --git a/public/terrain/19/858579/353861.terrain b/public/terrain/19/858579/353861.terrain new file mode 100644 index 000000000..cb0ebfbfc Binary files /dev/null and b/public/terrain/19/858579/353861.terrain differ diff --git a/public/terrain/19/858579/353862.terrain b/public/terrain/19/858579/353862.terrain new file mode 100644 index 000000000..8436f775a Binary files /dev/null and b/public/terrain/19/858579/353862.terrain differ diff --git a/public/terrain/19/858579/353863.terrain b/public/terrain/19/858579/353863.terrain new file mode 100644 index 000000000..919d3b085 Binary files /dev/null and b/public/terrain/19/858579/353863.terrain differ diff --git a/public/terrain/19/858579/353864.terrain b/public/terrain/19/858579/353864.terrain new file mode 100644 index 000000000..a1032a844 Binary files /dev/null and b/public/terrain/19/858579/353864.terrain differ diff --git a/public/terrain/19/858579/353865.terrain b/public/terrain/19/858579/353865.terrain new file mode 100644 index 000000000..f97f1cfb3 Binary files /dev/null and b/public/terrain/19/858579/353865.terrain differ diff --git a/public/terrain/19/858579/353866.terrain b/public/terrain/19/858579/353866.terrain new file mode 100644 index 000000000..c6de814b3 Binary files /dev/null and b/public/terrain/19/858579/353866.terrain differ diff --git a/public/terrain/19/858579/353867.terrain b/public/terrain/19/858579/353867.terrain new file mode 100644 index 000000000..8c9cf2d7a Binary files /dev/null and b/public/terrain/19/858579/353867.terrain differ diff --git a/public/terrain/19/858579/353868.terrain b/public/terrain/19/858579/353868.terrain new file mode 100644 index 000000000..c39225476 Binary files /dev/null and b/public/terrain/19/858579/353868.terrain differ diff --git a/public/terrain/19/858579/353869.terrain b/public/terrain/19/858579/353869.terrain new file mode 100644 index 000000000..a282df1ff Binary files /dev/null and b/public/terrain/19/858579/353869.terrain differ diff --git a/public/terrain/19/858579/353870.terrain b/public/terrain/19/858579/353870.terrain new file mode 100644 index 000000000..04c0f3392 Binary files /dev/null and b/public/terrain/19/858579/353870.terrain differ diff --git a/public/terrain/19/858579/353871.terrain b/public/terrain/19/858579/353871.terrain new file mode 100644 index 000000000..73b806a34 Binary files /dev/null and b/public/terrain/19/858579/353871.terrain differ diff --git a/public/terrain/19/858579/353872.terrain b/public/terrain/19/858579/353872.terrain new file mode 100644 index 000000000..7a65fd061 Binary files /dev/null and b/public/terrain/19/858579/353872.terrain differ diff --git a/public/terrain/19/858579/353873.terrain b/public/terrain/19/858579/353873.terrain new file mode 100644 index 000000000..bde72e494 Binary files /dev/null and b/public/terrain/19/858579/353873.terrain differ diff --git a/public/terrain/19/858579/353874.terrain b/public/terrain/19/858579/353874.terrain new file mode 100644 index 000000000..6fbb9ed75 Binary files /dev/null and b/public/terrain/19/858579/353874.terrain differ diff --git a/public/terrain/19/858579/353875.terrain b/public/terrain/19/858579/353875.terrain new file mode 100644 index 000000000..3b9cd81a4 Binary files /dev/null and b/public/terrain/19/858579/353875.terrain differ diff --git a/public/terrain/19/858579/353876.terrain b/public/terrain/19/858579/353876.terrain new file mode 100644 index 000000000..937208976 Binary files /dev/null and b/public/terrain/19/858579/353876.terrain differ diff --git a/public/terrain/19/858579/353877.terrain b/public/terrain/19/858579/353877.terrain new file mode 100644 index 000000000..e4764e212 Binary files /dev/null and b/public/terrain/19/858579/353877.terrain differ diff --git a/public/terrain/19/858579/353878.terrain b/public/terrain/19/858579/353878.terrain new file mode 100644 index 000000000..f49a2d71b Binary files /dev/null and b/public/terrain/19/858579/353878.terrain differ diff --git a/public/terrain/19/858579/353879.terrain b/public/terrain/19/858579/353879.terrain new file mode 100644 index 000000000..b7fecd622 Binary files /dev/null and b/public/terrain/19/858579/353879.terrain differ diff --git a/public/terrain/19/858579/353880.terrain b/public/terrain/19/858579/353880.terrain new file mode 100644 index 000000000..e04dbbf55 Binary files /dev/null and b/public/terrain/19/858579/353880.terrain differ diff --git a/public/terrain/19/858579/353881.terrain b/public/terrain/19/858579/353881.terrain new file mode 100644 index 000000000..853dd83f4 Binary files /dev/null and b/public/terrain/19/858579/353881.terrain differ diff --git a/public/terrain/19/858579/353882.terrain b/public/terrain/19/858579/353882.terrain new file mode 100644 index 000000000..acbeb344b Binary files /dev/null and b/public/terrain/19/858579/353882.terrain differ diff --git a/public/terrain/19/858579/353883.terrain b/public/terrain/19/858579/353883.terrain new file mode 100644 index 000000000..a858bd128 Binary files /dev/null and b/public/terrain/19/858579/353883.terrain differ diff --git a/public/terrain/19/858579/353884.terrain b/public/terrain/19/858579/353884.terrain new file mode 100644 index 000000000..75ff4389d Binary files /dev/null and b/public/terrain/19/858579/353884.terrain differ diff --git a/public/terrain/19/858579/353885.terrain b/public/terrain/19/858579/353885.terrain new file mode 100644 index 000000000..8465a33d0 Binary files /dev/null and b/public/terrain/19/858579/353885.terrain differ diff --git a/public/terrain/19/858579/353886.terrain b/public/terrain/19/858579/353886.terrain new file mode 100644 index 000000000..ea9bb68cd Binary files /dev/null and b/public/terrain/19/858579/353886.terrain differ diff --git a/public/terrain/19/858579/353887.terrain b/public/terrain/19/858579/353887.terrain new file mode 100644 index 000000000..3288ab44d Binary files /dev/null and b/public/terrain/19/858579/353887.terrain differ diff --git a/public/terrain/19/858579/353888.terrain b/public/terrain/19/858579/353888.terrain new file mode 100644 index 000000000..d9db96e25 Binary files /dev/null and b/public/terrain/19/858579/353888.terrain differ diff --git a/public/terrain/19/858579/353889.terrain b/public/terrain/19/858579/353889.terrain new file mode 100644 index 000000000..dbda05817 Binary files /dev/null and b/public/terrain/19/858579/353889.terrain differ diff --git a/public/terrain/19/858579/353890.terrain b/public/terrain/19/858579/353890.terrain new file mode 100644 index 000000000..9b93f32de Binary files /dev/null and b/public/terrain/19/858579/353890.terrain differ diff --git a/public/terrain/19/858579/353891.terrain b/public/terrain/19/858579/353891.terrain new file mode 100644 index 000000000..fff100394 Binary files /dev/null and b/public/terrain/19/858579/353891.terrain differ diff --git a/public/terrain/19/858579/353892.terrain b/public/terrain/19/858579/353892.terrain new file mode 100644 index 000000000..01a2b23d1 Binary files /dev/null and b/public/terrain/19/858579/353892.terrain differ diff --git a/public/terrain/19/858579/353893.terrain b/public/terrain/19/858579/353893.terrain new file mode 100644 index 000000000..c370e577c Binary files /dev/null and b/public/terrain/19/858579/353893.terrain differ diff --git a/public/terrain/19/858579/353894.terrain b/public/terrain/19/858579/353894.terrain new file mode 100644 index 000000000..d946a0f35 Binary files /dev/null and b/public/terrain/19/858579/353894.terrain differ diff --git a/public/terrain/19/858579/353895.terrain b/public/terrain/19/858579/353895.terrain new file mode 100644 index 000000000..9d9463a1d Binary files /dev/null and b/public/terrain/19/858579/353895.terrain differ diff --git a/public/terrain/19/858579/353896.terrain b/public/terrain/19/858579/353896.terrain new file mode 100644 index 000000000..b1eab310e Binary files /dev/null and b/public/terrain/19/858579/353896.terrain differ diff --git a/public/terrain/19/858579/353897.terrain b/public/terrain/19/858579/353897.terrain new file mode 100644 index 000000000..f1be57b22 Binary files /dev/null and b/public/terrain/19/858579/353897.terrain differ diff --git a/public/terrain/19/858579/353898.terrain b/public/terrain/19/858579/353898.terrain new file mode 100644 index 000000000..ff94ab167 Binary files /dev/null and b/public/terrain/19/858579/353898.terrain differ diff --git a/public/terrain/19/858579/353899.terrain b/public/terrain/19/858579/353899.terrain new file mode 100644 index 000000000..ec03cb43a Binary files /dev/null and b/public/terrain/19/858579/353899.terrain differ diff --git a/public/terrain/19/858579/353900.terrain b/public/terrain/19/858579/353900.terrain new file mode 100644 index 000000000..eb99ce311 Binary files /dev/null and b/public/terrain/19/858579/353900.terrain differ diff --git a/public/terrain/19/858579/353901.terrain b/public/terrain/19/858579/353901.terrain new file mode 100644 index 000000000..88b5ef88b Binary files /dev/null and b/public/terrain/19/858579/353901.terrain differ diff --git a/public/terrain/19/858579/353902.terrain b/public/terrain/19/858579/353902.terrain new file mode 100644 index 000000000..728f6fe70 Binary files /dev/null and b/public/terrain/19/858579/353902.terrain differ diff --git a/public/terrain/19/858579/353903.terrain b/public/terrain/19/858579/353903.terrain new file mode 100644 index 000000000..cd1f5a639 Binary files /dev/null and b/public/terrain/19/858579/353903.terrain differ diff --git a/public/terrain/19/858579/353904.terrain b/public/terrain/19/858579/353904.terrain new file mode 100644 index 000000000..4d23106ce Binary files /dev/null and b/public/terrain/19/858579/353904.terrain differ diff --git a/public/terrain/19/858579/353905.terrain b/public/terrain/19/858579/353905.terrain new file mode 100644 index 000000000..65bd9bf46 Binary files /dev/null and b/public/terrain/19/858579/353905.terrain differ diff --git a/public/terrain/19/858579/353906.terrain b/public/terrain/19/858579/353906.terrain new file mode 100644 index 000000000..b2497b40a Binary files /dev/null and b/public/terrain/19/858579/353906.terrain differ diff --git a/public/terrain/19/858579/353907.terrain b/public/terrain/19/858579/353907.terrain new file mode 100644 index 000000000..d61f63e7c Binary files /dev/null and b/public/terrain/19/858579/353907.terrain differ diff --git a/public/terrain/19/858579/353908.terrain b/public/terrain/19/858579/353908.terrain new file mode 100644 index 000000000..f4cb9fe1d Binary files /dev/null and b/public/terrain/19/858579/353908.terrain differ diff --git a/public/terrain/19/858579/353909.terrain b/public/terrain/19/858579/353909.terrain new file mode 100644 index 000000000..b079b770c Binary files /dev/null and b/public/terrain/19/858579/353909.terrain differ diff --git a/public/terrain/19/858579/353910.terrain b/public/terrain/19/858579/353910.terrain new file mode 100644 index 000000000..7c70e3e3c Binary files /dev/null and b/public/terrain/19/858579/353910.terrain differ diff --git a/public/terrain/19/858579/353911.terrain b/public/terrain/19/858579/353911.terrain new file mode 100644 index 000000000..84a6f343c Binary files /dev/null and b/public/terrain/19/858579/353911.terrain differ diff --git a/public/terrain/19/858579/353912.terrain b/public/terrain/19/858579/353912.terrain new file mode 100644 index 000000000..8f0af1826 Binary files /dev/null and b/public/terrain/19/858579/353912.terrain differ diff --git a/public/terrain/19/858579/353913.terrain b/public/terrain/19/858579/353913.terrain new file mode 100644 index 000000000..c626f192a Binary files /dev/null and b/public/terrain/19/858579/353913.terrain differ diff --git a/public/terrain/19/858579/353914.terrain b/public/terrain/19/858579/353914.terrain new file mode 100644 index 000000000..f9ab65b5b Binary files /dev/null and b/public/terrain/19/858579/353914.terrain differ diff --git a/public/terrain/19/858579/353915.terrain b/public/terrain/19/858579/353915.terrain new file mode 100644 index 000000000..49895bff7 Binary files /dev/null and b/public/terrain/19/858579/353915.terrain differ diff --git a/public/terrain/19/858579/353916.terrain b/public/terrain/19/858579/353916.terrain new file mode 100644 index 000000000..1b0757172 Binary files /dev/null and b/public/terrain/19/858579/353916.terrain differ diff --git a/public/terrain/19/858579/353917.terrain b/public/terrain/19/858579/353917.terrain new file mode 100644 index 000000000..8a5715062 Binary files /dev/null and b/public/terrain/19/858579/353917.terrain differ diff --git a/public/terrain/19/858579/353918.terrain b/public/terrain/19/858579/353918.terrain new file mode 100644 index 000000000..b433d481d Binary files /dev/null and b/public/terrain/19/858579/353918.terrain differ diff --git a/public/terrain/19/858579/353919.terrain b/public/terrain/19/858579/353919.terrain new file mode 100644 index 000000000..1ceb47f9f Binary files /dev/null and b/public/terrain/19/858579/353919.terrain differ diff --git a/public/terrain/19/858579/353920.terrain b/public/terrain/19/858579/353920.terrain new file mode 100644 index 000000000..5d851ea23 Binary files /dev/null and b/public/terrain/19/858579/353920.terrain differ diff --git a/public/terrain/19/858579/353921.terrain b/public/terrain/19/858579/353921.terrain new file mode 100644 index 000000000..afe3b8ed0 Binary files /dev/null and b/public/terrain/19/858579/353921.terrain differ diff --git a/public/terrain/19/858579/353922.terrain b/public/terrain/19/858579/353922.terrain new file mode 100644 index 000000000..8671d47af Binary files /dev/null and b/public/terrain/19/858579/353922.terrain differ diff --git a/public/terrain/19/858579/353923.terrain b/public/terrain/19/858579/353923.terrain new file mode 100644 index 000000000..dd17756f3 Binary files /dev/null and b/public/terrain/19/858579/353923.terrain differ diff --git a/public/terrain/19/858579/353924.terrain b/public/terrain/19/858579/353924.terrain new file mode 100644 index 000000000..153d7f553 Binary files /dev/null and b/public/terrain/19/858579/353924.terrain differ diff --git a/public/terrain/19/858579/353925.terrain b/public/terrain/19/858579/353925.terrain new file mode 100644 index 000000000..38ff0f3a2 Binary files /dev/null and b/public/terrain/19/858579/353925.terrain differ diff --git a/public/terrain/19/858579/353926.terrain b/public/terrain/19/858579/353926.terrain new file mode 100644 index 000000000..36cc3afc1 Binary files /dev/null and b/public/terrain/19/858579/353926.terrain differ diff --git a/public/terrain/19/858579/353927.terrain b/public/terrain/19/858579/353927.terrain new file mode 100644 index 000000000..002f2956d Binary files /dev/null and b/public/terrain/19/858579/353927.terrain differ diff --git a/public/terrain/19/858579/353928.terrain b/public/terrain/19/858579/353928.terrain new file mode 100644 index 000000000..ac921c759 Binary files /dev/null and b/public/terrain/19/858579/353928.terrain differ diff --git a/public/terrain/19/858579/353929.terrain b/public/terrain/19/858579/353929.terrain new file mode 100644 index 000000000..18eb7d4cd Binary files /dev/null and b/public/terrain/19/858579/353929.terrain differ diff --git a/public/terrain/19/858579/353930.terrain b/public/terrain/19/858579/353930.terrain new file mode 100644 index 000000000..00f5f72f6 Binary files /dev/null and b/public/terrain/19/858579/353930.terrain differ diff --git a/public/terrain/19/858579/353931.terrain b/public/terrain/19/858579/353931.terrain new file mode 100644 index 000000000..2311d0448 Binary files /dev/null and b/public/terrain/19/858579/353931.terrain differ diff --git a/public/terrain/19/858579/353932.terrain b/public/terrain/19/858579/353932.terrain new file mode 100644 index 000000000..30b0ba80c Binary files /dev/null and b/public/terrain/19/858579/353932.terrain differ diff --git a/public/terrain/19/858579/353933.terrain b/public/terrain/19/858579/353933.terrain new file mode 100644 index 000000000..bce5ce965 Binary files /dev/null and b/public/terrain/19/858579/353933.terrain differ diff --git a/public/terrain/19/858579/353934.terrain b/public/terrain/19/858579/353934.terrain new file mode 100644 index 000000000..a11583bbf Binary files /dev/null and b/public/terrain/19/858579/353934.terrain differ diff --git a/public/terrain/19/858579/353935.terrain b/public/terrain/19/858579/353935.terrain new file mode 100644 index 000000000..e0c3359b4 Binary files /dev/null and b/public/terrain/19/858579/353935.terrain differ diff --git a/public/terrain/19/858579/353936.terrain b/public/terrain/19/858579/353936.terrain new file mode 100644 index 000000000..98470145b Binary files /dev/null and b/public/terrain/19/858579/353936.terrain differ diff --git a/public/terrain/19/858579/353937.terrain b/public/terrain/19/858579/353937.terrain new file mode 100644 index 000000000..4b5c64e82 Binary files /dev/null and b/public/terrain/19/858579/353937.terrain differ diff --git a/public/terrain/19/858579/353938.terrain b/public/terrain/19/858579/353938.terrain new file mode 100644 index 000000000..83fff70e7 Binary files /dev/null and b/public/terrain/19/858579/353938.terrain differ diff --git a/public/terrain/19/858579/353939.terrain b/public/terrain/19/858579/353939.terrain new file mode 100644 index 000000000..d2eb59390 Binary files /dev/null and b/public/terrain/19/858579/353939.terrain differ diff --git a/public/terrain/19/858579/353940.terrain b/public/terrain/19/858579/353940.terrain new file mode 100644 index 000000000..7561850be Binary files /dev/null and b/public/terrain/19/858579/353940.terrain differ diff --git a/public/terrain/19/858579/353941.terrain b/public/terrain/19/858579/353941.terrain new file mode 100644 index 000000000..b7abc5c06 Binary files /dev/null and b/public/terrain/19/858579/353941.terrain differ diff --git a/public/terrain/19/858579/353942.terrain b/public/terrain/19/858579/353942.terrain new file mode 100644 index 000000000..df1c7ff7f Binary files /dev/null and b/public/terrain/19/858579/353942.terrain differ diff --git a/public/terrain/19/858579/353943.terrain b/public/terrain/19/858579/353943.terrain new file mode 100644 index 000000000..1723842a9 Binary files /dev/null and b/public/terrain/19/858579/353943.terrain differ diff --git a/public/terrain/19/858579/353944.terrain b/public/terrain/19/858579/353944.terrain new file mode 100644 index 000000000..6d266afe3 Binary files /dev/null and b/public/terrain/19/858579/353944.terrain differ diff --git a/public/terrain/19/858579/353945.terrain b/public/terrain/19/858579/353945.terrain new file mode 100644 index 000000000..beaa4ef2d Binary files /dev/null and b/public/terrain/19/858579/353945.terrain differ diff --git a/public/terrain/19/858579/353946.terrain b/public/terrain/19/858579/353946.terrain new file mode 100644 index 000000000..c38051d6d Binary files /dev/null and b/public/terrain/19/858579/353946.terrain differ diff --git a/public/terrain/19/858579/353947.terrain b/public/terrain/19/858579/353947.terrain new file mode 100644 index 000000000..55e9c1a47 Binary files /dev/null and b/public/terrain/19/858579/353947.terrain differ diff --git a/public/terrain/19/858579/353948.terrain b/public/terrain/19/858579/353948.terrain new file mode 100644 index 000000000..57d8763a8 Binary files /dev/null and b/public/terrain/19/858579/353948.terrain differ diff --git a/public/terrain/19/858579/353949.terrain b/public/terrain/19/858579/353949.terrain new file mode 100644 index 000000000..95f8db473 Binary files /dev/null and b/public/terrain/19/858579/353949.terrain differ diff --git a/public/terrain/19/858579/353950.terrain b/public/terrain/19/858579/353950.terrain new file mode 100644 index 000000000..ab4a221cf Binary files /dev/null and b/public/terrain/19/858579/353950.terrain differ diff --git a/public/terrain/19/858579/353951.terrain b/public/terrain/19/858579/353951.terrain new file mode 100644 index 000000000..e1567fe5c Binary files /dev/null and b/public/terrain/19/858579/353951.terrain differ diff --git a/public/terrain/19/858579/353952.terrain b/public/terrain/19/858579/353952.terrain new file mode 100644 index 000000000..7ada6da78 Binary files /dev/null and b/public/terrain/19/858579/353952.terrain differ diff --git a/public/terrain/19/858579/353953.terrain b/public/terrain/19/858579/353953.terrain new file mode 100644 index 000000000..3e905bffd Binary files /dev/null and b/public/terrain/19/858579/353953.terrain differ diff --git a/public/terrain/19/858579/353954.terrain b/public/terrain/19/858579/353954.terrain new file mode 100644 index 000000000..1fed30bd8 Binary files /dev/null and b/public/terrain/19/858579/353954.terrain differ diff --git a/public/terrain/19/858579/353955.terrain b/public/terrain/19/858579/353955.terrain new file mode 100644 index 000000000..40144a2a3 Binary files /dev/null and b/public/terrain/19/858579/353955.terrain differ diff --git a/public/terrain/19/858579/353956.terrain b/public/terrain/19/858579/353956.terrain new file mode 100644 index 000000000..4b8480c07 Binary files /dev/null and b/public/terrain/19/858579/353956.terrain differ diff --git a/public/terrain/19/858579/353957.terrain b/public/terrain/19/858579/353957.terrain new file mode 100644 index 000000000..fc1d2b9a2 Binary files /dev/null and b/public/terrain/19/858579/353957.terrain differ diff --git a/public/terrain/19/858579/353958.terrain b/public/terrain/19/858579/353958.terrain new file mode 100644 index 000000000..7941c173f Binary files /dev/null and b/public/terrain/19/858579/353958.terrain differ diff --git a/public/terrain/19/858579/353959.terrain b/public/terrain/19/858579/353959.terrain new file mode 100644 index 000000000..97bceb66f Binary files /dev/null and b/public/terrain/19/858579/353959.terrain differ diff --git a/public/terrain/19/858579/353960.terrain b/public/terrain/19/858579/353960.terrain new file mode 100644 index 000000000..b693e18a6 Binary files /dev/null and b/public/terrain/19/858579/353960.terrain differ diff --git a/public/terrain/19/858579/353961.terrain b/public/terrain/19/858579/353961.terrain new file mode 100644 index 000000000..c8c0cc8e8 Binary files /dev/null and b/public/terrain/19/858579/353961.terrain differ diff --git a/public/terrain/19/858579/353962.terrain b/public/terrain/19/858579/353962.terrain new file mode 100644 index 000000000..3e0917fc2 Binary files /dev/null and b/public/terrain/19/858579/353962.terrain differ diff --git a/public/terrain/19/858579/353963.terrain b/public/terrain/19/858579/353963.terrain new file mode 100644 index 000000000..0fb3dacb6 Binary files /dev/null and b/public/terrain/19/858579/353963.terrain differ diff --git a/public/terrain/19/858579/353964.terrain b/public/terrain/19/858579/353964.terrain new file mode 100644 index 000000000..b5ec8a2aa Binary files /dev/null and b/public/terrain/19/858579/353964.terrain differ diff --git a/public/terrain/19/858579/353965.terrain b/public/terrain/19/858579/353965.terrain new file mode 100644 index 000000000..ae3db20e4 Binary files /dev/null and b/public/terrain/19/858579/353965.terrain differ diff --git a/public/terrain/19/858579/353966.terrain b/public/terrain/19/858579/353966.terrain new file mode 100644 index 000000000..41db0699d Binary files /dev/null and b/public/terrain/19/858579/353966.terrain differ diff --git a/public/terrain/19/858579/353967.terrain b/public/terrain/19/858579/353967.terrain new file mode 100644 index 000000000..369cf7485 Binary files /dev/null and b/public/terrain/19/858579/353967.terrain differ diff --git a/public/terrain/19/858579/353968.terrain b/public/terrain/19/858579/353968.terrain new file mode 100644 index 000000000..f9ada0913 Binary files /dev/null and b/public/terrain/19/858579/353968.terrain differ diff --git a/public/terrain/19/858579/353969.terrain b/public/terrain/19/858579/353969.terrain new file mode 100644 index 000000000..72c82d470 Binary files /dev/null and b/public/terrain/19/858579/353969.terrain differ diff --git a/public/terrain/19/858579/353970.terrain b/public/terrain/19/858579/353970.terrain new file mode 100644 index 000000000..6056be45d Binary files /dev/null and b/public/terrain/19/858579/353970.terrain differ diff --git a/public/terrain/19/858579/353971.terrain b/public/terrain/19/858579/353971.terrain new file mode 100644 index 000000000..b8b832644 Binary files /dev/null and b/public/terrain/19/858579/353971.terrain differ diff --git a/public/terrain/19/858579/353972.terrain b/public/terrain/19/858579/353972.terrain new file mode 100644 index 000000000..00ca0633e Binary files /dev/null and b/public/terrain/19/858579/353972.terrain differ diff --git a/public/terrain/19/858579/353973.terrain b/public/terrain/19/858579/353973.terrain new file mode 100644 index 000000000..f84f9857e Binary files /dev/null and b/public/terrain/19/858579/353973.terrain differ diff --git a/public/terrain/19/858579/353974.terrain b/public/terrain/19/858579/353974.terrain new file mode 100644 index 000000000..fa657412f Binary files /dev/null and b/public/terrain/19/858579/353974.terrain differ diff --git a/public/terrain/19/858579/353975.terrain b/public/terrain/19/858579/353975.terrain new file mode 100644 index 000000000..a142f71e8 Binary files /dev/null and b/public/terrain/19/858579/353975.terrain differ diff --git a/public/terrain/19/858579/353976.terrain b/public/terrain/19/858579/353976.terrain new file mode 100644 index 000000000..3e5483ffb Binary files /dev/null and b/public/terrain/19/858579/353976.terrain differ diff --git a/public/terrain/19/858579/353977.terrain b/public/terrain/19/858579/353977.terrain new file mode 100644 index 000000000..27acfd717 Binary files /dev/null and b/public/terrain/19/858579/353977.terrain differ diff --git a/public/terrain/19/858579/353978.terrain b/public/terrain/19/858579/353978.terrain new file mode 100644 index 000000000..15c333d2a Binary files /dev/null and b/public/terrain/19/858579/353978.terrain differ diff --git a/public/terrain/19/858579/353979.terrain b/public/terrain/19/858579/353979.terrain new file mode 100644 index 000000000..ac2c782d2 Binary files /dev/null and b/public/terrain/19/858579/353979.terrain differ diff --git a/public/terrain/19/858579/353980.terrain b/public/terrain/19/858579/353980.terrain new file mode 100644 index 000000000..6fc20ec3c Binary files /dev/null and b/public/terrain/19/858579/353980.terrain differ diff --git a/public/terrain/19/858579/353981.terrain b/public/terrain/19/858579/353981.terrain new file mode 100644 index 000000000..e08c9c67b Binary files /dev/null and b/public/terrain/19/858579/353981.terrain differ diff --git a/public/terrain/19/858579/353982.terrain b/public/terrain/19/858579/353982.terrain new file mode 100644 index 000000000..a37d83641 Binary files /dev/null and b/public/terrain/19/858579/353982.terrain differ diff --git a/public/terrain/19/858579/353983.terrain b/public/terrain/19/858579/353983.terrain new file mode 100644 index 000000000..0f92de376 Binary files /dev/null and b/public/terrain/19/858579/353983.terrain differ diff --git a/public/terrain/19/858579/353984.terrain b/public/terrain/19/858579/353984.terrain new file mode 100644 index 000000000..aa06daba6 Binary files /dev/null and b/public/terrain/19/858579/353984.terrain differ diff --git a/public/terrain/19/858579/353985.terrain b/public/terrain/19/858579/353985.terrain new file mode 100644 index 000000000..56d96ea45 Binary files /dev/null and b/public/terrain/19/858579/353985.terrain differ diff --git a/public/terrain/19/858579/353986.terrain b/public/terrain/19/858579/353986.terrain new file mode 100644 index 000000000..a4dd994ee Binary files /dev/null and b/public/terrain/19/858579/353986.terrain differ diff --git a/public/terrain/19/858579/353987.terrain b/public/terrain/19/858579/353987.terrain new file mode 100644 index 000000000..300b11bb3 Binary files /dev/null and b/public/terrain/19/858579/353987.terrain differ diff --git a/public/terrain/19/858579/353988.terrain b/public/terrain/19/858579/353988.terrain new file mode 100644 index 000000000..4366fc95d Binary files /dev/null and b/public/terrain/19/858579/353988.terrain differ diff --git a/public/terrain/19/858579/353989.terrain b/public/terrain/19/858579/353989.terrain new file mode 100644 index 000000000..833b463fe Binary files /dev/null and b/public/terrain/19/858579/353989.terrain differ diff --git a/public/terrain/19/858579/353990.terrain b/public/terrain/19/858579/353990.terrain new file mode 100644 index 000000000..c98610964 Binary files /dev/null and b/public/terrain/19/858579/353990.terrain differ diff --git a/public/terrain/19/858579/353991.terrain b/public/terrain/19/858579/353991.terrain new file mode 100644 index 000000000..c3a0f7be1 Binary files /dev/null and b/public/terrain/19/858579/353991.terrain differ diff --git a/public/terrain/19/858579/353992.terrain b/public/terrain/19/858579/353992.terrain new file mode 100644 index 000000000..158e671dd Binary files /dev/null and b/public/terrain/19/858579/353992.terrain differ diff --git a/public/terrain/19/858579/353993.terrain b/public/terrain/19/858579/353993.terrain new file mode 100644 index 000000000..efd28894a Binary files /dev/null and b/public/terrain/19/858579/353993.terrain differ diff --git a/public/terrain/19/858579/353994.terrain b/public/terrain/19/858579/353994.terrain new file mode 100644 index 000000000..62d1909a5 Binary files /dev/null and b/public/terrain/19/858579/353994.terrain differ diff --git a/public/terrain/19/858579/353995.terrain b/public/terrain/19/858579/353995.terrain new file mode 100644 index 000000000..ab93ff914 Binary files /dev/null and b/public/terrain/19/858579/353995.terrain differ diff --git a/public/terrain/19/858579/353996.terrain b/public/terrain/19/858579/353996.terrain new file mode 100644 index 000000000..863cf325f Binary files /dev/null and b/public/terrain/19/858579/353996.terrain differ diff --git a/public/terrain/19/858579/353997.terrain b/public/terrain/19/858579/353997.terrain new file mode 100644 index 000000000..5dbf70e58 Binary files /dev/null and b/public/terrain/19/858579/353997.terrain differ diff --git a/public/terrain/19/858579/353998.terrain b/public/terrain/19/858579/353998.terrain new file mode 100644 index 000000000..d4bbfc2d2 Binary files /dev/null and b/public/terrain/19/858579/353998.terrain differ diff --git a/public/terrain/19/858579/353999.terrain b/public/terrain/19/858579/353999.terrain new file mode 100644 index 000000000..b13216df8 Binary files /dev/null and b/public/terrain/19/858579/353999.terrain differ diff --git a/public/terrain/19/858579/354000.terrain b/public/terrain/19/858579/354000.terrain new file mode 100644 index 000000000..4220980c6 Binary files /dev/null and b/public/terrain/19/858579/354000.terrain differ diff --git a/public/terrain/19/858579/354001.terrain b/public/terrain/19/858579/354001.terrain new file mode 100644 index 000000000..8ad0f3c5c Binary files /dev/null and b/public/terrain/19/858579/354001.terrain differ diff --git a/public/terrain/19/858579/354002.terrain b/public/terrain/19/858579/354002.terrain new file mode 100644 index 000000000..f8043d9ca Binary files /dev/null and b/public/terrain/19/858579/354002.terrain differ diff --git a/public/terrain/19/858579/354003.terrain b/public/terrain/19/858579/354003.terrain new file mode 100644 index 000000000..a8b75a5fc Binary files /dev/null and b/public/terrain/19/858579/354003.terrain differ diff --git a/public/terrain/19/858579/354004.terrain b/public/terrain/19/858579/354004.terrain new file mode 100644 index 000000000..62bc85a89 Binary files /dev/null and b/public/terrain/19/858579/354004.terrain differ diff --git a/public/terrain/19/858579/354005.terrain b/public/terrain/19/858579/354005.terrain new file mode 100644 index 000000000..b549dc6a8 Binary files /dev/null and b/public/terrain/19/858579/354005.terrain differ diff --git a/public/terrain/19/858579/354006.terrain b/public/terrain/19/858579/354006.terrain new file mode 100644 index 000000000..c157dd17e Binary files /dev/null and b/public/terrain/19/858579/354006.terrain differ diff --git a/public/terrain/19/858579/354007.terrain b/public/terrain/19/858579/354007.terrain new file mode 100644 index 000000000..44e7b3699 Binary files /dev/null and b/public/terrain/19/858579/354007.terrain differ diff --git a/public/terrain/19/858579/354008.terrain b/public/terrain/19/858579/354008.terrain new file mode 100644 index 000000000..b8458ddaa Binary files /dev/null and b/public/terrain/19/858579/354008.terrain differ diff --git a/public/terrain/19/858579/354009.terrain b/public/terrain/19/858579/354009.terrain new file mode 100644 index 000000000..74208fbba Binary files /dev/null and b/public/terrain/19/858579/354009.terrain differ diff --git a/public/terrain/19/858579/354010.terrain b/public/terrain/19/858579/354010.terrain new file mode 100644 index 000000000..74d432317 Binary files /dev/null and b/public/terrain/19/858579/354010.terrain differ diff --git a/public/terrain/19/858579/354011.terrain b/public/terrain/19/858579/354011.terrain new file mode 100644 index 000000000..d2f758e41 Binary files /dev/null and b/public/terrain/19/858579/354011.terrain differ diff --git a/public/terrain/19/858579/354012.terrain b/public/terrain/19/858579/354012.terrain new file mode 100644 index 000000000..f6d0c2ef8 Binary files /dev/null and b/public/terrain/19/858579/354012.terrain differ diff --git a/public/terrain/19/858579/354013.terrain b/public/terrain/19/858579/354013.terrain new file mode 100644 index 000000000..1cb3a8c94 Binary files /dev/null and b/public/terrain/19/858579/354013.terrain differ diff --git a/public/terrain/19/858579/354014.terrain b/public/terrain/19/858579/354014.terrain new file mode 100644 index 000000000..6c71b36f7 Binary files /dev/null and b/public/terrain/19/858579/354014.terrain differ diff --git a/public/terrain/19/858579/354015.terrain b/public/terrain/19/858579/354015.terrain new file mode 100644 index 000000000..704f69675 Binary files /dev/null and b/public/terrain/19/858579/354015.terrain differ diff --git a/public/terrain/19/858579/354016.terrain b/public/terrain/19/858579/354016.terrain new file mode 100644 index 000000000..2fd826637 Binary files /dev/null and b/public/terrain/19/858579/354016.terrain differ diff --git a/public/terrain/19/858579/354017.terrain b/public/terrain/19/858579/354017.terrain new file mode 100644 index 000000000..520d54a24 Binary files /dev/null and b/public/terrain/19/858579/354017.terrain differ diff --git a/public/terrain/19/858579/354018.terrain b/public/terrain/19/858579/354018.terrain new file mode 100644 index 000000000..a5c20322d Binary files /dev/null and b/public/terrain/19/858579/354018.terrain differ diff --git a/public/terrain/19/858579/354019.terrain b/public/terrain/19/858579/354019.terrain new file mode 100644 index 000000000..1d3b84921 Binary files /dev/null and b/public/terrain/19/858579/354019.terrain differ diff --git a/public/terrain/19/858579/354020.terrain b/public/terrain/19/858579/354020.terrain new file mode 100644 index 000000000..8edf41ce3 Binary files /dev/null and b/public/terrain/19/858579/354020.terrain differ diff --git a/public/terrain/19/858579/354021.terrain b/public/terrain/19/858579/354021.terrain new file mode 100644 index 000000000..b5ed62f46 Binary files /dev/null and b/public/terrain/19/858579/354021.terrain differ diff --git a/public/terrain/19/858579/354022.terrain b/public/terrain/19/858579/354022.terrain new file mode 100644 index 000000000..b590a4c83 Binary files /dev/null and b/public/terrain/19/858579/354022.terrain differ diff --git a/public/terrain/19/858579/354023.terrain b/public/terrain/19/858579/354023.terrain new file mode 100644 index 000000000..f8c7a1373 Binary files /dev/null and b/public/terrain/19/858579/354023.terrain differ diff --git a/public/terrain/19/858579/354024.terrain b/public/terrain/19/858579/354024.terrain new file mode 100644 index 000000000..dcf9e1dcf Binary files /dev/null and b/public/terrain/19/858579/354024.terrain differ diff --git a/public/terrain/19/858579/354025.terrain b/public/terrain/19/858579/354025.terrain new file mode 100644 index 000000000..b649e1af9 Binary files /dev/null and b/public/terrain/19/858579/354025.terrain differ diff --git a/public/terrain/19/858579/354026.terrain b/public/terrain/19/858579/354026.terrain new file mode 100644 index 000000000..2cadae0f3 Binary files /dev/null and b/public/terrain/19/858579/354026.terrain differ diff --git a/public/terrain/19/858579/354027.terrain b/public/terrain/19/858579/354027.terrain new file mode 100644 index 000000000..aacebec8f Binary files /dev/null and b/public/terrain/19/858579/354027.terrain differ diff --git a/public/terrain/19/858579/354028.terrain b/public/terrain/19/858579/354028.terrain new file mode 100644 index 000000000..88baa8969 Binary files /dev/null and b/public/terrain/19/858579/354028.terrain differ diff --git a/public/terrain/19/858579/354029.terrain b/public/terrain/19/858579/354029.terrain new file mode 100644 index 000000000..0c2443951 Binary files /dev/null and b/public/terrain/19/858579/354029.terrain differ diff --git a/public/terrain/19/858579/354030.terrain b/public/terrain/19/858579/354030.terrain new file mode 100644 index 000000000..d91d78bda Binary files /dev/null and b/public/terrain/19/858579/354030.terrain differ diff --git a/public/terrain/19/858579/354031.terrain b/public/terrain/19/858579/354031.terrain new file mode 100644 index 000000000..e3861b27e Binary files /dev/null and b/public/terrain/19/858579/354031.terrain differ diff --git a/public/terrain/19/858579/354032.terrain b/public/terrain/19/858579/354032.terrain new file mode 100644 index 000000000..f4429c9ac Binary files /dev/null and b/public/terrain/19/858579/354032.terrain differ diff --git a/public/terrain/19/858579/354033.terrain b/public/terrain/19/858579/354033.terrain new file mode 100644 index 000000000..85e65e3ef Binary files /dev/null and b/public/terrain/19/858579/354033.terrain differ diff --git a/public/terrain/19/858579/354034.terrain b/public/terrain/19/858579/354034.terrain new file mode 100644 index 000000000..c77efffbe Binary files /dev/null and b/public/terrain/19/858579/354034.terrain differ diff --git a/public/terrain/19/858579/354035.terrain b/public/terrain/19/858579/354035.terrain new file mode 100644 index 000000000..4f181d009 Binary files /dev/null and b/public/terrain/19/858579/354035.terrain differ diff --git a/public/terrain/19/858579/354036.terrain b/public/terrain/19/858579/354036.terrain new file mode 100644 index 000000000..d1f3478b5 Binary files /dev/null and b/public/terrain/19/858579/354036.terrain differ diff --git a/public/terrain/19/858579/354037.terrain b/public/terrain/19/858579/354037.terrain new file mode 100644 index 000000000..1a5c15321 Binary files /dev/null and b/public/terrain/19/858579/354037.terrain differ diff --git a/public/terrain/19/858579/354038.terrain b/public/terrain/19/858579/354038.terrain new file mode 100644 index 000000000..4bfa2d002 Binary files /dev/null and b/public/terrain/19/858579/354038.terrain differ diff --git a/public/terrain/19/858579/354039.terrain b/public/terrain/19/858579/354039.terrain new file mode 100644 index 000000000..f76d81534 Binary files /dev/null and b/public/terrain/19/858579/354039.terrain differ diff --git a/public/terrain/19/858579/354040.terrain b/public/terrain/19/858579/354040.terrain new file mode 100644 index 000000000..35026565d Binary files /dev/null and b/public/terrain/19/858579/354040.terrain differ diff --git a/public/terrain/19/858579/354041.terrain b/public/terrain/19/858579/354041.terrain new file mode 100644 index 000000000..1339fb5bb Binary files /dev/null and b/public/terrain/19/858579/354041.terrain differ diff --git a/public/terrain/19/858579/354042.terrain b/public/terrain/19/858579/354042.terrain new file mode 100644 index 000000000..5a82431ba Binary files /dev/null and b/public/terrain/19/858579/354042.terrain differ diff --git a/public/terrain/19/858579/354043.terrain b/public/terrain/19/858579/354043.terrain new file mode 100644 index 000000000..247c3fc4e Binary files /dev/null and b/public/terrain/19/858579/354043.terrain differ diff --git a/public/terrain/19/858579/354044.terrain b/public/terrain/19/858579/354044.terrain new file mode 100644 index 000000000..db0f7495c Binary files /dev/null and b/public/terrain/19/858579/354044.terrain differ diff --git a/public/terrain/19/858579/354045.terrain b/public/terrain/19/858579/354045.terrain new file mode 100644 index 000000000..b7664b322 Binary files /dev/null and b/public/terrain/19/858579/354045.terrain differ diff --git a/public/terrain/19/858579/354046.terrain b/public/terrain/19/858579/354046.terrain new file mode 100644 index 000000000..109f2f8ee Binary files /dev/null and b/public/terrain/19/858579/354046.terrain differ diff --git a/public/terrain/19/858579/354047.terrain b/public/terrain/19/858579/354047.terrain new file mode 100644 index 000000000..e3e1a7a93 Binary files /dev/null and b/public/terrain/19/858579/354047.terrain differ diff --git a/public/terrain/19/858579/354048.terrain b/public/terrain/19/858579/354048.terrain new file mode 100644 index 000000000..4546dd6ae Binary files /dev/null and b/public/terrain/19/858579/354048.terrain differ diff --git a/public/terrain/19/858579/354049.terrain b/public/terrain/19/858579/354049.terrain new file mode 100644 index 000000000..1c185fcba Binary files /dev/null and b/public/terrain/19/858579/354049.terrain differ diff --git a/public/terrain/19/858579/354050.terrain b/public/terrain/19/858579/354050.terrain new file mode 100644 index 000000000..9a3c62e93 Binary files /dev/null and b/public/terrain/19/858579/354050.terrain differ diff --git a/public/terrain/19/858579/354051.terrain b/public/terrain/19/858579/354051.terrain new file mode 100644 index 000000000..7c05512a1 Binary files /dev/null and b/public/terrain/19/858579/354051.terrain differ diff --git a/public/terrain/19/858579/354052.terrain b/public/terrain/19/858579/354052.terrain new file mode 100644 index 000000000..5ecfe544e Binary files /dev/null and b/public/terrain/19/858579/354052.terrain differ diff --git a/public/terrain/19/858579/354053.terrain b/public/terrain/19/858579/354053.terrain new file mode 100644 index 000000000..07a8e4893 Binary files /dev/null and b/public/terrain/19/858579/354053.terrain differ diff --git a/public/terrain/19/858579/354054.terrain b/public/terrain/19/858579/354054.terrain new file mode 100644 index 000000000..5881723c8 Binary files /dev/null and b/public/terrain/19/858579/354054.terrain differ diff --git a/public/terrain/19/858579/354055.terrain b/public/terrain/19/858579/354055.terrain new file mode 100644 index 000000000..3ac8837cb Binary files /dev/null and b/public/terrain/19/858579/354055.terrain differ diff --git a/public/terrain/19/858579/354056.terrain b/public/terrain/19/858579/354056.terrain new file mode 100644 index 000000000..4e0b3cd95 Binary files /dev/null and b/public/terrain/19/858579/354056.terrain differ diff --git a/public/terrain/19/858579/354057.terrain b/public/terrain/19/858579/354057.terrain new file mode 100644 index 000000000..c16839fd5 Binary files /dev/null and b/public/terrain/19/858579/354057.terrain differ diff --git a/public/terrain/19/858579/354058.terrain b/public/terrain/19/858579/354058.terrain new file mode 100644 index 000000000..63999cb3c Binary files /dev/null and b/public/terrain/19/858579/354058.terrain differ diff --git a/public/terrain/19/858579/354059.terrain b/public/terrain/19/858579/354059.terrain new file mode 100644 index 000000000..1b52b67bf Binary files /dev/null and b/public/terrain/19/858579/354059.terrain differ diff --git a/public/terrain/19/858580/353743.terrain b/public/terrain/19/858580/353743.terrain new file mode 100644 index 000000000..b37fea5ca Binary files /dev/null and b/public/terrain/19/858580/353743.terrain differ diff --git a/public/terrain/19/858580/353744.terrain b/public/terrain/19/858580/353744.terrain new file mode 100644 index 000000000..4854d469d Binary files /dev/null and b/public/terrain/19/858580/353744.terrain differ diff --git a/public/terrain/19/858580/353745.terrain b/public/terrain/19/858580/353745.terrain new file mode 100644 index 000000000..72afd4eb7 Binary files /dev/null and b/public/terrain/19/858580/353745.terrain differ diff --git a/public/terrain/19/858580/353746.terrain b/public/terrain/19/858580/353746.terrain new file mode 100644 index 000000000..d277d18da Binary files /dev/null and b/public/terrain/19/858580/353746.terrain differ diff --git a/public/terrain/19/858580/353747.terrain b/public/terrain/19/858580/353747.terrain new file mode 100644 index 000000000..7118cac47 Binary files /dev/null and b/public/terrain/19/858580/353747.terrain differ diff --git a/public/terrain/19/858580/353748.terrain b/public/terrain/19/858580/353748.terrain new file mode 100644 index 000000000..1af652497 Binary files /dev/null and b/public/terrain/19/858580/353748.terrain differ diff --git a/public/terrain/19/858580/353749.terrain b/public/terrain/19/858580/353749.terrain new file mode 100644 index 000000000..3cedb1963 Binary files /dev/null and b/public/terrain/19/858580/353749.terrain differ diff --git a/public/terrain/19/858580/353750.terrain b/public/terrain/19/858580/353750.terrain new file mode 100644 index 000000000..d7f04d70f Binary files /dev/null and b/public/terrain/19/858580/353750.terrain differ diff --git a/public/terrain/19/858580/353751.terrain b/public/terrain/19/858580/353751.terrain new file mode 100644 index 000000000..0f68c0f55 Binary files /dev/null and b/public/terrain/19/858580/353751.terrain differ diff --git a/public/terrain/19/858580/353752.terrain b/public/terrain/19/858580/353752.terrain new file mode 100644 index 000000000..5eef0b472 Binary files /dev/null and b/public/terrain/19/858580/353752.terrain differ diff --git a/public/terrain/19/858580/353753.terrain b/public/terrain/19/858580/353753.terrain new file mode 100644 index 000000000..2704748aa Binary files /dev/null and b/public/terrain/19/858580/353753.terrain differ diff --git a/public/terrain/19/858580/353754.terrain b/public/terrain/19/858580/353754.terrain new file mode 100644 index 000000000..db0cea2b0 Binary files /dev/null and b/public/terrain/19/858580/353754.terrain differ diff --git a/public/terrain/19/858580/353755.terrain b/public/terrain/19/858580/353755.terrain new file mode 100644 index 000000000..17fad1816 Binary files /dev/null and b/public/terrain/19/858580/353755.terrain differ diff --git a/public/terrain/19/858580/353756.terrain b/public/terrain/19/858580/353756.terrain new file mode 100644 index 000000000..f3ebf351a Binary files /dev/null and b/public/terrain/19/858580/353756.terrain differ diff --git a/public/terrain/19/858580/353757.terrain b/public/terrain/19/858580/353757.terrain new file mode 100644 index 000000000..e90bf8268 Binary files /dev/null and b/public/terrain/19/858580/353757.terrain differ diff --git a/public/terrain/19/858580/353758.terrain b/public/terrain/19/858580/353758.terrain new file mode 100644 index 000000000..747f69b84 Binary files /dev/null and b/public/terrain/19/858580/353758.terrain differ diff --git a/public/terrain/19/858580/353759.terrain b/public/terrain/19/858580/353759.terrain new file mode 100644 index 000000000..7488468d1 Binary files /dev/null and b/public/terrain/19/858580/353759.terrain differ diff --git a/public/terrain/19/858580/353760.terrain b/public/terrain/19/858580/353760.terrain new file mode 100644 index 000000000..cc836e3b8 Binary files /dev/null and b/public/terrain/19/858580/353760.terrain differ diff --git a/public/terrain/19/858580/353761.terrain b/public/terrain/19/858580/353761.terrain new file mode 100644 index 000000000..1110be95d Binary files /dev/null and b/public/terrain/19/858580/353761.terrain differ diff --git a/public/terrain/19/858580/353762.terrain b/public/terrain/19/858580/353762.terrain new file mode 100644 index 000000000..4600151d6 Binary files /dev/null and b/public/terrain/19/858580/353762.terrain differ diff --git a/public/terrain/19/858580/353763.terrain b/public/terrain/19/858580/353763.terrain new file mode 100644 index 000000000..c49ded195 Binary files /dev/null and b/public/terrain/19/858580/353763.terrain differ diff --git a/public/terrain/19/858580/353764.terrain b/public/terrain/19/858580/353764.terrain new file mode 100644 index 000000000..ef2b8993e Binary files /dev/null and b/public/terrain/19/858580/353764.terrain differ diff --git a/public/terrain/19/858580/353765.terrain b/public/terrain/19/858580/353765.terrain new file mode 100644 index 000000000..6c9f1ca6b Binary files /dev/null and b/public/terrain/19/858580/353765.terrain differ diff --git a/public/terrain/19/858580/353766.terrain b/public/terrain/19/858580/353766.terrain new file mode 100644 index 000000000..85e6b4d5f Binary files /dev/null and b/public/terrain/19/858580/353766.terrain differ diff --git a/public/terrain/19/858580/353767.terrain b/public/terrain/19/858580/353767.terrain new file mode 100644 index 000000000..633792aa2 Binary files /dev/null and b/public/terrain/19/858580/353767.terrain differ diff --git a/public/terrain/19/858580/353768.terrain b/public/terrain/19/858580/353768.terrain new file mode 100644 index 000000000..6ae33cb38 Binary files /dev/null and b/public/terrain/19/858580/353768.terrain differ diff --git a/public/terrain/19/858580/353769.terrain b/public/terrain/19/858580/353769.terrain new file mode 100644 index 000000000..2d1ed976a Binary files /dev/null and b/public/terrain/19/858580/353769.terrain differ diff --git a/public/terrain/19/858580/353770.terrain b/public/terrain/19/858580/353770.terrain new file mode 100644 index 000000000..9a73684d5 Binary files /dev/null and b/public/terrain/19/858580/353770.terrain differ diff --git a/public/terrain/19/858580/353771.terrain b/public/terrain/19/858580/353771.terrain new file mode 100644 index 000000000..76b03629b Binary files /dev/null and b/public/terrain/19/858580/353771.terrain differ diff --git a/public/terrain/19/858580/353772.terrain b/public/terrain/19/858580/353772.terrain new file mode 100644 index 000000000..1a9c15427 Binary files /dev/null and b/public/terrain/19/858580/353772.terrain differ diff --git a/public/terrain/19/858580/353773.terrain b/public/terrain/19/858580/353773.terrain new file mode 100644 index 000000000..40e3446e5 Binary files /dev/null and b/public/terrain/19/858580/353773.terrain differ diff --git a/public/terrain/19/858580/353774.terrain b/public/terrain/19/858580/353774.terrain new file mode 100644 index 000000000..acc364ae0 Binary files /dev/null and b/public/terrain/19/858580/353774.terrain differ diff --git a/public/terrain/19/858580/353775.terrain b/public/terrain/19/858580/353775.terrain new file mode 100644 index 000000000..e4d67633c Binary files /dev/null and b/public/terrain/19/858580/353775.terrain differ diff --git a/public/terrain/19/858580/353776.terrain b/public/terrain/19/858580/353776.terrain new file mode 100644 index 000000000..573a6ec8d Binary files /dev/null and b/public/terrain/19/858580/353776.terrain differ diff --git a/public/terrain/19/858580/353777.terrain b/public/terrain/19/858580/353777.terrain new file mode 100644 index 000000000..bbe8ca1c3 Binary files /dev/null and b/public/terrain/19/858580/353777.terrain differ diff --git a/public/terrain/19/858580/353778.terrain b/public/terrain/19/858580/353778.terrain new file mode 100644 index 000000000..562d55378 Binary files /dev/null and b/public/terrain/19/858580/353778.terrain differ diff --git a/public/terrain/19/858580/353779.terrain b/public/terrain/19/858580/353779.terrain new file mode 100644 index 000000000..d50ad88b0 Binary files /dev/null and b/public/terrain/19/858580/353779.terrain differ diff --git a/public/terrain/19/858580/353780.terrain b/public/terrain/19/858580/353780.terrain new file mode 100644 index 000000000..e4d22930c Binary files /dev/null and b/public/terrain/19/858580/353780.terrain differ diff --git a/public/terrain/19/858580/353781.terrain b/public/terrain/19/858580/353781.terrain new file mode 100644 index 000000000..b92555879 Binary files /dev/null and b/public/terrain/19/858580/353781.terrain differ diff --git a/public/terrain/19/858580/353782.terrain b/public/terrain/19/858580/353782.terrain new file mode 100644 index 000000000..4e58f2314 Binary files /dev/null and b/public/terrain/19/858580/353782.terrain differ diff --git a/public/terrain/19/858580/353783.terrain b/public/terrain/19/858580/353783.terrain new file mode 100644 index 000000000..e6ce36226 Binary files /dev/null and b/public/terrain/19/858580/353783.terrain differ diff --git a/public/terrain/19/858580/353784.terrain b/public/terrain/19/858580/353784.terrain new file mode 100644 index 000000000..08ea8ecb6 Binary files /dev/null and b/public/terrain/19/858580/353784.terrain differ diff --git a/public/terrain/19/858580/353785.terrain b/public/terrain/19/858580/353785.terrain new file mode 100644 index 000000000..2704c6dd9 Binary files /dev/null and b/public/terrain/19/858580/353785.terrain differ diff --git a/public/terrain/19/858580/353786.terrain b/public/terrain/19/858580/353786.terrain new file mode 100644 index 000000000..9956d37d7 Binary files /dev/null and b/public/terrain/19/858580/353786.terrain differ diff --git a/public/terrain/19/858580/353787.terrain b/public/terrain/19/858580/353787.terrain new file mode 100644 index 000000000..dea94d2ae Binary files /dev/null and b/public/terrain/19/858580/353787.terrain differ diff --git a/public/terrain/19/858580/353788.terrain b/public/terrain/19/858580/353788.terrain new file mode 100644 index 000000000..92ee78935 Binary files /dev/null and b/public/terrain/19/858580/353788.terrain differ diff --git a/public/terrain/19/858580/353789.terrain b/public/terrain/19/858580/353789.terrain new file mode 100644 index 000000000..d563aa005 Binary files /dev/null and b/public/terrain/19/858580/353789.terrain differ diff --git a/public/terrain/19/858580/353790.terrain b/public/terrain/19/858580/353790.terrain new file mode 100644 index 000000000..ccdd3d642 Binary files /dev/null and b/public/terrain/19/858580/353790.terrain differ diff --git a/public/terrain/19/858580/353791.terrain b/public/terrain/19/858580/353791.terrain new file mode 100644 index 000000000..7d29713dd Binary files /dev/null and b/public/terrain/19/858580/353791.terrain differ diff --git a/public/terrain/19/858580/353792.terrain b/public/terrain/19/858580/353792.terrain new file mode 100644 index 000000000..5fb7c579a Binary files /dev/null and b/public/terrain/19/858580/353792.terrain differ diff --git a/public/terrain/19/858580/353793.terrain b/public/terrain/19/858580/353793.terrain new file mode 100644 index 000000000..1e3d2ac1d Binary files /dev/null and b/public/terrain/19/858580/353793.terrain differ diff --git a/public/terrain/19/858580/353794.terrain b/public/terrain/19/858580/353794.terrain new file mode 100644 index 000000000..e8e77a204 Binary files /dev/null and b/public/terrain/19/858580/353794.terrain differ diff --git a/public/terrain/19/858580/353795.terrain b/public/terrain/19/858580/353795.terrain new file mode 100644 index 000000000..c1a8dc88a Binary files /dev/null and b/public/terrain/19/858580/353795.terrain differ diff --git a/public/terrain/19/858580/353796.terrain b/public/terrain/19/858580/353796.terrain new file mode 100644 index 000000000..6d8853260 Binary files /dev/null and b/public/terrain/19/858580/353796.terrain differ diff --git a/public/terrain/19/858580/353797.terrain b/public/terrain/19/858580/353797.terrain new file mode 100644 index 000000000..1a1b9d3b0 Binary files /dev/null and b/public/terrain/19/858580/353797.terrain differ diff --git a/public/terrain/19/858580/353798.terrain b/public/terrain/19/858580/353798.terrain new file mode 100644 index 000000000..d434a7329 Binary files /dev/null and b/public/terrain/19/858580/353798.terrain differ diff --git a/public/terrain/19/858580/353799.terrain b/public/terrain/19/858580/353799.terrain new file mode 100644 index 000000000..2dd5d859b Binary files /dev/null and b/public/terrain/19/858580/353799.terrain differ diff --git a/public/terrain/19/858580/353800.terrain b/public/terrain/19/858580/353800.terrain new file mode 100644 index 000000000..daf7106f6 Binary files /dev/null and b/public/terrain/19/858580/353800.terrain differ diff --git a/public/terrain/19/858580/353801.terrain b/public/terrain/19/858580/353801.terrain new file mode 100644 index 000000000..25d3a3642 Binary files /dev/null and b/public/terrain/19/858580/353801.terrain differ diff --git a/public/terrain/19/858580/353802.terrain b/public/terrain/19/858580/353802.terrain new file mode 100644 index 000000000..3d7b08486 Binary files /dev/null and b/public/terrain/19/858580/353802.terrain differ diff --git a/public/terrain/19/858580/353803.terrain b/public/terrain/19/858580/353803.terrain new file mode 100644 index 000000000..25c00dd77 Binary files /dev/null and b/public/terrain/19/858580/353803.terrain differ diff --git a/public/terrain/19/858580/353804.terrain b/public/terrain/19/858580/353804.terrain new file mode 100644 index 000000000..e44015ec5 Binary files /dev/null and b/public/terrain/19/858580/353804.terrain differ diff --git a/public/terrain/19/858580/353805.terrain b/public/terrain/19/858580/353805.terrain new file mode 100644 index 000000000..7e68e69ab Binary files /dev/null and b/public/terrain/19/858580/353805.terrain differ diff --git a/public/terrain/19/858580/353806.terrain b/public/terrain/19/858580/353806.terrain new file mode 100644 index 000000000..1d71d7459 Binary files /dev/null and b/public/terrain/19/858580/353806.terrain differ diff --git a/public/terrain/19/858580/353807.terrain b/public/terrain/19/858580/353807.terrain new file mode 100644 index 000000000..0863fa1b6 Binary files /dev/null and b/public/terrain/19/858580/353807.terrain differ diff --git a/public/terrain/19/858580/353808.terrain b/public/terrain/19/858580/353808.terrain new file mode 100644 index 000000000..d00fd1587 Binary files /dev/null and b/public/terrain/19/858580/353808.terrain differ diff --git a/public/terrain/19/858580/353809.terrain b/public/terrain/19/858580/353809.terrain new file mode 100644 index 000000000..83e5d6f01 Binary files /dev/null and b/public/terrain/19/858580/353809.terrain differ diff --git a/public/terrain/19/858580/353810.terrain b/public/terrain/19/858580/353810.terrain new file mode 100644 index 000000000..b6f023a58 Binary files /dev/null and b/public/terrain/19/858580/353810.terrain differ diff --git a/public/terrain/19/858580/353811.terrain b/public/terrain/19/858580/353811.terrain new file mode 100644 index 000000000..a4ea84711 Binary files /dev/null and b/public/terrain/19/858580/353811.terrain differ diff --git a/public/terrain/19/858580/353812.terrain b/public/terrain/19/858580/353812.terrain new file mode 100644 index 000000000..5eb753dd2 Binary files /dev/null and b/public/terrain/19/858580/353812.terrain differ diff --git a/public/terrain/19/858580/353813.terrain b/public/terrain/19/858580/353813.terrain new file mode 100644 index 000000000..29c39d56a Binary files /dev/null and b/public/terrain/19/858580/353813.terrain differ diff --git a/public/terrain/19/858580/353814.terrain b/public/terrain/19/858580/353814.terrain new file mode 100644 index 000000000..657d2a1a5 Binary files /dev/null and b/public/terrain/19/858580/353814.terrain differ diff --git a/public/terrain/19/858580/353815.terrain b/public/terrain/19/858580/353815.terrain new file mode 100644 index 000000000..847270140 Binary files /dev/null and b/public/terrain/19/858580/353815.terrain differ diff --git a/public/terrain/19/858580/353816.terrain b/public/terrain/19/858580/353816.terrain new file mode 100644 index 000000000..4faac8132 Binary files /dev/null and b/public/terrain/19/858580/353816.terrain differ diff --git a/public/terrain/19/858580/353817.terrain b/public/terrain/19/858580/353817.terrain new file mode 100644 index 000000000..30cec3db4 Binary files /dev/null and b/public/terrain/19/858580/353817.terrain differ diff --git a/public/terrain/19/858580/353818.terrain b/public/terrain/19/858580/353818.terrain new file mode 100644 index 000000000..5fc84c037 Binary files /dev/null and b/public/terrain/19/858580/353818.terrain differ diff --git a/public/terrain/19/858580/353819.terrain b/public/terrain/19/858580/353819.terrain new file mode 100644 index 000000000..5c14edf73 Binary files /dev/null and b/public/terrain/19/858580/353819.terrain differ diff --git a/public/terrain/19/858580/353820.terrain b/public/terrain/19/858580/353820.terrain new file mode 100644 index 000000000..4834eb142 Binary files /dev/null and b/public/terrain/19/858580/353820.terrain differ diff --git a/public/terrain/19/858580/353821.terrain b/public/terrain/19/858580/353821.terrain new file mode 100644 index 000000000..dc7c20732 Binary files /dev/null and b/public/terrain/19/858580/353821.terrain differ diff --git a/public/terrain/19/858580/353822.terrain b/public/terrain/19/858580/353822.terrain new file mode 100644 index 000000000..c9181ed68 Binary files /dev/null and b/public/terrain/19/858580/353822.terrain differ diff --git a/public/terrain/19/858580/353823.terrain b/public/terrain/19/858580/353823.terrain new file mode 100644 index 000000000..cbee072b1 Binary files /dev/null and b/public/terrain/19/858580/353823.terrain differ diff --git a/public/terrain/19/858580/353824.terrain b/public/terrain/19/858580/353824.terrain new file mode 100644 index 000000000..29cd41fae Binary files /dev/null and b/public/terrain/19/858580/353824.terrain differ diff --git a/public/terrain/19/858580/353825.terrain b/public/terrain/19/858580/353825.terrain new file mode 100644 index 000000000..7c9d252bb Binary files /dev/null and b/public/terrain/19/858580/353825.terrain differ diff --git a/public/terrain/19/858580/353826.terrain b/public/terrain/19/858580/353826.terrain new file mode 100644 index 000000000..5e85a93e8 Binary files /dev/null and b/public/terrain/19/858580/353826.terrain differ diff --git a/public/terrain/19/858580/353827.terrain b/public/terrain/19/858580/353827.terrain new file mode 100644 index 000000000..2654b0d09 Binary files /dev/null and b/public/terrain/19/858580/353827.terrain differ diff --git a/public/terrain/19/858580/353828.terrain b/public/terrain/19/858580/353828.terrain new file mode 100644 index 000000000..0db470da0 Binary files /dev/null and b/public/terrain/19/858580/353828.terrain differ diff --git a/public/terrain/19/858580/353829.terrain b/public/terrain/19/858580/353829.terrain new file mode 100644 index 000000000..c3537d55d Binary files /dev/null and b/public/terrain/19/858580/353829.terrain differ diff --git a/public/terrain/19/858580/353830.terrain b/public/terrain/19/858580/353830.terrain new file mode 100644 index 000000000..9ab332d99 Binary files /dev/null and b/public/terrain/19/858580/353830.terrain differ diff --git a/public/terrain/19/858580/353831.terrain b/public/terrain/19/858580/353831.terrain new file mode 100644 index 000000000..bbba23597 Binary files /dev/null and b/public/terrain/19/858580/353831.terrain differ diff --git a/public/terrain/19/858580/353832.terrain b/public/terrain/19/858580/353832.terrain new file mode 100644 index 000000000..b75f3a30b Binary files /dev/null and b/public/terrain/19/858580/353832.terrain differ diff --git a/public/terrain/19/858580/353833.terrain b/public/terrain/19/858580/353833.terrain new file mode 100644 index 000000000..66d1f28a2 Binary files /dev/null and b/public/terrain/19/858580/353833.terrain differ diff --git a/public/terrain/19/858580/353834.terrain b/public/terrain/19/858580/353834.terrain new file mode 100644 index 000000000..c193fed0a Binary files /dev/null and b/public/terrain/19/858580/353834.terrain differ diff --git a/public/terrain/19/858580/353835.terrain b/public/terrain/19/858580/353835.terrain new file mode 100644 index 000000000..1bb4c651c Binary files /dev/null and b/public/terrain/19/858580/353835.terrain differ diff --git a/public/terrain/19/858580/353836.terrain b/public/terrain/19/858580/353836.terrain new file mode 100644 index 000000000..4c4a9a0ff Binary files /dev/null and b/public/terrain/19/858580/353836.terrain differ diff --git a/public/terrain/19/858580/353837.terrain b/public/terrain/19/858580/353837.terrain new file mode 100644 index 000000000..43e38c630 Binary files /dev/null and b/public/terrain/19/858580/353837.terrain differ diff --git a/public/terrain/19/858580/353838.terrain b/public/terrain/19/858580/353838.terrain new file mode 100644 index 000000000..f8e1e99d4 Binary files /dev/null and b/public/terrain/19/858580/353838.terrain differ diff --git a/public/terrain/19/858580/353839.terrain b/public/terrain/19/858580/353839.terrain new file mode 100644 index 000000000..ec676adc9 Binary files /dev/null and b/public/terrain/19/858580/353839.terrain differ diff --git a/public/terrain/19/858580/353840.terrain b/public/terrain/19/858580/353840.terrain new file mode 100644 index 000000000..221857fb0 Binary files /dev/null and b/public/terrain/19/858580/353840.terrain differ diff --git a/public/terrain/19/858580/353841.terrain b/public/terrain/19/858580/353841.terrain new file mode 100644 index 000000000..ab3f17cd2 Binary files /dev/null and b/public/terrain/19/858580/353841.terrain differ diff --git a/public/terrain/19/858580/353842.terrain b/public/terrain/19/858580/353842.terrain new file mode 100644 index 000000000..9cc07b67e Binary files /dev/null and b/public/terrain/19/858580/353842.terrain differ diff --git a/public/terrain/19/858580/353843.terrain b/public/terrain/19/858580/353843.terrain new file mode 100644 index 000000000..7f0b45bae Binary files /dev/null and b/public/terrain/19/858580/353843.terrain differ diff --git a/public/terrain/19/858580/353844.terrain b/public/terrain/19/858580/353844.terrain new file mode 100644 index 000000000..0f446ec65 Binary files /dev/null and b/public/terrain/19/858580/353844.terrain differ diff --git a/public/terrain/19/858580/353845.terrain b/public/terrain/19/858580/353845.terrain new file mode 100644 index 000000000..fb933a7bb Binary files /dev/null and b/public/terrain/19/858580/353845.terrain differ diff --git a/public/terrain/19/858580/353846.terrain b/public/terrain/19/858580/353846.terrain new file mode 100644 index 000000000..41b038818 Binary files /dev/null and b/public/terrain/19/858580/353846.terrain differ diff --git a/public/terrain/19/858580/353847.terrain b/public/terrain/19/858580/353847.terrain new file mode 100644 index 000000000..115a69515 Binary files /dev/null and b/public/terrain/19/858580/353847.terrain differ diff --git a/public/terrain/19/858580/353848.terrain b/public/terrain/19/858580/353848.terrain new file mode 100644 index 000000000..6404983f7 Binary files /dev/null and b/public/terrain/19/858580/353848.terrain differ diff --git a/public/terrain/19/858580/353849.terrain b/public/terrain/19/858580/353849.terrain new file mode 100644 index 000000000..25cd043ce Binary files /dev/null and b/public/terrain/19/858580/353849.terrain differ diff --git a/public/terrain/19/858580/353850.terrain b/public/terrain/19/858580/353850.terrain new file mode 100644 index 000000000..f2d8327b3 Binary files /dev/null and b/public/terrain/19/858580/353850.terrain differ diff --git a/public/terrain/19/858580/353851.terrain b/public/terrain/19/858580/353851.terrain new file mode 100644 index 000000000..af3ebf3dc Binary files /dev/null and b/public/terrain/19/858580/353851.terrain differ diff --git a/public/terrain/19/858580/353852.terrain b/public/terrain/19/858580/353852.terrain new file mode 100644 index 000000000..b5fb56e8d Binary files /dev/null and b/public/terrain/19/858580/353852.terrain differ diff --git a/public/terrain/19/858580/353853.terrain b/public/terrain/19/858580/353853.terrain new file mode 100644 index 000000000..4c7971ff7 Binary files /dev/null and b/public/terrain/19/858580/353853.terrain differ diff --git a/public/terrain/19/858580/353854.terrain b/public/terrain/19/858580/353854.terrain new file mode 100644 index 000000000..292e523b6 Binary files /dev/null and b/public/terrain/19/858580/353854.terrain differ diff --git a/public/terrain/19/858580/353855.terrain b/public/terrain/19/858580/353855.terrain new file mode 100644 index 000000000..e2b9d6ade Binary files /dev/null and b/public/terrain/19/858580/353855.terrain differ diff --git a/public/terrain/19/858580/353856.terrain b/public/terrain/19/858580/353856.terrain new file mode 100644 index 000000000..b43217350 Binary files /dev/null and b/public/terrain/19/858580/353856.terrain differ diff --git a/public/terrain/19/858580/353857.terrain b/public/terrain/19/858580/353857.terrain new file mode 100644 index 000000000..c26295d37 Binary files /dev/null and b/public/terrain/19/858580/353857.terrain differ diff --git a/public/terrain/19/858580/353858.terrain b/public/terrain/19/858580/353858.terrain new file mode 100644 index 000000000..32b979547 Binary files /dev/null and b/public/terrain/19/858580/353858.terrain differ diff --git a/public/terrain/19/858580/353859.terrain b/public/terrain/19/858580/353859.terrain new file mode 100644 index 000000000..2c876653a Binary files /dev/null and b/public/terrain/19/858580/353859.terrain differ diff --git a/public/terrain/19/858580/353860.terrain b/public/terrain/19/858580/353860.terrain new file mode 100644 index 000000000..428bf594e Binary files /dev/null and b/public/terrain/19/858580/353860.terrain differ diff --git a/public/terrain/19/858580/353861.terrain b/public/terrain/19/858580/353861.terrain new file mode 100644 index 000000000..b17e65de1 Binary files /dev/null and b/public/terrain/19/858580/353861.terrain differ diff --git a/public/terrain/19/858580/353862.terrain b/public/terrain/19/858580/353862.terrain new file mode 100644 index 000000000..796993853 Binary files /dev/null and b/public/terrain/19/858580/353862.terrain differ diff --git a/public/terrain/19/858580/353863.terrain b/public/terrain/19/858580/353863.terrain new file mode 100644 index 000000000..103526970 Binary files /dev/null and b/public/terrain/19/858580/353863.terrain differ diff --git a/public/terrain/19/858580/353864.terrain b/public/terrain/19/858580/353864.terrain new file mode 100644 index 000000000..24e4d0b5f Binary files /dev/null and b/public/terrain/19/858580/353864.terrain differ diff --git a/public/terrain/19/858580/353865.terrain b/public/terrain/19/858580/353865.terrain new file mode 100644 index 000000000..8c83378a6 Binary files /dev/null and b/public/terrain/19/858580/353865.terrain differ diff --git a/public/terrain/19/858580/353866.terrain b/public/terrain/19/858580/353866.terrain new file mode 100644 index 000000000..886bd9e0e Binary files /dev/null and b/public/terrain/19/858580/353866.terrain differ diff --git a/public/terrain/19/858580/353867.terrain b/public/terrain/19/858580/353867.terrain new file mode 100644 index 000000000..d72e0945b Binary files /dev/null and b/public/terrain/19/858580/353867.terrain differ diff --git a/public/terrain/19/858580/353868.terrain b/public/terrain/19/858580/353868.terrain new file mode 100644 index 000000000..2a76aaffb Binary files /dev/null and b/public/terrain/19/858580/353868.terrain differ diff --git a/public/terrain/19/858580/353869.terrain b/public/terrain/19/858580/353869.terrain new file mode 100644 index 000000000..4dd3ed3d8 Binary files /dev/null and b/public/terrain/19/858580/353869.terrain differ diff --git a/public/terrain/19/858580/353870.terrain b/public/terrain/19/858580/353870.terrain new file mode 100644 index 000000000..cb4325816 Binary files /dev/null and b/public/terrain/19/858580/353870.terrain differ diff --git a/public/terrain/19/858580/353871.terrain b/public/terrain/19/858580/353871.terrain new file mode 100644 index 000000000..8c6e3573b Binary files /dev/null and b/public/terrain/19/858580/353871.terrain differ diff --git a/public/terrain/19/858580/353872.terrain b/public/terrain/19/858580/353872.terrain new file mode 100644 index 000000000..d3e9cf88d Binary files /dev/null and b/public/terrain/19/858580/353872.terrain differ diff --git a/public/terrain/19/858580/353873.terrain b/public/terrain/19/858580/353873.terrain new file mode 100644 index 000000000..16b948cdf Binary files /dev/null and b/public/terrain/19/858580/353873.terrain differ diff --git a/public/terrain/19/858580/353874.terrain b/public/terrain/19/858580/353874.terrain new file mode 100644 index 000000000..6a50cbc00 Binary files /dev/null and b/public/terrain/19/858580/353874.terrain differ diff --git a/public/terrain/19/858580/353875.terrain b/public/terrain/19/858580/353875.terrain new file mode 100644 index 000000000..b29267a9d Binary files /dev/null and b/public/terrain/19/858580/353875.terrain differ diff --git a/public/terrain/19/858580/353876.terrain b/public/terrain/19/858580/353876.terrain new file mode 100644 index 000000000..4ca62e3fd Binary files /dev/null and b/public/terrain/19/858580/353876.terrain differ diff --git a/public/terrain/19/858580/353877.terrain b/public/terrain/19/858580/353877.terrain new file mode 100644 index 000000000..913ad0706 Binary files /dev/null and b/public/terrain/19/858580/353877.terrain differ diff --git a/public/terrain/19/858580/353878.terrain b/public/terrain/19/858580/353878.terrain new file mode 100644 index 000000000..c9e0f3104 Binary files /dev/null and b/public/terrain/19/858580/353878.terrain differ diff --git a/public/terrain/19/858580/353879.terrain b/public/terrain/19/858580/353879.terrain new file mode 100644 index 000000000..80e60e84a Binary files /dev/null and b/public/terrain/19/858580/353879.terrain differ diff --git a/public/terrain/19/858580/353880.terrain b/public/terrain/19/858580/353880.terrain new file mode 100644 index 000000000..4b14d17cc Binary files /dev/null and b/public/terrain/19/858580/353880.terrain differ diff --git a/public/terrain/19/858580/353881.terrain b/public/terrain/19/858580/353881.terrain new file mode 100644 index 000000000..75f7e40ae Binary files /dev/null and b/public/terrain/19/858580/353881.terrain differ diff --git a/public/terrain/19/858580/353882.terrain b/public/terrain/19/858580/353882.terrain new file mode 100644 index 000000000..a7d3c1c10 Binary files /dev/null and b/public/terrain/19/858580/353882.terrain differ diff --git a/public/terrain/19/858580/353883.terrain b/public/terrain/19/858580/353883.terrain new file mode 100644 index 000000000..38458173f Binary files /dev/null and b/public/terrain/19/858580/353883.terrain differ diff --git a/public/terrain/19/858580/353884.terrain b/public/terrain/19/858580/353884.terrain new file mode 100644 index 000000000..3f680e459 Binary files /dev/null and b/public/terrain/19/858580/353884.terrain differ diff --git a/public/terrain/19/858580/353885.terrain b/public/terrain/19/858580/353885.terrain new file mode 100644 index 000000000..516b6fa99 Binary files /dev/null and b/public/terrain/19/858580/353885.terrain differ diff --git a/public/terrain/19/858580/353886.terrain b/public/terrain/19/858580/353886.terrain new file mode 100644 index 000000000..20d595c52 Binary files /dev/null and b/public/terrain/19/858580/353886.terrain differ diff --git a/public/terrain/19/858580/353887.terrain b/public/terrain/19/858580/353887.terrain new file mode 100644 index 000000000..0757d89c9 Binary files /dev/null and b/public/terrain/19/858580/353887.terrain differ diff --git a/public/terrain/19/858580/353888.terrain b/public/terrain/19/858580/353888.terrain new file mode 100644 index 000000000..6535bf40f Binary files /dev/null and b/public/terrain/19/858580/353888.terrain differ diff --git a/public/terrain/19/858580/353889.terrain b/public/terrain/19/858580/353889.terrain new file mode 100644 index 000000000..fa92163b0 Binary files /dev/null and b/public/terrain/19/858580/353889.terrain differ diff --git a/public/terrain/19/858580/353890.terrain b/public/terrain/19/858580/353890.terrain new file mode 100644 index 000000000..7c0b81ac9 Binary files /dev/null and b/public/terrain/19/858580/353890.terrain differ diff --git a/public/terrain/19/858580/353891.terrain b/public/terrain/19/858580/353891.terrain new file mode 100644 index 000000000..79a0495f5 Binary files /dev/null and b/public/terrain/19/858580/353891.terrain differ diff --git a/public/terrain/19/858580/353892.terrain b/public/terrain/19/858580/353892.terrain new file mode 100644 index 000000000..ac7ba3f27 Binary files /dev/null and b/public/terrain/19/858580/353892.terrain differ diff --git a/public/terrain/19/858580/353893.terrain b/public/terrain/19/858580/353893.terrain new file mode 100644 index 000000000..3a558fb8a Binary files /dev/null and b/public/terrain/19/858580/353893.terrain differ diff --git a/public/terrain/19/858580/353894.terrain b/public/terrain/19/858580/353894.terrain new file mode 100644 index 000000000..9ff99e809 Binary files /dev/null and b/public/terrain/19/858580/353894.terrain differ diff --git a/public/terrain/19/858580/353895.terrain b/public/terrain/19/858580/353895.terrain new file mode 100644 index 000000000..22820efe1 Binary files /dev/null and b/public/terrain/19/858580/353895.terrain differ diff --git a/public/terrain/19/858580/353896.terrain b/public/terrain/19/858580/353896.terrain new file mode 100644 index 000000000..134db9b3b Binary files /dev/null and b/public/terrain/19/858580/353896.terrain differ diff --git a/public/terrain/19/858580/353897.terrain b/public/terrain/19/858580/353897.terrain new file mode 100644 index 000000000..d27f0f7be Binary files /dev/null and b/public/terrain/19/858580/353897.terrain differ diff --git a/public/terrain/19/858580/353898.terrain b/public/terrain/19/858580/353898.terrain new file mode 100644 index 000000000..6fd2bcd35 Binary files /dev/null and b/public/terrain/19/858580/353898.terrain differ diff --git a/public/terrain/19/858580/353899.terrain b/public/terrain/19/858580/353899.terrain new file mode 100644 index 000000000..f1f742358 Binary files /dev/null and b/public/terrain/19/858580/353899.terrain differ diff --git a/public/terrain/19/858580/353900.terrain b/public/terrain/19/858580/353900.terrain new file mode 100644 index 000000000..384309d49 Binary files /dev/null and b/public/terrain/19/858580/353900.terrain differ diff --git a/public/terrain/19/858580/353901.terrain b/public/terrain/19/858580/353901.terrain new file mode 100644 index 000000000..463375085 Binary files /dev/null and b/public/terrain/19/858580/353901.terrain differ diff --git a/public/terrain/19/858580/353902.terrain b/public/terrain/19/858580/353902.terrain new file mode 100644 index 000000000..fd330069b Binary files /dev/null and b/public/terrain/19/858580/353902.terrain differ diff --git a/public/terrain/19/858580/353903.terrain b/public/terrain/19/858580/353903.terrain new file mode 100644 index 000000000..264abb48d Binary files /dev/null and b/public/terrain/19/858580/353903.terrain differ diff --git a/public/terrain/19/858580/353904.terrain b/public/terrain/19/858580/353904.terrain new file mode 100644 index 000000000..533496ad1 Binary files /dev/null and b/public/terrain/19/858580/353904.terrain differ diff --git a/public/terrain/19/858580/353905.terrain b/public/terrain/19/858580/353905.terrain new file mode 100644 index 000000000..d346c555e Binary files /dev/null and b/public/terrain/19/858580/353905.terrain differ diff --git a/public/terrain/19/858580/353906.terrain b/public/terrain/19/858580/353906.terrain new file mode 100644 index 000000000..14fd5778d Binary files /dev/null and b/public/terrain/19/858580/353906.terrain differ diff --git a/public/terrain/19/858580/353907.terrain b/public/terrain/19/858580/353907.terrain new file mode 100644 index 000000000..44a85b799 Binary files /dev/null and b/public/terrain/19/858580/353907.terrain differ diff --git a/public/terrain/19/858580/353908.terrain b/public/terrain/19/858580/353908.terrain new file mode 100644 index 000000000..93417ab15 Binary files /dev/null and b/public/terrain/19/858580/353908.terrain differ diff --git a/public/terrain/19/858580/353909.terrain b/public/terrain/19/858580/353909.terrain new file mode 100644 index 000000000..4147324f9 Binary files /dev/null and b/public/terrain/19/858580/353909.terrain differ diff --git a/public/terrain/19/858580/353910.terrain b/public/terrain/19/858580/353910.terrain new file mode 100644 index 000000000..9d0e87dcf Binary files /dev/null and b/public/terrain/19/858580/353910.terrain differ diff --git a/public/terrain/19/858580/353911.terrain b/public/terrain/19/858580/353911.terrain new file mode 100644 index 000000000..1cef01ef8 Binary files /dev/null and b/public/terrain/19/858580/353911.terrain differ diff --git a/public/terrain/19/858580/353912.terrain b/public/terrain/19/858580/353912.terrain new file mode 100644 index 000000000..ed3c42fcb Binary files /dev/null and b/public/terrain/19/858580/353912.terrain differ diff --git a/public/terrain/19/858580/353913.terrain b/public/terrain/19/858580/353913.terrain new file mode 100644 index 000000000..6c0c5db98 Binary files /dev/null and b/public/terrain/19/858580/353913.terrain differ diff --git a/public/terrain/19/858580/353914.terrain b/public/terrain/19/858580/353914.terrain new file mode 100644 index 000000000..bf7814a4d Binary files /dev/null and b/public/terrain/19/858580/353914.terrain differ diff --git a/public/terrain/19/858580/353915.terrain b/public/terrain/19/858580/353915.terrain new file mode 100644 index 000000000..023b01fbb Binary files /dev/null and b/public/terrain/19/858580/353915.terrain differ diff --git a/public/terrain/19/858580/353916.terrain b/public/terrain/19/858580/353916.terrain new file mode 100644 index 000000000..86105d59f Binary files /dev/null and b/public/terrain/19/858580/353916.terrain differ diff --git a/public/terrain/19/858580/353917.terrain b/public/terrain/19/858580/353917.terrain new file mode 100644 index 000000000..7f96a1eb0 Binary files /dev/null and b/public/terrain/19/858580/353917.terrain differ diff --git a/public/terrain/19/858580/353918.terrain b/public/terrain/19/858580/353918.terrain new file mode 100644 index 000000000..8a27dbd36 Binary files /dev/null and b/public/terrain/19/858580/353918.terrain differ diff --git a/public/terrain/19/858580/353919.terrain b/public/terrain/19/858580/353919.terrain new file mode 100644 index 000000000..1f1809230 Binary files /dev/null and b/public/terrain/19/858580/353919.terrain differ diff --git a/public/terrain/19/858580/353920.terrain b/public/terrain/19/858580/353920.terrain new file mode 100644 index 000000000..223edd214 Binary files /dev/null and b/public/terrain/19/858580/353920.terrain differ diff --git a/public/terrain/19/858580/353921.terrain b/public/terrain/19/858580/353921.terrain new file mode 100644 index 000000000..0161fef1c Binary files /dev/null and b/public/terrain/19/858580/353921.terrain differ diff --git a/public/terrain/19/858580/353922.terrain b/public/terrain/19/858580/353922.terrain new file mode 100644 index 000000000..ec37fe571 Binary files /dev/null and b/public/terrain/19/858580/353922.terrain differ diff --git a/public/terrain/19/858580/353923.terrain b/public/terrain/19/858580/353923.terrain new file mode 100644 index 000000000..eda91809f Binary files /dev/null and b/public/terrain/19/858580/353923.terrain differ diff --git a/public/terrain/19/858580/353924.terrain b/public/terrain/19/858580/353924.terrain new file mode 100644 index 000000000..1a7ef508e Binary files /dev/null and b/public/terrain/19/858580/353924.terrain differ diff --git a/public/terrain/19/858580/353925.terrain b/public/terrain/19/858580/353925.terrain new file mode 100644 index 000000000..f28876323 Binary files /dev/null and b/public/terrain/19/858580/353925.terrain differ diff --git a/public/terrain/19/858580/353926.terrain b/public/terrain/19/858580/353926.terrain new file mode 100644 index 000000000..80343e1e1 Binary files /dev/null and b/public/terrain/19/858580/353926.terrain differ diff --git a/public/terrain/19/858580/353927.terrain b/public/terrain/19/858580/353927.terrain new file mode 100644 index 000000000..0163e1d60 Binary files /dev/null and b/public/terrain/19/858580/353927.terrain differ diff --git a/public/terrain/19/858580/353928.terrain b/public/terrain/19/858580/353928.terrain new file mode 100644 index 000000000..0e63f4d66 Binary files /dev/null and b/public/terrain/19/858580/353928.terrain differ diff --git a/public/terrain/19/858580/353929.terrain b/public/terrain/19/858580/353929.terrain new file mode 100644 index 000000000..9736f329d Binary files /dev/null and b/public/terrain/19/858580/353929.terrain differ diff --git a/public/terrain/19/858580/353930.terrain b/public/terrain/19/858580/353930.terrain new file mode 100644 index 000000000..42b18b805 Binary files /dev/null and b/public/terrain/19/858580/353930.terrain differ diff --git a/public/terrain/19/858580/353931.terrain b/public/terrain/19/858580/353931.terrain new file mode 100644 index 000000000..c53999db6 Binary files /dev/null and b/public/terrain/19/858580/353931.terrain differ diff --git a/public/terrain/19/858580/353932.terrain b/public/terrain/19/858580/353932.terrain new file mode 100644 index 000000000..4d364dcad Binary files /dev/null and b/public/terrain/19/858580/353932.terrain differ diff --git a/public/terrain/19/858580/353933.terrain b/public/terrain/19/858580/353933.terrain new file mode 100644 index 000000000..0d4fd0455 Binary files /dev/null and b/public/terrain/19/858580/353933.terrain differ diff --git a/public/terrain/19/858580/353934.terrain b/public/terrain/19/858580/353934.terrain new file mode 100644 index 000000000..179d4409c Binary files /dev/null and b/public/terrain/19/858580/353934.terrain differ diff --git a/public/terrain/19/858580/353935.terrain b/public/terrain/19/858580/353935.terrain new file mode 100644 index 000000000..aa3c98072 Binary files /dev/null and b/public/terrain/19/858580/353935.terrain differ diff --git a/public/terrain/19/858580/353936.terrain b/public/terrain/19/858580/353936.terrain new file mode 100644 index 000000000..9a20be507 Binary files /dev/null and b/public/terrain/19/858580/353936.terrain differ diff --git a/public/terrain/19/858580/353937.terrain b/public/terrain/19/858580/353937.terrain new file mode 100644 index 000000000..484fccb70 Binary files /dev/null and b/public/terrain/19/858580/353937.terrain differ diff --git a/public/terrain/19/858580/353938.terrain b/public/terrain/19/858580/353938.terrain new file mode 100644 index 000000000..f1bbdaf74 Binary files /dev/null and b/public/terrain/19/858580/353938.terrain differ diff --git a/public/terrain/19/858580/353939.terrain b/public/terrain/19/858580/353939.terrain new file mode 100644 index 000000000..f8a87bb2c Binary files /dev/null and b/public/terrain/19/858580/353939.terrain differ diff --git a/public/terrain/19/858580/353940.terrain b/public/terrain/19/858580/353940.terrain new file mode 100644 index 000000000..17048800f Binary files /dev/null and b/public/terrain/19/858580/353940.terrain differ diff --git a/public/terrain/19/858580/353941.terrain b/public/terrain/19/858580/353941.terrain new file mode 100644 index 000000000..6b3efe44f Binary files /dev/null and b/public/terrain/19/858580/353941.terrain differ diff --git a/public/terrain/19/858580/353942.terrain b/public/terrain/19/858580/353942.terrain new file mode 100644 index 000000000..fd5fc6f9b Binary files /dev/null and b/public/terrain/19/858580/353942.terrain differ diff --git a/public/terrain/19/858580/353943.terrain b/public/terrain/19/858580/353943.terrain new file mode 100644 index 000000000..64a249b2e Binary files /dev/null and b/public/terrain/19/858580/353943.terrain differ diff --git a/public/terrain/19/858580/353944.terrain b/public/terrain/19/858580/353944.terrain new file mode 100644 index 000000000..39e0339c5 Binary files /dev/null and b/public/terrain/19/858580/353944.terrain differ diff --git a/public/terrain/19/858580/353945.terrain b/public/terrain/19/858580/353945.terrain new file mode 100644 index 000000000..46e44a699 Binary files /dev/null and b/public/terrain/19/858580/353945.terrain differ diff --git a/public/terrain/19/858580/353946.terrain b/public/terrain/19/858580/353946.terrain new file mode 100644 index 000000000..085fc48f7 Binary files /dev/null and b/public/terrain/19/858580/353946.terrain differ diff --git a/public/terrain/19/858580/353947.terrain b/public/terrain/19/858580/353947.terrain new file mode 100644 index 000000000..4229494ee Binary files /dev/null and b/public/terrain/19/858580/353947.terrain differ diff --git a/public/terrain/19/858580/353948.terrain b/public/terrain/19/858580/353948.terrain new file mode 100644 index 000000000..d9244cd85 Binary files /dev/null and b/public/terrain/19/858580/353948.terrain differ diff --git a/public/terrain/19/858580/353949.terrain b/public/terrain/19/858580/353949.terrain new file mode 100644 index 000000000..32230597e Binary files /dev/null and b/public/terrain/19/858580/353949.terrain differ diff --git a/public/terrain/19/858580/353950.terrain b/public/terrain/19/858580/353950.terrain new file mode 100644 index 000000000..edde0bdb6 Binary files /dev/null and b/public/terrain/19/858580/353950.terrain differ diff --git a/public/terrain/19/858580/353951.terrain b/public/terrain/19/858580/353951.terrain new file mode 100644 index 000000000..3bb80a51e Binary files /dev/null and b/public/terrain/19/858580/353951.terrain differ diff --git a/public/terrain/19/858580/353952.terrain b/public/terrain/19/858580/353952.terrain new file mode 100644 index 000000000..951dbd532 Binary files /dev/null and b/public/terrain/19/858580/353952.terrain differ diff --git a/public/terrain/19/858580/353953.terrain b/public/terrain/19/858580/353953.terrain new file mode 100644 index 000000000..cf3782911 Binary files /dev/null and b/public/terrain/19/858580/353953.terrain differ diff --git a/public/terrain/19/858580/353954.terrain b/public/terrain/19/858580/353954.terrain new file mode 100644 index 000000000..7901b22d6 Binary files /dev/null and b/public/terrain/19/858580/353954.terrain differ diff --git a/public/terrain/19/858580/353955.terrain b/public/terrain/19/858580/353955.terrain new file mode 100644 index 000000000..ad41dd45e Binary files /dev/null and b/public/terrain/19/858580/353955.terrain differ diff --git a/public/terrain/19/858580/353956.terrain b/public/terrain/19/858580/353956.terrain new file mode 100644 index 000000000..446109fa5 Binary files /dev/null and b/public/terrain/19/858580/353956.terrain differ diff --git a/public/terrain/19/858580/353957.terrain b/public/terrain/19/858580/353957.terrain new file mode 100644 index 000000000..998f59274 Binary files /dev/null and b/public/terrain/19/858580/353957.terrain differ diff --git a/public/terrain/19/858580/353958.terrain b/public/terrain/19/858580/353958.terrain new file mode 100644 index 000000000..6e19c5495 Binary files /dev/null and b/public/terrain/19/858580/353958.terrain differ diff --git a/public/terrain/19/858580/353959.terrain b/public/terrain/19/858580/353959.terrain new file mode 100644 index 000000000..b919c419a Binary files /dev/null and b/public/terrain/19/858580/353959.terrain differ diff --git a/public/terrain/19/858580/353960.terrain b/public/terrain/19/858580/353960.terrain new file mode 100644 index 000000000..c84a33afe Binary files /dev/null and b/public/terrain/19/858580/353960.terrain differ diff --git a/public/terrain/19/858580/353961.terrain b/public/terrain/19/858580/353961.terrain new file mode 100644 index 000000000..f0a2e3e94 Binary files /dev/null and b/public/terrain/19/858580/353961.terrain differ diff --git a/public/terrain/19/858580/353962.terrain b/public/terrain/19/858580/353962.terrain new file mode 100644 index 000000000..1e92522a1 Binary files /dev/null and b/public/terrain/19/858580/353962.terrain differ diff --git a/public/terrain/19/858580/353963.terrain b/public/terrain/19/858580/353963.terrain new file mode 100644 index 000000000..ff20b3800 Binary files /dev/null and b/public/terrain/19/858580/353963.terrain differ diff --git a/public/terrain/19/858580/353964.terrain b/public/terrain/19/858580/353964.terrain new file mode 100644 index 000000000..041da94eb Binary files /dev/null and b/public/terrain/19/858580/353964.terrain differ diff --git a/public/terrain/19/858580/353965.terrain b/public/terrain/19/858580/353965.terrain new file mode 100644 index 000000000..ef5454e96 Binary files /dev/null and b/public/terrain/19/858580/353965.terrain differ diff --git a/public/terrain/19/858580/353966.terrain b/public/terrain/19/858580/353966.terrain new file mode 100644 index 000000000..59bd31482 Binary files /dev/null and b/public/terrain/19/858580/353966.terrain differ diff --git a/public/terrain/19/858580/353967.terrain b/public/terrain/19/858580/353967.terrain new file mode 100644 index 000000000..9e3150d61 Binary files /dev/null and b/public/terrain/19/858580/353967.terrain differ diff --git a/public/terrain/19/858580/353968.terrain b/public/terrain/19/858580/353968.terrain new file mode 100644 index 000000000..5ee3ad268 Binary files /dev/null and b/public/terrain/19/858580/353968.terrain differ diff --git a/public/terrain/19/858580/353969.terrain b/public/terrain/19/858580/353969.terrain new file mode 100644 index 000000000..5641d7871 Binary files /dev/null and b/public/terrain/19/858580/353969.terrain differ diff --git a/public/terrain/19/858580/353970.terrain b/public/terrain/19/858580/353970.terrain new file mode 100644 index 000000000..6b1288c3a Binary files /dev/null and b/public/terrain/19/858580/353970.terrain differ diff --git a/public/terrain/19/858580/353971.terrain b/public/terrain/19/858580/353971.terrain new file mode 100644 index 000000000..cab216c2c Binary files /dev/null and b/public/terrain/19/858580/353971.terrain differ diff --git a/public/terrain/19/858580/353972.terrain b/public/terrain/19/858580/353972.terrain new file mode 100644 index 000000000..8b291116a Binary files /dev/null and b/public/terrain/19/858580/353972.terrain differ diff --git a/public/terrain/19/858580/353973.terrain b/public/terrain/19/858580/353973.terrain new file mode 100644 index 000000000..b15ba4516 Binary files /dev/null and b/public/terrain/19/858580/353973.terrain differ diff --git a/public/terrain/19/858580/353974.terrain b/public/terrain/19/858580/353974.terrain new file mode 100644 index 000000000..748884e72 Binary files /dev/null and b/public/terrain/19/858580/353974.terrain differ diff --git a/public/terrain/19/858580/353975.terrain b/public/terrain/19/858580/353975.terrain new file mode 100644 index 000000000..e17b3af66 Binary files /dev/null and b/public/terrain/19/858580/353975.terrain differ diff --git a/public/terrain/19/858580/353976.terrain b/public/terrain/19/858580/353976.terrain new file mode 100644 index 000000000..6e28ad2fa Binary files /dev/null and b/public/terrain/19/858580/353976.terrain differ diff --git a/public/terrain/19/858580/353977.terrain b/public/terrain/19/858580/353977.terrain new file mode 100644 index 000000000..5e52f4145 Binary files /dev/null and b/public/terrain/19/858580/353977.terrain differ diff --git a/public/terrain/19/858580/353978.terrain b/public/terrain/19/858580/353978.terrain new file mode 100644 index 000000000..d0db1c6ed Binary files /dev/null and b/public/terrain/19/858580/353978.terrain differ diff --git a/public/terrain/19/858580/353979.terrain b/public/terrain/19/858580/353979.terrain new file mode 100644 index 000000000..316c04009 Binary files /dev/null and b/public/terrain/19/858580/353979.terrain differ diff --git a/public/terrain/19/858580/353980.terrain b/public/terrain/19/858580/353980.terrain new file mode 100644 index 000000000..3b620b905 Binary files /dev/null and b/public/terrain/19/858580/353980.terrain differ diff --git a/public/terrain/19/858580/353981.terrain b/public/terrain/19/858580/353981.terrain new file mode 100644 index 000000000..1f82dee7a Binary files /dev/null and b/public/terrain/19/858580/353981.terrain differ diff --git a/public/terrain/19/858580/353982.terrain b/public/terrain/19/858580/353982.terrain new file mode 100644 index 000000000..e58b13514 Binary files /dev/null and b/public/terrain/19/858580/353982.terrain differ diff --git a/public/terrain/19/858580/353983.terrain b/public/terrain/19/858580/353983.terrain new file mode 100644 index 000000000..3b15b554d Binary files /dev/null and b/public/terrain/19/858580/353983.terrain differ diff --git a/public/terrain/19/858580/353984.terrain b/public/terrain/19/858580/353984.terrain new file mode 100644 index 000000000..3d9e76480 Binary files /dev/null and b/public/terrain/19/858580/353984.terrain differ diff --git a/public/terrain/19/858580/353985.terrain b/public/terrain/19/858580/353985.terrain new file mode 100644 index 000000000..30873d4e6 Binary files /dev/null and b/public/terrain/19/858580/353985.terrain differ diff --git a/public/terrain/19/858580/353986.terrain b/public/terrain/19/858580/353986.terrain new file mode 100644 index 000000000..d53e76864 Binary files /dev/null and b/public/terrain/19/858580/353986.terrain differ diff --git a/public/terrain/19/858580/353987.terrain b/public/terrain/19/858580/353987.terrain new file mode 100644 index 000000000..80be8811a Binary files /dev/null and b/public/terrain/19/858580/353987.terrain differ diff --git a/public/terrain/19/858580/353988.terrain b/public/terrain/19/858580/353988.terrain new file mode 100644 index 000000000..1574f2ca3 Binary files /dev/null and b/public/terrain/19/858580/353988.terrain differ diff --git a/public/terrain/19/858580/353989.terrain b/public/terrain/19/858580/353989.terrain new file mode 100644 index 000000000..d196eb92d Binary files /dev/null and b/public/terrain/19/858580/353989.terrain differ diff --git a/public/terrain/19/858580/353990.terrain b/public/terrain/19/858580/353990.terrain new file mode 100644 index 000000000..484fd2110 Binary files /dev/null and b/public/terrain/19/858580/353990.terrain differ diff --git a/public/terrain/19/858580/353991.terrain b/public/terrain/19/858580/353991.terrain new file mode 100644 index 000000000..a1767a825 Binary files /dev/null and b/public/terrain/19/858580/353991.terrain differ diff --git a/public/terrain/19/858580/353992.terrain b/public/terrain/19/858580/353992.terrain new file mode 100644 index 000000000..849b4578d Binary files /dev/null and b/public/terrain/19/858580/353992.terrain differ diff --git a/public/terrain/19/858580/353993.terrain b/public/terrain/19/858580/353993.terrain new file mode 100644 index 000000000..3237df352 Binary files /dev/null and b/public/terrain/19/858580/353993.terrain differ diff --git a/public/terrain/19/858580/353994.terrain b/public/terrain/19/858580/353994.terrain new file mode 100644 index 000000000..f7f7d27d3 Binary files /dev/null and b/public/terrain/19/858580/353994.terrain differ diff --git a/public/terrain/19/858580/353995.terrain b/public/terrain/19/858580/353995.terrain new file mode 100644 index 000000000..39983bfd4 Binary files /dev/null and b/public/terrain/19/858580/353995.terrain differ diff --git a/public/terrain/19/858580/353996.terrain b/public/terrain/19/858580/353996.terrain new file mode 100644 index 000000000..29528d8ba Binary files /dev/null and b/public/terrain/19/858580/353996.terrain differ diff --git a/public/terrain/19/858580/353997.terrain b/public/terrain/19/858580/353997.terrain new file mode 100644 index 000000000..3bfeb5ca4 Binary files /dev/null and b/public/terrain/19/858580/353997.terrain differ diff --git a/public/terrain/19/858580/353998.terrain b/public/terrain/19/858580/353998.terrain new file mode 100644 index 000000000..f0a04ae30 Binary files /dev/null and b/public/terrain/19/858580/353998.terrain differ diff --git a/public/terrain/19/858580/353999.terrain b/public/terrain/19/858580/353999.terrain new file mode 100644 index 000000000..56a4e1e38 Binary files /dev/null and b/public/terrain/19/858580/353999.terrain differ diff --git a/public/terrain/19/858580/354000.terrain b/public/terrain/19/858580/354000.terrain new file mode 100644 index 000000000..ff994b181 Binary files /dev/null and b/public/terrain/19/858580/354000.terrain differ diff --git a/public/terrain/19/858580/354001.terrain b/public/terrain/19/858580/354001.terrain new file mode 100644 index 000000000..fe6fde547 Binary files /dev/null and b/public/terrain/19/858580/354001.terrain differ diff --git a/public/terrain/19/858580/354002.terrain b/public/terrain/19/858580/354002.terrain new file mode 100644 index 000000000..27a628f2c Binary files /dev/null and b/public/terrain/19/858580/354002.terrain differ diff --git a/public/terrain/19/858580/354003.terrain b/public/terrain/19/858580/354003.terrain new file mode 100644 index 000000000..7ccadade4 Binary files /dev/null and b/public/terrain/19/858580/354003.terrain differ diff --git a/public/terrain/19/858580/354004.terrain b/public/terrain/19/858580/354004.terrain new file mode 100644 index 000000000..47e26822d Binary files /dev/null and b/public/terrain/19/858580/354004.terrain differ diff --git a/public/terrain/19/858580/354005.terrain b/public/terrain/19/858580/354005.terrain new file mode 100644 index 000000000..67778646d Binary files /dev/null and b/public/terrain/19/858580/354005.terrain differ diff --git a/public/terrain/19/858580/354006.terrain b/public/terrain/19/858580/354006.terrain new file mode 100644 index 000000000..67a5ec90a Binary files /dev/null and b/public/terrain/19/858580/354006.terrain differ diff --git a/public/terrain/19/858580/354007.terrain b/public/terrain/19/858580/354007.terrain new file mode 100644 index 000000000..434be5622 Binary files /dev/null and b/public/terrain/19/858580/354007.terrain differ diff --git a/public/terrain/19/858580/354008.terrain b/public/terrain/19/858580/354008.terrain new file mode 100644 index 000000000..41a3f6382 Binary files /dev/null and b/public/terrain/19/858580/354008.terrain differ diff --git a/public/terrain/19/858580/354009.terrain b/public/terrain/19/858580/354009.terrain new file mode 100644 index 000000000..eebb0ac6c Binary files /dev/null and b/public/terrain/19/858580/354009.terrain differ diff --git a/public/terrain/19/858580/354010.terrain b/public/terrain/19/858580/354010.terrain new file mode 100644 index 000000000..a8847e4ef Binary files /dev/null and b/public/terrain/19/858580/354010.terrain differ diff --git a/public/terrain/19/858580/354011.terrain b/public/terrain/19/858580/354011.terrain new file mode 100644 index 000000000..33e693bd9 Binary files /dev/null and b/public/terrain/19/858580/354011.terrain differ diff --git a/public/terrain/19/858580/354012.terrain b/public/terrain/19/858580/354012.terrain new file mode 100644 index 000000000..9289d1552 Binary files /dev/null and b/public/terrain/19/858580/354012.terrain differ diff --git a/public/terrain/19/858580/354013.terrain b/public/terrain/19/858580/354013.terrain new file mode 100644 index 000000000..2b73a8029 Binary files /dev/null and b/public/terrain/19/858580/354013.terrain differ diff --git a/public/terrain/19/858580/354014.terrain b/public/terrain/19/858580/354014.terrain new file mode 100644 index 000000000..cc2935f39 Binary files /dev/null and b/public/terrain/19/858580/354014.terrain differ diff --git a/public/terrain/19/858580/354015.terrain b/public/terrain/19/858580/354015.terrain new file mode 100644 index 000000000..e9c1bd110 Binary files /dev/null and b/public/terrain/19/858580/354015.terrain differ diff --git a/public/terrain/19/858580/354016.terrain b/public/terrain/19/858580/354016.terrain new file mode 100644 index 000000000..c3a3af1d5 Binary files /dev/null and b/public/terrain/19/858580/354016.terrain differ diff --git a/public/terrain/19/858580/354017.terrain b/public/terrain/19/858580/354017.terrain new file mode 100644 index 000000000..c37f2bb62 Binary files /dev/null and b/public/terrain/19/858580/354017.terrain differ diff --git a/public/terrain/19/858580/354018.terrain b/public/terrain/19/858580/354018.terrain new file mode 100644 index 000000000..2fb2dd34a Binary files /dev/null and b/public/terrain/19/858580/354018.terrain differ diff --git a/public/terrain/19/858580/354019.terrain b/public/terrain/19/858580/354019.terrain new file mode 100644 index 000000000..782cf3f17 Binary files /dev/null and b/public/terrain/19/858580/354019.terrain differ diff --git a/public/terrain/19/858580/354020.terrain b/public/terrain/19/858580/354020.terrain new file mode 100644 index 000000000..bc5773c9d Binary files /dev/null and b/public/terrain/19/858580/354020.terrain differ diff --git a/public/terrain/19/858580/354021.terrain b/public/terrain/19/858580/354021.terrain new file mode 100644 index 000000000..cb0dc5753 Binary files /dev/null and b/public/terrain/19/858580/354021.terrain differ diff --git a/public/terrain/19/858580/354022.terrain b/public/terrain/19/858580/354022.terrain new file mode 100644 index 000000000..f7736636b Binary files /dev/null and b/public/terrain/19/858580/354022.terrain differ diff --git a/public/terrain/19/858580/354023.terrain b/public/terrain/19/858580/354023.terrain new file mode 100644 index 000000000..851b64b1d Binary files /dev/null and b/public/terrain/19/858580/354023.terrain differ diff --git a/public/terrain/19/858580/354024.terrain b/public/terrain/19/858580/354024.terrain new file mode 100644 index 000000000..41000cf40 Binary files /dev/null and b/public/terrain/19/858580/354024.terrain differ diff --git a/public/terrain/19/858580/354025.terrain b/public/terrain/19/858580/354025.terrain new file mode 100644 index 000000000..2923986d8 Binary files /dev/null and b/public/terrain/19/858580/354025.terrain differ diff --git a/public/terrain/19/858580/354026.terrain b/public/terrain/19/858580/354026.terrain new file mode 100644 index 000000000..7864a0bc0 Binary files /dev/null and b/public/terrain/19/858580/354026.terrain differ diff --git a/public/terrain/19/858580/354027.terrain b/public/terrain/19/858580/354027.terrain new file mode 100644 index 000000000..f1898c0da Binary files /dev/null and b/public/terrain/19/858580/354027.terrain differ diff --git a/public/terrain/19/858580/354028.terrain b/public/terrain/19/858580/354028.terrain new file mode 100644 index 000000000..b4a69ba04 Binary files /dev/null and b/public/terrain/19/858580/354028.terrain differ diff --git a/public/terrain/19/858580/354029.terrain b/public/terrain/19/858580/354029.terrain new file mode 100644 index 000000000..c6546141d Binary files /dev/null and b/public/terrain/19/858580/354029.terrain differ diff --git a/public/terrain/19/858580/354030.terrain b/public/terrain/19/858580/354030.terrain new file mode 100644 index 000000000..5d916caf7 Binary files /dev/null and b/public/terrain/19/858580/354030.terrain differ diff --git a/public/terrain/19/858580/354031.terrain b/public/terrain/19/858580/354031.terrain new file mode 100644 index 000000000..2c4d2cfcd Binary files /dev/null and b/public/terrain/19/858580/354031.terrain differ diff --git a/public/terrain/19/858580/354032.terrain b/public/terrain/19/858580/354032.terrain new file mode 100644 index 000000000..abe42c221 Binary files /dev/null and b/public/terrain/19/858580/354032.terrain differ diff --git a/public/terrain/19/858580/354033.terrain b/public/terrain/19/858580/354033.terrain new file mode 100644 index 000000000..a5754911a Binary files /dev/null and b/public/terrain/19/858580/354033.terrain differ diff --git a/public/terrain/19/858580/354034.terrain b/public/terrain/19/858580/354034.terrain new file mode 100644 index 000000000..d1a53ba50 Binary files /dev/null and b/public/terrain/19/858580/354034.terrain differ diff --git a/public/terrain/19/858580/354035.terrain b/public/terrain/19/858580/354035.terrain new file mode 100644 index 000000000..b4c5c7930 Binary files /dev/null and b/public/terrain/19/858580/354035.terrain differ diff --git a/public/terrain/19/858580/354036.terrain b/public/terrain/19/858580/354036.terrain new file mode 100644 index 000000000..ea4b390e6 Binary files /dev/null and b/public/terrain/19/858580/354036.terrain differ diff --git a/public/terrain/19/858580/354037.terrain b/public/terrain/19/858580/354037.terrain new file mode 100644 index 000000000..e25cce250 Binary files /dev/null and b/public/terrain/19/858580/354037.terrain differ diff --git a/public/terrain/19/858580/354038.terrain b/public/terrain/19/858580/354038.terrain new file mode 100644 index 000000000..a12362dad Binary files /dev/null and b/public/terrain/19/858580/354038.terrain differ diff --git a/public/terrain/19/858580/354039.terrain b/public/terrain/19/858580/354039.terrain new file mode 100644 index 000000000..2fe8f0dcb Binary files /dev/null and b/public/terrain/19/858580/354039.terrain differ diff --git a/public/terrain/19/858580/354040.terrain b/public/terrain/19/858580/354040.terrain new file mode 100644 index 000000000..699df23e2 Binary files /dev/null and b/public/terrain/19/858580/354040.terrain differ diff --git a/public/terrain/19/858580/354041.terrain b/public/terrain/19/858580/354041.terrain new file mode 100644 index 000000000..506ffe891 Binary files /dev/null and b/public/terrain/19/858580/354041.terrain differ diff --git a/public/terrain/19/858580/354042.terrain b/public/terrain/19/858580/354042.terrain new file mode 100644 index 000000000..ad75eff36 Binary files /dev/null and b/public/terrain/19/858580/354042.terrain differ diff --git a/public/terrain/19/858580/354043.terrain b/public/terrain/19/858580/354043.terrain new file mode 100644 index 000000000..536491a0e Binary files /dev/null and b/public/terrain/19/858580/354043.terrain differ diff --git a/public/terrain/19/858580/354044.terrain b/public/terrain/19/858580/354044.terrain new file mode 100644 index 000000000..0f889d785 Binary files /dev/null and b/public/terrain/19/858580/354044.terrain differ diff --git a/public/terrain/19/858580/354045.terrain b/public/terrain/19/858580/354045.terrain new file mode 100644 index 000000000..7d8521fb5 Binary files /dev/null and b/public/terrain/19/858580/354045.terrain differ diff --git a/public/terrain/19/858580/354046.terrain b/public/terrain/19/858580/354046.terrain new file mode 100644 index 000000000..038dcd786 Binary files /dev/null and b/public/terrain/19/858580/354046.terrain differ diff --git a/public/terrain/19/858580/354047.terrain b/public/terrain/19/858580/354047.terrain new file mode 100644 index 000000000..7cc6de321 Binary files /dev/null and b/public/terrain/19/858580/354047.terrain differ diff --git a/public/terrain/19/858580/354048.terrain b/public/terrain/19/858580/354048.terrain new file mode 100644 index 000000000..e1c8b69f0 Binary files /dev/null and b/public/terrain/19/858580/354048.terrain differ diff --git a/public/terrain/19/858580/354049.terrain b/public/terrain/19/858580/354049.terrain new file mode 100644 index 000000000..13e0826cb Binary files /dev/null and b/public/terrain/19/858580/354049.terrain differ diff --git a/public/terrain/19/858580/354050.terrain b/public/terrain/19/858580/354050.terrain new file mode 100644 index 000000000..00bcd99c9 Binary files /dev/null and b/public/terrain/19/858580/354050.terrain differ diff --git a/public/terrain/19/858580/354051.terrain b/public/terrain/19/858580/354051.terrain new file mode 100644 index 000000000..fac668d79 Binary files /dev/null and b/public/terrain/19/858580/354051.terrain differ diff --git a/public/terrain/19/858580/354052.terrain b/public/terrain/19/858580/354052.terrain new file mode 100644 index 000000000..f481e7ef0 Binary files /dev/null and b/public/terrain/19/858580/354052.terrain differ diff --git a/public/terrain/19/858580/354053.terrain b/public/terrain/19/858580/354053.terrain new file mode 100644 index 000000000..bbc8a0319 Binary files /dev/null and b/public/terrain/19/858580/354053.terrain differ diff --git a/public/terrain/19/858580/354054.terrain b/public/terrain/19/858580/354054.terrain new file mode 100644 index 000000000..9bf4aff25 Binary files /dev/null and b/public/terrain/19/858580/354054.terrain differ diff --git a/public/terrain/19/858580/354055.terrain b/public/terrain/19/858580/354055.terrain new file mode 100644 index 000000000..e5651a066 Binary files /dev/null and b/public/terrain/19/858580/354055.terrain differ diff --git a/public/terrain/19/858580/354056.terrain b/public/terrain/19/858580/354056.terrain new file mode 100644 index 000000000..7cafb070d Binary files /dev/null and b/public/terrain/19/858580/354056.terrain differ diff --git a/public/terrain/19/858580/354057.terrain b/public/terrain/19/858580/354057.terrain new file mode 100644 index 000000000..0f93a6aed Binary files /dev/null and b/public/terrain/19/858580/354057.terrain differ diff --git a/public/terrain/19/858580/354058.terrain b/public/terrain/19/858580/354058.terrain new file mode 100644 index 000000000..951672b0a Binary files /dev/null and b/public/terrain/19/858580/354058.terrain differ diff --git a/public/terrain/19/858580/354059.terrain b/public/terrain/19/858580/354059.terrain new file mode 100644 index 000000000..4cb52752d Binary files /dev/null and b/public/terrain/19/858580/354059.terrain differ diff --git a/public/terrain/19/858581/353743.terrain b/public/terrain/19/858581/353743.terrain new file mode 100644 index 000000000..c7d2a3da9 Binary files /dev/null and b/public/terrain/19/858581/353743.terrain differ diff --git a/public/terrain/19/858581/353744.terrain b/public/terrain/19/858581/353744.terrain new file mode 100644 index 000000000..a4cf263cb Binary files /dev/null and b/public/terrain/19/858581/353744.terrain differ diff --git a/public/terrain/19/858581/353745.terrain b/public/terrain/19/858581/353745.terrain new file mode 100644 index 000000000..9eac6e9a5 Binary files /dev/null and b/public/terrain/19/858581/353745.terrain differ diff --git a/public/terrain/19/858581/353746.terrain b/public/terrain/19/858581/353746.terrain new file mode 100644 index 000000000..83eec654d Binary files /dev/null and b/public/terrain/19/858581/353746.terrain differ diff --git a/public/terrain/19/858581/353747.terrain b/public/terrain/19/858581/353747.terrain new file mode 100644 index 000000000..110f69de4 Binary files /dev/null and b/public/terrain/19/858581/353747.terrain differ diff --git a/public/terrain/19/858581/353748.terrain b/public/terrain/19/858581/353748.terrain new file mode 100644 index 000000000..c385d200d Binary files /dev/null and b/public/terrain/19/858581/353748.terrain differ diff --git a/public/terrain/19/858581/353749.terrain b/public/terrain/19/858581/353749.terrain new file mode 100644 index 000000000..eb792e3a8 Binary files /dev/null and b/public/terrain/19/858581/353749.terrain differ diff --git a/public/terrain/19/858581/353750.terrain b/public/terrain/19/858581/353750.terrain new file mode 100644 index 000000000..15146a5a6 Binary files /dev/null and b/public/terrain/19/858581/353750.terrain differ diff --git a/public/terrain/19/858581/353751.terrain b/public/terrain/19/858581/353751.terrain new file mode 100644 index 000000000..93a4b934d Binary files /dev/null and b/public/terrain/19/858581/353751.terrain differ diff --git a/public/terrain/19/858581/353752.terrain b/public/terrain/19/858581/353752.terrain new file mode 100644 index 000000000..99d3a7ce0 Binary files /dev/null and b/public/terrain/19/858581/353752.terrain differ diff --git a/public/terrain/19/858581/353753.terrain b/public/terrain/19/858581/353753.terrain new file mode 100644 index 000000000..d5d5b843b Binary files /dev/null and b/public/terrain/19/858581/353753.terrain differ diff --git a/public/terrain/19/858581/353754.terrain b/public/terrain/19/858581/353754.terrain new file mode 100644 index 000000000..96aa3cd2d Binary files /dev/null and b/public/terrain/19/858581/353754.terrain differ diff --git a/public/terrain/19/858581/353755.terrain b/public/terrain/19/858581/353755.terrain new file mode 100644 index 000000000..2c1457a3d Binary files /dev/null and b/public/terrain/19/858581/353755.terrain differ diff --git a/public/terrain/19/858581/353756.terrain b/public/terrain/19/858581/353756.terrain new file mode 100644 index 000000000..ca980a773 Binary files /dev/null and b/public/terrain/19/858581/353756.terrain differ diff --git a/public/terrain/19/858581/353757.terrain b/public/terrain/19/858581/353757.terrain new file mode 100644 index 000000000..5cc930b6e Binary files /dev/null and b/public/terrain/19/858581/353757.terrain differ diff --git a/public/terrain/19/858581/353758.terrain b/public/terrain/19/858581/353758.terrain new file mode 100644 index 000000000..bd2ff98ea Binary files /dev/null and b/public/terrain/19/858581/353758.terrain differ diff --git a/public/terrain/19/858581/353759.terrain b/public/terrain/19/858581/353759.terrain new file mode 100644 index 000000000..d2c800bf2 Binary files /dev/null and b/public/terrain/19/858581/353759.terrain differ diff --git a/public/terrain/19/858581/353760.terrain b/public/terrain/19/858581/353760.terrain new file mode 100644 index 000000000..e9c0e3ee5 Binary files /dev/null and b/public/terrain/19/858581/353760.terrain differ diff --git a/public/terrain/19/858581/353761.terrain b/public/terrain/19/858581/353761.terrain new file mode 100644 index 000000000..bdce2a9d1 Binary files /dev/null and b/public/terrain/19/858581/353761.terrain differ diff --git a/public/terrain/19/858581/353762.terrain b/public/terrain/19/858581/353762.terrain new file mode 100644 index 000000000..3da28d5ff Binary files /dev/null and b/public/terrain/19/858581/353762.terrain differ diff --git a/public/terrain/19/858581/353763.terrain b/public/terrain/19/858581/353763.terrain new file mode 100644 index 000000000..47dc3e6f2 Binary files /dev/null and b/public/terrain/19/858581/353763.terrain differ diff --git a/public/terrain/19/858581/353764.terrain b/public/terrain/19/858581/353764.terrain new file mode 100644 index 000000000..a67c2f9f7 Binary files /dev/null and b/public/terrain/19/858581/353764.terrain differ diff --git a/public/terrain/19/858581/353765.terrain b/public/terrain/19/858581/353765.terrain new file mode 100644 index 000000000..9821378d6 Binary files /dev/null and b/public/terrain/19/858581/353765.terrain differ diff --git a/public/terrain/19/858581/353766.terrain b/public/terrain/19/858581/353766.terrain new file mode 100644 index 000000000..0693f0e8d Binary files /dev/null and b/public/terrain/19/858581/353766.terrain differ diff --git a/public/terrain/19/858581/353767.terrain b/public/terrain/19/858581/353767.terrain new file mode 100644 index 000000000..24fdff509 Binary files /dev/null and b/public/terrain/19/858581/353767.terrain differ diff --git a/public/terrain/19/858581/353768.terrain b/public/terrain/19/858581/353768.terrain new file mode 100644 index 000000000..611e59664 Binary files /dev/null and b/public/terrain/19/858581/353768.terrain differ diff --git a/public/terrain/19/858581/353769.terrain b/public/terrain/19/858581/353769.terrain new file mode 100644 index 000000000..564d5736a Binary files /dev/null and b/public/terrain/19/858581/353769.terrain differ diff --git a/public/terrain/19/858581/353770.terrain b/public/terrain/19/858581/353770.terrain new file mode 100644 index 000000000..27a71dc51 Binary files /dev/null and b/public/terrain/19/858581/353770.terrain differ diff --git a/public/terrain/19/858581/353771.terrain b/public/terrain/19/858581/353771.terrain new file mode 100644 index 000000000..2910e416e Binary files /dev/null and b/public/terrain/19/858581/353771.terrain differ diff --git a/public/terrain/19/858581/353772.terrain b/public/terrain/19/858581/353772.terrain new file mode 100644 index 000000000..37f51f0e5 Binary files /dev/null and b/public/terrain/19/858581/353772.terrain differ diff --git a/public/terrain/19/858581/353773.terrain b/public/terrain/19/858581/353773.terrain new file mode 100644 index 000000000..e9a20a81e Binary files /dev/null and b/public/terrain/19/858581/353773.terrain differ diff --git a/public/terrain/19/858581/353774.terrain b/public/terrain/19/858581/353774.terrain new file mode 100644 index 000000000..b268f86c7 Binary files /dev/null and b/public/terrain/19/858581/353774.terrain differ diff --git a/public/terrain/19/858581/353775.terrain b/public/terrain/19/858581/353775.terrain new file mode 100644 index 000000000..4f5e6a369 Binary files /dev/null and b/public/terrain/19/858581/353775.terrain differ diff --git a/public/terrain/19/858581/353776.terrain b/public/terrain/19/858581/353776.terrain new file mode 100644 index 000000000..2c092c3a5 Binary files /dev/null and b/public/terrain/19/858581/353776.terrain differ diff --git a/public/terrain/19/858581/353777.terrain b/public/terrain/19/858581/353777.terrain new file mode 100644 index 000000000..a39f3f5c9 Binary files /dev/null and b/public/terrain/19/858581/353777.terrain differ diff --git a/public/terrain/19/858581/353778.terrain b/public/terrain/19/858581/353778.terrain new file mode 100644 index 000000000..0711b2214 Binary files /dev/null and b/public/terrain/19/858581/353778.terrain differ diff --git a/public/terrain/19/858581/353779.terrain b/public/terrain/19/858581/353779.terrain new file mode 100644 index 000000000..4f3ced336 Binary files /dev/null and b/public/terrain/19/858581/353779.terrain differ diff --git a/public/terrain/19/858581/353780.terrain b/public/terrain/19/858581/353780.terrain new file mode 100644 index 000000000..ec73dd89f Binary files /dev/null and b/public/terrain/19/858581/353780.terrain differ diff --git a/public/terrain/19/858581/353781.terrain b/public/terrain/19/858581/353781.terrain new file mode 100644 index 000000000..ee1eb118a Binary files /dev/null and b/public/terrain/19/858581/353781.terrain differ diff --git a/public/terrain/19/858581/353782.terrain b/public/terrain/19/858581/353782.terrain new file mode 100644 index 000000000..6a39ab2ba Binary files /dev/null and b/public/terrain/19/858581/353782.terrain differ diff --git a/public/terrain/19/858581/353783.terrain b/public/terrain/19/858581/353783.terrain new file mode 100644 index 000000000..946bdff5a Binary files /dev/null and b/public/terrain/19/858581/353783.terrain differ diff --git a/public/terrain/19/858581/353784.terrain b/public/terrain/19/858581/353784.terrain new file mode 100644 index 000000000..1fbb3fa21 Binary files /dev/null and b/public/terrain/19/858581/353784.terrain differ diff --git a/public/terrain/19/858581/353785.terrain b/public/terrain/19/858581/353785.terrain new file mode 100644 index 000000000..6060e1d24 Binary files /dev/null and b/public/terrain/19/858581/353785.terrain differ diff --git a/public/terrain/19/858581/353786.terrain b/public/terrain/19/858581/353786.terrain new file mode 100644 index 000000000..1caaa52b8 Binary files /dev/null and b/public/terrain/19/858581/353786.terrain differ diff --git a/public/terrain/19/858581/353787.terrain b/public/terrain/19/858581/353787.terrain new file mode 100644 index 000000000..213f97f29 Binary files /dev/null and b/public/terrain/19/858581/353787.terrain differ diff --git a/public/terrain/19/858581/353788.terrain b/public/terrain/19/858581/353788.terrain new file mode 100644 index 000000000..6229bcd68 Binary files /dev/null and b/public/terrain/19/858581/353788.terrain differ diff --git a/public/terrain/19/858581/353789.terrain b/public/terrain/19/858581/353789.terrain new file mode 100644 index 000000000..06786d02f Binary files /dev/null and b/public/terrain/19/858581/353789.terrain differ diff --git a/public/terrain/19/858581/353790.terrain b/public/terrain/19/858581/353790.terrain new file mode 100644 index 000000000..bb3dee5ce Binary files /dev/null and b/public/terrain/19/858581/353790.terrain differ diff --git a/public/terrain/19/858581/353791.terrain b/public/terrain/19/858581/353791.terrain new file mode 100644 index 000000000..b8e77f4da Binary files /dev/null and b/public/terrain/19/858581/353791.terrain differ diff --git a/public/terrain/19/858581/353792.terrain b/public/terrain/19/858581/353792.terrain new file mode 100644 index 000000000..0be007bf3 Binary files /dev/null and b/public/terrain/19/858581/353792.terrain differ diff --git a/public/terrain/19/858581/353793.terrain b/public/terrain/19/858581/353793.terrain new file mode 100644 index 000000000..054d57c26 Binary files /dev/null and b/public/terrain/19/858581/353793.terrain differ diff --git a/public/terrain/19/858581/353794.terrain b/public/terrain/19/858581/353794.terrain new file mode 100644 index 000000000..fc64d2ab0 Binary files /dev/null and b/public/terrain/19/858581/353794.terrain differ diff --git a/public/terrain/19/858581/353795.terrain b/public/terrain/19/858581/353795.terrain new file mode 100644 index 000000000..2a4bf12f3 Binary files /dev/null and b/public/terrain/19/858581/353795.terrain differ diff --git a/public/terrain/19/858581/353796.terrain b/public/terrain/19/858581/353796.terrain new file mode 100644 index 000000000..886d13ac9 Binary files /dev/null and b/public/terrain/19/858581/353796.terrain differ diff --git a/public/terrain/19/858581/353797.terrain b/public/terrain/19/858581/353797.terrain new file mode 100644 index 000000000..ce13f0644 Binary files /dev/null and b/public/terrain/19/858581/353797.terrain differ diff --git a/public/terrain/19/858581/353798.terrain b/public/terrain/19/858581/353798.terrain new file mode 100644 index 000000000..9f5021d1c Binary files /dev/null and b/public/terrain/19/858581/353798.terrain differ diff --git a/public/terrain/19/858581/353799.terrain b/public/terrain/19/858581/353799.terrain new file mode 100644 index 000000000..e1471c671 Binary files /dev/null and b/public/terrain/19/858581/353799.terrain differ diff --git a/public/terrain/19/858581/353800.terrain b/public/terrain/19/858581/353800.terrain new file mode 100644 index 000000000..8fc063d29 Binary files /dev/null and b/public/terrain/19/858581/353800.terrain differ diff --git a/public/terrain/19/858581/353801.terrain b/public/terrain/19/858581/353801.terrain new file mode 100644 index 000000000..5b3e8f48b Binary files /dev/null and b/public/terrain/19/858581/353801.terrain differ diff --git a/public/terrain/19/858581/353802.terrain b/public/terrain/19/858581/353802.terrain new file mode 100644 index 000000000..11c940ecf Binary files /dev/null and b/public/terrain/19/858581/353802.terrain differ diff --git a/public/terrain/19/858581/353803.terrain b/public/terrain/19/858581/353803.terrain new file mode 100644 index 000000000..3e90ab4ba Binary files /dev/null and b/public/terrain/19/858581/353803.terrain differ diff --git a/public/terrain/19/858581/353804.terrain b/public/terrain/19/858581/353804.terrain new file mode 100644 index 000000000..d1b78d5a1 Binary files /dev/null and b/public/terrain/19/858581/353804.terrain differ diff --git a/public/terrain/19/858581/353805.terrain b/public/terrain/19/858581/353805.terrain new file mode 100644 index 000000000..787e98463 Binary files /dev/null and b/public/terrain/19/858581/353805.terrain differ diff --git a/public/terrain/19/858581/353806.terrain b/public/terrain/19/858581/353806.terrain new file mode 100644 index 000000000..8aace31b2 Binary files /dev/null and b/public/terrain/19/858581/353806.terrain differ diff --git a/public/terrain/19/858581/353807.terrain b/public/terrain/19/858581/353807.terrain new file mode 100644 index 000000000..cfb82bbbc Binary files /dev/null and b/public/terrain/19/858581/353807.terrain differ diff --git a/public/terrain/19/858581/353808.terrain b/public/terrain/19/858581/353808.terrain new file mode 100644 index 000000000..0ac0fdbaf Binary files /dev/null and b/public/terrain/19/858581/353808.terrain differ diff --git a/public/terrain/19/858581/353809.terrain b/public/terrain/19/858581/353809.terrain new file mode 100644 index 000000000..3d9cef8cb Binary files /dev/null and b/public/terrain/19/858581/353809.terrain differ diff --git a/public/terrain/19/858581/353810.terrain b/public/terrain/19/858581/353810.terrain new file mode 100644 index 000000000..4289e53fb Binary files /dev/null and b/public/terrain/19/858581/353810.terrain differ diff --git a/public/terrain/19/858581/353811.terrain b/public/terrain/19/858581/353811.terrain new file mode 100644 index 000000000..43474fca4 Binary files /dev/null and b/public/terrain/19/858581/353811.terrain differ diff --git a/public/terrain/19/858581/353812.terrain b/public/terrain/19/858581/353812.terrain new file mode 100644 index 000000000..daf102491 Binary files /dev/null and b/public/terrain/19/858581/353812.terrain differ diff --git a/public/terrain/19/858581/353813.terrain b/public/terrain/19/858581/353813.terrain new file mode 100644 index 000000000..22746e856 Binary files /dev/null and b/public/terrain/19/858581/353813.terrain differ diff --git a/public/terrain/19/858581/353814.terrain b/public/terrain/19/858581/353814.terrain new file mode 100644 index 000000000..399ef3242 Binary files /dev/null and b/public/terrain/19/858581/353814.terrain differ diff --git a/public/terrain/19/858581/353815.terrain b/public/terrain/19/858581/353815.terrain new file mode 100644 index 000000000..3535dc0c8 Binary files /dev/null and b/public/terrain/19/858581/353815.terrain differ diff --git a/public/terrain/19/858581/353816.terrain b/public/terrain/19/858581/353816.terrain new file mode 100644 index 000000000..927ade1c5 Binary files /dev/null and b/public/terrain/19/858581/353816.terrain differ diff --git a/public/terrain/19/858581/353817.terrain b/public/terrain/19/858581/353817.terrain new file mode 100644 index 000000000..5fa8692b2 Binary files /dev/null and b/public/terrain/19/858581/353817.terrain differ diff --git a/public/terrain/19/858581/353818.terrain b/public/terrain/19/858581/353818.terrain new file mode 100644 index 000000000..c89b81a0e Binary files /dev/null and b/public/terrain/19/858581/353818.terrain differ diff --git a/public/terrain/19/858581/353819.terrain b/public/terrain/19/858581/353819.terrain new file mode 100644 index 000000000..bbefbe195 Binary files /dev/null and b/public/terrain/19/858581/353819.terrain differ diff --git a/public/terrain/19/858581/353820.terrain b/public/terrain/19/858581/353820.terrain new file mode 100644 index 000000000..fc4a90b9a Binary files /dev/null and b/public/terrain/19/858581/353820.terrain differ diff --git a/public/terrain/19/858581/353821.terrain b/public/terrain/19/858581/353821.terrain new file mode 100644 index 000000000..03700b2be Binary files /dev/null and b/public/terrain/19/858581/353821.terrain differ diff --git a/public/terrain/19/858581/353822.terrain b/public/terrain/19/858581/353822.terrain new file mode 100644 index 000000000..26882a611 Binary files /dev/null and b/public/terrain/19/858581/353822.terrain differ diff --git a/public/terrain/19/858581/353823.terrain b/public/terrain/19/858581/353823.terrain new file mode 100644 index 000000000..ab5f8321b Binary files /dev/null and b/public/terrain/19/858581/353823.terrain differ diff --git a/public/terrain/19/858581/353824.terrain b/public/terrain/19/858581/353824.terrain new file mode 100644 index 000000000..207abf6c8 Binary files /dev/null and b/public/terrain/19/858581/353824.terrain differ diff --git a/public/terrain/19/858581/353825.terrain b/public/terrain/19/858581/353825.terrain new file mode 100644 index 000000000..e856be86d Binary files /dev/null and b/public/terrain/19/858581/353825.terrain differ diff --git a/public/terrain/19/858581/353826.terrain b/public/terrain/19/858581/353826.terrain new file mode 100644 index 000000000..74c2306d9 Binary files /dev/null and b/public/terrain/19/858581/353826.terrain differ diff --git a/public/terrain/19/858581/353827.terrain b/public/terrain/19/858581/353827.terrain new file mode 100644 index 000000000..09664c3f1 Binary files /dev/null and b/public/terrain/19/858581/353827.terrain differ diff --git a/public/terrain/19/858581/353828.terrain b/public/terrain/19/858581/353828.terrain new file mode 100644 index 000000000..29547f03f Binary files /dev/null and b/public/terrain/19/858581/353828.terrain differ diff --git a/public/terrain/19/858581/353829.terrain b/public/terrain/19/858581/353829.terrain new file mode 100644 index 000000000..69f3b3c06 Binary files /dev/null and b/public/terrain/19/858581/353829.terrain differ diff --git a/public/terrain/19/858581/353830.terrain b/public/terrain/19/858581/353830.terrain new file mode 100644 index 000000000..6803ffca3 Binary files /dev/null and b/public/terrain/19/858581/353830.terrain differ diff --git a/public/terrain/19/858581/353831.terrain b/public/terrain/19/858581/353831.terrain new file mode 100644 index 000000000..93a1fef69 Binary files /dev/null and b/public/terrain/19/858581/353831.terrain differ diff --git a/public/terrain/19/858581/353832.terrain b/public/terrain/19/858581/353832.terrain new file mode 100644 index 000000000..0067dc9cb Binary files /dev/null and b/public/terrain/19/858581/353832.terrain differ diff --git a/public/terrain/19/858581/353833.terrain b/public/terrain/19/858581/353833.terrain new file mode 100644 index 000000000..7f38dacb3 Binary files /dev/null and b/public/terrain/19/858581/353833.terrain differ diff --git a/public/terrain/19/858581/353834.terrain b/public/terrain/19/858581/353834.terrain new file mode 100644 index 000000000..d5a8cde18 Binary files /dev/null and b/public/terrain/19/858581/353834.terrain differ diff --git a/public/terrain/19/858581/353835.terrain b/public/terrain/19/858581/353835.terrain new file mode 100644 index 000000000..e817e8252 Binary files /dev/null and b/public/terrain/19/858581/353835.terrain differ diff --git a/public/terrain/19/858581/353836.terrain b/public/terrain/19/858581/353836.terrain new file mode 100644 index 000000000..768580339 Binary files /dev/null and b/public/terrain/19/858581/353836.terrain differ diff --git a/public/terrain/19/858581/353837.terrain b/public/terrain/19/858581/353837.terrain new file mode 100644 index 000000000..0b6394495 Binary files /dev/null and b/public/terrain/19/858581/353837.terrain differ diff --git a/public/terrain/19/858581/353838.terrain b/public/terrain/19/858581/353838.terrain new file mode 100644 index 000000000..5991fb3ab Binary files /dev/null and b/public/terrain/19/858581/353838.terrain differ diff --git a/public/terrain/19/858581/353839.terrain b/public/terrain/19/858581/353839.terrain new file mode 100644 index 000000000..211fd26e4 Binary files /dev/null and b/public/terrain/19/858581/353839.terrain differ diff --git a/public/terrain/19/858581/353840.terrain b/public/terrain/19/858581/353840.terrain new file mode 100644 index 000000000..b55857d08 Binary files /dev/null and b/public/terrain/19/858581/353840.terrain differ diff --git a/public/terrain/19/858581/353841.terrain b/public/terrain/19/858581/353841.terrain new file mode 100644 index 000000000..18848be16 Binary files /dev/null and b/public/terrain/19/858581/353841.terrain differ diff --git a/public/terrain/19/858581/353842.terrain b/public/terrain/19/858581/353842.terrain new file mode 100644 index 000000000..d7613c188 Binary files /dev/null and b/public/terrain/19/858581/353842.terrain differ diff --git a/public/terrain/19/858581/353843.terrain b/public/terrain/19/858581/353843.terrain new file mode 100644 index 000000000..2582c95d4 Binary files /dev/null and b/public/terrain/19/858581/353843.terrain differ diff --git a/public/terrain/19/858581/353844.terrain b/public/terrain/19/858581/353844.terrain new file mode 100644 index 000000000..3be995d62 Binary files /dev/null and b/public/terrain/19/858581/353844.terrain differ diff --git a/public/terrain/19/858581/353845.terrain b/public/terrain/19/858581/353845.terrain new file mode 100644 index 000000000..0138cd810 Binary files /dev/null and b/public/terrain/19/858581/353845.terrain differ diff --git a/public/terrain/19/858581/353846.terrain b/public/terrain/19/858581/353846.terrain new file mode 100644 index 000000000..901c21989 Binary files /dev/null and b/public/terrain/19/858581/353846.terrain differ diff --git a/public/terrain/19/858581/353847.terrain b/public/terrain/19/858581/353847.terrain new file mode 100644 index 000000000..4a0cd29ea Binary files /dev/null and b/public/terrain/19/858581/353847.terrain differ diff --git a/public/terrain/19/858581/353848.terrain b/public/terrain/19/858581/353848.terrain new file mode 100644 index 000000000..df2a68b69 Binary files /dev/null and b/public/terrain/19/858581/353848.terrain differ diff --git a/public/terrain/19/858581/353849.terrain b/public/terrain/19/858581/353849.terrain new file mode 100644 index 000000000..191beff5f Binary files /dev/null and b/public/terrain/19/858581/353849.terrain differ diff --git a/public/terrain/19/858581/353850.terrain b/public/terrain/19/858581/353850.terrain new file mode 100644 index 000000000..48f63c4f6 Binary files /dev/null and b/public/terrain/19/858581/353850.terrain differ diff --git a/public/terrain/19/858581/353851.terrain b/public/terrain/19/858581/353851.terrain new file mode 100644 index 000000000..47ebe2d44 Binary files /dev/null and b/public/terrain/19/858581/353851.terrain differ diff --git a/public/terrain/19/858581/353852.terrain b/public/terrain/19/858581/353852.terrain new file mode 100644 index 000000000..86f787d5a Binary files /dev/null and b/public/terrain/19/858581/353852.terrain differ diff --git a/public/terrain/19/858581/353853.terrain b/public/terrain/19/858581/353853.terrain new file mode 100644 index 000000000..fe6906709 Binary files /dev/null and b/public/terrain/19/858581/353853.terrain differ diff --git a/public/terrain/19/858581/353854.terrain b/public/terrain/19/858581/353854.terrain new file mode 100644 index 000000000..d28bf8533 Binary files /dev/null and b/public/terrain/19/858581/353854.terrain differ diff --git a/public/terrain/19/858581/353855.terrain b/public/terrain/19/858581/353855.terrain new file mode 100644 index 000000000..464380ae3 Binary files /dev/null and b/public/terrain/19/858581/353855.terrain differ diff --git a/public/terrain/19/858581/353856.terrain b/public/terrain/19/858581/353856.terrain new file mode 100644 index 000000000..ee64ad549 Binary files /dev/null and b/public/terrain/19/858581/353856.terrain differ diff --git a/public/terrain/19/858581/353857.terrain b/public/terrain/19/858581/353857.terrain new file mode 100644 index 000000000..6940b186e Binary files /dev/null and b/public/terrain/19/858581/353857.terrain differ diff --git a/public/terrain/19/858581/353858.terrain b/public/terrain/19/858581/353858.terrain new file mode 100644 index 000000000..aea1d4a9f Binary files /dev/null and b/public/terrain/19/858581/353858.terrain differ diff --git a/public/terrain/19/858581/353859.terrain b/public/terrain/19/858581/353859.terrain new file mode 100644 index 000000000..958fff372 Binary files /dev/null and b/public/terrain/19/858581/353859.terrain differ diff --git a/public/terrain/19/858581/353860.terrain b/public/terrain/19/858581/353860.terrain new file mode 100644 index 000000000..18e28a27d Binary files /dev/null and b/public/terrain/19/858581/353860.terrain differ diff --git a/public/terrain/19/858581/353861.terrain b/public/terrain/19/858581/353861.terrain new file mode 100644 index 000000000..e3d3492a0 Binary files /dev/null and b/public/terrain/19/858581/353861.terrain differ diff --git a/public/terrain/19/858581/353862.terrain b/public/terrain/19/858581/353862.terrain new file mode 100644 index 000000000..8b2107b5d Binary files /dev/null and b/public/terrain/19/858581/353862.terrain differ diff --git a/public/terrain/19/858581/353863.terrain b/public/terrain/19/858581/353863.terrain new file mode 100644 index 000000000..2dc3d9aaa Binary files /dev/null and b/public/terrain/19/858581/353863.terrain differ diff --git a/public/terrain/19/858581/353864.terrain b/public/terrain/19/858581/353864.terrain new file mode 100644 index 000000000..f80638318 Binary files /dev/null and b/public/terrain/19/858581/353864.terrain differ diff --git a/public/terrain/19/858581/353865.terrain b/public/terrain/19/858581/353865.terrain new file mode 100644 index 000000000..22ee2ead7 Binary files /dev/null and b/public/terrain/19/858581/353865.terrain differ diff --git a/public/terrain/19/858581/353866.terrain b/public/terrain/19/858581/353866.terrain new file mode 100644 index 000000000..193f1c8c0 Binary files /dev/null and b/public/terrain/19/858581/353866.terrain differ diff --git a/public/terrain/19/858581/353867.terrain b/public/terrain/19/858581/353867.terrain new file mode 100644 index 000000000..a81931a0b Binary files /dev/null and b/public/terrain/19/858581/353867.terrain differ diff --git a/public/terrain/19/858581/353868.terrain b/public/terrain/19/858581/353868.terrain new file mode 100644 index 000000000..d813822e2 Binary files /dev/null and b/public/terrain/19/858581/353868.terrain differ diff --git a/public/terrain/19/858581/353869.terrain b/public/terrain/19/858581/353869.terrain new file mode 100644 index 000000000..8937f6675 Binary files /dev/null and b/public/terrain/19/858581/353869.terrain differ diff --git a/public/terrain/19/858581/353870.terrain b/public/terrain/19/858581/353870.terrain new file mode 100644 index 000000000..db97d9bda Binary files /dev/null and b/public/terrain/19/858581/353870.terrain differ diff --git a/public/terrain/19/858581/353871.terrain b/public/terrain/19/858581/353871.terrain new file mode 100644 index 000000000..ac6c33996 Binary files /dev/null and b/public/terrain/19/858581/353871.terrain differ diff --git a/public/terrain/19/858581/353872.terrain b/public/terrain/19/858581/353872.terrain new file mode 100644 index 000000000..1019f3cd5 Binary files /dev/null and b/public/terrain/19/858581/353872.terrain differ diff --git a/public/terrain/19/858581/353873.terrain b/public/terrain/19/858581/353873.terrain new file mode 100644 index 000000000..9eb91c32b Binary files /dev/null and b/public/terrain/19/858581/353873.terrain differ diff --git a/public/terrain/19/858581/353874.terrain b/public/terrain/19/858581/353874.terrain new file mode 100644 index 000000000..456e713e8 Binary files /dev/null and b/public/terrain/19/858581/353874.terrain differ diff --git a/public/terrain/19/858581/353875.terrain b/public/terrain/19/858581/353875.terrain new file mode 100644 index 000000000..f1843e1da Binary files /dev/null and b/public/terrain/19/858581/353875.terrain differ diff --git a/public/terrain/19/858581/353876.terrain b/public/terrain/19/858581/353876.terrain new file mode 100644 index 000000000..5b34d3fdd Binary files /dev/null and b/public/terrain/19/858581/353876.terrain differ diff --git a/public/terrain/19/858581/353877.terrain b/public/terrain/19/858581/353877.terrain new file mode 100644 index 000000000..29b3f8b98 Binary files /dev/null and b/public/terrain/19/858581/353877.terrain differ diff --git a/public/terrain/19/858581/353878.terrain b/public/terrain/19/858581/353878.terrain new file mode 100644 index 000000000..1b14d7950 Binary files /dev/null and b/public/terrain/19/858581/353878.terrain differ diff --git a/public/terrain/19/858581/353879.terrain b/public/terrain/19/858581/353879.terrain new file mode 100644 index 000000000..68fe4e249 Binary files /dev/null and b/public/terrain/19/858581/353879.terrain differ diff --git a/public/terrain/19/858581/353880.terrain b/public/terrain/19/858581/353880.terrain new file mode 100644 index 000000000..c0c08d7d3 Binary files /dev/null and b/public/terrain/19/858581/353880.terrain differ diff --git a/public/terrain/19/858581/353881.terrain b/public/terrain/19/858581/353881.terrain new file mode 100644 index 000000000..71685364c Binary files /dev/null and b/public/terrain/19/858581/353881.terrain differ diff --git a/public/terrain/19/858581/353882.terrain b/public/terrain/19/858581/353882.terrain new file mode 100644 index 000000000..54fb5fda5 Binary files /dev/null and b/public/terrain/19/858581/353882.terrain differ diff --git a/public/terrain/19/858581/353883.terrain b/public/terrain/19/858581/353883.terrain new file mode 100644 index 000000000..f5f46f964 Binary files /dev/null and b/public/terrain/19/858581/353883.terrain differ diff --git a/public/terrain/19/858581/353884.terrain b/public/terrain/19/858581/353884.terrain new file mode 100644 index 000000000..d9140fa2d Binary files /dev/null and b/public/terrain/19/858581/353884.terrain differ diff --git a/public/terrain/19/858581/353885.terrain b/public/terrain/19/858581/353885.terrain new file mode 100644 index 000000000..f72bd36d0 Binary files /dev/null and b/public/terrain/19/858581/353885.terrain differ diff --git a/public/terrain/19/858581/353886.terrain b/public/terrain/19/858581/353886.terrain new file mode 100644 index 000000000..9f2e7998e Binary files /dev/null and b/public/terrain/19/858581/353886.terrain differ diff --git a/public/terrain/19/858581/353887.terrain b/public/terrain/19/858581/353887.terrain new file mode 100644 index 000000000..09963fa60 Binary files /dev/null and b/public/terrain/19/858581/353887.terrain differ diff --git a/public/terrain/19/858581/353888.terrain b/public/terrain/19/858581/353888.terrain new file mode 100644 index 000000000..db09d7602 Binary files /dev/null and b/public/terrain/19/858581/353888.terrain differ diff --git a/public/terrain/19/858581/353889.terrain b/public/terrain/19/858581/353889.terrain new file mode 100644 index 000000000..f33e537e4 Binary files /dev/null and b/public/terrain/19/858581/353889.terrain differ diff --git a/public/terrain/19/858581/353890.terrain b/public/terrain/19/858581/353890.terrain new file mode 100644 index 000000000..0e2694df7 Binary files /dev/null and b/public/terrain/19/858581/353890.terrain differ diff --git a/public/terrain/19/858581/353891.terrain b/public/terrain/19/858581/353891.terrain new file mode 100644 index 000000000..dc0b6a49f Binary files /dev/null and b/public/terrain/19/858581/353891.terrain differ diff --git a/public/terrain/19/858581/353892.terrain b/public/terrain/19/858581/353892.terrain new file mode 100644 index 000000000..503849c6c Binary files /dev/null and b/public/terrain/19/858581/353892.terrain differ diff --git a/public/terrain/19/858581/353893.terrain b/public/terrain/19/858581/353893.terrain new file mode 100644 index 000000000..c056956ec Binary files /dev/null and b/public/terrain/19/858581/353893.terrain differ diff --git a/public/terrain/19/858581/353894.terrain b/public/terrain/19/858581/353894.terrain new file mode 100644 index 000000000..c0f7ae559 Binary files /dev/null and b/public/terrain/19/858581/353894.terrain differ diff --git a/public/terrain/19/858581/353895.terrain b/public/terrain/19/858581/353895.terrain new file mode 100644 index 000000000..43a573ab4 Binary files /dev/null and b/public/terrain/19/858581/353895.terrain differ diff --git a/public/terrain/19/858581/353896.terrain b/public/terrain/19/858581/353896.terrain new file mode 100644 index 000000000..c7dc4c179 Binary files /dev/null and b/public/terrain/19/858581/353896.terrain differ diff --git a/public/terrain/19/858581/353897.terrain b/public/terrain/19/858581/353897.terrain new file mode 100644 index 000000000..f6137ca6f Binary files /dev/null and b/public/terrain/19/858581/353897.terrain differ diff --git a/public/terrain/19/858581/353898.terrain b/public/terrain/19/858581/353898.terrain new file mode 100644 index 000000000..a62ad060e Binary files /dev/null and b/public/terrain/19/858581/353898.terrain differ diff --git a/public/terrain/19/858581/353899.terrain b/public/terrain/19/858581/353899.terrain new file mode 100644 index 000000000..9bfa50fff Binary files /dev/null and b/public/terrain/19/858581/353899.terrain differ diff --git a/public/terrain/19/858581/353900.terrain b/public/terrain/19/858581/353900.terrain new file mode 100644 index 000000000..00daf5e99 Binary files /dev/null and b/public/terrain/19/858581/353900.terrain differ diff --git a/public/terrain/19/858581/353901.terrain b/public/terrain/19/858581/353901.terrain new file mode 100644 index 000000000..602108d2d Binary files /dev/null and b/public/terrain/19/858581/353901.terrain differ diff --git a/public/terrain/19/858581/353902.terrain b/public/terrain/19/858581/353902.terrain new file mode 100644 index 000000000..30ab2242f Binary files /dev/null and b/public/terrain/19/858581/353902.terrain differ diff --git a/public/terrain/19/858581/353903.terrain b/public/terrain/19/858581/353903.terrain new file mode 100644 index 000000000..810eb0011 Binary files /dev/null and b/public/terrain/19/858581/353903.terrain differ diff --git a/public/terrain/19/858581/353904.terrain b/public/terrain/19/858581/353904.terrain new file mode 100644 index 000000000..12c982fd0 Binary files /dev/null and b/public/terrain/19/858581/353904.terrain differ diff --git a/public/terrain/19/858581/353905.terrain b/public/terrain/19/858581/353905.terrain new file mode 100644 index 000000000..2d3a200b4 Binary files /dev/null and b/public/terrain/19/858581/353905.terrain differ diff --git a/public/terrain/19/858581/353906.terrain b/public/terrain/19/858581/353906.terrain new file mode 100644 index 000000000..6eda45027 Binary files /dev/null and b/public/terrain/19/858581/353906.terrain differ diff --git a/public/terrain/19/858581/353907.terrain b/public/terrain/19/858581/353907.terrain new file mode 100644 index 000000000..e4fcddb02 Binary files /dev/null and b/public/terrain/19/858581/353907.terrain differ diff --git a/public/terrain/19/858581/353908.terrain b/public/terrain/19/858581/353908.terrain new file mode 100644 index 000000000..faa2adce0 Binary files /dev/null and b/public/terrain/19/858581/353908.terrain differ diff --git a/public/terrain/19/858581/353909.terrain b/public/terrain/19/858581/353909.terrain new file mode 100644 index 000000000..b6401f249 Binary files /dev/null and b/public/terrain/19/858581/353909.terrain differ diff --git a/public/terrain/19/858581/353910.terrain b/public/terrain/19/858581/353910.terrain new file mode 100644 index 000000000..4543830b7 Binary files /dev/null and b/public/terrain/19/858581/353910.terrain differ diff --git a/public/terrain/19/858581/353911.terrain b/public/terrain/19/858581/353911.terrain new file mode 100644 index 000000000..00885505a Binary files /dev/null and b/public/terrain/19/858581/353911.terrain differ diff --git a/public/terrain/19/858581/353912.terrain b/public/terrain/19/858581/353912.terrain new file mode 100644 index 000000000..490da28db Binary files /dev/null and b/public/terrain/19/858581/353912.terrain differ diff --git a/public/terrain/19/858581/353913.terrain b/public/terrain/19/858581/353913.terrain new file mode 100644 index 000000000..61a3a9572 Binary files /dev/null and b/public/terrain/19/858581/353913.terrain differ diff --git a/public/terrain/19/858581/353914.terrain b/public/terrain/19/858581/353914.terrain new file mode 100644 index 000000000..191ab7a0e Binary files /dev/null and b/public/terrain/19/858581/353914.terrain differ diff --git a/public/terrain/19/858581/353915.terrain b/public/terrain/19/858581/353915.terrain new file mode 100644 index 000000000..0470afc02 Binary files /dev/null and b/public/terrain/19/858581/353915.terrain differ diff --git a/public/terrain/19/858581/353916.terrain b/public/terrain/19/858581/353916.terrain new file mode 100644 index 000000000..c40d5e25d Binary files /dev/null and b/public/terrain/19/858581/353916.terrain differ diff --git a/public/terrain/19/858581/353917.terrain b/public/terrain/19/858581/353917.terrain new file mode 100644 index 000000000..94abdecc4 Binary files /dev/null and b/public/terrain/19/858581/353917.terrain differ diff --git a/public/terrain/19/858581/353918.terrain b/public/terrain/19/858581/353918.terrain new file mode 100644 index 000000000..0e93755d9 Binary files /dev/null and b/public/terrain/19/858581/353918.terrain differ diff --git a/public/terrain/19/858581/353919.terrain b/public/terrain/19/858581/353919.terrain new file mode 100644 index 000000000..26a3ae70a Binary files /dev/null and b/public/terrain/19/858581/353919.terrain differ diff --git a/public/terrain/19/858581/353920.terrain b/public/terrain/19/858581/353920.terrain new file mode 100644 index 000000000..efbf5efc0 Binary files /dev/null and b/public/terrain/19/858581/353920.terrain differ diff --git a/public/terrain/19/858581/353921.terrain b/public/terrain/19/858581/353921.terrain new file mode 100644 index 000000000..c85089792 Binary files /dev/null and b/public/terrain/19/858581/353921.terrain differ diff --git a/public/terrain/19/858581/353922.terrain b/public/terrain/19/858581/353922.terrain new file mode 100644 index 000000000..4586cf37c Binary files /dev/null and b/public/terrain/19/858581/353922.terrain differ diff --git a/public/terrain/19/858581/353923.terrain b/public/terrain/19/858581/353923.terrain new file mode 100644 index 000000000..3c5b45eb1 Binary files /dev/null and b/public/terrain/19/858581/353923.terrain differ diff --git a/public/terrain/19/858581/353924.terrain b/public/terrain/19/858581/353924.terrain new file mode 100644 index 000000000..c84f11097 Binary files /dev/null and b/public/terrain/19/858581/353924.terrain differ diff --git a/public/terrain/19/858581/353925.terrain b/public/terrain/19/858581/353925.terrain new file mode 100644 index 000000000..cb0f9ba7e Binary files /dev/null and b/public/terrain/19/858581/353925.terrain differ diff --git a/public/terrain/19/858581/353926.terrain b/public/terrain/19/858581/353926.terrain new file mode 100644 index 000000000..6481d6354 Binary files /dev/null and b/public/terrain/19/858581/353926.terrain differ diff --git a/public/terrain/19/858581/353927.terrain b/public/terrain/19/858581/353927.terrain new file mode 100644 index 000000000..cda2c6c43 Binary files /dev/null and b/public/terrain/19/858581/353927.terrain differ diff --git a/public/terrain/19/858581/353928.terrain b/public/terrain/19/858581/353928.terrain new file mode 100644 index 000000000..34f5d06cc Binary files /dev/null and b/public/terrain/19/858581/353928.terrain differ diff --git a/public/terrain/19/858581/353929.terrain b/public/terrain/19/858581/353929.terrain new file mode 100644 index 000000000..c9366ae89 Binary files /dev/null and b/public/terrain/19/858581/353929.terrain differ diff --git a/public/terrain/19/858581/353930.terrain b/public/terrain/19/858581/353930.terrain new file mode 100644 index 000000000..bf162a324 Binary files /dev/null and b/public/terrain/19/858581/353930.terrain differ diff --git a/public/terrain/19/858581/353931.terrain b/public/terrain/19/858581/353931.terrain new file mode 100644 index 000000000..9322d60d3 Binary files /dev/null and b/public/terrain/19/858581/353931.terrain differ diff --git a/public/terrain/19/858581/353932.terrain b/public/terrain/19/858581/353932.terrain new file mode 100644 index 000000000..321eae653 Binary files /dev/null and b/public/terrain/19/858581/353932.terrain differ diff --git a/public/terrain/19/858581/353933.terrain b/public/terrain/19/858581/353933.terrain new file mode 100644 index 000000000..75f8b11a2 Binary files /dev/null and b/public/terrain/19/858581/353933.terrain differ diff --git a/public/terrain/19/858581/353934.terrain b/public/terrain/19/858581/353934.terrain new file mode 100644 index 000000000..905968a90 Binary files /dev/null and b/public/terrain/19/858581/353934.terrain differ diff --git a/public/terrain/19/858581/353935.terrain b/public/terrain/19/858581/353935.terrain new file mode 100644 index 000000000..a251e2fa0 Binary files /dev/null and b/public/terrain/19/858581/353935.terrain differ diff --git a/public/terrain/19/858581/353936.terrain b/public/terrain/19/858581/353936.terrain new file mode 100644 index 000000000..b04109e3d Binary files /dev/null and b/public/terrain/19/858581/353936.terrain differ diff --git a/public/terrain/19/858581/353937.terrain b/public/terrain/19/858581/353937.terrain new file mode 100644 index 000000000..ba513ebbc Binary files /dev/null and b/public/terrain/19/858581/353937.terrain differ diff --git a/public/terrain/19/858581/353938.terrain b/public/terrain/19/858581/353938.terrain new file mode 100644 index 000000000..afd241e8d Binary files /dev/null and b/public/terrain/19/858581/353938.terrain differ diff --git a/public/terrain/19/858581/353939.terrain b/public/terrain/19/858581/353939.terrain new file mode 100644 index 000000000..2a8d9843e Binary files /dev/null and b/public/terrain/19/858581/353939.terrain differ diff --git a/public/terrain/19/858581/353940.terrain b/public/terrain/19/858581/353940.terrain new file mode 100644 index 000000000..dc9d1ac35 Binary files /dev/null and b/public/terrain/19/858581/353940.terrain differ diff --git a/public/terrain/19/858581/353941.terrain b/public/terrain/19/858581/353941.terrain new file mode 100644 index 000000000..1d831e09b Binary files /dev/null and b/public/terrain/19/858581/353941.terrain differ diff --git a/public/terrain/19/858581/353942.terrain b/public/terrain/19/858581/353942.terrain new file mode 100644 index 000000000..18b2c34e7 Binary files /dev/null and b/public/terrain/19/858581/353942.terrain differ diff --git a/public/terrain/19/858581/353943.terrain b/public/terrain/19/858581/353943.terrain new file mode 100644 index 000000000..6561f670a Binary files /dev/null and b/public/terrain/19/858581/353943.terrain differ diff --git a/public/terrain/19/858581/353944.terrain b/public/terrain/19/858581/353944.terrain new file mode 100644 index 000000000..9979c0e42 Binary files /dev/null and b/public/terrain/19/858581/353944.terrain differ diff --git a/public/terrain/19/858581/353945.terrain b/public/terrain/19/858581/353945.terrain new file mode 100644 index 000000000..ff7bb1156 Binary files /dev/null and b/public/terrain/19/858581/353945.terrain differ diff --git a/public/terrain/19/858581/353946.terrain b/public/terrain/19/858581/353946.terrain new file mode 100644 index 000000000..8ab89a18b Binary files /dev/null and b/public/terrain/19/858581/353946.terrain differ diff --git a/public/terrain/19/858581/353947.terrain b/public/terrain/19/858581/353947.terrain new file mode 100644 index 000000000..365511a29 Binary files /dev/null and b/public/terrain/19/858581/353947.terrain differ diff --git a/public/terrain/19/858581/353948.terrain b/public/terrain/19/858581/353948.terrain new file mode 100644 index 000000000..d410f7864 Binary files /dev/null and b/public/terrain/19/858581/353948.terrain differ diff --git a/public/terrain/19/858581/353949.terrain b/public/terrain/19/858581/353949.terrain new file mode 100644 index 000000000..a7d8a12e2 Binary files /dev/null and b/public/terrain/19/858581/353949.terrain differ diff --git a/public/terrain/19/858581/353950.terrain b/public/terrain/19/858581/353950.terrain new file mode 100644 index 000000000..89f0fc8c4 Binary files /dev/null and b/public/terrain/19/858581/353950.terrain differ diff --git a/public/terrain/19/858581/353951.terrain b/public/terrain/19/858581/353951.terrain new file mode 100644 index 000000000..faa2462f2 Binary files /dev/null and b/public/terrain/19/858581/353951.terrain differ diff --git a/public/terrain/19/858581/353952.terrain b/public/terrain/19/858581/353952.terrain new file mode 100644 index 000000000..6d594f69b Binary files /dev/null and b/public/terrain/19/858581/353952.terrain differ diff --git a/public/terrain/19/858581/353953.terrain b/public/terrain/19/858581/353953.terrain new file mode 100644 index 000000000..c6cb5e653 Binary files /dev/null and b/public/terrain/19/858581/353953.terrain differ diff --git a/public/terrain/19/858581/353954.terrain b/public/terrain/19/858581/353954.terrain new file mode 100644 index 000000000..cda3b5131 Binary files /dev/null and b/public/terrain/19/858581/353954.terrain differ diff --git a/public/terrain/19/858581/353955.terrain b/public/terrain/19/858581/353955.terrain new file mode 100644 index 000000000..009cb1a5b Binary files /dev/null and b/public/terrain/19/858581/353955.terrain differ diff --git a/public/terrain/19/858581/353956.terrain b/public/terrain/19/858581/353956.terrain new file mode 100644 index 000000000..f7f9f2efd Binary files /dev/null and b/public/terrain/19/858581/353956.terrain differ diff --git a/public/terrain/19/858581/353957.terrain b/public/terrain/19/858581/353957.terrain new file mode 100644 index 000000000..d2857f98c Binary files /dev/null and b/public/terrain/19/858581/353957.terrain differ diff --git a/public/terrain/19/858581/353958.terrain b/public/terrain/19/858581/353958.terrain new file mode 100644 index 000000000..0230a8e69 Binary files /dev/null and b/public/terrain/19/858581/353958.terrain differ diff --git a/public/terrain/19/858581/353959.terrain b/public/terrain/19/858581/353959.terrain new file mode 100644 index 000000000..3a0079565 Binary files /dev/null and b/public/terrain/19/858581/353959.terrain differ diff --git a/public/terrain/19/858581/353960.terrain b/public/terrain/19/858581/353960.terrain new file mode 100644 index 000000000..b3c295a49 Binary files /dev/null and b/public/terrain/19/858581/353960.terrain differ diff --git a/public/terrain/19/858581/353961.terrain b/public/terrain/19/858581/353961.terrain new file mode 100644 index 000000000..f8adaf050 Binary files /dev/null and b/public/terrain/19/858581/353961.terrain differ diff --git a/public/terrain/19/858581/353962.terrain b/public/terrain/19/858581/353962.terrain new file mode 100644 index 000000000..cdd490c46 Binary files /dev/null and b/public/terrain/19/858581/353962.terrain differ diff --git a/public/terrain/19/858581/353963.terrain b/public/terrain/19/858581/353963.terrain new file mode 100644 index 000000000..6b50017ed Binary files /dev/null and b/public/terrain/19/858581/353963.terrain differ diff --git a/public/terrain/19/858581/353964.terrain b/public/terrain/19/858581/353964.terrain new file mode 100644 index 000000000..2f6e0e0ff Binary files /dev/null and b/public/terrain/19/858581/353964.terrain differ diff --git a/public/terrain/19/858581/353965.terrain b/public/terrain/19/858581/353965.terrain new file mode 100644 index 000000000..683876119 Binary files /dev/null and b/public/terrain/19/858581/353965.terrain differ diff --git a/public/terrain/19/858581/353966.terrain b/public/terrain/19/858581/353966.terrain new file mode 100644 index 000000000..f018a3730 Binary files /dev/null and b/public/terrain/19/858581/353966.terrain differ diff --git a/public/terrain/19/858581/353967.terrain b/public/terrain/19/858581/353967.terrain new file mode 100644 index 000000000..995e3a534 Binary files /dev/null and b/public/terrain/19/858581/353967.terrain differ diff --git a/public/terrain/19/858581/353968.terrain b/public/terrain/19/858581/353968.terrain new file mode 100644 index 000000000..19b5a4c4c Binary files /dev/null and b/public/terrain/19/858581/353968.terrain differ diff --git a/public/terrain/19/858581/353969.terrain b/public/terrain/19/858581/353969.terrain new file mode 100644 index 000000000..5fe6a5e20 Binary files /dev/null and b/public/terrain/19/858581/353969.terrain differ diff --git a/public/terrain/19/858581/353970.terrain b/public/terrain/19/858581/353970.terrain new file mode 100644 index 000000000..c936e429c Binary files /dev/null and b/public/terrain/19/858581/353970.terrain differ diff --git a/public/terrain/19/858581/353971.terrain b/public/terrain/19/858581/353971.terrain new file mode 100644 index 000000000..df7435490 Binary files /dev/null and b/public/terrain/19/858581/353971.terrain differ diff --git a/public/terrain/19/858581/353972.terrain b/public/terrain/19/858581/353972.terrain new file mode 100644 index 000000000..dca09b476 Binary files /dev/null and b/public/terrain/19/858581/353972.terrain differ diff --git a/public/terrain/19/858581/353973.terrain b/public/terrain/19/858581/353973.terrain new file mode 100644 index 000000000..6977ee26d Binary files /dev/null and b/public/terrain/19/858581/353973.terrain differ diff --git a/public/terrain/19/858581/353974.terrain b/public/terrain/19/858581/353974.terrain new file mode 100644 index 000000000..8f4788b17 Binary files /dev/null and b/public/terrain/19/858581/353974.terrain differ diff --git a/public/terrain/19/858581/353975.terrain b/public/terrain/19/858581/353975.terrain new file mode 100644 index 000000000..2950ef64a Binary files /dev/null and b/public/terrain/19/858581/353975.terrain differ diff --git a/public/terrain/19/858581/353976.terrain b/public/terrain/19/858581/353976.terrain new file mode 100644 index 000000000..f57932fa4 Binary files /dev/null and b/public/terrain/19/858581/353976.terrain differ diff --git a/public/terrain/19/858581/353977.terrain b/public/terrain/19/858581/353977.terrain new file mode 100644 index 000000000..8b5fb73d8 Binary files /dev/null and b/public/terrain/19/858581/353977.terrain differ diff --git a/public/terrain/19/858581/353978.terrain b/public/terrain/19/858581/353978.terrain new file mode 100644 index 000000000..81fac0294 Binary files /dev/null and b/public/terrain/19/858581/353978.terrain differ diff --git a/public/terrain/19/858581/353979.terrain b/public/terrain/19/858581/353979.terrain new file mode 100644 index 000000000..acc5b3fc9 Binary files /dev/null and b/public/terrain/19/858581/353979.terrain differ diff --git a/public/terrain/19/858581/353980.terrain b/public/terrain/19/858581/353980.terrain new file mode 100644 index 000000000..14e3949c4 Binary files /dev/null and b/public/terrain/19/858581/353980.terrain differ diff --git a/public/terrain/19/858581/353981.terrain b/public/terrain/19/858581/353981.terrain new file mode 100644 index 000000000..585f25c84 Binary files /dev/null and b/public/terrain/19/858581/353981.terrain differ diff --git a/public/terrain/19/858581/353982.terrain b/public/terrain/19/858581/353982.terrain new file mode 100644 index 000000000..57aa556ad Binary files /dev/null and b/public/terrain/19/858581/353982.terrain differ diff --git a/public/terrain/19/858581/353983.terrain b/public/terrain/19/858581/353983.terrain new file mode 100644 index 000000000..34633fa17 Binary files /dev/null and b/public/terrain/19/858581/353983.terrain differ diff --git a/public/terrain/19/858581/353984.terrain b/public/terrain/19/858581/353984.terrain new file mode 100644 index 000000000..8ffc365f1 Binary files /dev/null and b/public/terrain/19/858581/353984.terrain differ diff --git a/public/terrain/19/858581/353985.terrain b/public/terrain/19/858581/353985.terrain new file mode 100644 index 000000000..2412d44db Binary files /dev/null and b/public/terrain/19/858581/353985.terrain differ diff --git a/public/terrain/19/858581/353986.terrain b/public/terrain/19/858581/353986.terrain new file mode 100644 index 000000000..84a0ad8fa Binary files /dev/null and b/public/terrain/19/858581/353986.terrain differ diff --git a/public/terrain/19/858581/353987.terrain b/public/terrain/19/858581/353987.terrain new file mode 100644 index 000000000..375b6c627 Binary files /dev/null and b/public/terrain/19/858581/353987.terrain differ diff --git a/public/terrain/19/858581/353988.terrain b/public/terrain/19/858581/353988.terrain new file mode 100644 index 000000000..f43309583 Binary files /dev/null and b/public/terrain/19/858581/353988.terrain differ diff --git a/public/terrain/19/858581/353989.terrain b/public/terrain/19/858581/353989.terrain new file mode 100644 index 000000000..e6eb78cd6 Binary files /dev/null and b/public/terrain/19/858581/353989.terrain differ diff --git a/public/terrain/19/858581/353990.terrain b/public/terrain/19/858581/353990.terrain new file mode 100644 index 000000000..859da1d8d Binary files /dev/null and b/public/terrain/19/858581/353990.terrain differ diff --git a/public/terrain/19/858581/353991.terrain b/public/terrain/19/858581/353991.terrain new file mode 100644 index 000000000..85076b877 Binary files /dev/null and b/public/terrain/19/858581/353991.terrain differ diff --git a/public/terrain/19/858581/353992.terrain b/public/terrain/19/858581/353992.terrain new file mode 100644 index 000000000..9f3535de1 Binary files /dev/null and b/public/terrain/19/858581/353992.terrain differ diff --git a/public/terrain/19/858581/353993.terrain b/public/terrain/19/858581/353993.terrain new file mode 100644 index 000000000..7d17addd1 Binary files /dev/null and b/public/terrain/19/858581/353993.terrain differ diff --git a/public/terrain/19/858581/353994.terrain b/public/terrain/19/858581/353994.terrain new file mode 100644 index 000000000..2fc0a7535 Binary files /dev/null and b/public/terrain/19/858581/353994.terrain differ diff --git a/public/terrain/19/858581/353995.terrain b/public/terrain/19/858581/353995.terrain new file mode 100644 index 000000000..3997f9e3c Binary files /dev/null and b/public/terrain/19/858581/353995.terrain differ diff --git a/public/terrain/19/858581/353996.terrain b/public/terrain/19/858581/353996.terrain new file mode 100644 index 000000000..7b4799195 Binary files /dev/null and b/public/terrain/19/858581/353996.terrain differ diff --git a/public/terrain/19/858581/353997.terrain b/public/terrain/19/858581/353997.terrain new file mode 100644 index 000000000..50e543925 Binary files /dev/null and b/public/terrain/19/858581/353997.terrain differ diff --git a/public/terrain/19/858581/353998.terrain b/public/terrain/19/858581/353998.terrain new file mode 100644 index 000000000..91b28aeac Binary files /dev/null and b/public/terrain/19/858581/353998.terrain differ diff --git a/public/terrain/19/858581/353999.terrain b/public/terrain/19/858581/353999.terrain new file mode 100644 index 000000000..bef6876ba Binary files /dev/null and b/public/terrain/19/858581/353999.terrain differ diff --git a/public/terrain/19/858581/354000.terrain b/public/terrain/19/858581/354000.terrain new file mode 100644 index 000000000..f144b7485 Binary files /dev/null and b/public/terrain/19/858581/354000.terrain differ diff --git a/public/terrain/19/858581/354001.terrain b/public/terrain/19/858581/354001.terrain new file mode 100644 index 000000000..83d3622dc Binary files /dev/null and b/public/terrain/19/858581/354001.terrain differ diff --git a/public/terrain/19/858581/354002.terrain b/public/terrain/19/858581/354002.terrain new file mode 100644 index 000000000..92959ae2a Binary files /dev/null and b/public/terrain/19/858581/354002.terrain differ diff --git a/public/terrain/19/858581/354003.terrain b/public/terrain/19/858581/354003.terrain new file mode 100644 index 000000000..0d7611ad4 Binary files /dev/null and b/public/terrain/19/858581/354003.terrain differ diff --git a/public/terrain/19/858581/354004.terrain b/public/terrain/19/858581/354004.terrain new file mode 100644 index 000000000..884af2b8d Binary files /dev/null and b/public/terrain/19/858581/354004.terrain differ diff --git a/public/terrain/19/858581/354005.terrain b/public/terrain/19/858581/354005.terrain new file mode 100644 index 000000000..53c5369a4 Binary files /dev/null and b/public/terrain/19/858581/354005.terrain differ diff --git a/public/terrain/19/858581/354006.terrain b/public/terrain/19/858581/354006.terrain new file mode 100644 index 000000000..082333d99 Binary files /dev/null and b/public/terrain/19/858581/354006.terrain differ diff --git a/public/terrain/19/858581/354007.terrain b/public/terrain/19/858581/354007.terrain new file mode 100644 index 000000000..4ec8df944 Binary files /dev/null and b/public/terrain/19/858581/354007.terrain differ diff --git a/public/terrain/19/858581/354008.terrain b/public/terrain/19/858581/354008.terrain new file mode 100644 index 000000000..a12b9b349 Binary files /dev/null and b/public/terrain/19/858581/354008.terrain differ diff --git a/public/terrain/19/858581/354009.terrain b/public/terrain/19/858581/354009.terrain new file mode 100644 index 000000000..9526b5e73 Binary files /dev/null and b/public/terrain/19/858581/354009.terrain differ diff --git a/public/terrain/19/858581/354010.terrain b/public/terrain/19/858581/354010.terrain new file mode 100644 index 000000000..c401ff971 Binary files /dev/null and b/public/terrain/19/858581/354010.terrain differ diff --git a/public/terrain/19/858581/354011.terrain b/public/terrain/19/858581/354011.terrain new file mode 100644 index 000000000..d8b5b7e7d Binary files /dev/null and b/public/terrain/19/858581/354011.terrain differ diff --git a/public/terrain/19/858581/354012.terrain b/public/terrain/19/858581/354012.terrain new file mode 100644 index 000000000..8e602cc4b Binary files /dev/null and b/public/terrain/19/858581/354012.terrain differ diff --git a/public/terrain/19/858581/354013.terrain b/public/terrain/19/858581/354013.terrain new file mode 100644 index 000000000..ef35556bd Binary files /dev/null and b/public/terrain/19/858581/354013.terrain differ diff --git a/public/terrain/19/858581/354014.terrain b/public/terrain/19/858581/354014.terrain new file mode 100644 index 000000000..04476fa0d Binary files /dev/null and b/public/terrain/19/858581/354014.terrain differ diff --git a/public/terrain/19/858581/354015.terrain b/public/terrain/19/858581/354015.terrain new file mode 100644 index 000000000..56bcc8567 Binary files /dev/null and b/public/terrain/19/858581/354015.terrain differ diff --git a/public/terrain/19/858581/354016.terrain b/public/terrain/19/858581/354016.terrain new file mode 100644 index 000000000..a208f9aa3 Binary files /dev/null and b/public/terrain/19/858581/354016.terrain differ diff --git a/public/terrain/19/858581/354017.terrain b/public/terrain/19/858581/354017.terrain new file mode 100644 index 000000000..9e26b6d72 Binary files /dev/null and b/public/terrain/19/858581/354017.terrain differ diff --git a/public/terrain/19/858581/354018.terrain b/public/terrain/19/858581/354018.terrain new file mode 100644 index 000000000..d51670c17 Binary files /dev/null and b/public/terrain/19/858581/354018.terrain differ diff --git a/public/terrain/19/858581/354019.terrain b/public/terrain/19/858581/354019.terrain new file mode 100644 index 000000000..c2ef01f9a Binary files /dev/null and b/public/terrain/19/858581/354019.terrain differ diff --git a/public/terrain/19/858581/354020.terrain b/public/terrain/19/858581/354020.terrain new file mode 100644 index 000000000..ecd7e1d02 Binary files /dev/null and b/public/terrain/19/858581/354020.terrain differ diff --git a/public/terrain/19/858581/354021.terrain b/public/terrain/19/858581/354021.terrain new file mode 100644 index 000000000..4c7bcdded Binary files /dev/null and b/public/terrain/19/858581/354021.terrain differ diff --git a/public/terrain/19/858581/354022.terrain b/public/terrain/19/858581/354022.terrain new file mode 100644 index 000000000..a3b3be565 Binary files /dev/null and b/public/terrain/19/858581/354022.terrain differ diff --git a/public/terrain/19/858581/354023.terrain b/public/terrain/19/858581/354023.terrain new file mode 100644 index 000000000..b650de910 Binary files /dev/null and b/public/terrain/19/858581/354023.terrain differ diff --git a/public/terrain/19/858581/354024.terrain b/public/terrain/19/858581/354024.terrain new file mode 100644 index 000000000..407d9c745 Binary files /dev/null and b/public/terrain/19/858581/354024.terrain differ diff --git a/public/terrain/19/858581/354025.terrain b/public/terrain/19/858581/354025.terrain new file mode 100644 index 000000000..4c508d828 Binary files /dev/null and b/public/terrain/19/858581/354025.terrain differ diff --git a/public/terrain/19/858581/354026.terrain b/public/terrain/19/858581/354026.terrain new file mode 100644 index 000000000..39a7528c3 Binary files /dev/null and b/public/terrain/19/858581/354026.terrain differ diff --git a/public/terrain/19/858581/354027.terrain b/public/terrain/19/858581/354027.terrain new file mode 100644 index 000000000..406052101 Binary files /dev/null and b/public/terrain/19/858581/354027.terrain differ diff --git a/public/terrain/19/858581/354028.terrain b/public/terrain/19/858581/354028.terrain new file mode 100644 index 000000000..addcd5570 Binary files /dev/null and b/public/terrain/19/858581/354028.terrain differ diff --git a/public/terrain/19/858581/354029.terrain b/public/terrain/19/858581/354029.terrain new file mode 100644 index 000000000..d166c93e4 Binary files /dev/null and b/public/terrain/19/858581/354029.terrain differ diff --git a/public/terrain/19/858581/354030.terrain b/public/terrain/19/858581/354030.terrain new file mode 100644 index 000000000..8ee3e7928 Binary files /dev/null and b/public/terrain/19/858581/354030.terrain differ diff --git a/public/terrain/19/858581/354031.terrain b/public/terrain/19/858581/354031.terrain new file mode 100644 index 000000000..78a87ced4 Binary files /dev/null and b/public/terrain/19/858581/354031.terrain differ diff --git a/public/terrain/19/858581/354032.terrain b/public/terrain/19/858581/354032.terrain new file mode 100644 index 000000000..c320efa06 Binary files /dev/null and b/public/terrain/19/858581/354032.terrain differ diff --git a/public/terrain/19/858581/354033.terrain b/public/terrain/19/858581/354033.terrain new file mode 100644 index 000000000..ab15058d8 Binary files /dev/null and b/public/terrain/19/858581/354033.terrain differ diff --git a/public/terrain/19/858581/354034.terrain b/public/terrain/19/858581/354034.terrain new file mode 100644 index 000000000..a5970677d Binary files /dev/null and b/public/terrain/19/858581/354034.terrain differ diff --git a/public/terrain/19/858581/354035.terrain b/public/terrain/19/858581/354035.terrain new file mode 100644 index 000000000..8dfa9b0c7 Binary files /dev/null and b/public/terrain/19/858581/354035.terrain differ diff --git a/public/terrain/19/858581/354036.terrain b/public/terrain/19/858581/354036.terrain new file mode 100644 index 000000000..ae25b79d8 Binary files /dev/null and b/public/terrain/19/858581/354036.terrain differ diff --git a/public/terrain/19/858581/354037.terrain b/public/terrain/19/858581/354037.terrain new file mode 100644 index 000000000..9ff8954a4 Binary files /dev/null and b/public/terrain/19/858581/354037.terrain differ diff --git a/public/terrain/19/858581/354038.terrain b/public/terrain/19/858581/354038.terrain new file mode 100644 index 000000000..4c6559a4e Binary files /dev/null and b/public/terrain/19/858581/354038.terrain differ diff --git a/public/terrain/19/858581/354039.terrain b/public/terrain/19/858581/354039.terrain new file mode 100644 index 000000000..c30b6e01a Binary files /dev/null and b/public/terrain/19/858581/354039.terrain differ diff --git a/public/terrain/19/858581/354040.terrain b/public/terrain/19/858581/354040.terrain new file mode 100644 index 000000000..bb0653745 Binary files /dev/null and b/public/terrain/19/858581/354040.terrain differ diff --git a/public/terrain/19/858581/354041.terrain b/public/terrain/19/858581/354041.terrain new file mode 100644 index 000000000..069e1cafb Binary files /dev/null and b/public/terrain/19/858581/354041.terrain differ diff --git a/public/terrain/19/858581/354042.terrain b/public/terrain/19/858581/354042.terrain new file mode 100644 index 000000000..a207b0070 Binary files /dev/null and b/public/terrain/19/858581/354042.terrain differ diff --git a/public/terrain/19/858581/354043.terrain b/public/terrain/19/858581/354043.terrain new file mode 100644 index 000000000..613923c43 Binary files /dev/null and b/public/terrain/19/858581/354043.terrain differ diff --git a/public/terrain/19/858581/354044.terrain b/public/terrain/19/858581/354044.terrain new file mode 100644 index 000000000..698750d8b Binary files /dev/null and b/public/terrain/19/858581/354044.terrain differ diff --git a/public/terrain/19/858581/354045.terrain b/public/terrain/19/858581/354045.terrain new file mode 100644 index 000000000..db2741cf4 Binary files /dev/null and b/public/terrain/19/858581/354045.terrain differ diff --git a/public/terrain/19/858581/354046.terrain b/public/terrain/19/858581/354046.terrain new file mode 100644 index 000000000..1418e9343 Binary files /dev/null and b/public/terrain/19/858581/354046.terrain differ diff --git a/public/terrain/19/858581/354047.terrain b/public/terrain/19/858581/354047.terrain new file mode 100644 index 000000000..520f2eabe Binary files /dev/null and b/public/terrain/19/858581/354047.terrain differ diff --git a/public/terrain/19/858581/354048.terrain b/public/terrain/19/858581/354048.terrain new file mode 100644 index 000000000..1f86ee635 Binary files /dev/null and b/public/terrain/19/858581/354048.terrain differ diff --git a/public/terrain/19/858581/354049.terrain b/public/terrain/19/858581/354049.terrain new file mode 100644 index 000000000..9edba5f33 Binary files /dev/null and b/public/terrain/19/858581/354049.terrain differ diff --git a/public/terrain/19/858581/354050.terrain b/public/terrain/19/858581/354050.terrain new file mode 100644 index 000000000..ff4412996 Binary files /dev/null and b/public/terrain/19/858581/354050.terrain differ diff --git a/public/terrain/19/858581/354051.terrain b/public/terrain/19/858581/354051.terrain new file mode 100644 index 000000000..4f362bbde Binary files /dev/null and b/public/terrain/19/858581/354051.terrain differ diff --git a/public/terrain/19/858581/354052.terrain b/public/terrain/19/858581/354052.terrain new file mode 100644 index 000000000..a30b6ee0b Binary files /dev/null and b/public/terrain/19/858581/354052.terrain differ diff --git a/public/terrain/19/858581/354053.terrain b/public/terrain/19/858581/354053.terrain new file mode 100644 index 000000000..5014fd6af Binary files /dev/null and b/public/terrain/19/858581/354053.terrain differ diff --git a/public/terrain/19/858581/354054.terrain b/public/terrain/19/858581/354054.terrain new file mode 100644 index 000000000..61632bd2b Binary files /dev/null and b/public/terrain/19/858581/354054.terrain differ diff --git a/public/terrain/19/858581/354055.terrain b/public/terrain/19/858581/354055.terrain new file mode 100644 index 000000000..f89b116ad Binary files /dev/null and b/public/terrain/19/858581/354055.terrain differ diff --git a/public/terrain/19/858581/354056.terrain b/public/terrain/19/858581/354056.terrain new file mode 100644 index 000000000..6d5acdaa7 Binary files /dev/null and b/public/terrain/19/858581/354056.terrain differ diff --git a/public/terrain/19/858581/354057.terrain b/public/terrain/19/858581/354057.terrain new file mode 100644 index 000000000..be4c8102a Binary files /dev/null and b/public/terrain/19/858581/354057.terrain differ diff --git a/public/terrain/19/858581/354058.terrain b/public/terrain/19/858581/354058.terrain new file mode 100644 index 000000000..36dbffb04 Binary files /dev/null and b/public/terrain/19/858581/354058.terrain differ diff --git a/public/terrain/19/858581/354059.terrain b/public/terrain/19/858581/354059.terrain new file mode 100644 index 000000000..f8e204700 Binary files /dev/null and b/public/terrain/19/858581/354059.terrain differ diff --git a/public/terrain/19/858582/353743.terrain b/public/terrain/19/858582/353743.terrain new file mode 100644 index 000000000..9951a5b16 Binary files /dev/null and b/public/terrain/19/858582/353743.terrain differ diff --git a/public/terrain/19/858582/353744.terrain b/public/terrain/19/858582/353744.terrain new file mode 100644 index 000000000..c6cb2a456 Binary files /dev/null and b/public/terrain/19/858582/353744.terrain differ diff --git a/public/terrain/19/858582/353745.terrain b/public/terrain/19/858582/353745.terrain new file mode 100644 index 000000000..99d50453d Binary files /dev/null and b/public/terrain/19/858582/353745.terrain differ diff --git a/public/terrain/19/858582/353746.terrain b/public/terrain/19/858582/353746.terrain new file mode 100644 index 000000000..d4a39c33f Binary files /dev/null and b/public/terrain/19/858582/353746.terrain differ diff --git a/public/terrain/19/858582/353747.terrain b/public/terrain/19/858582/353747.terrain new file mode 100644 index 000000000..96fa49cf2 Binary files /dev/null and b/public/terrain/19/858582/353747.terrain differ diff --git a/public/terrain/19/858582/353748.terrain b/public/terrain/19/858582/353748.terrain new file mode 100644 index 000000000..524ad606e Binary files /dev/null and b/public/terrain/19/858582/353748.terrain differ diff --git a/public/terrain/19/858582/353749.terrain b/public/terrain/19/858582/353749.terrain new file mode 100644 index 000000000..a9e774126 Binary files /dev/null and b/public/terrain/19/858582/353749.terrain differ diff --git a/public/terrain/19/858582/353750.terrain b/public/terrain/19/858582/353750.terrain new file mode 100644 index 000000000..bfe9c2726 Binary files /dev/null and b/public/terrain/19/858582/353750.terrain differ diff --git a/public/terrain/19/858582/353751.terrain b/public/terrain/19/858582/353751.terrain new file mode 100644 index 000000000..c26f156d0 Binary files /dev/null and b/public/terrain/19/858582/353751.terrain differ diff --git a/public/terrain/19/858582/353752.terrain b/public/terrain/19/858582/353752.terrain new file mode 100644 index 000000000..474cb2809 Binary files /dev/null and b/public/terrain/19/858582/353752.terrain differ diff --git a/public/terrain/19/858582/353753.terrain b/public/terrain/19/858582/353753.terrain new file mode 100644 index 000000000..719ad35fe Binary files /dev/null and b/public/terrain/19/858582/353753.terrain differ diff --git a/public/terrain/19/858582/353754.terrain b/public/terrain/19/858582/353754.terrain new file mode 100644 index 000000000..a80338b1d Binary files /dev/null and b/public/terrain/19/858582/353754.terrain differ diff --git a/public/terrain/19/858582/353755.terrain b/public/terrain/19/858582/353755.terrain new file mode 100644 index 000000000..f3f046c81 Binary files /dev/null and b/public/terrain/19/858582/353755.terrain differ diff --git a/public/terrain/19/858582/353756.terrain b/public/terrain/19/858582/353756.terrain new file mode 100644 index 000000000..f94244b6b Binary files /dev/null and b/public/terrain/19/858582/353756.terrain differ diff --git a/public/terrain/19/858582/353757.terrain b/public/terrain/19/858582/353757.terrain new file mode 100644 index 000000000..8957385be Binary files /dev/null and b/public/terrain/19/858582/353757.terrain differ diff --git a/public/terrain/19/858582/353758.terrain b/public/terrain/19/858582/353758.terrain new file mode 100644 index 000000000..748f5ba5c Binary files /dev/null and b/public/terrain/19/858582/353758.terrain differ diff --git a/public/terrain/19/858582/353759.terrain b/public/terrain/19/858582/353759.terrain new file mode 100644 index 000000000..0fe2b6219 Binary files /dev/null and b/public/terrain/19/858582/353759.terrain differ diff --git a/public/terrain/19/858582/353760.terrain b/public/terrain/19/858582/353760.terrain new file mode 100644 index 000000000..4223ab1b1 Binary files /dev/null and b/public/terrain/19/858582/353760.terrain differ diff --git a/public/terrain/19/858582/353761.terrain b/public/terrain/19/858582/353761.terrain new file mode 100644 index 000000000..5ad2afe53 Binary files /dev/null and b/public/terrain/19/858582/353761.terrain differ diff --git a/public/terrain/19/858582/353762.terrain b/public/terrain/19/858582/353762.terrain new file mode 100644 index 000000000..8f52ba653 Binary files /dev/null and b/public/terrain/19/858582/353762.terrain differ diff --git a/public/terrain/19/858582/353763.terrain b/public/terrain/19/858582/353763.terrain new file mode 100644 index 000000000..2c80db118 Binary files /dev/null and b/public/terrain/19/858582/353763.terrain differ diff --git a/public/terrain/19/858582/353764.terrain b/public/terrain/19/858582/353764.terrain new file mode 100644 index 000000000..a85a0de1f Binary files /dev/null and b/public/terrain/19/858582/353764.terrain differ diff --git a/public/terrain/19/858582/353765.terrain b/public/terrain/19/858582/353765.terrain new file mode 100644 index 000000000..584d1595f Binary files /dev/null and b/public/terrain/19/858582/353765.terrain differ diff --git a/public/terrain/19/858582/353766.terrain b/public/terrain/19/858582/353766.terrain new file mode 100644 index 000000000..704bd3245 Binary files /dev/null and b/public/terrain/19/858582/353766.terrain differ diff --git a/public/terrain/19/858582/353767.terrain b/public/terrain/19/858582/353767.terrain new file mode 100644 index 000000000..4b7068a80 Binary files /dev/null and b/public/terrain/19/858582/353767.terrain differ diff --git a/public/terrain/19/858582/353768.terrain b/public/terrain/19/858582/353768.terrain new file mode 100644 index 000000000..848990b3d Binary files /dev/null and b/public/terrain/19/858582/353768.terrain differ diff --git a/public/terrain/19/858582/353769.terrain b/public/terrain/19/858582/353769.terrain new file mode 100644 index 000000000..ec5d1498e Binary files /dev/null and b/public/terrain/19/858582/353769.terrain differ diff --git a/public/terrain/19/858582/353770.terrain b/public/terrain/19/858582/353770.terrain new file mode 100644 index 000000000..1d51a218e Binary files /dev/null and b/public/terrain/19/858582/353770.terrain differ diff --git a/public/terrain/19/858582/353771.terrain b/public/terrain/19/858582/353771.terrain new file mode 100644 index 000000000..e19f77547 Binary files /dev/null and b/public/terrain/19/858582/353771.terrain differ diff --git a/public/terrain/19/858582/353772.terrain b/public/terrain/19/858582/353772.terrain new file mode 100644 index 000000000..6f2608bf2 Binary files /dev/null and b/public/terrain/19/858582/353772.terrain differ diff --git a/public/terrain/19/858582/353773.terrain b/public/terrain/19/858582/353773.terrain new file mode 100644 index 000000000..be9c51ec7 Binary files /dev/null and b/public/terrain/19/858582/353773.terrain differ diff --git a/public/terrain/19/858582/353774.terrain b/public/terrain/19/858582/353774.terrain new file mode 100644 index 000000000..70133f37a Binary files /dev/null and b/public/terrain/19/858582/353774.terrain differ diff --git a/public/terrain/19/858582/353775.terrain b/public/terrain/19/858582/353775.terrain new file mode 100644 index 000000000..ca097b1c1 Binary files /dev/null and b/public/terrain/19/858582/353775.terrain differ diff --git a/public/terrain/19/858582/353776.terrain b/public/terrain/19/858582/353776.terrain new file mode 100644 index 000000000..bb77f34a2 Binary files /dev/null and b/public/terrain/19/858582/353776.terrain differ diff --git a/public/terrain/19/858582/353777.terrain b/public/terrain/19/858582/353777.terrain new file mode 100644 index 000000000..b0be84a7f Binary files /dev/null and b/public/terrain/19/858582/353777.terrain differ diff --git a/public/terrain/19/858582/353778.terrain b/public/terrain/19/858582/353778.terrain new file mode 100644 index 000000000..4b37a9e16 Binary files /dev/null and b/public/terrain/19/858582/353778.terrain differ diff --git a/public/terrain/19/858582/353779.terrain b/public/terrain/19/858582/353779.terrain new file mode 100644 index 000000000..6008ed79d Binary files /dev/null and b/public/terrain/19/858582/353779.terrain differ diff --git a/public/terrain/19/858582/353780.terrain b/public/terrain/19/858582/353780.terrain new file mode 100644 index 000000000..f4fa98dbc Binary files /dev/null and b/public/terrain/19/858582/353780.terrain differ diff --git a/public/terrain/19/858582/353781.terrain b/public/terrain/19/858582/353781.terrain new file mode 100644 index 000000000..8291a165d Binary files /dev/null and b/public/terrain/19/858582/353781.terrain differ diff --git a/public/terrain/19/858582/353782.terrain b/public/terrain/19/858582/353782.terrain new file mode 100644 index 000000000..9761db77b Binary files /dev/null and b/public/terrain/19/858582/353782.terrain differ diff --git a/public/terrain/19/858582/353783.terrain b/public/terrain/19/858582/353783.terrain new file mode 100644 index 000000000..431e581c7 Binary files /dev/null and b/public/terrain/19/858582/353783.terrain differ diff --git a/public/terrain/19/858582/353784.terrain b/public/terrain/19/858582/353784.terrain new file mode 100644 index 000000000..3f2f3d808 Binary files /dev/null and b/public/terrain/19/858582/353784.terrain differ diff --git a/public/terrain/19/858582/353785.terrain b/public/terrain/19/858582/353785.terrain new file mode 100644 index 000000000..a1d301226 Binary files /dev/null and b/public/terrain/19/858582/353785.terrain differ diff --git a/public/terrain/19/858582/353786.terrain b/public/terrain/19/858582/353786.terrain new file mode 100644 index 000000000..0b88a6729 Binary files /dev/null and b/public/terrain/19/858582/353786.terrain differ diff --git a/public/terrain/19/858582/353787.terrain b/public/terrain/19/858582/353787.terrain new file mode 100644 index 000000000..941598c30 Binary files /dev/null and b/public/terrain/19/858582/353787.terrain differ diff --git a/public/terrain/19/858582/353788.terrain b/public/terrain/19/858582/353788.terrain new file mode 100644 index 000000000..878fa0a7b Binary files /dev/null and b/public/terrain/19/858582/353788.terrain differ diff --git a/public/terrain/19/858582/353789.terrain b/public/terrain/19/858582/353789.terrain new file mode 100644 index 000000000..6e5f236fd Binary files /dev/null and b/public/terrain/19/858582/353789.terrain differ diff --git a/public/terrain/19/858582/353790.terrain b/public/terrain/19/858582/353790.terrain new file mode 100644 index 000000000..5c272da0b Binary files /dev/null and b/public/terrain/19/858582/353790.terrain differ diff --git a/public/terrain/19/858582/353791.terrain b/public/terrain/19/858582/353791.terrain new file mode 100644 index 000000000..d3152fe8f Binary files /dev/null and b/public/terrain/19/858582/353791.terrain differ diff --git a/public/terrain/19/858582/353792.terrain b/public/terrain/19/858582/353792.terrain new file mode 100644 index 000000000..cdbe774a3 Binary files /dev/null and b/public/terrain/19/858582/353792.terrain differ diff --git a/public/terrain/19/858582/353793.terrain b/public/terrain/19/858582/353793.terrain new file mode 100644 index 000000000..55f95becf Binary files /dev/null and b/public/terrain/19/858582/353793.terrain differ diff --git a/public/terrain/19/858582/353794.terrain b/public/terrain/19/858582/353794.terrain new file mode 100644 index 000000000..dbf0605c4 Binary files /dev/null and b/public/terrain/19/858582/353794.terrain differ diff --git a/public/terrain/19/858582/353795.terrain b/public/terrain/19/858582/353795.terrain new file mode 100644 index 000000000..ec29cfd90 Binary files /dev/null and b/public/terrain/19/858582/353795.terrain differ diff --git a/public/terrain/19/858582/353796.terrain b/public/terrain/19/858582/353796.terrain new file mode 100644 index 000000000..04a68bd6a Binary files /dev/null and b/public/terrain/19/858582/353796.terrain differ diff --git a/public/terrain/19/858582/353797.terrain b/public/terrain/19/858582/353797.terrain new file mode 100644 index 000000000..0474528ff Binary files /dev/null and b/public/terrain/19/858582/353797.terrain differ diff --git a/public/terrain/19/858582/353798.terrain b/public/terrain/19/858582/353798.terrain new file mode 100644 index 000000000..63942c6a8 Binary files /dev/null and b/public/terrain/19/858582/353798.terrain differ diff --git a/public/terrain/19/858582/353799.terrain b/public/terrain/19/858582/353799.terrain new file mode 100644 index 000000000..46389a632 Binary files /dev/null and b/public/terrain/19/858582/353799.terrain differ diff --git a/public/terrain/19/858582/353800.terrain b/public/terrain/19/858582/353800.terrain new file mode 100644 index 000000000..8d28d4f64 Binary files /dev/null and b/public/terrain/19/858582/353800.terrain differ diff --git a/public/terrain/19/858582/353801.terrain b/public/terrain/19/858582/353801.terrain new file mode 100644 index 000000000..50d975849 Binary files /dev/null and b/public/terrain/19/858582/353801.terrain differ diff --git a/public/terrain/19/858582/353802.terrain b/public/terrain/19/858582/353802.terrain new file mode 100644 index 000000000..bea1cee70 Binary files /dev/null and b/public/terrain/19/858582/353802.terrain differ diff --git a/public/terrain/19/858582/353803.terrain b/public/terrain/19/858582/353803.terrain new file mode 100644 index 000000000..b2e2b746b Binary files /dev/null and b/public/terrain/19/858582/353803.terrain differ diff --git a/public/terrain/19/858582/353804.terrain b/public/terrain/19/858582/353804.terrain new file mode 100644 index 000000000..7f295dd1e Binary files /dev/null and b/public/terrain/19/858582/353804.terrain differ diff --git a/public/terrain/19/858582/353805.terrain b/public/terrain/19/858582/353805.terrain new file mode 100644 index 000000000..e300c1f48 Binary files /dev/null and b/public/terrain/19/858582/353805.terrain differ diff --git a/public/terrain/19/858582/353806.terrain b/public/terrain/19/858582/353806.terrain new file mode 100644 index 000000000..b144c4553 Binary files /dev/null and b/public/terrain/19/858582/353806.terrain differ diff --git a/public/terrain/19/858582/353807.terrain b/public/terrain/19/858582/353807.terrain new file mode 100644 index 000000000..20b58bcd1 Binary files /dev/null and b/public/terrain/19/858582/353807.terrain differ diff --git a/public/terrain/19/858582/353808.terrain b/public/terrain/19/858582/353808.terrain new file mode 100644 index 000000000..4b058b875 Binary files /dev/null and b/public/terrain/19/858582/353808.terrain differ diff --git a/public/terrain/19/858582/353809.terrain b/public/terrain/19/858582/353809.terrain new file mode 100644 index 000000000..0cb60e3c4 Binary files /dev/null and b/public/terrain/19/858582/353809.terrain differ diff --git a/public/terrain/19/858582/353810.terrain b/public/terrain/19/858582/353810.terrain new file mode 100644 index 000000000..64fc461c4 Binary files /dev/null and b/public/terrain/19/858582/353810.terrain differ diff --git a/public/terrain/19/858582/353811.terrain b/public/terrain/19/858582/353811.terrain new file mode 100644 index 000000000..cc719325c Binary files /dev/null and b/public/terrain/19/858582/353811.terrain differ diff --git a/public/terrain/19/858582/353812.terrain b/public/terrain/19/858582/353812.terrain new file mode 100644 index 000000000..f163ee681 Binary files /dev/null and b/public/terrain/19/858582/353812.terrain differ diff --git a/public/terrain/19/858582/353813.terrain b/public/terrain/19/858582/353813.terrain new file mode 100644 index 000000000..1dd1cae39 Binary files /dev/null and b/public/terrain/19/858582/353813.terrain differ diff --git a/public/terrain/19/858582/353814.terrain b/public/terrain/19/858582/353814.terrain new file mode 100644 index 000000000..6f8789c1e Binary files /dev/null and b/public/terrain/19/858582/353814.terrain differ diff --git a/public/terrain/19/858582/353815.terrain b/public/terrain/19/858582/353815.terrain new file mode 100644 index 000000000..59c15d5ec Binary files /dev/null and b/public/terrain/19/858582/353815.terrain differ diff --git a/public/terrain/19/858582/353816.terrain b/public/terrain/19/858582/353816.terrain new file mode 100644 index 000000000..e9dd3966b Binary files /dev/null and b/public/terrain/19/858582/353816.terrain differ diff --git a/public/terrain/19/858582/353817.terrain b/public/terrain/19/858582/353817.terrain new file mode 100644 index 000000000..c5f0e2e66 Binary files /dev/null and b/public/terrain/19/858582/353817.terrain differ diff --git a/public/terrain/19/858582/353818.terrain b/public/terrain/19/858582/353818.terrain new file mode 100644 index 000000000..ba871e7c7 Binary files /dev/null and b/public/terrain/19/858582/353818.terrain differ diff --git a/public/terrain/19/858582/353819.terrain b/public/terrain/19/858582/353819.terrain new file mode 100644 index 000000000..99df2e38e Binary files /dev/null and b/public/terrain/19/858582/353819.terrain differ diff --git a/public/terrain/19/858582/353820.terrain b/public/terrain/19/858582/353820.terrain new file mode 100644 index 000000000..a6458ab29 Binary files /dev/null and b/public/terrain/19/858582/353820.terrain differ diff --git a/public/terrain/19/858582/353821.terrain b/public/terrain/19/858582/353821.terrain new file mode 100644 index 000000000..f3c4f0810 Binary files /dev/null and b/public/terrain/19/858582/353821.terrain differ diff --git a/public/terrain/19/858582/353822.terrain b/public/terrain/19/858582/353822.terrain new file mode 100644 index 000000000..2865ae952 Binary files /dev/null and b/public/terrain/19/858582/353822.terrain differ diff --git a/public/terrain/19/858582/353823.terrain b/public/terrain/19/858582/353823.terrain new file mode 100644 index 000000000..d5fb6d162 Binary files /dev/null and b/public/terrain/19/858582/353823.terrain differ diff --git a/public/terrain/19/858582/353824.terrain b/public/terrain/19/858582/353824.terrain new file mode 100644 index 000000000..fb72fe632 Binary files /dev/null and b/public/terrain/19/858582/353824.terrain differ diff --git a/public/terrain/19/858582/353825.terrain b/public/terrain/19/858582/353825.terrain new file mode 100644 index 000000000..230ccb8cd Binary files /dev/null and b/public/terrain/19/858582/353825.terrain differ diff --git a/public/terrain/19/858582/353826.terrain b/public/terrain/19/858582/353826.terrain new file mode 100644 index 000000000..70f76a0a8 Binary files /dev/null and b/public/terrain/19/858582/353826.terrain differ diff --git a/public/terrain/19/858582/353827.terrain b/public/terrain/19/858582/353827.terrain new file mode 100644 index 000000000..4c904a309 Binary files /dev/null and b/public/terrain/19/858582/353827.terrain differ diff --git a/public/terrain/19/858582/353828.terrain b/public/terrain/19/858582/353828.terrain new file mode 100644 index 000000000..f3969ff1d Binary files /dev/null and b/public/terrain/19/858582/353828.terrain differ diff --git a/public/terrain/19/858582/353829.terrain b/public/terrain/19/858582/353829.terrain new file mode 100644 index 000000000..baee8a5ec Binary files /dev/null and b/public/terrain/19/858582/353829.terrain differ diff --git a/public/terrain/19/858582/353830.terrain b/public/terrain/19/858582/353830.terrain new file mode 100644 index 000000000..f0bb95a00 Binary files /dev/null and b/public/terrain/19/858582/353830.terrain differ diff --git a/public/terrain/19/858582/353831.terrain b/public/terrain/19/858582/353831.terrain new file mode 100644 index 000000000..44ef65913 Binary files /dev/null and b/public/terrain/19/858582/353831.terrain differ diff --git a/public/terrain/19/858582/353832.terrain b/public/terrain/19/858582/353832.terrain new file mode 100644 index 000000000..bc58b3eac Binary files /dev/null and b/public/terrain/19/858582/353832.terrain differ diff --git a/public/terrain/19/858582/353833.terrain b/public/terrain/19/858582/353833.terrain new file mode 100644 index 000000000..fe7c1e271 Binary files /dev/null and b/public/terrain/19/858582/353833.terrain differ diff --git a/public/terrain/19/858582/353834.terrain b/public/terrain/19/858582/353834.terrain new file mode 100644 index 000000000..f329602db Binary files /dev/null and b/public/terrain/19/858582/353834.terrain differ diff --git a/public/terrain/19/858582/353835.terrain b/public/terrain/19/858582/353835.terrain new file mode 100644 index 000000000..64674a7a4 Binary files /dev/null and b/public/terrain/19/858582/353835.terrain differ diff --git a/public/terrain/19/858582/353836.terrain b/public/terrain/19/858582/353836.terrain new file mode 100644 index 000000000..996f84ffc Binary files /dev/null and b/public/terrain/19/858582/353836.terrain differ diff --git a/public/terrain/19/858582/353837.terrain b/public/terrain/19/858582/353837.terrain new file mode 100644 index 000000000..410e5c9e5 Binary files /dev/null and b/public/terrain/19/858582/353837.terrain differ diff --git a/public/terrain/19/858582/353838.terrain b/public/terrain/19/858582/353838.terrain new file mode 100644 index 000000000..43f311681 Binary files /dev/null and b/public/terrain/19/858582/353838.terrain differ diff --git a/public/terrain/19/858582/353839.terrain b/public/terrain/19/858582/353839.terrain new file mode 100644 index 000000000..14cb941be Binary files /dev/null and b/public/terrain/19/858582/353839.terrain differ diff --git a/public/terrain/19/858582/353840.terrain b/public/terrain/19/858582/353840.terrain new file mode 100644 index 000000000..605e5304a Binary files /dev/null and b/public/terrain/19/858582/353840.terrain differ diff --git a/public/terrain/19/858582/353841.terrain b/public/terrain/19/858582/353841.terrain new file mode 100644 index 000000000..7f059a931 Binary files /dev/null and b/public/terrain/19/858582/353841.terrain differ diff --git a/public/terrain/19/858582/353842.terrain b/public/terrain/19/858582/353842.terrain new file mode 100644 index 000000000..d8fea8841 Binary files /dev/null and b/public/terrain/19/858582/353842.terrain differ diff --git a/public/terrain/19/858582/353843.terrain b/public/terrain/19/858582/353843.terrain new file mode 100644 index 000000000..61487650f Binary files /dev/null and b/public/terrain/19/858582/353843.terrain differ diff --git a/public/terrain/19/858582/353844.terrain b/public/terrain/19/858582/353844.terrain new file mode 100644 index 000000000..23267b932 Binary files /dev/null and b/public/terrain/19/858582/353844.terrain differ diff --git a/public/terrain/19/858582/353845.terrain b/public/terrain/19/858582/353845.terrain new file mode 100644 index 000000000..c86c5c0cf Binary files /dev/null and b/public/terrain/19/858582/353845.terrain differ diff --git a/public/terrain/19/858582/353846.terrain b/public/terrain/19/858582/353846.terrain new file mode 100644 index 000000000..d605f37b3 Binary files /dev/null and b/public/terrain/19/858582/353846.terrain differ diff --git a/public/terrain/19/858582/353847.terrain b/public/terrain/19/858582/353847.terrain new file mode 100644 index 000000000..252b617e9 Binary files /dev/null and b/public/terrain/19/858582/353847.terrain differ diff --git a/public/terrain/19/858582/353848.terrain b/public/terrain/19/858582/353848.terrain new file mode 100644 index 000000000..28a9f6260 Binary files /dev/null and b/public/terrain/19/858582/353848.terrain differ diff --git a/public/terrain/19/858582/353849.terrain b/public/terrain/19/858582/353849.terrain new file mode 100644 index 000000000..f2ce39d1a Binary files /dev/null and b/public/terrain/19/858582/353849.terrain differ diff --git a/public/terrain/19/858582/353850.terrain b/public/terrain/19/858582/353850.terrain new file mode 100644 index 000000000..771e7bf42 Binary files /dev/null and b/public/terrain/19/858582/353850.terrain differ diff --git a/public/terrain/19/858582/353851.terrain b/public/terrain/19/858582/353851.terrain new file mode 100644 index 000000000..9bc837924 Binary files /dev/null and b/public/terrain/19/858582/353851.terrain differ diff --git a/public/terrain/19/858582/353852.terrain b/public/terrain/19/858582/353852.terrain new file mode 100644 index 000000000..1001c7350 Binary files /dev/null and b/public/terrain/19/858582/353852.terrain differ diff --git a/public/terrain/19/858582/353853.terrain b/public/terrain/19/858582/353853.terrain new file mode 100644 index 000000000..be1b185b3 Binary files /dev/null and b/public/terrain/19/858582/353853.terrain differ diff --git a/public/terrain/19/858582/353854.terrain b/public/terrain/19/858582/353854.terrain new file mode 100644 index 000000000..4a4d50e30 Binary files /dev/null and b/public/terrain/19/858582/353854.terrain differ diff --git a/public/terrain/19/858582/353855.terrain b/public/terrain/19/858582/353855.terrain new file mode 100644 index 000000000..8aff9c0a6 Binary files /dev/null and b/public/terrain/19/858582/353855.terrain differ diff --git a/public/terrain/19/858582/353856.terrain b/public/terrain/19/858582/353856.terrain new file mode 100644 index 000000000..269bf5c4d Binary files /dev/null and b/public/terrain/19/858582/353856.terrain differ diff --git a/public/terrain/19/858582/353857.terrain b/public/terrain/19/858582/353857.terrain new file mode 100644 index 000000000..0af9a4a6c Binary files /dev/null and b/public/terrain/19/858582/353857.terrain differ diff --git a/public/terrain/19/858582/353858.terrain b/public/terrain/19/858582/353858.terrain new file mode 100644 index 000000000..607e68557 Binary files /dev/null and b/public/terrain/19/858582/353858.terrain differ diff --git a/public/terrain/19/858582/353859.terrain b/public/terrain/19/858582/353859.terrain new file mode 100644 index 000000000..936775349 Binary files /dev/null and b/public/terrain/19/858582/353859.terrain differ diff --git a/public/terrain/19/858582/353860.terrain b/public/terrain/19/858582/353860.terrain new file mode 100644 index 000000000..eddf3970d Binary files /dev/null and b/public/terrain/19/858582/353860.terrain differ diff --git a/public/terrain/19/858582/353861.terrain b/public/terrain/19/858582/353861.terrain new file mode 100644 index 000000000..660cb6459 Binary files /dev/null and b/public/terrain/19/858582/353861.terrain differ diff --git a/public/terrain/19/858582/353862.terrain b/public/terrain/19/858582/353862.terrain new file mode 100644 index 000000000..09259b2f4 Binary files /dev/null and b/public/terrain/19/858582/353862.terrain differ diff --git a/public/terrain/19/858582/353863.terrain b/public/terrain/19/858582/353863.terrain new file mode 100644 index 000000000..5c1a6909e Binary files /dev/null and b/public/terrain/19/858582/353863.terrain differ diff --git a/public/terrain/19/858582/353864.terrain b/public/terrain/19/858582/353864.terrain new file mode 100644 index 000000000..6b380df14 Binary files /dev/null and b/public/terrain/19/858582/353864.terrain differ diff --git a/public/terrain/19/858582/353865.terrain b/public/terrain/19/858582/353865.terrain new file mode 100644 index 000000000..426b950ec Binary files /dev/null and b/public/terrain/19/858582/353865.terrain differ diff --git a/public/terrain/19/858582/353866.terrain b/public/terrain/19/858582/353866.terrain new file mode 100644 index 000000000..44475af19 Binary files /dev/null and b/public/terrain/19/858582/353866.terrain differ diff --git a/public/terrain/19/858582/353867.terrain b/public/terrain/19/858582/353867.terrain new file mode 100644 index 000000000..1d1b90d7b Binary files /dev/null and b/public/terrain/19/858582/353867.terrain differ diff --git a/public/terrain/19/858582/353868.terrain b/public/terrain/19/858582/353868.terrain new file mode 100644 index 000000000..d0dc86068 Binary files /dev/null and b/public/terrain/19/858582/353868.terrain differ diff --git a/public/terrain/19/858582/353869.terrain b/public/terrain/19/858582/353869.terrain new file mode 100644 index 000000000..3dc01ec01 Binary files /dev/null and b/public/terrain/19/858582/353869.terrain differ diff --git a/public/terrain/19/858582/353870.terrain b/public/terrain/19/858582/353870.terrain new file mode 100644 index 000000000..dc38c7fdd Binary files /dev/null and b/public/terrain/19/858582/353870.terrain differ diff --git a/public/terrain/19/858582/353871.terrain b/public/terrain/19/858582/353871.terrain new file mode 100644 index 000000000..82829df8f Binary files /dev/null and b/public/terrain/19/858582/353871.terrain differ diff --git a/public/terrain/19/858582/353872.terrain b/public/terrain/19/858582/353872.terrain new file mode 100644 index 000000000..346ee9902 Binary files /dev/null and b/public/terrain/19/858582/353872.terrain differ diff --git a/public/terrain/19/858582/353873.terrain b/public/terrain/19/858582/353873.terrain new file mode 100644 index 000000000..c758cc66b Binary files /dev/null and b/public/terrain/19/858582/353873.terrain differ diff --git a/public/terrain/19/858582/353874.terrain b/public/terrain/19/858582/353874.terrain new file mode 100644 index 000000000..845f6bbd1 Binary files /dev/null and b/public/terrain/19/858582/353874.terrain differ diff --git a/public/terrain/19/858582/353875.terrain b/public/terrain/19/858582/353875.terrain new file mode 100644 index 000000000..bc31279f6 Binary files /dev/null and b/public/terrain/19/858582/353875.terrain differ diff --git a/public/terrain/19/858582/353876.terrain b/public/terrain/19/858582/353876.terrain new file mode 100644 index 000000000..f5ef7f1c2 Binary files /dev/null and b/public/terrain/19/858582/353876.terrain differ diff --git a/public/terrain/19/858582/353877.terrain b/public/terrain/19/858582/353877.terrain new file mode 100644 index 000000000..5c60aaa24 Binary files /dev/null and b/public/terrain/19/858582/353877.terrain differ diff --git a/public/terrain/19/858582/353878.terrain b/public/terrain/19/858582/353878.terrain new file mode 100644 index 000000000..f1a8f6da6 Binary files /dev/null and b/public/terrain/19/858582/353878.terrain differ diff --git a/public/terrain/19/858582/353879.terrain b/public/terrain/19/858582/353879.terrain new file mode 100644 index 000000000..b9a06c72c Binary files /dev/null and b/public/terrain/19/858582/353879.terrain differ diff --git a/public/terrain/19/858582/353880.terrain b/public/terrain/19/858582/353880.terrain new file mode 100644 index 000000000..e534b095b Binary files /dev/null and b/public/terrain/19/858582/353880.terrain differ diff --git a/public/terrain/19/858582/353881.terrain b/public/terrain/19/858582/353881.terrain new file mode 100644 index 000000000..7b18bbb39 Binary files /dev/null and b/public/terrain/19/858582/353881.terrain differ diff --git a/public/terrain/19/858582/353882.terrain b/public/terrain/19/858582/353882.terrain new file mode 100644 index 000000000..5e17f2a42 Binary files /dev/null and b/public/terrain/19/858582/353882.terrain differ diff --git a/public/terrain/19/858582/353883.terrain b/public/terrain/19/858582/353883.terrain new file mode 100644 index 000000000..35b8e7ee8 Binary files /dev/null and b/public/terrain/19/858582/353883.terrain differ diff --git a/public/terrain/19/858582/353884.terrain b/public/terrain/19/858582/353884.terrain new file mode 100644 index 000000000..a2fe60d25 Binary files /dev/null and b/public/terrain/19/858582/353884.terrain differ diff --git a/public/terrain/19/858582/353885.terrain b/public/terrain/19/858582/353885.terrain new file mode 100644 index 000000000..d546e5dcf Binary files /dev/null and b/public/terrain/19/858582/353885.terrain differ diff --git a/public/terrain/19/858582/353886.terrain b/public/terrain/19/858582/353886.terrain new file mode 100644 index 000000000..b636ea804 Binary files /dev/null and b/public/terrain/19/858582/353886.terrain differ diff --git a/public/terrain/19/858582/353887.terrain b/public/terrain/19/858582/353887.terrain new file mode 100644 index 000000000..260ad53ed Binary files /dev/null and b/public/terrain/19/858582/353887.terrain differ diff --git a/public/terrain/19/858582/353888.terrain b/public/terrain/19/858582/353888.terrain new file mode 100644 index 000000000..ed7f08794 Binary files /dev/null and b/public/terrain/19/858582/353888.terrain differ diff --git a/public/terrain/19/858582/353889.terrain b/public/terrain/19/858582/353889.terrain new file mode 100644 index 000000000..e237edef4 Binary files /dev/null and b/public/terrain/19/858582/353889.terrain differ diff --git a/public/terrain/19/858582/353890.terrain b/public/terrain/19/858582/353890.terrain new file mode 100644 index 000000000..a1a9c8dfa Binary files /dev/null and b/public/terrain/19/858582/353890.terrain differ diff --git a/public/terrain/19/858582/353891.terrain b/public/terrain/19/858582/353891.terrain new file mode 100644 index 000000000..648e1ec71 Binary files /dev/null and b/public/terrain/19/858582/353891.terrain differ diff --git a/public/terrain/19/858582/353892.terrain b/public/terrain/19/858582/353892.terrain new file mode 100644 index 000000000..239b74a97 Binary files /dev/null and b/public/terrain/19/858582/353892.terrain differ diff --git a/public/terrain/19/858582/353893.terrain b/public/terrain/19/858582/353893.terrain new file mode 100644 index 000000000..4cecbe219 Binary files /dev/null and b/public/terrain/19/858582/353893.terrain differ diff --git a/public/terrain/19/858582/353894.terrain b/public/terrain/19/858582/353894.terrain new file mode 100644 index 000000000..0c4dcf265 Binary files /dev/null and b/public/terrain/19/858582/353894.terrain differ diff --git a/public/terrain/19/858582/353895.terrain b/public/terrain/19/858582/353895.terrain new file mode 100644 index 000000000..2a866eb48 Binary files /dev/null and b/public/terrain/19/858582/353895.terrain differ diff --git a/public/terrain/19/858582/353896.terrain b/public/terrain/19/858582/353896.terrain new file mode 100644 index 000000000..38794a6a0 Binary files /dev/null and b/public/terrain/19/858582/353896.terrain differ diff --git a/public/terrain/19/858582/353897.terrain b/public/terrain/19/858582/353897.terrain new file mode 100644 index 000000000..411670900 Binary files /dev/null and b/public/terrain/19/858582/353897.terrain differ diff --git a/public/terrain/19/858582/353898.terrain b/public/terrain/19/858582/353898.terrain new file mode 100644 index 000000000..063ac426c Binary files /dev/null and b/public/terrain/19/858582/353898.terrain differ diff --git a/public/terrain/19/858582/353899.terrain b/public/terrain/19/858582/353899.terrain new file mode 100644 index 000000000..aaf688079 Binary files /dev/null and b/public/terrain/19/858582/353899.terrain differ diff --git a/public/terrain/19/858582/353900.terrain b/public/terrain/19/858582/353900.terrain new file mode 100644 index 000000000..e8b983819 Binary files /dev/null and b/public/terrain/19/858582/353900.terrain differ diff --git a/public/terrain/19/858582/353901.terrain b/public/terrain/19/858582/353901.terrain new file mode 100644 index 000000000..0aa02dacd Binary files /dev/null and b/public/terrain/19/858582/353901.terrain differ diff --git a/public/terrain/19/858582/353902.terrain b/public/terrain/19/858582/353902.terrain new file mode 100644 index 000000000..194c02d6a Binary files /dev/null and b/public/terrain/19/858582/353902.terrain differ diff --git a/public/terrain/19/858582/353903.terrain b/public/terrain/19/858582/353903.terrain new file mode 100644 index 000000000..4a56923db Binary files /dev/null and b/public/terrain/19/858582/353903.terrain differ diff --git a/public/terrain/19/858582/353904.terrain b/public/terrain/19/858582/353904.terrain new file mode 100644 index 000000000..a27ece724 Binary files /dev/null and b/public/terrain/19/858582/353904.terrain differ diff --git a/public/terrain/19/858582/353905.terrain b/public/terrain/19/858582/353905.terrain new file mode 100644 index 000000000..1e6298b0f Binary files /dev/null and b/public/terrain/19/858582/353905.terrain differ diff --git a/public/terrain/19/858582/353906.terrain b/public/terrain/19/858582/353906.terrain new file mode 100644 index 000000000..b25e83607 Binary files /dev/null and b/public/terrain/19/858582/353906.terrain differ diff --git a/public/terrain/19/858582/353907.terrain b/public/terrain/19/858582/353907.terrain new file mode 100644 index 000000000..d0affe63e Binary files /dev/null and b/public/terrain/19/858582/353907.terrain differ diff --git a/public/terrain/19/858582/353908.terrain b/public/terrain/19/858582/353908.terrain new file mode 100644 index 000000000..0acff2c6b Binary files /dev/null and b/public/terrain/19/858582/353908.terrain differ diff --git a/public/terrain/19/858582/353909.terrain b/public/terrain/19/858582/353909.terrain new file mode 100644 index 000000000..f33c6a284 Binary files /dev/null and b/public/terrain/19/858582/353909.terrain differ diff --git a/public/terrain/19/858582/353910.terrain b/public/terrain/19/858582/353910.terrain new file mode 100644 index 000000000..d44e4e029 Binary files /dev/null and b/public/terrain/19/858582/353910.terrain differ diff --git a/public/terrain/19/858582/353911.terrain b/public/terrain/19/858582/353911.terrain new file mode 100644 index 000000000..89a0854f6 Binary files /dev/null and b/public/terrain/19/858582/353911.terrain differ diff --git a/public/terrain/19/858582/353912.terrain b/public/terrain/19/858582/353912.terrain new file mode 100644 index 000000000..9f3875f61 Binary files /dev/null and b/public/terrain/19/858582/353912.terrain differ diff --git a/public/terrain/19/858582/353913.terrain b/public/terrain/19/858582/353913.terrain new file mode 100644 index 000000000..c2160138f Binary files /dev/null and b/public/terrain/19/858582/353913.terrain differ diff --git a/public/terrain/19/858582/353914.terrain b/public/terrain/19/858582/353914.terrain new file mode 100644 index 000000000..2762a527c Binary files /dev/null and b/public/terrain/19/858582/353914.terrain differ diff --git a/public/terrain/19/858582/353915.terrain b/public/terrain/19/858582/353915.terrain new file mode 100644 index 000000000..76b76b52d Binary files /dev/null and b/public/terrain/19/858582/353915.terrain differ diff --git a/public/terrain/19/858582/353916.terrain b/public/terrain/19/858582/353916.terrain new file mode 100644 index 000000000..5a0e7dd02 Binary files /dev/null and b/public/terrain/19/858582/353916.terrain differ diff --git a/public/terrain/19/858582/353917.terrain b/public/terrain/19/858582/353917.terrain new file mode 100644 index 000000000..d21a16d25 Binary files /dev/null and b/public/terrain/19/858582/353917.terrain differ diff --git a/public/terrain/19/858582/353918.terrain b/public/terrain/19/858582/353918.terrain new file mode 100644 index 000000000..52473c4cd Binary files /dev/null and b/public/terrain/19/858582/353918.terrain differ diff --git a/public/terrain/19/858582/353919.terrain b/public/terrain/19/858582/353919.terrain new file mode 100644 index 000000000..b3cae333e Binary files /dev/null and b/public/terrain/19/858582/353919.terrain differ diff --git a/public/terrain/19/858582/353920.terrain b/public/terrain/19/858582/353920.terrain new file mode 100644 index 000000000..f8282c76b Binary files /dev/null and b/public/terrain/19/858582/353920.terrain differ diff --git a/public/terrain/19/858582/353921.terrain b/public/terrain/19/858582/353921.terrain new file mode 100644 index 000000000..6c7e89ef8 Binary files /dev/null and b/public/terrain/19/858582/353921.terrain differ diff --git a/public/terrain/19/858582/353922.terrain b/public/terrain/19/858582/353922.terrain new file mode 100644 index 000000000..4f28b4337 Binary files /dev/null and b/public/terrain/19/858582/353922.terrain differ diff --git a/public/terrain/19/858582/353923.terrain b/public/terrain/19/858582/353923.terrain new file mode 100644 index 000000000..86d8516e3 Binary files /dev/null and b/public/terrain/19/858582/353923.terrain differ diff --git a/public/terrain/19/858582/353924.terrain b/public/terrain/19/858582/353924.terrain new file mode 100644 index 000000000..181c4d257 Binary files /dev/null and b/public/terrain/19/858582/353924.terrain differ diff --git a/public/terrain/19/858582/353925.terrain b/public/terrain/19/858582/353925.terrain new file mode 100644 index 000000000..fa87bd299 Binary files /dev/null and b/public/terrain/19/858582/353925.terrain differ diff --git a/public/terrain/19/858582/353926.terrain b/public/terrain/19/858582/353926.terrain new file mode 100644 index 000000000..d7de32997 Binary files /dev/null and b/public/terrain/19/858582/353926.terrain differ diff --git a/public/terrain/19/858582/353927.terrain b/public/terrain/19/858582/353927.terrain new file mode 100644 index 000000000..85bd019ee Binary files /dev/null and b/public/terrain/19/858582/353927.terrain differ diff --git a/public/terrain/19/858582/353928.terrain b/public/terrain/19/858582/353928.terrain new file mode 100644 index 000000000..4bf9718ec Binary files /dev/null and b/public/terrain/19/858582/353928.terrain differ diff --git a/public/terrain/19/858582/353929.terrain b/public/terrain/19/858582/353929.terrain new file mode 100644 index 000000000..824049c4d Binary files /dev/null and b/public/terrain/19/858582/353929.terrain differ diff --git a/public/terrain/19/858582/353930.terrain b/public/terrain/19/858582/353930.terrain new file mode 100644 index 000000000..4004dbf2c Binary files /dev/null and b/public/terrain/19/858582/353930.terrain differ diff --git a/public/terrain/19/858582/353931.terrain b/public/terrain/19/858582/353931.terrain new file mode 100644 index 000000000..0f13c9685 Binary files /dev/null and b/public/terrain/19/858582/353931.terrain differ diff --git a/public/terrain/19/858582/353932.terrain b/public/terrain/19/858582/353932.terrain new file mode 100644 index 000000000..e16f8da52 Binary files /dev/null and b/public/terrain/19/858582/353932.terrain differ diff --git a/public/terrain/19/858582/353933.terrain b/public/terrain/19/858582/353933.terrain new file mode 100644 index 000000000..a9514cb21 Binary files /dev/null and b/public/terrain/19/858582/353933.terrain differ diff --git a/public/terrain/19/858582/353934.terrain b/public/terrain/19/858582/353934.terrain new file mode 100644 index 000000000..edc18e7ec Binary files /dev/null and b/public/terrain/19/858582/353934.terrain differ diff --git a/public/terrain/19/858582/353935.terrain b/public/terrain/19/858582/353935.terrain new file mode 100644 index 000000000..bd8e8ffd1 Binary files /dev/null and b/public/terrain/19/858582/353935.terrain differ diff --git a/public/terrain/19/858582/353936.terrain b/public/terrain/19/858582/353936.terrain new file mode 100644 index 000000000..ec6fd62ce Binary files /dev/null and b/public/terrain/19/858582/353936.terrain differ diff --git a/public/terrain/19/858582/353937.terrain b/public/terrain/19/858582/353937.terrain new file mode 100644 index 000000000..3c91307cc Binary files /dev/null and b/public/terrain/19/858582/353937.terrain differ diff --git a/public/terrain/19/858582/353938.terrain b/public/terrain/19/858582/353938.terrain new file mode 100644 index 000000000..6a511241e Binary files /dev/null and b/public/terrain/19/858582/353938.terrain differ diff --git a/public/terrain/19/858582/353939.terrain b/public/terrain/19/858582/353939.terrain new file mode 100644 index 000000000..e7814d337 Binary files /dev/null and b/public/terrain/19/858582/353939.terrain differ diff --git a/public/terrain/19/858582/353940.terrain b/public/terrain/19/858582/353940.terrain new file mode 100644 index 000000000..c84ba73fa Binary files /dev/null and b/public/terrain/19/858582/353940.terrain differ diff --git a/public/terrain/19/858582/353941.terrain b/public/terrain/19/858582/353941.terrain new file mode 100644 index 000000000..995b5d16e Binary files /dev/null and b/public/terrain/19/858582/353941.terrain differ diff --git a/public/terrain/19/858582/353942.terrain b/public/terrain/19/858582/353942.terrain new file mode 100644 index 000000000..5d46365bb Binary files /dev/null and b/public/terrain/19/858582/353942.terrain differ diff --git a/public/terrain/19/858582/353943.terrain b/public/terrain/19/858582/353943.terrain new file mode 100644 index 000000000..e042a2148 Binary files /dev/null and b/public/terrain/19/858582/353943.terrain differ diff --git a/public/terrain/19/858582/353944.terrain b/public/terrain/19/858582/353944.terrain new file mode 100644 index 000000000..4f77c314d Binary files /dev/null and b/public/terrain/19/858582/353944.terrain differ diff --git a/public/terrain/19/858582/353945.terrain b/public/terrain/19/858582/353945.terrain new file mode 100644 index 000000000..298ed3921 Binary files /dev/null and b/public/terrain/19/858582/353945.terrain differ diff --git a/public/terrain/19/858582/353946.terrain b/public/terrain/19/858582/353946.terrain new file mode 100644 index 000000000..a2cce36fd Binary files /dev/null and b/public/terrain/19/858582/353946.terrain differ diff --git a/public/terrain/19/858582/353947.terrain b/public/terrain/19/858582/353947.terrain new file mode 100644 index 000000000..1e90bbcb2 Binary files /dev/null and b/public/terrain/19/858582/353947.terrain differ diff --git a/public/terrain/19/858582/353948.terrain b/public/terrain/19/858582/353948.terrain new file mode 100644 index 000000000..d3cc78604 Binary files /dev/null and b/public/terrain/19/858582/353948.terrain differ diff --git a/public/terrain/19/858582/353949.terrain b/public/terrain/19/858582/353949.terrain new file mode 100644 index 000000000..b2ac046db Binary files /dev/null and b/public/terrain/19/858582/353949.terrain differ diff --git a/public/terrain/19/858582/353950.terrain b/public/terrain/19/858582/353950.terrain new file mode 100644 index 000000000..b44ffc9f5 Binary files /dev/null and b/public/terrain/19/858582/353950.terrain differ diff --git a/public/terrain/19/858582/353951.terrain b/public/terrain/19/858582/353951.terrain new file mode 100644 index 000000000..a48271132 Binary files /dev/null and b/public/terrain/19/858582/353951.terrain differ diff --git a/public/terrain/19/858582/353952.terrain b/public/terrain/19/858582/353952.terrain new file mode 100644 index 000000000..917db4d54 Binary files /dev/null and b/public/terrain/19/858582/353952.terrain differ diff --git a/public/terrain/19/858582/353953.terrain b/public/terrain/19/858582/353953.terrain new file mode 100644 index 000000000..db528e319 Binary files /dev/null and b/public/terrain/19/858582/353953.terrain differ diff --git a/public/terrain/19/858582/353954.terrain b/public/terrain/19/858582/353954.terrain new file mode 100644 index 000000000..02069ece2 Binary files /dev/null and b/public/terrain/19/858582/353954.terrain differ diff --git a/public/terrain/19/858582/353955.terrain b/public/terrain/19/858582/353955.terrain new file mode 100644 index 000000000..87cfd5e6e Binary files /dev/null and b/public/terrain/19/858582/353955.terrain differ diff --git a/public/terrain/19/858582/353956.terrain b/public/terrain/19/858582/353956.terrain new file mode 100644 index 000000000..01263b83c Binary files /dev/null and b/public/terrain/19/858582/353956.terrain differ diff --git a/public/terrain/19/858582/353957.terrain b/public/terrain/19/858582/353957.terrain new file mode 100644 index 000000000..a0f51f80d Binary files /dev/null and b/public/terrain/19/858582/353957.terrain differ diff --git a/public/terrain/19/858582/353958.terrain b/public/terrain/19/858582/353958.terrain new file mode 100644 index 000000000..eb9b2b5bf Binary files /dev/null and b/public/terrain/19/858582/353958.terrain differ diff --git a/public/terrain/19/858582/353959.terrain b/public/terrain/19/858582/353959.terrain new file mode 100644 index 000000000..5fb03322d Binary files /dev/null and b/public/terrain/19/858582/353959.terrain differ diff --git a/public/terrain/19/858582/353960.terrain b/public/terrain/19/858582/353960.terrain new file mode 100644 index 000000000..0e20e2094 Binary files /dev/null and b/public/terrain/19/858582/353960.terrain differ diff --git a/public/terrain/19/858582/353961.terrain b/public/terrain/19/858582/353961.terrain new file mode 100644 index 000000000..039050aae Binary files /dev/null and b/public/terrain/19/858582/353961.terrain differ diff --git a/public/terrain/19/858582/353962.terrain b/public/terrain/19/858582/353962.terrain new file mode 100644 index 000000000..c773bd515 Binary files /dev/null and b/public/terrain/19/858582/353962.terrain differ diff --git a/public/terrain/19/858582/353963.terrain b/public/terrain/19/858582/353963.terrain new file mode 100644 index 000000000..e095d62a7 Binary files /dev/null and b/public/terrain/19/858582/353963.terrain differ diff --git a/public/terrain/19/858582/353964.terrain b/public/terrain/19/858582/353964.terrain new file mode 100644 index 000000000..b14ffe778 Binary files /dev/null and b/public/terrain/19/858582/353964.terrain differ diff --git a/public/terrain/19/858582/353965.terrain b/public/terrain/19/858582/353965.terrain new file mode 100644 index 000000000..4c4af2323 Binary files /dev/null and b/public/terrain/19/858582/353965.terrain differ diff --git a/public/terrain/19/858582/353966.terrain b/public/terrain/19/858582/353966.terrain new file mode 100644 index 000000000..197fcf643 Binary files /dev/null and b/public/terrain/19/858582/353966.terrain differ diff --git a/public/terrain/19/858582/353967.terrain b/public/terrain/19/858582/353967.terrain new file mode 100644 index 000000000..8e4f24e7f Binary files /dev/null and b/public/terrain/19/858582/353967.terrain differ diff --git a/public/terrain/19/858582/353968.terrain b/public/terrain/19/858582/353968.terrain new file mode 100644 index 000000000..81c2e7f64 Binary files /dev/null and b/public/terrain/19/858582/353968.terrain differ diff --git a/public/terrain/19/858582/353969.terrain b/public/terrain/19/858582/353969.terrain new file mode 100644 index 000000000..5be4b4b1e Binary files /dev/null and b/public/terrain/19/858582/353969.terrain differ diff --git a/public/terrain/19/858582/353970.terrain b/public/terrain/19/858582/353970.terrain new file mode 100644 index 000000000..917f4b4b0 Binary files /dev/null and b/public/terrain/19/858582/353970.terrain differ diff --git a/public/terrain/19/858582/353971.terrain b/public/terrain/19/858582/353971.terrain new file mode 100644 index 000000000..5b8c4680c Binary files /dev/null and b/public/terrain/19/858582/353971.terrain differ diff --git a/public/terrain/19/858582/353972.terrain b/public/terrain/19/858582/353972.terrain new file mode 100644 index 000000000..93c93e80a Binary files /dev/null and b/public/terrain/19/858582/353972.terrain differ diff --git a/public/terrain/19/858582/353973.terrain b/public/terrain/19/858582/353973.terrain new file mode 100644 index 000000000..bba04df67 Binary files /dev/null and b/public/terrain/19/858582/353973.terrain differ diff --git a/public/terrain/19/858582/353974.terrain b/public/terrain/19/858582/353974.terrain new file mode 100644 index 000000000..ed68bead4 Binary files /dev/null and b/public/terrain/19/858582/353974.terrain differ diff --git a/public/terrain/19/858582/353975.terrain b/public/terrain/19/858582/353975.terrain new file mode 100644 index 000000000..eb4af345c Binary files /dev/null and b/public/terrain/19/858582/353975.terrain differ diff --git a/public/terrain/19/858582/353976.terrain b/public/terrain/19/858582/353976.terrain new file mode 100644 index 000000000..b22e8966c Binary files /dev/null and b/public/terrain/19/858582/353976.terrain differ diff --git a/public/terrain/19/858582/353977.terrain b/public/terrain/19/858582/353977.terrain new file mode 100644 index 000000000..e8d117749 Binary files /dev/null and b/public/terrain/19/858582/353977.terrain differ diff --git a/public/terrain/19/858582/353978.terrain b/public/terrain/19/858582/353978.terrain new file mode 100644 index 000000000..10778a141 Binary files /dev/null and b/public/terrain/19/858582/353978.terrain differ diff --git a/public/terrain/19/858582/353979.terrain b/public/terrain/19/858582/353979.terrain new file mode 100644 index 000000000..2cacc63d4 Binary files /dev/null and b/public/terrain/19/858582/353979.terrain differ diff --git a/public/terrain/19/858582/353980.terrain b/public/terrain/19/858582/353980.terrain new file mode 100644 index 000000000..146c5431c Binary files /dev/null and b/public/terrain/19/858582/353980.terrain differ diff --git a/public/terrain/19/858582/353981.terrain b/public/terrain/19/858582/353981.terrain new file mode 100644 index 000000000..6c3e44706 Binary files /dev/null and b/public/terrain/19/858582/353981.terrain differ diff --git a/public/terrain/19/858582/353982.terrain b/public/terrain/19/858582/353982.terrain new file mode 100644 index 000000000..694851710 Binary files /dev/null and b/public/terrain/19/858582/353982.terrain differ diff --git a/public/terrain/19/858582/353983.terrain b/public/terrain/19/858582/353983.terrain new file mode 100644 index 000000000..921961bad Binary files /dev/null and b/public/terrain/19/858582/353983.terrain differ diff --git a/public/terrain/19/858582/353984.terrain b/public/terrain/19/858582/353984.terrain new file mode 100644 index 000000000..ca65631af Binary files /dev/null and b/public/terrain/19/858582/353984.terrain differ diff --git a/public/terrain/19/858582/353985.terrain b/public/terrain/19/858582/353985.terrain new file mode 100644 index 000000000..747a91d6a Binary files /dev/null and b/public/terrain/19/858582/353985.terrain differ diff --git a/public/terrain/19/858582/353986.terrain b/public/terrain/19/858582/353986.terrain new file mode 100644 index 000000000..e30a99446 Binary files /dev/null and b/public/terrain/19/858582/353986.terrain differ diff --git a/public/terrain/19/858582/353987.terrain b/public/terrain/19/858582/353987.terrain new file mode 100644 index 000000000..1e9584e99 Binary files /dev/null and b/public/terrain/19/858582/353987.terrain differ diff --git a/public/terrain/19/858582/353988.terrain b/public/terrain/19/858582/353988.terrain new file mode 100644 index 000000000..9f911c0f1 Binary files /dev/null and b/public/terrain/19/858582/353988.terrain differ diff --git a/public/terrain/19/858582/353989.terrain b/public/terrain/19/858582/353989.terrain new file mode 100644 index 000000000..34e5575c9 Binary files /dev/null and b/public/terrain/19/858582/353989.terrain differ diff --git a/public/terrain/19/858582/353990.terrain b/public/terrain/19/858582/353990.terrain new file mode 100644 index 000000000..b24aa4be4 Binary files /dev/null and b/public/terrain/19/858582/353990.terrain differ diff --git a/public/terrain/19/858582/353991.terrain b/public/terrain/19/858582/353991.terrain new file mode 100644 index 000000000..457234674 Binary files /dev/null and b/public/terrain/19/858582/353991.terrain differ diff --git a/public/terrain/19/858582/353992.terrain b/public/terrain/19/858582/353992.terrain new file mode 100644 index 000000000..7d4cfbe40 Binary files /dev/null and b/public/terrain/19/858582/353992.terrain differ diff --git a/public/terrain/19/858582/353993.terrain b/public/terrain/19/858582/353993.terrain new file mode 100644 index 000000000..36f207a91 Binary files /dev/null and b/public/terrain/19/858582/353993.terrain differ diff --git a/public/terrain/19/858582/353994.terrain b/public/terrain/19/858582/353994.terrain new file mode 100644 index 000000000..5ddc54f7b Binary files /dev/null and b/public/terrain/19/858582/353994.terrain differ diff --git a/public/terrain/19/858582/353995.terrain b/public/terrain/19/858582/353995.terrain new file mode 100644 index 000000000..d4e5198c1 Binary files /dev/null and b/public/terrain/19/858582/353995.terrain differ diff --git a/public/terrain/19/858582/353996.terrain b/public/terrain/19/858582/353996.terrain new file mode 100644 index 000000000..d778d53a0 Binary files /dev/null and b/public/terrain/19/858582/353996.terrain differ diff --git a/public/terrain/19/858582/353997.terrain b/public/terrain/19/858582/353997.terrain new file mode 100644 index 000000000..d7d69964c Binary files /dev/null and b/public/terrain/19/858582/353997.terrain differ diff --git a/public/terrain/19/858582/353998.terrain b/public/terrain/19/858582/353998.terrain new file mode 100644 index 000000000..6a2b4c1bb Binary files /dev/null and b/public/terrain/19/858582/353998.terrain differ diff --git a/public/terrain/19/858582/353999.terrain b/public/terrain/19/858582/353999.terrain new file mode 100644 index 000000000..09a34e951 Binary files /dev/null and b/public/terrain/19/858582/353999.terrain differ diff --git a/public/terrain/19/858582/354000.terrain b/public/terrain/19/858582/354000.terrain new file mode 100644 index 000000000..eeed7e2ea Binary files /dev/null and b/public/terrain/19/858582/354000.terrain differ diff --git a/public/terrain/19/858582/354001.terrain b/public/terrain/19/858582/354001.terrain new file mode 100644 index 000000000..1fb52cc76 Binary files /dev/null and b/public/terrain/19/858582/354001.terrain differ diff --git a/public/terrain/19/858582/354002.terrain b/public/terrain/19/858582/354002.terrain new file mode 100644 index 000000000..c86c336cf Binary files /dev/null and b/public/terrain/19/858582/354002.terrain differ diff --git a/public/terrain/19/858582/354003.terrain b/public/terrain/19/858582/354003.terrain new file mode 100644 index 000000000..af900aba7 Binary files /dev/null and b/public/terrain/19/858582/354003.terrain differ diff --git a/public/terrain/19/858582/354004.terrain b/public/terrain/19/858582/354004.terrain new file mode 100644 index 000000000..367585167 Binary files /dev/null and b/public/terrain/19/858582/354004.terrain differ diff --git a/public/terrain/19/858582/354005.terrain b/public/terrain/19/858582/354005.terrain new file mode 100644 index 000000000..3e3c9e5fc Binary files /dev/null and b/public/terrain/19/858582/354005.terrain differ diff --git a/public/terrain/19/858582/354006.terrain b/public/terrain/19/858582/354006.terrain new file mode 100644 index 000000000..2ef579810 Binary files /dev/null and b/public/terrain/19/858582/354006.terrain differ diff --git a/public/terrain/19/858582/354007.terrain b/public/terrain/19/858582/354007.terrain new file mode 100644 index 000000000..787a2ea92 Binary files /dev/null and b/public/terrain/19/858582/354007.terrain differ diff --git a/public/terrain/19/858582/354008.terrain b/public/terrain/19/858582/354008.terrain new file mode 100644 index 000000000..cf6116642 Binary files /dev/null and b/public/terrain/19/858582/354008.terrain differ diff --git a/public/terrain/19/858582/354009.terrain b/public/terrain/19/858582/354009.terrain new file mode 100644 index 000000000..b3be871e3 Binary files /dev/null and b/public/terrain/19/858582/354009.terrain differ diff --git a/public/terrain/19/858582/354010.terrain b/public/terrain/19/858582/354010.terrain new file mode 100644 index 000000000..7cd41da8c Binary files /dev/null and b/public/terrain/19/858582/354010.terrain differ diff --git a/public/terrain/19/858582/354011.terrain b/public/terrain/19/858582/354011.terrain new file mode 100644 index 000000000..aa1b00ac6 Binary files /dev/null and b/public/terrain/19/858582/354011.terrain differ diff --git a/public/terrain/19/858582/354012.terrain b/public/terrain/19/858582/354012.terrain new file mode 100644 index 000000000..4227a77bd Binary files /dev/null and b/public/terrain/19/858582/354012.terrain differ diff --git a/public/terrain/19/858582/354013.terrain b/public/terrain/19/858582/354013.terrain new file mode 100644 index 000000000..08b2a696e Binary files /dev/null and b/public/terrain/19/858582/354013.terrain differ diff --git a/public/terrain/19/858582/354014.terrain b/public/terrain/19/858582/354014.terrain new file mode 100644 index 000000000..76653c249 Binary files /dev/null and b/public/terrain/19/858582/354014.terrain differ diff --git a/public/terrain/19/858582/354015.terrain b/public/terrain/19/858582/354015.terrain new file mode 100644 index 000000000..bbfda9ce8 Binary files /dev/null and b/public/terrain/19/858582/354015.terrain differ diff --git a/public/terrain/19/858582/354016.terrain b/public/terrain/19/858582/354016.terrain new file mode 100644 index 000000000..632184d78 Binary files /dev/null and b/public/terrain/19/858582/354016.terrain differ diff --git a/public/terrain/19/858582/354017.terrain b/public/terrain/19/858582/354017.terrain new file mode 100644 index 000000000..d44c6ed01 Binary files /dev/null and b/public/terrain/19/858582/354017.terrain differ diff --git a/public/terrain/19/858582/354018.terrain b/public/terrain/19/858582/354018.terrain new file mode 100644 index 000000000..0c867d4ca Binary files /dev/null and b/public/terrain/19/858582/354018.terrain differ diff --git a/public/terrain/19/858582/354019.terrain b/public/terrain/19/858582/354019.terrain new file mode 100644 index 000000000..aa5cd7bd0 Binary files /dev/null and b/public/terrain/19/858582/354019.terrain differ diff --git a/public/terrain/19/858582/354020.terrain b/public/terrain/19/858582/354020.terrain new file mode 100644 index 000000000..1eaf1be4a Binary files /dev/null and b/public/terrain/19/858582/354020.terrain differ diff --git a/public/terrain/19/858582/354021.terrain b/public/terrain/19/858582/354021.terrain new file mode 100644 index 000000000..bab310df8 Binary files /dev/null and b/public/terrain/19/858582/354021.terrain differ diff --git a/public/terrain/19/858582/354022.terrain b/public/terrain/19/858582/354022.terrain new file mode 100644 index 000000000..088f0e2f6 Binary files /dev/null and b/public/terrain/19/858582/354022.terrain differ diff --git a/public/terrain/19/858582/354023.terrain b/public/terrain/19/858582/354023.terrain new file mode 100644 index 000000000..7649fb151 Binary files /dev/null and b/public/terrain/19/858582/354023.terrain differ diff --git a/public/terrain/19/858582/354024.terrain b/public/terrain/19/858582/354024.terrain new file mode 100644 index 000000000..2fd20a74a Binary files /dev/null and b/public/terrain/19/858582/354024.terrain differ diff --git a/public/terrain/19/858582/354025.terrain b/public/terrain/19/858582/354025.terrain new file mode 100644 index 000000000..afa01d61b Binary files /dev/null and b/public/terrain/19/858582/354025.terrain differ diff --git a/public/terrain/19/858582/354026.terrain b/public/terrain/19/858582/354026.terrain new file mode 100644 index 000000000..c7ffb50f0 Binary files /dev/null and b/public/terrain/19/858582/354026.terrain differ diff --git a/public/terrain/19/858582/354027.terrain b/public/terrain/19/858582/354027.terrain new file mode 100644 index 000000000..2687039bb Binary files /dev/null and b/public/terrain/19/858582/354027.terrain differ diff --git a/public/terrain/19/858582/354028.terrain b/public/terrain/19/858582/354028.terrain new file mode 100644 index 000000000..5dc0763e2 Binary files /dev/null and b/public/terrain/19/858582/354028.terrain differ diff --git a/public/terrain/19/858582/354029.terrain b/public/terrain/19/858582/354029.terrain new file mode 100644 index 000000000..f504a5bec Binary files /dev/null and b/public/terrain/19/858582/354029.terrain differ diff --git a/public/terrain/19/858582/354030.terrain b/public/terrain/19/858582/354030.terrain new file mode 100644 index 000000000..ce8e6252a Binary files /dev/null and b/public/terrain/19/858582/354030.terrain differ diff --git a/public/terrain/19/858582/354031.terrain b/public/terrain/19/858582/354031.terrain new file mode 100644 index 000000000..0bec4a433 Binary files /dev/null and b/public/terrain/19/858582/354031.terrain differ diff --git a/public/terrain/19/858582/354032.terrain b/public/terrain/19/858582/354032.terrain new file mode 100644 index 000000000..adcade28f Binary files /dev/null and b/public/terrain/19/858582/354032.terrain differ diff --git a/public/terrain/19/858582/354033.terrain b/public/terrain/19/858582/354033.terrain new file mode 100644 index 000000000..c6271e574 Binary files /dev/null and b/public/terrain/19/858582/354033.terrain differ diff --git a/public/terrain/19/858582/354034.terrain b/public/terrain/19/858582/354034.terrain new file mode 100644 index 000000000..ffde08cfe Binary files /dev/null and b/public/terrain/19/858582/354034.terrain differ diff --git a/public/terrain/19/858582/354035.terrain b/public/terrain/19/858582/354035.terrain new file mode 100644 index 000000000..d36d7d971 Binary files /dev/null and b/public/terrain/19/858582/354035.terrain differ diff --git a/public/terrain/19/858582/354036.terrain b/public/terrain/19/858582/354036.terrain new file mode 100644 index 000000000..a843dc594 Binary files /dev/null and b/public/terrain/19/858582/354036.terrain differ diff --git a/public/terrain/19/858582/354037.terrain b/public/terrain/19/858582/354037.terrain new file mode 100644 index 000000000..1ce0a7af1 Binary files /dev/null and b/public/terrain/19/858582/354037.terrain differ diff --git a/public/terrain/19/858582/354038.terrain b/public/terrain/19/858582/354038.terrain new file mode 100644 index 000000000..83ab959d9 Binary files /dev/null and b/public/terrain/19/858582/354038.terrain differ diff --git a/public/terrain/19/858582/354039.terrain b/public/terrain/19/858582/354039.terrain new file mode 100644 index 000000000..981ce1f3b Binary files /dev/null and b/public/terrain/19/858582/354039.terrain differ diff --git a/public/terrain/19/858582/354040.terrain b/public/terrain/19/858582/354040.terrain new file mode 100644 index 000000000..1ab57c398 Binary files /dev/null and b/public/terrain/19/858582/354040.terrain differ diff --git a/public/terrain/19/858582/354041.terrain b/public/terrain/19/858582/354041.terrain new file mode 100644 index 000000000..2542a78ef Binary files /dev/null and b/public/terrain/19/858582/354041.terrain differ diff --git a/public/terrain/19/858582/354042.terrain b/public/terrain/19/858582/354042.terrain new file mode 100644 index 000000000..1451f3759 Binary files /dev/null and b/public/terrain/19/858582/354042.terrain differ diff --git a/public/terrain/19/858582/354043.terrain b/public/terrain/19/858582/354043.terrain new file mode 100644 index 000000000..1eedd2b3b Binary files /dev/null and b/public/terrain/19/858582/354043.terrain differ diff --git a/public/terrain/19/858582/354044.terrain b/public/terrain/19/858582/354044.terrain new file mode 100644 index 000000000..9bb676fde Binary files /dev/null and b/public/terrain/19/858582/354044.terrain differ diff --git a/public/terrain/19/858582/354045.terrain b/public/terrain/19/858582/354045.terrain new file mode 100644 index 000000000..c9c087f8b Binary files /dev/null and b/public/terrain/19/858582/354045.terrain differ diff --git a/public/terrain/19/858582/354046.terrain b/public/terrain/19/858582/354046.terrain new file mode 100644 index 000000000..3ac2d2b16 Binary files /dev/null and b/public/terrain/19/858582/354046.terrain differ diff --git a/public/terrain/19/858582/354047.terrain b/public/terrain/19/858582/354047.terrain new file mode 100644 index 000000000..c458fc2b5 Binary files /dev/null and b/public/terrain/19/858582/354047.terrain differ diff --git a/public/terrain/19/858582/354048.terrain b/public/terrain/19/858582/354048.terrain new file mode 100644 index 000000000..f09c16626 Binary files /dev/null and b/public/terrain/19/858582/354048.terrain differ diff --git a/public/terrain/19/858582/354049.terrain b/public/terrain/19/858582/354049.terrain new file mode 100644 index 000000000..69133766b Binary files /dev/null and b/public/terrain/19/858582/354049.terrain differ diff --git a/public/terrain/19/858582/354050.terrain b/public/terrain/19/858582/354050.terrain new file mode 100644 index 000000000..983f2a885 Binary files /dev/null and b/public/terrain/19/858582/354050.terrain differ diff --git a/public/terrain/19/858582/354051.terrain b/public/terrain/19/858582/354051.terrain new file mode 100644 index 000000000..dc8c4d322 Binary files /dev/null and b/public/terrain/19/858582/354051.terrain differ diff --git a/public/terrain/19/858582/354052.terrain b/public/terrain/19/858582/354052.terrain new file mode 100644 index 000000000..dee933282 Binary files /dev/null and b/public/terrain/19/858582/354052.terrain differ diff --git a/public/terrain/19/858582/354053.terrain b/public/terrain/19/858582/354053.terrain new file mode 100644 index 000000000..151cc3958 Binary files /dev/null and b/public/terrain/19/858582/354053.terrain differ diff --git a/public/terrain/19/858582/354054.terrain b/public/terrain/19/858582/354054.terrain new file mode 100644 index 000000000..1aac7273b Binary files /dev/null and b/public/terrain/19/858582/354054.terrain differ diff --git a/public/terrain/19/858582/354055.terrain b/public/terrain/19/858582/354055.terrain new file mode 100644 index 000000000..405b30b92 Binary files /dev/null and b/public/terrain/19/858582/354055.terrain differ diff --git a/public/terrain/19/858582/354056.terrain b/public/terrain/19/858582/354056.terrain new file mode 100644 index 000000000..cb4643b7f Binary files /dev/null and b/public/terrain/19/858582/354056.terrain differ diff --git a/public/terrain/19/858582/354057.terrain b/public/terrain/19/858582/354057.terrain new file mode 100644 index 000000000..226b8b8de Binary files /dev/null and b/public/terrain/19/858582/354057.terrain differ diff --git a/public/terrain/19/858582/354058.terrain b/public/terrain/19/858582/354058.terrain new file mode 100644 index 000000000..54af56c12 Binary files /dev/null and b/public/terrain/19/858582/354058.terrain differ diff --git a/public/terrain/19/858582/354059.terrain b/public/terrain/19/858582/354059.terrain new file mode 100644 index 000000000..42e82bdf8 Binary files /dev/null and b/public/terrain/19/858582/354059.terrain differ diff --git a/public/terrain/19/858583/353743.terrain b/public/terrain/19/858583/353743.terrain new file mode 100644 index 000000000..977941068 Binary files /dev/null and b/public/terrain/19/858583/353743.terrain differ diff --git a/public/terrain/19/858583/353744.terrain b/public/terrain/19/858583/353744.terrain new file mode 100644 index 000000000..b1e7e19e9 Binary files /dev/null and b/public/terrain/19/858583/353744.terrain differ diff --git a/public/terrain/19/858583/353745.terrain b/public/terrain/19/858583/353745.terrain new file mode 100644 index 000000000..37cf7f519 Binary files /dev/null and b/public/terrain/19/858583/353745.terrain differ diff --git a/public/terrain/19/858583/353746.terrain b/public/terrain/19/858583/353746.terrain new file mode 100644 index 000000000..768f5f1e6 Binary files /dev/null and b/public/terrain/19/858583/353746.terrain differ diff --git a/public/terrain/19/858583/353747.terrain b/public/terrain/19/858583/353747.terrain new file mode 100644 index 000000000..3a3efe9c0 Binary files /dev/null and b/public/terrain/19/858583/353747.terrain differ diff --git a/public/terrain/19/858583/353748.terrain b/public/terrain/19/858583/353748.terrain new file mode 100644 index 000000000..79e1cee58 Binary files /dev/null and b/public/terrain/19/858583/353748.terrain differ diff --git a/public/terrain/19/858583/353749.terrain b/public/terrain/19/858583/353749.terrain new file mode 100644 index 000000000..40a53689e Binary files /dev/null and b/public/terrain/19/858583/353749.terrain differ diff --git a/public/terrain/19/858583/353750.terrain b/public/terrain/19/858583/353750.terrain new file mode 100644 index 000000000..fc338aaa0 Binary files /dev/null and b/public/terrain/19/858583/353750.terrain differ diff --git a/public/terrain/19/858583/353751.terrain b/public/terrain/19/858583/353751.terrain new file mode 100644 index 000000000..ef412a58e Binary files /dev/null and b/public/terrain/19/858583/353751.terrain differ diff --git a/public/terrain/19/858583/353752.terrain b/public/terrain/19/858583/353752.terrain new file mode 100644 index 000000000..f9c1ebf12 Binary files /dev/null and b/public/terrain/19/858583/353752.terrain differ diff --git a/public/terrain/19/858583/353753.terrain b/public/terrain/19/858583/353753.terrain new file mode 100644 index 000000000..dbda34171 Binary files /dev/null and b/public/terrain/19/858583/353753.terrain differ diff --git a/public/terrain/19/858583/353754.terrain b/public/terrain/19/858583/353754.terrain new file mode 100644 index 000000000..a47ff865b Binary files /dev/null and b/public/terrain/19/858583/353754.terrain differ diff --git a/public/terrain/19/858583/353755.terrain b/public/terrain/19/858583/353755.terrain new file mode 100644 index 000000000..58a2b6569 Binary files /dev/null and b/public/terrain/19/858583/353755.terrain differ diff --git a/public/terrain/19/858583/353756.terrain b/public/terrain/19/858583/353756.terrain new file mode 100644 index 000000000..25cff5a88 Binary files /dev/null and b/public/terrain/19/858583/353756.terrain differ diff --git a/public/terrain/19/858583/353757.terrain b/public/terrain/19/858583/353757.terrain new file mode 100644 index 000000000..bf292ed78 Binary files /dev/null and b/public/terrain/19/858583/353757.terrain differ diff --git a/public/terrain/19/858583/353758.terrain b/public/terrain/19/858583/353758.terrain new file mode 100644 index 000000000..cbd63e445 Binary files /dev/null and b/public/terrain/19/858583/353758.terrain differ diff --git a/public/terrain/19/858583/353759.terrain b/public/terrain/19/858583/353759.terrain new file mode 100644 index 000000000..cb686d826 Binary files /dev/null and b/public/terrain/19/858583/353759.terrain differ diff --git a/public/terrain/19/858583/353760.terrain b/public/terrain/19/858583/353760.terrain new file mode 100644 index 000000000..69895b6c0 Binary files /dev/null and b/public/terrain/19/858583/353760.terrain differ diff --git a/public/terrain/19/858583/353761.terrain b/public/terrain/19/858583/353761.terrain new file mode 100644 index 000000000..213950280 Binary files /dev/null and b/public/terrain/19/858583/353761.terrain differ diff --git a/public/terrain/19/858583/353762.terrain b/public/terrain/19/858583/353762.terrain new file mode 100644 index 000000000..d47f654f7 Binary files /dev/null and b/public/terrain/19/858583/353762.terrain differ diff --git a/public/terrain/19/858583/353763.terrain b/public/terrain/19/858583/353763.terrain new file mode 100644 index 000000000..307800cc8 Binary files /dev/null and b/public/terrain/19/858583/353763.terrain differ diff --git a/public/terrain/19/858583/353764.terrain b/public/terrain/19/858583/353764.terrain new file mode 100644 index 000000000..afd557c7c Binary files /dev/null and b/public/terrain/19/858583/353764.terrain differ diff --git a/public/terrain/19/858583/353765.terrain b/public/terrain/19/858583/353765.terrain new file mode 100644 index 000000000..b6b0ca87f Binary files /dev/null and b/public/terrain/19/858583/353765.terrain differ diff --git a/public/terrain/19/858583/353766.terrain b/public/terrain/19/858583/353766.terrain new file mode 100644 index 000000000..e014ccda0 Binary files /dev/null and b/public/terrain/19/858583/353766.terrain differ diff --git a/public/terrain/19/858583/353767.terrain b/public/terrain/19/858583/353767.terrain new file mode 100644 index 000000000..944e8d3dc Binary files /dev/null and b/public/terrain/19/858583/353767.terrain differ diff --git a/public/terrain/19/858583/353768.terrain b/public/terrain/19/858583/353768.terrain new file mode 100644 index 000000000..4d5c4d4d1 Binary files /dev/null and b/public/terrain/19/858583/353768.terrain differ diff --git a/public/terrain/19/858583/353769.terrain b/public/terrain/19/858583/353769.terrain new file mode 100644 index 000000000..6bacd915a Binary files /dev/null and b/public/terrain/19/858583/353769.terrain differ diff --git a/public/terrain/19/858583/353770.terrain b/public/terrain/19/858583/353770.terrain new file mode 100644 index 000000000..41aa143c9 Binary files /dev/null and b/public/terrain/19/858583/353770.terrain differ diff --git a/public/terrain/19/858583/353771.terrain b/public/terrain/19/858583/353771.terrain new file mode 100644 index 000000000..3b7d13257 Binary files /dev/null and b/public/terrain/19/858583/353771.terrain differ diff --git a/public/terrain/19/858583/353772.terrain b/public/terrain/19/858583/353772.terrain new file mode 100644 index 000000000..7f14ce599 Binary files /dev/null and b/public/terrain/19/858583/353772.terrain differ diff --git a/public/terrain/19/858583/353773.terrain b/public/terrain/19/858583/353773.terrain new file mode 100644 index 000000000..a5456ce4d Binary files /dev/null and b/public/terrain/19/858583/353773.terrain differ diff --git a/public/terrain/19/858583/353774.terrain b/public/terrain/19/858583/353774.terrain new file mode 100644 index 000000000..c150fe6a8 Binary files /dev/null and b/public/terrain/19/858583/353774.terrain differ diff --git a/public/terrain/19/858583/353775.terrain b/public/terrain/19/858583/353775.terrain new file mode 100644 index 000000000..ac482c5e1 Binary files /dev/null and b/public/terrain/19/858583/353775.terrain differ diff --git a/public/terrain/19/858583/353776.terrain b/public/terrain/19/858583/353776.terrain new file mode 100644 index 000000000..b04c0fe84 Binary files /dev/null and b/public/terrain/19/858583/353776.terrain differ diff --git a/public/terrain/19/858583/353777.terrain b/public/terrain/19/858583/353777.terrain new file mode 100644 index 000000000..93959b754 Binary files /dev/null and b/public/terrain/19/858583/353777.terrain differ diff --git a/public/terrain/19/858583/353778.terrain b/public/terrain/19/858583/353778.terrain new file mode 100644 index 000000000..22511c9e1 Binary files /dev/null and b/public/terrain/19/858583/353778.terrain differ diff --git a/public/terrain/19/858583/353779.terrain b/public/terrain/19/858583/353779.terrain new file mode 100644 index 000000000..9be307bd1 Binary files /dev/null and b/public/terrain/19/858583/353779.terrain differ diff --git a/public/terrain/19/858583/353780.terrain b/public/terrain/19/858583/353780.terrain new file mode 100644 index 000000000..581ac190d Binary files /dev/null and b/public/terrain/19/858583/353780.terrain differ diff --git a/public/terrain/19/858583/353781.terrain b/public/terrain/19/858583/353781.terrain new file mode 100644 index 000000000..24d9d4384 Binary files /dev/null and b/public/terrain/19/858583/353781.terrain differ diff --git a/public/terrain/19/858583/353782.terrain b/public/terrain/19/858583/353782.terrain new file mode 100644 index 000000000..5dc111b20 Binary files /dev/null and b/public/terrain/19/858583/353782.terrain differ diff --git a/public/terrain/19/858583/353783.terrain b/public/terrain/19/858583/353783.terrain new file mode 100644 index 000000000..dfc972e30 Binary files /dev/null and b/public/terrain/19/858583/353783.terrain differ diff --git a/public/terrain/19/858583/353784.terrain b/public/terrain/19/858583/353784.terrain new file mode 100644 index 000000000..3e09c2a6d Binary files /dev/null and b/public/terrain/19/858583/353784.terrain differ diff --git a/public/terrain/19/858583/353785.terrain b/public/terrain/19/858583/353785.terrain new file mode 100644 index 000000000..eaf08e0ec Binary files /dev/null and b/public/terrain/19/858583/353785.terrain differ diff --git a/public/terrain/19/858583/353786.terrain b/public/terrain/19/858583/353786.terrain new file mode 100644 index 000000000..d1765bc5f Binary files /dev/null and b/public/terrain/19/858583/353786.terrain differ diff --git a/public/terrain/19/858583/353787.terrain b/public/terrain/19/858583/353787.terrain new file mode 100644 index 000000000..0407ddcd7 Binary files /dev/null and b/public/terrain/19/858583/353787.terrain differ diff --git a/public/terrain/19/858583/353788.terrain b/public/terrain/19/858583/353788.terrain new file mode 100644 index 000000000..902855cf1 Binary files /dev/null and b/public/terrain/19/858583/353788.terrain differ diff --git a/public/terrain/19/858583/353789.terrain b/public/terrain/19/858583/353789.terrain new file mode 100644 index 000000000..b2c685fce Binary files /dev/null and b/public/terrain/19/858583/353789.terrain differ diff --git a/public/terrain/19/858583/353790.terrain b/public/terrain/19/858583/353790.terrain new file mode 100644 index 000000000..99d2d2f30 Binary files /dev/null and b/public/terrain/19/858583/353790.terrain differ diff --git a/public/terrain/19/858583/353791.terrain b/public/terrain/19/858583/353791.terrain new file mode 100644 index 000000000..c1e0e77f5 Binary files /dev/null and b/public/terrain/19/858583/353791.terrain differ diff --git a/public/terrain/19/858583/353792.terrain b/public/terrain/19/858583/353792.terrain new file mode 100644 index 000000000..edba6d2b0 Binary files /dev/null and b/public/terrain/19/858583/353792.terrain differ diff --git a/public/terrain/19/858583/353793.terrain b/public/terrain/19/858583/353793.terrain new file mode 100644 index 000000000..97c4905c2 Binary files /dev/null and b/public/terrain/19/858583/353793.terrain differ diff --git a/public/terrain/19/858583/353794.terrain b/public/terrain/19/858583/353794.terrain new file mode 100644 index 000000000..50456e1a8 Binary files /dev/null and b/public/terrain/19/858583/353794.terrain differ diff --git a/public/terrain/19/858583/353795.terrain b/public/terrain/19/858583/353795.terrain new file mode 100644 index 000000000..e210a6410 Binary files /dev/null and b/public/terrain/19/858583/353795.terrain differ diff --git a/public/terrain/19/858583/353796.terrain b/public/terrain/19/858583/353796.terrain new file mode 100644 index 000000000..5fae75785 Binary files /dev/null and b/public/terrain/19/858583/353796.terrain differ diff --git a/public/terrain/19/858583/353797.terrain b/public/terrain/19/858583/353797.terrain new file mode 100644 index 000000000..72f68578e Binary files /dev/null and b/public/terrain/19/858583/353797.terrain differ diff --git a/public/terrain/19/858583/353798.terrain b/public/terrain/19/858583/353798.terrain new file mode 100644 index 000000000..7b6eeb452 Binary files /dev/null and b/public/terrain/19/858583/353798.terrain differ diff --git a/public/terrain/19/858583/353799.terrain b/public/terrain/19/858583/353799.terrain new file mode 100644 index 000000000..d065d33cc Binary files /dev/null and b/public/terrain/19/858583/353799.terrain differ diff --git a/public/terrain/19/858583/353800.terrain b/public/terrain/19/858583/353800.terrain new file mode 100644 index 000000000..2859995ec Binary files /dev/null and b/public/terrain/19/858583/353800.terrain differ diff --git a/public/terrain/19/858583/353801.terrain b/public/terrain/19/858583/353801.terrain new file mode 100644 index 000000000..e98c8696d Binary files /dev/null and b/public/terrain/19/858583/353801.terrain differ diff --git a/public/terrain/19/858583/353802.terrain b/public/terrain/19/858583/353802.terrain new file mode 100644 index 000000000..adf9285ae Binary files /dev/null and b/public/terrain/19/858583/353802.terrain differ diff --git a/public/terrain/19/858583/353803.terrain b/public/terrain/19/858583/353803.terrain new file mode 100644 index 000000000..248d5332c Binary files /dev/null and b/public/terrain/19/858583/353803.terrain differ diff --git a/public/terrain/19/858583/353804.terrain b/public/terrain/19/858583/353804.terrain new file mode 100644 index 000000000..bbb1a3325 Binary files /dev/null and b/public/terrain/19/858583/353804.terrain differ diff --git a/public/terrain/19/858583/353805.terrain b/public/terrain/19/858583/353805.terrain new file mode 100644 index 000000000..2ce2fe4eb Binary files /dev/null and b/public/terrain/19/858583/353805.terrain differ diff --git a/public/terrain/19/858583/353806.terrain b/public/terrain/19/858583/353806.terrain new file mode 100644 index 000000000..f471c36b2 Binary files /dev/null and b/public/terrain/19/858583/353806.terrain differ diff --git a/public/terrain/19/858583/353807.terrain b/public/terrain/19/858583/353807.terrain new file mode 100644 index 000000000..55190e45e Binary files /dev/null and b/public/terrain/19/858583/353807.terrain differ diff --git a/public/terrain/19/858583/353808.terrain b/public/terrain/19/858583/353808.terrain new file mode 100644 index 000000000..4f0aa0c90 Binary files /dev/null and b/public/terrain/19/858583/353808.terrain differ diff --git a/public/terrain/19/858583/353809.terrain b/public/terrain/19/858583/353809.terrain new file mode 100644 index 000000000..e6fcc0778 Binary files /dev/null and b/public/terrain/19/858583/353809.terrain differ diff --git a/public/terrain/19/858583/353810.terrain b/public/terrain/19/858583/353810.terrain new file mode 100644 index 000000000..af0475650 Binary files /dev/null and b/public/terrain/19/858583/353810.terrain differ diff --git a/public/terrain/19/858583/353811.terrain b/public/terrain/19/858583/353811.terrain new file mode 100644 index 000000000..63d9951bd Binary files /dev/null and b/public/terrain/19/858583/353811.terrain differ diff --git a/public/terrain/19/858583/353812.terrain b/public/terrain/19/858583/353812.terrain new file mode 100644 index 000000000..efcc1acc9 Binary files /dev/null and b/public/terrain/19/858583/353812.terrain differ diff --git a/public/terrain/19/858583/353813.terrain b/public/terrain/19/858583/353813.terrain new file mode 100644 index 000000000..9fcf09f63 Binary files /dev/null and b/public/terrain/19/858583/353813.terrain differ diff --git a/public/terrain/19/858583/353814.terrain b/public/terrain/19/858583/353814.terrain new file mode 100644 index 000000000..7e264603d Binary files /dev/null and b/public/terrain/19/858583/353814.terrain differ diff --git a/public/terrain/19/858583/353815.terrain b/public/terrain/19/858583/353815.terrain new file mode 100644 index 000000000..aa55af435 Binary files /dev/null and b/public/terrain/19/858583/353815.terrain differ diff --git a/public/terrain/19/858583/353816.terrain b/public/terrain/19/858583/353816.terrain new file mode 100644 index 000000000..6fadaacb9 Binary files /dev/null and b/public/terrain/19/858583/353816.terrain differ diff --git a/public/terrain/19/858583/353817.terrain b/public/terrain/19/858583/353817.terrain new file mode 100644 index 000000000..de5ec8bdf Binary files /dev/null and b/public/terrain/19/858583/353817.terrain differ diff --git a/public/terrain/19/858583/353818.terrain b/public/terrain/19/858583/353818.terrain new file mode 100644 index 000000000..5fe70ef01 Binary files /dev/null and b/public/terrain/19/858583/353818.terrain differ diff --git a/public/terrain/19/858583/353819.terrain b/public/terrain/19/858583/353819.terrain new file mode 100644 index 000000000..0946a8d01 Binary files /dev/null and b/public/terrain/19/858583/353819.terrain differ diff --git a/public/terrain/19/858583/353820.terrain b/public/terrain/19/858583/353820.terrain new file mode 100644 index 000000000..87940ac56 Binary files /dev/null and b/public/terrain/19/858583/353820.terrain differ diff --git a/public/terrain/19/858583/353821.terrain b/public/terrain/19/858583/353821.terrain new file mode 100644 index 000000000..f52c90348 Binary files /dev/null and b/public/terrain/19/858583/353821.terrain differ diff --git a/public/terrain/19/858583/353822.terrain b/public/terrain/19/858583/353822.terrain new file mode 100644 index 000000000..11b70d365 Binary files /dev/null and b/public/terrain/19/858583/353822.terrain differ diff --git a/public/terrain/19/858583/353823.terrain b/public/terrain/19/858583/353823.terrain new file mode 100644 index 000000000..31afe6536 Binary files /dev/null and b/public/terrain/19/858583/353823.terrain differ diff --git a/public/terrain/19/858583/353824.terrain b/public/terrain/19/858583/353824.terrain new file mode 100644 index 000000000..14739b9dd Binary files /dev/null and b/public/terrain/19/858583/353824.terrain differ diff --git a/public/terrain/19/858583/353825.terrain b/public/terrain/19/858583/353825.terrain new file mode 100644 index 000000000..7afd55b99 Binary files /dev/null and b/public/terrain/19/858583/353825.terrain differ diff --git a/public/terrain/19/858583/353826.terrain b/public/terrain/19/858583/353826.terrain new file mode 100644 index 000000000..20befb6a2 Binary files /dev/null and b/public/terrain/19/858583/353826.terrain differ diff --git a/public/terrain/19/858583/353827.terrain b/public/terrain/19/858583/353827.terrain new file mode 100644 index 000000000..5f4a40230 Binary files /dev/null and b/public/terrain/19/858583/353827.terrain differ diff --git a/public/terrain/19/858583/353828.terrain b/public/terrain/19/858583/353828.terrain new file mode 100644 index 000000000..fc37d77f0 Binary files /dev/null and b/public/terrain/19/858583/353828.terrain differ diff --git a/public/terrain/19/858583/353829.terrain b/public/terrain/19/858583/353829.terrain new file mode 100644 index 000000000..a8568ecf0 Binary files /dev/null and b/public/terrain/19/858583/353829.terrain differ diff --git a/public/terrain/19/858583/353830.terrain b/public/terrain/19/858583/353830.terrain new file mode 100644 index 000000000..897d06825 Binary files /dev/null and b/public/terrain/19/858583/353830.terrain differ diff --git a/public/terrain/19/858583/353831.terrain b/public/terrain/19/858583/353831.terrain new file mode 100644 index 000000000..1da6272c7 Binary files /dev/null and b/public/terrain/19/858583/353831.terrain differ diff --git a/public/terrain/19/858583/353832.terrain b/public/terrain/19/858583/353832.terrain new file mode 100644 index 000000000..6bfe979b7 Binary files /dev/null and b/public/terrain/19/858583/353832.terrain differ diff --git a/public/terrain/19/858583/353833.terrain b/public/terrain/19/858583/353833.terrain new file mode 100644 index 000000000..a32689b86 Binary files /dev/null and b/public/terrain/19/858583/353833.terrain differ diff --git a/public/terrain/19/858583/353834.terrain b/public/terrain/19/858583/353834.terrain new file mode 100644 index 000000000..783c9a6c8 Binary files /dev/null and b/public/terrain/19/858583/353834.terrain differ diff --git a/public/terrain/19/858583/353835.terrain b/public/terrain/19/858583/353835.terrain new file mode 100644 index 000000000..f3fab2290 Binary files /dev/null and b/public/terrain/19/858583/353835.terrain differ diff --git a/public/terrain/19/858583/353836.terrain b/public/terrain/19/858583/353836.terrain new file mode 100644 index 000000000..9809f6d21 Binary files /dev/null and b/public/terrain/19/858583/353836.terrain differ diff --git a/public/terrain/19/858583/353837.terrain b/public/terrain/19/858583/353837.terrain new file mode 100644 index 000000000..23161d5eb Binary files /dev/null and b/public/terrain/19/858583/353837.terrain differ diff --git a/public/terrain/19/858583/353838.terrain b/public/terrain/19/858583/353838.terrain new file mode 100644 index 000000000..cc6492ca3 Binary files /dev/null and b/public/terrain/19/858583/353838.terrain differ diff --git a/public/terrain/19/858583/353839.terrain b/public/terrain/19/858583/353839.terrain new file mode 100644 index 000000000..bcc53f11f Binary files /dev/null and b/public/terrain/19/858583/353839.terrain differ diff --git a/public/terrain/19/858583/353840.terrain b/public/terrain/19/858583/353840.terrain new file mode 100644 index 000000000..136033492 Binary files /dev/null and b/public/terrain/19/858583/353840.terrain differ diff --git a/public/terrain/19/858583/353841.terrain b/public/terrain/19/858583/353841.terrain new file mode 100644 index 000000000..522a8322f Binary files /dev/null and b/public/terrain/19/858583/353841.terrain differ diff --git a/public/terrain/19/858583/353842.terrain b/public/terrain/19/858583/353842.terrain new file mode 100644 index 000000000..92844a8b4 Binary files /dev/null and b/public/terrain/19/858583/353842.terrain differ diff --git a/public/terrain/19/858583/353843.terrain b/public/terrain/19/858583/353843.terrain new file mode 100644 index 000000000..11aa8fd63 Binary files /dev/null and b/public/terrain/19/858583/353843.terrain differ diff --git a/public/terrain/19/858583/353844.terrain b/public/terrain/19/858583/353844.terrain new file mode 100644 index 000000000..aa90a0e89 Binary files /dev/null and b/public/terrain/19/858583/353844.terrain differ diff --git a/public/terrain/19/858583/353845.terrain b/public/terrain/19/858583/353845.terrain new file mode 100644 index 000000000..5c9f47680 Binary files /dev/null and b/public/terrain/19/858583/353845.terrain differ diff --git a/public/terrain/19/858583/353846.terrain b/public/terrain/19/858583/353846.terrain new file mode 100644 index 000000000..ac20da410 Binary files /dev/null and b/public/terrain/19/858583/353846.terrain differ diff --git a/public/terrain/19/858583/353847.terrain b/public/terrain/19/858583/353847.terrain new file mode 100644 index 000000000..760ff7f9d Binary files /dev/null and b/public/terrain/19/858583/353847.terrain differ diff --git a/public/terrain/19/858583/353848.terrain b/public/terrain/19/858583/353848.terrain new file mode 100644 index 000000000..c5de60c7f Binary files /dev/null and b/public/terrain/19/858583/353848.terrain differ diff --git a/public/terrain/19/858583/353849.terrain b/public/terrain/19/858583/353849.terrain new file mode 100644 index 000000000..830408ecc Binary files /dev/null and b/public/terrain/19/858583/353849.terrain differ diff --git a/public/terrain/19/858583/353850.terrain b/public/terrain/19/858583/353850.terrain new file mode 100644 index 000000000..ec37a8e4d Binary files /dev/null and b/public/terrain/19/858583/353850.terrain differ diff --git a/public/terrain/19/858583/353851.terrain b/public/terrain/19/858583/353851.terrain new file mode 100644 index 000000000..4b576ef42 Binary files /dev/null and b/public/terrain/19/858583/353851.terrain differ diff --git a/public/terrain/19/858583/353852.terrain b/public/terrain/19/858583/353852.terrain new file mode 100644 index 000000000..7c7df34e8 Binary files /dev/null and b/public/terrain/19/858583/353852.terrain differ diff --git a/public/terrain/19/858583/353853.terrain b/public/terrain/19/858583/353853.terrain new file mode 100644 index 000000000..82d037c8c Binary files /dev/null and b/public/terrain/19/858583/353853.terrain differ diff --git a/public/terrain/19/858583/353854.terrain b/public/terrain/19/858583/353854.terrain new file mode 100644 index 000000000..8bdaa1777 Binary files /dev/null and b/public/terrain/19/858583/353854.terrain differ diff --git a/public/terrain/19/858583/353855.terrain b/public/terrain/19/858583/353855.terrain new file mode 100644 index 000000000..8aae10986 Binary files /dev/null and b/public/terrain/19/858583/353855.terrain differ diff --git a/public/terrain/19/858583/353856.terrain b/public/terrain/19/858583/353856.terrain new file mode 100644 index 000000000..36abbcf24 Binary files /dev/null and b/public/terrain/19/858583/353856.terrain differ diff --git a/public/terrain/19/858583/353857.terrain b/public/terrain/19/858583/353857.terrain new file mode 100644 index 000000000..937a188bb Binary files /dev/null and b/public/terrain/19/858583/353857.terrain differ diff --git a/public/terrain/19/858583/353858.terrain b/public/terrain/19/858583/353858.terrain new file mode 100644 index 000000000..3bde0a253 Binary files /dev/null and b/public/terrain/19/858583/353858.terrain differ diff --git a/public/terrain/19/858583/353859.terrain b/public/terrain/19/858583/353859.terrain new file mode 100644 index 000000000..1596c1a33 Binary files /dev/null and b/public/terrain/19/858583/353859.terrain differ diff --git a/public/terrain/19/858583/353860.terrain b/public/terrain/19/858583/353860.terrain new file mode 100644 index 000000000..bb0cb864b Binary files /dev/null and b/public/terrain/19/858583/353860.terrain differ diff --git a/public/terrain/19/858583/353861.terrain b/public/terrain/19/858583/353861.terrain new file mode 100644 index 000000000..d81690d34 Binary files /dev/null and b/public/terrain/19/858583/353861.terrain differ diff --git a/public/terrain/19/858583/353862.terrain b/public/terrain/19/858583/353862.terrain new file mode 100644 index 000000000..7a0a7ca8b Binary files /dev/null and b/public/terrain/19/858583/353862.terrain differ diff --git a/public/terrain/19/858583/353863.terrain b/public/terrain/19/858583/353863.terrain new file mode 100644 index 000000000..1655754ab Binary files /dev/null and b/public/terrain/19/858583/353863.terrain differ diff --git a/public/terrain/19/858583/353864.terrain b/public/terrain/19/858583/353864.terrain new file mode 100644 index 000000000..17f34825d Binary files /dev/null and b/public/terrain/19/858583/353864.terrain differ diff --git a/public/terrain/19/858583/353865.terrain b/public/terrain/19/858583/353865.terrain new file mode 100644 index 000000000..9726663b6 Binary files /dev/null and b/public/terrain/19/858583/353865.terrain differ diff --git a/public/terrain/19/858583/353866.terrain b/public/terrain/19/858583/353866.terrain new file mode 100644 index 000000000..93fe9f545 Binary files /dev/null and b/public/terrain/19/858583/353866.terrain differ diff --git a/public/terrain/19/858583/353867.terrain b/public/terrain/19/858583/353867.terrain new file mode 100644 index 000000000..d62b7b1db Binary files /dev/null and b/public/terrain/19/858583/353867.terrain differ diff --git a/public/terrain/19/858583/353868.terrain b/public/terrain/19/858583/353868.terrain new file mode 100644 index 000000000..7ccde891a Binary files /dev/null and b/public/terrain/19/858583/353868.terrain differ diff --git a/public/terrain/19/858583/353869.terrain b/public/terrain/19/858583/353869.terrain new file mode 100644 index 000000000..f420bc735 Binary files /dev/null and b/public/terrain/19/858583/353869.terrain differ diff --git a/public/terrain/19/858583/353870.terrain b/public/terrain/19/858583/353870.terrain new file mode 100644 index 000000000..0d1e189b6 Binary files /dev/null and b/public/terrain/19/858583/353870.terrain differ diff --git a/public/terrain/19/858583/353871.terrain b/public/terrain/19/858583/353871.terrain new file mode 100644 index 000000000..c7cbfbba1 Binary files /dev/null and b/public/terrain/19/858583/353871.terrain differ diff --git a/public/terrain/19/858583/353872.terrain b/public/terrain/19/858583/353872.terrain new file mode 100644 index 000000000..c5fdba98a Binary files /dev/null and b/public/terrain/19/858583/353872.terrain differ diff --git a/public/terrain/19/858583/353873.terrain b/public/terrain/19/858583/353873.terrain new file mode 100644 index 000000000..0272002dc Binary files /dev/null and b/public/terrain/19/858583/353873.terrain differ diff --git a/public/terrain/19/858583/353874.terrain b/public/terrain/19/858583/353874.terrain new file mode 100644 index 000000000..0ef7bf360 Binary files /dev/null and b/public/terrain/19/858583/353874.terrain differ diff --git a/public/terrain/19/858583/353875.terrain b/public/terrain/19/858583/353875.terrain new file mode 100644 index 000000000..ffcf6e2f9 Binary files /dev/null and b/public/terrain/19/858583/353875.terrain differ diff --git a/public/terrain/19/858583/353876.terrain b/public/terrain/19/858583/353876.terrain new file mode 100644 index 000000000..e99a93182 Binary files /dev/null and b/public/terrain/19/858583/353876.terrain differ diff --git a/public/terrain/19/858583/353877.terrain b/public/terrain/19/858583/353877.terrain new file mode 100644 index 000000000..b7274ceb8 Binary files /dev/null and b/public/terrain/19/858583/353877.terrain differ diff --git a/public/terrain/19/858583/353878.terrain b/public/terrain/19/858583/353878.terrain new file mode 100644 index 000000000..7f3f1531e Binary files /dev/null and b/public/terrain/19/858583/353878.terrain differ diff --git a/public/terrain/19/858583/353879.terrain b/public/terrain/19/858583/353879.terrain new file mode 100644 index 000000000..00aec847b Binary files /dev/null and b/public/terrain/19/858583/353879.terrain differ diff --git a/public/terrain/19/858583/353880.terrain b/public/terrain/19/858583/353880.terrain new file mode 100644 index 000000000..060af1823 Binary files /dev/null and b/public/terrain/19/858583/353880.terrain differ diff --git a/public/terrain/19/858583/353881.terrain b/public/terrain/19/858583/353881.terrain new file mode 100644 index 000000000..2d6edaa16 Binary files /dev/null and b/public/terrain/19/858583/353881.terrain differ diff --git a/public/terrain/19/858583/353882.terrain b/public/terrain/19/858583/353882.terrain new file mode 100644 index 000000000..1457a0af9 Binary files /dev/null and b/public/terrain/19/858583/353882.terrain differ diff --git a/public/terrain/19/858583/353883.terrain b/public/terrain/19/858583/353883.terrain new file mode 100644 index 000000000..fd3e7dc9a Binary files /dev/null and b/public/terrain/19/858583/353883.terrain differ diff --git a/public/terrain/19/858583/353884.terrain b/public/terrain/19/858583/353884.terrain new file mode 100644 index 000000000..d722572b2 Binary files /dev/null and b/public/terrain/19/858583/353884.terrain differ diff --git a/public/terrain/19/858583/353885.terrain b/public/terrain/19/858583/353885.terrain new file mode 100644 index 000000000..701f4bfe4 Binary files /dev/null and b/public/terrain/19/858583/353885.terrain differ diff --git a/public/terrain/19/858583/353886.terrain b/public/terrain/19/858583/353886.terrain new file mode 100644 index 000000000..e7d8696c9 Binary files /dev/null and b/public/terrain/19/858583/353886.terrain differ diff --git a/public/terrain/19/858583/353887.terrain b/public/terrain/19/858583/353887.terrain new file mode 100644 index 000000000..2dc142039 Binary files /dev/null and b/public/terrain/19/858583/353887.terrain differ diff --git a/public/terrain/19/858583/353888.terrain b/public/terrain/19/858583/353888.terrain new file mode 100644 index 000000000..f49ecb596 Binary files /dev/null and b/public/terrain/19/858583/353888.terrain differ diff --git a/public/terrain/19/858583/353889.terrain b/public/terrain/19/858583/353889.terrain new file mode 100644 index 000000000..fc9a16d56 Binary files /dev/null and b/public/terrain/19/858583/353889.terrain differ diff --git a/public/terrain/19/858583/353890.terrain b/public/terrain/19/858583/353890.terrain new file mode 100644 index 000000000..1f6e21e5a Binary files /dev/null and b/public/terrain/19/858583/353890.terrain differ diff --git a/public/terrain/19/858583/353891.terrain b/public/terrain/19/858583/353891.terrain new file mode 100644 index 000000000..548598970 Binary files /dev/null and b/public/terrain/19/858583/353891.terrain differ diff --git a/public/terrain/19/858583/353892.terrain b/public/terrain/19/858583/353892.terrain new file mode 100644 index 000000000..f123f1eb8 Binary files /dev/null and b/public/terrain/19/858583/353892.terrain differ diff --git a/public/terrain/19/858583/353893.terrain b/public/terrain/19/858583/353893.terrain new file mode 100644 index 000000000..25c9c0725 Binary files /dev/null and b/public/terrain/19/858583/353893.terrain differ diff --git a/public/terrain/19/858583/353894.terrain b/public/terrain/19/858583/353894.terrain new file mode 100644 index 000000000..a4dc8685f Binary files /dev/null and b/public/terrain/19/858583/353894.terrain differ diff --git a/public/terrain/19/858583/353895.terrain b/public/terrain/19/858583/353895.terrain new file mode 100644 index 000000000..f9f53f86a Binary files /dev/null and b/public/terrain/19/858583/353895.terrain differ diff --git a/public/terrain/19/858583/353896.terrain b/public/terrain/19/858583/353896.terrain new file mode 100644 index 000000000..2aa8254ad Binary files /dev/null and b/public/terrain/19/858583/353896.terrain differ diff --git a/public/terrain/19/858583/353897.terrain b/public/terrain/19/858583/353897.terrain new file mode 100644 index 000000000..392c5c6ff Binary files /dev/null and b/public/terrain/19/858583/353897.terrain differ diff --git a/public/terrain/19/858583/353898.terrain b/public/terrain/19/858583/353898.terrain new file mode 100644 index 000000000..9814f2e0b Binary files /dev/null and b/public/terrain/19/858583/353898.terrain differ diff --git a/public/terrain/19/858583/353899.terrain b/public/terrain/19/858583/353899.terrain new file mode 100644 index 000000000..889148425 Binary files /dev/null and b/public/terrain/19/858583/353899.terrain differ diff --git a/public/terrain/19/858583/353900.terrain b/public/terrain/19/858583/353900.terrain new file mode 100644 index 000000000..984cec5b6 Binary files /dev/null and b/public/terrain/19/858583/353900.terrain differ diff --git a/public/terrain/19/858583/353901.terrain b/public/terrain/19/858583/353901.terrain new file mode 100644 index 000000000..d783affb8 Binary files /dev/null and b/public/terrain/19/858583/353901.terrain differ diff --git a/public/terrain/19/858583/353902.terrain b/public/terrain/19/858583/353902.terrain new file mode 100644 index 000000000..e8bb2ee43 Binary files /dev/null and b/public/terrain/19/858583/353902.terrain differ diff --git a/public/terrain/19/858583/353903.terrain b/public/terrain/19/858583/353903.terrain new file mode 100644 index 000000000..4ecb1c968 Binary files /dev/null and b/public/terrain/19/858583/353903.terrain differ diff --git a/public/terrain/19/858583/353904.terrain b/public/terrain/19/858583/353904.terrain new file mode 100644 index 000000000..59de2c030 Binary files /dev/null and b/public/terrain/19/858583/353904.terrain differ diff --git a/public/terrain/19/858583/353905.terrain b/public/terrain/19/858583/353905.terrain new file mode 100644 index 000000000..ef41b5edb Binary files /dev/null and b/public/terrain/19/858583/353905.terrain differ diff --git a/public/terrain/19/858583/353906.terrain b/public/terrain/19/858583/353906.terrain new file mode 100644 index 000000000..55b6c75f7 Binary files /dev/null and b/public/terrain/19/858583/353906.terrain differ diff --git a/public/terrain/19/858583/353907.terrain b/public/terrain/19/858583/353907.terrain new file mode 100644 index 000000000..0286e23ba Binary files /dev/null and b/public/terrain/19/858583/353907.terrain differ diff --git a/public/terrain/19/858583/353908.terrain b/public/terrain/19/858583/353908.terrain new file mode 100644 index 000000000..8cdbfedfd Binary files /dev/null and b/public/terrain/19/858583/353908.terrain differ diff --git a/public/terrain/19/858583/353909.terrain b/public/terrain/19/858583/353909.terrain new file mode 100644 index 000000000..0140c4478 Binary files /dev/null and b/public/terrain/19/858583/353909.terrain differ diff --git a/public/terrain/19/858583/353910.terrain b/public/terrain/19/858583/353910.terrain new file mode 100644 index 000000000..541c7edc2 Binary files /dev/null and b/public/terrain/19/858583/353910.terrain differ diff --git a/public/terrain/19/858583/353911.terrain b/public/terrain/19/858583/353911.terrain new file mode 100644 index 000000000..c69b263d3 Binary files /dev/null and b/public/terrain/19/858583/353911.terrain differ diff --git a/public/terrain/19/858583/353912.terrain b/public/terrain/19/858583/353912.terrain new file mode 100644 index 000000000..f6895b86e Binary files /dev/null and b/public/terrain/19/858583/353912.terrain differ diff --git a/public/terrain/19/858583/353913.terrain b/public/terrain/19/858583/353913.terrain new file mode 100644 index 000000000..be56c218f Binary files /dev/null and b/public/terrain/19/858583/353913.terrain differ diff --git a/public/terrain/19/858583/353914.terrain b/public/terrain/19/858583/353914.terrain new file mode 100644 index 000000000..84b8b5ec0 Binary files /dev/null and b/public/terrain/19/858583/353914.terrain differ diff --git a/public/terrain/19/858583/353915.terrain b/public/terrain/19/858583/353915.terrain new file mode 100644 index 000000000..723d5cc97 Binary files /dev/null and b/public/terrain/19/858583/353915.terrain differ diff --git a/public/terrain/19/858583/353916.terrain b/public/terrain/19/858583/353916.terrain new file mode 100644 index 000000000..555df9e01 Binary files /dev/null and b/public/terrain/19/858583/353916.terrain differ diff --git a/public/terrain/19/858583/353917.terrain b/public/terrain/19/858583/353917.terrain new file mode 100644 index 000000000..cb4051020 Binary files /dev/null and b/public/terrain/19/858583/353917.terrain differ diff --git a/public/terrain/19/858583/353918.terrain b/public/terrain/19/858583/353918.terrain new file mode 100644 index 000000000..87929ef0b Binary files /dev/null and b/public/terrain/19/858583/353918.terrain differ diff --git a/public/terrain/19/858583/353919.terrain b/public/terrain/19/858583/353919.terrain new file mode 100644 index 000000000..bef9e9f81 Binary files /dev/null and b/public/terrain/19/858583/353919.terrain differ diff --git a/public/terrain/19/858583/353920.terrain b/public/terrain/19/858583/353920.terrain new file mode 100644 index 000000000..81fc9240c Binary files /dev/null and b/public/terrain/19/858583/353920.terrain differ diff --git a/public/terrain/19/858583/353921.terrain b/public/terrain/19/858583/353921.terrain new file mode 100644 index 000000000..d5da33b30 Binary files /dev/null and b/public/terrain/19/858583/353921.terrain differ diff --git a/public/terrain/19/858583/353922.terrain b/public/terrain/19/858583/353922.terrain new file mode 100644 index 000000000..a6671d1c6 Binary files /dev/null and b/public/terrain/19/858583/353922.terrain differ diff --git a/public/terrain/19/858583/353923.terrain b/public/terrain/19/858583/353923.terrain new file mode 100644 index 000000000..b876bc38d Binary files /dev/null and b/public/terrain/19/858583/353923.terrain differ diff --git a/public/terrain/19/858583/353924.terrain b/public/terrain/19/858583/353924.terrain new file mode 100644 index 000000000..aeda95ff3 Binary files /dev/null and b/public/terrain/19/858583/353924.terrain differ diff --git a/public/terrain/19/858583/353925.terrain b/public/terrain/19/858583/353925.terrain new file mode 100644 index 000000000..143b1a023 Binary files /dev/null and b/public/terrain/19/858583/353925.terrain differ diff --git a/public/terrain/19/858583/353926.terrain b/public/terrain/19/858583/353926.terrain new file mode 100644 index 000000000..4fe10c002 Binary files /dev/null and b/public/terrain/19/858583/353926.terrain differ diff --git a/public/terrain/19/858583/353927.terrain b/public/terrain/19/858583/353927.terrain new file mode 100644 index 000000000..8166081cd Binary files /dev/null and b/public/terrain/19/858583/353927.terrain differ diff --git a/public/terrain/19/858583/353928.terrain b/public/terrain/19/858583/353928.terrain new file mode 100644 index 000000000..5c2741335 Binary files /dev/null and b/public/terrain/19/858583/353928.terrain differ diff --git a/public/terrain/19/858583/353929.terrain b/public/terrain/19/858583/353929.terrain new file mode 100644 index 000000000..1852cc807 Binary files /dev/null and b/public/terrain/19/858583/353929.terrain differ diff --git a/public/terrain/19/858583/353930.terrain b/public/terrain/19/858583/353930.terrain new file mode 100644 index 000000000..b87ee5133 Binary files /dev/null and b/public/terrain/19/858583/353930.terrain differ diff --git a/public/terrain/19/858583/353931.terrain b/public/terrain/19/858583/353931.terrain new file mode 100644 index 000000000..ce0e66957 Binary files /dev/null and b/public/terrain/19/858583/353931.terrain differ diff --git a/public/terrain/19/858583/353932.terrain b/public/terrain/19/858583/353932.terrain new file mode 100644 index 000000000..769754d8c Binary files /dev/null and b/public/terrain/19/858583/353932.terrain differ diff --git a/public/terrain/19/858583/353933.terrain b/public/terrain/19/858583/353933.terrain new file mode 100644 index 000000000..52559f7f3 Binary files /dev/null and b/public/terrain/19/858583/353933.terrain differ diff --git a/public/terrain/19/858583/353934.terrain b/public/terrain/19/858583/353934.terrain new file mode 100644 index 000000000..fd418442b Binary files /dev/null and b/public/terrain/19/858583/353934.terrain differ diff --git a/public/terrain/19/858583/353935.terrain b/public/terrain/19/858583/353935.terrain new file mode 100644 index 000000000..eaa7d8752 Binary files /dev/null and b/public/terrain/19/858583/353935.terrain differ diff --git a/public/terrain/19/858583/353936.terrain b/public/terrain/19/858583/353936.terrain new file mode 100644 index 000000000..fdff7983a Binary files /dev/null and b/public/terrain/19/858583/353936.terrain differ diff --git a/public/terrain/19/858583/353937.terrain b/public/terrain/19/858583/353937.terrain new file mode 100644 index 000000000..3c82b358c Binary files /dev/null and b/public/terrain/19/858583/353937.terrain differ diff --git a/public/terrain/19/858583/353938.terrain b/public/terrain/19/858583/353938.terrain new file mode 100644 index 000000000..92c35a093 Binary files /dev/null and b/public/terrain/19/858583/353938.terrain differ diff --git a/public/terrain/19/858583/353939.terrain b/public/terrain/19/858583/353939.terrain new file mode 100644 index 000000000..e86849c6b Binary files /dev/null and b/public/terrain/19/858583/353939.terrain differ diff --git a/public/terrain/19/858583/353940.terrain b/public/terrain/19/858583/353940.terrain new file mode 100644 index 000000000..3f026be6c Binary files /dev/null and b/public/terrain/19/858583/353940.terrain differ diff --git a/public/terrain/19/858583/353941.terrain b/public/terrain/19/858583/353941.terrain new file mode 100644 index 000000000..e0d721404 Binary files /dev/null and b/public/terrain/19/858583/353941.terrain differ diff --git a/public/terrain/19/858583/353942.terrain b/public/terrain/19/858583/353942.terrain new file mode 100644 index 000000000..d53dd0366 Binary files /dev/null and b/public/terrain/19/858583/353942.terrain differ diff --git a/public/terrain/19/858583/353943.terrain b/public/terrain/19/858583/353943.terrain new file mode 100644 index 000000000..9baaaedf8 Binary files /dev/null and b/public/terrain/19/858583/353943.terrain differ diff --git a/public/terrain/19/858583/353944.terrain b/public/terrain/19/858583/353944.terrain new file mode 100644 index 000000000..a881a531b Binary files /dev/null and b/public/terrain/19/858583/353944.terrain differ diff --git a/public/terrain/19/858583/353945.terrain b/public/terrain/19/858583/353945.terrain new file mode 100644 index 000000000..2bc528956 Binary files /dev/null and b/public/terrain/19/858583/353945.terrain differ diff --git a/public/terrain/19/858583/353946.terrain b/public/terrain/19/858583/353946.terrain new file mode 100644 index 000000000..0a1c6d50b Binary files /dev/null and b/public/terrain/19/858583/353946.terrain differ diff --git a/public/terrain/19/858583/353947.terrain b/public/terrain/19/858583/353947.terrain new file mode 100644 index 000000000..1e8d57e54 Binary files /dev/null and b/public/terrain/19/858583/353947.terrain differ diff --git a/public/terrain/19/858583/353948.terrain b/public/terrain/19/858583/353948.terrain new file mode 100644 index 000000000..55167b501 Binary files /dev/null and b/public/terrain/19/858583/353948.terrain differ diff --git a/public/terrain/19/858583/353949.terrain b/public/terrain/19/858583/353949.terrain new file mode 100644 index 000000000..2fc0ab0db Binary files /dev/null and b/public/terrain/19/858583/353949.terrain differ diff --git a/public/terrain/19/858583/353950.terrain b/public/terrain/19/858583/353950.terrain new file mode 100644 index 000000000..31aa4c10e Binary files /dev/null and b/public/terrain/19/858583/353950.terrain differ diff --git a/public/terrain/19/858583/353951.terrain b/public/terrain/19/858583/353951.terrain new file mode 100644 index 000000000..90a0f33a6 Binary files /dev/null and b/public/terrain/19/858583/353951.terrain differ diff --git a/public/terrain/19/858583/353952.terrain b/public/terrain/19/858583/353952.terrain new file mode 100644 index 000000000..be4996a4e Binary files /dev/null and b/public/terrain/19/858583/353952.terrain differ diff --git a/public/terrain/19/858583/353953.terrain b/public/terrain/19/858583/353953.terrain new file mode 100644 index 000000000..2ff0279dc Binary files /dev/null and b/public/terrain/19/858583/353953.terrain differ diff --git a/public/terrain/19/858583/353954.terrain b/public/terrain/19/858583/353954.terrain new file mode 100644 index 000000000..601940ffd Binary files /dev/null and b/public/terrain/19/858583/353954.terrain differ diff --git a/public/terrain/19/858583/353955.terrain b/public/terrain/19/858583/353955.terrain new file mode 100644 index 000000000..2e8b66f40 Binary files /dev/null and b/public/terrain/19/858583/353955.terrain differ diff --git a/public/terrain/19/858583/353956.terrain b/public/terrain/19/858583/353956.terrain new file mode 100644 index 000000000..2e73d51a4 Binary files /dev/null and b/public/terrain/19/858583/353956.terrain differ diff --git a/public/terrain/19/858583/353957.terrain b/public/terrain/19/858583/353957.terrain new file mode 100644 index 000000000..dfdd8c0b2 Binary files /dev/null and b/public/terrain/19/858583/353957.terrain differ diff --git a/public/terrain/19/858583/353958.terrain b/public/terrain/19/858583/353958.terrain new file mode 100644 index 000000000..372e83cff Binary files /dev/null and b/public/terrain/19/858583/353958.terrain differ diff --git a/public/terrain/19/858583/353959.terrain b/public/terrain/19/858583/353959.terrain new file mode 100644 index 000000000..ece1ff402 Binary files /dev/null and b/public/terrain/19/858583/353959.terrain differ diff --git a/public/terrain/19/858583/353960.terrain b/public/terrain/19/858583/353960.terrain new file mode 100644 index 000000000..a5b5aa5de Binary files /dev/null and b/public/terrain/19/858583/353960.terrain differ diff --git a/public/terrain/19/858583/353961.terrain b/public/terrain/19/858583/353961.terrain new file mode 100644 index 000000000..f43aebdaf Binary files /dev/null and b/public/terrain/19/858583/353961.terrain differ diff --git a/public/terrain/19/858583/353962.terrain b/public/terrain/19/858583/353962.terrain new file mode 100644 index 000000000..3d392705f Binary files /dev/null and b/public/terrain/19/858583/353962.terrain differ diff --git a/public/terrain/19/858583/353963.terrain b/public/terrain/19/858583/353963.terrain new file mode 100644 index 000000000..07d3e8f7a Binary files /dev/null and b/public/terrain/19/858583/353963.terrain differ diff --git a/public/terrain/19/858583/353964.terrain b/public/terrain/19/858583/353964.terrain new file mode 100644 index 000000000..97062f8f5 Binary files /dev/null and b/public/terrain/19/858583/353964.terrain differ diff --git a/public/terrain/19/858583/353965.terrain b/public/terrain/19/858583/353965.terrain new file mode 100644 index 000000000..364054830 Binary files /dev/null and b/public/terrain/19/858583/353965.terrain differ diff --git a/public/terrain/19/858583/353966.terrain b/public/terrain/19/858583/353966.terrain new file mode 100644 index 000000000..6c0ec2500 Binary files /dev/null and b/public/terrain/19/858583/353966.terrain differ diff --git a/public/terrain/19/858583/353967.terrain b/public/terrain/19/858583/353967.terrain new file mode 100644 index 000000000..cd35d4def Binary files /dev/null and b/public/terrain/19/858583/353967.terrain differ diff --git a/public/terrain/19/858583/353968.terrain b/public/terrain/19/858583/353968.terrain new file mode 100644 index 000000000..8beba43e6 Binary files /dev/null and b/public/terrain/19/858583/353968.terrain differ diff --git a/public/terrain/19/858583/353969.terrain b/public/terrain/19/858583/353969.terrain new file mode 100644 index 000000000..9ed77204c Binary files /dev/null and b/public/terrain/19/858583/353969.terrain differ diff --git a/public/terrain/19/858583/353970.terrain b/public/terrain/19/858583/353970.terrain new file mode 100644 index 000000000..39e5d6782 Binary files /dev/null and b/public/terrain/19/858583/353970.terrain differ diff --git a/public/terrain/19/858583/353971.terrain b/public/terrain/19/858583/353971.terrain new file mode 100644 index 000000000..0650ab1f9 Binary files /dev/null and b/public/terrain/19/858583/353971.terrain differ diff --git a/public/terrain/19/858583/353972.terrain b/public/terrain/19/858583/353972.terrain new file mode 100644 index 000000000..7213efe59 Binary files /dev/null and b/public/terrain/19/858583/353972.terrain differ diff --git a/public/terrain/19/858583/353973.terrain b/public/terrain/19/858583/353973.terrain new file mode 100644 index 000000000..4b2a47f4f Binary files /dev/null and b/public/terrain/19/858583/353973.terrain differ diff --git a/public/terrain/19/858583/353974.terrain b/public/terrain/19/858583/353974.terrain new file mode 100644 index 000000000..8c8618790 Binary files /dev/null and b/public/terrain/19/858583/353974.terrain differ diff --git a/public/terrain/19/858583/353975.terrain b/public/terrain/19/858583/353975.terrain new file mode 100644 index 000000000..dd0e1cf93 Binary files /dev/null and b/public/terrain/19/858583/353975.terrain differ diff --git a/public/terrain/19/858583/353976.terrain b/public/terrain/19/858583/353976.terrain new file mode 100644 index 000000000..b8b705f8e Binary files /dev/null and b/public/terrain/19/858583/353976.terrain differ diff --git a/public/terrain/19/858583/353977.terrain b/public/terrain/19/858583/353977.terrain new file mode 100644 index 000000000..90781689c Binary files /dev/null and b/public/terrain/19/858583/353977.terrain differ diff --git a/public/terrain/19/858583/353978.terrain b/public/terrain/19/858583/353978.terrain new file mode 100644 index 000000000..c9fbe4e1e Binary files /dev/null and b/public/terrain/19/858583/353978.terrain differ diff --git a/public/terrain/19/858583/353979.terrain b/public/terrain/19/858583/353979.terrain new file mode 100644 index 000000000..0a7dcabec Binary files /dev/null and b/public/terrain/19/858583/353979.terrain differ diff --git a/public/terrain/19/858583/353980.terrain b/public/terrain/19/858583/353980.terrain new file mode 100644 index 000000000..6c4bea9dd Binary files /dev/null and b/public/terrain/19/858583/353980.terrain differ diff --git a/public/terrain/19/858583/353981.terrain b/public/terrain/19/858583/353981.terrain new file mode 100644 index 000000000..1406f9a70 Binary files /dev/null and b/public/terrain/19/858583/353981.terrain differ diff --git a/public/terrain/19/858583/353982.terrain b/public/terrain/19/858583/353982.terrain new file mode 100644 index 000000000..45314eafe Binary files /dev/null and b/public/terrain/19/858583/353982.terrain differ diff --git a/public/terrain/19/858583/353983.terrain b/public/terrain/19/858583/353983.terrain new file mode 100644 index 000000000..f4e9ba560 Binary files /dev/null and b/public/terrain/19/858583/353983.terrain differ diff --git a/public/terrain/19/858583/353984.terrain b/public/terrain/19/858583/353984.terrain new file mode 100644 index 000000000..717973676 Binary files /dev/null and b/public/terrain/19/858583/353984.terrain differ diff --git a/public/terrain/19/858583/353985.terrain b/public/terrain/19/858583/353985.terrain new file mode 100644 index 000000000..cb7cd0e13 Binary files /dev/null and b/public/terrain/19/858583/353985.terrain differ diff --git a/public/terrain/19/858583/353986.terrain b/public/terrain/19/858583/353986.terrain new file mode 100644 index 000000000..27b4e6a8e Binary files /dev/null and b/public/terrain/19/858583/353986.terrain differ diff --git a/public/terrain/19/858583/353987.terrain b/public/terrain/19/858583/353987.terrain new file mode 100644 index 000000000..e27f04934 Binary files /dev/null and b/public/terrain/19/858583/353987.terrain differ diff --git a/public/terrain/19/858583/353988.terrain b/public/terrain/19/858583/353988.terrain new file mode 100644 index 000000000..7f673a2da Binary files /dev/null and b/public/terrain/19/858583/353988.terrain differ diff --git a/public/terrain/19/858583/353989.terrain b/public/terrain/19/858583/353989.terrain new file mode 100644 index 000000000..f73f354a4 Binary files /dev/null and b/public/terrain/19/858583/353989.terrain differ diff --git a/public/terrain/19/858583/353990.terrain b/public/terrain/19/858583/353990.terrain new file mode 100644 index 000000000..ff7a69ffe Binary files /dev/null and b/public/terrain/19/858583/353990.terrain differ diff --git a/public/terrain/19/858583/353991.terrain b/public/terrain/19/858583/353991.terrain new file mode 100644 index 000000000..da5274b0f Binary files /dev/null and b/public/terrain/19/858583/353991.terrain differ diff --git a/public/terrain/19/858583/353992.terrain b/public/terrain/19/858583/353992.terrain new file mode 100644 index 000000000..953e22d6c Binary files /dev/null and b/public/terrain/19/858583/353992.terrain differ diff --git a/public/terrain/19/858583/353993.terrain b/public/terrain/19/858583/353993.terrain new file mode 100644 index 000000000..394a98f51 Binary files /dev/null and b/public/terrain/19/858583/353993.terrain differ diff --git a/public/terrain/19/858583/353994.terrain b/public/terrain/19/858583/353994.terrain new file mode 100644 index 000000000..e77a66317 Binary files /dev/null and b/public/terrain/19/858583/353994.terrain differ diff --git a/public/terrain/19/858583/353995.terrain b/public/terrain/19/858583/353995.terrain new file mode 100644 index 000000000..fd4e57c54 Binary files /dev/null and b/public/terrain/19/858583/353995.terrain differ diff --git a/public/terrain/19/858583/353996.terrain b/public/terrain/19/858583/353996.terrain new file mode 100644 index 000000000..cf5e22e87 Binary files /dev/null and b/public/terrain/19/858583/353996.terrain differ diff --git a/public/terrain/19/858583/353997.terrain b/public/terrain/19/858583/353997.terrain new file mode 100644 index 000000000..dda3342ec Binary files /dev/null and b/public/terrain/19/858583/353997.terrain differ diff --git a/public/terrain/19/858583/353998.terrain b/public/terrain/19/858583/353998.terrain new file mode 100644 index 000000000..409300548 Binary files /dev/null and b/public/terrain/19/858583/353998.terrain differ diff --git a/public/terrain/19/858583/353999.terrain b/public/terrain/19/858583/353999.terrain new file mode 100644 index 000000000..244cafad3 Binary files /dev/null and b/public/terrain/19/858583/353999.terrain differ diff --git a/public/terrain/19/858583/354000.terrain b/public/terrain/19/858583/354000.terrain new file mode 100644 index 000000000..bc8cabea9 Binary files /dev/null and b/public/terrain/19/858583/354000.terrain differ diff --git a/public/terrain/19/858583/354001.terrain b/public/terrain/19/858583/354001.terrain new file mode 100644 index 000000000..e9bd938cf Binary files /dev/null and b/public/terrain/19/858583/354001.terrain differ diff --git a/public/terrain/19/858583/354002.terrain b/public/terrain/19/858583/354002.terrain new file mode 100644 index 000000000..fd1a6bfa0 Binary files /dev/null and b/public/terrain/19/858583/354002.terrain differ diff --git a/public/terrain/19/858583/354003.terrain b/public/terrain/19/858583/354003.terrain new file mode 100644 index 000000000..370bda45e Binary files /dev/null and b/public/terrain/19/858583/354003.terrain differ diff --git a/public/terrain/19/858583/354004.terrain b/public/terrain/19/858583/354004.terrain new file mode 100644 index 000000000..4edd44773 Binary files /dev/null and b/public/terrain/19/858583/354004.terrain differ diff --git a/public/terrain/19/858583/354005.terrain b/public/terrain/19/858583/354005.terrain new file mode 100644 index 000000000..2265f9fe9 Binary files /dev/null and b/public/terrain/19/858583/354005.terrain differ diff --git a/public/terrain/19/858583/354006.terrain b/public/terrain/19/858583/354006.terrain new file mode 100644 index 000000000..337744f69 Binary files /dev/null and b/public/terrain/19/858583/354006.terrain differ diff --git a/public/terrain/19/858583/354007.terrain b/public/terrain/19/858583/354007.terrain new file mode 100644 index 000000000..5d4f840c1 Binary files /dev/null and b/public/terrain/19/858583/354007.terrain differ diff --git a/public/terrain/19/858583/354008.terrain b/public/terrain/19/858583/354008.terrain new file mode 100644 index 000000000..8a18d4fac Binary files /dev/null and b/public/terrain/19/858583/354008.terrain differ diff --git a/public/terrain/19/858583/354009.terrain b/public/terrain/19/858583/354009.terrain new file mode 100644 index 000000000..3265ac756 Binary files /dev/null and b/public/terrain/19/858583/354009.terrain differ diff --git a/public/terrain/19/858583/354010.terrain b/public/terrain/19/858583/354010.terrain new file mode 100644 index 000000000..5caa93984 Binary files /dev/null and b/public/terrain/19/858583/354010.terrain differ diff --git a/public/terrain/19/858583/354011.terrain b/public/terrain/19/858583/354011.terrain new file mode 100644 index 000000000..44d6dafe8 Binary files /dev/null and b/public/terrain/19/858583/354011.terrain differ diff --git a/public/terrain/19/858583/354012.terrain b/public/terrain/19/858583/354012.terrain new file mode 100644 index 000000000..bb0978e53 Binary files /dev/null and b/public/terrain/19/858583/354012.terrain differ diff --git a/public/terrain/19/858583/354013.terrain b/public/terrain/19/858583/354013.terrain new file mode 100644 index 000000000..26c71ea53 Binary files /dev/null and b/public/terrain/19/858583/354013.terrain differ diff --git a/public/terrain/19/858583/354014.terrain b/public/terrain/19/858583/354014.terrain new file mode 100644 index 000000000..d9ee3b127 Binary files /dev/null and b/public/terrain/19/858583/354014.terrain differ diff --git a/public/terrain/19/858583/354015.terrain b/public/terrain/19/858583/354015.terrain new file mode 100644 index 000000000..d3ba07e02 Binary files /dev/null and b/public/terrain/19/858583/354015.terrain differ diff --git a/public/terrain/19/858583/354016.terrain b/public/terrain/19/858583/354016.terrain new file mode 100644 index 000000000..7907e8e54 Binary files /dev/null and b/public/terrain/19/858583/354016.terrain differ diff --git a/public/terrain/19/858583/354017.terrain b/public/terrain/19/858583/354017.terrain new file mode 100644 index 000000000..7b724d652 Binary files /dev/null and b/public/terrain/19/858583/354017.terrain differ diff --git a/public/terrain/19/858583/354018.terrain b/public/terrain/19/858583/354018.terrain new file mode 100644 index 000000000..e1b1b9347 Binary files /dev/null and b/public/terrain/19/858583/354018.terrain differ diff --git a/public/terrain/19/858583/354019.terrain b/public/terrain/19/858583/354019.terrain new file mode 100644 index 000000000..d44192ba5 Binary files /dev/null and b/public/terrain/19/858583/354019.terrain differ diff --git a/public/terrain/19/858583/354020.terrain b/public/terrain/19/858583/354020.terrain new file mode 100644 index 000000000..7e9621abe Binary files /dev/null and b/public/terrain/19/858583/354020.terrain differ diff --git a/public/terrain/19/858583/354021.terrain b/public/terrain/19/858583/354021.terrain new file mode 100644 index 000000000..163d19364 Binary files /dev/null and b/public/terrain/19/858583/354021.terrain differ diff --git a/public/terrain/19/858583/354022.terrain b/public/terrain/19/858583/354022.terrain new file mode 100644 index 000000000..7dc25fefb Binary files /dev/null and b/public/terrain/19/858583/354022.terrain differ diff --git a/public/terrain/19/858583/354023.terrain b/public/terrain/19/858583/354023.terrain new file mode 100644 index 000000000..ebc787b90 Binary files /dev/null and b/public/terrain/19/858583/354023.terrain differ diff --git a/public/terrain/19/858583/354024.terrain b/public/terrain/19/858583/354024.terrain new file mode 100644 index 000000000..aa52fa77c Binary files /dev/null and b/public/terrain/19/858583/354024.terrain differ diff --git a/public/terrain/19/858583/354025.terrain b/public/terrain/19/858583/354025.terrain new file mode 100644 index 000000000..e8e6714af Binary files /dev/null and b/public/terrain/19/858583/354025.terrain differ diff --git a/public/terrain/19/858583/354026.terrain b/public/terrain/19/858583/354026.terrain new file mode 100644 index 000000000..b7c000e38 Binary files /dev/null and b/public/terrain/19/858583/354026.terrain differ diff --git a/public/terrain/19/858583/354027.terrain b/public/terrain/19/858583/354027.terrain new file mode 100644 index 000000000..eeaf6c094 Binary files /dev/null and b/public/terrain/19/858583/354027.terrain differ diff --git a/public/terrain/19/858583/354028.terrain b/public/terrain/19/858583/354028.terrain new file mode 100644 index 000000000..27c5766a6 Binary files /dev/null and b/public/terrain/19/858583/354028.terrain differ diff --git a/public/terrain/19/858583/354029.terrain b/public/terrain/19/858583/354029.terrain new file mode 100644 index 000000000..5ed257bd1 Binary files /dev/null and b/public/terrain/19/858583/354029.terrain differ diff --git a/public/terrain/19/858583/354030.terrain b/public/terrain/19/858583/354030.terrain new file mode 100644 index 000000000..92d43341d Binary files /dev/null and b/public/terrain/19/858583/354030.terrain differ diff --git a/public/terrain/19/858583/354031.terrain b/public/terrain/19/858583/354031.terrain new file mode 100644 index 000000000..cced96dd1 Binary files /dev/null and b/public/terrain/19/858583/354031.terrain differ diff --git a/public/terrain/19/858583/354032.terrain b/public/terrain/19/858583/354032.terrain new file mode 100644 index 000000000..074108b7a Binary files /dev/null and b/public/terrain/19/858583/354032.terrain differ diff --git a/public/terrain/19/858583/354033.terrain b/public/terrain/19/858583/354033.terrain new file mode 100644 index 000000000..10a9bdaeb Binary files /dev/null and b/public/terrain/19/858583/354033.terrain differ diff --git a/public/terrain/19/858583/354034.terrain b/public/terrain/19/858583/354034.terrain new file mode 100644 index 000000000..487417408 Binary files /dev/null and b/public/terrain/19/858583/354034.terrain differ diff --git a/public/terrain/19/858583/354035.terrain b/public/terrain/19/858583/354035.terrain new file mode 100644 index 000000000..c598041d1 Binary files /dev/null and b/public/terrain/19/858583/354035.terrain differ diff --git a/public/terrain/19/858583/354036.terrain b/public/terrain/19/858583/354036.terrain new file mode 100644 index 000000000..48981d86d Binary files /dev/null and b/public/terrain/19/858583/354036.terrain differ diff --git a/public/terrain/19/858583/354037.terrain b/public/terrain/19/858583/354037.terrain new file mode 100644 index 000000000..d52746c5e Binary files /dev/null and b/public/terrain/19/858583/354037.terrain differ diff --git a/public/terrain/19/858583/354038.terrain b/public/terrain/19/858583/354038.terrain new file mode 100644 index 000000000..214476dee Binary files /dev/null and b/public/terrain/19/858583/354038.terrain differ diff --git a/public/terrain/19/858583/354039.terrain b/public/terrain/19/858583/354039.terrain new file mode 100644 index 000000000..078321103 Binary files /dev/null and b/public/terrain/19/858583/354039.terrain differ diff --git a/public/terrain/19/858583/354040.terrain b/public/terrain/19/858583/354040.terrain new file mode 100644 index 000000000..001acab48 Binary files /dev/null and b/public/terrain/19/858583/354040.terrain differ diff --git a/public/terrain/19/858583/354041.terrain b/public/terrain/19/858583/354041.terrain new file mode 100644 index 000000000..d18568836 Binary files /dev/null and b/public/terrain/19/858583/354041.terrain differ diff --git a/public/terrain/19/858583/354042.terrain b/public/terrain/19/858583/354042.terrain new file mode 100644 index 000000000..fb521879f Binary files /dev/null and b/public/terrain/19/858583/354042.terrain differ diff --git a/public/terrain/19/858583/354043.terrain b/public/terrain/19/858583/354043.terrain new file mode 100644 index 000000000..1291b3aa6 Binary files /dev/null and b/public/terrain/19/858583/354043.terrain differ diff --git a/public/terrain/19/858583/354044.terrain b/public/terrain/19/858583/354044.terrain new file mode 100644 index 000000000..f68329a62 Binary files /dev/null and b/public/terrain/19/858583/354044.terrain differ diff --git a/public/terrain/19/858583/354045.terrain b/public/terrain/19/858583/354045.terrain new file mode 100644 index 000000000..ecbe0d085 Binary files /dev/null and b/public/terrain/19/858583/354045.terrain differ diff --git a/public/terrain/19/858583/354046.terrain b/public/terrain/19/858583/354046.terrain new file mode 100644 index 000000000..1d474f41e Binary files /dev/null and b/public/terrain/19/858583/354046.terrain differ diff --git a/public/terrain/19/858583/354047.terrain b/public/terrain/19/858583/354047.terrain new file mode 100644 index 000000000..9968bb4a1 Binary files /dev/null and b/public/terrain/19/858583/354047.terrain differ diff --git a/public/terrain/19/858583/354048.terrain b/public/terrain/19/858583/354048.terrain new file mode 100644 index 000000000..113707a35 Binary files /dev/null and b/public/terrain/19/858583/354048.terrain differ diff --git a/public/terrain/19/858583/354049.terrain b/public/terrain/19/858583/354049.terrain new file mode 100644 index 000000000..280e7a6fe Binary files /dev/null and b/public/terrain/19/858583/354049.terrain differ diff --git a/public/terrain/19/858583/354050.terrain b/public/terrain/19/858583/354050.terrain new file mode 100644 index 000000000..c1a26a381 Binary files /dev/null and b/public/terrain/19/858583/354050.terrain differ diff --git a/public/terrain/19/858583/354051.terrain b/public/terrain/19/858583/354051.terrain new file mode 100644 index 000000000..623fc5fb0 Binary files /dev/null and b/public/terrain/19/858583/354051.terrain differ diff --git a/public/terrain/19/858583/354052.terrain b/public/terrain/19/858583/354052.terrain new file mode 100644 index 000000000..b4ab1309e Binary files /dev/null and b/public/terrain/19/858583/354052.terrain differ diff --git a/public/terrain/19/858583/354053.terrain b/public/terrain/19/858583/354053.terrain new file mode 100644 index 000000000..da5e36735 Binary files /dev/null and b/public/terrain/19/858583/354053.terrain differ diff --git a/public/terrain/19/858583/354054.terrain b/public/terrain/19/858583/354054.terrain new file mode 100644 index 000000000..3e413f1bc Binary files /dev/null and b/public/terrain/19/858583/354054.terrain differ diff --git a/public/terrain/19/858583/354055.terrain b/public/terrain/19/858583/354055.terrain new file mode 100644 index 000000000..38f44d787 Binary files /dev/null and b/public/terrain/19/858583/354055.terrain differ diff --git a/public/terrain/19/858583/354056.terrain b/public/terrain/19/858583/354056.terrain new file mode 100644 index 000000000..ce3ae3cad Binary files /dev/null and b/public/terrain/19/858583/354056.terrain differ diff --git a/public/terrain/19/858583/354057.terrain b/public/terrain/19/858583/354057.terrain new file mode 100644 index 000000000..a99669016 Binary files /dev/null and b/public/terrain/19/858583/354057.terrain differ diff --git a/public/terrain/19/858583/354058.terrain b/public/terrain/19/858583/354058.terrain new file mode 100644 index 000000000..dae50360c Binary files /dev/null and b/public/terrain/19/858583/354058.terrain differ diff --git a/public/terrain/19/858583/354059.terrain b/public/terrain/19/858583/354059.terrain new file mode 100644 index 000000000..4946ffb17 Binary files /dev/null and b/public/terrain/19/858583/354059.terrain differ diff --git a/public/terrain/19/858584/353743.terrain b/public/terrain/19/858584/353743.terrain new file mode 100644 index 000000000..f3114a96b Binary files /dev/null and b/public/terrain/19/858584/353743.terrain differ diff --git a/public/terrain/19/858584/353744.terrain b/public/terrain/19/858584/353744.terrain new file mode 100644 index 000000000..c405acd2e Binary files /dev/null and b/public/terrain/19/858584/353744.terrain differ diff --git a/public/terrain/19/858584/353745.terrain b/public/terrain/19/858584/353745.terrain new file mode 100644 index 000000000..883a98439 Binary files /dev/null and b/public/terrain/19/858584/353745.terrain differ diff --git a/public/terrain/19/858584/353746.terrain b/public/terrain/19/858584/353746.terrain new file mode 100644 index 000000000..531eb8eb8 Binary files /dev/null and b/public/terrain/19/858584/353746.terrain differ diff --git a/public/terrain/19/858584/353747.terrain b/public/terrain/19/858584/353747.terrain new file mode 100644 index 000000000..8e33fd0b0 Binary files /dev/null and b/public/terrain/19/858584/353747.terrain differ diff --git a/public/terrain/19/858584/353748.terrain b/public/terrain/19/858584/353748.terrain new file mode 100644 index 000000000..074bd85bc Binary files /dev/null and b/public/terrain/19/858584/353748.terrain differ diff --git a/public/terrain/19/858584/353749.terrain b/public/terrain/19/858584/353749.terrain new file mode 100644 index 000000000..d6251765f Binary files /dev/null and b/public/terrain/19/858584/353749.terrain differ diff --git a/public/terrain/19/858584/353750.terrain b/public/terrain/19/858584/353750.terrain new file mode 100644 index 000000000..19e0b5d37 Binary files /dev/null and b/public/terrain/19/858584/353750.terrain differ diff --git a/public/terrain/19/858584/353751.terrain b/public/terrain/19/858584/353751.terrain new file mode 100644 index 000000000..0074fff1d Binary files /dev/null and b/public/terrain/19/858584/353751.terrain differ diff --git a/public/terrain/19/858584/353752.terrain b/public/terrain/19/858584/353752.terrain new file mode 100644 index 000000000..ea325c9a3 Binary files /dev/null and b/public/terrain/19/858584/353752.terrain differ diff --git a/public/terrain/19/858584/353753.terrain b/public/terrain/19/858584/353753.terrain new file mode 100644 index 000000000..d9fa8cbef Binary files /dev/null and b/public/terrain/19/858584/353753.terrain differ diff --git a/public/terrain/19/858584/353754.terrain b/public/terrain/19/858584/353754.terrain new file mode 100644 index 000000000..9700ffda6 Binary files /dev/null and b/public/terrain/19/858584/353754.terrain differ diff --git a/public/terrain/19/858584/353755.terrain b/public/terrain/19/858584/353755.terrain new file mode 100644 index 000000000..8beaf6f20 Binary files /dev/null and b/public/terrain/19/858584/353755.terrain differ diff --git a/public/terrain/19/858584/353756.terrain b/public/terrain/19/858584/353756.terrain new file mode 100644 index 000000000..adbf9156b Binary files /dev/null and b/public/terrain/19/858584/353756.terrain differ diff --git a/public/terrain/19/858584/353757.terrain b/public/terrain/19/858584/353757.terrain new file mode 100644 index 000000000..8d98de2d7 Binary files /dev/null and b/public/terrain/19/858584/353757.terrain differ diff --git a/public/terrain/19/858584/353758.terrain b/public/terrain/19/858584/353758.terrain new file mode 100644 index 000000000..8bb4398b9 Binary files /dev/null and b/public/terrain/19/858584/353758.terrain differ diff --git a/public/terrain/19/858584/353759.terrain b/public/terrain/19/858584/353759.terrain new file mode 100644 index 000000000..83a2b2e45 Binary files /dev/null and b/public/terrain/19/858584/353759.terrain differ diff --git a/public/terrain/19/858584/353760.terrain b/public/terrain/19/858584/353760.terrain new file mode 100644 index 000000000..68f00ef0f Binary files /dev/null and b/public/terrain/19/858584/353760.terrain differ diff --git a/public/terrain/19/858584/353761.terrain b/public/terrain/19/858584/353761.terrain new file mode 100644 index 000000000..0d51afa60 Binary files /dev/null and b/public/terrain/19/858584/353761.terrain differ diff --git a/public/terrain/19/858584/353762.terrain b/public/terrain/19/858584/353762.terrain new file mode 100644 index 000000000..237aeb30d Binary files /dev/null and b/public/terrain/19/858584/353762.terrain differ diff --git a/public/terrain/19/858584/353763.terrain b/public/terrain/19/858584/353763.terrain new file mode 100644 index 000000000..385c2e3ef Binary files /dev/null and b/public/terrain/19/858584/353763.terrain differ diff --git a/public/terrain/19/858584/353764.terrain b/public/terrain/19/858584/353764.terrain new file mode 100644 index 000000000..0e5ef8cf7 Binary files /dev/null and b/public/terrain/19/858584/353764.terrain differ diff --git a/public/terrain/19/858584/353765.terrain b/public/terrain/19/858584/353765.terrain new file mode 100644 index 000000000..cfafb96e8 Binary files /dev/null and b/public/terrain/19/858584/353765.terrain differ diff --git a/public/terrain/19/858584/353766.terrain b/public/terrain/19/858584/353766.terrain new file mode 100644 index 000000000..981de34f2 Binary files /dev/null and b/public/terrain/19/858584/353766.terrain differ diff --git a/public/terrain/19/858584/353767.terrain b/public/terrain/19/858584/353767.terrain new file mode 100644 index 000000000..da17272d8 Binary files /dev/null and b/public/terrain/19/858584/353767.terrain differ diff --git a/public/terrain/19/858584/353768.terrain b/public/terrain/19/858584/353768.terrain new file mode 100644 index 000000000..dfdd415fd Binary files /dev/null and b/public/terrain/19/858584/353768.terrain differ diff --git a/public/terrain/19/858584/353769.terrain b/public/terrain/19/858584/353769.terrain new file mode 100644 index 000000000..fc4320ffd Binary files /dev/null and b/public/terrain/19/858584/353769.terrain differ diff --git a/public/terrain/19/858584/353770.terrain b/public/terrain/19/858584/353770.terrain new file mode 100644 index 000000000..2e57188f6 Binary files /dev/null and b/public/terrain/19/858584/353770.terrain differ diff --git a/public/terrain/19/858584/353771.terrain b/public/terrain/19/858584/353771.terrain new file mode 100644 index 000000000..69d0cb8af Binary files /dev/null and b/public/terrain/19/858584/353771.terrain differ diff --git a/public/terrain/19/858584/353772.terrain b/public/terrain/19/858584/353772.terrain new file mode 100644 index 000000000..19ec84e40 Binary files /dev/null and b/public/terrain/19/858584/353772.terrain differ diff --git a/public/terrain/19/858584/353773.terrain b/public/terrain/19/858584/353773.terrain new file mode 100644 index 000000000..ad35b6161 Binary files /dev/null and b/public/terrain/19/858584/353773.terrain differ diff --git a/public/terrain/19/858584/353774.terrain b/public/terrain/19/858584/353774.terrain new file mode 100644 index 000000000..e74410b45 Binary files /dev/null and b/public/terrain/19/858584/353774.terrain differ diff --git a/public/terrain/19/858584/353775.terrain b/public/terrain/19/858584/353775.terrain new file mode 100644 index 000000000..a2910efae Binary files /dev/null and b/public/terrain/19/858584/353775.terrain differ diff --git a/public/terrain/19/858584/353776.terrain b/public/terrain/19/858584/353776.terrain new file mode 100644 index 000000000..144b76715 Binary files /dev/null and b/public/terrain/19/858584/353776.terrain differ diff --git a/public/terrain/19/858584/353777.terrain b/public/terrain/19/858584/353777.terrain new file mode 100644 index 000000000..b4f4d56b1 Binary files /dev/null and b/public/terrain/19/858584/353777.terrain differ diff --git a/public/terrain/19/858584/353778.terrain b/public/terrain/19/858584/353778.terrain new file mode 100644 index 000000000..4dbc2fb23 Binary files /dev/null and b/public/terrain/19/858584/353778.terrain differ diff --git a/public/terrain/19/858584/353779.terrain b/public/terrain/19/858584/353779.terrain new file mode 100644 index 000000000..6d92c102b Binary files /dev/null and b/public/terrain/19/858584/353779.terrain differ diff --git a/public/terrain/19/858584/353780.terrain b/public/terrain/19/858584/353780.terrain new file mode 100644 index 000000000..64829b3c8 Binary files /dev/null and b/public/terrain/19/858584/353780.terrain differ diff --git a/public/terrain/19/858584/353781.terrain b/public/terrain/19/858584/353781.terrain new file mode 100644 index 000000000..e0d4a988c Binary files /dev/null and b/public/terrain/19/858584/353781.terrain differ diff --git a/public/terrain/19/858584/353782.terrain b/public/terrain/19/858584/353782.terrain new file mode 100644 index 000000000..5f27f6208 Binary files /dev/null and b/public/terrain/19/858584/353782.terrain differ diff --git a/public/terrain/19/858584/353783.terrain b/public/terrain/19/858584/353783.terrain new file mode 100644 index 000000000..b3810cc80 Binary files /dev/null and b/public/terrain/19/858584/353783.terrain differ diff --git a/public/terrain/19/858584/353784.terrain b/public/terrain/19/858584/353784.terrain new file mode 100644 index 000000000..6ec9298a0 Binary files /dev/null and b/public/terrain/19/858584/353784.terrain differ diff --git a/public/terrain/19/858584/353785.terrain b/public/terrain/19/858584/353785.terrain new file mode 100644 index 000000000..ca43d6784 Binary files /dev/null and b/public/terrain/19/858584/353785.terrain differ diff --git a/public/terrain/19/858584/353786.terrain b/public/terrain/19/858584/353786.terrain new file mode 100644 index 000000000..4e293b756 Binary files /dev/null and b/public/terrain/19/858584/353786.terrain differ diff --git a/public/terrain/19/858584/353787.terrain b/public/terrain/19/858584/353787.terrain new file mode 100644 index 000000000..d15b66c59 Binary files /dev/null and b/public/terrain/19/858584/353787.terrain differ diff --git a/public/terrain/19/858584/353788.terrain b/public/terrain/19/858584/353788.terrain new file mode 100644 index 000000000..3d613af4e Binary files /dev/null and b/public/terrain/19/858584/353788.terrain differ diff --git a/public/terrain/19/858584/353789.terrain b/public/terrain/19/858584/353789.terrain new file mode 100644 index 000000000..4b2dcd8cc Binary files /dev/null and b/public/terrain/19/858584/353789.terrain differ diff --git a/public/terrain/19/858584/353790.terrain b/public/terrain/19/858584/353790.terrain new file mode 100644 index 000000000..1c14bcdf1 Binary files /dev/null and b/public/terrain/19/858584/353790.terrain differ diff --git a/public/terrain/19/858584/353791.terrain b/public/terrain/19/858584/353791.terrain new file mode 100644 index 000000000..a6a51a822 Binary files /dev/null and b/public/terrain/19/858584/353791.terrain differ diff --git a/public/terrain/19/858584/353792.terrain b/public/terrain/19/858584/353792.terrain new file mode 100644 index 000000000..46dba90b6 Binary files /dev/null and b/public/terrain/19/858584/353792.terrain differ diff --git a/public/terrain/19/858584/353793.terrain b/public/terrain/19/858584/353793.terrain new file mode 100644 index 000000000..a117d95d9 Binary files /dev/null and b/public/terrain/19/858584/353793.terrain differ diff --git a/public/terrain/19/858584/353794.terrain b/public/terrain/19/858584/353794.terrain new file mode 100644 index 000000000..f3bbce4e7 Binary files /dev/null and b/public/terrain/19/858584/353794.terrain differ diff --git a/public/terrain/19/858584/353795.terrain b/public/terrain/19/858584/353795.terrain new file mode 100644 index 000000000..6f37e4ace Binary files /dev/null and b/public/terrain/19/858584/353795.terrain differ diff --git a/public/terrain/19/858584/353796.terrain b/public/terrain/19/858584/353796.terrain new file mode 100644 index 000000000..1315b0e01 Binary files /dev/null and b/public/terrain/19/858584/353796.terrain differ diff --git a/public/terrain/19/858584/353797.terrain b/public/terrain/19/858584/353797.terrain new file mode 100644 index 000000000..888ef6913 Binary files /dev/null and b/public/terrain/19/858584/353797.terrain differ diff --git a/public/terrain/19/858584/353798.terrain b/public/terrain/19/858584/353798.terrain new file mode 100644 index 000000000..e958dccea Binary files /dev/null and b/public/terrain/19/858584/353798.terrain differ diff --git a/public/terrain/19/858584/353799.terrain b/public/terrain/19/858584/353799.terrain new file mode 100644 index 000000000..7fbb22b0b Binary files /dev/null and b/public/terrain/19/858584/353799.terrain differ diff --git a/public/terrain/19/858584/353800.terrain b/public/terrain/19/858584/353800.terrain new file mode 100644 index 000000000..168df9816 Binary files /dev/null and b/public/terrain/19/858584/353800.terrain differ diff --git a/public/terrain/19/858584/353801.terrain b/public/terrain/19/858584/353801.terrain new file mode 100644 index 000000000..40985b8e3 Binary files /dev/null and b/public/terrain/19/858584/353801.terrain differ diff --git a/public/terrain/19/858584/353802.terrain b/public/terrain/19/858584/353802.terrain new file mode 100644 index 000000000..ae34cc2af Binary files /dev/null and b/public/terrain/19/858584/353802.terrain differ diff --git a/public/terrain/19/858584/353803.terrain b/public/terrain/19/858584/353803.terrain new file mode 100644 index 000000000..bc0284865 Binary files /dev/null and b/public/terrain/19/858584/353803.terrain differ diff --git a/public/terrain/19/858584/353804.terrain b/public/terrain/19/858584/353804.terrain new file mode 100644 index 000000000..5bcd53d84 Binary files /dev/null and b/public/terrain/19/858584/353804.terrain differ diff --git a/public/terrain/19/858584/353805.terrain b/public/terrain/19/858584/353805.terrain new file mode 100644 index 000000000..e953aefb4 Binary files /dev/null and b/public/terrain/19/858584/353805.terrain differ diff --git a/public/terrain/19/858584/353806.terrain b/public/terrain/19/858584/353806.terrain new file mode 100644 index 000000000..7355454af Binary files /dev/null and b/public/terrain/19/858584/353806.terrain differ diff --git a/public/terrain/19/858584/353807.terrain b/public/terrain/19/858584/353807.terrain new file mode 100644 index 000000000..e586edbb7 Binary files /dev/null and b/public/terrain/19/858584/353807.terrain differ diff --git a/public/terrain/19/858584/353808.terrain b/public/terrain/19/858584/353808.terrain new file mode 100644 index 000000000..759484a73 Binary files /dev/null and b/public/terrain/19/858584/353808.terrain differ diff --git a/public/terrain/19/858584/353809.terrain b/public/terrain/19/858584/353809.terrain new file mode 100644 index 000000000..101ebbf09 Binary files /dev/null and b/public/terrain/19/858584/353809.terrain differ diff --git a/public/terrain/19/858584/353810.terrain b/public/terrain/19/858584/353810.terrain new file mode 100644 index 000000000..8c175bc72 Binary files /dev/null and b/public/terrain/19/858584/353810.terrain differ diff --git a/public/terrain/19/858584/353811.terrain b/public/terrain/19/858584/353811.terrain new file mode 100644 index 000000000..ebf4d1e46 Binary files /dev/null and b/public/terrain/19/858584/353811.terrain differ diff --git a/public/terrain/19/858584/353812.terrain b/public/terrain/19/858584/353812.terrain new file mode 100644 index 000000000..51ec748c0 Binary files /dev/null and b/public/terrain/19/858584/353812.terrain differ diff --git a/public/terrain/19/858584/353813.terrain b/public/terrain/19/858584/353813.terrain new file mode 100644 index 000000000..b320509f7 Binary files /dev/null and b/public/terrain/19/858584/353813.terrain differ diff --git a/public/terrain/19/858584/353814.terrain b/public/terrain/19/858584/353814.terrain new file mode 100644 index 000000000..911b8f5bb Binary files /dev/null and b/public/terrain/19/858584/353814.terrain differ diff --git a/public/terrain/19/858584/353815.terrain b/public/terrain/19/858584/353815.terrain new file mode 100644 index 000000000..fa7ba8e48 Binary files /dev/null and b/public/terrain/19/858584/353815.terrain differ diff --git a/public/terrain/19/858584/353816.terrain b/public/terrain/19/858584/353816.terrain new file mode 100644 index 000000000..62159fe93 Binary files /dev/null and b/public/terrain/19/858584/353816.terrain differ diff --git a/public/terrain/19/858584/353817.terrain b/public/terrain/19/858584/353817.terrain new file mode 100644 index 000000000..229dc13f0 Binary files /dev/null and b/public/terrain/19/858584/353817.terrain differ diff --git a/public/terrain/19/858584/353818.terrain b/public/terrain/19/858584/353818.terrain new file mode 100644 index 000000000..082dafdae Binary files /dev/null and b/public/terrain/19/858584/353818.terrain differ diff --git a/public/terrain/19/858584/353819.terrain b/public/terrain/19/858584/353819.terrain new file mode 100644 index 000000000..84826b808 Binary files /dev/null and b/public/terrain/19/858584/353819.terrain differ diff --git a/public/terrain/19/858584/353820.terrain b/public/terrain/19/858584/353820.terrain new file mode 100644 index 000000000..fa83843bf Binary files /dev/null and b/public/terrain/19/858584/353820.terrain differ diff --git a/public/terrain/19/858584/353821.terrain b/public/terrain/19/858584/353821.terrain new file mode 100644 index 000000000..d011e49ee Binary files /dev/null and b/public/terrain/19/858584/353821.terrain differ diff --git a/public/terrain/19/858584/353822.terrain b/public/terrain/19/858584/353822.terrain new file mode 100644 index 000000000..bda9ad0c9 Binary files /dev/null and b/public/terrain/19/858584/353822.terrain differ diff --git a/public/terrain/19/858584/353823.terrain b/public/terrain/19/858584/353823.terrain new file mode 100644 index 000000000..3e24294b4 Binary files /dev/null and b/public/terrain/19/858584/353823.terrain differ diff --git a/public/terrain/19/858584/353824.terrain b/public/terrain/19/858584/353824.terrain new file mode 100644 index 000000000..a4fe468ef Binary files /dev/null and b/public/terrain/19/858584/353824.terrain differ diff --git a/public/terrain/19/858584/353825.terrain b/public/terrain/19/858584/353825.terrain new file mode 100644 index 000000000..3d5ff9e1b Binary files /dev/null and b/public/terrain/19/858584/353825.terrain differ diff --git a/public/terrain/19/858584/353826.terrain b/public/terrain/19/858584/353826.terrain new file mode 100644 index 000000000..e88ec5400 Binary files /dev/null and b/public/terrain/19/858584/353826.terrain differ diff --git a/public/terrain/19/858584/353827.terrain b/public/terrain/19/858584/353827.terrain new file mode 100644 index 000000000..f9498b2c5 Binary files /dev/null and b/public/terrain/19/858584/353827.terrain differ diff --git a/public/terrain/19/858584/353828.terrain b/public/terrain/19/858584/353828.terrain new file mode 100644 index 000000000..e693b201a Binary files /dev/null and b/public/terrain/19/858584/353828.terrain differ diff --git a/public/terrain/19/858584/353829.terrain b/public/terrain/19/858584/353829.terrain new file mode 100644 index 000000000..d6be93d1a Binary files /dev/null and b/public/terrain/19/858584/353829.terrain differ diff --git a/public/terrain/19/858584/353830.terrain b/public/terrain/19/858584/353830.terrain new file mode 100644 index 000000000..699fb9820 Binary files /dev/null and b/public/terrain/19/858584/353830.terrain differ diff --git a/public/terrain/19/858584/353831.terrain b/public/terrain/19/858584/353831.terrain new file mode 100644 index 000000000..b578e3e92 Binary files /dev/null and b/public/terrain/19/858584/353831.terrain differ diff --git a/public/terrain/19/858584/353832.terrain b/public/terrain/19/858584/353832.terrain new file mode 100644 index 000000000..a11a5ebef Binary files /dev/null and b/public/terrain/19/858584/353832.terrain differ diff --git a/public/terrain/19/858584/353833.terrain b/public/terrain/19/858584/353833.terrain new file mode 100644 index 000000000..23bc06512 Binary files /dev/null and b/public/terrain/19/858584/353833.terrain differ diff --git a/public/terrain/19/858584/353834.terrain b/public/terrain/19/858584/353834.terrain new file mode 100644 index 000000000..505db8b6d Binary files /dev/null and b/public/terrain/19/858584/353834.terrain differ diff --git a/public/terrain/19/858584/353835.terrain b/public/terrain/19/858584/353835.terrain new file mode 100644 index 000000000..8c0bc98ad Binary files /dev/null and b/public/terrain/19/858584/353835.terrain differ diff --git a/public/terrain/19/858584/353836.terrain b/public/terrain/19/858584/353836.terrain new file mode 100644 index 000000000..efa6b6026 Binary files /dev/null and b/public/terrain/19/858584/353836.terrain differ diff --git a/public/terrain/19/858584/353837.terrain b/public/terrain/19/858584/353837.terrain new file mode 100644 index 000000000..2c2d5c835 Binary files /dev/null and b/public/terrain/19/858584/353837.terrain differ diff --git a/public/terrain/19/858584/353838.terrain b/public/terrain/19/858584/353838.terrain new file mode 100644 index 000000000..6144bdc5c Binary files /dev/null and b/public/terrain/19/858584/353838.terrain differ diff --git a/public/terrain/19/858584/353839.terrain b/public/terrain/19/858584/353839.terrain new file mode 100644 index 000000000..6ccc37f2e Binary files /dev/null and b/public/terrain/19/858584/353839.terrain differ diff --git a/public/terrain/19/858584/353840.terrain b/public/terrain/19/858584/353840.terrain new file mode 100644 index 000000000..c5c8c1aca Binary files /dev/null and b/public/terrain/19/858584/353840.terrain differ diff --git a/public/terrain/19/858584/353841.terrain b/public/terrain/19/858584/353841.terrain new file mode 100644 index 000000000..e6e743ddb Binary files /dev/null and b/public/terrain/19/858584/353841.terrain differ diff --git a/public/terrain/19/858584/353842.terrain b/public/terrain/19/858584/353842.terrain new file mode 100644 index 000000000..0f470b794 Binary files /dev/null and b/public/terrain/19/858584/353842.terrain differ diff --git a/public/terrain/19/858584/353843.terrain b/public/terrain/19/858584/353843.terrain new file mode 100644 index 000000000..1ac80129e Binary files /dev/null and b/public/terrain/19/858584/353843.terrain differ diff --git a/public/terrain/19/858584/353844.terrain b/public/terrain/19/858584/353844.terrain new file mode 100644 index 000000000..4b02d11f2 Binary files /dev/null and b/public/terrain/19/858584/353844.terrain differ diff --git a/public/terrain/19/858584/353845.terrain b/public/terrain/19/858584/353845.terrain new file mode 100644 index 000000000..8d9fd6baa Binary files /dev/null and b/public/terrain/19/858584/353845.terrain differ diff --git a/public/terrain/19/858584/353846.terrain b/public/terrain/19/858584/353846.terrain new file mode 100644 index 000000000..4ae0484c0 Binary files /dev/null and b/public/terrain/19/858584/353846.terrain differ diff --git a/public/terrain/19/858584/353847.terrain b/public/terrain/19/858584/353847.terrain new file mode 100644 index 000000000..07fdca4b9 Binary files /dev/null and b/public/terrain/19/858584/353847.terrain differ diff --git a/public/terrain/19/858584/353848.terrain b/public/terrain/19/858584/353848.terrain new file mode 100644 index 000000000..f43ba8539 Binary files /dev/null and b/public/terrain/19/858584/353848.terrain differ diff --git a/public/terrain/19/858584/353849.terrain b/public/terrain/19/858584/353849.terrain new file mode 100644 index 000000000..a8b17efbf Binary files /dev/null and b/public/terrain/19/858584/353849.terrain differ diff --git a/public/terrain/19/858584/353850.terrain b/public/terrain/19/858584/353850.terrain new file mode 100644 index 000000000..25d94dac2 Binary files /dev/null and b/public/terrain/19/858584/353850.terrain differ diff --git a/public/terrain/19/858584/353851.terrain b/public/terrain/19/858584/353851.terrain new file mode 100644 index 000000000..57e445b68 Binary files /dev/null and b/public/terrain/19/858584/353851.terrain differ diff --git a/public/terrain/19/858584/353852.terrain b/public/terrain/19/858584/353852.terrain new file mode 100644 index 000000000..215eb34f1 Binary files /dev/null and b/public/terrain/19/858584/353852.terrain differ diff --git a/public/terrain/19/858584/353853.terrain b/public/terrain/19/858584/353853.terrain new file mode 100644 index 000000000..3eb209c98 Binary files /dev/null and b/public/terrain/19/858584/353853.terrain differ diff --git a/public/terrain/19/858584/353854.terrain b/public/terrain/19/858584/353854.terrain new file mode 100644 index 000000000..1c035c46c Binary files /dev/null and b/public/terrain/19/858584/353854.terrain differ diff --git a/public/terrain/19/858584/353855.terrain b/public/terrain/19/858584/353855.terrain new file mode 100644 index 000000000..bd14e39f1 Binary files /dev/null and b/public/terrain/19/858584/353855.terrain differ diff --git a/public/terrain/19/858584/353856.terrain b/public/terrain/19/858584/353856.terrain new file mode 100644 index 000000000..e14ab98ad Binary files /dev/null and b/public/terrain/19/858584/353856.terrain differ diff --git a/public/terrain/19/858584/353857.terrain b/public/terrain/19/858584/353857.terrain new file mode 100644 index 000000000..638706267 Binary files /dev/null and b/public/terrain/19/858584/353857.terrain differ diff --git a/public/terrain/19/858584/353858.terrain b/public/terrain/19/858584/353858.terrain new file mode 100644 index 000000000..3c71bed29 Binary files /dev/null and b/public/terrain/19/858584/353858.terrain differ diff --git a/public/terrain/19/858584/353859.terrain b/public/terrain/19/858584/353859.terrain new file mode 100644 index 000000000..92364954c Binary files /dev/null and b/public/terrain/19/858584/353859.terrain differ diff --git a/public/terrain/19/858584/353860.terrain b/public/terrain/19/858584/353860.terrain new file mode 100644 index 000000000..0805b358b Binary files /dev/null and b/public/terrain/19/858584/353860.terrain differ diff --git a/public/terrain/19/858584/353861.terrain b/public/terrain/19/858584/353861.terrain new file mode 100644 index 000000000..d27607d49 Binary files /dev/null and b/public/terrain/19/858584/353861.terrain differ diff --git a/public/terrain/19/858584/353862.terrain b/public/terrain/19/858584/353862.terrain new file mode 100644 index 000000000..15d9f0f14 Binary files /dev/null and b/public/terrain/19/858584/353862.terrain differ diff --git a/public/terrain/19/858584/353863.terrain b/public/terrain/19/858584/353863.terrain new file mode 100644 index 000000000..6e051ca5d Binary files /dev/null and b/public/terrain/19/858584/353863.terrain differ diff --git a/public/terrain/19/858584/353864.terrain b/public/terrain/19/858584/353864.terrain new file mode 100644 index 000000000..cba92099d Binary files /dev/null and b/public/terrain/19/858584/353864.terrain differ diff --git a/public/terrain/19/858584/353865.terrain b/public/terrain/19/858584/353865.terrain new file mode 100644 index 000000000..2b4e2cbe9 Binary files /dev/null and b/public/terrain/19/858584/353865.terrain differ diff --git a/public/terrain/19/858584/353866.terrain b/public/terrain/19/858584/353866.terrain new file mode 100644 index 000000000..5be99f864 Binary files /dev/null and b/public/terrain/19/858584/353866.terrain differ diff --git a/public/terrain/19/858584/353867.terrain b/public/terrain/19/858584/353867.terrain new file mode 100644 index 000000000..05d089a3d Binary files /dev/null and b/public/terrain/19/858584/353867.terrain differ diff --git a/public/terrain/19/858584/353868.terrain b/public/terrain/19/858584/353868.terrain new file mode 100644 index 000000000..bb9753a6d Binary files /dev/null and b/public/terrain/19/858584/353868.terrain differ diff --git a/public/terrain/19/858584/353869.terrain b/public/terrain/19/858584/353869.terrain new file mode 100644 index 000000000..389d13336 Binary files /dev/null and b/public/terrain/19/858584/353869.terrain differ diff --git a/public/terrain/19/858584/353870.terrain b/public/terrain/19/858584/353870.terrain new file mode 100644 index 000000000..073c4dc6b Binary files /dev/null and b/public/terrain/19/858584/353870.terrain differ diff --git a/public/terrain/19/858584/353871.terrain b/public/terrain/19/858584/353871.terrain new file mode 100644 index 000000000..b54ba6e29 Binary files /dev/null and b/public/terrain/19/858584/353871.terrain differ diff --git a/public/terrain/19/858584/353872.terrain b/public/terrain/19/858584/353872.terrain new file mode 100644 index 000000000..084b265d7 Binary files /dev/null and b/public/terrain/19/858584/353872.terrain differ diff --git a/public/terrain/19/858584/353873.terrain b/public/terrain/19/858584/353873.terrain new file mode 100644 index 000000000..da9f37ad9 Binary files /dev/null and b/public/terrain/19/858584/353873.terrain differ diff --git a/public/terrain/19/858584/353874.terrain b/public/terrain/19/858584/353874.terrain new file mode 100644 index 000000000..1515da4c9 Binary files /dev/null and b/public/terrain/19/858584/353874.terrain differ diff --git a/public/terrain/19/858584/353875.terrain b/public/terrain/19/858584/353875.terrain new file mode 100644 index 000000000..804f1b4c6 Binary files /dev/null and b/public/terrain/19/858584/353875.terrain differ diff --git a/public/terrain/19/858584/353876.terrain b/public/terrain/19/858584/353876.terrain new file mode 100644 index 000000000..25329e84d Binary files /dev/null and b/public/terrain/19/858584/353876.terrain differ diff --git a/public/terrain/19/858584/353877.terrain b/public/terrain/19/858584/353877.terrain new file mode 100644 index 000000000..d9597ed94 Binary files /dev/null and b/public/terrain/19/858584/353877.terrain differ diff --git a/public/terrain/19/858584/353878.terrain b/public/terrain/19/858584/353878.terrain new file mode 100644 index 000000000..7483e3665 Binary files /dev/null and b/public/terrain/19/858584/353878.terrain differ diff --git a/public/terrain/19/858584/353879.terrain b/public/terrain/19/858584/353879.terrain new file mode 100644 index 000000000..021269a40 Binary files /dev/null and b/public/terrain/19/858584/353879.terrain differ diff --git a/public/terrain/19/858584/353880.terrain b/public/terrain/19/858584/353880.terrain new file mode 100644 index 000000000..1b0a0cdbe Binary files /dev/null and b/public/terrain/19/858584/353880.terrain differ diff --git a/public/terrain/19/858584/353881.terrain b/public/terrain/19/858584/353881.terrain new file mode 100644 index 000000000..d3be5d227 Binary files /dev/null and b/public/terrain/19/858584/353881.terrain differ diff --git a/public/terrain/19/858584/353882.terrain b/public/terrain/19/858584/353882.terrain new file mode 100644 index 000000000..c1dd941e3 Binary files /dev/null and b/public/terrain/19/858584/353882.terrain differ diff --git a/public/terrain/19/858584/353883.terrain b/public/terrain/19/858584/353883.terrain new file mode 100644 index 000000000..b74bc23a2 Binary files /dev/null and b/public/terrain/19/858584/353883.terrain differ diff --git a/public/terrain/19/858584/353884.terrain b/public/terrain/19/858584/353884.terrain new file mode 100644 index 000000000..4f338c389 Binary files /dev/null and b/public/terrain/19/858584/353884.terrain differ diff --git a/public/terrain/19/858584/353885.terrain b/public/terrain/19/858584/353885.terrain new file mode 100644 index 000000000..e753789a4 Binary files /dev/null and b/public/terrain/19/858584/353885.terrain differ diff --git a/public/terrain/19/858584/353886.terrain b/public/terrain/19/858584/353886.terrain new file mode 100644 index 000000000..866763258 Binary files /dev/null and b/public/terrain/19/858584/353886.terrain differ diff --git a/public/terrain/19/858584/353887.terrain b/public/terrain/19/858584/353887.terrain new file mode 100644 index 000000000..49080367d Binary files /dev/null and b/public/terrain/19/858584/353887.terrain differ diff --git a/public/terrain/19/858584/353888.terrain b/public/terrain/19/858584/353888.terrain new file mode 100644 index 000000000..df84cfe5e Binary files /dev/null and b/public/terrain/19/858584/353888.terrain differ diff --git a/public/terrain/19/858584/353889.terrain b/public/terrain/19/858584/353889.terrain new file mode 100644 index 000000000..8d89000d7 Binary files /dev/null and b/public/terrain/19/858584/353889.terrain differ diff --git a/public/terrain/19/858584/353890.terrain b/public/terrain/19/858584/353890.terrain new file mode 100644 index 000000000..d73438276 Binary files /dev/null and b/public/terrain/19/858584/353890.terrain differ diff --git a/public/terrain/19/858584/353891.terrain b/public/terrain/19/858584/353891.terrain new file mode 100644 index 000000000..e28e2bfd4 Binary files /dev/null and b/public/terrain/19/858584/353891.terrain differ diff --git a/public/terrain/19/858584/353892.terrain b/public/terrain/19/858584/353892.terrain new file mode 100644 index 000000000..4493155e7 Binary files /dev/null and b/public/terrain/19/858584/353892.terrain differ diff --git a/public/terrain/19/858584/353893.terrain b/public/terrain/19/858584/353893.terrain new file mode 100644 index 000000000..f54b2b5aa Binary files /dev/null and b/public/terrain/19/858584/353893.terrain differ diff --git a/public/terrain/19/858584/353894.terrain b/public/terrain/19/858584/353894.terrain new file mode 100644 index 000000000..39059ba65 Binary files /dev/null and b/public/terrain/19/858584/353894.terrain differ diff --git a/public/terrain/19/858584/353895.terrain b/public/terrain/19/858584/353895.terrain new file mode 100644 index 000000000..427826566 Binary files /dev/null and b/public/terrain/19/858584/353895.terrain differ diff --git a/public/terrain/19/858584/353896.terrain b/public/terrain/19/858584/353896.terrain new file mode 100644 index 000000000..03a641075 Binary files /dev/null and b/public/terrain/19/858584/353896.terrain differ diff --git a/public/terrain/19/858584/353897.terrain b/public/terrain/19/858584/353897.terrain new file mode 100644 index 000000000..90946b9ee Binary files /dev/null and b/public/terrain/19/858584/353897.terrain differ diff --git a/public/terrain/19/858584/353898.terrain b/public/terrain/19/858584/353898.terrain new file mode 100644 index 000000000..c021f6021 Binary files /dev/null and b/public/terrain/19/858584/353898.terrain differ diff --git a/public/terrain/19/858584/353899.terrain b/public/terrain/19/858584/353899.terrain new file mode 100644 index 000000000..d8b79fd1a Binary files /dev/null and b/public/terrain/19/858584/353899.terrain differ diff --git a/public/terrain/19/858584/353900.terrain b/public/terrain/19/858584/353900.terrain new file mode 100644 index 000000000..d6ae299bf Binary files /dev/null and b/public/terrain/19/858584/353900.terrain differ diff --git a/public/terrain/19/858584/353901.terrain b/public/terrain/19/858584/353901.terrain new file mode 100644 index 000000000..5fa35ead1 Binary files /dev/null and b/public/terrain/19/858584/353901.terrain differ diff --git a/public/terrain/19/858584/353902.terrain b/public/terrain/19/858584/353902.terrain new file mode 100644 index 000000000..9cf116302 Binary files /dev/null and b/public/terrain/19/858584/353902.terrain differ diff --git a/public/terrain/19/858584/353903.terrain b/public/terrain/19/858584/353903.terrain new file mode 100644 index 000000000..94c6cae5b Binary files /dev/null and b/public/terrain/19/858584/353903.terrain differ diff --git a/public/terrain/19/858584/353904.terrain b/public/terrain/19/858584/353904.terrain new file mode 100644 index 000000000..e9a29d339 Binary files /dev/null and b/public/terrain/19/858584/353904.terrain differ diff --git a/public/terrain/19/858584/353905.terrain b/public/terrain/19/858584/353905.terrain new file mode 100644 index 000000000..13d872d1e Binary files /dev/null and b/public/terrain/19/858584/353905.terrain differ diff --git a/public/terrain/19/858584/353906.terrain b/public/terrain/19/858584/353906.terrain new file mode 100644 index 000000000..5328c70a0 Binary files /dev/null and b/public/terrain/19/858584/353906.terrain differ diff --git a/public/terrain/19/858584/353907.terrain b/public/terrain/19/858584/353907.terrain new file mode 100644 index 000000000..a820886e0 Binary files /dev/null and b/public/terrain/19/858584/353907.terrain differ diff --git a/public/terrain/19/858584/353908.terrain b/public/terrain/19/858584/353908.terrain new file mode 100644 index 000000000..94a4e9eed Binary files /dev/null and b/public/terrain/19/858584/353908.terrain differ diff --git a/public/terrain/19/858584/353909.terrain b/public/terrain/19/858584/353909.terrain new file mode 100644 index 000000000..8fbff24c8 Binary files /dev/null and b/public/terrain/19/858584/353909.terrain differ diff --git a/public/terrain/19/858584/353910.terrain b/public/terrain/19/858584/353910.terrain new file mode 100644 index 000000000..35a9b1363 Binary files /dev/null and b/public/terrain/19/858584/353910.terrain differ diff --git a/public/terrain/19/858584/353911.terrain b/public/terrain/19/858584/353911.terrain new file mode 100644 index 000000000..c6d99779b Binary files /dev/null and b/public/terrain/19/858584/353911.terrain differ diff --git a/public/terrain/19/858584/353912.terrain b/public/terrain/19/858584/353912.terrain new file mode 100644 index 000000000..b29b35058 Binary files /dev/null and b/public/terrain/19/858584/353912.terrain differ diff --git a/public/terrain/19/858584/353913.terrain b/public/terrain/19/858584/353913.terrain new file mode 100644 index 000000000..a0f45b9d1 Binary files /dev/null and b/public/terrain/19/858584/353913.terrain differ diff --git a/public/terrain/19/858584/353914.terrain b/public/terrain/19/858584/353914.terrain new file mode 100644 index 000000000..dd1201734 Binary files /dev/null and b/public/terrain/19/858584/353914.terrain differ diff --git a/public/terrain/19/858584/353915.terrain b/public/terrain/19/858584/353915.terrain new file mode 100644 index 000000000..82584f8e1 Binary files /dev/null and b/public/terrain/19/858584/353915.terrain differ diff --git a/public/terrain/19/858584/353916.terrain b/public/terrain/19/858584/353916.terrain new file mode 100644 index 000000000..861b73dab Binary files /dev/null and b/public/terrain/19/858584/353916.terrain differ diff --git a/public/terrain/19/858584/353917.terrain b/public/terrain/19/858584/353917.terrain new file mode 100644 index 000000000..f80a3445d Binary files /dev/null and b/public/terrain/19/858584/353917.terrain differ diff --git a/public/terrain/19/858584/353918.terrain b/public/terrain/19/858584/353918.terrain new file mode 100644 index 000000000..7eb19507b Binary files /dev/null and b/public/terrain/19/858584/353918.terrain differ diff --git a/public/terrain/19/858584/353919.terrain b/public/terrain/19/858584/353919.terrain new file mode 100644 index 000000000..fabe6728a Binary files /dev/null and b/public/terrain/19/858584/353919.terrain differ diff --git a/public/terrain/19/858584/353920.terrain b/public/terrain/19/858584/353920.terrain new file mode 100644 index 000000000..213d2da99 Binary files /dev/null and b/public/terrain/19/858584/353920.terrain differ diff --git a/public/terrain/19/858584/353921.terrain b/public/terrain/19/858584/353921.terrain new file mode 100644 index 000000000..a2dfc49b5 Binary files /dev/null and b/public/terrain/19/858584/353921.terrain differ diff --git a/public/terrain/19/858584/353922.terrain b/public/terrain/19/858584/353922.terrain new file mode 100644 index 000000000..4af4fd127 Binary files /dev/null and b/public/terrain/19/858584/353922.terrain differ diff --git a/public/terrain/19/858584/353923.terrain b/public/terrain/19/858584/353923.terrain new file mode 100644 index 000000000..a8de35e67 Binary files /dev/null and b/public/terrain/19/858584/353923.terrain differ diff --git a/public/terrain/19/858584/353924.terrain b/public/terrain/19/858584/353924.terrain new file mode 100644 index 000000000..52d9eb403 Binary files /dev/null and b/public/terrain/19/858584/353924.terrain differ diff --git a/public/terrain/19/858584/353925.terrain b/public/terrain/19/858584/353925.terrain new file mode 100644 index 000000000..f97e7afc9 Binary files /dev/null and b/public/terrain/19/858584/353925.terrain differ diff --git a/public/terrain/19/858584/353926.terrain b/public/terrain/19/858584/353926.terrain new file mode 100644 index 000000000..56c1736df Binary files /dev/null and b/public/terrain/19/858584/353926.terrain differ diff --git a/public/terrain/19/858584/353927.terrain b/public/terrain/19/858584/353927.terrain new file mode 100644 index 000000000..f55d86ae8 Binary files /dev/null and b/public/terrain/19/858584/353927.terrain differ diff --git a/public/terrain/19/858584/353928.terrain b/public/terrain/19/858584/353928.terrain new file mode 100644 index 000000000..99df181ff Binary files /dev/null and b/public/terrain/19/858584/353928.terrain differ diff --git a/public/terrain/19/858584/353929.terrain b/public/terrain/19/858584/353929.terrain new file mode 100644 index 000000000..bba554aab Binary files /dev/null and b/public/terrain/19/858584/353929.terrain differ diff --git a/public/terrain/19/858584/353930.terrain b/public/terrain/19/858584/353930.terrain new file mode 100644 index 000000000..178d9a0a5 Binary files /dev/null and b/public/terrain/19/858584/353930.terrain differ diff --git a/public/terrain/19/858584/353931.terrain b/public/terrain/19/858584/353931.terrain new file mode 100644 index 000000000..8434666b2 Binary files /dev/null and b/public/terrain/19/858584/353931.terrain differ diff --git a/public/terrain/19/858584/353932.terrain b/public/terrain/19/858584/353932.terrain new file mode 100644 index 000000000..9e06283c6 Binary files /dev/null and b/public/terrain/19/858584/353932.terrain differ diff --git a/public/terrain/19/858584/353933.terrain b/public/terrain/19/858584/353933.terrain new file mode 100644 index 000000000..b96c90422 Binary files /dev/null and b/public/terrain/19/858584/353933.terrain differ diff --git a/public/terrain/19/858584/353934.terrain b/public/terrain/19/858584/353934.terrain new file mode 100644 index 000000000..884e99345 Binary files /dev/null and b/public/terrain/19/858584/353934.terrain differ diff --git a/public/terrain/19/858584/353935.terrain b/public/terrain/19/858584/353935.terrain new file mode 100644 index 000000000..6d9acd39a Binary files /dev/null and b/public/terrain/19/858584/353935.terrain differ diff --git a/public/terrain/19/858584/353936.terrain b/public/terrain/19/858584/353936.terrain new file mode 100644 index 000000000..a9727e09c Binary files /dev/null and b/public/terrain/19/858584/353936.terrain differ diff --git a/public/terrain/19/858584/353937.terrain b/public/terrain/19/858584/353937.terrain new file mode 100644 index 000000000..91572e3e5 Binary files /dev/null and b/public/terrain/19/858584/353937.terrain differ diff --git a/public/terrain/19/858584/353938.terrain b/public/terrain/19/858584/353938.terrain new file mode 100644 index 000000000..a95ea49ef Binary files /dev/null and b/public/terrain/19/858584/353938.terrain differ diff --git a/public/terrain/19/858584/353939.terrain b/public/terrain/19/858584/353939.terrain new file mode 100644 index 000000000..a95007cf7 Binary files /dev/null and b/public/terrain/19/858584/353939.terrain differ diff --git a/public/terrain/19/858584/353940.terrain b/public/terrain/19/858584/353940.terrain new file mode 100644 index 000000000..6640d39bf Binary files /dev/null and b/public/terrain/19/858584/353940.terrain differ diff --git a/public/terrain/19/858584/353941.terrain b/public/terrain/19/858584/353941.terrain new file mode 100644 index 000000000..e465cbe7a Binary files /dev/null and b/public/terrain/19/858584/353941.terrain differ diff --git a/public/terrain/19/858584/353942.terrain b/public/terrain/19/858584/353942.terrain new file mode 100644 index 000000000..01cf701f6 Binary files /dev/null and b/public/terrain/19/858584/353942.terrain differ diff --git a/public/terrain/19/858584/353943.terrain b/public/terrain/19/858584/353943.terrain new file mode 100644 index 000000000..122bb4b28 Binary files /dev/null and b/public/terrain/19/858584/353943.terrain differ diff --git a/public/terrain/19/858584/353944.terrain b/public/terrain/19/858584/353944.terrain new file mode 100644 index 000000000..f298bfd96 Binary files /dev/null and b/public/terrain/19/858584/353944.terrain differ diff --git a/public/terrain/19/858584/353945.terrain b/public/terrain/19/858584/353945.terrain new file mode 100644 index 000000000..eb282762c Binary files /dev/null and b/public/terrain/19/858584/353945.terrain differ diff --git a/public/terrain/19/858584/353946.terrain b/public/terrain/19/858584/353946.terrain new file mode 100644 index 000000000..add035463 Binary files /dev/null and b/public/terrain/19/858584/353946.terrain differ diff --git a/public/terrain/19/858584/353947.terrain b/public/terrain/19/858584/353947.terrain new file mode 100644 index 000000000..ba709d0a7 Binary files /dev/null and b/public/terrain/19/858584/353947.terrain differ diff --git a/public/terrain/19/858584/353948.terrain b/public/terrain/19/858584/353948.terrain new file mode 100644 index 000000000..3f71fb2d0 Binary files /dev/null and b/public/terrain/19/858584/353948.terrain differ diff --git a/public/terrain/19/858584/353949.terrain b/public/terrain/19/858584/353949.terrain new file mode 100644 index 000000000..f80d47217 Binary files /dev/null and b/public/terrain/19/858584/353949.terrain differ diff --git a/public/terrain/19/858584/353950.terrain b/public/terrain/19/858584/353950.terrain new file mode 100644 index 000000000..e0bc56792 Binary files /dev/null and b/public/terrain/19/858584/353950.terrain differ diff --git a/public/terrain/19/858584/353951.terrain b/public/terrain/19/858584/353951.terrain new file mode 100644 index 000000000..c27d30e62 Binary files /dev/null and b/public/terrain/19/858584/353951.terrain differ diff --git a/public/terrain/19/858584/353952.terrain b/public/terrain/19/858584/353952.terrain new file mode 100644 index 000000000..01468fe5e Binary files /dev/null and b/public/terrain/19/858584/353952.terrain differ diff --git a/public/terrain/19/858584/353953.terrain b/public/terrain/19/858584/353953.terrain new file mode 100644 index 000000000..a4a425ebc Binary files /dev/null and b/public/terrain/19/858584/353953.terrain differ diff --git a/public/terrain/19/858584/353954.terrain b/public/terrain/19/858584/353954.terrain new file mode 100644 index 000000000..b983636d2 Binary files /dev/null and b/public/terrain/19/858584/353954.terrain differ diff --git a/public/terrain/19/858584/353955.terrain b/public/terrain/19/858584/353955.terrain new file mode 100644 index 000000000..7f748d2e3 Binary files /dev/null and b/public/terrain/19/858584/353955.terrain differ diff --git a/public/terrain/19/858584/353956.terrain b/public/terrain/19/858584/353956.terrain new file mode 100644 index 000000000..2cd270b41 Binary files /dev/null and b/public/terrain/19/858584/353956.terrain differ diff --git a/public/terrain/19/858584/353957.terrain b/public/terrain/19/858584/353957.terrain new file mode 100644 index 000000000..5601e638b Binary files /dev/null and b/public/terrain/19/858584/353957.terrain differ diff --git a/public/terrain/19/858584/353958.terrain b/public/terrain/19/858584/353958.terrain new file mode 100644 index 000000000..97f94f324 Binary files /dev/null and b/public/terrain/19/858584/353958.terrain differ diff --git a/public/terrain/19/858584/353959.terrain b/public/terrain/19/858584/353959.terrain new file mode 100644 index 000000000..723ac0e81 Binary files /dev/null and b/public/terrain/19/858584/353959.terrain differ diff --git a/public/terrain/19/858584/353960.terrain b/public/terrain/19/858584/353960.terrain new file mode 100644 index 000000000..593c01421 Binary files /dev/null and b/public/terrain/19/858584/353960.terrain differ diff --git a/public/terrain/19/858584/353961.terrain b/public/terrain/19/858584/353961.terrain new file mode 100644 index 000000000..399345738 Binary files /dev/null and b/public/terrain/19/858584/353961.terrain differ diff --git a/public/terrain/19/858584/353962.terrain b/public/terrain/19/858584/353962.terrain new file mode 100644 index 000000000..2752e1224 Binary files /dev/null and b/public/terrain/19/858584/353962.terrain differ diff --git a/public/terrain/19/858584/353963.terrain b/public/terrain/19/858584/353963.terrain new file mode 100644 index 000000000..5f427e2e9 Binary files /dev/null and b/public/terrain/19/858584/353963.terrain differ diff --git a/public/terrain/19/858584/353964.terrain b/public/terrain/19/858584/353964.terrain new file mode 100644 index 000000000..acb2672d4 Binary files /dev/null and b/public/terrain/19/858584/353964.terrain differ diff --git a/public/terrain/19/858584/353965.terrain b/public/terrain/19/858584/353965.terrain new file mode 100644 index 000000000..1ac2f8014 Binary files /dev/null and b/public/terrain/19/858584/353965.terrain differ diff --git a/public/terrain/19/858584/353966.terrain b/public/terrain/19/858584/353966.terrain new file mode 100644 index 000000000..e2f5bf027 Binary files /dev/null and b/public/terrain/19/858584/353966.terrain differ diff --git a/public/terrain/19/858584/353967.terrain b/public/terrain/19/858584/353967.terrain new file mode 100644 index 000000000..b93e5da24 Binary files /dev/null and b/public/terrain/19/858584/353967.terrain differ diff --git a/public/terrain/19/858584/353968.terrain b/public/terrain/19/858584/353968.terrain new file mode 100644 index 000000000..a3cc63214 Binary files /dev/null and b/public/terrain/19/858584/353968.terrain differ diff --git a/public/terrain/19/858584/353969.terrain b/public/terrain/19/858584/353969.terrain new file mode 100644 index 000000000..c2e237b7e Binary files /dev/null and b/public/terrain/19/858584/353969.terrain differ diff --git a/public/terrain/19/858584/353970.terrain b/public/terrain/19/858584/353970.terrain new file mode 100644 index 000000000..71361c296 Binary files /dev/null and b/public/terrain/19/858584/353970.terrain differ diff --git a/public/terrain/19/858584/353971.terrain b/public/terrain/19/858584/353971.terrain new file mode 100644 index 000000000..822e583b7 Binary files /dev/null and b/public/terrain/19/858584/353971.terrain differ diff --git a/public/terrain/19/858584/353972.terrain b/public/terrain/19/858584/353972.terrain new file mode 100644 index 000000000..111c65bb1 Binary files /dev/null and b/public/terrain/19/858584/353972.terrain differ diff --git a/public/terrain/19/858584/353973.terrain b/public/terrain/19/858584/353973.terrain new file mode 100644 index 000000000..7c25abeaf Binary files /dev/null and b/public/terrain/19/858584/353973.terrain differ diff --git a/public/terrain/19/858584/353974.terrain b/public/terrain/19/858584/353974.terrain new file mode 100644 index 000000000..ae0ea9d1d Binary files /dev/null and b/public/terrain/19/858584/353974.terrain differ diff --git a/public/terrain/19/858584/353975.terrain b/public/terrain/19/858584/353975.terrain new file mode 100644 index 000000000..df97049ee Binary files /dev/null and b/public/terrain/19/858584/353975.terrain differ diff --git a/public/terrain/19/858584/353976.terrain b/public/terrain/19/858584/353976.terrain new file mode 100644 index 000000000..d332ffbde Binary files /dev/null and b/public/terrain/19/858584/353976.terrain differ diff --git a/public/terrain/19/858584/353977.terrain b/public/terrain/19/858584/353977.terrain new file mode 100644 index 000000000..d63ee99f8 Binary files /dev/null and b/public/terrain/19/858584/353977.terrain differ diff --git a/public/terrain/19/858584/353978.terrain b/public/terrain/19/858584/353978.terrain new file mode 100644 index 000000000..457f659f7 Binary files /dev/null and b/public/terrain/19/858584/353978.terrain differ diff --git a/public/terrain/19/858584/353979.terrain b/public/terrain/19/858584/353979.terrain new file mode 100644 index 000000000..a1ffea8dc Binary files /dev/null and b/public/terrain/19/858584/353979.terrain differ diff --git a/public/terrain/19/858584/353980.terrain b/public/terrain/19/858584/353980.terrain new file mode 100644 index 000000000..832fcb3c1 Binary files /dev/null and b/public/terrain/19/858584/353980.terrain differ diff --git a/public/terrain/19/858584/353981.terrain b/public/terrain/19/858584/353981.terrain new file mode 100644 index 000000000..5e0355b42 Binary files /dev/null and b/public/terrain/19/858584/353981.terrain differ diff --git a/public/terrain/19/858584/353982.terrain b/public/terrain/19/858584/353982.terrain new file mode 100644 index 000000000..a4c563216 Binary files /dev/null and b/public/terrain/19/858584/353982.terrain differ diff --git a/public/terrain/19/858584/353983.terrain b/public/terrain/19/858584/353983.terrain new file mode 100644 index 000000000..588dd19d6 Binary files /dev/null and b/public/terrain/19/858584/353983.terrain differ diff --git a/public/terrain/19/858584/353984.terrain b/public/terrain/19/858584/353984.terrain new file mode 100644 index 000000000..11f746298 Binary files /dev/null and b/public/terrain/19/858584/353984.terrain differ diff --git a/public/terrain/19/858584/353985.terrain b/public/terrain/19/858584/353985.terrain new file mode 100644 index 000000000..52911a8bb Binary files /dev/null and b/public/terrain/19/858584/353985.terrain differ diff --git a/public/terrain/19/858584/353986.terrain b/public/terrain/19/858584/353986.terrain new file mode 100644 index 000000000..7fc740223 Binary files /dev/null and b/public/terrain/19/858584/353986.terrain differ diff --git a/public/terrain/19/858584/353987.terrain b/public/terrain/19/858584/353987.terrain new file mode 100644 index 000000000..0748a801c Binary files /dev/null and b/public/terrain/19/858584/353987.terrain differ diff --git a/public/terrain/19/858584/353988.terrain b/public/terrain/19/858584/353988.terrain new file mode 100644 index 000000000..1c78f2db6 Binary files /dev/null and b/public/terrain/19/858584/353988.terrain differ diff --git a/public/terrain/19/858584/353989.terrain b/public/terrain/19/858584/353989.terrain new file mode 100644 index 000000000..271aca74f Binary files /dev/null and b/public/terrain/19/858584/353989.terrain differ diff --git a/public/terrain/19/858584/353990.terrain b/public/terrain/19/858584/353990.terrain new file mode 100644 index 000000000..cc9754244 Binary files /dev/null and b/public/terrain/19/858584/353990.terrain differ diff --git a/public/terrain/19/858584/353991.terrain b/public/terrain/19/858584/353991.terrain new file mode 100644 index 000000000..8b9ef41e4 Binary files /dev/null and b/public/terrain/19/858584/353991.terrain differ diff --git a/public/terrain/19/858584/353992.terrain b/public/terrain/19/858584/353992.terrain new file mode 100644 index 000000000..96aafa2f3 Binary files /dev/null and b/public/terrain/19/858584/353992.terrain differ diff --git a/public/terrain/19/858584/353993.terrain b/public/terrain/19/858584/353993.terrain new file mode 100644 index 000000000..e5ad88e74 Binary files /dev/null and b/public/terrain/19/858584/353993.terrain differ diff --git a/public/terrain/19/858584/353994.terrain b/public/terrain/19/858584/353994.terrain new file mode 100644 index 000000000..5602181b2 Binary files /dev/null and b/public/terrain/19/858584/353994.terrain differ diff --git a/public/terrain/19/858584/353995.terrain b/public/terrain/19/858584/353995.terrain new file mode 100644 index 000000000..39f6777ea Binary files /dev/null and b/public/terrain/19/858584/353995.terrain differ diff --git a/public/terrain/19/858584/353996.terrain b/public/terrain/19/858584/353996.terrain new file mode 100644 index 000000000..ac353d914 Binary files /dev/null and b/public/terrain/19/858584/353996.terrain differ diff --git a/public/terrain/19/858584/353997.terrain b/public/terrain/19/858584/353997.terrain new file mode 100644 index 000000000..b8a370c90 Binary files /dev/null and b/public/terrain/19/858584/353997.terrain differ diff --git a/public/terrain/19/858584/353998.terrain b/public/terrain/19/858584/353998.terrain new file mode 100644 index 000000000..31f292d3c Binary files /dev/null and b/public/terrain/19/858584/353998.terrain differ diff --git a/public/terrain/19/858584/353999.terrain b/public/terrain/19/858584/353999.terrain new file mode 100644 index 000000000..6d5b9c761 Binary files /dev/null and b/public/terrain/19/858584/353999.terrain differ diff --git a/public/terrain/19/858584/354000.terrain b/public/terrain/19/858584/354000.terrain new file mode 100644 index 000000000..0ed7c2463 Binary files /dev/null and b/public/terrain/19/858584/354000.terrain differ diff --git a/public/terrain/19/858584/354001.terrain b/public/terrain/19/858584/354001.terrain new file mode 100644 index 000000000..5cc0fd176 Binary files /dev/null and b/public/terrain/19/858584/354001.terrain differ diff --git a/public/terrain/19/858584/354002.terrain b/public/terrain/19/858584/354002.terrain new file mode 100644 index 000000000..094e487bc Binary files /dev/null and b/public/terrain/19/858584/354002.terrain differ diff --git a/public/terrain/19/858584/354003.terrain b/public/terrain/19/858584/354003.terrain new file mode 100644 index 000000000..73835b13c Binary files /dev/null and b/public/terrain/19/858584/354003.terrain differ diff --git a/public/terrain/19/858584/354004.terrain b/public/terrain/19/858584/354004.terrain new file mode 100644 index 000000000..5e8e0981a Binary files /dev/null and b/public/terrain/19/858584/354004.terrain differ diff --git a/public/terrain/19/858584/354005.terrain b/public/terrain/19/858584/354005.terrain new file mode 100644 index 000000000..42f245013 Binary files /dev/null and b/public/terrain/19/858584/354005.terrain differ diff --git a/public/terrain/19/858584/354006.terrain b/public/terrain/19/858584/354006.terrain new file mode 100644 index 000000000..34a3b4b34 Binary files /dev/null and b/public/terrain/19/858584/354006.terrain differ diff --git a/public/terrain/19/858584/354007.terrain b/public/terrain/19/858584/354007.terrain new file mode 100644 index 000000000..362c48c8f Binary files /dev/null and b/public/terrain/19/858584/354007.terrain differ diff --git a/public/terrain/19/858584/354008.terrain b/public/terrain/19/858584/354008.terrain new file mode 100644 index 000000000..58b5fd6ae Binary files /dev/null and b/public/terrain/19/858584/354008.terrain differ diff --git a/public/terrain/19/858584/354009.terrain b/public/terrain/19/858584/354009.terrain new file mode 100644 index 000000000..6876e3939 Binary files /dev/null and b/public/terrain/19/858584/354009.terrain differ diff --git a/public/terrain/19/858584/354010.terrain b/public/terrain/19/858584/354010.terrain new file mode 100644 index 000000000..5b016ebeb Binary files /dev/null and b/public/terrain/19/858584/354010.terrain differ diff --git a/public/terrain/19/858584/354011.terrain b/public/terrain/19/858584/354011.terrain new file mode 100644 index 000000000..f4e4c82a4 Binary files /dev/null and b/public/terrain/19/858584/354011.terrain differ diff --git a/public/terrain/19/858584/354012.terrain b/public/terrain/19/858584/354012.terrain new file mode 100644 index 000000000..8f61fd313 Binary files /dev/null and b/public/terrain/19/858584/354012.terrain differ diff --git a/public/terrain/19/858584/354013.terrain b/public/terrain/19/858584/354013.terrain new file mode 100644 index 000000000..2415f1033 Binary files /dev/null and b/public/terrain/19/858584/354013.terrain differ diff --git a/public/terrain/19/858584/354014.terrain b/public/terrain/19/858584/354014.terrain new file mode 100644 index 000000000..b7a0c46ba Binary files /dev/null and b/public/terrain/19/858584/354014.terrain differ diff --git a/public/terrain/19/858584/354015.terrain b/public/terrain/19/858584/354015.terrain new file mode 100644 index 000000000..44af8eedf Binary files /dev/null and b/public/terrain/19/858584/354015.terrain differ diff --git a/public/terrain/19/858584/354016.terrain b/public/terrain/19/858584/354016.terrain new file mode 100644 index 000000000..852d9ed93 Binary files /dev/null and b/public/terrain/19/858584/354016.terrain differ diff --git a/public/terrain/19/858584/354017.terrain b/public/terrain/19/858584/354017.terrain new file mode 100644 index 000000000..8c9bdbeca Binary files /dev/null and b/public/terrain/19/858584/354017.terrain differ diff --git a/public/terrain/19/858584/354018.terrain b/public/terrain/19/858584/354018.terrain new file mode 100644 index 000000000..fa5a499ca Binary files /dev/null and b/public/terrain/19/858584/354018.terrain differ diff --git a/public/terrain/19/858584/354019.terrain b/public/terrain/19/858584/354019.terrain new file mode 100644 index 000000000..4d6abd52e Binary files /dev/null and b/public/terrain/19/858584/354019.terrain differ diff --git a/public/terrain/19/858584/354020.terrain b/public/terrain/19/858584/354020.terrain new file mode 100644 index 000000000..d3998e428 Binary files /dev/null and b/public/terrain/19/858584/354020.terrain differ diff --git a/public/terrain/19/858584/354021.terrain b/public/terrain/19/858584/354021.terrain new file mode 100644 index 000000000..4c65a3967 Binary files /dev/null and b/public/terrain/19/858584/354021.terrain differ diff --git a/public/terrain/19/858584/354022.terrain b/public/terrain/19/858584/354022.terrain new file mode 100644 index 000000000..260024b1c Binary files /dev/null and b/public/terrain/19/858584/354022.terrain differ diff --git a/public/terrain/19/858584/354023.terrain b/public/terrain/19/858584/354023.terrain new file mode 100644 index 000000000..aec313c42 Binary files /dev/null and b/public/terrain/19/858584/354023.terrain differ diff --git a/public/terrain/19/858584/354024.terrain b/public/terrain/19/858584/354024.terrain new file mode 100644 index 000000000..293159396 Binary files /dev/null and b/public/terrain/19/858584/354024.terrain differ diff --git a/public/terrain/19/858584/354025.terrain b/public/terrain/19/858584/354025.terrain new file mode 100644 index 000000000..5377812f2 Binary files /dev/null and b/public/terrain/19/858584/354025.terrain differ diff --git a/public/terrain/19/858584/354026.terrain b/public/terrain/19/858584/354026.terrain new file mode 100644 index 000000000..24519f8af Binary files /dev/null and b/public/terrain/19/858584/354026.terrain differ diff --git a/public/terrain/19/858584/354027.terrain b/public/terrain/19/858584/354027.terrain new file mode 100644 index 000000000..607cafcaa Binary files /dev/null and b/public/terrain/19/858584/354027.terrain differ diff --git a/public/terrain/19/858584/354028.terrain b/public/terrain/19/858584/354028.terrain new file mode 100644 index 000000000..d6c7a3aae Binary files /dev/null and b/public/terrain/19/858584/354028.terrain differ diff --git a/public/terrain/19/858584/354029.terrain b/public/terrain/19/858584/354029.terrain new file mode 100644 index 000000000..608c92aea Binary files /dev/null and b/public/terrain/19/858584/354029.terrain differ diff --git a/public/terrain/19/858584/354030.terrain b/public/terrain/19/858584/354030.terrain new file mode 100644 index 000000000..e9d473616 Binary files /dev/null and b/public/terrain/19/858584/354030.terrain differ diff --git a/public/terrain/19/858584/354031.terrain b/public/terrain/19/858584/354031.terrain new file mode 100644 index 000000000..5227588c0 Binary files /dev/null and b/public/terrain/19/858584/354031.terrain differ diff --git a/public/terrain/19/858584/354032.terrain b/public/terrain/19/858584/354032.terrain new file mode 100644 index 000000000..b75decb61 Binary files /dev/null and b/public/terrain/19/858584/354032.terrain differ diff --git a/public/terrain/19/858584/354033.terrain b/public/terrain/19/858584/354033.terrain new file mode 100644 index 000000000..d70e6811c Binary files /dev/null and b/public/terrain/19/858584/354033.terrain differ diff --git a/public/terrain/19/858584/354034.terrain b/public/terrain/19/858584/354034.terrain new file mode 100644 index 000000000..04f6d5cdc Binary files /dev/null and b/public/terrain/19/858584/354034.terrain differ diff --git a/public/terrain/19/858584/354035.terrain b/public/terrain/19/858584/354035.terrain new file mode 100644 index 000000000..171d22373 Binary files /dev/null and b/public/terrain/19/858584/354035.terrain differ diff --git a/public/terrain/19/858584/354036.terrain b/public/terrain/19/858584/354036.terrain new file mode 100644 index 000000000..eb3451875 Binary files /dev/null and b/public/terrain/19/858584/354036.terrain differ diff --git a/public/terrain/19/858584/354037.terrain b/public/terrain/19/858584/354037.terrain new file mode 100644 index 000000000..82ad34b48 Binary files /dev/null and b/public/terrain/19/858584/354037.terrain differ diff --git a/public/terrain/19/858584/354038.terrain b/public/terrain/19/858584/354038.terrain new file mode 100644 index 000000000..ce861c897 Binary files /dev/null and b/public/terrain/19/858584/354038.terrain differ diff --git a/public/terrain/19/858584/354039.terrain b/public/terrain/19/858584/354039.terrain new file mode 100644 index 000000000..247890b19 Binary files /dev/null and b/public/terrain/19/858584/354039.terrain differ diff --git a/public/terrain/19/858584/354040.terrain b/public/terrain/19/858584/354040.terrain new file mode 100644 index 000000000..244828cdb Binary files /dev/null and b/public/terrain/19/858584/354040.terrain differ diff --git a/public/terrain/19/858584/354041.terrain b/public/terrain/19/858584/354041.terrain new file mode 100644 index 000000000..1b72f65e3 Binary files /dev/null and b/public/terrain/19/858584/354041.terrain differ diff --git a/public/terrain/19/858584/354042.terrain b/public/terrain/19/858584/354042.terrain new file mode 100644 index 000000000..43a465306 Binary files /dev/null and b/public/terrain/19/858584/354042.terrain differ diff --git a/public/terrain/19/858584/354043.terrain b/public/terrain/19/858584/354043.terrain new file mode 100644 index 000000000..4a93f9685 Binary files /dev/null and b/public/terrain/19/858584/354043.terrain differ diff --git a/public/terrain/19/858584/354044.terrain b/public/terrain/19/858584/354044.terrain new file mode 100644 index 000000000..e4d9498a5 Binary files /dev/null and b/public/terrain/19/858584/354044.terrain differ diff --git a/public/terrain/19/858584/354045.terrain b/public/terrain/19/858584/354045.terrain new file mode 100644 index 000000000..fa2a1dbb4 Binary files /dev/null and b/public/terrain/19/858584/354045.terrain differ diff --git a/public/terrain/19/858584/354046.terrain b/public/terrain/19/858584/354046.terrain new file mode 100644 index 000000000..9f3445fb2 Binary files /dev/null and b/public/terrain/19/858584/354046.terrain differ diff --git a/public/terrain/19/858584/354047.terrain b/public/terrain/19/858584/354047.terrain new file mode 100644 index 000000000..ec1c844c6 Binary files /dev/null and b/public/terrain/19/858584/354047.terrain differ diff --git a/public/terrain/19/858584/354048.terrain b/public/terrain/19/858584/354048.terrain new file mode 100644 index 000000000..931850853 Binary files /dev/null and b/public/terrain/19/858584/354048.terrain differ diff --git a/public/terrain/19/858584/354049.terrain b/public/terrain/19/858584/354049.terrain new file mode 100644 index 000000000..3adb80f30 Binary files /dev/null and b/public/terrain/19/858584/354049.terrain differ diff --git a/public/terrain/19/858584/354050.terrain b/public/terrain/19/858584/354050.terrain new file mode 100644 index 000000000..2b88f8fb4 Binary files /dev/null and b/public/terrain/19/858584/354050.terrain differ diff --git a/public/terrain/19/858584/354051.terrain b/public/terrain/19/858584/354051.terrain new file mode 100644 index 000000000..acc97243a Binary files /dev/null and b/public/terrain/19/858584/354051.terrain differ diff --git a/public/terrain/19/858584/354052.terrain b/public/terrain/19/858584/354052.terrain new file mode 100644 index 000000000..863a17909 Binary files /dev/null and b/public/terrain/19/858584/354052.terrain differ diff --git a/public/terrain/19/858584/354053.terrain b/public/terrain/19/858584/354053.terrain new file mode 100644 index 000000000..576abb684 Binary files /dev/null and b/public/terrain/19/858584/354053.terrain differ diff --git a/public/terrain/19/858584/354054.terrain b/public/terrain/19/858584/354054.terrain new file mode 100644 index 000000000..3146c9925 Binary files /dev/null and b/public/terrain/19/858584/354054.terrain differ diff --git a/public/terrain/19/858584/354055.terrain b/public/terrain/19/858584/354055.terrain new file mode 100644 index 000000000..8b138eb3a Binary files /dev/null and b/public/terrain/19/858584/354055.terrain differ diff --git a/public/terrain/19/858584/354056.terrain b/public/terrain/19/858584/354056.terrain new file mode 100644 index 000000000..79b831e23 Binary files /dev/null and b/public/terrain/19/858584/354056.terrain differ diff --git a/public/terrain/19/858584/354057.terrain b/public/terrain/19/858584/354057.terrain new file mode 100644 index 000000000..a825e8be1 Binary files /dev/null and b/public/terrain/19/858584/354057.terrain differ diff --git a/public/terrain/19/858584/354058.terrain b/public/terrain/19/858584/354058.terrain new file mode 100644 index 000000000..37814c1d1 Binary files /dev/null and b/public/terrain/19/858584/354058.terrain differ diff --git a/public/terrain/19/858584/354059.terrain b/public/terrain/19/858584/354059.terrain new file mode 100644 index 000000000..35cbecc53 Binary files /dev/null and b/public/terrain/19/858584/354059.terrain differ diff --git a/public/terrain/19/858585/353743.terrain b/public/terrain/19/858585/353743.terrain new file mode 100644 index 000000000..16480eb0f Binary files /dev/null and b/public/terrain/19/858585/353743.terrain differ diff --git a/public/terrain/19/858585/353744.terrain b/public/terrain/19/858585/353744.terrain new file mode 100644 index 000000000..9af2ff9b5 Binary files /dev/null and b/public/terrain/19/858585/353744.terrain differ diff --git a/public/terrain/19/858585/353745.terrain b/public/terrain/19/858585/353745.terrain new file mode 100644 index 000000000..f4773d469 Binary files /dev/null and b/public/terrain/19/858585/353745.terrain differ diff --git a/public/terrain/19/858585/353746.terrain b/public/terrain/19/858585/353746.terrain new file mode 100644 index 000000000..40d1587ad Binary files /dev/null and b/public/terrain/19/858585/353746.terrain differ diff --git a/public/terrain/19/858585/353747.terrain b/public/terrain/19/858585/353747.terrain new file mode 100644 index 000000000..6a53ae248 Binary files /dev/null and b/public/terrain/19/858585/353747.terrain differ diff --git a/public/terrain/19/858585/353748.terrain b/public/terrain/19/858585/353748.terrain new file mode 100644 index 000000000..cf9295338 Binary files /dev/null and b/public/terrain/19/858585/353748.terrain differ diff --git a/public/terrain/19/858585/353749.terrain b/public/terrain/19/858585/353749.terrain new file mode 100644 index 000000000..c5ca5a0f2 Binary files /dev/null and b/public/terrain/19/858585/353749.terrain differ diff --git a/public/terrain/19/858585/353750.terrain b/public/terrain/19/858585/353750.terrain new file mode 100644 index 000000000..672c23023 Binary files /dev/null and b/public/terrain/19/858585/353750.terrain differ diff --git a/public/terrain/19/858585/353751.terrain b/public/terrain/19/858585/353751.terrain new file mode 100644 index 000000000..548786ea4 Binary files /dev/null and b/public/terrain/19/858585/353751.terrain differ diff --git a/public/terrain/19/858585/353752.terrain b/public/terrain/19/858585/353752.terrain new file mode 100644 index 000000000..79f333590 Binary files /dev/null and b/public/terrain/19/858585/353752.terrain differ diff --git a/public/terrain/19/858585/353753.terrain b/public/terrain/19/858585/353753.terrain new file mode 100644 index 000000000..96a3b141f Binary files /dev/null and b/public/terrain/19/858585/353753.terrain differ diff --git a/public/terrain/19/858585/353754.terrain b/public/terrain/19/858585/353754.terrain new file mode 100644 index 000000000..56ea23b48 Binary files /dev/null and b/public/terrain/19/858585/353754.terrain differ diff --git a/public/terrain/19/858585/353755.terrain b/public/terrain/19/858585/353755.terrain new file mode 100644 index 000000000..21254c552 Binary files /dev/null and b/public/terrain/19/858585/353755.terrain differ diff --git a/public/terrain/19/858585/353756.terrain b/public/terrain/19/858585/353756.terrain new file mode 100644 index 000000000..5234834b6 Binary files /dev/null and b/public/terrain/19/858585/353756.terrain differ diff --git a/public/terrain/19/858585/353757.terrain b/public/terrain/19/858585/353757.terrain new file mode 100644 index 000000000..1ffa6777e Binary files /dev/null and b/public/terrain/19/858585/353757.terrain differ diff --git a/public/terrain/19/858585/353758.terrain b/public/terrain/19/858585/353758.terrain new file mode 100644 index 000000000..753b45c94 Binary files /dev/null and b/public/terrain/19/858585/353758.terrain differ diff --git a/public/terrain/19/858585/353759.terrain b/public/terrain/19/858585/353759.terrain new file mode 100644 index 000000000..24ad37f7a Binary files /dev/null and b/public/terrain/19/858585/353759.terrain differ diff --git a/public/terrain/19/858585/353760.terrain b/public/terrain/19/858585/353760.terrain new file mode 100644 index 000000000..709e64c06 Binary files /dev/null and b/public/terrain/19/858585/353760.terrain differ diff --git a/public/terrain/19/858585/353761.terrain b/public/terrain/19/858585/353761.terrain new file mode 100644 index 000000000..f4d70355f Binary files /dev/null and b/public/terrain/19/858585/353761.terrain differ diff --git a/public/terrain/19/858585/353762.terrain b/public/terrain/19/858585/353762.terrain new file mode 100644 index 000000000..b23de538c Binary files /dev/null and b/public/terrain/19/858585/353762.terrain differ diff --git a/public/terrain/19/858585/353763.terrain b/public/terrain/19/858585/353763.terrain new file mode 100644 index 000000000..7d818acf3 Binary files /dev/null and b/public/terrain/19/858585/353763.terrain differ diff --git a/public/terrain/19/858585/353764.terrain b/public/terrain/19/858585/353764.terrain new file mode 100644 index 000000000..edddd8e98 Binary files /dev/null and b/public/terrain/19/858585/353764.terrain differ diff --git a/public/terrain/19/858585/353765.terrain b/public/terrain/19/858585/353765.terrain new file mode 100644 index 000000000..39e6176de Binary files /dev/null and b/public/terrain/19/858585/353765.terrain differ diff --git a/public/terrain/19/858585/353766.terrain b/public/terrain/19/858585/353766.terrain new file mode 100644 index 000000000..993b77f03 Binary files /dev/null and b/public/terrain/19/858585/353766.terrain differ diff --git a/public/terrain/19/858585/353767.terrain b/public/terrain/19/858585/353767.terrain new file mode 100644 index 000000000..7007db642 Binary files /dev/null and b/public/terrain/19/858585/353767.terrain differ diff --git a/public/terrain/19/858585/353768.terrain b/public/terrain/19/858585/353768.terrain new file mode 100644 index 000000000..ad8a9b29e Binary files /dev/null and b/public/terrain/19/858585/353768.terrain differ diff --git a/public/terrain/19/858585/353769.terrain b/public/terrain/19/858585/353769.terrain new file mode 100644 index 000000000..4809a7bfe Binary files /dev/null and b/public/terrain/19/858585/353769.terrain differ diff --git a/public/terrain/19/858585/353770.terrain b/public/terrain/19/858585/353770.terrain new file mode 100644 index 000000000..ad9210671 Binary files /dev/null and b/public/terrain/19/858585/353770.terrain differ diff --git a/public/terrain/19/858585/353771.terrain b/public/terrain/19/858585/353771.terrain new file mode 100644 index 000000000..20e25ec86 Binary files /dev/null and b/public/terrain/19/858585/353771.terrain differ diff --git a/public/terrain/19/858585/353772.terrain b/public/terrain/19/858585/353772.terrain new file mode 100644 index 000000000..956007dfe Binary files /dev/null and b/public/terrain/19/858585/353772.terrain differ diff --git a/public/terrain/19/858585/353773.terrain b/public/terrain/19/858585/353773.terrain new file mode 100644 index 000000000..591c3fcad Binary files /dev/null and b/public/terrain/19/858585/353773.terrain differ diff --git a/public/terrain/19/858585/353774.terrain b/public/terrain/19/858585/353774.terrain new file mode 100644 index 000000000..f2c1d8dcc Binary files /dev/null and b/public/terrain/19/858585/353774.terrain differ diff --git a/public/terrain/19/858585/353775.terrain b/public/terrain/19/858585/353775.terrain new file mode 100644 index 000000000..698edcc88 Binary files /dev/null and b/public/terrain/19/858585/353775.terrain differ diff --git a/public/terrain/19/858585/353776.terrain b/public/terrain/19/858585/353776.terrain new file mode 100644 index 000000000..4b86988b8 Binary files /dev/null and b/public/terrain/19/858585/353776.terrain differ diff --git a/public/terrain/19/858585/353777.terrain b/public/terrain/19/858585/353777.terrain new file mode 100644 index 000000000..72a94335f Binary files /dev/null and b/public/terrain/19/858585/353777.terrain differ diff --git a/public/terrain/19/858585/353778.terrain b/public/terrain/19/858585/353778.terrain new file mode 100644 index 000000000..56d138bd3 Binary files /dev/null and b/public/terrain/19/858585/353778.terrain differ diff --git a/public/terrain/19/858585/353779.terrain b/public/terrain/19/858585/353779.terrain new file mode 100644 index 000000000..e9494dbd3 Binary files /dev/null and b/public/terrain/19/858585/353779.terrain differ diff --git a/public/terrain/19/858585/353780.terrain b/public/terrain/19/858585/353780.terrain new file mode 100644 index 000000000..8e3800044 Binary files /dev/null and b/public/terrain/19/858585/353780.terrain differ diff --git a/public/terrain/19/858585/353781.terrain b/public/terrain/19/858585/353781.terrain new file mode 100644 index 000000000..5f525f797 Binary files /dev/null and b/public/terrain/19/858585/353781.terrain differ diff --git a/public/terrain/19/858585/353782.terrain b/public/terrain/19/858585/353782.terrain new file mode 100644 index 000000000..6cca581ae Binary files /dev/null and b/public/terrain/19/858585/353782.terrain differ diff --git a/public/terrain/19/858585/353783.terrain b/public/terrain/19/858585/353783.terrain new file mode 100644 index 000000000..1e832a693 Binary files /dev/null and b/public/terrain/19/858585/353783.terrain differ diff --git a/public/terrain/19/858585/353784.terrain b/public/terrain/19/858585/353784.terrain new file mode 100644 index 000000000..68844c9bf Binary files /dev/null and b/public/terrain/19/858585/353784.terrain differ diff --git a/public/terrain/19/858585/353785.terrain b/public/terrain/19/858585/353785.terrain new file mode 100644 index 000000000..dd47ee3ac Binary files /dev/null and b/public/terrain/19/858585/353785.terrain differ diff --git a/public/terrain/19/858585/353786.terrain b/public/terrain/19/858585/353786.terrain new file mode 100644 index 000000000..6df6a3790 Binary files /dev/null and b/public/terrain/19/858585/353786.terrain differ diff --git a/public/terrain/19/858585/353787.terrain b/public/terrain/19/858585/353787.terrain new file mode 100644 index 000000000..21b1192ae Binary files /dev/null and b/public/terrain/19/858585/353787.terrain differ diff --git a/public/terrain/19/858585/353788.terrain b/public/terrain/19/858585/353788.terrain new file mode 100644 index 000000000..acbbc25aa Binary files /dev/null and b/public/terrain/19/858585/353788.terrain differ diff --git a/public/terrain/19/858585/353789.terrain b/public/terrain/19/858585/353789.terrain new file mode 100644 index 000000000..cd395e385 Binary files /dev/null and b/public/terrain/19/858585/353789.terrain differ diff --git a/public/terrain/19/858585/353790.terrain b/public/terrain/19/858585/353790.terrain new file mode 100644 index 000000000..19a8247cd Binary files /dev/null and b/public/terrain/19/858585/353790.terrain differ diff --git a/public/terrain/19/858585/353791.terrain b/public/terrain/19/858585/353791.terrain new file mode 100644 index 000000000..7a2014b06 Binary files /dev/null and b/public/terrain/19/858585/353791.terrain differ diff --git a/public/terrain/19/858585/353792.terrain b/public/terrain/19/858585/353792.terrain new file mode 100644 index 000000000..10d682860 Binary files /dev/null and b/public/terrain/19/858585/353792.terrain differ diff --git a/public/terrain/19/858585/353793.terrain b/public/terrain/19/858585/353793.terrain new file mode 100644 index 000000000..0cfc0dfab Binary files /dev/null and b/public/terrain/19/858585/353793.terrain differ diff --git a/public/terrain/19/858585/353794.terrain b/public/terrain/19/858585/353794.terrain new file mode 100644 index 000000000..67c0a8d5b Binary files /dev/null and b/public/terrain/19/858585/353794.terrain differ diff --git a/public/terrain/19/858585/353795.terrain b/public/terrain/19/858585/353795.terrain new file mode 100644 index 000000000..19ae28fa3 Binary files /dev/null and b/public/terrain/19/858585/353795.terrain differ diff --git a/public/terrain/19/858585/353796.terrain b/public/terrain/19/858585/353796.terrain new file mode 100644 index 000000000..aaf63b7da Binary files /dev/null and b/public/terrain/19/858585/353796.terrain differ diff --git a/public/terrain/19/858585/353797.terrain b/public/terrain/19/858585/353797.terrain new file mode 100644 index 000000000..24e31d6e0 Binary files /dev/null and b/public/terrain/19/858585/353797.terrain differ diff --git a/public/terrain/19/858585/353798.terrain b/public/terrain/19/858585/353798.terrain new file mode 100644 index 000000000..f794f7da1 Binary files /dev/null and b/public/terrain/19/858585/353798.terrain differ diff --git a/public/terrain/19/858585/353799.terrain b/public/terrain/19/858585/353799.terrain new file mode 100644 index 000000000..d56ff6ff9 Binary files /dev/null and b/public/terrain/19/858585/353799.terrain differ diff --git a/public/terrain/19/858585/353800.terrain b/public/terrain/19/858585/353800.terrain new file mode 100644 index 000000000..a5161c195 Binary files /dev/null and b/public/terrain/19/858585/353800.terrain differ diff --git a/public/terrain/19/858585/353801.terrain b/public/terrain/19/858585/353801.terrain new file mode 100644 index 000000000..f4a8269a4 Binary files /dev/null and b/public/terrain/19/858585/353801.terrain differ diff --git a/public/terrain/19/858585/353802.terrain b/public/terrain/19/858585/353802.terrain new file mode 100644 index 000000000..820f085d2 Binary files /dev/null and b/public/terrain/19/858585/353802.terrain differ diff --git a/public/terrain/19/858585/353803.terrain b/public/terrain/19/858585/353803.terrain new file mode 100644 index 000000000..1eae9fcc3 Binary files /dev/null and b/public/terrain/19/858585/353803.terrain differ diff --git a/public/terrain/19/858585/353804.terrain b/public/terrain/19/858585/353804.terrain new file mode 100644 index 000000000..97f81d3fb Binary files /dev/null and b/public/terrain/19/858585/353804.terrain differ diff --git a/public/terrain/19/858585/353805.terrain b/public/terrain/19/858585/353805.terrain new file mode 100644 index 000000000..258341a93 Binary files /dev/null and b/public/terrain/19/858585/353805.terrain differ diff --git a/public/terrain/19/858585/353806.terrain b/public/terrain/19/858585/353806.terrain new file mode 100644 index 000000000..00e9cb446 Binary files /dev/null and b/public/terrain/19/858585/353806.terrain differ diff --git a/public/terrain/19/858585/353807.terrain b/public/terrain/19/858585/353807.terrain new file mode 100644 index 000000000..0480fb5bc Binary files /dev/null and b/public/terrain/19/858585/353807.terrain differ diff --git a/public/terrain/19/858585/353808.terrain b/public/terrain/19/858585/353808.terrain new file mode 100644 index 000000000..aee639575 Binary files /dev/null and b/public/terrain/19/858585/353808.terrain differ diff --git a/public/terrain/19/858585/353809.terrain b/public/terrain/19/858585/353809.terrain new file mode 100644 index 000000000..bea0bd1ee Binary files /dev/null and b/public/terrain/19/858585/353809.terrain differ diff --git a/public/terrain/19/858585/353810.terrain b/public/terrain/19/858585/353810.terrain new file mode 100644 index 000000000..5e69ba583 Binary files /dev/null and b/public/terrain/19/858585/353810.terrain differ diff --git a/public/terrain/19/858585/353811.terrain b/public/terrain/19/858585/353811.terrain new file mode 100644 index 000000000..63ec5da12 Binary files /dev/null and b/public/terrain/19/858585/353811.terrain differ diff --git a/public/terrain/19/858585/353812.terrain b/public/terrain/19/858585/353812.terrain new file mode 100644 index 000000000..5b47d0695 Binary files /dev/null and b/public/terrain/19/858585/353812.terrain differ diff --git a/public/terrain/19/858585/353813.terrain b/public/terrain/19/858585/353813.terrain new file mode 100644 index 000000000..5ff34bccd Binary files /dev/null and b/public/terrain/19/858585/353813.terrain differ diff --git a/public/terrain/19/858585/353814.terrain b/public/terrain/19/858585/353814.terrain new file mode 100644 index 000000000..1876c31fc Binary files /dev/null and b/public/terrain/19/858585/353814.terrain differ diff --git a/public/terrain/19/858585/353815.terrain b/public/terrain/19/858585/353815.terrain new file mode 100644 index 000000000..17a03b15f Binary files /dev/null and b/public/terrain/19/858585/353815.terrain differ diff --git a/public/terrain/19/858585/353816.terrain b/public/terrain/19/858585/353816.terrain new file mode 100644 index 000000000..f140fa361 Binary files /dev/null and b/public/terrain/19/858585/353816.terrain differ diff --git a/public/terrain/19/858585/353817.terrain b/public/terrain/19/858585/353817.terrain new file mode 100644 index 000000000..58b31bf3f Binary files /dev/null and b/public/terrain/19/858585/353817.terrain differ diff --git a/public/terrain/19/858585/353818.terrain b/public/terrain/19/858585/353818.terrain new file mode 100644 index 000000000..6450c6406 Binary files /dev/null and b/public/terrain/19/858585/353818.terrain differ diff --git a/public/terrain/19/858585/353819.terrain b/public/terrain/19/858585/353819.terrain new file mode 100644 index 000000000..698b67d55 Binary files /dev/null and b/public/terrain/19/858585/353819.terrain differ diff --git a/public/terrain/19/858585/353820.terrain b/public/terrain/19/858585/353820.terrain new file mode 100644 index 000000000..3975d322d Binary files /dev/null and b/public/terrain/19/858585/353820.terrain differ diff --git a/public/terrain/19/858585/353821.terrain b/public/terrain/19/858585/353821.terrain new file mode 100644 index 000000000..7b7033c45 Binary files /dev/null and b/public/terrain/19/858585/353821.terrain differ diff --git a/public/terrain/19/858585/353822.terrain b/public/terrain/19/858585/353822.terrain new file mode 100644 index 000000000..092eaa023 Binary files /dev/null and b/public/terrain/19/858585/353822.terrain differ diff --git a/public/terrain/19/858585/353823.terrain b/public/terrain/19/858585/353823.terrain new file mode 100644 index 000000000..1030e03fc Binary files /dev/null and b/public/terrain/19/858585/353823.terrain differ diff --git a/public/terrain/19/858585/353824.terrain b/public/terrain/19/858585/353824.terrain new file mode 100644 index 000000000..c331c49c9 Binary files /dev/null and b/public/terrain/19/858585/353824.terrain differ diff --git a/public/terrain/19/858585/353825.terrain b/public/terrain/19/858585/353825.terrain new file mode 100644 index 000000000..30cca260c Binary files /dev/null and b/public/terrain/19/858585/353825.terrain differ diff --git a/public/terrain/19/858585/353826.terrain b/public/terrain/19/858585/353826.terrain new file mode 100644 index 000000000..730dbc9f3 Binary files /dev/null and b/public/terrain/19/858585/353826.terrain differ diff --git a/public/terrain/19/858585/353827.terrain b/public/terrain/19/858585/353827.terrain new file mode 100644 index 000000000..4c18fb742 Binary files /dev/null and b/public/terrain/19/858585/353827.terrain differ diff --git a/public/terrain/19/858585/353828.terrain b/public/terrain/19/858585/353828.terrain new file mode 100644 index 000000000..5f09834d5 Binary files /dev/null and b/public/terrain/19/858585/353828.terrain differ diff --git a/public/terrain/19/858585/353829.terrain b/public/terrain/19/858585/353829.terrain new file mode 100644 index 000000000..0682a0fe6 Binary files /dev/null and b/public/terrain/19/858585/353829.terrain differ diff --git a/public/terrain/19/858585/353830.terrain b/public/terrain/19/858585/353830.terrain new file mode 100644 index 000000000..8f15309f4 Binary files /dev/null and b/public/terrain/19/858585/353830.terrain differ diff --git a/public/terrain/19/858585/353831.terrain b/public/terrain/19/858585/353831.terrain new file mode 100644 index 000000000..d75921730 Binary files /dev/null and b/public/terrain/19/858585/353831.terrain differ diff --git a/public/terrain/19/858585/353832.terrain b/public/terrain/19/858585/353832.terrain new file mode 100644 index 000000000..2633ca7b7 Binary files /dev/null and b/public/terrain/19/858585/353832.terrain differ diff --git a/public/terrain/19/858585/353833.terrain b/public/terrain/19/858585/353833.terrain new file mode 100644 index 000000000..36a1e3e07 Binary files /dev/null and b/public/terrain/19/858585/353833.terrain differ diff --git a/public/terrain/19/858585/353834.terrain b/public/terrain/19/858585/353834.terrain new file mode 100644 index 000000000..25e683f3c Binary files /dev/null and b/public/terrain/19/858585/353834.terrain differ diff --git a/public/terrain/19/858585/353835.terrain b/public/terrain/19/858585/353835.terrain new file mode 100644 index 000000000..722b0f1d8 Binary files /dev/null and b/public/terrain/19/858585/353835.terrain differ diff --git a/public/terrain/19/858585/353836.terrain b/public/terrain/19/858585/353836.terrain new file mode 100644 index 000000000..c3e6c94a9 Binary files /dev/null and b/public/terrain/19/858585/353836.terrain differ diff --git a/public/terrain/19/858585/353837.terrain b/public/terrain/19/858585/353837.terrain new file mode 100644 index 000000000..47312b4c6 Binary files /dev/null and b/public/terrain/19/858585/353837.terrain differ diff --git a/public/terrain/19/858585/353838.terrain b/public/terrain/19/858585/353838.terrain new file mode 100644 index 000000000..470c8d412 Binary files /dev/null and b/public/terrain/19/858585/353838.terrain differ diff --git a/public/terrain/19/858585/353839.terrain b/public/terrain/19/858585/353839.terrain new file mode 100644 index 000000000..92280c912 Binary files /dev/null and b/public/terrain/19/858585/353839.terrain differ diff --git a/public/terrain/19/858585/353840.terrain b/public/terrain/19/858585/353840.terrain new file mode 100644 index 000000000..8e0f90f07 Binary files /dev/null and b/public/terrain/19/858585/353840.terrain differ diff --git a/public/terrain/19/858585/353841.terrain b/public/terrain/19/858585/353841.terrain new file mode 100644 index 000000000..98df1580a Binary files /dev/null and b/public/terrain/19/858585/353841.terrain differ diff --git a/public/terrain/19/858585/353842.terrain b/public/terrain/19/858585/353842.terrain new file mode 100644 index 000000000..1af88cb51 Binary files /dev/null and b/public/terrain/19/858585/353842.terrain differ diff --git a/public/terrain/19/858585/353843.terrain b/public/terrain/19/858585/353843.terrain new file mode 100644 index 000000000..bd6d4e2dc Binary files /dev/null and b/public/terrain/19/858585/353843.terrain differ diff --git a/public/terrain/19/858585/353844.terrain b/public/terrain/19/858585/353844.terrain new file mode 100644 index 000000000..15cc51616 Binary files /dev/null and b/public/terrain/19/858585/353844.terrain differ diff --git a/public/terrain/19/858585/353845.terrain b/public/terrain/19/858585/353845.terrain new file mode 100644 index 000000000..b8aeb6e40 Binary files /dev/null and b/public/terrain/19/858585/353845.terrain differ diff --git a/public/terrain/19/858585/353846.terrain b/public/terrain/19/858585/353846.terrain new file mode 100644 index 000000000..63113a670 Binary files /dev/null and b/public/terrain/19/858585/353846.terrain differ diff --git a/public/terrain/19/858585/353847.terrain b/public/terrain/19/858585/353847.terrain new file mode 100644 index 000000000..19275fbfa Binary files /dev/null and b/public/terrain/19/858585/353847.terrain differ diff --git a/public/terrain/19/858585/353848.terrain b/public/terrain/19/858585/353848.terrain new file mode 100644 index 000000000..9b9a2be78 Binary files /dev/null and b/public/terrain/19/858585/353848.terrain differ diff --git a/public/terrain/19/858585/353849.terrain b/public/terrain/19/858585/353849.terrain new file mode 100644 index 000000000..575ce7dea Binary files /dev/null and b/public/terrain/19/858585/353849.terrain differ diff --git a/public/terrain/19/858585/353850.terrain b/public/terrain/19/858585/353850.terrain new file mode 100644 index 000000000..cdfb62da0 Binary files /dev/null and b/public/terrain/19/858585/353850.terrain differ diff --git a/public/terrain/19/858585/353851.terrain b/public/terrain/19/858585/353851.terrain new file mode 100644 index 000000000..a61b0866d Binary files /dev/null and b/public/terrain/19/858585/353851.terrain differ diff --git a/public/terrain/19/858585/353852.terrain b/public/terrain/19/858585/353852.terrain new file mode 100644 index 000000000..2fdc0d412 Binary files /dev/null and b/public/terrain/19/858585/353852.terrain differ diff --git a/public/terrain/19/858585/353853.terrain b/public/terrain/19/858585/353853.terrain new file mode 100644 index 000000000..bedf6f71e Binary files /dev/null and b/public/terrain/19/858585/353853.terrain differ diff --git a/public/terrain/19/858585/353854.terrain b/public/terrain/19/858585/353854.terrain new file mode 100644 index 000000000..7da554bd3 Binary files /dev/null and b/public/terrain/19/858585/353854.terrain differ diff --git a/public/terrain/19/858585/353855.terrain b/public/terrain/19/858585/353855.terrain new file mode 100644 index 000000000..d0916b860 Binary files /dev/null and b/public/terrain/19/858585/353855.terrain differ diff --git a/public/terrain/19/858585/353856.terrain b/public/terrain/19/858585/353856.terrain new file mode 100644 index 000000000..3b0fcd159 Binary files /dev/null and b/public/terrain/19/858585/353856.terrain differ diff --git a/public/terrain/19/858585/353857.terrain b/public/terrain/19/858585/353857.terrain new file mode 100644 index 000000000..eaaf7e2cb Binary files /dev/null and b/public/terrain/19/858585/353857.terrain differ diff --git a/public/terrain/19/858585/353858.terrain b/public/terrain/19/858585/353858.terrain new file mode 100644 index 000000000..58532cd3b Binary files /dev/null and b/public/terrain/19/858585/353858.terrain differ diff --git a/public/terrain/19/858585/353859.terrain b/public/terrain/19/858585/353859.terrain new file mode 100644 index 000000000..1f7277e96 Binary files /dev/null and b/public/terrain/19/858585/353859.terrain differ diff --git a/public/terrain/19/858585/353860.terrain b/public/terrain/19/858585/353860.terrain new file mode 100644 index 000000000..a1868f475 Binary files /dev/null and b/public/terrain/19/858585/353860.terrain differ diff --git a/public/terrain/19/858585/353861.terrain b/public/terrain/19/858585/353861.terrain new file mode 100644 index 000000000..9a85bb777 Binary files /dev/null and b/public/terrain/19/858585/353861.terrain differ diff --git a/public/terrain/19/858585/353862.terrain b/public/terrain/19/858585/353862.terrain new file mode 100644 index 000000000..eb76499d9 Binary files /dev/null and b/public/terrain/19/858585/353862.terrain differ diff --git a/public/terrain/19/858585/353863.terrain b/public/terrain/19/858585/353863.terrain new file mode 100644 index 000000000..7a225e766 Binary files /dev/null and b/public/terrain/19/858585/353863.terrain differ diff --git a/public/terrain/19/858585/353864.terrain b/public/terrain/19/858585/353864.terrain new file mode 100644 index 000000000..cd1a9673d Binary files /dev/null and b/public/terrain/19/858585/353864.terrain differ diff --git a/public/terrain/19/858585/353865.terrain b/public/terrain/19/858585/353865.terrain new file mode 100644 index 000000000..dacb994c1 Binary files /dev/null and b/public/terrain/19/858585/353865.terrain differ diff --git a/public/terrain/19/858585/353866.terrain b/public/terrain/19/858585/353866.terrain new file mode 100644 index 000000000..9d4febe64 Binary files /dev/null and b/public/terrain/19/858585/353866.terrain differ diff --git a/public/terrain/19/858585/353867.terrain b/public/terrain/19/858585/353867.terrain new file mode 100644 index 000000000..c1b35f798 Binary files /dev/null and b/public/terrain/19/858585/353867.terrain differ diff --git a/public/terrain/19/858585/353868.terrain b/public/terrain/19/858585/353868.terrain new file mode 100644 index 000000000..27eb7ea2b Binary files /dev/null and b/public/terrain/19/858585/353868.terrain differ diff --git a/public/terrain/19/858585/353869.terrain b/public/terrain/19/858585/353869.terrain new file mode 100644 index 000000000..0f49d2ff4 Binary files /dev/null and b/public/terrain/19/858585/353869.terrain differ diff --git a/public/terrain/19/858585/353870.terrain b/public/terrain/19/858585/353870.terrain new file mode 100644 index 000000000..c5f998417 Binary files /dev/null and b/public/terrain/19/858585/353870.terrain differ diff --git a/public/terrain/19/858585/353871.terrain b/public/terrain/19/858585/353871.terrain new file mode 100644 index 000000000..66d1321d4 Binary files /dev/null and b/public/terrain/19/858585/353871.terrain differ diff --git a/public/terrain/19/858585/353872.terrain b/public/terrain/19/858585/353872.terrain new file mode 100644 index 000000000..685422bb8 Binary files /dev/null and b/public/terrain/19/858585/353872.terrain differ diff --git a/public/terrain/19/858585/353873.terrain b/public/terrain/19/858585/353873.terrain new file mode 100644 index 000000000..8bc818df2 Binary files /dev/null and b/public/terrain/19/858585/353873.terrain differ diff --git a/public/terrain/19/858585/353874.terrain b/public/terrain/19/858585/353874.terrain new file mode 100644 index 000000000..8f64fd799 Binary files /dev/null and b/public/terrain/19/858585/353874.terrain differ diff --git a/public/terrain/19/858585/353875.terrain b/public/terrain/19/858585/353875.terrain new file mode 100644 index 000000000..d60fd3a93 Binary files /dev/null and b/public/terrain/19/858585/353875.terrain differ diff --git a/public/terrain/19/858585/353876.terrain b/public/terrain/19/858585/353876.terrain new file mode 100644 index 000000000..b36aa5da1 Binary files /dev/null and b/public/terrain/19/858585/353876.terrain differ diff --git a/public/terrain/19/858585/353877.terrain b/public/terrain/19/858585/353877.terrain new file mode 100644 index 000000000..235852d01 Binary files /dev/null and b/public/terrain/19/858585/353877.terrain differ diff --git a/public/terrain/19/858585/353878.terrain b/public/terrain/19/858585/353878.terrain new file mode 100644 index 000000000..6ec8c7096 Binary files /dev/null and b/public/terrain/19/858585/353878.terrain differ diff --git a/public/terrain/19/858585/353879.terrain b/public/terrain/19/858585/353879.terrain new file mode 100644 index 000000000..00529b59b Binary files /dev/null and b/public/terrain/19/858585/353879.terrain differ diff --git a/public/terrain/19/858585/353880.terrain b/public/terrain/19/858585/353880.terrain new file mode 100644 index 000000000..8bcbcb058 Binary files /dev/null and b/public/terrain/19/858585/353880.terrain differ diff --git a/public/terrain/19/858585/353881.terrain b/public/terrain/19/858585/353881.terrain new file mode 100644 index 000000000..7409a30d1 Binary files /dev/null and b/public/terrain/19/858585/353881.terrain differ diff --git a/public/terrain/19/858585/353882.terrain b/public/terrain/19/858585/353882.terrain new file mode 100644 index 000000000..cdd8fa6ee Binary files /dev/null and b/public/terrain/19/858585/353882.terrain differ diff --git a/public/terrain/19/858585/353883.terrain b/public/terrain/19/858585/353883.terrain new file mode 100644 index 000000000..11e0bf163 Binary files /dev/null and b/public/terrain/19/858585/353883.terrain differ diff --git a/public/terrain/19/858585/353884.terrain b/public/terrain/19/858585/353884.terrain new file mode 100644 index 000000000..0ab64fd1a Binary files /dev/null and b/public/terrain/19/858585/353884.terrain differ diff --git a/public/terrain/19/858585/353885.terrain b/public/terrain/19/858585/353885.terrain new file mode 100644 index 000000000..e21deb8ef Binary files /dev/null and b/public/terrain/19/858585/353885.terrain differ diff --git a/public/terrain/19/858585/353886.terrain b/public/terrain/19/858585/353886.terrain new file mode 100644 index 000000000..94308bbf2 Binary files /dev/null and b/public/terrain/19/858585/353886.terrain differ diff --git a/public/terrain/19/858585/353887.terrain b/public/terrain/19/858585/353887.terrain new file mode 100644 index 000000000..b96378e9b Binary files /dev/null and b/public/terrain/19/858585/353887.terrain differ diff --git a/public/terrain/19/858585/353888.terrain b/public/terrain/19/858585/353888.terrain new file mode 100644 index 000000000..76011130f Binary files /dev/null and b/public/terrain/19/858585/353888.terrain differ diff --git a/public/terrain/19/858585/353889.terrain b/public/terrain/19/858585/353889.terrain new file mode 100644 index 000000000..5154f625e Binary files /dev/null and b/public/terrain/19/858585/353889.terrain differ diff --git a/public/terrain/19/858585/353890.terrain b/public/terrain/19/858585/353890.terrain new file mode 100644 index 000000000..3747e8cd7 Binary files /dev/null and b/public/terrain/19/858585/353890.terrain differ diff --git a/public/terrain/19/858585/353891.terrain b/public/terrain/19/858585/353891.terrain new file mode 100644 index 000000000..d65678303 Binary files /dev/null and b/public/terrain/19/858585/353891.terrain differ diff --git a/public/terrain/19/858585/353892.terrain b/public/terrain/19/858585/353892.terrain new file mode 100644 index 000000000..74e2bb325 Binary files /dev/null and b/public/terrain/19/858585/353892.terrain differ diff --git a/public/terrain/19/858585/353893.terrain b/public/terrain/19/858585/353893.terrain new file mode 100644 index 000000000..0bac609a4 Binary files /dev/null and b/public/terrain/19/858585/353893.terrain differ diff --git a/public/terrain/19/858585/353894.terrain b/public/terrain/19/858585/353894.terrain new file mode 100644 index 000000000..0cc364d96 Binary files /dev/null and b/public/terrain/19/858585/353894.terrain differ diff --git a/public/terrain/19/858585/353895.terrain b/public/terrain/19/858585/353895.terrain new file mode 100644 index 000000000..965265198 Binary files /dev/null and b/public/terrain/19/858585/353895.terrain differ diff --git a/public/terrain/19/858585/353896.terrain b/public/terrain/19/858585/353896.terrain new file mode 100644 index 000000000..f22ac1eb4 Binary files /dev/null and b/public/terrain/19/858585/353896.terrain differ diff --git a/public/terrain/19/858585/353897.terrain b/public/terrain/19/858585/353897.terrain new file mode 100644 index 000000000..c06c9f878 Binary files /dev/null and b/public/terrain/19/858585/353897.terrain differ diff --git a/public/terrain/19/858585/353898.terrain b/public/terrain/19/858585/353898.terrain new file mode 100644 index 000000000..77d93d885 Binary files /dev/null and b/public/terrain/19/858585/353898.terrain differ diff --git a/public/terrain/19/858585/353899.terrain b/public/terrain/19/858585/353899.terrain new file mode 100644 index 000000000..b0829d73a Binary files /dev/null and b/public/terrain/19/858585/353899.terrain differ diff --git a/public/terrain/19/858585/353900.terrain b/public/terrain/19/858585/353900.terrain new file mode 100644 index 000000000..40d5883f8 Binary files /dev/null and b/public/terrain/19/858585/353900.terrain differ diff --git a/public/terrain/19/858585/353901.terrain b/public/terrain/19/858585/353901.terrain new file mode 100644 index 000000000..35e5891dc Binary files /dev/null and b/public/terrain/19/858585/353901.terrain differ diff --git a/public/terrain/19/858585/353902.terrain b/public/terrain/19/858585/353902.terrain new file mode 100644 index 000000000..9691a0aae Binary files /dev/null and b/public/terrain/19/858585/353902.terrain differ diff --git a/public/terrain/19/858585/353903.terrain b/public/terrain/19/858585/353903.terrain new file mode 100644 index 000000000..03ac83018 Binary files /dev/null and b/public/terrain/19/858585/353903.terrain differ diff --git a/public/terrain/19/858585/353904.terrain b/public/terrain/19/858585/353904.terrain new file mode 100644 index 000000000..0abb6978c Binary files /dev/null and b/public/terrain/19/858585/353904.terrain differ diff --git a/public/terrain/19/858585/353905.terrain b/public/terrain/19/858585/353905.terrain new file mode 100644 index 000000000..52cb7543e Binary files /dev/null and b/public/terrain/19/858585/353905.terrain differ diff --git a/public/terrain/19/858585/353906.terrain b/public/terrain/19/858585/353906.terrain new file mode 100644 index 000000000..7cb350f6c Binary files /dev/null and b/public/terrain/19/858585/353906.terrain differ diff --git a/public/terrain/19/858585/353907.terrain b/public/terrain/19/858585/353907.terrain new file mode 100644 index 000000000..a4d0b0dbd Binary files /dev/null and b/public/terrain/19/858585/353907.terrain differ diff --git a/public/terrain/19/858585/353908.terrain b/public/terrain/19/858585/353908.terrain new file mode 100644 index 000000000..cc321e0c6 Binary files /dev/null and b/public/terrain/19/858585/353908.terrain differ diff --git a/public/terrain/19/858585/353909.terrain b/public/terrain/19/858585/353909.terrain new file mode 100644 index 000000000..104b6258f Binary files /dev/null and b/public/terrain/19/858585/353909.terrain differ diff --git a/public/terrain/19/858585/353910.terrain b/public/terrain/19/858585/353910.terrain new file mode 100644 index 000000000..d332ded34 Binary files /dev/null and b/public/terrain/19/858585/353910.terrain differ diff --git a/public/terrain/19/858585/353911.terrain b/public/terrain/19/858585/353911.terrain new file mode 100644 index 000000000..2186e9082 Binary files /dev/null and b/public/terrain/19/858585/353911.terrain differ diff --git a/public/terrain/19/858585/353912.terrain b/public/terrain/19/858585/353912.terrain new file mode 100644 index 000000000..62848a50d Binary files /dev/null and b/public/terrain/19/858585/353912.terrain differ diff --git a/public/terrain/19/858585/353913.terrain b/public/terrain/19/858585/353913.terrain new file mode 100644 index 000000000..8273c7a86 Binary files /dev/null and b/public/terrain/19/858585/353913.terrain differ diff --git a/public/terrain/19/858585/353914.terrain b/public/terrain/19/858585/353914.terrain new file mode 100644 index 000000000..11fb5b7de Binary files /dev/null and b/public/terrain/19/858585/353914.terrain differ diff --git a/public/terrain/19/858585/353915.terrain b/public/terrain/19/858585/353915.terrain new file mode 100644 index 000000000..bb98b6b2e Binary files /dev/null and b/public/terrain/19/858585/353915.terrain differ diff --git a/public/terrain/19/858585/353916.terrain b/public/terrain/19/858585/353916.terrain new file mode 100644 index 000000000..d0e1ad214 Binary files /dev/null and b/public/terrain/19/858585/353916.terrain differ diff --git a/public/terrain/19/858585/353917.terrain b/public/terrain/19/858585/353917.terrain new file mode 100644 index 000000000..caac5c32d Binary files /dev/null and b/public/terrain/19/858585/353917.terrain differ diff --git a/public/terrain/19/858585/353918.terrain b/public/terrain/19/858585/353918.terrain new file mode 100644 index 000000000..7e1b8cf53 Binary files /dev/null and b/public/terrain/19/858585/353918.terrain differ diff --git a/public/terrain/19/858585/353919.terrain b/public/terrain/19/858585/353919.terrain new file mode 100644 index 000000000..15a42a90b Binary files /dev/null and b/public/terrain/19/858585/353919.terrain differ diff --git a/public/terrain/19/858585/353920.terrain b/public/terrain/19/858585/353920.terrain new file mode 100644 index 000000000..ab8f1140f Binary files /dev/null and b/public/terrain/19/858585/353920.terrain differ diff --git a/public/terrain/19/858585/353921.terrain b/public/terrain/19/858585/353921.terrain new file mode 100644 index 000000000..9c96a0b41 Binary files /dev/null and b/public/terrain/19/858585/353921.terrain differ diff --git a/public/terrain/19/858585/353922.terrain b/public/terrain/19/858585/353922.terrain new file mode 100644 index 000000000..eef561a9c Binary files /dev/null and b/public/terrain/19/858585/353922.terrain differ diff --git a/public/terrain/19/858585/353923.terrain b/public/terrain/19/858585/353923.terrain new file mode 100644 index 000000000..78edea016 Binary files /dev/null and b/public/terrain/19/858585/353923.terrain differ diff --git a/public/terrain/19/858585/353924.terrain b/public/terrain/19/858585/353924.terrain new file mode 100644 index 000000000..4b1d2647d Binary files /dev/null and b/public/terrain/19/858585/353924.terrain differ diff --git a/public/terrain/19/858585/353925.terrain b/public/terrain/19/858585/353925.terrain new file mode 100644 index 000000000..89989bd82 Binary files /dev/null and b/public/terrain/19/858585/353925.terrain differ diff --git a/public/terrain/19/858585/353926.terrain b/public/terrain/19/858585/353926.terrain new file mode 100644 index 000000000..9c919769d Binary files /dev/null and b/public/terrain/19/858585/353926.terrain differ diff --git a/public/terrain/19/858585/353927.terrain b/public/terrain/19/858585/353927.terrain new file mode 100644 index 000000000..f5742c022 Binary files /dev/null and b/public/terrain/19/858585/353927.terrain differ diff --git a/public/terrain/19/858585/353928.terrain b/public/terrain/19/858585/353928.terrain new file mode 100644 index 000000000..ebbe8db31 Binary files /dev/null and b/public/terrain/19/858585/353928.terrain differ diff --git a/public/terrain/19/858585/353929.terrain b/public/terrain/19/858585/353929.terrain new file mode 100644 index 000000000..e94e87639 Binary files /dev/null and b/public/terrain/19/858585/353929.terrain differ diff --git a/public/terrain/19/858585/353930.terrain b/public/terrain/19/858585/353930.terrain new file mode 100644 index 000000000..be9d3d8f8 Binary files /dev/null and b/public/terrain/19/858585/353930.terrain differ diff --git a/public/terrain/19/858585/353931.terrain b/public/terrain/19/858585/353931.terrain new file mode 100644 index 000000000..2a51b5d94 Binary files /dev/null and b/public/terrain/19/858585/353931.terrain differ diff --git a/public/terrain/19/858585/353932.terrain b/public/terrain/19/858585/353932.terrain new file mode 100644 index 000000000..75a6e8d9f Binary files /dev/null and b/public/terrain/19/858585/353932.terrain differ diff --git a/public/terrain/19/858585/353933.terrain b/public/terrain/19/858585/353933.terrain new file mode 100644 index 000000000..d450d72a8 Binary files /dev/null and b/public/terrain/19/858585/353933.terrain differ diff --git a/public/terrain/19/858585/353934.terrain b/public/terrain/19/858585/353934.terrain new file mode 100644 index 000000000..5a04d0480 Binary files /dev/null and b/public/terrain/19/858585/353934.terrain differ diff --git a/public/terrain/19/858585/353935.terrain b/public/terrain/19/858585/353935.terrain new file mode 100644 index 000000000..0a015e94c Binary files /dev/null and b/public/terrain/19/858585/353935.terrain differ diff --git a/public/terrain/19/858585/353936.terrain b/public/terrain/19/858585/353936.terrain new file mode 100644 index 000000000..7c71d080a Binary files /dev/null and b/public/terrain/19/858585/353936.terrain differ diff --git a/public/terrain/19/858585/353937.terrain b/public/terrain/19/858585/353937.terrain new file mode 100644 index 000000000..c5fe756e7 Binary files /dev/null and b/public/terrain/19/858585/353937.terrain differ diff --git a/public/terrain/19/858585/353938.terrain b/public/terrain/19/858585/353938.terrain new file mode 100644 index 000000000..1900ce3f1 Binary files /dev/null and b/public/terrain/19/858585/353938.terrain differ diff --git a/public/terrain/19/858585/353939.terrain b/public/terrain/19/858585/353939.terrain new file mode 100644 index 000000000..ea3585425 Binary files /dev/null and b/public/terrain/19/858585/353939.terrain differ diff --git a/public/terrain/19/858585/353940.terrain b/public/terrain/19/858585/353940.terrain new file mode 100644 index 000000000..72b307daa Binary files /dev/null and b/public/terrain/19/858585/353940.terrain differ diff --git a/public/terrain/19/858585/353941.terrain b/public/terrain/19/858585/353941.terrain new file mode 100644 index 000000000..90937053a Binary files /dev/null and b/public/terrain/19/858585/353941.terrain differ diff --git a/public/terrain/19/858585/353942.terrain b/public/terrain/19/858585/353942.terrain new file mode 100644 index 000000000..17699d882 Binary files /dev/null and b/public/terrain/19/858585/353942.terrain differ diff --git a/public/terrain/19/858585/353943.terrain b/public/terrain/19/858585/353943.terrain new file mode 100644 index 000000000..78bbce3a8 Binary files /dev/null and b/public/terrain/19/858585/353943.terrain differ diff --git a/public/terrain/19/858585/353944.terrain b/public/terrain/19/858585/353944.terrain new file mode 100644 index 000000000..b5b95b15d Binary files /dev/null and b/public/terrain/19/858585/353944.terrain differ diff --git a/public/terrain/19/858585/353945.terrain b/public/terrain/19/858585/353945.terrain new file mode 100644 index 000000000..a26504231 Binary files /dev/null and b/public/terrain/19/858585/353945.terrain differ diff --git a/public/terrain/19/858585/353946.terrain b/public/terrain/19/858585/353946.terrain new file mode 100644 index 000000000..e19f173cf Binary files /dev/null and b/public/terrain/19/858585/353946.terrain differ diff --git a/public/terrain/19/858585/353947.terrain b/public/terrain/19/858585/353947.terrain new file mode 100644 index 000000000..f4aad525f Binary files /dev/null and b/public/terrain/19/858585/353947.terrain differ diff --git a/public/terrain/19/858585/353948.terrain b/public/terrain/19/858585/353948.terrain new file mode 100644 index 000000000..c6fe912c4 Binary files /dev/null and b/public/terrain/19/858585/353948.terrain differ diff --git a/public/terrain/19/858585/353949.terrain b/public/terrain/19/858585/353949.terrain new file mode 100644 index 000000000..380d514fe Binary files /dev/null and b/public/terrain/19/858585/353949.terrain differ diff --git a/public/terrain/19/858585/353950.terrain b/public/terrain/19/858585/353950.terrain new file mode 100644 index 000000000..320ba64ec Binary files /dev/null and b/public/terrain/19/858585/353950.terrain differ diff --git a/public/terrain/19/858585/353951.terrain b/public/terrain/19/858585/353951.terrain new file mode 100644 index 000000000..88f885945 Binary files /dev/null and b/public/terrain/19/858585/353951.terrain differ diff --git a/public/terrain/19/858585/353952.terrain b/public/terrain/19/858585/353952.terrain new file mode 100644 index 000000000..962bd710f Binary files /dev/null and b/public/terrain/19/858585/353952.terrain differ diff --git a/public/terrain/19/858585/353953.terrain b/public/terrain/19/858585/353953.terrain new file mode 100644 index 000000000..960855911 Binary files /dev/null and b/public/terrain/19/858585/353953.terrain differ diff --git a/public/terrain/19/858585/353954.terrain b/public/terrain/19/858585/353954.terrain new file mode 100644 index 000000000..d4f4247b0 Binary files /dev/null and b/public/terrain/19/858585/353954.terrain differ diff --git a/public/terrain/19/858585/353955.terrain b/public/terrain/19/858585/353955.terrain new file mode 100644 index 000000000..7162973a0 Binary files /dev/null and b/public/terrain/19/858585/353955.terrain differ diff --git a/public/terrain/19/858585/353956.terrain b/public/terrain/19/858585/353956.terrain new file mode 100644 index 000000000..dccea332e Binary files /dev/null and b/public/terrain/19/858585/353956.terrain differ diff --git a/public/terrain/19/858585/353957.terrain b/public/terrain/19/858585/353957.terrain new file mode 100644 index 000000000..38f24af4b Binary files /dev/null and b/public/terrain/19/858585/353957.terrain differ diff --git a/public/terrain/19/858585/353958.terrain b/public/terrain/19/858585/353958.terrain new file mode 100644 index 000000000..f7d4557ad Binary files /dev/null and b/public/terrain/19/858585/353958.terrain differ diff --git a/public/terrain/19/858585/353959.terrain b/public/terrain/19/858585/353959.terrain new file mode 100644 index 000000000..58ef7b396 Binary files /dev/null and b/public/terrain/19/858585/353959.terrain differ diff --git a/public/terrain/19/858585/353960.terrain b/public/terrain/19/858585/353960.terrain new file mode 100644 index 000000000..a468b1c32 Binary files /dev/null and b/public/terrain/19/858585/353960.terrain differ diff --git a/public/terrain/19/858585/353961.terrain b/public/terrain/19/858585/353961.terrain new file mode 100644 index 000000000..e60f18d83 Binary files /dev/null and b/public/terrain/19/858585/353961.terrain differ diff --git a/public/terrain/19/858585/353962.terrain b/public/terrain/19/858585/353962.terrain new file mode 100644 index 000000000..6e01bab14 Binary files /dev/null and b/public/terrain/19/858585/353962.terrain differ diff --git a/public/terrain/19/858585/353963.terrain b/public/terrain/19/858585/353963.terrain new file mode 100644 index 000000000..a4b57c24f Binary files /dev/null and b/public/terrain/19/858585/353963.terrain differ diff --git a/public/terrain/19/858585/353964.terrain b/public/terrain/19/858585/353964.terrain new file mode 100644 index 000000000..f63f4de2f Binary files /dev/null and b/public/terrain/19/858585/353964.terrain differ diff --git a/public/terrain/19/858585/353965.terrain b/public/terrain/19/858585/353965.terrain new file mode 100644 index 000000000..f037bf08c Binary files /dev/null and b/public/terrain/19/858585/353965.terrain differ diff --git a/public/terrain/19/858585/353966.terrain b/public/terrain/19/858585/353966.terrain new file mode 100644 index 000000000..27b29c4ee Binary files /dev/null and b/public/terrain/19/858585/353966.terrain differ diff --git a/public/terrain/19/858585/353967.terrain b/public/terrain/19/858585/353967.terrain new file mode 100644 index 000000000..6a0e6617d Binary files /dev/null and b/public/terrain/19/858585/353967.terrain differ diff --git a/public/terrain/19/858585/353968.terrain b/public/terrain/19/858585/353968.terrain new file mode 100644 index 000000000..e307cd37d Binary files /dev/null and b/public/terrain/19/858585/353968.terrain differ diff --git a/public/terrain/19/858585/353969.terrain b/public/terrain/19/858585/353969.terrain new file mode 100644 index 000000000..2ccadebaf Binary files /dev/null and b/public/terrain/19/858585/353969.terrain differ diff --git a/public/terrain/19/858585/353970.terrain b/public/terrain/19/858585/353970.terrain new file mode 100644 index 000000000..eb587086d Binary files /dev/null and b/public/terrain/19/858585/353970.terrain differ diff --git a/public/terrain/19/858585/353971.terrain b/public/terrain/19/858585/353971.terrain new file mode 100644 index 000000000..d97576331 Binary files /dev/null and b/public/terrain/19/858585/353971.terrain differ diff --git a/public/terrain/19/858585/353972.terrain b/public/terrain/19/858585/353972.terrain new file mode 100644 index 000000000..73b5562f4 Binary files /dev/null and b/public/terrain/19/858585/353972.terrain differ diff --git a/public/terrain/19/858585/353973.terrain b/public/terrain/19/858585/353973.terrain new file mode 100644 index 000000000..c4c17b0bd Binary files /dev/null and b/public/terrain/19/858585/353973.terrain differ diff --git a/public/terrain/19/858585/353974.terrain b/public/terrain/19/858585/353974.terrain new file mode 100644 index 000000000..d4730d824 Binary files /dev/null and b/public/terrain/19/858585/353974.terrain differ diff --git a/public/terrain/19/858585/353975.terrain b/public/terrain/19/858585/353975.terrain new file mode 100644 index 000000000..35d53de4b Binary files /dev/null and b/public/terrain/19/858585/353975.terrain differ diff --git a/public/terrain/19/858585/353976.terrain b/public/terrain/19/858585/353976.terrain new file mode 100644 index 000000000..c240cb395 Binary files /dev/null and b/public/terrain/19/858585/353976.terrain differ diff --git a/public/terrain/19/858585/353977.terrain b/public/terrain/19/858585/353977.terrain new file mode 100644 index 000000000..9cabbe5b9 Binary files /dev/null and b/public/terrain/19/858585/353977.terrain differ diff --git a/public/terrain/19/858585/353978.terrain b/public/terrain/19/858585/353978.terrain new file mode 100644 index 000000000..2b79cc68d Binary files /dev/null and b/public/terrain/19/858585/353978.terrain differ diff --git a/public/terrain/19/858585/353979.terrain b/public/terrain/19/858585/353979.terrain new file mode 100644 index 000000000..23a2caec6 Binary files /dev/null and b/public/terrain/19/858585/353979.terrain differ diff --git a/public/terrain/19/858585/353980.terrain b/public/terrain/19/858585/353980.terrain new file mode 100644 index 000000000..df622c1af Binary files /dev/null and b/public/terrain/19/858585/353980.terrain differ diff --git a/public/terrain/19/858585/353981.terrain b/public/terrain/19/858585/353981.terrain new file mode 100644 index 000000000..302260b0a Binary files /dev/null and b/public/terrain/19/858585/353981.terrain differ diff --git a/public/terrain/19/858585/353982.terrain b/public/terrain/19/858585/353982.terrain new file mode 100644 index 000000000..56ac4ae88 Binary files /dev/null and b/public/terrain/19/858585/353982.terrain differ diff --git a/public/terrain/19/858585/353983.terrain b/public/terrain/19/858585/353983.terrain new file mode 100644 index 000000000..860286c60 Binary files /dev/null and b/public/terrain/19/858585/353983.terrain differ diff --git a/public/terrain/19/858585/353984.terrain b/public/terrain/19/858585/353984.terrain new file mode 100644 index 000000000..f4a904b77 Binary files /dev/null and b/public/terrain/19/858585/353984.terrain differ diff --git a/public/terrain/19/858585/353985.terrain b/public/terrain/19/858585/353985.terrain new file mode 100644 index 000000000..ca6bba396 Binary files /dev/null and b/public/terrain/19/858585/353985.terrain differ diff --git a/public/terrain/19/858585/353986.terrain b/public/terrain/19/858585/353986.terrain new file mode 100644 index 000000000..a1362adc8 Binary files /dev/null and b/public/terrain/19/858585/353986.terrain differ diff --git a/public/terrain/19/858585/353987.terrain b/public/terrain/19/858585/353987.terrain new file mode 100644 index 000000000..46be2b2bc Binary files /dev/null and b/public/terrain/19/858585/353987.terrain differ diff --git a/public/terrain/19/858585/353988.terrain b/public/terrain/19/858585/353988.terrain new file mode 100644 index 000000000..349633d98 Binary files /dev/null and b/public/terrain/19/858585/353988.terrain differ diff --git a/public/terrain/19/858585/353989.terrain b/public/terrain/19/858585/353989.terrain new file mode 100644 index 000000000..3f81d3ef8 Binary files /dev/null and b/public/terrain/19/858585/353989.terrain differ diff --git a/public/terrain/19/858585/353990.terrain b/public/terrain/19/858585/353990.terrain new file mode 100644 index 000000000..65566f4f7 Binary files /dev/null and b/public/terrain/19/858585/353990.terrain differ diff --git a/public/terrain/19/858585/353991.terrain b/public/terrain/19/858585/353991.terrain new file mode 100644 index 000000000..7f7521ee0 Binary files /dev/null and b/public/terrain/19/858585/353991.terrain differ diff --git a/public/terrain/19/858585/353992.terrain b/public/terrain/19/858585/353992.terrain new file mode 100644 index 000000000..89b610276 Binary files /dev/null and b/public/terrain/19/858585/353992.terrain differ diff --git a/public/terrain/19/858585/353993.terrain b/public/terrain/19/858585/353993.terrain new file mode 100644 index 000000000..536459263 Binary files /dev/null and b/public/terrain/19/858585/353993.terrain differ diff --git a/public/terrain/19/858585/353994.terrain b/public/terrain/19/858585/353994.terrain new file mode 100644 index 000000000..70f1f819e Binary files /dev/null and b/public/terrain/19/858585/353994.terrain differ diff --git a/public/terrain/19/858585/353995.terrain b/public/terrain/19/858585/353995.terrain new file mode 100644 index 000000000..6c66fe6a1 Binary files /dev/null and b/public/terrain/19/858585/353995.terrain differ diff --git a/public/terrain/19/858585/353996.terrain b/public/terrain/19/858585/353996.terrain new file mode 100644 index 000000000..4c6ee0f76 Binary files /dev/null and b/public/terrain/19/858585/353996.terrain differ diff --git a/public/terrain/19/858585/353997.terrain b/public/terrain/19/858585/353997.terrain new file mode 100644 index 000000000..04bb3c501 Binary files /dev/null and b/public/terrain/19/858585/353997.terrain differ diff --git a/public/terrain/19/858585/353998.terrain b/public/terrain/19/858585/353998.terrain new file mode 100644 index 000000000..55abaf7ed Binary files /dev/null and b/public/terrain/19/858585/353998.terrain differ diff --git a/public/terrain/19/858585/353999.terrain b/public/terrain/19/858585/353999.terrain new file mode 100644 index 000000000..3f3ad7497 Binary files /dev/null and b/public/terrain/19/858585/353999.terrain differ diff --git a/public/terrain/19/858585/354000.terrain b/public/terrain/19/858585/354000.terrain new file mode 100644 index 000000000..34d58aea4 Binary files /dev/null and b/public/terrain/19/858585/354000.terrain differ diff --git a/public/terrain/19/858585/354001.terrain b/public/terrain/19/858585/354001.terrain new file mode 100644 index 000000000..9013c52c4 Binary files /dev/null and b/public/terrain/19/858585/354001.terrain differ diff --git a/public/terrain/19/858585/354002.terrain b/public/terrain/19/858585/354002.terrain new file mode 100644 index 000000000..33fb49711 Binary files /dev/null and b/public/terrain/19/858585/354002.terrain differ diff --git a/public/terrain/19/858585/354003.terrain b/public/terrain/19/858585/354003.terrain new file mode 100644 index 000000000..e1b508d31 Binary files /dev/null and b/public/terrain/19/858585/354003.terrain differ diff --git a/public/terrain/19/858585/354004.terrain b/public/terrain/19/858585/354004.terrain new file mode 100644 index 000000000..3e7d53715 Binary files /dev/null and b/public/terrain/19/858585/354004.terrain differ diff --git a/public/terrain/19/858585/354005.terrain b/public/terrain/19/858585/354005.terrain new file mode 100644 index 000000000..6a87b8778 Binary files /dev/null and b/public/terrain/19/858585/354005.terrain differ diff --git a/public/terrain/19/858585/354006.terrain b/public/terrain/19/858585/354006.terrain new file mode 100644 index 000000000..f67705c60 Binary files /dev/null and b/public/terrain/19/858585/354006.terrain differ diff --git a/public/terrain/19/858585/354007.terrain b/public/terrain/19/858585/354007.terrain new file mode 100644 index 000000000..1378e81d1 Binary files /dev/null and b/public/terrain/19/858585/354007.terrain differ diff --git a/public/terrain/19/858585/354008.terrain b/public/terrain/19/858585/354008.terrain new file mode 100644 index 000000000..50b9b3e53 Binary files /dev/null and b/public/terrain/19/858585/354008.terrain differ diff --git a/public/terrain/19/858585/354009.terrain b/public/terrain/19/858585/354009.terrain new file mode 100644 index 000000000..000da416e Binary files /dev/null and b/public/terrain/19/858585/354009.terrain differ diff --git a/public/terrain/19/858585/354010.terrain b/public/terrain/19/858585/354010.terrain new file mode 100644 index 000000000..e4e10c9d6 Binary files /dev/null and b/public/terrain/19/858585/354010.terrain differ diff --git a/public/terrain/19/858585/354011.terrain b/public/terrain/19/858585/354011.terrain new file mode 100644 index 000000000..fd17ec62f Binary files /dev/null and b/public/terrain/19/858585/354011.terrain differ diff --git a/public/terrain/19/858585/354012.terrain b/public/terrain/19/858585/354012.terrain new file mode 100644 index 000000000..abd5692ea Binary files /dev/null and b/public/terrain/19/858585/354012.terrain differ diff --git a/public/terrain/19/858585/354013.terrain b/public/terrain/19/858585/354013.terrain new file mode 100644 index 000000000..0abbe2270 Binary files /dev/null and b/public/terrain/19/858585/354013.terrain differ diff --git a/public/terrain/19/858585/354014.terrain b/public/terrain/19/858585/354014.terrain new file mode 100644 index 000000000..ec7c43b9e Binary files /dev/null and b/public/terrain/19/858585/354014.terrain differ diff --git a/public/terrain/19/858585/354015.terrain b/public/terrain/19/858585/354015.terrain new file mode 100644 index 000000000..b0f55f514 Binary files /dev/null and b/public/terrain/19/858585/354015.terrain differ diff --git a/public/terrain/19/858585/354016.terrain b/public/terrain/19/858585/354016.terrain new file mode 100644 index 000000000..0f7502253 Binary files /dev/null and b/public/terrain/19/858585/354016.terrain differ diff --git a/public/terrain/19/858585/354017.terrain b/public/terrain/19/858585/354017.terrain new file mode 100644 index 000000000..fccf4bd40 Binary files /dev/null and b/public/terrain/19/858585/354017.terrain differ diff --git a/public/terrain/19/858585/354018.terrain b/public/terrain/19/858585/354018.terrain new file mode 100644 index 000000000..3dabc7d08 Binary files /dev/null and b/public/terrain/19/858585/354018.terrain differ diff --git a/public/terrain/19/858585/354019.terrain b/public/terrain/19/858585/354019.terrain new file mode 100644 index 000000000..25e83ec38 Binary files /dev/null and b/public/terrain/19/858585/354019.terrain differ diff --git a/public/terrain/19/858585/354020.terrain b/public/terrain/19/858585/354020.terrain new file mode 100644 index 000000000..288619f53 Binary files /dev/null and b/public/terrain/19/858585/354020.terrain differ diff --git a/public/terrain/19/858585/354021.terrain b/public/terrain/19/858585/354021.terrain new file mode 100644 index 000000000..a6cdde67d Binary files /dev/null and b/public/terrain/19/858585/354021.terrain differ diff --git a/public/terrain/19/858585/354022.terrain b/public/terrain/19/858585/354022.terrain new file mode 100644 index 000000000..a0e355974 Binary files /dev/null and b/public/terrain/19/858585/354022.terrain differ diff --git a/public/terrain/19/858585/354023.terrain b/public/terrain/19/858585/354023.terrain new file mode 100644 index 000000000..164f16372 Binary files /dev/null and b/public/terrain/19/858585/354023.terrain differ diff --git a/public/terrain/19/858585/354024.terrain b/public/terrain/19/858585/354024.terrain new file mode 100644 index 000000000..0bdfcb0cc Binary files /dev/null and b/public/terrain/19/858585/354024.terrain differ diff --git a/public/terrain/19/858585/354025.terrain b/public/terrain/19/858585/354025.terrain new file mode 100644 index 000000000..2987a8198 Binary files /dev/null and b/public/terrain/19/858585/354025.terrain differ diff --git a/public/terrain/19/858585/354026.terrain b/public/terrain/19/858585/354026.terrain new file mode 100644 index 000000000..e0dffdd0b Binary files /dev/null and b/public/terrain/19/858585/354026.terrain differ diff --git a/public/terrain/19/858585/354027.terrain b/public/terrain/19/858585/354027.terrain new file mode 100644 index 000000000..7e20564f8 Binary files /dev/null and b/public/terrain/19/858585/354027.terrain differ diff --git a/public/terrain/19/858585/354028.terrain b/public/terrain/19/858585/354028.terrain new file mode 100644 index 000000000..a575fc371 Binary files /dev/null and b/public/terrain/19/858585/354028.terrain differ diff --git a/public/terrain/19/858585/354029.terrain b/public/terrain/19/858585/354029.terrain new file mode 100644 index 000000000..643458bce Binary files /dev/null and b/public/terrain/19/858585/354029.terrain differ diff --git a/public/terrain/19/858585/354030.terrain b/public/terrain/19/858585/354030.terrain new file mode 100644 index 000000000..275b91591 Binary files /dev/null and b/public/terrain/19/858585/354030.terrain differ diff --git a/public/terrain/19/858585/354031.terrain b/public/terrain/19/858585/354031.terrain new file mode 100644 index 000000000..30a42b442 Binary files /dev/null and b/public/terrain/19/858585/354031.terrain differ diff --git a/public/terrain/19/858585/354032.terrain b/public/terrain/19/858585/354032.terrain new file mode 100644 index 000000000..27e86c88c Binary files /dev/null and b/public/terrain/19/858585/354032.terrain differ diff --git a/public/terrain/19/858585/354033.terrain b/public/terrain/19/858585/354033.terrain new file mode 100644 index 000000000..dfe2e51a3 Binary files /dev/null and b/public/terrain/19/858585/354033.terrain differ diff --git a/public/terrain/19/858585/354034.terrain b/public/terrain/19/858585/354034.terrain new file mode 100644 index 000000000..344b4d4d8 Binary files /dev/null and b/public/terrain/19/858585/354034.terrain differ diff --git a/public/terrain/19/858585/354035.terrain b/public/terrain/19/858585/354035.terrain new file mode 100644 index 000000000..f7070f7e2 Binary files /dev/null and b/public/terrain/19/858585/354035.terrain differ diff --git a/public/terrain/19/858585/354036.terrain b/public/terrain/19/858585/354036.terrain new file mode 100644 index 000000000..c860efd34 Binary files /dev/null and b/public/terrain/19/858585/354036.terrain differ diff --git a/public/terrain/19/858585/354037.terrain b/public/terrain/19/858585/354037.terrain new file mode 100644 index 000000000..c48de9694 Binary files /dev/null and b/public/terrain/19/858585/354037.terrain differ diff --git a/public/terrain/19/858585/354038.terrain b/public/terrain/19/858585/354038.terrain new file mode 100644 index 000000000..78c64a2ab Binary files /dev/null and b/public/terrain/19/858585/354038.terrain differ diff --git a/public/terrain/19/858585/354039.terrain b/public/terrain/19/858585/354039.terrain new file mode 100644 index 000000000..8923ebcec Binary files /dev/null and b/public/terrain/19/858585/354039.terrain differ diff --git a/public/terrain/19/858585/354040.terrain b/public/terrain/19/858585/354040.terrain new file mode 100644 index 000000000..eac288e3d Binary files /dev/null and b/public/terrain/19/858585/354040.terrain differ diff --git a/public/terrain/19/858585/354041.terrain b/public/terrain/19/858585/354041.terrain new file mode 100644 index 000000000..4afb4adab Binary files /dev/null and b/public/terrain/19/858585/354041.terrain differ diff --git a/public/terrain/19/858585/354042.terrain b/public/terrain/19/858585/354042.terrain new file mode 100644 index 000000000..a1ccabb7f Binary files /dev/null and b/public/terrain/19/858585/354042.terrain differ diff --git a/public/terrain/19/858585/354043.terrain b/public/terrain/19/858585/354043.terrain new file mode 100644 index 000000000..fcb10bd58 Binary files /dev/null and b/public/terrain/19/858585/354043.terrain differ diff --git a/public/terrain/19/858585/354044.terrain b/public/terrain/19/858585/354044.terrain new file mode 100644 index 000000000..bef9116b2 Binary files /dev/null and b/public/terrain/19/858585/354044.terrain differ diff --git a/public/terrain/19/858585/354045.terrain b/public/terrain/19/858585/354045.terrain new file mode 100644 index 000000000..4398fa8b5 Binary files /dev/null and b/public/terrain/19/858585/354045.terrain differ diff --git a/public/terrain/19/858585/354046.terrain b/public/terrain/19/858585/354046.terrain new file mode 100644 index 000000000..e1b157746 Binary files /dev/null and b/public/terrain/19/858585/354046.terrain differ diff --git a/public/terrain/19/858585/354047.terrain b/public/terrain/19/858585/354047.terrain new file mode 100644 index 000000000..21374425e Binary files /dev/null and b/public/terrain/19/858585/354047.terrain differ diff --git a/public/terrain/19/858585/354048.terrain b/public/terrain/19/858585/354048.terrain new file mode 100644 index 000000000..8b341e05a Binary files /dev/null and b/public/terrain/19/858585/354048.terrain differ diff --git a/public/terrain/19/858585/354049.terrain b/public/terrain/19/858585/354049.terrain new file mode 100644 index 000000000..3ca3a874e Binary files /dev/null and b/public/terrain/19/858585/354049.terrain differ diff --git a/public/terrain/19/858585/354050.terrain b/public/terrain/19/858585/354050.terrain new file mode 100644 index 000000000..e411dc52e Binary files /dev/null and b/public/terrain/19/858585/354050.terrain differ diff --git a/public/terrain/19/858585/354051.terrain b/public/terrain/19/858585/354051.terrain new file mode 100644 index 000000000..2e6f1aeb9 Binary files /dev/null and b/public/terrain/19/858585/354051.terrain differ diff --git a/public/terrain/19/858585/354052.terrain b/public/terrain/19/858585/354052.terrain new file mode 100644 index 000000000..c4481fb0d Binary files /dev/null and b/public/terrain/19/858585/354052.terrain differ diff --git a/public/terrain/19/858585/354053.terrain b/public/terrain/19/858585/354053.terrain new file mode 100644 index 000000000..21de970f4 Binary files /dev/null and b/public/terrain/19/858585/354053.terrain differ diff --git a/public/terrain/19/858585/354054.terrain b/public/terrain/19/858585/354054.terrain new file mode 100644 index 000000000..cb087defc Binary files /dev/null and b/public/terrain/19/858585/354054.terrain differ diff --git a/public/terrain/19/858585/354055.terrain b/public/terrain/19/858585/354055.terrain new file mode 100644 index 000000000..a438447f7 Binary files /dev/null and b/public/terrain/19/858585/354055.terrain differ diff --git a/public/terrain/19/858585/354056.terrain b/public/terrain/19/858585/354056.terrain new file mode 100644 index 000000000..26a8489f1 Binary files /dev/null and b/public/terrain/19/858585/354056.terrain differ diff --git a/public/terrain/19/858585/354057.terrain b/public/terrain/19/858585/354057.terrain new file mode 100644 index 000000000..3f6d93898 Binary files /dev/null and b/public/terrain/19/858585/354057.terrain differ diff --git a/public/terrain/19/858585/354058.terrain b/public/terrain/19/858585/354058.terrain new file mode 100644 index 000000000..9f12a0aa4 Binary files /dev/null and b/public/terrain/19/858585/354058.terrain differ diff --git a/public/terrain/19/858585/354059.terrain b/public/terrain/19/858585/354059.terrain new file mode 100644 index 000000000..aa97e6a41 Binary files /dev/null and b/public/terrain/19/858585/354059.terrain differ diff --git a/public/terrain/19/858586/353743.terrain b/public/terrain/19/858586/353743.terrain new file mode 100644 index 000000000..a129240bb Binary files /dev/null and b/public/terrain/19/858586/353743.terrain differ diff --git a/public/terrain/19/858586/353744.terrain b/public/terrain/19/858586/353744.terrain new file mode 100644 index 000000000..b9a0a70ad Binary files /dev/null and b/public/terrain/19/858586/353744.terrain differ diff --git a/public/terrain/19/858586/353745.terrain b/public/terrain/19/858586/353745.terrain new file mode 100644 index 000000000..d9323ac0d Binary files /dev/null and b/public/terrain/19/858586/353745.terrain differ diff --git a/public/terrain/19/858586/353746.terrain b/public/terrain/19/858586/353746.terrain new file mode 100644 index 000000000..6cb87f5ec Binary files /dev/null and b/public/terrain/19/858586/353746.terrain differ diff --git a/public/terrain/19/858586/353747.terrain b/public/terrain/19/858586/353747.terrain new file mode 100644 index 000000000..a9b727954 Binary files /dev/null and b/public/terrain/19/858586/353747.terrain differ diff --git a/public/terrain/19/858586/353748.terrain b/public/terrain/19/858586/353748.terrain new file mode 100644 index 000000000..0f66453cf Binary files /dev/null and b/public/terrain/19/858586/353748.terrain differ diff --git a/public/terrain/19/858586/353749.terrain b/public/terrain/19/858586/353749.terrain new file mode 100644 index 000000000..ca6a380c2 Binary files /dev/null and b/public/terrain/19/858586/353749.terrain differ diff --git a/public/terrain/19/858586/353750.terrain b/public/terrain/19/858586/353750.terrain new file mode 100644 index 000000000..c79d60845 Binary files /dev/null and b/public/terrain/19/858586/353750.terrain differ diff --git a/public/terrain/19/858586/353751.terrain b/public/terrain/19/858586/353751.terrain new file mode 100644 index 000000000..b7fc17e2d Binary files /dev/null and b/public/terrain/19/858586/353751.terrain differ diff --git a/public/terrain/19/858586/353752.terrain b/public/terrain/19/858586/353752.terrain new file mode 100644 index 000000000..6ca6bd5ce Binary files /dev/null and b/public/terrain/19/858586/353752.terrain differ diff --git a/public/terrain/19/858586/353753.terrain b/public/terrain/19/858586/353753.terrain new file mode 100644 index 000000000..ce745fa0b Binary files /dev/null and b/public/terrain/19/858586/353753.terrain differ diff --git a/public/terrain/19/858586/353754.terrain b/public/terrain/19/858586/353754.terrain new file mode 100644 index 000000000..938c278f4 Binary files /dev/null and b/public/terrain/19/858586/353754.terrain differ diff --git a/public/terrain/19/858586/353755.terrain b/public/terrain/19/858586/353755.terrain new file mode 100644 index 000000000..e20ad704e Binary files /dev/null and b/public/terrain/19/858586/353755.terrain differ diff --git a/public/terrain/19/858586/353756.terrain b/public/terrain/19/858586/353756.terrain new file mode 100644 index 000000000..caf78ed98 Binary files /dev/null and b/public/terrain/19/858586/353756.terrain differ diff --git a/public/terrain/19/858586/353757.terrain b/public/terrain/19/858586/353757.terrain new file mode 100644 index 000000000..c74be3314 Binary files /dev/null and b/public/terrain/19/858586/353757.terrain differ diff --git a/public/terrain/19/858586/353758.terrain b/public/terrain/19/858586/353758.terrain new file mode 100644 index 000000000..af1b1882e Binary files /dev/null and b/public/terrain/19/858586/353758.terrain differ diff --git a/public/terrain/19/858586/353759.terrain b/public/terrain/19/858586/353759.terrain new file mode 100644 index 000000000..9d6fa4206 Binary files /dev/null and b/public/terrain/19/858586/353759.terrain differ diff --git a/public/terrain/19/858586/353760.terrain b/public/terrain/19/858586/353760.terrain new file mode 100644 index 000000000..91089cc2d Binary files /dev/null and b/public/terrain/19/858586/353760.terrain differ diff --git a/public/terrain/19/858586/353761.terrain b/public/terrain/19/858586/353761.terrain new file mode 100644 index 000000000..a80aac6f7 Binary files /dev/null and b/public/terrain/19/858586/353761.terrain differ diff --git a/public/terrain/19/858586/353762.terrain b/public/terrain/19/858586/353762.terrain new file mode 100644 index 000000000..702f7932d Binary files /dev/null and b/public/terrain/19/858586/353762.terrain differ diff --git a/public/terrain/19/858586/353763.terrain b/public/terrain/19/858586/353763.terrain new file mode 100644 index 000000000..76e022034 Binary files /dev/null and b/public/terrain/19/858586/353763.terrain differ diff --git a/public/terrain/19/858586/353764.terrain b/public/terrain/19/858586/353764.terrain new file mode 100644 index 000000000..e17b9f723 Binary files /dev/null and b/public/terrain/19/858586/353764.terrain differ diff --git a/public/terrain/19/858586/353765.terrain b/public/terrain/19/858586/353765.terrain new file mode 100644 index 000000000..5b00de035 Binary files /dev/null and b/public/terrain/19/858586/353765.terrain differ diff --git a/public/terrain/19/858586/353766.terrain b/public/terrain/19/858586/353766.terrain new file mode 100644 index 000000000..9377c721b Binary files /dev/null and b/public/terrain/19/858586/353766.terrain differ diff --git a/public/terrain/19/858586/353767.terrain b/public/terrain/19/858586/353767.terrain new file mode 100644 index 000000000..034d1a619 Binary files /dev/null and b/public/terrain/19/858586/353767.terrain differ diff --git a/public/terrain/19/858586/353768.terrain b/public/terrain/19/858586/353768.terrain new file mode 100644 index 000000000..f2fc8869a Binary files /dev/null and b/public/terrain/19/858586/353768.terrain differ diff --git a/public/terrain/19/858586/353769.terrain b/public/terrain/19/858586/353769.terrain new file mode 100644 index 000000000..a7ddde262 Binary files /dev/null and b/public/terrain/19/858586/353769.terrain differ diff --git a/public/terrain/19/858586/353770.terrain b/public/terrain/19/858586/353770.terrain new file mode 100644 index 000000000..d0549a442 Binary files /dev/null and b/public/terrain/19/858586/353770.terrain differ diff --git a/public/terrain/19/858586/353771.terrain b/public/terrain/19/858586/353771.terrain new file mode 100644 index 000000000..3a6086e06 Binary files /dev/null and b/public/terrain/19/858586/353771.terrain differ diff --git a/public/terrain/19/858586/353772.terrain b/public/terrain/19/858586/353772.terrain new file mode 100644 index 000000000..5e91ed1ca Binary files /dev/null and b/public/terrain/19/858586/353772.terrain differ diff --git a/public/terrain/19/858586/353773.terrain b/public/terrain/19/858586/353773.terrain new file mode 100644 index 000000000..6edafcc42 Binary files /dev/null and b/public/terrain/19/858586/353773.terrain differ diff --git a/public/terrain/19/858586/353774.terrain b/public/terrain/19/858586/353774.terrain new file mode 100644 index 000000000..6f2ab7728 Binary files /dev/null and b/public/terrain/19/858586/353774.terrain differ diff --git a/public/terrain/19/858586/353775.terrain b/public/terrain/19/858586/353775.terrain new file mode 100644 index 000000000..e121d0cb2 Binary files /dev/null and b/public/terrain/19/858586/353775.terrain differ diff --git a/public/terrain/19/858586/353776.terrain b/public/terrain/19/858586/353776.terrain new file mode 100644 index 000000000..a349170ab Binary files /dev/null and b/public/terrain/19/858586/353776.terrain differ diff --git a/public/terrain/19/858586/353777.terrain b/public/terrain/19/858586/353777.terrain new file mode 100644 index 000000000..fef887a73 Binary files /dev/null and b/public/terrain/19/858586/353777.terrain differ diff --git a/public/terrain/19/858586/353778.terrain b/public/terrain/19/858586/353778.terrain new file mode 100644 index 000000000..a458deb4f Binary files /dev/null and b/public/terrain/19/858586/353778.terrain differ diff --git a/public/terrain/19/858586/353779.terrain b/public/terrain/19/858586/353779.terrain new file mode 100644 index 000000000..d4e0ecfad Binary files /dev/null and b/public/terrain/19/858586/353779.terrain differ diff --git a/public/terrain/19/858586/353780.terrain b/public/terrain/19/858586/353780.terrain new file mode 100644 index 000000000..b035d6ebc Binary files /dev/null and b/public/terrain/19/858586/353780.terrain differ diff --git a/public/terrain/19/858586/353781.terrain b/public/terrain/19/858586/353781.terrain new file mode 100644 index 000000000..b6fdd51f8 Binary files /dev/null and b/public/terrain/19/858586/353781.terrain differ diff --git a/public/terrain/19/858586/353782.terrain b/public/terrain/19/858586/353782.terrain new file mode 100644 index 000000000..849d85ba6 Binary files /dev/null and b/public/terrain/19/858586/353782.terrain differ diff --git a/public/terrain/19/858586/353783.terrain b/public/terrain/19/858586/353783.terrain new file mode 100644 index 000000000..c3adc1ae1 Binary files /dev/null and b/public/terrain/19/858586/353783.terrain differ diff --git a/public/terrain/19/858586/353784.terrain b/public/terrain/19/858586/353784.terrain new file mode 100644 index 000000000..a817b6bfc Binary files /dev/null and b/public/terrain/19/858586/353784.terrain differ diff --git a/public/terrain/19/858586/353785.terrain b/public/terrain/19/858586/353785.terrain new file mode 100644 index 000000000..ffbffcb0a Binary files /dev/null and b/public/terrain/19/858586/353785.terrain differ diff --git a/public/terrain/19/858586/353786.terrain b/public/terrain/19/858586/353786.terrain new file mode 100644 index 000000000..dea978922 Binary files /dev/null and b/public/terrain/19/858586/353786.terrain differ diff --git a/public/terrain/19/858586/353787.terrain b/public/terrain/19/858586/353787.terrain new file mode 100644 index 000000000..e764154e5 Binary files /dev/null and b/public/terrain/19/858586/353787.terrain differ diff --git a/public/terrain/19/858586/353788.terrain b/public/terrain/19/858586/353788.terrain new file mode 100644 index 000000000..f008c26ca Binary files /dev/null and b/public/terrain/19/858586/353788.terrain differ diff --git a/public/terrain/19/858586/353789.terrain b/public/terrain/19/858586/353789.terrain new file mode 100644 index 000000000..bfb365335 Binary files /dev/null and b/public/terrain/19/858586/353789.terrain differ diff --git a/public/terrain/19/858586/353790.terrain b/public/terrain/19/858586/353790.terrain new file mode 100644 index 000000000..faf6032ad Binary files /dev/null and b/public/terrain/19/858586/353790.terrain differ diff --git a/public/terrain/19/858586/353791.terrain b/public/terrain/19/858586/353791.terrain new file mode 100644 index 000000000..2e7b27909 Binary files /dev/null and b/public/terrain/19/858586/353791.terrain differ diff --git a/public/terrain/19/858586/353792.terrain b/public/terrain/19/858586/353792.terrain new file mode 100644 index 000000000..8dd3f54a7 Binary files /dev/null and b/public/terrain/19/858586/353792.terrain differ diff --git a/public/terrain/19/858586/353793.terrain b/public/terrain/19/858586/353793.terrain new file mode 100644 index 000000000..697e1efcb Binary files /dev/null and b/public/terrain/19/858586/353793.terrain differ diff --git a/public/terrain/19/858586/353794.terrain b/public/terrain/19/858586/353794.terrain new file mode 100644 index 000000000..4f1791311 Binary files /dev/null and b/public/terrain/19/858586/353794.terrain differ diff --git a/public/terrain/19/858586/353795.terrain b/public/terrain/19/858586/353795.terrain new file mode 100644 index 000000000..eca27c8ed Binary files /dev/null and b/public/terrain/19/858586/353795.terrain differ diff --git a/public/terrain/19/858586/353796.terrain b/public/terrain/19/858586/353796.terrain new file mode 100644 index 000000000..c456e8208 Binary files /dev/null and b/public/terrain/19/858586/353796.terrain differ diff --git a/public/terrain/19/858586/353797.terrain b/public/terrain/19/858586/353797.terrain new file mode 100644 index 000000000..5d5aa06ad Binary files /dev/null and b/public/terrain/19/858586/353797.terrain differ diff --git a/public/terrain/19/858586/353798.terrain b/public/terrain/19/858586/353798.terrain new file mode 100644 index 000000000..96af116d2 Binary files /dev/null and b/public/terrain/19/858586/353798.terrain differ diff --git a/public/terrain/19/858586/353799.terrain b/public/terrain/19/858586/353799.terrain new file mode 100644 index 000000000..df9d5de5c Binary files /dev/null and b/public/terrain/19/858586/353799.terrain differ diff --git a/public/terrain/19/858586/353800.terrain b/public/terrain/19/858586/353800.terrain new file mode 100644 index 000000000..01dc74d40 Binary files /dev/null and b/public/terrain/19/858586/353800.terrain differ diff --git a/public/terrain/19/858586/353801.terrain b/public/terrain/19/858586/353801.terrain new file mode 100644 index 000000000..e8768d2c6 Binary files /dev/null and b/public/terrain/19/858586/353801.terrain differ diff --git a/public/terrain/19/858586/353802.terrain b/public/terrain/19/858586/353802.terrain new file mode 100644 index 000000000..25d95f444 Binary files /dev/null and b/public/terrain/19/858586/353802.terrain differ diff --git a/public/terrain/19/858586/353803.terrain b/public/terrain/19/858586/353803.terrain new file mode 100644 index 000000000..cfa0b3788 Binary files /dev/null and b/public/terrain/19/858586/353803.terrain differ diff --git a/public/terrain/19/858586/353804.terrain b/public/terrain/19/858586/353804.terrain new file mode 100644 index 000000000..8076a3cad Binary files /dev/null and b/public/terrain/19/858586/353804.terrain differ diff --git a/public/terrain/19/858586/353805.terrain b/public/terrain/19/858586/353805.terrain new file mode 100644 index 000000000..18a023ada Binary files /dev/null and b/public/terrain/19/858586/353805.terrain differ diff --git a/public/terrain/19/858586/353806.terrain b/public/terrain/19/858586/353806.terrain new file mode 100644 index 000000000..b5568fcba Binary files /dev/null and b/public/terrain/19/858586/353806.terrain differ diff --git a/public/terrain/19/858586/353807.terrain b/public/terrain/19/858586/353807.terrain new file mode 100644 index 000000000..ddafb98c6 Binary files /dev/null and b/public/terrain/19/858586/353807.terrain differ diff --git a/public/terrain/19/858586/353808.terrain b/public/terrain/19/858586/353808.terrain new file mode 100644 index 000000000..f0d904d1d Binary files /dev/null and b/public/terrain/19/858586/353808.terrain differ diff --git a/public/terrain/19/858586/353809.terrain b/public/terrain/19/858586/353809.terrain new file mode 100644 index 000000000..efa5a7374 Binary files /dev/null and b/public/terrain/19/858586/353809.terrain differ diff --git a/public/terrain/19/858586/353810.terrain b/public/terrain/19/858586/353810.terrain new file mode 100644 index 000000000..853bcd71a Binary files /dev/null and b/public/terrain/19/858586/353810.terrain differ diff --git a/public/terrain/19/858586/353811.terrain b/public/terrain/19/858586/353811.terrain new file mode 100644 index 000000000..737c0f0ea Binary files /dev/null and b/public/terrain/19/858586/353811.terrain differ diff --git a/public/terrain/19/858586/353812.terrain b/public/terrain/19/858586/353812.terrain new file mode 100644 index 000000000..acee07d6d Binary files /dev/null and b/public/terrain/19/858586/353812.terrain differ diff --git a/public/terrain/19/858586/353813.terrain b/public/terrain/19/858586/353813.terrain new file mode 100644 index 000000000..9ffedcac6 Binary files /dev/null and b/public/terrain/19/858586/353813.terrain differ diff --git a/public/terrain/19/858586/353814.terrain b/public/terrain/19/858586/353814.terrain new file mode 100644 index 000000000..cef3ec2df Binary files /dev/null and b/public/terrain/19/858586/353814.terrain differ diff --git a/public/terrain/19/858586/353815.terrain b/public/terrain/19/858586/353815.terrain new file mode 100644 index 000000000..ea2fc916e Binary files /dev/null and b/public/terrain/19/858586/353815.terrain differ diff --git a/public/terrain/19/858586/353816.terrain b/public/terrain/19/858586/353816.terrain new file mode 100644 index 000000000..e43210857 Binary files /dev/null and b/public/terrain/19/858586/353816.terrain differ diff --git a/public/terrain/19/858586/353817.terrain b/public/terrain/19/858586/353817.terrain new file mode 100644 index 000000000..224a4ae29 Binary files /dev/null and b/public/terrain/19/858586/353817.terrain differ diff --git a/public/terrain/19/858586/353818.terrain b/public/terrain/19/858586/353818.terrain new file mode 100644 index 000000000..4594695ff Binary files /dev/null and b/public/terrain/19/858586/353818.terrain differ diff --git a/public/terrain/19/858586/353819.terrain b/public/terrain/19/858586/353819.terrain new file mode 100644 index 000000000..780f67e65 Binary files /dev/null and b/public/terrain/19/858586/353819.terrain differ diff --git a/public/terrain/19/858586/353820.terrain b/public/terrain/19/858586/353820.terrain new file mode 100644 index 000000000..0ef904092 Binary files /dev/null and b/public/terrain/19/858586/353820.terrain differ diff --git a/public/terrain/19/858586/353821.terrain b/public/terrain/19/858586/353821.terrain new file mode 100644 index 000000000..2cce7646c Binary files /dev/null and b/public/terrain/19/858586/353821.terrain differ diff --git a/public/terrain/19/858586/353822.terrain b/public/terrain/19/858586/353822.terrain new file mode 100644 index 000000000..c9d217d0b Binary files /dev/null and b/public/terrain/19/858586/353822.terrain differ diff --git a/public/terrain/19/858586/353823.terrain b/public/terrain/19/858586/353823.terrain new file mode 100644 index 000000000..a85928323 Binary files /dev/null and b/public/terrain/19/858586/353823.terrain differ diff --git a/public/terrain/19/858586/353824.terrain b/public/terrain/19/858586/353824.terrain new file mode 100644 index 000000000..dfec7c577 Binary files /dev/null and b/public/terrain/19/858586/353824.terrain differ diff --git a/public/terrain/19/858586/353825.terrain b/public/terrain/19/858586/353825.terrain new file mode 100644 index 000000000..f46e6d1cd Binary files /dev/null and b/public/terrain/19/858586/353825.terrain differ diff --git a/public/terrain/19/858586/353826.terrain b/public/terrain/19/858586/353826.terrain new file mode 100644 index 000000000..7f017dee8 Binary files /dev/null and b/public/terrain/19/858586/353826.terrain differ diff --git a/public/terrain/19/858586/353827.terrain b/public/terrain/19/858586/353827.terrain new file mode 100644 index 000000000..317bc93b7 Binary files /dev/null and b/public/terrain/19/858586/353827.terrain differ diff --git a/public/terrain/19/858586/353828.terrain b/public/terrain/19/858586/353828.terrain new file mode 100644 index 000000000..568556168 Binary files /dev/null and b/public/terrain/19/858586/353828.terrain differ diff --git a/public/terrain/19/858586/353829.terrain b/public/terrain/19/858586/353829.terrain new file mode 100644 index 000000000..c84d8f396 Binary files /dev/null and b/public/terrain/19/858586/353829.terrain differ diff --git a/public/terrain/19/858586/353830.terrain b/public/terrain/19/858586/353830.terrain new file mode 100644 index 000000000..6d631dda4 Binary files /dev/null and b/public/terrain/19/858586/353830.terrain differ diff --git a/public/terrain/19/858586/353831.terrain b/public/terrain/19/858586/353831.terrain new file mode 100644 index 000000000..3e0ae2670 Binary files /dev/null and b/public/terrain/19/858586/353831.terrain differ diff --git a/public/terrain/19/858586/353832.terrain b/public/terrain/19/858586/353832.terrain new file mode 100644 index 000000000..5a888a57e Binary files /dev/null and b/public/terrain/19/858586/353832.terrain differ diff --git a/public/terrain/19/858586/353833.terrain b/public/terrain/19/858586/353833.terrain new file mode 100644 index 000000000..f43b6f740 Binary files /dev/null and b/public/terrain/19/858586/353833.terrain differ diff --git a/public/terrain/19/858586/353834.terrain b/public/terrain/19/858586/353834.terrain new file mode 100644 index 000000000..540b0fd8b Binary files /dev/null and b/public/terrain/19/858586/353834.terrain differ diff --git a/public/terrain/19/858586/353835.terrain b/public/terrain/19/858586/353835.terrain new file mode 100644 index 000000000..097182446 Binary files /dev/null and b/public/terrain/19/858586/353835.terrain differ diff --git a/public/terrain/19/858586/353836.terrain b/public/terrain/19/858586/353836.terrain new file mode 100644 index 000000000..47539b9d7 Binary files /dev/null and b/public/terrain/19/858586/353836.terrain differ diff --git a/public/terrain/19/858586/353837.terrain b/public/terrain/19/858586/353837.terrain new file mode 100644 index 000000000..4a6591d4a Binary files /dev/null and b/public/terrain/19/858586/353837.terrain differ diff --git a/public/terrain/19/858586/353838.terrain b/public/terrain/19/858586/353838.terrain new file mode 100644 index 000000000..93a818f6b Binary files /dev/null and b/public/terrain/19/858586/353838.terrain differ diff --git a/public/terrain/19/858586/353839.terrain b/public/terrain/19/858586/353839.terrain new file mode 100644 index 000000000..50b9d54d2 Binary files /dev/null and b/public/terrain/19/858586/353839.terrain differ diff --git a/public/terrain/19/858586/353840.terrain b/public/terrain/19/858586/353840.terrain new file mode 100644 index 000000000..9db37881e Binary files /dev/null and b/public/terrain/19/858586/353840.terrain differ diff --git a/public/terrain/19/858586/353841.terrain b/public/terrain/19/858586/353841.terrain new file mode 100644 index 000000000..cc3f74c62 Binary files /dev/null and b/public/terrain/19/858586/353841.terrain differ diff --git a/public/terrain/19/858586/353842.terrain b/public/terrain/19/858586/353842.terrain new file mode 100644 index 000000000..9bc08552a Binary files /dev/null and b/public/terrain/19/858586/353842.terrain differ diff --git a/public/terrain/19/858586/353843.terrain b/public/terrain/19/858586/353843.terrain new file mode 100644 index 000000000..f7b689cb9 Binary files /dev/null and b/public/terrain/19/858586/353843.terrain differ diff --git a/public/terrain/19/858586/353844.terrain b/public/terrain/19/858586/353844.terrain new file mode 100644 index 000000000..911d4d890 Binary files /dev/null and b/public/terrain/19/858586/353844.terrain differ diff --git a/public/terrain/19/858586/353845.terrain b/public/terrain/19/858586/353845.terrain new file mode 100644 index 000000000..a4926faf8 Binary files /dev/null and b/public/terrain/19/858586/353845.terrain differ diff --git a/public/terrain/19/858586/353846.terrain b/public/terrain/19/858586/353846.terrain new file mode 100644 index 000000000..d93f09c04 Binary files /dev/null and b/public/terrain/19/858586/353846.terrain differ diff --git a/public/terrain/19/858586/353847.terrain b/public/terrain/19/858586/353847.terrain new file mode 100644 index 000000000..535e9e7cc Binary files /dev/null and b/public/terrain/19/858586/353847.terrain differ diff --git a/public/terrain/19/858586/353848.terrain b/public/terrain/19/858586/353848.terrain new file mode 100644 index 000000000..bab87e929 Binary files /dev/null and b/public/terrain/19/858586/353848.terrain differ diff --git a/public/terrain/19/858586/353849.terrain b/public/terrain/19/858586/353849.terrain new file mode 100644 index 000000000..3d97141f4 Binary files /dev/null and b/public/terrain/19/858586/353849.terrain differ diff --git a/public/terrain/19/858586/353850.terrain b/public/terrain/19/858586/353850.terrain new file mode 100644 index 000000000..1dc59d02b Binary files /dev/null and b/public/terrain/19/858586/353850.terrain differ diff --git a/public/terrain/19/858586/353851.terrain b/public/terrain/19/858586/353851.terrain new file mode 100644 index 000000000..1136a5d87 Binary files /dev/null and b/public/terrain/19/858586/353851.terrain differ diff --git a/public/terrain/19/858586/353852.terrain b/public/terrain/19/858586/353852.terrain new file mode 100644 index 000000000..55f062ae0 Binary files /dev/null and b/public/terrain/19/858586/353852.terrain differ diff --git a/public/terrain/19/858586/353853.terrain b/public/terrain/19/858586/353853.terrain new file mode 100644 index 000000000..ce056d0aa Binary files /dev/null and b/public/terrain/19/858586/353853.terrain differ diff --git a/public/terrain/19/858586/353854.terrain b/public/terrain/19/858586/353854.terrain new file mode 100644 index 000000000..a578eb407 Binary files /dev/null and b/public/terrain/19/858586/353854.terrain differ diff --git a/public/terrain/19/858586/353855.terrain b/public/terrain/19/858586/353855.terrain new file mode 100644 index 000000000..0cb0d975b Binary files /dev/null and b/public/terrain/19/858586/353855.terrain differ diff --git a/public/terrain/19/858586/353856.terrain b/public/terrain/19/858586/353856.terrain new file mode 100644 index 000000000..9ac397a7a Binary files /dev/null and b/public/terrain/19/858586/353856.terrain differ diff --git a/public/terrain/19/858586/353857.terrain b/public/terrain/19/858586/353857.terrain new file mode 100644 index 000000000..f5241580d Binary files /dev/null and b/public/terrain/19/858586/353857.terrain differ diff --git a/public/terrain/19/858586/353858.terrain b/public/terrain/19/858586/353858.terrain new file mode 100644 index 000000000..7c079d6be Binary files /dev/null and b/public/terrain/19/858586/353858.terrain differ diff --git a/public/terrain/19/858586/353859.terrain b/public/terrain/19/858586/353859.terrain new file mode 100644 index 000000000..002bf1439 Binary files /dev/null and b/public/terrain/19/858586/353859.terrain differ diff --git a/public/terrain/19/858586/353860.terrain b/public/terrain/19/858586/353860.terrain new file mode 100644 index 000000000..a03074148 Binary files /dev/null and b/public/terrain/19/858586/353860.terrain differ diff --git a/public/terrain/19/858586/353861.terrain b/public/terrain/19/858586/353861.terrain new file mode 100644 index 000000000..ae154d477 Binary files /dev/null and b/public/terrain/19/858586/353861.terrain differ diff --git a/public/terrain/19/858586/353862.terrain b/public/terrain/19/858586/353862.terrain new file mode 100644 index 000000000..920b9911c Binary files /dev/null and b/public/terrain/19/858586/353862.terrain differ diff --git a/public/terrain/19/858586/353863.terrain b/public/terrain/19/858586/353863.terrain new file mode 100644 index 000000000..22c0ecc8e Binary files /dev/null and b/public/terrain/19/858586/353863.terrain differ diff --git a/public/terrain/19/858586/353864.terrain b/public/terrain/19/858586/353864.terrain new file mode 100644 index 000000000..ad7973543 Binary files /dev/null and b/public/terrain/19/858586/353864.terrain differ diff --git a/public/terrain/19/858586/353865.terrain b/public/terrain/19/858586/353865.terrain new file mode 100644 index 000000000..b85e3b9fd Binary files /dev/null and b/public/terrain/19/858586/353865.terrain differ diff --git a/public/terrain/19/858586/353866.terrain b/public/terrain/19/858586/353866.terrain new file mode 100644 index 000000000..e1b12f63a Binary files /dev/null and b/public/terrain/19/858586/353866.terrain differ diff --git a/public/terrain/19/858586/353867.terrain b/public/terrain/19/858586/353867.terrain new file mode 100644 index 000000000..a5a69b864 Binary files /dev/null and b/public/terrain/19/858586/353867.terrain differ diff --git a/public/terrain/19/858586/353868.terrain b/public/terrain/19/858586/353868.terrain new file mode 100644 index 000000000..5e747e627 Binary files /dev/null and b/public/terrain/19/858586/353868.terrain differ diff --git a/public/terrain/19/858586/353869.terrain b/public/terrain/19/858586/353869.terrain new file mode 100644 index 000000000..017eb6e66 Binary files /dev/null and b/public/terrain/19/858586/353869.terrain differ diff --git a/public/terrain/19/858586/353870.terrain b/public/terrain/19/858586/353870.terrain new file mode 100644 index 000000000..cc7e39beb Binary files /dev/null and b/public/terrain/19/858586/353870.terrain differ diff --git a/public/terrain/19/858586/353871.terrain b/public/terrain/19/858586/353871.terrain new file mode 100644 index 000000000..76fec41c6 Binary files /dev/null and b/public/terrain/19/858586/353871.terrain differ diff --git a/public/terrain/19/858586/353872.terrain b/public/terrain/19/858586/353872.terrain new file mode 100644 index 000000000..0d2dc13b5 Binary files /dev/null and b/public/terrain/19/858586/353872.terrain differ diff --git a/public/terrain/19/858586/353873.terrain b/public/terrain/19/858586/353873.terrain new file mode 100644 index 000000000..07d44bb7f Binary files /dev/null and b/public/terrain/19/858586/353873.terrain differ diff --git a/public/terrain/19/858586/353874.terrain b/public/terrain/19/858586/353874.terrain new file mode 100644 index 000000000..5e27a5af0 Binary files /dev/null and b/public/terrain/19/858586/353874.terrain differ diff --git a/public/terrain/19/858586/353875.terrain b/public/terrain/19/858586/353875.terrain new file mode 100644 index 000000000..19146bb5a Binary files /dev/null and b/public/terrain/19/858586/353875.terrain differ diff --git a/public/terrain/19/858586/353876.terrain b/public/terrain/19/858586/353876.terrain new file mode 100644 index 000000000..98e898576 Binary files /dev/null and b/public/terrain/19/858586/353876.terrain differ diff --git a/public/terrain/19/858586/353877.terrain b/public/terrain/19/858586/353877.terrain new file mode 100644 index 000000000..8cc42aba1 Binary files /dev/null and b/public/terrain/19/858586/353877.terrain differ diff --git a/public/terrain/19/858586/353878.terrain b/public/terrain/19/858586/353878.terrain new file mode 100644 index 000000000..ca4f23588 Binary files /dev/null and b/public/terrain/19/858586/353878.terrain differ diff --git a/public/terrain/19/858586/353879.terrain b/public/terrain/19/858586/353879.terrain new file mode 100644 index 000000000..acb7d6aec Binary files /dev/null and b/public/terrain/19/858586/353879.terrain differ diff --git a/public/terrain/19/858586/353880.terrain b/public/terrain/19/858586/353880.terrain new file mode 100644 index 000000000..3a275cfad Binary files /dev/null and b/public/terrain/19/858586/353880.terrain differ diff --git a/public/terrain/19/858586/353881.terrain b/public/terrain/19/858586/353881.terrain new file mode 100644 index 000000000..3da5a6467 Binary files /dev/null and b/public/terrain/19/858586/353881.terrain differ diff --git a/public/terrain/19/858586/353882.terrain b/public/terrain/19/858586/353882.terrain new file mode 100644 index 000000000..246f9b546 Binary files /dev/null and b/public/terrain/19/858586/353882.terrain differ diff --git a/public/terrain/19/858586/353883.terrain b/public/terrain/19/858586/353883.terrain new file mode 100644 index 000000000..3ca3a99fe Binary files /dev/null and b/public/terrain/19/858586/353883.terrain differ diff --git a/public/terrain/19/858586/353884.terrain b/public/terrain/19/858586/353884.terrain new file mode 100644 index 000000000..cecbe4f93 Binary files /dev/null and b/public/terrain/19/858586/353884.terrain differ diff --git a/public/terrain/19/858586/353885.terrain b/public/terrain/19/858586/353885.terrain new file mode 100644 index 000000000..d5966b1fc Binary files /dev/null and b/public/terrain/19/858586/353885.terrain differ diff --git a/public/terrain/19/858586/353886.terrain b/public/terrain/19/858586/353886.terrain new file mode 100644 index 000000000..a5a51a70b Binary files /dev/null and b/public/terrain/19/858586/353886.terrain differ diff --git a/public/terrain/19/858586/353887.terrain b/public/terrain/19/858586/353887.terrain new file mode 100644 index 000000000..931fc5cc0 Binary files /dev/null and b/public/terrain/19/858586/353887.terrain differ diff --git a/public/terrain/19/858586/353888.terrain b/public/terrain/19/858586/353888.terrain new file mode 100644 index 000000000..bbfd7efb0 Binary files /dev/null and b/public/terrain/19/858586/353888.terrain differ diff --git a/public/terrain/19/858586/353889.terrain b/public/terrain/19/858586/353889.terrain new file mode 100644 index 000000000..62a898b46 Binary files /dev/null and b/public/terrain/19/858586/353889.terrain differ diff --git a/public/terrain/19/858586/353890.terrain b/public/terrain/19/858586/353890.terrain new file mode 100644 index 000000000..ab32b58fc Binary files /dev/null and b/public/terrain/19/858586/353890.terrain differ diff --git a/public/terrain/19/858586/353891.terrain b/public/terrain/19/858586/353891.terrain new file mode 100644 index 000000000..d6b3826a2 Binary files /dev/null and b/public/terrain/19/858586/353891.terrain differ diff --git a/public/terrain/19/858586/353892.terrain b/public/terrain/19/858586/353892.terrain new file mode 100644 index 000000000..934b9e97e Binary files /dev/null and b/public/terrain/19/858586/353892.terrain differ diff --git a/public/terrain/19/858586/353893.terrain b/public/terrain/19/858586/353893.terrain new file mode 100644 index 000000000..94475cff0 Binary files /dev/null and b/public/terrain/19/858586/353893.terrain differ diff --git a/public/terrain/19/858586/353894.terrain b/public/terrain/19/858586/353894.terrain new file mode 100644 index 000000000..e88a87d1b Binary files /dev/null and b/public/terrain/19/858586/353894.terrain differ diff --git a/public/terrain/19/858586/353895.terrain b/public/terrain/19/858586/353895.terrain new file mode 100644 index 000000000..db183bc33 Binary files /dev/null and b/public/terrain/19/858586/353895.terrain differ diff --git a/public/terrain/19/858586/353896.terrain b/public/terrain/19/858586/353896.terrain new file mode 100644 index 000000000..a38448993 Binary files /dev/null and b/public/terrain/19/858586/353896.terrain differ diff --git a/public/terrain/19/858586/353897.terrain b/public/terrain/19/858586/353897.terrain new file mode 100644 index 000000000..b8b61300e Binary files /dev/null and b/public/terrain/19/858586/353897.terrain differ diff --git a/public/terrain/19/858586/353898.terrain b/public/terrain/19/858586/353898.terrain new file mode 100644 index 000000000..460bbf51c Binary files /dev/null and b/public/terrain/19/858586/353898.terrain differ diff --git a/public/terrain/19/858586/353899.terrain b/public/terrain/19/858586/353899.terrain new file mode 100644 index 000000000..15396addd Binary files /dev/null and b/public/terrain/19/858586/353899.terrain differ diff --git a/public/terrain/19/858586/353900.terrain b/public/terrain/19/858586/353900.terrain new file mode 100644 index 000000000..cad5b423b Binary files /dev/null and b/public/terrain/19/858586/353900.terrain differ diff --git a/public/terrain/19/858586/353901.terrain b/public/terrain/19/858586/353901.terrain new file mode 100644 index 000000000..7309354e2 Binary files /dev/null and b/public/terrain/19/858586/353901.terrain differ diff --git a/public/terrain/19/858586/353902.terrain b/public/terrain/19/858586/353902.terrain new file mode 100644 index 000000000..e41ff94fb Binary files /dev/null and b/public/terrain/19/858586/353902.terrain differ diff --git a/public/terrain/19/858586/353903.terrain b/public/terrain/19/858586/353903.terrain new file mode 100644 index 000000000..edfc4411e Binary files /dev/null and b/public/terrain/19/858586/353903.terrain differ diff --git a/public/terrain/19/858586/353904.terrain b/public/terrain/19/858586/353904.terrain new file mode 100644 index 000000000..35fc5ae42 Binary files /dev/null and b/public/terrain/19/858586/353904.terrain differ diff --git a/public/terrain/19/858586/353905.terrain b/public/terrain/19/858586/353905.terrain new file mode 100644 index 000000000..e76633856 Binary files /dev/null and b/public/terrain/19/858586/353905.terrain differ diff --git a/public/terrain/19/858586/353906.terrain b/public/terrain/19/858586/353906.terrain new file mode 100644 index 000000000..b0506a5b9 Binary files /dev/null and b/public/terrain/19/858586/353906.terrain differ diff --git a/public/terrain/19/858586/353907.terrain b/public/terrain/19/858586/353907.terrain new file mode 100644 index 000000000..6519cb7af Binary files /dev/null and b/public/terrain/19/858586/353907.terrain differ diff --git a/public/terrain/19/858586/353908.terrain b/public/terrain/19/858586/353908.terrain new file mode 100644 index 000000000..b141b4ce0 Binary files /dev/null and b/public/terrain/19/858586/353908.terrain differ diff --git a/public/terrain/19/858586/353909.terrain b/public/terrain/19/858586/353909.terrain new file mode 100644 index 000000000..83ec044c7 Binary files /dev/null and b/public/terrain/19/858586/353909.terrain differ diff --git a/public/terrain/19/858586/353910.terrain b/public/terrain/19/858586/353910.terrain new file mode 100644 index 000000000..7834bdfe2 Binary files /dev/null and b/public/terrain/19/858586/353910.terrain differ diff --git a/public/terrain/19/858586/353911.terrain b/public/terrain/19/858586/353911.terrain new file mode 100644 index 000000000..724ae82ea Binary files /dev/null and b/public/terrain/19/858586/353911.terrain differ diff --git a/public/terrain/19/858586/353912.terrain b/public/terrain/19/858586/353912.terrain new file mode 100644 index 000000000..5d558e9cf Binary files /dev/null and b/public/terrain/19/858586/353912.terrain differ diff --git a/public/terrain/19/858586/353913.terrain b/public/terrain/19/858586/353913.terrain new file mode 100644 index 000000000..528864778 Binary files /dev/null and b/public/terrain/19/858586/353913.terrain differ diff --git a/public/terrain/19/858586/353914.terrain b/public/terrain/19/858586/353914.terrain new file mode 100644 index 000000000..cfb546784 Binary files /dev/null and b/public/terrain/19/858586/353914.terrain differ diff --git a/public/terrain/19/858586/353915.terrain b/public/terrain/19/858586/353915.terrain new file mode 100644 index 000000000..67fd3995f Binary files /dev/null and b/public/terrain/19/858586/353915.terrain differ diff --git a/public/terrain/19/858586/353916.terrain b/public/terrain/19/858586/353916.terrain new file mode 100644 index 000000000..c30878031 Binary files /dev/null and b/public/terrain/19/858586/353916.terrain differ diff --git a/public/terrain/19/858586/353917.terrain b/public/terrain/19/858586/353917.terrain new file mode 100644 index 000000000..9c1fb1451 Binary files /dev/null and b/public/terrain/19/858586/353917.terrain differ diff --git a/public/terrain/19/858586/353918.terrain b/public/terrain/19/858586/353918.terrain new file mode 100644 index 000000000..cd005555c Binary files /dev/null and b/public/terrain/19/858586/353918.terrain differ diff --git a/public/terrain/19/858586/353919.terrain b/public/terrain/19/858586/353919.terrain new file mode 100644 index 000000000..1caff411c Binary files /dev/null and b/public/terrain/19/858586/353919.terrain differ diff --git a/public/terrain/19/858586/353920.terrain b/public/terrain/19/858586/353920.terrain new file mode 100644 index 000000000..491a25539 Binary files /dev/null and b/public/terrain/19/858586/353920.terrain differ diff --git a/public/terrain/19/858586/353921.terrain b/public/terrain/19/858586/353921.terrain new file mode 100644 index 000000000..65112205d Binary files /dev/null and b/public/terrain/19/858586/353921.terrain differ diff --git a/public/terrain/19/858586/353922.terrain b/public/terrain/19/858586/353922.terrain new file mode 100644 index 000000000..691fa98dc Binary files /dev/null and b/public/terrain/19/858586/353922.terrain differ diff --git a/public/terrain/19/858586/353923.terrain b/public/terrain/19/858586/353923.terrain new file mode 100644 index 000000000..d66ae3343 Binary files /dev/null and b/public/terrain/19/858586/353923.terrain differ diff --git a/public/terrain/19/858586/353924.terrain b/public/terrain/19/858586/353924.terrain new file mode 100644 index 000000000..c3f86ecc2 Binary files /dev/null and b/public/terrain/19/858586/353924.terrain differ diff --git a/public/terrain/19/858586/353925.terrain b/public/terrain/19/858586/353925.terrain new file mode 100644 index 000000000..391ce8975 Binary files /dev/null and b/public/terrain/19/858586/353925.terrain differ diff --git a/public/terrain/19/858586/353926.terrain b/public/terrain/19/858586/353926.terrain new file mode 100644 index 000000000..1c37dde66 Binary files /dev/null and b/public/terrain/19/858586/353926.terrain differ diff --git a/public/terrain/19/858586/353927.terrain b/public/terrain/19/858586/353927.terrain new file mode 100644 index 000000000..b1588afb7 Binary files /dev/null and b/public/terrain/19/858586/353927.terrain differ diff --git a/public/terrain/19/858586/353928.terrain b/public/terrain/19/858586/353928.terrain new file mode 100644 index 000000000..c6681bee7 Binary files /dev/null and b/public/terrain/19/858586/353928.terrain differ diff --git a/public/terrain/19/858586/353929.terrain b/public/terrain/19/858586/353929.terrain new file mode 100644 index 000000000..49dcd6060 Binary files /dev/null and b/public/terrain/19/858586/353929.terrain differ diff --git a/public/terrain/19/858586/353930.terrain b/public/terrain/19/858586/353930.terrain new file mode 100644 index 000000000..2ccfe5827 Binary files /dev/null and b/public/terrain/19/858586/353930.terrain differ diff --git a/public/terrain/19/858586/353931.terrain b/public/terrain/19/858586/353931.terrain new file mode 100644 index 000000000..5bc4c30e8 Binary files /dev/null and b/public/terrain/19/858586/353931.terrain differ diff --git a/public/terrain/19/858586/353932.terrain b/public/terrain/19/858586/353932.terrain new file mode 100644 index 000000000..346a87451 Binary files /dev/null and b/public/terrain/19/858586/353932.terrain differ diff --git a/public/terrain/19/858586/353933.terrain b/public/terrain/19/858586/353933.terrain new file mode 100644 index 000000000..2d3a28b6e Binary files /dev/null and b/public/terrain/19/858586/353933.terrain differ diff --git a/public/terrain/19/858586/353934.terrain b/public/terrain/19/858586/353934.terrain new file mode 100644 index 000000000..074477e4d Binary files /dev/null and b/public/terrain/19/858586/353934.terrain differ diff --git a/public/terrain/19/858586/353935.terrain b/public/terrain/19/858586/353935.terrain new file mode 100644 index 000000000..454ad062a Binary files /dev/null and b/public/terrain/19/858586/353935.terrain differ diff --git a/public/terrain/19/858586/353936.terrain b/public/terrain/19/858586/353936.terrain new file mode 100644 index 000000000..030157a9f Binary files /dev/null and b/public/terrain/19/858586/353936.terrain differ diff --git a/public/terrain/19/858586/353937.terrain b/public/terrain/19/858586/353937.terrain new file mode 100644 index 000000000..97a855d9c Binary files /dev/null and b/public/terrain/19/858586/353937.terrain differ diff --git a/public/terrain/19/858586/353938.terrain b/public/terrain/19/858586/353938.terrain new file mode 100644 index 000000000..2d6485370 Binary files /dev/null and b/public/terrain/19/858586/353938.terrain differ diff --git a/public/terrain/19/858586/353939.terrain b/public/terrain/19/858586/353939.terrain new file mode 100644 index 000000000..477dfda6e Binary files /dev/null and b/public/terrain/19/858586/353939.terrain differ diff --git a/public/terrain/19/858586/353940.terrain b/public/terrain/19/858586/353940.terrain new file mode 100644 index 000000000..f21939ed1 Binary files /dev/null and b/public/terrain/19/858586/353940.terrain differ diff --git a/public/terrain/19/858586/353941.terrain b/public/terrain/19/858586/353941.terrain new file mode 100644 index 000000000..9e88ba62d Binary files /dev/null and b/public/terrain/19/858586/353941.terrain differ diff --git a/public/terrain/19/858586/353942.terrain b/public/terrain/19/858586/353942.terrain new file mode 100644 index 000000000..99196b94e Binary files /dev/null and b/public/terrain/19/858586/353942.terrain differ diff --git a/public/terrain/19/858586/353943.terrain b/public/terrain/19/858586/353943.terrain new file mode 100644 index 000000000..e588c017d Binary files /dev/null and b/public/terrain/19/858586/353943.terrain differ diff --git a/public/terrain/19/858586/353944.terrain b/public/terrain/19/858586/353944.terrain new file mode 100644 index 000000000..f9680e61b Binary files /dev/null and b/public/terrain/19/858586/353944.terrain differ diff --git a/public/terrain/19/858586/353945.terrain b/public/terrain/19/858586/353945.terrain new file mode 100644 index 000000000..ab1a86565 Binary files /dev/null and b/public/terrain/19/858586/353945.terrain differ diff --git a/public/terrain/19/858586/353946.terrain b/public/terrain/19/858586/353946.terrain new file mode 100644 index 000000000..60972f134 Binary files /dev/null and b/public/terrain/19/858586/353946.terrain differ diff --git a/public/terrain/19/858586/353947.terrain b/public/terrain/19/858586/353947.terrain new file mode 100644 index 000000000..ab93880b9 Binary files /dev/null and b/public/terrain/19/858586/353947.terrain differ diff --git a/public/terrain/19/858586/353948.terrain b/public/terrain/19/858586/353948.terrain new file mode 100644 index 000000000..0b5953577 Binary files /dev/null and b/public/terrain/19/858586/353948.terrain differ diff --git a/public/terrain/19/858586/353949.terrain b/public/terrain/19/858586/353949.terrain new file mode 100644 index 000000000..eb7064f59 Binary files /dev/null and b/public/terrain/19/858586/353949.terrain differ diff --git a/public/terrain/19/858586/353950.terrain b/public/terrain/19/858586/353950.terrain new file mode 100644 index 000000000..c45499cc8 Binary files /dev/null and b/public/terrain/19/858586/353950.terrain differ diff --git a/public/terrain/19/858586/353951.terrain b/public/terrain/19/858586/353951.terrain new file mode 100644 index 000000000..662dfec3e Binary files /dev/null and b/public/terrain/19/858586/353951.terrain differ diff --git a/public/terrain/19/858586/353952.terrain b/public/terrain/19/858586/353952.terrain new file mode 100644 index 000000000..b40b8c19a Binary files /dev/null and b/public/terrain/19/858586/353952.terrain differ diff --git a/public/terrain/19/858586/353953.terrain b/public/terrain/19/858586/353953.terrain new file mode 100644 index 000000000..522a33d93 Binary files /dev/null and b/public/terrain/19/858586/353953.terrain differ diff --git a/public/terrain/19/858586/353954.terrain b/public/terrain/19/858586/353954.terrain new file mode 100644 index 000000000..9ccfb113c Binary files /dev/null and b/public/terrain/19/858586/353954.terrain differ diff --git a/public/terrain/19/858586/353955.terrain b/public/terrain/19/858586/353955.terrain new file mode 100644 index 000000000..1da1ea003 Binary files /dev/null and b/public/terrain/19/858586/353955.terrain differ diff --git a/public/terrain/19/858586/353956.terrain b/public/terrain/19/858586/353956.terrain new file mode 100644 index 000000000..d73324494 Binary files /dev/null and b/public/terrain/19/858586/353956.terrain differ diff --git a/public/terrain/19/858586/353957.terrain b/public/terrain/19/858586/353957.terrain new file mode 100644 index 000000000..0c31fe241 Binary files /dev/null and b/public/terrain/19/858586/353957.terrain differ diff --git a/public/terrain/19/858586/353958.terrain b/public/terrain/19/858586/353958.terrain new file mode 100644 index 000000000..510b7c1cb Binary files /dev/null and b/public/terrain/19/858586/353958.terrain differ diff --git a/public/terrain/19/858586/353959.terrain b/public/terrain/19/858586/353959.terrain new file mode 100644 index 000000000..8e1a14f41 Binary files /dev/null and b/public/terrain/19/858586/353959.terrain differ diff --git a/public/terrain/19/858586/353960.terrain b/public/terrain/19/858586/353960.terrain new file mode 100644 index 000000000..267c5de03 Binary files /dev/null and b/public/terrain/19/858586/353960.terrain differ diff --git a/public/terrain/19/858586/353961.terrain b/public/terrain/19/858586/353961.terrain new file mode 100644 index 000000000..0934def03 Binary files /dev/null and b/public/terrain/19/858586/353961.terrain differ diff --git a/public/terrain/19/858586/353962.terrain b/public/terrain/19/858586/353962.terrain new file mode 100644 index 000000000..fed647926 Binary files /dev/null and b/public/terrain/19/858586/353962.terrain differ diff --git a/public/terrain/19/858586/353963.terrain b/public/terrain/19/858586/353963.terrain new file mode 100644 index 000000000..883f563d0 Binary files /dev/null and b/public/terrain/19/858586/353963.terrain differ diff --git a/public/terrain/19/858586/353964.terrain b/public/terrain/19/858586/353964.terrain new file mode 100644 index 000000000..769c0dd0d Binary files /dev/null and b/public/terrain/19/858586/353964.terrain differ diff --git a/public/terrain/19/858586/353965.terrain b/public/terrain/19/858586/353965.terrain new file mode 100644 index 000000000..2975f35e8 Binary files /dev/null and b/public/terrain/19/858586/353965.terrain differ diff --git a/public/terrain/19/858586/353966.terrain b/public/terrain/19/858586/353966.terrain new file mode 100644 index 000000000..e01390f51 Binary files /dev/null and b/public/terrain/19/858586/353966.terrain differ diff --git a/public/terrain/19/858586/353967.terrain b/public/terrain/19/858586/353967.terrain new file mode 100644 index 000000000..9448e828b Binary files /dev/null and b/public/terrain/19/858586/353967.terrain differ diff --git a/public/terrain/19/858586/353968.terrain b/public/terrain/19/858586/353968.terrain new file mode 100644 index 000000000..29edb99e4 Binary files /dev/null and b/public/terrain/19/858586/353968.terrain differ diff --git a/public/terrain/19/858586/353969.terrain b/public/terrain/19/858586/353969.terrain new file mode 100644 index 000000000..0b0151586 Binary files /dev/null and b/public/terrain/19/858586/353969.terrain differ diff --git a/public/terrain/19/858586/353970.terrain b/public/terrain/19/858586/353970.terrain new file mode 100644 index 000000000..e7be0d78f Binary files /dev/null and b/public/terrain/19/858586/353970.terrain differ diff --git a/public/terrain/19/858586/353971.terrain b/public/terrain/19/858586/353971.terrain new file mode 100644 index 000000000..4658f2490 Binary files /dev/null and b/public/terrain/19/858586/353971.terrain differ diff --git a/public/terrain/19/858586/353972.terrain b/public/terrain/19/858586/353972.terrain new file mode 100644 index 000000000..c9b75a34e Binary files /dev/null and b/public/terrain/19/858586/353972.terrain differ diff --git a/public/terrain/19/858586/353973.terrain b/public/terrain/19/858586/353973.terrain new file mode 100644 index 000000000..2f4a6b091 Binary files /dev/null and b/public/terrain/19/858586/353973.terrain differ diff --git a/public/terrain/19/858586/353974.terrain b/public/terrain/19/858586/353974.terrain new file mode 100644 index 000000000..2bfebeab9 Binary files /dev/null and b/public/terrain/19/858586/353974.terrain differ diff --git a/public/terrain/19/858586/353975.terrain b/public/terrain/19/858586/353975.terrain new file mode 100644 index 000000000..0d1e52798 Binary files /dev/null and b/public/terrain/19/858586/353975.terrain differ diff --git a/public/terrain/19/858586/353976.terrain b/public/terrain/19/858586/353976.terrain new file mode 100644 index 000000000..44f52f17b Binary files /dev/null and b/public/terrain/19/858586/353976.terrain differ diff --git a/public/terrain/19/858586/353977.terrain b/public/terrain/19/858586/353977.terrain new file mode 100644 index 000000000..b14ddaab6 Binary files /dev/null and b/public/terrain/19/858586/353977.terrain differ diff --git a/public/terrain/19/858586/353978.terrain b/public/terrain/19/858586/353978.terrain new file mode 100644 index 000000000..2f51037f1 Binary files /dev/null and b/public/terrain/19/858586/353978.terrain differ diff --git a/public/terrain/19/858586/353979.terrain b/public/terrain/19/858586/353979.terrain new file mode 100644 index 000000000..352dc399e Binary files /dev/null and b/public/terrain/19/858586/353979.terrain differ diff --git a/public/terrain/19/858586/353980.terrain b/public/terrain/19/858586/353980.terrain new file mode 100644 index 000000000..519ef1462 Binary files /dev/null and b/public/terrain/19/858586/353980.terrain differ diff --git a/public/terrain/19/858586/353981.terrain b/public/terrain/19/858586/353981.terrain new file mode 100644 index 000000000..e47d47ed4 Binary files /dev/null and b/public/terrain/19/858586/353981.terrain differ diff --git a/public/terrain/19/858586/353982.terrain b/public/terrain/19/858586/353982.terrain new file mode 100644 index 000000000..482dfb4f4 Binary files /dev/null and b/public/terrain/19/858586/353982.terrain differ diff --git a/public/terrain/19/858586/353983.terrain b/public/terrain/19/858586/353983.terrain new file mode 100644 index 000000000..1aae8f03b Binary files /dev/null and b/public/terrain/19/858586/353983.terrain differ diff --git a/public/terrain/19/858586/353984.terrain b/public/terrain/19/858586/353984.terrain new file mode 100644 index 000000000..1ebb59a84 Binary files /dev/null and b/public/terrain/19/858586/353984.terrain differ diff --git a/public/terrain/19/858586/353985.terrain b/public/terrain/19/858586/353985.terrain new file mode 100644 index 000000000..97d298f9c Binary files /dev/null and b/public/terrain/19/858586/353985.terrain differ diff --git a/public/terrain/19/858586/353986.terrain b/public/terrain/19/858586/353986.terrain new file mode 100644 index 000000000..1bd87e2cc Binary files /dev/null and b/public/terrain/19/858586/353986.terrain differ diff --git a/public/terrain/19/858586/353987.terrain b/public/terrain/19/858586/353987.terrain new file mode 100644 index 000000000..3d7a3a654 Binary files /dev/null and b/public/terrain/19/858586/353987.terrain differ diff --git a/public/terrain/19/858586/353988.terrain b/public/terrain/19/858586/353988.terrain new file mode 100644 index 000000000..d771fe025 Binary files /dev/null and b/public/terrain/19/858586/353988.terrain differ diff --git a/public/terrain/19/858586/353989.terrain b/public/terrain/19/858586/353989.terrain new file mode 100644 index 000000000..447da1d90 Binary files /dev/null and b/public/terrain/19/858586/353989.terrain differ diff --git a/public/terrain/19/858586/353990.terrain b/public/terrain/19/858586/353990.terrain new file mode 100644 index 000000000..155ec37fb Binary files /dev/null and b/public/terrain/19/858586/353990.terrain differ diff --git a/public/terrain/19/858586/353991.terrain b/public/terrain/19/858586/353991.terrain new file mode 100644 index 000000000..a2e91f655 Binary files /dev/null and b/public/terrain/19/858586/353991.terrain differ diff --git a/public/terrain/19/858586/353992.terrain b/public/terrain/19/858586/353992.terrain new file mode 100644 index 000000000..2278b2ad6 Binary files /dev/null and b/public/terrain/19/858586/353992.terrain differ diff --git a/public/terrain/19/858586/353993.terrain b/public/terrain/19/858586/353993.terrain new file mode 100644 index 000000000..14c3adbc6 Binary files /dev/null and b/public/terrain/19/858586/353993.terrain differ diff --git a/public/terrain/19/858586/353994.terrain b/public/terrain/19/858586/353994.terrain new file mode 100644 index 000000000..1045a29e9 Binary files /dev/null and b/public/terrain/19/858586/353994.terrain differ diff --git a/public/terrain/19/858586/353995.terrain b/public/terrain/19/858586/353995.terrain new file mode 100644 index 000000000..cfbb10596 Binary files /dev/null and b/public/terrain/19/858586/353995.terrain differ diff --git a/public/terrain/19/858586/353996.terrain b/public/terrain/19/858586/353996.terrain new file mode 100644 index 000000000..85544437d Binary files /dev/null and b/public/terrain/19/858586/353996.terrain differ diff --git a/public/terrain/19/858586/353997.terrain b/public/terrain/19/858586/353997.terrain new file mode 100644 index 000000000..21de82e24 Binary files /dev/null and b/public/terrain/19/858586/353997.terrain differ diff --git a/public/terrain/19/858586/353998.terrain b/public/terrain/19/858586/353998.terrain new file mode 100644 index 000000000..df3e79675 Binary files /dev/null and b/public/terrain/19/858586/353998.terrain differ diff --git a/public/terrain/19/858586/353999.terrain b/public/terrain/19/858586/353999.terrain new file mode 100644 index 000000000..6c4b7f9ef Binary files /dev/null and b/public/terrain/19/858586/353999.terrain differ diff --git a/public/terrain/19/858586/354000.terrain b/public/terrain/19/858586/354000.terrain new file mode 100644 index 000000000..3a7dd7583 Binary files /dev/null and b/public/terrain/19/858586/354000.terrain differ diff --git a/public/terrain/19/858586/354001.terrain b/public/terrain/19/858586/354001.terrain new file mode 100644 index 000000000..bd860cd4f Binary files /dev/null and b/public/terrain/19/858586/354001.terrain differ diff --git a/public/terrain/19/858586/354002.terrain b/public/terrain/19/858586/354002.terrain new file mode 100644 index 000000000..959e06bb4 Binary files /dev/null and b/public/terrain/19/858586/354002.terrain differ diff --git a/public/terrain/19/858586/354003.terrain b/public/terrain/19/858586/354003.terrain new file mode 100644 index 000000000..5d578d476 Binary files /dev/null and b/public/terrain/19/858586/354003.terrain differ diff --git a/public/terrain/19/858586/354004.terrain b/public/terrain/19/858586/354004.terrain new file mode 100644 index 000000000..642e7c6a3 Binary files /dev/null and b/public/terrain/19/858586/354004.terrain differ diff --git a/public/terrain/19/858586/354005.terrain b/public/terrain/19/858586/354005.terrain new file mode 100644 index 000000000..32260a187 Binary files /dev/null and b/public/terrain/19/858586/354005.terrain differ diff --git a/public/terrain/19/858586/354006.terrain b/public/terrain/19/858586/354006.terrain new file mode 100644 index 000000000..9154be19b Binary files /dev/null and b/public/terrain/19/858586/354006.terrain differ diff --git a/public/terrain/19/858586/354007.terrain b/public/terrain/19/858586/354007.terrain new file mode 100644 index 000000000..d720cec3b Binary files /dev/null and b/public/terrain/19/858586/354007.terrain differ diff --git a/public/terrain/19/858586/354008.terrain b/public/terrain/19/858586/354008.terrain new file mode 100644 index 000000000..0948d637f Binary files /dev/null and b/public/terrain/19/858586/354008.terrain differ diff --git a/public/terrain/19/858586/354009.terrain b/public/terrain/19/858586/354009.terrain new file mode 100644 index 000000000..6e86948a7 Binary files /dev/null and b/public/terrain/19/858586/354009.terrain differ diff --git a/public/terrain/19/858586/354010.terrain b/public/terrain/19/858586/354010.terrain new file mode 100644 index 000000000..d1d641cdd Binary files /dev/null and b/public/terrain/19/858586/354010.terrain differ diff --git a/public/terrain/19/858586/354011.terrain b/public/terrain/19/858586/354011.terrain new file mode 100644 index 000000000..f2766d88f Binary files /dev/null and b/public/terrain/19/858586/354011.terrain differ diff --git a/public/terrain/19/858586/354012.terrain b/public/terrain/19/858586/354012.terrain new file mode 100644 index 000000000..16a2029ea Binary files /dev/null and b/public/terrain/19/858586/354012.terrain differ diff --git a/public/terrain/19/858586/354013.terrain b/public/terrain/19/858586/354013.terrain new file mode 100644 index 000000000..cdeba9a43 Binary files /dev/null and b/public/terrain/19/858586/354013.terrain differ diff --git a/public/terrain/19/858586/354014.terrain b/public/terrain/19/858586/354014.terrain new file mode 100644 index 000000000..6923f0af1 Binary files /dev/null and b/public/terrain/19/858586/354014.terrain differ diff --git a/public/terrain/19/858586/354015.terrain b/public/terrain/19/858586/354015.terrain new file mode 100644 index 000000000..1a1b912af Binary files /dev/null and b/public/terrain/19/858586/354015.terrain differ diff --git a/public/terrain/19/858586/354016.terrain b/public/terrain/19/858586/354016.terrain new file mode 100644 index 000000000..232125a0c Binary files /dev/null and b/public/terrain/19/858586/354016.terrain differ diff --git a/public/terrain/19/858586/354017.terrain b/public/terrain/19/858586/354017.terrain new file mode 100644 index 000000000..23cf73878 Binary files /dev/null and b/public/terrain/19/858586/354017.terrain differ diff --git a/public/terrain/19/858586/354018.terrain b/public/terrain/19/858586/354018.terrain new file mode 100644 index 000000000..af0df4c89 Binary files /dev/null and b/public/terrain/19/858586/354018.terrain differ diff --git a/public/terrain/19/858586/354019.terrain b/public/terrain/19/858586/354019.terrain new file mode 100644 index 000000000..0dee91ba6 Binary files /dev/null and b/public/terrain/19/858586/354019.terrain differ diff --git a/public/terrain/19/858586/354020.terrain b/public/terrain/19/858586/354020.terrain new file mode 100644 index 000000000..5b8f848f0 Binary files /dev/null and b/public/terrain/19/858586/354020.terrain differ diff --git a/public/terrain/19/858586/354021.terrain b/public/terrain/19/858586/354021.terrain new file mode 100644 index 000000000..6a63495d7 Binary files /dev/null and b/public/terrain/19/858586/354021.terrain differ diff --git a/public/terrain/19/858586/354022.terrain b/public/terrain/19/858586/354022.terrain new file mode 100644 index 000000000..43061660f Binary files /dev/null and b/public/terrain/19/858586/354022.terrain differ diff --git a/public/terrain/19/858586/354023.terrain b/public/terrain/19/858586/354023.terrain new file mode 100644 index 000000000..383d99693 Binary files /dev/null and b/public/terrain/19/858586/354023.terrain differ diff --git a/public/terrain/19/858586/354024.terrain b/public/terrain/19/858586/354024.terrain new file mode 100644 index 000000000..8c2007d33 Binary files /dev/null and b/public/terrain/19/858586/354024.terrain differ diff --git a/public/terrain/19/858586/354025.terrain b/public/terrain/19/858586/354025.terrain new file mode 100644 index 000000000..c49e49c47 Binary files /dev/null and b/public/terrain/19/858586/354025.terrain differ diff --git a/public/terrain/19/858586/354026.terrain b/public/terrain/19/858586/354026.terrain new file mode 100644 index 000000000..e00e3f4ff Binary files /dev/null and b/public/terrain/19/858586/354026.terrain differ diff --git a/public/terrain/19/858586/354027.terrain b/public/terrain/19/858586/354027.terrain new file mode 100644 index 000000000..2ce0527af Binary files /dev/null and b/public/terrain/19/858586/354027.terrain differ diff --git a/public/terrain/19/858586/354028.terrain b/public/terrain/19/858586/354028.terrain new file mode 100644 index 000000000..657f6c4fe Binary files /dev/null and b/public/terrain/19/858586/354028.terrain differ diff --git a/public/terrain/19/858586/354029.terrain b/public/terrain/19/858586/354029.terrain new file mode 100644 index 000000000..a346b9da4 Binary files /dev/null and b/public/terrain/19/858586/354029.terrain differ diff --git a/public/terrain/19/858586/354030.terrain b/public/terrain/19/858586/354030.terrain new file mode 100644 index 000000000..2e61da9a2 Binary files /dev/null and b/public/terrain/19/858586/354030.terrain differ diff --git a/public/terrain/19/858586/354031.terrain b/public/terrain/19/858586/354031.terrain new file mode 100644 index 000000000..b072cef23 Binary files /dev/null and b/public/terrain/19/858586/354031.terrain differ diff --git a/public/terrain/19/858586/354032.terrain b/public/terrain/19/858586/354032.terrain new file mode 100644 index 000000000..5ca3ab400 Binary files /dev/null and b/public/terrain/19/858586/354032.terrain differ diff --git a/public/terrain/19/858586/354033.terrain b/public/terrain/19/858586/354033.terrain new file mode 100644 index 000000000..918e0c7de Binary files /dev/null and b/public/terrain/19/858586/354033.terrain differ diff --git a/public/terrain/19/858586/354034.terrain b/public/terrain/19/858586/354034.terrain new file mode 100644 index 000000000..0716c75e2 Binary files /dev/null and b/public/terrain/19/858586/354034.terrain differ diff --git a/public/terrain/19/858586/354035.terrain b/public/terrain/19/858586/354035.terrain new file mode 100644 index 000000000..706cd975a Binary files /dev/null and b/public/terrain/19/858586/354035.terrain differ diff --git a/public/terrain/19/858586/354036.terrain b/public/terrain/19/858586/354036.terrain new file mode 100644 index 000000000..017813526 Binary files /dev/null and b/public/terrain/19/858586/354036.terrain differ diff --git a/public/terrain/19/858586/354037.terrain b/public/terrain/19/858586/354037.terrain new file mode 100644 index 000000000..b336e2df8 Binary files /dev/null and b/public/terrain/19/858586/354037.terrain differ diff --git a/public/terrain/19/858586/354038.terrain b/public/terrain/19/858586/354038.terrain new file mode 100644 index 000000000..e91749b06 Binary files /dev/null and b/public/terrain/19/858586/354038.terrain differ diff --git a/public/terrain/19/858586/354039.terrain b/public/terrain/19/858586/354039.terrain new file mode 100644 index 000000000..d7d5c2baf Binary files /dev/null and b/public/terrain/19/858586/354039.terrain differ diff --git a/public/terrain/19/858586/354040.terrain b/public/terrain/19/858586/354040.terrain new file mode 100644 index 000000000..b054ff613 Binary files /dev/null and b/public/terrain/19/858586/354040.terrain differ diff --git a/public/terrain/19/858586/354041.terrain b/public/terrain/19/858586/354041.terrain new file mode 100644 index 000000000..769195671 Binary files /dev/null and b/public/terrain/19/858586/354041.terrain differ diff --git a/public/terrain/19/858586/354042.terrain b/public/terrain/19/858586/354042.terrain new file mode 100644 index 000000000..82a214df3 Binary files /dev/null and b/public/terrain/19/858586/354042.terrain differ diff --git a/public/terrain/19/858586/354043.terrain b/public/terrain/19/858586/354043.terrain new file mode 100644 index 000000000..7e5fc31a7 Binary files /dev/null and b/public/terrain/19/858586/354043.terrain differ diff --git a/public/terrain/19/858586/354044.terrain b/public/terrain/19/858586/354044.terrain new file mode 100644 index 000000000..bb44bf726 Binary files /dev/null and b/public/terrain/19/858586/354044.terrain differ diff --git a/public/terrain/19/858586/354045.terrain b/public/terrain/19/858586/354045.terrain new file mode 100644 index 000000000..321bf8679 Binary files /dev/null and b/public/terrain/19/858586/354045.terrain differ diff --git a/public/terrain/19/858586/354046.terrain b/public/terrain/19/858586/354046.terrain new file mode 100644 index 000000000..785fe147e Binary files /dev/null and b/public/terrain/19/858586/354046.terrain differ diff --git a/public/terrain/19/858586/354047.terrain b/public/terrain/19/858586/354047.terrain new file mode 100644 index 000000000..5d8bc587a Binary files /dev/null and b/public/terrain/19/858586/354047.terrain differ diff --git a/public/terrain/19/858586/354048.terrain b/public/terrain/19/858586/354048.terrain new file mode 100644 index 000000000..b4f2d755d Binary files /dev/null and b/public/terrain/19/858586/354048.terrain differ diff --git a/public/terrain/19/858586/354049.terrain b/public/terrain/19/858586/354049.terrain new file mode 100644 index 000000000..1a1b1a0cb Binary files /dev/null and b/public/terrain/19/858586/354049.terrain differ diff --git a/public/terrain/19/858586/354050.terrain b/public/terrain/19/858586/354050.terrain new file mode 100644 index 000000000..046c710b6 Binary files /dev/null and b/public/terrain/19/858586/354050.terrain differ diff --git a/public/terrain/19/858586/354051.terrain b/public/terrain/19/858586/354051.terrain new file mode 100644 index 000000000..21b8428bb Binary files /dev/null and b/public/terrain/19/858586/354051.terrain differ diff --git a/public/terrain/19/858586/354052.terrain b/public/terrain/19/858586/354052.terrain new file mode 100644 index 000000000..fbc28a862 Binary files /dev/null and b/public/terrain/19/858586/354052.terrain differ diff --git a/public/terrain/19/858586/354053.terrain b/public/terrain/19/858586/354053.terrain new file mode 100644 index 000000000..e119db6fb Binary files /dev/null and b/public/terrain/19/858586/354053.terrain differ diff --git a/public/terrain/19/858586/354054.terrain b/public/terrain/19/858586/354054.terrain new file mode 100644 index 000000000..57fbf6e64 Binary files /dev/null and b/public/terrain/19/858586/354054.terrain differ diff --git a/public/terrain/19/858586/354055.terrain b/public/terrain/19/858586/354055.terrain new file mode 100644 index 000000000..fdb7f24fe Binary files /dev/null and b/public/terrain/19/858586/354055.terrain differ diff --git a/public/terrain/19/858586/354056.terrain b/public/terrain/19/858586/354056.terrain new file mode 100644 index 000000000..b75aa04da Binary files /dev/null and b/public/terrain/19/858586/354056.terrain differ diff --git a/public/terrain/19/858586/354057.terrain b/public/terrain/19/858586/354057.terrain new file mode 100644 index 000000000..51ce826af Binary files /dev/null and b/public/terrain/19/858586/354057.terrain differ diff --git a/public/terrain/19/858586/354058.terrain b/public/terrain/19/858586/354058.terrain new file mode 100644 index 000000000..8c5c02eca Binary files /dev/null and b/public/terrain/19/858586/354058.terrain differ diff --git a/public/terrain/19/858586/354059.terrain b/public/terrain/19/858586/354059.terrain new file mode 100644 index 000000000..986e79036 Binary files /dev/null and b/public/terrain/19/858586/354059.terrain differ diff --git a/public/terrain/19/858587/353743.terrain b/public/terrain/19/858587/353743.terrain new file mode 100644 index 000000000..2707eb9fb Binary files /dev/null and b/public/terrain/19/858587/353743.terrain differ diff --git a/public/terrain/19/858587/353744.terrain b/public/terrain/19/858587/353744.terrain new file mode 100644 index 000000000..7b00ba63a Binary files /dev/null and b/public/terrain/19/858587/353744.terrain differ diff --git a/public/terrain/19/858587/353745.terrain b/public/terrain/19/858587/353745.terrain new file mode 100644 index 000000000..8312135a7 Binary files /dev/null and b/public/terrain/19/858587/353745.terrain differ diff --git a/public/terrain/19/858587/353746.terrain b/public/terrain/19/858587/353746.terrain new file mode 100644 index 000000000..4bc60c34f Binary files /dev/null and b/public/terrain/19/858587/353746.terrain differ diff --git a/public/terrain/19/858587/353747.terrain b/public/terrain/19/858587/353747.terrain new file mode 100644 index 000000000..8bc8b1e5c Binary files /dev/null and b/public/terrain/19/858587/353747.terrain differ diff --git a/public/terrain/19/858587/353748.terrain b/public/terrain/19/858587/353748.terrain new file mode 100644 index 000000000..3f0a839d3 Binary files /dev/null and b/public/terrain/19/858587/353748.terrain differ diff --git a/public/terrain/19/858587/353749.terrain b/public/terrain/19/858587/353749.terrain new file mode 100644 index 000000000..4a7107176 Binary files /dev/null and b/public/terrain/19/858587/353749.terrain differ diff --git a/public/terrain/19/858587/353750.terrain b/public/terrain/19/858587/353750.terrain new file mode 100644 index 000000000..7e942259b Binary files /dev/null and b/public/terrain/19/858587/353750.terrain differ diff --git a/public/terrain/19/858587/353751.terrain b/public/terrain/19/858587/353751.terrain new file mode 100644 index 000000000..acf80f1c9 Binary files /dev/null and b/public/terrain/19/858587/353751.terrain differ diff --git a/public/terrain/19/858587/353752.terrain b/public/terrain/19/858587/353752.terrain new file mode 100644 index 000000000..e95ebb095 Binary files /dev/null and b/public/terrain/19/858587/353752.terrain differ diff --git a/public/terrain/19/858587/353753.terrain b/public/terrain/19/858587/353753.terrain new file mode 100644 index 000000000..bf6855ef2 Binary files /dev/null and b/public/terrain/19/858587/353753.terrain differ diff --git a/public/terrain/19/858587/353754.terrain b/public/terrain/19/858587/353754.terrain new file mode 100644 index 000000000..b2c3e27c8 Binary files /dev/null and b/public/terrain/19/858587/353754.terrain differ diff --git a/public/terrain/19/858587/353755.terrain b/public/terrain/19/858587/353755.terrain new file mode 100644 index 000000000..f5b88d761 Binary files /dev/null and b/public/terrain/19/858587/353755.terrain differ diff --git a/public/terrain/19/858587/353756.terrain b/public/terrain/19/858587/353756.terrain new file mode 100644 index 000000000..9822aed0e Binary files /dev/null and b/public/terrain/19/858587/353756.terrain differ diff --git a/public/terrain/19/858587/353757.terrain b/public/terrain/19/858587/353757.terrain new file mode 100644 index 000000000..462004aa4 Binary files /dev/null and b/public/terrain/19/858587/353757.terrain differ diff --git a/public/terrain/19/858587/353758.terrain b/public/terrain/19/858587/353758.terrain new file mode 100644 index 000000000..fad435d99 Binary files /dev/null and b/public/terrain/19/858587/353758.terrain differ diff --git a/public/terrain/19/858587/353759.terrain b/public/terrain/19/858587/353759.terrain new file mode 100644 index 000000000..c65e3f33c Binary files /dev/null and b/public/terrain/19/858587/353759.terrain differ diff --git a/public/terrain/19/858587/353760.terrain b/public/terrain/19/858587/353760.terrain new file mode 100644 index 000000000..ce2c569a0 Binary files /dev/null and b/public/terrain/19/858587/353760.terrain differ diff --git a/public/terrain/19/858587/353761.terrain b/public/terrain/19/858587/353761.terrain new file mode 100644 index 000000000..ed2e2f8b0 Binary files /dev/null and b/public/terrain/19/858587/353761.terrain differ diff --git a/public/terrain/19/858587/353762.terrain b/public/terrain/19/858587/353762.terrain new file mode 100644 index 000000000..2d8c38a1b Binary files /dev/null and b/public/terrain/19/858587/353762.terrain differ diff --git a/public/terrain/19/858587/353763.terrain b/public/terrain/19/858587/353763.terrain new file mode 100644 index 000000000..fd2a3ef93 Binary files /dev/null and b/public/terrain/19/858587/353763.terrain differ diff --git a/public/terrain/19/858587/353764.terrain b/public/terrain/19/858587/353764.terrain new file mode 100644 index 000000000..a899aaa19 Binary files /dev/null and b/public/terrain/19/858587/353764.terrain differ diff --git a/public/terrain/19/858587/353765.terrain b/public/terrain/19/858587/353765.terrain new file mode 100644 index 000000000..802f08656 Binary files /dev/null and b/public/terrain/19/858587/353765.terrain differ diff --git a/public/terrain/19/858587/353766.terrain b/public/terrain/19/858587/353766.terrain new file mode 100644 index 000000000..a8990d40e Binary files /dev/null and b/public/terrain/19/858587/353766.terrain differ diff --git a/public/terrain/19/858587/353767.terrain b/public/terrain/19/858587/353767.terrain new file mode 100644 index 000000000..631843374 Binary files /dev/null and b/public/terrain/19/858587/353767.terrain differ diff --git a/public/terrain/19/858587/353768.terrain b/public/terrain/19/858587/353768.terrain new file mode 100644 index 000000000..0b07ec1ba Binary files /dev/null and b/public/terrain/19/858587/353768.terrain differ diff --git a/public/terrain/19/858587/353769.terrain b/public/terrain/19/858587/353769.terrain new file mode 100644 index 000000000..b9208c610 Binary files /dev/null and b/public/terrain/19/858587/353769.terrain differ diff --git a/public/terrain/19/858587/353770.terrain b/public/terrain/19/858587/353770.terrain new file mode 100644 index 000000000..be6b29c96 Binary files /dev/null and b/public/terrain/19/858587/353770.terrain differ diff --git a/public/terrain/19/858587/353771.terrain b/public/terrain/19/858587/353771.terrain new file mode 100644 index 000000000..17c944cc4 Binary files /dev/null and b/public/terrain/19/858587/353771.terrain differ diff --git a/public/terrain/19/858587/353772.terrain b/public/terrain/19/858587/353772.terrain new file mode 100644 index 000000000..65091416d Binary files /dev/null and b/public/terrain/19/858587/353772.terrain differ diff --git a/public/terrain/19/858587/353773.terrain b/public/terrain/19/858587/353773.terrain new file mode 100644 index 000000000..57415b15f Binary files /dev/null and b/public/terrain/19/858587/353773.terrain differ diff --git a/public/terrain/19/858587/353774.terrain b/public/terrain/19/858587/353774.terrain new file mode 100644 index 000000000..f9e0b8b9a Binary files /dev/null and b/public/terrain/19/858587/353774.terrain differ diff --git a/public/terrain/19/858587/353775.terrain b/public/terrain/19/858587/353775.terrain new file mode 100644 index 000000000..59de37a64 Binary files /dev/null and b/public/terrain/19/858587/353775.terrain differ diff --git a/public/terrain/19/858587/353776.terrain b/public/terrain/19/858587/353776.terrain new file mode 100644 index 000000000..e9be28914 Binary files /dev/null and b/public/terrain/19/858587/353776.terrain differ diff --git a/public/terrain/19/858587/353777.terrain b/public/terrain/19/858587/353777.terrain new file mode 100644 index 000000000..710eb1786 Binary files /dev/null and b/public/terrain/19/858587/353777.terrain differ diff --git a/public/terrain/19/858587/353778.terrain b/public/terrain/19/858587/353778.terrain new file mode 100644 index 000000000..84e3821f6 Binary files /dev/null and b/public/terrain/19/858587/353778.terrain differ diff --git a/public/terrain/19/858587/353779.terrain b/public/terrain/19/858587/353779.terrain new file mode 100644 index 000000000..aaa2ae94b Binary files /dev/null and b/public/terrain/19/858587/353779.terrain differ diff --git a/public/terrain/19/858587/353780.terrain b/public/terrain/19/858587/353780.terrain new file mode 100644 index 000000000..0208a7b7a Binary files /dev/null and b/public/terrain/19/858587/353780.terrain differ diff --git a/public/terrain/19/858587/353781.terrain b/public/terrain/19/858587/353781.terrain new file mode 100644 index 000000000..fa59216ee Binary files /dev/null and b/public/terrain/19/858587/353781.terrain differ diff --git a/public/terrain/19/858587/353782.terrain b/public/terrain/19/858587/353782.terrain new file mode 100644 index 000000000..364eaed5a Binary files /dev/null and b/public/terrain/19/858587/353782.terrain differ diff --git a/public/terrain/19/858587/353783.terrain b/public/terrain/19/858587/353783.terrain new file mode 100644 index 000000000..fd8c57f93 Binary files /dev/null and b/public/terrain/19/858587/353783.terrain differ diff --git a/public/terrain/19/858587/353784.terrain b/public/terrain/19/858587/353784.terrain new file mode 100644 index 000000000..dd96a0fe7 Binary files /dev/null and b/public/terrain/19/858587/353784.terrain differ diff --git a/public/terrain/19/858587/353785.terrain b/public/terrain/19/858587/353785.terrain new file mode 100644 index 000000000..72091436a Binary files /dev/null and b/public/terrain/19/858587/353785.terrain differ diff --git a/public/terrain/19/858587/353786.terrain b/public/terrain/19/858587/353786.terrain new file mode 100644 index 000000000..282eb7b3d Binary files /dev/null and b/public/terrain/19/858587/353786.terrain differ diff --git a/public/terrain/19/858587/353787.terrain b/public/terrain/19/858587/353787.terrain new file mode 100644 index 000000000..24f62e6a4 Binary files /dev/null and b/public/terrain/19/858587/353787.terrain differ diff --git a/public/terrain/19/858587/353788.terrain b/public/terrain/19/858587/353788.terrain new file mode 100644 index 000000000..2f1844e86 Binary files /dev/null and b/public/terrain/19/858587/353788.terrain differ diff --git a/public/terrain/19/858587/353789.terrain b/public/terrain/19/858587/353789.terrain new file mode 100644 index 000000000..0867898f9 Binary files /dev/null and b/public/terrain/19/858587/353789.terrain differ diff --git a/public/terrain/19/858587/353790.terrain b/public/terrain/19/858587/353790.terrain new file mode 100644 index 000000000..ad0295923 Binary files /dev/null and b/public/terrain/19/858587/353790.terrain differ diff --git a/public/terrain/19/858587/353791.terrain b/public/terrain/19/858587/353791.terrain new file mode 100644 index 000000000..cf7cb5a4b Binary files /dev/null and b/public/terrain/19/858587/353791.terrain differ diff --git a/public/terrain/19/858587/353792.terrain b/public/terrain/19/858587/353792.terrain new file mode 100644 index 000000000..28ad69a09 Binary files /dev/null and b/public/terrain/19/858587/353792.terrain differ diff --git a/public/terrain/19/858587/353793.terrain b/public/terrain/19/858587/353793.terrain new file mode 100644 index 000000000..99260cf14 Binary files /dev/null and b/public/terrain/19/858587/353793.terrain differ diff --git a/public/terrain/19/858587/353794.terrain b/public/terrain/19/858587/353794.terrain new file mode 100644 index 000000000..c3d1fb21b Binary files /dev/null and b/public/terrain/19/858587/353794.terrain differ diff --git a/public/terrain/19/858587/353795.terrain b/public/terrain/19/858587/353795.terrain new file mode 100644 index 000000000..8cb24f10b Binary files /dev/null and b/public/terrain/19/858587/353795.terrain differ diff --git a/public/terrain/19/858587/353796.terrain b/public/terrain/19/858587/353796.terrain new file mode 100644 index 000000000..b1a457a6d Binary files /dev/null and b/public/terrain/19/858587/353796.terrain differ diff --git a/public/terrain/19/858587/353797.terrain b/public/terrain/19/858587/353797.terrain new file mode 100644 index 000000000..64bfe87f3 Binary files /dev/null and b/public/terrain/19/858587/353797.terrain differ diff --git a/public/terrain/19/858587/353798.terrain b/public/terrain/19/858587/353798.terrain new file mode 100644 index 000000000..6c19fa926 Binary files /dev/null and b/public/terrain/19/858587/353798.terrain differ diff --git a/public/terrain/19/858587/353799.terrain b/public/terrain/19/858587/353799.terrain new file mode 100644 index 000000000..32471c152 Binary files /dev/null and b/public/terrain/19/858587/353799.terrain differ diff --git a/public/terrain/19/858587/353800.terrain b/public/terrain/19/858587/353800.terrain new file mode 100644 index 000000000..58958fbaf Binary files /dev/null and b/public/terrain/19/858587/353800.terrain differ diff --git a/public/terrain/19/858587/353801.terrain b/public/terrain/19/858587/353801.terrain new file mode 100644 index 000000000..0b4a12d5b Binary files /dev/null and b/public/terrain/19/858587/353801.terrain differ diff --git a/public/terrain/19/858587/353802.terrain b/public/terrain/19/858587/353802.terrain new file mode 100644 index 000000000..37acb0b56 Binary files /dev/null and b/public/terrain/19/858587/353802.terrain differ diff --git a/public/terrain/19/858587/353803.terrain b/public/terrain/19/858587/353803.terrain new file mode 100644 index 000000000..aa67dd750 Binary files /dev/null and b/public/terrain/19/858587/353803.terrain differ diff --git a/public/terrain/19/858587/353804.terrain b/public/terrain/19/858587/353804.terrain new file mode 100644 index 000000000..9d258d073 Binary files /dev/null and b/public/terrain/19/858587/353804.terrain differ diff --git a/public/terrain/19/858587/353805.terrain b/public/terrain/19/858587/353805.terrain new file mode 100644 index 000000000..5ef64985b Binary files /dev/null and b/public/terrain/19/858587/353805.terrain differ diff --git a/public/terrain/19/858587/353806.terrain b/public/terrain/19/858587/353806.terrain new file mode 100644 index 000000000..229416a68 Binary files /dev/null and b/public/terrain/19/858587/353806.terrain differ diff --git a/public/terrain/19/858587/353807.terrain b/public/terrain/19/858587/353807.terrain new file mode 100644 index 000000000..cc9ba822e Binary files /dev/null and b/public/terrain/19/858587/353807.terrain differ diff --git a/public/terrain/19/858587/353808.terrain b/public/terrain/19/858587/353808.terrain new file mode 100644 index 000000000..c037f909e Binary files /dev/null and b/public/terrain/19/858587/353808.terrain differ diff --git a/public/terrain/19/858587/353809.terrain b/public/terrain/19/858587/353809.terrain new file mode 100644 index 000000000..3871d8f03 Binary files /dev/null and b/public/terrain/19/858587/353809.terrain differ diff --git a/public/terrain/19/858587/353810.terrain b/public/terrain/19/858587/353810.terrain new file mode 100644 index 000000000..6a90d4414 Binary files /dev/null and b/public/terrain/19/858587/353810.terrain differ diff --git a/public/terrain/19/858587/353811.terrain b/public/terrain/19/858587/353811.terrain new file mode 100644 index 000000000..d818741a3 Binary files /dev/null and b/public/terrain/19/858587/353811.terrain differ diff --git a/public/terrain/19/858587/353812.terrain b/public/terrain/19/858587/353812.terrain new file mode 100644 index 000000000..fbe84fe37 Binary files /dev/null and b/public/terrain/19/858587/353812.terrain differ diff --git a/public/terrain/19/858587/353813.terrain b/public/terrain/19/858587/353813.terrain new file mode 100644 index 000000000..2547492a2 Binary files /dev/null and b/public/terrain/19/858587/353813.terrain differ diff --git a/public/terrain/19/858587/353814.terrain b/public/terrain/19/858587/353814.terrain new file mode 100644 index 000000000..103a4abeb Binary files /dev/null and b/public/terrain/19/858587/353814.terrain differ diff --git a/public/terrain/19/858587/353815.terrain b/public/terrain/19/858587/353815.terrain new file mode 100644 index 000000000..dc6d04ec2 Binary files /dev/null and b/public/terrain/19/858587/353815.terrain differ diff --git a/public/terrain/19/858587/353816.terrain b/public/terrain/19/858587/353816.terrain new file mode 100644 index 000000000..2436ef6c6 Binary files /dev/null and b/public/terrain/19/858587/353816.terrain differ diff --git a/public/terrain/19/858587/353817.terrain b/public/terrain/19/858587/353817.terrain new file mode 100644 index 000000000..ac84fddac Binary files /dev/null and b/public/terrain/19/858587/353817.terrain differ diff --git a/public/terrain/19/858587/353818.terrain b/public/terrain/19/858587/353818.terrain new file mode 100644 index 000000000..30c26f758 Binary files /dev/null and b/public/terrain/19/858587/353818.terrain differ diff --git a/public/terrain/19/858587/353819.terrain b/public/terrain/19/858587/353819.terrain new file mode 100644 index 000000000..af73d3951 Binary files /dev/null and b/public/terrain/19/858587/353819.terrain differ diff --git a/public/terrain/19/858587/353820.terrain b/public/terrain/19/858587/353820.terrain new file mode 100644 index 000000000..ce3bac582 Binary files /dev/null and b/public/terrain/19/858587/353820.terrain differ diff --git a/public/terrain/19/858587/353821.terrain b/public/terrain/19/858587/353821.terrain new file mode 100644 index 000000000..05e217949 Binary files /dev/null and b/public/terrain/19/858587/353821.terrain differ diff --git a/public/terrain/19/858587/353822.terrain b/public/terrain/19/858587/353822.terrain new file mode 100644 index 000000000..9d9cb538b Binary files /dev/null and b/public/terrain/19/858587/353822.terrain differ diff --git a/public/terrain/19/858587/353823.terrain b/public/terrain/19/858587/353823.terrain new file mode 100644 index 000000000..221c5537d Binary files /dev/null and b/public/terrain/19/858587/353823.terrain differ diff --git a/public/terrain/19/858587/353824.terrain b/public/terrain/19/858587/353824.terrain new file mode 100644 index 000000000..bace30c53 Binary files /dev/null and b/public/terrain/19/858587/353824.terrain differ diff --git a/public/terrain/19/858587/353825.terrain b/public/terrain/19/858587/353825.terrain new file mode 100644 index 000000000..2c496d6d9 Binary files /dev/null and b/public/terrain/19/858587/353825.terrain differ diff --git a/public/terrain/19/858587/353826.terrain b/public/terrain/19/858587/353826.terrain new file mode 100644 index 000000000..5df1b64bc Binary files /dev/null and b/public/terrain/19/858587/353826.terrain differ diff --git a/public/terrain/19/858587/353827.terrain b/public/terrain/19/858587/353827.terrain new file mode 100644 index 000000000..d544653ad Binary files /dev/null and b/public/terrain/19/858587/353827.terrain differ diff --git a/public/terrain/19/858587/353828.terrain b/public/terrain/19/858587/353828.terrain new file mode 100644 index 000000000..1ab1172e4 Binary files /dev/null and b/public/terrain/19/858587/353828.terrain differ diff --git a/public/terrain/19/858587/353829.terrain b/public/terrain/19/858587/353829.terrain new file mode 100644 index 000000000..1ed96e236 Binary files /dev/null and b/public/terrain/19/858587/353829.terrain differ diff --git a/public/terrain/19/858587/353830.terrain b/public/terrain/19/858587/353830.terrain new file mode 100644 index 000000000..743472ebf Binary files /dev/null and b/public/terrain/19/858587/353830.terrain differ diff --git a/public/terrain/19/858587/353831.terrain b/public/terrain/19/858587/353831.terrain new file mode 100644 index 000000000..82025fcfb Binary files /dev/null and b/public/terrain/19/858587/353831.terrain differ diff --git a/public/terrain/19/858587/353832.terrain b/public/terrain/19/858587/353832.terrain new file mode 100644 index 000000000..718a71513 Binary files /dev/null and b/public/terrain/19/858587/353832.terrain differ diff --git a/public/terrain/19/858587/353833.terrain b/public/terrain/19/858587/353833.terrain new file mode 100644 index 000000000..37535d1a0 Binary files /dev/null and b/public/terrain/19/858587/353833.terrain differ diff --git a/public/terrain/19/858587/353834.terrain b/public/terrain/19/858587/353834.terrain new file mode 100644 index 000000000..e63b449e7 Binary files /dev/null and b/public/terrain/19/858587/353834.terrain differ diff --git a/public/terrain/19/858587/353835.terrain b/public/terrain/19/858587/353835.terrain new file mode 100644 index 000000000..2f4fa50a3 Binary files /dev/null and b/public/terrain/19/858587/353835.terrain differ diff --git a/public/terrain/19/858587/353836.terrain b/public/terrain/19/858587/353836.terrain new file mode 100644 index 000000000..290e7487b Binary files /dev/null and b/public/terrain/19/858587/353836.terrain differ diff --git a/public/terrain/19/858587/353837.terrain b/public/terrain/19/858587/353837.terrain new file mode 100644 index 000000000..2f761ed48 Binary files /dev/null and b/public/terrain/19/858587/353837.terrain differ diff --git a/public/terrain/19/858587/353838.terrain b/public/terrain/19/858587/353838.terrain new file mode 100644 index 000000000..beebd025b Binary files /dev/null and b/public/terrain/19/858587/353838.terrain differ diff --git a/public/terrain/19/858587/353839.terrain b/public/terrain/19/858587/353839.terrain new file mode 100644 index 000000000..106b9caa1 Binary files /dev/null and b/public/terrain/19/858587/353839.terrain differ diff --git a/public/terrain/19/858587/353840.terrain b/public/terrain/19/858587/353840.terrain new file mode 100644 index 000000000..d6b12c197 Binary files /dev/null and b/public/terrain/19/858587/353840.terrain differ diff --git a/public/terrain/19/858587/353841.terrain b/public/terrain/19/858587/353841.terrain new file mode 100644 index 000000000..19b029047 Binary files /dev/null and b/public/terrain/19/858587/353841.terrain differ diff --git a/public/terrain/19/858587/353842.terrain b/public/terrain/19/858587/353842.terrain new file mode 100644 index 000000000..a79cd5509 Binary files /dev/null and b/public/terrain/19/858587/353842.terrain differ diff --git a/public/terrain/19/858587/353843.terrain b/public/terrain/19/858587/353843.terrain new file mode 100644 index 000000000..73836e3cc Binary files /dev/null and b/public/terrain/19/858587/353843.terrain differ diff --git a/public/terrain/19/858587/353844.terrain b/public/terrain/19/858587/353844.terrain new file mode 100644 index 000000000..de3fa1636 Binary files /dev/null and b/public/terrain/19/858587/353844.terrain differ diff --git a/public/terrain/19/858587/353845.terrain b/public/terrain/19/858587/353845.terrain new file mode 100644 index 000000000..997a6cd15 Binary files /dev/null and b/public/terrain/19/858587/353845.terrain differ diff --git a/public/terrain/19/858587/353846.terrain b/public/terrain/19/858587/353846.terrain new file mode 100644 index 000000000..83e42982b Binary files /dev/null and b/public/terrain/19/858587/353846.terrain differ diff --git a/public/terrain/19/858587/353847.terrain b/public/terrain/19/858587/353847.terrain new file mode 100644 index 000000000..68dfb439b Binary files /dev/null and b/public/terrain/19/858587/353847.terrain differ diff --git a/public/terrain/19/858587/353848.terrain b/public/terrain/19/858587/353848.terrain new file mode 100644 index 000000000..69027848e Binary files /dev/null and b/public/terrain/19/858587/353848.terrain differ diff --git a/public/terrain/19/858587/353849.terrain b/public/terrain/19/858587/353849.terrain new file mode 100644 index 000000000..5fd0f1a94 Binary files /dev/null and b/public/terrain/19/858587/353849.terrain differ diff --git a/public/terrain/19/858587/353850.terrain b/public/terrain/19/858587/353850.terrain new file mode 100644 index 000000000..4ced677dd Binary files /dev/null and b/public/terrain/19/858587/353850.terrain differ diff --git a/public/terrain/19/858587/353851.terrain b/public/terrain/19/858587/353851.terrain new file mode 100644 index 000000000..955e1eabf Binary files /dev/null and b/public/terrain/19/858587/353851.terrain differ diff --git a/public/terrain/19/858587/353852.terrain b/public/terrain/19/858587/353852.terrain new file mode 100644 index 000000000..888e74dbf Binary files /dev/null and b/public/terrain/19/858587/353852.terrain differ diff --git a/public/terrain/19/858587/353853.terrain b/public/terrain/19/858587/353853.terrain new file mode 100644 index 000000000..300cf408b Binary files /dev/null and b/public/terrain/19/858587/353853.terrain differ diff --git a/public/terrain/19/858587/353854.terrain b/public/terrain/19/858587/353854.terrain new file mode 100644 index 000000000..cfd00a4f3 Binary files /dev/null and b/public/terrain/19/858587/353854.terrain differ diff --git a/public/terrain/19/858587/353855.terrain b/public/terrain/19/858587/353855.terrain new file mode 100644 index 000000000..03ba6b61a Binary files /dev/null and b/public/terrain/19/858587/353855.terrain differ diff --git a/public/terrain/19/858587/353856.terrain b/public/terrain/19/858587/353856.terrain new file mode 100644 index 000000000..c1373b6bb Binary files /dev/null and b/public/terrain/19/858587/353856.terrain differ diff --git a/public/terrain/19/858587/353857.terrain b/public/terrain/19/858587/353857.terrain new file mode 100644 index 000000000..cb31b9a1c Binary files /dev/null and b/public/terrain/19/858587/353857.terrain differ diff --git a/public/terrain/19/858587/353858.terrain b/public/terrain/19/858587/353858.terrain new file mode 100644 index 000000000..69ea0be48 Binary files /dev/null and b/public/terrain/19/858587/353858.terrain differ diff --git a/public/terrain/19/858587/353859.terrain b/public/terrain/19/858587/353859.terrain new file mode 100644 index 000000000..5c8e545cf Binary files /dev/null and b/public/terrain/19/858587/353859.terrain differ diff --git a/public/terrain/19/858587/353860.terrain b/public/terrain/19/858587/353860.terrain new file mode 100644 index 000000000..87a35e806 Binary files /dev/null and b/public/terrain/19/858587/353860.terrain differ diff --git a/public/terrain/19/858587/353861.terrain b/public/terrain/19/858587/353861.terrain new file mode 100644 index 000000000..ee37817e7 Binary files /dev/null and b/public/terrain/19/858587/353861.terrain differ diff --git a/public/terrain/19/858587/353862.terrain b/public/terrain/19/858587/353862.terrain new file mode 100644 index 000000000..c370a094d Binary files /dev/null and b/public/terrain/19/858587/353862.terrain differ diff --git a/public/terrain/19/858587/353863.terrain b/public/terrain/19/858587/353863.terrain new file mode 100644 index 000000000..816322ed4 Binary files /dev/null and b/public/terrain/19/858587/353863.terrain differ diff --git a/public/terrain/19/858587/353864.terrain b/public/terrain/19/858587/353864.terrain new file mode 100644 index 000000000..3a38a264e Binary files /dev/null and b/public/terrain/19/858587/353864.terrain differ diff --git a/public/terrain/19/858587/353865.terrain b/public/terrain/19/858587/353865.terrain new file mode 100644 index 000000000..32e16c10c Binary files /dev/null and b/public/terrain/19/858587/353865.terrain differ diff --git a/public/terrain/19/858587/353866.terrain b/public/terrain/19/858587/353866.terrain new file mode 100644 index 000000000..dc0dfb611 Binary files /dev/null and b/public/terrain/19/858587/353866.terrain differ diff --git a/public/terrain/19/858587/353867.terrain b/public/terrain/19/858587/353867.terrain new file mode 100644 index 000000000..880a56533 Binary files /dev/null and b/public/terrain/19/858587/353867.terrain differ diff --git a/public/terrain/19/858587/353868.terrain b/public/terrain/19/858587/353868.terrain new file mode 100644 index 000000000..5458902b7 Binary files /dev/null and b/public/terrain/19/858587/353868.terrain differ diff --git a/public/terrain/19/858587/353869.terrain b/public/terrain/19/858587/353869.terrain new file mode 100644 index 000000000..d23923490 Binary files /dev/null and b/public/terrain/19/858587/353869.terrain differ diff --git a/public/terrain/19/858587/353870.terrain b/public/terrain/19/858587/353870.terrain new file mode 100644 index 000000000..e5d3e33d5 Binary files /dev/null and b/public/terrain/19/858587/353870.terrain differ diff --git a/public/terrain/19/858587/353871.terrain b/public/terrain/19/858587/353871.terrain new file mode 100644 index 000000000..20feb90a5 Binary files /dev/null and b/public/terrain/19/858587/353871.terrain differ diff --git a/public/terrain/19/858587/353872.terrain b/public/terrain/19/858587/353872.terrain new file mode 100644 index 000000000..6ef3bf459 Binary files /dev/null and b/public/terrain/19/858587/353872.terrain differ diff --git a/public/terrain/19/858587/353873.terrain b/public/terrain/19/858587/353873.terrain new file mode 100644 index 000000000..3138f392a Binary files /dev/null and b/public/terrain/19/858587/353873.terrain differ diff --git a/public/terrain/19/858587/353874.terrain b/public/terrain/19/858587/353874.terrain new file mode 100644 index 000000000..7ec21bb1f Binary files /dev/null and b/public/terrain/19/858587/353874.terrain differ diff --git a/public/terrain/19/858587/353875.terrain b/public/terrain/19/858587/353875.terrain new file mode 100644 index 000000000..d7bbb8e9f Binary files /dev/null and b/public/terrain/19/858587/353875.terrain differ diff --git a/public/terrain/19/858587/353876.terrain b/public/terrain/19/858587/353876.terrain new file mode 100644 index 000000000..c977ed289 Binary files /dev/null and b/public/terrain/19/858587/353876.terrain differ diff --git a/public/terrain/19/858587/353877.terrain b/public/terrain/19/858587/353877.terrain new file mode 100644 index 000000000..69ec00147 Binary files /dev/null and b/public/terrain/19/858587/353877.terrain differ diff --git a/public/terrain/19/858587/353878.terrain b/public/terrain/19/858587/353878.terrain new file mode 100644 index 000000000..a4809b603 Binary files /dev/null and b/public/terrain/19/858587/353878.terrain differ diff --git a/public/terrain/19/858587/353879.terrain b/public/terrain/19/858587/353879.terrain new file mode 100644 index 000000000..2dc713eb6 Binary files /dev/null and b/public/terrain/19/858587/353879.terrain differ diff --git a/public/terrain/19/858587/353880.terrain b/public/terrain/19/858587/353880.terrain new file mode 100644 index 000000000..33ca7b90c Binary files /dev/null and b/public/terrain/19/858587/353880.terrain differ diff --git a/public/terrain/19/858587/353881.terrain b/public/terrain/19/858587/353881.terrain new file mode 100644 index 000000000..9c75d7d7b Binary files /dev/null and b/public/terrain/19/858587/353881.terrain differ diff --git a/public/terrain/19/858587/353882.terrain b/public/terrain/19/858587/353882.terrain new file mode 100644 index 000000000..c67463f17 Binary files /dev/null and b/public/terrain/19/858587/353882.terrain differ diff --git a/public/terrain/19/858587/353883.terrain b/public/terrain/19/858587/353883.terrain new file mode 100644 index 000000000..30232e49a Binary files /dev/null and b/public/terrain/19/858587/353883.terrain differ diff --git a/public/terrain/19/858587/353884.terrain b/public/terrain/19/858587/353884.terrain new file mode 100644 index 000000000..037fe7451 Binary files /dev/null and b/public/terrain/19/858587/353884.terrain differ diff --git a/public/terrain/19/858587/353885.terrain b/public/terrain/19/858587/353885.terrain new file mode 100644 index 000000000..65f258ee5 Binary files /dev/null and b/public/terrain/19/858587/353885.terrain differ diff --git a/public/terrain/19/858587/353886.terrain b/public/terrain/19/858587/353886.terrain new file mode 100644 index 000000000..1dc9ed6e7 Binary files /dev/null and b/public/terrain/19/858587/353886.terrain differ diff --git a/public/terrain/19/858587/353887.terrain b/public/terrain/19/858587/353887.terrain new file mode 100644 index 000000000..e173014bb Binary files /dev/null and b/public/terrain/19/858587/353887.terrain differ diff --git a/public/terrain/19/858587/353888.terrain b/public/terrain/19/858587/353888.terrain new file mode 100644 index 000000000..80e38cb39 Binary files /dev/null and b/public/terrain/19/858587/353888.terrain differ diff --git a/public/terrain/19/858587/353889.terrain b/public/terrain/19/858587/353889.terrain new file mode 100644 index 000000000..2be674188 Binary files /dev/null and b/public/terrain/19/858587/353889.terrain differ diff --git a/public/terrain/19/858587/353890.terrain b/public/terrain/19/858587/353890.terrain new file mode 100644 index 000000000..f88ad7969 Binary files /dev/null and b/public/terrain/19/858587/353890.terrain differ diff --git a/public/terrain/19/858587/353891.terrain b/public/terrain/19/858587/353891.terrain new file mode 100644 index 000000000..46cdfc067 Binary files /dev/null and b/public/terrain/19/858587/353891.terrain differ diff --git a/public/terrain/19/858587/353892.terrain b/public/terrain/19/858587/353892.terrain new file mode 100644 index 000000000..742e8d7f8 Binary files /dev/null and b/public/terrain/19/858587/353892.terrain differ diff --git a/public/terrain/19/858587/353893.terrain b/public/terrain/19/858587/353893.terrain new file mode 100644 index 000000000..ba3d313fe Binary files /dev/null and b/public/terrain/19/858587/353893.terrain differ diff --git a/public/terrain/19/858587/353894.terrain b/public/terrain/19/858587/353894.terrain new file mode 100644 index 000000000..945295121 Binary files /dev/null and b/public/terrain/19/858587/353894.terrain differ diff --git a/public/terrain/19/858587/353895.terrain b/public/terrain/19/858587/353895.terrain new file mode 100644 index 000000000..c318001d9 Binary files /dev/null and b/public/terrain/19/858587/353895.terrain differ diff --git a/public/terrain/19/858587/353896.terrain b/public/terrain/19/858587/353896.terrain new file mode 100644 index 000000000..21d3f0fb1 Binary files /dev/null and b/public/terrain/19/858587/353896.terrain differ diff --git a/public/terrain/19/858587/353897.terrain b/public/terrain/19/858587/353897.terrain new file mode 100644 index 000000000..e79455cd6 Binary files /dev/null and b/public/terrain/19/858587/353897.terrain differ diff --git a/public/terrain/19/858587/353898.terrain b/public/terrain/19/858587/353898.terrain new file mode 100644 index 000000000..ca54bf8aa Binary files /dev/null and b/public/terrain/19/858587/353898.terrain differ diff --git a/public/terrain/19/858587/353899.terrain b/public/terrain/19/858587/353899.terrain new file mode 100644 index 000000000..4eeecb0ad Binary files /dev/null and b/public/terrain/19/858587/353899.terrain differ diff --git a/public/terrain/19/858587/353900.terrain b/public/terrain/19/858587/353900.terrain new file mode 100644 index 000000000..67bc4d2e9 Binary files /dev/null and b/public/terrain/19/858587/353900.terrain differ diff --git a/public/terrain/19/858587/353901.terrain b/public/terrain/19/858587/353901.terrain new file mode 100644 index 000000000..6f6a2f981 Binary files /dev/null and b/public/terrain/19/858587/353901.terrain differ diff --git a/public/terrain/19/858587/353902.terrain b/public/terrain/19/858587/353902.terrain new file mode 100644 index 000000000..95def31d9 Binary files /dev/null and b/public/terrain/19/858587/353902.terrain differ diff --git a/public/terrain/19/858587/353903.terrain b/public/terrain/19/858587/353903.terrain new file mode 100644 index 000000000..ac1ab260c Binary files /dev/null and b/public/terrain/19/858587/353903.terrain differ diff --git a/public/terrain/19/858587/353904.terrain b/public/terrain/19/858587/353904.terrain new file mode 100644 index 000000000..723cec3df Binary files /dev/null and b/public/terrain/19/858587/353904.terrain differ diff --git a/public/terrain/19/858587/353905.terrain b/public/terrain/19/858587/353905.terrain new file mode 100644 index 000000000..37993a702 Binary files /dev/null and b/public/terrain/19/858587/353905.terrain differ diff --git a/public/terrain/19/858587/353906.terrain b/public/terrain/19/858587/353906.terrain new file mode 100644 index 000000000..ae5b4253d Binary files /dev/null and b/public/terrain/19/858587/353906.terrain differ diff --git a/public/terrain/19/858587/353907.terrain b/public/terrain/19/858587/353907.terrain new file mode 100644 index 000000000..6e59431b1 Binary files /dev/null and b/public/terrain/19/858587/353907.terrain differ diff --git a/public/terrain/19/858587/353908.terrain b/public/terrain/19/858587/353908.terrain new file mode 100644 index 000000000..312d58e31 Binary files /dev/null and b/public/terrain/19/858587/353908.terrain differ diff --git a/public/terrain/19/858587/353909.terrain b/public/terrain/19/858587/353909.terrain new file mode 100644 index 000000000..e28d84d98 Binary files /dev/null and b/public/terrain/19/858587/353909.terrain differ diff --git a/public/terrain/19/858587/353910.terrain b/public/terrain/19/858587/353910.terrain new file mode 100644 index 000000000..0c7082311 Binary files /dev/null and b/public/terrain/19/858587/353910.terrain differ diff --git a/public/terrain/19/858587/353911.terrain b/public/terrain/19/858587/353911.terrain new file mode 100644 index 000000000..8a0ad00e3 Binary files /dev/null and b/public/terrain/19/858587/353911.terrain differ diff --git a/public/terrain/19/858587/353912.terrain b/public/terrain/19/858587/353912.terrain new file mode 100644 index 000000000..b6346010c Binary files /dev/null and b/public/terrain/19/858587/353912.terrain differ diff --git a/public/terrain/19/858587/353913.terrain b/public/terrain/19/858587/353913.terrain new file mode 100644 index 000000000..c4879e7e5 Binary files /dev/null and b/public/terrain/19/858587/353913.terrain differ diff --git a/public/terrain/19/858587/353914.terrain b/public/terrain/19/858587/353914.terrain new file mode 100644 index 000000000..2fe837f74 Binary files /dev/null and b/public/terrain/19/858587/353914.terrain differ diff --git a/public/terrain/19/858587/353915.terrain b/public/terrain/19/858587/353915.terrain new file mode 100644 index 000000000..de35700df Binary files /dev/null and b/public/terrain/19/858587/353915.terrain differ diff --git a/public/terrain/19/858587/353916.terrain b/public/terrain/19/858587/353916.terrain new file mode 100644 index 000000000..bbf7ddb96 Binary files /dev/null and b/public/terrain/19/858587/353916.terrain differ diff --git a/public/terrain/19/858587/353917.terrain b/public/terrain/19/858587/353917.terrain new file mode 100644 index 000000000..dc1432fe3 Binary files /dev/null and b/public/terrain/19/858587/353917.terrain differ diff --git a/public/terrain/19/858587/353918.terrain b/public/terrain/19/858587/353918.terrain new file mode 100644 index 000000000..42d8603ba Binary files /dev/null and b/public/terrain/19/858587/353918.terrain differ diff --git a/public/terrain/19/858587/353919.terrain b/public/terrain/19/858587/353919.terrain new file mode 100644 index 000000000..8818e503d Binary files /dev/null and b/public/terrain/19/858587/353919.terrain differ diff --git a/public/terrain/19/858587/353920.terrain b/public/terrain/19/858587/353920.terrain new file mode 100644 index 000000000..929c8683c Binary files /dev/null and b/public/terrain/19/858587/353920.terrain differ diff --git a/public/terrain/19/858587/353921.terrain b/public/terrain/19/858587/353921.terrain new file mode 100644 index 000000000..9c7d2611a Binary files /dev/null and b/public/terrain/19/858587/353921.terrain differ diff --git a/public/terrain/19/858587/353922.terrain b/public/terrain/19/858587/353922.terrain new file mode 100644 index 000000000..5dc9f4d31 Binary files /dev/null and b/public/terrain/19/858587/353922.terrain differ diff --git a/public/terrain/19/858587/353923.terrain b/public/terrain/19/858587/353923.terrain new file mode 100644 index 000000000..bdf339665 Binary files /dev/null and b/public/terrain/19/858587/353923.terrain differ diff --git a/public/terrain/19/858587/353924.terrain b/public/terrain/19/858587/353924.terrain new file mode 100644 index 000000000..23ea4a519 Binary files /dev/null and b/public/terrain/19/858587/353924.terrain differ diff --git a/public/terrain/19/858587/353925.terrain b/public/terrain/19/858587/353925.terrain new file mode 100644 index 000000000..28df1d481 Binary files /dev/null and b/public/terrain/19/858587/353925.terrain differ diff --git a/public/terrain/19/858587/353926.terrain b/public/terrain/19/858587/353926.terrain new file mode 100644 index 000000000..647c768e2 Binary files /dev/null and b/public/terrain/19/858587/353926.terrain differ diff --git a/public/terrain/19/858587/353927.terrain b/public/terrain/19/858587/353927.terrain new file mode 100644 index 000000000..8c14d567d Binary files /dev/null and b/public/terrain/19/858587/353927.terrain differ diff --git a/public/terrain/19/858587/353928.terrain b/public/terrain/19/858587/353928.terrain new file mode 100644 index 000000000..c9773c76e Binary files /dev/null and b/public/terrain/19/858587/353928.terrain differ diff --git a/public/terrain/19/858587/353929.terrain b/public/terrain/19/858587/353929.terrain new file mode 100644 index 000000000..af4f82115 Binary files /dev/null and b/public/terrain/19/858587/353929.terrain differ diff --git a/public/terrain/19/858587/353930.terrain b/public/terrain/19/858587/353930.terrain new file mode 100644 index 000000000..4d33585dc Binary files /dev/null and b/public/terrain/19/858587/353930.terrain differ diff --git a/public/terrain/19/858587/353931.terrain b/public/terrain/19/858587/353931.terrain new file mode 100644 index 000000000..6dc90c193 Binary files /dev/null and b/public/terrain/19/858587/353931.terrain differ diff --git a/public/terrain/19/858587/353932.terrain b/public/terrain/19/858587/353932.terrain new file mode 100644 index 000000000..3e7e8b285 Binary files /dev/null and b/public/terrain/19/858587/353932.terrain differ diff --git a/public/terrain/19/858587/353933.terrain b/public/terrain/19/858587/353933.terrain new file mode 100644 index 000000000..d206ab837 Binary files /dev/null and b/public/terrain/19/858587/353933.terrain differ diff --git a/public/terrain/19/858587/353934.terrain b/public/terrain/19/858587/353934.terrain new file mode 100644 index 000000000..65329fd19 Binary files /dev/null and b/public/terrain/19/858587/353934.terrain differ diff --git a/public/terrain/19/858587/353935.terrain b/public/terrain/19/858587/353935.terrain new file mode 100644 index 000000000..aa1238d03 Binary files /dev/null and b/public/terrain/19/858587/353935.terrain differ diff --git a/public/terrain/19/858587/353936.terrain b/public/terrain/19/858587/353936.terrain new file mode 100644 index 000000000..458ce2160 Binary files /dev/null and b/public/terrain/19/858587/353936.terrain differ diff --git a/public/terrain/19/858587/353937.terrain b/public/terrain/19/858587/353937.terrain new file mode 100644 index 000000000..9fa833c08 Binary files /dev/null and b/public/terrain/19/858587/353937.terrain differ diff --git a/public/terrain/19/858587/353938.terrain b/public/terrain/19/858587/353938.terrain new file mode 100644 index 000000000..b265bf402 Binary files /dev/null and b/public/terrain/19/858587/353938.terrain differ diff --git a/public/terrain/19/858587/353939.terrain b/public/terrain/19/858587/353939.terrain new file mode 100644 index 000000000..d9f831e0f Binary files /dev/null and b/public/terrain/19/858587/353939.terrain differ diff --git a/public/terrain/19/858587/353940.terrain b/public/terrain/19/858587/353940.terrain new file mode 100644 index 000000000..dbc29ddea Binary files /dev/null and b/public/terrain/19/858587/353940.terrain differ diff --git a/public/terrain/19/858587/353941.terrain b/public/terrain/19/858587/353941.terrain new file mode 100644 index 000000000..72a31a277 Binary files /dev/null and b/public/terrain/19/858587/353941.terrain differ diff --git a/public/terrain/19/858587/353942.terrain b/public/terrain/19/858587/353942.terrain new file mode 100644 index 000000000..9877cc7a8 Binary files /dev/null and b/public/terrain/19/858587/353942.terrain differ diff --git a/public/terrain/19/858587/353943.terrain b/public/terrain/19/858587/353943.terrain new file mode 100644 index 000000000..b9dcfc023 Binary files /dev/null and b/public/terrain/19/858587/353943.terrain differ diff --git a/public/terrain/19/858587/353944.terrain b/public/terrain/19/858587/353944.terrain new file mode 100644 index 000000000..a21c628a5 Binary files /dev/null and b/public/terrain/19/858587/353944.terrain differ diff --git a/public/terrain/19/858587/353945.terrain b/public/terrain/19/858587/353945.terrain new file mode 100644 index 000000000..0359fb83f Binary files /dev/null and b/public/terrain/19/858587/353945.terrain differ diff --git a/public/terrain/19/858587/353946.terrain b/public/terrain/19/858587/353946.terrain new file mode 100644 index 000000000..f12a5f618 Binary files /dev/null and b/public/terrain/19/858587/353946.terrain differ diff --git a/public/terrain/19/858587/353947.terrain b/public/terrain/19/858587/353947.terrain new file mode 100644 index 000000000..7cf298075 Binary files /dev/null and b/public/terrain/19/858587/353947.terrain differ diff --git a/public/terrain/19/858587/353948.terrain b/public/terrain/19/858587/353948.terrain new file mode 100644 index 000000000..2ac79f929 Binary files /dev/null and b/public/terrain/19/858587/353948.terrain differ diff --git a/public/terrain/19/858587/353949.terrain b/public/terrain/19/858587/353949.terrain new file mode 100644 index 000000000..d43001fe8 Binary files /dev/null and b/public/terrain/19/858587/353949.terrain differ diff --git a/public/terrain/19/858587/353950.terrain b/public/terrain/19/858587/353950.terrain new file mode 100644 index 000000000..eefee76a7 Binary files /dev/null and b/public/terrain/19/858587/353950.terrain differ diff --git a/public/terrain/19/858587/353951.terrain b/public/terrain/19/858587/353951.terrain new file mode 100644 index 000000000..a4a6d643a Binary files /dev/null and b/public/terrain/19/858587/353951.terrain differ diff --git a/public/terrain/19/858587/353952.terrain b/public/terrain/19/858587/353952.terrain new file mode 100644 index 000000000..a39cd2f80 Binary files /dev/null and b/public/terrain/19/858587/353952.terrain differ diff --git a/public/terrain/19/858587/353953.terrain b/public/terrain/19/858587/353953.terrain new file mode 100644 index 000000000..2726c8923 Binary files /dev/null and b/public/terrain/19/858587/353953.terrain differ diff --git a/public/terrain/19/858587/353954.terrain b/public/terrain/19/858587/353954.terrain new file mode 100644 index 000000000..8de34cbbb Binary files /dev/null and b/public/terrain/19/858587/353954.terrain differ diff --git a/public/terrain/19/858587/353955.terrain b/public/terrain/19/858587/353955.terrain new file mode 100644 index 000000000..7d1973168 Binary files /dev/null and b/public/terrain/19/858587/353955.terrain differ diff --git a/public/terrain/19/858587/353956.terrain b/public/terrain/19/858587/353956.terrain new file mode 100644 index 000000000..6760dbae3 Binary files /dev/null and b/public/terrain/19/858587/353956.terrain differ diff --git a/public/terrain/19/858587/353957.terrain b/public/terrain/19/858587/353957.terrain new file mode 100644 index 000000000..1670d958b Binary files /dev/null and b/public/terrain/19/858587/353957.terrain differ diff --git a/public/terrain/19/858587/353958.terrain b/public/terrain/19/858587/353958.terrain new file mode 100644 index 000000000..3487ae39f Binary files /dev/null and b/public/terrain/19/858587/353958.terrain differ diff --git a/public/terrain/19/858587/353959.terrain b/public/terrain/19/858587/353959.terrain new file mode 100644 index 000000000..894dc880a Binary files /dev/null and b/public/terrain/19/858587/353959.terrain differ diff --git a/public/terrain/19/858587/353960.terrain b/public/terrain/19/858587/353960.terrain new file mode 100644 index 000000000..f458aaee4 Binary files /dev/null and b/public/terrain/19/858587/353960.terrain differ diff --git a/public/terrain/19/858587/353961.terrain b/public/terrain/19/858587/353961.terrain new file mode 100644 index 000000000..9c048ccf1 Binary files /dev/null and b/public/terrain/19/858587/353961.terrain differ diff --git a/public/terrain/19/858587/353962.terrain b/public/terrain/19/858587/353962.terrain new file mode 100644 index 000000000..ee90ad40c Binary files /dev/null and b/public/terrain/19/858587/353962.terrain differ diff --git a/public/terrain/19/858587/353963.terrain b/public/terrain/19/858587/353963.terrain new file mode 100644 index 000000000..cf64edb24 Binary files /dev/null and b/public/terrain/19/858587/353963.terrain differ diff --git a/public/terrain/19/858587/353964.terrain b/public/terrain/19/858587/353964.terrain new file mode 100644 index 000000000..6726ca62c Binary files /dev/null and b/public/terrain/19/858587/353964.terrain differ diff --git a/public/terrain/19/858587/353965.terrain b/public/terrain/19/858587/353965.terrain new file mode 100644 index 000000000..bffd7456b Binary files /dev/null and b/public/terrain/19/858587/353965.terrain differ diff --git a/public/terrain/19/858587/353966.terrain b/public/terrain/19/858587/353966.terrain new file mode 100644 index 000000000..3538677ba Binary files /dev/null and b/public/terrain/19/858587/353966.terrain differ diff --git a/public/terrain/19/858587/353967.terrain b/public/terrain/19/858587/353967.terrain new file mode 100644 index 000000000..1aa7e46e0 Binary files /dev/null and b/public/terrain/19/858587/353967.terrain differ diff --git a/public/terrain/19/858587/353968.terrain b/public/terrain/19/858587/353968.terrain new file mode 100644 index 000000000..b505cd148 Binary files /dev/null and b/public/terrain/19/858587/353968.terrain differ diff --git a/public/terrain/19/858587/353969.terrain b/public/terrain/19/858587/353969.terrain new file mode 100644 index 000000000..10674b855 Binary files /dev/null and b/public/terrain/19/858587/353969.terrain differ diff --git a/public/terrain/19/858587/353970.terrain b/public/terrain/19/858587/353970.terrain new file mode 100644 index 000000000..2741bd342 Binary files /dev/null and b/public/terrain/19/858587/353970.terrain differ diff --git a/public/terrain/19/858587/353971.terrain b/public/terrain/19/858587/353971.terrain new file mode 100644 index 000000000..04de92b55 Binary files /dev/null and b/public/terrain/19/858587/353971.terrain differ diff --git a/public/terrain/19/858587/353972.terrain b/public/terrain/19/858587/353972.terrain new file mode 100644 index 000000000..1b2d508a5 Binary files /dev/null and b/public/terrain/19/858587/353972.terrain differ diff --git a/public/terrain/19/858587/353973.terrain b/public/terrain/19/858587/353973.terrain new file mode 100644 index 000000000..73e84db87 Binary files /dev/null and b/public/terrain/19/858587/353973.terrain differ diff --git a/public/terrain/19/858587/353974.terrain b/public/terrain/19/858587/353974.terrain new file mode 100644 index 000000000..aa596f76e Binary files /dev/null and b/public/terrain/19/858587/353974.terrain differ diff --git a/public/terrain/19/858587/353975.terrain b/public/terrain/19/858587/353975.terrain new file mode 100644 index 000000000..37285c682 Binary files /dev/null and b/public/terrain/19/858587/353975.terrain differ diff --git a/public/terrain/19/858587/353976.terrain b/public/terrain/19/858587/353976.terrain new file mode 100644 index 000000000..ba2ea3dac Binary files /dev/null and b/public/terrain/19/858587/353976.terrain differ diff --git a/public/terrain/19/858587/353977.terrain b/public/terrain/19/858587/353977.terrain new file mode 100644 index 000000000..70b307b9b Binary files /dev/null and b/public/terrain/19/858587/353977.terrain differ diff --git a/public/terrain/19/858587/353978.terrain b/public/terrain/19/858587/353978.terrain new file mode 100644 index 000000000..3fb7e1389 Binary files /dev/null and b/public/terrain/19/858587/353978.terrain differ diff --git a/public/terrain/19/858587/353979.terrain b/public/terrain/19/858587/353979.terrain new file mode 100644 index 000000000..d64c945aa Binary files /dev/null and b/public/terrain/19/858587/353979.terrain differ diff --git a/public/terrain/19/858587/353980.terrain b/public/terrain/19/858587/353980.terrain new file mode 100644 index 000000000..f708bb64f Binary files /dev/null and b/public/terrain/19/858587/353980.terrain differ diff --git a/public/terrain/19/858587/353981.terrain b/public/terrain/19/858587/353981.terrain new file mode 100644 index 000000000..b20daa607 Binary files /dev/null and b/public/terrain/19/858587/353981.terrain differ diff --git a/public/terrain/19/858587/353982.terrain b/public/terrain/19/858587/353982.terrain new file mode 100644 index 000000000..1c79f7f80 Binary files /dev/null and b/public/terrain/19/858587/353982.terrain differ diff --git a/public/terrain/19/858587/353983.terrain b/public/terrain/19/858587/353983.terrain new file mode 100644 index 000000000..3b42ee4bc Binary files /dev/null and b/public/terrain/19/858587/353983.terrain differ diff --git a/public/terrain/19/858587/353984.terrain b/public/terrain/19/858587/353984.terrain new file mode 100644 index 000000000..f99c2a495 Binary files /dev/null and b/public/terrain/19/858587/353984.terrain differ diff --git a/public/terrain/19/858587/353985.terrain b/public/terrain/19/858587/353985.terrain new file mode 100644 index 000000000..6b47ae929 Binary files /dev/null and b/public/terrain/19/858587/353985.terrain differ diff --git a/public/terrain/19/858587/353986.terrain b/public/terrain/19/858587/353986.terrain new file mode 100644 index 000000000..b587d09ed Binary files /dev/null and b/public/terrain/19/858587/353986.terrain differ diff --git a/public/terrain/19/858587/353987.terrain b/public/terrain/19/858587/353987.terrain new file mode 100644 index 000000000..1d5bffc82 Binary files /dev/null and b/public/terrain/19/858587/353987.terrain differ diff --git a/public/terrain/19/858587/353988.terrain b/public/terrain/19/858587/353988.terrain new file mode 100644 index 000000000..1d02f2732 Binary files /dev/null and b/public/terrain/19/858587/353988.terrain differ diff --git a/public/terrain/19/858587/353989.terrain b/public/terrain/19/858587/353989.terrain new file mode 100644 index 000000000..92ba5cb12 Binary files /dev/null and b/public/terrain/19/858587/353989.terrain differ diff --git a/public/terrain/19/858587/353990.terrain b/public/terrain/19/858587/353990.terrain new file mode 100644 index 000000000..90b2b5165 Binary files /dev/null and b/public/terrain/19/858587/353990.terrain differ diff --git a/public/terrain/19/858587/353991.terrain b/public/terrain/19/858587/353991.terrain new file mode 100644 index 000000000..e74b48a91 Binary files /dev/null and b/public/terrain/19/858587/353991.terrain differ diff --git a/public/terrain/19/858587/353992.terrain b/public/terrain/19/858587/353992.terrain new file mode 100644 index 000000000..5cf303db2 Binary files /dev/null and b/public/terrain/19/858587/353992.terrain differ diff --git a/public/terrain/19/858587/353993.terrain b/public/terrain/19/858587/353993.terrain new file mode 100644 index 000000000..a1257bdee Binary files /dev/null and b/public/terrain/19/858587/353993.terrain differ diff --git a/public/terrain/19/858587/353994.terrain b/public/terrain/19/858587/353994.terrain new file mode 100644 index 000000000..82146449f Binary files /dev/null and b/public/terrain/19/858587/353994.terrain differ diff --git a/public/terrain/19/858587/353995.terrain b/public/terrain/19/858587/353995.terrain new file mode 100644 index 000000000..97e0292d0 Binary files /dev/null and b/public/terrain/19/858587/353995.terrain differ diff --git a/public/terrain/19/858587/353996.terrain b/public/terrain/19/858587/353996.terrain new file mode 100644 index 000000000..c16cdb3f4 Binary files /dev/null and b/public/terrain/19/858587/353996.terrain differ diff --git a/public/terrain/19/858587/353997.terrain b/public/terrain/19/858587/353997.terrain new file mode 100644 index 000000000..0fd5b90e0 Binary files /dev/null and b/public/terrain/19/858587/353997.terrain differ diff --git a/public/terrain/19/858587/353998.terrain b/public/terrain/19/858587/353998.terrain new file mode 100644 index 000000000..0707fde77 Binary files /dev/null and b/public/terrain/19/858587/353998.terrain differ diff --git a/public/terrain/19/858587/353999.terrain b/public/terrain/19/858587/353999.terrain new file mode 100644 index 000000000..bfe10945b Binary files /dev/null and b/public/terrain/19/858587/353999.terrain differ diff --git a/public/terrain/19/858587/354000.terrain b/public/terrain/19/858587/354000.terrain new file mode 100644 index 000000000..d88202a32 Binary files /dev/null and b/public/terrain/19/858587/354000.terrain differ diff --git a/public/terrain/19/858587/354001.terrain b/public/terrain/19/858587/354001.terrain new file mode 100644 index 000000000..b78f5bffd Binary files /dev/null and b/public/terrain/19/858587/354001.terrain differ diff --git a/public/terrain/19/858587/354002.terrain b/public/terrain/19/858587/354002.terrain new file mode 100644 index 000000000..ed8f0d0e5 Binary files /dev/null and b/public/terrain/19/858587/354002.terrain differ diff --git a/public/terrain/19/858587/354003.terrain b/public/terrain/19/858587/354003.terrain new file mode 100644 index 000000000..1865ef8cb Binary files /dev/null and b/public/terrain/19/858587/354003.terrain differ diff --git a/public/terrain/19/858587/354004.terrain b/public/terrain/19/858587/354004.terrain new file mode 100644 index 000000000..f128fb0b9 Binary files /dev/null and b/public/terrain/19/858587/354004.terrain differ diff --git a/public/terrain/19/858587/354005.terrain b/public/terrain/19/858587/354005.terrain new file mode 100644 index 000000000..c2cc69611 Binary files /dev/null and b/public/terrain/19/858587/354005.terrain differ diff --git a/public/terrain/19/858587/354006.terrain b/public/terrain/19/858587/354006.terrain new file mode 100644 index 000000000..6da201b5c Binary files /dev/null and b/public/terrain/19/858587/354006.terrain differ diff --git a/public/terrain/19/858587/354007.terrain b/public/terrain/19/858587/354007.terrain new file mode 100644 index 000000000..b716c8d46 Binary files /dev/null and b/public/terrain/19/858587/354007.terrain differ diff --git a/public/terrain/19/858587/354008.terrain b/public/terrain/19/858587/354008.terrain new file mode 100644 index 000000000..273a20726 Binary files /dev/null and b/public/terrain/19/858587/354008.terrain differ diff --git a/public/terrain/19/858587/354009.terrain b/public/terrain/19/858587/354009.terrain new file mode 100644 index 000000000..13bb300e6 Binary files /dev/null and b/public/terrain/19/858587/354009.terrain differ diff --git a/public/terrain/19/858587/354010.terrain b/public/terrain/19/858587/354010.terrain new file mode 100644 index 000000000..e2ed3ce5a Binary files /dev/null and b/public/terrain/19/858587/354010.terrain differ diff --git a/public/terrain/19/858587/354011.terrain b/public/terrain/19/858587/354011.terrain new file mode 100644 index 000000000..8db8a0c2e Binary files /dev/null and b/public/terrain/19/858587/354011.terrain differ diff --git a/public/terrain/19/858587/354012.terrain b/public/terrain/19/858587/354012.terrain new file mode 100644 index 000000000..06ff99fe3 Binary files /dev/null and b/public/terrain/19/858587/354012.terrain differ diff --git a/public/terrain/19/858587/354013.terrain b/public/terrain/19/858587/354013.terrain new file mode 100644 index 000000000..04faacd1d Binary files /dev/null and b/public/terrain/19/858587/354013.terrain differ diff --git a/public/terrain/19/858587/354014.terrain b/public/terrain/19/858587/354014.terrain new file mode 100644 index 000000000..51d138226 Binary files /dev/null and b/public/terrain/19/858587/354014.terrain differ diff --git a/public/terrain/19/858587/354015.terrain b/public/terrain/19/858587/354015.terrain new file mode 100644 index 000000000..cb97e339d Binary files /dev/null and b/public/terrain/19/858587/354015.terrain differ diff --git a/public/terrain/19/858587/354016.terrain b/public/terrain/19/858587/354016.terrain new file mode 100644 index 000000000..05c5c6eb7 Binary files /dev/null and b/public/terrain/19/858587/354016.terrain differ diff --git a/public/terrain/19/858587/354017.terrain b/public/terrain/19/858587/354017.terrain new file mode 100644 index 000000000..a5793f0b5 Binary files /dev/null and b/public/terrain/19/858587/354017.terrain differ diff --git a/public/terrain/19/858587/354018.terrain b/public/terrain/19/858587/354018.terrain new file mode 100644 index 000000000..767516fd4 Binary files /dev/null and b/public/terrain/19/858587/354018.terrain differ diff --git a/public/terrain/19/858587/354019.terrain b/public/terrain/19/858587/354019.terrain new file mode 100644 index 000000000..5fb83d34c Binary files /dev/null and b/public/terrain/19/858587/354019.terrain differ diff --git a/public/terrain/19/858587/354020.terrain b/public/terrain/19/858587/354020.terrain new file mode 100644 index 000000000..726033b7a Binary files /dev/null and b/public/terrain/19/858587/354020.terrain differ diff --git a/public/terrain/19/858587/354021.terrain b/public/terrain/19/858587/354021.terrain new file mode 100644 index 000000000..b431cda9c Binary files /dev/null and b/public/terrain/19/858587/354021.terrain differ diff --git a/public/terrain/19/858587/354022.terrain b/public/terrain/19/858587/354022.terrain new file mode 100644 index 000000000..77bddaf00 Binary files /dev/null and b/public/terrain/19/858587/354022.terrain differ diff --git a/public/terrain/19/858587/354023.terrain b/public/terrain/19/858587/354023.terrain new file mode 100644 index 000000000..bd224793b Binary files /dev/null and b/public/terrain/19/858587/354023.terrain differ diff --git a/public/terrain/19/858587/354024.terrain b/public/terrain/19/858587/354024.terrain new file mode 100644 index 000000000..03a18a2aa Binary files /dev/null and b/public/terrain/19/858587/354024.terrain differ diff --git a/public/terrain/19/858587/354025.terrain b/public/terrain/19/858587/354025.terrain new file mode 100644 index 000000000..3937f0bcb Binary files /dev/null and b/public/terrain/19/858587/354025.terrain differ diff --git a/public/terrain/19/858587/354026.terrain b/public/terrain/19/858587/354026.terrain new file mode 100644 index 000000000..7c5ee8a21 Binary files /dev/null and b/public/terrain/19/858587/354026.terrain differ diff --git a/public/terrain/19/858587/354027.terrain b/public/terrain/19/858587/354027.terrain new file mode 100644 index 000000000..01e20592d Binary files /dev/null and b/public/terrain/19/858587/354027.terrain differ diff --git a/public/terrain/19/858587/354028.terrain b/public/terrain/19/858587/354028.terrain new file mode 100644 index 000000000..2439a1179 Binary files /dev/null and b/public/terrain/19/858587/354028.terrain differ diff --git a/public/terrain/19/858587/354029.terrain b/public/terrain/19/858587/354029.terrain new file mode 100644 index 000000000..bfd15e0f3 Binary files /dev/null and b/public/terrain/19/858587/354029.terrain differ diff --git a/public/terrain/19/858587/354030.terrain b/public/terrain/19/858587/354030.terrain new file mode 100644 index 000000000..6d169c727 Binary files /dev/null and b/public/terrain/19/858587/354030.terrain differ diff --git a/public/terrain/19/858587/354031.terrain b/public/terrain/19/858587/354031.terrain new file mode 100644 index 000000000..b1cf1eb65 Binary files /dev/null and b/public/terrain/19/858587/354031.terrain differ diff --git a/public/terrain/19/858587/354032.terrain b/public/terrain/19/858587/354032.terrain new file mode 100644 index 000000000..0cf6aabc8 Binary files /dev/null and b/public/terrain/19/858587/354032.terrain differ diff --git a/public/terrain/19/858587/354033.terrain b/public/terrain/19/858587/354033.terrain new file mode 100644 index 000000000..f0a8772f4 Binary files /dev/null and b/public/terrain/19/858587/354033.terrain differ diff --git a/public/terrain/19/858587/354034.terrain b/public/terrain/19/858587/354034.terrain new file mode 100644 index 000000000..fc70d0939 Binary files /dev/null and b/public/terrain/19/858587/354034.terrain differ diff --git a/public/terrain/19/858587/354035.terrain b/public/terrain/19/858587/354035.terrain new file mode 100644 index 000000000..92cbfceb5 Binary files /dev/null and b/public/terrain/19/858587/354035.terrain differ diff --git a/public/terrain/19/858587/354036.terrain b/public/terrain/19/858587/354036.terrain new file mode 100644 index 000000000..54da5f73f Binary files /dev/null and b/public/terrain/19/858587/354036.terrain differ diff --git a/public/terrain/19/858587/354037.terrain b/public/terrain/19/858587/354037.terrain new file mode 100644 index 000000000..cae7eedb5 Binary files /dev/null and b/public/terrain/19/858587/354037.terrain differ diff --git a/public/terrain/19/858587/354038.terrain b/public/terrain/19/858587/354038.terrain new file mode 100644 index 000000000..36ff6881a Binary files /dev/null and b/public/terrain/19/858587/354038.terrain differ diff --git a/public/terrain/19/858587/354039.terrain b/public/terrain/19/858587/354039.terrain new file mode 100644 index 000000000..16ab0220a Binary files /dev/null and b/public/terrain/19/858587/354039.terrain differ diff --git a/public/terrain/19/858587/354040.terrain b/public/terrain/19/858587/354040.terrain new file mode 100644 index 000000000..ad2f5c46c Binary files /dev/null and b/public/terrain/19/858587/354040.terrain differ diff --git a/public/terrain/19/858587/354041.terrain b/public/terrain/19/858587/354041.terrain new file mode 100644 index 000000000..95e66ee18 Binary files /dev/null and b/public/terrain/19/858587/354041.terrain differ diff --git a/public/terrain/19/858587/354042.terrain b/public/terrain/19/858587/354042.terrain new file mode 100644 index 000000000..5025e5079 Binary files /dev/null and b/public/terrain/19/858587/354042.terrain differ diff --git a/public/terrain/19/858587/354043.terrain b/public/terrain/19/858587/354043.terrain new file mode 100644 index 000000000..1c091e7d1 Binary files /dev/null and b/public/terrain/19/858587/354043.terrain differ diff --git a/public/terrain/19/858587/354044.terrain b/public/terrain/19/858587/354044.terrain new file mode 100644 index 000000000..569595bf2 Binary files /dev/null and b/public/terrain/19/858587/354044.terrain differ diff --git a/public/terrain/19/858587/354045.terrain b/public/terrain/19/858587/354045.terrain new file mode 100644 index 000000000..63fd9a478 Binary files /dev/null and b/public/terrain/19/858587/354045.terrain differ diff --git a/public/terrain/19/858587/354046.terrain b/public/terrain/19/858587/354046.terrain new file mode 100644 index 000000000..7a2addbec Binary files /dev/null and b/public/terrain/19/858587/354046.terrain differ diff --git a/public/terrain/19/858587/354047.terrain b/public/terrain/19/858587/354047.terrain new file mode 100644 index 000000000..462e02c70 Binary files /dev/null and b/public/terrain/19/858587/354047.terrain differ diff --git a/public/terrain/19/858587/354048.terrain b/public/terrain/19/858587/354048.terrain new file mode 100644 index 000000000..ae8edd8aa Binary files /dev/null and b/public/terrain/19/858587/354048.terrain differ diff --git a/public/terrain/19/858587/354049.terrain b/public/terrain/19/858587/354049.terrain new file mode 100644 index 000000000..d7c598198 Binary files /dev/null and b/public/terrain/19/858587/354049.terrain differ diff --git a/public/terrain/19/858587/354050.terrain b/public/terrain/19/858587/354050.terrain new file mode 100644 index 000000000..fad2c6b8a Binary files /dev/null and b/public/terrain/19/858587/354050.terrain differ diff --git a/public/terrain/19/858587/354051.terrain b/public/terrain/19/858587/354051.terrain new file mode 100644 index 000000000..ad0ea272b Binary files /dev/null and b/public/terrain/19/858587/354051.terrain differ diff --git a/public/terrain/19/858587/354052.terrain b/public/terrain/19/858587/354052.terrain new file mode 100644 index 000000000..0fe61457f Binary files /dev/null and b/public/terrain/19/858587/354052.terrain differ diff --git a/public/terrain/19/858587/354053.terrain b/public/terrain/19/858587/354053.terrain new file mode 100644 index 000000000..20dfce9b7 Binary files /dev/null and b/public/terrain/19/858587/354053.terrain differ diff --git a/public/terrain/19/858587/354054.terrain b/public/terrain/19/858587/354054.terrain new file mode 100644 index 000000000..e6151c0b5 Binary files /dev/null and b/public/terrain/19/858587/354054.terrain differ diff --git a/public/terrain/19/858587/354055.terrain b/public/terrain/19/858587/354055.terrain new file mode 100644 index 000000000..7c92dfa85 Binary files /dev/null and b/public/terrain/19/858587/354055.terrain differ diff --git a/public/terrain/19/858587/354056.terrain b/public/terrain/19/858587/354056.terrain new file mode 100644 index 000000000..cac270efa Binary files /dev/null and b/public/terrain/19/858587/354056.terrain differ diff --git a/public/terrain/19/858587/354057.terrain b/public/terrain/19/858587/354057.terrain new file mode 100644 index 000000000..36316f79a Binary files /dev/null and b/public/terrain/19/858587/354057.terrain differ diff --git a/public/terrain/19/858587/354058.terrain b/public/terrain/19/858587/354058.terrain new file mode 100644 index 000000000..a9acc7ef2 Binary files /dev/null and b/public/terrain/19/858587/354058.terrain differ diff --git a/public/terrain/19/858587/354059.terrain b/public/terrain/19/858587/354059.terrain new file mode 100644 index 000000000..0493ed2e5 Binary files /dev/null and b/public/terrain/19/858587/354059.terrain differ diff --git a/public/terrain/19/858588/353743.terrain b/public/terrain/19/858588/353743.terrain new file mode 100644 index 000000000..00d60fb1c Binary files /dev/null and b/public/terrain/19/858588/353743.terrain differ diff --git a/public/terrain/19/858588/353744.terrain b/public/terrain/19/858588/353744.terrain new file mode 100644 index 000000000..0111bee46 Binary files /dev/null and b/public/terrain/19/858588/353744.terrain differ diff --git a/public/terrain/19/858588/353745.terrain b/public/terrain/19/858588/353745.terrain new file mode 100644 index 000000000..407a134c7 Binary files /dev/null and b/public/terrain/19/858588/353745.terrain differ diff --git a/public/terrain/19/858588/353746.terrain b/public/terrain/19/858588/353746.terrain new file mode 100644 index 000000000..241849eee Binary files /dev/null and b/public/terrain/19/858588/353746.terrain differ diff --git a/public/terrain/19/858588/353747.terrain b/public/terrain/19/858588/353747.terrain new file mode 100644 index 000000000..4b7989e66 Binary files /dev/null and b/public/terrain/19/858588/353747.terrain differ diff --git a/public/terrain/19/858588/353748.terrain b/public/terrain/19/858588/353748.terrain new file mode 100644 index 000000000..f289db4f6 Binary files /dev/null and b/public/terrain/19/858588/353748.terrain differ diff --git a/public/terrain/19/858588/353749.terrain b/public/terrain/19/858588/353749.terrain new file mode 100644 index 000000000..018310655 Binary files /dev/null and b/public/terrain/19/858588/353749.terrain differ diff --git a/public/terrain/19/858588/353750.terrain b/public/terrain/19/858588/353750.terrain new file mode 100644 index 000000000..4a4748e25 Binary files /dev/null and b/public/terrain/19/858588/353750.terrain differ diff --git a/public/terrain/19/858588/353751.terrain b/public/terrain/19/858588/353751.terrain new file mode 100644 index 000000000..133ade1cd Binary files /dev/null and b/public/terrain/19/858588/353751.terrain differ diff --git a/public/terrain/19/858588/353752.terrain b/public/terrain/19/858588/353752.terrain new file mode 100644 index 000000000..161194bf9 Binary files /dev/null and b/public/terrain/19/858588/353752.terrain differ diff --git a/public/terrain/19/858588/353753.terrain b/public/terrain/19/858588/353753.terrain new file mode 100644 index 000000000..50b9bcb2e Binary files /dev/null and b/public/terrain/19/858588/353753.terrain differ diff --git a/public/terrain/19/858588/353754.terrain b/public/terrain/19/858588/353754.terrain new file mode 100644 index 000000000..f3a23335c Binary files /dev/null and b/public/terrain/19/858588/353754.terrain differ diff --git a/public/terrain/19/858588/353755.terrain b/public/terrain/19/858588/353755.terrain new file mode 100644 index 000000000..47f97c298 Binary files /dev/null and b/public/terrain/19/858588/353755.terrain differ diff --git a/public/terrain/19/858588/353756.terrain b/public/terrain/19/858588/353756.terrain new file mode 100644 index 000000000..7eeb4dfec Binary files /dev/null and b/public/terrain/19/858588/353756.terrain differ diff --git a/public/terrain/19/858588/353757.terrain b/public/terrain/19/858588/353757.terrain new file mode 100644 index 000000000..5cefc5a61 Binary files /dev/null and b/public/terrain/19/858588/353757.terrain differ diff --git a/public/terrain/19/858588/353758.terrain b/public/terrain/19/858588/353758.terrain new file mode 100644 index 000000000..0f24d893d Binary files /dev/null and b/public/terrain/19/858588/353758.terrain differ diff --git a/public/terrain/19/858588/353759.terrain b/public/terrain/19/858588/353759.terrain new file mode 100644 index 000000000..784b71c28 Binary files /dev/null and b/public/terrain/19/858588/353759.terrain differ diff --git a/public/terrain/19/858588/353760.terrain b/public/terrain/19/858588/353760.terrain new file mode 100644 index 000000000..82bf5ad87 Binary files /dev/null and b/public/terrain/19/858588/353760.terrain differ diff --git a/public/terrain/19/858588/353761.terrain b/public/terrain/19/858588/353761.terrain new file mode 100644 index 000000000..283bca017 Binary files /dev/null and b/public/terrain/19/858588/353761.terrain differ diff --git a/public/terrain/19/858588/353762.terrain b/public/terrain/19/858588/353762.terrain new file mode 100644 index 000000000..bbd446c24 Binary files /dev/null and b/public/terrain/19/858588/353762.terrain differ diff --git a/public/terrain/19/858588/353763.terrain b/public/terrain/19/858588/353763.terrain new file mode 100644 index 000000000..4535eeab1 Binary files /dev/null and b/public/terrain/19/858588/353763.terrain differ diff --git a/public/terrain/19/858588/353764.terrain b/public/terrain/19/858588/353764.terrain new file mode 100644 index 000000000..6ab1b2b82 Binary files /dev/null and b/public/terrain/19/858588/353764.terrain differ diff --git a/public/terrain/19/858588/353765.terrain b/public/terrain/19/858588/353765.terrain new file mode 100644 index 000000000..ea34a0489 Binary files /dev/null and b/public/terrain/19/858588/353765.terrain differ diff --git a/public/terrain/19/858588/353766.terrain b/public/terrain/19/858588/353766.terrain new file mode 100644 index 000000000..ffb621a28 Binary files /dev/null and b/public/terrain/19/858588/353766.terrain differ diff --git a/public/terrain/19/858588/353767.terrain b/public/terrain/19/858588/353767.terrain new file mode 100644 index 000000000..8aff9f426 Binary files /dev/null and b/public/terrain/19/858588/353767.terrain differ diff --git a/public/terrain/19/858588/353768.terrain b/public/terrain/19/858588/353768.terrain new file mode 100644 index 000000000..ebd7d864d Binary files /dev/null and b/public/terrain/19/858588/353768.terrain differ diff --git a/public/terrain/19/858588/353769.terrain b/public/terrain/19/858588/353769.terrain new file mode 100644 index 000000000..7f3bf4fc7 Binary files /dev/null and b/public/terrain/19/858588/353769.terrain differ diff --git a/public/terrain/19/858588/353770.terrain b/public/terrain/19/858588/353770.terrain new file mode 100644 index 000000000..90d67fc43 Binary files /dev/null and b/public/terrain/19/858588/353770.terrain differ diff --git a/public/terrain/19/858588/353771.terrain b/public/terrain/19/858588/353771.terrain new file mode 100644 index 000000000..5e986c448 Binary files /dev/null and b/public/terrain/19/858588/353771.terrain differ diff --git a/public/terrain/19/858588/353772.terrain b/public/terrain/19/858588/353772.terrain new file mode 100644 index 000000000..5bed27bb1 Binary files /dev/null and b/public/terrain/19/858588/353772.terrain differ diff --git a/public/terrain/19/858588/353773.terrain b/public/terrain/19/858588/353773.terrain new file mode 100644 index 000000000..731d6e942 Binary files /dev/null and b/public/terrain/19/858588/353773.terrain differ diff --git a/public/terrain/19/858588/353774.terrain b/public/terrain/19/858588/353774.terrain new file mode 100644 index 000000000..181ee2e7c Binary files /dev/null and b/public/terrain/19/858588/353774.terrain differ diff --git a/public/terrain/19/858588/353775.terrain b/public/terrain/19/858588/353775.terrain new file mode 100644 index 000000000..c34334760 Binary files /dev/null and b/public/terrain/19/858588/353775.terrain differ diff --git a/public/terrain/19/858588/353776.terrain b/public/terrain/19/858588/353776.terrain new file mode 100644 index 000000000..3a25e907c Binary files /dev/null and b/public/terrain/19/858588/353776.terrain differ diff --git a/public/terrain/19/858588/353777.terrain b/public/terrain/19/858588/353777.terrain new file mode 100644 index 000000000..a3b981638 Binary files /dev/null and b/public/terrain/19/858588/353777.terrain differ diff --git a/public/terrain/19/858588/353778.terrain b/public/terrain/19/858588/353778.terrain new file mode 100644 index 000000000..baabcfbd7 Binary files /dev/null and b/public/terrain/19/858588/353778.terrain differ diff --git a/public/terrain/19/858588/353779.terrain b/public/terrain/19/858588/353779.terrain new file mode 100644 index 000000000..1d5a2c5f3 Binary files /dev/null and b/public/terrain/19/858588/353779.terrain differ diff --git a/public/terrain/19/858588/353780.terrain b/public/terrain/19/858588/353780.terrain new file mode 100644 index 000000000..73bef6d88 Binary files /dev/null and b/public/terrain/19/858588/353780.terrain differ diff --git a/public/terrain/19/858588/353781.terrain b/public/terrain/19/858588/353781.terrain new file mode 100644 index 000000000..4ac537227 Binary files /dev/null and b/public/terrain/19/858588/353781.terrain differ diff --git a/public/terrain/19/858588/353782.terrain b/public/terrain/19/858588/353782.terrain new file mode 100644 index 000000000..855087a82 Binary files /dev/null and b/public/terrain/19/858588/353782.terrain differ diff --git a/public/terrain/19/858588/353783.terrain b/public/terrain/19/858588/353783.terrain new file mode 100644 index 000000000..3054e241b Binary files /dev/null and b/public/terrain/19/858588/353783.terrain differ diff --git a/public/terrain/19/858588/353784.terrain b/public/terrain/19/858588/353784.terrain new file mode 100644 index 000000000..cb374047c Binary files /dev/null and b/public/terrain/19/858588/353784.terrain differ diff --git a/public/terrain/19/858588/353785.terrain b/public/terrain/19/858588/353785.terrain new file mode 100644 index 000000000..97fc571a1 Binary files /dev/null and b/public/terrain/19/858588/353785.terrain differ diff --git a/public/terrain/19/858588/353786.terrain b/public/terrain/19/858588/353786.terrain new file mode 100644 index 000000000..0e0296006 Binary files /dev/null and b/public/terrain/19/858588/353786.terrain differ diff --git a/public/terrain/19/858588/353787.terrain b/public/terrain/19/858588/353787.terrain new file mode 100644 index 000000000..ab5f1ef20 Binary files /dev/null and b/public/terrain/19/858588/353787.terrain differ diff --git a/public/terrain/19/858588/353788.terrain b/public/terrain/19/858588/353788.terrain new file mode 100644 index 000000000..e939cfd05 Binary files /dev/null and b/public/terrain/19/858588/353788.terrain differ diff --git a/public/terrain/19/858588/353789.terrain b/public/terrain/19/858588/353789.terrain new file mode 100644 index 000000000..112f9b4ac Binary files /dev/null and b/public/terrain/19/858588/353789.terrain differ diff --git a/public/terrain/19/858588/353790.terrain b/public/terrain/19/858588/353790.terrain new file mode 100644 index 000000000..a10ee2731 Binary files /dev/null and b/public/terrain/19/858588/353790.terrain differ diff --git a/public/terrain/19/858588/353791.terrain b/public/terrain/19/858588/353791.terrain new file mode 100644 index 000000000..3f6da28af Binary files /dev/null and b/public/terrain/19/858588/353791.terrain differ diff --git a/public/terrain/19/858588/353792.terrain b/public/terrain/19/858588/353792.terrain new file mode 100644 index 000000000..b300f7d46 Binary files /dev/null and b/public/terrain/19/858588/353792.terrain differ diff --git a/public/terrain/19/858588/353793.terrain b/public/terrain/19/858588/353793.terrain new file mode 100644 index 000000000..4e2a1d909 Binary files /dev/null and b/public/terrain/19/858588/353793.terrain differ diff --git a/public/terrain/19/858588/353794.terrain b/public/terrain/19/858588/353794.terrain new file mode 100644 index 000000000..4d05e4230 Binary files /dev/null and b/public/terrain/19/858588/353794.terrain differ diff --git a/public/terrain/19/858588/353795.terrain b/public/terrain/19/858588/353795.terrain new file mode 100644 index 000000000..d5c7bc06b Binary files /dev/null and b/public/terrain/19/858588/353795.terrain differ diff --git a/public/terrain/19/858588/353796.terrain b/public/terrain/19/858588/353796.terrain new file mode 100644 index 000000000..c725b159c Binary files /dev/null and b/public/terrain/19/858588/353796.terrain differ diff --git a/public/terrain/19/858588/353797.terrain b/public/terrain/19/858588/353797.terrain new file mode 100644 index 000000000..55fce8cbe Binary files /dev/null and b/public/terrain/19/858588/353797.terrain differ diff --git a/public/terrain/19/858588/353798.terrain b/public/terrain/19/858588/353798.terrain new file mode 100644 index 000000000..9ef7ce1ee Binary files /dev/null and b/public/terrain/19/858588/353798.terrain differ diff --git a/public/terrain/19/858588/353799.terrain b/public/terrain/19/858588/353799.terrain new file mode 100644 index 000000000..a766e0465 Binary files /dev/null and b/public/terrain/19/858588/353799.terrain differ diff --git a/public/terrain/19/858588/353800.terrain b/public/terrain/19/858588/353800.terrain new file mode 100644 index 000000000..62c12c1b2 Binary files /dev/null and b/public/terrain/19/858588/353800.terrain differ diff --git a/public/terrain/19/858588/353801.terrain b/public/terrain/19/858588/353801.terrain new file mode 100644 index 000000000..7569354c3 Binary files /dev/null and b/public/terrain/19/858588/353801.terrain differ diff --git a/public/terrain/19/858588/353802.terrain b/public/terrain/19/858588/353802.terrain new file mode 100644 index 000000000..88998bfca Binary files /dev/null and b/public/terrain/19/858588/353802.terrain differ diff --git a/public/terrain/19/858588/353803.terrain b/public/terrain/19/858588/353803.terrain new file mode 100644 index 000000000..78aaae5ca Binary files /dev/null and b/public/terrain/19/858588/353803.terrain differ diff --git a/public/terrain/19/858588/353804.terrain b/public/terrain/19/858588/353804.terrain new file mode 100644 index 000000000..05b7d1a2a Binary files /dev/null and b/public/terrain/19/858588/353804.terrain differ diff --git a/public/terrain/19/858588/353805.terrain b/public/terrain/19/858588/353805.terrain new file mode 100644 index 000000000..4474dd48a Binary files /dev/null and b/public/terrain/19/858588/353805.terrain differ diff --git a/public/terrain/19/858588/353806.terrain b/public/terrain/19/858588/353806.terrain new file mode 100644 index 000000000..9f5c3f224 Binary files /dev/null and b/public/terrain/19/858588/353806.terrain differ diff --git a/public/terrain/19/858588/353807.terrain b/public/terrain/19/858588/353807.terrain new file mode 100644 index 000000000..c65ca5317 Binary files /dev/null and b/public/terrain/19/858588/353807.terrain differ diff --git a/public/terrain/19/858588/353808.terrain b/public/terrain/19/858588/353808.terrain new file mode 100644 index 000000000..d217b2a72 Binary files /dev/null and b/public/terrain/19/858588/353808.terrain differ diff --git a/public/terrain/19/858588/353809.terrain b/public/terrain/19/858588/353809.terrain new file mode 100644 index 000000000..1e19c073b Binary files /dev/null and b/public/terrain/19/858588/353809.terrain differ diff --git a/public/terrain/19/858588/353810.terrain b/public/terrain/19/858588/353810.terrain new file mode 100644 index 000000000..7def15a11 Binary files /dev/null and b/public/terrain/19/858588/353810.terrain differ diff --git a/public/terrain/19/858588/353811.terrain b/public/terrain/19/858588/353811.terrain new file mode 100644 index 000000000..c1a5c4d4f Binary files /dev/null and b/public/terrain/19/858588/353811.terrain differ diff --git a/public/terrain/19/858588/353812.terrain b/public/terrain/19/858588/353812.terrain new file mode 100644 index 000000000..25968cba0 Binary files /dev/null and b/public/terrain/19/858588/353812.terrain differ diff --git a/public/terrain/19/858588/353813.terrain b/public/terrain/19/858588/353813.terrain new file mode 100644 index 000000000..3015f5bc6 Binary files /dev/null and b/public/terrain/19/858588/353813.terrain differ diff --git a/public/terrain/19/858588/353814.terrain b/public/terrain/19/858588/353814.terrain new file mode 100644 index 000000000..5ff97ee62 Binary files /dev/null and b/public/terrain/19/858588/353814.terrain differ diff --git a/public/terrain/19/858588/353815.terrain b/public/terrain/19/858588/353815.terrain new file mode 100644 index 000000000..50ce42a8a Binary files /dev/null and b/public/terrain/19/858588/353815.terrain differ diff --git a/public/terrain/19/858588/353816.terrain b/public/terrain/19/858588/353816.terrain new file mode 100644 index 000000000..96436125c Binary files /dev/null and b/public/terrain/19/858588/353816.terrain differ diff --git a/public/terrain/19/858588/353817.terrain b/public/terrain/19/858588/353817.terrain new file mode 100644 index 000000000..930ce30ba Binary files /dev/null and b/public/terrain/19/858588/353817.terrain differ diff --git a/public/terrain/19/858588/353818.terrain b/public/terrain/19/858588/353818.terrain new file mode 100644 index 000000000..76350532e Binary files /dev/null and b/public/terrain/19/858588/353818.terrain differ diff --git a/public/terrain/19/858588/353819.terrain b/public/terrain/19/858588/353819.terrain new file mode 100644 index 000000000..67c95793e Binary files /dev/null and b/public/terrain/19/858588/353819.terrain differ diff --git a/public/terrain/19/858588/353820.terrain b/public/terrain/19/858588/353820.terrain new file mode 100644 index 000000000..c023c0236 Binary files /dev/null and b/public/terrain/19/858588/353820.terrain differ diff --git a/public/terrain/19/858588/353821.terrain b/public/terrain/19/858588/353821.terrain new file mode 100644 index 000000000..83ce18484 Binary files /dev/null and b/public/terrain/19/858588/353821.terrain differ diff --git a/public/terrain/19/858588/353822.terrain b/public/terrain/19/858588/353822.terrain new file mode 100644 index 000000000..9d69a049d Binary files /dev/null and b/public/terrain/19/858588/353822.terrain differ diff --git a/public/terrain/19/858588/353823.terrain b/public/terrain/19/858588/353823.terrain new file mode 100644 index 000000000..f5829828b Binary files /dev/null and b/public/terrain/19/858588/353823.terrain differ diff --git a/public/terrain/19/858588/353824.terrain b/public/terrain/19/858588/353824.terrain new file mode 100644 index 000000000..c488cec1e Binary files /dev/null and b/public/terrain/19/858588/353824.terrain differ diff --git a/public/terrain/19/858588/353825.terrain b/public/terrain/19/858588/353825.terrain new file mode 100644 index 000000000..0b9bf9260 Binary files /dev/null and b/public/terrain/19/858588/353825.terrain differ diff --git a/public/terrain/19/858588/353826.terrain b/public/terrain/19/858588/353826.terrain new file mode 100644 index 000000000..ce3f47b7e Binary files /dev/null and b/public/terrain/19/858588/353826.terrain differ diff --git a/public/terrain/19/858588/353827.terrain b/public/terrain/19/858588/353827.terrain new file mode 100644 index 000000000..0cdbe7c2a Binary files /dev/null and b/public/terrain/19/858588/353827.terrain differ diff --git a/public/terrain/19/858588/353828.terrain b/public/terrain/19/858588/353828.terrain new file mode 100644 index 000000000..6569e3f13 Binary files /dev/null and b/public/terrain/19/858588/353828.terrain differ diff --git a/public/terrain/19/858588/353829.terrain b/public/terrain/19/858588/353829.terrain new file mode 100644 index 000000000..feeee9699 Binary files /dev/null and b/public/terrain/19/858588/353829.terrain differ diff --git a/public/terrain/19/858588/353830.terrain b/public/terrain/19/858588/353830.terrain new file mode 100644 index 000000000..e6c8ee395 Binary files /dev/null and b/public/terrain/19/858588/353830.terrain differ diff --git a/public/terrain/19/858588/353831.terrain b/public/terrain/19/858588/353831.terrain new file mode 100644 index 000000000..b89ce4ced Binary files /dev/null and b/public/terrain/19/858588/353831.terrain differ diff --git a/public/terrain/19/858588/353832.terrain b/public/terrain/19/858588/353832.terrain new file mode 100644 index 000000000..869d84ca8 Binary files /dev/null and b/public/terrain/19/858588/353832.terrain differ diff --git a/public/terrain/19/858588/353833.terrain b/public/terrain/19/858588/353833.terrain new file mode 100644 index 000000000..4c35723aa Binary files /dev/null and b/public/terrain/19/858588/353833.terrain differ diff --git a/public/terrain/19/858588/353834.terrain b/public/terrain/19/858588/353834.terrain new file mode 100644 index 000000000..9ffc17e86 Binary files /dev/null and b/public/terrain/19/858588/353834.terrain differ diff --git a/public/terrain/19/858588/353835.terrain b/public/terrain/19/858588/353835.terrain new file mode 100644 index 000000000..abb1c03bb Binary files /dev/null and b/public/terrain/19/858588/353835.terrain differ diff --git a/public/terrain/19/858588/353836.terrain b/public/terrain/19/858588/353836.terrain new file mode 100644 index 000000000..0d96b46c3 Binary files /dev/null and b/public/terrain/19/858588/353836.terrain differ diff --git a/public/terrain/19/858588/353837.terrain b/public/terrain/19/858588/353837.terrain new file mode 100644 index 000000000..35b79e084 Binary files /dev/null and b/public/terrain/19/858588/353837.terrain differ diff --git a/public/terrain/19/858588/353838.terrain b/public/terrain/19/858588/353838.terrain new file mode 100644 index 000000000..1af839fb4 Binary files /dev/null and b/public/terrain/19/858588/353838.terrain differ diff --git a/public/terrain/19/858588/353839.terrain b/public/terrain/19/858588/353839.terrain new file mode 100644 index 000000000..a27a9fa40 Binary files /dev/null and b/public/terrain/19/858588/353839.terrain differ diff --git a/public/terrain/19/858588/353840.terrain b/public/terrain/19/858588/353840.terrain new file mode 100644 index 000000000..9d7bc11a9 Binary files /dev/null and b/public/terrain/19/858588/353840.terrain differ diff --git a/public/terrain/19/858588/353841.terrain b/public/terrain/19/858588/353841.terrain new file mode 100644 index 000000000..a16e0c33a Binary files /dev/null and b/public/terrain/19/858588/353841.terrain differ diff --git a/public/terrain/19/858588/353842.terrain b/public/terrain/19/858588/353842.terrain new file mode 100644 index 000000000..718f998f4 Binary files /dev/null and b/public/terrain/19/858588/353842.terrain differ diff --git a/public/terrain/19/858588/353843.terrain b/public/terrain/19/858588/353843.terrain new file mode 100644 index 000000000..9bcc49ca3 Binary files /dev/null and b/public/terrain/19/858588/353843.terrain differ diff --git a/public/terrain/19/858588/353844.terrain b/public/terrain/19/858588/353844.terrain new file mode 100644 index 000000000..11a845ca7 Binary files /dev/null and b/public/terrain/19/858588/353844.terrain differ diff --git a/public/terrain/19/858588/353845.terrain b/public/terrain/19/858588/353845.terrain new file mode 100644 index 000000000..0670f653c Binary files /dev/null and b/public/terrain/19/858588/353845.terrain differ diff --git a/public/terrain/19/858588/353846.terrain b/public/terrain/19/858588/353846.terrain new file mode 100644 index 000000000..d0ba86933 Binary files /dev/null and b/public/terrain/19/858588/353846.terrain differ diff --git a/public/terrain/19/858588/353847.terrain b/public/terrain/19/858588/353847.terrain new file mode 100644 index 000000000..69a59bf55 Binary files /dev/null and b/public/terrain/19/858588/353847.terrain differ diff --git a/public/terrain/19/858588/353848.terrain b/public/terrain/19/858588/353848.terrain new file mode 100644 index 000000000..4d84f4f60 Binary files /dev/null and b/public/terrain/19/858588/353848.terrain differ diff --git a/public/terrain/19/858588/353849.terrain b/public/terrain/19/858588/353849.terrain new file mode 100644 index 000000000..a7eef06f4 Binary files /dev/null and b/public/terrain/19/858588/353849.terrain differ diff --git a/public/terrain/19/858588/353850.terrain b/public/terrain/19/858588/353850.terrain new file mode 100644 index 000000000..5fa776ac9 Binary files /dev/null and b/public/terrain/19/858588/353850.terrain differ diff --git a/public/terrain/19/858588/353851.terrain b/public/terrain/19/858588/353851.terrain new file mode 100644 index 000000000..de9b335d0 Binary files /dev/null and b/public/terrain/19/858588/353851.terrain differ diff --git a/public/terrain/19/858588/353852.terrain b/public/terrain/19/858588/353852.terrain new file mode 100644 index 000000000..6d6286ad7 Binary files /dev/null and b/public/terrain/19/858588/353852.terrain differ diff --git a/public/terrain/19/858588/353853.terrain b/public/terrain/19/858588/353853.terrain new file mode 100644 index 000000000..e59630c97 Binary files /dev/null and b/public/terrain/19/858588/353853.terrain differ diff --git a/public/terrain/19/858588/353854.terrain b/public/terrain/19/858588/353854.terrain new file mode 100644 index 000000000..1b5b1058b Binary files /dev/null and b/public/terrain/19/858588/353854.terrain differ diff --git a/public/terrain/19/858588/353855.terrain b/public/terrain/19/858588/353855.terrain new file mode 100644 index 000000000..848b73dc5 Binary files /dev/null and b/public/terrain/19/858588/353855.terrain differ diff --git a/public/terrain/19/858588/353856.terrain b/public/terrain/19/858588/353856.terrain new file mode 100644 index 000000000..09cc8013e Binary files /dev/null and b/public/terrain/19/858588/353856.terrain differ diff --git a/public/terrain/19/858588/353857.terrain b/public/terrain/19/858588/353857.terrain new file mode 100644 index 000000000..243fb99f8 Binary files /dev/null and b/public/terrain/19/858588/353857.terrain differ diff --git a/public/terrain/19/858588/353858.terrain b/public/terrain/19/858588/353858.terrain new file mode 100644 index 000000000..3b6efc710 Binary files /dev/null and b/public/terrain/19/858588/353858.terrain differ diff --git a/public/terrain/19/858588/353859.terrain b/public/terrain/19/858588/353859.terrain new file mode 100644 index 000000000..217b26f80 Binary files /dev/null and b/public/terrain/19/858588/353859.terrain differ diff --git a/public/terrain/19/858588/353860.terrain b/public/terrain/19/858588/353860.terrain new file mode 100644 index 000000000..8c2194716 Binary files /dev/null and b/public/terrain/19/858588/353860.terrain differ diff --git a/public/terrain/19/858588/353861.terrain b/public/terrain/19/858588/353861.terrain new file mode 100644 index 000000000..3fe69ab92 Binary files /dev/null and b/public/terrain/19/858588/353861.terrain differ diff --git a/public/terrain/19/858588/353862.terrain b/public/terrain/19/858588/353862.terrain new file mode 100644 index 000000000..ec20b558d Binary files /dev/null and b/public/terrain/19/858588/353862.terrain differ diff --git a/public/terrain/19/858588/353863.terrain b/public/terrain/19/858588/353863.terrain new file mode 100644 index 000000000..a2081be7e Binary files /dev/null and b/public/terrain/19/858588/353863.terrain differ diff --git a/public/terrain/19/858588/353864.terrain b/public/terrain/19/858588/353864.terrain new file mode 100644 index 000000000..e8d19244e Binary files /dev/null and b/public/terrain/19/858588/353864.terrain differ diff --git a/public/terrain/19/858588/353865.terrain b/public/terrain/19/858588/353865.terrain new file mode 100644 index 000000000..a1973166f Binary files /dev/null and b/public/terrain/19/858588/353865.terrain differ diff --git a/public/terrain/19/858588/353866.terrain b/public/terrain/19/858588/353866.terrain new file mode 100644 index 000000000..565710703 Binary files /dev/null and b/public/terrain/19/858588/353866.terrain differ diff --git a/public/terrain/19/858588/353867.terrain b/public/terrain/19/858588/353867.terrain new file mode 100644 index 000000000..45f479aac Binary files /dev/null and b/public/terrain/19/858588/353867.terrain differ diff --git a/public/terrain/19/858588/353868.terrain b/public/terrain/19/858588/353868.terrain new file mode 100644 index 000000000..b65c7218e Binary files /dev/null and b/public/terrain/19/858588/353868.terrain differ diff --git a/public/terrain/19/858588/353869.terrain b/public/terrain/19/858588/353869.terrain new file mode 100644 index 000000000..b66941eb2 Binary files /dev/null and b/public/terrain/19/858588/353869.terrain differ diff --git a/public/terrain/19/858588/353870.terrain b/public/terrain/19/858588/353870.terrain new file mode 100644 index 000000000..610de0466 Binary files /dev/null and b/public/terrain/19/858588/353870.terrain differ diff --git a/public/terrain/19/858588/353871.terrain b/public/terrain/19/858588/353871.terrain new file mode 100644 index 000000000..13b12bb6f Binary files /dev/null and b/public/terrain/19/858588/353871.terrain differ diff --git a/public/terrain/19/858588/353872.terrain b/public/terrain/19/858588/353872.terrain new file mode 100644 index 000000000..bc2e28831 Binary files /dev/null and b/public/terrain/19/858588/353872.terrain differ diff --git a/public/terrain/19/858588/353873.terrain b/public/terrain/19/858588/353873.terrain new file mode 100644 index 000000000..e5175e272 Binary files /dev/null and b/public/terrain/19/858588/353873.terrain differ diff --git a/public/terrain/19/858588/353874.terrain b/public/terrain/19/858588/353874.terrain new file mode 100644 index 000000000..203688ce9 Binary files /dev/null and b/public/terrain/19/858588/353874.terrain differ diff --git a/public/terrain/19/858588/353875.terrain b/public/terrain/19/858588/353875.terrain new file mode 100644 index 000000000..ad1590c04 Binary files /dev/null and b/public/terrain/19/858588/353875.terrain differ diff --git a/public/terrain/19/858588/353876.terrain b/public/terrain/19/858588/353876.terrain new file mode 100644 index 000000000..27a399f13 Binary files /dev/null and b/public/terrain/19/858588/353876.terrain differ diff --git a/public/terrain/19/858588/353877.terrain b/public/terrain/19/858588/353877.terrain new file mode 100644 index 000000000..fada836fd Binary files /dev/null and b/public/terrain/19/858588/353877.terrain differ diff --git a/public/terrain/19/858588/353878.terrain b/public/terrain/19/858588/353878.terrain new file mode 100644 index 000000000..3735121c8 Binary files /dev/null and b/public/terrain/19/858588/353878.terrain differ diff --git a/public/terrain/19/858588/353879.terrain b/public/terrain/19/858588/353879.terrain new file mode 100644 index 000000000..9dc7230e4 Binary files /dev/null and b/public/terrain/19/858588/353879.terrain differ diff --git a/public/terrain/19/858588/353880.terrain b/public/terrain/19/858588/353880.terrain new file mode 100644 index 000000000..d907075c3 Binary files /dev/null and b/public/terrain/19/858588/353880.terrain differ diff --git a/public/terrain/19/858588/353881.terrain b/public/terrain/19/858588/353881.terrain new file mode 100644 index 000000000..781ce0a35 Binary files /dev/null and b/public/terrain/19/858588/353881.terrain differ diff --git a/public/terrain/19/858588/353882.terrain b/public/terrain/19/858588/353882.terrain new file mode 100644 index 000000000..06dde4fca Binary files /dev/null and b/public/terrain/19/858588/353882.terrain differ diff --git a/public/terrain/19/858588/353883.terrain b/public/terrain/19/858588/353883.terrain new file mode 100644 index 000000000..d94fcd9e3 Binary files /dev/null and b/public/terrain/19/858588/353883.terrain differ diff --git a/public/terrain/19/858588/353884.terrain b/public/terrain/19/858588/353884.terrain new file mode 100644 index 000000000..32cc4fa1e Binary files /dev/null and b/public/terrain/19/858588/353884.terrain differ diff --git a/public/terrain/19/858588/353885.terrain b/public/terrain/19/858588/353885.terrain new file mode 100644 index 000000000..a2fe5f45b Binary files /dev/null and b/public/terrain/19/858588/353885.terrain differ diff --git a/public/terrain/19/858588/353886.terrain b/public/terrain/19/858588/353886.terrain new file mode 100644 index 000000000..33acc323e Binary files /dev/null and b/public/terrain/19/858588/353886.terrain differ diff --git a/public/terrain/19/858588/353887.terrain b/public/terrain/19/858588/353887.terrain new file mode 100644 index 000000000..b7f4b4ba9 Binary files /dev/null and b/public/terrain/19/858588/353887.terrain differ diff --git a/public/terrain/19/858588/353888.terrain b/public/terrain/19/858588/353888.terrain new file mode 100644 index 000000000..3f9121c65 Binary files /dev/null and b/public/terrain/19/858588/353888.terrain differ diff --git a/public/terrain/19/858588/353889.terrain b/public/terrain/19/858588/353889.terrain new file mode 100644 index 000000000..bc29e926c Binary files /dev/null and b/public/terrain/19/858588/353889.terrain differ diff --git a/public/terrain/19/858588/353890.terrain b/public/terrain/19/858588/353890.terrain new file mode 100644 index 000000000..9b96b38a2 Binary files /dev/null and b/public/terrain/19/858588/353890.terrain differ diff --git a/public/terrain/19/858588/353891.terrain b/public/terrain/19/858588/353891.terrain new file mode 100644 index 000000000..212c38bc4 Binary files /dev/null and b/public/terrain/19/858588/353891.terrain differ diff --git a/public/terrain/19/858588/353892.terrain b/public/terrain/19/858588/353892.terrain new file mode 100644 index 000000000..ff169ab06 Binary files /dev/null and b/public/terrain/19/858588/353892.terrain differ diff --git a/public/terrain/19/858588/353893.terrain b/public/terrain/19/858588/353893.terrain new file mode 100644 index 000000000..5556eace5 Binary files /dev/null and b/public/terrain/19/858588/353893.terrain differ diff --git a/public/terrain/19/858588/353894.terrain b/public/terrain/19/858588/353894.terrain new file mode 100644 index 000000000..a84667201 Binary files /dev/null and b/public/terrain/19/858588/353894.terrain differ diff --git a/public/terrain/19/858588/353895.terrain b/public/terrain/19/858588/353895.terrain new file mode 100644 index 000000000..048d9de65 Binary files /dev/null and b/public/terrain/19/858588/353895.terrain differ diff --git a/public/terrain/19/858588/353896.terrain b/public/terrain/19/858588/353896.terrain new file mode 100644 index 000000000..3a1504172 Binary files /dev/null and b/public/terrain/19/858588/353896.terrain differ diff --git a/public/terrain/19/858588/353897.terrain b/public/terrain/19/858588/353897.terrain new file mode 100644 index 000000000..be7bfd085 Binary files /dev/null and b/public/terrain/19/858588/353897.terrain differ diff --git a/public/terrain/19/858588/353898.terrain b/public/terrain/19/858588/353898.terrain new file mode 100644 index 000000000..27e36c26f Binary files /dev/null and b/public/terrain/19/858588/353898.terrain differ diff --git a/public/terrain/19/858588/353899.terrain b/public/terrain/19/858588/353899.terrain new file mode 100644 index 000000000..9b6be867e Binary files /dev/null and b/public/terrain/19/858588/353899.terrain differ diff --git a/public/terrain/19/858588/353900.terrain b/public/terrain/19/858588/353900.terrain new file mode 100644 index 000000000..0d4ac531d Binary files /dev/null and b/public/terrain/19/858588/353900.terrain differ diff --git a/public/terrain/19/858588/353901.terrain b/public/terrain/19/858588/353901.terrain new file mode 100644 index 000000000..2c5fe1618 Binary files /dev/null and b/public/terrain/19/858588/353901.terrain differ diff --git a/public/terrain/19/858588/353902.terrain b/public/terrain/19/858588/353902.terrain new file mode 100644 index 000000000..22453be96 Binary files /dev/null and b/public/terrain/19/858588/353902.terrain differ diff --git a/public/terrain/19/858588/353903.terrain b/public/terrain/19/858588/353903.terrain new file mode 100644 index 000000000..894106cc4 Binary files /dev/null and b/public/terrain/19/858588/353903.terrain differ diff --git a/public/terrain/19/858588/353904.terrain b/public/terrain/19/858588/353904.terrain new file mode 100644 index 000000000..e04b9fc8f Binary files /dev/null and b/public/terrain/19/858588/353904.terrain differ diff --git a/public/terrain/19/858588/353905.terrain b/public/terrain/19/858588/353905.terrain new file mode 100644 index 000000000..a953f126a Binary files /dev/null and b/public/terrain/19/858588/353905.terrain differ diff --git a/public/terrain/19/858588/353906.terrain b/public/terrain/19/858588/353906.terrain new file mode 100644 index 000000000..6ff48b533 Binary files /dev/null and b/public/terrain/19/858588/353906.terrain differ diff --git a/public/terrain/19/858588/353907.terrain b/public/terrain/19/858588/353907.terrain new file mode 100644 index 000000000..5ecefa29b Binary files /dev/null and b/public/terrain/19/858588/353907.terrain differ diff --git a/public/terrain/19/858588/353908.terrain b/public/terrain/19/858588/353908.terrain new file mode 100644 index 000000000..81e0759a0 Binary files /dev/null and b/public/terrain/19/858588/353908.terrain differ diff --git a/public/terrain/19/858588/353909.terrain b/public/terrain/19/858588/353909.terrain new file mode 100644 index 000000000..7b82bca0c Binary files /dev/null and b/public/terrain/19/858588/353909.terrain differ diff --git a/public/terrain/19/858588/353910.terrain b/public/terrain/19/858588/353910.terrain new file mode 100644 index 000000000..e203b84a8 Binary files /dev/null and b/public/terrain/19/858588/353910.terrain differ diff --git a/public/terrain/19/858588/353911.terrain b/public/terrain/19/858588/353911.terrain new file mode 100644 index 000000000..1207692da Binary files /dev/null and b/public/terrain/19/858588/353911.terrain differ diff --git a/public/terrain/19/858588/353912.terrain b/public/terrain/19/858588/353912.terrain new file mode 100644 index 000000000..19dc0947c Binary files /dev/null and b/public/terrain/19/858588/353912.terrain differ diff --git a/public/terrain/19/858588/353913.terrain b/public/terrain/19/858588/353913.terrain new file mode 100644 index 000000000..5bef636d3 Binary files /dev/null and b/public/terrain/19/858588/353913.terrain differ diff --git a/public/terrain/19/858588/353914.terrain b/public/terrain/19/858588/353914.terrain new file mode 100644 index 000000000..a43f9faf3 Binary files /dev/null and b/public/terrain/19/858588/353914.terrain differ diff --git a/public/terrain/19/858588/353915.terrain b/public/terrain/19/858588/353915.terrain new file mode 100644 index 000000000..f0dcc6f0f Binary files /dev/null and b/public/terrain/19/858588/353915.terrain differ diff --git a/public/terrain/19/858588/353916.terrain b/public/terrain/19/858588/353916.terrain new file mode 100644 index 000000000..35c620e44 Binary files /dev/null and b/public/terrain/19/858588/353916.terrain differ diff --git a/public/terrain/19/858588/353917.terrain b/public/terrain/19/858588/353917.terrain new file mode 100644 index 000000000..13ed3e860 Binary files /dev/null and b/public/terrain/19/858588/353917.terrain differ diff --git a/public/terrain/19/858588/353918.terrain b/public/terrain/19/858588/353918.terrain new file mode 100644 index 000000000..4d167c253 Binary files /dev/null and b/public/terrain/19/858588/353918.terrain differ diff --git a/public/terrain/19/858588/353919.terrain b/public/terrain/19/858588/353919.terrain new file mode 100644 index 000000000..ef9444184 Binary files /dev/null and b/public/terrain/19/858588/353919.terrain differ diff --git a/public/terrain/19/858588/353920.terrain b/public/terrain/19/858588/353920.terrain new file mode 100644 index 000000000..cb41ad155 Binary files /dev/null and b/public/terrain/19/858588/353920.terrain differ diff --git a/public/terrain/19/858588/353921.terrain b/public/terrain/19/858588/353921.terrain new file mode 100644 index 000000000..2a4b773e9 Binary files /dev/null and b/public/terrain/19/858588/353921.terrain differ diff --git a/public/terrain/19/858588/353922.terrain b/public/terrain/19/858588/353922.terrain new file mode 100644 index 000000000..ace2f671b Binary files /dev/null and b/public/terrain/19/858588/353922.terrain differ diff --git a/public/terrain/19/858588/353923.terrain b/public/terrain/19/858588/353923.terrain new file mode 100644 index 000000000..cf4c08f92 Binary files /dev/null and b/public/terrain/19/858588/353923.terrain differ diff --git a/public/terrain/19/858588/353924.terrain b/public/terrain/19/858588/353924.terrain new file mode 100644 index 000000000..cc40aa87a Binary files /dev/null and b/public/terrain/19/858588/353924.terrain differ diff --git a/public/terrain/19/858588/353925.terrain b/public/terrain/19/858588/353925.terrain new file mode 100644 index 000000000..5ee35a516 Binary files /dev/null and b/public/terrain/19/858588/353925.terrain differ diff --git a/public/terrain/19/858588/353926.terrain b/public/terrain/19/858588/353926.terrain new file mode 100644 index 000000000..df066d1cc Binary files /dev/null and b/public/terrain/19/858588/353926.terrain differ diff --git a/public/terrain/19/858588/353927.terrain b/public/terrain/19/858588/353927.terrain new file mode 100644 index 000000000..555299be5 Binary files /dev/null and b/public/terrain/19/858588/353927.terrain differ diff --git a/public/terrain/19/858588/353928.terrain b/public/terrain/19/858588/353928.terrain new file mode 100644 index 000000000..e8a95470d Binary files /dev/null and b/public/terrain/19/858588/353928.terrain differ diff --git a/public/terrain/19/858588/353929.terrain b/public/terrain/19/858588/353929.terrain new file mode 100644 index 000000000..b36999137 Binary files /dev/null and b/public/terrain/19/858588/353929.terrain differ diff --git a/public/terrain/19/858588/353930.terrain b/public/terrain/19/858588/353930.terrain new file mode 100644 index 000000000..fa24bce2a Binary files /dev/null and b/public/terrain/19/858588/353930.terrain differ diff --git a/public/terrain/19/858588/353931.terrain b/public/terrain/19/858588/353931.terrain new file mode 100644 index 000000000..33422cbb4 Binary files /dev/null and b/public/terrain/19/858588/353931.terrain differ diff --git a/public/terrain/19/858588/353932.terrain b/public/terrain/19/858588/353932.terrain new file mode 100644 index 000000000..9f4672b2c Binary files /dev/null and b/public/terrain/19/858588/353932.terrain differ diff --git a/public/terrain/19/858588/353933.terrain b/public/terrain/19/858588/353933.terrain new file mode 100644 index 000000000..a5268943d Binary files /dev/null and b/public/terrain/19/858588/353933.terrain differ diff --git a/public/terrain/19/858588/353934.terrain b/public/terrain/19/858588/353934.terrain new file mode 100644 index 000000000..59eb9f39b Binary files /dev/null and b/public/terrain/19/858588/353934.terrain differ diff --git a/public/terrain/19/858588/353935.terrain b/public/terrain/19/858588/353935.terrain new file mode 100644 index 000000000..59499bf33 Binary files /dev/null and b/public/terrain/19/858588/353935.terrain differ diff --git a/public/terrain/19/858588/353936.terrain b/public/terrain/19/858588/353936.terrain new file mode 100644 index 000000000..49ab0dd2c Binary files /dev/null and b/public/terrain/19/858588/353936.terrain differ diff --git a/public/terrain/19/858588/353937.terrain b/public/terrain/19/858588/353937.terrain new file mode 100644 index 000000000..0c8176061 Binary files /dev/null and b/public/terrain/19/858588/353937.terrain differ diff --git a/public/terrain/19/858588/353938.terrain b/public/terrain/19/858588/353938.terrain new file mode 100644 index 000000000..788d3de25 Binary files /dev/null and b/public/terrain/19/858588/353938.terrain differ diff --git a/public/terrain/19/858588/353939.terrain b/public/terrain/19/858588/353939.terrain new file mode 100644 index 000000000..a061745f1 Binary files /dev/null and b/public/terrain/19/858588/353939.terrain differ diff --git a/public/terrain/19/858588/353940.terrain b/public/terrain/19/858588/353940.terrain new file mode 100644 index 000000000..748387a9e Binary files /dev/null and b/public/terrain/19/858588/353940.terrain differ diff --git a/public/terrain/19/858588/353941.terrain b/public/terrain/19/858588/353941.terrain new file mode 100644 index 000000000..c877a62b5 Binary files /dev/null and b/public/terrain/19/858588/353941.terrain differ diff --git a/public/terrain/19/858588/353942.terrain b/public/terrain/19/858588/353942.terrain new file mode 100644 index 000000000..1bf31bc19 Binary files /dev/null and b/public/terrain/19/858588/353942.terrain differ diff --git a/public/terrain/19/858588/353943.terrain b/public/terrain/19/858588/353943.terrain new file mode 100644 index 000000000..5518ee41c Binary files /dev/null and b/public/terrain/19/858588/353943.terrain differ diff --git a/public/terrain/19/858588/353944.terrain b/public/terrain/19/858588/353944.terrain new file mode 100644 index 000000000..aa44d3266 Binary files /dev/null and b/public/terrain/19/858588/353944.terrain differ diff --git a/public/terrain/19/858588/353945.terrain b/public/terrain/19/858588/353945.terrain new file mode 100644 index 000000000..30d9549f7 Binary files /dev/null and b/public/terrain/19/858588/353945.terrain differ diff --git a/public/terrain/19/858588/353946.terrain b/public/terrain/19/858588/353946.terrain new file mode 100644 index 000000000..77404d40b Binary files /dev/null and b/public/terrain/19/858588/353946.terrain differ diff --git a/public/terrain/19/858588/353947.terrain b/public/terrain/19/858588/353947.terrain new file mode 100644 index 000000000..6f0aaf84f Binary files /dev/null and b/public/terrain/19/858588/353947.terrain differ diff --git a/public/terrain/19/858588/353948.terrain b/public/terrain/19/858588/353948.terrain new file mode 100644 index 000000000..647c9292a Binary files /dev/null and b/public/terrain/19/858588/353948.terrain differ diff --git a/public/terrain/19/858588/353949.terrain b/public/terrain/19/858588/353949.terrain new file mode 100644 index 000000000..53dd46e27 Binary files /dev/null and b/public/terrain/19/858588/353949.terrain differ diff --git a/public/terrain/19/858588/353950.terrain b/public/terrain/19/858588/353950.terrain new file mode 100644 index 000000000..376702a6f Binary files /dev/null and b/public/terrain/19/858588/353950.terrain differ diff --git a/public/terrain/19/858588/353951.terrain b/public/terrain/19/858588/353951.terrain new file mode 100644 index 000000000..651df1161 Binary files /dev/null and b/public/terrain/19/858588/353951.terrain differ diff --git a/public/terrain/19/858588/353952.terrain b/public/terrain/19/858588/353952.terrain new file mode 100644 index 000000000..ad31b7188 Binary files /dev/null and b/public/terrain/19/858588/353952.terrain differ diff --git a/public/terrain/19/858588/353953.terrain b/public/terrain/19/858588/353953.terrain new file mode 100644 index 000000000..e32b27886 Binary files /dev/null and b/public/terrain/19/858588/353953.terrain differ diff --git a/public/terrain/19/858588/353954.terrain b/public/terrain/19/858588/353954.terrain new file mode 100644 index 000000000..13332a119 Binary files /dev/null and b/public/terrain/19/858588/353954.terrain differ diff --git a/public/terrain/19/858588/353955.terrain b/public/terrain/19/858588/353955.terrain new file mode 100644 index 000000000..c0897fda2 Binary files /dev/null and b/public/terrain/19/858588/353955.terrain differ diff --git a/public/terrain/19/858588/353956.terrain b/public/terrain/19/858588/353956.terrain new file mode 100644 index 000000000..0745960ef Binary files /dev/null and b/public/terrain/19/858588/353956.terrain differ diff --git a/public/terrain/19/858588/353957.terrain b/public/terrain/19/858588/353957.terrain new file mode 100644 index 000000000..48de5e4ae Binary files /dev/null and b/public/terrain/19/858588/353957.terrain differ diff --git a/public/terrain/19/858588/353958.terrain b/public/terrain/19/858588/353958.terrain new file mode 100644 index 000000000..37ae9cfeb Binary files /dev/null and b/public/terrain/19/858588/353958.terrain differ diff --git a/public/terrain/19/858588/353959.terrain b/public/terrain/19/858588/353959.terrain new file mode 100644 index 000000000..9c150cd28 Binary files /dev/null and b/public/terrain/19/858588/353959.terrain differ diff --git a/public/terrain/19/858588/353960.terrain b/public/terrain/19/858588/353960.terrain new file mode 100644 index 000000000..bd744f174 Binary files /dev/null and b/public/terrain/19/858588/353960.terrain differ diff --git a/public/terrain/19/858588/353961.terrain b/public/terrain/19/858588/353961.terrain new file mode 100644 index 000000000..84077542d Binary files /dev/null and b/public/terrain/19/858588/353961.terrain differ diff --git a/public/terrain/19/858588/353962.terrain b/public/terrain/19/858588/353962.terrain new file mode 100644 index 000000000..71237a22c Binary files /dev/null and b/public/terrain/19/858588/353962.terrain differ diff --git a/public/terrain/19/858588/353963.terrain b/public/terrain/19/858588/353963.terrain new file mode 100644 index 000000000..294dfa39a Binary files /dev/null and b/public/terrain/19/858588/353963.terrain differ diff --git a/public/terrain/19/858588/353964.terrain b/public/terrain/19/858588/353964.terrain new file mode 100644 index 000000000..f3b9be98c Binary files /dev/null and b/public/terrain/19/858588/353964.terrain differ diff --git a/public/terrain/19/858588/353965.terrain b/public/terrain/19/858588/353965.terrain new file mode 100644 index 000000000..396d1b16d Binary files /dev/null and b/public/terrain/19/858588/353965.terrain differ diff --git a/public/terrain/19/858588/353966.terrain b/public/terrain/19/858588/353966.terrain new file mode 100644 index 000000000..02a2dd7c6 Binary files /dev/null and b/public/terrain/19/858588/353966.terrain differ diff --git a/public/terrain/19/858588/353967.terrain b/public/terrain/19/858588/353967.terrain new file mode 100644 index 000000000..31348514a Binary files /dev/null and b/public/terrain/19/858588/353967.terrain differ diff --git a/public/terrain/19/858588/353968.terrain b/public/terrain/19/858588/353968.terrain new file mode 100644 index 000000000..3febb3e0f Binary files /dev/null and b/public/terrain/19/858588/353968.terrain differ diff --git a/public/terrain/19/858588/353969.terrain b/public/terrain/19/858588/353969.terrain new file mode 100644 index 000000000..262d0bfe0 Binary files /dev/null and b/public/terrain/19/858588/353969.terrain differ diff --git a/public/terrain/19/858588/353970.terrain b/public/terrain/19/858588/353970.terrain new file mode 100644 index 000000000..4854717f3 Binary files /dev/null and b/public/terrain/19/858588/353970.terrain differ diff --git a/public/terrain/19/858588/353971.terrain b/public/terrain/19/858588/353971.terrain new file mode 100644 index 000000000..bec2ee2f9 Binary files /dev/null and b/public/terrain/19/858588/353971.terrain differ diff --git a/public/terrain/19/858588/353972.terrain b/public/terrain/19/858588/353972.terrain new file mode 100644 index 000000000..c7364fe6a Binary files /dev/null and b/public/terrain/19/858588/353972.terrain differ diff --git a/public/terrain/19/858588/353973.terrain b/public/terrain/19/858588/353973.terrain new file mode 100644 index 000000000..0adb8fd98 Binary files /dev/null and b/public/terrain/19/858588/353973.terrain differ diff --git a/public/terrain/19/858588/353974.terrain b/public/terrain/19/858588/353974.terrain new file mode 100644 index 000000000..24c393068 Binary files /dev/null and b/public/terrain/19/858588/353974.terrain differ diff --git a/public/terrain/19/858588/353975.terrain b/public/terrain/19/858588/353975.terrain new file mode 100644 index 000000000..dc373c3d9 Binary files /dev/null and b/public/terrain/19/858588/353975.terrain differ diff --git a/public/terrain/19/858588/353976.terrain b/public/terrain/19/858588/353976.terrain new file mode 100644 index 000000000..b3edc13e9 Binary files /dev/null and b/public/terrain/19/858588/353976.terrain differ diff --git a/public/terrain/19/858588/353977.terrain b/public/terrain/19/858588/353977.terrain new file mode 100644 index 000000000..b6b6606d9 Binary files /dev/null and b/public/terrain/19/858588/353977.terrain differ diff --git a/public/terrain/19/858588/353978.terrain b/public/terrain/19/858588/353978.terrain new file mode 100644 index 000000000..b87c3da34 Binary files /dev/null and b/public/terrain/19/858588/353978.terrain differ diff --git a/public/terrain/19/858588/353979.terrain b/public/terrain/19/858588/353979.terrain new file mode 100644 index 000000000..585f78560 Binary files /dev/null and b/public/terrain/19/858588/353979.terrain differ diff --git a/public/terrain/19/858588/353980.terrain b/public/terrain/19/858588/353980.terrain new file mode 100644 index 000000000..ae7e70c9f Binary files /dev/null and b/public/terrain/19/858588/353980.terrain differ diff --git a/public/terrain/19/858588/353981.terrain b/public/terrain/19/858588/353981.terrain new file mode 100644 index 000000000..56bd59409 Binary files /dev/null and b/public/terrain/19/858588/353981.terrain differ diff --git a/public/terrain/19/858588/353982.terrain b/public/terrain/19/858588/353982.terrain new file mode 100644 index 000000000..29ab15f49 Binary files /dev/null and b/public/terrain/19/858588/353982.terrain differ diff --git a/public/terrain/19/858588/353983.terrain b/public/terrain/19/858588/353983.terrain new file mode 100644 index 000000000..dfb386160 Binary files /dev/null and b/public/terrain/19/858588/353983.terrain differ diff --git a/public/terrain/19/858588/353984.terrain b/public/terrain/19/858588/353984.terrain new file mode 100644 index 000000000..59a3da59e Binary files /dev/null and b/public/terrain/19/858588/353984.terrain differ diff --git a/public/terrain/19/858588/353985.terrain b/public/terrain/19/858588/353985.terrain new file mode 100644 index 000000000..0fb2f53b0 Binary files /dev/null and b/public/terrain/19/858588/353985.terrain differ diff --git a/public/terrain/19/858588/353986.terrain b/public/terrain/19/858588/353986.terrain new file mode 100644 index 000000000..3657ce80e Binary files /dev/null and b/public/terrain/19/858588/353986.terrain differ diff --git a/public/terrain/19/858588/353987.terrain b/public/terrain/19/858588/353987.terrain new file mode 100644 index 000000000..daf8998e3 Binary files /dev/null and b/public/terrain/19/858588/353987.terrain differ diff --git a/public/terrain/19/858588/353988.terrain b/public/terrain/19/858588/353988.terrain new file mode 100644 index 000000000..b296d4bf2 Binary files /dev/null and b/public/terrain/19/858588/353988.terrain differ diff --git a/public/terrain/19/858588/353989.terrain b/public/terrain/19/858588/353989.terrain new file mode 100644 index 000000000..71e92e435 Binary files /dev/null and b/public/terrain/19/858588/353989.terrain differ diff --git a/public/terrain/19/858588/353990.terrain b/public/terrain/19/858588/353990.terrain new file mode 100644 index 000000000..59dba1201 Binary files /dev/null and b/public/terrain/19/858588/353990.terrain differ diff --git a/public/terrain/19/858588/353991.terrain b/public/terrain/19/858588/353991.terrain new file mode 100644 index 000000000..57d528160 Binary files /dev/null and b/public/terrain/19/858588/353991.terrain differ diff --git a/public/terrain/19/858588/353992.terrain b/public/terrain/19/858588/353992.terrain new file mode 100644 index 000000000..c7e5577f6 Binary files /dev/null and b/public/terrain/19/858588/353992.terrain differ diff --git a/public/terrain/19/858588/353993.terrain b/public/terrain/19/858588/353993.terrain new file mode 100644 index 000000000..b9b321fe4 Binary files /dev/null and b/public/terrain/19/858588/353993.terrain differ diff --git a/public/terrain/19/858588/353994.terrain b/public/terrain/19/858588/353994.terrain new file mode 100644 index 000000000..f4f86a529 Binary files /dev/null and b/public/terrain/19/858588/353994.terrain differ diff --git a/public/terrain/19/858588/353995.terrain b/public/terrain/19/858588/353995.terrain new file mode 100644 index 000000000..dd7326101 Binary files /dev/null and b/public/terrain/19/858588/353995.terrain differ diff --git a/public/terrain/19/858588/353996.terrain b/public/terrain/19/858588/353996.terrain new file mode 100644 index 000000000..2c708d342 Binary files /dev/null and b/public/terrain/19/858588/353996.terrain differ diff --git a/public/terrain/19/858588/353997.terrain b/public/terrain/19/858588/353997.terrain new file mode 100644 index 000000000..74685f63c Binary files /dev/null and b/public/terrain/19/858588/353997.terrain differ diff --git a/public/terrain/19/858588/353998.terrain b/public/terrain/19/858588/353998.terrain new file mode 100644 index 000000000..e9531af28 Binary files /dev/null and b/public/terrain/19/858588/353998.terrain differ diff --git a/public/terrain/19/858588/353999.terrain b/public/terrain/19/858588/353999.terrain new file mode 100644 index 000000000..2eadf9e4a Binary files /dev/null and b/public/terrain/19/858588/353999.terrain differ diff --git a/public/terrain/19/858588/354000.terrain b/public/terrain/19/858588/354000.terrain new file mode 100644 index 000000000..4ebc5f092 Binary files /dev/null and b/public/terrain/19/858588/354000.terrain differ diff --git a/public/terrain/19/858588/354001.terrain b/public/terrain/19/858588/354001.terrain new file mode 100644 index 000000000..eb80816ce Binary files /dev/null and b/public/terrain/19/858588/354001.terrain differ diff --git a/public/terrain/19/858588/354002.terrain b/public/terrain/19/858588/354002.terrain new file mode 100644 index 000000000..d6c15fe28 Binary files /dev/null and b/public/terrain/19/858588/354002.terrain differ diff --git a/public/terrain/19/858588/354003.terrain b/public/terrain/19/858588/354003.terrain new file mode 100644 index 000000000..cba7b3cde Binary files /dev/null and b/public/terrain/19/858588/354003.terrain differ diff --git a/public/terrain/19/858588/354004.terrain b/public/terrain/19/858588/354004.terrain new file mode 100644 index 000000000..4d8c9e1b9 Binary files /dev/null and b/public/terrain/19/858588/354004.terrain differ diff --git a/public/terrain/19/858588/354005.terrain b/public/terrain/19/858588/354005.terrain new file mode 100644 index 000000000..1301022fc Binary files /dev/null and b/public/terrain/19/858588/354005.terrain differ diff --git a/public/terrain/19/858588/354006.terrain b/public/terrain/19/858588/354006.terrain new file mode 100644 index 000000000..f557f72ed Binary files /dev/null and b/public/terrain/19/858588/354006.terrain differ diff --git a/public/terrain/19/858588/354007.terrain b/public/terrain/19/858588/354007.terrain new file mode 100644 index 000000000..078cf2176 Binary files /dev/null and b/public/terrain/19/858588/354007.terrain differ diff --git a/public/terrain/19/858588/354008.terrain b/public/terrain/19/858588/354008.terrain new file mode 100644 index 000000000..cf3d9450c Binary files /dev/null and b/public/terrain/19/858588/354008.terrain differ diff --git a/public/terrain/19/858588/354009.terrain b/public/terrain/19/858588/354009.terrain new file mode 100644 index 000000000..fac5eb0fa Binary files /dev/null and b/public/terrain/19/858588/354009.terrain differ diff --git a/public/terrain/19/858588/354010.terrain b/public/terrain/19/858588/354010.terrain new file mode 100644 index 000000000..de8808ba7 Binary files /dev/null and b/public/terrain/19/858588/354010.terrain differ diff --git a/public/terrain/19/858588/354011.terrain b/public/terrain/19/858588/354011.terrain new file mode 100644 index 000000000..d372b733c Binary files /dev/null and b/public/terrain/19/858588/354011.terrain differ diff --git a/public/terrain/19/858588/354012.terrain b/public/terrain/19/858588/354012.terrain new file mode 100644 index 000000000..26c59a554 Binary files /dev/null and b/public/terrain/19/858588/354012.terrain differ diff --git a/public/terrain/19/858588/354013.terrain b/public/terrain/19/858588/354013.terrain new file mode 100644 index 000000000..da17f10c7 Binary files /dev/null and b/public/terrain/19/858588/354013.terrain differ diff --git a/public/terrain/19/858588/354014.terrain b/public/terrain/19/858588/354014.terrain new file mode 100644 index 000000000..1008e274c Binary files /dev/null and b/public/terrain/19/858588/354014.terrain differ diff --git a/public/terrain/19/858588/354015.terrain b/public/terrain/19/858588/354015.terrain new file mode 100644 index 000000000..360156d80 Binary files /dev/null and b/public/terrain/19/858588/354015.terrain differ diff --git a/public/terrain/19/858588/354016.terrain b/public/terrain/19/858588/354016.terrain new file mode 100644 index 000000000..13f4ea354 Binary files /dev/null and b/public/terrain/19/858588/354016.terrain differ diff --git a/public/terrain/19/858588/354017.terrain b/public/terrain/19/858588/354017.terrain new file mode 100644 index 000000000..a7bfdd10e Binary files /dev/null and b/public/terrain/19/858588/354017.terrain differ diff --git a/public/terrain/19/858588/354018.terrain b/public/terrain/19/858588/354018.terrain new file mode 100644 index 000000000..14e09a42f Binary files /dev/null and b/public/terrain/19/858588/354018.terrain differ diff --git a/public/terrain/19/858588/354019.terrain b/public/terrain/19/858588/354019.terrain new file mode 100644 index 000000000..34af80f19 Binary files /dev/null and b/public/terrain/19/858588/354019.terrain differ diff --git a/public/terrain/19/858588/354020.terrain b/public/terrain/19/858588/354020.terrain new file mode 100644 index 000000000..932ade0b5 Binary files /dev/null and b/public/terrain/19/858588/354020.terrain differ diff --git a/public/terrain/19/858588/354021.terrain b/public/terrain/19/858588/354021.terrain new file mode 100644 index 000000000..6a8deb15e Binary files /dev/null and b/public/terrain/19/858588/354021.terrain differ diff --git a/public/terrain/19/858588/354022.terrain b/public/terrain/19/858588/354022.terrain new file mode 100644 index 000000000..8e1f5789c Binary files /dev/null and b/public/terrain/19/858588/354022.terrain differ diff --git a/public/terrain/19/858588/354023.terrain b/public/terrain/19/858588/354023.terrain new file mode 100644 index 000000000..a5054da78 Binary files /dev/null and b/public/terrain/19/858588/354023.terrain differ diff --git a/public/terrain/19/858588/354024.terrain b/public/terrain/19/858588/354024.terrain new file mode 100644 index 000000000..c789ba6b0 Binary files /dev/null and b/public/terrain/19/858588/354024.terrain differ diff --git a/public/terrain/19/858588/354025.terrain b/public/terrain/19/858588/354025.terrain new file mode 100644 index 000000000..9840ed87a Binary files /dev/null and b/public/terrain/19/858588/354025.terrain differ diff --git a/public/terrain/19/858588/354026.terrain b/public/terrain/19/858588/354026.terrain new file mode 100644 index 000000000..ab1aca86c Binary files /dev/null and b/public/terrain/19/858588/354026.terrain differ diff --git a/public/terrain/19/858588/354027.terrain b/public/terrain/19/858588/354027.terrain new file mode 100644 index 000000000..a6ad1b3f8 Binary files /dev/null and b/public/terrain/19/858588/354027.terrain differ diff --git a/public/terrain/19/858588/354028.terrain b/public/terrain/19/858588/354028.terrain new file mode 100644 index 000000000..b98d1a291 Binary files /dev/null and b/public/terrain/19/858588/354028.terrain differ diff --git a/public/terrain/19/858588/354029.terrain b/public/terrain/19/858588/354029.terrain new file mode 100644 index 000000000..a4af5ba6b Binary files /dev/null and b/public/terrain/19/858588/354029.terrain differ diff --git a/public/terrain/19/858588/354030.terrain b/public/terrain/19/858588/354030.terrain new file mode 100644 index 000000000..543e82ae5 Binary files /dev/null and b/public/terrain/19/858588/354030.terrain differ diff --git a/public/terrain/19/858588/354031.terrain b/public/terrain/19/858588/354031.terrain new file mode 100644 index 000000000..b8e12375e Binary files /dev/null and b/public/terrain/19/858588/354031.terrain differ diff --git a/public/terrain/19/858588/354032.terrain b/public/terrain/19/858588/354032.terrain new file mode 100644 index 000000000..2ec41cf97 Binary files /dev/null and b/public/terrain/19/858588/354032.terrain differ diff --git a/public/terrain/19/858588/354033.terrain b/public/terrain/19/858588/354033.terrain new file mode 100644 index 000000000..9124382a2 Binary files /dev/null and b/public/terrain/19/858588/354033.terrain differ diff --git a/public/terrain/19/858588/354034.terrain b/public/terrain/19/858588/354034.terrain new file mode 100644 index 000000000..d849551a2 Binary files /dev/null and b/public/terrain/19/858588/354034.terrain differ diff --git a/public/terrain/19/858588/354035.terrain b/public/terrain/19/858588/354035.terrain new file mode 100644 index 000000000..b869f8ec1 Binary files /dev/null and b/public/terrain/19/858588/354035.terrain differ diff --git a/public/terrain/19/858588/354036.terrain b/public/terrain/19/858588/354036.terrain new file mode 100644 index 000000000..f76e6682d Binary files /dev/null and b/public/terrain/19/858588/354036.terrain differ diff --git a/public/terrain/19/858588/354037.terrain b/public/terrain/19/858588/354037.terrain new file mode 100644 index 000000000..eee2ab90f Binary files /dev/null and b/public/terrain/19/858588/354037.terrain differ diff --git a/public/terrain/19/858588/354038.terrain b/public/terrain/19/858588/354038.terrain new file mode 100644 index 000000000..1f6cfa882 Binary files /dev/null and b/public/terrain/19/858588/354038.terrain differ diff --git a/public/terrain/19/858588/354039.terrain b/public/terrain/19/858588/354039.terrain new file mode 100644 index 000000000..eec5b7618 Binary files /dev/null and b/public/terrain/19/858588/354039.terrain differ diff --git a/public/terrain/19/858588/354040.terrain b/public/terrain/19/858588/354040.terrain new file mode 100644 index 000000000..0a0c45ab5 Binary files /dev/null and b/public/terrain/19/858588/354040.terrain differ diff --git a/public/terrain/19/858588/354041.terrain b/public/terrain/19/858588/354041.terrain new file mode 100644 index 000000000..10bd333a7 Binary files /dev/null and b/public/terrain/19/858588/354041.terrain differ diff --git a/public/terrain/19/858588/354042.terrain b/public/terrain/19/858588/354042.terrain new file mode 100644 index 000000000..3a481cdcb Binary files /dev/null and b/public/terrain/19/858588/354042.terrain differ diff --git a/public/terrain/19/858588/354043.terrain b/public/terrain/19/858588/354043.terrain new file mode 100644 index 000000000..457c682d3 Binary files /dev/null and b/public/terrain/19/858588/354043.terrain differ diff --git a/public/terrain/19/858588/354044.terrain b/public/terrain/19/858588/354044.terrain new file mode 100644 index 000000000..085e64aa4 Binary files /dev/null and b/public/terrain/19/858588/354044.terrain differ diff --git a/public/terrain/19/858588/354045.terrain b/public/terrain/19/858588/354045.terrain new file mode 100644 index 000000000..a76b85b8e Binary files /dev/null and b/public/terrain/19/858588/354045.terrain differ diff --git a/public/terrain/19/858588/354046.terrain b/public/terrain/19/858588/354046.terrain new file mode 100644 index 000000000..a08532c58 Binary files /dev/null and b/public/terrain/19/858588/354046.terrain differ diff --git a/public/terrain/19/858588/354047.terrain b/public/terrain/19/858588/354047.terrain new file mode 100644 index 000000000..fa4eb2ff3 Binary files /dev/null and b/public/terrain/19/858588/354047.terrain differ diff --git a/public/terrain/19/858588/354048.terrain b/public/terrain/19/858588/354048.terrain new file mode 100644 index 000000000..dec0174f2 Binary files /dev/null and b/public/terrain/19/858588/354048.terrain differ diff --git a/public/terrain/19/858588/354049.terrain b/public/terrain/19/858588/354049.terrain new file mode 100644 index 000000000..a79c70c6e Binary files /dev/null and b/public/terrain/19/858588/354049.terrain differ diff --git a/public/terrain/19/858588/354050.terrain b/public/terrain/19/858588/354050.terrain new file mode 100644 index 000000000..a8ed4af3b Binary files /dev/null and b/public/terrain/19/858588/354050.terrain differ diff --git a/public/terrain/19/858588/354051.terrain b/public/terrain/19/858588/354051.terrain new file mode 100644 index 000000000..6c3d4cfe4 Binary files /dev/null and b/public/terrain/19/858588/354051.terrain differ diff --git a/public/terrain/19/858588/354052.terrain b/public/terrain/19/858588/354052.terrain new file mode 100644 index 000000000..6dbfb9f95 Binary files /dev/null and b/public/terrain/19/858588/354052.terrain differ diff --git a/public/terrain/19/858588/354053.terrain b/public/terrain/19/858588/354053.terrain new file mode 100644 index 000000000..0ee86ba3a Binary files /dev/null and b/public/terrain/19/858588/354053.terrain differ diff --git a/public/terrain/19/858588/354054.terrain b/public/terrain/19/858588/354054.terrain new file mode 100644 index 000000000..8a7b3bb66 Binary files /dev/null and b/public/terrain/19/858588/354054.terrain differ diff --git a/public/terrain/19/858588/354055.terrain b/public/terrain/19/858588/354055.terrain new file mode 100644 index 000000000..1a57abae5 Binary files /dev/null and b/public/terrain/19/858588/354055.terrain differ diff --git a/public/terrain/19/858588/354056.terrain b/public/terrain/19/858588/354056.terrain new file mode 100644 index 000000000..a814784b0 Binary files /dev/null and b/public/terrain/19/858588/354056.terrain differ diff --git a/public/terrain/19/858588/354057.terrain b/public/terrain/19/858588/354057.terrain new file mode 100644 index 000000000..5254c998b Binary files /dev/null and b/public/terrain/19/858588/354057.terrain differ diff --git a/public/terrain/19/858588/354058.terrain b/public/terrain/19/858588/354058.terrain new file mode 100644 index 000000000..dbf8ba57a Binary files /dev/null and b/public/terrain/19/858588/354058.terrain differ diff --git a/public/terrain/19/858588/354059.terrain b/public/terrain/19/858588/354059.terrain new file mode 100644 index 000000000..4152a1459 Binary files /dev/null and b/public/terrain/19/858588/354059.terrain differ diff --git a/public/terrain/19/858589/353743.terrain b/public/terrain/19/858589/353743.terrain new file mode 100644 index 000000000..4ab67ed0a Binary files /dev/null and b/public/terrain/19/858589/353743.terrain differ diff --git a/public/terrain/19/858589/353744.terrain b/public/terrain/19/858589/353744.terrain new file mode 100644 index 000000000..90b478a91 Binary files /dev/null and b/public/terrain/19/858589/353744.terrain differ diff --git a/public/terrain/19/858589/353745.terrain b/public/terrain/19/858589/353745.terrain new file mode 100644 index 000000000..402f1e306 Binary files /dev/null and b/public/terrain/19/858589/353745.terrain differ diff --git a/public/terrain/19/858589/353746.terrain b/public/terrain/19/858589/353746.terrain new file mode 100644 index 000000000..5805fa670 Binary files /dev/null and b/public/terrain/19/858589/353746.terrain differ diff --git a/public/terrain/19/858589/353747.terrain b/public/terrain/19/858589/353747.terrain new file mode 100644 index 000000000..9d3a28f8a Binary files /dev/null and b/public/terrain/19/858589/353747.terrain differ diff --git a/public/terrain/19/858589/353748.terrain b/public/terrain/19/858589/353748.terrain new file mode 100644 index 000000000..4cdad7fe4 Binary files /dev/null and b/public/terrain/19/858589/353748.terrain differ diff --git a/public/terrain/19/858589/353749.terrain b/public/terrain/19/858589/353749.terrain new file mode 100644 index 000000000..370058b08 Binary files /dev/null and b/public/terrain/19/858589/353749.terrain differ diff --git a/public/terrain/19/858589/353750.terrain b/public/terrain/19/858589/353750.terrain new file mode 100644 index 000000000..9aa82e1d2 Binary files /dev/null and b/public/terrain/19/858589/353750.terrain differ diff --git a/public/terrain/19/858589/353751.terrain b/public/terrain/19/858589/353751.terrain new file mode 100644 index 000000000..fc697664a Binary files /dev/null and b/public/terrain/19/858589/353751.terrain differ diff --git a/public/terrain/19/858589/353752.terrain b/public/terrain/19/858589/353752.terrain new file mode 100644 index 000000000..2275d5199 Binary files /dev/null and b/public/terrain/19/858589/353752.terrain differ diff --git a/public/terrain/19/858589/353753.terrain b/public/terrain/19/858589/353753.terrain new file mode 100644 index 000000000..e617150b5 Binary files /dev/null and b/public/terrain/19/858589/353753.terrain differ diff --git a/public/terrain/19/858589/353754.terrain b/public/terrain/19/858589/353754.terrain new file mode 100644 index 000000000..5431e3247 Binary files /dev/null and b/public/terrain/19/858589/353754.terrain differ diff --git a/public/terrain/19/858589/353755.terrain b/public/terrain/19/858589/353755.terrain new file mode 100644 index 000000000..b4af5b02b Binary files /dev/null and b/public/terrain/19/858589/353755.terrain differ diff --git a/public/terrain/19/858589/353756.terrain b/public/terrain/19/858589/353756.terrain new file mode 100644 index 000000000..e576f20f5 Binary files /dev/null and b/public/terrain/19/858589/353756.terrain differ diff --git a/public/terrain/19/858589/353757.terrain b/public/terrain/19/858589/353757.terrain new file mode 100644 index 000000000..c181472d0 Binary files /dev/null and b/public/terrain/19/858589/353757.terrain differ diff --git a/public/terrain/19/858589/353758.terrain b/public/terrain/19/858589/353758.terrain new file mode 100644 index 000000000..f3034e1e4 Binary files /dev/null and b/public/terrain/19/858589/353758.terrain differ diff --git a/public/terrain/19/858589/353759.terrain b/public/terrain/19/858589/353759.terrain new file mode 100644 index 000000000..0c34b2528 Binary files /dev/null and b/public/terrain/19/858589/353759.terrain differ diff --git a/public/terrain/19/858589/353760.terrain b/public/terrain/19/858589/353760.terrain new file mode 100644 index 000000000..39e674345 Binary files /dev/null and b/public/terrain/19/858589/353760.terrain differ diff --git a/public/terrain/19/858589/353761.terrain b/public/terrain/19/858589/353761.terrain new file mode 100644 index 000000000..c3be8b0b4 Binary files /dev/null and b/public/terrain/19/858589/353761.terrain differ diff --git a/public/terrain/19/858589/353762.terrain b/public/terrain/19/858589/353762.terrain new file mode 100644 index 000000000..2b4259f8b Binary files /dev/null and b/public/terrain/19/858589/353762.terrain differ diff --git a/public/terrain/19/858589/353763.terrain b/public/terrain/19/858589/353763.terrain new file mode 100644 index 000000000..013c30c3d Binary files /dev/null and b/public/terrain/19/858589/353763.terrain differ diff --git a/public/terrain/19/858589/353764.terrain b/public/terrain/19/858589/353764.terrain new file mode 100644 index 000000000..62aeaf3f5 Binary files /dev/null and b/public/terrain/19/858589/353764.terrain differ diff --git a/public/terrain/19/858589/353765.terrain b/public/terrain/19/858589/353765.terrain new file mode 100644 index 000000000..f8ed9c409 Binary files /dev/null and b/public/terrain/19/858589/353765.terrain differ diff --git a/public/terrain/19/858589/353766.terrain b/public/terrain/19/858589/353766.terrain new file mode 100644 index 000000000..ed9ae4c91 Binary files /dev/null and b/public/terrain/19/858589/353766.terrain differ diff --git a/public/terrain/19/858589/353767.terrain b/public/terrain/19/858589/353767.terrain new file mode 100644 index 000000000..2fdecfcd7 Binary files /dev/null and b/public/terrain/19/858589/353767.terrain differ diff --git a/public/terrain/19/858589/353768.terrain b/public/terrain/19/858589/353768.terrain new file mode 100644 index 000000000..8059d85c4 Binary files /dev/null and b/public/terrain/19/858589/353768.terrain differ diff --git a/public/terrain/19/858589/353769.terrain b/public/terrain/19/858589/353769.terrain new file mode 100644 index 000000000..867b1174d Binary files /dev/null and b/public/terrain/19/858589/353769.terrain differ diff --git a/public/terrain/19/858589/353770.terrain b/public/terrain/19/858589/353770.terrain new file mode 100644 index 000000000..9ff2fab8c Binary files /dev/null and b/public/terrain/19/858589/353770.terrain differ diff --git a/public/terrain/19/858589/353771.terrain b/public/terrain/19/858589/353771.terrain new file mode 100644 index 000000000..29461dfeb Binary files /dev/null and b/public/terrain/19/858589/353771.terrain differ diff --git a/public/terrain/19/858589/353772.terrain b/public/terrain/19/858589/353772.terrain new file mode 100644 index 000000000..d7ce6f808 Binary files /dev/null and b/public/terrain/19/858589/353772.terrain differ diff --git a/public/terrain/19/858589/353773.terrain b/public/terrain/19/858589/353773.terrain new file mode 100644 index 000000000..25ae420c3 Binary files /dev/null and b/public/terrain/19/858589/353773.terrain differ diff --git a/public/terrain/19/858589/353774.terrain b/public/terrain/19/858589/353774.terrain new file mode 100644 index 000000000..0d6799028 Binary files /dev/null and b/public/terrain/19/858589/353774.terrain differ diff --git a/public/terrain/19/858589/353775.terrain b/public/terrain/19/858589/353775.terrain new file mode 100644 index 000000000..79ad1c352 Binary files /dev/null and b/public/terrain/19/858589/353775.terrain differ diff --git a/public/terrain/19/858589/353776.terrain b/public/terrain/19/858589/353776.terrain new file mode 100644 index 000000000..58c79725f Binary files /dev/null and b/public/terrain/19/858589/353776.terrain differ diff --git a/public/terrain/19/858589/353777.terrain b/public/terrain/19/858589/353777.terrain new file mode 100644 index 000000000..6cd7b4395 Binary files /dev/null and b/public/terrain/19/858589/353777.terrain differ diff --git a/public/terrain/19/858589/353778.terrain b/public/terrain/19/858589/353778.terrain new file mode 100644 index 000000000..024d89bfa Binary files /dev/null and b/public/terrain/19/858589/353778.terrain differ diff --git a/public/terrain/19/858589/353779.terrain b/public/terrain/19/858589/353779.terrain new file mode 100644 index 000000000..8f184de63 Binary files /dev/null and b/public/terrain/19/858589/353779.terrain differ diff --git a/public/terrain/19/858589/353780.terrain b/public/terrain/19/858589/353780.terrain new file mode 100644 index 000000000..81b45a3b1 Binary files /dev/null and b/public/terrain/19/858589/353780.terrain differ diff --git a/public/terrain/19/858589/353781.terrain b/public/terrain/19/858589/353781.terrain new file mode 100644 index 000000000..7387bc06b Binary files /dev/null and b/public/terrain/19/858589/353781.terrain differ diff --git a/public/terrain/19/858589/353782.terrain b/public/terrain/19/858589/353782.terrain new file mode 100644 index 000000000..92bcfdf11 Binary files /dev/null and b/public/terrain/19/858589/353782.terrain differ diff --git a/public/terrain/19/858589/353783.terrain b/public/terrain/19/858589/353783.terrain new file mode 100644 index 000000000..d0b6e12ae Binary files /dev/null and b/public/terrain/19/858589/353783.terrain differ diff --git a/public/terrain/19/858589/353784.terrain b/public/terrain/19/858589/353784.terrain new file mode 100644 index 000000000..5ec5e37f5 Binary files /dev/null and b/public/terrain/19/858589/353784.terrain differ diff --git a/public/terrain/19/858589/353785.terrain b/public/terrain/19/858589/353785.terrain new file mode 100644 index 000000000..a1c035eab Binary files /dev/null and b/public/terrain/19/858589/353785.terrain differ diff --git a/public/terrain/19/858589/353786.terrain b/public/terrain/19/858589/353786.terrain new file mode 100644 index 000000000..8c3c25da5 Binary files /dev/null and b/public/terrain/19/858589/353786.terrain differ diff --git a/public/terrain/19/858589/353787.terrain b/public/terrain/19/858589/353787.terrain new file mode 100644 index 000000000..45fae15b8 Binary files /dev/null and b/public/terrain/19/858589/353787.terrain differ diff --git a/public/terrain/19/858589/353788.terrain b/public/terrain/19/858589/353788.terrain new file mode 100644 index 000000000..2635b1f42 Binary files /dev/null and b/public/terrain/19/858589/353788.terrain differ diff --git a/public/terrain/19/858589/353789.terrain b/public/terrain/19/858589/353789.terrain new file mode 100644 index 000000000..fe9310ab0 Binary files /dev/null and b/public/terrain/19/858589/353789.terrain differ diff --git a/public/terrain/19/858589/353790.terrain b/public/terrain/19/858589/353790.terrain new file mode 100644 index 000000000..58d33aa94 Binary files /dev/null and b/public/terrain/19/858589/353790.terrain differ diff --git a/public/terrain/19/858589/353791.terrain b/public/terrain/19/858589/353791.terrain new file mode 100644 index 000000000..2a1a2721f Binary files /dev/null and b/public/terrain/19/858589/353791.terrain differ diff --git a/public/terrain/19/858589/353792.terrain b/public/terrain/19/858589/353792.terrain new file mode 100644 index 000000000..390d68c5b Binary files /dev/null and b/public/terrain/19/858589/353792.terrain differ diff --git a/public/terrain/19/858589/353793.terrain b/public/terrain/19/858589/353793.terrain new file mode 100644 index 000000000..5e770e956 Binary files /dev/null and b/public/terrain/19/858589/353793.terrain differ diff --git a/public/terrain/19/858589/353794.terrain b/public/terrain/19/858589/353794.terrain new file mode 100644 index 000000000..728dd16fd Binary files /dev/null and b/public/terrain/19/858589/353794.terrain differ diff --git a/public/terrain/19/858589/353795.terrain b/public/terrain/19/858589/353795.terrain new file mode 100644 index 000000000..6ec08c34e Binary files /dev/null and b/public/terrain/19/858589/353795.terrain differ diff --git a/public/terrain/19/858589/353796.terrain b/public/terrain/19/858589/353796.terrain new file mode 100644 index 000000000..cf96fe419 Binary files /dev/null and b/public/terrain/19/858589/353796.terrain differ diff --git a/public/terrain/19/858589/353797.terrain b/public/terrain/19/858589/353797.terrain new file mode 100644 index 000000000..6184b77be Binary files /dev/null and b/public/terrain/19/858589/353797.terrain differ diff --git a/public/terrain/19/858589/353798.terrain b/public/terrain/19/858589/353798.terrain new file mode 100644 index 000000000..9aed2d992 Binary files /dev/null and b/public/terrain/19/858589/353798.terrain differ diff --git a/public/terrain/19/858589/353799.terrain b/public/terrain/19/858589/353799.terrain new file mode 100644 index 000000000..ac67613f1 Binary files /dev/null and b/public/terrain/19/858589/353799.terrain differ diff --git a/public/terrain/19/858589/353800.terrain b/public/terrain/19/858589/353800.terrain new file mode 100644 index 000000000..a3f08e630 Binary files /dev/null and b/public/terrain/19/858589/353800.terrain differ diff --git a/public/terrain/19/858589/353801.terrain b/public/terrain/19/858589/353801.terrain new file mode 100644 index 000000000..2ade975f2 Binary files /dev/null and b/public/terrain/19/858589/353801.terrain differ diff --git a/public/terrain/19/858589/353802.terrain b/public/terrain/19/858589/353802.terrain new file mode 100644 index 000000000..e881ba330 Binary files /dev/null and b/public/terrain/19/858589/353802.terrain differ diff --git a/public/terrain/19/858589/353803.terrain b/public/terrain/19/858589/353803.terrain new file mode 100644 index 000000000..72564221b Binary files /dev/null and b/public/terrain/19/858589/353803.terrain differ diff --git a/public/terrain/19/858589/353804.terrain b/public/terrain/19/858589/353804.terrain new file mode 100644 index 000000000..e7e8d94d2 Binary files /dev/null and b/public/terrain/19/858589/353804.terrain differ diff --git a/public/terrain/19/858589/353805.terrain b/public/terrain/19/858589/353805.terrain new file mode 100644 index 000000000..9361db64a Binary files /dev/null and b/public/terrain/19/858589/353805.terrain differ diff --git a/public/terrain/19/858589/353806.terrain b/public/terrain/19/858589/353806.terrain new file mode 100644 index 000000000..c8bb8908b Binary files /dev/null and b/public/terrain/19/858589/353806.terrain differ diff --git a/public/terrain/19/858589/353807.terrain b/public/terrain/19/858589/353807.terrain new file mode 100644 index 000000000..00f233841 Binary files /dev/null and b/public/terrain/19/858589/353807.terrain differ diff --git a/public/terrain/19/858589/353808.terrain b/public/terrain/19/858589/353808.terrain new file mode 100644 index 000000000..13dfe7241 Binary files /dev/null and b/public/terrain/19/858589/353808.terrain differ diff --git a/public/terrain/19/858589/353809.terrain b/public/terrain/19/858589/353809.terrain new file mode 100644 index 000000000..ce0e5ffad Binary files /dev/null and b/public/terrain/19/858589/353809.terrain differ diff --git a/public/terrain/19/858589/353810.terrain b/public/terrain/19/858589/353810.terrain new file mode 100644 index 000000000..1bc8673f7 Binary files /dev/null and b/public/terrain/19/858589/353810.terrain differ diff --git a/public/terrain/19/858589/353811.terrain b/public/terrain/19/858589/353811.terrain new file mode 100644 index 000000000..7f49e4c5e Binary files /dev/null and b/public/terrain/19/858589/353811.terrain differ diff --git a/public/terrain/19/858589/353812.terrain b/public/terrain/19/858589/353812.terrain new file mode 100644 index 000000000..793ef9976 Binary files /dev/null and b/public/terrain/19/858589/353812.terrain differ diff --git a/public/terrain/19/858589/353813.terrain b/public/terrain/19/858589/353813.terrain new file mode 100644 index 000000000..f7e36afdb Binary files /dev/null and b/public/terrain/19/858589/353813.terrain differ diff --git a/public/terrain/19/858589/353814.terrain b/public/terrain/19/858589/353814.terrain new file mode 100644 index 000000000..64fc38ffa Binary files /dev/null and b/public/terrain/19/858589/353814.terrain differ diff --git a/public/terrain/19/858589/353815.terrain b/public/terrain/19/858589/353815.terrain new file mode 100644 index 000000000..817a7385a Binary files /dev/null and b/public/terrain/19/858589/353815.terrain differ diff --git a/public/terrain/19/858589/353816.terrain b/public/terrain/19/858589/353816.terrain new file mode 100644 index 000000000..8ab47450f Binary files /dev/null and b/public/terrain/19/858589/353816.terrain differ diff --git a/public/terrain/19/858589/353817.terrain b/public/terrain/19/858589/353817.terrain new file mode 100644 index 000000000..f4e9b1259 Binary files /dev/null and b/public/terrain/19/858589/353817.terrain differ diff --git a/public/terrain/19/858589/353818.terrain b/public/terrain/19/858589/353818.terrain new file mode 100644 index 000000000..5249f5880 Binary files /dev/null and b/public/terrain/19/858589/353818.terrain differ diff --git a/public/terrain/19/858589/353819.terrain b/public/terrain/19/858589/353819.terrain new file mode 100644 index 000000000..915bd1eeb Binary files /dev/null and b/public/terrain/19/858589/353819.terrain differ diff --git a/public/terrain/19/858589/353820.terrain b/public/terrain/19/858589/353820.terrain new file mode 100644 index 000000000..698f4619f Binary files /dev/null and b/public/terrain/19/858589/353820.terrain differ diff --git a/public/terrain/19/858589/353821.terrain b/public/terrain/19/858589/353821.terrain new file mode 100644 index 000000000..d45ea52f4 Binary files /dev/null and b/public/terrain/19/858589/353821.terrain differ diff --git a/public/terrain/19/858589/353822.terrain b/public/terrain/19/858589/353822.terrain new file mode 100644 index 000000000..ed3987354 Binary files /dev/null and b/public/terrain/19/858589/353822.terrain differ diff --git a/public/terrain/19/858589/353823.terrain b/public/terrain/19/858589/353823.terrain new file mode 100644 index 000000000..6b6c20606 Binary files /dev/null and b/public/terrain/19/858589/353823.terrain differ diff --git a/public/terrain/19/858589/353824.terrain b/public/terrain/19/858589/353824.terrain new file mode 100644 index 000000000..50fbfcc3e Binary files /dev/null and b/public/terrain/19/858589/353824.terrain differ diff --git a/public/terrain/19/858589/353825.terrain b/public/terrain/19/858589/353825.terrain new file mode 100644 index 000000000..ca30021f1 Binary files /dev/null and b/public/terrain/19/858589/353825.terrain differ diff --git a/public/terrain/19/858589/353826.terrain b/public/terrain/19/858589/353826.terrain new file mode 100644 index 000000000..625d4df10 Binary files /dev/null and b/public/terrain/19/858589/353826.terrain differ diff --git a/public/terrain/19/858589/353827.terrain b/public/terrain/19/858589/353827.terrain new file mode 100644 index 000000000..43fd31679 Binary files /dev/null and b/public/terrain/19/858589/353827.terrain differ diff --git a/public/terrain/19/858589/353828.terrain b/public/terrain/19/858589/353828.terrain new file mode 100644 index 000000000..f6b673b69 Binary files /dev/null and b/public/terrain/19/858589/353828.terrain differ diff --git a/public/terrain/19/858589/353829.terrain b/public/terrain/19/858589/353829.terrain new file mode 100644 index 000000000..1f3be8737 Binary files /dev/null and b/public/terrain/19/858589/353829.terrain differ diff --git a/public/terrain/19/858589/353830.terrain b/public/terrain/19/858589/353830.terrain new file mode 100644 index 000000000..2ed1d08ab Binary files /dev/null and b/public/terrain/19/858589/353830.terrain differ diff --git a/public/terrain/19/858589/353831.terrain b/public/terrain/19/858589/353831.terrain new file mode 100644 index 000000000..22a908c19 Binary files /dev/null and b/public/terrain/19/858589/353831.terrain differ diff --git a/public/terrain/19/858589/353832.terrain b/public/terrain/19/858589/353832.terrain new file mode 100644 index 000000000..142ca8618 Binary files /dev/null and b/public/terrain/19/858589/353832.terrain differ diff --git a/public/terrain/19/858589/353833.terrain b/public/terrain/19/858589/353833.terrain new file mode 100644 index 000000000..f41bf6af3 Binary files /dev/null and b/public/terrain/19/858589/353833.terrain differ diff --git a/public/terrain/19/858589/353834.terrain b/public/terrain/19/858589/353834.terrain new file mode 100644 index 000000000..61e8985bf Binary files /dev/null and b/public/terrain/19/858589/353834.terrain differ diff --git a/public/terrain/19/858589/353835.terrain b/public/terrain/19/858589/353835.terrain new file mode 100644 index 000000000..4124a5853 Binary files /dev/null and b/public/terrain/19/858589/353835.terrain differ diff --git a/public/terrain/19/858589/353836.terrain b/public/terrain/19/858589/353836.terrain new file mode 100644 index 000000000..4928c41fe Binary files /dev/null and b/public/terrain/19/858589/353836.terrain differ diff --git a/public/terrain/19/858589/353837.terrain b/public/terrain/19/858589/353837.terrain new file mode 100644 index 000000000..22629eecd Binary files /dev/null and b/public/terrain/19/858589/353837.terrain differ diff --git a/public/terrain/19/858589/353838.terrain b/public/terrain/19/858589/353838.terrain new file mode 100644 index 000000000..9b8f626c7 Binary files /dev/null and b/public/terrain/19/858589/353838.terrain differ diff --git a/public/terrain/19/858589/353839.terrain b/public/terrain/19/858589/353839.terrain new file mode 100644 index 000000000..31bcd3414 Binary files /dev/null and b/public/terrain/19/858589/353839.terrain differ diff --git a/public/terrain/19/858589/353840.terrain b/public/terrain/19/858589/353840.terrain new file mode 100644 index 000000000..70af32420 Binary files /dev/null and b/public/terrain/19/858589/353840.terrain differ diff --git a/public/terrain/19/858589/353841.terrain b/public/terrain/19/858589/353841.terrain new file mode 100644 index 000000000..f729bf1ae Binary files /dev/null and b/public/terrain/19/858589/353841.terrain differ diff --git a/public/terrain/19/858589/353842.terrain b/public/terrain/19/858589/353842.terrain new file mode 100644 index 000000000..ba5dc293a Binary files /dev/null and b/public/terrain/19/858589/353842.terrain differ diff --git a/public/terrain/19/858589/353843.terrain b/public/terrain/19/858589/353843.terrain new file mode 100644 index 000000000..9aad66ae5 Binary files /dev/null and b/public/terrain/19/858589/353843.terrain differ diff --git a/public/terrain/19/858589/353844.terrain b/public/terrain/19/858589/353844.terrain new file mode 100644 index 000000000..2ccb2c996 Binary files /dev/null and b/public/terrain/19/858589/353844.terrain differ diff --git a/public/terrain/19/858589/353845.terrain b/public/terrain/19/858589/353845.terrain new file mode 100644 index 000000000..4726a9903 Binary files /dev/null and b/public/terrain/19/858589/353845.terrain differ diff --git a/public/terrain/19/858589/353846.terrain b/public/terrain/19/858589/353846.terrain new file mode 100644 index 000000000..f757d367a Binary files /dev/null and b/public/terrain/19/858589/353846.terrain differ diff --git a/public/terrain/19/858589/353847.terrain b/public/terrain/19/858589/353847.terrain new file mode 100644 index 000000000..47622af6f Binary files /dev/null and b/public/terrain/19/858589/353847.terrain differ diff --git a/public/terrain/19/858589/353848.terrain b/public/terrain/19/858589/353848.terrain new file mode 100644 index 000000000..4eb300767 Binary files /dev/null and b/public/terrain/19/858589/353848.terrain differ diff --git a/public/terrain/19/858589/353849.terrain b/public/terrain/19/858589/353849.terrain new file mode 100644 index 000000000..98ffa233e Binary files /dev/null and b/public/terrain/19/858589/353849.terrain differ diff --git a/public/terrain/19/858589/353850.terrain b/public/terrain/19/858589/353850.terrain new file mode 100644 index 000000000..4b29fe285 Binary files /dev/null and b/public/terrain/19/858589/353850.terrain differ diff --git a/public/terrain/19/858589/353851.terrain b/public/terrain/19/858589/353851.terrain new file mode 100644 index 000000000..7efc416c5 Binary files /dev/null and b/public/terrain/19/858589/353851.terrain differ diff --git a/public/terrain/19/858589/353852.terrain b/public/terrain/19/858589/353852.terrain new file mode 100644 index 000000000..b205b8028 Binary files /dev/null and b/public/terrain/19/858589/353852.terrain differ diff --git a/public/terrain/19/858589/353853.terrain b/public/terrain/19/858589/353853.terrain new file mode 100644 index 000000000..e4b0b6941 Binary files /dev/null and b/public/terrain/19/858589/353853.terrain differ diff --git a/public/terrain/19/858589/353854.terrain b/public/terrain/19/858589/353854.terrain new file mode 100644 index 000000000..2e714a297 Binary files /dev/null and b/public/terrain/19/858589/353854.terrain differ diff --git a/public/terrain/19/858589/353855.terrain b/public/terrain/19/858589/353855.terrain new file mode 100644 index 000000000..b1871c6e8 Binary files /dev/null and b/public/terrain/19/858589/353855.terrain differ diff --git a/public/terrain/19/858589/353856.terrain b/public/terrain/19/858589/353856.terrain new file mode 100644 index 000000000..714980d25 Binary files /dev/null and b/public/terrain/19/858589/353856.terrain differ diff --git a/public/terrain/19/858589/353857.terrain b/public/terrain/19/858589/353857.terrain new file mode 100644 index 000000000..d5cc0b408 Binary files /dev/null and b/public/terrain/19/858589/353857.terrain differ diff --git a/public/terrain/19/858589/353858.terrain b/public/terrain/19/858589/353858.terrain new file mode 100644 index 000000000..d3f3c9c9f Binary files /dev/null and b/public/terrain/19/858589/353858.terrain differ diff --git a/public/terrain/19/858589/353859.terrain b/public/terrain/19/858589/353859.terrain new file mode 100644 index 000000000..dc8bb4eff Binary files /dev/null and b/public/terrain/19/858589/353859.terrain differ diff --git a/public/terrain/19/858589/353860.terrain b/public/terrain/19/858589/353860.terrain new file mode 100644 index 000000000..1933472f1 Binary files /dev/null and b/public/terrain/19/858589/353860.terrain differ diff --git a/public/terrain/19/858589/353861.terrain b/public/terrain/19/858589/353861.terrain new file mode 100644 index 000000000..6e5d601f3 Binary files /dev/null and b/public/terrain/19/858589/353861.terrain differ diff --git a/public/terrain/19/858589/353862.terrain b/public/terrain/19/858589/353862.terrain new file mode 100644 index 000000000..9cee581a3 Binary files /dev/null and b/public/terrain/19/858589/353862.terrain differ diff --git a/public/terrain/19/858589/353863.terrain b/public/terrain/19/858589/353863.terrain new file mode 100644 index 000000000..6ad1f726d Binary files /dev/null and b/public/terrain/19/858589/353863.terrain differ diff --git a/public/terrain/19/858589/353864.terrain b/public/terrain/19/858589/353864.terrain new file mode 100644 index 000000000..88ec416c2 Binary files /dev/null and b/public/terrain/19/858589/353864.terrain differ diff --git a/public/terrain/19/858589/353865.terrain b/public/terrain/19/858589/353865.terrain new file mode 100644 index 000000000..aed214ab7 Binary files /dev/null and b/public/terrain/19/858589/353865.terrain differ diff --git a/public/terrain/19/858589/353866.terrain b/public/terrain/19/858589/353866.terrain new file mode 100644 index 000000000..9a4e2189c Binary files /dev/null and b/public/terrain/19/858589/353866.terrain differ diff --git a/public/terrain/19/858589/353867.terrain b/public/terrain/19/858589/353867.terrain new file mode 100644 index 000000000..12924cd83 Binary files /dev/null and b/public/terrain/19/858589/353867.terrain differ diff --git a/public/terrain/19/858589/353868.terrain b/public/terrain/19/858589/353868.terrain new file mode 100644 index 000000000..71cb9d679 Binary files /dev/null and b/public/terrain/19/858589/353868.terrain differ diff --git a/public/terrain/19/858589/353869.terrain b/public/terrain/19/858589/353869.terrain new file mode 100644 index 000000000..449de492c Binary files /dev/null and b/public/terrain/19/858589/353869.terrain differ diff --git a/public/terrain/19/858589/353870.terrain b/public/terrain/19/858589/353870.terrain new file mode 100644 index 000000000..3a32a302a Binary files /dev/null and b/public/terrain/19/858589/353870.terrain differ diff --git a/public/terrain/19/858589/353871.terrain b/public/terrain/19/858589/353871.terrain new file mode 100644 index 000000000..bfbaebe07 Binary files /dev/null and b/public/terrain/19/858589/353871.terrain differ diff --git a/public/terrain/19/858589/353872.terrain b/public/terrain/19/858589/353872.terrain new file mode 100644 index 000000000..faeedcb3a Binary files /dev/null and b/public/terrain/19/858589/353872.terrain differ diff --git a/public/terrain/19/858589/353873.terrain b/public/terrain/19/858589/353873.terrain new file mode 100644 index 000000000..cbb37f821 Binary files /dev/null and b/public/terrain/19/858589/353873.terrain differ diff --git a/public/terrain/19/858589/353874.terrain b/public/terrain/19/858589/353874.terrain new file mode 100644 index 000000000..737ae009e Binary files /dev/null and b/public/terrain/19/858589/353874.terrain differ diff --git a/public/terrain/19/858589/353875.terrain b/public/terrain/19/858589/353875.terrain new file mode 100644 index 000000000..8a8965f4d Binary files /dev/null and b/public/terrain/19/858589/353875.terrain differ diff --git a/public/terrain/19/858589/353876.terrain b/public/terrain/19/858589/353876.terrain new file mode 100644 index 000000000..71dbfa700 Binary files /dev/null and b/public/terrain/19/858589/353876.terrain differ diff --git a/public/terrain/19/858589/353877.terrain b/public/terrain/19/858589/353877.terrain new file mode 100644 index 000000000..0728147eb Binary files /dev/null and b/public/terrain/19/858589/353877.terrain differ diff --git a/public/terrain/19/858589/353878.terrain b/public/terrain/19/858589/353878.terrain new file mode 100644 index 000000000..b79f139b4 Binary files /dev/null and b/public/terrain/19/858589/353878.terrain differ diff --git a/public/terrain/19/858589/353879.terrain b/public/terrain/19/858589/353879.terrain new file mode 100644 index 000000000..002edd1c7 Binary files /dev/null and b/public/terrain/19/858589/353879.terrain differ diff --git a/public/terrain/19/858589/353880.terrain b/public/terrain/19/858589/353880.terrain new file mode 100644 index 000000000..93bc0e3d7 Binary files /dev/null and b/public/terrain/19/858589/353880.terrain differ diff --git a/public/terrain/19/858589/353881.terrain b/public/terrain/19/858589/353881.terrain new file mode 100644 index 000000000..8886309c6 Binary files /dev/null and b/public/terrain/19/858589/353881.terrain differ diff --git a/public/terrain/19/858589/353882.terrain b/public/terrain/19/858589/353882.terrain new file mode 100644 index 000000000..378853847 Binary files /dev/null and b/public/terrain/19/858589/353882.terrain differ diff --git a/public/terrain/19/858589/353883.terrain b/public/terrain/19/858589/353883.terrain new file mode 100644 index 000000000..b493ce215 Binary files /dev/null and b/public/terrain/19/858589/353883.terrain differ diff --git a/public/terrain/19/858589/353884.terrain b/public/terrain/19/858589/353884.terrain new file mode 100644 index 000000000..07c5bdea3 Binary files /dev/null and b/public/terrain/19/858589/353884.terrain differ diff --git a/public/terrain/19/858589/353885.terrain b/public/terrain/19/858589/353885.terrain new file mode 100644 index 000000000..f8b6ddd89 Binary files /dev/null and b/public/terrain/19/858589/353885.terrain differ diff --git a/public/terrain/19/858589/353886.terrain b/public/terrain/19/858589/353886.terrain new file mode 100644 index 000000000..376fe98cd Binary files /dev/null and b/public/terrain/19/858589/353886.terrain differ diff --git a/public/terrain/19/858589/353887.terrain b/public/terrain/19/858589/353887.terrain new file mode 100644 index 000000000..782fe520c Binary files /dev/null and b/public/terrain/19/858589/353887.terrain differ diff --git a/public/terrain/19/858589/353888.terrain b/public/terrain/19/858589/353888.terrain new file mode 100644 index 000000000..1321b0544 Binary files /dev/null and b/public/terrain/19/858589/353888.terrain differ diff --git a/public/terrain/19/858589/353889.terrain b/public/terrain/19/858589/353889.terrain new file mode 100644 index 000000000..48f72ac5f Binary files /dev/null and b/public/terrain/19/858589/353889.terrain differ diff --git a/public/terrain/19/858589/353890.terrain b/public/terrain/19/858589/353890.terrain new file mode 100644 index 000000000..51064fbc5 Binary files /dev/null and b/public/terrain/19/858589/353890.terrain differ diff --git a/public/terrain/19/858589/353891.terrain b/public/terrain/19/858589/353891.terrain new file mode 100644 index 000000000..b57957880 Binary files /dev/null and b/public/terrain/19/858589/353891.terrain differ diff --git a/public/terrain/19/858589/353892.terrain b/public/terrain/19/858589/353892.terrain new file mode 100644 index 000000000..7bcd6cad8 Binary files /dev/null and b/public/terrain/19/858589/353892.terrain differ diff --git a/public/terrain/19/858589/353893.terrain b/public/terrain/19/858589/353893.terrain new file mode 100644 index 000000000..2d52fbac4 Binary files /dev/null and b/public/terrain/19/858589/353893.terrain differ diff --git a/public/terrain/19/858589/353894.terrain b/public/terrain/19/858589/353894.terrain new file mode 100644 index 000000000..5628711a8 Binary files /dev/null and b/public/terrain/19/858589/353894.terrain differ diff --git a/public/terrain/19/858589/353895.terrain b/public/terrain/19/858589/353895.terrain new file mode 100644 index 000000000..d4fa018f4 Binary files /dev/null and b/public/terrain/19/858589/353895.terrain differ diff --git a/public/terrain/19/858589/353896.terrain b/public/terrain/19/858589/353896.terrain new file mode 100644 index 000000000..4bb98b8fe Binary files /dev/null and b/public/terrain/19/858589/353896.terrain differ diff --git a/public/terrain/19/858589/353897.terrain b/public/terrain/19/858589/353897.terrain new file mode 100644 index 000000000..fe91fdee5 Binary files /dev/null and b/public/terrain/19/858589/353897.terrain differ diff --git a/public/terrain/19/858589/353898.terrain b/public/terrain/19/858589/353898.terrain new file mode 100644 index 000000000..5fdef63ce Binary files /dev/null and b/public/terrain/19/858589/353898.terrain differ diff --git a/public/terrain/19/858589/353899.terrain b/public/terrain/19/858589/353899.terrain new file mode 100644 index 000000000..630c7d997 Binary files /dev/null and b/public/terrain/19/858589/353899.terrain differ diff --git a/public/terrain/19/858589/353900.terrain b/public/terrain/19/858589/353900.terrain new file mode 100644 index 000000000..3ac0cf10c Binary files /dev/null and b/public/terrain/19/858589/353900.terrain differ diff --git a/public/terrain/19/858589/353901.terrain b/public/terrain/19/858589/353901.terrain new file mode 100644 index 000000000..d4c1b717c Binary files /dev/null and b/public/terrain/19/858589/353901.terrain differ diff --git a/public/terrain/19/858589/353902.terrain b/public/terrain/19/858589/353902.terrain new file mode 100644 index 000000000..b27552d0e Binary files /dev/null and b/public/terrain/19/858589/353902.terrain differ diff --git a/public/terrain/19/858589/353903.terrain b/public/terrain/19/858589/353903.terrain new file mode 100644 index 000000000..3989f9ba5 Binary files /dev/null and b/public/terrain/19/858589/353903.terrain differ diff --git a/public/terrain/19/858589/353904.terrain b/public/terrain/19/858589/353904.terrain new file mode 100644 index 000000000..f0252398f Binary files /dev/null and b/public/terrain/19/858589/353904.terrain differ diff --git a/public/terrain/19/858589/353905.terrain b/public/terrain/19/858589/353905.terrain new file mode 100644 index 000000000..a5a91838d Binary files /dev/null and b/public/terrain/19/858589/353905.terrain differ diff --git a/public/terrain/19/858589/353906.terrain b/public/terrain/19/858589/353906.terrain new file mode 100644 index 000000000..4d5ae3259 Binary files /dev/null and b/public/terrain/19/858589/353906.terrain differ diff --git a/public/terrain/19/858589/353907.terrain b/public/terrain/19/858589/353907.terrain new file mode 100644 index 000000000..a958d6e71 Binary files /dev/null and b/public/terrain/19/858589/353907.terrain differ diff --git a/public/terrain/19/858589/353908.terrain b/public/terrain/19/858589/353908.terrain new file mode 100644 index 000000000..759c7f8fc Binary files /dev/null and b/public/terrain/19/858589/353908.terrain differ diff --git a/public/terrain/19/858589/353909.terrain b/public/terrain/19/858589/353909.terrain new file mode 100644 index 000000000..36832db6d Binary files /dev/null and b/public/terrain/19/858589/353909.terrain differ diff --git a/public/terrain/19/858589/353910.terrain b/public/terrain/19/858589/353910.terrain new file mode 100644 index 000000000..d8c7caf35 Binary files /dev/null and b/public/terrain/19/858589/353910.terrain differ diff --git a/public/terrain/19/858589/353911.terrain b/public/terrain/19/858589/353911.terrain new file mode 100644 index 000000000..26390369d Binary files /dev/null and b/public/terrain/19/858589/353911.terrain differ diff --git a/public/terrain/19/858589/353912.terrain b/public/terrain/19/858589/353912.terrain new file mode 100644 index 000000000..50e4b916e Binary files /dev/null and b/public/terrain/19/858589/353912.terrain differ diff --git a/public/terrain/19/858589/353913.terrain b/public/terrain/19/858589/353913.terrain new file mode 100644 index 000000000..866570a11 Binary files /dev/null and b/public/terrain/19/858589/353913.terrain differ diff --git a/public/terrain/19/858589/353914.terrain b/public/terrain/19/858589/353914.terrain new file mode 100644 index 000000000..97df7e14b Binary files /dev/null and b/public/terrain/19/858589/353914.terrain differ diff --git a/public/terrain/19/858589/353915.terrain b/public/terrain/19/858589/353915.terrain new file mode 100644 index 000000000..c2d591a1b Binary files /dev/null and b/public/terrain/19/858589/353915.terrain differ diff --git a/public/terrain/19/858589/353916.terrain b/public/terrain/19/858589/353916.terrain new file mode 100644 index 000000000..6f65fcb3e Binary files /dev/null and b/public/terrain/19/858589/353916.terrain differ diff --git a/public/terrain/19/858589/353917.terrain b/public/terrain/19/858589/353917.terrain new file mode 100644 index 000000000..054d2b56e Binary files /dev/null and b/public/terrain/19/858589/353917.terrain differ diff --git a/public/terrain/19/858589/353918.terrain b/public/terrain/19/858589/353918.terrain new file mode 100644 index 000000000..9947d6c10 Binary files /dev/null and b/public/terrain/19/858589/353918.terrain differ diff --git a/public/terrain/19/858589/353919.terrain b/public/terrain/19/858589/353919.terrain new file mode 100644 index 000000000..f3bd36de8 Binary files /dev/null and b/public/terrain/19/858589/353919.terrain differ diff --git a/public/terrain/19/858589/353920.terrain b/public/terrain/19/858589/353920.terrain new file mode 100644 index 000000000..524955b21 Binary files /dev/null and b/public/terrain/19/858589/353920.terrain differ diff --git a/public/terrain/19/858589/353921.terrain b/public/terrain/19/858589/353921.terrain new file mode 100644 index 000000000..fc96ce3ae Binary files /dev/null and b/public/terrain/19/858589/353921.terrain differ diff --git a/public/terrain/19/858589/353922.terrain b/public/terrain/19/858589/353922.terrain new file mode 100644 index 000000000..2ec323979 Binary files /dev/null and b/public/terrain/19/858589/353922.terrain differ diff --git a/public/terrain/19/858589/353923.terrain b/public/terrain/19/858589/353923.terrain new file mode 100644 index 000000000..73ca482f8 Binary files /dev/null and b/public/terrain/19/858589/353923.terrain differ diff --git a/public/terrain/19/858589/353924.terrain b/public/terrain/19/858589/353924.terrain new file mode 100644 index 000000000..6b073dd8a Binary files /dev/null and b/public/terrain/19/858589/353924.terrain differ diff --git a/public/terrain/19/858589/353925.terrain b/public/terrain/19/858589/353925.terrain new file mode 100644 index 000000000..da7dceac3 Binary files /dev/null and b/public/terrain/19/858589/353925.terrain differ diff --git a/public/terrain/19/858589/353926.terrain b/public/terrain/19/858589/353926.terrain new file mode 100644 index 000000000..c87908b56 Binary files /dev/null and b/public/terrain/19/858589/353926.terrain differ diff --git a/public/terrain/19/858589/353927.terrain b/public/terrain/19/858589/353927.terrain new file mode 100644 index 000000000..9c3c48dc6 Binary files /dev/null and b/public/terrain/19/858589/353927.terrain differ diff --git a/public/terrain/19/858589/353928.terrain b/public/terrain/19/858589/353928.terrain new file mode 100644 index 000000000..ba87f4cdd Binary files /dev/null and b/public/terrain/19/858589/353928.terrain differ diff --git a/public/terrain/19/858589/353929.terrain b/public/terrain/19/858589/353929.terrain new file mode 100644 index 000000000..b728e09bd Binary files /dev/null and b/public/terrain/19/858589/353929.terrain differ diff --git a/public/terrain/19/858589/353930.terrain b/public/terrain/19/858589/353930.terrain new file mode 100644 index 000000000..b7a3837ba Binary files /dev/null and b/public/terrain/19/858589/353930.terrain differ diff --git a/public/terrain/19/858589/353931.terrain b/public/terrain/19/858589/353931.terrain new file mode 100644 index 000000000..457a21e6b Binary files /dev/null and b/public/terrain/19/858589/353931.terrain differ diff --git a/public/terrain/19/858589/353932.terrain b/public/terrain/19/858589/353932.terrain new file mode 100644 index 000000000..526a24d20 Binary files /dev/null and b/public/terrain/19/858589/353932.terrain differ diff --git a/public/terrain/19/858589/353933.terrain b/public/terrain/19/858589/353933.terrain new file mode 100644 index 000000000..fb62cc292 Binary files /dev/null and b/public/terrain/19/858589/353933.terrain differ diff --git a/public/terrain/19/858589/353934.terrain b/public/terrain/19/858589/353934.terrain new file mode 100644 index 000000000..3ac7f553b Binary files /dev/null and b/public/terrain/19/858589/353934.terrain differ diff --git a/public/terrain/19/858589/353935.terrain b/public/terrain/19/858589/353935.terrain new file mode 100644 index 000000000..387caf2c8 Binary files /dev/null and b/public/terrain/19/858589/353935.terrain differ diff --git a/public/terrain/19/858589/353936.terrain b/public/terrain/19/858589/353936.terrain new file mode 100644 index 000000000..ab92b2622 Binary files /dev/null and b/public/terrain/19/858589/353936.terrain differ diff --git a/public/terrain/19/858589/353937.terrain b/public/terrain/19/858589/353937.terrain new file mode 100644 index 000000000..37abc09ea Binary files /dev/null and b/public/terrain/19/858589/353937.terrain differ diff --git a/public/terrain/19/858589/353938.terrain b/public/terrain/19/858589/353938.terrain new file mode 100644 index 000000000..f225f98e2 Binary files /dev/null and b/public/terrain/19/858589/353938.terrain differ diff --git a/public/terrain/19/858589/353939.terrain b/public/terrain/19/858589/353939.terrain new file mode 100644 index 000000000..8a9324822 Binary files /dev/null and b/public/terrain/19/858589/353939.terrain differ diff --git a/public/terrain/19/858589/353940.terrain b/public/terrain/19/858589/353940.terrain new file mode 100644 index 000000000..d083a0d50 Binary files /dev/null and b/public/terrain/19/858589/353940.terrain differ diff --git a/public/terrain/19/858589/353941.terrain b/public/terrain/19/858589/353941.terrain new file mode 100644 index 000000000..82697403a Binary files /dev/null and b/public/terrain/19/858589/353941.terrain differ diff --git a/public/terrain/19/858589/353942.terrain b/public/terrain/19/858589/353942.terrain new file mode 100644 index 000000000..0d224cb93 Binary files /dev/null and b/public/terrain/19/858589/353942.terrain differ diff --git a/public/terrain/19/858589/353943.terrain b/public/terrain/19/858589/353943.terrain new file mode 100644 index 000000000..8fa24cd73 Binary files /dev/null and b/public/terrain/19/858589/353943.terrain differ diff --git a/public/terrain/19/858589/353944.terrain b/public/terrain/19/858589/353944.terrain new file mode 100644 index 000000000..912bad66c Binary files /dev/null and b/public/terrain/19/858589/353944.terrain differ diff --git a/public/terrain/19/858589/353945.terrain b/public/terrain/19/858589/353945.terrain new file mode 100644 index 000000000..87d36952a Binary files /dev/null and b/public/terrain/19/858589/353945.terrain differ diff --git a/public/terrain/19/858589/353946.terrain b/public/terrain/19/858589/353946.terrain new file mode 100644 index 000000000..30dfafbe2 Binary files /dev/null and b/public/terrain/19/858589/353946.terrain differ diff --git a/public/terrain/19/858589/353947.terrain b/public/terrain/19/858589/353947.terrain new file mode 100644 index 000000000..0b2ffde4e Binary files /dev/null and b/public/terrain/19/858589/353947.terrain differ diff --git a/public/terrain/19/858589/353948.terrain b/public/terrain/19/858589/353948.terrain new file mode 100644 index 000000000..6e519ece3 Binary files /dev/null and b/public/terrain/19/858589/353948.terrain differ diff --git a/public/terrain/19/858589/353949.terrain b/public/terrain/19/858589/353949.terrain new file mode 100644 index 000000000..e997a4fcc Binary files /dev/null and b/public/terrain/19/858589/353949.terrain differ diff --git a/public/terrain/19/858589/353950.terrain b/public/terrain/19/858589/353950.terrain new file mode 100644 index 000000000..2f0780b2f Binary files /dev/null and b/public/terrain/19/858589/353950.terrain differ diff --git a/public/terrain/19/858589/353951.terrain b/public/terrain/19/858589/353951.terrain new file mode 100644 index 000000000..6068d26d1 Binary files /dev/null and b/public/terrain/19/858589/353951.terrain differ diff --git a/public/terrain/19/858589/353952.terrain b/public/terrain/19/858589/353952.terrain new file mode 100644 index 000000000..a5acd6f7c Binary files /dev/null and b/public/terrain/19/858589/353952.terrain differ diff --git a/public/terrain/19/858589/353953.terrain b/public/terrain/19/858589/353953.terrain new file mode 100644 index 000000000..78b0d471e Binary files /dev/null and b/public/terrain/19/858589/353953.terrain differ diff --git a/public/terrain/19/858589/353954.terrain b/public/terrain/19/858589/353954.terrain new file mode 100644 index 000000000..b016414c0 Binary files /dev/null and b/public/terrain/19/858589/353954.terrain differ diff --git a/public/terrain/19/858589/353955.terrain b/public/terrain/19/858589/353955.terrain new file mode 100644 index 000000000..7c35afd50 Binary files /dev/null and b/public/terrain/19/858589/353955.terrain differ diff --git a/public/terrain/19/858589/353956.terrain b/public/terrain/19/858589/353956.terrain new file mode 100644 index 000000000..6ae6c69e1 Binary files /dev/null and b/public/terrain/19/858589/353956.terrain differ diff --git a/public/terrain/19/858589/353957.terrain b/public/terrain/19/858589/353957.terrain new file mode 100644 index 000000000..204c15305 Binary files /dev/null and b/public/terrain/19/858589/353957.terrain differ diff --git a/public/terrain/19/858589/353958.terrain b/public/terrain/19/858589/353958.terrain new file mode 100644 index 000000000..c3890a4a5 Binary files /dev/null and b/public/terrain/19/858589/353958.terrain differ diff --git a/public/terrain/19/858589/353959.terrain b/public/terrain/19/858589/353959.terrain new file mode 100644 index 000000000..f86e8c7f8 Binary files /dev/null and b/public/terrain/19/858589/353959.terrain differ diff --git a/public/terrain/19/858589/353960.terrain b/public/terrain/19/858589/353960.terrain new file mode 100644 index 000000000..da5b80504 Binary files /dev/null and b/public/terrain/19/858589/353960.terrain differ diff --git a/public/terrain/19/858589/353961.terrain b/public/terrain/19/858589/353961.terrain new file mode 100644 index 000000000..3336586e5 Binary files /dev/null and b/public/terrain/19/858589/353961.terrain differ diff --git a/public/terrain/19/858589/353962.terrain b/public/terrain/19/858589/353962.terrain new file mode 100644 index 000000000..6415fec40 Binary files /dev/null and b/public/terrain/19/858589/353962.terrain differ diff --git a/public/terrain/19/858589/353963.terrain b/public/terrain/19/858589/353963.terrain new file mode 100644 index 000000000..033f7db07 Binary files /dev/null and b/public/terrain/19/858589/353963.terrain differ diff --git a/public/terrain/19/858589/353964.terrain b/public/terrain/19/858589/353964.terrain new file mode 100644 index 000000000..e5ef119fd Binary files /dev/null and b/public/terrain/19/858589/353964.terrain differ diff --git a/public/terrain/19/858589/353965.terrain b/public/terrain/19/858589/353965.terrain new file mode 100644 index 000000000..29442edee Binary files /dev/null and b/public/terrain/19/858589/353965.terrain differ diff --git a/public/terrain/19/858589/353966.terrain b/public/terrain/19/858589/353966.terrain new file mode 100644 index 000000000..7c4606c1b Binary files /dev/null and b/public/terrain/19/858589/353966.terrain differ diff --git a/public/terrain/19/858589/353967.terrain b/public/terrain/19/858589/353967.terrain new file mode 100644 index 000000000..dfd600fa7 Binary files /dev/null and b/public/terrain/19/858589/353967.terrain differ diff --git a/public/terrain/19/858589/353968.terrain b/public/terrain/19/858589/353968.terrain new file mode 100644 index 000000000..c8ad465ec Binary files /dev/null and b/public/terrain/19/858589/353968.terrain differ diff --git a/public/terrain/19/858589/353969.terrain b/public/terrain/19/858589/353969.terrain new file mode 100644 index 000000000..a1667ecd9 Binary files /dev/null and b/public/terrain/19/858589/353969.terrain differ diff --git a/public/terrain/19/858589/353970.terrain b/public/terrain/19/858589/353970.terrain new file mode 100644 index 000000000..156d16355 Binary files /dev/null and b/public/terrain/19/858589/353970.terrain differ diff --git a/public/terrain/19/858589/353971.terrain b/public/terrain/19/858589/353971.terrain new file mode 100644 index 000000000..20f7c2cdb Binary files /dev/null and b/public/terrain/19/858589/353971.terrain differ diff --git a/public/terrain/19/858589/353972.terrain b/public/terrain/19/858589/353972.terrain new file mode 100644 index 000000000..9fef7a01d Binary files /dev/null and b/public/terrain/19/858589/353972.terrain differ diff --git a/public/terrain/19/858589/353973.terrain b/public/terrain/19/858589/353973.terrain new file mode 100644 index 000000000..89ee6e5c9 Binary files /dev/null and b/public/terrain/19/858589/353973.terrain differ diff --git a/public/terrain/19/858589/353974.terrain b/public/terrain/19/858589/353974.terrain new file mode 100644 index 000000000..f4bd24cb2 Binary files /dev/null and b/public/terrain/19/858589/353974.terrain differ diff --git a/public/terrain/19/858589/353975.terrain b/public/terrain/19/858589/353975.terrain new file mode 100644 index 000000000..2944f28e9 Binary files /dev/null and b/public/terrain/19/858589/353975.terrain differ diff --git a/public/terrain/19/858589/353976.terrain b/public/terrain/19/858589/353976.terrain new file mode 100644 index 000000000..08faef337 Binary files /dev/null and b/public/terrain/19/858589/353976.terrain differ diff --git a/public/terrain/19/858589/353977.terrain b/public/terrain/19/858589/353977.terrain new file mode 100644 index 000000000..a5a2eafd3 Binary files /dev/null and b/public/terrain/19/858589/353977.terrain differ diff --git a/public/terrain/19/858589/353978.terrain b/public/terrain/19/858589/353978.terrain new file mode 100644 index 000000000..6717f06a4 Binary files /dev/null and b/public/terrain/19/858589/353978.terrain differ diff --git a/public/terrain/19/858589/353979.terrain b/public/terrain/19/858589/353979.terrain new file mode 100644 index 000000000..524a18f6b Binary files /dev/null and b/public/terrain/19/858589/353979.terrain differ diff --git a/public/terrain/19/858589/353980.terrain b/public/terrain/19/858589/353980.terrain new file mode 100644 index 000000000..3a98df5bd Binary files /dev/null and b/public/terrain/19/858589/353980.terrain differ diff --git a/public/terrain/19/858589/353981.terrain b/public/terrain/19/858589/353981.terrain new file mode 100644 index 000000000..87c990ad1 Binary files /dev/null and b/public/terrain/19/858589/353981.terrain differ diff --git a/public/terrain/19/858589/353982.terrain b/public/terrain/19/858589/353982.terrain new file mode 100644 index 000000000..7526b5b3f Binary files /dev/null and b/public/terrain/19/858589/353982.terrain differ diff --git a/public/terrain/19/858589/353983.terrain b/public/terrain/19/858589/353983.terrain new file mode 100644 index 000000000..6cdcf3de4 Binary files /dev/null and b/public/terrain/19/858589/353983.terrain differ diff --git a/public/terrain/19/858589/353984.terrain b/public/terrain/19/858589/353984.terrain new file mode 100644 index 000000000..b7de57183 Binary files /dev/null and b/public/terrain/19/858589/353984.terrain differ diff --git a/public/terrain/19/858589/353985.terrain b/public/terrain/19/858589/353985.terrain new file mode 100644 index 000000000..65849d657 Binary files /dev/null and b/public/terrain/19/858589/353985.terrain differ diff --git a/public/terrain/19/858589/353986.terrain b/public/terrain/19/858589/353986.terrain new file mode 100644 index 000000000..35e55e4a2 Binary files /dev/null and b/public/terrain/19/858589/353986.terrain differ diff --git a/public/terrain/19/858589/353987.terrain b/public/terrain/19/858589/353987.terrain new file mode 100644 index 000000000..f3d6de215 Binary files /dev/null and b/public/terrain/19/858589/353987.terrain differ diff --git a/public/terrain/19/858589/353988.terrain b/public/terrain/19/858589/353988.terrain new file mode 100644 index 000000000..9bace1ad9 Binary files /dev/null and b/public/terrain/19/858589/353988.terrain differ diff --git a/public/terrain/19/858589/353989.terrain b/public/terrain/19/858589/353989.terrain new file mode 100644 index 000000000..b3c9c14cc Binary files /dev/null and b/public/terrain/19/858589/353989.terrain differ diff --git a/public/terrain/19/858589/353990.terrain b/public/terrain/19/858589/353990.terrain new file mode 100644 index 000000000..9aefb68a9 Binary files /dev/null and b/public/terrain/19/858589/353990.terrain differ diff --git a/public/terrain/19/858589/353991.terrain b/public/terrain/19/858589/353991.terrain new file mode 100644 index 000000000..a525a68a4 Binary files /dev/null and b/public/terrain/19/858589/353991.terrain differ diff --git a/public/terrain/19/858589/353992.terrain b/public/terrain/19/858589/353992.terrain new file mode 100644 index 000000000..d20ae7440 Binary files /dev/null and b/public/terrain/19/858589/353992.terrain differ diff --git a/public/terrain/19/858589/353993.terrain b/public/terrain/19/858589/353993.terrain new file mode 100644 index 000000000..feb7ff3ee Binary files /dev/null and b/public/terrain/19/858589/353993.terrain differ diff --git a/public/terrain/19/858589/353994.terrain b/public/terrain/19/858589/353994.terrain new file mode 100644 index 000000000..c0ec6f5ea Binary files /dev/null and b/public/terrain/19/858589/353994.terrain differ diff --git a/public/terrain/19/858589/353995.terrain b/public/terrain/19/858589/353995.terrain new file mode 100644 index 000000000..ea89f7a8a Binary files /dev/null and b/public/terrain/19/858589/353995.terrain differ diff --git a/public/terrain/19/858589/353996.terrain b/public/terrain/19/858589/353996.terrain new file mode 100644 index 000000000..3ece6699d Binary files /dev/null and b/public/terrain/19/858589/353996.terrain differ diff --git a/public/terrain/19/858589/353997.terrain b/public/terrain/19/858589/353997.terrain new file mode 100644 index 000000000..65ae0c675 Binary files /dev/null and b/public/terrain/19/858589/353997.terrain differ diff --git a/public/terrain/19/858589/353998.terrain b/public/terrain/19/858589/353998.terrain new file mode 100644 index 000000000..f3c0af59d Binary files /dev/null and b/public/terrain/19/858589/353998.terrain differ diff --git a/public/terrain/19/858589/353999.terrain b/public/terrain/19/858589/353999.terrain new file mode 100644 index 000000000..9dd71be98 Binary files /dev/null and b/public/terrain/19/858589/353999.terrain differ diff --git a/public/terrain/19/858589/354000.terrain b/public/terrain/19/858589/354000.terrain new file mode 100644 index 000000000..cb93c626d Binary files /dev/null and b/public/terrain/19/858589/354000.terrain differ diff --git a/public/terrain/19/858589/354001.terrain b/public/terrain/19/858589/354001.terrain new file mode 100644 index 000000000..aeee68dcc Binary files /dev/null and b/public/terrain/19/858589/354001.terrain differ diff --git a/public/terrain/19/858589/354002.terrain b/public/terrain/19/858589/354002.terrain new file mode 100644 index 000000000..92f58b1c1 Binary files /dev/null and b/public/terrain/19/858589/354002.terrain differ diff --git a/public/terrain/19/858589/354003.terrain b/public/terrain/19/858589/354003.terrain new file mode 100644 index 000000000..627d4010b Binary files /dev/null and b/public/terrain/19/858589/354003.terrain differ diff --git a/public/terrain/19/858589/354004.terrain b/public/terrain/19/858589/354004.terrain new file mode 100644 index 000000000..e955070bc Binary files /dev/null and b/public/terrain/19/858589/354004.terrain differ diff --git a/public/terrain/19/858589/354005.terrain b/public/terrain/19/858589/354005.terrain new file mode 100644 index 000000000..8b8b4daee Binary files /dev/null and b/public/terrain/19/858589/354005.terrain differ diff --git a/public/terrain/19/858589/354006.terrain b/public/terrain/19/858589/354006.terrain new file mode 100644 index 000000000..b1328c19a Binary files /dev/null and b/public/terrain/19/858589/354006.terrain differ diff --git a/public/terrain/19/858589/354007.terrain b/public/terrain/19/858589/354007.terrain new file mode 100644 index 000000000..07ddea9e2 Binary files /dev/null and b/public/terrain/19/858589/354007.terrain differ diff --git a/public/terrain/19/858589/354008.terrain b/public/terrain/19/858589/354008.terrain new file mode 100644 index 000000000..7574eb7ad Binary files /dev/null and b/public/terrain/19/858589/354008.terrain differ diff --git a/public/terrain/19/858589/354009.terrain b/public/terrain/19/858589/354009.terrain new file mode 100644 index 000000000..e39c40224 Binary files /dev/null and b/public/terrain/19/858589/354009.terrain differ diff --git a/public/terrain/19/858589/354010.terrain b/public/terrain/19/858589/354010.terrain new file mode 100644 index 000000000..f62c921a1 Binary files /dev/null and b/public/terrain/19/858589/354010.terrain differ diff --git a/public/terrain/19/858589/354011.terrain b/public/terrain/19/858589/354011.terrain new file mode 100644 index 000000000..ef414e9a4 Binary files /dev/null and b/public/terrain/19/858589/354011.terrain differ diff --git a/public/terrain/19/858589/354012.terrain b/public/terrain/19/858589/354012.terrain new file mode 100644 index 000000000..b98cfdfc3 Binary files /dev/null and b/public/terrain/19/858589/354012.terrain differ diff --git a/public/terrain/19/858589/354013.terrain b/public/terrain/19/858589/354013.terrain new file mode 100644 index 000000000..642e1e462 Binary files /dev/null and b/public/terrain/19/858589/354013.terrain differ diff --git a/public/terrain/19/858589/354014.terrain b/public/terrain/19/858589/354014.terrain new file mode 100644 index 000000000..b5e098a71 Binary files /dev/null and b/public/terrain/19/858589/354014.terrain differ diff --git a/public/terrain/19/858589/354015.terrain b/public/terrain/19/858589/354015.terrain new file mode 100644 index 000000000..a836e0a43 Binary files /dev/null and b/public/terrain/19/858589/354015.terrain differ diff --git a/public/terrain/19/858589/354016.terrain b/public/terrain/19/858589/354016.terrain new file mode 100644 index 000000000..6031ae16e Binary files /dev/null and b/public/terrain/19/858589/354016.terrain differ diff --git a/public/terrain/19/858589/354017.terrain b/public/terrain/19/858589/354017.terrain new file mode 100644 index 000000000..2beb4211e Binary files /dev/null and b/public/terrain/19/858589/354017.terrain differ diff --git a/public/terrain/19/858589/354018.terrain b/public/terrain/19/858589/354018.terrain new file mode 100644 index 000000000..89e99f732 Binary files /dev/null and b/public/terrain/19/858589/354018.terrain differ diff --git a/public/terrain/19/858589/354019.terrain b/public/terrain/19/858589/354019.terrain new file mode 100644 index 000000000..65ad01079 Binary files /dev/null and b/public/terrain/19/858589/354019.terrain differ diff --git a/public/terrain/19/858589/354020.terrain b/public/terrain/19/858589/354020.terrain new file mode 100644 index 000000000..02fa00ab4 Binary files /dev/null and b/public/terrain/19/858589/354020.terrain differ diff --git a/public/terrain/19/858589/354021.terrain b/public/terrain/19/858589/354021.terrain new file mode 100644 index 000000000..ee318db33 Binary files /dev/null and b/public/terrain/19/858589/354021.terrain differ diff --git a/public/terrain/19/858589/354022.terrain b/public/terrain/19/858589/354022.terrain new file mode 100644 index 000000000..278c76838 Binary files /dev/null and b/public/terrain/19/858589/354022.terrain differ diff --git a/public/terrain/19/858589/354023.terrain b/public/terrain/19/858589/354023.terrain new file mode 100644 index 000000000..e78a903c0 Binary files /dev/null and b/public/terrain/19/858589/354023.terrain differ diff --git a/public/terrain/19/858589/354024.terrain b/public/terrain/19/858589/354024.terrain new file mode 100644 index 000000000..60b30ead1 Binary files /dev/null and b/public/terrain/19/858589/354024.terrain differ diff --git a/public/terrain/19/858589/354025.terrain b/public/terrain/19/858589/354025.terrain new file mode 100644 index 000000000..784995f49 Binary files /dev/null and b/public/terrain/19/858589/354025.terrain differ diff --git a/public/terrain/19/858589/354026.terrain b/public/terrain/19/858589/354026.terrain new file mode 100644 index 000000000..38a00c814 Binary files /dev/null and b/public/terrain/19/858589/354026.terrain differ diff --git a/public/terrain/19/858589/354027.terrain b/public/terrain/19/858589/354027.terrain new file mode 100644 index 000000000..f3de23bd6 Binary files /dev/null and b/public/terrain/19/858589/354027.terrain differ diff --git a/public/terrain/19/858589/354028.terrain b/public/terrain/19/858589/354028.terrain new file mode 100644 index 000000000..622ae0932 Binary files /dev/null and b/public/terrain/19/858589/354028.terrain differ diff --git a/public/terrain/19/858589/354029.terrain b/public/terrain/19/858589/354029.terrain new file mode 100644 index 000000000..a8fd3162b Binary files /dev/null and b/public/terrain/19/858589/354029.terrain differ diff --git a/public/terrain/19/858589/354030.terrain b/public/terrain/19/858589/354030.terrain new file mode 100644 index 000000000..d162b8b47 Binary files /dev/null and b/public/terrain/19/858589/354030.terrain differ diff --git a/public/terrain/19/858589/354031.terrain b/public/terrain/19/858589/354031.terrain new file mode 100644 index 000000000..db1437bd9 Binary files /dev/null and b/public/terrain/19/858589/354031.terrain differ diff --git a/public/terrain/19/858589/354032.terrain b/public/terrain/19/858589/354032.terrain new file mode 100644 index 000000000..dead55b29 Binary files /dev/null and b/public/terrain/19/858589/354032.terrain differ diff --git a/public/terrain/19/858589/354033.terrain b/public/terrain/19/858589/354033.terrain new file mode 100644 index 000000000..9fc7248e2 Binary files /dev/null and b/public/terrain/19/858589/354033.terrain differ diff --git a/public/terrain/19/858589/354034.terrain b/public/terrain/19/858589/354034.terrain new file mode 100644 index 000000000..6fd4a12df Binary files /dev/null and b/public/terrain/19/858589/354034.terrain differ diff --git a/public/terrain/19/858589/354035.terrain b/public/terrain/19/858589/354035.terrain new file mode 100644 index 000000000..351fe0ba0 Binary files /dev/null and b/public/terrain/19/858589/354035.terrain differ diff --git a/public/terrain/19/858589/354036.terrain b/public/terrain/19/858589/354036.terrain new file mode 100644 index 000000000..a8f15ea24 Binary files /dev/null and b/public/terrain/19/858589/354036.terrain differ diff --git a/public/terrain/19/858589/354037.terrain b/public/terrain/19/858589/354037.terrain new file mode 100644 index 000000000..5d98ecac7 Binary files /dev/null and b/public/terrain/19/858589/354037.terrain differ diff --git a/public/terrain/19/858589/354038.terrain b/public/terrain/19/858589/354038.terrain new file mode 100644 index 000000000..cd3411d48 Binary files /dev/null and b/public/terrain/19/858589/354038.terrain differ diff --git a/public/terrain/19/858589/354039.terrain b/public/terrain/19/858589/354039.terrain new file mode 100644 index 000000000..7abce4504 Binary files /dev/null and b/public/terrain/19/858589/354039.terrain differ diff --git a/public/terrain/19/858589/354040.terrain b/public/terrain/19/858589/354040.terrain new file mode 100644 index 000000000..bcf5179dc Binary files /dev/null and b/public/terrain/19/858589/354040.terrain differ diff --git a/public/terrain/19/858589/354041.terrain b/public/terrain/19/858589/354041.terrain new file mode 100644 index 000000000..c44bcc0e8 Binary files /dev/null and b/public/terrain/19/858589/354041.terrain differ diff --git a/public/terrain/19/858589/354042.terrain b/public/terrain/19/858589/354042.terrain new file mode 100644 index 000000000..f50967cee Binary files /dev/null and b/public/terrain/19/858589/354042.terrain differ diff --git a/public/terrain/19/858589/354043.terrain b/public/terrain/19/858589/354043.terrain new file mode 100644 index 000000000..bbaee416e Binary files /dev/null and b/public/terrain/19/858589/354043.terrain differ diff --git a/public/terrain/19/858589/354044.terrain b/public/terrain/19/858589/354044.terrain new file mode 100644 index 000000000..d55fe444d Binary files /dev/null and b/public/terrain/19/858589/354044.terrain differ diff --git a/public/terrain/19/858589/354045.terrain b/public/terrain/19/858589/354045.terrain new file mode 100644 index 000000000..f42382a0c Binary files /dev/null and b/public/terrain/19/858589/354045.terrain differ diff --git a/public/terrain/19/858589/354046.terrain b/public/terrain/19/858589/354046.terrain new file mode 100644 index 000000000..71b0f1b5b Binary files /dev/null and b/public/terrain/19/858589/354046.terrain differ diff --git a/public/terrain/19/858589/354047.terrain b/public/terrain/19/858589/354047.terrain new file mode 100644 index 000000000..ce31c2327 Binary files /dev/null and b/public/terrain/19/858589/354047.terrain differ diff --git a/public/terrain/19/858589/354048.terrain b/public/terrain/19/858589/354048.terrain new file mode 100644 index 000000000..e7c81c68d Binary files /dev/null and b/public/terrain/19/858589/354048.terrain differ diff --git a/public/terrain/19/858589/354049.terrain b/public/terrain/19/858589/354049.terrain new file mode 100644 index 000000000..719fe46b5 Binary files /dev/null and b/public/terrain/19/858589/354049.terrain differ diff --git a/public/terrain/19/858589/354050.terrain b/public/terrain/19/858589/354050.terrain new file mode 100644 index 000000000..f725519f6 Binary files /dev/null and b/public/terrain/19/858589/354050.terrain differ diff --git a/public/terrain/19/858589/354051.terrain b/public/terrain/19/858589/354051.terrain new file mode 100644 index 000000000..6bf62f0bf Binary files /dev/null and b/public/terrain/19/858589/354051.terrain differ diff --git a/public/terrain/19/858589/354052.terrain b/public/terrain/19/858589/354052.terrain new file mode 100644 index 000000000..50d8433e6 Binary files /dev/null and b/public/terrain/19/858589/354052.terrain differ diff --git a/public/terrain/19/858589/354053.terrain b/public/terrain/19/858589/354053.terrain new file mode 100644 index 000000000..de11756f4 Binary files /dev/null and b/public/terrain/19/858589/354053.terrain differ diff --git a/public/terrain/19/858589/354054.terrain b/public/terrain/19/858589/354054.terrain new file mode 100644 index 000000000..d093d2f3b Binary files /dev/null and b/public/terrain/19/858589/354054.terrain differ diff --git a/public/terrain/19/858589/354055.terrain b/public/terrain/19/858589/354055.terrain new file mode 100644 index 000000000..c740aedc3 Binary files /dev/null and b/public/terrain/19/858589/354055.terrain differ diff --git a/public/terrain/19/858589/354056.terrain b/public/terrain/19/858589/354056.terrain new file mode 100644 index 000000000..ef68f71e4 Binary files /dev/null and b/public/terrain/19/858589/354056.terrain differ diff --git a/public/terrain/19/858589/354057.terrain b/public/terrain/19/858589/354057.terrain new file mode 100644 index 000000000..b0e3836c3 Binary files /dev/null and b/public/terrain/19/858589/354057.terrain differ diff --git a/public/terrain/19/858589/354058.terrain b/public/terrain/19/858589/354058.terrain new file mode 100644 index 000000000..8f575d05b Binary files /dev/null and b/public/terrain/19/858589/354058.terrain differ diff --git a/public/terrain/19/858589/354059.terrain b/public/terrain/19/858589/354059.terrain new file mode 100644 index 000000000..ab7ec7d75 Binary files /dev/null and b/public/terrain/19/858589/354059.terrain differ diff --git a/public/terrain/19/858590/353743.terrain b/public/terrain/19/858590/353743.terrain new file mode 100644 index 000000000..3989e2e37 Binary files /dev/null and b/public/terrain/19/858590/353743.terrain differ diff --git a/public/terrain/19/858590/353744.terrain b/public/terrain/19/858590/353744.terrain new file mode 100644 index 000000000..f6d83599c Binary files /dev/null and b/public/terrain/19/858590/353744.terrain differ diff --git a/public/terrain/19/858590/353745.terrain b/public/terrain/19/858590/353745.terrain new file mode 100644 index 000000000..033965827 Binary files /dev/null and b/public/terrain/19/858590/353745.terrain differ diff --git a/public/terrain/19/858590/353746.terrain b/public/terrain/19/858590/353746.terrain new file mode 100644 index 000000000..cfd03e14f Binary files /dev/null and b/public/terrain/19/858590/353746.terrain differ diff --git a/public/terrain/19/858590/353747.terrain b/public/terrain/19/858590/353747.terrain new file mode 100644 index 000000000..296865a47 Binary files /dev/null and b/public/terrain/19/858590/353747.terrain differ diff --git a/public/terrain/19/858590/353748.terrain b/public/terrain/19/858590/353748.terrain new file mode 100644 index 000000000..d7454a967 Binary files /dev/null and b/public/terrain/19/858590/353748.terrain differ diff --git a/public/terrain/19/858590/353749.terrain b/public/terrain/19/858590/353749.terrain new file mode 100644 index 000000000..8d86f90bd Binary files /dev/null and b/public/terrain/19/858590/353749.terrain differ diff --git a/public/terrain/19/858590/353750.terrain b/public/terrain/19/858590/353750.terrain new file mode 100644 index 000000000..6b552a287 Binary files /dev/null and b/public/terrain/19/858590/353750.terrain differ diff --git a/public/terrain/19/858590/353751.terrain b/public/terrain/19/858590/353751.terrain new file mode 100644 index 000000000..886df33fd Binary files /dev/null and b/public/terrain/19/858590/353751.terrain differ diff --git a/public/terrain/19/858590/353752.terrain b/public/terrain/19/858590/353752.terrain new file mode 100644 index 000000000..1f7524424 Binary files /dev/null and b/public/terrain/19/858590/353752.terrain differ diff --git a/public/terrain/19/858590/353753.terrain b/public/terrain/19/858590/353753.terrain new file mode 100644 index 000000000..64bc7552c Binary files /dev/null and b/public/terrain/19/858590/353753.terrain differ diff --git a/public/terrain/19/858590/353754.terrain b/public/terrain/19/858590/353754.terrain new file mode 100644 index 000000000..7b6a37ac3 Binary files /dev/null and b/public/terrain/19/858590/353754.terrain differ diff --git a/public/terrain/19/858590/353755.terrain b/public/terrain/19/858590/353755.terrain new file mode 100644 index 000000000..d6021f510 Binary files /dev/null and b/public/terrain/19/858590/353755.terrain differ diff --git a/public/terrain/19/858590/353756.terrain b/public/terrain/19/858590/353756.terrain new file mode 100644 index 000000000..0a48ce728 Binary files /dev/null and b/public/terrain/19/858590/353756.terrain differ diff --git a/public/terrain/19/858590/353757.terrain b/public/terrain/19/858590/353757.terrain new file mode 100644 index 000000000..3119a18ba Binary files /dev/null and b/public/terrain/19/858590/353757.terrain differ diff --git a/public/terrain/19/858590/353758.terrain b/public/terrain/19/858590/353758.terrain new file mode 100644 index 000000000..2aed2997c Binary files /dev/null and b/public/terrain/19/858590/353758.terrain differ diff --git a/public/terrain/19/858590/353759.terrain b/public/terrain/19/858590/353759.terrain new file mode 100644 index 000000000..568992b67 Binary files /dev/null and b/public/terrain/19/858590/353759.terrain differ diff --git a/public/terrain/19/858590/353760.terrain b/public/terrain/19/858590/353760.terrain new file mode 100644 index 000000000..b1a694c58 Binary files /dev/null and b/public/terrain/19/858590/353760.terrain differ diff --git a/public/terrain/19/858590/353761.terrain b/public/terrain/19/858590/353761.terrain new file mode 100644 index 000000000..79afc048b Binary files /dev/null and b/public/terrain/19/858590/353761.terrain differ diff --git a/public/terrain/19/858590/353762.terrain b/public/terrain/19/858590/353762.terrain new file mode 100644 index 000000000..a9bcecd69 Binary files /dev/null and b/public/terrain/19/858590/353762.terrain differ diff --git a/public/terrain/19/858590/353763.terrain b/public/terrain/19/858590/353763.terrain new file mode 100644 index 000000000..e056785fe Binary files /dev/null and b/public/terrain/19/858590/353763.terrain differ diff --git a/public/terrain/19/858590/353764.terrain b/public/terrain/19/858590/353764.terrain new file mode 100644 index 000000000..0b168adf2 Binary files /dev/null and b/public/terrain/19/858590/353764.terrain differ diff --git a/public/terrain/19/858590/353765.terrain b/public/terrain/19/858590/353765.terrain new file mode 100644 index 000000000..c8d808cca Binary files /dev/null and b/public/terrain/19/858590/353765.terrain differ diff --git a/public/terrain/19/858590/353766.terrain b/public/terrain/19/858590/353766.terrain new file mode 100644 index 000000000..baf09cf7b Binary files /dev/null and b/public/terrain/19/858590/353766.terrain differ diff --git a/public/terrain/19/858590/353767.terrain b/public/terrain/19/858590/353767.terrain new file mode 100644 index 000000000..1ec5544b3 Binary files /dev/null and b/public/terrain/19/858590/353767.terrain differ diff --git a/public/terrain/19/858590/353768.terrain b/public/terrain/19/858590/353768.terrain new file mode 100644 index 000000000..f8cf6f68a Binary files /dev/null and b/public/terrain/19/858590/353768.terrain differ diff --git a/public/terrain/19/858590/353769.terrain b/public/terrain/19/858590/353769.terrain new file mode 100644 index 000000000..94e851b1e Binary files /dev/null and b/public/terrain/19/858590/353769.terrain differ diff --git a/public/terrain/19/858590/353770.terrain b/public/terrain/19/858590/353770.terrain new file mode 100644 index 000000000..2d6878249 Binary files /dev/null and b/public/terrain/19/858590/353770.terrain differ diff --git a/public/terrain/19/858590/353771.terrain b/public/terrain/19/858590/353771.terrain new file mode 100644 index 000000000..86bc992fb Binary files /dev/null and b/public/terrain/19/858590/353771.terrain differ diff --git a/public/terrain/19/858590/353772.terrain b/public/terrain/19/858590/353772.terrain new file mode 100644 index 000000000..c44e2f970 Binary files /dev/null and b/public/terrain/19/858590/353772.terrain differ diff --git a/public/terrain/19/858590/353773.terrain b/public/terrain/19/858590/353773.terrain new file mode 100644 index 000000000..a5f29568c Binary files /dev/null and b/public/terrain/19/858590/353773.terrain differ diff --git a/public/terrain/19/858590/353774.terrain b/public/terrain/19/858590/353774.terrain new file mode 100644 index 000000000..911c051e5 Binary files /dev/null and b/public/terrain/19/858590/353774.terrain differ diff --git a/public/terrain/19/858590/353775.terrain b/public/terrain/19/858590/353775.terrain new file mode 100644 index 000000000..70bad30c3 Binary files /dev/null and b/public/terrain/19/858590/353775.terrain differ diff --git a/public/terrain/19/858590/353776.terrain b/public/terrain/19/858590/353776.terrain new file mode 100644 index 000000000..cb257cfd0 Binary files /dev/null and b/public/terrain/19/858590/353776.terrain differ diff --git a/public/terrain/19/858590/353777.terrain b/public/terrain/19/858590/353777.terrain new file mode 100644 index 000000000..04c82c0f1 Binary files /dev/null and b/public/terrain/19/858590/353777.terrain differ diff --git a/public/terrain/19/858590/353778.terrain b/public/terrain/19/858590/353778.terrain new file mode 100644 index 000000000..8e7f5e451 Binary files /dev/null and b/public/terrain/19/858590/353778.terrain differ diff --git a/public/terrain/19/858590/353779.terrain b/public/terrain/19/858590/353779.terrain new file mode 100644 index 000000000..d7c838f3a Binary files /dev/null and b/public/terrain/19/858590/353779.terrain differ diff --git a/public/terrain/19/858590/353780.terrain b/public/terrain/19/858590/353780.terrain new file mode 100644 index 000000000..e9fbee3c2 Binary files /dev/null and b/public/terrain/19/858590/353780.terrain differ diff --git a/public/terrain/19/858590/353781.terrain b/public/terrain/19/858590/353781.terrain new file mode 100644 index 000000000..baa9f1ab4 Binary files /dev/null and b/public/terrain/19/858590/353781.terrain differ diff --git a/public/terrain/19/858590/353782.terrain b/public/terrain/19/858590/353782.terrain new file mode 100644 index 000000000..c341eee86 Binary files /dev/null and b/public/terrain/19/858590/353782.terrain differ diff --git a/public/terrain/19/858590/353783.terrain b/public/terrain/19/858590/353783.terrain new file mode 100644 index 000000000..85e300366 Binary files /dev/null and b/public/terrain/19/858590/353783.terrain differ diff --git a/public/terrain/19/858590/353784.terrain b/public/terrain/19/858590/353784.terrain new file mode 100644 index 000000000..2009250b1 Binary files /dev/null and b/public/terrain/19/858590/353784.terrain differ diff --git a/public/terrain/19/858590/353785.terrain b/public/terrain/19/858590/353785.terrain new file mode 100644 index 000000000..911bb7a1a Binary files /dev/null and b/public/terrain/19/858590/353785.terrain differ diff --git a/public/terrain/19/858590/353786.terrain b/public/terrain/19/858590/353786.terrain new file mode 100644 index 000000000..f23f7bbca Binary files /dev/null and b/public/terrain/19/858590/353786.terrain differ diff --git a/public/terrain/19/858590/353787.terrain b/public/terrain/19/858590/353787.terrain new file mode 100644 index 000000000..83f0911ab Binary files /dev/null and b/public/terrain/19/858590/353787.terrain differ diff --git a/public/terrain/19/858590/353788.terrain b/public/terrain/19/858590/353788.terrain new file mode 100644 index 000000000..c91066293 Binary files /dev/null and b/public/terrain/19/858590/353788.terrain differ diff --git a/public/terrain/19/858590/353789.terrain b/public/terrain/19/858590/353789.terrain new file mode 100644 index 000000000..e1c21f8f4 Binary files /dev/null and b/public/terrain/19/858590/353789.terrain differ diff --git a/public/terrain/19/858590/353790.terrain b/public/terrain/19/858590/353790.terrain new file mode 100644 index 000000000..52ea57c7b Binary files /dev/null and b/public/terrain/19/858590/353790.terrain differ diff --git a/public/terrain/19/858590/353791.terrain b/public/terrain/19/858590/353791.terrain new file mode 100644 index 000000000..4f2823efd Binary files /dev/null and b/public/terrain/19/858590/353791.terrain differ diff --git a/public/terrain/19/858590/353792.terrain b/public/terrain/19/858590/353792.terrain new file mode 100644 index 000000000..06c27a980 Binary files /dev/null and b/public/terrain/19/858590/353792.terrain differ diff --git a/public/terrain/19/858590/353793.terrain b/public/terrain/19/858590/353793.terrain new file mode 100644 index 000000000..df6c27a47 Binary files /dev/null and b/public/terrain/19/858590/353793.terrain differ diff --git a/public/terrain/19/858590/353794.terrain b/public/terrain/19/858590/353794.terrain new file mode 100644 index 000000000..2a1013cf4 Binary files /dev/null and b/public/terrain/19/858590/353794.terrain differ diff --git a/public/terrain/19/858590/353795.terrain b/public/terrain/19/858590/353795.terrain new file mode 100644 index 000000000..43f261d38 Binary files /dev/null and b/public/terrain/19/858590/353795.terrain differ diff --git a/public/terrain/19/858590/353796.terrain b/public/terrain/19/858590/353796.terrain new file mode 100644 index 000000000..51e8772c9 Binary files /dev/null and b/public/terrain/19/858590/353796.terrain differ diff --git a/public/terrain/19/858590/353797.terrain b/public/terrain/19/858590/353797.terrain new file mode 100644 index 000000000..c59bf08b3 Binary files /dev/null and b/public/terrain/19/858590/353797.terrain differ diff --git a/public/terrain/19/858590/353798.terrain b/public/terrain/19/858590/353798.terrain new file mode 100644 index 000000000..f8e9e7887 Binary files /dev/null and b/public/terrain/19/858590/353798.terrain differ diff --git a/public/terrain/19/858590/353799.terrain b/public/terrain/19/858590/353799.terrain new file mode 100644 index 000000000..987d04f06 Binary files /dev/null and b/public/terrain/19/858590/353799.terrain differ diff --git a/public/terrain/19/858590/353800.terrain b/public/terrain/19/858590/353800.terrain new file mode 100644 index 000000000..043e372cd Binary files /dev/null and b/public/terrain/19/858590/353800.terrain differ diff --git a/public/terrain/19/858590/353801.terrain b/public/terrain/19/858590/353801.terrain new file mode 100644 index 000000000..9d2044d7a Binary files /dev/null and b/public/terrain/19/858590/353801.terrain differ diff --git a/public/terrain/19/858590/353802.terrain b/public/terrain/19/858590/353802.terrain new file mode 100644 index 000000000..3efc77348 Binary files /dev/null and b/public/terrain/19/858590/353802.terrain differ diff --git a/public/terrain/19/858590/353803.terrain b/public/terrain/19/858590/353803.terrain new file mode 100644 index 000000000..05972fdd3 Binary files /dev/null and b/public/terrain/19/858590/353803.terrain differ diff --git a/public/terrain/19/858590/353804.terrain b/public/terrain/19/858590/353804.terrain new file mode 100644 index 000000000..b6f07a285 Binary files /dev/null and b/public/terrain/19/858590/353804.terrain differ diff --git a/public/terrain/19/858590/353805.terrain b/public/terrain/19/858590/353805.terrain new file mode 100644 index 000000000..a36233552 Binary files /dev/null and b/public/terrain/19/858590/353805.terrain differ diff --git a/public/terrain/19/858590/353806.terrain b/public/terrain/19/858590/353806.terrain new file mode 100644 index 000000000..c92ca3cfb Binary files /dev/null and b/public/terrain/19/858590/353806.terrain differ diff --git a/public/terrain/19/858590/353807.terrain b/public/terrain/19/858590/353807.terrain new file mode 100644 index 000000000..8612553b9 Binary files /dev/null and b/public/terrain/19/858590/353807.terrain differ diff --git a/public/terrain/19/858590/353808.terrain b/public/terrain/19/858590/353808.terrain new file mode 100644 index 000000000..756fcad39 Binary files /dev/null and b/public/terrain/19/858590/353808.terrain differ diff --git a/public/terrain/19/858590/353809.terrain b/public/terrain/19/858590/353809.terrain new file mode 100644 index 000000000..5cbfe8b80 Binary files /dev/null and b/public/terrain/19/858590/353809.terrain differ diff --git a/public/terrain/19/858590/353810.terrain b/public/terrain/19/858590/353810.terrain new file mode 100644 index 000000000..4367fc561 Binary files /dev/null and b/public/terrain/19/858590/353810.terrain differ diff --git a/public/terrain/19/858590/353811.terrain b/public/terrain/19/858590/353811.terrain new file mode 100644 index 000000000..e3ddea5f9 Binary files /dev/null and b/public/terrain/19/858590/353811.terrain differ diff --git a/public/terrain/19/858590/353812.terrain b/public/terrain/19/858590/353812.terrain new file mode 100644 index 000000000..0961a11f6 Binary files /dev/null and b/public/terrain/19/858590/353812.terrain differ diff --git a/public/terrain/19/858590/353813.terrain b/public/terrain/19/858590/353813.terrain new file mode 100644 index 000000000..c9f32a2e3 Binary files /dev/null and b/public/terrain/19/858590/353813.terrain differ diff --git a/public/terrain/19/858590/353814.terrain b/public/terrain/19/858590/353814.terrain new file mode 100644 index 000000000..f2a014ff0 Binary files /dev/null and b/public/terrain/19/858590/353814.terrain differ diff --git a/public/terrain/19/858590/353815.terrain b/public/terrain/19/858590/353815.terrain new file mode 100644 index 000000000..2c57d5b5e Binary files /dev/null and b/public/terrain/19/858590/353815.terrain differ diff --git a/public/terrain/19/858590/353816.terrain b/public/terrain/19/858590/353816.terrain new file mode 100644 index 000000000..1b87cd7a9 Binary files /dev/null and b/public/terrain/19/858590/353816.terrain differ diff --git a/public/terrain/19/858590/353817.terrain b/public/terrain/19/858590/353817.terrain new file mode 100644 index 000000000..6329d7846 Binary files /dev/null and b/public/terrain/19/858590/353817.terrain differ diff --git a/public/terrain/19/858590/353818.terrain b/public/terrain/19/858590/353818.terrain new file mode 100644 index 000000000..1d505ef95 Binary files /dev/null and b/public/terrain/19/858590/353818.terrain differ diff --git a/public/terrain/19/858590/353819.terrain b/public/terrain/19/858590/353819.terrain new file mode 100644 index 000000000..5e6e9b411 Binary files /dev/null and b/public/terrain/19/858590/353819.terrain differ diff --git a/public/terrain/19/858590/353820.terrain b/public/terrain/19/858590/353820.terrain new file mode 100644 index 000000000..93c347ffb Binary files /dev/null and b/public/terrain/19/858590/353820.terrain differ diff --git a/public/terrain/19/858590/353821.terrain b/public/terrain/19/858590/353821.terrain new file mode 100644 index 000000000..bb878f889 Binary files /dev/null and b/public/terrain/19/858590/353821.terrain differ diff --git a/public/terrain/19/858590/353822.terrain b/public/terrain/19/858590/353822.terrain new file mode 100644 index 000000000..290ed7188 Binary files /dev/null and b/public/terrain/19/858590/353822.terrain differ diff --git a/public/terrain/19/858590/353823.terrain b/public/terrain/19/858590/353823.terrain new file mode 100644 index 000000000..33b92a29b Binary files /dev/null and b/public/terrain/19/858590/353823.terrain differ diff --git a/public/terrain/19/858590/353824.terrain b/public/terrain/19/858590/353824.terrain new file mode 100644 index 000000000..e3277e9c7 Binary files /dev/null and b/public/terrain/19/858590/353824.terrain differ diff --git a/public/terrain/19/858590/353825.terrain b/public/terrain/19/858590/353825.terrain new file mode 100644 index 000000000..ddd1b8e29 Binary files /dev/null and b/public/terrain/19/858590/353825.terrain differ diff --git a/public/terrain/19/858590/353826.terrain b/public/terrain/19/858590/353826.terrain new file mode 100644 index 000000000..59e22bec8 Binary files /dev/null and b/public/terrain/19/858590/353826.terrain differ diff --git a/public/terrain/19/858590/353827.terrain b/public/terrain/19/858590/353827.terrain new file mode 100644 index 000000000..24b0547e7 Binary files /dev/null and b/public/terrain/19/858590/353827.terrain differ diff --git a/public/terrain/19/858590/353828.terrain b/public/terrain/19/858590/353828.terrain new file mode 100644 index 000000000..6d86fba23 Binary files /dev/null and b/public/terrain/19/858590/353828.terrain differ diff --git a/public/terrain/19/858590/353829.terrain b/public/terrain/19/858590/353829.terrain new file mode 100644 index 000000000..d10d305bb Binary files /dev/null and b/public/terrain/19/858590/353829.terrain differ diff --git a/public/terrain/19/858590/353830.terrain b/public/terrain/19/858590/353830.terrain new file mode 100644 index 000000000..b8f7aa955 Binary files /dev/null and b/public/terrain/19/858590/353830.terrain differ diff --git a/public/terrain/19/858590/353831.terrain b/public/terrain/19/858590/353831.terrain new file mode 100644 index 000000000..f2defae0d Binary files /dev/null and b/public/terrain/19/858590/353831.terrain differ diff --git a/public/terrain/19/858590/353832.terrain b/public/terrain/19/858590/353832.terrain new file mode 100644 index 000000000..6371bc10d Binary files /dev/null and b/public/terrain/19/858590/353832.terrain differ diff --git a/public/terrain/19/858590/353833.terrain b/public/terrain/19/858590/353833.terrain new file mode 100644 index 000000000..0db40eeb7 Binary files /dev/null and b/public/terrain/19/858590/353833.terrain differ diff --git a/public/terrain/19/858590/353834.terrain b/public/terrain/19/858590/353834.terrain new file mode 100644 index 000000000..ed275d367 Binary files /dev/null and b/public/terrain/19/858590/353834.terrain differ diff --git a/public/terrain/19/858590/353835.terrain b/public/terrain/19/858590/353835.terrain new file mode 100644 index 000000000..ddc52fb8f Binary files /dev/null and b/public/terrain/19/858590/353835.terrain differ diff --git a/public/terrain/19/858590/353836.terrain b/public/terrain/19/858590/353836.terrain new file mode 100644 index 000000000..bc14e72bf Binary files /dev/null and b/public/terrain/19/858590/353836.terrain differ diff --git a/public/terrain/19/858590/353837.terrain b/public/terrain/19/858590/353837.terrain new file mode 100644 index 000000000..77cd6ad5b Binary files /dev/null and b/public/terrain/19/858590/353837.terrain differ diff --git a/public/terrain/19/858590/353838.terrain b/public/terrain/19/858590/353838.terrain new file mode 100644 index 000000000..900d5c080 Binary files /dev/null and b/public/terrain/19/858590/353838.terrain differ diff --git a/public/terrain/19/858590/353839.terrain b/public/terrain/19/858590/353839.terrain new file mode 100644 index 000000000..17123e182 Binary files /dev/null and b/public/terrain/19/858590/353839.terrain differ diff --git a/public/terrain/19/858590/353840.terrain b/public/terrain/19/858590/353840.terrain new file mode 100644 index 000000000..be74c260a Binary files /dev/null and b/public/terrain/19/858590/353840.terrain differ diff --git a/public/terrain/19/858590/353841.terrain b/public/terrain/19/858590/353841.terrain new file mode 100644 index 000000000..9d4ccfe5b Binary files /dev/null and b/public/terrain/19/858590/353841.terrain differ diff --git a/public/terrain/19/858590/353842.terrain b/public/terrain/19/858590/353842.terrain new file mode 100644 index 000000000..8cb7fdb23 Binary files /dev/null and b/public/terrain/19/858590/353842.terrain differ diff --git a/public/terrain/19/858590/353843.terrain b/public/terrain/19/858590/353843.terrain new file mode 100644 index 000000000..cc708fc72 Binary files /dev/null and b/public/terrain/19/858590/353843.terrain differ diff --git a/public/terrain/19/858590/353844.terrain b/public/terrain/19/858590/353844.terrain new file mode 100644 index 000000000..bb2f066aa Binary files /dev/null and b/public/terrain/19/858590/353844.terrain differ diff --git a/public/terrain/19/858590/353845.terrain b/public/terrain/19/858590/353845.terrain new file mode 100644 index 000000000..661aa6f02 Binary files /dev/null and b/public/terrain/19/858590/353845.terrain differ diff --git a/public/terrain/19/858590/353846.terrain b/public/terrain/19/858590/353846.terrain new file mode 100644 index 000000000..6a7c6b3b5 Binary files /dev/null and b/public/terrain/19/858590/353846.terrain differ diff --git a/public/terrain/19/858590/353847.terrain b/public/terrain/19/858590/353847.terrain new file mode 100644 index 000000000..c30eafba5 Binary files /dev/null and b/public/terrain/19/858590/353847.terrain differ diff --git a/public/terrain/19/858590/353848.terrain b/public/terrain/19/858590/353848.terrain new file mode 100644 index 000000000..33857e585 Binary files /dev/null and b/public/terrain/19/858590/353848.terrain differ diff --git a/public/terrain/19/858590/353849.terrain b/public/terrain/19/858590/353849.terrain new file mode 100644 index 000000000..fa6900e56 Binary files /dev/null and b/public/terrain/19/858590/353849.terrain differ diff --git a/public/terrain/19/858590/353850.terrain b/public/terrain/19/858590/353850.terrain new file mode 100644 index 000000000..5ffe9b0a5 Binary files /dev/null and b/public/terrain/19/858590/353850.terrain differ diff --git a/public/terrain/19/858590/353851.terrain b/public/terrain/19/858590/353851.terrain new file mode 100644 index 000000000..45d12faa3 Binary files /dev/null and b/public/terrain/19/858590/353851.terrain differ diff --git a/public/terrain/19/858590/353852.terrain b/public/terrain/19/858590/353852.terrain new file mode 100644 index 000000000..352938796 Binary files /dev/null and b/public/terrain/19/858590/353852.terrain differ diff --git a/public/terrain/19/858590/353853.terrain b/public/terrain/19/858590/353853.terrain new file mode 100644 index 000000000..6f344cd4a Binary files /dev/null and b/public/terrain/19/858590/353853.terrain differ diff --git a/public/terrain/19/858590/353854.terrain b/public/terrain/19/858590/353854.terrain new file mode 100644 index 000000000..64745f26d Binary files /dev/null and b/public/terrain/19/858590/353854.terrain differ diff --git a/public/terrain/19/858590/353855.terrain b/public/terrain/19/858590/353855.terrain new file mode 100644 index 000000000..aaf5dfbf0 Binary files /dev/null and b/public/terrain/19/858590/353855.terrain differ diff --git a/public/terrain/19/858590/353856.terrain b/public/terrain/19/858590/353856.terrain new file mode 100644 index 000000000..48c71c1d6 Binary files /dev/null and b/public/terrain/19/858590/353856.terrain differ diff --git a/public/terrain/19/858590/353857.terrain b/public/terrain/19/858590/353857.terrain new file mode 100644 index 000000000..0c2ce0f18 Binary files /dev/null and b/public/terrain/19/858590/353857.terrain differ diff --git a/public/terrain/19/858590/353858.terrain b/public/terrain/19/858590/353858.terrain new file mode 100644 index 000000000..913820b0d Binary files /dev/null and b/public/terrain/19/858590/353858.terrain differ diff --git a/public/terrain/19/858590/353859.terrain b/public/terrain/19/858590/353859.terrain new file mode 100644 index 000000000..cc4d83f0a Binary files /dev/null and b/public/terrain/19/858590/353859.terrain differ diff --git a/public/terrain/19/858590/353860.terrain b/public/terrain/19/858590/353860.terrain new file mode 100644 index 000000000..6b8966075 Binary files /dev/null and b/public/terrain/19/858590/353860.terrain differ diff --git a/public/terrain/19/858590/353861.terrain b/public/terrain/19/858590/353861.terrain new file mode 100644 index 000000000..9a9d28ade Binary files /dev/null and b/public/terrain/19/858590/353861.terrain differ diff --git a/public/terrain/19/858590/353862.terrain b/public/terrain/19/858590/353862.terrain new file mode 100644 index 000000000..b91b31cf1 Binary files /dev/null and b/public/terrain/19/858590/353862.terrain differ diff --git a/public/terrain/19/858590/353863.terrain b/public/terrain/19/858590/353863.terrain new file mode 100644 index 000000000..527fba0cc Binary files /dev/null and b/public/terrain/19/858590/353863.terrain differ diff --git a/public/terrain/19/858590/353864.terrain b/public/terrain/19/858590/353864.terrain new file mode 100644 index 000000000..14ff27a0b Binary files /dev/null and b/public/terrain/19/858590/353864.terrain differ diff --git a/public/terrain/19/858590/353865.terrain b/public/terrain/19/858590/353865.terrain new file mode 100644 index 000000000..1094adea6 Binary files /dev/null and b/public/terrain/19/858590/353865.terrain differ diff --git a/public/terrain/19/858590/353866.terrain b/public/terrain/19/858590/353866.terrain new file mode 100644 index 000000000..879c31aa7 Binary files /dev/null and b/public/terrain/19/858590/353866.terrain differ diff --git a/public/terrain/19/858590/353867.terrain b/public/terrain/19/858590/353867.terrain new file mode 100644 index 000000000..64c4352c0 Binary files /dev/null and b/public/terrain/19/858590/353867.terrain differ diff --git a/public/terrain/19/858590/353868.terrain b/public/terrain/19/858590/353868.terrain new file mode 100644 index 000000000..bab0e013f Binary files /dev/null and b/public/terrain/19/858590/353868.terrain differ diff --git a/public/terrain/19/858590/353869.terrain b/public/terrain/19/858590/353869.terrain new file mode 100644 index 000000000..5497bbbec Binary files /dev/null and b/public/terrain/19/858590/353869.terrain differ diff --git a/public/terrain/19/858590/353870.terrain b/public/terrain/19/858590/353870.terrain new file mode 100644 index 000000000..557782e2e Binary files /dev/null and b/public/terrain/19/858590/353870.terrain differ diff --git a/public/terrain/19/858590/353871.terrain b/public/terrain/19/858590/353871.terrain new file mode 100644 index 000000000..803dd540c Binary files /dev/null and b/public/terrain/19/858590/353871.terrain differ diff --git a/public/terrain/19/858590/353872.terrain b/public/terrain/19/858590/353872.terrain new file mode 100644 index 000000000..7ab8be492 Binary files /dev/null and b/public/terrain/19/858590/353872.terrain differ diff --git a/public/terrain/19/858590/353873.terrain b/public/terrain/19/858590/353873.terrain new file mode 100644 index 000000000..fe548055a Binary files /dev/null and b/public/terrain/19/858590/353873.terrain differ diff --git a/public/terrain/19/858590/353874.terrain b/public/terrain/19/858590/353874.terrain new file mode 100644 index 000000000..f0e5d58bf Binary files /dev/null and b/public/terrain/19/858590/353874.terrain differ diff --git a/public/terrain/19/858590/353875.terrain b/public/terrain/19/858590/353875.terrain new file mode 100644 index 000000000..8935c05b7 Binary files /dev/null and b/public/terrain/19/858590/353875.terrain differ diff --git a/public/terrain/19/858590/353876.terrain b/public/terrain/19/858590/353876.terrain new file mode 100644 index 000000000..defd763c6 Binary files /dev/null and b/public/terrain/19/858590/353876.terrain differ diff --git a/public/terrain/19/858590/353877.terrain b/public/terrain/19/858590/353877.terrain new file mode 100644 index 000000000..f6efe399e Binary files /dev/null and b/public/terrain/19/858590/353877.terrain differ diff --git a/public/terrain/19/858590/353878.terrain b/public/terrain/19/858590/353878.terrain new file mode 100644 index 000000000..74838aaa6 Binary files /dev/null and b/public/terrain/19/858590/353878.terrain differ diff --git a/public/terrain/19/858590/353879.terrain b/public/terrain/19/858590/353879.terrain new file mode 100644 index 000000000..47a528283 Binary files /dev/null and b/public/terrain/19/858590/353879.terrain differ diff --git a/public/terrain/19/858590/353880.terrain b/public/terrain/19/858590/353880.terrain new file mode 100644 index 000000000..bd0e2c2aa Binary files /dev/null and b/public/terrain/19/858590/353880.terrain differ diff --git a/public/terrain/19/858590/353881.terrain b/public/terrain/19/858590/353881.terrain new file mode 100644 index 000000000..87406a2df Binary files /dev/null and b/public/terrain/19/858590/353881.terrain differ diff --git a/public/terrain/19/858590/353882.terrain b/public/terrain/19/858590/353882.terrain new file mode 100644 index 000000000..9f2c8d680 Binary files /dev/null and b/public/terrain/19/858590/353882.terrain differ diff --git a/public/terrain/19/858590/353883.terrain b/public/terrain/19/858590/353883.terrain new file mode 100644 index 000000000..18cf6cde5 Binary files /dev/null and b/public/terrain/19/858590/353883.terrain differ diff --git a/public/terrain/19/858590/353884.terrain b/public/terrain/19/858590/353884.terrain new file mode 100644 index 000000000..dc931e703 Binary files /dev/null and b/public/terrain/19/858590/353884.terrain differ diff --git a/public/terrain/19/858590/353885.terrain b/public/terrain/19/858590/353885.terrain new file mode 100644 index 000000000..273528bb9 Binary files /dev/null and b/public/terrain/19/858590/353885.terrain differ diff --git a/public/terrain/19/858590/353886.terrain b/public/terrain/19/858590/353886.terrain new file mode 100644 index 000000000..ba2e7d846 Binary files /dev/null and b/public/terrain/19/858590/353886.terrain differ diff --git a/public/terrain/19/858590/353887.terrain b/public/terrain/19/858590/353887.terrain new file mode 100644 index 000000000..af6134df2 Binary files /dev/null and b/public/terrain/19/858590/353887.terrain differ diff --git a/public/terrain/19/858590/353888.terrain b/public/terrain/19/858590/353888.terrain new file mode 100644 index 000000000..c3151689f Binary files /dev/null and b/public/terrain/19/858590/353888.terrain differ diff --git a/public/terrain/19/858590/353889.terrain b/public/terrain/19/858590/353889.terrain new file mode 100644 index 000000000..7da3e7492 Binary files /dev/null and b/public/terrain/19/858590/353889.terrain differ diff --git a/public/terrain/19/858590/353890.terrain b/public/terrain/19/858590/353890.terrain new file mode 100644 index 000000000..eb0e0f66f Binary files /dev/null and b/public/terrain/19/858590/353890.terrain differ diff --git a/public/terrain/19/858590/353891.terrain b/public/terrain/19/858590/353891.terrain new file mode 100644 index 000000000..322e98832 Binary files /dev/null and b/public/terrain/19/858590/353891.terrain differ diff --git a/public/terrain/19/858590/353892.terrain b/public/terrain/19/858590/353892.terrain new file mode 100644 index 000000000..074ff5bef Binary files /dev/null and b/public/terrain/19/858590/353892.terrain differ diff --git a/public/terrain/19/858590/353893.terrain b/public/terrain/19/858590/353893.terrain new file mode 100644 index 000000000..b3b690f10 Binary files /dev/null and b/public/terrain/19/858590/353893.terrain differ diff --git a/public/terrain/19/858590/353894.terrain b/public/terrain/19/858590/353894.terrain new file mode 100644 index 000000000..0bb044df4 Binary files /dev/null and b/public/terrain/19/858590/353894.terrain differ diff --git a/public/terrain/19/858590/353895.terrain b/public/terrain/19/858590/353895.terrain new file mode 100644 index 000000000..e18e0bf36 Binary files /dev/null and b/public/terrain/19/858590/353895.terrain differ diff --git a/public/terrain/19/858590/353896.terrain b/public/terrain/19/858590/353896.terrain new file mode 100644 index 000000000..174685fe5 Binary files /dev/null and b/public/terrain/19/858590/353896.terrain differ diff --git a/public/terrain/19/858590/353897.terrain b/public/terrain/19/858590/353897.terrain new file mode 100644 index 000000000..370c7edd3 Binary files /dev/null and b/public/terrain/19/858590/353897.terrain differ diff --git a/public/terrain/19/858590/353898.terrain b/public/terrain/19/858590/353898.terrain new file mode 100644 index 000000000..38ffcc2de Binary files /dev/null and b/public/terrain/19/858590/353898.terrain differ diff --git a/public/terrain/19/858590/353899.terrain b/public/terrain/19/858590/353899.terrain new file mode 100644 index 000000000..1cd100b18 Binary files /dev/null and b/public/terrain/19/858590/353899.terrain differ diff --git a/public/terrain/19/858590/353900.terrain b/public/terrain/19/858590/353900.terrain new file mode 100644 index 000000000..292dbba45 Binary files /dev/null and b/public/terrain/19/858590/353900.terrain differ diff --git a/public/terrain/19/858590/353901.terrain b/public/terrain/19/858590/353901.terrain new file mode 100644 index 000000000..3465c9399 Binary files /dev/null and b/public/terrain/19/858590/353901.terrain differ diff --git a/public/terrain/19/858590/353902.terrain b/public/terrain/19/858590/353902.terrain new file mode 100644 index 000000000..8f715bc58 Binary files /dev/null and b/public/terrain/19/858590/353902.terrain differ diff --git a/public/terrain/19/858590/353903.terrain b/public/terrain/19/858590/353903.terrain new file mode 100644 index 000000000..17d5871a5 Binary files /dev/null and b/public/terrain/19/858590/353903.terrain differ diff --git a/public/terrain/19/858590/353904.terrain b/public/terrain/19/858590/353904.terrain new file mode 100644 index 000000000..e6e3156ea Binary files /dev/null and b/public/terrain/19/858590/353904.terrain differ diff --git a/public/terrain/19/858590/353905.terrain b/public/terrain/19/858590/353905.terrain new file mode 100644 index 000000000..5cf69c962 Binary files /dev/null and b/public/terrain/19/858590/353905.terrain differ diff --git a/public/terrain/19/858590/353906.terrain b/public/terrain/19/858590/353906.terrain new file mode 100644 index 000000000..3135fbf34 Binary files /dev/null and b/public/terrain/19/858590/353906.terrain differ diff --git a/public/terrain/19/858590/353907.terrain b/public/terrain/19/858590/353907.terrain new file mode 100644 index 000000000..bf7f4c3b9 Binary files /dev/null and b/public/terrain/19/858590/353907.terrain differ diff --git a/public/terrain/19/858590/353908.terrain b/public/terrain/19/858590/353908.terrain new file mode 100644 index 000000000..cc53c0394 Binary files /dev/null and b/public/terrain/19/858590/353908.terrain differ diff --git a/public/terrain/19/858590/353909.terrain b/public/terrain/19/858590/353909.terrain new file mode 100644 index 000000000..b597495e1 Binary files /dev/null and b/public/terrain/19/858590/353909.terrain differ diff --git a/public/terrain/19/858590/353910.terrain b/public/terrain/19/858590/353910.terrain new file mode 100644 index 000000000..a33e98b44 Binary files /dev/null and b/public/terrain/19/858590/353910.terrain differ diff --git a/public/terrain/19/858590/353911.terrain b/public/terrain/19/858590/353911.terrain new file mode 100644 index 000000000..1b7f77ddc Binary files /dev/null and b/public/terrain/19/858590/353911.terrain differ diff --git a/public/terrain/19/858590/353912.terrain b/public/terrain/19/858590/353912.terrain new file mode 100644 index 000000000..8e8f9b7bf Binary files /dev/null and b/public/terrain/19/858590/353912.terrain differ diff --git a/public/terrain/19/858590/353913.terrain b/public/terrain/19/858590/353913.terrain new file mode 100644 index 000000000..ff6156502 Binary files /dev/null and b/public/terrain/19/858590/353913.terrain differ diff --git a/public/terrain/19/858590/353914.terrain b/public/terrain/19/858590/353914.terrain new file mode 100644 index 000000000..7ec145107 Binary files /dev/null and b/public/terrain/19/858590/353914.terrain differ diff --git a/public/terrain/19/858590/353915.terrain b/public/terrain/19/858590/353915.terrain new file mode 100644 index 000000000..fb4299b52 Binary files /dev/null and b/public/terrain/19/858590/353915.terrain differ diff --git a/public/terrain/19/858590/353916.terrain b/public/terrain/19/858590/353916.terrain new file mode 100644 index 000000000..c12f998ab Binary files /dev/null and b/public/terrain/19/858590/353916.terrain differ diff --git a/public/terrain/19/858590/353917.terrain b/public/terrain/19/858590/353917.terrain new file mode 100644 index 000000000..62a76fd6f Binary files /dev/null and b/public/terrain/19/858590/353917.terrain differ diff --git a/public/terrain/19/858590/353918.terrain b/public/terrain/19/858590/353918.terrain new file mode 100644 index 000000000..6841a4bd0 Binary files /dev/null and b/public/terrain/19/858590/353918.terrain differ diff --git a/public/terrain/19/858590/353919.terrain b/public/terrain/19/858590/353919.terrain new file mode 100644 index 000000000..6f16eb184 Binary files /dev/null and b/public/terrain/19/858590/353919.terrain differ diff --git a/public/terrain/19/858590/353920.terrain b/public/terrain/19/858590/353920.terrain new file mode 100644 index 000000000..4b2f8a67b Binary files /dev/null and b/public/terrain/19/858590/353920.terrain differ diff --git a/public/terrain/19/858590/353921.terrain b/public/terrain/19/858590/353921.terrain new file mode 100644 index 000000000..6f2a817ad Binary files /dev/null and b/public/terrain/19/858590/353921.terrain differ diff --git a/public/terrain/19/858590/353922.terrain b/public/terrain/19/858590/353922.terrain new file mode 100644 index 000000000..4b9d25308 Binary files /dev/null and b/public/terrain/19/858590/353922.terrain differ diff --git a/public/terrain/19/858590/353923.terrain b/public/terrain/19/858590/353923.terrain new file mode 100644 index 000000000..87c1dfbf4 Binary files /dev/null and b/public/terrain/19/858590/353923.terrain differ diff --git a/public/terrain/19/858590/353924.terrain b/public/terrain/19/858590/353924.terrain new file mode 100644 index 000000000..87ed94ec6 Binary files /dev/null and b/public/terrain/19/858590/353924.terrain differ diff --git a/public/terrain/19/858590/353925.terrain b/public/terrain/19/858590/353925.terrain new file mode 100644 index 000000000..10c4827e5 Binary files /dev/null and b/public/terrain/19/858590/353925.terrain differ diff --git a/public/terrain/19/858590/353926.terrain b/public/terrain/19/858590/353926.terrain new file mode 100644 index 000000000..9fb19cbdb Binary files /dev/null and b/public/terrain/19/858590/353926.terrain differ diff --git a/public/terrain/19/858590/353927.terrain b/public/terrain/19/858590/353927.terrain new file mode 100644 index 000000000..0799c1c15 Binary files /dev/null and b/public/terrain/19/858590/353927.terrain differ diff --git a/public/terrain/19/858590/353928.terrain b/public/terrain/19/858590/353928.terrain new file mode 100644 index 000000000..13a0947a7 Binary files /dev/null and b/public/terrain/19/858590/353928.terrain differ diff --git a/public/terrain/19/858590/353929.terrain b/public/terrain/19/858590/353929.terrain new file mode 100644 index 000000000..365d228af Binary files /dev/null and b/public/terrain/19/858590/353929.terrain differ diff --git a/public/terrain/19/858590/353930.terrain b/public/terrain/19/858590/353930.terrain new file mode 100644 index 000000000..bd460a865 Binary files /dev/null and b/public/terrain/19/858590/353930.terrain differ diff --git a/public/terrain/19/858590/353931.terrain b/public/terrain/19/858590/353931.terrain new file mode 100644 index 000000000..c041763d9 Binary files /dev/null and b/public/terrain/19/858590/353931.terrain differ diff --git a/public/terrain/19/858590/353932.terrain b/public/terrain/19/858590/353932.terrain new file mode 100644 index 000000000..0abd05a00 Binary files /dev/null and b/public/terrain/19/858590/353932.terrain differ diff --git a/public/terrain/19/858590/353933.terrain b/public/terrain/19/858590/353933.terrain new file mode 100644 index 000000000..2fe3081a0 Binary files /dev/null and b/public/terrain/19/858590/353933.terrain differ diff --git a/public/terrain/19/858590/353934.terrain b/public/terrain/19/858590/353934.terrain new file mode 100644 index 000000000..27e0baad8 Binary files /dev/null and b/public/terrain/19/858590/353934.terrain differ diff --git a/public/terrain/19/858590/353935.terrain b/public/terrain/19/858590/353935.terrain new file mode 100644 index 000000000..d7403b590 Binary files /dev/null and b/public/terrain/19/858590/353935.terrain differ diff --git a/public/terrain/19/858590/353936.terrain b/public/terrain/19/858590/353936.terrain new file mode 100644 index 000000000..1ec0608a9 Binary files /dev/null and b/public/terrain/19/858590/353936.terrain differ diff --git a/public/terrain/19/858590/353937.terrain b/public/terrain/19/858590/353937.terrain new file mode 100644 index 000000000..eabe4c81a Binary files /dev/null and b/public/terrain/19/858590/353937.terrain differ diff --git a/public/terrain/19/858590/353938.terrain b/public/terrain/19/858590/353938.terrain new file mode 100644 index 000000000..8fa2cb04e Binary files /dev/null and b/public/terrain/19/858590/353938.terrain differ diff --git a/public/terrain/19/858590/353939.terrain b/public/terrain/19/858590/353939.terrain new file mode 100644 index 000000000..b09b870f8 Binary files /dev/null and b/public/terrain/19/858590/353939.terrain differ diff --git a/public/terrain/19/858590/353940.terrain b/public/terrain/19/858590/353940.terrain new file mode 100644 index 000000000..c65b06d3c Binary files /dev/null and b/public/terrain/19/858590/353940.terrain differ diff --git a/public/terrain/19/858590/353941.terrain b/public/terrain/19/858590/353941.terrain new file mode 100644 index 000000000..4fe567120 Binary files /dev/null and b/public/terrain/19/858590/353941.terrain differ diff --git a/public/terrain/19/858590/353942.terrain b/public/terrain/19/858590/353942.terrain new file mode 100644 index 000000000..ae3e0fd46 Binary files /dev/null and b/public/terrain/19/858590/353942.terrain differ diff --git a/public/terrain/19/858590/353943.terrain b/public/terrain/19/858590/353943.terrain new file mode 100644 index 000000000..72a1d9c08 Binary files /dev/null and b/public/terrain/19/858590/353943.terrain differ diff --git a/public/terrain/19/858590/353944.terrain b/public/terrain/19/858590/353944.terrain new file mode 100644 index 000000000..0def6a889 Binary files /dev/null and b/public/terrain/19/858590/353944.terrain differ diff --git a/public/terrain/19/858590/353945.terrain b/public/terrain/19/858590/353945.terrain new file mode 100644 index 000000000..142100a6e Binary files /dev/null and b/public/terrain/19/858590/353945.terrain differ diff --git a/public/terrain/19/858590/353946.terrain b/public/terrain/19/858590/353946.terrain new file mode 100644 index 000000000..6ff96df6e Binary files /dev/null and b/public/terrain/19/858590/353946.terrain differ diff --git a/public/terrain/19/858590/353947.terrain b/public/terrain/19/858590/353947.terrain new file mode 100644 index 000000000..d77074d5d Binary files /dev/null and b/public/terrain/19/858590/353947.terrain differ diff --git a/public/terrain/19/858590/353948.terrain b/public/terrain/19/858590/353948.terrain new file mode 100644 index 000000000..d344bce95 Binary files /dev/null and b/public/terrain/19/858590/353948.terrain differ diff --git a/public/terrain/19/858590/353949.terrain b/public/terrain/19/858590/353949.terrain new file mode 100644 index 000000000..a359512b1 Binary files /dev/null and b/public/terrain/19/858590/353949.terrain differ diff --git a/public/terrain/19/858590/353950.terrain b/public/terrain/19/858590/353950.terrain new file mode 100644 index 000000000..92f57ae6a Binary files /dev/null and b/public/terrain/19/858590/353950.terrain differ diff --git a/public/terrain/19/858590/353951.terrain b/public/terrain/19/858590/353951.terrain new file mode 100644 index 000000000..529078de2 Binary files /dev/null and b/public/terrain/19/858590/353951.terrain differ diff --git a/public/terrain/19/858590/353952.terrain b/public/terrain/19/858590/353952.terrain new file mode 100644 index 000000000..4f0df92af Binary files /dev/null and b/public/terrain/19/858590/353952.terrain differ diff --git a/public/terrain/19/858590/353953.terrain b/public/terrain/19/858590/353953.terrain new file mode 100644 index 000000000..b8c815ac2 Binary files /dev/null and b/public/terrain/19/858590/353953.terrain differ diff --git a/public/terrain/19/858590/353954.terrain b/public/terrain/19/858590/353954.terrain new file mode 100644 index 000000000..51e85cd59 Binary files /dev/null and b/public/terrain/19/858590/353954.terrain differ diff --git a/public/terrain/19/858590/353955.terrain b/public/terrain/19/858590/353955.terrain new file mode 100644 index 000000000..513cb3371 Binary files /dev/null and b/public/terrain/19/858590/353955.terrain differ diff --git a/public/terrain/19/858590/353956.terrain b/public/terrain/19/858590/353956.terrain new file mode 100644 index 000000000..ce64bf812 Binary files /dev/null and b/public/terrain/19/858590/353956.terrain differ diff --git a/public/terrain/19/858590/353957.terrain b/public/terrain/19/858590/353957.terrain new file mode 100644 index 000000000..75680a9a4 Binary files /dev/null and b/public/terrain/19/858590/353957.terrain differ diff --git a/public/terrain/19/858590/353958.terrain b/public/terrain/19/858590/353958.terrain new file mode 100644 index 000000000..077177e9b Binary files /dev/null and b/public/terrain/19/858590/353958.terrain differ diff --git a/public/terrain/19/858590/353959.terrain b/public/terrain/19/858590/353959.terrain new file mode 100644 index 000000000..9a0912907 Binary files /dev/null and b/public/terrain/19/858590/353959.terrain differ diff --git a/public/terrain/19/858590/353960.terrain b/public/terrain/19/858590/353960.terrain new file mode 100644 index 000000000..c62b141e8 Binary files /dev/null and b/public/terrain/19/858590/353960.terrain differ diff --git a/public/terrain/19/858590/353961.terrain b/public/terrain/19/858590/353961.terrain new file mode 100644 index 000000000..d7b2ce007 Binary files /dev/null and b/public/terrain/19/858590/353961.terrain differ diff --git a/public/terrain/19/858590/353962.terrain b/public/terrain/19/858590/353962.terrain new file mode 100644 index 000000000..3a9c4954a Binary files /dev/null and b/public/terrain/19/858590/353962.terrain differ diff --git a/public/terrain/19/858590/353963.terrain b/public/terrain/19/858590/353963.terrain new file mode 100644 index 000000000..36f98cfbd Binary files /dev/null and b/public/terrain/19/858590/353963.terrain differ diff --git a/public/terrain/19/858590/353964.terrain b/public/terrain/19/858590/353964.terrain new file mode 100644 index 000000000..8015236fb Binary files /dev/null and b/public/terrain/19/858590/353964.terrain differ diff --git a/public/terrain/19/858590/353965.terrain b/public/terrain/19/858590/353965.terrain new file mode 100644 index 000000000..3438379c9 Binary files /dev/null and b/public/terrain/19/858590/353965.terrain differ diff --git a/public/terrain/19/858590/353966.terrain b/public/terrain/19/858590/353966.terrain new file mode 100644 index 000000000..e785f3072 Binary files /dev/null and b/public/terrain/19/858590/353966.terrain differ diff --git a/public/terrain/19/858590/353967.terrain b/public/terrain/19/858590/353967.terrain new file mode 100644 index 000000000..156397bb3 Binary files /dev/null and b/public/terrain/19/858590/353967.terrain differ diff --git a/public/terrain/19/858590/353968.terrain b/public/terrain/19/858590/353968.terrain new file mode 100644 index 000000000..491a77cb3 Binary files /dev/null and b/public/terrain/19/858590/353968.terrain differ diff --git a/public/terrain/19/858590/353969.terrain b/public/terrain/19/858590/353969.terrain new file mode 100644 index 000000000..f6331a65d Binary files /dev/null and b/public/terrain/19/858590/353969.terrain differ diff --git a/public/terrain/19/858590/353970.terrain b/public/terrain/19/858590/353970.terrain new file mode 100644 index 000000000..d319f9012 Binary files /dev/null and b/public/terrain/19/858590/353970.terrain differ diff --git a/public/terrain/19/858590/353971.terrain b/public/terrain/19/858590/353971.terrain new file mode 100644 index 000000000..304e88836 Binary files /dev/null and b/public/terrain/19/858590/353971.terrain differ diff --git a/public/terrain/19/858590/353972.terrain b/public/terrain/19/858590/353972.terrain new file mode 100644 index 000000000..c4fb08dc6 Binary files /dev/null and b/public/terrain/19/858590/353972.terrain differ diff --git a/public/terrain/19/858590/353973.terrain b/public/terrain/19/858590/353973.terrain new file mode 100644 index 000000000..94f4b442b Binary files /dev/null and b/public/terrain/19/858590/353973.terrain differ diff --git a/public/terrain/19/858590/353974.terrain b/public/terrain/19/858590/353974.terrain new file mode 100644 index 000000000..2ec9642d9 Binary files /dev/null and b/public/terrain/19/858590/353974.terrain differ diff --git a/public/terrain/19/858590/353975.terrain b/public/terrain/19/858590/353975.terrain new file mode 100644 index 000000000..7c3318a37 Binary files /dev/null and b/public/terrain/19/858590/353975.terrain differ diff --git a/public/terrain/19/858590/353976.terrain b/public/terrain/19/858590/353976.terrain new file mode 100644 index 000000000..860d82913 Binary files /dev/null and b/public/terrain/19/858590/353976.terrain differ diff --git a/public/terrain/19/858590/353977.terrain b/public/terrain/19/858590/353977.terrain new file mode 100644 index 000000000..05a26cfb2 Binary files /dev/null and b/public/terrain/19/858590/353977.terrain differ diff --git a/public/terrain/19/858590/353978.terrain b/public/terrain/19/858590/353978.terrain new file mode 100644 index 000000000..f74d46d09 Binary files /dev/null and b/public/terrain/19/858590/353978.terrain differ diff --git a/public/terrain/19/858590/353979.terrain b/public/terrain/19/858590/353979.terrain new file mode 100644 index 000000000..29929bedf Binary files /dev/null and b/public/terrain/19/858590/353979.terrain differ diff --git a/public/terrain/19/858590/353980.terrain b/public/terrain/19/858590/353980.terrain new file mode 100644 index 000000000..c6411ca42 Binary files /dev/null and b/public/terrain/19/858590/353980.terrain differ diff --git a/public/terrain/19/858590/353981.terrain b/public/terrain/19/858590/353981.terrain new file mode 100644 index 000000000..96977ed0f Binary files /dev/null and b/public/terrain/19/858590/353981.terrain differ diff --git a/public/terrain/19/858590/353982.terrain b/public/terrain/19/858590/353982.terrain new file mode 100644 index 000000000..5f7dba9bb Binary files /dev/null and b/public/terrain/19/858590/353982.terrain differ diff --git a/public/terrain/19/858590/353983.terrain b/public/terrain/19/858590/353983.terrain new file mode 100644 index 000000000..a6e708f16 Binary files /dev/null and b/public/terrain/19/858590/353983.terrain differ diff --git a/public/terrain/19/858590/353984.terrain b/public/terrain/19/858590/353984.terrain new file mode 100644 index 000000000..ba7232ac6 Binary files /dev/null and b/public/terrain/19/858590/353984.terrain differ diff --git a/public/terrain/19/858590/353985.terrain b/public/terrain/19/858590/353985.terrain new file mode 100644 index 000000000..950b74481 Binary files /dev/null and b/public/terrain/19/858590/353985.terrain differ diff --git a/public/terrain/19/858590/353986.terrain b/public/terrain/19/858590/353986.terrain new file mode 100644 index 000000000..2452993fa Binary files /dev/null and b/public/terrain/19/858590/353986.terrain differ diff --git a/public/terrain/19/858590/353987.terrain b/public/terrain/19/858590/353987.terrain new file mode 100644 index 000000000..0eaf0518d Binary files /dev/null and b/public/terrain/19/858590/353987.terrain differ diff --git a/public/terrain/19/858590/353988.terrain b/public/terrain/19/858590/353988.terrain new file mode 100644 index 000000000..df960d0d4 Binary files /dev/null and b/public/terrain/19/858590/353988.terrain differ diff --git a/public/terrain/19/858590/353989.terrain b/public/terrain/19/858590/353989.terrain new file mode 100644 index 000000000..16bec0f30 Binary files /dev/null and b/public/terrain/19/858590/353989.terrain differ diff --git a/public/terrain/19/858590/353990.terrain b/public/terrain/19/858590/353990.terrain new file mode 100644 index 000000000..b1d52f8c4 Binary files /dev/null and b/public/terrain/19/858590/353990.terrain differ diff --git a/public/terrain/19/858590/353991.terrain b/public/terrain/19/858590/353991.terrain new file mode 100644 index 000000000..e5577b55b Binary files /dev/null and b/public/terrain/19/858590/353991.terrain differ diff --git a/public/terrain/19/858590/353992.terrain b/public/terrain/19/858590/353992.terrain new file mode 100644 index 000000000..86a0283c1 Binary files /dev/null and b/public/terrain/19/858590/353992.terrain differ diff --git a/public/terrain/19/858590/353993.terrain b/public/terrain/19/858590/353993.terrain new file mode 100644 index 000000000..e1673a002 Binary files /dev/null and b/public/terrain/19/858590/353993.terrain differ diff --git a/public/terrain/19/858590/353994.terrain b/public/terrain/19/858590/353994.terrain new file mode 100644 index 000000000..7bc972f56 Binary files /dev/null and b/public/terrain/19/858590/353994.terrain differ diff --git a/public/terrain/19/858590/353995.terrain b/public/terrain/19/858590/353995.terrain new file mode 100644 index 000000000..8f2eca371 Binary files /dev/null and b/public/terrain/19/858590/353995.terrain differ diff --git a/public/terrain/19/858590/353996.terrain b/public/terrain/19/858590/353996.terrain new file mode 100644 index 000000000..232ea1bf3 Binary files /dev/null and b/public/terrain/19/858590/353996.terrain differ diff --git a/public/terrain/19/858590/353997.terrain b/public/terrain/19/858590/353997.terrain new file mode 100644 index 000000000..6947e64f4 Binary files /dev/null and b/public/terrain/19/858590/353997.terrain differ diff --git a/public/terrain/19/858590/353998.terrain b/public/terrain/19/858590/353998.terrain new file mode 100644 index 000000000..95d07652d Binary files /dev/null and b/public/terrain/19/858590/353998.terrain differ diff --git a/public/terrain/19/858590/353999.terrain b/public/terrain/19/858590/353999.terrain new file mode 100644 index 000000000..f6e1d550a Binary files /dev/null and b/public/terrain/19/858590/353999.terrain differ diff --git a/public/terrain/19/858590/354000.terrain b/public/terrain/19/858590/354000.terrain new file mode 100644 index 000000000..69a3bbf80 Binary files /dev/null and b/public/terrain/19/858590/354000.terrain differ diff --git a/public/terrain/19/858590/354001.terrain b/public/terrain/19/858590/354001.terrain new file mode 100644 index 000000000..6ec15730a Binary files /dev/null and b/public/terrain/19/858590/354001.terrain differ diff --git a/public/terrain/19/858590/354002.terrain b/public/terrain/19/858590/354002.terrain new file mode 100644 index 000000000..2352c2f97 Binary files /dev/null and b/public/terrain/19/858590/354002.terrain differ diff --git a/public/terrain/19/858590/354003.terrain b/public/terrain/19/858590/354003.terrain new file mode 100644 index 000000000..49433b2ac Binary files /dev/null and b/public/terrain/19/858590/354003.terrain differ diff --git a/public/terrain/19/858590/354004.terrain b/public/terrain/19/858590/354004.terrain new file mode 100644 index 000000000..64938c454 Binary files /dev/null and b/public/terrain/19/858590/354004.terrain differ diff --git a/public/terrain/19/858590/354005.terrain b/public/terrain/19/858590/354005.terrain new file mode 100644 index 000000000..da4809755 Binary files /dev/null and b/public/terrain/19/858590/354005.terrain differ diff --git a/public/terrain/19/858590/354006.terrain b/public/terrain/19/858590/354006.terrain new file mode 100644 index 000000000..d1694db64 Binary files /dev/null and b/public/terrain/19/858590/354006.terrain differ diff --git a/public/terrain/19/858590/354007.terrain b/public/terrain/19/858590/354007.terrain new file mode 100644 index 000000000..f4a1675c4 Binary files /dev/null and b/public/terrain/19/858590/354007.terrain differ diff --git a/public/terrain/19/858590/354008.terrain b/public/terrain/19/858590/354008.terrain new file mode 100644 index 000000000..8faa4e0eb Binary files /dev/null and b/public/terrain/19/858590/354008.terrain differ diff --git a/public/terrain/19/858590/354009.terrain b/public/terrain/19/858590/354009.terrain new file mode 100644 index 000000000..cf056ff2b Binary files /dev/null and b/public/terrain/19/858590/354009.terrain differ diff --git a/public/terrain/19/858590/354010.terrain b/public/terrain/19/858590/354010.terrain new file mode 100644 index 000000000..c58ce2447 Binary files /dev/null and b/public/terrain/19/858590/354010.terrain differ diff --git a/public/terrain/19/858590/354011.terrain b/public/terrain/19/858590/354011.terrain new file mode 100644 index 000000000..524190512 Binary files /dev/null and b/public/terrain/19/858590/354011.terrain differ diff --git a/public/terrain/19/858590/354012.terrain b/public/terrain/19/858590/354012.terrain new file mode 100644 index 000000000..487cf4314 Binary files /dev/null and b/public/terrain/19/858590/354012.terrain differ diff --git a/public/terrain/19/858590/354013.terrain b/public/terrain/19/858590/354013.terrain new file mode 100644 index 000000000..f8e00e701 Binary files /dev/null and b/public/terrain/19/858590/354013.terrain differ diff --git a/public/terrain/19/858590/354014.terrain b/public/terrain/19/858590/354014.terrain new file mode 100644 index 000000000..109f888d7 Binary files /dev/null and b/public/terrain/19/858590/354014.terrain differ diff --git a/public/terrain/19/858590/354015.terrain b/public/terrain/19/858590/354015.terrain new file mode 100644 index 000000000..5cef96aaf Binary files /dev/null and b/public/terrain/19/858590/354015.terrain differ diff --git a/public/terrain/19/858590/354016.terrain b/public/terrain/19/858590/354016.terrain new file mode 100644 index 000000000..82265101f Binary files /dev/null and b/public/terrain/19/858590/354016.terrain differ diff --git a/public/terrain/19/858590/354017.terrain b/public/terrain/19/858590/354017.terrain new file mode 100644 index 000000000..aefdae48d Binary files /dev/null and b/public/terrain/19/858590/354017.terrain differ diff --git a/public/terrain/19/858590/354018.terrain b/public/terrain/19/858590/354018.terrain new file mode 100644 index 000000000..bbb239e1e Binary files /dev/null and b/public/terrain/19/858590/354018.terrain differ diff --git a/public/terrain/19/858590/354019.terrain b/public/terrain/19/858590/354019.terrain new file mode 100644 index 000000000..5060f5d11 Binary files /dev/null and b/public/terrain/19/858590/354019.terrain differ diff --git a/public/terrain/19/858590/354020.terrain b/public/terrain/19/858590/354020.terrain new file mode 100644 index 000000000..5171a1a98 Binary files /dev/null and b/public/terrain/19/858590/354020.terrain differ diff --git a/public/terrain/19/858590/354021.terrain b/public/terrain/19/858590/354021.terrain new file mode 100644 index 000000000..da3455f38 Binary files /dev/null and b/public/terrain/19/858590/354021.terrain differ diff --git a/public/terrain/19/858590/354022.terrain b/public/terrain/19/858590/354022.terrain new file mode 100644 index 000000000..e0246c241 Binary files /dev/null and b/public/terrain/19/858590/354022.terrain differ diff --git a/public/terrain/19/858590/354023.terrain b/public/terrain/19/858590/354023.terrain new file mode 100644 index 000000000..ffe4fb5ca Binary files /dev/null and b/public/terrain/19/858590/354023.terrain differ diff --git a/public/terrain/19/858590/354024.terrain b/public/terrain/19/858590/354024.terrain new file mode 100644 index 000000000..92f5d6526 Binary files /dev/null and b/public/terrain/19/858590/354024.terrain differ diff --git a/public/terrain/19/858590/354025.terrain b/public/terrain/19/858590/354025.terrain new file mode 100644 index 000000000..7a237b652 Binary files /dev/null and b/public/terrain/19/858590/354025.terrain differ diff --git a/public/terrain/19/858590/354026.terrain b/public/terrain/19/858590/354026.terrain new file mode 100644 index 000000000..1b3f6553b Binary files /dev/null and b/public/terrain/19/858590/354026.terrain differ diff --git a/public/terrain/19/858590/354027.terrain b/public/terrain/19/858590/354027.terrain new file mode 100644 index 000000000..d85885a55 Binary files /dev/null and b/public/terrain/19/858590/354027.terrain differ diff --git a/public/terrain/19/858590/354028.terrain b/public/terrain/19/858590/354028.terrain new file mode 100644 index 000000000..4fee95459 Binary files /dev/null and b/public/terrain/19/858590/354028.terrain differ diff --git a/public/terrain/19/858590/354029.terrain b/public/terrain/19/858590/354029.terrain new file mode 100644 index 000000000..c34e871e4 Binary files /dev/null and b/public/terrain/19/858590/354029.terrain differ diff --git a/public/terrain/19/858590/354030.terrain b/public/terrain/19/858590/354030.terrain new file mode 100644 index 000000000..d1688b95f Binary files /dev/null and b/public/terrain/19/858590/354030.terrain differ diff --git a/public/terrain/19/858590/354031.terrain b/public/terrain/19/858590/354031.terrain new file mode 100644 index 000000000..5765784c8 Binary files /dev/null and b/public/terrain/19/858590/354031.terrain differ diff --git a/public/terrain/19/858590/354032.terrain b/public/terrain/19/858590/354032.terrain new file mode 100644 index 000000000..6f3b187e4 Binary files /dev/null and b/public/terrain/19/858590/354032.terrain differ diff --git a/public/terrain/19/858590/354033.terrain b/public/terrain/19/858590/354033.terrain new file mode 100644 index 000000000..145f01eb4 Binary files /dev/null and b/public/terrain/19/858590/354033.terrain differ diff --git a/public/terrain/19/858590/354034.terrain b/public/terrain/19/858590/354034.terrain new file mode 100644 index 000000000..72e24ffc8 Binary files /dev/null and b/public/terrain/19/858590/354034.terrain differ diff --git a/public/terrain/19/858590/354035.terrain b/public/terrain/19/858590/354035.terrain new file mode 100644 index 000000000..6f1ac10fa Binary files /dev/null and b/public/terrain/19/858590/354035.terrain differ diff --git a/public/terrain/19/858590/354036.terrain b/public/terrain/19/858590/354036.terrain new file mode 100644 index 000000000..3ad58c5f1 Binary files /dev/null and b/public/terrain/19/858590/354036.terrain differ diff --git a/public/terrain/19/858590/354037.terrain b/public/terrain/19/858590/354037.terrain new file mode 100644 index 000000000..6d437cb37 Binary files /dev/null and b/public/terrain/19/858590/354037.terrain differ diff --git a/public/terrain/19/858590/354038.terrain b/public/terrain/19/858590/354038.terrain new file mode 100644 index 000000000..3d8b299e2 Binary files /dev/null and b/public/terrain/19/858590/354038.terrain differ diff --git a/public/terrain/19/858590/354039.terrain b/public/terrain/19/858590/354039.terrain new file mode 100644 index 000000000..79b9c114a Binary files /dev/null and b/public/terrain/19/858590/354039.terrain differ diff --git a/public/terrain/19/858590/354040.terrain b/public/terrain/19/858590/354040.terrain new file mode 100644 index 000000000..18a69e342 Binary files /dev/null and b/public/terrain/19/858590/354040.terrain differ diff --git a/public/terrain/19/858590/354041.terrain b/public/terrain/19/858590/354041.terrain new file mode 100644 index 000000000..e643a8f6c Binary files /dev/null and b/public/terrain/19/858590/354041.terrain differ diff --git a/public/terrain/19/858590/354042.terrain b/public/terrain/19/858590/354042.terrain new file mode 100644 index 000000000..6af07829d Binary files /dev/null and b/public/terrain/19/858590/354042.terrain differ diff --git a/public/terrain/19/858590/354043.terrain b/public/terrain/19/858590/354043.terrain new file mode 100644 index 000000000..ea4ee7c5e Binary files /dev/null and b/public/terrain/19/858590/354043.terrain differ diff --git a/public/terrain/19/858590/354044.terrain b/public/terrain/19/858590/354044.terrain new file mode 100644 index 000000000..5e68e028d Binary files /dev/null and b/public/terrain/19/858590/354044.terrain differ diff --git a/public/terrain/19/858590/354045.terrain b/public/terrain/19/858590/354045.terrain new file mode 100644 index 000000000..b189769e4 Binary files /dev/null and b/public/terrain/19/858590/354045.terrain differ diff --git a/public/terrain/19/858590/354046.terrain b/public/terrain/19/858590/354046.terrain new file mode 100644 index 000000000..eb795dfa8 Binary files /dev/null and b/public/terrain/19/858590/354046.terrain differ diff --git a/public/terrain/19/858590/354047.terrain b/public/terrain/19/858590/354047.terrain new file mode 100644 index 000000000..420b40a2b Binary files /dev/null and b/public/terrain/19/858590/354047.terrain differ diff --git a/public/terrain/19/858590/354048.terrain b/public/terrain/19/858590/354048.terrain new file mode 100644 index 000000000..480adb4ea Binary files /dev/null and b/public/terrain/19/858590/354048.terrain differ diff --git a/public/terrain/19/858590/354049.terrain b/public/terrain/19/858590/354049.terrain new file mode 100644 index 000000000..2f20086c8 Binary files /dev/null and b/public/terrain/19/858590/354049.terrain differ diff --git a/public/terrain/19/858590/354050.terrain b/public/terrain/19/858590/354050.terrain new file mode 100644 index 000000000..b6b5956ac Binary files /dev/null and b/public/terrain/19/858590/354050.terrain differ diff --git a/public/terrain/19/858590/354051.terrain b/public/terrain/19/858590/354051.terrain new file mode 100644 index 000000000..015e32f48 Binary files /dev/null and b/public/terrain/19/858590/354051.terrain differ diff --git a/public/terrain/19/858590/354052.terrain b/public/terrain/19/858590/354052.terrain new file mode 100644 index 000000000..5615359e3 Binary files /dev/null and b/public/terrain/19/858590/354052.terrain differ diff --git a/public/terrain/19/858590/354053.terrain b/public/terrain/19/858590/354053.terrain new file mode 100644 index 000000000..9c5e886bf Binary files /dev/null and b/public/terrain/19/858590/354053.terrain differ diff --git a/public/terrain/19/858590/354054.terrain b/public/terrain/19/858590/354054.terrain new file mode 100644 index 000000000..f11334142 Binary files /dev/null and b/public/terrain/19/858590/354054.terrain differ diff --git a/public/terrain/19/858590/354055.terrain b/public/terrain/19/858590/354055.terrain new file mode 100644 index 000000000..8f44e4e54 Binary files /dev/null and b/public/terrain/19/858590/354055.terrain differ diff --git a/public/terrain/19/858590/354056.terrain b/public/terrain/19/858590/354056.terrain new file mode 100644 index 000000000..cffb76f58 Binary files /dev/null and b/public/terrain/19/858590/354056.terrain differ diff --git a/public/terrain/19/858590/354057.terrain b/public/terrain/19/858590/354057.terrain new file mode 100644 index 000000000..7edd65b48 Binary files /dev/null and b/public/terrain/19/858590/354057.terrain differ diff --git a/public/terrain/19/858590/354058.terrain b/public/terrain/19/858590/354058.terrain new file mode 100644 index 000000000..40c555609 Binary files /dev/null and b/public/terrain/19/858590/354058.terrain differ diff --git a/public/terrain/19/858590/354059.terrain b/public/terrain/19/858590/354059.terrain new file mode 100644 index 000000000..0be6d6956 Binary files /dev/null and b/public/terrain/19/858590/354059.terrain differ diff --git a/public/terrain/19/858591/353743.terrain b/public/terrain/19/858591/353743.terrain new file mode 100644 index 000000000..0cc225821 Binary files /dev/null and b/public/terrain/19/858591/353743.terrain differ diff --git a/public/terrain/19/858591/353744.terrain b/public/terrain/19/858591/353744.terrain new file mode 100644 index 000000000..d911d1014 Binary files /dev/null and b/public/terrain/19/858591/353744.terrain differ diff --git a/public/terrain/19/858591/353745.terrain b/public/terrain/19/858591/353745.terrain new file mode 100644 index 000000000..055ac7739 Binary files /dev/null and b/public/terrain/19/858591/353745.terrain differ diff --git a/public/terrain/19/858591/353746.terrain b/public/terrain/19/858591/353746.terrain new file mode 100644 index 000000000..487ab2a26 Binary files /dev/null and b/public/terrain/19/858591/353746.terrain differ diff --git a/public/terrain/19/858591/353747.terrain b/public/terrain/19/858591/353747.terrain new file mode 100644 index 000000000..2e30579af Binary files /dev/null and b/public/terrain/19/858591/353747.terrain differ diff --git a/public/terrain/19/858591/353748.terrain b/public/terrain/19/858591/353748.terrain new file mode 100644 index 000000000..5c2673424 Binary files /dev/null and b/public/terrain/19/858591/353748.terrain differ diff --git a/public/terrain/19/858591/353749.terrain b/public/terrain/19/858591/353749.terrain new file mode 100644 index 000000000..2ada3ce6d Binary files /dev/null and b/public/terrain/19/858591/353749.terrain differ diff --git a/public/terrain/19/858591/353750.terrain b/public/terrain/19/858591/353750.terrain new file mode 100644 index 000000000..e91455f93 Binary files /dev/null and b/public/terrain/19/858591/353750.terrain differ diff --git a/public/terrain/19/858591/353751.terrain b/public/terrain/19/858591/353751.terrain new file mode 100644 index 000000000..98820da15 Binary files /dev/null and b/public/terrain/19/858591/353751.terrain differ diff --git a/public/terrain/19/858591/353752.terrain b/public/terrain/19/858591/353752.terrain new file mode 100644 index 000000000..bebfa5963 Binary files /dev/null and b/public/terrain/19/858591/353752.terrain differ diff --git a/public/terrain/19/858591/353753.terrain b/public/terrain/19/858591/353753.terrain new file mode 100644 index 000000000..cb870c7da Binary files /dev/null and b/public/terrain/19/858591/353753.terrain differ diff --git a/public/terrain/19/858591/353754.terrain b/public/terrain/19/858591/353754.terrain new file mode 100644 index 000000000..244d90c27 Binary files /dev/null and b/public/terrain/19/858591/353754.terrain differ diff --git a/public/terrain/19/858591/353755.terrain b/public/terrain/19/858591/353755.terrain new file mode 100644 index 000000000..4f7a49147 Binary files /dev/null and b/public/terrain/19/858591/353755.terrain differ diff --git a/public/terrain/19/858591/353756.terrain b/public/terrain/19/858591/353756.terrain new file mode 100644 index 000000000..f40cdef38 Binary files /dev/null and b/public/terrain/19/858591/353756.terrain differ diff --git a/public/terrain/19/858591/353757.terrain b/public/terrain/19/858591/353757.terrain new file mode 100644 index 000000000..a86d7f69d Binary files /dev/null and b/public/terrain/19/858591/353757.terrain differ diff --git a/public/terrain/19/858591/353758.terrain b/public/terrain/19/858591/353758.terrain new file mode 100644 index 000000000..e12009c0c Binary files /dev/null and b/public/terrain/19/858591/353758.terrain differ diff --git a/public/terrain/19/858591/353759.terrain b/public/terrain/19/858591/353759.terrain new file mode 100644 index 000000000..2ae8bb83c Binary files /dev/null and b/public/terrain/19/858591/353759.terrain differ diff --git a/public/terrain/19/858591/353760.terrain b/public/terrain/19/858591/353760.terrain new file mode 100644 index 000000000..b44c6d871 Binary files /dev/null and b/public/terrain/19/858591/353760.terrain differ diff --git a/public/terrain/19/858591/353761.terrain b/public/terrain/19/858591/353761.terrain new file mode 100644 index 000000000..6c3cb7620 Binary files /dev/null and b/public/terrain/19/858591/353761.terrain differ diff --git a/public/terrain/19/858591/353762.terrain b/public/terrain/19/858591/353762.terrain new file mode 100644 index 000000000..ef66d7f6e Binary files /dev/null and b/public/terrain/19/858591/353762.terrain differ diff --git a/public/terrain/19/858591/353763.terrain b/public/terrain/19/858591/353763.terrain new file mode 100644 index 000000000..be5561b0b Binary files /dev/null and b/public/terrain/19/858591/353763.terrain differ diff --git a/public/terrain/19/858591/353764.terrain b/public/terrain/19/858591/353764.terrain new file mode 100644 index 000000000..0af752a49 Binary files /dev/null and b/public/terrain/19/858591/353764.terrain differ diff --git a/public/terrain/19/858591/353765.terrain b/public/terrain/19/858591/353765.terrain new file mode 100644 index 000000000..18f8165c8 Binary files /dev/null and b/public/terrain/19/858591/353765.terrain differ diff --git a/public/terrain/19/858591/353766.terrain b/public/terrain/19/858591/353766.terrain new file mode 100644 index 000000000..2530b2cd6 Binary files /dev/null and b/public/terrain/19/858591/353766.terrain differ diff --git a/public/terrain/19/858591/353767.terrain b/public/terrain/19/858591/353767.terrain new file mode 100644 index 000000000..69d755860 Binary files /dev/null and b/public/terrain/19/858591/353767.terrain differ diff --git a/public/terrain/19/858591/353768.terrain b/public/terrain/19/858591/353768.terrain new file mode 100644 index 000000000..6029ddc01 Binary files /dev/null and b/public/terrain/19/858591/353768.terrain differ diff --git a/public/terrain/19/858591/353769.terrain b/public/terrain/19/858591/353769.terrain new file mode 100644 index 000000000..56b5efcb8 Binary files /dev/null and b/public/terrain/19/858591/353769.terrain differ diff --git a/public/terrain/19/858591/353770.terrain b/public/terrain/19/858591/353770.terrain new file mode 100644 index 000000000..c91224efa Binary files /dev/null and b/public/terrain/19/858591/353770.terrain differ diff --git a/public/terrain/19/858591/353771.terrain b/public/terrain/19/858591/353771.terrain new file mode 100644 index 000000000..d7498d9db Binary files /dev/null and b/public/terrain/19/858591/353771.terrain differ diff --git a/public/terrain/19/858591/353772.terrain b/public/terrain/19/858591/353772.terrain new file mode 100644 index 000000000..0e636e166 Binary files /dev/null and b/public/terrain/19/858591/353772.terrain differ diff --git a/public/terrain/19/858591/353773.terrain b/public/terrain/19/858591/353773.terrain new file mode 100644 index 000000000..0867065e7 Binary files /dev/null and b/public/terrain/19/858591/353773.terrain differ diff --git a/public/terrain/19/858591/353774.terrain b/public/terrain/19/858591/353774.terrain new file mode 100644 index 000000000..c062ffee4 Binary files /dev/null and b/public/terrain/19/858591/353774.terrain differ diff --git a/public/terrain/19/858591/353775.terrain b/public/terrain/19/858591/353775.terrain new file mode 100644 index 000000000..23a948ade Binary files /dev/null and b/public/terrain/19/858591/353775.terrain differ diff --git a/public/terrain/19/858591/353776.terrain b/public/terrain/19/858591/353776.terrain new file mode 100644 index 000000000..9951350ab Binary files /dev/null and b/public/terrain/19/858591/353776.terrain differ diff --git a/public/terrain/19/858591/353777.terrain b/public/terrain/19/858591/353777.terrain new file mode 100644 index 000000000..2d7514557 Binary files /dev/null and b/public/terrain/19/858591/353777.terrain differ diff --git a/public/terrain/19/858591/353778.terrain b/public/terrain/19/858591/353778.terrain new file mode 100644 index 000000000..d84efc29e Binary files /dev/null and b/public/terrain/19/858591/353778.terrain differ diff --git a/public/terrain/19/858591/353779.terrain b/public/terrain/19/858591/353779.terrain new file mode 100644 index 000000000..74237a85f Binary files /dev/null and b/public/terrain/19/858591/353779.terrain differ diff --git a/public/terrain/19/858591/353780.terrain b/public/terrain/19/858591/353780.terrain new file mode 100644 index 000000000..a3ceddc5e Binary files /dev/null and b/public/terrain/19/858591/353780.terrain differ diff --git a/public/terrain/19/858591/353781.terrain b/public/terrain/19/858591/353781.terrain new file mode 100644 index 000000000..705ed14d2 Binary files /dev/null and b/public/terrain/19/858591/353781.terrain differ diff --git a/public/terrain/19/858591/353782.terrain b/public/terrain/19/858591/353782.terrain new file mode 100644 index 000000000..ef8344304 Binary files /dev/null and b/public/terrain/19/858591/353782.terrain differ diff --git a/public/terrain/19/858591/353783.terrain b/public/terrain/19/858591/353783.terrain new file mode 100644 index 000000000..9f9148d39 Binary files /dev/null and b/public/terrain/19/858591/353783.terrain differ diff --git a/public/terrain/19/858591/353784.terrain b/public/terrain/19/858591/353784.terrain new file mode 100644 index 000000000..df84a560d Binary files /dev/null and b/public/terrain/19/858591/353784.terrain differ diff --git a/public/terrain/19/858591/353785.terrain b/public/terrain/19/858591/353785.terrain new file mode 100644 index 000000000..75eb3d2e5 Binary files /dev/null and b/public/terrain/19/858591/353785.terrain differ diff --git a/public/terrain/19/858591/353786.terrain b/public/terrain/19/858591/353786.terrain new file mode 100644 index 000000000..2d9f250af Binary files /dev/null and b/public/terrain/19/858591/353786.terrain differ diff --git a/public/terrain/19/858591/353787.terrain b/public/terrain/19/858591/353787.terrain new file mode 100644 index 000000000..10f8602b9 Binary files /dev/null and b/public/terrain/19/858591/353787.terrain differ diff --git a/public/terrain/19/858591/353788.terrain b/public/terrain/19/858591/353788.terrain new file mode 100644 index 000000000..346dc5d40 Binary files /dev/null and b/public/terrain/19/858591/353788.terrain differ diff --git a/public/terrain/19/858591/353789.terrain b/public/terrain/19/858591/353789.terrain new file mode 100644 index 000000000..7d346d2f2 Binary files /dev/null and b/public/terrain/19/858591/353789.terrain differ diff --git a/public/terrain/19/858591/353790.terrain b/public/terrain/19/858591/353790.terrain new file mode 100644 index 000000000..2ef13cae2 Binary files /dev/null and b/public/terrain/19/858591/353790.terrain differ diff --git a/public/terrain/19/858591/353791.terrain b/public/terrain/19/858591/353791.terrain new file mode 100644 index 000000000..ce4f06dc9 Binary files /dev/null and b/public/terrain/19/858591/353791.terrain differ diff --git a/public/terrain/19/858591/353792.terrain b/public/terrain/19/858591/353792.terrain new file mode 100644 index 000000000..638ca9949 Binary files /dev/null and b/public/terrain/19/858591/353792.terrain differ diff --git a/public/terrain/19/858591/353793.terrain b/public/terrain/19/858591/353793.terrain new file mode 100644 index 000000000..684ab49cf Binary files /dev/null and b/public/terrain/19/858591/353793.terrain differ diff --git a/public/terrain/19/858591/353794.terrain b/public/terrain/19/858591/353794.terrain new file mode 100644 index 000000000..532d89d7a Binary files /dev/null and b/public/terrain/19/858591/353794.terrain differ diff --git a/public/terrain/19/858591/353795.terrain b/public/terrain/19/858591/353795.terrain new file mode 100644 index 000000000..9e26a2048 Binary files /dev/null and b/public/terrain/19/858591/353795.terrain differ diff --git a/public/terrain/19/858591/353796.terrain b/public/terrain/19/858591/353796.terrain new file mode 100644 index 000000000..bc828f39d Binary files /dev/null and b/public/terrain/19/858591/353796.terrain differ diff --git a/public/terrain/19/858591/353797.terrain b/public/terrain/19/858591/353797.terrain new file mode 100644 index 000000000..3b828fa17 Binary files /dev/null and b/public/terrain/19/858591/353797.terrain differ diff --git a/public/terrain/19/858591/353798.terrain b/public/terrain/19/858591/353798.terrain new file mode 100644 index 000000000..f4d7d9464 Binary files /dev/null and b/public/terrain/19/858591/353798.terrain differ diff --git a/public/terrain/19/858591/353799.terrain b/public/terrain/19/858591/353799.terrain new file mode 100644 index 000000000..ede0b2029 Binary files /dev/null and b/public/terrain/19/858591/353799.terrain differ diff --git a/public/terrain/19/858591/353800.terrain b/public/terrain/19/858591/353800.terrain new file mode 100644 index 000000000..268aab539 Binary files /dev/null and b/public/terrain/19/858591/353800.terrain differ diff --git a/public/terrain/19/858591/353801.terrain b/public/terrain/19/858591/353801.terrain new file mode 100644 index 000000000..107cb6612 Binary files /dev/null and b/public/terrain/19/858591/353801.terrain differ diff --git a/public/terrain/19/858591/353802.terrain b/public/terrain/19/858591/353802.terrain new file mode 100644 index 000000000..8b6652d36 Binary files /dev/null and b/public/terrain/19/858591/353802.terrain differ diff --git a/public/terrain/19/858591/353803.terrain b/public/terrain/19/858591/353803.terrain new file mode 100644 index 000000000..a83ed87b7 Binary files /dev/null and b/public/terrain/19/858591/353803.terrain differ diff --git a/public/terrain/19/858591/353804.terrain b/public/terrain/19/858591/353804.terrain new file mode 100644 index 000000000..93886e164 Binary files /dev/null and b/public/terrain/19/858591/353804.terrain differ diff --git a/public/terrain/19/858591/353805.terrain b/public/terrain/19/858591/353805.terrain new file mode 100644 index 000000000..753d5188e Binary files /dev/null and b/public/terrain/19/858591/353805.terrain differ diff --git a/public/terrain/19/858591/353806.terrain b/public/terrain/19/858591/353806.terrain new file mode 100644 index 000000000..54bee2955 Binary files /dev/null and b/public/terrain/19/858591/353806.terrain differ diff --git a/public/terrain/19/858591/353807.terrain b/public/terrain/19/858591/353807.terrain new file mode 100644 index 000000000..a2bb23a0d Binary files /dev/null and b/public/terrain/19/858591/353807.terrain differ diff --git a/public/terrain/19/858591/353808.terrain b/public/terrain/19/858591/353808.terrain new file mode 100644 index 000000000..cf422c901 Binary files /dev/null and b/public/terrain/19/858591/353808.terrain differ diff --git a/public/terrain/19/858591/353809.terrain b/public/terrain/19/858591/353809.terrain new file mode 100644 index 000000000..1051a88f9 Binary files /dev/null and b/public/terrain/19/858591/353809.terrain differ diff --git a/public/terrain/19/858591/353810.terrain b/public/terrain/19/858591/353810.terrain new file mode 100644 index 000000000..1d34e16bc Binary files /dev/null and b/public/terrain/19/858591/353810.terrain differ diff --git a/public/terrain/19/858591/353811.terrain b/public/terrain/19/858591/353811.terrain new file mode 100644 index 000000000..626deea59 Binary files /dev/null and b/public/terrain/19/858591/353811.terrain differ diff --git a/public/terrain/19/858591/353812.terrain b/public/terrain/19/858591/353812.terrain new file mode 100644 index 000000000..f2e237b12 Binary files /dev/null and b/public/terrain/19/858591/353812.terrain differ diff --git a/public/terrain/19/858591/353813.terrain b/public/terrain/19/858591/353813.terrain new file mode 100644 index 000000000..9f9750928 Binary files /dev/null and b/public/terrain/19/858591/353813.terrain differ diff --git a/public/terrain/19/858591/353814.terrain b/public/terrain/19/858591/353814.terrain new file mode 100644 index 000000000..9cb625d6a Binary files /dev/null and b/public/terrain/19/858591/353814.terrain differ diff --git a/public/terrain/19/858591/353815.terrain b/public/terrain/19/858591/353815.terrain new file mode 100644 index 000000000..b8ea8cc27 Binary files /dev/null and b/public/terrain/19/858591/353815.terrain differ diff --git a/public/terrain/19/858591/353816.terrain b/public/terrain/19/858591/353816.terrain new file mode 100644 index 000000000..4ff4f0775 Binary files /dev/null and b/public/terrain/19/858591/353816.terrain differ diff --git a/public/terrain/19/858591/353817.terrain b/public/terrain/19/858591/353817.terrain new file mode 100644 index 000000000..9c64419b9 Binary files /dev/null and b/public/terrain/19/858591/353817.terrain differ diff --git a/public/terrain/19/858591/353818.terrain b/public/terrain/19/858591/353818.terrain new file mode 100644 index 000000000..7989cd0d2 Binary files /dev/null and b/public/terrain/19/858591/353818.terrain differ diff --git a/public/terrain/19/858591/353819.terrain b/public/terrain/19/858591/353819.terrain new file mode 100644 index 000000000..65b522978 Binary files /dev/null and b/public/terrain/19/858591/353819.terrain differ diff --git a/public/terrain/19/858591/353820.terrain b/public/terrain/19/858591/353820.terrain new file mode 100644 index 000000000..7a488eadb Binary files /dev/null and b/public/terrain/19/858591/353820.terrain differ diff --git a/public/terrain/19/858591/353821.terrain b/public/terrain/19/858591/353821.terrain new file mode 100644 index 000000000..97adcd569 Binary files /dev/null and b/public/terrain/19/858591/353821.terrain differ diff --git a/public/terrain/19/858591/353822.terrain b/public/terrain/19/858591/353822.terrain new file mode 100644 index 000000000..8954e4e4d Binary files /dev/null and b/public/terrain/19/858591/353822.terrain differ diff --git a/public/terrain/19/858591/353823.terrain b/public/terrain/19/858591/353823.terrain new file mode 100644 index 000000000..d34f8e04c Binary files /dev/null and b/public/terrain/19/858591/353823.terrain differ diff --git a/public/terrain/19/858591/353824.terrain b/public/terrain/19/858591/353824.terrain new file mode 100644 index 000000000..870436c09 Binary files /dev/null and b/public/terrain/19/858591/353824.terrain differ diff --git a/public/terrain/19/858591/353825.terrain b/public/terrain/19/858591/353825.terrain new file mode 100644 index 000000000..2bd34fef3 Binary files /dev/null and b/public/terrain/19/858591/353825.terrain differ diff --git a/public/terrain/19/858591/353826.terrain b/public/terrain/19/858591/353826.terrain new file mode 100644 index 000000000..1507362c9 Binary files /dev/null and b/public/terrain/19/858591/353826.terrain differ diff --git a/public/terrain/19/858591/353827.terrain b/public/terrain/19/858591/353827.terrain new file mode 100644 index 000000000..93fe11e73 Binary files /dev/null and b/public/terrain/19/858591/353827.terrain differ diff --git a/public/terrain/19/858591/353828.terrain b/public/terrain/19/858591/353828.terrain new file mode 100644 index 000000000..24b28718a Binary files /dev/null and b/public/terrain/19/858591/353828.terrain differ diff --git a/public/terrain/19/858591/353829.terrain b/public/terrain/19/858591/353829.terrain new file mode 100644 index 000000000..43e4f4dc8 Binary files /dev/null and b/public/terrain/19/858591/353829.terrain differ diff --git a/public/terrain/19/858591/353830.terrain b/public/terrain/19/858591/353830.terrain new file mode 100644 index 000000000..07ea6055d Binary files /dev/null and b/public/terrain/19/858591/353830.terrain differ diff --git a/public/terrain/19/858591/353831.terrain b/public/terrain/19/858591/353831.terrain new file mode 100644 index 000000000..ff61a9d68 Binary files /dev/null and b/public/terrain/19/858591/353831.terrain differ diff --git a/public/terrain/19/858591/353832.terrain b/public/terrain/19/858591/353832.terrain new file mode 100644 index 000000000..a28e0a159 Binary files /dev/null and b/public/terrain/19/858591/353832.terrain differ diff --git a/public/terrain/19/858591/353833.terrain b/public/terrain/19/858591/353833.terrain new file mode 100644 index 000000000..d22578b00 Binary files /dev/null and b/public/terrain/19/858591/353833.terrain differ diff --git a/public/terrain/19/858591/353834.terrain b/public/terrain/19/858591/353834.terrain new file mode 100644 index 000000000..3604c5697 Binary files /dev/null and b/public/terrain/19/858591/353834.terrain differ diff --git a/public/terrain/19/858591/353835.terrain b/public/terrain/19/858591/353835.terrain new file mode 100644 index 000000000..e05327e8c Binary files /dev/null and b/public/terrain/19/858591/353835.terrain differ diff --git a/public/terrain/19/858591/353836.terrain b/public/terrain/19/858591/353836.terrain new file mode 100644 index 000000000..23208b76d Binary files /dev/null and b/public/terrain/19/858591/353836.terrain differ diff --git a/public/terrain/19/858591/353837.terrain b/public/terrain/19/858591/353837.terrain new file mode 100644 index 000000000..af2807872 Binary files /dev/null and b/public/terrain/19/858591/353837.terrain differ diff --git a/public/terrain/19/858591/353838.terrain b/public/terrain/19/858591/353838.terrain new file mode 100644 index 000000000..e55efa006 Binary files /dev/null and b/public/terrain/19/858591/353838.terrain differ diff --git a/public/terrain/19/858591/353839.terrain b/public/terrain/19/858591/353839.terrain new file mode 100644 index 000000000..a10ba56c6 Binary files /dev/null and b/public/terrain/19/858591/353839.terrain differ diff --git a/public/terrain/19/858591/353840.terrain b/public/terrain/19/858591/353840.terrain new file mode 100644 index 000000000..2774be66d Binary files /dev/null and b/public/terrain/19/858591/353840.terrain differ diff --git a/public/terrain/19/858591/353841.terrain b/public/terrain/19/858591/353841.terrain new file mode 100644 index 000000000..ab051952f Binary files /dev/null and b/public/terrain/19/858591/353841.terrain differ diff --git a/public/terrain/19/858591/353842.terrain b/public/terrain/19/858591/353842.terrain new file mode 100644 index 000000000..9d0da5568 Binary files /dev/null and b/public/terrain/19/858591/353842.terrain differ diff --git a/public/terrain/19/858591/353843.terrain b/public/terrain/19/858591/353843.terrain new file mode 100644 index 000000000..948c89e8e Binary files /dev/null and b/public/terrain/19/858591/353843.terrain differ diff --git a/public/terrain/19/858591/353844.terrain b/public/terrain/19/858591/353844.terrain new file mode 100644 index 000000000..b676a470d Binary files /dev/null and b/public/terrain/19/858591/353844.terrain differ diff --git a/public/terrain/19/858591/353845.terrain b/public/terrain/19/858591/353845.terrain new file mode 100644 index 000000000..3c44fea20 Binary files /dev/null and b/public/terrain/19/858591/353845.terrain differ diff --git a/public/terrain/19/858591/353846.terrain b/public/terrain/19/858591/353846.terrain new file mode 100644 index 000000000..7e0e711e2 Binary files /dev/null and b/public/terrain/19/858591/353846.terrain differ diff --git a/public/terrain/19/858591/353847.terrain b/public/terrain/19/858591/353847.terrain new file mode 100644 index 000000000..ee2fe1d9e Binary files /dev/null and b/public/terrain/19/858591/353847.terrain differ diff --git a/public/terrain/19/858591/353848.terrain b/public/terrain/19/858591/353848.terrain new file mode 100644 index 000000000..f91b07739 Binary files /dev/null and b/public/terrain/19/858591/353848.terrain differ diff --git a/public/terrain/19/858591/353849.terrain b/public/terrain/19/858591/353849.terrain new file mode 100644 index 000000000..ce29fc9a5 Binary files /dev/null and b/public/terrain/19/858591/353849.terrain differ diff --git a/public/terrain/19/858591/353850.terrain b/public/terrain/19/858591/353850.terrain new file mode 100644 index 000000000..67b1398e9 Binary files /dev/null and b/public/terrain/19/858591/353850.terrain differ diff --git a/public/terrain/19/858591/353851.terrain b/public/terrain/19/858591/353851.terrain new file mode 100644 index 000000000..fa7efd367 Binary files /dev/null and b/public/terrain/19/858591/353851.terrain differ diff --git a/public/terrain/19/858591/353852.terrain b/public/terrain/19/858591/353852.terrain new file mode 100644 index 000000000..4ae514a98 Binary files /dev/null and b/public/terrain/19/858591/353852.terrain differ diff --git a/public/terrain/19/858591/353853.terrain b/public/terrain/19/858591/353853.terrain new file mode 100644 index 000000000..66f7baaaf Binary files /dev/null and b/public/terrain/19/858591/353853.terrain differ diff --git a/public/terrain/19/858591/353854.terrain b/public/terrain/19/858591/353854.terrain new file mode 100644 index 000000000..383861f89 Binary files /dev/null and b/public/terrain/19/858591/353854.terrain differ diff --git a/public/terrain/19/858591/353855.terrain b/public/terrain/19/858591/353855.terrain new file mode 100644 index 000000000..a9ec94a6b Binary files /dev/null and b/public/terrain/19/858591/353855.terrain differ diff --git a/public/terrain/19/858591/353856.terrain b/public/terrain/19/858591/353856.terrain new file mode 100644 index 000000000..8a2b8fda1 Binary files /dev/null and b/public/terrain/19/858591/353856.terrain differ diff --git a/public/terrain/19/858591/353857.terrain b/public/terrain/19/858591/353857.terrain new file mode 100644 index 000000000..2e9b9d603 Binary files /dev/null and b/public/terrain/19/858591/353857.terrain differ diff --git a/public/terrain/19/858591/353858.terrain b/public/terrain/19/858591/353858.terrain new file mode 100644 index 000000000..352d7a471 Binary files /dev/null and b/public/terrain/19/858591/353858.terrain differ diff --git a/public/terrain/19/858591/353859.terrain b/public/terrain/19/858591/353859.terrain new file mode 100644 index 000000000..a5a5b8aaa Binary files /dev/null and b/public/terrain/19/858591/353859.terrain differ diff --git a/public/terrain/19/858591/353860.terrain b/public/terrain/19/858591/353860.terrain new file mode 100644 index 000000000..ae9f3da2f Binary files /dev/null and b/public/terrain/19/858591/353860.terrain differ diff --git a/public/terrain/19/858591/353861.terrain b/public/terrain/19/858591/353861.terrain new file mode 100644 index 000000000..8287b0825 Binary files /dev/null and b/public/terrain/19/858591/353861.terrain differ diff --git a/public/terrain/19/858591/353862.terrain b/public/terrain/19/858591/353862.terrain new file mode 100644 index 000000000..d8c502c57 Binary files /dev/null and b/public/terrain/19/858591/353862.terrain differ diff --git a/public/terrain/19/858591/353863.terrain b/public/terrain/19/858591/353863.terrain new file mode 100644 index 000000000..7190222ec Binary files /dev/null and b/public/terrain/19/858591/353863.terrain differ diff --git a/public/terrain/19/858591/353864.terrain b/public/terrain/19/858591/353864.terrain new file mode 100644 index 000000000..7733ea84d Binary files /dev/null and b/public/terrain/19/858591/353864.terrain differ diff --git a/public/terrain/19/858591/353865.terrain b/public/terrain/19/858591/353865.terrain new file mode 100644 index 000000000..ec1078394 Binary files /dev/null and b/public/terrain/19/858591/353865.terrain differ diff --git a/public/terrain/19/858591/353866.terrain b/public/terrain/19/858591/353866.terrain new file mode 100644 index 000000000..04ff2a354 Binary files /dev/null and b/public/terrain/19/858591/353866.terrain differ diff --git a/public/terrain/19/858591/353867.terrain b/public/terrain/19/858591/353867.terrain new file mode 100644 index 000000000..f9fbeb6b2 Binary files /dev/null and b/public/terrain/19/858591/353867.terrain differ diff --git a/public/terrain/19/858591/353868.terrain b/public/terrain/19/858591/353868.terrain new file mode 100644 index 000000000..285f09aa0 Binary files /dev/null and b/public/terrain/19/858591/353868.terrain differ diff --git a/public/terrain/19/858591/353869.terrain b/public/terrain/19/858591/353869.terrain new file mode 100644 index 000000000..840a6c84f Binary files /dev/null and b/public/terrain/19/858591/353869.terrain differ diff --git a/public/terrain/19/858591/353870.terrain b/public/terrain/19/858591/353870.terrain new file mode 100644 index 000000000..ad3a8d564 Binary files /dev/null and b/public/terrain/19/858591/353870.terrain differ diff --git a/public/terrain/19/858591/353871.terrain b/public/terrain/19/858591/353871.terrain new file mode 100644 index 000000000..8c3d26af0 Binary files /dev/null and b/public/terrain/19/858591/353871.terrain differ diff --git a/public/terrain/19/858591/353872.terrain b/public/terrain/19/858591/353872.terrain new file mode 100644 index 000000000..fe6603cfb Binary files /dev/null and b/public/terrain/19/858591/353872.terrain differ diff --git a/public/terrain/19/858591/353873.terrain b/public/terrain/19/858591/353873.terrain new file mode 100644 index 000000000..58442d4f6 Binary files /dev/null and b/public/terrain/19/858591/353873.terrain differ diff --git a/public/terrain/19/858591/353874.terrain b/public/terrain/19/858591/353874.terrain new file mode 100644 index 000000000..33c6e3375 Binary files /dev/null and b/public/terrain/19/858591/353874.terrain differ diff --git a/public/terrain/19/858591/353875.terrain b/public/terrain/19/858591/353875.terrain new file mode 100644 index 000000000..803342110 Binary files /dev/null and b/public/terrain/19/858591/353875.terrain differ diff --git a/public/terrain/19/858591/353876.terrain b/public/terrain/19/858591/353876.terrain new file mode 100644 index 000000000..3d3098d3d Binary files /dev/null and b/public/terrain/19/858591/353876.terrain differ diff --git a/public/terrain/19/858591/353877.terrain b/public/terrain/19/858591/353877.terrain new file mode 100644 index 000000000..c5d10e1dc Binary files /dev/null and b/public/terrain/19/858591/353877.terrain differ diff --git a/public/terrain/19/858591/353878.terrain b/public/terrain/19/858591/353878.terrain new file mode 100644 index 000000000..97dc43413 Binary files /dev/null and b/public/terrain/19/858591/353878.terrain differ diff --git a/public/terrain/19/858591/353879.terrain b/public/terrain/19/858591/353879.terrain new file mode 100644 index 000000000..7f3d6c873 Binary files /dev/null and b/public/terrain/19/858591/353879.terrain differ diff --git a/public/terrain/19/858591/353880.terrain b/public/terrain/19/858591/353880.terrain new file mode 100644 index 000000000..03fbfa344 Binary files /dev/null and b/public/terrain/19/858591/353880.terrain differ diff --git a/public/terrain/19/858591/353881.terrain b/public/terrain/19/858591/353881.terrain new file mode 100644 index 000000000..f091b9a41 Binary files /dev/null and b/public/terrain/19/858591/353881.terrain differ diff --git a/public/terrain/19/858591/353882.terrain b/public/terrain/19/858591/353882.terrain new file mode 100644 index 000000000..c9a177ff3 Binary files /dev/null and b/public/terrain/19/858591/353882.terrain differ diff --git a/public/terrain/19/858591/353883.terrain b/public/terrain/19/858591/353883.terrain new file mode 100644 index 000000000..fd2605e44 Binary files /dev/null and b/public/terrain/19/858591/353883.terrain differ diff --git a/public/terrain/19/858591/353884.terrain b/public/terrain/19/858591/353884.terrain new file mode 100644 index 000000000..b7301b2bf Binary files /dev/null and b/public/terrain/19/858591/353884.terrain differ diff --git a/public/terrain/19/858591/353885.terrain b/public/terrain/19/858591/353885.terrain new file mode 100644 index 000000000..03dfabd94 Binary files /dev/null and b/public/terrain/19/858591/353885.terrain differ diff --git a/public/terrain/19/858591/353886.terrain b/public/terrain/19/858591/353886.terrain new file mode 100644 index 000000000..6994f0190 Binary files /dev/null and b/public/terrain/19/858591/353886.terrain differ diff --git a/public/terrain/19/858591/353887.terrain b/public/terrain/19/858591/353887.terrain new file mode 100644 index 000000000..bff90b1c7 Binary files /dev/null and b/public/terrain/19/858591/353887.terrain differ diff --git a/public/terrain/19/858591/353888.terrain b/public/terrain/19/858591/353888.terrain new file mode 100644 index 000000000..c0c132be5 Binary files /dev/null and b/public/terrain/19/858591/353888.terrain differ diff --git a/public/terrain/19/858591/353889.terrain b/public/terrain/19/858591/353889.terrain new file mode 100644 index 000000000..e8da4f51e Binary files /dev/null and b/public/terrain/19/858591/353889.terrain differ diff --git a/public/terrain/19/858591/353890.terrain b/public/terrain/19/858591/353890.terrain new file mode 100644 index 000000000..68e5c379c Binary files /dev/null and b/public/terrain/19/858591/353890.terrain differ diff --git a/public/terrain/19/858591/353891.terrain b/public/terrain/19/858591/353891.terrain new file mode 100644 index 000000000..b7d4d0e15 Binary files /dev/null and b/public/terrain/19/858591/353891.terrain differ diff --git a/public/terrain/19/858591/353892.terrain b/public/terrain/19/858591/353892.terrain new file mode 100644 index 000000000..1e580cd09 Binary files /dev/null and b/public/terrain/19/858591/353892.terrain differ diff --git a/public/terrain/19/858591/353893.terrain b/public/terrain/19/858591/353893.terrain new file mode 100644 index 000000000..122a7d473 Binary files /dev/null and b/public/terrain/19/858591/353893.terrain differ diff --git a/public/terrain/19/858591/353894.terrain b/public/terrain/19/858591/353894.terrain new file mode 100644 index 000000000..0636e78e7 Binary files /dev/null and b/public/terrain/19/858591/353894.terrain differ diff --git a/public/terrain/19/858591/353895.terrain b/public/terrain/19/858591/353895.terrain new file mode 100644 index 000000000..1e1e2ac25 Binary files /dev/null and b/public/terrain/19/858591/353895.terrain differ diff --git a/public/terrain/19/858591/353896.terrain b/public/terrain/19/858591/353896.terrain new file mode 100644 index 000000000..ece80fd4a Binary files /dev/null and b/public/terrain/19/858591/353896.terrain differ diff --git a/public/terrain/19/858591/353897.terrain b/public/terrain/19/858591/353897.terrain new file mode 100644 index 000000000..873ee6bb4 Binary files /dev/null and b/public/terrain/19/858591/353897.terrain differ diff --git a/public/terrain/19/858591/353898.terrain b/public/terrain/19/858591/353898.terrain new file mode 100644 index 000000000..d03db620c Binary files /dev/null and b/public/terrain/19/858591/353898.terrain differ diff --git a/public/terrain/19/858591/353899.terrain b/public/terrain/19/858591/353899.terrain new file mode 100644 index 000000000..efcb37f3b Binary files /dev/null and b/public/terrain/19/858591/353899.terrain differ diff --git a/public/terrain/19/858591/353900.terrain b/public/terrain/19/858591/353900.terrain new file mode 100644 index 000000000..5a8c6bc79 Binary files /dev/null and b/public/terrain/19/858591/353900.terrain differ diff --git a/public/terrain/19/858591/353901.terrain b/public/terrain/19/858591/353901.terrain new file mode 100644 index 000000000..cb5383b3d Binary files /dev/null and b/public/terrain/19/858591/353901.terrain differ diff --git a/public/terrain/19/858591/353902.terrain b/public/terrain/19/858591/353902.terrain new file mode 100644 index 000000000..5bc6c14cf Binary files /dev/null and b/public/terrain/19/858591/353902.terrain differ diff --git a/public/terrain/19/858591/353903.terrain b/public/terrain/19/858591/353903.terrain new file mode 100644 index 000000000..f39f20f0a Binary files /dev/null and b/public/terrain/19/858591/353903.terrain differ diff --git a/public/terrain/19/858591/353904.terrain b/public/terrain/19/858591/353904.terrain new file mode 100644 index 000000000..167042a63 Binary files /dev/null and b/public/terrain/19/858591/353904.terrain differ diff --git a/public/terrain/19/858591/353905.terrain b/public/terrain/19/858591/353905.terrain new file mode 100644 index 000000000..f78986802 Binary files /dev/null and b/public/terrain/19/858591/353905.terrain differ diff --git a/public/terrain/19/858591/353906.terrain b/public/terrain/19/858591/353906.terrain new file mode 100644 index 000000000..a9ecc6a17 Binary files /dev/null and b/public/terrain/19/858591/353906.terrain differ diff --git a/public/terrain/19/858591/353907.terrain b/public/terrain/19/858591/353907.terrain new file mode 100644 index 000000000..6ff8aa2e9 Binary files /dev/null and b/public/terrain/19/858591/353907.terrain differ diff --git a/public/terrain/19/858591/353908.terrain b/public/terrain/19/858591/353908.terrain new file mode 100644 index 000000000..3a1b68e88 Binary files /dev/null and b/public/terrain/19/858591/353908.terrain differ diff --git a/public/terrain/19/858591/353909.terrain b/public/terrain/19/858591/353909.terrain new file mode 100644 index 000000000..ed8f58a07 Binary files /dev/null and b/public/terrain/19/858591/353909.terrain differ diff --git a/public/terrain/19/858591/353910.terrain b/public/terrain/19/858591/353910.terrain new file mode 100644 index 000000000..e8ca40043 Binary files /dev/null and b/public/terrain/19/858591/353910.terrain differ diff --git a/public/terrain/19/858591/353911.terrain b/public/terrain/19/858591/353911.terrain new file mode 100644 index 000000000..3984fc26d Binary files /dev/null and b/public/terrain/19/858591/353911.terrain differ diff --git a/public/terrain/19/858591/353912.terrain b/public/terrain/19/858591/353912.terrain new file mode 100644 index 000000000..deb41309f Binary files /dev/null and b/public/terrain/19/858591/353912.terrain differ diff --git a/public/terrain/19/858591/353913.terrain b/public/terrain/19/858591/353913.terrain new file mode 100644 index 000000000..b7ed95643 Binary files /dev/null and b/public/terrain/19/858591/353913.terrain differ diff --git a/public/terrain/19/858591/353914.terrain b/public/terrain/19/858591/353914.terrain new file mode 100644 index 000000000..0813a4f03 Binary files /dev/null and b/public/terrain/19/858591/353914.terrain differ diff --git a/public/terrain/19/858591/353915.terrain b/public/terrain/19/858591/353915.terrain new file mode 100644 index 000000000..9c21d0695 Binary files /dev/null and b/public/terrain/19/858591/353915.terrain differ diff --git a/public/terrain/19/858591/353916.terrain b/public/terrain/19/858591/353916.terrain new file mode 100644 index 000000000..e1f0a66ba Binary files /dev/null and b/public/terrain/19/858591/353916.terrain differ diff --git a/public/terrain/19/858591/353917.terrain b/public/terrain/19/858591/353917.terrain new file mode 100644 index 000000000..78c667bf6 Binary files /dev/null and b/public/terrain/19/858591/353917.terrain differ diff --git a/public/terrain/19/858591/353918.terrain b/public/terrain/19/858591/353918.terrain new file mode 100644 index 000000000..bda03ed6f Binary files /dev/null and b/public/terrain/19/858591/353918.terrain differ diff --git a/public/terrain/19/858591/353919.terrain b/public/terrain/19/858591/353919.terrain new file mode 100644 index 000000000..a6c6a2a83 Binary files /dev/null and b/public/terrain/19/858591/353919.terrain differ diff --git a/public/terrain/19/858591/353920.terrain b/public/terrain/19/858591/353920.terrain new file mode 100644 index 000000000..964d622d6 Binary files /dev/null and b/public/terrain/19/858591/353920.terrain differ diff --git a/public/terrain/19/858591/353921.terrain b/public/terrain/19/858591/353921.terrain new file mode 100644 index 000000000..57c902fde Binary files /dev/null and b/public/terrain/19/858591/353921.terrain differ diff --git a/public/terrain/19/858591/353922.terrain b/public/terrain/19/858591/353922.terrain new file mode 100644 index 000000000..2a7351f3e Binary files /dev/null and b/public/terrain/19/858591/353922.terrain differ diff --git a/public/terrain/19/858591/353923.terrain b/public/terrain/19/858591/353923.terrain new file mode 100644 index 000000000..251316a14 Binary files /dev/null and b/public/terrain/19/858591/353923.terrain differ diff --git a/public/terrain/19/858591/353924.terrain b/public/terrain/19/858591/353924.terrain new file mode 100644 index 000000000..40355d3ef Binary files /dev/null and b/public/terrain/19/858591/353924.terrain differ diff --git a/public/terrain/19/858591/353925.terrain b/public/terrain/19/858591/353925.terrain new file mode 100644 index 000000000..b56dfc030 Binary files /dev/null and b/public/terrain/19/858591/353925.terrain differ diff --git a/public/terrain/19/858591/353926.terrain b/public/terrain/19/858591/353926.terrain new file mode 100644 index 000000000..43c6b6dc8 Binary files /dev/null and b/public/terrain/19/858591/353926.terrain differ diff --git a/public/terrain/19/858591/353927.terrain b/public/terrain/19/858591/353927.terrain new file mode 100644 index 000000000..bc11c09fc Binary files /dev/null and b/public/terrain/19/858591/353927.terrain differ diff --git a/public/terrain/19/858591/353928.terrain b/public/terrain/19/858591/353928.terrain new file mode 100644 index 000000000..13f11ef80 Binary files /dev/null and b/public/terrain/19/858591/353928.terrain differ diff --git a/public/terrain/19/858591/353929.terrain b/public/terrain/19/858591/353929.terrain new file mode 100644 index 000000000..6f823ab95 Binary files /dev/null and b/public/terrain/19/858591/353929.terrain differ diff --git a/public/terrain/19/858591/353930.terrain b/public/terrain/19/858591/353930.terrain new file mode 100644 index 000000000..ec19a0e5b Binary files /dev/null and b/public/terrain/19/858591/353930.terrain differ diff --git a/public/terrain/19/858591/353931.terrain b/public/terrain/19/858591/353931.terrain new file mode 100644 index 000000000..f222907b1 Binary files /dev/null and b/public/terrain/19/858591/353931.terrain differ diff --git a/public/terrain/19/858591/353932.terrain b/public/terrain/19/858591/353932.terrain new file mode 100644 index 000000000..ce54cd1f0 Binary files /dev/null and b/public/terrain/19/858591/353932.terrain differ diff --git a/public/terrain/19/858591/353933.terrain b/public/terrain/19/858591/353933.terrain new file mode 100644 index 000000000..486c26465 Binary files /dev/null and b/public/terrain/19/858591/353933.terrain differ diff --git a/public/terrain/19/858591/353934.terrain b/public/terrain/19/858591/353934.terrain new file mode 100644 index 000000000..808962bb7 Binary files /dev/null and b/public/terrain/19/858591/353934.terrain differ diff --git a/public/terrain/19/858591/353935.terrain b/public/terrain/19/858591/353935.terrain new file mode 100644 index 000000000..a3e701092 Binary files /dev/null and b/public/terrain/19/858591/353935.terrain differ diff --git a/public/terrain/19/858591/353936.terrain b/public/terrain/19/858591/353936.terrain new file mode 100644 index 000000000..9d97f2350 Binary files /dev/null and b/public/terrain/19/858591/353936.terrain differ diff --git a/public/terrain/19/858591/353937.terrain b/public/terrain/19/858591/353937.terrain new file mode 100644 index 000000000..9b94391f7 Binary files /dev/null and b/public/terrain/19/858591/353937.terrain differ diff --git a/public/terrain/19/858591/353938.terrain b/public/terrain/19/858591/353938.terrain new file mode 100644 index 000000000..92dedd074 Binary files /dev/null and b/public/terrain/19/858591/353938.terrain differ diff --git a/public/terrain/19/858591/353939.terrain b/public/terrain/19/858591/353939.terrain new file mode 100644 index 000000000..fe2b11505 Binary files /dev/null and b/public/terrain/19/858591/353939.terrain differ diff --git a/public/terrain/19/858591/353940.terrain b/public/terrain/19/858591/353940.terrain new file mode 100644 index 000000000..af2660a86 Binary files /dev/null and b/public/terrain/19/858591/353940.terrain differ diff --git a/public/terrain/19/858591/353941.terrain b/public/terrain/19/858591/353941.terrain new file mode 100644 index 000000000..80916f05c Binary files /dev/null and b/public/terrain/19/858591/353941.terrain differ diff --git a/public/terrain/19/858591/353942.terrain b/public/terrain/19/858591/353942.terrain new file mode 100644 index 000000000..93df79ef4 Binary files /dev/null and b/public/terrain/19/858591/353942.terrain differ diff --git a/public/terrain/19/858591/353943.terrain b/public/terrain/19/858591/353943.terrain new file mode 100644 index 000000000..918552736 Binary files /dev/null and b/public/terrain/19/858591/353943.terrain differ diff --git a/public/terrain/19/858591/353944.terrain b/public/terrain/19/858591/353944.terrain new file mode 100644 index 000000000..c41968bb8 Binary files /dev/null and b/public/terrain/19/858591/353944.terrain differ diff --git a/public/terrain/19/858591/353945.terrain b/public/terrain/19/858591/353945.terrain new file mode 100644 index 000000000..7c7dad341 Binary files /dev/null and b/public/terrain/19/858591/353945.terrain differ diff --git a/public/terrain/19/858591/353946.terrain b/public/terrain/19/858591/353946.terrain new file mode 100644 index 000000000..d46b484bc Binary files /dev/null and b/public/terrain/19/858591/353946.terrain differ diff --git a/public/terrain/19/858591/353947.terrain b/public/terrain/19/858591/353947.terrain new file mode 100644 index 000000000..8f3a50b9b Binary files /dev/null and b/public/terrain/19/858591/353947.terrain differ diff --git a/public/terrain/19/858591/353948.terrain b/public/terrain/19/858591/353948.terrain new file mode 100644 index 000000000..9f10d644d Binary files /dev/null and b/public/terrain/19/858591/353948.terrain differ diff --git a/public/terrain/19/858591/353949.terrain b/public/terrain/19/858591/353949.terrain new file mode 100644 index 000000000..efc75c7ee Binary files /dev/null and b/public/terrain/19/858591/353949.terrain differ diff --git a/public/terrain/19/858591/353950.terrain b/public/terrain/19/858591/353950.terrain new file mode 100644 index 000000000..a59c26e6f Binary files /dev/null and b/public/terrain/19/858591/353950.terrain differ diff --git a/public/terrain/19/858591/353951.terrain b/public/terrain/19/858591/353951.terrain new file mode 100644 index 000000000..51011e96a Binary files /dev/null and b/public/terrain/19/858591/353951.terrain differ diff --git a/public/terrain/19/858591/353952.terrain b/public/terrain/19/858591/353952.terrain new file mode 100644 index 000000000..2e4c9d51b Binary files /dev/null and b/public/terrain/19/858591/353952.terrain differ diff --git a/public/terrain/19/858591/353953.terrain b/public/terrain/19/858591/353953.terrain new file mode 100644 index 000000000..49cc167fc Binary files /dev/null and b/public/terrain/19/858591/353953.terrain differ diff --git a/public/terrain/19/858591/353954.terrain b/public/terrain/19/858591/353954.terrain new file mode 100644 index 000000000..5b565f52b Binary files /dev/null and b/public/terrain/19/858591/353954.terrain differ diff --git a/public/terrain/19/858591/353955.terrain b/public/terrain/19/858591/353955.terrain new file mode 100644 index 000000000..a324bbdbd Binary files /dev/null and b/public/terrain/19/858591/353955.terrain differ diff --git a/public/terrain/19/858591/353956.terrain b/public/terrain/19/858591/353956.terrain new file mode 100644 index 000000000..43df93fbe Binary files /dev/null and b/public/terrain/19/858591/353956.terrain differ diff --git a/public/terrain/19/858591/353957.terrain b/public/terrain/19/858591/353957.terrain new file mode 100644 index 000000000..f139b2f79 Binary files /dev/null and b/public/terrain/19/858591/353957.terrain differ diff --git a/public/terrain/19/858591/353958.terrain b/public/terrain/19/858591/353958.terrain new file mode 100644 index 000000000..b5309a9f3 Binary files /dev/null and b/public/terrain/19/858591/353958.terrain differ diff --git a/public/terrain/19/858591/353959.terrain b/public/terrain/19/858591/353959.terrain new file mode 100644 index 000000000..7e53cff39 Binary files /dev/null and b/public/terrain/19/858591/353959.terrain differ diff --git a/public/terrain/19/858591/353960.terrain b/public/terrain/19/858591/353960.terrain new file mode 100644 index 000000000..59255e862 Binary files /dev/null and b/public/terrain/19/858591/353960.terrain differ diff --git a/public/terrain/19/858591/353961.terrain b/public/terrain/19/858591/353961.terrain new file mode 100644 index 000000000..0f75666bf Binary files /dev/null and b/public/terrain/19/858591/353961.terrain differ diff --git a/public/terrain/19/858591/353962.terrain b/public/terrain/19/858591/353962.terrain new file mode 100644 index 000000000..3407f6e0c Binary files /dev/null and b/public/terrain/19/858591/353962.terrain differ diff --git a/public/terrain/19/858591/353963.terrain b/public/terrain/19/858591/353963.terrain new file mode 100644 index 000000000..ffc9eb7f3 Binary files /dev/null and b/public/terrain/19/858591/353963.terrain differ diff --git a/public/terrain/19/858591/353964.terrain b/public/terrain/19/858591/353964.terrain new file mode 100644 index 000000000..c05de0b06 Binary files /dev/null and b/public/terrain/19/858591/353964.terrain differ diff --git a/public/terrain/19/858591/353965.terrain b/public/terrain/19/858591/353965.terrain new file mode 100644 index 000000000..8ca2307b3 Binary files /dev/null and b/public/terrain/19/858591/353965.terrain differ diff --git a/public/terrain/19/858591/353966.terrain b/public/terrain/19/858591/353966.terrain new file mode 100644 index 000000000..165570371 Binary files /dev/null and b/public/terrain/19/858591/353966.terrain differ diff --git a/public/terrain/19/858591/353967.terrain b/public/terrain/19/858591/353967.terrain new file mode 100644 index 000000000..8ba1fc8e4 Binary files /dev/null and b/public/terrain/19/858591/353967.terrain differ diff --git a/public/terrain/19/858591/353968.terrain b/public/terrain/19/858591/353968.terrain new file mode 100644 index 000000000..4ce1534b2 Binary files /dev/null and b/public/terrain/19/858591/353968.terrain differ diff --git a/public/terrain/19/858591/353969.terrain b/public/terrain/19/858591/353969.terrain new file mode 100644 index 000000000..3cd8a2228 Binary files /dev/null and b/public/terrain/19/858591/353969.terrain differ diff --git a/public/terrain/19/858591/353970.terrain b/public/terrain/19/858591/353970.terrain new file mode 100644 index 000000000..f02852229 Binary files /dev/null and b/public/terrain/19/858591/353970.terrain differ diff --git a/public/terrain/19/858591/353971.terrain b/public/terrain/19/858591/353971.terrain new file mode 100644 index 000000000..673fb0aae Binary files /dev/null and b/public/terrain/19/858591/353971.terrain differ diff --git a/public/terrain/19/858591/353972.terrain b/public/terrain/19/858591/353972.terrain new file mode 100644 index 000000000..a18157ffe Binary files /dev/null and b/public/terrain/19/858591/353972.terrain differ diff --git a/public/terrain/19/858591/353973.terrain b/public/terrain/19/858591/353973.terrain new file mode 100644 index 000000000..802bf5b75 Binary files /dev/null and b/public/terrain/19/858591/353973.terrain differ diff --git a/public/terrain/19/858591/353974.terrain b/public/terrain/19/858591/353974.terrain new file mode 100644 index 000000000..34bae1107 Binary files /dev/null and b/public/terrain/19/858591/353974.terrain differ diff --git a/public/terrain/19/858591/353975.terrain b/public/terrain/19/858591/353975.terrain new file mode 100644 index 000000000..dcaf001f6 Binary files /dev/null and b/public/terrain/19/858591/353975.terrain differ diff --git a/public/terrain/19/858591/353976.terrain b/public/terrain/19/858591/353976.terrain new file mode 100644 index 000000000..216d7bc5f Binary files /dev/null and b/public/terrain/19/858591/353976.terrain differ diff --git a/public/terrain/19/858591/353977.terrain b/public/terrain/19/858591/353977.terrain new file mode 100644 index 000000000..6090e5761 Binary files /dev/null and b/public/terrain/19/858591/353977.terrain differ diff --git a/public/terrain/19/858591/353978.terrain b/public/terrain/19/858591/353978.terrain new file mode 100644 index 000000000..fb3aab3fe Binary files /dev/null and b/public/terrain/19/858591/353978.terrain differ diff --git a/public/terrain/19/858591/353979.terrain b/public/terrain/19/858591/353979.terrain new file mode 100644 index 000000000..165987284 Binary files /dev/null and b/public/terrain/19/858591/353979.terrain differ diff --git a/public/terrain/19/858591/353980.terrain b/public/terrain/19/858591/353980.terrain new file mode 100644 index 000000000..cd599bcb9 Binary files /dev/null and b/public/terrain/19/858591/353980.terrain differ diff --git a/public/terrain/19/858591/353981.terrain b/public/terrain/19/858591/353981.terrain new file mode 100644 index 000000000..13f4fb360 Binary files /dev/null and b/public/terrain/19/858591/353981.terrain differ diff --git a/public/terrain/19/858591/353982.terrain b/public/terrain/19/858591/353982.terrain new file mode 100644 index 000000000..469494c18 Binary files /dev/null and b/public/terrain/19/858591/353982.terrain differ diff --git a/public/terrain/19/858591/353983.terrain b/public/terrain/19/858591/353983.terrain new file mode 100644 index 000000000..50f345555 Binary files /dev/null and b/public/terrain/19/858591/353983.terrain differ diff --git a/public/terrain/19/858591/353984.terrain b/public/terrain/19/858591/353984.terrain new file mode 100644 index 000000000..6c714ee83 Binary files /dev/null and b/public/terrain/19/858591/353984.terrain differ diff --git a/public/terrain/19/858591/353985.terrain b/public/terrain/19/858591/353985.terrain new file mode 100644 index 000000000..a69611dad Binary files /dev/null and b/public/terrain/19/858591/353985.terrain differ diff --git a/public/terrain/19/858591/353986.terrain b/public/terrain/19/858591/353986.terrain new file mode 100644 index 000000000..14d3b035e Binary files /dev/null and b/public/terrain/19/858591/353986.terrain differ diff --git a/public/terrain/19/858591/353987.terrain b/public/terrain/19/858591/353987.terrain new file mode 100644 index 000000000..7bbdcfd86 Binary files /dev/null and b/public/terrain/19/858591/353987.terrain differ diff --git a/public/terrain/19/858591/353988.terrain b/public/terrain/19/858591/353988.terrain new file mode 100644 index 000000000..675f3b85a Binary files /dev/null and b/public/terrain/19/858591/353988.terrain differ diff --git a/public/terrain/19/858591/353989.terrain b/public/terrain/19/858591/353989.terrain new file mode 100644 index 000000000..0faa6aa5f Binary files /dev/null and b/public/terrain/19/858591/353989.terrain differ diff --git a/public/terrain/19/858591/353990.terrain b/public/terrain/19/858591/353990.terrain new file mode 100644 index 000000000..18dfe836c Binary files /dev/null and b/public/terrain/19/858591/353990.terrain differ diff --git a/public/terrain/19/858591/353991.terrain b/public/terrain/19/858591/353991.terrain new file mode 100644 index 000000000..cf05659c3 Binary files /dev/null and b/public/terrain/19/858591/353991.terrain differ diff --git a/public/terrain/19/858591/353992.terrain b/public/terrain/19/858591/353992.terrain new file mode 100644 index 000000000..a3eddcd46 Binary files /dev/null and b/public/terrain/19/858591/353992.terrain differ diff --git a/public/terrain/19/858591/353993.terrain b/public/terrain/19/858591/353993.terrain new file mode 100644 index 000000000..b82ebeff5 Binary files /dev/null and b/public/terrain/19/858591/353993.terrain differ diff --git a/public/terrain/19/858591/353994.terrain b/public/terrain/19/858591/353994.terrain new file mode 100644 index 000000000..19b3cb175 Binary files /dev/null and b/public/terrain/19/858591/353994.terrain differ diff --git a/public/terrain/19/858591/353995.terrain b/public/terrain/19/858591/353995.terrain new file mode 100644 index 000000000..c19f9a56d Binary files /dev/null and b/public/terrain/19/858591/353995.terrain differ diff --git a/public/terrain/19/858591/353996.terrain b/public/terrain/19/858591/353996.terrain new file mode 100644 index 000000000..3f78ec518 Binary files /dev/null and b/public/terrain/19/858591/353996.terrain differ diff --git a/public/terrain/19/858591/353997.terrain b/public/terrain/19/858591/353997.terrain new file mode 100644 index 000000000..a0fa5f0b7 Binary files /dev/null and b/public/terrain/19/858591/353997.terrain differ diff --git a/public/terrain/19/858591/353998.terrain b/public/terrain/19/858591/353998.terrain new file mode 100644 index 000000000..9cf1dd8fa Binary files /dev/null and b/public/terrain/19/858591/353998.terrain differ diff --git a/public/terrain/19/858591/353999.terrain b/public/terrain/19/858591/353999.terrain new file mode 100644 index 000000000..f29862f13 Binary files /dev/null and b/public/terrain/19/858591/353999.terrain differ diff --git a/public/terrain/19/858591/354000.terrain b/public/terrain/19/858591/354000.terrain new file mode 100644 index 000000000..4fb19d506 Binary files /dev/null and b/public/terrain/19/858591/354000.terrain differ diff --git a/public/terrain/19/858591/354001.terrain b/public/terrain/19/858591/354001.terrain new file mode 100644 index 000000000..da8c86297 Binary files /dev/null and b/public/terrain/19/858591/354001.terrain differ diff --git a/public/terrain/19/858591/354002.terrain b/public/terrain/19/858591/354002.terrain new file mode 100644 index 000000000..19562cccf Binary files /dev/null and b/public/terrain/19/858591/354002.terrain differ diff --git a/public/terrain/19/858591/354003.terrain b/public/terrain/19/858591/354003.terrain new file mode 100644 index 000000000..321c6f5c4 Binary files /dev/null and b/public/terrain/19/858591/354003.terrain differ diff --git a/public/terrain/19/858591/354004.terrain b/public/terrain/19/858591/354004.terrain new file mode 100644 index 000000000..009ff34a4 Binary files /dev/null and b/public/terrain/19/858591/354004.terrain differ diff --git a/public/terrain/19/858591/354005.terrain b/public/terrain/19/858591/354005.terrain new file mode 100644 index 000000000..f7fad2d5c Binary files /dev/null and b/public/terrain/19/858591/354005.terrain differ diff --git a/public/terrain/19/858591/354006.terrain b/public/terrain/19/858591/354006.terrain new file mode 100644 index 000000000..c0feeb58a Binary files /dev/null and b/public/terrain/19/858591/354006.terrain differ diff --git a/public/terrain/19/858591/354007.terrain b/public/terrain/19/858591/354007.terrain new file mode 100644 index 000000000..703c63402 Binary files /dev/null and b/public/terrain/19/858591/354007.terrain differ diff --git a/public/terrain/19/858591/354008.terrain b/public/terrain/19/858591/354008.terrain new file mode 100644 index 000000000..833a3d963 Binary files /dev/null and b/public/terrain/19/858591/354008.terrain differ diff --git a/public/terrain/19/858591/354009.terrain b/public/terrain/19/858591/354009.terrain new file mode 100644 index 000000000..846a7c210 Binary files /dev/null and b/public/terrain/19/858591/354009.terrain differ diff --git a/public/terrain/19/858591/354010.terrain b/public/terrain/19/858591/354010.terrain new file mode 100644 index 000000000..b8914e5fe Binary files /dev/null and b/public/terrain/19/858591/354010.terrain differ diff --git a/public/terrain/19/858591/354011.terrain b/public/terrain/19/858591/354011.terrain new file mode 100644 index 000000000..cba21e2b8 Binary files /dev/null and b/public/terrain/19/858591/354011.terrain differ diff --git a/public/terrain/19/858591/354012.terrain b/public/terrain/19/858591/354012.terrain new file mode 100644 index 000000000..abe8b3c76 Binary files /dev/null and b/public/terrain/19/858591/354012.terrain differ diff --git a/public/terrain/19/858591/354013.terrain b/public/terrain/19/858591/354013.terrain new file mode 100644 index 000000000..fa53e8ed1 Binary files /dev/null and b/public/terrain/19/858591/354013.terrain differ diff --git a/public/terrain/19/858591/354014.terrain b/public/terrain/19/858591/354014.terrain new file mode 100644 index 000000000..08f8008ba Binary files /dev/null and b/public/terrain/19/858591/354014.terrain differ diff --git a/public/terrain/19/858591/354015.terrain b/public/terrain/19/858591/354015.terrain new file mode 100644 index 000000000..8da16ed7d Binary files /dev/null and b/public/terrain/19/858591/354015.terrain differ diff --git a/public/terrain/19/858591/354016.terrain b/public/terrain/19/858591/354016.terrain new file mode 100644 index 000000000..ce8b9be98 Binary files /dev/null and b/public/terrain/19/858591/354016.terrain differ diff --git a/public/terrain/19/858591/354017.terrain b/public/terrain/19/858591/354017.terrain new file mode 100644 index 000000000..88c8920d6 Binary files /dev/null and b/public/terrain/19/858591/354017.terrain differ diff --git a/public/terrain/19/858591/354018.terrain b/public/terrain/19/858591/354018.terrain new file mode 100644 index 000000000..58de7fdb3 Binary files /dev/null and b/public/terrain/19/858591/354018.terrain differ diff --git a/public/terrain/19/858591/354019.terrain b/public/terrain/19/858591/354019.terrain new file mode 100644 index 000000000..b008c9a5a Binary files /dev/null and b/public/terrain/19/858591/354019.terrain differ diff --git a/public/terrain/19/858591/354020.terrain b/public/terrain/19/858591/354020.terrain new file mode 100644 index 000000000..b9369ab65 Binary files /dev/null and b/public/terrain/19/858591/354020.terrain differ diff --git a/public/terrain/19/858591/354021.terrain b/public/terrain/19/858591/354021.terrain new file mode 100644 index 000000000..e37083e9a Binary files /dev/null and b/public/terrain/19/858591/354021.terrain differ diff --git a/public/terrain/19/858591/354022.terrain b/public/terrain/19/858591/354022.terrain new file mode 100644 index 000000000..119fbb39c Binary files /dev/null and b/public/terrain/19/858591/354022.terrain differ diff --git a/public/terrain/19/858591/354023.terrain b/public/terrain/19/858591/354023.terrain new file mode 100644 index 000000000..0178628c4 Binary files /dev/null and b/public/terrain/19/858591/354023.terrain differ diff --git a/public/terrain/19/858591/354024.terrain b/public/terrain/19/858591/354024.terrain new file mode 100644 index 000000000..e6af96891 Binary files /dev/null and b/public/terrain/19/858591/354024.terrain differ diff --git a/public/terrain/19/858591/354025.terrain b/public/terrain/19/858591/354025.terrain new file mode 100644 index 000000000..0d11acecc Binary files /dev/null and b/public/terrain/19/858591/354025.terrain differ diff --git a/public/terrain/19/858591/354026.terrain b/public/terrain/19/858591/354026.terrain new file mode 100644 index 000000000..33f23b06b Binary files /dev/null and b/public/terrain/19/858591/354026.terrain differ diff --git a/public/terrain/19/858591/354027.terrain b/public/terrain/19/858591/354027.terrain new file mode 100644 index 000000000..8ed81d56f Binary files /dev/null and b/public/terrain/19/858591/354027.terrain differ diff --git a/public/terrain/19/858591/354028.terrain b/public/terrain/19/858591/354028.terrain new file mode 100644 index 000000000..e47e15e66 Binary files /dev/null and b/public/terrain/19/858591/354028.terrain differ diff --git a/public/terrain/19/858591/354029.terrain b/public/terrain/19/858591/354029.terrain new file mode 100644 index 000000000..017925718 Binary files /dev/null and b/public/terrain/19/858591/354029.terrain differ diff --git a/public/terrain/19/858591/354030.terrain b/public/terrain/19/858591/354030.terrain new file mode 100644 index 000000000..a4d75dd9f Binary files /dev/null and b/public/terrain/19/858591/354030.terrain differ diff --git a/public/terrain/19/858591/354031.terrain b/public/terrain/19/858591/354031.terrain new file mode 100644 index 000000000..c1d8682ba Binary files /dev/null and b/public/terrain/19/858591/354031.terrain differ diff --git a/public/terrain/19/858591/354032.terrain b/public/terrain/19/858591/354032.terrain new file mode 100644 index 000000000..a34c9069e Binary files /dev/null and b/public/terrain/19/858591/354032.terrain differ diff --git a/public/terrain/19/858591/354033.terrain b/public/terrain/19/858591/354033.terrain new file mode 100644 index 000000000..a2f1acc89 Binary files /dev/null and b/public/terrain/19/858591/354033.terrain differ diff --git a/public/terrain/19/858591/354034.terrain b/public/terrain/19/858591/354034.terrain new file mode 100644 index 000000000..f142ca995 Binary files /dev/null and b/public/terrain/19/858591/354034.terrain differ diff --git a/public/terrain/19/858591/354035.terrain b/public/terrain/19/858591/354035.terrain new file mode 100644 index 000000000..0f343acaf Binary files /dev/null and b/public/terrain/19/858591/354035.terrain differ diff --git a/public/terrain/19/858591/354036.terrain b/public/terrain/19/858591/354036.terrain new file mode 100644 index 000000000..7d4c3f1bc Binary files /dev/null and b/public/terrain/19/858591/354036.terrain differ diff --git a/public/terrain/19/858591/354037.terrain b/public/terrain/19/858591/354037.terrain new file mode 100644 index 000000000..f657aa695 Binary files /dev/null and b/public/terrain/19/858591/354037.terrain differ diff --git a/public/terrain/19/858591/354038.terrain b/public/terrain/19/858591/354038.terrain new file mode 100644 index 000000000..3351734f8 Binary files /dev/null and b/public/terrain/19/858591/354038.terrain differ diff --git a/public/terrain/19/858591/354039.terrain b/public/terrain/19/858591/354039.terrain new file mode 100644 index 000000000..b02c83838 Binary files /dev/null and b/public/terrain/19/858591/354039.terrain differ diff --git a/public/terrain/19/858591/354040.terrain b/public/terrain/19/858591/354040.terrain new file mode 100644 index 000000000..f6909f57e Binary files /dev/null and b/public/terrain/19/858591/354040.terrain differ diff --git a/public/terrain/19/858591/354041.terrain b/public/terrain/19/858591/354041.terrain new file mode 100644 index 000000000..f37d8ad51 Binary files /dev/null and b/public/terrain/19/858591/354041.terrain differ diff --git a/public/terrain/19/858591/354042.terrain b/public/terrain/19/858591/354042.terrain new file mode 100644 index 000000000..051cb90c7 Binary files /dev/null and b/public/terrain/19/858591/354042.terrain differ diff --git a/public/terrain/19/858591/354043.terrain b/public/terrain/19/858591/354043.terrain new file mode 100644 index 000000000..440cde79a Binary files /dev/null and b/public/terrain/19/858591/354043.terrain differ diff --git a/public/terrain/19/858591/354044.terrain b/public/terrain/19/858591/354044.terrain new file mode 100644 index 000000000..33d024d62 Binary files /dev/null and b/public/terrain/19/858591/354044.terrain differ diff --git a/public/terrain/19/858591/354045.terrain b/public/terrain/19/858591/354045.terrain new file mode 100644 index 000000000..f50a900f8 Binary files /dev/null and b/public/terrain/19/858591/354045.terrain differ diff --git a/public/terrain/19/858591/354046.terrain b/public/terrain/19/858591/354046.terrain new file mode 100644 index 000000000..9c003a384 Binary files /dev/null and b/public/terrain/19/858591/354046.terrain differ diff --git a/public/terrain/19/858591/354047.terrain b/public/terrain/19/858591/354047.terrain new file mode 100644 index 000000000..7c4eccbf8 Binary files /dev/null and b/public/terrain/19/858591/354047.terrain differ diff --git a/public/terrain/19/858591/354048.terrain b/public/terrain/19/858591/354048.terrain new file mode 100644 index 000000000..e799fc22f Binary files /dev/null and b/public/terrain/19/858591/354048.terrain differ diff --git a/public/terrain/19/858591/354049.terrain b/public/terrain/19/858591/354049.terrain new file mode 100644 index 000000000..324bac707 Binary files /dev/null and b/public/terrain/19/858591/354049.terrain differ diff --git a/public/terrain/19/858591/354050.terrain b/public/terrain/19/858591/354050.terrain new file mode 100644 index 000000000..9dd251fab Binary files /dev/null and b/public/terrain/19/858591/354050.terrain differ diff --git a/public/terrain/19/858591/354051.terrain b/public/terrain/19/858591/354051.terrain new file mode 100644 index 000000000..5d8a4e124 Binary files /dev/null and b/public/terrain/19/858591/354051.terrain differ diff --git a/public/terrain/19/858591/354052.terrain b/public/terrain/19/858591/354052.terrain new file mode 100644 index 000000000..c82a63365 Binary files /dev/null and b/public/terrain/19/858591/354052.terrain differ diff --git a/public/terrain/19/858591/354053.terrain b/public/terrain/19/858591/354053.terrain new file mode 100644 index 000000000..dcb428794 Binary files /dev/null and b/public/terrain/19/858591/354053.terrain differ diff --git a/public/terrain/19/858591/354054.terrain b/public/terrain/19/858591/354054.terrain new file mode 100644 index 000000000..58a4699f8 Binary files /dev/null and b/public/terrain/19/858591/354054.terrain differ diff --git a/public/terrain/19/858591/354055.terrain b/public/terrain/19/858591/354055.terrain new file mode 100644 index 000000000..7520f0fe1 Binary files /dev/null and b/public/terrain/19/858591/354055.terrain differ diff --git a/public/terrain/19/858591/354056.terrain b/public/terrain/19/858591/354056.terrain new file mode 100644 index 000000000..b44247dca Binary files /dev/null and b/public/terrain/19/858591/354056.terrain differ diff --git a/public/terrain/19/858591/354057.terrain b/public/terrain/19/858591/354057.terrain new file mode 100644 index 000000000..f17c6b272 Binary files /dev/null and b/public/terrain/19/858591/354057.terrain differ diff --git a/public/terrain/19/858591/354058.terrain b/public/terrain/19/858591/354058.terrain new file mode 100644 index 000000000..aeb73cd58 Binary files /dev/null and b/public/terrain/19/858591/354058.terrain differ diff --git a/public/terrain/19/858591/354059.terrain b/public/terrain/19/858591/354059.terrain new file mode 100644 index 000000000..656748a14 Binary files /dev/null and b/public/terrain/19/858591/354059.terrain differ diff --git a/public/terrain/19/858592/353743.terrain b/public/terrain/19/858592/353743.terrain new file mode 100644 index 000000000..44a2a1988 Binary files /dev/null and b/public/terrain/19/858592/353743.terrain differ diff --git a/public/terrain/19/858592/353744.terrain b/public/terrain/19/858592/353744.terrain new file mode 100644 index 000000000..c2bb5332e Binary files /dev/null and b/public/terrain/19/858592/353744.terrain differ diff --git a/public/terrain/19/858592/353745.terrain b/public/terrain/19/858592/353745.terrain new file mode 100644 index 000000000..37a0dbee4 Binary files /dev/null and b/public/terrain/19/858592/353745.terrain differ diff --git a/public/terrain/19/858592/353746.terrain b/public/terrain/19/858592/353746.terrain new file mode 100644 index 000000000..ece2813dd Binary files /dev/null and b/public/terrain/19/858592/353746.terrain differ diff --git a/public/terrain/19/858592/353747.terrain b/public/terrain/19/858592/353747.terrain new file mode 100644 index 000000000..f6547513d Binary files /dev/null and b/public/terrain/19/858592/353747.terrain differ diff --git a/public/terrain/19/858592/353748.terrain b/public/terrain/19/858592/353748.terrain new file mode 100644 index 000000000..ba026a9be Binary files /dev/null and b/public/terrain/19/858592/353748.terrain differ diff --git a/public/terrain/19/858592/353749.terrain b/public/terrain/19/858592/353749.terrain new file mode 100644 index 000000000..bcf751797 Binary files /dev/null and b/public/terrain/19/858592/353749.terrain differ diff --git a/public/terrain/19/858592/353750.terrain b/public/terrain/19/858592/353750.terrain new file mode 100644 index 000000000..18c757d1c Binary files /dev/null and b/public/terrain/19/858592/353750.terrain differ diff --git a/public/terrain/19/858592/353751.terrain b/public/terrain/19/858592/353751.terrain new file mode 100644 index 000000000..e476636ae Binary files /dev/null and b/public/terrain/19/858592/353751.terrain differ diff --git a/public/terrain/19/858592/353752.terrain b/public/terrain/19/858592/353752.terrain new file mode 100644 index 000000000..1c2d9c37d Binary files /dev/null and b/public/terrain/19/858592/353752.terrain differ diff --git a/public/terrain/19/858592/353753.terrain b/public/terrain/19/858592/353753.terrain new file mode 100644 index 000000000..4ae5a68cc Binary files /dev/null and b/public/terrain/19/858592/353753.terrain differ diff --git a/public/terrain/19/858592/353754.terrain b/public/terrain/19/858592/353754.terrain new file mode 100644 index 000000000..0cdaa20a1 Binary files /dev/null and b/public/terrain/19/858592/353754.terrain differ diff --git a/public/terrain/19/858592/353755.terrain b/public/terrain/19/858592/353755.terrain new file mode 100644 index 000000000..8de50bae1 Binary files /dev/null and b/public/terrain/19/858592/353755.terrain differ diff --git a/public/terrain/19/858592/353756.terrain b/public/terrain/19/858592/353756.terrain new file mode 100644 index 000000000..454b9918d Binary files /dev/null and b/public/terrain/19/858592/353756.terrain differ diff --git a/public/terrain/19/858592/353757.terrain b/public/terrain/19/858592/353757.terrain new file mode 100644 index 000000000..5123a1c37 Binary files /dev/null and b/public/terrain/19/858592/353757.terrain differ diff --git a/public/terrain/19/858592/353758.terrain b/public/terrain/19/858592/353758.terrain new file mode 100644 index 000000000..ef84cd7dd Binary files /dev/null and b/public/terrain/19/858592/353758.terrain differ diff --git a/public/terrain/19/858592/353759.terrain b/public/terrain/19/858592/353759.terrain new file mode 100644 index 000000000..6a72b61f0 Binary files /dev/null and b/public/terrain/19/858592/353759.terrain differ diff --git a/public/terrain/19/858592/353760.terrain b/public/terrain/19/858592/353760.terrain new file mode 100644 index 000000000..e583cb330 Binary files /dev/null and b/public/terrain/19/858592/353760.terrain differ diff --git a/public/terrain/19/858592/353761.terrain b/public/terrain/19/858592/353761.terrain new file mode 100644 index 000000000..ab311d796 Binary files /dev/null and b/public/terrain/19/858592/353761.terrain differ diff --git a/public/terrain/19/858592/353762.terrain b/public/terrain/19/858592/353762.terrain new file mode 100644 index 000000000..3327729e9 Binary files /dev/null and b/public/terrain/19/858592/353762.terrain differ diff --git a/public/terrain/19/858592/353763.terrain b/public/terrain/19/858592/353763.terrain new file mode 100644 index 000000000..1e62ce55c Binary files /dev/null and b/public/terrain/19/858592/353763.terrain differ diff --git a/public/terrain/19/858592/353764.terrain b/public/terrain/19/858592/353764.terrain new file mode 100644 index 000000000..5af5f9d20 Binary files /dev/null and b/public/terrain/19/858592/353764.terrain differ diff --git a/public/terrain/19/858592/353765.terrain b/public/terrain/19/858592/353765.terrain new file mode 100644 index 000000000..0ce449a56 Binary files /dev/null and b/public/terrain/19/858592/353765.terrain differ diff --git a/public/terrain/19/858592/353766.terrain b/public/terrain/19/858592/353766.terrain new file mode 100644 index 000000000..2a8a6e24f Binary files /dev/null and b/public/terrain/19/858592/353766.terrain differ diff --git a/public/terrain/19/858592/353767.terrain b/public/terrain/19/858592/353767.terrain new file mode 100644 index 000000000..8afbb8627 Binary files /dev/null and b/public/terrain/19/858592/353767.terrain differ diff --git a/public/terrain/19/858592/353768.terrain b/public/terrain/19/858592/353768.terrain new file mode 100644 index 000000000..c9c70d53d Binary files /dev/null and b/public/terrain/19/858592/353768.terrain differ diff --git a/public/terrain/19/858592/353769.terrain b/public/terrain/19/858592/353769.terrain new file mode 100644 index 000000000..ce0d40d10 Binary files /dev/null and b/public/terrain/19/858592/353769.terrain differ diff --git a/public/terrain/19/858592/353770.terrain b/public/terrain/19/858592/353770.terrain new file mode 100644 index 000000000..8ff581a49 Binary files /dev/null and b/public/terrain/19/858592/353770.terrain differ diff --git a/public/terrain/19/858592/353771.terrain b/public/terrain/19/858592/353771.terrain new file mode 100644 index 000000000..b71372e1b Binary files /dev/null and b/public/terrain/19/858592/353771.terrain differ diff --git a/public/terrain/19/858592/353772.terrain b/public/terrain/19/858592/353772.terrain new file mode 100644 index 000000000..0045b2b16 Binary files /dev/null and b/public/terrain/19/858592/353772.terrain differ diff --git a/public/terrain/19/858592/353773.terrain b/public/terrain/19/858592/353773.terrain new file mode 100644 index 000000000..adb6506e9 Binary files /dev/null and b/public/terrain/19/858592/353773.terrain differ diff --git a/public/terrain/19/858592/353774.terrain b/public/terrain/19/858592/353774.terrain new file mode 100644 index 000000000..92f80354c Binary files /dev/null and b/public/terrain/19/858592/353774.terrain differ diff --git a/public/terrain/19/858592/353775.terrain b/public/terrain/19/858592/353775.terrain new file mode 100644 index 000000000..7ac27ca51 Binary files /dev/null and b/public/terrain/19/858592/353775.terrain differ diff --git a/public/terrain/19/858592/353776.terrain b/public/terrain/19/858592/353776.terrain new file mode 100644 index 000000000..ffa32f9c0 Binary files /dev/null and b/public/terrain/19/858592/353776.terrain differ diff --git a/public/terrain/19/858592/353777.terrain b/public/terrain/19/858592/353777.terrain new file mode 100644 index 000000000..b9ab311c6 Binary files /dev/null and b/public/terrain/19/858592/353777.terrain differ diff --git a/public/terrain/19/858592/353778.terrain b/public/terrain/19/858592/353778.terrain new file mode 100644 index 000000000..fc7c1207a Binary files /dev/null and b/public/terrain/19/858592/353778.terrain differ diff --git a/public/terrain/19/858592/353779.terrain b/public/terrain/19/858592/353779.terrain new file mode 100644 index 000000000..42346360a Binary files /dev/null and b/public/terrain/19/858592/353779.terrain differ diff --git a/public/terrain/19/858592/353780.terrain b/public/terrain/19/858592/353780.terrain new file mode 100644 index 000000000..a56a3603c Binary files /dev/null and b/public/terrain/19/858592/353780.terrain differ diff --git a/public/terrain/19/858592/353781.terrain b/public/terrain/19/858592/353781.terrain new file mode 100644 index 000000000..23155e817 Binary files /dev/null and b/public/terrain/19/858592/353781.terrain differ diff --git a/public/terrain/19/858592/353782.terrain b/public/terrain/19/858592/353782.terrain new file mode 100644 index 000000000..321d7a706 Binary files /dev/null and b/public/terrain/19/858592/353782.terrain differ diff --git a/public/terrain/19/858592/353783.terrain b/public/terrain/19/858592/353783.terrain new file mode 100644 index 000000000..ba8bf5e6d Binary files /dev/null and b/public/terrain/19/858592/353783.terrain differ diff --git a/public/terrain/19/858592/353784.terrain b/public/terrain/19/858592/353784.terrain new file mode 100644 index 000000000..26e8966f9 Binary files /dev/null and b/public/terrain/19/858592/353784.terrain differ diff --git a/public/terrain/19/858592/353785.terrain b/public/terrain/19/858592/353785.terrain new file mode 100644 index 000000000..8cabf1abd Binary files /dev/null and b/public/terrain/19/858592/353785.terrain differ diff --git a/public/terrain/19/858592/353786.terrain b/public/terrain/19/858592/353786.terrain new file mode 100644 index 000000000..737b682ba Binary files /dev/null and b/public/terrain/19/858592/353786.terrain differ diff --git a/public/terrain/19/858592/353787.terrain b/public/terrain/19/858592/353787.terrain new file mode 100644 index 000000000..e5a6d11a9 Binary files /dev/null and b/public/terrain/19/858592/353787.terrain differ diff --git a/public/terrain/19/858592/353788.terrain b/public/terrain/19/858592/353788.terrain new file mode 100644 index 000000000..d5995831b Binary files /dev/null and b/public/terrain/19/858592/353788.terrain differ diff --git a/public/terrain/19/858592/353789.terrain b/public/terrain/19/858592/353789.terrain new file mode 100644 index 000000000..02f1638b9 Binary files /dev/null and b/public/terrain/19/858592/353789.terrain differ diff --git a/public/terrain/19/858592/353790.terrain b/public/terrain/19/858592/353790.terrain new file mode 100644 index 000000000..82a6d0e84 Binary files /dev/null and b/public/terrain/19/858592/353790.terrain differ diff --git a/public/terrain/19/858592/353791.terrain b/public/terrain/19/858592/353791.terrain new file mode 100644 index 000000000..dae98d3e4 Binary files /dev/null and b/public/terrain/19/858592/353791.terrain differ diff --git a/public/terrain/19/858592/353792.terrain b/public/terrain/19/858592/353792.terrain new file mode 100644 index 000000000..f704c89b2 Binary files /dev/null and b/public/terrain/19/858592/353792.terrain differ diff --git a/public/terrain/19/858592/353793.terrain b/public/terrain/19/858592/353793.terrain new file mode 100644 index 000000000..563d79635 Binary files /dev/null and b/public/terrain/19/858592/353793.terrain differ diff --git a/public/terrain/19/858592/353794.terrain b/public/terrain/19/858592/353794.terrain new file mode 100644 index 000000000..5f18cca71 Binary files /dev/null and b/public/terrain/19/858592/353794.terrain differ diff --git a/public/terrain/19/858592/353795.terrain b/public/terrain/19/858592/353795.terrain new file mode 100644 index 000000000..25aca5457 Binary files /dev/null and b/public/terrain/19/858592/353795.terrain differ diff --git a/public/terrain/19/858592/353796.terrain b/public/terrain/19/858592/353796.terrain new file mode 100644 index 000000000..9af4115c5 Binary files /dev/null and b/public/terrain/19/858592/353796.terrain differ diff --git a/public/terrain/19/858592/353797.terrain b/public/terrain/19/858592/353797.terrain new file mode 100644 index 000000000..0af705ac5 Binary files /dev/null and b/public/terrain/19/858592/353797.terrain differ diff --git a/public/terrain/19/858592/353798.terrain b/public/terrain/19/858592/353798.terrain new file mode 100644 index 000000000..cf2e1e68a Binary files /dev/null and b/public/terrain/19/858592/353798.terrain differ diff --git a/public/terrain/19/858592/353799.terrain b/public/terrain/19/858592/353799.terrain new file mode 100644 index 000000000..6466ea340 Binary files /dev/null and b/public/terrain/19/858592/353799.terrain differ diff --git a/public/terrain/19/858592/353800.terrain b/public/terrain/19/858592/353800.terrain new file mode 100644 index 000000000..236322727 Binary files /dev/null and b/public/terrain/19/858592/353800.terrain differ diff --git a/public/terrain/19/858592/353801.terrain b/public/terrain/19/858592/353801.terrain new file mode 100644 index 000000000..f1cfedb97 Binary files /dev/null and b/public/terrain/19/858592/353801.terrain differ diff --git a/public/terrain/19/858592/353802.terrain b/public/terrain/19/858592/353802.terrain new file mode 100644 index 000000000..1d757540a Binary files /dev/null and b/public/terrain/19/858592/353802.terrain differ diff --git a/public/terrain/19/858592/353803.terrain b/public/terrain/19/858592/353803.terrain new file mode 100644 index 000000000..f3001eee8 Binary files /dev/null and b/public/terrain/19/858592/353803.terrain differ diff --git a/public/terrain/19/858592/353804.terrain b/public/terrain/19/858592/353804.terrain new file mode 100644 index 000000000..c41fba652 Binary files /dev/null and b/public/terrain/19/858592/353804.terrain differ diff --git a/public/terrain/19/858592/353805.terrain b/public/terrain/19/858592/353805.terrain new file mode 100644 index 000000000..2c4ee4361 Binary files /dev/null and b/public/terrain/19/858592/353805.terrain differ diff --git a/public/terrain/19/858592/353806.terrain b/public/terrain/19/858592/353806.terrain new file mode 100644 index 000000000..db1ff253a Binary files /dev/null and b/public/terrain/19/858592/353806.terrain differ diff --git a/public/terrain/19/858592/353807.terrain b/public/terrain/19/858592/353807.terrain new file mode 100644 index 000000000..20210ec45 Binary files /dev/null and b/public/terrain/19/858592/353807.terrain differ diff --git a/public/terrain/19/858592/353808.terrain b/public/terrain/19/858592/353808.terrain new file mode 100644 index 000000000..91e39fcd4 Binary files /dev/null and b/public/terrain/19/858592/353808.terrain differ diff --git a/public/terrain/19/858592/353809.terrain b/public/terrain/19/858592/353809.terrain new file mode 100644 index 000000000..52d50ea4c Binary files /dev/null and b/public/terrain/19/858592/353809.terrain differ diff --git a/public/terrain/19/858592/353810.terrain b/public/terrain/19/858592/353810.terrain new file mode 100644 index 000000000..4eacaaa1e Binary files /dev/null and b/public/terrain/19/858592/353810.terrain differ diff --git a/public/terrain/19/858592/353811.terrain b/public/terrain/19/858592/353811.terrain new file mode 100644 index 000000000..c1747b9db Binary files /dev/null and b/public/terrain/19/858592/353811.terrain differ diff --git a/public/terrain/19/858592/353812.terrain b/public/terrain/19/858592/353812.terrain new file mode 100644 index 000000000..ea3680c39 Binary files /dev/null and b/public/terrain/19/858592/353812.terrain differ diff --git a/public/terrain/19/858592/353813.terrain b/public/terrain/19/858592/353813.terrain new file mode 100644 index 000000000..161b54272 Binary files /dev/null and b/public/terrain/19/858592/353813.terrain differ diff --git a/public/terrain/19/858592/353814.terrain b/public/terrain/19/858592/353814.terrain new file mode 100644 index 000000000..80614f068 Binary files /dev/null and b/public/terrain/19/858592/353814.terrain differ diff --git a/public/terrain/19/858592/353815.terrain b/public/terrain/19/858592/353815.terrain new file mode 100644 index 000000000..c3b8c15a6 Binary files /dev/null and b/public/terrain/19/858592/353815.terrain differ diff --git a/public/terrain/19/858592/353816.terrain b/public/terrain/19/858592/353816.terrain new file mode 100644 index 000000000..31651b047 Binary files /dev/null and b/public/terrain/19/858592/353816.terrain differ diff --git a/public/terrain/19/858592/353817.terrain b/public/terrain/19/858592/353817.terrain new file mode 100644 index 000000000..d7d1a732a Binary files /dev/null and b/public/terrain/19/858592/353817.terrain differ diff --git a/public/terrain/19/858592/353818.terrain b/public/terrain/19/858592/353818.terrain new file mode 100644 index 000000000..477b3162e Binary files /dev/null and b/public/terrain/19/858592/353818.terrain differ diff --git a/public/terrain/19/858592/353819.terrain b/public/terrain/19/858592/353819.terrain new file mode 100644 index 000000000..7e038d7aa Binary files /dev/null and b/public/terrain/19/858592/353819.terrain differ diff --git a/public/terrain/19/858592/353820.terrain b/public/terrain/19/858592/353820.terrain new file mode 100644 index 000000000..c2fc2f045 Binary files /dev/null and b/public/terrain/19/858592/353820.terrain differ diff --git a/public/terrain/19/858592/353821.terrain b/public/terrain/19/858592/353821.terrain new file mode 100644 index 000000000..d2c1344dd Binary files /dev/null and b/public/terrain/19/858592/353821.terrain differ diff --git a/public/terrain/19/858592/353822.terrain b/public/terrain/19/858592/353822.terrain new file mode 100644 index 000000000..38672064d Binary files /dev/null and b/public/terrain/19/858592/353822.terrain differ diff --git a/public/terrain/19/858592/353823.terrain b/public/terrain/19/858592/353823.terrain new file mode 100644 index 000000000..48afa17db Binary files /dev/null and b/public/terrain/19/858592/353823.terrain differ diff --git a/public/terrain/19/858592/353824.terrain b/public/terrain/19/858592/353824.terrain new file mode 100644 index 000000000..826171ef2 Binary files /dev/null and b/public/terrain/19/858592/353824.terrain differ diff --git a/public/terrain/19/858592/353825.terrain b/public/terrain/19/858592/353825.terrain new file mode 100644 index 000000000..22fc627c8 Binary files /dev/null and b/public/terrain/19/858592/353825.terrain differ diff --git a/public/terrain/19/858592/353826.terrain b/public/terrain/19/858592/353826.terrain new file mode 100644 index 000000000..1c7079378 Binary files /dev/null and b/public/terrain/19/858592/353826.terrain differ diff --git a/public/terrain/19/858592/353827.terrain b/public/terrain/19/858592/353827.terrain new file mode 100644 index 000000000..ff5fc2c7b Binary files /dev/null and b/public/terrain/19/858592/353827.terrain differ diff --git a/public/terrain/19/858592/353828.terrain b/public/terrain/19/858592/353828.terrain new file mode 100644 index 000000000..205322435 Binary files /dev/null and b/public/terrain/19/858592/353828.terrain differ diff --git a/public/terrain/19/858592/353829.terrain b/public/terrain/19/858592/353829.terrain new file mode 100644 index 000000000..5f8a7465a Binary files /dev/null and b/public/terrain/19/858592/353829.terrain differ diff --git a/public/terrain/19/858592/353830.terrain b/public/terrain/19/858592/353830.terrain new file mode 100644 index 000000000..aed40206a Binary files /dev/null and b/public/terrain/19/858592/353830.terrain differ diff --git a/public/terrain/19/858592/353831.terrain b/public/terrain/19/858592/353831.terrain new file mode 100644 index 000000000..3ac151330 Binary files /dev/null and b/public/terrain/19/858592/353831.terrain differ diff --git a/public/terrain/19/858592/353832.terrain b/public/terrain/19/858592/353832.terrain new file mode 100644 index 000000000..846da423a Binary files /dev/null and b/public/terrain/19/858592/353832.terrain differ diff --git a/public/terrain/19/858592/353833.terrain b/public/terrain/19/858592/353833.terrain new file mode 100644 index 000000000..16884f005 Binary files /dev/null and b/public/terrain/19/858592/353833.terrain differ diff --git a/public/terrain/19/858592/353834.terrain b/public/terrain/19/858592/353834.terrain new file mode 100644 index 000000000..237de208c Binary files /dev/null and b/public/terrain/19/858592/353834.terrain differ diff --git a/public/terrain/19/858592/353835.terrain b/public/terrain/19/858592/353835.terrain new file mode 100644 index 000000000..218d56cd1 Binary files /dev/null and b/public/terrain/19/858592/353835.terrain differ diff --git a/public/terrain/19/858592/353836.terrain b/public/terrain/19/858592/353836.terrain new file mode 100644 index 000000000..79037ea3e Binary files /dev/null and b/public/terrain/19/858592/353836.terrain differ diff --git a/public/terrain/19/858592/353837.terrain b/public/terrain/19/858592/353837.terrain new file mode 100644 index 000000000..3a003a4a1 Binary files /dev/null and b/public/terrain/19/858592/353837.terrain differ diff --git a/public/terrain/19/858592/353838.terrain b/public/terrain/19/858592/353838.terrain new file mode 100644 index 000000000..23f809b69 Binary files /dev/null and b/public/terrain/19/858592/353838.terrain differ diff --git a/public/terrain/19/858592/353839.terrain b/public/terrain/19/858592/353839.terrain new file mode 100644 index 000000000..3c9db75f0 Binary files /dev/null and b/public/terrain/19/858592/353839.terrain differ diff --git a/public/terrain/19/858592/353840.terrain b/public/terrain/19/858592/353840.terrain new file mode 100644 index 000000000..7c2c09105 Binary files /dev/null and b/public/terrain/19/858592/353840.terrain differ diff --git a/public/terrain/19/858592/353841.terrain b/public/terrain/19/858592/353841.terrain new file mode 100644 index 000000000..a1520bf4c Binary files /dev/null and b/public/terrain/19/858592/353841.terrain differ diff --git a/public/terrain/19/858592/353842.terrain b/public/terrain/19/858592/353842.terrain new file mode 100644 index 000000000..f47df26a6 Binary files /dev/null and b/public/terrain/19/858592/353842.terrain differ diff --git a/public/terrain/19/858592/353843.terrain b/public/terrain/19/858592/353843.terrain new file mode 100644 index 000000000..97e90b723 Binary files /dev/null and b/public/terrain/19/858592/353843.terrain differ diff --git a/public/terrain/19/858592/353844.terrain b/public/terrain/19/858592/353844.terrain new file mode 100644 index 000000000..1c08f4c97 Binary files /dev/null and b/public/terrain/19/858592/353844.terrain differ diff --git a/public/terrain/19/858592/353845.terrain b/public/terrain/19/858592/353845.terrain new file mode 100644 index 000000000..85cde5c9a Binary files /dev/null and b/public/terrain/19/858592/353845.terrain differ diff --git a/public/terrain/19/858592/353846.terrain b/public/terrain/19/858592/353846.terrain new file mode 100644 index 000000000..e74f67473 Binary files /dev/null and b/public/terrain/19/858592/353846.terrain differ diff --git a/public/terrain/19/858592/353847.terrain b/public/terrain/19/858592/353847.terrain new file mode 100644 index 000000000..096a932c0 Binary files /dev/null and b/public/terrain/19/858592/353847.terrain differ diff --git a/public/terrain/19/858592/353848.terrain b/public/terrain/19/858592/353848.terrain new file mode 100644 index 000000000..146d0ae37 Binary files /dev/null and b/public/terrain/19/858592/353848.terrain differ diff --git a/public/terrain/19/858592/353849.terrain b/public/terrain/19/858592/353849.terrain new file mode 100644 index 000000000..03aaa04dd Binary files /dev/null and b/public/terrain/19/858592/353849.terrain differ diff --git a/public/terrain/19/858592/353850.terrain b/public/terrain/19/858592/353850.terrain new file mode 100644 index 000000000..370bcf550 Binary files /dev/null and b/public/terrain/19/858592/353850.terrain differ diff --git a/public/terrain/19/858592/353851.terrain b/public/terrain/19/858592/353851.terrain new file mode 100644 index 000000000..a3a3e79d5 Binary files /dev/null and b/public/terrain/19/858592/353851.terrain differ diff --git a/public/terrain/19/858592/353852.terrain b/public/terrain/19/858592/353852.terrain new file mode 100644 index 000000000..b88e774b4 Binary files /dev/null and b/public/terrain/19/858592/353852.terrain differ diff --git a/public/terrain/19/858592/353853.terrain b/public/terrain/19/858592/353853.terrain new file mode 100644 index 000000000..5f6d24957 Binary files /dev/null and b/public/terrain/19/858592/353853.terrain differ diff --git a/public/terrain/19/858592/353854.terrain b/public/terrain/19/858592/353854.terrain new file mode 100644 index 000000000..9868de4e7 Binary files /dev/null and b/public/terrain/19/858592/353854.terrain differ diff --git a/public/terrain/19/858592/353855.terrain b/public/terrain/19/858592/353855.terrain new file mode 100644 index 000000000..a84d7158f Binary files /dev/null and b/public/terrain/19/858592/353855.terrain differ diff --git a/public/terrain/19/858592/353856.terrain b/public/terrain/19/858592/353856.terrain new file mode 100644 index 000000000..bf32b33ef Binary files /dev/null and b/public/terrain/19/858592/353856.terrain differ diff --git a/public/terrain/19/858592/353857.terrain b/public/terrain/19/858592/353857.terrain new file mode 100644 index 000000000..fe4e6a3bd Binary files /dev/null and b/public/terrain/19/858592/353857.terrain differ diff --git a/public/terrain/19/858592/353858.terrain b/public/terrain/19/858592/353858.terrain new file mode 100644 index 000000000..a57896b98 Binary files /dev/null and b/public/terrain/19/858592/353858.terrain differ diff --git a/public/terrain/19/858592/353859.terrain b/public/terrain/19/858592/353859.terrain new file mode 100644 index 000000000..0039f5e6d Binary files /dev/null and b/public/terrain/19/858592/353859.terrain differ diff --git a/public/terrain/19/858592/353860.terrain b/public/terrain/19/858592/353860.terrain new file mode 100644 index 000000000..3dbff7091 Binary files /dev/null and b/public/terrain/19/858592/353860.terrain differ diff --git a/public/terrain/19/858592/353861.terrain b/public/terrain/19/858592/353861.terrain new file mode 100644 index 000000000..91d06bd40 Binary files /dev/null and b/public/terrain/19/858592/353861.terrain differ diff --git a/public/terrain/19/858592/353862.terrain b/public/terrain/19/858592/353862.terrain new file mode 100644 index 000000000..ab5ee2c16 Binary files /dev/null and b/public/terrain/19/858592/353862.terrain differ diff --git a/public/terrain/19/858592/353863.terrain b/public/terrain/19/858592/353863.terrain new file mode 100644 index 000000000..4050710f8 Binary files /dev/null and b/public/terrain/19/858592/353863.terrain differ diff --git a/public/terrain/19/858592/353864.terrain b/public/terrain/19/858592/353864.terrain new file mode 100644 index 000000000..cffbc16b9 Binary files /dev/null and b/public/terrain/19/858592/353864.terrain differ diff --git a/public/terrain/19/858592/353865.terrain b/public/terrain/19/858592/353865.terrain new file mode 100644 index 000000000..c95ec71d3 Binary files /dev/null and b/public/terrain/19/858592/353865.terrain differ diff --git a/public/terrain/19/858592/353866.terrain b/public/terrain/19/858592/353866.terrain new file mode 100644 index 000000000..148fae05d Binary files /dev/null and b/public/terrain/19/858592/353866.terrain differ diff --git a/public/terrain/19/858592/353867.terrain b/public/terrain/19/858592/353867.terrain new file mode 100644 index 000000000..8ff46d189 Binary files /dev/null and b/public/terrain/19/858592/353867.terrain differ diff --git a/public/terrain/19/858592/353868.terrain b/public/terrain/19/858592/353868.terrain new file mode 100644 index 000000000..e7d12eaa9 Binary files /dev/null and b/public/terrain/19/858592/353868.terrain differ diff --git a/public/terrain/19/858592/353869.terrain b/public/terrain/19/858592/353869.terrain new file mode 100644 index 000000000..6a6e97954 Binary files /dev/null and b/public/terrain/19/858592/353869.terrain differ diff --git a/public/terrain/19/858592/353870.terrain b/public/terrain/19/858592/353870.terrain new file mode 100644 index 000000000..0340878c8 Binary files /dev/null and b/public/terrain/19/858592/353870.terrain differ diff --git a/public/terrain/19/858592/353871.terrain b/public/terrain/19/858592/353871.terrain new file mode 100644 index 000000000..84bebe736 Binary files /dev/null and b/public/terrain/19/858592/353871.terrain differ diff --git a/public/terrain/19/858592/353872.terrain b/public/terrain/19/858592/353872.terrain new file mode 100644 index 000000000..db9d7ae6d Binary files /dev/null and b/public/terrain/19/858592/353872.terrain differ diff --git a/public/terrain/19/858592/353873.terrain b/public/terrain/19/858592/353873.terrain new file mode 100644 index 000000000..c32c7591e Binary files /dev/null and b/public/terrain/19/858592/353873.terrain differ diff --git a/public/terrain/19/858592/353874.terrain b/public/terrain/19/858592/353874.terrain new file mode 100644 index 000000000..d431cc761 Binary files /dev/null and b/public/terrain/19/858592/353874.terrain differ diff --git a/public/terrain/19/858592/353875.terrain b/public/terrain/19/858592/353875.terrain new file mode 100644 index 000000000..f53ea6dc7 Binary files /dev/null and b/public/terrain/19/858592/353875.terrain differ diff --git a/public/terrain/19/858592/353876.terrain b/public/terrain/19/858592/353876.terrain new file mode 100644 index 000000000..6d170bbc3 Binary files /dev/null and b/public/terrain/19/858592/353876.terrain differ diff --git a/public/terrain/19/858592/353877.terrain b/public/terrain/19/858592/353877.terrain new file mode 100644 index 000000000..5199ad18e Binary files /dev/null and b/public/terrain/19/858592/353877.terrain differ diff --git a/public/terrain/19/858592/353878.terrain b/public/terrain/19/858592/353878.terrain new file mode 100644 index 000000000..6f9d1c566 Binary files /dev/null and b/public/terrain/19/858592/353878.terrain differ diff --git a/public/terrain/19/858592/353879.terrain b/public/terrain/19/858592/353879.terrain new file mode 100644 index 000000000..a03c27647 Binary files /dev/null and b/public/terrain/19/858592/353879.terrain differ diff --git a/public/terrain/19/858592/353880.terrain b/public/terrain/19/858592/353880.terrain new file mode 100644 index 000000000..7514195e1 Binary files /dev/null and b/public/terrain/19/858592/353880.terrain differ diff --git a/public/terrain/19/858592/353881.terrain b/public/terrain/19/858592/353881.terrain new file mode 100644 index 000000000..fff141802 Binary files /dev/null and b/public/terrain/19/858592/353881.terrain differ diff --git a/public/terrain/19/858592/353882.terrain b/public/terrain/19/858592/353882.terrain new file mode 100644 index 000000000..cc49fd9c1 Binary files /dev/null and b/public/terrain/19/858592/353882.terrain differ diff --git a/public/terrain/19/858592/353883.terrain b/public/terrain/19/858592/353883.terrain new file mode 100644 index 000000000..d928519f2 Binary files /dev/null and b/public/terrain/19/858592/353883.terrain differ diff --git a/public/terrain/19/858592/353884.terrain b/public/terrain/19/858592/353884.terrain new file mode 100644 index 000000000..2d370764a Binary files /dev/null and b/public/terrain/19/858592/353884.terrain differ diff --git a/public/terrain/19/858592/353885.terrain b/public/terrain/19/858592/353885.terrain new file mode 100644 index 000000000..aa6c9681e Binary files /dev/null and b/public/terrain/19/858592/353885.terrain differ diff --git a/public/terrain/19/858592/353886.terrain b/public/terrain/19/858592/353886.terrain new file mode 100644 index 000000000..f3d0584ba Binary files /dev/null and b/public/terrain/19/858592/353886.terrain differ diff --git a/public/terrain/19/858592/353887.terrain b/public/terrain/19/858592/353887.terrain new file mode 100644 index 000000000..86f60de36 Binary files /dev/null and b/public/terrain/19/858592/353887.terrain differ diff --git a/public/terrain/19/858592/353888.terrain b/public/terrain/19/858592/353888.terrain new file mode 100644 index 000000000..a8341368e Binary files /dev/null and b/public/terrain/19/858592/353888.terrain differ diff --git a/public/terrain/19/858592/353889.terrain b/public/terrain/19/858592/353889.terrain new file mode 100644 index 000000000..4e28c9e8f Binary files /dev/null and b/public/terrain/19/858592/353889.terrain differ diff --git a/public/terrain/19/858592/353890.terrain b/public/terrain/19/858592/353890.terrain new file mode 100644 index 000000000..185a85598 Binary files /dev/null and b/public/terrain/19/858592/353890.terrain differ diff --git a/public/terrain/19/858592/353891.terrain b/public/terrain/19/858592/353891.terrain new file mode 100644 index 000000000..1178c2210 Binary files /dev/null and b/public/terrain/19/858592/353891.terrain differ diff --git a/public/terrain/19/858592/353892.terrain b/public/terrain/19/858592/353892.terrain new file mode 100644 index 000000000..96f56155e Binary files /dev/null and b/public/terrain/19/858592/353892.terrain differ diff --git a/public/terrain/19/858592/353893.terrain b/public/terrain/19/858592/353893.terrain new file mode 100644 index 000000000..b963d7e96 Binary files /dev/null and b/public/terrain/19/858592/353893.terrain differ diff --git a/public/terrain/19/858592/353894.terrain b/public/terrain/19/858592/353894.terrain new file mode 100644 index 000000000..5941ff455 Binary files /dev/null and b/public/terrain/19/858592/353894.terrain differ diff --git a/public/terrain/19/858592/353895.terrain b/public/terrain/19/858592/353895.terrain new file mode 100644 index 000000000..d89b33ac3 Binary files /dev/null and b/public/terrain/19/858592/353895.terrain differ diff --git a/public/terrain/19/858592/353896.terrain b/public/terrain/19/858592/353896.terrain new file mode 100644 index 000000000..d90195d25 Binary files /dev/null and b/public/terrain/19/858592/353896.terrain differ diff --git a/public/terrain/19/858592/353897.terrain b/public/terrain/19/858592/353897.terrain new file mode 100644 index 000000000..3dd704048 Binary files /dev/null and b/public/terrain/19/858592/353897.terrain differ diff --git a/public/terrain/19/858592/353898.terrain b/public/terrain/19/858592/353898.terrain new file mode 100644 index 000000000..da2ac4671 Binary files /dev/null and b/public/terrain/19/858592/353898.terrain differ diff --git a/public/terrain/19/858592/353899.terrain b/public/terrain/19/858592/353899.terrain new file mode 100644 index 000000000..942141c04 Binary files /dev/null and b/public/terrain/19/858592/353899.terrain differ diff --git a/public/terrain/19/858592/353900.terrain b/public/terrain/19/858592/353900.terrain new file mode 100644 index 000000000..1eaba8b15 Binary files /dev/null and b/public/terrain/19/858592/353900.terrain differ diff --git a/public/terrain/19/858592/353901.terrain b/public/terrain/19/858592/353901.terrain new file mode 100644 index 000000000..29c3cd0b9 Binary files /dev/null and b/public/terrain/19/858592/353901.terrain differ diff --git a/public/terrain/19/858592/353902.terrain b/public/terrain/19/858592/353902.terrain new file mode 100644 index 000000000..f55b48aaf Binary files /dev/null and b/public/terrain/19/858592/353902.terrain differ diff --git a/public/terrain/19/858592/353903.terrain b/public/terrain/19/858592/353903.terrain new file mode 100644 index 000000000..36325cc24 Binary files /dev/null and b/public/terrain/19/858592/353903.terrain differ diff --git a/public/terrain/19/858592/353904.terrain b/public/terrain/19/858592/353904.terrain new file mode 100644 index 000000000..0cd137f73 Binary files /dev/null and b/public/terrain/19/858592/353904.terrain differ diff --git a/public/terrain/19/858592/353905.terrain b/public/terrain/19/858592/353905.terrain new file mode 100644 index 000000000..f49290fa7 Binary files /dev/null and b/public/terrain/19/858592/353905.terrain differ diff --git a/public/terrain/19/858592/353906.terrain b/public/terrain/19/858592/353906.terrain new file mode 100644 index 000000000..367161d63 Binary files /dev/null and b/public/terrain/19/858592/353906.terrain differ diff --git a/public/terrain/19/858592/353907.terrain b/public/terrain/19/858592/353907.terrain new file mode 100644 index 000000000..1fd9228b2 Binary files /dev/null and b/public/terrain/19/858592/353907.terrain differ diff --git a/public/terrain/19/858592/353908.terrain b/public/terrain/19/858592/353908.terrain new file mode 100644 index 000000000..5f946be76 Binary files /dev/null and b/public/terrain/19/858592/353908.terrain differ diff --git a/public/terrain/19/858592/353909.terrain b/public/terrain/19/858592/353909.terrain new file mode 100644 index 000000000..b0069dee6 Binary files /dev/null and b/public/terrain/19/858592/353909.terrain differ diff --git a/public/terrain/19/858592/353910.terrain b/public/terrain/19/858592/353910.terrain new file mode 100644 index 000000000..0382f7f52 Binary files /dev/null and b/public/terrain/19/858592/353910.terrain differ diff --git a/public/terrain/19/858592/353911.terrain b/public/terrain/19/858592/353911.terrain new file mode 100644 index 000000000..fe23255d9 Binary files /dev/null and b/public/terrain/19/858592/353911.terrain differ diff --git a/public/terrain/19/858592/353912.terrain b/public/terrain/19/858592/353912.terrain new file mode 100644 index 000000000..a94da9ef1 Binary files /dev/null and b/public/terrain/19/858592/353912.terrain differ diff --git a/public/terrain/19/858592/353913.terrain b/public/terrain/19/858592/353913.terrain new file mode 100644 index 000000000..ea4daab20 Binary files /dev/null and b/public/terrain/19/858592/353913.terrain differ diff --git a/public/terrain/19/858592/353914.terrain b/public/terrain/19/858592/353914.terrain new file mode 100644 index 000000000..395ec6475 Binary files /dev/null and b/public/terrain/19/858592/353914.terrain differ diff --git a/public/terrain/19/858592/353915.terrain b/public/terrain/19/858592/353915.terrain new file mode 100644 index 000000000..c286998d2 Binary files /dev/null and b/public/terrain/19/858592/353915.terrain differ diff --git a/public/terrain/19/858592/353916.terrain b/public/terrain/19/858592/353916.terrain new file mode 100644 index 000000000..3bcaf75ec Binary files /dev/null and b/public/terrain/19/858592/353916.terrain differ diff --git a/public/terrain/19/858592/353917.terrain b/public/terrain/19/858592/353917.terrain new file mode 100644 index 000000000..9bbe526d9 Binary files /dev/null and b/public/terrain/19/858592/353917.terrain differ diff --git a/public/terrain/19/858592/353918.terrain b/public/terrain/19/858592/353918.terrain new file mode 100644 index 000000000..ed5d8c88d Binary files /dev/null and b/public/terrain/19/858592/353918.terrain differ diff --git a/public/terrain/19/858592/353919.terrain b/public/terrain/19/858592/353919.terrain new file mode 100644 index 000000000..aeb6a2b4e Binary files /dev/null and b/public/terrain/19/858592/353919.terrain differ diff --git a/public/terrain/19/858592/353920.terrain b/public/terrain/19/858592/353920.terrain new file mode 100644 index 000000000..8e22be95d Binary files /dev/null and b/public/terrain/19/858592/353920.terrain differ diff --git a/public/terrain/19/858592/353921.terrain b/public/terrain/19/858592/353921.terrain new file mode 100644 index 000000000..a18866954 Binary files /dev/null and b/public/terrain/19/858592/353921.terrain differ diff --git a/public/terrain/19/858592/353922.terrain b/public/terrain/19/858592/353922.terrain new file mode 100644 index 000000000..a73c34607 Binary files /dev/null and b/public/terrain/19/858592/353922.terrain differ diff --git a/public/terrain/19/858592/353923.terrain b/public/terrain/19/858592/353923.terrain new file mode 100644 index 000000000..c9999e0a0 Binary files /dev/null and b/public/terrain/19/858592/353923.terrain differ diff --git a/public/terrain/19/858592/353924.terrain b/public/terrain/19/858592/353924.terrain new file mode 100644 index 000000000..9a1e5d7c4 Binary files /dev/null and b/public/terrain/19/858592/353924.terrain differ diff --git a/public/terrain/19/858592/353925.terrain b/public/terrain/19/858592/353925.terrain new file mode 100644 index 000000000..f361f0548 Binary files /dev/null and b/public/terrain/19/858592/353925.terrain differ diff --git a/public/terrain/19/858592/353926.terrain b/public/terrain/19/858592/353926.terrain new file mode 100644 index 000000000..852345656 Binary files /dev/null and b/public/terrain/19/858592/353926.terrain differ diff --git a/public/terrain/19/858592/353927.terrain b/public/terrain/19/858592/353927.terrain new file mode 100644 index 000000000..9117c12a7 Binary files /dev/null and b/public/terrain/19/858592/353927.terrain differ diff --git a/public/terrain/19/858592/353928.terrain b/public/terrain/19/858592/353928.terrain new file mode 100644 index 000000000..b4df5bea6 Binary files /dev/null and b/public/terrain/19/858592/353928.terrain differ diff --git a/public/terrain/19/858592/353929.terrain b/public/terrain/19/858592/353929.terrain new file mode 100644 index 000000000..309dc03af Binary files /dev/null and b/public/terrain/19/858592/353929.terrain differ diff --git a/public/terrain/19/858592/353930.terrain b/public/terrain/19/858592/353930.terrain new file mode 100644 index 000000000..f7ca7bdcf Binary files /dev/null and b/public/terrain/19/858592/353930.terrain differ diff --git a/public/terrain/19/858592/353931.terrain b/public/terrain/19/858592/353931.terrain new file mode 100644 index 000000000..68a99db05 Binary files /dev/null and b/public/terrain/19/858592/353931.terrain differ diff --git a/public/terrain/19/858592/353932.terrain b/public/terrain/19/858592/353932.terrain new file mode 100644 index 000000000..4ae3d3357 Binary files /dev/null and b/public/terrain/19/858592/353932.terrain differ diff --git a/public/terrain/19/858592/353933.terrain b/public/terrain/19/858592/353933.terrain new file mode 100644 index 000000000..b7a5a529a Binary files /dev/null and b/public/terrain/19/858592/353933.terrain differ diff --git a/public/terrain/19/858592/353934.terrain b/public/terrain/19/858592/353934.terrain new file mode 100644 index 000000000..36fc61935 Binary files /dev/null and b/public/terrain/19/858592/353934.terrain differ diff --git a/public/terrain/19/858592/353935.terrain b/public/terrain/19/858592/353935.terrain new file mode 100644 index 000000000..2637a1680 Binary files /dev/null and b/public/terrain/19/858592/353935.terrain differ diff --git a/public/terrain/19/858592/353936.terrain b/public/terrain/19/858592/353936.terrain new file mode 100644 index 000000000..94815a70f Binary files /dev/null and b/public/terrain/19/858592/353936.terrain differ diff --git a/public/terrain/19/858592/353937.terrain b/public/terrain/19/858592/353937.terrain new file mode 100644 index 000000000..9c10f4d92 Binary files /dev/null and b/public/terrain/19/858592/353937.terrain differ diff --git a/public/terrain/19/858592/353938.terrain b/public/terrain/19/858592/353938.terrain new file mode 100644 index 000000000..31fe3f54b Binary files /dev/null and b/public/terrain/19/858592/353938.terrain differ diff --git a/public/terrain/19/858592/353939.terrain b/public/terrain/19/858592/353939.terrain new file mode 100644 index 000000000..42133cc10 Binary files /dev/null and b/public/terrain/19/858592/353939.terrain differ diff --git a/public/terrain/19/858592/353940.terrain b/public/terrain/19/858592/353940.terrain new file mode 100644 index 000000000..5cb1a53fc Binary files /dev/null and b/public/terrain/19/858592/353940.terrain differ diff --git a/public/terrain/19/858592/353941.terrain b/public/terrain/19/858592/353941.terrain new file mode 100644 index 000000000..05ed1b87e Binary files /dev/null and b/public/terrain/19/858592/353941.terrain differ diff --git a/public/terrain/19/858592/353942.terrain b/public/terrain/19/858592/353942.terrain new file mode 100644 index 000000000..d04376992 Binary files /dev/null and b/public/terrain/19/858592/353942.terrain differ diff --git a/public/terrain/19/858592/353943.terrain b/public/terrain/19/858592/353943.terrain new file mode 100644 index 000000000..ad90628a1 Binary files /dev/null and b/public/terrain/19/858592/353943.terrain differ diff --git a/public/terrain/19/858592/353944.terrain b/public/terrain/19/858592/353944.terrain new file mode 100644 index 000000000..12bb0777a Binary files /dev/null and b/public/terrain/19/858592/353944.terrain differ diff --git a/public/terrain/19/858592/353945.terrain b/public/terrain/19/858592/353945.terrain new file mode 100644 index 000000000..a36e6865a Binary files /dev/null and b/public/terrain/19/858592/353945.terrain differ diff --git a/public/terrain/19/858592/353946.terrain b/public/terrain/19/858592/353946.terrain new file mode 100644 index 000000000..f53c7db6f Binary files /dev/null and b/public/terrain/19/858592/353946.terrain differ diff --git a/public/terrain/19/858592/353947.terrain b/public/terrain/19/858592/353947.terrain new file mode 100644 index 000000000..4d70e257f Binary files /dev/null and b/public/terrain/19/858592/353947.terrain differ diff --git a/public/terrain/19/858592/353948.terrain b/public/terrain/19/858592/353948.terrain new file mode 100644 index 000000000..2947cbf8e Binary files /dev/null and b/public/terrain/19/858592/353948.terrain differ diff --git a/public/terrain/19/858592/353949.terrain b/public/terrain/19/858592/353949.terrain new file mode 100644 index 000000000..702665dfa Binary files /dev/null and b/public/terrain/19/858592/353949.terrain differ diff --git a/public/terrain/19/858592/353950.terrain b/public/terrain/19/858592/353950.terrain new file mode 100644 index 000000000..85baf0bc5 Binary files /dev/null and b/public/terrain/19/858592/353950.terrain differ diff --git a/public/terrain/19/858592/353951.terrain b/public/terrain/19/858592/353951.terrain new file mode 100644 index 000000000..f7479655a Binary files /dev/null and b/public/terrain/19/858592/353951.terrain differ diff --git a/public/terrain/19/858592/353952.terrain b/public/terrain/19/858592/353952.terrain new file mode 100644 index 000000000..148d80664 Binary files /dev/null and b/public/terrain/19/858592/353952.terrain differ diff --git a/public/terrain/19/858592/353953.terrain b/public/terrain/19/858592/353953.terrain new file mode 100644 index 000000000..87ad0c84e Binary files /dev/null and b/public/terrain/19/858592/353953.terrain differ diff --git a/public/terrain/19/858592/353954.terrain b/public/terrain/19/858592/353954.terrain new file mode 100644 index 000000000..92c088073 Binary files /dev/null and b/public/terrain/19/858592/353954.terrain differ diff --git a/public/terrain/19/858592/353955.terrain b/public/terrain/19/858592/353955.terrain new file mode 100644 index 000000000..47e8a2c21 Binary files /dev/null and b/public/terrain/19/858592/353955.terrain differ diff --git a/public/terrain/19/858592/353956.terrain b/public/terrain/19/858592/353956.terrain new file mode 100644 index 000000000..ba6efcc97 Binary files /dev/null and b/public/terrain/19/858592/353956.terrain differ diff --git a/public/terrain/19/858592/353957.terrain b/public/terrain/19/858592/353957.terrain new file mode 100644 index 000000000..51072493f Binary files /dev/null and b/public/terrain/19/858592/353957.terrain differ diff --git a/public/terrain/19/858592/353958.terrain b/public/terrain/19/858592/353958.terrain new file mode 100644 index 000000000..d070b4603 Binary files /dev/null and b/public/terrain/19/858592/353958.terrain differ diff --git a/public/terrain/19/858592/353959.terrain b/public/terrain/19/858592/353959.terrain new file mode 100644 index 000000000..f95857d00 Binary files /dev/null and b/public/terrain/19/858592/353959.terrain differ diff --git a/public/terrain/19/858592/353960.terrain b/public/terrain/19/858592/353960.terrain new file mode 100644 index 000000000..bb3768bbd Binary files /dev/null and b/public/terrain/19/858592/353960.terrain differ diff --git a/public/terrain/19/858592/353961.terrain b/public/terrain/19/858592/353961.terrain new file mode 100644 index 000000000..9fc26b254 Binary files /dev/null and b/public/terrain/19/858592/353961.terrain differ diff --git a/public/terrain/19/858592/353962.terrain b/public/terrain/19/858592/353962.terrain new file mode 100644 index 000000000..63e08ea7b Binary files /dev/null and b/public/terrain/19/858592/353962.terrain differ diff --git a/public/terrain/19/858592/353963.terrain b/public/terrain/19/858592/353963.terrain new file mode 100644 index 000000000..7997bc442 Binary files /dev/null and b/public/terrain/19/858592/353963.terrain differ diff --git a/public/terrain/19/858592/353964.terrain b/public/terrain/19/858592/353964.terrain new file mode 100644 index 000000000..ceb658f2d Binary files /dev/null and b/public/terrain/19/858592/353964.terrain differ diff --git a/public/terrain/19/858592/353965.terrain b/public/terrain/19/858592/353965.terrain new file mode 100644 index 000000000..ceb50f570 Binary files /dev/null and b/public/terrain/19/858592/353965.terrain differ diff --git a/public/terrain/19/858592/353966.terrain b/public/terrain/19/858592/353966.terrain new file mode 100644 index 000000000..b1e9acb6a Binary files /dev/null and b/public/terrain/19/858592/353966.terrain differ diff --git a/public/terrain/19/858592/353967.terrain b/public/terrain/19/858592/353967.terrain new file mode 100644 index 000000000..80ab57043 Binary files /dev/null and b/public/terrain/19/858592/353967.terrain differ diff --git a/public/terrain/19/858592/353968.terrain b/public/terrain/19/858592/353968.terrain new file mode 100644 index 000000000..2f3031267 Binary files /dev/null and b/public/terrain/19/858592/353968.terrain differ diff --git a/public/terrain/19/858592/353969.terrain b/public/terrain/19/858592/353969.terrain new file mode 100644 index 000000000..0c3a6b973 Binary files /dev/null and b/public/terrain/19/858592/353969.terrain differ diff --git a/public/terrain/19/858592/353970.terrain b/public/terrain/19/858592/353970.terrain new file mode 100644 index 000000000..6e5e196a2 Binary files /dev/null and b/public/terrain/19/858592/353970.terrain differ diff --git a/public/terrain/19/858592/353971.terrain b/public/terrain/19/858592/353971.terrain new file mode 100644 index 000000000..19c6de4d7 Binary files /dev/null and b/public/terrain/19/858592/353971.terrain differ diff --git a/public/terrain/19/858592/353972.terrain b/public/terrain/19/858592/353972.terrain new file mode 100644 index 000000000..7891395dd Binary files /dev/null and b/public/terrain/19/858592/353972.terrain differ diff --git a/public/terrain/19/858592/353973.terrain b/public/terrain/19/858592/353973.terrain new file mode 100644 index 000000000..0d8ae7719 Binary files /dev/null and b/public/terrain/19/858592/353973.terrain differ diff --git a/public/terrain/19/858592/353974.terrain b/public/terrain/19/858592/353974.terrain new file mode 100644 index 000000000..37dc0baf6 Binary files /dev/null and b/public/terrain/19/858592/353974.terrain differ diff --git a/public/terrain/19/858592/353975.terrain b/public/terrain/19/858592/353975.terrain new file mode 100644 index 000000000..5676aa925 Binary files /dev/null and b/public/terrain/19/858592/353975.terrain differ diff --git a/public/terrain/19/858592/353976.terrain b/public/terrain/19/858592/353976.terrain new file mode 100644 index 000000000..d6f2ee50c Binary files /dev/null and b/public/terrain/19/858592/353976.terrain differ diff --git a/public/terrain/19/858592/353977.terrain b/public/terrain/19/858592/353977.terrain new file mode 100644 index 000000000..c416ad948 Binary files /dev/null and b/public/terrain/19/858592/353977.terrain differ diff --git a/public/terrain/19/858592/353978.terrain b/public/terrain/19/858592/353978.terrain new file mode 100644 index 000000000..dc3ab34cf Binary files /dev/null and b/public/terrain/19/858592/353978.terrain differ diff --git a/public/terrain/19/858592/353979.terrain b/public/terrain/19/858592/353979.terrain new file mode 100644 index 000000000..8a23fa359 Binary files /dev/null and b/public/terrain/19/858592/353979.terrain differ diff --git a/public/terrain/19/858592/353980.terrain b/public/terrain/19/858592/353980.terrain new file mode 100644 index 000000000..4a16e4dbe Binary files /dev/null and b/public/terrain/19/858592/353980.terrain differ diff --git a/public/terrain/19/858592/353981.terrain b/public/terrain/19/858592/353981.terrain new file mode 100644 index 000000000..628887a3c Binary files /dev/null and b/public/terrain/19/858592/353981.terrain differ diff --git a/public/terrain/19/858592/353982.terrain b/public/terrain/19/858592/353982.terrain new file mode 100644 index 000000000..608ad21a1 Binary files /dev/null and b/public/terrain/19/858592/353982.terrain differ diff --git a/public/terrain/19/858592/353983.terrain b/public/terrain/19/858592/353983.terrain new file mode 100644 index 000000000..e69dfe11e Binary files /dev/null and b/public/terrain/19/858592/353983.terrain differ diff --git a/public/terrain/19/858592/353984.terrain b/public/terrain/19/858592/353984.terrain new file mode 100644 index 000000000..559388a19 Binary files /dev/null and b/public/terrain/19/858592/353984.terrain differ diff --git a/public/terrain/19/858592/353985.terrain b/public/terrain/19/858592/353985.terrain new file mode 100644 index 000000000..c1ba01a39 Binary files /dev/null and b/public/terrain/19/858592/353985.terrain differ diff --git a/public/terrain/19/858592/353986.terrain b/public/terrain/19/858592/353986.terrain new file mode 100644 index 000000000..cdfc362b2 Binary files /dev/null and b/public/terrain/19/858592/353986.terrain differ diff --git a/public/terrain/19/858592/353987.terrain b/public/terrain/19/858592/353987.terrain new file mode 100644 index 000000000..ffd0d26b5 Binary files /dev/null and b/public/terrain/19/858592/353987.terrain differ diff --git a/public/terrain/19/858592/353988.terrain b/public/terrain/19/858592/353988.terrain new file mode 100644 index 000000000..8c130352e Binary files /dev/null and b/public/terrain/19/858592/353988.terrain differ diff --git a/public/terrain/19/858592/353989.terrain b/public/terrain/19/858592/353989.terrain new file mode 100644 index 000000000..31be43a76 Binary files /dev/null and b/public/terrain/19/858592/353989.terrain differ diff --git a/public/terrain/19/858592/353990.terrain b/public/terrain/19/858592/353990.terrain new file mode 100644 index 000000000..d4830b475 Binary files /dev/null and b/public/terrain/19/858592/353990.terrain differ diff --git a/public/terrain/19/858592/353991.terrain b/public/terrain/19/858592/353991.terrain new file mode 100644 index 000000000..312528e7a Binary files /dev/null and b/public/terrain/19/858592/353991.terrain differ diff --git a/public/terrain/19/858592/353992.terrain b/public/terrain/19/858592/353992.terrain new file mode 100644 index 000000000..b8e96c4a6 Binary files /dev/null and b/public/terrain/19/858592/353992.terrain differ diff --git a/public/terrain/19/858592/353993.terrain b/public/terrain/19/858592/353993.terrain new file mode 100644 index 000000000..f934a5c71 Binary files /dev/null and b/public/terrain/19/858592/353993.terrain differ diff --git a/public/terrain/19/858592/353994.terrain b/public/terrain/19/858592/353994.terrain new file mode 100644 index 000000000..214d50808 Binary files /dev/null and b/public/terrain/19/858592/353994.terrain differ diff --git a/public/terrain/19/858592/353995.terrain b/public/terrain/19/858592/353995.terrain new file mode 100644 index 000000000..36e4bc67b Binary files /dev/null and b/public/terrain/19/858592/353995.terrain differ diff --git a/public/terrain/19/858592/353996.terrain b/public/terrain/19/858592/353996.terrain new file mode 100644 index 000000000..c05757e8a Binary files /dev/null and b/public/terrain/19/858592/353996.terrain differ diff --git a/public/terrain/19/858592/353997.terrain b/public/terrain/19/858592/353997.terrain new file mode 100644 index 000000000..7304fc8a1 Binary files /dev/null and b/public/terrain/19/858592/353997.terrain differ diff --git a/public/terrain/19/858592/353998.terrain b/public/terrain/19/858592/353998.terrain new file mode 100644 index 000000000..ad4a066b2 Binary files /dev/null and b/public/terrain/19/858592/353998.terrain differ diff --git a/public/terrain/19/858592/353999.terrain b/public/terrain/19/858592/353999.terrain new file mode 100644 index 000000000..ca8a9275b Binary files /dev/null and b/public/terrain/19/858592/353999.terrain differ diff --git a/public/terrain/19/858592/354000.terrain b/public/terrain/19/858592/354000.terrain new file mode 100644 index 000000000..5e21ce063 Binary files /dev/null and b/public/terrain/19/858592/354000.terrain differ diff --git a/public/terrain/19/858592/354001.terrain b/public/terrain/19/858592/354001.terrain new file mode 100644 index 000000000..6d4f936af Binary files /dev/null and b/public/terrain/19/858592/354001.terrain differ diff --git a/public/terrain/19/858592/354002.terrain b/public/terrain/19/858592/354002.terrain new file mode 100644 index 000000000..894151066 Binary files /dev/null and b/public/terrain/19/858592/354002.terrain differ diff --git a/public/terrain/19/858592/354003.terrain b/public/terrain/19/858592/354003.terrain new file mode 100644 index 000000000..dc5c56ef2 Binary files /dev/null and b/public/terrain/19/858592/354003.terrain differ diff --git a/public/terrain/19/858592/354004.terrain b/public/terrain/19/858592/354004.terrain new file mode 100644 index 000000000..3777dffb6 Binary files /dev/null and b/public/terrain/19/858592/354004.terrain differ diff --git a/public/terrain/19/858592/354005.terrain b/public/terrain/19/858592/354005.terrain new file mode 100644 index 000000000..d65fedc32 Binary files /dev/null and b/public/terrain/19/858592/354005.terrain differ diff --git a/public/terrain/19/858592/354006.terrain b/public/terrain/19/858592/354006.terrain new file mode 100644 index 000000000..a73070de3 Binary files /dev/null and b/public/terrain/19/858592/354006.terrain differ diff --git a/public/terrain/19/858592/354007.terrain b/public/terrain/19/858592/354007.terrain new file mode 100644 index 000000000..8e8a2d2d4 Binary files /dev/null and b/public/terrain/19/858592/354007.terrain differ diff --git a/public/terrain/19/858592/354008.terrain b/public/terrain/19/858592/354008.terrain new file mode 100644 index 000000000..9d872538d Binary files /dev/null and b/public/terrain/19/858592/354008.terrain differ diff --git a/public/terrain/19/858592/354009.terrain b/public/terrain/19/858592/354009.terrain new file mode 100644 index 000000000..5b2695be6 Binary files /dev/null and b/public/terrain/19/858592/354009.terrain differ diff --git a/public/terrain/19/858592/354010.terrain b/public/terrain/19/858592/354010.terrain new file mode 100644 index 000000000..0fdc39323 Binary files /dev/null and b/public/terrain/19/858592/354010.terrain differ diff --git a/public/terrain/19/858592/354011.terrain b/public/terrain/19/858592/354011.terrain new file mode 100644 index 000000000..203740966 Binary files /dev/null and b/public/terrain/19/858592/354011.terrain differ diff --git a/public/terrain/19/858592/354012.terrain b/public/terrain/19/858592/354012.terrain new file mode 100644 index 000000000..cd8a15cd9 Binary files /dev/null and b/public/terrain/19/858592/354012.terrain differ diff --git a/public/terrain/19/858592/354013.terrain b/public/terrain/19/858592/354013.terrain new file mode 100644 index 000000000..6ab27e6fc Binary files /dev/null and b/public/terrain/19/858592/354013.terrain differ diff --git a/public/terrain/19/858592/354014.terrain b/public/terrain/19/858592/354014.terrain new file mode 100644 index 000000000..6432459e6 Binary files /dev/null and b/public/terrain/19/858592/354014.terrain differ diff --git a/public/terrain/19/858592/354015.terrain b/public/terrain/19/858592/354015.terrain new file mode 100644 index 000000000..3b8380743 Binary files /dev/null and b/public/terrain/19/858592/354015.terrain differ diff --git a/public/terrain/19/858592/354016.terrain b/public/terrain/19/858592/354016.terrain new file mode 100644 index 000000000..536b0bf87 Binary files /dev/null and b/public/terrain/19/858592/354016.terrain differ diff --git a/public/terrain/19/858592/354017.terrain b/public/terrain/19/858592/354017.terrain new file mode 100644 index 000000000..0ebd68380 Binary files /dev/null and b/public/terrain/19/858592/354017.terrain differ diff --git a/public/terrain/19/858592/354018.terrain b/public/terrain/19/858592/354018.terrain new file mode 100644 index 000000000..9f8406e7c Binary files /dev/null and b/public/terrain/19/858592/354018.terrain differ diff --git a/public/terrain/19/858592/354019.terrain b/public/terrain/19/858592/354019.terrain new file mode 100644 index 000000000..5650851bf Binary files /dev/null and b/public/terrain/19/858592/354019.terrain differ diff --git a/public/terrain/19/858592/354020.terrain b/public/terrain/19/858592/354020.terrain new file mode 100644 index 000000000..7c335719e Binary files /dev/null and b/public/terrain/19/858592/354020.terrain differ diff --git a/public/terrain/19/858592/354021.terrain b/public/terrain/19/858592/354021.terrain new file mode 100644 index 000000000..feb234a96 Binary files /dev/null and b/public/terrain/19/858592/354021.terrain differ diff --git a/public/terrain/19/858592/354022.terrain b/public/terrain/19/858592/354022.terrain new file mode 100644 index 000000000..af7b67881 Binary files /dev/null and b/public/terrain/19/858592/354022.terrain differ diff --git a/public/terrain/19/858592/354023.terrain b/public/terrain/19/858592/354023.terrain new file mode 100644 index 000000000..f7a4ef15e Binary files /dev/null and b/public/terrain/19/858592/354023.terrain differ diff --git a/public/terrain/19/858592/354024.terrain b/public/terrain/19/858592/354024.terrain new file mode 100644 index 000000000..631b7ea6c Binary files /dev/null and b/public/terrain/19/858592/354024.terrain differ diff --git a/public/terrain/19/858592/354025.terrain b/public/terrain/19/858592/354025.terrain new file mode 100644 index 000000000..5da0a50d0 Binary files /dev/null and b/public/terrain/19/858592/354025.terrain differ diff --git a/public/terrain/19/858592/354026.terrain b/public/terrain/19/858592/354026.terrain new file mode 100644 index 000000000..30982bc60 Binary files /dev/null and b/public/terrain/19/858592/354026.terrain differ diff --git a/public/terrain/19/858592/354027.terrain b/public/terrain/19/858592/354027.terrain new file mode 100644 index 000000000..9a7c96c66 Binary files /dev/null and b/public/terrain/19/858592/354027.terrain differ diff --git a/public/terrain/19/858592/354028.terrain b/public/terrain/19/858592/354028.terrain new file mode 100644 index 000000000..d1d655a19 Binary files /dev/null and b/public/terrain/19/858592/354028.terrain differ diff --git a/public/terrain/19/858592/354029.terrain b/public/terrain/19/858592/354029.terrain new file mode 100644 index 000000000..746b51a58 Binary files /dev/null and b/public/terrain/19/858592/354029.terrain differ diff --git a/public/terrain/19/858592/354030.terrain b/public/terrain/19/858592/354030.terrain new file mode 100644 index 000000000..f6f551ae6 Binary files /dev/null and b/public/terrain/19/858592/354030.terrain differ diff --git a/public/terrain/19/858592/354031.terrain b/public/terrain/19/858592/354031.terrain new file mode 100644 index 000000000..a4500d35b Binary files /dev/null and b/public/terrain/19/858592/354031.terrain differ diff --git a/public/terrain/19/858592/354032.terrain b/public/terrain/19/858592/354032.terrain new file mode 100644 index 000000000..677fe68eb Binary files /dev/null and b/public/terrain/19/858592/354032.terrain differ diff --git a/public/terrain/19/858592/354033.terrain b/public/terrain/19/858592/354033.terrain new file mode 100644 index 000000000..1f278aa20 Binary files /dev/null and b/public/terrain/19/858592/354033.terrain differ diff --git a/public/terrain/19/858592/354034.terrain b/public/terrain/19/858592/354034.terrain new file mode 100644 index 000000000..d55f0145f Binary files /dev/null and b/public/terrain/19/858592/354034.terrain differ diff --git a/public/terrain/19/858592/354035.terrain b/public/terrain/19/858592/354035.terrain new file mode 100644 index 000000000..402c4a69c Binary files /dev/null and b/public/terrain/19/858592/354035.terrain differ diff --git a/public/terrain/19/858592/354036.terrain b/public/terrain/19/858592/354036.terrain new file mode 100644 index 000000000..07a72658c Binary files /dev/null and b/public/terrain/19/858592/354036.terrain differ diff --git a/public/terrain/19/858592/354037.terrain b/public/terrain/19/858592/354037.terrain new file mode 100644 index 000000000..d8a31efc4 Binary files /dev/null and b/public/terrain/19/858592/354037.terrain differ diff --git a/public/terrain/19/858592/354038.terrain b/public/terrain/19/858592/354038.terrain new file mode 100644 index 000000000..af9ac8291 Binary files /dev/null and b/public/terrain/19/858592/354038.terrain differ diff --git a/public/terrain/19/858592/354039.terrain b/public/terrain/19/858592/354039.terrain new file mode 100644 index 000000000..e6ba457eb Binary files /dev/null and b/public/terrain/19/858592/354039.terrain differ diff --git a/public/terrain/19/858592/354040.terrain b/public/terrain/19/858592/354040.terrain new file mode 100644 index 000000000..dce71a502 Binary files /dev/null and b/public/terrain/19/858592/354040.terrain differ diff --git a/public/terrain/19/858592/354041.terrain b/public/terrain/19/858592/354041.terrain new file mode 100644 index 000000000..19c9d14d4 Binary files /dev/null and b/public/terrain/19/858592/354041.terrain differ diff --git a/public/terrain/19/858592/354042.terrain b/public/terrain/19/858592/354042.terrain new file mode 100644 index 000000000..5635a34e9 Binary files /dev/null and b/public/terrain/19/858592/354042.terrain differ diff --git a/public/terrain/19/858592/354043.terrain b/public/terrain/19/858592/354043.terrain new file mode 100644 index 000000000..0a8786399 Binary files /dev/null and b/public/terrain/19/858592/354043.terrain differ diff --git a/public/terrain/19/858592/354044.terrain b/public/terrain/19/858592/354044.terrain new file mode 100644 index 000000000..05358335d Binary files /dev/null and b/public/terrain/19/858592/354044.terrain differ diff --git a/public/terrain/19/858592/354045.terrain b/public/terrain/19/858592/354045.terrain new file mode 100644 index 000000000..37c2c6844 Binary files /dev/null and b/public/terrain/19/858592/354045.terrain differ diff --git a/public/terrain/19/858592/354046.terrain b/public/terrain/19/858592/354046.terrain new file mode 100644 index 000000000..da345be02 Binary files /dev/null and b/public/terrain/19/858592/354046.terrain differ diff --git a/public/terrain/19/858592/354047.terrain b/public/terrain/19/858592/354047.terrain new file mode 100644 index 000000000..4afee2d73 Binary files /dev/null and b/public/terrain/19/858592/354047.terrain differ diff --git a/public/terrain/19/858592/354048.terrain b/public/terrain/19/858592/354048.terrain new file mode 100644 index 000000000..ea6c7608f Binary files /dev/null and b/public/terrain/19/858592/354048.terrain differ diff --git a/public/terrain/19/858592/354049.terrain b/public/terrain/19/858592/354049.terrain new file mode 100644 index 000000000..c13bc2a2b Binary files /dev/null and b/public/terrain/19/858592/354049.terrain differ diff --git a/public/terrain/19/858592/354050.terrain b/public/terrain/19/858592/354050.terrain new file mode 100644 index 000000000..5c08f36a0 Binary files /dev/null and b/public/terrain/19/858592/354050.terrain differ diff --git a/public/terrain/19/858592/354051.terrain b/public/terrain/19/858592/354051.terrain new file mode 100644 index 000000000..837bb1cdc Binary files /dev/null and b/public/terrain/19/858592/354051.terrain differ diff --git a/public/terrain/19/858592/354052.terrain b/public/terrain/19/858592/354052.terrain new file mode 100644 index 000000000..7a1d205d0 Binary files /dev/null and b/public/terrain/19/858592/354052.terrain differ diff --git a/public/terrain/19/858592/354053.terrain b/public/terrain/19/858592/354053.terrain new file mode 100644 index 000000000..4313f95a9 Binary files /dev/null and b/public/terrain/19/858592/354053.terrain differ diff --git a/public/terrain/19/858592/354054.terrain b/public/terrain/19/858592/354054.terrain new file mode 100644 index 000000000..b0e8b384b Binary files /dev/null and b/public/terrain/19/858592/354054.terrain differ diff --git a/public/terrain/19/858592/354055.terrain b/public/terrain/19/858592/354055.terrain new file mode 100644 index 000000000..35cdd0386 Binary files /dev/null and b/public/terrain/19/858592/354055.terrain differ diff --git a/public/terrain/19/858592/354056.terrain b/public/terrain/19/858592/354056.terrain new file mode 100644 index 000000000..68c445f17 Binary files /dev/null and b/public/terrain/19/858592/354056.terrain differ diff --git a/public/terrain/19/858592/354057.terrain b/public/terrain/19/858592/354057.terrain new file mode 100644 index 000000000..911cd2870 Binary files /dev/null and b/public/terrain/19/858592/354057.terrain differ diff --git a/public/terrain/19/858592/354058.terrain b/public/terrain/19/858592/354058.terrain new file mode 100644 index 000000000..4cac871d9 Binary files /dev/null and b/public/terrain/19/858592/354058.terrain differ diff --git a/public/terrain/19/858592/354059.terrain b/public/terrain/19/858592/354059.terrain new file mode 100644 index 000000000..c2513353d Binary files /dev/null and b/public/terrain/19/858592/354059.terrain differ diff --git a/public/terrain/19/858593/353743.terrain b/public/terrain/19/858593/353743.terrain new file mode 100644 index 000000000..f5d48afa8 Binary files /dev/null and b/public/terrain/19/858593/353743.terrain differ diff --git a/public/terrain/19/858593/353744.terrain b/public/terrain/19/858593/353744.terrain new file mode 100644 index 000000000..5c0360893 Binary files /dev/null and b/public/terrain/19/858593/353744.terrain differ diff --git a/public/terrain/19/858593/353745.terrain b/public/terrain/19/858593/353745.terrain new file mode 100644 index 000000000..ac3cb4c4b Binary files /dev/null and b/public/terrain/19/858593/353745.terrain differ diff --git a/public/terrain/19/858593/353746.terrain b/public/terrain/19/858593/353746.terrain new file mode 100644 index 000000000..4d150d8c4 Binary files /dev/null and b/public/terrain/19/858593/353746.terrain differ diff --git a/public/terrain/19/858593/353747.terrain b/public/terrain/19/858593/353747.terrain new file mode 100644 index 000000000..c62868a7b Binary files /dev/null and b/public/terrain/19/858593/353747.terrain differ diff --git a/public/terrain/19/858593/353748.terrain b/public/terrain/19/858593/353748.terrain new file mode 100644 index 000000000..a11676431 Binary files /dev/null and b/public/terrain/19/858593/353748.terrain differ diff --git a/public/terrain/19/858593/353749.terrain b/public/terrain/19/858593/353749.terrain new file mode 100644 index 000000000..0c3f01ee0 Binary files /dev/null and b/public/terrain/19/858593/353749.terrain differ diff --git a/public/terrain/19/858593/353750.terrain b/public/terrain/19/858593/353750.terrain new file mode 100644 index 000000000..126bf6a57 Binary files /dev/null and b/public/terrain/19/858593/353750.terrain differ diff --git a/public/terrain/19/858593/353751.terrain b/public/terrain/19/858593/353751.terrain new file mode 100644 index 000000000..9c9238fc4 Binary files /dev/null and b/public/terrain/19/858593/353751.terrain differ diff --git a/public/terrain/19/858593/353752.terrain b/public/terrain/19/858593/353752.terrain new file mode 100644 index 000000000..2429207a0 Binary files /dev/null and b/public/terrain/19/858593/353752.terrain differ diff --git a/public/terrain/19/858593/353753.terrain b/public/terrain/19/858593/353753.terrain new file mode 100644 index 000000000..ecd0b5bd8 Binary files /dev/null and b/public/terrain/19/858593/353753.terrain differ diff --git a/public/terrain/19/858593/353754.terrain b/public/terrain/19/858593/353754.terrain new file mode 100644 index 000000000..63cf6d911 Binary files /dev/null and b/public/terrain/19/858593/353754.terrain differ diff --git a/public/terrain/19/858593/353755.terrain b/public/terrain/19/858593/353755.terrain new file mode 100644 index 000000000..383a11a56 Binary files /dev/null and b/public/terrain/19/858593/353755.terrain differ diff --git a/public/terrain/19/858593/353756.terrain b/public/terrain/19/858593/353756.terrain new file mode 100644 index 000000000..d118d618a Binary files /dev/null and b/public/terrain/19/858593/353756.terrain differ diff --git a/public/terrain/19/858593/353757.terrain b/public/terrain/19/858593/353757.terrain new file mode 100644 index 000000000..82c2f51ac Binary files /dev/null and b/public/terrain/19/858593/353757.terrain differ diff --git a/public/terrain/19/858593/353758.terrain b/public/terrain/19/858593/353758.terrain new file mode 100644 index 000000000..f4a2ac99c Binary files /dev/null and b/public/terrain/19/858593/353758.terrain differ diff --git a/public/terrain/19/858593/353759.terrain b/public/terrain/19/858593/353759.terrain new file mode 100644 index 000000000..edf19b995 Binary files /dev/null and b/public/terrain/19/858593/353759.terrain differ diff --git a/public/terrain/19/858593/353760.terrain b/public/terrain/19/858593/353760.terrain new file mode 100644 index 000000000..75f31629f Binary files /dev/null and b/public/terrain/19/858593/353760.terrain differ diff --git a/public/terrain/19/858593/353761.terrain b/public/terrain/19/858593/353761.terrain new file mode 100644 index 000000000..6ad73e671 Binary files /dev/null and b/public/terrain/19/858593/353761.terrain differ diff --git a/public/terrain/19/858593/353762.terrain b/public/terrain/19/858593/353762.terrain new file mode 100644 index 000000000..fe08cbf72 Binary files /dev/null and b/public/terrain/19/858593/353762.terrain differ diff --git a/public/terrain/19/858593/353763.terrain b/public/terrain/19/858593/353763.terrain new file mode 100644 index 000000000..471db00bc Binary files /dev/null and b/public/terrain/19/858593/353763.terrain differ diff --git a/public/terrain/19/858593/353764.terrain b/public/terrain/19/858593/353764.terrain new file mode 100644 index 000000000..dc0d01f50 Binary files /dev/null and b/public/terrain/19/858593/353764.terrain differ diff --git a/public/terrain/19/858593/353765.terrain b/public/terrain/19/858593/353765.terrain new file mode 100644 index 000000000..ce55beecd Binary files /dev/null and b/public/terrain/19/858593/353765.terrain differ diff --git a/public/terrain/19/858593/353766.terrain b/public/terrain/19/858593/353766.terrain new file mode 100644 index 000000000..35b6e7374 Binary files /dev/null and b/public/terrain/19/858593/353766.terrain differ diff --git a/public/terrain/19/858593/353767.terrain b/public/terrain/19/858593/353767.terrain new file mode 100644 index 000000000..725c32f43 Binary files /dev/null and b/public/terrain/19/858593/353767.terrain differ diff --git a/public/terrain/19/858593/353768.terrain b/public/terrain/19/858593/353768.terrain new file mode 100644 index 000000000..3dcd4a0d4 Binary files /dev/null and b/public/terrain/19/858593/353768.terrain differ diff --git a/public/terrain/19/858593/353769.terrain b/public/terrain/19/858593/353769.terrain new file mode 100644 index 000000000..feab5f052 Binary files /dev/null and b/public/terrain/19/858593/353769.terrain differ diff --git a/public/terrain/19/858593/353770.terrain b/public/terrain/19/858593/353770.terrain new file mode 100644 index 000000000..42a3227fc Binary files /dev/null and b/public/terrain/19/858593/353770.terrain differ diff --git a/public/terrain/19/858593/353771.terrain b/public/terrain/19/858593/353771.terrain new file mode 100644 index 000000000..0536effe6 Binary files /dev/null and b/public/terrain/19/858593/353771.terrain differ diff --git a/public/terrain/19/858593/353772.terrain b/public/terrain/19/858593/353772.terrain new file mode 100644 index 000000000..9d8d45795 Binary files /dev/null and b/public/terrain/19/858593/353772.terrain differ diff --git a/public/terrain/19/858593/353773.terrain b/public/terrain/19/858593/353773.terrain new file mode 100644 index 000000000..5fb4b01b7 Binary files /dev/null and b/public/terrain/19/858593/353773.terrain differ diff --git a/public/terrain/19/858593/353774.terrain b/public/terrain/19/858593/353774.terrain new file mode 100644 index 000000000..26bb8db0b Binary files /dev/null and b/public/terrain/19/858593/353774.terrain differ diff --git a/public/terrain/19/858593/353775.terrain b/public/terrain/19/858593/353775.terrain new file mode 100644 index 000000000..dcb00049e Binary files /dev/null and b/public/terrain/19/858593/353775.terrain differ diff --git a/public/terrain/19/858593/353776.terrain b/public/terrain/19/858593/353776.terrain new file mode 100644 index 000000000..8baee3022 Binary files /dev/null and b/public/terrain/19/858593/353776.terrain differ diff --git a/public/terrain/19/858593/353777.terrain b/public/terrain/19/858593/353777.terrain new file mode 100644 index 000000000..370606680 Binary files /dev/null and b/public/terrain/19/858593/353777.terrain differ diff --git a/public/terrain/19/858593/353778.terrain b/public/terrain/19/858593/353778.terrain new file mode 100644 index 000000000..1022c9064 Binary files /dev/null and b/public/terrain/19/858593/353778.terrain differ diff --git a/public/terrain/19/858593/353779.terrain b/public/terrain/19/858593/353779.terrain new file mode 100644 index 000000000..a12b36d26 Binary files /dev/null and b/public/terrain/19/858593/353779.terrain differ diff --git a/public/terrain/19/858593/353780.terrain b/public/terrain/19/858593/353780.terrain new file mode 100644 index 000000000..08be4f982 Binary files /dev/null and b/public/terrain/19/858593/353780.terrain differ diff --git a/public/terrain/19/858593/353781.terrain b/public/terrain/19/858593/353781.terrain new file mode 100644 index 000000000..0d2eb905d Binary files /dev/null and b/public/terrain/19/858593/353781.terrain differ diff --git a/public/terrain/19/858593/353782.terrain b/public/terrain/19/858593/353782.terrain new file mode 100644 index 000000000..38f6c4eee Binary files /dev/null and b/public/terrain/19/858593/353782.terrain differ diff --git a/public/terrain/19/858593/353783.terrain b/public/terrain/19/858593/353783.terrain new file mode 100644 index 000000000..7dc094a90 Binary files /dev/null and b/public/terrain/19/858593/353783.terrain differ diff --git a/public/terrain/19/858593/353784.terrain b/public/terrain/19/858593/353784.terrain new file mode 100644 index 000000000..af317b65c Binary files /dev/null and b/public/terrain/19/858593/353784.terrain differ diff --git a/public/terrain/19/858593/353785.terrain b/public/terrain/19/858593/353785.terrain new file mode 100644 index 000000000..a1fdb8521 Binary files /dev/null and b/public/terrain/19/858593/353785.terrain differ diff --git a/public/terrain/19/858593/353786.terrain b/public/terrain/19/858593/353786.terrain new file mode 100644 index 000000000..e80db88d9 Binary files /dev/null and b/public/terrain/19/858593/353786.terrain differ diff --git a/public/terrain/19/858593/353787.terrain b/public/terrain/19/858593/353787.terrain new file mode 100644 index 000000000..32ddac78c Binary files /dev/null and b/public/terrain/19/858593/353787.terrain differ diff --git a/public/terrain/19/858593/353788.terrain b/public/terrain/19/858593/353788.terrain new file mode 100644 index 000000000..ce63d157c Binary files /dev/null and b/public/terrain/19/858593/353788.terrain differ diff --git a/public/terrain/19/858593/353789.terrain b/public/terrain/19/858593/353789.terrain new file mode 100644 index 000000000..1a804f10c Binary files /dev/null and b/public/terrain/19/858593/353789.terrain differ diff --git a/public/terrain/19/858593/353790.terrain b/public/terrain/19/858593/353790.terrain new file mode 100644 index 000000000..5cbd87ff4 Binary files /dev/null and b/public/terrain/19/858593/353790.terrain differ diff --git a/public/terrain/19/858593/353791.terrain b/public/terrain/19/858593/353791.terrain new file mode 100644 index 000000000..613e65c16 Binary files /dev/null and b/public/terrain/19/858593/353791.terrain differ diff --git a/public/terrain/19/858593/353792.terrain b/public/terrain/19/858593/353792.terrain new file mode 100644 index 000000000..1eddc8a77 Binary files /dev/null and b/public/terrain/19/858593/353792.terrain differ diff --git a/public/terrain/19/858593/353793.terrain b/public/terrain/19/858593/353793.terrain new file mode 100644 index 000000000..003dee226 Binary files /dev/null and b/public/terrain/19/858593/353793.terrain differ diff --git a/public/terrain/19/858593/353794.terrain b/public/terrain/19/858593/353794.terrain new file mode 100644 index 000000000..0f3e4757e Binary files /dev/null and b/public/terrain/19/858593/353794.terrain differ diff --git a/public/terrain/19/858593/353795.terrain b/public/terrain/19/858593/353795.terrain new file mode 100644 index 000000000..06d1acf93 Binary files /dev/null and b/public/terrain/19/858593/353795.terrain differ diff --git a/public/terrain/19/858593/353796.terrain b/public/terrain/19/858593/353796.terrain new file mode 100644 index 000000000..c6f3a363e Binary files /dev/null and b/public/terrain/19/858593/353796.terrain differ diff --git a/public/terrain/19/858593/353797.terrain b/public/terrain/19/858593/353797.terrain new file mode 100644 index 000000000..5dadf9389 Binary files /dev/null and b/public/terrain/19/858593/353797.terrain differ diff --git a/public/terrain/19/858593/353798.terrain b/public/terrain/19/858593/353798.terrain new file mode 100644 index 000000000..3b1b0fc3a Binary files /dev/null and b/public/terrain/19/858593/353798.terrain differ diff --git a/public/terrain/19/858593/353799.terrain b/public/terrain/19/858593/353799.terrain new file mode 100644 index 000000000..a977a221b Binary files /dev/null and b/public/terrain/19/858593/353799.terrain differ diff --git a/public/terrain/19/858593/353800.terrain b/public/terrain/19/858593/353800.terrain new file mode 100644 index 000000000..fa9cd95dd Binary files /dev/null and b/public/terrain/19/858593/353800.terrain differ diff --git a/public/terrain/19/858593/353801.terrain b/public/terrain/19/858593/353801.terrain new file mode 100644 index 000000000..e13297a65 Binary files /dev/null and b/public/terrain/19/858593/353801.terrain differ diff --git a/public/terrain/19/858593/353802.terrain b/public/terrain/19/858593/353802.terrain new file mode 100644 index 000000000..4ba2362e3 Binary files /dev/null and b/public/terrain/19/858593/353802.terrain differ diff --git a/public/terrain/19/858593/353803.terrain b/public/terrain/19/858593/353803.terrain new file mode 100644 index 000000000..0c88fdf17 Binary files /dev/null and b/public/terrain/19/858593/353803.terrain differ diff --git a/public/terrain/19/858593/353804.terrain b/public/terrain/19/858593/353804.terrain new file mode 100644 index 000000000..b0167082c Binary files /dev/null and b/public/terrain/19/858593/353804.terrain differ diff --git a/public/terrain/19/858593/353805.terrain b/public/terrain/19/858593/353805.terrain new file mode 100644 index 000000000..835b856a2 Binary files /dev/null and b/public/terrain/19/858593/353805.terrain differ diff --git a/public/terrain/19/858593/353806.terrain b/public/terrain/19/858593/353806.terrain new file mode 100644 index 000000000..61dfc5ada Binary files /dev/null and b/public/terrain/19/858593/353806.terrain differ diff --git a/public/terrain/19/858593/353807.terrain b/public/terrain/19/858593/353807.terrain new file mode 100644 index 000000000..f44a34e39 Binary files /dev/null and b/public/terrain/19/858593/353807.terrain differ diff --git a/public/terrain/19/858593/353808.terrain b/public/terrain/19/858593/353808.terrain new file mode 100644 index 000000000..0b70d7478 Binary files /dev/null and b/public/terrain/19/858593/353808.terrain differ diff --git a/public/terrain/19/858593/353809.terrain b/public/terrain/19/858593/353809.terrain new file mode 100644 index 000000000..2e0c6a06b Binary files /dev/null and b/public/terrain/19/858593/353809.terrain differ diff --git a/public/terrain/19/858593/353810.terrain b/public/terrain/19/858593/353810.terrain new file mode 100644 index 000000000..3e60ed32e Binary files /dev/null and b/public/terrain/19/858593/353810.terrain differ diff --git a/public/terrain/19/858593/353811.terrain b/public/terrain/19/858593/353811.terrain new file mode 100644 index 000000000..0c0c54aba Binary files /dev/null and b/public/terrain/19/858593/353811.terrain differ diff --git a/public/terrain/19/858593/353812.terrain b/public/terrain/19/858593/353812.terrain new file mode 100644 index 000000000..e21a260ac Binary files /dev/null and b/public/terrain/19/858593/353812.terrain differ diff --git a/public/terrain/19/858593/353813.terrain b/public/terrain/19/858593/353813.terrain new file mode 100644 index 000000000..b985237ef Binary files /dev/null and b/public/terrain/19/858593/353813.terrain differ diff --git a/public/terrain/19/858593/353814.terrain b/public/terrain/19/858593/353814.terrain new file mode 100644 index 000000000..7f7e58edc Binary files /dev/null and b/public/terrain/19/858593/353814.terrain differ diff --git a/public/terrain/19/858593/353815.terrain b/public/terrain/19/858593/353815.terrain new file mode 100644 index 000000000..9f6c8339e Binary files /dev/null and b/public/terrain/19/858593/353815.terrain differ diff --git a/public/terrain/19/858593/353816.terrain b/public/terrain/19/858593/353816.terrain new file mode 100644 index 000000000..5f80dafc3 Binary files /dev/null and b/public/terrain/19/858593/353816.terrain differ diff --git a/public/terrain/19/858593/353817.terrain b/public/terrain/19/858593/353817.terrain new file mode 100644 index 000000000..7ca4e4a4f Binary files /dev/null and b/public/terrain/19/858593/353817.terrain differ diff --git a/public/terrain/19/858593/353818.terrain b/public/terrain/19/858593/353818.terrain new file mode 100644 index 000000000..41fa44799 Binary files /dev/null and b/public/terrain/19/858593/353818.terrain differ diff --git a/public/terrain/19/858593/353819.terrain b/public/terrain/19/858593/353819.terrain new file mode 100644 index 000000000..dd287e26d Binary files /dev/null and b/public/terrain/19/858593/353819.terrain differ diff --git a/public/terrain/19/858593/353820.terrain b/public/terrain/19/858593/353820.terrain new file mode 100644 index 000000000..c0c223613 Binary files /dev/null and b/public/terrain/19/858593/353820.terrain differ diff --git a/public/terrain/19/858593/353821.terrain b/public/terrain/19/858593/353821.terrain new file mode 100644 index 000000000..eb83ef954 Binary files /dev/null and b/public/terrain/19/858593/353821.terrain differ diff --git a/public/terrain/19/858593/353822.terrain b/public/terrain/19/858593/353822.terrain new file mode 100644 index 000000000..bd0149f93 Binary files /dev/null and b/public/terrain/19/858593/353822.terrain differ diff --git a/public/terrain/19/858593/353823.terrain b/public/terrain/19/858593/353823.terrain new file mode 100644 index 000000000..3496a191c Binary files /dev/null and b/public/terrain/19/858593/353823.terrain differ diff --git a/public/terrain/19/858593/353824.terrain b/public/terrain/19/858593/353824.terrain new file mode 100644 index 000000000..282bf0015 Binary files /dev/null and b/public/terrain/19/858593/353824.terrain differ diff --git a/public/terrain/19/858593/353825.terrain b/public/terrain/19/858593/353825.terrain new file mode 100644 index 000000000..d0d228dd4 Binary files /dev/null and b/public/terrain/19/858593/353825.terrain differ diff --git a/public/terrain/19/858593/353826.terrain b/public/terrain/19/858593/353826.terrain new file mode 100644 index 000000000..f6b6c9376 Binary files /dev/null and b/public/terrain/19/858593/353826.terrain differ diff --git a/public/terrain/19/858593/353827.terrain b/public/terrain/19/858593/353827.terrain new file mode 100644 index 000000000..35077145b Binary files /dev/null and b/public/terrain/19/858593/353827.terrain differ diff --git a/public/terrain/19/858593/353828.terrain b/public/terrain/19/858593/353828.terrain new file mode 100644 index 000000000..e06ce6901 Binary files /dev/null and b/public/terrain/19/858593/353828.terrain differ diff --git a/public/terrain/19/858593/353829.terrain b/public/terrain/19/858593/353829.terrain new file mode 100644 index 000000000..31fa725e5 Binary files /dev/null and b/public/terrain/19/858593/353829.terrain differ diff --git a/public/terrain/19/858593/353830.terrain b/public/terrain/19/858593/353830.terrain new file mode 100644 index 000000000..171c32c02 Binary files /dev/null and b/public/terrain/19/858593/353830.terrain differ diff --git a/public/terrain/19/858593/353831.terrain b/public/terrain/19/858593/353831.terrain new file mode 100644 index 000000000..299fa5f4e Binary files /dev/null and b/public/terrain/19/858593/353831.terrain differ diff --git a/public/terrain/19/858593/353832.terrain b/public/terrain/19/858593/353832.terrain new file mode 100644 index 000000000..a6f9b2f6b Binary files /dev/null and b/public/terrain/19/858593/353832.terrain differ diff --git a/public/terrain/19/858593/353833.terrain b/public/terrain/19/858593/353833.terrain new file mode 100644 index 000000000..f3c18e9f4 Binary files /dev/null and b/public/terrain/19/858593/353833.terrain differ diff --git a/public/terrain/19/858593/353834.terrain b/public/terrain/19/858593/353834.terrain new file mode 100644 index 000000000..8bffc1819 Binary files /dev/null and b/public/terrain/19/858593/353834.terrain differ diff --git a/public/terrain/19/858593/353835.terrain b/public/terrain/19/858593/353835.terrain new file mode 100644 index 000000000..c7479adac Binary files /dev/null and b/public/terrain/19/858593/353835.terrain differ diff --git a/public/terrain/19/858593/353836.terrain b/public/terrain/19/858593/353836.terrain new file mode 100644 index 000000000..480eb2724 Binary files /dev/null and b/public/terrain/19/858593/353836.terrain differ diff --git a/public/terrain/19/858593/353837.terrain b/public/terrain/19/858593/353837.terrain new file mode 100644 index 000000000..d4aa8cbee Binary files /dev/null and b/public/terrain/19/858593/353837.terrain differ diff --git a/public/terrain/19/858593/353838.terrain b/public/terrain/19/858593/353838.terrain new file mode 100644 index 000000000..48b3a5f15 Binary files /dev/null and b/public/terrain/19/858593/353838.terrain differ diff --git a/public/terrain/19/858593/353839.terrain b/public/terrain/19/858593/353839.terrain new file mode 100644 index 000000000..c078c2279 Binary files /dev/null and b/public/terrain/19/858593/353839.terrain differ diff --git a/public/terrain/19/858593/353840.terrain b/public/terrain/19/858593/353840.terrain new file mode 100644 index 000000000..30d4ebbc9 Binary files /dev/null and b/public/terrain/19/858593/353840.terrain differ diff --git a/public/terrain/19/858593/353841.terrain b/public/terrain/19/858593/353841.terrain new file mode 100644 index 000000000..0020698f3 Binary files /dev/null and b/public/terrain/19/858593/353841.terrain differ diff --git a/public/terrain/19/858593/353842.terrain b/public/terrain/19/858593/353842.terrain new file mode 100644 index 000000000..48f82c824 Binary files /dev/null and b/public/terrain/19/858593/353842.terrain differ diff --git a/public/terrain/19/858593/353843.terrain b/public/terrain/19/858593/353843.terrain new file mode 100644 index 000000000..f9d685a06 Binary files /dev/null and b/public/terrain/19/858593/353843.terrain differ diff --git a/public/terrain/19/858593/353844.terrain b/public/terrain/19/858593/353844.terrain new file mode 100644 index 000000000..df6d676b1 Binary files /dev/null and b/public/terrain/19/858593/353844.terrain differ diff --git a/public/terrain/19/858593/353845.terrain b/public/terrain/19/858593/353845.terrain new file mode 100644 index 000000000..1dc314f17 Binary files /dev/null and b/public/terrain/19/858593/353845.terrain differ diff --git a/public/terrain/19/858593/353846.terrain b/public/terrain/19/858593/353846.terrain new file mode 100644 index 000000000..a076012e4 Binary files /dev/null and b/public/terrain/19/858593/353846.terrain differ diff --git a/public/terrain/19/858593/353847.terrain b/public/terrain/19/858593/353847.terrain new file mode 100644 index 000000000..91d2e2b57 Binary files /dev/null and b/public/terrain/19/858593/353847.terrain differ diff --git a/public/terrain/19/858593/353848.terrain b/public/terrain/19/858593/353848.terrain new file mode 100644 index 000000000..cb30b232a Binary files /dev/null and b/public/terrain/19/858593/353848.terrain differ diff --git a/public/terrain/19/858593/353849.terrain b/public/terrain/19/858593/353849.terrain new file mode 100644 index 000000000..48f35e658 Binary files /dev/null and b/public/terrain/19/858593/353849.terrain differ diff --git a/public/terrain/19/858593/353850.terrain b/public/terrain/19/858593/353850.terrain new file mode 100644 index 000000000..3e1b29046 Binary files /dev/null and b/public/terrain/19/858593/353850.terrain differ diff --git a/public/terrain/19/858593/353851.terrain b/public/terrain/19/858593/353851.terrain new file mode 100644 index 000000000..5f103691a Binary files /dev/null and b/public/terrain/19/858593/353851.terrain differ diff --git a/public/terrain/19/858593/353852.terrain b/public/terrain/19/858593/353852.terrain new file mode 100644 index 000000000..6263be12f Binary files /dev/null and b/public/terrain/19/858593/353852.terrain differ diff --git a/public/terrain/19/858593/353853.terrain b/public/terrain/19/858593/353853.terrain new file mode 100644 index 000000000..f394abf29 Binary files /dev/null and b/public/terrain/19/858593/353853.terrain differ diff --git a/public/terrain/19/858593/353854.terrain b/public/terrain/19/858593/353854.terrain new file mode 100644 index 000000000..0787f4464 Binary files /dev/null and b/public/terrain/19/858593/353854.terrain differ diff --git a/public/terrain/19/858593/353855.terrain b/public/terrain/19/858593/353855.terrain new file mode 100644 index 000000000..87ed818d2 Binary files /dev/null and b/public/terrain/19/858593/353855.terrain differ diff --git a/public/terrain/19/858593/353856.terrain b/public/terrain/19/858593/353856.terrain new file mode 100644 index 000000000..25c325bff Binary files /dev/null and b/public/terrain/19/858593/353856.terrain differ diff --git a/public/terrain/19/858593/353857.terrain b/public/terrain/19/858593/353857.terrain new file mode 100644 index 000000000..7f33b80cc Binary files /dev/null and b/public/terrain/19/858593/353857.terrain differ diff --git a/public/terrain/19/858593/353858.terrain b/public/terrain/19/858593/353858.terrain new file mode 100644 index 000000000..497446885 Binary files /dev/null and b/public/terrain/19/858593/353858.terrain differ diff --git a/public/terrain/19/858593/353859.terrain b/public/terrain/19/858593/353859.terrain new file mode 100644 index 000000000..b48fa8211 Binary files /dev/null and b/public/terrain/19/858593/353859.terrain differ diff --git a/public/terrain/19/858593/353860.terrain b/public/terrain/19/858593/353860.terrain new file mode 100644 index 000000000..40be8449c Binary files /dev/null and b/public/terrain/19/858593/353860.terrain differ diff --git a/public/terrain/19/858593/353861.terrain b/public/terrain/19/858593/353861.terrain new file mode 100644 index 000000000..09659409a Binary files /dev/null and b/public/terrain/19/858593/353861.terrain differ diff --git a/public/terrain/19/858593/353862.terrain b/public/terrain/19/858593/353862.terrain new file mode 100644 index 000000000..e0e4ad2b9 Binary files /dev/null and b/public/terrain/19/858593/353862.terrain differ diff --git a/public/terrain/19/858593/353863.terrain b/public/terrain/19/858593/353863.terrain new file mode 100644 index 000000000..c6144b4a5 Binary files /dev/null and b/public/terrain/19/858593/353863.terrain differ diff --git a/public/terrain/19/858593/353864.terrain b/public/terrain/19/858593/353864.terrain new file mode 100644 index 000000000..fb865e562 Binary files /dev/null and b/public/terrain/19/858593/353864.terrain differ diff --git a/public/terrain/19/858593/353865.terrain b/public/terrain/19/858593/353865.terrain new file mode 100644 index 000000000..c2898321b Binary files /dev/null and b/public/terrain/19/858593/353865.terrain differ diff --git a/public/terrain/19/858593/353866.terrain b/public/terrain/19/858593/353866.terrain new file mode 100644 index 000000000..2328550b9 Binary files /dev/null and b/public/terrain/19/858593/353866.terrain differ diff --git a/public/terrain/19/858593/353867.terrain b/public/terrain/19/858593/353867.terrain new file mode 100644 index 000000000..03dcda786 Binary files /dev/null and b/public/terrain/19/858593/353867.terrain differ diff --git a/public/terrain/19/858593/353868.terrain b/public/terrain/19/858593/353868.terrain new file mode 100644 index 000000000..184ccd76d Binary files /dev/null and b/public/terrain/19/858593/353868.terrain differ diff --git a/public/terrain/19/858593/353869.terrain b/public/terrain/19/858593/353869.terrain new file mode 100644 index 000000000..e0496e5ca Binary files /dev/null and b/public/terrain/19/858593/353869.terrain differ diff --git a/public/terrain/19/858593/353870.terrain b/public/terrain/19/858593/353870.terrain new file mode 100644 index 000000000..1b6277236 Binary files /dev/null and b/public/terrain/19/858593/353870.terrain differ diff --git a/public/terrain/19/858593/353871.terrain b/public/terrain/19/858593/353871.terrain new file mode 100644 index 000000000..c34a4f55a Binary files /dev/null and b/public/terrain/19/858593/353871.terrain differ diff --git a/public/terrain/19/858593/353872.terrain b/public/terrain/19/858593/353872.terrain new file mode 100644 index 000000000..e185add1a Binary files /dev/null and b/public/terrain/19/858593/353872.terrain differ diff --git a/public/terrain/19/858593/353873.terrain b/public/terrain/19/858593/353873.terrain new file mode 100644 index 000000000..21763ad6f Binary files /dev/null and b/public/terrain/19/858593/353873.terrain differ diff --git a/public/terrain/19/858593/353874.terrain b/public/terrain/19/858593/353874.terrain new file mode 100644 index 000000000..fadeaf41d Binary files /dev/null and b/public/terrain/19/858593/353874.terrain differ diff --git a/public/terrain/19/858593/353875.terrain b/public/terrain/19/858593/353875.terrain new file mode 100644 index 000000000..c2d225c35 Binary files /dev/null and b/public/terrain/19/858593/353875.terrain differ diff --git a/public/terrain/19/858593/353876.terrain b/public/terrain/19/858593/353876.terrain new file mode 100644 index 000000000..efc89356a Binary files /dev/null and b/public/terrain/19/858593/353876.terrain differ diff --git a/public/terrain/19/858593/353877.terrain b/public/terrain/19/858593/353877.terrain new file mode 100644 index 000000000..14e6e8dde Binary files /dev/null and b/public/terrain/19/858593/353877.terrain differ diff --git a/public/terrain/19/858593/353878.terrain b/public/terrain/19/858593/353878.terrain new file mode 100644 index 000000000..7989c10f8 Binary files /dev/null and b/public/terrain/19/858593/353878.terrain differ diff --git a/public/terrain/19/858593/353879.terrain b/public/terrain/19/858593/353879.terrain new file mode 100644 index 000000000..a87e70580 Binary files /dev/null and b/public/terrain/19/858593/353879.terrain differ diff --git a/public/terrain/19/858593/353880.terrain b/public/terrain/19/858593/353880.terrain new file mode 100644 index 000000000..e7c6b9c5f Binary files /dev/null and b/public/terrain/19/858593/353880.terrain differ diff --git a/public/terrain/19/858593/353881.terrain b/public/terrain/19/858593/353881.terrain new file mode 100644 index 000000000..8d7265690 Binary files /dev/null and b/public/terrain/19/858593/353881.terrain differ diff --git a/public/terrain/19/858593/353882.terrain b/public/terrain/19/858593/353882.terrain new file mode 100644 index 000000000..5bf57a749 Binary files /dev/null and b/public/terrain/19/858593/353882.terrain differ diff --git a/public/terrain/19/858593/353883.terrain b/public/terrain/19/858593/353883.terrain new file mode 100644 index 000000000..e78ec4623 Binary files /dev/null and b/public/terrain/19/858593/353883.terrain differ diff --git a/public/terrain/19/858593/353884.terrain b/public/terrain/19/858593/353884.terrain new file mode 100644 index 000000000..65451fbe9 Binary files /dev/null and b/public/terrain/19/858593/353884.terrain differ diff --git a/public/terrain/19/858593/353885.terrain b/public/terrain/19/858593/353885.terrain new file mode 100644 index 000000000..6821e4564 Binary files /dev/null and b/public/terrain/19/858593/353885.terrain differ diff --git a/public/terrain/19/858593/353886.terrain b/public/terrain/19/858593/353886.terrain new file mode 100644 index 000000000..99afaf131 Binary files /dev/null and b/public/terrain/19/858593/353886.terrain differ diff --git a/public/terrain/19/858593/353887.terrain b/public/terrain/19/858593/353887.terrain new file mode 100644 index 000000000..a2a170aa5 Binary files /dev/null and b/public/terrain/19/858593/353887.terrain differ diff --git a/public/terrain/19/858593/353888.terrain b/public/terrain/19/858593/353888.terrain new file mode 100644 index 000000000..ec187af92 Binary files /dev/null and b/public/terrain/19/858593/353888.terrain differ diff --git a/public/terrain/19/858593/353889.terrain b/public/terrain/19/858593/353889.terrain new file mode 100644 index 000000000..86ceb17e7 Binary files /dev/null and b/public/terrain/19/858593/353889.terrain differ diff --git a/public/terrain/19/858593/353890.terrain b/public/terrain/19/858593/353890.terrain new file mode 100644 index 000000000..07e9aa7c1 Binary files /dev/null and b/public/terrain/19/858593/353890.terrain differ diff --git a/public/terrain/19/858593/353891.terrain b/public/terrain/19/858593/353891.terrain new file mode 100644 index 000000000..82dd69a4d Binary files /dev/null and b/public/terrain/19/858593/353891.terrain differ diff --git a/public/terrain/19/858593/353892.terrain b/public/terrain/19/858593/353892.terrain new file mode 100644 index 000000000..14c0e9b89 Binary files /dev/null and b/public/terrain/19/858593/353892.terrain differ diff --git a/public/terrain/19/858593/353893.terrain b/public/terrain/19/858593/353893.terrain new file mode 100644 index 000000000..449d40527 Binary files /dev/null and b/public/terrain/19/858593/353893.terrain differ diff --git a/public/terrain/19/858593/353894.terrain b/public/terrain/19/858593/353894.terrain new file mode 100644 index 000000000..22fdfe053 Binary files /dev/null and b/public/terrain/19/858593/353894.terrain differ diff --git a/public/terrain/19/858593/353895.terrain b/public/terrain/19/858593/353895.terrain new file mode 100644 index 000000000..a35836a51 Binary files /dev/null and b/public/terrain/19/858593/353895.terrain differ diff --git a/public/terrain/19/858593/353896.terrain b/public/terrain/19/858593/353896.terrain new file mode 100644 index 000000000..97ef2dc47 Binary files /dev/null and b/public/terrain/19/858593/353896.terrain differ diff --git a/public/terrain/19/858593/353897.terrain b/public/terrain/19/858593/353897.terrain new file mode 100644 index 000000000..43ec9a34c Binary files /dev/null and b/public/terrain/19/858593/353897.terrain differ diff --git a/public/terrain/19/858593/353898.terrain b/public/terrain/19/858593/353898.terrain new file mode 100644 index 000000000..1eb8c101f Binary files /dev/null and b/public/terrain/19/858593/353898.terrain differ diff --git a/public/terrain/19/858593/353899.terrain b/public/terrain/19/858593/353899.terrain new file mode 100644 index 000000000..015a00a9e Binary files /dev/null and b/public/terrain/19/858593/353899.terrain differ diff --git a/public/terrain/19/858593/353900.terrain b/public/terrain/19/858593/353900.terrain new file mode 100644 index 000000000..1d5486f0d Binary files /dev/null and b/public/terrain/19/858593/353900.terrain differ diff --git a/public/terrain/19/858593/353901.terrain b/public/terrain/19/858593/353901.terrain new file mode 100644 index 000000000..f85d7f5a1 Binary files /dev/null and b/public/terrain/19/858593/353901.terrain differ diff --git a/public/terrain/19/858593/353902.terrain b/public/terrain/19/858593/353902.terrain new file mode 100644 index 000000000..aa3b07481 Binary files /dev/null and b/public/terrain/19/858593/353902.terrain differ diff --git a/public/terrain/19/858593/353903.terrain b/public/terrain/19/858593/353903.terrain new file mode 100644 index 000000000..eb29232f8 Binary files /dev/null and b/public/terrain/19/858593/353903.terrain differ diff --git a/public/terrain/19/858593/353904.terrain b/public/terrain/19/858593/353904.terrain new file mode 100644 index 000000000..e92748a8e Binary files /dev/null and b/public/terrain/19/858593/353904.terrain differ diff --git a/public/terrain/19/858593/353905.terrain b/public/terrain/19/858593/353905.terrain new file mode 100644 index 000000000..7bc7660dd Binary files /dev/null and b/public/terrain/19/858593/353905.terrain differ diff --git a/public/terrain/19/858593/353906.terrain b/public/terrain/19/858593/353906.terrain new file mode 100644 index 000000000..ae66e08fe Binary files /dev/null and b/public/terrain/19/858593/353906.terrain differ diff --git a/public/terrain/19/858593/353907.terrain b/public/terrain/19/858593/353907.terrain new file mode 100644 index 000000000..c707fc99d Binary files /dev/null and b/public/terrain/19/858593/353907.terrain differ diff --git a/public/terrain/19/858593/353908.terrain b/public/terrain/19/858593/353908.terrain new file mode 100644 index 000000000..5fb6a04a1 Binary files /dev/null and b/public/terrain/19/858593/353908.terrain differ diff --git a/public/terrain/19/858593/353909.terrain b/public/terrain/19/858593/353909.terrain new file mode 100644 index 000000000..a39c77599 Binary files /dev/null and b/public/terrain/19/858593/353909.terrain differ diff --git a/public/terrain/19/858593/353910.terrain b/public/terrain/19/858593/353910.terrain new file mode 100644 index 000000000..5a9955ef6 Binary files /dev/null and b/public/terrain/19/858593/353910.terrain differ diff --git a/public/terrain/19/858593/353911.terrain b/public/terrain/19/858593/353911.terrain new file mode 100644 index 000000000..89e60044c Binary files /dev/null and b/public/terrain/19/858593/353911.terrain differ diff --git a/public/terrain/19/858593/353912.terrain b/public/terrain/19/858593/353912.terrain new file mode 100644 index 000000000..57efd094a Binary files /dev/null and b/public/terrain/19/858593/353912.terrain differ diff --git a/public/terrain/19/858593/353913.terrain b/public/terrain/19/858593/353913.terrain new file mode 100644 index 000000000..3de80d787 Binary files /dev/null and b/public/terrain/19/858593/353913.terrain differ diff --git a/public/terrain/19/858593/353914.terrain b/public/terrain/19/858593/353914.terrain new file mode 100644 index 000000000..58eaf516a Binary files /dev/null and b/public/terrain/19/858593/353914.terrain differ diff --git a/public/terrain/19/858593/353915.terrain b/public/terrain/19/858593/353915.terrain new file mode 100644 index 000000000..fe104afd6 Binary files /dev/null and b/public/terrain/19/858593/353915.terrain differ diff --git a/public/terrain/19/858593/353916.terrain b/public/terrain/19/858593/353916.terrain new file mode 100644 index 000000000..77bac43ca Binary files /dev/null and b/public/terrain/19/858593/353916.terrain differ diff --git a/public/terrain/19/858593/353917.terrain b/public/terrain/19/858593/353917.terrain new file mode 100644 index 000000000..fff7e4719 Binary files /dev/null and b/public/terrain/19/858593/353917.terrain differ diff --git a/public/terrain/19/858593/353918.terrain b/public/terrain/19/858593/353918.terrain new file mode 100644 index 000000000..0b8f34614 Binary files /dev/null and b/public/terrain/19/858593/353918.terrain differ diff --git a/public/terrain/19/858593/353919.terrain b/public/terrain/19/858593/353919.terrain new file mode 100644 index 000000000..4f739912a Binary files /dev/null and b/public/terrain/19/858593/353919.terrain differ diff --git a/public/terrain/19/858593/353920.terrain b/public/terrain/19/858593/353920.terrain new file mode 100644 index 000000000..c6f722c2a Binary files /dev/null and b/public/terrain/19/858593/353920.terrain differ diff --git a/public/terrain/19/858593/353921.terrain b/public/terrain/19/858593/353921.terrain new file mode 100644 index 000000000..c05f9c2fb Binary files /dev/null and b/public/terrain/19/858593/353921.terrain differ diff --git a/public/terrain/19/858593/353922.terrain b/public/terrain/19/858593/353922.terrain new file mode 100644 index 000000000..9a9fa61fa Binary files /dev/null and b/public/terrain/19/858593/353922.terrain differ diff --git a/public/terrain/19/858593/353923.terrain b/public/terrain/19/858593/353923.terrain new file mode 100644 index 000000000..ef2dfdc0b Binary files /dev/null and b/public/terrain/19/858593/353923.terrain differ diff --git a/public/terrain/19/858593/353924.terrain b/public/terrain/19/858593/353924.terrain new file mode 100644 index 000000000..aa1e55b84 Binary files /dev/null and b/public/terrain/19/858593/353924.terrain differ diff --git a/public/terrain/19/858593/353925.terrain b/public/terrain/19/858593/353925.terrain new file mode 100644 index 000000000..dfd0bd6df Binary files /dev/null and b/public/terrain/19/858593/353925.terrain differ diff --git a/public/terrain/19/858593/353926.terrain b/public/terrain/19/858593/353926.terrain new file mode 100644 index 000000000..2e4cc724c Binary files /dev/null and b/public/terrain/19/858593/353926.terrain differ diff --git a/public/terrain/19/858593/353927.terrain b/public/terrain/19/858593/353927.terrain new file mode 100644 index 000000000..ccb6dc052 Binary files /dev/null and b/public/terrain/19/858593/353927.terrain differ diff --git a/public/terrain/19/858593/353928.terrain b/public/terrain/19/858593/353928.terrain new file mode 100644 index 000000000..60d0406a8 Binary files /dev/null and b/public/terrain/19/858593/353928.terrain differ diff --git a/public/terrain/19/858593/353929.terrain b/public/terrain/19/858593/353929.terrain new file mode 100644 index 000000000..9a4df1dcf Binary files /dev/null and b/public/terrain/19/858593/353929.terrain differ diff --git a/public/terrain/19/858593/353930.terrain b/public/terrain/19/858593/353930.terrain new file mode 100644 index 000000000..fff892a78 Binary files /dev/null and b/public/terrain/19/858593/353930.terrain differ diff --git a/public/terrain/19/858593/353931.terrain b/public/terrain/19/858593/353931.terrain new file mode 100644 index 000000000..73c155034 Binary files /dev/null and b/public/terrain/19/858593/353931.terrain differ diff --git a/public/terrain/19/858593/353932.terrain b/public/terrain/19/858593/353932.terrain new file mode 100644 index 000000000..98f5f62a9 Binary files /dev/null and b/public/terrain/19/858593/353932.terrain differ diff --git a/public/terrain/19/858593/353933.terrain b/public/terrain/19/858593/353933.terrain new file mode 100644 index 000000000..348b7ee77 Binary files /dev/null and b/public/terrain/19/858593/353933.terrain differ diff --git a/public/terrain/19/858593/353934.terrain b/public/terrain/19/858593/353934.terrain new file mode 100644 index 000000000..5cc265707 Binary files /dev/null and b/public/terrain/19/858593/353934.terrain differ diff --git a/public/terrain/19/858593/353935.terrain b/public/terrain/19/858593/353935.terrain new file mode 100644 index 000000000..5bb88f108 Binary files /dev/null and b/public/terrain/19/858593/353935.terrain differ diff --git a/public/terrain/19/858593/353936.terrain b/public/terrain/19/858593/353936.terrain new file mode 100644 index 000000000..eed459df7 Binary files /dev/null and b/public/terrain/19/858593/353936.terrain differ diff --git a/public/terrain/19/858593/353937.terrain b/public/terrain/19/858593/353937.terrain new file mode 100644 index 000000000..cbe20454f Binary files /dev/null and b/public/terrain/19/858593/353937.terrain differ diff --git a/public/terrain/19/858593/353938.terrain b/public/terrain/19/858593/353938.terrain new file mode 100644 index 000000000..5e68cb663 Binary files /dev/null and b/public/terrain/19/858593/353938.terrain differ diff --git a/public/terrain/19/858593/353939.terrain b/public/terrain/19/858593/353939.terrain new file mode 100644 index 000000000..ee2cde1c4 Binary files /dev/null and b/public/terrain/19/858593/353939.terrain differ diff --git a/public/terrain/19/858593/353940.terrain b/public/terrain/19/858593/353940.terrain new file mode 100644 index 000000000..14d99fc3f Binary files /dev/null and b/public/terrain/19/858593/353940.terrain differ diff --git a/public/terrain/19/858593/353941.terrain b/public/terrain/19/858593/353941.terrain new file mode 100644 index 000000000..1db531cd4 Binary files /dev/null and b/public/terrain/19/858593/353941.terrain differ diff --git a/public/terrain/19/858593/353942.terrain b/public/terrain/19/858593/353942.terrain new file mode 100644 index 000000000..11d867f57 Binary files /dev/null and b/public/terrain/19/858593/353942.terrain differ diff --git a/public/terrain/19/858593/353943.terrain b/public/terrain/19/858593/353943.terrain new file mode 100644 index 000000000..2125c1e91 Binary files /dev/null and b/public/terrain/19/858593/353943.terrain differ diff --git a/public/terrain/19/858593/353944.terrain b/public/terrain/19/858593/353944.terrain new file mode 100644 index 000000000..f3558bc4e Binary files /dev/null and b/public/terrain/19/858593/353944.terrain differ diff --git a/public/terrain/19/858593/353945.terrain b/public/terrain/19/858593/353945.terrain new file mode 100644 index 000000000..dfa9b40e8 Binary files /dev/null and b/public/terrain/19/858593/353945.terrain differ diff --git a/public/terrain/19/858593/353946.terrain b/public/terrain/19/858593/353946.terrain new file mode 100644 index 000000000..265363b5a Binary files /dev/null and b/public/terrain/19/858593/353946.terrain differ diff --git a/public/terrain/19/858593/353947.terrain b/public/terrain/19/858593/353947.terrain new file mode 100644 index 000000000..dd811f82c Binary files /dev/null and b/public/terrain/19/858593/353947.terrain differ diff --git a/public/terrain/19/858593/353948.terrain b/public/terrain/19/858593/353948.terrain new file mode 100644 index 000000000..89fe30056 Binary files /dev/null and b/public/terrain/19/858593/353948.terrain differ diff --git a/public/terrain/19/858593/353949.terrain b/public/terrain/19/858593/353949.terrain new file mode 100644 index 000000000..d6d582bb5 Binary files /dev/null and b/public/terrain/19/858593/353949.terrain differ diff --git a/public/terrain/19/858593/353950.terrain b/public/terrain/19/858593/353950.terrain new file mode 100644 index 000000000..fb5df16b4 Binary files /dev/null and b/public/terrain/19/858593/353950.terrain differ diff --git a/public/terrain/19/858593/353951.terrain b/public/terrain/19/858593/353951.terrain new file mode 100644 index 000000000..a36c5915b Binary files /dev/null and b/public/terrain/19/858593/353951.terrain differ diff --git a/public/terrain/19/858593/353952.terrain b/public/terrain/19/858593/353952.terrain new file mode 100644 index 000000000..05e6cdc20 Binary files /dev/null and b/public/terrain/19/858593/353952.terrain differ diff --git a/public/terrain/19/858593/353953.terrain b/public/terrain/19/858593/353953.terrain new file mode 100644 index 000000000..ff8df85d9 Binary files /dev/null and b/public/terrain/19/858593/353953.terrain differ diff --git a/public/terrain/19/858593/353954.terrain b/public/terrain/19/858593/353954.terrain new file mode 100644 index 000000000..b4f9e5f99 Binary files /dev/null and b/public/terrain/19/858593/353954.terrain differ diff --git a/public/terrain/19/858593/353955.terrain b/public/terrain/19/858593/353955.terrain new file mode 100644 index 000000000..178e1bda5 Binary files /dev/null and b/public/terrain/19/858593/353955.terrain differ diff --git a/public/terrain/19/858593/353956.terrain b/public/terrain/19/858593/353956.terrain new file mode 100644 index 000000000..17bfe32d6 Binary files /dev/null and b/public/terrain/19/858593/353956.terrain differ diff --git a/public/terrain/19/858593/353957.terrain b/public/terrain/19/858593/353957.terrain new file mode 100644 index 000000000..9ad1f3b9f Binary files /dev/null and b/public/terrain/19/858593/353957.terrain differ diff --git a/public/terrain/19/858593/353958.terrain b/public/terrain/19/858593/353958.terrain new file mode 100644 index 000000000..4fcd8d58a Binary files /dev/null and b/public/terrain/19/858593/353958.terrain differ diff --git a/public/terrain/19/858593/353959.terrain b/public/terrain/19/858593/353959.terrain new file mode 100644 index 000000000..bf4383f04 Binary files /dev/null and b/public/terrain/19/858593/353959.terrain differ diff --git a/public/terrain/19/858593/353960.terrain b/public/terrain/19/858593/353960.terrain new file mode 100644 index 000000000..27d40bf47 Binary files /dev/null and b/public/terrain/19/858593/353960.terrain differ diff --git a/public/terrain/19/858593/353961.terrain b/public/terrain/19/858593/353961.terrain new file mode 100644 index 000000000..21f70ae8b Binary files /dev/null and b/public/terrain/19/858593/353961.terrain differ diff --git a/public/terrain/19/858593/353962.terrain b/public/terrain/19/858593/353962.terrain new file mode 100644 index 000000000..4d4eafd43 Binary files /dev/null and b/public/terrain/19/858593/353962.terrain differ diff --git a/public/terrain/19/858593/353963.terrain b/public/terrain/19/858593/353963.terrain new file mode 100644 index 000000000..5803680ed Binary files /dev/null and b/public/terrain/19/858593/353963.terrain differ diff --git a/public/terrain/19/858593/353964.terrain b/public/terrain/19/858593/353964.terrain new file mode 100644 index 000000000..07f715771 Binary files /dev/null and b/public/terrain/19/858593/353964.terrain differ diff --git a/public/terrain/19/858593/353965.terrain b/public/terrain/19/858593/353965.terrain new file mode 100644 index 000000000..76fb4bcad Binary files /dev/null and b/public/terrain/19/858593/353965.terrain differ diff --git a/public/terrain/19/858593/353966.terrain b/public/terrain/19/858593/353966.terrain new file mode 100644 index 000000000..1bc433d42 Binary files /dev/null and b/public/terrain/19/858593/353966.terrain differ diff --git a/public/terrain/19/858593/353967.terrain b/public/terrain/19/858593/353967.terrain new file mode 100644 index 000000000..7645d32d3 Binary files /dev/null and b/public/terrain/19/858593/353967.terrain differ diff --git a/public/terrain/19/858593/353968.terrain b/public/terrain/19/858593/353968.terrain new file mode 100644 index 000000000..ec22a25d0 Binary files /dev/null and b/public/terrain/19/858593/353968.terrain differ diff --git a/public/terrain/19/858593/353969.terrain b/public/terrain/19/858593/353969.terrain new file mode 100644 index 000000000..1d87d97fb Binary files /dev/null and b/public/terrain/19/858593/353969.terrain differ diff --git a/public/terrain/19/858593/353970.terrain b/public/terrain/19/858593/353970.terrain new file mode 100644 index 000000000..c2488a65f Binary files /dev/null and b/public/terrain/19/858593/353970.terrain differ diff --git a/public/terrain/19/858593/353971.terrain b/public/terrain/19/858593/353971.terrain new file mode 100644 index 000000000..a682a3d24 Binary files /dev/null and b/public/terrain/19/858593/353971.terrain differ diff --git a/public/terrain/19/858593/353972.terrain b/public/terrain/19/858593/353972.terrain new file mode 100644 index 000000000..22beb8982 Binary files /dev/null and b/public/terrain/19/858593/353972.terrain differ diff --git a/public/terrain/19/858593/353973.terrain b/public/terrain/19/858593/353973.terrain new file mode 100644 index 000000000..73c1f9507 Binary files /dev/null and b/public/terrain/19/858593/353973.terrain differ diff --git a/public/terrain/19/858593/353974.terrain b/public/terrain/19/858593/353974.terrain new file mode 100644 index 000000000..4cc3195de Binary files /dev/null and b/public/terrain/19/858593/353974.terrain differ diff --git a/public/terrain/19/858593/353975.terrain b/public/terrain/19/858593/353975.terrain new file mode 100644 index 000000000..bcafe0d34 Binary files /dev/null and b/public/terrain/19/858593/353975.terrain differ diff --git a/public/terrain/19/858593/353976.terrain b/public/terrain/19/858593/353976.terrain new file mode 100644 index 000000000..b072a0622 Binary files /dev/null and b/public/terrain/19/858593/353976.terrain differ diff --git a/public/terrain/19/858593/353977.terrain b/public/terrain/19/858593/353977.terrain new file mode 100644 index 000000000..27f7e28a0 Binary files /dev/null and b/public/terrain/19/858593/353977.terrain differ diff --git a/public/terrain/19/858593/353978.terrain b/public/terrain/19/858593/353978.terrain new file mode 100644 index 000000000..7c2e9f9b7 Binary files /dev/null and b/public/terrain/19/858593/353978.terrain differ diff --git a/public/terrain/19/858593/353979.terrain b/public/terrain/19/858593/353979.terrain new file mode 100644 index 000000000..ca1857275 Binary files /dev/null and b/public/terrain/19/858593/353979.terrain differ diff --git a/public/terrain/19/858593/353980.terrain b/public/terrain/19/858593/353980.terrain new file mode 100644 index 000000000..f5f8a408a Binary files /dev/null and b/public/terrain/19/858593/353980.terrain differ diff --git a/public/terrain/19/858593/353981.terrain b/public/terrain/19/858593/353981.terrain new file mode 100644 index 000000000..2bd080110 Binary files /dev/null and b/public/terrain/19/858593/353981.terrain differ diff --git a/public/terrain/19/858593/353982.terrain b/public/terrain/19/858593/353982.terrain new file mode 100644 index 000000000..59e8f8ce2 Binary files /dev/null and b/public/terrain/19/858593/353982.terrain differ diff --git a/public/terrain/19/858593/353983.terrain b/public/terrain/19/858593/353983.terrain new file mode 100644 index 000000000..e97411178 Binary files /dev/null and b/public/terrain/19/858593/353983.terrain differ diff --git a/public/terrain/19/858593/353984.terrain b/public/terrain/19/858593/353984.terrain new file mode 100644 index 000000000..8d61e2e88 Binary files /dev/null and b/public/terrain/19/858593/353984.terrain differ diff --git a/public/terrain/19/858593/353985.terrain b/public/terrain/19/858593/353985.terrain new file mode 100644 index 000000000..5c11a163b Binary files /dev/null and b/public/terrain/19/858593/353985.terrain differ diff --git a/public/terrain/19/858593/353986.terrain b/public/terrain/19/858593/353986.terrain new file mode 100644 index 000000000..cbe07486f Binary files /dev/null and b/public/terrain/19/858593/353986.terrain differ diff --git a/public/terrain/19/858593/353987.terrain b/public/terrain/19/858593/353987.terrain new file mode 100644 index 000000000..a13e16a22 Binary files /dev/null and b/public/terrain/19/858593/353987.terrain differ diff --git a/public/terrain/19/858593/353988.terrain b/public/terrain/19/858593/353988.terrain new file mode 100644 index 000000000..2e5f18eec Binary files /dev/null and b/public/terrain/19/858593/353988.terrain differ diff --git a/public/terrain/19/858593/353989.terrain b/public/terrain/19/858593/353989.terrain new file mode 100644 index 000000000..cdeda93f1 Binary files /dev/null and b/public/terrain/19/858593/353989.terrain differ diff --git a/public/terrain/19/858593/353990.terrain b/public/terrain/19/858593/353990.terrain new file mode 100644 index 000000000..f901b422b Binary files /dev/null and b/public/terrain/19/858593/353990.terrain differ diff --git a/public/terrain/19/858593/353991.terrain b/public/terrain/19/858593/353991.terrain new file mode 100644 index 000000000..ad8298861 Binary files /dev/null and b/public/terrain/19/858593/353991.terrain differ diff --git a/public/terrain/19/858593/353992.terrain b/public/terrain/19/858593/353992.terrain new file mode 100644 index 000000000..41903cf69 Binary files /dev/null and b/public/terrain/19/858593/353992.terrain differ diff --git a/public/terrain/19/858593/353993.terrain b/public/terrain/19/858593/353993.terrain new file mode 100644 index 000000000..e3bd08b4a Binary files /dev/null and b/public/terrain/19/858593/353993.terrain differ diff --git a/public/terrain/19/858593/353994.terrain b/public/terrain/19/858593/353994.terrain new file mode 100644 index 000000000..653311a1e Binary files /dev/null and b/public/terrain/19/858593/353994.terrain differ diff --git a/public/terrain/19/858593/353995.terrain b/public/terrain/19/858593/353995.terrain new file mode 100644 index 000000000..67842bf38 Binary files /dev/null and b/public/terrain/19/858593/353995.terrain differ diff --git a/public/terrain/19/858593/353996.terrain b/public/terrain/19/858593/353996.terrain new file mode 100644 index 000000000..dd9629c3c Binary files /dev/null and b/public/terrain/19/858593/353996.terrain differ diff --git a/public/terrain/19/858593/353997.terrain b/public/terrain/19/858593/353997.terrain new file mode 100644 index 000000000..9f342fed6 Binary files /dev/null and b/public/terrain/19/858593/353997.terrain differ diff --git a/public/terrain/19/858593/353998.terrain b/public/terrain/19/858593/353998.terrain new file mode 100644 index 000000000..e2a6fe69e Binary files /dev/null and b/public/terrain/19/858593/353998.terrain differ diff --git a/public/terrain/19/858593/353999.terrain b/public/terrain/19/858593/353999.terrain new file mode 100644 index 000000000..8aee24b85 Binary files /dev/null and b/public/terrain/19/858593/353999.terrain differ diff --git a/public/terrain/19/858593/354000.terrain b/public/terrain/19/858593/354000.terrain new file mode 100644 index 000000000..78e4f3f69 Binary files /dev/null and b/public/terrain/19/858593/354000.terrain differ diff --git a/public/terrain/19/858593/354001.terrain b/public/terrain/19/858593/354001.terrain new file mode 100644 index 000000000..4d698f42a Binary files /dev/null and b/public/terrain/19/858593/354001.terrain differ diff --git a/public/terrain/19/858593/354002.terrain b/public/terrain/19/858593/354002.terrain new file mode 100644 index 000000000..bdc958949 Binary files /dev/null and b/public/terrain/19/858593/354002.terrain differ diff --git a/public/terrain/19/858593/354003.terrain b/public/terrain/19/858593/354003.terrain new file mode 100644 index 000000000..ce1d6f130 Binary files /dev/null and b/public/terrain/19/858593/354003.terrain differ diff --git a/public/terrain/19/858593/354004.terrain b/public/terrain/19/858593/354004.terrain new file mode 100644 index 000000000..a155d3852 Binary files /dev/null and b/public/terrain/19/858593/354004.terrain differ diff --git a/public/terrain/19/858593/354005.terrain b/public/terrain/19/858593/354005.terrain new file mode 100644 index 000000000..6df9cb16b Binary files /dev/null and b/public/terrain/19/858593/354005.terrain differ diff --git a/public/terrain/19/858593/354006.terrain b/public/terrain/19/858593/354006.terrain new file mode 100644 index 000000000..3153cb65b Binary files /dev/null and b/public/terrain/19/858593/354006.terrain differ diff --git a/public/terrain/19/858593/354007.terrain b/public/terrain/19/858593/354007.terrain new file mode 100644 index 000000000..e82118a4f Binary files /dev/null and b/public/terrain/19/858593/354007.terrain differ diff --git a/public/terrain/19/858593/354008.terrain b/public/terrain/19/858593/354008.terrain new file mode 100644 index 000000000..fb45bcee1 Binary files /dev/null and b/public/terrain/19/858593/354008.terrain differ diff --git a/public/terrain/19/858593/354009.terrain b/public/terrain/19/858593/354009.terrain new file mode 100644 index 000000000..ee51ba267 Binary files /dev/null and b/public/terrain/19/858593/354009.terrain differ diff --git a/public/terrain/19/858593/354010.terrain b/public/terrain/19/858593/354010.terrain new file mode 100644 index 000000000..8e83aba67 Binary files /dev/null and b/public/terrain/19/858593/354010.terrain differ diff --git a/public/terrain/19/858593/354011.terrain b/public/terrain/19/858593/354011.terrain new file mode 100644 index 000000000..bd5ffff6d Binary files /dev/null and b/public/terrain/19/858593/354011.terrain differ diff --git a/public/terrain/19/858593/354012.terrain b/public/terrain/19/858593/354012.terrain new file mode 100644 index 000000000..077e42cb0 Binary files /dev/null and b/public/terrain/19/858593/354012.terrain differ diff --git a/public/terrain/19/858593/354013.terrain b/public/terrain/19/858593/354013.terrain new file mode 100644 index 000000000..0c471d1f8 Binary files /dev/null and b/public/terrain/19/858593/354013.terrain differ diff --git a/public/terrain/19/858593/354014.terrain b/public/terrain/19/858593/354014.terrain new file mode 100644 index 000000000..ac872fcff Binary files /dev/null and b/public/terrain/19/858593/354014.terrain differ diff --git a/public/terrain/19/858593/354015.terrain b/public/terrain/19/858593/354015.terrain new file mode 100644 index 000000000..be34116ae Binary files /dev/null and b/public/terrain/19/858593/354015.terrain differ diff --git a/public/terrain/19/858593/354016.terrain b/public/terrain/19/858593/354016.terrain new file mode 100644 index 000000000..b674ce0e3 Binary files /dev/null and b/public/terrain/19/858593/354016.terrain differ diff --git a/public/terrain/19/858593/354017.terrain b/public/terrain/19/858593/354017.terrain new file mode 100644 index 000000000..86a8df59d Binary files /dev/null and b/public/terrain/19/858593/354017.terrain differ diff --git a/public/terrain/19/858593/354018.terrain b/public/terrain/19/858593/354018.terrain new file mode 100644 index 000000000..021cad240 Binary files /dev/null and b/public/terrain/19/858593/354018.terrain differ diff --git a/public/terrain/19/858593/354019.terrain b/public/terrain/19/858593/354019.terrain new file mode 100644 index 000000000..26b97bf0a Binary files /dev/null and b/public/terrain/19/858593/354019.terrain differ diff --git a/public/terrain/19/858593/354020.terrain b/public/terrain/19/858593/354020.terrain new file mode 100644 index 000000000..f8a97fe86 Binary files /dev/null and b/public/terrain/19/858593/354020.terrain differ diff --git a/public/terrain/19/858593/354021.terrain b/public/terrain/19/858593/354021.terrain new file mode 100644 index 000000000..d87b9c60e Binary files /dev/null and b/public/terrain/19/858593/354021.terrain differ diff --git a/public/terrain/19/858593/354022.terrain b/public/terrain/19/858593/354022.terrain new file mode 100644 index 000000000..13272334b Binary files /dev/null and b/public/terrain/19/858593/354022.terrain differ diff --git a/public/terrain/19/858593/354023.terrain b/public/terrain/19/858593/354023.terrain new file mode 100644 index 000000000..40a6b42e7 Binary files /dev/null and b/public/terrain/19/858593/354023.terrain differ diff --git a/public/terrain/19/858593/354024.terrain b/public/terrain/19/858593/354024.terrain new file mode 100644 index 000000000..283ee986e Binary files /dev/null and b/public/terrain/19/858593/354024.terrain differ diff --git a/public/terrain/19/858593/354025.terrain b/public/terrain/19/858593/354025.terrain new file mode 100644 index 000000000..8b1a774d3 Binary files /dev/null and b/public/terrain/19/858593/354025.terrain differ diff --git a/public/terrain/19/858593/354026.terrain b/public/terrain/19/858593/354026.terrain new file mode 100644 index 000000000..8f6ac9352 Binary files /dev/null and b/public/terrain/19/858593/354026.terrain differ diff --git a/public/terrain/19/858593/354027.terrain b/public/terrain/19/858593/354027.terrain new file mode 100644 index 000000000..a3a0175e0 Binary files /dev/null and b/public/terrain/19/858593/354027.terrain differ diff --git a/public/terrain/19/858593/354028.terrain b/public/terrain/19/858593/354028.terrain new file mode 100644 index 000000000..694d1895a Binary files /dev/null and b/public/terrain/19/858593/354028.terrain differ diff --git a/public/terrain/19/858593/354029.terrain b/public/terrain/19/858593/354029.terrain new file mode 100644 index 000000000..14fc908de Binary files /dev/null and b/public/terrain/19/858593/354029.terrain differ diff --git a/public/terrain/19/858593/354030.terrain b/public/terrain/19/858593/354030.terrain new file mode 100644 index 000000000..05a788804 Binary files /dev/null and b/public/terrain/19/858593/354030.terrain differ diff --git a/public/terrain/19/858593/354031.terrain b/public/terrain/19/858593/354031.terrain new file mode 100644 index 000000000..3ad1e4c62 Binary files /dev/null and b/public/terrain/19/858593/354031.terrain differ diff --git a/public/terrain/19/858593/354032.terrain b/public/terrain/19/858593/354032.terrain new file mode 100644 index 000000000..abc67dda0 Binary files /dev/null and b/public/terrain/19/858593/354032.terrain differ diff --git a/public/terrain/19/858593/354033.terrain b/public/terrain/19/858593/354033.terrain new file mode 100644 index 000000000..d82a930c8 Binary files /dev/null and b/public/terrain/19/858593/354033.terrain differ diff --git a/public/terrain/19/858593/354034.terrain b/public/terrain/19/858593/354034.terrain new file mode 100644 index 000000000..6c8bc2025 Binary files /dev/null and b/public/terrain/19/858593/354034.terrain differ diff --git a/public/terrain/19/858593/354035.terrain b/public/terrain/19/858593/354035.terrain new file mode 100644 index 000000000..e83a2584b Binary files /dev/null and b/public/terrain/19/858593/354035.terrain differ diff --git a/public/terrain/19/858593/354036.terrain b/public/terrain/19/858593/354036.terrain new file mode 100644 index 000000000..61c5f861f Binary files /dev/null and b/public/terrain/19/858593/354036.terrain differ diff --git a/public/terrain/19/858593/354037.terrain b/public/terrain/19/858593/354037.terrain new file mode 100644 index 000000000..6748dbba3 Binary files /dev/null and b/public/terrain/19/858593/354037.terrain differ diff --git a/public/terrain/19/858593/354038.terrain b/public/terrain/19/858593/354038.terrain new file mode 100644 index 000000000..d0454ca84 Binary files /dev/null and b/public/terrain/19/858593/354038.terrain differ diff --git a/public/terrain/19/858593/354039.terrain b/public/terrain/19/858593/354039.terrain new file mode 100644 index 000000000..a3dd3ebe2 Binary files /dev/null and b/public/terrain/19/858593/354039.terrain differ diff --git a/public/terrain/19/858593/354040.terrain b/public/terrain/19/858593/354040.terrain new file mode 100644 index 000000000..aa2236c94 Binary files /dev/null and b/public/terrain/19/858593/354040.terrain differ diff --git a/public/terrain/19/858593/354041.terrain b/public/terrain/19/858593/354041.terrain new file mode 100644 index 000000000..7c1abd852 Binary files /dev/null and b/public/terrain/19/858593/354041.terrain differ diff --git a/public/terrain/19/858593/354042.terrain b/public/terrain/19/858593/354042.terrain new file mode 100644 index 000000000..220c97145 Binary files /dev/null and b/public/terrain/19/858593/354042.terrain differ diff --git a/public/terrain/19/858593/354043.terrain b/public/terrain/19/858593/354043.terrain new file mode 100644 index 000000000..afe8250d5 Binary files /dev/null and b/public/terrain/19/858593/354043.terrain differ diff --git a/public/terrain/19/858593/354044.terrain b/public/terrain/19/858593/354044.terrain new file mode 100644 index 000000000..328e0dd2d Binary files /dev/null and b/public/terrain/19/858593/354044.terrain differ diff --git a/public/terrain/19/858593/354045.terrain b/public/terrain/19/858593/354045.terrain new file mode 100644 index 000000000..11ae0ed59 Binary files /dev/null and b/public/terrain/19/858593/354045.terrain differ diff --git a/public/terrain/19/858593/354046.terrain b/public/terrain/19/858593/354046.terrain new file mode 100644 index 000000000..e21e92bbe Binary files /dev/null and b/public/terrain/19/858593/354046.terrain differ diff --git a/public/terrain/19/858593/354047.terrain b/public/terrain/19/858593/354047.terrain new file mode 100644 index 000000000..eacd364d6 Binary files /dev/null and b/public/terrain/19/858593/354047.terrain differ diff --git a/public/terrain/19/858593/354048.terrain b/public/terrain/19/858593/354048.terrain new file mode 100644 index 000000000..9a6801238 Binary files /dev/null and b/public/terrain/19/858593/354048.terrain differ diff --git a/public/terrain/19/858593/354049.terrain b/public/terrain/19/858593/354049.terrain new file mode 100644 index 000000000..c26335753 Binary files /dev/null and b/public/terrain/19/858593/354049.terrain differ diff --git a/public/terrain/19/858593/354050.terrain b/public/terrain/19/858593/354050.terrain new file mode 100644 index 000000000..6f09739de Binary files /dev/null and b/public/terrain/19/858593/354050.terrain differ diff --git a/public/terrain/19/858593/354051.terrain b/public/terrain/19/858593/354051.terrain new file mode 100644 index 000000000..8f0aa677b Binary files /dev/null and b/public/terrain/19/858593/354051.terrain differ diff --git a/public/terrain/19/858593/354052.terrain b/public/terrain/19/858593/354052.terrain new file mode 100644 index 000000000..5c473a3e5 Binary files /dev/null and b/public/terrain/19/858593/354052.terrain differ diff --git a/public/terrain/19/858593/354053.terrain b/public/terrain/19/858593/354053.terrain new file mode 100644 index 000000000..aab6fdaaf Binary files /dev/null and b/public/terrain/19/858593/354053.terrain differ diff --git a/public/terrain/19/858593/354054.terrain b/public/terrain/19/858593/354054.terrain new file mode 100644 index 000000000..ba098c454 Binary files /dev/null and b/public/terrain/19/858593/354054.terrain differ diff --git a/public/terrain/19/858593/354055.terrain b/public/terrain/19/858593/354055.terrain new file mode 100644 index 000000000..793392286 Binary files /dev/null and b/public/terrain/19/858593/354055.terrain differ diff --git a/public/terrain/19/858593/354056.terrain b/public/terrain/19/858593/354056.terrain new file mode 100644 index 000000000..1fdd00472 Binary files /dev/null and b/public/terrain/19/858593/354056.terrain differ diff --git a/public/terrain/19/858593/354057.terrain b/public/terrain/19/858593/354057.terrain new file mode 100644 index 000000000..92ea9abdd Binary files /dev/null and b/public/terrain/19/858593/354057.terrain differ diff --git a/public/terrain/19/858593/354058.terrain b/public/terrain/19/858593/354058.terrain new file mode 100644 index 000000000..bd5cf6e1d Binary files /dev/null and b/public/terrain/19/858593/354058.terrain differ diff --git a/public/terrain/19/858593/354059.terrain b/public/terrain/19/858593/354059.terrain new file mode 100644 index 000000000..cda675ce4 Binary files /dev/null and b/public/terrain/19/858593/354059.terrain differ diff --git a/public/terrain/19/858594/353743.terrain b/public/terrain/19/858594/353743.terrain new file mode 100644 index 000000000..9d77588df Binary files /dev/null and b/public/terrain/19/858594/353743.terrain differ diff --git a/public/terrain/19/858594/353744.terrain b/public/terrain/19/858594/353744.terrain new file mode 100644 index 000000000..5ae3b5377 Binary files /dev/null and b/public/terrain/19/858594/353744.terrain differ diff --git a/public/terrain/19/858594/353745.terrain b/public/terrain/19/858594/353745.terrain new file mode 100644 index 000000000..1ce365a3f Binary files /dev/null and b/public/terrain/19/858594/353745.terrain differ diff --git a/public/terrain/19/858594/353746.terrain b/public/terrain/19/858594/353746.terrain new file mode 100644 index 000000000..f8cd3b9d7 Binary files /dev/null and b/public/terrain/19/858594/353746.terrain differ diff --git a/public/terrain/19/858594/353747.terrain b/public/terrain/19/858594/353747.terrain new file mode 100644 index 000000000..b62ae45c8 Binary files /dev/null and b/public/terrain/19/858594/353747.terrain differ diff --git a/public/terrain/19/858594/353748.terrain b/public/terrain/19/858594/353748.terrain new file mode 100644 index 000000000..2ae71e201 Binary files /dev/null and b/public/terrain/19/858594/353748.terrain differ diff --git a/public/terrain/19/858594/353749.terrain b/public/terrain/19/858594/353749.terrain new file mode 100644 index 000000000..b07dd6738 Binary files /dev/null and b/public/terrain/19/858594/353749.terrain differ diff --git a/public/terrain/19/858594/353750.terrain b/public/terrain/19/858594/353750.terrain new file mode 100644 index 000000000..bee630a7e Binary files /dev/null and b/public/terrain/19/858594/353750.terrain differ diff --git a/public/terrain/19/858594/353751.terrain b/public/terrain/19/858594/353751.terrain new file mode 100644 index 000000000..0495e9421 Binary files /dev/null and b/public/terrain/19/858594/353751.terrain differ diff --git a/public/terrain/19/858594/353752.terrain b/public/terrain/19/858594/353752.terrain new file mode 100644 index 000000000..62c277589 Binary files /dev/null and b/public/terrain/19/858594/353752.terrain differ diff --git a/public/terrain/19/858594/353753.terrain b/public/terrain/19/858594/353753.terrain new file mode 100644 index 000000000..f4c5fdc45 Binary files /dev/null and b/public/terrain/19/858594/353753.terrain differ diff --git a/public/terrain/19/858594/353754.terrain b/public/terrain/19/858594/353754.terrain new file mode 100644 index 000000000..1b4b061c2 Binary files /dev/null and b/public/terrain/19/858594/353754.terrain differ diff --git a/public/terrain/19/858594/353755.terrain b/public/terrain/19/858594/353755.terrain new file mode 100644 index 000000000..9ec31c235 Binary files /dev/null and b/public/terrain/19/858594/353755.terrain differ diff --git a/public/terrain/19/858594/353756.terrain b/public/terrain/19/858594/353756.terrain new file mode 100644 index 000000000..d9f01f599 Binary files /dev/null and b/public/terrain/19/858594/353756.terrain differ diff --git a/public/terrain/19/858594/353757.terrain b/public/terrain/19/858594/353757.terrain new file mode 100644 index 000000000..6f0094b2d Binary files /dev/null and b/public/terrain/19/858594/353757.terrain differ diff --git a/public/terrain/19/858594/353758.terrain b/public/terrain/19/858594/353758.terrain new file mode 100644 index 000000000..7119cd62d Binary files /dev/null and b/public/terrain/19/858594/353758.terrain differ diff --git a/public/terrain/19/858594/353759.terrain b/public/terrain/19/858594/353759.terrain new file mode 100644 index 000000000..b3f243b3f Binary files /dev/null and b/public/terrain/19/858594/353759.terrain differ diff --git a/public/terrain/19/858594/353760.terrain b/public/terrain/19/858594/353760.terrain new file mode 100644 index 000000000..ec4b7e9ab Binary files /dev/null and b/public/terrain/19/858594/353760.terrain differ diff --git a/public/terrain/19/858594/353761.terrain b/public/terrain/19/858594/353761.terrain new file mode 100644 index 000000000..a319ee525 Binary files /dev/null and b/public/terrain/19/858594/353761.terrain differ diff --git a/public/terrain/19/858594/353762.terrain b/public/terrain/19/858594/353762.terrain new file mode 100644 index 000000000..074439690 Binary files /dev/null and b/public/terrain/19/858594/353762.terrain differ diff --git a/public/terrain/19/858594/353763.terrain b/public/terrain/19/858594/353763.terrain new file mode 100644 index 000000000..52b6b3597 Binary files /dev/null and b/public/terrain/19/858594/353763.terrain differ diff --git a/public/terrain/19/858594/353764.terrain b/public/terrain/19/858594/353764.terrain new file mode 100644 index 000000000..2d46fb5cd Binary files /dev/null and b/public/terrain/19/858594/353764.terrain differ diff --git a/public/terrain/19/858594/353765.terrain b/public/terrain/19/858594/353765.terrain new file mode 100644 index 000000000..a7da0d7f4 Binary files /dev/null and b/public/terrain/19/858594/353765.terrain differ diff --git a/public/terrain/19/858594/353766.terrain b/public/terrain/19/858594/353766.terrain new file mode 100644 index 000000000..566be5b05 Binary files /dev/null and b/public/terrain/19/858594/353766.terrain differ diff --git a/public/terrain/19/858594/353767.terrain b/public/terrain/19/858594/353767.terrain new file mode 100644 index 000000000..cc7f6df2a Binary files /dev/null and b/public/terrain/19/858594/353767.terrain differ diff --git a/public/terrain/19/858594/353768.terrain b/public/terrain/19/858594/353768.terrain new file mode 100644 index 000000000..5d743665d Binary files /dev/null and b/public/terrain/19/858594/353768.terrain differ diff --git a/public/terrain/19/858594/353769.terrain b/public/terrain/19/858594/353769.terrain new file mode 100644 index 000000000..71eff3c16 Binary files /dev/null and b/public/terrain/19/858594/353769.terrain differ diff --git a/public/terrain/19/858594/353770.terrain b/public/terrain/19/858594/353770.terrain new file mode 100644 index 000000000..758d4f9e9 Binary files /dev/null and b/public/terrain/19/858594/353770.terrain differ diff --git a/public/terrain/19/858594/353771.terrain b/public/terrain/19/858594/353771.terrain new file mode 100644 index 000000000..e93680ceb Binary files /dev/null and b/public/terrain/19/858594/353771.terrain differ diff --git a/public/terrain/19/858594/353772.terrain b/public/terrain/19/858594/353772.terrain new file mode 100644 index 000000000..d410b3984 Binary files /dev/null and b/public/terrain/19/858594/353772.terrain differ diff --git a/public/terrain/19/858594/353773.terrain b/public/terrain/19/858594/353773.terrain new file mode 100644 index 000000000..1c636c853 Binary files /dev/null and b/public/terrain/19/858594/353773.terrain differ diff --git a/public/terrain/19/858594/353774.terrain b/public/terrain/19/858594/353774.terrain new file mode 100644 index 000000000..9093ab77d Binary files /dev/null and b/public/terrain/19/858594/353774.terrain differ diff --git a/public/terrain/19/858594/353775.terrain b/public/terrain/19/858594/353775.terrain new file mode 100644 index 000000000..e9131d54a Binary files /dev/null and b/public/terrain/19/858594/353775.terrain differ diff --git a/public/terrain/19/858594/353776.terrain b/public/terrain/19/858594/353776.terrain new file mode 100644 index 000000000..fed1e0c0c Binary files /dev/null and b/public/terrain/19/858594/353776.terrain differ diff --git a/public/terrain/19/858594/353777.terrain b/public/terrain/19/858594/353777.terrain new file mode 100644 index 000000000..60e852cfe Binary files /dev/null and b/public/terrain/19/858594/353777.terrain differ diff --git a/public/terrain/19/858594/353778.terrain b/public/terrain/19/858594/353778.terrain new file mode 100644 index 000000000..7c94026f9 Binary files /dev/null and b/public/terrain/19/858594/353778.terrain differ diff --git a/public/terrain/19/858594/353779.terrain b/public/terrain/19/858594/353779.terrain new file mode 100644 index 000000000..0ef9c8680 Binary files /dev/null and b/public/terrain/19/858594/353779.terrain differ diff --git a/public/terrain/19/858594/353780.terrain b/public/terrain/19/858594/353780.terrain new file mode 100644 index 000000000..9211dc636 Binary files /dev/null and b/public/terrain/19/858594/353780.terrain differ diff --git a/public/terrain/19/858594/353781.terrain b/public/terrain/19/858594/353781.terrain new file mode 100644 index 000000000..8c791e31e Binary files /dev/null and b/public/terrain/19/858594/353781.terrain differ diff --git a/public/terrain/19/858594/353782.terrain b/public/terrain/19/858594/353782.terrain new file mode 100644 index 000000000..c54220718 Binary files /dev/null and b/public/terrain/19/858594/353782.terrain differ diff --git a/public/terrain/19/858594/353783.terrain b/public/terrain/19/858594/353783.terrain new file mode 100644 index 000000000..acbf85c66 Binary files /dev/null and b/public/terrain/19/858594/353783.terrain differ diff --git a/public/terrain/19/858594/353784.terrain b/public/terrain/19/858594/353784.terrain new file mode 100644 index 000000000..cdd50b68f Binary files /dev/null and b/public/terrain/19/858594/353784.terrain differ diff --git a/public/terrain/19/858594/353785.terrain b/public/terrain/19/858594/353785.terrain new file mode 100644 index 000000000..b2ae29d9b Binary files /dev/null and b/public/terrain/19/858594/353785.terrain differ diff --git a/public/terrain/19/858594/353786.terrain b/public/terrain/19/858594/353786.terrain new file mode 100644 index 000000000..9b8e69125 Binary files /dev/null and b/public/terrain/19/858594/353786.terrain differ diff --git a/public/terrain/19/858594/353787.terrain b/public/terrain/19/858594/353787.terrain new file mode 100644 index 000000000..207d48e44 Binary files /dev/null and b/public/terrain/19/858594/353787.terrain differ diff --git a/public/terrain/19/858594/353788.terrain b/public/terrain/19/858594/353788.terrain new file mode 100644 index 000000000..c5f54c012 Binary files /dev/null and b/public/terrain/19/858594/353788.terrain differ diff --git a/public/terrain/19/858594/353789.terrain b/public/terrain/19/858594/353789.terrain new file mode 100644 index 000000000..976e1ae32 Binary files /dev/null and b/public/terrain/19/858594/353789.terrain differ diff --git a/public/terrain/19/858594/353790.terrain b/public/terrain/19/858594/353790.terrain new file mode 100644 index 000000000..95f43cda0 Binary files /dev/null and b/public/terrain/19/858594/353790.terrain differ diff --git a/public/terrain/19/858594/353791.terrain b/public/terrain/19/858594/353791.terrain new file mode 100644 index 000000000..4b00b0721 Binary files /dev/null and b/public/terrain/19/858594/353791.terrain differ diff --git a/public/terrain/19/858594/353792.terrain b/public/terrain/19/858594/353792.terrain new file mode 100644 index 000000000..4e888f406 Binary files /dev/null and b/public/terrain/19/858594/353792.terrain differ diff --git a/public/terrain/19/858594/353793.terrain b/public/terrain/19/858594/353793.terrain new file mode 100644 index 000000000..d47fac926 Binary files /dev/null and b/public/terrain/19/858594/353793.terrain differ diff --git a/public/terrain/19/858594/353794.terrain b/public/terrain/19/858594/353794.terrain new file mode 100644 index 000000000..359462c4c Binary files /dev/null and b/public/terrain/19/858594/353794.terrain differ diff --git a/public/terrain/19/858594/353795.terrain b/public/terrain/19/858594/353795.terrain new file mode 100644 index 000000000..62440f7ae Binary files /dev/null and b/public/terrain/19/858594/353795.terrain differ diff --git a/public/terrain/19/858594/353796.terrain b/public/terrain/19/858594/353796.terrain new file mode 100644 index 000000000..45057f9b8 Binary files /dev/null and b/public/terrain/19/858594/353796.terrain differ diff --git a/public/terrain/19/858594/353797.terrain b/public/terrain/19/858594/353797.terrain new file mode 100644 index 000000000..6f4e3e79f Binary files /dev/null and b/public/terrain/19/858594/353797.terrain differ diff --git a/public/terrain/19/858594/353798.terrain b/public/terrain/19/858594/353798.terrain new file mode 100644 index 000000000..2fe687b8c Binary files /dev/null and b/public/terrain/19/858594/353798.terrain differ diff --git a/public/terrain/19/858594/353799.terrain b/public/terrain/19/858594/353799.terrain new file mode 100644 index 000000000..94ce99a6b Binary files /dev/null and b/public/terrain/19/858594/353799.terrain differ diff --git a/public/terrain/19/858594/353800.terrain b/public/terrain/19/858594/353800.terrain new file mode 100644 index 000000000..97f771aea Binary files /dev/null and b/public/terrain/19/858594/353800.terrain differ diff --git a/public/terrain/19/858594/353801.terrain b/public/terrain/19/858594/353801.terrain new file mode 100644 index 000000000..5cc74883a Binary files /dev/null and b/public/terrain/19/858594/353801.terrain differ diff --git a/public/terrain/19/858594/353802.terrain b/public/terrain/19/858594/353802.terrain new file mode 100644 index 000000000..05ec24350 Binary files /dev/null and b/public/terrain/19/858594/353802.terrain differ diff --git a/public/terrain/19/858594/353803.terrain b/public/terrain/19/858594/353803.terrain new file mode 100644 index 000000000..8b59647b8 Binary files /dev/null and b/public/terrain/19/858594/353803.terrain differ diff --git a/public/terrain/19/858594/353804.terrain b/public/terrain/19/858594/353804.terrain new file mode 100644 index 000000000..191831683 Binary files /dev/null and b/public/terrain/19/858594/353804.terrain differ diff --git a/public/terrain/19/858594/353805.terrain b/public/terrain/19/858594/353805.terrain new file mode 100644 index 000000000..0c767ab55 Binary files /dev/null and b/public/terrain/19/858594/353805.terrain differ diff --git a/public/terrain/19/858594/353806.terrain b/public/terrain/19/858594/353806.terrain new file mode 100644 index 000000000..9124753a0 Binary files /dev/null and b/public/terrain/19/858594/353806.terrain differ diff --git a/public/terrain/19/858594/353807.terrain b/public/terrain/19/858594/353807.terrain new file mode 100644 index 000000000..4b89b277e Binary files /dev/null and b/public/terrain/19/858594/353807.terrain differ diff --git a/public/terrain/19/858594/353808.terrain b/public/terrain/19/858594/353808.terrain new file mode 100644 index 000000000..881900cde Binary files /dev/null and b/public/terrain/19/858594/353808.terrain differ diff --git a/public/terrain/19/858594/353809.terrain b/public/terrain/19/858594/353809.terrain new file mode 100644 index 000000000..2d157a11d Binary files /dev/null and b/public/terrain/19/858594/353809.terrain differ diff --git a/public/terrain/19/858594/353810.terrain b/public/terrain/19/858594/353810.terrain new file mode 100644 index 000000000..14ee7467b Binary files /dev/null and b/public/terrain/19/858594/353810.terrain differ diff --git a/public/terrain/19/858594/353811.terrain b/public/terrain/19/858594/353811.terrain new file mode 100644 index 000000000..3751e0040 Binary files /dev/null and b/public/terrain/19/858594/353811.terrain differ diff --git a/public/terrain/19/858594/353812.terrain b/public/terrain/19/858594/353812.terrain new file mode 100644 index 000000000..7d354ed42 Binary files /dev/null and b/public/terrain/19/858594/353812.terrain differ diff --git a/public/terrain/19/858594/353813.terrain b/public/terrain/19/858594/353813.terrain new file mode 100644 index 000000000..86544e0b9 Binary files /dev/null and b/public/terrain/19/858594/353813.terrain differ diff --git a/public/terrain/19/858594/353814.terrain b/public/terrain/19/858594/353814.terrain new file mode 100644 index 000000000..38cb72af7 Binary files /dev/null and b/public/terrain/19/858594/353814.terrain differ diff --git a/public/terrain/19/858594/353815.terrain b/public/terrain/19/858594/353815.terrain new file mode 100644 index 000000000..0a4c65b47 Binary files /dev/null and b/public/terrain/19/858594/353815.terrain differ diff --git a/public/terrain/19/858594/353816.terrain b/public/terrain/19/858594/353816.terrain new file mode 100644 index 000000000..adcb32e74 Binary files /dev/null and b/public/terrain/19/858594/353816.terrain differ diff --git a/public/terrain/19/858594/353817.terrain b/public/terrain/19/858594/353817.terrain new file mode 100644 index 000000000..b5e3698d7 Binary files /dev/null and b/public/terrain/19/858594/353817.terrain differ diff --git a/public/terrain/19/858594/353818.terrain b/public/terrain/19/858594/353818.terrain new file mode 100644 index 000000000..1c6010a49 Binary files /dev/null and b/public/terrain/19/858594/353818.terrain differ diff --git a/public/terrain/19/858594/353819.terrain b/public/terrain/19/858594/353819.terrain new file mode 100644 index 000000000..a13e279fa Binary files /dev/null and b/public/terrain/19/858594/353819.terrain differ diff --git a/public/terrain/19/858594/353820.terrain b/public/terrain/19/858594/353820.terrain new file mode 100644 index 000000000..ed034e33f Binary files /dev/null and b/public/terrain/19/858594/353820.terrain differ diff --git a/public/terrain/19/858594/353821.terrain b/public/terrain/19/858594/353821.terrain new file mode 100644 index 000000000..97bf55a56 Binary files /dev/null and b/public/terrain/19/858594/353821.terrain differ diff --git a/public/terrain/19/858594/353822.terrain b/public/terrain/19/858594/353822.terrain new file mode 100644 index 000000000..8074eacd3 Binary files /dev/null and b/public/terrain/19/858594/353822.terrain differ diff --git a/public/terrain/19/858594/353823.terrain b/public/terrain/19/858594/353823.terrain new file mode 100644 index 000000000..70a60ffb7 Binary files /dev/null and b/public/terrain/19/858594/353823.terrain differ diff --git a/public/terrain/19/858594/353824.terrain b/public/terrain/19/858594/353824.terrain new file mode 100644 index 000000000..9d79d35fb Binary files /dev/null and b/public/terrain/19/858594/353824.terrain differ diff --git a/public/terrain/19/858594/353825.terrain b/public/terrain/19/858594/353825.terrain new file mode 100644 index 000000000..12cae6928 Binary files /dev/null and b/public/terrain/19/858594/353825.terrain differ diff --git a/public/terrain/19/858594/353826.terrain b/public/terrain/19/858594/353826.terrain new file mode 100644 index 000000000..e749ed7a6 Binary files /dev/null and b/public/terrain/19/858594/353826.terrain differ diff --git a/public/terrain/19/858594/353827.terrain b/public/terrain/19/858594/353827.terrain new file mode 100644 index 000000000..b82e66875 Binary files /dev/null and b/public/terrain/19/858594/353827.terrain differ diff --git a/public/terrain/19/858594/353828.terrain b/public/terrain/19/858594/353828.terrain new file mode 100644 index 000000000..45e0df15c Binary files /dev/null and b/public/terrain/19/858594/353828.terrain differ diff --git a/public/terrain/19/858594/353829.terrain b/public/terrain/19/858594/353829.terrain new file mode 100644 index 000000000..a7ec26ede Binary files /dev/null and b/public/terrain/19/858594/353829.terrain differ diff --git a/public/terrain/19/858594/353830.terrain b/public/terrain/19/858594/353830.terrain new file mode 100644 index 000000000..7ffba0626 Binary files /dev/null and b/public/terrain/19/858594/353830.terrain differ diff --git a/public/terrain/19/858594/353831.terrain b/public/terrain/19/858594/353831.terrain new file mode 100644 index 000000000..7399159e5 Binary files /dev/null and b/public/terrain/19/858594/353831.terrain differ diff --git a/public/terrain/19/858594/353832.terrain b/public/terrain/19/858594/353832.terrain new file mode 100644 index 000000000..4dc24cc69 Binary files /dev/null and b/public/terrain/19/858594/353832.terrain differ diff --git a/public/terrain/19/858594/353833.terrain b/public/terrain/19/858594/353833.terrain new file mode 100644 index 000000000..6939a6c45 Binary files /dev/null and b/public/terrain/19/858594/353833.terrain differ diff --git a/public/terrain/19/858594/353834.terrain b/public/terrain/19/858594/353834.terrain new file mode 100644 index 000000000..6c87abefe Binary files /dev/null and b/public/terrain/19/858594/353834.terrain differ diff --git a/public/terrain/19/858594/353835.terrain b/public/terrain/19/858594/353835.terrain new file mode 100644 index 000000000..1b9fcf72c Binary files /dev/null and b/public/terrain/19/858594/353835.terrain differ diff --git a/public/terrain/19/858594/353836.terrain b/public/terrain/19/858594/353836.terrain new file mode 100644 index 000000000..b4c0c41c6 Binary files /dev/null and b/public/terrain/19/858594/353836.terrain differ diff --git a/public/terrain/19/858594/353837.terrain b/public/terrain/19/858594/353837.terrain new file mode 100644 index 000000000..018fbe989 Binary files /dev/null and b/public/terrain/19/858594/353837.terrain differ diff --git a/public/terrain/19/858594/353838.terrain b/public/terrain/19/858594/353838.terrain new file mode 100644 index 000000000..b498d0a1c Binary files /dev/null and b/public/terrain/19/858594/353838.terrain differ diff --git a/public/terrain/19/858594/353839.terrain b/public/terrain/19/858594/353839.terrain new file mode 100644 index 000000000..76afce130 Binary files /dev/null and b/public/terrain/19/858594/353839.terrain differ diff --git a/public/terrain/19/858594/353840.terrain b/public/terrain/19/858594/353840.terrain new file mode 100644 index 000000000..b05833717 Binary files /dev/null and b/public/terrain/19/858594/353840.terrain differ diff --git a/public/terrain/19/858594/353841.terrain b/public/terrain/19/858594/353841.terrain new file mode 100644 index 000000000..9dfe02acd Binary files /dev/null and b/public/terrain/19/858594/353841.terrain differ diff --git a/public/terrain/19/858594/353842.terrain b/public/terrain/19/858594/353842.terrain new file mode 100644 index 000000000..491344c99 Binary files /dev/null and b/public/terrain/19/858594/353842.terrain differ diff --git a/public/terrain/19/858594/353843.terrain b/public/terrain/19/858594/353843.terrain new file mode 100644 index 000000000..3f78f2b23 Binary files /dev/null and b/public/terrain/19/858594/353843.terrain differ diff --git a/public/terrain/19/858594/353844.terrain b/public/terrain/19/858594/353844.terrain new file mode 100644 index 000000000..0f644d22f Binary files /dev/null and b/public/terrain/19/858594/353844.terrain differ diff --git a/public/terrain/19/858594/353845.terrain b/public/terrain/19/858594/353845.terrain new file mode 100644 index 000000000..429023141 Binary files /dev/null and b/public/terrain/19/858594/353845.terrain differ diff --git a/public/terrain/19/858594/353846.terrain b/public/terrain/19/858594/353846.terrain new file mode 100644 index 000000000..60082f388 Binary files /dev/null and b/public/terrain/19/858594/353846.terrain differ diff --git a/public/terrain/19/858594/353847.terrain b/public/terrain/19/858594/353847.terrain new file mode 100644 index 000000000..ed4b07d8d Binary files /dev/null and b/public/terrain/19/858594/353847.terrain differ diff --git a/public/terrain/19/858594/353848.terrain b/public/terrain/19/858594/353848.terrain new file mode 100644 index 000000000..3aba2c438 Binary files /dev/null and b/public/terrain/19/858594/353848.terrain differ diff --git a/public/terrain/19/858594/353849.terrain b/public/terrain/19/858594/353849.terrain new file mode 100644 index 000000000..5925429b0 Binary files /dev/null and b/public/terrain/19/858594/353849.terrain differ diff --git a/public/terrain/19/858594/353850.terrain b/public/terrain/19/858594/353850.terrain new file mode 100644 index 000000000..4da72e70b Binary files /dev/null and b/public/terrain/19/858594/353850.terrain differ diff --git a/public/terrain/19/858594/353851.terrain b/public/terrain/19/858594/353851.terrain new file mode 100644 index 000000000..813afac85 Binary files /dev/null and b/public/terrain/19/858594/353851.terrain differ diff --git a/public/terrain/19/858594/353852.terrain b/public/terrain/19/858594/353852.terrain new file mode 100644 index 000000000..5af26d066 Binary files /dev/null and b/public/terrain/19/858594/353852.terrain differ diff --git a/public/terrain/19/858594/353853.terrain b/public/terrain/19/858594/353853.terrain new file mode 100644 index 000000000..b5a4fd24b Binary files /dev/null and b/public/terrain/19/858594/353853.terrain differ diff --git a/public/terrain/19/858594/353854.terrain b/public/terrain/19/858594/353854.terrain new file mode 100644 index 000000000..044ce9055 Binary files /dev/null and b/public/terrain/19/858594/353854.terrain differ diff --git a/public/terrain/19/858594/353855.terrain b/public/terrain/19/858594/353855.terrain new file mode 100644 index 000000000..b108876e1 Binary files /dev/null and b/public/terrain/19/858594/353855.terrain differ diff --git a/public/terrain/19/858594/353856.terrain b/public/terrain/19/858594/353856.terrain new file mode 100644 index 000000000..fafd715a0 Binary files /dev/null and b/public/terrain/19/858594/353856.terrain differ diff --git a/public/terrain/19/858594/353857.terrain b/public/terrain/19/858594/353857.terrain new file mode 100644 index 000000000..2ef35519e Binary files /dev/null and b/public/terrain/19/858594/353857.terrain differ diff --git a/public/terrain/19/858594/353858.terrain b/public/terrain/19/858594/353858.terrain new file mode 100644 index 000000000..b587c8c6e Binary files /dev/null and b/public/terrain/19/858594/353858.terrain differ diff --git a/public/terrain/19/858594/353859.terrain b/public/terrain/19/858594/353859.terrain new file mode 100644 index 000000000..fdecdc2a8 Binary files /dev/null and b/public/terrain/19/858594/353859.terrain differ diff --git a/public/terrain/19/858594/353860.terrain b/public/terrain/19/858594/353860.terrain new file mode 100644 index 000000000..dd5972119 Binary files /dev/null and b/public/terrain/19/858594/353860.terrain differ diff --git a/public/terrain/19/858594/353861.terrain b/public/terrain/19/858594/353861.terrain new file mode 100644 index 000000000..5499610ed Binary files /dev/null and b/public/terrain/19/858594/353861.terrain differ diff --git a/public/terrain/19/858594/353862.terrain b/public/terrain/19/858594/353862.terrain new file mode 100644 index 000000000..d1a9e0d95 Binary files /dev/null and b/public/terrain/19/858594/353862.terrain differ diff --git a/public/terrain/19/858594/353863.terrain b/public/terrain/19/858594/353863.terrain new file mode 100644 index 000000000..e843d14b1 Binary files /dev/null and b/public/terrain/19/858594/353863.terrain differ diff --git a/public/terrain/19/858594/353864.terrain b/public/terrain/19/858594/353864.terrain new file mode 100644 index 000000000..3a530a90c Binary files /dev/null and b/public/terrain/19/858594/353864.terrain differ diff --git a/public/terrain/19/858594/353865.terrain b/public/terrain/19/858594/353865.terrain new file mode 100644 index 000000000..0471f9fe3 Binary files /dev/null and b/public/terrain/19/858594/353865.terrain differ diff --git a/public/terrain/19/858594/353866.terrain b/public/terrain/19/858594/353866.terrain new file mode 100644 index 000000000..8040be325 Binary files /dev/null and b/public/terrain/19/858594/353866.terrain differ diff --git a/public/terrain/19/858594/353867.terrain b/public/terrain/19/858594/353867.terrain new file mode 100644 index 000000000..24c77a29f Binary files /dev/null and b/public/terrain/19/858594/353867.terrain differ diff --git a/public/terrain/19/858594/353868.terrain b/public/terrain/19/858594/353868.terrain new file mode 100644 index 000000000..980efbf22 Binary files /dev/null and b/public/terrain/19/858594/353868.terrain differ diff --git a/public/terrain/19/858594/353869.terrain b/public/terrain/19/858594/353869.terrain new file mode 100644 index 000000000..29c404818 Binary files /dev/null and b/public/terrain/19/858594/353869.terrain differ diff --git a/public/terrain/19/858594/353870.terrain b/public/terrain/19/858594/353870.terrain new file mode 100644 index 000000000..2d01ca460 Binary files /dev/null and b/public/terrain/19/858594/353870.terrain differ diff --git a/public/terrain/19/858594/353871.terrain b/public/terrain/19/858594/353871.terrain new file mode 100644 index 000000000..efd81451c Binary files /dev/null and b/public/terrain/19/858594/353871.terrain differ diff --git a/public/terrain/19/858594/353872.terrain b/public/terrain/19/858594/353872.terrain new file mode 100644 index 000000000..5861cc6af Binary files /dev/null and b/public/terrain/19/858594/353872.terrain differ diff --git a/public/terrain/19/858594/353873.terrain b/public/terrain/19/858594/353873.terrain new file mode 100644 index 000000000..1df982e22 Binary files /dev/null and b/public/terrain/19/858594/353873.terrain differ diff --git a/public/terrain/19/858594/353874.terrain b/public/terrain/19/858594/353874.terrain new file mode 100644 index 000000000..841de34b7 Binary files /dev/null and b/public/terrain/19/858594/353874.terrain differ diff --git a/public/terrain/19/858594/353875.terrain b/public/terrain/19/858594/353875.terrain new file mode 100644 index 000000000..634798f0a Binary files /dev/null and b/public/terrain/19/858594/353875.terrain differ diff --git a/public/terrain/19/858594/353876.terrain b/public/terrain/19/858594/353876.terrain new file mode 100644 index 000000000..b38709df3 Binary files /dev/null and b/public/terrain/19/858594/353876.terrain differ diff --git a/public/terrain/19/858594/353877.terrain b/public/terrain/19/858594/353877.terrain new file mode 100644 index 000000000..92fa8f8e5 Binary files /dev/null and b/public/terrain/19/858594/353877.terrain differ diff --git a/public/terrain/19/858594/353878.terrain b/public/terrain/19/858594/353878.terrain new file mode 100644 index 000000000..45723a956 Binary files /dev/null and b/public/terrain/19/858594/353878.terrain differ diff --git a/public/terrain/19/858594/353879.terrain b/public/terrain/19/858594/353879.terrain new file mode 100644 index 000000000..7b57fd51a Binary files /dev/null and b/public/terrain/19/858594/353879.terrain differ diff --git a/public/terrain/19/858594/353880.terrain b/public/terrain/19/858594/353880.terrain new file mode 100644 index 000000000..5ae465b7c Binary files /dev/null and b/public/terrain/19/858594/353880.terrain differ diff --git a/public/terrain/19/858594/353881.terrain b/public/terrain/19/858594/353881.terrain new file mode 100644 index 000000000..b1b94702b Binary files /dev/null and b/public/terrain/19/858594/353881.terrain differ diff --git a/public/terrain/19/858594/353882.terrain b/public/terrain/19/858594/353882.terrain new file mode 100644 index 000000000..0dcfd29f7 Binary files /dev/null and b/public/terrain/19/858594/353882.terrain differ diff --git a/public/terrain/19/858594/353883.terrain b/public/terrain/19/858594/353883.terrain new file mode 100644 index 000000000..9a9497209 Binary files /dev/null and b/public/terrain/19/858594/353883.terrain differ diff --git a/public/terrain/19/858594/353884.terrain b/public/terrain/19/858594/353884.terrain new file mode 100644 index 000000000..23f0f9082 Binary files /dev/null and b/public/terrain/19/858594/353884.terrain differ diff --git a/public/terrain/19/858594/353885.terrain b/public/terrain/19/858594/353885.terrain new file mode 100644 index 000000000..09078afa6 Binary files /dev/null and b/public/terrain/19/858594/353885.terrain differ diff --git a/public/terrain/19/858594/353886.terrain b/public/terrain/19/858594/353886.terrain new file mode 100644 index 000000000..471b93f1f Binary files /dev/null and b/public/terrain/19/858594/353886.terrain differ diff --git a/public/terrain/19/858594/353887.terrain b/public/terrain/19/858594/353887.terrain new file mode 100644 index 000000000..fb3b28738 Binary files /dev/null and b/public/terrain/19/858594/353887.terrain differ diff --git a/public/terrain/19/858594/353888.terrain b/public/terrain/19/858594/353888.terrain new file mode 100644 index 000000000..780c4c8cd Binary files /dev/null and b/public/terrain/19/858594/353888.terrain differ diff --git a/public/terrain/19/858594/353889.terrain b/public/terrain/19/858594/353889.terrain new file mode 100644 index 000000000..bf557e24e Binary files /dev/null and b/public/terrain/19/858594/353889.terrain differ diff --git a/public/terrain/19/858594/353890.terrain b/public/terrain/19/858594/353890.terrain new file mode 100644 index 000000000..874020a6e Binary files /dev/null and b/public/terrain/19/858594/353890.terrain differ diff --git a/public/terrain/19/858594/353891.terrain b/public/terrain/19/858594/353891.terrain new file mode 100644 index 000000000..3e243cdcf Binary files /dev/null and b/public/terrain/19/858594/353891.terrain differ diff --git a/public/terrain/19/858594/353892.terrain b/public/terrain/19/858594/353892.terrain new file mode 100644 index 000000000..fa8ff27d1 Binary files /dev/null and b/public/terrain/19/858594/353892.terrain differ diff --git a/public/terrain/19/858594/353893.terrain b/public/terrain/19/858594/353893.terrain new file mode 100644 index 000000000..001684438 Binary files /dev/null and b/public/terrain/19/858594/353893.terrain differ diff --git a/public/terrain/19/858594/353894.terrain b/public/terrain/19/858594/353894.terrain new file mode 100644 index 000000000..5fb674f21 Binary files /dev/null and b/public/terrain/19/858594/353894.terrain differ diff --git a/public/terrain/19/858594/353895.terrain b/public/terrain/19/858594/353895.terrain new file mode 100644 index 000000000..4f5a71309 Binary files /dev/null and b/public/terrain/19/858594/353895.terrain differ diff --git a/public/terrain/19/858594/353896.terrain b/public/terrain/19/858594/353896.terrain new file mode 100644 index 000000000..c2b773be4 Binary files /dev/null and b/public/terrain/19/858594/353896.terrain differ diff --git a/public/terrain/19/858594/353897.terrain b/public/terrain/19/858594/353897.terrain new file mode 100644 index 000000000..c78d93a0c Binary files /dev/null and b/public/terrain/19/858594/353897.terrain differ diff --git a/public/terrain/19/858594/353898.terrain b/public/terrain/19/858594/353898.terrain new file mode 100644 index 000000000..a0369604f Binary files /dev/null and b/public/terrain/19/858594/353898.terrain differ diff --git a/public/terrain/19/858594/353899.terrain b/public/terrain/19/858594/353899.terrain new file mode 100644 index 000000000..244782ca2 Binary files /dev/null and b/public/terrain/19/858594/353899.terrain differ diff --git a/public/terrain/19/858594/353900.terrain b/public/terrain/19/858594/353900.terrain new file mode 100644 index 000000000..6916bf5bd Binary files /dev/null and b/public/terrain/19/858594/353900.terrain differ diff --git a/public/terrain/19/858594/353901.terrain b/public/terrain/19/858594/353901.terrain new file mode 100644 index 000000000..8a924486a Binary files /dev/null and b/public/terrain/19/858594/353901.terrain differ diff --git a/public/terrain/19/858594/353902.terrain b/public/terrain/19/858594/353902.terrain new file mode 100644 index 000000000..7e4d329c4 Binary files /dev/null and b/public/terrain/19/858594/353902.terrain differ diff --git a/public/terrain/19/858594/353903.terrain b/public/terrain/19/858594/353903.terrain new file mode 100644 index 000000000..ebbff6516 Binary files /dev/null and b/public/terrain/19/858594/353903.terrain differ diff --git a/public/terrain/19/858594/353904.terrain b/public/terrain/19/858594/353904.terrain new file mode 100644 index 000000000..b4ffcb75b Binary files /dev/null and b/public/terrain/19/858594/353904.terrain differ diff --git a/public/terrain/19/858594/353905.terrain b/public/terrain/19/858594/353905.terrain new file mode 100644 index 000000000..cc3ef584c Binary files /dev/null and b/public/terrain/19/858594/353905.terrain differ diff --git a/public/terrain/19/858594/353906.terrain b/public/terrain/19/858594/353906.terrain new file mode 100644 index 000000000..04ddda107 Binary files /dev/null and b/public/terrain/19/858594/353906.terrain differ diff --git a/public/terrain/19/858594/353907.terrain b/public/terrain/19/858594/353907.terrain new file mode 100644 index 000000000..3be6b60c4 Binary files /dev/null and b/public/terrain/19/858594/353907.terrain differ diff --git a/public/terrain/19/858594/353908.terrain b/public/terrain/19/858594/353908.terrain new file mode 100644 index 000000000..e0d075aa0 Binary files /dev/null and b/public/terrain/19/858594/353908.terrain differ diff --git a/public/terrain/19/858594/353909.terrain b/public/terrain/19/858594/353909.terrain new file mode 100644 index 000000000..dfd6dfe34 Binary files /dev/null and b/public/terrain/19/858594/353909.terrain differ diff --git a/public/terrain/19/858594/353910.terrain b/public/terrain/19/858594/353910.terrain new file mode 100644 index 000000000..4f9b96da4 Binary files /dev/null and b/public/terrain/19/858594/353910.terrain differ diff --git a/public/terrain/19/858594/353911.terrain b/public/terrain/19/858594/353911.terrain new file mode 100644 index 000000000..9b10c5e18 Binary files /dev/null and b/public/terrain/19/858594/353911.terrain differ diff --git a/public/terrain/19/858594/353912.terrain b/public/terrain/19/858594/353912.terrain new file mode 100644 index 000000000..c822c8805 Binary files /dev/null and b/public/terrain/19/858594/353912.terrain differ diff --git a/public/terrain/19/858594/353913.terrain b/public/terrain/19/858594/353913.terrain new file mode 100644 index 000000000..afbe61a8e Binary files /dev/null and b/public/terrain/19/858594/353913.terrain differ diff --git a/public/terrain/19/858594/353914.terrain b/public/terrain/19/858594/353914.terrain new file mode 100644 index 000000000..61d60151a Binary files /dev/null and b/public/terrain/19/858594/353914.terrain differ diff --git a/public/terrain/19/858594/353915.terrain b/public/terrain/19/858594/353915.terrain new file mode 100644 index 000000000..f77bc3739 Binary files /dev/null and b/public/terrain/19/858594/353915.terrain differ diff --git a/public/terrain/19/858594/353916.terrain b/public/terrain/19/858594/353916.terrain new file mode 100644 index 000000000..5338bf23c Binary files /dev/null and b/public/terrain/19/858594/353916.terrain differ diff --git a/public/terrain/19/858594/353917.terrain b/public/terrain/19/858594/353917.terrain new file mode 100644 index 000000000..e478a75e8 Binary files /dev/null and b/public/terrain/19/858594/353917.terrain differ diff --git a/public/terrain/19/858594/353918.terrain b/public/terrain/19/858594/353918.terrain new file mode 100644 index 000000000..f3500046a Binary files /dev/null and b/public/terrain/19/858594/353918.terrain differ diff --git a/public/terrain/19/858594/353919.terrain b/public/terrain/19/858594/353919.terrain new file mode 100644 index 000000000..10ce7ba20 Binary files /dev/null and b/public/terrain/19/858594/353919.terrain differ diff --git a/public/terrain/19/858594/353920.terrain b/public/terrain/19/858594/353920.terrain new file mode 100644 index 000000000..cd36ca28c Binary files /dev/null and b/public/terrain/19/858594/353920.terrain differ diff --git a/public/terrain/19/858594/353921.terrain b/public/terrain/19/858594/353921.terrain new file mode 100644 index 000000000..353a59b87 Binary files /dev/null and b/public/terrain/19/858594/353921.terrain differ diff --git a/public/terrain/19/858594/353922.terrain b/public/terrain/19/858594/353922.terrain new file mode 100644 index 000000000..e4d861c23 Binary files /dev/null and b/public/terrain/19/858594/353922.terrain differ diff --git a/public/terrain/19/858594/353923.terrain b/public/terrain/19/858594/353923.terrain new file mode 100644 index 000000000..5b17ba61f Binary files /dev/null and b/public/terrain/19/858594/353923.terrain differ diff --git a/public/terrain/19/858594/353924.terrain b/public/terrain/19/858594/353924.terrain new file mode 100644 index 000000000..09f99a26b Binary files /dev/null and b/public/terrain/19/858594/353924.terrain differ diff --git a/public/terrain/19/858594/353925.terrain b/public/terrain/19/858594/353925.terrain new file mode 100644 index 000000000..36e57284e Binary files /dev/null and b/public/terrain/19/858594/353925.terrain differ diff --git a/public/terrain/19/858594/353926.terrain b/public/terrain/19/858594/353926.terrain new file mode 100644 index 000000000..747ab373f Binary files /dev/null and b/public/terrain/19/858594/353926.terrain differ diff --git a/public/terrain/19/858594/353927.terrain b/public/terrain/19/858594/353927.terrain new file mode 100644 index 000000000..30f104ac9 Binary files /dev/null and b/public/terrain/19/858594/353927.terrain differ diff --git a/public/terrain/19/858594/353928.terrain b/public/terrain/19/858594/353928.terrain new file mode 100644 index 000000000..3ffaaa187 Binary files /dev/null and b/public/terrain/19/858594/353928.terrain differ diff --git a/public/terrain/19/858594/353929.terrain b/public/terrain/19/858594/353929.terrain new file mode 100644 index 000000000..3a4e5217d Binary files /dev/null and b/public/terrain/19/858594/353929.terrain differ diff --git a/public/terrain/19/858594/353930.terrain b/public/terrain/19/858594/353930.terrain new file mode 100644 index 000000000..836a81986 Binary files /dev/null and b/public/terrain/19/858594/353930.terrain differ diff --git a/public/terrain/19/858594/353931.terrain b/public/terrain/19/858594/353931.terrain new file mode 100644 index 000000000..47086533f Binary files /dev/null and b/public/terrain/19/858594/353931.terrain differ diff --git a/public/terrain/19/858594/353932.terrain b/public/terrain/19/858594/353932.terrain new file mode 100644 index 000000000..4629ad46d Binary files /dev/null and b/public/terrain/19/858594/353932.terrain differ diff --git a/public/terrain/19/858594/353933.terrain b/public/terrain/19/858594/353933.terrain new file mode 100644 index 000000000..c7af31886 Binary files /dev/null and b/public/terrain/19/858594/353933.terrain differ diff --git a/public/terrain/19/858594/353934.terrain b/public/terrain/19/858594/353934.terrain new file mode 100644 index 000000000..7d294f62d Binary files /dev/null and b/public/terrain/19/858594/353934.terrain differ diff --git a/public/terrain/19/858594/353935.terrain b/public/terrain/19/858594/353935.terrain new file mode 100644 index 000000000..c720b20c6 Binary files /dev/null and b/public/terrain/19/858594/353935.terrain differ diff --git a/public/terrain/19/858594/353936.terrain b/public/terrain/19/858594/353936.terrain new file mode 100644 index 000000000..4d2de2235 Binary files /dev/null and b/public/terrain/19/858594/353936.terrain differ diff --git a/public/terrain/19/858594/353937.terrain b/public/terrain/19/858594/353937.terrain new file mode 100644 index 000000000..ae6783fad Binary files /dev/null and b/public/terrain/19/858594/353937.terrain differ diff --git a/public/terrain/19/858594/353938.terrain b/public/terrain/19/858594/353938.terrain new file mode 100644 index 000000000..60351bdfa Binary files /dev/null and b/public/terrain/19/858594/353938.terrain differ diff --git a/public/terrain/19/858594/353939.terrain b/public/terrain/19/858594/353939.terrain new file mode 100644 index 000000000..339e2dc3e Binary files /dev/null and b/public/terrain/19/858594/353939.terrain differ diff --git a/public/terrain/19/858594/353940.terrain b/public/terrain/19/858594/353940.terrain new file mode 100644 index 000000000..a436a63d6 Binary files /dev/null and b/public/terrain/19/858594/353940.terrain differ diff --git a/public/terrain/19/858594/353941.terrain b/public/terrain/19/858594/353941.terrain new file mode 100644 index 000000000..ec3e3f9df Binary files /dev/null and b/public/terrain/19/858594/353941.terrain differ diff --git a/public/terrain/19/858594/353942.terrain b/public/terrain/19/858594/353942.terrain new file mode 100644 index 000000000..7da3c0ab0 Binary files /dev/null and b/public/terrain/19/858594/353942.terrain differ diff --git a/public/terrain/19/858594/353943.terrain b/public/terrain/19/858594/353943.terrain new file mode 100644 index 000000000..de12b2ff5 Binary files /dev/null and b/public/terrain/19/858594/353943.terrain differ diff --git a/public/terrain/19/858594/353944.terrain b/public/terrain/19/858594/353944.terrain new file mode 100644 index 000000000..108ed7f46 Binary files /dev/null and b/public/terrain/19/858594/353944.terrain differ diff --git a/public/terrain/19/858594/353945.terrain b/public/terrain/19/858594/353945.terrain new file mode 100644 index 000000000..f16df260d Binary files /dev/null and b/public/terrain/19/858594/353945.terrain differ diff --git a/public/terrain/19/858594/353946.terrain b/public/terrain/19/858594/353946.terrain new file mode 100644 index 000000000..605216437 Binary files /dev/null and b/public/terrain/19/858594/353946.terrain differ diff --git a/public/terrain/19/858594/353947.terrain b/public/terrain/19/858594/353947.terrain new file mode 100644 index 000000000..abf345853 Binary files /dev/null and b/public/terrain/19/858594/353947.terrain differ diff --git a/public/terrain/19/858594/353948.terrain b/public/terrain/19/858594/353948.terrain new file mode 100644 index 000000000..3993c8bd7 Binary files /dev/null and b/public/terrain/19/858594/353948.terrain differ diff --git a/public/terrain/19/858594/353949.terrain b/public/terrain/19/858594/353949.terrain new file mode 100644 index 000000000..5718a62a4 Binary files /dev/null and b/public/terrain/19/858594/353949.terrain differ diff --git a/public/terrain/19/858594/353950.terrain b/public/terrain/19/858594/353950.terrain new file mode 100644 index 000000000..2c2fe983c Binary files /dev/null and b/public/terrain/19/858594/353950.terrain differ diff --git a/public/terrain/19/858594/353951.terrain b/public/terrain/19/858594/353951.terrain new file mode 100644 index 000000000..131529275 Binary files /dev/null and b/public/terrain/19/858594/353951.terrain differ diff --git a/public/terrain/19/858594/353952.terrain b/public/terrain/19/858594/353952.terrain new file mode 100644 index 000000000..5da8a38d6 Binary files /dev/null and b/public/terrain/19/858594/353952.terrain differ diff --git a/public/terrain/19/858594/353953.terrain b/public/terrain/19/858594/353953.terrain new file mode 100644 index 000000000..e6c0130a9 Binary files /dev/null and b/public/terrain/19/858594/353953.terrain differ diff --git a/public/terrain/19/858594/353954.terrain b/public/terrain/19/858594/353954.terrain new file mode 100644 index 000000000..657bd1336 Binary files /dev/null and b/public/terrain/19/858594/353954.terrain differ diff --git a/public/terrain/19/858594/353955.terrain b/public/terrain/19/858594/353955.terrain new file mode 100644 index 000000000..a77102d22 Binary files /dev/null and b/public/terrain/19/858594/353955.terrain differ diff --git a/public/terrain/19/858594/353956.terrain b/public/terrain/19/858594/353956.terrain new file mode 100644 index 000000000..f7d24f09e Binary files /dev/null and b/public/terrain/19/858594/353956.terrain differ diff --git a/public/terrain/19/858594/353957.terrain b/public/terrain/19/858594/353957.terrain new file mode 100644 index 000000000..41a51570d Binary files /dev/null and b/public/terrain/19/858594/353957.terrain differ diff --git a/public/terrain/19/858594/353958.terrain b/public/terrain/19/858594/353958.terrain new file mode 100644 index 000000000..cc8abd7f3 Binary files /dev/null and b/public/terrain/19/858594/353958.terrain differ diff --git a/public/terrain/19/858594/353959.terrain b/public/terrain/19/858594/353959.terrain new file mode 100644 index 000000000..932816672 Binary files /dev/null and b/public/terrain/19/858594/353959.terrain differ diff --git a/public/terrain/19/858594/353960.terrain b/public/terrain/19/858594/353960.terrain new file mode 100644 index 000000000..31ee2b482 Binary files /dev/null and b/public/terrain/19/858594/353960.terrain differ diff --git a/public/terrain/19/858594/353961.terrain b/public/terrain/19/858594/353961.terrain new file mode 100644 index 000000000..1fbaca28d Binary files /dev/null and b/public/terrain/19/858594/353961.terrain differ diff --git a/public/terrain/19/858594/353962.terrain b/public/terrain/19/858594/353962.terrain new file mode 100644 index 000000000..178b6fdbc Binary files /dev/null and b/public/terrain/19/858594/353962.terrain differ diff --git a/public/terrain/19/858594/353963.terrain b/public/terrain/19/858594/353963.terrain new file mode 100644 index 000000000..8488257f6 Binary files /dev/null and b/public/terrain/19/858594/353963.terrain differ diff --git a/public/terrain/19/858594/353964.terrain b/public/terrain/19/858594/353964.terrain new file mode 100644 index 000000000..89e4fd937 Binary files /dev/null and b/public/terrain/19/858594/353964.terrain differ diff --git a/public/terrain/19/858594/353965.terrain b/public/terrain/19/858594/353965.terrain new file mode 100644 index 000000000..d2f30d6c1 Binary files /dev/null and b/public/terrain/19/858594/353965.terrain differ diff --git a/public/terrain/19/858594/353966.terrain b/public/terrain/19/858594/353966.terrain new file mode 100644 index 000000000..c55431d52 Binary files /dev/null and b/public/terrain/19/858594/353966.terrain differ diff --git a/public/terrain/19/858594/353967.terrain b/public/terrain/19/858594/353967.terrain new file mode 100644 index 000000000..ba6030cbb Binary files /dev/null and b/public/terrain/19/858594/353967.terrain differ diff --git a/public/terrain/19/858594/353968.terrain b/public/terrain/19/858594/353968.terrain new file mode 100644 index 000000000..ab5719b8e Binary files /dev/null and b/public/terrain/19/858594/353968.terrain differ diff --git a/public/terrain/19/858594/353969.terrain b/public/terrain/19/858594/353969.terrain new file mode 100644 index 000000000..fe7389f76 Binary files /dev/null and b/public/terrain/19/858594/353969.terrain differ diff --git a/public/terrain/19/858594/353970.terrain b/public/terrain/19/858594/353970.terrain new file mode 100644 index 000000000..51bfdc5eb Binary files /dev/null and b/public/terrain/19/858594/353970.terrain differ diff --git a/public/terrain/19/858594/353971.terrain b/public/terrain/19/858594/353971.terrain new file mode 100644 index 000000000..14b7edcc6 Binary files /dev/null and b/public/terrain/19/858594/353971.terrain differ diff --git a/public/terrain/19/858594/353972.terrain b/public/terrain/19/858594/353972.terrain new file mode 100644 index 000000000..5533b5283 Binary files /dev/null and b/public/terrain/19/858594/353972.terrain differ diff --git a/public/terrain/19/858594/353973.terrain b/public/terrain/19/858594/353973.terrain new file mode 100644 index 000000000..b3eac9257 Binary files /dev/null and b/public/terrain/19/858594/353973.terrain differ diff --git a/public/terrain/19/858594/353974.terrain b/public/terrain/19/858594/353974.terrain new file mode 100644 index 000000000..933447d2d Binary files /dev/null and b/public/terrain/19/858594/353974.terrain differ diff --git a/public/terrain/19/858594/353975.terrain b/public/terrain/19/858594/353975.terrain new file mode 100644 index 000000000..258ac07a5 Binary files /dev/null and b/public/terrain/19/858594/353975.terrain differ diff --git a/public/terrain/19/858594/353976.terrain b/public/terrain/19/858594/353976.terrain new file mode 100644 index 000000000..24c320b2b Binary files /dev/null and b/public/terrain/19/858594/353976.terrain differ diff --git a/public/terrain/19/858594/353977.terrain b/public/terrain/19/858594/353977.terrain new file mode 100644 index 000000000..4aad857b7 Binary files /dev/null and b/public/terrain/19/858594/353977.terrain differ diff --git a/public/terrain/19/858594/353978.terrain b/public/terrain/19/858594/353978.terrain new file mode 100644 index 000000000..f3e554d1a Binary files /dev/null and b/public/terrain/19/858594/353978.terrain differ diff --git a/public/terrain/19/858594/353979.terrain b/public/terrain/19/858594/353979.terrain new file mode 100644 index 000000000..0db8c449e Binary files /dev/null and b/public/terrain/19/858594/353979.terrain differ diff --git a/public/terrain/19/858594/353980.terrain b/public/terrain/19/858594/353980.terrain new file mode 100644 index 000000000..f19c447f1 Binary files /dev/null and b/public/terrain/19/858594/353980.terrain differ diff --git a/public/terrain/19/858594/353981.terrain b/public/terrain/19/858594/353981.terrain new file mode 100644 index 000000000..d68b8605d Binary files /dev/null and b/public/terrain/19/858594/353981.terrain differ diff --git a/public/terrain/19/858594/353982.terrain b/public/terrain/19/858594/353982.terrain new file mode 100644 index 000000000..a45c1afb6 Binary files /dev/null and b/public/terrain/19/858594/353982.terrain differ diff --git a/public/terrain/19/858594/353983.terrain b/public/terrain/19/858594/353983.terrain new file mode 100644 index 000000000..f12d51fdd Binary files /dev/null and b/public/terrain/19/858594/353983.terrain differ diff --git a/public/terrain/19/858594/353984.terrain b/public/terrain/19/858594/353984.terrain new file mode 100644 index 000000000..fa7239554 Binary files /dev/null and b/public/terrain/19/858594/353984.terrain differ diff --git a/public/terrain/19/858594/353985.terrain b/public/terrain/19/858594/353985.terrain new file mode 100644 index 000000000..b6081f4cb Binary files /dev/null and b/public/terrain/19/858594/353985.terrain differ diff --git a/public/terrain/19/858594/353986.terrain b/public/terrain/19/858594/353986.terrain new file mode 100644 index 000000000..05b6503c1 Binary files /dev/null and b/public/terrain/19/858594/353986.terrain differ diff --git a/public/terrain/19/858594/353987.terrain b/public/terrain/19/858594/353987.terrain new file mode 100644 index 000000000..35e70a9d3 Binary files /dev/null and b/public/terrain/19/858594/353987.terrain differ diff --git a/public/terrain/19/858594/353988.terrain b/public/terrain/19/858594/353988.terrain new file mode 100644 index 000000000..187e73b2d Binary files /dev/null and b/public/terrain/19/858594/353988.terrain differ diff --git a/public/terrain/19/858594/353989.terrain b/public/terrain/19/858594/353989.terrain new file mode 100644 index 000000000..cbe6cd576 Binary files /dev/null and b/public/terrain/19/858594/353989.terrain differ diff --git a/public/terrain/19/858594/353990.terrain b/public/terrain/19/858594/353990.terrain new file mode 100644 index 000000000..c6908010e Binary files /dev/null and b/public/terrain/19/858594/353990.terrain differ diff --git a/public/terrain/19/858594/353991.terrain b/public/terrain/19/858594/353991.terrain new file mode 100644 index 000000000..0e796b3cd Binary files /dev/null and b/public/terrain/19/858594/353991.terrain differ diff --git a/public/terrain/19/858594/353992.terrain b/public/terrain/19/858594/353992.terrain new file mode 100644 index 000000000..83bfa760d Binary files /dev/null and b/public/terrain/19/858594/353992.terrain differ diff --git a/public/terrain/19/858594/353993.terrain b/public/terrain/19/858594/353993.terrain new file mode 100644 index 000000000..046fefecc Binary files /dev/null and b/public/terrain/19/858594/353993.terrain differ diff --git a/public/terrain/19/858594/353994.terrain b/public/terrain/19/858594/353994.terrain new file mode 100644 index 000000000..914a0b619 Binary files /dev/null and b/public/terrain/19/858594/353994.terrain differ diff --git a/public/terrain/19/858594/353995.terrain b/public/terrain/19/858594/353995.terrain new file mode 100644 index 000000000..982ed0afb Binary files /dev/null and b/public/terrain/19/858594/353995.terrain differ diff --git a/public/terrain/19/858594/353996.terrain b/public/terrain/19/858594/353996.terrain new file mode 100644 index 000000000..13a9a22b6 Binary files /dev/null and b/public/terrain/19/858594/353996.terrain differ diff --git a/public/terrain/19/858594/353997.terrain b/public/terrain/19/858594/353997.terrain new file mode 100644 index 000000000..abc7e10ac Binary files /dev/null and b/public/terrain/19/858594/353997.terrain differ diff --git a/public/terrain/19/858594/353998.terrain b/public/terrain/19/858594/353998.terrain new file mode 100644 index 000000000..c8ef4f3f3 Binary files /dev/null and b/public/terrain/19/858594/353998.terrain differ diff --git a/public/terrain/19/858594/353999.terrain b/public/terrain/19/858594/353999.terrain new file mode 100644 index 000000000..3761c8761 Binary files /dev/null and b/public/terrain/19/858594/353999.terrain differ diff --git a/public/terrain/19/858594/354000.terrain b/public/terrain/19/858594/354000.terrain new file mode 100644 index 000000000..ea3c5ac41 Binary files /dev/null and b/public/terrain/19/858594/354000.terrain differ diff --git a/public/terrain/19/858594/354001.terrain b/public/terrain/19/858594/354001.terrain new file mode 100644 index 000000000..771a71bf5 Binary files /dev/null and b/public/terrain/19/858594/354001.terrain differ diff --git a/public/terrain/19/858594/354002.terrain b/public/terrain/19/858594/354002.terrain new file mode 100644 index 000000000..79f29bc3c Binary files /dev/null and b/public/terrain/19/858594/354002.terrain differ diff --git a/public/terrain/19/858594/354003.terrain b/public/terrain/19/858594/354003.terrain new file mode 100644 index 000000000..a5db7a1d4 Binary files /dev/null and b/public/terrain/19/858594/354003.terrain differ diff --git a/public/terrain/19/858594/354004.terrain b/public/terrain/19/858594/354004.terrain new file mode 100644 index 000000000..7a5960174 Binary files /dev/null and b/public/terrain/19/858594/354004.terrain differ diff --git a/public/terrain/19/858594/354005.terrain b/public/terrain/19/858594/354005.terrain new file mode 100644 index 000000000..940a0ffa6 Binary files /dev/null and b/public/terrain/19/858594/354005.terrain differ diff --git a/public/terrain/19/858594/354006.terrain b/public/terrain/19/858594/354006.terrain new file mode 100644 index 000000000..dc0816ad1 Binary files /dev/null and b/public/terrain/19/858594/354006.terrain differ diff --git a/public/terrain/19/858594/354007.terrain b/public/terrain/19/858594/354007.terrain new file mode 100644 index 000000000..cafb65ef7 Binary files /dev/null and b/public/terrain/19/858594/354007.terrain differ diff --git a/public/terrain/19/858594/354008.terrain b/public/terrain/19/858594/354008.terrain new file mode 100644 index 000000000..0884d302e Binary files /dev/null and b/public/terrain/19/858594/354008.terrain differ diff --git a/public/terrain/19/858594/354009.terrain b/public/terrain/19/858594/354009.terrain new file mode 100644 index 000000000..42668b7f2 Binary files /dev/null and b/public/terrain/19/858594/354009.terrain differ diff --git a/public/terrain/19/858594/354010.terrain b/public/terrain/19/858594/354010.terrain new file mode 100644 index 000000000..8ec4c2c28 Binary files /dev/null and b/public/terrain/19/858594/354010.terrain differ diff --git a/public/terrain/19/858594/354011.terrain b/public/terrain/19/858594/354011.terrain new file mode 100644 index 000000000..457f7e563 Binary files /dev/null and b/public/terrain/19/858594/354011.terrain differ diff --git a/public/terrain/19/858594/354012.terrain b/public/terrain/19/858594/354012.terrain new file mode 100644 index 000000000..eb4427310 Binary files /dev/null and b/public/terrain/19/858594/354012.terrain differ diff --git a/public/terrain/19/858594/354013.terrain b/public/terrain/19/858594/354013.terrain new file mode 100644 index 000000000..c013b4dd9 Binary files /dev/null and b/public/terrain/19/858594/354013.terrain differ diff --git a/public/terrain/19/858594/354014.terrain b/public/terrain/19/858594/354014.terrain new file mode 100644 index 000000000..903e84732 Binary files /dev/null and b/public/terrain/19/858594/354014.terrain differ diff --git a/public/terrain/19/858594/354015.terrain b/public/terrain/19/858594/354015.terrain new file mode 100644 index 000000000..9bf55dc97 Binary files /dev/null and b/public/terrain/19/858594/354015.terrain differ diff --git a/public/terrain/19/858594/354016.terrain b/public/terrain/19/858594/354016.terrain new file mode 100644 index 000000000..fc1a3ccb0 Binary files /dev/null and b/public/terrain/19/858594/354016.terrain differ diff --git a/public/terrain/19/858594/354017.terrain b/public/terrain/19/858594/354017.terrain new file mode 100644 index 000000000..5b4114814 Binary files /dev/null and b/public/terrain/19/858594/354017.terrain differ diff --git a/public/terrain/19/858594/354018.terrain b/public/terrain/19/858594/354018.terrain new file mode 100644 index 000000000..a9ef8019a Binary files /dev/null and b/public/terrain/19/858594/354018.terrain differ diff --git a/public/terrain/19/858594/354019.terrain b/public/terrain/19/858594/354019.terrain new file mode 100644 index 000000000..8ab655565 Binary files /dev/null and b/public/terrain/19/858594/354019.terrain differ diff --git a/public/terrain/19/858594/354020.terrain b/public/terrain/19/858594/354020.terrain new file mode 100644 index 000000000..a16aca4ee Binary files /dev/null and b/public/terrain/19/858594/354020.terrain differ diff --git a/public/terrain/19/858594/354021.terrain b/public/terrain/19/858594/354021.terrain new file mode 100644 index 000000000..5dd6fbaa2 Binary files /dev/null and b/public/terrain/19/858594/354021.terrain differ diff --git a/public/terrain/19/858594/354022.terrain b/public/terrain/19/858594/354022.terrain new file mode 100644 index 000000000..295be2172 Binary files /dev/null and b/public/terrain/19/858594/354022.terrain differ diff --git a/public/terrain/19/858594/354023.terrain b/public/terrain/19/858594/354023.terrain new file mode 100644 index 000000000..021f55360 Binary files /dev/null and b/public/terrain/19/858594/354023.terrain differ diff --git a/public/terrain/19/858594/354024.terrain b/public/terrain/19/858594/354024.terrain new file mode 100644 index 000000000..564e836aa Binary files /dev/null and b/public/terrain/19/858594/354024.terrain differ diff --git a/public/terrain/19/858594/354025.terrain b/public/terrain/19/858594/354025.terrain new file mode 100644 index 000000000..6098f4a8c Binary files /dev/null and b/public/terrain/19/858594/354025.terrain differ diff --git a/public/terrain/19/858594/354026.terrain b/public/terrain/19/858594/354026.terrain new file mode 100644 index 000000000..7953b0d01 Binary files /dev/null and b/public/terrain/19/858594/354026.terrain differ diff --git a/public/terrain/19/858594/354027.terrain b/public/terrain/19/858594/354027.terrain new file mode 100644 index 000000000..c417e2a38 Binary files /dev/null and b/public/terrain/19/858594/354027.terrain differ diff --git a/public/terrain/19/858594/354028.terrain b/public/terrain/19/858594/354028.terrain new file mode 100644 index 000000000..73c6a50a0 Binary files /dev/null and b/public/terrain/19/858594/354028.terrain differ diff --git a/public/terrain/19/858594/354029.terrain b/public/terrain/19/858594/354029.terrain new file mode 100644 index 000000000..ae3bb5f7a Binary files /dev/null and b/public/terrain/19/858594/354029.terrain differ diff --git a/public/terrain/19/858594/354030.terrain b/public/terrain/19/858594/354030.terrain new file mode 100644 index 000000000..aa9ab137c Binary files /dev/null and b/public/terrain/19/858594/354030.terrain differ diff --git a/public/terrain/19/858594/354031.terrain b/public/terrain/19/858594/354031.terrain new file mode 100644 index 000000000..42c880b68 Binary files /dev/null and b/public/terrain/19/858594/354031.terrain differ diff --git a/public/terrain/19/858594/354032.terrain b/public/terrain/19/858594/354032.terrain new file mode 100644 index 000000000..33923be72 Binary files /dev/null and b/public/terrain/19/858594/354032.terrain differ diff --git a/public/terrain/19/858594/354033.terrain b/public/terrain/19/858594/354033.terrain new file mode 100644 index 000000000..2d5c92145 Binary files /dev/null and b/public/terrain/19/858594/354033.terrain differ diff --git a/public/terrain/19/858594/354034.terrain b/public/terrain/19/858594/354034.terrain new file mode 100644 index 000000000..36fddc4aa Binary files /dev/null and b/public/terrain/19/858594/354034.terrain differ diff --git a/public/terrain/19/858594/354035.terrain b/public/terrain/19/858594/354035.terrain new file mode 100644 index 000000000..10907cdf0 Binary files /dev/null and b/public/terrain/19/858594/354035.terrain differ diff --git a/public/terrain/19/858594/354036.terrain b/public/terrain/19/858594/354036.terrain new file mode 100644 index 000000000..aa8efd5c5 Binary files /dev/null and b/public/terrain/19/858594/354036.terrain differ diff --git a/public/terrain/19/858594/354037.terrain b/public/terrain/19/858594/354037.terrain new file mode 100644 index 000000000..8dd6b27ed Binary files /dev/null and b/public/terrain/19/858594/354037.terrain differ diff --git a/public/terrain/19/858594/354038.terrain b/public/terrain/19/858594/354038.terrain new file mode 100644 index 000000000..d686a9994 Binary files /dev/null and b/public/terrain/19/858594/354038.terrain differ diff --git a/public/terrain/19/858594/354039.terrain b/public/terrain/19/858594/354039.terrain new file mode 100644 index 000000000..e5d574882 Binary files /dev/null and b/public/terrain/19/858594/354039.terrain differ diff --git a/public/terrain/19/858594/354040.terrain b/public/terrain/19/858594/354040.terrain new file mode 100644 index 000000000..3e4174e66 Binary files /dev/null and b/public/terrain/19/858594/354040.terrain differ diff --git a/public/terrain/19/858594/354041.terrain b/public/terrain/19/858594/354041.terrain new file mode 100644 index 000000000..0dbe743d8 Binary files /dev/null and b/public/terrain/19/858594/354041.terrain differ diff --git a/public/terrain/19/858594/354042.terrain b/public/terrain/19/858594/354042.terrain new file mode 100644 index 000000000..3c8ad9710 Binary files /dev/null and b/public/terrain/19/858594/354042.terrain differ diff --git a/public/terrain/19/858594/354043.terrain b/public/terrain/19/858594/354043.terrain new file mode 100644 index 000000000..47d77f3c0 Binary files /dev/null and b/public/terrain/19/858594/354043.terrain differ diff --git a/public/terrain/19/858594/354044.terrain b/public/terrain/19/858594/354044.terrain new file mode 100644 index 000000000..a0ef5a3cb Binary files /dev/null and b/public/terrain/19/858594/354044.terrain differ diff --git a/public/terrain/19/858594/354045.terrain b/public/terrain/19/858594/354045.terrain new file mode 100644 index 000000000..a2869d98e Binary files /dev/null and b/public/terrain/19/858594/354045.terrain differ diff --git a/public/terrain/19/858594/354046.terrain b/public/terrain/19/858594/354046.terrain new file mode 100644 index 000000000..0a9ef49a6 Binary files /dev/null and b/public/terrain/19/858594/354046.terrain differ diff --git a/public/terrain/19/858594/354047.terrain b/public/terrain/19/858594/354047.terrain new file mode 100644 index 000000000..14fd179f3 Binary files /dev/null and b/public/terrain/19/858594/354047.terrain differ diff --git a/public/terrain/19/858594/354048.terrain b/public/terrain/19/858594/354048.terrain new file mode 100644 index 000000000..0b32807c1 Binary files /dev/null and b/public/terrain/19/858594/354048.terrain differ diff --git a/public/terrain/19/858594/354049.terrain b/public/terrain/19/858594/354049.terrain new file mode 100644 index 000000000..feeeb4b19 Binary files /dev/null and b/public/terrain/19/858594/354049.terrain differ diff --git a/public/terrain/19/858594/354050.terrain b/public/terrain/19/858594/354050.terrain new file mode 100644 index 000000000..c04b80d36 Binary files /dev/null and b/public/terrain/19/858594/354050.terrain differ diff --git a/public/terrain/19/858594/354051.terrain b/public/terrain/19/858594/354051.terrain new file mode 100644 index 000000000..6f303016e Binary files /dev/null and b/public/terrain/19/858594/354051.terrain differ diff --git a/public/terrain/19/858594/354052.terrain b/public/terrain/19/858594/354052.terrain new file mode 100644 index 000000000..3c2bc27b2 Binary files /dev/null and b/public/terrain/19/858594/354052.terrain differ diff --git a/public/terrain/19/858594/354053.terrain b/public/terrain/19/858594/354053.terrain new file mode 100644 index 000000000..8f02cf1c8 Binary files /dev/null and b/public/terrain/19/858594/354053.terrain differ diff --git a/public/terrain/19/858594/354054.terrain b/public/terrain/19/858594/354054.terrain new file mode 100644 index 000000000..a87cc53cc Binary files /dev/null and b/public/terrain/19/858594/354054.terrain differ diff --git a/public/terrain/19/858594/354055.terrain b/public/terrain/19/858594/354055.terrain new file mode 100644 index 000000000..c0a1193e4 Binary files /dev/null and b/public/terrain/19/858594/354055.terrain differ diff --git a/public/terrain/19/858594/354056.terrain b/public/terrain/19/858594/354056.terrain new file mode 100644 index 000000000..8e24f3242 Binary files /dev/null and b/public/terrain/19/858594/354056.terrain differ diff --git a/public/terrain/19/858594/354057.terrain b/public/terrain/19/858594/354057.terrain new file mode 100644 index 000000000..f2da3be6e Binary files /dev/null and b/public/terrain/19/858594/354057.terrain differ diff --git a/public/terrain/19/858594/354058.terrain b/public/terrain/19/858594/354058.terrain new file mode 100644 index 000000000..8a9f6d55f Binary files /dev/null and b/public/terrain/19/858594/354058.terrain differ diff --git a/public/terrain/19/858594/354059.terrain b/public/terrain/19/858594/354059.terrain new file mode 100644 index 000000000..0c75a2598 Binary files /dev/null and b/public/terrain/19/858594/354059.terrain differ diff --git a/public/terrain/19/858595/353743.terrain b/public/terrain/19/858595/353743.terrain new file mode 100644 index 000000000..cb259dbb2 Binary files /dev/null and b/public/terrain/19/858595/353743.terrain differ diff --git a/public/terrain/19/858595/353744.terrain b/public/terrain/19/858595/353744.terrain new file mode 100644 index 000000000..6bf279cc4 Binary files /dev/null and b/public/terrain/19/858595/353744.terrain differ diff --git a/public/terrain/19/858595/353745.terrain b/public/terrain/19/858595/353745.terrain new file mode 100644 index 000000000..667f22192 Binary files /dev/null and b/public/terrain/19/858595/353745.terrain differ diff --git a/public/terrain/19/858595/353746.terrain b/public/terrain/19/858595/353746.terrain new file mode 100644 index 000000000..28c8bc8e7 Binary files /dev/null and b/public/terrain/19/858595/353746.terrain differ diff --git a/public/terrain/19/858595/353747.terrain b/public/terrain/19/858595/353747.terrain new file mode 100644 index 000000000..bbae11429 Binary files /dev/null and b/public/terrain/19/858595/353747.terrain differ diff --git a/public/terrain/19/858595/353748.terrain b/public/terrain/19/858595/353748.terrain new file mode 100644 index 000000000..38eed95e9 Binary files /dev/null and b/public/terrain/19/858595/353748.terrain differ diff --git a/public/terrain/19/858595/353749.terrain b/public/terrain/19/858595/353749.terrain new file mode 100644 index 000000000..a43c9b31e Binary files /dev/null and b/public/terrain/19/858595/353749.terrain differ diff --git a/public/terrain/19/858595/353750.terrain b/public/terrain/19/858595/353750.terrain new file mode 100644 index 000000000..3f98e2031 Binary files /dev/null and b/public/terrain/19/858595/353750.terrain differ diff --git a/public/terrain/19/858595/353751.terrain b/public/terrain/19/858595/353751.terrain new file mode 100644 index 000000000..b06295046 Binary files /dev/null and b/public/terrain/19/858595/353751.terrain differ diff --git a/public/terrain/19/858595/353752.terrain b/public/terrain/19/858595/353752.terrain new file mode 100644 index 000000000..fa81a129d Binary files /dev/null and b/public/terrain/19/858595/353752.terrain differ diff --git a/public/terrain/19/858595/353753.terrain b/public/terrain/19/858595/353753.terrain new file mode 100644 index 000000000..14e81af41 Binary files /dev/null and b/public/terrain/19/858595/353753.terrain differ diff --git a/public/terrain/19/858595/353754.terrain b/public/terrain/19/858595/353754.terrain new file mode 100644 index 000000000..76475267a Binary files /dev/null and b/public/terrain/19/858595/353754.terrain differ diff --git a/public/terrain/19/858595/353755.terrain b/public/terrain/19/858595/353755.terrain new file mode 100644 index 000000000..240c6cb69 Binary files /dev/null and b/public/terrain/19/858595/353755.terrain differ diff --git a/public/terrain/19/858595/353756.terrain b/public/terrain/19/858595/353756.terrain new file mode 100644 index 000000000..0df09150c Binary files /dev/null and b/public/terrain/19/858595/353756.terrain differ diff --git a/public/terrain/19/858595/353757.terrain b/public/terrain/19/858595/353757.terrain new file mode 100644 index 000000000..3bf68c133 Binary files /dev/null and b/public/terrain/19/858595/353757.terrain differ diff --git a/public/terrain/19/858595/353758.terrain b/public/terrain/19/858595/353758.terrain new file mode 100644 index 000000000..9104e342d Binary files /dev/null and b/public/terrain/19/858595/353758.terrain differ diff --git a/public/terrain/19/858595/353759.terrain b/public/terrain/19/858595/353759.terrain new file mode 100644 index 000000000..4877aede2 Binary files /dev/null and b/public/terrain/19/858595/353759.terrain differ diff --git a/public/terrain/19/858595/353760.terrain b/public/terrain/19/858595/353760.terrain new file mode 100644 index 000000000..8d4394ac7 Binary files /dev/null and b/public/terrain/19/858595/353760.terrain differ diff --git a/public/terrain/19/858595/353761.terrain b/public/terrain/19/858595/353761.terrain new file mode 100644 index 000000000..afa94cff3 Binary files /dev/null and b/public/terrain/19/858595/353761.terrain differ diff --git a/public/terrain/19/858595/353762.terrain b/public/terrain/19/858595/353762.terrain new file mode 100644 index 000000000..10972c59a Binary files /dev/null and b/public/terrain/19/858595/353762.terrain differ diff --git a/public/terrain/19/858595/353763.terrain b/public/terrain/19/858595/353763.terrain new file mode 100644 index 000000000..1e3c01c56 Binary files /dev/null and b/public/terrain/19/858595/353763.terrain differ diff --git a/public/terrain/19/858595/353764.terrain b/public/terrain/19/858595/353764.terrain new file mode 100644 index 000000000..6e52b8257 Binary files /dev/null and b/public/terrain/19/858595/353764.terrain differ diff --git a/public/terrain/19/858595/353765.terrain b/public/terrain/19/858595/353765.terrain new file mode 100644 index 000000000..ca7644d3b Binary files /dev/null and b/public/terrain/19/858595/353765.terrain differ diff --git a/public/terrain/19/858595/353766.terrain b/public/terrain/19/858595/353766.terrain new file mode 100644 index 000000000..0a488bff2 Binary files /dev/null and b/public/terrain/19/858595/353766.terrain differ diff --git a/public/terrain/19/858595/353767.terrain b/public/terrain/19/858595/353767.terrain new file mode 100644 index 000000000..e21801ba6 Binary files /dev/null and b/public/terrain/19/858595/353767.terrain differ diff --git a/public/terrain/19/858595/353768.terrain b/public/terrain/19/858595/353768.terrain new file mode 100644 index 000000000..0b467d7c3 Binary files /dev/null and b/public/terrain/19/858595/353768.terrain differ diff --git a/public/terrain/19/858595/353769.terrain b/public/terrain/19/858595/353769.terrain new file mode 100644 index 000000000..013fadf93 Binary files /dev/null and b/public/terrain/19/858595/353769.terrain differ diff --git a/public/terrain/19/858595/353770.terrain b/public/terrain/19/858595/353770.terrain new file mode 100644 index 000000000..424fbd1ce Binary files /dev/null and b/public/terrain/19/858595/353770.terrain differ diff --git a/public/terrain/19/858595/353771.terrain b/public/terrain/19/858595/353771.terrain new file mode 100644 index 000000000..b8adfe242 Binary files /dev/null and b/public/terrain/19/858595/353771.terrain differ diff --git a/public/terrain/19/858595/353772.terrain b/public/terrain/19/858595/353772.terrain new file mode 100644 index 000000000..fd3c9449a Binary files /dev/null and b/public/terrain/19/858595/353772.terrain differ diff --git a/public/terrain/19/858595/353773.terrain b/public/terrain/19/858595/353773.terrain new file mode 100644 index 000000000..a7a8ac680 Binary files /dev/null and b/public/terrain/19/858595/353773.terrain differ diff --git a/public/terrain/19/858595/353774.terrain b/public/terrain/19/858595/353774.terrain new file mode 100644 index 000000000..8915e9b55 Binary files /dev/null and b/public/terrain/19/858595/353774.terrain differ diff --git a/public/terrain/19/858595/353775.terrain b/public/terrain/19/858595/353775.terrain new file mode 100644 index 000000000..0d03b98e2 Binary files /dev/null and b/public/terrain/19/858595/353775.terrain differ diff --git a/public/terrain/19/858595/353776.terrain b/public/terrain/19/858595/353776.terrain new file mode 100644 index 000000000..5d72b9968 Binary files /dev/null and b/public/terrain/19/858595/353776.terrain differ diff --git a/public/terrain/19/858595/353777.terrain b/public/terrain/19/858595/353777.terrain new file mode 100644 index 000000000..a6ebf1ee4 Binary files /dev/null and b/public/terrain/19/858595/353777.terrain differ diff --git a/public/terrain/19/858595/353778.terrain b/public/terrain/19/858595/353778.terrain new file mode 100644 index 000000000..1ca970363 Binary files /dev/null and b/public/terrain/19/858595/353778.terrain differ diff --git a/public/terrain/19/858595/353779.terrain b/public/terrain/19/858595/353779.terrain new file mode 100644 index 000000000..2965252e2 Binary files /dev/null and b/public/terrain/19/858595/353779.terrain differ diff --git a/public/terrain/19/858595/353780.terrain b/public/terrain/19/858595/353780.terrain new file mode 100644 index 000000000..571d4818c Binary files /dev/null and b/public/terrain/19/858595/353780.terrain differ diff --git a/public/terrain/19/858595/353781.terrain b/public/terrain/19/858595/353781.terrain new file mode 100644 index 000000000..144c4df6c Binary files /dev/null and b/public/terrain/19/858595/353781.terrain differ diff --git a/public/terrain/19/858595/353782.terrain b/public/terrain/19/858595/353782.terrain new file mode 100644 index 000000000..7c7ce6a3c Binary files /dev/null and b/public/terrain/19/858595/353782.terrain differ diff --git a/public/terrain/19/858595/353783.terrain b/public/terrain/19/858595/353783.terrain new file mode 100644 index 000000000..f72d5c934 Binary files /dev/null and b/public/terrain/19/858595/353783.terrain differ diff --git a/public/terrain/19/858595/353784.terrain b/public/terrain/19/858595/353784.terrain new file mode 100644 index 000000000..3d1130761 Binary files /dev/null and b/public/terrain/19/858595/353784.terrain differ diff --git a/public/terrain/19/858595/353785.terrain b/public/terrain/19/858595/353785.terrain new file mode 100644 index 000000000..8ec32c26a Binary files /dev/null and b/public/terrain/19/858595/353785.terrain differ diff --git a/public/terrain/19/858595/353786.terrain b/public/terrain/19/858595/353786.terrain new file mode 100644 index 000000000..92bdd684e Binary files /dev/null and b/public/terrain/19/858595/353786.terrain differ diff --git a/public/terrain/19/858595/353787.terrain b/public/terrain/19/858595/353787.terrain new file mode 100644 index 000000000..03a7c8b84 Binary files /dev/null and b/public/terrain/19/858595/353787.terrain differ diff --git a/public/terrain/19/858595/353788.terrain b/public/terrain/19/858595/353788.terrain new file mode 100644 index 000000000..e400b9f66 Binary files /dev/null and b/public/terrain/19/858595/353788.terrain differ diff --git a/public/terrain/19/858595/353789.terrain b/public/terrain/19/858595/353789.terrain new file mode 100644 index 000000000..1c4d837b8 Binary files /dev/null and b/public/terrain/19/858595/353789.terrain differ diff --git a/public/terrain/19/858595/353790.terrain b/public/terrain/19/858595/353790.terrain new file mode 100644 index 000000000..6b52a5ad1 Binary files /dev/null and b/public/terrain/19/858595/353790.terrain differ diff --git a/public/terrain/19/858595/353791.terrain b/public/terrain/19/858595/353791.terrain new file mode 100644 index 000000000..642742a5e Binary files /dev/null and b/public/terrain/19/858595/353791.terrain differ diff --git a/public/terrain/19/858595/353792.terrain b/public/terrain/19/858595/353792.terrain new file mode 100644 index 000000000..800089d29 Binary files /dev/null and b/public/terrain/19/858595/353792.terrain differ diff --git a/public/terrain/19/858595/353793.terrain b/public/terrain/19/858595/353793.terrain new file mode 100644 index 000000000..c452f3d36 Binary files /dev/null and b/public/terrain/19/858595/353793.terrain differ diff --git a/public/terrain/19/858595/353794.terrain b/public/terrain/19/858595/353794.terrain new file mode 100644 index 000000000..7f0a51715 Binary files /dev/null and b/public/terrain/19/858595/353794.terrain differ diff --git a/public/terrain/19/858595/353795.terrain b/public/terrain/19/858595/353795.terrain new file mode 100644 index 000000000..dd98caeae Binary files /dev/null and b/public/terrain/19/858595/353795.terrain differ diff --git a/public/terrain/19/858595/353796.terrain b/public/terrain/19/858595/353796.terrain new file mode 100644 index 000000000..1bb831fdb Binary files /dev/null and b/public/terrain/19/858595/353796.terrain differ diff --git a/public/terrain/19/858595/353797.terrain b/public/terrain/19/858595/353797.terrain new file mode 100644 index 000000000..74d9173b9 Binary files /dev/null and b/public/terrain/19/858595/353797.terrain differ diff --git a/public/terrain/19/858595/353798.terrain b/public/terrain/19/858595/353798.terrain new file mode 100644 index 000000000..696f80f3b Binary files /dev/null and b/public/terrain/19/858595/353798.terrain differ diff --git a/public/terrain/19/858595/353799.terrain b/public/terrain/19/858595/353799.terrain new file mode 100644 index 000000000..8d53aaf1e Binary files /dev/null and b/public/terrain/19/858595/353799.terrain differ diff --git a/public/terrain/19/858595/353800.terrain b/public/terrain/19/858595/353800.terrain new file mode 100644 index 000000000..bdad38a35 Binary files /dev/null and b/public/terrain/19/858595/353800.terrain differ diff --git a/public/terrain/19/858595/353801.terrain b/public/terrain/19/858595/353801.terrain new file mode 100644 index 000000000..4baf0f41d Binary files /dev/null and b/public/terrain/19/858595/353801.terrain differ diff --git a/public/terrain/19/858595/353802.terrain b/public/terrain/19/858595/353802.terrain new file mode 100644 index 000000000..548cbdbef Binary files /dev/null and b/public/terrain/19/858595/353802.terrain differ diff --git a/public/terrain/19/858595/353803.terrain b/public/terrain/19/858595/353803.terrain new file mode 100644 index 000000000..4fc5c2998 Binary files /dev/null and b/public/terrain/19/858595/353803.terrain differ diff --git a/public/terrain/19/858595/353804.terrain b/public/terrain/19/858595/353804.terrain new file mode 100644 index 000000000..2c5c8827d Binary files /dev/null and b/public/terrain/19/858595/353804.terrain differ diff --git a/public/terrain/19/858595/353805.terrain b/public/terrain/19/858595/353805.terrain new file mode 100644 index 000000000..56a448962 Binary files /dev/null and b/public/terrain/19/858595/353805.terrain differ diff --git a/public/terrain/19/858595/353806.terrain b/public/terrain/19/858595/353806.terrain new file mode 100644 index 000000000..4a3d5d9ca Binary files /dev/null and b/public/terrain/19/858595/353806.terrain differ diff --git a/public/terrain/19/858595/353807.terrain b/public/terrain/19/858595/353807.terrain new file mode 100644 index 000000000..b2b82c841 Binary files /dev/null and b/public/terrain/19/858595/353807.terrain differ diff --git a/public/terrain/19/858595/353808.terrain b/public/terrain/19/858595/353808.terrain new file mode 100644 index 000000000..c614b19a0 Binary files /dev/null and b/public/terrain/19/858595/353808.terrain differ diff --git a/public/terrain/19/858595/353809.terrain b/public/terrain/19/858595/353809.terrain new file mode 100644 index 000000000..f474b0182 Binary files /dev/null and b/public/terrain/19/858595/353809.terrain differ diff --git a/public/terrain/19/858595/353810.terrain b/public/terrain/19/858595/353810.terrain new file mode 100644 index 000000000..efc6eee36 Binary files /dev/null and b/public/terrain/19/858595/353810.terrain differ diff --git a/public/terrain/19/858595/353811.terrain b/public/terrain/19/858595/353811.terrain new file mode 100644 index 000000000..ad5e5d18d Binary files /dev/null and b/public/terrain/19/858595/353811.terrain differ diff --git a/public/terrain/19/858595/353812.terrain b/public/terrain/19/858595/353812.terrain new file mode 100644 index 000000000..a861154db Binary files /dev/null and b/public/terrain/19/858595/353812.terrain differ diff --git a/public/terrain/19/858595/353813.terrain b/public/terrain/19/858595/353813.terrain new file mode 100644 index 000000000..d66d3b0e4 Binary files /dev/null and b/public/terrain/19/858595/353813.terrain differ diff --git a/public/terrain/19/858595/353814.terrain b/public/terrain/19/858595/353814.terrain new file mode 100644 index 000000000..f2bb2a176 Binary files /dev/null and b/public/terrain/19/858595/353814.terrain differ diff --git a/public/terrain/19/858595/353815.terrain b/public/terrain/19/858595/353815.terrain new file mode 100644 index 000000000..5d3817173 Binary files /dev/null and b/public/terrain/19/858595/353815.terrain differ diff --git a/public/terrain/19/858595/353816.terrain b/public/terrain/19/858595/353816.terrain new file mode 100644 index 000000000..bb7ac861d Binary files /dev/null and b/public/terrain/19/858595/353816.terrain differ diff --git a/public/terrain/19/858595/353817.terrain b/public/terrain/19/858595/353817.terrain new file mode 100644 index 000000000..1d6f64327 Binary files /dev/null and b/public/terrain/19/858595/353817.terrain differ diff --git a/public/terrain/19/858595/353818.terrain b/public/terrain/19/858595/353818.terrain new file mode 100644 index 000000000..4badb553e Binary files /dev/null and b/public/terrain/19/858595/353818.terrain differ diff --git a/public/terrain/19/858595/353819.terrain b/public/terrain/19/858595/353819.terrain new file mode 100644 index 000000000..f421fd229 Binary files /dev/null and b/public/terrain/19/858595/353819.terrain differ diff --git a/public/terrain/19/858595/353820.terrain b/public/terrain/19/858595/353820.terrain new file mode 100644 index 000000000..4ef9e7e92 Binary files /dev/null and b/public/terrain/19/858595/353820.terrain differ diff --git a/public/terrain/19/858595/353821.terrain b/public/terrain/19/858595/353821.terrain new file mode 100644 index 000000000..1954d9159 Binary files /dev/null and b/public/terrain/19/858595/353821.terrain differ diff --git a/public/terrain/19/858595/353822.terrain b/public/terrain/19/858595/353822.terrain new file mode 100644 index 000000000..220512fd2 Binary files /dev/null and b/public/terrain/19/858595/353822.terrain differ diff --git a/public/terrain/19/858595/353823.terrain b/public/terrain/19/858595/353823.terrain new file mode 100644 index 000000000..648348985 Binary files /dev/null and b/public/terrain/19/858595/353823.terrain differ diff --git a/public/terrain/19/858595/353824.terrain b/public/terrain/19/858595/353824.terrain new file mode 100644 index 000000000..936f7ab3b Binary files /dev/null and b/public/terrain/19/858595/353824.terrain differ diff --git a/public/terrain/19/858595/353825.terrain b/public/terrain/19/858595/353825.terrain new file mode 100644 index 000000000..d73859bbe Binary files /dev/null and b/public/terrain/19/858595/353825.terrain differ diff --git a/public/terrain/19/858595/353826.terrain b/public/terrain/19/858595/353826.terrain new file mode 100644 index 000000000..a26625b54 Binary files /dev/null and b/public/terrain/19/858595/353826.terrain differ diff --git a/public/terrain/19/858595/353827.terrain b/public/terrain/19/858595/353827.terrain new file mode 100644 index 000000000..72b7e5ad2 Binary files /dev/null and b/public/terrain/19/858595/353827.terrain differ diff --git a/public/terrain/19/858595/353828.terrain b/public/terrain/19/858595/353828.terrain new file mode 100644 index 000000000..fb76ec9d1 Binary files /dev/null and b/public/terrain/19/858595/353828.terrain differ diff --git a/public/terrain/19/858595/353829.terrain b/public/terrain/19/858595/353829.terrain new file mode 100644 index 000000000..5b6e21645 Binary files /dev/null and b/public/terrain/19/858595/353829.terrain differ diff --git a/public/terrain/19/858595/353830.terrain b/public/terrain/19/858595/353830.terrain new file mode 100644 index 000000000..c272b69b5 Binary files /dev/null and b/public/terrain/19/858595/353830.terrain differ diff --git a/public/terrain/19/858595/353831.terrain b/public/terrain/19/858595/353831.terrain new file mode 100644 index 000000000..093832b34 Binary files /dev/null and b/public/terrain/19/858595/353831.terrain differ diff --git a/public/terrain/19/858595/353832.terrain b/public/terrain/19/858595/353832.terrain new file mode 100644 index 000000000..2d9cb0b5b Binary files /dev/null and b/public/terrain/19/858595/353832.terrain differ diff --git a/public/terrain/19/858595/353833.terrain b/public/terrain/19/858595/353833.terrain new file mode 100644 index 000000000..ef1f7de91 Binary files /dev/null and b/public/terrain/19/858595/353833.terrain differ diff --git a/public/terrain/19/858595/353834.terrain b/public/terrain/19/858595/353834.terrain new file mode 100644 index 000000000..0895353ff Binary files /dev/null and b/public/terrain/19/858595/353834.terrain differ diff --git a/public/terrain/19/858595/353835.terrain b/public/terrain/19/858595/353835.terrain new file mode 100644 index 000000000..6bb747ab0 Binary files /dev/null and b/public/terrain/19/858595/353835.terrain differ diff --git a/public/terrain/19/858595/353836.terrain b/public/terrain/19/858595/353836.terrain new file mode 100644 index 000000000..7035a327e Binary files /dev/null and b/public/terrain/19/858595/353836.terrain differ diff --git a/public/terrain/19/858595/353837.terrain b/public/terrain/19/858595/353837.terrain new file mode 100644 index 000000000..0491fb330 Binary files /dev/null and b/public/terrain/19/858595/353837.terrain differ diff --git a/public/terrain/19/858595/353838.terrain b/public/terrain/19/858595/353838.terrain new file mode 100644 index 000000000..601ec080b Binary files /dev/null and b/public/terrain/19/858595/353838.terrain differ diff --git a/public/terrain/19/858595/353839.terrain b/public/terrain/19/858595/353839.terrain new file mode 100644 index 000000000..1e82f1d74 Binary files /dev/null and b/public/terrain/19/858595/353839.terrain differ diff --git a/public/terrain/19/858595/353840.terrain b/public/terrain/19/858595/353840.terrain new file mode 100644 index 000000000..5a5ea523b Binary files /dev/null and b/public/terrain/19/858595/353840.terrain differ diff --git a/public/terrain/19/858595/353841.terrain b/public/terrain/19/858595/353841.terrain new file mode 100644 index 000000000..b1bb3956d Binary files /dev/null and b/public/terrain/19/858595/353841.terrain differ diff --git a/public/terrain/19/858595/353842.terrain b/public/terrain/19/858595/353842.terrain new file mode 100644 index 000000000..d61c95ec4 Binary files /dev/null and b/public/terrain/19/858595/353842.terrain differ diff --git a/public/terrain/19/858595/353843.terrain b/public/terrain/19/858595/353843.terrain new file mode 100644 index 000000000..58e7a2e11 Binary files /dev/null and b/public/terrain/19/858595/353843.terrain differ diff --git a/public/terrain/19/858595/353844.terrain b/public/terrain/19/858595/353844.terrain new file mode 100644 index 000000000..ef12421ea Binary files /dev/null and b/public/terrain/19/858595/353844.terrain differ diff --git a/public/terrain/19/858595/353845.terrain b/public/terrain/19/858595/353845.terrain new file mode 100644 index 000000000..8203e7aa2 Binary files /dev/null and b/public/terrain/19/858595/353845.terrain differ diff --git a/public/terrain/19/858595/353846.terrain b/public/terrain/19/858595/353846.terrain new file mode 100644 index 000000000..165ec66d3 Binary files /dev/null and b/public/terrain/19/858595/353846.terrain differ diff --git a/public/terrain/19/858595/353847.terrain b/public/terrain/19/858595/353847.terrain new file mode 100644 index 000000000..afeea53ff Binary files /dev/null and b/public/terrain/19/858595/353847.terrain differ diff --git a/public/terrain/19/858595/353848.terrain b/public/terrain/19/858595/353848.terrain new file mode 100644 index 000000000..8f1ca1a31 Binary files /dev/null and b/public/terrain/19/858595/353848.terrain differ diff --git a/public/terrain/19/858595/353849.terrain b/public/terrain/19/858595/353849.terrain new file mode 100644 index 000000000..6869f5d2f Binary files /dev/null and b/public/terrain/19/858595/353849.terrain differ diff --git a/public/terrain/19/858595/353850.terrain b/public/terrain/19/858595/353850.terrain new file mode 100644 index 000000000..81ba648a1 Binary files /dev/null and b/public/terrain/19/858595/353850.terrain differ diff --git a/public/terrain/19/858595/353851.terrain b/public/terrain/19/858595/353851.terrain new file mode 100644 index 000000000..28203daf0 Binary files /dev/null and b/public/terrain/19/858595/353851.terrain differ diff --git a/public/terrain/19/858595/353852.terrain b/public/terrain/19/858595/353852.terrain new file mode 100644 index 000000000..6fbb5cb56 Binary files /dev/null and b/public/terrain/19/858595/353852.terrain differ diff --git a/public/terrain/19/858595/353853.terrain b/public/terrain/19/858595/353853.terrain new file mode 100644 index 000000000..50986c60f Binary files /dev/null and b/public/terrain/19/858595/353853.terrain differ diff --git a/public/terrain/19/858595/353854.terrain b/public/terrain/19/858595/353854.terrain new file mode 100644 index 000000000..e15e8f573 Binary files /dev/null and b/public/terrain/19/858595/353854.terrain differ diff --git a/public/terrain/19/858595/353855.terrain b/public/terrain/19/858595/353855.terrain new file mode 100644 index 000000000..060708d2b Binary files /dev/null and b/public/terrain/19/858595/353855.terrain differ diff --git a/public/terrain/19/858595/353856.terrain b/public/terrain/19/858595/353856.terrain new file mode 100644 index 000000000..9534de73f Binary files /dev/null and b/public/terrain/19/858595/353856.terrain differ diff --git a/public/terrain/19/858595/353857.terrain b/public/terrain/19/858595/353857.terrain new file mode 100644 index 000000000..8b94a12fc Binary files /dev/null and b/public/terrain/19/858595/353857.terrain differ diff --git a/public/terrain/19/858595/353858.terrain b/public/terrain/19/858595/353858.terrain new file mode 100644 index 000000000..53208e601 Binary files /dev/null and b/public/terrain/19/858595/353858.terrain differ diff --git a/public/terrain/19/858595/353859.terrain b/public/terrain/19/858595/353859.terrain new file mode 100644 index 000000000..c7d3a20b3 Binary files /dev/null and b/public/terrain/19/858595/353859.terrain differ diff --git a/public/terrain/19/858595/353860.terrain b/public/terrain/19/858595/353860.terrain new file mode 100644 index 000000000..21a6e8bbf Binary files /dev/null and b/public/terrain/19/858595/353860.terrain differ diff --git a/public/terrain/19/858595/353861.terrain b/public/terrain/19/858595/353861.terrain new file mode 100644 index 000000000..c060bb4a8 Binary files /dev/null and b/public/terrain/19/858595/353861.terrain differ diff --git a/public/terrain/19/858595/353862.terrain b/public/terrain/19/858595/353862.terrain new file mode 100644 index 000000000..ba1d3ca0f Binary files /dev/null and b/public/terrain/19/858595/353862.terrain differ diff --git a/public/terrain/19/858595/353863.terrain b/public/terrain/19/858595/353863.terrain new file mode 100644 index 000000000..9d1331b3f Binary files /dev/null and b/public/terrain/19/858595/353863.terrain differ diff --git a/public/terrain/19/858595/353864.terrain b/public/terrain/19/858595/353864.terrain new file mode 100644 index 000000000..73ee98715 Binary files /dev/null and b/public/terrain/19/858595/353864.terrain differ diff --git a/public/terrain/19/858595/353865.terrain b/public/terrain/19/858595/353865.terrain new file mode 100644 index 000000000..f78c92a4e Binary files /dev/null and b/public/terrain/19/858595/353865.terrain differ diff --git a/public/terrain/19/858595/353866.terrain b/public/terrain/19/858595/353866.terrain new file mode 100644 index 000000000..ded2e52f7 Binary files /dev/null and b/public/terrain/19/858595/353866.terrain differ diff --git a/public/terrain/19/858595/353867.terrain b/public/terrain/19/858595/353867.terrain new file mode 100644 index 000000000..926cd4197 Binary files /dev/null and b/public/terrain/19/858595/353867.terrain differ diff --git a/public/terrain/19/858595/353868.terrain b/public/terrain/19/858595/353868.terrain new file mode 100644 index 000000000..584e87f49 Binary files /dev/null and b/public/terrain/19/858595/353868.terrain differ diff --git a/public/terrain/19/858595/353869.terrain b/public/terrain/19/858595/353869.terrain new file mode 100644 index 000000000..efd9b79e1 Binary files /dev/null and b/public/terrain/19/858595/353869.terrain differ diff --git a/public/terrain/19/858595/353870.terrain b/public/terrain/19/858595/353870.terrain new file mode 100644 index 000000000..84f651241 Binary files /dev/null and b/public/terrain/19/858595/353870.terrain differ diff --git a/public/terrain/19/858595/353871.terrain b/public/terrain/19/858595/353871.terrain new file mode 100644 index 000000000..7412de1a5 Binary files /dev/null and b/public/terrain/19/858595/353871.terrain differ diff --git a/public/terrain/19/858595/353872.terrain b/public/terrain/19/858595/353872.terrain new file mode 100644 index 000000000..372981fc3 Binary files /dev/null and b/public/terrain/19/858595/353872.terrain differ diff --git a/public/terrain/19/858595/353873.terrain b/public/terrain/19/858595/353873.terrain new file mode 100644 index 000000000..cf795e315 Binary files /dev/null and b/public/terrain/19/858595/353873.terrain differ diff --git a/public/terrain/19/858595/353874.terrain b/public/terrain/19/858595/353874.terrain new file mode 100644 index 000000000..f9be7c76d Binary files /dev/null and b/public/terrain/19/858595/353874.terrain differ diff --git a/public/terrain/19/858595/353875.terrain b/public/terrain/19/858595/353875.terrain new file mode 100644 index 000000000..74c9bcccc Binary files /dev/null and b/public/terrain/19/858595/353875.terrain differ diff --git a/public/terrain/19/858595/353876.terrain b/public/terrain/19/858595/353876.terrain new file mode 100644 index 000000000..b78f8a50b Binary files /dev/null and b/public/terrain/19/858595/353876.terrain differ diff --git a/public/terrain/19/858595/353877.terrain b/public/terrain/19/858595/353877.terrain new file mode 100644 index 000000000..097599bc2 Binary files /dev/null and b/public/terrain/19/858595/353877.terrain differ diff --git a/public/terrain/19/858595/353878.terrain b/public/terrain/19/858595/353878.terrain new file mode 100644 index 000000000..f4a0a0145 Binary files /dev/null and b/public/terrain/19/858595/353878.terrain differ diff --git a/public/terrain/19/858595/353879.terrain b/public/terrain/19/858595/353879.terrain new file mode 100644 index 000000000..0cef35a85 Binary files /dev/null and b/public/terrain/19/858595/353879.terrain differ diff --git a/public/terrain/19/858595/353880.terrain b/public/terrain/19/858595/353880.terrain new file mode 100644 index 000000000..26d0c9292 Binary files /dev/null and b/public/terrain/19/858595/353880.terrain differ diff --git a/public/terrain/19/858595/353881.terrain b/public/terrain/19/858595/353881.terrain new file mode 100644 index 000000000..bd92a076b Binary files /dev/null and b/public/terrain/19/858595/353881.terrain differ diff --git a/public/terrain/19/858595/353882.terrain b/public/terrain/19/858595/353882.terrain new file mode 100644 index 000000000..c4a597eba Binary files /dev/null and b/public/terrain/19/858595/353882.terrain differ diff --git a/public/terrain/19/858595/353883.terrain b/public/terrain/19/858595/353883.terrain new file mode 100644 index 000000000..e778cde1f Binary files /dev/null and b/public/terrain/19/858595/353883.terrain differ diff --git a/public/terrain/19/858595/353884.terrain b/public/terrain/19/858595/353884.terrain new file mode 100644 index 000000000..75638f9bb Binary files /dev/null and b/public/terrain/19/858595/353884.terrain differ diff --git a/public/terrain/19/858595/353885.terrain b/public/terrain/19/858595/353885.terrain new file mode 100644 index 000000000..9313b6506 Binary files /dev/null and b/public/terrain/19/858595/353885.terrain differ diff --git a/public/terrain/19/858595/353886.terrain b/public/terrain/19/858595/353886.terrain new file mode 100644 index 000000000..e72370cba Binary files /dev/null and b/public/terrain/19/858595/353886.terrain differ diff --git a/public/terrain/19/858595/353887.terrain b/public/terrain/19/858595/353887.terrain new file mode 100644 index 000000000..c58a0576c Binary files /dev/null and b/public/terrain/19/858595/353887.terrain differ diff --git a/public/terrain/19/858595/353888.terrain b/public/terrain/19/858595/353888.terrain new file mode 100644 index 000000000..75bd64b15 Binary files /dev/null and b/public/terrain/19/858595/353888.terrain differ diff --git a/public/terrain/19/858595/353889.terrain b/public/terrain/19/858595/353889.terrain new file mode 100644 index 000000000..d7960fdc1 Binary files /dev/null and b/public/terrain/19/858595/353889.terrain differ diff --git a/public/terrain/19/858595/353890.terrain b/public/terrain/19/858595/353890.terrain new file mode 100644 index 000000000..73459e883 Binary files /dev/null and b/public/terrain/19/858595/353890.terrain differ diff --git a/public/terrain/19/858595/353891.terrain b/public/terrain/19/858595/353891.terrain new file mode 100644 index 000000000..74793530e Binary files /dev/null and b/public/terrain/19/858595/353891.terrain differ diff --git a/public/terrain/19/858595/353892.terrain b/public/terrain/19/858595/353892.terrain new file mode 100644 index 000000000..69165cdb2 Binary files /dev/null and b/public/terrain/19/858595/353892.terrain differ diff --git a/public/terrain/19/858595/353893.terrain b/public/terrain/19/858595/353893.terrain new file mode 100644 index 000000000..f574a743f Binary files /dev/null and b/public/terrain/19/858595/353893.terrain differ diff --git a/public/terrain/19/858595/353894.terrain b/public/terrain/19/858595/353894.terrain new file mode 100644 index 000000000..f611036b5 Binary files /dev/null and b/public/terrain/19/858595/353894.terrain differ diff --git a/public/terrain/19/858595/353895.terrain b/public/terrain/19/858595/353895.terrain new file mode 100644 index 000000000..bb37044ff Binary files /dev/null and b/public/terrain/19/858595/353895.terrain differ diff --git a/public/terrain/19/858595/353896.terrain b/public/terrain/19/858595/353896.terrain new file mode 100644 index 000000000..b003135b7 Binary files /dev/null and b/public/terrain/19/858595/353896.terrain differ diff --git a/public/terrain/19/858595/353897.terrain b/public/terrain/19/858595/353897.terrain new file mode 100644 index 000000000..8e02657cd Binary files /dev/null and b/public/terrain/19/858595/353897.terrain differ diff --git a/public/terrain/19/858595/353898.terrain b/public/terrain/19/858595/353898.terrain new file mode 100644 index 000000000..055c225fc Binary files /dev/null and b/public/terrain/19/858595/353898.terrain differ diff --git a/public/terrain/19/858595/353899.terrain b/public/terrain/19/858595/353899.terrain new file mode 100644 index 000000000..3cf5fea52 Binary files /dev/null and b/public/terrain/19/858595/353899.terrain differ diff --git a/public/terrain/19/858595/353900.terrain b/public/terrain/19/858595/353900.terrain new file mode 100644 index 000000000..3780c08c8 Binary files /dev/null and b/public/terrain/19/858595/353900.terrain differ diff --git a/public/terrain/19/858595/353901.terrain b/public/terrain/19/858595/353901.terrain new file mode 100644 index 000000000..b2fee9e6d Binary files /dev/null and b/public/terrain/19/858595/353901.terrain differ diff --git a/public/terrain/19/858595/353902.terrain b/public/terrain/19/858595/353902.terrain new file mode 100644 index 000000000..81cec04a7 Binary files /dev/null and b/public/terrain/19/858595/353902.terrain differ diff --git a/public/terrain/19/858595/353903.terrain b/public/terrain/19/858595/353903.terrain new file mode 100644 index 000000000..7d3951a8c Binary files /dev/null and b/public/terrain/19/858595/353903.terrain differ diff --git a/public/terrain/19/858595/353904.terrain b/public/terrain/19/858595/353904.terrain new file mode 100644 index 000000000..248460043 Binary files /dev/null and b/public/terrain/19/858595/353904.terrain differ diff --git a/public/terrain/19/858595/353905.terrain b/public/terrain/19/858595/353905.terrain new file mode 100644 index 000000000..185012240 Binary files /dev/null and b/public/terrain/19/858595/353905.terrain differ diff --git a/public/terrain/19/858595/353906.terrain b/public/terrain/19/858595/353906.terrain new file mode 100644 index 000000000..068689684 Binary files /dev/null and b/public/terrain/19/858595/353906.terrain differ diff --git a/public/terrain/19/858595/353907.terrain b/public/terrain/19/858595/353907.terrain new file mode 100644 index 000000000..b35b04acd Binary files /dev/null and b/public/terrain/19/858595/353907.terrain differ diff --git a/public/terrain/19/858595/353908.terrain b/public/terrain/19/858595/353908.terrain new file mode 100644 index 000000000..c93206ebb Binary files /dev/null and b/public/terrain/19/858595/353908.terrain differ diff --git a/public/terrain/19/858595/353909.terrain b/public/terrain/19/858595/353909.terrain new file mode 100644 index 000000000..492133e00 Binary files /dev/null and b/public/terrain/19/858595/353909.terrain differ diff --git a/public/terrain/19/858595/353910.terrain b/public/terrain/19/858595/353910.terrain new file mode 100644 index 000000000..b5b15882b Binary files /dev/null and b/public/terrain/19/858595/353910.terrain differ diff --git a/public/terrain/19/858595/353911.terrain b/public/terrain/19/858595/353911.terrain new file mode 100644 index 000000000..190074e60 Binary files /dev/null and b/public/terrain/19/858595/353911.terrain differ diff --git a/public/terrain/19/858595/353912.terrain b/public/terrain/19/858595/353912.terrain new file mode 100644 index 000000000..6da622d3a Binary files /dev/null and b/public/terrain/19/858595/353912.terrain differ diff --git a/public/terrain/19/858595/353913.terrain b/public/terrain/19/858595/353913.terrain new file mode 100644 index 000000000..d61a37e18 Binary files /dev/null and b/public/terrain/19/858595/353913.terrain differ diff --git a/public/terrain/19/858595/353914.terrain b/public/terrain/19/858595/353914.terrain new file mode 100644 index 000000000..725422cdb Binary files /dev/null and b/public/terrain/19/858595/353914.terrain differ diff --git a/public/terrain/19/858595/353915.terrain b/public/terrain/19/858595/353915.terrain new file mode 100644 index 000000000..5b304644a Binary files /dev/null and b/public/terrain/19/858595/353915.terrain differ diff --git a/public/terrain/19/858595/353916.terrain b/public/terrain/19/858595/353916.terrain new file mode 100644 index 000000000..ca702ce51 Binary files /dev/null and b/public/terrain/19/858595/353916.terrain differ diff --git a/public/terrain/19/858595/353917.terrain b/public/terrain/19/858595/353917.terrain new file mode 100644 index 000000000..87aab7b3f Binary files /dev/null and b/public/terrain/19/858595/353917.terrain differ diff --git a/public/terrain/19/858595/353918.terrain b/public/terrain/19/858595/353918.terrain new file mode 100644 index 000000000..89f68bbab Binary files /dev/null and b/public/terrain/19/858595/353918.terrain differ diff --git a/public/terrain/19/858595/353919.terrain b/public/terrain/19/858595/353919.terrain new file mode 100644 index 000000000..9ab8744bc Binary files /dev/null and b/public/terrain/19/858595/353919.terrain differ diff --git a/public/terrain/19/858595/353920.terrain b/public/terrain/19/858595/353920.terrain new file mode 100644 index 000000000..5184af75b Binary files /dev/null and b/public/terrain/19/858595/353920.terrain differ diff --git a/public/terrain/19/858595/353921.terrain b/public/terrain/19/858595/353921.terrain new file mode 100644 index 000000000..61ad1abeb Binary files /dev/null and b/public/terrain/19/858595/353921.terrain differ diff --git a/public/terrain/19/858595/353922.terrain b/public/terrain/19/858595/353922.terrain new file mode 100644 index 000000000..99a95bb8f Binary files /dev/null and b/public/terrain/19/858595/353922.terrain differ diff --git a/public/terrain/19/858595/353923.terrain b/public/terrain/19/858595/353923.terrain new file mode 100644 index 000000000..fe5f1ec55 Binary files /dev/null and b/public/terrain/19/858595/353923.terrain differ diff --git a/public/terrain/19/858595/353924.terrain b/public/terrain/19/858595/353924.terrain new file mode 100644 index 000000000..d1fbadcdd Binary files /dev/null and b/public/terrain/19/858595/353924.terrain differ diff --git a/public/terrain/19/858595/353925.terrain b/public/terrain/19/858595/353925.terrain new file mode 100644 index 000000000..deec9a2f9 Binary files /dev/null and b/public/terrain/19/858595/353925.terrain differ diff --git a/public/terrain/19/858595/353926.terrain b/public/terrain/19/858595/353926.terrain new file mode 100644 index 000000000..f21721b4b Binary files /dev/null and b/public/terrain/19/858595/353926.terrain differ diff --git a/public/terrain/19/858595/353927.terrain b/public/terrain/19/858595/353927.terrain new file mode 100644 index 000000000..3344c1923 Binary files /dev/null and b/public/terrain/19/858595/353927.terrain differ diff --git a/public/terrain/19/858595/353928.terrain b/public/terrain/19/858595/353928.terrain new file mode 100644 index 000000000..d76c58cd6 Binary files /dev/null and b/public/terrain/19/858595/353928.terrain differ diff --git a/public/terrain/19/858595/353929.terrain b/public/terrain/19/858595/353929.terrain new file mode 100644 index 000000000..1aa8b4aac Binary files /dev/null and b/public/terrain/19/858595/353929.terrain differ diff --git a/public/terrain/19/858595/353930.terrain b/public/terrain/19/858595/353930.terrain new file mode 100644 index 000000000..941efd952 Binary files /dev/null and b/public/terrain/19/858595/353930.terrain differ diff --git a/public/terrain/19/858595/353931.terrain b/public/terrain/19/858595/353931.terrain new file mode 100644 index 000000000..bed0cec29 Binary files /dev/null and b/public/terrain/19/858595/353931.terrain differ diff --git a/public/terrain/19/858595/353932.terrain b/public/terrain/19/858595/353932.terrain new file mode 100644 index 000000000..f677d488f Binary files /dev/null and b/public/terrain/19/858595/353932.terrain differ diff --git a/public/terrain/19/858595/353933.terrain b/public/terrain/19/858595/353933.terrain new file mode 100644 index 000000000..be66b000d Binary files /dev/null and b/public/terrain/19/858595/353933.terrain differ diff --git a/public/terrain/19/858595/353934.terrain b/public/terrain/19/858595/353934.terrain new file mode 100644 index 000000000..65af7c1ec Binary files /dev/null and b/public/terrain/19/858595/353934.terrain differ diff --git a/public/terrain/19/858595/353935.terrain b/public/terrain/19/858595/353935.terrain new file mode 100644 index 000000000..f97147450 Binary files /dev/null and b/public/terrain/19/858595/353935.terrain differ diff --git a/public/terrain/19/858595/353936.terrain b/public/terrain/19/858595/353936.terrain new file mode 100644 index 000000000..30caabcac Binary files /dev/null and b/public/terrain/19/858595/353936.terrain differ diff --git a/public/terrain/19/858595/353937.terrain b/public/terrain/19/858595/353937.terrain new file mode 100644 index 000000000..906028a48 Binary files /dev/null and b/public/terrain/19/858595/353937.terrain differ diff --git a/public/terrain/19/858595/353938.terrain b/public/terrain/19/858595/353938.terrain new file mode 100644 index 000000000..c52a40cdc Binary files /dev/null and b/public/terrain/19/858595/353938.terrain differ diff --git a/public/terrain/19/858595/353939.terrain b/public/terrain/19/858595/353939.terrain new file mode 100644 index 000000000..bb9bc1908 Binary files /dev/null and b/public/terrain/19/858595/353939.terrain differ diff --git a/public/terrain/19/858595/353940.terrain b/public/terrain/19/858595/353940.terrain new file mode 100644 index 000000000..6add3fbf5 Binary files /dev/null and b/public/terrain/19/858595/353940.terrain differ diff --git a/public/terrain/19/858595/353941.terrain b/public/terrain/19/858595/353941.terrain new file mode 100644 index 000000000..bc6058476 Binary files /dev/null and b/public/terrain/19/858595/353941.terrain differ diff --git a/public/terrain/19/858595/353942.terrain b/public/terrain/19/858595/353942.terrain new file mode 100644 index 000000000..4d332a6b9 Binary files /dev/null and b/public/terrain/19/858595/353942.terrain differ diff --git a/public/terrain/19/858595/353943.terrain b/public/terrain/19/858595/353943.terrain new file mode 100644 index 000000000..2a60e5d90 Binary files /dev/null and b/public/terrain/19/858595/353943.terrain differ diff --git a/public/terrain/19/858595/353944.terrain b/public/terrain/19/858595/353944.terrain new file mode 100644 index 000000000..3f7b739b1 Binary files /dev/null and b/public/terrain/19/858595/353944.terrain differ diff --git a/public/terrain/19/858595/353945.terrain b/public/terrain/19/858595/353945.terrain new file mode 100644 index 000000000..8f347ce3c Binary files /dev/null and b/public/terrain/19/858595/353945.terrain differ diff --git a/public/terrain/19/858595/353946.terrain b/public/terrain/19/858595/353946.terrain new file mode 100644 index 000000000..959d1af4d Binary files /dev/null and b/public/terrain/19/858595/353946.terrain differ diff --git a/public/terrain/19/858595/353947.terrain b/public/terrain/19/858595/353947.terrain new file mode 100644 index 000000000..3fb94d93a Binary files /dev/null and b/public/terrain/19/858595/353947.terrain differ diff --git a/public/terrain/19/858595/353948.terrain b/public/terrain/19/858595/353948.terrain new file mode 100644 index 000000000..515b1cc99 Binary files /dev/null and b/public/terrain/19/858595/353948.terrain differ diff --git a/public/terrain/19/858595/353949.terrain b/public/terrain/19/858595/353949.terrain new file mode 100644 index 000000000..d27806bde Binary files /dev/null and b/public/terrain/19/858595/353949.terrain differ diff --git a/public/terrain/19/858595/353950.terrain b/public/terrain/19/858595/353950.terrain new file mode 100644 index 000000000..4c83ede05 Binary files /dev/null and b/public/terrain/19/858595/353950.terrain differ diff --git a/public/terrain/19/858595/353951.terrain b/public/terrain/19/858595/353951.terrain new file mode 100644 index 000000000..598bf50d0 Binary files /dev/null and b/public/terrain/19/858595/353951.terrain differ diff --git a/public/terrain/19/858595/353952.terrain b/public/terrain/19/858595/353952.terrain new file mode 100644 index 000000000..31539959a Binary files /dev/null and b/public/terrain/19/858595/353952.terrain differ diff --git a/public/terrain/19/858595/353953.terrain b/public/terrain/19/858595/353953.terrain new file mode 100644 index 000000000..ded63874a Binary files /dev/null and b/public/terrain/19/858595/353953.terrain differ diff --git a/public/terrain/19/858595/353954.terrain b/public/terrain/19/858595/353954.terrain new file mode 100644 index 000000000..f26ea0e71 Binary files /dev/null and b/public/terrain/19/858595/353954.terrain differ diff --git a/public/terrain/19/858595/353955.terrain b/public/terrain/19/858595/353955.terrain new file mode 100644 index 000000000..b7d22f7b5 Binary files /dev/null and b/public/terrain/19/858595/353955.terrain differ diff --git a/public/terrain/19/858595/353956.terrain b/public/terrain/19/858595/353956.terrain new file mode 100644 index 000000000..e6af45556 Binary files /dev/null and b/public/terrain/19/858595/353956.terrain differ diff --git a/public/terrain/19/858595/353957.terrain b/public/terrain/19/858595/353957.terrain new file mode 100644 index 000000000..5168cab7e Binary files /dev/null and b/public/terrain/19/858595/353957.terrain differ diff --git a/public/terrain/19/858595/353958.terrain b/public/terrain/19/858595/353958.terrain new file mode 100644 index 000000000..0aed1052d Binary files /dev/null and b/public/terrain/19/858595/353958.terrain differ diff --git a/public/terrain/19/858595/353959.terrain b/public/terrain/19/858595/353959.terrain new file mode 100644 index 000000000..2efa2246b Binary files /dev/null and b/public/terrain/19/858595/353959.terrain differ diff --git a/public/terrain/19/858595/353960.terrain b/public/terrain/19/858595/353960.terrain new file mode 100644 index 000000000..5b7da1735 Binary files /dev/null and b/public/terrain/19/858595/353960.terrain differ diff --git a/public/terrain/19/858595/353961.terrain b/public/terrain/19/858595/353961.terrain new file mode 100644 index 000000000..ec083a360 Binary files /dev/null and b/public/terrain/19/858595/353961.terrain differ diff --git a/public/terrain/19/858595/353962.terrain b/public/terrain/19/858595/353962.terrain new file mode 100644 index 000000000..73e7215f3 Binary files /dev/null and b/public/terrain/19/858595/353962.terrain differ diff --git a/public/terrain/19/858595/353963.terrain b/public/terrain/19/858595/353963.terrain new file mode 100644 index 000000000..8e1d87510 Binary files /dev/null and b/public/terrain/19/858595/353963.terrain differ diff --git a/public/terrain/19/858595/353964.terrain b/public/terrain/19/858595/353964.terrain new file mode 100644 index 000000000..709d46d14 Binary files /dev/null and b/public/terrain/19/858595/353964.terrain differ diff --git a/public/terrain/19/858595/353965.terrain b/public/terrain/19/858595/353965.terrain new file mode 100644 index 000000000..ca89bb522 Binary files /dev/null and b/public/terrain/19/858595/353965.terrain differ diff --git a/public/terrain/19/858595/353966.terrain b/public/terrain/19/858595/353966.terrain new file mode 100644 index 000000000..ac07ba9a1 Binary files /dev/null and b/public/terrain/19/858595/353966.terrain differ diff --git a/public/terrain/19/858595/353967.terrain b/public/terrain/19/858595/353967.terrain new file mode 100644 index 000000000..f5b8387f2 Binary files /dev/null and b/public/terrain/19/858595/353967.terrain differ diff --git a/public/terrain/19/858595/353968.terrain b/public/terrain/19/858595/353968.terrain new file mode 100644 index 000000000..6dda2227c Binary files /dev/null and b/public/terrain/19/858595/353968.terrain differ diff --git a/public/terrain/19/858595/353969.terrain b/public/terrain/19/858595/353969.terrain new file mode 100644 index 000000000..31e8b0fbf Binary files /dev/null and b/public/terrain/19/858595/353969.terrain differ diff --git a/public/terrain/19/858595/353970.terrain b/public/terrain/19/858595/353970.terrain new file mode 100644 index 000000000..05c329890 Binary files /dev/null and b/public/terrain/19/858595/353970.terrain differ diff --git a/public/terrain/19/858595/353971.terrain b/public/terrain/19/858595/353971.terrain new file mode 100644 index 000000000..d1bf3b0bc Binary files /dev/null and b/public/terrain/19/858595/353971.terrain differ diff --git a/public/terrain/19/858595/353972.terrain b/public/terrain/19/858595/353972.terrain new file mode 100644 index 000000000..010ea0ab5 Binary files /dev/null and b/public/terrain/19/858595/353972.terrain differ diff --git a/public/terrain/19/858595/353973.terrain b/public/terrain/19/858595/353973.terrain new file mode 100644 index 000000000..cb60ea87f Binary files /dev/null and b/public/terrain/19/858595/353973.terrain differ diff --git a/public/terrain/19/858595/353974.terrain b/public/terrain/19/858595/353974.terrain new file mode 100644 index 000000000..95c6aff1f Binary files /dev/null and b/public/terrain/19/858595/353974.terrain differ diff --git a/public/terrain/19/858595/353975.terrain b/public/terrain/19/858595/353975.terrain new file mode 100644 index 000000000..c51bb345f Binary files /dev/null and b/public/terrain/19/858595/353975.terrain differ diff --git a/public/terrain/19/858595/353976.terrain b/public/terrain/19/858595/353976.terrain new file mode 100644 index 000000000..22ed92bbe Binary files /dev/null and b/public/terrain/19/858595/353976.terrain differ diff --git a/public/terrain/19/858595/353977.terrain b/public/terrain/19/858595/353977.terrain new file mode 100644 index 000000000..ca37be273 Binary files /dev/null and b/public/terrain/19/858595/353977.terrain differ diff --git a/public/terrain/19/858595/353978.terrain b/public/terrain/19/858595/353978.terrain new file mode 100644 index 000000000..d65c5e01e Binary files /dev/null and b/public/terrain/19/858595/353978.terrain differ diff --git a/public/terrain/19/858595/353979.terrain b/public/terrain/19/858595/353979.terrain new file mode 100644 index 000000000..b8097784c Binary files /dev/null and b/public/terrain/19/858595/353979.terrain differ diff --git a/public/terrain/19/858595/353980.terrain b/public/terrain/19/858595/353980.terrain new file mode 100644 index 000000000..83339e4df Binary files /dev/null and b/public/terrain/19/858595/353980.terrain differ diff --git a/public/terrain/19/858595/353981.terrain b/public/terrain/19/858595/353981.terrain new file mode 100644 index 000000000..2a07aa181 Binary files /dev/null and b/public/terrain/19/858595/353981.terrain differ diff --git a/public/terrain/19/858595/353982.terrain b/public/terrain/19/858595/353982.terrain new file mode 100644 index 000000000..540b9f480 Binary files /dev/null and b/public/terrain/19/858595/353982.terrain differ diff --git a/public/terrain/19/858595/353983.terrain b/public/terrain/19/858595/353983.terrain new file mode 100644 index 000000000..b8e69d2dc Binary files /dev/null and b/public/terrain/19/858595/353983.terrain differ diff --git a/public/terrain/19/858595/353984.terrain b/public/terrain/19/858595/353984.terrain new file mode 100644 index 000000000..53525de82 Binary files /dev/null and b/public/terrain/19/858595/353984.terrain differ diff --git a/public/terrain/19/858595/353985.terrain b/public/terrain/19/858595/353985.terrain new file mode 100644 index 000000000..3c67a8cc2 Binary files /dev/null and b/public/terrain/19/858595/353985.terrain differ diff --git a/public/terrain/19/858595/353986.terrain b/public/terrain/19/858595/353986.terrain new file mode 100644 index 000000000..307818a9c Binary files /dev/null and b/public/terrain/19/858595/353986.terrain differ diff --git a/public/terrain/19/858595/353987.terrain b/public/terrain/19/858595/353987.terrain new file mode 100644 index 000000000..250580dcf Binary files /dev/null and b/public/terrain/19/858595/353987.terrain differ diff --git a/public/terrain/19/858595/353988.terrain b/public/terrain/19/858595/353988.terrain new file mode 100644 index 000000000..a15b16a05 Binary files /dev/null and b/public/terrain/19/858595/353988.terrain differ diff --git a/public/terrain/19/858595/353989.terrain b/public/terrain/19/858595/353989.terrain new file mode 100644 index 000000000..efd61eed4 Binary files /dev/null and b/public/terrain/19/858595/353989.terrain differ diff --git a/public/terrain/19/858595/353990.terrain b/public/terrain/19/858595/353990.terrain new file mode 100644 index 000000000..702d655a6 Binary files /dev/null and b/public/terrain/19/858595/353990.terrain differ diff --git a/public/terrain/19/858595/353991.terrain b/public/terrain/19/858595/353991.terrain new file mode 100644 index 000000000..294c446bb Binary files /dev/null and b/public/terrain/19/858595/353991.terrain differ diff --git a/public/terrain/19/858595/353992.terrain b/public/terrain/19/858595/353992.terrain new file mode 100644 index 000000000..6bd84db8a Binary files /dev/null and b/public/terrain/19/858595/353992.terrain differ diff --git a/public/terrain/19/858595/353993.terrain b/public/terrain/19/858595/353993.terrain new file mode 100644 index 000000000..b8be4f2ef Binary files /dev/null and b/public/terrain/19/858595/353993.terrain differ diff --git a/public/terrain/19/858595/353994.terrain b/public/terrain/19/858595/353994.terrain new file mode 100644 index 000000000..8c644b6c3 Binary files /dev/null and b/public/terrain/19/858595/353994.terrain differ diff --git a/public/terrain/19/858595/353995.terrain b/public/terrain/19/858595/353995.terrain new file mode 100644 index 000000000..d63ed438e Binary files /dev/null and b/public/terrain/19/858595/353995.terrain differ diff --git a/public/terrain/19/858595/353996.terrain b/public/terrain/19/858595/353996.terrain new file mode 100644 index 000000000..0add9e780 Binary files /dev/null and b/public/terrain/19/858595/353996.terrain differ diff --git a/public/terrain/19/858595/353997.terrain b/public/terrain/19/858595/353997.terrain new file mode 100644 index 000000000..c397ede9c Binary files /dev/null and b/public/terrain/19/858595/353997.terrain differ diff --git a/public/terrain/19/858595/353998.terrain b/public/terrain/19/858595/353998.terrain new file mode 100644 index 000000000..e2a61aefe Binary files /dev/null and b/public/terrain/19/858595/353998.terrain differ diff --git a/public/terrain/19/858595/353999.terrain b/public/terrain/19/858595/353999.terrain new file mode 100644 index 000000000..a729660f2 Binary files /dev/null and b/public/terrain/19/858595/353999.terrain differ diff --git a/public/terrain/19/858595/354000.terrain b/public/terrain/19/858595/354000.terrain new file mode 100644 index 000000000..bf2627018 Binary files /dev/null and b/public/terrain/19/858595/354000.terrain differ diff --git a/public/terrain/19/858595/354001.terrain b/public/terrain/19/858595/354001.terrain new file mode 100644 index 000000000..7489dc700 Binary files /dev/null and b/public/terrain/19/858595/354001.terrain differ diff --git a/public/terrain/19/858595/354002.terrain b/public/terrain/19/858595/354002.terrain new file mode 100644 index 000000000..e533720c1 Binary files /dev/null and b/public/terrain/19/858595/354002.terrain differ diff --git a/public/terrain/19/858595/354003.terrain b/public/terrain/19/858595/354003.terrain new file mode 100644 index 000000000..2b74502bd Binary files /dev/null and b/public/terrain/19/858595/354003.terrain differ diff --git a/public/terrain/19/858595/354004.terrain b/public/terrain/19/858595/354004.terrain new file mode 100644 index 000000000..d526818ef Binary files /dev/null and b/public/terrain/19/858595/354004.terrain differ diff --git a/public/terrain/19/858595/354005.terrain b/public/terrain/19/858595/354005.terrain new file mode 100644 index 000000000..64ae0dabe Binary files /dev/null and b/public/terrain/19/858595/354005.terrain differ diff --git a/public/terrain/19/858595/354006.terrain b/public/terrain/19/858595/354006.terrain new file mode 100644 index 000000000..a0941f8e5 Binary files /dev/null and b/public/terrain/19/858595/354006.terrain differ diff --git a/public/terrain/19/858595/354007.terrain b/public/terrain/19/858595/354007.terrain new file mode 100644 index 000000000..4f8516ded Binary files /dev/null and b/public/terrain/19/858595/354007.terrain differ diff --git a/public/terrain/19/858595/354008.terrain b/public/terrain/19/858595/354008.terrain new file mode 100644 index 000000000..907051fe9 Binary files /dev/null and b/public/terrain/19/858595/354008.terrain differ diff --git a/public/terrain/19/858595/354009.terrain b/public/terrain/19/858595/354009.terrain new file mode 100644 index 000000000..e493fe985 Binary files /dev/null and b/public/terrain/19/858595/354009.terrain differ diff --git a/public/terrain/19/858595/354010.terrain b/public/terrain/19/858595/354010.terrain new file mode 100644 index 000000000..f68d0e4d7 Binary files /dev/null and b/public/terrain/19/858595/354010.terrain differ diff --git a/public/terrain/19/858595/354011.terrain b/public/terrain/19/858595/354011.terrain new file mode 100644 index 000000000..d028ab338 Binary files /dev/null and b/public/terrain/19/858595/354011.terrain differ diff --git a/public/terrain/19/858595/354012.terrain b/public/terrain/19/858595/354012.terrain new file mode 100644 index 000000000..0d4ecc9f8 Binary files /dev/null and b/public/terrain/19/858595/354012.terrain differ diff --git a/public/terrain/19/858595/354013.terrain b/public/terrain/19/858595/354013.terrain new file mode 100644 index 000000000..712880774 Binary files /dev/null and b/public/terrain/19/858595/354013.terrain differ diff --git a/public/terrain/19/858595/354014.terrain b/public/terrain/19/858595/354014.terrain new file mode 100644 index 000000000..687b80477 Binary files /dev/null and b/public/terrain/19/858595/354014.terrain differ diff --git a/public/terrain/19/858595/354015.terrain b/public/terrain/19/858595/354015.terrain new file mode 100644 index 000000000..935c798ab Binary files /dev/null and b/public/terrain/19/858595/354015.terrain differ diff --git a/public/terrain/19/858595/354016.terrain b/public/terrain/19/858595/354016.terrain new file mode 100644 index 000000000..79677ac08 Binary files /dev/null and b/public/terrain/19/858595/354016.terrain differ diff --git a/public/terrain/19/858595/354017.terrain b/public/terrain/19/858595/354017.terrain new file mode 100644 index 000000000..37b10c7b7 Binary files /dev/null and b/public/terrain/19/858595/354017.terrain differ diff --git a/public/terrain/19/858595/354018.terrain b/public/terrain/19/858595/354018.terrain new file mode 100644 index 000000000..7604b1c88 Binary files /dev/null and b/public/terrain/19/858595/354018.terrain differ diff --git a/public/terrain/19/858595/354019.terrain b/public/terrain/19/858595/354019.terrain new file mode 100644 index 000000000..05ddbd918 Binary files /dev/null and b/public/terrain/19/858595/354019.terrain differ diff --git a/public/terrain/19/858595/354020.terrain b/public/terrain/19/858595/354020.terrain new file mode 100644 index 000000000..6607fb403 Binary files /dev/null and b/public/terrain/19/858595/354020.terrain differ diff --git a/public/terrain/19/858595/354021.terrain b/public/terrain/19/858595/354021.terrain new file mode 100644 index 000000000..bfe5ab3c5 Binary files /dev/null and b/public/terrain/19/858595/354021.terrain differ diff --git a/public/terrain/19/858595/354022.terrain b/public/terrain/19/858595/354022.terrain new file mode 100644 index 000000000..d4a5ff36a Binary files /dev/null and b/public/terrain/19/858595/354022.terrain differ diff --git a/public/terrain/19/858595/354023.terrain b/public/terrain/19/858595/354023.terrain new file mode 100644 index 000000000..f66d7862e Binary files /dev/null and b/public/terrain/19/858595/354023.terrain differ diff --git a/public/terrain/19/858595/354024.terrain b/public/terrain/19/858595/354024.terrain new file mode 100644 index 000000000..fc24294a9 Binary files /dev/null and b/public/terrain/19/858595/354024.terrain differ diff --git a/public/terrain/19/858595/354025.terrain b/public/terrain/19/858595/354025.terrain new file mode 100644 index 000000000..24146e110 Binary files /dev/null and b/public/terrain/19/858595/354025.terrain differ diff --git a/public/terrain/19/858595/354026.terrain b/public/terrain/19/858595/354026.terrain new file mode 100644 index 000000000..18c65ada1 Binary files /dev/null and b/public/terrain/19/858595/354026.terrain differ diff --git a/public/terrain/19/858595/354027.terrain b/public/terrain/19/858595/354027.terrain new file mode 100644 index 000000000..a8f04f87c Binary files /dev/null and b/public/terrain/19/858595/354027.terrain differ diff --git a/public/terrain/19/858595/354028.terrain b/public/terrain/19/858595/354028.terrain new file mode 100644 index 000000000..679927006 Binary files /dev/null and b/public/terrain/19/858595/354028.terrain differ diff --git a/public/terrain/19/858595/354029.terrain b/public/terrain/19/858595/354029.terrain new file mode 100644 index 000000000..a86c8fa48 Binary files /dev/null and b/public/terrain/19/858595/354029.terrain differ diff --git a/public/terrain/19/858595/354030.terrain b/public/terrain/19/858595/354030.terrain new file mode 100644 index 000000000..bbf98ece4 Binary files /dev/null and b/public/terrain/19/858595/354030.terrain differ diff --git a/public/terrain/19/858595/354031.terrain b/public/terrain/19/858595/354031.terrain new file mode 100644 index 000000000..d2cb890d4 Binary files /dev/null and b/public/terrain/19/858595/354031.terrain differ diff --git a/public/terrain/19/858595/354032.terrain b/public/terrain/19/858595/354032.terrain new file mode 100644 index 000000000..4ebf55e17 Binary files /dev/null and b/public/terrain/19/858595/354032.terrain differ diff --git a/public/terrain/19/858595/354033.terrain b/public/terrain/19/858595/354033.terrain new file mode 100644 index 000000000..064704125 Binary files /dev/null and b/public/terrain/19/858595/354033.terrain differ diff --git a/public/terrain/19/858595/354034.terrain b/public/terrain/19/858595/354034.terrain new file mode 100644 index 000000000..7e24fa609 Binary files /dev/null and b/public/terrain/19/858595/354034.terrain differ diff --git a/public/terrain/19/858595/354035.terrain b/public/terrain/19/858595/354035.terrain new file mode 100644 index 000000000..c2838d36b Binary files /dev/null and b/public/terrain/19/858595/354035.terrain differ diff --git a/public/terrain/19/858595/354036.terrain b/public/terrain/19/858595/354036.terrain new file mode 100644 index 000000000..2001496b4 Binary files /dev/null and b/public/terrain/19/858595/354036.terrain differ diff --git a/public/terrain/19/858595/354037.terrain b/public/terrain/19/858595/354037.terrain new file mode 100644 index 000000000..a6331cc60 Binary files /dev/null and b/public/terrain/19/858595/354037.terrain differ diff --git a/public/terrain/19/858595/354038.terrain b/public/terrain/19/858595/354038.terrain new file mode 100644 index 000000000..b4ebaa6ac Binary files /dev/null and b/public/terrain/19/858595/354038.terrain differ diff --git a/public/terrain/19/858595/354039.terrain b/public/terrain/19/858595/354039.terrain new file mode 100644 index 000000000..892688e8e Binary files /dev/null and b/public/terrain/19/858595/354039.terrain differ diff --git a/public/terrain/19/858595/354040.terrain b/public/terrain/19/858595/354040.terrain new file mode 100644 index 000000000..542af8bbe Binary files /dev/null and b/public/terrain/19/858595/354040.terrain differ diff --git a/public/terrain/19/858595/354041.terrain b/public/terrain/19/858595/354041.terrain new file mode 100644 index 000000000..c50606e49 Binary files /dev/null and b/public/terrain/19/858595/354041.terrain differ diff --git a/public/terrain/19/858595/354042.terrain b/public/terrain/19/858595/354042.terrain new file mode 100644 index 000000000..aebb12afd Binary files /dev/null and b/public/terrain/19/858595/354042.terrain differ diff --git a/public/terrain/19/858595/354043.terrain b/public/terrain/19/858595/354043.terrain new file mode 100644 index 000000000..e11ad84f2 Binary files /dev/null and b/public/terrain/19/858595/354043.terrain differ diff --git a/public/terrain/19/858595/354044.terrain b/public/terrain/19/858595/354044.terrain new file mode 100644 index 000000000..e7c4537a3 Binary files /dev/null and b/public/terrain/19/858595/354044.terrain differ diff --git a/public/terrain/19/858595/354045.terrain b/public/terrain/19/858595/354045.terrain new file mode 100644 index 000000000..6a639f851 Binary files /dev/null and b/public/terrain/19/858595/354045.terrain differ diff --git a/public/terrain/19/858595/354046.terrain b/public/terrain/19/858595/354046.terrain new file mode 100644 index 000000000..17e419036 Binary files /dev/null and b/public/terrain/19/858595/354046.terrain differ diff --git a/public/terrain/19/858595/354047.terrain b/public/terrain/19/858595/354047.terrain new file mode 100644 index 000000000..d4c4c5cd9 Binary files /dev/null and b/public/terrain/19/858595/354047.terrain differ diff --git a/public/terrain/19/858595/354048.terrain b/public/terrain/19/858595/354048.terrain new file mode 100644 index 000000000..bb7c1583f Binary files /dev/null and b/public/terrain/19/858595/354048.terrain differ diff --git a/public/terrain/19/858595/354049.terrain b/public/terrain/19/858595/354049.terrain new file mode 100644 index 000000000..8645ce134 Binary files /dev/null and b/public/terrain/19/858595/354049.terrain differ diff --git a/public/terrain/19/858595/354050.terrain b/public/terrain/19/858595/354050.terrain new file mode 100644 index 000000000..2697aea48 Binary files /dev/null and b/public/terrain/19/858595/354050.terrain differ diff --git a/public/terrain/19/858595/354051.terrain b/public/terrain/19/858595/354051.terrain new file mode 100644 index 000000000..381a83197 Binary files /dev/null and b/public/terrain/19/858595/354051.terrain differ diff --git a/public/terrain/19/858595/354052.terrain b/public/terrain/19/858595/354052.terrain new file mode 100644 index 000000000..bd7fe5108 Binary files /dev/null and b/public/terrain/19/858595/354052.terrain differ diff --git a/public/terrain/19/858595/354053.terrain b/public/terrain/19/858595/354053.terrain new file mode 100644 index 000000000..e977d218b Binary files /dev/null and b/public/terrain/19/858595/354053.terrain differ diff --git a/public/terrain/19/858595/354054.terrain b/public/terrain/19/858595/354054.terrain new file mode 100644 index 000000000..95df25789 Binary files /dev/null and b/public/terrain/19/858595/354054.terrain differ diff --git a/public/terrain/19/858595/354055.terrain b/public/terrain/19/858595/354055.terrain new file mode 100644 index 000000000..3ca98d178 Binary files /dev/null and b/public/terrain/19/858595/354055.terrain differ diff --git a/public/terrain/19/858595/354056.terrain b/public/terrain/19/858595/354056.terrain new file mode 100644 index 000000000..e785fc577 Binary files /dev/null and b/public/terrain/19/858595/354056.terrain differ diff --git a/public/terrain/19/858595/354057.terrain b/public/terrain/19/858595/354057.terrain new file mode 100644 index 000000000..946a4cc08 Binary files /dev/null and b/public/terrain/19/858595/354057.terrain differ diff --git a/public/terrain/19/858595/354058.terrain b/public/terrain/19/858595/354058.terrain new file mode 100644 index 000000000..2da00cef2 Binary files /dev/null and b/public/terrain/19/858595/354058.terrain differ diff --git a/public/terrain/19/858595/354059.terrain b/public/terrain/19/858595/354059.terrain new file mode 100644 index 000000000..9fdde8242 Binary files /dev/null and b/public/terrain/19/858595/354059.terrain differ diff --git a/public/terrain/19/858596/353743.terrain b/public/terrain/19/858596/353743.terrain new file mode 100644 index 000000000..c1fb6e3f4 Binary files /dev/null and b/public/terrain/19/858596/353743.terrain differ diff --git a/public/terrain/19/858596/353744.terrain b/public/terrain/19/858596/353744.terrain new file mode 100644 index 000000000..f6eac50fe Binary files /dev/null and b/public/terrain/19/858596/353744.terrain differ diff --git a/public/terrain/19/858596/353745.terrain b/public/terrain/19/858596/353745.terrain new file mode 100644 index 000000000..cde664a10 Binary files /dev/null and b/public/terrain/19/858596/353745.terrain differ diff --git a/public/terrain/19/858596/353746.terrain b/public/terrain/19/858596/353746.terrain new file mode 100644 index 000000000..cdb010347 Binary files /dev/null and b/public/terrain/19/858596/353746.terrain differ diff --git a/public/terrain/19/858596/353747.terrain b/public/terrain/19/858596/353747.terrain new file mode 100644 index 000000000..aa0bec814 Binary files /dev/null and b/public/terrain/19/858596/353747.terrain differ diff --git a/public/terrain/19/858596/353748.terrain b/public/terrain/19/858596/353748.terrain new file mode 100644 index 000000000..c3465799e Binary files /dev/null and b/public/terrain/19/858596/353748.terrain differ diff --git a/public/terrain/19/858596/353749.terrain b/public/terrain/19/858596/353749.terrain new file mode 100644 index 000000000..49b60a926 Binary files /dev/null and b/public/terrain/19/858596/353749.terrain differ diff --git a/public/terrain/19/858596/353750.terrain b/public/terrain/19/858596/353750.terrain new file mode 100644 index 000000000..627111349 Binary files /dev/null and b/public/terrain/19/858596/353750.terrain differ diff --git a/public/terrain/19/858596/353751.terrain b/public/terrain/19/858596/353751.terrain new file mode 100644 index 000000000..2e8d5838f Binary files /dev/null and b/public/terrain/19/858596/353751.terrain differ diff --git a/public/terrain/19/858596/353752.terrain b/public/terrain/19/858596/353752.terrain new file mode 100644 index 000000000..df6bf7d6f Binary files /dev/null and b/public/terrain/19/858596/353752.terrain differ diff --git a/public/terrain/19/858596/353753.terrain b/public/terrain/19/858596/353753.terrain new file mode 100644 index 000000000..ea294dd6e Binary files /dev/null and b/public/terrain/19/858596/353753.terrain differ diff --git a/public/terrain/19/858596/353754.terrain b/public/terrain/19/858596/353754.terrain new file mode 100644 index 000000000..a9739fde8 Binary files /dev/null and b/public/terrain/19/858596/353754.terrain differ diff --git a/public/terrain/19/858596/353755.terrain b/public/terrain/19/858596/353755.terrain new file mode 100644 index 000000000..9a93bfbf7 Binary files /dev/null and b/public/terrain/19/858596/353755.terrain differ diff --git a/public/terrain/19/858596/353756.terrain b/public/terrain/19/858596/353756.terrain new file mode 100644 index 000000000..e4cac3b79 Binary files /dev/null and b/public/terrain/19/858596/353756.terrain differ diff --git a/public/terrain/19/858596/353757.terrain b/public/terrain/19/858596/353757.terrain new file mode 100644 index 000000000..d25fbb4da Binary files /dev/null and b/public/terrain/19/858596/353757.terrain differ diff --git a/public/terrain/19/858596/353758.terrain b/public/terrain/19/858596/353758.terrain new file mode 100644 index 000000000..d3f2d662f Binary files /dev/null and b/public/terrain/19/858596/353758.terrain differ diff --git a/public/terrain/19/858596/353759.terrain b/public/terrain/19/858596/353759.terrain new file mode 100644 index 000000000..4195976b2 Binary files /dev/null and b/public/terrain/19/858596/353759.terrain differ diff --git a/public/terrain/19/858596/353760.terrain b/public/terrain/19/858596/353760.terrain new file mode 100644 index 000000000..27b08c336 Binary files /dev/null and b/public/terrain/19/858596/353760.terrain differ diff --git a/public/terrain/19/858596/353761.terrain b/public/terrain/19/858596/353761.terrain new file mode 100644 index 000000000..637557165 Binary files /dev/null and b/public/terrain/19/858596/353761.terrain differ diff --git a/public/terrain/19/858596/353762.terrain b/public/terrain/19/858596/353762.terrain new file mode 100644 index 000000000..6af6a1605 Binary files /dev/null and b/public/terrain/19/858596/353762.terrain differ diff --git a/public/terrain/19/858596/353763.terrain b/public/terrain/19/858596/353763.terrain new file mode 100644 index 000000000..1690b117d Binary files /dev/null and b/public/terrain/19/858596/353763.terrain differ diff --git a/public/terrain/19/858596/353764.terrain b/public/terrain/19/858596/353764.terrain new file mode 100644 index 000000000..8159bcc84 Binary files /dev/null and b/public/terrain/19/858596/353764.terrain differ diff --git a/public/terrain/19/858596/353765.terrain b/public/terrain/19/858596/353765.terrain new file mode 100644 index 000000000..dc52d95b5 Binary files /dev/null and b/public/terrain/19/858596/353765.terrain differ diff --git a/public/terrain/19/858596/353766.terrain b/public/terrain/19/858596/353766.terrain new file mode 100644 index 000000000..a4b700763 Binary files /dev/null and b/public/terrain/19/858596/353766.terrain differ diff --git a/public/terrain/19/858596/353767.terrain b/public/terrain/19/858596/353767.terrain new file mode 100644 index 000000000..dd6a8fd44 Binary files /dev/null and b/public/terrain/19/858596/353767.terrain differ diff --git a/public/terrain/19/858596/353768.terrain b/public/terrain/19/858596/353768.terrain new file mode 100644 index 000000000..25de243ea Binary files /dev/null and b/public/terrain/19/858596/353768.terrain differ diff --git a/public/terrain/19/858596/353769.terrain b/public/terrain/19/858596/353769.terrain new file mode 100644 index 000000000..85f3e553b Binary files /dev/null and b/public/terrain/19/858596/353769.terrain differ diff --git a/public/terrain/19/858596/353770.terrain b/public/terrain/19/858596/353770.terrain new file mode 100644 index 000000000..52115d737 Binary files /dev/null and b/public/terrain/19/858596/353770.terrain differ diff --git a/public/terrain/19/858596/353771.terrain b/public/terrain/19/858596/353771.terrain new file mode 100644 index 000000000..041b07a7c Binary files /dev/null and b/public/terrain/19/858596/353771.terrain differ diff --git a/public/terrain/19/858596/353772.terrain b/public/terrain/19/858596/353772.terrain new file mode 100644 index 000000000..847776303 Binary files /dev/null and b/public/terrain/19/858596/353772.terrain differ diff --git a/public/terrain/19/858596/353773.terrain b/public/terrain/19/858596/353773.terrain new file mode 100644 index 000000000..f880501af Binary files /dev/null and b/public/terrain/19/858596/353773.terrain differ diff --git a/public/terrain/19/858596/353774.terrain b/public/terrain/19/858596/353774.terrain new file mode 100644 index 000000000..fd5753307 Binary files /dev/null and b/public/terrain/19/858596/353774.terrain differ diff --git a/public/terrain/19/858596/353775.terrain b/public/terrain/19/858596/353775.terrain new file mode 100644 index 000000000..7b7c1c9e4 Binary files /dev/null and b/public/terrain/19/858596/353775.terrain differ diff --git a/public/terrain/19/858596/353776.terrain b/public/terrain/19/858596/353776.terrain new file mode 100644 index 000000000..ea21ac5ec Binary files /dev/null and b/public/terrain/19/858596/353776.terrain differ diff --git a/public/terrain/19/858596/353777.terrain b/public/terrain/19/858596/353777.terrain new file mode 100644 index 000000000..02230032f Binary files /dev/null and b/public/terrain/19/858596/353777.terrain differ diff --git a/public/terrain/19/858596/353778.terrain b/public/terrain/19/858596/353778.terrain new file mode 100644 index 000000000..98e91e29b Binary files /dev/null and b/public/terrain/19/858596/353778.terrain differ diff --git a/public/terrain/19/858596/353779.terrain b/public/terrain/19/858596/353779.terrain new file mode 100644 index 000000000..ee5ebc04d Binary files /dev/null and b/public/terrain/19/858596/353779.terrain differ diff --git a/public/terrain/19/858596/353780.terrain b/public/terrain/19/858596/353780.terrain new file mode 100644 index 000000000..d77daad0b Binary files /dev/null and b/public/terrain/19/858596/353780.terrain differ diff --git a/public/terrain/19/858596/353781.terrain b/public/terrain/19/858596/353781.terrain new file mode 100644 index 000000000..a34300604 Binary files /dev/null and b/public/terrain/19/858596/353781.terrain differ diff --git a/public/terrain/19/858596/353782.terrain b/public/terrain/19/858596/353782.terrain new file mode 100644 index 000000000..87d619ebf Binary files /dev/null and b/public/terrain/19/858596/353782.terrain differ diff --git a/public/terrain/19/858596/353783.terrain b/public/terrain/19/858596/353783.terrain new file mode 100644 index 000000000..81a70fdc6 Binary files /dev/null and b/public/terrain/19/858596/353783.terrain differ diff --git a/public/terrain/19/858596/353784.terrain b/public/terrain/19/858596/353784.terrain new file mode 100644 index 000000000..d1532e666 Binary files /dev/null and b/public/terrain/19/858596/353784.terrain differ diff --git a/public/terrain/19/858596/353785.terrain b/public/terrain/19/858596/353785.terrain new file mode 100644 index 000000000..b34e68556 Binary files /dev/null and b/public/terrain/19/858596/353785.terrain differ diff --git a/public/terrain/19/858596/353786.terrain b/public/terrain/19/858596/353786.terrain new file mode 100644 index 000000000..e08724423 Binary files /dev/null and b/public/terrain/19/858596/353786.terrain differ diff --git a/public/terrain/19/858596/353787.terrain b/public/terrain/19/858596/353787.terrain new file mode 100644 index 000000000..2238fb699 Binary files /dev/null and b/public/terrain/19/858596/353787.terrain differ diff --git a/public/terrain/19/858596/353788.terrain b/public/terrain/19/858596/353788.terrain new file mode 100644 index 000000000..0db123d40 Binary files /dev/null and b/public/terrain/19/858596/353788.terrain differ diff --git a/public/terrain/19/858596/353789.terrain b/public/terrain/19/858596/353789.terrain new file mode 100644 index 000000000..396960869 Binary files /dev/null and b/public/terrain/19/858596/353789.terrain differ diff --git a/public/terrain/19/858596/353790.terrain b/public/terrain/19/858596/353790.terrain new file mode 100644 index 000000000..71f85b26b Binary files /dev/null and b/public/terrain/19/858596/353790.terrain differ diff --git a/public/terrain/19/858596/353791.terrain b/public/terrain/19/858596/353791.terrain new file mode 100644 index 000000000..fd1d49fb2 Binary files /dev/null and b/public/terrain/19/858596/353791.terrain differ diff --git a/public/terrain/19/858596/353792.terrain b/public/terrain/19/858596/353792.terrain new file mode 100644 index 000000000..504be4ebb Binary files /dev/null and b/public/terrain/19/858596/353792.terrain differ diff --git a/public/terrain/19/858596/353793.terrain b/public/terrain/19/858596/353793.terrain new file mode 100644 index 000000000..2f2de8d5f Binary files /dev/null and b/public/terrain/19/858596/353793.terrain differ diff --git a/public/terrain/19/858596/353794.terrain b/public/terrain/19/858596/353794.terrain new file mode 100644 index 000000000..67fdecf8a Binary files /dev/null and b/public/terrain/19/858596/353794.terrain differ diff --git a/public/terrain/19/858596/353795.terrain b/public/terrain/19/858596/353795.terrain new file mode 100644 index 000000000..953eb5ad9 Binary files /dev/null and b/public/terrain/19/858596/353795.terrain differ diff --git a/public/terrain/19/858596/353796.terrain b/public/terrain/19/858596/353796.terrain new file mode 100644 index 000000000..5ec4e38ef Binary files /dev/null and b/public/terrain/19/858596/353796.terrain differ diff --git a/public/terrain/19/858596/353797.terrain b/public/terrain/19/858596/353797.terrain new file mode 100644 index 000000000..85a8d6c96 Binary files /dev/null and b/public/terrain/19/858596/353797.terrain differ diff --git a/public/terrain/19/858596/353798.terrain b/public/terrain/19/858596/353798.terrain new file mode 100644 index 000000000..7266ec590 Binary files /dev/null and b/public/terrain/19/858596/353798.terrain differ diff --git a/public/terrain/19/858596/353799.terrain b/public/terrain/19/858596/353799.terrain new file mode 100644 index 000000000..8d54272b6 Binary files /dev/null and b/public/terrain/19/858596/353799.terrain differ diff --git a/public/terrain/19/858596/353800.terrain b/public/terrain/19/858596/353800.terrain new file mode 100644 index 000000000..d5c51a2ad Binary files /dev/null and b/public/terrain/19/858596/353800.terrain differ diff --git a/public/terrain/19/858596/353801.terrain b/public/terrain/19/858596/353801.terrain new file mode 100644 index 000000000..3bb6350af Binary files /dev/null and b/public/terrain/19/858596/353801.terrain differ diff --git a/public/terrain/19/858596/353802.terrain b/public/terrain/19/858596/353802.terrain new file mode 100644 index 000000000..8c1bf260c Binary files /dev/null and b/public/terrain/19/858596/353802.terrain differ diff --git a/public/terrain/19/858596/353803.terrain b/public/terrain/19/858596/353803.terrain new file mode 100644 index 000000000..3b72c257f Binary files /dev/null and b/public/terrain/19/858596/353803.terrain differ diff --git a/public/terrain/19/858596/353804.terrain b/public/terrain/19/858596/353804.terrain new file mode 100644 index 000000000..0072413e3 Binary files /dev/null and b/public/terrain/19/858596/353804.terrain differ diff --git a/public/terrain/19/858596/353805.terrain b/public/terrain/19/858596/353805.terrain new file mode 100644 index 000000000..d093b3181 Binary files /dev/null and b/public/terrain/19/858596/353805.terrain differ diff --git a/public/terrain/19/858596/353806.terrain b/public/terrain/19/858596/353806.terrain new file mode 100644 index 000000000..f7b0bb6df Binary files /dev/null and b/public/terrain/19/858596/353806.terrain differ diff --git a/public/terrain/19/858596/353807.terrain b/public/terrain/19/858596/353807.terrain new file mode 100644 index 000000000..bd2d5a17e Binary files /dev/null and b/public/terrain/19/858596/353807.terrain differ diff --git a/public/terrain/19/858596/353808.terrain b/public/terrain/19/858596/353808.terrain new file mode 100644 index 000000000..e690abe1d Binary files /dev/null and b/public/terrain/19/858596/353808.terrain differ diff --git a/public/terrain/19/858596/353809.terrain b/public/terrain/19/858596/353809.terrain new file mode 100644 index 000000000..d8ad682e1 Binary files /dev/null and b/public/terrain/19/858596/353809.terrain differ diff --git a/public/terrain/19/858596/353810.terrain b/public/terrain/19/858596/353810.terrain new file mode 100644 index 000000000..e6c40fb37 Binary files /dev/null and b/public/terrain/19/858596/353810.terrain differ diff --git a/public/terrain/19/858596/353811.terrain b/public/terrain/19/858596/353811.terrain new file mode 100644 index 000000000..471c80b09 Binary files /dev/null and b/public/terrain/19/858596/353811.terrain differ diff --git a/public/terrain/19/858596/353812.terrain b/public/terrain/19/858596/353812.terrain new file mode 100644 index 000000000..8e9bc80dc Binary files /dev/null and b/public/terrain/19/858596/353812.terrain differ diff --git a/public/terrain/19/858596/353813.terrain b/public/terrain/19/858596/353813.terrain new file mode 100644 index 000000000..97b26805e Binary files /dev/null and b/public/terrain/19/858596/353813.terrain differ diff --git a/public/terrain/19/858596/353814.terrain b/public/terrain/19/858596/353814.terrain new file mode 100644 index 000000000..113d871ef Binary files /dev/null and b/public/terrain/19/858596/353814.terrain differ diff --git a/public/terrain/19/858596/353815.terrain b/public/terrain/19/858596/353815.terrain new file mode 100644 index 000000000..9a4d8422a Binary files /dev/null and b/public/terrain/19/858596/353815.terrain differ diff --git a/public/terrain/19/858596/353816.terrain b/public/terrain/19/858596/353816.terrain new file mode 100644 index 000000000..098f92077 Binary files /dev/null and b/public/terrain/19/858596/353816.terrain differ diff --git a/public/terrain/19/858596/353817.terrain b/public/terrain/19/858596/353817.terrain new file mode 100644 index 000000000..0b476f116 Binary files /dev/null and b/public/terrain/19/858596/353817.terrain differ diff --git a/public/terrain/19/858596/353818.terrain b/public/terrain/19/858596/353818.terrain new file mode 100644 index 000000000..27fad487d Binary files /dev/null and b/public/terrain/19/858596/353818.terrain differ diff --git a/public/terrain/19/858596/353819.terrain b/public/terrain/19/858596/353819.terrain new file mode 100644 index 000000000..91211ee73 Binary files /dev/null and b/public/terrain/19/858596/353819.terrain differ diff --git a/public/terrain/19/858596/353820.terrain b/public/terrain/19/858596/353820.terrain new file mode 100644 index 000000000..57259ecb4 Binary files /dev/null and b/public/terrain/19/858596/353820.terrain differ diff --git a/public/terrain/19/858596/353821.terrain b/public/terrain/19/858596/353821.terrain new file mode 100644 index 000000000..30f433091 Binary files /dev/null and b/public/terrain/19/858596/353821.terrain differ diff --git a/public/terrain/19/858596/353822.terrain b/public/terrain/19/858596/353822.terrain new file mode 100644 index 000000000..3c88b1110 Binary files /dev/null and b/public/terrain/19/858596/353822.terrain differ diff --git a/public/terrain/19/858596/353823.terrain b/public/terrain/19/858596/353823.terrain new file mode 100644 index 000000000..e205f5347 Binary files /dev/null and b/public/terrain/19/858596/353823.terrain differ diff --git a/public/terrain/19/858596/353824.terrain b/public/terrain/19/858596/353824.terrain new file mode 100644 index 000000000..0e3e7a943 Binary files /dev/null and b/public/terrain/19/858596/353824.terrain differ diff --git a/public/terrain/19/858596/353825.terrain b/public/terrain/19/858596/353825.terrain new file mode 100644 index 000000000..c3b72c6c6 Binary files /dev/null and b/public/terrain/19/858596/353825.terrain differ diff --git a/public/terrain/19/858596/353826.terrain b/public/terrain/19/858596/353826.terrain new file mode 100644 index 000000000..ea908a464 Binary files /dev/null and b/public/terrain/19/858596/353826.terrain differ diff --git a/public/terrain/19/858596/353827.terrain b/public/terrain/19/858596/353827.terrain new file mode 100644 index 000000000..94a64ee35 Binary files /dev/null and b/public/terrain/19/858596/353827.terrain differ diff --git a/public/terrain/19/858596/353828.terrain b/public/terrain/19/858596/353828.terrain new file mode 100644 index 000000000..a42dc459b Binary files /dev/null and b/public/terrain/19/858596/353828.terrain differ diff --git a/public/terrain/19/858596/353829.terrain b/public/terrain/19/858596/353829.terrain new file mode 100644 index 000000000..d1b9b0287 Binary files /dev/null and b/public/terrain/19/858596/353829.terrain differ diff --git a/public/terrain/19/858596/353830.terrain b/public/terrain/19/858596/353830.terrain new file mode 100644 index 000000000..6a7937fd3 Binary files /dev/null and b/public/terrain/19/858596/353830.terrain differ diff --git a/public/terrain/19/858596/353831.terrain b/public/terrain/19/858596/353831.terrain new file mode 100644 index 000000000..1114c0be9 Binary files /dev/null and b/public/terrain/19/858596/353831.terrain differ diff --git a/public/terrain/19/858596/353832.terrain b/public/terrain/19/858596/353832.terrain new file mode 100644 index 000000000..877c47fde Binary files /dev/null and b/public/terrain/19/858596/353832.terrain differ diff --git a/public/terrain/19/858596/353833.terrain b/public/terrain/19/858596/353833.terrain new file mode 100644 index 000000000..d7b168146 Binary files /dev/null and b/public/terrain/19/858596/353833.terrain differ diff --git a/public/terrain/19/858596/353834.terrain b/public/terrain/19/858596/353834.terrain new file mode 100644 index 000000000..154a8287f Binary files /dev/null and b/public/terrain/19/858596/353834.terrain differ diff --git a/public/terrain/19/858596/353835.terrain b/public/terrain/19/858596/353835.terrain new file mode 100644 index 000000000..08eb5a507 Binary files /dev/null and b/public/terrain/19/858596/353835.terrain differ diff --git a/public/terrain/19/858596/353836.terrain b/public/terrain/19/858596/353836.terrain new file mode 100644 index 000000000..fb69dbdb8 Binary files /dev/null and b/public/terrain/19/858596/353836.terrain differ diff --git a/public/terrain/19/858596/353837.terrain b/public/terrain/19/858596/353837.terrain new file mode 100644 index 000000000..4906b96be Binary files /dev/null and b/public/terrain/19/858596/353837.terrain differ diff --git a/public/terrain/19/858596/353838.terrain b/public/terrain/19/858596/353838.terrain new file mode 100644 index 000000000..54e00b830 Binary files /dev/null and b/public/terrain/19/858596/353838.terrain differ diff --git a/public/terrain/19/858596/353839.terrain b/public/terrain/19/858596/353839.terrain new file mode 100644 index 000000000..708c7c51b Binary files /dev/null and b/public/terrain/19/858596/353839.terrain differ diff --git a/public/terrain/19/858596/353840.terrain b/public/terrain/19/858596/353840.terrain new file mode 100644 index 000000000..dadd494e2 Binary files /dev/null and b/public/terrain/19/858596/353840.terrain differ diff --git a/public/terrain/19/858596/353841.terrain b/public/terrain/19/858596/353841.terrain new file mode 100644 index 000000000..c07b74efd Binary files /dev/null and b/public/terrain/19/858596/353841.terrain differ diff --git a/public/terrain/19/858596/353842.terrain b/public/terrain/19/858596/353842.terrain new file mode 100644 index 000000000..4c4fca36e Binary files /dev/null and b/public/terrain/19/858596/353842.terrain differ diff --git a/public/terrain/19/858596/353843.terrain b/public/terrain/19/858596/353843.terrain new file mode 100644 index 000000000..4c4464a97 Binary files /dev/null and b/public/terrain/19/858596/353843.terrain differ diff --git a/public/terrain/19/858596/353844.terrain b/public/terrain/19/858596/353844.terrain new file mode 100644 index 000000000..be5224e18 Binary files /dev/null and b/public/terrain/19/858596/353844.terrain differ diff --git a/public/terrain/19/858596/353845.terrain b/public/terrain/19/858596/353845.terrain new file mode 100644 index 000000000..67a596631 Binary files /dev/null and b/public/terrain/19/858596/353845.terrain differ diff --git a/public/terrain/19/858596/353846.terrain b/public/terrain/19/858596/353846.terrain new file mode 100644 index 000000000..e1604841e Binary files /dev/null and b/public/terrain/19/858596/353846.terrain differ diff --git a/public/terrain/19/858596/353847.terrain b/public/terrain/19/858596/353847.terrain new file mode 100644 index 000000000..7aa67e3ec Binary files /dev/null and b/public/terrain/19/858596/353847.terrain differ diff --git a/public/terrain/19/858596/353848.terrain b/public/terrain/19/858596/353848.terrain new file mode 100644 index 000000000..c47274bb1 Binary files /dev/null and b/public/terrain/19/858596/353848.terrain differ diff --git a/public/terrain/19/858596/353849.terrain b/public/terrain/19/858596/353849.terrain new file mode 100644 index 000000000..37f725065 Binary files /dev/null and b/public/terrain/19/858596/353849.terrain differ diff --git a/public/terrain/19/858596/353850.terrain b/public/terrain/19/858596/353850.terrain new file mode 100644 index 000000000..4eeef9ae4 Binary files /dev/null and b/public/terrain/19/858596/353850.terrain differ diff --git a/public/terrain/19/858596/353851.terrain b/public/terrain/19/858596/353851.terrain new file mode 100644 index 000000000..ec5687d81 Binary files /dev/null and b/public/terrain/19/858596/353851.terrain differ diff --git a/public/terrain/19/858596/353852.terrain b/public/terrain/19/858596/353852.terrain new file mode 100644 index 000000000..689916849 Binary files /dev/null and b/public/terrain/19/858596/353852.terrain differ diff --git a/public/terrain/19/858596/353853.terrain b/public/terrain/19/858596/353853.terrain new file mode 100644 index 000000000..750805667 Binary files /dev/null and b/public/terrain/19/858596/353853.terrain differ diff --git a/public/terrain/19/858596/353854.terrain b/public/terrain/19/858596/353854.terrain new file mode 100644 index 000000000..0c20f1c32 Binary files /dev/null and b/public/terrain/19/858596/353854.terrain differ diff --git a/public/terrain/19/858596/353855.terrain b/public/terrain/19/858596/353855.terrain new file mode 100644 index 000000000..84144ddf2 Binary files /dev/null and b/public/terrain/19/858596/353855.terrain differ diff --git a/public/terrain/19/858596/353856.terrain b/public/terrain/19/858596/353856.terrain new file mode 100644 index 000000000..1ac046536 Binary files /dev/null and b/public/terrain/19/858596/353856.terrain differ diff --git a/public/terrain/19/858596/353857.terrain b/public/terrain/19/858596/353857.terrain new file mode 100644 index 000000000..c9b7bf88b Binary files /dev/null and b/public/terrain/19/858596/353857.terrain differ diff --git a/public/terrain/19/858596/353858.terrain b/public/terrain/19/858596/353858.terrain new file mode 100644 index 000000000..b1d932798 Binary files /dev/null and b/public/terrain/19/858596/353858.terrain differ diff --git a/public/terrain/19/858596/353859.terrain b/public/terrain/19/858596/353859.terrain new file mode 100644 index 000000000..ed687a432 Binary files /dev/null and b/public/terrain/19/858596/353859.terrain differ diff --git a/public/terrain/19/858596/353860.terrain b/public/terrain/19/858596/353860.terrain new file mode 100644 index 000000000..953d12024 Binary files /dev/null and b/public/terrain/19/858596/353860.terrain differ diff --git a/public/terrain/19/858596/353861.terrain b/public/terrain/19/858596/353861.terrain new file mode 100644 index 000000000..40eae6b13 Binary files /dev/null and b/public/terrain/19/858596/353861.terrain differ diff --git a/public/terrain/19/858596/353862.terrain b/public/terrain/19/858596/353862.terrain new file mode 100644 index 000000000..2ead3c369 Binary files /dev/null and b/public/terrain/19/858596/353862.terrain differ diff --git a/public/terrain/19/858596/353863.terrain b/public/terrain/19/858596/353863.terrain new file mode 100644 index 000000000..7ceef5a3a Binary files /dev/null and b/public/terrain/19/858596/353863.terrain differ diff --git a/public/terrain/19/858596/353864.terrain b/public/terrain/19/858596/353864.terrain new file mode 100644 index 000000000..b1db7e17a Binary files /dev/null and b/public/terrain/19/858596/353864.terrain differ diff --git a/public/terrain/19/858596/353865.terrain b/public/terrain/19/858596/353865.terrain new file mode 100644 index 000000000..1b69b6ef5 Binary files /dev/null and b/public/terrain/19/858596/353865.terrain differ diff --git a/public/terrain/19/858596/353866.terrain b/public/terrain/19/858596/353866.terrain new file mode 100644 index 000000000..d19c4426f Binary files /dev/null and b/public/terrain/19/858596/353866.terrain differ diff --git a/public/terrain/19/858596/353867.terrain b/public/terrain/19/858596/353867.terrain new file mode 100644 index 000000000..957322ba1 Binary files /dev/null and b/public/terrain/19/858596/353867.terrain differ diff --git a/public/terrain/19/858596/353868.terrain b/public/terrain/19/858596/353868.terrain new file mode 100644 index 000000000..5bc474e3e Binary files /dev/null and b/public/terrain/19/858596/353868.terrain differ diff --git a/public/terrain/19/858596/353869.terrain b/public/terrain/19/858596/353869.terrain new file mode 100644 index 000000000..b9f32774d Binary files /dev/null and b/public/terrain/19/858596/353869.terrain differ diff --git a/public/terrain/19/858596/353870.terrain b/public/terrain/19/858596/353870.terrain new file mode 100644 index 000000000..43062df88 Binary files /dev/null and b/public/terrain/19/858596/353870.terrain differ diff --git a/public/terrain/19/858596/353871.terrain b/public/terrain/19/858596/353871.terrain new file mode 100644 index 000000000..c2296ba49 Binary files /dev/null and b/public/terrain/19/858596/353871.terrain differ diff --git a/public/terrain/19/858596/353872.terrain b/public/terrain/19/858596/353872.terrain new file mode 100644 index 000000000..618168c01 Binary files /dev/null and b/public/terrain/19/858596/353872.terrain differ diff --git a/public/terrain/19/858596/353873.terrain b/public/terrain/19/858596/353873.terrain new file mode 100644 index 000000000..1904fe384 Binary files /dev/null and b/public/terrain/19/858596/353873.terrain differ diff --git a/public/terrain/19/858596/353874.terrain b/public/terrain/19/858596/353874.terrain new file mode 100644 index 000000000..5b3833358 Binary files /dev/null and b/public/terrain/19/858596/353874.terrain differ diff --git a/public/terrain/19/858596/353875.terrain b/public/terrain/19/858596/353875.terrain new file mode 100644 index 000000000..bf979b3db Binary files /dev/null and b/public/terrain/19/858596/353875.terrain differ diff --git a/public/terrain/19/858596/353876.terrain b/public/terrain/19/858596/353876.terrain new file mode 100644 index 000000000..b1f0c2e86 Binary files /dev/null and b/public/terrain/19/858596/353876.terrain differ diff --git a/public/terrain/19/858596/353877.terrain b/public/terrain/19/858596/353877.terrain new file mode 100644 index 000000000..cc3b529e2 Binary files /dev/null and b/public/terrain/19/858596/353877.terrain differ diff --git a/public/terrain/19/858596/353878.terrain b/public/terrain/19/858596/353878.terrain new file mode 100644 index 000000000..c579597a9 Binary files /dev/null and b/public/terrain/19/858596/353878.terrain differ diff --git a/public/terrain/19/858596/353879.terrain b/public/terrain/19/858596/353879.terrain new file mode 100644 index 000000000..f78342f8d Binary files /dev/null and b/public/terrain/19/858596/353879.terrain differ diff --git a/public/terrain/19/858596/353880.terrain b/public/terrain/19/858596/353880.terrain new file mode 100644 index 000000000..ee61c689a Binary files /dev/null and b/public/terrain/19/858596/353880.terrain differ diff --git a/public/terrain/19/858596/353881.terrain b/public/terrain/19/858596/353881.terrain new file mode 100644 index 000000000..11372740a Binary files /dev/null and b/public/terrain/19/858596/353881.terrain differ diff --git a/public/terrain/19/858596/353882.terrain b/public/terrain/19/858596/353882.terrain new file mode 100644 index 000000000..6f7e82dc4 Binary files /dev/null and b/public/terrain/19/858596/353882.terrain differ diff --git a/public/terrain/19/858596/353883.terrain b/public/terrain/19/858596/353883.terrain new file mode 100644 index 000000000..2103cc212 Binary files /dev/null and b/public/terrain/19/858596/353883.terrain differ diff --git a/public/terrain/19/858596/353884.terrain b/public/terrain/19/858596/353884.terrain new file mode 100644 index 000000000..2dcebdba3 Binary files /dev/null and b/public/terrain/19/858596/353884.terrain differ diff --git a/public/terrain/19/858596/353885.terrain b/public/terrain/19/858596/353885.terrain new file mode 100644 index 000000000..09c7f06b9 Binary files /dev/null and b/public/terrain/19/858596/353885.terrain differ diff --git a/public/terrain/19/858596/353886.terrain b/public/terrain/19/858596/353886.terrain new file mode 100644 index 000000000..8ee77d4c0 Binary files /dev/null and b/public/terrain/19/858596/353886.terrain differ diff --git a/public/terrain/19/858596/353887.terrain b/public/terrain/19/858596/353887.terrain new file mode 100644 index 000000000..ccfbd8162 Binary files /dev/null and b/public/terrain/19/858596/353887.terrain differ diff --git a/public/terrain/19/858596/353888.terrain b/public/terrain/19/858596/353888.terrain new file mode 100644 index 000000000..db2f2255b Binary files /dev/null and b/public/terrain/19/858596/353888.terrain differ diff --git a/public/terrain/19/858596/353889.terrain b/public/terrain/19/858596/353889.terrain new file mode 100644 index 000000000..06364b24a Binary files /dev/null and b/public/terrain/19/858596/353889.terrain differ diff --git a/public/terrain/19/858596/353890.terrain b/public/terrain/19/858596/353890.terrain new file mode 100644 index 000000000..98664f817 Binary files /dev/null and b/public/terrain/19/858596/353890.terrain differ diff --git a/public/terrain/19/858596/353891.terrain b/public/terrain/19/858596/353891.terrain new file mode 100644 index 000000000..fdfa23313 Binary files /dev/null and b/public/terrain/19/858596/353891.terrain differ diff --git a/public/terrain/19/858596/353892.terrain b/public/terrain/19/858596/353892.terrain new file mode 100644 index 000000000..120175d79 Binary files /dev/null and b/public/terrain/19/858596/353892.terrain differ diff --git a/public/terrain/19/858596/353893.terrain b/public/terrain/19/858596/353893.terrain new file mode 100644 index 000000000..6d2d8e136 Binary files /dev/null and b/public/terrain/19/858596/353893.terrain differ diff --git a/public/terrain/19/858596/353894.terrain b/public/terrain/19/858596/353894.terrain new file mode 100644 index 000000000..387e97205 Binary files /dev/null and b/public/terrain/19/858596/353894.terrain differ diff --git a/public/terrain/19/858596/353895.terrain b/public/terrain/19/858596/353895.terrain new file mode 100644 index 000000000..a56a9e4a7 Binary files /dev/null and b/public/terrain/19/858596/353895.terrain differ diff --git a/public/terrain/19/858596/353896.terrain b/public/terrain/19/858596/353896.terrain new file mode 100644 index 000000000..ababf1702 Binary files /dev/null and b/public/terrain/19/858596/353896.terrain differ diff --git a/public/terrain/19/858596/353897.terrain b/public/terrain/19/858596/353897.terrain new file mode 100644 index 000000000..05d2e31d0 Binary files /dev/null and b/public/terrain/19/858596/353897.terrain differ diff --git a/public/terrain/19/858596/353898.terrain b/public/terrain/19/858596/353898.terrain new file mode 100644 index 000000000..83291d287 Binary files /dev/null and b/public/terrain/19/858596/353898.terrain differ diff --git a/public/terrain/19/858596/353899.terrain b/public/terrain/19/858596/353899.terrain new file mode 100644 index 000000000..1c8667bb4 Binary files /dev/null and b/public/terrain/19/858596/353899.terrain differ diff --git a/public/terrain/19/858596/353900.terrain b/public/terrain/19/858596/353900.terrain new file mode 100644 index 000000000..7ed192073 Binary files /dev/null and b/public/terrain/19/858596/353900.terrain differ diff --git a/public/terrain/19/858596/353901.terrain b/public/terrain/19/858596/353901.terrain new file mode 100644 index 000000000..4bcdbbcf3 Binary files /dev/null and b/public/terrain/19/858596/353901.terrain differ diff --git a/public/terrain/19/858596/353902.terrain b/public/terrain/19/858596/353902.terrain new file mode 100644 index 000000000..02f92f12b Binary files /dev/null and b/public/terrain/19/858596/353902.terrain differ diff --git a/public/terrain/19/858596/353903.terrain b/public/terrain/19/858596/353903.terrain new file mode 100644 index 000000000..837958b4f Binary files /dev/null and b/public/terrain/19/858596/353903.terrain differ diff --git a/public/terrain/19/858596/353904.terrain b/public/terrain/19/858596/353904.terrain new file mode 100644 index 000000000..5cde331cd Binary files /dev/null and b/public/terrain/19/858596/353904.terrain differ diff --git a/public/terrain/19/858596/353905.terrain b/public/terrain/19/858596/353905.terrain new file mode 100644 index 000000000..84fc95a3c Binary files /dev/null and b/public/terrain/19/858596/353905.terrain differ diff --git a/public/terrain/19/858596/353906.terrain b/public/terrain/19/858596/353906.terrain new file mode 100644 index 000000000..3d37bb5f1 Binary files /dev/null and b/public/terrain/19/858596/353906.terrain differ diff --git a/public/terrain/19/858596/353907.terrain b/public/terrain/19/858596/353907.terrain new file mode 100644 index 000000000..8bf562a37 Binary files /dev/null and b/public/terrain/19/858596/353907.terrain differ diff --git a/public/terrain/19/858596/353908.terrain b/public/terrain/19/858596/353908.terrain new file mode 100644 index 000000000..cf4d12ee8 Binary files /dev/null and b/public/terrain/19/858596/353908.terrain differ diff --git a/public/terrain/19/858596/353909.terrain b/public/terrain/19/858596/353909.terrain new file mode 100644 index 000000000..abfcc6b9b Binary files /dev/null and b/public/terrain/19/858596/353909.terrain differ diff --git a/public/terrain/19/858596/353910.terrain b/public/terrain/19/858596/353910.terrain new file mode 100644 index 000000000..8fbd86202 Binary files /dev/null and b/public/terrain/19/858596/353910.terrain differ diff --git a/public/terrain/19/858596/353911.terrain b/public/terrain/19/858596/353911.terrain new file mode 100644 index 000000000..b9f23b2de Binary files /dev/null and b/public/terrain/19/858596/353911.terrain differ diff --git a/public/terrain/19/858596/353912.terrain b/public/terrain/19/858596/353912.terrain new file mode 100644 index 000000000..9495ddda5 Binary files /dev/null and b/public/terrain/19/858596/353912.terrain differ diff --git a/public/terrain/19/858596/353913.terrain b/public/terrain/19/858596/353913.terrain new file mode 100644 index 000000000..41fcb79d6 Binary files /dev/null and b/public/terrain/19/858596/353913.terrain differ diff --git a/public/terrain/19/858596/353914.terrain b/public/terrain/19/858596/353914.terrain new file mode 100644 index 000000000..72582ef3c Binary files /dev/null and b/public/terrain/19/858596/353914.terrain differ diff --git a/public/terrain/19/858596/353915.terrain b/public/terrain/19/858596/353915.terrain new file mode 100644 index 000000000..9f924f4a4 Binary files /dev/null and b/public/terrain/19/858596/353915.terrain differ diff --git a/public/terrain/19/858596/353916.terrain b/public/terrain/19/858596/353916.terrain new file mode 100644 index 000000000..c0cb4f8dc Binary files /dev/null and b/public/terrain/19/858596/353916.terrain differ diff --git a/public/terrain/19/858596/353917.terrain b/public/terrain/19/858596/353917.terrain new file mode 100644 index 000000000..b8cfd9188 Binary files /dev/null and b/public/terrain/19/858596/353917.terrain differ diff --git a/public/terrain/19/858596/353918.terrain b/public/terrain/19/858596/353918.terrain new file mode 100644 index 000000000..075aa66d9 Binary files /dev/null and b/public/terrain/19/858596/353918.terrain differ diff --git a/public/terrain/19/858596/353919.terrain b/public/terrain/19/858596/353919.terrain new file mode 100644 index 000000000..24f9e0419 Binary files /dev/null and b/public/terrain/19/858596/353919.terrain differ diff --git a/public/terrain/19/858596/353920.terrain b/public/terrain/19/858596/353920.terrain new file mode 100644 index 000000000..60ed07ff9 Binary files /dev/null and b/public/terrain/19/858596/353920.terrain differ diff --git a/public/terrain/19/858596/353921.terrain b/public/terrain/19/858596/353921.terrain new file mode 100644 index 000000000..9a723ea6b Binary files /dev/null and b/public/terrain/19/858596/353921.terrain differ diff --git a/public/terrain/19/858596/353922.terrain b/public/terrain/19/858596/353922.terrain new file mode 100644 index 000000000..f4bb39e95 Binary files /dev/null and b/public/terrain/19/858596/353922.terrain differ diff --git a/public/terrain/19/858596/353923.terrain b/public/terrain/19/858596/353923.terrain new file mode 100644 index 000000000..88d6953fd Binary files /dev/null and b/public/terrain/19/858596/353923.terrain differ diff --git a/public/terrain/19/858596/353924.terrain b/public/terrain/19/858596/353924.terrain new file mode 100644 index 000000000..cab0c7d5b Binary files /dev/null and b/public/terrain/19/858596/353924.terrain differ diff --git a/public/terrain/19/858596/353925.terrain b/public/terrain/19/858596/353925.terrain new file mode 100644 index 000000000..020f1731b Binary files /dev/null and b/public/terrain/19/858596/353925.terrain differ diff --git a/public/terrain/19/858596/353926.terrain b/public/terrain/19/858596/353926.terrain new file mode 100644 index 000000000..a4e0cbe29 Binary files /dev/null and b/public/terrain/19/858596/353926.terrain differ diff --git a/public/terrain/19/858596/353927.terrain b/public/terrain/19/858596/353927.terrain new file mode 100644 index 000000000..02cdac2c0 Binary files /dev/null and b/public/terrain/19/858596/353927.terrain differ diff --git a/public/terrain/19/858596/353928.terrain b/public/terrain/19/858596/353928.terrain new file mode 100644 index 000000000..c5f566176 Binary files /dev/null and b/public/terrain/19/858596/353928.terrain differ diff --git a/public/terrain/19/858596/353929.terrain b/public/terrain/19/858596/353929.terrain new file mode 100644 index 000000000..8166e8856 Binary files /dev/null and b/public/terrain/19/858596/353929.terrain differ diff --git a/public/terrain/19/858596/353930.terrain b/public/terrain/19/858596/353930.terrain new file mode 100644 index 000000000..93d2c80d7 Binary files /dev/null and b/public/terrain/19/858596/353930.terrain differ diff --git a/public/terrain/19/858596/353931.terrain b/public/terrain/19/858596/353931.terrain new file mode 100644 index 000000000..21d30533e Binary files /dev/null and b/public/terrain/19/858596/353931.terrain differ diff --git a/public/terrain/19/858596/353932.terrain b/public/terrain/19/858596/353932.terrain new file mode 100644 index 000000000..8ed784edd Binary files /dev/null and b/public/terrain/19/858596/353932.terrain differ diff --git a/public/terrain/19/858596/353933.terrain b/public/terrain/19/858596/353933.terrain new file mode 100644 index 000000000..3e1ac0058 Binary files /dev/null and b/public/terrain/19/858596/353933.terrain differ diff --git a/public/terrain/19/858596/353934.terrain b/public/terrain/19/858596/353934.terrain new file mode 100644 index 000000000..cdf62be0c Binary files /dev/null and b/public/terrain/19/858596/353934.terrain differ diff --git a/public/terrain/19/858596/353935.terrain b/public/terrain/19/858596/353935.terrain new file mode 100644 index 000000000..7a451c944 Binary files /dev/null and b/public/terrain/19/858596/353935.terrain differ diff --git a/public/terrain/19/858596/353936.terrain b/public/terrain/19/858596/353936.terrain new file mode 100644 index 000000000..ec852e559 Binary files /dev/null and b/public/terrain/19/858596/353936.terrain differ diff --git a/public/terrain/19/858596/353937.terrain b/public/terrain/19/858596/353937.terrain new file mode 100644 index 000000000..609a72974 Binary files /dev/null and b/public/terrain/19/858596/353937.terrain differ diff --git a/public/terrain/19/858596/353938.terrain b/public/terrain/19/858596/353938.terrain new file mode 100644 index 000000000..2115bf8b8 Binary files /dev/null and b/public/terrain/19/858596/353938.terrain differ diff --git a/public/terrain/19/858596/353939.terrain b/public/terrain/19/858596/353939.terrain new file mode 100644 index 000000000..a777ec2ab Binary files /dev/null and b/public/terrain/19/858596/353939.terrain differ diff --git a/public/terrain/19/858596/353940.terrain b/public/terrain/19/858596/353940.terrain new file mode 100644 index 000000000..3726f7906 Binary files /dev/null and b/public/terrain/19/858596/353940.terrain differ diff --git a/public/terrain/19/858596/353941.terrain b/public/terrain/19/858596/353941.terrain new file mode 100644 index 000000000..5cb098f39 Binary files /dev/null and b/public/terrain/19/858596/353941.terrain differ diff --git a/public/terrain/19/858596/353942.terrain b/public/terrain/19/858596/353942.terrain new file mode 100644 index 000000000..011cd39d0 Binary files /dev/null and b/public/terrain/19/858596/353942.terrain differ diff --git a/public/terrain/19/858596/353943.terrain b/public/terrain/19/858596/353943.terrain new file mode 100644 index 000000000..af1204613 Binary files /dev/null and b/public/terrain/19/858596/353943.terrain differ diff --git a/public/terrain/19/858596/353944.terrain b/public/terrain/19/858596/353944.terrain new file mode 100644 index 000000000..b63bba6c8 Binary files /dev/null and b/public/terrain/19/858596/353944.terrain differ diff --git a/public/terrain/19/858596/353945.terrain b/public/terrain/19/858596/353945.terrain new file mode 100644 index 000000000..2ead80114 Binary files /dev/null and b/public/terrain/19/858596/353945.terrain differ diff --git a/public/terrain/19/858596/353946.terrain b/public/terrain/19/858596/353946.terrain new file mode 100644 index 000000000..db4647ab4 Binary files /dev/null and b/public/terrain/19/858596/353946.terrain differ diff --git a/public/terrain/19/858596/353947.terrain b/public/terrain/19/858596/353947.terrain new file mode 100644 index 000000000..bc5a5749e Binary files /dev/null and b/public/terrain/19/858596/353947.terrain differ diff --git a/public/terrain/19/858596/353948.terrain b/public/terrain/19/858596/353948.terrain new file mode 100644 index 000000000..41e3a0393 Binary files /dev/null and b/public/terrain/19/858596/353948.terrain differ diff --git a/public/terrain/19/858596/353949.terrain b/public/terrain/19/858596/353949.terrain new file mode 100644 index 000000000..eb87f94e1 Binary files /dev/null and b/public/terrain/19/858596/353949.terrain differ diff --git a/public/terrain/19/858596/353950.terrain b/public/terrain/19/858596/353950.terrain new file mode 100644 index 000000000..b6eecf1ce Binary files /dev/null and b/public/terrain/19/858596/353950.terrain differ diff --git a/public/terrain/19/858596/353951.terrain b/public/terrain/19/858596/353951.terrain new file mode 100644 index 000000000..d4594815c Binary files /dev/null and b/public/terrain/19/858596/353951.terrain differ diff --git a/public/terrain/19/858596/353952.terrain b/public/terrain/19/858596/353952.terrain new file mode 100644 index 000000000..c2c54f5fb Binary files /dev/null and b/public/terrain/19/858596/353952.terrain differ diff --git a/public/terrain/19/858596/353953.terrain b/public/terrain/19/858596/353953.terrain new file mode 100644 index 000000000..ae641fe08 Binary files /dev/null and b/public/terrain/19/858596/353953.terrain differ diff --git a/public/terrain/19/858596/353954.terrain b/public/terrain/19/858596/353954.terrain new file mode 100644 index 000000000..3f63b913c Binary files /dev/null and b/public/terrain/19/858596/353954.terrain differ diff --git a/public/terrain/19/858596/353955.terrain b/public/terrain/19/858596/353955.terrain new file mode 100644 index 000000000..13c5ac9ef Binary files /dev/null and b/public/terrain/19/858596/353955.terrain differ diff --git a/public/terrain/19/858596/353956.terrain b/public/terrain/19/858596/353956.terrain new file mode 100644 index 000000000..52eb7cada Binary files /dev/null and b/public/terrain/19/858596/353956.terrain differ diff --git a/public/terrain/19/858596/353957.terrain b/public/terrain/19/858596/353957.terrain new file mode 100644 index 000000000..86c844247 Binary files /dev/null and b/public/terrain/19/858596/353957.terrain differ diff --git a/public/terrain/19/858596/353958.terrain b/public/terrain/19/858596/353958.terrain new file mode 100644 index 000000000..87fd09f91 Binary files /dev/null and b/public/terrain/19/858596/353958.terrain differ diff --git a/public/terrain/19/858596/353959.terrain b/public/terrain/19/858596/353959.terrain new file mode 100644 index 000000000..0d4f1fea9 Binary files /dev/null and b/public/terrain/19/858596/353959.terrain differ diff --git a/public/terrain/19/858596/353960.terrain b/public/terrain/19/858596/353960.terrain new file mode 100644 index 000000000..b3228893a Binary files /dev/null and b/public/terrain/19/858596/353960.terrain differ diff --git a/public/terrain/19/858596/353961.terrain b/public/terrain/19/858596/353961.terrain new file mode 100644 index 000000000..1e21f4e64 Binary files /dev/null and b/public/terrain/19/858596/353961.terrain differ diff --git a/public/terrain/19/858596/353962.terrain b/public/terrain/19/858596/353962.terrain new file mode 100644 index 000000000..bc459ce70 Binary files /dev/null and b/public/terrain/19/858596/353962.terrain differ diff --git a/public/terrain/19/858596/353963.terrain b/public/terrain/19/858596/353963.terrain new file mode 100644 index 000000000..890d3b7db Binary files /dev/null and b/public/terrain/19/858596/353963.terrain differ diff --git a/public/terrain/19/858596/353964.terrain b/public/terrain/19/858596/353964.terrain new file mode 100644 index 000000000..16b132f2b Binary files /dev/null and b/public/terrain/19/858596/353964.terrain differ diff --git a/public/terrain/19/858596/353965.terrain b/public/terrain/19/858596/353965.terrain new file mode 100644 index 000000000..34cb0173a Binary files /dev/null and b/public/terrain/19/858596/353965.terrain differ diff --git a/public/terrain/19/858596/353966.terrain b/public/terrain/19/858596/353966.terrain new file mode 100644 index 000000000..222fb0d43 Binary files /dev/null and b/public/terrain/19/858596/353966.terrain differ diff --git a/public/terrain/19/858596/353967.terrain b/public/terrain/19/858596/353967.terrain new file mode 100644 index 000000000..830708013 Binary files /dev/null and b/public/terrain/19/858596/353967.terrain differ diff --git a/public/terrain/19/858596/353968.terrain b/public/terrain/19/858596/353968.terrain new file mode 100644 index 000000000..0b947a22b Binary files /dev/null and b/public/terrain/19/858596/353968.terrain differ diff --git a/public/terrain/19/858596/353969.terrain b/public/terrain/19/858596/353969.terrain new file mode 100644 index 000000000..483e79b95 Binary files /dev/null and b/public/terrain/19/858596/353969.terrain differ diff --git a/public/terrain/19/858596/353970.terrain b/public/terrain/19/858596/353970.terrain new file mode 100644 index 000000000..80c2bb924 Binary files /dev/null and b/public/terrain/19/858596/353970.terrain differ diff --git a/public/terrain/19/858596/353971.terrain b/public/terrain/19/858596/353971.terrain new file mode 100644 index 000000000..bb70c9511 Binary files /dev/null and b/public/terrain/19/858596/353971.terrain differ diff --git a/public/terrain/19/858596/353972.terrain b/public/terrain/19/858596/353972.terrain new file mode 100644 index 000000000..dc8f1d83c Binary files /dev/null and b/public/terrain/19/858596/353972.terrain differ diff --git a/public/terrain/19/858596/353973.terrain b/public/terrain/19/858596/353973.terrain new file mode 100644 index 000000000..d9442cf2b Binary files /dev/null and b/public/terrain/19/858596/353973.terrain differ diff --git a/public/terrain/19/858596/353974.terrain b/public/terrain/19/858596/353974.terrain new file mode 100644 index 000000000..4f02eb58c Binary files /dev/null and b/public/terrain/19/858596/353974.terrain differ diff --git a/public/terrain/19/858596/353975.terrain b/public/terrain/19/858596/353975.terrain new file mode 100644 index 000000000..2e7c6257f Binary files /dev/null and b/public/terrain/19/858596/353975.terrain differ diff --git a/public/terrain/19/858596/353976.terrain b/public/terrain/19/858596/353976.terrain new file mode 100644 index 000000000..3567e695c Binary files /dev/null and b/public/terrain/19/858596/353976.terrain differ diff --git a/public/terrain/19/858596/353977.terrain b/public/terrain/19/858596/353977.terrain new file mode 100644 index 000000000..ba8506db0 Binary files /dev/null and b/public/terrain/19/858596/353977.terrain differ diff --git a/public/terrain/19/858596/353978.terrain b/public/terrain/19/858596/353978.terrain new file mode 100644 index 000000000..6aafe4b3e Binary files /dev/null and b/public/terrain/19/858596/353978.terrain differ diff --git a/public/terrain/19/858596/353979.terrain b/public/terrain/19/858596/353979.terrain new file mode 100644 index 000000000..1d8a7ea77 Binary files /dev/null and b/public/terrain/19/858596/353979.terrain differ diff --git a/public/terrain/19/858596/353980.terrain b/public/terrain/19/858596/353980.terrain new file mode 100644 index 000000000..116c7908b Binary files /dev/null and b/public/terrain/19/858596/353980.terrain differ diff --git a/public/terrain/19/858596/353981.terrain b/public/terrain/19/858596/353981.terrain new file mode 100644 index 000000000..c376cc983 Binary files /dev/null and b/public/terrain/19/858596/353981.terrain differ diff --git a/public/terrain/19/858596/353982.terrain b/public/terrain/19/858596/353982.terrain new file mode 100644 index 000000000..fb9765e87 Binary files /dev/null and b/public/terrain/19/858596/353982.terrain differ diff --git a/public/terrain/19/858596/353983.terrain b/public/terrain/19/858596/353983.terrain new file mode 100644 index 000000000..f6c4d330f Binary files /dev/null and b/public/terrain/19/858596/353983.terrain differ diff --git a/public/terrain/19/858596/353984.terrain b/public/terrain/19/858596/353984.terrain new file mode 100644 index 000000000..2a34dd6ce Binary files /dev/null and b/public/terrain/19/858596/353984.terrain differ diff --git a/public/terrain/19/858596/353985.terrain b/public/terrain/19/858596/353985.terrain new file mode 100644 index 000000000..21fcad470 Binary files /dev/null and b/public/terrain/19/858596/353985.terrain differ diff --git a/public/terrain/19/858596/353986.terrain b/public/terrain/19/858596/353986.terrain new file mode 100644 index 000000000..bcc87931b Binary files /dev/null and b/public/terrain/19/858596/353986.terrain differ diff --git a/public/terrain/19/858596/353987.terrain b/public/terrain/19/858596/353987.terrain new file mode 100644 index 000000000..adb6c7c58 Binary files /dev/null and b/public/terrain/19/858596/353987.terrain differ diff --git a/public/terrain/19/858596/353988.terrain b/public/terrain/19/858596/353988.terrain new file mode 100644 index 000000000..b02528a3e Binary files /dev/null and b/public/terrain/19/858596/353988.terrain differ diff --git a/public/terrain/19/858596/353989.terrain b/public/terrain/19/858596/353989.terrain new file mode 100644 index 000000000..4fb2477a9 Binary files /dev/null and b/public/terrain/19/858596/353989.terrain differ diff --git a/public/terrain/19/858596/353990.terrain b/public/terrain/19/858596/353990.terrain new file mode 100644 index 000000000..ca9bd059c Binary files /dev/null and b/public/terrain/19/858596/353990.terrain differ diff --git a/public/terrain/19/858596/353991.terrain b/public/terrain/19/858596/353991.terrain new file mode 100644 index 000000000..4aea88946 Binary files /dev/null and b/public/terrain/19/858596/353991.terrain differ diff --git a/public/terrain/19/858596/353992.terrain b/public/terrain/19/858596/353992.terrain new file mode 100644 index 000000000..837705b8d Binary files /dev/null and b/public/terrain/19/858596/353992.terrain differ diff --git a/public/terrain/19/858596/353993.terrain b/public/terrain/19/858596/353993.terrain new file mode 100644 index 000000000..c1f2df10c Binary files /dev/null and b/public/terrain/19/858596/353993.terrain differ diff --git a/public/terrain/19/858596/353994.terrain b/public/terrain/19/858596/353994.terrain new file mode 100644 index 000000000..d2c726755 Binary files /dev/null and b/public/terrain/19/858596/353994.terrain differ diff --git a/public/terrain/19/858596/353995.terrain b/public/terrain/19/858596/353995.terrain new file mode 100644 index 000000000..e5272c41f Binary files /dev/null and b/public/terrain/19/858596/353995.terrain differ diff --git a/public/terrain/19/858596/353996.terrain b/public/terrain/19/858596/353996.terrain new file mode 100644 index 000000000..4c998724c Binary files /dev/null and b/public/terrain/19/858596/353996.terrain differ diff --git a/public/terrain/19/858596/353997.terrain b/public/terrain/19/858596/353997.terrain new file mode 100644 index 000000000..9a56fd987 Binary files /dev/null and b/public/terrain/19/858596/353997.terrain differ diff --git a/public/terrain/19/858596/353998.terrain b/public/terrain/19/858596/353998.terrain new file mode 100644 index 000000000..11ecfe6b1 Binary files /dev/null and b/public/terrain/19/858596/353998.terrain differ diff --git a/public/terrain/19/858596/353999.terrain b/public/terrain/19/858596/353999.terrain new file mode 100644 index 000000000..787c20e95 Binary files /dev/null and b/public/terrain/19/858596/353999.terrain differ diff --git a/public/terrain/19/858596/354000.terrain b/public/terrain/19/858596/354000.terrain new file mode 100644 index 000000000..8566979b9 Binary files /dev/null and b/public/terrain/19/858596/354000.terrain differ diff --git a/public/terrain/19/858596/354001.terrain b/public/terrain/19/858596/354001.terrain new file mode 100644 index 000000000..48f59a792 Binary files /dev/null and b/public/terrain/19/858596/354001.terrain differ diff --git a/public/terrain/19/858596/354002.terrain b/public/terrain/19/858596/354002.terrain new file mode 100644 index 000000000..14ec00d42 Binary files /dev/null and b/public/terrain/19/858596/354002.terrain differ diff --git a/public/terrain/19/858596/354003.terrain b/public/terrain/19/858596/354003.terrain new file mode 100644 index 000000000..6f29a6f0d Binary files /dev/null and b/public/terrain/19/858596/354003.terrain differ diff --git a/public/terrain/19/858596/354004.terrain b/public/terrain/19/858596/354004.terrain new file mode 100644 index 000000000..0d24faeba Binary files /dev/null and b/public/terrain/19/858596/354004.terrain differ diff --git a/public/terrain/19/858596/354005.terrain b/public/terrain/19/858596/354005.terrain new file mode 100644 index 000000000..738e0cdf6 Binary files /dev/null and b/public/terrain/19/858596/354005.terrain differ diff --git a/public/terrain/19/858596/354006.terrain b/public/terrain/19/858596/354006.terrain new file mode 100644 index 000000000..42128c1e9 Binary files /dev/null and b/public/terrain/19/858596/354006.terrain differ diff --git a/public/terrain/19/858596/354007.terrain b/public/terrain/19/858596/354007.terrain new file mode 100644 index 000000000..58f0afd0c Binary files /dev/null and b/public/terrain/19/858596/354007.terrain differ diff --git a/public/terrain/19/858596/354008.terrain b/public/terrain/19/858596/354008.terrain new file mode 100644 index 000000000..39d5d660c Binary files /dev/null and b/public/terrain/19/858596/354008.terrain differ diff --git a/public/terrain/19/858596/354009.terrain b/public/terrain/19/858596/354009.terrain new file mode 100644 index 000000000..b0ce8f14b Binary files /dev/null and b/public/terrain/19/858596/354009.terrain differ diff --git a/public/terrain/19/858596/354010.terrain b/public/terrain/19/858596/354010.terrain new file mode 100644 index 000000000..5386dc7d9 Binary files /dev/null and b/public/terrain/19/858596/354010.terrain differ diff --git a/public/terrain/19/858596/354011.terrain b/public/terrain/19/858596/354011.terrain new file mode 100644 index 000000000..7804a3bd7 Binary files /dev/null and b/public/terrain/19/858596/354011.terrain differ diff --git a/public/terrain/19/858596/354012.terrain b/public/terrain/19/858596/354012.terrain new file mode 100644 index 000000000..7af8ed9f2 Binary files /dev/null and b/public/terrain/19/858596/354012.terrain differ diff --git a/public/terrain/19/858596/354013.terrain b/public/terrain/19/858596/354013.terrain new file mode 100644 index 000000000..3a47e0939 Binary files /dev/null and b/public/terrain/19/858596/354013.terrain differ diff --git a/public/terrain/19/858596/354014.terrain b/public/terrain/19/858596/354014.terrain new file mode 100644 index 000000000..1702bed49 Binary files /dev/null and b/public/terrain/19/858596/354014.terrain differ diff --git a/public/terrain/19/858596/354015.terrain b/public/terrain/19/858596/354015.terrain new file mode 100644 index 000000000..5c72aa11c Binary files /dev/null and b/public/terrain/19/858596/354015.terrain differ diff --git a/public/terrain/19/858596/354016.terrain b/public/terrain/19/858596/354016.terrain new file mode 100644 index 000000000..a2b57c618 Binary files /dev/null and b/public/terrain/19/858596/354016.terrain differ diff --git a/public/terrain/19/858596/354017.terrain b/public/terrain/19/858596/354017.terrain new file mode 100644 index 000000000..cbc2c01a9 Binary files /dev/null and b/public/terrain/19/858596/354017.terrain differ diff --git a/public/terrain/19/858596/354018.terrain b/public/terrain/19/858596/354018.terrain new file mode 100644 index 000000000..a3de44e00 Binary files /dev/null and b/public/terrain/19/858596/354018.terrain differ diff --git a/public/terrain/19/858596/354019.terrain b/public/terrain/19/858596/354019.terrain new file mode 100644 index 000000000..88cec3c38 Binary files /dev/null and b/public/terrain/19/858596/354019.terrain differ diff --git a/public/terrain/19/858596/354020.terrain b/public/terrain/19/858596/354020.terrain new file mode 100644 index 000000000..84a286bcf Binary files /dev/null and b/public/terrain/19/858596/354020.terrain differ diff --git a/public/terrain/19/858596/354021.terrain b/public/terrain/19/858596/354021.terrain new file mode 100644 index 000000000..6ca7f8283 Binary files /dev/null and b/public/terrain/19/858596/354021.terrain differ diff --git a/public/terrain/19/858596/354022.terrain b/public/terrain/19/858596/354022.terrain new file mode 100644 index 000000000..6630464a8 Binary files /dev/null and b/public/terrain/19/858596/354022.terrain differ diff --git a/public/terrain/19/858596/354023.terrain b/public/terrain/19/858596/354023.terrain new file mode 100644 index 000000000..bca6eca26 Binary files /dev/null and b/public/terrain/19/858596/354023.terrain differ diff --git a/public/terrain/19/858596/354024.terrain b/public/terrain/19/858596/354024.terrain new file mode 100644 index 000000000..f780a1b40 Binary files /dev/null and b/public/terrain/19/858596/354024.terrain differ diff --git a/public/terrain/19/858596/354025.terrain b/public/terrain/19/858596/354025.terrain new file mode 100644 index 000000000..79e63cadc Binary files /dev/null and b/public/terrain/19/858596/354025.terrain differ diff --git a/public/terrain/19/858596/354026.terrain b/public/terrain/19/858596/354026.terrain new file mode 100644 index 000000000..eb3db6bcb Binary files /dev/null and b/public/terrain/19/858596/354026.terrain differ diff --git a/public/terrain/19/858596/354027.terrain b/public/terrain/19/858596/354027.terrain new file mode 100644 index 000000000..b189dc450 Binary files /dev/null and b/public/terrain/19/858596/354027.terrain differ diff --git a/public/terrain/19/858596/354028.terrain b/public/terrain/19/858596/354028.terrain new file mode 100644 index 000000000..5c6fa1ad8 Binary files /dev/null and b/public/terrain/19/858596/354028.terrain differ diff --git a/public/terrain/19/858596/354029.terrain b/public/terrain/19/858596/354029.terrain new file mode 100644 index 000000000..52e272f1d Binary files /dev/null and b/public/terrain/19/858596/354029.terrain differ diff --git a/public/terrain/19/858596/354030.terrain b/public/terrain/19/858596/354030.terrain new file mode 100644 index 000000000..706ae187d Binary files /dev/null and b/public/terrain/19/858596/354030.terrain differ diff --git a/public/terrain/19/858596/354031.terrain b/public/terrain/19/858596/354031.terrain new file mode 100644 index 000000000..b8c706d4e Binary files /dev/null and b/public/terrain/19/858596/354031.terrain differ diff --git a/public/terrain/19/858596/354032.terrain b/public/terrain/19/858596/354032.terrain new file mode 100644 index 000000000..c204d8d18 Binary files /dev/null and b/public/terrain/19/858596/354032.terrain differ diff --git a/public/terrain/19/858596/354033.terrain b/public/terrain/19/858596/354033.terrain new file mode 100644 index 000000000..1253d3807 Binary files /dev/null and b/public/terrain/19/858596/354033.terrain differ diff --git a/public/terrain/19/858596/354034.terrain b/public/terrain/19/858596/354034.terrain new file mode 100644 index 000000000..ef859f4bd Binary files /dev/null and b/public/terrain/19/858596/354034.terrain differ diff --git a/public/terrain/19/858596/354035.terrain b/public/terrain/19/858596/354035.terrain new file mode 100644 index 000000000..66ca7be4e Binary files /dev/null and b/public/terrain/19/858596/354035.terrain differ diff --git a/public/terrain/19/858596/354036.terrain b/public/terrain/19/858596/354036.terrain new file mode 100644 index 000000000..46b1169e8 Binary files /dev/null and b/public/terrain/19/858596/354036.terrain differ diff --git a/public/terrain/19/858596/354037.terrain b/public/terrain/19/858596/354037.terrain new file mode 100644 index 000000000..a5075e735 Binary files /dev/null and b/public/terrain/19/858596/354037.terrain differ diff --git a/public/terrain/19/858596/354038.terrain b/public/terrain/19/858596/354038.terrain new file mode 100644 index 000000000..08cd5d3e7 Binary files /dev/null and b/public/terrain/19/858596/354038.terrain differ diff --git a/public/terrain/19/858596/354039.terrain b/public/terrain/19/858596/354039.terrain new file mode 100644 index 000000000..fe6a2d8e5 Binary files /dev/null and b/public/terrain/19/858596/354039.terrain differ diff --git a/public/terrain/19/858596/354040.terrain b/public/terrain/19/858596/354040.terrain new file mode 100644 index 000000000..cf66c8f8a Binary files /dev/null and b/public/terrain/19/858596/354040.terrain differ diff --git a/public/terrain/19/858596/354041.terrain b/public/terrain/19/858596/354041.terrain new file mode 100644 index 000000000..f693dd980 Binary files /dev/null and b/public/terrain/19/858596/354041.terrain differ diff --git a/public/terrain/19/858596/354042.terrain b/public/terrain/19/858596/354042.terrain new file mode 100644 index 000000000..7cc155122 Binary files /dev/null and b/public/terrain/19/858596/354042.terrain differ diff --git a/public/terrain/19/858596/354043.terrain b/public/terrain/19/858596/354043.terrain new file mode 100644 index 000000000..55f74a8e8 Binary files /dev/null and b/public/terrain/19/858596/354043.terrain differ diff --git a/public/terrain/19/858596/354044.terrain b/public/terrain/19/858596/354044.terrain new file mode 100644 index 000000000..22f61bfc3 Binary files /dev/null and b/public/terrain/19/858596/354044.terrain differ diff --git a/public/terrain/19/858596/354045.terrain b/public/terrain/19/858596/354045.terrain new file mode 100644 index 000000000..0c4db868b Binary files /dev/null and b/public/terrain/19/858596/354045.terrain differ diff --git a/public/terrain/19/858596/354046.terrain b/public/terrain/19/858596/354046.terrain new file mode 100644 index 000000000..27a4cf038 Binary files /dev/null and b/public/terrain/19/858596/354046.terrain differ diff --git a/public/terrain/19/858596/354047.terrain b/public/terrain/19/858596/354047.terrain new file mode 100644 index 000000000..2f9b78c8f Binary files /dev/null and b/public/terrain/19/858596/354047.terrain differ diff --git a/public/terrain/19/858596/354048.terrain b/public/terrain/19/858596/354048.terrain new file mode 100644 index 000000000..f652de010 Binary files /dev/null and b/public/terrain/19/858596/354048.terrain differ diff --git a/public/terrain/19/858596/354049.terrain b/public/terrain/19/858596/354049.terrain new file mode 100644 index 000000000..1e20b00f3 Binary files /dev/null and b/public/terrain/19/858596/354049.terrain differ diff --git a/public/terrain/19/858596/354050.terrain b/public/terrain/19/858596/354050.terrain new file mode 100644 index 000000000..9529698e3 Binary files /dev/null and b/public/terrain/19/858596/354050.terrain differ diff --git a/public/terrain/19/858596/354051.terrain b/public/terrain/19/858596/354051.terrain new file mode 100644 index 000000000..824e1d2d1 Binary files /dev/null and b/public/terrain/19/858596/354051.terrain differ diff --git a/public/terrain/19/858596/354052.terrain b/public/terrain/19/858596/354052.terrain new file mode 100644 index 000000000..11636502e Binary files /dev/null and b/public/terrain/19/858596/354052.terrain differ diff --git a/public/terrain/19/858596/354053.terrain b/public/terrain/19/858596/354053.terrain new file mode 100644 index 000000000..8fa39ec67 Binary files /dev/null and b/public/terrain/19/858596/354053.terrain differ diff --git a/public/terrain/19/858596/354054.terrain b/public/terrain/19/858596/354054.terrain new file mode 100644 index 000000000..6123fa8c8 Binary files /dev/null and b/public/terrain/19/858596/354054.terrain differ diff --git a/public/terrain/19/858596/354055.terrain b/public/terrain/19/858596/354055.terrain new file mode 100644 index 000000000..93192cfb2 Binary files /dev/null and b/public/terrain/19/858596/354055.terrain differ diff --git a/public/terrain/19/858596/354056.terrain b/public/terrain/19/858596/354056.terrain new file mode 100644 index 000000000..be1847cb2 Binary files /dev/null and b/public/terrain/19/858596/354056.terrain differ diff --git a/public/terrain/19/858596/354057.terrain b/public/terrain/19/858596/354057.terrain new file mode 100644 index 000000000..61111f106 Binary files /dev/null and b/public/terrain/19/858596/354057.terrain differ diff --git a/public/terrain/19/858596/354058.terrain b/public/terrain/19/858596/354058.terrain new file mode 100644 index 000000000..f88315300 Binary files /dev/null and b/public/terrain/19/858596/354058.terrain differ diff --git a/public/terrain/19/858596/354059.terrain b/public/terrain/19/858596/354059.terrain new file mode 100644 index 000000000..1019b4dc1 Binary files /dev/null and b/public/terrain/19/858596/354059.terrain differ diff --git a/public/terrain/19/858597/353743.terrain b/public/terrain/19/858597/353743.terrain new file mode 100644 index 000000000..fd48a7c8e Binary files /dev/null and b/public/terrain/19/858597/353743.terrain differ diff --git a/public/terrain/19/858597/353744.terrain b/public/terrain/19/858597/353744.terrain new file mode 100644 index 000000000..feba72def Binary files /dev/null and b/public/terrain/19/858597/353744.terrain differ diff --git a/public/terrain/19/858597/353745.terrain b/public/terrain/19/858597/353745.terrain new file mode 100644 index 000000000..a92dc0712 Binary files /dev/null and b/public/terrain/19/858597/353745.terrain differ diff --git a/public/terrain/19/858597/353746.terrain b/public/terrain/19/858597/353746.terrain new file mode 100644 index 000000000..a5ff164d7 Binary files /dev/null and b/public/terrain/19/858597/353746.terrain differ diff --git a/public/terrain/19/858597/353747.terrain b/public/terrain/19/858597/353747.terrain new file mode 100644 index 000000000..18e8f842a Binary files /dev/null and b/public/terrain/19/858597/353747.terrain differ diff --git a/public/terrain/19/858597/353748.terrain b/public/terrain/19/858597/353748.terrain new file mode 100644 index 000000000..631c87976 Binary files /dev/null and b/public/terrain/19/858597/353748.terrain differ diff --git a/public/terrain/19/858597/353749.terrain b/public/terrain/19/858597/353749.terrain new file mode 100644 index 000000000..0de18bc6a Binary files /dev/null and b/public/terrain/19/858597/353749.terrain differ diff --git a/public/terrain/19/858597/353750.terrain b/public/terrain/19/858597/353750.terrain new file mode 100644 index 000000000..1165f6cf4 Binary files /dev/null and b/public/terrain/19/858597/353750.terrain differ diff --git a/public/terrain/19/858597/353751.terrain b/public/terrain/19/858597/353751.terrain new file mode 100644 index 000000000..024033b78 Binary files /dev/null and b/public/terrain/19/858597/353751.terrain differ diff --git a/public/terrain/19/858597/353752.terrain b/public/terrain/19/858597/353752.terrain new file mode 100644 index 000000000..1c6224db6 Binary files /dev/null and b/public/terrain/19/858597/353752.terrain differ diff --git a/public/terrain/19/858597/353753.terrain b/public/terrain/19/858597/353753.terrain new file mode 100644 index 000000000..6f601e661 Binary files /dev/null and b/public/terrain/19/858597/353753.terrain differ diff --git a/public/terrain/19/858597/353754.terrain b/public/terrain/19/858597/353754.terrain new file mode 100644 index 000000000..130de83d1 Binary files /dev/null and b/public/terrain/19/858597/353754.terrain differ diff --git a/public/terrain/19/858597/353755.terrain b/public/terrain/19/858597/353755.terrain new file mode 100644 index 000000000..de771b2d3 Binary files /dev/null and b/public/terrain/19/858597/353755.terrain differ diff --git a/public/terrain/19/858597/353756.terrain b/public/terrain/19/858597/353756.terrain new file mode 100644 index 000000000..e72355437 Binary files /dev/null and b/public/terrain/19/858597/353756.terrain differ diff --git a/public/terrain/19/858597/353757.terrain b/public/terrain/19/858597/353757.terrain new file mode 100644 index 000000000..b8dac08fc Binary files /dev/null and b/public/terrain/19/858597/353757.terrain differ diff --git a/public/terrain/19/858597/353758.terrain b/public/terrain/19/858597/353758.terrain new file mode 100644 index 000000000..aebccc649 Binary files /dev/null and b/public/terrain/19/858597/353758.terrain differ diff --git a/public/terrain/19/858597/353759.terrain b/public/terrain/19/858597/353759.terrain new file mode 100644 index 000000000..810c77e5c Binary files /dev/null and b/public/terrain/19/858597/353759.terrain differ diff --git a/public/terrain/19/858597/353760.terrain b/public/terrain/19/858597/353760.terrain new file mode 100644 index 000000000..99f86d872 Binary files /dev/null and b/public/terrain/19/858597/353760.terrain differ diff --git a/public/terrain/19/858597/353761.terrain b/public/terrain/19/858597/353761.terrain new file mode 100644 index 000000000..57dc61329 Binary files /dev/null and b/public/terrain/19/858597/353761.terrain differ diff --git a/public/terrain/19/858597/353762.terrain b/public/terrain/19/858597/353762.terrain new file mode 100644 index 000000000..b7a9b2ecf Binary files /dev/null and b/public/terrain/19/858597/353762.terrain differ diff --git a/public/terrain/19/858597/353763.terrain b/public/terrain/19/858597/353763.terrain new file mode 100644 index 000000000..8d5b72149 Binary files /dev/null and b/public/terrain/19/858597/353763.terrain differ diff --git a/public/terrain/19/858597/353764.terrain b/public/terrain/19/858597/353764.terrain new file mode 100644 index 000000000..a7a802729 Binary files /dev/null and b/public/terrain/19/858597/353764.terrain differ diff --git a/public/terrain/19/858597/353765.terrain b/public/terrain/19/858597/353765.terrain new file mode 100644 index 000000000..5edf0d22f Binary files /dev/null and b/public/terrain/19/858597/353765.terrain differ diff --git a/public/terrain/19/858597/353766.terrain b/public/terrain/19/858597/353766.terrain new file mode 100644 index 000000000..66068d669 Binary files /dev/null and b/public/terrain/19/858597/353766.terrain differ diff --git a/public/terrain/19/858597/353767.terrain b/public/terrain/19/858597/353767.terrain new file mode 100644 index 000000000..bc676e42e Binary files /dev/null and b/public/terrain/19/858597/353767.terrain differ diff --git a/public/terrain/19/858597/353768.terrain b/public/terrain/19/858597/353768.terrain new file mode 100644 index 000000000..0370ec03e Binary files /dev/null and b/public/terrain/19/858597/353768.terrain differ diff --git a/public/terrain/19/858597/353769.terrain b/public/terrain/19/858597/353769.terrain new file mode 100644 index 000000000..a497dc96c Binary files /dev/null and b/public/terrain/19/858597/353769.terrain differ diff --git a/public/terrain/19/858597/353770.terrain b/public/terrain/19/858597/353770.terrain new file mode 100644 index 000000000..fa5c6258c Binary files /dev/null and b/public/terrain/19/858597/353770.terrain differ diff --git a/public/terrain/19/858597/353771.terrain b/public/terrain/19/858597/353771.terrain new file mode 100644 index 000000000..781107cb3 Binary files /dev/null and b/public/terrain/19/858597/353771.terrain differ diff --git a/public/terrain/19/858597/353772.terrain b/public/terrain/19/858597/353772.terrain new file mode 100644 index 000000000..7ec81209f Binary files /dev/null and b/public/terrain/19/858597/353772.terrain differ diff --git a/public/terrain/19/858597/353773.terrain b/public/terrain/19/858597/353773.terrain new file mode 100644 index 000000000..487487df2 Binary files /dev/null and b/public/terrain/19/858597/353773.terrain differ diff --git a/public/terrain/19/858597/353774.terrain b/public/terrain/19/858597/353774.terrain new file mode 100644 index 000000000..1ad7ac41c Binary files /dev/null and b/public/terrain/19/858597/353774.terrain differ diff --git a/public/terrain/19/858597/353775.terrain b/public/terrain/19/858597/353775.terrain new file mode 100644 index 000000000..40924f25a Binary files /dev/null and b/public/terrain/19/858597/353775.terrain differ diff --git a/public/terrain/19/858597/353776.terrain b/public/terrain/19/858597/353776.terrain new file mode 100644 index 000000000..c2e8835ec Binary files /dev/null and b/public/terrain/19/858597/353776.terrain differ diff --git a/public/terrain/19/858597/353777.terrain b/public/terrain/19/858597/353777.terrain new file mode 100644 index 000000000..be1769636 Binary files /dev/null and b/public/terrain/19/858597/353777.terrain differ diff --git a/public/terrain/19/858597/353778.terrain b/public/terrain/19/858597/353778.terrain new file mode 100644 index 000000000..44e79b7aa Binary files /dev/null and b/public/terrain/19/858597/353778.terrain differ diff --git a/public/terrain/19/858597/353779.terrain b/public/terrain/19/858597/353779.terrain new file mode 100644 index 000000000..5573993a7 Binary files /dev/null and b/public/terrain/19/858597/353779.terrain differ diff --git a/public/terrain/19/858597/353780.terrain b/public/terrain/19/858597/353780.terrain new file mode 100644 index 000000000..435131713 Binary files /dev/null and b/public/terrain/19/858597/353780.terrain differ diff --git a/public/terrain/19/858597/353781.terrain b/public/terrain/19/858597/353781.terrain new file mode 100644 index 000000000..17d6e2fb9 Binary files /dev/null and b/public/terrain/19/858597/353781.terrain differ diff --git a/public/terrain/19/858597/353782.terrain b/public/terrain/19/858597/353782.terrain new file mode 100644 index 000000000..4ae21688c Binary files /dev/null and b/public/terrain/19/858597/353782.terrain differ diff --git a/public/terrain/19/858597/353783.terrain b/public/terrain/19/858597/353783.terrain new file mode 100644 index 000000000..0976ae5e4 Binary files /dev/null and b/public/terrain/19/858597/353783.terrain differ diff --git a/public/terrain/19/858597/353784.terrain b/public/terrain/19/858597/353784.terrain new file mode 100644 index 000000000..8f5115229 Binary files /dev/null and b/public/terrain/19/858597/353784.terrain differ diff --git a/public/terrain/19/858597/353785.terrain b/public/terrain/19/858597/353785.terrain new file mode 100644 index 000000000..dbacbc0b1 Binary files /dev/null and b/public/terrain/19/858597/353785.terrain differ diff --git a/public/terrain/19/858597/353786.terrain b/public/terrain/19/858597/353786.terrain new file mode 100644 index 000000000..b691f1381 Binary files /dev/null and b/public/terrain/19/858597/353786.terrain differ diff --git a/public/terrain/19/858597/353787.terrain b/public/terrain/19/858597/353787.terrain new file mode 100644 index 000000000..6a96c7874 Binary files /dev/null and b/public/terrain/19/858597/353787.terrain differ diff --git a/public/terrain/19/858597/353788.terrain b/public/terrain/19/858597/353788.terrain new file mode 100644 index 000000000..b120a232f Binary files /dev/null and b/public/terrain/19/858597/353788.terrain differ diff --git a/public/terrain/19/858597/353789.terrain b/public/terrain/19/858597/353789.terrain new file mode 100644 index 000000000..ff1c5a5b1 Binary files /dev/null and b/public/terrain/19/858597/353789.terrain differ diff --git a/public/terrain/19/858597/353790.terrain b/public/terrain/19/858597/353790.terrain new file mode 100644 index 000000000..55fb1b06c Binary files /dev/null and b/public/terrain/19/858597/353790.terrain differ diff --git a/public/terrain/19/858597/353791.terrain b/public/terrain/19/858597/353791.terrain new file mode 100644 index 000000000..303a1e915 Binary files /dev/null and b/public/terrain/19/858597/353791.terrain differ diff --git a/public/terrain/19/858597/353792.terrain b/public/terrain/19/858597/353792.terrain new file mode 100644 index 000000000..694082ff1 Binary files /dev/null and b/public/terrain/19/858597/353792.terrain differ diff --git a/public/terrain/19/858597/353793.terrain b/public/terrain/19/858597/353793.terrain new file mode 100644 index 000000000..11be7b833 Binary files /dev/null and b/public/terrain/19/858597/353793.terrain differ diff --git a/public/terrain/19/858597/353794.terrain b/public/terrain/19/858597/353794.terrain new file mode 100644 index 000000000..1a33f5952 Binary files /dev/null and b/public/terrain/19/858597/353794.terrain differ diff --git a/public/terrain/19/858597/353795.terrain b/public/terrain/19/858597/353795.terrain new file mode 100644 index 000000000..c566a71ba Binary files /dev/null and b/public/terrain/19/858597/353795.terrain differ diff --git a/public/terrain/19/858597/353796.terrain b/public/terrain/19/858597/353796.terrain new file mode 100644 index 000000000..6dc24d5d3 Binary files /dev/null and b/public/terrain/19/858597/353796.terrain differ diff --git a/public/terrain/19/858597/353797.terrain b/public/terrain/19/858597/353797.terrain new file mode 100644 index 000000000..0562488ae Binary files /dev/null and b/public/terrain/19/858597/353797.terrain differ diff --git a/public/terrain/19/858597/353798.terrain b/public/terrain/19/858597/353798.terrain new file mode 100644 index 000000000..6c984764b Binary files /dev/null and b/public/terrain/19/858597/353798.terrain differ diff --git a/public/terrain/19/858597/353799.terrain b/public/terrain/19/858597/353799.terrain new file mode 100644 index 000000000..8c67635f8 Binary files /dev/null and b/public/terrain/19/858597/353799.terrain differ diff --git a/public/terrain/19/858597/353800.terrain b/public/terrain/19/858597/353800.terrain new file mode 100644 index 000000000..63b9662f6 Binary files /dev/null and b/public/terrain/19/858597/353800.terrain differ diff --git a/public/terrain/19/858597/353801.terrain b/public/terrain/19/858597/353801.terrain new file mode 100644 index 000000000..8a2c2dbea Binary files /dev/null and b/public/terrain/19/858597/353801.terrain differ diff --git a/public/terrain/19/858597/353802.terrain b/public/terrain/19/858597/353802.terrain new file mode 100644 index 000000000..8696f425b Binary files /dev/null and b/public/terrain/19/858597/353802.terrain differ diff --git a/public/terrain/19/858597/353803.terrain b/public/terrain/19/858597/353803.terrain new file mode 100644 index 000000000..a15a5ac2c Binary files /dev/null and b/public/terrain/19/858597/353803.terrain differ diff --git a/public/terrain/19/858597/353804.terrain b/public/terrain/19/858597/353804.terrain new file mode 100644 index 000000000..89ff8a99e Binary files /dev/null and b/public/terrain/19/858597/353804.terrain differ diff --git a/public/terrain/19/858597/353805.terrain b/public/terrain/19/858597/353805.terrain new file mode 100644 index 000000000..d7c4fb8d9 Binary files /dev/null and b/public/terrain/19/858597/353805.terrain differ diff --git a/public/terrain/19/858597/353806.terrain b/public/terrain/19/858597/353806.terrain new file mode 100644 index 000000000..a7a7c692a Binary files /dev/null and b/public/terrain/19/858597/353806.terrain differ diff --git a/public/terrain/19/858597/353807.terrain b/public/terrain/19/858597/353807.terrain new file mode 100644 index 000000000..66ed076d7 Binary files /dev/null and b/public/terrain/19/858597/353807.terrain differ diff --git a/public/terrain/19/858597/353808.terrain b/public/terrain/19/858597/353808.terrain new file mode 100644 index 000000000..bb21451b0 Binary files /dev/null and b/public/terrain/19/858597/353808.terrain differ diff --git a/public/terrain/19/858597/353809.terrain b/public/terrain/19/858597/353809.terrain new file mode 100644 index 000000000..40e765489 Binary files /dev/null and b/public/terrain/19/858597/353809.terrain differ diff --git a/public/terrain/19/858597/353810.terrain b/public/terrain/19/858597/353810.terrain new file mode 100644 index 000000000..0ab799cb1 Binary files /dev/null and b/public/terrain/19/858597/353810.terrain differ diff --git a/public/terrain/19/858597/353811.terrain b/public/terrain/19/858597/353811.terrain new file mode 100644 index 000000000..53353265f Binary files /dev/null and b/public/terrain/19/858597/353811.terrain differ diff --git a/public/terrain/19/858597/353812.terrain b/public/terrain/19/858597/353812.terrain new file mode 100644 index 000000000..5c8addfc5 Binary files /dev/null and b/public/terrain/19/858597/353812.terrain differ diff --git a/public/terrain/19/858597/353813.terrain b/public/terrain/19/858597/353813.terrain new file mode 100644 index 000000000..611926d49 Binary files /dev/null and b/public/terrain/19/858597/353813.terrain differ diff --git a/public/terrain/19/858597/353814.terrain b/public/terrain/19/858597/353814.terrain new file mode 100644 index 000000000..bed0f734e Binary files /dev/null and b/public/terrain/19/858597/353814.terrain differ diff --git a/public/terrain/19/858597/353815.terrain b/public/terrain/19/858597/353815.terrain new file mode 100644 index 000000000..b77a17ee7 Binary files /dev/null and b/public/terrain/19/858597/353815.terrain differ diff --git a/public/terrain/19/858597/353816.terrain b/public/terrain/19/858597/353816.terrain new file mode 100644 index 000000000..fc611f796 Binary files /dev/null and b/public/terrain/19/858597/353816.terrain differ diff --git a/public/terrain/19/858597/353817.terrain b/public/terrain/19/858597/353817.terrain new file mode 100644 index 000000000..7b6284191 Binary files /dev/null and b/public/terrain/19/858597/353817.terrain differ diff --git a/public/terrain/19/858597/353818.terrain b/public/terrain/19/858597/353818.terrain new file mode 100644 index 000000000..5139d0d43 Binary files /dev/null and b/public/terrain/19/858597/353818.terrain differ diff --git a/public/terrain/19/858597/353819.terrain b/public/terrain/19/858597/353819.terrain new file mode 100644 index 000000000..9a86ccda9 Binary files /dev/null and b/public/terrain/19/858597/353819.terrain differ diff --git a/public/terrain/19/858597/353820.terrain b/public/terrain/19/858597/353820.terrain new file mode 100644 index 000000000..814ac76f8 Binary files /dev/null and b/public/terrain/19/858597/353820.terrain differ diff --git a/public/terrain/19/858597/353821.terrain b/public/terrain/19/858597/353821.terrain new file mode 100644 index 000000000..8c6c8d7f3 Binary files /dev/null and b/public/terrain/19/858597/353821.terrain differ diff --git a/public/terrain/19/858597/353822.terrain b/public/terrain/19/858597/353822.terrain new file mode 100644 index 000000000..4fda30fe4 Binary files /dev/null and b/public/terrain/19/858597/353822.terrain differ diff --git a/public/terrain/19/858597/353823.terrain b/public/terrain/19/858597/353823.terrain new file mode 100644 index 000000000..2317419b7 Binary files /dev/null and b/public/terrain/19/858597/353823.terrain differ diff --git a/public/terrain/19/858597/353824.terrain b/public/terrain/19/858597/353824.terrain new file mode 100644 index 000000000..2c291e21e Binary files /dev/null and b/public/terrain/19/858597/353824.terrain differ diff --git a/public/terrain/19/858597/353825.terrain b/public/terrain/19/858597/353825.terrain new file mode 100644 index 000000000..08917b2b3 Binary files /dev/null and b/public/terrain/19/858597/353825.terrain differ diff --git a/public/terrain/19/858597/353826.terrain b/public/terrain/19/858597/353826.terrain new file mode 100644 index 000000000..53a30726b Binary files /dev/null and b/public/terrain/19/858597/353826.terrain differ diff --git a/public/terrain/19/858597/353827.terrain b/public/terrain/19/858597/353827.terrain new file mode 100644 index 000000000..5802ad866 Binary files /dev/null and b/public/terrain/19/858597/353827.terrain differ diff --git a/public/terrain/19/858597/353828.terrain b/public/terrain/19/858597/353828.terrain new file mode 100644 index 000000000..b1070a6d8 Binary files /dev/null and b/public/terrain/19/858597/353828.terrain differ diff --git a/public/terrain/19/858597/353829.terrain b/public/terrain/19/858597/353829.terrain new file mode 100644 index 000000000..2ba177775 Binary files /dev/null and b/public/terrain/19/858597/353829.terrain differ diff --git a/public/terrain/19/858597/353830.terrain b/public/terrain/19/858597/353830.terrain new file mode 100644 index 000000000..28fc4c8b7 Binary files /dev/null and b/public/terrain/19/858597/353830.terrain differ diff --git a/public/terrain/19/858597/353831.terrain b/public/terrain/19/858597/353831.terrain new file mode 100644 index 000000000..e1387f2dc Binary files /dev/null and b/public/terrain/19/858597/353831.terrain differ diff --git a/public/terrain/19/858597/353832.terrain b/public/terrain/19/858597/353832.terrain new file mode 100644 index 000000000..4f080392d Binary files /dev/null and b/public/terrain/19/858597/353832.terrain differ diff --git a/public/terrain/19/858597/353833.terrain b/public/terrain/19/858597/353833.terrain new file mode 100644 index 000000000..7e87f1e7a Binary files /dev/null and b/public/terrain/19/858597/353833.terrain differ diff --git a/public/terrain/19/858597/353834.terrain b/public/terrain/19/858597/353834.terrain new file mode 100644 index 000000000..ae132579f Binary files /dev/null and b/public/terrain/19/858597/353834.terrain differ diff --git a/public/terrain/19/858597/353835.terrain b/public/terrain/19/858597/353835.terrain new file mode 100644 index 000000000..33a55fd5b Binary files /dev/null and b/public/terrain/19/858597/353835.terrain differ diff --git a/public/terrain/19/858597/353836.terrain b/public/terrain/19/858597/353836.terrain new file mode 100644 index 000000000..2b43f9cfd Binary files /dev/null and b/public/terrain/19/858597/353836.terrain differ diff --git a/public/terrain/19/858597/353837.terrain b/public/terrain/19/858597/353837.terrain new file mode 100644 index 000000000..c6e7a8296 Binary files /dev/null and b/public/terrain/19/858597/353837.terrain differ diff --git a/public/terrain/19/858597/353838.terrain b/public/terrain/19/858597/353838.terrain new file mode 100644 index 000000000..3cae6e2b3 Binary files /dev/null and b/public/terrain/19/858597/353838.terrain differ diff --git a/public/terrain/19/858597/353839.terrain b/public/terrain/19/858597/353839.terrain new file mode 100644 index 000000000..d04fadb4c Binary files /dev/null and b/public/terrain/19/858597/353839.terrain differ diff --git a/public/terrain/19/858597/353840.terrain b/public/terrain/19/858597/353840.terrain new file mode 100644 index 000000000..7212d8b39 Binary files /dev/null and b/public/terrain/19/858597/353840.terrain differ diff --git a/public/terrain/19/858597/353841.terrain b/public/terrain/19/858597/353841.terrain new file mode 100644 index 000000000..d8af90f52 Binary files /dev/null and b/public/terrain/19/858597/353841.terrain differ diff --git a/public/terrain/19/858597/353842.terrain b/public/terrain/19/858597/353842.terrain new file mode 100644 index 000000000..8077ef149 Binary files /dev/null and b/public/terrain/19/858597/353842.terrain differ diff --git a/public/terrain/19/858597/353843.terrain b/public/terrain/19/858597/353843.terrain new file mode 100644 index 000000000..e3507b5d8 Binary files /dev/null and b/public/terrain/19/858597/353843.terrain differ diff --git a/public/terrain/19/858597/353844.terrain b/public/terrain/19/858597/353844.terrain new file mode 100644 index 000000000..4aba5f634 Binary files /dev/null and b/public/terrain/19/858597/353844.terrain differ diff --git a/public/terrain/19/858597/353845.terrain b/public/terrain/19/858597/353845.terrain new file mode 100644 index 000000000..490c882e0 Binary files /dev/null and b/public/terrain/19/858597/353845.terrain differ diff --git a/public/terrain/19/858597/353846.terrain b/public/terrain/19/858597/353846.terrain new file mode 100644 index 000000000..10a9eceda Binary files /dev/null and b/public/terrain/19/858597/353846.terrain differ diff --git a/public/terrain/19/858597/353847.terrain b/public/terrain/19/858597/353847.terrain new file mode 100644 index 000000000..9771a0d84 Binary files /dev/null and b/public/terrain/19/858597/353847.terrain differ diff --git a/public/terrain/19/858597/353848.terrain b/public/terrain/19/858597/353848.terrain new file mode 100644 index 000000000..47ee18046 Binary files /dev/null and b/public/terrain/19/858597/353848.terrain differ diff --git a/public/terrain/19/858597/353849.terrain b/public/terrain/19/858597/353849.terrain new file mode 100644 index 000000000..cefdff63a Binary files /dev/null and b/public/terrain/19/858597/353849.terrain differ diff --git a/public/terrain/19/858597/353850.terrain b/public/terrain/19/858597/353850.terrain new file mode 100644 index 000000000..fb608f3a7 Binary files /dev/null and b/public/terrain/19/858597/353850.terrain differ diff --git a/public/terrain/19/858597/353851.terrain b/public/terrain/19/858597/353851.terrain new file mode 100644 index 000000000..eb6cef2c0 Binary files /dev/null and b/public/terrain/19/858597/353851.terrain differ diff --git a/public/terrain/19/858597/353852.terrain b/public/terrain/19/858597/353852.terrain new file mode 100644 index 000000000..5b8fd7555 Binary files /dev/null and b/public/terrain/19/858597/353852.terrain differ diff --git a/public/terrain/19/858597/353853.terrain b/public/terrain/19/858597/353853.terrain new file mode 100644 index 000000000..20e1dfe21 Binary files /dev/null and b/public/terrain/19/858597/353853.terrain differ diff --git a/public/terrain/19/858597/353854.terrain b/public/terrain/19/858597/353854.terrain new file mode 100644 index 000000000..b1517dc21 Binary files /dev/null and b/public/terrain/19/858597/353854.terrain differ diff --git a/public/terrain/19/858597/353855.terrain b/public/terrain/19/858597/353855.terrain new file mode 100644 index 000000000..242fa46cf Binary files /dev/null and b/public/terrain/19/858597/353855.terrain differ diff --git a/public/terrain/19/858597/353856.terrain b/public/terrain/19/858597/353856.terrain new file mode 100644 index 000000000..3f5a23bfb Binary files /dev/null and b/public/terrain/19/858597/353856.terrain differ diff --git a/public/terrain/19/858597/353857.terrain b/public/terrain/19/858597/353857.terrain new file mode 100644 index 000000000..2aa839433 Binary files /dev/null and b/public/terrain/19/858597/353857.terrain differ diff --git a/public/terrain/19/858597/353858.terrain b/public/terrain/19/858597/353858.terrain new file mode 100644 index 000000000..cccda7890 Binary files /dev/null and b/public/terrain/19/858597/353858.terrain differ diff --git a/public/terrain/19/858597/353859.terrain b/public/terrain/19/858597/353859.terrain new file mode 100644 index 000000000..3323707e8 Binary files /dev/null and b/public/terrain/19/858597/353859.terrain differ diff --git a/public/terrain/19/858597/353860.terrain b/public/terrain/19/858597/353860.terrain new file mode 100644 index 000000000..79797ede9 Binary files /dev/null and b/public/terrain/19/858597/353860.terrain differ diff --git a/public/terrain/19/858597/353861.terrain b/public/terrain/19/858597/353861.terrain new file mode 100644 index 000000000..69bc32e61 Binary files /dev/null and b/public/terrain/19/858597/353861.terrain differ diff --git a/public/terrain/19/858597/353862.terrain b/public/terrain/19/858597/353862.terrain new file mode 100644 index 000000000..4ff805084 Binary files /dev/null and b/public/terrain/19/858597/353862.terrain differ diff --git a/public/terrain/19/858597/353863.terrain b/public/terrain/19/858597/353863.terrain new file mode 100644 index 000000000..fa6a3cbd2 Binary files /dev/null and b/public/terrain/19/858597/353863.terrain differ diff --git a/public/terrain/19/858597/353864.terrain b/public/terrain/19/858597/353864.terrain new file mode 100644 index 000000000..8c542c39c Binary files /dev/null and b/public/terrain/19/858597/353864.terrain differ diff --git a/public/terrain/19/858597/353865.terrain b/public/terrain/19/858597/353865.terrain new file mode 100644 index 000000000..deb7078c5 Binary files /dev/null and b/public/terrain/19/858597/353865.terrain differ diff --git a/public/terrain/19/858597/353866.terrain b/public/terrain/19/858597/353866.terrain new file mode 100644 index 000000000..735355adf Binary files /dev/null and b/public/terrain/19/858597/353866.terrain differ diff --git a/public/terrain/19/858597/353867.terrain b/public/terrain/19/858597/353867.terrain new file mode 100644 index 000000000..5b81dbe90 Binary files /dev/null and b/public/terrain/19/858597/353867.terrain differ diff --git a/public/terrain/19/858597/353868.terrain b/public/terrain/19/858597/353868.terrain new file mode 100644 index 000000000..0766c1384 Binary files /dev/null and b/public/terrain/19/858597/353868.terrain differ diff --git a/public/terrain/19/858597/353869.terrain b/public/terrain/19/858597/353869.terrain new file mode 100644 index 000000000..4804f6efe Binary files /dev/null and b/public/terrain/19/858597/353869.terrain differ diff --git a/public/terrain/19/858597/353870.terrain b/public/terrain/19/858597/353870.terrain new file mode 100644 index 000000000..bdb03d263 Binary files /dev/null and b/public/terrain/19/858597/353870.terrain differ diff --git a/public/terrain/19/858597/353871.terrain b/public/terrain/19/858597/353871.terrain new file mode 100644 index 000000000..6f927a803 Binary files /dev/null and b/public/terrain/19/858597/353871.terrain differ diff --git a/public/terrain/19/858597/353872.terrain b/public/terrain/19/858597/353872.terrain new file mode 100644 index 000000000..b6d901552 Binary files /dev/null and b/public/terrain/19/858597/353872.terrain differ diff --git a/public/terrain/19/858597/353873.terrain b/public/terrain/19/858597/353873.terrain new file mode 100644 index 000000000..d6785815a Binary files /dev/null and b/public/terrain/19/858597/353873.terrain differ diff --git a/public/terrain/19/858597/353874.terrain b/public/terrain/19/858597/353874.terrain new file mode 100644 index 000000000..a695e229e Binary files /dev/null and b/public/terrain/19/858597/353874.terrain differ diff --git a/public/terrain/19/858597/353875.terrain b/public/terrain/19/858597/353875.terrain new file mode 100644 index 000000000..a17fe1c7c Binary files /dev/null and b/public/terrain/19/858597/353875.terrain differ diff --git a/public/terrain/19/858597/353876.terrain b/public/terrain/19/858597/353876.terrain new file mode 100644 index 000000000..3473b443c Binary files /dev/null and b/public/terrain/19/858597/353876.terrain differ diff --git a/public/terrain/19/858597/353877.terrain b/public/terrain/19/858597/353877.terrain new file mode 100644 index 000000000..ad0dfbbb5 Binary files /dev/null and b/public/terrain/19/858597/353877.terrain differ diff --git a/public/terrain/19/858597/353878.terrain b/public/terrain/19/858597/353878.terrain new file mode 100644 index 000000000..1f8009d4d Binary files /dev/null and b/public/terrain/19/858597/353878.terrain differ diff --git a/public/terrain/19/858597/353879.terrain b/public/terrain/19/858597/353879.terrain new file mode 100644 index 000000000..03450c8f3 Binary files /dev/null and b/public/terrain/19/858597/353879.terrain differ diff --git a/public/terrain/19/858597/353880.terrain b/public/terrain/19/858597/353880.terrain new file mode 100644 index 000000000..013e4d30a Binary files /dev/null and b/public/terrain/19/858597/353880.terrain differ diff --git a/public/terrain/19/858597/353881.terrain b/public/terrain/19/858597/353881.terrain new file mode 100644 index 000000000..4042094f8 Binary files /dev/null and b/public/terrain/19/858597/353881.terrain differ diff --git a/public/terrain/19/858597/353882.terrain b/public/terrain/19/858597/353882.terrain new file mode 100644 index 000000000..238422867 Binary files /dev/null and b/public/terrain/19/858597/353882.terrain differ diff --git a/public/terrain/19/858597/353883.terrain b/public/terrain/19/858597/353883.terrain new file mode 100644 index 000000000..f96cb4ce8 Binary files /dev/null and b/public/terrain/19/858597/353883.terrain differ diff --git a/public/terrain/19/858597/353884.terrain b/public/terrain/19/858597/353884.terrain new file mode 100644 index 000000000..6688bee0f Binary files /dev/null and b/public/terrain/19/858597/353884.terrain differ diff --git a/public/terrain/19/858597/353885.terrain b/public/terrain/19/858597/353885.terrain new file mode 100644 index 000000000..74b1abef9 Binary files /dev/null and b/public/terrain/19/858597/353885.terrain differ diff --git a/public/terrain/19/858597/353886.terrain b/public/terrain/19/858597/353886.terrain new file mode 100644 index 000000000..78ab19fd5 Binary files /dev/null and b/public/terrain/19/858597/353886.terrain differ diff --git a/public/terrain/19/858597/353887.terrain b/public/terrain/19/858597/353887.terrain new file mode 100644 index 000000000..18530338c Binary files /dev/null and b/public/terrain/19/858597/353887.terrain differ diff --git a/public/terrain/19/858597/353888.terrain b/public/terrain/19/858597/353888.terrain new file mode 100644 index 000000000..5fa20b010 Binary files /dev/null and b/public/terrain/19/858597/353888.terrain differ diff --git a/public/terrain/19/858597/353889.terrain b/public/terrain/19/858597/353889.terrain new file mode 100644 index 000000000..6a7277761 Binary files /dev/null and b/public/terrain/19/858597/353889.terrain differ diff --git a/public/terrain/19/858597/353890.terrain b/public/terrain/19/858597/353890.terrain new file mode 100644 index 000000000..8fca71322 Binary files /dev/null and b/public/terrain/19/858597/353890.terrain differ diff --git a/public/terrain/19/858597/353891.terrain b/public/terrain/19/858597/353891.terrain new file mode 100644 index 000000000..3090f8f04 Binary files /dev/null and b/public/terrain/19/858597/353891.terrain differ diff --git a/public/terrain/19/858597/353892.terrain b/public/terrain/19/858597/353892.terrain new file mode 100644 index 000000000..c2926540d Binary files /dev/null and b/public/terrain/19/858597/353892.terrain differ diff --git a/public/terrain/19/858597/353893.terrain b/public/terrain/19/858597/353893.terrain new file mode 100644 index 000000000..95edc08b4 Binary files /dev/null and b/public/terrain/19/858597/353893.terrain differ diff --git a/public/terrain/19/858597/353894.terrain b/public/terrain/19/858597/353894.terrain new file mode 100644 index 000000000..e2f80b36e Binary files /dev/null and b/public/terrain/19/858597/353894.terrain differ diff --git a/public/terrain/19/858597/353895.terrain b/public/terrain/19/858597/353895.terrain new file mode 100644 index 000000000..0c10d4254 Binary files /dev/null and b/public/terrain/19/858597/353895.terrain differ diff --git a/public/terrain/19/858597/353896.terrain b/public/terrain/19/858597/353896.terrain new file mode 100644 index 000000000..0ec642937 Binary files /dev/null and b/public/terrain/19/858597/353896.terrain differ diff --git a/public/terrain/19/858597/353897.terrain b/public/terrain/19/858597/353897.terrain new file mode 100644 index 000000000..f0f2e5f46 Binary files /dev/null and b/public/terrain/19/858597/353897.terrain differ diff --git a/public/terrain/19/858597/353898.terrain b/public/terrain/19/858597/353898.terrain new file mode 100644 index 000000000..a86b29410 Binary files /dev/null and b/public/terrain/19/858597/353898.terrain differ diff --git a/public/terrain/19/858597/353899.terrain b/public/terrain/19/858597/353899.terrain new file mode 100644 index 000000000..2c8f024de Binary files /dev/null and b/public/terrain/19/858597/353899.terrain differ diff --git a/public/terrain/19/858597/353900.terrain b/public/terrain/19/858597/353900.terrain new file mode 100644 index 000000000..a29645d0b Binary files /dev/null and b/public/terrain/19/858597/353900.terrain differ diff --git a/public/terrain/19/858597/353901.terrain b/public/terrain/19/858597/353901.terrain new file mode 100644 index 000000000..e1a6e65f8 Binary files /dev/null and b/public/terrain/19/858597/353901.terrain differ diff --git a/public/terrain/19/858597/353902.terrain b/public/terrain/19/858597/353902.terrain new file mode 100644 index 000000000..28ee6fd6f Binary files /dev/null and b/public/terrain/19/858597/353902.terrain differ diff --git a/public/terrain/19/858597/353903.terrain b/public/terrain/19/858597/353903.terrain new file mode 100644 index 000000000..810f336cc Binary files /dev/null and b/public/terrain/19/858597/353903.terrain differ diff --git a/public/terrain/19/858597/353904.terrain b/public/terrain/19/858597/353904.terrain new file mode 100644 index 000000000..cbe45ea71 Binary files /dev/null and b/public/terrain/19/858597/353904.terrain differ diff --git a/public/terrain/19/858597/353905.terrain b/public/terrain/19/858597/353905.terrain new file mode 100644 index 000000000..6fc756bae Binary files /dev/null and b/public/terrain/19/858597/353905.terrain differ diff --git a/public/terrain/19/858597/353906.terrain b/public/terrain/19/858597/353906.terrain new file mode 100644 index 000000000..419e4e741 Binary files /dev/null and b/public/terrain/19/858597/353906.terrain differ diff --git a/public/terrain/19/858597/353907.terrain b/public/terrain/19/858597/353907.terrain new file mode 100644 index 000000000..65fc510d9 Binary files /dev/null and b/public/terrain/19/858597/353907.terrain differ diff --git a/public/terrain/19/858597/353908.terrain b/public/terrain/19/858597/353908.terrain new file mode 100644 index 000000000..74240f47a Binary files /dev/null and b/public/terrain/19/858597/353908.terrain differ diff --git a/public/terrain/19/858597/353909.terrain b/public/terrain/19/858597/353909.terrain new file mode 100644 index 000000000..0718d9bd5 Binary files /dev/null and b/public/terrain/19/858597/353909.terrain differ diff --git a/public/terrain/19/858597/353910.terrain b/public/terrain/19/858597/353910.terrain new file mode 100644 index 000000000..06dfd3f8c Binary files /dev/null and b/public/terrain/19/858597/353910.terrain differ diff --git a/public/terrain/19/858597/353911.terrain b/public/terrain/19/858597/353911.terrain new file mode 100644 index 000000000..32890e1eb Binary files /dev/null and b/public/terrain/19/858597/353911.terrain differ diff --git a/public/terrain/19/858597/353912.terrain b/public/terrain/19/858597/353912.terrain new file mode 100644 index 000000000..bd8ccf22a Binary files /dev/null and b/public/terrain/19/858597/353912.terrain differ diff --git a/public/terrain/19/858597/353913.terrain b/public/terrain/19/858597/353913.terrain new file mode 100644 index 000000000..fa00c984a Binary files /dev/null and b/public/terrain/19/858597/353913.terrain differ diff --git a/public/terrain/19/858597/353914.terrain b/public/terrain/19/858597/353914.terrain new file mode 100644 index 000000000..4a445275f Binary files /dev/null and b/public/terrain/19/858597/353914.terrain differ diff --git a/public/terrain/19/858597/353915.terrain b/public/terrain/19/858597/353915.terrain new file mode 100644 index 000000000..46d511be0 Binary files /dev/null and b/public/terrain/19/858597/353915.terrain differ diff --git a/public/terrain/19/858597/353916.terrain b/public/terrain/19/858597/353916.terrain new file mode 100644 index 000000000..e73a5ea03 Binary files /dev/null and b/public/terrain/19/858597/353916.terrain differ diff --git a/public/terrain/19/858597/353917.terrain b/public/terrain/19/858597/353917.terrain new file mode 100644 index 000000000..c8d822868 Binary files /dev/null and b/public/terrain/19/858597/353917.terrain differ diff --git a/public/terrain/19/858597/353918.terrain b/public/terrain/19/858597/353918.terrain new file mode 100644 index 000000000..33e2933be Binary files /dev/null and b/public/terrain/19/858597/353918.terrain differ diff --git a/public/terrain/19/858597/353919.terrain b/public/terrain/19/858597/353919.terrain new file mode 100644 index 000000000..870f6ebc8 Binary files /dev/null and b/public/terrain/19/858597/353919.terrain differ diff --git a/public/terrain/19/858597/353920.terrain b/public/terrain/19/858597/353920.terrain new file mode 100644 index 000000000..6d4ff51d8 Binary files /dev/null and b/public/terrain/19/858597/353920.terrain differ diff --git a/public/terrain/19/858597/353921.terrain b/public/terrain/19/858597/353921.terrain new file mode 100644 index 000000000..66ddceea4 Binary files /dev/null and b/public/terrain/19/858597/353921.terrain differ diff --git a/public/terrain/19/858597/353922.terrain b/public/terrain/19/858597/353922.terrain new file mode 100644 index 000000000..dc46c6cc9 Binary files /dev/null and b/public/terrain/19/858597/353922.terrain differ diff --git a/public/terrain/19/858597/353923.terrain b/public/terrain/19/858597/353923.terrain new file mode 100644 index 000000000..1df4f7e32 Binary files /dev/null and b/public/terrain/19/858597/353923.terrain differ diff --git a/public/terrain/19/858597/353924.terrain b/public/terrain/19/858597/353924.terrain new file mode 100644 index 000000000..9bbef11d2 Binary files /dev/null and b/public/terrain/19/858597/353924.terrain differ diff --git a/public/terrain/19/858597/353925.terrain b/public/terrain/19/858597/353925.terrain new file mode 100644 index 000000000..e028e0167 Binary files /dev/null and b/public/terrain/19/858597/353925.terrain differ diff --git a/public/terrain/19/858597/353926.terrain b/public/terrain/19/858597/353926.terrain new file mode 100644 index 000000000..2b6430230 Binary files /dev/null and b/public/terrain/19/858597/353926.terrain differ diff --git a/public/terrain/19/858597/353927.terrain b/public/terrain/19/858597/353927.terrain new file mode 100644 index 000000000..12af8214e Binary files /dev/null and b/public/terrain/19/858597/353927.terrain differ diff --git a/public/terrain/19/858597/353928.terrain b/public/terrain/19/858597/353928.terrain new file mode 100644 index 000000000..5aa3e0198 Binary files /dev/null and b/public/terrain/19/858597/353928.terrain differ diff --git a/public/terrain/19/858597/353929.terrain b/public/terrain/19/858597/353929.terrain new file mode 100644 index 000000000..e879dc8dc Binary files /dev/null and b/public/terrain/19/858597/353929.terrain differ diff --git a/public/terrain/19/858597/353930.terrain b/public/terrain/19/858597/353930.terrain new file mode 100644 index 000000000..83e0457ea Binary files /dev/null and b/public/terrain/19/858597/353930.terrain differ diff --git a/public/terrain/19/858597/353931.terrain b/public/terrain/19/858597/353931.terrain new file mode 100644 index 000000000..6c409cf80 Binary files /dev/null and b/public/terrain/19/858597/353931.terrain differ diff --git a/public/terrain/19/858597/353932.terrain b/public/terrain/19/858597/353932.terrain new file mode 100644 index 000000000..b9d414fe0 Binary files /dev/null and b/public/terrain/19/858597/353932.terrain differ diff --git a/public/terrain/19/858597/353933.terrain b/public/terrain/19/858597/353933.terrain new file mode 100644 index 000000000..e1c55fa5b Binary files /dev/null and b/public/terrain/19/858597/353933.terrain differ diff --git a/public/terrain/19/858597/353934.terrain b/public/terrain/19/858597/353934.terrain new file mode 100644 index 000000000..7b4cd2562 Binary files /dev/null and b/public/terrain/19/858597/353934.terrain differ diff --git a/public/terrain/19/858597/353935.terrain b/public/terrain/19/858597/353935.terrain new file mode 100644 index 000000000..368fb0c89 Binary files /dev/null and b/public/terrain/19/858597/353935.terrain differ diff --git a/public/terrain/19/858597/353936.terrain b/public/terrain/19/858597/353936.terrain new file mode 100644 index 000000000..ca7f5a122 Binary files /dev/null and b/public/terrain/19/858597/353936.terrain differ diff --git a/public/terrain/19/858597/353937.terrain b/public/terrain/19/858597/353937.terrain new file mode 100644 index 000000000..284533036 Binary files /dev/null and b/public/terrain/19/858597/353937.terrain differ diff --git a/public/terrain/19/858597/353938.terrain b/public/terrain/19/858597/353938.terrain new file mode 100644 index 000000000..e8f76bff5 Binary files /dev/null and b/public/terrain/19/858597/353938.terrain differ diff --git a/public/terrain/19/858597/353939.terrain b/public/terrain/19/858597/353939.terrain new file mode 100644 index 000000000..bfefbf5c8 Binary files /dev/null and b/public/terrain/19/858597/353939.terrain differ diff --git a/public/terrain/19/858597/353940.terrain b/public/terrain/19/858597/353940.terrain new file mode 100644 index 000000000..c55d8c0b6 Binary files /dev/null and b/public/terrain/19/858597/353940.terrain differ diff --git a/public/terrain/19/858597/353941.terrain b/public/terrain/19/858597/353941.terrain new file mode 100644 index 000000000..22d71b97b Binary files /dev/null and b/public/terrain/19/858597/353941.terrain differ diff --git a/public/terrain/19/858597/353942.terrain b/public/terrain/19/858597/353942.terrain new file mode 100644 index 000000000..31e9c956d Binary files /dev/null and b/public/terrain/19/858597/353942.terrain differ diff --git a/public/terrain/19/858597/353943.terrain b/public/terrain/19/858597/353943.terrain new file mode 100644 index 000000000..15c8f7454 Binary files /dev/null and b/public/terrain/19/858597/353943.terrain differ diff --git a/public/terrain/19/858597/353944.terrain b/public/terrain/19/858597/353944.terrain new file mode 100644 index 000000000..c874eeea2 Binary files /dev/null and b/public/terrain/19/858597/353944.terrain differ diff --git a/public/terrain/19/858597/353945.terrain b/public/terrain/19/858597/353945.terrain new file mode 100644 index 000000000..e329e1beb Binary files /dev/null and b/public/terrain/19/858597/353945.terrain differ diff --git a/public/terrain/19/858597/353946.terrain b/public/terrain/19/858597/353946.terrain new file mode 100644 index 000000000..de408c7c0 Binary files /dev/null and b/public/terrain/19/858597/353946.terrain differ diff --git a/public/terrain/19/858597/353947.terrain b/public/terrain/19/858597/353947.terrain new file mode 100644 index 000000000..80a32c511 Binary files /dev/null and b/public/terrain/19/858597/353947.terrain differ diff --git a/public/terrain/19/858597/353948.terrain b/public/terrain/19/858597/353948.terrain new file mode 100644 index 000000000..2cf7b6eb6 Binary files /dev/null and b/public/terrain/19/858597/353948.terrain differ diff --git a/public/terrain/19/858597/353949.terrain b/public/terrain/19/858597/353949.terrain new file mode 100644 index 000000000..93da980ac Binary files /dev/null and b/public/terrain/19/858597/353949.terrain differ diff --git a/public/terrain/19/858597/353950.terrain b/public/terrain/19/858597/353950.terrain new file mode 100644 index 000000000..1f39daecc Binary files /dev/null and b/public/terrain/19/858597/353950.terrain differ diff --git a/public/terrain/19/858597/353951.terrain b/public/terrain/19/858597/353951.terrain new file mode 100644 index 000000000..2d1b7b19f Binary files /dev/null and b/public/terrain/19/858597/353951.terrain differ diff --git a/public/terrain/19/858597/353952.terrain b/public/terrain/19/858597/353952.terrain new file mode 100644 index 000000000..92f4a09fb Binary files /dev/null and b/public/terrain/19/858597/353952.terrain differ diff --git a/public/terrain/19/858597/353953.terrain b/public/terrain/19/858597/353953.terrain new file mode 100644 index 000000000..d2f49bee7 Binary files /dev/null and b/public/terrain/19/858597/353953.terrain differ diff --git a/public/terrain/19/858597/353954.terrain b/public/terrain/19/858597/353954.terrain new file mode 100644 index 000000000..9aef753d1 Binary files /dev/null and b/public/terrain/19/858597/353954.terrain differ diff --git a/public/terrain/19/858597/353955.terrain b/public/terrain/19/858597/353955.terrain new file mode 100644 index 000000000..ea9077c25 Binary files /dev/null and b/public/terrain/19/858597/353955.terrain differ diff --git a/public/terrain/19/858597/353956.terrain b/public/terrain/19/858597/353956.terrain new file mode 100644 index 000000000..c89d473f6 Binary files /dev/null and b/public/terrain/19/858597/353956.terrain differ diff --git a/public/terrain/19/858597/353957.terrain b/public/terrain/19/858597/353957.terrain new file mode 100644 index 000000000..17e5a6493 Binary files /dev/null and b/public/terrain/19/858597/353957.terrain differ diff --git a/public/terrain/19/858597/353958.terrain b/public/terrain/19/858597/353958.terrain new file mode 100644 index 000000000..2db37e31e Binary files /dev/null and b/public/terrain/19/858597/353958.terrain differ diff --git a/public/terrain/19/858597/353959.terrain b/public/terrain/19/858597/353959.terrain new file mode 100644 index 000000000..f5418c941 Binary files /dev/null and b/public/terrain/19/858597/353959.terrain differ diff --git a/public/terrain/19/858597/353960.terrain b/public/terrain/19/858597/353960.terrain new file mode 100644 index 000000000..2c86cb516 Binary files /dev/null and b/public/terrain/19/858597/353960.terrain differ diff --git a/public/terrain/19/858597/353961.terrain b/public/terrain/19/858597/353961.terrain new file mode 100644 index 000000000..4f2c721db Binary files /dev/null and b/public/terrain/19/858597/353961.terrain differ diff --git a/public/terrain/19/858597/353962.terrain b/public/terrain/19/858597/353962.terrain new file mode 100644 index 000000000..7613d7341 Binary files /dev/null and b/public/terrain/19/858597/353962.terrain differ diff --git a/public/terrain/19/858597/353963.terrain b/public/terrain/19/858597/353963.terrain new file mode 100644 index 000000000..c212fb317 Binary files /dev/null and b/public/terrain/19/858597/353963.terrain differ diff --git a/public/terrain/19/858597/353964.terrain b/public/terrain/19/858597/353964.terrain new file mode 100644 index 000000000..b627773c1 Binary files /dev/null and b/public/terrain/19/858597/353964.terrain differ diff --git a/public/terrain/19/858597/353965.terrain b/public/terrain/19/858597/353965.terrain new file mode 100644 index 000000000..9d7f9e5b0 Binary files /dev/null and b/public/terrain/19/858597/353965.terrain differ diff --git a/public/terrain/19/858597/353966.terrain b/public/terrain/19/858597/353966.terrain new file mode 100644 index 000000000..5a69427ff Binary files /dev/null and b/public/terrain/19/858597/353966.terrain differ diff --git a/public/terrain/19/858597/353967.terrain b/public/terrain/19/858597/353967.terrain new file mode 100644 index 000000000..6884b13ea Binary files /dev/null and b/public/terrain/19/858597/353967.terrain differ diff --git a/public/terrain/19/858597/353968.terrain b/public/terrain/19/858597/353968.terrain new file mode 100644 index 000000000..41bb3dd9f Binary files /dev/null and b/public/terrain/19/858597/353968.terrain differ diff --git a/public/terrain/19/858597/353969.terrain b/public/terrain/19/858597/353969.terrain new file mode 100644 index 000000000..1488b4a70 Binary files /dev/null and b/public/terrain/19/858597/353969.terrain differ diff --git a/public/terrain/19/858597/353970.terrain b/public/terrain/19/858597/353970.terrain new file mode 100644 index 000000000..e8b4ad3c1 Binary files /dev/null and b/public/terrain/19/858597/353970.terrain differ diff --git a/public/terrain/19/858597/353971.terrain b/public/terrain/19/858597/353971.terrain new file mode 100644 index 000000000..c1676ede4 Binary files /dev/null and b/public/terrain/19/858597/353971.terrain differ diff --git a/public/terrain/19/858597/353972.terrain b/public/terrain/19/858597/353972.terrain new file mode 100644 index 000000000..bc6614632 Binary files /dev/null and b/public/terrain/19/858597/353972.terrain differ diff --git a/public/terrain/19/858597/353973.terrain b/public/terrain/19/858597/353973.terrain new file mode 100644 index 000000000..8c0d9cbb8 Binary files /dev/null and b/public/terrain/19/858597/353973.terrain differ diff --git a/public/terrain/19/858597/353974.terrain b/public/terrain/19/858597/353974.terrain new file mode 100644 index 000000000..a353b19af Binary files /dev/null and b/public/terrain/19/858597/353974.terrain differ diff --git a/public/terrain/19/858597/353975.terrain b/public/terrain/19/858597/353975.terrain new file mode 100644 index 000000000..33af2f46a Binary files /dev/null and b/public/terrain/19/858597/353975.terrain differ diff --git a/public/terrain/19/858597/353976.terrain b/public/terrain/19/858597/353976.terrain new file mode 100644 index 000000000..654a278a4 Binary files /dev/null and b/public/terrain/19/858597/353976.terrain differ diff --git a/public/terrain/19/858597/353977.terrain b/public/terrain/19/858597/353977.terrain new file mode 100644 index 000000000..1737ce67b Binary files /dev/null and b/public/terrain/19/858597/353977.terrain differ diff --git a/public/terrain/19/858597/353978.terrain b/public/terrain/19/858597/353978.terrain new file mode 100644 index 000000000..dcd42edce Binary files /dev/null and b/public/terrain/19/858597/353978.terrain differ diff --git a/public/terrain/19/858597/353979.terrain b/public/terrain/19/858597/353979.terrain new file mode 100644 index 000000000..c639ee60b Binary files /dev/null and b/public/terrain/19/858597/353979.terrain differ diff --git a/public/terrain/19/858597/353980.terrain b/public/terrain/19/858597/353980.terrain new file mode 100644 index 000000000..e03239e07 Binary files /dev/null and b/public/terrain/19/858597/353980.terrain differ diff --git a/public/terrain/19/858597/353981.terrain b/public/terrain/19/858597/353981.terrain new file mode 100644 index 000000000..3962c58b7 Binary files /dev/null and b/public/terrain/19/858597/353981.terrain differ diff --git a/public/terrain/19/858597/353982.terrain b/public/terrain/19/858597/353982.terrain new file mode 100644 index 000000000..9bd1dc6bc Binary files /dev/null and b/public/terrain/19/858597/353982.terrain differ diff --git a/public/terrain/19/858597/353983.terrain b/public/terrain/19/858597/353983.terrain new file mode 100644 index 000000000..4f60e2efa Binary files /dev/null and b/public/terrain/19/858597/353983.terrain differ diff --git a/public/terrain/19/858597/353984.terrain b/public/terrain/19/858597/353984.terrain new file mode 100644 index 000000000..e37818679 Binary files /dev/null and b/public/terrain/19/858597/353984.terrain differ diff --git a/public/terrain/19/858597/353985.terrain b/public/terrain/19/858597/353985.terrain new file mode 100644 index 000000000..29791e80d Binary files /dev/null and b/public/terrain/19/858597/353985.terrain differ diff --git a/public/terrain/19/858597/353986.terrain b/public/terrain/19/858597/353986.terrain new file mode 100644 index 000000000..9466b8ae2 Binary files /dev/null and b/public/terrain/19/858597/353986.terrain differ diff --git a/public/terrain/19/858597/353987.terrain b/public/terrain/19/858597/353987.terrain new file mode 100644 index 000000000..cde3e6c8a Binary files /dev/null and b/public/terrain/19/858597/353987.terrain differ diff --git a/public/terrain/19/858597/353988.terrain b/public/terrain/19/858597/353988.terrain new file mode 100644 index 000000000..a103116e0 Binary files /dev/null and b/public/terrain/19/858597/353988.terrain differ diff --git a/public/terrain/19/858597/353989.terrain b/public/terrain/19/858597/353989.terrain new file mode 100644 index 000000000..9379a0b11 Binary files /dev/null and b/public/terrain/19/858597/353989.terrain differ diff --git a/public/terrain/19/858597/353990.terrain b/public/terrain/19/858597/353990.terrain new file mode 100644 index 000000000..91fe56cf9 Binary files /dev/null and b/public/terrain/19/858597/353990.terrain differ diff --git a/public/terrain/19/858597/353991.terrain b/public/terrain/19/858597/353991.terrain new file mode 100644 index 000000000..8b6e97ade Binary files /dev/null and b/public/terrain/19/858597/353991.terrain differ diff --git a/public/terrain/19/858597/353992.terrain b/public/terrain/19/858597/353992.terrain new file mode 100644 index 000000000..96fdbb4af Binary files /dev/null and b/public/terrain/19/858597/353992.terrain differ diff --git a/public/terrain/19/858597/353993.terrain b/public/terrain/19/858597/353993.terrain new file mode 100644 index 000000000..cfdb1d698 Binary files /dev/null and b/public/terrain/19/858597/353993.terrain differ diff --git a/public/terrain/19/858597/353994.terrain b/public/terrain/19/858597/353994.terrain new file mode 100644 index 000000000..5dbe13a98 Binary files /dev/null and b/public/terrain/19/858597/353994.terrain differ diff --git a/public/terrain/19/858597/353995.terrain b/public/terrain/19/858597/353995.terrain new file mode 100644 index 000000000..0181c4ae0 Binary files /dev/null and b/public/terrain/19/858597/353995.terrain differ diff --git a/public/terrain/19/858597/353996.terrain b/public/terrain/19/858597/353996.terrain new file mode 100644 index 000000000..bd3b5cb14 Binary files /dev/null and b/public/terrain/19/858597/353996.terrain differ diff --git a/public/terrain/19/858597/353997.terrain b/public/terrain/19/858597/353997.terrain new file mode 100644 index 000000000..9de0ff9d3 Binary files /dev/null and b/public/terrain/19/858597/353997.terrain differ diff --git a/public/terrain/19/858597/353998.terrain b/public/terrain/19/858597/353998.terrain new file mode 100644 index 000000000..18e5a84db Binary files /dev/null and b/public/terrain/19/858597/353998.terrain differ diff --git a/public/terrain/19/858597/353999.terrain b/public/terrain/19/858597/353999.terrain new file mode 100644 index 000000000..c0167cec2 Binary files /dev/null and b/public/terrain/19/858597/353999.terrain differ diff --git a/public/terrain/19/858597/354000.terrain b/public/terrain/19/858597/354000.terrain new file mode 100644 index 000000000..6511235b8 Binary files /dev/null and b/public/terrain/19/858597/354000.terrain differ diff --git a/public/terrain/19/858597/354001.terrain b/public/terrain/19/858597/354001.terrain new file mode 100644 index 000000000..a2abbe89b Binary files /dev/null and b/public/terrain/19/858597/354001.terrain differ diff --git a/public/terrain/19/858597/354002.terrain b/public/terrain/19/858597/354002.terrain new file mode 100644 index 000000000..08180af44 Binary files /dev/null and b/public/terrain/19/858597/354002.terrain differ diff --git a/public/terrain/19/858597/354003.terrain b/public/terrain/19/858597/354003.terrain new file mode 100644 index 000000000..396044143 Binary files /dev/null and b/public/terrain/19/858597/354003.terrain differ diff --git a/public/terrain/19/858597/354004.terrain b/public/terrain/19/858597/354004.terrain new file mode 100644 index 000000000..10df0c98d Binary files /dev/null and b/public/terrain/19/858597/354004.terrain differ diff --git a/public/terrain/19/858597/354005.terrain b/public/terrain/19/858597/354005.terrain new file mode 100644 index 000000000..5a7f28cf3 Binary files /dev/null and b/public/terrain/19/858597/354005.terrain differ diff --git a/public/terrain/19/858597/354006.terrain b/public/terrain/19/858597/354006.terrain new file mode 100644 index 000000000..6bbd9c40d Binary files /dev/null and b/public/terrain/19/858597/354006.terrain differ diff --git a/public/terrain/19/858597/354007.terrain b/public/terrain/19/858597/354007.terrain new file mode 100644 index 000000000..dc14e62c6 Binary files /dev/null and b/public/terrain/19/858597/354007.terrain differ diff --git a/public/terrain/19/858597/354008.terrain b/public/terrain/19/858597/354008.terrain new file mode 100644 index 000000000..52613a5e9 Binary files /dev/null and b/public/terrain/19/858597/354008.terrain differ diff --git a/public/terrain/19/858597/354009.terrain b/public/terrain/19/858597/354009.terrain new file mode 100644 index 000000000..43aab88fc Binary files /dev/null and b/public/terrain/19/858597/354009.terrain differ diff --git a/public/terrain/19/858597/354010.terrain b/public/terrain/19/858597/354010.terrain new file mode 100644 index 000000000..b621a71d5 Binary files /dev/null and b/public/terrain/19/858597/354010.terrain differ diff --git a/public/terrain/19/858597/354011.terrain b/public/terrain/19/858597/354011.terrain new file mode 100644 index 000000000..b6210874c Binary files /dev/null and b/public/terrain/19/858597/354011.terrain differ diff --git a/public/terrain/19/858597/354012.terrain b/public/terrain/19/858597/354012.terrain new file mode 100644 index 000000000..82c01872b Binary files /dev/null and b/public/terrain/19/858597/354012.terrain differ diff --git a/public/terrain/19/858597/354013.terrain b/public/terrain/19/858597/354013.terrain new file mode 100644 index 000000000..e4df633fe Binary files /dev/null and b/public/terrain/19/858597/354013.terrain differ diff --git a/public/terrain/19/858597/354014.terrain b/public/terrain/19/858597/354014.terrain new file mode 100644 index 000000000..9e8bc5b14 Binary files /dev/null and b/public/terrain/19/858597/354014.terrain differ diff --git a/public/terrain/19/858597/354015.terrain b/public/terrain/19/858597/354015.terrain new file mode 100644 index 000000000..110fb6454 Binary files /dev/null and b/public/terrain/19/858597/354015.terrain differ diff --git a/public/terrain/19/858597/354016.terrain b/public/terrain/19/858597/354016.terrain new file mode 100644 index 000000000..21e760dc2 Binary files /dev/null and b/public/terrain/19/858597/354016.terrain differ diff --git a/public/terrain/19/858597/354017.terrain b/public/terrain/19/858597/354017.terrain new file mode 100644 index 000000000..db4792d0d Binary files /dev/null and b/public/terrain/19/858597/354017.terrain differ diff --git a/public/terrain/19/858597/354018.terrain b/public/terrain/19/858597/354018.terrain new file mode 100644 index 000000000..12f64dcc9 Binary files /dev/null and b/public/terrain/19/858597/354018.terrain differ diff --git a/public/terrain/19/858597/354019.terrain b/public/terrain/19/858597/354019.terrain new file mode 100644 index 000000000..87e1a5301 Binary files /dev/null and b/public/terrain/19/858597/354019.terrain differ diff --git a/public/terrain/19/858597/354020.terrain b/public/terrain/19/858597/354020.terrain new file mode 100644 index 000000000..e7682158c Binary files /dev/null and b/public/terrain/19/858597/354020.terrain differ diff --git a/public/terrain/19/858597/354021.terrain b/public/terrain/19/858597/354021.terrain new file mode 100644 index 000000000..33730f3c3 Binary files /dev/null and b/public/terrain/19/858597/354021.terrain differ diff --git a/public/terrain/19/858597/354022.terrain b/public/terrain/19/858597/354022.terrain new file mode 100644 index 000000000..1a968e1fb Binary files /dev/null and b/public/terrain/19/858597/354022.terrain differ diff --git a/public/terrain/19/858597/354023.terrain b/public/terrain/19/858597/354023.terrain new file mode 100644 index 000000000..5dd4b8740 Binary files /dev/null and b/public/terrain/19/858597/354023.terrain differ diff --git a/public/terrain/19/858597/354024.terrain b/public/terrain/19/858597/354024.terrain new file mode 100644 index 000000000..faff79dd3 Binary files /dev/null and b/public/terrain/19/858597/354024.terrain differ diff --git a/public/terrain/19/858597/354025.terrain b/public/terrain/19/858597/354025.terrain new file mode 100644 index 000000000..8464e71ad Binary files /dev/null and b/public/terrain/19/858597/354025.terrain differ diff --git a/public/terrain/19/858597/354026.terrain b/public/terrain/19/858597/354026.terrain new file mode 100644 index 000000000..b9ce556a2 Binary files /dev/null and b/public/terrain/19/858597/354026.terrain differ diff --git a/public/terrain/19/858597/354027.terrain b/public/terrain/19/858597/354027.terrain new file mode 100644 index 000000000..273eb1507 Binary files /dev/null and b/public/terrain/19/858597/354027.terrain differ diff --git a/public/terrain/19/858597/354028.terrain b/public/terrain/19/858597/354028.terrain new file mode 100644 index 000000000..502e47a10 Binary files /dev/null and b/public/terrain/19/858597/354028.terrain differ diff --git a/public/terrain/19/858597/354029.terrain b/public/terrain/19/858597/354029.terrain new file mode 100644 index 000000000..616df9d24 Binary files /dev/null and b/public/terrain/19/858597/354029.terrain differ diff --git a/public/terrain/19/858597/354030.terrain b/public/terrain/19/858597/354030.terrain new file mode 100644 index 000000000..8af7b53ef Binary files /dev/null and b/public/terrain/19/858597/354030.terrain differ diff --git a/public/terrain/19/858597/354031.terrain b/public/terrain/19/858597/354031.terrain new file mode 100644 index 000000000..69a278aa9 Binary files /dev/null and b/public/terrain/19/858597/354031.terrain differ diff --git a/public/terrain/19/858597/354032.terrain b/public/terrain/19/858597/354032.terrain new file mode 100644 index 000000000..d7d20294a Binary files /dev/null and b/public/terrain/19/858597/354032.terrain differ diff --git a/public/terrain/19/858597/354033.terrain b/public/terrain/19/858597/354033.terrain new file mode 100644 index 000000000..788703d5f Binary files /dev/null and b/public/terrain/19/858597/354033.terrain differ diff --git a/public/terrain/19/858597/354034.terrain b/public/terrain/19/858597/354034.terrain new file mode 100644 index 000000000..69031d6ac Binary files /dev/null and b/public/terrain/19/858597/354034.terrain differ diff --git a/public/terrain/19/858597/354035.terrain b/public/terrain/19/858597/354035.terrain new file mode 100644 index 000000000..3104f11a6 Binary files /dev/null and b/public/terrain/19/858597/354035.terrain differ diff --git a/public/terrain/19/858597/354036.terrain b/public/terrain/19/858597/354036.terrain new file mode 100644 index 000000000..6cd5ec64f Binary files /dev/null and b/public/terrain/19/858597/354036.terrain differ diff --git a/public/terrain/19/858597/354037.terrain b/public/terrain/19/858597/354037.terrain new file mode 100644 index 000000000..904ddb31c Binary files /dev/null and b/public/terrain/19/858597/354037.terrain differ diff --git a/public/terrain/19/858597/354038.terrain b/public/terrain/19/858597/354038.terrain new file mode 100644 index 000000000..cbfb933c5 Binary files /dev/null and b/public/terrain/19/858597/354038.terrain differ diff --git a/public/terrain/19/858597/354039.terrain b/public/terrain/19/858597/354039.terrain new file mode 100644 index 000000000..2c154ce68 Binary files /dev/null and b/public/terrain/19/858597/354039.terrain differ diff --git a/public/terrain/19/858597/354040.terrain b/public/terrain/19/858597/354040.terrain new file mode 100644 index 000000000..32fb1207f Binary files /dev/null and b/public/terrain/19/858597/354040.terrain differ diff --git a/public/terrain/19/858597/354041.terrain b/public/terrain/19/858597/354041.terrain new file mode 100644 index 000000000..eea2014e3 Binary files /dev/null and b/public/terrain/19/858597/354041.terrain differ diff --git a/public/terrain/19/858597/354042.terrain b/public/terrain/19/858597/354042.terrain new file mode 100644 index 000000000..2b45397d3 Binary files /dev/null and b/public/terrain/19/858597/354042.terrain differ diff --git a/public/terrain/19/858597/354043.terrain b/public/terrain/19/858597/354043.terrain new file mode 100644 index 000000000..2e64c93b1 Binary files /dev/null and b/public/terrain/19/858597/354043.terrain differ diff --git a/public/terrain/19/858597/354044.terrain b/public/terrain/19/858597/354044.terrain new file mode 100644 index 000000000..511d6a825 Binary files /dev/null and b/public/terrain/19/858597/354044.terrain differ diff --git a/public/terrain/19/858597/354045.terrain b/public/terrain/19/858597/354045.terrain new file mode 100644 index 000000000..316fddc78 Binary files /dev/null and b/public/terrain/19/858597/354045.terrain differ diff --git a/public/terrain/19/858597/354046.terrain b/public/terrain/19/858597/354046.terrain new file mode 100644 index 000000000..53c91ed37 Binary files /dev/null and b/public/terrain/19/858597/354046.terrain differ diff --git a/public/terrain/19/858597/354047.terrain b/public/terrain/19/858597/354047.terrain new file mode 100644 index 000000000..d4bb6a0d4 Binary files /dev/null and b/public/terrain/19/858597/354047.terrain differ diff --git a/public/terrain/19/858597/354048.terrain b/public/terrain/19/858597/354048.terrain new file mode 100644 index 000000000..4a82b4389 Binary files /dev/null and b/public/terrain/19/858597/354048.terrain differ diff --git a/public/terrain/19/858597/354049.terrain b/public/terrain/19/858597/354049.terrain new file mode 100644 index 000000000..0f9547708 Binary files /dev/null and b/public/terrain/19/858597/354049.terrain differ diff --git a/public/terrain/19/858597/354050.terrain b/public/terrain/19/858597/354050.terrain new file mode 100644 index 000000000..de8600bd6 Binary files /dev/null and b/public/terrain/19/858597/354050.terrain differ diff --git a/public/terrain/19/858597/354051.terrain b/public/terrain/19/858597/354051.terrain new file mode 100644 index 000000000..213d81b6d Binary files /dev/null and b/public/terrain/19/858597/354051.terrain differ diff --git a/public/terrain/19/858597/354052.terrain b/public/terrain/19/858597/354052.terrain new file mode 100644 index 000000000..6b4c00d3c Binary files /dev/null and b/public/terrain/19/858597/354052.terrain differ diff --git a/public/terrain/19/858597/354053.terrain b/public/terrain/19/858597/354053.terrain new file mode 100644 index 000000000..385fdd98b Binary files /dev/null and b/public/terrain/19/858597/354053.terrain differ diff --git a/public/terrain/19/858597/354054.terrain b/public/terrain/19/858597/354054.terrain new file mode 100644 index 000000000..80fe4152e Binary files /dev/null and b/public/terrain/19/858597/354054.terrain differ diff --git a/public/terrain/19/858597/354055.terrain b/public/terrain/19/858597/354055.terrain new file mode 100644 index 000000000..b7e0ddc62 Binary files /dev/null and b/public/terrain/19/858597/354055.terrain differ diff --git a/public/terrain/19/858597/354056.terrain b/public/terrain/19/858597/354056.terrain new file mode 100644 index 000000000..6633ae55e Binary files /dev/null and b/public/terrain/19/858597/354056.terrain differ diff --git a/public/terrain/19/858597/354057.terrain b/public/terrain/19/858597/354057.terrain new file mode 100644 index 000000000..a1a29e8e4 Binary files /dev/null and b/public/terrain/19/858597/354057.terrain differ diff --git a/public/terrain/19/858597/354058.terrain b/public/terrain/19/858597/354058.terrain new file mode 100644 index 000000000..09280c1d9 Binary files /dev/null and b/public/terrain/19/858597/354058.terrain differ diff --git a/public/terrain/19/858597/354059.terrain b/public/terrain/19/858597/354059.terrain new file mode 100644 index 000000000..3a9fd2f8c Binary files /dev/null and b/public/terrain/19/858597/354059.terrain differ diff --git a/public/terrain/19/858598/353743.terrain b/public/terrain/19/858598/353743.terrain new file mode 100644 index 000000000..dd06cde9e Binary files /dev/null and b/public/terrain/19/858598/353743.terrain differ diff --git a/public/terrain/19/858598/353744.terrain b/public/terrain/19/858598/353744.terrain new file mode 100644 index 000000000..5951d706d Binary files /dev/null and b/public/terrain/19/858598/353744.terrain differ diff --git a/public/terrain/19/858598/353745.terrain b/public/terrain/19/858598/353745.terrain new file mode 100644 index 000000000..69820c894 Binary files /dev/null and b/public/terrain/19/858598/353745.terrain differ diff --git a/public/terrain/19/858598/353746.terrain b/public/terrain/19/858598/353746.terrain new file mode 100644 index 000000000..dab50dca0 Binary files /dev/null and b/public/terrain/19/858598/353746.terrain differ diff --git a/public/terrain/19/858598/353747.terrain b/public/terrain/19/858598/353747.terrain new file mode 100644 index 000000000..6ceb9a4e0 Binary files /dev/null and b/public/terrain/19/858598/353747.terrain differ diff --git a/public/terrain/19/858598/353748.terrain b/public/terrain/19/858598/353748.terrain new file mode 100644 index 000000000..a4f97e2a2 Binary files /dev/null and b/public/terrain/19/858598/353748.terrain differ diff --git a/public/terrain/19/858598/353749.terrain b/public/terrain/19/858598/353749.terrain new file mode 100644 index 000000000..5e0df0e82 Binary files /dev/null and b/public/terrain/19/858598/353749.terrain differ diff --git a/public/terrain/19/858598/353750.terrain b/public/terrain/19/858598/353750.terrain new file mode 100644 index 000000000..f6abcc8b7 Binary files /dev/null and b/public/terrain/19/858598/353750.terrain differ diff --git a/public/terrain/19/858598/353751.terrain b/public/terrain/19/858598/353751.terrain new file mode 100644 index 000000000..e69b72429 Binary files /dev/null and b/public/terrain/19/858598/353751.terrain differ diff --git a/public/terrain/19/858598/353752.terrain b/public/terrain/19/858598/353752.terrain new file mode 100644 index 000000000..ad87cb258 Binary files /dev/null and b/public/terrain/19/858598/353752.terrain differ diff --git a/public/terrain/19/858598/353753.terrain b/public/terrain/19/858598/353753.terrain new file mode 100644 index 000000000..4d6a482e5 Binary files /dev/null and b/public/terrain/19/858598/353753.terrain differ diff --git a/public/terrain/19/858598/353754.terrain b/public/terrain/19/858598/353754.terrain new file mode 100644 index 000000000..e2858ad2f Binary files /dev/null and b/public/terrain/19/858598/353754.terrain differ diff --git a/public/terrain/19/858598/353755.terrain b/public/terrain/19/858598/353755.terrain new file mode 100644 index 000000000..ed3f463eb Binary files /dev/null and b/public/terrain/19/858598/353755.terrain differ diff --git a/public/terrain/19/858598/353756.terrain b/public/terrain/19/858598/353756.terrain new file mode 100644 index 000000000..25c5cfa69 Binary files /dev/null and b/public/terrain/19/858598/353756.terrain differ diff --git a/public/terrain/19/858598/353757.terrain b/public/terrain/19/858598/353757.terrain new file mode 100644 index 000000000..f79412f0e Binary files /dev/null and b/public/terrain/19/858598/353757.terrain differ diff --git a/public/terrain/19/858598/353758.terrain b/public/terrain/19/858598/353758.terrain new file mode 100644 index 000000000..a81ad6a3a Binary files /dev/null and b/public/terrain/19/858598/353758.terrain differ diff --git a/public/terrain/19/858598/353759.terrain b/public/terrain/19/858598/353759.terrain new file mode 100644 index 000000000..928f380e5 Binary files /dev/null and b/public/terrain/19/858598/353759.terrain differ diff --git a/public/terrain/19/858598/353760.terrain b/public/terrain/19/858598/353760.terrain new file mode 100644 index 000000000..836aadfa4 Binary files /dev/null and b/public/terrain/19/858598/353760.terrain differ diff --git a/public/terrain/19/858598/353761.terrain b/public/terrain/19/858598/353761.terrain new file mode 100644 index 000000000..414b4721a Binary files /dev/null and b/public/terrain/19/858598/353761.terrain differ diff --git a/public/terrain/19/858598/353762.terrain b/public/terrain/19/858598/353762.terrain new file mode 100644 index 000000000..6d15632bd Binary files /dev/null and b/public/terrain/19/858598/353762.terrain differ diff --git a/public/terrain/19/858598/353763.terrain b/public/terrain/19/858598/353763.terrain new file mode 100644 index 000000000..09971727b Binary files /dev/null and b/public/terrain/19/858598/353763.terrain differ diff --git a/public/terrain/19/858598/353764.terrain b/public/terrain/19/858598/353764.terrain new file mode 100644 index 000000000..29f24ea69 Binary files /dev/null and b/public/terrain/19/858598/353764.terrain differ diff --git a/public/terrain/19/858598/353765.terrain b/public/terrain/19/858598/353765.terrain new file mode 100644 index 000000000..1b8df2bb6 Binary files /dev/null and b/public/terrain/19/858598/353765.terrain differ diff --git a/public/terrain/19/858598/353766.terrain b/public/terrain/19/858598/353766.terrain new file mode 100644 index 000000000..f7dac89d0 Binary files /dev/null and b/public/terrain/19/858598/353766.terrain differ diff --git a/public/terrain/19/858598/353767.terrain b/public/terrain/19/858598/353767.terrain new file mode 100644 index 000000000..55482cb3a Binary files /dev/null and b/public/terrain/19/858598/353767.terrain differ diff --git a/public/terrain/19/858598/353768.terrain b/public/terrain/19/858598/353768.terrain new file mode 100644 index 000000000..d2bb5f86b Binary files /dev/null and b/public/terrain/19/858598/353768.terrain differ diff --git a/public/terrain/19/858598/353769.terrain b/public/terrain/19/858598/353769.terrain new file mode 100644 index 000000000..c5bea1bff Binary files /dev/null and b/public/terrain/19/858598/353769.terrain differ diff --git a/public/terrain/19/858598/353770.terrain b/public/terrain/19/858598/353770.terrain new file mode 100644 index 000000000..124a5add9 Binary files /dev/null and b/public/terrain/19/858598/353770.terrain differ diff --git a/public/terrain/19/858598/353771.terrain b/public/terrain/19/858598/353771.terrain new file mode 100644 index 000000000..b231c3aa0 Binary files /dev/null and b/public/terrain/19/858598/353771.terrain differ diff --git a/public/terrain/19/858598/353772.terrain b/public/terrain/19/858598/353772.terrain new file mode 100644 index 000000000..34608daab Binary files /dev/null and b/public/terrain/19/858598/353772.terrain differ diff --git a/public/terrain/19/858598/353773.terrain b/public/terrain/19/858598/353773.terrain new file mode 100644 index 000000000..aa4989454 Binary files /dev/null and b/public/terrain/19/858598/353773.terrain differ diff --git a/public/terrain/19/858598/353774.terrain b/public/terrain/19/858598/353774.terrain new file mode 100644 index 000000000..47453889c Binary files /dev/null and b/public/terrain/19/858598/353774.terrain differ diff --git a/public/terrain/19/858598/353775.terrain b/public/terrain/19/858598/353775.terrain new file mode 100644 index 000000000..0929a87af Binary files /dev/null and b/public/terrain/19/858598/353775.terrain differ diff --git a/public/terrain/19/858598/353776.terrain b/public/terrain/19/858598/353776.terrain new file mode 100644 index 000000000..17527290e Binary files /dev/null and b/public/terrain/19/858598/353776.terrain differ diff --git a/public/terrain/19/858598/353777.terrain b/public/terrain/19/858598/353777.terrain new file mode 100644 index 000000000..0eab2943c Binary files /dev/null and b/public/terrain/19/858598/353777.terrain differ diff --git a/public/terrain/19/858598/353778.terrain b/public/terrain/19/858598/353778.terrain new file mode 100644 index 000000000..f1c539edf Binary files /dev/null and b/public/terrain/19/858598/353778.terrain differ diff --git a/public/terrain/19/858598/353779.terrain b/public/terrain/19/858598/353779.terrain new file mode 100644 index 000000000..3eee92aae Binary files /dev/null and b/public/terrain/19/858598/353779.terrain differ diff --git a/public/terrain/19/858598/353780.terrain b/public/terrain/19/858598/353780.terrain new file mode 100644 index 000000000..f02989e5a Binary files /dev/null and b/public/terrain/19/858598/353780.terrain differ diff --git a/public/terrain/19/858598/353781.terrain b/public/terrain/19/858598/353781.terrain new file mode 100644 index 000000000..82ddd3416 Binary files /dev/null and b/public/terrain/19/858598/353781.terrain differ diff --git a/public/terrain/19/858598/353782.terrain b/public/terrain/19/858598/353782.terrain new file mode 100644 index 000000000..20e3c7db3 Binary files /dev/null and b/public/terrain/19/858598/353782.terrain differ diff --git a/public/terrain/19/858598/353783.terrain b/public/terrain/19/858598/353783.terrain new file mode 100644 index 000000000..0a9033fef Binary files /dev/null and b/public/terrain/19/858598/353783.terrain differ diff --git a/public/terrain/19/858598/353784.terrain b/public/terrain/19/858598/353784.terrain new file mode 100644 index 000000000..0bde82a07 Binary files /dev/null and b/public/terrain/19/858598/353784.terrain differ diff --git a/public/terrain/19/858598/353785.terrain b/public/terrain/19/858598/353785.terrain new file mode 100644 index 000000000..b0958ac86 Binary files /dev/null and b/public/terrain/19/858598/353785.terrain differ diff --git a/public/terrain/19/858598/353786.terrain b/public/terrain/19/858598/353786.terrain new file mode 100644 index 000000000..b6cc510c5 Binary files /dev/null and b/public/terrain/19/858598/353786.terrain differ diff --git a/public/terrain/19/858598/353787.terrain b/public/terrain/19/858598/353787.terrain new file mode 100644 index 000000000..d5c5d2546 Binary files /dev/null and b/public/terrain/19/858598/353787.terrain differ diff --git a/public/terrain/19/858598/353788.terrain b/public/terrain/19/858598/353788.terrain new file mode 100644 index 000000000..6354960e4 Binary files /dev/null and b/public/terrain/19/858598/353788.terrain differ diff --git a/public/terrain/19/858598/353789.terrain b/public/terrain/19/858598/353789.terrain new file mode 100644 index 000000000..7e4ad8ce1 Binary files /dev/null and b/public/terrain/19/858598/353789.terrain differ diff --git a/public/terrain/19/858598/353790.terrain b/public/terrain/19/858598/353790.terrain new file mode 100644 index 000000000..abd7f1d99 Binary files /dev/null and b/public/terrain/19/858598/353790.terrain differ diff --git a/public/terrain/19/858598/353791.terrain b/public/terrain/19/858598/353791.terrain new file mode 100644 index 000000000..1e507a55c Binary files /dev/null and b/public/terrain/19/858598/353791.terrain differ diff --git a/public/terrain/19/858598/353792.terrain b/public/terrain/19/858598/353792.terrain new file mode 100644 index 000000000..76e8568ea Binary files /dev/null and b/public/terrain/19/858598/353792.terrain differ diff --git a/public/terrain/19/858598/353793.terrain b/public/terrain/19/858598/353793.terrain new file mode 100644 index 000000000..7596c468f Binary files /dev/null and b/public/terrain/19/858598/353793.terrain differ diff --git a/public/terrain/19/858598/353794.terrain b/public/terrain/19/858598/353794.terrain new file mode 100644 index 000000000..bea843e54 Binary files /dev/null and b/public/terrain/19/858598/353794.terrain differ diff --git a/public/terrain/19/858598/353795.terrain b/public/terrain/19/858598/353795.terrain new file mode 100644 index 000000000..314fffc1a Binary files /dev/null and b/public/terrain/19/858598/353795.terrain differ diff --git a/public/terrain/19/858598/353796.terrain b/public/terrain/19/858598/353796.terrain new file mode 100644 index 000000000..356c1f743 Binary files /dev/null and b/public/terrain/19/858598/353796.terrain differ diff --git a/public/terrain/19/858598/353797.terrain b/public/terrain/19/858598/353797.terrain new file mode 100644 index 000000000..ae35fc8fc Binary files /dev/null and b/public/terrain/19/858598/353797.terrain differ diff --git a/public/terrain/19/858598/353798.terrain b/public/terrain/19/858598/353798.terrain new file mode 100644 index 000000000..34aecf5dc Binary files /dev/null and b/public/terrain/19/858598/353798.terrain differ diff --git a/public/terrain/19/858598/353799.terrain b/public/terrain/19/858598/353799.terrain new file mode 100644 index 000000000..7ae8aca0e Binary files /dev/null and b/public/terrain/19/858598/353799.terrain differ diff --git a/public/terrain/19/858598/353800.terrain b/public/terrain/19/858598/353800.terrain new file mode 100644 index 000000000..6d58e5db4 Binary files /dev/null and b/public/terrain/19/858598/353800.terrain differ diff --git a/public/terrain/19/858598/353801.terrain b/public/terrain/19/858598/353801.terrain new file mode 100644 index 000000000..07ecb01e0 Binary files /dev/null and b/public/terrain/19/858598/353801.terrain differ diff --git a/public/terrain/19/858598/353802.terrain b/public/terrain/19/858598/353802.terrain new file mode 100644 index 000000000..f4cddf86c Binary files /dev/null and b/public/terrain/19/858598/353802.terrain differ diff --git a/public/terrain/19/858598/353803.terrain b/public/terrain/19/858598/353803.terrain new file mode 100644 index 000000000..67f93109a Binary files /dev/null and b/public/terrain/19/858598/353803.terrain differ diff --git a/public/terrain/19/858598/353804.terrain b/public/terrain/19/858598/353804.terrain new file mode 100644 index 000000000..3265748d1 Binary files /dev/null and b/public/terrain/19/858598/353804.terrain differ diff --git a/public/terrain/19/858598/353805.terrain b/public/terrain/19/858598/353805.terrain new file mode 100644 index 000000000..1838e1c06 Binary files /dev/null and b/public/terrain/19/858598/353805.terrain differ diff --git a/public/terrain/19/858598/353806.terrain b/public/terrain/19/858598/353806.terrain new file mode 100644 index 000000000..2a6e16dd2 Binary files /dev/null and b/public/terrain/19/858598/353806.terrain differ diff --git a/public/terrain/19/858598/353807.terrain b/public/terrain/19/858598/353807.terrain new file mode 100644 index 000000000..e28024ee6 Binary files /dev/null and b/public/terrain/19/858598/353807.terrain differ diff --git a/public/terrain/19/858598/353808.terrain b/public/terrain/19/858598/353808.terrain new file mode 100644 index 000000000..7c11dd4f9 Binary files /dev/null and b/public/terrain/19/858598/353808.terrain differ diff --git a/public/terrain/19/858598/353809.terrain b/public/terrain/19/858598/353809.terrain new file mode 100644 index 000000000..79d38828c Binary files /dev/null and b/public/terrain/19/858598/353809.terrain differ diff --git a/public/terrain/19/858598/353810.terrain b/public/terrain/19/858598/353810.terrain new file mode 100644 index 000000000..4f0805c2b Binary files /dev/null and b/public/terrain/19/858598/353810.terrain differ diff --git a/public/terrain/19/858598/353811.terrain b/public/terrain/19/858598/353811.terrain new file mode 100644 index 000000000..3100209b1 Binary files /dev/null and b/public/terrain/19/858598/353811.terrain differ diff --git a/public/terrain/19/858598/353812.terrain b/public/terrain/19/858598/353812.terrain new file mode 100644 index 000000000..0dcba4b2d Binary files /dev/null and b/public/terrain/19/858598/353812.terrain differ diff --git a/public/terrain/19/858598/353813.terrain b/public/terrain/19/858598/353813.terrain new file mode 100644 index 000000000..d5edbf57d Binary files /dev/null and b/public/terrain/19/858598/353813.terrain differ diff --git a/public/terrain/19/858598/353814.terrain b/public/terrain/19/858598/353814.terrain new file mode 100644 index 000000000..fb7e6618a Binary files /dev/null and b/public/terrain/19/858598/353814.terrain differ diff --git a/public/terrain/19/858598/353815.terrain b/public/terrain/19/858598/353815.terrain new file mode 100644 index 000000000..ced767902 Binary files /dev/null and b/public/terrain/19/858598/353815.terrain differ diff --git a/public/terrain/19/858598/353816.terrain b/public/terrain/19/858598/353816.terrain new file mode 100644 index 000000000..945be4c1d Binary files /dev/null and b/public/terrain/19/858598/353816.terrain differ diff --git a/public/terrain/19/858598/353817.terrain b/public/terrain/19/858598/353817.terrain new file mode 100644 index 000000000..cd025b82d Binary files /dev/null and b/public/terrain/19/858598/353817.terrain differ diff --git a/public/terrain/19/858598/353818.terrain b/public/terrain/19/858598/353818.terrain new file mode 100644 index 000000000..f2cce97a9 Binary files /dev/null and b/public/terrain/19/858598/353818.terrain differ diff --git a/public/terrain/19/858598/353819.terrain b/public/terrain/19/858598/353819.terrain new file mode 100644 index 000000000..978320394 Binary files /dev/null and b/public/terrain/19/858598/353819.terrain differ diff --git a/public/terrain/19/858598/353820.terrain b/public/terrain/19/858598/353820.terrain new file mode 100644 index 000000000..737a1b01a Binary files /dev/null and b/public/terrain/19/858598/353820.terrain differ diff --git a/public/terrain/19/858598/353821.terrain b/public/terrain/19/858598/353821.terrain new file mode 100644 index 000000000..54fca1046 Binary files /dev/null and b/public/terrain/19/858598/353821.terrain differ diff --git a/public/terrain/19/858598/353822.terrain b/public/terrain/19/858598/353822.terrain new file mode 100644 index 000000000..f3d96d99f Binary files /dev/null and b/public/terrain/19/858598/353822.terrain differ diff --git a/public/terrain/19/858598/353823.terrain b/public/terrain/19/858598/353823.terrain new file mode 100644 index 000000000..8db9e77f2 Binary files /dev/null and b/public/terrain/19/858598/353823.terrain differ diff --git a/public/terrain/19/858598/353824.terrain b/public/terrain/19/858598/353824.terrain new file mode 100644 index 000000000..87f7bae38 Binary files /dev/null and b/public/terrain/19/858598/353824.terrain differ diff --git a/public/terrain/19/858598/353825.terrain b/public/terrain/19/858598/353825.terrain new file mode 100644 index 000000000..f2c5492f5 Binary files /dev/null and b/public/terrain/19/858598/353825.terrain differ diff --git a/public/terrain/19/858598/353826.terrain b/public/terrain/19/858598/353826.terrain new file mode 100644 index 000000000..bc9830059 Binary files /dev/null and b/public/terrain/19/858598/353826.terrain differ diff --git a/public/terrain/19/858598/353827.terrain b/public/terrain/19/858598/353827.terrain new file mode 100644 index 000000000..37f4ece99 Binary files /dev/null and b/public/terrain/19/858598/353827.terrain differ diff --git a/public/terrain/19/858598/353828.terrain b/public/terrain/19/858598/353828.terrain new file mode 100644 index 000000000..fd0a299b4 Binary files /dev/null and b/public/terrain/19/858598/353828.terrain differ diff --git a/public/terrain/19/858598/353829.terrain b/public/terrain/19/858598/353829.terrain new file mode 100644 index 000000000..3cf2d452f Binary files /dev/null and b/public/terrain/19/858598/353829.terrain differ diff --git a/public/terrain/19/858598/353830.terrain b/public/terrain/19/858598/353830.terrain new file mode 100644 index 000000000..285ddd110 Binary files /dev/null and b/public/terrain/19/858598/353830.terrain differ diff --git a/public/terrain/19/858598/353831.terrain b/public/terrain/19/858598/353831.terrain new file mode 100644 index 000000000..fd9b2264b Binary files /dev/null and b/public/terrain/19/858598/353831.terrain differ diff --git a/public/terrain/19/858598/353832.terrain b/public/terrain/19/858598/353832.terrain new file mode 100644 index 000000000..0537a5119 Binary files /dev/null and b/public/terrain/19/858598/353832.terrain differ diff --git a/public/terrain/19/858598/353833.terrain b/public/terrain/19/858598/353833.terrain new file mode 100644 index 000000000..2cd23d881 Binary files /dev/null and b/public/terrain/19/858598/353833.terrain differ diff --git a/public/terrain/19/858598/353834.terrain b/public/terrain/19/858598/353834.terrain new file mode 100644 index 000000000..811a380a0 Binary files /dev/null and b/public/terrain/19/858598/353834.terrain differ diff --git a/public/terrain/19/858598/353835.terrain b/public/terrain/19/858598/353835.terrain new file mode 100644 index 000000000..696fcb126 Binary files /dev/null and b/public/terrain/19/858598/353835.terrain differ diff --git a/public/terrain/19/858598/353836.terrain b/public/terrain/19/858598/353836.terrain new file mode 100644 index 000000000..2a9f4a180 Binary files /dev/null and b/public/terrain/19/858598/353836.terrain differ diff --git a/public/terrain/19/858598/353837.terrain b/public/terrain/19/858598/353837.terrain new file mode 100644 index 000000000..81c51fb83 Binary files /dev/null and b/public/terrain/19/858598/353837.terrain differ diff --git a/public/terrain/19/858598/353838.terrain b/public/terrain/19/858598/353838.terrain new file mode 100644 index 000000000..98545f2ac Binary files /dev/null and b/public/terrain/19/858598/353838.terrain differ diff --git a/public/terrain/19/858598/353839.terrain b/public/terrain/19/858598/353839.terrain new file mode 100644 index 000000000..dd3178cb8 Binary files /dev/null and b/public/terrain/19/858598/353839.terrain differ diff --git a/public/terrain/19/858598/353840.terrain b/public/terrain/19/858598/353840.terrain new file mode 100644 index 000000000..2e0747a82 Binary files /dev/null and b/public/terrain/19/858598/353840.terrain differ diff --git a/public/terrain/19/858598/353841.terrain b/public/terrain/19/858598/353841.terrain new file mode 100644 index 000000000..0194a7123 Binary files /dev/null and b/public/terrain/19/858598/353841.terrain differ diff --git a/public/terrain/19/858598/353842.terrain b/public/terrain/19/858598/353842.terrain new file mode 100644 index 000000000..74ba30dfd Binary files /dev/null and b/public/terrain/19/858598/353842.terrain differ diff --git a/public/terrain/19/858598/353843.terrain b/public/terrain/19/858598/353843.terrain new file mode 100644 index 000000000..cd06d98c9 Binary files /dev/null and b/public/terrain/19/858598/353843.terrain differ diff --git a/public/terrain/19/858598/353844.terrain b/public/terrain/19/858598/353844.terrain new file mode 100644 index 000000000..fca37dc1c Binary files /dev/null and b/public/terrain/19/858598/353844.terrain differ diff --git a/public/terrain/19/858598/353845.terrain b/public/terrain/19/858598/353845.terrain new file mode 100644 index 000000000..87d9d753e Binary files /dev/null and b/public/terrain/19/858598/353845.terrain differ diff --git a/public/terrain/19/858598/353846.terrain b/public/terrain/19/858598/353846.terrain new file mode 100644 index 000000000..e232ee43f Binary files /dev/null and b/public/terrain/19/858598/353846.terrain differ diff --git a/public/terrain/19/858598/353847.terrain b/public/terrain/19/858598/353847.terrain new file mode 100644 index 000000000..fb2bc9bb0 Binary files /dev/null and b/public/terrain/19/858598/353847.terrain differ diff --git a/public/terrain/19/858598/353848.terrain b/public/terrain/19/858598/353848.terrain new file mode 100644 index 000000000..310a685c6 Binary files /dev/null and b/public/terrain/19/858598/353848.terrain differ diff --git a/public/terrain/19/858598/353849.terrain b/public/terrain/19/858598/353849.terrain new file mode 100644 index 000000000..ab3431ac9 Binary files /dev/null and b/public/terrain/19/858598/353849.terrain differ diff --git a/public/terrain/19/858598/353850.terrain b/public/terrain/19/858598/353850.terrain new file mode 100644 index 000000000..08d9feb9d Binary files /dev/null and b/public/terrain/19/858598/353850.terrain differ diff --git a/public/terrain/19/858598/353851.terrain b/public/terrain/19/858598/353851.terrain new file mode 100644 index 000000000..f1ce0cee8 Binary files /dev/null and b/public/terrain/19/858598/353851.terrain differ diff --git a/public/terrain/19/858598/353852.terrain b/public/terrain/19/858598/353852.terrain new file mode 100644 index 000000000..6ac59b817 Binary files /dev/null and b/public/terrain/19/858598/353852.terrain differ diff --git a/public/terrain/19/858598/353853.terrain b/public/terrain/19/858598/353853.terrain new file mode 100644 index 000000000..befa76671 Binary files /dev/null and b/public/terrain/19/858598/353853.terrain differ diff --git a/public/terrain/19/858598/353854.terrain b/public/terrain/19/858598/353854.terrain new file mode 100644 index 000000000..1eb1b0b3b Binary files /dev/null and b/public/terrain/19/858598/353854.terrain differ diff --git a/public/terrain/19/858598/353855.terrain b/public/terrain/19/858598/353855.terrain new file mode 100644 index 000000000..80de9d544 Binary files /dev/null and b/public/terrain/19/858598/353855.terrain differ diff --git a/public/terrain/19/858598/353856.terrain b/public/terrain/19/858598/353856.terrain new file mode 100644 index 000000000..4590e6704 Binary files /dev/null and b/public/terrain/19/858598/353856.terrain differ diff --git a/public/terrain/19/858598/353857.terrain b/public/terrain/19/858598/353857.terrain new file mode 100644 index 000000000..cdecc7154 Binary files /dev/null and b/public/terrain/19/858598/353857.terrain differ diff --git a/public/terrain/19/858598/353858.terrain b/public/terrain/19/858598/353858.terrain new file mode 100644 index 000000000..27b685b24 Binary files /dev/null and b/public/terrain/19/858598/353858.terrain differ diff --git a/public/terrain/19/858598/353859.terrain b/public/terrain/19/858598/353859.terrain new file mode 100644 index 000000000..53e494e1b Binary files /dev/null and b/public/terrain/19/858598/353859.terrain differ diff --git a/public/terrain/19/858598/353860.terrain b/public/terrain/19/858598/353860.terrain new file mode 100644 index 000000000..dc04e91cc Binary files /dev/null and b/public/terrain/19/858598/353860.terrain differ diff --git a/public/terrain/19/858598/353861.terrain b/public/terrain/19/858598/353861.terrain new file mode 100644 index 000000000..3026c93b0 Binary files /dev/null and b/public/terrain/19/858598/353861.terrain differ diff --git a/public/terrain/19/858598/353862.terrain b/public/terrain/19/858598/353862.terrain new file mode 100644 index 000000000..505559b3f Binary files /dev/null and b/public/terrain/19/858598/353862.terrain differ diff --git a/public/terrain/19/858598/353863.terrain b/public/terrain/19/858598/353863.terrain new file mode 100644 index 000000000..ac5b7e8ec Binary files /dev/null and b/public/terrain/19/858598/353863.terrain differ diff --git a/public/terrain/19/858598/353864.terrain b/public/terrain/19/858598/353864.terrain new file mode 100644 index 000000000..de0f2dcd8 Binary files /dev/null and b/public/terrain/19/858598/353864.terrain differ diff --git a/public/terrain/19/858598/353865.terrain b/public/terrain/19/858598/353865.terrain new file mode 100644 index 000000000..4a6f46d25 Binary files /dev/null and b/public/terrain/19/858598/353865.terrain differ diff --git a/public/terrain/19/858598/353866.terrain b/public/terrain/19/858598/353866.terrain new file mode 100644 index 000000000..f20e9a93a Binary files /dev/null and b/public/terrain/19/858598/353866.terrain differ diff --git a/public/terrain/19/858598/353867.terrain b/public/terrain/19/858598/353867.terrain new file mode 100644 index 000000000..a485fcca6 Binary files /dev/null and b/public/terrain/19/858598/353867.terrain differ diff --git a/public/terrain/19/858598/353868.terrain b/public/terrain/19/858598/353868.terrain new file mode 100644 index 000000000..3cdab7c87 Binary files /dev/null and b/public/terrain/19/858598/353868.terrain differ diff --git a/public/terrain/19/858598/353869.terrain b/public/terrain/19/858598/353869.terrain new file mode 100644 index 000000000..671ddafd9 Binary files /dev/null and b/public/terrain/19/858598/353869.terrain differ diff --git a/public/terrain/19/858598/353870.terrain b/public/terrain/19/858598/353870.terrain new file mode 100644 index 000000000..62042a12f Binary files /dev/null and b/public/terrain/19/858598/353870.terrain differ diff --git a/public/terrain/19/858598/353871.terrain b/public/terrain/19/858598/353871.terrain new file mode 100644 index 000000000..e281cf2f1 Binary files /dev/null and b/public/terrain/19/858598/353871.terrain differ diff --git a/public/terrain/19/858598/353872.terrain b/public/terrain/19/858598/353872.terrain new file mode 100644 index 000000000..9ba72346f Binary files /dev/null and b/public/terrain/19/858598/353872.terrain differ diff --git a/public/terrain/19/858598/353873.terrain b/public/terrain/19/858598/353873.terrain new file mode 100644 index 000000000..542ef01c2 Binary files /dev/null and b/public/terrain/19/858598/353873.terrain differ diff --git a/public/terrain/19/858598/353874.terrain b/public/terrain/19/858598/353874.terrain new file mode 100644 index 000000000..ac9ed16ca Binary files /dev/null and b/public/terrain/19/858598/353874.terrain differ diff --git a/public/terrain/19/858598/353875.terrain b/public/terrain/19/858598/353875.terrain new file mode 100644 index 000000000..cb5c68e0e Binary files /dev/null and b/public/terrain/19/858598/353875.terrain differ diff --git a/public/terrain/19/858598/353876.terrain b/public/terrain/19/858598/353876.terrain new file mode 100644 index 000000000..55c644a6f Binary files /dev/null and b/public/terrain/19/858598/353876.terrain differ diff --git a/public/terrain/19/858598/353877.terrain b/public/terrain/19/858598/353877.terrain new file mode 100644 index 000000000..1560fa83f Binary files /dev/null and b/public/terrain/19/858598/353877.terrain differ diff --git a/public/terrain/19/858598/353878.terrain b/public/terrain/19/858598/353878.terrain new file mode 100644 index 000000000..e60bfce57 Binary files /dev/null and b/public/terrain/19/858598/353878.terrain differ diff --git a/public/terrain/19/858598/353879.terrain b/public/terrain/19/858598/353879.terrain new file mode 100644 index 000000000..0c16a9ba0 Binary files /dev/null and b/public/terrain/19/858598/353879.terrain differ diff --git a/public/terrain/19/858598/353880.terrain b/public/terrain/19/858598/353880.terrain new file mode 100644 index 000000000..1b5d35025 Binary files /dev/null and b/public/terrain/19/858598/353880.terrain differ diff --git a/public/terrain/19/858598/353881.terrain b/public/terrain/19/858598/353881.terrain new file mode 100644 index 000000000..3fb1fb2ca Binary files /dev/null and b/public/terrain/19/858598/353881.terrain differ diff --git a/public/terrain/19/858598/353882.terrain b/public/terrain/19/858598/353882.terrain new file mode 100644 index 000000000..aa48fc7ad Binary files /dev/null and b/public/terrain/19/858598/353882.terrain differ diff --git a/public/terrain/19/858598/353883.terrain b/public/terrain/19/858598/353883.terrain new file mode 100644 index 000000000..61cdbb173 Binary files /dev/null and b/public/terrain/19/858598/353883.terrain differ diff --git a/public/terrain/19/858598/353884.terrain b/public/terrain/19/858598/353884.terrain new file mode 100644 index 000000000..a96a34ca1 Binary files /dev/null and b/public/terrain/19/858598/353884.terrain differ diff --git a/public/terrain/19/858598/353885.terrain b/public/terrain/19/858598/353885.terrain new file mode 100644 index 000000000..65a9a8ecc Binary files /dev/null and b/public/terrain/19/858598/353885.terrain differ diff --git a/public/terrain/19/858598/353886.terrain b/public/terrain/19/858598/353886.terrain new file mode 100644 index 000000000..4d9e96dbf Binary files /dev/null and b/public/terrain/19/858598/353886.terrain differ diff --git a/public/terrain/19/858598/353887.terrain b/public/terrain/19/858598/353887.terrain new file mode 100644 index 000000000..80a6f8df9 Binary files /dev/null and b/public/terrain/19/858598/353887.terrain differ diff --git a/public/terrain/19/858598/353888.terrain b/public/terrain/19/858598/353888.terrain new file mode 100644 index 000000000..e4a876dfa Binary files /dev/null and b/public/terrain/19/858598/353888.terrain differ diff --git a/public/terrain/19/858598/353889.terrain b/public/terrain/19/858598/353889.terrain new file mode 100644 index 000000000..ec1a3df57 Binary files /dev/null and b/public/terrain/19/858598/353889.terrain differ diff --git a/public/terrain/19/858598/353890.terrain b/public/terrain/19/858598/353890.terrain new file mode 100644 index 000000000..1f83bf5c3 Binary files /dev/null and b/public/terrain/19/858598/353890.terrain differ diff --git a/public/terrain/19/858598/353891.terrain b/public/terrain/19/858598/353891.terrain new file mode 100644 index 000000000..7490df32c Binary files /dev/null and b/public/terrain/19/858598/353891.terrain differ diff --git a/public/terrain/19/858598/353892.terrain b/public/terrain/19/858598/353892.terrain new file mode 100644 index 000000000..8a4905ca7 Binary files /dev/null and b/public/terrain/19/858598/353892.terrain differ diff --git a/public/terrain/19/858598/353893.terrain b/public/terrain/19/858598/353893.terrain new file mode 100644 index 000000000..26e0c7c09 Binary files /dev/null and b/public/terrain/19/858598/353893.terrain differ diff --git a/public/terrain/19/858598/353894.terrain b/public/terrain/19/858598/353894.terrain new file mode 100644 index 000000000..b8f6ee51a Binary files /dev/null and b/public/terrain/19/858598/353894.terrain differ diff --git a/public/terrain/19/858598/353895.terrain b/public/terrain/19/858598/353895.terrain new file mode 100644 index 000000000..6345f6b2b Binary files /dev/null and b/public/terrain/19/858598/353895.terrain differ diff --git a/public/terrain/19/858598/353896.terrain b/public/terrain/19/858598/353896.terrain new file mode 100644 index 000000000..3b83dfbe6 Binary files /dev/null and b/public/terrain/19/858598/353896.terrain differ diff --git a/public/terrain/19/858598/353897.terrain b/public/terrain/19/858598/353897.terrain new file mode 100644 index 000000000..53f9fdc89 Binary files /dev/null and b/public/terrain/19/858598/353897.terrain differ diff --git a/public/terrain/19/858598/353898.terrain b/public/terrain/19/858598/353898.terrain new file mode 100644 index 000000000..f3efc36b8 Binary files /dev/null and b/public/terrain/19/858598/353898.terrain differ diff --git a/public/terrain/19/858598/353899.terrain b/public/terrain/19/858598/353899.terrain new file mode 100644 index 000000000..2d6fda830 Binary files /dev/null and b/public/terrain/19/858598/353899.terrain differ diff --git a/public/terrain/19/858598/353900.terrain b/public/terrain/19/858598/353900.terrain new file mode 100644 index 000000000..af1bfb65c Binary files /dev/null and b/public/terrain/19/858598/353900.terrain differ diff --git a/public/terrain/19/858598/353901.terrain b/public/terrain/19/858598/353901.terrain new file mode 100644 index 000000000..12a7c2e35 Binary files /dev/null and b/public/terrain/19/858598/353901.terrain differ diff --git a/public/terrain/19/858598/353902.terrain b/public/terrain/19/858598/353902.terrain new file mode 100644 index 000000000..da2b5311a Binary files /dev/null and b/public/terrain/19/858598/353902.terrain differ diff --git a/public/terrain/19/858598/353903.terrain b/public/terrain/19/858598/353903.terrain new file mode 100644 index 000000000..f7e40d9ad Binary files /dev/null and b/public/terrain/19/858598/353903.terrain differ diff --git a/public/terrain/19/858598/353904.terrain b/public/terrain/19/858598/353904.terrain new file mode 100644 index 000000000..c11453639 Binary files /dev/null and b/public/terrain/19/858598/353904.terrain differ diff --git a/public/terrain/19/858598/353905.terrain b/public/terrain/19/858598/353905.terrain new file mode 100644 index 000000000..a57a18149 Binary files /dev/null and b/public/terrain/19/858598/353905.terrain differ diff --git a/public/terrain/19/858598/353906.terrain b/public/terrain/19/858598/353906.terrain new file mode 100644 index 000000000..a5ed3fc07 Binary files /dev/null and b/public/terrain/19/858598/353906.terrain differ diff --git a/public/terrain/19/858598/353907.terrain b/public/terrain/19/858598/353907.terrain new file mode 100644 index 000000000..4329260f4 Binary files /dev/null and b/public/terrain/19/858598/353907.terrain differ diff --git a/public/terrain/19/858598/353908.terrain b/public/terrain/19/858598/353908.terrain new file mode 100644 index 000000000..20c0bc30f Binary files /dev/null and b/public/terrain/19/858598/353908.terrain differ diff --git a/public/terrain/19/858598/353909.terrain b/public/terrain/19/858598/353909.terrain new file mode 100644 index 000000000..81be6b232 Binary files /dev/null and b/public/terrain/19/858598/353909.terrain differ diff --git a/public/terrain/19/858598/353910.terrain b/public/terrain/19/858598/353910.terrain new file mode 100644 index 000000000..393fb3a9a Binary files /dev/null and b/public/terrain/19/858598/353910.terrain differ diff --git a/public/terrain/19/858598/353911.terrain b/public/terrain/19/858598/353911.terrain new file mode 100644 index 000000000..7b739845d Binary files /dev/null and b/public/terrain/19/858598/353911.terrain differ diff --git a/public/terrain/19/858598/353912.terrain b/public/terrain/19/858598/353912.terrain new file mode 100644 index 000000000..a89e4bf23 Binary files /dev/null and b/public/terrain/19/858598/353912.terrain differ diff --git a/public/terrain/19/858598/353913.terrain b/public/terrain/19/858598/353913.terrain new file mode 100644 index 000000000..df04d9408 Binary files /dev/null and b/public/terrain/19/858598/353913.terrain differ diff --git a/public/terrain/19/858598/353914.terrain b/public/terrain/19/858598/353914.terrain new file mode 100644 index 000000000..9e793f3e3 Binary files /dev/null and b/public/terrain/19/858598/353914.terrain differ diff --git a/public/terrain/19/858598/353915.terrain b/public/terrain/19/858598/353915.terrain new file mode 100644 index 000000000..c809cb1ae Binary files /dev/null and b/public/terrain/19/858598/353915.terrain differ diff --git a/public/terrain/19/858598/353916.terrain b/public/terrain/19/858598/353916.terrain new file mode 100644 index 000000000..022e3e8e6 Binary files /dev/null and b/public/terrain/19/858598/353916.terrain differ diff --git a/public/terrain/19/858598/353917.terrain b/public/terrain/19/858598/353917.terrain new file mode 100644 index 000000000..aa1275e44 Binary files /dev/null and b/public/terrain/19/858598/353917.terrain differ diff --git a/public/terrain/19/858598/353918.terrain b/public/terrain/19/858598/353918.terrain new file mode 100644 index 000000000..47b865903 Binary files /dev/null and b/public/terrain/19/858598/353918.terrain differ diff --git a/public/terrain/19/858598/353919.terrain b/public/terrain/19/858598/353919.terrain new file mode 100644 index 000000000..328b60d04 Binary files /dev/null and b/public/terrain/19/858598/353919.terrain differ diff --git a/public/terrain/19/858598/353920.terrain b/public/terrain/19/858598/353920.terrain new file mode 100644 index 000000000..5a86a2e80 Binary files /dev/null and b/public/terrain/19/858598/353920.terrain differ diff --git a/public/terrain/19/858598/353921.terrain b/public/terrain/19/858598/353921.terrain new file mode 100644 index 000000000..f6bb9c914 Binary files /dev/null and b/public/terrain/19/858598/353921.terrain differ diff --git a/public/terrain/19/858598/353922.terrain b/public/terrain/19/858598/353922.terrain new file mode 100644 index 000000000..47341aef4 Binary files /dev/null and b/public/terrain/19/858598/353922.terrain differ diff --git a/public/terrain/19/858598/353923.terrain b/public/terrain/19/858598/353923.terrain new file mode 100644 index 000000000..357e2fb3b Binary files /dev/null and b/public/terrain/19/858598/353923.terrain differ diff --git a/public/terrain/19/858598/353924.terrain b/public/terrain/19/858598/353924.terrain new file mode 100644 index 000000000..3768daae6 Binary files /dev/null and b/public/terrain/19/858598/353924.terrain differ diff --git a/public/terrain/19/858598/353925.terrain b/public/terrain/19/858598/353925.terrain new file mode 100644 index 000000000..d8fa0f5ce Binary files /dev/null and b/public/terrain/19/858598/353925.terrain differ diff --git a/public/terrain/19/858598/353926.terrain b/public/terrain/19/858598/353926.terrain new file mode 100644 index 000000000..b9b2f9fc6 Binary files /dev/null and b/public/terrain/19/858598/353926.terrain differ diff --git a/public/terrain/19/858598/353927.terrain b/public/terrain/19/858598/353927.terrain new file mode 100644 index 000000000..b3301c051 Binary files /dev/null and b/public/terrain/19/858598/353927.terrain differ diff --git a/public/terrain/19/858598/353928.terrain b/public/terrain/19/858598/353928.terrain new file mode 100644 index 000000000..8735f36c9 Binary files /dev/null and b/public/terrain/19/858598/353928.terrain differ diff --git a/public/terrain/19/858598/353929.terrain b/public/terrain/19/858598/353929.terrain new file mode 100644 index 000000000..bb698f8d3 Binary files /dev/null and b/public/terrain/19/858598/353929.terrain differ diff --git a/public/terrain/19/858598/353930.terrain b/public/terrain/19/858598/353930.terrain new file mode 100644 index 000000000..a167a8280 Binary files /dev/null and b/public/terrain/19/858598/353930.terrain differ diff --git a/public/terrain/19/858598/353931.terrain b/public/terrain/19/858598/353931.terrain new file mode 100644 index 000000000..22d1078c7 Binary files /dev/null and b/public/terrain/19/858598/353931.terrain differ diff --git a/public/terrain/19/858598/353932.terrain b/public/terrain/19/858598/353932.terrain new file mode 100644 index 000000000..23fa9043d Binary files /dev/null and b/public/terrain/19/858598/353932.terrain differ diff --git a/public/terrain/19/858598/353933.terrain b/public/terrain/19/858598/353933.terrain new file mode 100644 index 000000000..531c545ef Binary files /dev/null and b/public/terrain/19/858598/353933.terrain differ diff --git a/public/terrain/19/858598/353934.terrain b/public/terrain/19/858598/353934.terrain new file mode 100644 index 000000000..e98f6b4ab Binary files /dev/null and b/public/terrain/19/858598/353934.terrain differ diff --git a/public/terrain/19/858598/353935.terrain b/public/terrain/19/858598/353935.terrain new file mode 100644 index 000000000..dbf78c9ed Binary files /dev/null and b/public/terrain/19/858598/353935.terrain differ diff --git a/public/terrain/19/858598/353936.terrain b/public/terrain/19/858598/353936.terrain new file mode 100644 index 000000000..aca9d9142 Binary files /dev/null and b/public/terrain/19/858598/353936.terrain differ diff --git a/public/terrain/19/858598/353937.terrain b/public/terrain/19/858598/353937.terrain new file mode 100644 index 000000000..fb216100c Binary files /dev/null and b/public/terrain/19/858598/353937.terrain differ diff --git a/public/terrain/19/858598/353938.terrain b/public/terrain/19/858598/353938.terrain new file mode 100644 index 000000000..3f2c2edf7 Binary files /dev/null and b/public/terrain/19/858598/353938.terrain differ diff --git a/public/terrain/19/858598/353939.terrain b/public/terrain/19/858598/353939.terrain new file mode 100644 index 000000000..a033f8a77 Binary files /dev/null and b/public/terrain/19/858598/353939.terrain differ diff --git a/public/terrain/19/858598/353940.terrain b/public/terrain/19/858598/353940.terrain new file mode 100644 index 000000000..6990d3b4c Binary files /dev/null and b/public/terrain/19/858598/353940.terrain differ diff --git a/public/terrain/19/858598/353941.terrain b/public/terrain/19/858598/353941.terrain new file mode 100644 index 000000000..e0a8850b0 Binary files /dev/null and b/public/terrain/19/858598/353941.terrain differ diff --git a/public/terrain/19/858598/353942.terrain b/public/terrain/19/858598/353942.terrain new file mode 100644 index 000000000..3ebcdf456 Binary files /dev/null and b/public/terrain/19/858598/353942.terrain differ diff --git a/public/terrain/19/858598/353943.terrain b/public/terrain/19/858598/353943.terrain new file mode 100644 index 000000000..c91cbd4e2 Binary files /dev/null and b/public/terrain/19/858598/353943.terrain differ diff --git a/public/terrain/19/858598/353944.terrain b/public/terrain/19/858598/353944.terrain new file mode 100644 index 000000000..00146f9e6 Binary files /dev/null and b/public/terrain/19/858598/353944.terrain differ diff --git a/public/terrain/19/858598/353945.terrain b/public/terrain/19/858598/353945.terrain new file mode 100644 index 000000000..b6db360e4 Binary files /dev/null and b/public/terrain/19/858598/353945.terrain differ diff --git a/public/terrain/19/858598/353946.terrain b/public/terrain/19/858598/353946.terrain new file mode 100644 index 000000000..920736514 Binary files /dev/null and b/public/terrain/19/858598/353946.terrain differ diff --git a/public/terrain/19/858598/353947.terrain b/public/terrain/19/858598/353947.terrain new file mode 100644 index 000000000..acb63f6c9 Binary files /dev/null and b/public/terrain/19/858598/353947.terrain differ diff --git a/public/terrain/19/858598/353948.terrain b/public/terrain/19/858598/353948.terrain new file mode 100644 index 000000000..c74b893a6 Binary files /dev/null and b/public/terrain/19/858598/353948.terrain differ diff --git a/public/terrain/19/858598/353949.terrain b/public/terrain/19/858598/353949.terrain new file mode 100644 index 000000000..983171dbc Binary files /dev/null and b/public/terrain/19/858598/353949.terrain differ diff --git a/public/terrain/19/858598/353950.terrain b/public/terrain/19/858598/353950.terrain new file mode 100644 index 000000000..71159fd62 Binary files /dev/null and b/public/terrain/19/858598/353950.terrain differ diff --git a/public/terrain/19/858598/353951.terrain b/public/terrain/19/858598/353951.terrain new file mode 100644 index 000000000..498d6f345 Binary files /dev/null and b/public/terrain/19/858598/353951.terrain differ diff --git a/public/terrain/19/858598/353952.terrain b/public/terrain/19/858598/353952.terrain new file mode 100644 index 000000000..088c901bd Binary files /dev/null and b/public/terrain/19/858598/353952.terrain differ diff --git a/public/terrain/19/858598/353953.terrain b/public/terrain/19/858598/353953.terrain new file mode 100644 index 000000000..5d556c308 Binary files /dev/null and b/public/terrain/19/858598/353953.terrain differ diff --git a/public/terrain/19/858598/353954.terrain b/public/terrain/19/858598/353954.terrain new file mode 100644 index 000000000..d59c9a0df Binary files /dev/null and b/public/terrain/19/858598/353954.terrain differ diff --git a/public/terrain/19/858598/353955.terrain b/public/terrain/19/858598/353955.terrain new file mode 100644 index 000000000..2ca3504df Binary files /dev/null and b/public/terrain/19/858598/353955.terrain differ diff --git a/public/terrain/19/858598/353956.terrain b/public/terrain/19/858598/353956.terrain new file mode 100644 index 000000000..86fc6ffb0 Binary files /dev/null and b/public/terrain/19/858598/353956.terrain differ diff --git a/public/terrain/19/858598/353957.terrain b/public/terrain/19/858598/353957.terrain new file mode 100644 index 000000000..b469b0b5d Binary files /dev/null and b/public/terrain/19/858598/353957.terrain differ diff --git a/public/terrain/19/858598/353958.terrain b/public/terrain/19/858598/353958.terrain new file mode 100644 index 000000000..adbd86eb7 Binary files /dev/null and b/public/terrain/19/858598/353958.terrain differ diff --git a/public/terrain/19/858598/353959.terrain b/public/terrain/19/858598/353959.terrain new file mode 100644 index 000000000..9e01b8fbd Binary files /dev/null and b/public/terrain/19/858598/353959.terrain differ diff --git a/public/terrain/19/858598/353960.terrain b/public/terrain/19/858598/353960.terrain new file mode 100644 index 000000000..9221f2daa Binary files /dev/null and b/public/terrain/19/858598/353960.terrain differ diff --git a/public/terrain/19/858598/353961.terrain b/public/terrain/19/858598/353961.terrain new file mode 100644 index 000000000..4ff16af4a Binary files /dev/null and b/public/terrain/19/858598/353961.terrain differ diff --git a/public/terrain/19/858598/353962.terrain b/public/terrain/19/858598/353962.terrain new file mode 100644 index 000000000..70a048880 Binary files /dev/null and b/public/terrain/19/858598/353962.terrain differ diff --git a/public/terrain/19/858598/353963.terrain b/public/terrain/19/858598/353963.terrain new file mode 100644 index 000000000..cfbf6a369 Binary files /dev/null and b/public/terrain/19/858598/353963.terrain differ diff --git a/public/terrain/19/858598/353964.terrain b/public/terrain/19/858598/353964.terrain new file mode 100644 index 000000000..4ca88d26b Binary files /dev/null and b/public/terrain/19/858598/353964.terrain differ diff --git a/public/terrain/19/858598/353965.terrain b/public/terrain/19/858598/353965.terrain new file mode 100644 index 000000000..d57fbdb5b Binary files /dev/null and b/public/terrain/19/858598/353965.terrain differ diff --git a/public/terrain/19/858598/353966.terrain b/public/terrain/19/858598/353966.terrain new file mode 100644 index 000000000..8c4092ccf Binary files /dev/null and b/public/terrain/19/858598/353966.terrain differ diff --git a/public/terrain/19/858598/353967.terrain b/public/terrain/19/858598/353967.terrain new file mode 100644 index 000000000..7ccd59a30 Binary files /dev/null and b/public/terrain/19/858598/353967.terrain differ diff --git a/public/terrain/19/858598/353968.terrain b/public/terrain/19/858598/353968.terrain new file mode 100644 index 000000000..19ddeceaf Binary files /dev/null and b/public/terrain/19/858598/353968.terrain differ diff --git a/public/terrain/19/858598/353969.terrain b/public/terrain/19/858598/353969.terrain new file mode 100644 index 000000000..12258f68d Binary files /dev/null and b/public/terrain/19/858598/353969.terrain differ diff --git a/public/terrain/19/858598/353970.terrain b/public/terrain/19/858598/353970.terrain new file mode 100644 index 000000000..546317c6f Binary files /dev/null and b/public/terrain/19/858598/353970.terrain differ diff --git a/public/terrain/19/858598/353971.terrain b/public/terrain/19/858598/353971.terrain new file mode 100644 index 000000000..1fad8153f Binary files /dev/null and b/public/terrain/19/858598/353971.terrain differ diff --git a/public/terrain/19/858598/353972.terrain b/public/terrain/19/858598/353972.terrain new file mode 100644 index 000000000..f8fce874e Binary files /dev/null and b/public/terrain/19/858598/353972.terrain differ diff --git a/public/terrain/19/858598/353973.terrain b/public/terrain/19/858598/353973.terrain new file mode 100644 index 000000000..d8ac6e004 Binary files /dev/null and b/public/terrain/19/858598/353973.terrain differ diff --git a/public/terrain/19/858598/353974.terrain b/public/terrain/19/858598/353974.terrain new file mode 100644 index 000000000..79b6f8acd Binary files /dev/null and b/public/terrain/19/858598/353974.terrain differ diff --git a/public/terrain/19/858598/353975.terrain b/public/terrain/19/858598/353975.terrain new file mode 100644 index 000000000..06aaad72f Binary files /dev/null and b/public/terrain/19/858598/353975.terrain differ diff --git a/public/terrain/19/858598/353976.terrain b/public/terrain/19/858598/353976.terrain new file mode 100644 index 000000000..c397be3b0 Binary files /dev/null and b/public/terrain/19/858598/353976.terrain differ diff --git a/public/terrain/19/858598/353977.terrain b/public/terrain/19/858598/353977.terrain new file mode 100644 index 000000000..30bb6c906 Binary files /dev/null and b/public/terrain/19/858598/353977.terrain differ diff --git a/public/terrain/19/858598/353978.terrain b/public/terrain/19/858598/353978.terrain new file mode 100644 index 000000000..01dab1f98 Binary files /dev/null and b/public/terrain/19/858598/353978.terrain differ diff --git a/public/terrain/19/858598/353979.terrain b/public/terrain/19/858598/353979.terrain new file mode 100644 index 000000000..955b9cba5 Binary files /dev/null and b/public/terrain/19/858598/353979.terrain differ diff --git a/public/terrain/19/858598/353980.terrain b/public/terrain/19/858598/353980.terrain new file mode 100644 index 000000000..74dea1c9f Binary files /dev/null and b/public/terrain/19/858598/353980.terrain differ diff --git a/public/terrain/19/858598/353981.terrain b/public/terrain/19/858598/353981.terrain new file mode 100644 index 000000000..bd95f9af3 Binary files /dev/null and b/public/terrain/19/858598/353981.terrain differ diff --git a/public/terrain/19/858598/353982.terrain b/public/terrain/19/858598/353982.terrain new file mode 100644 index 000000000..02c9d60e9 Binary files /dev/null and b/public/terrain/19/858598/353982.terrain differ diff --git a/public/terrain/19/858598/353983.terrain b/public/terrain/19/858598/353983.terrain new file mode 100644 index 000000000..5a92a6bad Binary files /dev/null and b/public/terrain/19/858598/353983.terrain differ diff --git a/public/terrain/19/858598/353984.terrain b/public/terrain/19/858598/353984.terrain new file mode 100644 index 000000000..f06c9b4b9 Binary files /dev/null and b/public/terrain/19/858598/353984.terrain differ diff --git a/public/terrain/19/858598/353985.terrain b/public/terrain/19/858598/353985.terrain new file mode 100644 index 000000000..8cf7f54f1 Binary files /dev/null and b/public/terrain/19/858598/353985.terrain differ diff --git a/public/terrain/19/858598/353986.terrain b/public/terrain/19/858598/353986.terrain new file mode 100644 index 000000000..4f6a0ee74 Binary files /dev/null and b/public/terrain/19/858598/353986.terrain differ diff --git a/public/terrain/19/858598/353987.terrain b/public/terrain/19/858598/353987.terrain new file mode 100644 index 000000000..2141ab458 Binary files /dev/null and b/public/terrain/19/858598/353987.terrain differ diff --git a/public/terrain/19/858598/353988.terrain b/public/terrain/19/858598/353988.terrain new file mode 100644 index 000000000..098e70cae Binary files /dev/null and b/public/terrain/19/858598/353988.terrain differ diff --git a/public/terrain/19/858598/353989.terrain b/public/terrain/19/858598/353989.terrain new file mode 100644 index 000000000..6e4323aa8 Binary files /dev/null and b/public/terrain/19/858598/353989.terrain differ diff --git a/public/terrain/19/858598/353990.terrain b/public/terrain/19/858598/353990.terrain new file mode 100644 index 000000000..d69fb3a25 Binary files /dev/null and b/public/terrain/19/858598/353990.terrain differ diff --git a/public/terrain/19/858598/353991.terrain b/public/terrain/19/858598/353991.terrain new file mode 100644 index 000000000..5f4c95f93 Binary files /dev/null and b/public/terrain/19/858598/353991.terrain differ diff --git a/public/terrain/19/858598/353992.terrain b/public/terrain/19/858598/353992.terrain new file mode 100644 index 000000000..86e484abd Binary files /dev/null and b/public/terrain/19/858598/353992.terrain differ diff --git a/public/terrain/19/858598/353993.terrain b/public/terrain/19/858598/353993.terrain new file mode 100644 index 000000000..c9e81aba0 Binary files /dev/null and b/public/terrain/19/858598/353993.terrain differ diff --git a/public/terrain/19/858598/353994.terrain b/public/terrain/19/858598/353994.terrain new file mode 100644 index 000000000..d1d9de61f Binary files /dev/null and b/public/terrain/19/858598/353994.terrain differ diff --git a/public/terrain/19/858598/353995.terrain b/public/terrain/19/858598/353995.terrain new file mode 100644 index 000000000..4639240fe Binary files /dev/null and b/public/terrain/19/858598/353995.terrain differ diff --git a/public/terrain/19/858598/353996.terrain b/public/terrain/19/858598/353996.terrain new file mode 100644 index 000000000..5b08b74dc Binary files /dev/null and b/public/terrain/19/858598/353996.terrain differ diff --git a/public/terrain/19/858598/353997.terrain b/public/terrain/19/858598/353997.terrain new file mode 100644 index 000000000..a7db16d78 Binary files /dev/null and b/public/terrain/19/858598/353997.terrain differ diff --git a/public/terrain/19/858598/353998.terrain b/public/terrain/19/858598/353998.terrain new file mode 100644 index 000000000..324b4416e Binary files /dev/null and b/public/terrain/19/858598/353998.terrain differ diff --git a/public/terrain/19/858598/353999.terrain b/public/terrain/19/858598/353999.terrain new file mode 100644 index 000000000..20435faa6 Binary files /dev/null and b/public/terrain/19/858598/353999.terrain differ diff --git a/public/terrain/19/858598/354000.terrain b/public/terrain/19/858598/354000.terrain new file mode 100644 index 000000000..c3a9a5e7e Binary files /dev/null and b/public/terrain/19/858598/354000.terrain differ diff --git a/public/terrain/19/858598/354001.terrain b/public/terrain/19/858598/354001.terrain new file mode 100644 index 000000000..7b31cbd55 Binary files /dev/null and b/public/terrain/19/858598/354001.terrain differ diff --git a/public/terrain/19/858598/354002.terrain b/public/terrain/19/858598/354002.terrain new file mode 100644 index 000000000..2a5945f00 Binary files /dev/null and b/public/terrain/19/858598/354002.terrain differ diff --git a/public/terrain/19/858598/354003.terrain b/public/terrain/19/858598/354003.terrain new file mode 100644 index 000000000..aa29fe489 Binary files /dev/null and b/public/terrain/19/858598/354003.terrain differ diff --git a/public/terrain/19/858598/354004.terrain b/public/terrain/19/858598/354004.terrain new file mode 100644 index 000000000..b74379a22 Binary files /dev/null and b/public/terrain/19/858598/354004.terrain differ diff --git a/public/terrain/19/858598/354005.terrain b/public/terrain/19/858598/354005.terrain new file mode 100644 index 000000000..6e02503ed Binary files /dev/null and b/public/terrain/19/858598/354005.terrain differ diff --git a/public/terrain/19/858598/354006.terrain b/public/terrain/19/858598/354006.terrain new file mode 100644 index 000000000..eda93e7bf Binary files /dev/null and b/public/terrain/19/858598/354006.terrain differ diff --git a/public/terrain/19/858598/354007.terrain b/public/terrain/19/858598/354007.terrain new file mode 100644 index 000000000..79200c6e2 Binary files /dev/null and b/public/terrain/19/858598/354007.terrain differ diff --git a/public/terrain/19/858598/354008.terrain b/public/terrain/19/858598/354008.terrain new file mode 100644 index 000000000..484024de3 Binary files /dev/null and b/public/terrain/19/858598/354008.terrain differ diff --git a/public/terrain/19/858598/354009.terrain b/public/terrain/19/858598/354009.terrain new file mode 100644 index 000000000..fd292a41a Binary files /dev/null and b/public/terrain/19/858598/354009.terrain differ diff --git a/public/terrain/19/858598/354010.terrain b/public/terrain/19/858598/354010.terrain new file mode 100644 index 000000000..3bb1c87b8 Binary files /dev/null and b/public/terrain/19/858598/354010.terrain differ diff --git a/public/terrain/19/858598/354011.terrain b/public/terrain/19/858598/354011.terrain new file mode 100644 index 000000000..e1b732c2f Binary files /dev/null and b/public/terrain/19/858598/354011.terrain differ diff --git a/public/terrain/19/858598/354012.terrain b/public/terrain/19/858598/354012.terrain new file mode 100644 index 000000000..6c655756e Binary files /dev/null and b/public/terrain/19/858598/354012.terrain differ diff --git a/public/terrain/19/858598/354013.terrain b/public/terrain/19/858598/354013.terrain new file mode 100644 index 000000000..54b9973bf Binary files /dev/null and b/public/terrain/19/858598/354013.terrain differ diff --git a/public/terrain/19/858598/354014.terrain b/public/terrain/19/858598/354014.terrain new file mode 100644 index 000000000..a0e325b45 Binary files /dev/null and b/public/terrain/19/858598/354014.terrain differ diff --git a/public/terrain/19/858598/354015.terrain b/public/terrain/19/858598/354015.terrain new file mode 100644 index 000000000..f882ff899 Binary files /dev/null and b/public/terrain/19/858598/354015.terrain differ diff --git a/public/terrain/19/858598/354016.terrain b/public/terrain/19/858598/354016.terrain new file mode 100644 index 000000000..85911889e Binary files /dev/null and b/public/terrain/19/858598/354016.terrain differ diff --git a/public/terrain/19/858598/354017.terrain b/public/terrain/19/858598/354017.terrain new file mode 100644 index 000000000..f1d83adc0 Binary files /dev/null and b/public/terrain/19/858598/354017.terrain differ diff --git a/public/terrain/19/858598/354018.terrain b/public/terrain/19/858598/354018.terrain new file mode 100644 index 000000000..4911a89e3 Binary files /dev/null and b/public/terrain/19/858598/354018.terrain differ diff --git a/public/terrain/19/858598/354019.terrain b/public/terrain/19/858598/354019.terrain new file mode 100644 index 000000000..75bb5756b Binary files /dev/null and b/public/terrain/19/858598/354019.terrain differ diff --git a/public/terrain/19/858598/354020.terrain b/public/terrain/19/858598/354020.terrain new file mode 100644 index 000000000..5cb34c674 Binary files /dev/null and b/public/terrain/19/858598/354020.terrain differ diff --git a/public/terrain/19/858598/354021.terrain b/public/terrain/19/858598/354021.terrain new file mode 100644 index 000000000..0bce1b4ed Binary files /dev/null and b/public/terrain/19/858598/354021.terrain differ diff --git a/public/terrain/19/858598/354022.terrain b/public/terrain/19/858598/354022.terrain new file mode 100644 index 000000000..e6f5f2465 Binary files /dev/null and b/public/terrain/19/858598/354022.terrain differ diff --git a/public/terrain/19/858598/354023.terrain b/public/terrain/19/858598/354023.terrain new file mode 100644 index 000000000..0e5bbf809 Binary files /dev/null and b/public/terrain/19/858598/354023.terrain differ diff --git a/public/terrain/19/858598/354024.terrain b/public/terrain/19/858598/354024.terrain new file mode 100644 index 000000000..5320b5f69 Binary files /dev/null and b/public/terrain/19/858598/354024.terrain differ diff --git a/public/terrain/19/858598/354025.terrain b/public/terrain/19/858598/354025.terrain new file mode 100644 index 000000000..bbb46ffb6 Binary files /dev/null and b/public/terrain/19/858598/354025.terrain differ diff --git a/public/terrain/19/858598/354026.terrain b/public/terrain/19/858598/354026.terrain new file mode 100644 index 000000000..be13d816c Binary files /dev/null and b/public/terrain/19/858598/354026.terrain differ diff --git a/public/terrain/19/858598/354027.terrain b/public/terrain/19/858598/354027.terrain new file mode 100644 index 000000000..f6ae40a13 Binary files /dev/null and b/public/terrain/19/858598/354027.terrain differ diff --git a/public/terrain/19/858598/354028.terrain b/public/terrain/19/858598/354028.terrain new file mode 100644 index 000000000..15190bbb9 Binary files /dev/null and b/public/terrain/19/858598/354028.terrain differ diff --git a/public/terrain/19/858598/354029.terrain b/public/terrain/19/858598/354029.terrain new file mode 100644 index 000000000..64a079968 Binary files /dev/null and b/public/terrain/19/858598/354029.terrain differ diff --git a/public/terrain/19/858598/354030.terrain b/public/terrain/19/858598/354030.terrain new file mode 100644 index 000000000..09b14d689 Binary files /dev/null and b/public/terrain/19/858598/354030.terrain differ diff --git a/public/terrain/19/858598/354031.terrain b/public/terrain/19/858598/354031.terrain new file mode 100644 index 000000000..ff1e12ddd Binary files /dev/null and b/public/terrain/19/858598/354031.terrain differ diff --git a/public/terrain/19/858598/354032.terrain b/public/terrain/19/858598/354032.terrain new file mode 100644 index 000000000..d65fd29f5 Binary files /dev/null and b/public/terrain/19/858598/354032.terrain differ diff --git a/public/terrain/19/858598/354033.terrain b/public/terrain/19/858598/354033.terrain new file mode 100644 index 000000000..efad94071 Binary files /dev/null and b/public/terrain/19/858598/354033.terrain differ diff --git a/public/terrain/19/858598/354034.terrain b/public/terrain/19/858598/354034.terrain new file mode 100644 index 000000000..e6d74a8c2 Binary files /dev/null and b/public/terrain/19/858598/354034.terrain differ diff --git a/public/terrain/19/858598/354035.terrain b/public/terrain/19/858598/354035.terrain new file mode 100644 index 000000000..43d1acc2e Binary files /dev/null and b/public/terrain/19/858598/354035.terrain differ diff --git a/public/terrain/19/858598/354036.terrain b/public/terrain/19/858598/354036.terrain new file mode 100644 index 000000000..959b0f3a5 Binary files /dev/null and b/public/terrain/19/858598/354036.terrain differ diff --git a/public/terrain/19/858598/354037.terrain b/public/terrain/19/858598/354037.terrain new file mode 100644 index 000000000..278082fb9 Binary files /dev/null and b/public/terrain/19/858598/354037.terrain differ diff --git a/public/terrain/19/858598/354038.terrain b/public/terrain/19/858598/354038.terrain new file mode 100644 index 000000000..da5b31bc8 Binary files /dev/null and b/public/terrain/19/858598/354038.terrain differ diff --git a/public/terrain/19/858598/354039.terrain b/public/terrain/19/858598/354039.terrain new file mode 100644 index 000000000..22645a027 Binary files /dev/null and b/public/terrain/19/858598/354039.terrain differ diff --git a/public/terrain/19/858598/354040.terrain b/public/terrain/19/858598/354040.terrain new file mode 100644 index 000000000..6686084ee Binary files /dev/null and b/public/terrain/19/858598/354040.terrain differ diff --git a/public/terrain/19/858598/354041.terrain b/public/terrain/19/858598/354041.terrain new file mode 100644 index 000000000..1e4a9f621 Binary files /dev/null and b/public/terrain/19/858598/354041.terrain differ diff --git a/public/terrain/19/858598/354042.terrain b/public/terrain/19/858598/354042.terrain new file mode 100644 index 000000000..fc7d45376 Binary files /dev/null and b/public/terrain/19/858598/354042.terrain differ diff --git a/public/terrain/19/858598/354043.terrain b/public/terrain/19/858598/354043.terrain new file mode 100644 index 000000000..a4e5b87eb Binary files /dev/null and b/public/terrain/19/858598/354043.terrain differ diff --git a/public/terrain/19/858598/354044.terrain b/public/terrain/19/858598/354044.terrain new file mode 100644 index 000000000..ab9d084d3 Binary files /dev/null and b/public/terrain/19/858598/354044.terrain differ diff --git a/public/terrain/19/858598/354045.terrain b/public/terrain/19/858598/354045.terrain new file mode 100644 index 000000000..8d85c064d Binary files /dev/null and b/public/terrain/19/858598/354045.terrain differ diff --git a/public/terrain/19/858598/354046.terrain b/public/terrain/19/858598/354046.terrain new file mode 100644 index 000000000..10a9b6ac3 Binary files /dev/null and b/public/terrain/19/858598/354046.terrain differ diff --git a/public/terrain/19/858598/354047.terrain b/public/terrain/19/858598/354047.terrain new file mode 100644 index 000000000..a40c4d8cd Binary files /dev/null and b/public/terrain/19/858598/354047.terrain differ diff --git a/public/terrain/19/858598/354048.terrain b/public/terrain/19/858598/354048.terrain new file mode 100644 index 000000000..8624aa59b Binary files /dev/null and b/public/terrain/19/858598/354048.terrain differ diff --git a/public/terrain/19/858598/354049.terrain b/public/terrain/19/858598/354049.terrain new file mode 100644 index 000000000..7d6d21100 Binary files /dev/null and b/public/terrain/19/858598/354049.terrain differ diff --git a/public/terrain/19/858598/354050.terrain b/public/terrain/19/858598/354050.terrain new file mode 100644 index 000000000..6dcacb935 Binary files /dev/null and b/public/terrain/19/858598/354050.terrain differ diff --git a/public/terrain/19/858598/354051.terrain b/public/terrain/19/858598/354051.terrain new file mode 100644 index 000000000..b9cb7e5fd Binary files /dev/null and b/public/terrain/19/858598/354051.terrain differ diff --git a/public/terrain/19/858598/354052.terrain b/public/terrain/19/858598/354052.terrain new file mode 100644 index 000000000..517e2e882 Binary files /dev/null and b/public/terrain/19/858598/354052.terrain differ diff --git a/public/terrain/19/858598/354053.terrain b/public/terrain/19/858598/354053.terrain new file mode 100644 index 000000000..8489b3a9a Binary files /dev/null and b/public/terrain/19/858598/354053.terrain differ diff --git a/public/terrain/19/858598/354054.terrain b/public/terrain/19/858598/354054.terrain new file mode 100644 index 000000000..f37b89d29 Binary files /dev/null and b/public/terrain/19/858598/354054.terrain differ diff --git a/public/terrain/19/858598/354055.terrain b/public/terrain/19/858598/354055.terrain new file mode 100644 index 000000000..acdaff190 Binary files /dev/null and b/public/terrain/19/858598/354055.terrain differ diff --git a/public/terrain/19/858598/354056.terrain b/public/terrain/19/858598/354056.terrain new file mode 100644 index 000000000..ddc638aaa Binary files /dev/null and b/public/terrain/19/858598/354056.terrain differ diff --git a/public/terrain/19/858598/354057.terrain b/public/terrain/19/858598/354057.terrain new file mode 100644 index 000000000..834dae418 Binary files /dev/null and b/public/terrain/19/858598/354057.terrain differ diff --git a/public/terrain/19/858598/354058.terrain b/public/terrain/19/858598/354058.terrain new file mode 100644 index 000000000..417ed8198 Binary files /dev/null and b/public/terrain/19/858598/354058.terrain differ diff --git a/public/terrain/19/858598/354059.terrain b/public/terrain/19/858598/354059.terrain new file mode 100644 index 000000000..85bcf279e Binary files /dev/null and b/public/terrain/19/858598/354059.terrain differ diff --git a/public/terrain/19/858599/353743.terrain b/public/terrain/19/858599/353743.terrain new file mode 100644 index 000000000..6baebfdb7 Binary files /dev/null and b/public/terrain/19/858599/353743.terrain differ diff --git a/public/terrain/19/858599/353744.terrain b/public/terrain/19/858599/353744.terrain new file mode 100644 index 000000000..d712e784a Binary files /dev/null and b/public/terrain/19/858599/353744.terrain differ diff --git a/public/terrain/19/858599/353745.terrain b/public/terrain/19/858599/353745.terrain new file mode 100644 index 000000000..89990c7da Binary files /dev/null and b/public/terrain/19/858599/353745.terrain differ diff --git a/public/terrain/19/858599/353746.terrain b/public/terrain/19/858599/353746.terrain new file mode 100644 index 000000000..53b1df575 Binary files /dev/null and b/public/terrain/19/858599/353746.terrain differ diff --git a/public/terrain/19/858599/353747.terrain b/public/terrain/19/858599/353747.terrain new file mode 100644 index 000000000..7fc69df47 Binary files /dev/null and b/public/terrain/19/858599/353747.terrain differ diff --git a/public/terrain/19/858599/353748.terrain b/public/terrain/19/858599/353748.terrain new file mode 100644 index 000000000..aa0652e6f Binary files /dev/null and b/public/terrain/19/858599/353748.terrain differ diff --git a/public/terrain/19/858599/353749.terrain b/public/terrain/19/858599/353749.terrain new file mode 100644 index 000000000..c7e2ab608 Binary files /dev/null and b/public/terrain/19/858599/353749.terrain differ diff --git a/public/terrain/19/858599/353750.terrain b/public/terrain/19/858599/353750.terrain new file mode 100644 index 000000000..40940cdfb Binary files /dev/null and b/public/terrain/19/858599/353750.terrain differ diff --git a/public/terrain/19/858599/353751.terrain b/public/terrain/19/858599/353751.terrain new file mode 100644 index 000000000..926516c82 Binary files /dev/null and b/public/terrain/19/858599/353751.terrain differ diff --git a/public/terrain/19/858599/353752.terrain b/public/terrain/19/858599/353752.terrain new file mode 100644 index 000000000..3f98c84da Binary files /dev/null and b/public/terrain/19/858599/353752.terrain differ diff --git a/public/terrain/19/858599/353753.terrain b/public/terrain/19/858599/353753.terrain new file mode 100644 index 000000000..2cc2db250 Binary files /dev/null and b/public/terrain/19/858599/353753.terrain differ diff --git a/public/terrain/19/858599/353754.terrain b/public/terrain/19/858599/353754.terrain new file mode 100644 index 000000000..e86fff080 Binary files /dev/null and b/public/terrain/19/858599/353754.terrain differ diff --git a/public/terrain/19/858599/353755.terrain b/public/terrain/19/858599/353755.terrain new file mode 100644 index 000000000..0c4850718 Binary files /dev/null and b/public/terrain/19/858599/353755.terrain differ diff --git a/public/terrain/19/858599/353756.terrain b/public/terrain/19/858599/353756.terrain new file mode 100644 index 000000000..46bb3cd49 Binary files /dev/null and b/public/terrain/19/858599/353756.terrain differ diff --git a/public/terrain/19/858599/353757.terrain b/public/terrain/19/858599/353757.terrain new file mode 100644 index 000000000..f4b6b24dc Binary files /dev/null and b/public/terrain/19/858599/353757.terrain differ diff --git a/public/terrain/19/858599/353758.terrain b/public/terrain/19/858599/353758.terrain new file mode 100644 index 000000000..893ef4752 Binary files /dev/null and b/public/terrain/19/858599/353758.terrain differ diff --git a/public/terrain/19/858599/353759.terrain b/public/terrain/19/858599/353759.terrain new file mode 100644 index 000000000..9a0a1e940 Binary files /dev/null and b/public/terrain/19/858599/353759.terrain differ diff --git a/public/terrain/19/858599/353760.terrain b/public/terrain/19/858599/353760.terrain new file mode 100644 index 000000000..5ba45e3e4 Binary files /dev/null and b/public/terrain/19/858599/353760.terrain differ diff --git a/public/terrain/19/858599/353761.terrain b/public/terrain/19/858599/353761.terrain new file mode 100644 index 000000000..1a3d12bc1 Binary files /dev/null and b/public/terrain/19/858599/353761.terrain differ diff --git a/public/terrain/19/858599/353762.terrain b/public/terrain/19/858599/353762.terrain new file mode 100644 index 000000000..cce921c69 Binary files /dev/null and b/public/terrain/19/858599/353762.terrain differ diff --git a/public/terrain/19/858599/353763.terrain b/public/terrain/19/858599/353763.terrain new file mode 100644 index 000000000..133caf728 Binary files /dev/null and b/public/terrain/19/858599/353763.terrain differ diff --git a/public/terrain/19/858599/353764.terrain b/public/terrain/19/858599/353764.terrain new file mode 100644 index 000000000..08a5d1060 Binary files /dev/null and b/public/terrain/19/858599/353764.terrain differ diff --git a/public/terrain/19/858599/353765.terrain b/public/terrain/19/858599/353765.terrain new file mode 100644 index 000000000..98a3a588c Binary files /dev/null and b/public/terrain/19/858599/353765.terrain differ diff --git a/public/terrain/19/858599/353766.terrain b/public/terrain/19/858599/353766.terrain new file mode 100644 index 000000000..52404083a Binary files /dev/null and b/public/terrain/19/858599/353766.terrain differ diff --git a/public/terrain/19/858599/353767.terrain b/public/terrain/19/858599/353767.terrain new file mode 100644 index 000000000..c7bc467d3 Binary files /dev/null and b/public/terrain/19/858599/353767.terrain differ diff --git a/public/terrain/19/858599/353768.terrain b/public/terrain/19/858599/353768.terrain new file mode 100644 index 000000000..723e25093 Binary files /dev/null and b/public/terrain/19/858599/353768.terrain differ diff --git a/public/terrain/19/858599/353769.terrain b/public/terrain/19/858599/353769.terrain new file mode 100644 index 000000000..18f8aaa66 Binary files /dev/null and b/public/terrain/19/858599/353769.terrain differ diff --git a/public/terrain/19/858599/353770.terrain b/public/terrain/19/858599/353770.terrain new file mode 100644 index 000000000..e04d53214 Binary files /dev/null and b/public/terrain/19/858599/353770.terrain differ diff --git a/public/terrain/19/858599/353771.terrain b/public/terrain/19/858599/353771.terrain new file mode 100644 index 000000000..3e7d1c7b1 Binary files /dev/null and b/public/terrain/19/858599/353771.terrain differ diff --git a/public/terrain/19/858599/353772.terrain b/public/terrain/19/858599/353772.terrain new file mode 100644 index 000000000..12a6a62f3 Binary files /dev/null and b/public/terrain/19/858599/353772.terrain differ diff --git a/public/terrain/19/858599/353773.terrain b/public/terrain/19/858599/353773.terrain new file mode 100644 index 000000000..635cc338b Binary files /dev/null and b/public/terrain/19/858599/353773.terrain differ diff --git a/public/terrain/19/858599/353774.terrain b/public/terrain/19/858599/353774.terrain new file mode 100644 index 000000000..c8723a12b Binary files /dev/null and b/public/terrain/19/858599/353774.terrain differ diff --git a/public/terrain/19/858599/353775.terrain b/public/terrain/19/858599/353775.terrain new file mode 100644 index 000000000..1d29d4976 Binary files /dev/null and b/public/terrain/19/858599/353775.terrain differ diff --git a/public/terrain/19/858599/353776.terrain b/public/terrain/19/858599/353776.terrain new file mode 100644 index 000000000..5322a4a3f Binary files /dev/null and b/public/terrain/19/858599/353776.terrain differ diff --git a/public/terrain/19/858599/353777.terrain b/public/terrain/19/858599/353777.terrain new file mode 100644 index 000000000..7dce8bf59 Binary files /dev/null and b/public/terrain/19/858599/353777.terrain differ diff --git a/public/terrain/19/858599/353778.terrain b/public/terrain/19/858599/353778.terrain new file mode 100644 index 000000000..2454dc19f Binary files /dev/null and b/public/terrain/19/858599/353778.terrain differ diff --git a/public/terrain/19/858599/353779.terrain b/public/terrain/19/858599/353779.terrain new file mode 100644 index 000000000..8753b8004 Binary files /dev/null and b/public/terrain/19/858599/353779.terrain differ diff --git a/public/terrain/19/858599/353780.terrain b/public/terrain/19/858599/353780.terrain new file mode 100644 index 000000000..7de6f26ca Binary files /dev/null and b/public/terrain/19/858599/353780.terrain differ diff --git a/public/terrain/19/858599/353781.terrain b/public/terrain/19/858599/353781.terrain new file mode 100644 index 000000000..9ab945ed7 Binary files /dev/null and b/public/terrain/19/858599/353781.terrain differ diff --git a/public/terrain/19/858599/353782.terrain b/public/terrain/19/858599/353782.terrain new file mode 100644 index 000000000..94d123d8f Binary files /dev/null and b/public/terrain/19/858599/353782.terrain differ diff --git a/public/terrain/19/858599/353783.terrain b/public/terrain/19/858599/353783.terrain new file mode 100644 index 000000000..45460c33c Binary files /dev/null and b/public/terrain/19/858599/353783.terrain differ diff --git a/public/terrain/19/858599/353784.terrain b/public/terrain/19/858599/353784.terrain new file mode 100644 index 000000000..4270ebd3a Binary files /dev/null and b/public/terrain/19/858599/353784.terrain differ diff --git a/public/terrain/19/858599/353785.terrain b/public/terrain/19/858599/353785.terrain new file mode 100644 index 000000000..05d3a068b Binary files /dev/null and b/public/terrain/19/858599/353785.terrain differ diff --git a/public/terrain/19/858599/353786.terrain b/public/terrain/19/858599/353786.terrain new file mode 100644 index 000000000..c1a573148 Binary files /dev/null and b/public/terrain/19/858599/353786.terrain differ diff --git a/public/terrain/19/858599/353787.terrain b/public/terrain/19/858599/353787.terrain new file mode 100644 index 000000000..9809ee58e Binary files /dev/null and b/public/terrain/19/858599/353787.terrain differ diff --git a/public/terrain/19/858599/353788.terrain b/public/terrain/19/858599/353788.terrain new file mode 100644 index 000000000..15311c918 Binary files /dev/null and b/public/terrain/19/858599/353788.terrain differ diff --git a/public/terrain/19/858599/353789.terrain b/public/terrain/19/858599/353789.terrain new file mode 100644 index 000000000..ea6c62e30 Binary files /dev/null and b/public/terrain/19/858599/353789.terrain differ diff --git a/public/terrain/19/858599/353790.terrain b/public/terrain/19/858599/353790.terrain new file mode 100644 index 000000000..4a7e449c4 Binary files /dev/null and b/public/terrain/19/858599/353790.terrain differ diff --git a/public/terrain/19/858599/353791.terrain b/public/terrain/19/858599/353791.terrain new file mode 100644 index 000000000..2d59e149c Binary files /dev/null and b/public/terrain/19/858599/353791.terrain differ diff --git a/public/terrain/19/858599/353792.terrain b/public/terrain/19/858599/353792.terrain new file mode 100644 index 000000000..1ddc97f8c Binary files /dev/null and b/public/terrain/19/858599/353792.terrain differ diff --git a/public/terrain/19/858599/353793.terrain b/public/terrain/19/858599/353793.terrain new file mode 100644 index 000000000..b44ee8f97 Binary files /dev/null and b/public/terrain/19/858599/353793.terrain differ diff --git a/public/terrain/19/858599/353794.terrain b/public/terrain/19/858599/353794.terrain new file mode 100644 index 000000000..ff41e6b9f Binary files /dev/null and b/public/terrain/19/858599/353794.terrain differ diff --git a/public/terrain/19/858599/353795.terrain b/public/terrain/19/858599/353795.terrain new file mode 100644 index 000000000..fa4150adb Binary files /dev/null and b/public/terrain/19/858599/353795.terrain differ diff --git a/public/terrain/19/858599/353796.terrain b/public/terrain/19/858599/353796.terrain new file mode 100644 index 000000000..0c7442af0 Binary files /dev/null and b/public/terrain/19/858599/353796.terrain differ diff --git a/public/terrain/19/858599/353797.terrain b/public/terrain/19/858599/353797.terrain new file mode 100644 index 000000000..e21c71f6a Binary files /dev/null and b/public/terrain/19/858599/353797.terrain differ diff --git a/public/terrain/19/858599/353798.terrain b/public/terrain/19/858599/353798.terrain new file mode 100644 index 000000000..d0120c073 Binary files /dev/null and b/public/terrain/19/858599/353798.terrain differ diff --git a/public/terrain/19/858599/353799.terrain b/public/terrain/19/858599/353799.terrain new file mode 100644 index 000000000..b180171a7 Binary files /dev/null and b/public/terrain/19/858599/353799.terrain differ diff --git a/public/terrain/19/858599/353800.terrain b/public/terrain/19/858599/353800.terrain new file mode 100644 index 000000000..362c73b81 Binary files /dev/null and b/public/terrain/19/858599/353800.terrain differ diff --git a/public/terrain/19/858599/353801.terrain b/public/terrain/19/858599/353801.terrain new file mode 100644 index 000000000..f8ca5713e Binary files /dev/null and b/public/terrain/19/858599/353801.terrain differ diff --git a/public/terrain/19/858599/353802.terrain b/public/terrain/19/858599/353802.terrain new file mode 100644 index 000000000..be2ff4968 Binary files /dev/null and b/public/terrain/19/858599/353802.terrain differ diff --git a/public/terrain/19/858599/353803.terrain b/public/terrain/19/858599/353803.terrain new file mode 100644 index 000000000..f1f4d4d10 Binary files /dev/null and b/public/terrain/19/858599/353803.terrain differ diff --git a/public/terrain/19/858599/353804.terrain b/public/terrain/19/858599/353804.terrain new file mode 100644 index 000000000..88482d150 Binary files /dev/null and b/public/terrain/19/858599/353804.terrain differ diff --git a/public/terrain/19/858599/353805.terrain b/public/terrain/19/858599/353805.terrain new file mode 100644 index 000000000..117c729f2 Binary files /dev/null and b/public/terrain/19/858599/353805.terrain differ diff --git a/public/terrain/19/858599/353806.terrain b/public/terrain/19/858599/353806.terrain new file mode 100644 index 000000000..d53c9dd74 Binary files /dev/null and b/public/terrain/19/858599/353806.terrain differ diff --git a/public/terrain/19/858599/353807.terrain b/public/terrain/19/858599/353807.terrain new file mode 100644 index 000000000..cc8db3c8e Binary files /dev/null and b/public/terrain/19/858599/353807.terrain differ diff --git a/public/terrain/19/858599/353808.terrain b/public/terrain/19/858599/353808.terrain new file mode 100644 index 000000000..ceb8d894d Binary files /dev/null and b/public/terrain/19/858599/353808.terrain differ diff --git a/public/terrain/19/858599/353809.terrain b/public/terrain/19/858599/353809.terrain new file mode 100644 index 000000000..b6e110e11 Binary files /dev/null and b/public/terrain/19/858599/353809.terrain differ diff --git a/public/terrain/19/858599/353810.terrain b/public/terrain/19/858599/353810.terrain new file mode 100644 index 000000000..7214415b6 Binary files /dev/null and b/public/terrain/19/858599/353810.terrain differ diff --git a/public/terrain/19/858599/353811.terrain b/public/terrain/19/858599/353811.terrain new file mode 100644 index 000000000..9306f958d Binary files /dev/null and b/public/terrain/19/858599/353811.terrain differ diff --git a/public/terrain/19/858599/353812.terrain b/public/terrain/19/858599/353812.terrain new file mode 100644 index 000000000..c9f1cb23b Binary files /dev/null and b/public/terrain/19/858599/353812.terrain differ diff --git a/public/terrain/19/858599/353813.terrain b/public/terrain/19/858599/353813.terrain new file mode 100644 index 000000000..37045d71a Binary files /dev/null and b/public/terrain/19/858599/353813.terrain differ diff --git a/public/terrain/19/858599/353814.terrain b/public/terrain/19/858599/353814.terrain new file mode 100644 index 000000000..fd1608470 Binary files /dev/null and b/public/terrain/19/858599/353814.terrain differ diff --git a/public/terrain/19/858599/353815.terrain b/public/terrain/19/858599/353815.terrain new file mode 100644 index 000000000..739d4539d Binary files /dev/null and b/public/terrain/19/858599/353815.terrain differ diff --git a/public/terrain/19/858599/353816.terrain b/public/terrain/19/858599/353816.terrain new file mode 100644 index 000000000..fecb102bd Binary files /dev/null and b/public/terrain/19/858599/353816.terrain differ diff --git a/public/terrain/19/858599/353817.terrain b/public/terrain/19/858599/353817.terrain new file mode 100644 index 000000000..2029817e2 Binary files /dev/null and b/public/terrain/19/858599/353817.terrain differ diff --git a/public/terrain/19/858599/353818.terrain b/public/terrain/19/858599/353818.terrain new file mode 100644 index 000000000..1d10aa4ba Binary files /dev/null and b/public/terrain/19/858599/353818.terrain differ diff --git a/public/terrain/19/858599/353819.terrain b/public/terrain/19/858599/353819.terrain new file mode 100644 index 000000000..e266dc133 Binary files /dev/null and b/public/terrain/19/858599/353819.terrain differ diff --git a/public/terrain/19/858599/353820.terrain b/public/terrain/19/858599/353820.terrain new file mode 100644 index 000000000..ef531d600 Binary files /dev/null and b/public/terrain/19/858599/353820.terrain differ diff --git a/public/terrain/19/858599/353821.terrain b/public/terrain/19/858599/353821.terrain new file mode 100644 index 000000000..3e7f0fbff Binary files /dev/null and b/public/terrain/19/858599/353821.terrain differ diff --git a/public/terrain/19/858599/353822.terrain b/public/terrain/19/858599/353822.terrain new file mode 100644 index 000000000..bc6a23611 Binary files /dev/null and b/public/terrain/19/858599/353822.terrain differ diff --git a/public/terrain/19/858599/353823.terrain b/public/terrain/19/858599/353823.terrain new file mode 100644 index 000000000..3cacf1566 Binary files /dev/null and b/public/terrain/19/858599/353823.terrain differ diff --git a/public/terrain/19/858599/353824.terrain b/public/terrain/19/858599/353824.terrain new file mode 100644 index 000000000..3f2ac363a Binary files /dev/null and b/public/terrain/19/858599/353824.terrain differ diff --git a/public/terrain/19/858599/353825.terrain b/public/terrain/19/858599/353825.terrain new file mode 100644 index 000000000..01f11d41f Binary files /dev/null and b/public/terrain/19/858599/353825.terrain differ diff --git a/public/terrain/19/858599/353826.terrain b/public/terrain/19/858599/353826.terrain new file mode 100644 index 000000000..3301fe858 Binary files /dev/null and b/public/terrain/19/858599/353826.terrain differ diff --git a/public/terrain/19/858599/353827.terrain b/public/terrain/19/858599/353827.terrain new file mode 100644 index 000000000..f0322e198 Binary files /dev/null and b/public/terrain/19/858599/353827.terrain differ diff --git a/public/terrain/19/858599/353828.terrain b/public/terrain/19/858599/353828.terrain new file mode 100644 index 000000000..c69745d46 Binary files /dev/null and b/public/terrain/19/858599/353828.terrain differ diff --git a/public/terrain/19/858599/353829.terrain b/public/terrain/19/858599/353829.terrain new file mode 100644 index 000000000..79123c08f Binary files /dev/null and b/public/terrain/19/858599/353829.terrain differ diff --git a/public/terrain/19/858599/353830.terrain b/public/terrain/19/858599/353830.terrain new file mode 100644 index 000000000..1256906ca Binary files /dev/null and b/public/terrain/19/858599/353830.terrain differ diff --git a/public/terrain/19/858599/353831.terrain b/public/terrain/19/858599/353831.terrain new file mode 100644 index 000000000..b9be9ac9b Binary files /dev/null and b/public/terrain/19/858599/353831.terrain differ diff --git a/public/terrain/19/858599/353832.terrain b/public/terrain/19/858599/353832.terrain new file mode 100644 index 000000000..3820c79ae Binary files /dev/null and b/public/terrain/19/858599/353832.terrain differ diff --git a/public/terrain/19/858599/353833.terrain b/public/terrain/19/858599/353833.terrain new file mode 100644 index 000000000..19a5c5a5b Binary files /dev/null and b/public/terrain/19/858599/353833.terrain differ diff --git a/public/terrain/19/858599/353834.terrain b/public/terrain/19/858599/353834.terrain new file mode 100644 index 000000000..63879a99b Binary files /dev/null and b/public/terrain/19/858599/353834.terrain differ diff --git a/public/terrain/19/858599/353835.terrain b/public/terrain/19/858599/353835.terrain new file mode 100644 index 000000000..d12f8dd0b Binary files /dev/null and b/public/terrain/19/858599/353835.terrain differ diff --git a/public/terrain/19/858599/353836.terrain b/public/terrain/19/858599/353836.terrain new file mode 100644 index 000000000..704383506 Binary files /dev/null and b/public/terrain/19/858599/353836.terrain differ diff --git a/public/terrain/19/858599/353837.terrain b/public/terrain/19/858599/353837.terrain new file mode 100644 index 000000000..227cc4cd7 Binary files /dev/null and b/public/terrain/19/858599/353837.terrain differ diff --git a/public/terrain/19/858599/353838.terrain b/public/terrain/19/858599/353838.terrain new file mode 100644 index 000000000..fdad89e7a Binary files /dev/null and b/public/terrain/19/858599/353838.terrain differ diff --git a/public/terrain/19/858599/353839.terrain b/public/terrain/19/858599/353839.terrain new file mode 100644 index 000000000..545df9e24 Binary files /dev/null and b/public/terrain/19/858599/353839.terrain differ diff --git a/public/terrain/19/858599/353840.terrain b/public/terrain/19/858599/353840.terrain new file mode 100644 index 000000000..a53b9c488 Binary files /dev/null and b/public/terrain/19/858599/353840.terrain differ diff --git a/public/terrain/19/858599/353841.terrain b/public/terrain/19/858599/353841.terrain new file mode 100644 index 000000000..b8ff93e8a Binary files /dev/null and b/public/terrain/19/858599/353841.terrain differ diff --git a/public/terrain/19/858599/353842.terrain b/public/terrain/19/858599/353842.terrain new file mode 100644 index 000000000..c0fc1f932 Binary files /dev/null and b/public/terrain/19/858599/353842.terrain differ diff --git a/public/terrain/19/858599/353843.terrain b/public/terrain/19/858599/353843.terrain new file mode 100644 index 000000000..9a7b78313 Binary files /dev/null and b/public/terrain/19/858599/353843.terrain differ diff --git a/public/terrain/19/858599/353844.terrain b/public/terrain/19/858599/353844.terrain new file mode 100644 index 000000000..22a522b58 Binary files /dev/null and b/public/terrain/19/858599/353844.terrain differ diff --git a/public/terrain/19/858599/353845.terrain b/public/terrain/19/858599/353845.terrain new file mode 100644 index 000000000..c2db0b5ac Binary files /dev/null and b/public/terrain/19/858599/353845.terrain differ diff --git a/public/terrain/19/858599/353846.terrain b/public/terrain/19/858599/353846.terrain new file mode 100644 index 000000000..8216980d2 Binary files /dev/null and b/public/terrain/19/858599/353846.terrain differ diff --git a/public/terrain/19/858599/353847.terrain b/public/terrain/19/858599/353847.terrain new file mode 100644 index 000000000..e9a80583a Binary files /dev/null and b/public/terrain/19/858599/353847.terrain differ diff --git a/public/terrain/19/858599/353848.terrain b/public/terrain/19/858599/353848.terrain new file mode 100644 index 000000000..b06c220c1 Binary files /dev/null and b/public/terrain/19/858599/353848.terrain differ diff --git a/public/terrain/19/858599/353849.terrain b/public/terrain/19/858599/353849.terrain new file mode 100644 index 000000000..3ec822161 Binary files /dev/null and b/public/terrain/19/858599/353849.terrain differ diff --git a/public/terrain/19/858599/353850.terrain b/public/terrain/19/858599/353850.terrain new file mode 100644 index 000000000..85da32015 Binary files /dev/null and b/public/terrain/19/858599/353850.terrain differ diff --git a/public/terrain/19/858599/353851.terrain b/public/terrain/19/858599/353851.terrain new file mode 100644 index 000000000..ec88d25f2 Binary files /dev/null and b/public/terrain/19/858599/353851.terrain differ diff --git a/public/terrain/19/858599/353852.terrain b/public/terrain/19/858599/353852.terrain new file mode 100644 index 000000000..49ce1cf2f Binary files /dev/null and b/public/terrain/19/858599/353852.terrain differ diff --git a/public/terrain/19/858599/353853.terrain b/public/terrain/19/858599/353853.terrain new file mode 100644 index 000000000..cca5755f4 Binary files /dev/null and b/public/terrain/19/858599/353853.terrain differ diff --git a/public/terrain/19/858599/353854.terrain b/public/terrain/19/858599/353854.terrain new file mode 100644 index 000000000..ecffccf87 Binary files /dev/null and b/public/terrain/19/858599/353854.terrain differ diff --git a/public/terrain/19/858599/353855.terrain b/public/terrain/19/858599/353855.terrain new file mode 100644 index 000000000..084e49eab Binary files /dev/null and b/public/terrain/19/858599/353855.terrain differ diff --git a/public/terrain/19/858599/353856.terrain b/public/terrain/19/858599/353856.terrain new file mode 100644 index 000000000..4e3322395 Binary files /dev/null and b/public/terrain/19/858599/353856.terrain differ diff --git a/public/terrain/19/858599/353857.terrain b/public/terrain/19/858599/353857.terrain new file mode 100644 index 000000000..da38b85bc Binary files /dev/null and b/public/terrain/19/858599/353857.terrain differ diff --git a/public/terrain/19/858599/353858.terrain b/public/terrain/19/858599/353858.terrain new file mode 100644 index 000000000..23f29077f Binary files /dev/null and b/public/terrain/19/858599/353858.terrain differ diff --git a/public/terrain/19/858599/353859.terrain b/public/terrain/19/858599/353859.terrain new file mode 100644 index 000000000..bee1156de Binary files /dev/null and b/public/terrain/19/858599/353859.terrain differ diff --git a/public/terrain/19/858599/353860.terrain b/public/terrain/19/858599/353860.terrain new file mode 100644 index 000000000..53ebe9aef Binary files /dev/null and b/public/terrain/19/858599/353860.terrain differ diff --git a/public/terrain/19/858599/353861.terrain b/public/terrain/19/858599/353861.terrain new file mode 100644 index 000000000..528213d44 Binary files /dev/null and b/public/terrain/19/858599/353861.terrain differ diff --git a/public/terrain/19/858599/353862.terrain b/public/terrain/19/858599/353862.terrain new file mode 100644 index 000000000..9b86aaece Binary files /dev/null and b/public/terrain/19/858599/353862.terrain differ diff --git a/public/terrain/19/858599/353863.terrain b/public/terrain/19/858599/353863.terrain new file mode 100644 index 000000000..0ada200f3 Binary files /dev/null and b/public/terrain/19/858599/353863.terrain differ diff --git a/public/terrain/19/858599/353864.terrain b/public/terrain/19/858599/353864.terrain new file mode 100644 index 000000000..81315f92c Binary files /dev/null and b/public/terrain/19/858599/353864.terrain differ diff --git a/public/terrain/19/858599/353865.terrain b/public/terrain/19/858599/353865.terrain new file mode 100644 index 000000000..99228ec6d Binary files /dev/null and b/public/terrain/19/858599/353865.terrain differ diff --git a/public/terrain/19/858599/353866.terrain b/public/terrain/19/858599/353866.terrain new file mode 100644 index 000000000..7c8ef8bdc Binary files /dev/null and b/public/terrain/19/858599/353866.terrain differ diff --git a/public/terrain/19/858599/353867.terrain b/public/terrain/19/858599/353867.terrain new file mode 100644 index 000000000..581bd0947 Binary files /dev/null and b/public/terrain/19/858599/353867.terrain differ diff --git a/public/terrain/19/858599/353868.terrain b/public/terrain/19/858599/353868.terrain new file mode 100644 index 000000000..87b2f1983 Binary files /dev/null and b/public/terrain/19/858599/353868.terrain differ diff --git a/public/terrain/19/858599/353869.terrain b/public/terrain/19/858599/353869.terrain new file mode 100644 index 000000000..9e7a2b9e4 Binary files /dev/null and b/public/terrain/19/858599/353869.terrain differ diff --git a/public/terrain/19/858599/353870.terrain b/public/terrain/19/858599/353870.terrain new file mode 100644 index 000000000..1b35766e1 Binary files /dev/null and b/public/terrain/19/858599/353870.terrain differ diff --git a/public/terrain/19/858599/353871.terrain b/public/terrain/19/858599/353871.terrain new file mode 100644 index 000000000..de1f6f944 Binary files /dev/null and b/public/terrain/19/858599/353871.terrain differ diff --git a/public/terrain/19/858599/353872.terrain b/public/terrain/19/858599/353872.terrain new file mode 100644 index 000000000..4e193893e Binary files /dev/null and b/public/terrain/19/858599/353872.terrain differ diff --git a/public/terrain/19/858599/353873.terrain b/public/terrain/19/858599/353873.terrain new file mode 100644 index 000000000..e2711bec6 Binary files /dev/null and b/public/terrain/19/858599/353873.terrain differ diff --git a/public/terrain/19/858599/353874.terrain b/public/terrain/19/858599/353874.terrain new file mode 100644 index 000000000..5dce3934a Binary files /dev/null and b/public/terrain/19/858599/353874.terrain differ diff --git a/public/terrain/19/858599/353875.terrain b/public/terrain/19/858599/353875.terrain new file mode 100644 index 000000000..79268f522 Binary files /dev/null and b/public/terrain/19/858599/353875.terrain differ diff --git a/public/terrain/19/858599/353876.terrain b/public/terrain/19/858599/353876.terrain new file mode 100644 index 000000000..2d8011458 Binary files /dev/null and b/public/terrain/19/858599/353876.terrain differ diff --git a/public/terrain/19/858599/353877.terrain b/public/terrain/19/858599/353877.terrain new file mode 100644 index 000000000..1398a32c5 Binary files /dev/null and b/public/terrain/19/858599/353877.terrain differ diff --git a/public/terrain/19/858599/353878.terrain b/public/terrain/19/858599/353878.terrain new file mode 100644 index 000000000..a4f8368c0 Binary files /dev/null and b/public/terrain/19/858599/353878.terrain differ diff --git a/public/terrain/19/858599/353879.terrain b/public/terrain/19/858599/353879.terrain new file mode 100644 index 000000000..7c4713a16 Binary files /dev/null and b/public/terrain/19/858599/353879.terrain differ diff --git a/public/terrain/19/858599/353880.terrain b/public/terrain/19/858599/353880.terrain new file mode 100644 index 000000000..69a1852e7 Binary files /dev/null and b/public/terrain/19/858599/353880.terrain differ diff --git a/public/terrain/19/858599/353881.terrain b/public/terrain/19/858599/353881.terrain new file mode 100644 index 000000000..1fddcbf6e Binary files /dev/null and b/public/terrain/19/858599/353881.terrain differ diff --git a/public/terrain/19/858599/353882.terrain b/public/terrain/19/858599/353882.terrain new file mode 100644 index 000000000..e041e50e2 Binary files /dev/null and b/public/terrain/19/858599/353882.terrain differ diff --git a/public/terrain/19/858599/353883.terrain b/public/terrain/19/858599/353883.terrain new file mode 100644 index 000000000..cf79ccf53 Binary files /dev/null and b/public/terrain/19/858599/353883.terrain differ diff --git a/public/terrain/19/858599/353884.terrain b/public/terrain/19/858599/353884.terrain new file mode 100644 index 000000000..64bbda272 Binary files /dev/null and b/public/terrain/19/858599/353884.terrain differ diff --git a/public/terrain/19/858599/353885.terrain b/public/terrain/19/858599/353885.terrain new file mode 100644 index 000000000..338afa885 Binary files /dev/null and b/public/terrain/19/858599/353885.terrain differ diff --git a/public/terrain/19/858599/353886.terrain b/public/terrain/19/858599/353886.terrain new file mode 100644 index 000000000..4997c052a Binary files /dev/null and b/public/terrain/19/858599/353886.terrain differ diff --git a/public/terrain/19/858599/353887.terrain b/public/terrain/19/858599/353887.terrain new file mode 100644 index 000000000..36605917f Binary files /dev/null and b/public/terrain/19/858599/353887.terrain differ diff --git a/public/terrain/19/858599/353888.terrain b/public/terrain/19/858599/353888.terrain new file mode 100644 index 000000000..fd5c74992 Binary files /dev/null and b/public/terrain/19/858599/353888.terrain differ diff --git a/public/terrain/19/858599/353889.terrain b/public/terrain/19/858599/353889.terrain new file mode 100644 index 000000000..bce6f955f Binary files /dev/null and b/public/terrain/19/858599/353889.terrain differ diff --git a/public/terrain/19/858599/353890.terrain b/public/terrain/19/858599/353890.terrain new file mode 100644 index 000000000..32f607dff Binary files /dev/null and b/public/terrain/19/858599/353890.terrain differ diff --git a/public/terrain/19/858599/353891.terrain b/public/terrain/19/858599/353891.terrain new file mode 100644 index 000000000..3c7e811f5 Binary files /dev/null and b/public/terrain/19/858599/353891.terrain differ diff --git a/public/terrain/19/858599/353892.terrain b/public/terrain/19/858599/353892.terrain new file mode 100644 index 000000000..c1d7d8ea6 Binary files /dev/null and b/public/terrain/19/858599/353892.terrain differ diff --git a/public/terrain/19/858599/353893.terrain b/public/terrain/19/858599/353893.terrain new file mode 100644 index 000000000..83eafa6f2 Binary files /dev/null and b/public/terrain/19/858599/353893.terrain differ diff --git a/public/terrain/19/858599/353894.terrain b/public/terrain/19/858599/353894.terrain new file mode 100644 index 000000000..f0c0494f9 Binary files /dev/null and b/public/terrain/19/858599/353894.terrain differ diff --git a/public/terrain/19/858599/353895.terrain b/public/terrain/19/858599/353895.terrain new file mode 100644 index 000000000..22889db8b Binary files /dev/null and b/public/terrain/19/858599/353895.terrain differ diff --git a/public/terrain/19/858599/353896.terrain b/public/terrain/19/858599/353896.terrain new file mode 100644 index 000000000..1720283e9 Binary files /dev/null and b/public/terrain/19/858599/353896.terrain differ diff --git a/public/terrain/19/858599/353897.terrain b/public/terrain/19/858599/353897.terrain new file mode 100644 index 000000000..d0c0db03e Binary files /dev/null and b/public/terrain/19/858599/353897.terrain differ diff --git a/public/terrain/19/858599/353898.terrain b/public/terrain/19/858599/353898.terrain new file mode 100644 index 000000000..cbaca5c80 Binary files /dev/null and b/public/terrain/19/858599/353898.terrain differ diff --git a/public/terrain/19/858599/353899.terrain b/public/terrain/19/858599/353899.terrain new file mode 100644 index 000000000..23ec14cdd Binary files /dev/null and b/public/terrain/19/858599/353899.terrain differ diff --git a/public/terrain/19/858599/353900.terrain b/public/terrain/19/858599/353900.terrain new file mode 100644 index 000000000..7ebbf2051 Binary files /dev/null and b/public/terrain/19/858599/353900.terrain differ diff --git a/public/terrain/19/858599/353901.terrain b/public/terrain/19/858599/353901.terrain new file mode 100644 index 000000000..a7dd9fb65 Binary files /dev/null and b/public/terrain/19/858599/353901.terrain differ diff --git a/public/terrain/19/858599/353902.terrain b/public/terrain/19/858599/353902.terrain new file mode 100644 index 000000000..75d000f6a Binary files /dev/null and b/public/terrain/19/858599/353902.terrain differ diff --git a/public/terrain/19/858599/353903.terrain b/public/terrain/19/858599/353903.terrain new file mode 100644 index 000000000..d90301165 Binary files /dev/null and b/public/terrain/19/858599/353903.terrain differ diff --git a/public/terrain/19/858599/353904.terrain b/public/terrain/19/858599/353904.terrain new file mode 100644 index 000000000..a0370f95e Binary files /dev/null and b/public/terrain/19/858599/353904.terrain differ diff --git a/public/terrain/19/858599/353905.terrain b/public/terrain/19/858599/353905.terrain new file mode 100644 index 000000000..a9c502a2e Binary files /dev/null and b/public/terrain/19/858599/353905.terrain differ diff --git a/public/terrain/19/858599/353906.terrain b/public/terrain/19/858599/353906.terrain new file mode 100644 index 000000000..68eae62a0 Binary files /dev/null and b/public/terrain/19/858599/353906.terrain differ diff --git a/public/terrain/19/858599/353907.terrain b/public/terrain/19/858599/353907.terrain new file mode 100644 index 000000000..4238b8f56 Binary files /dev/null and b/public/terrain/19/858599/353907.terrain differ diff --git a/public/terrain/19/858599/353908.terrain b/public/terrain/19/858599/353908.terrain new file mode 100644 index 000000000..84a6ced15 Binary files /dev/null and b/public/terrain/19/858599/353908.terrain differ diff --git a/public/terrain/19/858599/353909.terrain b/public/terrain/19/858599/353909.terrain new file mode 100644 index 000000000..f086084eb Binary files /dev/null and b/public/terrain/19/858599/353909.terrain differ diff --git a/public/terrain/19/858599/353910.terrain b/public/terrain/19/858599/353910.terrain new file mode 100644 index 000000000..cc14f51ed Binary files /dev/null and b/public/terrain/19/858599/353910.terrain differ diff --git a/public/terrain/19/858599/353911.terrain b/public/terrain/19/858599/353911.terrain new file mode 100644 index 000000000..473e7db65 Binary files /dev/null and b/public/terrain/19/858599/353911.terrain differ diff --git a/public/terrain/19/858599/353912.terrain b/public/terrain/19/858599/353912.terrain new file mode 100644 index 000000000..b0bf155fe Binary files /dev/null and b/public/terrain/19/858599/353912.terrain differ diff --git a/public/terrain/19/858599/353913.terrain b/public/terrain/19/858599/353913.terrain new file mode 100644 index 000000000..6ea791eea Binary files /dev/null and b/public/terrain/19/858599/353913.terrain differ diff --git a/public/terrain/19/858599/353914.terrain b/public/terrain/19/858599/353914.terrain new file mode 100644 index 000000000..c368de5a6 Binary files /dev/null and b/public/terrain/19/858599/353914.terrain differ diff --git a/public/terrain/19/858599/353915.terrain b/public/terrain/19/858599/353915.terrain new file mode 100644 index 000000000..6ec39b1b4 Binary files /dev/null and b/public/terrain/19/858599/353915.terrain differ diff --git a/public/terrain/19/858599/353916.terrain b/public/terrain/19/858599/353916.terrain new file mode 100644 index 000000000..d35b254ef Binary files /dev/null and b/public/terrain/19/858599/353916.terrain differ diff --git a/public/terrain/19/858599/353917.terrain b/public/terrain/19/858599/353917.terrain new file mode 100644 index 000000000..73f217332 Binary files /dev/null and b/public/terrain/19/858599/353917.terrain differ diff --git a/public/terrain/19/858599/353918.terrain b/public/terrain/19/858599/353918.terrain new file mode 100644 index 000000000..3f6bb07fa Binary files /dev/null and b/public/terrain/19/858599/353918.terrain differ diff --git a/public/terrain/19/858599/353919.terrain b/public/terrain/19/858599/353919.terrain new file mode 100644 index 000000000..74f980a4e Binary files /dev/null and b/public/terrain/19/858599/353919.terrain differ diff --git a/public/terrain/19/858599/353920.terrain b/public/terrain/19/858599/353920.terrain new file mode 100644 index 000000000..4dc28a133 Binary files /dev/null and b/public/terrain/19/858599/353920.terrain differ diff --git a/public/terrain/19/858599/353921.terrain b/public/terrain/19/858599/353921.terrain new file mode 100644 index 000000000..f25ed5b3e Binary files /dev/null and b/public/terrain/19/858599/353921.terrain differ diff --git a/public/terrain/19/858599/353922.terrain b/public/terrain/19/858599/353922.terrain new file mode 100644 index 000000000..7e699597a Binary files /dev/null and b/public/terrain/19/858599/353922.terrain differ diff --git a/public/terrain/19/858599/353923.terrain b/public/terrain/19/858599/353923.terrain new file mode 100644 index 000000000..9388597eb Binary files /dev/null and b/public/terrain/19/858599/353923.terrain differ diff --git a/public/terrain/19/858599/353924.terrain b/public/terrain/19/858599/353924.terrain new file mode 100644 index 000000000..3a7efcb6a Binary files /dev/null and b/public/terrain/19/858599/353924.terrain differ diff --git a/public/terrain/19/858599/353925.terrain b/public/terrain/19/858599/353925.terrain new file mode 100644 index 000000000..d025b77bf Binary files /dev/null and b/public/terrain/19/858599/353925.terrain differ diff --git a/public/terrain/19/858599/353926.terrain b/public/terrain/19/858599/353926.terrain new file mode 100644 index 000000000..407157588 Binary files /dev/null and b/public/terrain/19/858599/353926.terrain differ diff --git a/public/terrain/19/858599/353927.terrain b/public/terrain/19/858599/353927.terrain new file mode 100644 index 000000000..e304e94bb Binary files /dev/null and b/public/terrain/19/858599/353927.terrain differ diff --git a/public/terrain/19/858599/353928.terrain b/public/terrain/19/858599/353928.terrain new file mode 100644 index 000000000..a9bc428a0 Binary files /dev/null and b/public/terrain/19/858599/353928.terrain differ diff --git a/public/terrain/19/858599/353929.terrain b/public/terrain/19/858599/353929.terrain new file mode 100644 index 000000000..660214d61 Binary files /dev/null and b/public/terrain/19/858599/353929.terrain differ diff --git a/public/terrain/19/858599/353930.terrain b/public/terrain/19/858599/353930.terrain new file mode 100644 index 000000000..7ef5d0656 Binary files /dev/null and b/public/terrain/19/858599/353930.terrain differ diff --git a/public/terrain/19/858599/353931.terrain b/public/terrain/19/858599/353931.terrain new file mode 100644 index 000000000..dd655470b Binary files /dev/null and b/public/terrain/19/858599/353931.terrain differ diff --git a/public/terrain/19/858599/353932.terrain b/public/terrain/19/858599/353932.terrain new file mode 100644 index 000000000..dbaa574fe Binary files /dev/null and b/public/terrain/19/858599/353932.terrain differ diff --git a/public/terrain/19/858599/353933.terrain b/public/terrain/19/858599/353933.terrain new file mode 100644 index 000000000..fc90686ac Binary files /dev/null and b/public/terrain/19/858599/353933.terrain differ diff --git a/public/terrain/19/858599/353934.terrain b/public/terrain/19/858599/353934.terrain new file mode 100644 index 000000000..f6b0b4a67 Binary files /dev/null and b/public/terrain/19/858599/353934.terrain differ diff --git a/public/terrain/19/858599/353935.terrain b/public/terrain/19/858599/353935.terrain new file mode 100644 index 000000000..0881050ad Binary files /dev/null and b/public/terrain/19/858599/353935.terrain differ diff --git a/public/terrain/19/858599/353936.terrain b/public/terrain/19/858599/353936.terrain new file mode 100644 index 000000000..d7af177d2 Binary files /dev/null and b/public/terrain/19/858599/353936.terrain differ diff --git a/public/terrain/19/858599/353937.terrain b/public/terrain/19/858599/353937.terrain new file mode 100644 index 000000000..d3d4fd8f9 Binary files /dev/null and b/public/terrain/19/858599/353937.terrain differ diff --git a/public/terrain/19/858599/353938.terrain b/public/terrain/19/858599/353938.terrain new file mode 100644 index 000000000..bd9e22a30 Binary files /dev/null and b/public/terrain/19/858599/353938.terrain differ diff --git a/public/terrain/19/858599/353939.terrain b/public/terrain/19/858599/353939.terrain new file mode 100644 index 000000000..e1b383307 Binary files /dev/null and b/public/terrain/19/858599/353939.terrain differ diff --git a/public/terrain/19/858599/353940.terrain b/public/terrain/19/858599/353940.terrain new file mode 100644 index 000000000..0df8345c8 Binary files /dev/null and b/public/terrain/19/858599/353940.terrain differ diff --git a/public/terrain/19/858599/353941.terrain b/public/terrain/19/858599/353941.terrain new file mode 100644 index 000000000..f3886d370 Binary files /dev/null and b/public/terrain/19/858599/353941.terrain differ diff --git a/public/terrain/19/858599/353942.terrain b/public/terrain/19/858599/353942.terrain new file mode 100644 index 000000000..9884a369e Binary files /dev/null and b/public/terrain/19/858599/353942.terrain differ diff --git a/public/terrain/19/858599/353943.terrain b/public/terrain/19/858599/353943.terrain new file mode 100644 index 000000000..5ce92d0b6 Binary files /dev/null and b/public/terrain/19/858599/353943.terrain differ diff --git a/public/terrain/19/858599/353944.terrain b/public/terrain/19/858599/353944.terrain new file mode 100644 index 000000000..9bd04b45b Binary files /dev/null and b/public/terrain/19/858599/353944.terrain differ diff --git a/public/terrain/19/858599/353945.terrain b/public/terrain/19/858599/353945.terrain new file mode 100644 index 000000000..fefc8e15a Binary files /dev/null and b/public/terrain/19/858599/353945.terrain differ diff --git a/public/terrain/19/858599/353946.terrain b/public/terrain/19/858599/353946.terrain new file mode 100644 index 000000000..aeb39fa3c Binary files /dev/null and b/public/terrain/19/858599/353946.terrain differ diff --git a/public/terrain/19/858599/353947.terrain b/public/terrain/19/858599/353947.terrain new file mode 100644 index 000000000..c39790fdd Binary files /dev/null and b/public/terrain/19/858599/353947.terrain differ diff --git a/public/terrain/19/858599/353948.terrain b/public/terrain/19/858599/353948.terrain new file mode 100644 index 000000000..f53ab5c9e Binary files /dev/null and b/public/terrain/19/858599/353948.terrain differ diff --git a/public/terrain/19/858599/353949.terrain b/public/terrain/19/858599/353949.terrain new file mode 100644 index 000000000..864c4b0de Binary files /dev/null and b/public/terrain/19/858599/353949.terrain differ diff --git a/public/terrain/19/858599/353950.terrain b/public/terrain/19/858599/353950.terrain new file mode 100644 index 000000000..36fb1a630 Binary files /dev/null and b/public/terrain/19/858599/353950.terrain differ diff --git a/public/terrain/19/858599/353951.terrain b/public/terrain/19/858599/353951.terrain new file mode 100644 index 000000000..c6931e23e Binary files /dev/null and b/public/terrain/19/858599/353951.terrain differ diff --git a/public/terrain/19/858599/353952.terrain b/public/terrain/19/858599/353952.terrain new file mode 100644 index 000000000..6cbf131c4 Binary files /dev/null and b/public/terrain/19/858599/353952.terrain differ diff --git a/public/terrain/19/858599/353953.terrain b/public/terrain/19/858599/353953.terrain new file mode 100644 index 000000000..f3b103102 Binary files /dev/null and b/public/terrain/19/858599/353953.terrain differ diff --git a/public/terrain/19/858599/353954.terrain b/public/terrain/19/858599/353954.terrain new file mode 100644 index 000000000..3eba8caa9 Binary files /dev/null and b/public/terrain/19/858599/353954.terrain differ diff --git a/public/terrain/19/858599/353955.terrain b/public/terrain/19/858599/353955.terrain new file mode 100644 index 000000000..6a7a9f895 Binary files /dev/null and b/public/terrain/19/858599/353955.terrain differ diff --git a/public/terrain/19/858599/353956.terrain b/public/terrain/19/858599/353956.terrain new file mode 100644 index 000000000..08ede0e1b Binary files /dev/null and b/public/terrain/19/858599/353956.terrain differ diff --git a/public/terrain/19/858599/353957.terrain b/public/terrain/19/858599/353957.terrain new file mode 100644 index 000000000..c63f08fbf Binary files /dev/null and b/public/terrain/19/858599/353957.terrain differ diff --git a/public/terrain/19/858599/353958.terrain b/public/terrain/19/858599/353958.terrain new file mode 100644 index 000000000..8dad4606e Binary files /dev/null and b/public/terrain/19/858599/353958.terrain differ diff --git a/public/terrain/19/858599/353959.terrain b/public/terrain/19/858599/353959.terrain new file mode 100644 index 000000000..1eecc4882 Binary files /dev/null and b/public/terrain/19/858599/353959.terrain differ diff --git a/public/terrain/19/858599/353960.terrain b/public/terrain/19/858599/353960.terrain new file mode 100644 index 000000000..13fc02156 Binary files /dev/null and b/public/terrain/19/858599/353960.terrain differ diff --git a/public/terrain/19/858599/353961.terrain b/public/terrain/19/858599/353961.terrain new file mode 100644 index 000000000..99b39a5f9 Binary files /dev/null and b/public/terrain/19/858599/353961.terrain differ diff --git a/public/terrain/19/858599/353962.terrain b/public/terrain/19/858599/353962.terrain new file mode 100644 index 000000000..82dfb3e2c Binary files /dev/null and b/public/terrain/19/858599/353962.terrain differ diff --git a/public/terrain/19/858599/353963.terrain b/public/terrain/19/858599/353963.terrain new file mode 100644 index 000000000..7b3188f06 Binary files /dev/null and b/public/terrain/19/858599/353963.terrain differ diff --git a/public/terrain/19/858599/353964.terrain b/public/terrain/19/858599/353964.terrain new file mode 100644 index 000000000..2e0da1788 Binary files /dev/null and b/public/terrain/19/858599/353964.terrain differ diff --git a/public/terrain/19/858599/353965.terrain b/public/terrain/19/858599/353965.terrain new file mode 100644 index 000000000..1ef918c9e Binary files /dev/null and b/public/terrain/19/858599/353965.terrain differ diff --git a/public/terrain/19/858599/353966.terrain b/public/terrain/19/858599/353966.terrain new file mode 100644 index 000000000..d6465edde Binary files /dev/null and b/public/terrain/19/858599/353966.terrain differ diff --git a/public/terrain/19/858599/353967.terrain b/public/terrain/19/858599/353967.terrain new file mode 100644 index 000000000..b67ce9cff Binary files /dev/null and b/public/terrain/19/858599/353967.terrain differ diff --git a/public/terrain/19/858599/353968.terrain b/public/terrain/19/858599/353968.terrain new file mode 100644 index 000000000..57d119b8b Binary files /dev/null and b/public/terrain/19/858599/353968.terrain differ diff --git a/public/terrain/19/858599/353969.terrain b/public/terrain/19/858599/353969.terrain new file mode 100644 index 000000000..71640793b Binary files /dev/null and b/public/terrain/19/858599/353969.terrain differ diff --git a/public/terrain/19/858599/353970.terrain b/public/terrain/19/858599/353970.terrain new file mode 100644 index 000000000..2c8deb694 Binary files /dev/null and b/public/terrain/19/858599/353970.terrain differ diff --git a/public/terrain/19/858599/353971.terrain b/public/terrain/19/858599/353971.terrain new file mode 100644 index 000000000..852add2a6 Binary files /dev/null and b/public/terrain/19/858599/353971.terrain differ diff --git a/public/terrain/19/858599/353972.terrain b/public/terrain/19/858599/353972.terrain new file mode 100644 index 000000000..4561fb011 Binary files /dev/null and b/public/terrain/19/858599/353972.terrain differ diff --git a/public/terrain/19/858599/353973.terrain b/public/terrain/19/858599/353973.terrain new file mode 100644 index 000000000..598409085 Binary files /dev/null and b/public/terrain/19/858599/353973.terrain differ diff --git a/public/terrain/19/858599/353974.terrain b/public/terrain/19/858599/353974.terrain new file mode 100644 index 000000000..676f15e65 Binary files /dev/null and b/public/terrain/19/858599/353974.terrain differ diff --git a/public/terrain/19/858599/353975.terrain b/public/terrain/19/858599/353975.terrain new file mode 100644 index 000000000..bbc6f3a62 Binary files /dev/null and b/public/terrain/19/858599/353975.terrain differ diff --git a/public/terrain/19/858599/353976.terrain b/public/terrain/19/858599/353976.terrain new file mode 100644 index 000000000..f980c5088 Binary files /dev/null and b/public/terrain/19/858599/353976.terrain differ diff --git a/public/terrain/19/858599/353977.terrain b/public/terrain/19/858599/353977.terrain new file mode 100644 index 000000000..2e75e24e2 Binary files /dev/null and b/public/terrain/19/858599/353977.terrain differ diff --git a/public/terrain/19/858599/353978.terrain b/public/terrain/19/858599/353978.terrain new file mode 100644 index 000000000..12629925d Binary files /dev/null and b/public/terrain/19/858599/353978.terrain differ diff --git a/public/terrain/19/858599/353979.terrain b/public/terrain/19/858599/353979.terrain new file mode 100644 index 000000000..b1aabd881 Binary files /dev/null and b/public/terrain/19/858599/353979.terrain differ diff --git a/public/terrain/19/858599/353980.terrain b/public/terrain/19/858599/353980.terrain new file mode 100644 index 000000000..54d8fcbde Binary files /dev/null and b/public/terrain/19/858599/353980.terrain differ diff --git a/public/terrain/19/858599/353981.terrain b/public/terrain/19/858599/353981.terrain new file mode 100644 index 000000000..7037bde59 Binary files /dev/null and b/public/terrain/19/858599/353981.terrain differ diff --git a/public/terrain/19/858599/353982.terrain b/public/terrain/19/858599/353982.terrain new file mode 100644 index 000000000..9f8dc0f8e Binary files /dev/null and b/public/terrain/19/858599/353982.terrain differ diff --git a/public/terrain/19/858599/353983.terrain b/public/terrain/19/858599/353983.terrain new file mode 100644 index 000000000..d8d7165f6 Binary files /dev/null and b/public/terrain/19/858599/353983.terrain differ diff --git a/public/terrain/19/858599/353984.terrain b/public/terrain/19/858599/353984.terrain new file mode 100644 index 000000000..f5cdfb389 Binary files /dev/null and b/public/terrain/19/858599/353984.terrain differ diff --git a/public/terrain/19/858599/353985.terrain b/public/terrain/19/858599/353985.terrain new file mode 100644 index 000000000..4194637f0 Binary files /dev/null and b/public/terrain/19/858599/353985.terrain differ diff --git a/public/terrain/19/858599/353986.terrain b/public/terrain/19/858599/353986.terrain new file mode 100644 index 000000000..ba0898b4c Binary files /dev/null and b/public/terrain/19/858599/353986.terrain differ diff --git a/public/terrain/19/858599/353987.terrain b/public/terrain/19/858599/353987.terrain new file mode 100644 index 000000000..f5e5e2c0e Binary files /dev/null and b/public/terrain/19/858599/353987.terrain differ diff --git a/public/terrain/19/858599/353988.terrain b/public/terrain/19/858599/353988.terrain new file mode 100644 index 000000000..ccc3a07c5 Binary files /dev/null and b/public/terrain/19/858599/353988.terrain differ diff --git a/public/terrain/19/858599/353989.terrain b/public/terrain/19/858599/353989.terrain new file mode 100644 index 000000000..5b2db3062 Binary files /dev/null and b/public/terrain/19/858599/353989.terrain differ diff --git a/public/terrain/19/858599/353990.terrain b/public/terrain/19/858599/353990.terrain new file mode 100644 index 000000000..75945bae4 Binary files /dev/null and b/public/terrain/19/858599/353990.terrain differ diff --git a/public/terrain/19/858599/353991.terrain b/public/terrain/19/858599/353991.terrain new file mode 100644 index 000000000..970a07f6f Binary files /dev/null and b/public/terrain/19/858599/353991.terrain differ diff --git a/public/terrain/19/858599/353992.terrain b/public/terrain/19/858599/353992.terrain new file mode 100644 index 000000000..db9ade103 Binary files /dev/null and b/public/terrain/19/858599/353992.terrain differ diff --git a/public/terrain/19/858599/353993.terrain b/public/terrain/19/858599/353993.terrain new file mode 100644 index 000000000..518fc5bdf Binary files /dev/null and b/public/terrain/19/858599/353993.terrain differ diff --git a/public/terrain/19/858599/353994.terrain b/public/terrain/19/858599/353994.terrain new file mode 100644 index 000000000..6217e6d48 Binary files /dev/null and b/public/terrain/19/858599/353994.terrain differ diff --git a/public/terrain/19/858599/353995.terrain b/public/terrain/19/858599/353995.terrain new file mode 100644 index 000000000..030f150cc Binary files /dev/null and b/public/terrain/19/858599/353995.terrain differ diff --git a/public/terrain/19/858599/353996.terrain b/public/terrain/19/858599/353996.terrain new file mode 100644 index 000000000..490a9afb9 Binary files /dev/null and b/public/terrain/19/858599/353996.terrain differ diff --git a/public/terrain/19/858599/353997.terrain b/public/terrain/19/858599/353997.terrain new file mode 100644 index 000000000..7f53df97c Binary files /dev/null and b/public/terrain/19/858599/353997.terrain differ diff --git a/public/terrain/19/858599/353998.terrain b/public/terrain/19/858599/353998.terrain new file mode 100644 index 000000000..130aed42b Binary files /dev/null and b/public/terrain/19/858599/353998.terrain differ diff --git a/public/terrain/19/858599/353999.terrain b/public/terrain/19/858599/353999.terrain new file mode 100644 index 000000000..191f0928c Binary files /dev/null and b/public/terrain/19/858599/353999.terrain differ diff --git a/public/terrain/19/858599/354000.terrain b/public/terrain/19/858599/354000.terrain new file mode 100644 index 000000000..a3a27ac24 Binary files /dev/null and b/public/terrain/19/858599/354000.terrain differ diff --git a/public/terrain/19/858599/354001.terrain b/public/terrain/19/858599/354001.terrain new file mode 100644 index 000000000..eef137f53 Binary files /dev/null and b/public/terrain/19/858599/354001.terrain differ diff --git a/public/terrain/19/858599/354002.terrain b/public/terrain/19/858599/354002.terrain new file mode 100644 index 000000000..c8e35e2bc Binary files /dev/null and b/public/terrain/19/858599/354002.terrain differ diff --git a/public/terrain/19/858599/354003.terrain b/public/terrain/19/858599/354003.terrain new file mode 100644 index 000000000..70f4841d0 Binary files /dev/null and b/public/terrain/19/858599/354003.terrain differ diff --git a/public/terrain/19/858599/354004.terrain b/public/terrain/19/858599/354004.terrain new file mode 100644 index 000000000..e0d4185d1 Binary files /dev/null and b/public/terrain/19/858599/354004.terrain differ diff --git a/public/terrain/19/858599/354005.terrain b/public/terrain/19/858599/354005.terrain new file mode 100644 index 000000000..a3c882369 Binary files /dev/null and b/public/terrain/19/858599/354005.terrain differ diff --git a/public/terrain/19/858599/354006.terrain b/public/terrain/19/858599/354006.terrain new file mode 100644 index 000000000..9644bb1f5 Binary files /dev/null and b/public/terrain/19/858599/354006.terrain differ diff --git a/public/terrain/19/858599/354007.terrain b/public/terrain/19/858599/354007.terrain new file mode 100644 index 000000000..4a7e10029 Binary files /dev/null and b/public/terrain/19/858599/354007.terrain differ diff --git a/public/terrain/19/858599/354008.terrain b/public/terrain/19/858599/354008.terrain new file mode 100644 index 000000000..3d2d2abf8 Binary files /dev/null and b/public/terrain/19/858599/354008.terrain differ diff --git a/public/terrain/19/858599/354009.terrain b/public/terrain/19/858599/354009.terrain new file mode 100644 index 000000000..c2c6b1826 Binary files /dev/null and b/public/terrain/19/858599/354009.terrain differ diff --git a/public/terrain/19/858599/354010.terrain b/public/terrain/19/858599/354010.terrain new file mode 100644 index 000000000..8b873d265 Binary files /dev/null and b/public/terrain/19/858599/354010.terrain differ diff --git a/public/terrain/19/858599/354011.terrain b/public/terrain/19/858599/354011.terrain new file mode 100644 index 000000000..a35636812 Binary files /dev/null and b/public/terrain/19/858599/354011.terrain differ diff --git a/public/terrain/19/858599/354012.terrain b/public/terrain/19/858599/354012.terrain new file mode 100644 index 000000000..9cbd67ab5 Binary files /dev/null and b/public/terrain/19/858599/354012.terrain differ diff --git a/public/terrain/19/858599/354013.terrain b/public/terrain/19/858599/354013.terrain new file mode 100644 index 000000000..7c61bf450 Binary files /dev/null and b/public/terrain/19/858599/354013.terrain differ diff --git a/public/terrain/19/858599/354014.terrain b/public/terrain/19/858599/354014.terrain new file mode 100644 index 000000000..3efc71172 Binary files /dev/null and b/public/terrain/19/858599/354014.terrain differ diff --git a/public/terrain/19/858599/354015.terrain b/public/terrain/19/858599/354015.terrain new file mode 100644 index 000000000..7c7bd44ba Binary files /dev/null and b/public/terrain/19/858599/354015.terrain differ diff --git a/public/terrain/19/858599/354016.terrain b/public/terrain/19/858599/354016.terrain new file mode 100644 index 000000000..96e0c36f6 Binary files /dev/null and b/public/terrain/19/858599/354016.terrain differ diff --git a/public/terrain/19/858599/354017.terrain b/public/terrain/19/858599/354017.terrain new file mode 100644 index 000000000..e11e60f7b Binary files /dev/null and b/public/terrain/19/858599/354017.terrain differ diff --git a/public/terrain/19/858599/354018.terrain b/public/terrain/19/858599/354018.terrain new file mode 100644 index 000000000..23c12b979 Binary files /dev/null and b/public/terrain/19/858599/354018.terrain differ diff --git a/public/terrain/19/858599/354019.terrain b/public/terrain/19/858599/354019.terrain new file mode 100644 index 000000000..85205a016 Binary files /dev/null and b/public/terrain/19/858599/354019.terrain differ diff --git a/public/terrain/19/858599/354020.terrain b/public/terrain/19/858599/354020.terrain new file mode 100644 index 000000000..de269236b Binary files /dev/null and b/public/terrain/19/858599/354020.terrain differ diff --git a/public/terrain/19/858599/354021.terrain b/public/terrain/19/858599/354021.terrain new file mode 100644 index 000000000..51dc99998 Binary files /dev/null and b/public/terrain/19/858599/354021.terrain differ diff --git a/public/terrain/19/858599/354022.terrain b/public/terrain/19/858599/354022.terrain new file mode 100644 index 000000000..339b48ad4 Binary files /dev/null and b/public/terrain/19/858599/354022.terrain differ diff --git a/public/terrain/19/858599/354023.terrain b/public/terrain/19/858599/354023.terrain new file mode 100644 index 000000000..9680f10b0 Binary files /dev/null and b/public/terrain/19/858599/354023.terrain differ diff --git a/public/terrain/19/858599/354024.terrain b/public/terrain/19/858599/354024.terrain new file mode 100644 index 000000000..fff364db5 Binary files /dev/null and b/public/terrain/19/858599/354024.terrain differ diff --git a/public/terrain/19/858599/354025.terrain b/public/terrain/19/858599/354025.terrain new file mode 100644 index 000000000..79455ca07 Binary files /dev/null and b/public/terrain/19/858599/354025.terrain differ diff --git a/public/terrain/19/858599/354026.terrain b/public/terrain/19/858599/354026.terrain new file mode 100644 index 000000000..82663fcbf Binary files /dev/null and b/public/terrain/19/858599/354026.terrain differ diff --git a/public/terrain/19/858599/354027.terrain b/public/terrain/19/858599/354027.terrain new file mode 100644 index 000000000..3204b3197 Binary files /dev/null and b/public/terrain/19/858599/354027.terrain differ diff --git a/public/terrain/19/858599/354028.terrain b/public/terrain/19/858599/354028.terrain new file mode 100644 index 000000000..ff254c40e Binary files /dev/null and b/public/terrain/19/858599/354028.terrain differ diff --git a/public/terrain/19/858599/354029.terrain b/public/terrain/19/858599/354029.terrain new file mode 100644 index 000000000..fa886fa7f Binary files /dev/null and b/public/terrain/19/858599/354029.terrain differ diff --git a/public/terrain/19/858599/354030.terrain b/public/terrain/19/858599/354030.terrain new file mode 100644 index 000000000..e242118fb Binary files /dev/null and b/public/terrain/19/858599/354030.terrain differ diff --git a/public/terrain/19/858599/354031.terrain b/public/terrain/19/858599/354031.terrain new file mode 100644 index 000000000..4d831483c Binary files /dev/null and b/public/terrain/19/858599/354031.terrain differ diff --git a/public/terrain/19/858599/354032.terrain b/public/terrain/19/858599/354032.terrain new file mode 100644 index 000000000..cb3568d98 Binary files /dev/null and b/public/terrain/19/858599/354032.terrain differ diff --git a/public/terrain/19/858599/354033.terrain b/public/terrain/19/858599/354033.terrain new file mode 100644 index 000000000..11167befc Binary files /dev/null and b/public/terrain/19/858599/354033.terrain differ diff --git a/public/terrain/19/858599/354034.terrain b/public/terrain/19/858599/354034.terrain new file mode 100644 index 000000000..7564c72d8 Binary files /dev/null and b/public/terrain/19/858599/354034.terrain differ diff --git a/public/terrain/19/858599/354035.terrain b/public/terrain/19/858599/354035.terrain new file mode 100644 index 000000000..47c4a7602 Binary files /dev/null and b/public/terrain/19/858599/354035.terrain differ diff --git a/public/terrain/19/858599/354036.terrain b/public/terrain/19/858599/354036.terrain new file mode 100644 index 000000000..ed50c0e03 Binary files /dev/null and b/public/terrain/19/858599/354036.terrain differ diff --git a/public/terrain/19/858599/354037.terrain b/public/terrain/19/858599/354037.terrain new file mode 100644 index 000000000..53f633155 Binary files /dev/null and b/public/terrain/19/858599/354037.terrain differ diff --git a/public/terrain/19/858599/354038.terrain b/public/terrain/19/858599/354038.terrain new file mode 100644 index 000000000..393058420 Binary files /dev/null and b/public/terrain/19/858599/354038.terrain differ diff --git a/public/terrain/19/858599/354039.terrain b/public/terrain/19/858599/354039.terrain new file mode 100644 index 000000000..855ce0df4 Binary files /dev/null and b/public/terrain/19/858599/354039.terrain differ diff --git a/public/terrain/19/858599/354040.terrain b/public/terrain/19/858599/354040.terrain new file mode 100644 index 000000000..5ff3bd088 Binary files /dev/null and b/public/terrain/19/858599/354040.terrain differ diff --git a/public/terrain/19/858599/354041.terrain b/public/terrain/19/858599/354041.terrain new file mode 100644 index 000000000..7b6095901 Binary files /dev/null and b/public/terrain/19/858599/354041.terrain differ diff --git a/public/terrain/19/858599/354042.terrain b/public/terrain/19/858599/354042.terrain new file mode 100644 index 000000000..02209e320 Binary files /dev/null and b/public/terrain/19/858599/354042.terrain differ diff --git a/public/terrain/19/858599/354043.terrain b/public/terrain/19/858599/354043.terrain new file mode 100644 index 000000000..5b56955eb Binary files /dev/null and b/public/terrain/19/858599/354043.terrain differ diff --git a/public/terrain/19/858599/354044.terrain b/public/terrain/19/858599/354044.terrain new file mode 100644 index 000000000..ef731f610 Binary files /dev/null and b/public/terrain/19/858599/354044.terrain differ diff --git a/public/terrain/19/858599/354045.terrain b/public/terrain/19/858599/354045.terrain new file mode 100644 index 000000000..609d9d15d Binary files /dev/null and b/public/terrain/19/858599/354045.terrain differ diff --git a/public/terrain/19/858599/354046.terrain b/public/terrain/19/858599/354046.terrain new file mode 100644 index 000000000..84fe040f3 Binary files /dev/null and b/public/terrain/19/858599/354046.terrain differ diff --git a/public/terrain/19/858599/354047.terrain b/public/terrain/19/858599/354047.terrain new file mode 100644 index 000000000..5ae4c90e1 Binary files /dev/null and b/public/terrain/19/858599/354047.terrain differ diff --git a/public/terrain/19/858599/354048.terrain b/public/terrain/19/858599/354048.terrain new file mode 100644 index 000000000..c018eac61 Binary files /dev/null and b/public/terrain/19/858599/354048.terrain differ diff --git a/public/terrain/19/858599/354049.terrain b/public/terrain/19/858599/354049.terrain new file mode 100644 index 000000000..785a9d18e Binary files /dev/null and b/public/terrain/19/858599/354049.terrain differ diff --git a/public/terrain/19/858599/354050.terrain b/public/terrain/19/858599/354050.terrain new file mode 100644 index 000000000..efcace51c Binary files /dev/null and b/public/terrain/19/858599/354050.terrain differ diff --git a/public/terrain/19/858599/354051.terrain b/public/terrain/19/858599/354051.terrain new file mode 100644 index 000000000..4827976f8 Binary files /dev/null and b/public/terrain/19/858599/354051.terrain differ diff --git a/public/terrain/19/858599/354052.terrain b/public/terrain/19/858599/354052.terrain new file mode 100644 index 000000000..f62220d35 Binary files /dev/null and b/public/terrain/19/858599/354052.terrain differ diff --git a/public/terrain/19/858599/354053.terrain b/public/terrain/19/858599/354053.terrain new file mode 100644 index 000000000..dddfcda00 Binary files /dev/null and b/public/terrain/19/858599/354053.terrain differ diff --git a/public/terrain/19/858599/354054.terrain b/public/terrain/19/858599/354054.terrain new file mode 100644 index 000000000..fadad54d4 Binary files /dev/null and b/public/terrain/19/858599/354054.terrain differ diff --git a/public/terrain/19/858599/354055.terrain b/public/terrain/19/858599/354055.terrain new file mode 100644 index 000000000..5c1f518be Binary files /dev/null and b/public/terrain/19/858599/354055.terrain differ diff --git a/public/terrain/19/858599/354056.terrain b/public/terrain/19/858599/354056.terrain new file mode 100644 index 000000000..aa08de8ac Binary files /dev/null and b/public/terrain/19/858599/354056.terrain differ diff --git a/public/terrain/19/858599/354057.terrain b/public/terrain/19/858599/354057.terrain new file mode 100644 index 000000000..1f7dbe71f Binary files /dev/null and b/public/terrain/19/858599/354057.terrain differ diff --git a/public/terrain/19/858599/354058.terrain b/public/terrain/19/858599/354058.terrain new file mode 100644 index 000000000..d2a38ce4d Binary files /dev/null and b/public/terrain/19/858599/354058.terrain differ diff --git a/public/terrain/19/858599/354059.terrain b/public/terrain/19/858599/354059.terrain new file mode 100644 index 000000000..4225674c2 Binary files /dev/null and b/public/terrain/19/858599/354059.terrain differ diff --git a/public/terrain/19/858600/353743.terrain b/public/terrain/19/858600/353743.terrain new file mode 100644 index 000000000..15bccb881 Binary files /dev/null and b/public/terrain/19/858600/353743.terrain differ diff --git a/public/terrain/19/858600/353744.terrain b/public/terrain/19/858600/353744.terrain new file mode 100644 index 000000000..b70401215 Binary files /dev/null and b/public/terrain/19/858600/353744.terrain differ diff --git a/public/terrain/19/858600/353745.terrain b/public/terrain/19/858600/353745.terrain new file mode 100644 index 000000000..53f8c3fc8 Binary files /dev/null and b/public/terrain/19/858600/353745.terrain differ diff --git a/public/terrain/19/858600/353746.terrain b/public/terrain/19/858600/353746.terrain new file mode 100644 index 000000000..b571cfb84 Binary files /dev/null and b/public/terrain/19/858600/353746.terrain differ diff --git a/public/terrain/19/858600/353747.terrain b/public/terrain/19/858600/353747.terrain new file mode 100644 index 000000000..325b9d578 Binary files /dev/null and b/public/terrain/19/858600/353747.terrain differ diff --git a/public/terrain/19/858600/353748.terrain b/public/terrain/19/858600/353748.terrain new file mode 100644 index 000000000..eecbbcb0f Binary files /dev/null and b/public/terrain/19/858600/353748.terrain differ diff --git a/public/terrain/19/858600/353749.terrain b/public/terrain/19/858600/353749.terrain new file mode 100644 index 000000000..04c67ef56 Binary files /dev/null and b/public/terrain/19/858600/353749.terrain differ diff --git a/public/terrain/19/858600/353750.terrain b/public/terrain/19/858600/353750.terrain new file mode 100644 index 000000000..35526c2d7 Binary files /dev/null and b/public/terrain/19/858600/353750.terrain differ diff --git a/public/terrain/19/858600/353751.terrain b/public/terrain/19/858600/353751.terrain new file mode 100644 index 000000000..938f73dc8 Binary files /dev/null and b/public/terrain/19/858600/353751.terrain differ diff --git a/public/terrain/19/858600/353752.terrain b/public/terrain/19/858600/353752.terrain new file mode 100644 index 000000000..6fb27b26b Binary files /dev/null and b/public/terrain/19/858600/353752.terrain differ diff --git a/public/terrain/19/858600/353753.terrain b/public/terrain/19/858600/353753.terrain new file mode 100644 index 000000000..c763b391a Binary files /dev/null and b/public/terrain/19/858600/353753.terrain differ diff --git a/public/terrain/19/858600/353754.terrain b/public/terrain/19/858600/353754.terrain new file mode 100644 index 000000000..c8502be64 Binary files /dev/null and b/public/terrain/19/858600/353754.terrain differ diff --git a/public/terrain/19/858600/353755.terrain b/public/terrain/19/858600/353755.terrain new file mode 100644 index 000000000..d2e3445b1 Binary files /dev/null and b/public/terrain/19/858600/353755.terrain differ diff --git a/public/terrain/19/858600/353756.terrain b/public/terrain/19/858600/353756.terrain new file mode 100644 index 000000000..f04887bb2 Binary files /dev/null and b/public/terrain/19/858600/353756.terrain differ diff --git a/public/terrain/19/858600/353757.terrain b/public/terrain/19/858600/353757.terrain new file mode 100644 index 000000000..533c13ab8 Binary files /dev/null and b/public/terrain/19/858600/353757.terrain differ diff --git a/public/terrain/19/858600/353758.terrain b/public/terrain/19/858600/353758.terrain new file mode 100644 index 000000000..79f7b10e7 Binary files /dev/null and b/public/terrain/19/858600/353758.terrain differ diff --git a/public/terrain/19/858600/353759.terrain b/public/terrain/19/858600/353759.terrain new file mode 100644 index 000000000..2e4f9dd77 Binary files /dev/null and b/public/terrain/19/858600/353759.terrain differ diff --git a/public/terrain/19/858600/353760.terrain b/public/terrain/19/858600/353760.terrain new file mode 100644 index 000000000..7eefe9e1f Binary files /dev/null and b/public/terrain/19/858600/353760.terrain differ diff --git a/public/terrain/19/858600/353761.terrain b/public/terrain/19/858600/353761.terrain new file mode 100644 index 000000000..8a0d82a07 Binary files /dev/null and b/public/terrain/19/858600/353761.terrain differ diff --git a/public/terrain/19/858600/353762.terrain b/public/terrain/19/858600/353762.terrain new file mode 100644 index 000000000..67902965f Binary files /dev/null and b/public/terrain/19/858600/353762.terrain differ diff --git a/public/terrain/19/858600/353763.terrain b/public/terrain/19/858600/353763.terrain new file mode 100644 index 000000000..46bb845cf Binary files /dev/null and b/public/terrain/19/858600/353763.terrain differ diff --git a/public/terrain/19/858600/353764.terrain b/public/terrain/19/858600/353764.terrain new file mode 100644 index 000000000..4cd1a81f1 Binary files /dev/null and b/public/terrain/19/858600/353764.terrain differ diff --git a/public/terrain/19/858600/353765.terrain b/public/terrain/19/858600/353765.terrain new file mode 100644 index 000000000..12e937856 Binary files /dev/null and b/public/terrain/19/858600/353765.terrain differ diff --git a/public/terrain/19/858600/353766.terrain b/public/terrain/19/858600/353766.terrain new file mode 100644 index 000000000..9a4717d90 Binary files /dev/null and b/public/terrain/19/858600/353766.terrain differ diff --git a/public/terrain/19/858600/353767.terrain b/public/terrain/19/858600/353767.terrain new file mode 100644 index 000000000..9167ab498 Binary files /dev/null and b/public/terrain/19/858600/353767.terrain differ diff --git a/public/terrain/19/858600/353768.terrain b/public/terrain/19/858600/353768.terrain new file mode 100644 index 000000000..9af2100ba Binary files /dev/null and b/public/terrain/19/858600/353768.terrain differ diff --git a/public/terrain/19/858600/353769.terrain b/public/terrain/19/858600/353769.terrain new file mode 100644 index 000000000..1a0213ef8 Binary files /dev/null and b/public/terrain/19/858600/353769.terrain differ diff --git a/public/terrain/19/858600/353770.terrain b/public/terrain/19/858600/353770.terrain new file mode 100644 index 000000000..03ece43a7 Binary files /dev/null and b/public/terrain/19/858600/353770.terrain differ diff --git a/public/terrain/19/858600/353771.terrain b/public/terrain/19/858600/353771.terrain new file mode 100644 index 000000000..3a15b48d3 Binary files /dev/null and b/public/terrain/19/858600/353771.terrain differ diff --git a/public/terrain/19/858600/353772.terrain b/public/terrain/19/858600/353772.terrain new file mode 100644 index 000000000..4f8dd9720 Binary files /dev/null and b/public/terrain/19/858600/353772.terrain differ diff --git a/public/terrain/19/858600/353773.terrain b/public/terrain/19/858600/353773.terrain new file mode 100644 index 000000000..c512d4988 Binary files /dev/null and b/public/terrain/19/858600/353773.terrain differ diff --git a/public/terrain/19/858600/353774.terrain b/public/terrain/19/858600/353774.terrain new file mode 100644 index 000000000..45b331a69 Binary files /dev/null and b/public/terrain/19/858600/353774.terrain differ diff --git a/public/terrain/19/858600/353775.terrain b/public/terrain/19/858600/353775.terrain new file mode 100644 index 000000000..4685ebdc5 Binary files /dev/null and b/public/terrain/19/858600/353775.terrain differ diff --git a/public/terrain/19/858600/353776.terrain b/public/terrain/19/858600/353776.terrain new file mode 100644 index 000000000..1a6037698 Binary files /dev/null and b/public/terrain/19/858600/353776.terrain differ diff --git a/public/terrain/19/858600/353777.terrain b/public/terrain/19/858600/353777.terrain new file mode 100644 index 000000000..f57756355 Binary files /dev/null and b/public/terrain/19/858600/353777.terrain differ diff --git a/public/terrain/19/858600/353778.terrain b/public/terrain/19/858600/353778.terrain new file mode 100644 index 000000000..ed4113a35 Binary files /dev/null and b/public/terrain/19/858600/353778.terrain differ diff --git a/public/terrain/19/858600/353779.terrain b/public/terrain/19/858600/353779.terrain new file mode 100644 index 000000000..0ad52d4a4 Binary files /dev/null and b/public/terrain/19/858600/353779.terrain differ diff --git a/public/terrain/19/858600/353780.terrain b/public/terrain/19/858600/353780.terrain new file mode 100644 index 000000000..9b4060484 Binary files /dev/null and b/public/terrain/19/858600/353780.terrain differ diff --git a/public/terrain/19/858600/353781.terrain b/public/terrain/19/858600/353781.terrain new file mode 100644 index 000000000..632cc80ee Binary files /dev/null and b/public/terrain/19/858600/353781.terrain differ diff --git a/public/terrain/19/858600/353782.terrain b/public/terrain/19/858600/353782.terrain new file mode 100644 index 000000000..de1c44134 Binary files /dev/null and b/public/terrain/19/858600/353782.terrain differ diff --git a/public/terrain/19/858600/353783.terrain b/public/terrain/19/858600/353783.terrain new file mode 100644 index 000000000..5102d7088 Binary files /dev/null and b/public/terrain/19/858600/353783.terrain differ diff --git a/public/terrain/19/858600/353784.terrain b/public/terrain/19/858600/353784.terrain new file mode 100644 index 000000000..f614abe95 Binary files /dev/null and b/public/terrain/19/858600/353784.terrain differ diff --git a/public/terrain/19/858600/353785.terrain b/public/terrain/19/858600/353785.terrain new file mode 100644 index 000000000..f244c6e61 Binary files /dev/null and b/public/terrain/19/858600/353785.terrain differ diff --git a/public/terrain/19/858600/353786.terrain b/public/terrain/19/858600/353786.terrain new file mode 100644 index 000000000..0e6dc0e05 Binary files /dev/null and b/public/terrain/19/858600/353786.terrain differ diff --git a/public/terrain/19/858600/353787.terrain b/public/terrain/19/858600/353787.terrain new file mode 100644 index 000000000..94885302b Binary files /dev/null and b/public/terrain/19/858600/353787.terrain differ diff --git a/public/terrain/19/858600/353788.terrain b/public/terrain/19/858600/353788.terrain new file mode 100644 index 000000000..11bf51c40 Binary files /dev/null and b/public/terrain/19/858600/353788.terrain differ diff --git a/public/terrain/19/858600/353789.terrain b/public/terrain/19/858600/353789.terrain new file mode 100644 index 000000000..8840ed76f Binary files /dev/null and b/public/terrain/19/858600/353789.terrain differ diff --git a/public/terrain/19/858600/353790.terrain b/public/terrain/19/858600/353790.terrain new file mode 100644 index 000000000..80f6df667 Binary files /dev/null and b/public/terrain/19/858600/353790.terrain differ diff --git a/public/terrain/19/858600/353791.terrain b/public/terrain/19/858600/353791.terrain new file mode 100644 index 000000000..9092944df Binary files /dev/null and b/public/terrain/19/858600/353791.terrain differ diff --git a/public/terrain/19/858600/353792.terrain b/public/terrain/19/858600/353792.terrain new file mode 100644 index 000000000..77d5b5df7 Binary files /dev/null and b/public/terrain/19/858600/353792.terrain differ diff --git a/public/terrain/19/858600/353793.terrain b/public/terrain/19/858600/353793.terrain new file mode 100644 index 000000000..51703a5c7 Binary files /dev/null and b/public/terrain/19/858600/353793.terrain differ diff --git a/public/terrain/19/858600/353794.terrain b/public/terrain/19/858600/353794.terrain new file mode 100644 index 000000000..3809e3c2f Binary files /dev/null and b/public/terrain/19/858600/353794.terrain differ diff --git a/public/terrain/19/858600/353795.terrain b/public/terrain/19/858600/353795.terrain new file mode 100644 index 000000000..a8ec15b19 Binary files /dev/null and b/public/terrain/19/858600/353795.terrain differ diff --git a/public/terrain/19/858600/353796.terrain b/public/terrain/19/858600/353796.terrain new file mode 100644 index 000000000..e03fc13c0 Binary files /dev/null and b/public/terrain/19/858600/353796.terrain differ diff --git a/public/terrain/19/858600/353797.terrain b/public/terrain/19/858600/353797.terrain new file mode 100644 index 000000000..7717cc2c4 Binary files /dev/null and b/public/terrain/19/858600/353797.terrain differ diff --git a/public/terrain/19/858600/353798.terrain b/public/terrain/19/858600/353798.terrain new file mode 100644 index 000000000..33347f921 Binary files /dev/null and b/public/terrain/19/858600/353798.terrain differ diff --git a/public/terrain/19/858600/353799.terrain b/public/terrain/19/858600/353799.terrain new file mode 100644 index 000000000..98e2053fc Binary files /dev/null and b/public/terrain/19/858600/353799.terrain differ diff --git a/public/terrain/19/858600/353800.terrain b/public/terrain/19/858600/353800.terrain new file mode 100644 index 000000000..6ff368f2a Binary files /dev/null and b/public/terrain/19/858600/353800.terrain differ diff --git a/public/terrain/19/858600/353801.terrain b/public/terrain/19/858600/353801.terrain new file mode 100644 index 000000000..8805340e8 Binary files /dev/null and b/public/terrain/19/858600/353801.terrain differ diff --git a/public/terrain/19/858600/353802.terrain b/public/terrain/19/858600/353802.terrain new file mode 100644 index 000000000..bc826e96c Binary files /dev/null and b/public/terrain/19/858600/353802.terrain differ diff --git a/public/terrain/19/858600/353803.terrain b/public/terrain/19/858600/353803.terrain new file mode 100644 index 000000000..4c4f2d37f Binary files /dev/null and b/public/terrain/19/858600/353803.terrain differ diff --git a/public/terrain/19/858600/353804.terrain b/public/terrain/19/858600/353804.terrain new file mode 100644 index 000000000..1533d9332 Binary files /dev/null and b/public/terrain/19/858600/353804.terrain differ diff --git a/public/terrain/19/858600/353805.terrain b/public/terrain/19/858600/353805.terrain new file mode 100644 index 000000000..2a09d2e4b Binary files /dev/null and b/public/terrain/19/858600/353805.terrain differ diff --git a/public/terrain/19/858600/353806.terrain b/public/terrain/19/858600/353806.terrain new file mode 100644 index 000000000..118dad517 Binary files /dev/null and b/public/terrain/19/858600/353806.terrain differ diff --git a/public/terrain/19/858600/353807.terrain b/public/terrain/19/858600/353807.terrain new file mode 100644 index 000000000..f75abd401 Binary files /dev/null and b/public/terrain/19/858600/353807.terrain differ diff --git a/public/terrain/19/858600/353808.terrain b/public/terrain/19/858600/353808.terrain new file mode 100644 index 000000000..9f8563ad3 Binary files /dev/null and b/public/terrain/19/858600/353808.terrain differ diff --git a/public/terrain/19/858600/353809.terrain b/public/terrain/19/858600/353809.terrain new file mode 100644 index 000000000..efd021748 Binary files /dev/null and b/public/terrain/19/858600/353809.terrain differ diff --git a/public/terrain/19/858600/353810.terrain b/public/terrain/19/858600/353810.terrain new file mode 100644 index 000000000..0b501afca Binary files /dev/null and b/public/terrain/19/858600/353810.terrain differ diff --git a/public/terrain/19/858600/353811.terrain b/public/terrain/19/858600/353811.terrain new file mode 100644 index 000000000..684560d0d Binary files /dev/null and b/public/terrain/19/858600/353811.terrain differ diff --git a/public/terrain/19/858600/353812.terrain b/public/terrain/19/858600/353812.terrain new file mode 100644 index 000000000..a021023b1 Binary files /dev/null and b/public/terrain/19/858600/353812.terrain differ diff --git a/public/terrain/19/858600/353813.terrain b/public/terrain/19/858600/353813.terrain new file mode 100644 index 000000000..4110b753f Binary files /dev/null and b/public/terrain/19/858600/353813.terrain differ diff --git a/public/terrain/19/858600/353814.terrain b/public/terrain/19/858600/353814.terrain new file mode 100644 index 000000000..85c1e105e Binary files /dev/null and b/public/terrain/19/858600/353814.terrain differ diff --git a/public/terrain/19/858600/353815.terrain b/public/terrain/19/858600/353815.terrain new file mode 100644 index 000000000..c475dd9df Binary files /dev/null and b/public/terrain/19/858600/353815.terrain differ diff --git a/public/terrain/19/858600/353816.terrain b/public/terrain/19/858600/353816.terrain new file mode 100644 index 000000000..526261a5e Binary files /dev/null and b/public/terrain/19/858600/353816.terrain differ diff --git a/public/terrain/19/858600/353817.terrain b/public/terrain/19/858600/353817.terrain new file mode 100644 index 000000000..c1a996de8 Binary files /dev/null and b/public/terrain/19/858600/353817.terrain differ diff --git a/public/terrain/19/858600/353818.terrain b/public/terrain/19/858600/353818.terrain new file mode 100644 index 000000000..632c01db9 Binary files /dev/null and b/public/terrain/19/858600/353818.terrain differ diff --git a/public/terrain/19/858600/353819.terrain b/public/terrain/19/858600/353819.terrain new file mode 100644 index 000000000..426c72e09 Binary files /dev/null and b/public/terrain/19/858600/353819.terrain differ diff --git a/public/terrain/19/858600/353820.terrain b/public/terrain/19/858600/353820.terrain new file mode 100644 index 000000000..3ee1af8c5 Binary files /dev/null and b/public/terrain/19/858600/353820.terrain differ diff --git a/public/terrain/19/858600/353821.terrain b/public/terrain/19/858600/353821.terrain new file mode 100644 index 000000000..182f19cec Binary files /dev/null and b/public/terrain/19/858600/353821.terrain differ diff --git a/public/terrain/19/858600/353822.terrain b/public/terrain/19/858600/353822.terrain new file mode 100644 index 000000000..f7a77ef8a Binary files /dev/null and b/public/terrain/19/858600/353822.terrain differ diff --git a/public/terrain/19/858600/353823.terrain b/public/terrain/19/858600/353823.terrain new file mode 100644 index 000000000..286893953 Binary files /dev/null and b/public/terrain/19/858600/353823.terrain differ diff --git a/public/terrain/19/858600/353824.terrain b/public/terrain/19/858600/353824.terrain new file mode 100644 index 000000000..a42f86f1b Binary files /dev/null and b/public/terrain/19/858600/353824.terrain differ diff --git a/public/terrain/19/858600/353825.terrain b/public/terrain/19/858600/353825.terrain new file mode 100644 index 000000000..3c971ed1b Binary files /dev/null and b/public/terrain/19/858600/353825.terrain differ diff --git a/public/terrain/19/858600/353826.terrain b/public/terrain/19/858600/353826.terrain new file mode 100644 index 000000000..45ee11881 Binary files /dev/null and b/public/terrain/19/858600/353826.terrain differ diff --git a/public/terrain/19/858600/353827.terrain b/public/terrain/19/858600/353827.terrain new file mode 100644 index 000000000..e46b7cc67 Binary files /dev/null and b/public/terrain/19/858600/353827.terrain differ diff --git a/public/terrain/19/858600/353828.terrain b/public/terrain/19/858600/353828.terrain new file mode 100644 index 000000000..d7251db39 Binary files /dev/null and b/public/terrain/19/858600/353828.terrain differ diff --git a/public/terrain/19/858600/353829.terrain b/public/terrain/19/858600/353829.terrain new file mode 100644 index 000000000..9f8d1e3e0 Binary files /dev/null and b/public/terrain/19/858600/353829.terrain differ diff --git a/public/terrain/19/858600/353830.terrain b/public/terrain/19/858600/353830.terrain new file mode 100644 index 000000000..6c8066aac Binary files /dev/null and b/public/terrain/19/858600/353830.terrain differ diff --git a/public/terrain/19/858600/353831.terrain b/public/terrain/19/858600/353831.terrain new file mode 100644 index 000000000..1e44b06e5 Binary files /dev/null and b/public/terrain/19/858600/353831.terrain differ diff --git a/public/terrain/19/858600/353832.terrain b/public/terrain/19/858600/353832.terrain new file mode 100644 index 000000000..482671bba Binary files /dev/null and b/public/terrain/19/858600/353832.terrain differ diff --git a/public/terrain/19/858600/353833.terrain b/public/terrain/19/858600/353833.terrain new file mode 100644 index 000000000..a79df9cde Binary files /dev/null and b/public/terrain/19/858600/353833.terrain differ diff --git a/public/terrain/19/858600/353834.terrain b/public/terrain/19/858600/353834.terrain new file mode 100644 index 000000000..eb55b52b6 Binary files /dev/null and b/public/terrain/19/858600/353834.terrain differ diff --git a/public/terrain/19/858600/353835.terrain b/public/terrain/19/858600/353835.terrain new file mode 100644 index 000000000..7db6e9d67 Binary files /dev/null and b/public/terrain/19/858600/353835.terrain differ diff --git a/public/terrain/19/858600/353836.terrain b/public/terrain/19/858600/353836.terrain new file mode 100644 index 000000000..c85101a15 Binary files /dev/null and b/public/terrain/19/858600/353836.terrain differ diff --git a/public/terrain/19/858600/353837.terrain b/public/terrain/19/858600/353837.terrain new file mode 100644 index 000000000..4ec7dddf3 Binary files /dev/null and b/public/terrain/19/858600/353837.terrain differ diff --git a/public/terrain/19/858600/353838.terrain b/public/terrain/19/858600/353838.terrain new file mode 100644 index 000000000..a103660db Binary files /dev/null and b/public/terrain/19/858600/353838.terrain differ diff --git a/public/terrain/19/858600/353839.terrain b/public/terrain/19/858600/353839.terrain new file mode 100644 index 000000000..9c80740ac Binary files /dev/null and b/public/terrain/19/858600/353839.terrain differ diff --git a/public/terrain/19/858600/353840.terrain b/public/terrain/19/858600/353840.terrain new file mode 100644 index 000000000..cccdeec49 Binary files /dev/null and b/public/terrain/19/858600/353840.terrain differ diff --git a/public/terrain/19/858600/353841.terrain b/public/terrain/19/858600/353841.terrain new file mode 100644 index 000000000..44a2e9775 Binary files /dev/null and b/public/terrain/19/858600/353841.terrain differ diff --git a/public/terrain/19/858600/353842.terrain b/public/terrain/19/858600/353842.terrain new file mode 100644 index 000000000..cf6eebc83 Binary files /dev/null and b/public/terrain/19/858600/353842.terrain differ diff --git a/public/terrain/19/858600/353843.terrain b/public/terrain/19/858600/353843.terrain new file mode 100644 index 000000000..157d4cac9 Binary files /dev/null and b/public/terrain/19/858600/353843.terrain differ diff --git a/public/terrain/19/858600/353844.terrain b/public/terrain/19/858600/353844.terrain new file mode 100644 index 000000000..bd63562ae Binary files /dev/null and b/public/terrain/19/858600/353844.terrain differ diff --git a/public/terrain/19/858600/353845.terrain b/public/terrain/19/858600/353845.terrain new file mode 100644 index 000000000..34e8a4d09 Binary files /dev/null and b/public/terrain/19/858600/353845.terrain differ diff --git a/public/terrain/19/858600/353846.terrain b/public/terrain/19/858600/353846.terrain new file mode 100644 index 000000000..64051b4ca Binary files /dev/null and b/public/terrain/19/858600/353846.terrain differ diff --git a/public/terrain/19/858600/353847.terrain b/public/terrain/19/858600/353847.terrain new file mode 100644 index 000000000..3a5116fc7 Binary files /dev/null and b/public/terrain/19/858600/353847.terrain differ diff --git a/public/terrain/19/858600/353848.terrain b/public/terrain/19/858600/353848.terrain new file mode 100644 index 000000000..10c34d323 Binary files /dev/null and b/public/terrain/19/858600/353848.terrain differ diff --git a/public/terrain/19/858600/353849.terrain b/public/terrain/19/858600/353849.terrain new file mode 100644 index 000000000..b97fc9fae Binary files /dev/null and b/public/terrain/19/858600/353849.terrain differ diff --git a/public/terrain/19/858600/353850.terrain b/public/terrain/19/858600/353850.terrain new file mode 100644 index 000000000..43f3c662a Binary files /dev/null and b/public/terrain/19/858600/353850.terrain differ diff --git a/public/terrain/19/858600/353851.terrain b/public/terrain/19/858600/353851.terrain new file mode 100644 index 000000000..79ff025e6 Binary files /dev/null and b/public/terrain/19/858600/353851.terrain differ diff --git a/public/terrain/19/858600/353852.terrain b/public/terrain/19/858600/353852.terrain new file mode 100644 index 000000000..6de5ca361 Binary files /dev/null and b/public/terrain/19/858600/353852.terrain differ diff --git a/public/terrain/19/858600/353853.terrain b/public/terrain/19/858600/353853.terrain new file mode 100644 index 000000000..bc61409b6 Binary files /dev/null and b/public/terrain/19/858600/353853.terrain differ diff --git a/public/terrain/19/858600/353854.terrain b/public/terrain/19/858600/353854.terrain new file mode 100644 index 000000000..0406b0e98 Binary files /dev/null and b/public/terrain/19/858600/353854.terrain differ diff --git a/public/terrain/19/858600/353855.terrain b/public/terrain/19/858600/353855.terrain new file mode 100644 index 000000000..f4d1c7192 Binary files /dev/null and b/public/terrain/19/858600/353855.terrain differ diff --git a/public/terrain/19/858600/353856.terrain b/public/terrain/19/858600/353856.terrain new file mode 100644 index 000000000..5e12e7243 Binary files /dev/null and b/public/terrain/19/858600/353856.terrain differ diff --git a/public/terrain/19/858600/353857.terrain b/public/terrain/19/858600/353857.terrain new file mode 100644 index 000000000..399c66162 Binary files /dev/null and b/public/terrain/19/858600/353857.terrain differ diff --git a/public/terrain/19/858600/353858.terrain b/public/terrain/19/858600/353858.terrain new file mode 100644 index 000000000..86baa9d33 Binary files /dev/null and b/public/terrain/19/858600/353858.terrain differ diff --git a/public/terrain/19/858600/353859.terrain b/public/terrain/19/858600/353859.terrain new file mode 100644 index 000000000..2ea7afadf Binary files /dev/null and b/public/terrain/19/858600/353859.terrain differ diff --git a/public/terrain/19/858600/353860.terrain b/public/terrain/19/858600/353860.terrain new file mode 100644 index 000000000..e7a0fb86f Binary files /dev/null and b/public/terrain/19/858600/353860.terrain differ diff --git a/public/terrain/19/858600/353861.terrain b/public/terrain/19/858600/353861.terrain new file mode 100644 index 000000000..74da28400 Binary files /dev/null and b/public/terrain/19/858600/353861.terrain differ diff --git a/public/terrain/19/858600/353862.terrain b/public/terrain/19/858600/353862.terrain new file mode 100644 index 000000000..31c5fc95e Binary files /dev/null and b/public/terrain/19/858600/353862.terrain differ diff --git a/public/terrain/19/858600/353863.terrain b/public/terrain/19/858600/353863.terrain new file mode 100644 index 000000000..aa1c974b3 Binary files /dev/null and b/public/terrain/19/858600/353863.terrain differ diff --git a/public/terrain/19/858600/353864.terrain b/public/terrain/19/858600/353864.terrain new file mode 100644 index 000000000..804b42a6a Binary files /dev/null and b/public/terrain/19/858600/353864.terrain differ diff --git a/public/terrain/19/858600/353865.terrain b/public/terrain/19/858600/353865.terrain new file mode 100644 index 000000000..ba8d9e05b Binary files /dev/null and b/public/terrain/19/858600/353865.terrain differ diff --git a/public/terrain/19/858600/353866.terrain b/public/terrain/19/858600/353866.terrain new file mode 100644 index 000000000..fff731374 Binary files /dev/null and b/public/terrain/19/858600/353866.terrain differ diff --git a/public/terrain/19/858600/353867.terrain b/public/terrain/19/858600/353867.terrain new file mode 100644 index 000000000..05d6feac9 Binary files /dev/null and b/public/terrain/19/858600/353867.terrain differ diff --git a/public/terrain/19/858600/353868.terrain b/public/terrain/19/858600/353868.terrain new file mode 100644 index 000000000..32f8db7b8 Binary files /dev/null and b/public/terrain/19/858600/353868.terrain differ diff --git a/public/terrain/19/858600/353869.terrain b/public/terrain/19/858600/353869.terrain new file mode 100644 index 000000000..a60f91a40 Binary files /dev/null and b/public/terrain/19/858600/353869.terrain differ diff --git a/public/terrain/19/858600/353870.terrain b/public/terrain/19/858600/353870.terrain new file mode 100644 index 000000000..9d33d7d0d Binary files /dev/null and b/public/terrain/19/858600/353870.terrain differ diff --git a/public/terrain/19/858600/353871.terrain b/public/terrain/19/858600/353871.terrain new file mode 100644 index 000000000..573f7f955 Binary files /dev/null and b/public/terrain/19/858600/353871.terrain differ diff --git a/public/terrain/19/858600/353872.terrain b/public/terrain/19/858600/353872.terrain new file mode 100644 index 000000000..c62db2d69 Binary files /dev/null and b/public/terrain/19/858600/353872.terrain differ diff --git a/public/terrain/19/858600/353873.terrain b/public/terrain/19/858600/353873.terrain new file mode 100644 index 000000000..1def1bd4d Binary files /dev/null and b/public/terrain/19/858600/353873.terrain differ diff --git a/public/terrain/19/858600/353874.terrain b/public/terrain/19/858600/353874.terrain new file mode 100644 index 000000000..429c941b9 Binary files /dev/null and b/public/terrain/19/858600/353874.terrain differ diff --git a/public/terrain/19/858600/353875.terrain b/public/terrain/19/858600/353875.terrain new file mode 100644 index 000000000..f9864fd42 Binary files /dev/null and b/public/terrain/19/858600/353875.terrain differ diff --git a/public/terrain/19/858600/353876.terrain b/public/terrain/19/858600/353876.terrain new file mode 100644 index 000000000..51058675a Binary files /dev/null and b/public/terrain/19/858600/353876.terrain differ diff --git a/public/terrain/19/858600/353877.terrain b/public/terrain/19/858600/353877.terrain new file mode 100644 index 000000000..9910566e6 Binary files /dev/null and b/public/terrain/19/858600/353877.terrain differ diff --git a/public/terrain/19/858600/353878.terrain b/public/terrain/19/858600/353878.terrain new file mode 100644 index 000000000..7389607d1 Binary files /dev/null and b/public/terrain/19/858600/353878.terrain differ diff --git a/public/terrain/19/858600/353879.terrain b/public/terrain/19/858600/353879.terrain new file mode 100644 index 000000000..ca6f6c41b Binary files /dev/null and b/public/terrain/19/858600/353879.terrain differ diff --git a/public/terrain/19/858600/353880.terrain b/public/terrain/19/858600/353880.terrain new file mode 100644 index 000000000..88dd02eb0 Binary files /dev/null and b/public/terrain/19/858600/353880.terrain differ diff --git a/public/terrain/19/858600/353881.terrain b/public/terrain/19/858600/353881.terrain new file mode 100644 index 000000000..45b469f99 Binary files /dev/null and b/public/terrain/19/858600/353881.terrain differ diff --git a/public/terrain/19/858600/353882.terrain b/public/terrain/19/858600/353882.terrain new file mode 100644 index 000000000..63cdd75d1 Binary files /dev/null and b/public/terrain/19/858600/353882.terrain differ diff --git a/public/terrain/19/858600/353883.terrain b/public/terrain/19/858600/353883.terrain new file mode 100644 index 000000000..464c69913 Binary files /dev/null and b/public/terrain/19/858600/353883.terrain differ diff --git a/public/terrain/19/858600/353884.terrain b/public/terrain/19/858600/353884.terrain new file mode 100644 index 000000000..410dbd912 Binary files /dev/null and b/public/terrain/19/858600/353884.terrain differ diff --git a/public/terrain/19/858600/353885.terrain b/public/terrain/19/858600/353885.terrain new file mode 100644 index 000000000..7c81e00e4 Binary files /dev/null and b/public/terrain/19/858600/353885.terrain differ diff --git a/public/terrain/19/858600/353886.terrain b/public/terrain/19/858600/353886.terrain new file mode 100644 index 000000000..5fb306c29 Binary files /dev/null and b/public/terrain/19/858600/353886.terrain differ diff --git a/public/terrain/19/858600/353887.terrain b/public/terrain/19/858600/353887.terrain new file mode 100644 index 000000000..d4723fcad Binary files /dev/null and b/public/terrain/19/858600/353887.terrain differ diff --git a/public/terrain/19/858600/353888.terrain b/public/terrain/19/858600/353888.terrain new file mode 100644 index 000000000..b7bf3d132 Binary files /dev/null and b/public/terrain/19/858600/353888.terrain differ diff --git a/public/terrain/19/858600/353889.terrain b/public/terrain/19/858600/353889.terrain new file mode 100644 index 000000000..562654a8a Binary files /dev/null and b/public/terrain/19/858600/353889.terrain differ diff --git a/public/terrain/19/858600/353890.terrain b/public/terrain/19/858600/353890.terrain new file mode 100644 index 000000000..3c00f8332 Binary files /dev/null and b/public/terrain/19/858600/353890.terrain differ diff --git a/public/terrain/19/858600/353891.terrain b/public/terrain/19/858600/353891.terrain new file mode 100644 index 000000000..e93039ca5 Binary files /dev/null and b/public/terrain/19/858600/353891.terrain differ diff --git a/public/terrain/19/858600/353892.terrain b/public/terrain/19/858600/353892.terrain new file mode 100644 index 000000000..7a8daaf79 Binary files /dev/null and b/public/terrain/19/858600/353892.terrain differ diff --git a/public/terrain/19/858600/353893.terrain b/public/terrain/19/858600/353893.terrain new file mode 100644 index 000000000..830fc03f5 Binary files /dev/null and b/public/terrain/19/858600/353893.terrain differ diff --git a/public/terrain/19/858600/353894.terrain b/public/terrain/19/858600/353894.terrain new file mode 100644 index 000000000..1f6208e34 Binary files /dev/null and b/public/terrain/19/858600/353894.terrain differ diff --git a/public/terrain/19/858600/353895.terrain b/public/terrain/19/858600/353895.terrain new file mode 100644 index 000000000..93add70c9 Binary files /dev/null and b/public/terrain/19/858600/353895.terrain differ diff --git a/public/terrain/19/858600/353896.terrain b/public/terrain/19/858600/353896.terrain new file mode 100644 index 000000000..10ade8aa1 Binary files /dev/null and b/public/terrain/19/858600/353896.terrain differ diff --git a/public/terrain/19/858600/353897.terrain b/public/terrain/19/858600/353897.terrain new file mode 100644 index 000000000..94de1a39f Binary files /dev/null and b/public/terrain/19/858600/353897.terrain differ diff --git a/public/terrain/19/858600/353898.terrain b/public/terrain/19/858600/353898.terrain new file mode 100644 index 000000000..d4cf84e27 Binary files /dev/null and b/public/terrain/19/858600/353898.terrain differ diff --git a/public/terrain/19/858600/353899.terrain b/public/terrain/19/858600/353899.terrain new file mode 100644 index 000000000..74761a6fe Binary files /dev/null and b/public/terrain/19/858600/353899.terrain differ diff --git a/public/terrain/19/858600/353900.terrain b/public/terrain/19/858600/353900.terrain new file mode 100644 index 000000000..c5ba74840 Binary files /dev/null and b/public/terrain/19/858600/353900.terrain differ diff --git a/public/terrain/19/858600/353901.terrain b/public/terrain/19/858600/353901.terrain new file mode 100644 index 000000000..92f174fb6 Binary files /dev/null and b/public/terrain/19/858600/353901.terrain differ diff --git a/public/terrain/19/858600/353902.terrain b/public/terrain/19/858600/353902.terrain new file mode 100644 index 000000000..2555d0162 Binary files /dev/null and b/public/terrain/19/858600/353902.terrain differ diff --git a/public/terrain/19/858600/353903.terrain b/public/terrain/19/858600/353903.terrain new file mode 100644 index 000000000..522c44c8b Binary files /dev/null and b/public/terrain/19/858600/353903.terrain differ diff --git a/public/terrain/19/858600/353904.terrain b/public/terrain/19/858600/353904.terrain new file mode 100644 index 000000000..da901b54f Binary files /dev/null and b/public/terrain/19/858600/353904.terrain differ diff --git a/public/terrain/19/858600/353905.terrain b/public/terrain/19/858600/353905.terrain new file mode 100644 index 000000000..ea32fcaad Binary files /dev/null and b/public/terrain/19/858600/353905.terrain differ diff --git a/public/terrain/19/858600/353906.terrain b/public/terrain/19/858600/353906.terrain new file mode 100644 index 000000000..f5ca23562 Binary files /dev/null and b/public/terrain/19/858600/353906.terrain differ diff --git a/public/terrain/19/858600/353907.terrain b/public/terrain/19/858600/353907.terrain new file mode 100644 index 000000000..dab454748 Binary files /dev/null and b/public/terrain/19/858600/353907.terrain differ diff --git a/public/terrain/19/858600/353908.terrain b/public/terrain/19/858600/353908.terrain new file mode 100644 index 000000000..6244192c7 Binary files /dev/null and b/public/terrain/19/858600/353908.terrain differ diff --git a/public/terrain/19/858600/353909.terrain b/public/terrain/19/858600/353909.terrain new file mode 100644 index 000000000..6f6b7bbd5 Binary files /dev/null and b/public/terrain/19/858600/353909.terrain differ diff --git a/public/terrain/19/858600/353910.terrain b/public/terrain/19/858600/353910.terrain new file mode 100644 index 000000000..421a92b11 Binary files /dev/null and b/public/terrain/19/858600/353910.terrain differ diff --git a/public/terrain/19/858600/353911.terrain b/public/terrain/19/858600/353911.terrain new file mode 100644 index 000000000..375e3f651 Binary files /dev/null and b/public/terrain/19/858600/353911.terrain differ diff --git a/public/terrain/19/858600/353912.terrain b/public/terrain/19/858600/353912.terrain new file mode 100644 index 000000000..512a01492 Binary files /dev/null and b/public/terrain/19/858600/353912.terrain differ diff --git a/public/terrain/19/858600/353913.terrain b/public/terrain/19/858600/353913.terrain new file mode 100644 index 000000000..f2cbd566f Binary files /dev/null and b/public/terrain/19/858600/353913.terrain differ diff --git a/public/terrain/19/858600/353914.terrain b/public/terrain/19/858600/353914.terrain new file mode 100644 index 000000000..a0fdb01c9 Binary files /dev/null and b/public/terrain/19/858600/353914.terrain differ diff --git a/public/terrain/19/858600/353915.terrain b/public/terrain/19/858600/353915.terrain new file mode 100644 index 000000000..97e6c6821 Binary files /dev/null and b/public/terrain/19/858600/353915.terrain differ diff --git a/public/terrain/19/858600/353916.terrain b/public/terrain/19/858600/353916.terrain new file mode 100644 index 000000000..185af1e7b Binary files /dev/null and b/public/terrain/19/858600/353916.terrain differ diff --git a/public/terrain/19/858600/353917.terrain b/public/terrain/19/858600/353917.terrain new file mode 100644 index 000000000..131e5beef Binary files /dev/null and b/public/terrain/19/858600/353917.terrain differ diff --git a/public/terrain/19/858600/353918.terrain b/public/terrain/19/858600/353918.terrain new file mode 100644 index 000000000..5912c3348 Binary files /dev/null and b/public/terrain/19/858600/353918.terrain differ diff --git a/public/terrain/19/858600/353919.terrain b/public/terrain/19/858600/353919.terrain new file mode 100644 index 000000000..95b8fa535 Binary files /dev/null and b/public/terrain/19/858600/353919.terrain differ diff --git a/public/terrain/19/858600/353920.terrain b/public/terrain/19/858600/353920.terrain new file mode 100644 index 000000000..1331db600 Binary files /dev/null and b/public/terrain/19/858600/353920.terrain differ diff --git a/public/terrain/19/858600/353921.terrain b/public/terrain/19/858600/353921.terrain new file mode 100644 index 000000000..afceca95f Binary files /dev/null and b/public/terrain/19/858600/353921.terrain differ diff --git a/public/terrain/19/858600/353922.terrain b/public/terrain/19/858600/353922.terrain new file mode 100644 index 000000000..3e5f5fee0 Binary files /dev/null and b/public/terrain/19/858600/353922.terrain differ diff --git a/public/terrain/19/858600/353923.terrain b/public/terrain/19/858600/353923.terrain new file mode 100644 index 000000000..8545af717 Binary files /dev/null and b/public/terrain/19/858600/353923.terrain differ diff --git a/public/terrain/19/858600/353924.terrain b/public/terrain/19/858600/353924.terrain new file mode 100644 index 000000000..bda8c87c4 Binary files /dev/null and b/public/terrain/19/858600/353924.terrain differ diff --git a/public/terrain/19/858600/353925.terrain b/public/terrain/19/858600/353925.terrain new file mode 100644 index 000000000..63e308e01 Binary files /dev/null and b/public/terrain/19/858600/353925.terrain differ diff --git a/public/terrain/19/858600/353926.terrain b/public/terrain/19/858600/353926.terrain new file mode 100644 index 000000000..873648f56 Binary files /dev/null and b/public/terrain/19/858600/353926.terrain differ diff --git a/public/terrain/19/858600/353927.terrain b/public/terrain/19/858600/353927.terrain new file mode 100644 index 000000000..37f62e033 Binary files /dev/null and b/public/terrain/19/858600/353927.terrain differ diff --git a/public/terrain/19/858600/353928.terrain b/public/terrain/19/858600/353928.terrain new file mode 100644 index 000000000..8a13f18e0 Binary files /dev/null and b/public/terrain/19/858600/353928.terrain differ diff --git a/public/terrain/19/858600/353929.terrain b/public/terrain/19/858600/353929.terrain new file mode 100644 index 000000000..f797e571d Binary files /dev/null and b/public/terrain/19/858600/353929.terrain differ diff --git a/public/terrain/19/858600/353930.terrain b/public/terrain/19/858600/353930.terrain new file mode 100644 index 000000000..b2f3bb704 Binary files /dev/null and b/public/terrain/19/858600/353930.terrain differ diff --git a/public/terrain/19/858600/353931.terrain b/public/terrain/19/858600/353931.terrain new file mode 100644 index 000000000..4a10b0022 Binary files /dev/null and b/public/terrain/19/858600/353931.terrain differ diff --git a/public/terrain/19/858600/353932.terrain b/public/terrain/19/858600/353932.terrain new file mode 100644 index 000000000..764e5dd20 Binary files /dev/null and b/public/terrain/19/858600/353932.terrain differ diff --git a/public/terrain/19/858600/353933.terrain b/public/terrain/19/858600/353933.terrain new file mode 100644 index 000000000..f9638c741 Binary files /dev/null and b/public/terrain/19/858600/353933.terrain differ diff --git a/public/terrain/19/858600/353934.terrain b/public/terrain/19/858600/353934.terrain new file mode 100644 index 000000000..de176d1d9 Binary files /dev/null and b/public/terrain/19/858600/353934.terrain differ diff --git a/public/terrain/19/858600/353935.terrain b/public/terrain/19/858600/353935.terrain new file mode 100644 index 000000000..14c61a788 Binary files /dev/null and b/public/terrain/19/858600/353935.terrain differ diff --git a/public/terrain/19/858600/353936.terrain b/public/terrain/19/858600/353936.terrain new file mode 100644 index 000000000..aafa83d92 Binary files /dev/null and b/public/terrain/19/858600/353936.terrain differ diff --git a/public/terrain/19/858600/353937.terrain b/public/terrain/19/858600/353937.terrain new file mode 100644 index 000000000..0d7908384 Binary files /dev/null and b/public/terrain/19/858600/353937.terrain differ diff --git a/public/terrain/19/858600/353938.terrain b/public/terrain/19/858600/353938.terrain new file mode 100644 index 000000000..9f3c4246a Binary files /dev/null and b/public/terrain/19/858600/353938.terrain differ diff --git a/public/terrain/19/858600/353939.terrain b/public/terrain/19/858600/353939.terrain new file mode 100644 index 000000000..8a1b742f2 Binary files /dev/null and b/public/terrain/19/858600/353939.terrain differ diff --git a/public/terrain/19/858600/353940.terrain b/public/terrain/19/858600/353940.terrain new file mode 100644 index 000000000..ea9088624 Binary files /dev/null and b/public/terrain/19/858600/353940.terrain differ diff --git a/public/terrain/19/858600/353941.terrain b/public/terrain/19/858600/353941.terrain new file mode 100644 index 000000000..93f03a9f3 Binary files /dev/null and b/public/terrain/19/858600/353941.terrain differ diff --git a/public/terrain/19/858600/353942.terrain b/public/terrain/19/858600/353942.terrain new file mode 100644 index 000000000..eaaa05241 Binary files /dev/null and b/public/terrain/19/858600/353942.terrain differ diff --git a/public/terrain/19/858600/353943.terrain b/public/terrain/19/858600/353943.terrain new file mode 100644 index 000000000..1d5d99a3f Binary files /dev/null and b/public/terrain/19/858600/353943.terrain differ diff --git a/public/terrain/19/858600/353944.terrain b/public/terrain/19/858600/353944.terrain new file mode 100644 index 000000000..3d48a0114 Binary files /dev/null and b/public/terrain/19/858600/353944.terrain differ diff --git a/public/terrain/19/858600/353945.terrain b/public/terrain/19/858600/353945.terrain new file mode 100644 index 000000000..49db4d118 Binary files /dev/null and b/public/terrain/19/858600/353945.terrain differ diff --git a/public/terrain/19/858600/353946.terrain b/public/terrain/19/858600/353946.terrain new file mode 100644 index 000000000..4874562ad Binary files /dev/null and b/public/terrain/19/858600/353946.terrain differ diff --git a/public/terrain/19/858600/353947.terrain b/public/terrain/19/858600/353947.terrain new file mode 100644 index 000000000..6d1142b9e Binary files /dev/null and b/public/terrain/19/858600/353947.terrain differ diff --git a/public/terrain/19/858600/353948.terrain b/public/terrain/19/858600/353948.terrain new file mode 100644 index 000000000..72ee39dce Binary files /dev/null and b/public/terrain/19/858600/353948.terrain differ diff --git a/public/terrain/19/858600/353949.terrain b/public/terrain/19/858600/353949.terrain new file mode 100644 index 000000000..406094e68 Binary files /dev/null and b/public/terrain/19/858600/353949.terrain differ diff --git a/public/terrain/19/858600/353950.terrain b/public/terrain/19/858600/353950.terrain new file mode 100644 index 000000000..ec007616d Binary files /dev/null and b/public/terrain/19/858600/353950.terrain differ diff --git a/public/terrain/19/858600/353951.terrain b/public/terrain/19/858600/353951.terrain new file mode 100644 index 000000000..80cb33471 Binary files /dev/null and b/public/terrain/19/858600/353951.terrain differ diff --git a/public/terrain/19/858600/353952.terrain b/public/terrain/19/858600/353952.terrain new file mode 100644 index 000000000..c13135890 Binary files /dev/null and b/public/terrain/19/858600/353952.terrain differ diff --git a/public/terrain/19/858600/353953.terrain b/public/terrain/19/858600/353953.terrain new file mode 100644 index 000000000..5d9d71243 Binary files /dev/null and b/public/terrain/19/858600/353953.terrain differ diff --git a/public/terrain/19/858600/353954.terrain b/public/terrain/19/858600/353954.terrain new file mode 100644 index 000000000..41887d6de Binary files /dev/null and b/public/terrain/19/858600/353954.terrain differ diff --git a/public/terrain/19/858600/353955.terrain b/public/terrain/19/858600/353955.terrain new file mode 100644 index 000000000..4bff57cec Binary files /dev/null and b/public/terrain/19/858600/353955.terrain differ diff --git a/public/terrain/19/858600/353956.terrain b/public/terrain/19/858600/353956.terrain new file mode 100644 index 000000000..43db305ec Binary files /dev/null and b/public/terrain/19/858600/353956.terrain differ diff --git a/public/terrain/19/858600/353957.terrain b/public/terrain/19/858600/353957.terrain new file mode 100644 index 000000000..e0426a461 Binary files /dev/null and b/public/terrain/19/858600/353957.terrain differ diff --git a/public/terrain/19/858600/353958.terrain b/public/terrain/19/858600/353958.terrain new file mode 100644 index 000000000..f7bac2d72 Binary files /dev/null and b/public/terrain/19/858600/353958.terrain differ diff --git a/public/terrain/19/858600/353959.terrain b/public/terrain/19/858600/353959.terrain new file mode 100644 index 000000000..2ad6f6516 Binary files /dev/null and b/public/terrain/19/858600/353959.terrain differ diff --git a/public/terrain/19/858600/353960.terrain b/public/terrain/19/858600/353960.terrain new file mode 100644 index 000000000..06e89d192 Binary files /dev/null and b/public/terrain/19/858600/353960.terrain differ diff --git a/public/terrain/19/858600/353961.terrain b/public/terrain/19/858600/353961.terrain new file mode 100644 index 000000000..5bac8893f Binary files /dev/null and b/public/terrain/19/858600/353961.terrain differ diff --git a/public/terrain/19/858600/353962.terrain b/public/terrain/19/858600/353962.terrain new file mode 100644 index 000000000..1c65b3d44 Binary files /dev/null and b/public/terrain/19/858600/353962.terrain differ diff --git a/public/terrain/19/858600/353963.terrain b/public/terrain/19/858600/353963.terrain new file mode 100644 index 000000000..b850010cc Binary files /dev/null and b/public/terrain/19/858600/353963.terrain differ diff --git a/public/terrain/19/858600/353964.terrain b/public/terrain/19/858600/353964.terrain new file mode 100644 index 000000000..d41eec5d2 Binary files /dev/null and b/public/terrain/19/858600/353964.terrain differ diff --git a/public/terrain/19/858600/353965.terrain b/public/terrain/19/858600/353965.terrain new file mode 100644 index 000000000..374b3e5be Binary files /dev/null and b/public/terrain/19/858600/353965.terrain differ diff --git a/public/terrain/19/858600/353966.terrain b/public/terrain/19/858600/353966.terrain new file mode 100644 index 000000000..0e82ddb59 Binary files /dev/null and b/public/terrain/19/858600/353966.terrain differ diff --git a/public/terrain/19/858600/353967.terrain b/public/terrain/19/858600/353967.terrain new file mode 100644 index 000000000..8baa045de Binary files /dev/null and b/public/terrain/19/858600/353967.terrain differ diff --git a/public/terrain/19/858600/353968.terrain b/public/terrain/19/858600/353968.terrain new file mode 100644 index 000000000..41ab1a77f Binary files /dev/null and b/public/terrain/19/858600/353968.terrain differ diff --git a/public/terrain/19/858600/353969.terrain b/public/terrain/19/858600/353969.terrain new file mode 100644 index 000000000..cefd1c9c5 Binary files /dev/null and b/public/terrain/19/858600/353969.terrain differ diff --git a/public/terrain/19/858600/353970.terrain b/public/terrain/19/858600/353970.terrain new file mode 100644 index 000000000..43c92c1f6 Binary files /dev/null and b/public/terrain/19/858600/353970.terrain differ diff --git a/public/terrain/19/858600/353971.terrain b/public/terrain/19/858600/353971.terrain new file mode 100644 index 000000000..6c51505b7 Binary files /dev/null and b/public/terrain/19/858600/353971.terrain differ diff --git a/public/terrain/19/858600/353972.terrain b/public/terrain/19/858600/353972.terrain new file mode 100644 index 000000000..f8975d516 Binary files /dev/null and b/public/terrain/19/858600/353972.terrain differ diff --git a/public/terrain/19/858600/353973.terrain b/public/terrain/19/858600/353973.terrain new file mode 100644 index 000000000..5662f8989 Binary files /dev/null and b/public/terrain/19/858600/353973.terrain differ diff --git a/public/terrain/19/858600/353974.terrain b/public/terrain/19/858600/353974.terrain new file mode 100644 index 000000000..17d642e5b Binary files /dev/null and b/public/terrain/19/858600/353974.terrain differ diff --git a/public/terrain/19/858600/353975.terrain b/public/terrain/19/858600/353975.terrain new file mode 100644 index 000000000..9e713318e Binary files /dev/null and b/public/terrain/19/858600/353975.terrain differ diff --git a/public/terrain/19/858600/353976.terrain b/public/terrain/19/858600/353976.terrain new file mode 100644 index 000000000..1110fa5ce Binary files /dev/null and b/public/terrain/19/858600/353976.terrain differ diff --git a/public/terrain/19/858600/353977.terrain b/public/terrain/19/858600/353977.terrain new file mode 100644 index 000000000..841a1198f Binary files /dev/null and b/public/terrain/19/858600/353977.terrain differ diff --git a/public/terrain/19/858600/353978.terrain b/public/terrain/19/858600/353978.terrain new file mode 100644 index 000000000..14b7fc219 Binary files /dev/null and b/public/terrain/19/858600/353978.terrain differ diff --git a/public/terrain/19/858600/353979.terrain b/public/terrain/19/858600/353979.terrain new file mode 100644 index 000000000..2c4258390 Binary files /dev/null and b/public/terrain/19/858600/353979.terrain differ diff --git a/public/terrain/19/858600/353980.terrain b/public/terrain/19/858600/353980.terrain new file mode 100644 index 000000000..e3221e27c Binary files /dev/null and b/public/terrain/19/858600/353980.terrain differ diff --git a/public/terrain/19/858600/353981.terrain b/public/terrain/19/858600/353981.terrain new file mode 100644 index 000000000..030d722af Binary files /dev/null and b/public/terrain/19/858600/353981.terrain differ diff --git a/public/terrain/19/858600/353982.terrain b/public/terrain/19/858600/353982.terrain new file mode 100644 index 000000000..dc6134c71 Binary files /dev/null and b/public/terrain/19/858600/353982.terrain differ diff --git a/public/terrain/19/858600/353983.terrain b/public/terrain/19/858600/353983.terrain new file mode 100644 index 000000000..c68afa729 Binary files /dev/null and b/public/terrain/19/858600/353983.terrain differ diff --git a/public/terrain/19/858600/353984.terrain b/public/terrain/19/858600/353984.terrain new file mode 100644 index 000000000..4fd75f855 Binary files /dev/null and b/public/terrain/19/858600/353984.terrain differ diff --git a/public/terrain/19/858600/353985.terrain b/public/terrain/19/858600/353985.terrain new file mode 100644 index 000000000..4ed88f17d Binary files /dev/null and b/public/terrain/19/858600/353985.terrain differ diff --git a/public/terrain/19/858600/353986.terrain b/public/terrain/19/858600/353986.terrain new file mode 100644 index 000000000..d1952c680 Binary files /dev/null and b/public/terrain/19/858600/353986.terrain differ diff --git a/public/terrain/19/858600/353987.terrain b/public/terrain/19/858600/353987.terrain new file mode 100644 index 000000000..404ebe1b5 Binary files /dev/null and b/public/terrain/19/858600/353987.terrain differ diff --git a/public/terrain/19/858600/353988.terrain b/public/terrain/19/858600/353988.terrain new file mode 100644 index 000000000..22456c80d Binary files /dev/null and b/public/terrain/19/858600/353988.terrain differ diff --git a/public/terrain/19/858600/353989.terrain b/public/terrain/19/858600/353989.terrain new file mode 100644 index 000000000..0275a98af Binary files /dev/null and b/public/terrain/19/858600/353989.terrain differ diff --git a/public/terrain/19/858600/353990.terrain b/public/terrain/19/858600/353990.terrain new file mode 100644 index 000000000..fa9fbaa13 Binary files /dev/null and b/public/terrain/19/858600/353990.terrain differ diff --git a/public/terrain/19/858600/353991.terrain b/public/terrain/19/858600/353991.terrain new file mode 100644 index 000000000..5866c656c Binary files /dev/null and b/public/terrain/19/858600/353991.terrain differ diff --git a/public/terrain/19/858600/353992.terrain b/public/terrain/19/858600/353992.terrain new file mode 100644 index 000000000..5266e98cf Binary files /dev/null and b/public/terrain/19/858600/353992.terrain differ diff --git a/public/terrain/19/858600/353993.terrain b/public/terrain/19/858600/353993.terrain new file mode 100644 index 000000000..16c759ab9 Binary files /dev/null and b/public/terrain/19/858600/353993.terrain differ diff --git a/public/terrain/19/858600/353994.terrain b/public/terrain/19/858600/353994.terrain new file mode 100644 index 000000000..0b6f49da0 Binary files /dev/null and b/public/terrain/19/858600/353994.terrain differ diff --git a/public/terrain/19/858600/353995.terrain b/public/terrain/19/858600/353995.terrain new file mode 100644 index 000000000..d5d5cda91 Binary files /dev/null and b/public/terrain/19/858600/353995.terrain differ diff --git a/public/terrain/19/858600/353996.terrain b/public/terrain/19/858600/353996.terrain new file mode 100644 index 000000000..e3adfe5c9 Binary files /dev/null and b/public/terrain/19/858600/353996.terrain differ diff --git a/public/terrain/19/858600/353997.terrain b/public/terrain/19/858600/353997.terrain new file mode 100644 index 000000000..e752cbc4d Binary files /dev/null and b/public/terrain/19/858600/353997.terrain differ diff --git a/public/terrain/19/858600/353998.terrain b/public/terrain/19/858600/353998.terrain new file mode 100644 index 000000000..f6d069386 Binary files /dev/null and b/public/terrain/19/858600/353998.terrain differ diff --git a/public/terrain/19/858600/353999.terrain b/public/terrain/19/858600/353999.terrain new file mode 100644 index 000000000..cc8e30553 Binary files /dev/null and b/public/terrain/19/858600/353999.terrain differ diff --git a/public/terrain/19/858600/354000.terrain b/public/terrain/19/858600/354000.terrain new file mode 100644 index 000000000..0e9d8ac91 Binary files /dev/null and b/public/terrain/19/858600/354000.terrain differ diff --git a/public/terrain/19/858600/354001.terrain b/public/terrain/19/858600/354001.terrain new file mode 100644 index 000000000..80e45acca Binary files /dev/null and b/public/terrain/19/858600/354001.terrain differ diff --git a/public/terrain/19/858600/354002.terrain b/public/terrain/19/858600/354002.terrain new file mode 100644 index 000000000..029fd27a2 Binary files /dev/null and b/public/terrain/19/858600/354002.terrain differ diff --git a/public/terrain/19/858600/354003.terrain b/public/terrain/19/858600/354003.terrain new file mode 100644 index 000000000..bd1e33df2 Binary files /dev/null and b/public/terrain/19/858600/354003.terrain differ diff --git a/public/terrain/19/858600/354004.terrain b/public/terrain/19/858600/354004.terrain new file mode 100644 index 000000000..b687cee8d Binary files /dev/null and b/public/terrain/19/858600/354004.terrain differ diff --git a/public/terrain/19/858600/354005.terrain b/public/terrain/19/858600/354005.terrain new file mode 100644 index 000000000..4de15e775 Binary files /dev/null and b/public/terrain/19/858600/354005.terrain differ diff --git a/public/terrain/19/858600/354006.terrain b/public/terrain/19/858600/354006.terrain new file mode 100644 index 000000000..52524462e Binary files /dev/null and b/public/terrain/19/858600/354006.terrain differ diff --git a/public/terrain/19/858600/354007.terrain b/public/terrain/19/858600/354007.terrain new file mode 100644 index 000000000..4be7899d5 Binary files /dev/null and b/public/terrain/19/858600/354007.terrain differ diff --git a/public/terrain/19/858600/354008.terrain b/public/terrain/19/858600/354008.terrain new file mode 100644 index 000000000..147fea901 Binary files /dev/null and b/public/terrain/19/858600/354008.terrain differ diff --git a/public/terrain/19/858600/354009.terrain b/public/terrain/19/858600/354009.terrain new file mode 100644 index 000000000..7319ec36c Binary files /dev/null and b/public/terrain/19/858600/354009.terrain differ diff --git a/public/terrain/19/858600/354010.terrain b/public/terrain/19/858600/354010.terrain new file mode 100644 index 000000000..09c14b35d Binary files /dev/null and b/public/terrain/19/858600/354010.terrain differ diff --git a/public/terrain/19/858600/354011.terrain b/public/terrain/19/858600/354011.terrain new file mode 100644 index 000000000..ce699fb72 Binary files /dev/null and b/public/terrain/19/858600/354011.terrain differ diff --git a/public/terrain/19/858600/354012.terrain b/public/terrain/19/858600/354012.terrain new file mode 100644 index 000000000..c85d9f490 Binary files /dev/null and b/public/terrain/19/858600/354012.terrain differ diff --git a/public/terrain/19/858600/354013.terrain b/public/terrain/19/858600/354013.terrain new file mode 100644 index 000000000..4fe4177f4 Binary files /dev/null and b/public/terrain/19/858600/354013.terrain differ diff --git a/public/terrain/19/858600/354014.terrain b/public/terrain/19/858600/354014.terrain new file mode 100644 index 000000000..c38f48fe3 Binary files /dev/null and b/public/terrain/19/858600/354014.terrain differ diff --git a/public/terrain/19/858600/354015.terrain b/public/terrain/19/858600/354015.terrain new file mode 100644 index 000000000..e8477797c Binary files /dev/null and b/public/terrain/19/858600/354015.terrain differ diff --git a/public/terrain/19/858600/354016.terrain b/public/terrain/19/858600/354016.terrain new file mode 100644 index 000000000..142aeb9f9 Binary files /dev/null and b/public/terrain/19/858600/354016.terrain differ diff --git a/public/terrain/19/858600/354017.terrain b/public/terrain/19/858600/354017.terrain new file mode 100644 index 000000000..c6f393090 Binary files /dev/null and b/public/terrain/19/858600/354017.terrain differ diff --git a/public/terrain/19/858600/354018.terrain b/public/terrain/19/858600/354018.terrain new file mode 100644 index 000000000..4661427aa Binary files /dev/null and b/public/terrain/19/858600/354018.terrain differ diff --git a/public/terrain/19/858600/354019.terrain b/public/terrain/19/858600/354019.terrain new file mode 100644 index 000000000..bd848534b Binary files /dev/null and b/public/terrain/19/858600/354019.terrain differ diff --git a/public/terrain/19/858600/354020.terrain b/public/terrain/19/858600/354020.terrain new file mode 100644 index 000000000..f580b9f0b Binary files /dev/null and b/public/terrain/19/858600/354020.terrain differ diff --git a/public/terrain/19/858600/354021.terrain b/public/terrain/19/858600/354021.terrain new file mode 100644 index 000000000..776d16b79 Binary files /dev/null and b/public/terrain/19/858600/354021.terrain differ diff --git a/public/terrain/19/858600/354022.terrain b/public/terrain/19/858600/354022.terrain new file mode 100644 index 000000000..00f232694 Binary files /dev/null and b/public/terrain/19/858600/354022.terrain differ diff --git a/public/terrain/19/858600/354023.terrain b/public/terrain/19/858600/354023.terrain new file mode 100644 index 000000000..408ae340f Binary files /dev/null and b/public/terrain/19/858600/354023.terrain differ diff --git a/public/terrain/19/858600/354024.terrain b/public/terrain/19/858600/354024.terrain new file mode 100644 index 000000000..2423e248c Binary files /dev/null and b/public/terrain/19/858600/354024.terrain differ diff --git a/public/terrain/19/858600/354025.terrain b/public/terrain/19/858600/354025.terrain new file mode 100644 index 000000000..122c3e260 Binary files /dev/null and b/public/terrain/19/858600/354025.terrain differ diff --git a/public/terrain/19/858600/354026.terrain b/public/terrain/19/858600/354026.terrain new file mode 100644 index 000000000..1a04392d2 Binary files /dev/null and b/public/terrain/19/858600/354026.terrain differ diff --git a/public/terrain/19/858600/354027.terrain b/public/terrain/19/858600/354027.terrain new file mode 100644 index 000000000..008641703 Binary files /dev/null and b/public/terrain/19/858600/354027.terrain differ diff --git a/public/terrain/19/858600/354028.terrain b/public/terrain/19/858600/354028.terrain new file mode 100644 index 000000000..9818ebc9b Binary files /dev/null and b/public/terrain/19/858600/354028.terrain differ diff --git a/public/terrain/19/858600/354029.terrain b/public/terrain/19/858600/354029.terrain new file mode 100644 index 000000000..8fd71eab0 Binary files /dev/null and b/public/terrain/19/858600/354029.terrain differ diff --git a/public/terrain/19/858600/354030.terrain b/public/terrain/19/858600/354030.terrain new file mode 100644 index 000000000..9783b1e2c Binary files /dev/null and b/public/terrain/19/858600/354030.terrain differ diff --git a/public/terrain/19/858600/354031.terrain b/public/terrain/19/858600/354031.terrain new file mode 100644 index 000000000..712beb4c4 Binary files /dev/null and b/public/terrain/19/858600/354031.terrain differ diff --git a/public/terrain/19/858600/354032.terrain b/public/terrain/19/858600/354032.terrain new file mode 100644 index 000000000..68e8bdb6e Binary files /dev/null and b/public/terrain/19/858600/354032.terrain differ diff --git a/public/terrain/19/858600/354033.terrain b/public/terrain/19/858600/354033.terrain new file mode 100644 index 000000000..387b8a2df Binary files /dev/null and b/public/terrain/19/858600/354033.terrain differ diff --git a/public/terrain/19/858600/354034.terrain b/public/terrain/19/858600/354034.terrain new file mode 100644 index 000000000..6ab05cb3a Binary files /dev/null and b/public/terrain/19/858600/354034.terrain differ diff --git a/public/terrain/19/858600/354035.terrain b/public/terrain/19/858600/354035.terrain new file mode 100644 index 000000000..a56ac92d4 Binary files /dev/null and b/public/terrain/19/858600/354035.terrain differ diff --git a/public/terrain/19/858600/354036.terrain b/public/terrain/19/858600/354036.terrain new file mode 100644 index 000000000..5be7815e8 Binary files /dev/null and b/public/terrain/19/858600/354036.terrain differ diff --git a/public/terrain/19/858600/354037.terrain b/public/terrain/19/858600/354037.terrain new file mode 100644 index 000000000..b1c8bd99f Binary files /dev/null and b/public/terrain/19/858600/354037.terrain differ diff --git a/public/terrain/19/858600/354038.terrain b/public/terrain/19/858600/354038.terrain new file mode 100644 index 000000000..f5b966386 Binary files /dev/null and b/public/terrain/19/858600/354038.terrain differ diff --git a/public/terrain/19/858600/354039.terrain b/public/terrain/19/858600/354039.terrain new file mode 100644 index 000000000..89397c2c0 Binary files /dev/null and b/public/terrain/19/858600/354039.terrain differ diff --git a/public/terrain/19/858600/354040.terrain b/public/terrain/19/858600/354040.terrain new file mode 100644 index 000000000..8d8fee4e9 Binary files /dev/null and b/public/terrain/19/858600/354040.terrain differ diff --git a/public/terrain/19/858600/354041.terrain b/public/terrain/19/858600/354041.terrain new file mode 100644 index 000000000..9eb045401 Binary files /dev/null and b/public/terrain/19/858600/354041.terrain differ diff --git a/public/terrain/19/858600/354042.terrain b/public/terrain/19/858600/354042.terrain new file mode 100644 index 000000000..e4b2409d8 Binary files /dev/null and b/public/terrain/19/858600/354042.terrain differ diff --git a/public/terrain/19/858600/354043.terrain b/public/terrain/19/858600/354043.terrain new file mode 100644 index 000000000..1dd5f24d7 Binary files /dev/null and b/public/terrain/19/858600/354043.terrain differ diff --git a/public/terrain/19/858600/354044.terrain b/public/terrain/19/858600/354044.terrain new file mode 100644 index 000000000..26b0a4a67 Binary files /dev/null and b/public/terrain/19/858600/354044.terrain differ diff --git a/public/terrain/19/858600/354045.terrain b/public/terrain/19/858600/354045.terrain new file mode 100644 index 000000000..62f8aede7 Binary files /dev/null and b/public/terrain/19/858600/354045.terrain differ diff --git a/public/terrain/19/858600/354046.terrain b/public/terrain/19/858600/354046.terrain new file mode 100644 index 000000000..f2ac6d36e Binary files /dev/null and b/public/terrain/19/858600/354046.terrain differ diff --git a/public/terrain/19/858600/354047.terrain b/public/terrain/19/858600/354047.terrain new file mode 100644 index 000000000..47f05c470 Binary files /dev/null and b/public/terrain/19/858600/354047.terrain differ diff --git a/public/terrain/19/858600/354048.terrain b/public/terrain/19/858600/354048.terrain new file mode 100644 index 000000000..f1d278550 Binary files /dev/null and b/public/terrain/19/858600/354048.terrain differ diff --git a/public/terrain/19/858600/354049.terrain b/public/terrain/19/858600/354049.terrain new file mode 100644 index 000000000..94f1234ce Binary files /dev/null and b/public/terrain/19/858600/354049.terrain differ diff --git a/public/terrain/19/858600/354050.terrain b/public/terrain/19/858600/354050.terrain new file mode 100644 index 000000000..0b9013381 Binary files /dev/null and b/public/terrain/19/858600/354050.terrain differ diff --git a/public/terrain/19/858600/354051.terrain b/public/terrain/19/858600/354051.terrain new file mode 100644 index 000000000..3ecaf120c Binary files /dev/null and b/public/terrain/19/858600/354051.terrain differ diff --git a/public/terrain/19/858600/354052.terrain b/public/terrain/19/858600/354052.terrain new file mode 100644 index 000000000..f5a349296 Binary files /dev/null and b/public/terrain/19/858600/354052.terrain differ diff --git a/public/terrain/19/858600/354053.terrain b/public/terrain/19/858600/354053.terrain new file mode 100644 index 000000000..d465a051d Binary files /dev/null and b/public/terrain/19/858600/354053.terrain differ diff --git a/public/terrain/19/858600/354054.terrain b/public/terrain/19/858600/354054.terrain new file mode 100644 index 000000000..c849e40b4 Binary files /dev/null and b/public/terrain/19/858600/354054.terrain differ diff --git a/public/terrain/19/858600/354055.terrain b/public/terrain/19/858600/354055.terrain new file mode 100644 index 000000000..5c3840206 Binary files /dev/null and b/public/terrain/19/858600/354055.terrain differ diff --git a/public/terrain/19/858600/354056.terrain b/public/terrain/19/858600/354056.terrain new file mode 100644 index 000000000..cb190c63e Binary files /dev/null and b/public/terrain/19/858600/354056.terrain differ diff --git a/public/terrain/19/858600/354057.terrain b/public/terrain/19/858600/354057.terrain new file mode 100644 index 000000000..64cf4f464 Binary files /dev/null and b/public/terrain/19/858600/354057.terrain differ diff --git a/public/terrain/19/858600/354058.terrain b/public/terrain/19/858600/354058.terrain new file mode 100644 index 000000000..821923b2d Binary files /dev/null and b/public/terrain/19/858600/354058.terrain differ diff --git a/public/terrain/19/858600/354059.terrain b/public/terrain/19/858600/354059.terrain new file mode 100644 index 000000000..26cb46ea6 Binary files /dev/null and b/public/terrain/19/858600/354059.terrain differ diff --git a/public/terrain/19/858601/353743.terrain b/public/terrain/19/858601/353743.terrain new file mode 100644 index 000000000..0037f8e3f Binary files /dev/null and b/public/terrain/19/858601/353743.terrain differ diff --git a/public/terrain/19/858601/353744.terrain b/public/terrain/19/858601/353744.terrain new file mode 100644 index 000000000..b7f5d7272 Binary files /dev/null and b/public/terrain/19/858601/353744.terrain differ diff --git a/public/terrain/19/858601/353745.terrain b/public/terrain/19/858601/353745.terrain new file mode 100644 index 000000000..4b0c4a50a Binary files /dev/null and b/public/terrain/19/858601/353745.terrain differ diff --git a/public/terrain/19/858601/353746.terrain b/public/terrain/19/858601/353746.terrain new file mode 100644 index 000000000..7550fae79 Binary files /dev/null and b/public/terrain/19/858601/353746.terrain differ diff --git a/public/terrain/19/858601/353747.terrain b/public/terrain/19/858601/353747.terrain new file mode 100644 index 000000000..1efb4ac14 Binary files /dev/null and b/public/terrain/19/858601/353747.terrain differ diff --git a/public/terrain/19/858601/353748.terrain b/public/terrain/19/858601/353748.terrain new file mode 100644 index 000000000..c28fbb246 Binary files /dev/null and b/public/terrain/19/858601/353748.terrain differ diff --git a/public/terrain/19/858601/353749.terrain b/public/terrain/19/858601/353749.terrain new file mode 100644 index 000000000..1f27ccc56 Binary files /dev/null and b/public/terrain/19/858601/353749.terrain differ diff --git a/public/terrain/19/858601/353750.terrain b/public/terrain/19/858601/353750.terrain new file mode 100644 index 000000000..a9a36589f Binary files /dev/null and b/public/terrain/19/858601/353750.terrain differ diff --git a/public/terrain/19/858601/353751.terrain b/public/terrain/19/858601/353751.terrain new file mode 100644 index 000000000..1773e5f67 Binary files /dev/null and b/public/terrain/19/858601/353751.terrain differ diff --git a/public/terrain/19/858601/353752.terrain b/public/terrain/19/858601/353752.terrain new file mode 100644 index 000000000..70e70c501 Binary files /dev/null and b/public/terrain/19/858601/353752.terrain differ diff --git a/public/terrain/19/858601/353753.terrain b/public/terrain/19/858601/353753.terrain new file mode 100644 index 000000000..1fff5b419 Binary files /dev/null and b/public/terrain/19/858601/353753.terrain differ diff --git a/public/terrain/19/858601/353754.terrain b/public/terrain/19/858601/353754.terrain new file mode 100644 index 000000000..ba1c52032 Binary files /dev/null and b/public/terrain/19/858601/353754.terrain differ diff --git a/public/terrain/19/858601/353755.terrain b/public/terrain/19/858601/353755.terrain new file mode 100644 index 000000000..617b27afb Binary files /dev/null and b/public/terrain/19/858601/353755.terrain differ diff --git a/public/terrain/19/858601/353756.terrain b/public/terrain/19/858601/353756.terrain new file mode 100644 index 000000000..ee537e44f Binary files /dev/null and b/public/terrain/19/858601/353756.terrain differ diff --git a/public/terrain/19/858601/353757.terrain b/public/terrain/19/858601/353757.terrain new file mode 100644 index 000000000..31033e985 Binary files /dev/null and b/public/terrain/19/858601/353757.terrain differ diff --git a/public/terrain/19/858601/353758.terrain b/public/terrain/19/858601/353758.terrain new file mode 100644 index 000000000..7aa8d07de Binary files /dev/null and b/public/terrain/19/858601/353758.terrain differ diff --git a/public/terrain/19/858601/353759.terrain b/public/terrain/19/858601/353759.terrain new file mode 100644 index 000000000..2cb56f42f Binary files /dev/null and b/public/terrain/19/858601/353759.terrain differ diff --git a/public/terrain/19/858601/353760.terrain b/public/terrain/19/858601/353760.terrain new file mode 100644 index 000000000..77f609d68 Binary files /dev/null and b/public/terrain/19/858601/353760.terrain differ diff --git a/public/terrain/19/858601/353761.terrain b/public/terrain/19/858601/353761.terrain new file mode 100644 index 000000000..8228fdfd8 Binary files /dev/null and b/public/terrain/19/858601/353761.terrain differ diff --git a/public/terrain/19/858601/353762.terrain b/public/terrain/19/858601/353762.terrain new file mode 100644 index 000000000..89ab34c33 Binary files /dev/null and b/public/terrain/19/858601/353762.terrain differ diff --git a/public/terrain/19/858601/353763.terrain b/public/terrain/19/858601/353763.terrain new file mode 100644 index 000000000..aa945ac04 Binary files /dev/null and b/public/terrain/19/858601/353763.terrain differ diff --git a/public/terrain/19/858601/353764.terrain b/public/terrain/19/858601/353764.terrain new file mode 100644 index 000000000..5f4b10f2f Binary files /dev/null and b/public/terrain/19/858601/353764.terrain differ diff --git a/public/terrain/19/858601/353765.terrain b/public/terrain/19/858601/353765.terrain new file mode 100644 index 000000000..183db7c87 Binary files /dev/null and b/public/terrain/19/858601/353765.terrain differ diff --git a/public/terrain/19/858601/353766.terrain b/public/terrain/19/858601/353766.terrain new file mode 100644 index 000000000..3a65035a7 Binary files /dev/null and b/public/terrain/19/858601/353766.terrain differ diff --git a/public/terrain/19/858601/353767.terrain b/public/terrain/19/858601/353767.terrain new file mode 100644 index 000000000..b34db4720 Binary files /dev/null and b/public/terrain/19/858601/353767.terrain differ diff --git a/public/terrain/19/858601/353768.terrain b/public/terrain/19/858601/353768.terrain new file mode 100644 index 000000000..ce61d5e53 Binary files /dev/null and b/public/terrain/19/858601/353768.terrain differ diff --git a/public/terrain/19/858601/353769.terrain b/public/terrain/19/858601/353769.terrain new file mode 100644 index 000000000..1df2ae141 Binary files /dev/null and b/public/terrain/19/858601/353769.terrain differ diff --git a/public/terrain/19/858601/353770.terrain b/public/terrain/19/858601/353770.terrain new file mode 100644 index 000000000..27e26ee17 Binary files /dev/null and b/public/terrain/19/858601/353770.terrain differ diff --git a/public/terrain/19/858601/353771.terrain b/public/terrain/19/858601/353771.terrain new file mode 100644 index 000000000..0f726b134 Binary files /dev/null and b/public/terrain/19/858601/353771.terrain differ diff --git a/public/terrain/19/858601/353772.terrain b/public/terrain/19/858601/353772.terrain new file mode 100644 index 000000000..55b536a4b Binary files /dev/null and b/public/terrain/19/858601/353772.terrain differ diff --git a/public/terrain/19/858601/353773.terrain b/public/terrain/19/858601/353773.terrain new file mode 100644 index 000000000..e7d26610d Binary files /dev/null and b/public/terrain/19/858601/353773.terrain differ diff --git a/public/terrain/19/858601/353774.terrain b/public/terrain/19/858601/353774.terrain new file mode 100644 index 000000000..35b16b017 Binary files /dev/null and b/public/terrain/19/858601/353774.terrain differ diff --git a/public/terrain/19/858601/353775.terrain b/public/terrain/19/858601/353775.terrain new file mode 100644 index 000000000..f2c8367f1 Binary files /dev/null and b/public/terrain/19/858601/353775.terrain differ diff --git a/public/terrain/19/858601/353776.terrain b/public/terrain/19/858601/353776.terrain new file mode 100644 index 000000000..caa0a8640 Binary files /dev/null and b/public/terrain/19/858601/353776.terrain differ diff --git a/public/terrain/19/858601/353777.terrain b/public/terrain/19/858601/353777.terrain new file mode 100644 index 000000000..1496cda8e Binary files /dev/null and b/public/terrain/19/858601/353777.terrain differ diff --git a/public/terrain/19/858601/353778.terrain b/public/terrain/19/858601/353778.terrain new file mode 100644 index 000000000..0de2cfbac Binary files /dev/null and b/public/terrain/19/858601/353778.terrain differ diff --git a/public/terrain/19/858601/353779.terrain b/public/terrain/19/858601/353779.terrain new file mode 100644 index 000000000..3e7a7ac4e Binary files /dev/null and b/public/terrain/19/858601/353779.terrain differ diff --git a/public/terrain/19/858601/353780.terrain b/public/terrain/19/858601/353780.terrain new file mode 100644 index 000000000..7a641d3f7 Binary files /dev/null and b/public/terrain/19/858601/353780.terrain differ diff --git a/public/terrain/19/858601/353781.terrain b/public/terrain/19/858601/353781.terrain new file mode 100644 index 000000000..28147f058 Binary files /dev/null and b/public/terrain/19/858601/353781.terrain differ diff --git a/public/terrain/19/858601/353782.terrain b/public/terrain/19/858601/353782.terrain new file mode 100644 index 000000000..0eeac74b2 Binary files /dev/null and b/public/terrain/19/858601/353782.terrain differ diff --git a/public/terrain/19/858601/353783.terrain b/public/terrain/19/858601/353783.terrain new file mode 100644 index 000000000..d6cfd8877 Binary files /dev/null and b/public/terrain/19/858601/353783.terrain differ diff --git a/public/terrain/19/858601/353784.terrain b/public/terrain/19/858601/353784.terrain new file mode 100644 index 000000000..a5d4cd593 Binary files /dev/null and b/public/terrain/19/858601/353784.terrain differ diff --git a/public/terrain/19/858601/353785.terrain b/public/terrain/19/858601/353785.terrain new file mode 100644 index 000000000..74b835638 Binary files /dev/null and b/public/terrain/19/858601/353785.terrain differ diff --git a/public/terrain/19/858601/353786.terrain b/public/terrain/19/858601/353786.terrain new file mode 100644 index 000000000..42e15cd88 Binary files /dev/null and b/public/terrain/19/858601/353786.terrain differ diff --git a/public/terrain/19/858601/353787.terrain b/public/terrain/19/858601/353787.terrain new file mode 100644 index 000000000..b82de9d0e Binary files /dev/null and b/public/terrain/19/858601/353787.terrain differ diff --git a/public/terrain/19/858601/353788.terrain b/public/terrain/19/858601/353788.terrain new file mode 100644 index 000000000..f003ea297 Binary files /dev/null and b/public/terrain/19/858601/353788.terrain differ diff --git a/public/terrain/19/858601/353789.terrain b/public/terrain/19/858601/353789.terrain new file mode 100644 index 000000000..e2ee63e13 Binary files /dev/null and b/public/terrain/19/858601/353789.terrain differ diff --git a/public/terrain/19/858601/353790.terrain b/public/terrain/19/858601/353790.terrain new file mode 100644 index 000000000..92735bd74 Binary files /dev/null and b/public/terrain/19/858601/353790.terrain differ diff --git a/public/terrain/19/858601/353791.terrain b/public/terrain/19/858601/353791.terrain new file mode 100644 index 000000000..0d6a125fb Binary files /dev/null and b/public/terrain/19/858601/353791.terrain differ diff --git a/public/terrain/19/858601/353792.terrain b/public/terrain/19/858601/353792.terrain new file mode 100644 index 000000000..5283c5d55 Binary files /dev/null and b/public/terrain/19/858601/353792.terrain differ diff --git a/public/terrain/19/858601/353793.terrain b/public/terrain/19/858601/353793.terrain new file mode 100644 index 000000000..953bf4297 Binary files /dev/null and b/public/terrain/19/858601/353793.terrain differ diff --git a/public/terrain/19/858601/353794.terrain b/public/terrain/19/858601/353794.terrain new file mode 100644 index 000000000..365a793b2 Binary files /dev/null and b/public/terrain/19/858601/353794.terrain differ diff --git a/public/terrain/19/858601/353795.terrain b/public/terrain/19/858601/353795.terrain new file mode 100644 index 000000000..9e6affd8e Binary files /dev/null and b/public/terrain/19/858601/353795.terrain differ diff --git a/public/terrain/19/858601/353796.terrain b/public/terrain/19/858601/353796.terrain new file mode 100644 index 000000000..2db189dfa Binary files /dev/null and b/public/terrain/19/858601/353796.terrain differ diff --git a/public/terrain/19/858601/353797.terrain b/public/terrain/19/858601/353797.terrain new file mode 100644 index 000000000..d5ac29d4b Binary files /dev/null and b/public/terrain/19/858601/353797.terrain differ diff --git a/public/terrain/19/858601/353798.terrain b/public/terrain/19/858601/353798.terrain new file mode 100644 index 000000000..0320a0c21 Binary files /dev/null and b/public/terrain/19/858601/353798.terrain differ diff --git a/public/terrain/19/858601/353799.terrain b/public/terrain/19/858601/353799.terrain new file mode 100644 index 000000000..3cf89317b Binary files /dev/null and b/public/terrain/19/858601/353799.terrain differ diff --git a/public/terrain/19/858601/353800.terrain b/public/terrain/19/858601/353800.terrain new file mode 100644 index 000000000..d3c7200c0 Binary files /dev/null and b/public/terrain/19/858601/353800.terrain differ diff --git a/public/terrain/19/858601/353801.terrain b/public/terrain/19/858601/353801.terrain new file mode 100644 index 000000000..094de18ff Binary files /dev/null and b/public/terrain/19/858601/353801.terrain differ diff --git a/public/terrain/19/858601/353802.terrain b/public/terrain/19/858601/353802.terrain new file mode 100644 index 000000000..4dd119e23 Binary files /dev/null and b/public/terrain/19/858601/353802.terrain differ diff --git a/public/terrain/19/858601/353803.terrain b/public/terrain/19/858601/353803.terrain new file mode 100644 index 000000000..ffbc9b51d Binary files /dev/null and b/public/terrain/19/858601/353803.terrain differ diff --git a/public/terrain/19/858601/353804.terrain b/public/terrain/19/858601/353804.terrain new file mode 100644 index 000000000..210c588c3 Binary files /dev/null and b/public/terrain/19/858601/353804.terrain differ diff --git a/public/terrain/19/858601/353805.terrain b/public/terrain/19/858601/353805.terrain new file mode 100644 index 000000000..1eef0432e Binary files /dev/null and b/public/terrain/19/858601/353805.terrain differ diff --git a/public/terrain/19/858601/353806.terrain b/public/terrain/19/858601/353806.terrain new file mode 100644 index 000000000..ba6362029 Binary files /dev/null and b/public/terrain/19/858601/353806.terrain differ diff --git a/public/terrain/19/858601/353807.terrain b/public/terrain/19/858601/353807.terrain new file mode 100644 index 000000000..6cdb77d90 Binary files /dev/null and b/public/terrain/19/858601/353807.terrain differ diff --git a/public/terrain/19/858601/353808.terrain b/public/terrain/19/858601/353808.terrain new file mode 100644 index 000000000..796d70280 Binary files /dev/null and b/public/terrain/19/858601/353808.terrain differ diff --git a/public/terrain/19/858601/353809.terrain b/public/terrain/19/858601/353809.terrain new file mode 100644 index 000000000..863be77ad Binary files /dev/null and b/public/terrain/19/858601/353809.terrain differ diff --git a/public/terrain/19/858601/353810.terrain b/public/terrain/19/858601/353810.terrain new file mode 100644 index 000000000..148ad2d1e Binary files /dev/null and b/public/terrain/19/858601/353810.terrain differ diff --git a/public/terrain/19/858601/353811.terrain b/public/terrain/19/858601/353811.terrain new file mode 100644 index 000000000..22aaf0827 Binary files /dev/null and b/public/terrain/19/858601/353811.terrain differ diff --git a/public/terrain/19/858601/353812.terrain b/public/terrain/19/858601/353812.terrain new file mode 100644 index 000000000..ab324f2d0 Binary files /dev/null and b/public/terrain/19/858601/353812.terrain differ diff --git a/public/terrain/19/858601/353813.terrain b/public/terrain/19/858601/353813.terrain new file mode 100644 index 000000000..47c7213cf Binary files /dev/null and b/public/terrain/19/858601/353813.terrain differ diff --git a/public/terrain/19/858601/353814.terrain b/public/terrain/19/858601/353814.terrain new file mode 100644 index 000000000..85f630afd Binary files /dev/null and b/public/terrain/19/858601/353814.terrain differ diff --git a/public/terrain/19/858601/353815.terrain b/public/terrain/19/858601/353815.terrain new file mode 100644 index 000000000..bd22cd18a Binary files /dev/null and b/public/terrain/19/858601/353815.terrain differ diff --git a/public/terrain/19/858601/353816.terrain b/public/terrain/19/858601/353816.terrain new file mode 100644 index 000000000..41b3fed7a Binary files /dev/null and b/public/terrain/19/858601/353816.terrain differ diff --git a/public/terrain/19/858601/353817.terrain b/public/terrain/19/858601/353817.terrain new file mode 100644 index 000000000..2c532cc55 Binary files /dev/null and b/public/terrain/19/858601/353817.terrain differ diff --git a/public/terrain/19/858601/353818.terrain b/public/terrain/19/858601/353818.terrain new file mode 100644 index 000000000..51f176736 Binary files /dev/null and b/public/terrain/19/858601/353818.terrain differ diff --git a/public/terrain/19/858601/353819.terrain b/public/terrain/19/858601/353819.terrain new file mode 100644 index 000000000..246af6370 Binary files /dev/null and b/public/terrain/19/858601/353819.terrain differ diff --git a/public/terrain/19/858601/353820.terrain b/public/terrain/19/858601/353820.terrain new file mode 100644 index 000000000..77c3c73cd Binary files /dev/null and b/public/terrain/19/858601/353820.terrain differ diff --git a/public/terrain/19/858601/353821.terrain b/public/terrain/19/858601/353821.terrain new file mode 100644 index 000000000..d9190a568 Binary files /dev/null and b/public/terrain/19/858601/353821.terrain differ diff --git a/public/terrain/19/858601/353822.terrain b/public/terrain/19/858601/353822.terrain new file mode 100644 index 000000000..f76e68d52 Binary files /dev/null and b/public/terrain/19/858601/353822.terrain differ diff --git a/public/terrain/19/858601/353823.terrain b/public/terrain/19/858601/353823.terrain new file mode 100644 index 000000000..715e98002 Binary files /dev/null and b/public/terrain/19/858601/353823.terrain differ diff --git a/public/terrain/19/858601/353824.terrain b/public/terrain/19/858601/353824.terrain new file mode 100644 index 000000000..60b75921f Binary files /dev/null and b/public/terrain/19/858601/353824.terrain differ diff --git a/public/terrain/19/858601/353825.terrain b/public/terrain/19/858601/353825.terrain new file mode 100644 index 000000000..c05670218 Binary files /dev/null and b/public/terrain/19/858601/353825.terrain differ diff --git a/public/terrain/19/858601/353826.terrain b/public/terrain/19/858601/353826.terrain new file mode 100644 index 000000000..514e683f6 Binary files /dev/null and b/public/terrain/19/858601/353826.terrain differ diff --git a/public/terrain/19/858601/353827.terrain b/public/terrain/19/858601/353827.terrain new file mode 100644 index 000000000..23bb5b0e8 Binary files /dev/null and b/public/terrain/19/858601/353827.terrain differ diff --git a/public/terrain/19/858601/353828.terrain b/public/terrain/19/858601/353828.terrain new file mode 100644 index 000000000..f82ea5c87 Binary files /dev/null and b/public/terrain/19/858601/353828.terrain differ diff --git a/public/terrain/19/858601/353829.terrain b/public/terrain/19/858601/353829.terrain new file mode 100644 index 000000000..0bcf58a77 Binary files /dev/null and b/public/terrain/19/858601/353829.terrain differ diff --git a/public/terrain/19/858601/353830.terrain b/public/terrain/19/858601/353830.terrain new file mode 100644 index 000000000..982965fbf Binary files /dev/null and b/public/terrain/19/858601/353830.terrain differ diff --git a/public/terrain/19/858601/353831.terrain b/public/terrain/19/858601/353831.terrain new file mode 100644 index 000000000..b71ebd0bf Binary files /dev/null and b/public/terrain/19/858601/353831.terrain differ diff --git a/public/terrain/19/858601/353832.terrain b/public/terrain/19/858601/353832.terrain new file mode 100644 index 000000000..d035c2763 Binary files /dev/null and b/public/terrain/19/858601/353832.terrain differ diff --git a/public/terrain/19/858601/353833.terrain b/public/terrain/19/858601/353833.terrain new file mode 100644 index 000000000..a7a3c6ada Binary files /dev/null and b/public/terrain/19/858601/353833.terrain differ diff --git a/public/terrain/19/858601/353834.terrain b/public/terrain/19/858601/353834.terrain new file mode 100644 index 000000000..34698db0c Binary files /dev/null and b/public/terrain/19/858601/353834.terrain differ diff --git a/public/terrain/19/858601/353835.terrain b/public/terrain/19/858601/353835.terrain new file mode 100644 index 000000000..51af98c95 Binary files /dev/null and b/public/terrain/19/858601/353835.terrain differ diff --git a/public/terrain/19/858601/353836.terrain b/public/terrain/19/858601/353836.terrain new file mode 100644 index 000000000..2007b64b9 Binary files /dev/null and b/public/terrain/19/858601/353836.terrain differ diff --git a/public/terrain/19/858601/353837.terrain b/public/terrain/19/858601/353837.terrain new file mode 100644 index 000000000..ab0b84839 Binary files /dev/null and b/public/terrain/19/858601/353837.terrain differ diff --git a/public/terrain/19/858601/353838.terrain b/public/terrain/19/858601/353838.terrain new file mode 100644 index 000000000..f4d9f6ed7 Binary files /dev/null and b/public/terrain/19/858601/353838.terrain differ diff --git a/public/terrain/19/858601/353839.terrain b/public/terrain/19/858601/353839.terrain new file mode 100644 index 000000000..1586d4024 Binary files /dev/null and b/public/terrain/19/858601/353839.terrain differ diff --git a/public/terrain/19/858601/353840.terrain b/public/terrain/19/858601/353840.terrain new file mode 100644 index 000000000..cc379a576 Binary files /dev/null and b/public/terrain/19/858601/353840.terrain differ diff --git a/public/terrain/19/858601/353841.terrain b/public/terrain/19/858601/353841.terrain new file mode 100644 index 000000000..2684fdda6 Binary files /dev/null and b/public/terrain/19/858601/353841.terrain differ diff --git a/public/terrain/19/858601/353842.terrain b/public/terrain/19/858601/353842.terrain new file mode 100644 index 000000000..b809495d6 Binary files /dev/null and b/public/terrain/19/858601/353842.terrain differ diff --git a/public/terrain/19/858601/353843.terrain b/public/terrain/19/858601/353843.terrain new file mode 100644 index 000000000..453b36800 Binary files /dev/null and b/public/terrain/19/858601/353843.terrain differ diff --git a/public/terrain/19/858601/353844.terrain b/public/terrain/19/858601/353844.terrain new file mode 100644 index 000000000..fec61e358 Binary files /dev/null and b/public/terrain/19/858601/353844.terrain differ diff --git a/public/terrain/19/858601/353845.terrain b/public/terrain/19/858601/353845.terrain new file mode 100644 index 000000000..5e42b3fb0 Binary files /dev/null and b/public/terrain/19/858601/353845.terrain differ diff --git a/public/terrain/19/858601/353846.terrain b/public/terrain/19/858601/353846.terrain new file mode 100644 index 000000000..cd7d34657 Binary files /dev/null and b/public/terrain/19/858601/353846.terrain differ diff --git a/public/terrain/19/858601/353847.terrain b/public/terrain/19/858601/353847.terrain new file mode 100644 index 000000000..e79f9b03d Binary files /dev/null and b/public/terrain/19/858601/353847.terrain differ diff --git a/public/terrain/19/858601/353848.terrain b/public/terrain/19/858601/353848.terrain new file mode 100644 index 000000000..bddc51c44 Binary files /dev/null and b/public/terrain/19/858601/353848.terrain differ diff --git a/public/terrain/19/858601/353849.terrain b/public/terrain/19/858601/353849.terrain new file mode 100644 index 000000000..e4c3193a6 Binary files /dev/null and b/public/terrain/19/858601/353849.terrain differ diff --git a/public/terrain/19/858601/353850.terrain b/public/terrain/19/858601/353850.terrain new file mode 100644 index 000000000..9ffde0b12 Binary files /dev/null and b/public/terrain/19/858601/353850.terrain differ diff --git a/public/terrain/19/858601/353851.terrain b/public/terrain/19/858601/353851.terrain new file mode 100644 index 000000000..2488d9b26 Binary files /dev/null and b/public/terrain/19/858601/353851.terrain differ diff --git a/public/terrain/19/858601/353852.terrain b/public/terrain/19/858601/353852.terrain new file mode 100644 index 000000000..1f0f47b7a Binary files /dev/null and b/public/terrain/19/858601/353852.terrain differ diff --git a/public/terrain/19/858601/353853.terrain b/public/terrain/19/858601/353853.terrain new file mode 100644 index 000000000..145ca5516 Binary files /dev/null and b/public/terrain/19/858601/353853.terrain differ diff --git a/public/terrain/19/858601/353854.terrain b/public/terrain/19/858601/353854.terrain new file mode 100644 index 000000000..2979c7c88 Binary files /dev/null and b/public/terrain/19/858601/353854.terrain differ diff --git a/public/terrain/19/858601/353855.terrain b/public/terrain/19/858601/353855.terrain new file mode 100644 index 000000000..366cae348 Binary files /dev/null and b/public/terrain/19/858601/353855.terrain differ diff --git a/public/terrain/19/858601/353856.terrain b/public/terrain/19/858601/353856.terrain new file mode 100644 index 000000000..4bcdea315 Binary files /dev/null and b/public/terrain/19/858601/353856.terrain differ diff --git a/public/terrain/19/858601/353857.terrain b/public/terrain/19/858601/353857.terrain new file mode 100644 index 000000000..1fd421613 Binary files /dev/null and b/public/terrain/19/858601/353857.terrain differ diff --git a/public/terrain/19/858601/353858.terrain b/public/terrain/19/858601/353858.terrain new file mode 100644 index 000000000..450933536 Binary files /dev/null and b/public/terrain/19/858601/353858.terrain differ diff --git a/public/terrain/19/858601/353859.terrain b/public/terrain/19/858601/353859.terrain new file mode 100644 index 000000000..352f9ac44 Binary files /dev/null and b/public/terrain/19/858601/353859.terrain differ diff --git a/public/terrain/19/858601/353860.terrain b/public/terrain/19/858601/353860.terrain new file mode 100644 index 000000000..18a50ef44 Binary files /dev/null and b/public/terrain/19/858601/353860.terrain differ diff --git a/public/terrain/19/858601/353861.terrain b/public/terrain/19/858601/353861.terrain new file mode 100644 index 000000000..cd31a0803 Binary files /dev/null and b/public/terrain/19/858601/353861.terrain differ diff --git a/public/terrain/19/858601/353862.terrain b/public/terrain/19/858601/353862.terrain new file mode 100644 index 000000000..f17721141 Binary files /dev/null and b/public/terrain/19/858601/353862.terrain differ diff --git a/public/terrain/19/858601/353863.terrain b/public/terrain/19/858601/353863.terrain new file mode 100644 index 000000000..7ce8fcca2 Binary files /dev/null and b/public/terrain/19/858601/353863.terrain differ diff --git a/public/terrain/19/858601/353864.terrain b/public/terrain/19/858601/353864.terrain new file mode 100644 index 000000000..d5c9e5392 Binary files /dev/null and b/public/terrain/19/858601/353864.terrain differ diff --git a/public/terrain/19/858601/353865.terrain b/public/terrain/19/858601/353865.terrain new file mode 100644 index 000000000..8a0d49bca Binary files /dev/null and b/public/terrain/19/858601/353865.terrain differ diff --git a/public/terrain/19/858601/353866.terrain b/public/terrain/19/858601/353866.terrain new file mode 100644 index 000000000..405bf0687 Binary files /dev/null and b/public/terrain/19/858601/353866.terrain differ diff --git a/public/terrain/19/858601/353867.terrain b/public/terrain/19/858601/353867.terrain new file mode 100644 index 000000000..c519f2859 Binary files /dev/null and b/public/terrain/19/858601/353867.terrain differ diff --git a/public/terrain/19/858601/353868.terrain b/public/terrain/19/858601/353868.terrain new file mode 100644 index 000000000..ef68fe977 Binary files /dev/null and b/public/terrain/19/858601/353868.terrain differ diff --git a/public/terrain/19/858601/353869.terrain b/public/terrain/19/858601/353869.terrain new file mode 100644 index 000000000..772d33e61 Binary files /dev/null and b/public/terrain/19/858601/353869.terrain differ diff --git a/public/terrain/19/858601/353870.terrain b/public/terrain/19/858601/353870.terrain new file mode 100644 index 000000000..2a2120f5c Binary files /dev/null and b/public/terrain/19/858601/353870.terrain differ diff --git a/public/terrain/19/858601/353871.terrain b/public/terrain/19/858601/353871.terrain new file mode 100644 index 000000000..89871a4c1 Binary files /dev/null and b/public/terrain/19/858601/353871.terrain differ diff --git a/public/terrain/19/858601/353872.terrain b/public/terrain/19/858601/353872.terrain new file mode 100644 index 000000000..4479cb95e Binary files /dev/null and b/public/terrain/19/858601/353872.terrain differ diff --git a/public/terrain/19/858601/353873.terrain b/public/terrain/19/858601/353873.terrain new file mode 100644 index 000000000..813d7afd3 Binary files /dev/null and b/public/terrain/19/858601/353873.terrain differ diff --git a/public/terrain/19/858601/353874.terrain b/public/terrain/19/858601/353874.terrain new file mode 100644 index 000000000..d9749ab0e Binary files /dev/null and b/public/terrain/19/858601/353874.terrain differ diff --git a/public/terrain/19/858601/353875.terrain b/public/terrain/19/858601/353875.terrain new file mode 100644 index 000000000..19959120e Binary files /dev/null and b/public/terrain/19/858601/353875.terrain differ diff --git a/public/terrain/19/858601/353876.terrain b/public/terrain/19/858601/353876.terrain new file mode 100644 index 000000000..718802519 Binary files /dev/null and b/public/terrain/19/858601/353876.terrain differ diff --git a/public/terrain/19/858601/353877.terrain b/public/terrain/19/858601/353877.terrain new file mode 100644 index 000000000..7c7a63e10 Binary files /dev/null and b/public/terrain/19/858601/353877.terrain differ diff --git a/public/terrain/19/858601/353878.terrain b/public/terrain/19/858601/353878.terrain new file mode 100644 index 000000000..c9ed47b75 Binary files /dev/null and b/public/terrain/19/858601/353878.terrain differ diff --git a/public/terrain/19/858601/353879.terrain b/public/terrain/19/858601/353879.terrain new file mode 100644 index 000000000..b952fdb72 Binary files /dev/null and b/public/terrain/19/858601/353879.terrain differ diff --git a/public/terrain/19/858601/353880.terrain b/public/terrain/19/858601/353880.terrain new file mode 100644 index 000000000..b2587bdc1 Binary files /dev/null and b/public/terrain/19/858601/353880.terrain differ diff --git a/public/terrain/19/858601/353881.terrain b/public/terrain/19/858601/353881.terrain new file mode 100644 index 000000000..b14478931 Binary files /dev/null and b/public/terrain/19/858601/353881.terrain differ diff --git a/public/terrain/19/858601/353882.terrain b/public/terrain/19/858601/353882.terrain new file mode 100644 index 000000000..f54031be2 Binary files /dev/null and b/public/terrain/19/858601/353882.terrain differ diff --git a/public/terrain/19/858601/353883.terrain b/public/terrain/19/858601/353883.terrain new file mode 100644 index 000000000..0c3c7553d Binary files /dev/null and b/public/terrain/19/858601/353883.terrain differ diff --git a/public/terrain/19/858601/353884.terrain b/public/terrain/19/858601/353884.terrain new file mode 100644 index 000000000..2b2d5d116 Binary files /dev/null and b/public/terrain/19/858601/353884.terrain differ diff --git a/public/terrain/19/858601/353885.terrain b/public/terrain/19/858601/353885.terrain new file mode 100644 index 000000000..0caac45a8 Binary files /dev/null and b/public/terrain/19/858601/353885.terrain differ diff --git a/public/terrain/19/858601/353886.terrain b/public/terrain/19/858601/353886.terrain new file mode 100644 index 000000000..320386882 Binary files /dev/null and b/public/terrain/19/858601/353886.terrain differ diff --git a/public/terrain/19/858601/353887.terrain b/public/terrain/19/858601/353887.terrain new file mode 100644 index 000000000..8f83fa0c4 Binary files /dev/null and b/public/terrain/19/858601/353887.terrain differ diff --git a/public/terrain/19/858601/353888.terrain b/public/terrain/19/858601/353888.terrain new file mode 100644 index 000000000..1fd0558d7 Binary files /dev/null and b/public/terrain/19/858601/353888.terrain differ diff --git a/public/terrain/19/858601/353889.terrain b/public/terrain/19/858601/353889.terrain new file mode 100644 index 000000000..611014058 Binary files /dev/null and b/public/terrain/19/858601/353889.terrain differ diff --git a/public/terrain/19/858601/353890.terrain b/public/terrain/19/858601/353890.terrain new file mode 100644 index 000000000..f3ab196a7 Binary files /dev/null and b/public/terrain/19/858601/353890.terrain differ diff --git a/public/terrain/19/858601/353891.terrain b/public/terrain/19/858601/353891.terrain new file mode 100644 index 000000000..bc9e56c96 Binary files /dev/null and b/public/terrain/19/858601/353891.terrain differ diff --git a/public/terrain/19/858601/353892.terrain b/public/terrain/19/858601/353892.terrain new file mode 100644 index 000000000..7d0d27db7 Binary files /dev/null and b/public/terrain/19/858601/353892.terrain differ diff --git a/public/terrain/19/858601/353893.terrain b/public/terrain/19/858601/353893.terrain new file mode 100644 index 000000000..8efce35ef Binary files /dev/null and b/public/terrain/19/858601/353893.terrain differ diff --git a/public/terrain/19/858601/353894.terrain b/public/terrain/19/858601/353894.terrain new file mode 100644 index 000000000..098ab7883 Binary files /dev/null and b/public/terrain/19/858601/353894.terrain differ diff --git a/public/terrain/19/858601/353895.terrain b/public/terrain/19/858601/353895.terrain new file mode 100644 index 000000000..8d3248bae Binary files /dev/null and b/public/terrain/19/858601/353895.terrain differ diff --git a/public/terrain/19/858601/353896.terrain b/public/terrain/19/858601/353896.terrain new file mode 100644 index 000000000..3c97543c3 Binary files /dev/null and b/public/terrain/19/858601/353896.terrain differ diff --git a/public/terrain/19/858601/353897.terrain b/public/terrain/19/858601/353897.terrain new file mode 100644 index 000000000..59bdfca71 Binary files /dev/null and b/public/terrain/19/858601/353897.terrain differ diff --git a/public/terrain/19/858601/353898.terrain b/public/terrain/19/858601/353898.terrain new file mode 100644 index 000000000..c78461295 Binary files /dev/null and b/public/terrain/19/858601/353898.terrain differ diff --git a/public/terrain/19/858601/353899.terrain b/public/terrain/19/858601/353899.terrain new file mode 100644 index 000000000..114644b90 Binary files /dev/null and b/public/terrain/19/858601/353899.terrain differ diff --git a/public/terrain/19/858601/353900.terrain b/public/terrain/19/858601/353900.terrain new file mode 100644 index 000000000..7a736b697 Binary files /dev/null and b/public/terrain/19/858601/353900.terrain differ diff --git a/public/terrain/19/858601/353901.terrain b/public/terrain/19/858601/353901.terrain new file mode 100644 index 000000000..5065d4f40 Binary files /dev/null and b/public/terrain/19/858601/353901.terrain differ diff --git a/public/terrain/19/858601/353902.terrain b/public/terrain/19/858601/353902.terrain new file mode 100644 index 000000000..510d24c53 Binary files /dev/null and b/public/terrain/19/858601/353902.terrain differ diff --git a/public/terrain/19/858601/353903.terrain b/public/terrain/19/858601/353903.terrain new file mode 100644 index 000000000..03914f36c Binary files /dev/null and b/public/terrain/19/858601/353903.terrain differ diff --git a/public/terrain/19/858601/353904.terrain b/public/terrain/19/858601/353904.terrain new file mode 100644 index 000000000..10164a671 Binary files /dev/null and b/public/terrain/19/858601/353904.terrain differ diff --git a/public/terrain/19/858601/353905.terrain b/public/terrain/19/858601/353905.terrain new file mode 100644 index 000000000..8ebf70380 Binary files /dev/null and b/public/terrain/19/858601/353905.terrain differ diff --git a/public/terrain/19/858601/353906.terrain b/public/terrain/19/858601/353906.terrain new file mode 100644 index 000000000..b2577237c Binary files /dev/null and b/public/terrain/19/858601/353906.terrain differ diff --git a/public/terrain/19/858601/353907.terrain b/public/terrain/19/858601/353907.terrain new file mode 100644 index 000000000..8adf88cb0 Binary files /dev/null and b/public/terrain/19/858601/353907.terrain differ diff --git a/public/terrain/19/858601/353908.terrain b/public/terrain/19/858601/353908.terrain new file mode 100644 index 000000000..128b4b0c4 Binary files /dev/null and b/public/terrain/19/858601/353908.terrain differ diff --git a/public/terrain/19/858601/353909.terrain b/public/terrain/19/858601/353909.terrain new file mode 100644 index 000000000..f94b00176 Binary files /dev/null and b/public/terrain/19/858601/353909.terrain differ diff --git a/public/terrain/19/858601/353910.terrain b/public/terrain/19/858601/353910.terrain new file mode 100644 index 000000000..b1dcf59a3 Binary files /dev/null and b/public/terrain/19/858601/353910.terrain differ diff --git a/public/terrain/19/858601/353911.terrain b/public/terrain/19/858601/353911.terrain new file mode 100644 index 000000000..0ca9d69b7 Binary files /dev/null and b/public/terrain/19/858601/353911.terrain differ diff --git a/public/terrain/19/858601/353912.terrain b/public/terrain/19/858601/353912.terrain new file mode 100644 index 000000000..b5cecdb2e Binary files /dev/null and b/public/terrain/19/858601/353912.terrain differ diff --git a/public/terrain/19/858601/353913.terrain b/public/terrain/19/858601/353913.terrain new file mode 100644 index 000000000..1db5f2243 Binary files /dev/null and b/public/terrain/19/858601/353913.terrain differ diff --git a/public/terrain/19/858601/353914.terrain b/public/terrain/19/858601/353914.terrain new file mode 100644 index 000000000..b48d61b86 Binary files /dev/null and b/public/terrain/19/858601/353914.terrain differ diff --git a/public/terrain/19/858601/353915.terrain b/public/terrain/19/858601/353915.terrain new file mode 100644 index 000000000..2b13a0fe1 Binary files /dev/null and b/public/terrain/19/858601/353915.terrain differ diff --git a/public/terrain/19/858601/353916.terrain b/public/terrain/19/858601/353916.terrain new file mode 100644 index 000000000..8848e8641 Binary files /dev/null and b/public/terrain/19/858601/353916.terrain differ diff --git a/public/terrain/19/858601/353917.terrain b/public/terrain/19/858601/353917.terrain new file mode 100644 index 000000000..f9e87b7b4 Binary files /dev/null and b/public/terrain/19/858601/353917.terrain differ diff --git a/public/terrain/19/858601/353918.terrain b/public/terrain/19/858601/353918.terrain new file mode 100644 index 000000000..3efcbf8fb Binary files /dev/null and b/public/terrain/19/858601/353918.terrain differ diff --git a/public/terrain/19/858601/353919.terrain b/public/terrain/19/858601/353919.terrain new file mode 100644 index 000000000..085938743 Binary files /dev/null and b/public/terrain/19/858601/353919.terrain differ diff --git a/public/terrain/19/858601/353920.terrain b/public/terrain/19/858601/353920.terrain new file mode 100644 index 000000000..20eaf9ad6 Binary files /dev/null and b/public/terrain/19/858601/353920.terrain differ diff --git a/public/terrain/19/858601/353921.terrain b/public/terrain/19/858601/353921.terrain new file mode 100644 index 000000000..38bbd620b Binary files /dev/null and b/public/terrain/19/858601/353921.terrain differ diff --git a/public/terrain/19/858601/353922.terrain b/public/terrain/19/858601/353922.terrain new file mode 100644 index 000000000..6aaa24167 Binary files /dev/null and b/public/terrain/19/858601/353922.terrain differ diff --git a/public/terrain/19/858601/353923.terrain b/public/terrain/19/858601/353923.terrain new file mode 100644 index 000000000..8717bc73b Binary files /dev/null and b/public/terrain/19/858601/353923.terrain differ diff --git a/public/terrain/19/858601/353924.terrain b/public/terrain/19/858601/353924.terrain new file mode 100644 index 000000000..455401f8d Binary files /dev/null and b/public/terrain/19/858601/353924.terrain differ diff --git a/public/terrain/19/858601/353925.terrain b/public/terrain/19/858601/353925.terrain new file mode 100644 index 000000000..d15530883 Binary files /dev/null and b/public/terrain/19/858601/353925.terrain differ diff --git a/public/terrain/19/858601/353926.terrain b/public/terrain/19/858601/353926.terrain new file mode 100644 index 000000000..9bf9e5fd9 Binary files /dev/null and b/public/terrain/19/858601/353926.terrain differ diff --git a/public/terrain/19/858601/353927.terrain b/public/terrain/19/858601/353927.terrain new file mode 100644 index 000000000..4e02bbf17 Binary files /dev/null and b/public/terrain/19/858601/353927.terrain differ diff --git a/public/terrain/19/858601/353928.terrain b/public/terrain/19/858601/353928.terrain new file mode 100644 index 000000000..8f296b8b7 Binary files /dev/null and b/public/terrain/19/858601/353928.terrain differ diff --git a/public/terrain/19/858601/353929.terrain b/public/terrain/19/858601/353929.terrain new file mode 100644 index 000000000..b71838d81 Binary files /dev/null and b/public/terrain/19/858601/353929.terrain differ diff --git a/public/terrain/19/858601/353930.terrain b/public/terrain/19/858601/353930.terrain new file mode 100644 index 000000000..ad056ffb5 Binary files /dev/null and b/public/terrain/19/858601/353930.terrain differ diff --git a/public/terrain/19/858601/353931.terrain b/public/terrain/19/858601/353931.terrain new file mode 100644 index 000000000..54a8d559f Binary files /dev/null and b/public/terrain/19/858601/353931.terrain differ diff --git a/public/terrain/19/858601/353932.terrain b/public/terrain/19/858601/353932.terrain new file mode 100644 index 000000000..fc6f6a2f7 Binary files /dev/null and b/public/terrain/19/858601/353932.terrain differ diff --git a/public/terrain/19/858601/353933.terrain b/public/terrain/19/858601/353933.terrain new file mode 100644 index 000000000..a4b35c7ad Binary files /dev/null and b/public/terrain/19/858601/353933.terrain differ diff --git a/public/terrain/19/858601/353934.terrain b/public/terrain/19/858601/353934.terrain new file mode 100644 index 000000000..061e66349 Binary files /dev/null and b/public/terrain/19/858601/353934.terrain differ diff --git a/public/terrain/19/858601/353935.terrain b/public/terrain/19/858601/353935.terrain new file mode 100644 index 000000000..65bac2e46 Binary files /dev/null and b/public/terrain/19/858601/353935.terrain differ diff --git a/public/terrain/19/858601/353936.terrain b/public/terrain/19/858601/353936.terrain new file mode 100644 index 000000000..cf6a76e44 Binary files /dev/null and b/public/terrain/19/858601/353936.terrain differ diff --git a/public/terrain/19/858601/353937.terrain b/public/terrain/19/858601/353937.terrain new file mode 100644 index 000000000..303f11e92 Binary files /dev/null and b/public/terrain/19/858601/353937.terrain differ diff --git a/public/terrain/19/858601/353938.terrain b/public/terrain/19/858601/353938.terrain new file mode 100644 index 000000000..3f91730c9 Binary files /dev/null and b/public/terrain/19/858601/353938.terrain differ diff --git a/public/terrain/19/858601/353939.terrain b/public/terrain/19/858601/353939.terrain new file mode 100644 index 000000000..d823ccb89 Binary files /dev/null and b/public/terrain/19/858601/353939.terrain differ diff --git a/public/terrain/19/858601/353940.terrain b/public/terrain/19/858601/353940.terrain new file mode 100644 index 000000000..d4cf77c1c Binary files /dev/null and b/public/terrain/19/858601/353940.terrain differ diff --git a/public/terrain/19/858601/353941.terrain b/public/terrain/19/858601/353941.terrain new file mode 100644 index 000000000..2401382e1 Binary files /dev/null and b/public/terrain/19/858601/353941.terrain differ diff --git a/public/terrain/19/858601/353942.terrain b/public/terrain/19/858601/353942.terrain new file mode 100644 index 000000000..4dd7b1353 Binary files /dev/null and b/public/terrain/19/858601/353942.terrain differ diff --git a/public/terrain/19/858601/353943.terrain b/public/terrain/19/858601/353943.terrain new file mode 100644 index 000000000..18a437275 Binary files /dev/null and b/public/terrain/19/858601/353943.terrain differ diff --git a/public/terrain/19/858601/353944.terrain b/public/terrain/19/858601/353944.terrain new file mode 100644 index 000000000..87791022c Binary files /dev/null and b/public/terrain/19/858601/353944.terrain differ diff --git a/public/terrain/19/858601/353945.terrain b/public/terrain/19/858601/353945.terrain new file mode 100644 index 000000000..9e19a324b Binary files /dev/null and b/public/terrain/19/858601/353945.terrain differ diff --git a/public/terrain/19/858601/353946.terrain b/public/terrain/19/858601/353946.terrain new file mode 100644 index 000000000..35a490631 Binary files /dev/null and b/public/terrain/19/858601/353946.terrain differ diff --git a/public/terrain/19/858601/353947.terrain b/public/terrain/19/858601/353947.terrain new file mode 100644 index 000000000..9ada3b6da Binary files /dev/null and b/public/terrain/19/858601/353947.terrain differ diff --git a/public/terrain/19/858601/353948.terrain b/public/terrain/19/858601/353948.terrain new file mode 100644 index 000000000..1a8fac2dd Binary files /dev/null and b/public/terrain/19/858601/353948.terrain differ diff --git a/public/terrain/19/858601/353949.terrain b/public/terrain/19/858601/353949.terrain new file mode 100644 index 000000000..6db80b14c Binary files /dev/null and b/public/terrain/19/858601/353949.terrain differ diff --git a/public/terrain/19/858601/353950.terrain b/public/terrain/19/858601/353950.terrain new file mode 100644 index 000000000..cbec90caf Binary files /dev/null and b/public/terrain/19/858601/353950.terrain differ diff --git a/public/terrain/19/858601/353951.terrain b/public/terrain/19/858601/353951.terrain new file mode 100644 index 000000000..5e0608631 Binary files /dev/null and b/public/terrain/19/858601/353951.terrain differ diff --git a/public/terrain/19/858601/353952.terrain b/public/terrain/19/858601/353952.terrain new file mode 100644 index 000000000..ba6b15163 Binary files /dev/null and b/public/terrain/19/858601/353952.terrain differ diff --git a/public/terrain/19/858601/353953.terrain b/public/terrain/19/858601/353953.terrain new file mode 100644 index 000000000..0186da63f Binary files /dev/null and b/public/terrain/19/858601/353953.terrain differ diff --git a/public/terrain/19/858601/353954.terrain b/public/terrain/19/858601/353954.terrain new file mode 100644 index 000000000..c534cff0e Binary files /dev/null and b/public/terrain/19/858601/353954.terrain differ diff --git a/public/terrain/19/858601/353955.terrain b/public/terrain/19/858601/353955.terrain new file mode 100644 index 000000000..a086f8b83 Binary files /dev/null and b/public/terrain/19/858601/353955.terrain differ diff --git a/public/terrain/19/858601/353956.terrain b/public/terrain/19/858601/353956.terrain new file mode 100644 index 000000000..2cbe12a44 Binary files /dev/null and b/public/terrain/19/858601/353956.terrain differ diff --git a/public/terrain/19/858601/353957.terrain b/public/terrain/19/858601/353957.terrain new file mode 100644 index 000000000..ea37b9028 Binary files /dev/null and b/public/terrain/19/858601/353957.terrain differ diff --git a/public/terrain/19/858601/353958.terrain b/public/terrain/19/858601/353958.terrain new file mode 100644 index 000000000..efc373b85 Binary files /dev/null and b/public/terrain/19/858601/353958.terrain differ diff --git a/public/terrain/19/858601/353959.terrain b/public/terrain/19/858601/353959.terrain new file mode 100644 index 000000000..c67e9c743 Binary files /dev/null and b/public/terrain/19/858601/353959.terrain differ diff --git a/public/terrain/19/858601/353960.terrain b/public/terrain/19/858601/353960.terrain new file mode 100644 index 000000000..dc1de1811 Binary files /dev/null and b/public/terrain/19/858601/353960.terrain differ diff --git a/public/terrain/19/858601/353961.terrain b/public/terrain/19/858601/353961.terrain new file mode 100644 index 000000000..ea5a19559 Binary files /dev/null and b/public/terrain/19/858601/353961.terrain differ diff --git a/public/terrain/19/858601/353962.terrain b/public/terrain/19/858601/353962.terrain new file mode 100644 index 000000000..2a10af5f3 Binary files /dev/null and b/public/terrain/19/858601/353962.terrain differ diff --git a/public/terrain/19/858601/353963.terrain b/public/terrain/19/858601/353963.terrain new file mode 100644 index 000000000..d837af4b4 Binary files /dev/null and b/public/terrain/19/858601/353963.terrain differ diff --git a/public/terrain/19/858601/353964.terrain b/public/terrain/19/858601/353964.terrain new file mode 100644 index 000000000..dafbf8e4a Binary files /dev/null and b/public/terrain/19/858601/353964.terrain differ diff --git a/public/terrain/19/858601/353965.terrain b/public/terrain/19/858601/353965.terrain new file mode 100644 index 000000000..8f132de11 Binary files /dev/null and b/public/terrain/19/858601/353965.terrain differ diff --git a/public/terrain/19/858601/353966.terrain b/public/terrain/19/858601/353966.terrain new file mode 100644 index 000000000..437d2dd97 Binary files /dev/null and b/public/terrain/19/858601/353966.terrain differ diff --git a/public/terrain/19/858601/353967.terrain b/public/terrain/19/858601/353967.terrain new file mode 100644 index 000000000..e5842adb0 Binary files /dev/null and b/public/terrain/19/858601/353967.terrain differ diff --git a/public/terrain/19/858601/353968.terrain b/public/terrain/19/858601/353968.terrain new file mode 100644 index 000000000..1b99eb05d Binary files /dev/null and b/public/terrain/19/858601/353968.terrain differ diff --git a/public/terrain/19/858601/353969.terrain b/public/terrain/19/858601/353969.terrain new file mode 100644 index 000000000..12c6ce762 Binary files /dev/null and b/public/terrain/19/858601/353969.terrain differ diff --git a/public/terrain/19/858601/353970.terrain b/public/terrain/19/858601/353970.terrain new file mode 100644 index 000000000..a41ba9f2f Binary files /dev/null and b/public/terrain/19/858601/353970.terrain differ diff --git a/public/terrain/19/858601/353971.terrain b/public/terrain/19/858601/353971.terrain new file mode 100644 index 000000000..9014c3b7a Binary files /dev/null and b/public/terrain/19/858601/353971.terrain differ diff --git a/public/terrain/19/858601/353972.terrain b/public/terrain/19/858601/353972.terrain new file mode 100644 index 000000000..345f3ef2f Binary files /dev/null and b/public/terrain/19/858601/353972.terrain differ diff --git a/public/terrain/19/858601/353973.terrain b/public/terrain/19/858601/353973.terrain new file mode 100644 index 000000000..eab13fb30 Binary files /dev/null and b/public/terrain/19/858601/353973.terrain differ diff --git a/public/terrain/19/858601/353974.terrain b/public/terrain/19/858601/353974.terrain new file mode 100644 index 000000000..5510baa65 Binary files /dev/null and b/public/terrain/19/858601/353974.terrain differ diff --git a/public/terrain/19/858601/353975.terrain b/public/terrain/19/858601/353975.terrain new file mode 100644 index 000000000..add175818 Binary files /dev/null and b/public/terrain/19/858601/353975.terrain differ diff --git a/public/terrain/19/858601/353976.terrain b/public/terrain/19/858601/353976.terrain new file mode 100644 index 000000000..f86ebc622 Binary files /dev/null and b/public/terrain/19/858601/353976.terrain differ diff --git a/public/terrain/19/858601/353977.terrain b/public/terrain/19/858601/353977.terrain new file mode 100644 index 000000000..f2f2f134b Binary files /dev/null and b/public/terrain/19/858601/353977.terrain differ diff --git a/public/terrain/19/858601/353978.terrain b/public/terrain/19/858601/353978.terrain new file mode 100644 index 000000000..968ee62e2 Binary files /dev/null and b/public/terrain/19/858601/353978.terrain differ diff --git a/public/terrain/19/858601/353979.terrain b/public/terrain/19/858601/353979.terrain new file mode 100644 index 000000000..e8b80a8e0 Binary files /dev/null and b/public/terrain/19/858601/353979.terrain differ diff --git a/public/terrain/19/858601/353980.terrain b/public/terrain/19/858601/353980.terrain new file mode 100644 index 000000000..e1b6ed2ae Binary files /dev/null and b/public/terrain/19/858601/353980.terrain differ diff --git a/public/terrain/19/858601/353981.terrain b/public/terrain/19/858601/353981.terrain new file mode 100644 index 000000000..4be185559 Binary files /dev/null and b/public/terrain/19/858601/353981.terrain differ diff --git a/public/terrain/19/858601/353982.terrain b/public/terrain/19/858601/353982.terrain new file mode 100644 index 000000000..74a3c28d2 Binary files /dev/null and b/public/terrain/19/858601/353982.terrain differ diff --git a/public/terrain/19/858601/353983.terrain b/public/terrain/19/858601/353983.terrain new file mode 100644 index 000000000..18aafe420 Binary files /dev/null and b/public/terrain/19/858601/353983.terrain differ diff --git a/public/terrain/19/858601/353984.terrain b/public/terrain/19/858601/353984.terrain new file mode 100644 index 000000000..4cb318c04 Binary files /dev/null and b/public/terrain/19/858601/353984.terrain differ diff --git a/public/terrain/19/858601/353985.terrain b/public/terrain/19/858601/353985.terrain new file mode 100644 index 000000000..032d6d720 Binary files /dev/null and b/public/terrain/19/858601/353985.terrain differ diff --git a/public/terrain/19/858601/353986.terrain b/public/terrain/19/858601/353986.terrain new file mode 100644 index 000000000..1cc556393 Binary files /dev/null and b/public/terrain/19/858601/353986.terrain differ diff --git a/public/terrain/19/858601/353987.terrain b/public/terrain/19/858601/353987.terrain new file mode 100644 index 000000000..1c01136bb Binary files /dev/null and b/public/terrain/19/858601/353987.terrain differ diff --git a/public/terrain/19/858601/353988.terrain b/public/terrain/19/858601/353988.terrain new file mode 100644 index 000000000..5ad33e33c Binary files /dev/null and b/public/terrain/19/858601/353988.terrain differ diff --git a/public/terrain/19/858601/353989.terrain b/public/terrain/19/858601/353989.terrain new file mode 100644 index 000000000..981e0d47b Binary files /dev/null and b/public/terrain/19/858601/353989.terrain differ diff --git a/public/terrain/19/858601/353990.terrain b/public/terrain/19/858601/353990.terrain new file mode 100644 index 000000000..81f195f85 Binary files /dev/null and b/public/terrain/19/858601/353990.terrain differ diff --git a/public/terrain/19/858601/353991.terrain b/public/terrain/19/858601/353991.terrain new file mode 100644 index 000000000..e7e391df6 Binary files /dev/null and b/public/terrain/19/858601/353991.terrain differ diff --git a/public/terrain/19/858601/353992.terrain b/public/terrain/19/858601/353992.terrain new file mode 100644 index 000000000..f16c94d7c Binary files /dev/null and b/public/terrain/19/858601/353992.terrain differ diff --git a/public/terrain/19/858601/353993.terrain b/public/terrain/19/858601/353993.terrain new file mode 100644 index 000000000..9f75f9173 Binary files /dev/null and b/public/terrain/19/858601/353993.terrain differ diff --git a/public/terrain/19/858601/353994.terrain b/public/terrain/19/858601/353994.terrain new file mode 100644 index 000000000..c1395312d Binary files /dev/null and b/public/terrain/19/858601/353994.terrain differ diff --git a/public/terrain/19/858601/353995.terrain b/public/terrain/19/858601/353995.terrain new file mode 100644 index 000000000..0599070df Binary files /dev/null and b/public/terrain/19/858601/353995.terrain differ diff --git a/public/terrain/19/858601/353996.terrain b/public/terrain/19/858601/353996.terrain new file mode 100644 index 000000000..61dab5a7c Binary files /dev/null and b/public/terrain/19/858601/353996.terrain differ diff --git a/public/terrain/19/858601/353997.terrain b/public/terrain/19/858601/353997.terrain new file mode 100644 index 000000000..f77f45722 Binary files /dev/null and b/public/terrain/19/858601/353997.terrain differ diff --git a/public/terrain/19/858601/353998.terrain b/public/terrain/19/858601/353998.terrain new file mode 100644 index 000000000..b9a4a1894 Binary files /dev/null and b/public/terrain/19/858601/353998.terrain differ diff --git a/public/terrain/19/858601/353999.terrain b/public/terrain/19/858601/353999.terrain new file mode 100644 index 000000000..8d922f3da Binary files /dev/null and b/public/terrain/19/858601/353999.terrain differ diff --git a/public/terrain/19/858601/354000.terrain b/public/terrain/19/858601/354000.terrain new file mode 100644 index 000000000..8ee7ea84a Binary files /dev/null and b/public/terrain/19/858601/354000.terrain differ diff --git a/public/terrain/19/858601/354001.terrain b/public/terrain/19/858601/354001.terrain new file mode 100644 index 000000000..dad4b5769 Binary files /dev/null and b/public/terrain/19/858601/354001.terrain differ diff --git a/public/terrain/19/858601/354002.terrain b/public/terrain/19/858601/354002.terrain new file mode 100644 index 000000000..0cbe941f0 Binary files /dev/null and b/public/terrain/19/858601/354002.terrain differ diff --git a/public/terrain/19/858601/354003.terrain b/public/terrain/19/858601/354003.terrain new file mode 100644 index 000000000..5088d553c Binary files /dev/null and b/public/terrain/19/858601/354003.terrain differ diff --git a/public/terrain/19/858601/354004.terrain b/public/terrain/19/858601/354004.terrain new file mode 100644 index 000000000..9d56ff1ca Binary files /dev/null and b/public/terrain/19/858601/354004.terrain differ diff --git a/public/terrain/19/858601/354005.terrain b/public/terrain/19/858601/354005.terrain new file mode 100644 index 000000000..f39b57a1a Binary files /dev/null and b/public/terrain/19/858601/354005.terrain differ diff --git a/public/terrain/19/858601/354006.terrain b/public/terrain/19/858601/354006.terrain new file mode 100644 index 000000000..88ce5b987 Binary files /dev/null and b/public/terrain/19/858601/354006.terrain differ diff --git a/public/terrain/19/858601/354007.terrain b/public/terrain/19/858601/354007.terrain new file mode 100644 index 000000000..bb810d02b Binary files /dev/null and b/public/terrain/19/858601/354007.terrain differ diff --git a/public/terrain/19/858601/354008.terrain b/public/terrain/19/858601/354008.terrain new file mode 100644 index 000000000..d7b7a87b6 Binary files /dev/null and b/public/terrain/19/858601/354008.terrain differ diff --git a/public/terrain/19/858601/354009.terrain b/public/terrain/19/858601/354009.terrain new file mode 100644 index 000000000..7e5e21d87 Binary files /dev/null and b/public/terrain/19/858601/354009.terrain differ diff --git a/public/terrain/19/858601/354010.terrain b/public/terrain/19/858601/354010.terrain new file mode 100644 index 000000000..1be60cc5a Binary files /dev/null and b/public/terrain/19/858601/354010.terrain differ diff --git a/public/terrain/19/858601/354011.terrain b/public/terrain/19/858601/354011.terrain new file mode 100644 index 000000000..6a4e214e1 Binary files /dev/null and b/public/terrain/19/858601/354011.terrain differ diff --git a/public/terrain/19/858601/354012.terrain b/public/terrain/19/858601/354012.terrain new file mode 100644 index 000000000..b789049a8 Binary files /dev/null and b/public/terrain/19/858601/354012.terrain differ diff --git a/public/terrain/19/858601/354013.terrain b/public/terrain/19/858601/354013.terrain new file mode 100644 index 000000000..8e0184d30 Binary files /dev/null and b/public/terrain/19/858601/354013.terrain differ diff --git a/public/terrain/19/858601/354014.terrain b/public/terrain/19/858601/354014.terrain new file mode 100644 index 000000000..ee10dd768 Binary files /dev/null and b/public/terrain/19/858601/354014.terrain differ diff --git a/public/terrain/19/858601/354015.terrain b/public/terrain/19/858601/354015.terrain new file mode 100644 index 000000000..8c6acd52a Binary files /dev/null and b/public/terrain/19/858601/354015.terrain differ diff --git a/public/terrain/19/858601/354016.terrain b/public/terrain/19/858601/354016.terrain new file mode 100644 index 000000000..cae3bbebd Binary files /dev/null and b/public/terrain/19/858601/354016.terrain differ diff --git a/public/terrain/19/858601/354017.terrain b/public/terrain/19/858601/354017.terrain new file mode 100644 index 000000000..58f1ede8d Binary files /dev/null and b/public/terrain/19/858601/354017.terrain differ diff --git a/public/terrain/19/858601/354018.terrain b/public/terrain/19/858601/354018.terrain new file mode 100644 index 000000000..aafa1a6b4 Binary files /dev/null and b/public/terrain/19/858601/354018.terrain differ diff --git a/public/terrain/19/858601/354019.terrain b/public/terrain/19/858601/354019.terrain new file mode 100644 index 000000000..0e4933535 Binary files /dev/null and b/public/terrain/19/858601/354019.terrain differ diff --git a/public/terrain/19/858601/354020.terrain b/public/terrain/19/858601/354020.terrain new file mode 100644 index 000000000..fc5425d16 Binary files /dev/null and b/public/terrain/19/858601/354020.terrain differ diff --git a/public/terrain/19/858601/354021.terrain b/public/terrain/19/858601/354021.terrain new file mode 100644 index 000000000..ed8010c5e Binary files /dev/null and b/public/terrain/19/858601/354021.terrain differ diff --git a/public/terrain/19/858601/354022.terrain b/public/terrain/19/858601/354022.terrain new file mode 100644 index 000000000..25f854ddb Binary files /dev/null and b/public/terrain/19/858601/354022.terrain differ diff --git a/public/terrain/19/858601/354023.terrain b/public/terrain/19/858601/354023.terrain new file mode 100644 index 000000000..7b434a86f Binary files /dev/null and b/public/terrain/19/858601/354023.terrain differ diff --git a/public/terrain/19/858601/354024.terrain b/public/terrain/19/858601/354024.terrain new file mode 100644 index 000000000..0d4f3aed9 Binary files /dev/null and b/public/terrain/19/858601/354024.terrain differ diff --git a/public/terrain/19/858601/354025.terrain b/public/terrain/19/858601/354025.terrain new file mode 100644 index 000000000..5ab6c9d7f Binary files /dev/null and b/public/terrain/19/858601/354025.terrain differ diff --git a/public/terrain/19/858601/354026.terrain b/public/terrain/19/858601/354026.terrain new file mode 100644 index 000000000..5c18a0aee Binary files /dev/null and b/public/terrain/19/858601/354026.terrain differ diff --git a/public/terrain/19/858601/354027.terrain b/public/terrain/19/858601/354027.terrain new file mode 100644 index 000000000..24d012088 Binary files /dev/null and b/public/terrain/19/858601/354027.terrain differ diff --git a/public/terrain/19/858601/354028.terrain b/public/terrain/19/858601/354028.terrain new file mode 100644 index 000000000..f4aae23e8 Binary files /dev/null and b/public/terrain/19/858601/354028.terrain differ diff --git a/public/terrain/19/858601/354029.terrain b/public/terrain/19/858601/354029.terrain new file mode 100644 index 000000000..e6b4d283f Binary files /dev/null and b/public/terrain/19/858601/354029.terrain differ diff --git a/public/terrain/19/858601/354030.terrain b/public/terrain/19/858601/354030.terrain new file mode 100644 index 000000000..086e23d8b Binary files /dev/null and b/public/terrain/19/858601/354030.terrain differ diff --git a/public/terrain/19/858601/354031.terrain b/public/terrain/19/858601/354031.terrain new file mode 100644 index 000000000..8d1c7b7a7 Binary files /dev/null and b/public/terrain/19/858601/354031.terrain differ diff --git a/public/terrain/19/858601/354032.terrain b/public/terrain/19/858601/354032.terrain new file mode 100644 index 000000000..94a02c353 Binary files /dev/null and b/public/terrain/19/858601/354032.terrain differ diff --git a/public/terrain/19/858601/354033.terrain b/public/terrain/19/858601/354033.terrain new file mode 100644 index 000000000..87f7efd45 Binary files /dev/null and b/public/terrain/19/858601/354033.terrain differ diff --git a/public/terrain/19/858601/354034.terrain b/public/terrain/19/858601/354034.terrain new file mode 100644 index 000000000..e43a820e3 Binary files /dev/null and b/public/terrain/19/858601/354034.terrain differ diff --git a/public/terrain/19/858601/354035.terrain b/public/terrain/19/858601/354035.terrain new file mode 100644 index 000000000..7e89eeebf Binary files /dev/null and b/public/terrain/19/858601/354035.terrain differ diff --git a/public/terrain/19/858601/354036.terrain b/public/terrain/19/858601/354036.terrain new file mode 100644 index 000000000..7aba7afa7 Binary files /dev/null and b/public/terrain/19/858601/354036.terrain differ diff --git a/public/terrain/19/858601/354037.terrain b/public/terrain/19/858601/354037.terrain new file mode 100644 index 000000000..c029aac3e Binary files /dev/null and b/public/terrain/19/858601/354037.terrain differ diff --git a/public/terrain/19/858601/354038.terrain b/public/terrain/19/858601/354038.terrain new file mode 100644 index 000000000..8e00b415c Binary files /dev/null and b/public/terrain/19/858601/354038.terrain differ diff --git a/public/terrain/19/858601/354039.terrain b/public/terrain/19/858601/354039.terrain new file mode 100644 index 000000000..a5d7c10df Binary files /dev/null and b/public/terrain/19/858601/354039.terrain differ diff --git a/public/terrain/19/858601/354040.terrain b/public/terrain/19/858601/354040.terrain new file mode 100644 index 000000000..57469e61b Binary files /dev/null and b/public/terrain/19/858601/354040.terrain differ diff --git a/public/terrain/19/858601/354041.terrain b/public/terrain/19/858601/354041.terrain new file mode 100644 index 000000000..7373e81c7 Binary files /dev/null and b/public/terrain/19/858601/354041.terrain differ diff --git a/public/terrain/19/858601/354042.terrain b/public/terrain/19/858601/354042.terrain new file mode 100644 index 000000000..92f948d34 Binary files /dev/null and b/public/terrain/19/858601/354042.terrain differ diff --git a/public/terrain/19/858601/354043.terrain b/public/terrain/19/858601/354043.terrain new file mode 100644 index 000000000..1e99229f3 Binary files /dev/null and b/public/terrain/19/858601/354043.terrain differ diff --git a/public/terrain/19/858601/354044.terrain b/public/terrain/19/858601/354044.terrain new file mode 100644 index 000000000..bf7abd1e8 Binary files /dev/null and b/public/terrain/19/858601/354044.terrain differ diff --git a/public/terrain/19/858601/354045.terrain b/public/terrain/19/858601/354045.terrain new file mode 100644 index 000000000..27500b469 Binary files /dev/null and b/public/terrain/19/858601/354045.terrain differ diff --git a/public/terrain/19/858601/354046.terrain b/public/terrain/19/858601/354046.terrain new file mode 100644 index 000000000..97284a09f Binary files /dev/null and b/public/terrain/19/858601/354046.terrain differ diff --git a/public/terrain/19/858601/354047.terrain b/public/terrain/19/858601/354047.terrain new file mode 100644 index 000000000..03aaf42ff Binary files /dev/null and b/public/terrain/19/858601/354047.terrain differ diff --git a/public/terrain/19/858601/354048.terrain b/public/terrain/19/858601/354048.terrain new file mode 100644 index 000000000..3be847931 Binary files /dev/null and b/public/terrain/19/858601/354048.terrain differ diff --git a/public/terrain/19/858601/354049.terrain b/public/terrain/19/858601/354049.terrain new file mode 100644 index 000000000..0d6064399 Binary files /dev/null and b/public/terrain/19/858601/354049.terrain differ diff --git a/public/terrain/19/858601/354050.terrain b/public/terrain/19/858601/354050.terrain new file mode 100644 index 000000000..b9fcdd519 Binary files /dev/null and b/public/terrain/19/858601/354050.terrain differ diff --git a/public/terrain/19/858601/354051.terrain b/public/terrain/19/858601/354051.terrain new file mode 100644 index 000000000..226753252 Binary files /dev/null and b/public/terrain/19/858601/354051.terrain differ diff --git a/public/terrain/19/858601/354052.terrain b/public/terrain/19/858601/354052.terrain new file mode 100644 index 000000000..8174eaf90 Binary files /dev/null and b/public/terrain/19/858601/354052.terrain differ diff --git a/public/terrain/19/858601/354053.terrain b/public/terrain/19/858601/354053.terrain new file mode 100644 index 000000000..5f58b3a0b Binary files /dev/null and b/public/terrain/19/858601/354053.terrain differ diff --git a/public/terrain/19/858601/354054.terrain b/public/terrain/19/858601/354054.terrain new file mode 100644 index 000000000..35b2062d7 Binary files /dev/null and b/public/terrain/19/858601/354054.terrain differ diff --git a/public/terrain/19/858601/354055.terrain b/public/terrain/19/858601/354055.terrain new file mode 100644 index 000000000..34814245e Binary files /dev/null and b/public/terrain/19/858601/354055.terrain differ diff --git a/public/terrain/19/858601/354056.terrain b/public/terrain/19/858601/354056.terrain new file mode 100644 index 000000000..e30d3feab Binary files /dev/null and b/public/terrain/19/858601/354056.terrain differ diff --git a/public/terrain/19/858601/354057.terrain b/public/terrain/19/858601/354057.terrain new file mode 100644 index 000000000..a50e6ca37 Binary files /dev/null and b/public/terrain/19/858601/354057.terrain differ diff --git a/public/terrain/19/858601/354058.terrain b/public/terrain/19/858601/354058.terrain new file mode 100644 index 000000000..75aa5445a Binary files /dev/null and b/public/terrain/19/858601/354058.terrain differ diff --git a/public/terrain/19/858601/354059.terrain b/public/terrain/19/858601/354059.terrain new file mode 100644 index 000000000..8d2d0136d Binary files /dev/null and b/public/terrain/19/858601/354059.terrain differ diff --git a/public/terrain/19/858602/353743.terrain b/public/terrain/19/858602/353743.terrain new file mode 100644 index 000000000..3c03dd389 Binary files /dev/null and b/public/terrain/19/858602/353743.terrain differ diff --git a/public/terrain/19/858602/353744.terrain b/public/terrain/19/858602/353744.terrain new file mode 100644 index 000000000..6e56c775d Binary files /dev/null and b/public/terrain/19/858602/353744.terrain differ diff --git a/public/terrain/19/858602/353745.terrain b/public/terrain/19/858602/353745.terrain new file mode 100644 index 000000000..0ed9a3adc Binary files /dev/null and b/public/terrain/19/858602/353745.terrain differ diff --git a/public/terrain/19/858602/353746.terrain b/public/terrain/19/858602/353746.terrain new file mode 100644 index 000000000..1f535d608 Binary files /dev/null and b/public/terrain/19/858602/353746.terrain differ diff --git a/public/terrain/19/858602/353747.terrain b/public/terrain/19/858602/353747.terrain new file mode 100644 index 000000000..c46340322 Binary files /dev/null and b/public/terrain/19/858602/353747.terrain differ diff --git a/public/terrain/19/858602/353748.terrain b/public/terrain/19/858602/353748.terrain new file mode 100644 index 000000000..27dee9aea Binary files /dev/null and b/public/terrain/19/858602/353748.terrain differ diff --git a/public/terrain/19/858602/353749.terrain b/public/terrain/19/858602/353749.terrain new file mode 100644 index 000000000..6bb3cba40 Binary files /dev/null and b/public/terrain/19/858602/353749.terrain differ diff --git a/public/terrain/19/858602/353750.terrain b/public/terrain/19/858602/353750.terrain new file mode 100644 index 000000000..248c7bd2e Binary files /dev/null and b/public/terrain/19/858602/353750.terrain differ diff --git a/public/terrain/19/858602/353751.terrain b/public/terrain/19/858602/353751.terrain new file mode 100644 index 000000000..a362cc7d4 Binary files /dev/null and b/public/terrain/19/858602/353751.terrain differ diff --git a/public/terrain/19/858602/353752.terrain b/public/terrain/19/858602/353752.terrain new file mode 100644 index 000000000..22ac41ace Binary files /dev/null and b/public/terrain/19/858602/353752.terrain differ diff --git a/public/terrain/19/858602/353753.terrain b/public/terrain/19/858602/353753.terrain new file mode 100644 index 000000000..f87c36515 Binary files /dev/null and b/public/terrain/19/858602/353753.terrain differ diff --git a/public/terrain/19/858602/353754.terrain b/public/terrain/19/858602/353754.terrain new file mode 100644 index 000000000..02fd3941e Binary files /dev/null and b/public/terrain/19/858602/353754.terrain differ diff --git a/public/terrain/19/858602/353755.terrain b/public/terrain/19/858602/353755.terrain new file mode 100644 index 000000000..458c11a5b Binary files /dev/null and b/public/terrain/19/858602/353755.terrain differ diff --git a/public/terrain/19/858602/353756.terrain b/public/terrain/19/858602/353756.terrain new file mode 100644 index 000000000..cfa2fb342 Binary files /dev/null and b/public/terrain/19/858602/353756.terrain differ diff --git a/public/terrain/19/858602/353757.terrain b/public/terrain/19/858602/353757.terrain new file mode 100644 index 000000000..932aed119 Binary files /dev/null and b/public/terrain/19/858602/353757.terrain differ diff --git a/public/terrain/19/858602/353758.terrain b/public/terrain/19/858602/353758.terrain new file mode 100644 index 000000000..0331521f1 Binary files /dev/null and b/public/terrain/19/858602/353758.terrain differ diff --git a/public/terrain/19/858602/353759.terrain b/public/terrain/19/858602/353759.terrain new file mode 100644 index 000000000..3b3903c1f Binary files /dev/null and b/public/terrain/19/858602/353759.terrain differ diff --git a/public/terrain/19/858602/353760.terrain b/public/terrain/19/858602/353760.terrain new file mode 100644 index 000000000..f3b842c54 Binary files /dev/null and b/public/terrain/19/858602/353760.terrain differ diff --git a/public/terrain/19/858602/353761.terrain b/public/terrain/19/858602/353761.terrain new file mode 100644 index 000000000..fabdd92a5 Binary files /dev/null and b/public/terrain/19/858602/353761.terrain differ diff --git a/public/terrain/19/858602/353762.terrain b/public/terrain/19/858602/353762.terrain new file mode 100644 index 000000000..ac0eb2a7d Binary files /dev/null and b/public/terrain/19/858602/353762.terrain differ diff --git a/public/terrain/19/858602/353763.terrain b/public/terrain/19/858602/353763.terrain new file mode 100644 index 000000000..02b2a6ab8 Binary files /dev/null and b/public/terrain/19/858602/353763.terrain differ diff --git a/public/terrain/19/858602/353764.terrain b/public/terrain/19/858602/353764.terrain new file mode 100644 index 000000000..f18e524c7 Binary files /dev/null and b/public/terrain/19/858602/353764.terrain differ diff --git a/public/terrain/19/858602/353765.terrain b/public/terrain/19/858602/353765.terrain new file mode 100644 index 000000000..3399d44c4 Binary files /dev/null and b/public/terrain/19/858602/353765.terrain differ diff --git a/public/terrain/19/858602/353766.terrain b/public/terrain/19/858602/353766.terrain new file mode 100644 index 000000000..6223daf68 Binary files /dev/null and b/public/terrain/19/858602/353766.terrain differ diff --git a/public/terrain/19/858602/353767.terrain b/public/terrain/19/858602/353767.terrain new file mode 100644 index 000000000..214594f2d Binary files /dev/null and b/public/terrain/19/858602/353767.terrain differ diff --git a/public/terrain/19/858602/353768.terrain b/public/terrain/19/858602/353768.terrain new file mode 100644 index 000000000..cd5c15f55 Binary files /dev/null and b/public/terrain/19/858602/353768.terrain differ diff --git a/public/terrain/19/858602/353769.terrain b/public/terrain/19/858602/353769.terrain new file mode 100644 index 000000000..fe5564756 Binary files /dev/null and b/public/terrain/19/858602/353769.terrain differ diff --git a/public/terrain/19/858602/353770.terrain b/public/terrain/19/858602/353770.terrain new file mode 100644 index 000000000..6c6d53de4 Binary files /dev/null and b/public/terrain/19/858602/353770.terrain differ diff --git a/public/terrain/19/858602/353771.terrain b/public/terrain/19/858602/353771.terrain new file mode 100644 index 000000000..bb09168dd Binary files /dev/null and b/public/terrain/19/858602/353771.terrain differ diff --git a/public/terrain/19/858602/353772.terrain b/public/terrain/19/858602/353772.terrain new file mode 100644 index 000000000..3e062e574 Binary files /dev/null and b/public/terrain/19/858602/353772.terrain differ diff --git a/public/terrain/19/858602/353773.terrain b/public/terrain/19/858602/353773.terrain new file mode 100644 index 000000000..76c1a7c32 Binary files /dev/null and b/public/terrain/19/858602/353773.terrain differ diff --git a/public/terrain/19/858602/353774.terrain b/public/terrain/19/858602/353774.terrain new file mode 100644 index 000000000..e44e835cc Binary files /dev/null and b/public/terrain/19/858602/353774.terrain differ diff --git a/public/terrain/19/858602/353775.terrain b/public/terrain/19/858602/353775.terrain new file mode 100644 index 000000000..080981fc1 Binary files /dev/null and b/public/terrain/19/858602/353775.terrain differ diff --git a/public/terrain/19/858602/353776.terrain b/public/terrain/19/858602/353776.terrain new file mode 100644 index 000000000..050df8dc6 Binary files /dev/null and b/public/terrain/19/858602/353776.terrain differ diff --git a/public/terrain/19/858602/353777.terrain b/public/terrain/19/858602/353777.terrain new file mode 100644 index 000000000..a7479009c Binary files /dev/null and b/public/terrain/19/858602/353777.terrain differ diff --git a/public/terrain/19/858602/353778.terrain b/public/terrain/19/858602/353778.terrain new file mode 100644 index 000000000..f6c94216a Binary files /dev/null and b/public/terrain/19/858602/353778.terrain differ diff --git a/public/terrain/19/858602/353779.terrain b/public/terrain/19/858602/353779.terrain new file mode 100644 index 000000000..aba817ca7 Binary files /dev/null and b/public/terrain/19/858602/353779.terrain differ diff --git a/public/terrain/19/858602/353780.terrain b/public/terrain/19/858602/353780.terrain new file mode 100644 index 000000000..b8245411a Binary files /dev/null and b/public/terrain/19/858602/353780.terrain differ diff --git a/public/terrain/19/858602/353781.terrain b/public/terrain/19/858602/353781.terrain new file mode 100644 index 000000000..214544d6b Binary files /dev/null and b/public/terrain/19/858602/353781.terrain differ diff --git a/public/terrain/19/858602/353782.terrain b/public/terrain/19/858602/353782.terrain new file mode 100644 index 000000000..78c74ac81 Binary files /dev/null and b/public/terrain/19/858602/353782.terrain differ diff --git a/public/terrain/19/858602/353783.terrain b/public/terrain/19/858602/353783.terrain new file mode 100644 index 000000000..c41d7d1bc Binary files /dev/null and b/public/terrain/19/858602/353783.terrain differ diff --git a/public/terrain/19/858602/353784.terrain b/public/terrain/19/858602/353784.terrain new file mode 100644 index 000000000..17863969a Binary files /dev/null and b/public/terrain/19/858602/353784.terrain differ diff --git a/public/terrain/19/858602/353785.terrain b/public/terrain/19/858602/353785.terrain new file mode 100644 index 000000000..1de6d7866 Binary files /dev/null and b/public/terrain/19/858602/353785.terrain differ diff --git a/public/terrain/19/858602/353786.terrain b/public/terrain/19/858602/353786.terrain new file mode 100644 index 000000000..92e706eff Binary files /dev/null and b/public/terrain/19/858602/353786.terrain differ diff --git a/public/terrain/19/858602/353787.terrain b/public/terrain/19/858602/353787.terrain new file mode 100644 index 000000000..a132d7f99 Binary files /dev/null and b/public/terrain/19/858602/353787.terrain differ diff --git a/public/terrain/19/858602/353788.terrain b/public/terrain/19/858602/353788.terrain new file mode 100644 index 000000000..9185539b6 Binary files /dev/null and b/public/terrain/19/858602/353788.terrain differ diff --git a/public/terrain/19/858602/353789.terrain b/public/terrain/19/858602/353789.terrain new file mode 100644 index 000000000..b99b8f211 Binary files /dev/null and b/public/terrain/19/858602/353789.terrain differ diff --git a/public/terrain/19/858602/353790.terrain b/public/terrain/19/858602/353790.terrain new file mode 100644 index 000000000..01f33ee16 Binary files /dev/null and b/public/terrain/19/858602/353790.terrain differ diff --git a/public/terrain/19/858602/353791.terrain b/public/terrain/19/858602/353791.terrain new file mode 100644 index 000000000..cd4103aa5 Binary files /dev/null and b/public/terrain/19/858602/353791.terrain differ diff --git a/public/terrain/19/858602/353792.terrain b/public/terrain/19/858602/353792.terrain new file mode 100644 index 000000000..b05159081 Binary files /dev/null and b/public/terrain/19/858602/353792.terrain differ diff --git a/public/terrain/19/858602/353793.terrain b/public/terrain/19/858602/353793.terrain new file mode 100644 index 000000000..0d9089371 Binary files /dev/null and b/public/terrain/19/858602/353793.terrain differ diff --git a/public/terrain/19/858602/353794.terrain b/public/terrain/19/858602/353794.terrain new file mode 100644 index 000000000..bed6bc481 Binary files /dev/null and b/public/terrain/19/858602/353794.terrain differ diff --git a/public/terrain/19/858602/353795.terrain b/public/terrain/19/858602/353795.terrain new file mode 100644 index 000000000..3717ca6fa Binary files /dev/null and b/public/terrain/19/858602/353795.terrain differ diff --git a/public/terrain/19/858602/353796.terrain b/public/terrain/19/858602/353796.terrain new file mode 100644 index 000000000..f353e4bc5 Binary files /dev/null and b/public/terrain/19/858602/353796.terrain differ diff --git a/public/terrain/19/858602/353797.terrain b/public/terrain/19/858602/353797.terrain new file mode 100644 index 000000000..8b829e5d2 Binary files /dev/null and b/public/terrain/19/858602/353797.terrain differ diff --git a/public/terrain/19/858602/353798.terrain b/public/terrain/19/858602/353798.terrain new file mode 100644 index 000000000..efe085335 Binary files /dev/null and b/public/terrain/19/858602/353798.terrain differ diff --git a/public/terrain/19/858602/353799.terrain b/public/terrain/19/858602/353799.terrain new file mode 100644 index 000000000..6139c38de Binary files /dev/null and b/public/terrain/19/858602/353799.terrain differ diff --git a/public/terrain/19/858602/353800.terrain b/public/terrain/19/858602/353800.terrain new file mode 100644 index 000000000..3f502f469 Binary files /dev/null and b/public/terrain/19/858602/353800.terrain differ diff --git a/public/terrain/19/858602/353801.terrain b/public/terrain/19/858602/353801.terrain new file mode 100644 index 000000000..166bf6e42 Binary files /dev/null and b/public/terrain/19/858602/353801.terrain differ diff --git a/public/terrain/19/858602/353802.terrain b/public/terrain/19/858602/353802.terrain new file mode 100644 index 000000000..c855db888 Binary files /dev/null and b/public/terrain/19/858602/353802.terrain differ diff --git a/public/terrain/19/858602/353803.terrain b/public/terrain/19/858602/353803.terrain new file mode 100644 index 000000000..bc8ec8265 Binary files /dev/null and b/public/terrain/19/858602/353803.terrain differ diff --git a/public/terrain/19/858602/353804.terrain b/public/terrain/19/858602/353804.terrain new file mode 100644 index 000000000..5bf7525ae Binary files /dev/null and b/public/terrain/19/858602/353804.terrain differ diff --git a/public/terrain/19/858602/353805.terrain b/public/terrain/19/858602/353805.terrain new file mode 100644 index 000000000..5b4a0775a Binary files /dev/null and b/public/terrain/19/858602/353805.terrain differ diff --git a/public/terrain/19/858602/353806.terrain b/public/terrain/19/858602/353806.terrain new file mode 100644 index 000000000..7263df983 Binary files /dev/null and b/public/terrain/19/858602/353806.terrain differ diff --git a/public/terrain/19/858602/353807.terrain b/public/terrain/19/858602/353807.terrain new file mode 100644 index 000000000..ad755d700 Binary files /dev/null and b/public/terrain/19/858602/353807.terrain differ diff --git a/public/terrain/19/858602/353808.terrain b/public/terrain/19/858602/353808.terrain new file mode 100644 index 000000000..920f53432 Binary files /dev/null and b/public/terrain/19/858602/353808.terrain differ diff --git a/public/terrain/19/858602/353809.terrain b/public/terrain/19/858602/353809.terrain new file mode 100644 index 000000000..f8e27e176 Binary files /dev/null and b/public/terrain/19/858602/353809.terrain differ diff --git a/public/terrain/19/858602/353810.terrain b/public/terrain/19/858602/353810.terrain new file mode 100644 index 000000000..2f35bd1c8 Binary files /dev/null and b/public/terrain/19/858602/353810.terrain differ diff --git a/public/terrain/19/858602/353811.terrain b/public/terrain/19/858602/353811.terrain new file mode 100644 index 000000000..f74757317 Binary files /dev/null and b/public/terrain/19/858602/353811.terrain differ diff --git a/public/terrain/19/858602/353812.terrain b/public/terrain/19/858602/353812.terrain new file mode 100644 index 000000000..ae0bc5940 Binary files /dev/null and b/public/terrain/19/858602/353812.terrain differ diff --git a/public/terrain/19/858602/353813.terrain b/public/terrain/19/858602/353813.terrain new file mode 100644 index 000000000..24d41a5f5 Binary files /dev/null and b/public/terrain/19/858602/353813.terrain differ diff --git a/public/terrain/19/858602/353814.terrain b/public/terrain/19/858602/353814.terrain new file mode 100644 index 000000000..a7218e104 Binary files /dev/null and b/public/terrain/19/858602/353814.terrain differ diff --git a/public/terrain/19/858602/353815.terrain b/public/terrain/19/858602/353815.terrain new file mode 100644 index 000000000..3e492d287 Binary files /dev/null and b/public/terrain/19/858602/353815.terrain differ diff --git a/public/terrain/19/858602/353816.terrain b/public/terrain/19/858602/353816.terrain new file mode 100644 index 000000000..19e6c0d84 Binary files /dev/null and b/public/terrain/19/858602/353816.terrain differ diff --git a/public/terrain/19/858602/353817.terrain b/public/terrain/19/858602/353817.terrain new file mode 100644 index 000000000..50050eafc Binary files /dev/null and b/public/terrain/19/858602/353817.terrain differ diff --git a/public/terrain/19/858602/353818.terrain b/public/terrain/19/858602/353818.terrain new file mode 100644 index 000000000..df6ca5b04 Binary files /dev/null and b/public/terrain/19/858602/353818.terrain differ diff --git a/public/terrain/19/858602/353819.terrain b/public/terrain/19/858602/353819.terrain new file mode 100644 index 000000000..822d50996 Binary files /dev/null and b/public/terrain/19/858602/353819.terrain differ diff --git a/public/terrain/19/858602/353820.terrain b/public/terrain/19/858602/353820.terrain new file mode 100644 index 000000000..0586b62d2 Binary files /dev/null and b/public/terrain/19/858602/353820.terrain differ diff --git a/public/terrain/19/858602/353821.terrain b/public/terrain/19/858602/353821.terrain new file mode 100644 index 000000000..872f934af Binary files /dev/null and b/public/terrain/19/858602/353821.terrain differ diff --git a/public/terrain/19/858602/353822.terrain b/public/terrain/19/858602/353822.terrain new file mode 100644 index 000000000..1e76ce944 Binary files /dev/null and b/public/terrain/19/858602/353822.terrain differ diff --git a/public/terrain/19/858602/353823.terrain b/public/terrain/19/858602/353823.terrain new file mode 100644 index 000000000..04e10ad1e Binary files /dev/null and b/public/terrain/19/858602/353823.terrain differ diff --git a/public/terrain/19/858602/353824.terrain b/public/terrain/19/858602/353824.terrain new file mode 100644 index 000000000..2439232e3 Binary files /dev/null and b/public/terrain/19/858602/353824.terrain differ diff --git a/public/terrain/19/858602/353825.terrain b/public/terrain/19/858602/353825.terrain new file mode 100644 index 000000000..23b427f14 Binary files /dev/null and b/public/terrain/19/858602/353825.terrain differ diff --git a/public/terrain/19/858602/353826.terrain b/public/terrain/19/858602/353826.terrain new file mode 100644 index 000000000..3da02400e Binary files /dev/null and b/public/terrain/19/858602/353826.terrain differ diff --git a/public/terrain/19/858602/353827.terrain b/public/terrain/19/858602/353827.terrain new file mode 100644 index 000000000..76e83a4c7 Binary files /dev/null and b/public/terrain/19/858602/353827.terrain differ diff --git a/public/terrain/19/858602/353828.terrain b/public/terrain/19/858602/353828.terrain new file mode 100644 index 000000000..b877747c3 Binary files /dev/null and b/public/terrain/19/858602/353828.terrain differ diff --git a/public/terrain/19/858602/353829.terrain b/public/terrain/19/858602/353829.terrain new file mode 100644 index 000000000..16e0eaae2 Binary files /dev/null and b/public/terrain/19/858602/353829.terrain differ diff --git a/public/terrain/19/858602/353830.terrain b/public/terrain/19/858602/353830.terrain new file mode 100644 index 000000000..6577f1137 Binary files /dev/null and b/public/terrain/19/858602/353830.terrain differ diff --git a/public/terrain/19/858602/353831.terrain b/public/terrain/19/858602/353831.terrain new file mode 100644 index 000000000..c0e897cfb Binary files /dev/null and b/public/terrain/19/858602/353831.terrain differ diff --git a/public/terrain/19/858602/353832.terrain b/public/terrain/19/858602/353832.terrain new file mode 100644 index 000000000..c0090f58d Binary files /dev/null and b/public/terrain/19/858602/353832.terrain differ diff --git a/public/terrain/19/858602/353833.terrain b/public/terrain/19/858602/353833.terrain new file mode 100644 index 000000000..427bd2da1 Binary files /dev/null and b/public/terrain/19/858602/353833.terrain differ diff --git a/public/terrain/19/858602/353834.terrain b/public/terrain/19/858602/353834.terrain new file mode 100644 index 000000000..025e33002 Binary files /dev/null and b/public/terrain/19/858602/353834.terrain differ diff --git a/public/terrain/19/858602/353835.terrain b/public/terrain/19/858602/353835.terrain new file mode 100644 index 000000000..74c5406fb Binary files /dev/null and b/public/terrain/19/858602/353835.terrain differ diff --git a/public/terrain/19/858602/353836.terrain b/public/terrain/19/858602/353836.terrain new file mode 100644 index 000000000..fbba087f7 Binary files /dev/null and b/public/terrain/19/858602/353836.terrain differ diff --git a/public/terrain/19/858602/353837.terrain b/public/terrain/19/858602/353837.terrain new file mode 100644 index 000000000..8df2b82ed Binary files /dev/null and b/public/terrain/19/858602/353837.terrain differ diff --git a/public/terrain/19/858602/353838.terrain b/public/terrain/19/858602/353838.terrain new file mode 100644 index 000000000..78a4972f9 Binary files /dev/null and b/public/terrain/19/858602/353838.terrain differ diff --git a/public/terrain/19/858602/353839.terrain b/public/terrain/19/858602/353839.terrain new file mode 100644 index 000000000..7188b0384 Binary files /dev/null and b/public/terrain/19/858602/353839.terrain differ diff --git a/public/terrain/19/858602/353840.terrain b/public/terrain/19/858602/353840.terrain new file mode 100644 index 000000000..19458dfd5 Binary files /dev/null and b/public/terrain/19/858602/353840.terrain differ diff --git a/public/terrain/19/858602/353841.terrain b/public/terrain/19/858602/353841.terrain new file mode 100644 index 000000000..d58c6c298 Binary files /dev/null and b/public/terrain/19/858602/353841.terrain differ diff --git a/public/terrain/19/858602/353842.terrain b/public/terrain/19/858602/353842.terrain new file mode 100644 index 000000000..791b47748 Binary files /dev/null and b/public/terrain/19/858602/353842.terrain differ diff --git a/public/terrain/19/858602/353843.terrain b/public/terrain/19/858602/353843.terrain new file mode 100644 index 000000000..9dcf1226f Binary files /dev/null and b/public/terrain/19/858602/353843.terrain differ diff --git a/public/terrain/19/858602/353844.terrain b/public/terrain/19/858602/353844.terrain new file mode 100644 index 000000000..5607a5fbb Binary files /dev/null and b/public/terrain/19/858602/353844.terrain differ diff --git a/public/terrain/19/858602/353845.terrain b/public/terrain/19/858602/353845.terrain new file mode 100644 index 000000000..48e75b646 Binary files /dev/null and b/public/terrain/19/858602/353845.terrain differ diff --git a/public/terrain/19/858602/353846.terrain b/public/terrain/19/858602/353846.terrain new file mode 100644 index 000000000..6d3ad3a95 Binary files /dev/null and b/public/terrain/19/858602/353846.terrain differ diff --git a/public/terrain/19/858602/353847.terrain b/public/terrain/19/858602/353847.terrain new file mode 100644 index 000000000..24dae126d Binary files /dev/null and b/public/terrain/19/858602/353847.terrain differ diff --git a/public/terrain/19/858602/353848.terrain b/public/terrain/19/858602/353848.terrain new file mode 100644 index 000000000..7a8b5af25 Binary files /dev/null and b/public/terrain/19/858602/353848.terrain differ diff --git a/public/terrain/19/858602/353849.terrain b/public/terrain/19/858602/353849.terrain new file mode 100644 index 000000000..98fc061b2 Binary files /dev/null and b/public/terrain/19/858602/353849.terrain differ diff --git a/public/terrain/19/858602/353850.terrain b/public/terrain/19/858602/353850.terrain new file mode 100644 index 000000000..a66776a37 Binary files /dev/null and b/public/terrain/19/858602/353850.terrain differ diff --git a/public/terrain/19/858602/353851.terrain b/public/terrain/19/858602/353851.terrain new file mode 100644 index 000000000..97158deee Binary files /dev/null and b/public/terrain/19/858602/353851.terrain differ diff --git a/public/terrain/19/858602/353852.terrain b/public/terrain/19/858602/353852.terrain new file mode 100644 index 000000000..5e6827fff Binary files /dev/null and b/public/terrain/19/858602/353852.terrain differ diff --git a/public/terrain/19/858602/353853.terrain b/public/terrain/19/858602/353853.terrain new file mode 100644 index 000000000..adeace775 Binary files /dev/null and b/public/terrain/19/858602/353853.terrain differ diff --git a/public/terrain/19/858602/353854.terrain b/public/terrain/19/858602/353854.terrain new file mode 100644 index 000000000..fb84c74c5 Binary files /dev/null and b/public/terrain/19/858602/353854.terrain differ diff --git a/public/terrain/19/858602/353855.terrain b/public/terrain/19/858602/353855.terrain new file mode 100644 index 000000000..58ff21dd5 Binary files /dev/null and b/public/terrain/19/858602/353855.terrain differ diff --git a/public/terrain/19/858602/353856.terrain b/public/terrain/19/858602/353856.terrain new file mode 100644 index 000000000..25c3b652d Binary files /dev/null and b/public/terrain/19/858602/353856.terrain differ diff --git a/public/terrain/19/858602/353857.terrain b/public/terrain/19/858602/353857.terrain new file mode 100644 index 000000000..2b709ca34 Binary files /dev/null and b/public/terrain/19/858602/353857.terrain differ diff --git a/public/terrain/19/858602/353858.terrain b/public/terrain/19/858602/353858.terrain new file mode 100644 index 000000000..02d7ebf71 Binary files /dev/null and b/public/terrain/19/858602/353858.terrain differ diff --git a/public/terrain/19/858602/353859.terrain b/public/terrain/19/858602/353859.terrain new file mode 100644 index 000000000..d00515fc9 Binary files /dev/null and b/public/terrain/19/858602/353859.terrain differ diff --git a/public/terrain/19/858602/353860.terrain b/public/terrain/19/858602/353860.terrain new file mode 100644 index 000000000..1e1c29bd3 Binary files /dev/null and b/public/terrain/19/858602/353860.terrain differ diff --git a/public/terrain/19/858602/353861.terrain b/public/terrain/19/858602/353861.terrain new file mode 100644 index 000000000..5089b4a00 Binary files /dev/null and b/public/terrain/19/858602/353861.terrain differ diff --git a/public/terrain/19/858602/353862.terrain b/public/terrain/19/858602/353862.terrain new file mode 100644 index 000000000..57dc81ada Binary files /dev/null and b/public/terrain/19/858602/353862.terrain differ diff --git a/public/terrain/19/858602/353863.terrain b/public/terrain/19/858602/353863.terrain new file mode 100644 index 000000000..c0ce25fbf Binary files /dev/null and b/public/terrain/19/858602/353863.terrain differ diff --git a/public/terrain/19/858602/353864.terrain b/public/terrain/19/858602/353864.terrain new file mode 100644 index 000000000..dc75702d1 Binary files /dev/null and b/public/terrain/19/858602/353864.terrain differ diff --git a/public/terrain/19/858602/353865.terrain b/public/terrain/19/858602/353865.terrain new file mode 100644 index 000000000..1f6226b3e Binary files /dev/null and b/public/terrain/19/858602/353865.terrain differ diff --git a/public/terrain/19/858602/353866.terrain b/public/terrain/19/858602/353866.terrain new file mode 100644 index 000000000..b2de7b8e9 Binary files /dev/null and b/public/terrain/19/858602/353866.terrain differ diff --git a/public/terrain/19/858602/353867.terrain b/public/terrain/19/858602/353867.terrain new file mode 100644 index 000000000..f3c9e01e8 Binary files /dev/null and b/public/terrain/19/858602/353867.terrain differ diff --git a/public/terrain/19/858602/353868.terrain b/public/terrain/19/858602/353868.terrain new file mode 100644 index 000000000..07c6bab0a Binary files /dev/null and b/public/terrain/19/858602/353868.terrain differ diff --git a/public/terrain/19/858602/353869.terrain b/public/terrain/19/858602/353869.terrain new file mode 100644 index 000000000..dadb446ac Binary files /dev/null and b/public/terrain/19/858602/353869.terrain differ diff --git a/public/terrain/19/858602/353870.terrain b/public/terrain/19/858602/353870.terrain new file mode 100644 index 000000000..a4f0af4b3 Binary files /dev/null and b/public/terrain/19/858602/353870.terrain differ diff --git a/public/terrain/19/858602/353871.terrain b/public/terrain/19/858602/353871.terrain new file mode 100644 index 000000000..2b88edb4b Binary files /dev/null and b/public/terrain/19/858602/353871.terrain differ diff --git a/public/terrain/19/858602/353872.terrain b/public/terrain/19/858602/353872.terrain new file mode 100644 index 000000000..87711fab5 Binary files /dev/null and b/public/terrain/19/858602/353872.terrain differ diff --git a/public/terrain/19/858602/353873.terrain b/public/terrain/19/858602/353873.terrain new file mode 100644 index 000000000..008f6e5f1 Binary files /dev/null and b/public/terrain/19/858602/353873.terrain differ diff --git a/public/terrain/19/858602/353874.terrain b/public/terrain/19/858602/353874.terrain new file mode 100644 index 000000000..adf4dac8c Binary files /dev/null and b/public/terrain/19/858602/353874.terrain differ diff --git a/public/terrain/19/858602/353875.terrain b/public/terrain/19/858602/353875.terrain new file mode 100644 index 000000000..622a79c92 Binary files /dev/null and b/public/terrain/19/858602/353875.terrain differ diff --git a/public/terrain/19/858602/353876.terrain b/public/terrain/19/858602/353876.terrain new file mode 100644 index 000000000..b82fbc8f7 Binary files /dev/null and b/public/terrain/19/858602/353876.terrain differ diff --git a/public/terrain/19/858602/353877.terrain b/public/terrain/19/858602/353877.terrain new file mode 100644 index 000000000..2b16c2055 Binary files /dev/null and b/public/terrain/19/858602/353877.terrain differ diff --git a/public/terrain/19/858602/353878.terrain b/public/terrain/19/858602/353878.terrain new file mode 100644 index 000000000..ffa45b0d2 Binary files /dev/null and b/public/terrain/19/858602/353878.terrain differ diff --git a/public/terrain/19/858602/353879.terrain b/public/terrain/19/858602/353879.terrain new file mode 100644 index 000000000..22faa7766 Binary files /dev/null and b/public/terrain/19/858602/353879.terrain differ diff --git a/public/terrain/19/858602/353880.terrain b/public/terrain/19/858602/353880.terrain new file mode 100644 index 000000000..f541f7168 Binary files /dev/null and b/public/terrain/19/858602/353880.terrain differ diff --git a/public/terrain/19/858602/353881.terrain b/public/terrain/19/858602/353881.terrain new file mode 100644 index 000000000..bc3903a32 Binary files /dev/null and b/public/terrain/19/858602/353881.terrain differ diff --git a/public/terrain/19/858602/353882.terrain b/public/terrain/19/858602/353882.terrain new file mode 100644 index 000000000..9d5e3a53b Binary files /dev/null and b/public/terrain/19/858602/353882.terrain differ diff --git a/public/terrain/19/858602/353883.terrain b/public/terrain/19/858602/353883.terrain new file mode 100644 index 000000000..0294e1c2b Binary files /dev/null and b/public/terrain/19/858602/353883.terrain differ diff --git a/public/terrain/19/858602/353884.terrain b/public/terrain/19/858602/353884.terrain new file mode 100644 index 000000000..ca7c6f526 Binary files /dev/null and b/public/terrain/19/858602/353884.terrain differ diff --git a/public/terrain/19/858602/353885.terrain b/public/terrain/19/858602/353885.terrain new file mode 100644 index 000000000..276ec0c1c Binary files /dev/null and b/public/terrain/19/858602/353885.terrain differ diff --git a/public/terrain/19/858602/353886.terrain b/public/terrain/19/858602/353886.terrain new file mode 100644 index 000000000..42ca83654 Binary files /dev/null and b/public/terrain/19/858602/353886.terrain differ diff --git a/public/terrain/19/858602/353887.terrain b/public/terrain/19/858602/353887.terrain new file mode 100644 index 000000000..8bccc0ae4 Binary files /dev/null and b/public/terrain/19/858602/353887.terrain differ diff --git a/public/terrain/19/858602/353888.terrain b/public/terrain/19/858602/353888.terrain new file mode 100644 index 000000000..8d21d3fe5 Binary files /dev/null and b/public/terrain/19/858602/353888.terrain differ diff --git a/public/terrain/19/858602/353889.terrain b/public/terrain/19/858602/353889.terrain new file mode 100644 index 000000000..caba5a06f Binary files /dev/null and b/public/terrain/19/858602/353889.terrain differ diff --git a/public/terrain/19/858602/353890.terrain b/public/terrain/19/858602/353890.terrain new file mode 100644 index 000000000..205511ab5 Binary files /dev/null and b/public/terrain/19/858602/353890.terrain differ diff --git a/public/terrain/19/858602/353891.terrain b/public/terrain/19/858602/353891.terrain new file mode 100644 index 000000000..b952ab786 Binary files /dev/null and b/public/terrain/19/858602/353891.terrain differ diff --git a/public/terrain/19/858602/353892.terrain b/public/terrain/19/858602/353892.terrain new file mode 100644 index 000000000..6980a85d0 Binary files /dev/null and b/public/terrain/19/858602/353892.terrain differ diff --git a/public/terrain/19/858602/353893.terrain b/public/terrain/19/858602/353893.terrain new file mode 100644 index 000000000..04c049f86 Binary files /dev/null and b/public/terrain/19/858602/353893.terrain differ diff --git a/public/terrain/19/858602/353894.terrain b/public/terrain/19/858602/353894.terrain new file mode 100644 index 000000000..a7c31a0f0 Binary files /dev/null and b/public/terrain/19/858602/353894.terrain differ diff --git a/public/terrain/19/858602/353895.terrain b/public/terrain/19/858602/353895.terrain new file mode 100644 index 000000000..157618233 Binary files /dev/null and b/public/terrain/19/858602/353895.terrain differ diff --git a/public/terrain/19/858602/353896.terrain b/public/terrain/19/858602/353896.terrain new file mode 100644 index 000000000..08dbb57b1 Binary files /dev/null and b/public/terrain/19/858602/353896.terrain differ diff --git a/public/terrain/19/858602/353897.terrain b/public/terrain/19/858602/353897.terrain new file mode 100644 index 000000000..8199e633a Binary files /dev/null and b/public/terrain/19/858602/353897.terrain differ diff --git a/public/terrain/19/858602/353898.terrain b/public/terrain/19/858602/353898.terrain new file mode 100644 index 000000000..c70388b43 Binary files /dev/null and b/public/terrain/19/858602/353898.terrain differ diff --git a/public/terrain/19/858602/353899.terrain b/public/terrain/19/858602/353899.terrain new file mode 100644 index 000000000..321678b86 Binary files /dev/null and b/public/terrain/19/858602/353899.terrain differ diff --git a/public/terrain/19/858602/353900.terrain b/public/terrain/19/858602/353900.terrain new file mode 100644 index 000000000..bedcbf175 Binary files /dev/null and b/public/terrain/19/858602/353900.terrain differ diff --git a/public/terrain/19/858602/353901.terrain b/public/terrain/19/858602/353901.terrain new file mode 100644 index 000000000..9c8692c96 Binary files /dev/null and b/public/terrain/19/858602/353901.terrain differ diff --git a/public/terrain/19/858602/353902.terrain b/public/terrain/19/858602/353902.terrain new file mode 100644 index 000000000..14f2f985c Binary files /dev/null and b/public/terrain/19/858602/353902.terrain differ diff --git a/public/terrain/19/858602/353903.terrain b/public/terrain/19/858602/353903.terrain new file mode 100644 index 000000000..32d4f6657 Binary files /dev/null and b/public/terrain/19/858602/353903.terrain differ diff --git a/public/terrain/19/858602/353904.terrain b/public/terrain/19/858602/353904.terrain new file mode 100644 index 000000000..3c0f0220c Binary files /dev/null and b/public/terrain/19/858602/353904.terrain differ diff --git a/public/terrain/19/858602/353905.terrain b/public/terrain/19/858602/353905.terrain new file mode 100644 index 000000000..a2ae48b9b Binary files /dev/null and b/public/terrain/19/858602/353905.terrain differ diff --git a/public/terrain/19/858602/353906.terrain b/public/terrain/19/858602/353906.terrain new file mode 100644 index 000000000..aae556070 Binary files /dev/null and b/public/terrain/19/858602/353906.terrain differ diff --git a/public/terrain/19/858602/353907.terrain b/public/terrain/19/858602/353907.terrain new file mode 100644 index 000000000..7749ca1a6 Binary files /dev/null and b/public/terrain/19/858602/353907.terrain differ diff --git a/public/terrain/19/858602/353908.terrain b/public/terrain/19/858602/353908.terrain new file mode 100644 index 000000000..52138e29e Binary files /dev/null and b/public/terrain/19/858602/353908.terrain differ diff --git a/public/terrain/19/858602/353909.terrain b/public/terrain/19/858602/353909.terrain new file mode 100644 index 000000000..9ec12a490 Binary files /dev/null and b/public/terrain/19/858602/353909.terrain differ diff --git a/public/terrain/19/858602/353910.terrain b/public/terrain/19/858602/353910.terrain new file mode 100644 index 000000000..9012e5cd6 Binary files /dev/null and b/public/terrain/19/858602/353910.terrain differ diff --git a/public/terrain/19/858602/353911.terrain b/public/terrain/19/858602/353911.terrain new file mode 100644 index 000000000..d75533a36 Binary files /dev/null and b/public/terrain/19/858602/353911.terrain differ diff --git a/public/terrain/19/858602/353912.terrain b/public/terrain/19/858602/353912.terrain new file mode 100644 index 000000000..28b5b2957 Binary files /dev/null and b/public/terrain/19/858602/353912.terrain differ diff --git a/public/terrain/19/858602/353913.terrain b/public/terrain/19/858602/353913.terrain new file mode 100644 index 000000000..9377abae2 Binary files /dev/null and b/public/terrain/19/858602/353913.terrain differ diff --git a/public/terrain/19/858602/353914.terrain b/public/terrain/19/858602/353914.terrain new file mode 100644 index 000000000..0e3369afb Binary files /dev/null and b/public/terrain/19/858602/353914.terrain differ diff --git a/public/terrain/19/858602/353915.terrain b/public/terrain/19/858602/353915.terrain new file mode 100644 index 000000000..1672d32a7 Binary files /dev/null and b/public/terrain/19/858602/353915.terrain differ diff --git a/public/terrain/19/858602/353916.terrain b/public/terrain/19/858602/353916.terrain new file mode 100644 index 000000000..afcb2c3fa Binary files /dev/null and b/public/terrain/19/858602/353916.terrain differ diff --git a/public/terrain/19/858602/353917.terrain b/public/terrain/19/858602/353917.terrain new file mode 100644 index 000000000..01a36b74e Binary files /dev/null and b/public/terrain/19/858602/353917.terrain differ diff --git a/public/terrain/19/858602/353918.terrain b/public/terrain/19/858602/353918.terrain new file mode 100644 index 000000000..710b444dc Binary files /dev/null and b/public/terrain/19/858602/353918.terrain differ diff --git a/public/terrain/19/858602/353919.terrain b/public/terrain/19/858602/353919.terrain new file mode 100644 index 000000000..c37aa80cf Binary files /dev/null and b/public/terrain/19/858602/353919.terrain differ diff --git a/public/terrain/19/858602/353920.terrain b/public/terrain/19/858602/353920.terrain new file mode 100644 index 000000000..672f17691 Binary files /dev/null and b/public/terrain/19/858602/353920.terrain differ diff --git a/public/terrain/19/858602/353921.terrain b/public/terrain/19/858602/353921.terrain new file mode 100644 index 000000000..ff71aff18 Binary files /dev/null and b/public/terrain/19/858602/353921.terrain differ diff --git a/public/terrain/19/858602/353922.terrain b/public/terrain/19/858602/353922.terrain new file mode 100644 index 000000000..43118acb4 Binary files /dev/null and b/public/terrain/19/858602/353922.terrain differ diff --git a/public/terrain/19/858602/353923.terrain b/public/terrain/19/858602/353923.terrain new file mode 100644 index 000000000..8494b1572 Binary files /dev/null and b/public/terrain/19/858602/353923.terrain differ diff --git a/public/terrain/19/858602/353924.terrain b/public/terrain/19/858602/353924.terrain new file mode 100644 index 000000000..f1a5a9b2a Binary files /dev/null and b/public/terrain/19/858602/353924.terrain differ diff --git a/public/terrain/19/858602/353925.terrain b/public/terrain/19/858602/353925.terrain new file mode 100644 index 000000000..0f8bbac6d Binary files /dev/null and b/public/terrain/19/858602/353925.terrain differ diff --git a/public/terrain/19/858602/353926.terrain b/public/terrain/19/858602/353926.terrain new file mode 100644 index 000000000..c535fdd89 Binary files /dev/null and b/public/terrain/19/858602/353926.terrain differ diff --git a/public/terrain/19/858602/353927.terrain b/public/terrain/19/858602/353927.terrain new file mode 100644 index 000000000..d830ea423 Binary files /dev/null and b/public/terrain/19/858602/353927.terrain differ diff --git a/public/terrain/19/858602/353928.terrain b/public/terrain/19/858602/353928.terrain new file mode 100644 index 000000000..bdcc0d603 Binary files /dev/null and b/public/terrain/19/858602/353928.terrain differ diff --git a/public/terrain/19/858602/353929.terrain b/public/terrain/19/858602/353929.terrain new file mode 100644 index 000000000..eefa81798 Binary files /dev/null and b/public/terrain/19/858602/353929.terrain differ diff --git a/public/terrain/19/858602/353930.terrain b/public/terrain/19/858602/353930.terrain new file mode 100644 index 000000000..38ca58ed0 Binary files /dev/null and b/public/terrain/19/858602/353930.terrain differ diff --git a/public/terrain/19/858602/353931.terrain b/public/terrain/19/858602/353931.terrain new file mode 100644 index 000000000..d2be2e18e Binary files /dev/null and b/public/terrain/19/858602/353931.terrain differ diff --git a/public/terrain/19/858602/353932.terrain b/public/terrain/19/858602/353932.terrain new file mode 100644 index 000000000..9a8d8de27 Binary files /dev/null and b/public/terrain/19/858602/353932.terrain differ diff --git a/public/terrain/19/858602/353933.terrain b/public/terrain/19/858602/353933.terrain new file mode 100644 index 000000000..bd52b1492 Binary files /dev/null and b/public/terrain/19/858602/353933.terrain differ diff --git a/public/terrain/19/858602/353934.terrain b/public/terrain/19/858602/353934.terrain new file mode 100644 index 000000000..63a1591f2 Binary files /dev/null and b/public/terrain/19/858602/353934.terrain differ diff --git a/public/terrain/19/858602/353935.terrain b/public/terrain/19/858602/353935.terrain new file mode 100644 index 000000000..21b71dd04 Binary files /dev/null and b/public/terrain/19/858602/353935.terrain differ diff --git a/public/terrain/19/858602/353936.terrain b/public/terrain/19/858602/353936.terrain new file mode 100644 index 000000000..34028f1f3 Binary files /dev/null and b/public/terrain/19/858602/353936.terrain differ diff --git a/public/terrain/19/858602/353937.terrain b/public/terrain/19/858602/353937.terrain new file mode 100644 index 000000000..026192acd Binary files /dev/null and b/public/terrain/19/858602/353937.terrain differ diff --git a/public/terrain/19/858602/353938.terrain b/public/terrain/19/858602/353938.terrain new file mode 100644 index 000000000..8810733b3 Binary files /dev/null and b/public/terrain/19/858602/353938.terrain differ diff --git a/public/terrain/19/858602/353939.terrain b/public/terrain/19/858602/353939.terrain new file mode 100644 index 000000000..ecf54dd2b Binary files /dev/null and b/public/terrain/19/858602/353939.terrain differ diff --git a/public/terrain/19/858602/353940.terrain b/public/terrain/19/858602/353940.terrain new file mode 100644 index 000000000..00887c166 Binary files /dev/null and b/public/terrain/19/858602/353940.terrain differ diff --git a/public/terrain/19/858602/353941.terrain b/public/terrain/19/858602/353941.terrain new file mode 100644 index 000000000..b68083359 Binary files /dev/null and b/public/terrain/19/858602/353941.terrain differ diff --git a/public/terrain/19/858602/353942.terrain b/public/terrain/19/858602/353942.terrain new file mode 100644 index 000000000..7810128e5 Binary files /dev/null and b/public/terrain/19/858602/353942.terrain differ diff --git a/public/terrain/19/858602/353943.terrain b/public/terrain/19/858602/353943.terrain new file mode 100644 index 000000000..ec0c7710d Binary files /dev/null and b/public/terrain/19/858602/353943.terrain differ diff --git a/public/terrain/19/858602/353944.terrain b/public/terrain/19/858602/353944.terrain new file mode 100644 index 000000000..72c239a71 Binary files /dev/null and b/public/terrain/19/858602/353944.terrain differ diff --git a/public/terrain/19/858602/353945.terrain b/public/terrain/19/858602/353945.terrain new file mode 100644 index 000000000..1578d97e2 Binary files /dev/null and b/public/terrain/19/858602/353945.terrain differ diff --git a/public/terrain/19/858602/353946.terrain b/public/terrain/19/858602/353946.terrain new file mode 100644 index 000000000..07a97d4e3 Binary files /dev/null and b/public/terrain/19/858602/353946.terrain differ diff --git a/public/terrain/19/858602/353947.terrain b/public/terrain/19/858602/353947.terrain new file mode 100644 index 000000000..5a8e48ae7 Binary files /dev/null and b/public/terrain/19/858602/353947.terrain differ diff --git a/public/terrain/19/858602/353948.terrain b/public/terrain/19/858602/353948.terrain new file mode 100644 index 000000000..ae4486076 Binary files /dev/null and b/public/terrain/19/858602/353948.terrain differ diff --git a/public/terrain/19/858602/353949.terrain b/public/terrain/19/858602/353949.terrain new file mode 100644 index 000000000..2f9dc808e Binary files /dev/null and b/public/terrain/19/858602/353949.terrain differ diff --git a/public/terrain/19/858602/353950.terrain b/public/terrain/19/858602/353950.terrain new file mode 100644 index 000000000..4e8f7731b Binary files /dev/null and b/public/terrain/19/858602/353950.terrain differ diff --git a/public/terrain/19/858602/353951.terrain b/public/terrain/19/858602/353951.terrain new file mode 100644 index 000000000..81287d626 Binary files /dev/null and b/public/terrain/19/858602/353951.terrain differ diff --git a/public/terrain/19/858602/353952.terrain b/public/terrain/19/858602/353952.terrain new file mode 100644 index 000000000..624647a2a Binary files /dev/null and b/public/terrain/19/858602/353952.terrain differ diff --git a/public/terrain/19/858602/353953.terrain b/public/terrain/19/858602/353953.terrain new file mode 100644 index 000000000..ad53092ef Binary files /dev/null and b/public/terrain/19/858602/353953.terrain differ diff --git a/public/terrain/19/858602/353954.terrain b/public/terrain/19/858602/353954.terrain new file mode 100644 index 000000000..9bad5a971 Binary files /dev/null and b/public/terrain/19/858602/353954.terrain differ diff --git a/public/terrain/19/858602/353955.terrain b/public/terrain/19/858602/353955.terrain new file mode 100644 index 000000000..fbcf2acbf Binary files /dev/null and b/public/terrain/19/858602/353955.terrain differ diff --git a/public/terrain/19/858602/353956.terrain b/public/terrain/19/858602/353956.terrain new file mode 100644 index 000000000..fcb709316 Binary files /dev/null and b/public/terrain/19/858602/353956.terrain differ diff --git a/public/terrain/19/858602/353957.terrain b/public/terrain/19/858602/353957.terrain new file mode 100644 index 000000000..d3dd324f7 Binary files /dev/null and b/public/terrain/19/858602/353957.terrain differ diff --git a/public/terrain/19/858602/353958.terrain b/public/terrain/19/858602/353958.terrain new file mode 100644 index 000000000..f89ec28e7 Binary files /dev/null and b/public/terrain/19/858602/353958.terrain differ diff --git a/public/terrain/19/858602/353959.terrain b/public/terrain/19/858602/353959.terrain new file mode 100644 index 000000000..3b6e5c601 Binary files /dev/null and b/public/terrain/19/858602/353959.terrain differ diff --git a/public/terrain/19/858602/353960.terrain b/public/terrain/19/858602/353960.terrain new file mode 100644 index 000000000..026c42094 Binary files /dev/null and b/public/terrain/19/858602/353960.terrain differ diff --git a/public/terrain/19/858602/353961.terrain b/public/terrain/19/858602/353961.terrain new file mode 100644 index 000000000..2b5552c26 Binary files /dev/null and b/public/terrain/19/858602/353961.terrain differ diff --git a/public/terrain/19/858602/353962.terrain b/public/terrain/19/858602/353962.terrain new file mode 100644 index 000000000..d9ffc8afa Binary files /dev/null and b/public/terrain/19/858602/353962.terrain differ diff --git a/public/terrain/19/858602/353963.terrain b/public/terrain/19/858602/353963.terrain new file mode 100644 index 000000000..4a0f12fae Binary files /dev/null and b/public/terrain/19/858602/353963.terrain differ diff --git a/public/terrain/19/858602/353964.terrain b/public/terrain/19/858602/353964.terrain new file mode 100644 index 000000000..20e5ddac8 Binary files /dev/null and b/public/terrain/19/858602/353964.terrain differ diff --git a/public/terrain/19/858602/353965.terrain b/public/terrain/19/858602/353965.terrain new file mode 100644 index 000000000..c76390a72 Binary files /dev/null and b/public/terrain/19/858602/353965.terrain differ diff --git a/public/terrain/19/858602/353966.terrain b/public/terrain/19/858602/353966.terrain new file mode 100644 index 000000000..c495111e0 Binary files /dev/null and b/public/terrain/19/858602/353966.terrain differ diff --git a/public/terrain/19/858602/353967.terrain b/public/terrain/19/858602/353967.terrain new file mode 100644 index 000000000..0956cead6 Binary files /dev/null and b/public/terrain/19/858602/353967.terrain differ diff --git a/public/terrain/19/858602/353968.terrain b/public/terrain/19/858602/353968.terrain new file mode 100644 index 000000000..d1cfac6c4 Binary files /dev/null and b/public/terrain/19/858602/353968.terrain differ diff --git a/public/terrain/19/858602/353969.terrain b/public/terrain/19/858602/353969.terrain new file mode 100644 index 000000000..62c7b7185 Binary files /dev/null and b/public/terrain/19/858602/353969.terrain differ diff --git a/public/terrain/19/858602/353970.terrain b/public/terrain/19/858602/353970.terrain new file mode 100644 index 000000000..fb91eeec3 Binary files /dev/null and b/public/terrain/19/858602/353970.terrain differ diff --git a/public/terrain/19/858602/353971.terrain b/public/terrain/19/858602/353971.terrain new file mode 100644 index 000000000..70fd341cd Binary files /dev/null and b/public/terrain/19/858602/353971.terrain differ diff --git a/public/terrain/19/858602/353972.terrain b/public/terrain/19/858602/353972.terrain new file mode 100644 index 000000000..d4506a621 Binary files /dev/null and b/public/terrain/19/858602/353972.terrain differ diff --git a/public/terrain/19/858602/353973.terrain b/public/terrain/19/858602/353973.terrain new file mode 100644 index 000000000..84f462d42 Binary files /dev/null and b/public/terrain/19/858602/353973.terrain differ diff --git a/public/terrain/19/858602/353974.terrain b/public/terrain/19/858602/353974.terrain new file mode 100644 index 000000000..850818844 Binary files /dev/null and b/public/terrain/19/858602/353974.terrain differ diff --git a/public/terrain/19/858602/353975.terrain b/public/terrain/19/858602/353975.terrain new file mode 100644 index 000000000..4ee0e6a5c Binary files /dev/null and b/public/terrain/19/858602/353975.terrain differ diff --git a/public/terrain/19/858602/353976.terrain b/public/terrain/19/858602/353976.terrain new file mode 100644 index 000000000..241ab7d96 Binary files /dev/null and b/public/terrain/19/858602/353976.terrain differ diff --git a/public/terrain/19/858602/353977.terrain b/public/terrain/19/858602/353977.terrain new file mode 100644 index 000000000..826283633 Binary files /dev/null and b/public/terrain/19/858602/353977.terrain differ diff --git a/public/terrain/19/858602/353978.terrain b/public/terrain/19/858602/353978.terrain new file mode 100644 index 000000000..68179f364 Binary files /dev/null and b/public/terrain/19/858602/353978.terrain differ diff --git a/public/terrain/19/858602/353979.terrain b/public/terrain/19/858602/353979.terrain new file mode 100644 index 000000000..efed9a585 Binary files /dev/null and b/public/terrain/19/858602/353979.terrain differ diff --git a/public/terrain/19/858602/353980.terrain b/public/terrain/19/858602/353980.terrain new file mode 100644 index 000000000..e10745e75 Binary files /dev/null and b/public/terrain/19/858602/353980.terrain differ diff --git a/public/terrain/19/858602/353981.terrain b/public/terrain/19/858602/353981.terrain new file mode 100644 index 000000000..a169c725f Binary files /dev/null and b/public/terrain/19/858602/353981.terrain differ diff --git a/public/terrain/19/858602/353982.terrain b/public/terrain/19/858602/353982.terrain new file mode 100644 index 000000000..ba58e3254 Binary files /dev/null and b/public/terrain/19/858602/353982.terrain differ diff --git a/public/terrain/19/858602/353983.terrain b/public/terrain/19/858602/353983.terrain new file mode 100644 index 000000000..8909102b1 Binary files /dev/null and b/public/terrain/19/858602/353983.terrain differ diff --git a/public/terrain/19/858602/353984.terrain b/public/terrain/19/858602/353984.terrain new file mode 100644 index 000000000..80ae8efe7 Binary files /dev/null and b/public/terrain/19/858602/353984.terrain differ diff --git a/public/terrain/19/858602/353985.terrain b/public/terrain/19/858602/353985.terrain new file mode 100644 index 000000000..8b05a8e39 Binary files /dev/null and b/public/terrain/19/858602/353985.terrain differ diff --git a/public/terrain/19/858602/353986.terrain b/public/terrain/19/858602/353986.terrain new file mode 100644 index 000000000..d58ea1627 Binary files /dev/null and b/public/terrain/19/858602/353986.terrain differ diff --git a/public/terrain/19/858602/353987.terrain b/public/terrain/19/858602/353987.terrain new file mode 100644 index 000000000..896ddcb10 Binary files /dev/null and b/public/terrain/19/858602/353987.terrain differ diff --git a/public/terrain/19/858602/353988.terrain b/public/terrain/19/858602/353988.terrain new file mode 100644 index 000000000..ad0bd21ce Binary files /dev/null and b/public/terrain/19/858602/353988.terrain differ diff --git a/public/terrain/19/858602/353989.terrain b/public/terrain/19/858602/353989.terrain new file mode 100644 index 000000000..fe4b9a931 Binary files /dev/null and b/public/terrain/19/858602/353989.terrain differ diff --git a/public/terrain/19/858602/353990.terrain b/public/terrain/19/858602/353990.terrain new file mode 100644 index 000000000..6d7c2076e Binary files /dev/null and b/public/terrain/19/858602/353990.terrain differ diff --git a/public/terrain/19/858602/353991.terrain b/public/terrain/19/858602/353991.terrain new file mode 100644 index 000000000..898db5e87 Binary files /dev/null and b/public/terrain/19/858602/353991.terrain differ diff --git a/public/terrain/19/858602/353992.terrain b/public/terrain/19/858602/353992.terrain new file mode 100644 index 000000000..7d03ef6f6 Binary files /dev/null and b/public/terrain/19/858602/353992.terrain differ diff --git a/public/terrain/19/858602/353993.terrain b/public/terrain/19/858602/353993.terrain new file mode 100644 index 000000000..fd23e148c Binary files /dev/null and b/public/terrain/19/858602/353993.terrain differ diff --git a/public/terrain/19/858602/353994.terrain b/public/terrain/19/858602/353994.terrain new file mode 100644 index 000000000..b507e37fe Binary files /dev/null and b/public/terrain/19/858602/353994.terrain differ diff --git a/public/terrain/19/858602/353995.terrain b/public/terrain/19/858602/353995.terrain new file mode 100644 index 000000000..077441049 Binary files /dev/null and b/public/terrain/19/858602/353995.terrain differ diff --git a/public/terrain/19/858602/353996.terrain b/public/terrain/19/858602/353996.terrain new file mode 100644 index 000000000..177bd8214 Binary files /dev/null and b/public/terrain/19/858602/353996.terrain differ diff --git a/public/terrain/19/858602/353997.terrain b/public/terrain/19/858602/353997.terrain new file mode 100644 index 000000000..83f55907e Binary files /dev/null and b/public/terrain/19/858602/353997.terrain differ diff --git a/public/terrain/19/858602/353998.terrain b/public/terrain/19/858602/353998.terrain new file mode 100644 index 000000000..e04700cf3 Binary files /dev/null and b/public/terrain/19/858602/353998.terrain differ diff --git a/public/terrain/19/858602/353999.terrain b/public/terrain/19/858602/353999.terrain new file mode 100644 index 000000000..bb3697fc3 Binary files /dev/null and b/public/terrain/19/858602/353999.terrain differ diff --git a/public/terrain/19/858602/354000.terrain b/public/terrain/19/858602/354000.terrain new file mode 100644 index 000000000..a814354d6 Binary files /dev/null and b/public/terrain/19/858602/354000.terrain differ diff --git a/public/terrain/19/858602/354001.terrain b/public/terrain/19/858602/354001.terrain new file mode 100644 index 000000000..66d6d2cbe Binary files /dev/null and b/public/terrain/19/858602/354001.terrain differ diff --git a/public/terrain/19/858602/354002.terrain b/public/terrain/19/858602/354002.terrain new file mode 100644 index 000000000..271e36f9b Binary files /dev/null and b/public/terrain/19/858602/354002.terrain differ diff --git a/public/terrain/19/858602/354003.terrain b/public/terrain/19/858602/354003.terrain new file mode 100644 index 000000000..f6272a143 Binary files /dev/null and b/public/terrain/19/858602/354003.terrain differ diff --git a/public/terrain/19/858602/354004.terrain b/public/terrain/19/858602/354004.terrain new file mode 100644 index 000000000..cde2a91a8 Binary files /dev/null and b/public/terrain/19/858602/354004.terrain differ diff --git a/public/terrain/19/858602/354005.terrain b/public/terrain/19/858602/354005.terrain new file mode 100644 index 000000000..37aea1bc8 Binary files /dev/null and b/public/terrain/19/858602/354005.terrain differ diff --git a/public/terrain/19/858602/354006.terrain b/public/terrain/19/858602/354006.terrain new file mode 100644 index 000000000..6bd2a0305 Binary files /dev/null and b/public/terrain/19/858602/354006.terrain differ diff --git a/public/terrain/19/858602/354007.terrain b/public/terrain/19/858602/354007.terrain new file mode 100644 index 000000000..0e37596f6 Binary files /dev/null and b/public/terrain/19/858602/354007.terrain differ diff --git a/public/terrain/19/858602/354008.terrain b/public/terrain/19/858602/354008.terrain new file mode 100644 index 000000000..b2fcd85d2 Binary files /dev/null and b/public/terrain/19/858602/354008.terrain differ diff --git a/public/terrain/19/858602/354009.terrain b/public/terrain/19/858602/354009.terrain new file mode 100644 index 000000000..acee9a47a Binary files /dev/null and b/public/terrain/19/858602/354009.terrain differ diff --git a/public/terrain/19/858602/354010.terrain b/public/terrain/19/858602/354010.terrain new file mode 100644 index 000000000..be7aa674a Binary files /dev/null and b/public/terrain/19/858602/354010.terrain differ diff --git a/public/terrain/19/858602/354011.terrain b/public/terrain/19/858602/354011.terrain new file mode 100644 index 000000000..6029a5ae3 Binary files /dev/null and b/public/terrain/19/858602/354011.terrain differ diff --git a/public/terrain/19/858602/354012.terrain b/public/terrain/19/858602/354012.terrain new file mode 100644 index 000000000..113288072 Binary files /dev/null and b/public/terrain/19/858602/354012.terrain differ diff --git a/public/terrain/19/858602/354013.terrain b/public/terrain/19/858602/354013.terrain new file mode 100644 index 000000000..ff110bf63 Binary files /dev/null and b/public/terrain/19/858602/354013.terrain differ diff --git a/public/terrain/19/858602/354014.terrain b/public/terrain/19/858602/354014.terrain new file mode 100644 index 000000000..952f19be7 Binary files /dev/null and b/public/terrain/19/858602/354014.terrain differ diff --git a/public/terrain/19/858602/354015.terrain b/public/terrain/19/858602/354015.terrain new file mode 100644 index 000000000..80159c75c Binary files /dev/null and b/public/terrain/19/858602/354015.terrain differ diff --git a/public/terrain/19/858602/354016.terrain b/public/terrain/19/858602/354016.terrain new file mode 100644 index 000000000..de737c4b6 Binary files /dev/null and b/public/terrain/19/858602/354016.terrain differ diff --git a/public/terrain/19/858602/354017.terrain b/public/terrain/19/858602/354017.terrain new file mode 100644 index 000000000..da8f0c43a Binary files /dev/null and b/public/terrain/19/858602/354017.terrain differ diff --git a/public/terrain/19/858602/354018.terrain b/public/terrain/19/858602/354018.terrain new file mode 100644 index 000000000..3e9f9b20d Binary files /dev/null and b/public/terrain/19/858602/354018.terrain differ diff --git a/public/terrain/19/858602/354019.terrain b/public/terrain/19/858602/354019.terrain new file mode 100644 index 000000000..63c960475 Binary files /dev/null and b/public/terrain/19/858602/354019.terrain differ diff --git a/public/terrain/19/858602/354020.terrain b/public/terrain/19/858602/354020.terrain new file mode 100644 index 000000000..8e7ae9e7f Binary files /dev/null and b/public/terrain/19/858602/354020.terrain differ diff --git a/public/terrain/19/858602/354021.terrain b/public/terrain/19/858602/354021.terrain new file mode 100644 index 000000000..6d6db1400 Binary files /dev/null and b/public/terrain/19/858602/354021.terrain differ diff --git a/public/terrain/19/858602/354022.terrain b/public/terrain/19/858602/354022.terrain new file mode 100644 index 000000000..9e94d04ac Binary files /dev/null and b/public/terrain/19/858602/354022.terrain differ diff --git a/public/terrain/19/858602/354023.terrain b/public/terrain/19/858602/354023.terrain new file mode 100644 index 000000000..5b9b796a0 Binary files /dev/null and b/public/terrain/19/858602/354023.terrain differ diff --git a/public/terrain/19/858602/354024.terrain b/public/terrain/19/858602/354024.terrain new file mode 100644 index 000000000..547b0d9d6 Binary files /dev/null and b/public/terrain/19/858602/354024.terrain differ diff --git a/public/terrain/19/858602/354025.terrain b/public/terrain/19/858602/354025.terrain new file mode 100644 index 000000000..e47bc74ac Binary files /dev/null and b/public/terrain/19/858602/354025.terrain differ diff --git a/public/terrain/19/858602/354026.terrain b/public/terrain/19/858602/354026.terrain new file mode 100644 index 000000000..c6729816b Binary files /dev/null and b/public/terrain/19/858602/354026.terrain differ diff --git a/public/terrain/19/858602/354027.terrain b/public/terrain/19/858602/354027.terrain new file mode 100644 index 000000000..219c5aca9 Binary files /dev/null and b/public/terrain/19/858602/354027.terrain differ diff --git a/public/terrain/19/858602/354028.terrain b/public/terrain/19/858602/354028.terrain new file mode 100644 index 000000000..71a9ac599 Binary files /dev/null and b/public/terrain/19/858602/354028.terrain differ diff --git a/public/terrain/19/858602/354029.terrain b/public/terrain/19/858602/354029.terrain new file mode 100644 index 000000000..e31981a3d Binary files /dev/null and b/public/terrain/19/858602/354029.terrain differ diff --git a/public/terrain/19/858602/354030.terrain b/public/terrain/19/858602/354030.terrain new file mode 100644 index 000000000..751beb29e Binary files /dev/null and b/public/terrain/19/858602/354030.terrain differ diff --git a/public/terrain/19/858602/354031.terrain b/public/terrain/19/858602/354031.terrain new file mode 100644 index 000000000..d1fe97d7a Binary files /dev/null and b/public/terrain/19/858602/354031.terrain differ diff --git a/public/terrain/19/858602/354032.terrain b/public/terrain/19/858602/354032.terrain new file mode 100644 index 000000000..acd4c41e1 Binary files /dev/null and b/public/terrain/19/858602/354032.terrain differ diff --git a/public/terrain/19/858602/354033.terrain b/public/terrain/19/858602/354033.terrain new file mode 100644 index 000000000..1004a200b Binary files /dev/null and b/public/terrain/19/858602/354033.terrain differ diff --git a/public/terrain/19/858602/354034.terrain b/public/terrain/19/858602/354034.terrain new file mode 100644 index 000000000..2ba73fa7f Binary files /dev/null and b/public/terrain/19/858602/354034.terrain differ diff --git a/public/terrain/19/858602/354035.terrain b/public/terrain/19/858602/354035.terrain new file mode 100644 index 000000000..cb210d549 Binary files /dev/null and b/public/terrain/19/858602/354035.terrain differ diff --git a/public/terrain/19/858602/354036.terrain b/public/terrain/19/858602/354036.terrain new file mode 100644 index 000000000..d50b3722d Binary files /dev/null and b/public/terrain/19/858602/354036.terrain differ diff --git a/public/terrain/19/858602/354037.terrain b/public/terrain/19/858602/354037.terrain new file mode 100644 index 000000000..14f71e5bd Binary files /dev/null and b/public/terrain/19/858602/354037.terrain differ diff --git a/public/terrain/19/858602/354038.terrain b/public/terrain/19/858602/354038.terrain new file mode 100644 index 000000000..41772c024 Binary files /dev/null and b/public/terrain/19/858602/354038.terrain differ diff --git a/public/terrain/19/858602/354039.terrain b/public/terrain/19/858602/354039.terrain new file mode 100644 index 000000000..823dd332a Binary files /dev/null and b/public/terrain/19/858602/354039.terrain differ diff --git a/public/terrain/19/858602/354040.terrain b/public/terrain/19/858602/354040.terrain new file mode 100644 index 000000000..0a8ae7f3c Binary files /dev/null and b/public/terrain/19/858602/354040.terrain differ diff --git a/public/terrain/19/858602/354041.terrain b/public/terrain/19/858602/354041.terrain new file mode 100644 index 000000000..7e783d424 Binary files /dev/null and b/public/terrain/19/858602/354041.terrain differ diff --git a/public/terrain/19/858602/354042.terrain b/public/terrain/19/858602/354042.terrain new file mode 100644 index 000000000..159a7a7c0 Binary files /dev/null and b/public/terrain/19/858602/354042.terrain differ diff --git a/public/terrain/19/858602/354043.terrain b/public/terrain/19/858602/354043.terrain new file mode 100644 index 000000000..f6bfaf2c4 Binary files /dev/null and b/public/terrain/19/858602/354043.terrain differ diff --git a/public/terrain/19/858602/354044.terrain b/public/terrain/19/858602/354044.terrain new file mode 100644 index 000000000..2ff53eeff Binary files /dev/null and b/public/terrain/19/858602/354044.terrain differ diff --git a/public/terrain/19/858602/354045.terrain b/public/terrain/19/858602/354045.terrain new file mode 100644 index 000000000..b0039cce2 Binary files /dev/null and b/public/terrain/19/858602/354045.terrain differ diff --git a/public/terrain/19/858602/354046.terrain b/public/terrain/19/858602/354046.terrain new file mode 100644 index 000000000..898bb50b9 Binary files /dev/null and b/public/terrain/19/858602/354046.terrain differ diff --git a/public/terrain/19/858602/354047.terrain b/public/terrain/19/858602/354047.terrain new file mode 100644 index 000000000..6397a9dce Binary files /dev/null and b/public/terrain/19/858602/354047.terrain differ diff --git a/public/terrain/19/858602/354048.terrain b/public/terrain/19/858602/354048.terrain new file mode 100644 index 000000000..1c170455e Binary files /dev/null and b/public/terrain/19/858602/354048.terrain differ diff --git a/public/terrain/19/858602/354049.terrain b/public/terrain/19/858602/354049.terrain new file mode 100644 index 000000000..1570fd902 Binary files /dev/null and b/public/terrain/19/858602/354049.terrain differ diff --git a/public/terrain/19/858602/354050.terrain b/public/terrain/19/858602/354050.terrain new file mode 100644 index 000000000..ffacbeb5c Binary files /dev/null and b/public/terrain/19/858602/354050.terrain differ diff --git a/public/terrain/19/858602/354051.terrain b/public/terrain/19/858602/354051.terrain new file mode 100644 index 000000000..8b6b781b1 Binary files /dev/null and b/public/terrain/19/858602/354051.terrain differ diff --git a/public/terrain/19/858602/354052.terrain b/public/terrain/19/858602/354052.terrain new file mode 100644 index 000000000..60f1f4e06 Binary files /dev/null and b/public/terrain/19/858602/354052.terrain differ diff --git a/public/terrain/19/858602/354053.terrain b/public/terrain/19/858602/354053.terrain new file mode 100644 index 000000000..ebaae7d7b Binary files /dev/null and b/public/terrain/19/858602/354053.terrain differ diff --git a/public/terrain/19/858602/354054.terrain b/public/terrain/19/858602/354054.terrain new file mode 100644 index 000000000..c771ced2b Binary files /dev/null and b/public/terrain/19/858602/354054.terrain differ diff --git a/public/terrain/19/858602/354055.terrain b/public/terrain/19/858602/354055.terrain new file mode 100644 index 000000000..76a4a513b Binary files /dev/null and b/public/terrain/19/858602/354055.terrain differ diff --git a/public/terrain/19/858602/354056.terrain b/public/terrain/19/858602/354056.terrain new file mode 100644 index 000000000..b5ea2872b Binary files /dev/null and b/public/terrain/19/858602/354056.terrain differ diff --git a/public/terrain/19/858602/354057.terrain b/public/terrain/19/858602/354057.terrain new file mode 100644 index 000000000..7d6226769 Binary files /dev/null and b/public/terrain/19/858602/354057.terrain differ diff --git a/public/terrain/19/858602/354058.terrain b/public/terrain/19/858602/354058.terrain new file mode 100644 index 000000000..0fcb46f18 Binary files /dev/null and b/public/terrain/19/858602/354058.terrain differ diff --git a/public/terrain/19/858602/354059.terrain b/public/terrain/19/858602/354059.terrain new file mode 100644 index 000000000..0f5b95304 Binary files /dev/null and b/public/terrain/19/858602/354059.terrain differ diff --git a/public/terrain/19/858603/353743.terrain b/public/terrain/19/858603/353743.terrain new file mode 100644 index 000000000..877152872 Binary files /dev/null and b/public/terrain/19/858603/353743.terrain differ diff --git a/public/terrain/19/858603/353744.terrain b/public/terrain/19/858603/353744.terrain new file mode 100644 index 000000000..573084487 Binary files /dev/null and b/public/terrain/19/858603/353744.terrain differ diff --git a/public/terrain/19/858603/353745.terrain b/public/terrain/19/858603/353745.terrain new file mode 100644 index 000000000..69ceb18d0 Binary files /dev/null and b/public/terrain/19/858603/353745.terrain differ diff --git a/public/terrain/19/858603/353746.terrain b/public/terrain/19/858603/353746.terrain new file mode 100644 index 000000000..9f6fc59dc Binary files /dev/null and b/public/terrain/19/858603/353746.terrain differ diff --git a/public/terrain/19/858603/353747.terrain b/public/terrain/19/858603/353747.terrain new file mode 100644 index 000000000..4db24570b Binary files /dev/null and b/public/terrain/19/858603/353747.terrain differ diff --git a/public/terrain/19/858603/353748.terrain b/public/terrain/19/858603/353748.terrain new file mode 100644 index 000000000..1c1864f18 Binary files /dev/null and b/public/terrain/19/858603/353748.terrain differ diff --git a/public/terrain/19/858603/353749.terrain b/public/terrain/19/858603/353749.terrain new file mode 100644 index 000000000..fe97191b8 Binary files /dev/null and b/public/terrain/19/858603/353749.terrain differ diff --git a/public/terrain/19/858603/353750.terrain b/public/terrain/19/858603/353750.terrain new file mode 100644 index 000000000..9d1029142 Binary files /dev/null and b/public/terrain/19/858603/353750.terrain differ diff --git a/public/terrain/19/858603/353751.terrain b/public/terrain/19/858603/353751.terrain new file mode 100644 index 000000000..356dcc82b Binary files /dev/null and b/public/terrain/19/858603/353751.terrain differ diff --git a/public/terrain/19/858603/353752.terrain b/public/terrain/19/858603/353752.terrain new file mode 100644 index 000000000..0669a97b5 Binary files /dev/null and b/public/terrain/19/858603/353752.terrain differ diff --git a/public/terrain/19/858603/353753.terrain b/public/terrain/19/858603/353753.terrain new file mode 100644 index 000000000..52b0139d3 Binary files /dev/null and b/public/terrain/19/858603/353753.terrain differ diff --git a/public/terrain/19/858603/353754.terrain b/public/terrain/19/858603/353754.terrain new file mode 100644 index 000000000..a4bfd3a2c Binary files /dev/null and b/public/terrain/19/858603/353754.terrain differ diff --git a/public/terrain/19/858603/353755.terrain b/public/terrain/19/858603/353755.terrain new file mode 100644 index 000000000..526c4c155 Binary files /dev/null and b/public/terrain/19/858603/353755.terrain differ diff --git a/public/terrain/19/858603/353756.terrain b/public/terrain/19/858603/353756.terrain new file mode 100644 index 000000000..6de9193f4 Binary files /dev/null and b/public/terrain/19/858603/353756.terrain differ diff --git a/public/terrain/19/858603/353757.terrain b/public/terrain/19/858603/353757.terrain new file mode 100644 index 000000000..3a5b76a80 Binary files /dev/null and b/public/terrain/19/858603/353757.terrain differ diff --git a/public/terrain/19/858603/353758.terrain b/public/terrain/19/858603/353758.terrain new file mode 100644 index 000000000..f86234e8c Binary files /dev/null and b/public/terrain/19/858603/353758.terrain differ diff --git a/public/terrain/19/858603/353759.terrain b/public/terrain/19/858603/353759.terrain new file mode 100644 index 000000000..7ec121818 Binary files /dev/null and b/public/terrain/19/858603/353759.terrain differ diff --git a/public/terrain/19/858603/353760.terrain b/public/terrain/19/858603/353760.terrain new file mode 100644 index 000000000..a5c2cc0eb Binary files /dev/null and b/public/terrain/19/858603/353760.terrain differ diff --git a/public/terrain/19/858603/353761.terrain b/public/terrain/19/858603/353761.terrain new file mode 100644 index 000000000..5b738c2e5 Binary files /dev/null and b/public/terrain/19/858603/353761.terrain differ diff --git a/public/terrain/19/858603/353762.terrain b/public/terrain/19/858603/353762.terrain new file mode 100644 index 000000000..bdd972b4a Binary files /dev/null and b/public/terrain/19/858603/353762.terrain differ diff --git a/public/terrain/19/858603/353763.terrain b/public/terrain/19/858603/353763.terrain new file mode 100644 index 000000000..606c84eeb Binary files /dev/null and b/public/terrain/19/858603/353763.terrain differ diff --git a/public/terrain/19/858603/353764.terrain b/public/terrain/19/858603/353764.terrain new file mode 100644 index 000000000..d7f1e343f Binary files /dev/null and b/public/terrain/19/858603/353764.terrain differ diff --git a/public/terrain/19/858603/353765.terrain b/public/terrain/19/858603/353765.terrain new file mode 100644 index 000000000..fe62b6e6e Binary files /dev/null and b/public/terrain/19/858603/353765.terrain differ diff --git a/public/terrain/19/858603/353766.terrain b/public/terrain/19/858603/353766.terrain new file mode 100644 index 000000000..51b83bd22 Binary files /dev/null and b/public/terrain/19/858603/353766.terrain differ diff --git a/public/terrain/19/858603/353767.terrain b/public/terrain/19/858603/353767.terrain new file mode 100644 index 000000000..f169f1d40 Binary files /dev/null and b/public/terrain/19/858603/353767.terrain differ diff --git a/public/terrain/19/858603/353768.terrain b/public/terrain/19/858603/353768.terrain new file mode 100644 index 000000000..fdedc9a4f Binary files /dev/null and b/public/terrain/19/858603/353768.terrain differ diff --git a/public/terrain/19/858603/353769.terrain b/public/terrain/19/858603/353769.terrain new file mode 100644 index 000000000..f0b54df94 Binary files /dev/null and b/public/terrain/19/858603/353769.terrain differ diff --git a/public/terrain/19/858603/353770.terrain b/public/terrain/19/858603/353770.terrain new file mode 100644 index 000000000..9d0990afb Binary files /dev/null and b/public/terrain/19/858603/353770.terrain differ diff --git a/public/terrain/19/858603/353771.terrain b/public/terrain/19/858603/353771.terrain new file mode 100644 index 000000000..bcbbf5b4f Binary files /dev/null and b/public/terrain/19/858603/353771.terrain differ diff --git a/public/terrain/19/858603/353772.terrain b/public/terrain/19/858603/353772.terrain new file mode 100644 index 000000000..f9c83a8d7 Binary files /dev/null and b/public/terrain/19/858603/353772.terrain differ diff --git a/public/terrain/19/858603/353773.terrain b/public/terrain/19/858603/353773.terrain new file mode 100644 index 000000000..e73173928 Binary files /dev/null and b/public/terrain/19/858603/353773.terrain differ diff --git a/public/terrain/19/858603/353774.terrain b/public/terrain/19/858603/353774.terrain new file mode 100644 index 000000000..0433d51fa Binary files /dev/null and b/public/terrain/19/858603/353774.terrain differ diff --git a/public/terrain/19/858603/353775.terrain b/public/terrain/19/858603/353775.terrain new file mode 100644 index 000000000..ef1ebb96e Binary files /dev/null and b/public/terrain/19/858603/353775.terrain differ diff --git a/public/terrain/19/858603/353776.terrain b/public/terrain/19/858603/353776.terrain new file mode 100644 index 000000000..cafe817c7 Binary files /dev/null and b/public/terrain/19/858603/353776.terrain differ diff --git a/public/terrain/19/858603/353777.terrain b/public/terrain/19/858603/353777.terrain new file mode 100644 index 000000000..d80cb8d5f Binary files /dev/null and b/public/terrain/19/858603/353777.terrain differ diff --git a/public/terrain/19/858603/353778.terrain b/public/terrain/19/858603/353778.terrain new file mode 100644 index 000000000..2fdbf756b Binary files /dev/null and b/public/terrain/19/858603/353778.terrain differ diff --git a/public/terrain/19/858603/353779.terrain b/public/terrain/19/858603/353779.terrain new file mode 100644 index 000000000..aff3825d6 Binary files /dev/null and b/public/terrain/19/858603/353779.terrain differ diff --git a/public/terrain/19/858603/353780.terrain b/public/terrain/19/858603/353780.terrain new file mode 100644 index 000000000..ce66c089f Binary files /dev/null and b/public/terrain/19/858603/353780.terrain differ diff --git a/public/terrain/19/858603/353781.terrain b/public/terrain/19/858603/353781.terrain new file mode 100644 index 000000000..136661c26 Binary files /dev/null and b/public/terrain/19/858603/353781.terrain differ diff --git a/public/terrain/19/858603/353782.terrain b/public/terrain/19/858603/353782.terrain new file mode 100644 index 000000000..da140ab18 Binary files /dev/null and b/public/terrain/19/858603/353782.terrain differ diff --git a/public/terrain/19/858603/353783.terrain b/public/terrain/19/858603/353783.terrain new file mode 100644 index 000000000..158685e07 Binary files /dev/null and b/public/terrain/19/858603/353783.terrain differ diff --git a/public/terrain/19/858603/353784.terrain b/public/terrain/19/858603/353784.terrain new file mode 100644 index 000000000..bff7ad556 Binary files /dev/null and b/public/terrain/19/858603/353784.terrain differ diff --git a/public/terrain/19/858603/353785.terrain b/public/terrain/19/858603/353785.terrain new file mode 100644 index 000000000..93f2375ad Binary files /dev/null and b/public/terrain/19/858603/353785.terrain differ diff --git a/public/terrain/19/858603/353786.terrain b/public/terrain/19/858603/353786.terrain new file mode 100644 index 000000000..9cc98c356 Binary files /dev/null and b/public/terrain/19/858603/353786.terrain differ diff --git a/public/terrain/19/858603/353787.terrain b/public/terrain/19/858603/353787.terrain new file mode 100644 index 000000000..4bdd649ca Binary files /dev/null and b/public/terrain/19/858603/353787.terrain differ diff --git a/public/terrain/19/858603/353788.terrain b/public/terrain/19/858603/353788.terrain new file mode 100644 index 000000000..e6d2dfb35 Binary files /dev/null and b/public/terrain/19/858603/353788.terrain differ diff --git a/public/terrain/19/858603/353789.terrain b/public/terrain/19/858603/353789.terrain new file mode 100644 index 000000000..d99aaab0e Binary files /dev/null and b/public/terrain/19/858603/353789.terrain differ diff --git a/public/terrain/19/858603/353790.terrain b/public/terrain/19/858603/353790.terrain new file mode 100644 index 000000000..95ccda841 Binary files /dev/null and b/public/terrain/19/858603/353790.terrain differ diff --git a/public/terrain/19/858603/353791.terrain b/public/terrain/19/858603/353791.terrain new file mode 100644 index 000000000..474cf4b31 Binary files /dev/null and b/public/terrain/19/858603/353791.terrain differ diff --git a/public/terrain/19/858603/353792.terrain b/public/terrain/19/858603/353792.terrain new file mode 100644 index 000000000..944a8e28c Binary files /dev/null and b/public/terrain/19/858603/353792.terrain differ diff --git a/public/terrain/19/858603/353793.terrain b/public/terrain/19/858603/353793.terrain new file mode 100644 index 000000000..0472a68c7 Binary files /dev/null and b/public/terrain/19/858603/353793.terrain differ diff --git a/public/terrain/19/858603/353794.terrain b/public/terrain/19/858603/353794.terrain new file mode 100644 index 000000000..2d750961b Binary files /dev/null and b/public/terrain/19/858603/353794.terrain differ diff --git a/public/terrain/19/858603/353795.terrain b/public/terrain/19/858603/353795.terrain new file mode 100644 index 000000000..80bb1fbb9 Binary files /dev/null and b/public/terrain/19/858603/353795.terrain differ diff --git a/public/terrain/19/858603/353796.terrain b/public/terrain/19/858603/353796.terrain new file mode 100644 index 000000000..83e9948ac Binary files /dev/null and b/public/terrain/19/858603/353796.terrain differ diff --git a/public/terrain/19/858603/353797.terrain b/public/terrain/19/858603/353797.terrain new file mode 100644 index 000000000..1523bcea8 Binary files /dev/null and b/public/terrain/19/858603/353797.terrain differ diff --git a/public/terrain/19/858603/353798.terrain b/public/terrain/19/858603/353798.terrain new file mode 100644 index 000000000..d14f07bca Binary files /dev/null and b/public/terrain/19/858603/353798.terrain differ diff --git a/public/terrain/19/858603/353799.terrain b/public/terrain/19/858603/353799.terrain new file mode 100644 index 000000000..6609ba2e9 Binary files /dev/null and b/public/terrain/19/858603/353799.terrain differ diff --git a/public/terrain/19/858603/353800.terrain b/public/terrain/19/858603/353800.terrain new file mode 100644 index 000000000..fde909f47 Binary files /dev/null and b/public/terrain/19/858603/353800.terrain differ diff --git a/public/terrain/19/858603/353801.terrain b/public/terrain/19/858603/353801.terrain new file mode 100644 index 000000000..d9bb50a19 Binary files /dev/null and b/public/terrain/19/858603/353801.terrain differ diff --git a/public/terrain/19/858603/353802.terrain b/public/terrain/19/858603/353802.terrain new file mode 100644 index 000000000..89cac67cc Binary files /dev/null and b/public/terrain/19/858603/353802.terrain differ diff --git a/public/terrain/19/858603/353803.terrain b/public/terrain/19/858603/353803.terrain new file mode 100644 index 000000000..5042b72fc Binary files /dev/null and b/public/terrain/19/858603/353803.terrain differ diff --git a/public/terrain/19/858603/353804.terrain b/public/terrain/19/858603/353804.terrain new file mode 100644 index 000000000..e68fd37f2 Binary files /dev/null and b/public/terrain/19/858603/353804.terrain differ diff --git a/public/terrain/19/858603/353805.terrain b/public/terrain/19/858603/353805.terrain new file mode 100644 index 000000000..b7e8d47db Binary files /dev/null and b/public/terrain/19/858603/353805.terrain differ diff --git a/public/terrain/19/858603/353806.terrain b/public/terrain/19/858603/353806.terrain new file mode 100644 index 000000000..68517c6dd Binary files /dev/null and b/public/terrain/19/858603/353806.terrain differ diff --git a/public/terrain/19/858603/353807.terrain b/public/terrain/19/858603/353807.terrain new file mode 100644 index 000000000..851d36566 Binary files /dev/null and b/public/terrain/19/858603/353807.terrain differ diff --git a/public/terrain/19/858603/353808.terrain b/public/terrain/19/858603/353808.terrain new file mode 100644 index 000000000..41eb0025c Binary files /dev/null and b/public/terrain/19/858603/353808.terrain differ diff --git a/public/terrain/19/858603/353809.terrain b/public/terrain/19/858603/353809.terrain new file mode 100644 index 000000000..77bfa0ac7 Binary files /dev/null and b/public/terrain/19/858603/353809.terrain differ diff --git a/public/terrain/19/858603/353810.terrain b/public/terrain/19/858603/353810.terrain new file mode 100644 index 000000000..b32497675 Binary files /dev/null and b/public/terrain/19/858603/353810.terrain differ diff --git a/public/terrain/19/858603/353811.terrain b/public/terrain/19/858603/353811.terrain new file mode 100644 index 000000000..c1d10750e Binary files /dev/null and b/public/terrain/19/858603/353811.terrain differ diff --git a/public/terrain/19/858603/353812.terrain b/public/terrain/19/858603/353812.terrain new file mode 100644 index 000000000..87ffbd3e7 Binary files /dev/null and b/public/terrain/19/858603/353812.terrain differ diff --git a/public/terrain/19/858603/353813.terrain b/public/terrain/19/858603/353813.terrain new file mode 100644 index 000000000..7103e9304 Binary files /dev/null and b/public/terrain/19/858603/353813.terrain differ diff --git a/public/terrain/19/858603/353814.terrain b/public/terrain/19/858603/353814.terrain new file mode 100644 index 000000000..71af3e2ca Binary files /dev/null and b/public/terrain/19/858603/353814.terrain differ diff --git a/public/terrain/19/858603/353815.terrain b/public/terrain/19/858603/353815.terrain new file mode 100644 index 000000000..1c8f239a8 Binary files /dev/null and b/public/terrain/19/858603/353815.terrain differ diff --git a/public/terrain/19/858603/353816.terrain b/public/terrain/19/858603/353816.terrain new file mode 100644 index 000000000..e70ebe867 Binary files /dev/null and b/public/terrain/19/858603/353816.terrain differ diff --git a/public/terrain/19/858603/353817.terrain b/public/terrain/19/858603/353817.terrain new file mode 100644 index 000000000..d50a51620 Binary files /dev/null and b/public/terrain/19/858603/353817.terrain differ diff --git a/public/terrain/19/858603/353818.terrain b/public/terrain/19/858603/353818.terrain new file mode 100644 index 000000000..9bcc0c615 Binary files /dev/null and b/public/terrain/19/858603/353818.terrain differ diff --git a/public/terrain/19/858603/353819.terrain b/public/terrain/19/858603/353819.terrain new file mode 100644 index 000000000..52792f287 Binary files /dev/null and b/public/terrain/19/858603/353819.terrain differ diff --git a/public/terrain/19/858603/353820.terrain b/public/terrain/19/858603/353820.terrain new file mode 100644 index 000000000..c982ceba9 Binary files /dev/null and b/public/terrain/19/858603/353820.terrain differ diff --git a/public/terrain/19/858603/353821.terrain b/public/terrain/19/858603/353821.terrain new file mode 100644 index 000000000..ca1518538 Binary files /dev/null and b/public/terrain/19/858603/353821.terrain differ diff --git a/public/terrain/19/858603/353822.terrain b/public/terrain/19/858603/353822.terrain new file mode 100644 index 000000000..19ed66994 Binary files /dev/null and b/public/terrain/19/858603/353822.terrain differ diff --git a/public/terrain/19/858603/353823.terrain b/public/terrain/19/858603/353823.terrain new file mode 100644 index 000000000..6a961f0ea Binary files /dev/null and b/public/terrain/19/858603/353823.terrain differ diff --git a/public/terrain/19/858603/353824.terrain b/public/terrain/19/858603/353824.terrain new file mode 100644 index 000000000..451c3fe2a Binary files /dev/null and b/public/terrain/19/858603/353824.terrain differ diff --git a/public/terrain/19/858603/353825.terrain b/public/terrain/19/858603/353825.terrain new file mode 100644 index 000000000..70b8a170f Binary files /dev/null and b/public/terrain/19/858603/353825.terrain differ diff --git a/public/terrain/19/858603/353826.terrain b/public/terrain/19/858603/353826.terrain new file mode 100644 index 000000000..fe47543a8 Binary files /dev/null and b/public/terrain/19/858603/353826.terrain differ diff --git a/public/terrain/19/858603/353827.terrain b/public/terrain/19/858603/353827.terrain new file mode 100644 index 000000000..2ec5f2576 Binary files /dev/null and b/public/terrain/19/858603/353827.terrain differ diff --git a/public/terrain/19/858603/353828.terrain b/public/terrain/19/858603/353828.terrain new file mode 100644 index 000000000..2f0f8bbc3 Binary files /dev/null and b/public/terrain/19/858603/353828.terrain differ diff --git a/public/terrain/19/858603/353829.terrain b/public/terrain/19/858603/353829.terrain new file mode 100644 index 000000000..e47ed9f57 Binary files /dev/null and b/public/terrain/19/858603/353829.terrain differ diff --git a/public/terrain/19/858603/353830.terrain b/public/terrain/19/858603/353830.terrain new file mode 100644 index 000000000..6789c6479 Binary files /dev/null and b/public/terrain/19/858603/353830.terrain differ diff --git a/public/terrain/19/858603/353831.terrain b/public/terrain/19/858603/353831.terrain new file mode 100644 index 000000000..fc1c92574 Binary files /dev/null and b/public/terrain/19/858603/353831.terrain differ diff --git a/public/terrain/19/858603/353832.terrain b/public/terrain/19/858603/353832.terrain new file mode 100644 index 000000000..324e49d70 Binary files /dev/null and b/public/terrain/19/858603/353832.terrain differ diff --git a/public/terrain/19/858603/353833.terrain b/public/terrain/19/858603/353833.terrain new file mode 100644 index 000000000..084a106d1 Binary files /dev/null and b/public/terrain/19/858603/353833.terrain differ diff --git a/public/terrain/19/858603/353834.terrain b/public/terrain/19/858603/353834.terrain new file mode 100644 index 000000000..05072eedb Binary files /dev/null and b/public/terrain/19/858603/353834.terrain differ diff --git a/public/terrain/19/858603/353835.terrain b/public/terrain/19/858603/353835.terrain new file mode 100644 index 000000000..fb481e76e Binary files /dev/null and b/public/terrain/19/858603/353835.terrain differ diff --git a/public/terrain/19/858603/353836.terrain b/public/terrain/19/858603/353836.terrain new file mode 100644 index 000000000..b496188ba Binary files /dev/null and b/public/terrain/19/858603/353836.terrain differ diff --git a/public/terrain/19/858603/353837.terrain b/public/terrain/19/858603/353837.terrain new file mode 100644 index 000000000..5b1108b2a Binary files /dev/null and b/public/terrain/19/858603/353837.terrain differ diff --git a/public/terrain/19/858603/353838.terrain b/public/terrain/19/858603/353838.terrain new file mode 100644 index 000000000..3f3a9a783 Binary files /dev/null and b/public/terrain/19/858603/353838.terrain differ diff --git a/public/terrain/19/858603/353839.terrain b/public/terrain/19/858603/353839.terrain new file mode 100644 index 000000000..90a9741c1 Binary files /dev/null and b/public/terrain/19/858603/353839.terrain differ diff --git a/public/terrain/19/858603/353840.terrain b/public/terrain/19/858603/353840.terrain new file mode 100644 index 000000000..066db69ab Binary files /dev/null and b/public/terrain/19/858603/353840.terrain differ diff --git a/public/terrain/19/858603/353841.terrain b/public/terrain/19/858603/353841.terrain new file mode 100644 index 000000000..815cabb1b Binary files /dev/null and b/public/terrain/19/858603/353841.terrain differ diff --git a/public/terrain/19/858603/353842.terrain b/public/terrain/19/858603/353842.terrain new file mode 100644 index 000000000..dfd10f591 Binary files /dev/null and b/public/terrain/19/858603/353842.terrain differ diff --git a/public/terrain/19/858603/353843.terrain b/public/terrain/19/858603/353843.terrain new file mode 100644 index 000000000..4d264bb65 Binary files /dev/null and b/public/terrain/19/858603/353843.terrain differ diff --git a/public/terrain/19/858603/353844.terrain b/public/terrain/19/858603/353844.terrain new file mode 100644 index 000000000..9fe3735ad Binary files /dev/null and b/public/terrain/19/858603/353844.terrain differ diff --git a/public/terrain/19/858603/353845.terrain b/public/terrain/19/858603/353845.terrain new file mode 100644 index 000000000..b012e5901 Binary files /dev/null and b/public/terrain/19/858603/353845.terrain differ diff --git a/public/terrain/19/858603/353846.terrain b/public/terrain/19/858603/353846.terrain new file mode 100644 index 000000000..fa02d0c2a Binary files /dev/null and b/public/terrain/19/858603/353846.terrain differ diff --git a/public/terrain/19/858603/353847.terrain b/public/terrain/19/858603/353847.terrain new file mode 100644 index 000000000..7c03e6362 Binary files /dev/null and b/public/terrain/19/858603/353847.terrain differ diff --git a/public/terrain/19/858603/353848.terrain b/public/terrain/19/858603/353848.terrain new file mode 100644 index 000000000..3f37e6fe8 Binary files /dev/null and b/public/terrain/19/858603/353848.terrain differ diff --git a/public/terrain/19/858603/353849.terrain b/public/terrain/19/858603/353849.terrain new file mode 100644 index 000000000..0f943eed4 Binary files /dev/null and b/public/terrain/19/858603/353849.terrain differ diff --git a/public/terrain/19/858603/353850.terrain b/public/terrain/19/858603/353850.terrain new file mode 100644 index 000000000..0d4b11946 Binary files /dev/null and b/public/terrain/19/858603/353850.terrain differ diff --git a/public/terrain/19/858603/353851.terrain b/public/terrain/19/858603/353851.terrain new file mode 100644 index 000000000..301a9d35c Binary files /dev/null and b/public/terrain/19/858603/353851.terrain differ diff --git a/public/terrain/19/858603/353852.terrain b/public/terrain/19/858603/353852.terrain new file mode 100644 index 000000000..4c4740b66 Binary files /dev/null and b/public/terrain/19/858603/353852.terrain differ diff --git a/public/terrain/19/858603/353853.terrain b/public/terrain/19/858603/353853.terrain new file mode 100644 index 000000000..e086e61b1 Binary files /dev/null and b/public/terrain/19/858603/353853.terrain differ diff --git a/public/terrain/19/858603/353854.terrain b/public/terrain/19/858603/353854.terrain new file mode 100644 index 000000000..ce63ef4d3 Binary files /dev/null and b/public/terrain/19/858603/353854.terrain differ diff --git a/public/terrain/19/858603/353855.terrain b/public/terrain/19/858603/353855.terrain new file mode 100644 index 000000000..75e90eb13 Binary files /dev/null and b/public/terrain/19/858603/353855.terrain differ diff --git a/public/terrain/19/858603/353856.terrain b/public/terrain/19/858603/353856.terrain new file mode 100644 index 000000000..ed6c90d1d Binary files /dev/null and b/public/terrain/19/858603/353856.terrain differ diff --git a/public/terrain/19/858603/353857.terrain b/public/terrain/19/858603/353857.terrain new file mode 100644 index 000000000..83c635578 Binary files /dev/null and b/public/terrain/19/858603/353857.terrain differ diff --git a/public/terrain/19/858603/353858.terrain b/public/terrain/19/858603/353858.terrain new file mode 100644 index 000000000..d7c41e80f Binary files /dev/null and b/public/terrain/19/858603/353858.terrain differ diff --git a/public/terrain/19/858603/353859.terrain b/public/terrain/19/858603/353859.terrain new file mode 100644 index 000000000..8514a690c Binary files /dev/null and b/public/terrain/19/858603/353859.terrain differ diff --git a/public/terrain/19/858603/353860.terrain b/public/terrain/19/858603/353860.terrain new file mode 100644 index 000000000..2d67b8301 Binary files /dev/null and b/public/terrain/19/858603/353860.terrain differ diff --git a/public/terrain/19/858603/353861.terrain b/public/terrain/19/858603/353861.terrain new file mode 100644 index 000000000..882696f30 Binary files /dev/null and b/public/terrain/19/858603/353861.terrain differ diff --git a/public/terrain/19/858603/353862.terrain b/public/terrain/19/858603/353862.terrain new file mode 100644 index 000000000..f7523b057 Binary files /dev/null and b/public/terrain/19/858603/353862.terrain differ diff --git a/public/terrain/19/858603/353863.terrain b/public/terrain/19/858603/353863.terrain new file mode 100644 index 000000000..8d1b1bade Binary files /dev/null and b/public/terrain/19/858603/353863.terrain differ diff --git a/public/terrain/19/858603/353864.terrain b/public/terrain/19/858603/353864.terrain new file mode 100644 index 000000000..adf16cb4c Binary files /dev/null and b/public/terrain/19/858603/353864.terrain differ diff --git a/public/terrain/19/858603/353865.terrain b/public/terrain/19/858603/353865.terrain new file mode 100644 index 000000000..b3130d3af Binary files /dev/null and b/public/terrain/19/858603/353865.terrain differ diff --git a/public/terrain/19/858603/353866.terrain b/public/terrain/19/858603/353866.terrain new file mode 100644 index 000000000..26cee2820 Binary files /dev/null and b/public/terrain/19/858603/353866.terrain differ diff --git a/public/terrain/19/858603/353867.terrain b/public/terrain/19/858603/353867.terrain new file mode 100644 index 000000000..fd709fc75 Binary files /dev/null and b/public/terrain/19/858603/353867.terrain differ diff --git a/public/terrain/19/858603/353868.terrain b/public/terrain/19/858603/353868.terrain new file mode 100644 index 000000000..87bb56c7e Binary files /dev/null and b/public/terrain/19/858603/353868.terrain differ diff --git a/public/terrain/19/858603/353869.terrain b/public/terrain/19/858603/353869.terrain new file mode 100644 index 000000000..7fc29a1af Binary files /dev/null and b/public/terrain/19/858603/353869.terrain differ diff --git a/public/terrain/19/858603/353870.terrain b/public/terrain/19/858603/353870.terrain new file mode 100644 index 000000000..45014f5f9 Binary files /dev/null and b/public/terrain/19/858603/353870.terrain differ diff --git a/public/terrain/19/858603/353871.terrain b/public/terrain/19/858603/353871.terrain new file mode 100644 index 000000000..efd7b2160 Binary files /dev/null and b/public/terrain/19/858603/353871.terrain differ diff --git a/public/terrain/19/858603/353872.terrain b/public/terrain/19/858603/353872.terrain new file mode 100644 index 000000000..31fd96f1d Binary files /dev/null and b/public/terrain/19/858603/353872.terrain differ diff --git a/public/terrain/19/858603/353873.terrain b/public/terrain/19/858603/353873.terrain new file mode 100644 index 000000000..e50b99c03 Binary files /dev/null and b/public/terrain/19/858603/353873.terrain differ diff --git a/public/terrain/19/858603/353874.terrain b/public/terrain/19/858603/353874.terrain new file mode 100644 index 000000000..2abe947a1 Binary files /dev/null and b/public/terrain/19/858603/353874.terrain differ diff --git a/public/terrain/19/858603/353875.terrain b/public/terrain/19/858603/353875.terrain new file mode 100644 index 000000000..7afc4c90d Binary files /dev/null and b/public/terrain/19/858603/353875.terrain differ diff --git a/public/terrain/19/858603/353876.terrain b/public/terrain/19/858603/353876.terrain new file mode 100644 index 000000000..f63ef38bb Binary files /dev/null and b/public/terrain/19/858603/353876.terrain differ diff --git a/public/terrain/19/858603/353877.terrain b/public/terrain/19/858603/353877.terrain new file mode 100644 index 000000000..f03dbb665 Binary files /dev/null and b/public/terrain/19/858603/353877.terrain differ diff --git a/public/terrain/19/858603/353878.terrain b/public/terrain/19/858603/353878.terrain new file mode 100644 index 000000000..a8bdb6f13 Binary files /dev/null and b/public/terrain/19/858603/353878.terrain differ diff --git a/public/terrain/19/858603/353879.terrain b/public/terrain/19/858603/353879.terrain new file mode 100644 index 000000000..9445098f5 Binary files /dev/null and b/public/terrain/19/858603/353879.terrain differ diff --git a/public/terrain/19/858603/353880.terrain b/public/terrain/19/858603/353880.terrain new file mode 100644 index 000000000..7ca152407 Binary files /dev/null and b/public/terrain/19/858603/353880.terrain differ diff --git a/public/terrain/19/858603/353881.terrain b/public/terrain/19/858603/353881.terrain new file mode 100644 index 000000000..51294d0cd Binary files /dev/null and b/public/terrain/19/858603/353881.terrain differ diff --git a/public/terrain/19/858603/353882.terrain b/public/terrain/19/858603/353882.terrain new file mode 100644 index 000000000..260bd18d3 Binary files /dev/null and b/public/terrain/19/858603/353882.terrain differ diff --git a/public/terrain/19/858603/353883.terrain b/public/terrain/19/858603/353883.terrain new file mode 100644 index 000000000..d658097d1 Binary files /dev/null and b/public/terrain/19/858603/353883.terrain differ diff --git a/public/terrain/19/858603/353884.terrain b/public/terrain/19/858603/353884.terrain new file mode 100644 index 000000000..6884bc2fb Binary files /dev/null and b/public/terrain/19/858603/353884.terrain differ diff --git a/public/terrain/19/858603/353885.terrain b/public/terrain/19/858603/353885.terrain new file mode 100644 index 000000000..f0c6514ac Binary files /dev/null and b/public/terrain/19/858603/353885.terrain differ diff --git a/public/terrain/19/858603/353886.terrain b/public/terrain/19/858603/353886.terrain new file mode 100644 index 000000000..f9c06b19c Binary files /dev/null and b/public/terrain/19/858603/353886.terrain differ diff --git a/public/terrain/19/858603/353887.terrain b/public/terrain/19/858603/353887.terrain new file mode 100644 index 000000000..590c0b5a3 Binary files /dev/null and b/public/terrain/19/858603/353887.terrain differ diff --git a/public/terrain/19/858603/353888.terrain b/public/terrain/19/858603/353888.terrain new file mode 100644 index 000000000..509b912fd Binary files /dev/null and b/public/terrain/19/858603/353888.terrain differ diff --git a/public/terrain/19/858603/353889.terrain b/public/terrain/19/858603/353889.terrain new file mode 100644 index 000000000..5b1ebaa3d Binary files /dev/null and b/public/terrain/19/858603/353889.terrain differ diff --git a/public/terrain/19/858603/353890.terrain b/public/terrain/19/858603/353890.terrain new file mode 100644 index 000000000..5bc83d4ce Binary files /dev/null and b/public/terrain/19/858603/353890.terrain differ diff --git a/public/terrain/19/858603/353891.terrain b/public/terrain/19/858603/353891.terrain new file mode 100644 index 000000000..6ac596411 Binary files /dev/null and b/public/terrain/19/858603/353891.terrain differ diff --git a/public/terrain/19/858603/353892.terrain b/public/terrain/19/858603/353892.terrain new file mode 100644 index 000000000..ed0c56c30 Binary files /dev/null and b/public/terrain/19/858603/353892.terrain differ diff --git a/public/terrain/19/858603/353893.terrain b/public/terrain/19/858603/353893.terrain new file mode 100644 index 000000000..efa56bffd Binary files /dev/null and b/public/terrain/19/858603/353893.terrain differ diff --git a/public/terrain/19/858603/353894.terrain b/public/terrain/19/858603/353894.terrain new file mode 100644 index 000000000..7c4a8c39e Binary files /dev/null and b/public/terrain/19/858603/353894.terrain differ diff --git a/public/terrain/19/858603/353895.terrain b/public/terrain/19/858603/353895.terrain new file mode 100644 index 000000000..cba4965a0 Binary files /dev/null and b/public/terrain/19/858603/353895.terrain differ diff --git a/public/terrain/19/858603/353896.terrain b/public/terrain/19/858603/353896.terrain new file mode 100644 index 000000000..12d9e6a19 Binary files /dev/null and b/public/terrain/19/858603/353896.terrain differ diff --git a/public/terrain/19/858603/353897.terrain b/public/terrain/19/858603/353897.terrain new file mode 100644 index 000000000..9d8f4b54e Binary files /dev/null and b/public/terrain/19/858603/353897.terrain differ diff --git a/public/terrain/19/858603/353898.terrain b/public/terrain/19/858603/353898.terrain new file mode 100644 index 000000000..4e4f2bebd Binary files /dev/null and b/public/terrain/19/858603/353898.terrain differ diff --git a/public/terrain/19/858603/353899.terrain b/public/terrain/19/858603/353899.terrain new file mode 100644 index 000000000..96523c108 Binary files /dev/null and b/public/terrain/19/858603/353899.terrain differ diff --git a/public/terrain/19/858603/353900.terrain b/public/terrain/19/858603/353900.terrain new file mode 100644 index 000000000..2ff3d43f0 Binary files /dev/null and b/public/terrain/19/858603/353900.terrain differ diff --git a/public/terrain/19/858603/353901.terrain b/public/terrain/19/858603/353901.terrain new file mode 100644 index 000000000..08d1a9dd1 Binary files /dev/null and b/public/terrain/19/858603/353901.terrain differ diff --git a/public/terrain/19/858603/353902.terrain b/public/terrain/19/858603/353902.terrain new file mode 100644 index 000000000..f3c697863 Binary files /dev/null and b/public/terrain/19/858603/353902.terrain differ diff --git a/public/terrain/19/858603/353903.terrain b/public/terrain/19/858603/353903.terrain new file mode 100644 index 000000000..e6c645ab2 Binary files /dev/null and b/public/terrain/19/858603/353903.terrain differ diff --git a/public/terrain/19/858603/353904.terrain b/public/terrain/19/858603/353904.terrain new file mode 100644 index 000000000..11bc06c21 Binary files /dev/null and b/public/terrain/19/858603/353904.terrain differ diff --git a/public/terrain/19/858603/353905.terrain b/public/terrain/19/858603/353905.terrain new file mode 100644 index 000000000..101e3ee2c Binary files /dev/null and b/public/terrain/19/858603/353905.terrain differ diff --git a/public/terrain/19/858603/353906.terrain b/public/terrain/19/858603/353906.terrain new file mode 100644 index 000000000..82be601a0 Binary files /dev/null and b/public/terrain/19/858603/353906.terrain differ diff --git a/public/terrain/19/858603/353907.terrain b/public/terrain/19/858603/353907.terrain new file mode 100644 index 000000000..56de38d84 Binary files /dev/null and b/public/terrain/19/858603/353907.terrain differ diff --git a/public/terrain/19/858603/353908.terrain b/public/terrain/19/858603/353908.terrain new file mode 100644 index 000000000..ee8a95075 Binary files /dev/null and b/public/terrain/19/858603/353908.terrain differ diff --git a/public/terrain/19/858603/353909.terrain b/public/terrain/19/858603/353909.terrain new file mode 100644 index 000000000..755b5f1db Binary files /dev/null and b/public/terrain/19/858603/353909.terrain differ diff --git a/public/terrain/19/858603/353910.terrain b/public/terrain/19/858603/353910.terrain new file mode 100644 index 000000000..a19fde3d1 Binary files /dev/null and b/public/terrain/19/858603/353910.terrain differ diff --git a/public/terrain/19/858603/353911.terrain b/public/terrain/19/858603/353911.terrain new file mode 100644 index 000000000..f3e6eb24a Binary files /dev/null and b/public/terrain/19/858603/353911.terrain differ diff --git a/public/terrain/19/858603/353912.terrain b/public/terrain/19/858603/353912.terrain new file mode 100644 index 000000000..001b3f19a Binary files /dev/null and b/public/terrain/19/858603/353912.terrain differ diff --git a/public/terrain/19/858603/353913.terrain b/public/terrain/19/858603/353913.terrain new file mode 100644 index 000000000..455366156 Binary files /dev/null and b/public/terrain/19/858603/353913.terrain differ diff --git a/public/terrain/19/858603/353914.terrain b/public/terrain/19/858603/353914.terrain new file mode 100644 index 000000000..0f7e2866f Binary files /dev/null and b/public/terrain/19/858603/353914.terrain differ diff --git a/public/terrain/19/858603/353915.terrain b/public/terrain/19/858603/353915.terrain new file mode 100644 index 000000000..39ba6f572 Binary files /dev/null and b/public/terrain/19/858603/353915.terrain differ diff --git a/public/terrain/19/858603/353916.terrain b/public/terrain/19/858603/353916.terrain new file mode 100644 index 000000000..c6ed16ba6 Binary files /dev/null and b/public/terrain/19/858603/353916.terrain differ diff --git a/public/terrain/19/858603/353917.terrain b/public/terrain/19/858603/353917.terrain new file mode 100644 index 000000000..a6dbc47a1 Binary files /dev/null and b/public/terrain/19/858603/353917.terrain differ diff --git a/public/terrain/19/858603/353918.terrain b/public/terrain/19/858603/353918.terrain new file mode 100644 index 000000000..c993c383f Binary files /dev/null and b/public/terrain/19/858603/353918.terrain differ diff --git a/public/terrain/19/858603/353919.terrain b/public/terrain/19/858603/353919.terrain new file mode 100644 index 000000000..beee38686 Binary files /dev/null and b/public/terrain/19/858603/353919.terrain differ diff --git a/public/terrain/19/858603/353920.terrain b/public/terrain/19/858603/353920.terrain new file mode 100644 index 000000000..d58fb6d78 Binary files /dev/null and b/public/terrain/19/858603/353920.terrain differ diff --git a/public/terrain/19/858603/353921.terrain b/public/terrain/19/858603/353921.terrain new file mode 100644 index 000000000..f11b37a3e Binary files /dev/null and b/public/terrain/19/858603/353921.terrain differ diff --git a/public/terrain/19/858603/353922.terrain b/public/terrain/19/858603/353922.terrain new file mode 100644 index 000000000..30311b53e Binary files /dev/null and b/public/terrain/19/858603/353922.terrain differ diff --git a/public/terrain/19/858603/353923.terrain b/public/terrain/19/858603/353923.terrain new file mode 100644 index 000000000..72294dd36 Binary files /dev/null and b/public/terrain/19/858603/353923.terrain differ diff --git a/public/terrain/19/858603/353924.terrain b/public/terrain/19/858603/353924.terrain new file mode 100644 index 000000000..ec56e6482 Binary files /dev/null and b/public/terrain/19/858603/353924.terrain differ diff --git a/public/terrain/19/858603/353925.terrain b/public/terrain/19/858603/353925.terrain new file mode 100644 index 000000000..f990d3440 Binary files /dev/null and b/public/terrain/19/858603/353925.terrain differ diff --git a/public/terrain/19/858603/353926.terrain b/public/terrain/19/858603/353926.terrain new file mode 100644 index 000000000..6597ce772 Binary files /dev/null and b/public/terrain/19/858603/353926.terrain differ diff --git a/public/terrain/19/858603/353927.terrain b/public/terrain/19/858603/353927.terrain new file mode 100644 index 000000000..e8d834f89 Binary files /dev/null and b/public/terrain/19/858603/353927.terrain differ diff --git a/public/terrain/19/858603/353928.terrain b/public/terrain/19/858603/353928.terrain new file mode 100644 index 000000000..b04979c5c Binary files /dev/null and b/public/terrain/19/858603/353928.terrain differ diff --git a/public/terrain/19/858603/353929.terrain b/public/terrain/19/858603/353929.terrain new file mode 100644 index 000000000..6e3999b49 Binary files /dev/null and b/public/terrain/19/858603/353929.terrain differ diff --git a/public/terrain/19/858603/353930.terrain b/public/terrain/19/858603/353930.terrain new file mode 100644 index 000000000..6394035b9 Binary files /dev/null and b/public/terrain/19/858603/353930.terrain differ diff --git a/public/terrain/19/858603/353931.terrain b/public/terrain/19/858603/353931.terrain new file mode 100644 index 000000000..6fd50571b Binary files /dev/null and b/public/terrain/19/858603/353931.terrain differ diff --git a/public/terrain/19/858603/353932.terrain b/public/terrain/19/858603/353932.terrain new file mode 100644 index 000000000..816f691fb Binary files /dev/null and b/public/terrain/19/858603/353932.terrain differ diff --git a/public/terrain/19/858603/353933.terrain b/public/terrain/19/858603/353933.terrain new file mode 100644 index 000000000..f4d738332 Binary files /dev/null and b/public/terrain/19/858603/353933.terrain differ diff --git a/public/terrain/19/858603/353934.terrain b/public/terrain/19/858603/353934.terrain new file mode 100644 index 000000000..180108ab7 Binary files /dev/null and b/public/terrain/19/858603/353934.terrain differ diff --git a/public/terrain/19/858603/353935.terrain b/public/terrain/19/858603/353935.terrain new file mode 100644 index 000000000..a5fb952d1 Binary files /dev/null and b/public/terrain/19/858603/353935.terrain differ diff --git a/public/terrain/19/858603/353936.terrain b/public/terrain/19/858603/353936.terrain new file mode 100644 index 000000000..5129e5b64 Binary files /dev/null and b/public/terrain/19/858603/353936.terrain differ diff --git a/public/terrain/19/858603/353937.terrain b/public/terrain/19/858603/353937.terrain new file mode 100644 index 000000000..3415ec784 Binary files /dev/null and b/public/terrain/19/858603/353937.terrain differ diff --git a/public/terrain/19/858603/353938.terrain b/public/terrain/19/858603/353938.terrain new file mode 100644 index 000000000..c80199274 Binary files /dev/null and b/public/terrain/19/858603/353938.terrain differ diff --git a/public/terrain/19/858603/353939.terrain b/public/terrain/19/858603/353939.terrain new file mode 100644 index 000000000..5204e5f4a Binary files /dev/null and b/public/terrain/19/858603/353939.terrain differ diff --git a/public/terrain/19/858603/353940.terrain b/public/terrain/19/858603/353940.terrain new file mode 100644 index 000000000..4dc37359c Binary files /dev/null and b/public/terrain/19/858603/353940.terrain differ diff --git a/public/terrain/19/858603/353941.terrain b/public/terrain/19/858603/353941.terrain new file mode 100644 index 000000000..b019e235e Binary files /dev/null and b/public/terrain/19/858603/353941.terrain differ diff --git a/public/terrain/19/858603/353942.terrain b/public/terrain/19/858603/353942.terrain new file mode 100644 index 000000000..45b10a0c5 Binary files /dev/null and b/public/terrain/19/858603/353942.terrain differ diff --git a/public/terrain/19/858603/353943.terrain b/public/terrain/19/858603/353943.terrain new file mode 100644 index 000000000..da3bdad86 Binary files /dev/null and b/public/terrain/19/858603/353943.terrain differ diff --git a/public/terrain/19/858603/353944.terrain b/public/terrain/19/858603/353944.terrain new file mode 100644 index 000000000..5a771d2c8 Binary files /dev/null and b/public/terrain/19/858603/353944.terrain differ diff --git a/public/terrain/19/858603/353945.terrain b/public/terrain/19/858603/353945.terrain new file mode 100644 index 000000000..1136a61b8 Binary files /dev/null and b/public/terrain/19/858603/353945.terrain differ diff --git a/public/terrain/19/858603/353946.terrain b/public/terrain/19/858603/353946.terrain new file mode 100644 index 000000000..682ce2de1 Binary files /dev/null and b/public/terrain/19/858603/353946.terrain differ diff --git a/public/terrain/19/858603/353947.terrain b/public/terrain/19/858603/353947.terrain new file mode 100644 index 000000000..49fd1343a Binary files /dev/null and b/public/terrain/19/858603/353947.terrain differ diff --git a/public/terrain/19/858603/353948.terrain b/public/terrain/19/858603/353948.terrain new file mode 100644 index 000000000..54a3becfb Binary files /dev/null and b/public/terrain/19/858603/353948.terrain differ diff --git a/public/terrain/19/858603/353949.terrain b/public/terrain/19/858603/353949.terrain new file mode 100644 index 000000000..13bfaffae Binary files /dev/null and b/public/terrain/19/858603/353949.terrain differ diff --git a/public/terrain/19/858603/353950.terrain b/public/terrain/19/858603/353950.terrain new file mode 100644 index 000000000..3f4a35214 Binary files /dev/null and b/public/terrain/19/858603/353950.terrain differ diff --git a/public/terrain/19/858603/353951.terrain b/public/terrain/19/858603/353951.terrain new file mode 100644 index 000000000..203388b73 Binary files /dev/null and b/public/terrain/19/858603/353951.terrain differ diff --git a/public/terrain/19/858603/353952.terrain b/public/terrain/19/858603/353952.terrain new file mode 100644 index 000000000..da37c88e5 Binary files /dev/null and b/public/terrain/19/858603/353952.terrain differ diff --git a/public/terrain/19/858603/353953.terrain b/public/terrain/19/858603/353953.terrain new file mode 100644 index 000000000..c032c3ace Binary files /dev/null and b/public/terrain/19/858603/353953.terrain differ diff --git a/public/terrain/19/858603/353954.terrain b/public/terrain/19/858603/353954.terrain new file mode 100644 index 000000000..693c602f4 Binary files /dev/null and b/public/terrain/19/858603/353954.terrain differ diff --git a/public/terrain/19/858603/353955.terrain b/public/terrain/19/858603/353955.terrain new file mode 100644 index 000000000..2a1f4e14b Binary files /dev/null and b/public/terrain/19/858603/353955.terrain differ diff --git a/public/terrain/19/858603/353956.terrain b/public/terrain/19/858603/353956.terrain new file mode 100644 index 000000000..3e68faf18 Binary files /dev/null and b/public/terrain/19/858603/353956.terrain differ diff --git a/public/terrain/19/858603/353957.terrain b/public/terrain/19/858603/353957.terrain new file mode 100644 index 000000000..c8db5977a Binary files /dev/null and b/public/terrain/19/858603/353957.terrain differ diff --git a/public/terrain/19/858603/353958.terrain b/public/terrain/19/858603/353958.terrain new file mode 100644 index 000000000..a5eb74bf6 Binary files /dev/null and b/public/terrain/19/858603/353958.terrain differ diff --git a/public/terrain/19/858603/353959.terrain b/public/terrain/19/858603/353959.terrain new file mode 100644 index 000000000..b2132f947 Binary files /dev/null and b/public/terrain/19/858603/353959.terrain differ diff --git a/public/terrain/19/858603/353960.terrain b/public/terrain/19/858603/353960.terrain new file mode 100644 index 000000000..dc0e1bd47 Binary files /dev/null and b/public/terrain/19/858603/353960.terrain differ diff --git a/public/terrain/19/858603/353961.terrain b/public/terrain/19/858603/353961.terrain new file mode 100644 index 000000000..003368ee0 Binary files /dev/null and b/public/terrain/19/858603/353961.terrain differ diff --git a/public/terrain/19/858603/353962.terrain b/public/terrain/19/858603/353962.terrain new file mode 100644 index 000000000..af470e391 Binary files /dev/null and b/public/terrain/19/858603/353962.terrain differ diff --git a/public/terrain/19/858603/353963.terrain b/public/terrain/19/858603/353963.terrain new file mode 100644 index 000000000..01b90e1eb Binary files /dev/null and b/public/terrain/19/858603/353963.terrain differ diff --git a/public/terrain/19/858603/353964.terrain b/public/terrain/19/858603/353964.terrain new file mode 100644 index 000000000..217473476 Binary files /dev/null and b/public/terrain/19/858603/353964.terrain differ diff --git a/public/terrain/19/858603/353965.terrain b/public/terrain/19/858603/353965.terrain new file mode 100644 index 000000000..be4ab43fb Binary files /dev/null and b/public/terrain/19/858603/353965.terrain differ diff --git a/public/terrain/19/858603/353966.terrain b/public/terrain/19/858603/353966.terrain new file mode 100644 index 000000000..c3a3d97b6 Binary files /dev/null and b/public/terrain/19/858603/353966.terrain differ diff --git a/public/terrain/19/858603/353967.terrain b/public/terrain/19/858603/353967.terrain new file mode 100644 index 000000000..b1918f32f Binary files /dev/null and b/public/terrain/19/858603/353967.terrain differ diff --git a/public/terrain/19/858603/353968.terrain b/public/terrain/19/858603/353968.terrain new file mode 100644 index 000000000..8d20ef491 Binary files /dev/null and b/public/terrain/19/858603/353968.terrain differ diff --git a/public/terrain/19/858603/353969.terrain b/public/terrain/19/858603/353969.terrain new file mode 100644 index 000000000..06bae7f0b Binary files /dev/null and b/public/terrain/19/858603/353969.terrain differ diff --git a/public/terrain/19/858603/353970.terrain b/public/terrain/19/858603/353970.terrain new file mode 100644 index 000000000..14151e736 Binary files /dev/null and b/public/terrain/19/858603/353970.terrain differ diff --git a/public/terrain/19/858603/353971.terrain b/public/terrain/19/858603/353971.terrain new file mode 100644 index 000000000..483c2efaf Binary files /dev/null and b/public/terrain/19/858603/353971.terrain differ diff --git a/public/terrain/19/858603/353972.terrain b/public/terrain/19/858603/353972.terrain new file mode 100644 index 000000000..aa1cb89f1 Binary files /dev/null and b/public/terrain/19/858603/353972.terrain differ diff --git a/public/terrain/19/858603/353973.terrain b/public/terrain/19/858603/353973.terrain new file mode 100644 index 000000000..3fe4f5d5d Binary files /dev/null and b/public/terrain/19/858603/353973.terrain differ diff --git a/public/terrain/19/858603/353974.terrain b/public/terrain/19/858603/353974.terrain new file mode 100644 index 000000000..3b89f5d32 Binary files /dev/null and b/public/terrain/19/858603/353974.terrain differ diff --git a/public/terrain/19/858603/353975.terrain b/public/terrain/19/858603/353975.terrain new file mode 100644 index 000000000..a9f9e4822 Binary files /dev/null and b/public/terrain/19/858603/353975.terrain differ diff --git a/public/terrain/19/858603/353976.terrain b/public/terrain/19/858603/353976.terrain new file mode 100644 index 000000000..0f36aea64 Binary files /dev/null and b/public/terrain/19/858603/353976.terrain differ diff --git a/public/terrain/19/858603/353977.terrain b/public/terrain/19/858603/353977.terrain new file mode 100644 index 000000000..980c2c067 Binary files /dev/null and b/public/terrain/19/858603/353977.terrain differ diff --git a/public/terrain/19/858603/353978.terrain b/public/terrain/19/858603/353978.terrain new file mode 100644 index 000000000..80f842ab9 Binary files /dev/null and b/public/terrain/19/858603/353978.terrain differ diff --git a/public/terrain/19/858603/353979.terrain b/public/terrain/19/858603/353979.terrain new file mode 100644 index 000000000..df8390027 Binary files /dev/null and b/public/terrain/19/858603/353979.terrain differ diff --git a/public/terrain/19/858603/353980.terrain b/public/terrain/19/858603/353980.terrain new file mode 100644 index 000000000..b0465dfa8 Binary files /dev/null and b/public/terrain/19/858603/353980.terrain differ diff --git a/public/terrain/19/858603/353981.terrain b/public/terrain/19/858603/353981.terrain new file mode 100644 index 000000000..c8394fcf0 Binary files /dev/null and b/public/terrain/19/858603/353981.terrain differ diff --git a/public/terrain/19/858603/353982.terrain b/public/terrain/19/858603/353982.terrain new file mode 100644 index 000000000..ada449325 Binary files /dev/null and b/public/terrain/19/858603/353982.terrain differ diff --git a/public/terrain/19/858603/353983.terrain b/public/terrain/19/858603/353983.terrain new file mode 100644 index 000000000..bf9c930e0 Binary files /dev/null and b/public/terrain/19/858603/353983.terrain differ diff --git a/public/terrain/19/858603/353984.terrain b/public/terrain/19/858603/353984.terrain new file mode 100644 index 000000000..76dd36625 Binary files /dev/null and b/public/terrain/19/858603/353984.terrain differ diff --git a/public/terrain/19/858603/353985.terrain b/public/terrain/19/858603/353985.terrain new file mode 100644 index 000000000..b6e6c79e9 Binary files /dev/null and b/public/terrain/19/858603/353985.terrain differ diff --git a/public/terrain/19/858603/353986.terrain b/public/terrain/19/858603/353986.terrain new file mode 100644 index 000000000..795437d0c Binary files /dev/null and b/public/terrain/19/858603/353986.terrain differ diff --git a/public/terrain/19/858603/353987.terrain b/public/terrain/19/858603/353987.terrain new file mode 100644 index 000000000..8decc1270 Binary files /dev/null and b/public/terrain/19/858603/353987.terrain differ diff --git a/public/terrain/19/858603/353988.terrain b/public/terrain/19/858603/353988.terrain new file mode 100644 index 000000000..60c444f8e Binary files /dev/null and b/public/terrain/19/858603/353988.terrain differ diff --git a/public/terrain/19/858603/353989.terrain b/public/terrain/19/858603/353989.terrain new file mode 100644 index 000000000..ca0682473 Binary files /dev/null and b/public/terrain/19/858603/353989.terrain differ diff --git a/public/terrain/19/858603/353990.terrain b/public/terrain/19/858603/353990.terrain new file mode 100644 index 000000000..84281c8a7 Binary files /dev/null and b/public/terrain/19/858603/353990.terrain differ diff --git a/public/terrain/19/858603/353991.terrain b/public/terrain/19/858603/353991.terrain new file mode 100644 index 000000000..6447215a5 Binary files /dev/null and b/public/terrain/19/858603/353991.terrain differ diff --git a/public/terrain/19/858603/353992.terrain b/public/terrain/19/858603/353992.terrain new file mode 100644 index 000000000..7829a65cb Binary files /dev/null and b/public/terrain/19/858603/353992.terrain differ diff --git a/public/terrain/19/858603/353993.terrain b/public/terrain/19/858603/353993.terrain new file mode 100644 index 000000000..23f212af9 Binary files /dev/null and b/public/terrain/19/858603/353993.terrain differ diff --git a/public/terrain/19/858603/353994.terrain b/public/terrain/19/858603/353994.terrain new file mode 100644 index 000000000..451daf144 Binary files /dev/null and b/public/terrain/19/858603/353994.terrain differ diff --git a/public/terrain/19/858603/353995.terrain b/public/terrain/19/858603/353995.terrain new file mode 100644 index 000000000..e593cf7a1 Binary files /dev/null and b/public/terrain/19/858603/353995.terrain differ diff --git a/public/terrain/19/858603/353996.terrain b/public/terrain/19/858603/353996.terrain new file mode 100644 index 000000000..8f575be03 Binary files /dev/null and b/public/terrain/19/858603/353996.terrain differ diff --git a/public/terrain/19/858603/353997.terrain b/public/terrain/19/858603/353997.terrain new file mode 100644 index 000000000..130cfc9cb Binary files /dev/null and b/public/terrain/19/858603/353997.terrain differ diff --git a/public/terrain/19/858603/353998.terrain b/public/terrain/19/858603/353998.terrain new file mode 100644 index 000000000..a60e62825 Binary files /dev/null and b/public/terrain/19/858603/353998.terrain differ diff --git a/public/terrain/19/858603/353999.terrain b/public/terrain/19/858603/353999.terrain new file mode 100644 index 000000000..4eb1438d4 Binary files /dev/null and b/public/terrain/19/858603/353999.terrain differ diff --git a/public/terrain/19/858603/354000.terrain b/public/terrain/19/858603/354000.terrain new file mode 100644 index 000000000..69deebc39 Binary files /dev/null and b/public/terrain/19/858603/354000.terrain differ diff --git a/public/terrain/19/858603/354001.terrain b/public/terrain/19/858603/354001.terrain new file mode 100644 index 000000000..d5e1d30ab Binary files /dev/null and b/public/terrain/19/858603/354001.terrain differ diff --git a/public/terrain/19/858603/354002.terrain b/public/terrain/19/858603/354002.terrain new file mode 100644 index 000000000..455601ff6 Binary files /dev/null and b/public/terrain/19/858603/354002.terrain differ diff --git a/public/terrain/19/858603/354003.terrain b/public/terrain/19/858603/354003.terrain new file mode 100644 index 000000000..3a7edfaee Binary files /dev/null and b/public/terrain/19/858603/354003.terrain differ diff --git a/public/terrain/19/858603/354004.terrain b/public/terrain/19/858603/354004.terrain new file mode 100644 index 000000000..a65b3f8ba Binary files /dev/null and b/public/terrain/19/858603/354004.terrain differ diff --git a/public/terrain/19/858603/354005.terrain b/public/terrain/19/858603/354005.terrain new file mode 100644 index 000000000..5aaca4f15 Binary files /dev/null and b/public/terrain/19/858603/354005.terrain differ diff --git a/public/terrain/19/858603/354006.terrain b/public/terrain/19/858603/354006.terrain new file mode 100644 index 000000000..877d6f7d1 Binary files /dev/null and b/public/terrain/19/858603/354006.terrain differ diff --git a/public/terrain/19/858603/354007.terrain b/public/terrain/19/858603/354007.terrain new file mode 100644 index 000000000..86d0c3d7d Binary files /dev/null and b/public/terrain/19/858603/354007.terrain differ diff --git a/public/terrain/19/858603/354008.terrain b/public/terrain/19/858603/354008.terrain new file mode 100644 index 000000000..0dafd40f2 Binary files /dev/null and b/public/terrain/19/858603/354008.terrain differ diff --git a/public/terrain/19/858603/354009.terrain b/public/terrain/19/858603/354009.terrain new file mode 100644 index 000000000..1f7cb67c3 Binary files /dev/null and b/public/terrain/19/858603/354009.terrain differ diff --git a/public/terrain/19/858603/354010.terrain b/public/terrain/19/858603/354010.terrain new file mode 100644 index 000000000..23f34b11d Binary files /dev/null and b/public/terrain/19/858603/354010.terrain differ diff --git a/public/terrain/19/858603/354011.terrain b/public/terrain/19/858603/354011.terrain new file mode 100644 index 000000000..0f166a6bb Binary files /dev/null and b/public/terrain/19/858603/354011.terrain differ diff --git a/public/terrain/19/858603/354012.terrain b/public/terrain/19/858603/354012.terrain new file mode 100644 index 000000000..91d46c450 Binary files /dev/null and b/public/terrain/19/858603/354012.terrain differ diff --git a/public/terrain/19/858603/354013.terrain b/public/terrain/19/858603/354013.terrain new file mode 100644 index 000000000..598ead289 Binary files /dev/null and b/public/terrain/19/858603/354013.terrain differ diff --git a/public/terrain/19/858603/354014.terrain b/public/terrain/19/858603/354014.terrain new file mode 100644 index 000000000..dee2090b0 Binary files /dev/null and b/public/terrain/19/858603/354014.terrain differ diff --git a/public/terrain/19/858603/354015.terrain b/public/terrain/19/858603/354015.terrain new file mode 100644 index 000000000..1e20069ab Binary files /dev/null and b/public/terrain/19/858603/354015.terrain differ diff --git a/public/terrain/19/858603/354016.terrain b/public/terrain/19/858603/354016.terrain new file mode 100644 index 000000000..b1919578e Binary files /dev/null and b/public/terrain/19/858603/354016.terrain differ diff --git a/public/terrain/19/858603/354017.terrain b/public/terrain/19/858603/354017.terrain new file mode 100644 index 000000000..c16261e9f Binary files /dev/null and b/public/terrain/19/858603/354017.terrain differ diff --git a/public/terrain/19/858603/354018.terrain b/public/terrain/19/858603/354018.terrain new file mode 100644 index 000000000..b73237559 Binary files /dev/null and b/public/terrain/19/858603/354018.terrain differ diff --git a/public/terrain/19/858603/354019.terrain b/public/terrain/19/858603/354019.terrain new file mode 100644 index 000000000..d90086d9f Binary files /dev/null and b/public/terrain/19/858603/354019.terrain differ diff --git a/public/terrain/19/858603/354020.terrain b/public/terrain/19/858603/354020.terrain new file mode 100644 index 000000000..72abc5024 Binary files /dev/null and b/public/terrain/19/858603/354020.terrain differ diff --git a/public/terrain/19/858603/354021.terrain b/public/terrain/19/858603/354021.terrain new file mode 100644 index 000000000..fa60a49e4 Binary files /dev/null and b/public/terrain/19/858603/354021.terrain differ diff --git a/public/terrain/19/858603/354022.terrain b/public/terrain/19/858603/354022.terrain new file mode 100644 index 000000000..d825461bf Binary files /dev/null and b/public/terrain/19/858603/354022.terrain differ diff --git a/public/terrain/19/858603/354023.terrain b/public/terrain/19/858603/354023.terrain new file mode 100644 index 000000000..34db174c9 Binary files /dev/null and b/public/terrain/19/858603/354023.terrain differ diff --git a/public/terrain/19/858603/354024.terrain b/public/terrain/19/858603/354024.terrain new file mode 100644 index 000000000..77f86843a Binary files /dev/null and b/public/terrain/19/858603/354024.terrain differ diff --git a/public/terrain/19/858603/354025.terrain b/public/terrain/19/858603/354025.terrain new file mode 100644 index 000000000..17acce735 Binary files /dev/null and b/public/terrain/19/858603/354025.terrain differ diff --git a/public/terrain/19/858603/354026.terrain b/public/terrain/19/858603/354026.terrain new file mode 100644 index 000000000..a6408296c Binary files /dev/null and b/public/terrain/19/858603/354026.terrain differ diff --git a/public/terrain/19/858603/354027.terrain b/public/terrain/19/858603/354027.terrain new file mode 100644 index 000000000..70f553834 Binary files /dev/null and b/public/terrain/19/858603/354027.terrain differ diff --git a/public/terrain/19/858603/354028.terrain b/public/terrain/19/858603/354028.terrain new file mode 100644 index 000000000..d0a096af3 Binary files /dev/null and b/public/terrain/19/858603/354028.terrain differ diff --git a/public/terrain/19/858603/354029.terrain b/public/terrain/19/858603/354029.terrain new file mode 100644 index 000000000..a7b99a63c Binary files /dev/null and b/public/terrain/19/858603/354029.terrain differ diff --git a/public/terrain/19/858603/354030.terrain b/public/terrain/19/858603/354030.terrain new file mode 100644 index 000000000..a75290703 Binary files /dev/null and b/public/terrain/19/858603/354030.terrain differ diff --git a/public/terrain/19/858603/354031.terrain b/public/terrain/19/858603/354031.terrain new file mode 100644 index 000000000..5fda98d5e Binary files /dev/null and b/public/terrain/19/858603/354031.terrain differ diff --git a/public/terrain/19/858603/354032.terrain b/public/terrain/19/858603/354032.terrain new file mode 100644 index 000000000..9f2a68747 Binary files /dev/null and b/public/terrain/19/858603/354032.terrain differ diff --git a/public/terrain/19/858603/354033.terrain b/public/terrain/19/858603/354033.terrain new file mode 100644 index 000000000..04a9d8f4c Binary files /dev/null and b/public/terrain/19/858603/354033.terrain differ diff --git a/public/terrain/19/858603/354034.terrain b/public/terrain/19/858603/354034.terrain new file mode 100644 index 000000000..209242aff Binary files /dev/null and b/public/terrain/19/858603/354034.terrain differ diff --git a/public/terrain/19/858603/354035.terrain b/public/terrain/19/858603/354035.terrain new file mode 100644 index 000000000..56d3b9f51 Binary files /dev/null and b/public/terrain/19/858603/354035.terrain differ diff --git a/public/terrain/19/858603/354036.terrain b/public/terrain/19/858603/354036.terrain new file mode 100644 index 000000000..bdd6f16ff Binary files /dev/null and b/public/terrain/19/858603/354036.terrain differ diff --git a/public/terrain/19/858603/354037.terrain b/public/terrain/19/858603/354037.terrain new file mode 100644 index 000000000..8a2a1d7d7 Binary files /dev/null and b/public/terrain/19/858603/354037.terrain differ diff --git a/public/terrain/19/858603/354038.terrain b/public/terrain/19/858603/354038.terrain new file mode 100644 index 000000000..556156a03 Binary files /dev/null and b/public/terrain/19/858603/354038.terrain differ diff --git a/public/terrain/19/858603/354039.terrain b/public/terrain/19/858603/354039.terrain new file mode 100644 index 000000000..1976edbcb Binary files /dev/null and b/public/terrain/19/858603/354039.terrain differ diff --git a/public/terrain/19/858603/354040.terrain b/public/terrain/19/858603/354040.terrain new file mode 100644 index 000000000..00ee9841c Binary files /dev/null and b/public/terrain/19/858603/354040.terrain differ diff --git a/public/terrain/19/858603/354041.terrain b/public/terrain/19/858603/354041.terrain new file mode 100644 index 000000000..d64fbc970 Binary files /dev/null and b/public/terrain/19/858603/354041.terrain differ diff --git a/public/terrain/19/858603/354042.terrain b/public/terrain/19/858603/354042.terrain new file mode 100644 index 000000000..64f3fad89 Binary files /dev/null and b/public/terrain/19/858603/354042.terrain differ diff --git a/public/terrain/19/858603/354043.terrain b/public/terrain/19/858603/354043.terrain new file mode 100644 index 000000000..7d2680b6b Binary files /dev/null and b/public/terrain/19/858603/354043.terrain differ diff --git a/public/terrain/19/858603/354044.terrain b/public/terrain/19/858603/354044.terrain new file mode 100644 index 000000000..de9a830a0 Binary files /dev/null and b/public/terrain/19/858603/354044.terrain differ diff --git a/public/terrain/19/858603/354045.terrain b/public/terrain/19/858603/354045.terrain new file mode 100644 index 000000000..125220ce7 Binary files /dev/null and b/public/terrain/19/858603/354045.terrain differ diff --git a/public/terrain/19/858603/354046.terrain b/public/terrain/19/858603/354046.terrain new file mode 100644 index 000000000..3de9eb5ab Binary files /dev/null and b/public/terrain/19/858603/354046.terrain differ diff --git a/public/terrain/19/858603/354047.terrain b/public/terrain/19/858603/354047.terrain new file mode 100644 index 000000000..f6dfa4621 Binary files /dev/null and b/public/terrain/19/858603/354047.terrain differ diff --git a/public/terrain/19/858603/354048.terrain b/public/terrain/19/858603/354048.terrain new file mode 100644 index 000000000..dfb46351d Binary files /dev/null and b/public/terrain/19/858603/354048.terrain differ diff --git a/public/terrain/19/858603/354049.terrain b/public/terrain/19/858603/354049.terrain new file mode 100644 index 000000000..5d9cc768f Binary files /dev/null and b/public/terrain/19/858603/354049.terrain differ diff --git a/public/terrain/19/858603/354050.terrain b/public/terrain/19/858603/354050.terrain new file mode 100644 index 000000000..f96bbb146 Binary files /dev/null and b/public/terrain/19/858603/354050.terrain differ diff --git a/public/terrain/19/858603/354051.terrain b/public/terrain/19/858603/354051.terrain new file mode 100644 index 000000000..67611f9b9 Binary files /dev/null and b/public/terrain/19/858603/354051.terrain differ diff --git a/public/terrain/19/858603/354052.terrain b/public/terrain/19/858603/354052.terrain new file mode 100644 index 000000000..5571fb6de Binary files /dev/null and b/public/terrain/19/858603/354052.terrain differ diff --git a/public/terrain/19/858603/354053.terrain b/public/terrain/19/858603/354053.terrain new file mode 100644 index 000000000..1e3d849d7 Binary files /dev/null and b/public/terrain/19/858603/354053.terrain differ diff --git a/public/terrain/19/858603/354054.terrain b/public/terrain/19/858603/354054.terrain new file mode 100644 index 000000000..4e6d8febc Binary files /dev/null and b/public/terrain/19/858603/354054.terrain differ diff --git a/public/terrain/19/858603/354055.terrain b/public/terrain/19/858603/354055.terrain new file mode 100644 index 000000000..10f3d4d17 Binary files /dev/null and b/public/terrain/19/858603/354055.terrain differ diff --git a/public/terrain/19/858603/354056.terrain b/public/terrain/19/858603/354056.terrain new file mode 100644 index 000000000..30747d4b0 Binary files /dev/null and b/public/terrain/19/858603/354056.terrain differ diff --git a/public/terrain/19/858603/354057.terrain b/public/terrain/19/858603/354057.terrain new file mode 100644 index 000000000..9a0255504 Binary files /dev/null and b/public/terrain/19/858603/354057.terrain differ diff --git a/public/terrain/19/858603/354058.terrain b/public/terrain/19/858603/354058.terrain new file mode 100644 index 000000000..44d617dc1 Binary files /dev/null and b/public/terrain/19/858603/354058.terrain differ diff --git a/public/terrain/19/858603/354059.terrain b/public/terrain/19/858603/354059.terrain new file mode 100644 index 000000000..c5d19eb9f Binary files /dev/null and b/public/terrain/19/858603/354059.terrain differ diff --git a/public/terrain/19/858604/353743.terrain b/public/terrain/19/858604/353743.terrain new file mode 100644 index 000000000..656e09338 Binary files /dev/null and b/public/terrain/19/858604/353743.terrain differ diff --git a/public/terrain/19/858604/353744.terrain b/public/terrain/19/858604/353744.terrain new file mode 100644 index 000000000..dc2407e31 Binary files /dev/null and b/public/terrain/19/858604/353744.terrain differ diff --git a/public/terrain/19/858604/353745.terrain b/public/terrain/19/858604/353745.terrain new file mode 100644 index 000000000..b78f050d4 Binary files /dev/null and b/public/terrain/19/858604/353745.terrain differ diff --git a/public/terrain/19/858604/353746.terrain b/public/terrain/19/858604/353746.terrain new file mode 100644 index 000000000..9b7668d2a Binary files /dev/null and b/public/terrain/19/858604/353746.terrain differ diff --git a/public/terrain/19/858604/353747.terrain b/public/terrain/19/858604/353747.terrain new file mode 100644 index 000000000..0e7343bd4 Binary files /dev/null and b/public/terrain/19/858604/353747.terrain differ diff --git a/public/terrain/19/858604/353748.terrain b/public/terrain/19/858604/353748.terrain new file mode 100644 index 000000000..28b0ad938 Binary files /dev/null and b/public/terrain/19/858604/353748.terrain differ diff --git a/public/terrain/19/858604/353749.terrain b/public/terrain/19/858604/353749.terrain new file mode 100644 index 000000000..0b6778851 Binary files /dev/null and b/public/terrain/19/858604/353749.terrain differ diff --git a/public/terrain/19/858604/353750.terrain b/public/terrain/19/858604/353750.terrain new file mode 100644 index 000000000..84f8e83c7 Binary files /dev/null and b/public/terrain/19/858604/353750.terrain differ diff --git a/public/terrain/19/858604/353751.terrain b/public/terrain/19/858604/353751.terrain new file mode 100644 index 000000000..dab98fb38 Binary files /dev/null and b/public/terrain/19/858604/353751.terrain differ diff --git a/public/terrain/19/858604/353752.terrain b/public/terrain/19/858604/353752.terrain new file mode 100644 index 000000000..31a10c12d Binary files /dev/null and b/public/terrain/19/858604/353752.terrain differ diff --git a/public/terrain/19/858604/353753.terrain b/public/terrain/19/858604/353753.terrain new file mode 100644 index 000000000..5d78124ac Binary files /dev/null and b/public/terrain/19/858604/353753.terrain differ diff --git a/public/terrain/19/858604/353754.terrain b/public/terrain/19/858604/353754.terrain new file mode 100644 index 000000000..c85c3a52f Binary files /dev/null and b/public/terrain/19/858604/353754.terrain differ diff --git a/public/terrain/19/858604/353755.terrain b/public/terrain/19/858604/353755.terrain new file mode 100644 index 000000000..6357fadbb Binary files /dev/null and b/public/terrain/19/858604/353755.terrain differ diff --git a/public/terrain/19/858604/353756.terrain b/public/terrain/19/858604/353756.terrain new file mode 100644 index 000000000..6cafb92d3 Binary files /dev/null and b/public/terrain/19/858604/353756.terrain differ diff --git a/public/terrain/19/858604/353757.terrain b/public/terrain/19/858604/353757.terrain new file mode 100644 index 000000000..376b63524 Binary files /dev/null and b/public/terrain/19/858604/353757.terrain differ diff --git a/public/terrain/19/858604/353758.terrain b/public/terrain/19/858604/353758.terrain new file mode 100644 index 000000000..2d31460c7 Binary files /dev/null and b/public/terrain/19/858604/353758.terrain differ diff --git a/public/terrain/19/858604/353759.terrain b/public/terrain/19/858604/353759.terrain new file mode 100644 index 000000000..74a677b0d Binary files /dev/null and b/public/terrain/19/858604/353759.terrain differ diff --git a/public/terrain/19/858604/353760.terrain b/public/terrain/19/858604/353760.terrain new file mode 100644 index 000000000..aac23d4e4 Binary files /dev/null and b/public/terrain/19/858604/353760.terrain differ diff --git a/public/terrain/19/858604/353761.terrain b/public/terrain/19/858604/353761.terrain new file mode 100644 index 000000000..4ba34bf38 Binary files /dev/null and b/public/terrain/19/858604/353761.terrain differ diff --git a/public/terrain/19/858604/353762.terrain b/public/terrain/19/858604/353762.terrain new file mode 100644 index 000000000..b7b8b049f Binary files /dev/null and b/public/terrain/19/858604/353762.terrain differ diff --git a/public/terrain/19/858604/353763.terrain b/public/terrain/19/858604/353763.terrain new file mode 100644 index 000000000..cb09b8e12 Binary files /dev/null and b/public/terrain/19/858604/353763.terrain differ diff --git a/public/terrain/19/858604/353764.terrain b/public/terrain/19/858604/353764.terrain new file mode 100644 index 000000000..d118a1b3a Binary files /dev/null and b/public/terrain/19/858604/353764.terrain differ diff --git a/public/terrain/19/858604/353765.terrain b/public/terrain/19/858604/353765.terrain new file mode 100644 index 000000000..c61118d31 Binary files /dev/null and b/public/terrain/19/858604/353765.terrain differ diff --git a/public/terrain/19/858604/353766.terrain b/public/terrain/19/858604/353766.terrain new file mode 100644 index 000000000..09f0b93bb Binary files /dev/null and b/public/terrain/19/858604/353766.terrain differ diff --git a/public/terrain/19/858604/353767.terrain b/public/terrain/19/858604/353767.terrain new file mode 100644 index 000000000..f5e330b5d Binary files /dev/null and b/public/terrain/19/858604/353767.terrain differ diff --git a/public/terrain/19/858604/353768.terrain b/public/terrain/19/858604/353768.terrain new file mode 100644 index 000000000..4225f472e Binary files /dev/null and b/public/terrain/19/858604/353768.terrain differ diff --git a/public/terrain/19/858604/353769.terrain b/public/terrain/19/858604/353769.terrain new file mode 100644 index 000000000..675c3fdf9 Binary files /dev/null and b/public/terrain/19/858604/353769.terrain differ diff --git a/public/terrain/19/858604/353770.terrain b/public/terrain/19/858604/353770.terrain new file mode 100644 index 000000000..5111b94c2 Binary files /dev/null and b/public/terrain/19/858604/353770.terrain differ diff --git a/public/terrain/19/858604/353771.terrain b/public/terrain/19/858604/353771.terrain new file mode 100644 index 000000000..195e6b7fa Binary files /dev/null and b/public/terrain/19/858604/353771.terrain differ diff --git a/public/terrain/19/858604/353772.terrain b/public/terrain/19/858604/353772.terrain new file mode 100644 index 000000000..cd996ca63 Binary files /dev/null and b/public/terrain/19/858604/353772.terrain differ diff --git a/public/terrain/19/858604/353773.terrain b/public/terrain/19/858604/353773.terrain new file mode 100644 index 000000000..3511ed0d1 Binary files /dev/null and b/public/terrain/19/858604/353773.terrain differ diff --git a/public/terrain/19/858604/353774.terrain b/public/terrain/19/858604/353774.terrain new file mode 100644 index 000000000..5ebbc463e Binary files /dev/null and b/public/terrain/19/858604/353774.terrain differ diff --git a/public/terrain/19/858604/353775.terrain b/public/terrain/19/858604/353775.terrain new file mode 100644 index 000000000..47add5368 Binary files /dev/null and b/public/terrain/19/858604/353775.terrain differ diff --git a/public/terrain/19/858604/353776.terrain b/public/terrain/19/858604/353776.terrain new file mode 100644 index 000000000..5d3026472 Binary files /dev/null and b/public/terrain/19/858604/353776.terrain differ diff --git a/public/terrain/19/858604/353777.terrain b/public/terrain/19/858604/353777.terrain new file mode 100644 index 000000000..25288544d Binary files /dev/null and b/public/terrain/19/858604/353777.terrain differ diff --git a/public/terrain/19/858604/353778.terrain b/public/terrain/19/858604/353778.terrain new file mode 100644 index 000000000..315e57788 Binary files /dev/null and b/public/terrain/19/858604/353778.terrain differ diff --git a/public/terrain/19/858604/353779.terrain b/public/terrain/19/858604/353779.terrain new file mode 100644 index 000000000..e6f09ad8f Binary files /dev/null and b/public/terrain/19/858604/353779.terrain differ diff --git a/public/terrain/19/858604/353780.terrain b/public/terrain/19/858604/353780.terrain new file mode 100644 index 000000000..7f2974b5e Binary files /dev/null and b/public/terrain/19/858604/353780.terrain differ diff --git a/public/terrain/19/858604/353781.terrain b/public/terrain/19/858604/353781.terrain new file mode 100644 index 000000000..1852d45c8 Binary files /dev/null and b/public/terrain/19/858604/353781.terrain differ diff --git a/public/terrain/19/858604/353782.terrain b/public/terrain/19/858604/353782.terrain new file mode 100644 index 000000000..74f4293c8 Binary files /dev/null and b/public/terrain/19/858604/353782.terrain differ diff --git a/public/terrain/19/858604/353783.terrain b/public/terrain/19/858604/353783.terrain new file mode 100644 index 000000000..f9db329e8 Binary files /dev/null and b/public/terrain/19/858604/353783.terrain differ diff --git a/public/terrain/19/858604/353784.terrain b/public/terrain/19/858604/353784.terrain new file mode 100644 index 000000000..79d695aa6 Binary files /dev/null and b/public/terrain/19/858604/353784.terrain differ diff --git a/public/terrain/19/858604/353785.terrain b/public/terrain/19/858604/353785.terrain new file mode 100644 index 000000000..a14b1c3f8 Binary files /dev/null and b/public/terrain/19/858604/353785.terrain differ diff --git a/public/terrain/19/858604/353786.terrain b/public/terrain/19/858604/353786.terrain new file mode 100644 index 000000000..591b6a2be Binary files /dev/null and b/public/terrain/19/858604/353786.terrain differ diff --git a/public/terrain/19/858604/353787.terrain b/public/terrain/19/858604/353787.terrain new file mode 100644 index 000000000..80ccfa6b0 Binary files /dev/null and b/public/terrain/19/858604/353787.terrain differ diff --git a/public/terrain/19/858604/353788.terrain b/public/terrain/19/858604/353788.terrain new file mode 100644 index 000000000..28ab7c0ce Binary files /dev/null and b/public/terrain/19/858604/353788.terrain differ diff --git a/public/terrain/19/858604/353789.terrain b/public/terrain/19/858604/353789.terrain new file mode 100644 index 000000000..ccdbf9252 Binary files /dev/null and b/public/terrain/19/858604/353789.terrain differ diff --git a/public/terrain/19/858604/353790.terrain b/public/terrain/19/858604/353790.terrain new file mode 100644 index 000000000..eb1eabdc2 Binary files /dev/null and b/public/terrain/19/858604/353790.terrain differ diff --git a/public/terrain/19/858604/353791.terrain b/public/terrain/19/858604/353791.terrain new file mode 100644 index 000000000..9956e2cba Binary files /dev/null and b/public/terrain/19/858604/353791.terrain differ diff --git a/public/terrain/19/858604/353792.terrain b/public/terrain/19/858604/353792.terrain new file mode 100644 index 000000000..a97ad50c5 Binary files /dev/null and b/public/terrain/19/858604/353792.terrain differ diff --git a/public/terrain/19/858604/353793.terrain b/public/terrain/19/858604/353793.terrain new file mode 100644 index 000000000..627513e1d Binary files /dev/null and b/public/terrain/19/858604/353793.terrain differ diff --git a/public/terrain/19/858604/353794.terrain b/public/terrain/19/858604/353794.terrain new file mode 100644 index 000000000..16adf2a36 Binary files /dev/null and b/public/terrain/19/858604/353794.terrain differ diff --git a/public/terrain/19/858604/353795.terrain b/public/terrain/19/858604/353795.terrain new file mode 100644 index 000000000..663ae5d2a Binary files /dev/null and b/public/terrain/19/858604/353795.terrain differ diff --git a/public/terrain/19/858604/353796.terrain b/public/terrain/19/858604/353796.terrain new file mode 100644 index 000000000..6043aa857 Binary files /dev/null and b/public/terrain/19/858604/353796.terrain differ diff --git a/public/terrain/19/858604/353797.terrain b/public/terrain/19/858604/353797.terrain new file mode 100644 index 000000000..c4962a8d9 Binary files /dev/null and b/public/terrain/19/858604/353797.terrain differ diff --git a/public/terrain/19/858604/353798.terrain b/public/terrain/19/858604/353798.terrain new file mode 100644 index 000000000..c62f2c371 Binary files /dev/null and b/public/terrain/19/858604/353798.terrain differ diff --git a/public/terrain/19/858604/353799.terrain b/public/terrain/19/858604/353799.terrain new file mode 100644 index 000000000..8d5bfb546 Binary files /dev/null and b/public/terrain/19/858604/353799.terrain differ diff --git a/public/terrain/19/858604/353800.terrain b/public/terrain/19/858604/353800.terrain new file mode 100644 index 000000000..f14c62e0e Binary files /dev/null and b/public/terrain/19/858604/353800.terrain differ diff --git a/public/terrain/19/858604/353801.terrain b/public/terrain/19/858604/353801.terrain new file mode 100644 index 000000000..e539da7d4 Binary files /dev/null and b/public/terrain/19/858604/353801.terrain differ diff --git a/public/terrain/19/858604/353802.terrain b/public/terrain/19/858604/353802.terrain new file mode 100644 index 000000000..47fd666a6 Binary files /dev/null and b/public/terrain/19/858604/353802.terrain differ diff --git a/public/terrain/19/858604/353803.terrain b/public/terrain/19/858604/353803.terrain new file mode 100644 index 000000000..8a13f225d Binary files /dev/null and b/public/terrain/19/858604/353803.terrain differ diff --git a/public/terrain/19/858604/353804.terrain b/public/terrain/19/858604/353804.terrain new file mode 100644 index 000000000..31ef3bdd1 Binary files /dev/null and b/public/terrain/19/858604/353804.terrain differ diff --git a/public/terrain/19/858604/353805.terrain b/public/terrain/19/858604/353805.terrain new file mode 100644 index 000000000..c9220a0f7 Binary files /dev/null and b/public/terrain/19/858604/353805.terrain differ diff --git a/public/terrain/19/858604/353806.terrain b/public/terrain/19/858604/353806.terrain new file mode 100644 index 000000000..8117a47fc Binary files /dev/null and b/public/terrain/19/858604/353806.terrain differ diff --git a/public/terrain/19/858604/353807.terrain b/public/terrain/19/858604/353807.terrain new file mode 100644 index 000000000..f131e7209 Binary files /dev/null and b/public/terrain/19/858604/353807.terrain differ diff --git a/public/terrain/19/858604/353808.terrain b/public/terrain/19/858604/353808.terrain new file mode 100644 index 000000000..86d50a030 Binary files /dev/null and b/public/terrain/19/858604/353808.terrain differ diff --git a/public/terrain/19/858604/353809.terrain b/public/terrain/19/858604/353809.terrain new file mode 100644 index 000000000..d09f72b0f Binary files /dev/null and b/public/terrain/19/858604/353809.terrain differ diff --git a/public/terrain/19/858604/353810.terrain b/public/terrain/19/858604/353810.terrain new file mode 100644 index 000000000..45dcda611 Binary files /dev/null and b/public/terrain/19/858604/353810.terrain differ diff --git a/public/terrain/19/858604/353811.terrain b/public/terrain/19/858604/353811.terrain new file mode 100644 index 000000000..d6959442f Binary files /dev/null and b/public/terrain/19/858604/353811.terrain differ diff --git a/public/terrain/19/858604/353812.terrain b/public/terrain/19/858604/353812.terrain new file mode 100644 index 000000000..73352d4fe Binary files /dev/null and b/public/terrain/19/858604/353812.terrain differ diff --git a/public/terrain/19/858604/353813.terrain b/public/terrain/19/858604/353813.terrain new file mode 100644 index 000000000..8b84fa693 Binary files /dev/null and b/public/terrain/19/858604/353813.terrain differ diff --git a/public/terrain/19/858604/353814.terrain b/public/terrain/19/858604/353814.terrain new file mode 100644 index 000000000..f6ba9a1f5 Binary files /dev/null and b/public/terrain/19/858604/353814.terrain differ diff --git a/public/terrain/19/858604/353815.terrain b/public/terrain/19/858604/353815.terrain new file mode 100644 index 000000000..6b79e3e83 Binary files /dev/null and b/public/terrain/19/858604/353815.terrain differ diff --git a/public/terrain/19/858604/353816.terrain b/public/terrain/19/858604/353816.terrain new file mode 100644 index 000000000..094293d24 Binary files /dev/null and b/public/terrain/19/858604/353816.terrain differ diff --git a/public/terrain/19/858604/353817.terrain b/public/terrain/19/858604/353817.terrain new file mode 100644 index 000000000..810ea9685 Binary files /dev/null and b/public/terrain/19/858604/353817.terrain differ diff --git a/public/terrain/19/858604/353818.terrain b/public/terrain/19/858604/353818.terrain new file mode 100644 index 000000000..12e438be2 Binary files /dev/null and b/public/terrain/19/858604/353818.terrain differ diff --git a/public/terrain/19/858604/353819.terrain b/public/terrain/19/858604/353819.terrain new file mode 100644 index 000000000..091c91415 Binary files /dev/null and b/public/terrain/19/858604/353819.terrain differ diff --git a/public/terrain/19/858604/353820.terrain b/public/terrain/19/858604/353820.terrain new file mode 100644 index 000000000..841d1155c Binary files /dev/null and b/public/terrain/19/858604/353820.terrain differ diff --git a/public/terrain/19/858604/353821.terrain b/public/terrain/19/858604/353821.terrain new file mode 100644 index 000000000..9ce3f846a Binary files /dev/null and b/public/terrain/19/858604/353821.terrain differ diff --git a/public/terrain/19/858604/353822.terrain b/public/terrain/19/858604/353822.terrain new file mode 100644 index 000000000..398e1dc35 Binary files /dev/null and b/public/terrain/19/858604/353822.terrain differ diff --git a/public/terrain/19/858604/353823.terrain b/public/terrain/19/858604/353823.terrain new file mode 100644 index 000000000..9ffe9b894 Binary files /dev/null and b/public/terrain/19/858604/353823.terrain differ diff --git a/public/terrain/19/858604/353824.terrain b/public/terrain/19/858604/353824.terrain new file mode 100644 index 000000000..29a84a04b Binary files /dev/null and b/public/terrain/19/858604/353824.terrain differ diff --git a/public/terrain/19/858604/353825.terrain b/public/terrain/19/858604/353825.terrain new file mode 100644 index 000000000..3aa5ec5ad Binary files /dev/null and b/public/terrain/19/858604/353825.terrain differ diff --git a/public/terrain/19/858604/353826.terrain b/public/terrain/19/858604/353826.terrain new file mode 100644 index 000000000..fd70ed792 Binary files /dev/null and b/public/terrain/19/858604/353826.terrain differ diff --git a/public/terrain/19/858604/353827.terrain b/public/terrain/19/858604/353827.terrain new file mode 100644 index 000000000..f4e48cf49 Binary files /dev/null and b/public/terrain/19/858604/353827.terrain differ diff --git a/public/terrain/19/858604/353828.terrain b/public/terrain/19/858604/353828.terrain new file mode 100644 index 000000000..a9ec59c19 Binary files /dev/null and b/public/terrain/19/858604/353828.terrain differ diff --git a/public/terrain/19/858604/353829.terrain b/public/terrain/19/858604/353829.terrain new file mode 100644 index 000000000..3e670c2ef Binary files /dev/null and b/public/terrain/19/858604/353829.terrain differ diff --git a/public/terrain/19/858604/353830.terrain b/public/terrain/19/858604/353830.terrain new file mode 100644 index 000000000..3bd6e5259 Binary files /dev/null and b/public/terrain/19/858604/353830.terrain differ diff --git a/public/terrain/19/858604/353831.terrain b/public/terrain/19/858604/353831.terrain new file mode 100644 index 000000000..2b815fd2f Binary files /dev/null and b/public/terrain/19/858604/353831.terrain differ diff --git a/public/terrain/19/858604/353832.terrain b/public/terrain/19/858604/353832.terrain new file mode 100644 index 000000000..bd2bf6257 Binary files /dev/null and b/public/terrain/19/858604/353832.terrain differ diff --git a/public/terrain/19/858604/353833.terrain b/public/terrain/19/858604/353833.terrain new file mode 100644 index 000000000..f2dba8531 Binary files /dev/null and b/public/terrain/19/858604/353833.terrain differ diff --git a/public/terrain/19/858604/353834.terrain b/public/terrain/19/858604/353834.terrain new file mode 100644 index 000000000..80d762332 Binary files /dev/null and b/public/terrain/19/858604/353834.terrain differ diff --git a/public/terrain/19/858604/353835.terrain b/public/terrain/19/858604/353835.terrain new file mode 100644 index 000000000..66c7354f7 Binary files /dev/null and b/public/terrain/19/858604/353835.terrain differ diff --git a/public/terrain/19/858604/353836.terrain b/public/terrain/19/858604/353836.terrain new file mode 100644 index 000000000..8e3c479dc Binary files /dev/null and b/public/terrain/19/858604/353836.terrain differ diff --git a/public/terrain/19/858604/353837.terrain b/public/terrain/19/858604/353837.terrain new file mode 100644 index 000000000..3ab926e78 Binary files /dev/null and b/public/terrain/19/858604/353837.terrain differ diff --git a/public/terrain/19/858604/353838.terrain b/public/terrain/19/858604/353838.terrain new file mode 100644 index 000000000..29a60a5fa Binary files /dev/null and b/public/terrain/19/858604/353838.terrain differ diff --git a/public/terrain/19/858604/353839.terrain b/public/terrain/19/858604/353839.terrain new file mode 100644 index 000000000..224a3fb70 Binary files /dev/null and b/public/terrain/19/858604/353839.terrain differ diff --git a/public/terrain/19/858604/353840.terrain b/public/terrain/19/858604/353840.terrain new file mode 100644 index 000000000..9292dcdcc Binary files /dev/null and b/public/terrain/19/858604/353840.terrain differ diff --git a/public/terrain/19/858604/353841.terrain b/public/terrain/19/858604/353841.terrain new file mode 100644 index 000000000..643f41f96 Binary files /dev/null and b/public/terrain/19/858604/353841.terrain differ diff --git a/public/terrain/19/858604/353842.terrain b/public/terrain/19/858604/353842.terrain new file mode 100644 index 000000000..b12e6c122 Binary files /dev/null and b/public/terrain/19/858604/353842.terrain differ diff --git a/public/terrain/19/858604/353843.terrain b/public/terrain/19/858604/353843.terrain new file mode 100644 index 000000000..6049c1acd Binary files /dev/null and b/public/terrain/19/858604/353843.terrain differ diff --git a/public/terrain/19/858604/353844.terrain b/public/terrain/19/858604/353844.terrain new file mode 100644 index 000000000..930d9eb84 Binary files /dev/null and b/public/terrain/19/858604/353844.terrain differ diff --git a/public/terrain/19/858604/353845.terrain b/public/terrain/19/858604/353845.terrain new file mode 100644 index 000000000..c998a3b15 Binary files /dev/null and b/public/terrain/19/858604/353845.terrain differ diff --git a/public/terrain/19/858604/353846.terrain b/public/terrain/19/858604/353846.terrain new file mode 100644 index 000000000..fcdf4e536 Binary files /dev/null and b/public/terrain/19/858604/353846.terrain differ diff --git a/public/terrain/19/858604/353847.terrain b/public/terrain/19/858604/353847.terrain new file mode 100644 index 000000000..f3e3fb295 Binary files /dev/null and b/public/terrain/19/858604/353847.terrain differ diff --git a/public/terrain/19/858604/353848.terrain b/public/terrain/19/858604/353848.terrain new file mode 100644 index 000000000..b7b0f36ff Binary files /dev/null and b/public/terrain/19/858604/353848.terrain differ diff --git a/public/terrain/19/858604/353849.terrain b/public/terrain/19/858604/353849.terrain new file mode 100644 index 000000000..76ec7cad9 Binary files /dev/null and b/public/terrain/19/858604/353849.terrain differ diff --git a/public/terrain/19/858604/353850.terrain b/public/terrain/19/858604/353850.terrain new file mode 100644 index 000000000..b2f662dd5 Binary files /dev/null and b/public/terrain/19/858604/353850.terrain differ diff --git a/public/terrain/19/858604/353851.terrain b/public/terrain/19/858604/353851.terrain new file mode 100644 index 000000000..99d7cf279 Binary files /dev/null and b/public/terrain/19/858604/353851.terrain differ diff --git a/public/terrain/19/858604/353852.terrain b/public/terrain/19/858604/353852.terrain new file mode 100644 index 000000000..2520b6c20 Binary files /dev/null and b/public/terrain/19/858604/353852.terrain differ diff --git a/public/terrain/19/858604/353853.terrain b/public/terrain/19/858604/353853.terrain new file mode 100644 index 000000000..a2873a460 Binary files /dev/null and b/public/terrain/19/858604/353853.terrain differ diff --git a/public/terrain/19/858604/353854.terrain b/public/terrain/19/858604/353854.terrain new file mode 100644 index 000000000..09aa1f905 Binary files /dev/null and b/public/terrain/19/858604/353854.terrain differ diff --git a/public/terrain/19/858604/353855.terrain b/public/terrain/19/858604/353855.terrain new file mode 100644 index 000000000..dabc60b30 Binary files /dev/null and b/public/terrain/19/858604/353855.terrain differ diff --git a/public/terrain/19/858604/353856.terrain b/public/terrain/19/858604/353856.terrain new file mode 100644 index 000000000..0bc29ebe7 Binary files /dev/null and b/public/terrain/19/858604/353856.terrain differ diff --git a/public/terrain/19/858604/353857.terrain b/public/terrain/19/858604/353857.terrain new file mode 100644 index 000000000..f714447c3 Binary files /dev/null and b/public/terrain/19/858604/353857.terrain differ diff --git a/public/terrain/19/858604/353858.terrain b/public/terrain/19/858604/353858.terrain new file mode 100644 index 000000000..683d49e5d Binary files /dev/null and b/public/terrain/19/858604/353858.terrain differ diff --git a/public/terrain/19/858604/353859.terrain b/public/terrain/19/858604/353859.terrain new file mode 100644 index 000000000..af5f1b3ab Binary files /dev/null and b/public/terrain/19/858604/353859.terrain differ diff --git a/public/terrain/19/858604/353860.terrain b/public/terrain/19/858604/353860.terrain new file mode 100644 index 000000000..9649faf25 Binary files /dev/null and b/public/terrain/19/858604/353860.terrain differ diff --git a/public/terrain/19/858604/353861.terrain b/public/terrain/19/858604/353861.terrain new file mode 100644 index 000000000..9e957bd31 Binary files /dev/null and b/public/terrain/19/858604/353861.terrain differ diff --git a/public/terrain/19/858604/353862.terrain b/public/terrain/19/858604/353862.terrain new file mode 100644 index 000000000..1b84d4edf Binary files /dev/null and b/public/terrain/19/858604/353862.terrain differ diff --git a/public/terrain/19/858604/353863.terrain b/public/terrain/19/858604/353863.terrain new file mode 100644 index 000000000..4d90c857b Binary files /dev/null and b/public/terrain/19/858604/353863.terrain differ diff --git a/public/terrain/19/858604/353864.terrain b/public/terrain/19/858604/353864.terrain new file mode 100644 index 000000000..a1e10127d Binary files /dev/null and b/public/terrain/19/858604/353864.terrain differ diff --git a/public/terrain/19/858604/353865.terrain b/public/terrain/19/858604/353865.terrain new file mode 100644 index 000000000..88504d8ad Binary files /dev/null and b/public/terrain/19/858604/353865.terrain differ diff --git a/public/terrain/19/858604/353866.terrain b/public/terrain/19/858604/353866.terrain new file mode 100644 index 000000000..0d8a3d0c3 Binary files /dev/null and b/public/terrain/19/858604/353866.terrain differ diff --git a/public/terrain/19/858604/353867.terrain b/public/terrain/19/858604/353867.terrain new file mode 100644 index 000000000..f9c093f04 Binary files /dev/null and b/public/terrain/19/858604/353867.terrain differ diff --git a/public/terrain/19/858604/353868.terrain b/public/terrain/19/858604/353868.terrain new file mode 100644 index 000000000..c54ba9d15 Binary files /dev/null and b/public/terrain/19/858604/353868.terrain differ diff --git a/public/terrain/19/858604/353869.terrain b/public/terrain/19/858604/353869.terrain new file mode 100644 index 000000000..d5545d07c Binary files /dev/null and b/public/terrain/19/858604/353869.terrain differ diff --git a/public/terrain/19/858604/353870.terrain b/public/terrain/19/858604/353870.terrain new file mode 100644 index 000000000..7b954fa5a Binary files /dev/null and b/public/terrain/19/858604/353870.terrain differ diff --git a/public/terrain/19/858604/353871.terrain b/public/terrain/19/858604/353871.terrain new file mode 100644 index 000000000..db7a2f171 Binary files /dev/null and b/public/terrain/19/858604/353871.terrain differ diff --git a/public/terrain/19/858604/353872.terrain b/public/terrain/19/858604/353872.terrain new file mode 100644 index 000000000..c98616584 Binary files /dev/null and b/public/terrain/19/858604/353872.terrain differ diff --git a/public/terrain/19/858604/353873.terrain b/public/terrain/19/858604/353873.terrain new file mode 100644 index 000000000..3c0277630 Binary files /dev/null and b/public/terrain/19/858604/353873.terrain differ diff --git a/public/terrain/19/858604/353874.terrain b/public/terrain/19/858604/353874.terrain new file mode 100644 index 000000000..71751a40f Binary files /dev/null and b/public/terrain/19/858604/353874.terrain differ diff --git a/public/terrain/19/858604/353875.terrain b/public/terrain/19/858604/353875.terrain new file mode 100644 index 000000000..3de8f3dd0 Binary files /dev/null and b/public/terrain/19/858604/353875.terrain differ diff --git a/public/terrain/19/858604/353876.terrain b/public/terrain/19/858604/353876.terrain new file mode 100644 index 000000000..d3af9550e Binary files /dev/null and b/public/terrain/19/858604/353876.terrain differ diff --git a/public/terrain/19/858604/353877.terrain b/public/terrain/19/858604/353877.terrain new file mode 100644 index 000000000..4d454781d Binary files /dev/null and b/public/terrain/19/858604/353877.terrain differ diff --git a/public/terrain/19/858604/353878.terrain b/public/terrain/19/858604/353878.terrain new file mode 100644 index 000000000..218a5efa5 Binary files /dev/null and b/public/terrain/19/858604/353878.terrain differ diff --git a/public/terrain/19/858604/353879.terrain b/public/terrain/19/858604/353879.terrain new file mode 100644 index 000000000..7a72c16aa Binary files /dev/null and b/public/terrain/19/858604/353879.terrain differ diff --git a/public/terrain/19/858604/353880.terrain b/public/terrain/19/858604/353880.terrain new file mode 100644 index 000000000..d41986e4c Binary files /dev/null and b/public/terrain/19/858604/353880.terrain differ diff --git a/public/terrain/19/858604/353881.terrain b/public/terrain/19/858604/353881.terrain new file mode 100644 index 000000000..fdb4ea760 Binary files /dev/null and b/public/terrain/19/858604/353881.terrain differ diff --git a/public/terrain/19/858604/353882.terrain b/public/terrain/19/858604/353882.terrain new file mode 100644 index 000000000..f879cb83c Binary files /dev/null and b/public/terrain/19/858604/353882.terrain differ diff --git a/public/terrain/19/858604/353883.terrain b/public/terrain/19/858604/353883.terrain new file mode 100644 index 000000000..bb5654582 Binary files /dev/null and b/public/terrain/19/858604/353883.terrain differ diff --git a/public/terrain/19/858604/353884.terrain b/public/terrain/19/858604/353884.terrain new file mode 100644 index 000000000..6a803d7ab Binary files /dev/null and b/public/terrain/19/858604/353884.terrain differ diff --git a/public/terrain/19/858604/353885.terrain b/public/terrain/19/858604/353885.terrain new file mode 100644 index 000000000..e320e3336 Binary files /dev/null and b/public/terrain/19/858604/353885.terrain differ diff --git a/public/terrain/19/858604/353886.terrain b/public/terrain/19/858604/353886.terrain new file mode 100644 index 000000000..f32ff9c58 Binary files /dev/null and b/public/terrain/19/858604/353886.terrain differ diff --git a/public/terrain/19/858604/353887.terrain b/public/terrain/19/858604/353887.terrain new file mode 100644 index 000000000..9359fea71 Binary files /dev/null and b/public/terrain/19/858604/353887.terrain differ diff --git a/public/terrain/19/858604/353888.terrain b/public/terrain/19/858604/353888.terrain new file mode 100644 index 000000000..a013c00c3 Binary files /dev/null and b/public/terrain/19/858604/353888.terrain differ diff --git a/public/terrain/19/858604/353889.terrain b/public/terrain/19/858604/353889.terrain new file mode 100644 index 000000000..1b9602c44 Binary files /dev/null and b/public/terrain/19/858604/353889.terrain differ diff --git a/public/terrain/19/858604/353890.terrain b/public/terrain/19/858604/353890.terrain new file mode 100644 index 000000000..fc223e5db Binary files /dev/null and b/public/terrain/19/858604/353890.terrain differ diff --git a/public/terrain/19/858604/353891.terrain b/public/terrain/19/858604/353891.terrain new file mode 100644 index 000000000..636d04844 Binary files /dev/null and b/public/terrain/19/858604/353891.terrain differ diff --git a/public/terrain/19/858604/353892.terrain b/public/terrain/19/858604/353892.terrain new file mode 100644 index 000000000..2fbd2ee72 Binary files /dev/null and b/public/terrain/19/858604/353892.terrain differ diff --git a/public/terrain/19/858604/353893.terrain b/public/terrain/19/858604/353893.terrain new file mode 100644 index 000000000..50ea6db6b Binary files /dev/null and b/public/terrain/19/858604/353893.terrain differ diff --git a/public/terrain/19/858604/353894.terrain b/public/terrain/19/858604/353894.terrain new file mode 100644 index 000000000..3698d46b2 Binary files /dev/null and b/public/terrain/19/858604/353894.terrain differ diff --git a/public/terrain/19/858604/353895.terrain b/public/terrain/19/858604/353895.terrain new file mode 100644 index 000000000..033058f9d Binary files /dev/null and b/public/terrain/19/858604/353895.terrain differ diff --git a/public/terrain/19/858604/353896.terrain b/public/terrain/19/858604/353896.terrain new file mode 100644 index 000000000..d18615466 Binary files /dev/null and b/public/terrain/19/858604/353896.terrain differ diff --git a/public/terrain/19/858604/353897.terrain b/public/terrain/19/858604/353897.terrain new file mode 100644 index 000000000..3fdd218c7 Binary files /dev/null and b/public/terrain/19/858604/353897.terrain differ diff --git a/public/terrain/19/858604/353898.terrain b/public/terrain/19/858604/353898.terrain new file mode 100644 index 000000000..35af5312a Binary files /dev/null and b/public/terrain/19/858604/353898.terrain differ diff --git a/public/terrain/19/858604/353899.terrain b/public/terrain/19/858604/353899.terrain new file mode 100644 index 000000000..46aecaaba Binary files /dev/null and b/public/terrain/19/858604/353899.terrain differ diff --git a/public/terrain/19/858604/353900.terrain b/public/terrain/19/858604/353900.terrain new file mode 100644 index 000000000..1fed4cecd Binary files /dev/null and b/public/terrain/19/858604/353900.terrain differ diff --git a/public/terrain/19/858604/353901.terrain b/public/terrain/19/858604/353901.terrain new file mode 100644 index 000000000..aa0f4e8e6 Binary files /dev/null and b/public/terrain/19/858604/353901.terrain differ diff --git a/public/terrain/19/858604/353902.terrain b/public/terrain/19/858604/353902.terrain new file mode 100644 index 000000000..8e8f8f1c2 Binary files /dev/null and b/public/terrain/19/858604/353902.terrain differ diff --git a/public/terrain/19/858604/353903.terrain b/public/terrain/19/858604/353903.terrain new file mode 100644 index 000000000..d4a6f7a52 Binary files /dev/null and b/public/terrain/19/858604/353903.terrain differ diff --git a/public/terrain/19/858604/353904.terrain b/public/terrain/19/858604/353904.terrain new file mode 100644 index 000000000..9134dfe2b Binary files /dev/null and b/public/terrain/19/858604/353904.terrain differ diff --git a/public/terrain/19/858604/353905.terrain b/public/terrain/19/858604/353905.terrain new file mode 100644 index 000000000..7aee962e2 Binary files /dev/null and b/public/terrain/19/858604/353905.terrain differ diff --git a/public/terrain/19/858604/353906.terrain b/public/terrain/19/858604/353906.terrain new file mode 100644 index 000000000..e61fdca9e Binary files /dev/null and b/public/terrain/19/858604/353906.terrain differ diff --git a/public/terrain/19/858604/353907.terrain b/public/terrain/19/858604/353907.terrain new file mode 100644 index 000000000..32050010f Binary files /dev/null and b/public/terrain/19/858604/353907.terrain differ diff --git a/public/terrain/19/858604/353908.terrain b/public/terrain/19/858604/353908.terrain new file mode 100644 index 000000000..6c28f4859 Binary files /dev/null and b/public/terrain/19/858604/353908.terrain differ diff --git a/public/terrain/19/858604/353909.terrain b/public/terrain/19/858604/353909.terrain new file mode 100644 index 000000000..3ba6162b3 Binary files /dev/null and b/public/terrain/19/858604/353909.terrain differ diff --git a/public/terrain/19/858604/353910.terrain b/public/terrain/19/858604/353910.terrain new file mode 100644 index 000000000..6f7c688c8 Binary files /dev/null and b/public/terrain/19/858604/353910.terrain differ diff --git a/public/terrain/19/858604/353911.terrain b/public/terrain/19/858604/353911.terrain new file mode 100644 index 000000000..e1e53f382 Binary files /dev/null and b/public/terrain/19/858604/353911.terrain differ diff --git a/public/terrain/19/858604/353912.terrain b/public/terrain/19/858604/353912.terrain new file mode 100644 index 000000000..3122ccdd2 Binary files /dev/null and b/public/terrain/19/858604/353912.terrain differ diff --git a/public/terrain/19/858604/353913.terrain b/public/terrain/19/858604/353913.terrain new file mode 100644 index 000000000..cdf3f6109 Binary files /dev/null and b/public/terrain/19/858604/353913.terrain differ diff --git a/public/terrain/19/858604/353914.terrain b/public/terrain/19/858604/353914.terrain new file mode 100644 index 000000000..dc0c45efd Binary files /dev/null and b/public/terrain/19/858604/353914.terrain differ diff --git a/public/terrain/19/858604/353915.terrain b/public/terrain/19/858604/353915.terrain new file mode 100644 index 000000000..fc9317e8a Binary files /dev/null and b/public/terrain/19/858604/353915.terrain differ diff --git a/public/terrain/19/858604/353916.terrain b/public/terrain/19/858604/353916.terrain new file mode 100644 index 000000000..88c71546d Binary files /dev/null and b/public/terrain/19/858604/353916.terrain differ diff --git a/public/terrain/19/858604/353917.terrain b/public/terrain/19/858604/353917.terrain new file mode 100644 index 000000000..dfd81c690 Binary files /dev/null and b/public/terrain/19/858604/353917.terrain differ diff --git a/public/terrain/19/858604/353918.terrain b/public/terrain/19/858604/353918.terrain new file mode 100644 index 000000000..0adba7262 Binary files /dev/null and b/public/terrain/19/858604/353918.terrain differ diff --git a/public/terrain/19/858604/353919.terrain b/public/terrain/19/858604/353919.terrain new file mode 100644 index 000000000..09e29fc86 Binary files /dev/null and b/public/terrain/19/858604/353919.terrain differ diff --git a/public/terrain/19/858604/353920.terrain b/public/terrain/19/858604/353920.terrain new file mode 100644 index 000000000..7e6ae5d6c Binary files /dev/null and b/public/terrain/19/858604/353920.terrain differ diff --git a/public/terrain/19/858604/353921.terrain b/public/terrain/19/858604/353921.terrain new file mode 100644 index 000000000..e9f3beed5 Binary files /dev/null and b/public/terrain/19/858604/353921.terrain differ diff --git a/public/terrain/19/858604/353922.terrain b/public/terrain/19/858604/353922.terrain new file mode 100644 index 000000000..e4bfc3ce5 Binary files /dev/null and b/public/terrain/19/858604/353922.terrain differ diff --git a/public/terrain/19/858604/353923.terrain b/public/terrain/19/858604/353923.terrain new file mode 100644 index 000000000..84206a104 Binary files /dev/null and b/public/terrain/19/858604/353923.terrain differ diff --git a/public/terrain/19/858604/353924.terrain b/public/terrain/19/858604/353924.terrain new file mode 100644 index 000000000..349961484 Binary files /dev/null and b/public/terrain/19/858604/353924.terrain differ diff --git a/public/terrain/19/858604/353925.terrain b/public/terrain/19/858604/353925.terrain new file mode 100644 index 000000000..98a213995 Binary files /dev/null and b/public/terrain/19/858604/353925.terrain differ diff --git a/public/terrain/19/858604/353926.terrain b/public/terrain/19/858604/353926.terrain new file mode 100644 index 000000000..9a972c931 Binary files /dev/null and b/public/terrain/19/858604/353926.terrain differ diff --git a/public/terrain/19/858604/353927.terrain b/public/terrain/19/858604/353927.terrain new file mode 100644 index 000000000..91e0e40d3 Binary files /dev/null and b/public/terrain/19/858604/353927.terrain differ diff --git a/public/terrain/19/858604/353928.terrain b/public/terrain/19/858604/353928.terrain new file mode 100644 index 000000000..0a9a0c704 Binary files /dev/null and b/public/terrain/19/858604/353928.terrain differ diff --git a/public/terrain/19/858604/353929.terrain b/public/terrain/19/858604/353929.terrain new file mode 100644 index 000000000..77b86c1a1 Binary files /dev/null and b/public/terrain/19/858604/353929.terrain differ diff --git a/public/terrain/19/858604/353930.terrain b/public/terrain/19/858604/353930.terrain new file mode 100644 index 000000000..28f01ee03 Binary files /dev/null and b/public/terrain/19/858604/353930.terrain differ diff --git a/public/terrain/19/858604/353931.terrain b/public/terrain/19/858604/353931.terrain new file mode 100644 index 000000000..e75d1a44a Binary files /dev/null and b/public/terrain/19/858604/353931.terrain differ diff --git a/public/terrain/19/858604/353932.terrain b/public/terrain/19/858604/353932.terrain new file mode 100644 index 000000000..47ac9ae75 Binary files /dev/null and b/public/terrain/19/858604/353932.terrain differ diff --git a/public/terrain/19/858604/353933.terrain b/public/terrain/19/858604/353933.terrain new file mode 100644 index 000000000..c714e37e6 Binary files /dev/null and b/public/terrain/19/858604/353933.terrain differ diff --git a/public/terrain/19/858604/353934.terrain b/public/terrain/19/858604/353934.terrain new file mode 100644 index 000000000..b47973dcb Binary files /dev/null and b/public/terrain/19/858604/353934.terrain differ diff --git a/public/terrain/19/858604/353935.terrain b/public/terrain/19/858604/353935.terrain new file mode 100644 index 000000000..83486919f Binary files /dev/null and b/public/terrain/19/858604/353935.terrain differ diff --git a/public/terrain/19/858604/353936.terrain b/public/terrain/19/858604/353936.terrain new file mode 100644 index 000000000..5e497d644 Binary files /dev/null and b/public/terrain/19/858604/353936.terrain differ diff --git a/public/terrain/19/858604/353937.terrain b/public/terrain/19/858604/353937.terrain new file mode 100644 index 000000000..39c881bf2 Binary files /dev/null and b/public/terrain/19/858604/353937.terrain differ diff --git a/public/terrain/19/858604/353938.terrain b/public/terrain/19/858604/353938.terrain new file mode 100644 index 000000000..fa6acd9f4 Binary files /dev/null and b/public/terrain/19/858604/353938.terrain differ diff --git a/public/terrain/19/858604/353939.terrain b/public/terrain/19/858604/353939.terrain new file mode 100644 index 000000000..5a0f7f392 Binary files /dev/null and b/public/terrain/19/858604/353939.terrain differ diff --git a/public/terrain/19/858604/353940.terrain b/public/terrain/19/858604/353940.terrain new file mode 100644 index 000000000..c2cf70c1e Binary files /dev/null and b/public/terrain/19/858604/353940.terrain differ diff --git a/public/terrain/19/858604/353941.terrain b/public/terrain/19/858604/353941.terrain new file mode 100644 index 000000000..ecfe2e380 Binary files /dev/null and b/public/terrain/19/858604/353941.terrain differ diff --git a/public/terrain/19/858604/353942.terrain b/public/terrain/19/858604/353942.terrain new file mode 100644 index 000000000..ea22ac4c4 Binary files /dev/null and b/public/terrain/19/858604/353942.terrain differ diff --git a/public/terrain/19/858604/353943.terrain b/public/terrain/19/858604/353943.terrain new file mode 100644 index 000000000..0024335a3 Binary files /dev/null and b/public/terrain/19/858604/353943.terrain differ diff --git a/public/terrain/19/858604/353944.terrain b/public/terrain/19/858604/353944.terrain new file mode 100644 index 000000000..86d082ab2 Binary files /dev/null and b/public/terrain/19/858604/353944.terrain differ diff --git a/public/terrain/19/858604/353945.terrain b/public/terrain/19/858604/353945.terrain new file mode 100644 index 000000000..3c4e08dd5 Binary files /dev/null and b/public/terrain/19/858604/353945.terrain differ diff --git a/public/terrain/19/858604/353946.terrain b/public/terrain/19/858604/353946.terrain new file mode 100644 index 000000000..f1096e5e6 Binary files /dev/null and b/public/terrain/19/858604/353946.terrain differ diff --git a/public/terrain/19/858604/353947.terrain b/public/terrain/19/858604/353947.terrain new file mode 100644 index 000000000..11674c044 Binary files /dev/null and b/public/terrain/19/858604/353947.terrain differ diff --git a/public/terrain/19/858604/353948.terrain b/public/terrain/19/858604/353948.terrain new file mode 100644 index 000000000..7a7a871eb Binary files /dev/null and b/public/terrain/19/858604/353948.terrain differ diff --git a/public/terrain/19/858604/353949.terrain b/public/terrain/19/858604/353949.terrain new file mode 100644 index 000000000..6f238427a Binary files /dev/null and b/public/terrain/19/858604/353949.terrain differ diff --git a/public/terrain/19/858604/353950.terrain b/public/terrain/19/858604/353950.terrain new file mode 100644 index 000000000..f471972ff Binary files /dev/null and b/public/terrain/19/858604/353950.terrain differ diff --git a/public/terrain/19/858604/353951.terrain b/public/terrain/19/858604/353951.terrain new file mode 100644 index 000000000..d1a97d667 Binary files /dev/null and b/public/terrain/19/858604/353951.terrain differ diff --git a/public/terrain/19/858604/353952.terrain b/public/terrain/19/858604/353952.terrain new file mode 100644 index 000000000..2c346bd92 Binary files /dev/null and b/public/terrain/19/858604/353952.terrain differ diff --git a/public/terrain/19/858604/353953.terrain b/public/terrain/19/858604/353953.terrain new file mode 100644 index 000000000..667e969a9 Binary files /dev/null and b/public/terrain/19/858604/353953.terrain differ diff --git a/public/terrain/19/858604/353954.terrain b/public/terrain/19/858604/353954.terrain new file mode 100644 index 000000000..9b3cc3794 Binary files /dev/null and b/public/terrain/19/858604/353954.terrain differ diff --git a/public/terrain/19/858604/353955.terrain b/public/terrain/19/858604/353955.terrain new file mode 100644 index 000000000..513db830f Binary files /dev/null and b/public/terrain/19/858604/353955.terrain differ diff --git a/public/terrain/19/858604/353956.terrain b/public/terrain/19/858604/353956.terrain new file mode 100644 index 000000000..9e9ca11f3 Binary files /dev/null and b/public/terrain/19/858604/353956.terrain differ diff --git a/public/terrain/19/858604/353957.terrain b/public/terrain/19/858604/353957.terrain new file mode 100644 index 000000000..3bcd8c5a9 Binary files /dev/null and b/public/terrain/19/858604/353957.terrain differ diff --git a/public/terrain/19/858604/353958.terrain b/public/terrain/19/858604/353958.terrain new file mode 100644 index 000000000..968abd69f Binary files /dev/null and b/public/terrain/19/858604/353958.terrain differ diff --git a/public/terrain/19/858604/353959.terrain b/public/terrain/19/858604/353959.terrain new file mode 100644 index 000000000..dd3455846 Binary files /dev/null and b/public/terrain/19/858604/353959.terrain differ diff --git a/public/terrain/19/858604/353960.terrain b/public/terrain/19/858604/353960.terrain new file mode 100644 index 000000000..d7f0b468b Binary files /dev/null and b/public/terrain/19/858604/353960.terrain differ diff --git a/public/terrain/19/858604/353961.terrain b/public/terrain/19/858604/353961.terrain new file mode 100644 index 000000000..a26cd5221 Binary files /dev/null and b/public/terrain/19/858604/353961.terrain differ diff --git a/public/terrain/19/858604/353962.terrain b/public/terrain/19/858604/353962.terrain new file mode 100644 index 000000000..0e4f102ac Binary files /dev/null and b/public/terrain/19/858604/353962.terrain differ diff --git a/public/terrain/19/858604/353963.terrain b/public/terrain/19/858604/353963.terrain new file mode 100644 index 000000000..e2cf01735 Binary files /dev/null and b/public/terrain/19/858604/353963.terrain differ diff --git a/public/terrain/19/858604/353964.terrain b/public/terrain/19/858604/353964.terrain new file mode 100644 index 000000000..bae030fa8 Binary files /dev/null and b/public/terrain/19/858604/353964.terrain differ diff --git a/public/terrain/19/858604/353965.terrain b/public/terrain/19/858604/353965.terrain new file mode 100644 index 000000000..8bba1676b Binary files /dev/null and b/public/terrain/19/858604/353965.terrain differ diff --git a/public/terrain/19/858604/353966.terrain b/public/terrain/19/858604/353966.terrain new file mode 100644 index 000000000..f71b7d751 Binary files /dev/null and b/public/terrain/19/858604/353966.terrain differ diff --git a/public/terrain/19/858604/353967.terrain b/public/terrain/19/858604/353967.terrain new file mode 100644 index 000000000..3f9110df9 Binary files /dev/null and b/public/terrain/19/858604/353967.terrain differ diff --git a/public/terrain/19/858604/353968.terrain b/public/terrain/19/858604/353968.terrain new file mode 100644 index 000000000..c5cd46c52 Binary files /dev/null and b/public/terrain/19/858604/353968.terrain differ diff --git a/public/terrain/19/858604/353969.terrain b/public/terrain/19/858604/353969.terrain new file mode 100644 index 000000000..4c3eb4d78 Binary files /dev/null and b/public/terrain/19/858604/353969.terrain differ diff --git a/public/terrain/19/858604/353970.terrain b/public/terrain/19/858604/353970.terrain new file mode 100644 index 000000000..7fb1039d6 Binary files /dev/null and b/public/terrain/19/858604/353970.terrain differ diff --git a/public/terrain/19/858604/353971.terrain b/public/terrain/19/858604/353971.terrain new file mode 100644 index 000000000..fab9c5b19 Binary files /dev/null and b/public/terrain/19/858604/353971.terrain differ diff --git a/public/terrain/19/858604/353972.terrain b/public/terrain/19/858604/353972.terrain new file mode 100644 index 000000000..4cf4f7e62 Binary files /dev/null and b/public/terrain/19/858604/353972.terrain differ diff --git a/public/terrain/19/858604/353973.terrain b/public/terrain/19/858604/353973.terrain new file mode 100644 index 000000000..e3cf94780 Binary files /dev/null and b/public/terrain/19/858604/353973.terrain differ diff --git a/public/terrain/19/858604/353974.terrain b/public/terrain/19/858604/353974.terrain new file mode 100644 index 000000000..547ad46c4 Binary files /dev/null and b/public/terrain/19/858604/353974.terrain differ diff --git a/public/terrain/19/858604/353975.terrain b/public/terrain/19/858604/353975.terrain new file mode 100644 index 000000000..b8ef640ea Binary files /dev/null and b/public/terrain/19/858604/353975.terrain differ diff --git a/public/terrain/19/858604/353976.terrain b/public/terrain/19/858604/353976.terrain new file mode 100644 index 000000000..a23509ce9 Binary files /dev/null and b/public/terrain/19/858604/353976.terrain differ diff --git a/public/terrain/19/858604/353977.terrain b/public/terrain/19/858604/353977.terrain new file mode 100644 index 000000000..6d1cf018a Binary files /dev/null and b/public/terrain/19/858604/353977.terrain differ diff --git a/public/terrain/19/858604/353978.terrain b/public/terrain/19/858604/353978.terrain new file mode 100644 index 000000000..b3a0cb17e Binary files /dev/null and b/public/terrain/19/858604/353978.terrain differ diff --git a/public/terrain/19/858604/353979.terrain b/public/terrain/19/858604/353979.terrain new file mode 100644 index 000000000..7520ad895 Binary files /dev/null and b/public/terrain/19/858604/353979.terrain differ diff --git a/public/terrain/19/858604/353980.terrain b/public/terrain/19/858604/353980.terrain new file mode 100644 index 000000000..a2e990e20 Binary files /dev/null and b/public/terrain/19/858604/353980.terrain differ diff --git a/public/terrain/19/858604/353981.terrain b/public/terrain/19/858604/353981.terrain new file mode 100644 index 000000000..0c175fe18 Binary files /dev/null and b/public/terrain/19/858604/353981.terrain differ diff --git a/public/terrain/19/858604/353982.terrain b/public/terrain/19/858604/353982.terrain new file mode 100644 index 000000000..4ecc2d914 Binary files /dev/null and b/public/terrain/19/858604/353982.terrain differ diff --git a/public/terrain/19/858604/353983.terrain b/public/terrain/19/858604/353983.terrain new file mode 100644 index 000000000..014fbc617 Binary files /dev/null and b/public/terrain/19/858604/353983.terrain differ diff --git a/public/terrain/19/858604/353984.terrain b/public/terrain/19/858604/353984.terrain new file mode 100644 index 000000000..84c97d754 Binary files /dev/null and b/public/terrain/19/858604/353984.terrain differ diff --git a/public/terrain/19/858604/353985.terrain b/public/terrain/19/858604/353985.terrain new file mode 100644 index 000000000..c90f18722 Binary files /dev/null and b/public/terrain/19/858604/353985.terrain differ diff --git a/public/terrain/19/858604/353986.terrain b/public/terrain/19/858604/353986.terrain new file mode 100644 index 000000000..f7c91e0a5 Binary files /dev/null and b/public/terrain/19/858604/353986.terrain differ diff --git a/public/terrain/19/858604/353987.terrain b/public/terrain/19/858604/353987.terrain new file mode 100644 index 000000000..9c577673e Binary files /dev/null and b/public/terrain/19/858604/353987.terrain differ diff --git a/public/terrain/19/858604/353988.terrain b/public/terrain/19/858604/353988.terrain new file mode 100644 index 000000000..e2516270e Binary files /dev/null and b/public/terrain/19/858604/353988.terrain differ diff --git a/public/terrain/19/858604/353989.terrain b/public/terrain/19/858604/353989.terrain new file mode 100644 index 000000000..92d63753a Binary files /dev/null and b/public/terrain/19/858604/353989.terrain differ diff --git a/public/terrain/19/858604/353990.terrain b/public/terrain/19/858604/353990.terrain new file mode 100644 index 000000000..f575e6fed Binary files /dev/null and b/public/terrain/19/858604/353990.terrain differ diff --git a/public/terrain/19/858604/353991.terrain b/public/terrain/19/858604/353991.terrain new file mode 100644 index 000000000..bb0e29d13 Binary files /dev/null and b/public/terrain/19/858604/353991.terrain differ diff --git a/public/terrain/19/858604/353992.terrain b/public/terrain/19/858604/353992.terrain new file mode 100644 index 000000000..8fe1e240f Binary files /dev/null and b/public/terrain/19/858604/353992.terrain differ diff --git a/public/terrain/19/858604/353993.terrain b/public/terrain/19/858604/353993.terrain new file mode 100644 index 000000000..40a4e4e74 Binary files /dev/null and b/public/terrain/19/858604/353993.terrain differ diff --git a/public/terrain/19/858604/353994.terrain b/public/terrain/19/858604/353994.terrain new file mode 100644 index 000000000..1a169f90e Binary files /dev/null and b/public/terrain/19/858604/353994.terrain differ diff --git a/public/terrain/19/858604/353995.terrain b/public/terrain/19/858604/353995.terrain new file mode 100644 index 000000000..45da5b9a7 Binary files /dev/null and b/public/terrain/19/858604/353995.terrain differ diff --git a/public/terrain/19/858604/353996.terrain b/public/terrain/19/858604/353996.terrain new file mode 100644 index 000000000..0218de595 Binary files /dev/null and b/public/terrain/19/858604/353996.terrain differ diff --git a/public/terrain/19/858604/353997.terrain b/public/terrain/19/858604/353997.terrain new file mode 100644 index 000000000..7d148d023 Binary files /dev/null and b/public/terrain/19/858604/353997.terrain differ diff --git a/public/terrain/19/858604/353998.terrain b/public/terrain/19/858604/353998.terrain new file mode 100644 index 000000000..4513b2ffe Binary files /dev/null and b/public/terrain/19/858604/353998.terrain differ diff --git a/public/terrain/19/858604/353999.terrain b/public/terrain/19/858604/353999.terrain new file mode 100644 index 000000000..64f5aa4b6 Binary files /dev/null and b/public/terrain/19/858604/353999.terrain differ diff --git a/public/terrain/19/858604/354000.terrain b/public/terrain/19/858604/354000.terrain new file mode 100644 index 000000000..ddd8a0331 Binary files /dev/null and b/public/terrain/19/858604/354000.terrain differ diff --git a/public/terrain/19/858604/354001.terrain b/public/terrain/19/858604/354001.terrain new file mode 100644 index 000000000..dc90dcf81 Binary files /dev/null and b/public/terrain/19/858604/354001.terrain differ diff --git a/public/terrain/19/858604/354002.terrain b/public/terrain/19/858604/354002.terrain new file mode 100644 index 000000000..280aba39b Binary files /dev/null and b/public/terrain/19/858604/354002.terrain differ diff --git a/public/terrain/19/858604/354003.terrain b/public/terrain/19/858604/354003.terrain new file mode 100644 index 000000000..dd4004a32 Binary files /dev/null and b/public/terrain/19/858604/354003.terrain differ diff --git a/public/terrain/19/858604/354004.terrain b/public/terrain/19/858604/354004.terrain new file mode 100644 index 000000000..4f02c230c Binary files /dev/null and b/public/terrain/19/858604/354004.terrain differ diff --git a/public/terrain/19/858604/354005.terrain b/public/terrain/19/858604/354005.terrain new file mode 100644 index 000000000..2e49ee926 Binary files /dev/null and b/public/terrain/19/858604/354005.terrain differ diff --git a/public/terrain/19/858604/354006.terrain b/public/terrain/19/858604/354006.terrain new file mode 100644 index 000000000..ca15a693c Binary files /dev/null and b/public/terrain/19/858604/354006.terrain differ diff --git a/public/terrain/19/858604/354007.terrain b/public/terrain/19/858604/354007.terrain new file mode 100644 index 000000000..d1428e19f Binary files /dev/null and b/public/terrain/19/858604/354007.terrain differ diff --git a/public/terrain/19/858604/354008.terrain b/public/terrain/19/858604/354008.terrain new file mode 100644 index 000000000..71fcede30 Binary files /dev/null and b/public/terrain/19/858604/354008.terrain differ diff --git a/public/terrain/19/858604/354009.terrain b/public/terrain/19/858604/354009.terrain new file mode 100644 index 000000000..3d56e7326 Binary files /dev/null and b/public/terrain/19/858604/354009.terrain differ diff --git a/public/terrain/19/858604/354010.terrain b/public/terrain/19/858604/354010.terrain new file mode 100644 index 000000000..0d0dfb1ae Binary files /dev/null and b/public/terrain/19/858604/354010.terrain differ diff --git a/public/terrain/19/858604/354011.terrain b/public/terrain/19/858604/354011.terrain new file mode 100644 index 000000000..65f23290c Binary files /dev/null and b/public/terrain/19/858604/354011.terrain differ diff --git a/public/terrain/19/858604/354012.terrain b/public/terrain/19/858604/354012.terrain new file mode 100644 index 000000000..f597e25fd Binary files /dev/null and b/public/terrain/19/858604/354012.terrain differ diff --git a/public/terrain/19/858604/354013.terrain b/public/terrain/19/858604/354013.terrain new file mode 100644 index 000000000..4d2cdd365 Binary files /dev/null and b/public/terrain/19/858604/354013.terrain differ diff --git a/public/terrain/19/858604/354014.terrain b/public/terrain/19/858604/354014.terrain new file mode 100644 index 000000000..98654f315 Binary files /dev/null and b/public/terrain/19/858604/354014.terrain differ diff --git a/public/terrain/19/858604/354015.terrain b/public/terrain/19/858604/354015.terrain new file mode 100644 index 000000000..652a707e8 Binary files /dev/null and b/public/terrain/19/858604/354015.terrain differ diff --git a/public/terrain/19/858604/354016.terrain b/public/terrain/19/858604/354016.terrain new file mode 100644 index 000000000..17524d95f Binary files /dev/null and b/public/terrain/19/858604/354016.terrain differ diff --git a/public/terrain/19/858604/354017.terrain b/public/terrain/19/858604/354017.terrain new file mode 100644 index 000000000..3f03684eb Binary files /dev/null and b/public/terrain/19/858604/354017.terrain differ diff --git a/public/terrain/19/858604/354018.terrain b/public/terrain/19/858604/354018.terrain new file mode 100644 index 000000000..4c9b0ef3e Binary files /dev/null and b/public/terrain/19/858604/354018.terrain differ diff --git a/public/terrain/19/858604/354019.terrain b/public/terrain/19/858604/354019.terrain new file mode 100644 index 000000000..6f94995e6 Binary files /dev/null and b/public/terrain/19/858604/354019.terrain differ diff --git a/public/terrain/19/858604/354020.terrain b/public/terrain/19/858604/354020.terrain new file mode 100644 index 000000000..717de3c0f Binary files /dev/null and b/public/terrain/19/858604/354020.terrain differ diff --git a/public/terrain/19/858604/354021.terrain b/public/terrain/19/858604/354021.terrain new file mode 100644 index 000000000..37561dfeb Binary files /dev/null and b/public/terrain/19/858604/354021.terrain differ diff --git a/public/terrain/19/858604/354022.terrain b/public/terrain/19/858604/354022.terrain new file mode 100644 index 000000000..4ec108ee8 Binary files /dev/null and b/public/terrain/19/858604/354022.terrain differ diff --git a/public/terrain/19/858604/354023.terrain b/public/terrain/19/858604/354023.terrain new file mode 100644 index 000000000..bf5347f3e Binary files /dev/null and b/public/terrain/19/858604/354023.terrain differ diff --git a/public/terrain/19/858604/354024.terrain b/public/terrain/19/858604/354024.terrain new file mode 100644 index 000000000..9c42510d0 Binary files /dev/null and b/public/terrain/19/858604/354024.terrain differ diff --git a/public/terrain/19/858604/354025.terrain b/public/terrain/19/858604/354025.terrain new file mode 100644 index 000000000..787edb76c Binary files /dev/null and b/public/terrain/19/858604/354025.terrain differ diff --git a/public/terrain/19/858604/354026.terrain b/public/terrain/19/858604/354026.terrain new file mode 100644 index 000000000..4a85ddc2a Binary files /dev/null and b/public/terrain/19/858604/354026.terrain differ diff --git a/public/terrain/19/858604/354027.terrain b/public/terrain/19/858604/354027.terrain new file mode 100644 index 000000000..efcb9a99f Binary files /dev/null and b/public/terrain/19/858604/354027.terrain differ diff --git a/public/terrain/19/858604/354028.terrain b/public/terrain/19/858604/354028.terrain new file mode 100644 index 000000000..61d0ecef7 Binary files /dev/null and b/public/terrain/19/858604/354028.terrain differ diff --git a/public/terrain/19/858604/354029.terrain b/public/terrain/19/858604/354029.terrain new file mode 100644 index 000000000..0f8629a4d Binary files /dev/null and b/public/terrain/19/858604/354029.terrain differ diff --git a/public/terrain/19/858604/354030.terrain b/public/terrain/19/858604/354030.terrain new file mode 100644 index 000000000..a3be21145 Binary files /dev/null and b/public/terrain/19/858604/354030.terrain differ diff --git a/public/terrain/19/858604/354031.terrain b/public/terrain/19/858604/354031.terrain new file mode 100644 index 000000000..8efb18545 Binary files /dev/null and b/public/terrain/19/858604/354031.terrain differ diff --git a/public/terrain/19/858604/354032.terrain b/public/terrain/19/858604/354032.terrain new file mode 100644 index 000000000..13275ac59 Binary files /dev/null and b/public/terrain/19/858604/354032.terrain differ diff --git a/public/terrain/19/858604/354033.terrain b/public/terrain/19/858604/354033.terrain new file mode 100644 index 000000000..2aaff4ca6 Binary files /dev/null and b/public/terrain/19/858604/354033.terrain differ diff --git a/public/terrain/19/858604/354034.terrain b/public/terrain/19/858604/354034.terrain new file mode 100644 index 000000000..bc9bc6209 Binary files /dev/null and b/public/terrain/19/858604/354034.terrain differ diff --git a/public/terrain/19/858604/354035.terrain b/public/terrain/19/858604/354035.terrain new file mode 100644 index 000000000..f3e141cac Binary files /dev/null and b/public/terrain/19/858604/354035.terrain differ diff --git a/public/terrain/19/858604/354036.terrain b/public/terrain/19/858604/354036.terrain new file mode 100644 index 000000000..763ee8aef Binary files /dev/null and b/public/terrain/19/858604/354036.terrain differ diff --git a/public/terrain/19/858604/354037.terrain b/public/terrain/19/858604/354037.terrain new file mode 100644 index 000000000..3bb24cf8e Binary files /dev/null and b/public/terrain/19/858604/354037.terrain differ diff --git a/public/terrain/19/858604/354038.terrain b/public/terrain/19/858604/354038.terrain new file mode 100644 index 000000000..abed1fa9e Binary files /dev/null and b/public/terrain/19/858604/354038.terrain differ diff --git a/public/terrain/19/858604/354039.terrain b/public/terrain/19/858604/354039.terrain new file mode 100644 index 000000000..6b179a22e Binary files /dev/null and b/public/terrain/19/858604/354039.terrain differ diff --git a/public/terrain/19/858604/354040.terrain b/public/terrain/19/858604/354040.terrain new file mode 100644 index 000000000..12f3a8742 Binary files /dev/null and b/public/terrain/19/858604/354040.terrain differ diff --git a/public/terrain/19/858604/354041.terrain b/public/terrain/19/858604/354041.terrain new file mode 100644 index 000000000..4c6e1d229 Binary files /dev/null and b/public/terrain/19/858604/354041.terrain differ diff --git a/public/terrain/19/858604/354042.terrain b/public/terrain/19/858604/354042.terrain new file mode 100644 index 000000000..c66af4a1a Binary files /dev/null and b/public/terrain/19/858604/354042.terrain differ diff --git a/public/terrain/19/858604/354043.terrain b/public/terrain/19/858604/354043.terrain new file mode 100644 index 000000000..68d4936f9 Binary files /dev/null and b/public/terrain/19/858604/354043.terrain differ diff --git a/public/terrain/19/858604/354044.terrain b/public/terrain/19/858604/354044.terrain new file mode 100644 index 000000000..7644dea34 Binary files /dev/null and b/public/terrain/19/858604/354044.terrain differ diff --git a/public/terrain/19/858604/354045.terrain b/public/terrain/19/858604/354045.terrain new file mode 100644 index 000000000..9de9f8591 Binary files /dev/null and b/public/terrain/19/858604/354045.terrain differ diff --git a/public/terrain/19/858604/354046.terrain b/public/terrain/19/858604/354046.terrain new file mode 100644 index 000000000..720c0b7e1 Binary files /dev/null and b/public/terrain/19/858604/354046.terrain differ diff --git a/public/terrain/19/858604/354047.terrain b/public/terrain/19/858604/354047.terrain new file mode 100644 index 000000000..8ff113f19 Binary files /dev/null and b/public/terrain/19/858604/354047.terrain differ diff --git a/public/terrain/19/858604/354048.terrain b/public/terrain/19/858604/354048.terrain new file mode 100644 index 000000000..4e3ba9f19 Binary files /dev/null and b/public/terrain/19/858604/354048.terrain differ diff --git a/public/terrain/19/858604/354049.terrain b/public/terrain/19/858604/354049.terrain new file mode 100644 index 000000000..148ccfa76 Binary files /dev/null and b/public/terrain/19/858604/354049.terrain differ diff --git a/public/terrain/19/858604/354050.terrain b/public/terrain/19/858604/354050.terrain new file mode 100644 index 000000000..1fd4a2c28 Binary files /dev/null and b/public/terrain/19/858604/354050.terrain differ diff --git a/public/terrain/19/858604/354051.terrain b/public/terrain/19/858604/354051.terrain new file mode 100644 index 000000000..f710c1e5a Binary files /dev/null and b/public/terrain/19/858604/354051.terrain differ diff --git a/public/terrain/19/858604/354052.terrain b/public/terrain/19/858604/354052.terrain new file mode 100644 index 000000000..db4d900a1 Binary files /dev/null and b/public/terrain/19/858604/354052.terrain differ diff --git a/public/terrain/19/858604/354053.terrain b/public/terrain/19/858604/354053.terrain new file mode 100644 index 000000000..a981f0924 Binary files /dev/null and b/public/terrain/19/858604/354053.terrain differ diff --git a/public/terrain/19/858604/354054.terrain b/public/terrain/19/858604/354054.terrain new file mode 100644 index 000000000..5e027f9c8 Binary files /dev/null and b/public/terrain/19/858604/354054.terrain differ diff --git a/public/terrain/19/858604/354055.terrain b/public/terrain/19/858604/354055.terrain new file mode 100644 index 000000000..953739ba1 Binary files /dev/null and b/public/terrain/19/858604/354055.terrain differ diff --git a/public/terrain/19/858604/354056.terrain b/public/terrain/19/858604/354056.terrain new file mode 100644 index 000000000..b9b4338d7 Binary files /dev/null and b/public/terrain/19/858604/354056.terrain differ diff --git a/public/terrain/19/858604/354057.terrain b/public/terrain/19/858604/354057.terrain new file mode 100644 index 000000000..1c1dd3a19 Binary files /dev/null and b/public/terrain/19/858604/354057.terrain differ diff --git a/public/terrain/19/858604/354058.terrain b/public/terrain/19/858604/354058.terrain new file mode 100644 index 000000000..7418305e8 Binary files /dev/null and b/public/terrain/19/858604/354058.terrain differ diff --git a/public/terrain/19/858604/354059.terrain b/public/terrain/19/858604/354059.terrain new file mode 100644 index 000000000..0674eecf1 Binary files /dev/null and b/public/terrain/19/858604/354059.terrain differ diff --git a/public/terrain/19/858605/353743.terrain b/public/terrain/19/858605/353743.terrain new file mode 100644 index 000000000..2618c3384 Binary files /dev/null and b/public/terrain/19/858605/353743.terrain differ diff --git a/public/terrain/19/858605/353744.terrain b/public/terrain/19/858605/353744.terrain new file mode 100644 index 000000000..f8c42c534 Binary files /dev/null and b/public/terrain/19/858605/353744.terrain differ diff --git a/public/terrain/19/858605/353745.terrain b/public/terrain/19/858605/353745.terrain new file mode 100644 index 000000000..426fd2d73 Binary files /dev/null and b/public/terrain/19/858605/353745.terrain differ diff --git a/public/terrain/19/858605/353746.terrain b/public/terrain/19/858605/353746.terrain new file mode 100644 index 000000000..c78405b1b Binary files /dev/null and b/public/terrain/19/858605/353746.terrain differ diff --git a/public/terrain/19/858605/353747.terrain b/public/terrain/19/858605/353747.terrain new file mode 100644 index 000000000..f8bc90abe Binary files /dev/null and b/public/terrain/19/858605/353747.terrain differ diff --git a/public/terrain/19/858605/353748.terrain b/public/terrain/19/858605/353748.terrain new file mode 100644 index 000000000..9c4dc9098 Binary files /dev/null and b/public/terrain/19/858605/353748.terrain differ diff --git a/public/terrain/19/858605/353749.terrain b/public/terrain/19/858605/353749.terrain new file mode 100644 index 000000000..dfce20f65 Binary files /dev/null and b/public/terrain/19/858605/353749.terrain differ diff --git a/public/terrain/19/858605/353750.terrain b/public/terrain/19/858605/353750.terrain new file mode 100644 index 000000000..e31849112 Binary files /dev/null and b/public/terrain/19/858605/353750.terrain differ diff --git a/public/terrain/19/858605/353751.terrain b/public/terrain/19/858605/353751.terrain new file mode 100644 index 000000000..0636dca55 Binary files /dev/null and b/public/terrain/19/858605/353751.terrain differ diff --git a/public/terrain/19/858605/353752.terrain b/public/terrain/19/858605/353752.terrain new file mode 100644 index 000000000..94b91bcc5 Binary files /dev/null and b/public/terrain/19/858605/353752.terrain differ diff --git a/public/terrain/19/858605/353753.terrain b/public/terrain/19/858605/353753.terrain new file mode 100644 index 000000000..95f7af880 Binary files /dev/null and b/public/terrain/19/858605/353753.terrain differ diff --git a/public/terrain/19/858605/353754.terrain b/public/terrain/19/858605/353754.terrain new file mode 100644 index 000000000..988993c94 Binary files /dev/null and b/public/terrain/19/858605/353754.terrain differ diff --git a/public/terrain/19/858605/353755.terrain b/public/terrain/19/858605/353755.terrain new file mode 100644 index 000000000..32cb78e90 Binary files /dev/null and b/public/terrain/19/858605/353755.terrain differ diff --git a/public/terrain/19/858605/353756.terrain b/public/terrain/19/858605/353756.terrain new file mode 100644 index 000000000..b5b2dcd8e Binary files /dev/null and b/public/terrain/19/858605/353756.terrain differ diff --git a/public/terrain/19/858605/353757.terrain b/public/terrain/19/858605/353757.terrain new file mode 100644 index 000000000..a6ed53002 Binary files /dev/null and b/public/terrain/19/858605/353757.terrain differ diff --git a/public/terrain/19/858605/353758.terrain b/public/terrain/19/858605/353758.terrain new file mode 100644 index 000000000..5217bed70 Binary files /dev/null and b/public/terrain/19/858605/353758.terrain differ diff --git a/public/terrain/19/858605/353759.terrain b/public/terrain/19/858605/353759.terrain new file mode 100644 index 000000000..afa558e2d Binary files /dev/null and b/public/terrain/19/858605/353759.terrain differ diff --git a/public/terrain/19/858605/353760.terrain b/public/terrain/19/858605/353760.terrain new file mode 100644 index 000000000..07380dd88 Binary files /dev/null and b/public/terrain/19/858605/353760.terrain differ diff --git a/public/terrain/19/858605/353761.terrain b/public/terrain/19/858605/353761.terrain new file mode 100644 index 000000000..7f35bcee1 Binary files /dev/null and b/public/terrain/19/858605/353761.terrain differ diff --git a/public/terrain/19/858605/353762.terrain b/public/terrain/19/858605/353762.terrain new file mode 100644 index 000000000..a023b1107 Binary files /dev/null and b/public/terrain/19/858605/353762.terrain differ diff --git a/public/terrain/19/858605/353763.terrain b/public/terrain/19/858605/353763.terrain new file mode 100644 index 000000000..162f0563d Binary files /dev/null and b/public/terrain/19/858605/353763.terrain differ diff --git a/public/terrain/19/858605/353764.terrain b/public/terrain/19/858605/353764.terrain new file mode 100644 index 000000000..2cc9c67be Binary files /dev/null and b/public/terrain/19/858605/353764.terrain differ diff --git a/public/terrain/19/858605/353765.terrain b/public/terrain/19/858605/353765.terrain new file mode 100644 index 000000000..ead17dbd0 Binary files /dev/null and b/public/terrain/19/858605/353765.terrain differ diff --git a/public/terrain/19/858605/353766.terrain b/public/terrain/19/858605/353766.terrain new file mode 100644 index 000000000..52a042363 Binary files /dev/null and b/public/terrain/19/858605/353766.terrain differ diff --git a/public/terrain/19/858605/353767.terrain b/public/terrain/19/858605/353767.terrain new file mode 100644 index 000000000..4c1d7906a Binary files /dev/null and b/public/terrain/19/858605/353767.terrain differ diff --git a/public/terrain/19/858605/353768.terrain b/public/terrain/19/858605/353768.terrain new file mode 100644 index 000000000..7204e9b7b Binary files /dev/null and b/public/terrain/19/858605/353768.terrain differ diff --git a/public/terrain/19/858605/353769.terrain b/public/terrain/19/858605/353769.terrain new file mode 100644 index 000000000..8227acf0d Binary files /dev/null and b/public/terrain/19/858605/353769.terrain differ diff --git a/public/terrain/19/858605/353770.terrain b/public/terrain/19/858605/353770.terrain new file mode 100644 index 000000000..3955083ea Binary files /dev/null and b/public/terrain/19/858605/353770.terrain differ diff --git a/public/terrain/19/858605/353771.terrain b/public/terrain/19/858605/353771.terrain new file mode 100644 index 000000000..65f092614 Binary files /dev/null and b/public/terrain/19/858605/353771.terrain differ diff --git a/public/terrain/19/858605/353772.terrain b/public/terrain/19/858605/353772.terrain new file mode 100644 index 000000000..02370d02a Binary files /dev/null and b/public/terrain/19/858605/353772.terrain differ diff --git a/public/terrain/19/858605/353773.terrain b/public/terrain/19/858605/353773.terrain new file mode 100644 index 000000000..9b88c63e6 Binary files /dev/null and b/public/terrain/19/858605/353773.terrain differ diff --git a/public/terrain/19/858605/353774.terrain b/public/terrain/19/858605/353774.terrain new file mode 100644 index 000000000..3bef6a5a9 Binary files /dev/null and b/public/terrain/19/858605/353774.terrain differ diff --git a/public/terrain/19/858605/353775.terrain b/public/terrain/19/858605/353775.terrain new file mode 100644 index 000000000..44d503e3d Binary files /dev/null and b/public/terrain/19/858605/353775.terrain differ diff --git a/public/terrain/19/858605/353776.terrain b/public/terrain/19/858605/353776.terrain new file mode 100644 index 000000000..96093e068 Binary files /dev/null and b/public/terrain/19/858605/353776.terrain differ diff --git a/public/terrain/19/858605/353777.terrain b/public/terrain/19/858605/353777.terrain new file mode 100644 index 000000000..09967ac68 Binary files /dev/null and b/public/terrain/19/858605/353777.terrain differ diff --git a/public/terrain/19/858605/353778.terrain b/public/terrain/19/858605/353778.terrain new file mode 100644 index 000000000..3828805e0 Binary files /dev/null and b/public/terrain/19/858605/353778.terrain differ diff --git a/public/terrain/19/858605/353779.terrain b/public/terrain/19/858605/353779.terrain new file mode 100644 index 000000000..6719c7679 Binary files /dev/null and b/public/terrain/19/858605/353779.terrain differ diff --git a/public/terrain/19/858605/353780.terrain b/public/terrain/19/858605/353780.terrain new file mode 100644 index 000000000..c460dc4fb Binary files /dev/null and b/public/terrain/19/858605/353780.terrain differ diff --git a/public/terrain/19/858605/353781.terrain b/public/terrain/19/858605/353781.terrain new file mode 100644 index 000000000..523f616cf Binary files /dev/null and b/public/terrain/19/858605/353781.terrain differ diff --git a/public/terrain/19/858605/353782.terrain b/public/terrain/19/858605/353782.terrain new file mode 100644 index 000000000..054a5c260 Binary files /dev/null and b/public/terrain/19/858605/353782.terrain differ diff --git a/public/terrain/19/858605/353783.terrain b/public/terrain/19/858605/353783.terrain new file mode 100644 index 000000000..eb1b0cdde Binary files /dev/null and b/public/terrain/19/858605/353783.terrain differ diff --git a/public/terrain/19/858605/353784.terrain b/public/terrain/19/858605/353784.terrain new file mode 100644 index 000000000..6c6331175 Binary files /dev/null and b/public/terrain/19/858605/353784.terrain differ diff --git a/public/terrain/19/858605/353785.terrain b/public/terrain/19/858605/353785.terrain new file mode 100644 index 000000000..0de622db4 Binary files /dev/null and b/public/terrain/19/858605/353785.terrain differ diff --git a/public/terrain/19/858605/353786.terrain b/public/terrain/19/858605/353786.terrain new file mode 100644 index 000000000..c4f67cb4a Binary files /dev/null and b/public/terrain/19/858605/353786.terrain differ diff --git a/public/terrain/19/858605/353787.terrain b/public/terrain/19/858605/353787.terrain new file mode 100644 index 000000000..0b1525c73 Binary files /dev/null and b/public/terrain/19/858605/353787.terrain differ diff --git a/public/terrain/19/858605/353788.terrain b/public/terrain/19/858605/353788.terrain new file mode 100644 index 000000000..7195193f2 Binary files /dev/null and b/public/terrain/19/858605/353788.terrain differ diff --git a/public/terrain/19/858605/353789.terrain b/public/terrain/19/858605/353789.terrain new file mode 100644 index 000000000..a9c5658de Binary files /dev/null and b/public/terrain/19/858605/353789.terrain differ diff --git a/public/terrain/19/858605/353790.terrain b/public/terrain/19/858605/353790.terrain new file mode 100644 index 000000000..2424f5379 Binary files /dev/null and b/public/terrain/19/858605/353790.terrain differ diff --git a/public/terrain/19/858605/353791.terrain b/public/terrain/19/858605/353791.terrain new file mode 100644 index 000000000..cc29a7fad Binary files /dev/null and b/public/terrain/19/858605/353791.terrain differ diff --git a/public/terrain/19/858605/353792.terrain b/public/terrain/19/858605/353792.terrain new file mode 100644 index 000000000..2a467adb2 Binary files /dev/null and b/public/terrain/19/858605/353792.terrain differ diff --git a/public/terrain/19/858605/353793.terrain b/public/terrain/19/858605/353793.terrain new file mode 100644 index 000000000..79079f11f Binary files /dev/null and b/public/terrain/19/858605/353793.terrain differ diff --git a/public/terrain/19/858605/353794.terrain b/public/terrain/19/858605/353794.terrain new file mode 100644 index 000000000..ae448deb1 Binary files /dev/null and b/public/terrain/19/858605/353794.terrain differ diff --git a/public/terrain/19/858605/353795.terrain b/public/terrain/19/858605/353795.terrain new file mode 100644 index 000000000..5eb4df387 Binary files /dev/null and b/public/terrain/19/858605/353795.terrain differ diff --git a/public/terrain/19/858605/353796.terrain b/public/terrain/19/858605/353796.terrain new file mode 100644 index 000000000..3f34379e7 Binary files /dev/null and b/public/terrain/19/858605/353796.terrain differ diff --git a/public/terrain/19/858605/353797.terrain b/public/terrain/19/858605/353797.terrain new file mode 100644 index 000000000..b6decb8bf Binary files /dev/null and b/public/terrain/19/858605/353797.terrain differ diff --git a/public/terrain/19/858605/353798.terrain b/public/terrain/19/858605/353798.terrain new file mode 100644 index 000000000..387907393 Binary files /dev/null and b/public/terrain/19/858605/353798.terrain differ diff --git a/public/terrain/19/858605/353799.terrain b/public/terrain/19/858605/353799.terrain new file mode 100644 index 000000000..0a60d0457 Binary files /dev/null and b/public/terrain/19/858605/353799.terrain differ diff --git a/public/terrain/19/858605/353800.terrain b/public/terrain/19/858605/353800.terrain new file mode 100644 index 000000000..19d9e2a24 Binary files /dev/null and b/public/terrain/19/858605/353800.terrain differ diff --git a/public/terrain/19/858605/353801.terrain b/public/terrain/19/858605/353801.terrain new file mode 100644 index 000000000..38b2a9654 Binary files /dev/null and b/public/terrain/19/858605/353801.terrain differ diff --git a/public/terrain/19/858605/353802.terrain b/public/terrain/19/858605/353802.terrain new file mode 100644 index 000000000..724883d6d Binary files /dev/null and b/public/terrain/19/858605/353802.terrain differ diff --git a/public/terrain/19/858605/353803.terrain b/public/terrain/19/858605/353803.terrain new file mode 100644 index 000000000..d0e89e22b Binary files /dev/null and b/public/terrain/19/858605/353803.terrain differ diff --git a/public/terrain/19/858605/353804.terrain b/public/terrain/19/858605/353804.terrain new file mode 100644 index 000000000..b96d07f99 Binary files /dev/null and b/public/terrain/19/858605/353804.terrain differ diff --git a/public/terrain/19/858605/353805.terrain b/public/terrain/19/858605/353805.terrain new file mode 100644 index 000000000..c070e5ae4 Binary files /dev/null and b/public/terrain/19/858605/353805.terrain differ diff --git a/public/terrain/19/858605/353806.terrain b/public/terrain/19/858605/353806.terrain new file mode 100644 index 000000000..400ba2357 Binary files /dev/null and b/public/terrain/19/858605/353806.terrain differ diff --git a/public/terrain/19/858605/353807.terrain b/public/terrain/19/858605/353807.terrain new file mode 100644 index 000000000..71db1be3c Binary files /dev/null and b/public/terrain/19/858605/353807.terrain differ diff --git a/public/terrain/19/858605/353808.terrain b/public/terrain/19/858605/353808.terrain new file mode 100644 index 000000000..260a42dab Binary files /dev/null and b/public/terrain/19/858605/353808.terrain differ diff --git a/public/terrain/19/858605/353809.terrain b/public/terrain/19/858605/353809.terrain new file mode 100644 index 000000000..fc7ffda8b Binary files /dev/null and b/public/terrain/19/858605/353809.terrain differ diff --git a/public/terrain/19/858605/353810.terrain b/public/terrain/19/858605/353810.terrain new file mode 100644 index 000000000..dcaf3ce8d Binary files /dev/null and b/public/terrain/19/858605/353810.terrain differ diff --git a/public/terrain/19/858605/353811.terrain b/public/terrain/19/858605/353811.terrain new file mode 100644 index 000000000..fc818bd80 Binary files /dev/null and b/public/terrain/19/858605/353811.terrain differ diff --git a/public/terrain/19/858605/353812.terrain b/public/terrain/19/858605/353812.terrain new file mode 100644 index 000000000..3a138dca1 Binary files /dev/null and b/public/terrain/19/858605/353812.terrain differ diff --git a/public/terrain/19/858605/353813.terrain b/public/terrain/19/858605/353813.terrain new file mode 100644 index 000000000..0833f13cc Binary files /dev/null and b/public/terrain/19/858605/353813.terrain differ diff --git a/public/terrain/19/858605/353814.terrain b/public/terrain/19/858605/353814.terrain new file mode 100644 index 000000000..75447de3b Binary files /dev/null and b/public/terrain/19/858605/353814.terrain differ diff --git a/public/terrain/19/858605/353815.terrain b/public/terrain/19/858605/353815.terrain new file mode 100644 index 000000000..4099886f3 Binary files /dev/null and b/public/terrain/19/858605/353815.terrain differ diff --git a/public/terrain/19/858605/353816.terrain b/public/terrain/19/858605/353816.terrain new file mode 100644 index 000000000..9b1d76b2f Binary files /dev/null and b/public/terrain/19/858605/353816.terrain differ diff --git a/public/terrain/19/858605/353817.terrain b/public/terrain/19/858605/353817.terrain new file mode 100644 index 000000000..9534e2b0f Binary files /dev/null and b/public/terrain/19/858605/353817.terrain differ diff --git a/public/terrain/19/858605/353818.terrain b/public/terrain/19/858605/353818.terrain new file mode 100644 index 000000000..417a21ebc Binary files /dev/null and b/public/terrain/19/858605/353818.terrain differ diff --git a/public/terrain/19/858605/353819.terrain b/public/terrain/19/858605/353819.terrain new file mode 100644 index 000000000..d4d48c881 Binary files /dev/null and b/public/terrain/19/858605/353819.terrain differ diff --git a/public/terrain/19/858605/353820.terrain b/public/terrain/19/858605/353820.terrain new file mode 100644 index 000000000..add4e53dd Binary files /dev/null and b/public/terrain/19/858605/353820.terrain differ diff --git a/public/terrain/19/858605/353821.terrain b/public/terrain/19/858605/353821.terrain new file mode 100644 index 000000000..8123143b4 Binary files /dev/null and b/public/terrain/19/858605/353821.terrain differ diff --git a/public/terrain/19/858605/353822.terrain b/public/terrain/19/858605/353822.terrain new file mode 100644 index 000000000..2920af455 Binary files /dev/null and b/public/terrain/19/858605/353822.terrain differ diff --git a/public/terrain/19/858605/353823.terrain b/public/terrain/19/858605/353823.terrain new file mode 100644 index 000000000..3616eb500 Binary files /dev/null and b/public/terrain/19/858605/353823.terrain differ diff --git a/public/terrain/19/858605/353824.terrain b/public/terrain/19/858605/353824.terrain new file mode 100644 index 000000000..21c2e4c1d Binary files /dev/null and b/public/terrain/19/858605/353824.terrain differ diff --git a/public/terrain/19/858605/353825.terrain b/public/terrain/19/858605/353825.terrain new file mode 100644 index 000000000..59b5ba2f4 Binary files /dev/null and b/public/terrain/19/858605/353825.terrain differ diff --git a/public/terrain/19/858605/353826.terrain b/public/terrain/19/858605/353826.terrain new file mode 100644 index 000000000..0ba4c6033 Binary files /dev/null and b/public/terrain/19/858605/353826.terrain differ diff --git a/public/terrain/19/858605/353827.terrain b/public/terrain/19/858605/353827.terrain new file mode 100644 index 000000000..934fbeda4 Binary files /dev/null and b/public/terrain/19/858605/353827.terrain differ diff --git a/public/terrain/19/858605/353828.terrain b/public/terrain/19/858605/353828.terrain new file mode 100644 index 000000000..bc9e17f67 Binary files /dev/null and b/public/terrain/19/858605/353828.terrain differ diff --git a/public/terrain/19/858605/353829.terrain b/public/terrain/19/858605/353829.terrain new file mode 100644 index 000000000..14951834a Binary files /dev/null and b/public/terrain/19/858605/353829.terrain differ diff --git a/public/terrain/19/858605/353830.terrain b/public/terrain/19/858605/353830.terrain new file mode 100644 index 000000000..bb6c759cf Binary files /dev/null and b/public/terrain/19/858605/353830.terrain differ diff --git a/public/terrain/19/858605/353831.terrain b/public/terrain/19/858605/353831.terrain new file mode 100644 index 000000000..bf2b6be4a Binary files /dev/null and b/public/terrain/19/858605/353831.terrain differ diff --git a/public/terrain/19/858605/353832.terrain b/public/terrain/19/858605/353832.terrain new file mode 100644 index 000000000..257e49591 Binary files /dev/null and b/public/terrain/19/858605/353832.terrain differ diff --git a/public/terrain/19/858605/353833.terrain b/public/terrain/19/858605/353833.terrain new file mode 100644 index 000000000..67b8cc143 Binary files /dev/null and b/public/terrain/19/858605/353833.terrain differ diff --git a/public/terrain/19/858605/353834.terrain b/public/terrain/19/858605/353834.terrain new file mode 100644 index 000000000..87b957d14 Binary files /dev/null and b/public/terrain/19/858605/353834.terrain differ diff --git a/public/terrain/19/858605/353835.terrain b/public/terrain/19/858605/353835.terrain new file mode 100644 index 000000000..31d7d3ab4 Binary files /dev/null and b/public/terrain/19/858605/353835.terrain differ diff --git a/public/terrain/19/858605/353836.terrain b/public/terrain/19/858605/353836.terrain new file mode 100644 index 000000000..86ef39c1d Binary files /dev/null and b/public/terrain/19/858605/353836.terrain differ diff --git a/public/terrain/19/858605/353837.terrain b/public/terrain/19/858605/353837.terrain new file mode 100644 index 000000000..d3de92764 Binary files /dev/null and b/public/terrain/19/858605/353837.terrain differ diff --git a/public/terrain/19/858605/353838.terrain b/public/terrain/19/858605/353838.terrain new file mode 100644 index 000000000..4f76b6dab Binary files /dev/null and b/public/terrain/19/858605/353838.terrain differ diff --git a/public/terrain/19/858605/353839.terrain b/public/terrain/19/858605/353839.terrain new file mode 100644 index 000000000..9cefff17f Binary files /dev/null and b/public/terrain/19/858605/353839.terrain differ diff --git a/public/terrain/19/858605/353840.terrain b/public/terrain/19/858605/353840.terrain new file mode 100644 index 000000000..94b16d143 Binary files /dev/null and b/public/terrain/19/858605/353840.terrain differ diff --git a/public/terrain/19/858605/353841.terrain b/public/terrain/19/858605/353841.terrain new file mode 100644 index 000000000..88ab29ddb Binary files /dev/null and b/public/terrain/19/858605/353841.terrain differ diff --git a/public/terrain/19/858605/353842.terrain b/public/terrain/19/858605/353842.terrain new file mode 100644 index 000000000..5a3423966 Binary files /dev/null and b/public/terrain/19/858605/353842.terrain differ diff --git a/public/terrain/19/858605/353843.terrain b/public/terrain/19/858605/353843.terrain new file mode 100644 index 000000000..a7b44afad Binary files /dev/null and b/public/terrain/19/858605/353843.terrain differ diff --git a/public/terrain/19/858605/353844.terrain b/public/terrain/19/858605/353844.terrain new file mode 100644 index 000000000..d0f241c0e Binary files /dev/null and b/public/terrain/19/858605/353844.terrain differ diff --git a/public/terrain/19/858605/353845.terrain b/public/terrain/19/858605/353845.terrain new file mode 100644 index 000000000..345c0d994 Binary files /dev/null and b/public/terrain/19/858605/353845.terrain differ diff --git a/public/terrain/19/858605/353846.terrain b/public/terrain/19/858605/353846.terrain new file mode 100644 index 000000000..1530cbf8f Binary files /dev/null and b/public/terrain/19/858605/353846.terrain differ diff --git a/public/terrain/19/858605/353847.terrain b/public/terrain/19/858605/353847.terrain new file mode 100644 index 000000000..cca7f898f Binary files /dev/null and b/public/terrain/19/858605/353847.terrain differ diff --git a/public/terrain/19/858605/353848.terrain b/public/terrain/19/858605/353848.terrain new file mode 100644 index 000000000..9d968e318 Binary files /dev/null and b/public/terrain/19/858605/353848.terrain differ diff --git a/public/terrain/19/858605/353849.terrain b/public/terrain/19/858605/353849.terrain new file mode 100644 index 000000000..56f460e06 Binary files /dev/null and b/public/terrain/19/858605/353849.terrain differ diff --git a/public/terrain/19/858605/353850.terrain b/public/terrain/19/858605/353850.terrain new file mode 100644 index 000000000..122d9dc73 Binary files /dev/null and b/public/terrain/19/858605/353850.terrain differ diff --git a/public/terrain/19/858605/353851.terrain b/public/terrain/19/858605/353851.terrain new file mode 100644 index 000000000..ba619c7d2 Binary files /dev/null and b/public/terrain/19/858605/353851.terrain differ diff --git a/public/terrain/19/858605/353852.terrain b/public/terrain/19/858605/353852.terrain new file mode 100644 index 000000000..1a458f5bc Binary files /dev/null and b/public/terrain/19/858605/353852.terrain differ diff --git a/public/terrain/19/858605/353853.terrain b/public/terrain/19/858605/353853.terrain new file mode 100644 index 000000000..8b9b1acb1 Binary files /dev/null and b/public/terrain/19/858605/353853.terrain differ diff --git a/public/terrain/19/858605/353854.terrain b/public/terrain/19/858605/353854.terrain new file mode 100644 index 000000000..0b0580952 Binary files /dev/null and b/public/terrain/19/858605/353854.terrain differ diff --git a/public/terrain/19/858605/353855.terrain b/public/terrain/19/858605/353855.terrain new file mode 100644 index 000000000..ca5a52b6f Binary files /dev/null and b/public/terrain/19/858605/353855.terrain differ diff --git a/public/terrain/19/858605/353856.terrain b/public/terrain/19/858605/353856.terrain new file mode 100644 index 000000000..60b44b084 Binary files /dev/null and b/public/terrain/19/858605/353856.terrain differ diff --git a/public/terrain/19/858605/353857.terrain b/public/terrain/19/858605/353857.terrain new file mode 100644 index 000000000..04e2083a6 Binary files /dev/null and b/public/terrain/19/858605/353857.terrain differ diff --git a/public/terrain/19/858605/353858.terrain b/public/terrain/19/858605/353858.terrain new file mode 100644 index 000000000..5c5c02058 Binary files /dev/null and b/public/terrain/19/858605/353858.terrain differ diff --git a/public/terrain/19/858605/353859.terrain b/public/terrain/19/858605/353859.terrain new file mode 100644 index 000000000..2170b4b28 Binary files /dev/null and b/public/terrain/19/858605/353859.terrain differ diff --git a/public/terrain/19/858605/353860.terrain b/public/terrain/19/858605/353860.terrain new file mode 100644 index 000000000..dd077d403 Binary files /dev/null and b/public/terrain/19/858605/353860.terrain differ diff --git a/public/terrain/19/858605/353861.terrain b/public/terrain/19/858605/353861.terrain new file mode 100644 index 000000000..83817bee6 Binary files /dev/null and b/public/terrain/19/858605/353861.terrain differ diff --git a/public/terrain/19/858605/353862.terrain b/public/terrain/19/858605/353862.terrain new file mode 100644 index 000000000..2451cd883 Binary files /dev/null and b/public/terrain/19/858605/353862.terrain differ diff --git a/public/terrain/19/858605/353863.terrain b/public/terrain/19/858605/353863.terrain new file mode 100644 index 000000000..54db2f725 Binary files /dev/null and b/public/terrain/19/858605/353863.terrain differ diff --git a/public/terrain/19/858605/353864.terrain b/public/terrain/19/858605/353864.terrain new file mode 100644 index 000000000..a22c4db37 Binary files /dev/null and b/public/terrain/19/858605/353864.terrain differ diff --git a/public/terrain/19/858605/353865.terrain b/public/terrain/19/858605/353865.terrain new file mode 100644 index 000000000..8c9436db4 Binary files /dev/null and b/public/terrain/19/858605/353865.terrain differ diff --git a/public/terrain/19/858605/353866.terrain b/public/terrain/19/858605/353866.terrain new file mode 100644 index 000000000..5767678f2 Binary files /dev/null and b/public/terrain/19/858605/353866.terrain differ diff --git a/public/terrain/19/858605/353867.terrain b/public/terrain/19/858605/353867.terrain new file mode 100644 index 000000000..333527569 Binary files /dev/null and b/public/terrain/19/858605/353867.terrain differ diff --git a/public/terrain/19/858605/353868.terrain b/public/terrain/19/858605/353868.terrain new file mode 100644 index 000000000..4e0e43a8d Binary files /dev/null and b/public/terrain/19/858605/353868.terrain differ diff --git a/public/terrain/19/858605/353869.terrain b/public/terrain/19/858605/353869.terrain new file mode 100644 index 000000000..746479a84 Binary files /dev/null and b/public/terrain/19/858605/353869.terrain differ diff --git a/public/terrain/19/858605/353870.terrain b/public/terrain/19/858605/353870.terrain new file mode 100644 index 000000000..b49903725 Binary files /dev/null and b/public/terrain/19/858605/353870.terrain differ diff --git a/public/terrain/19/858605/353871.terrain b/public/terrain/19/858605/353871.terrain new file mode 100644 index 000000000..dc2cbf2b1 Binary files /dev/null and b/public/terrain/19/858605/353871.terrain differ diff --git a/public/terrain/19/858605/353872.terrain b/public/terrain/19/858605/353872.terrain new file mode 100644 index 000000000..53d9ceae7 Binary files /dev/null and b/public/terrain/19/858605/353872.terrain differ diff --git a/public/terrain/19/858605/353873.terrain b/public/terrain/19/858605/353873.terrain new file mode 100644 index 000000000..4415c29bc Binary files /dev/null and b/public/terrain/19/858605/353873.terrain differ diff --git a/public/terrain/19/858605/353874.terrain b/public/terrain/19/858605/353874.terrain new file mode 100644 index 000000000..ae10b34eb Binary files /dev/null and b/public/terrain/19/858605/353874.terrain differ diff --git a/public/terrain/19/858605/353875.terrain b/public/terrain/19/858605/353875.terrain new file mode 100644 index 000000000..bbd53228b Binary files /dev/null and b/public/terrain/19/858605/353875.terrain differ diff --git a/public/terrain/19/858605/353876.terrain b/public/terrain/19/858605/353876.terrain new file mode 100644 index 000000000..72eff02e5 Binary files /dev/null and b/public/terrain/19/858605/353876.terrain differ diff --git a/public/terrain/19/858605/353877.terrain b/public/terrain/19/858605/353877.terrain new file mode 100644 index 000000000..27a3da467 Binary files /dev/null and b/public/terrain/19/858605/353877.terrain differ diff --git a/public/terrain/19/858605/353878.terrain b/public/terrain/19/858605/353878.terrain new file mode 100644 index 000000000..73f5709cd Binary files /dev/null and b/public/terrain/19/858605/353878.terrain differ diff --git a/public/terrain/19/858605/353879.terrain b/public/terrain/19/858605/353879.terrain new file mode 100644 index 000000000..0905dd125 Binary files /dev/null and b/public/terrain/19/858605/353879.terrain differ diff --git a/public/terrain/19/858605/353880.terrain b/public/terrain/19/858605/353880.terrain new file mode 100644 index 000000000..1d9335c0c Binary files /dev/null and b/public/terrain/19/858605/353880.terrain differ diff --git a/public/terrain/19/858605/353881.terrain b/public/terrain/19/858605/353881.terrain new file mode 100644 index 000000000..403856691 Binary files /dev/null and b/public/terrain/19/858605/353881.terrain differ diff --git a/public/terrain/19/858605/353882.terrain b/public/terrain/19/858605/353882.terrain new file mode 100644 index 000000000..2d648ef9d Binary files /dev/null and b/public/terrain/19/858605/353882.terrain differ diff --git a/public/terrain/19/858605/353883.terrain b/public/terrain/19/858605/353883.terrain new file mode 100644 index 000000000..f8629ad91 Binary files /dev/null and b/public/terrain/19/858605/353883.terrain differ diff --git a/public/terrain/19/858605/353884.terrain b/public/terrain/19/858605/353884.terrain new file mode 100644 index 000000000..a5bc48473 Binary files /dev/null and b/public/terrain/19/858605/353884.terrain differ diff --git a/public/terrain/19/858605/353885.terrain b/public/terrain/19/858605/353885.terrain new file mode 100644 index 000000000..f5a30f41b Binary files /dev/null and b/public/terrain/19/858605/353885.terrain differ diff --git a/public/terrain/19/858605/353886.terrain b/public/terrain/19/858605/353886.terrain new file mode 100644 index 000000000..793380098 Binary files /dev/null and b/public/terrain/19/858605/353886.terrain differ diff --git a/public/terrain/19/858605/353887.terrain b/public/terrain/19/858605/353887.terrain new file mode 100644 index 000000000..a114a389f Binary files /dev/null and b/public/terrain/19/858605/353887.terrain differ diff --git a/public/terrain/19/858605/353888.terrain b/public/terrain/19/858605/353888.terrain new file mode 100644 index 000000000..3de1e6e0a Binary files /dev/null and b/public/terrain/19/858605/353888.terrain differ diff --git a/public/terrain/19/858605/353889.terrain b/public/terrain/19/858605/353889.terrain new file mode 100644 index 000000000..65eb12b50 Binary files /dev/null and b/public/terrain/19/858605/353889.terrain differ diff --git a/public/terrain/19/858605/353890.terrain b/public/terrain/19/858605/353890.terrain new file mode 100644 index 000000000..7f39dfab3 Binary files /dev/null and b/public/terrain/19/858605/353890.terrain differ diff --git a/public/terrain/19/858605/353891.terrain b/public/terrain/19/858605/353891.terrain new file mode 100644 index 000000000..af9d7af38 Binary files /dev/null and b/public/terrain/19/858605/353891.terrain differ diff --git a/public/terrain/19/858605/353892.terrain b/public/terrain/19/858605/353892.terrain new file mode 100644 index 000000000..840107d10 Binary files /dev/null and b/public/terrain/19/858605/353892.terrain differ diff --git a/public/terrain/19/858605/353893.terrain b/public/terrain/19/858605/353893.terrain new file mode 100644 index 000000000..131ff658e Binary files /dev/null and b/public/terrain/19/858605/353893.terrain differ diff --git a/public/terrain/19/858605/353894.terrain b/public/terrain/19/858605/353894.terrain new file mode 100644 index 000000000..932d91de0 Binary files /dev/null and b/public/terrain/19/858605/353894.terrain differ diff --git a/public/terrain/19/858605/353895.terrain b/public/terrain/19/858605/353895.terrain new file mode 100644 index 000000000..0f01a79f2 Binary files /dev/null and b/public/terrain/19/858605/353895.terrain differ diff --git a/public/terrain/19/858605/353896.terrain b/public/terrain/19/858605/353896.terrain new file mode 100644 index 000000000..d4da841ee Binary files /dev/null and b/public/terrain/19/858605/353896.terrain differ diff --git a/public/terrain/19/858605/353897.terrain b/public/terrain/19/858605/353897.terrain new file mode 100644 index 000000000..a37c0865b Binary files /dev/null and b/public/terrain/19/858605/353897.terrain differ diff --git a/public/terrain/19/858605/353898.terrain b/public/terrain/19/858605/353898.terrain new file mode 100644 index 000000000..a29847805 Binary files /dev/null and b/public/terrain/19/858605/353898.terrain differ diff --git a/public/terrain/19/858605/353899.terrain b/public/terrain/19/858605/353899.terrain new file mode 100644 index 000000000..d94ffbe3c Binary files /dev/null and b/public/terrain/19/858605/353899.terrain differ diff --git a/public/terrain/19/858605/353900.terrain b/public/terrain/19/858605/353900.terrain new file mode 100644 index 000000000..62893ef8d Binary files /dev/null and b/public/terrain/19/858605/353900.terrain differ diff --git a/public/terrain/19/858605/353901.terrain b/public/terrain/19/858605/353901.terrain new file mode 100644 index 000000000..ee9f8ce57 Binary files /dev/null and b/public/terrain/19/858605/353901.terrain differ diff --git a/public/terrain/19/858605/353902.terrain b/public/terrain/19/858605/353902.terrain new file mode 100644 index 000000000..094a614a6 Binary files /dev/null and b/public/terrain/19/858605/353902.terrain differ diff --git a/public/terrain/19/858605/353903.terrain b/public/terrain/19/858605/353903.terrain new file mode 100644 index 000000000..9ea1ca46a Binary files /dev/null and b/public/terrain/19/858605/353903.terrain differ diff --git a/public/terrain/19/858605/353904.terrain b/public/terrain/19/858605/353904.terrain new file mode 100644 index 000000000..5af3ef608 Binary files /dev/null and b/public/terrain/19/858605/353904.terrain differ diff --git a/public/terrain/19/858605/353905.terrain b/public/terrain/19/858605/353905.terrain new file mode 100644 index 000000000..61b5dbac8 Binary files /dev/null and b/public/terrain/19/858605/353905.terrain differ diff --git a/public/terrain/19/858605/353906.terrain b/public/terrain/19/858605/353906.terrain new file mode 100644 index 000000000..fe55294ce Binary files /dev/null and b/public/terrain/19/858605/353906.terrain differ diff --git a/public/terrain/19/858605/353907.terrain b/public/terrain/19/858605/353907.terrain new file mode 100644 index 000000000..1b5e0a950 Binary files /dev/null and b/public/terrain/19/858605/353907.terrain differ diff --git a/public/terrain/19/858605/353908.terrain b/public/terrain/19/858605/353908.terrain new file mode 100644 index 000000000..15c15fb37 Binary files /dev/null and b/public/terrain/19/858605/353908.terrain differ diff --git a/public/terrain/19/858605/353909.terrain b/public/terrain/19/858605/353909.terrain new file mode 100644 index 000000000..8cd28a592 Binary files /dev/null and b/public/terrain/19/858605/353909.terrain differ diff --git a/public/terrain/19/858605/353910.terrain b/public/terrain/19/858605/353910.terrain new file mode 100644 index 000000000..264cd4517 Binary files /dev/null and b/public/terrain/19/858605/353910.terrain differ diff --git a/public/terrain/19/858605/353911.terrain b/public/terrain/19/858605/353911.terrain new file mode 100644 index 000000000..391f640a9 Binary files /dev/null and b/public/terrain/19/858605/353911.terrain differ diff --git a/public/terrain/19/858605/353912.terrain b/public/terrain/19/858605/353912.terrain new file mode 100644 index 000000000..e8e58d26f Binary files /dev/null and b/public/terrain/19/858605/353912.terrain differ diff --git a/public/terrain/19/858605/353913.terrain b/public/terrain/19/858605/353913.terrain new file mode 100644 index 000000000..124be1e0f Binary files /dev/null and b/public/terrain/19/858605/353913.terrain differ diff --git a/public/terrain/19/858605/353914.terrain b/public/terrain/19/858605/353914.terrain new file mode 100644 index 000000000..10a643766 Binary files /dev/null and b/public/terrain/19/858605/353914.terrain differ diff --git a/public/terrain/19/858605/353915.terrain b/public/terrain/19/858605/353915.terrain new file mode 100644 index 000000000..5206e8a43 Binary files /dev/null and b/public/terrain/19/858605/353915.terrain differ diff --git a/public/terrain/19/858605/353916.terrain b/public/terrain/19/858605/353916.terrain new file mode 100644 index 000000000..cd2e594cd Binary files /dev/null and b/public/terrain/19/858605/353916.terrain differ diff --git a/public/terrain/19/858605/353917.terrain b/public/terrain/19/858605/353917.terrain new file mode 100644 index 000000000..4ccc62c9e Binary files /dev/null and b/public/terrain/19/858605/353917.terrain differ diff --git a/public/terrain/19/858605/353918.terrain b/public/terrain/19/858605/353918.terrain new file mode 100644 index 000000000..f9f06f742 Binary files /dev/null and b/public/terrain/19/858605/353918.terrain differ diff --git a/public/terrain/19/858605/353919.terrain b/public/terrain/19/858605/353919.terrain new file mode 100644 index 000000000..c36af5eb9 Binary files /dev/null and b/public/terrain/19/858605/353919.terrain differ diff --git a/public/terrain/19/858605/353920.terrain b/public/terrain/19/858605/353920.terrain new file mode 100644 index 000000000..22248a3f0 Binary files /dev/null and b/public/terrain/19/858605/353920.terrain differ diff --git a/public/terrain/19/858605/353921.terrain b/public/terrain/19/858605/353921.terrain new file mode 100644 index 000000000..61c9ad406 Binary files /dev/null and b/public/terrain/19/858605/353921.terrain differ diff --git a/public/terrain/19/858605/353922.terrain b/public/terrain/19/858605/353922.terrain new file mode 100644 index 000000000..0708c9cbd Binary files /dev/null and b/public/terrain/19/858605/353922.terrain differ diff --git a/public/terrain/19/858605/353923.terrain b/public/terrain/19/858605/353923.terrain new file mode 100644 index 000000000..c72089556 Binary files /dev/null and b/public/terrain/19/858605/353923.terrain differ diff --git a/public/terrain/19/858605/353924.terrain b/public/terrain/19/858605/353924.terrain new file mode 100644 index 000000000..c84c3f093 Binary files /dev/null and b/public/terrain/19/858605/353924.terrain differ diff --git a/public/terrain/19/858605/353925.terrain b/public/terrain/19/858605/353925.terrain new file mode 100644 index 000000000..d54ef2886 Binary files /dev/null and b/public/terrain/19/858605/353925.terrain differ diff --git a/public/terrain/19/858605/353926.terrain b/public/terrain/19/858605/353926.terrain new file mode 100644 index 000000000..e6c4e3ff5 Binary files /dev/null and b/public/terrain/19/858605/353926.terrain differ diff --git a/public/terrain/19/858605/353927.terrain b/public/terrain/19/858605/353927.terrain new file mode 100644 index 000000000..ec12fc707 Binary files /dev/null and b/public/terrain/19/858605/353927.terrain differ diff --git a/public/terrain/19/858605/353928.terrain b/public/terrain/19/858605/353928.terrain new file mode 100644 index 000000000..63bedf5e8 Binary files /dev/null and b/public/terrain/19/858605/353928.terrain differ diff --git a/public/terrain/19/858605/353929.terrain b/public/terrain/19/858605/353929.terrain new file mode 100644 index 000000000..815a0bc43 Binary files /dev/null and b/public/terrain/19/858605/353929.terrain differ diff --git a/public/terrain/19/858605/353930.terrain b/public/terrain/19/858605/353930.terrain new file mode 100644 index 000000000..a2bd64b16 Binary files /dev/null and b/public/terrain/19/858605/353930.terrain differ diff --git a/public/terrain/19/858605/353931.terrain b/public/terrain/19/858605/353931.terrain new file mode 100644 index 000000000..a809b8098 Binary files /dev/null and b/public/terrain/19/858605/353931.terrain differ diff --git a/public/terrain/19/858605/353932.terrain b/public/terrain/19/858605/353932.terrain new file mode 100644 index 000000000..10ab21a5c Binary files /dev/null and b/public/terrain/19/858605/353932.terrain differ diff --git a/public/terrain/19/858605/353933.terrain b/public/terrain/19/858605/353933.terrain new file mode 100644 index 000000000..e1de0acc9 Binary files /dev/null and b/public/terrain/19/858605/353933.terrain differ diff --git a/public/terrain/19/858605/353934.terrain b/public/terrain/19/858605/353934.terrain new file mode 100644 index 000000000..44dfb43ab Binary files /dev/null and b/public/terrain/19/858605/353934.terrain differ diff --git a/public/terrain/19/858605/353935.terrain b/public/terrain/19/858605/353935.terrain new file mode 100644 index 000000000..3c0074838 Binary files /dev/null and b/public/terrain/19/858605/353935.terrain differ diff --git a/public/terrain/19/858605/353936.terrain b/public/terrain/19/858605/353936.terrain new file mode 100644 index 000000000..79236f715 Binary files /dev/null and b/public/terrain/19/858605/353936.terrain differ diff --git a/public/terrain/19/858605/353937.terrain b/public/terrain/19/858605/353937.terrain new file mode 100644 index 000000000..72c341d85 Binary files /dev/null and b/public/terrain/19/858605/353937.terrain differ diff --git a/public/terrain/19/858605/353938.terrain b/public/terrain/19/858605/353938.terrain new file mode 100644 index 000000000..fa4db2ae8 Binary files /dev/null and b/public/terrain/19/858605/353938.terrain differ diff --git a/public/terrain/19/858605/353939.terrain b/public/terrain/19/858605/353939.terrain new file mode 100644 index 000000000..77f963ceb Binary files /dev/null and b/public/terrain/19/858605/353939.terrain differ diff --git a/public/terrain/19/858605/353940.terrain b/public/terrain/19/858605/353940.terrain new file mode 100644 index 000000000..69c8b2a0a Binary files /dev/null and b/public/terrain/19/858605/353940.terrain differ diff --git a/public/terrain/19/858605/353941.terrain b/public/terrain/19/858605/353941.terrain new file mode 100644 index 000000000..43790ad70 Binary files /dev/null and b/public/terrain/19/858605/353941.terrain differ diff --git a/public/terrain/19/858605/353942.terrain b/public/terrain/19/858605/353942.terrain new file mode 100644 index 000000000..2c237172d Binary files /dev/null and b/public/terrain/19/858605/353942.terrain differ diff --git a/public/terrain/19/858605/353943.terrain b/public/terrain/19/858605/353943.terrain new file mode 100644 index 000000000..30f9a64e4 Binary files /dev/null and b/public/terrain/19/858605/353943.terrain differ diff --git a/public/terrain/19/858605/353944.terrain b/public/terrain/19/858605/353944.terrain new file mode 100644 index 000000000..e483ac5c1 Binary files /dev/null and b/public/terrain/19/858605/353944.terrain differ diff --git a/public/terrain/19/858605/353945.terrain b/public/terrain/19/858605/353945.terrain new file mode 100644 index 000000000..85e52a361 Binary files /dev/null and b/public/terrain/19/858605/353945.terrain differ diff --git a/public/terrain/19/858605/353946.terrain b/public/terrain/19/858605/353946.terrain new file mode 100644 index 000000000..746672c9a Binary files /dev/null and b/public/terrain/19/858605/353946.terrain differ diff --git a/public/terrain/19/858605/353947.terrain b/public/terrain/19/858605/353947.terrain new file mode 100644 index 000000000..9d7574520 Binary files /dev/null and b/public/terrain/19/858605/353947.terrain differ diff --git a/public/terrain/19/858605/353948.terrain b/public/terrain/19/858605/353948.terrain new file mode 100644 index 000000000..37c3c0d0d Binary files /dev/null and b/public/terrain/19/858605/353948.terrain differ diff --git a/public/terrain/19/858605/353949.terrain b/public/terrain/19/858605/353949.terrain new file mode 100644 index 000000000..4666ec204 Binary files /dev/null and b/public/terrain/19/858605/353949.terrain differ diff --git a/public/terrain/19/858605/353950.terrain b/public/terrain/19/858605/353950.terrain new file mode 100644 index 000000000..2813b2a1f Binary files /dev/null and b/public/terrain/19/858605/353950.terrain differ diff --git a/public/terrain/19/858605/353951.terrain b/public/terrain/19/858605/353951.terrain new file mode 100644 index 000000000..d11555cd9 Binary files /dev/null and b/public/terrain/19/858605/353951.terrain differ diff --git a/public/terrain/19/858605/353952.terrain b/public/terrain/19/858605/353952.terrain new file mode 100644 index 000000000..4ad748838 Binary files /dev/null and b/public/terrain/19/858605/353952.terrain differ diff --git a/public/terrain/19/858605/353953.terrain b/public/terrain/19/858605/353953.terrain new file mode 100644 index 000000000..394751ef5 Binary files /dev/null and b/public/terrain/19/858605/353953.terrain differ diff --git a/public/terrain/19/858605/353954.terrain b/public/terrain/19/858605/353954.terrain new file mode 100644 index 000000000..24786ba14 Binary files /dev/null and b/public/terrain/19/858605/353954.terrain differ diff --git a/public/terrain/19/858605/353955.terrain b/public/terrain/19/858605/353955.terrain new file mode 100644 index 000000000..06bbb1af1 Binary files /dev/null and b/public/terrain/19/858605/353955.terrain differ diff --git a/public/terrain/19/858605/353956.terrain b/public/terrain/19/858605/353956.terrain new file mode 100644 index 000000000..136c27504 Binary files /dev/null and b/public/terrain/19/858605/353956.terrain differ diff --git a/public/terrain/19/858605/353957.terrain b/public/terrain/19/858605/353957.terrain new file mode 100644 index 000000000..4987106a2 Binary files /dev/null and b/public/terrain/19/858605/353957.terrain differ diff --git a/public/terrain/19/858605/353958.terrain b/public/terrain/19/858605/353958.terrain new file mode 100644 index 000000000..8379c3e7a Binary files /dev/null and b/public/terrain/19/858605/353958.terrain differ diff --git a/public/terrain/19/858605/353959.terrain b/public/terrain/19/858605/353959.terrain new file mode 100644 index 000000000..0a9e192a8 Binary files /dev/null and b/public/terrain/19/858605/353959.terrain differ diff --git a/public/terrain/19/858605/353960.terrain b/public/terrain/19/858605/353960.terrain new file mode 100644 index 000000000..f4f638e53 Binary files /dev/null and b/public/terrain/19/858605/353960.terrain differ diff --git a/public/terrain/19/858605/353961.terrain b/public/terrain/19/858605/353961.terrain new file mode 100644 index 000000000..3aeeecfa3 Binary files /dev/null and b/public/terrain/19/858605/353961.terrain differ diff --git a/public/terrain/19/858605/353962.terrain b/public/terrain/19/858605/353962.terrain new file mode 100644 index 000000000..cb67aefe8 Binary files /dev/null and b/public/terrain/19/858605/353962.terrain differ diff --git a/public/terrain/19/858605/353963.terrain b/public/terrain/19/858605/353963.terrain new file mode 100644 index 000000000..84ad052ed Binary files /dev/null and b/public/terrain/19/858605/353963.terrain differ diff --git a/public/terrain/19/858605/353964.terrain b/public/terrain/19/858605/353964.terrain new file mode 100644 index 000000000..78031f74a Binary files /dev/null and b/public/terrain/19/858605/353964.terrain differ diff --git a/public/terrain/19/858605/353965.terrain b/public/terrain/19/858605/353965.terrain new file mode 100644 index 000000000..36c8e3dad Binary files /dev/null and b/public/terrain/19/858605/353965.terrain differ diff --git a/public/terrain/19/858605/353966.terrain b/public/terrain/19/858605/353966.terrain new file mode 100644 index 000000000..c1cc1a063 Binary files /dev/null and b/public/terrain/19/858605/353966.terrain differ diff --git a/public/terrain/19/858605/353967.terrain b/public/terrain/19/858605/353967.terrain new file mode 100644 index 000000000..1e8eaa54f Binary files /dev/null and b/public/terrain/19/858605/353967.terrain differ diff --git a/public/terrain/19/858605/353968.terrain b/public/terrain/19/858605/353968.terrain new file mode 100644 index 000000000..38e20a0fa Binary files /dev/null and b/public/terrain/19/858605/353968.terrain differ diff --git a/public/terrain/19/858605/353969.terrain b/public/terrain/19/858605/353969.terrain new file mode 100644 index 000000000..fae649ca1 Binary files /dev/null and b/public/terrain/19/858605/353969.terrain differ diff --git a/public/terrain/19/858605/353970.terrain b/public/terrain/19/858605/353970.terrain new file mode 100644 index 000000000..23f06bb11 Binary files /dev/null and b/public/terrain/19/858605/353970.terrain differ diff --git a/public/terrain/19/858605/353971.terrain b/public/terrain/19/858605/353971.terrain new file mode 100644 index 000000000..2f733330b Binary files /dev/null and b/public/terrain/19/858605/353971.terrain differ diff --git a/public/terrain/19/858605/353972.terrain b/public/terrain/19/858605/353972.terrain new file mode 100644 index 000000000..157be66ce Binary files /dev/null and b/public/terrain/19/858605/353972.terrain differ diff --git a/public/terrain/19/858605/353973.terrain b/public/terrain/19/858605/353973.terrain new file mode 100644 index 000000000..ff6eb6915 Binary files /dev/null and b/public/terrain/19/858605/353973.terrain differ diff --git a/public/terrain/19/858605/353974.terrain b/public/terrain/19/858605/353974.terrain new file mode 100644 index 000000000..92de6715c Binary files /dev/null and b/public/terrain/19/858605/353974.terrain differ diff --git a/public/terrain/19/858605/353975.terrain b/public/terrain/19/858605/353975.terrain new file mode 100644 index 000000000..00658cc9d Binary files /dev/null and b/public/terrain/19/858605/353975.terrain differ diff --git a/public/terrain/19/858605/353976.terrain b/public/terrain/19/858605/353976.terrain new file mode 100644 index 000000000..b8c408f1a Binary files /dev/null and b/public/terrain/19/858605/353976.terrain differ diff --git a/public/terrain/19/858605/353977.terrain b/public/terrain/19/858605/353977.terrain new file mode 100644 index 000000000..3782fa5f7 Binary files /dev/null and b/public/terrain/19/858605/353977.terrain differ diff --git a/public/terrain/19/858605/353978.terrain b/public/terrain/19/858605/353978.terrain new file mode 100644 index 000000000..8ba8abc90 Binary files /dev/null and b/public/terrain/19/858605/353978.terrain differ diff --git a/public/terrain/19/858605/353979.terrain b/public/terrain/19/858605/353979.terrain new file mode 100644 index 000000000..5033f1079 Binary files /dev/null and b/public/terrain/19/858605/353979.terrain differ diff --git a/public/terrain/19/858605/353980.terrain b/public/terrain/19/858605/353980.terrain new file mode 100644 index 000000000..ec1397d8a Binary files /dev/null and b/public/terrain/19/858605/353980.terrain differ diff --git a/public/terrain/19/858605/353981.terrain b/public/terrain/19/858605/353981.terrain new file mode 100644 index 000000000..a6842aa46 Binary files /dev/null and b/public/terrain/19/858605/353981.terrain differ diff --git a/public/terrain/19/858605/353982.terrain b/public/terrain/19/858605/353982.terrain new file mode 100644 index 000000000..3c967a795 Binary files /dev/null and b/public/terrain/19/858605/353982.terrain differ diff --git a/public/terrain/19/858605/353983.terrain b/public/terrain/19/858605/353983.terrain new file mode 100644 index 000000000..cdb6278a0 Binary files /dev/null and b/public/terrain/19/858605/353983.terrain differ diff --git a/public/terrain/19/858605/353984.terrain b/public/terrain/19/858605/353984.terrain new file mode 100644 index 000000000..fc2c3378a Binary files /dev/null and b/public/terrain/19/858605/353984.terrain differ diff --git a/public/terrain/19/858605/353985.terrain b/public/terrain/19/858605/353985.terrain new file mode 100644 index 000000000..efda6379d Binary files /dev/null and b/public/terrain/19/858605/353985.terrain differ diff --git a/public/terrain/19/858605/353986.terrain b/public/terrain/19/858605/353986.terrain new file mode 100644 index 000000000..d0fba903f Binary files /dev/null and b/public/terrain/19/858605/353986.terrain differ diff --git a/public/terrain/19/858605/353987.terrain b/public/terrain/19/858605/353987.terrain new file mode 100644 index 000000000..2b86312a9 Binary files /dev/null and b/public/terrain/19/858605/353987.terrain differ diff --git a/public/terrain/19/858605/353988.terrain b/public/terrain/19/858605/353988.terrain new file mode 100644 index 000000000..d73464aeb Binary files /dev/null and b/public/terrain/19/858605/353988.terrain differ diff --git a/public/terrain/19/858605/353989.terrain b/public/terrain/19/858605/353989.terrain new file mode 100644 index 000000000..dfbec743c Binary files /dev/null and b/public/terrain/19/858605/353989.terrain differ diff --git a/public/terrain/19/858605/353990.terrain b/public/terrain/19/858605/353990.terrain new file mode 100644 index 000000000..afff01c7b Binary files /dev/null and b/public/terrain/19/858605/353990.terrain differ diff --git a/public/terrain/19/858605/353991.terrain b/public/terrain/19/858605/353991.terrain new file mode 100644 index 000000000..cdbdd5810 Binary files /dev/null and b/public/terrain/19/858605/353991.terrain differ diff --git a/public/terrain/19/858605/353992.terrain b/public/terrain/19/858605/353992.terrain new file mode 100644 index 000000000..28efd4826 Binary files /dev/null and b/public/terrain/19/858605/353992.terrain differ diff --git a/public/terrain/19/858605/353993.terrain b/public/terrain/19/858605/353993.terrain new file mode 100644 index 000000000..6e1462b6b Binary files /dev/null and b/public/terrain/19/858605/353993.terrain differ diff --git a/public/terrain/19/858605/353994.terrain b/public/terrain/19/858605/353994.terrain new file mode 100644 index 000000000..3cdaad7f9 Binary files /dev/null and b/public/terrain/19/858605/353994.terrain differ diff --git a/public/terrain/19/858605/353995.terrain b/public/terrain/19/858605/353995.terrain new file mode 100644 index 000000000..699ba874c Binary files /dev/null and b/public/terrain/19/858605/353995.terrain differ diff --git a/public/terrain/19/858605/353996.terrain b/public/terrain/19/858605/353996.terrain new file mode 100644 index 000000000..837e0a96c Binary files /dev/null and b/public/terrain/19/858605/353996.terrain differ diff --git a/public/terrain/19/858605/353997.terrain b/public/terrain/19/858605/353997.terrain new file mode 100644 index 000000000..376db051e Binary files /dev/null and b/public/terrain/19/858605/353997.terrain differ diff --git a/public/terrain/19/858605/353998.terrain b/public/terrain/19/858605/353998.terrain new file mode 100644 index 000000000..139ae87de Binary files /dev/null and b/public/terrain/19/858605/353998.terrain differ diff --git a/public/terrain/19/858605/353999.terrain b/public/terrain/19/858605/353999.terrain new file mode 100644 index 000000000..d3cf02443 Binary files /dev/null and b/public/terrain/19/858605/353999.terrain differ diff --git a/public/terrain/19/858605/354000.terrain b/public/terrain/19/858605/354000.terrain new file mode 100644 index 000000000..5bcbb5551 Binary files /dev/null and b/public/terrain/19/858605/354000.terrain differ diff --git a/public/terrain/19/858605/354001.terrain b/public/terrain/19/858605/354001.terrain new file mode 100644 index 000000000..97bdc01fd Binary files /dev/null and b/public/terrain/19/858605/354001.terrain differ diff --git a/public/terrain/19/858605/354002.terrain b/public/terrain/19/858605/354002.terrain new file mode 100644 index 000000000..ab7b1a145 Binary files /dev/null and b/public/terrain/19/858605/354002.terrain differ diff --git a/public/terrain/19/858605/354003.terrain b/public/terrain/19/858605/354003.terrain new file mode 100644 index 000000000..471a26586 Binary files /dev/null and b/public/terrain/19/858605/354003.terrain differ diff --git a/public/terrain/19/858605/354004.terrain b/public/terrain/19/858605/354004.terrain new file mode 100644 index 000000000..d3f68fdf5 Binary files /dev/null and b/public/terrain/19/858605/354004.terrain differ diff --git a/public/terrain/19/858605/354005.terrain b/public/terrain/19/858605/354005.terrain new file mode 100644 index 000000000..a69521e28 Binary files /dev/null and b/public/terrain/19/858605/354005.terrain differ diff --git a/public/terrain/19/858605/354006.terrain b/public/terrain/19/858605/354006.terrain new file mode 100644 index 000000000..94c90c8d5 Binary files /dev/null and b/public/terrain/19/858605/354006.terrain differ diff --git a/public/terrain/19/858605/354007.terrain b/public/terrain/19/858605/354007.terrain new file mode 100644 index 000000000..a0ba1662d Binary files /dev/null and b/public/terrain/19/858605/354007.terrain differ diff --git a/public/terrain/19/858605/354008.terrain b/public/terrain/19/858605/354008.terrain new file mode 100644 index 000000000..1ed959277 Binary files /dev/null and b/public/terrain/19/858605/354008.terrain differ diff --git a/public/terrain/19/858605/354009.terrain b/public/terrain/19/858605/354009.terrain new file mode 100644 index 000000000..dd3c9e572 Binary files /dev/null and b/public/terrain/19/858605/354009.terrain differ diff --git a/public/terrain/19/858605/354010.terrain b/public/terrain/19/858605/354010.terrain new file mode 100644 index 000000000..901ca14e1 Binary files /dev/null and b/public/terrain/19/858605/354010.terrain differ diff --git a/public/terrain/19/858605/354011.terrain b/public/terrain/19/858605/354011.terrain new file mode 100644 index 000000000..e081ccacb Binary files /dev/null and b/public/terrain/19/858605/354011.terrain differ diff --git a/public/terrain/19/858605/354012.terrain b/public/terrain/19/858605/354012.terrain new file mode 100644 index 000000000..cb5ebb240 Binary files /dev/null and b/public/terrain/19/858605/354012.terrain differ diff --git a/public/terrain/19/858605/354013.terrain b/public/terrain/19/858605/354013.terrain new file mode 100644 index 000000000..77f7492ef Binary files /dev/null and b/public/terrain/19/858605/354013.terrain differ diff --git a/public/terrain/19/858605/354014.terrain b/public/terrain/19/858605/354014.terrain new file mode 100644 index 000000000..83ae7fc1a Binary files /dev/null and b/public/terrain/19/858605/354014.terrain differ diff --git a/public/terrain/19/858605/354015.terrain b/public/terrain/19/858605/354015.terrain new file mode 100644 index 000000000..ff2c3c600 Binary files /dev/null and b/public/terrain/19/858605/354015.terrain differ diff --git a/public/terrain/19/858605/354016.terrain b/public/terrain/19/858605/354016.terrain new file mode 100644 index 000000000..7e023358d Binary files /dev/null and b/public/terrain/19/858605/354016.terrain differ diff --git a/public/terrain/19/858605/354017.terrain b/public/terrain/19/858605/354017.terrain new file mode 100644 index 000000000..57742e08f Binary files /dev/null and b/public/terrain/19/858605/354017.terrain differ diff --git a/public/terrain/19/858605/354018.terrain b/public/terrain/19/858605/354018.terrain new file mode 100644 index 000000000..2765b162a Binary files /dev/null and b/public/terrain/19/858605/354018.terrain differ diff --git a/public/terrain/19/858605/354019.terrain b/public/terrain/19/858605/354019.terrain new file mode 100644 index 000000000..46b5e577b Binary files /dev/null and b/public/terrain/19/858605/354019.terrain differ diff --git a/public/terrain/19/858605/354020.terrain b/public/terrain/19/858605/354020.terrain new file mode 100644 index 000000000..285ec716c Binary files /dev/null and b/public/terrain/19/858605/354020.terrain differ diff --git a/public/terrain/19/858605/354021.terrain b/public/terrain/19/858605/354021.terrain new file mode 100644 index 000000000..6675715d5 Binary files /dev/null and b/public/terrain/19/858605/354021.terrain differ diff --git a/public/terrain/19/858605/354022.terrain b/public/terrain/19/858605/354022.terrain new file mode 100644 index 000000000..249763259 Binary files /dev/null and b/public/terrain/19/858605/354022.terrain differ diff --git a/public/terrain/19/858605/354023.terrain b/public/terrain/19/858605/354023.terrain new file mode 100644 index 000000000..bc06a93a7 Binary files /dev/null and b/public/terrain/19/858605/354023.terrain differ diff --git a/public/terrain/19/858605/354024.terrain b/public/terrain/19/858605/354024.terrain new file mode 100644 index 000000000..4580216fe Binary files /dev/null and b/public/terrain/19/858605/354024.terrain differ diff --git a/public/terrain/19/858605/354025.terrain b/public/terrain/19/858605/354025.terrain new file mode 100644 index 000000000..548ac02a4 Binary files /dev/null and b/public/terrain/19/858605/354025.terrain differ diff --git a/public/terrain/19/858605/354026.terrain b/public/terrain/19/858605/354026.terrain new file mode 100644 index 000000000..451b4884f Binary files /dev/null and b/public/terrain/19/858605/354026.terrain differ diff --git a/public/terrain/19/858605/354027.terrain b/public/terrain/19/858605/354027.terrain new file mode 100644 index 000000000..affb64942 Binary files /dev/null and b/public/terrain/19/858605/354027.terrain differ diff --git a/public/terrain/19/858605/354028.terrain b/public/terrain/19/858605/354028.terrain new file mode 100644 index 000000000..49626725d Binary files /dev/null and b/public/terrain/19/858605/354028.terrain differ diff --git a/public/terrain/19/858605/354029.terrain b/public/terrain/19/858605/354029.terrain new file mode 100644 index 000000000..7f855820f Binary files /dev/null and b/public/terrain/19/858605/354029.terrain differ diff --git a/public/terrain/19/858605/354030.terrain b/public/terrain/19/858605/354030.terrain new file mode 100644 index 000000000..651f11dee Binary files /dev/null and b/public/terrain/19/858605/354030.terrain differ diff --git a/public/terrain/19/858605/354031.terrain b/public/terrain/19/858605/354031.terrain new file mode 100644 index 000000000..84d4465ef Binary files /dev/null and b/public/terrain/19/858605/354031.terrain differ diff --git a/public/terrain/19/858605/354032.terrain b/public/terrain/19/858605/354032.terrain new file mode 100644 index 000000000..4a582842f Binary files /dev/null and b/public/terrain/19/858605/354032.terrain differ diff --git a/public/terrain/19/858605/354033.terrain b/public/terrain/19/858605/354033.terrain new file mode 100644 index 000000000..1069863ad Binary files /dev/null and b/public/terrain/19/858605/354033.terrain differ diff --git a/public/terrain/19/858605/354034.terrain b/public/terrain/19/858605/354034.terrain new file mode 100644 index 000000000..f3b0d9cbb Binary files /dev/null and b/public/terrain/19/858605/354034.terrain differ diff --git a/public/terrain/19/858605/354035.terrain b/public/terrain/19/858605/354035.terrain new file mode 100644 index 000000000..a245a8070 Binary files /dev/null and b/public/terrain/19/858605/354035.terrain differ diff --git a/public/terrain/19/858605/354036.terrain b/public/terrain/19/858605/354036.terrain new file mode 100644 index 000000000..68a583a63 Binary files /dev/null and b/public/terrain/19/858605/354036.terrain differ diff --git a/public/terrain/19/858605/354037.terrain b/public/terrain/19/858605/354037.terrain new file mode 100644 index 000000000..b7298a2f2 Binary files /dev/null and b/public/terrain/19/858605/354037.terrain differ diff --git a/public/terrain/19/858605/354038.terrain b/public/terrain/19/858605/354038.terrain new file mode 100644 index 000000000..38258b415 Binary files /dev/null and b/public/terrain/19/858605/354038.terrain differ diff --git a/public/terrain/19/858605/354039.terrain b/public/terrain/19/858605/354039.terrain new file mode 100644 index 000000000..51c135dc0 Binary files /dev/null and b/public/terrain/19/858605/354039.terrain differ diff --git a/public/terrain/19/858605/354040.terrain b/public/terrain/19/858605/354040.terrain new file mode 100644 index 000000000..7de65d004 Binary files /dev/null and b/public/terrain/19/858605/354040.terrain differ diff --git a/public/terrain/19/858605/354041.terrain b/public/terrain/19/858605/354041.terrain new file mode 100644 index 000000000..a7f5ff4cc Binary files /dev/null and b/public/terrain/19/858605/354041.terrain differ diff --git a/public/terrain/19/858605/354042.terrain b/public/terrain/19/858605/354042.terrain new file mode 100644 index 000000000..d65099bed Binary files /dev/null and b/public/terrain/19/858605/354042.terrain differ diff --git a/public/terrain/19/858605/354043.terrain b/public/terrain/19/858605/354043.terrain new file mode 100644 index 000000000..c33c09f8c Binary files /dev/null and b/public/terrain/19/858605/354043.terrain differ diff --git a/public/terrain/19/858605/354044.terrain b/public/terrain/19/858605/354044.terrain new file mode 100644 index 000000000..5784fbfd0 Binary files /dev/null and b/public/terrain/19/858605/354044.terrain differ diff --git a/public/terrain/19/858605/354045.terrain b/public/terrain/19/858605/354045.terrain new file mode 100644 index 000000000..36320b4d7 Binary files /dev/null and b/public/terrain/19/858605/354045.terrain differ diff --git a/public/terrain/19/858605/354046.terrain b/public/terrain/19/858605/354046.terrain new file mode 100644 index 000000000..a3635799d Binary files /dev/null and b/public/terrain/19/858605/354046.terrain differ diff --git a/public/terrain/19/858605/354047.terrain b/public/terrain/19/858605/354047.terrain new file mode 100644 index 000000000..db6905549 Binary files /dev/null and b/public/terrain/19/858605/354047.terrain differ diff --git a/public/terrain/19/858605/354048.terrain b/public/terrain/19/858605/354048.terrain new file mode 100644 index 000000000..6f3e7c149 Binary files /dev/null and b/public/terrain/19/858605/354048.terrain differ diff --git a/public/terrain/19/858605/354049.terrain b/public/terrain/19/858605/354049.terrain new file mode 100644 index 000000000..b22f91cf8 Binary files /dev/null and b/public/terrain/19/858605/354049.terrain differ diff --git a/public/terrain/19/858605/354050.terrain b/public/terrain/19/858605/354050.terrain new file mode 100644 index 000000000..87220d729 Binary files /dev/null and b/public/terrain/19/858605/354050.terrain differ diff --git a/public/terrain/19/858605/354051.terrain b/public/terrain/19/858605/354051.terrain new file mode 100644 index 000000000..ab5473918 Binary files /dev/null and b/public/terrain/19/858605/354051.terrain differ diff --git a/public/terrain/19/858605/354052.terrain b/public/terrain/19/858605/354052.terrain new file mode 100644 index 000000000..f66c67c90 Binary files /dev/null and b/public/terrain/19/858605/354052.terrain differ diff --git a/public/terrain/19/858605/354053.terrain b/public/terrain/19/858605/354053.terrain new file mode 100644 index 000000000..f35ad901f Binary files /dev/null and b/public/terrain/19/858605/354053.terrain differ diff --git a/public/terrain/19/858605/354054.terrain b/public/terrain/19/858605/354054.terrain new file mode 100644 index 000000000..08d1c517d Binary files /dev/null and b/public/terrain/19/858605/354054.terrain differ diff --git a/public/terrain/19/858605/354055.terrain b/public/terrain/19/858605/354055.terrain new file mode 100644 index 000000000..9eddc81de Binary files /dev/null and b/public/terrain/19/858605/354055.terrain differ diff --git a/public/terrain/19/858605/354056.terrain b/public/terrain/19/858605/354056.terrain new file mode 100644 index 000000000..a1f17512e Binary files /dev/null and b/public/terrain/19/858605/354056.terrain differ diff --git a/public/terrain/19/858605/354057.terrain b/public/terrain/19/858605/354057.terrain new file mode 100644 index 000000000..569c41acb Binary files /dev/null and b/public/terrain/19/858605/354057.terrain differ diff --git a/public/terrain/19/858605/354058.terrain b/public/terrain/19/858605/354058.terrain new file mode 100644 index 000000000..dde1b10df Binary files /dev/null and b/public/terrain/19/858605/354058.terrain differ diff --git a/public/terrain/19/858605/354059.terrain b/public/terrain/19/858605/354059.terrain new file mode 100644 index 000000000..3bb70235e Binary files /dev/null and b/public/terrain/19/858605/354059.terrain differ diff --git a/public/terrain/19/858606/353743.terrain b/public/terrain/19/858606/353743.terrain new file mode 100644 index 000000000..54cf70d48 Binary files /dev/null and b/public/terrain/19/858606/353743.terrain differ diff --git a/public/terrain/19/858606/353744.terrain b/public/terrain/19/858606/353744.terrain new file mode 100644 index 000000000..89c3d05ff Binary files /dev/null and b/public/terrain/19/858606/353744.terrain differ diff --git a/public/terrain/19/858606/353745.terrain b/public/terrain/19/858606/353745.terrain new file mode 100644 index 000000000..a18b570fa Binary files /dev/null and b/public/terrain/19/858606/353745.terrain differ diff --git a/public/terrain/19/858606/353746.terrain b/public/terrain/19/858606/353746.terrain new file mode 100644 index 000000000..9725556c5 Binary files /dev/null and b/public/terrain/19/858606/353746.terrain differ diff --git a/public/terrain/19/858606/353747.terrain b/public/terrain/19/858606/353747.terrain new file mode 100644 index 000000000..2fe065c04 Binary files /dev/null and b/public/terrain/19/858606/353747.terrain differ diff --git a/public/terrain/19/858606/353748.terrain b/public/terrain/19/858606/353748.terrain new file mode 100644 index 000000000..d377d8512 Binary files /dev/null and b/public/terrain/19/858606/353748.terrain differ diff --git a/public/terrain/19/858606/353749.terrain b/public/terrain/19/858606/353749.terrain new file mode 100644 index 000000000..c9875370f Binary files /dev/null and b/public/terrain/19/858606/353749.terrain differ diff --git a/public/terrain/19/858606/353750.terrain b/public/terrain/19/858606/353750.terrain new file mode 100644 index 000000000..020a04a7c Binary files /dev/null and b/public/terrain/19/858606/353750.terrain differ diff --git a/public/terrain/19/858606/353751.terrain b/public/terrain/19/858606/353751.terrain new file mode 100644 index 000000000..dec40a294 Binary files /dev/null and b/public/terrain/19/858606/353751.terrain differ diff --git a/public/terrain/19/858606/353752.terrain b/public/terrain/19/858606/353752.terrain new file mode 100644 index 000000000..865bf7d23 Binary files /dev/null and b/public/terrain/19/858606/353752.terrain differ diff --git a/public/terrain/19/858606/353753.terrain b/public/terrain/19/858606/353753.terrain new file mode 100644 index 000000000..dbbcd3cc1 Binary files /dev/null and b/public/terrain/19/858606/353753.terrain differ diff --git a/public/terrain/19/858606/353754.terrain b/public/terrain/19/858606/353754.terrain new file mode 100644 index 000000000..2ba25a95c Binary files /dev/null and b/public/terrain/19/858606/353754.terrain differ diff --git a/public/terrain/19/858606/353755.terrain b/public/terrain/19/858606/353755.terrain new file mode 100644 index 000000000..53c3acb66 Binary files /dev/null and b/public/terrain/19/858606/353755.terrain differ diff --git a/public/terrain/19/858606/353756.terrain b/public/terrain/19/858606/353756.terrain new file mode 100644 index 000000000..dae4e20d2 Binary files /dev/null and b/public/terrain/19/858606/353756.terrain differ diff --git a/public/terrain/19/858606/353757.terrain b/public/terrain/19/858606/353757.terrain new file mode 100644 index 000000000..6c9599383 Binary files /dev/null and b/public/terrain/19/858606/353757.terrain differ diff --git a/public/terrain/19/858606/353758.terrain b/public/terrain/19/858606/353758.terrain new file mode 100644 index 000000000..3dacc0ff9 Binary files /dev/null and b/public/terrain/19/858606/353758.terrain differ diff --git a/public/terrain/19/858606/353759.terrain b/public/terrain/19/858606/353759.terrain new file mode 100644 index 000000000..f1da0fc11 Binary files /dev/null and b/public/terrain/19/858606/353759.terrain differ diff --git a/public/terrain/19/858606/353760.terrain b/public/terrain/19/858606/353760.terrain new file mode 100644 index 000000000..6d42eadb6 Binary files /dev/null and b/public/terrain/19/858606/353760.terrain differ diff --git a/public/terrain/19/858606/353761.terrain b/public/terrain/19/858606/353761.terrain new file mode 100644 index 000000000..10aa86495 Binary files /dev/null and b/public/terrain/19/858606/353761.terrain differ diff --git a/public/terrain/19/858606/353762.terrain b/public/terrain/19/858606/353762.terrain new file mode 100644 index 000000000..d69a601d9 Binary files /dev/null and b/public/terrain/19/858606/353762.terrain differ diff --git a/public/terrain/19/858606/353763.terrain b/public/terrain/19/858606/353763.terrain new file mode 100644 index 000000000..0f63db908 Binary files /dev/null and b/public/terrain/19/858606/353763.terrain differ diff --git a/public/terrain/19/858606/353764.terrain b/public/terrain/19/858606/353764.terrain new file mode 100644 index 000000000..4423ad89a Binary files /dev/null and b/public/terrain/19/858606/353764.terrain differ diff --git a/public/terrain/19/858606/353765.terrain b/public/terrain/19/858606/353765.terrain new file mode 100644 index 000000000..0acb051d9 Binary files /dev/null and b/public/terrain/19/858606/353765.terrain differ diff --git a/public/terrain/19/858606/353766.terrain b/public/terrain/19/858606/353766.terrain new file mode 100644 index 000000000..cd8dee825 Binary files /dev/null and b/public/terrain/19/858606/353766.terrain differ diff --git a/public/terrain/19/858606/353767.terrain b/public/terrain/19/858606/353767.terrain new file mode 100644 index 000000000..738950ff1 Binary files /dev/null and b/public/terrain/19/858606/353767.terrain differ diff --git a/public/terrain/19/858606/353768.terrain b/public/terrain/19/858606/353768.terrain new file mode 100644 index 000000000..806feda23 Binary files /dev/null and b/public/terrain/19/858606/353768.terrain differ diff --git a/public/terrain/19/858606/353769.terrain b/public/terrain/19/858606/353769.terrain new file mode 100644 index 000000000..a6c8a1c6d Binary files /dev/null and b/public/terrain/19/858606/353769.terrain differ diff --git a/public/terrain/19/858606/353770.terrain b/public/terrain/19/858606/353770.terrain new file mode 100644 index 000000000..c158dc1a5 Binary files /dev/null and b/public/terrain/19/858606/353770.terrain differ diff --git a/public/terrain/19/858606/353771.terrain b/public/terrain/19/858606/353771.terrain new file mode 100644 index 000000000..b40b9bac3 Binary files /dev/null and b/public/terrain/19/858606/353771.terrain differ diff --git a/public/terrain/19/858606/353772.terrain b/public/terrain/19/858606/353772.terrain new file mode 100644 index 000000000..09f1689d8 Binary files /dev/null and b/public/terrain/19/858606/353772.terrain differ diff --git a/public/terrain/19/858606/353773.terrain b/public/terrain/19/858606/353773.terrain new file mode 100644 index 000000000..7a4ebf651 Binary files /dev/null and b/public/terrain/19/858606/353773.terrain differ diff --git a/public/terrain/19/858606/353774.terrain b/public/terrain/19/858606/353774.terrain new file mode 100644 index 000000000..7e57482ee Binary files /dev/null and b/public/terrain/19/858606/353774.terrain differ diff --git a/public/terrain/19/858606/353775.terrain b/public/terrain/19/858606/353775.terrain new file mode 100644 index 000000000..bd43bbe08 Binary files /dev/null and b/public/terrain/19/858606/353775.terrain differ diff --git a/public/terrain/19/858606/353776.terrain b/public/terrain/19/858606/353776.terrain new file mode 100644 index 000000000..defeba22c Binary files /dev/null and b/public/terrain/19/858606/353776.terrain differ diff --git a/public/terrain/19/858606/353777.terrain b/public/terrain/19/858606/353777.terrain new file mode 100644 index 000000000..d2d5417f7 Binary files /dev/null and b/public/terrain/19/858606/353777.terrain differ diff --git a/public/terrain/19/858606/353778.terrain b/public/terrain/19/858606/353778.terrain new file mode 100644 index 000000000..5f0d1af63 Binary files /dev/null and b/public/terrain/19/858606/353778.terrain differ diff --git a/public/terrain/19/858606/353779.terrain b/public/terrain/19/858606/353779.terrain new file mode 100644 index 000000000..64f9f7360 Binary files /dev/null and b/public/terrain/19/858606/353779.terrain differ diff --git a/public/terrain/19/858606/353780.terrain b/public/terrain/19/858606/353780.terrain new file mode 100644 index 000000000..6bb63f21e Binary files /dev/null and b/public/terrain/19/858606/353780.terrain differ diff --git a/public/terrain/19/858606/353781.terrain b/public/terrain/19/858606/353781.terrain new file mode 100644 index 000000000..ba91d982f Binary files /dev/null and b/public/terrain/19/858606/353781.terrain differ diff --git a/public/terrain/19/858606/353782.terrain b/public/terrain/19/858606/353782.terrain new file mode 100644 index 000000000..d9cec5d83 Binary files /dev/null and b/public/terrain/19/858606/353782.terrain differ diff --git a/public/terrain/19/858606/353783.terrain b/public/terrain/19/858606/353783.terrain new file mode 100644 index 000000000..9a8147462 Binary files /dev/null and b/public/terrain/19/858606/353783.terrain differ diff --git a/public/terrain/19/858606/353784.terrain b/public/terrain/19/858606/353784.terrain new file mode 100644 index 000000000..856b2ed7a Binary files /dev/null and b/public/terrain/19/858606/353784.terrain differ diff --git a/public/terrain/19/858606/353785.terrain b/public/terrain/19/858606/353785.terrain new file mode 100644 index 000000000..066280536 Binary files /dev/null and b/public/terrain/19/858606/353785.terrain differ diff --git a/public/terrain/19/858606/353786.terrain b/public/terrain/19/858606/353786.terrain new file mode 100644 index 000000000..d1a49213b Binary files /dev/null and b/public/terrain/19/858606/353786.terrain differ diff --git a/public/terrain/19/858606/353787.terrain b/public/terrain/19/858606/353787.terrain new file mode 100644 index 000000000..507aeb628 Binary files /dev/null and b/public/terrain/19/858606/353787.terrain differ diff --git a/public/terrain/19/858606/353788.terrain b/public/terrain/19/858606/353788.terrain new file mode 100644 index 000000000..0db97a9ed Binary files /dev/null and b/public/terrain/19/858606/353788.terrain differ diff --git a/public/terrain/19/858606/353789.terrain b/public/terrain/19/858606/353789.terrain new file mode 100644 index 000000000..0dc9e7243 Binary files /dev/null and b/public/terrain/19/858606/353789.terrain differ diff --git a/public/terrain/19/858606/353790.terrain b/public/terrain/19/858606/353790.terrain new file mode 100644 index 000000000..0e25a99bb Binary files /dev/null and b/public/terrain/19/858606/353790.terrain differ diff --git a/public/terrain/19/858606/353791.terrain b/public/terrain/19/858606/353791.terrain new file mode 100644 index 000000000..ec5e7d170 Binary files /dev/null and b/public/terrain/19/858606/353791.terrain differ diff --git a/public/terrain/19/858606/353792.terrain b/public/terrain/19/858606/353792.terrain new file mode 100644 index 000000000..8a72a6997 Binary files /dev/null and b/public/terrain/19/858606/353792.terrain differ diff --git a/public/terrain/19/858606/353793.terrain b/public/terrain/19/858606/353793.terrain new file mode 100644 index 000000000..1f3f8eaed Binary files /dev/null and b/public/terrain/19/858606/353793.terrain differ diff --git a/public/terrain/19/858606/353794.terrain b/public/terrain/19/858606/353794.terrain new file mode 100644 index 000000000..61a69279f Binary files /dev/null and b/public/terrain/19/858606/353794.terrain differ diff --git a/public/terrain/19/858606/353795.terrain b/public/terrain/19/858606/353795.terrain new file mode 100644 index 000000000..dae62e6d9 Binary files /dev/null and b/public/terrain/19/858606/353795.terrain differ diff --git a/public/terrain/19/858606/353796.terrain b/public/terrain/19/858606/353796.terrain new file mode 100644 index 000000000..f3ad7a76b Binary files /dev/null and b/public/terrain/19/858606/353796.terrain differ diff --git a/public/terrain/19/858606/353797.terrain b/public/terrain/19/858606/353797.terrain new file mode 100644 index 000000000..d4b9c18c1 Binary files /dev/null and b/public/terrain/19/858606/353797.terrain differ diff --git a/public/terrain/19/858606/353798.terrain b/public/terrain/19/858606/353798.terrain new file mode 100644 index 000000000..7456570eb Binary files /dev/null and b/public/terrain/19/858606/353798.terrain differ diff --git a/public/terrain/19/858606/353799.terrain b/public/terrain/19/858606/353799.terrain new file mode 100644 index 000000000..a3e4fac27 Binary files /dev/null and b/public/terrain/19/858606/353799.terrain differ diff --git a/public/terrain/19/858606/353800.terrain b/public/terrain/19/858606/353800.terrain new file mode 100644 index 000000000..cacdb6850 Binary files /dev/null and b/public/terrain/19/858606/353800.terrain differ diff --git a/public/terrain/19/858606/353801.terrain b/public/terrain/19/858606/353801.terrain new file mode 100644 index 000000000..60fb83223 Binary files /dev/null and b/public/terrain/19/858606/353801.terrain differ diff --git a/public/terrain/19/858606/353802.terrain b/public/terrain/19/858606/353802.terrain new file mode 100644 index 000000000..a89e46303 Binary files /dev/null and b/public/terrain/19/858606/353802.terrain differ diff --git a/public/terrain/19/858606/353803.terrain b/public/terrain/19/858606/353803.terrain new file mode 100644 index 000000000..f52660c00 Binary files /dev/null and b/public/terrain/19/858606/353803.terrain differ diff --git a/public/terrain/19/858606/353804.terrain b/public/terrain/19/858606/353804.terrain new file mode 100644 index 000000000..b0c313022 Binary files /dev/null and b/public/terrain/19/858606/353804.terrain differ diff --git a/public/terrain/19/858606/353805.terrain b/public/terrain/19/858606/353805.terrain new file mode 100644 index 000000000..299aff92d Binary files /dev/null and b/public/terrain/19/858606/353805.terrain differ diff --git a/public/terrain/19/858606/353806.terrain b/public/terrain/19/858606/353806.terrain new file mode 100644 index 000000000..50d30e1de Binary files /dev/null and b/public/terrain/19/858606/353806.terrain differ diff --git a/public/terrain/19/858606/353807.terrain b/public/terrain/19/858606/353807.terrain new file mode 100644 index 000000000..8e5b25149 Binary files /dev/null and b/public/terrain/19/858606/353807.terrain differ diff --git a/public/terrain/19/858606/353808.terrain b/public/terrain/19/858606/353808.terrain new file mode 100644 index 000000000..ce1ca3d7a Binary files /dev/null and b/public/terrain/19/858606/353808.terrain differ diff --git a/public/terrain/19/858606/353809.terrain b/public/terrain/19/858606/353809.terrain new file mode 100644 index 000000000..811a98d62 Binary files /dev/null and b/public/terrain/19/858606/353809.terrain differ diff --git a/public/terrain/19/858606/353810.terrain b/public/terrain/19/858606/353810.terrain new file mode 100644 index 000000000..5b3346bab Binary files /dev/null and b/public/terrain/19/858606/353810.terrain differ diff --git a/public/terrain/19/858606/353811.terrain b/public/terrain/19/858606/353811.terrain new file mode 100644 index 000000000..f9ec05940 Binary files /dev/null and b/public/terrain/19/858606/353811.terrain differ diff --git a/public/terrain/19/858606/353812.terrain b/public/terrain/19/858606/353812.terrain new file mode 100644 index 000000000..e5e2a3612 Binary files /dev/null and b/public/terrain/19/858606/353812.terrain differ diff --git a/public/terrain/19/858606/353813.terrain b/public/terrain/19/858606/353813.terrain new file mode 100644 index 000000000..218fe6de9 Binary files /dev/null and b/public/terrain/19/858606/353813.terrain differ diff --git a/public/terrain/19/858606/353814.terrain b/public/terrain/19/858606/353814.terrain new file mode 100644 index 000000000..8698d3a83 Binary files /dev/null and b/public/terrain/19/858606/353814.terrain differ diff --git a/public/terrain/19/858606/353815.terrain b/public/terrain/19/858606/353815.terrain new file mode 100644 index 000000000..b26749636 Binary files /dev/null and b/public/terrain/19/858606/353815.terrain differ diff --git a/public/terrain/19/858606/353816.terrain b/public/terrain/19/858606/353816.terrain new file mode 100644 index 000000000..51c972fcd Binary files /dev/null and b/public/terrain/19/858606/353816.terrain differ diff --git a/public/terrain/19/858606/353817.terrain b/public/terrain/19/858606/353817.terrain new file mode 100644 index 000000000..9cbc80bbc Binary files /dev/null and b/public/terrain/19/858606/353817.terrain differ diff --git a/public/terrain/19/858606/353818.terrain b/public/terrain/19/858606/353818.terrain new file mode 100644 index 000000000..a8df09706 Binary files /dev/null and b/public/terrain/19/858606/353818.terrain differ diff --git a/public/terrain/19/858606/353819.terrain b/public/terrain/19/858606/353819.terrain new file mode 100644 index 000000000..8e3d8a081 Binary files /dev/null and b/public/terrain/19/858606/353819.terrain differ diff --git a/public/terrain/19/858606/353820.terrain b/public/terrain/19/858606/353820.terrain new file mode 100644 index 000000000..e2857ad26 Binary files /dev/null and b/public/terrain/19/858606/353820.terrain differ diff --git a/public/terrain/19/858606/353821.terrain b/public/terrain/19/858606/353821.terrain new file mode 100644 index 000000000..ed2c5642f Binary files /dev/null and b/public/terrain/19/858606/353821.terrain differ diff --git a/public/terrain/19/858606/353822.terrain b/public/terrain/19/858606/353822.terrain new file mode 100644 index 000000000..b64a3da2d Binary files /dev/null and b/public/terrain/19/858606/353822.terrain differ diff --git a/public/terrain/19/858606/353823.terrain b/public/terrain/19/858606/353823.terrain new file mode 100644 index 000000000..e3b9cce35 Binary files /dev/null and b/public/terrain/19/858606/353823.terrain differ diff --git a/public/terrain/19/858606/353824.terrain b/public/terrain/19/858606/353824.terrain new file mode 100644 index 000000000..dbcbb664d Binary files /dev/null and b/public/terrain/19/858606/353824.terrain differ diff --git a/public/terrain/19/858606/353825.terrain b/public/terrain/19/858606/353825.terrain new file mode 100644 index 000000000..a1886e961 Binary files /dev/null and b/public/terrain/19/858606/353825.terrain differ diff --git a/public/terrain/19/858606/353826.terrain b/public/terrain/19/858606/353826.terrain new file mode 100644 index 000000000..eb34154ed Binary files /dev/null and b/public/terrain/19/858606/353826.terrain differ diff --git a/public/terrain/19/858606/353827.terrain b/public/terrain/19/858606/353827.terrain new file mode 100644 index 000000000..d6a19d96d Binary files /dev/null and b/public/terrain/19/858606/353827.terrain differ diff --git a/public/terrain/19/858606/353828.terrain b/public/terrain/19/858606/353828.terrain new file mode 100644 index 000000000..58e81f2e0 Binary files /dev/null and b/public/terrain/19/858606/353828.terrain differ diff --git a/public/terrain/19/858606/353829.terrain b/public/terrain/19/858606/353829.terrain new file mode 100644 index 000000000..69b84214b Binary files /dev/null and b/public/terrain/19/858606/353829.terrain differ diff --git a/public/terrain/19/858606/353830.terrain b/public/terrain/19/858606/353830.terrain new file mode 100644 index 000000000..503d4ec3f Binary files /dev/null and b/public/terrain/19/858606/353830.terrain differ diff --git a/public/terrain/19/858606/353831.terrain b/public/terrain/19/858606/353831.terrain new file mode 100644 index 000000000..67dec409c Binary files /dev/null and b/public/terrain/19/858606/353831.terrain differ diff --git a/public/terrain/19/858606/353832.terrain b/public/terrain/19/858606/353832.terrain new file mode 100644 index 000000000..984633711 Binary files /dev/null and b/public/terrain/19/858606/353832.terrain differ diff --git a/public/terrain/19/858606/353833.terrain b/public/terrain/19/858606/353833.terrain new file mode 100644 index 000000000..70f78448f Binary files /dev/null and b/public/terrain/19/858606/353833.terrain differ diff --git a/public/terrain/19/858606/353834.terrain b/public/terrain/19/858606/353834.terrain new file mode 100644 index 000000000..f9089f0f6 Binary files /dev/null and b/public/terrain/19/858606/353834.terrain differ diff --git a/public/terrain/19/858606/353835.terrain b/public/terrain/19/858606/353835.terrain new file mode 100644 index 000000000..461cd809a Binary files /dev/null and b/public/terrain/19/858606/353835.terrain differ diff --git a/public/terrain/19/858606/353836.terrain b/public/terrain/19/858606/353836.terrain new file mode 100644 index 000000000..a3f74bba6 Binary files /dev/null and b/public/terrain/19/858606/353836.terrain differ diff --git a/public/terrain/19/858606/353837.terrain b/public/terrain/19/858606/353837.terrain new file mode 100644 index 000000000..1baac6c68 Binary files /dev/null and b/public/terrain/19/858606/353837.terrain differ diff --git a/public/terrain/19/858606/353838.terrain b/public/terrain/19/858606/353838.terrain new file mode 100644 index 000000000..c7634a4d9 Binary files /dev/null and b/public/terrain/19/858606/353838.terrain differ diff --git a/public/terrain/19/858606/353839.terrain b/public/terrain/19/858606/353839.terrain new file mode 100644 index 000000000..ce80ea65d Binary files /dev/null and b/public/terrain/19/858606/353839.terrain differ diff --git a/public/terrain/19/858606/353840.terrain b/public/terrain/19/858606/353840.terrain new file mode 100644 index 000000000..9f091bcd8 Binary files /dev/null and b/public/terrain/19/858606/353840.terrain differ diff --git a/public/terrain/19/858606/353841.terrain b/public/terrain/19/858606/353841.terrain new file mode 100644 index 000000000..3e6f4198d Binary files /dev/null and b/public/terrain/19/858606/353841.terrain differ diff --git a/public/terrain/19/858606/353842.terrain b/public/terrain/19/858606/353842.terrain new file mode 100644 index 000000000..11a2dbfb4 Binary files /dev/null and b/public/terrain/19/858606/353842.terrain differ diff --git a/public/terrain/19/858606/353843.terrain b/public/terrain/19/858606/353843.terrain new file mode 100644 index 000000000..8d6cea541 Binary files /dev/null and b/public/terrain/19/858606/353843.terrain differ diff --git a/public/terrain/19/858606/353844.terrain b/public/terrain/19/858606/353844.terrain new file mode 100644 index 000000000..4447e6c04 Binary files /dev/null and b/public/terrain/19/858606/353844.terrain differ diff --git a/public/terrain/19/858606/353845.terrain b/public/terrain/19/858606/353845.terrain new file mode 100644 index 000000000..d9e9ccfe5 Binary files /dev/null and b/public/terrain/19/858606/353845.terrain differ diff --git a/public/terrain/19/858606/353846.terrain b/public/terrain/19/858606/353846.terrain new file mode 100644 index 000000000..c9c70b1e2 Binary files /dev/null and b/public/terrain/19/858606/353846.terrain differ diff --git a/public/terrain/19/858606/353847.terrain b/public/terrain/19/858606/353847.terrain new file mode 100644 index 000000000..6217077da Binary files /dev/null and b/public/terrain/19/858606/353847.terrain differ diff --git a/public/terrain/19/858606/353848.terrain b/public/terrain/19/858606/353848.terrain new file mode 100644 index 000000000..e70f893b2 Binary files /dev/null and b/public/terrain/19/858606/353848.terrain differ diff --git a/public/terrain/19/858606/353849.terrain b/public/terrain/19/858606/353849.terrain new file mode 100644 index 000000000..05bf0bf76 Binary files /dev/null and b/public/terrain/19/858606/353849.terrain differ diff --git a/public/terrain/19/858606/353850.terrain b/public/terrain/19/858606/353850.terrain new file mode 100644 index 000000000..a24ba5dc3 Binary files /dev/null and b/public/terrain/19/858606/353850.terrain differ diff --git a/public/terrain/19/858606/353851.terrain b/public/terrain/19/858606/353851.terrain new file mode 100644 index 000000000..cbd8dbd8e Binary files /dev/null and b/public/terrain/19/858606/353851.terrain differ diff --git a/public/terrain/19/858606/353852.terrain b/public/terrain/19/858606/353852.terrain new file mode 100644 index 000000000..ca09eccb9 Binary files /dev/null and b/public/terrain/19/858606/353852.terrain differ diff --git a/public/terrain/19/858606/353853.terrain b/public/terrain/19/858606/353853.terrain new file mode 100644 index 000000000..71f9a68f6 Binary files /dev/null and b/public/terrain/19/858606/353853.terrain differ diff --git a/public/terrain/19/858606/353854.terrain b/public/terrain/19/858606/353854.terrain new file mode 100644 index 000000000..6afaaa445 Binary files /dev/null and b/public/terrain/19/858606/353854.terrain differ diff --git a/public/terrain/19/858606/353855.terrain b/public/terrain/19/858606/353855.terrain new file mode 100644 index 000000000..1b783970b Binary files /dev/null and b/public/terrain/19/858606/353855.terrain differ diff --git a/public/terrain/19/858606/353856.terrain b/public/terrain/19/858606/353856.terrain new file mode 100644 index 000000000..cf3f7569f Binary files /dev/null and b/public/terrain/19/858606/353856.terrain differ diff --git a/public/terrain/19/858606/353857.terrain b/public/terrain/19/858606/353857.terrain new file mode 100644 index 000000000..fc085ae08 Binary files /dev/null and b/public/terrain/19/858606/353857.terrain differ diff --git a/public/terrain/19/858606/353858.terrain b/public/terrain/19/858606/353858.terrain new file mode 100644 index 000000000..acb496708 Binary files /dev/null and b/public/terrain/19/858606/353858.terrain differ diff --git a/public/terrain/19/858606/353859.terrain b/public/terrain/19/858606/353859.terrain new file mode 100644 index 000000000..22c742e72 Binary files /dev/null and b/public/terrain/19/858606/353859.terrain differ diff --git a/public/terrain/19/858606/353860.terrain b/public/terrain/19/858606/353860.terrain new file mode 100644 index 000000000..9461c7876 Binary files /dev/null and b/public/terrain/19/858606/353860.terrain differ diff --git a/public/terrain/19/858606/353861.terrain b/public/terrain/19/858606/353861.terrain new file mode 100644 index 000000000..da31c7851 Binary files /dev/null and b/public/terrain/19/858606/353861.terrain differ diff --git a/public/terrain/19/858606/353862.terrain b/public/terrain/19/858606/353862.terrain new file mode 100644 index 000000000..45c3299ec Binary files /dev/null and b/public/terrain/19/858606/353862.terrain differ diff --git a/public/terrain/19/858606/353863.terrain b/public/terrain/19/858606/353863.terrain new file mode 100644 index 000000000..3531fd782 Binary files /dev/null and b/public/terrain/19/858606/353863.terrain differ diff --git a/public/terrain/19/858606/353864.terrain b/public/terrain/19/858606/353864.terrain new file mode 100644 index 000000000..ce8abc970 Binary files /dev/null and b/public/terrain/19/858606/353864.terrain differ diff --git a/public/terrain/19/858606/353865.terrain b/public/terrain/19/858606/353865.terrain new file mode 100644 index 000000000..6f2d9ea2a Binary files /dev/null and b/public/terrain/19/858606/353865.terrain differ diff --git a/public/terrain/19/858606/353866.terrain b/public/terrain/19/858606/353866.terrain new file mode 100644 index 000000000..57b39c664 Binary files /dev/null and b/public/terrain/19/858606/353866.terrain differ diff --git a/public/terrain/19/858606/353867.terrain b/public/terrain/19/858606/353867.terrain new file mode 100644 index 000000000..a8d194748 Binary files /dev/null and b/public/terrain/19/858606/353867.terrain differ diff --git a/public/terrain/19/858606/353868.terrain b/public/terrain/19/858606/353868.terrain new file mode 100644 index 000000000..0562e6d37 Binary files /dev/null and b/public/terrain/19/858606/353868.terrain differ diff --git a/public/terrain/19/858606/353869.terrain b/public/terrain/19/858606/353869.terrain new file mode 100644 index 000000000..aadb65d60 Binary files /dev/null and b/public/terrain/19/858606/353869.terrain differ diff --git a/public/terrain/19/858606/353870.terrain b/public/terrain/19/858606/353870.terrain new file mode 100644 index 000000000..13f3e3a4b Binary files /dev/null and b/public/terrain/19/858606/353870.terrain differ diff --git a/public/terrain/19/858606/353871.terrain b/public/terrain/19/858606/353871.terrain new file mode 100644 index 000000000..51657ac93 Binary files /dev/null and b/public/terrain/19/858606/353871.terrain differ diff --git a/public/terrain/19/858606/353872.terrain b/public/terrain/19/858606/353872.terrain new file mode 100644 index 000000000..9937d0e70 Binary files /dev/null and b/public/terrain/19/858606/353872.terrain differ diff --git a/public/terrain/19/858606/353873.terrain b/public/terrain/19/858606/353873.terrain new file mode 100644 index 000000000..bf4827bf6 Binary files /dev/null and b/public/terrain/19/858606/353873.terrain differ diff --git a/public/terrain/19/858606/353874.terrain b/public/terrain/19/858606/353874.terrain new file mode 100644 index 000000000..27732c201 Binary files /dev/null and b/public/terrain/19/858606/353874.terrain differ diff --git a/public/terrain/19/858606/353875.terrain b/public/terrain/19/858606/353875.terrain new file mode 100644 index 000000000..f89e11d3a Binary files /dev/null and b/public/terrain/19/858606/353875.terrain differ diff --git a/public/terrain/19/858606/353876.terrain b/public/terrain/19/858606/353876.terrain new file mode 100644 index 000000000..646573292 Binary files /dev/null and b/public/terrain/19/858606/353876.terrain differ diff --git a/public/terrain/19/858606/353877.terrain b/public/terrain/19/858606/353877.terrain new file mode 100644 index 000000000..1624487c5 Binary files /dev/null and b/public/terrain/19/858606/353877.terrain differ diff --git a/public/terrain/19/858606/353878.terrain b/public/terrain/19/858606/353878.terrain new file mode 100644 index 000000000..c832356ba Binary files /dev/null and b/public/terrain/19/858606/353878.terrain differ diff --git a/public/terrain/19/858606/353879.terrain b/public/terrain/19/858606/353879.terrain new file mode 100644 index 000000000..bc0e058ec Binary files /dev/null and b/public/terrain/19/858606/353879.terrain differ diff --git a/public/terrain/19/858606/353880.terrain b/public/terrain/19/858606/353880.terrain new file mode 100644 index 000000000..bb73e9f31 Binary files /dev/null and b/public/terrain/19/858606/353880.terrain differ diff --git a/public/terrain/19/858606/353881.terrain b/public/terrain/19/858606/353881.terrain new file mode 100644 index 000000000..fd11e4c45 Binary files /dev/null and b/public/terrain/19/858606/353881.terrain differ diff --git a/public/terrain/19/858606/353882.terrain b/public/terrain/19/858606/353882.terrain new file mode 100644 index 000000000..f6a8e3ec5 Binary files /dev/null and b/public/terrain/19/858606/353882.terrain differ diff --git a/public/terrain/19/858606/353883.terrain b/public/terrain/19/858606/353883.terrain new file mode 100644 index 000000000..a37f4a486 Binary files /dev/null and b/public/terrain/19/858606/353883.terrain differ diff --git a/public/terrain/19/858606/353884.terrain b/public/terrain/19/858606/353884.terrain new file mode 100644 index 000000000..d2c64d049 Binary files /dev/null and b/public/terrain/19/858606/353884.terrain differ diff --git a/public/terrain/19/858606/353885.terrain b/public/terrain/19/858606/353885.terrain new file mode 100644 index 000000000..85e24278c Binary files /dev/null and b/public/terrain/19/858606/353885.terrain differ diff --git a/public/terrain/19/858606/353886.terrain b/public/terrain/19/858606/353886.terrain new file mode 100644 index 000000000..5f3317748 Binary files /dev/null and b/public/terrain/19/858606/353886.terrain differ diff --git a/public/terrain/19/858606/353887.terrain b/public/terrain/19/858606/353887.terrain new file mode 100644 index 000000000..531b1a72b Binary files /dev/null and b/public/terrain/19/858606/353887.terrain differ diff --git a/public/terrain/19/858606/353888.terrain b/public/terrain/19/858606/353888.terrain new file mode 100644 index 000000000..da05a08ec Binary files /dev/null and b/public/terrain/19/858606/353888.terrain differ diff --git a/public/terrain/19/858606/353889.terrain b/public/terrain/19/858606/353889.terrain new file mode 100644 index 000000000..5732c96fd Binary files /dev/null and b/public/terrain/19/858606/353889.terrain differ diff --git a/public/terrain/19/858606/353890.terrain b/public/terrain/19/858606/353890.terrain new file mode 100644 index 000000000..36ae3ba53 Binary files /dev/null and b/public/terrain/19/858606/353890.terrain differ diff --git a/public/terrain/19/858606/353891.terrain b/public/terrain/19/858606/353891.terrain new file mode 100644 index 000000000..3b7cc26cd Binary files /dev/null and b/public/terrain/19/858606/353891.terrain differ diff --git a/public/terrain/19/858606/353892.terrain b/public/terrain/19/858606/353892.terrain new file mode 100644 index 000000000..644c33f42 Binary files /dev/null and b/public/terrain/19/858606/353892.terrain differ diff --git a/public/terrain/19/858606/353893.terrain b/public/terrain/19/858606/353893.terrain new file mode 100644 index 000000000..6273ec62d Binary files /dev/null and b/public/terrain/19/858606/353893.terrain differ diff --git a/public/terrain/19/858606/353894.terrain b/public/terrain/19/858606/353894.terrain new file mode 100644 index 000000000..17358db03 Binary files /dev/null and b/public/terrain/19/858606/353894.terrain differ diff --git a/public/terrain/19/858606/353895.terrain b/public/terrain/19/858606/353895.terrain new file mode 100644 index 000000000..ff5d75bce Binary files /dev/null and b/public/terrain/19/858606/353895.terrain differ diff --git a/public/terrain/19/858606/353896.terrain b/public/terrain/19/858606/353896.terrain new file mode 100644 index 000000000..a20709295 Binary files /dev/null and b/public/terrain/19/858606/353896.terrain differ diff --git a/public/terrain/19/858606/353897.terrain b/public/terrain/19/858606/353897.terrain new file mode 100644 index 000000000..cc4b51365 Binary files /dev/null and b/public/terrain/19/858606/353897.terrain differ diff --git a/public/terrain/19/858606/353898.terrain b/public/terrain/19/858606/353898.terrain new file mode 100644 index 000000000..7f38a1f12 Binary files /dev/null and b/public/terrain/19/858606/353898.terrain differ diff --git a/public/terrain/19/858606/353899.terrain b/public/terrain/19/858606/353899.terrain new file mode 100644 index 000000000..93b078457 Binary files /dev/null and b/public/terrain/19/858606/353899.terrain differ diff --git a/public/terrain/19/858606/353900.terrain b/public/terrain/19/858606/353900.terrain new file mode 100644 index 000000000..53a980898 Binary files /dev/null and b/public/terrain/19/858606/353900.terrain differ diff --git a/public/terrain/19/858606/353901.terrain b/public/terrain/19/858606/353901.terrain new file mode 100644 index 000000000..c90d4f43c Binary files /dev/null and b/public/terrain/19/858606/353901.terrain differ diff --git a/public/terrain/19/858606/353902.terrain b/public/terrain/19/858606/353902.terrain new file mode 100644 index 000000000..5b2b80090 Binary files /dev/null and b/public/terrain/19/858606/353902.terrain differ diff --git a/public/terrain/19/858606/353903.terrain b/public/terrain/19/858606/353903.terrain new file mode 100644 index 000000000..139bd507e Binary files /dev/null and b/public/terrain/19/858606/353903.terrain differ diff --git a/public/terrain/19/858606/353904.terrain b/public/terrain/19/858606/353904.terrain new file mode 100644 index 000000000..44e237812 Binary files /dev/null and b/public/terrain/19/858606/353904.terrain differ diff --git a/public/terrain/19/858606/353905.terrain b/public/terrain/19/858606/353905.terrain new file mode 100644 index 000000000..702e6b512 Binary files /dev/null and b/public/terrain/19/858606/353905.terrain differ diff --git a/public/terrain/19/858606/353906.terrain b/public/terrain/19/858606/353906.terrain new file mode 100644 index 000000000..71538162d Binary files /dev/null and b/public/terrain/19/858606/353906.terrain differ diff --git a/public/terrain/19/858606/353907.terrain b/public/terrain/19/858606/353907.terrain new file mode 100644 index 000000000..c772d1b8b Binary files /dev/null and b/public/terrain/19/858606/353907.terrain differ diff --git a/public/terrain/19/858606/353908.terrain b/public/terrain/19/858606/353908.terrain new file mode 100644 index 000000000..5cb6d51e4 Binary files /dev/null and b/public/terrain/19/858606/353908.terrain differ diff --git a/public/terrain/19/858606/353909.terrain b/public/terrain/19/858606/353909.terrain new file mode 100644 index 000000000..010aef1a9 Binary files /dev/null and b/public/terrain/19/858606/353909.terrain differ diff --git a/public/terrain/19/858606/353910.terrain b/public/terrain/19/858606/353910.terrain new file mode 100644 index 000000000..e10e5e47a Binary files /dev/null and b/public/terrain/19/858606/353910.terrain differ diff --git a/public/terrain/19/858606/353911.terrain b/public/terrain/19/858606/353911.terrain new file mode 100644 index 000000000..f48e8ef7f Binary files /dev/null and b/public/terrain/19/858606/353911.terrain differ diff --git a/public/terrain/19/858606/353912.terrain b/public/terrain/19/858606/353912.terrain new file mode 100644 index 000000000..4eca23aac Binary files /dev/null and b/public/terrain/19/858606/353912.terrain differ diff --git a/public/terrain/19/858606/353913.terrain b/public/terrain/19/858606/353913.terrain new file mode 100644 index 000000000..851a6abe2 Binary files /dev/null and b/public/terrain/19/858606/353913.terrain differ diff --git a/public/terrain/19/858606/353914.terrain b/public/terrain/19/858606/353914.terrain new file mode 100644 index 000000000..704ce2fce Binary files /dev/null and b/public/terrain/19/858606/353914.terrain differ diff --git a/public/terrain/19/858606/353915.terrain b/public/terrain/19/858606/353915.terrain new file mode 100644 index 000000000..00de43f02 Binary files /dev/null and b/public/terrain/19/858606/353915.terrain differ diff --git a/public/terrain/19/858606/353916.terrain b/public/terrain/19/858606/353916.terrain new file mode 100644 index 000000000..8245e4f45 Binary files /dev/null and b/public/terrain/19/858606/353916.terrain differ diff --git a/public/terrain/19/858606/353917.terrain b/public/terrain/19/858606/353917.terrain new file mode 100644 index 000000000..d091c62e6 Binary files /dev/null and b/public/terrain/19/858606/353917.terrain differ diff --git a/public/terrain/19/858606/353918.terrain b/public/terrain/19/858606/353918.terrain new file mode 100644 index 000000000..6dd7f9ba9 Binary files /dev/null and b/public/terrain/19/858606/353918.terrain differ diff --git a/public/terrain/19/858606/353919.terrain b/public/terrain/19/858606/353919.terrain new file mode 100644 index 000000000..1d9dc2c6e Binary files /dev/null and b/public/terrain/19/858606/353919.terrain differ diff --git a/public/terrain/19/858606/353920.terrain b/public/terrain/19/858606/353920.terrain new file mode 100644 index 000000000..f4fd73763 Binary files /dev/null and b/public/terrain/19/858606/353920.terrain differ diff --git a/public/terrain/19/858606/353921.terrain b/public/terrain/19/858606/353921.terrain new file mode 100644 index 000000000..d3b92c501 Binary files /dev/null and b/public/terrain/19/858606/353921.terrain differ diff --git a/public/terrain/19/858606/353922.terrain b/public/terrain/19/858606/353922.terrain new file mode 100644 index 000000000..b8193f9f4 Binary files /dev/null and b/public/terrain/19/858606/353922.terrain differ diff --git a/public/terrain/19/858606/353923.terrain b/public/terrain/19/858606/353923.terrain new file mode 100644 index 000000000..24367b164 Binary files /dev/null and b/public/terrain/19/858606/353923.terrain differ diff --git a/public/terrain/19/858606/353924.terrain b/public/terrain/19/858606/353924.terrain new file mode 100644 index 000000000..7a42c197f Binary files /dev/null and b/public/terrain/19/858606/353924.terrain differ diff --git a/public/terrain/19/858606/353925.terrain b/public/terrain/19/858606/353925.terrain new file mode 100644 index 000000000..d54be589f Binary files /dev/null and b/public/terrain/19/858606/353925.terrain differ diff --git a/public/terrain/19/858606/353926.terrain b/public/terrain/19/858606/353926.terrain new file mode 100644 index 000000000..698860b6f Binary files /dev/null and b/public/terrain/19/858606/353926.terrain differ diff --git a/public/terrain/19/858606/353927.terrain b/public/terrain/19/858606/353927.terrain new file mode 100644 index 000000000..2db2abcc5 Binary files /dev/null and b/public/terrain/19/858606/353927.terrain differ diff --git a/public/terrain/19/858606/353928.terrain b/public/terrain/19/858606/353928.terrain new file mode 100644 index 000000000..8012efad5 Binary files /dev/null and b/public/terrain/19/858606/353928.terrain differ diff --git a/public/terrain/19/858606/353929.terrain b/public/terrain/19/858606/353929.terrain new file mode 100644 index 000000000..f1b6856a4 Binary files /dev/null and b/public/terrain/19/858606/353929.terrain differ diff --git a/public/terrain/19/858606/353930.terrain b/public/terrain/19/858606/353930.terrain new file mode 100644 index 000000000..6e0c2484f Binary files /dev/null and b/public/terrain/19/858606/353930.terrain differ diff --git a/public/terrain/19/858606/353931.terrain b/public/terrain/19/858606/353931.terrain new file mode 100644 index 000000000..ff166556c Binary files /dev/null and b/public/terrain/19/858606/353931.terrain differ diff --git a/public/terrain/19/858606/353932.terrain b/public/terrain/19/858606/353932.terrain new file mode 100644 index 000000000..4859b2702 Binary files /dev/null and b/public/terrain/19/858606/353932.terrain differ diff --git a/public/terrain/19/858606/353933.terrain b/public/terrain/19/858606/353933.terrain new file mode 100644 index 000000000..3968eb098 Binary files /dev/null and b/public/terrain/19/858606/353933.terrain differ diff --git a/public/terrain/19/858606/353934.terrain b/public/terrain/19/858606/353934.terrain new file mode 100644 index 000000000..70a7fbefb Binary files /dev/null and b/public/terrain/19/858606/353934.terrain differ diff --git a/public/terrain/19/858606/353935.terrain b/public/terrain/19/858606/353935.terrain new file mode 100644 index 000000000..cec9d7cef Binary files /dev/null and b/public/terrain/19/858606/353935.terrain differ diff --git a/public/terrain/19/858606/353936.terrain b/public/terrain/19/858606/353936.terrain new file mode 100644 index 000000000..d4305b852 Binary files /dev/null and b/public/terrain/19/858606/353936.terrain differ diff --git a/public/terrain/19/858606/353937.terrain b/public/terrain/19/858606/353937.terrain new file mode 100644 index 000000000..c15cdb41b Binary files /dev/null and b/public/terrain/19/858606/353937.terrain differ diff --git a/public/terrain/19/858606/353938.terrain b/public/terrain/19/858606/353938.terrain new file mode 100644 index 000000000..1615af4af Binary files /dev/null and b/public/terrain/19/858606/353938.terrain differ diff --git a/public/terrain/19/858606/353939.terrain b/public/terrain/19/858606/353939.terrain new file mode 100644 index 000000000..058b42ab1 Binary files /dev/null and b/public/terrain/19/858606/353939.terrain differ diff --git a/public/terrain/19/858606/353940.terrain b/public/terrain/19/858606/353940.terrain new file mode 100644 index 000000000..351da746a Binary files /dev/null and b/public/terrain/19/858606/353940.terrain differ diff --git a/public/terrain/19/858606/353941.terrain b/public/terrain/19/858606/353941.terrain new file mode 100644 index 000000000..a21f77627 Binary files /dev/null and b/public/terrain/19/858606/353941.terrain differ diff --git a/public/terrain/19/858606/353942.terrain b/public/terrain/19/858606/353942.terrain new file mode 100644 index 000000000..a60121d75 Binary files /dev/null and b/public/terrain/19/858606/353942.terrain differ diff --git a/public/terrain/19/858606/353943.terrain b/public/terrain/19/858606/353943.terrain new file mode 100644 index 000000000..c3b74dd73 Binary files /dev/null and b/public/terrain/19/858606/353943.terrain differ diff --git a/public/terrain/19/858606/353944.terrain b/public/terrain/19/858606/353944.terrain new file mode 100644 index 000000000..df5c25dc1 Binary files /dev/null and b/public/terrain/19/858606/353944.terrain differ diff --git a/public/terrain/19/858606/353945.terrain b/public/terrain/19/858606/353945.terrain new file mode 100644 index 000000000..04feea0e0 Binary files /dev/null and b/public/terrain/19/858606/353945.terrain differ diff --git a/public/terrain/19/858606/353946.terrain b/public/terrain/19/858606/353946.terrain new file mode 100644 index 000000000..f6d2521ac Binary files /dev/null and b/public/terrain/19/858606/353946.terrain differ diff --git a/public/terrain/19/858606/353947.terrain b/public/terrain/19/858606/353947.terrain new file mode 100644 index 000000000..835e1949e Binary files /dev/null and b/public/terrain/19/858606/353947.terrain differ diff --git a/public/terrain/19/858606/353948.terrain b/public/terrain/19/858606/353948.terrain new file mode 100644 index 000000000..6025d9f5d Binary files /dev/null and b/public/terrain/19/858606/353948.terrain differ diff --git a/public/terrain/19/858606/353949.terrain b/public/terrain/19/858606/353949.terrain new file mode 100644 index 000000000..1dde65905 Binary files /dev/null and b/public/terrain/19/858606/353949.terrain differ diff --git a/public/terrain/19/858606/353950.terrain b/public/terrain/19/858606/353950.terrain new file mode 100644 index 000000000..627a5e0de Binary files /dev/null and b/public/terrain/19/858606/353950.terrain differ diff --git a/public/terrain/19/858606/353951.terrain b/public/terrain/19/858606/353951.terrain new file mode 100644 index 000000000..919b705d6 Binary files /dev/null and b/public/terrain/19/858606/353951.terrain differ diff --git a/public/terrain/19/858606/353952.terrain b/public/terrain/19/858606/353952.terrain new file mode 100644 index 000000000..2ddeb9018 Binary files /dev/null and b/public/terrain/19/858606/353952.terrain differ diff --git a/public/terrain/19/858606/353953.terrain b/public/terrain/19/858606/353953.terrain new file mode 100644 index 000000000..8b72f7e5c Binary files /dev/null and b/public/terrain/19/858606/353953.terrain differ diff --git a/public/terrain/19/858606/353954.terrain b/public/terrain/19/858606/353954.terrain new file mode 100644 index 000000000..1602b2dde Binary files /dev/null and b/public/terrain/19/858606/353954.terrain differ diff --git a/public/terrain/19/858606/353955.terrain b/public/terrain/19/858606/353955.terrain new file mode 100644 index 000000000..6398d743f Binary files /dev/null and b/public/terrain/19/858606/353955.terrain differ diff --git a/public/terrain/19/858606/353956.terrain b/public/terrain/19/858606/353956.terrain new file mode 100644 index 000000000..2498552de Binary files /dev/null and b/public/terrain/19/858606/353956.terrain differ diff --git a/public/terrain/19/858606/353957.terrain b/public/terrain/19/858606/353957.terrain new file mode 100644 index 000000000..31fe4f6cb Binary files /dev/null and b/public/terrain/19/858606/353957.terrain differ diff --git a/public/terrain/19/858606/353958.terrain b/public/terrain/19/858606/353958.terrain new file mode 100644 index 000000000..284ac1894 Binary files /dev/null and b/public/terrain/19/858606/353958.terrain differ diff --git a/public/terrain/19/858606/353959.terrain b/public/terrain/19/858606/353959.terrain new file mode 100644 index 000000000..cd412c34c Binary files /dev/null and b/public/terrain/19/858606/353959.terrain differ diff --git a/public/terrain/19/858606/353960.terrain b/public/terrain/19/858606/353960.terrain new file mode 100644 index 000000000..782622993 Binary files /dev/null and b/public/terrain/19/858606/353960.terrain differ diff --git a/public/terrain/19/858606/353961.terrain b/public/terrain/19/858606/353961.terrain new file mode 100644 index 000000000..dac98f985 Binary files /dev/null and b/public/terrain/19/858606/353961.terrain differ diff --git a/public/terrain/19/858606/353962.terrain b/public/terrain/19/858606/353962.terrain new file mode 100644 index 000000000..ef4ffd714 Binary files /dev/null and b/public/terrain/19/858606/353962.terrain differ diff --git a/public/terrain/19/858606/353963.terrain b/public/terrain/19/858606/353963.terrain new file mode 100644 index 000000000..c624e3c82 Binary files /dev/null and b/public/terrain/19/858606/353963.terrain differ diff --git a/public/terrain/19/858606/353964.terrain b/public/terrain/19/858606/353964.terrain new file mode 100644 index 000000000..98ce8dde0 Binary files /dev/null and b/public/terrain/19/858606/353964.terrain differ diff --git a/public/terrain/19/858606/353965.terrain b/public/terrain/19/858606/353965.terrain new file mode 100644 index 000000000..c830cf93f Binary files /dev/null and b/public/terrain/19/858606/353965.terrain differ diff --git a/public/terrain/19/858606/353966.terrain b/public/terrain/19/858606/353966.terrain new file mode 100644 index 000000000..578c33719 Binary files /dev/null and b/public/terrain/19/858606/353966.terrain differ diff --git a/public/terrain/19/858606/353967.terrain b/public/terrain/19/858606/353967.terrain new file mode 100644 index 000000000..f2ca12c89 Binary files /dev/null and b/public/terrain/19/858606/353967.terrain differ diff --git a/public/terrain/19/858606/353968.terrain b/public/terrain/19/858606/353968.terrain new file mode 100644 index 000000000..1a073b5ab Binary files /dev/null and b/public/terrain/19/858606/353968.terrain differ diff --git a/public/terrain/19/858606/353969.terrain b/public/terrain/19/858606/353969.terrain new file mode 100644 index 000000000..2b745608b Binary files /dev/null and b/public/terrain/19/858606/353969.terrain differ diff --git a/public/terrain/19/858606/353970.terrain b/public/terrain/19/858606/353970.terrain new file mode 100644 index 000000000..cd154db31 Binary files /dev/null and b/public/terrain/19/858606/353970.terrain differ diff --git a/public/terrain/19/858606/353971.terrain b/public/terrain/19/858606/353971.terrain new file mode 100644 index 000000000..c7426926d Binary files /dev/null and b/public/terrain/19/858606/353971.terrain differ diff --git a/public/terrain/19/858606/353972.terrain b/public/terrain/19/858606/353972.terrain new file mode 100644 index 000000000..13b770b1e Binary files /dev/null and b/public/terrain/19/858606/353972.terrain differ diff --git a/public/terrain/19/858606/353973.terrain b/public/terrain/19/858606/353973.terrain new file mode 100644 index 000000000..c65f1832e Binary files /dev/null and b/public/terrain/19/858606/353973.terrain differ diff --git a/public/terrain/19/858606/353974.terrain b/public/terrain/19/858606/353974.terrain new file mode 100644 index 000000000..873b4e7ac Binary files /dev/null and b/public/terrain/19/858606/353974.terrain differ diff --git a/public/terrain/19/858606/353975.terrain b/public/terrain/19/858606/353975.terrain new file mode 100644 index 000000000..6ddc0dd09 Binary files /dev/null and b/public/terrain/19/858606/353975.terrain differ diff --git a/public/terrain/19/858606/353976.terrain b/public/terrain/19/858606/353976.terrain new file mode 100644 index 000000000..238bfa7f3 Binary files /dev/null and b/public/terrain/19/858606/353976.terrain differ diff --git a/public/terrain/19/858606/353977.terrain b/public/terrain/19/858606/353977.terrain new file mode 100644 index 000000000..de9e44e06 Binary files /dev/null and b/public/terrain/19/858606/353977.terrain differ diff --git a/public/terrain/19/858606/353978.terrain b/public/terrain/19/858606/353978.terrain new file mode 100644 index 000000000..b5df34867 Binary files /dev/null and b/public/terrain/19/858606/353978.terrain differ diff --git a/public/terrain/19/858606/353979.terrain b/public/terrain/19/858606/353979.terrain new file mode 100644 index 000000000..81aaf1222 Binary files /dev/null and b/public/terrain/19/858606/353979.terrain differ diff --git a/public/terrain/19/858606/353980.terrain b/public/terrain/19/858606/353980.terrain new file mode 100644 index 000000000..7c7d09ab2 Binary files /dev/null and b/public/terrain/19/858606/353980.terrain differ diff --git a/public/terrain/19/858606/353981.terrain b/public/terrain/19/858606/353981.terrain new file mode 100644 index 000000000..55519abea Binary files /dev/null and b/public/terrain/19/858606/353981.terrain differ diff --git a/public/terrain/19/858606/353982.terrain b/public/terrain/19/858606/353982.terrain new file mode 100644 index 000000000..2c11b4bde Binary files /dev/null and b/public/terrain/19/858606/353982.terrain differ diff --git a/public/terrain/19/858606/353983.terrain b/public/terrain/19/858606/353983.terrain new file mode 100644 index 000000000..b34f871f6 Binary files /dev/null and b/public/terrain/19/858606/353983.terrain differ diff --git a/public/terrain/19/858606/353984.terrain b/public/terrain/19/858606/353984.terrain new file mode 100644 index 000000000..0a7c939ee Binary files /dev/null and b/public/terrain/19/858606/353984.terrain differ diff --git a/public/terrain/19/858606/353985.terrain b/public/terrain/19/858606/353985.terrain new file mode 100644 index 000000000..c83e710f0 Binary files /dev/null and b/public/terrain/19/858606/353985.terrain differ diff --git a/public/terrain/19/858606/353986.terrain b/public/terrain/19/858606/353986.terrain new file mode 100644 index 000000000..3d9b1dc61 Binary files /dev/null and b/public/terrain/19/858606/353986.terrain differ diff --git a/public/terrain/19/858606/353987.terrain b/public/terrain/19/858606/353987.terrain new file mode 100644 index 000000000..fbfae28f2 Binary files /dev/null and b/public/terrain/19/858606/353987.terrain differ diff --git a/public/terrain/19/858606/353988.terrain b/public/terrain/19/858606/353988.terrain new file mode 100644 index 000000000..9f2d9367c Binary files /dev/null and b/public/terrain/19/858606/353988.terrain differ diff --git a/public/terrain/19/858606/353989.terrain b/public/terrain/19/858606/353989.terrain new file mode 100644 index 000000000..3137880ea Binary files /dev/null and b/public/terrain/19/858606/353989.terrain differ diff --git a/public/terrain/19/858606/353990.terrain b/public/terrain/19/858606/353990.terrain new file mode 100644 index 000000000..d62c14d3a Binary files /dev/null and b/public/terrain/19/858606/353990.terrain differ diff --git a/public/terrain/19/858606/353991.terrain b/public/terrain/19/858606/353991.terrain new file mode 100644 index 000000000..d1916a51e Binary files /dev/null and b/public/terrain/19/858606/353991.terrain differ diff --git a/public/terrain/19/858606/353992.terrain b/public/terrain/19/858606/353992.terrain new file mode 100644 index 000000000..3577d6819 Binary files /dev/null and b/public/terrain/19/858606/353992.terrain differ diff --git a/public/terrain/19/858606/353993.terrain b/public/terrain/19/858606/353993.terrain new file mode 100644 index 000000000..800b0a30c Binary files /dev/null and b/public/terrain/19/858606/353993.terrain differ diff --git a/public/terrain/19/858606/353994.terrain b/public/terrain/19/858606/353994.terrain new file mode 100644 index 000000000..198b035c6 Binary files /dev/null and b/public/terrain/19/858606/353994.terrain differ diff --git a/public/terrain/19/858606/353995.terrain b/public/terrain/19/858606/353995.terrain new file mode 100644 index 000000000..12dba5829 Binary files /dev/null and b/public/terrain/19/858606/353995.terrain differ diff --git a/public/terrain/19/858606/353996.terrain b/public/terrain/19/858606/353996.terrain new file mode 100644 index 000000000..6b870f61c Binary files /dev/null and b/public/terrain/19/858606/353996.terrain differ diff --git a/public/terrain/19/858606/353997.terrain b/public/terrain/19/858606/353997.terrain new file mode 100644 index 000000000..3bbe0f5e0 Binary files /dev/null and b/public/terrain/19/858606/353997.terrain differ diff --git a/public/terrain/19/858606/353998.terrain b/public/terrain/19/858606/353998.terrain new file mode 100644 index 000000000..f0eb753d7 Binary files /dev/null and b/public/terrain/19/858606/353998.terrain differ diff --git a/public/terrain/19/858606/353999.terrain b/public/terrain/19/858606/353999.terrain new file mode 100644 index 000000000..57bab192f Binary files /dev/null and b/public/terrain/19/858606/353999.terrain differ diff --git a/public/terrain/19/858606/354000.terrain b/public/terrain/19/858606/354000.terrain new file mode 100644 index 000000000..fbb11b844 Binary files /dev/null and b/public/terrain/19/858606/354000.terrain differ diff --git a/public/terrain/19/858606/354001.terrain b/public/terrain/19/858606/354001.terrain new file mode 100644 index 000000000..35659251b Binary files /dev/null and b/public/terrain/19/858606/354001.terrain differ diff --git a/public/terrain/19/858606/354002.terrain b/public/terrain/19/858606/354002.terrain new file mode 100644 index 000000000..8d5fad426 Binary files /dev/null and b/public/terrain/19/858606/354002.terrain differ diff --git a/public/terrain/19/858606/354003.terrain b/public/terrain/19/858606/354003.terrain new file mode 100644 index 000000000..fc10ce434 Binary files /dev/null and b/public/terrain/19/858606/354003.terrain differ diff --git a/public/terrain/19/858606/354004.terrain b/public/terrain/19/858606/354004.terrain new file mode 100644 index 000000000..6521fc9c9 Binary files /dev/null and b/public/terrain/19/858606/354004.terrain differ diff --git a/public/terrain/19/858606/354005.terrain b/public/terrain/19/858606/354005.terrain new file mode 100644 index 000000000..a4b7e3ed4 Binary files /dev/null and b/public/terrain/19/858606/354005.terrain differ diff --git a/public/terrain/19/858606/354006.terrain b/public/terrain/19/858606/354006.terrain new file mode 100644 index 000000000..e7d45fe3e Binary files /dev/null and b/public/terrain/19/858606/354006.terrain differ diff --git a/public/terrain/19/858606/354007.terrain b/public/terrain/19/858606/354007.terrain new file mode 100644 index 000000000..d2c524a78 Binary files /dev/null and b/public/terrain/19/858606/354007.terrain differ diff --git a/public/terrain/19/858606/354008.terrain b/public/terrain/19/858606/354008.terrain new file mode 100644 index 000000000..ded5732be Binary files /dev/null and b/public/terrain/19/858606/354008.terrain differ diff --git a/public/terrain/19/858606/354009.terrain b/public/terrain/19/858606/354009.terrain new file mode 100644 index 000000000..e6235e16e Binary files /dev/null and b/public/terrain/19/858606/354009.terrain differ diff --git a/public/terrain/19/858606/354010.terrain b/public/terrain/19/858606/354010.terrain new file mode 100644 index 000000000..5ef81d49c Binary files /dev/null and b/public/terrain/19/858606/354010.terrain differ diff --git a/public/terrain/19/858606/354011.terrain b/public/terrain/19/858606/354011.terrain new file mode 100644 index 000000000..b7b647c47 Binary files /dev/null and b/public/terrain/19/858606/354011.terrain differ diff --git a/public/terrain/19/858606/354012.terrain b/public/terrain/19/858606/354012.terrain new file mode 100644 index 000000000..4944f3897 Binary files /dev/null and b/public/terrain/19/858606/354012.terrain differ diff --git a/public/terrain/19/858606/354013.terrain b/public/terrain/19/858606/354013.terrain new file mode 100644 index 000000000..ec43d435e Binary files /dev/null and b/public/terrain/19/858606/354013.terrain differ diff --git a/public/terrain/19/858606/354014.terrain b/public/terrain/19/858606/354014.terrain new file mode 100644 index 000000000..7728bca4e Binary files /dev/null and b/public/terrain/19/858606/354014.terrain differ diff --git a/public/terrain/19/858606/354015.terrain b/public/terrain/19/858606/354015.terrain new file mode 100644 index 000000000..79884a63d Binary files /dev/null and b/public/terrain/19/858606/354015.terrain differ diff --git a/public/terrain/19/858606/354016.terrain b/public/terrain/19/858606/354016.terrain new file mode 100644 index 000000000..d2624e3d4 Binary files /dev/null and b/public/terrain/19/858606/354016.terrain differ diff --git a/public/terrain/19/858606/354017.terrain b/public/terrain/19/858606/354017.terrain new file mode 100644 index 000000000..0561d186b Binary files /dev/null and b/public/terrain/19/858606/354017.terrain differ diff --git a/public/terrain/19/858606/354018.terrain b/public/terrain/19/858606/354018.terrain new file mode 100644 index 000000000..e1211a739 Binary files /dev/null and b/public/terrain/19/858606/354018.terrain differ diff --git a/public/terrain/19/858606/354019.terrain b/public/terrain/19/858606/354019.terrain new file mode 100644 index 000000000..637c86ed8 Binary files /dev/null and b/public/terrain/19/858606/354019.terrain differ diff --git a/public/terrain/19/858606/354020.terrain b/public/terrain/19/858606/354020.terrain new file mode 100644 index 000000000..4c065cb0e Binary files /dev/null and b/public/terrain/19/858606/354020.terrain differ diff --git a/public/terrain/19/858606/354021.terrain b/public/terrain/19/858606/354021.terrain new file mode 100644 index 000000000..d7d029af5 Binary files /dev/null and b/public/terrain/19/858606/354021.terrain differ diff --git a/public/terrain/19/858606/354022.terrain b/public/terrain/19/858606/354022.terrain new file mode 100644 index 000000000..16e147a32 Binary files /dev/null and b/public/terrain/19/858606/354022.terrain differ diff --git a/public/terrain/19/858606/354023.terrain b/public/terrain/19/858606/354023.terrain new file mode 100644 index 000000000..2dc19c48e Binary files /dev/null and b/public/terrain/19/858606/354023.terrain differ diff --git a/public/terrain/19/858606/354024.terrain b/public/terrain/19/858606/354024.terrain new file mode 100644 index 000000000..dd17352f7 Binary files /dev/null and b/public/terrain/19/858606/354024.terrain differ diff --git a/public/terrain/19/858606/354025.terrain b/public/terrain/19/858606/354025.terrain new file mode 100644 index 000000000..1395da4d1 Binary files /dev/null and b/public/terrain/19/858606/354025.terrain differ diff --git a/public/terrain/19/858606/354026.terrain b/public/terrain/19/858606/354026.terrain new file mode 100644 index 000000000..b18cacd78 Binary files /dev/null and b/public/terrain/19/858606/354026.terrain differ diff --git a/public/terrain/19/858606/354027.terrain b/public/terrain/19/858606/354027.terrain new file mode 100644 index 000000000..ff9059ff9 Binary files /dev/null and b/public/terrain/19/858606/354027.terrain differ diff --git a/public/terrain/19/858606/354028.terrain b/public/terrain/19/858606/354028.terrain new file mode 100644 index 000000000..b9819569a Binary files /dev/null and b/public/terrain/19/858606/354028.terrain differ diff --git a/public/terrain/19/858606/354029.terrain b/public/terrain/19/858606/354029.terrain new file mode 100644 index 000000000..4d3a6fd89 Binary files /dev/null and b/public/terrain/19/858606/354029.terrain differ diff --git a/public/terrain/19/858606/354030.terrain b/public/terrain/19/858606/354030.terrain new file mode 100644 index 000000000..71011acf2 Binary files /dev/null and b/public/terrain/19/858606/354030.terrain differ diff --git a/public/terrain/19/858606/354031.terrain b/public/terrain/19/858606/354031.terrain new file mode 100644 index 000000000..298f1a698 Binary files /dev/null and b/public/terrain/19/858606/354031.terrain differ diff --git a/public/terrain/19/858606/354032.terrain b/public/terrain/19/858606/354032.terrain new file mode 100644 index 000000000..1581978b2 Binary files /dev/null and b/public/terrain/19/858606/354032.terrain differ diff --git a/public/terrain/19/858606/354033.terrain b/public/terrain/19/858606/354033.terrain new file mode 100644 index 000000000..1739b7ac2 Binary files /dev/null and b/public/terrain/19/858606/354033.terrain differ diff --git a/public/terrain/19/858606/354034.terrain b/public/terrain/19/858606/354034.terrain new file mode 100644 index 000000000..f831d1e22 Binary files /dev/null and b/public/terrain/19/858606/354034.terrain differ diff --git a/public/terrain/19/858606/354035.terrain b/public/terrain/19/858606/354035.terrain new file mode 100644 index 000000000..82069d08d Binary files /dev/null and b/public/terrain/19/858606/354035.terrain differ diff --git a/public/terrain/19/858606/354036.terrain b/public/terrain/19/858606/354036.terrain new file mode 100644 index 000000000..410beadb8 Binary files /dev/null and b/public/terrain/19/858606/354036.terrain differ diff --git a/public/terrain/19/858606/354037.terrain b/public/terrain/19/858606/354037.terrain new file mode 100644 index 000000000..00d4ae35a Binary files /dev/null and b/public/terrain/19/858606/354037.terrain differ diff --git a/public/terrain/19/858606/354038.terrain b/public/terrain/19/858606/354038.terrain new file mode 100644 index 000000000..9c3c1a020 Binary files /dev/null and b/public/terrain/19/858606/354038.terrain differ diff --git a/public/terrain/19/858606/354039.terrain b/public/terrain/19/858606/354039.terrain new file mode 100644 index 000000000..becd24e55 Binary files /dev/null and b/public/terrain/19/858606/354039.terrain differ diff --git a/public/terrain/19/858606/354040.terrain b/public/terrain/19/858606/354040.terrain new file mode 100644 index 000000000..2101d2c39 Binary files /dev/null and b/public/terrain/19/858606/354040.terrain differ diff --git a/public/terrain/19/858606/354041.terrain b/public/terrain/19/858606/354041.terrain new file mode 100644 index 000000000..fc14acbec Binary files /dev/null and b/public/terrain/19/858606/354041.terrain differ diff --git a/public/terrain/19/858606/354042.terrain b/public/terrain/19/858606/354042.terrain new file mode 100644 index 000000000..579d3fa43 Binary files /dev/null and b/public/terrain/19/858606/354042.terrain differ diff --git a/public/terrain/19/858606/354043.terrain b/public/terrain/19/858606/354043.terrain new file mode 100644 index 000000000..c2f3502e4 Binary files /dev/null and b/public/terrain/19/858606/354043.terrain differ diff --git a/public/terrain/19/858606/354044.terrain b/public/terrain/19/858606/354044.terrain new file mode 100644 index 000000000..09304ca58 Binary files /dev/null and b/public/terrain/19/858606/354044.terrain differ diff --git a/public/terrain/19/858606/354045.terrain b/public/terrain/19/858606/354045.terrain new file mode 100644 index 000000000..8969ef514 Binary files /dev/null and b/public/terrain/19/858606/354045.terrain differ diff --git a/public/terrain/19/858606/354046.terrain b/public/terrain/19/858606/354046.terrain new file mode 100644 index 000000000..2dec8c328 Binary files /dev/null and b/public/terrain/19/858606/354046.terrain differ diff --git a/public/terrain/19/858606/354047.terrain b/public/terrain/19/858606/354047.terrain new file mode 100644 index 000000000..9832d8044 Binary files /dev/null and b/public/terrain/19/858606/354047.terrain differ diff --git a/public/terrain/19/858606/354048.terrain b/public/terrain/19/858606/354048.terrain new file mode 100644 index 000000000..e9b9c471f Binary files /dev/null and b/public/terrain/19/858606/354048.terrain differ diff --git a/public/terrain/19/858606/354049.terrain b/public/terrain/19/858606/354049.terrain new file mode 100644 index 000000000..b4eb03944 Binary files /dev/null and b/public/terrain/19/858606/354049.terrain differ diff --git a/public/terrain/19/858606/354050.terrain b/public/terrain/19/858606/354050.terrain new file mode 100644 index 000000000..a1856de50 Binary files /dev/null and b/public/terrain/19/858606/354050.terrain differ diff --git a/public/terrain/19/858606/354051.terrain b/public/terrain/19/858606/354051.terrain new file mode 100644 index 000000000..6d6dd3b81 Binary files /dev/null and b/public/terrain/19/858606/354051.terrain differ diff --git a/public/terrain/19/858606/354052.terrain b/public/terrain/19/858606/354052.terrain new file mode 100644 index 000000000..81a686af6 Binary files /dev/null and b/public/terrain/19/858606/354052.terrain differ diff --git a/public/terrain/19/858606/354053.terrain b/public/terrain/19/858606/354053.terrain new file mode 100644 index 000000000..00f1339be Binary files /dev/null and b/public/terrain/19/858606/354053.terrain differ diff --git a/public/terrain/19/858606/354054.terrain b/public/terrain/19/858606/354054.terrain new file mode 100644 index 000000000..26f02da49 Binary files /dev/null and b/public/terrain/19/858606/354054.terrain differ diff --git a/public/terrain/19/858606/354055.terrain b/public/terrain/19/858606/354055.terrain new file mode 100644 index 000000000..209d0f810 Binary files /dev/null and b/public/terrain/19/858606/354055.terrain differ diff --git a/public/terrain/19/858606/354056.terrain b/public/terrain/19/858606/354056.terrain new file mode 100644 index 000000000..fc2ceeabb Binary files /dev/null and b/public/terrain/19/858606/354056.terrain differ diff --git a/public/terrain/19/858606/354057.terrain b/public/terrain/19/858606/354057.terrain new file mode 100644 index 000000000..80ea16ad4 Binary files /dev/null and b/public/terrain/19/858606/354057.terrain differ diff --git a/public/terrain/19/858606/354058.terrain b/public/terrain/19/858606/354058.terrain new file mode 100644 index 000000000..eb6c56861 Binary files /dev/null and b/public/terrain/19/858606/354058.terrain differ diff --git a/public/terrain/19/858606/354059.terrain b/public/terrain/19/858606/354059.terrain new file mode 100644 index 000000000..e29e3e60e Binary files /dev/null and b/public/terrain/19/858606/354059.terrain differ diff --git a/public/terrain/19/858607/353743.terrain b/public/terrain/19/858607/353743.terrain new file mode 100644 index 000000000..94399cc2c Binary files /dev/null and b/public/terrain/19/858607/353743.terrain differ diff --git a/public/terrain/19/858607/353744.terrain b/public/terrain/19/858607/353744.terrain new file mode 100644 index 000000000..8a357c89d Binary files /dev/null and b/public/terrain/19/858607/353744.terrain differ diff --git a/public/terrain/19/858607/353745.terrain b/public/terrain/19/858607/353745.terrain new file mode 100644 index 000000000..9147b2c89 Binary files /dev/null and b/public/terrain/19/858607/353745.terrain differ diff --git a/public/terrain/19/858607/353746.terrain b/public/terrain/19/858607/353746.terrain new file mode 100644 index 000000000..b08bdf0bc Binary files /dev/null and b/public/terrain/19/858607/353746.terrain differ diff --git a/public/terrain/19/858607/353747.terrain b/public/terrain/19/858607/353747.terrain new file mode 100644 index 000000000..29bec7f0f Binary files /dev/null and b/public/terrain/19/858607/353747.terrain differ diff --git a/public/terrain/19/858607/353748.terrain b/public/terrain/19/858607/353748.terrain new file mode 100644 index 000000000..afbf247c1 Binary files /dev/null and b/public/terrain/19/858607/353748.terrain differ diff --git a/public/terrain/19/858607/353749.terrain b/public/terrain/19/858607/353749.terrain new file mode 100644 index 000000000..567062bf8 Binary files /dev/null and b/public/terrain/19/858607/353749.terrain differ diff --git a/public/terrain/19/858607/353750.terrain b/public/terrain/19/858607/353750.terrain new file mode 100644 index 000000000..f3cb8ba96 Binary files /dev/null and b/public/terrain/19/858607/353750.terrain differ diff --git a/public/terrain/19/858607/353751.terrain b/public/terrain/19/858607/353751.terrain new file mode 100644 index 000000000..4d3c0b206 Binary files /dev/null and b/public/terrain/19/858607/353751.terrain differ diff --git a/public/terrain/19/858607/353752.terrain b/public/terrain/19/858607/353752.terrain new file mode 100644 index 000000000..d984593b3 Binary files /dev/null and b/public/terrain/19/858607/353752.terrain differ diff --git a/public/terrain/19/858607/353753.terrain b/public/terrain/19/858607/353753.terrain new file mode 100644 index 000000000..c49efbc2f Binary files /dev/null and b/public/terrain/19/858607/353753.terrain differ diff --git a/public/terrain/19/858607/353754.terrain b/public/terrain/19/858607/353754.terrain new file mode 100644 index 000000000..ecb2d8a4f Binary files /dev/null and b/public/terrain/19/858607/353754.terrain differ diff --git a/public/terrain/19/858607/353755.terrain b/public/terrain/19/858607/353755.terrain new file mode 100644 index 000000000..2236634f7 Binary files /dev/null and b/public/terrain/19/858607/353755.terrain differ diff --git a/public/terrain/19/858607/353756.terrain b/public/terrain/19/858607/353756.terrain new file mode 100644 index 000000000..c9e0e0ac8 Binary files /dev/null and b/public/terrain/19/858607/353756.terrain differ diff --git a/public/terrain/19/858607/353757.terrain b/public/terrain/19/858607/353757.terrain new file mode 100644 index 000000000..9f5c7d98c Binary files /dev/null and b/public/terrain/19/858607/353757.terrain differ diff --git a/public/terrain/19/858607/353758.terrain b/public/terrain/19/858607/353758.terrain new file mode 100644 index 000000000..1bff116b5 Binary files /dev/null and b/public/terrain/19/858607/353758.terrain differ diff --git a/public/terrain/19/858607/353759.terrain b/public/terrain/19/858607/353759.terrain new file mode 100644 index 000000000..e44db0543 Binary files /dev/null and b/public/terrain/19/858607/353759.terrain differ diff --git a/public/terrain/19/858607/353760.terrain b/public/terrain/19/858607/353760.terrain new file mode 100644 index 000000000..0218cc4b0 Binary files /dev/null and b/public/terrain/19/858607/353760.terrain differ diff --git a/public/terrain/19/858607/353761.terrain b/public/terrain/19/858607/353761.terrain new file mode 100644 index 000000000..5d2ab7d63 Binary files /dev/null and b/public/terrain/19/858607/353761.terrain differ diff --git a/public/terrain/19/858607/353762.terrain b/public/terrain/19/858607/353762.terrain new file mode 100644 index 000000000..711d143ce Binary files /dev/null and b/public/terrain/19/858607/353762.terrain differ diff --git a/public/terrain/19/858607/353763.terrain b/public/terrain/19/858607/353763.terrain new file mode 100644 index 000000000..2459f06df Binary files /dev/null and b/public/terrain/19/858607/353763.terrain differ diff --git a/public/terrain/19/858607/353764.terrain b/public/terrain/19/858607/353764.terrain new file mode 100644 index 000000000..6e0fba9a7 Binary files /dev/null and b/public/terrain/19/858607/353764.terrain differ diff --git a/public/terrain/19/858607/353765.terrain b/public/terrain/19/858607/353765.terrain new file mode 100644 index 000000000..df69affb7 Binary files /dev/null and b/public/terrain/19/858607/353765.terrain differ diff --git a/public/terrain/19/858607/353766.terrain b/public/terrain/19/858607/353766.terrain new file mode 100644 index 000000000..7cb7183e7 Binary files /dev/null and b/public/terrain/19/858607/353766.terrain differ diff --git a/public/terrain/19/858607/353767.terrain b/public/terrain/19/858607/353767.terrain new file mode 100644 index 000000000..bd79bbefe Binary files /dev/null and b/public/terrain/19/858607/353767.terrain differ diff --git a/public/terrain/19/858607/353768.terrain b/public/terrain/19/858607/353768.terrain new file mode 100644 index 000000000..1ffd7dde4 Binary files /dev/null and b/public/terrain/19/858607/353768.terrain differ diff --git a/public/terrain/19/858607/353769.terrain b/public/terrain/19/858607/353769.terrain new file mode 100644 index 000000000..7fb4f2636 Binary files /dev/null and b/public/terrain/19/858607/353769.terrain differ diff --git a/public/terrain/19/858607/353770.terrain b/public/terrain/19/858607/353770.terrain new file mode 100644 index 000000000..9ea20ffeb Binary files /dev/null and b/public/terrain/19/858607/353770.terrain differ diff --git a/public/terrain/19/858607/353771.terrain b/public/terrain/19/858607/353771.terrain new file mode 100644 index 000000000..7af1fa002 Binary files /dev/null and b/public/terrain/19/858607/353771.terrain differ diff --git a/public/terrain/19/858607/353772.terrain b/public/terrain/19/858607/353772.terrain new file mode 100644 index 000000000..9b7677a6a Binary files /dev/null and b/public/terrain/19/858607/353772.terrain differ diff --git a/public/terrain/19/858607/353773.terrain b/public/terrain/19/858607/353773.terrain new file mode 100644 index 000000000..1b2ab2b3c Binary files /dev/null and b/public/terrain/19/858607/353773.terrain differ diff --git a/public/terrain/19/858607/353774.terrain b/public/terrain/19/858607/353774.terrain new file mode 100644 index 000000000..eb12cbace Binary files /dev/null and b/public/terrain/19/858607/353774.terrain differ diff --git a/public/terrain/19/858607/353775.terrain b/public/terrain/19/858607/353775.terrain new file mode 100644 index 000000000..b3b0cbb10 Binary files /dev/null and b/public/terrain/19/858607/353775.terrain differ diff --git a/public/terrain/19/858607/353776.terrain b/public/terrain/19/858607/353776.terrain new file mode 100644 index 000000000..baa0e36f9 Binary files /dev/null and b/public/terrain/19/858607/353776.terrain differ diff --git a/public/terrain/19/858607/353777.terrain b/public/terrain/19/858607/353777.terrain new file mode 100644 index 000000000..0636cf83d Binary files /dev/null and b/public/terrain/19/858607/353777.terrain differ diff --git a/public/terrain/19/858607/353778.terrain b/public/terrain/19/858607/353778.terrain new file mode 100644 index 000000000..d0213bfa1 Binary files /dev/null and b/public/terrain/19/858607/353778.terrain differ diff --git a/public/terrain/19/858607/353779.terrain b/public/terrain/19/858607/353779.terrain new file mode 100644 index 000000000..49305bcb1 Binary files /dev/null and b/public/terrain/19/858607/353779.terrain differ diff --git a/public/terrain/19/858607/353780.terrain b/public/terrain/19/858607/353780.terrain new file mode 100644 index 000000000..34c1cd914 Binary files /dev/null and b/public/terrain/19/858607/353780.terrain differ diff --git a/public/terrain/19/858607/353781.terrain b/public/terrain/19/858607/353781.terrain new file mode 100644 index 000000000..f7088a663 Binary files /dev/null and b/public/terrain/19/858607/353781.terrain differ diff --git a/public/terrain/19/858607/353782.terrain b/public/terrain/19/858607/353782.terrain new file mode 100644 index 000000000..5cea92554 Binary files /dev/null and b/public/terrain/19/858607/353782.terrain differ diff --git a/public/terrain/19/858607/353783.terrain b/public/terrain/19/858607/353783.terrain new file mode 100644 index 000000000..8f120fdf3 Binary files /dev/null and b/public/terrain/19/858607/353783.terrain differ diff --git a/public/terrain/19/858607/353784.terrain b/public/terrain/19/858607/353784.terrain new file mode 100644 index 000000000..79a7e12a1 Binary files /dev/null and b/public/terrain/19/858607/353784.terrain differ diff --git a/public/terrain/19/858607/353785.terrain b/public/terrain/19/858607/353785.terrain new file mode 100644 index 000000000..1348eefb8 Binary files /dev/null and b/public/terrain/19/858607/353785.terrain differ diff --git a/public/terrain/19/858607/353786.terrain b/public/terrain/19/858607/353786.terrain new file mode 100644 index 000000000..4675d22ef Binary files /dev/null and b/public/terrain/19/858607/353786.terrain differ diff --git a/public/terrain/19/858607/353787.terrain b/public/terrain/19/858607/353787.terrain new file mode 100644 index 000000000..b15956804 Binary files /dev/null and b/public/terrain/19/858607/353787.terrain differ diff --git a/public/terrain/19/858607/353788.terrain b/public/terrain/19/858607/353788.terrain new file mode 100644 index 000000000..dc26dcf2c Binary files /dev/null and b/public/terrain/19/858607/353788.terrain differ diff --git a/public/terrain/19/858607/353789.terrain b/public/terrain/19/858607/353789.terrain new file mode 100644 index 000000000..e82bbe39e Binary files /dev/null and b/public/terrain/19/858607/353789.terrain differ diff --git a/public/terrain/19/858607/353790.terrain b/public/terrain/19/858607/353790.terrain new file mode 100644 index 000000000..97939364d Binary files /dev/null and b/public/terrain/19/858607/353790.terrain differ diff --git a/public/terrain/19/858607/353791.terrain b/public/terrain/19/858607/353791.terrain new file mode 100644 index 000000000..1650baa7e Binary files /dev/null and b/public/terrain/19/858607/353791.terrain differ diff --git a/public/terrain/19/858607/353792.terrain b/public/terrain/19/858607/353792.terrain new file mode 100644 index 000000000..cb1230b39 Binary files /dev/null and b/public/terrain/19/858607/353792.terrain differ diff --git a/public/terrain/19/858607/353793.terrain b/public/terrain/19/858607/353793.terrain new file mode 100644 index 000000000..cb4202314 Binary files /dev/null and b/public/terrain/19/858607/353793.terrain differ diff --git a/public/terrain/19/858607/353794.terrain b/public/terrain/19/858607/353794.terrain new file mode 100644 index 000000000..260103594 Binary files /dev/null and b/public/terrain/19/858607/353794.terrain differ diff --git a/public/terrain/19/858607/353795.terrain b/public/terrain/19/858607/353795.terrain new file mode 100644 index 000000000..a633e973b Binary files /dev/null and b/public/terrain/19/858607/353795.terrain differ diff --git a/public/terrain/19/858607/353796.terrain b/public/terrain/19/858607/353796.terrain new file mode 100644 index 000000000..76ef0b8ff Binary files /dev/null and b/public/terrain/19/858607/353796.terrain differ diff --git a/public/terrain/19/858607/353797.terrain b/public/terrain/19/858607/353797.terrain new file mode 100644 index 000000000..cc7119ad0 Binary files /dev/null and b/public/terrain/19/858607/353797.terrain differ diff --git a/public/terrain/19/858607/353798.terrain b/public/terrain/19/858607/353798.terrain new file mode 100644 index 000000000..5ab79f911 Binary files /dev/null and b/public/terrain/19/858607/353798.terrain differ diff --git a/public/terrain/19/858607/353799.terrain b/public/terrain/19/858607/353799.terrain new file mode 100644 index 000000000..efb9ef616 Binary files /dev/null and b/public/terrain/19/858607/353799.terrain differ diff --git a/public/terrain/19/858607/353800.terrain b/public/terrain/19/858607/353800.terrain new file mode 100644 index 000000000..9e98a02dd Binary files /dev/null and b/public/terrain/19/858607/353800.terrain differ diff --git a/public/terrain/19/858607/353801.terrain b/public/terrain/19/858607/353801.terrain new file mode 100644 index 000000000..b11746395 Binary files /dev/null and b/public/terrain/19/858607/353801.terrain differ diff --git a/public/terrain/19/858607/353802.terrain b/public/terrain/19/858607/353802.terrain new file mode 100644 index 000000000..94baf83b4 Binary files /dev/null and b/public/terrain/19/858607/353802.terrain differ diff --git a/public/terrain/19/858607/353803.terrain b/public/terrain/19/858607/353803.terrain new file mode 100644 index 000000000..cd3179977 Binary files /dev/null and b/public/terrain/19/858607/353803.terrain differ diff --git a/public/terrain/19/858607/353804.terrain b/public/terrain/19/858607/353804.terrain new file mode 100644 index 000000000..0109eec6d Binary files /dev/null and b/public/terrain/19/858607/353804.terrain differ diff --git a/public/terrain/19/858607/353805.terrain b/public/terrain/19/858607/353805.terrain new file mode 100644 index 000000000..6a1cc65c7 Binary files /dev/null and b/public/terrain/19/858607/353805.terrain differ diff --git a/public/terrain/19/858607/353806.terrain b/public/terrain/19/858607/353806.terrain new file mode 100644 index 000000000..53c162fd6 Binary files /dev/null and b/public/terrain/19/858607/353806.terrain differ diff --git a/public/terrain/19/858607/353807.terrain b/public/terrain/19/858607/353807.terrain new file mode 100644 index 000000000..a8ba5e5f9 Binary files /dev/null and b/public/terrain/19/858607/353807.terrain differ diff --git a/public/terrain/19/858607/353808.terrain b/public/terrain/19/858607/353808.terrain new file mode 100644 index 000000000..1721487f4 Binary files /dev/null and b/public/terrain/19/858607/353808.terrain differ diff --git a/public/terrain/19/858607/353809.terrain b/public/terrain/19/858607/353809.terrain new file mode 100644 index 000000000..2e7a9de4d Binary files /dev/null and b/public/terrain/19/858607/353809.terrain differ diff --git a/public/terrain/19/858607/353810.terrain b/public/terrain/19/858607/353810.terrain new file mode 100644 index 000000000..7f22c85a3 Binary files /dev/null and b/public/terrain/19/858607/353810.terrain differ diff --git a/public/terrain/19/858607/353811.terrain b/public/terrain/19/858607/353811.terrain new file mode 100644 index 000000000..e8bc7ed9e Binary files /dev/null and b/public/terrain/19/858607/353811.terrain differ diff --git a/public/terrain/19/858607/353812.terrain b/public/terrain/19/858607/353812.terrain new file mode 100644 index 000000000..b96dcacbc Binary files /dev/null and b/public/terrain/19/858607/353812.terrain differ diff --git a/public/terrain/19/858607/353813.terrain b/public/terrain/19/858607/353813.terrain new file mode 100644 index 000000000..be180670b Binary files /dev/null and b/public/terrain/19/858607/353813.terrain differ diff --git a/public/terrain/19/858607/353814.terrain b/public/terrain/19/858607/353814.terrain new file mode 100644 index 000000000..947885c9e Binary files /dev/null and b/public/terrain/19/858607/353814.terrain differ diff --git a/public/terrain/19/858607/353815.terrain b/public/terrain/19/858607/353815.terrain new file mode 100644 index 000000000..85e737a73 Binary files /dev/null and b/public/terrain/19/858607/353815.terrain differ diff --git a/public/terrain/19/858607/353816.terrain b/public/terrain/19/858607/353816.terrain new file mode 100644 index 000000000..2d886d7e2 Binary files /dev/null and b/public/terrain/19/858607/353816.terrain differ diff --git a/public/terrain/19/858607/353817.terrain b/public/terrain/19/858607/353817.terrain new file mode 100644 index 000000000..d30ff7e47 Binary files /dev/null and b/public/terrain/19/858607/353817.terrain differ diff --git a/public/terrain/19/858607/353818.terrain b/public/terrain/19/858607/353818.terrain new file mode 100644 index 000000000..b08d31690 Binary files /dev/null and b/public/terrain/19/858607/353818.terrain differ diff --git a/public/terrain/19/858607/353819.terrain b/public/terrain/19/858607/353819.terrain new file mode 100644 index 000000000..278d910e5 Binary files /dev/null and b/public/terrain/19/858607/353819.terrain differ diff --git a/public/terrain/19/858607/353820.terrain b/public/terrain/19/858607/353820.terrain new file mode 100644 index 000000000..c714a92fe Binary files /dev/null and b/public/terrain/19/858607/353820.terrain differ diff --git a/public/terrain/19/858607/353821.terrain b/public/terrain/19/858607/353821.terrain new file mode 100644 index 000000000..d92e2a2a2 Binary files /dev/null and b/public/terrain/19/858607/353821.terrain differ diff --git a/public/terrain/19/858607/353822.terrain b/public/terrain/19/858607/353822.terrain new file mode 100644 index 000000000..0c747fc59 Binary files /dev/null and b/public/terrain/19/858607/353822.terrain differ diff --git a/public/terrain/19/858607/353823.terrain b/public/terrain/19/858607/353823.terrain new file mode 100644 index 000000000..9a2b026d8 Binary files /dev/null and b/public/terrain/19/858607/353823.terrain differ diff --git a/public/terrain/19/858607/353824.terrain b/public/terrain/19/858607/353824.terrain new file mode 100644 index 000000000..0ee1c6738 Binary files /dev/null and b/public/terrain/19/858607/353824.terrain differ diff --git a/public/terrain/19/858607/353825.terrain b/public/terrain/19/858607/353825.terrain new file mode 100644 index 000000000..ea38c9011 Binary files /dev/null and b/public/terrain/19/858607/353825.terrain differ diff --git a/public/terrain/19/858607/353826.terrain b/public/terrain/19/858607/353826.terrain new file mode 100644 index 000000000..68f7ddffc Binary files /dev/null and b/public/terrain/19/858607/353826.terrain differ diff --git a/public/terrain/19/858607/353827.terrain b/public/terrain/19/858607/353827.terrain new file mode 100644 index 000000000..b0a444b32 Binary files /dev/null and b/public/terrain/19/858607/353827.terrain differ diff --git a/public/terrain/19/858607/353828.terrain b/public/terrain/19/858607/353828.terrain new file mode 100644 index 000000000..d03864517 Binary files /dev/null and b/public/terrain/19/858607/353828.terrain differ diff --git a/public/terrain/19/858607/353829.terrain b/public/terrain/19/858607/353829.terrain new file mode 100644 index 000000000..07318bb26 Binary files /dev/null and b/public/terrain/19/858607/353829.terrain differ diff --git a/public/terrain/19/858607/353830.terrain b/public/terrain/19/858607/353830.terrain new file mode 100644 index 000000000..f22e9bcd2 Binary files /dev/null and b/public/terrain/19/858607/353830.terrain differ diff --git a/public/terrain/19/858607/353831.terrain b/public/terrain/19/858607/353831.terrain new file mode 100644 index 000000000..e2c453ede Binary files /dev/null and b/public/terrain/19/858607/353831.terrain differ diff --git a/public/terrain/19/858607/353832.terrain b/public/terrain/19/858607/353832.terrain new file mode 100644 index 000000000..7635bbdb9 Binary files /dev/null and b/public/terrain/19/858607/353832.terrain differ diff --git a/public/terrain/19/858607/353833.terrain b/public/terrain/19/858607/353833.terrain new file mode 100644 index 000000000..3066492e6 Binary files /dev/null and b/public/terrain/19/858607/353833.terrain differ diff --git a/public/terrain/19/858607/353834.terrain b/public/terrain/19/858607/353834.terrain new file mode 100644 index 000000000..110ec741a Binary files /dev/null and b/public/terrain/19/858607/353834.terrain differ diff --git a/public/terrain/19/858607/353835.terrain b/public/terrain/19/858607/353835.terrain new file mode 100644 index 000000000..e60033452 Binary files /dev/null and b/public/terrain/19/858607/353835.terrain differ diff --git a/public/terrain/19/858607/353836.terrain b/public/terrain/19/858607/353836.terrain new file mode 100644 index 000000000..6a6a0eead Binary files /dev/null and b/public/terrain/19/858607/353836.terrain differ diff --git a/public/terrain/19/858607/353837.terrain b/public/terrain/19/858607/353837.terrain new file mode 100644 index 000000000..e20c47e6c Binary files /dev/null and b/public/terrain/19/858607/353837.terrain differ diff --git a/public/terrain/19/858607/353838.terrain b/public/terrain/19/858607/353838.terrain new file mode 100644 index 000000000..ad1e3b45e Binary files /dev/null and b/public/terrain/19/858607/353838.terrain differ diff --git a/public/terrain/19/858607/353839.terrain b/public/terrain/19/858607/353839.terrain new file mode 100644 index 000000000..dd17e250c Binary files /dev/null and b/public/terrain/19/858607/353839.terrain differ diff --git a/public/terrain/19/858607/353840.terrain b/public/terrain/19/858607/353840.terrain new file mode 100644 index 000000000..d137f864f Binary files /dev/null and b/public/terrain/19/858607/353840.terrain differ diff --git a/public/terrain/19/858607/353841.terrain b/public/terrain/19/858607/353841.terrain new file mode 100644 index 000000000..84ee3955b Binary files /dev/null and b/public/terrain/19/858607/353841.terrain differ diff --git a/public/terrain/19/858607/353842.terrain b/public/terrain/19/858607/353842.terrain new file mode 100644 index 000000000..1adc757e6 Binary files /dev/null and b/public/terrain/19/858607/353842.terrain differ diff --git a/public/terrain/19/858607/353843.terrain b/public/terrain/19/858607/353843.terrain new file mode 100644 index 000000000..d09b5c585 Binary files /dev/null and b/public/terrain/19/858607/353843.terrain differ diff --git a/public/terrain/19/858607/353844.terrain b/public/terrain/19/858607/353844.terrain new file mode 100644 index 000000000..18206d93a Binary files /dev/null and b/public/terrain/19/858607/353844.terrain differ diff --git a/public/terrain/19/858607/353845.terrain b/public/terrain/19/858607/353845.terrain new file mode 100644 index 000000000..fce237445 Binary files /dev/null and b/public/terrain/19/858607/353845.terrain differ diff --git a/public/terrain/19/858607/353846.terrain b/public/terrain/19/858607/353846.terrain new file mode 100644 index 000000000..c47fd3adc Binary files /dev/null and b/public/terrain/19/858607/353846.terrain differ diff --git a/public/terrain/19/858607/353847.terrain b/public/terrain/19/858607/353847.terrain new file mode 100644 index 000000000..07fcca86c Binary files /dev/null and b/public/terrain/19/858607/353847.terrain differ diff --git a/public/terrain/19/858607/353848.terrain b/public/terrain/19/858607/353848.terrain new file mode 100644 index 000000000..f0f7d1c0a Binary files /dev/null and b/public/terrain/19/858607/353848.terrain differ diff --git a/public/terrain/19/858607/353849.terrain b/public/terrain/19/858607/353849.terrain new file mode 100644 index 000000000..46e8d1081 Binary files /dev/null and b/public/terrain/19/858607/353849.terrain differ diff --git a/public/terrain/19/858607/353850.terrain b/public/terrain/19/858607/353850.terrain new file mode 100644 index 000000000..f5e066b0d Binary files /dev/null and b/public/terrain/19/858607/353850.terrain differ diff --git a/public/terrain/19/858607/353851.terrain b/public/terrain/19/858607/353851.terrain new file mode 100644 index 000000000..ef0147f70 Binary files /dev/null and b/public/terrain/19/858607/353851.terrain differ diff --git a/public/terrain/19/858607/353852.terrain b/public/terrain/19/858607/353852.terrain new file mode 100644 index 000000000..433452acb Binary files /dev/null and b/public/terrain/19/858607/353852.terrain differ diff --git a/public/terrain/19/858607/353853.terrain b/public/terrain/19/858607/353853.terrain new file mode 100644 index 000000000..32b23b71b Binary files /dev/null and b/public/terrain/19/858607/353853.terrain differ diff --git a/public/terrain/19/858607/353854.terrain b/public/terrain/19/858607/353854.terrain new file mode 100644 index 000000000..33e31466b Binary files /dev/null and b/public/terrain/19/858607/353854.terrain differ diff --git a/public/terrain/19/858607/353855.terrain b/public/terrain/19/858607/353855.terrain new file mode 100644 index 000000000..b21ed1632 Binary files /dev/null and b/public/terrain/19/858607/353855.terrain differ diff --git a/public/terrain/19/858607/353856.terrain b/public/terrain/19/858607/353856.terrain new file mode 100644 index 000000000..39bf7f1ab Binary files /dev/null and b/public/terrain/19/858607/353856.terrain differ diff --git a/public/terrain/19/858607/353857.terrain b/public/terrain/19/858607/353857.terrain new file mode 100644 index 000000000..eda7df105 Binary files /dev/null and b/public/terrain/19/858607/353857.terrain differ diff --git a/public/terrain/19/858607/353858.terrain b/public/terrain/19/858607/353858.terrain new file mode 100644 index 000000000..6a222ab7d Binary files /dev/null and b/public/terrain/19/858607/353858.terrain differ diff --git a/public/terrain/19/858607/353859.terrain b/public/terrain/19/858607/353859.terrain new file mode 100644 index 000000000..b139e0a83 Binary files /dev/null and b/public/terrain/19/858607/353859.terrain differ diff --git a/public/terrain/19/858607/353860.terrain b/public/terrain/19/858607/353860.terrain new file mode 100644 index 000000000..7be86f490 Binary files /dev/null and b/public/terrain/19/858607/353860.terrain differ diff --git a/public/terrain/19/858607/353861.terrain b/public/terrain/19/858607/353861.terrain new file mode 100644 index 000000000..806938a50 Binary files /dev/null and b/public/terrain/19/858607/353861.terrain differ diff --git a/public/terrain/19/858607/353862.terrain b/public/terrain/19/858607/353862.terrain new file mode 100644 index 000000000..41ef1e79d Binary files /dev/null and b/public/terrain/19/858607/353862.terrain differ diff --git a/public/terrain/19/858607/353863.terrain b/public/terrain/19/858607/353863.terrain new file mode 100644 index 000000000..4c1e677cc Binary files /dev/null and b/public/terrain/19/858607/353863.terrain differ diff --git a/public/terrain/19/858607/353864.terrain b/public/terrain/19/858607/353864.terrain new file mode 100644 index 000000000..d4a2815cc Binary files /dev/null and b/public/terrain/19/858607/353864.terrain differ diff --git a/public/terrain/19/858607/353865.terrain b/public/terrain/19/858607/353865.terrain new file mode 100644 index 000000000..8303cea71 Binary files /dev/null and b/public/terrain/19/858607/353865.terrain differ diff --git a/public/terrain/19/858607/353866.terrain b/public/terrain/19/858607/353866.terrain new file mode 100644 index 000000000..f91598dee Binary files /dev/null and b/public/terrain/19/858607/353866.terrain differ diff --git a/public/terrain/19/858607/353867.terrain b/public/terrain/19/858607/353867.terrain new file mode 100644 index 000000000..72cc24ccb Binary files /dev/null and b/public/terrain/19/858607/353867.terrain differ diff --git a/public/terrain/19/858607/353868.terrain b/public/terrain/19/858607/353868.terrain new file mode 100644 index 000000000..5e5ae4f08 Binary files /dev/null and b/public/terrain/19/858607/353868.terrain differ diff --git a/public/terrain/19/858607/353869.terrain b/public/terrain/19/858607/353869.terrain new file mode 100644 index 000000000..61df2a425 Binary files /dev/null and b/public/terrain/19/858607/353869.terrain differ diff --git a/public/terrain/19/858607/353870.terrain b/public/terrain/19/858607/353870.terrain new file mode 100644 index 000000000..27dafe60d Binary files /dev/null and b/public/terrain/19/858607/353870.terrain differ diff --git a/public/terrain/19/858607/353871.terrain b/public/terrain/19/858607/353871.terrain new file mode 100644 index 000000000..589c34acf Binary files /dev/null and b/public/terrain/19/858607/353871.terrain differ diff --git a/public/terrain/19/858607/353872.terrain b/public/terrain/19/858607/353872.terrain new file mode 100644 index 000000000..781decbc7 Binary files /dev/null and b/public/terrain/19/858607/353872.terrain differ diff --git a/public/terrain/19/858607/353873.terrain b/public/terrain/19/858607/353873.terrain new file mode 100644 index 000000000..00415cdd1 Binary files /dev/null and b/public/terrain/19/858607/353873.terrain differ diff --git a/public/terrain/19/858607/353874.terrain b/public/terrain/19/858607/353874.terrain new file mode 100644 index 000000000..33a0bb1c2 Binary files /dev/null and b/public/terrain/19/858607/353874.terrain differ diff --git a/public/terrain/19/858607/353875.terrain b/public/terrain/19/858607/353875.terrain new file mode 100644 index 000000000..b9b7e705e Binary files /dev/null and b/public/terrain/19/858607/353875.terrain differ diff --git a/public/terrain/19/858607/353876.terrain b/public/terrain/19/858607/353876.terrain new file mode 100644 index 000000000..6d593a92f Binary files /dev/null and b/public/terrain/19/858607/353876.terrain differ diff --git a/public/terrain/19/858607/353877.terrain b/public/terrain/19/858607/353877.terrain new file mode 100644 index 000000000..53ee36e0b Binary files /dev/null and b/public/terrain/19/858607/353877.terrain differ diff --git a/public/terrain/19/858607/353878.terrain b/public/terrain/19/858607/353878.terrain new file mode 100644 index 000000000..e3b4fb8bc Binary files /dev/null and b/public/terrain/19/858607/353878.terrain differ diff --git a/public/terrain/19/858607/353879.terrain b/public/terrain/19/858607/353879.terrain new file mode 100644 index 000000000..bf45365e8 Binary files /dev/null and b/public/terrain/19/858607/353879.terrain differ diff --git a/public/terrain/19/858607/353880.terrain b/public/terrain/19/858607/353880.terrain new file mode 100644 index 000000000..5157289e2 Binary files /dev/null and b/public/terrain/19/858607/353880.terrain differ diff --git a/public/terrain/19/858607/353881.terrain b/public/terrain/19/858607/353881.terrain new file mode 100644 index 000000000..dcd59679b Binary files /dev/null and b/public/terrain/19/858607/353881.terrain differ diff --git a/public/terrain/19/858607/353882.terrain b/public/terrain/19/858607/353882.terrain new file mode 100644 index 000000000..a3c9c7b71 Binary files /dev/null and b/public/terrain/19/858607/353882.terrain differ diff --git a/public/terrain/19/858607/353883.terrain b/public/terrain/19/858607/353883.terrain new file mode 100644 index 000000000..2b433631c Binary files /dev/null and b/public/terrain/19/858607/353883.terrain differ diff --git a/public/terrain/19/858607/353884.terrain b/public/terrain/19/858607/353884.terrain new file mode 100644 index 000000000..b6a3c7d96 Binary files /dev/null and b/public/terrain/19/858607/353884.terrain differ diff --git a/public/terrain/19/858607/353885.terrain b/public/terrain/19/858607/353885.terrain new file mode 100644 index 000000000..7ac4b40d4 Binary files /dev/null and b/public/terrain/19/858607/353885.terrain differ diff --git a/public/terrain/19/858607/353886.terrain b/public/terrain/19/858607/353886.terrain new file mode 100644 index 000000000..60afbc4f4 Binary files /dev/null and b/public/terrain/19/858607/353886.terrain differ diff --git a/public/terrain/19/858607/353887.terrain b/public/terrain/19/858607/353887.terrain new file mode 100644 index 000000000..8f813087e Binary files /dev/null and b/public/terrain/19/858607/353887.terrain differ diff --git a/public/terrain/19/858607/353888.terrain b/public/terrain/19/858607/353888.terrain new file mode 100644 index 000000000..16c675e47 Binary files /dev/null and b/public/terrain/19/858607/353888.terrain differ diff --git a/public/terrain/19/858607/353889.terrain b/public/terrain/19/858607/353889.terrain new file mode 100644 index 000000000..6d93a11ff Binary files /dev/null and b/public/terrain/19/858607/353889.terrain differ diff --git a/public/terrain/19/858607/353890.terrain b/public/terrain/19/858607/353890.terrain new file mode 100644 index 000000000..b3faade39 Binary files /dev/null and b/public/terrain/19/858607/353890.terrain differ diff --git a/public/terrain/19/858607/353891.terrain b/public/terrain/19/858607/353891.terrain new file mode 100644 index 000000000..5ed208065 Binary files /dev/null and b/public/terrain/19/858607/353891.terrain differ diff --git a/public/terrain/19/858607/353892.terrain b/public/terrain/19/858607/353892.terrain new file mode 100644 index 000000000..d22d1e6e3 Binary files /dev/null and b/public/terrain/19/858607/353892.terrain differ diff --git a/public/terrain/19/858607/353893.terrain b/public/terrain/19/858607/353893.terrain new file mode 100644 index 000000000..2860d54da Binary files /dev/null and b/public/terrain/19/858607/353893.terrain differ diff --git a/public/terrain/19/858607/353894.terrain b/public/terrain/19/858607/353894.terrain new file mode 100644 index 000000000..0f8cedcc5 Binary files /dev/null and b/public/terrain/19/858607/353894.terrain differ diff --git a/public/terrain/19/858607/353895.terrain b/public/terrain/19/858607/353895.terrain new file mode 100644 index 000000000..a6192f477 Binary files /dev/null and b/public/terrain/19/858607/353895.terrain differ diff --git a/public/terrain/19/858607/353896.terrain b/public/terrain/19/858607/353896.terrain new file mode 100644 index 000000000..a9d038dd2 Binary files /dev/null and b/public/terrain/19/858607/353896.terrain differ diff --git a/public/terrain/19/858607/353897.terrain b/public/terrain/19/858607/353897.terrain new file mode 100644 index 000000000..388b2bcfd Binary files /dev/null and b/public/terrain/19/858607/353897.terrain differ diff --git a/public/terrain/19/858607/353898.terrain b/public/terrain/19/858607/353898.terrain new file mode 100644 index 000000000..020550078 Binary files /dev/null and b/public/terrain/19/858607/353898.terrain differ diff --git a/public/terrain/19/858607/353899.terrain b/public/terrain/19/858607/353899.terrain new file mode 100644 index 000000000..570bfa582 Binary files /dev/null and b/public/terrain/19/858607/353899.terrain differ diff --git a/public/terrain/19/858607/353900.terrain b/public/terrain/19/858607/353900.terrain new file mode 100644 index 000000000..028e9c991 Binary files /dev/null and b/public/terrain/19/858607/353900.terrain differ diff --git a/public/terrain/19/858607/353901.terrain b/public/terrain/19/858607/353901.terrain new file mode 100644 index 000000000..61fd7e55f Binary files /dev/null and b/public/terrain/19/858607/353901.terrain differ diff --git a/public/terrain/19/858607/353902.terrain b/public/terrain/19/858607/353902.terrain new file mode 100644 index 000000000..4b5a352f8 Binary files /dev/null and b/public/terrain/19/858607/353902.terrain differ diff --git a/public/terrain/19/858607/353903.terrain b/public/terrain/19/858607/353903.terrain new file mode 100644 index 000000000..570f78e53 Binary files /dev/null and b/public/terrain/19/858607/353903.terrain differ diff --git a/public/terrain/19/858607/353904.terrain b/public/terrain/19/858607/353904.terrain new file mode 100644 index 000000000..aba5eeb2d Binary files /dev/null and b/public/terrain/19/858607/353904.terrain differ diff --git a/public/terrain/19/858607/353905.terrain b/public/terrain/19/858607/353905.terrain new file mode 100644 index 000000000..ba79ce634 Binary files /dev/null and b/public/terrain/19/858607/353905.terrain differ diff --git a/public/terrain/19/858607/353906.terrain b/public/terrain/19/858607/353906.terrain new file mode 100644 index 000000000..87660e31c Binary files /dev/null and b/public/terrain/19/858607/353906.terrain differ diff --git a/public/terrain/19/858607/353907.terrain b/public/terrain/19/858607/353907.terrain new file mode 100644 index 000000000..0ef5902b1 Binary files /dev/null and b/public/terrain/19/858607/353907.terrain differ diff --git a/public/terrain/19/858607/353908.terrain b/public/terrain/19/858607/353908.terrain new file mode 100644 index 000000000..5926b534c Binary files /dev/null and b/public/terrain/19/858607/353908.terrain differ diff --git a/public/terrain/19/858607/353909.terrain b/public/terrain/19/858607/353909.terrain new file mode 100644 index 000000000..e43e29626 Binary files /dev/null and b/public/terrain/19/858607/353909.terrain differ diff --git a/public/terrain/19/858607/353910.terrain b/public/terrain/19/858607/353910.terrain new file mode 100644 index 000000000..94ef40107 Binary files /dev/null and b/public/terrain/19/858607/353910.terrain differ diff --git a/public/terrain/19/858607/353911.terrain b/public/terrain/19/858607/353911.terrain new file mode 100644 index 000000000..37bf5fbee Binary files /dev/null and b/public/terrain/19/858607/353911.terrain differ diff --git a/public/terrain/19/858607/353912.terrain b/public/terrain/19/858607/353912.terrain new file mode 100644 index 000000000..44db33f56 Binary files /dev/null and b/public/terrain/19/858607/353912.terrain differ diff --git a/public/terrain/19/858607/353913.terrain b/public/terrain/19/858607/353913.terrain new file mode 100644 index 000000000..2ad76a152 Binary files /dev/null and b/public/terrain/19/858607/353913.terrain differ diff --git a/public/terrain/19/858607/353914.terrain b/public/terrain/19/858607/353914.terrain new file mode 100644 index 000000000..db1fe0e5a Binary files /dev/null and b/public/terrain/19/858607/353914.terrain differ diff --git a/public/terrain/19/858607/353915.terrain b/public/terrain/19/858607/353915.terrain new file mode 100644 index 000000000..c7ee5ec24 Binary files /dev/null and b/public/terrain/19/858607/353915.terrain differ diff --git a/public/terrain/19/858607/353916.terrain b/public/terrain/19/858607/353916.terrain new file mode 100644 index 000000000..54dc74b82 Binary files /dev/null and b/public/terrain/19/858607/353916.terrain differ diff --git a/public/terrain/19/858607/353917.terrain b/public/terrain/19/858607/353917.terrain new file mode 100644 index 000000000..7a5a5499c Binary files /dev/null and b/public/terrain/19/858607/353917.terrain differ diff --git a/public/terrain/19/858607/353918.terrain b/public/terrain/19/858607/353918.terrain new file mode 100644 index 000000000..fc96e45cb Binary files /dev/null and b/public/terrain/19/858607/353918.terrain differ diff --git a/public/terrain/19/858607/353919.terrain b/public/terrain/19/858607/353919.terrain new file mode 100644 index 000000000..e37d3b7d4 Binary files /dev/null and b/public/terrain/19/858607/353919.terrain differ diff --git a/public/terrain/19/858607/353920.terrain b/public/terrain/19/858607/353920.terrain new file mode 100644 index 000000000..310d52a6d Binary files /dev/null and b/public/terrain/19/858607/353920.terrain differ diff --git a/public/terrain/19/858607/353921.terrain b/public/terrain/19/858607/353921.terrain new file mode 100644 index 000000000..24958f2f4 Binary files /dev/null and b/public/terrain/19/858607/353921.terrain differ diff --git a/public/terrain/19/858607/353922.terrain b/public/terrain/19/858607/353922.terrain new file mode 100644 index 000000000..c5694c5ae Binary files /dev/null and b/public/terrain/19/858607/353922.terrain differ diff --git a/public/terrain/19/858607/353923.terrain b/public/terrain/19/858607/353923.terrain new file mode 100644 index 000000000..2101d11df Binary files /dev/null and b/public/terrain/19/858607/353923.terrain differ diff --git a/public/terrain/19/858607/353924.terrain b/public/terrain/19/858607/353924.terrain new file mode 100644 index 000000000..6c4f5b096 Binary files /dev/null and b/public/terrain/19/858607/353924.terrain differ diff --git a/public/terrain/19/858607/353925.terrain b/public/terrain/19/858607/353925.terrain new file mode 100644 index 000000000..494806bff Binary files /dev/null and b/public/terrain/19/858607/353925.terrain differ diff --git a/public/terrain/19/858607/353926.terrain b/public/terrain/19/858607/353926.terrain new file mode 100644 index 000000000..85493df3b Binary files /dev/null and b/public/terrain/19/858607/353926.terrain differ diff --git a/public/terrain/19/858607/353927.terrain b/public/terrain/19/858607/353927.terrain new file mode 100644 index 000000000..66d94a40a Binary files /dev/null and b/public/terrain/19/858607/353927.terrain differ diff --git a/public/terrain/19/858607/353928.terrain b/public/terrain/19/858607/353928.terrain new file mode 100644 index 000000000..8e2247b0d Binary files /dev/null and b/public/terrain/19/858607/353928.terrain differ diff --git a/public/terrain/19/858607/353929.terrain b/public/terrain/19/858607/353929.terrain new file mode 100644 index 000000000..7698036b3 Binary files /dev/null and b/public/terrain/19/858607/353929.terrain differ diff --git a/public/terrain/19/858607/353930.terrain b/public/terrain/19/858607/353930.terrain new file mode 100644 index 000000000..bbeb7b929 Binary files /dev/null and b/public/terrain/19/858607/353930.terrain differ diff --git a/public/terrain/19/858607/353931.terrain b/public/terrain/19/858607/353931.terrain new file mode 100644 index 000000000..9b3b4c789 Binary files /dev/null and b/public/terrain/19/858607/353931.terrain differ diff --git a/public/terrain/19/858607/353932.terrain b/public/terrain/19/858607/353932.terrain new file mode 100644 index 000000000..c77219a57 Binary files /dev/null and b/public/terrain/19/858607/353932.terrain differ diff --git a/public/terrain/19/858607/353933.terrain b/public/terrain/19/858607/353933.terrain new file mode 100644 index 000000000..798603b7c Binary files /dev/null and b/public/terrain/19/858607/353933.terrain differ diff --git a/public/terrain/19/858607/353934.terrain b/public/terrain/19/858607/353934.terrain new file mode 100644 index 000000000..2ea3e7e21 Binary files /dev/null and b/public/terrain/19/858607/353934.terrain differ diff --git a/public/terrain/19/858607/353935.terrain b/public/terrain/19/858607/353935.terrain new file mode 100644 index 000000000..5628caf4a Binary files /dev/null and b/public/terrain/19/858607/353935.terrain differ diff --git a/public/terrain/19/858607/353936.terrain b/public/terrain/19/858607/353936.terrain new file mode 100644 index 000000000..ef7d2da3b Binary files /dev/null and b/public/terrain/19/858607/353936.terrain differ diff --git a/public/terrain/19/858607/353937.terrain b/public/terrain/19/858607/353937.terrain new file mode 100644 index 000000000..7393cddc6 Binary files /dev/null and b/public/terrain/19/858607/353937.terrain differ diff --git a/public/terrain/19/858607/353938.terrain b/public/terrain/19/858607/353938.terrain new file mode 100644 index 000000000..4e013b23e Binary files /dev/null and b/public/terrain/19/858607/353938.terrain differ diff --git a/public/terrain/19/858607/353939.terrain b/public/terrain/19/858607/353939.terrain new file mode 100644 index 000000000..01fee3172 Binary files /dev/null and b/public/terrain/19/858607/353939.terrain differ diff --git a/public/terrain/19/858607/353940.terrain b/public/terrain/19/858607/353940.terrain new file mode 100644 index 000000000..a3ec17e00 Binary files /dev/null and b/public/terrain/19/858607/353940.terrain differ diff --git a/public/terrain/19/858607/353941.terrain b/public/terrain/19/858607/353941.terrain new file mode 100644 index 000000000..0d26940ec Binary files /dev/null and b/public/terrain/19/858607/353941.terrain differ diff --git a/public/terrain/19/858607/353942.terrain b/public/terrain/19/858607/353942.terrain new file mode 100644 index 000000000..ceb3b7f33 Binary files /dev/null and b/public/terrain/19/858607/353942.terrain differ diff --git a/public/terrain/19/858607/353943.terrain b/public/terrain/19/858607/353943.terrain new file mode 100644 index 000000000..ea079b893 Binary files /dev/null and b/public/terrain/19/858607/353943.terrain differ diff --git a/public/terrain/19/858607/353944.terrain b/public/terrain/19/858607/353944.terrain new file mode 100644 index 000000000..ef55bcdd4 Binary files /dev/null and b/public/terrain/19/858607/353944.terrain differ diff --git a/public/terrain/19/858607/353945.terrain b/public/terrain/19/858607/353945.terrain new file mode 100644 index 000000000..aa5b444bf Binary files /dev/null and b/public/terrain/19/858607/353945.terrain differ diff --git a/public/terrain/19/858607/353946.terrain b/public/terrain/19/858607/353946.terrain new file mode 100644 index 000000000..7b2cca2eb Binary files /dev/null and b/public/terrain/19/858607/353946.terrain differ diff --git a/public/terrain/19/858607/353947.terrain b/public/terrain/19/858607/353947.terrain new file mode 100644 index 000000000..727c78551 Binary files /dev/null and b/public/terrain/19/858607/353947.terrain differ diff --git a/public/terrain/19/858607/353948.terrain b/public/terrain/19/858607/353948.terrain new file mode 100644 index 000000000..1e9596e21 Binary files /dev/null and b/public/terrain/19/858607/353948.terrain differ diff --git a/public/terrain/19/858607/353949.terrain b/public/terrain/19/858607/353949.terrain new file mode 100644 index 000000000..1db57036f Binary files /dev/null and b/public/terrain/19/858607/353949.terrain differ diff --git a/public/terrain/19/858607/353950.terrain b/public/terrain/19/858607/353950.terrain new file mode 100644 index 000000000..557c92e17 Binary files /dev/null and b/public/terrain/19/858607/353950.terrain differ diff --git a/public/terrain/19/858607/353951.terrain b/public/terrain/19/858607/353951.terrain new file mode 100644 index 000000000..2f655ea64 Binary files /dev/null and b/public/terrain/19/858607/353951.terrain differ diff --git a/public/terrain/19/858607/353952.terrain b/public/terrain/19/858607/353952.terrain new file mode 100644 index 000000000..2659ba8ed Binary files /dev/null and b/public/terrain/19/858607/353952.terrain differ diff --git a/public/terrain/19/858607/353953.terrain b/public/terrain/19/858607/353953.terrain new file mode 100644 index 000000000..a6142d69f Binary files /dev/null and b/public/terrain/19/858607/353953.terrain differ diff --git a/public/terrain/19/858607/353954.terrain b/public/terrain/19/858607/353954.terrain new file mode 100644 index 000000000..d6204cb93 Binary files /dev/null and b/public/terrain/19/858607/353954.terrain differ diff --git a/public/terrain/19/858607/353955.terrain b/public/terrain/19/858607/353955.terrain new file mode 100644 index 000000000..394f8a340 Binary files /dev/null and b/public/terrain/19/858607/353955.terrain differ diff --git a/public/terrain/19/858607/353956.terrain b/public/terrain/19/858607/353956.terrain new file mode 100644 index 000000000..731adc30a Binary files /dev/null and b/public/terrain/19/858607/353956.terrain differ diff --git a/public/terrain/19/858607/353957.terrain b/public/terrain/19/858607/353957.terrain new file mode 100644 index 000000000..de95a0544 Binary files /dev/null and b/public/terrain/19/858607/353957.terrain differ diff --git a/public/terrain/19/858607/353958.terrain b/public/terrain/19/858607/353958.terrain new file mode 100644 index 000000000..00d22cfb3 Binary files /dev/null and b/public/terrain/19/858607/353958.terrain differ diff --git a/public/terrain/19/858607/353959.terrain b/public/terrain/19/858607/353959.terrain new file mode 100644 index 000000000..2c8eaa964 Binary files /dev/null and b/public/terrain/19/858607/353959.terrain differ diff --git a/public/terrain/19/858607/353960.terrain b/public/terrain/19/858607/353960.terrain new file mode 100644 index 000000000..420b54911 Binary files /dev/null and b/public/terrain/19/858607/353960.terrain differ diff --git a/public/terrain/19/858607/353961.terrain b/public/terrain/19/858607/353961.terrain new file mode 100644 index 000000000..bdb404fa3 Binary files /dev/null and b/public/terrain/19/858607/353961.terrain differ diff --git a/public/terrain/19/858607/353962.terrain b/public/terrain/19/858607/353962.terrain new file mode 100644 index 000000000..8bf70bad7 Binary files /dev/null and b/public/terrain/19/858607/353962.terrain differ diff --git a/public/terrain/19/858607/353963.terrain b/public/terrain/19/858607/353963.terrain new file mode 100644 index 000000000..3025cc278 Binary files /dev/null and b/public/terrain/19/858607/353963.terrain differ diff --git a/public/terrain/19/858607/353964.terrain b/public/terrain/19/858607/353964.terrain new file mode 100644 index 000000000..747d795ba Binary files /dev/null and b/public/terrain/19/858607/353964.terrain differ diff --git a/public/terrain/19/858607/353965.terrain b/public/terrain/19/858607/353965.terrain new file mode 100644 index 000000000..b007e4d78 Binary files /dev/null and b/public/terrain/19/858607/353965.terrain differ diff --git a/public/terrain/19/858607/353966.terrain b/public/terrain/19/858607/353966.terrain new file mode 100644 index 000000000..281a53776 Binary files /dev/null and b/public/terrain/19/858607/353966.terrain differ diff --git a/public/terrain/19/858607/353967.terrain b/public/terrain/19/858607/353967.terrain new file mode 100644 index 000000000..1e8f72cd5 Binary files /dev/null and b/public/terrain/19/858607/353967.terrain differ diff --git a/public/terrain/19/858607/353968.terrain b/public/terrain/19/858607/353968.terrain new file mode 100644 index 000000000..77445c1f5 Binary files /dev/null and b/public/terrain/19/858607/353968.terrain differ diff --git a/public/terrain/19/858607/353969.terrain b/public/terrain/19/858607/353969.terrain new file mode 100644 index 000000000..229646da2 Binary files /dev/null and b/public/terrain/19/858607/353969.terrain differ diff --git a/public/terrain/19/858607/353970.terrain b/public/terrain/19/858607/353970.terrain new file mode 100644 index 000000000..6b852c959 Binary files /dev/null and b/public/terrain/19/858607/353970.terrain differ diff --git a/public/terrain/19/858607/353971.terrain b/public/terrain/19/858607/353971.terrain new file mode 100644 index 000000000..697f99f19 Binary files /dev/null and b/public/terrain/19/858607/353971.terrain differ diff --git a/public/terrain/19/858607/353972.terrain b/public/terrain/19/858607/353972.terrain new file mode 100644 index 000000000..adf48ad33 Binary files /dev/null and b/public/terrain/19/858607/353972.terrain differ diff --git a/public/terrain/19/858607/353973.terrain b/public/terrain/19/858607/353973.terrain new file mode 100644 index 000000000..ef2dc0182 Binary files /dev/null and b/public/terrain/19/858607/353973.terrain differ diff --git a/public/terrain/19/858607/353974.terrain b/public/terrain/19/858607/353974.terrain new file mode 100644 index 000000000..a1b3f85d0 Binary files /dev/null and b/public/terrain/19/858607/353974.terrain differ diff --git a/public/terrain/19/858607/353975.terrain b/public/terrain/19/858607/353975.terrain new file mode 100644 index 000000000..187548602 Binary files /dev/null and b/public/terrain/19/858607/353975.terrain differ diff --git a/public/terrain/19/858607/353976.terrain b/public/terrain/19/858607/353976.terrain new file mode 100644 index 000000000..f049ba667 Binary files /dev/null and b/public/terrain/19/858607/353976.terrain differ diff --git a/public/terrain/19/858607/353977.terrain b/public/terrain/19/858607/353977.terrain new file mode 100644 index 000000000..7e9dc06ef Binary files /dev/null and b/public/terrain/19/858607/353977.terrain differ diff --git a/public/terrain/19/858607/353978.terrain b/public/terrain/19/858607/353978.terrain new file mode 100644 index 000000000..5521b95d4 Binary files /dev/null and b/public/terrain/19/858607/353978.terrain differ diff --git a/public/terrain/19/858607/353979.terrain b/public/terrain/19/858607/353979.terrain new file mode 100644 index 000000000..545a39512 Binary files /dev/null and b/public/terrain/19/858607/353979.terrain differ diff --git a/public/terrain/19/858607/353980.terrain b/public/terrain/19/858607/353980.terrain new file mode 100644 index 000000000..31db540d8 Binary files /dev/null and b/public/terrain/19/858607/353980.terrain differ diff --git a/public/terrain/19/858607/353981.terrain b/public/terrain/19/858607/353981.terrain new file mode 100644 index 000000000..753264cac Binary files /dev/null and b/public/terrain/19/858607/353981.terrain differ diff --git a/public/terrain/19/858607/353982.terrain b/public/terrain/19/858607/353982.terrain new file mode 100644 index 000000000..5e4a21ed7 Binary files /dev/null and b/public/terrain/19/858607/353982.terrain differ diff --git a/public/terrain/19/858607/353983.terrain b/public/terrain/19/858607/353983.terrain new file mode 100644 index 000000000..73512dd96 Binary files /dev/null and b/public/terrain/19/858607/353983.terrain differ diff --git a/public/terrain/19/858607/353984.terrain b/public/terrain/19/858607/353984.terrain new file mode 100644 index 000000000..2a8ba4ca3 Binary files /dev/null and b/public/terrain/19/858607/353984.terrain differ diff --git a/public/terrain/19/858607/353985.terrain b/public/terrain/19/858607/353985.terrain new file mode 100644 index 000000000..ce5f718ea Binary files /dev/null and b/public/terrain/19/858607/353985.terrain differ diff --git a/public/terrain/19/858607/353986.terrain b/public/terrain/19/858607/353986.terrain new file mode 100644 index 000000000..51756386f Binary files /dev/null and b/public/terrain/19/858607/353986.terrain differ diff --git a/public/terrain/19/858607/353987.terrain b/public/terrain/19/858607/353987.terrain new file mode 100644 index 000000000..1654c59a6 Binary files /dev/null and b/public/terrain/19/858607/353987.terrain differ diff --git a/public/terrain/19/858607/353988.terrain b/public/terrain/19/858607/353988.terrain new file mode 100644 index 000000000..6ee24225f Binary files /dev/null and b/public/terrain/19/858607/353988.terrain differ diff --git a/public/terrain/19/858607/353989.terrain b/public/terrain/19/858607/353989.terrain new file mode 100644 index 000000000..307a6c604 Binary files /dev/null and b/public/terrain/19/858607/353989.terrain differ diff --git a/public/terrain/19/858607/353990.terrain b/public/terrain/19/858607/353990.terrain new file mode 100644 index 000000000..cb65db19f Binary files /dev/null and b/public/terrain/19/858607/353990.terrain differ diff --git a/public/terrain/19/858607/353991.terrain b/public/terrain/19/858607/353991.terrain new file mode 100644 index 000000000..1d1859847 Binary files /dev/null and b/public/terrain/19/858607/353991.terrain differ diff --git a/public/terrain/19/858607/353992.terrain b/public/terrain/19/858607/353992.terrain new file mode 100644 index 000000000..e4233d2a6 Binary files /dev/null and b/public/terrain/19/858607/353992.terrain differ diff --git a/public/terrain/19/858607/353993.terrain b/public/terrain/19/858607/353993.terrain new file mode 100644 index 000000000..667241bfc Binary files /dev/null and b/public/terrain/19/858607/353993.terrain differ diff --git a/public/terrain/19/858607/353994.terrain b/public/terrain/19/858607/353994.terrain new file mode 100644 index 000000000..71584c694 Binary files /dev/null and b/public/terrain/19/858607/353994.terrain differ diff --git a/public/terrain/19/858607/353995.terrain b/public/terrain/19/858607/353995.terrain new file mode 100644 index 000000000..f88ff3719 Binary files /dev/null and b/public/terrain/19/858607/353995.terrain differ diff --git a/public/terrain/19/858607/353996.terrain b/public/terrain/19/858607/353996.terrain new file mode 100644 index 000000000..263949bea Binary files /dev/null and b/public/terrain/19/858607/353996.terrain differ diff --git a/public/terrain/19/858607/353997.terrain b/public/terrain/19/858607/353997.terrain new file mode 100644 index 000000000..f9ff7e1fa Binary files /dev/null and b/public/terrain/19/858607/353997.terrain differ diff --git a/public/terrain/19/858607/353998.terrain b/public/terrain/19/858607/353998.terrain new file mode 100644 index 000000000..4689d81ad Binary files /dev/null and b/public/terrain/19/858607/353998.terrain differ diff --git a/public/terrain/19/858607/353999.terrain b/public/terrain/19/858607/353999.terrain new file mode 100644 index 000000000..fd63a39ad Binary files /dev/null and b/public/terrain/19/858607/353999.terrain differ diff --git a/public/terrain/19/858607/354000.terrain b/public/terrain/19/858607/354000.terrain new file mode 100644 index 000000000..5f03aa24a Binary files /dev/null and b/public/terrain/19/858607/354000.terrain differ diff --git a/public/terrain/19/858607/354001.terrain b/public/terrain/19/858607/354001.terrain new file mode 100644 index 000000000..c02dd09d5 Binary files /dev/null and b/public/terrain/19/858607/354001.terrain differ diff --git a/public/terrain/19/858607/354002.terrain b/public/terrain/19/858607/354002.terrain new file mode 100644 index 000000000..c28a37a08 Binary files /dev/null and b/public/terrain/19/858607/354002.terrain differ diff --git a/public/terrain/19/858607/354003.terrain b/public/terrain/19/858607/354003.terrain new file mode 100644 index 000000000..e66c3d44a Binary files /dev/null and b/public/terrain/19/858607/354003.terrain differ diff --git a/public/terrain/19/858607/354004.terrain b/public/terrain/19/858607/354004.terrain new file mode 100644 index 000000000..916f6d195 Binary files /dev/null and b/public/terrain/19/858607/354004.terrain differ diff --git a/public/terrain/19/858607/354005.terrain b/public/terrain/19/858607/354005.terrain new file mode 100644 index 000000000..dc8a5abe2 Binary files /dev/null and b/public/terrain/19/858607/354005.terrain differ diff --git a/public/terrain/19/858607/354006.terrain b/public/terrain/19/858607/354006.terrain new file mode 100644 index 000000000..7fd4ae937 Binary files /dev/null and b/public/terrain/19/858607/354006.terrain differ diff --git a/public/terrain/19/858607/354007.terrain b/public/terrain/19/858607/354007.terrain new file mode 100644 index 000000000..0a8947410 Binary files /dev/null and b/public/terrain/19/858607/354007.terrain differ diff --git a/public/terrain/19/858607/354008.terrain b/public/terrain/19/858607/354008.terrain new file mode 100644 index 000000000..e4f4d51ef Binary files /dev/null and b/public/terrain/19/858607/354008.terrain differ diff --git a/public/terrain/19/858607/354009.terrain b/public/terrain/19/858607/354009.terrain new file mode 100644 index 000000000..60c31340f Binary files /dev/null and b/public/terrain/19/858607/354009.terrain differ diff --git a/public/terrain/19/858607/354010.terrain b/public/terrain/19/858607/354010.terrain new file mode 100644 index 000000000..58cedbf7e Binary files /dev/null and b/public/terrain/19/858607/354010.terrain differ diff --git a/public/terrain/19/858607/354011.terrain b/public/terrain/19/858607/354011.terrain new file mode 100644 index 000000000..95f5b5d96 Binary files /dev/null and b/public/terrain/19/858607/354011.terrain differ diff --git a/public/terrain/19/858607/354012.terrain b/public/terrain/19/858607/354012.terrain new file mode 100644 index 000000000..bb9d3fc63 Binary files /dev/null and b/public/terrain/19/858607/354012.terrain differ diff --git a/public/terrain/19/858607/354013.terrain b/public/terrain/19/858607/354013.terrain new file mode 100644 index 000000000..64cf99ecb Binary files /dev/null and b/public/terrain/19/858607/354013.terrain differ diff --git a/public/terrain/19/858607/354014.terrain b/public/terrain/19/858607/354014.terrain new file mode 100644 index 000000000..5de004571 Binary files /dev/null and b/public/terrain/19/858607/354014.terrain differ diff --git a/public/terrain/19/858607/354015.terrain b/public/terrain/19/858607/354015.terrain new file mode 100644 index 000000000..fc1d6b293 Binary files /dev/null and b/public/terrain/19/858607/354015.terrain differ diff --git a/public/terrain/19/858607/354016.terrain b/public/terrain/19/858607/354016.terrain new file mode 100644 index 000000000..daaaff475 Binary files /dev/null and b/public/terrain/19/858607/354016.terrain differ diff --git a/public/terrain/19/858607/354017.terrain b/public/terrain/19/858607/354017.terrain new file mode 100644 index 000000000..28c6d2971 Binary files /dev/null and b/public/terrain/19/858607/354017.terrain differ diff --git a/public/terrain/19/858607/354018.terrain b/public/terrain/19/858607/354018.terrain new file mode 100644 index 000000000..f4939d671 Binary files /dev/null and b/public/terrain/19/858607/354018.terrain differ diff --git a/public/terrain/19/858607/354019.terrain b/public/terrain/19/858607/354019.terrain new file mode 100644 index 000000000..ce7f3084b Binary files /dev/null and b/public/terrain/19/858607/354019.terrain differ diff --git a/public/terrain/19/858607/354020.terrain b/public/terrain/19/858607/354020.terrain new file mode 100644 index 000000000..b02edbd71 Binary files /dev/null and b/public/terrain/19/858607/354020.terrain differ diff --git a/public/terrain/19/858607/354021.terrain b/public/terrain/19/858607/354021.terrain new file mode 100644 index 000000000..513f8d08b Binary files /dev/null and b/public/terrain/19/858607/354021.terrain differ diff --git a/public/terrain/19/858607/354022.terrain b/public/terrain/19/858607/354022.terrain new file mode 100644 index 000000000..8122fd8c5 Binary files /dev/null and b/public/terrain/19/858607/354022.terrain differ diff --git a/public/terrain/19/858607/354023.terrain b/public/terrain/19/858607/354023.terrain new file mode 100644 index 000000000..fc0940fd4 Binary files /dev/null and b/public/terrain/19/858607/354023.terrain differ diff --git a/public/terrain/19/858607/354024.terrain b/public/terrain/19/858607/354024.terrain new file mode 100644 index 000000000..9589323bd Binary files /dev/null and b/public/terrain/19/858607/354024.terrain differ diff --git a/public/terrain/19/858607/354025.terrain b/public/terrain/19/858607/354025.terrain new file mode 100644 index 000000000..4ad4a4915 Binary files /dev/null and b/public/terrain/19/858607/354025.terrain differ diff --git a/public/terrain/19/858607/354026.terrain b/public/terrain/19/858607/354026.terrain new file mode 100644 index 000000000..20ec8d740 Binary files /dev/null and b/public/terrain/19/858607/354026.terrain differ diff --git a/public/terrain/19/858607/354027.terrain b/public/terrain/19/858607/354027.terrain new file mode 100644 index 000000000..4336e2cd4 Binary files /dev/null and b/public/terrain/19/858607/354027.terrain differ diff --git a/public/terrain/19/858607/354028.terrain b/public/terrain/19/858607/354028.terrain new file mode 100644 index 000000000..363157329 Binary files /dev/null and b/public/terrain/19/858607/354028.terrain differ diff --git a/public/terrain/19/858607/354029.terrain b/public/terrain/19/858607/354029.terrain new file mode 100644 index 000000000..a69dc9083 Binary files /dev/null and b/public/terrain/19/858607/354029.terrain differ diff --git a/public/terrain/19/858607/354030.terrain b/public/terrain/19/858607/354030.terrain new file mode 100644 index 000000000..e37392723 Binary files /dev/null and b/public/terrain/19/858607/354030.terrain differ diff --git a/public/terrain/19/858607/354031.terrain b/public/terrain/19/858607/354031.terrain new file mode 100644 index 000000000..8aa03f477 Binary files /dev/null and b/public/terrain/19/858607/354031.terrain differ diff --git a/public/terrain/19/858607/354032.terrain b/public/terrain/19/858607/354032.terrain new file mode 100644 index 000000000..c9f7079f6 Binary files /dev/null and b/public/terrain/19/858607/354032.terrain differ diff --git a/public/terrain/19/858607/354033.terrain b/public/terrain/19/858607/354033.terrain new file mode 100644 index 000000000..e36c662ac Binary files /dev/null and b/public/terrain/19/858607/354033.terrain differ diff --git a/public/terrain/19/858607/354034.terrain b/public/terrain/19/858607/354034.terrain new file mode 100644 index 000000000..18a52bd10 Binary files /dev/null and b/public/terrain/19/858607/354034.terrain differ diff --git a/public/terrain/19/858607/354035.terrain b/public/terrain/19/858607/354035.terrain new file mode 100644 index 000000000..667722d87 Binary files /dev/null and b/public/terrain/19/858607/354035.terrain differ diff --git a/public/terrain/19/858607/354036.terrain b/public/terrain/19/858607/354036.terrain new file mode 100644 index 000000000..9b7e4d576 Binary files /dev/null and b/public/terrain/19/858607/354036.terrain differ diff --git a/public/terrain/19/858607/354037.terrain b/public/terrain/19/858607/354037.terrain new file mode 100644 index 000000000..afa97d9cd Binary files /dev/null and b/public/terrain/19/858607/354037.terrain differ diff --git a/public/terrain/19/858607/354038.terrain b/public/terrain/19/858607/354038.terrain new file mode 100644 index 000000000..bb8d149f6 Binary files /dev/null and b/public/terrain/19/858607/354038.terrain differ diff --git a/public/terrain/19/858607/354039.terrain b/public/terrain/19/858607/354039.terrain new file mode 100644 index 000000000..15504afff Binary files /dev/null and b/public/terrain/19/858607/354039.terrain differ diff --git a/public/terrain/19/858607/354040.terrain b/public/terrain/19/858607/354040.terrain new file mode 100644 index 000000000..794d8e360 Binary files /dev/null and b/public/terrain/19/858607/354040.terrain differ diff --git a/public/terrain/19/858607/354041.terrain b/public/terrain/19/858607/354041.terrain new file mode 100644 index 000000000..47f1db2ed Binary files /dev/null and b/public/terrain/19/858607/354041.terrain differ diff --git a/public/terrain/19/858607/354042.terrain b/public/terrain/19/858607/354042.terrain new file mode 100644 index 000000000..3ad203fcf Binary files /dev/null and b/public/terrain/19/858607/354042.terrain differ diff --git a/public/terrain/19/858607/354043.terrain b/public/terrain/19/858607/354043.terrain new file mode 100644 index 000000000..84032c8b1 Binary files /dev/null and b/public/terrain/19/858607/354043.terrain differ diff --git a/public/terrain/19/858607/354044.terrain b/public/terrain/19/858607/354044.terrain new file mode 100644 index 000000000..d6bd96f28 Binary files /dev/null and b/public/terrain/19/858607/354044.terrain differ diff --git a/public/terrain/19/858607/354045.terrain b/public/terrain/19/858607/354045.terrain new file mode 100644 index 000000000..09d39ce27 Binary files /dev/null and b/public/terrain/19/858607/354045.terrain differ diff --git a/public/terrain/19/858607/354046.terrain b/public/terrain/19/858607/354046.terrain new file mode 100644 index 000000000..23a4b7282 Binary files /dev/null and b/public/terrain/19/858607/354046.terrain differ diff --git a/public/terrain/19/858607/354047.terrain b/public/terrain/19/858607/354047.terrain new file mode 100644 index 000000000..b18fe01f3 Binary files /dev/null and b/public/terrain/19/858607/354047.terrain differ diff --git a/public/terrain/19/858607/354048.terrain b/public/terrain/19/858607/354048.terrain new file mode 100644 index 000000000..b75940b31 Binary files /dev/null and b/public/terrain/19/858607/354048.terrain differ diff --git a/public/terrain/19/858607/354049.terrain b/public/terrain/19/858607/354049.terrain new file mode 100644 index 000000000..99d0b263d Binary files /dev/null and b/public/terrain/19/858607/354049.terrain differ diff --git a/public/terrain/19/858607/354050.terrain b/public/terrain/19/858607/354050.terrain new file mode 100644 index 000000000..ee580aa08 Binary files /dev/null and b/public/terrain/19/858607/354050.terrain differ diff --git a/public/terrain/19/858607/354051.terrain b/public/terrain/19/858607/354051.terrain new file mode 100644 index 000000000..c50a70e66 Binary files /dev/null and b/public/terrain/19/858607/354051.terrain differ diff --git a/public/terrain/19/858607/354052.terrain b/public/terrain/19/858607/354052.terrain new file mode 100644 index 000000000..cb022ef3e Binary files /dev/null and b/public/terrain/19/858607/354052.terrain differ diff --git a/public/terrain/19/858607/354053.terrain b/public/terrain/19/858607/354053.terrain new file mode 100644 index 000000000..84b974f28 Binary files /dev/null and b/public/terrain/19/858607/354053.terrain differ diff --git a/public/terrain/19/858607/354054.terrain b/public/terrain/19/858607/354054.terrain new file mode 100644 index 000000000..3fed99b75 Binary files /dev/null and b/public/terrain/19/858607/354054.terrain differ diff --git a/public/terrain/19/858607/354055.terrain b/public/terrain/19/858607/354055.terrain new file mode 100644 index 000000000..57d3c8138 Binary files /dev/null and b/public/terrain/19/858607/354055.terrain differ diff --git a/public/terrain/19/858607/354056.terrain b/public/terrain/19/858607/354056.terrain new file mode 100644 index 000000000..0a206a753 Binary files /dev/null and b/public/terrain/19/858607/354056.terrain differ diff --git a/public/terrain/19/858607/354057.terrain b/public/terrain/19/858607/354057.terrain new file mode 100644 index 000000000..99cbe9669 Binary files /dev/null and b/public/terrain/19/858607/354057.terrain differ diff --git a/public/terrain/19/858607/354058.terrain b/public/terrain/19/858607/354058.terrain new file mode 100644 index 000000000..23e36e008 Binary files /dev/null and b/public/terrain/19/858607/354058.terrain differ diff --git a/public/terrain/19/858607/354059.terrain b/public/terrain/19/858607/354059.terrain new file mode 100644 index 000000000..69217d0b7 Binary files /dev/null and b/public/terrain/19/858607/354059.terrain differ diff --git a/public/terrain/19/858608/353743.terrain b/public/terrain/19/858608/353743.terrain new file mode 100644 index 000000000..74deccac1 Binary files /dev/null and b/public/terrain/19/858608/353743.terrain differ diff --git a/public/terrain/19/858608/353744.terrain b/public/terrain/19/858608/353744.terrain new file mode 100644 index 000000000..f9faaf105 Binary files /dev/null and b/public/terrain/19/858608/353744.terrain differ diff --git a/public/terrain/19/858608/353745.terrain b/public/terrain/19/858608/353745.terrain new file mode 100644 index 000000000..76926a757 Binary files /dev/null and b/public/terrain/19/858608/353745.terrain differ diff --git a/public/terrain/19/858608/353746.terrain b/public/terrain/19/858608/353746.terrain new file mode 100644 index 000000000..ba3e76988 Binary files /dev/null and b/public/terrain/19/858608/353746.terrain differ diff --git a/public/terrain/19/858608/353747.terrain b/public/terrain/19/858608/353747.terrain new file mode 100644 index 000000000..873d0b336 Binary files /dev/null and b/public/terrain/19/858608/353747.terrain differ diff --git a/public/terrain/19/858608/353748.terrain b/public/terrain/19/858608/353748.terrain new file mode 100644 index 000000000..b840513fe Binary files /dev/null and b/public/terrain/19/858608/353748.terrain differ diff --git a/public/terrain/19/858608/353749.terrain b/public/terrain/19/858608/353749.terrain new file mode 100644 index 000000000..41e8d8a21 Binary files /dev/null and b/public/terrain/19/858608/353749.terrain differ diff --git a/public/terrain/19/858608/353750.terrain b/public/terrain/19/858608/353750.terrain new file mode 100644 index 000000000..262629d5b Binary files /dev/null and b/public/terrain/19/858608/353750.terrain differ diff --git a/public/terrain/19/858608/353751.terrain b/public/terrain/19/858608/353751.terrain new file mode 100644 index 000000000..c58c58f98 Binary files /dev/null and b/public/terrain/19/858608/353751.terrain differ diff --git a/public/terrain/19/858608/353752.terrain b/public/terrain/19/858608/353752.terrain new file mode 100644 index 000000000..0d42a1f49 Binary files /dev/null and b/public/terrain/19/858608/353752.terrain differ diff --git a/public/terrain/19/858608/353753.terrain b/public/terrain/19/858608/353753.terrain new file mode 100644 index 000000000..c41e8178f Binary files /dev/null and b/public/terrain/19/858608/353753.terrain differ diff --git a/public/terrain/19/858608/353754.terrain b/public/terrain/19/858608/353754.terrain new file mode 100644 index 000000000..f49bf3632 Binary files /dev/null and b/public/terrain/19/858608/353754.terrain differ diff --git a/public/terrain/19/858608/353755.terrain b/public/terrain/19/858608/353755.terrain new file mode 100644 index 000000000..c9c0c5dad Binary files /dev/null and b/public/terrain/19/858608/353755.terrain differ diff --git a/public/terrain/19/858608/353756.terrain b/public/terrain/19/858608/353756.terrain new file mode 100644 index 000000000..f775c7c2c Binary files /dev/null and b/public/terrain/19/858608/353756.terrain differ diff --git a/public/terrain/19/858608/353757.terrain b/public/terrain/19/858608/353757.terrain new file mode 100644 index 000000000..35a8d4ea4 Binary files /dev/null and b/public/terrain/19/858608/353757.terrain differ diff --git a/public/terrain/19/858608/353758.terrain b/public/terrain/19/858608/353758.terrain new file mode 100644 index 000000000..a137ee477 Binary files /dev/null and b/public/terrain/19/858608/353758.terrain differ diff --git a/public/terrain/19/858608/353759.terrain b/public/terrain/19/858608/353759.terrain new file mode 100644 index 000000000..a3e79f4b6 Binary files /dev/null and b/public/terrain/19/858608/353759.terrain differ diff --git a/public/terrain/19/858608/353760.terrain b/public/terrain/19/858608/353760.terrain new file mode 100644 index 000000000..f5318d19a Binary files /dev/null and b/public/terrain/19/858608/353760.terrain differ diff --git a/public/terrain/19/858608/353761.terrain b/public/terrain/19/858608/353761.terrain new file mode 100644 index 000000000..ccdee3a32 Binary files /dev/null and b/public/terrain/19/858608/353761.terrain differ diff --git a/public/terrain/19/858608/353762.terrain b/public/terrain/19/858608/353762.terrain new file mode 100644 index 000000000..35f1d54cd Binary files /dev/null and b/public/terrain/19/858608/353762.terrain differ diff --git a/public/terrain/19/858608/353763.terrain b/public/terrain/19/858608/353763.terrain new file mode 100644 index 000000000..df46692b2 Binary files /dev/null and b/public/terrain/19/858608/353763.terrain differ diff --git a/public/terrain/19/858608/353764.terrain b/public/terrain/19/858608/353764.terrain new file mode 100644 index 000000000..c8e3e1e3e Binary files /dev/null and b/public/terrain/19/858608/353764.terrain differ diff --git a/public/terrain/19/858608/353765.terrain b/public/terrain/19/858608/353765.terrain new file mode 100644 index 000000000..a8f4bbaea Binary files /dev/null and b/public/terrain/19/858608/353765.terrain differ diff --git a/public/terrain/19/858608/353766.terrain b/public/terrain/19/858608/353766.terrain new file mode 100644 index 000000000..4ca40c811 Binary files /dev/null and b/public/terrain/19/858608/353766.terrain differ diff --git a/public/terrain/19/858608/353767.terrain b/public/terrain/19/858608/353767.terrain new file mode 100644 index 000000000..3b5cb2454 Binary files /dev/null and b/public/terrain/19/858608/353767.terrain differ diff --git a/public/terrain/19/858608/353768.terrain b/public/terrain/19/858608/353768.terrain new file mode 100644 index 000000000..0e86e6245 Binary files /dev/null and b/public/terrain/19/858608/353768.terrain differ diff --git a/public/terrain/19/858608/353769.terrain b/public/terrain/19/858608/353769.terrain new file mode 100644 index 000000000..32c25c73d Binary files /dev/null and b/public/terrain/19/858608/353769.terrain differ diff --git a/public/terrain/19/858608/353770.terrain b/public/terrain/19/858608/353770.terrain new file mode 100644 index 000000000..3cab21ee4 Binary files /dev/null and b/public/terrain/19/858608/353770.terrain differ diff --git a/public/terrain/19/858608/353771.terrain b/public/terrain/19/858608/353771.terrain new file mode 100644 index 000000000..c3784a39d Binary files /dev/null and b/public/terrain/19/858608/353771.terrain differ diff --git a/public/terrain/19/858608/353772.terrain b/public/terrain/19/858608/353772.terrain new file mode 100644 index 000000000..55b5186d6 Binary files /dev/null and b/public/terrain/19/858608/353772.terrain differ diff --git a/public/terrain/19/858608/353773.terrain b/public/terrain/19/858608/353773.terrain new file mode 100644 index 000000000..b04387f78 Binary files /dev/null and b/public/terrain/19/858608/353773.terrain differ diff --git a/public/terrain/19/858608/353774.terrain b/public/terrain/19/858608/353774.terrain new file mode 100644 index 000000000..a1fbc5861 Binary files /dev/null and b/public/terrain/19/858608/353774.terrain differ diff --git a/public/terrain/19/858608/353775.terrain b/public/terrain/19/858608/353775.terrain new file mode 100644 index 000000000..9e5b15f06 Binary files /dev/null and b/public/terrain/19/858608/353775.terrain differ diff --git a/public/terrain/19/858608/353776.terrain b/public/terrain/19/858608/353776.terrain new file mode 100644 index 000000000..64a663e11 Binary files /dev/null and b/public/terrain/19/858608/353776.terrain differ diff --git a/public/terrain/19/858608/353777.terrain b/public/terrain/19/858608/353777.terrain new file mode 100644 index 000000000..95a9a9ee7 Binary files /dev/null and b/public/terrain/19/858608/353777.terrain differ diff --git a/public/terrain/19/858608/353778.terrain b/public/terrain/19/858608/353778.terrain new file mode 100644 index 000000000..552e02838 Binary files /dev/null and b/public/terrain/19/858608/353778.terrain differ diff --git a/public/terrain/19/858608/353779.terrain b/public/terrain/19/858608/353779.terrain new file mode 100644 index 000000000..03df5ca82 Binary files /dev/null and b/public/terrain/19/858608/353779.terrain differ diff --git a/public/terrain/19/858608/353780.terrain b/public/terrain/19/858608/353780.terrain new file mode 100644 index 000000000..8358d44fb Binary files /dev/null and b/public/terrain/19/858608/353780.terrain differ diff --git a/public/terrain/19/858608/353781.terrain b/public/terrain/19/858608/353781.terrain new file mode 100644 index 000000000..78658236c Binary files /dev/null and b/public/terrain/19/858608/353781.terrain differ diff --git a/public/terrain/19/858608/353782.terrain b/public/terrain/19/858608/353782.terrain new file mode 100644 index 000000000..9355dc276 Binary files /dev/null and b/public/terrain/19/858608/353782.terrain differ diff --git a/public/terrain/19/858608/353783.terrain b/public/terrain/19/858608/353783.terrain new file mode 100644 index 000000000..b7b29bb36 Binary files /dev/null and b/public/terrain/19/858608/353783.terrain differ diff --git a/public/terrain/19/858608/353784.terrain b/public/terrain/19/858608/353784.terrain new file mode 100644 index 000000000..2e6bd0f6b Binary files /dev/null and b/public/terrain/19/858608/353784.terrain differ diff --git a/public/terrain/19/858608/353785.terrain b/public/terrain/19/858608/353785.terrain new file mode 100644 index 000000000..22d23cdda Binary files /dev/null and b/public/terrain/19/858608/353785.terrain differ diff --git a/public/terrain/19/858608/353786.terrain b/public/terrain/19/858608/353786.terrain new file mode 100644 index 000000000..09de98ae8 Binary files /dev/null and b/public/terrain/19/858608/353786.terrain differ diff --git a/public/terrain/19/858608/353787.terrain b/public/terrain/19/858608/353787.terrain new file mode 100644 index 000000000..609c0b647 Binary files /dev/null and b/public/terrain/19/858608/353787.terrain differ diff --git a/public/terrain/19/858608/353788.terrain b/public/terrain/19/858608/353788.terrain new file mode 100644 index 000000000..67768e1b8 Binary files /dev/null and b/public/terrain/19/858608/353788.terrain differ diff --git a/public/terrain/19/858608/353789.terrain b/public/terrain/19/858608/353789.terrain new file mode 100644 index 000000000..63f1a5ed9 Binary files /dev/null and b/public/terrain/19/858608/353789.terrain differ diff --git a/public/terrain/19/858608/353790.terrain b/public/terrain/19/858608/353790.terrain new file mode 100644 index 000000000..50ee089c0 Binary files /dev/null and b/public/terrain/19/858608/353790.terrain differ diff --git a/public/terrain/19/858608/353791.terrain b/public/terrain/19/858608/353791.terrain new file mode 100644 index 000000000..dafb0ca0a Binary files /dev/null and b/public/terrain/19/858608/353791.terrain differ diff --git a/public/terrain/19/858608/353792.terrain b/public/terrain/19/858608/353792.terrain new file mode 100644 index 000000000..2d5f54fa7 Binary files /dev/null and b/public/terrain/19/858608/353792.terrain differ diff --git a/public/terrain/19/858608/353793.terrain b/public/terrain/19/858608/353793.terrain new file mode 100644 index 000000000..15beff824 Binary files /dev/null and b/public/terrain/19/858608/353793.terrain differ diff --git a/public/terrain/19/858608/353794.terrain b/public/terrain/19/858608/353794.terrain new file mode 100644 index 000000000..5439a9f62 Binary files /dev/null and b/public/terrain/19/858608/353794.terrain differ diff --git a/public/terrain/19/858608/353795.terrain b/public/terrain/19/858608/353795.terrain new file mode 100644 index 000000000..1dfa5389a Binary files /dev/null and b/public/terrain/19/858608/353795.terrain differ diff --git a/public/terrain/19/858608/353796.terrain b/public/terrain/19/858608/353796.terrain new file mode 100644 index 000000000..392fde1ec Binary files /dev/null and b/public/terrain/19/858608/353796.terrain differ diff --git a/public/terrain/19/858608/353797.terrain b/public/terrain/19/858608/353797.terrain new file mode 100644 index 000000000..e7f2f68da Binary files /dev/null and b/public/terrain/19/858608/353797.terrain differ diff --git a/public/terrain/19/858608/353798.terrain b/public/terrain/19/858608/353798.terrain new file mode 100644 index 000000000..5796d26dc Binary files /dev/null and b/public/terrain/19/858608/353798.terrain differ diff --git a/public/terrain/19/858608/353799.terrain b/public/terrain/19/858608/353799.terrain new file mode 100644 index 000000000..962a13dbc Binary files /dev/null and b/public/terrain/19/858608/353799.terrain differ diff --git a/public/terrain/19/858608/353800.terrain b/public/terrain/19/858608/353800.terrain new file mode 100644 index 000000000..b3a88189d Binary files /dev/null and b/public/terrain/19/858608/353800.terrain differ diff --git a/public/terrain/19/858608/353801.terrain b/public/terrain/19/858608/353801.terrain new file mode 100644 index 000000000..8176b37cc Binary files /dev/null and b/public/terrain/19/858608/353801.terrain differ diff --git a/public/terrain/19/858608/353802.terrain b/public/terrain/19/858608/353802.terrain new file mode 100644 index 000000000..ea956d5ec Binary files /dev/null and b/public/terrain/19/858608/353802.terrain differ diff --git a/public/terrain/19/858608/353803.terrain b/public/terrain/19/858608/353803.terrain new file mode 100644 index 000000000..b6e4d4c5c Binary files /dev/null and b/public/terrain/19/858608/353803.terrain differ diff --git a/public/terrain/19/858608/353804.terrain b/public/terrain/19/858608/353804.terrain new file mode 100644 index 000000000..4a987f472 Binary files /dev/null and b/public/terrain/19/858608/353804.terrain differ diff --git a/public/terrain/19/858608/353805.terrain b/public/terrain/19/858608/353805.terrain new file mode 100644 index 000000000..9315443ac Binary files /dev/null and b/public/terrain/19/858608/353805.terrain differ diff --git a/public/terrain/19/858608/353806.terrain b/public/terrain/19/858608/353806.terrain new file mode 100644 index 000000000..4f72118bb Binary files /dev/null and b/public/terrain/19/858608/353806.terrain differ diff --git a/public/terrain/19/858608/353807.terrain b/public/terrain/19/858608/353807.terrain new file mode 100644 index 000000000..5fbe79896 Binary files /dev/null and b/public/terrain/19/858608/353807.terrain differ diff --git a/public/terrain/19/858608/353808.terrain b/public/terrain/19/858608/353808.terrain new file mode 100644 index 000000000..c483775d9 Binary files /dev/null and b/public/terrain/19/858608/353808.terrain differ diff --git a/public/terrain/19/858608/353809.terrain b/public/terrain/19/858608/353809.terrain new file mode 100644 index 000000000..c80706064 Binary files /dev/null and b/public/terrain/19/858608/353809.terrain differ diff --git a/public/terrain/19/858608/353810.terrain b/public/terrain/19/858608/353810.terrain new file mode 100644 index 000000000..6c186c11f Binary files /dev/null and b/public/terrain/19/858608/353810.terrain differ diff --git a/public/terrain/19/858608/353811.terrain b/public/terrain/19/858608/353811.terrain new file mode 100644 index 000000000..f68c53487 Binary files /dev/null and b/public/terrain/19/858608/353811.terrain differ diff --git a/public/terrain/19/858608/353812.terrain b/public/terrain/19/858608/353812.terrain new file mode 100644 index 000000000..5220ea6f9 Binary files /dev/null and b/public/terrain/19/858608/353812.terrain differ diff --git a/public/terrain/19/858608/353813.terrain b/public/terrain/19/858608/353813.terrain new file mode 100644 index 000000000..e8c00ca38 Binary files /dev/null and b/public/terrain/19/858608/353813.terrain differ diff --git a/public/terrain/19/858608/353814.terrain b/public/terrain/19/858608/353814.terrain new file mode 100644 index 000000000..83867e713 Binary files /dev/null and b/public/terrain/19/858608/353814.terrain differ diff --git a/public/terrain/19/858608/353815.terrain b/public/terrain/19/858608/353815.terrain new file mode 100644 index 000000000..42cbb0154 Binary files /dev/null and b/public/terrain/19/858608/353815.terrain differ diff --git a/public/terrain/19/858608/353816.terrain b/public/terrain/19/858608/353816.terrain new file mode 100644 index 000000000..69539cefb Binary files /dev/null and b/public/terrain/19/858608/353816.terrain differ diff --git a/public/terrain/19/858608/353817.terrain b/public/terrain/19/858608/353817.terrain new file mode 100644 index 000000000..c1d1485f4 Binary files /dev/null and b/public/terrain/19/858608/353817.terrain differ diff --git a/public/terrain/19/858608/353818.terrain b/public/terrain/19/858608/353818.terrain new file mode 100644 index 000000000..2e432c945 Binary files /dev/null and b/public/terrain/19/858608/353818.terrain differ diff --git a/public/terrain/19/858608/353819.terrain b/public/terrain/19/858608/353819.terrain new file mode 100644 index 000000000..7e159c10d Binary files /dev/null and b/public/terrain/19/858608/353819.terrain differ diff --git a/public/terrain/19/858608/353820.terrain b/public/terrain/19/858608/353820.terrain new file mode 100644 index 000000000..35206f561 Binary files /dev/null and b/public/terrain/19/858608/353820.terrain differ diff --git a/public/terrain/19/858608/353821.terrain b/public/terrain/19/858608/353821.terrain new file mode 100644 index 000000000..7e67d0588 Binary files /dev/null and b/public/terrain/19/858608/353821.terrain differ diff --git a/public/terrain/19/858608/353822.terrain b/public/terrain/19/858608/353822.terrain new file mode 100644 index 000000000..4afbbabc6 Binary files /dev/null and b/public/terrain/19/858608/353822.terrain differ diff --git a/public/terrain/19/858608/353823.terrain b/public/terrain/19/858608/353823.terrain new file mode 100644 index 000000000..d3ef0bc60 Binary files /dev/null and b/public/terrain/19/858608/353823.terrain differ diff --git a/public/terrain/19/858608/353824.terrain b/public/terrain/19/858608/353824.terrain new file mode 100644 index 000000000..dcdff3bbc Binary files /dev/null and b/public/terrain/19/858608/353824.terrain differ diff --git a/public/terrain/19/858608/353825.terrain b/public/terrain/19/858608/353825.terrain new file mode 100644 index 000000000..e5e81edb0 Binary files /dev/null and b/public/terrain/19/858608/353825.terrain differ diff --git a/public/terrain/19/858608/353826.terrain b/public/terrain/19/858608/353826.terrain new file mode 100644 index 000000000..357c6206a Binary files /dev/null and b/public/terrain/19/858608/353826.terrain differ diff --git a/public/terrain/19/858608/353827.terrain b/public/terrain/19/858608/353827.terrain new file mode 100644 index 000000000..46b3f0da1 Binary files /dev/null and b/public/terrain/19/858608/353827.terrain differ diff --git a/public/terrain/19/858608/353828.terrain b/public/terrain/19/858608/353828.terrain new file mode 100644 index 000000000..544531c63 Binary files /dev/null and b/public/terrain/19/858608/353828.terrain differ diff --git a/public/terrain/19/858608/353829.terrain b/public/terrain/19/858608/353829.terrain new file mode 100644 index 000000000..0bb3b4ad4 Binary files /dev/null and b/public/terrain/19/858608/353829.terrain differ diff --git a/public/terrain/19/858608/353830.terrain b/public/terrain/19/858608/353830.terrain new file mode 100644 index 000000000..e955ec82e Binary files /dev/null and b/public/terrain/19/858608/353830.terrain differ diff --git a/public/terrain/19/858608/353831.terrain b/public/terrain/19/858608/353831.terrain new file mode 100644 index 000000000..8058a8fda Binary files /dev/null and b/public/terrain/19/858608/353831.terrain differ diff --git a/public/terrain/19/858608/353832.terrain b/public/terrain/19/858608/353832.terrain new file mode 100644 index 000000000..815cd1814 Binary files /dev/null and b/public/terrain/19/858608/353832.terrain differ diff --git a/public/terrain/19/858608/353833.terrain b/public/terrain/19/858608/353833.terrain new file mode 100644 index 000000000..87a8286ab Binary files /dev/null and b/public/terrain/19/858608/353833.terrain differ diff --git a/public/terrain/19/858608/353834.terrain b/public/terrain/19/858608/353834.terrain new file mode 100644 index 000000000..d574970ef Binary files /dev/null and b/public/terrain/19/858608/353834.terrain differ diff --git a/public/terrain/19/858608/353835.terrain b/public/terrain/19/858608/353835.terrain new file mode 100644 index 000000000..61c776850 Binary files /dev/null and b/public/terrain/19/858608/353835.terrain differ diff --git a/public/terrain/19/858608/353836.terrain b/public/terrain/19/858608/353836.terrain new file mode 100644 index 000000000..b970c6579 Binary files /dev/null and b/public/terrain/19/858608/353836.terrain differ diff --git a/public/terrain/19/858608/353837.terrain b/public/terrain/19/858608/353837.terrain new file mode 100644 index 000000000..778ef8f72 Binary files /dev/null and b/public/terrain/19/858608/353837.terrain differ diff --git a/public/terrain/19/858608/353838.terrain b/public/terrain/19/858608/353838.terrain new file mode 100644 index 000000000..722744329 Binary files /dev/null and b/public/terrain/19/858608/353838.terrain differ diff --git a/public/terrain/19/858608/353839.terrain b/public/terrain/19/858608/353839.terrain new file mode 100644 index 000000000..18bc1aa39 Binary files /dev/null and b/public/terrain/19/858608/353839.terrain differ diff --git a/public/terrain/19/858608/353840.terrain b/public/terrain/19/858608/353840.terrain new file mode 100644 index 000000000..75541fd73 Binary files /dev/null and b/public/terrain/19/858608/353840.terrain differ diff --git a/public/terrain/19/858608/353841.terrain b/public/terrain/19/858608/353841.terrain new file mode 100644 index 000000000..e8008bf2b Binary files /dev/null and b/public/terrain/19/858608/353841.terrain differ diff --git a/public/terrain/19/858608/353842.terrain b/public/terrain/19/858608/353842.terrain new file mode 100644 index 000000000..8c8bb70d4 Binary files /dev/null and b/public/terrain/19/858608/353842.terrain differ diff --git a/public/terrain/19/858608/353843.terrain b/public/terrain/19/858608/353843.terrain new file mode 100644 index 000000000..da770c5d1 Binary files /dev/null and b/public/terrain/19/858608/353843.terrain differ diff --git a/public/terrain/19/858608/353844.terrain b/public/terrain/19/858608/353844.terrain new file mode 100644 index 000000000..3a57ce54e Binary files /dev/null and b/public/terrain/19/858608/353844.terrain differ diff --git a/public/terrain/19/858608/353845.terrain b/public/terrain/19/858608/353845.terrain new file mode 100644 index 000000000..55801ffce Binary files /dev/null and b/public/terrain/19/858608/353845.terrain differ diff --git a/public/terrain/19/858608/353846.terrain b/public/terrain/19/858608/353846.terrain new file mode 100644 index 000000000..2508f8157 Binary files /dev/null and b/public/terrain/19/858608/353846.terrain differ diff --git a/public/terrain/19/858608/353847.terrain b/public/terrain/19/858608/353847.terrain new file mode 100644 index 000000000..0ae39981f Binary files /dev/null and b/public/terrain/19/858608/353847.terrain differ diff --git a/public/terrain/19/858608/353848.terrain b/public/terrain/19/858608/353848.terrain new file mode 100644 index 000000000..26214b5dd Binary files /dev/null and b/public/terrain/19/858608/353848.terrain differ diff --git a/public/terrain/19/858608/353849.terrain b/public/terrain/19/858608/353849.terrain new file mode 100644 index 000000000..9bce9af7c Binary files /dev/null and b/public/terrain/19/858608/353849.terrain differ diff --git a/public/terrain/19/858608/353850.terrain b/public/terrain/19/858608/353850.terrain new file mode 100644 index 000000000..74e3960cb Binary files /dev/null and b/public/terrain/19/858608/353850.terrain differ diff --git a/public/terrain/19/858608/353851.terrain b/public/terrain/19/858608/353851.terrain new file mode 100644 index 000000000..916c2b086 Binary files /dev/null and b/public/terrain/19/858608/353851.terrain differ diff --git a/public/terrain/19/858608/353852.terrain b/public/terrain/19/858608/353852.terrain new file mode 100644 index 000000000..9625bf9ed Binary files /dev/null and b/public/terrain/19/858608/353852.terrain differ diff --git a/public/terrain/19/858608/353853.terrain b/public/terrain/19/858608/353853.terrain new file mode 100644 index 000000000..48bdfc8f2 Binary files /dev/null and b/public/terrain/19/858608/353853.terrain differ diff --git a/public/terrain/19/858608/353854.terrain b/public/terrain/19/858608/353854.terrain new file mode 100644 index 000000000..82a9ec7bb Binary files /dev/null and b/public/terrain/19/858608/353854.terrain differ diff --git a/public/terrain/19/858608/353855.terrain b/public/terrain/19/858608/353855.terrain new file mode 100644 index 000000000..4700851c5 Binary files /dev/null and b/public/terrain/19/858608/353855.terrain differ diff --git a/public/terrain/19/858608/353856.terrain b/public/terrain/19/858608/353856.terrain new file mode 100644 index 000000000..c390c6a8d Binary files /dev/null and b/public/terrain/19/858608/353856.terrain differ diff --git a/public/terrain/19/858608/353857.terrain b/public/terrain/19/858608/353857.terrain new file mode 100644 index 000000000..a4bb473e6 Binary files /dev/null and b/public/terrain/19/858608/353857.terrain differ diff --git a/public/terrain/19/858608/353858.terrain b/public/terrain/19/858608/353858.terrain new file mode 100644 index 000000000..315cd0248 Binary files /dev/null and b/public/terrain/19/858608/353858.terrain differ diff --git a/public/terrain/19/858608/353859.terrain b/public/terrain/19/858608/353859.terrain new file mode 100644 index 000000000..fd10f0541 Binary files /dev/null and b/public/terrain/19/858608/353859.terrain differ diff --git a/public/terrain/19/858608/353860.terrain b/public/terrain/19/858608/353860.terrain new file mode 100644 index 000000000..83a8c12f9 Binary files /dev/null and b/public/terrain/19/858608/353860.terrain differ diff --git a/public/terrain/19/858608/353861.terrain b/public/terrain/19/858608/353861.terrain new file mode 100644 index 000000000..4ad204da9 Binary files /dev/null and b/public/terrain/19/858608/353861.terrain differ diff --git a/public/terrain/19/858608/353862.terrain b/public/terrain/19/858608/353862.terrain new file mode 100644 index 000000000..9c6a5130a Binary files /dev/null and b/public/terrain/19/858608/353862.terrain differ diff --git a/public/terrain/19/858608/353863.terrain b/public/terrain/19/858608/353863.terrain new file mode 100644 index 000000000..c2a7d9655 Binary files /dev/null and b/public/terrain/19/858608/353863.terrain differ diff --git a/public/terrain/19/858608/353864.terrain b/public/terrain/19/858608/353864.terrain new file mode 100644 index 000000000..cd81b89af Binary files /dev/null and b/public/terrain/19/858608/353864.terrain differ diff --git a/public/terrain/19/858608/353865.terrain b/public/terrain/19/858608/353865.terrain new file mode 100644 index 000000000..8982a3619 Binary files /dev/null and b/public/terrain/19/858608/353865.terrain differ diff --git a/public/terrain/19/858608/353866.terrain b/public/terrain/19/858608/353866.terrain new file mode 100644 index 000000000..4f8744b09 Binary files /dev/null and b/public/terrain/19/858608/353866.terrain differ diff --git a/public/terrain/19/858608/353867.terrain b/public/terrain/19/858608/353867.terrain new file mode 100644 index 000000000..67c5bc2b6 Binary files /dev/null and b/public/terrain/19/858608/353867.terrain differ diff --git a/public/terrain/19/858608/353868.terrain b/public/terrain/19/858608/353868.terrain new file mode 100644 index 000000000..eddd81f82 Binary files /dev/null and b/public/terrain/19/858608/353868.terrain differ diff --git a/public/terrain/19/858608/353869.terrain b/public/terrain/19/858608/353869.terrain new file mode 100644 index 000000000..825ade3c7 Binary files /dev/null and b/public/terrain/19/858608/353869.terrain differ diff --git a/public/terrain/19/858608/353870.terrain b/public/terrain/19/858608/353870.terrain new file mode 100644 index 000000000..985fd4753 Binary files /dev/null and b/public/terrain/19/858608/353870.terrain differ diff --git a/public/terrain/19/858608/353871.terrain b/public/terrain/19/858608/353871.terrain new file mode 100644 index 000000000..88475f563 Binary files /dev/null and b/public/terrain/19/858608/353871.terrain differ diff --git a/public/terrain/19/858608/353872.terrain b/public/terrain/19/858608/353872.terrain new file mode 100644 index 000000000..9153eca8d Binary files /dev/null and b/public/terrain/19/858608/353872.terrain differ diff --git a/public/terrain/19/858608/353873.terrain b/public/terrain/19/858608/353873.terrain new file mode 100644 index 000000000..4e502e761 Binary files /dev/null and b/public/terrain/19/858608/353873.terrain differ diff --git a/public/terrain/19/858608/353874.terrain b/public/terrain/19/858608/353874.terrain new file mode 100644 index 000000000..261d05dc4 Binary files /dev/null and b/public/terrain/19/858608/353874.terrain differ diff --git a/public/terrain/19/858608/353875.terrain b/public/terrain/19/858608/353875.terrain new file mode 100644 index 000000000..dd3c106fa Binary files /dev/null and b/public/terrain/19/858608/353875.terrain differ diff --git a/public/terrain/19/858608/353876.terrain b/public/terrain/19/858608/353876.terrain new file mode 100644 index 000000000..22f5e8a1b Binary files /dev/null and b/public/terrain/19/858608/353876.terrain differ diff --git a/public/terrain/19/858608/353877.terrain b/public/terrain/19/858608/353877.terrain new file mode 100644 index 000000000..ae1dbf611 Binary files /dev/null and b/public/terrain/19/858608/353877.terrain differ diff --git a/public/terrain/19/858608/353878.terrain b/public/terrain/19/858608/353878.terrain new file mode 100644 index 000000000..c53f01c47 Binary files /dev/null and b/public/terrain/19/858608/353878.terrain differ diff --git a/public/terrain/19/858608/353879.terrain b/public/terrain/19/858608/353879.terrain new file mode 100644 index 000000000..2c02eb1f9 Binary files /dev/null and b/public/terrain/19/858608/353879.terrain differ diff --git a/public/terrain/19/858608/353880.terrain b/public/terrain/19/858608/353880.terrain new file mode 100644 index 000000000..2323a16b4 Binary files /dev/null and b/public/terrain/19/858608/353880.terrain differ diff --git a/public/terrain/19/858608/353881.terrain b/public/terrain/19/858608/353881.terrain new file mode 100644 index 000000000..883801525 Binary files /dev/null and b/public/terrain/19/858608/353881.terrain differ diff --git a/public/terrain/19/858608/353882.terrain b/public/terrain/19/858608/353882.terrain new file mode 100644 index 000000000..9b05b79b1 Binary files /dev/null and b/public/terrain/19/858608/353882.terrain differ diff --git a/public/terrain/19/858608/353883.terrain b/public/terrain/19/858608/353883.terrain new file mode 100644 index 000000000..95e31c29c Binary files /dev/null and b/public/terrain/19/858608/353883.terrain differ diff --git a/public/terrain/19/858608/353884.terrain b/public/terrain/19/858608/353884.terrain new file mode 100644 index 000000000..eef25610c Binary files /dev/null and b/public/terrain/19/858608/353884.terrain differ diff --git a/public/terrain/19/858608/353885.terrain b/public/terrain/19/858608/353885.terrain new file mode 100644 index 000000000..fd82baca0 Binary files /dev/null and b/public/terrain/19/858608/353885.terrain differ diff --git a/public/terrain/19/858608/353886.terrain b/public/terrain/19/858608/353886.terrain new file mode 100644 index 000000000..5213bc9c0 Binary files /dev/null and b/public/terrain/19/858608/353886.terrain differ diff --git a/public/terrain/19/858608/353887.terrain b/public/terrain/19/858608/353887.terrain new file mode 100644 index 000000000..e8322d5fc Binary files /dev/null and b/public/terrain/19/858608/353887.terrain differ diff --git a/public/terrain/19/858608/353888.terrain b/public/terrain/19/858608/353888.terrain new file mode 100644 index 000000000..4d04ec8f7 Binary files /dev/null and b/public/terrain/19/858608/353888.terrain differ diff --git a/public/terrain/19/858608/353889.terrain b/public/terrain/19/858608/353889.terrain new file mode 100644 index 000000000..2695ffb96 Binary files /dev/null and b/public/terrain/19/858608/353889.terrain differ diff --git a/public/terrain/19/858608/353890.terrain b/public/terrain/19/858608/353890.terrain new file mode 100644 index 000000000..3ff1a3669 Binary files /dev/null and b/public/terrain/19/858608/353890.terrain differ diff --git a/public/terrain/19/858608/353891.terrain b/public/terrain/19/858608/353891.terrain new file mode 100644 index 000000000..d74f56078 Binary files /dev/null and b/public/terrain/19/858608/353891.terrain differ diff --git a/public/terrain/19/858608/353892.terrain b/public/terrain/19/858608/353892.terrain new file mode 100644 index 000000000..38f1976c9 Binary files /dev/null and b/public/terrain/19/858608/353892.terrain differ diff --git a/public/terrain/19/858608/353893.terrain b/public/terrain/19/858608/353893.terrain new file mode 100644 index 000000000..62998d078 Binary files /dev/null and b/public/terrain/19/858608/353893.terrain differ diff --git a/public/terrain/19/858608/353894.terrain b/public/terrain/19/858608/353894.terrain new file mode 100644 index 000000000..78eb6c1c7 Binary files /dev/null and b/public/terrain/19/858608/353894.terrain differ diff --git a/public/terrain/19/858608/353895.terrain b/public/terrain/19/858608/353895.terrain new file mode 100644 index 000000000..bbddb305e Binary files /dev/null and b/public/terrain/19/858608/353895.terrain differ diff --git a/public/terrain/19/858608/353896.terrain b/public/terrain/19/858608/353896.terrain new file mode 100644 index 000000000..469012dd1 Binary files /dev/null and b/public/terrain/19/858608/353896.terrain differ diff --git a/public/terrain/19/858608/353897.terrain b/public/terrain/19/858608/353897.terrain new file mode 100644 index 000000000..43fc01f12 Binary files /dev/null and b/public/terrain/19/858608/353897.terrain differ diff --git a/public/terrain/19/858608/353898.terrain b/public/terrain/19/858608/353898.terrain new file mode 100644 index 000000000..bbcc28302 Binary files /dev/null and b/public/terrain/19/858608/353898.terrain differ diff --git a/public/terrain/19/858608/353899.terrain b/public/terrain/19/858608/353899.terrain new file mode 100644 index 000000000..35bc0c4fb Binary files /dev/null and b/public/terrain/19/858608/353899.terrain differ diff --git a/public/terrain/19/858608/353900.terrain b/public/terrain/19/858608/353900.terrain new file mode 100644 index 000000000..3e1cdff96 Binary files /dev/null and b/public/terrain/19/858608/353900.terrain differ diff --git a/public/terrain/19/858608/353901.terrain b/public/terrain/19/858608/353901.terrain new file mode 100644 index 000000000..b77cbd0fe Binary files /dev/null and b/public/terrain/19/858608/353901.terrain differ diff --git a/public/terrain/19/858608/353902.terrain b/public/terrain/19/858608/353902.terrain new file mode 100644 index 000000000..d125609c1 Binary files /dev/null and b/public/terrain/19/858608/353902.terrain differ diff --git a/public/terrain/19/858608/353903.terrain b/public/terrain/19/858608/353903.terrain new file mode 100644 index 000000000..8687cfd19 Binary files /dev/null and b/public/terrain/19/858608/353903.terrain differ diff --git a/public/terrain/19/858608/353904.terrain b/public/terrain/19/858608/353904.terrain new file mode 100644 index 000000000..a0aa6878f Binary files /dev/null and b/public/terrain/19/858608/353904.terrain differ diff --git a/public/terrain/19/858608/353905.terrain b/public/terrain/19/858608/353905.terrain new file mode 100644 index 000000000..d7a016228 Binary files /dev/null and b/public/terrain/19/858608/353905.terrain differ diff --git a/public/terrain/19/858608/353906.terrain b/public/terrain/19/858608/353906.terrain new file mode 100644 index 000000000..72245f8ef Binary files /dev/null and b/public/terrain/19/858608/353906.terrain differ diff --git a/public/terrain/19/858608/353907.terrain b/public/terrain/19/858608/353907.terrain new file mode 100644 index 000000000..43e7c5faa Binary files /dev/null and b/public/terrain/19/858608/353907.terrain differ diff --git a/public/terrain/19/858608/353908.terrain b/public/terrain/19/858608/353908.terrain new file mode 100644 index 000000000..2eb71c714 Binary files /dev/null and b/public/terrain/19/858608/353908.terrain differ diff --git a/public/terrain/19/858608/353909.terrain b/public/terrain/19/858608/353909.terrain new file mode 100644 index 000000000..3e081337d Binary files /dev/null and b/public/terrain/19/858608/353909.terrain differ diff --git a/public/terrain/19/858608/353910.terrain b/public/terrain/19/858608/353910.terrain new file mode 100644 index 000000000..da9c4071f Binary files /dev/null and b/public/terrain/19/858608/353910.terrain differ diff --git a/public/terrain/19/858608/353911.terrain b/public/terrain/19/858608/353911.terrain new file mode 100644 index 000000000..ede6c83c3 Binary files /dev/null and b/public/terrain/19/858608/353911.terrain differ diff --git a/public/terrain/19/858608/353912.terrain b/public/terrain/19/858608/353912.terrain new file mode 100644 index 000000000..f9cfdcd42 Binary files /dev/null and b/public/terrain/19/858608/353912.terrain differ diff --git a/public/terrain/19/858608/353913.terrain b/public/terrain/19/858608/353913.terrain new file mode 100644 index 000000000..18d40ebc8 Binary files /dev/null and b/public/terrain/19/858608/353913.terrain differ diff --git a/public/terrain/19/858608/353914.terrain b/public/terrain/19/858608/353914.terrain new file mode 100644 index 000000000..ecbb92fef Binary files /dev/null and b/public/terrain/19/858608/353914.terrain differ diff --git a/public/terrain/19/858608/353915.terrain b/public/terrain/19/858608/353915.terrain new file mode 100644 index 000000000..dbbf9531c Binary files /dev/null and b/public/terrain/19/858608/353915.terrain differ diff --git a/public/terrain/19/858608/353916.terrain b/public/terrain/19/858608/353916.terrain new file mode 100644 index 000000000..0ce1a1baf Binary files /dev/null and b/public/terrain/19/858608/353916.terrain differ diff --git a/public/terrain/19/858608/353917.terrain b/public/terrain/19/858608/353917.terrain new file mode 100644 index 000000000..418d94de4 Binary files /dev/null and b/public/terrain/19/858608/353917.terrain differ diff --git a/public/terrain/19/858608/353918.terrain b/public/terrain/19/858608/353918.terrain new file mode 100644 index 000000000..17e429c8c Binary files /dev/null and b/public/terrain/19/858608/353918.terrain differ diff --git a/public/terrain/19/858608/353919.terrain b/public/terrain/19/858608/353919.terrain new file mode 100644 index 000000000..fe29f7b8a Binary files /dev/null and b/public/terrain/19/858608/353919.terrain differ diff --git a/public/terrain/19/858608/353920.terrain b/public/terrain/19/858608/353920.terrain new file mode 100644 index 000000000..30ee553e8 Binary files /dev/null and b/public/terrain/19/858608/353920.terrain differ diff --git a/public/terrain/19/858608/353921.terrain b/public/terrain/19/858608/353921.terrain new file mode 100644 index 000000000..cb7822109 Binary files /dev/null and b/public/terrain/19/858608/353921.terrain differ diff --git a/public/terrain/19/858608/353922.terrain b/public/terrain/19/858608/353922.terrain new file mode 100644 index 000000000..32123c0c8 Binary files /dev/null and b/public/terrain/19/858608/353922.terrain differ diff --git a/public/terrain/19/858608/353923.terrain b/public/terrain/19/858608/353923.terrain new file mode 100644 index 000000000..88dc27d2e Binary files /dev/null and b/public/terrain/19/858608/353923.terrain differ diff --git a/public/terrain/19/858608/353924.terrain b/public/terrain/19/858608/353924.terrain new file mode 100644 index 000000000..422a1e322 Binary files /dev/null and b/public/terrain/19/858608/353924.terrain differ diff --git a/public/terrain/19/858608/353925.terrain b/public/terrain/19/858608/353925.terrain new file mode 100644 index 000000000..66630da1a Binary files /dev/null and b/public/terrain/19/858608/353925.terrain differ diff --git a/public/terrain/19/858608/353926.terrain b/public/terrain/19/858608/353926.terrain new file mode 100644 index 000000000..08db3168f Binary files /dev/null and b/public/terrain/19/858608/353926.terrain differ diff --git a/public/terrain/19/858608/353927.terrain b/public/terrain/19/858608/353927.terrain new file mode 100644 index 000000000..68a877350 Binary files /dev/null and b/public/terrain/19/858608/353927.terrain differ diff --git a/public/terrain/19/858608/353928.terrain b/public/terrain/19/858608/353928.terrain new file mode 100644 index 000000000..62631a9c9 Binary files /dev/null and b/public/terrain/19/858608/353928.terrain differ diff --git a/public/terrain/19/858608/353929.terrain b/public/terrain/19/858608/353929.terrain new file mode 100644 index 000000000..93a8d56cf Binary files /dev/null and b/public/terrain/19/858608/353929.terrain differ diff --git a/public/terrain/19/858608/353930.terrain b/public/terrain/19/858608/353930.terrain new file mode 100644 index 000000000..56200f3ba Binary files /dev/null and b/public/terrain/19/858608/353930.terrain differ diff --git a/public/terrain/19/858608/353931.terrain b/public/terrain/19/858608/353931.terrain new file mode 100644 index 000000000..2d6b7ec07 Binary files /dev/null and b/public/terrain/19/858608/353931.terrain differ diff --git a/public/terrain/19/858608/353932.terrain b/public/terrain/19/858608/353932.terrain new file mode 100644 index 000000000..02b91d487 Binary files /dev/null and b/public/terrain/19/858608/353932.terrain differ diff --git a/public/terrain/19/858608/353933.terrain b/public/terrain/19/858608/353933.terrain new file mode 100644 index 000000000..1bba5d89f Binary files /dev/null and b/public/terrain/19/858608/353933.terrain differ diff --git a/public/terrain/19/858608/353934.terrain b/public/terrain/19/858608/353934.terrain new file mode 100644 index 000000000..ed76d1727 Binary files /dev/null and b/public/terrain/19/858608/353934.terrain differ diff --git a/public/terrain/19/858608/353935.terrain b/public/terrain/19/858608/353935.terrain new file mode 100644 index 000000000..c1357a0ea Binary files /dev/null and b/public/terrain/19/858608/353935.terrain differ diff --git a/public/terrain/19/858608/353936.terrain b/public/terrain/19/858608/353936.terrain new file mode 100644 index 000000000..99c783b9a Binary files /dev/null and b/public/terrain/19/858608/353936.terrain differ diff --git a/public/terrain/19/858608/353937.terrain b/public/terrain/19/858608/353937.terrain new file mode 100644 index 000000000..ed535ae72 Binary files /dev/null and b/public/terrain/19/858608/353937.terrain differ diff --git a/public/terrain/19/858608/353938.terrain b/public/terrain/19/858608/353938.terrain new file mode 100644 index 000000000..307429b92 Binary files /dev/null and b/public/terrain/19/858608/353938.terrain differ diff --git a/public/terrain/19/858608/353939.terrain b/public/terrain/19/858608/353939.terrain new file mode 100644 index 000000000..431c90183 Binary files /dev/null and b/public/terrain/19/858608/353939.terrain differ diff --git a/public/terrain/19/858608/353940.terrain b/public/terrain/19/858608/353940.terrain new file mode 100644 index 000000000..69fdb3b95 Binary files /dev/null and b/public/terrain/19/858608/353940.terrain differ diff --git a/public/terrain/19/858608/353941.terrain b/public/terrain/19/858608/353941.terrain new file mode 100644 index 000000000..1ec86dae4 Binary files /dev/null and b/public/terrain/19/858608/353941.terrain differ diff --git a/public/terrain/19/858608/353942.terrain b/public/terrain/19/858608/353942.terrain new file mode 100644 index 000000000..ee7d54ceb Binary files /dev/null and b/public/terrain/19/858608/353942.terrain differ diff --git a/public/terrain/19/858608/353943.terrain b/public/terrain/19/858608/353943.terrain new file mode 100644 index 000000000..59be27b70 Binary files /dev/null and b/public/terrain/19/858608/353943.terrain differ diff --git a/public/terrain/19/858608/353944.terrain b/public/terrain/19/858608/353944.terrain new file mode 100644 index 000000000..b5921fdd0 Binary files /dev/null and b/public/terrain/19/858608/353944.terrain differ diff --git a/public/terrain/19/858608/353945.terrain b/public/terrain/19/858608/353945.terrain new file mode 100644 index 000000000..54492381d Binary files /dev/null and b/public/terrain/19/858608/353945.terrain differ diff --git a/public/terrain/19/858608/353946.terrain b/public/terrain/19/858608/353946.terrain new file mode 100644 index 000000000..6c41e0391 Binary files /dev/null and b/public/terrain/19/858608/353946.terrain differ diff --git a/public/terrain/19/858608/353947.terrain b/public/terrain/19/858608/353947.terrain new file mode 100644 index 000000000..833468f99 Binary files /dev/null and b/public/terrain/19/858608/353947.terrain differ diff --git a/public/terrain/19/858608/353948.terrain b/public/terrain/19/858608/353948.terrain new file mode 100644 index 000000000..97e3cf299 Binary files /dev/null and b/public/terrain/19/858608/353948.terrain differ diff --git a/public/terrain/19/858608/353949.terrain b/public/terrain/19/858608/353949.terrain new file mode 100644 index 000000000..7672e45d6 Binary files /dev/null and b/public/terrain/19/858608/353949.terrain differ diff --git a/public/terrain/19/858608/353950.terrain b/public/terrain/19/858608/353950.terrain new file mode 100644 index 000000000..5ae16cd1d Binary files /dev/null and b/public/terrain/19/858608/353950.terrain differ diff --git a/public/terrain/19/858608/353951.terrain b/public/terrain/19/858608/353951.terrain new file mode 100644 index 000000000..7e57cb7d9 Binary files /dev/null and b/public/terrain/19/858608/353951.terrain differ diff --git a/public/terrain/19/858608/353952.terrain b/public/terrain/19/858608/353952.terrain new file mode 100644 index 000000000..49f2809d2 Binary files /dev/null and b/public/terrain/19/858608/353952.terrain differ diff --git a/public/terrain/19/858608/353953.terrain b/public/terrain/19/858608/353953.terrain new file mode 100644 index 000000000..39e859e54 Binary files /dev/null and b/public/terrain/19/858608/353953.terrain differ diff --git a/public/terrain/19/858608/353954.terrain b/public/terrain/19/858608/353954.terrain new file mode 100644 index 000000000..09af4c0e1 Binary files /dev/null and b/public/terrain/19/858608/353954.terrain differ diff --git a/public/terrain/19/858608/353955.terrain b/public/terrain/19/858608/353955.terrain new file mode 100644 index 000000000..73d41eb47 Binary files /dev/null and b/public/terrain/19/858608/353955.terrain differ diff --git a/public/terrain/19/858608/353956.terrain b/public/terrain/19/858608/353956.terrain new file mode 100644 index 000000000..6b681f24a Binary files /dev/null and b/public/terrain/19/858608/353956.terrain differ diff --git a/public/terrain/19/858608/353957.terrain b/public/terrain/19/858608/353957.terrain new file mode 100644 index 000000000..283def5ba Binary files /dev/null and b/public/terrain/19/858608/353957.terrain differ diff --git a/public/terrain/19/858608/353958.terrain b/public/terrain/19/858608/353958.terrain new file mode 100644 index 000000000..f63bed1dc Binary files /dev/null and b/public/terrain/19/858608/353958.terrain differ diff --git a/public/terrain/19/858608/353959.terrain b/public/terrain/19/858608/353959.terrain new file mode 100644 index 000000000..afc4b8705 Binary files /dev/null and b/public/terrain/19/858608/353959.terrain differ diff --git a/public/terrain/19/858608/353960.terrain b/public/terrain/19/858608/353960.terrain new file mode 100644 index 000000000..0fbb53c5a Binary files /dev/null and b/public/terrain/19/858608/353960.terrain differ diff --git a/public/terrain/19/858608/353961.terrain b/public/terrain/19/858608/353961.terrain new file mode 100644 index 000000000..6a5ce9bb6 Binary files /dev/null and b/public/terrain/19/858608/353961.terrain differ diff --git a/public/terrain/19/858608/353962.terrain b/public/terrain/19/858608/353962.terrain new file mode 100644 index 000000000..d43b8cf02 Binary files /dev/null and b/public/terrain/19/858608/353962.terrain differ diff --git a/public/terrain/19/858608/353963.terrain b/public/terrain/19/858608/353963.terrain new file mode 100644 index 000000000..e16fe8abe Binary files /dev/null and b/public/terrain/19/858608/353963.terrain differ diff --git a/public/terrain/19/858608/353964.terrain b/public/terrain/19/858608/353964.terrain new file mode 100644 index 000000000..84f3ab53d Binary files /dev/null and b/public/terrain/19/858608/353964.terrain differ diff --git a/public/terrain/19/858608/353965.terrain b/public/terrain/19/858608/353965.terrain new file mode 100644 index 000000000..edb62c052 Binary files /dev/null and b/public/terrain/19/858608/353965.terrain differ diff --git a/public/terrain/19/858608/353966.terrain b/public/terrain/19/858608/353966.terrain new file mode 100644 index 000000000..9920dd066 Binary files /dev/null and b/public/terrain/19/858608/353966.terrain differ diff --git a/public/terrain/19/858608/353967.terrain b/public/terrain/19/858608/353967.terrain new file mode 100644 index 000000000..74dd81942 Binary files /dev/null and b/public/terrain/19/858608/353967.terrain differ diff --git a/public/terrain/19/858608/353968.terrain b/public/terrain/19/858608/353968.terrain new file mode 100644 index 000000000..59ba418e0 Binary files /dev/null and b/public/terrain/19/858608/353968.terrain differ diff --git a/public/terrain/19/858608/353969.terrain b/public/terrain/19/858608/353969.terrain new file mode 100644 index 000000000..994a9542f Binary files /dev/null and b/public/terrain/19/858608/353969.terrain differ diff --git a/public/terrain/19/858608/353970.terrain b/public/terrain/19/858608/353970.terrain new file mode 100644 index 000000000..c41a5ed80 Binary files /dev/null and b/public/terrain/19/858608/353970.terrain differ diff --git a/public/terrain/19/858608/353971.terrain b/public/terrain/19/858608/353971.terrain new file mode 100644 index 000000000..8c7072036 Binary files /dev/null and b/public/terrain/19/858608/353971.terrain differ diff --git a/public/terrain/19/858608/353972.terrain b/public/terrain/19/858608/353972.terrain new file mode 100644 index 000000000..b186f31ec Binary files /dev/null and b/public/terrain/19/858608/353972.terrain differ diff --git a/public/terrain/19/858608/353973.terrain b/public/terrain/19/858608/353973.terrain new file mode 100644 index 000000000..bb6f38c4c Binary files /dev/null and b/public/terrain/19/858608/353973.terrain differ diff --git a/public/terrain/19/858608/353974.terrain b/public/terrain/19/858608/353974.terrain new file mode 100644 index 000000000..61e04975c Binary files /dev/null and b/public/terrain/19/858608/353974.terrain differ diff --git a/public/terrain/19/858608/353975.terrain b/public/terrain/19/858608/353975.terrain new file mode 100644 index 000000000..db5123038 Binary files /dev/null and b/public/terrain/19/858608/353975.terrain differ diff --git a/public/terrain/19/858608/353976.terrain b/public/terrain/19/858608/353976.terrain new file mode 100644 index 000000000..174759692 Binary files /dev/null and b/public/terrain/19/858608/353976.terrain differ diff --git a/public/terrain/19/858608/353977.terrain b/public/terrain/19/858608/353977.terrain new file mode 100644 index 000000000..bfb158626 Binary files /dev/null and b/public/terrain/19/858608/353977.terrain differ diff --git a/public/terrain/19/858608/353978.terrain b/public/terrain/19/858608/353978.terrain new file mode 100644 index 000000000..cc5171a5c Binary files /dev/null and b/public/terrain/19/858608/353978.terrain differ diff --git a/public/terrain/19/858608/353979.terrain b/public/terrain/19/858608/353979.terrain new file mode 100644 index 000000000..2d04a206d Binary files /dev/null and b/public/terrain/19/858608/353979.terrain differ diff --git a/public/terrain/19/858608/353980.terrain b/public/terrain/19/858608/353980.terrain new file mode 100644 index 000000000..db2fed891 Binary files /dev/null and b/public/terrain/19/858608/353980.terrain differ diff --git a/public/terrain/19/858608/353981.terrain b/public/terrain/19/858608/353981.terrain new file mode 100644 index 000000000..534cf8618 Binary files /dev/null and b/public/terrain/19/858608/353981.terrain differ diff --git a/public/terrain/19/858608/353982.terrain b/public/terrain/19/858608/353982.terrain new file mode 100644 index 000000000..7e3e21cfd Binary files /dev/null and b/public/terrain/19/858608/353982.terrain differ diff --git a/public/terrain/19/858608/353983.terrain b/public/terrain/19/858608/353983.terrain new file mode 100644 index 000000000..d5f0f74cb Binary files /dev/null and b/public/terrain/19/858608/353983.terrain differ diff --git a/public/terrain/19/858608/353984.terrain b/public/terrain/19/858608/353984.terrain new file mode 100644 index 000000000..77a46088f Binary files /dev/null and b/public/terrain/19/858608/353984.terrain differ diff --git a/public/terrain/19/858608/353985.terrain b/public/terrain/19/858608/353985.terrain new file mode 100644 index 000000000..ab099a87a Binary files /dev/null and b/public/terrain/19/858608/353985.terrain differ diff --git a/public/terrain/19/858608/353986.terrain b/public/terrain/19/858608/353986.terrain new file mode 100644 index 000000000..fee69e0ec Binary files /dev/null and b/public/terrain/19/858608/353986.terrain differ diff --git a/public/terrain/19/858608/353987.terrain b/public/terrain/19/858608/353987.terrain new file mode 100644 index 000000000..080eef7ca Binary files /dev/null and b/public/terrain/19/858608/353987.terrain differ diff --git a/public/terrain/19/858608/353988.terrain b/public/terrain/19/858608/353988.terrain new file mode 100644 index 000000000..93b8ee646 Binary files /dev/null and b/public/terrain/19/858608/353988.terrain differ diff --git a/public/terrain/19/858608/353989.terrain b/public/terrain/19/858608/353989.terrain new file mode 100644 index 000000000..b8df56d0a Binary files /dev/null and b/public/terrain/19/858608/353989.terrain differ diff --git a/public/terrain/19/858608/353990.terrain b/public/terrain/19/858608/353990.terrain new file mode 100644 index 000000000..40d2e6368 Binary files /dev/null and b/public/terrain/19/858608/353990.terrain differ diff --git a/public/terrain/19/858608/353991.terrain b/public/terrain/19/858608/353991.terrain new file mode 100644 index 000000000..9b3ecdcfc Binary files /dev/null and b/public/terrain/19/858608/353991.terrain differ diff --git a/public/terrain/19/858608/353992.terrain b/public/terrain/19/858608/353992.terrain new file mode 100644 index 000000000..3c2e72065 Binary files /dev/null and b/public/terrain/19/858608/353992.terrain differ diff --git a/public/terrain/19/858608/353993.terrain b/public/terrain/19/858608/353993.terrain new file mode 100644 index 000000000..4f8b6d34b Binary files /dev/null and b/public/terrain/19/858608/353993.terrain differ diff --git a/public/terrain/19/858608/353994.terrain b/public/terrain/19/858608/353994.terrain new file mode 100644 index 000000000..40cd6df08 Binary files /dev/null and b/public/terrain/19/858608/353994.terrain differ diff --git a/public/terrain/19/858608/353995.terrain b/public/terrain/19/858608/353995.terrain new file mode 100644 index 000000000..9eae31977 Binary files /dev/null and b/public/terrain/19/858608/353995.terrain differ diff --git a/public/terrain/19/858608/353996.terrain b/public/terrain/19/858608/353996.terrain new file mode 100644 index 000000000..6f3af12e5 Binary files /dev/null and b/public/terrain/19/858608/353996.terrain differ diff --git a/public/terrain/19/858608/353997.terrain b/public/terrain/19/858608/353997.terrain new file mode 100644 index 000000000..26e59b880 Binary files /dev/null and b/public/terrain/19/858608/353997.terrain differ diff --git a/public/terrain/19/858608/353998.terrain b/public/terrain/19/858608/353998.terrain new file mode 100644 index 000000000..aa8e8b97d Binary files /dev/null and b/public/terrain/19/858608/353998.terrain differ diff --git a/public/terrain/19/858608/353999.terrain b/public/terrain/19/858608/353999.terrain new file mode 100644 index 000000000..68711316d Binary files /dev/null and b/public/terrain/19/858608/353999.terrain differ diff --git a/public/terrain/19/858608/354000.terrain b/public/terrain/19/858608/354000.terrain new file mode 100644 index 000000000..f9a60f3a8 Binary files /dev/null and b/public/terrain/19/858608/354000.terrain differ diff --git a/public/terrain/19/858608/354001.terrain b/public/terrain/19/858608/354001.terrain new file mode 100644 index 000000000..80c69ced4 Binary files /dev/null and b/public/terrain/19/858608/354001.terrain differ diff --git a/public/terrain/19/858608/354002.terrain b/public/terrain/19/858608/354002.terrain new file mode 100644 index 000000000..a8e6be37e Binary files /dev/null and b/public/terrain/19/858608/354002.terrain differ diff --git a/public/terrain/19/858608/354003.terrain b/public/terrain/19/858608/354003.terrain new file mode 100644 index 000000000..9d7eccf90 Binary files /dev/null and b/public/terrain/19/858608/354003.terrain differ diff --git a/public/terrain/19/858608/354004.terrain b/public/terrain/19/858608/354004.terrain new file mode 100644 index 000000000..993dbfdf8 Binary files /dev/null and b/public/terrain/19/858608/354004.terrain differ diff --git a/public/terrain/19/858608/354005.terrain b/public/terrain/19/858608/354005.terrain new file mode 100644 index 000000000..3ea3ed88d Binary files /dev/null and b/public/terrain/19/858608/354005.terrain differ diff --git a/public/terrain/19/858608/354006.terrain b/public/terrain/19/858608/354006.terrain new file mode 100644 index 000000000..29207fdd9 Binary files /dev/null and b/public/terrain/19/858608/354006.terrain differ diff --git a/public/terrain/19/858608/354007.terrain b/public/terrain/19/858608/354007.terrain new file mode 100644 index 000000000..07aa1dd8a Binary files /dev/null and b/public/terrain/19/858608/354007.terrain differ diff --git a/public/terrain/19/858608/354008.terrain b/public/terrain/19/858608/354008.terrain new file mode 100644 index 000000000..f2d673834 Binary files /dev/null and b/public/terrain/19/858608/354008.terrain differ diff --git a/public/terrain/19/858608/354009.terrain b/public/terrain/19/858608/354009.terrain new file mode 100644 index 000000000..3c474d8dd Binary files /dev/null and b/public/terrain/19/858608/354009.terrain differ diff --git a/public/terrain/19/858608/354010.terrain b/public/terrain/19/858608/354010.terrain new file mode 100644 index 000000000..1fdcd3066 Binary files /dev/null and b/public/terrain/19/858608/354010.terrain differ diff --git a/public/terrain/19/858608/354011.terrain b/public/terrain/19/858608/354011.terrain new file mode 100644 index 000000000..bf8512388 Binary files /dev/null and b/public/terrain/19/858608/354011.terrain differ diff --git a/public/terrain/19/858608/354012.terrain b/public/terrain/19/858608/354012.terrain new file mode 100644 index 000000000..9c82db966 Binary files /dev/null and b/public/terrain/19/858608/354012.terrain differ diff --git a/public/terrain/19/858608/354013.terrain b/public/terrain/19/858608/354013.terrain new file mode 100644 index 000000000..f9ada68b6 Binary files /dev/null and b/public/terrain/19/858608/354013.terrain differ diff --git a/public/terrain/19/858608/354014.terrain b/public/terrain/19/858608/354014.terrain new file mode 100644 index 000000000..d8da9f2a7 Binary files /dev/null and b/public/terrain/19/858608/354014.terrain differ diff --git a/public/terrain/19/858608/354015.terrain b/public/terrain/19/858608/354015.terrain new file mode 100644 index 000000000..b77fa535b Binary files /dev/null and b/public/terrain/19/858608/354015.terrain differ diff --git a/public/terrain/19/858608/354016.terrain b/public/terrain/19/858608/354016.terrain new file mode 100644 index 000000000..0508cfe8e Binary files /dev/null and b/public/terrain/19/858608/354016.terrain differ diff --git a/public/terrain/19/858608/354017.terrain b/public/terrain/19/858608/354017.terrain new file mode 100644 index 000000000..d4bbbbcc3 Binary files /dev/null and b/public/terrain/19/858608/354017.terrain differ diff --git a/public/terrain/19/858608/354018.terrain b/public/terrain/19/858608/354018.terrain new file mode 100644 index 000000000..8ea31b7bd Binary files /dev/null and b/public/terrain/19/858608/354018.terrain differ diff --git a/public/terrain/19/858608/354019.terrain b/public/terrain/19/858608/354019.terrain new file mode 100644 index 000000000..08d95ff85 Binary files /dev/null and b/public/terrain/19/858608/354019.terrain differ diff --git a/public/terrain/19/858608/354020.terrain b/public/terrain/19/858608/354020.terrain new file mode 100644 index 000000000..406957f9c Binary files /dev/null and b/public/terrain/19/858608/354020.terrain differ diff --git a/public/terrain/19/858608/354021.terrain b/public/terrain/19/858608/354021.terrain new file mode 100644 index 000000000..f0a87ac84 Binary files /dev/null and b/public/terrain/19/858608/354021.terrain differ diff --git a/public/terrain/19/858608/354022.terrain b/public/terrain/19/858608/354022.terrain new file mode 100644 index 000000000..f51994723 Binary files /dev/null and b/public/terrain/19/858608/354022.terrain differ diff --git a/public/terrain/19/858608/354023.terrain b/public/terrain/19/858608/354023.terrain new file mode 100644 index 000000000..7d8ce59ac Binary files /dev/null and b/public/terrain/19/858608/354023.terrain differ diff --git a/public/terrain/19/858608/354024.terrain b/public/terrain/19/858608/354024.terrain new file mode 100644 index 000000000..d4e3cc14a Binary files /dev/null and b/public/terrain/19/858608/354024.terrain differ diff --git a/public/terrain/19/858608/354025.terrain b/public/terrain/19/858608/354025.terrain new file mode 100644 index 000000000..1b8afe7f9 Binary files /dev/null and b/public/terrain/19/858608/354025.terrain differ diff --git a/public/terrain/19/858608/354026.terrain b/public/terrain/19/858608/354026.terrain new file mode 100644 index 000000000..275f0f7bb Binary files /dev/null and b/public/terrain/19/858608/354026.terrain differ diff --git a/public/terrain/19/858608/354027.terrain b/public/terrain/19/858608/354027.terrain new file mode 100644 index 000000000..b81f92516 Binary files /dev/null and b/public/terrain/19/858608/354027.terrain differ diff --git a/public/terrain/19/858608/354028.terrain b/public/terrain/19/858608/354028.terrain new file mode 100644 index 000000000..c95cddb3e Binary files /dev/null and b/public/terrain/19/858608/354028.terrain differ diff --git a/public/terrain/19/858608/354029.terrain b/public/terrain/19/858608/354029.terrain new file mode 100644 index 000000000..a645975c9 Binary files /dev/null and b/public/terrain/19/858608/354029.terrain differ diff --git a/public/terrain/19/858608/354030.terrain b/public/terrain/19/858608/354030.terrain new file mode 100644 index 000000000..5643326ee Binary files /dev/null and b/public/terrain/19/858608/354030.terrain differ diff --git a/public/terrain/19/858608/354031.terrain b/public/terrain/19/858608/354031.terrain new file mode 100644 index 000000000..c37712e30 Binary files /dev/null and b/public/terrain/19/858608/354031.terrain differ diff --git a/public/terrain/19/858608/354032.terrain b/public/terrain/19/858608/354032.terrain new file mode 100644 index 000000000..065d049e2 Binary files /dev/null and b/public/terrain/19/858608/354032.terrain differ diff --git a/public/terrain/19/858608/354033.terrain b/public/terrain/19/858608/354033.terrain new file mode 100644 index 000000000..eefe81f58 Binary files /dev/null and b/public/terrain/19/858608/354033.terrain differ diff --git a/public/terrain/19/858608/354034.terrain b/public/terrain/19/858608/354034.terrain new file mode 100644 index 000000000..af69ff821 Binary files /dev/null and b/public/terrain/19/858608/354034.terrain differ diff --git a/public/terrain/19/858608/354035.terrain b/public/terrain/19/858608/354035.terrain new file mode 100644 index 000000000..1a67eec23 Binary files /dev/null and b/public/terrain/19/858608/354035.terrain differ diff --git a/public/terrain/19/858608/354036.terrain b/public/terrain/19/858608/354036.terrain new file mode 100644 index 000000000..be5c8a05f Binary files /dev/null and b/public/terrain/19/858608/354036.terrain differ diff --git a/public/terrain/19/858608/354037.terrain b/public/terrain/19/858608/354037.terrain new file mode 100644 index 000000000..7e1a742a6 Binary files /dev/null and b/public/terrain/19/858608/354037.terrain differ diff --git a/public/terrain/19/858608/354038.terrain b/public/terrain/19/858608/354038.terrain new file mode 100644 index 000000000..823c0e2f1 Binary files /dev/null and b/public/terrain/19/858608/354038.terrain differ diff --git a/public/terrain/19/858608/354039.terrain b/public/terrain/19/858608/354039.terrain new file mode 100644 index 000000000..980ffe531 Binary files /dev/null and b/public/terrain/19/858608/354039.terrain differ diff --git a/public/terrain/19/858608/354040.terrain b/public/terrain/19/858608/354040.terrain new file mode 100644 index 000000000..f2ce1197c Binary files /dev/null and b/public/terrain/19/858608/354040.terrain differ diff --git a/public/terrain/19/858608/354041.terrain b/public/terrain/19/858608/354041.terrain new file mode 100644 index 000000000..20c7bd1be Binary files /dev/null and b/public/terrain/19/858608/354041.terrain differ diff --git a/public/terrain/19/858608/354042.terrain b/public/terrain/19/858608/354042.terrain new file mode 100644 index 000000000..e14f56ff6 Binary files /dev/null and b/public/terrain/19/858608/354042.terrain differ diff --git a/public/terrain/19/858608/354043.terrain b/public/terrain/19/858608/354043.terrain new file mode 100644 index 000000000..c34202820 Binary files /dev/null and b/public/terrain/19/858608/354043.terrain differ diff --git a/public/terrain/19/858608/354044.terrain b/public/terrain/19/858608/354044.terrain new file mode 100644 index 000000000..9f1b8cebe Binary files /dev/null and b/public/terrain/19/858608/354044.terrain differ diff --git a/public/terrain/19/858608/354045.terrain b/public/terrain/19/858608/354045.terrain new file mode 100644 index 000000000..94ec25d1c Binary files /dev/null and b/public/terrain/19/858608/354045.terrain differ diff --git a/public/terrain/19/858608/354046.terrain b/public/terrain/19/858608/354046.terrain new file mode 100644 index 000000000..c36fecc5b Binary files /dev/null and b/public/terrain/19/858608/354046.terrain differ diff --git a/public/terrain/19/858608/354047.terrain b/public/terrain/19/858608/354047.terrain new file mode 100644 index 000000000..6669173e9 Binary files /dev/null and b/public/terrain/19/858608/354047.terrain differ diff --git a/public/terrain/19/858608/354048.terrain b/public/terrain/19/858608/354048.terrain new file mode 100644 index 000000000..2f190fd9f Binary files /dev/null and b/public/terrain/19/858608/354048.terrain differ diff --git a/public/terrain/19/858608/354049.terrain b/public/terrain/19/858608/354049.terrain new file mode 100644 index 000000000..17f3c7768 Binary files /dev/null and b/public/terrain/19/858608/354049.terrain differ diff --git a/public/terrain/19/858608/354050.terrain b/public/terrain/19/858608/354050.terrain new file mode 100644 index 000000000..b554cfe55 Binary files /dev/null and b/public/terrain/19/858608/354050.terrain differ diff --git a/public/terrain/19/858608/354051.terrain b/public/terrain/19/858608/354051.terrain new file mode 100644 index 000000000..878682431 Binary files /dev/null and b/public/terrain/19/858608/354051.terrain differ diff --git a/public/terrain/19/858608/354052.terrain b/public/terrain/19/858608/354052.terrain new file mode 100644 index 000000000..0f1da96d2 Binary files /dev/null and b/public/terrain/19/858608/354052.terrain differ diff --git a/public/terrain/19/858608/354053.terrain b/public/terrain/19/858608/354053.terrain new file mode 100644 index 000000000..9413ec4f4 Binary files /dev/null and b/public/terrain/19/858608/354053.terrain differ diff --git a/public/terrain/19/858608/354054.terrain b/public/terrain/19/858608/354054.terrain new file mode 100644 index 000000000..cb8909614 Binary files /dev/null and b/public/terrain/19/858608/354054.terrain differ diff --git a/public/terrain/19/858608/354055.terrain b/public/terrain/19/858608/354055.terrain new file mode 100644 index 000000000..6e0008804 Binary files /dev/null and b/public/terrain/19/858608/354055.terrain differ diff --git a/public/terrain/19/858608/354056.terrain b/public/terrain/19/858608/354056.terrain new file mode 100644 index 000000000..dbee35343 Binary files /dev/null and b/public/terrain/19/858608/354056.terrain differ diff --git a/public/terrain/19/858608/354057.terrain b/public/terrain/19/858608/354057.terrain new file mode 100644 index 000000000..ffa561079 Binary files /dev/null and b/public/terrain/19/858608/354057.terrain differ diff --git a/public/terrain/19/858608/354058.terrain b/public/terrain/19/858608/354058.terrain new file mode 100644 index 000000000..cd3d5e6df Binary files /dev/null and b/public/terrain/19/858608/354058.terrain differ diff --git a/public/terrain/19/858608/354059.terrain b/public/terrain/19/858608/354059.terrain new file mode 100644 index 000000000..7ea6770d6 Binary files /dev/null and b/public/terrain/19/858608/354059.terrain differ diff --git a/public/terrain/19/858609/353743.terrain b/public/terrain/19/858609/353743.terrain new file mode 100644 index 000000000..d455a69f9 Binary files /dev/null and b/public/terrain/19/858609/353743.terrain differ diff --git a/public/terrain/19/858609/353744.terrain b/public/terrain/19/858609/353744.terrain new file mode 100644 index 000000000..6f87bb5bc Binary files /dev/null and b/public/terrain/19/858609/353744.terrain differ diff --git a/public/terrain/19/858609/353745.terrain b/public/terrain/19/858609/353745.terrain new file mode 100644 index 000000000..6847a4a43 Binary files /dev/null and b/public/terrain/19/858609/353745.terrain differ diff --git a/public/terrain/19/858609/353746.terrain b/public/terrain/19/858609/353746.terrain new file mode 100644 index 000000000..58930855c Binary files /dev/null and b/public/terrain/19/858609/353746.terrain differ diff --git a/public/terrain/19/858609/353747.terrain b/public/terrain/19/858609/353747.terrain new file mode 100644 index 000000000..1f695c85d Binary files /dev/null and b/public/terrain/19/858609/353747.terrain differ diff --git a/public/terrain/19/858609/353748.terrain b/public/terrain/19/858609/353748.terrain new file mode 100644 index 000000000..2fe070d26 Binary files /dev/null and b/public/terrain/19/858609/353748.terrain differ diff --git a/public/terrain/19/858609/353749.terrain b/public/terrain/19/858609/353749.terrain new file mode 100644 index 000000000..109e05a88 Binary files /dev/null and b/public/terrain/19/858609/353749.terrain differ diff --git a/public/terrain/19/858609/353750.terrain b/public/terrain/19/858609/353750.terrain new file mode 100644 index 000000000..3e4ef522b Binary files /dev/null and b/public/terrain/19/858609/353750.terrain differ diff --git a/public/terrain/19/858609/353751.terrain b/public/terrain/19/858609/353751.terrain new file mode 100644 index 000000000..3e6273f2f Binary files /dev/null and b/public/terrain/19/858609/353751.terrain differ diff --git a/public/terrain/19/858609/353752.terrain b/public/terrain/19/858609/353752.terrain new file mode 100644 index 000000000..461ff1d38 Binary files /dev/null and b/public/terrain/19/858609/353752.terrain differ diff --git a/public/terrain/19/858609/353753.terrain b/public/terrain/19/858609/353753.terrain new file mode 100644 index 000000000..3677d3f80 Binary files /dev/null and b/public/terrain/19/858609/353753.terrain differ diff --git a/public/terrain/19/858609/353754.terrain b/public/terrain/19/858609/353754.terrain new file mode 100644 index 000000000..cbc2c4e31 Binary files /dev/null and b/public/terrain/19/858609/353754.terrain differ diff --git a/public/terrain/19/858609/353755.terrain b/public/terrain/19/858609/353755.terrain new file mode 100644 index 000000000..cae38b103 Binary files /dev/null and b/public/terrain/19/858609/353755.terrain differ diff --git a/public/terrain/19/858609/353756.terrain b/public/terrain/19/858609/353756.terrain new file mode 100644 index 000000000..a452f083f Binary files /dev/null and b/public/terrain/19/858609/353756.terrain differ diff --git a/public/terrain/19/858609/353757.terrain b/public/terrain/19/858609/353757.terrain new file mode 100644 index 000000000..0b974ded0 Binary files /dev/null and b/public/terrain/19/858609/353757.terrain differ diff --git a/public/terrain/19/858609/353758.terrain b/public/terrain/19/858609/353758.terrain new file mode 100644 index 000000000..cf27295ac Binary files /dev/null and b/public/terrain/19/858609/353758.terrain differ diff --git a/public/terrain/19/858609/353759.terrain b/public/terrain/19/858609/353759.terrain new file mode 100644 index 000000000..d56c3fb7c Binary files /dev/null and b/public/terrain/19/858609/353759.terrain differ diff --git a/public/terrain/19/858609/353760.terrain b/public/terrain/19/858609/353760.terrain new file mode 100644 index 000000000..f9de79fc4 Binary files /dev/null and b/public/terrain/19/858609/353760.terrain differ diff --git a/public/terrain/19/858609/353761.terrain b/public/terrain/19/858609/353761.terrain new file mode 100644 index 000000000..76996db72 Binary files /dev/null and b/public/terrain/19/858609/353761.terrain differ diff --git a/public/terrain/19/858609/353762.terrain b/public/terrain/19/858609/353762.terrain new file mode 100644 index 000000000..09639bc21 Binary files /dev/null and b/public/terrain/19/858609/353762.terrain differ diff --git a/public/terrain/19/858609/353763.terrain b/public/terrain/19/858609/353763.terrain new file mode 100644 index 000000000..e66ea8cff Binary files /dev/null and b/public/terrain/19/858609/353763.terrain differ diff --git a/public/terrain/19/858609/353764.terrain b/public/terrain/19/858609/353764.terrain new file mode 100644 index 000000000..e080b9370 Binary files /dev/null and b/public/terrain/19/858609/353764.terrain differ diff --git a/public/terrain/19/858609/353765.terrain b/public/terrain/19/858609/353765.terrain new file mode 100644 index 000000000..cbbc927c0 Binary files /dev/null and b/public/terrain/19/858609/353765.terrain differ diff --git a/public/terrain/19/858609/353766.terrain b/public/terrain/19/858609/353766.terrain new file mode 100644 index 000000000..d7b7d2841 Binary files /dev/null and b/public/terrain/19/858609/353766.terrain differ diff --git a/public/terrain/19/858609/353767.terrain b/public/terrain/19/858609/353767.terrain new file mode 100644 index 000000000..b26fad2bc Binary files /dev/null and b/public/terrain/19/858609/353767.terrain differ diff --git a/public/terrain/19/858609/353768.terrain b/public/terrain/19/858609/353768.terrain new file mode 100644 index 000000000..00448619c Binary files /dev/null and b/public/terrain/19/858609/353768.terrain differ diff --git a/public/terrain/19/858609/353769.terrain b/public/terrain/19/858609/353769.terrain new file mode 100644 index 000000000..21b662e66 Binary files /dev/null and b/public/terrain/19/858609/353769.terrain differ diff --git a/public/terrain/19/858609/353770.terrain b/public/terrain/19/858609/353770.terrain new file mode 100644 index 000000000..5d12d79db Binary files /dev/null and b/public/terrain/19/858609/353770.terrain differ diff --git a/public/terrain/19/858609/353771.terrain b/public/terrain/19/858609/353771.terrain new file mode 100644 index 000000000..1f300db3d Binary files /dev/null and b/public/terrain/19/858609/353771.terrain differ diff --git a/public/terrain/19/858609/353772.terrain b/public/terrain/19/858609/353772.terrain new file mode 100644 index 000000000..d9a2af5ae Binary files /dev/null and b/public/terrain/19/858609/353772.terrain differ diff --git a/public/terrain/19/858609/353773.terrain b/public/terrain/19/858609/353773.terrain new file mode 100644 index 000000000..c26deb412 Binary files /dev/null and b/public/terrain/19/858609/353773.terrain differ diff --git a/public/terrain/19/858609/353774.terrain b/public/terrain/19/858609/353774.terrain new file mode 100644 index 000000000..024294d46 Binary files /dev/null and b/public/terrain/19/858609/353774.terrain differ diff --git a/public/terrain/19/858609/353775.terrain b/public/terrain/19/858609/353775.terrain new file mode 100644 index 000000000..f37e6fdc4 Binary files /dev/null and b/public/terrain/19/858609/353775.terrain differ diff --git a/public/terrain/19/858609/353776.terrain b/public/terrain/19/858609/353776.terrain new file mode 100644 index 000000000..916ee54a9 Binary files /dev/null and b/public/terrain/19/858609/353776.terrain differ diff --git a/public/terrain/19/858609/353777.terrain b/public/terrain/19/858609/353777.terrain new file mode 100644 index 000000000..aa6ded4fa Binary files /dev/null and b/public/terrain/19/858609/353777.terrain differ diff --git a/public/terrain/19/858609/353778.terrain b/public/terrain/19/858609/353778.terrain new file mode 100644 index 000000000..1d372107d Binary files /dev/null and b/public/terrain/19/858609/353778.terrain differ diff --git a/public/terrain/19/858609/353779.terrain b/public/terrain/19/858609/353779.terrain new file mode 100644 index 000000000..fcf649ea2 Binary files /dev/null and b/public/terrain/19/858609/353779.terrain differ diff --git a/public/terrain/19/858609/353780.terrain b/public/terrain/19/858609/353780.terrain new file mode 100644 index 000000000..c3ffdb771 Binary files /dev/null and b/public/terrain/19/858609/353780.terrain differ diff --git a/public/terrain/19/858609/353781.terrain b/public/terrain/19/858609/353781.terrain new file mode 100644 index 000000000..4eeebc25b Binary files /dev/null and b/public/terrain/19/858609/353781.terrain differ diff --git a/public/terrain/19/858609/353782.terrain b/public/terrain/19/858609/353782.terrain new file mode 100644 index 000000000..c769e248e Binary files /dev/null and b/public/terrain/19/858609/353782.terrain differ diff --git a/public/terrain/19/858609/353783.terrain b/public/terrain/19/858609/353783.terrain new file mode 100644 index 000000000..127e00e41 Binary files /dev/null and b/public/terrain/19/858609/353783.terrain differ diff --git a/public/terrain/19/858609/353784.terrain b/public/terrain/19/858609/353784.terrain new file mode 100644 index 000000000..d88ee9a7c Binary files /dev/null and b/public/terrain/19/858609/353784.terrain differ diff --git a/public/terrain/19/858609/353785.terrain b/public/terrain/19/858609/353785.terrain new file mode 100644 index 000000000..14d046892 Binary files /dev/null and b/public/terrain/19/858609/353785.terrain differ diff --git a/public/terrain/19/858609/353786.terrain b/public/terrain/19/858609/353786.terrain new file mode 100644 index 000000000..66aa07057 Binary files /dev/null and b/public/terrain/19/858609/353786.terrain differ diff --git a/public/terrain/19/858609/353787.terrain b/public/terrain/19/858609/353787.terrain new file mode 100644 index 000000000..191f3a054 Binary files /dev/null and b/public/terrain/19/858609/353787.terrain differ diff --git a/public/terrain/19/858609/353788.terrain b/public/terrain/19/858609/353788.terrain new file mode 100644 index 000000000..939886eb6 Binary files /dev/null and b/public/terrain/19/858609/353788.terrain differ diff --git a/public/terrain/19/858609/353789.terrain b/public/terrain/19/858609/353789.terrain new file mode 100644 index 000000000..8944cd3e3 Binary files /dev/null and b/public/terrain/19/858609/353789.terrain differ diff --git a/public/terrain/19/858609/353790.terrain b/public/terrain/19/858609/353790.terrain new file mode 100644 index 000000000..83ce4f292 Binary files /dev/null and b/public/terrain/19/858609/353790.terrain differ diff --git a/public/terrain/19/858609/353791.terrain b/public/terrain/19/858609/353791.terrain new file mode 100644 index 000000000..08bde6128 Binary files /dev/null and b/public/terrain/19/858609/353791.terrain differ diff --git a/public/terrain/19/858609/353792.terrain b/public/terrain/19/858609/353792.terrain new file mode 100644 index 000000000..8603e8db8 Binary files /dev/null and b/public/terrain/19/858609/353792.terrain differ diff --git a/public/terrain/19/858609/353793.terrain b/public/terrain/19/858609/353793.terrain new file mode 100644 index 000000000..7ea737ea4 Binary files /dev/null and b/public/terrain/19/858609/353793.terrain differ diff --git a/public/terrain/19/858609/353794.terrain b/public/terrain/19/858609/353794.terrain new file mode 100644 index 000000000..40136bfe3 Binary files /dev/null and b/public/terrain/19/858609/353794.terrain differ diff --git a/public/terrain/19/858609/353795.terrain b/public/terrain/19/858609/353795.terrain new file mode 100644 index 000000000..9cf6379c5 Binary files /dev/null and b/public/terrain/19/858609/353795.terrain differ diff --git a/public/terrain/19/858609/353796.terrain b/public/terrain/19/858609/353796.terrain new file mode 100644 index 000000000..b710028b8 Binary files /dev/null and b/public/terrain/19/858609/353796.terrain differ diff --git a/public/terrain/19/858609/353797.terrain b/public/terrain/19/858609/353797.terrain new file mode 100644 index 000000000..d8e9e2fd9 Binary files /dev/null and b/public/terrain/19/858609/353797.terrain differ diff --git a/public/terrain/19/858609/353798.terrain b/public/terrain/19/858609/353798.terrain new file mode 100644 index 000000000..c8785f10d Binary files /dev/null and b/public/terrain/19/858609/353798.terrain differ diff --git a/public/terrain/19/858609/353799.terrain b/public/terrain/19/858609/353799.terrain new file mode 100644 index 000000000..0b2f9ca92 Binary files /dev/null and b/public/terrain/19/858609/353799.terrain differ diff --git a/public/terrain/19/858609/353800.terrain b/public/terrain/19/858609/353800.terrain new file mode 100644 index 000000000..03d6dbee4 Binary files /dev/null and b/public/terrain/19/858609/353800.terrain differ diff --git a/public/terrain/19/858609/353801.terrain b/public/terrain/19/858609/353801.terrain new file mode 100644 index 000000000..27d1c2c05 Binary files /dev/null and b/public/terrain/19/858609/353801.terrain differ diff --git a/public/terrain/19/858609/353802.terrain b/public/terrain/19/858609/353802.terrain new file mode 100644 index 000000000..57a59695d Binary files /dev/null and b/public/terrain/19/858609/353802.terrain differ diff --git a/public/terrain/19/858609/353803.terrain b/public/terrain/19/858609/353803.terrain new file mode 100644 index 000000000..79bcec4f4 Binary files /dev/null and b/public/terrain/19/858609/353803.terrain differ diff --git a/public/terrain/19/858609/353804.terrain b/public/terrain/19/858609/353804.terrain new file mode 100644 index 000000000..6663c5080 Binary files /dev/null and b/public/terrain/19/858609/353804.terrain differ diff --git a/public/terrain/19/858609/353805.terrain b/public/terrain/19/858609/353805.terrain new file mode 100644 index 000000000..534b6316c Binary files /dev/null and b/public/terrain/19/858609/353805.terrain differ diff --git a/public/terrain/19/858609/353806.terrain b/public/terrain/19/858609/353806.terrain new file mode 100644 index 000000000..c0918c99f Binary files /dev/null and b/public/terrain/19/858609/353806.terrain differ diff --git a/public/terrain/19/858609/353807.terrain b/public/terrain/19/858609/353807.terrain new file mode 100644 index 000000000..c2d1bbe24 Binary files /dev/null and b/public/terrain/19/858609/353807.terrain differ diff --git a/public/terrain/19/858609/353808.terrain b/public/terrain/19/858609/353808.terrain new file mode 100644 index 000000000..f5a7e6f94 Binary files /dev/null and b/public/terrain/19/858609/353808.terrain differ diff --git a/public/terrain/19/858609/353809.terrain b/public/terrain/19/858609/353809.terrain new file mode 100644 index 000000000..a8473d222 Binary files /dev/null and b/public/terrain/19/858609/353809.terrain differ diff --git a/public/terrain/19/858609/353810.terrain b/public/terrain/19/858609/353810.terrain new file mode 100644 index 000000000..df275bd27 Binary files /dev/null and b/public/terrain/19/858609/353810.terrain differ diff --git a/public/terrain/19/858609/353811.terrain b/public/terrain/19/858609/353811.terrain new file mode 100644 index 000000000..e37d2d22d Binary files /dev/null and b/public/terrain/19/858609/353811.terrain differ diff --git a/public/terrain/19/858609/353812.terrain b/public/terrain/19/858609/353812.terrain new file mode 100644 index 000000000..2ba114966 Binary files /dev/null and b/public/terrain/19/858609/353812.terrain differ diff --git a/public/terrain/19/858609/353813.terrain b/public/terrain/19/858609/353813.terrain new file mode 100644 index 000000000..23f4cc3de Binary files /dev/null and b/public/terrain/19/858609/353813.terrain differ diff --git a/public/terrain/19/858609/353814.terrain b/public/terrain/19/858609/353814.terrain new file mode 100644 index 000000000..5c3d92a9e Binary files /dev/null and b/public/terrain/19/858609/353814.terrain differ diff --git a/public/terrain/19/858609/353815.terrain b/public/terrain/19/858609/353815.terrain new file mode 100644 index 000000000..9c6951d73 Binary files /dev/null and b/public/terrain/19/858609/353815.terrain differ diff --git a/public/terrain/19/858609/353816.terrain b/public/terrain/19/858609/353816.terrain new file mode 100644 index 000000000..3f86ca273 Binary files /dev/null and b/public/terrain/19/858609/353816.terrain differ diff --git a/public/terrain/19/858609/353817.terrain b/public/terrain/19/858609/353817.terrain new file mode 100644 index 000000000..20b25dc61 Binary files /dev/null and b/public/terrain/19/858609/353817.terrain differ diff --git a/public/terrain/19/858609/353818.terrain b/public/terrain/19/858609/353818.terrain new file mode 100644 index 000000000..111dfdc55 Binary files /dev/null and b/public/terrain/19/858609/353818.terrain differ diff --git a/public/terrain/19/858609/353819.terrain b/public/terrain/19/858609/353819.terrain new file mode 100644 index 000000000..54e972216 Binary files /dev/null and b/public/terrain/19/858609/353819.terrain differ diff --git a/public/terrain/19/858609/353820.terrain b/public/terrain/19/858609/353820.terrain new file mode 100644 index 000000000..1c6d4a104 Binary files /dev/null and b/public/terrain/19/858609/353820.terrain differ diff --git a/public/terrain/19/858609/353821.terrain b/public/terrain/19/858609/353821.terrain new file mode 100644 index 000000000..5a4ad9a45 Binary files /dev/null and b/public/terrain/19/858609/353821.terrain differ diff --git a/public/terrain/19/858609/353822.terrain b/public/terrain/19/858609/353822.terrain new file mode 100644 index 000000000..c62f1bd7d Binary files /dev/null and b/public/terrain/19/858609/353822.terrain differ diff --git a/public/terrain/19/858609/353823.terrain b/public/terrain/19/858609/353823.terrain new file mode 100644 index 000000000..3eeab5447 Binary files /dev/null and b/public/terrain/19/858609/353823.terrain differ diff --git a/public/terrain/19/858609/353824.terrain b/public/terrain/19/858609/353824.terrain new file mode 100644 index 000000000..b1e5f5e05 Binary files /dev/null and b/public/terrain/19/858609/353824.terrain differ diff --git a/public/terrain/19/858609/353825.terrain b/public/terrain/19/858609/353825.terrain new file mode 100644 index 000000000..2fd5cc89f Binary files /dev/null and b/public/terrain/19/858609/353825.terrain differ diff --git a/public/terrain/19/858609/353826.terrain b/public/terrain/19/858609/353826.terrain new file mode 100644 index 000000000..e74ed7ba2 Binary files /dev/null and b/public/terrain/19/858609/353826.terrain differ diff --git a/public/terrain/19/858609/353827.terrain b/public/terrain/19/858609/353827.terrain new file mode 100644 index 000000000..510c66c89 Binary files /dev/null and b/public/terrain/19/858609/353827.terrain differ diff --git a/public/terrain/19/858609/353828.terrain b/public/terrain/19/858609/353828.terrain new file mode 100644 index 000000000..91a163dcc Binary files /dev/null and b/public/terrain/19/858609/353828.terrain differ diff --git a/public/terrain/19/858609/353829.terrain b/public/terrain/19/858609/353829.terrain new file mode 100644 index 000000000..3f6ab8a1d Binary files /dev/null and b/public/terrain/19/858609/353829.terrain differ diff --git a/public/terrain/19/858609/353830.terrain b/public/terrain/19/858609/353830.terrain new file mode 100644 index 000000000..d8b043405 Binary files /dev/null and b/public/terrain/19/858609/353830.terrain differ diff --git a/public/terrain/19/858609/353831.terrain b/public/terrain/19/858609/353831.terrain new file mode 100644 index 000000000..5a332a3bb Binary files /dev/null and b/public/terrain/19/858609/353831.terrain differ diff --git a/public/terrain/19/858609/353832.terrain b/public/terrain/19/858609/353832.terrain new file mode 100644 index 000000000..c8b56d56c Binary files /dev/null and b/public/terrain/19/858609/353832.terrain differ diff --git a/public/terrain/19/858609/353833.terrain b/public/terrain/19/858609/353833.terrain new file mode 100644 index 000000000..f10dd1328 Binary files /dev/null and b/public/terrain/19/858609/353833.terrain differ diff --git a/public/terrain/19/858609/353834.terrain b/public/terrain/19/858609/353834.terrain new file mode 100644 index 000000000..960d84b42 Binary files /dev/null and b/public/terrain/19/858609/353834.terrain differ diff --git a/public/terrain/19/858609/353835.terrain b/public/terrain/19/858609/353835.terrain new file mode 100644 index 000000000..d6b91e63e Binary files /dev/null and b/public/terrain/19/858609/353835.terrain differ diff --git a/public/terrain/19/858609/353836.terrain b/public/terrain/19/858609/353836.terrain new file mode 100644 index 000000000..3e1ee016e Binary files /dev/null and b/public/terrain/19/858609/353836.terrain differ diff --git a/public/terrain/19/858609/353837.terrain b/public/terrain/19/858609/353837.terrain new file mode 100644 index 000000000..e16c3d210 Binary files /dev/null and b/public/terrain/19/858609/353837.terrain differ diff --git a/public/terrain/19/858609/353838.terrain b/public/terrain/19/858609/353838.terrain new file mode 100644 index 000000000..0c134c99f Binary files /dev/null and b/public/terrain/19/858609/353838.terrain differ diff --git a/public/terrain/19/858609/353839.terrain b/public/terrain/19/858609/353839.terrain new file mode 100644 index 000000000..3249fcc03 Binary files /dev/null and b/public/terrain/19/858609/353839.terrain differ diff --git a/public/terrain/19/858609/353840.terrain b/public/terrain/19/858609/353840.terrain new file mode 100644 index 000000000..ae3ab8b62 Binary files /dev/null and b/public/terrain/19/858609/353840.terrain differ diff --git a/public/terrain/19/858609/353841.terrain b/public/terrain/19/858609/353841.terrain new file mode 100644 index 000000000..f63ab8964 Binary files /dev/null and b/public/terrain/19/858609/353841.terrain differ diff --git a/public/terrain/19/858609/353842.terrain b/public/terrain/19/858609/353842.terrain new file mode 100644 index 000000000..da64b6f1f Binary files /dev/null and b/public/terrain/19/858609/353842.terrain differ diff --git a/public/terrain/19/858609/353843.terrain b/public/terrain/19/858609/353843.terrain new file mode 100644 index 000000000..0957b0403 Binary files /dev/null and b/public/terrain/19/858609/353843.terrain differ diff --git a/public/terrain/19/858609/353844.terrain b/public/terrain/19/858609/353844.terrain new file mode 100644 index 000000000..9cca86049 Binary files /dev/null and b/public/terrain/19/858609/353844.terrain differ diff --git a/public/terrain/19/858609/353845.terrain b/public/terrain/19/858609/353845.terrain new file mode 100644 index 000000000..0178cd00c Binary files /dev/null and b/public/terrain/19/858609/353845.terrain differ diff --git a/public/terrain/19/858609/353846.terrain b/public/terrain/19/858609/353846.terrain new file mode 100644 index 000000000..90e8bea39 Binary files /dev/null and b/public/terrain/19/858609/353846.terrain differ diff --git a/public/terrain/19/858609/353847.terrain b/public/terrain/19/858609/353847.terrain new file mode 100644 index 000000000..25bce13f7 Binary files /dev/null and b/public/terrain/19/858609/353847.terrain differ diff --git a/public/terrain/19/858609/353848.terrain b/public/terrain/19/858609/353848.terrain new file mode 100644 index 000000000..d4d1253dd Binary files /dev/null and b/public/terrain/19/858609/353848.terrain differ diff --git a/public/terrain/19/858609/353849.terrain b/public/terrain/19/858609/353849.terrain new file mode 100644 index 000000000..1359e6bd3 Binary files /dev/null and b/public/terrain/19/858609/353849.terrain differ diff --git a/public/terrain/19/858609/353850.terrain b/public/terrain/19/858609/353850.terrain new file mode 100644 index 000000000..49fd78760 Binary files /dev/null and b/public/terrain/19/858609/353850.terrain differ diff --git a/public/terrain/19/858609/353851.terrain b/public/terrain/19/858609/353851.terrain new file mode 100644 index 000000000..7a88d2701 Binary files /dev/null and b/public/terrain/19/858609/353851.terrain differ diff --git a/public/terrain/19/858609/353852.terrain b/public/terrain/19/858609/353852.terrain new file mode 100644 index 000000000..47dd2c9c9 Binary files /dev/null and b/public/terrain/19/858609/353852.terrain differ diff --git a/public/terrain/19/858609/353853.terrain b/public/terrain/19/858609/353853.terrain new file mode 100644 index 000000000..c16f2f3c5 Binary files /dev/null and b/public/terrain/19/858609/353853.terrain differ diff --git a/public/terrain/19/858609/353854.terrain b/public/terrain/19/858609/353854.terrain new file mode 100644 index 000000000..bd7978c16 Binary files /dev/null and b/public/terrain/19/858609/353854.terrain differ diff --git a/public/terrain/19/858609/353855.terrain b/public/terrain/19/858609/353855.terrain new file mode 100644 index 000000000..516a97e99 Binary files /dev/null and b/public/terrain/19/858609/353855.terrain differ diff --git a/public/terrain/19/858609/353856.terrain b/public/terrain/19/858609/353856.terrain new file mode 100644 index 000000000..a7231a995 Binary files /dev/null and b/public/terrain/19/858609/353856.terrain differ diff --git a/public/terrain/19/858609/353857.terrain b/public/terrain/19/858609/353857.terrain new file mode 100644 index 000000000..7e2d8824a Binary files /dev/null and b/public/terrain/19/858609/353857.terrain differ diff --git a/public/terrain/19/858609/353858.terrain b/public/terrain/19/858609/353858.terrain new file mode 100644 index 000000000..9a5768b4f Binary files /dev/null and b/public/terrain/19/858609/353858.terrain differ diff --git a/public/terrain/19/858609/353859.terrain b/public/terrain/19/858609/353859.terrain new file mode 100644 index 000000000..c6f36dac6 Binary files /dev/null and b/public/terrain/19/858609/353859.terrain differ diff --git a/public/terrain/19/858609/353860.terrain b/public/terrain/19/858609/353860.terrain new file mode 100644 index 000000000..7b6b711c0 Binary files /dev/null and b/public/terrain/19/858609/353860.terrain differ diff --git a/public/terrain/19/858609/353861.terrain b/public/terrain/19/858609/353861.terrain new file mode 100644 index 000000000..3fd5a0a8b Binary files /dev/null and b/public/terrain/19/858609/353861.terrain differ diff --git a/public/terrain/19/858609/353862.terrain b/public/terrain/19/858609/353862.terrain new file mode 100644 index 000000000..955766a2b Binary files /dev/null and b/public/terrain/19/858609/353862.terrain differ diff --git a/public/terrain/19/858609/353863.terrain b/public/terrain/19/858609/353863.terrain new file mode 100644 index 000000000..4c9d50dbe Binary files /dev/null and b/public/terrain/19/858609/353863.terrain differ diff --git a/public/terrain/19/858609/353864.terrain b/public/terrain/19/858609/353864.terrain new file mode 100644 index 000000000..da389fa1e Binary files /dev/null and b/public/terrain/19/858609/353864.terrain differ diff --git a/public/terrain/19/858609/353865.terrain b/public/terrain/19/858609/353865.terrain new file mode 100644 index 000000000..ed5168b23 Binary files /dev/null and b/public/terrain/19/858609/353865.terrain differ diff --git a/public/terrain/19/858609/353866.terrain b/public/terrain/19/858609/353866.terrain new file mode 100644 index 000000000..c08b7a19b Binary files /dev/null and b/public/terrain/19/858609/353866.terrain differ diff --git a/public/terrain/19/858609/353867.terrain b/public/terrain/19/858609/353867.terrain new file mode 100644 index 000000000..7066bbbb7 Binary files /dev/null and b/public/terrain/19/858609/353867.terrain differ diff --git a/public/terrain/19/858609/353868.terrain b/public/terrain/19/858609/353868.terrain new file mode 100644 index 000000000..18eed3087 Binary files /dev/null and b/public/terrain/19/858609/353868.terrain differ diff --git a/public/terrain/19/858609/353869.terrain b/public/terrain/19/858609/353869.terrain new file mode 100644 index 000000000..076fe2c9f Binary files /dev/null and b/public/terrain/19/858609/353869.terrain differ diff --git a/public/terrain/19/858609/353870.terrain b/public/terrain/19/858609/353870.terrain new file mode 100644 index 000000000..dae12fdb6 Binary files /dev/null and b/public/terrain/19/858609/353870.terrain differ diff --git a/public/terrain/19/858609/353871.terrain b/public/terrain/19/858609/353871.terrain new file mode 100644 index 000000000..c88e881c2 Binary files /dev/null and b/public/terrain/19/858609/353871.terrain differ diff --git a/public/terrain/19/858609/353872.terrain b/public/terrain/19/858609/353872.terrain new file mode 100644 index 000000000..f95e2cf28 Binary files /dev/null and b/public/terrain/19/858609/353872.terrain differ diff --git a/public/terrain/19/858609/353873.terrain b/public/terrain/19/858609/353873.terrain new file mode 100644 index 000000000..e72ca0e05 Binary files /dev/null and b/public/terrain/19/858609/353873.terrain differ diff --git a/public/terrain/19/858609/353874.terrain b/public/terrain/19/858609/353874.terrain new file mode 100644 index 000000000..16eb3b6ff Binary files /dev/null and b/public/terrain/19/858609/353874.terrain differ diff --git a/public/terrain/19/858609/353875.terrain b/public/terrain/19/858609/353875.terrain new file mode 100644 index 000000000..f5ba709a2 Binary files /dev/null and b/public/terrain/19/858609/353875.terrain differ diff --git a/public/terrain/19/858609/353876.terrain b/public/terrain/19/858609/353876.terrain new file mode 100644 index 000000000..8fcdcaea7 Binary files /dev/null and b/public/terrain/19/858609/353876.terrain differ diff --git a/public/terrain/19/858609/353877.terrain b/public/terrain/19/858609/353877.terrain new file mode 100644 index 000000000..eedd3ff32 Binary files /dev/null and b/public/terrain/19/858609/353877.terrain differ diff --git a/public/terrain/19/858609/353878.terrain b/public/terrain/19/858609/353878.terrain new file mode 100644 index 000000000..64ac89aa8 Binary files /dev/null and b/public/terrain/19/858609/353878.terrain differ diff --git a/public/terrain/19/858609/353879.terrain b/public/terrain/19/858609/353879.terrain new file mode 100644 index 000000000..383c2e557 Binary files /dev/null and b/public/terrain/19/858609/353879.terrain differ diff --git a/public/terrain/19/858609/353880.terrain b/public/terrain/19/858609/353880.terrain new file mode 100644 index 000000000..d09958066 Binary files /dev/null and b/public/terrain/19/858609/353880.terrain differ diff --git a/public/terrain/19/858609/353881.terrain b/public/terrain/19/858609/353881.terrain new file mode 100644 index 000000000..ee7c1bb67 Binary files /dev/null and b/public/terrain/19/858609/353881.terrain differ diff --git a/public/terrain/19/858609/353882.terrain b/public/terrain/19/858609/353882.terrain new file mode 100644 index 000000000..b92874176 Binary files /dev/null and b/public/terrain/19/858609/353882.terrain differ diff --git a/public/terrain/19/858609/353883.terrain b/public/terrain/19/858609/353883.terrain new file mode 100644 index 000000000..b4ec7bca6 Binary files /dev/null and b/public/terrain/19/858609/353883.terrain differ diff --git a/public/terrain/19/858609/353884.terrain b/public/terrain/19/858609/353884.terrain new file mode 100644 index 000000000..aa64f5440 Binary files /dev/null and b/public/terrain/19/858609/353884.terrain differ diff --git a/public/terrain/19/858609/353885.terrain b/public/terrain/19/858609/353885.terrain new file mode 100644 index 000000000..1376ae312 Binary files /dev/null and b/public/terrain/19/858609/353885.terrain differ diff --git a/public/terrain/19/858609/353886.terrain b/public/terrain/19/858609/353886.terrain new file mode 100644 index 000000000..bccdeb7dd Binary files /dev/null and b/public/terrain/19/858609/353886.terrain differ diff --git a/public/terrain/19/858609/353887.terrain b/public/terrain/19/858609/353887.terrain new file mode 100644 index 000000000..1ee27b309 Binary files /dev/null and b/public/terrain/19/858609/353887.terrain differ diff --git a/public/terrain/19/858609/353888.terrain b/public/terrain/19/858609/353888.terrain new file mode 100644 index 000000000..670eaaa5f Binary files /dev/null and b/public/terrain/19/858609/353888.terrain differ diff --git a/public/terrain/19/858609/353889.terrain b/public/terrain/19/858609/353889.terrain new file mode 100644 index 000000000..c3805d994 Binary files /dev/null and b/public/terrain/19/858609/353889.terrain differ diff --git a/public/terrain/19/858609/353890.terrain b/public/terrain/19/858609/353890.terrain new file mode 100644 index 000000000..8a4239cb4 Binary files /dev/null and b/public/terrain/19/858609/353890.terrain differ diff --git a/public/terrain/19/858609/353891.terrain b/public/terrain/19/858609/353891.terrain new file mode 100644 index 000000000..dc3ca1055 Binary files /dev/null and b/public/terrain/19/858609/353891.terrain differ diff --git a/public/terrain/19/858609/353892.terrain b/public/terrain/19/858609/353892.terrain new file mode 100644 index 000000000..54923be7d Binary files /dev/null and b/public/terrain/19/858609/353892.terrain differ diff --git a/public/terrain/19/858609/353893.terrain b/public/terrain/19/858609/353893.terrain new file mode 100644 index 000000000..562851ba4 Binary files /dev/null and b/public/terrain/19/858609/353893.terrain differ diff --git a/public/terrain/19/858609/353894.terrain b/public/terrain/19/858609/353894.terrain new file mode 100644 index 000000000..b038ca26c Binary files /dev/null and b/public/terrain/19/858609/353894.terrain differ diff --git a/public/terrain/19/858609/353895.terrain b/public/terrain/19/858609/353895.terrain new file mode 100644 index 000000000..d741d5d38 Binary files /dev/null and b/public/terrain/19/858609/353895.terrain differ diff --git a/public/terrain/19/858609/353896.terrain b/public/terrain/19/858609/353896.terrain new file mode 100644 index 000000000..21241f250 Binary files /dev/null and b/public/terrain/19/858609/353896.terrain differ diff --git a/public/terrain/19/858609/353897.terrain b/public/terrain/19/858609/353897.terrain new file mode 100644 index 000000000..42dbb8467 Binary files /dev/null and b/public/terrain/19/858609/353897.terrain differ diff --git a/public/terrain/19/858609/353898.terrain b/public/terrain/19/858609/353898.terrain new file mode 100644 index 000000000..f685b83be Binary files /dev/null and b/public/terrain/19/858609/353898.terrain differ diff --git a/public/terrain/19/858609/353899.terrain b/public/terrain/19/858609/353899.terrain new file mode 100644 index 000000000..be9255448 Binary files /dev/null and b/public/terrain/19/858609/353899.terrain differ diff --git a/public/terrain/19/858609/353900.terrain b/public/terrain/19/858609/353900.terrain new file mode 100644 index 000000000..aa73c90de Binary files /dev/null and b/public/terrain/19/858609/353900.terrain differ diff --git a/public/terrain/19/858609/353901.terrain b/public/terrain/19/858609/353901.terrain new file mode 100644 index 000000000..1957ba967 Binary files /dev/null and b/public/terrain/19/858609/353901.terrain differ diff --git a/public/terrain/19/858609/353902.terrain b/public/terrain/19/858609/353902.terrain new file mode 100644 index 000000000..0b931a812 Binary files /dev/null and b/public/terrain/19/858609/353902.terrain differ diff --git a/public/terrain/19/858609/353903.terrain b/public/terrain/19/858609/353903.terrain new file mode 100644 index 000000000..1c86a7095 Binary files /dev/null and b/public/terrain/19/858609/353903.terrain differ diff --git a/public/terrain/19/858609/353904.terrain b/public/terrain/19/858609/353904.terrain new file mode 100644 index 000000000..5cc3a1ca4 Binary files /dev/null and b/public/terrain/19/858609/353904.terrain differ diff --git a/public/terrain/19/858609/353905.terrain b/public/terrain/19/858609/353905.terrain new file mode 100644 index 000000000..17b8c35cc Binary files /dev/null and b/public/terrain/19/858609/353905.terrain differ diff --git a/public/terrain/19/858609/353906.terrain b/public/terrain/19/858609/353906.terrain new file mode 100644 index 000000000..886fde388 Binary files /dev/null and b/public/terrain/19/858609/353906.terrain differ diff --git a/public/terrain/19/858609/353907.terrain b/public/terrain/19/858609/353907.terrain new file mode 100644 index 000000000..74820a428 Binary files /dev/null and b/public/terrain/19/858609/353907.terrain differ diff --git a/public/terrain/19/858609/353908.terrain b/public/terrain/19/858609/353908.terrain new file mode 100644 index 000000000..a70a332b2 Binary files /dev/null and b/public/terrain/19/858609/353908.terrain differ diff --git a/public/terrain/19/858609/353909.terrain b/public/terrain/19/858609/353909.terrain new file mode 100644 index 000000000..6ecb73e27 Binary files /dev/null and b/public/terrain/19/858609/353909.terrain differ diff --git a/public/terrain/19/858609/353910.terrain b/public/terrain/19/858609/353910.terrain new file mode 100644 index 000000000..09ec9379e Binary files /dev/null and b/public/terrain/19/858609/353910.terrain differ diff --git a/public/terrain/19/858609/353911.terrain b/public/terrain/19/858609/353911.terrain new file mode 100644 index 000000000..3393de5a2 Binary files /dev/null and b/public/terrain/19/858609/353911.terrain differ diff --git a/public/terrain/19/858609/353912.terrain b/public/terrain/19/858609/353912.terrain new file mode 100644 index 000000000..396a169a7 Binary files /dev/null and b/public/terrain/19/858609/353912.terrain differ diff --git a/public/terrain/19/858609/353913.terrain b/public/terrain/19/858609/353913.terrain new file mode 100644 index 000000000..4d22896bd Binary files /dev/null and b/public/terrain/19/858609/353913.terrain differ diff --git a/public/terrain/19/858609/353914.terrain b/public/terrain/19/858609/353914.terrain new file mode 100644 index 000000000..e95e6e627 Binary files /dev/null and b/public/terrain/19/858609/353914.terrain differ diff --git a/public/terrain/19/858609/353915.terrain b/public/terrain/19/858609/353915.terrain new file mode 100644 index 000000000..ed2a71166 Binary files /dev/null and b/public/terrain/19/858609/353915.terrain differ diff --git a/public/terrain/19/858609/353916.terrain b/public/terrain/19/858609/353916.terrain new file mode 100644 index 000000000..05c3f662e Binary files /dev/null and b/public/terrain/19/858609/353916.terrain differ diff --git a/public/terrain/19/858609/353917.terrain b/public/terrain/19/858609/353917.terrain new file mode 100644 index 000000000..2cb3141c4 Binary files /dev/null and b/public/terrain/19/858609/353917.terrain differ diff --git a/public/terrain/19/858609/353918.terrain b/public/terrain/19/858609/353918.terrain new file mode 100644 index 000000000..681184734 Binary files /dev/null and b/public/terrain/19/858609/353918.terrain differ diff --git a/public/terrain/19/858609/353919.terrain b/public/terrain/19/858609/353919.terrain new file mode 100644 index 000000000..2c8d434a6 Binary files /dev/null and b/public/terrain/19/858609/353919.terrain differ diff --git a/public/terrain/19/858609/353920.terrain b/public/terrain/19/858609/353920.terrain new file mode 100644 index 000000000..14e4adf23 Binary files /dev/null and b/public/terrain/19/858609/353920.terrain differ diff --git a/public/terrain/19/858609/353921.terrain b/public/terrain/19/858609/353921.terrain new file mode 100644 index 000000000..e8dfe34b4 Binary files /dev/null and b/public/terrain/19/858609/353921.terrain differ diff --git a/public/terrain/19/858609/353922.terrain b/public/terrain/19/858609/353922.terrain new file mode 100644 index 000000000..63f2d2423 Binary files /dev/null and b/public/terrain/19/858609/353922.terrain differ diff --git a/public/terrain/19/858609/353923.terrain b/public/terrain/19/858609/353923.terrain new file mode 100644 index 000000000..a7bdefd40 Binary files /dev/null and b/public/terrain/19/858609/353923.terrain differ diff --git a/public/terrain/19/858609/353924.terrain b/public/terrain/19/858609/353924.terrain new file mode 100644 index 000000000..40ca2cee3 Binary files /dev/null and b/public/terrain/19/858609/353924.terrain differ diff --git a/public/terrain/19/858609/353925.terrain b/public/terrain/19/858609/353925.terrain new file mode 100644 index 000000000..b92fb77b6 Binary files /dev/null and b/public/terrain/19/858609/353925.terrain differ diff --git a/public/terrain/19/858609/353926.terrain b/public/terrain/19/858609/353926.terrain new file mode 100644 index 000000000..be754d2b6 Binary files /dev/null and b/public/terrain/19/858609/353926.terrain differ diff --git a/public/terrain/19/858609/353927.terrain b/public/terrain/19/858609/353927.terrain new file mode 100644 index 000000000..26e51b91f Binary files /dev/null and b/public/terrain/19/858609/353927.terrain differ diff --git a/public/terrain/19/858609/353928.terrain b/public/terrain/19/858609/353928.terrain new file mode 100644 index 000000000..de8ded607 Binary files /dev/null and b/public/terrain/19/858609/353928.terrain differ diff --git a/public/terrain/19/858609/353929.terrain b/public/terrain/19/858609/353929.terrain new file mode 100644 index 000000000..b82fe10a5 Binary files /dev/null and b/public/terrain/19/858609/353929.terrain differ diff --git a/public/terrain/19/858609/353930.terrain b/public/terrain/19/858609/353930.terrain new file mode 100644 index 000000000..a51c78174 Binary files /dev/null and b/public/terrain/19/858609/353930.terrain differ diff --git a/public/terrain/19/858609/353931.terrain b/public/terrain/19/858609/353931.terrain new file mode 100644 index 000000000..fb0813a74 Binary files /dev/null and b/public/terrain/19/858609/353931.terrain differ diff --git a/public/terrain/19/858609/353932.terrain b/public/terrain/19/858609/353932.terrain new file mode 100644 index 000000000..1c6baa9c3 Binary files /dev/null and b/public/terrain/19/858609/353932.terrain differ diff --git a/public/terrain/19/858609/353933.terrain b/public/terrain/19/858609/353933.terrain new file mode 100644 index 000000000..ec85462bb Binary files /dev/null and b/public/terrain/19/858609/353933.terrain differ diff --git a/public/terrain/19/858609/353934.terrain b/public/terrain/19/858609/353934.terrain new file mode 100644 index 000000000..ac87b5202 Binary files /dev/null and b/public/terrain/19/858609/353934.terrain differ diff --git a/public/terrain/19/858609/353935.terrain b/public/terrain/19/858609/353935.terrain new file mode 100644 index 000000000..6f7e16cd3 Binary files /dev/null and b/public/terrain/19/858609/353935.terrain differ diff --git a/public/terrain/19/858609/353936.terrain b/public/terrain/19/858609/353936.terrain new file mode 100644 index 000000000..cf4e9388d Binary files /dev/null and b/public/terrain/19/858609/353936.terrain differ diff --git a/public/terrain/19/858609/353937.terrain b/public/terrain/19/858609/353937.terrain new file mode 100644 index 000000000..bbf09e9c8 Binary files /dev/null and b/public/terrain/19/858609/353937.terrain differ diff --git a/public/terrain/19/858609/353938.terrain b/public/terrain/19/858609/353938.terrain new file mode 100644 index 000000000..e78acae1c Binary files /dev/null and b/public/terrain/19/858609/353938.terrain differ diff --git a/public/terrain/19/858609/353939.terrain b/public/terrain/19/858609/353939.terrain new file mode 100644 index 000000000..e77fe3a31 Binary files /dev/null and b/public/terrain/19/858609/353939.terrain differ diff --git a/public/terrain/19/858609/353940.terrain b/public/terrain/19/858609/353940.terrain new file mode 100644 index 000000000..1dd88d895 Binary files /dev/null and b/public/terrain/19/858609/353940.terrain differ diff --git a/public/terrain/19/858609/353941.terrain b/public/terrain/19/858609/353941.terrain new file mode 100644 index 000000000..8e884fa2d Binary files /dev/null and b/public/terrain/19/858609/353941.terrain differ diff --git a/public/terrain/19/858609/353942.terrain b/public/terrain/19/858609/353942.terrain new file mode 100644 index 000000000..791382dcf Binary files /dev/null and b/public/terrain/19/858609/353942.terrain differ diff --git a/public/terrain/19/858609/353943.terrain b/public/terrain/19/858609/353943.terrain new file mode 100644 index 000000000..0ae7cce14 Binary files /dev/null and b/public/terrain/19/858609/353943.terrain differ diff --git a/public/terrain/19/858609/353944.terrain b/public/terrain/19/858609/353944.terrain new file mode 100644 index 000000000..612f8eb88 Binary files /dev/null and b/public/terrain/19/858609/353944.terrain differ diff --git a/public/terrain/19/858609/353945.terrain b/public/terrain/19/858609/353945.terrain new file mode 100644 index 000000000..f460a6125 Binary files /dev/null and b/public/terrain/19/858609/353945.terrain differ diff --git a/public/terrain/19/858609/353946.terrain b/public/terrain/19/858609/353946.terrain new file mode 100644 index 000000000..f7a1358e6 Binary files /dev/null and b/public/terrain/19/858609/353946.terrain differ diff --git a/public/terrain/19/858609/353947.terrain b/public/terrain/19/858609/353947.terrain new file mode 100644 index 000000000..f8d7177d2 Binary files /dev/null and b/public/terrain/19/858609/353947.terrain differ diff --git a/public/terrain/19/858609/353948.terrain b/public/terrain/19/858609/353948.terrain new file mode 100644 index 000000000..d03d96999 Binary files /dev/null and b/public/terrain/19/858609/353948.terrain differ diff --git a/public/terrain/19/858609/353949.terrain b/public/terrain/19/858609/353949.terrain new file mode 100644 index 000000000..0fb86a651 Binary files /dev/null and b/public/terrain/19/858609/353949.terrain differ diff --git a/public/terrain/19/858609/353950.terrain b/public/terrain/19/858609/353950.terrain new file mode 100644 index 000000000..6d4d6fd9b Binary files /dev/null and b/public/terrain/19/858609/353950.terrain differ diff --git a/public/terrain/19/858609/353951.terrain b/public/terrain/19/858609/353951.terrain new file mode 100644 index 000000000..78ac8db1f Binary files /dev/null and b/public/terrain/19/858609/353951.terrain differ diff --git a/public/terrain/19/858609/353952.terrain b/public/terrain/19/858609/353952.terrain new file mode 100644 index 000000000..6886dbeb5 Binary files /dev/null and b/public/terrain/19/858609/353952.terrain differ diff --git a/public/terrain/19/858609/353953.terrain b/public/terrain/19/858609/353953.terrain new file mode 100644 index 000000000..2343d2781 Binary files /dev/null and b/public/terrain/19/858609/353953.terrain differ diff --git a/public/terrain/19/858609/353954.terrain b/public/terrain/19/858609/353954.terrain new file mode 100644 index 000000000..0f81e684f Binary files /dev/null and b/public/terrain/19/858609/353954.terrain differ diff --git a/public/terrain/19/858609/353955.terrain b/public/terrain/19/858609/353955.terrain new file mode 100644 index 000000000..4d5d7c6a0 Binary files /dev/null and b/public/terrain/19/858609/353955.terrain differ diff --git a/public/terrain/19/858609/353956.terrain b/public/terrain/19/858609/353956.terrain new file mode 100644 index 000000000..ebb6c8f2d Binary files /dev/null and b/public/terrain/19/858609/353956.terrain differ diff --git a/public/terrain/19/858609/353957.terrain b/public/terrain/19/858609/353957.terrain new file mode 100644 index 000000000..bf10917f2 Binary files /dev/null and b/public/terrain/19/858609/353957.terrain differ diff --git a/public/terrain/19/858609/353958.terrain b/public/terrain/19/858609/353958.terrain new file mode 100644 index 000000000..4269d75e1 Binary files /dev/null and b/public/terrain/19/858609/353958.terrain differ diff --git a/public/terrain/19/858609/353959.terrain b/public/terrain/19/858609/353959.terrain new file mode 100644 index 000000000..c335428fd Binary files /dev/null and b/public/terrain/19/858609/353959.terrain differ diff --git a/public/terrain/19/858609/353960.terrain b/public/terrain/19/858609/353960.terrain new file mode 100644 index 000000000..eeea63f3b Binary files /dev/null and b/public/terrain/19/858609/353960.terrain differ diff --git a/public/terrain/19/858609/353961.terrain b/public/terrain/19/858609/353961.terrain new file mode 100644 index 000000000..ff013fbd4 Binary files /dev/null and b/public/terrain/19/858609/353961.terrain differ diff --git a/public/terrain/19/858609/353962.terrain b/public/terrain/19/858609/353962.terrain new file mode 100644 index 000000000..c7bbaca50 Binary files /dev/null and b/public/terrain/19/858609/353962.terrain differ diff --git a/public/terrain/19/858609/353963.terrain b/public/terrain/19/858609/353963.terrain new file mode 100644 index 000000000..af1fefa7f Binary files /dev/null and b/public/terrain/19/858609/353963.terrain differ diff --git a/public/terrain/19/858609/353964.terrain b/public/terrain/19/858609/353964.terrain new file mode 100644 index 000000000..7c32cd130 Binary files /dev/null and b/public/terrain/19/858609/353964.terrain differ diff --git a/public/terrain/19/858609/353965.terrain b/public/terrain/19/858609/353965.terrain new file mode 100644 index 000000000..3ce6728c5 Binary files /dev/null and b/public/terrain/19/858609/353965.terrain differ diff --git a/public/terrain/19/858609/353966.terrain b/public/terrain/19/858609/353966.terrain new file mode 100644 index 000000000..2db42d17f Binary files /dev/null and b/public/terrain/19/858609/353966.terrain differ diff --git a/public/terrain/19/858609/353967.terrain b/public/terrain/19/858609/353967.terrain new file mode 100644 index 000000000..05d270c2c Binary files /dev/null and b/public/terrain/19/858609/353967.terrain differ diff --git a/public/terrain/19/858609/353968.terrain b/public/terrain/19/858609/353968.terrain new file mode 100644 index 000000000..3ce3873fd Binary files /dev/null and b/public/terrain/19/858609/353968.terrain differ diff --git a/public/terrain/19/858609/353969.terrain b/public/terrain/19/858609/353969.terrain new file mode 100644 index 000000000..6f41598f4 Binary files /dev/null and b/public/terrain/19/858609/353969.terrain differ diff --git a/public/terrain/19/858609/353970.terrain b/public/terrain/19/858609/353970.terrain new file mode 100644 index 000000000..e6de5f52a Binary files /dev/null and b/public/terrain/19/858609/353970.terrain differ diff --git a/public/terrain/19/858609/353971.terrain b/public/terrain/19/858609/353971.terrain new file mode 100644 index 000000000..04f2af787 Binary files /dev/null and b/public/terrain/19/858609/353971.terrain differ diff --git a/public/terrain/19/858609/353972.terrain b/public/terrain/19/858609/353972.terrain new file mode 100644 index 000000000..57789802e Binary files /dev/null and b/public/terrain/19/858609/353972.terrain differ diff --git a/public/terrain/19/858609/353973.terrain b/public/terrain/19/858609/353973.terrain new file mode 100644 index 000000000..e1e3b6230 Binary files /dev/null and b/public/terrain/19/858609/353973.terrain differ diff --git a/public/terrain/19/858609/353974.terrain b/public/terrain/19/858609/353974.terrain new file mode 100644 index 000000000..856bc0658 Binary files /dev/null and b/public/terrain/19/858609/353974.terrain differ diff --git a/public/terrain/19/858609/353975.terrain b/public/terrain/19/858609/353975.terrain new file mode 100644 index 000000000..3980189d5 Binary files /dev/null and b/public/terrain/19/858609/353975.terrain differ diff --git a/public/terrain/19/858609/353976.terrain b/public/terrain/19/858609/353976.terrain new file mode 100644 index 000000000..5026e8aeb Binary files /dev/null and b/public/terrain/19/858609/353976.terrain differ diff --git a/public/terrain/19/858609/353977.terrain b/public/terrain/19/858609/353977.terrain new file mode 100644 index 000000000..35318476a Binary files /dev/null and b/public/terrain/19/858609/353977.terrain differ diff --git a/public/terrain/19/858609/353978.terrain b/public/terrain/19/858609/353978.terrain new file mode 100644 index 000000000..9d2312787 Binary files /dev/null and b/public/terrain/19/858609/353978.terrain differ diff --git a/public/terrain/19/858609/353979.terrain b/public/terrain/19/858609/353979.terrain new file mode 100644 index 000000000..8421dbbfd Binary files /dev/null and b/public/terrain/19/858609/353979.terrain differ diff --git a/public/terrain/19/858609/353980.terrain b/public/terrain/19/858609/353980.terrain new file mode 100644 index 000000000..e062521da Binary files /dev/null and b/public/terrain/19/858609/353980.terrain differ diff --git a/public/terrain/19/858609/353981.terrain b/public/terrain/19/858609/353981.terrain new file mode 100644 index 000000000..3794f3196 Binary files /dev/null and b/public/terrain/19/858609/353981.terrain differ diff --git a/public/terrain/19/858609/353982.terrain b/public/terrain/19/858609/353982.terrain new file mode 100644 index 000000000..b77f28836 Binary files /dev/null and b/public/terrain/19/858609/353982.terrain differ diff --git a/public/terrain/19/858609/353983.terrain b/public/terrain/19/858609/353983.terrain new file mode 100644 index 000000000..4e9751b66 Binary files /dev/null and b/public/terrain/19/858609/353983.terrain differ diff --git a/public/terrain/19/858609/353984.terrain b/public/terrain/19/858609/353984.terrain new file mode 100644 index 000000000..6b34efcb6 Binary files /dev/null and b/public/terrain/19/858609/353984.terrain differ diff --git a/public/terrain/19/858609/353985.terrain b/public/terrain/19/858609/353985.terrain new file mode 100644 index 000000000..f144ef98e Binary files /dev/null and b/public/terrain/19/858609/353985.terrain differ diff --git a/public/terrain/19/858609/353986.terrain b/public/terrain/19/858609/353986.terrain new file mode 100644 index 000000000..293cdaee7 Binary files /dev/null and b/public/terrain/19/858609/353986.terrain differ diff --git a/public/terrain/19/858609/353987.terrain b/public/terrain/19/858609/353987.terrain new file mode 100644 index 000000000..6dad66bca Binary files /dev/null and b/public/terrain/19/858609/353987.terrain differ diff --git a/public/terrain/19/858609/353988.terrain b/public/terrain/19/858609/353988.terrain new file mode 100644 index 000000000..9ccb41227 Binary files /dev/null and b/public/terrain/19/858609/353988.terrain differ diff --git a/public/terrain/19/858609/353989.terrain b/public/terrain/19/858609/353989.terrain new file mode 100644 index 000000000..11412c3f4 Binary files /dev/null and b/public/terrain/19/858609/353989.terrain differ diff --git a/public/terrain/19/858609/353990.terrain b/public/terrain/19/858609/353990.terrain new file mode 100644 index 000000000..39f0af2e8 Binary files /dev/null and b/public/terrain/19/858609/353990.terrain differ diff --git a/public/terrain/19/858609/353991.terrain b/public/terrain/19/858609/353991.terrain new file mode 100644 index 000000000..5760c9c55 Binary files /dev/null and b/public/terrain/19/858609/353991.terrain differ diff --git a/public/terrain/19/858609/353992.terrain b/public/terrain/19/858609/353992.terrain new file mode 100644 index 000000000..210fa126c Binary files /dev/null and b/public/terrain/19/858609/353992.terrain differ diff --git a/public/terrain/19/858609/353993.terrain b/public/terrain/19/858609/353993.terrain new file mode 100644 index 000000000..df6c4e916 Binary files /dev/null and b/public/terrain/19/858609/353993.terrain differ diff --git a/public/terrain/19/858609/353994.terrain b/public/terrain/19/858609/353994.terrain new file mode 100644 index 000000000..c82cd8416 Binary files /dev/null and b/public/terrain/19/858609/353994.terrain differ diff --git a/public/terrain/19/858609/353995.terrain b/public/terrain/19/858609/353995.terrain new file mode 100644 index 000000000..e2e9d977b Binary files /dev/null and b/public/terrain/19/858609/353995.terrain differ diff --git a/public/terrain/19/858609/353996.terrain b/public/terrain/19/858609/353996.terrain new file mode 100644 index 000000000..a0540a1d8 Binary files /dev/null and b/public/terrain/19/858609/353996.terrain differ diff --git a/public/terrain/19/858609/353997.terrain b/public/terrain/19/858609/353997.terrain new file mode 100644 index 000000000..ce215d594 Binary files /dev/null and b/public/terrain/19/858609/353997.terrain differ diff --git a/public/terrain/19/858609/353998.terrain b/public/terrain/19/858609/353998.terrain new file mode 100644 index 000000000..35c4705f5 Binary files /dev/null and b/public/terrain/19/858609/353998.terrain differ diff --git a/public/terrain/19/858609/353999.terrain b/public/terrain/19/858609/353999.terrain new file mode 100644 index 000000000..c7b2be24f Binary files /dev/null and b/public/terrain/19/858609/353999.terrain differ diff --git a/public/terrain/19/858609/354000.terrain b/public/terrain/19/858609/354000.terrain new file mode 100644 index 000000000..51ec2d6e8 Binary files /dev/null and b/public/terrain/19/858609/354000.terrain differ diff --git a/public/terrain/19/858609/354001.terrain b/public/terrain/19/858609/354001.terrain new file mode 100644 index 000000000..db1d0eeb4 Binary files /dev/null and b/public/terrain/19/858609/354001.terrain differ diff --git a/public/terrain/19/858609/354002.terrain b/public/terrain/19/858609/354002.terrain new file mode 100644 index 000000000..585e91817 Binary files /dev/null and b/public/terrain/19/858609/354002.terrain differ diff --git a/public/terrain/19/858609/354003.terrain b/public/terrain/19/858609/354003.terrain new file mode 100644 index 000000000..5a8be2e44 Binary files /dev/null and b/public/terrain/19/858609/354003.terrain differ diff --git a/public/terrain/19/858609/354004.terrain b/public/terrain/19/858609/354004.terrain new file mode 100644 index 000000000..0094df8b0 Binary files /dev/null and b/public/terrain/19/858609/354004.terrain differ diff --git a/public/terrain/19/858609/354005.terrain b/public/terrain/19/858609/354005.terrain new file mode 100644 index 000000000..81969e9ce Binary files /dev/null and b/public/terrain/19/858609/354005.terrain differ diff --git a/public/terrain/19/858609/354006.terrain b/public/terrain/19/858609/354006.terrain new file mode 100644 index 000000000..026c08baa Binary files /dev/null and b/public/terrain/19/858609/354006.terrain differ diff --git a/public/terrain/19/858609/354007.terrain b/public/terrain/19/858609/354007.terrain new file mode 100644 index 000000000..82ef05ddf Binary files /dev/null and b/public/terrain/19/858609/354007.terrain differ diff --git a/public/terrain/19/858609/354008.terrain b/public/terrain/19/858609/354008.terrain new file mode 100644 index 000000000..ca89c9a7e Binary files /dev/null and b/public/terrain/19/858609/354008.terrain differ diff --git a/public/terrain/19/858609/354009.terrain b/public/terrain/19/858609/354009.terrain new file mode 100644 index 000000000..47c9021ee Binary files /dev/null and b/public/terrain/19/858609/354009.terrain differ diff --git a/public/terrain/19/858609/354010.terrain b/public/terrain/19/858609/354010.terrain new file mode 100644 index 000000000..b94cb3620 Binary files /dev/null and b/public/terrain/19/858609/354010.terrain differ diff --git a/public/terrain/19/858609/354011.terrain b/public/terrain/19/858609/354011.terrain new file mode 100644 index 000000000..f276c9a17 Binary files /dev/null and b/public/terrain/19/858609/354011.terrain differ diff --git a/public/terrain/19/858609/354012.terrain b/public/terrain/19/858609/354012.terrain new file mode 100644 index 000000000..0b2597245 Binary files /dev/null and b/public/terrain/19/858609/354012.terrain differ diff --git a/public/terrain/19/858609/354013.terrain b/public/terrain/19/858609/354013.terrain new file mode 100644 index 000000000..2dd6d3d85 Binary files /dev/null and b/public/terrain/19/858609/354013.terrain differ diff --git a/public/terrain/19/858609/354014.terrain b/public/terrain/19/858609/354014.terrain new file mode 100644 index 000000000..5ec63966d Binary files /dev/null and b/public/terrain/19/858609/354014.terrain differ diff --git a/public/terrain/19/858609/354015.terrain b/public/terrain/19/858609/354015.terrain new file mode 100644 index 000000000..578c1dd92 Binary files /dev/null and b/public/terrain/19/858609/354015.terrain differ diff --git a/public/terrain/19/858609/354016.terrain b/public/terrain/19/858609/354016.terrain new file mode 100644 index 000000000..f166d9916 Binary files /dev/null and b/public/terrain/19/858609/354016.terrain differ diff --git a/public/terrain/19/858609/354017.terrain b/public/terrain/19/858609/354017.terrain new file mode 100644 index 000000000..ca2093ab7 Binary files /dev/null and b/public/terrain/19/858609/354017.terrain differ diff --git a/public/terrain/19/858609/354018.terrain b/public/terrain/19/858609/354018.terrain new file mode 100644 index 000000000..7e469e9ba Binary files /dev/null and b/public/terrain/19/858609/354018.terrain differ diff --git a/public/terrain/19/858609/354019.terrain b/public/terrain/19/858609/354019.terrain new file mode 100644 index 000000000..0920abf31 Binary files /dev/null and b/public/terrain/19/858609/354019.terrain differ diff --git a/public/terrain/19/858609/354020.terrain b/public/terrain/19/858609/354020.terrain new file mode 100644 index 000000000..f7cc88cc0 Binary files /dev/null and b/public/terrain/19/858609/354020.terrain differ diff --git a/public/terrain/19/858609/354021.terrain b/public/terrain/19/858609/354021.terrain new file mode 100644 index 000000000..ee261551d Binary files /dev/null and b/public/terrain/19/858609/354021.terrain differ diff --git a/public/terrain/19/858609/354022.terrain b/public/terrain/19/858609/354022.terrain new file mode 100644 index 000000000..3e5ec9569 Binary files /dev/null and b/public/terrain/19/858609/354022.terrain differ diff --git a/public/terrain/19/858609/354023.terrain b/public/terrain/19/858609/354023.terrain new file mode 100644 index 000000000..14064d365 Binary files /dev/null and b/public/terrain/19/858609/354023.terrain differ diff --git a/public/terrain/19/858609/354024.terrain b/public/terrain/19/858609/354024.terrain new file mode 100644 index 000000000..af1406672 Binary files /dev/null and b/public/terrain/19/858609/354024.terrain differ diff --git a/public/terrain/19/858609/354025.terrain b/public/terrain/19/858609/354025.terrain new file mode 100644 index 000000000..098b58891 Binary files /dev/null and b/public/terrain/19/858609/354025.terrain differ diff --git a/public/terrain/19/858609/354026.terrain b/public/terrain/19/858609/354026.terrain new file mode 100644 index 000000000..0ada67486 Binary files /dev/null and b/public/terrain/19/858609/354026.terrain differ diff --git a/public/terrain/19/858609/354027.terrain b/public/terrain/19/858609/354027.terrain new file mode 100644 index 000000000..8dadd976b Binary files /dev/null and b/public/terrain/19/858609/354027.terrain differ diff --git a/public/terrain/19/858609/354028.terrain b/public/terrain/19/858609/354028.terrain new file mode 100644 index 000000000..a39ece977 Binary files /dev/null and b/public/terrain/19/858609/354028.terrain differ diff --git a/public/terrain/19/858609/354029.terrain b/public/terrain/19/858609/354029.terrain new file mode 100644 index 000000000..307be885f Binary files /dev/null and b/public/terrain/19/858609/354029.terrain differ diff --git a/public/terrain/19/858609/354030.terrain b/public/terrain/19/858609/354030.terrain new file mode 100644 index 000000000..7f0e9b186 Binary files /dev/null and b/public/terrain/19/858609/354030.terrain differ diff --git a/public/terrain/19/858609/354031.terrain b/public/terrain/19/858609/354031.terrain new file mode 100644 index 000000000..5c9ca56bc Binary files /dev/null and b/public/terrain/19/858609/354031.terrain differ diff --git a/public/terrain/19/858609/354032.terrain b/public/terrain/19/858609/354032.terrain new file mode 100644 index 000000000..4894eb2d1 Binary files /dev/null and b/public/terrain/19/858609/354032.terrain differ diff --git a/public/terrain/19/858609/354033.terrain b/public/terrain/19/858609/354033.terrain new file mode 100644 index 000000000..5e67c284f Binary files /dev/null and b/public/terrain/19/858609/354033.terrain differ diff --git a/public/terrain/19/858609/354034.terrain b/public/terrain/19/858609/354034.terrain new file mode 100644 index 000000000..e2c4f0137 Binary files /dev/null and b/public/terrain/19/858609/354034.terrain differ diff --git a/public/terrain/19/858609/354035.terrain b/public/terrain/19/858609/354035.terrain new file mode 100644 index 000000000..6bb162589 Binary files /dev/null and b/public/terrain/19/858609/354035.terrain differ diff --git a/public/terrain/19/858609/354036.terrain b/public/terrain/19/858609/354036.terrain new file mode 100644 index 000000000..a08617e03 Binary files /dev/null and b/public/terrain/19/858609/354036.terrain differ diff --git a/public/terrain/19/858609/354037.terrain b/public/terrain/19/858609/354037.terrain new file mode 100644 index 000000000..7fc62c0d6 Binary files /dev/null and b/public/terrain/19/858609/354037.terrain differ diff --git a/public/terrain/19/858609/354038.terrain b/public/terrain/19/858609/354038.terrain new file mode 100644 index 000000000..0da02288a Binary files /dev/null and b/public/terrain/19/858609/354038.terrain differ diff --git a/public/terrain/19/858609/354039.terrain b/public/terrain/19/858609/354039.terrain new file mode 100644 index 000000000..6aa6b8884 Binary files /dev/null and b/public/terrain/19/858609/354039.terrain differ diff --git a/public/terrain/19/858609/354040.terrain b/public/terrain/19/858609/354040.terrain new file mode 100644 index 000000000..672a12eae Binary files /dev/null and b/public/terrain/19/858609/354040.terrain differ diff --git a/public/terrain/19/858609/354041.terrain b/public/terrain/19/858609/354041.terrain new file mode 100644 index 000000000..9f34112b9 Binary files /dev/null and b/public/terrain/19/858609/354041.terrain differ diff --git a/public/terrain/19/858609/354042.terrain b/public/terrain/19/858609/354042.terrain new file mode 100644 index 000000000..54bd0c71f Binary files /dev/null and b/public/terrain/19/858609/354042.terrain differ diff --git a/public/terrain/19/858609/354043.terrain b/public/terrain/19/858609/354043.terrain new file mode 100644 index 000000000..276a52ca2 Binary files /dev/null and b/public/terrain/19/858609/354043.terrain differ diff --git a/public/terrain/19/858609/354044.terrain b/public/terrain/19/858609/354044.terrain new file mode 100644 index 000000000..1225ce22a Binary files /dev/null and b/public/terrain/19/858609/354044.terrain differ diff --git a/public/terrain/19/858609/354045.terrain b/public/terrain/19/858609/354045.terrain new file mode 100644 index 000000000..cd50e9cd6 Binary files /dev/null and b/public/terrain/19/858609/354045.terrain differ diff --git a/public/terrain/19/858609/354046.terrain b/public/terrain/19/858609/354046.terrain new file mode 100644 index 000000000..95db7e53c Binary files /dev/null and b/public/terrain/19/858609/354046.terrain differ diff --git a/public/terrain/19/858609/354047.terrain b/public/terrain/19/858609/354047.terrain new file mode 100644 index 000000000..bf631bf77 Binary files /dev/null and b/public/terrain/19/858609/354047.terrain differ diff --git a/public/terrain/19/858609/354048.terrain b/public/terrain/19/858609/354048.terrain new file mode 100644 index 000000000..c9070a2a9 Binary files /dev/null and b/public/terrain/19/858609/354048.terrain differ diff --git a/public/terrain/19/858609/354049.terrain b/public/terrain/19/858609/354049.terrain new file mode 100644 index 000000000..ba772e919 Binary files /dev/null and b/public/terrain/19/858609/354049.terrain differ diff --git a/public/terrain/19/858609/354050.terrain b/public/terrain/19/858609/354050.terrain new file mode 100644 index 000000000..7b70a81a1 Binary files /dev/null and b/public/terrain/19/858609/354050.terrain differ diff --git a/public/terrain/19/858609/354051.terrain b/public/terrain/19/858609/354051.terrain new file mode 100644 index 000000000..13be11e98 Binary files /dev/null and b/public/terrain/19/858609/354051.terrain differ diff --git a/public/terrain/19/858609/354052.terrain b/public/terrain/19/858609/354052.terrain new file mode 100644 index 000000000..c0468b331 Binary files /dev/null and b/public/terrain/19/858609/354052.terrain differ diff --git a/public/terrain/19/858609/354053.terrain b/public/terrain/19/858609/354053.terrain new file mode 100644 index 000000000..159cb90a2 Binary files /dev/null and b/public/terrain/19/858609/354053.terrain differ diff --git a/public/terrain/19/858609/354054.terrain b/public/terrain/19/858609/354054.terrain new file mode 100644 index 000000000..4e4a97acf Binary files /dev/null and b/public/terrain/19/858609/354054.terrain differ diff --git a/public/terrain/19/858609/354055.terrain b/public/terrain/19/858609/354055.terrain new file mode 100644 index 000000000..03b6bc27c Binary files /dev/null and b/public/terrain/19/858609/354055.terrain differ diff --git a/public/terrain/19/858609/354056.terrain b/public/terrain/19/858609/354056.terrain new file mode 100644 index 000000000..59b8e46ff Binary files /dev/null and b/public/terrain/19/858609/354056.terrain differ diff --git a/public/terrain/19/858609/354057.terrain b/public/terrain/19/858609/354057.terrain new file mode 100644 index 000000000..70c9dff11 Binary files /dev/null and b/public/terrain/19/858609/354057.terrain differ diff --git a/public/terrain/19/858609/354058.terrain b/public/terrain/19/858609/354058.terrain new file mode 100644 index 000000000..93f3d1c89 Binary files /dev/null and b/public/terrain/19/858609/354058.terrain differ diff --git a/public/terrain/19/858609/354059.terrain b/public/terrain/19/858609/354059.terrain new file mode 100644 index 000000000..19550e829 Binary files /dev/null and b/public/terrain/19/858609/354059.terrain differ diff --git a/public/terrain/19/858610/353743.terrain b/public/terrain/19/858610/353743.terrain new file mode 100644 index 000000000..4bb9a0d74 Binary files /dev/null and b/public/terrain/19/858610/353743.terrain differ diff --git a/public/terrain/19/858610/353744.terrain b/public/terrain/19/858610/353744.terrain new file mode 100644 index 000000000..8b8782387 Binary files /dev/null and b/public/terrain/19/858610/353744.terrain differ diff --git a/public/terrain/19/858610/353745.terrain b/public/terrain/19/858610/353745.terrain new file mode 100644 index 000000000..00ad730b7 Binary files /dev/null and b/public/terrain/19/858610/353745.terrain differ diff --git a/public/terrain/19/858610/353746.terrain b/public/terrain/19/858610/353746.terrain new file mode 100644 index 000000000..36e46bad3 Binary files /dev/null and b/public/terrain/19/858610/353746.terrain differ diff --git a/public/terrain/19/858610/353747.terrain b/public/terrain/19/858610/353747.terrain new file mode 100644 index 000000000..4afa44008 Binary files /dev/null and b/public/terrain/19/858610/353747.terrain differ diff --git a/public/terrain/19/858610/353748.terrain b/public/terrain/19/858610/353748.terrain new file mode 100644 index 000000000..77e921c37 Binary files /dev/null and b/public/terrain/19/858610/353748.terrain differ diff --git a/public/terrain/19/858610/353749.terrain b/public/terrain/19/858610/353749.terrain new file mode 100644 index 000000000..474b22b53 Binary files /dev/null and b/public/terrain/19/858610/353749.terrain differ diff --git a/public/terrain/19/858610/353750.terrain b/public/terrain/19/858610/353750.terrain new file mode 100644 index 000000000..5924dd328 Binary files /dev/null and b/public/terrain/19/858610/353750.terrain differ diff --git a/public/terrain/19/858610/353751.terrain b/public/terrain/19/858610/353751.terrain new file mode 100644 index 000000000..b3c751116 Binary files /dev/null and b/public/terrain/19/858610/353751.terrain differ diff --git a/public/terrain/19/858610/353752.terrain b/public/terrain/19/858610/353752.terrain new file mode 100644 index 000000000..bda53f37f Binary files /dev/null and b/public/terrain/19/858610/353752.terrain differ diff --git a/public/terrain/19/858610/353753.terrain b/public/terrain/19/858610/353753.terrain new file mode 100644 index 000000000..00f11bb0a Binary files /dev/null and b/public/terrain/19/858610/353753.terrain differ diff --git a/public/terrain/19/858610/353754.terrain b/public/terrain/19/858610/353754.terrain new file mode 100644 index 000000000..652b7ef68 Binary files /dev/null and b/public/terrain/19/858610/353754.terrain differ diff --git a/public/terrain/19/858610/353755.terrain b/public/terrain/19/858610/353755.terrain new file mode 100644 index 000000000..0b10faf39 Binary files /dev/null and b/public/terrain/19/858610/353755.terrain differ diff --git a/public/terrain/19/858610/353756.terrain b/public/terrain/19/858610/353756.terrain new file mode 100644 index 000000000..71ebdc74e Binary files /dev/null and b/public/terrain/19/858610/353756.terrain differ diff --git a/public/terrain/19/858610/353757.terrain b/public/terrain/19/858610/353757.terrain new file mode 100644 index 000000000..84b592900 Binary files /dev/null and b/public/terrain/19/858610/353757.terrain differ diff --git a/public/terrain/19/858610/353758.terrain b/public/terrain/19/858610/353758.terrain new file mode 100644 index 000000000..bc22fd1d6 Binary files /dev/null and b/public/terrain/19/858610/353758.terrain differ diff --git a/public/terrain/19/858610/353759.terrain b/public/terrain/19/858610/353759.terrain new file mode 100644 index 000000000..7b9bf1faf Binary files /dev/null and b/public/terrain/19/858610/353759.terrain differ diff --git a/public/terrain/19/858610/353760.terrain b/public/terrain/19/858610/353760.terrain new file mode 100644 index 000000000..05073fba2 Binary files /dev/null and b/public/terrain/19/858610/353760.terrain differ diff --git a/public/terrain/19/858610/353761.terrain b/public/terrain/19/858610/353761.terrain new file mode 100644 index 000000000..2dc9b1090 Binary files /dev/null and b/public/terrain/19/858610/353761.terrain differ diff --git a/public/terrain/19/858610/353762.terrain b/public/terrain/19/858610/353762.terrain new file mode 100644 index 000000000..150d76ea6 Binary files /dev/null and b/public/terrain/19/858610/353762.terrain differ diff --git a/public/terrain/19/858610/353763.terrain b/public/terrain/19/858610/353763.terrain new file mode 100644 index 000000000..607f8e632 Binary files /dev/null and b/public/terrain/19/858610/353763.terrain differ diff --git a/public/terrain/19/858610/353764.terrain b/public/terrain/19/858610/353764.terrain new file mode 100644 index 000000000..8d7879c2b Binary files /dev/null and b/public/terrain/19/858610/353764.terrain differ diff --git a/public/terrain/19/858610/353765.terrain b/public/terrain/19/858610/353765.terrain new file mode 100644 index 000000000..2e474521d Binary files /dev/null and b/public/terrain/19/858610/353765.terrain differ diff --git a/public/terrain/19/858610/353766.terrain b/public/terrain/19/858610/353766.terrain new file mode 100644 index 000000000..c17aa3736 Binary files /dev/null and b/public/terrain/19/858610/353766.terrain differ diff --git a/public/terrain/19/858610/353767.terrain b/public/terrain/19/858610/353767.terrain new file mode 100644 index 000000000..c4fac9d35 Binary files /dev/null and b/public/terrain/19/858610/353767.terrain differ diff --git a/public/terrain/19/858610/353768.terrain b/public/terrain/19/858610/353768.terrain new file mode 100644 index 000000000..4a9dbef37 Binary files /dev/null and b/public/terrain/19/858610/353768.terrain differ diff --git a/public/terrain/19/858610/353769.terrain b/public/terrain/19/858610/353769.terrain new file mode 100644 index 000000000..c4db10247 Binary files /dev/null and b/public/terrain/19/858610/353769.terrain differ diff --git a/public/terrain/19/858610/353770.terrain b/public/terrain/19/858610/353770.terrain new file mode 100644 index 000000000..4e3cf8184 Binary files /dev/null and b/public/terrain/19/858610/353770.terrain differ diff --git a/public/terrain/19/858610/353771.terrain b/public/terrain/19/858610/353771.terrain new file mode 100644 index 000000000..765b42c8e Binary files /dev/null and b/public/terrain/19/858610/353771.terrain differ diff --git a/public/terrain/19/858610/353772.terrain b/public/terrain/19/858610/353772.terrain new file mode 100644 index 000000000..a28659848 Binary files /dev/null and b/public/terrain/19/858610/353772.terrain differ diff --git a/public/terrain/19/858610/353773.terrain b/public/terrain/19/858610/353773.terrain new file mode 100644 index 000000000..99fc62006 Binary files /dev/null and b/public/terrain/19/858610/353773.terrain differ diff --git a/public/terrain/19/858610/353774.terrain b/public/terrain/19/858610/353774.terrain new file mode 100644 index 000000000..eddc41486 Binary files /dev/null and b/public/terrain/19/858610/353774.terrain differ diff --git a/public/terrain/19/858610/353775.terrain b/public/terrain/19/858610/353775.terrain new file mode 100644 index 000000000..d34edcad2 Binary files /dev/null and b/public/terrain/19/858610/353775.terrain differ diff --git a/public/terrain/19/858610/353776.terrain b/public/terrain/19/858610/353776.terrain new file mode 100644 index 000000000..ffa42f990 Binary files /dev/null and b/public/terrain/19/858610/353776.terrain differ diff --git a/public/terrain/19/858610/353777.terrain b/public/terrain/19/858610/353777.terrain new file mode 100644 index 000000000..bc3a67e80 Binary files /dev/null and b/public/terrain/19/858610/353777.terrain differ diff --git a/public/terrain/19/858610/353778.terrain b/public/terrain/19/858610/353778.terrain new file mode 100644 index 000000000..54884d6c2 Binary files /dev/null and b/public/terrain/19/858610/353778.terrain differ diff --git a/public/terrain/19/858610/353779.terrain b/public/terrain/19/858610/353779.terrain new file mode 100644 index 000000000..5fcb8f132 Binary files /dev/null and b/public/terrain/19/858610/353779.terrain differ diff --git a/public/terrain/19/858610/353780.terrain b/public/terrain/19/858610/353780.terrain new file mode 100644 index 000000000..d57747108 Binary files /dev/null and b/public/terrain/19/858610/353780.terrain differ diff --git a/public/terrain/19/858610/353781.terrain b/public/terrain/19/858610/353781.terrain new file mode 100644 index 000000000..9de35156f Binary files /dev/null and b/public/terrain/19/858610/353781.terrain differ diff --git a/public/terrain/19/858610/353782.terrain b/public/terrain/19/858610/353782.terrain new file mode 100644 index 000000000..252e277f6 Binary files /dev/null and b/public/terrain/19/858610/353782.terrain differ diff --git a/public/terrain/19/858610/353783.terrain b/public/terrain/19/858610/353783.terrain new file mode 100644 index 000000000..1feb87807 Binary files /dev/null and b/public/terrain/19/858610/353783.terrain differ diff --git a/public/terrain/19/858610/353784.terrain b/public/terrain/19/858610/353784.terrain new file mode 100644 index 000000000..c26195a74 Binary files /dev/null and b/public/terrain/19/858610/353784.terrain differ diff --git a/public/terrain/19/858610/353785.terrain b/public/terrain/19/858610/353785.terrain new file mode 100644 index 000000000..2c31357c8 Binary files /dev/null and b/public/terrain/19/858610/353785.terrain differ diff --git a/public/terrain/19/858610/353786.terrain b/public/terrain/19/858610/353786.terrain new file mode 100644 index 000000000..8675b40d2 Binary files /dev/null and b/public/terrain/19/858610/353786.terrain differ diff --git a/public/terrain/19/858610/353787.terrain b/public/terrain/19/858610/353787.terrain new file mode 100644 index 000000000..52360d507 Binary files /dev/null and b/public/terrain/19/858610/353787.terrain differ diff --git a/public/terrain/19/858610/353788.terrain b/public/terrain/19/858610/353788.terrain new file mode 100644 index 000000000..a635642ab Binary files /dev/null and b/public/terrain/19/858610/353788.terrain differ diff --git a/public/terrain/19/858610/353789.terrain b/public/terrain/19/858610/353789.terrain new file mode 100644 index 000000000..6d5a61e09 Binary files /dev/null and b/public/terrain/19/858610/353789.terrain differ diff --git a/public/terrain/19/858610/353790.terrain b/public/terrain/19/858610/353790.terrain new file mode 100644 index 000000000..0eba2166c Binary files /dev/null and b/public/terrain/19/858610/353790.terrain differ diff --git a/public/terrain/19/858610/353791.terrain b/public/terrain/19/858610/353791.terrain new file mode 100644 index 000000000..d7f67cae5 Binary files /dev/null and b/public/terrain/19/858610/353791.terrain differ diff --git a/public/terrain/19/858610/353792.terrain b/public/terrain/19/858610/353792.terrain new file mode 100644 index 000000000..94ccd368a Binary files /dev/null and b/public/terrain/19/858610/353792.terrain differ diff --git a/public/terrain/19/858610/353793.terrain b/public/terrain/19/858610/353793.terrain new file mode 100644 index 000000000..b18fe39c3 Binary files /dev/null and b/public/terrain/19/858610/353793.terrain differ diff --git a/public/terrain/19/858610/353794.terrain b/public/terrain/19/858610/353794.terrain new file mode 100644 index 000000000..ada076d5f Binary files /dev/null and b/public/terrain/19/858610/353794.terrain differ diff --git a/public/terrain/19/858610/353795.terrain b/public/terrain/19/858610/353795.terrain new file mode 100644 index 000000000..8a5553290 Binary files /dev/null and b/public/terrain/19/858610/353795.terrain differ diff --git a/public/terrain/19/858610/353796.terrain b/public/terrain/19/858610/353796.terrain new file mode 100644 index 000000000..8806d4599 Binary files /dev/null and b/public/terrain/19/858610/353796.terrain differ diff --git a/public/terrain/19/858610/353797.terrain b/public/terrain/19/858610/353797.terrain new file mode 100644 index 000000000..56a51cc84 Binary files /dev/null and b/public/terrain/19/858610/353797.terrain differ diff --git a/public/terrain/19/858610/353798.terrain b/public/terrain/19/858610/353798.terrain new file mode 100644 index 000000000..6aa2e592d Binary files /dev/null and b/public/terrain/19/858610/353798.terrain differ diff --git a/public/terrain/19/858610/353799.terrain b/public/terrain/19/858610/353799.terrain new file mode 100644 index 000000000..d7ff16913 Binary files /dev/null and b/public/terrain/19/858610/353799.terrain differ diff --git a/public/terrain/19/858610/353800.terrain b/public/terrain/19/858610/353800.terrain new file mode 100644 index 000000000..c1d39cb1f Binary files /dev/null and b/public/terrain/19/858610/353800.terrain differ diff --git a/public/terrain/19/858610/353801.terrain b/public/terrain/19/858610/353801.terrain new file mode 100644 index 000000000..27403ff89 Binary files /dev/null and b/public/terrain/19/858610/353801.terrain differ diff --git a/public/terrain/19/858610/353802.terrain b/public/terrain/19/858610/353802.terrain new file mode 100644 index 000000000..de2743280 Binary files /dev/null and b/public/terrain/19/858610/353802.terrain differ diff --git a/public/terrain/19/858610/353803.terrain b/public/terrain/19/858610/353803.terrain new file mode 100644 index 000000000..74d31fe49 Binary files /dev/null and b/public/terrain/19/858610/353803.terrain differ diff --git a/public/terrain/19/858610/353804.terrain b/public/terrain/19/858610/353804.terrain new file mode 100644 index 000000000..b56bc7526 Binary files /dev/null and b/public/terrain/19/858610/353804.terrain differ diff --git a/public/terrain/19/858610/353805.terrain b/public/terrain/19/858610/353805.terrain new file mode 100644 index 000000000..6d7ec7abd Binary files /dev/null and b/public/terrain/19/858610/353805.terrain differ diff --git a/public/terrain/19/858610/353806.terrain b/public/terrain/19/858610/353806.terrain new file mode 100644 index 000000000..95023d618 Binary files /dev/null and b/public/terrain/19/858610/353806.terrain differ diff --git a/public/terrain/19/858610/353807.terrain b/public/terrain/19/858610/353807.terrain new file mode 100644 index 000000000..ef28b804f Binary files /dev/null and b/public/terrain/19/858610/353807.terrain differ diff --git a/public/terrain/19/858610/353808.terrain b/public/terrain/19/858610/353808.terrain new file mode 100644 index 000000000..038499468 Binary files /dev/null and b/public/terrain/19/858610/353808.terrain differ diff --git a/public/terrain/19/858610/353809.terrain b/public/terrain/19/858610/353809.terrain new file mode 100644 index 000000000..6f1044864 Binary files /dev/null and b/public/terrain/19/858610/353809.terrain differ diff --git a/public/terrain/19/858610/353810.terrain b/public/terrain/19/858610/353810.terrain new file mode 100644 index 000000000..a9981b257 Binary files /dev/null and b/public/terrain/19/858610/353810.terrain differ diff --git a/public/terrain/19/858610/353811.terrain b/public/terrain/19/858610/353811.terrain new file mode 100644 index 000000000..a887ba730 Binary files /dev/null and b/public/terrain/19/858610/353811.terrain differ diff --git a/public/terrain/19/858610/353812.terrain b/public/terrain/19/858610/353812.terrain new file mode 100644 index 000000000..1e0d9bfd6 Binary files /dev/null and b/public/terrain/19/858610/353812.terrain differ diff --git a/public/terrain/19/858610/353813.terrain b/public/terrain/19/858610/353813.terrain new file mode 100644 index 000000000..bdfb47f41 Binary files /dev/null and b/public/terrain/19/858610/353813.terrain differ diff --git a/public/terrain/19/858610/353814.terrain b/public/terrain/19/858610/353814.terrain new file mode 100644 index 000000000..c78ce71c8 Binary files /dev/null and b/public/terrain/19/858610/353814.terrain differ diff --git a/public/terrain/19/858610/353815.terrain b/public/terrain/19/858610/353815.terrain new file mode 100644 index 000000000..ccc888ca8 Binary files /dev/null and b/public/terrain/19/858610/353815.terrain differ diff --git a/public/terrain/19/858610/353816.terrain b/public/terrain/19/858610/353816.terrain new file mode 100644 index 000000000..e94454a01 Binary files /dev/null and b/public/terrain/19/858610/353816.terrain differ diff --git a/public/terrain/19/858610/353817.terrain b/public/terrain/19/858610/353817.terrain new file mode 100644 index 000000000..830460060 Binary files /dev/null and b/public/terrain/19/858610/353817.terrain differ diff --git a/public/terrain/19/858610/353818.terrain b/public/terrain/19/858610/353818.terrain new file mode 100644 index 000000000..50beb2630 Binary files /dev/null and b/public/terrain/19/858610/353818.terrain differ diff --git a/public/terrain/19/858610/353819.terrain b/public/terrain/19/858610/353819.terrain new file mode 100644 index 000000000..767330c26 Binary files /dev/null and b/public/terrain/19/858610/353819.terrain differ diff --git a/public/terrain/19/858610/353820.terrain b/public/terrain/19/858610/353820.terrain new file mode 100644 index 000000000..92eef905e Binary files /dev/null and b/public/terrain/19/858610/353820.terrain differ diff --git a/public/terrain/19/858610/353821.terrain b/public/terrain/19/858610/353821.terrain new file mode 100644 index 000000000..15a0552a4 Binary files /dev/null and b/public/terrain/19/858610/353821.terrain differ diff --git a/public/terrain/19/858610/353822.terrain b/public/terrain/19/858610/353822.terrain new file mode 100644 index 000000000..a5232de46 Binary files /dev/null and b/public/terrain/19/858610/353822.terrain differ diff --git a/public/terrain/19/858610/353823.terrain b/public/terrain/19/858610/353823.terrain new file mode 100644 index 000000000..6b81e4818 Binary files /dev/null and b/public/terrain/19/858610/353823.terrain differ diff --git a/public/terrain/19/858610/353824.terrain b/public/terrain/19/858610/353824.terrain new file mode 100644 index 000000000..3551d163f Binary files /dev/null and b/public/terrain/19/858610/353824.terrain differ diff --git a/public/terrain/19/858610/353825.terrain b/public/terrain/19/858610/353825.terrain new file mode 100644 index 000000000..33f22ffe4 Binary files /dev/null and b/public/terrain/19/858610/353825.terrain differ diff --git a/public/terrain/19/858610/353826.terrain b/public/terrain/19/858610/353826.terrain new file mode 100644 index 000000000..25f6c4ed4 Binary files /dev/null and b/public/terrain/19/858610/353826.terrain differ diff --git a/public/terrain/19/858610/353827.terrain b/public/terrain/19/858610/353827.terrain new file mode 100644 index 000000000..b09863b20 Binary files /dev/null and b/public/terrain/19/858610/353827.terrain differ diff --git a/public/terrain/19/858610/353828.terrain b/public/terrain/19/858610/353828.terrain new file mode 100644 index 000000000..f91cf2f28 Binary files /dev/null and b/public/terrain/19/858610/353828.terrain differ diff --git a/public/terrain/19/858610/353829.terrain b/public/terrain/19/858610/353829.terrain new file mode 100644 index 000000000..352904ffc Binary files /dev/null and b/public/terrain/19/858610/353829.terrain differ diff --git a/public/terrain/19/858610/353830.terrain b/public/terrain/19/858610/353830.terrain new file mode 100644 index 000000000..4cf5c359a Binary files /dev/null and b/public/terrain/19/858610/353830.terrain differ diff --git a/public/terrain/19/858610/353831.terrain b/public/terrain/19/858610/353831.terrain new file mode 100644 index 000000000..a666e9215 Binary files /dev/null and b/public/terrain/19/858610/353831.terrain differ diff --git a/public/terrain/19/858610/353832.terrain b/public/terrain/19/858610/353832.terrain new file mode 100644 index 000000000..8042567f4 Binary files /dev/null and b/public/terrain/19/858610/353832.terrain differ diff --git a/public/terrain/19/858610/353833.terrain b/public/terrain/19/858610/353833.terrain new file mode 100644 index 000000000..8e61ca79b Binary files /dev/null and b/public/terrain/19/858610/353833.terrain differ diff --git a/public/terrain/19/858610/353834.terrain b/public/terrain/19/858610/353834.terrain new file mode 100644 index 000000000..01bdb54ea Binary files /dev/null and b/public/terrain/19/858610/353834.terrain differ diff --git a/public/terrain/19/858610/353835.terrain b/public/terrain/19/858610/353835.terrain new file mode 100644 index 000000000..18496f96a Binary files /dev/null and b/public/terrain/19/858610/353835.terrain differ diff --git a/public/terrain/19/858610/353836.terrain b/public/terrain/19/858610/353836.terrain new file mode 100644 index 000000000..50527943b Binary files /dev/null and b/public/terrain/19/858610/353836.terrain differ diff --git a/public/terrain/19/858610/353837.terrain b/public/terrain/19/858610/353837.terrain new file mode 100644 index 000000000..5a3f66db5 Binary files /dev/null and b/public/terrain/19/858610/353837.terrain differ diff --git a/public/terrain/19/858610/353838.terrain b/public/terrain/19/858610/353838.terrain new file mode 100644 index 000000000..1611f66ce Binary files /dev/null and b/public/terrain/19/858610/353838.terrain differ diff --git a/public/terrain/19/858610/353839.terrain b/public/terrain/19/858610/353839.terrain new file mode 100644 index 000000000..4d86f5e47 Binary files /dev/null and b/public/terrain/19/858610/353839.terrain differ diff --git a/public/terrain/19/858610/353840.terrain b/public/terrain/19/858610/353840.terrain new file mode 100644 index 000000000..92d18a6b9 Binary files /dev/null and b/public/terrain/19/858610/353840.terrain differ diff --git a/public/terrain/19/858610/353841.terrain b/public/terrain/19/858610/353841.terrain new file mode 100644 index 000000000..0d837c18e Binary files /dev/null and b/public/terrain/19/858610/353841.terrain differ diff --git a/public/terrain/19/858610/353842.terrain b/public/terrain/19/858610/353842.terrain new file mode 100644 index 000000000..dc3874dc6 Binary files /dev/null and b/public/terrain/19/858610/353842.terrain differ diff --git a/public/terrain/19/858610/353843.terrain b/public/terrain/19/858610/353843.terrain new file mode 100644 index 000000000..5c82d599f Binary files /dev/null and b/public/terrain/19/858610/353843.terrain differ diff --git a/public/terrain/19/858610/353844.terrain b/public/terrain/19/858610/353844.terrain new file mode 100644 index 000000000..ca364e5bb Binary files /dev/null and b/public/terrain/19/858610/353844.terrain differ diff --git a/public/terrain/19/858610/353845.terrain b/public/terrain/19/858610/353845.terrain new file mode 100644 index 000000000..531e6dbde Binary files /dev/null and b/public/terrain/19/858610/353845.terrain differ diff --git a/public/terrain/19/858610/353846.terrain b/public/terrain/19/858610/353846.terrain new file mode 100644 index 000000000..552bf1656 Binary files /dev/null and b/public/terrain/19/858610/353846.terrain differ diff --git a/public/terrain/19/858610/353847.terrain b/public/terrain/19/858610/353847.terrain new file mode 100644 index 000000000..0aaba4f9f Binary files /dev/null and b/public/terrain/19/858610/353847.terrain differ diff --git a/public/terrain/19/858610/353848.terrain b/public/terrain/19/858610/353848.terrain new file mode 100644 index 000000000..ff0650b43 Binary files /dev/null and b/public/terrain/19/858610/353848.terrain differ diff --git a/public/terrain/19/858610/353849.terrain b/public/terrain/19/858610/353849.terrain new file mode 100644 index 000000000..0021fcaaa Binary files /dev/null and b/public/terrain/19/858610/353849.terrain differ diff --git a/public/terrain/19/858610/353850.terrain b/public/terrain/19/858610/353850.terrain new file mode 100644 index 000000000..2dc9fb0cd Binary files /dev/null and b/public/terrain/19/858610/353850.terrain differ diff --git a/public/terrain/19/858610/353851.terrain b/public/terrain/19/858610/353851.terrain new file mode 100644 index 000000000..9444079be Binary files /dev/null and b/public/terrain/19/858610/353851.terrain differ diff --git a/public/terrain/19/858610/353852.terrain b/public/terrain/19/858610/353852.terrain new file mode 100644 index 000000000..c803d0548 Binary files /dev/null and b/public/terrain/19/858610/353852.terrain differ diff --git a/public/terrain/19/858610/353853.terrain b/public/terrain/19/858610/353853.terrain new file mode 100644 index 000000000..579220dc9 Binary files /dev/null and b/public/terrain/19/858610/353853.terrain differ diff --git a/public/terrain/19/858610/353854.terrain b/public/terrain/19/858610/353854.terrain new file mode 100644 index 000000000..366535fb6 Binary files /dev/null and b/public/terrain/19/858610/353854.terrain differ diff --git a/public/terrain/19/858610/353855.terrain b/public/terrain/19/858610/353855.terrain new file mode 100644 index 000000000..74868682f Binary files /dev/null and b/public/terrain/19/858610/353855.terrain differ diff --git a/public/terrain/19/858610/353856.terrain b/public/terrain/19/858610/353856.terrain new file mode 100644 index 000000000..46ef25478 Binary files /dev/null and b/public/terrain/19/858610/353856.terrain differ diff --git a/public/terrain/19/858610/353857.terrain b/public/terrain/19/858610/353857.terrain new file mode 100644 index 000000000..6d98ef479 Binary files /dev/null and b/public/terrain/19/858610/353857.terrain differ diff --git a/public/terrain/19/858610/353858.terrain b/public/terrain/19/858610/353858.terrain new file mode 100644 index 000000000..f70b604d7 Binary files /dev/null and b/public/terrain/19/858610/353858.terrain differ diff --git a/public/terrain/19/858610/353859.terrain b/public/terrain/19/858610/353859.terrain new file mode 100644 index 000000000..e2b0214ef Binary files /dev/null and b/public/terrain/19/858610/353859.terrain differ diff --git a/public/terrain/19/858610/353860.terrain b/public/terrain/19/858610/353860.terrain new file mode 100644 index 000000000..84e9a7a3a Binary files /dev/null and b/public/terrain/19/858610/353860.terrain differ diff --git a/public/terrain/19/858610/353861.terrain b/public/terrain/19/858610/353861.terrain new file mode 100644 index 000000000..0c10b44e6 Binary files /dev/null and b/public/terrain/19/858610/353861.terrain differ diff --git a/public/terrain/19/858610/353862.terrain b/public/terrain/19/858610/353862.terrain new file mode 100644 index 000000000..582391916 Binary files /dev/null and b/public/terrain/19/858610/353862.terrain differ diff --git a/public/terrain/19/858610/353863.terrain b/public/terrain/19/858610/353863.terrain new file mode 100644 index 000000000..ad7d33607 Binary files /dev/null and b/public/terrain/19/858610/353863.terrain differ diff --git a/public/terrain/19/858610/353864.terrain b/public/terrain/19/858610/353864.terrain new file mode 100644 index 000000000..37c1d9172 Binary files /dev/null and b/public/terrain/19/858610/353864.terrain differ diff --git a/public/terrain/19/858610/353865.terrain b/public/terrain/19/858610/353865.terrain new file mode 100644 index 000000000..0aa8a2f56 Binary files /dev/null and b/public/terrain/19/858610/353865.terrain differ diff --git a/public/terrain/19/858610/353866.terrain b/public/terrain/19/858610/353866.terrain new file mode 100644 index 000000000..8d6296b6d Binary files /dev/null and b/public/terrain/19/858610/353866.terrain differ diff --git a/public/terrain/19/858610/353867.terrain b/public/terrain/19/858610/353867.terrain new file mode 100644 index 000000000..f3788c194 Binary files /dev/null and b/public/terrain/19/858610/353867.terrain differ diff --git a/public/terrain/19/858610/353868.terrain b/public/terrain/19/858610/353868.terrain new file mode 100644 index 000000000..94e888839 Binary files /dev/null and b/public/terrain/19/858610/353868.terrain differ diff --git a/public/terrain/19/858610/353869.terrain b/public/terrain/19/858610/353869.terrain new file mode 100644 index 000000000..891f4be8a Binary files /dev/null and b/public/terrain/19/858610/353869.terrain differ diff --git a/public/terrain/19/858610/353870.terrain b/public/terrain/19/858610/353870.terrain new file mode 100644 index 000000000..ece0f1ff4 Binary files /dev/null and b/public/terrain/19/858610/353870.terrain differ diff --git a/public/terrain/19/858610/353871.terrain b/public/terrain/19/858610/353871.terrain new file mode 100644 index 000000000..4557a28c1 Binary files /dev/null and b/public/terrain/19/858610/353871.terrain differ diff --git a/public/terrain/19/858610/353872.terrain b/public/terrain/19/858610/353872.terrain new file mode 100644 index 000000000..d9926a896 Binary files /dev/null and b/public/terrain/19/858610/353872.terrain differ diff --git a/public/terrain/19/858610/353873.terrain b/public/terrain/19/858610/353873.terrain new file mode 100644 index 000000000..3248b360f Binary files /dev/null and b/public/terrain/19/858610/353873.terrain differ diff --git a/public/terrain/19/858610/353874.terrain b/public/terrain/19/858610/353874.terrain new file mode 100644 index 000000000..7762131b7 Binary files /dev/null and b/public/terrain/19/858610/353874.terrain differ diff --git a/public/terrain/19/858610/353875.terrain b/public/terrain/19/858610/353875.terrain new file mode 100644 index 000000000..9bf9f2406 Binary files /dev/null and b/public/terrain/19/858610/353875.terrain differ diff --git a/public/terrain/19/858610/353876.terrain b/public/terrain/19/858610/353876.terrain new file mode 100644 index 000000000..154221a5e Binary files /dev/null and b/public/terrain/19/858610/353876.terrain differ diff --git a/public/terrain/19/858610/353877.terrain b/public/terrain/19/858610/353877.terrain new file mode 100644 index 000000000..c3f378661 Binary files /dev/null and b/public/terrain/19/858610/353877.terrain differ diff --git a/public/terrain/19/858610/353878.terrain b/public/terrain/19/858610/353878.terrain new file mode 100644 index 000000000..f18c77aaf Binary files /dev/null and b/public/terrain/19/858610/353878.terrain differ diff --git a/public/terrain/19/858610/353879.terrain b/public/terrain/19/858610/353879.terrain new file mode 100644 index 000000000..5cc895403 Binary files /dev/null and b/public/terrain/19/858610/353879.terrain differ diff --git a/public/terrain/19/858610/353880.terrain b/public/terrain/19/858610/353880.terrain new file mode 100644 index 000000000..bf0582b5d Binary files /dev/null and b/public/terrain/19/858610/353880.terrain differ diff --git a/public/terrain/19/858610/353881.terrain b/public/terrain/19/858610/353881.terrain new file mode 100644 index 000000000..0a1a975bf Binary files /dev/null and b/public/terrain/19/858610/353881.terrain differ diff --git a/public/terrain/19/858610/353882.terrain b/public/terrain/19/858610/353882.terrain new file mode 100644 index 000000000..6fe77aff6 Binary files /dev/null and b/public/terrain/19/858610/353882.terrain differ diff --git a/public/terrain/19/858610/353883.terrain b/public/terrain/19/858610/353883.terrain new file mode 100644 index 000000000..305e2fdf0 Binary files /dev/null and b/public/terrain/19/858610/353883.terrain differ diff --git a/public/terrain/19/858610/353884.terrain b/public/terrain/19/858610/353884.terrain new file mode 100644 index 000000000..251a3a2a5 Binary files /dev/null and b/public/terrain/19/858610/353884.terrain differ diff --git a/public/terrain/19/858610/353885.terrain b/public/terrain/19/858610/353885.terrain new file mode 100644 index 000000000..adfcad6eb Binary files /dev/null and b/public/terrain/19/858610/353885.terrain differ diff --git a/public/terrain/19/858610/353886.terrain b/public/terrain/19/858610/353886.terrain new file mode 100644 index 000000000..12102e8af Binary files /dev/null and b/public/terrain/19/858610/353886.terrain differ diff --git a/public/terrain/19/858610/353887.terrain b/public/terrain/19/858610/353887.terrain new file mode 100644 index 000000000..165a519fa Binary files /dev/null and b/public/terrain/19/858610/353887.terrain differ diff --git a/public/terrain/19/858610/353888.terrain b/public/terrain/19/858610/353888.terrain new file mode 100644 index 000000000..c9fa05e63 Binary files /dev/null and b/public/terrain/19/858610/353888.terrain differ diff --git a/public/terrain/19/858610/353889.terrain b/public/terrain/19/858610/353889.terrain new file mode 100644 index 000000000..b3eecc525 Binary files /dev/null and b/public/terrain/19/858610/353889.terrain differ diff --git a/public/terrain/19/858610/353890.terrain b/public/terrain/19/858610/353890.terrain new file mode 100644 index 000000000..4d7552f0b Binary files /dev/null and b/public/terrain/19/858610/353890.terrain differ diff --git a/public/terrain/19/858610/353891.terrain b/public/terrain/19/858610/353891.terrain new file mode 100644 index 000000000..35de38a53 Binary files /dev/null and b/public/terrain/19/858610/353891.terrain differ diff --git a/public/terrain/19/858610/353892.terrain b/public/terrain/19/858610/353892.terrain new file mode 100644 index 000000000..fb3e21ec3 Binary files /dev/null and b/public/terrain/19/858610/353892.terrain differ diff --git a/public/terrain/19/858610/353893.terrain b/public/terrain/19/858610/353893.terrain new file mode 100644 index 000000000..52d0ec588 Binary files /dev/null and b/public/terrain/19/858610/353893.terrain differ diff --git a/public/terrain/19/858610/353894.terrain b/public/terrain/19/858610/353894.terrain new file mode 100644 index 000000000..0b08a5fcf Binary files /dev/null and b/public/terrain/19/858610/353894.terrain differ diff --git a/public/terrain/19/858610/353895.terrain b/public/terrain/19/858610/353895.terrain new file mode 100644 index 000000000..8991577b9 Binary files /dev/null and b/public/terrain/19/858610/353895.terrain differ diff --git a/public/terrain/19/858610/353896.terrain b/public/terrain/19/858610/353896.terrain new file mode 100644 index 000000000..266d10903 Binary files /dev/null and b/public/terrain/19/858610/353896.terrain differ diff --git a/public/terrain/19/858610/353897.terrain b/public/terrain/19/858610/353897.terrain new file mode 100644 index 000000000..410f40b17 Binary files /dev/null and b/public/terrain/19/858610/353897.terrain differ diff --git a/public/terrain/19/858610/353898.terrain b/public/terrain/19/858610/353898.terrain new file mode 100644 index 000000000..ee90e7760 Binary files /dev/null and b/public/terrain/19/858610/353898.terrain differ diff --git a/public/terrain/19/858610/353899.terrain b/public/terrain/19/858610/353899.terrain new file mode 100644 index 000000000..46a5656df Binary files /dev/null and b/public/terrain/19/858610/353899.terrain differ diff --git a/public/terrain/19/858610/353900.terrain b/public/terrain/19/858610/353900.terrain new file mode 100644 index 000000000..b9d31fe21 Binary files /dev/null and b/public/terrain/19/858610/353900.terrain differ diff --git a/public/terrain/19/858610/353901.terrain b/public/terrain/19/858610/353901.terrain new file mode 100644 index 000000000..ab070d034 Binary files /dev/null and b/public/terrain/19/858610/353901.terrain differ diff --git a/public/terrain/19/858610/353902.terrain b/public/terrain/19/858610/353902.terrain new file mode 100644 index 000000000..39a562df9 Binary files /dev/null and b/public/terrain/19/858610/353902.terrain differ diff --git a/public/terrain/19/858610/353903.terrain b/public/terrain/19/858610/353903.terrain new file mode 100644 index 000000000..3351eed8d Binary files /dev/null and b/public/terrain/19/858610/353903.terrain differ diff --git a/public/terrain/19/858610/353904.terrain b/public/terrain/19/858610/353904.terrain new file mode 100644 index 000000000..ddd2582bd Binary files /dev/null and b/public/terrain/19/858610/353904.terrain differ diff --git a/public/terrain/19/858610/353905.terrain b/public/terrain/19/858610/353905.terrain new file mode 100644 index 000000000..dfab5ee1d Binary files /dev/null and b/public/terrain/19/858610/353905.terrain differ diff --git a/public/terrain/19/858610/353906.terrain b/public/terrain/19/858610/353906.terrain new file mode 100644 index 000000000..df82c599b Binary files /dev/null and b/public/terrain/19/858610/353906.terrain differ diff --git a/public/terrain/19/858610/353907.terrain b/public/terrain/19/858610/353907.terrain new file mode 100644 index 000000000..ba57a2c9e Binary files /dev/null and b/public/terrain/19/858610/353907.terrain differ diff --git a/public/terrain/19/858610/353908.terrain b/public/terrain/19/858610/353908.terrain new file mode 100644 index 000000000..da6830d9d Binary files /dev/null and b/public/terrain/19/858610/353908.terrain differ diff --git a/public/terrain/19/858610/353909.terrain b/public/terrain/19/858610/353909.terrain new file mode 100644 index 000000000..0f0e00643 Binary files /dev/null and b/public/terrain/19/858610/353909.terrain differ diff --git a/public/terrain/19/858610/353910.terrain b/public/terrain/19/858610/353910.terrain new file mode 100644 index 000000000..e0feccb4c Binary files /dev/null and b/public/terrain/19/858610/353910.terrain differ diff --git a/public/terrain/19/858610/353911.terrain b/public/terrain/19/858610/353911.terrain new file mode 100644 index 000000000..6a09178b7 Binary files /dev/null and b/public/terrain/19/858610/353911.terrain differ diff --git a/public/terrain/19/858610/353912.terrain b/public/terrain/19/858610/353912.terrain new file mode 100644 index 000000000..b7675c053 Binary files /dev/null and b/public/terrain/19/858610/353912.terrain differ diff --git a/public/terrain/19/858610/353913.terrain b/public/terrain/19/858610/353913.terrain new file mode 100644 index 000000000..52c36eab5 Binary files /dev/null and b/public/terrain/19/858610/353913.terrain differ diff --git a/public/terrain/19/858610/353914.terrain b/public/terrain/19/858610/353914.terrain new file mode 100644 index 000000000..83b6edefe Binary files /dev/null and b/public/terrain/19/858610/353914.terrain differ diff --git a/public/terrain/19/858610/353915.terrain b/public/terrain/19/858610/353915.terrain new file mode 100644 index 000000000..4f2194c3e Binary files /dev/null and b/public/terrain/19/858610/353915.terrain differ diff --git a/public/terrain/19/858610/353916.terrain b/public/terrain/19/858610/353916.terrain new file mode 100644 index 000000000..8415b803b Binary files /dev/null and b/public/terrain/19/858610/353916.terrain differ diff --git a/public/terrain/19/858610/353917.terrain b/public/terrain/19/858610/353917.terrain new file mode 100644 index 000000000..37f403bf1 Binary files /dev/null and b/public/terrain/19/858610/353917.terrain differ diff --git a/public/terrain/19/858610/353918.terrain b/public/terrain/19/858610/353918.terrain new file mode 100644 index 000000000..1ff1a32e4 Binary files /dev/null and b/public/terrain/19/858610/353918.terrain differ diff --git a/public/terrain/19/858610/353919.terrain b/public/terrain/19/858610/353919.terrain new file mode 100644 index 000000000..638f3583c Binary files /dev/null and b/public/terrain/19/858610/353919.terrain differ diff --git a/public/terrain/19/858610/353920.terrain b/public/terrain/19/858610/353920.terrain new file mode 100644 index 000000000..1afd7ecec Binary files /dev/null and b/public/terrain/19/858610/353920.terrain differ diff --git a/public/terrain/19/858610/353921.terrain b/public/terrain/19/858610/353921.terrain new file mode 100644 index 000000000..1f08bae1f Binary files /dev/null and b/public/terrain/19/858610/353921.terrain differ diff --git a/public/terrain/19/858610/353922.terrain b/public/terrain/19/858610/353922.terrain new file mode 100644 index 000000000..45b44348a Binary files /dev/null and b/public/terrain/19/858610/353922.terrain differ diff --git a/public/terrain/19/858610/353923.terrain b/public/terrain/19/858610/353923.terrain new file mode 100644 index 000000000..3ee830298 Binary files /dev/null and b/public/terrain/19/858610/353923.terrain differ diff --git a/public/terrain/19/858610/353924.terrain b/public/terrain/19/858610/353924.terrain new file mode 100644 index 000000000..cf7268ab0 Binary files /dev/null and b/public/terrain/19/858610/353924.terrain differ diff --git a/public/terrain/19/858610/353925.terrain b/public/terrain/19/858610/353925.terrain new file mode 100644 index 000000000..e6c54837f Binary files /dev/null and b/public/terrain/19/858610/353925.terrain differ diff --git a/public/terrain/19/858610/353926.terrain b/public/terrain/19/858610/353926.terrain new file mode 100644 index 000000000..6bfce0660 Binary files /dev/null and b/public/terrain/19/858610/353926.terrain differ diff --git a/public/terrain/19/858610/353927.terrain b/public/terrain/19/858610/353927.terrain new file mode 100644 index 000000000..f2b5b91ba Binary files /dev/null and b/public/terrain/19/858610/353927.terrain differ diff --git a/public/terrain/19/858610/353928.terrain b/public/terrain/19/858610/353928.terrain new file mode 100644 index 000000000..1f28e7ef2 Binary files /dev/null and b/public/terrain/19/858610/353928.terrain differ diff --git a/public/terrain/19/858610/353929.terrain b/public/terrain/19/858610/353929.terrain new file mode 100644 index 000000000..068edabe3 Binary files /dev/null and b/public/terrain/19/858610/353929.terrain differ diff --git a/public/terrain/19/858610/353930.terrain b/public/terrain/19/858610/353930.terrain new file mode 100644 index 000000000..6b2474cfd Binary files /dev/null and b/public/terrain/19/858610/353930.terrain differ diff --git a/public/terrain/19/858610/353931.terrain b/public/terrain/19/858610/353931.terrain new file mode 100644 index 000000000..64e84caed Binary files /dev/null and b/public/terrain/19/858610/353931.terrain differ diff --git a/public/terrain/19/858610/353932.terrain b/public/terrain/19/858610/353932.terrain new file mode 100644 index 000000000..de5c1c32d Binary files /dev/null and b/public/terrain/19/858610/353932.terrain differ diff --git a/public/terrain/19/858610/353933.terrain b/public/terrain/19/858610/353933.terrain new file mode 100644 index 000000000..f3b88659b Binary files /dev/null and b/public/terrain/19/858610/353933.terrain differ diff --git a/public/terrain/19/858610/353934.terrain b/public/terrain/19/858610/353934.terrain new file mode 100644 index 000000000..89fc59a4e Binary files /dev/null and b/public/terrain/19/858610/353934.terrain differ diff --git a/public/terrain/19/858610/353935.terrain b/public/terrain/19/858610/353935.terrain new file mode 100644 index 000000000..43eed6cea Binary files /dev/null and b/public/terrain/19/858610/353935.terrain differ diff --git a/public/terrain/19/858610/353936.terrain b/public/terrain/19/858610/353936.terrain new file mode 100644 index 000000000..3136ff53c Binary files /dev/null and b/public/terrain/19/858610/353936.terrain differ diff --git a/public/terrain/19/858610/353937.terrain b/public/terrain/19/858610/353937.terrain new file mode 100644 index 000000000..15630b0e5 Binary files /dev/null and b/public/terrain/19/858610/353937.terrain differ diff --git a/public/terrain/19/858610/353938.terrain b/public/terrain/19/858610/353938.terrain new file mode 100644 index 000000000..e326aea67 Binary files /dev/null and b/public/terrain/19/858610/353938.terrain differ diff --git a/public/terrain/19/858610/353939.terrain b/public/terrain/19/858610/353939.terrain new file mode 100644 index 000000000..d02a0a120 Binary files /dev/null and b/public/terrain/19/858610/353939.terrain differ diff --git a/public/terrain/19/858610/353940.terrain b/public/terrain/19/858610/353940.terrain new file mode 100644 index 000000000..c39dc8f9b Binary files /dev/null and b/public/terrain/19/858610/353940.terrain differ diff --git a/public/terrain/19/858610/353941.terrain b/public/terrain/19/858610/353941.terrain new file mode 100644 index 000000000..4e0961900 Binary files /dev/null and b/public/terrain/19/858610/353941.terrain differ diff --git a/public/terrain/19/858610/353942.terrain b/public/terrain/19/858610/353942.terrain new file mode 100644 index 000000000..d0717c18d Binary files /dev/null and b/public/terrain/19/858610/353942.terrain differ diff --git a/public/terrain/19/858610/353943.terrain b/public/terrain/19/858610/353943.terrain new file mode 100644 index 000000000..05f57820e Binary files /dev/null and b/public/terrain/19/858610/353943.terrain differ diff --git a/public/terrain/19/858610/353944.terrain b/public/terrain/19/858610/353944.terrain new file mode 100644 index 000000000..9c4248131 Binary files /dev/null and b/public/terrain/19/858610/353944.terrain differ diff --git a/public/terrain/19/858610/353945.terrain b/public/terrain/19/858610/353945.terrain new file mode 100644 index 000000000..784043d6d Binary files /dev/null and b/public/terrain/19/858610/353945.terrain differ diff --git a/public/terrain/19/858610/353946.terrain b/public/terrain/19/858610/353946.terrain new file mode 100644 index 000000000..a6e243bf8 Binary files /dev/null and b/public/terrain/19/858610/353946.terrain differ diff --git a/public/terrain/19/858610/353947.terrain b/public/terrain/19/858610/353947.terrain new file mode 100644 index 000000000..ed030c046 Binary files /dev/null and b/public/terrain/19/858610/353947.terrain differ diff --git a/public/terrain/19/858610/353948.terrain b/public/terrain/19/858610/353948.terrain new file mode 100644 index 000000000..d32a77768 Binary files /dev/null and b/public/terrain/19/858610/353948.terrain differ diff --git a/public/terrain/19/858610/353949.terrain b/public/terrain/19/858610/353949.terrain new file mode 100644 index 000000000..aa035b0a1 Binary files /dev/null and b/public/terrain/19/858610/353949.terrain differ diff --git a/public/terrain/19/858610/353950.terrain b/public/terrain/19/858610/353950.terrain new file mode 100644 index 000000000..ea65b7bad Binary files /dev/null and b/public/terrain/19/858610/353950.terrain differ diff --git a/public/terrain/19/858610/353951.terrain b/public/terrain/19/858610/353951.terrain new file mode 100644 index 000000000..85b4f3c25 Binary files /dev/null and b/public/terrain/19/858610/353951.terrain differ diff --git a/public/terrain/19/858610/353952.terrain b/public/terrain/19/858610/353952.terrain new file mode 100644 index 000000000..ceb7f6a5a Binary files /dev/null and b/public/terrain/19/858610/353952.terrain differ diff --git a/public/terrain/19/858610/353953.terrain b/public/terrain/19/858610/353953.terrain new file mode 100644 index 000000000..420123ffb Binary files /dev/null and b/public/terrain/19/858610/353953.terrain differ diff --git a/public/terrain/19/858610/353954.terrain b/public/terrain/19/858610/353954.terrain new file mode 100644 index 000000000..d666b8d18 Binary files /dev/null and b/public/terrain/19/858610/353954.terrain differ diff --git a/public/terrain/19/858610/353955.terrain b/public/terrain/19/858610/353955.terrain new file mode 100644 index 000000000..cc88fce32 Binary files /dev/null and b/public/terrain/19/858610/353955.terrain differ diff --git a/public/terrain/19/858610/353956.terrain b/public/terrain/19/858610/353956.terrain new file mode 100644 index 000000000..c22a84e71 Binary files /dev/null and b/public/terrain/19/858610/353956.terrain differ diff --git a/public/terrain/19/858610/353957.terrain b/public/terrain/19/858610/353957.terrain new file mode 100644 index 000000000..c796708ce Binary files /dev/null and b/public/terrain/19/858610/353957.terrain differ diff --git a/public/terrain/19/858610/353958.terrain b/public/terrain/19/858610/353958.terrain new file mode 100644 index 000000000..a6f61a56a Binary files /dev/null and b/public/terrain/19/858610/353958.terrain differ diff --git a/public/terrain/19/858610/353959.terrain b/public/terrain/19/858610/353959.terrain new file mode 100644 index 000000000..63fb55810 Binary files /dev/null and b/public/terrain/19/858610/353959.terrain differ diff --git a/public/terrain/19/858610/353960.terrain b/public/terrain/19/858610/353960.terrain new file mode 100644 index 000000000..63a1aa086 Binary files /dev/null and b/public/terrain/19/858610/353960.terrain differ diff --git a/public/terrain/19/858610/353961.terrain b/public/terrain/19/858610/353961.terrain new file mode 100644 index 000000000..519595707 Binary files /dev/null and b/public/terrain/19/858610/353961.terrain differ diff --git a/public/terrain/19/858610/353962.terrain b/public/terrain/19/858610/353962.terrain new file mode 100644 index 000000000..37c2a2df7 Binary files /dev/null and b/public/terrain/19/858610/353962.terrain differ diff --git a/public/terrain/19/858610/353963.terrain b/public/terrain/19/858610/353963.terrain new file mode 100644 index 000000000..bec37b600 Binary files /dev/null and b/public/terrain/19/858610/353963.terrain differ diff --git a/public/terrain/19/858610/353964.terrain b/public/terrain/19/858610/353964.terrain new file mode 100644 index 000000000..124155630 Binary files /dev/null and b/public/terrain/19/858610/353964.terrain differ diff --git a/public/terrain/19/858610/353965.terrain b/public/terrain/19/858610/353965.terrain new file mode 100644 index 000000000..333a3434c Binary files /dev/null and b/public/terrain/19/858610/353965.terrain differ diff --git a/public/terrain/19/858610/353966.terrain b/public/terrain/19/858610/353966.terrain new file mode 100644 index 000000000..fdfc4d5d7 Binary files /dev/null and b/public/terrain/19/858610/353966.terrain differ diff --git a/public/terrain/19/858610/353967.terrain b/public/terrain/19/858610/353967.terrain new file mode 100644 index 000000000..0a931df6a Binary files /dev/null and b/public/terrain/19/858610/353967.terrain differ diff --git a/public/terrain/19/858610/353968.terrain b/public/terrain/19/858610/353968.terrain new file mode 100644 index 000000000..2b5db0a58 Binary files /dev/null and b/public/terrain/19/858610/353968.terrain differ diff --git a/public/terrain/19/858610/353969.terrain b/public/terrain/19/858610/353969.terrain new file mode 100644 index 000000000..a0d1e03a1 Binary files /dev/null and b/public/terrain/19/858610/353969.terrain differ diff --git a/public/terrain/19/858610/353970.terrain b/public/terrain/19/858610/353970.terrain new file mode 100644 index 000000000..f319d939a Binary files /dev/null and b/public/terrain/19/858610/353970.terrain differ diff --git a/public/terrain/19/858610/353971.terrain b/public/terrain/19/858610/353971.terrain new file mode 100644 index 000000000..45f2f881d Binary files /dev/null and b/public/terrain/19/858610/353971.terrain differ diff --git a/public/terrain/19/858610/353972.terrain b/public/terrain/19/858610/353972.terrain new file mode 100644 index 000000000..53f6da319 Binary files /dev/null and b/public/terrain/19/858610/353972.terrain differ diff --git a/public/terrain/19/858610/353973.terrain b/public/terrain/19/858610/353973.terrain new file mode 100644 index 000000000..2f210d450 Binary files /dev/null and b/public/terrain/19/858610/353973.terrain differ diff --git a/public/terrain/19/858610/353974.terrain b/public/terrain/19/858610/353974.terrain new file mode 100644 index 000000000..1fc7ccb48 Binary files /dev/null and b/public/terrain/19/858610/353974.terrain differ diff --git a/public/terrain/19/858610/353975.terrain b/public/terrain/19/858610/353975.terrain new file mode 100644 index 000000000..92ab410f9 Binary files /dev/null and b/public/terrain/19/858610/353975.terrain differ diff --git a/public/terrain/19/858610/353976.terrain b/public/terrain/19/858610/353976.terrain new file mode 100644 index 000000000..a008f9a21 Binary files /dev/null and b/public/terrain/19/858610/353976.terrain differ diff --git a/public/terrain/19/858610/353977.terrain b/public/terrain/19/858610/353977.terrain new file mode 100644 index 000000000..8ab5be664 Binary files /dev/null and b/public/terrain/19/858610/353977.terrain differ diff --git a/public/terrain/19/858610/353978.terrain b/public/terrain/19/858610/353978.terrain new file mode 100644 index 000000000..2608d1f68 Binary files /dev/null and b/public/terrain/19/858610/353978.terrain differ diff --git a/public/terrain/19/858610/353979.terrain b/public/terrain/19/858610/353979.terrain new file mode 100644 index 000000000..3ea5e351e Binary files /dev/null and b/public/terrain/19/858610/353979.terrain differ diff --git a/public/terrain/19/858610/353980.terrain b/public/terrain/19/858610/353980.terrain new file mode 100644 index 000000000..6d5ae0fc0 Binary files /dev/null and b/public/terrain/19/858610/353980.terrain differ diff --git a/public/terrain/19/858610/353981.terrain b/public/terrain/19/858610/353981.terrain new file mode 100644 index 000000000..8f7cd692d Binary files /dev/null and b/public/terrain/19/858610/353981.terrain differ diff --git a/public/terrain/19/858610/353982.terrain b/public/terrain/19/858610/353982.terrain new file mode 100644 index 000000000..97a703d63 Binary files /dev/null and b/public/terrain/19/858610/353982.terrain differ diff --git a/public/terrain/19/858610/353983.terrain b/public/terrain/19/858610/353983.terrain new file mode 100644 index 000000000..a855dba66 Binary files /dev/null and b/public/terrain/19/858610/353983.terrain differ diff --git a/public/terrain/19/858610/353984.terrain b/public/terrain/19/858610/353984.terrain new file mode 100644 index 000000000..e4f5873be Binary files /dev/null and b/public/terrain/19/858610/353984.terrain differ diff --git a/public/terrain/19/858610/353985.terrain b/public/terrain/19/858610/353985.terrain new file mode 100644 index 000000000..d7ed590a3 Binary files /dev/null and b/public/terrain/19/858610/353985.terrain differ diff --git a/public/terrain/19/858610/353986.terrain b/public/terrain/19/858610/353986.terrain new file mode 100644 index 000000000..f0949b4bf Binary files /dev/null and b/public/terrain/19/858610/353986.terrain differ diff --git a/public/terrain/19/858610/353987.terrain b/public/terrain/19/858610/353987.terrain new file mode 100644 index 000000000..982272926 Binary files /dev/null and b/public/terrain/19/858610/353987.terrain differ diff --git a/public/terrain/19/858610/353988.terrain b/public/terrain/19/858610/353988.terrain new file mode 100644 index 000000000..3e27f5d42 Binary files /dev/null and b/public/terrain/19/858610/353988.terrain differ diff --git a/public/terrain/19/858610/353989.terrain b/public/terrain/19/858610/353989.terrain new file mode 100644 index 000000000..def39da0f Binary files /dev/null and b/public/terrain/19/858610/353989.terrain differ diff --git a/public/terrain/19/858610/353990.terrain b/public/terrain/19/858610/353990.terrain new file mode 100644 index 000000000..1a8c0bf4a Binary files /dev/null and b/public/terrain/19/858610/353990.terrain differ diff --git a/public/terrain/19/858610/353991.terrain b/public/terrain/19/858610/353991.terrain new file mode 100644 index 000000000..e2dfb0bd5 Binary files /dev/null and b/public/terrain/19/858610/353991.terrain differ diff --git a/public/terrain/19/858610/353992.terrain b/public/terrain/19/858610/353992.terrain new file mode 100644 index 000000000..309181806 Binary files /dev/null and b/public/terrain/19/858610/353992.terrain differ diff --git a/public/terrain/19/858610/353993.terrain b/public/terrain/19/858610/353993.terrain new file mode 100644 index 000000000..488f14b52 Binary files /dev/null and b/public/terrain/19/858610/353993.terrain differ diff --git a/public/terrain/19/858610/353994.terrain b/public/terrain/19/858610/353994.terrain new file mode 100644 index 000000000..6e734d6c2 Binary files /dev/null and b/public/terrain/19/858610/353994.terrain differ diff --git a/public/terrain/19/858610/353995.terrain b/public/terrain/19/858610/353995.terrain new file mode 100644 index 000000000..6476d5f9d Binary files /dev/null and b/public/terrain/19/858610/353995.terrain differ diff --git a/public/terrain/19/858610/353996.terrain b/public/terrain/19/858610/353996.terrain new file mode 100644 index 000000000..209aab3a7 Binary files /dev/null and b/public/terrain/19/858610/353996.terrain differ diff --git a/public/terrain/19/858610/353997.terrain b/public/terrain/19/858610/353997.terrain new file mode 100644 index 000000000..b7acb6205 Binary files /dev/null and b/public/terrain/19/858610/353997.terrain differ diff --git a/public/terrain/19/858610/353998.terrain b/public/terrain/19/858610/353998.terrain new file mode 100644 index 000000000..c46b11b4a Binary files /dev/null and b/public/terrain/19/858610/353998.terrain differ diff --git a/public/terrain/19/858610/353999.terrain b/public/terrain/19/858610/353999.terrain new file mode 100644 index 000000000..dd5d4e918 Binary files /dev/null and b/public/terrain/19/858610/353999.terrain differ diff --git a/public/terrain/19/858610/354000.terrain b/public/terrain/19/858610/354000.terrain new file mode 100644 index 000000000..5f0da2c6d Binary files /dev/null and b/public/terrain/19/858610/354000.terrain differ diff --git a/public/terrain/19/858610/354001.terrain b/public/terrain/19/858610/354001.terrain new file mode 100644 index 000000000..71c86f2bd Binary files /dev/null and b/public/terrain/19/858610/354001.terrain differ diff --git a/public/terrain/19/858610/354002.terrain b/public/terrain/19/858610/354002.terrain new file mode 100644 index 000000000..83b577c41 Binary files /dev/null and b/public/terrain/19/858610/354002.terrain differ diff --git a/public/terrain/19/858610/354003.terrain b/public/terrain/19/858610/354003.terrain new file mode 100644 index 000000000..65bc00323 Binary files /dev/null and b/public/terrain/19/858610/354003.terrain differ diff --git a/public/terrain/19/858610/354004.terrain b/public/terrain/19/858610/354004.terrain new file mode 100644 index 000000000..6c028b4c4 Binary files /dev/null and b/public/terrain/19/858610/354004.terrain differ diff --git a/public/terrain/19/858610/354005.terrain b/public/terrain/19/858610/354005.terrain new file mode 100644 index 000000000..586fe512e Binary files /dev/null and b/public/terrain/19/858610/354005.terrain differ diff --git a/public/terrain/19/858610/354006.terrain b/public/terrain/19/858610/354006.terrain new file mode 100644 index 000000000..c0c5af00c Binary files /dev/null and b/public/terrain/19/858610/354006.terrain differ diff --git a/public/terrain/19/858610/354007.terrain b/public/terrain/19/858610/354007.terrain new file mode 100644 index 000000000..5a416881c Binary files /dev/null and b/public/terrain/19/858610/354007.terrain differ diff --git a/public/terrain/19/858610/354008.terrain b/public/terrain/19/858610/354008.terrain new file mode 100644 index 000000000..12d8d71a4 Binary files /dev/null and b/public/terrain/19/858610/354008.terrain differ diff --git a/public/terrain/19/858610/354009.terrain b/public/terrain/19/858610/354009.terrain new file mode 100644 index 000000000..6cac3f51e Binary files /dev/null and b/public/terrain/19/858610/354009.terrain differ diff --git a/public/terrain/19/858610/354010.terrain b/public/terrain/19/858610/354010.terrain new file mode 100644 index 000000000..9d25ef350 Binary files /dev/null and b/public/terrain/19/858610/354010.terrain differ diff --git a/public/terrain/19/858610/354011.terrain b/public/terrain/19/858610/354011.terrain new file mode 100644 index 000000000..ea7e62c48 Binary files /dev/null and b/public/terrain/19/858610/354011.terrain differ diff --git a/public/terrain/19/858610/354012.terrain b/public/terrain/19/858610/354012.terrain new file mode 100644 index 000000000..aa1159abd Binary files /dev/null and b/public/terrain/19/858610/354012.terrain differ diff --git a/public/terrain/19/858610/354013.terrain b/public/terrain/19/858610/354013.terrain new file mode 100644 index 000000000..d07aaa25c Binary files /dev/null and b/public/terrain/19/858610/354013.terrain differ diff --git a/public/terrain/19/858610/354014.terrain b/public/terrain/19/858610/354014.terrain new file mode 100644 index 000000000..dfb2f4e0e Binary files /dev/null and b/public/terrain/19/858610/354014.terrain differ diff --git a/public/terrain/19/858610/354015.terrain b/public/terrain/19/858610/354015.terrain new file mode 100644 index 000000000..d6ed3d5a2 Binary files /dev/null and b/public/terrain/19/858610/354015.terrain differ diff --git a/public/terrain/19/858610/354016.terrain b/public/terrain/19/858610/354016.terrain new file mode 100644 index 000000000..1d91f6694 Binary files /dev/null and b/public/terrain/19/858610/354016.terrain differ diff --git a/public/terrain/19/858610/354017.terrain b/public/terrain/19/858610/354017.terrain new file mode 100644 index 000000000..cb0b1d190 Binary files /dev/null and b/public/terrain/19/858610/354017.terrain differ diff --git a/public/terrain/19/858610/354018.terrain b/public/terrain/19/858610/354018.terrain new file mode 100644 index 000000000..26110daa0 Binary files /dev/null and b/public/terrain/19/858610/354018.terrain differ diff --git a/public/terrain/19/858610/354019.terrain b/public/terrain/19/858610/354019.terrain new file mode 100644 index 000000000..9b56077cb Binary files /dev/null and b/public/terrain/19/858610/354019.terrain differ diff --git a/public/terrain/19/858610/354020.terrain b/public/terrain/19/858610/354020.terrain new file mode 100644 index 000000000..bbc7de7cb Binary files /dev/null and b/public/terrain/19/858610/354020.terrain differ diff --git a/public/terrain/19/858610/354021.terrain b/public/terrain/19/858610/354021.terrain new file mode 100644 index 000000000..8deee519d Binary files /dev/null and b/public/terrain/19/858610/354021.terrain differ diff --git a/public/terrain/19/858610/354022.terrain b/public/terrain/19/858610/354022.terrain new file mode 100644 index 000000000..0cfe0a6f5 Binary files /dev/null and b/public/terrain/19/858610/354022.terrain differ diff --git a/public/terrain/19/858610/354023.terrain b/public/terrain/19/858610/354023.terrain new file mode 100644 index 000000000..15c6e003b Binary files /dev/null and b/public/terrain/19/858610/354023.terrain differ diff --git a/public/terrain/19/858610/354024.terrain b/public/terrain/19/858610/354024.terrain new file mode 100644 index 000000000..597f09d5e Binary files /dev/null and b/public/terrain/19/858610/354024.terrain differ diff --git a/public/terrain/19/858610/354025.terrain b/public/terrain/19/858610/354025.terrain new file mode 100644 index 000000000..27ce7909b Binary files /dev/null and b/public/terrain/19/858610/354025.terrain differ diff --git a/public/terrain/19/858610/354026.terrain b/public/terrain/19/858610/354026.terrain new file mode 100644 index 000000000..43bbde10d Binary files /dev/null and b/public/terrain/19/858610/354026.terrain differ diff --git a/public/terrain/19/858610/354027.terrain b/public/terrain/19/858610/354027.terrain new file mode 100644 index 000000000..7154c057f Binary files /dev/null and b/public/terrain/19/858610/354027.terrain differ diff --git a/public/terrain/19/858610/354028.terrain b/public/terrain/19/858610/354028.terrain new file mode 100644 index 000000000..496df9037 Binary files /dev/null and b/public/terrain/19/858610/354028.terrain differ diff --git a/public/terrain/19/858610/354029.terrain b/public/terrain/19/858610/354029.terrain new file mode 100644 index 000000000..4f571d5a8 Binary files /dev/null and b/public/terrain/19/858610/354029.terrain differ diff --git a/public/terrain/19/858610/354030.terrain b/public/terrain/19/858610/354030.terrain new file mode 100644 index 000000000..a76af156f Binary files /dev/null and b/public/terrain/19/858610/354030.terrain differ diff --git a/public/terrain/19/858610/354031.terrain b/public/terrain/19/858610/354031.terrain new file mode 100644 index 000000000..43f3abfe2 Binary files /dev/null and b/public/terrain/19/858610/354031.terrain differ diff --git a/public/terrain/19/858610/354032.terrain b/public/terrain/19/858610/354032.terrain new file mode 100644 index 000000000..f08ac402e Binary files /dev/null and b/public/terrain/19/858610/354032.terrain differ diff --git a/public/terrain/19/858610/354033.terrain b/public/terrain/19/858610/354033.terrain new file mode 100644 index 000000000..3de2fd34c Binary files /dev/null and b/public/terrain/19/858610/354033.terrain differ diff --git a/public/terrain/19/858610/354034.terrain b/public/terrain/19/858610/354034.terrain new file mode 100644 index 000000000..44fa3a06d Binary files /dev/null and b/public/terrain/19/858610/354034.terrain differ diff --git a/public/terrain/19/858610/354035.terrain b/public/terrain/19/858610/354035.terrain new file mode 100644 index 000000000..12499dda8 Binary files /dev/null and b/public/terrain/19/858610/354035.terrain differ diff --git a/public/terrain/19/858610/354036.terrain b/public/terrain/19/858610/354036.terrain new file mode 100644 index 000000000..38115a429 Binary files /dev/null and b/public/terrain/19/858610/354036.terrain differ diff --git a/public/terrain/19/858610/354037.terrain b/public/terrain/19/858610/354037.terrain new file mode 100644 index 000000000..3ac620b0d Binary files /dev/null and b/public/terrain/19/858610/354037.terrain differ diff --git a/public/terrain/19/858610/354038.terrain b/public/terrain/19/858610/354038.terrain new file mode 100644 index 000000000..8b1a9cbac Binary files /dev/null and b/public/terrain/19/858610/354038.terrain differ diff --git a/public/terrain/19/858610/354039.terrain b/public/terrain/19/858610/354039.terrain new file mode 100644 index 000000000..e0a49a5dc Binary files /dev/null and b/public/terrain/19/858610/354039.terrain differ diff --git a/public/terrain/19/858610/354040.terrain b/public/terrain/19/858610/354040.terrain new file mode 100644 index 000000000..ae79a7cc5 Binary files /dev/null and b/public/terrain/19/858610/354040.terrain differ diff --git a/public/terrain/19/858610/354041.terrain b/public/terrain/19/858610/354041.terrain new file mode 100644 index 000000000..f4d75b5dd Binary files /dev/null and b/public/terrain/19/858610/354041.terrain differ diff --git a/public/terrain/19/858610/354042.terrain b/public/terrain/19/858610/354042.terrain new file mode 100644 index 000000000..6dd36ce6f Binary files /dev/null and b/public/terrain/19/858610/354042.terrain differ diff --git a/public/terrain/19/858610/354043.terrain b/public/terrain/19/858610/354043.terrain new file mode 100644 index 000000000..17a78f4a6 Binary files /dev/null and b/public/terrain/19/858610/354043.terrain differ diff --git a/public/terrain/19/858610/354044.terrain b/public/terrain/19/858610/354044.terrain new file mode 100644 index 000000000..5d1dcdf22 Binary files /dev/null and b/public/terrain/19/858610/354044.terrain differ diff --git a/public/terrain/19/858610/354045.terrain b/public/terrain/19/858610/354045.terrain new file mode 100644 index 000000000..2bfdacf07 Binary files /dev/null and b/public/terrain/19/858610/354045.terrain differ diff --git a/public/terrain/19/858610/354046.terrain b/public/terrain/19/858610/354046.terrain new file mode 100644 index 000000000..19bcdb825 Binary files /dev/null and b/public/terrain/19/858610/354046.terrain differ diff --git a/public/terrain/19/858610/354047.terrain b/public/terrain/19/858610/354047.terrain new file mode 100644 index 000000000..b3e9fbcac Binary files /dev/null and b/public/terrain/19/858610/354047.terrain differ diff --git a/public/terrain/19/858610/354048.terrain b/public/terrain/19/858610/354048.terrain new file mode 100644 index 000000000..2d83e7a9c Binary files /dev/null and b/public/terrain/19/858610/354048.terrain differ diff --git a/public/terrain/19/858610/354049.terrain b/public/terrain/19/858610/354049.terrain new file mode 100644 index 000000000..512496eb7 Binary files /dev/null and b/public/terrain/19/858610/354049.terrain differ diff --git a/public/terrain/19/858610/354050.terrain b/public/terrain/19/858610/354050.terrain new file mode 100644 index 000000000..58a5aebd8 Binary files /dev/null and b/public/terrain/19/858610/354050.terrain differ diff --git a/public/terrain/19/858610/354051.terrain b/public/terrain/19/858610/354051.terrain new file mode 100644 index 000000000..d7960ea2f Binary files /dev/null and b/public/terrain/19/858610/354051.terrain differ diff --git a/public/terrain/19/858610/354052.terrain b/public/terrain/19/858610/354052.terrain new file mode 100644 index 000000000..399637853 Binary files /dev/null and b/public/terrain/19/858610/354052.terrain differ diff --git a/public/terrain/19/858610/354053.terrain b/public/terrain/19/858610/354053.terrain new file mode 100644 index 000000000..25691066c Binary files /dev/null and b/public/terrain/19/858610/354053.terrain differ diff --git a/public/terrain/19/858610/354054.terrain b/public/terrain/19/858610/354054.terrain new file mode 100644 index 000000000..1b2f90698 Binary files /dev/null and b/public/terrain/19/858610/354054.terrain differ diff --git a/public/terrain/19/858610/354055.terrain b/public/terrain/19/858610/354055.terrain new file mode 100644 index 000000000..65c7fab2f Binary files /dev/null and b/public/terrain/19/858610/354055.terrain differ diff --git a/public/terrain/19/858610/354056.terrain b/public/terrain/19/858610/354056.terrain new file mode 100644 index 000000000..7e4db0e8a Binary files /dev/null and b/public/terrain/19/858610/354056.terrain differ diff --git a/public/terrain/19/858610/354057.terrain b/public/terrain/19/858610/354057.terrain new file mode 100644 index 000000000..e87bab918 Binary files /dev/null and b/public/terrain/19/858610/354057.terrain differ diff --git a/public/terrain/19/858610/354058.terrain b/public/terrain/19/858610/354058.terrain new file mode 100644 index 000000000..d81b3a1a8 Binary files /dev/null and b/public/terrain/19/858610/354058.terrain differ diff --git a/public/terrain/19/858610/354059.terrain b/public/terrain/19/858610/354059.terrain new file mode 100644 index 000000000..64aa43052 Binary files /dev/null and b/public/terrain/19/858610/354059.terrain differ diff --git a/public/terrain/2/6/2.terrain b/public/terrain/2/6/2.terrain new file mode 100644 index 000000000..9c93c580a Binary files /dev/null and b/public/terrain/2/6/2.terrain differ diff --git a/public/terrain/3/13/5.terrain b/public/terrain/3/13/5.terrain new file mode 100644 index 000000000..5c2dbb533 Binary files /dev/null and b/public/terrain/3/13/5.terrain differ diff --git a/public/terrain/4/26/10.terrain b/public/terrain/4/26/10.terrain new file mode 100644 index 000000000..1025eb728 Binary files /dev/null and b/public/terrain/4/26/10.terrain differ diff --git a/public/terrain/5/52/21.terrain b/public/terrain/5/52/21.terrain new file mode 100644 index 000000000..5f8a538ce Binary files /dev/null and b/public/terrain/5/52/21.terrain differ diff --git a/public/terrain/6/104/43.terrain b/public/terrain/6/104/43.terrain new file mode 100644 index 000000000..579789542 Binary files /dev/null and b/public/terrain/6/104/43.terrain differ diff --git a/public/terrain/7/209/86.terrain b/public/terrain/7/209/86.terrain new file mode 100644 index 000000000..9aea80dbc Binary files /dev/null and b/public/terrain/7/209/86.terrain differ diff --git a/public/terrain/8/419/172.terrain b/public/terrain/8/419/172.terrain new file mode 100644 index 000000000..427213e7f Binary files /dev/null and b/public/terrain/8/419/172.terrain differ diff --git a/public/terrain/9/838/345.terrain b/public/terrain/9/838/345.terrain new file mode 100644 index 000000000..4e6905378 Binary files /dev/null and b/public/terrain/9/838/345.terrain differ diff --git a/public/terrain/layer.json b/public/terrain/layer.json new file mode 100644 index 000000000..a02b1fd76 --- /dev/null +++ b/public/terrain/layer.json @@ -0,0 +1,186 @@ +{ + "tilejson": "2.1.0", + "name": "name", + "description": "", + "version": "1.1.0", + "format": "quantized-mesh-1.0", + "attribution": "", + "schema": "tms", + "extensions": [ + "octvertexnormals" + ], + "tiles": [ + "{z}/{x}/{y}.terrain?v={version}" + ], + "projection": "EPSG:4326", + "bounds": { + "west": 569599.5, + "south": 3480930.5, + "east": 574102.5, + "north": 3492923.5 + }, + "available": [ + [ + { + "startX": 0, + "startY": 0, + "endX": 1, + "endY": 0 + } + ], + [ + { + "startX": 3, + "startY": 1, + "endX": 3, + "endY": 1 + } + ], + [ + { + "startX": 6, + "startY": 2, + "endX": 6, + "endY": 2 + } + ], + [ + { + "startX": 13, + "startY": 5, + "endX": 13, + "endY": 5 + } + ], + [ + { + "startX": 26, + "startY": 10, + "endX": 26, + "endY": 10 + } + ], + [ + { + "startX": 52, + "startY": 21, + "endX": 52, + "endY": 21 + } + ], + [ + { + "startX": 104, + "startY": 43, + "endX": 104, + "endY": 43 + } + ], + [ + { + "startX": 209, + "startY": 86, + "endX": 209, + "endY": 86 + } + ], + [ + { + "startX": 419, + "startY": 172, + "endX": 419, + "endY": 172 + } + ], + [ + { + "startX": 838, + "startY": 345, + "endX": 838, + "endY": 345 + } + ], + [ + { + "startX": 1676, + "startY": 690, + "endX": 1676, + "endY": 691 + } + ], + [ + { + "startX": 3353, + "startY": 1381, + "endX": 3353, + "endY": 1383 + } + ], + [ + { + "startX": 6706, + "startY": 2763, + "endX": 6707, + "endY": 2766 + } + ], + [ + { + "startX": 13413, + "startY": 5527, + "endX": 13415, + "endY": 5532 + } + ], + [ + { + "startX": 26827, + "startY": 11054, + "endX": 26831, + "endY": 11064 + } + ], + [ + { + "startX": 53654, + "startY": 22108, + "endX": 53663, + "endY": 22128 + } + ], + [ + { + "startX": 107308, + "startY": 44217, + "endX": 107326, + "endY": 44257 + } + ], + [ + { + "startX": 214617, + "startY": 88435, + "endX": 214652, + "endY": 88514 + } + ], + [ + { + "startX": 429234, + "startY": 176871, + "endX": 429305, + "endY": 177029 + } + ], + [ + { + "startX": 858469, + "startY": 353743, + "endX": 858610, + "endY": 354059 + } + ] + ], + "minzoom": 0, + "maxzoom": 20 +} \ No newline at end of file diff --git a/src/config.ts b/src/config.ts index 3de9de991..18e2ebfff 100644 --- a/src/config.ts +++ b/src/config.ts @@ -8,8 +8,11 @@ const extent: [number, number, number, number] = [ 110.25175167632203, 29.934801589268638, 111.3498069381167, - 30.416712241937642 + 30.416712241937642 ]; + +// 114.746,31.479,0 +// 114.776,31.509,0 const ADCD6 = address === "jianshi" ? "422822" : "420529"; const ADCD12 = ADCD6 + '000000'; const ADCD = ADCD6 + '000000000'; diff --git a/src/views/Home/MapCtrl/Map3D/Map3D.js b/src/views/Home/MapCtrl/Map3D/Map3D.js index 299ba0d35..d224da02a 100644 --- a/src/views/Home/MapCtrl/Map3D/Map3D.js +++ b/src/views/Home/MapCtrl/Map3D/Map3D.js @@ -1,6 +1,7 @@ import config from '../config'; import LayerMgr3D from './layermgr3d'; import BaseMap from '../basemap'; +import Demo3D from './demo' import { ToolManager } from './ToolManager3D'; const { Cesium } = window; @@ -38,6 +39,7 @@ export default class Map3D extends BaseMap { this._map = null; // openlayers map obj this.layerMgr = null; this.toolMgr = null; + this.demo = null; // @ts-ignore const open = XMLHttpRequest.prototype.open; @@ -92,35 +94,27 @@ export default class Map3D extends BaseMap { });*/ const viewer = new Cesium.Viewer(this.divid, { - terrainProvider: new Cesium.CesiumTerrainProvider({ - //url: 'http://res3dstatic5.cloudowr.cn/wufeng/terrain', - url:"/shzh/mapres/terrain", - requestVertexNormals: true, - }), - imageryProvider: new Cesium.UrlTemplateImageryProvider({ - //url: `http://res3dstatic{s}.cloudowr.cn/${localStorage.getItem('address')}/dom2/{z}/{x}/{y}.png`, - url: baseUrl + '/DataServer?T=img_w&x={x}&y={y}&l={z}&tk='+tiandiKey, - subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'], - //minimumLevel:10, - maximumLevel: 17, - }), - scene3DOnly: true, - animation: false, - baseLayerPicker: false, - geocoder: false, - sceneModePicker: false, - fullscreenButton: false, - homeButton: false, - timeline: false, - navigationHelpButton: false, - shadows: false, - infoBox: false, - skyAtmosphere: false,//去掉球边缘 + // terrain: Cesium.Terrain.fromWorldTerrain({ + // requestVertexNormals: true, + // }), + + scene3DOnly: true,//用于强制场景以 3D 模式运行,禁止切换至 2D 或 Columbus 视图 + animation: false,//获取动画小部件。 + baseLayerPicker: false,//获取BaseLayerPicker。 + geocoder: false,//获取地理编码器 + sceneModePicker: false,//Gets the SceneModePicker. + fullscreenButton: false, + homeButton: false, + timeline: false, + navigationHelpButton: false,//导航帮助按钮 + shadows: false,//确定阴影是否由光源投射。 + infoBox: false, + skyAtmosphere: false,//去掉球边缘 }); //设置地表透明 let globe = viewer.scene.globe; - globe.depthTestAgainstTerrain = false; + globe.depthTestAgainstTerrain = false;//关闭深度测试 //viewer.scene.skyAtmosphere.show = false; //关闭大气层阴影 viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100; viewer.scene.screenSpaceCameraController.maximumZoomDistance = 200000; @@ -156,14 +150,14 @@ export default class Map3D extends BaseMap { //加载倾斜摄影 - var tileset = new Cesium.Cesium3DTileset({ - //url: 'http://res3dstatic7.cloudowr.cn/wufeng/3dtile/tileset.json', - url: localStorage.getItem('address')==="wufeng"? - 'service2/kshdata/1221wtz-3dtile-all/tileset.json': - "service2/kshdata/GRH/tileset.json", - maximumScreenSpaceError: 32, - maximumMemoryUsage: 100, //不可设置太高,目标机子空闲内存值以内,防止浏览器过于卡 - }); + // var tileset = new Cesium.Cesium3DTileset({ + // //url: 'http://res3dstatic7.cloudowr.cn/wufeng/3dtile/tileset.json', + // url: localStorage.getItem('address')==="wufeng"? + // 'service2/kshdata/1221wtz-3dtile-all/tileset.json': + // "service2/kshdata/GRH/tileset.json", + // maximumScreenSpaceError: 32, + // maximumMemoryUsage: 100, //不可设置太高,目标机子空闲内存值以内,防止浏览器过于卡 + // }); // fetch(`${process.env.PUBLIC_URL}/data/geojson/${localStorage.getItem('address')}/boua.geojson`) // .then(resp => resp.json()) @@ -219,16 +213,16 @@ export default class Map3D extends BaseMap { clampToGround: true, }));*/ - tileset.readyPromise.then(function () { - viewer.zoomTo( - tileset, - new Cesium.HeadingPitchRange( - 0.0, - -0.5, - tileset.boundingSphere.radius * 10 - ) - ); - }); + // tileset.readyPromise.then(function () { + // viewer.zoomTo( + // tileset, + // new Cesium.HeadingPitchRange( + // 0.0, + // -0.5, + // tileset.boundingSphere.radius * 10 + // ) + // ); + // }); //监听地图移动完成事件 viewer.camera.moveEnd.addEventListener(() => { @@ -241,6 +235,19 @@ export default class Map3D extends BaseMap { }); this.layerMgr = new LayerMgr3D(viewer); + this.demo = new Demo3D() + + // this.demo.getQxsy(viewer) //倾斜摄影 + this.demo.getDem(viewer) //地形图 + this.demo.getWxyx(viewer) //卫星影像 + // this.demo.getGltf(viewer) //模型 + // this.demo.getWater(viewer)//简单淹没分析 + // this.demo.getWater2(viewer) + // this.demo.getRlt2(viewer) + // this.demo.getRlt3(viewer) //热力图 + // this.demo.getCzml(viewer) //czml模型 + + viewer.scene.postRender.addEventListener(() => { this.dispatch.runtime.tickViewChanged(); this.layerMgr.frameUpdate(); @@ -250,7 +257,8 @@ export default class Map3D extends BaseMap { this.toolMgr.init(); viewer.camera.setView({ - destination: Cesium.Cartesian3.fromDegrees(...config.homeCenter3D), + // destination: Cesium.Cartesian3.fromDegrees(...config.homeCenter3D), + destination: Cesium.Cartesian3.fromDegrees(114.763746000,31.482518000,1000), orientation: { heading: Cesium.Math.toRadians(0), pitch: Cesium.Math.toRadians(-35.0), @@ -287,7 +295,7 @@ export default class Map3D extends BaseMap { coordinateToPixel(lgtd, lttd, elev) { const pt = Cesium.Cartesian3.fromDegrees(lgtd, lttd, elev); - const result = Cesium.SceneTransforms.wgs84ToWindowCoordinates( + const result = Cesium.SceneTransforms.worldToWindowCoordinates( this._map.scene, pt); if (!result) { return null diff --git a/src/views/Home/MapCtrl/Map3D/cs.js b/src/views/Home/MapCtrl/Map3D/cs.js new file mode 100644 index 000000000..f31cf09b0 --- /dev/null +++ b/src/views/Home/MapCtrl/Map3D/cs.js @@ -0,0 +1,144 @@ +import config from '../config'; +import LayerMgr3D from './layermgr3d'; +import BaseMap from '../basemap'; +import Demo3D from './demo' +import { ToolManager } from './ToolManager3D'; + +const { Cesium } = window; + +function __prepare_ces(dispatch) { + Cesium.CesiumWidget.prototype.showErrorPanel = function (title) { + dispatch && dispatch.map.setMode('2d'); + if (title && title.indexOf('constructing') >= 0) { + alert('无法初始化三维场景,如果一直出现此问题,请尝试下载最新的chrome浏览器'); + } else { + alert('三维场景渲染出现问题'); + } + }; +} + +/*根据camera高度近似计算当前层级*/ +const heightToZoom = ( height) => { + var A = 40487.57; + var B = 0.00007096758; + var c = 91610.74; + var D = -40467.74; + return Math.round(D+(A-D)/(1+Math.pow( height/c,B)) ); +} + + +/** + * OL 封装 + */ +export default class Map3D extends BaseMap { + constructor({ divid, dispatch }) { + super(); + + this.dispatch = dispatch; + this.divid = divid; // div element id + this._map = null; // openlayers map obj + this.layerMgr = null; + this.toolMgr = null; + this.demo = null; + + // @ts-ignore + const open = XMLHttpRequest.prototype.open; + // @ts-ignore + XMLHttpRequest.prototype.open = function (method, url, ...rest) { + if (url.startsWith('http://res3dstatic7')) { + url = url.replaceAll('+', '%2B'); + } + return open.call(this, method, url, ...rest); + }; + } + + /** + * 初始化地图、图层 + */ + async init() { + __prepare_ces(this.dispatch); + + // const tiandiKey = "efc861f25f96dc6e5f884f0403ebfefd"; //天地图key,官网申请 + // const baseUrl = "https://{s}.tianditu.gov.cn";//'https://t{0-7}.tianditu.gov.cn'; + + const viewer = new Cesium.Viewer(this.divid, { + // terrain: Cesium.Terrain.fromWorldTerrain({ + // requestVertexNormals: true, + // }), + terrainProvider: await Cesium.CesiumTerrainProvider.fromUrl("/shzh/mapres/terrain",{ + requestVertexNormals: true + }), + }); + + + + + + + viewer.scene.screenSpaceCameraController.tiltEventTypes = [ + Cesium.CameraEventType.RIGHT_DRAG, Cesium.CameraEventType.PINCH, + { eventType: Cesium.CameraEventType.LEFT_DRAG, modifier: Cesium.KeyboardEventModifier.CTRL }, + { eventType: Cesium.CameraEventType.RIGHT_DRAG, modifier: Cesium.KeyboardEventModifier.CTRL } + ]; + viewer.scene.screenSpaceCameraController.zoomEventTypes = [ + Cesium.CameraEventType.MIDDLE_DRAG, Cesium.CameraEventType.WHEEL, Cesium.CameraEventType.PINCH + ]; + viewer.camera.setView({ + destination: Cesium.Cartesian3.fromDegrees(114.763746000,31.482518000,1000), + orientation: { + // heading: Cesium.Math.toRadians(0), + pitch: Cesium.Math.toRadians(-35.0), + roll: 0.0 + } + }); + } + + coordinateToPixel(lgtd, lttd, elev) { + // const pt = Cesium.Cartesian3.fromDegrees(lgtd, lttd, elev); + // const result = Cesium.SceneTransforms. + // // wgs84ToWindowCoordinates + // worldToWindowCoordinates + // ( + // this._map.scene, pt); + // if (!result) { + // return null + // } + // return [result.x, result.y, pt.x, pt.y, pt.z]; + } + + /** + * 组件卸载时,需要销毁map对象 + */ + destroy() { + // console.log('##############destroy##############'); + // if (!this.layerMgr) { + // return; + // } + // this.layerMgr.destroy(); + // if (this._map) { + // this._map.destroy(); + // this._map = null; + // } + } + + /** + * get layer obj + */ + getLayer(name) { + // return this.layerMgr.getLayer(name); + } + + zoomTo(cameraTarget) { + // if (cameraTarget.center) { + // this._map.camera.flyToBoundingSphere(new Cesium.BoundingSphere( + // Cesium.Cartesian3.fromDegrees(cameraTarget.center[0], cameraTarget.center[1], cameraTarget.center[2] || 0), + // 800) + // ); + // } else if (cameraTarget.bound) { + // const b = cameraTarget.bound; + // const p1 = Cesium.Cartesian3.fromDegrees(...b[0]); + // const p2 = Cesium.Cartesian3.fromDegrees(...b[1]); + // this._map.camera.flyToBoundingSphere(Cesium.BoundingSphere.fromPoints([p1, p2])); + // } + } +} diff --git a/src/views/Home/MapCtrl/Map3D/demo.js b/src/views/Home/MapCtrl/Map3D/demo.js index 55aa033e1..e3981da33 100644 --- a/src/views/Home/MapCtrl/Map3D/demo.js +++ b/src/views/Home/MapCtrl/Map3D/demo.js @@ -1,26 +1,37 @@ +const { Cesium } = window; + + export default class LayerMgr { - constructor({ viewer }) { - this.viewer = viewer + constructor() { + // this.viewer = viewer } //加载模型 - getGltf() { - const model = this.viewer.scene.primitives.add(Cesium.Model.fromGltf({ - url: `${process.env.PUBLIC_URL}/models/dam/scene.gltf`, - modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame( - Cesium.Cartesian3.fromDegrees(114.97, 31.48) // 模型位置 - ), - scale: 100 - })); + getGltf(viewer) { + viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(114.97, 31.47,250), + model: { + uri: `${process.env.PUBLIC_URL}/models/dam/scene.gltf` , + scale: 10, + runAnimations: false + }, + }); } - getWater() { - let initialHeight = 130 + getWater(viewer) { + const positions = [ + 114.96554141845703, 31.487516479492188, + 114.993221862792957, 31.487516479492188, + 114.993221862792957, 31.4622646484375, + 114.96554141845703, 31.4622646484375, + ] + let initialHeight = 120 const geometry = new Cesium.PolygonGeometry({ polygonHierarchy: new Cesium.PolygonHierarchy( Cesium.Cartesian3.fromDegreesArray(positions) ), - extrudedHeight: initialHeight + extrudedHeight: initialHeight, + perPositionHeight:false, }); const waterPrimitive = new Cesium.Primitive({ geometryInstances: new Cesium.GeometryInstance({ geometry }), @@ -43,7 +54,7 @@ export default class LayerMgr { show: true, // releaseGeometryInstances: false }); - this.viewer.scene.primitives.add(waterPrimitive); + viewer.scene.primitives.add(waterPrimitive); // 自动抬升 let height = 0; setInterval(() => { @@ -63,16 +74,49 @@ export default class LayerMgr { }, 100); } - getQxsy() { - var tileset = new Cesium.Cesium3DTileset({ - // url: 'http://res3dstatic7.cloudowr.cn/wufeng/3dtile/tileset.json', - url: - // 'service2/kshdata/1221wtz-3dtile-all/tileset.json', + getWater2(viewer) { + // const waterSurface = viewer.entities.add({ + // rectangle: { + // coordinates: Cesium.Rectangle.fromDegrees(114.9, 31.4, 115.9, 32.4), + // material: new Cesium.WaterMaterial({ + // normalMapUrl: `${process.env.PUBLIC_URL}/models/waternormals.jpg`, // 水波纹法线贴图 + // frequency: 1000.0, // 波纹密度 + // animationSpeed: 0.05, // 波动速度 + // amplitude: 5.0 // 波高 + // }), + // height: 130.0 // 水面高度(可动态调整) + // } + // }); + + } + + async getQxsy(viewer) { + try { + let tileset = await Cesium.Cesium3DTileset.fromUrl( 'http://res3d.oss-cn-shenzhen.aliyuncs.com/macheng/xiaoyutan/Scene/3DTILE.json', - // "service2/kshdata/GRH/tileset.json", - maximumScreenSpaceError: 1, //精细程度越小越精细 - maximumMemoryUsage: 1000, //不可设置太高,目标机子空闲内存值以内,防止浏览器过于卡 - }); + { + maximumScreenSpaceError: 1, //精细程度越小越精细 + maximumMemoryUsage: 1000, //不可设置太高,目标机子空闲内存值以内,防止浏览器过于卡 + } + + ); + viewer.scene.primitives.add(tileset); + + + const offsetHeight = 15 + const boundingSphere = tileset.boundingSphere + const cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center) + const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0) + const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, offsetHeight) + const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()) + tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation) + viewer.flyTo(tileset) + } catch (error) { + console.error(`Error creating tileset: ${error}`); + } + + + // fetch(`${process.env.PUBLIC_URL}/data/geojson/macheng/boua.geojson`) // .then(resp => resp.json()) // .then(data => { @@ -117,33 +161,580 @@ export default class LayerMgr { // }); - //添加到球体上 - viewer.scene.primitives.add(tileset); - tileset.readyPromise.then(function () { - viewer.zoomTo( - tileset, - new Cesium.HeadingPitchRange( - 0, - -0.7, - 2500 - // tileset.boundingSphere.radius * 10 - ) - ); - }); + // tileset.readyPromise.then(function () { + // viewer.zoomTo( + // tileset, + // new Cesium.HeadingPitchRange( + // 0, + // -0.7, + // 2500 + // // tileset.boundingSphere.radius * 10 + // ) + // ); + // }); //设置倾斜摄影Z轴高度 - tileset.readyPromise.then(function (tileset) { - const offsetHeight = 15 - const boundingSphere = tileset.boundingSphere - const cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center) - const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0) - const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, offsetHeight) - const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()) - tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation) - // viewer.flyTo(tileset) - }) + // tileset.readyPromise.then(function (tileset) { + // const offsetHeight = 15 + // const boundingSphere = tileset.boundingSphere + // const cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center) + // const surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0) + // const offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, offsetHeight) + // const translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()) + // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation) + // // viewer.flyTo(tileset) + // }) } + async getDem(viewer) { + const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl( + // "/shzh/mapres/terrain", + `${process.env.PUBLIC_URL}/terrain`, + // "http://192.168.66.51:42225/distribution/terrain/5vjnbauc3frn", + { + requestVertexNormals: true + }) + viewer.terrainProvider = terrainProvider + } + + async getWxyx(viewer) { + const tiandiKey = "efc861f25f96dc6e5f884f0403ebfefd"; //天地图key,官网申请 + const baseUrl = "https://{s}.tianditu.gov.cn";//'https://t{0-7}.tianditu.gov.cn'; + + const imageryProvider = new Cesium.UrlTemplateImageryProvider({ + //url: `http://res3dstatic{s}.cloudowr.cn/${localStorage.getItem('address')}/dom2/{z}/{x}/{y}.png`, + url: baseUrl + '/DataServer?T=img_w&x={x}&y={y}&l={z}&tk='+tiandiKey, + subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'], + //minimumLevel:10, + maximumLevel: 17, + }) + + viewer.imageryLayers.addImageryProvider(imageryProvider); + + } + + getRlt(viewer) { + function getColorRamp() { + const ramp = document.createElement("canvas"); + ramp.width = 100; + ramp.height = 1; + const ctx = ramp.getContext("2d"); + + let values; + values = [0.0, 0.045, 0.1, 0.15, 0.37, 0.54, 1.0]; + + const grd = ctx.createLinearGradient(0, 0, 100, 0); + grd.addColorStop(values[0], "#000000"); //black + grd.addColorStop(values[1], "#2747E0"); //blue + grd.addColorStop(values[2], "#D33B7D"); //pink + grd.addColorStop(values[3], "#D33038"); //red + grd.addColorStop(values[4], "#FF9742"); //orange + grd.addColorStop(values[5], "#ffd700"); //yellow + grd.addColorStop(values[6], "#ffffff"); //white + + ctx.fillStyle = grd; + ctx.fillRect(0, 0, 100, 1); + + return ramp; + } + const minHeight = -414.0; // approximate dead sea elevation + const maxHeight = 8777.0; // approximate everest elevation + let shadingUniforms = {}; + + + function updateMaterial() { + // const globe = viewer.scene.globe; + // let material; + // material = Cesium.Material.fromType("ElevationRamp"); + // shadingUniforms = material.uniforms; + // shadingUniforms.minimumHeight = minHeight; + // shadingUniforms.maximumHeight = maxHeight; + // shadingUniforms.image = getColorRamp(); + // globe.material = material; + + + const material = Cesium.Material.fromType("ElevationRamp") + material.uniforms.image = getColorRamp() + viewer.scene.globe.material = material + } + + updateMaterial(); + } + + getRlt2(viewer) { + const gridData = { + minLon: 110.0, // 最小经度 + minLat: 30.0, // 最小纬度 + deltaLon: 0.1, // 经度间隔 + deltaLat: 0.1, // 纬度间隔 + rows: 10, // 行数(纬度方向) + cols: 10, // 列数(经度方向) + heights: [ // 高度值数组(行优先存储) + /* 10x10 网格高度值 */ + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + 100, 120, 140, 140,135,130,120,110,100,90, + // ... 共 100 个值 + ] + }; + // 2. 创建颜色映射函数(根据高度返回颜色) + function heightToColor(height) { + // 示例:根据高度值返回渐变色 + const minH = 100, maxH = 500; + const ratio = Math.min(1, Math.max(0, (height - minH) / (maxH - minH))); + + // 蓝 -> 绿 -> 红 渐变 + const r = Math.floor(255 * ratio); + const g = Math.floor(255 * (1 - ratio)); + const b = 128; + + return new Cesium.Color(r / 255, g / 255, b / 255, 1.0); + } + // 3. 生成网格几何数据 + function createGridGeometry(grid) { + const positions = []; + const colors = []; + const indices = []; + let vertexIndex = 0; + + for (let row = 0; row < grid.rows; row++) { + for (let col = 0; col < grid.cols; col++) { + // 计算当前网格点经纬度 + const lon = grid.minLon + col * grid.deltaLon; + const lat = grid.minLat + row * grid.deltaLat; + const height = grid.heights[row * grid.cols + col]; + + // 将经纬度转换为笛卡尔坐标 + const position = Cesium.Cartesian3.fromDegrees(lon, lat, height); + positions.push(position); + + // 计算颜色 + const color = heightToColor(height); + colors.push(color.red, color.green, color.blue, color.alpha); + + // 生成三角形索引(跳过边界) + if (row < grid.rows - 1 && col < grid.cols - 1) { + const topLeft = vertexIndex; + const topRight = topLeft + 1; + const bottomLeft = topLeft + grid.cols; + const bottomRight = bottomLeft + 1; + + // 两个三角形组成一个网格单元 + indices.push(topLeft, bottomLeft, topRight); + indices.push(topRight, bottomLeft, bottomRight); + } + + vertexIndex++; + } + } + + return { positions, colors, indices }; + } + + // 4. 创建Primitive并添加到场景 + function createGridPrimitive(geometry) { + const appearance = new Cesium.PerInstanceColorAppearance({ + flat: true, // 平面着色 + renderState: { + depthTest: { enabled: true } // 启用深度测试 + } + }); + + const primitive = new Cesium.Primitive({ + geometryInstances: new Cesium.GeometryInstance({ + geometry: new Cesium.PolygonGeometry({ + polygonHierarchy: new Cesium.PolygonHierarchy(geometry.positions), + vertexFormat: appearance.vertexFormat + }), + attributes: { + color: new Cesium.ColorGeometryInstanceAttribute.fromColor( + new Cesium.Color(1.0, 1.0, 1.0, 1.0) + ) + } + }), + appearance: appearance + }); + + viewer.scene.primitives.add(primitive); + return primitive; + } + + const geometryData = createGridGeometry(gridData); + + const gridPrimitive = createGridPrimitive(geometryData); + } + async getRlt3(viewer) { + // const gridData = { + // minLon: 110.0, // 最小经度 + // minLat: 30.0, // 最小纬度 + // deltaLon: 0.1, // 经度间隔 + // deltaLat: 0.1, // 纬度间隔 + + // maxLon: 110.0 + 10 * 0.1, // minLon + cols * deltaLon + // maxLat: 30.0 + 10 * 0.1, // minLat + rows * deltaLat + + // rows: 10, // 行数(纬度方向) + // cols: 10, // 列数(经度方向) + // // heights: [ // 高度值数组(行优先存储) + // // /* 10x10 网格高度值 */ + // // 100, 120, 140, ..., + // // 110, 130, 150, ..., + // // // ... 共 100 个值 + // // ] + // }; + // // 2. 创建颜色映射函数(根据高度返回颜色) + // function heightToColor(height) { + // // 示例:根据高度值返回渐变色 + // const minH = 1, maxH = 300; + // const ratio = Math.min(1, Math.max(0, (height - minH) / (maxH - minH))); + // // 蓝 -> 绿 -> 红 渐变 + // const r = Math.floor(255 * ratio); + // const g = Math.floor(255 * (1 - ratio)); + // const b = 128; + // // return new Cesium.Color(r / 255, g / 255, b / 255, 1.0); + // return [r,g,b,100] + // } + const gridData = { + minLon: 110.0, // 最小经度 + minLat: 30.0, // 最小纬度 + deltaLon: 0.01, // 经度间隔 + deltaLat: 0.01, // 纬度间隔 + maxLon: 110.0 + 100 * 0.01, // minLon + cols * deltaLon + maxLat: 30.0 + 100 * 0.01, // minLat + rows * deltaLat + rows: 100, // 行数(纬度方向) + cols: 100, // 列数(经度方向) + cccc:[ + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,200,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + [10,10,10,10,10,10,10,10,10,10], + ] + }; + // 2. 创建颜色映射函数(根据高度返回颜色) + function heightToColor(height) { + // 示例:根据高度值返回渐变色 + const minH = 1, maxH = 300; + const ratio = Math.min(1, Math.max(0, (height - minH) / (maxH - minH))); + // 蓝 -> 绿 -> 红 渐变 + const r = Math.floor(255 * ratio); + const g = Math.floor(255 * (1 - ratio)); + const b = 128; + // return new Cesium.Color(r / 255, g / 255, b / 255, 1.0); + return [r,g,b,100] + } + + for (let index = 0; index<10; index++){ + const canvas = document.createElement('canvas'); + canvas.width = gridData.cols; // 每个网格一个像素 + canvas.height = gridData.rows; + const context = canvas.getContext('2d'); + for (let row = 0; row < gridData.rows; row++) { + for (let col = 0; col < gridData.cols; col++) { + const color = heightToColor(col*index*0.5); + // const color = heightToColor(gridData.cccc[row][col]); + const style = `rgba(${color[0]}, ${color[1]}, ${color[2]}, ${50})`; + context.fillStyle = style; + context.fillRect(col, row, 1, 1); // 每个像素一个网格点 + } + } + const imageUrl = canvas.toDataURL('image/png'); + // 5. 创建矩形范围(覆盖整个网格) + const rectangle = Cesium.Rectangle.fromDegrees( + gridData.minLon, gridData.minLat, + gridData.maxLon, gridData.maxLat + ); + // 6. 创建SingleTileImageryProvider + const imageryProvider = new Cesium.SingleTileImageryProvider({ + url: imageUrl, + rectangle: rectangle + }); + // 7. 添加到影像层集合 + viewer.imageryLayers.addImageryProvider(imageryProvider); + + + await this.sleep(1000) + } + + + + + + + + } + + async sleep(time) { + await new Promise(resolve => setTimeout(resolve, time)); + } + + + getCzmlData(){ + const gridData = { + minLon: 110.0, // 最小经度 + minLat: 30.0, // 最小纬度 + deltaLon: 0.1, // 经度间隔 + deltaLat: 0.1, // 纬度间隔 + rows: 10, // 行数(纬度方向) + cols: 10, // 列数(经度方向) + // heights: [ // 高度值数组(行优先存储) + // /* 10x10 网格高度值 */ + // 100, 120, 140, ..., + // 110, 130, 150, ..., + // // ... 共 100 个值 + // ] + }; + + // 2. 创建颜色映射函数(根据高度返回颜色) + function heightToColor(height) { + // 示例:根据高度值返回渐变色 + const minH = 1, maxH = 300; + const ratio = Math.min(1, Math.max(0, (height - minH) / (maxH - minH))); + // 蓝 -> 绿 -> 红 渐变 + const r = Math.floor(255 * ratio); + const g = Math.floor(255 * (1 - ratio)); + const b = 128; + // return new Cesium.Color(r / 255, g / 255, b / 255, 1.0); + return [r,g,b,100] + } + + // 3. 生成网格几何数据1帧 + function createGridGeometry(grid,ccc) { + const positions = []; + const colors = []; + const indices = []; + let vertexIndex = 0; + + for (let row = 0; row < grid.rows; row++) { + for (let col = 0; col < grid.cols; col++) { + // 计算当前网格点经纬度 + const lon = grid.minLon + col * grid.deltaLon; + const lat = grid.minLat + row * grid.deltaLat; + const height = row+col+2; + const color = heightToColor(height*ccc*2); + // const color = heightToColor(height*ccc*0.1); + positions.push([ + [lon-grid.deltaLon/2,lat,ccc===row?4000:3000],//左上 + [lon+grid.deltaLon/2,lat,ccc===row?4000:3000],//右上 + [lon,lat+grid.deltaLat,(ccc===(row+1))?4000:3000],//左下 + color,//颜色 + ]) + positions.push([ + [lon+grid.deltaLon,lat+grid.deltaLat,(ccc===(row+1))?4000:3000],//左下 + [lon,lat+grid.deltaLat,(ccc===(row+1))?4000:3000],//右下 + [lon+grid.deltaLon/2,lat,ccc===row?4000:3000],//右上 + color,//颜色 + ]) + + + + + // 将经纬度转换为笛卡尔坐标 + // const position = Cesium.Cartesian3.fromDegrees(lon, lat, height); + + // 计算颜色 + // const color = heightToColor(height); + colors.push(color.red, color.green, color.blue, color.alpha); + // positions.push([lon,lat,height,[color.red,color.green,color.blue,color.alpha]]); + + // 生成三角形索引(跳过边界) + if (row < grid.rows - 1 && col < grid.cols - 1) { + const topLeft = vertexIndex; + const topRight = topLeft + 1; + const bottomLeft = topLeft + grid.cols; + const bottomRight = bottomLeft + 1; + + // 两个三角形组成一个网格单元 + indices.push(topLeft, bottomLeft, topRight); + indices.push(topRight, bottomLeft, bottomRight); + } + + vertexIndex++; + } + } + + return positions; + } + + const alllist = [] + for (let index = 0; index<10; index++){ + alllist.push(createGridGeometry(gridData,index+1)) + } + + return alllist + } + + + async getCzml(viewer) { + const gridData = { + minLon: 110.0, // 最小经度 + minLat: 30.0, // 最小纬度 + deltaLon: 0.1, // 经度间隔 + deltaLat: 0.1, // 纬度间隔 + rows: 10, // 行数(纬度方向) + cols: 10, // 列数(经度方向) + // heights: [ // 高度值数组(行优先存储) + // /* 10x10 网格高度值 */ + // 100, 120, 140, ..., + // 110, 130, 150, ..., + // // ... 共 100 个值 + // ] + }; + + // 2. 创建颜色映射函数(根据高度返回颜色) + function heightToColor(height) { + // 示例:根据高度值返回渐变色 + const minH = 1, maxH = 300; + const ratio = Math.min(1, Math.max(0, (height - minH) / (maxH - minH))); + // 蓝 -> 绿 -> 红 渐变 + const r = Math.floor(255 * ratio); + const g = Math.floor(255 * (1 - ratio)); + const b = 128; + // return new Cesium.Color(r / 255, g / 255, b / 255, 1.0); + return [r,g,b,100] + } + + // 3. 生成网格几何数据1帧 + function createGridGeometry(grid,ccc) { + const positions = []; + const colors = []; + const indices = []; + let vertexIndex = 0; + + for (let row = 0; row < grid.rows; row++) { + for (let col = 0; col < grid.cols; col++) { + // 计算当前网格点经纬度 + const lon = grid.minLon + col * grid.deltaLon; + const lat = grid.minLat + row * grid.deltaLat; + const height = row+col+2; + const color = heightToColor(height*ccc*2); + // const color = heightToColor(height*ccc*0.1); + positions.push([ + [lon-grid.deltaLon/2,lat,ccc===row?7000:3000],//左上 + [lon+grid.deltaLon/2,lat,ccc===row?7000:3000],//右上 + [lon,lat+grid.deltaLat,(ccc===(row+1))?7000:3000],//左下 + color,//颜色 + ]) + positions.push([ + [lon+grid.deltaLon,lat+grid.deltaLat,(ccc===(row+1))?7000:3000],//左下 + [lon,lat+grid.deltaLat,(ccc===(row+1))?7000:3000],//右下 + [lon+grid.deltaLon/2,lat,ccc===row?7000:3000],//右上 + color,//颜色 + ]) + + + + + // 将经纬度转换为笛卡尔坐标 + // const position = Cesium.Cartesian3.fromDegrees(lon, lat, height); + + // 计算颜色 + // const color = heightToColor(height); + colors.push(color.red, color.green, color.blue, color.alpha); + // positions.push([lon,lat,height,[color.red,color.green,color.blue,color.alpha]]); + + // 生成三角形索引(跳过边界) + if (row < grid.rows - 1 && col < grid.cols - 1) { + const topLeft = vertexIndex; + const topRight = topLeft + 1; + const bottomLeft = topLeft + grid.cols; + const bottomRight = bottomLeft + 1; + + // 两个三角形组成一个网格单元 + indices.push(topLeft, bottomLeft, topRight); + indices.push(topRight, bottomLeft, bottomRight); + } + + vertexIndex++; + } + } + + return positions; + } + + // const geometryData = createGridGeometry(gridData,1); + const alllist = [] + for (let index = 0; index<1; index++){ + alllist.push(createGridGeometry(gridData,index+1)) + } + const czmls = [] + alllist.map((item,index)=>{ + //时间维度 + const czml = [{ + id: "document", + name: "CZML Colors", + version: "1.0", + }] + item.map((item2,index2)=>{ + czml.push({ + id: "rgba"+index2, + name: "Rectangle with outline using RGBA Colors", + polygon: { + positions: { + cartographicDegrees: [ + ...item2[0], + ...item2[1], + ...item2[2], + ], + }, + // material: { + // solidColor: { + // color: { + // rgba: item2[3], + // }, + // }, + // }, + material: { + image: { + image: { + uri: Cesium.buildModuleUrl( + `${process.env.PUBLIC_URL}/models/waternormals.jpg` + ) + }, + // color: { + // rgba: [255, 255, 255, 128], + // }, + }, + }, + extrudedHeight: 0, + perPositionHeight: true, + }, + }) + }) + czmls.push(czml) + }) + + + + // let dataSourcePromise = null; + for (const item of czmls) { + // if(dataSourcePromise){ + // viewer.dataSources.remove(dataSourcePromise); + // dataSourcePromise = null + // } + const dataSourcePromise = await Cesium.CzmlDataSource.load(item) + viewer.dataSources.add(dataSourcePromise); + // setTimeout(() => { + // viewer.dataSources.remove(dataSourcePromise); + // }, 1000); + await this.sleep(1000) + } + } + + + } diff --git a/src/views/Home/MapCtrl/Map3D/layermgr3d.js b/src/views/Home/MapCtrl/Map3D/layermgr3d.js index 910931fec..f8fe6a0a6 100644 --- a/src/views/Home/MapCtrl/Map3D/layermgr3d.js +++ b/src/views/Home/MapCtrl/Map3D/layermgr3d.js @@ -51,40 +51,39 @@ export default class LayerMgr3D extends LayerMgr { */ addAppLayers(dispatch, visible, setting, otherParams) { visible = visible || {}; + // this.addLayer(new BouaLayer3D({ visible: visible[BouaLayer3D.LayerName], setting, dispatch })); - this.addLayer(new BouaLayer3D({ visible: visible[BouaLayer3D.LayerName], setting, dispatch })); + // if(visible[RainLayer3D.LayerName]){ + // this.addLayer(new RainLayer3D({ visible: visible[RainLayer3D.LayerName], setting, dispatch })); + // }else{ + // //this.viewer.imageryLayers.removeAll(); + // this.viewer.entities.removeAll(); + // } + // if(visible[RainLayer3DRadar.LayerName]){ + // this.addLayer(new RainLayer3DRadar({ visible: visible[RainLayer3DRadar.LayerName], setting, dispatch })); + // }else{ + // //this.viewer.imageryLayers.removeAll(); + // this.viewer.entities.removeAll(); + // } + // if(visible[RainLayer3DRh.LayerName]){ + // this.addLayer(new RainLayer3DRh({ visible: visible[RainLayer3DRh.LayerName], setting, dispatch })); + // }else{ + // //this.viewer.imageryLayers.removeAll(); RainLayer3DRh + // this.viewer.entities.removeAll(); + // } - if(visible[RainLayer3D.LayerName]){ - this.addLayer(new RainLayer3D({ visible: visible[RainLayer3D.LayerName], setting, dispatch })); - }else{ - //this.viewer.imageryLayers.removeAll(); - this.viewer.entities.removeAll(); - } - if(visible[RainLayer3DRadar.LayerName]){ - this.addLayer(new RainLayer3DRadar({ visible: visible[RainLayer3DRadar.LayerName], setting, dispatch })); - }else{ - //this.viewer.imageryLayers.removeAll(); - this.viewer.entities.removeAll(); - } - if(visible[RainLayer3DRh.LayerName]){ - this.addLayer(new RainLayer3DRh({ visible: visible[RainLayer3DRh.LayerName], setting, dispatch })); - }else{ - //this.viewer.imageryLayers.removeAll(); RainLayer3DRh - this.viewer.entities.removeAll(); - } - - if(visible[HLLayer3D.LayerName]){ - this.addLayer(new HLLayer3D({ visible: visible[HLLayer3D.LayerName], setting, dispatch })); - }else{ - //this.viewer.imageryLayers.removeAll(); - this.viewer.entities.removeAll(); - } - if(visible[XLYLayer3D.LayerName]){ - this.addLayer(new XLYLayer3D({ visible: visible[XLYLayer3D.LayerName], setting, dispatch })); - }else{ - //this.viewer.imageryLayers.removeAll(); - this.viewer.entities.removeAll(); - } + // if(visible[HLLayer3D.LayerName]){ + // this.addLayer(new HLLayer3D({ visible: visible[HLLayer3D.LayerName], setting, dispatch })); + // }else{ + // //this.viewer.imageryLayers.removeAll(); + // this.viewer.entities.removeAll(); + // } + // if(visible[XLYLayer3D.LayerName]){ + // this.addLayer(new XLYLayer3D({ visible: visible[XLYLayer3D.LayerName], setting, dispatch })); + // }else{ + // //this.viewer.imageryLayers.removeAll(); + // this.viewer.entities.removeAll(); + // } this._addAppMarkerLayers(dispatch, visible, setting, otherParams); } diff --git a/src/views/Home/MapCtrl/index.js b/src/views/Home/MapCtrl/index.js index 299b61791..05dbf5479 100644 --- a/src/views/Home/MapCtrl/index.js +++ b/src/views/Home/MapCtrl/index.js @@ -10,7 +10,7 @@ import { useLocation, useNavigate } from "react-router"; let id_factory_index = 1; -export default function MapCtrl() { +export default function MapCtrl({mode}) { const location = useLocation(); const pathname = location.pathname; const ctrlIdRef = useRef(`cloudowr_mapdiv_${id_factory_index++}`); @@ -67,7 +67,7 @@ export default function MapCtrl() { mapobj.destroy(); mapobjRef.current = null; } - }, [pathname]); + }, [mode,pathname]); useEffect(() => { if (layerVisible["ContourLayer"]) { @@ -94,7 +94,7 @@ export default function MapCtrl() { }, [layerSettingLoop, clickLoopBtn]); return ( - <div id={ctrlIdRef.current} className="map2d3d"> + <div key={mode} id={ctrlIdRef.current} className="map2d3d"> <FeaturePops mapobj={mapobjRef.current} /> <FeatureTip /> {/*<CoordsText />*/}